From 5ccc36740049d0b83a4fe823e1904520c757c87e Mon Sep 17 00:00:00 2001 From: Tutorialindustry Date: Tue, 31 Dec 2013 11:08:41 +0530 Subject: [PATCH 1/7] c5 --- Nodejs-redis-tutorial/app.js | 67 + Nodejs-redis-tutorial/package.json | 12 + .../public/stylesheets/style.css | 8 + Nodejs-redis-tutorial/routes/index.js | 8 + Nodejs-redis-tutorial/routes/user.js | 8 + Nodejs-redis-tutorial/views/index.jade | 28 + Nodejs-redis-tutorial/views/layout.jade | 7 + nodejs-mysql-tutorial/app.js | 51 + nodejs-mysql-tutorial/app.js.bak | 51 + .../node_modules/.bin/express | 15 + .../node_modules/.bin/express.cmd | 5 + nodejs-mysql-tutorial/node_modules/.bin/jade | 15 + .../node_modules/.bin/jade.cmd | 5 + .../node_modules/.bin/nodemon | 15 + .../node_modules/.bin/nodemon.cmd | 5 + .../node_modules/express/.npmignore | 9 + .../node_modules/express/.travis.yml | 4 + .../node_modules/express/History.md | 1147 + .../node_modules/express/LICENSE | 22 + .../node_modules/express/Makefile | 33 + .../node_modules/express/Readme.md | 180 + .../node_modules/express/bin/express | 422 + .../node_modules/express/index.js | 4 + .../node_modules/express/lib/application.js | 536 + .../node_modules/express/lib/express.js | 92 + .../node_modules/express/lib/middleware.js | 33 + .../node_modules/express/lib/request.js | 527 + .../node_modules/express/lib/response.js | 757 + .../node_modules/express/lib/router/index.js | 273 + .../node_modules/express/lib/router/route.js | 72 + .../node_modules/express/lib/utils.js | 313 + .../node_modules/express/lib/view.js | 77 + .../node_modules/buffer-crc32/.npmignore | 1 + .../node_modules/buffer-crc32/.travis.yml | 8 + .../node_modules/buffer-crc32/README.md | 47 + .../node_modules/buffer-crc32/index.js | 88 + .../node_modules/buffer-crc32/package.json | 39 + .../buffer-crc32/tests/crc.test.js | 89 + .../express/node_modules/commander/.npmignore | 4 + .../node_modules/commander/.travis.yml | 4 + .../express/node_modules/commander/History.md | 107 + .../express/node_modules/commander/Makefile | 7 + .../express/node_modules/commander/Readme.md | 262 + .../express/node_modules/commander/index.js | 2 + .../node_modules/commander/lib/commander.js | 1026 + .../node_modules/commander/package.json | 38 + .../express/node_modules/connect/.npmignore | 12 + .../express/node_modules/connect/.travis.yml | 4 + .../express/node_modules/connect/LICENSE | 24 + .../express/node_modules/connect/Readme.md | 133 + .../express/node_modules/connect/index.js | 4 + .../express/node_modules/connect/lib/cache.js | 81 + .../node_modules/connect/lib/connect.js | 92 + .../express/node_modules/connect/lib/index.js | 50 + .../connect/lib/middleware/basicAuth.js | 103 + .../connect/lib/middleware/bodyParser.js | 61 + .../connect/lib/middleware/compress.js | 157 + .../connect/lib/middleware/cookieParser.js | 62 + .../connect/lib/middleware/cookieSession.js | 117 + .../connect/lib/middleware/csrf.js | 73 + .../connect/lib/middleware/directory.js | 229 + .../connect/lib/middleware/errorHandler.js | 86 + .../connect/lib/middleware/favicon.js | 80 + .../connect/lib/middleware/json.js | 86 + .../connect/lib/middleware/limit.js | 78 + .../connect/lib/middleware/logger.js | 339 + .../connect/lib/middleware/methodOverride.js | 40 + .../connect/lib/middleware/multipart.js | 133 + .../connect/lib/middleware/query.js | 46 + .../connect/lib/middleware/responseTime.js | 32 + .../connect/lib/middleware/session.js | 356 + .../connect/lib/middleware/session/cookie.js | 140 + .../connect/lib/middleware/session/memory.js | 129 + .../connect/lib/middleware/session/session.js | 116 + .../connect/lib/middleware/session/store.js | 84 + .../connect/lib/middleware/static.js | 95 + .../connect/lib/middleware/staticCache.js | 231 + .../connect/lib/middleware/timeout.js | 55 + .../connect/lib/middleware/urlencoded.js | 78 + .../connect/lib/middleware/vhost.js | 40 + .../express/node_modules/connect/lib/patch.js | 79 + .../express/node_modules/connect/lib/proto.js | 230 + .../connect/lib/public/directory.html | 81 + .../connect/lib/public/error.html | 14 + .../connect/lib/public/favicon.ico | Bin 0 -> 1406 bytes .../connect/lib/public/icons/page.png | Bin 0 -> 635 bytes .../connect/lib/public/icons/page_add.png | Bin 0 -> 739 bytes .../connect/lib/public/icons/page_attach.png | Bin 0 -> 794 bytes .../connect/lib/public/icons/page_code.png | Bin 0 -> 818 bytes .../connect/lib/public/icons/page_copy.png | Bin 0 -> 663 bytes .../connect/lib/public/icons/page_delete.png | Bin 0 -> 740 bytes .../connect/lib/public/icons/page_edit.png | Bin 0 -> 807 bytes .../connect/lib/public/icons/page_error.png | Bin 0 -> 793 bytes .../connect/lib/public/icons/page_excel.png | Bin 0 -> 817 bytes .../connect/lib/public/icons/page_find.png | Bin 0 -> 879 bytes .../connect/lib/public/icons/page_gear.png | Bin 0 -> 833 bytes .../connect/lib/public/icons/page_go.png | Bin 0 -> 779 bytes .../connect/lib/public/icons/page_green.png | Bin 0 -> 621 bytes .../connect/lib/public/icons/page_key.png | Bin 0 -> 801 bytes .../lib/public/icons/page_lightning.png | Bin 0 -> 839 bytes .../connect/lib/public/icons/page_link.png | Bin 0 -> 830 bytes .../lib/public/icons/page_paintbrush.png | Bin 0 -> 813 bytes .../connect/lib/public/icons/page_paste.png | Bin 0 -> 703 bytes .../connect/lib/public/icons/page_red.png | Bin 0 -> 641 bytes .../connect/lib/public/icons/page_refresh.png | Bin 0 -> 858 bytes .../connect/lib/public/icons/page_save.png | Bin 0 -> 774 bytes .../connect/lib/public/icons/page_white.png | Bin 0 -> 294 bytes .../lib/public/icons/page_white_acrobat.png | Bin 0 -> 591 bytes .../public/icons/page_white_actionscript.png | Bin 0 -> 664 bytes .../lib/public/icons/page_white_add.png | Bin 0 -> 512 bytes .../connect/lib/public/icons/page_white_c.png | Bin 0 -> 587 bytes .../lib/public/icons/page_white_camera.png | Bin 0 -> 656 bytes .../lib/public/icons/page_white_cd.png | Bin 0 -> 666 bytes .../lib/public/icons/page_white_code.png | Bin 0 -> 603 bytes .../lib/public/icons/page_white_code_red.png | Bin 0 -> 587 bytes .../public/icons/page_white_coldfusion.png | Bin 0 -> 592 bytes .../public/icons/page_white_compressed.png | Bin 0 -> 724 bytes .../lib/public/icons/page_white_copy.png | Bin 0 -> 309 bytes .../lib/public/icons/page_white_cplusplus.png | Bin 0 -> 621 bytes .../lib/public/icons/page_white_csharp.png | Bin 0 -> 700 bytes .../lib/public/icons/page_white_cup.png | Bin 0 -> 639 bytes .../lib/public/icons/page_white_database.png | Bin 0 -> 579 bytes .../lib/public/icons/page_white_delete.png | Bin 0 -> 536 bytes .../lib/public/icons/page_white_dvd.png | Bin 0 -> 638 bytes .../lib/public/icons/page_white_edit.png | Bin 0 -> 618 bytes .../lib/public/icons/page_white_error.png | Bin 0 -> 623 bytes .../lib/public/icons/page_white_excel.png | Bin 0 -> 663 bytes .../lib/public/icons/page_white_find.png | Bin 0 -> 676 bytes .../lib/public/icons/page_white_flash.png | Bin 0 -> 582 bytes .../lib/public/icons/page_white_freehand.png | Bin 0 -> 639 bytes .../lib/public/icons/page_white_gear.png | Bin 0 -> 402 bytes .../lib/public/icons/page_white_get.png | Bin 0 -> 516 bytes .../lib/public/icons/page_white_go.png | Bin 0 -> 612 bytes .../connect/lib/public/icons/page_white_h.png | Bin 0 -> 603 bytes .../public/icons/page_white_horizontal.png | Bin 0 -> 296 bytes .../lib/public/icons/page_white_key.png | Bin 0 -> 616 bytes .../lib/public/icons/page_white_lightning.png | Bin 0 -> 669 bytes .../lib/public/icons/page_white_link.png | Bin 0 -> 614 bytes .../lib/public/icons/page_white_magnify.png | Bin 0 -> 554 bytes .../lib/public/icons/page_white_medal.png | Bin 0 -> 706 bytes .../lib/public/icons/page_white_office.png | Bin 0 -> 779 bytes .../lib/public/icons/page_white_paint.png | Bin 0 -> 688 bytes .../public/icons/page_white_paintbrush.png | Bin 0 -> 618 bytes .../lib/public/icons/page_white_paste.png | Bin 0 -> 620 bytes .../lib/public/icons/page_white_php.png | Bin 0 -> 538 bytes .../lib/public/icons/page_white_picture.png | Bin 0 -> 650 bytes .../public/icons/page_white_powerpoint.png | Bin 0 -> 588 bytes .../lib/public/icons/page_white_put.png | Bin 0 -> 523 bytes .../lib/public/icons/page_white_ruby.png | Bin 0 -> 626 bytes .../lib/public/icons/page_white_stack.png | Bin 0 -> 317 bytes .../lib/public/icons/page_white_star.png | Bin 0 -> 565 bytes .../lib/public/icons/page_white_swoosh.png | Bin 0 -> 634 bytes .../lib/public/icons/page_white_text.png | Bin 0 -> 342 bytes .../public/icons/page_white_text_width.png | Bin 0 -> 315 bytes .../lib/public/icons/page_white_tux.png | Bin 0 -> 668 bytes .../lib/public/icons/page_white_vector.png | Bin 0 -> 644 bytes .../public/icons/page_white_visualstudio.png | Bin 0 -> 702 bytes .../lib/public/icons/page_white_width.png | Bin 0 -> 309 bytes .../lib/public/icons/page_white_word.png | Bin 0 -> 651 bytes .../lib/public/icons/page_white_world.png | Bin 0 -> 734 bytes .../lib/public/icons/page_white_wrench.png | Bin 0 -> 613 bytes .../lib/public/icons/page_white_zip.png | Bin 0 -> 386 bytes .../connect/lib/public/icons/page_word.png | Bin 0 -> 777 bytes .../connect/lib/public/icons/page_world.png | Bin 0 -> 903 bytes .../node_modules/connect/lib/public/style.css | 141 + .../express/node_modules/connect/lib/utils.js | 404 + .../connect/node_modules/bytes/.npmignore | 1 + .../connect/node_modules/bytes/History.md | 10 + .../connect/node_modules/bytes/Makefile | 7 + .../connect/node_modules/bytes/Readme.md | 51 + .../connect/node_modules/bytes/component.json | 7 + .../connect/node_modules/bytes/index.js | 39 + .../connect/node_modules/bytes/package.json | 20 + .../connect/node_modules/cookie/.npmignore | 1 + .../connect/node_modules/cookie/.travis.yml | 4 + .../connect/node_modules/cookie/README.md | 44 + .../connect/node_modules/cookie/index.js | 61 + .../connect/node_modules/cookie/package.json | 36 + .../node_modules/cookie/test/mocha.opts | 1 + .../connect/node_modules/cookie/test/parse.js | 28 + .../node_modules/cookie/test/serialize.js | 59 + .../node_modules/formidable/.npmignore | 4 + .../node_modules/formidable/.travis.yml | 5 + .../connect/node_modules/formidable/LICENSE | 7 + .../connect/node_modules/formidable/Readme.md | 419 + .../benchmark/bench-multipart-parser.js | 71 + .../node_modules/formidable/example/json.js | 67 + .../node_modules/formidable/example/post.js | 43 + .../node_modules/formidable/example/upload.js | 48 + .../connect/node_modules/formidable/index.js | 1 + .../node_modules/formidable/lib/file.js | 72 + .../formidable/lib/incoming_form.js | 535 + .../node_modules/formidable/lib/index.js | 3 + .../formidable/lib/json_parser.js | 35 + .../formidable/lib/multipart_parser.js | 324 + .../formidable/lib/octet_parser.js | 20 + .../formidable/lib/querystring_parser.js | 27 + .../node_modules/formidable/package.json | 38 + .../node_modules/formidable/test/common.js | 18 + .../test/fixture/file/beta-sticker-1.png | Bin 0 -> 1660 bytes .../test/fixture/file/binaryfile.tar.gz | Bin 0 -> 301 bytes .../formidable/test/fixture/file/blank.gif | Bin 0 -> 49 bytes .../test/fixture/file/funkyfilename.txt | 1 + .../test/fixture/file/menu_separator.png | Bin 0 -> 931 bytes .../formidable/test/fixture/file/plain.txt | 1 + .../http/special-chars-in-filename/info.md | 3 + .../formidable/test/fixture/js/encoding.js | 24 + .../formidable/test/fixture/js/misc.js | 6 + .../formidable/test/fixture/js/no-filename.js | 9 + .../formidable/test/fixture/js/preamble.js | 9 + .../fixture/js/special-chars-in-filename.js | 21 + .../formidable/test/fixture/js/workarounds.js | 8 + .../formidable/test/fixture/multipart.js | 72 + .../test/integration/test-fixtures.js | 96 + .../formidable/test/integration/test-json.js | 38 + .../test/integration/test-octet-stream.js | 45 + .../formidable/test/legacy/common.js | 24 + .../integration/test-multipart-parser.js | 80 + .../test/legacy/simple/test-file.js | 104 + .../test/legacy/simple/test-incoming-form.js | 756 + .../legacy/simple/test-multipart-parser.js | 50 + .../legacy/simple/test-querystring-parser.js | 45 + .../legacy/system/test-multi-video-upload.js | 71 + .../node_modules/formidable/test/run.js | 1 + .../standalone/test-connection-aborted.js | 27 + .../test-content-transfer-encoding.js | 48 + .../test/standalone/test-issue-46.js | 49 + .../formidable/test/tools/base64.html | 67 + .../formidable/test/unit/test-file.js | 33 + .../test/unit/test-incoming-form.js | 63 + .../node_modules/formidable/tool/record.js | 47 + .../connect/node_modules/pause/.npmignore | 4 + .../connect/node_modules/pause/History.md | 5 + .../connect/node_modules/pause/Makefile | 7 + .../connect/node_modules/pause/Readme.md | 29 + .../connect/node_modules/pause/index.js | 29 + .../connect/node_modules/pause/package.json | 20 + .../connect/node_modules/qs/.gitmodules | 6 + .../connect/node_modules/qs/.npmignore | 7 + .../connect/node_modules/qs/Readme.md | 58 + .../connect/node_modules/qs/index.js | 387 + .../connect/node_modules/qs/package.json | 37 + .../express/node_modules/connect/package.json | 57 + .../express/node_modules/connect/test.js | 40 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 11 + .../node_modules/cookie-signature/Makefile | 7 + .../node_modules/cookie-signature/Readme.md | 42 + .../node_modules/cookie-signature/index.js | 42 + .../cookie-signature/package.json | 24 + .../express/node_modules/cookie/.npmignore | 1 + .../express/node_modules/cookie/.travis.yml | 5 + .../express/node_modules/cookie/LICENSE | 9 + .../express/node_modules/cookie/README.md | 44 + .../express/node_modules/cookie/index.js | 70 + .../express/node_modules/cookie/package.json | 36 + .../node_modules/cookie/test/mocha.opts | 1 + .../express/node_modules/cookie/test/parse.js | 44 + .../node_modules/cookie/test/serialize.js | 64 + .../express/node_modules/debug/.npmignore | 4 + .../express/node_modules/debug/History.md | 62 + .../express/node_modules/debug/Readme.md | 115 + .../express/node_modules/debug/component.json | 9 + .../express/node_modules/debug/debug.js | 124 + .../express/node_modules/debug/example/app.js | 19 + .../node_modules/debug/example/browser.html | 24 + .../node_modules/debug/example/wildcards.js | 10 + .../node_modules/debug/example/worker.js | 22 + .../express/node_modules/debug/index.js | 5 + .../express/node_modules/debug/lib/debug.js | 134 + .../express/node_modules/debug/package.json | 40 + .../express/node_modules/fresh/.npmignore | 1 + .../express/node_modules/fresh/Makefile | 7 + .../express/node_modules/fresh/Readme.md | 32 + .../express/node_modules/fresh/index.js | 49 + .../express/node_modules/fresh/package.json | 20 + .../express/node_modules/methods/index.js | 26 + .../express/node_modules/methods/package.json | 20 + .../express/node_modules/mkdirp/.npmignore | 2 + .../express/node_modules/mkdirp/.travis.yml | 4 + .../express/node_modules/mkdirp/LICENSE | 21 + .../node_modules/mkdirp/README.markdown | 61 + .../node_modules/mkdirp/examples/pow.js | 6 + .../express/node_modules/mkdirp/index.js | 82 + .../express/node_modules/mkdirp/package.json | 36 + .../express/node_modules/mkdirp/test/chmod.js | 38 + .../node_modules/mkdirp/test/clobber.js | 37 + .../node_modules/mkdirp/test/mkdirp.js | 28 + .../express/node_modules/mkdirp/test/perm.js | 32 + .../node_modules/mkdirp/test/perm_sync.js | 39 + .../express/node_modules/mkdirp/test/race.js | 41 + .../express/node_modules/mkdirp/test/rel.js | 32 + .../node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../express/node_modules/mkdirp/test/root.js | 18 + .../express/node_modules/mkdirp/test/sync.js | 32 + .../express/node_modules/mkdirp/test/umask.js | 28 + .../node_modules/mkdirp/test/umask_sync.js | 32 + .../node_modules/range-parser/.npmignore | 1 + .../node_modules/range-parser/History.md | 15 + .../node_modules/range-parser/Makefile | 7 + .../node_modules/range-parser/Readme.md | 28 + .../node_modules/range-parser/index.js | 49 + .../node_modules/range-parser/package.json | 20 + .../express/node_modules/send/.npmignore | 4 + .../express/node_modules/send/History.md | 25 + .../express/node_modules/send/Makefile | 8 + .../express/node_modules/send/Readme.md | 123 + .../express/node_modules/send/index.js | 2 + .../express/node_modules/send/lib/send.js | 473 + .../express/node_modules/send/lib/utils.js | 47 + .../send/node_modules/mime/LICENSE | 19 + .../send/node_modules/mime/README.md | 63 + .../send/node_modules/mime/mime.js | 104 + .../send/node_modules/mime/package.json | 35 + .../send/node_modules/mime/test.js | 55 + .../send/node_modules/mime/types/mime.types | 1510 ++ .../send/node_modules/mime/types/node.types | 65 + .../express/node_modules/send/package.json | 38 + .../node_modules/express/package.json | 88 + .../node_modules/express/test.js | 17 + .../node_modules/jade/.npmignore | 14 + .../node_modules/jade/LICENSE | 22 + .../node_modules/jade/Readme.md | 1308 + .../node_modules/jade/Readme_zh-cn.md | 921 + .../node_modules/jade/bin/jade | 178 + .../node_modules/jade/component.json | 16 + .../node_modules/jade/index.js | 4 + .../node_modules/jade/jade.js | 8008 +++++++ .../node_modules/jade/jade.md | 510 + .../node_modules/jade/lib/compiler.js | 665 + .../node_modules/jade/lib/doctypes.js | 18 + .../node_modules/jade/lib/filters-client.js | 18 + .../node_modules/jade/lib/filters.js | 29 + .../node_modules/jade/lib/index.js | 1 + .../node_modules/jade/lib/inline-tags.js | 28 + .../node_modules/jade/lib/jade.js | 242 + .../node_modules/jade/lib/lexer.js | 782 + .../node_modules/jade/lib/nodes/attrs.js | 77 + .../jade/lib/nodes/block-comment.js | 33 + .../node_modules/jade/lib/nodes/block.js | 122 + .../node_modules/jade/lib/nodes/case.js | 43 + .../node_modules/jade/lib/nodes/code.js | 35 + .../node_modules/jade/lib/nodes/comment.js | 32 + .../node_modules/jade/lib/nodes/doctype.js | 29 + .../node_modules/jade/lib/nodes/each.js | 35 + .../node_modules/jade/lib/nodes/filter.js | 34 + .../node_modules/jade/lib/nodes/index.js | 20 + .../node_modules/jade/lib/nodes/literal.js | 29 + .../node_modules/jade/lib/nodes/mixin.js | 36 + .../node_modules/jade/lib/nodes/node.js | 25 + .../node_modules/jade/lib/nodes/tag.js | 95 + .../node_modules/jade/lib/nodes/text.js | 36 + .../node_modules/jade/lib/parser.js | 720 + .../node_modules/jade/lib/runtime.js | 187 + .../node_modules/jade/lib/self-closing.js | 19 + .../node_modules/jade/lib/utils.js | 21 + .../node_modules/character-parser/.npmignore | 16 + .../node_modules/character-parser/.travis.yml | 4 + .../node_modules/character-parser/README.md | 123 + .../node_modules/character-parser/index.js | 205 + .../character-parser/package.json | 38 + .../character-parser/test/index.js | 50 + .../jade/node_modules/commander/.npmignore | 4 + .../jade/node_modules/commander/.travis.yml | 4 + .../jade/node_modules/commander/History.md | 152 + .../jade/node_modules/commander/Makefile | 7 + .../jade/node_modules/commander/Readme.md | 270 + .../jade/node_modules/commander/index.js | 1131 + .../commander/node_modules/keypress/README.md | 101 + .../commander/node_modules/keypress/index.js | 346 + .../node_modules/keypress/package.json | 31 + .../commander/node_modules/keypress/test.js | 28 + .../jade/node_modules/commander/package.json | 40 + .../jade/node_modules/mkdirp/.npmignore | 2 + .../jade/node_modules/mkdirp/.travis.yml | 5 + .../jade/node_modules/mkdirp/LICENSE | 21 + .../jade/node_modules/mkdirp/examples/pow.js | 6 + .../jade/node_modules/mkdirp/index.js | 82 + .../jade/node_modules/mkdirp/package.json | 33 + .../jade/node_modules/mkdirp/readme.markdown | 63 + .../jade/node_modules/mkdirp/test/chmod.js | 38 + .../jade/node_modules/mkdirp/test/clobber.js | 37 + .../jade/node_modules/mkdirp/test/mkdirp.js | 28 + .../jade/node_modules/mkdirp/test/perm.js | 32 + .../node_modules/mkdirp/test/perm_sync.js | 39 + .../jade/node_modules/mkdirp/test/race.js | 41 + .../jade/node_modules/mkdirp/test/rel.js | 32 + .../jade/node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../jade/node_modules/mkdirp/test/root.js | 18 + .../jade/node_modules/mkdirp/test/sync.js | 32 + .../jade/node_modules/mkdirp/test/umask.js | 28 + .../node_modules/mkdirp/test/umask_sync.js | 32 + .../jade/node_modules/monocle/.npmignore | 2 + .../jade/node_modules/monocle/.travis.yml | 5 + .../jade/node_modules/monocle/LICENSE | 23 + .../jade/node_modules/monocle/README.md | 67 + .../jade/node_modules/monocle/logo.png | Bin 0 -> 25575 bytes .../jade/node_modules/monocle/monocle.js | 142 + .../monocle/node_modules/readdirp/.npmignore | 15 + .../monocle/node_modules/readdirp/.travis.yml | 5 + .../monocle/node_modules/readdirp/LICENSE | 18 + .../monocle/node_modules/readdirp/README.md | 227 + .../node_modules/readdirp/examples/Readme.md | 37 + .../readdirp/examples/callback-api.js | 10 + .../node_modules/readdirp/examples/grep.js | 73 + .../node_modules/event-stream/.npmignore | 3 + .../node_modules/event-stream/.travis.yml | 4 + .../node_modules/event-stream/LICENCE | 22 + .../event-stream/examples/pretty.js | 25 + .../node_modules/event-stream/index.js | 341 + .../node_modules/duplexer/.npmignore | 3 + .../node_modules/duplexer/.travis.yml | 3 + .../node_modules/duplexer/LICENCE | 19 + .../node_modules/duplexer/Makefile | 4 + .../node_modules/duplexer/README.md | 36 + .../node_modules/duplexer/index.js | 87 + .../node_modules/duplexer/package.json | 41 + .../node_modules/duplexer/test.js | 27 + .../node_modules/from/LICENSE.APACHE2 | 15 + .../node_modules/from/LICENSE.MIT | 24 + .../event-stream/node_modules/from/index.js | 62 + .../node_modules/from/package.json | 33 + .../node_modules/from/readme.markdown | 6 + .../node_modules/from/test/index.js | 141 + .../node_modules/map-stream/.npmignore | 3 + .../node_modules/map-stream/.travis.yml | 4 + .../node_modules/map-stream/LICENCE | 22 + .../map-stream/examples/pretty.js | 25 + .../node_modules/map-stream/index.js | 105 + .../node_modules/map-stream/package.json | 30 + .../node_modules/map-stream/readme.markdown | 35 + .../map-stream/test/simple-map.asynct.js | 295 + .../node_modules/optimist/.npmignore | 4 + .../node_modules/optimist/LICENSE | 21 + .../node_modules/optimist/README.markdown | 474 + .../node_modules/optimist/examples/bool.js | 10 + .../optimist/examples/boolean_double.js | 7 + .../optimist/examples/boolean_single.js | 7 + .../optimist/examples/default_hash.js | 8 + .../optimist/examples/default_singles.js | 7 + .../node_modules/optimist/examples/divide.js | 8 + .../optimist/examples/line_count.js | 20 + .../optimist/examples/line_count_options.js | 29 + .../optimist/examples/line_count_wrap.js | 29 + .../node_modules/optimist/examples/nonopt.js | 4 + .../node_modules/optimist/examples/reflect.js | 2 + .../node_modules/optimist/examples/short.js | 3 + .../node_modules/optimist/examples/string.js | 11 + .../optimist/examples/usage-options.js | 19 + .../node_modules/optimist/examples/xup.js | 10 + .../node_modules/optimist/index.js | 457 + .../optimist/node_modules/wordwrap/.npmignore | 1 + .../node_modules/wordwrap/README.markdown | 70 + .../node_modules/wordwrap/example/center.js | 10 + .../node_modules/wordwrap/example/meat.js | 3 + .../optimist/node_modules/wordwrap/index.js | 76 + .../node_modules/wordwrap/package.json | 40 + .../node_modules/wordwrap/test/break.js | 30 + .../node_modules/wordwrap/test/idleness.txt | 63 + .../node_modules/wordwrap/test/wrap.js | 31 + .../node_modules/optimist/package.json | 46 + .../node_modules/optimist/test/_.js | 66 + .../node_modules/optimist/test/_/argv.js | 2 + .../node_modules/optimist/test/_/bin.js | 3 + .../node_modules/optimist/test/parse.js | 304 + .../node_modules/optimist/test/usage.js | 256 + .../node_modules/pause-stream/.npmignore | 3 + .../node_modules/pause-stream/index.js | 76 + .../node_modules/pause-stream/package.json | 38 + .../node_modules/pause-stream/readme.markdown | 24 + .../node_modules/pause-stream/test/index.js | 17 + .../pause-stream/test/pause-end.js | 33 + .../node_modules/split/.npmignore | 3 + .../node_modules/split/.travis.yml | 4 + .../event-stream/node_modules/split/LICENCE | 22 + .../node_modules/split/examples/pretty.js | 25 + .../event-stream/node_modules/split/index.js | 35 + .../split/node_modules/through/.travis.yml | 4 + .../node_modules/through/LICENSE.APACHE2 | 15 + .../split/node_modules/through/LICENSE.MIT | 24 + .../split/node_modules/through/index.js | 65 + .../split/node_modules/through/package.json | 29 + .../node_modules/through/readme.markdown | 26 + .../split/node_modules/through/test/index.js | 113 + .../node_modules/split/package.json | 35 + .../node_modules/split/readme.markdown | 20 + .../node_modules/split/test/split.asynct.js | 47 + .../node_modules/through/.travis.yml | 4 + .../node_modules/through/LICENSE.APACHE2 | 15 + .../node_modules/through/LICENSE.MIT | 24 + .../node_modules/through/index.js | 100 + .../node_modules/through/package.json | 34 + .../node_modules/through/readme.markdown | 44 + .../node_modules/through/test/buffering.js | 37 + .../node_modules/through/test/end.js | 27 + .../node_modules/through/test/index.js | 113 + .../node_modules/event-stream/package.json | 40 + .../node_modules/event-stream/readme.markdown | 286 + .../event-stream/test/connect.asynct.js | 82 + .../event-stream/test/merge.asynct.js | 20 + .../event-stream/test/pause.asynct.js | 38 + .../event-stream/test/pipeline.asynct.js | 51 + .../event-stream/test/readArray.asynct.js | 88 + .../event-stream/test/readable.asynct.js | 167 + .../event-stream/test/replace.asynct.js | 50 + .../event-stream/test/simple-map.asynct.js | 342 + .../event-stream/test/spec.asynct.js | 85 + .../event-stream/test/split.asynct.js | 46 + .../event-stream/test/stringify.js | 14 + .../event-stream/test/writeArray.asynct.js | 30 + .../node_modules/tap-stream/.npmignore | 1 + .../node_modules/tap-stream/.travis.yml | 5 + .../node_modules/tap-stream/README.md | 98 + .../tap-stream/examples/tap-nested-objects.js | 38 + .../examples/node_modules/tap-stream/index.js | 56 + .../node_modules/through/.travis.yml | 4 + .../node_modules/through/LICENSE.APACHE2 | 15 + .../node_modules/through/LICENSE.MIT | 24 + .../tap-stream/node_modules/through/index.js | 100 + .../node_modules/through/package.json | 34 + .../node_modules/through/readme.markdown | 44 + .../node_modules/through/test/buffering.js | 37 + .../node_modules/through/test/end.js | 27 + .../node_modules/through/test/index.js | 113 + .../node_modules/tap-stream/package.json | 38 + .../tap-stream/test/tap-stream.js | 104 + .../readdirp/examples/package.json | 9 + .../readdirp/examples/stream-api-pipe.js | 13 + .../readdirp/examples/stream-api.js | 15 + .../readdirp/node_modules/minimatch/LICENSE | 23 + .../readdirp/node_modules/minimatch/README.md | 218 + .../node_modules/minimatch/minimatch.js | 1079 + .../node_modules/lru-cache/.npmignore | 1 + .../minimatch/node_modules/lru-cache/AUTHORS | 8 + .../minimatch/node_modules/lru-cache/LICENSE | 23 + .../node_modules/lru-cache/README.md | 97 + .../node_modules/lru-cache/lib/lru-cache.js | 257 + .../node_modules/lru-cache/package.json | 62 + .../minimatch/node_modules/lru-cache/s.js | 25 + .../node_modules/lru-cache/test/basic.js | 329 + .../node_modules/lru-cache/test/foreach.js | 52 + .../lru-cache/test/memory-leak.js | 50 + .../minimatch/node_modules/sigmund/LICENSE | 27 + .../minimatch/node_modules/sigmund/README.md | 53 + .../minimatch/node_modules/sigmund/bench.js | 283 + .../node_modules/sigmund/package.json | 41 + .../minimatch/node_modules/sigmund/sigmund.js | 39 + .../node_modules/sigmund/test/basic.js | 24 + .../node_modules/minimatch/package.json | 39 + .../node_modules/minimatch/test/basic.js | 399 + .../minimatch/test/brace-expand.js | 33 + .../node_modules/minimatch/test/caching.js | 14 + .../node_modules/minimatch/test/defaults.js | 274 + .../node_modules/readdirp/package.json | 49 + .../monocle/node_modules/readdirp/readdirp.js | 267 + .../node_modules/readdirp/stream-api.js | 86 + .../test/bed/root_dir1/root_dir1_file1.ext1 | 0 .../test/bed/root_dir1/root_dir1_file2.ext2 | 0 .../test/bed/root_dir1/root_dir1_file3.ext3 | 0 .../root1_dir1_subdir1_file1.ext1 | 0 .../test/bed/root_dir2/root_dir2_file1.ext1 | 0 .../test/bed/root_dir2/root_dir2_file2.ext2 | 0 .../readdirp/test/bed/root_file1.ext1 | 0 .../readdirp/test/bed/root_file2.ext2 | 0 .../readdirp/test/bed/root_file3.ext3 | 0 .../readdirp/test/readdirp-stream.js | 215 + .../node_modules/readdirp/test/readdirp.js | 252 + .../jade/node_modules/monocle/package.json | 39 + .../monocle/test/sample_files/creation3.txt | 1 + .../monocle/test/sample_files/creation4.txt | 1 + .../monocle/test/sample_files/creation5.txt | 1 + .../monocle/test/sample_files/foo.txt | 1 + .../monocle/test/sample_files/longbow.js | 1 + .../test/sample_files/nestedDir/servent.txt | 1 + .../monocle/test/sample_files/zap.bat | 31 + .../jade/node_modules/monocle/test/tester.js | 180 + .../jade/node_modules/transformers/.npmignore | 15 + .../node_modules/transformers/.travis.yml | 3 + .../jade/node_modules/transformers/README.md | 138 + .../jade/node_modules/transformers/history.md | 69 + .../node_modules/transformers/lib/shared.js | 162 + .../transformers/lib/transformers.js | 575 + .../transformers/node_modules/.bin/uglifyjs | 15 + .../node_modules/.bin/uglifyjs.cmd | 5 + .../transformers/node_modules/css/.npmignore | 4 + .../transformers/node_modules/css/History.md | 20 + .../transformers/node_modules/css/Makefile | 8 + .../transformers/node_modules/css/Readme.md | 77 + .../node_modules/css/benchmark.js | 36 + .../node_modules/css/component.json | 13 + .../transformers/node_modules/css/index.js | 3 + .../css/node_modules/css-parse/.npmignore | 6 + .../css/node_modules/css-parse/History.md | 30 + .../css/node_modules/css-parse/Makefile | 7 + .../css/node_modules/css-parse/Readme.md | 62 + .../css/node_modules/css-parse/component.json | 8 + .../css/node_modules/css-parse/index.js | 265 + .../css/node_modules/css-parse/package.json | 23 + .../css/node_modules/css-stringify/.npmignore | 6 + .../css/node_modules/css-stringify/History.md | 30 + .../css/node_modules/css-stringify/Makefile | 7 + .../css/node_modules/css-stringify/Readme.md | 33 + .../node_modules/css-stringify/component.json | 8 + .../css/node_modules/css-stringify/index.js | 182 + .../node_modules/css-stringify/package.json | 28 + .../node_modules/css/package.json | 23 + .../transformers/node_modules/css/test.js | 6 + .../node_modules/promise/.npmignore | 6 + .../node_modules/promise/Readme.md | 85 + .../node_modules/promise/index.js | 164 + .../node_modules/is-promise/.npmignore | 6 + .../promise/node_modules/is-promise/index.js | 5 + .../node_modules/is-promise/package.json | 28 + .../promise/node_modules/is-promise/readme.md | 29 + .../node_modules/promise/package.json | 32 + .../node_modules/uglify-js/.npmignore | 2 + .../node_modules/uglify-js/README.md | 544 + .../node_modules/uglify-js/bin/uglifyjs | 370 + .../node_modules/uglify-js/lib/ast.js | 964 + .../node_modules/uglify-js/lib/compress.js | 1968 ++ .../node_modules/uglify-js/lib/mozilla-ast.js | 265 + .../node_modules/uglify-js/lib/output.js | 1220 + .../node_modules/uglify-js/lib/parse.js | 1407 ++ .../node_modules/uglify-js/lib/scope.js | 580 + .../node_modules/uglify-js/lib/sourcemap.js | 81 + .../node_modules/uglify-js/lib/transform.js | 218 + .../node_modules/uglify-js/lib/utils.js | 288 + .../node_modules/optimist/.travis.yml | 4 + .../uglify-js/node_modules/optimist/LICENSE | 21 + .../node_modules/optimist/example/bool.js | 10 + .../optimist/example/boolean_double.js | 7 + .../optimist/example/boolean_single.js | 7 + .../optimist/example/default_hash.js | 8 + .../optimist/example/default_singles.js | 7 + .../node_modules/optimist/example/divide.js | 8 + .../optimist/example/line_count.js | 20 + .../optimist/example/line_count_options.js | 29 + .../optimist/example/line_count_wrap.js | 29 + .../node_modules/optimist/example/nonopt.js | 4 + .../node_modules/optimist/example/reflect.js | 2 + .../node_modules/optimist/example/short.js | 3 + .../node_modules/optimist/example/string.js | 11 + .../optimist/example/usage-options.js | 19 + .../node_modules/optimist/example/xup.js | 10 + .../uglify-js/node_modules/optimist/index.js | 478 + .../optimist/node_modules/wordwrap/.npmignore | 1 + .../node_modules/wordwrap/README.markdown | 70 + .../node_modules/wordwrap/example/center.js | 10 + .../node_modules/wordwrap/example/meat.js | 3 + .../optimist/node_modules/wordwrap/index.js | 76 + .../node_modules/wordwrap/package.json | 44 + .../node_modules/wordwrap/test/break.js | 30 + .../node_modules/wordwrap/test/idleness.txt | 63 + .../node_modules/wordwrap/test/wrap.js | 31 + .../node_modules/optimist/package.json | 45 + .../node_modules/optimist/readme.markdown | 487 + .../uglify-js/node_modules/optimist/test/_.js | 71 + .../node_modules/optimist/test/_/argv.js | 2 + .../node_modules/optimist/test/_/bin.js | 3 + .../node_modules/optimist/test/parse.js | 446 + .../node_modules/optimist/test/usage.js | 292 + .../node_modules/source-map/.npmignore | 2 + .../node_modules/source-map/.travis.yml | 4 + .../node_modules/source-map/CHANGELOG.md | 58 + .../uglify-js/node_modules/source-map/LICENSE | 28 + .../source-map/Makefile.dryice.js | 166 + .../node_modules/source-map/README.md | 347 + .../source-map/build/assert-shim.js | 56 + .../source-map/build/mini-require.js | 152 + .../source-map/build/prefix-source-map.jsm | 20 + .../source-map/build/prefix-utils.jsm | 18 + .../source-map/build/suffix-browser.js | 8 + .../source-map/build/suffix-source-map.jsm | 6 + .../source-map/build/suffix-utils.jsm | 21 + .../source-map/build/test-prefix.js | 8 + .../source-map/build/test-suffix.js | 3 + .../node_modules/source-map/lib/source-map.js | 8 + .../source-map/lib/source-map/array-set.js | 96 + .../source-map/lib/source-map/base64-vlq.js | 144 + .../source-map/lib/source-map/base64.js | 42 + .../lib/source-map/binary-search.js | 81 + .../lib/source-map/source-map-consumer.js | 426 + .../lib/source-map/source-map-generator.js | 381 + .../source-map/lib/source-map/source-node.js | 353 + .../source-map/lib/source-map/util.js | 91 + .../source-map/node_modules/amdefine/LICENSE | 58 + .../node_modules/amdefine/README.md | 119 + .../node_modules/amdefine/amdefine.js | 299 + .../node_modules/amdefine/package.json | 36 + .../node_modules/source-map/package.json | 77 + .../node_modules/source-map/test/run-tests.js | 73 + .../source-map/test/source-map/test-api.js | 26 + .../test/source-map/test-array-set.js | 71 + .../test/source-map/test-base64-vlq.js | 24 + .../source-map/test/source-map/test-base64.js | 35 + .../test/source-map/test-binary-search.js | 54 + .../test/source-map/test-dog-fooding.js | 72 + .../source-map/test-source-map-consumer.js | 291 + .../source-map/test-source-map-generator.js | 391 + .../test/source-map/test-source-node.js | 282 + .../source-map/test/source-map/util.js | 152 + .../node_modules/uglify-js/package.json | 44 + .../uglify-js/test/compress/arrays.js | 12 + .../uglify-js/test/compress/blocks.js | 49 + .../uglify-js/test/compress/conditionals.js | 143 + .../uglify-js/test/compress/dead-code.js | 89 + .../uglify-js/test/compress/debugger.js | 24 + .../uglify-js/test/compress/drop-unused.js | 97 + .../uglify-js/test/compress/issue-105.js | 17 + .../uglify-js/test/compress/issue-12.js | 11 + .../uglify-js/test/compress/issue-22.js | 17 + .../uglify-js/test/compress/issue-44.js | 31 + .../uglify-js/test/compress/issue-59.js | 30 + .../uglify-js/test/compress/labels.js | 163 + .../uglify-js/test/compress/loops.js | 123 + .../uglify-js/test/compress/properties.js | 25 + .../uglify-js/test/compress/sequences.js | 161 + .../uglify-js/test/compress/switch.js | 210 + .../node_modules/uglify-js/test/run-tests.js | 170 + .../node_modules/uglify-js/tools/node.js | 164 + .../node_modules/transformers/package.json | 76 + .../test/fixtures/component/build/build.css | 6 + .../test/fixtures/component/build/build.js | 1235 + .../test/fixtures/component/component.json | 8 + .../component-classes/component.json | 19 + .../components/component-classes/index.js | 164 + .../component-delegate/component.json | 19 + .../components/component-delegate/index.js | 42 + .../components/component-dom/component.json | 27 + .../components/component-dom/index.js | 579 + .../component-domify/component.json | 20 + .../components/component-domify/index.js | 79 + .../components/component-event/component.json | 13 + .../components/component-event/index.js | 40 + .../component-indexof/component.json | 15 + .../components/component-indexof/index.js | 10 + .../component-matches-selector/component.json | 17 + .../component-matches-selector/index.js | 40 + .../components/component-type/component.json | 15 + .../components/component-type/index.js | 31 + .../test/fixtures/component/index.css | 3 + .../test/fixtures/component/index.js | 1 + .../test/fixtures/component/second.css | 3 + .../test/fixtures/uglify-js/script.js | 6 + .../test/simple/atpl/sample-a.txt | 1 + .../test/simple/atpl/sample-b.txt | 1 + .../test/simple/cdata/sample-a-expected.txt | 3 + .../test/simple/cdata/sample-a.txt | 1 + .../test/simple/cdata/sample-b-expected.txt | 3 + .../test/simple/cdata/sample-b.txt | 1 + .../coffee-script/sample-a-expected.txt | 6 + .../test/simple/coffee-script/sample-a.txt | 1 + .../coffee-script/sample-b-expected.txt | 6 + .../test/simple/coffee-script/sample-b.txt | 1 + .../simple/coffeecup/sample-a-expected.txt | 1 + .../test/simple/coffeecup/sample-a.txt | 3 + .../simple/coffeecup/sample-b-expected.txt | 1 + .../test/simple/coffeecup/sample-b.txt | 3 + .../test/simple/cson/sample-a-expected.txt | 1 + .../test/simple/cson/sample-a.txt | 9 + .../test/simple/cson/sample-b-expected.txt | 1 + .../test/simple/cson/sample-b.txt | 9 + .../transformers/test/simple/dot/sample-a.txt | 1 + .../transformers/test/simple/dot/sample-b.txt | 1 + .../test/simple/dust/sample-a.txt | 1 + .../test/simple/dust/sample-b.txt | 1 + .../transformers/test/simple/eco/sample-a.txt | 1 + .../transformers/test/simple/eco/sample-b.txt | 1 + .../transformers/test/simple/ect/sample-a.txt | 1 + .../transformers/test/simple/ect/sample-b.txt | 1 + .../transformers/test/simple/ejs/sample-a.txt | 1 + .../transformers/test/simple/ejs/sample-b.txt | 1 + .../test/simple/haml-coffee/sample-a.txt | 1 + .../test/simple/haml-coffee/sample-b.txt | 1 + .../test/simple/haml/sample-a-expected.txt | 2 + .../test/simple/haml/sample-a.txt | 1 + .../test/simple/haml/sample-b-expected.txt | 2 + .../test/simple/haml/sample-b.txt | 1 + .../test/simple/handlebars/sample-a.txt | 1 + .../test/simple/handlebars/sample-b.txt | 1 + .../test/simple/hogan/sample-a.txt | 1 + .../test/simple/hogan/sample-b.txt | 1 + .../simple/html2jade/sample-a-expected.txt | 7 + .../test/simple/html2jade/sample-a.txt | 10 + .../simple/html2jade/sample-b-expected.txt | 7 + .../test/simple/html2jade/sample-b.txt | 10 + .../test/simple/jade/sample-a.txt | 1 + .../test/simple/jade/sample-b.txt | 1 + .../test/simple/jazz/sample-a.txt | 1 + .../test/simple/jazz/sample-b.txt | 1 + .../test/simple/jqtpl/sample-a.txt | 1 + .../test/simple/jqtpl/sample-b.txt | 1 + .../test/simple/just/sample-a.txt | 1 + .../test/simple/just/sample-b.txt | 1 + .../test/simple/less/sample-a-expected.txt | 27 + .../test/simple/less/sample-a.txt | 54 + .../test/simple/less/sample-b-expected.txt | 27 + .../test/simple/less/sample-b.txt | 54 + .../test/simple/liquor/sample-a.txt | 1 + .../test/simple/liquor/sample-b.txt | 1 + .../simple/markdown/sample-a-expected.txt | 6 + .../test/simple/markdown/sample-a.txt | 6 + .../simple/markdown/sample-b-expected.txt | 6 + .../test/simple/markdown/sample-b.txt | 6 + .../test/simple/mote/sample-a.txt | 1 + .../test/simple/mote/sample-b.txt | 1 + .../test/simple/mustache/sample-a.txt | 1 + .../test/simple/mustache/sample-b.txt | 1 + .../test/simple/plates/sample-a-expected.txt | 1 + .../test/simple/plates/sample-a.txt | 1 + .../test/simple/plates/sample-b-expected.txt | 1 + .../test/simple/plates/sample-b.txt | 1 + .../test/simple/qejs/sample-a.txt | 1 + .../test/simple/qejs/sample-b.txt | 1 + .../test/simple/sass/sample-a-expected.txt | 8 + .../test/simple/sass/sample-a.txt | 11 + .../test/simple/sass/sample-b-expected.txt | 8 + .../test/simple/sass/sample-b.txt | 11 + .../test/simple/stylus/sample-a-expected.txt | 8 + .../test/simple/stylus/sample-a.txt | 10 + .../test/simple/stylus/sample-b-expected.txt | 8 + .../test/simple/stylus/sample-b.txt | 10 + .../test/simple/swig/sample-a.txt | 1 + .../test/simple/swig/sample-b.txt | 1 + .../test/simple/templayed/sample-a.txt | 1 + .../test/simple/templayed/sample-b.txt | 1 + .../test/simple/toffee/sample-a.txt | 1 + .../test/simple/toffee/sample-b.txt | 1 + .../simple/uglify-css/sample-a-expected.txt | 1 + .../test/simple/uglify-css/sample-a.txt | 3 + .../simple/uglify-css/sample-b-expected.txt | 1 + .../test/simple/uglify-css/sample-b.txt | 3 + .../simple/uglify-json/sample-a-expected.txt | 1 + .../test/simple/uglify-json/sample-a.txt | 3 + .../simple/uglify-json/sample-b-expected.txt | 1 + .../test/simple/uglify-json/sample-b.txt | 5 + .../test/simple/underscore/sample-a.txt | 1 + .../test/simple/underscore/sample-b.txt | 1 + .../test/simple/walrus/sample-a.txt | 1 + .../test/simple/walrus/sample-b.txt | 1 + .../test/simple/whiskers/sample-a.txt | 1 + .../test/simple/whiskers/sample-b.txt | 1 + .../node_modules/transformers/test/test.js | 123 + .../transformers/test/update-package.js | 13 + .../jade/node_modules/with/.npmignore | 16 + .../jade/node_modules/with/.travis.yml | 4 + .../jade/node_modules/with/README.md | 55 + .../jade/node_modules/with/index.js | 31 + .../node_modules/lexical-scope/.travis.yml | 4 + .../with/node_modules/lexical-scope/LICENSE | 18 + .../lexical-scope/bench/jquery.js | 4 + .../lexical-scope/bench/results.txt | 15 + .../node_modules/lexical-scope/bench/run.js | 7 + .../lexical-scope/example/detect.js | 6 + .../node_modules/lexical-scope/example/src.js | 27 + .../with/node_modules/lexical-scope/index.js | 161 + .../node_modules/astw/.travis.yml | 4 + .../lexical-scope/node_modules/astw/LICENSE | 18 + .../node_modules/astw/example/types.js | 8 + .../lexical-scope/node_modules/astw/index.js | 42 + .../astw/node_modules/.bin/esparse | 15 + .../astw/node_modules/.bin/esparse.cmd | 5 + .../astw/node_modules/.bin/esvalidate | 15 + .../astw/node_modules/.bin/esvalidate.cmd | 5 + .../astw/node_modules/esprima/.npmignore | 8 + .../astw/node_modules/esprima/ChangeLog | 18 + .../astw/node_modules/esprima/LICENSE.BSD | 19 + .../astw/node_modules/esprima/README.md | 73 + .../astw/node_modules/esprima/bin/esparse.js | 117 + .../node_modules/esprima/bin/esvalidate.js | 177 + .../astw/node_modules/esprima/component.json | 14 + .../astw/node_modules/esprima/doc/index.html | 473 + .../astw/node_modules/esprima/esprima.js | 3895 +++ .../esprima/examples/detectnestedternary.js | 106 + .../esprima/examples/findbooleantrap.js | 173 + .../esprima/examples/tokendist.js | 33 + .../astw/node_modules/esprima/index.html | 102 + .../astw/node_modules/esprima/package.json | 43 + .../node_modules/esprima/test/benchmarks.html | 58 + .../node_modules/esprima/test/benchmarks.js | 334 + .../node_modules/esprima/test/compare.html | 69 + .../astw/node_modules/esprima/test/compare.js | 328 + .../node_modules/esprima/test/compat.html | 40 + .../astw/node_modules/esprima/test/compat.js | 239 + .../esprima/test/coverage.footer.html | 3 + .../esprima/test/coverage.header.html | 37 + .../node_modules/esprima/test/coverage.html | 4676 ++++ .../astw/node_modules/esprima/test/index.html | 37 + .../node_modules/esprima/test/module.html | 36 + .../astw/node_modules/esprima/test/module.js | 129 + .../astw/node_modules/esprima/test/reflect.js | 422 + .../astw/node_modules/esprima/test/run.js | 66 + .../astw/node_modules/esprima/test/runner.js | 387 + .../astw/node_modules/esprima/test/test.js | 19764 +++++++++++++++ .../node_modules/astw/package.json | 53 + .../node_modules/astw/readme.markdown | 52 + .../node_modules/astw/test/parent.js | 25 + .../node_modules/lexical-scope/package.json | 64 + .../lexical-scope/readme.markdown | 99 + .../lexical-scope/test/argument.js | 17 + .../lexical-scope/test/assign_implicit.js | 13 + .../node_modules/lexical-scope/test/detect.js | 17 + .../lexical-scope/test/files/argument.js | 6 + .../test/files/assign_implicit.js | 2 + .../lexical-scope/test/files/detect.js | 32 + .../test/files/multiple-exports.js | 6 + .../lexical-scope/test/files/named_arg.js | 6 + .../lexical-scope/test/files/obj.js | 1 + .../lexical-scope/test/files/return_hash.js | 5 + .../lexical-scope/test/files/right_hand.js | 2 + .../lexical-scope/test/multiple-exports.js | 18 + .../lexical-scope/test/named_arg.js | 17 + .../node_modules/lexical-scope/test/obj.js | 16 + .../lexical-scope/test/package.json | 5 + .../lexical-scope/test/return_hash.js | 13 + .../lexical-scope/test/right_hand.js | 16 + .../lexical-scope/test/shebang.js | 19 + .../jade/node_modules/with/package.json | 30 + .../jade/node_modules/with/test/index.js | 107 + .../node_modules/jade/package.json | 62 + .../node_modules/jade/runtime.js | 196 + .../node_modules/mongoose/.npmignore | 13 + .../node_modules/mongoose/.travis.yml | 7 + .../node_modules/mongoose/CONTRIBUTING.md | 53 + .../node_modules/mongoose/History.md | 1628 ++ .../node_modules/mongoose/README.md | 269 + .../node_modules/mongoose/examples/README.md | 42 + .../mongoose/examples/doc-methods.js | 70 + .../node_modules/express/.npmignore | 9 + .../node_modules/express/.travis.yml | 4 + .../node_modules/express/History.md | 1100 + .../node_modules/express/LICENSE | 22 + .../node_modules/express/Readme.md | 180 + .../node_modules/express/bin/express | 422 + .../node_modules/express/client.js | 25 + .../node_modules/express/index.js | 4 + .../node_modules/express/lib/application.js | 533 + .../node_modules/express/lib/express.js | 92 + .../node_modules/express/lib/middleware.js | 33 + .../node_modules/express/lib/request.js | 496 + .../node_modules/express/lib/response.js | 756 + .../node_modules/express/lib/router/index.js | 273 + .../node_modules/express/lib/router/route.js | 72 + .../node_modules/express/lib/utils.js | 280 + .../node_modules/express/lib/view.js | 76 + .../node_modules/buffer-crc32/.npmignore | 1 + .../node_modules/buffer-crc32/.travis.yml | 8 + .../node_modules/buffer-crc32/README.md | 47 + .../node_modules/buffer-crc32/index.js | 88 + .../node_modules/buffer-crc32/package.json | 36 + .../buffer-crc32/tests/crc.test.js | 89 + .../express/node_modules/commander/.npmignore | 4 + .../node_modules/commander/.travis.yml | 4 + .../express/node_modules/commander/History.md | 107 + .../express/node_modules/commander/Makefile | 7 + .../express/node_modules/commander/Readme.md | 262 + .../express/node_modules/commander/index.js | 2 + .../node_modules/commander/lib/commander.js | 1026 + .../node_modules/commander/package.json | 35 + .../express/node_modules/connect/.npmignore | 12 + .../express/node_modules/connect/.travis.yml | 5 + .../express/node_modules/connect/LICENSE | 24 + .../express/node_modules/connect/Readme.md | 133 + .../express/node_modules/connect/index.js | 4 + .../express/node_modules/connect/lib/cache.js | 81 + .../node_modules/connect/lib/connect.js | 92 + .../express/node_modules/connect/lib/index.js | 50 + .../connect/lib/middleware/basicAuth.js | 103 + .../connect/lib/middleware/bodyParser.js | 61 + .../connect/lib/middleware/compress.js | 152 + .../connect/lib/middleware/cookieParser.js | 62 + .../connect/lib/middleware/cookieSession.js | 117 + .../connect/lib/middleware/csrf.js | 73 + .../connect/lib/middleware/directory.js | 229 + .../connect/lib/middleware/errorHandler.js | 86 + .../connect/lib/middleware/favicon.js | 80 + .../connect/lib/middleware/json.js | 86 + .../connect/lib/middleware/limit.js | 55 + .../connect/lib/middleware/logger.js | 339 + .../connect/lib/middleware/methodOverride.js | 40 + .../connect/lib/middleware/multipart.js | 133 + .../connect/lib/middleware/query.js | 46 + .../connect/lib/middleware/responseTime.js | 32 + .../connect/lib/middleware/session.js | 356 + .../connect/lib/middleware/session/cookie.js | 140 + .../connect/lib/middleware/session/memory.js | 129 + .../connect/lib/middleware/session/session.js | 116 + .../connect/lib/middleware/session/store.js | 84 + .../connect/lib/middleware/static.js | 95 + .../connect/lib/middleware/staticCache.js | 231 + .../connect/lib/middleware/timeout.js | 55 + .../connect/lib/middleware/urlencoded.js | 78 + .../connect/lib/middleware/vhost.js | 40 + .../express/node_modules/connect/lib/patch.js | 79 + .../express/node_modules/connect/lib/proto.js | 230 + .../connect/lib/public/directory.html | 81 + .../connect/lib/public/error.html | 14 + .../connect/lib/public/favicon.ico | Bin 0 -> 1406 bytes .../connect/lib/public/icons/page.png | Bin 0 -> 635 bytes .../connect/lib/public/icons/page_add.png | Bin 0 -> 739 bytes .../connect/lib/public/icons/page_attach.png | Bin 0 -> 794 bytes .../connect/lib/public/icons/page_code.png | Bin 0 -> 818 bytes .../connect/lib/public/icons/page_copy.png | Bin 0 -> 663 bytes .../connect/lib/public/icons/page_delete.png | Bin 0 -> 740 bytes .../connect/lib/public/icons/page_edit.png | Bin 0 -> 807 bytes .../connect/lib/public/icons/page_error.png | Bin 0 -> 793 bytes .../connect/lib/public/icons/page_excel.png | Bin 0 -> 817 bytes .../connect/lib/public/icons/page_find.png | Bin 0 -> 879 bytes .../connect/lib/public/icons/page_gear.png | Bin 0 -> 833 bytes .../connect/lib/public/icons/page_go.png | Bin 0 -> 779 bytes .../connect/lib/public/icons/page_green.png | Bin 0 -> 621 bytes .../connect/lib/public/icons/page_key.png | Bin 0 -> 801 bytes .../lib/public/icons/page_lightning.png | Bin 0 -> 839 bytes .../connect/lib/public/icons/page_link.png | Bin 0 -> 830 bytes .../lib/public/icons/page_paintbrush.png | Bin 0 -> 813 bytes .../connect/lib/public/icons/page_paste.png | Bin 0 -> 703 bytes .../connect/lib/public/icons/page_red.png | Bin 0 -> 641 bytes .../connect/lib/public/icons/page_refresh.png | Bin 0 -> 858 bytes .../connect/lib/public/icons/page_save.png | Bin 0 -> 774 bytes .../connect/lib/public/icons/page_white.png | Bin 0 -> 294 bytes .../lib/public/icons/page_white_acrobat.png | Bin 0 -> 591 bytes .../public/icons/page_white_actionscript.png | Bin 0 -> 664 bytes .../lib/public/icons/page_white_add.png | Bin 0 -> 512 bytes .../connect/lib/public/icons/page_white_c.png | Bin 0 -> 587 bytes .../lib/public/icons/page_white_camera.png | Bin 0 -> 656 bytes .../lib/public/icons/page_white_cd.png | Bin 0 -> 666 bytes .../lib/public/icons/page_white_code.png | Bin 0 -> 603 bytes .../lib/public/icons/page_white_code_red.png | Bin 0 -> 587 bytes .../public/icons/page_white_coldfusion.png | Bin 0 -> 592 bytes .../public/icons/page_white_compressed.png | Bin 0 -> 724 bytes .../lib/public/icons/page_white_copy.png | Bin 0 -> 309 bytes .../lib/public/icons/page_white_cplusplus.png | Bin 0 -> 621 bytes .../lib/public/icons/page_white_csharp.png | Bin 0 -> 700 bytes .../lib/public/icons/page_white_cup.png | Bin 0 -> 639 bytes .../lib/public/icons/page_white_database.png | Bin 0 -> 579 bytes .../lib/public/icons/page_white_delete.png | Bin 0 -> 536 bytes .../lib/public/icons/page_white_dvd.png | Bin 0 -> 638 bytes .../lib/public/icons/page_white_edit.png | Bin 0 -> 618 bytes .../lib/public/icons/page_white_error.png | Bin 0 -> 623 bytes .../lib/public/icons/page_white_excel.png | Bin 0 -> 663 bytes .../lib/public/icons/page_white_find.png | Bin 0 -> 676 bytes .../lib/public/icons/page_white_flash.png | Bin 0 -> 582 bytes .../lib/public/icons/page_white_freehand.png | Bin 0 -> 639 bytes .../lib/public/icons/page_white_gear.png | Bin 0 -> 402 bytes .../lib/public/icons/page_white_get.png | Bin 0 -> 516 bytes .../lib/public/icons/page_white_go.png | Bin 0 -> 612 bytes .../connect/lib/public/icons/page_white_h.png | Bin 0 -> 603 bytes .../public/icons/page_white_horizontal.png | Bin 0 -> 296 bytes .../lib/public/icons/page_white_key.png | Bin 0 -> 616 bytes .../lib/public/icons/page_white_lightning.png | Bin 0 -> 669 bytes .../lib/public/icons/page_white_link.png | Bin 0 -> 614 bytes .../lib/public/icons/page_white_magnify.png | Bin 0 -> 554 bytes .../lib/public/icons/page_white_medal.png | Bin 0 -> 706 bytes .../lib/public/icons/page_white_office.png | Bin 0 -> 779 bytes .../lib/public/icons/page_white_paint.png | Bin 0 -> 688 bytes .../public/icons/page_white_paintbrush.png | Bin 0 -> 618 bytes .../lib/public/icons/page_white_paste.png | Bin 0 -> 620 bytes .../lib/public/icons/page_white_php.png | Bin 0 -> 538 bytes .../lib/public/icons/page_white_picture.png | Bin 0 -> 650 bytes .../public/icons/page_white_powerpoint.png | Bin 0 -> 588 bytes .../lib/public/icons/page_white_put.png | Bin 0 -> 523 bytes .../lib/public/icons/page_white_ruby.png | Bin 0 -> 626 bytes .../lib/public/icons/page_white_stack.png | Bin 0 -> 317 bytes .../lib/public/icons/page_white_star.png | Bin 0 -> 565 bytes .../lib/public/icons/page_white_swoosh.png | Bin 0 -> 634 bytes .../lib/public/icons/page_white_text.png | Bin 0 -> 342 bytes .../public/icons/page_white_text_width.png | Bin 0 -> 315 bytes .../lib/public/icons/page_white_tux.png | Bin 0 -> 668 bytes .../lib/public/icons/page_white_vector.png | Bin 0 -> 644 bytes .../public/icons/page_white_visualstudio.png | Bin 0 -> 702 bytes .../lib/public/icons/page_white_width.png | Bin 0 -> 309 bytes .../lib/public/icons/page_white_word.png | Bin 0 -> 651 bytes .../lib/public/icons/page_white_world.png | Bin 0 -> 734 bytes .../lib/public/icons/page_white_wrench.png | Bin 0 -> 613 bytes .../lib/public/icons/page_white_zip.png | Bin 0 -> 386 bytes .../connect/lib/public/icons/page_word.png | Bin 0 -> 777 bytes .../connect/lib/public/icons/page_world.png | Bin 0 -> 903 bytes .../node_modules/connect/lib/public/style.css | 141 + .../express/node_modules/connect/lib/utils.js | 388 + .../node_modules/buffer-crc32/.npmignore | 1 + .../node_modules/buffer-crc32/.travis.yml | 8 + .../node_modules/buffer-crc32/README.md | 33 + .../node_modules/buffer-crc32/index.js | 84 + .../node_modules/buffer-crc32/package.json | 31 + .../buffer-crc32/tests/crc.test.js | 52 + .../connect/node_modules/bytes/.npmignore | 1 + .../connect/node_modules/bytes/History.md | 10 + .../connect/node_modules/bytes/Makefile | 7 + .../connect/node_modules/bytes/Readme.md | 51 + .../connect/node_modules/bytes/component.json | 7 + .../connect/node_modules/bytes/index.js | 39 + .../connect/node_modules/bytes/package.json | 20 + .../node_modules/formidable/.npmignore | 4 + .../node_modules/formidable/.travis.yml | 4 + .../connect/node_modules/formidable/Makefile | 14 + .../connect/node_modules/formidable/Readme.md | 311 + .../connect/node_modules/formidable/TODO | 3 + .../benchmark/bench-multipart-parser.js | 70 + .../node_modules/formidable/example/post.js | 43 + .../node_modules/formidable/example/upload.js | 48 + .../connect/node_modules/formidable/index.js | 1 + .../node_modules/formidable/lib/file.js | 73 + .../formidable/lib/incoming_form.js | 384 + .../node_modules/formidable/lib/index.js | 3 + .../formidable/lib/multipart_parser.js | 312 + .../formidable/lib/querystring_parser.js | 25 + .../node_modules/formidable/lib/util.js | 6 + .../formidable/node-gently/Makefile | 4 + .../formidable/node-gently/Readme.md | 167 + .../formidable/node-gently/example/dog.js | 22 + .../node-gently/example/event_emitter.js | 11 + .../formidable/node-gently/index.js | 1 + .../node-gently/lib/gently/gently.js | 184 + .../node-gently/lib/gently/index.js | 1 + .../formidable/node-gently/package.json | 14 + .../formidable/node-gently/test/common.js | 8 + .../node-gently/test/simple/test-gently.js | 348 + .../node_modules/formidable/package.json | 28 + .../node_modules/formidable/test/common.js | 19 + .../test/fixture/file/funkyfilename.txt | 1 + .../formidable/test/fixture/file/plain.txt | 1 + .../http/special-chars-in-filename/info.md | 3 + .../formidable/test/fixture/js/no-filename.js | 3 + .../fixture/js/special-chars-in-filename.js | 21 + .../formidable/test/fixture/multipart.js | 72 + .../test/integration/test-fixtures.js | 89 + .../formidable/test/legacy/common.js | 24 + .../integration/test-multipart-parser.js | 80 + .../test/legacy/simple/test-file.js | 104 + .../test/legacy/simple/test-incoming-form.js | 727 + .../legacy/simple/test-multipart-parser.js | 50 + .../legacy/simple/test-querystring-parser.js | 45 + .../legacy/system/test-multi-video-upload.js | 75 + .../node_modules/formidable/test/run.js | 2 + .../test/unit/test-incoming-form.js | 63 + .../node_modules/formidable/tool/record.js | 47 + .../connect/node_modules/pause/.npmignore | 4 + .../connect/node_modules/pause/History.md | 5 + .../connect/node_modules/pause/Makefile | 7 + .../connect/node_modules/pause/Readme.md | 29 + .../connect/node_modules/pause/index.js | 29 + .../connect/node_modules/pause/package.json | 20 + .../connect/node_modules/qs/.gitmodules | 6 + .../connect/node_modules/qs/.npmignore | 1 + .../connect/node_modules/qs/.travis.yml | 4 + .../connect/node_modules/qs/History.md | 83 + .../connect/node_modules/qs/Makefile | 12 + .../connect/node_modules/qs/Readme.md | 58 + .../connect/node_modules/qs/benchmark.js | 17 + .../connect/node_modules/qs/component.json | 6 + .../connect/node_modules/qs/examples.js | 51 + .../connect/node_modules/qs/index.js | 2 + .../connect/node_modules/qs/lib/head.js | 1 + .../node_modules/qs/lib/querystring.js | 262 + .../connect/node_modules/qs/lib/tail.js | 1 + .../connect/node_modules/qs/package.json | 36 + .../connect/node_modules/qs/querystring.js | 254 + .../node_modules/qs/test/browser/expect.js | 1202 + .../node_modules/qs/test/browser/index.html | 18 + .../node_modules/qs/test/browser/jquery.js | 8981 +++++++ .../node_modules/qs/test/browser/mocha.css | 163 + .../node_modules/qs/test/browser/mocha.js | 4201 ++++ .../node_modules/qs/test/browser/qs.css | 0 .../node_modules/qs/test/browser/qs.js | 351 + .../connect/node_modules/qs/test/parse.js | 147 + .../connect/node_modules/qs/test/stringify.js | 73 + .../express/node_modules/connect/package.json | 54 + .../express/node_modules/connect/test.js | 40 + .../node_modules/cookie-signature/.npmignore | 4 + .../node_modules/cookie-signature/History.md | 5 + .../node_modules/cookie-signature/Makefile | 7 + .../node_modules/cookie-signature/Readme.md | 42 + .../node_modules/cookie-signature/index.js | 42 + .../cookie-signature/package.json | 28 + .../express/node_modules/cookie/.npmignore | 1 + .../express/node_modules/cookie/.travis.yml | 4 + .../express/node_modules/cookie/README.md | 44 + .../express/node_modules/cookie/index.js | 61 + .../express/node_modules/cookie/package.json | 33 + .../node_modules/cookie/test/mocha.opts | 1 + .../express/node_modules/cookie/test/parse.js | 28 + .../node_modules/cookie/test/serialize.js | 59 + .../express/node_modules/debug/.npmignore | 4 + .../express/node_modules/debug/History.md | 62 + .../express/node_modules/debug/Readme.md | 115 + .../express/node_modules/debug/component.json | 9 + .../express/node_modules/debug/debug.js | 124 + .../express/node_modules/debug/example/app.js | 19 + .../node_modules/debug/example/browser.html | 24 + .../node_modules/debug/example/wildcards.js | 10 + .../node_modules/debug/example/worker.js | 22 + .../express/node_modules/debug/index.js | 5 + .../express/node_modules/debug/lib/debug.js | 134 + .../express/node_modules/debug/package.json | 37 + .../express/node_modules/fresh/.npmignore | 1 + .../express/node_modules/fresh/Makefile | 7 + .../express/node_modules/fresh/Readme.md | 32 + .../express/node_modules/fresh/index.js | 49 + .../express/node_modules/fresh/package.json | 20 + .../express/node_modules/methods/index.js | 26 + .../express/node_modules/methods/package.json | 20 + .../express/node_modules/mkdirp/.npmignore | 2 + .../express/node_modules/mkdirp/.travis.yml | 5 + .../express/node_modules/mkdirp/LICENSE | 21 + .../node_modules/mkdirp/examples/pow.js | 6 + .../express/node_modules/mkdirp/index.js | 82 + .../express/node_modules/mkdirp/package.json | 30 + .../node_modules/mkdirp/readme.markdown | 63 + .../express/node_modules/mkdirp/test/chmod.js | 38 + .../node_modules/mkdirp/test/clobber.js | 37 + .../node_modules/mkdirp/test/mkdirp.js | 28 + .../express/node_modules/mkdirp/test/perm.js | 32 + .../node_modules/mkdirp/test/perm_sync.js | 39 + .../express/node_modules/mkdirp/test/race.js | 41 + .../express/node_modules/mkdirp/test/rel.js | 32 + .../node_modules/mkdirp/test/return.js | 25 + .../node_modules/mkdirp/test/return_sync.js | 24 + .../express/node_modules/mkdirp/test/root.js | 18 + .../express/node_modules/mkdirp/test/sync.js | 32 + .../express/node_modules/mkdirp/test/umask.js | 28 + .../node_modules/mkdirp/test/umask_sync.js | 32 + .../node_modules/range-parser/.npmignore | 1 + .../node_modules/range-parser/History.md | 15 + .../node_modules/range-parser/Makefile | 7 + .../node_modules/range-parser/Readme.md | 28 + .../node_modules/range-parser/index.js | 49 + .../node_modules/range-parser/package.json | 20 + .../express/node_modules/send/.npmignore | 4 + .../express/node_modules/send/History.md | 25 + .../express/node_modules/send/Makefile | 8 + .../express/node_modules/send/Readme.md | 123 + .../express/node_modules/send/index.js | 2 + .../express/node_modules/send/lib/send.js | 473 + .../express/node_modules/send/lib/utils.js | 47 + .../send/node_modules/mime/LICENSE | 19 + .../send/node_modules/mime/README.md | 63 + .../send/node_modules/mime/mime.js | 104 + .../send/node_modules/mime/package.json | 32 + .../send/node_modules/mime/test.js | 55 + .../send/node_modules/mime/types/mime.types | 1510 ++ .../send/node_modules/mime/types/node.types | 65 + .../express/node_modules/send/package.json | 34 + .../node_modules/express/package.json | 85 + .../node_modules/express/test.js | 38 + .../node_modules/mongoose/examples/hooks.js | 42 + .../population-across-three-collections.js | 135 + .../mongoose/examples/population-basic.js | 95 + .../examples/population-of-existing-doc.js | 101 + .../population-of-multiple-existing-docs.js | 112 + .../mongoose/examples/population-options.js | 124 + .../examples/population-plain-objects.js | 96 + .../node_modules/mongoose/examples/schema.js | 102 + .../node_modules/mongoose/index.js | 7 + .../node_modules/mongoose/lib/collection.js | 188 + .../node_modules/mongoose/lib/connection.js | 706 + .../mongoose/lib/connectionstate.js | 24 + .../node_modules/mongoose/lib/document.js | 1710 ++ .../node_modules/mongoose/lib/drivers/SPEC.md | 4 + .../lib/drivers/node-mongodb-native/binary.js | 8 + .../drivers/node-mongodb-native/collection.js | 211 + .../drivers/node-mongodb-native/connection.js | 299 + .../drivers/node-mongodb-native/objectid.js | 29 + .../node_modules/mongoose/lib/error.js | 39 + .../node_modules/mongoose/lib/errors/cast.js | 35 + .../mongoose/lib/errors/divergentArray.js | 40 + .../mongoose/lib/errors/document.js | 32 + .../mongoose/lib/errors/missingSchema.js | 32 + .../mongoose/lib/errors/overwriteModel.js | 30 + .../mongoose/lib/errors/validation.js | 49 + .../mongoose/lib/errors/validator.js | 51 + .../mongoose/lib/errors/version.js | 31 + .../node_modules/mongoose/lib/index.js | 580 + .../node_modules/mongoose/lib/internal.js | 31 + .../node_modules/mongoose/lib/model.js | 2229 ++ .../node_modules/mongoose/lib/namedscope.js | 70 + .../node_modules/mongoose/lib/promise.js | 231 + .../node_modules/mongoose/lib/query.js | 2608 ++ .../node_modules/mongoose/lib/queryhelpers.js | 35 + .../node_modules/mongoose/lib/querystream.js | 336 + .../node_modules/mongoose/lib/schema.js | 910 + .../node_modules/mongoose/lib/schema/array.js | 314 + .../mongoose/lib/schema/boolean.js | 92 + .../mongoose/lib/schema/buffer.js | 163 + .../node_modules/mongoose/lib/schema/date.js | 167 + .../mongoose/lib/schema/documentarray.js | 189 + .../node_modules/mongoose/lib/schema/index.js | 28 + .../node_modules/mongoose/lib/schema/mixed.js | 83 + .../mongoose/lib/schema/number.js | 225 + .../mongoose/lib/schema/objectid.js | 183 + .../mongoose/lib/schema/string.js | 302 + .../mongoose/lib/schemadefault.js | 34 + .../node_modules/mongoose/lib/schematype.js | 625 + .../node_modules/mongoose/lib/statemachine.js | 179 + .../node_modules/mongoose/lib/types/array.js | 679 + .../node_modules/mongoose/lib/types/buffer.js | 210 + .../mongoose/lib/types/documentarray.js | 189 + .../mongoose/lib/types/embedded.js | 244 + .../node_modules/mongoose/lib/types/index.js | 13 + .../mongoose/lib/types/objectid.js | 43 + .../node_modules/mongoose/lib/utils.js | 671 + .../node_modules/mongoose/lib/virtualtype.js | 103 + .../mongoose/node_modules/hooks/.npmignore | 2 + .../mongoose/node_modules/hooks/Makefile | 9 + .../mongoose/node_modules/hooks/README.md | 306 + .../mongoose/node_modules/hooks/hooks.alt.js | 134 + .../mongoose/node_modules/hooks/hooks.js | 161 + .../mongoose/node_modules/hooks/package.json | 53 + .../mongoose/node_modules/hooks/test.js | 691 + .../mongoose/node_modules/mongodb/.travis.yml | 5 + .../node_modules/mongodb/CONTRIBUTING.md | 23 + .../mongoose/node_modules/mongodb/Makefile | 28 + .../mongoose/node_modules/mongodb/Readme.md | 442 + .../mongoose/node_modules/mongodb/index.js | 1 + .../mongoose/node_modules/mongodb/install.js | 40 + .../node_modules/mongodb/lib/mongodb/admin.js | 339 + .../mongodb/lib/mongodb/auth/mongodb_cr.js | 53 + .../lib/mongodb/auth/mongodb_gssapi.js | 148 + .../mongodb/lib/mongodb/auth/mongodb_sspi.js | 134 + .../mongodb/lib/mongodb/collection.js | 1764 ++ .../lib/mongodb/commands/base_command.js | 29 + .../lib/mongodb/commands/db_command.js | 241 + .../lib/mongodb/commands/delete_command.js | 114 + .../lib/mongodb/commands/get_more_command.js | 83 + .../lib/mongodb/commands/insert_command.js | 147 + .../mongodb/commands/kill_cursor_command.js | 98 + .../lib/mongodb/commands/query_command.js | 261 + .../lib/mongodb/commands/update_command.js | 174 + .../mongodb/lib/mongodb/connection/base.js | 465 + .../lib/mongodb/connection/connection.js | 505 + .../lib/mongodb/connection/connection_pool.js | 294 + .../mongodb/connection/connection_utils.js | 23 + .../mongodb/lib/mongodb/connection/mongos.js | 471 + .../lib/mongodb/connection/read_preference.js | 67 + .../lib/mongodb/connection/repl_set/ha.js | 392 + .../mongodb/connection/repl_set/options.js | 125 + .../mongodb/connection/repl_set/repl_set.js | 758 + .../connection/repl_set/repl_set_state.js | 70 + .../repl_set/strategies/ping_strategy.js | 297 + .../strategies/statistics_strategy.js | 80 + .../mongodb/lib/mongodb/connection/server.js | 965 + .../lib/mongodb/connection/url_parser.js | 241 + .../mongodb/lib/mongodb/cursor.js | 930 + .../mongodb/lib/mongodb/cursorstream.js | 164 + .../node_modules/mongodb/lib/mongodb/db.js | 1928 ++ .../mongodb/lib/mongodb/gridfs/chunk.js | 213 + .../mongodb/lib/mongodb/gridfs/grid.js | 103 + .../mongodb/lib/mongodb/gridfs/gridstore.js | 1482 ++ .../mongodb/lib/mongodb/gridfs/readstream.js | 193 + .../node_modules/mongodb/lib/mongodb/index.js | 66 + .../mongodb/lib/mongodb/mongo_client.js | 340 + .../lib/mongodb/responses/mongo_reply.js | 144 + .../node_modules/mongodb/lib/mongodb/utils.js | 137 + .../mongodb/node_modules/bson/.travis.yml | 5 + .../mongodb/node_modules/bson/Makefile | 19 + .../mongodb/node_modules/bson/README.md | 1 + .../bson/benchmarks/benchmarks.js | 130 + .../mongodb/node_modules/bson/binding.gyp | 17 + .../node_modules/bson/browser_build/bson.js | 4814 ++++ .../bson/browser_build/package.json | 8 + .../node_modules/bson/build_browser.js | 7 + .../mongodb/node_modules/bson/builderror.log | 11 + .../mongodb/node_modules/bson/ext/Makefile | 28 + .../mongodb/node_modules/bson/ext/bson.cc | 1006 + .../mongodb/node_modules/bson/ext/bson.h | 273 + .../mongodb/node_modules/bson/ext/index.js | 30 + .../bson/ext/win32/ia32/bson.node | Bin 0 -> 113152 bytes .../node_modules/bson/ext/win32/x64/bson.node | Bin 0 -> 118272 bytes .../mongodb/node_modules/bson/ext/wscript | 39 + .../node_modules/bson/lib/bson/binary.js | 339 + .../bson/lib/bson/binary_parser.js | 385 + .../node_modules/bson/lib/bson/bson.js | 1519 ++ .../node_modules/bson/lib/bson/code.js | 25 + .../node_modules/bson/lib/bson/db_ref.js | 31 + .../node_modules/bson/lib/bson/double.js | 33 + .../bson/lib/bson/float_parser.js | 121 + .../node_modules/bson/lib/bson/index.js | 74 + .../node_modules/bson/lib/bson/long.js | 854 + .../node_modules/bson/lib/bson/max_key.js | 13 + .../node_modules/bson/lib/bson/min_key.js | 13 + .../node_modules/bson/lib/bson/objectid.js | 253 + .../node_modules/bson/lib/bson/symbol.js | 48 + .../node_modules/bson/lib/bson/timestamp.js | 853 + .../mongodb/node_modules/bson/package.json | 55 + .../bson/test/browser/browser_example.htm | 19 + .../bson/test/browser/bson_test.js | 260 + .../bson/test/browser/nodeunit.js | 2034 ++ .../node_modules/bson/test/browser/suite2.js | 13 + .../node_modules/bson/test/browser/suite3.js | 7 + .../node_modules/bson/test/browser/test.html | 30 + .../bson/test/node/bson_array_test.js | 240 + .../test/node/bson_parser_comparision_test.js | 493 + .../node_modules/bson/test/node/bson_test.js | 1694 ++ .../bson/test/node/bson_typed_array_test.js | 392 + .../bson/test/node/data/test_gs_weird_bug.png | Bin 0 -> 52184 bytes .../bson/test/node/test_full_bson.js | 315 + .../bson/test/node/to_bson_test.js | 109 + .../bson/test/node/tools/utils.js | 80 + .../mongodb/node_modules/bson/tools/gleak.js | 21 + .../bson/tools/jasmine-1.1.0/MIT.LICENSE | 20 + .../bson/tools/jasmine-1.1.0/jasmine-html.js | 190 + .../bson/tools/jasmine-1.1.0/jasmine.css | 166 + .../bson/tools/jasmine-1.1.0/jasmine.js | 2476 ++ .../tools/jasmine-1.1.0/jasmine_favicon.png | Bin 0 -> 905 bytes .../mongodb/node_modules/kerberos/README.md | 4 + .../mongodb/node_modules/kerberos/binding.gyp | 41 + .../node_modules/kerberos/builderror.log | 11 + .../mongodb/node_modules/kerberos/index.js | 6 + .../kerberos/lib/auth_processes/mongodb.js | 278 + .../node_modules/kerberos/lib/base64.c | 120 + .../node_modules/kerberos/lib/base64.h | 18 + .../node_modules/kerberos/lib/kerberos.cc | 563 + .../node_modules/kerberos/lib/kerberos.h | 47 + .../node_modules/kerberos/lib/kerberos.js | 91 + .../kerberos/lib/kerberos_context.cc | 74 + .../kerberos/lib/kerberos_context.h | 48 + .../node_modules/kerberos/lib/kerberosgss.c | 668 + .../node_modules/kerberos/lib/kerberosgss.h | 70 + .../mongodb/node_modules/kerberos/lib/sspi.js | 15 + .../node_modules/kerberos/lib/win32/base64.c | 121 + .../node_modules/kerberos/lib/win32/base64.h | 18 + .../kerberos/lib/win32/kerberos.cc | 53 + .../kerberos/lib/win32/kerberos.h | 59 + .../kerberos/lib/win32/kerberos_sspi.c | 244 + .../kerberos/lib/win32/kerberos_sspi.h | 106 + .../node_modules/kerberos/lib/win32/worker.cc | 7 + .../node_modules/kerberos/lib/win32/worker.h | 37 + .../lib/win32/wrappers/security_buffer.cc | 110 + .../lib/win32/wrappers/security_buffer.h | 46 + .../lib/win32/wrappers/security_buffer.js | 12 + .../wrappers/security_buffer_descriptor.cc | 177 + .../wrappers/security_buffer_descriptor.h | 44 + .../wrappers/security_buffer_descriptor.js | 3 + .../lib/win32/wrappers/security_context.cc | 1211 + .../lib/win32/wrappers/security_context.h | 85 + .../lib/win32/wrappers/security_context.js | 3 + .../win32/wrappers/security_credentials.cc | 468 + .../lib/win32/wrappers/security_credentials.h | 67 + .../win32/wrappers/security_credentials.js | 22 + .../node_modules/kerberos/lib/worker.cc | 7 + .../node_modules/kerberos/lib/worker.h | 39 + .../node_modules/kerberos/package.json | 34 + .../kerberos/test/kerberos_tests.js | 34 + .../kerberos/test/kerberos_win32_test.js | 19 + .../win32/security_buffer_descriptor_tests.js | 41 + .../test/win32/security_buffer_tests.js | 22 + .../test/win32/security_credentials_tests.js | 55 + .../node_modules/mongodb/package.json | 228 + .../mongoose/node_modules/mpath/.npmignore | 2 + .../mongoose/node_modules/mpath/.travis.yml | 4 + .../mongoose/node_modules/mpath/History.md | 16 + .../mongoose/node_modules/mpath/LICENSE | 22 + .../mongoose/node_modules/mpath/Makefile | 5 + .../mongoose/node_modules/mpath/README.md | 278 + .../mongoose/node_modules/mpath/index.js | 1 + .../mongoose/node_modules/mpath/lib/index.js | 183 + .../mongoose/node_modules/mpath/package.json | 38 + .../mongoose/node_modules/mpath/test/index.js | 1630 ++ .../mongoose/node_modules/mpromise/.npmignore | 2 + .../node_modules/mpromise/.travis.yml | 4 + .../mongoose/node_modules/mpromise/History.md | 24 + .../mongoose/node_modules/mpromise/LICENSE | 22 + .../mongoose/node_modules/mpromise/Makefile | 12 + .../mongoose/node_modules/mpromise/README.md | 200 + .../mongoose/node_modules/mpromise/index.js | 1 + .../node_modules/mpromise/lib/promise.js | 268 + .../mpromise/node_modules/sliced/.npmignore | 2 + .../mpromise/node_modules/sliced/.travis.yml | 4 + .../mpromise/node_modules/sliced/History.md | 23 + .../mpromise/node_modules/sliced/LICENSE | 22 + .../mpromise/node_modules/sliced/Makefile | 5 + .../mpromise/node_modules/sliced/README.md | 62 + .../mpromise/node_modules/sliced/bench.js | 95 + .../node_modules/sliced/component.json | 13 + .../mpromise/node_modules/sliced/index.js | 1 + .../node_modules/sliced/lib/sliced.js | 37 + .../mpromise/node_modules/sliced/package.json | 38 + .../node_modules/sliced/test/index.js | 80 + .../node_modules/mpromise/package.json | 43 + .../mpromise/test/promise.test.js | 201 + .../node_modules/mpromise/test/promises-A.js | 35 + .../mongoose/node_modules/ms/.npmignore | 1 + .../mongoose/node_modules/ms/Makefile | 8 + .../mongoose/node_modules/ms/README.md | 65 + .../mongoose/node_modules/ms/ms.js | 35 + .../mongoose/node_modules/ms/package.json | 19 + .../mongoose/node_modules/ms/test/index.html | 19 + .../node_modules/ms/test/support/jquery.js | 9266 +++++++ .../mongoose/node_modules/ms/test/test.js | 61 + .../mongoose/node_modules/muri/.npmignore | 2 + .../mongoose/node_modules/muri/.travis.yml | 4 + .../mongoose/node_modules/muri/History.md | 47 + .../mongoose/node_modules/muri/LICENSE | 22 + .../mongoose/node_modules/muri/Makefile | 5 + .../mongoose/node_modules/muri/README.md | 46 + .../mongoose/node_modules/muri/index.js | 1 + .../mongoose/node_modules/muri/lib/index.js | 235 + .../mongoose/node_modules/muri/package.json | 37 + .../mongoose/node_modules/muri/test/index.js | 312 + .../node_modules/regexp-clone/.npmignore | 2 + .../node_modules/regexp-clone/.travis.yml | 5 + .../node_modules/regexp-clone/History.md | 5 + .../node_modules/regexp-clone/LICENSE | 22 + .../node_modules/regexp-clone/Makefile | 5 + .../node_modules/regexp-clone/README.md | 18 + .../node_modules/regexp-clone/index.js | 20 + .../node_modules/regexp-clone/package.json | 36 + .../node_modules/regexp-clone/test/index.js | 112 + .../mongoose/node_modules/sliced/.npmignore | 2 + .../mongoose/node_modules/sliced/.travis.yml | 4 + .../mongoose/node_modules/sliced/History.md | 16 + .../mongoose/node_modules/sliced/LICENSE | 22 + .../mongoose/node_modules/sliced/Makefile | 5 + .../mongoose/node_modules/sliced/README.md | 62 + .../mongoose/node_modules/sliced/bench.js | 95 + .../mongoose/node_modules/sliced/index.js | 1 + .../node_modules/sliced/lib/sliced.js | 33 + .../mongoose/node_modules/sliced/package.json | 38 + .../node_modules/sliced/test/index.js | 80 + .../node_modules/mongoose/package.json | 69 + .../node_modules/mongoose/static.js | 18 + .../node_modules/mongoose/website.js | 60 + .../node_modules/mysql/.npmignore | 7 + .../node_modules/mysql/.travis.yml | 5 + .../node_modules/mysql/Changes.md | 221 + .../node_modules/mysql/License | 19 + .../node_modules/mysql/Makefile | 4 + .../node_modules/mysql/Readme.md | 863 + .../node_modules/mysql/benchmark/analyze.js | 96 + .../mysql/benchmark/parse-100k-blog-rows.js | 112 + .../mysql/benchmark/select-100k-blog-rows.js | 42 + .../node_modules/mysql/index.js | 20 + .../node_modules/mysql/lib/Connection.js | 186 + .../mysql/lib/ConnectionConfig.js | 115 + .../node_modules/mysql/lib/Pool.js | 156 + .../node_modules/mysql/lib/PoolConfig.js | 14 + .../node_modules/mysql/lib/protocol/Auth.js | 166 + .../mysql/lib/protocol/PacketHeader.js | 5 + .../mysql/lib/protocol/PacketWriter.js | 197 + .../node_modules/mysql/lib/protocol/Parser.js | 386 + .../mysql/lib/protocol/Protocol.js | 309 + .../mysql/lib/protocol/ResultSet.js | 7 + .../mysql/lib/protocol/SqlString.js | 139 + .../mysql/lib/protocol/constants/charsets.js | 195 + .../mysql/lib/protocol/constants/client.js | 26 + .../mysql/lib/protocol/constants/errors.js | 725 + .../lib/protocol/constants/field_flags.js | 18 + .../lib/protocol/constants/server_status.js | 39 + .../mysql/lib/protocol/constants/types.js | 29 + .../packets/ClientAuthenticationPacket.js | 52 + .../protocol/packets/ComChangeUserPacket.js | 25 + .../lib/protocol/packets/ComPingPacket.js | 12 + .../lib/protocol/packets/ComQueryPacket.js | 15 + .../lib/protocol/packets/ComQuitPacket.js | 7 + .../protocol/packets/ComStatisticsPacket.js | 12 + .../mysql/lib/protocol/packets/EmptyPacket.js | 6 + .../mysql/lib/protocol/packets/EofPacket.js | 25 + .../mysql/lib/protocol/packets/ErrorPacket.js | 35 + .../mysql/lib/protocol/packets/Field.js | 31 + .../mysql/lib/protocol/packets/FieldPacket.js | 82 + .../packets/HandshakeInitializationPacket.js | 93 + .../protocol/packets/LocalDataFilePacket.js | 8 + .../mysql/lib/protocol/packets/OkPacket.js | 41 + .../lib/protocol/packets/OldPasswordPacket.js | 15 + .../protocol/packets/ResultSetHeaderPacket.js | 25 + .../lib/protocol/packets/RowDataPacket.js | 104 + .../lib/protocol/packets/StatisticsPacket.js | 20 + .../protocol/packets/UseOldPasswordPacket.js | 14 + .../mysql/lib/protocol/packets/index.js | 4 + .../lib/protocol/sequences/ChangeUser.js | 41 + .../mysql/lib/protocol/sequences/Handshake.js | 70 + .../mysql/lib/protocol/sequences/Ping.js | 14 + .../mysql/lib/protocol/sequences/Query.js | 199 + .../mysql/lib/protocol/sequences/Quit.js | 13 + .../mysql/lib/protocol/sequences/Sequence.js | 83 + .../lib/protocol/sequences/Statistics.js | 23 + .../mysql/lib/protocol/sequences/index.js | 4 + .../mysql/node_modules/bignumber.js/LICENCE | 23 + .../mysql/node_modules/bignumber.js/README.md | 222 + .../node_modules/bignumber.js/bignumber.js | 1909 ++ .../bignumber.js/bignumber.min.js | 1 + .../node_modules/bignumber.js/doc/API.html | 1704 ++ .../node_modules/bignumber.js/package.json | 47 + .../node_modules/bignumber.js/perf/README.txt | 45 + .../perf/bignumber-vs-bigdecimal.html | 699 + .../bignumber.js/perf/bigtime-OOM.js | 366 + .../node_modules/bignumber.js/perf/bigtime.js | 335 + .../perf/lib/bigdecimal_GWT/BigDecTest.class | Bin 0 -> 1275 bytes .../perf/lib/bigdecimal_GWT/BigDecTest.java | 60 + .../perf/lib/bigdecimal_GWT/LICENCE.txt | 205 + .../perf/lib/bigdecimal_GWT/bigdecimal.js | 592 + .../perf/lib/bigdecimal_GWT/bugs.js | 53 + .../bigdecimal_ICU4J/BigDecimal-all-last.js | 5724 +++++ .../BigDecimal-all-last.min.js | 61 + .../perf/lib/bigdecimal_ICU4J/LICENCE.txt | 30 + .../node_modules/bignumber.js/test/abs.js | 1080 + .../node_modules/bignumber.js/test/base-in.js | 456 + .../bignumber.js/test/base-out.js | 10818 +++++++++ .../test/browser/bignumber-vs-number.html | 306 + .../test/browser/console-errors.html | 477 + .../bignumber.js/test/browser/every-test.html | 74 + .../bignumber.js/test/browser/quick-test.html | 12 + .../test/browser/single-test.html | 33 + .../node_modules/bignumber.js/test/ceil.js | 208 + .../node_modules/bignumber.js/test/cmp.js | 4127 ++++ .../node_modules/bignumber.js/test/config.js | 557 + .../node_modules/bignumber.js/test/div.js | 19930 ++++++++++++++++ .../bignumber.js/test/every-test.js | 39 + .../node_modules/bignumber.js/test/floor.js | 216 + .../node_modules/bignumber.js/test/minus.js | 1846 ++ .../node_modules/bignumber.js/test/mod.js | 1905 ++ .../node_modules/bignumber.js/test/neg.js | 544 + .../node_modules/bignumber.js/test/others.js | 361 + .../node_modules/bignumber.js/test/plus.js | 1969 ++ .../node_modules/bignumber.js/test/pow.js | 1535 ++ .../bignumber.js/test/quick-test.js | 1416 ++ .../node_modules/bignumber.js/test/round.js | 2380 ++ .../node_modules/bignumber.js/test/sqrt.js | 2565 ++ .../node_modules/bignumber.js/test/times.js | 2218 ++ .../bignumber.js/test/toExponential.js | 845 + .../node_modules/bignumber.js/test/toFixed.js | 1499 ++ .../bignumber.js/test/toFraction.js | 3037 +++ .../bignumber.js/test/toPrecision.js | 852 + .../bignumber.js/test/toString.js | 1104 + .../bignumber.js/test/v8-LICENCE.txt | 45 + .../node_modules/require-all/.Readme.md.un~ | Bin 0 -> 12033 bytes .../node_modules/require-all/.index.js.un~ | Bin 0 -> 12887 bytes .../mysql/node_modules/require-all/Readme.md | 16 + .../mysql/node_modules/require-all/index.js | 25 + .../node_modules/require-all/package.json | 27 + .../require-all/test/.test.js.un~ | Bin 0 -> 7066 bytes .../test/controllers/main-Controller.js | 4 + .../require-all/test/controllers/notthis.js | 1 + .../test/controllers/other-Controller.js | 2 + .../require-all/test/mydir/foo.js | 1 + .../require-all/test/mydir/hello.js | 2 + .../test/mydir/sub/.config.json.un~ | Bin 0 -> 1864 bytes .../require-all/test/mydir/sub/config.json | 4 + .../require-all/test/mydir/sub/no.2js | 1 + .../require-all/test/mydir/sub/yes.js | 1 + .../node_modules/require-all/test/test.js | 38 + .../node_modules/mysql/package.json | 42 + .../node_modules/mysql/test/FakeServer.js | 149 + .../node_modules/mysql/test/common.js | 65 + .../node_modules/mysql/test/fixtures/data.csv | 3 + .../connection/test-bad-credentials.js | 27 + .../connection/test-bulk-insert.js | 37 + .../test-callback-errors-are-not-caught.js | 20 + .../test-change-user-fatal-error.js | 24 + .../connection/test-change-user.js | 36 + ...t-connection-config-flags-affected-rows.js | 39 + .../test-connection-config-flags.js | 53 + .../connection/test-connection-destroy.js | 9 + .../connection/test-custom-query-format.js | 18 + .../connection/test-custom-typecast.js | 46 + .../test-destroy-while-streaming-rows.js | 45 + .../connection/test-double-connect.js | 24 + .../connection/test-drain-event.js | 20 + .../connection/test-end-callback.js | 27 + .../integration/connection/test-escape-id.js | 7 + .../connection/test-exception-safety.js | 66 + ...fatal-auth-error-going-to-all-callbacks.js | 25 + .../test-fatal-auth-error-without-handlers.js | 20 + ...al-network-error-going-to-all-callbacks.js | 21 + ...st-fatal-network-error-without-handlers.js | 17 + ...test-fatal-query-error-without-callback.js | 19 + .../connection/test-host-denied-error.js | 26 + .../connection/test-implicit-connect.js | 16 + .../connection/test-insert-results.js | 26 + .../connection/test-load-data-infile.js | 55 + ...long-stack-traces-for-connection-errors.js | 12 + .../connection/test-long-stack-traces.js | 16 + .../test-multiple-statements-streaming.js | 55 + .../test-multiple-statements-with-error.js | 36 + .../connection/test-multiple-statements.js | 31 + .../connection/test-nested-tables-query.js | 48 + .../test-normal-error-without-handler.js | 19 + ...est-normal-query-error-without-callback.js | 19 + .../connection/test-old-password.js | 35 + .../test/integration/connection/test-ping.js | 15 + .../test-procedure-with-multiple-selects.js | 40 + .../test-procedure-with-single-select.js | 33 + .../connection/test-query-after-destroy.js | 17 + .../test-query-after-end-without-callback.js | 23 + .../connection/test-query-after-end.js | 23 + .../connection/test-query-dates-as-strings.js | 42 + .../connection/test-query-escape-id.js | 31 + .../connection/test-query-escaping.js | 36 + .../integration/connection/test-select-1.js | 21 + .../connection/test-select-empty-string.js | 16 + .../test-send-and-receive-large-packets.js | 81 + .../test-server-timeout-disconnect.js | 24 + .../test-server-unexpected-disconnect.js | 36 + .../integration/connection/test-statistics.js | 26 + .../test-streaming-rows-quick-pause-resume.js | 46 + .../connection/test-streaming-rows.js | 65 + .../integration/connection/test-timezones.js | 67 + .../connection/test-transaction-commit.js | 41 + .../connection/test-transaction-rollback.js | 41 + .../connection/test-type-cast-null-fields.js | 34 + .../connection/test-type-cast-query.js | 37 + .../connection/test-type-casting.js | 118 + .../connection/test-unix-domain-socket.js | 32 + .../connection/test-zerofill-results.js | 39 + .../integration/pool/test-connection-limit.js | 26 + .../pool/test-destroy-connection.js | 17 + .../test/integration/pool/test-end-empty.js | 13 + .../integration/pool/test-get-connection.js | 10 + .../node_modules/mysql/test/run.js | 7 + .../mysql/test/unit/protocol/test-Parser.js | 125 + .../test/unit/protocol/test-SqlString.js | 132 + .../mysql/test/unit/test-ConnectionConfig.js | 29 + .../mysql/tool/generate-error-constants.js | 28 + .../node_modules/nodemon/.npmignore | 1 + .../node_modules/nodemon/README.md | 135 + .../node_modules/nodemon/faq.md | 38 + .../node_modules/nodemon/nodemon.js | 829 + .../nodemon/nodemonignore.example | 11 + .../node_modules/nodemon/package.json | 44 + nodejs-mysql-tutorial/package.json | 12 + nodejs-mysql-tutorial/package.json.bak | 12 + .../public/stylesheets/style.css | 8 + nodejs-mysql-tutorial/routes/index.js | 8 + nodejs-mysql-tutorial/routes/user.js | 13 + .../views/articles/articles.jade | 11 + .../views/articles/edit.jade | 12 + .../views/articles/index.jade.bak | 11 + nodejs-mysql-tutorial/views/articles/new.jade | 9 + .../views/articles/show.jade | 29 + nodejs-mysql-tutorial/views/index.jade | 6 + nodejs-mysql-tutorial/views/layout.jade | 7 + nodejs-mysql-tutorial/views/new.jade | 9 + nodejs-mysql-tutorial/views/users.jade | 11 + 1734 files changed, 296399 insertions(+) create mode 100644 Nodejs-redis-tutorial/app.js create mode 100644 Nodejs-redis-tutorial/package.json create mode 100644 Nodejs-redis-tutorial/public/stylesheets/style.css create mode 100644 Nodejs-redis-tutorial/routes/index.js create mode 100644 Nodejs-redis-tutorial/routes/user.js create mode 100644 Nodejs-redis-tutorial/views/index.jade create mode 100644 Nodejs-redis-tutorial/views/layout.jade create mode 100644 nodejs-mysql-tutorial/app.js create mode 100644 nodejs-mysql-tutorial/app.js.bak create mode 100644 nodejs-mysql-tutorial/node_modules/.bin/express create mode 100644 nodejs-mysql-tutorial/node_modules/.bin/express.cmd create mode 100644 nodejs-mysql-tutorial/node_modules/.bin/jade create mode 100644 nodejs-mysql-tutorial/node_modules/.bin/jade.cmd create mode 100644 nodejs-mysql-tutorial/node_modules/.bin/nodemon create mode 100644 nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd create mode 100644 nodejs-mysql-tutorial/node_modules/express/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/express/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/bin/express create mode 100644 nodejs-mysql-tutorial/node_modules/express/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/application.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/express.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/middleware.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/request.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/response.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/router/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/router/route.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/view.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/favicon.ico create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_add.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_code.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_error.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_find.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_go.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_green.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_key.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_link.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_red.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_save.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_word.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_world.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/binaryfile.tar.gz create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types create mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/express/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/Readme_zh-cn.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/bin/jade create mode 100644 nodejs-mysql-tutorial/node_modules/jade/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/jade.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/jade.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/compiler.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/doctypes.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/filters-client.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/filters.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/jade.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/logo.png create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file1.ext1 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file2.ext2 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file3.ext3 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_subdir1/root1_dir1_subdir1_file1.ext1 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file1.ext1 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file2.ext2 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file1.ext1 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file2.ext2 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file3.ext3 create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/bin/uglifyjs create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/arrays.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/blocks.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/conditionals.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/dead-code.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/debugger.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/drop-unused.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-105.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-12.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-22.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-44.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-59.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/labels.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/loops.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/properties.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/sequences.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/switch.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/jade/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/jade/runtime.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/CONTRIBUTING.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/doc-methods.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/bin/express create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/client.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/application.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/express.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/middleware.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/request.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/response.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/router/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/router/route.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/view.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/lib/commander.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/cache.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/connect.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/compress.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/csrf.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/directory.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/favicon.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/json.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/limit.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/logger.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/multipart.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/query.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/responseTime.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/memory.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/session.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/store.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/static.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/staticCache.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/timeout.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/vhost.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/patch.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/proto.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/directory.html create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/favicon.ico create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_add.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_code.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_error.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_find.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_go.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_green.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_key.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_link.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_red.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_save.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_word.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_world.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/mocha.css create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/mocha.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/qs.css create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/qs.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/parse.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/stringify.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/test/mocha.opts create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/test/parse.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/test/serialize.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/debug.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/app.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/browser.html create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/data/test_gs_weird_bug.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/binding.gyp create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/builderror.log create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/auth_processes/mongodb.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.c create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/lib/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/History.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/LICENSE create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/bench.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/lib/sliced.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/test/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/static.js create mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/website.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/.travis.yml create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/Changes.md create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/License create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/Makefile create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/benchmark/analyze.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/benchmark/parse-100k-blog-rows.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/benchmark/select-100k-blog-rows.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/Connection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/ConnectionConfig.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/Pool.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/PoolConfig.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/Auth.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/PacketHeader.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/PacketWriter.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/Parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/Protocol.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/ResultSet.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/SqlString.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/charsets.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/client.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/errors.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/field_flags.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/server_status.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/types.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComPingPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComQueryPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComQuitPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/EmptyPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/EofPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ErrorPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/Field.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/FieldPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/OkPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/RowDataPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/StatisticsPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/ChangeUser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Handshake.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Ping.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Query.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Quit.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Sequence.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Statistics.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/LICENCE create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.java create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/LICENCE.txt create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/bigdecimal.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/bugs.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.Readme.md.un~ create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.index.js.un~ create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/.test.js.un~ create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/package.json create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/common.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/run.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js create mode 100644 nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js create mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/.npmignore create mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/README.md create mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/faq.md create mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js create mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example create mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/package.json create mode 100644 nodejs-mysql-tutorial/package.json create mode 100644 nodejs-mysql-tutorial/package.json.bak create mode 100644 nodejs-mysql-tutorial/public/stylesheets/style.css create mode 100644 nodejs-mysql-tutorial/routes/index.js create mode 100644 nodejs-mysql-tutorial/routes/user.js create mode 100644 nodejs-mysql-tutorial/views/articles/articles.jade create mode 100644 nodejs-mysql-tutorial/views/articles/edit.jade create mode 100644 nodejs-mysql-tutorial/views/articles/index.jade.bak create mode 100644 nodejs-mysql-tutorial/views/articles/new.jade create mode 100644 nodejs-mysql-tutorial/views/articles/show.jade create mode 100644 nodejs-mysql-tutorial/views/index.jade create mode 100644 nodejs-mysql-tutorial/views/layout.jade create mode 100644 nodejs-mysql-tutorial/views/new.jade create mode 100644 nodejs-mysql-tutorial/views/users.jade diff --git a/Nodejs-redis-tutorial/app.js b/Nodejs-redis-tutorial/app.js new file mode 100644 index 0000000..d519ffa --- /dev/null +++ b/Nodejs-redis-tutorial/app.js @@ -0,0 +1,67 @@ + +/** + * Module dependencies. + */ + +var express = require('express'); +var routes = require('./routes'); +var user = require('./routes/user'); +var http = require('http'); +var path = require('path'); +var redis = require("redis"), + client = redis.createClient(); +var app = express(); + +// all environments +app.set('port', process.env.PORT || 3000); +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); +app.use(express.favicon()); +app.use(express.logger('dev')); +app.use(express.json()); +app.use(express.urlencoded()); +app.use(express.methodOverride()); +app.use(app.router); +app.use(express.static(path.join(__dirname, 'public'))); + +// development only +if ('development' == app.get('env')) { + app.use(express.errorHandler()); +} + +app.get('/', routes.index); + +/* +* Error handling if we are unable to connect to redis +*/ + +/* +* Post request handler for add new key +*/ +app.post('/new_key', function(req, res){ + /* + * Error handling if we are unable to connect to redis + */ + client.on("error", function (err) { + res.send("Error occurred"); + }); + client.set(req.body.key, req.body.value, redis.print); + + res.send("Record has been added successfully"); +}); +/* +* Post request handler for get new key +*/ +app.post('/get_key', function(req, res){ + client.on("error", function (err) { + res.send("No such key exist"); + }); + client.get(req.body.key, function(err, reply) { + res.send("The key value = "+reply.toString()); + }); + +}); + +http.createServer(app).listen(app.get('port'), function(){ + console.log('Express server listening on port ' + app.get('port')); +}); diff --git a/Nodejs-redis-tutorial/package.json b/Nodejs-redis-tutorial/package.json new file mode 100644 index 0000000..faa1661 --- /dev/null +++ b/Nodejs-redis-tutorial/package.json @@ -0,0 +1,12 @@ +{ + "name": "application-name", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "node app.js" + }, + "dependencies": { + "express": "3.4.4", + "jade": "*" + } +} \ No newline at end of file diff --git a/Nodejs-redis-tutorial/public/stylesheets/style.css b/Nodejs-redis-tutorial/public/stylesheets/style.css new file mode 100644 index 0000000..30e047d --- /dev/null +++ b/Nodejs-redis-tutorial/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} \ No newline at end of file diff --git a/Nodejs-redis-tutorial/routes/index.js b/Nodejs-redis-tutorial/routes/index.js new file mode 100644 index 0000000..f296005 --- /dev/null +++ b/Nodejs-redis-tutorial/routes/index.js @@ -0,0 +1,8 @@ + +/* + * GET home page. + */ + +exports.index = function(req, res){ + res.render('index', { title: 'Express' }); +}; \ No newline at end of file diff --git a/Nodejs-redis-tutorial/routes/user.js b/Nodejs-redis-tutorial/routes/user.js new file mode 100644 index 0000000..d5b34aa --- /dev/null +++ b/Nodejs-redis-tutorial/routes/user.js @@ -0,0 +1,8 @@ + +/* + * GET users listing. + */ + +exports.list = function(req, res){ + res.send("respond with a resource"); +}; \ No newline at end of file diff --git a/Nodejs-redis-tutorial/views/index.jade b/Nodejs-redis-tutorial/views/index.jade new file mode 100644 index 0000000..99e3219 --- /dev/null +++ b/Nodejs-redis-tutorial/views/index.jade @@ -0,0 +1,28 @@ +extends layout + +block content + h1 string operation using redis +
+ h3 Add new String key (Note : key must be unique) + + form(method="post" , action="/new_key") + p key: + input#title(type="text" , name="key") + p value: + input#body(type="text" , name="value") + p: button(type="submit") Add New Key/value to redis + + h3 update String value (Note : key must Exist, If not a new record will be created) + form(method="POST" , action="/new_key") + p key: + input#title(type="text" , name="key") + p value: + input#body(type="text" , name="value") + p: button(type="submit") Edit value + + h3 Enter key to see what the value stored + form(method="POST" , action="/get_key") + p key: + input#title(type="text" , name="key") + p: button(type="submit") Search Contact + \ No newline at end of file diff --git a/Nodejs-redis-tutorial/views/layout.jade b/Nodejs-redis-tutorial/views/layout.jade new file mode 100644 index 0000000..1b7b305 --- /dev/null +++ b/Nodejs-redis-tutorial/views/layout.jade @@ -0,0 +1,7 @@ +doctype 5 +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content \ No newline at end of file diff --git a/nodejs-mysql-tutorial/app.js b/nodejs-mysql-tutorial/app.js new file mode 100644 index 0000000..f713ac3 --- /dev/null +++ b/nodejs-mysql-tutorial/app.js @@ -0,0 +1,51 @@ + +//module dependencies +var express = require('express') + , http = require('http') + , mysql = require('mysql') + , path = require('path'); +var app = express(); +// all environments +app.set('port', process.env.PORT || 3002); +app.set('views', __dirname + '/views'); +app.set('view engine', 'jade'); +app.use(express.favicon()); +app.use(express.logger('dev')); +app.use(express.bodyParser()); +app.use(express.methodOverride()); +app.use(app.router); +app.use(express.static(path.join(__dirname, 'public'))); + +app.get('/', function( req, res) { + res.render('index'); +}); +//connect to mysql database +var connection = mysql.createConnection({ + host : 'localhost', + user : 'root', + password : 'yourpasswordgoeshere', + database : 'nodejsmysql' +}); +connection.connect(); +app.get('/users', function (req, res) { + connection.query('select * from nodejs', function(err, docs) { + res.render('users', {users: docs}); + }); +}); +// Add a new User +app.get("/users/new", function (req, res) { + res.render("new"); +}); +// Save the Newly created User +app.post("/users", function (req, res) { + var fname=req.body.fname, + lname=req.body.lname; + connection.query('INSERT INTO nodejs (fname, lname) VALUES (? , ?);', [fname, lname], function(err, docs) { + if (err) res.json(err); + + res.redirect('users'); + }); +}); +http.createServer(app).listen(app.get('port'), function(){ + console.log('Express server listening on port ' + app.get('port')); +}); diff --git a/nodejs-mysql-tutorial/app.js.bak b/nodejs-mysql-tutorial/app.js.bak new file mode 100644 index 0000000..a286d6d --- /dev/null +++ b/nodejs-mysql-tutorial/app.js.bak @@ -0,0 +1,51 @@ + +//module dependencies +var express = require('express') + , http = require('http') + , mysql = require('mysql') + , path = require('path'); +var app = express(); +// all environments +app.set('port', process.env.PORT || 3002); +app.set('views', __dirname + '/views'); +app.set('view engine', 'jade'); +app.use(express.favicon()); +app.use(express.logger('dev')); +app.use(express.bodyParser()); +app.use(express.methodOverride()); +app.use(app.router); +app.use(express.static(path.join(__dirname, 'public'))); + +app.get('/', function( req, res) { + res.render('index'); +}); +//connect to mysql database +var connection = mysql.createConnection({ + host : 'localhost', + user : 'root', + password : 'root', + database : 'nodejsmysql' +}); +connection.connect(); +app.get('/users', function (req, res) { + connection.query('select * from nodejs', function(err, docs) { + res.render('users', {users: docs}); + }); +}); +// Add a new User +app.get("/users/new", function (req, res) { + res.render("new"); +}); +// Save the Newly created User +app.post("/users", function (req, res) { + var fname=req.body.fname, + lname=req.body.lname; + connection.query('INSERT INTO nodejs (fname, lname) VALUES (? , ?);', [fname, lname], function(err, docs) { + if (err) res.json(err); + + res.redirect('users'); + }); +}); +http.createServer(app).listen(app.get('port'), function(){ + console.log('Express server listening on port ' + app.get('port')); +}); diff --git a/nodejs-mysql-tutorial/node_modules/.bin/express b/nodejs-mysql-tutorial/node_modules/.bin/express new file mode 100644 index 0000000..cad5a1e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/.bin/express @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=`dirname "$0"` + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../express/bin/express" "$@" + ret=$? +else + node "$basedir/../express/bin/express" "$@" + ret=$? +fi +exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/.bin/express.cmd b/nodejs-mysql-tutorial/node_modules/.bin/express.cmd new file mode 100644 index 0000000..1d2f509 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/.bin/express.cmd @@ -0,0 +1,5 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\express\bin\express" %* +) ELSE ( + node "%~dp0\..\express\bin\express" %* +) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/.bin/jade b/nodejs-mysql-tutorial/node_modules/.bin/jade new file mode 100644 index 0000000..7de066b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/.bin/jade @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=`dirname "$0"` + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../jade/bin/jade" "$@" + ret=$? +else + node "$basedir/../jade/bin/jade" "$@" + ret=$? +fi +exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/.bin/jade.cmd b/nodejs-mysql-tutorial/node_modules/.bin/jade.cmd new file mode 100644 index 0000000..cb2dede --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/.bin/jade.cmd @@ -0,0 +1,5 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\jade\bin\jade" %* +) ELSE ( + node "%~dp0\..\jade\bin\jade" %* +) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/.bin/nodemon b/nodejs-mysql-tutorial/node_modules/.bin/nodemon new file mode 100644 index 0000000..d77f0da --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/.bin/nodemon @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=`dirname "$0"` + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../nodemon/nodemon.js" "$@" + ret=$? +else + node "$basedir/../nodemon/nodemon.js" "$@" + ret=$? +fi +exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd b/nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd new file mode 100644 index 0000000..2cd8132 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd @@ -0,0 +1,5 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\nodemon\nodemon.js" %* +) ELSE ( + node "%~dp0\..\nodemon\nodemon.js" %* +) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/.npmignore b/nodejs-mysql-tutorial/node_modules/express/.npmignore new file mode 100644 index 0000000..caf574d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/.npmignore @@ -0,0 +1,9 @@ +.git* +docs/ +examples/ +support/ +test/ +testing.js +.DS_Store +coverage.html +lib-cov diff --git a/nodejs-mysql-tutorial/node_modules/express/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/express/History.md b/nodejs-mysql-tutorial/node_modules/express/History.md new file mode 100644 index 0000000..e97e7e9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/History.md @@ -0,0 +1,1147 @@ + +3.2.5 / 2013-05-21 +================== + + * update connect + * update node-cookie + * add: throw a meaningful error when there is no default engine + * change generation of ETags with res.send() to GET requests only. Closes #1619 + +3.2.4 / 2013-05-09 +================== + + * fix `req.subdomains` when no Host is present + * fix `req.host` when no Host is present, return undefined + +3.2.3 / 2013-05-07 +================== + + * update connect / qs + +3.2.2 / 2013-05-03 +================== + + * update qs + +3.2.1 / 2013-04-29 +================== + + * add app.VERB() paths array deprecation warning + * update connect + * update qs and remove all ~ semver crap + * fix: accept number as value of Signed Cookie + +3.2.0 / 2013-04-15 +================== + + * add "view" constructor setting to override view behaviour + * add req.acceptsEncoding(name) + * add req.acceptedEncodings + * revert cookie signature change causing session race conditions + * fix sorting of Accept values of the same quality + +3.1.2 / 2013-04-12 +================== + + * add support for custom Accept parameters + * update cookie-signature + +3.1.1 / 2013-04-01 +================== + + * add X-Forwarded-Host support to `req.host` + * fix relative redirects + * update mkdirp + * update buffer-crc32 + * remove legacy app.configure() method from app template. + +3.1.0 / 2013-01-25 +================== + + * add support for leading "." in "view engine" setting + * add array support to `res.set()` + * add node 0.8.x to travis.yml + * add "subdomain offset" setting for tweaking `req.subdomains` + * add `res.location(url)` implementing `res.redirect()`-like setting of Location + * use app.get() for x-powered-by setting for inheritance + * fix colons in passwords for `req.auth` + +3.0.6 / 2013-01-04 +================== + + * add http verb methods to Router + * update connect + * fix mangling of the `res.cookie()` options object + * fix jsonp whitespace escape. Closes #1132 + +3.0.5 / 2012-12-19 +================== + + * add throwing when a non-function is passed to a route + * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses + * revert "add 'etag' option" + +3.0.4 / 2012-12-05 +================== + + * add 'etag' option to disable `res.send()` Etags + * add escaping of urls in text/plain in `res.redirect()` + for old browsers interpreting as html + * change crc32 module for a more liberal license + * update connect + +3.0.3 / 2012-11-13 +================== + + * update connect + * update cookie module + * fix cookie max-age + +3.0.2 / 2012-11-08 +================== + + * add OPTIONS to cors example. Closes #1398 + * fix route chaining regression. Closes #1397 + +3.0.1 / 2012-11-01 +================== + + * update connect + +3.0.0 / 2012-10-23 +================== + + * add `make clean` + * add "Basic" check to req.auth + * add `req.auth` test coverage + * add cb && cb(payload) to `res.jsonp()`. Closes #1374 + * add backwards compat for `res.redirect()` status. Closes #1336 + * add support for `res.json()` to retain previously defined Content-Types. Closes #1349 + * update connect + * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382 + * remove non-primitive string support for `res.send()` + * fix view-locals example. Closes #1370 + * fix route-separation example + +3.0.0rc5 / 2012-09-18 +================== + + * update connect + * add redis search example + * add static-files example + * add "x-powered-by" setting (`app.disable('x-powered-by')`) + * add "application/octet-stream" redirect Accept test case. Closes #1317 + +3.0.0rc4 / 2012-08-30 +================== + + * add `res.jsonp()`. Closes #1307 + * add "verbose errors" option to error-pages example + * add another route example to express(1) so people are not so confused + * add redis online user activity tracking example + * update connect dep + * fix etag quoting. Closes #1310 + * fix error-pages 404 status + * fix jsonp callback char restrictions + * remove old OPTIONS default response + +3.0.0rc3 / 2012-08-13 +================== + + * update connect dep + * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds] + * fix `res.render()` clobbering of "locals" + +3.0.0rc2 / 2012-08-03 +================== + + * add CORS example + * update connect dep + * deprecate `.createServer()` & remove old stale examples + * fix: escape `res.redirect()` link + * fix vhost example + +3.0.0rc1 / 2012-07-24 +================== + + * add more examples to view-locals + * add scheme-relative redirects (`res.redirect("//foo.com")`) support + * update cookie dep + * update connect dep + * update send dep + * fix `express(1)` -h flag, use -H for hogan. Closes #1245 + * fix `res.sendfile()` socket error handling regression + +3.0.0beta7 / 2012-07-16 +================== + + * update connect dep for `send()` root normalization regression + +3.0.0beta6 / 2012-07-13 +================== + + * add `err.view` property for view errors. Closes #1226 + * add "jsonp callback name" setting + * add support for "/foo/:bar*" non-greedy matches + * change `res.sendfile()` to use `send()` module + * change `res.send` to use "response-send" module + * remove `app.locals.use` and `res.locals.use`, use regular middleware + +3.0.0beta5 / 2012-07-03 +================== + + * add "make check" support + * add route-map example + * add `res.json(obj, status)` support back for BC + * add "methods" dep, remove internal methods module + * update connect dep + * update auth example to utilize cores pbkdf2 + * updated tests to use "supertest" + +3.0.0beta4 / 2012-06-25 +================== + + * Added `req.auth` + * Added `req.range(size)` + * Added `res.links(obj)` + * Added `res.send(body, status)` support back for backwards compat + * Added `.default()` support to `res.format()` + * Added 2xx / 304 check to `req.fresh` + * Revert "Added + support to the router" + * Fixed `res.send()` freshness check, respect res.statusCode + +3.0.0beta3 / 2012-06-15 +================== + + * Added hogan `--hjs` to express(1) [nullfirm] + * Added another example to content-negotiation + * Added `fresh` dep + * Changed: `res.send()` always checks freshness + * Fixed: expose connects mime module. Cloases #1165 + +3.0.0beta2 / 2012-06-06 +================== + + * Added `+` support to the router + * Added `req.host` + * Changed `req.param()` to check route first + * Update connect dep + +3.0.0beta1 / 2012-06-01 +================== + + * Added `res.format()` callback to override default 406 behaviour + * Fixed `res.redirect()` 406. Closes #1154 + +3.0.0alpha5 / 2012-05-30 +================== + + * Added `req.ip` + * Added `{ signed: true }` option to `res.cookie()` + * Removed `res.signedCookie()` + * Changed: dont reverse `req.ips` + * Fixed "trust proxy" setting check for `req.ips` + +3.0.0alpha4 / 2012-05-09 +================== + + * Added: allow `[]` in jsonp callback. Closes #1128 + * Added `PORT` env var support in generated template. Closes #1118 [benatkin] + * Updated: connect 2.2.2 + +3.0.0alpha3 / 2012-05-04 +================== + + * Added public `app.routes`. Closes #887 + * Added _view-locals_ example + * Added _mvc_ example + * Added `res.locals.use()`. Closes #1120 + * Added conditional-GET support to `res.send()` + * Added: coerce `res.set()` values to strings + * Changed: moved `static()` in generated apps below router + * Changed: `res.send()` only set ETag when not previously set + * Changed connect 2.2.1 dep + * Changed: `make test` now runs unit / acceptance tests + * Fixed req/res proto inheritance + +3.0.0alpha2 / 2012-04-26 +================== + + * Added `make benchmark` back + * Added `res.send()` support for `String` objects + * Added client-side data exposing example + * Added `res.header()` and `req.header()` aliases for BC + * Added `express.createServer()` for BC + * Perf: memoize parsed urls + * Perf: connect 2.2.0 dep + * Changed: make `expressInit()` middleware self-aware + * Fixed: use app.get() for all core settings + * Fixed redis session example + * Fixed session example. Closes #1105 + * Fixed generated express dep. Closes #1078 + +3.0.0alpha1 / 2012-04-15 +================== + + * Added `app.locals.use(callback)` + * Added `app.locals` object + * Added `app.locals(obj)` + * Added `res.locals` object + * Added `res.locals(obj)` + * Added `res.format()` for content-negotiation + * Added `app.engine()` + * Added `res.cookie()` JSON cookie support + * Added "trust proxy" setting + * Added `req.subdomains` + * Added `req.protocol` + * Added `req.secure` + * Added `req.path` + * Added `req.ips` + * Added `req.fresh` + * Added `req.stale` + * Added comma-delmited / array support for `req.accepts()` + * Added debug instrumentation + * Added `res.set(obj)` + * Added `res.set(field, value)` + * Added `res.get(field)` + * Added `app.get(setting)`. Closes #842 + * Added `req.acceptsLanguage()` + * Added `req.acceptsCharset()` + * Added `req.accepted` + * Added `req.acceptedLanguages` + * Added `req.acceptedCharsets` + * Added "json replacer" setting + * Added "json spaces" setting + * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92 + * Added `--less` support to express(1) + * Added `express.response` prototype + * Added `express.request` prototype + * Added `express.application` prototype + * Added `app.path()` + * Added `app.render()` + * Added `res.type()` to replace `res.contentType()` + * Changed: `res.redirect()` to add relative support + * Changed: enable "jsonp callback" by default + * Changed: renamed "case sensitive routes" to "case sensitive routing" + * Rewrite of all tests with mocha + * Removed "root" setting + * Removed `res.redirect('home')` support + * Removed `req.notify()` + * Removed `app.register()` + * Removed `app.redirect()` + * Removed `app.is()` + * Removed `app.helpers()` + * Removed `app.dynamicHelpers()` + * Fixed `res.sendfile()` with non-GET. Closes #723 + * Fixed express(1) public dir for windows. Closes #866 + +2.5.9/ 2012-04-02 +================== + + * Added support for PURGE request method [pbuyle] + * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki] + +2.5.8 / 2012-02-08 +================== + + * Update mkdirp dep. Closes #991 + +2.5.7 / 2012-02-06 +================== + + * Fixed `app.all` duplicate DELETE requests [mscdex] + +2.5.6 / 2012-01-13 +================== + + * Updated hamljs dev dep. Closes #953 + +2.5.5 / 2012-01-08 +================== + + * Fixed: set `filename` on cached templates [matthewleon] + +2.5.4 / 2012-01-02 +================== + + * Fixed `express(1)` eol on 0.4.x. Closes #947 + +2.5.3 / 2011-12-30 +================== + + * Fixed `req.is()` when a charset is present + +2.5.2 / 2011-12-10 +================== + + * Fixed: express(1) LF -> CRLF for windows + +2.5.1 / 2011-11-17 +================== + + * Changed: updated connect to 1.8.x + * Removed sass.js support from express(1) + +2.5.0 / 2011-10-24 +================== + + * Added ./routes dir for generated app by default + * Added npm install reminder to express(1) app gen + * Added 0.5.x support + * Removed `make test-cov` since it wont work with node 0.5.x + * Fixed express(1) public dir for windows. Closes #866 + +2.4.7 / 2011-10-05 +================== + + * Added mkdirp to express(1). Closes #795 + * Added simple _json-config_ example + * Added shorthand for the parsed request's pathname via `req.path` + * Changed connect dep to 1.7.x to fix npm issue... + * Fixed `res.redirect()` __HEAD__ support. [reported by xerox] + * Fixed `req.flash()`, only escape args + * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie] + +2.4.6 / 2011-08-22 +================== + + * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode] + +2.4.5 / 2011-08-19 +================== + + * Added support for routes to handle errors. Closes #809 + * Added `app.routes.all()`. Closes #803 + * Added "basepath" setting to work in conjunction with reverse proxies etc. + * Refactored `Route` to use a single array of callbacks + * Added support for multiple callbacks for `app.param()`. Closes #801 +Closes #805 + * Changed: removed .call(self) for route callbacks + * Dependency: `qs >= 0.3.1` + * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808 + +2.4.4 / 2011-08-05 +================== + + * Fixed `res.header()` intention of a set, even when `undefined` + * Fixed `*`, value no longer required + * Fixed `res.send(204)` support. Closes #771 + +2.4.3 / 2011-07-14 +================== + + * Added docs for `status` option special-case. Closes #739 + * Fixed `options.filename`, exposing the view path to template engines + +2.4.2. / 2011-07-06 +================== + + * Revert "removed jsonp stripping" for XSS + +2.4.1 / 2011-07-06 +================== + + * Added `res.json()` JSONP support. Closes #737 + * Added _extending-templates_ example. Closes #730 + * Added "strict routing" setting for trailing slashes + * Added support for multiple envs in `app.configure()` calls. Closes #735 + * Changed: `res.send()` using `res.json()` + * Changed: when cookie `path === null` don't default it + * Changed; default cookie path to "home" setting. Closes #731 + * Removed _pids/logs_ creation from express(1) + +2.4.0 / 2011-06-28 +================== + + * Added chainable `res.status(code)` + * Added `res.json()`, an explicit version of `res.send(obj)` + * Added simple web-service example + +2.3.12 / 2011-06-22 +================== + + * \#express is now on freenode! come join! + * Added `req.get(field, param)` + * Added links to Japanese documentation, thanks @hideyukisaito! + * Added; the `express(1)` generated app outputs the env + * Added `content-negotiation` example + * Dependency: connect >= 1.5.1 < 2.0.0 + * Fixed view layout bug. Closes #720 + * Fixed; ignore body on 304. Closes #701 + +2.3.11 / 2011-06-04 +================== + + * Added `npm test` + * Removed generation of dummy test file from `express(1)` + * Fixed; `express(1)` adds express as a dep + * Fixed; prune on `prepublish` + +2.3.10 / 2011-05-27 +================== + + * Added `req.route`, exposing the current route + * Added _package.json_ generation support to `express(1)` + * Fixed call to `app.param()` function for optional params. Closes #682 + +2.3.9 / 2011-05-25 +================== + + * Fixed bug-ish with `../' in `res.partial()` calls + +2.3.8 / 2011-05-24 +================== + + * Fixed `app.options()` + +2.3.7 / 2011-05-23 +================== + + * Added route `Collection`, ex: `app.get('/user/:id').remove();` + * Added support for `app.param(fn)` to define param logic + * Removed `app.param()` support for callback with return value + * Removed module.parent check from express(1) generated app. Closes #670 + * Refactored router. Closes #639 + +2.3.6 / 2011-05-20 +================== + + * Changed; using devDependencies instead of git submodules + * Fixed redis session example + * Fixed markdown example + * Fixed view caching, should not be enabled in development + +2.3.5 / 2011-05-20 +================== + + * Added export `.view` as alias for `.View` + +2.3.4 / 2011-05-08 +================== + + * Added `./examples/say` + * Fixed `res.sendfile()` bug preventing the transfer of files with spaces + +2.3.3 / 2011-05-03 +================== + + * Added "case sensitive routes" option. + * Changed; split methods supported per rfc [slaskis] + * Fixed route-specific middleware when using the same callback function several times + +2.3.2 / 2011-04-27 +================== + + * Fixed view hints + +2.3.1 / 2011-04-26 +================== + + * Added `app.match()` as `app.match.all()` + * Added `app.lookup()` as `app.lookup.all()` + * Added `app.remove()` for `app.remove.all()` + * Added `app.remove.VERB()` + * Fixed template caching collision issue. Closes #644 + * Moved router over from connect and started refactor + +2.3.0 / 2011-04-25 +================== + + * Added options support to `res.clearCookie()` + * Added `res.helpers()` as alias of `res.locals()` + * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0` + * Changed; auto set Content-Type in res.attachement [Aaron Heckmann] + * Renamed "cache views" to "view cache". Closes #628 + * Fixed caching of views when using several apps. Closes #637 + * Fixed gotcha invoking `app.param()` callbacks once per route middleware. +Closes #638 + * Fixed partial lookup precedence. Closes #631 +Shaw] + +2.2.2 / 2011-04-12 +================== + + * Added second callback support for `res.download()` connection errors + * Fixed `filename` option passing to template engine + +2.2.1 / 2011-04-04 +================== + + * Added `layout(path)` helper to change the layout within a view. Closes #610 + * Fixed `partial()` collection object support. + Previously only anything with `.length` would work. + When `.length` is present one must still be aware of holes, + however now `{ collection: {foo: 'bar'}}` is valid, exposes + `keyInCollection` and `keysInCollection`. + + * Performance improved with better view caching + * Removed `request` and `response` locals + * Changed; errorHandler page title is now `Express` instead of `Connect` + +2.2.0 / 2011-03-30 +================== + + * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606 + * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606 + * Added `app.VERB(path)` as alias of `app.lookup.VERB()`. + * Dependency `connect >= 1.2.0` + +2.1.1 / 2011-03-29 +================== + + * Added; expose `err.view` object when failing to locate a view + * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann] + * Fixed; `res.send(undefined)` responds with 204 [aheckmann] + +2.1.0 / 2011-03-24 +================== + + * Added `/_?` partial lookup support. Closes #447 + * Added `request`, `response`, and `app` local variables + * Added `settings` local variable, containing the app's settings + * Added `req.flash()` exception if `req.session` is not available + * Added `res.send(bool)` support (json response) + * Fixed stylus example for latest version + * Fixed; wrap try/catch around `res.render()` + +2.0.0 / 2011-03-17 +================== + + * Fixed up index view path alternative. + * Changed; `res.locals()` without object returns the locals + +2.0.0rc3 / 2011-03-17 +================== + + * Added `res.locals(obj)` to compliment `res.local(key, val)` + * Added `res.partial()` callback support + * Fixed recursive error reporting issue in `res.render()` + +2.0.0rc2 / 2011-03-17 +================== + + * Changed; `partial()` "locals" are now optional + * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01] + * Fixed .filename view engine option [reported by drudge] + * Fixed blog example + * Fixed `{req,res}.app` reference when mounting [Ben Weaver] + +2.0.0rc / 2011-03-14 +================== + + * Fixed; expose `HTTPSServer` constructor + * Fixed express(1) default test charset. Closes #579 [reported by secoif] + * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP] + +2.0.0beta3 / 2011-03-09 +================== + + * Added support for `res.contentType()` literal + The original `res.contentType('.json')`, + `res.contentType('application/json')`, and `res.contentType('json')` + will work now. + * Added `res.render()` status option support back + * Added charset option for `res.render()` + * Added `.charset` support (via connect 1.0.4) + * Added view resolution hints when in development and a lookup fails + * Added layout lookup support relative to the page view. + For example while rendering `./views/user/index.jade` if you create + `./views/user/layout.jade` it will be used in favour of the root layout. + * Fixed `res.redirect()`. RFC states absolute url [reported by unlink] + * Fixed; default `res.send()` string charset to utf8 + * Removed `Partial` constructor (not currently used) + +2.0.0beta2 / 2011-03-07 +================== + + * Added res.render() `.locals` support back to aid in migration process + * Fixed flash example + +2.0.0beta / 2011-03-03 +================== + + * Added HTTPS support + * Added `res.cookie()` maxAge support + * Added `req.header()` _Referrer_ / _Referer_ special-case, either works + * Added mount support for `res.redirect()`, now respects the mount-point + * Added `union()` util, taking place of `merge(clone())` combo + * Added stylus support to express(1) generated app + * Added secret to session middleware used in examples and generated app + * Added `res.local(name, val)` for progressive view locals + * Added default param support to `req.param(name, default)` + * Added `app.disabled()` and `app.enabled()` + * Added `app.register()` support for omitting leading ".", either works + * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539 + * Added `app.param()` to map route params to async/sync logic + * Added; aliased `app.helpers()` as `app.locals()`. Closes #481 + * Added extname with no leading "." support to `res.contentType()` + * Added `cache views` setting, defaulting to enabled in "production" env + * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_. + * Added `req.accepts()` support for extensions + * Changed; `res.download()` and `res.sendfile()` now utilize Connect's + static file server `connect.static.send()`. + * Changed; replaced `connect.utils.mime()` with npm _mime_ module + * Changed; allow `req.query` to be pre-defined (via middleware or other parent + * Changed view partial resolution, now relative to parent view + * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`. + * Fixed `req.param()` bug returning Array.prototype methods. Closes #552 + * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()` + * Fixed; using _qs_ module instead of _querystring_ + * Fixed; strip unsafe chars from jsonp callbacks + * Removed "stream threshold" setting + +1.0.8 / 2011-03-01 +================== + + * Allow `req.query` to be pre-defined (via middleware or other parent app) + * "connect": ">= 0.5.0 < 1.0.0". Closes #547 + * Removed the long deprecated __EXPRESS_ENV__ support + +1.0.7 / 2011-02-07 +================== + + * Fixed `render()` setting inheritance. + Mounted apps would not inherit "view engine" + +1.0.6 / 2011-02-07 +================== + + * Fixed `view engine` setting bug when period is in dirname + +1.0.5 / 2011-02-05 +================== + + * Added secret to generated app `session()` call + +1.0.4 / 2011-02-05 +================== + + * Added `qs` dependency to _package.json_ + * Fixed namespaced `require()`s for latest connect support + +1.0.3 / 2011-01-13 +================== + + * Remove unsafe characters from JSONP callback names [Ryan Grove] + +1.0.2 / 2011-01-10 +================== + + * Removed nested require, using `connect.router` + +1.0.1 / 2010-12-29 +================== + + * Fixed for middleware stacked via `createServer()` + previously the `foo` middleware passed to `createServer(foo)` + would not have access to Express methods such as `res.send()` + or props like `req.query` etc. + +1.0.0 / 2010-11-16 +================== + + * Added; deduce partial object names from the last segment. + For example by default `partial('forum/post', postObject)` will + give you the _post_ object, providing a meaningful default. + * Added http status code string representation to `res.redirect()` body + * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__. + * Added `req.is()` to aid in content negotiation + * Added partial local inheritance [suggested by masylum]. Closes #102 + providing access to parent template locals. + * Added _-s, --session[s]_ flag to express(1) to add session related middleware + * Added _--template_ flag to express(1) to specify the + template engine to use. + * Added _--css_ flag to express(1) to specify the + stylesheet engine to use (or just plain css by default). + * Added `app.all()` support [thanks aheckmann] + * Added partial direct object support. + You may now `partial('user', user)` providing the "user" local, + vs previously `partial('user', { object: user })`. + * Added _route-separation_ example since many people question ways + to do this with CommonJS modules. Also view the _blog_ example for + an alternative. + * Performance; caching view path derived partial object names + * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454 + * Fixed jsonp support; _text/javascript_ as per mailinglist discussion + +1.0.0rc4 / 2010-10-14 +================== + + * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0 + * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware)) + * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass] + * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass] + * Added `partial()` support for array-like collections. Closes #434 + * Added support for swappable querystring parsers + * Added session usage docs. Closes #443 + * Added dynamic helper caching. Closes #439 [suggested by maritz] + * Added authentication example + * Added basic Range support to `res.sendfile()` (and `res.download()` etc) + * Changed; `express(1)` generated app using 2 spaces instead of 4 + * Default env to "development" again [aheckmann] + * Removed _context_ option is no more, use "scope" + * Fixed; exposing _./support_ libs to examples so they can run without installs + * Fixed mvc example + +1.0.0rc3 / 2010-09-20 +================== + + * Added confirmation for `express(1)` app generation. Closes #391 + * Added extending of flash formatters via `app.flashFormatters` + * Added flash formatter support. Closes #411 + * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold" + * Added _stream threshold_ setting for `res.sendfile()` + * Added `res.send()` __HEAD__ support + * Added `res.clearCookie()` + * Added `res.cookie()` + * Added `res.render()` headers option + * Added `res.redirect()` response bodies + * Added `res.render()` status option support. Closes #425 [thanks aheckmann] + * Fixed `res.sendfile()` responding with 403 on malicious path + * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_ + * Fixed; mounted apps settings now inherit from parent app [aheckmann] + * Fixed; stripping Content-Length / Content-Type when 204 + * Fixed `res.send()` 204. Closes #419 + * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402 + * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo] + + +1.0.0rc2 / 2010-08-17 +================== + + * Added `app.register()` for template engine mapping. Closes #390 + * Added `res.render()` callback support as second argument (no options) + * Added callback support to `res.download()` + * Added callback support for `res.sendfile()` + * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()` + * Added "partials" setting to docs + * Added default expresso tests to `express(1)` generated app. Closes #384 + * Fixed `res.sendfile()` error handling, defer via `next()` + * Fixed `res.render()` callback when a layout is used [thanks guillermo] + * Fixed; `make install` creating ~/.node_libraries when not present + * Fixed issue preventing error handlers from being defined anywhere. Closes #387 + +1.0.0rc / 2010-07-28 +================== + + * Added mounted hook. Closes #369 + * Added connect dependency to _package.json_ + + * Removed "reload views" setting and support code + development env never caches, production always caches. + + * Removed _param_ in route callbacks, signature is now + simply (req, res, next), previously (req, res, params, next). + Use _req.params_ for path captures, _req.query_ for GET params. + + * Fixed "home" setting + * Fixed middleware/router precedence issue. Closes #366 + * Fixed; _configure()_ callbacks called immediately. Closes #368 + +1.0.0beta2 / 2010-07-23 +================== + + * Added more examples + * Added; exporting `Server` constructor + * Added `Server#helpers()` for view locals + * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349 + * Added support for absolute view paths + * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363 + * Added Guillermo Rauch to the contributor list + * Added support for "as" for non-collection partials. Closes #341 + * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf] + * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo] + * Fixed instanceof `Array` checks, now `Array.isArray()` + * Fixed express(1) expansion of public dirs. Closes #348 + * Fixed middleware precedence. Closes #345 + * Fixed view watcher, now async [thanks aheckmann] + +1.0.0beta / 2010-07-15 +================== + + * Re-write + - much faster + - much lighter + - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs + +0.14.0 / 2010-06-15 +================== + + * Utilize relative requires + * Added Static bufferSize option [aheckmann] + * Fixed caching of view and partial subdirectories [aheckmann] + * Fixed mime.type() comments now that ".ext" is not supported + * Updated haml submodule + * Updated class submodule + * Removed bin/express + +0.13.0 / 2010-06-01 +================== + + * Added node v0.1.97 compatibility + * Added support for deleting cookies via Request#cookie('key', null) + * Updated haml submodule + * Fixed not-found page, now using using charset utf-8 + * Fixed show-exceptions page, now using using charset utf-8 + * Fixed view support due to fs.readFile Buffers + * Changed; mime.type() no longer accepts ".type" due to node extname() changes + +0.12.0 / 2010-05-22 +================== + + * Added node v0.1.96 compatibility + * Added view `helpers` export which act as additional local variables + * Updated haml submodule + * Changed ETag; removed inode, modified time only + * Fixed LF to CRLF for setting multiple cookies + * Fixed cookie complation; values are now urlencoded + * Fixed cookies parsing; accepts quoted values and url escaped cookies + +0.11.0 / 2010-05-06 +================== + + * Added support for layouts using different engines + - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' }) + - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml' + - this.render('page.html.haml', { layout: false }) // no layout + * Updated ext submodule + * Updated haml submodule + * Fixed EJS partial support by passing along the context. Issue #307 + +0.10.1 / 2010-05-03 +================== + + * Fixed binary uploads. + +0.10.0 / 2010-04-30 +================== + + * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s + encoding is set to 'utf8' or 'utf-8'. + * Added "encoding" option to Request#render(). Closes #299 + * Added "dump exceptions" setting, which is enabled by default. + * Added simple ejs template engine support + * Added error reponse support for text/plain, application/json. Closes #297 + * Added callback function param to Request#error() + * Added Request#sendHead() + * Added Request#stream() + * Added support for Request#respond(304, null) for empty response bodies + * Added ETag support to Request#sendfile() + * Added options to Request#sendfile(), passed to fs.createReadStream() + * Added filename arg to Request#download() + * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request + * Performance enhanced by preventing several calls to toLowerCase() in Router#match() + * Changed; Request#sendfile() now streams + * Changed; Renamed Request#halt() to Request#respond(). Closes #289 + * Changed; Using sys.inspect() instead of JSON.encode() for error output + * Changed; run() returns the http.Server instance. Closes #298 + * Changed; Defaulting Server#host to null (INADDR_ANY) + * Changed; Logger "common" format scale of 0.4f + * Removed Logger "request" format + * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found + * Fixed several issues with http client + * Fixed Logger Content-Length output + * Fixed bug preventing Opera from retaining the generated session id. Closes #292 + +0.9.0 / 2010-04-14 +================== + + * Added DSL level error() route support + * Added DSL level notFound() route support + * Added Request#error() + * Added Request#notFound() + * Added Request#render() callback function. Closes #258 + * Added "max upload size" setting + * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254 + * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js + * Added callback function support to Request#halt() as 3rd/4th arg + * Added preprocessing of route param wildcards using param(). Closes #251 + * Added view partial support (with collections etc) + * Fixed bug preventing falsey params (such as ?page=0). Closes #286 + * Fixed setting of multiple cookies. Closes #199 + * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml) + * Changed; session cookie is now httpOnly + * Changed; Request is no longer global + * Changed; Event is no longer global + * Changed; "sys" module is no longer global + * Changed; moved Request#download to Static plugin where it belongs + * Changed; Request instance created before body parsing. Closes #262 + * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253 + * Changed; Pre-caching view partials in memory when "cache view partials" is enabled + * Updated support to node --version 0.1.90 + * Updated dependencies + * Removed set("session cookie") in favour of use(Session, { cookie: { ... }}) + * Removed utils.mixin(); use Object#mergeDeep() + +0.8.0 / 2010-03-19 +================== + + * Added coffeescript example app. Closes #242 + * Changed; cache api now async friendly. Closes #240 + * Removed deprecated 'express/static' support. Use 'express/plugins/static' + +0.7.6 / 2010-03-19 +================== + + * Added Request#isXHR. Closes #229 + * Added `make install` (for the executable) + * Added `express` executable for setting up simple app templates + * Added "GET /public/*" to Static plugin, defaulting to /public + * Added Static plugin + * Fixed; Request#render() only calls cache.get() once + * Fixed; Namespacing View caches with "view:" + * Fixed; Namespacing Static caches with "static:" + * Fixed; Both example apps now use the Static plugin + * Fixed set("views"). Closes #239 + * Fixed missing space for combined log format + * Deprecated Request#sendfile() and 'express/static' + * Removed Server#running + +0.7.5 / 2010-03-16 +================== + + * Added Request#flash() support without args, now returns all flashes + * Updated ext submodule + +0.7.4 / 2010-03-16 +================== + + * Fixed session reaper + * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft) + +0.7.3 / 2010-03-16 +================== + + * Added package.json + * Fixed requiring of haml / sass due to kiwi removal + +0.7.2 / 2010-03-16 +================== + + * Fixed GIT submodules (HAH!) + +0.7.1 / 2010-03-16 +================== + + * Changed; Express now using submodules again until a PM is adopted + * Changed; chat example using millisecond conversions from ext + +0.7.0 / 2010-03-15 +================== + + * Added Request#pass() support (finds the next matching route, or the given path) + * Added Logger plugin (default "common" format replaces CommonLogger) + * Removed Profiler plugin + * Removed CommonLogger plugin + +0.6.0 / 2010-03-11 +================== + + * Added seed.yml for kiwi package management support + * Added HTTP client query string support when method is GET. Closes #205 + + * Added support for arbitrary view engines. + For example "foo.engine.html" will now require('engine'), + the exports from this module are cached after the first require(). + + * Added async plugin support + + * Removed usage of RESTful route funcs as http client + get() etc, use http.get() and friends + + * Removed custom exceptions + +0.5.0 / 2010-03-10 +================== + + * Added ext dependency (library of js extensions) + * Removed extname() / basename() utils. Use path module + * Removed toArray() util. Use arguments.values + * Removed escapeRegexp() util. Use RegExp.escape() + * Removed process.mixin() dependency. Use utils.mixin() + * Removed Collection + * Removed ElementCollection + * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;) + +0.4.0 / 2010-02-11 +================== + + * Added flash() example to sample upload app + * Added high level restful http client module (express/http) + * Changed; RESTful route functions double as HTTP clients. Closes #69 + * Changed; throwing error when routes are added at runtime + * Changed; defaulting render() context to the current Request. Closes #197 + * Updated haml submodule + +0.3.0 / 2010-02-11 +================== + + * Updated haml / sass submodules. Closes #200 + * Added flash message support. Closes #64 + * Added accepts() now allows multiple args. fixes #117 + * Added support for plugins to halt. Closes #189 + * Added alternate layout support. Closes #119 + * Removed Route#run(). Closes #188 + * Fixed broken specs due to use(Cookie) missing + +0.2.1 / 2010-02-05 +================== + + * Added "plot" format option for Profiler (for gnuplot processing) + * Added request number to Profiler plugin + * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8 + * Fixed issue with routes not firing when not files are present. Closes #184 + * Fixed process.Promise -> events.Promise + +0.2.0 / 2010-02-03 +================== + + * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180 + * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174 + * Added expiration support to cache api with reaper. Closes #133 + * Added cache Store.Memory#reap() + * Added Cache; cache api now uses first class Cache instances + * Added abstract session Store. Closes #172 + * Changed; cache Memory.Store#get() utilizing Collection + * Renamed MemoryStore -> Store.Memory + * Fixed use() of the same plugin several time will always use latest options. Closes #176 + +0.1.0 / 2010-02-03 +================== + + * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context + * Updated node support to 0.1.27 Closes #169 + * Updated dirname(__filename) -> __dirname + * Updated libxmljs support to v0.2.0 + * Added session support with memory store / reaping + * Added quick uid() helper + * Added multi-part upload support + * Added Sass.js support / submodule + * Added production env caching view contents and static files + * Added static file caching. Closes #136 + * Added cache plugin with memory stores + * Added support to StaticFile so that it works with non-textual files. + * Removed dirname() helper + * Removed several globals (now their modules must be required) + +0.0.2 / 2010-01-10 +================== + + * Added view benchmarks; currently haml vs ejs + * Added Request#attachment() specs. Closes #116 + * Added use of node's parseQuery() util. Closes #123 + * Added `make init` for submodules + * Updated Haml + * Updated sample chat app to show messages on load + * Updated libxmljs parseString -> parseHtmlString + * Fixed `make init` to work with older versions of git + * Fixed specs can now run independant specs for those who cant build deps. Closes #127 + * Fixed issues introduced by the node url module changes. Closes 126. + * Fixed two assertions failing due to Collection#keys() returning strings + * Fixed faulty Collection#toArray() spec due to keys() returning strings + * Fixed `make test` now builds libxmljs.node before testing + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/LICENSE b/nodejs-mysql-tutorial/node_modules/express/LICENSE new file mode 100644 index 0000000..36075a3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2009-2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/Makefile b/nodejs-mysql-tutorial/node_modules/express/Makefile new file mode 100644 index 0000000..228f299 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/Makefile @@ -0,0 +1,33 @@ + +MOCHA_OPTS= --check-leaks +REPORTER = dot + +check: test + +test: test-unit test-acceptance + +test-unit: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter $(REPORTER) \ + $(MOCHA_OPTS) + +test-acceptance: + @NODE_ENV=test ./node_modules/.bin/mocha \ + --reporter $(REPORTER) \ + --bail \ + test/acceptance/*.js + +test-cov: lib-cov + @EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html + +lib-cov: + @jscoverage lib lib-cov + +benchmark: + @./support/bench + +clean: + rm -f coverage.html + rm -fr lib-cov + +.PHONY: test test-unit test-acceptance benchmark clean diff --git a/nodejs-mysql-tutorial/node_modules/express/Readme.md b/nodejs-mysql-tutorial/node_modules/express/Readme.md new file mode 100644 index 0000000..61ee6ea --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/Readme.md @@ -0,0 +1,180 @@ +![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png) + + Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express) + +```js +var express = require('express'); +var app = express(); + +app.get('/', function(req, res){ + res.send('Hello World'); +}); + +app.listen(3000); +``` + +## Installation + + $ npm install -g express + +## Quick Start + + The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below: + + Create the app: + + $ npm install -g express + $ express /tmp/foo && cd /tmp/foo + + Install dependencies: + + $ npm install + + Start the server: + + $ node app + +## Features + + * Built on [Connect](http://github.com/senchalabs/connect) + * Robust routing + * HTTP helpers (redirection, caching, etc) + * View system supporting 14+ template engines + * Content negotiation + * Focus on high performance + * Environment based configuration + * Executable for generating applications quickly + * High test coverage + +## Philosophy + + The Express philosophy is to provide small, robust tooling for HTTP servers. Making + it a great solution for single page applications, web sites, hybrids, or public + HTTP APIs. + + Built on Connect you can use _only_ what you need, and nothing more, applications + can be as big or as small as you like, even a single file. Express does + not force you to use any specific ORM or template engine. With support for over + 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js) + you can quickly craft your perfect framework. + +## More Information + + * Join #express on freenode + * [Google Group](http://groups.google.com/group/express-js) for discussion + * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates + * Visit the [Wiki](http://github.com/visionmedia/express/wiki) + * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito) + * [Русскоязычная документация](http://jsman.ru/express/) + * Run express examples [online](https://runnable.com/express) + +## Viewing Examples + +Clone the Express repo, then install the dev dependencies to install all the example / test suite deps: + + $ git clone git://github.com/visionmedia/express.git --depth 1 + $ cd express + $ npm install + +then run whichever tests you want: + + $ node examples/content-negotiation + +## Running Tests + +To run the test suite first invoke the following command within the repo, installing the development dependencies: + + $ npm install + +then run the tests: + + $ make test + +## Contributors + +``` +project: express +commits: 3559 +active : 468 days +files : 237 +authors: + 1891 Tj Holowaychuk 53.1% + 1285 visionmedia 36.1% + 182 TJ Holowaychuk 5.1% + 54 Aaron Heckmann 1.5% + 34 csausdev 1.0% + 26 ciaranj 0.7% + 21 Robert Sköld 0.6% + 6 Guillermo Rauch 0.2% + 3 Dav Glass 0.1% + 3 Nick Poulden 0.1% + 2 Randy Merrill 0.1% + 2 Benny Wong 0.1% + 2 Hunter Loftis 0.1% + 2 Jake Gordon 0.1% + 2 Brian McKinney 0.1% + 2 Roman Shtylman 0.1% + 2 Ben Weaver 0.1% + 2 Dave Hoover 0.1% + 2 Eivind Fjeldstad 0.1% + 2 Daniel Shaw 0.1% + 1 Matt Colyer 0.0% + 1 Pau Ramon 0.0% + 1 Pero Pejovic 0.0% + 1 Peter Rekdal Sunde 0.0% + 1 Raynos 0.0% + 1 Teng Siong Ong 0.0% + 1 Viktor Kelemen 0.0% + 1 ctide 0.0% + 1 8bitDesigner 0.0% + 1 isaacs 0.0% + 1 mgutz 0.0% + 1 pikeas 0.0% + 1 shuwatto 0.0% + 1 tstrimple 0.0% + 1 ewoudj 0.0% + 1 Adam Sanderson 0.0% + 1 Andrii Kostenko 0.0% + 1 Andy Hiew 0.0% + 1 Arpad Borsos 0.0% + 1 Ashwin Purohit 0.0% + 1 Benjen 0.0% + 1 Darren Torpey 0.0% + 1 Greg Ritter 0.0% + 1 Gregory Ritter 0.0% + 1 James Herdman 0.0% + 1 Jim Snodgrass 0.0% + 1 Joe McCann 0.0% + 1 Jonathan Dumaine 0.0% + 1 Jonathan Palardy 0.0% + 1 Jonathan Zacsh 0.0% + 1 Justin Lilly 0.0% + 1 Ken Sato 0.0% + 1 Maciej Małecki 0.0% + 1 Masahiro Hayashi 0.0% +``` + +## License + +(The MIT License) + +Copyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/bin/express b/nodejs-mysql-tutorial/node_modules/express/bin/express new file mode 100644 index 0000000..b93d0af --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/bin/express @@ -0,0 +1,422 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var exec = require('child_process').exec + , program = require('commander') + , mkdirp = require('mkdirp') + , pkg = require('../package.json') + , version = pkg.version + , os = require('os') + , fs = require('fs'); + +// CLI + +program + .version(version) + .option('-s, --sessions', 'add session support') + .option('-e, --ejs', 'add ejs engine support (defaults to jade)') + .option('-J, --jshtml', 'add jshtml engine support (defaults to jade)') + .option('-H, --hogan', 'add hogan.js engine support') + .option('-c, --css ', 'add stylesheet support (less|stylus) (defaults to plain css)') + .option('-f, --force', 'force on non-empty directory') + .parse(process.argv); + +// Path + +var path = program.args.shift() || '.'; + +// end-of-line code + +var eol = os.EOL + +// Template engine + +program.template = 'jade'; +if (program.ejs) program.template = 'ejs'; +if (program.jshtml) program.template = 'jshtml'; +if (program.hogan) program.template = 'hjs'; + +/** + * Routes index template. + */ + +var index = [ + '' + , '/*' + , ' * GET home page.' + , ' */' + , '' + , 'exports.index = function(req, res){' + , ' res.render(\'index\', { title: \'Express\' });' + , '};' +].join(eol); + +/** + * Routes users template. + */ + +var users = [ + '' + , '/*' + , ' * GET users listing.' + , ' */' + , '' + , 'exports.list = function(req, res){' + , ' res.send("respond with a resource");' + , '};' +].join(eol); + +/** + * Jade layout template. + */ + +var jadeLayout = [ + 'doctype 5' + , 'html' + , ' head' + , ' title= title' + , ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')' + , ' body' + , ' block content' +].join(eol); + +/** + * Jade index template. + */ + +var jadeIndex = [ + 'extends layout' + , '' + , 'block content' + , ' h1= title' + , ' p Welcome to #{title}' +].join(eol); + +/** + * EJS index template. + */ + +var ejsIndex = [ + '' + , '' + , ' ' + , ' <%= title %>' + , ' ' + , ' ' + , ' ' + , '

<%= title %>

' + , '

Welcome to <%= title %>

' + , ' ' + , '' +].join(eol); + +/** + * JSHTML layout template. + */ + +var jshtmlLayout = [ + '' + , '' + , ' ' + , ' @write(title) ' + , ' ' + , ' ' + , ' ' + , ' @write(body)' + , ' ' + , '' +].join(eol); + +/** + * JSHTML index template. + */ + +var jshtmlIndex = [ + '

@write(title)

' + , '

Welcome to @write(title)

' +].join(eol); + +/** + * Hogan.js index template. + */ +var hoganIndex = [ + '' + , '' + , ' ' + , ' {{ title }}' + , ' ' + , ' ' + , ' ' + , '

{{ title }}

' + , '

Welcome to {{ title }}

' + , ' ' + , '' +].join(eol); + +/** + * Default css template. + */ + +var css = [ + 'body {' + , ' padding: 50px;' + , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;' + , '}' + , '' + , 'a {' + , ' color: #00B7FF;' + , '}' +].join(eol); + +/** + * Default less template. + */ + +var less = [ + 'body {' + , ' padding: 50px;' + , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;' + , '}' + , '' + , 'a {' + , ' color: #00B7FF;' + , '}' +].join(eol); + +/** + * Default stylus template. + */ + +var stylus = [ + 'body' + , ' padding: 50px' + , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif' + , 'a' + , ' color: #00B7FF' +].join(eol); + +/** + * App template. + */ + +var app = [ + '' + , '/**' + , ' * Module dependencies.' + , ' */' + , '' + , 'var express = require(\'express\')' + , ' , routes = require(\'./routes\')' + , ' , user = require(\'./routes/user\')' + , ' , http = require(\'http\')' + , ' , path = require(\'path\');' + , '' + , 'var app = express();' + , '' + , '// all environments' + , 'app.set(\'port\', process.env.PORT || 3000);' + , 'app.set(\'views\', __dirname + \'/views\');' + , 'app.set(\'view engine\', \':TEMPLATE\');' + , 'app.use(express.favicon());' + , 'app.use(express.logger(\'dev\'));' + , 'app.use(express.bodyParser());' + , 'app.use(express.methodOverride());{sess}' + , 'app.use(app.router);{css}' + , 'app.use(express.static(path.join(__dirname, \'public\')));' + , '' + , '// development only' + , 'if (\'development\' == app.get(\'env\')) {' + , ' app.use(express.errorHandler());' + , '}' + , '' + , 'app.get(\'/\', routes.index);' + , 'app.get(\'/users\', user.list);' + , '' + , 'http.createServer(app).listen(app.get(\'port\'), function(){' + , ' console.log(\'Express server listening on port \' + app.get(\'port\'));' + , '});' + , '' +].join(eol); + +// Generate application + +(function createApplication(path) { + emptyDirectory(path, function(empty){ + if (empty || program.force) { + createApplicationAt(path); + } else { + program.confirm('destination is not empty, continue? ', function(ok){ + if (ok) { + process.stdin.destroy(); + createApplicationAt(path); + } else { + abort('aborting'); + } + }); + } + }); +})(path); + +/** + * Create application at the given directory `path`. + * + * @param {String} path + */ + +function createApplicationAt(path) { + console.log(); + process.on('exit', function(){ + console.log(); + console.log(' install dependencies:'); + console.log(' $ cd %s && npm install', path); + console.log(); + console.log(' run the app:'); + console.log(' $ node app'); + console.log(); + }); + + mkdir(path, function(){ + mkdir(path + '/public'); + mkdir(path + '/public/javascripts'); + mkdir(path + '/public/images'); + mkdir(path + '/public/stylesheets', function(){ + switch (program.css) { + case 'less': + write(path + '/public/stylesheets/style.less', less); + break; + case 'stylus': + write(path + '/public/stylesheets/style.styl', stylus); + break; + default: + write(path + '/public/stylesheets/style.css', css); + } + }); + + mkdir(path + '/routes', function(){ + write(path + '/routes/index.js', index); + write(path + '/routes/user.js', users); + }); + + mkdir(path + '/views', function(){ + switch (program.template) { + case 'ejs': + write(path + '/views/index.ejs', ejsIndex); + break; + case 'jade': + write(path + '/views/layout.jade', jadeLayout); + write(path + '/views/index.jade', jadeIndex); + break; + case 'jshtml': + write(path + '/views/layout.jshtml', jshtmlLayout); + write(path + '/views/index.jshtml', jshtmlIndex); + break; + case 'hjs': + write(path + '/views/index.hjs', hoganIndex); + break; + + } + }); + + // CSS Engine support + switch (program.css) { + case 'less': + app = app.replace('{css}', eol + ' app.use(require(\'less-middleware\')({ src: __dirname + \'/public\' }));'); + break; + case 'stylus': + app = app.replace('{css}', eol + ' app.use(require(\'stylus\').middleware(__dirname + \'/public\'));'); + break; + default: + app = app.replace('{css}', ''); + } + + // Session support + app = app.replace('{sess}', program.sessions + ? eol + 'app.use(express.cookieParser(\'your secret here\'));' + eol + 'app.use(express.session());' + : ''); + + // Template support + app = app.replace(':TEMPLATE', program.template); + + // package.json + var pkg = { + name: 'application-name' + , version: '0.0.1' + , private: true + , scripts: { start: 'node app.js' } + , dependencies: { + express: version + } + } + + if (program.template) pkg.dependencies[program.template] = '*'; + + // CSS Engine support + switch (program.css) { + case 'less': + pkg.dependencies['less-middleware'] = '*'; + break; + default: + if (program.css) { + pkg.dependencies[program.css] = '*'; + } + } + + write(path + '/package.json', JSON.stringify(pkg, null, 2)); + write(path + '/app.js', app); + }); +} + +/** + * Check if the given directory `path` is empty. + * + * @param {String} path + * @param {Function} fn + */ + +function emptyDirectory(path, fn) { + fs.readdir(path, function(err, files){ + if (err && 'ENOENT' != err.code) throw err; + fn(!files || !files.length); + }); +} + +/** + * echo str > path. + * + * @param {String} path + * @param {String} str + */ + +function write(path, str) { + fs.writeFile(path, str); + console.log(' \x1b[36mcreate\x1b[0m : ' + path); +} + +/** + * Mkdir -p. + * + * @param {String} path + * @param {Function} fn + */ + +function mkdir(path, fn) { + mkdirp(path, 0755, function(err){ + if (err) throw err; + console.log(' \033[36mcreate\033[0m : ' + path); + fn && fn(); + }); +} + +/** + * Exit with the given `str`. + * + * @param {String} str + */ + +function abort(str) { + console.error(str); + process.exit(1); +} diff --git a/nodejs-mysql-tutorial/node_modules/express/index.js b/nodejs-mysql-tutorial/node_modules/express/index.js new file mode 100644 index 0000000..bfe9934 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/index.js @@ -0,0 +1,4 @@ + +module.exports = process.env.EXPRESS_COV + ? require('./lib-cov/express') + : require('./lib/express'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/application.js b/nodejs-mysql-tutorial/node_modules/express/lib/application.js new file mode 100644 index 0000000..6a3cf13 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/application.js @@ -0,0 +1,536 @@ +/** + * Module dependencies. + */ + +var connect = require('connect') + , Router = require('./router') + , methods = require('methods') + , middleware = require('./middleware') + , debug = require('debug')('express:application') + , locals = require('./utils').locals + , View = require('./view') + , utils = connect.utils + , path = require('path') + , http = require('http') + , join = path.join; + +/** + * Application prototype. + */ + +var app = exports = module.exports = {}; + +/** + * Initialize the server. + * + * - setup default configuration + * - setup default middleware + * - setup route reflection methods + * + * @api private + */ + +app.init = function(){ + this.cache = {}; + this.settings = {}; + this.engines = {}; + this.defaultConfiguration(); +}; + +/** + * Initialize application configuration. + * + * @api private + */ + +app.defaultConfiguration = function(){ + // default settings + this.enable('x-powered-by'); + this.set('env', process.env.NODE_ENV || 'development'); + this.set('subdomain offset', 2); + debug('booting in %s mode', this.get('env')); + + // implicit middleware + this.use(connect.query()); + this.use(middleware.init(this)); + + // inherit protos + this.on('mount', function(parent){ + this.request.__proto__ = parent.request; + this.response.__proto__ = parent.response; + this.engines.__proto__ = parent.engines; + this.settings.__proto__ = parent.settings; + }); + + // router + this._router = new Router(this); + this.routes = this._router.map; + this.__defineGetter__('router', function(){ + this._usedRouter = true; + this._router.caseSensitive = this.enabled('case sensitive routing'); + this._router.strict = this.enabled('strict routing'); + return this._router.middleware; + }); + + // setup locals + this.locals = locals(this); + + // default locals + this.locals.settings = this.settings; + + // default configuration + this.set('view', View); + this.set('views', process.cwd() + '/views'); + this.set('jsonp callback name', 'callback'); + + this.configure('development', function(){ + this.set('json spaces', 2); + }); + + this.configure('production', function(){ + this.enable('view cache'); + }); +}; + +/** + * Proxy `connect#use()` to apply settings to + * mounted applications. + * + * @param {String|Function|Server} route + * @param {Function|Server} fn + * @return {app} for chaining + * @api public + */ + +app.use = function(route, fn){ + var app; + + // default route to '/' + if ('string' != typeof route) fn = route, route = '/'; + + // express app + if (fn.handle && fn.set) app = fn; + + // restore .app property on req and res + if (app) { + app.route = route; + fn = function(req, res, next) { + var orig = req.app; + app.handle(req, res, function(err){ + req.app = res.app = orig; + req.__proto__ = orig.request; + res.__proto__ = orig.response; + next(err); + }); + }; + } + + connect.proto.use.call(this, route, fn); + + // mounted an app + if (app) { + app.parent = this; + app.emit('mount', this); + } + + return this; +}; + +/** + * Register the given template engine callback `fn` + * as `ext`. + * + * By default will `require()` the engine based on the + * file extension. For example if you try to render + * a "foo.jade" file Express will invoke the following internally: + * + * app.engine('jade', require('jade').__express); + * + * For engines that do not provide `.__express` out of the box, + * or if you wish to "map" a different extension to the template engine + * you may use this method. For example mapping the EJS template engine to + * ".html" files: + * + * app.engine('html', require('ejs').renderFile); + * + * In this case EJS provides a `.renderFile()` method with + * the same signature that Express expects: `(path, options, callback)`, + * though note that it aliases this method as `ejs.__express` internally + * so if you're using ".ejs" extensions you dont need to do anything. + * + * Some template engines do not follow this convention, the + * [Consolidate.js](https://github.com/visionmedia/consolidate.js) + * library was created to map all of node's popular template + * engines to follow this convention, thus allowing them to + * work seamlessly within Express. + * + * @param {String} ext + * @param {Function} fn + * @return {app} for chaining + * @api public + */ + +app.engine = function(ext, fn){ + if ('function' != typeof fn) throw new Error('callback function required'); + if ('.' != ext[0]) ext = '.' + ext; + this.engines[ext] = fn; + return this; +}; + +/** + * Map the given param placeholder `name`(s) to the given callback(s). + * + * Parameter mapping is used to provide pre-conditions to routes + * which use normalized placeholders. For example a _:user_id_ parameter + * could automatically load a user's information from the database without + * any additional code, + * + * The callback uses the samesignature as middleware, the only differencing + * being that the value of the placeholder is passed, in this case the _id_ + * of the user. Once the `next()` function is invoked, just like middleware + * it will continue on to execute the route, or subsequent parameter functions. + * + * app.param('user_id', function(req, res, next, id){ + * User.find(id, function(err, user){ + * if (err) { + * next(err); + * } else if (user) { + * req.user = user; + * next(); + * } else { + * next(new Error('failed to load user')); + * } + * }); + * }); + * + * @param {String|Array} name + * @param {Function} fn + * @return {app} for chaining + * @api public + */ + +app.param = function(name, fn){ + var self = this + , fns = [].slice.call(arguments, 1); + + // array + if (Array.isArray(name)) { + name.forEach(function(name){ + fns.forEach(function(fn){ + self.param(name, fn); + }); + }); + // param logic + } else if ('function' == typeof name) { + this._router.param(name); + // single + } else { + if (':' == name[0]) name = name.substr(1); + fns.forEach(function(fn){ + self._router.param(name, fn); + }); + } + + return this; +}; + +/** + * Assign `setting` to `val`, or return `setting`'s value. + * + * app.set('foo', 'bar'); + * app.get('foo'); + * // => "bar" + * + * Mounted servers inherit their parent server's settings. + * + * @param {String} setting + * @param {String} val + * @return {Server} for chaining + * @api public + */ + +app.set = function(setting, val){ + if (1 == arguments.length) { + return this.settings[setting]; + } else { + this.settings[setting] = val; + return this; + } +}; + +/** + * Return the app's absolute pathname + * based on the parent(s) that have + * mounted it. + * + * For example if the application was + * mounted as "/admin", which itself + * was mounted as "/blog" then the + * return value would be "/blog/admin". + * + * @return {String} + * @api private + */ + +app.path = function(){ + return this.parent + ? this.parent.path() + this.route + : ''; +}; + +/** + * Check if `setting` is enabled (truthy). + * + * app.enabled('foo') + * // => false + * + * app.enable('foo') + * app.enabled('foo') + * // => true + * + * @param {String} setting + * @return {Boolean} + * @api public + */ + +app.enabled = function(setting){ + return !!this.set(setting); +}; + +/** + * Check if `setting` is disabled. + * + * app.disabled('foo') + * // => true + * + * app.enable('foo') + * app.disabled('foo') + * // => false + * + * @param {String} setting + * @return {Boolean} + * @api public + */ + +app.disabled = function(setting){ + return !this.set(setting); +}; + +/** + * Enable `setting`. + * + * @param {String} setting + * @return {app} for chaining + * @api public + */ + +app.enable = function(setting){ + return this.set(setting, true); +}; + +/** + * Disable `setting`. + * + * @param {String} setting + * @return {app} for chaining + * @api public + */ + +app.disable = function(setting){ + return this.set(setting, false); +}; + +/** + * Configure callback for zero or more envs, + * when no `env` is specified that callback will + * be invoked for all environments. Any combination + * can be used multiple times, in any order desired. + * + * Examples: + * + * app.configure(function(){ + * // executed for all envs + * }); + * + * app.configure('stage', function(){ + * // executed staging env + * }); + * + * app.configure('stage', 'production', function(){ + * // executed for stage and production + * }); + * + * Note: + * + * These callbacks are invoked immediately, and + * are effectively sugar for the following: + * + * var env = process.env.NODE_ENV || 'development'; + * + * switch (env) { + * case 'development': + * ... + * break; + * case 'stage': + * ... + * break; + * case 'production': + * ... + * break; + * } + * + * @param {String} env... + * @param {Function} fn + * @return {app} for chaining + * @api public + */ + +app.configure = function(env, fn){ + var envs = 'all' + , args = [].slice.call(arguments); + fn = args.pop(); + if (args.length) envs = args; + if ('all' == envs || ~envs.indexOf(this.settings.env)) fn.call(this); + return this; +}; + +/** + * Delegate `.VERB(...)` calls to `router.VERB(...)`. + */ + +methods.forEach(function(method){ + app[method] = function(path){ + if ('get' == method && 1 == arguments.length) return this.set(path); + + // deprecated + if (Array.isArray(path)) { + console.trace('passing an array to app.VERB() is deprecated and will be removed in 4.0'); + } + + // if no router attached yet, attach the router + if (!this._usedRouter) this.use(this.router); + + // setup route + this._router[method].apply(this._router, arguments); + return this; + }; +}); + +/** + * Special-cased "all" method, applying the given route `path`, + * middleware, and callback to _every_ HTTP method. + * + * @param {String} path + * @param {Function} ... + * @return {app} for chaining + * @api public + */ + +app.all = function(path){ + var args = arguments; + methods.forEach(function(method){ + app[method].apply(this, args); + }, this); + return this; +}; + +// del -> delete alias + +app.del = app.delete; + +/** + * Render the given view `name` name with `options` + * and a callback accepting an error and the + * rendered template string. + * + * Example: + * + * app.render('email', { name: 'Tobi' }, function(err, html){ + * // ... + * }) + * + * @param {String} name + * @param {String|Function} options or fn + * @param {Function} fn + * @api public + */ + +app.render = function(name, options, fn){ + var opts = {} + , cache = this.cache + , engines = this.engines + , view; + + // support callback function as second arg + if ('function' == typeof options) { + fn = options, options = {}; + } + + // merge app.locals + utils.merge(opts, this.locals); + + // merge options._locals + if (options._locals) utils.merge(opts, options._locals); + + // merge options + utils.merge(opts, options); + + // set .cache unless explicitly provided + opts.cache = null == opts.cache + ? this.enabled('view cache') + : opts.cache; + + // primed cache + if (opts.cache) view = cache[name]; + + // view + if (!view) { + view = new (this.get('view'))(name, { + defaultEngine: this.get('view engine'), + root: this.get('views'), + engines: engines + }); + + if (!view.path) { + var err = new Error('Failed to lookup view "' + name + '"'); + err.view = view; + return fn(err); + } + + // prime the cache + if (opts.cache) cache[name] = view; + } + + // render + try { + view.render(opts, fn); + } catch (err) { + fn(err); + } +}; + +/** + * Listen for connections. + * + * A node `http.Server` is returned, with this + * application (which is a `Function`) as its + * callback. If you wish to create both an HTTP + * and HTTPS server you may do so with the "http" + * and "https" modules as shown here: + * + * var http = require('http') + * , https = require('https') + * , express = require('express') + * , app = express(); + * + * http.createServer(app).listen(80); + * https.createServer({ ... }, app).listen(443); + * + * @return {http.Server} + * @api public + */ + +app.listen = function(){ + var server = http.createServer(this); + return server.listen.apply(server, arguments); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/express.js b/nodejs-mysql-tutorial/node_modules/express/lib/express.js new file mode 100644 index 0000000..f4258f1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/express.js @@ -0,0 +1,92 @@ +/** + * Module dependencies. + */ + +var connect = require('connect') + , proto = require('./application') + , Route = require('./router/route') + , Router = require('./router') + , req = require('./request') + , res = require('./response') + , utils = connect.utils; + +/** + * Expose `createApplication()`. + */ + +exports = module.exports = createApplication; + +/** + * Framework version. + */ + +exports.version = '3.2.5'; + +/** + * Expose mime. + */ + +exports.mime = connect.mime; + +/** + * Create an express application. + * + * @return {Function} + * @api public + */ + +function createApplication() { + var app = connect(); + utils.merge(app, proto); + app.request = { __proto__: req }; + app.response = { __proto__: res }; + app.init(); + return app; +} + +/** + * Expose connect.middleware as express.* + * for example `express.logger` etc. + */ + +for (var key in connect.middleware) { + Object.defineProperty( + exports + , key + , Object.getOwnPropertyDescriptor(connect.middleware, key)); +} + +/** + * Error on createServer(). + */ + +exports.createServer = function(){ + console.warn('Warning: express.createServer() is deprecated, express'); + console.warn('applications no longer inherit from http.Server,'); + console.warn('please use:'); + console.warn(''); + console.warn(' var express = require("express");'); + console.warn(' var app = express();'); + console.warn(''); + return createApplication(); +}; + +/** + * Expose the prototypes. + */ + +exports.application = proto; +exports.request = req; +exports.response = res; + +/** + * Expose constructors. + */ + +exports.Route = Route; +exports.Router = Router; + +// Error handler title + +exports.errorHandler.title = 'Express'; + diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/middleware.js b/nodejs-mysql-tutorial/node_modules/express/lib/middleware.js new file mode 100644 index 0000000..308c5bb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/middleware.js @@ -0,0 +1,33 @@ + +/** + * Module dependencies. + */ + +var utils = require('./utils'); + +/** + * Initialization middleware, exposing the + * request and response to eachother, as well + * as defaulting the X-Powered-By header field. + * + * @param {Function} app + * @return {Function} + * @api private + */ + +exports.init = function(app){ + return function expressInit(req, res, next){ + req.app = res.app = app; + if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express'); + req.res = res; + res.req = req; + req.next = next; + + req.__proto__ = app.request; + res.__proto__ = app.response; + + res.locals = res.locals || utils.locals(res); + + next(); + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/request.js b/nodejs-mysql-tutorial/node_modules/express/lib/request.js new file mode 100644 index 0000000..1205c6c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/request.js @@ -0,0 +1,527 @@ + +/** + * Module dependencies. + */ + +var http = require('http') + , utils = require('./utils') + , connect = require('connect') + , fresh = require('fresh') + , parseRange = require('range-parser') + , parse = connect.utils.parseUrl + , mime = connect.mime; + +/** + * Request prototype. + */ + +var req = exports = module.exports = { + __proto__: http.IncomingMessage.prototype +}; + +/** + * Return request header. + * + * The `Referrer` header field is special-cased, + * both `Referrer` and `Referer` are interchangeable. + * + * Examples: + * + * req.get('Content-Type'); + * // => "text/plain" + * + * req.get('content-type'); + * // => "text/plain" + * + * req.get('Something'); + * // => undefined + * + * Aliased as `req.header()`. + * + * @param {String} name + * @return {String} + * @api public + */ + +req.get = +req.header = function(name){ + switch (name = name.toLowerCase()) { + case 'referer': + case 'referrer': + return this.headers.referrer + || this.headers.referer; + default: + return this.headers[name]; + } +}; + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json", a comma-delimted list such as "json, html, text/plain", + * or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * req.accepts('html'); + * // => "html" + * + * // Accept: text/*, application/json + * req.accepts('html'); + * // => "html" + * req.accepts('text/html'); + * // => "text/html" + * req.accepts('json, text'); + * // => "json" + * req.accepts('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * req.accepts('image/png'); + * req.accepts('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * req.accepts(['html', 'json']); + * req.accepts('html, json'); + * // => "json" + * + * @param {String|Array} type(s) + * @return {String} + * @api public + */ + +req.accepts = function(type){ + return utils.accepts(type, this.get('Accept')); +}; + +/** + * Check if the given `encoding` is accepted. + * + * @param {String} encoding + * @return {Boolean} + * @api public + */ + +req.acceptsEncoding = function(encoding){ + return ~this.acceptedEncodings.indexOf(encoding); +}; + +/** + * Check if the given `charset` is acceptable, + * otherwise you should respond with 406 "Not Acceptable". + * + * @param {String} charset + * @return {Boolean} + * @api public + */ + +req.acceptsCharset = function(charset){ + var accepted = this.acceptedCharsets; + return accepted.length + ? ~accepted.indexOf(charset) + : true; +}; + +/** + * Check if the given `lang` is acceptable, + * otherwise you should respond with 406 "Not Acceptable". + * + * @param {String} lang + * @return {Boolean} + * @api public + */ + +req.acceptsLanguage = function(lang){ + var accepted = this.acceptedLanguages; + return accepted.length + ? ~accepted.indexOf(lang) + : true; +}; + +/** + * Parse Range header field, + * capping to the given `size`. + * + * Unspecified ranges such as "0-" require + * knowledge of your resource length. In + * the case of a byte range this is of course + * the total number of bytes. If the Range + * header field is not given `null` is returned, + * `-1` when unsatisfiable, `-2` when syntactically invalid. + * + * NOTE: remember that ranges are inclusive, so + * for example "Range: users=0-3" should respond + * with 4 users when available, not 3. + * + * @param {Number} size + * @return {Array} + * @api public + */ + +req.range = function(size){ + var range = this.get('Range'); + if (!range) return; + return parseRange(size, range); +}; + +/** + * Return an array of encodings. + * + * Examples: + * + * ['gzip', 'deflate'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedEncodings', function(){ + var accept = this.get('Accept-Encoding'); + return accept + ? accept.trim().split(/ *, */) + : []; +}); + +/** + * Return an array of Accepted media types + * ordered from highest quality to lowest. + * + * Examples: + * + * [ { value: 'application/json', + * quality: 1, + * type: 'application', + * subtype: 'json' }, + * { value: 'text/html', + * quality: 0.5, + * type: 'text', + * subtype: 'html' } ] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('accepted', function(){ + var accept = this.get('Accept'); + return accept + ? utils.parseAccept(accept) + : []; +}); + +/** + * Return an array of Accepted languages + * ordered from highest quality to lowest. + * + * Examples: + * + * Accept-Language: en;q=.5, en-us + * ['en-us', 'en'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedLanguages', function(){ + var accept = this.get('Accept-Language'); + return accept + ? utils + .parseParams(accept) + .map(function(obj){ + return obj.value; + }) + : []; +}); + +/** + * Return an array of Accepted charsets + * ordered from highest quality to lowest. + * + * Examples: + * + * Accept-Charset: iso-8859-5;q=.2, unicode-1-1;q=0.8 + * ['unicode-1-1', 'iso-8859-5'] + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('acceptedCharsets', function(){ + var accept = this.get('Accept-Charset'); + return accept + ? utils + .parseParams(accept) + .map(function(obj){ + return obj.value; + }) + : []; +}); + +/** + * Return the value of param `name` when present or `defaultValue`. + * + * - Checks route placeholders, ex: _/user/:id_ + * - Checks body params, ex: id=12, {"id":12} + * - Checks query string params, ex: ?id=12 + * + * To utilize request bodies, `req.body` + * should be an object. This can be done by using + * the `connect.bodyParser()` middleware. + * + * @param {String} name + * @param {Mixed} [defaultValue] + * @return {String} + * @api public + */ + +req.param = function(name, defaultValue){ + var params = this.params || {}; + var body = this.body || {}; + var query = this.query || {}; + if (null != params[name] && params.hasOwnProperty(name)) return params[name]; + if (null != body[name]) return body[name]; + if (null != query[name]) return query[name]; + return defaultValue; +}; + +/** + * Check if the incoming request contains the "Content-Type" + * header field, and it contains the give mime `type`. + * + * Examples: + * + * // With Content-Type: text/html; charset=utf-8 + * req.is('html'); + * req.is('text/html'); + * req.is('text/*'); + * // => true + * + * // When Content-Type is application/json + * req.is('json'); + * req.is('application/json'); + * req.is('application/*'); + * // => true + * + * req.is('html'); + * // => false + * + * @param {String} type + * @return {Boolean} + * @api public + */ + +req.is = function(type){ + var ct = this.get('Content-Type'); + if (!ct) return false; + ct = ct.split(';')[0]; + if (!~type.indexOf('/')) type = mime.lookup(type); + if (~type.indexOf('*')) { + type = type.split('/'); + ct = ct.split('/'); + if ('*' == type[0] && type[1] == ct[1]) return true; + if ('*' == type[1] && type[0] == ct[0]) return true; + return false; + } + return !! ~ct.indexOf(type); +}; + +/** + * Return the protocol string "http" or "https" + * when requested with TLS. When the "trust proxy" + * setting is enabled the "X-Forwarded-Proto" header + * field will be trusted. If you're running behind + * a reverse proxy that supplies https for you this + * may be enabled. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('protocol', function(){ + var trustProxy = this.app.get('trust proxy'); + return this.connection.encrypted + ? 'https' + : trustProxy + ? (this.get('X-Forwarded-Proto') || 'http') + : 'http'; +}); + +/** + * Short-hand for: + * + * req.protocol == 'https' + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('secure', function(){ + return 'https' == this.protocol; +}); + +/** + * Return the remote address, or when + * "trust proxy" is `true` return + * the upstream addr. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('ip', function(){ + return this.ips[0] || this.connection.remoteAddress; +}); + +/** + * When "trust proxy" is `true`, parse + * the "X-Forwarded-For" ip address list. + * + * For example if the value were "client, proxy1, proxy2" + * you would receive the array `["client", "proxy1", "proxy2"]` + * where "proxy2" is the furthest down-stream. + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('ips', function(){ + var trustProxy = this.app.get('trust proxy'); + var val = this.get('X-Forwarded-For'); + return trustProxy && val + ? val.split(/ *, */) + : []; +}); + +/** + * Return basic auth credentials. + * + * Examples: + * + * // http://tobi:hello@example.com + * req.auth + * // => { username: 'tobi', password: 'hello' } + * + * @return {Object} or undefined + * @api public + */ + +req.__defineGetter__('auth', function(){ + // missing + var auth = this.get('Authorization'); + if (!auth) return; + + // malformed + var parts = auth.split(' '); + if ('basic' != parts[0].toLowerCase()) return; + if (!parts[1]) return; + auth = parts[1]; + + // credentials + auth = new Buffer(auth, 'base64').toString().match(/^([^:]*):(.*)$/); + if (!auth) return; + return { username: auth[1], password: auth[2] }; +}); + +/** + * Return subdomains as an array. + * + * Subdomains are the dot-separated parts of the host before the main domain of + * the app. By default, the domain of the app is assumed to be the last two + * parts of the host. This can be changed by setting "subdomain offset". + * + * For example, if the domain is "tobi.ferrets.example.com": + * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. + * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. + * + * @return {Array} + * @api public + */ + +req.__defineGetter__('subdomains', function(){ + var offset = this.app.get('subdomain offset'); + return (this.host || '') + .split('.') + .reverse() + .slice(offset); +}); + +/** + * Short-hand for `url.parse(req.url).pathname`. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('path', function(){ + return parse(this).pathname; +}); + +/** + * Parse the "Host" header field hostname. + * + * @return {String} + * @api public + */ + +req.__defineGetter__('host', function(){ + var trustProxy = this.app.get('trust proxy'); + var host = trustProxy && this.get('X-Forwarded-Host'); + host = host || this.get('Host'); + if (!host) return; + return host.split(':')[0]; +}); + +/** + * Check if the request is fresh, aka + * Last-Modified and/or the ETag + * still match. + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('fresh', function(){ + var method = this.method; + var s = this.res.statusCode; + + // GET or HEAD for weak freshness validation only + if ('GET' != method && 'HEAD' != method) return false; + + // 2xx or 304 as per rfc2616 14.26 + if ((s >= 200 && s < 300) || 304 == s) { + return fresh(this.headers, this.res._headers); + } + + return false; +}); + +/** + * Check if the request is stale, aka + * "Last-Modified" and / or the "ETag" for the + * resource has changed. + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('stale', function(){ + return !this.fresh; +}); + +/** + * Check if the request was an _XMLHttpRequest_. + * + * @return {Boolean} + * @api public + */ + +req.__defineGetter__('xhr', function(){ + var val = this.get('X-Requested-With') || ''; + return 'xmlhttprequest' == val.toLowerCase(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/response.js b/nodejs-mysql-tutorial/node_modules/express/lib/response.js new file mode 100644 index 0000000..68b7266 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/response.js @@ -0,0 +1,757 @@ +/** + * Module dependencies. + */ + +var http = require('http') + , path = require('path') + , connect = require('connect') + , utils = connect.utils + , sign = require('cookie-signature').sign + , normalizeType = require('./utils').normalizeType + , normalizeTypes = require('./utils').normalizeTypes + , etag = require('./utils').etag + , statusCodes = http.STATUS_CODES + , cookie = require('cookie') + , send = require('send') + , mime = connect.mime + , basename = path.basename + , extname = path.extname + , join = path.join; + +/** + * Response prototype. + */ + +var res = module.exports = { + __proto__: http.ServerResponse.prototype +}; + +/** + * Set status `code`. + * + * @param {Number} code + * @return {ServerResponse} + * @api public + */ + +res.status = function(code){ + this.statusCode = code; + return this; +}; + +/** + * Set Link header field with the given `links`. + * + * Examples: + * + * res.links({ + * next: 'http://api.example.com/users?page=2', + * last: 'http://api.example.com/users?page=5' + * }); + * + * @param {Object} links + * @return {ServerResponse} + * @api public + */ + +res.links = function(links){ + return this.set('Link', Object.keys(links).map(function(rel){ + return '<' + links[rel] + '>; rel="' + rel + '"'; + }).join(', ')); +}; + +/** + * Send a response. + * + * Examples: + * + * res.send(new Buffer('wahoo')); + * res.send({ some: 'json' }); + * res.send('

some html

'); + * res.send(404, 'Sorry, cant find that'); + * res.send(404); + * + * @param {Mixed} body or status + * @param {Mixed} body + * @return {ServerResponse} + * @api public + */ + +res.send = function(body){ + var req = this.req; + var head = 'HEAD' == req.method; + var len; + + // allow status / body + if (2 == arguments.length) { + // res.send(body, status) backwards compat + if ('number' != typeof body && 'number' == typeof arguments[1]) { + this.statusCode = arguments[1]; + } else { + this.statusCode = body; + body = arguments[1]; + } + } + + switch (typeof body) { + // response status + case 'number': + this.get('Content-Type') || this.type('txt'); + this.statusCode = body; + body = http.STATUS_CODES[body]; + break; + // string defaulting to html + case 'string': + if (!this.get('Content-Type')) { + this.charset = this.charset || 'utf-8'; + this.type('html'); + } + break; + case 'boolean': + case 'object': + if (null == body) { + body = ''; + } else if (Buffer.isBuffer(body)) { + this.get('Content-Type') || this.type('bin'); + } else { + return this.json(body); + } + break; + } + + // populate Content-Length + if (undefined !== body && !this.get('Content-Length')) { + this.set('Content-Length', len = Buffer.isBuffer(body) + ? body.length + : Buffer.byteLength(body)); + } + + // ETag support + // TODO: W/ support + if (len > 1024 && 'GET' == req.method) { + if (!this.get('ETag')) { + this.set('ETag', etag(body)); + } + } + + // freshness + if (req.fresh) this.statusCode = 304; + + // strip irrelevant headers + if (204 == this.statusCode || 304 == this.statusCode) { + this.removeHeader('Content-Type'); + this.removeHeader('Content-Length'); + this.removeHeader('Transfer-Encoding'); + body = ''; + } + + // respond + this.end(head ? null : body); + return this; +}; + +/** + * Send JSON response. + * + * Examples: + * + * res.json(null); + * res.json({ user: 'tj' }); + * res.json(500, 'oh noes!'); + * res.json(404, 'I dont have that'); + * + * @param {Mixed} obj or status + * @param {Mixed} obj + * @return {ServerResponse} + * @api public + */ + +res.json = function(obj){ + // allow status / body + if (2 == arguments.length) { + // res.json(body, status) backwards compat + if ('number' == typeof arguments[1]) { + this.statusCode = arguments[1]; + } else { + this.statusCode = obj; + obj = arguments[1]; + } + } + + // settings + var app = this.app; + var replacer = app.get('json replacer'); + var spaces = app.get('json spaces'); + var body = JSON.stringify(obj, replacer, spaces); + + // content-type + this.charset = this.charset || 'utf-8'; + this.get('Content-Type') || this.set('Content-Type', 'application/json'); + + return this.send(body); +}; + +/** + * Send JSON response with JSONP callback support. + * + * Examples: + * + * res.jsonp(null); + * res.jsonp({ user: 'tj' }); + * res.jsonp(500, 'oh noes!'); + * res.jsonp(404, 'I dont have that'); + * + * @param {Mixed} obj or status + * @param {Mixed} obj + * @return {ServerResponse} + * @api public + */ + +res.jsonp = function(obj){ + // allow status / body + if (2 == arguments.length) { + // res.json(body, status) backwards compat + if ('number' == typeof arguments[1]) { + this.statusCode = arguments[1]; + } else { + this.statusCode = obj; + obj = arguments[1]; + } + } + + // settings + var app = this.app; + var replacer = app.get('json replacer'); + var spaces = app.get('json spaces'); + var body = JSON.stringify(obj, replacer, spaces) + .replace(/\u2028/g, '\\u2028') + .replace(/\u2029/g, '\\u2029'); + var callback = this.req.query[app.get('jsonp callback name')]; + + // content-type + this.charset = this.charset || 'utf-8'; + this.set('Content-Type', 'application/json'); + + // jsonp + if (callback) { + this.set('Content-Type', 'text/javascript'); + var cb = callback.replace(/[^\[\]\w$.]/g, ''); + body = cb + ' && ' + cb + '(' + body + ');'; + } + + return this.send(body); +}; + +/** + * Transfer the file at the given `path`. + * + * Automatically sets the _Content-Type_ response header field. + * The callback `fn(err)` is invoked when the transfer is complete + * or when an error occurs. Be sure to check `res.sentHeader` + * if you wish to attempt responding, as the header and some data + * may have already been transferred. + * + * Options: + * + * - `maxAge` defaulting to 0 + * - `root` root directory for relative filenames + * + * Examples: + * + * The following example illustrates how `res.sendfile()` may + * be used as an alternative for the `static()` middleware for + * dynamic situations. The code backing `res.sendfile()` is actually + * the same code, so HTTP cache support etc is identical. + * + * app.get('/user/:uid/photos/:file', function(req, res){ + * var uid = req.params.uid + * , file = req.params.file; + * + * req.user.mayViewFilesFrom(uid, function(yes){ + * if (yes) { + * res.sendfile('/uploads/' + uid + '/' + file); + * } else { + * res.send(403, 'Sorry! you cant see that.'); + * } + * }); + * }); + * + * @param {String} path + * @param {Object|Function} options or fn + * @param {Function} fn + * @api public + */ + +res.sendfile = function(path, options, fn){ + var self = this + , req = self.req + , next = this.req.next + , options = options || {} + , done; + + // support function as second arg + if ('function' == typeof options) { + fn = options; + options = {}; + } + + // socket errors + req.socket.on('error', error); + + // errors + function error(err) { + if (done) return; + done = true; + + // clean up + cleanup(); + if (!self.headerSent) self.removeHeader('Content-Disposition'); + + // callback available + if (fn) return fn(err); + + // list in limbo if there's no callback + if (self.headerSent) return; + + // delegate + next(err); + } + + // streaming + function stream() { + if (done) return; + cleanup(); + if (fn) self.on('finish', fn); + } + + // cleanup + function cleanup() { + req.socket.removeListener('error', error); + } + + // transfer + var file = send(req, path); + if (options.root) file.root(options.root); + file.maxage(options.maxAge || 0); + file.on('error', error); + file.on('directory', next); + file.on('stream', stream); + file.pipe(this); + this.on('finish', cleanup); +}; + +/** + * Transfer the file at the given `path` as an attachment. + * + * Optionally providing an alternate attachment `filename`, + * and optional callback `fn(err)`. The callback is invoked + * when the data transfer is complete, or when an error has + * ocurred. Be sure to check `res.headerSent` if you plan to respond. + * + * This method uses `res.sendfile()`. + * + * @param {String} path + * @param {String|Function} filename or fn + * @param {Function} fn + * @api public + */ + +res.download = function(path, filename, fn){ + // support function as second arg + if ('function' == typeof filename) { + fn = filename; + filename = null; + } + + filename = filename || path; + this.set('Content-Disposition', 'attachment; filename="' + basename(filename) + '"'); + return this.sendfile(path, fn); +}; + +/** + * Set _Content-Type_ response header with `type` through `mime.lookup()` + * when it does not contain "/", or set the Content-Type to `type` otherwise. + * + * Examples: + * + * res.type('.html'); + * res.type('html'); + * res.type('json'); + * res.type('application/json'); + * res.type('png'); + * + * @param {String} type + * @return {ServerResponse} for chaining + * @api public + */ + +res.contentType = +res.type = function(type){ + return this.set('Content-Type', ~type.indexOf('/') + ? type + : mime.lookup(type)); +}; + +/** + * Respond to the Acceptable formats using an `obj` + * of mime-type callbacks. + * + * This method uses `req.accepted`, an array of + * acceptable types ordered by their quality values. + * When "Accept" is not present the _first_ callback + * is invoked, otherwise the first match is used. When + * no match is performed the server responds with + * 406 "Not Acceptable". + * + * Content-Type is set for you, however if you choose + * you may alter this within the callback using `res.type()` + * or `res.set('Content-Type', ...)`. + * + * res.format({ + * 'text/plain': function(){ + * res.send('hey'); + * }, + * + * 'text/html': function(){ + * res.send('

hey

'); + * }, + * + * 'appliation/json': function(){ + * res.send({ message: 'hey' }); + * } + * }); + * + * In addition to canonicalized MIME types you may + * also use extnames mapped to these types: + * + * res.format({ + * text: function(){ + * res.send('hey'); + * }, + * + * html: function(){ + * res.send('

hey

'); + * }, + * + * json: function(){ + * res.send({ message: 'hey' }); + * } + * }); + * + * By default Express passes an `Error` + * with a `.status` of 406 to `next(err)` + * if a match is not made. If you provide + * a `.default` callback it will be invoked + * instead. + * + * @param {Object} obj + * @return {ServerResponse} for chaining + * @api public + */ + +res.format = function(obj){ + var req = this.req + , next = req.next; + + var fn = obj.default; + if (fn) delete obj.default; + var keys = Object.keys(obj); + + var key = req.accepts(keys); + + this.set('Vary', 'Accept'); + + if (key) { + this.set('Content-Type', normalizeType(key).value); + obj[key](req, this, next); + } else if (fn) { + fn(); + } else { + var err = new Error('Not Acceptable'); + err.status = 406; + err.types = normalizeTypes(keys).map(function(o){ return o.value }); + next(err); + } + + return this; +}; + +/** + * Set _Content-Disposition_ header to _attachment_ with optional `filename`. + * + * @param {String} filename + * @return {ServerResponse} + * @api public + */ + +res.attachment = function(filename){ + if (filename) this.type(extname(filename)); + this.set('Content-Disposition', filename + ? 'attachment; filename="' + basename(filename) + '"' + : 'attachment'); + return this; +}; + +/** + * Set header `field` to `val`, or pass + * an object of header fields. + * + * Examples: + * + * res.set('Foo', ['bar', 'baz']); + * res.set('Accept', 'application/json'); + * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); + * + * Aliased as `res.header()`. + * + * @param {String|Object|Array} field + * @param {String} val + * @return {ServerResponse} for chaining + * @api public + */ + +res.set = +res.header = function(field, val){ + if (2 == arguments.length) { + if (Array.isArray(val)) val = val.map(String); + else val = String(val); + this.setHeader(field, val); + } else { + for (var key in field) { + this.set(key, field[key]); + } + } + return this; +}; + +/** + * Get value for header `field`. + * + * @param {String} field + * @return {String} + * @api public + */ + +res.get = function(field){ + return this.getHeader(field); +}; + +/** + * Clear cookie `name`. + * + * @param {String} name + * @param {Object} options + * @param {ServerResponse} for chaining + * @api public + */ + +res.clearCookie = function(name, options){ + var opts = { expires: new Date(1), path: '/' }; + return this.cookie(name, '', options + ? utils.merge(opts, options) + : opts); +}; + +/** + * Set cookie `name` to `val`, with the given `options`. + * + * Options: + * + * - `maxAge` max-age in milliseconds, converted to `expires` + * - `signed` sign the cookie + * - `path` defaults to "/" + * + * Examples: + * + * // "Remember Me" for 15 minutes + * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); + * + * // save as above + * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) + * + * @param {String} name + * @param {String|Object} val + * @param {Options} options + * @api public + */ + +res.cookie = function(name, val, options){ + options = utils.merge({}, options); + var secret = this.req.secret; + var signed = options.signed; + if (signed && !secret) throw new Error('connect.cookieParser("secret") required for signed cookies'); + if ('number' == typeof val) val = val.toString(); + if ('object' == typeof val) val = 'j:' + JSON.stringify(val); + if (signed) val = 's:' + sign(val, secret); + if ('maxAge' in options) { + options.expires = new Date(Date.now() + options.maxAge); + options.maxAge /= 1000; + } + if (null == options.path) options.path = '/'; + this.set('Set-Cookie', cookie.serialize(name, String(val), options)); + return this; +}; + + +/** + * Set the location header to `url`. + * + * The given `url` can also be the name of a mapped url, for + * example by default express supports "back" which redirects + * to the _Referrer_ or _Referer_ headers or "/". + * + * Examples: + * + * res.location('/foo/bar').; + * res.location('http://example.com'); + * res.location('../login'); // /blog/post/1 -> /blog/login + * + * Mounting: + * + * When an application is mounted and `res.location()` + * is given a path that does _not_ lead with "/" it becomes + * relative to the mount-point. For example if the application + * is mounted at "/blog", the following would become "/blog/login". + * + * res.location('login'); + * + * While the leading slash would result in a location of "/login": + * + * res.location('/login'); + * + * @param {String} url + * @api public + */ + +res.location = function(url){ + var app = this.app + , req = this.req; + + // setup redirect map + var map = { back: req.get('Referrer') || '/' }; + + // perform redirect + url = map[url] || url; + + // relative + if (!~url.indexOf('://') && 0 != url.indexOf('//')) { + var path + + // relative to path + if ('.' == url[0]) { + path = req.originalUrl.split('?')[0] + url = path + ('/' == path[path.length - 1] ? '' : '/') + url; + // relative to mount-point + } else if ('/' != url[0]) { + path = app.path(); + url = path + '/' + url; + } + } + + // Respond + this.set('Location', url); + return this; +}; + +/** + * Redirect to the given `url` with optional response `status` + * defaulting to 302. + * + * The resulting `url` is determined by `res.location()`, so + * it will play nicely with mounted apps, relative paths, + * `"back"` etc. + * + * Examples: + * + * res.redirect('/foo/bar'); + * res.redirect('http://example.com'); + * res.redirect(301, 'http://example.com'); + * res.redirect('http://example.com', 301); + * res.redirect('../login'); // /blog/post/1 -> /blog/login + * + * @param {String} url + * @param {Number} code + * @api public + */ + +res.redirect = function(url){ + var app = this.app + , head = 'HEAD' == this.req.method + , status = 302 + , body; + + // allow status / url + if (2 == arguments.length) { + if ('number' == typeof url) { + status = url; + url = arguments[1]; + } else { + status = arguments[1]; + } + } + + // Set location header + this.location(url); + url = this.get('Location'); + + // Support text/{plain,html} by default + this.format({ + text: function(){ + body = statusCodes[status] + '. Redirecting to ' + encodeURI(url); + }, + + html: function(){ + var u = utils.escape(url); + body = '

' + statusCodes[status] + '. Redirecting to ' + u + '

'; + }, + + default: function(){ + body = ''; + } + }); + + // Respond + this.statusCode = status; + this.set('Content-Length', Buffer.byteLength(body)); + this.end(head ? null : body); +}; + +/** + * Render `view` with the given `options` and optional callback `fn`. + * When a callback function is given a response will _not_ be made + * automatically, otherwise a response of _200_ and _text/html_ is given. + * + * Options: + * + * - `cache` boolean hinting to the engine it should cache + * - `filename` filename of the view being rendered + * + * @param {String} view + * @param {Object|Function} options or callback function + * @param {Function} fn + * @api public + */ + +res.render = function(view, options, fn){ + var self = this + , options = options || {} + , req = this.req + , app = req.app; + + // support callback function as second arg + if ('function' == typeof options) { + fn = options, options = {}; + } + + // merge res.locals + options._locals = self.locals; + + // default callback to respond + fn = fn || function(err, str){ + if (err) return req.next(err); + self.send(str); + }; + + // render + app.render(view, options, fn); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/router/index.js b/nodejs-mysql-tutorial/node_modules/express/lib/router/index.js new file mode 100644 index 0000000..662dc29 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/router/index.js @@ -0,0 +1,273 @@ +/** + * Module dependencies. + */ + +var Route = require('./route') + , utils = require('../utils') + , methods = require('methods') + , debug = require('debug')('express:router') + , parse = require('connect').utils.parseUrl; + +/** + * Expose `Router` constructor. + */ + +exports = module.exports = Router; + +/** + * Initialize a new `Router` with the given `options`. + * + * @param {Object} options + * @api private + */ + +function Router(options) { + options = options || {}; + var self = this; + this.map = {}; + this.params = {}; + this._params = []; + this.caseSensitive = options.caseSensitive; + this.strict = options.strict; + this.middleware = function router(req, res, next){ + self._dispatch(req, res, next); + }; +} + +/** + * Register a param callback `fn` for the given `name`. + * + * @param {String|Function} name + * @param {Function} fn + * @return {Router} for chaining + * @api public + */ + +Router.prototype.param = function(name, fn){ + // param logic + if ('function' == typeof name) { + this._params.push(name); + return; + } + + // apply param functions + var params = this._params + , len = params.length + , ret; + + for (var i = 0; i < len; ++i) { + if (ret = params[i](name, fn)) { + fn = ret; + } + } + + // ensure we end up with a + // middleware function + if ('function' != typeof fn) { + throw new Error('invalid param() call for ' + name + ', got ' + fn); + } + + (this.params[name] = this.params[name] || []).push(fn); + return this; +}; + +/** + * Route dispatcher aka the route "middleware". + * + * @param {IncomingMessage} req + * @param {ServerResponse} res + * @param {Function} next + * @api private + */ + +Router.prototype._dispatch = function(req, res, next){ + var params = this.params + , self = this; + + debug('dispatching %s %s (%s)', req.method, req.url, req.originalUrl); + + // route dispatch + (function pass(i, err){ + var paramCallbacks + , paramIndex = 0 + , paramVal + , route + , keys + , key; + + // match next route + function nextRoute(err) { + pass(req._route_index + 1, err); + } + + // match route + req.route = route = self.matchRequest(req, i); + + // no route + if (!route) return next(err); + debug('matched %s %s', route.method, route.path); + + // we have a route + // start at param 0 + req.params = route.params; + keys = route.keys; + i = 0; + + // param callbacks + function param(err) { + paramIndex = 0; + key = keys[i++]; + paramVal = key && req.params[key.name]; + paramCallbacks = key && params[key.name]; + + try { + if ('route' == err) { + nextRoute(); + } else if (err) { + i = 0; + callbacks(err); + } else if (paramCallbacks && undefined !== paramVal) { + paramCallback(); + } else if (key) { + param(); + } else { + i = 0; + callbacks(); + } + } catch (err) { + param(err); + } + }; + + param(err); + + // single param callbacks + function paramCallback(err) { + var fn = paramCallbacks[paramIndex++]; + if (err || !fn) return param(err); + fn(req, res, paramCallback, paramVal, key.name); + } + + // invoke route callbacks + function callbacks(err) { + var fn = route.callbacks[i++]; + try { + if ('route' == err) { + nextRoute(); + } else if (err && fn) { + if (fn.length < 4) return callbacks(err); + fn(err, req, res, callbacks); + } else if (fn) { + if (fn.length < 4) return fn(req, res, callbacks); + callbacks(); + } else { + nextRoute(err); + } + } catch (err) { + callbacks(err); + } + } + })(0); +}; + +/** + * Attempt to match a route for `req` + * with optional starting index of `i` + * defaulting to 0. + * + * @param {IncomingMessage} req + * @param {Number} i + * @return {Route} + * @api private + */ + +Router.prototype.matchRequest = function(req, i, head){ + var method = req.method.toLowerCase() + , url = parse(req) + , path = url.pathname + , routes = this.map + , i = i || 0 + , route; + + // HEAD support + if (!head && 'head' == method) { + route = this.matchRequest(req, i, true); + if (route) return route; + method = 'get'; + } + + // routes for this method + if (routes = routes[method]) { + + // matching routes + for (var len = routes.length; i < len; ++i) { + route = routes[i]; + if (route.match(path)) { + req._route_index = i; + return route; + } + } + } +}; + +/** + * Attempt to match a route for `method` + * and `url` with optional starting + * index of `i` defaulting to 0. + * + * @param {String} method + * @param {String} url + * @param {Number} i + * @return {Route} + * @api private + */ + +Router.prototype.match = function(method, url, i, head){ + var req = { method: method, url: url }; + return this.matchRequest(req, i, head); +}; + +/** + * Route `method`, `path`, and one or more callbacks. + * + * @param {String} method + * @param {String} path + * @param {Function} callback... + * @return {Router} for chaining + * @api private + */ + +Router.prototype.route = function(method, path, callbacks){ + var method = method.toLowerCase() + , callbacks = utils.flatten([].slice.call(arguments, 2)); + + // ensure path was given + if (!path) throw new Error('Router#' + method + '() requires a path'); + + // ensure all callbacks are functions + callbacks.forEach(function(fn, i){ + if ('function' == typeof fn) return; + var type = {}.toString.call(fn); + var msg = '.' + method + '() requires callback functions but got a ' + type; + throw new Error(msg); + }); + + // create the route + debug('defined %s %s', method, path); + var route = new Route(method, path, callbacks, { + sensitive: this.caseSensitive, + strict: this.strict + }); + + // add it + (this.map[method] = this.map[method] || []).push(route); + return this; +}; + +methods.forEach(function(method){ + Router.prototype[method] = function(path){ + var args = [method].concat([].slice.call(arguments)); + this.route.apply(this, args); + return this; + }; +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/router/route.js b/nodejs-mysql-tutorial/node_modules/express/lib/router/route.js new file mode 100644 index 0000000..c1a0b5e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/router/route.js @@ -0,0 +1,72 @@ + +/** + * Module dependencies. + */ + +var utils = require('../utils'); + +/** + * Expose `Route`. + */ + +module.exports = Route; + +/** + * Initialize `Route` with the given HTTP `method`, `path`, + * and an array of `callbacks` and `options`. + * + * Options: + * + * - `sensitive` enable case-sensitive routes + * - `strict` enable strict matching for trailing slashes + * + * @param {String} method + * @param {String} path + * @param {Array} callbacks + * @param {Object} options. + * @api private + */ + +function Route(method, path, callbacks, options) { + options = options || {}; + this.path = path; + this.method = method; + this.callbacks = callbacks; + this.regexp = utils.pathRegexp(path + , this.keys = [] + , options.sensitive + , options.strict); +} + +/** + * Check if this route matches `path`, if so + * populate `.params`. + * + * @param {String} path + * @return {Boolean} + * @api private + */ + +Route.prototype.match = function(path){ + var keys = this.keys + , params = this.params = [] + , m = this.regexp.exec(path); + + if (!m) return false; + + for (var i = 1, len = m.length; i < len; ++i) { + var key = keys[i - 1]; + + var val = 'string' == typeof m[i] + ? decodeURIComponent(m[i]) + : m[i]; + + if (key) { + params[key.name] = val; + } else { + params.push(val); + } + } + + return true; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/utils.js b/nodejs-mysql-tutorial/node_modules/express/lib/utils.js new file mode 100644 index 0000000..fd245a8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/utils.js @@ -0,0 +1,313 @@ + +/** + * Module dependencies. + */ + +var mime = require('connect').mime + , crc32 = require('buffer-crc32'); + +/** + * toString ref. + */ + +var toString = {}.toString; + +/** + * Return ETag for `body`. + * + * @param {String|Buffer} body + * @return {String} + * @api private + */ + +exports.etag = function(body){ + return '"' + crc32.signed(body) + '"'; +}; + +/** + * Make `locals()` bound to the given `obj`. + * + * This is used for `app.locals` and `res.locals`. + * + * @param {Object} obj + * @return {Function} + * @api private + */ + +exports.locals = function(obj){ + function locals(obj){ + for (var key in obj) locals[key] = obj[key]; + return obj; + }; + + return locals; +}; + +/** + * Check if `path` looks absolute. + * + * @param {String} path + * @return {Boolean} + * @api private + */ + +exports.isAbsolute = function(path){ + if ('/' == path[0]) return true; + if (':' == path[1] && '\\' == path[2]) return true; +}; + +/** + * Flatten the given `arr`. + * + * @param {Array} arr + * @return {Array} + * @api private + */ + +exports.flatten = function(arr, ret){ + var ret = ret || [] + , len = arr.length; + for (var i = 0; i < len; ++i) { + if (Array.isArray(arr[i])) { + exports.flatten(arr[i], ret); + } else { + ret.push(arr[i]); + } + } + return ret; +}; + +/** + * Normalize the given `type`, for example "html" becomes "text/html". + * + * @param {String} type + * @return {Object} + * @api private + */ + +exports.normalizeType = function(type){ + return ~type.indexOf('/') + ? acceptParams(type) + : { value: mime.lookup(type), params: {} }; +}; + +/** + * Normalize `types`, for example "html" becomes "text/html". + * + * @param {Array} types + * @return {Array} + * @api private + */ + +exports.normalizeTypes = function(types){ + var ret = []; + + for (var i = 0; i < types.length; ++i) { + ret.push(exports.normalizeType(types[i])); + } + + return ret; +}; + +/** + * Return the acceptable type in `types`, if any. + * + * @param {Array} types + * @param {String} str + * @return {String} + * @api private + */ + +exports.acceptsArray = function(types, str){ + // accept anything when Accept is not present + if (!str) return types[0]; + + // parse + var accepted = exports.parseAccept(str) + , normalized = exports.normalizeTypes(types) + , len = accepted.length; + + for (var i = 0; i < len; ++i) { + for (var j = 0, jlen = types.length; j < jlen; ++j) { + if (exports.accept(normalized[j], accepted[i])) { + return types[j]; + } + } + } +}; + +/** + * Check if `type(s)` are acceptable based on + * the given `str`. + * + * @param {String|Array} type(s) + * @param {String} str + * @return {Boolean|String} + * @api private + */ + +exports.accepts = function(type, str){ + if ('string' == typeof type) type = type.split(/ *, */); + return exports.acceptsArray(type, str); +}; + +/** + * Check if `type` array is acceptable for `other`. + * + * @param {Object} type + * @param {Object} other + * @return {Boolean} + * @api private + */ + +exports.accept = function(type, other){ + var t = type.value.split('/'); + return (t[0] == other.type || '*' == other.type) + && (t[1] == other.subtype || '*' == other.subtype) + && paramsEqual(type.params, other.params); +}; + +/** + * Check if accept params are equal. + * + * @param {Object} a + * @param {Object} b + * @return {Boolean} + * @api private + */ + +function paramsEqual(a, b){ + return !Object.keys(a).some(function(k) { + return a[k] != b[k]; + }); +} + +/** + * Parse accept `str`, returning + * an array objects containing + * `.type` and `.subtype` along + * with the values provided by + * `parseQuality()`. + * + * @param {Type} name + * @return {Type} + * @api private + */ + +exports.parseAccept = function(str){ + return exports + .parseParams(str) + .map(function(obj){ + var parts = obj.value.split('/'); + obj.type = parts[0]; + obj.subtype = parts[1]; + return obj; + }); +}; + +/** + * Parse quality `str`, returning an + * array of objects with `.value`, + * `.quality` and optional `.params` + * + * @param {String} str + * @return {Array} + * @api private + */ + +exports.parseParams = function(str){ + return str + .split(/ *, */) + .map(acceptParams) + .filter(function(obj){ + return obj.quality; + }) + .sort(function(a, b){ + if (a.quality === b.quality) { + return a.originalIndex - b.originalIndex; + } else { + return b.quality - a.quality; + } + }); +}; + +/** + * Parse accept params `str` returning an + * object with `.value`, `.quality` and `.params`. + * also includes `.originalIndex` for stable sorting + * + * @param {String} str + * @return {Object} + * @api private + */ + +function acceptParams(str, index) { + var parts = str.split(/ *; */); + var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index }; + + for (var i = 1; i < parts.length; ++i) { + var pms = parts[i].split(/ *= */); + if ('q' == pms[0]) { + ret.quality = parseFloat(pms[1]); + } else { + ret.params[pms[0]] = pms[1]; + } + } + + return ret; +} + +/** + * Escape special characters in the given string of html. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html) { + return String(html) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(//g, '>'); +}; + +/** + * Normalize the given path string, + * returning a regular expression. + * + * An empty array should be passed, + * which will contain the placeholder + * key names. For example "/user/:id" will + * then contain ["id"]. + * + * @param {String|RegExp|Array} path + * @param {Array} keys + * @param {Boolean} sensitive + * @param {Boolean} strict + * @return {RegExp} + * @api private + */ + +exports.pathRegexp = function(path, keys, sensitive, strict) { + if (toString.call(path) == '[object RegExp]') return path; + if (Array.isArray(path)) path = '(' + path.join('|') + ')'; + path = path + .concat(strict ? '' : '/?') + .replace(/\/\(/g, '(?:/') + .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g, function(_, slash, format, key, capture, optional, star){ + keys.push({ name: key, optional: !! optional }); + slash = slash || ''; + return '' + + (optional ? '' : slash) + + '(?:' + + (optional ? slash : '') + + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' + + (optional || '') + + (star ? '(/*)?' : ''); + }) + .replace(/([\/.])/g, '\\$1') + .replace(/\*/g, '(.*)'); + return new RegExp('^' + path + '$', sensitive ? '' : 'i'); +} diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/view.js b/nodejs-mysql-tutorial/node_modules/express/lib/view.js new file mode 100644 index 0000000..b9dc69e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/lib/view.js @@ -0,0 +1,77 @@ +/** + * Module dependencies. + */ + +var path = require('path') + , fs = require('fs') + , utils = require('./utils') + , dirname = path.dirname + , basename = path.basename + , extname = path.extname + , exists = fs.existsSync || path.existsSync + , join = path.join; + +/** + * Expose `View`. + */ + +module.exports = View; + +/** + * Initialize a new `View` with the given `name`. + * + * Options: + * + * - `defaultEngine` the default template engine name + * - `engines` template engine require() cache + * - `root` root path for view lookup + * + * @param {String} name + * @param {Object} options + * @api private + */ + +function View(name, options) { + options = options || {}; + this.name = name; + this.root = options.root; + var engines = options.engines; + this.defaultEngine = options.defaultEngine; + var ext = this.ext = extname(name); + if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.'); + if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine); + this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); + this.path = this.lookup(name); +} + +/** + * Lookup view by the given `path` + * + * @param {String} path + * @return {String} + * @api private + */ + +View.prototype.lookup = function(path){ + var ext = this.ext; + + // . + if (!utils.isAbsolute(path)) path = join(this.root, path); + if (exists(path)) return path; + + // /index. + path = join(dirname(path), basename(path, ext), 'index' + ext); + if (exists(path)) return path; +}; + +/** + * Render with the given `options` and callback `fn(err, str)`. + * + * @param {Object} options + * @param {Function} fn + * @api private + */ + +View.prototype.render = function(options, fn){ + this.engine(this.path, options, fn); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml new file mode 100644 index 0000000..7a902e8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - 0.6 + - 0.8 +notifications: + email: + recipients: + - brianloveswords@gmail.com \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md new file mode 100644 index 0000000..0d9d8b8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md @@ -0,0 +1,47 @@ +# buffer-crc32 + +[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32) + +crc32 that works with binary data and fancy character sets, outputs +buffer, signed or unsigned data and has tests. + +Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix + +# install +``` +npm install buffer-crc32 +``` + +# example +```js +var crc32 = require('buffer-crc32'); +// works with buffers +var buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00]) +crc32(buf) // -> + +// has convenience methods for getting signed or unsigned ints +crc32.signed(buf) // -> -1805997238 +crc32.unsigned(buf) // -> 2488970058 + +// will cast to buffer if given a string, so you can +// directly use foreign characters safely +crc32('自動販売機') // -> + +// and works in append mode too +var partialCrc = crc32('hey'); +var partialCrc = crc32(' ', partialCrc); +var partialCrc = crc32('sup', partialCrc); +var partialCrc = crc32(' ', partialCrc); +var finalCrc = crc32('bros', partialCrc); // -> +``` + +# tests +This was tested against the output of zlib's crc32 method. You can run +the tests with`npm test` (requires tap) + +# see also +https://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also +supports buffer inputs and return unsigned ints (thanks @tjholowaychuk). + +# license +MIT/X11 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js new file mode 100644 index 0000000..e29ce3e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js @@ -0,0 +1,88 @@ +var Buffer = require('buffer').Buffer; + +var CRC_TABLE = [ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d +]; + +function bufferizeInt(num) { + var tmp = Buffer(4); + tmp.writeInt32BE(num, 0); + return tmp; +} + +function _crc32(buf, previous) { + if (!Buffer.isBuffer(buf)) { + buf = Buffer(buf); + } + if (Buffer.isBuffer(previous)) { + previous = previous.readUInt32BE(0); + } + var crc = ~~previous ^ -1; + for (var n = 0; n < buf.length; n++) { + crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8); + } + return (crc ^ -1); +} + +function crc32() { + return bufferizeInt(_crc32.apply(null, arguments)); +} +crc32.signed = function () { + return _crc32.apply(null, arguments); +}; +crc32.unsigned = function () { + return _crc32.apply(null, arguments) >>> 0; +}; + +module.exports = crc32; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json new file mode 100644 index 0000000..4bb469a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json @@ -0,0 +1,39 @@ +{ + "author": { + "name": "Brian J. Brennan", + "email": "brianloveswords@gmail.com", + "url": "http://bjb.io" + }, + "name": "buffer-crc32", + "description": "A pure javascript CRC32 algorithm that plays nice with binary data", + "version": "0.2.1", + "contributors": [ + { + "name": "Vladimir Kuznetsov" + } + ], + "homepage": "https://github.com/brianloveswords/buffer-crc32", + "repository": { + "type": "git", + "url": "git://github.com/brianloveswords/buffer-crc32.git" + }, + "main": "index.js", + "scripts": { + "test": "./node_modules/.bin/tap tests/*.test.js" + }, + "dependencies": {}, + "devDependencies": { + "tap": "~0.2.5" + }, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> \n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('自動販売機') // -> \n\n// and works in append mode too\nvar partialCrc = crc32('hey');\nvar partialCrc = crc32(' ', partialCrc);\nvar partialCrc = crc32('sup', partialCrc);\nvar partialCrc = crc32(' ', partialCrc);\nvar finalCrc = crc32('bros', partialCrc); // -> \n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n\n# see also\nhttps://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also\nsupports buffer inputs and return unsigned ints (thanks @tjholowaychuk).\n\n# license\nMIT/X11\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/brianloveswords/buffer-crc32/issues" + }, + "_id": "buffer-crc32@0.2.1", + "_from": "buffer-crc32@0.2.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js new file mode 100644 index 0000000..bb0f9ef --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js @@ -0,0 +1,89 @@ +var crc32 = require('..'); +var test = require('tap').test; + +test('simple crc32 is no problem', function (t) { + var input = Buffer('hey sup bros'); + var expected = Buffer([0x47, 0xfa, 0x55, 0x70]); + t.same(crc32(input), expected); + t.end(); +}); + +test('another simple one', function (t) { + var input = Buffer('IEND'); + var expected = Buffer([0xae, 0x42, 0x60, 0x82]); + t.same(crc32(input), expected); + t.end(); +}); + +test('slightly more complex', function (t) { + var input = Buffer([0x00, 0x00, 0x00]); + var expected = Buffer([0xff, 0x41, 0xd9, 0x12]); + t.same(crc32(input), expected); + t.end(); +}); + +test('complex crc32 gets calculated like a champ', function (t) { + var input = Buffer('शीर्षक'); + var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); + t.same(crc32(input), expected); + t.end(); +}); + +test('casts to buffer if necessary', function (t) { + var input = 'शीर्षक'; + var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); + t.same(crc32(input), expected); + t.end(); +}); + +test('can do signed', function (t) { + var input = 'ham sandwich'; + var expected = -1891873021; + t.same(crc32.signed(input), expected); + t.end(); +}); + +test('can do unsigned', function (t) { + var input = 'bear sandwich'; + var expected = 3711466352; + t.same(crc32.unsigned(input), expected); + t.end(); +}); + + +test('simple crc32 in append mode', function (t) { + var input = [Buffer('hey'), Buffer(' '), Buffer('sup'), Buffer(' '), Buffer('bros')]; + var expected = Buffer([0x47, 0xfa, 0x55, 0x70]); + for (var crc = 0, i = 0; i < input.length; i++) { + crc = crc32(input[i], crc); + } + t.same(crc, expected); + t.end(); +}); + + +test('can do signed in append mode', function (t) { + var input1 = 'ham'; + var input2 = ' '; + var input3 = 'sandwich'; + var expected = -1891873021; + + var crc = crc32.signed(input1); + crc = crc32.signed(input2, crc); + crc = crc32.signed(input3, crc); + + t.same(crc, expected); + t.end(); +}); + +test('can do unsigned in append mode', function (t) { + var input1 = 'bear san'; + var input2 = 'dwich'; + var expected = 3711466352; + + var crc = crc32.unsigned(input1); + crc = crc32.unsigned(input2, crc); + t.same(crc, expected); + t.end(); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md new file mode 100644 index 0000000..4961d2e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md @@ -0,0 +1,107 @@ + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile new file mode 100644 index 0000000..0074625 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile @@ -0,0 +1,7 @@ + +TESTS = $(shell find test/test.*.js) + +test: + @./test/run $(TESTS) + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md new file mode 100644 index 0000000..b8328c3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md @@ -0,0 +1,262 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineappe'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineappe + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .prompt(msg, fn) + + Single-line prompt: + +```js +program.prompt('name: ', function(name){ + console.log('hi %s', name); +}); +``` + + Multi-line prompt: + +```js +program.prompt('description:', function(name){ + console.log('hi %s', name); +}); +``` + + Coercion: + +```js +program.prompt('Age: ', Number, function(age){ + console.log('age: %j', age); +}); +``` + +```js +program.prompt('Birthdate: ', Date, function(date){ + console.log('date: %s', date); +}); +``` + +## .password(msg[, mask], fn) + +Prompt for password without echoing: + +```js +program.password('Password: ', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +Prompt for password with mask char "*": + +```js +program.password('Password: ', '*', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +## .confirm(msg, fn) + + Confirm with the given `msg`: + +```js +program.confirm('continue? ', function(ok){ + console.log(' got %j', ok); +}); +``` + +## .choose(list, fn) + + Let the user choose from a `list`: + +```js +var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + +console.log('Choose the coolest pet:'); +program.choose(list, function(i){ + console.log('you chose %d "%s"', i, list[i]); +}); +``` + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js new file mode 100644 index 0000000..06ec1e4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/commander'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js new file mode 100644 index 0000000..5ba87eb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js @@ -0,0 +1,1026 @@ + +/*! + * commander + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , path = require('path') + , tty = require('tty') + , basename = path.basename; + +/** + * Expose the root command. + */ + +exports = module.exports = new Command; + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = ~flags.indexOf('<'); + this.optional = ~flags.indexOf('['); + this.bool = !~flags.indexOf('-no-'); + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function(){ + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg){ + return arg == this.short + || arg == this.long; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this.args = []; + this.name = name; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Command.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function(){ + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd){ + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env){ + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name){ + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + return cmd; +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args){ + if (!args.length) return; + var self = this; + args.forEach(function(arg){ + switch (arg[0]) { + case '<': + self.args.push({ required: true, name: arg.slice(1, -1) }); + break; + case '[': + self.args.push({ required: false, name: arg.slice(1, -1) }); + break; + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function(){ + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn){ + var self = this; + this.parent.on(this.name, function(args, unknown){ + // Parse any so-far unknown options + unknown = unknown || []; + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + self.args.forEach(function(arg, i){ + if (arg.required && null == args[i]) { + self.missingArgument(arg.name); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self.args.length) { + args[self.args.length] = self; + } else { + args.push(self); + } + + fn.apply(this, args); + }); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to false + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => true + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|Mixed} fn or default + * @param {Mixed} defaultValue + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue){ + var self = this + , option = new Option(flags, description) + , oname = option.name() + , name = camelcase(oname); + + // default as 3rd arg + if ('function' != typeof fn) defaultValue = fn, fn = null; + + // preassign default value only for --no-*, [optional], or + if (false == option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (false == option.bool) defaultValue = true; + // preassign only if we have a default + if (undefined !== defaultValue) self[name] = defaultValue; + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on(oname, function(val){ + // coercion + if (null != val && fn) val = fn(val); + + // unassigned or bool + if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { + // if no value, bool true, and we have a default, then use it! + if (null == val) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (null !== val) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv){ + // store raw args + this.rawArgs = argv; + + // guess name + if (!this.name) this.name = basename(argv[1]); + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + this.args = parsed.args; + return this.parseArgs(this.args, parsed.unknown); +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args){ + var ret = [] + , arg; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { + arg.slice(1).split('').forEach(function(c){ + ret.push('-' + c); + }); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown){ + var cmds = this.commands + , len = cmds.length + , name; + + if (args.length) { + name = args[0]; + if (this.listeners(name).length) { + this.emit(args.shift(), args, unknown); + } else { + this.emit('*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg){ + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv){ + var args = [] + , len = argv.length + , literal + , option + , arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if ('--' == arg) { + literal = true; + continue; + } + + if (literal) { + args.push(arg); + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (null == arg) return this.optionMissingArgument(option); + if ('-' == arg[0]) return this.optionMissingArgument(option, arg); + this.emit(option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i+1]; + if (null == arg || '-' == arg[0]) { + arg = null; + } else { + ++i; + } + this.emit(option.name(), arg); + // bool + } else { + this.emit(option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && '-' == arg[0]) { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if (argv[i+1] && '-' != argv[i+1][0]) { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name){ + console.error(); + console.error(" error: missing required argument `%s'", name); + console.error(); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag){ + console.error(); + if (flag) { + console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error(" error: option `%s' argument missing", option.flags); + } + console.error(); + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag){ + console.error(); + console.error(" error: unknown option `%s'", flag); + console.error(); + process.exit(1); +}; + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} flags + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags){ + if (0 == arguments.length) return this._version; + this._version = str; + flags = flags || '-V, --version'; + this.option(flags, 'output the version number'); + this.on('version', function(){ + console.log(str); + process.exit(0); + }); + return this; +}; + +/** + * Set the description `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str){ + if (0 == arguments.length) return this._description; + this._description = str; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str){ + var args = this.args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }); + + var usage = '[options' + + (this.commands.length ? '] [command' : '') + + ']' + + (this.args.length ? ' ' + args : ''); + if (0 == arguments.length) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function(){ + return this.options.reduce(function(max, option){ + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function(){ + var width = this.largestOptionLength(); + + // Prepend the help information + return [pad('-h, --help', width) + ' ' + 'output usage information'] + .concat(this.options.map(function(option){ + return pad(option.flags, width) + + ' ' + option.description; + })) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function(){ + if (!this.commands.length) return ''; + return [ + '' + , ' Commands:' + , '' + , this.commands.map(function(cmd){ + var args = cmd.args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }).join(' '); + + return cmd.name + + (cmd.options.length + ? ' [options]' + : '') + ' ' + args + + (cmd.description() + ? '\n' + cmd.description() + : ''); + }).join('\n\n').replace(/^/gm, ' ') + , '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function(){ + return [ + '' + , ' Usage: ' + this.name + ' ' + this.usage() + , '' + this.commandHelp() + , ' Options:' + , '' + , '' + this.optionHelp().replace(/^/gm, ' ') + , '' + , '' + ].join('\n'); +}; + +/** + * Prompt for a `Number`. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptForNumber = function(str, fn){ + var self = this; + this.promptSingleLine(str, function parseNumber(val){ + val = Number(val); + if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber); + fn(val); + }); +}; + +/** + * Prompt for a `Date`. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptForDate = function(str, fn){ + var self = this; + this.promptSingleLine(str, function parseDate(val){ + val = new Date(val); + if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate); + fn(val); + }); +}; + +/** + * Single-line prompt. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptSingleLine = function(str, fn){ + if ('function' == typeof arguments[2]) { + return this['promptFor' + (fn.name || fn)](str, arguments[2]); + } + + process.stdout.write(str); + process.stdin.setEncoding('utf8'); + process.stdin.once('data', function(val){ + fn(val.trim()); + }).resume(); +}; + +/** + * Multi-line prompt. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptMultiLine = function(str, fn){ + var buf = []; + console.log(str); + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function(val){ + if ('\n' == val || '\r\n' == val) { + process.stdin.removeAllListeners('data'); + fn(buf.join('\n')); + } else { + buf.push(val.trimRight()); + } + }).resume(); +}; + +/** + * Prompt `str` and callback `fn(val)` + * + * Commander supports single-line and multi-line prompts. + * To issue a single-line prompt simply add white-space + * to the end of `str`, something like "name: ", whereas + * for a multi-line prompt omit this "description:". + * + * + * Examples: + * + * program.prompt('Username: ', function(name){ + * console.log('hi %s', name); + * }); + * + * program.prompt('Description:', function(desc){ + * console.log('description was "%s"', desc.trim()); + * }); + * + * @param {String|Object} str + * @param {Function} fn + * @api public + */ + +Command.prototype.prompt = function(str, fn){ + var self = this; + + if ('string' == typeof str) { + if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments); + this.promptMultiLine(str, fn); + } else { + var keys = Object.keys(str) + , obj = {}; + + function next() { + var key = keys.shift() + , label = str[key]; + + if (!key) return fn(obj); + self.prompt(label, function(val){ + obj[key] = val; + next(); + }); + } + + next(); + } +}; + +/** + * Prompt for password with `str`, `mask` char and callback `fn(val)`. + * + * The mask string defaults to '', aka no output is + * written while typing, you may want to use "*" etc. + * + * Examples: + * + * program.password('Password: ', function(pass){ + * console.log('got "%s"', pass); + * process.stdin.destroy(); + * }); + * + * program.password('Password: ', '*', function(pass){ + * console.log('got "%s"', pass); + * process.stdin.destroy(); + * }); + * + * @param {String} str + * @param {String} mask + * @param {Function} fn + * @api public + */ + +Command.prototype.password = function(str, mask, fn){ + var self = this + , buf = ''; + + // default mask + if ('function' == typeof mask) { + fn = mask; + mask = ''; + } + + process.stdin.resume(); + tty.setRawMode(true); + process.stdout.write(str); + + // keypress + process.stdin.on('keypress', function(c, key){ + if (key && 'enter' == key.name) { + console.log(); + process.stdin.removeAllListeners('keypress'); + tty.setRawMode(false); + if (!buf.trim().length) return self.password(str, mask, fn); + fn(buf); + return; + } + + if (key && key.ctrl && 'c' == key.name) { + console.log('%s', buf); + process.exit(); + } + + process.stdout.write(mask); + buf += c; + }).resume(); +}; + +/** + * Confirmation prompt with `str` and callback `fn(bool)` + * + * Examples: + * + * program.confirm('continue? ', function(ok){ + * console.log(' got %j', ok); + * process.stdin.destroy(); + * }); + * + * @param {String} str + * @param {Function} fn + * @api public + */ + + +Command.prototype.confirm = function(str, fn, verbose){ + var self = this; + this.prompt(str, function(ok){ + if (!ok.trim()) { + if (!verbose) str += '(yes or no) '; + return self.confirm(str, fn, true); + } + fn(parseBool(ok)); + }); +}; + +/** + * Choice prompt with `list` of items and callback `fn(index, item)` + * + * Examples: + * + * var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + * + * console.log('Choose the coolest pet:'); + * program.choose(list, function(i){ + * console.log('you chose %d "%s"', i, list[i]); + * process.stdin.destroy(); + * }); + * + * @param {Array} list + * @param {Number|Function} index or fn + * @param {Function} fn + * @api public + */ + +Command.prototype.choose = function(list, index, fn){ + var self = this + , hasDefault = 'number' == typeof index; + + if (!hasDefault) { + fn = index; + index = null; + } + + list.forEach(function(item, i){ + if (hasDefault && i == index) { + console.log('* %d) %s', i + 1, item); + } else { + console.log(' %d) %s', i + 1, item); + } + }); + + function again() { + self.prompt(' : ', function(val){ + val = parseInt(val, 10) - 1; + if (hasDefault && isNaN(val)) val = index; + + if (null == list[val]) { + again(); + } else { + fn(val, list[val]); + } + }); + } + + again(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word){ + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Parse a boolean `str`. + * + * @param {String} str + * @return {Boolean} + * @api private + */ + +function parseBool(str) { + return /^y|yes|ok|true$/i.test(str); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] == '--help' || options[i] == '-h') { + process.stdout.write(cmd.helpInformation()); + cmd.emit('--help'); + process.exit(0); + } + } +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json new file mode 100644 index 0000000..6f9d567 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json @@ -0,0 +1,38 @@ +{ + "name": "commander", + "version": "0.6.1", + "description": "the complete solution for node.js command-line programs", + "keywords": [ + "command", + "option", + "parser", + "prompt", + "stdin" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "repository": { + "type": "git", + "url": "https://github.com/visionmedia/commander.js.git" + }, + "dependencies": {}, + "devDependencies": { + "should": ">= 0.0.1" + }, + "scripts": { + "test": "make test" + }, + "main": "index", + "engines": { + "node": ">= 0.4.x" + }, + "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/visionmedia/commander.js/issues" + }, + "_id": "commander@0.6.1", + "_from": "commander@0.6.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore new file mode 100644 index 0000000..9046dde --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore @@ -0,0 +1,12 @@ +*.markdown +*.md +.git* +Makefile +benchmarks/ +docs/ +examples/ +install.sh +support/ +test/ +.DS_Store +coverage.html diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml new file mode 100644 index 0000000..a12e3f0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE new file mode 100644 index 0000000..0c5d22d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2010 Sencha Inc. +Copyright (c) 2011 LearnBoost +Copyright (c) 2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md new file mode 100644 index 0000000..7d65f9c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md @@ -0,0 +1,133 @@ +[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect) +# Connect + + Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance "plugins" known as _middleware_. + + Connect is bundled with over _20_ commonly used middleware, including + a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/). + +```js +var connect = require('connect') + , http = require('http'); + +var app = connect() + .use(connect.favicon()) + .use(connect.logger('dev')) + .use(connect.static('public')) + .use(connect.directory('public')) + .use(connect.cookieParser()) + .use(connect.session({ secret: 'my secret here' })) + .use(function(req, res){ + res.end('Hello from Connect!\n'); + }); + +http.createServer(app).listen(3000); +``` + +## Middleware + + - [csrf](http://www.senchalabs.org/connect/csrf.html) + - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html) + - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html) + - [json](http://www.senchalabs.org/connect/json.html) + - [multipart](http://www.senchalabs.org/connect/multipart.html) + - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html) + - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html) + - [directory](http://www.senchalabs.org/connect/directory.html) + - [compress](http://www.senchalabs.org/connect/compress.html) + - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html) + - [favicon](http://www.senchalabs.org/connect/favicon.html) + - [limit](http://www.senchalabs.org/connect/limit.html) + - [logger](http://www.senchalabs.org/connect/logger.html) + - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html) + - [query](http://www.senchalabs.org/connect/query.html) + - [responseTime](http://www.senchalabs.org/connect/responseTime.html) + - [session](http://www.senchalabs.org/connect/session.html) + - [static](http://www.senchalabs.org/connect/static.html) + - [staticCache](http://www.senchalabs.org/connect/staticCache.html) + - [vhost](http://www.senchalabs.org/connect/vhost.html) + - [subdomains](http://www.senchalabs.org/connect/subdomains.html) + - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html) + +## Running Tests + +first: + + $ npm install -d + +then: + + $ make test + +## Authors + + Below is the output from [git-summary](http://github.com/visionmedia/git-extras). + + + project: connect + commits: 2033 + active : 301 days + files : 171 + authors: + 1414 Tj Holowaychuk 69.6% + 298 visionmedia 14.7% + 191 Tim Caswell 9.4% + 51 TJ Holowaychuk 2.5% + 10 Ryan Olds 0.5% + 8 Astro 0.4% + 5 Nathan Rajlich 0.2% + 5 Jakub Nešetřil 0.2% + 3 Daniel Dickison 0.1% + 3 David Rio Deiros 0.1% + 3 Alexander Simmerl 0.1% + 3 Andreas Lind Petersen 0.1% + 2 Aaron Heckmann 0.1% + 2 Jacques Crocker 0.1% + 2 Fabian Jakobs 0.1% + 2 Brian J Brennan 0.1% + 2 Adam Malcontenti-Wilson 0.1% + 2 Glen Mailer 0.1% + 2 James Campos 0.1% + 1 Trent Mick 0.0% + 1 Troy Kruthoff 0.0% + 1 Wei Zhu 0.0% + 1 comerc 0.0% + 1 darobin 0.0% + 1 nateps 0.0% + 1 Marco Sanson 0.0% + 1 Arthur Taylor 0.0% + 1 Aseem Kishore 0.0% + 1 Bart Teeuwisse 0.0% + 1 Cameron Howey 0.0% + 1 Chad Weider 0.0% + 1 Craig Barnes 0.0% + 1 Eran Hammer-Lahav 0.0% + 1 Gregory McWhirter 0.0% + 1 Guillermo Rauch 0.0% + 1 Jae Kwon 0.0% + 1 Jakub Nesetril 0.0% + 1 Joshua Peek 0.0% + 1 Jxck 0.0% + 1 AJ ONeal 0.0% + 1 Michael Hemesath 0.0% + 1 Morten Siebuhr 0.0% + 1 Samori Gorse 0.0% + 1 Tom Jensen 0.0% + +## Node Compatibility + + Connect `< 1.x` is compatible with node 0.2.x + + + Connect `1.x` is compatible with node 0.4.x + + + Connect (_master_) `2.x` is compatible with node 0.6.x + +## CLA + + [http://sencha.com/cla](http://sencha.com/cla) + +## License + +View the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/). diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js new file mode 100644 index 0000000..23240ee --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js @@ -0,0 +1,4 @@ + +module.exports = process.env.CONNECT_COV + ? require('./lib-cov/connect') + : require('./lib/connect'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js new file mode 100644 index 0000000..052fcdb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js @@ -0,0 +1,81 @@ + +/*! + * Connect - Cache + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Expose `Cache`. + */ + +module.exports = Cache; + +/** + * LRU cache store. + * + * @param {Number} limit + * @api private + */ + +function Cache(limit) { + this.store = {}; + this.keys = []; + this.limit = limit; +} + +/** + * Touch `key`, promoting the object. + * + * @param {String} key + * @param {Number} i + * @api private + */ + +Cache.prototype.touch = function(key, i){ + this.keys.splice(i,1); + this.keys.push(key); +}; + +/** + * Remove `key`. + * + * @param {String} key + * @api private + */ + +Cache.prototype.remove = function(key){ + delete this.store[key]; +}; + +/** + * Get the object stored for `key`. + * + * @param {String} key + * @return {Array} + * @api private + */ + +Cache.prototype.get = function(key){ + return this.store[key]; +}; + +/** + * Add a cache `key`. + * + * @param {String} key + * @return {Array} + * @api private + */ + +Cache.prototype.add = function(key){ + // initialize store + var len = this.keys.push(key); + + // limit reached, invalidate LRU + if (len > this.limit) this.remove(this.keys.shift()); + + var arr = this.store[key] = []; + arr.createdAt = new Date; + return arr; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js new file mode 100644 index 0000000..faa0361 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js @@ -0,0 +1,92 @@ +/*! + * Connect + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , proto = require('./proto') + , utils = require('./utils') + , path = require('path') + , basename = path.basename + , fs = require('fs'); + +// node patches + +require('./patch'); + +// expose createServer() as the module + +exports = module.exports = createServer; + +/** + * Framework version. + */ + +exports.version = '2.7.10'; + +/** + * Expose mime module. + */ + +exports.mime = require('./middleware/static').mime; + +/** + * Expose the prototype. + */ + +exports.proto = proto; + +/** + * Auto-load middleware getters. + */ + +exports.middleware = {}; + +/** + * Expose utilities. + */ + +exports.utils = utils; + +/** + * Create a new connect server. + * + * @return {Function} + * @api public + */ + +function createServer() { + function app(req, res, next){ app.handle(req, res, next); } + utils.merge(app, proto); + utils.merge(app, EventEmitter.prototype); + app.route = '/'; + app.stack = []; + for (var i = 0; i < arguments.length; ++i) { + app.use(arguments[i]); + } + return app; +}; + +/** + * Support old `.createServer()` method. + */ + +createServer.createServer = createServer; + +/** + * Auto-load bundled middleware with getters. + */ + +fs.readdirSync(__dirname + '/middleware').forEach(function(filename){ + if (!/\.js$/.test(filename)) return; + var name = basename(filename, '.js'); + function load(){ return require('./middleware/' + name); } + exports.middleware.__defineGetter__(name, load); + exports.__defineGetter__(name, load); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js new file mode 100644 index 0000000..2618ddc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js @@ -0,0 +1,50 @@ + +/** + * Connect is a middleware framework for node, + * shipping with over 18 bundled middleware and a rich selection of + * 3rd-party middleware. + * + * var app = connect() + * .use(connect.logger('dev')) + * .use(connect.static('public')) + * .use(function(req, res){ + * res.end('hello world\n'); + * }) + * .listen(3000); + * + * Installation: + * + * $ npm install connect + * + * Middleware: + * + * - [logger](logger.html) request logger with custom format support + * - [csrf](csrf.html) Cross-site request forgery protection + * - [compress](compress.html) Gzip compression middleware + * - [basicAuth](basicAuth.html) basic http authentication + * - [bodyParser](bodyParser.html) extensible request body parser + * - [json](json.html) application/json parser + * - [urlencoded](urlencoded.html) application/x-www-form-urlencoded parser + * - [multipart](multipart.html) multipart/form-data parser + * - [timeout](timeout.html) request timeouts + * - [cookieParser](cookieParser.html) cookie parser + * - [session](session.html) session management support with bundled MemoryStore + * - [cookieSession](cookieSession.html) cookie-based session support + * - [methodOverride](methodOverride.html) faux HTTP method support + * - [responseTime](responseTime.html) calculates response-time and exposes via X-Response-Time + * - [staticCache](staticCache.html) memory cache layer for the static() middleware + * - [static](static.html) streaming static file server supporting `Range` and more + * - [directory](directory.html) directory listing middleware + * - [vhost](vhost.html) virtual host sub-domain mapping middleware + * - [favicon](favicon.html) efficient favicon server (with default icon) + * - [limit](limit.html) limit the bytesize of request bodies + * - [query](query.html) automatic querystring parser, populating `req.query` + * - [errorHandler](errorHandler.html) flexible error handler + * + * Links: + * + * - list of [3rd-party](https://github.com/senchalabs/connect/wiki) middleware + * - GitHub [repository](http://github.com/senchalabs/connect) + * - [test documentation](https://github.com/senchalabs/connect/blob/gh-pages/tests.md) + * + */ \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js new file mode 100644 index 0000000..bc7ec97 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js @@ -0,0 +1,103 @@ + +/*! + * Connect - basicAuth + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , unauthorized = utils.unauthorized; + +/** + * Basic Auth: + * + * Enfore basic authentication by providing a `callback(user, pass)`, + * which must return `true` in order to gain access. Alternatively an async + * method is provided as well, invoking `callback(user, pass, callback)`. Populates + * `req.user`. The final alternative is simply passing username / password + * strings. + * + * Simple username and password + * + * connect(connect.basicAuth('username', 'password')); + * + * Callback verification + * + * connect() + * .use(connect.basicAuth(function(user, pass){ + * return 'tj' == user & 'wahoo' == pass; + * })) + * + * Async callback verification, accepting `fn(err, user)`. + * + * connect() + * .use(connect.basicAuth(function(user, pass, fn){ + * User.authenticate({ user: user, pass: pass }, fn); + * })) + * + * @param {Function|String} callback or username + * @param {String} realm + * @api public + */ + +module.exports = function basicAuth(callback, realm) { + var username, password; + + // user / pass strings + if ('string' == typeof callback) { + username = callback; + password = realm; + if ('string' != typeof password) throw new Error('password argument required'); + realm = arguments[2]; + callback = function(user, pass){ + return user == username && pass == password; + } + } + + realm = realm || 'Authorization Required'; + + return function(req, res, next) { + var authorization = req.headers.authorization; + + if (req.user) return next(); + if (!authorization) return unauthorized(res, realm); + + var parts = authorization.split(' '); + + if (parts.length !== 2) return next(utils.error(400)); + + var scheme = parts[0] + , credentials = new Buffer(parts[1], 'base64').toString() + , index = credentials.indexOf(':'); + + if ('Basic' != scheme || index < 0) return next(utils.error(400)); + + var user = credentials.slice(0, index) + , pass = credentials.slice(index + 1); + + // async + if (callback.length >= 3) { + var pause = utils.pause(req); + callback(user, pass, function(err, user){ + if (err || !user) return unauthorized(res, realm); + req.user = req.remoteUser = user; + next(); + pause.resume(); + }); + // sync + } else { + if (callback(user, pass)) { + req.user = req.remoteUser = user; + next(); + } else { + unauthorized(res, realm); + } + } + } +}; + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js new file mode 100644 index 0000000..9f692cd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js @@ -0,0 +1,61 @@ + +/*! + * Connect - bodyParser + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var multipart = require('./multipart') + , urlencoded = require('./urlencoded') + , json = require('./json'); + +/** + * Body parser: + * + * Parse request bodies, supports _application/json_, + * _application/x-www-form-urlencoded_, and _multipart/form-data_. + * + * This is equivalent to: + * + * app.use(connect.json()); + * app.use(connect.urlencoded()); + * app.use(connect.multipart()); + * + * Examples: + * + * connect() + * .use(connect.bodyParser()) + * .use(function(req, res) { + * res.end('viewing user ' + req.body.user.name); + * }); + * + * $ curl -d 'user[name]=tj' http://local/ + * $ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://local/ + * + * View [json](json.html), [urlencoded](urlencoded.html), and [multipart](multipart.html) for more info. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function bodyParser(options){ + var _urlencoded = urlencoded(options) + , _multipart = multipart(options) + , _json = json(options); + + return function bodyParser(req, res, next) { + _json(req, res, function(err){ + if (err) return next(err); + _urlencoded(req, res, function(err){ + if (err) return next(err); + _multipart(req, res, next); + }); + }); + } +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js new file mode 100644 index 0000000..97b2449 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js @@ -0,0 +1,157 @@ +/*! + * Connect - compress + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var zlib = require('zlib'); + +/** + * Supported content-encoding methods. + */ + +exports.methods = { + gzip: zlib.createGzip + , deflate: zlib.createDeflate +}; + +/** + * Default filter function. + */ + +exports.filter = function(req, res){ + return /json|text|javascript/.test(res.getHeader('Content-Type')); +}; + +/** + * Compress: + * + * Compress response data with gzip/deflate. + * + * Filter: + * + * A `filter` callback function may be passed to + * replace the default logic of: + * + * exports.filter = function(req, res){ + * return /json|text|javascript/.test(res.getHeader('Content-Type')); + * }; + * + * Options: + * + * All remaining options are passed to the gzip/deflate + * creation functions. Consult node's docs for additional details. + * + * - `chunkSize` (default: 16*1024) + * - `windowBits` + * - `level`: 0-9 where 0 is no compression, and 9 is slow but best compression + * - `memLevel`: 1-9 low is slower but uses less memory, high is fast but uses more + * - `strategy`: compression strategy + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function compress(options) { + options = options || {}; + var names = Object.keys(exports.methods) + , filter = options.filter || exports.filter; + + return function compress(req, res, next){ + var accept = req.headers['accept-encoding'] + , vary = res.getHeader('Vary') + , write = res.write + , end = res.end + , stream + , method; + + // vary + if (!vary) { + res.setHeader('Vary', 'Accept-Encoding'); + } else if (!~vary.indexOf('Accept-Encoding')) { + res.setHeader('Vary', vary + ', Accept-Encoding'); + } + + // see #724 + req.on('close', function(){ + res.write = res.end = function(){}; + }); + + // proxy + + res.write = function(chunk, encoding){ + if (!this.headerSent) this._implicitHeader(); + return stream + ? stream.write(new Buffer(chunk, encoding)) + : write.call(res, chunk, encoding); + }; + + res.end = function(chunk, encoding){ + if (chunk) this.write(chunk, encoding); + return stream + ? stream.end() + : end.call(res); + }; + + res.on('header', function(){ + var encoding = res.getHeader('Content-Encoding') || 'identity'; + + // already encoded + if ('identity' != encoding) return; + + // default request filter + if (!filter(req, res)) return; + + // SHOULD use identity + if (!accept) return; + + // head + if ('HEAD' == req.method) return; + + // default to gzip + if ('*' == accept.trim()) method = 'gzip'; + + // compression method + if (!method) { + for (var i = 0, len = names.length; i < len; ++i) { + if (~accept.indexOf(names[i])) { + method = names[i]; + break; + } + } + } + + // compression method + if (!method) return; + + // compression stream + stream = exports.methods[method](options); + + // header fields + res.setHeader('Content-Encoding', method); + res.removeHeader('Content-Length'); + + // compression + + stream.on('data', function(chunk){ + write.call(res, chunk); + }); + + stream.on('end', function(){ + end.call(res); + }); + + stream.on('drain', function() { + res.emit('drain'); + }); + }); + + next(); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js new file mode 100644 index 0000000..5da23f2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js @@ -0,0 +1,62 @@ + +/*! + * Connect - cookieParser + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('./../utils') + , cookie = require('cookie'); + +/** + * Cookie parser: + * + * Parse _Cookie_ header and populate `req.cookies` + * with an object keyed by the cookie names. Optionally + * you may enabled signed cookie support by passing + * a `secret` string, which assigns `req.secret` so + * it may be used by other middleware. + * + * Examples: + * + * connect() + * .use(connect.cookieParser('optional secret string')) + * .use(function(req, res, next){ + * res.end(JSON.stringify(req.cookies)); + * }) + * + * @param {String} secret + * @return {Function} + * @api public + */ + +module.exports = function cookieParser(secret){ + return function cookieParser(req, res, next) { + if (req.cookies) return next(); + var cookies = req.headers.cookie; + + req.secret = secret; + req.cookies = {}; + req.signedCookies = {}; + + if (cookies) { + try { + req.cookies = cookie.parse(cookies); + if (secret) { + req.signedCookies = utils.parseSignedCookies(req.cookies, secret); + req.signedCookies = utils.parseJSONCookies(req.signedCookies); + } + req.cookies = utils.parseJSONCookies(req.cookies); + } catch (err) { + err.status = 400; + return next(err); + } + } + next(); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js new file mode 100644 index 0000000..402fd55 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js @@ -0,0 +1,117 @@ + +/*! + * Connect - cookieSession + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('./../utils') + , Cookie = require('./session/cookie') + , debug = require('debug')('connect:cookieSession') + , signature = require('cookie-signature') + , crc32 = require('buffer-crc32'); + +/** + * Cookie Session: + * + * Cookie session middleware. + * + * var app = connect(); + * app.use(connect.cookieParser()); + * app.use(connect.cookieSession({ secret: 'tobo!', cookie: { maxAge: 60 * 60 * 1000 }})); + * + * Options: + * + * - `key` cookie name defaulting to `connect.sess` + * - `secret` prevents cookie tampering + * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }` + * - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto") + * + * Clearing sessions: + * + * To clear the session simply set its value to `null`, + * `cookieSession()` will then respond with a 1970 Set-Cookie. + * + * req.session = null; + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function cookieSession(options){ + // TODO: utilize Session/Cookie to unify API + options = options || {}; + var key = options.key || 'connect.sess' + , trustProxy = options.proxy; + + return function cookieSession(req, res, next) { + + // req.secret is for backwards compatibility + var secret = options.secret || req.secret; + if (!secret) throw new Error('`secret` option required for cookie sessions'); + + // default session + req.session = {}; + var cookie = req.session.cookie = new Cookie(options.cookie); + + // pathname mismatch + if (0 != req.originalUrl.indexOf(cookie.path)) return next(); + + // cookieParser secret + if (!options.secret && req.secret) { + req.session = req.signedCookies[key] || {}; + req.session.cookie = cookie; + } else { + // TODO: refactor + var rawCookie = req.cookies[key]; + if (rawCookie) { + var unsigned = utils.parseSignedCookie(rawCookie, secret); + if (unsigned) { + var originalHash = crc32.signed(unsigned); + req.session = utils.parseJSONCookie(unsigned) || {}; + req.session.cookie = cookie; + } + } + } + + res.on('header', function(){ + // removed + if (!req.session) { + debug('clear session'); + cookie.expires = new Date(0); + res.setHeader('Set-Cookie', cookie.serialize(key, '')); + return; + } + + delete req.session.cookie; + + // check security + var proto = (req.headers['x-forwarded-proto'] || '').toLowerCase() + , tls = req.connection.encrypted || (trustProxy && 'https' == proto) + , secured = cookie.secure && tls; + + // only send secure cookies via https + if (cookie.secure && !secured) return debug('not secured'); + + // serialize + debug('serializing %j', req.session); + var val = 'j:' + JSON.stringify(req.session); + + // compare hashes, no need to set-cookie if unchanged + if (originalHash == crc32.signed(val)) return debug('unmodified session'); + + // set-cookie + val = 's:' + signature.sign(val, secret); + val = cookie.serialize(key, val); + debug('set-cookie %j', cookie); + res.setHeader('Set-Cookie', val); + }); + + next(); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js new file mode 100644 index 0000000..e3c353e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js @@ -0,0 +1,73 @@ +/*! + * Connect - csrf + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils'); + +/** + * Anti CSRF: + * + * CRSF protection middleware. + * + * By default this middleware generates a token named "_csrf" + * which should be added to requests which mutate + * state, within a hidden form field, query-string etc. This + * token is validated against the visitor's `req.session._csrf` + * property. + * + * The default `value` function checks `req.body` generated + * by the `bodyParser()` middleware, `req.query` generated + * by `query()`, and the "X-CSRF-Token" header field. + * + * This middleware requires session support, thus should be added + * somewhere _below_ `session()` and `cookieParser()`. + * + * Options: + * + * - `value` a function accepting the request, returning the token + * + * @param {Object} options + * @api public + */ + +module.exports = function csrf(options) { + options = options || {}; + var value = options.value || defaultValue; + + return function(req, res, next){ + // generate CSRF token + var token = req.session._csrf || (req.session._csrf = utils.uid(24)); + + // ignore these methods + if ('GET' == req.method || 'HEAD' == req.method || 'OPTIONS' == req.method) return next(); + + // determine value + var val = value(req); + + // check + if (val != token) return next(utils.error(403)); + + next(); + } +}; + +/** + * Default value function, checking the `req.body` + * and `req.query` for the CSRF token. + * + * @param {IncomingMessage} req + * @return {String} + * @api private + */ + +function defaultValue(req) { + return (req.body && req.body._csrf) + || (req.query && req.query._csrf) + || (req.headers['x-csrf-token']); +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js new file mode 100644 index 0000000..1c925a7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js @@ -0,0 +1,229 @@ + +/*! + * Connect - directory + * Copyright(c) 2011 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +// TODO: icon / style for directories +// TODO: arrow key navigation +// TODO: make icons extensible + +/** + * Module dependencies. + */ + +var fs = require('fs') + , parse = require('url').parse + , utils = require('../utils') + , path = require('path') + , normalize = path.normalize + , extname = path.extname + , join = path.join; + +/*! + * Icon cache. + */ + +var cache = {}; + +/** + * Directory: + * + * Serve directory listings with the given `root` path. + * + * Options: + * + * - `hidden` display hidden (dot) files. Defaults to false. + * - `icons` display icons. Defaults to false. + * - `filter` Apply this filter function to files. Defaults to false. + * + * @param {String} root + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function directory(root, options){ + options = options || {}; + + // root required + if (!root) throw new Error('directory() root path required'); + var hidden = options.hidden + , icons = options.icons + , filter = options.filter + , root = normalize(root); + + return function directory(req, res, next) { + if ('GET' != req.method && 'HEAD' != req.method) return next(); + + var accept = req.headers.accept || 'text/plain' + , url = parse(req.url) + , dir = decodeURIComponent(url.pathname) + , path = normalize(join(root, dir)) + , originalUrl = parse(req.originalUrl) + , originalDir = decodeURIComponent(originalUrl.pathname) + , showUp = path != root && path != root + '/'; + + // null byte(s), bad request + if (~path.indexOf('\0')) return next(utils.error(400)); + + // malicious path, forbidden + if (0 != path.indexOf(root)) return next(utils.error(403)); + + // check if we have a directory + fs.stat(path, function(err, stat){ + if (err) return 'ENOENT' == err.code + ? next() + : next(err); + + if (!stat.isDirectory()) return next(); + + // fetch files + fs.readdir(path, function(err, files){ + if (err) return next(err); + if (!hidden) files = removeHidden(files); + if (filter) files = files.filter(filter); + files.sort(); + + // content-negotiation + for (var key in exports) { + if (~accept.indexOf(key) || ~accept.indexOf('*/*')) { + exports[key](req, res, files, next, originalDir, showUp, icons); + return; + } + } + + // not acceptable + next(utils.error(406)); + }); + }); + }; +}; + +/** + * Respond with text/html. + */ + +exports.html = function(req, res, files, next, dir, showUp, icons){ + fs.readFile(__dirname + '/../public/directory.html', 'utf8', function(err, str){ + if (err) return next(err); + fs.readFile(__dirname + '/../public/style.css', 'utf8', function(err, style){ + if (err) return next(err); + if (showUp) files.unshift('..'); + str = str + .replace('{style}', style) + .replace('{files}', html(files, dir, icons)) + .replace('{directory}', dir) + .replace('{linked-path}', htmlPath(dir)); + res.setHeader('Content-Type', 'text/html'); + res.setHeader('Content-Length', str.length); + res.end(str); + }); + }); +}; + +/** + * Respond with application/json. + */ + +exports.json = function(req, res, files){ + files = JSON.stringify(files); + res.setHeader('Content-Type', 'application/json'); + res.setHeader('Content-Length', files.length); + res.end(files); +}; + +/** + * Respond with text/plain. + */ + +exports.plain = function(req, res, files){ + files = files.join('\n') + '\n'; + res.setHeader('Content-Type', 'text/plain'); + res.setHeader('Content-Length', files.length); + res.end(files); +}; + +/** + * Map html `dir`, returning a linked path. + */ + +function htmlPath(dir) { + var curr = []; + return dir.split('/').map(function(part){ + curr.push(part); + return '' + part + ''; + }).join(' / '); +} + +/** + * Map html `files`, returning an html unordered list. + */ + +function html(files, dir, useIcons) { + return '
    ' + files.map(function(file){ + var icon = '' + , classes = []; + + if (useIcons && '..' != file) { + icon = icons[extname(file)] || icons.default; + icon = ''; + classes.push('icon'); + } + + return '
  • ' + + icon + file + '
  • '; + + }).join('\n') + '
'; +} + +/** + * Load and cache the given `icon`. + * + * @param {String} icon + * @return {String} + * @api private + */ + +function load(icon) { + if (cache[icon]) return cache[icon]; + return cache[icon] = fs.readFileSync(__dirname + '/../public/icons/' + icon, 'base64'); +} + +/** + * Filter "hidden" `files`, aka files + * beginning with a `.`. + * + * @param {Array} files + * @return {Array} + * @api private + */ + +function removeHidden(files) { + return files.filter(function(file){ + return '.' != file[0]; + }); +} + +/** + * Icon map. + */ + +var icons = { + '.js': 'page_white_code_red.png' + , '.c': 'page_white_c.png' + , '.h': 'page_white_h.png' + , '.cc': 'page_white_cplusplus.png' + , '.php': 'page_white_php.png' + , '.rb': 'page_white_ruby.png' + , '.cpp': 'page_white_cplusplus.png' + , '.swf': 'page_white_flash.png' + , '.pdf': 'page_white_acrobat.png' + , 'default': 'page_white.png' +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js new file mode 100644 index 0000000..4a84edc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js @@ -0,0 +1,86 @@ +/*! + * Connect - errorHandler + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , fs = require('fs'); + +// environment + +var env = process.env.NODE_ENV || 'development'; + +/** + * Error handler: + * + * Development error handler, providing stack traces + * and error message responses for requests accepting text, html, + * or json. + * + * Text: + * + * By default, and when _text/plain_ is accepted a simple stack trace + * or error message will be returned. + * + * JSON: + * + * When _application/json_ is accepted, connect will respond with + * an object in the form of `{ "error": error }`. + * + * HTML: + * + * When accepted connect will output a nice html stack trace. + * + * @return {Function} + * @api public + */ + +exports = module.exports = function errorHandler(){ + return function errorHandler(err, req, res, next){ + if (err.status) res.statusCode = err.status; + if (res.statusCode < 400) res.statusCode = 500; + if ('test' != env) console.error(err.stack); + var accept = req.headers.accept || ''; + // html + if (~accept.indexOf('html')) { + fs.readFile(__dirname + '/../public/style.css', 'utf8', function(e, style){ + fs.readFile(__dirname + '/../public/error.html', 'utf8', function(e, html){ + var stack = (err.stack || '') + .split('\n').slice(1) + .map(function(v){ return '
  • ' + v + '
  • '; }).join(''); + html = html + .replace('{style}', style) + .replace('{stack}', stack) + .replace('{title}', exports.title) + .replace('{statusCode}', res.statusCode) + .replace(/\{error\}/g, utils.escape(err.toString())); + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + res.end(html); + }); + }); + // json + } else if (~accept.indexOf('json')) { + var error = { message: err.message, stack: err.stack }; + for (var prop in err) error[prop] = err[prop]; + var json = JSON.stringify({ error: error }); + res.setHeader('Content-Type', 'application/json'); + res.end(json); + // plain text + } else { + res.writeHead(res.statusCode, { 'Content-Type': 'text/plain' }); + res.end(err.stack); + } + }; +}; + +/** + * Template title, framework authors may override this value. + */ + +exports.title = 'Connect'; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js new file mode 100644 index 0000000..ef54354 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js @@ -0,0 +1,80 @@ +/*! + * Connect - favicon + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var fs = require('fs') + , utils = require('../utils'); + +/** + * Favicon: + * + * By default serves the connect favicon, or the favicon + * located by the given `path`. + * + * Options: + * + * - `maxAge` cache-control max-age directive, defaulting to 1 day + * + * Examples: + * + * Serve default favicon: + * + * connect() + * .use(connect.favicon()) + * + * Serve favicon before logging for brevity: + * + * connect() + * .use(connect.favicon()) + * .use(connect.logger('dev')) + * + * Serve custom favicon: + * + * connect() + * .use(connect.favicon('public/favicon.ico')) + * + * @param {String} path + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function favicon(path, options){ + var options = options || {} + , path = path || __dirname + '/../public/favicon.ico' + , maxAge = options.maxAge || 86400000 + , icon; // favicon cache + + return function favicon(req, res, next){ + if ('/favicon.ico' == req.url) { + if (icon) { + res.writeHead(200, icon.headers); + res.end(icon.body); + } else { + fs.readFile(path, function(err, buf){ + if (err) return next(err); + icon = { + headers: { + 'Content-Type': 'image/x-icon' + , 'Content-Length': buf.length + , 'ETag': '"' + utils.md5(buf) + '"' + , 'Cache-Control': 'public, max-age=' + (maxAge / 1000) + }, + body: buf + }; + res.writeHead(200, icon.headers); + res.end(icon.body); + }); + } + } else { + next(); + } + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js new file mode 100644 index 0000000..17e5918 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js @@ -0,0 +1,86 @@ + +/*! + * Connect - json + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , _limit = require('./limit'); + +/** + * noop middleware. + */ + +function noop(req, res, next) { + next(); +} + +/** + * JSON: + * + * Parse JSON request bodies, providing the + * parsed object as `req.body`. + * + * Options: + * + * - `strict` when `false` anything `JSON.parse()` accepts will be parsed + * - `reviver` used as the second "reviver" argument for JSON.parse + * - `limit` byte limit disabled by default + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function(options){ + var options = options || {} + , strict = options.strict !== false; + + var limit = options.limit + ? _limit(options.limit) + : noop; + + return function json(req, res, next) { + if (req._body) return next(); + req.body = req.body || {}; + + if (!utils.hasBody(req)) return next(); + + // check Content-Type + if ('application/json' != utils.mime(req)) return next(); + + // flag as parsed + req._body = true; + + // parse + limit(req, res, function(err){ + if (err) return next(err); + var buf = ''; + req.setEncoding('utf8'); + req.on('data', function(chunk){ buf += chunk }); + req.on('end', function(){ + var first = buf.trim()[0]; + + if (0 == buf.length) { + return next(utils.error(400, 'invalid json, empty body')); + } + + if (strict && '{' != first && '[' != first) return next(utils.error(400, 'invalid json')); + try { + req.body = JSON.parse(buf, options.reviver); + } catch (err){ + err.body = buf; + err.status = 400; + return next(err); + } + next(); + }); + }); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js new file mode 100644 index 0000000..09bd1c4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js @@ -0,0 +1,78 @@ + +/*! + * Connect - limit + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils'), + brokenPause = utils.brokenPause; + +/** + * Limit: + * + * Limit request bodies to the given size in `bytes`. + * + * A string representation of the bytesize may also be passed, + * for example "5mb", "200kb", "1gb", etc. + * + * connect() + * .use(connect.limit('5.5mb')) + * .use(handleImageUpload) + * + * @param {Number|String} bytes + * @return {Function} + * @api public + */ + +module.exports = function limit(bytes){ + if ('string' == typeof bytes) bytes = utils.parseBytes(bytes); + if ('number' != typeof bytes) throw new Error('limit() bytes required'); + return function limit(req, res, next){ + var received = 0 + , len = req.headers['content-length'] + ? parseInt(req.headers['content-length'], 10) + : null; + + // self-awareness + if (req._limit) return next(); + req._limit = true; + + // limit by content-length + if (len && len > bytes) return next(utils.error(413)); + + // limit + if (brokenPause) { + listen(); + } else { + req.on('newListener', function handler(event) { + if (event !== 'data') return; + + req.removeListener('newListener', handler); + // Start listening at the end of the current loop + // otherwise the request will be consumed too early. + // Sideaffect is `limit` will miss the first chunk, + // but that's not a big deal. + // Unfortunately, the tests don't have large enough + // request bodies to test this. + process.nextTick(listen); + }); + }; + + next(); + + function listen() { + req.on('data', function(chunk) { + received += Buffer.isBuffer(chunk) + ? chunk.length : + Buffer.byteLength(chunk); + + if (received > bytes) req.destroy(); + }); + }; + }; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js new file mode 100644 index 0000000..de72244 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js @@ -0,0 +1,339 @@ +/*! + * Connect - logger + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var bytes = require('bytes'); + +/*! + * Log buffer. + */ + +var buf = []; + +/*! + * Default log buffer duration. + */ + +var defaultBufferDuration = 1000; + +/** + * Logger: + * + * Log requests with the given `options` or a `format` string. + * + * Options: + * + * - `format` Format string, see below for tokens + * - `stream` Output stream, defaults to _stdout_ + * - `buffer` Buffer duration, defaults to 1000ms when _true_ + * - `immediate` Write log line on request instead of response (for response times) + * + * Tokens: + * + * - `:req[header]` ex: `:req[Accept]` + * - `:res[header]` ex: `:res[Content-Length]` + * - `:http-version` + * - `:response-time` + * - `:remote-addr` + * - `:date` + * - `:method` + * - `:url` + * - `:referrer` + * - `:user-agent` + * - `:status` + * + * Formats: + * + * Pre-defined formats that ship with connect: + * + * - `default` ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"' + * - `short` ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms' + * - `tiny` ':method :url :status :res[content-length] - :response-time ms' + * - `dev` concise output colored by response status for development use + * + * Examples: + * + * connect.logger() // default + * connect.logger('short') + * connect.logger('tiny') + * connect.logger({ immediate: true, format: 'dev' }) + * connect.logger(':method :url - :referrer') + * connect.logger(':req[content-type] -> :res[content-type]') + * connect.logger(function(tokens, req, res){ return 'some format string' }) + * + * Defining Tokens: + * + * To define a token, simply invoke `connect.logger.token()` with the + * name and a callback function. The value returned is then available + * as ":type" in this case. + * + * connect.logger.token('type', function(req, res){ return req.headers['content-type']; }) + * + * Defining Formats: + * + * All default formats are defined this way, however it's public API as well: + * + * connect.logger.format('name', 'string or function') + * + * @param {String|Function|Object} format or options + * @return {Function} + * @api public + */ + +exports = module.exports = function logger(options) { + if ('object' == typeof options) { + options = options || {}; + } else if (options) { + options = { format: options }; + } else { + options = {}; + } + + // output on request instead of response + var immediate = options.immediate; + + // format name + var fmt = exports[options.format] || options.format || exports.default; + + // compile format + if ('function' != typeof fmt) fmt = compile(fmt); + + // options + var stream = options.stream || process.stdout + , buffer = options.buffer; + + // buffering support + if (buffer) { + var realStream = stream + , interval = 'number' == typeof buffer + ? buffer + : defaultBufferDuration; + + // flush interval + setInterval(function(){ + if (buf.length) { + realStream.write(buf.join('')); + buf.length = 0; + } + }, interval); + + // swap the stream + stream = { + write: function(str){ + buf.push(str); + } + }; + } + + return function logger(req, res, next) { + req._startTime = new Date; + + // immediate + if (immediate) { + var line = fmt(exports, req, res); + if (null == line) return; + stream.write(line + '\n'); + // proxy end to output logging + } else { + var end = res.end; + res.end = function(chunk, encoding){ + res.end = end; + res.end(chunk, encoding); + var line = fmt(exports, req, res); + if (null == line) return; + stream.write(line + '\n'); + }; + } + + + next(); + }; +}; + +/** + * Compile `fmt` into a function. + * + * @param {String} fmt + * @return {Function} + * @api private + */ + +function compile(fmt) { + fmt = fmt.replace(/"/g, '\\"'); + var js = ' return "' + fmt.replace(/:([-\w]{2,})(?:\[([^\]]+)\])?/g, function(_, name, arg){ + return '"\n + (tokens["' + name + '"](req, res, "' + arg + '") || "-") + "'; + }) + '";' + return new Function('tokens, req, res', js); +}; + +/** + * Define a token function with the given `name`, + * and callback `fn(req, res)`. + * + * @param {String} name + * @param {Function} fn + * @return {Object} exports for chaining + * @api public + */ + +exports.token = function(name, fn) { + exports[name] = fn; + return this; +}; + +/** + * Define a `fmt` with the given `name`. + * + * @param {String} name + * @param {String|Function} fmt + * @return {Object} exports for chaining + * @api public + */ + +exports.format = function(name, str){ + exports[name] = str; + return this; +}; + +/** + * Default format. + */ + +exports.format('default', ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'); + +/** + * Short format. + */ + +exports.format('short', ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms'); + +/** + * Tiny format. + */ + +exports.format('tiny', ':method :url :status :res[content-length] - :response-time ms'); + +/** + * dev (colored) + */ + +exports.format('dev', function(tokens, req, res){ + var status = res.statusCode + , len = parseInt(res.getHeader('Content-Length'), 10) + , color = 32; + + if (status >= 500) color = 31 + else if (status >= 400) color = 33 + else if (status >= 300) color = 36; + + len = isNaN(len) + ? '' + : len = ' - ' + bytes(len); + + return '\033[90m' + req.method + + ' ' + req.originalUrl + ' ' + + '\033[' + color + 'm' + res.statusCode + + ' \033[90m' + + (new Date - req._startTime) + + 'ms' + len + + '\033[0m'; +}); + +/** + * request url + */ + +exports.token('url', function(req){ + return req.originalUrl || req.url; +}); + +/** + * request method + */ + +exports.token('method', function(req){ + return req.method; +}); + +/** + * response time in milliseconds + */ + +exports.token('response-time', function(req){ + return new Date - req._startTime; +}); + +/** + * UTC date + */ + +exports.token('date', function(){ + return new Date().toUTCString(); +}); + +/** + * response status code + */ + +exports.token('status', function(req, res){ + return res.statusCode; +}); + +/** + * normalized referrer + */ + +exports.token('referrer', function(req){ + return req.headers['referer'] || req.headers['referrer']; +}); + +/** + * remote address + */ + +exports.token('remote-addr', function(req){ + if (req.ip) return req.ip; + var sock = req.socket; + if (sock.socket) return sock.socket.remoteAddress; + return sock.remoteAddress; +}); + +/** + * HTTP version + */ + +exports.token('http-version', function(req){ + return req.httpVersionMajor + '.' + req.httpVersionMinor; +}); + +/** + * UA string + */ + +exports.token('user-agent', function(req){ + return req.headers['user-agent']; +}); + +/** + * request header + */ + +exports.token('req', function(req, res, field){ + return req.headers[field.toLowerCase()]; +}); + +/** + * response header + */ + +exports.token('res', function(req, res, field){ + return (res._headers || {})[field.toLowerCase()]; +}); + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js new file mode 100644 index 0000000..aaf4014 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js @@ -0,0 +1,40 @@ + +/*! + * Connect - methodOverride + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Method Override: + * + * Provides faux HTTP method support. + * + * Pass an optional `key` to use when checking for + * a method override, othewise defaults to _\_method_. + * The original method is available via `req.originalMethod`. + * + * @param {String} key + * @return {Function} + * @api public + */ + +module.exports = function methodOverride(key){ + key = key || "_method"; + return function methodOverride(req, res, next) { + req.originalMethod = req.originalMethod || req.method; + + // req.body + if (req.body && key in req.body) { + req.method = req.body[key].toUpperCase(); + delete req.body[key]; + // check X-HTTP-Method-Override + } else if (req.headers['x-http-method-override']) { + req.method = req.headers['x-http-method-override'].toUpperCase(); + } + + next(); + }; +}; + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js new file mode 100644 index 0000000..7b26fae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js @@ -0,0 +1,133 @@ +/*! + * Connect - multipart + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var formidable = require('formidable') + , _limit = require('./limit') + , utils = require('../utils') + , qs = require('qs'); + +/** + * noop middleware. + */ + +function noop(req, res, next) { + next(); +} + +/** + * Multipart: + * + * Parse multipart/form-data request bodies, + * providing the parsed object as `req.body` + * and `req.files`. + * + * Configuration: + * + * The options passed are merged with [formidable](https://github.com/felixge/node-formidable)'s + * `IncomingForm` object, allowing you to configure the upload directory, + * size limits, etc. For example if you wish to change the upload dir do the following. + * + * app.use(connect.multipart({ uploadDir: path })); + * + * Options: + * + * - `limit` byte limit defaulting to none + * - `defer` defers processing and exposes the Formidable form object as `req.form`. + * `next()` is called without waiting for the form's "end" event. + * This option is useful if you need to bind to the "progress" event, for example. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function(options){ + options = options || {}; + + var limit = options.limit + ? _limit(options.limit) + : noop; + + return function multipart(req, res, next) { + if (req._body) return next(); + req.body = req.body || {}; + req.files = req.files || {}; + + if (!utils.hasBody(req)) return next(); + + // ignore GET + if ('GET' == req.method || 'HEAD' == req.method) return next(); + + // check Content-Type + if ('multipart/form-data' != utils.mime(req)) return next(); + + // flag as parsed + req._body = true; + + // parse + limit(req, res, function(err){ + if (err) return next(err); + + var form = new formidable.IncomingForm + , data = {} + , files = {} + , done; + + Object.keys(options).forEach(function(key){ + form[key] = options[key]; + }); + + function ondata(name, val, data){ + if (Array.isArray(data[name])) { + data[name].push(val); + } else if (data[name]) { + data[name] = [data[name], val]; + } else { + data[name] = val; + } + } + + form.on('field', function(name, val){ + ondata(name, val, data); + }); + + form.on('file', function(name, val){ + ondata(name, val, files); + }); + + form.on('error', function(err){ + if (!options.defer) { + err.status = 400; + next(err); + } + done = true; + }); + + form.on('end', function(){ + if (done) return; + try { + req.body = qs.parse(data); + req.files = qs.parse(files); + if (!options.defer) next(); + } catch (err) { + form.emit('error', err); + } + }); + + form.parse(req); + + if (options.defer) { + req.form = form; + next(); + } + }); + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js new file mode 100644 index 0000000..93fc5d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js @@ -0,0 +1,46 @@ +/*! + * Connect - query + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var qs = require('qs') + , parse = require('../utils').parseUrl; + +/** + * Query: + * + * Automatically parse the query-string when available, + * populating the `req.query` object. + * + * Examples: + * + * connect() + * .use(connect.query()) + * .use(function(req, res){ + * res.end(JSON.stringify(req.query)); + * }); + * + * The `options` passed are provided to qs.parse function. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function query(options){ + return function query(req, res, next){ + if (!req.query) { + req.query = ~req.url.indexOf('?') + ? qs.parse(parse(req).query, options) + : {}; + } + + next(); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js new file mode 100644 index 0000000..62abc04 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js @@ -0,0 +1,32 @@ + +/*! + * Connect - responseTime + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Reponse time: + * + * Adds the `X-Response-Time` header displaying the response + * duration in milliseconds. + * + * @return {Function} + * @api public + */ + +module.exports = function responseTime(){ + return function(req, res, next){ + var start = new Date; + + if (res._responseTime) return next(); + res._responseTime = true; + + res.on('header', function(){ + var duration = new Date - start; + res.setHeader('X-Response-Time', duration + 'ms'); + }); + + next(); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js new file mode 100644 index 0000000..9be6c8b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js @@ -0,0 +1,356 @@ + +/*! + * Connect - session + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Session = require('./session/session') + , debug = require('debug')('connect:session') + , MemoryStore = require('./session/memory') + , signature = require('cookie-signature') + , Cookie = require('./session/cookie') + , Store = require('./session/store') + , utils = require('./../utils') + , parse = utils.parseUrl + , crc32 = require('buffer-crc32'); + +// environment + +var env = process.env.NODE_ENV; + +/** + * Expose the middleware. + */ + +exports = module.exports = session; + +/** + * Expose constructors. + */ + +exports.Store = Store; +exports.Cookie = Cookie; +exports.Session = Session; +exports.MemoryStore = MemoryStore; + +/** + * Warning message for `MemoryStore` usage in production. + */ + +var warning = 'Warning: connection.session() MemoryStore is not\n' + + 'designed for a production environment, as it will leak\n' + + 'memory, and will not scale past a single process.'; + +/** + * Session: + * + * Setup session store with the given `options`. + * + * Session data is _not_ saved in the cookie itself, however + * cookies are used, so we must use the [cookieParser()](cookieParser.html) + * middleware _before_ `session()`. + * + * Examples: + * + * connect() + * .use(connect.cookieParser()) + * .use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) + * + * Options: + * + * - `key` cookie name defaulting to `connect.sid` + * - `store` session store instance + * - `secret` session cookie is signed with this secret to prevent tampering + * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }` + * - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto") + * + * Cookie option: + * + * By default `cookie.maxAge` is `null`, meaning no "expires" parameter is set + * so the cookie becomes a browser-session cookie. When the user closes the + * browser the cookie (and session) will be removed. + * + * ## req.session + * + * To store or access session data, simply use the request property `req.session`, + * which is (generally) serialized as JSON by the store, so nested objects + * are typically fine. For example below is a user-specific view counter: + * + * connect() + * .use(connect.favicon()) + * .use(connect.cookieParser()) + * .use(connect.session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) + * .use(function(req, res, next){ + * var sess = req.session; + * if (sess.views) { + * res.setHeader('Content-Type', 'text/html'); + * res.write('

    views: ' + sess.views + '

    '); + * res.write('

    expires in: ' + (sess.cookie.maxAge / 1000) + 's

    '); + * res.end(); + * sess.views++; + * } else { + * sess.views = 1; + * res.end('welcome to the session demo. refresh!'); + * } + * } + * )).listen(3000); + * + * ## Session#regenerate() + * + * To regenerate the session simply invoke the method, once complete + * a new SID and `Session` instance will be initialized at `req.session`. + * + * req.session.regenerate(function(err){ + * // will have a new session here + * }); + * + * ## Session#destroy() + * + * Destroys the session, removing `req.session`, will be re-generated next request. + * + * req.session.destroy(function(err){ + * // cannot access session here + * }); + * + * ## Session#reload() + * + * Reloads the session data. + * + * req.session.reload(function(err){ + * // session updated + * }); + * + * ## Session#save() + * + * Save the session. + * + * req.session.save(function(err){ + * // session saved + * }); + * + * ## Session#touch() + * + * Updates the `.maxAge` property. Typically this is + * not necessary to call, as the session middleware does this for you. + * + * ## Session#cookie + * + * Each session has a unique cookie object accompany it. This allows + * you to alter the session cookie per visitor. For example we can + * set `req.session.cookie.expires` to `false` to enable the cookie + * to remain for only the duration of the user-agent. + * + * ## Session#maxAge + * + * Alternatively `req.session.cookie.maxAge` will return the time + * remaining in milliseconds, which we may also re-assign a new value + * to adjust the `.expires` property appropriately. The following + * are essentially equivalent + * + * var hour = 3600000; + * req.session.cookie.expires = new Date(Date.now() + hour); + * req.session.cookie.maxAge = hour; + * + * For example when `maxAge` is set to `60000` (one minute), and 30 seconds + * has elapsed it will return `30000` until the current request has completed, + * at which time `req.session.touch()` is called to reset `req.session.maxAge` + * to its original value. + * + * req.session.cookie.maxAge; + * // => 30000 + * + * Session Store Implementation: + * + * Every session store _must_ implement the following methods + * + * - `.get(sid, callback)` + * - `.set(sid, session, callback)` + * - `.destroy(sid, callback)` + * + * Recommended methods include, but are not limited to: + * + * - `.length(callback)` + * - `.clear(callback)` + * + * For an example implementation view the [connect-redis](http://github.com/visionmedia/connect-redis) repo. + * + * @param {Object} options + * @return {Function} + * @api public + */ + +function session(options){ + var options = options || {} + , key = options.key || 'connect.sid' + , store = options.store || new MemoryStore + , cookie = options.cookie || {} + , trustProxy = options.proxy + , storeReady = true; + + // notify user that this store is not + // meant for a production environment + if ('production' == env && store instanceof MemoryStore) { + console.warn(warning); + } + + // generates the new session + store.generate = function(req){ + req.sessionID = utils.uid(24); + req.session = new Session(req); + req.session.cookie = new Cookie(cookie); + }; + + store.on('disconnect', function(){ storeReady = false; }); + store.on('connect', function(){ storeReady = true; }); + + return function session(req, res, next) { + // self-awareness + if (req.session) return next(); + + // Handle connection as if there is no session if + // the store has temporarily disconnected etc + if (!storeReady) return debug('store is disconnected'), next(); + + // pathname mismatch + if (0 != req.originalUrl.indexOf(cookie.path || '/')) return next(); + + // backwards compatibility for signed cookies + // req.secret is passed from the cookie parser middleware + var secret = options.secret || req.secret; + + // ensure secret is available or bail + if (!secret) throw new Error('`secret` option required for sessions'); + + // parse url + var originalHash + , originalId; + + // expose store + req.sessionStore = store; + + // grab the session cookie value and check the signature + var rawCookie = req.cookies[key]; + + // get signedCookies for backwards compat with signed cookies + var unsignedCookie = req.signedCookies[key]; + + if (!unsignedCookie && rawCookie) { + unsignedCookie = utils.parseSignedCookie(rawCookie, secret); + } + + // set-cookie + res.on('header', function(){ + if (!req.session) return; + var cookie = req.session.cookie + , proto = (req.headers['x-forwarded-proto'] || '').split(',')[0].toLowerCase().trim() + , tls = req.connection.encrypted || (trustProxy && 'https' == proto) + , secured = cookie.secure && tls + , isNew = unsignedCookie != req.sessionID; + + // only send secure cookies via https + if (cookie.secure && !secured) return debug('not secured'); + + // long expires, handle expiry server-side + if (!isNew && cookie.hasLongExpires) return debug('already set cookie'); + + // browser-session length cookie + if (null == cookie.expires) { + if (!isNew) return debug('already set browser-session cookie'); + // compare hashes and ids + } else if (originalHash == hash(req.session) && originalId == req.session.id) { + return debug('unmodified session'); + } + + var val = 's:' + signature.sign(req.sessionID, secret); + val = cookie.serialize(key, val); + debug('set-cookie %s', val); + res.setHeader('Set-Cookie', val); + }); + + // proxy end() to commit the session + var end = res.end; + res.end = function(data, encoding){ + res.end = end; + if (!req.session) return res.end(data, encoding); + debug('saving'); + req.session.resetMaxAge(); + req.session.save(function(err){ + if (err) console.error(err.stack); + debug('saved'); + res.end(data, encoding); + }); + }; + + // generate the session + function generate() { + store.generate(req); + } + + // get the sessionID from the cookie + req.sessionID = unsignedCookie; + + // generate a session if the browser doesn't send a sessionID + if (!req.sessionID) { + debug('no SID sent, generating session'); + generate(); + next(); + return; + } + + // generate the session object + var pause = utils.pause(req); + debug('fetching %s', req.sessionID); + store.get(req.sessionID, function(err, sess){ + // proxy to resume() events + var _next = next; + next = function(err){ + _next(err); + pause.resume(); + }; + + // error handling + if (err) { + debug('error %j', err); + if ('ENOENT' == err.code) { + generate(); + next(); + } else { + next(err); + } + // no session + } else if (!sess) { + debug('no session found'); + generate(); + next(); + // populate req.session + } else { + debug('session found'); + store.createSession(req, sess); + originalId = req.sessionID; + originalHash = hash(sess); + next(); + } + }); + }; +}; + +/** + * Hash the given `sess` object omitting changes + * to `.cookie`. + * + * @param {Object} sess + * @return {String} + * @api private + */ + +function hash(sess) { + return crc32.signed(JSON.stringify(sess, function(key, val){ + if ('cookie' != key) return val; + })); +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js new file mode 100644 index 0000000..cdce2a5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js @@ -0,0 +1,140 @@ + +/*! + * Connect - session - Cookie + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../../utils') + , cookie = require('cookie'); + +/** + * Initialize a new `Cookie` with the given `options`. + * + * @param {IncomingMessage} req + * @param {Object} options + * @api private + */ + +var Cookie = module.exports = function Cookie(options) { + this.path = '/'; + this.maxAge = null; + this.httpOnly = true; + if (options) utils.merge(this, options); + this.originalMaxAge = undefined == this.originalMaxAge + ? this.maxAge + : this.originalMaxAge; +}; + +/*! + * Prototype. + */ + +Cookie.prototype = { + + /** + * Set expires `date`. + * + * @param {Date} date + * @api public + */ + + set expires(date) { + this._expires = date; + this.originalMaxAge = this.maxAge; + }, + + /** + * Get expires `date`. + * + * @return {Date} + * @api public + */ + + get expires() { + return this._expires; + }, + + /** + * Set expires via max-age in `ms`. + * + * @param {Number} ms + * @api public + */ + + set maxAge(ms) { + this.expires = 'number' == typeof ms + ? new Date(Date.now() + ms) + : ms; + }, + + /** + * Get expires max-age in `ms`. + * + * @return {Number} + * @api public + */ + + get maxAge() { + return this.expires instanceof Date + ? this.expires.valueOf() - Date.now() + : this.expires; + }, + + /** + * Return cookie data object. + * + * @return {Object} + * @api private + */ + + get data() { + return { + originalMaxAge: this.originalMaxAge + , expires: this._expires + , secure: this.secure + , httpOnly: this.httpOnly + , domain: this.domain + , path: this.path + } + }, + + /** + * Check if the cookie has a reasonably large max-age. + * + * @return {Boolean} + * @api private + */ + + get hasLongExpires() { + var week = 604800000; + return this.maxAge > (4 * week); + }, + + /** + * Return a serialized cookie string. + * + * @return {String} + * @api public + */ + + serialize: function(name, val){ + return cookie.serialize(name, val, this.data); + }, + + /** + * Return JSON representation of this cookie. + * + * @return {Object} + * @api private + */ + + toJSON: function(){ + return this.data; + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js new file mode 100644 index 0000000..fb93939 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js @@ -0,0 +1,129 @@ + +/*! + * Connect - session - MemoryStore + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Store = require('./store'); + +/** + * Initialize a new `MemoryStore`. + * + * @api public + */ + +var MemoryStore = module.exports = function MemoryStore() { + this.sessions = {}; +}; + +/** + * Inherit from `Store.prototype`. + */ + +MemoryStore.prototype.__proto__ = Store.prototype; + +/** + * Attempt to fetch session by the given `sid`. + * + * @param {String} sid + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.get = function(sid, fn){ + var self = this; + process.nextTick(function(){ + var expires + , sess = self.sessions[sid]; + if (sess) { + sess = JSON.parse(sess); + expires = 'string' == typeof sess.cookie.expires + ? new Date(sess.cookie.expires) + : sess.cookie.expires; + if (!expires || new Date < expires) { + fn(null, sess); + } else { + self.destroy(sid, fn); + } + } else { + fn(); + } + }); +}; + +/** + * Commit the given `sess` object associated with the given `sid`. + * + * @param {String} sid + * @param {Session} sess + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.set = function(sid, sess, fn){ + var self = this; + process.nextTick(function(){ + self.sessions[sid] = JSON.stringify(sess); + fn && fn(); + }); +}; + +/** + * Destroy the session associated with the given `sid`. + * + * @param {String} sid + * @api public + */ + +MemoryStore.prototype.destroy = function(sid, fn){ + var self = this; + process.nextTick(function(){ + delete self.sessions[sid]; + fn && fn(); + }); +}; + +/** + * Invoke the given callback `fn` with all active sessions. + * + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.all = function(fn){ + var arr = [] + , keys = Object.keys(this.sessions); + for (var i = 0, len = keys.length; i < len; ++i) { + arr.push(this.sessions[keys[i]]); + } + fn(null, arr); +}; + +/** + * Clear all sessions. + * + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.clear = function(fn){ + this.sessions = {}; + fn && fn(); +}; + +/** + * Fetch number of sessions. + * + * @param {Function} fn + * @api public + */ + +MemoryStore.prototype.length = function(fn){ + fn(null, Object.keys(this.sessions).length); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js new file mode 100644 index 0000000..0dd4b40 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js @@ -0,0 +1,116 @@ + +/*! + * Connect - session - Session + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../../utils'); + +/** + * Create a new `Session` with the given request and `data`. + * + * @param {IncomingRequest} req + * @param {Object} data + * @api private + */ + +var Session = module.exports = function Session(req, data) { + Object.defineProperty(this, 'req', { value: req }); + Object.defineProperty(this, 'id', { value: req.sessionID }); + if ('object' == typeof data) utils.merge(this, data); +}; + +/** + * Update reset `.cookie.maxAge` to prevent + * the cookie from expiring when the + * session is still active. + * + * @return {Session} for chaining + * @api public + */ + +Session.prototype.touch = function(){ + return this.resetMaxAge(); +}; + +/** + * Reset `.maxAge` to `.originalMaxAge`. + * + * @return {Session} for chaining + * @api public + */ + +Session.prototype.resetMaxAge = function(){ + this.cookie.maxAge = this.cookie.originalMaxAge; + return this; +}; + +/** + * Save the session data with optional callback `fn(err)`. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.save = function(fn){ + this.req.sessionStore.set(this.id, this, fn || function(){}); + return this; +}; + +/** + * Re-loads the session data _without_ altering + * the maxAge properties. Invokes the callback `fn(err)`, + * after which time if no exception has occurred the + * `req.session` property will be a new `Session` object, + * although representing the same session. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.reload = function(fn){ + var req = this.req + , store = this.req.sessionStore; + store.get(this.id, function(err, sess){ + if (err) return fn(err); + if (!sess) return fn(new Error('failed to load session')); + store.createSession(req, sess); + fn(); + }); + return this; +}; + +/** + * Destroy `this` session. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.destroy = function(fn){ + delete this.req.session; + this.req.sessionStore.destroy(this.id, fn); + return this; +}; + +/** + * Regenerate this request's session. + * + * @param {Function} fn + * @return {Session} for chaining + * @api public + */ + +Session.prototype.regenerate = function(fn){ + this.req.sessionStore.regenerate(this.req, fn); + return this; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js new file mode 100644 index 0000000..54294cb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js @@ -0,0 +1,84 @@ + +/*! + * Connect - session - Store + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , Session = require('./session') + , Cookie = require('./cookie'); + +/** + * Initialize abstract `Store`. + * + * @api private + */ + +var Store = module.exports = function Store(options){}; + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Store.prototype.__proto__ = EventEmitter.prototype; + +/** + * Re-generate the given requests's session. + * + * @param {IncomingRequest} req + * @return {Function} fn + * @api public + */ + +Store.prototype.regenerate = function(req, fn){ + var self = this; + this.destroy(req.sessionID, function(err){ + self.generate(req); + fn(err); + }); +}; + +/** + * Load a `Session` instance via the given `sid` + * and invoke the callback `fn(err, sess)`. + * + * @param {String} sid + * @param {Function} fn + * @api public + */ + +Store.prototype.load = function(sid, fn){ + var self = this; + this.get(sid, function(err, sess){ + if (err) return fn(err); + if (!sess) return fn(); + var req = { sessionID: sid, sessionStore: self }; + sess = self.createSession(req, sess); + fn(null, sess); + }); +}; + +/** + * Create session from JSON `sess` data. + * + * @param {IncomingRequest} req + * @param {Object} sess + * @return {Session} + * @api private + */ + +Store.prototype.createSession = function(req, sess){ + var expires = sess.cookie.expires + , orig = sess.cookie.originalMaxAge; + sess.cookie = new Cookie(sess.cookie); + if ('string' == typeof expires) sess.cookie.expires = new Date(expires); + sess.cookie.originalMaxAge = orig; + req.session = new Session(req, sess); + return req.session; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js new file mode 100644 index 0000000..093e73f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js @@ -0,0 +1,95 @@ +/*! + * Connect - static + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var send = require('send') + , utils = require('../utils') + , parse = utils.parseUrl + , url = require('url'); + +/** + * Static: + * + * Static file server with the given `root` path. + * + * Examples: + * + * var oneDay = 86400000; + * + * connect() + * .use(connect.static(__dirname + '/public')) + * + * connect() + * .use(connect.static(__dirname + '/public', { maxAge: oneDay })) + * + * Options: + * + * - `maxAge` Browser cache maxAge in milliseconds. defaults to 0 + * - `hidden` Allow transfer of hidden files. defaults to false + * - `redirect` Redirect to trailing "/" when the pathname is a dir. defaults to true + * - `index` Default file name, defaults to 'index.html' + * + * @param {String} root + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function(root, options){ + options = options || {}; + + // root required + if (!root) throw new Error('static() root path required'); + + // default redirect + var redirect = false !== options.redirect; + + return function static(req, res, next) { + if ('GET' != req.method && 'HEAD' != req.method) return next(); + var path = parse(req).pathname; + var pause = utils.pause(req); + + function resume() { + next(); + pause.resume(); + } + + function directory() { + if (!redirect) return resume(); + var pathname = url.parse(req.originalUrl).pathname; + res.statusCode = 301; + res.setHeader('Location', pathname + '/'); + res.end('Redirecting to ' + utils.escape(pathname) + '/'); + } + + function error(err) { + if (404 == err.status) return resume(); + next(err); + } + + send(req, path) + .maxage(options.maxAge || 0) + .root(root) + .index(options.index || 'index.html') + .hidden(options.hidden) + .on('error', error) + .on('directory', directory) + .pipe(res); + }; +}; + +/** + * Expose mime module. + * + * If you wish to extend the mime table use this + * reference to the "mime" module in the npm registry. + */ + +exports.mime = send.mime; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js new file mode 100644 index 0000000..7354a8f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js @@ -0,0 +1,231 @@ + +/*! + * Connect - staticCache + * Copyright(c) 2011 Sencha Inc. + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , Cache = require('../cache') + , fresh = require('fresh'); + +/** + * Static cache: + * + * Enables a memory cache layer on top of + * the `static()` middleware, serving popular + * static files. + * + * By default a maximum of 128 objects are + * held in cache, with a max of 256k each, + * totalling ~32mb. + * + * A Least-Recently-Used (LRU) cache algo + * is implemented through the `Cache` object, + * simply rotating cache objects as they are + * hit. This means that increasingly popular + * objects maintain their positions while + * others get shoved out of the stack and + * garbage collected. + * + * Benchmarks: + * + * static(): 2700 rps + * node-static: 5300 rps + * static() + staticCache(): 7500 rps + * + * Options: + * + * - `maxObjects` max cache objects [128] + * - `maxLength` max cache object length 256kb + * + * @param {Object} options + * @return {Function} + * @api public + */ + +module.exports = function staticCache(options){ + var options = options || {} + , cache = new Cache(options.maxObjects || 128) + , maxlen = options.maxLength || 1024 * 256; + + console.warn('connect.staticCache() is deprecated and will be removed in 3.0'); + console.warn('use varnish or similar reverse proxy caches.'); + + return function staticCache(req, res, next){ + var key = cacheKey(req) + , ranges = req.headers.range + , hasCookies = req.headers.cookie + , hit = cache.get(key); + + // cache static + // TODO: change from staticCache() -> cache() + // and make this work for any request + req.on('static', function(stream){ + var headers = res._headers + , cc = utils.parseCacheControl(headers['cache-control'] || '') + , contentLength = headers['content-length'] + , hit; + + // dont cache set-cookie responses + if (headers['set-cookie']) return hasCookies = true; + + // dont cache when cookies are present + if (hasCookies) return; + + // ignore larger files + if (!contentLength || contentLength > maxlen) return; + + // don't cache partial files + if (headers['content-range']) return; + + // dont cache items we shouldn't be + // TODO: real support for must-revalidate / no-cache + if ( cc['no-cache'] + || cc['no-store'] + || cc['private'] + || cc['must-revalidate']) return; + + // if already in cache then validate + if (hit = cache.get(key)){ + if (headers.etag == hit[0].etag) { + hit[0].date = new Date; + return; + } else { + cache.remove(key); + } + } + + // validation notifiactions don't contain a steam + if (null == stream) return; + + // add the cache object + var arr = []; + + // store the chunks + stream.on('data', function(chunk){ + arr.push(chunk); + }); + + // flag it as complete + stream.on('end', function(){ + var cacheEntry = cache.add(key); + delete headers['x-cache']; // Clean up (TODO: others) + cacheEntry.push(200); + cacheEntry.push(headers); + cacheEntry.push.apply(cacheEntry, arr); + }); + }); + + if (req.method == 'GET' || req.method == 'HEAD') { + if (ranges) { + next(); + } else if (!hasCookies && hit && !mustRevalidate(req, hit)) { + res.setHeader('X-Cache', 'HIT'); + respondFromCache(req, res, hit); + } else { + res.setHeader('X-Cache', 'MISS'); + next(); + } + } else { + next(); + } + } +}; + +/** + * Respond with the provided cached value. + * TODO: Assume 200 code, that's iffy. + * + * @param {Object} req + * @param {Object} res + * @param {Object} cacheEntry + * @return {String} + * @api private + */ + +function respondFromCache(req, res, cacheEntry) { + var status = cacheEntry[0] + , headers = utils.merge({}, cacheEntry[1]) + , content = cacheEntry.slice(2); + + headers.age = (new Date - new Date(headers.date)) / 1000 || 0; + + switch (req.method) { + case 'HEAD': + res.writeHead(status, headers); + res.end(); + break; + case 'GET': + if (utils.conditionalGET(req) && fresh(req.headers, headers)) { + headers['content-length'] = 0; + res.writeHead(304, headers); + res.end(); + } else { + res.writeHead(status, headers); + + function write() { + while (content.length) { + if (false === res.write(content.shift())) { + res.once('drain', write); + return; + } + } + res.end(); + } + + write(); + } + break; + default: + // This should never happen. + res.writeHead(500, ''); + res.end(); + } +} + +/** + * Determine whether or not a cached value must be revalidated. + * + * @param {Object} req + * @param {Object} cacheEntry + * @return {String} + * @api private + */ + +function mustRevalidate(req, cacheEntry) { + var cacheHeaders = cacheEntry[1] + , reqCC = utils.parseCacheControl(req.headers['cache-control'] || '') + , cacheCC = utils.parseCacheControl(cacheHeaders['cache-control'] || '') + , cacheAge = (new Date - new Date(cacheHeaders.date)) / 1000 || 0; + + if ( cacheCC['no-cache'] + || cacheCC['must-revalidate'] + || cacheCC['proxy-revalidate']) return true; + + if (reqCC['no-cache']) return true; + + if (null != reqCC['max-age']) return reqCC['max-age'] < cacheAge; + + if (null != cacheCC['max-age']) return cacheCC['max-age'] < cacheAge; + + return false; +} + +/** + * The key to use in the cache. For now, this is the URL path and query. + * + * 'http://example.com?key=value' -> '/?key=value' + * + * @param {Object} req + * @return {String} + * @api private + */ + +function cacheKey(req) { + return utils.parseUrl(req).path; +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js new file mode 100644 index 0000000..dba4654 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js @@ -0,0 +1,55 @@ +/*! + * Connect - timeout + * Ported from https://github.com/LearnBoost/connect-timeout + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var debug = require('debug')('connect:timeout'); + +/** + * Timeout: + * + * Times out the request in `ms`, defaulting to `5000`. The + * method `req.clearTimeout()` is added to revert this behaviour + * programmatically within your application's middleware, routes, etc. + * + * The timeout error is passed to `next()` so that you may customize + * the response behaviour. This error has the `.timeout` property as + * well as `.status == 408`. + * + * @param {Number} ms + * @return {Function} + * @api public + */ + +module.exports = function timeout(ms) { + ms = ms || 5000; + + return function(req, res, next) { + var id = setTimeout(function(){ + req.emit('timeout', ms); + }, ms); + + req.on('timeout', function(){ + if (res.headerSent) return debug('response started, cannot timeout'); + var err = new Error('Response timeout'); + err.timeout = ms; + err.status = 503; + next(err); + }); + + req.clearTimeout = function(){ + clearTimeout(id); + }; + + res.on('header', function(){ + clearTimeout(id); + }); + + next(); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js new file mode 100644 index 0000000..cceafc0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js @@ -0,0 +1,78 @@ + +/*! + * Connect - urlencoded + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var utils = require('../utils') + , _limit = require('./limit') + , qs = require('qs'); + +/** + * noop middleware. + */ + +function noop(req, res, next) { + next(); +} + +/** + * Urlencoded: + * + * Parse x-ww-form-urlencoded request bodies, + * providing the parsed object as `req.body`. + * + * Options: + * + * - `limit` byte limit disabled by default + * + * @param {Object} options + * @return {Function} + * @api public + */ + +exports = module.exports = function(options){ + options = options || {}; + + var limit = options.limit + ? _limit(options.limit) + : noop; + + return function urlencoded(req, res, next) { + if (req._body) return next(); + req.body = req.body || {}; + + if (!utils.hasBody(req)) return next(); + + // check Content-Type + if ('application/x-www-form-urlencoded' != utils.mime(req)) return next(); + + // flag as parsed + req._body = true; + + // parse + limit(req, res, function(err){ + if (err) return next(err); + var buf = ''; + req.setEncoding('utf8'); + req.on('data', function(chunk){ buf += chunk }); + req.on('end', function(){ + try { + req.body = buf.length + ? qs.parse(buf, options) + : {}; + next(); + } catch (err){ + err.body = buf; + next(err); + } + }); + }); + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js new file mode 100644 index 0000000..abbb050 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js @@ -0,0 +1,40 @@ + +/*! + * Connect - vhost + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Vhost: + * + * Setup vhost for the given `hostname` and `server`. + * + * connect() + * .use(connect.vhost('foo.com', fooApp)) + * .use(connect.vhost('bar.com', barApp)) + * .use(connect.vhost('*.com', mainApp)) + * + * The `server` may be a Connect server or + * a regular Node `http.Server`. + * + * @param {String} hostname + * @param {Server} server + * @return {Function} + * @api public + */ + +module.exports = function vhost(hostname, server){ + if (!hostname) throw new Error('vhost hostname required'); + if (!server) throw new Error('vhost server required'); + var regexp = new RegExp('^' + hostname.replace(/[^*\w]/g, '\\$&').replace(/[*]/g, '(?:.*?)') + '$', 'i'); + if (server.onvhost) server.onvhost(hostname); + return function vhost(req, res, next){ + if (!req.headers.host) return next(); + var host = req.headers.host.split(':')[0]; + if (!regexp.test(host)) return next(); + if ('function' == typeof server) return server(req, res, next); + server.emit('request', req, res); + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js new file mode 100644 index 0000000..7cf0012 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js @@ -0,0 +1,79 @@ + +/*! + * Connect + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var http = require('http') + , res = http.ServerResponse.prototype + , setHeader = res.setHeader + , _renderHeaders = res._renderHeaders + , writeHead = res.writeHead; + +// apply only once + +if (!res._hasConnectPatch) { + + /** + * Provide a public "header sent" flag + * until node does. + * + * @return {Boolean} + * @api public + */ + + res.__defineGetter__('headerSent', function(){ + return this._header; + }); + + /** + * Set header `field` to `val`, special-casing + * the `Set-Cookie` field for multiple support. + * + * @param {String} field + * @param {String} val + * @api public + */ + + res.setHeader = function(field, val){ + var key = field.toLowerCase() + , prev; + + // special-case Set-Cookie + if (this._headers && 'set-cookie' == key) { + if (prev = this.getHeader(field)) { + val = Array.isArray(prev) + ? prev.concat(val) + : [prev, val]; + } + // charset + } else if ('content-type' == key && this.charset) { + val += '; charset=' + this.charset; + } + + return setHeader.call(this, field, val); + }; + + /** + * Proxy to emit "header" event. + */ + + res._renderHeaders = function(){ + if (!this._emittedHeader) this.emit('header'); + this._emittedHeader = true; + return _renderHeaders.call(this); + }; + + res.writeHead = function(){ + if (!this._emittedHeader) this.emit('header'); + this._emittedHeader = true; + return writeHead.apply(this, arguments); + }; + + res._hasConnectPatch = true; +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js new file mode 100644 index 0000000..b304cf7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js @@ -0,0 +1,230 @@ + +/*! + * Connect - HTTPServer + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var http = require('http') + , utils = require('./utils') + , debug = require('debug')('connect:dispatcher'); + +// prototype + +var app = module.exports = {}; + +// environment + +var env = process.env.NODE_ENV || 'development'; + +/** + * Utilize the given middleware `handle` to the given `route`, + * defaulting to _/_. This "route" is the mount-point for the + * middleware, when given a value other than _/_ the middleware + * is only effective when that segment is present in the request's + * pathname. + * + * For example if we were to mount a function at _/admin_, it would + * be invoked on _/admin_, and _/admin/settings_, however it would + * not be invoked for _/_, or _/posts_. + * + * Examples: + * + * var app = connect(); + * app.use(connect.favicon()); + * app.use(connect.logger()); + * app.use(connect.static(__dirname + '/public')); + * + * If we wanted to prefix static files with _/public_, we could + * "mount" the `static()` middleware: + * + * app.use('/public', connect.static(__dirname + '/public')); + * + * This api is chainable, so the following is valid: + * + * connect() + * .use(connect.favicon()) + * .use(connect.logger()) + * .use(connect.static(__dirname + '/public')) + * .listen(3000); + * + * @param {String|Function|Server} route, callback or server + * @param {Function|Server} callback or server + * @return {Server} for chaining + * @api public + */ + +app.use = function(route, fn){ + // default route to '/' + if ('string' != typeof route) { + fn = route; + route = '/'; + } + + // wrap sub-apps + if ('function' == typeof fn.handle) { + var server = fn; + fn.route = route; + fn = function(req, res, next){ + server.handle(req, res, next); + }; + } + + // wrap vanilla http.Servers + if (fn instanceof http.Server) { + fn = fn.listeners('request')[0]; + } + + // strip trailing slash + if ('/' == route[route.length - 1]) { + route = route.slice(0, -1); + } + + // add the middleware + debug('use %s %s', route || '/', fn.name || 'anonymous'); + this.stack.push({ route: route, handle: fn }); + + return this; +}; + +/** + * Handle server requests, punting them down + * the middleware stack. + * + * @api private + */ + +app.handle = function(req, res, out) { + var stack = this.stack + , fqdn = ~req.url.indexOf('://') + , removed = '' + , slashAdded = false + , index = 0; + + function next(err) { + var layer, path, status, c; + + if (slashAdded) { + req.url = req.url.substr(1); + slashAdded = false; + } + + req.url = removed + req.url; + req.originalUrl = req.originalUrl || req.url; + removed = ''; + + // next callback + layer = stack[index++]; + + // all done + if (!layer || res.headerSent) { + // delegate to parent + if (out) return out(err); + + // unhandled error + if (err) { + // default to 500 + if (res.statusCode < 400) res.statusCode = 500; + debug('default %s', res.statusCode); + + // respect err.status + if (err.status) res.statusCode = err.status; + + // production gets a basic error message + var msg = 'production' == env + ? http.STATUS_CODES[res.statusCode] + : err.stack || err.toString(); + + // log to stderr in a non-test env + if ('test' != env) console.error(err.stack || err.toString()); + if (res.headerSent) return req.socket.destroy(); + res.setHeader('Content-Type', 'text/plain'); + res.setHeader('Content-Length', Buffer.byteLength(msg)); + if ('HEAD' == req.method) return res.end(); + res.end(msg); + } else { + debug('default 404'); + res.statusCode = 404; + res.setHeader('Content-Type', 'text/plain'); + if ('HEAD' == req.method) return res.end(); + res.end('Cannot ' + req.method + ' ' + utils.escape(req.originalUrl)); + } + return; + } + + try { + path = utils.parseUrl(req).pathname; + if (undefined == path) path = '/'; + + // skip this layer if the route doesn't match. + if (0 != path.toLowerCase().indexOf(layer.route.toLowerCase())) return next(err); + + c = path[layer.route.length]; + if (c && '/' != c && '.' != c) return next(err); + + // Call the layer handler + // Trim off the part of the url that matches the route + removed = layer.route; + req.url = req.url.substr(removed.length); + + // Ensure leading slash + if (!fqdn && '/' != req.url[0]) { + req.url = '/' + req.url; + slashAdded = true; + } + + debug('%s', layer.handle.name || 'anonymous'); + var arity = layer.handle.length; + if (err) { + if (arity === 4) { + layer.handle(err, req, res, next); + } else { + next(err); + } + } else if (arity < 4) { + layer.handle(req, res, next); + } else { + next(); + } + } catch (e) { + next(e); + } + } + next(); +}; + +/** + * Listen for connections. + * + * This method takes the same arguments + * as node's `http.Server#listen()`. + * + * HTTP and HTTPS: + * + * If you run your application both as HTTP + * and HTTPS you may wrap them individually, + * since your Connect "server" is really just + * a JavaScript `Function`. + * + * var connect = require('connect') + * , http = require('http') + * , https = require('https'); + * + * var app = connect(); + * + * http.createServer(app).listen(80); + * https.createServer(options, app).listen(443); + * + * @return {http.Server} + * @api public + */ + +app.listen = function(){ + var server = http.createServer(this); + return server.listen.apply(server, arguments); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html new file mode 100644 index 0000000..2d63704 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html @@ -0,0 +1,81 @@ + + + + + listing directory {directory} + + + + + +
    +

    {linked-path}

    + {files} +
    + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html new file mode 100644 index 0000000..a6d3faf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html @@ -0,0 +1,14 @@ + + + + {error} + + + +
    +

    {title}

    +

    {statusCode} {error}

    +
      {stack}
    +
    + + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/favicon.ico b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..895fc96a76b68b4924f1c51d022e1b82fa0f461f GIT binary patch literal 1406 zcmZQzU<5(|0R}M0U}azs1F|%L7$l?s#Ec9aKoZP=&}i&OouUjIY8@C}uZw4x5z5N2 zvEG^C^vXtt_xtJ?p3O32c(KTx;lsgZhW%5M85Sf}k-mf`L80)|7ga~M{a znlL=>m1Q`#uoPkbC~GtXMnhnDh5$DU1D6mx+;2QAKt3ZQFH}H~1y~00GcqzVg9QXw z_<%(a7y$V|wJgF=E>MgE#Aid|14}IyCM5MhEnxFF;pTzOK(>#80puP=gnOXwAd33` mpMe2}f66m3eB@_fcnmb^7!b1nO#opK8zcsj1F30)+jEP);68^d)m`eN0o>(5%D`Q(1;j>g@G;xlf`0VBQ`PFY?6)!N&f?*K}$p; zB!U=NBn{eB8${1}&-2_L*HuZp@ZP1@clS@cHp)4iM1ewzw59vko7eMM{e9z|%NNdX z0V;`?KKSzTCvTm5bc{L^CIKLUxc2X{i{ISz$8Sgf{q)1nXTP{`{s?9mQ$4&hPiKC- zY8q7(Y1Xu5iCf33=O4Vy(+|zQ?rW#gkKB0f%}?+6{G*qT22|DQB-73`YzA{N4W^=s zq0kQYcbtFfz zLz)H<&|z(Y4kBG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png new file mode 100644 index 0000000000000000000000000000000000000000..89ee2da0753040d1ba0a3487473a715a8fe89322 GIT binary patch literal 794 zcmV+#1LgdQP)i_t#ewV_0K6;=bl;e_Jt7$~$sQ)q$+ia<4Ec+jeaGt9oWH@O|2`W6&O0t!k{B9sUvLWxkCaPsd9W(`fa z;j-|^ZI^2XnzhgZWYRW-kP&J>DWPo`%;JaBX}or79k=+Jo@h%4Eo72tqev+cB?PjP zO<|ByL#>Tehyq$jR74O$B9WDW1`tK`LzYyL3A9iAcRxLkJ`I)n}v%Od-3H>j$OTBtk>(k-9o?8PqI=0 zB&f-+KOXVnjyKJlf4iHOtnuiE_4+ZVJ$dHjU<^o^YCjQ-wt^!;rPpBv(@pFO{9rdw98 z_s@3+yta93oyfL>7AD5}r=|`zS3Gm$_|(iSl8XBd9k%=91J0j2=ivT5cJ18ZmDjh{ z$-RMd{jQ#X79#Sc literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_code.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_code.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ea90419d950f9e69d977a1f5847456d96a5f0b GIT binary patch literal 818 zcmV-21I_%2P)@LCln44|RX7Ti z0HI3&7jPq){odH{?_{%nYVq_;n_c4WbUpvU(&Cvnj!vq|kVC-vpF6vp^;;e0mm6HW z+WPzA`AZ|;pPp$&dNjzrc??4rt`k%Q1l*u-BPD0MQ}Fbm8jnsyezNt7+u{23>t7Em zJtETY?ja9KrVs^!LJ$xEMF3-bAZO;-IQJavE60KA7fO$VY_%N)R6s>g5mW>fL4&aR z*EVgKKTBXm!=L?S0?xM zYqL@C$|EDF2q*3zWW7;PDZ}SK*IE8;i!3U62=qn80C&*I1Le7WwNP5EcX;_oh2dJn zf#HgBe4@r$GcjHjmj2vAfT%(YN?}kK=(*+1*DkNNc1H5R++vfBMhACi<5uFUU+N4+ z<&U*CPmWi}REa7C6-t>2im1CWv5Jkefxa6>)dEj-CAW wWa{_}BJ!}~75?MkfaCnj>Dn=~vkLS70Pk`;z)@TQj{pDw07*qoM6N<$f@imYHUIzs literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..195dc6d6c365d298e466026b37c1959d96119ea7 GIT binary patch literal 663 zcmV;I0%-k-P)^@R5;6Z z(>-WZK@^7J_sq=QY_e{46@P+~LNG}sRzZsxQHvCsN*h5ir6^j7pq-$xu$N#V1gx}9 zClV7;5)7zih-s3DB)G=7|99>ji@So7-P24n=VQ(@GctDX!^_@$bj%oviY6e4Dh;od zooe%Wvs8LEKQ&&bL&@bwi=STIAI@!-gB2jC5+?y?VR~VkrNxam-`6*8&po|RZ5LpS zNKdJ%c4bTX`XjKsnecf%W>1%6WT?pKNdLLq{=(f(Col?P1+oq@R>)W(n=x!|*BIIh z6DJGw_w`)u6yN|vAhMteYK5#b%r5^v+VCFl1IGssaclZZMS{vs-LJ2$)n7DAr6==K z<29#%AXsBsDoO}SBaXR#_Ap!JKx)(1)3O2pj0_dYWz5By*X74fRT01$Fk%P_RzOMDtV?GU{nsYq#K8iy zb6qzLYDj`_f5$BwC*WE(t0m#xYJ*=jC2|HQYHh=pf#QG7oowi`h!L!{DB$8|qY{~X zu8@sU1tWq;n$XThR0%;45mdqXM892|{CJ@0DS*}>?ami06Q_^tvM~Y3K(_-`#m!8f z8f!QIrH4y#61;0Ym0cCoLl8{IPombPHtnn7%SbTdI&G-d>ZQo!_wBMF9nzX!g8HVY xYTJPGciz9XMh3w2fmZ(7v{)r*QZD48?mrio{~IaoqP z|1Ep}yDQG09bP~E^Dk?@JiKQJ z6-pO(3~IOP)IYisL6D6;oAEd;E%zR}{U$rMRNuD6nQV7nesKS>)yLo7JuDCrD>Abi zbj3uW23?^GA}9jQ{M^8v?ejL?HaT7AX5WPZNkBmfN`w-jL?{tT7ykZt$%Yln?p_m~ z-?>&d(LD(jAd}h=LPltPQbO$*Wbyl@G-_k5jXbb#qffHY03>M1jfEqoPJQ6Mr=Byp=^jfzePZV1 zLjCmNi31hdIJHa%e;5g=1(`u3BRzfeExY%=VCu{loOr{`%2hUR*x>tL^W_TTaj);0 zpPR6CUD1+0>4TQ6zVfH3TQ;%l6#(_%yspK@3gcmG#Q4!WCPyLU93nMKk7E2pcA=l45({2jNho>sdF*A~bA zxX?-cp~y_z_kFf+yqu3m#QiB}03?Z&9vvR5TNgj<)($Vm)xq5G>|o2sFMag&6aNF+ WAT1?sQBYt20000iHtsh1EzPArg^Q zIZrOk#rNsfjaSbMAL;<4h;Z=jvu8dzyz8N&Nb7=z03ZUw?9z%8KQEa6yM5=kUnka& z3?FJk2}L7q>na=T#;<7U*P91xfF`;`6%pVgWgRy0?1ZryL@%z52=-!fGXWGEn4M351L4<+7eDgwo|moqXT+s1&Kmn>-uQQ8mL7XY)w5Zk*(g+<3Y3tmkR!bL zOUKaUtj_pX26sH+=Iorwu}MGd`_%O-_sS}8VpG#fJA)Fcs#ezwtZf?q?Ac70mDv`rVs{$od?VPKeqf<-kUjNtS6ecB*mq<&M97K^6IVsDO zt2$Ru!b+>2S<}_H>$RcInusU_8PMNdf(W{sNlJ3FkrwMJPeBPO#d}Y^a{9TH(#{Y) l0D?dWAV4eUJX#h`!2gmISk&ZKd4B)^002ovPDHLkV1g&sd|Lnj literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_error.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_error.png new file mode 100644 index 0000000000000000000000000000000000000000..f07f449a44ff2761bfc7b752db3d08d0e1238b02 GIT binary patch literal 793 zcmV+!1LpjRP)lHwhvrAu0-@MQwt}+5~MQTtu}C0%;W( z1<{R?aHBz*g;pk%AyQVBR_Zu5m~;ES_vxI-O!vIF|H*|T{l`n#garr?$RMk>)?Y48 z(ZF2yTneKb};DNWF+jK)IF`6_IfJ{i|F3o%Q+l&4_HGBD|ACE8na_6>L z=s{^>-C(a7J$6=8A_%h5W!1K6dcL!D?XX+Ndk)oei?UundDpX_E&1Y&`)3P8#Ny0s z2Ag7_&ZPhyGj%)g&S6V2LNun1;iBQm#Fwlfv zgyESZR$X}2P;=RW!2zid1r$hBL{K7>2qi*f7>pT1=RdT3@-anEoH{ z={KFOO;Dh#bV*jaN>}M>RZqQd`S=6O9C3KpI~I>l%QFYfo;jqQYe5fcn`)+)zMm6P z4X&L(>gnN0!%J4^rhX->?$S5bY<=GEU%jc!KLL8sww-Eg;h z`H-yBHa)yfojYT}&G*GFc$<(Yja_q=lZvj66DC^O5%$B)|Z(CeD=n`|eM04SP; z>-=-l+xdJjA~vR6^xB#o{ehf~tSM`iwaQv$O<8NIHA}W_WOw*~ XD^gE}t;YAo00000NkvXXu0mjfl6ZQ> literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6158eb5ca9c4b64c81e70e0fd894dbc8e2bed9 GIT binary patch literal 817 zcmV-11J3-3P)hdKqhFO_H1|Vn1E?(=|cjAh_&P}y{{^`u< zcYD@PK?$)4i~7o9*6F_$F$4lR(d4AAvrez^(88Hk+)+B7E)M3jc=Ewl4$S^`_qwSF zA%qz@=c2EOsz@0qB1IqsqJU)HaG&+}%`-OM8YqW{K85hqj@4&V9vz!Cm_n0-W#f;# zeEpJde%vdgRn5?(+PY=W*z~|lT2-mtown({ll8&3S5+lWz5K}LTRW{k{eJn3Qz!SU zQ`@qI_n2;K?RG~pYJ9=dj-RWgG;P&wEuoAxL~Q)<>x0b=dED^Outj&xQ^rA;u3pw| zca_ClTh_d9cxXg_U!lLRl0`xU@$=UXO|_dRdtXfKwPawmnf(LC7u}-U>8k6}3u|{8 zs9LHr>MIJZGD^r9h|q2yF24Wuh+PM^yMN9GP1$khlDkdyCY}D{kg}jEf-(kW5jBY> z0rB29ZhG-r=i_R{;+1k0?A-sBM;AP6(k1i9ZuixR4?MqXOvphQgCYj~RnXKKL~J9Q zIDNz~XMfO{ZhUg&BTtMyXJqDVqc<x643?SvKHx004lTvR=0a5$dUw z>Xb470000$S;ka1sfH4I-R8njUol7M4dtApOahDylptpYswf1hD#CwFoz6oEA>(SIECU&IQ%a}GXdnC!9$70`0uH1B00000NkvXXu0mjf!8w72 literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_find.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_find.png new file mode 100644 index 0000000000000000000000000000000000000000..2f193889f7ea091c292acdd684c595dcb206b5c4 GIT binary patch literal 879 zcmV-#1CacQP)@+1&aazfGU7ezSm^v zpACwO+tu0su66!(dT=`e05DeeCnCFJW(8|RKtKa{4LGONnx2V85A4m%PEQ?MEtR-esdM$pB-`H542D0)N2zSC6Imf)4L8?>%ZrW+H>xCKi$unm zvGZq-*Q%Aahx;C*=l+K%-?>XB)6TB$-L$r*`RUvlA`xP1NG2?)ge8@TQ4EN|Jks0u zcDg;oFC#-#R`YbWB`D?Q`1#y7l$LXhjSLf8AvQuB84}i#j0^!#g{VE#(K7h@5pFHy zSenl=@XBEdxp`h2Ji>CR%=qXJ7!e|?paKet-~;#ok#jETyeB(5&Bkhp;!+;51~G=) zH?L7xmDUu_h+a$+xuWom;AWW!mS$%%+436Rjc@}y?l1134kgD0AOf$OmjOR zstUlshZk$ZC!bAyIg{Y29z#&@3SJ;6D4+_eFume9^#TmMccC5u0J!ZCTnO6m$lnD| z5JeFHf`Xs~1vP>RLKI1GKDY<~pjr2&bi(fX;6Nj-ss@Ds0CcoO0H{JsEQkm{q03skAA);_bv3q{k31qwVo&s-q`Z?_e+j^w(WL? zl+uETs5+~xBU2};OqEE9ETLGwsMGe1%iTRNue)9}|0~E4B*@5#oRXZ9oRXZ9TqRep zPrGZuoOON4n@=uPbyP1y4G=+HktC6l(gZoFD>@_lXDrN?wo+zozGt3P=Qh+3L7+}q z2!WK7geXLnO3Vw;o12Skp%_E#+N#9;DDWP?Q-VS3B$v~Ha)dDzWn0zG~O(^_1!n0HYp-( z+;wPIdoFgQlpYV!10V>5@a)1LyGBMvoa}miyp(bxbMTM-FYNyx;V@TfYddyT00000 LNkvXXu0mjf90!wr literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_go.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_go.png new file mode 100644 index 0000000000000000000000000000000000000000..80fe1ed0cc75fbb67e9398ae686641f8fb287238 GIT binary patch literal 779 zcmV+m1N8ifP)JNR2Ufr z!Apo%Wf%b9=l#x^8AolrB&K9H?Pg_|78WA8(M3toqE%3B#7*srcF`i*xhupr27%Nr ziguah1+mN)U5GNmyEfQ3-e%_i&-vb-Co#(>FJ+EhQEwjRYVQ(&UYy{U@%vbY||>@4x=B^vIqabI?L* z;-S&DS^V3-ni4^fl|HMkOEbgX)(390>A}|VIypb5Xee4g;7ck zwKh^A3Mi1Mh@eC$5lV!}Fw%sP623U`g3pd_Hr5sunLvTskx4}&Gm%Q6L}(l4x}jCe z*81q1_4-O*ffi~_nMslo?EQ8t*&Ec(pzEw$vc}pKn_Qp0>D7Jr>ATNC3w@9f|Y+U&+)#!t7l&wKp+nP{PQsb+fb=Yf!Fu&5j8vpRj{FT>jD z>d>$sx;A&+`n$HcF}&sYKSyR;=(=9tvvOj@hUG;~4qTYk^_@E=?$*^_pVh_bGnOt~ z;pEw)j{SK$XVc;qy181rT655gW9NG{(yeablViIL>cDI_ux8m>Pp{tY$J0lgo4#ax za?j0EA3s0S!f>{~ykN9h_RhM&g3K(E`q(dE(Rd49+%xMeR9{qlWnmd{s#(SQ>PmFtSQqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_key.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_key.png new file mode 100644 index 0000000000000000000000000000000000000000..d6626cb09eb11a298b90a8a27b0d8eab41f49a82 GIT binary patch literal 801 zcmV++1K#|JP)$lC4gU2-`f*>nhR-;k6IP7e>YO!0^w)WK%3$w02v-#>5Ep64PCP| zJihT#O|N+nT7XR2h7dAB?UEAOhJF^mol1i`QtQB`HSY}RE7=r! z)zaVIHr5?>v2Gz&fdYw&2ug$!p+txby(aWZ7(4QT)l2`jX7eMQ{>)lG6ev(fWKxmH zOr%mM5$6B%u~qGtCf40#`mbGj3s!n+^%wnJ&#rl>g<4Z)lB5J6f!?|AP275)Zswr* z%T}4~{;_(?waU!#?JabbF3Cy-kf0{R{z}6$e=5yMQKt3BPcl2>zoTPMqMwF;3!_n|>sT?~bK_-2O_m+o>GJ6h zt=+g$4n7y%1qVJI7*5Yw(hqM=JusY{d}*?U(Oj*gT655eZ>Ksn(qrd7v3}DX1}C>` z+X+8@+4-pVq_fxG zlU}~Ye!0+%>J+pPk+0wV{GM$QaYM?5ux)w2z59=S&H2+K?;gH$bZGzL&g5>G ft+noNiyiPkP9r@8gT|RZ00000NkvXXu0mjfuqTIu literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png new file mode 100644 index 0000000000000000000000000000000000000000..7e568703d6432c530224e443771a04fc1e2e59c6 GIT binary patch literal 839 zcmV-N1GxN&P)73{`^;G#xwAtHz%LU)4b zqTRU=ve1RNa3QT=ZM7C`iJ~QFQ*9t7<~pX$d^7W%^M8FFCkcQj-~0ZRTBCB(J0^iD z-~e!d9LR`f3#|=(>$bPvx_D-~2jC%pJ=n_e_OK zeJ_2b-KdDDh@@UlzBSMC;EPygH_MwjWBnPGQegihBV73D?-x9PlHL9A=(Vg=8^d<4 z<9r=UkxuIm)*CO=9e###7PztDxUv}e?$0)rQicmYhV`pQ%S!g@;K(?TVfhM#E?bM| z=B0gfb6h@a8bf5FVT-SV~6}?X}9lK@@Yynoty&1zdZP@?RfODsl=2XzzU% zS8gIN43How+9%bK2S@Xbc`O>`z5`%^;pXGy8^4f>9^3!Sp@|O&)m;dOa3q6d;4P-l zca|=H_{G&m?D_+&-}r{u-J$5T=(X4R&)q|O^gN8cgv;s#@5sEPT5_Z)oFo9Ac>l+I zc4ng5zHpps|9)<_Rw>5bKzE(M1j)dFWI_%OH$BJSz0?T+02W0)_a>#vFqb!*d|5wB zzBUN|M&ty51O@=i?kiDrjQ{{}e|^rU?OS|RdxxP1p5mAw36cX72#`R6UsoeCQFI~! z0ATITp!vfeYyQ?Dr=^5BAshfEa0nB~JG?nUa2Aur006MC*<9`)86SPS(W^`H2n+xi ztOWohsFfVfVWrI7PSKW}BmkyPoj(-|J?ES|BGd-}fIxr{00@ANnO*ZR`#)pee4I5T Rmm>fG002ovPDHLkV1i|Hc$okI literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_link.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_link.png new file mode 100644 index 0000000000000000000000000000000000000000..312eab0914ab59271384686255d1be913a6b3add GIT binary patch literal 830 zcmV-E1Ht@>P)VWgGzD=Y79#JI$lhEn`|2MpRa?Bt#-nSD~P0P(mbVe{KrOBoKnSsk>m|ML{6l zBosu@om4j#WzNLRAk+{k1JRvL(MfE&vvbb->v>W{*z*1_uMP}0cIRX*?mz+wk%*#O z%0D-+$B*g1nRkvI+_3E8Pr1NC6@5M&4vWaLCnNlr;lNlr4i91z&)eBGqL{L{GNu;Fof}GS9{gM5BJuH;2QWk8yuOZdB3pGR#s8bd~ zAmt<>3Q=YH$t5YJ5;7@+8Uh6=ktBgY6#6Pa%2F?h910?U8cLT43KAj$Z1*==ra&gILO{WkHfs(--F=bly9l~${z@AT>V$oat!YAD@M zBE0v_F{`g#^wOSP-u~!wvlmXdd*uqFqoZ0^{&nEMDU+=!>({S0wrQhFmoB}Yq1)~0 z^{A)L8Xjzdr(W4_exYO6u3a{4*kIeXZMJUR>Q=ksjW_p!rAwDKYUs90>6Q|C>56o@ zbrSq^Xk7Gq#>dAsn@un`Hz$?w$;Ss`%jV7L%9ShgHFV~C)6M>B`Tp%|nqPc&G*A3| z)Qe+}vT4-x^t1~XE@(6wR;^lPWMo9n*~E!cy~)YRsT2{`?fqeIw-e7N@mOA%UcCIq z_kH(_EK7|>pM*1Wt2^DaDAp|cvp*@(ZZDKpYkKC^?97(`0sb&XTXy7N#sB~S07*qo IM6N<$f;YmCWB>pF literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..246a2f0b426faa0c7f5ba009e32b1deaf88d1288 GIT binary patch literal 813 zcmV+|1JeA7P)otxGRZMDZ!_a~nK|b_-`n%VosaL{KDuPV10`(1LIen8kX2Xff$3BE zah#djvFGJ&eE^89Pk*-O^+&d>FC~^GjRYVQ(uuPJyS|-v?9lxA-+tM5>1Qu*n+Ir1 z6KhA>X4$XDH6?-|E5oe1E?pQ5-M;2xw_ex!x}I2+b=}mPFW$U%^;o(Zg*LP!K^1kP%8ynsD^= z1y^6xD1#GLjO{VLdh@0GKY7;d$+NGukV)GRLPn^=q=dF%B#XaJrNP`0E6=}e&Gj3d zKJbQre*WXt!60_DnIzgMQc6S#fvjXxsE1v7;T;njHkdy2miIqAS(nX~o%cO+q+b#h z5tIleLWvL=dQE8OC#{%y*Tnku&K`Tuub&_ELI0t_ea{@3f>Jv&sYqld(%}3_GY3Dm z;O{3*Y?v^A`a|D;^qrM=ykI)U6QHd%WhO~VF!SGjGn0GOZrc3mGZudNl9{Q#X5&-F zuGwVReFLBjE5jr!!^-5*L%!I%PkYH#Hs5rMrEBl^)9)9XTD;xjHFxVZMc3~Dw6#k$ z(-S}RE$bgMHv6Z`mS5|u$$78sp4G-8b@lVkl`HtEv+MGn!F&bKcHPi$$oP_;=BrPf z$(~b3&p3CsuQxhoV$%jIR;`lB-s7FDX)xCTXuJ7ZyIQk96uIR=HBt%-P?N*bp`)EF zq14c}QM+O70NTOa@V~_)&GMZ$^cQDlkyOCa(H3Mf+6xhCuZh`VSN{cQBl5Ys9{cp( rh`2H3A^=GuC6HjQ*7|*0>;m{7QlnX3z3MSD00000NkvXXu0mjfR5FYo literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png new file mode 100644 index 0000000000000000000000000000000000000000..968f073fdddc1cc0f0800b1ac4001cd9a55f053d GIT binary patch literal 703 zcmV;w0zmzVP)AVs!l4K}n~L(tL`6d4Up4iSWnZ3Qg~4n+_J zDGk-qQdogO5JUtO-d5pRp7Nd7_r1^a|M&Zq%mn9Oe((|e0sw%Ur!K7T1pojj=U#f? zQM`qbQrM^DPkwa?DK_be^~z<~RgSMIa<`xP_4P7gg2jCwJ{9^k!fsU=#Ti|%I3p;>90Qd+7|~0h&mIklA#nb>ATL2+v$&u)OBgB z;nsHb)I&QRKeX40H~~cIZxCd}5C} z=79lXoXK%6YlyLtsV$~bSm?Upq|DJh#{|*a7XMm`4QJWZ>s6nL2R1|&J z0VPEwJ9?!n`o5PKAjc->P1Gi8BY*%!5&FVp=#)$mMJYul1Jton}gujiUf??eOy!x&!tsjxy;=Q3_DdcXx=a^OBhW0N~`A@4xB0a*%F? l+@c^sQA%W+?pa#c`9H5UNfS6T{e=Jk002ovPDHLkV1grvM=byV literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_red.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_red.png new file mode 100644 index 0000000000000000000000000000000000000000..0b18247da5850f3c2486373a3e179acd2772e8aa GIT binary patch literal 641 zcmV-{0)G98P);68^@7JE5sw#jpE*579S@TLkU(6yap1yN*Zuy>-hV%Q_v4Ar&!63c8OBr(ZRhFu z_kWs36-AmgZCT>x!RqM;Zu9tqvoHI~k@UmYo_g(*J3c%2{N8}7I+|qKPQzv}7t>%W zsu&9G)UmCzkDYSw{fBnuW4j;1fKV_nicw`$8C6D=F_qu`zUiK$2Oc?5UVY+D(`I@R zW`KlwqLftWHH3Z2_XVNfKn>VgT~k=@- z+N>c>0|@A_HbI9Jn`v0~7cfIF(TS69zaomDS1QtgvaBBfGEPLHccO2~3jc>n^6}^HAEh-2#VxC7YYcDXv!L9X= z-R*SOUvIs;n`8(LxP4~^2|JsiN^hq6cU}5dn4v1~Kl{eT7pm&f$PoY`hyVe%y8G*S bxB&kH@RuR86sIAS00000NkvXXu0mjfZBi!% literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..cf347c7d4685128a4a447abb9fb8e939417644f4 GIT binary patch literal 858 zcmV-g1Eu_lP)`6pHR2Ufr z!EI=jWf;Km|8+n2IrHqe<9xxFVk)&(Nh?w$Xk`TAyvb=#e=0aySC z00NkRDM597_LiNIJ2M^qhuTvB004REvvU8@of{r?P8tmo3;+Pk0F0@*jAMhdOkS&1 zhJPPfQa;pP0|4+Yk%#j>X}o-s#EF1_DMV93FsfPP`G*>Ks>L&)Q}w2g%slu0kBfW1 z+*$*0BC^oTl6>OGIq(9BgG4|C90Dk-N_mPazGrQ7uHZ|>BLD!-KmZ)z1e^#?1Sf(M z!6m}K(^b|i%$TcA5bC}r$tAA?0C)g1@CgWliJ;NAk&ZF+-w#}$`-3nZ32C6IVKrHp zr+(!L2hRfF&AsTw>_@ z1y23;E%Oz}?q^Q2d($ayO;-sON2t7$w(Z|o0Pw1YnSp^}0PI+I5HnDNsFCA?oorkG z5sUIGIq=FSyxcj+xlhkm0en=52Bx3@02o12gdAU$_i?v6iyFMuc7P9#zQ-Hf; zVuV$t9P5`m)F2w1?t6{<8%wk{w-PP#Sj#%1MbsjrSI6n;D_@8q9`~W98dNQf$j=iI z6~hpgww&be%X_HI50Hhx@W==u4TLPB;ei-J-1}G8wH}|{i#Lk-WZAyfv}k4y0|fvU zZTy^$u6L>2nWo(NDSV2@MRD}JQ4(c%G%=dG@_vxH?>gcH#*Ue2HC}9sapf8X?R$Z;XEnm&g zW99mh)5jNw008mK8)r^`_{yH0rNn%u1|SpC(tjf#om=+r#lh+?Kb>DVb9`|C0Bvbv zN3U(>f4-tAC1hosRoA7p(b(hL*V}(j>ug<`&U)|l$6o$)!>PBQ9RQSwn9asj2p*|xhU*R^vq?*Twb0t!lm5}`yW5lRy-U0ZYK?8to!;o!r!XeOE$ z0HB3T+6EEoI4PlR=wonwqJ+TvCoWh&$?CAPVYcU= zD{DS0?AkOtb@-hh^ZLq~FMjxYf19X?pa_YqtgZGvv2TaxcF#KT?O%=_*a-kW_;N|D zakkWsOe!)HsT5WRBiC+p;N-c>0Qwy(1D2MDBC595oXSiR07)sKNk-%9*rDBOO^HUD zZW#;)R&EZpqha<(HK$(tZYU#V29<@0qCXgU{gXeGpc_|pTqQD-WO|}%yKZbeX7k*H z2W~CK$v8NBAq~czrc5A(v51g0Wma7`G8}f=ZcuAiYYxZan@gP(;Ku66M6?bquGiHe z3Q0ya)%Lvk@kLixZfZyU@#UFbv+>pYhcj8TRKSr_sWG8i^X~UA**LvbD3(_Lba3xm ziYcpup*A9qJ$?AA=Og05lndxfwr`!C+O~h|B~4 z01q8H`StcY);%&mId7_+)76ovRpeNWRp&4M?#jx@|E-)x%P*A6t^fc407*qoM6N<$ Ef@ddc(f|Me literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8b1ca0000bc8fa8d0379926736029f8fabe364 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H;pyTSqH(@-Vl>|&1p(LP>kg~E zYiz5X^`c$+%8#zC{u)yfe-5 zmgid={Z3k(ERKCKrE7DF;=x4^O+ pzO8rLO8p|Ip=x)jHOtWj`bJBmKdh_V<`47(gQu&X%Q~loCIFbEay|e6 literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8095e46fa4965700afe1f9d065d8a37b101676 GIT binary patch literal 591 zcmV-V0~O9lw>B8WRlD)Gm}Jrz31u-X&&gn2lvjs=i{7nIaL6v2==uw+8Lcs(8j27 z;|c`rmSv@Lx!heopGP^^Ieb3f=R!%Lpp$}iMS-&P3EJ)s48wrJ_Ni0~k|c47D2nj= z{jS6bt|kFpFf|p5cM`_&0Zh|`rfEp0(}=}lT#(6RpzAsUfxv^LSYX>WlAaN$>)*J5 z0#sE+JRUD8iT9*fz{)_^7@6P&!sEjTcD+I9Z4YjT1`wH@fV{cEvneYGFU%maIEU2s55&K(LixD|{p-uiS@?KNj zk-Go8G$hH6g002ovPDHLkV1hVj1#|!a literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png new file mode 100644 index 0000000000000000000000000000000000000000..159b24075191fc259cfd80c797a1b0d74c168422 GIT binary patch literal 664 zcmV;J0%!e+P)7Z7t2}reCh0o`+ zAlt$F2tW%oO@m<=(B8a-_VgLl#~yUMUDWG!0qFPppd^03e+x1WpkO1NhIaKD2A)-@ z=Py8(Wi%R%JtYZG#sTKH@6Z+&!S3Edf8jFJJNKuva#KJQD3X^7;H^fd2di znEN&c58aUG>`>P{Vqq$kLb+TP{?I!d4(|o59X_%|nVEZq2Rk60n7072SWJ{64CV?3 zgS!EB=eYxwQ>P2&$}(iT6UMvuFgHHIEdNA29!EBtg=v~X!DxxEH~}L2zn|52%xalaq@DTdhh{EVwv0IaQ=!?daer zTKp4I`l8SDt;d{8Q`5Ko;BXUi&oAG1l4}59P-{|^S(Rmord5s6qsh<&m@Ab^wqCD) zHyRD}lKLDzpYN&@q5&*47mGzGiqcXpmqR9#K|CH8kXS4RNs`(iEF%HjP%f8ItyaZK z6$%Apvsok(2>~dTO5jTZfq;N?0ch4l01f$k9?4{~Youl-#x{UDMr#AFIkz@SDwPtQ z$gQ^$2|*(Ps9LQiav_8o8Ne<=Zx1*M*syo80sEO1tB%>5 zfdHB`1z+!R@?ghPRKmL)hWEvZE$=*54ose*0JiUNTM_)cMDXhxEKg(?-pD=y<)L4J zT0dSyD0&NhJ$^_8Ko9uom%-ZM4BTM{Tw$9qyPj=-9W;N(Wi@3*-Q4pq`Gcp}^vvNr zyd&PsmG>fpCSZz?K}UIEd;HGgG%0MG>ymxKPwy{>wy(m*Atq7)0000~7 zMNw2LQirBVQoa8G3P(rY+l;L4iy+JwSqmy$9JlSkk z&*$^Eg+c)@!R|v4gdc8+TTn&eWHO0VD&>$!B%o;;WLf4CNs=Inq9d`xA4otCWHK38 zmc{pkX`0Y=9g3oGK{}lVy~OYL|C5lQ&U^l;wrg|7w=BcA9L4-r411?K7f`@348&rw zXD#uW)DK;H`hxO}u%=@Cj{;#u#_;bb1_KgUOT2Hp6;)MvC6P$vQP3=g1O5#aU%I!K zZ1dc@f}YvG&*Spnplm2rIp^VdA^HydZ0X1axdms2!RKi5x-SFA4p@ zC@N|PI$ryHL@t-(!zBsf2-+sYAukhDHU7Lxm88-p zDk^c;sHj}OKUc4lGZU}6umlGVNAJx0%sKDOFwQx|V2pVvxhYKe|L9TNk!~md3BVrm zYPDL8Hk*yU-ER3~LGwJ7N`0ZV&nOhBI{~~A;@ND*=kxg?#^W&`4u`zk?Mg_e)8XlK z`T#M+OaR1!<#Nf_>$S`xrqd}OjYhoJ>q)?3vEX8pY&I()ERjfjrXM$k7e+-Qs3Ihj zNyOuEQ2EGYG7ro!o6VOBQEwuV2z)*tR8>WxP{616FY)p1Pn1d}#9}cxolZC$4n(6- z35hJq0;FlHC{ zp*iF(lgUK(E`($(s9pJ8Kn?(M734H_63WHtf}6SQQ_MXEP!#0|&@>J8dL5TfG&tBw z#tYn{TCGZvAr>cca%YYn^!t73tg8OOJ2FvJ(`YpCyVZi*?Ur+1uUA$hAg8-aK)c;e zQ<)!XwHh|n&ND=$@^)>aF-`~n}#*WMkD*M|f8r$i*z7+W! qF|A!t*4fE(R`<_YIkN&?Jng?3oQ|aAqClPi0000t>5xmo{nArfL4CJwMMm+N`pQ3p^Le$?rMud6Rbxz!-yG7bz2z$^USP5(;udf(gfQ zG~f68y^)EvcNWp#bUoDt2=h+^%o-?-|mo~iieWqLNP<0m@2PTB7ftyb= z@H`K$>v9Pr5X`L|rw&CEN2(9SB7A2SE;d|j9@*F}sd(@*2l|P*fWfK>1drZUrtUA7 zNXO~pKn1cjf~~TLbje1g>EPPzN2GH#UIBxJ{}S9=E`{zs-w#hO?vcH+hJxroI5v?j zD!4lP0WXq8zUx3RAP@|Gq$}6wXCjFLZY^YSWBxN9#&g)ro$%5}aYn#y=tJ_aIT%4d z5d4u`rlp!};XGmbZkJE*kYJoi&N0pd*yxY{0${xD;;Q1h^8f$<07*qoM6N<$f(}t7 Ae*gdg literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png new file mode 100644 index 0000000000000000000000000000000000000000..0c76bd1297751b66230f74719504b2adb02b1615 GIT binary patch literal 603 zcmV-h0;K(kP)^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png new file mode 100644 index 0000000000000000000000000000000000000000..87a69145075afd8f8fd8b391c5da1249ec8b2889 GIT binary patch literal 587 zcmV-R0<`^!P)LWh{^|hy<@Q*xw+qo|KpY<+vaXbbW{L4q( zTsjXEJvb}e%bgb=o%W0h?4u1;^bWTqH8}5Th002ovPDHLkV1nrS0P+9; literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png new file mode 100644 index 0000000000000000000000000000000000000000..c66011fb0fbdcbf210483d676b7131542a0e282b GIT binary patch literal 592 zcmV-W0k7R5;6x zlV4BMP#DI+Z{WQcKZBTk0lfkj5F$ztWhP#lcuyb@0@rA^#Kpu5KLA&Rgc}o#aSmis zrZC__xY^&#cI&!!{c|4Q_tcec*#b>|Y15wPcY2=o3;-Bl=(t4;6Ok*pL)-{*A;GX^ zS(@WGp6j~k1wBVR9)BB_gar`}HyRBXh7nM!)u5^>N~MyN6bc0-5{W?44iB<`2biXb zR;wk?jIQg@G!5l)SqhrXCU}x$GU-dY1sra}0uCq@153FUULT=jNwSk}0WBjKz}Jdu z<5gB*<^XtpAmp3m^ZEXQZWd1krhft}CoYaF4cSMvTJ01}X3X37KYdx-D0$c{doUe8 ztY{vlGr-e*;N!WAV%_hgUawyYrhegW>^F)pv%uUTFslHn; zvJ)l{%w(~{!O4`KTmK{Q{zCYltLfs&4?nz|6IdlqHCvX;|HGv~!QW?8P~_d#e0$v$ z)5XHEz{3>qMiH`1+qNYf?huS+@L`J9_$cjJF)Hf?@pu;)`9}BXwGUM{2!{y-4|Z{L zG>z?O%Cp8P5T#j1DID7u_*(Jg?7iss8AZQ+&;u_J{FmILf((9eoiL5nGUe>Fgq*U$z0000 zJ3A|*qoWOonz+4ZQ0KNhDB07SX1?#FrNy8%K)_l}y&kh`*KYdy`Y99&tgNgMLSSrc z?B?+B@HO@P-jS~z2Rgc6yy~Y~%>oJpBxsb$5<&nRLqiuR7K=@0SZj~jTs|sv_jWVX zGe?WflejOaq|Vec=s9+ahmXbyJ|T)Sl*?s82sr2H?Ce~HD5WI+Sz&tmWrN()wI2}+ zKqg92t*l^-#ae~;9%KFlWkmwnY=-UK`_|%ICZ#P1gdjK<2n38VXsuC7{WiU!fZFmm zW~Sda9(Qi@pxO}$ARY+;t##Ao27usOqNt7Hwq6K7G1il@xitj=LIM&{N&#SuX;x4x zmG6FhCg-$PI;hQ=;1iZ>F>^~@)IPi;l}fX?SZ!QiO=X<|pSVkNpJuLHzW(FT_~W-v z?vFpkyE>8ee4d=7wKauH5~dd_M7d2Aa=ICC{Nj7Blqv&DQEP#j_VeWV&WXL>c=LLK zsmYg^_JiDb;%U!UxO%qjFAvsDFj-kzT2$GbV(ZopPM$i$z`!7jvEk07BcC=6FMt4` z*0u3Sy`0b~%#(0000K literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f31a278e17993d8d4e13beac2f9d5f7b42d08f GIT binary patch literal 309 zcmV-50m}Y~P)sF~CC`eaI+m%Y8jfzomMvZQaNUIT3LIrJ$h)_W{ zwF|LDNlB-g`Hb_G$;>3F$9JF3WYR|3fy2C+_wH}*xp!_4fF2UN4lt#d26oXwru}hT z0+0%Vz-l&|Tdh_L-Ng1G2*RBtBncRx;99K)&+}s0whhxXp{go}$g&Jk6k|vfypI5M z!1sNGVaV?!*L7i87Bo%cfO@?S`bajL{R<($@$|PtgBRcCGIJ_2a|&kO>G-s2aR3E4 zjssoScUa;zIdOeGHBnH13G)W-zt$kUQgNfG;96b=v&4NzRt&@7nN%v3HsG`<<+F$cumMs448N!W3r&2Z*b~D5^$^d6Jxn@SFK5Q8*uKSR7x{I|H-_N1f+AD zSYC5@2K4OKL$==F9U@CH;ONNL(W}oZICHn;d?~pw?GRIsH*x-68Oy6SuK`)`{E)46 z9^3(-HXa#X89SBv?u_YP)WjsQrp;}0X?Bxrvf12IKW8>3t`e~W9|JS<{btTNbNT@EQIWBSNJTX8AMGXD z-SsH|s#>j9Xf~VMtyT-YMD}5^SWHTY5->o`k|d#AE_YQd79j`%GMS7FNvG3b7^Vy9 zn0HYCJy5MyQLoqKnW|JOp-?D*<2V^msZ>BOv0ANd2n7t@{=V;sZrQ>3c})5_%ms4z z7!qXwHHe~!QFj8aR~&*-3F?O|;#(ESIXP~Os%|~y^7c15*q5`gz2-5ol!fU92NIGT z_ves+>+Tf3gfcL?!nimYmR}cw*|BGULzI^7!;k#3K^YO#;!+vM@N~(99+<;fdqr zYPJm+pXYFYk;neQyXXEcTQDNQx57i`Okp9A#n?<7!{#tnKJdsF>utb@JH7dU01gfL zEK2hoPZAnO5+je3&^i*hWM`qCW^vLK!O*?U-#IvXV?#6koWqrwnD{j&K`7N>^tR3G z8zr1(qVOzcF#nF1&0MZ5C$l8*E^Uth0000zE0Ay_3@1Z_7#f-XWL#E{8Al7>L$ z0Rx7lnddoqAyfT%&#`$;v0@*5YdW3w z7mLNoa=FAshK% zDiy@zakyMAxr-H?iQDZi^!t5;Eno2A=?>mMx`Vg(Z!?<53LHLvfTPa`$mjDcX*Qdv zR;ylN4OH+m)fVX&Z#yZpUae;ss@a$K&})gHovkhr@w#xyPVlfVgXti1_357y%I-UHDvRWYvPEX+#g+j4Q9ayba zh7uQN1j%HQgA=Fp9DfODAU^*3*FCs^6IpO7xg`RUXyP)(;=d!ly=#I^l3e0Cub`{H Z`5PU3+D2e&<<>s`J(VpX#y^kqzQ;#=2x({YMw9Q&ndHT&`BD$#%Ql?{+)-OuSA`r}MWJ zVg+2Gc(GW}a=BERPNy^;kEz$|38dTYlFQ{%5S!g@|8f8D_!Nu9_Ni2glF1}xG8xi! zorc39&F6EPOeWOt_XS`W2H_Bo$MXugy}SEctJQj=(TLXTHL(jRXfzs>NF=0SHk;94 zF!&HjdZNX(3U3;LY64IMX__Xv%_wjLC!J2`0Jw?X=zPK$C$`&dYPDKaC={e16bcE@ zgun^<0k;ak*=xLE)@(Lqu~MmsFoMCLY&0Qog`NO(h@kyxaA%EbwJLy8sU*Vi`~52K zX0wrqW;_LmMq@evX4iAM9Od(Q0eHP$1%L|xAh@vrqB`HPQLon}f3aAka=9!3hr=O- z5F9`#J_7Jhah=U(4RjaRhkS4Xkk98kDz-`i!r|~~AQ1TFcDw(@<8g{aBE)l)PNxNE zI(RPyc>9e{@WGSMU%i7*v{!&P$WLz25)0oc=Dl-yy%xYZAm4b-rttL7UjR#%`#j_F R;_m(?iiXTHIMmcoLoO94I8;j@ zv^2DJ5#orqydFJX|Gm$_Bi_vyew+j6{r}$Qc@D1%fQqeAhJj)1!z4pP83k2MV2~s! zSt^w(<#HLFVBg_#xz1W8ioi(WY&Hu~6zil?DI^jJgu`K35(hkP)H%@Imesbg#5!Ps_$Ni*SiR8&sKb9?M`0-mH)gtg&YgRX#*TXz@Z+| z;|2H@xzE0TfuORhuO2k6#K8#sW^J`mQ0+E@$K`QkFV+DTlI$w{GJ;zid{*v9xeIe_ z$|Bp`@iKkgoFK3{4Z)#DWKV~W4K@5WZN+Ql_7%YxNqSx7%cWud&cX>)_PvD*UzxZg a%Kia9Rjz_59@~-t0000)l$0ECbfb-0$}>7z|u>IvuoHEmW&j4lzv=KA+EpIObc7e7{sGA)QVmnM@*^ z%|h38^m;wC+ilpk%>l#V5LCqP_y2_Cayd^XlX;j*r54R*lW!zbqtSpQNyz8(JVmWm zyV4S$2{Uhyc{Cb0QQbf{ZGT{Kr zvJi{K_&f+q^Pv4MK$hhS4TgFj_FD*rLOePdE-E^T7ZzTFCRUB`*?9&h(a#C!-v8lWG#k3AOJQaUey6Oasked^kDPe=Khg@7s584 zg`XfS1)&u*_c;I76#%`kkBfiZgKKo@0)9d6vZw=ExQUtV?eW{Y1Xv}=4X(2zy85d> Y0C^(qLv?Ui{{R3007*qoM6N<$f-gW7od5s; literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..b93e77600def75c9a144d3d0a5088a62c02cbb0b GIT binary patch literal 618 zcmV-w0+s!VP)$>5Y&axjp2O=VLu>*f>1L;s0)kkvKC!*u?s6CVL=HJ6oP~pNfZc; zsKr=bq;7MITw8NXw{SZm%59TId2x_9BQ zV86`NuvGI!>o^V!Na!=$7GJE{Cq`b+XwknM{UcGHFTTfmuS+ zm-zYC!P3+zmY;SG$?!fYkOih`QYaLxyF}A86h$GGN}kFj)_o*0e zjPMP%zTG7FYMAfO2Nn1D`D0Cj?Wl>5q%@CE10nX)KxpNmwk+!IWkzywiYD( zqUXiYYIq3qcRyMGJ;IY`(Gz~E$J$zu2+R{)xGlE*88b3WK6V*J>}2iPY1HH|tER0W z_+^^FdppY?o)Gt5M2`%xwRDH@R3G}^i1l4|6uchm0X0f!@&YdVLB5K&dd7Rv{)DXX zt^&vP;}kqj3f>94j+4xd93>s|Q!Ezi>?r8(Il$P}PFxSqu{d*!Y%*#cX(R0f|Juz# z3o0_xI14Al->1uky@W-rCI_%l&>PK^TXNSN{byMk2AI5vbwp!K-%-@!-vPR3iikL1L7HA!^!~ChCFU#lnGzp88=I z67V8PHBo4(l$u?-AKmT8?#_0rKW9dUNRbpLc`}piywAM9$xZ-3fR1C75T(BjCn-l* zjUcci2oXXo-}iqun@#)+`W@kL_-U&|2>MxZy~3IdmRm&8b)9!2%ksg3R)nNnT*TJOC=6{2hG86Dz+<^p6qfG5$i^UNUh+u)CD7O2 zK>Ioazn;U|+X0x$=feveYZL1W*Fm%e5P1sajd#eW#^5(ddx76*pt$^)b}$Q4oPabL zLc^HF>Z{8za;f$LtN0P$6C?1{X*jtXkRJ8IEeyiSzencvH3Ux_y>y^}wfJrRCQN#9 z?&e+C>sSAfrE%mZD5RfZ`gSndD)=P?+nG5Oq$zmY&-v+gc7R6c0u8^Ke#|XOq?gF@othF3zFpM8Il<8BJrWqBtF>b#_ye4{0)Xbu6j&@UIhRE002ov JPDHLkV1nWI9dZBw literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png new file mode 100644 index 0000000000000000000000000000000000000000..b977d7e52e2446ea01201c5c7209ac3a05f12c9f GIT binary patch literal 663 zcmV;I0%-k-P)^@R5;6x zlTS!gQ5431_q{u#M2 zg&W%y6a}>qj1Z|7Vu&-DW6d~k-n;jnHsjb-q#u0C^W!_5^C=MlKq<8oNCQ6qS00!X z5eI;XP=g!^f}j{hku}E1zZ?XCjE;`p19k(Rh%^AQQ54xysU+ocx$c#f61Z4HnT#3u~FR(3>BnZniMIF4DouI8Hi4u>cAK%EN)5PO(ip3(% zIgBx+QYirR){Z8QwV$9Z(Mpt=L-Or3#bf-G@66}txq0yc*T(zNTBDT0T8rO^JeNbSI-Tzf5!pBioy4NwAN^?iN#{;fH1Jke4Xa`^fR8m z%h6dq%xX)S?7`zae))(Xst^Scp6B8FejQW?RLTM8@0=vnnntuRGBM2dpo>gbCnTD= z^<;=JuqdSf@O>Z8^XdR?s+KEfhDdB_#ahFj^giCtzT(s8kA$AViyTqaAR;KGaLzUU z<=GqA4bRwpX|IG~*x>pZ!@zLr`XQ`od>m(`;jz|M_*1GDO#$7;n74ppb8=eiqh760 x0yt}J1#p`gw$`o!R{d7zU9~!Un@nJV{4bstt4Au+Up@c;002ovPDHLkV1kWhGjjj{ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png new file mode 100644 index 0000000000000000000000000000000000000000..581843637079359a6a58fcdccf0763690c67b063 GIT binary patch literal 676 zcmV;V0$crwP)_k3`4d{s8lK_6bi^@vq&To98fNoK}7)fx$e2^Y&@<^jR_Ee+8}KG;X`@ z@bCyiolqX>bb1ZIs%QGnjzFU~L8H~d?e;*XP(h(S262}XyZ3a0h07r{KV?E70l+e- zE`%3x|M5#q+;HOC(h@A^M)7Rn13dm0&>K$j%k_F4wOWlsNCIH+!c_#{eS&TL8v4yc zcpnPEY`cQzZ$ILq{U-MA6Z6Z|1p!FZjQ}tXSb25J@HphEqX-6Hqo?-_Zn@{d#>2Ml zJGhxTAd&emK$lV-QK&VM&ix0Xy{GyS3Wp(+E1^8BhD3T0a)m-Lw@Lu4zQRrP)9(3F z^>$hh@N>OAXrmPYunLi|fJ$_*5i`46;M>~*5D{bp>-OL3{+!MJa`3kv~Q#QfQ%c z)1s}QE<_XaYBG;IuRF=td#+}fi4h(6HgoUyJLi0t(*dA^B)%@8kkG&bdM5P5^Z5WF z%d%>m^SbN0XeV)wbUOXn5Ag#A$gJx+7-OCkMM1S%MWIlTkbFLmOeW(&n&wUd&;`>p zVcRy$Z{K0=?SpNnP^;BYEEXleFbq(UY&LrXX$6qkJ~)8+b{=jj3HEXds;Z(?D%}}L zX3`39&dy=Zyar!ehA}e>w)(*vrCct{PI9^2Jpj&OZS8<3-@{0(gNv%1{)zAiLY+_^ zl}e>Ofd4&#Irj#7>=o=Uhv5IJ@?sN0^J|(WL2Uun$4}si6}TG-s3T#p&6GE<<2W)O zf{^Y2HlO#*QDvTp3v&d@;8*}aUC4lisG9(w7@d5Y8y)}U#FwCkqp*Mcgme4{&gGRf zlBfd`nF9cQBKB2_L{F8G2)7pAf$i)Ds`|}-c>pc^LRW{w4SQ)3N^BbZx)6BlCZts! zKph%`(m#xg-q3I7=(us;9<)*2%iuQ1J`oV3gU6V~T}^JU5714JN33&GwEEru0d}Uo U{MPL+lmGw#07*qoM6N<$f^vibe*gdg literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png new file mode 100644 index 0000000000000000000000000000000000000000..8d719df5205f7415ce657e5c277db4533c82f346 GIT binary patch literal 639 zcmV-_0)YLAP)p{{sC7)XB-g4w*W1a1)XtvxrMYa1o?wn&v~3 zHnC|#(>B_M1d`_7gfzLiHy=0c<2kQQdXu*33(xYN_xYW39(cz9jEVT%VokB8|DoF~ z8u%Q5sdl@4VB7X#uh+v_;yOGY&pRi?378ghv)P1cngiAAb<}D#l*?rWDV0j_dc6Zk z-|P~AJZQCA=yWcQjG8fYnimzj*3KqTfN0Cy!G^$7)+bQ$+mHVd1J zvwOR^5Lm<|R+uyB1Nu4vL?d4qa3tn?9H7SZH@~u=fFHEDfSH|bHU6kh0O3%cLdyny z{`9S2Sw~WMy0MPy!64i`jdk4Z3>^+KIL_fN2V_d&ywBt`^IJpxUI$=YAph~5`;xCe Z{s%Y0vkUXDnO6V+002ovPDHLkV1loX8z=w( literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..106f5aa3611a4807ec8c21701c631730275089a4 GIT binary patch literal 402 zcmV;D0d4+?P)<@FR}JvtGRKa0_WfK^c7uXaFH3q@Y!Hnl8VySc`OtkPN3;#l*y*l23+99h*9JzA00}rAC!#M1dZ#v9YOBH|eC*${MmzzYjBu!!-< zK8tujf&(6i)1biy*F>4{f*Kd(IU-JsG&#b_@NgTnx@40)2@2%c;*=?-2Za=}O}7&( w%_K#(S>e1j&gfY?mR})n>>0+8p`iTe2d1K2h8#$+)&Kwi07*qoM6N<$f(2cptN;K2 literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a1ecba1b60e54f3777717ed105cdde745b7184 GIT binary patch literal 516 zcmV+f0{i`mP)o)wchR-92qq~y6`XqbKmElbB3z{pkZs0VPF`CFvS?7jDn^mFo>d9Y&06* z&1MsS!M-CH3ee+h_sy)Ms%B*ec3R0RpVi9?*mU84yoq(Bw8 z<4(999dJJE!V%pWT~HGRIAb;(#O%2K3?uRpz}AfgE8e9q&OSdr^e^}lC$QXZz;S2A z)w>^oHy>?v)q--`!pmuBe96PxP0u*inQvyFW(llfv9 zXV1s*Jh`y2H%B3ZTA(AzpsQ?hb6_PyZ=c1?_B4fbl>G%!@ubJln=!)x0000#DY{xaiib^#X=YT4@yE_&2#eBulEdzjE`u&@G%2(&u{J-<}d(^uY4W_kMfEX z@!X)AR9F&FL?RJyJRUzvBoeqN{5kY`z3wcM0+du73~_0|*lac! z42Dw(Eg1o{Ash}P8jXrqN+1w`*XxDD;ShmPCZC7#4;wWbHoMvBl$=zF-`?*9j*Nbjd=v@OWt_BgKxP-3wd zy37?ATx&$b+&zRM!K;BD%Okw`Sb@&Pak8$KRX19jWZmC0&n*Ggv%j8nvSPDFw zEkV65AGOoBQ8kf`R|}Px*&INNS%osq9b{Fq2I(x6@xM>tg=vRLF?I`0rWzHyRc>}g~)F_Qn`A>)C_iwK%Z zrIJ;xR)UI1Y4Ozts|-Nho;q zVk9-bX)%F~!;63iu$Fk=VJn3~fmb5S@@)ZqjBT2{f`vT`b2}zxb0$o;EF@G3&BHK^ zc)`1kUzo^Qkk$?KFKHNBD?nP-MJ3b@&4fg;g5l2wMi^g?9qj+~@b;62o_U1_S1J`g z7m^UMg25FX1MJ5AQxAJ5F5WDt=$=-@JV-!LHA2vuxl9kN>PS8x??^AINH6LjF*#nbk4}=n3gfWp$kEX5IpHS zYiQ{@d7Nl&d$#+7-TckP&Q}N91e-C#5QQ<|d}62BjvZR2H60wE-&H<>}%WqH(_V;zPbB1rgSSSC(0? zWlQ#?N3UgnJ9m2C29w!SwoOo5_2Iq!<8vCyEoDoj@#oV($oJEg6Bj@;nD|2g8 s%L|>IZ381yx9RvPhV4J)*SeoEV4lyr#k*`nfWBbxboFyt=akR{0DpOPi2wiq literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png new file mode 100644 index 0000000000000000000000000000000000000000..d61648452284da1bc28b10385f95b5d2bf027901 GIT binary patch literal 616 zcmV-u0+;=XP)-tZUVHjYHp;RjQ0M0pRlXN=mLv{hk9Ebp9&~+Wj-T9IkpzWPWd#fZ)d=zV^~S`;LE*!&u-?g42^wwN&Xr1~#d5ifl_2*B1OoS}CDno^8a50ArfE8;stQF>AP54J@H~%T zFz84s;dO!QJKD36(~!QOg!t_^gfFcSKDU4yK0+Ypg$NT^mIYcQ6bk*3P(lBLh7Df_ zTu=2xC#+-_%)|{Cv8zz0t|0y4D5M`xAc{gwOKc`ou<*&VjUREFHs1qd<_xSkKeTBt zgyCi=@jj;&Ns^GsWWaIUl0Y2azcDlF@u{(P*!+EH;lnU~b|Lv{4|4Hdkh!qoQHiE$ zY#y>KFA0QEw=4Z|uV{0A^`Y=D}hB$GP&<$bi8q(u;p^0(my3Rz7fP}|# zGZ&#uor4@c3q9r|f?H6-UZmfgKx(iV(MQ`MPWB>iC~SxnN5H*zb*A3#zWwgu&c|}3 zn^g87H{pdeasl%Lhmab&jC?lES}7C?4BFDNA<}20hoY@w_IU%i*T;}}wh!589}7~7 z#Ug`-R~4j&+K_y4kW@X7qLr-)S5qVKU)tO;+kXJ++{vPI@{hVK|PhMVVx_`)vx~zUs}c9O-Ok{00000NkvXXu0mjf DS5_-g literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7bd1c9bfd78d689c73ba67cf914182933ee68c GIT binary patch literal 614 zcmV-s0-61ZP)OOAS;jTeL{ZSdz-%)SMH9tDF;N4B6%j=d15J&5qy`F#vB?Ar zqS1nH@%ny_XSI*Y>) z1f5QYdmzT>YciP<3WehS<{GovEaLGv27>{*-7f0&I$yJ^L%ZGPv1YT$V|u;*+ZCWz ztHI~CDVsuy($SfR6-`N~K?9GTB#l%%0h7 z-q`K-y~E)+s8lMyTrPL8^_pUo)9G|SluG5pPqw6!LJB_PzyJUM07*qoM6N<$f^=yZ AYybcN literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b74cc40f82fc83e4dfa6e9647ccc1b34e6ed7e GIT binary patch literal 554 zcmV+_0@eMAP)Vb2f>2}Fa82O3m(Ob=t*sniin`NpInLyMJgI`saru@YOPfh zy4g0#G*cV!#N%;Gq9_VH9?v%kjS3Rb1j8^;C={$Gp=lbj z*(?%?geA!5^Pok%UauwjA)v4g2`HedDw4_Mk4hhBQt?e7YJ5(hcj|3dNu^TOPGnjB zTTsqd3GIZ=Bb`n=7no)dflv&K(lsWw?lH6T1Yht0F9qgIuzh}ym0%n<3d3EBWB*pg z+G!I0lbAEXyd>k|QNuwr4=KX1D+tLPv)j@C1=N4sA4NF9A>HcO3G47*Y6!+SrUH-7 z1hb;^#S=r|`aMh>J#dWruAEf}gcR(DRUC`ZUev&$Sbh0SgLiTXeeHEU<$_YV;9281 zym`igIE%Sm8DpDw7@71Tv^EB5xSdUR*0$Mqp+Wq8OoaZtOg52&)zZ;;M=7#C1Yd6x svjx>8ad4e2x|*xHHwRjcjs6zA0XLDUqKT6dS^xk507*qoM6N<$f*wetruo^Ag2=LamM1T#~4RmC^m`_ zs}H7d&XJ}mg+hU?tu0noRvyjI&o2SRAeYZFesYkts79I^jJ7!A7%6nJwq8O?iT55M z1OQ` zbL{!Cp5o*IRmE9PInMCSPjTwfT~J+EYkz}tjxY=fg5Yf6EQ@DG$0kMJ9h^&$W}9BU zP1oj2;?MWVkKIEl)r=Y;L^Cx2q|>!)qJJ8zE7-V*-Cf7V8_2#1c0N975t~+&QUpQJ z5(uo(-O_`%Rj@U@t>JYAgd!>L?0Idxtd#oW2gc!jinsAEva8|kF4#Ic**mmml_{d^$s}Q5Q)KCys4sfck5bP1SyeHwh2`A<@N&t2j0^lgHC_^(pAAPCNjwl+>AN%C4Ll>_8Hjda%9 oS~i=#*e)>KsPlg0=2)Qg6BCqJ=F8HdGXMYp07*qoM6N<$f@i)wr~m)} literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png new file mode 100644 index 0000000000000000000000000000000000000000..a65bcb3e1e9613cd9e4950850db43d7025a5fdf9 GIT binary patch literal 779 zcmV+m1N8ifP)JNR5;6x zll@CmQ5eTZ^k*a#RQf}fVOdd`5NJh6S(>6Cf$wEW#f&JyAR#GAn9>Gml;nOf3WCDa z5({5&UB$(IF?G#$x4X@Ickg!Y-HU!Z_rzX=qAq-XI_LS^=lOCT0|0{#{kBkYDS7{3 zD`iu%E=`cDX_^#^#n$5SIQ|4Zhsk8>N|zXHXG@*41$i-7`Jr{8`3S_OEcmY|RF48wXkk?WpdVM4OePBSbfh z#4_=eXJg@3epx~gi>QbUmO}Bm(ENN3+@c?jWiKvSrm(o|W}Ud*?vy~fn1!V~Cl4kB zI-;c!8f~-v)jX82%EG($>?;KSD$64f2&4qQ#=Yyrcpy$57RAVuV#vKMP)0hT$r6m# zc^F^XaJ8R9Q|}x^NoJYIvYZkq-z}Tnj@UJK2l2H zG}p+VvtjP2Z%bsb$~7QLJ9#pC0dKi`ppOd^_V;ME6tdzC0PtV|r=@e@37O`%0k^=5^`%cf$eu00N17Ro!{^30krz>a%3j34C?*{Mt2^a4~ zK=P+Qq%|f;Tc&+9ps;@Mw`EE%rgs&#y=j6BUGg96oIqdwj9-fiy*N(|@o)eD002ov JPDHLkV1j#pUPb@_ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png new file mode 100644 index 0000000000000000000000000000000000000000..23a37b891c2f5faa3b8128d45373ceab794ca609 GIT binary patch literal 688 zcmV;h0#E&kP)PK^TXt2QS_@2qt2T|9~baC-vaPn=ziepcfAwB$0!O2Q)E}1e8!q+9)KT5JVKU z7HNY}h##OS-BxWHWjD0wrPDeEfUClHs%Q6&2u@FTOJkKMQN|_Rlw6rQz$gPzqGNtj z#ruSeFeh835JJFiM6vp@6M5bXj%k7CMt%SIwfbF_fD-3*Os`9Ly_Q3WQ_SX33E{pX z9_WIeeTCGQ3wYALpBcK+P-iuw;3i&7xCua37k5# z`>c`M@sGeC7cdsdz`aE9lOz!hPholbyz%T85LYf6O*@SA+9&+^7k>+4M8$A8iNQq{ zQvn8k?-+dU`Z@gK0z$EtPV#+`^OH`R@cE-cuE&_!D)SZGxmQxeobP_Zwq zMEgi6ePN45N`|V1so0uE8^}1xw8s;VM%Ai@7} z2-&Cyvez_-O4?6uv{zTaj|YeYEk34i~K@`8YW2g{x* zc;7z3lItpVy_et{Z-ZZ)<@*%{l7Ao8mu@V7*gz<_1##mwW*%LEwCdzNsVLYx2*T-J z#HeQ*_a=R~KDdVNk$EVgAIRl$oQi_(`_IrdJciDpH|Xe{K-YsMtc!cRnFi$qzsr4z z5*$;ecov%3->1{YNy6-Gf(Ecy&_I$CjI#laeuE+S120^|Vjsf)W&i*H07*qoM6N<$ Ef)^4A_ab^avY?n0hpS-#mn_4{O$e%cm-@NH=3`90Wq+3`~HKArSdfX`&Z12 z(CY$VW-MNtXX4xy%yUeE?}*~0-|iByA@ZrwXgph4S*bhcc5{HB!DFVm_v}P*g7+Q~K}7K0lcp(^N@X>U zV`{ZpeIf${R6Hgg4FL^`X$Eu75k(PE6ycl$AW0Ic)#@rR7Z(7;V?i-dR1K935Jgcx zPfkwK>2wGokf!Nih^ARp6-6arYFG#(9Ta!x93nFEjoA==z(g?#sDg?Owk?Mg7K+>l zWYsf(<`#+$h9Sp6gFOg_dd+80SkUpk&xM7h0`Sov9W73spU;GP073|VfZ&Gd$J$*0<~TV5aPS|qWH57|VJz+d0000vYep8SaFV10Q$h+;hIUPX_=v5b}%>Tm<(&j1&5;I!55C)oN0s(P%ZB zP3Q#ahfpXKWF@S?jm4U#fv)QovMhrriclyNs6-G12#3R##4PSZ0VY(dRWJ;Lwuq{# zAW0Gwi$yA^R4RZ!;W+L`f&%x{=D^VK#BBWL4Ys{;*!A7Q;!=dN<&D8*GzGaF4`hV4 zDbY0{NrMX>ZqF=0((gR5-zL$kC*b)!fwu{Euru|XrG<$^n#@)7i_>rCmRxnDq>$Y%gJaCkRd|tE*a2x05Pe!I^e13o69#&RQZ36s0 zB=O|K2Yi(jsMqThn}9t?f5E-)L^naZ+db$&%M$!bCdm=jv7?t_lB?3&%Ltq(>ESw? c;MI421LCcoDG!2@;{X5v07*qoM6N<$f`UZt7XSbN literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png new file mode 100644 index 0000000000000000000000000000000000000000..134b6693687b2fa5fe36d48a9c0b8001f937c741 GIT binary patch literal 650 zcmV;50(Jd~P)VHAd+bMNh~)LLRqN>D)-jd9UvB%+hyKX5U|&4t0)fzgD-MPpQ$nHU%yoz=vI zMGb>1Xu!6Hw$NT~@Au<4P-+{9;Uw?&oj31uzH>xX0T7Xkz!(tn|Ed9-s_FqyReC13 z(ll)vW1O{Ck5ihay12Ob2ABc@RUI;zHpaMiyRDs0r>|D4rHw{ItJSJnYjt~jTbGuW z`X(~}?!&86q40R8<4zYw;$qi0^3ec=c&<&H;r`8W%H=Xymf^i;Wo6~<+}zx2UMzpC z*6MZN?(FMv`n|KO3(KFiUaucP0;Z!@LcUNa%8#vGK5aZ>wDgB0Gi=t*argWJcdlMQ z2#MpEX0wU+9&0U?N(F#OgpviU_Y{jYMsj65U3|PjwUOY}lUYj?MTiK_Il}NCVx-Eh zDx-TzMk7se+M#W_>?A1-x}ZXw3kkyz5kW)_hkjsi@RhKadN#H$Hq)$07*qoM6N<$f}lhwPXGV_ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..c4eff0387d5888c638ba09473ba6d2369f7b56f0 GIT binary patch literal 588 zcmV-S0<-;zP)HU2HvUSp%6 z*n}iP63IK?dpo;h@sj9~pcxo;VVTc-XLiP@DgefqE#NE=@oyUd-&HjLpsLIuSFXV-EMck)oQ(A`s%*^&wf0(rNiNHsU%=0Rw;WC z(kbc37l6fo`-0uR!pYkYv8U^3?nsh^@pw!K0TH3uYyx1_2>|JbXPmfskJ|1YAw9w! z9`N)1^Aesr;y5Nr5-ODn)oOL|CGi}f9!&iVwpK$khlIX10X$H6^A_stBJqvLhU$?V`QXqKme*s~gVDJ4A;LTs_e15jhc1;By a82kqHEPVYFAD2!50000JNR5;6( zlS@kiVHAe7MZY2;Xi-5)WxDDgv@tCUl*&p14T@Z~3ThM5LP4tuQfLu@EnG;nXc<8S z6&3BN?fx-cv-Kp6>HRiNTHE>$X( zD&=w+?GWC>?RLAGC6Yix;an~UmSt)tSf}1VS6N1N2ONORdD? zaj}w6DAZZdOud9Ep?M?{iQWbE5^9HLLZZF|1kdy0Tu4InEuboP9@nvbZ-P0n4AZTy zyMRIxRDmUE#LdqYuD=-Qz4N^bC`_#S7vcLn1M}{J(Wl3#c4VWczu&)AjUlh(11>gp>f`wv{KnjF%!aA*Jk N002ovPDHLkV1kkt*XsZP literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..f59b7c4365fa1720af1aa04eb47167ddaa6eeed4 GIT binary patch literal 626 zcmV-&0*(ENP)ZS(e|#C2>JN4>y}l*tQ*E7zP@R2CCJnkW?xa6bgk%(hgtZ z0=~d?U3i`+Mvi4!&~+WPT1^NX#{u6&QIx+DE(oR{&T5&-ovF?@wGw)P&AtpHZa|G%V*GUUqL@@!d4V$`8=##4)ytY959JG zdc&Kho)&AL70^i z!PEmeeDWCB-UbK(*4JST44^tV2z_J(dn~+vBMJT97_7rzFio=~XczIv?PQ5$v%u~y zu(bteXb5I1h2zCV{Jc2~V{{yzZipgsP6;k264$*#5q?GzCm|CPa9CKqm4b116h3Pu z?+%Cm52plC8|5P0@igf2GV1KkCfk{Zecu=G@VNrf>s%g9c5D%@cfxVb6$nY`1IW=4 zt10QqSps_2JLp0f3I0j0u>#qA;v!+T))KEbCg|mo3q0pG{OR}p0fPds8+K~d>Hq)$ M07*qoM6N<$g1S2e3jhEB literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..44084add79b9a0fc3354d16bbd4b4b5ff8095da7 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R@9E+gqH(@-qA%AW0|7U8+xDRI z0k`B18}ImRw2g{jTGP$Pmx3yI6F_2s&$|`cJ!i0UN zB3H;=r{#{FwLaNVJ&hZl9+MTHGx1T^-A=Q0?hRb#8a~x50X%;`b6ik3cw=#XdxWy= zgrpBoDjpwP&g9<9h3x!k_B!?vuTJVkmIJ-U N;OXk;vd$@?2>|rNdMN+^ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1441c9a12062a4bb3d706000d3ca14399aebca GIT binary patch literal 565 zcmV-50?Pe~P)SCZIX8XZzY2l?gCw6LlgWJ5Avz#QX4|&mI8LN)w~J1vgL=KLAhlWz*=#m~gyvxa z&;iC6gb?aZvMdXxX`<0+D1hs_pqJ!wxqlEH;CJ)je~uL(gpi@v>!I0f_Kl=E(E+Tq z26na*9gribxx-Oft(HnstyXUUy!39&E-cI%J5Rsy;(PGZH{g{ty!HVC&yGPT3H8x# zw{^gBPW)O0FMoh{k%l<`1a|To_Wl&u&-GXm8izU|&<&utILc4wc6s@u1bmTz6x{qg zTw@7=FQRcg&r`h+gcR$*Jbv+*DPk7v)B@e0o2 z6IlBXW&8xh@9)YKiV~2>+z&XKd24JT55YWz&JtfvCg4r^~bLP79-yS@n$OW00000NkvXXu0mjf DStt2z literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png new file mode 100644 index 0000000000000000000000000000000000000000..e7708292adabf4821612bfca032cbd019c63180b GIT binary patch literal 634 zcmV-=0)_pFP)KrcWDBzIw9XCtIF5G<@j zP(;CSqHxUrerI>~wKyloM4~t_Ofl@UFEj6$Bmm6p1aK6H{5zI_FOn(%k{CiRq?CT< zoV}Ey-7=-5nVFes;1m!f?EqZLIs4k$n%39XN4dPbtX{9DZnvvaiWV0aH9I>yf;2<< zHmo7WNC<&iE4ji-iKJpsBApDKiAiqWy8R$FV|M@E-RCB03vjWNGQZJxKCc-cSB=dq z#v3snoDMC=4<2BDgiZrv0Veh~mz(X=S@;fbe>CJO_5|oe2o3=wgfW(StLzI-qr&kc zhXEJ?9=`nWXzrUKL_p*Kr9u@95MU9EKqp2vi+%&1&gUn&>Ut_d3>wiyiAJg5G7j%G z#$sf%Kqau!AAHP&4Q?edl!FWqpT=C{D}$15WC#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R>*?YcqH(@;f-l!01CbW>s1Izr z3LkoHh<3E?TVANoG4CX|$empRCCS=R(U(hVJfm~E?IkDKRK&NP2|n`v>d(vV;W1uY zrFGVdwn;4b{qUtE`?GB`)E1ga&i2|7ncUL1b!KMq^QnT#_gn?_Z8(c`1Q~Vy3oL!N z$M8vHL&U1J3SJF!56azQU3B6>r|ZQ{U6)pC|tRy7$(5JQ<@7eB8yk=XcNf-aBIe#;8c_B$^=N z{-Iq&o3%O}V4~G($=zcP(LI|+6dq{?rby~MXwJQ*=!bOvl%?k zYY;jP^@M_k03MHL+-9?_3W5MN=moFW3xmPHU=-4Bw;62MrIhg_lwHEsv)V9U4x>+9cG2kIz8fWo`WyMMfz zdg-)p!<(hFR{VYSDJHEJn09O@#)%q0l?GUg9eS2~vKPUtd+=ak5lWLd-jI=;cjEf# zt$1;~?G!t@s+VLwL=P+Ks;E z!Jkh#NeohG;&02OFD7^EY zP!_PL2~i9VnPEW6Fz?O3dVF_U$duAL$=SU7&hNc@-drC5A4z=IgjR%B|D)?dOEaGb zuwod-$hPex$8oSoqK;@Z8u3EBfK@V2CKKqo?yA%2pjNA)(P%)HWf#)x^$?52W{|1b zPXOA$IfrSQV2q(qC_vLR)a!L9isAxjoeoJRlgE&G0Ga8krBVsGjZJJ-x6y1i(eL-q zwB%+o53no?l}ZJh#drAjlc6nhs3RTn;1IH+x;K#|X)!=#fM76)$IqT4^N}IF%aQ#o zTKS@*)|#L#jiCPi9~);c`x>TR|0{+9a?O5Exg#~V5W2C7G9nAAN(~f z2caqx&t~GhnK;qW3~&OuEke?%u(8Jxs_+ZVVz1^-uLrP95TahadGG$+(D&+%2QMF8 eFxE8s%l`oWamgLPAe&$S0000dKE@duOisOkyZ-5 zuwDqkAi_*y5o3Xrq7ieT<<3p#-R^dGySwea-CgZZZITBc?#1u+FtBuUCJUZe;~j-%Tu@ZpYB;$&ydfdZG#(j;(iB#^yRlqv#C*LO zXWXM0cpKKBlj#L6awm|;A38Zs3mg;sQZmCAZT8m@X{AlP6 zVI=SsiA16x=>2%^XV3U0y4~G+MNE!B{!#;~%L2l(14PX>EblXb{rnCSlVKe0dyf-O zuY#uOf}m&2xq80;4d3i|cuNw}U@sg3VKRU)>Os_1L3pl5mK*|?X3#a}K+EVZt&w?w zefXKP^ZqnW-3y9AhYJZ~r4m*!Z3OSz3d}2Q`nDM_f_u>L%8Cb}8`?bl)x?gwAy>zp z06y57kT6sry1g2l{|V%UW?)JwnbzUugbvpOF3=oZDo}spfs2EWKOH{_^59;ue!o^A z@e7dWS|QI`Ff-E$USJ`LqDF}zH%R}YOlMiv63A=qK^d}n!5_(fW%^k4U_D`_meIDi kNMKea>saR;>gt<+0gk_zsk5>Xc>n+a07*qoM6N<$f>Jg*?*IS* literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb880947ddf3e745c29e8d9dc90f09c7e6e323c GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8ecbf47672a874c0958d0d113a56162c2bd364 GIT binary patch literal 651 zcmV;60(AX}P)hkjP zNW|QGv-YFNLN^qH@tJycPNG5ti6B7;r4mEr#lr@*T8*M85D`{ZR^BWwF23T<%MYIh zdC)S*p=|xk^!~H=+HSZ183~y8v4|mYmZxt&)5{{~>J`>E223Q5>T$=~mtA71q-jdG z+eJhOAyBW^0k9Gk1+rX8)zFx((CG^&tDY>6XaS~Fy!WJON|Gdujg5^~Vzt@o%BcYLiNiTQSD`zL^ociBz_>bDlpw3kriQ@Z`bVsGz-_6N>$&gTDiKDTKR^ z-hB*tHa^>!oD~5TK^0UK5rZ}RBm50Bv}S-yA%s=Ha5RYb{)!z2N&$&64gfhybBu8p lh~_|?8^bu;BRYt{<}Yrwd83Y=s?Goa002ovPDHLkV1l%3CP4rI literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2490ed1432d5d667a76235360824a1088e928 GIT binary patch literal 734 zcmV<40wMj0P)JT{hN;C#tgf#9krG=I>5!<*aE1_(spcgF}<`n4i zJi-}^6UUeU4jUFwdCiVPDm%`Zx^UBa8J(mnR6wEgz^}o8;)M*Y(@l_!Kfv)}4+NuM zaPXE50z)r)9=D=SR|RIqfQ^j}Hu!fzMeQBo+@PZk1G8hOw|vBTvkx`HM)Xe9q3xao z@`p0`NO!2904FHSLA6E@Y-O6zH$DQzvq@aHsz}}<(!v(Z_+EodX%R&NZW75g+nENo zV0020rxE^;7d!067AN>6*+&YLp$9uH6F-=In`XC{Cn%+o|5)b&boEPr02w@|P*oGm QmjD0&07*qoM6N<$g78X0Q~&?~ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..fecadd08afed92536be91ab12d8e37b6bf410d5d GIT binary patch literal 613 zcmV-r0-F7aP)wK%m(L+9IV|s|#(WRl-O^4GvaQsnHq|OstfO zIJ3}3<01}YGARE4m!7=)QisvlHUo!Qymx-@-t*p_129Ko-#pVI)6#!*kLj-AGXWNR zyA_{wKii_amK7^YT-v z6#plaNm#8`-kz@OvjIt^4%IN{@J3bR zRI}ME1Mv85p|%;RK>ViR>APPLB4;;BpCtqE@P+*7!G>I4UjNx~e>r3HA^tWCQ@S)l z{BslcSwL-CxQ&_ZZSv_g0Tu{yi*X){Mt|W7)lbE`SQxFP00000NkvXXu0mjf;)M*S literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4bbccdf1643f4ff5022fbc59b82546e259317e GIT binary patch literal 386 zcmV-|0e$|7P)_QM!1S$Bhw4w+iRuFWf;tfR6D%SMJrb+tx zC9R6{2>Ou6#juIy6u(I?|;&Owi$sRB4^20apB5xE2 z#B9XekY66S6lzfCL!eEQRgo0LokTA55@Y#%_wN!TXPw^Q4IIXsG~v#u_4t;x_HM16EQ@QRY+rut&97&UefsPmLrQ5P zBC2kcbux9L%2bJz$P$XV$*zSxb2e@6_3O#;&!FD<&hLjGn%~%en;7)djE^d6!t$lW7GyIOKlQ46hr`Z zjLNuRDP_53dNoN?wd&HMgL^m1DXFU<5dQsrceN>fSz00000)O9XRTN^$%%`*Fg>ryDtc(lF@?b>dE!20r+y z#Q*>(wbV5H`-E4Do={CJp7=ERhw15hgZi)?jRG88 zzVz(5;g?Td1izJyO33bhjg2Qc7FVY@f9!o)Gu?DII~vm-Dc?}3M!fsgjP?F(7`rgg z+xOk8XD)e?Zl=5+un`5!7kr?F=eq)K-5uqr%yU$1hLv){Vlm=)*5~`lwMciiXFu*g z)*Jkz6AF>#zb(Vx`Iv{bdGZHtlW)v(y5k^|xgSUc9%0}S20nrYrO}78ofk?bV!5)4 z=Ngz@+$9N1>>mA%IWx`Fqa240bWkiW;2TZgd8CZS0U}@mknC;!2;wi$eI@`h0y2JS`Eae0CW}q(2(%!m8 zWq$`PDU>LT1_y*bBv#P5<@q0@ttz$hIH}YMDvAigCc=y*)jY-VOpTd;A8@3t7Xh4r z0KTWOk;N2Ox4!&&^4B*no$WtTX!BXB)rg!y8dvGgKBQKLJNXRRp0}Bsjd1|LNQX~c zbC~fjrk2iL@4dYF*vt;}dFn(%h)n_-vzEIHMOKRkdF%3Lq|zBgKm_h>TEq!))nWjq zzn;B!?!(dQcHu$#=JF`cS&W~C`WHFW^B!~MI#k)>1Vk&eQy8P1O`J6V04{D@|7d6^ zyBABnh-d^H0FX&L07M||E0n_dp4v&Q%PSE9p#R#Hq)`5I_(B5CE#q dxjPz0{s-<+c#AC!i7@~G002ovPDHLkV1iPlpuqqD literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css new file mode 100644 index 0000000..32b6507 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css @@ -0,0 +1,141 @@ +body { + margin: 0; + padding: 80px 100px; + font: 13px "Helvetica Neue", "Lucida Grande", "Arial"; + background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9)); + background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9); + background-repeat: no-repeat; + color: #555; + -webkit-font-smoothing: antialiased; +} +h1, h2, h3 { + margin: 0; + font-size: 22px; + color: #343434; +} +h1 em, h2 em { + padding: 0 5px; + font-weight: normal; +} +h1 { + font-size: 60px; +} +h2 { + margin-top: 10px; +} +h3 { + margin: 5px 0 10px 0; + padding-bottom: 5px; + border-bottom: 1px solid #eee; + font-size: 18px; +} +ul { + margin: 0; + padding: 0; +} +ul li { + margin: 5px 0; + padding: 3px 8px; + list-style: none; +} +ul li:hover { + cursor: pointer; + color: #2e2e2e; +} +ul li .path { + padding-left: 5px; + font-weight: bold; +} +ul li .line { + padding-right: 5px; + font-style: italic; +} +ul li:first-child .path { + padding-left: 0; +} +p { + line-height: 1.5; +} +a { + color: #555; + text-decoration: none; +} +a:hover { + color: #303030; +} +#stacktrace { + margin-top: 15px; +} +.directory h1 { + margin-bottom: 15px; + font-size: 18px; +} +ul#files { + width: 100%; + height: 500px; +} +ul#files li { + padding: 0; +} +ul#files li img { + position: absolute; + top: 5px; + left: 5px; +} +ul#files li a { + position: relative; + display: block; + margin: 1px; + width: 30%; + height: 25px; + line-height: 25px; + text-indent: 8px; + float: left; + border: 1px solid transparent; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + overflow: hidden; + text-overflow: ellipsis; +} +ul#files li a.icon { + text-indent: 25px; +} +ul#files li a:focus, +ul#files li a:hover { + outline: none; + background: rgba(255,255,255,0.65); + border: 1px solid #ececec; +} +ul#files li a.highlight { + -webkit-transition: background .4s ease-in-out; + background: #ffff4f; + border-color: #E9DC51; +} +#search { + display: block; + position: fixed; + top: 20px; + right: 20px; + width: 90px; + -webkit-transition: width ease 0.2s, opacity ease 0.4s; + -moz-transition: width ease 0.2s, opacity ease 0.4s; + -webkit-border-radius: 32px; + -moz-border-radius: 32px; + -webkit-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -moz-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -webkit-font-smoothing: antialiased; + text-align: left; + font: 13px "Helvetica Neue", Arial, sans-serif; + padding: 4px 10px; + border: none; + background: transparent; + margin-bottom: 0; + outline: none; + opacity: 0.7; + color: #888; +} +#search:focus { + width: 120px; + opacity: 1.0; +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js new file mode 100644 index 0000000..35738b8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js @@ -0,0 +1,404 @@ + +/*! + * Connect - utils + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var http = require('http') + , crypto = require('crypto') + , parse = require('url').parse + , signature = require('cookie-signature') + , nodeVersion = process.versions.node.split('.'); + +// pause is broken in node < 0.10 +exports.brokenPause = parseInt(nodeVersion[0], 10) === 0 + && parseInt(nodeVersion[1], 10) < 10; + +/** + * Return `true` if the request has a body, otherwise return `false`. + * + * @param {IncomingMessage} req + * @return {Boolean} + * @api private + */ + +exports.hasBody = function(req) { + return 'transfer-encoding' in req.headers || 'content-length' in req.headers; +}; + +/** + * Extract the mime type from the given request's + * _Content-Type_ header. + * + * @param {IncomingMessage} req + * @return {String} + * @api private + */ + +exports.mime = function(req) { + var str = req.headers['content-type'] || ''; + return str.split(';')[0]; +}; + +/** + * Generate an `Error` from the given status `code` + * and optional `msg`. + * + * @param {Number} code + * @param {String} msg + * @return {Error} + * @api private + */ + +exports.error = function(code, msg){ + var err = new Error(msg || http.STATUS_CODES[code]); + err.status = code; + return err; +}; + +/** + * Return md5 hash of the given string and optional encoding, + * defaulting to hex. + * + * utils.md5('wahoo'); + * // => "e493298061761236c96b02ea6aa8a2ad" + * + * @param {String} str + * @param {String} encoding + * @return {String} + * @api private + */ + +exports.md5 = function(str, encoding){ + return crypto + .createHash('md5') + .update(str) + .digest(encoding || 'hex'); +}; + +/** + * Merge object b with object a. + * + * var a = { foo: 'bar' } + * , b = { bar: 'baz' }; + * + * utils.merge(a, b); + * // => { foo: 'bar', bar: 'baz' } + * + * @param {Object} a + * @param {Object} b + * @return {Object} + * @api private + */ + +exports.merge = function(a, b){ + if (a && b) { + for (var key in b) { + a[key] = b[key]; + } + } + return a; +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; + + +/** + * Return a unique identifier with the given `len`. + * + * utils.uid(10); + * // => "FDaS435D2z" + * + * @param {Number} len + * @return {String} + * @api private + */ + +exports.uid = function(len) { + return crypto.randomBytes(Math.ceil(len * 3 / 4)) + .toString('base64') + .slice(0, len) + .replace(/\//g, '-') + .replace(/\+/g, '_'); +}; + +/** + * Sign the given `val` with `secret`. + * + * @param {String} val + * @param {String} secret + * @return {String} + * @api private + */ + +exports.sign = function(val, secret){ + console.warn('do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature') + return val + '.' + crypto + .createHmac('sha256', secret) + .update(val) + .digest('base64') + .replace(/=+$/, ''); +}; + +/** + * Unsign and decode the given `val` with `secret`, + * returning `false` if the signature is invalid. + * + * @param {String} val + * @param {String} secret + * @return {String|Boolean} + * @api private + */ + +exports.unsign = function(val, secret){ + console.warn('do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature') + var str = val.slice(0, val.lastIndexOf('.')); + return exports.sign(str, secret) == val + ? str + : false; +}; + +/** + * Parse signed cookies, returning an object + * containing the decoded key/value pairs, + * while removing the signed key from `obj`. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.parseSignedCookies = function(obj, secret){ + var ret = {}; + Object.keys(obj).forEach(function(key){ + var val = obj[key]; + if (0 == val.indexOf('s:')) { + val = signature.unsign(val.slice(2), secret); + if (val) { + ret[key] = val; + delete obj[key]; + } + } + }); + return ret; +}; + +/** + * Parse a signed cookie string, return the decoded value + * + * @param {String} str signed cookie string + * @param {String} secret + * @return {String} decoded value + * @api private + */ + +exports.parseSignedCookie = function(str, secret){ + return 0 == str.indexOf('s:') + ? signature.unsign(str.slice(2), secret) + : str; +}; + +/** + * Parse JSON cookies. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.parseJSONCookies = function(obj){ + Object.keys(obj).forEach(function(key){ + var val = obj[key]; + var res = exports.parseJSONCookie(val); + if (res) obj[key] = res; + }); + return obj; +}; + +/** + * Parse JSON cookie string + * + * @param {String} str + * @return {Object} Parsed object or null if not json cookie + * @api private + */ + +exports.parseJSONCookie = function(str) { + if (0 == str.indexOf('j:')) { + try { + return JSON.parse(str.slice(2)); + } catch (err) { + // no op + } + } +}; + +/** + * Pause `data` and `end` events on the given `obj`. + * Middleware performing async tasks _should_ utilize + * this utility (or similar), to re-emit data once + * the async operation has completed, otherwise these + * events may be lost. Pause is only required for + * node versions less than 10, and is replaced with + * noop's otherwise. + * + * var pause = utils.pause(req); + * fs.readFile(path, function(){ + * next(); + * pause.resume(); + * }); + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.pause = exports.brokenPause + ? require('pause') + : function () { + return { + end: noop, + resume: noop + } + } + +/** + * Strip `Content-*` headers from `res`. + * + * @param {ServerResponse} res + * @api private + */ + +exports.removeContentHeaders = function(res){ + Object.keys(res._headers).forEach(function(field){ + if (0 == field.indexOf('content')) { + res.removeHeader(field); + } + }); +}; + +/** + * Check if `req` is a conditional GET request. + * + * @param {IncomingMessage} req + * @return {Boolean} + * @api private + */ + +exports.conditionalGET = function(req) { + return req.headers['if-modified-since'] + || req.headers['if-none-match']; +}; + +/** + * Respond with 401 "Unauthorized". + * + * @param {ServerResponse} res + * @param {String} realm + * @api private + */ + +exports.unauthorized = function(res, realm) { + res.statusCode = 401; + res.setHeader('WWW-Authenticate', 'Basic realm="' + realm + '"'); + res.end('Unauthorized'); +}; + +/** + * Respond with 304 "Not Modified". + * + * @param {ServerResponse} res + * @param {Object} headers + * @api private + */ + +exports.notModified = function(res) { + exports.removeContentHeaders(res); + res.statusCode = 304; + res.end(); +}; + +/** + * Return an ETag in the form of `"-"` + * from the given `stat`. + * + * @param {Object} stat + * @return {String} + * @api private + */ + +exports.etag = function(stat) { + return '"' + stat.size + '-' + Number(stat.mtime) + '"'; +}; + +/** + * Parse the given Cache-Control `str`. + * + * @param {String} str + * @return {Object} + * @api private + */ + +exports.parseCacheControl = function(str){ + var directives = str.split(',') + , obj = {}; + + for(var i = 0, len = directives.length; i < len; i++) { + var parts = directives[i].split('=') + , key = parts.shift().trim() + , val = parseInt(parts.shift(), 10); + + obj[key] = isNaN(val) ? true : val; + } + + return obj; +}; + +/** + * Parse the `req` url with memoization. + * + * @param {ServerRequest} req + * @return {Object} + * @api private + */ + +exports.parseUrl = function(req){ + var parsed = req._parsedUrl; + if (parsed && parsed.href == req.url) { + return parsed; + } else { + return req._parsedUrl = parse(req.url); + } +}; + +/** + * Parse byte `size` string. + * + * @param {String} size + * @return {Number} + * @api private + */ + +exports.parseBytes = require('bytes'); + +function noop() {} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore @@ -0,0 +1 @@ +test diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md new file mode 100644 index 0000000..1332808 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md @@ -0,0 +1,10 @@ + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md new file mode 100644 index 0000000..9325d5b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md @@ -0,0 +1,51 @@ +# node-bytes + + Byte string parser / formatter. + +## Example: + +```js +bytes('1kb') +// => 1024 + +bytes('2mb') +// => 2097152 + +bytes('1gb') +// => 1073741824 + +bytes(1073741824) +// => 1gb +``` + +## Installation + +``` +$ npm install bytes +$ component install visionmedia/bytes.js +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json new file mode 100644 index 0000000..76a6057 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json @@ -0,0 +1,7 @@ +{ + "name": "bytes", + "description": "byte size string parser / serializer", + "keywords": ["bytes", "utility"], + "version": "0.1.0", + "scripts": ["index.js"] +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js new file mode 100644 index 0000000..70b2e01 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js @@ -0,0 +1,39 @@ + +/** + * Parse byte `size` string. + * + * @param {String} size + * @return {Number} + * @api public + */ + +module.exports = function(size) { + if ('number' == typeof size) return convert(size); + var parts = size.match(/^(\d+(?:\.\d+)?) *(kb|mb|gb)$/) + , n = parseFloat(parts[1]) + , type = parts[2]; + + var map = { + kb: 1 << 10 + , mb: 1 << 20 + , gb: 1 << 30 + }; + + return map[type] * n; +}; + +/** + * convert bytes into string. + * + * @param {Number} b - bytes to convert + * @return {String} + * @api public + */ + +function convert (b) { + var gb = 1 << 30, mb = 1 << 20, kb = 1 << 10; + if (b >= gb) return (Math.round(b / gb * 100) / 100) + 'gb'; + if (b >= mb) return (Math.round(b / mb * 100) / 100) + 'mb'; + if (b >= kb) return (Math.round(b / kb * 100) / 100) + 'kb'; + return b + 'b'; +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json new file mode 100644 index 0000000..0db9bc9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json @@ -0,0 +1,20 @@ +{ + "name": "bytes", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "byte size string parser / serializer", + "version": "0.2.0", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "_id": "bytes@0.2.0", + "_from": "bytes@0.2.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml new file mode 100644 index 0000000..320698a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md new file mode 100644 index 0000000..5187ed1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md @@ -0,0 +1,44 @@ +# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) # + +cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. + +See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. + +## how? + +``` +npm install cookie +``` + +```javascript +var cookie = require('cookie'); + +var hdr = cookie.serialize('foo', 'bar'); +// hdr = 'foo=bar'; + +var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); +// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; +``` + +## more + +The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. + +### path +> cookie path + +### expires +> absolute expiration date for the cookie (Date object) + +### maxAge +> relative max age of the cookie from when the client receives it (seconds) + +### domain +> domain for the cookie + +### secure +> true or false + +### httpOnly +> true or false + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js new file mode 100644 index 0000000..db04ad3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js @@ -0,0 +1,61 @@ + +/// Serialize the a name value pair into a cookie string suitable for +/// http headers. An optional options object specified cookie parameters +/// +/// serialize('foo', 'bar', { httpOnly: true }) +/// => "foo=bar; httpOnly" +/// +/// @param {String} name +/// @param {String} val +/// @param {Object} options +/// @return {String} +var serialize = function(name, val, opt){ + var pairs = [name + '=' + encode(val)]; + opt = opt || {}; + + if (opt.maxAge) pairs.push('Max-Age=' + opt.maxAge); + if (opt.domain) pairs.push('Domain=' + opt.domain); + if (opt.path) pairs.push('Path=' + opt.path); + if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); + if (opt.httpOnly) pairs.push('HttpOnly'); + if (opt.secure) pairs.push('Secure'); + + return pairs.join('; '); +}; + +/// Parse the given cookie header string into an object +/// The object has the various cookies as keys(names) => values +/// @param {String} str +/// @return {Object} +var parse = function(str) { + var obj = {} + var pairs = str.split(/[;,] */); + + pairs.forEach(function(pair) { + var eq_idx = pair.indexOf('=') + var key = pair.substr(0, eq_idx).trim() + var val = pair.substr(++eq_idx, pair.length).trim(); + + // quoted values + if ('"' == val[0]) { + val = val.slice(1, -1); + } + + // only assign once + if (undefined == obj[key]) { + try { + obj[key] = decode(val); + } catch (e) { + obj[key] = val; + } + } + }); + + return obj; +}; + +var encode = encodeURIComponent; +var decode = decodeURIComponent; + +module.exports.serialize = serialize; +module.exports.parse = parse; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json new file mode 100644 index 0000000..208cdad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json @@ -0,0 +1,36 @@ +{ + "author": { + "name": "Roman Shtylman", + "email": "shtylman@gmail.com" + }, + "name": "cookie", + "description": "cookie parsing and serialization", + "version": "0.0.5", + "repository": { + "type": "git", + "url": "git://github.com/shtylman/node-cookie.git" + }, + "keywords": [ + "cookie", + "cookies" + ], + "main": "index.js", + "scripts": { + "test": "mocha" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "1.x.x" + }, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/shtylman/node-cookie/issues" + }, + "_id": "cookie@0.0.5", + "_from": "cookie@0.0.5" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts new file mode 100644 index 0000000..e2bfcc5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts @@ -0,0 +1 @@ +--ui qunit diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js new file mode 100644 index 0000000..d8c03ab --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js @@ -0,0 +1,28 @@ + +var assert = require('assert'); + +var cookie = require('..'); + +suite('parse'); + +test('basic', function() { + assert.deepEqual({ foo: 'bar' }, cookie.parse('foo=bar')); + assert.deepEqual({ foo: '123' }, cookie.parse('foo=123')); +}); + +test('ignore spaces', function() { + assert.deepEqual({ FOO: 'bar', baz: 'raz' }, + cookie.parse('FOO = bar; baz = raz')); +}); + +test('escaping', function() { + assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' }, + cookie.parse('foo="bar=123456789&name=Magic+Mouse"')); + + assert.deepEqual({ email: ' ",;/' }, + cookie.parse('email=%20%22%2c%3b%2f')); +}); + +test('ignore escaping error and return original value', function() { + assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar')); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js new file mode 100644 index 0000000..d38768d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js @@ -0,0 +1,59 @@ +// builtin +var assert = require('assert'); + +var cookie = require('..'); + +suite('serialize'); + +test('basic', function() { + assert.equal('foo=bar', cookie.serialize('foo', 'bar')); + assert.equal('foo=bar%20baz', cookie.serialize('foo', 'bar baz')); +}); + +test('path', function() { + assert.equal('foo=bar; Path=/', cookie.serialize('foo', 'bar', { + path: '/' + })); +}); + +test('secure', function() { + assert.equal('foo=bar; Secure', cookie.serialize('foo', 'bar', { + secure: true + })); + + assert.equal('foo=bar', cookie.serialize('foo', 'bar', { + secure: false + })); +}); + +test('domain', function() { + assert.equal('foo=bar; Domain=example.com', cookie.serialize('foo', 'bar', { + domain: 'example.com' + })); +}); + +test('httpOnly', function() { + assert.equal('foo=bar; HttpOnly', cookie.serialize('foo', 'bar', { + httpOnly: true + })); +}); + +test('maxAge', function() { + assert.equal('foo=bar; Max-Age=1000', cookie.serialize('foo', 'bar', { + maxAge: 1000 + })); +}); + +test('escaping', function() { + assert.deepEqual('cat=%2B%20', cookie.serialize('cat', '+ ')); +}); + +test('parse->serialize', function() { + + assert.deepEqual({ cat: 'foo=123&name=baz five' }, cookie.parse( + cookie.serialize('cat', 'foo=123&name=baz five'))); + + assert.deepEqual({ cat: ' ";/' }, cookie.parse( + cookie.serialize('cat', ' ";/'))); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore new file mode 100644 index 0000000..4fbabb3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore @@ -0,0 +1,4 @@ +/test/tmp/ +*.upload +*.un~ +*.http diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml new file mode 100644 index 0000000..cb931cb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.8 + - 0.9 + - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE new file mode 100644 index 0000000..38d3c9c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE @@ -0,0 +1,7 @@ +Copyright (C) 2011 Felix Geisendörfer + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md new file mode 100644 index 0000000..08e9eca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md @@ -0,0 +1,419 @@ +# Formidable + +[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable) + +## Purpose + +A node.js module for parsing form data, especially file uploads. + +## Current status + +This module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading +and encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from +a large variety of clients and is considered production-ready. + +## Features + +* Fast (~500mb/sec), non-buffering multipart parser +* Automatically writing file uploads to disk +* Low memory footprint +* Graceful error handling +* Very high test coverage + +## Installation + +Via [npm](http://github.com/isaacs/npm): +``` +npm install formidable@latest +``` +Manually: +``` +git clone git://github.com/felixge/node-formidable.git formidable +vim my.js +# var formidable = require('./formidable'); +``` + +Note: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library. + +## Example + +Parse an incoming file upload. +```javascript +var formidable = require('formidable'), + http = require('http'), + util = require('util'); + +http.createServer(function(req, res) { + if (req.url == '/upload' && req.method.toLowerCase() == 'post') { + // parse a file upload + var form = new formidable.IncomingForm(); + + form.parse(req, function(err, fields, files) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.write('received upload:\n\n'); + res.end(util.inspect({fields: fields, files: files})); + }); + + return; + } + + // show a file upload form + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); +}).listen(8080); +``` +## API + +### Formidable.IncomingForm +```javascript +var form = new formidable.IncomingForm() +``` +Creates a new incoming form. + +```javascript +form.encoding = 'utf-8'; +``` +Sets encoding for incoming form fields. + +```javascript +form.uploadDir = process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd(); +``` +The directory for placing file uploads in. You can move them later on using +`fs.rename()`. The default directory is picked at module load time depending on +the first existing directory from those listed above. + +```javascript +form.keepExtensions = false; +``` +If you want the files written to `form.uploadDir` to include the extensions of the original files, set this property to `true`. + +```javascript +form.type +``` +Either 'multipart' or 'urlencoded' depending on the incoming request. + +```javascript +form.maxFieldsSize = 2 * 1024 * 1024; +``` +Limits the amount of memory a field (not file) can allocate in bytes. +If this value is exceeded, an `'error'` event is emitted. The default +size is 2MB. + +```javascript +form.maxFields = 0; +``` +Limits the number of fields that the querystring parser will decode. Defaults +to 0 (unlimited). + +```javascript +form.hash = false; +``` +If you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`. + +```javascript +form.bytesReceived +``` +The amount of bytes received for this form so far. + +```javascript +form.bytesExpected +``` +The expected number of bytes in this form. + +```javascript +form.parse(request, [cb]); +``` +Parses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback: + + +```javascript +form.parse(req, function(err, fields, files) { + // ... +}); + +form.onPart(part); +``` +You may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing. + +```javascript +form.onPart = function(part) { + part.addListener('data', function() { + // ... + }); +} +``` +If you want to use formidable to only handle certain parts for you, you can do so: +```javascript +form.onPart = function(part) { + if (!part.filename) { + // let formidable handle all non-file parts + form.handlePart(part); + } +} +``` +Check the code in this method for further inspiration. + + +### Formidable.File +```javascript +file.size = 0 +``` +The size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet. +```javascript +file.path = null +``` +The path this file is being written to. You can modify this in the `'fileBegin'` event in +case you are unhappy with the way formidable generates a temporary path for your files. +```javascript +file.name = null +``` +The name this file had according to the uploading client. +```javascript +file.type = null +``` +The mime type of this file, according to the uploading client. +```javascript +file.lastModifiedDate = null +``` +A date object (or `null`) containing the time this file was last written to. Mostly +here for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/). +```javascript +file.hash = null +``` +If hash calculation was set, you can read the hex digest out of this var. + +#### Formidable.File#toJSON() + + This method returns a JSON-representation of the file, allowing you to + `JSON.stringify()` the file which is useful for logging and responding + to requests. + +### Events + + +#### 'progress' +```javascript +form.on('progress', function(bytesReceived, bytesExpected) { +}); +``` +Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar. + + + +#### 'field' +```javascript +form.on('field', function(name, value) { +}); +``` + +#### 'fileBegin' + +Emitted whenever a field / value pair has been received. +```javascript +form.on('fileBegin', function(name, file) { +}); +``` + +#### 'file' + +Emitted whenever a new file is detected in the upload stream. Use this even if +you want to stream the file to somewhere else while buffering the upload on +the file system. + +Emitted whenever a field / file pair has been received. `file` is an instance of `File`. +```javascript +form.on('file', function(name, file) { +}); +``` + +#### 'error' + +Emitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events. +```javascript +form.on('error', function(err) { +}); +``` + +#### 'aborted' + + +Emitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core). +```javascript +form.on('aborted', function() { +}); +``` + +##### 'end' +```javascript +form.on('end', function() { +}); +``` +Emitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response. + + + +## Changelog + +### v1.0.14 + +* Add failing hash tests. (Ben Trask) +* Enable hash calculation again (Eugene Girshov) +* Test for immediate data events (Tim Smart) +* Re-arrange IncomingForm#parse (Tim Smart) + +### v1.0.13 + +* Only update hash if update method exists (Sven Lito) +* According to travis v0.10 needs to go quoted (Sven Lito) +* Bumping build node versions (Sven Lito) +* Additional fix for empty requests (Eugene Girshov) +* Change the default to 1000, to match the new Node behaviour. (OrangeDog) +* Add ability to control maxKeys in the querystring parser. (OrangeDog) +* Adjust test case to work with node 0.9.x (Eugene Girshov) +* Update package.json (Sven Lito) +* Path adjustment according to eb4468b (Markus Ast) + +### v1.0.12 + +* Emit error on aborted connections (Eugene Girshov) +* Add support for empty requests (Eugene Girshov) +* Fix name/filename handling in Content-Disposition (jesperp) +* Tolerate malformed closing boundary in multipart (Eugene Girshov) +* Ignore preamble in multipart messages (Eugene Girshov) +* Add support for application/json (Mike Frey, Carlos Rodriguez) +* Add support for Base64 encoding (Elmer Bulthuis) +* Add File#toJSON (TJ Holowaychuk) +* Remove support for Node.js 0.4 & 0.6 (Andrew Kelley) +* Documentation improvements (Sven Lito, Andre Azevedo) +* Add support for application/octet-stream (Ion Lupascu, Chris Scribner) +* Use os.tmpDir() to get tmp directory (Andrew Kelley) +* Improve package.json (Andrew Kelley, Sven Lito) +* Fix benchmark script (Andrew Kelley) +* Fix scope issue in incoming_forms (Sven Lito) +* Fix file handle leak on error (OrangeDog) + +### v1.0.11 + +* Calculate checksums for incoming files (sreuter) +* Add definition parameters to "IncomingForm" as an argument (Math-) + +### v1.0.10 + +* Make parts to be proper Streams (Matt Robenolt) + +### v1.0.9 + +* Emit progress when content length header parsed (Tim Koschützki) +* Fix Readme syntax due to GitHub changes (goob) +* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara) + +### v1.0.8 + +* Strip potentially unsafe characters when using `keepExtensions: true`. +* Switch to utest / urun for testing +* Add travis build + +### v1.0.7 + +* Remove file from package that was causing problems when installing on windows. (#102) +* Fix typos in Readme (Jason Davies). + +### v1.0.6 + +* Do not default to the default to the field name for file uploads where + filename="". + +### v1.0.5 + +* Support filename="" in multipart parts +* Explain unexpected end() errors in parser better + +**Note:** Starting with this version, formidable emits 'file' events for empty +file input fields. Previously those were incorrectly emitted as regular file +input fields with value = "". + +### v1.0.4 + +* Detect a good default tmp directory regardless of platform. (#88) + +### v1.0.3 + +* Fix problems with utf8 characters (#84) / semicolons in filenames (#58) +* Small performance improvements +* New test suite and fixture system + +### v1.0.2 + +* Exclude node\_modules folder from git +* Implement new `'aborted'` event +* Fix files in example folder to work with recent node versions +* Make gently a devDependency + +[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2) + +### v1.0.1 + +* Fix package.json to refer to proper main directory. (#68, Dean Landolt) + +[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1) + +### v1.0.0 + +* Add support for multipart boundaries that are quoted strings. (Jeff Craig) + +This marks the beginning of development on version 2.0 which will include +several architectural improvements. + +[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0) + +### v0.9.11 + +* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki) +* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class + +**Important:** The old property names of the File class will be removed in a +future release. + +[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11) + +### Older releases + +These releases were done before starting to maintain the above Changelog: + +* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10) +* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9) +* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8) +* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7) +* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6) +* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5) +* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4) +* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3) +* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2) +* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0) + +## License + +Formidable is licensed under the MIT license. + +## Ports + +* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable + +## Credits + +* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js new file mode 100644 index 0000000..49abc43 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js @@ -0,0 +1,71 @@ +var assert = require('assert'); +require('../test/common'); +var multipartParser = require('../lib/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + parser = new MultipartParser(), + Buffer = require('buffer').Buffer, + boundary = '-----------------------------168072824752491622650073', + mb = 100, + buffer = createMultipartBuffer(boundary, mb * 1024 * 1024), + callbacks = + { partBegin: -1, + partEnd: -1, + headerField: -1, + headerValue: -1, + partData: -1, + end: -1, + }; + + +parser.initWithBoundary(boundary); +parser.onHeaderField = function() { + callbacks.headerField++; +}; + +parser.onHeaderValue = function() { + callbacks.headerValue++; +}; + +parser.onPartBegin = function() { + callbacks.partBegin++; +}; + +parser.onPartData = function() { + callbacks.partData++; +}; + +parser.onPartEnd = function() { + callbacks.partEnd++; +}; + +parser.onEnd = function() { + callbacks.end++; +}; + +var start = +new Date(), + nparsed = parser.write(buffer), + duration = +new Date - start, + mbPerSec = (mb / (duration / 1000)).toFixed(2); + +console.log(mbPerSec+' mb/sec'); + +assert.equal(nparsed, buffer.length); + +function createMultipartBuffer(boundary, size) { + var head = + '--'+boundary+'\r\n' + + 'content-disposition: form-data; name="field1"\r\n' + + '\r\n' + , tail = '\r\n--'+boundary+'--\r\n' + , buffer = new Buffer(size); + + buffer.write(head, 'ascii', 0); + buffer.write(tail, 'ascii', buffer.length - tail.length); + return buffer; +} + +process.on('exit', function() { + for (var k in callbacks) { + assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]); + } +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js new file mode 100644 index 0000000..eb8a724 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js @@ -0,0 +1,67 @@ +var common = require('../test/common'), + http = require('http'), + util = require('util'), + formidable = common.formidable, + Buffer = require('buffer').Buffer, + port = common.port, + server; + +server = http.createServer(function(req, res) { + if (req.method !== 'POST') { + res.writeHead(200, {'content-type': 'text/plain'}) + res.end('Please POST a JSON payload to http://localhost:'+port+'/') + return; + } + + var form = new formidable.IncomingForm(), + fields = {}; + + form + .on('error', function(err) { + res.writeHead(500, {'content-type': 'text/plain'}); + res.end('error:\n\n'+util.inspect(err)); + console.error(err); + }) + .on('field', function(field, value) { + console.log(field, value); + fields[field] = value; + }) + .on('end', function() { + console.log('-> post done'); + res.writeHead(200, {'content-type': 'text/plain'}); + res.end('received fields:\n\n '+util.inspect(fields)); + }); + form.parse(req); +}); +server.listen(port); + +console.log('listening on http://localhost:'+port+'/'); + + +var request = http.request({ + host: 'localhost', + path: '/', + port: port, + method: 'POST', + headers: { 'content-type':'application/json', 'content-length':48 } +}, function(response) { + var data = ''; + console.log('\nServer responded with:'); + console.log('Status:', response.statusCode); + response.pipe(process.stdout); + response.on('end', function() { + console.log('\n') + process.exit(); + }); + // response.on('data', function(chunk) { + // data += chunk.toString('utf8'); + // }); + // response.on('end', function() { + // console.log('Response Data:') + // console.log(data); + // process.exit(); + // }); +}) + +request.write('{"numbers":[1,2,3,4,5],"nested":{"key":"value"}}'); +request.end(); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js new file mode 100644 index 0000000..f6c15a6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js @@ -0,0 +1,43 @@ +require('../test/common'); +var http = require('http'), + util = require('util'), + formidable = require('formidable'), + server; + +server = http.createServer(function(req, res) { + if (req.url == '/') { + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + } else if (req.url == '/post') { + var form = new formidable.IncomingForm(), + fields = []; + + form + .on('error', function(err) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.end('error:\n\n'+util.inspect(err)); + }) + .on('field', function(field, value) { + console.log(field, value); + fields.push([field, value]); + }) + .on('end', function() { + console.log('-> post done'); + res.writeHead(200, {'content-type': 'text/plain'}); + res.end('received fields:\n\n '+util.inspect(fields)); + }); + form.parse(req); + } else { + res.writeHead(404, {'content-type': 'text/plain'}); + res.end('404'); + } +}); +server.listen(TEST_PORT); + +console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js new file mode 100644 index 0000000..050cdd9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js @@ -0,0 +1,48 @@ +require('../test/common'); +var http = require('http'), + util = require('util'), + formidable = require('formidable'), + server; + +server = http.createServer(function(req, res) { + if (req.url == '/') { + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + } else if (req.url == '/upload') { + var form = new formidable.IncomingForm(), + files = [], + fields = []; + + form.uploadDir = TEST_TMP; + + form + .on('field', function(field, value) { + console.log(field, value); + fields.push([field, value]); + }) + .on('file', function(field, file) { + console.log(field, file); + files.push([field, file]); + }) + .on('end', function() { + console.log('-> upload done'); + res.writeHead(200, {'content-type': 'text/plain'}); + res.write('received fields:\n\n '+util.inspect(fields)); + res.write('\n\n'); + res.end('received files:\n\n '+util.inspect(files)); + }); + form.parse(req); + } else { + res.writeHead(404, {'content-type': 'text/plain'}); + res.end('404'); + } +}); +server.listen(TEST_PORT); + +console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js new file mode 100644 index 0000000..4cc88b3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js @@ -0,0 +1 @@ +module.exports = require('./lib'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js new file mode 100644 index 0000000..e34c10e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js @@ -0,0 +1,72 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +var util = require('util'), + WriteStream = require('fs').WriteStream, + EventEmitter = require('events').EventEmitter, + crypto = require('crypto'); + +function File(properties) { + EventEmitter.call(this); + + this.size = 0; + this.path = null; + this.name = null; + this.type = null; + this.hash = null; + this.lastModifiedDate = null; + + this._writeStream = null; + + for (var key in properties) { + this[key] = properties[key]; + } + + if(typeof this.hash === 'string') { + this.hash = crypto.createHash(properties.hash); + } else { + this.hash = null; + } +} +module.exports = File; +util.inherits(File, EventEmitter); + +File.prototype.open = function() { + this._writeStream = new WriteStream(this.path); +}; + +File.prototype.toJSON = function() { + return { + size: this.size, + path: this.path, + name: this.name, + type: this.type, + mtime: this.lastModifiedDate, + length: this.length, + filename: this.filename, + mime: this.mime + }; +}; + +File.prototype.write = function(buffer, cb) { + var self = this; + if (self.hash) { + self.hash.update(buffer); + } + this._writeStream.write(buffer, function() { + self.lastModifiedDate = new Date(); + self.size += buffer.length; + self.emit('progress', self.size); + cb(); + }); +}; + +File.prototype.end = function(cb) { + var self = this; + if (self.hash) { + self.hash = self.hash.digest('hex'); + } + this._writeStream.end(function() { + self.emit('end'); + cb(); + }); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js new file mode 100644 index 0000000..c2eeaf8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js @@ -0,0 +1,535 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +var fs = require('fs'); +var util = require('util'), + path = require('path'), + File = require('./file'), + MultipartParser = require('./multipart_parser').MultipartParser, + QuerystringParser = require('./querystring_parser').QuerystringParser, + OctetParser = require('./octet_parser').OctetParser, + JSONParser = require('./json_parser').JSONParser, + StringDecoder = require('string_decoder').StringDecoder, + EventEmitter = require('events').EventEmitter, + Stream = require('stream').Stream, + os = require('os'); + +function IncomingForm(opts) { + if (!(this instanceof IncomingForm)) return new IncomingForm(opts); + EventEmitter.call(this); + + opts=opts||{}; + + this.error = null; + this.ended = false; + + this.maxFields = opts.maxFields || 1000; + this.maxFieldsSize = opts.maxFieldsSize || 2 * 1024 * 1024; + this.keepExtensions = opts.keepExtensions || false; + this.uploadDir = opts.uploadDir || os.tmpDir(); + this.encoding = opts.encoding || 'utf-8'; + this.headers = null; + this.type = null; + this.hash = false; + + this.bytesReceived = null; + this.bytesExpected = null; + + this._parser = null; + this._flushing = 0; + this._fieldsSize = 0; + this.openedFiles = []; + + return this; +}; +util.inherits(IncomingForm, EventEmitter); +exports.IncomingForm = IncomingForm; + +IncomingForm.prototype.parse = function(req, cb) { + this.pause = function() { + try { + req.pause(); + } catch (err) { + // the stream was destroyed + if (!this.ended) { + // before it was completed, crash & burn + this._error(err); + } + return false; + } + return true; + }; + + this.resume = function() { + try { + req.resume(); + } catch (err) { + // the stream was destroyed + if (!this.ended) { + // before it was completed, crash & burn + this._error(err); + } + return false; + } + + return true; + }; + + // Setup callback first, so we don't miss anything from data events emitted + // immediately. + if (cb) { + var fields = {}, files = {}; + this + .on('field', function(name, value) { + fields[name] = value; + }) + .on('file', function(name, file) { + files[name] = file; + }) + .on('error', function(err) { + cb(err, fields, files); + }) + .on('end', function() { + cb(null, fields, files); + }); + } + + // Parse headers and setup the parser, ready to start listening for data. + this.writeHeaders(req.headers); + + // Start listening for data. + var self = this; + req + .on('error', function(err) { + self._error(err); + }) + .on('aborted', function() { + self.emit('aborted'); + self._error(new Error('Request aborted')); + }) + .on('data', function(buffer) { + self.write(buffer); + }) + .on('end', function() { + if (self.error) { + return; + } + + var err = self._parser.end(); + if (err) { + self._error(err); + } + }); + + return this; +}; + +IncomingForm.prototype.writeHeaders = function(headers) { + this.headers = headers; + this._parseContentLength(); + this._parseContentType(); +}; + +IncomingForm.prototype.write = function(buffer) { + if (!this._parser) { + this._error(new Error('unintialized parser')); + return; + } + + this.bytesReceived += buffer.length; + this.emit('progress', this.bytesReceived, this.bytesExpected); + + var bytesParsed = this._parser.write(buffer); + if (bytesParsed !== buffer.length) { + this._error(new Error('parser error, '+bytesParsed+' of '+buffer.length+' bytes parsed')); + } + + return bytesParsed; +}; + +IncomingForm.prototype.pause = function() { + // this does nothing, unless overwritten in IncomingForm.parse + return false; +}; + +IncomingForm.prototype.resume = function() { + // this does nothing, unless overwritten in IncomingForm.parse + return false; +}; + +IncomingForm.prototype.onPart = function(part) { + // this method can be overwritten by the user + this.handlePart(part); +}; + +IncomingForm.prototype.handlePart = function(part) { + var self = this; + + if (part.filename === undefined) { + var value = '' + , decoder = new StringDecoder(this.encoding); + + part.on('data', function(buffer) { + self._fieldsSize += buffer.length; + if (self._fieldsSize > self.maxFieldsSize) { + self._error(new Error('maxFieldsSize exceeded, received '+self._fieldsSize+' bytes of field data')); + return; + } + value += decoder.write(buffer); + }); + + part.on('end', function() { + self.emit('field', part.name, value); + }); + return; + } + + this._flushing++; + + var file = new File({ + path: this._uploadPath(part.filename), + name: part.filename, + type: part.mime, + hash: self.hash + }); + + this.emit('fileBegin', part.name, file); + + file.open(); + this.openedFiles.push(file); + + part.on('data', function(buffer) { + self.pause(); + file.write(buffer, function() { + self.resume(); + }); + }); + + part.on('end', function() { + file.end(function() { + self._flushing--; + self.emit('file', part.name, file); + self._maybeEnd(); + }); + }); +}; + +function dummyParser(self) { + return { + end: function () { + self.ended = true; + self._maybeEnd(); + return null; + } + }; +} + +IncomingForm.prototype._parseContentType = function() { + if (this.bytesExpected === 0) { + this._parser = dummyParser(this); + return; + } + + if (!this.headers['content-type']) { + this._error(new Error('bad content-type header, no content-type')); + return; + } + + if (this.headers['content-type'].match(/octet-stream/i)) { + this._initOctetStream(); + return; + } + + if (this.headers['content-type'].match(/urlencoded/i)) { + this._initUrlencoded(); + return; + } + + if (this.headers['content-type'].match(/multipart/i)) { + var m; + if (m = this.headers['content-type'].match(/boundary=(?:"([^"]+)"|([^;]+))/i)) { + this._initMultipart(m[1] || m[2]); + } else { + this._error(new Error('bad content-type header, no multipart boundary')); + } + return; + } + + if (this.headers['content-type'].match(/json/i)) { + this._initJSONencoded(); + return; + } + + this._error(new Error('bad content-type header, unknown content-type: '+this.headers['content-type'])); +}; + +IncomingForm.prototype._error = function(err) { + if (this.error || this.ended) { + return; + } + + this.error = err; + this.pause(); + this.emit('error', err); + + if (Array.isArray(this.openedFiles)) { + this.openedFiles.forEach(function(file) { + file._writeStream.destroy(); + setTimeout(fs.unlink, 0, file.path); + }); + } +}; + +IncomingForm.prototype._parseContentLength = function() { + this.bytesReceived = 0; + if (this.headers['content-length']) { + this.bytesExpected = parseInt(this.headers['content-length'], 10); + } else if (this.headers['transfer-encoding'] === undefined) { + this.bytesExpected = 0; + } + + if (this.bytesExpected !== null) { + this.emit('progress', this.bytesReceived, this.bytesExpected); + } +}; + +IncomingForm.prototype._newParser = function() { + return new MultipartParser(); +}; + +IncomingForm.prototype._initMultipart = function(boundary) { + this.type = 'multipart'; + + var parser = new MultipartParser(), + self = this, + headerField, + headerValue, + part; + + parser.initWithBoundary(boundary); + + parser.onPartBegin = function() { + part = new Stream(); + part.readable = true; + part.headers = {}; + part.name = null; + part.filename = null; + part.mime = null; + + part.transferEncoding = 'binary'; + part.transferBuffer = ''; + + headerField = ''; + headerValue = ''; + }; + + parser.onHeaderField = function(b, start, end) { + headerField += b.toString(self.encoding, start, end); + }; + + parser.onHeaderValue = function(b, start, end) { + headerValue += b.toString(self.encoding, start, end); + }; + + parser.onHeaderEnd = function() { + headerField = headerField.toLowerCase(); + part.headers[headerField] = headerValue; + + var m; + if (headerField == 'content-disposition') { + if (m = headerValue.match(/\bname="([^"]+)"/i)) { + part.name = m[1]; + } + + part.filename = self._fileName(headerValue); + } else if (headerField == 'content-type') { + part.mime = headerValue; + } else if (headerField == 'content-transfer-encoding') { + part.transferEncoding = headerValue.toLowerCase(); + } + + headerField = ''; + headerValue = ''; + }; + + parser.onHeadersEnd = function() { + switch(part.transferEncoding){ + case 'binary': + case '7bit': + case '8bit': + parser.onPartData = function(b, start, end) { + part.emit('data', b.slice(start, end)); + }; + + parser.onPartEnd = function() { + part.emit('end'); + }; + break; + + case 'base64': + parser.onPartData = function(b, start, end) { + part.transferBuffer += b.slice(start, end).toString('ascii'); + + /* + four bytes (chars) in base64 converts to three bytes in binary + encoding. So we should always work with a number of bytes that + can be divided by 4, it will result in a number of buytes that + can be divided vy 3. + */ + var offset = parseInt(part.transferBuffer.length / 4) * 4; + part.emit('data', new Buffer(part.transferBuffer.substring(0, offset), 'base64')) + part.transferBuffer = part.transferBuffer.substring(offset); + }; + + parser.onPartEnd = function() { + part.emit('data', new Buffer(part.transferBuffer, 'base64')) + part.emit('end'); + }; + break; + + default: + return self._error(new Error('unknown transfer-encoding')); + } + + self.onPart(part); + }; + + + parser.onEnd = function() { + self.ended = true; + self._maybeEnd(); + }; + + this._parser = parser; +}; + +IncomingForm.prototype._fileName = function(headerValue) { + var m = headerValue.match(/\bfilename="(.*?)"($|; )/i); + if (!m) return; + + var filename = m[1].substr(m[1].lastIndexOf('\\') + 1); + filename = filename.replace(/%22/g, '"'); + filename = filename.replace(/&#([\d]{4});/g, function(m, code) { + return String.fromCharCode(code); + }); + return filename; +}; + +IncomingForm.prototype._initUrlencoded = function() { + this.type = 'urlencoded'; + + var parser = new QuerystringParser(this.maxFields) + , self = this; + + parser.onField = function(key, val) { + self.emit('field', key, val); + }; + + parser.onEnd = function() { + self.ended = true; + self._maybeEnd(); + }; + + this._parser = parser; +}; + +IncomingForm.prototype._initOctetStream = function() { + this.type = 'octet-stream'; + var filename = this.headers['x-file-name']; + var mime = this.headers['content-type']; + + var file = new File({ + path: this._uploadPath(filename), + name: filename, + type: mime + }); + + file.open(); + + this.emit('fileBegin', filename, file); + + this._flushing++; + + var self = this; + + self._parser = new OctetParser(); + + //Keep track of writes that haven't finished so we don't emit the file before it's done being written + var outstandingWrites = 0; + + self._parser.on('data', function(buffer){ + self.pause(); + outstandingWrites++; + + file.write(buffer, function() { + outstandingWrites--; + self.resume(); + + if(self.ended){ + self._parser.emit('doneWritingFile'); + } + }); + }); + + self._parser.on('end', function(){ + self._flushing--; + self.ended = true; + + var done = function(){ + self.emit('file', 'file', file); + self._maybeEnd(); + }; + + if(outstandingWrites === 0){ + done(); + } else { + self._parser.once('doneWritingFile', done); + } + }); +}; + +IncomingForm.prototype._initJSONencoded = function() { + this.type = 'json'; + + var parser = new JSONParser() + , self = this; + + if (this.bytesExpected) { + parser.initWithLength(this.bytesExpected); + } + + parser.onField = function(key, val) { + self.emit('field', key, val); + } + + parser.onEnd = function() { + self.ended = true; + self._maybeEnd(); + }; + + this._parser = parser; +}; + +IncomingForm.prototype._uploadPath = function(filename) { + var name = ''; + for (var i = 0; i < 32; i++) { + name += Math.floor(Math.random() * 16).toString(16); + } + + if (this.keepExtensions) { + var ext = path.extname(filename); + ext = ext.replace(/(\.[a-z0-9]+).*/, '$1'); + + name += ext; + } + + return path.join(this.uploadDir, name); +}; + +IncomingForm.prototype._maybeEnd = function() { + if (!this.ended || this._flushing || this.error) { + return; + } + + this.emit('end'); +}; + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js new file mode 100644 index 0000000..7a6e3e1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js @@ -0,0 +1,3 @@ +var IncomingForm = require('./incoming_form').IncomingForm; +IncomingForm.IncomingForm = IncomingForm; +module.exports = IncomingForm; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js new file mode 100644 index 0000000..6ce966b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js @@ -0,0 +1,35 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +var Buffer = require('buffer').Buffer + +function JSONParser() { + this.data = new Buffer(''); + this.bytesWritten = 0; +}; +exports.JSONParser = JSONParser; + +JSONParser.prototype.initWithLength = function(length) { + this.data = new Buffer(length); +} + +JSONParser.prototype.write = function(buffer) { + if (this.data.length >= this.bytesWritten + buffer.length) { + buffer.copy(this.data, this.bytesWritten); + } else { + this.data = Buffer.concat([this.data, buffer]); + } + this.bytesWritten += buffer.length; + return buffer.length; +} + +JSONParser.prototype.end = function() { + try { + var fields = JSON.parse(this.data.toString('utf8')) + for (var field in fields) { + this.onField(field, fields[field]); + } + } catch (e) {} + this.data = null; + + this.onEnd(); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js new file mode 100644 index 0000000..98a6856 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js @@ -0,0 +1,324 @@ +var Buffer = require('buffer').Buffer, + s = 0, + S = + { PARSER_UNINITIALIZED: s++, + START: s++, + START_BOUNDARY: s++, + HEADER_FIELD_START: s++, + HEADER_FIELD: s++, + HEADER_VALUE_START: s++, + HEADER_VALUE: s++, + HEADER_VALUE_ALMOST_DONE: s++, + HEADERS_ALMOST_DONE: s++, + PART_DATA_START: s++, + PART_DATA: s++, + PART_END: s++, + END: s++ + }, + + f = 1, + F = + { PART_BOUNDARY: f, + LAST_BOUNDARY: f *= 2 + }, + + LF = 10, + CR = 13, + SPACE = 32, + HYPHEN = 45, + COLON = 58, + A = 97, + Z = 122, + + lower = function(c) { + return c | 0x20; + }; + +for (s in S) { + exports[s] = S[s]; +} + +function MultipartParser() { + this.boundary = null; + this.boundaryChars = null; + this.lookbehind = null; + this.state = S.PARSER_UNINITIALIZED; + + this.index = null; + this.flags = 0; +}; +exports.MultipartParser = MultipartParser; + +MultipartParser.stateToString = function(stateNumber) { + for (var state in S) { + var number = S[state]; + if (number === stateNumber) return state; + } +}; + +MultipartParser.prototype.initWithBoundary = function(str) { + this.boundary = new Buffer(str.length+4); + this.boundary.write('\r\n--', 'ascii', 0); + this.boundary.write(str, 'ascii', 4); + this.lookbehind = new Buffer(this.boundary.length+8); + this.state = S.START; + + this.boundaryChars = {}; + for (var i = 0; i < this.boundary.length; i++) { + this.boundaryChars[this.boundary[i]] = true; + } +}; + +MultipartParser.prototype.write = function(buffer) { + var self = this, + i = 0, + len = buffer.length, + prevIndex = this.index, + index = this.index, + state = this.state, + flags = this.flags, + lookbehind = this.lookbehind, + boundary = this.boundary, + boundaryChars = this.boundaryChars, + boundaryLength = this.boundary.length, + boundaryEnd = boundaryLength - 1, + bufferLength = buffer.length, + c, + cl, + + mark = function(name) { + self[name+'Mark'] = i; + }, + clear = function(name) { + delete self[name+'Mark']; + }, + callback = function(name, buffer, start, end) { + if (start !== undefined && start === end) { + return; + } + + var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1); + if (callbackSymbol in self) { + self[callbackSymbol](buffer, start, end); + } + }, + dataCallback = function(name, clear) { + var markSymbol = name+'Mark'; + if (!(markSymbol in self)) { + return; + } + + if (!clear) { + callback(name, buffer, self[markSymbol], buffer.length); + self[markSymbol] = 0; + } else { + callback(name, buffer, self[markSymbol], i); + delete self[markSymbol]; + } + }; + + for (i = 0; i < len; i++) { + c = buffer[i]; + switch (state) { + case S.PARSER_UNINITIALIZED: + return i; + case S.START: + index = 0; + state = S.START_BOUNDARY; + case S.START_BOUNDARY: + if (index == boundary.length - 2) { + if (c != CR) { + return i; + } + index++; + break; + } else if (index - 1 == boundary.length - 2) { + if (c != LF) { + return i; + } + index = 0; + callback('partBegin'); + state = S.HEADER_FIELD_START; + break; + } + + if (c != boundary[index+2]) { + index = -2; + } + if (c == boundary[index+2]) { + index++; + } + break; + case S.HEADER_FIELD_START: + state = S.HEADER_FIELD; + mark('headerField'); + index = 0; + case S.HEADER_FIELD: + if (c == CR) { + clear('headerField'); + state = S.HEADERS_ALMOST_DONE; + break; + } + + index++; + if (c == HYPHEN) { + break; + } + + if (c == COLON) { + if (index == 1) { + // empty header field + return i; + } + dataCallback('headerField', true); + state = S.HEADER_VALUE_START; + break; + } + + cl = lower(c); + if (cl < A || cl > Z) { + return i; + } + break; + case S.HEADER_VALUE_START: + if (c == SPACE) { + break; + } + + mark('headerValue'); + state = S.HEADER_VALUE; + case S.HEADER_VALUE: + if (c == CR) { + dataCallback('headerValue', true); + callback('headerEnd'); + state = S.HEADER_VALUE_ALMOST_DONE; + } + break; + case S.HEADER_VALUE_ALMOST_DONE: + if (c != LF) { + return i; + } + state = S.HEADER_FIELD_START; + break; + case S.HEADERS_ALMOST_DONE: + if (c != LF) { + return i; + } + + callback('headersEnd'); + state = S.PART_DATA_START; + break; + case S.PART_DATA_START: + state = S.PART_DATA; + mark('partData'); + case S.PART_DATA: + prevIndex = index; + + if (index == 0) { + // boyer-moore derrived algorithm to safely skip non-boundary data + i += boundaryEnd; + while (i < bufferLength && !(buffer[i] in boundaryChars)) { + i += boundaryLength; + } + i -= boundaryEnd; + c = buffer[i]; + } + + if (index < boundary.length) { + if (boundary[index] == c) { + if (index == 0) { + dataCallback('partData', true); + } + index++; + } else { + index = 0; + } + } else if (index == boundary.length) { + index++; + if (c == CR) { + // CR = part boundary + flags |= F.PART_BOUNDARY; + } else if (c == HYPHEN) { + // HYPHEN = end boundary + flags |= F.LAST_BOUNDARY; + } else { + index = 0; + } + } else if (index - 1 == boundary.length) { + if (flags & F.PART_BOUNDARY) { + index = 0; + if (c == LF) { + // unset the PART_BOUNDARY flag + flags &= ~F.PART_BOUNDARY; + callback('partEnd'); + callback('partBegin'); + state = S.HEADER_FIELD_START; + break; + } + } else if (flags & F.LAST_BOUNDARY) { + if (c == HYPHEN) { + callback('partEnd'); + callback('end'); + state = S.END; + } else { + index = 0; + } + } else { + index = 0; + } + } + + if (index > 0) { + // when matching a possible boundary, keep a lookbehind reference + // in case it turns out to be a false lead + lookbehind[index-1] = c; + } else if (prevIndex > 0) { + // if our boundary turned out to be rubbish, the captured lookbehind + // belongs to partData + callback('partData', lookbehind, 0, prevIndex); + prevIndex = 0; + mark('partData'); + + // reconsider the current character even so it interrupted the sequence + // it could be the beginning of a new sequence + i--; + } + + break; + case S.END: + break; + default: + return i; + } + } + + dataCallback('headerField'); + dataCallback('headerValue'); + dataCallback('partData'); + + this.index = index; + this.state = state; + this.flags = flags; + + return len; +}; + +MultipartParser.prototype.end = function() { + var callback = function(self, name) { + var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1); + if (callbackSymbol in self) { + self[callbackSymbol](); + } + }; + if ((this.state == S.HEADER_FIELD_START && this.index == 0) || + (this.state == S.PART_DATA && this.index == this.boundary.length)) { + callback(this, 'partEnd'); + callback(this, 'end'); + } else if (this.state != S.END) { + return new Error('MultipartParser.end(): stream ended unexpectedly: ' + this.explain()); + } +}; + +MultipartParser.prototype.explain = function() { + return 'state = ' + MultipartParser.stateToString(this.state); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js new file mode 100644 index 0000000..6e8b551 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js @@ -0,0 +1,20 @@ +var EventEmitter = require('events').EventEmitter + , util = require('util'); + +function OctetParser(options){ + if(!(this instanceof OctetParser)) return new OctetParser(options); + EventEmitter.call(this); +} + +util.inherits(OctetParser, EventEmitter); + +exports.OctetParser = OctetParser; + +OctetParser.prototype.write = function(buffer) { + this.emit('data', buffer); + return buffer.length; +}; + +OctetParser.prototype.end = function() { + this.emit('end'); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js new file mode 100644 index 0000000..320ce5a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js @@ -0,0 +1,27 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +// This is a buffering parser, not quite as nice as the multipart one. +// If I find time I'll rewrite this to be fully streaming as well +var querystring = require('querystring'); + +function QuerystringParser(maxKeys) { + this.maxKeys = maxKeys; + this.buffer = ''; +}; +exports.QuerystringParser = QuerystringParser; + +QuerystringParser.prototype.write = function(buffer) { + this.buffer += buffer.toString('ascii'); + return buffer.length; +}; + +QuerystringParser.prototype.end = function() { + var fields = querystring.parse(this.buffer, '&', '=', { maxKeys: this.maxKeys }); + for (var field in fields) { + this.onField(field, fields[field]); + } + this.buffer = ''; + + this.onEnd(); +}; + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json new file mode 100644 index 0000000..4679a11 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json @@ -0,0 +1,38 @@ +{ + "name": "formidable", + "description": "A node.js module for parsing form data, especially file uploads.", + "homepage": "https://github.com/felixge/node-formidable", + "version": "1.0.14", + "devDependencies": { + "gently": "0.8.0", + "findit": "0.1.1", + "hashish": "0.0.4", + "urun": "~0.0.6", + "utest": "0.0.3", + "request": "~2.11.4" + }, + "directories": { + "lib": "./lib" + }, + "main": "./lib/index", + "scripts": { + "test": "node test/run.js", + "clean": "rm test/tmp/*" + }, + "engines": { + "node": ">=0.8.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-formidable.git" + }, + "bugs": { + "url": "http://github.com/felixge/node-formidable/issues" + }, + "optionalDependencies": {}, + "readme": "# Formidable\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)\n\n## Purpose\n\nA node.js module for parsing form data, especially file uploads.\n\n## Current status\n\nThis module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading\nand encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from\na large variety of clients and is considered production-ready.\n\n## Features\n\n* Fast (~500mb/sec), non-buffering multipart parser\n* Automatically writing file uploads to disk\n* Low memory footprint\n* Graceful error handling\n* Very high test coverage\n\n## Installation\n\nVia [npm](http://github.com/isaacs/npm):\n```\nnpm install formidable@latest\n```\nManually:\n```\ngit clone git://github.com/felixge/node-formidable.git formidable\nvim my.js\n# var formidable = require('./formidable');\n```\n\nNote: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.\n\n## Example\n\nParse an incoming file upload.\n```javascript\nvar formidable = require('formidable'),\n http = require('http'),\n util = require('util');\n\nhttp.createServer(function(req, res) {\n if (req.url == '/upload' && req.method.toLowerCase() == 'post') {\n // parse a file upload\n var form = new formidable.IncomingForm();\n\n form.parse(req, function(err, fields, files) {\n res.writeHead(200, {'content-type': 'text/plain'});\n res.write('received upload:\\n\\n');\n res.end(util.inspect({fields: fields, files: files}));\n });\n\n return;\n }\n\n // show a file upload form\n res.writeHead(200, {'content-type': 'text/html'});\n res.end(\n '
    '+\n '
    '+\n '
    '+\n ''+\n '
    '\n );\n}).listen(8080);\n```\n## API\n\n### Formidable.IncomingForm\n```javascript\nvar form = new formidable.IncomingForm()\n```\nCreates a new incoming form.\n\n```javascript\nform.encoding = 'utf-8';\n```\nSets encoding for incoming form fields.\n\n```javascript\nform.uploadDir = process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd();\n```\nThe directory for placing file uploads in. You can move them later on using\n`fs.rename()`. The default directory is picked at module load time depending on\nthe first existing directory from those listed above.\n\n```javascript\nform.keepExtensions = false;\n```\nIf you want the files written to `form.uploadDir` to include the extensions of the original files, set this property to `true`.\n\n```javascript\nform.type\n```\nEither 'multipart' or 'urlencoded' depending on the incoming request.\n\n```javascript\nform.maxFieldsSize = 2 * 1024 * 1024;\n```\nLimits the amount of memory a field (not file) can allocate in bytes.\nIf this value is exceeded, an `'error'` event is emitted. The default\nsize is 2MB.\n\n```javascript\nform.maxFields = 0;\n```\nLimits the number of fields that the querystring parser will decode. Defaults\nto 0 (unlimited).\n\n```javascript\nform.hash = false;\n```\nIf you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.\n\n```javascript\nform.bytesReceived\n```\nThe amount of bytes received for this form so far.\n\n```javascript\nform.bytesExpected\n```\nThe expected number of bytes in this form.\n\n```javascript\nform.parse(request, [cb]);\n```\nParses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:\n\n\n```javascript\nform.parse(req, function(err, fields, files) {\n // ...\n});\n\nform.onPart(part);\n```\nYou may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing.\n\n```javascript\nform.onPart = function(part) {\n part.addListener('data', function() {\n // ...\n });\n}\n```\nIf you want to use formidable to only handle certain parts for you, you can do so:\n```javascript\nform.onPart = function(part) {\n if (!part.filename) {\n // let formidable handle all non-file parts\n form.handlePart(part);\n }\n}\n```\nCheck the code in this method for further inspiration.\n\n\n### Formidable.File\n```javascript\nfile.size = 0\n```\nThe size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.\n```javascript\nfile.path = null\n```\nThe path this file is being written to. You can modify this in the `'fileBegin'` event in\ncase you are unhappy with the way formidable generates a temporary path for your files.\n```javascript\nfile.name = null\n```\nThe name this file had according to the uploading client.\n```javascript\nfile.type = null\n```\nThe mime type of this file, according to the uploading client.\n```javascript\nfile.lastModifiedDate = null\n```\nA date object (or `null`) containing the time this file was last written to. Mostly\nhere for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).\n```javascript\nfile.hash = null\n```\nIf hash calculation was set, you can read the hex digest out of this var.\n\n#### Formidable.File#toJSON()\n\n This method returns a JSON-representation of the file, allowing you to\n `JSON.stringify()` the file which is useful for logging and responding\n to requests.\n\n### Events\n\n\n#### 'progress'\n```javascript\nform.on('progress', function(bytesReceived, bytesExpected) {\n});\n```\nEmitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.\n\n\n\n#### 'field'\n```javascript\nform.on('field', function(name, value) {\n});\n```\n\n#### 'fileBegin'\n\nEmitted whenever a field / value pair has been received.\n```javascript\nform.on('fileBegin', function(name, file) {\n});\n```\n\n#### 'file'\n\nEmitted whenever a new file is detected in the upload stream. Use this even if\nyou want to stream the file to somewhere else while buffering the upload on\nthe file system.\n\nEmitted whenever a field / file pair has been received. `file` is an instance of `File`.\n```javascript\nform.on('file', function(name, file) {\n});\n```\n\n#### 'error'\n\nEmitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.\n```javascript\nform.on('error', function(err) {\n});\n```\n\n#### 'aborted'\n\n\nEmitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).\n```javascript\nform.on('aborted', function() {\n});\n```\n\n##### 'end'\n```javascript\nform.on('end', function() {\n});\n```\nEmitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.\n\n\n\n## Changelog\n\n### v1.0.14\n\n* Add failing hash tests. (Ben Trask)\n* Enable hash calculation again (Eugene Girshov)\n* Test for immediate data events (Tim Smart)\n* Re-arrange IncomingForm#parse (Tim Smart)\n\n### v1.0.13\n\n* Only update hash if update method exists (Sven Lito)\n* According to travis v0.10 needs to go quoted (Sven Lito)\n* Bumping build node versions (Sven Lito)\n* Additional fix for empty requests (Eugene Girshov)\n* Change the default to 1000, to match the new Node behaviour. (OrangeDog)\n* Add ability to control maxKeys in the querystring parser. (OrangeDog)\n* Adjust test case to work with node 0.9.x (Eugene Girshov)\n* Update package.json (Sven Lito)\n* Path adjustment according to eb4468b (Markus Ast)\n\n### v1.0.12\n\n* Emit error on aborted connections (Eugene Girshov)\n* Add support for empty requests (Eugene Girshov)\n* Fix name/filename handling in Content-Disposition (jesperp)\n* Tolerate malformed closing boundary in multipart (Eugene Girshov)\n* Ignore preamble in multipart messages (Eugene Girshov)\n* Add support for application/json (Mike Frey, Carlos Rodriguez)\n* Add support for Base64 encoding (Elmer Bulthuis)\n* Add File#toJSON (TJ Holowaychuk)\n* Remove support for Node.js 0.4 & 0.6 (Andrew Kelley)\n* Documentation improvements (Sven Lito, Andre Azevedo)\n* Add support for application/octet-stream (Ion Lupascu, Chris Scribner)\n* Use os.tmpDir() to get tmp directory (Andrew Kelley)\n* Improve package.json (Andrew Kelley, Sven Lito)\n* Fix benchmark script (Andrew Kelley)\n* Fix scope issue in incoming_forms (Sven Lito)\n* Fix file handle leak on error (OrangeDog)\n\n### v1.0.11\n\n* Calculate checksums for incoming files (sreuter)\n* Add definition parameters to \"IncomingForm\" as an argument (Math-)\n\n### v1.0.10\n\n* Make parts to be proper Streams (Matt Robenolt)\n\n### v1.0.9\n\n* Emit progress when content length header parsed (Tim Koschützki)\n* Fix Readme syntax due to GitHub changes (goob)\n* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)\n\n### v1.0.8\n\n* Strip potentially unsafe characters when using `keepExtensions: true`.\n* Switch to utest / urun for testing\n* Add travis build\n\n### v1.0.7\n\n* Remove file from package that was causing problems when installing on windows. (#102)\n* Fix typos in Readme (Jason Davies).\n\n### v1.0.6\n\n* Do not default to the default to the field name for file uploads where\n filename=\"\".\n\n### v1.0.5\n\n* Support filename=\"\" in multipart parts\n* Explain unexpected end() errors in parser better\n\n**Note:** Starting with this version, formidable emits 'file' events for empty\nfile input fields. Previously those were incorrectly emitted as regular file\ninput fields with value = \"\".\n\n### v1.0.4\n\n* Detect a good default tmp directory regardless of platform. (#88)\n\n### v1.0.3\n\n* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)\n* Small performance improvements\n* New test suite and fixture system\n\n### v1.0.2\n\n* Exclude node\\_modules folder from git\n* Implement new `'aborted'` event\n* Fix files in example folder to work with recent node versions\n* Make gently a devDependency\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)\n\n### v1.0.1\n\n* Fix package.json to refer to proper main directory. (#68, Dean Landolt)\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)\n\n### v1.0.0\n\n* Add support for multipart boundaries that are quoted strings. (Jeff Craig)\n\nThis marks the beginning of development on version 2.0 which will include\nseveral architectural improvements.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)\n\n### v0.9.11\n\n* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki)\n* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class\n\n**Important:** The old property names of the File class will be removed in a\nfuture release.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)\n\n### Older releases\n\nThese releases were done before starting to maintain the above Changelog:\n\n* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)\n* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)\n* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)\n* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)\n* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)\n* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)\n* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)\n* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)\n* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)\n* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)\n\n## License\n\nFormidable is licensed under the MIT license.\n\n## Ports\n\n* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable\n\n## Credits\n\n* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js\n", + "readmeFilename": "Readme.md", + "dependencies": {}, + "_id": "formidable@1.0.14", + "_from": "formidable@1.0.14" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js new file mode 100644 index 0000000..6a94295 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js @@ -0,0 +1,18 @@ +var path = require('path'); + +var root = path.join(__dirname, '../'); +exports.dir = { + root : root, + lib : root + '/lib', + fixture : root + '/test/fixture', + tmp : root + '/test/tmp', +}; + +exports.port = 13532; + +exports.formidable = require('..'); +exports.assert = require('assert'); + +exports.require = function(lib) { + return require(exports.dir.lib + '/' + lib); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png new file mode 100644 index 0000000000000000000000000000000000000000..20b1a7f177927900e120c24f97d9514d3325873f GIT binary patch literal 1660 zcmV-?27~#DP)3JV+!|TB%7InihJI zi%oiz5`4wPD(5TE#Clfmyz`#@W}LZ>>+E@k7CP{;vvaq*zx`hGeT&flY)Jpowfx+# zF#k`0B<>n%i|hRykUvy7X`3KSRI;Na0P)F={!qZAZGfn#s5xQh>_6;*UJByn#3z8; zG&CW=u!m}>XtDJ5^&Lz}N!jo9dR0E3PxAZM?>|01e)rh1V|QTc0daHUp~B#VJ|+c$ z;XyEjuBD}APenz=$*8EP!zz_ZPwq%T_@l?;Sy@U2uTeogKh9w7xlft=0P-+D;F|CAOxNsr& z`0?ZCqobn_OVT=js7E~Dx~$^j;{27BmEZ2&yJwd<{w80N12M-XFc&Xg%q=Y~?bYdY zN&Lft0f^SZ!or>{C@3g>^5ltWXlTgBMW0XZPildwh`-d<*2Xt9G@K6=Mg+yr!RK^& zd3iZzvw2{Ce%{GNpPz%;;6u!BbRdxv6BDh>XF~NCr8WNi!Gj0i6c!eK1gA?N%OI=N z*@-`?1R<_%ZEf8XA0J;AibjHIPri;vdU|?!Wo2awOe3&0sYL<_Rt`kMyt=yju_I%p$sD z`kl=G0ewW)@i_mv3EjOtMdtIfR`koyQ}ADh5N_YTed!cN!)Zv;$irT**FVQD#8H9g zEJ}JWo5}IBmhVyTjWsei^kRN0XkrrG{B9WOqasj7)-H4ow3Bym52`qt zi;9k9qM}za&N@qBK25$TUa5SX`58OVQ%hB65t z9_PADXnDzj%4>4a-N8u_jHtW`MAn8XZ*FexzEWu4F-@RyLpwRocwrZ+f4vYDANT|r zUiy^y5eEFAsUJO`m56=-v%UM~SLDCUk9Z$?`0(MBXg}lg5BB&Sr%#{GICJKVk-Y`f zI*8BK^2{6RxqPj@zP|4I_3PuX^e4^Qc;j{PKw6qTqhV(@X|>u!48v|9a`dN#vD@vB zp}2bumKLcj(bB}N;&xiL^SYsixeApaayT5wX0zcNAg9xb+-^6~7y}jMnNY^?@bFKv zVl7bKs%3eI)Iw8JQ1ngUVCbY;S>d$fmYYn} zefno-XPup$ohHzjF*`f^835ZI9v)7hu*NVH_AC5AwOWmfFh#RjtyT+E5of_vRtjU| zY9SAMrdpxnL|k9x85tQ_0yPgpaW#;ipP!bLl(Z9~FrY2$SET$@fSQ?^F;`VpogEt+ z`-6kwwc{0)ut=f%^s*icZfI?9Z@&q<^>|uZT4F*%!cGjsw1i=xQV2i+ti8X#|BI56 zk}qYNVZP(yVEn<_Aby|G(4?uOMHS9fkyx6WoA=k$)HFcdy&IblYYkv=s;~?U3|wt% zYr75FU8E1UbK>AyA>UR&q855X!$^y(2r4_ERVst%(?Ysffb2UlIy$;U-`+*d;^4%| z`Hfe!b%fg6t2vGFVBu7BoC~lv+QoIPYl39x52bTeYPWea@?Z>3!vXn%^!7d_nC*Ta zQUX)U3Uz)f^2ok~__q39^fX`4Bn9V}WI+C>`9Acw00RIQn|MJlIvG3w0000C3%>5t zidr%inNpJrrOWk}o?bo`LL3TPGX8LmGr|Nex)~wfXj5t5$CAq--YK`!ZrA66XG4Cp zNAorG(h%OxqAiuau^-NH&_!(J^LR0~)=HZ(o`*BhTmP2vf46?}{IFN8_QblI zaR`~MHq*UKQ*|Hoq3fAlfBP>300000000000000000000z<=}(t;CCo04M+egQt(w literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt new file mode 100644 index 0000000..e7a4785 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt @@ -0,0 +1 @@ +I am a text file with a funky name! diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png new file mode 100644 index 0000000000000000000000000000000000000000..1c16a71ed41bb17dabbf11eeecc76f3ca03d3f24 GIT binary patch literal 931 zcmaJ=&u-H&9L|6Pnly1_aI&&1P3)vyR;ytuO~)cgRkamVTp&%{HtHN_iA&QS;e-U- zd5OKiBqk0Vcm-}q+!2BY!0wuk10|AU|E%x(et-R@-FmpQeRo??lpXij>4^QBSi3jn z|M`dW_hP%ln|T35jm!Y8(R8C2hEg9b|psA#Yhz#$%-Nz4mwc*Qk0a^)z{ zM0j>c8oeapQOYP-ri`P_vA~UbD{iV?FpJ7So=J zv7UUR7vf3WcAa`J|2jDR{`=RvpM!z&`qQJW8@tM_v#pO$-hO^2pN-pWIcE=Ey!r!8 CR~}#h literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt new file mode 100644 index 0000000..9b6903e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt @@ -0,0 +1 @@ +I am a plain text file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md new file mode 100644 index 0000000..3c9dbe3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md @@ -0,0 +1,3 @@ +* Opera does not allow submitting this file, it shows a warning to the + user that the file could not be found instead. Tested in 9.8, 11.51 on OSX. + Reported to Opera on 08.09.2011 (tracking email DSK-346009@bugs.opera.com). diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js new file mode 100644 index 0000000..fc22026 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js @@ -0,0 +1,24 @@ +module.exports['menu_seperator.png.http'] = [ + {type: 'file', name: 'image', filename: 'menu_separator.png', fixture: 'menu_separator.png', + sha1: 'c845ca3ea794be298f2a1b79769b71939eaf4e54'} +]; + +module.exports['beta-sticker-1.png.http'] = [ + {type: 'file', name: 'sticker', filename: 'beta-sticker-1.png', fixture: 'beta-sticker-1.png', + sha1: '6abbcffd12b4ada5a6a084fe9e4584f846331bc4'} +]; + +module.exports['blank.gif.http'] = [ + {type: 'file', name: 'file', filename: 'blank.gif', fixture: 'blank.gif', + sha1: 'a1fdee122b95748d81cee426d717c05b5174fe96'} +]; + +module.exports['binaryfile.tar.gz.http'] = [ + {type: 'file', name: 'file', filename: 'binaryfile.tar.gz', fixture: 'binaryfile.tar.gz', + sha1: 'cfabe13b348e5e69287d677860880c52a69d2155'} +]; + +module.exports['plain.txt.http'] = [ + {type: 'file', name: 'file', filename: 'plain.txt', fixture: 'plain.txt', + sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'} +]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js new file mode 100644 index 0000000..4489176 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js @@ -0,0 +1,6 @@ +module.exports = { + 'empty.http': [], + 'empty-urlencoded.http': [], + 'empty-multipart.http': [], + 'minimal.http': [], +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js new file mode 100644 index 0000000..f03b4f0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js @@ -0,0 +1,9 @@ +module.exports['generic.http'] = [ + {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt', + sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, +]; + +module.exports['filename-name.http'] = [ + {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', + sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, +]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js new file mode 100644 index 0000000..d2e4cfd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js @@ -0,0 +1,9 @@ +module.exports['crlf.http'] = [ + {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', + sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, +]; + +module.exports['preamble.http'] = [ + {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', + sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, +]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js new file mode 100644 index 0000000..eb76fdc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js @@ -0,0 +1,21 @@ +var properFilename = 'funkyfilename.txt'; + +function expect(filename) { + return [ + {type: 'field', name: 'title', value: 'Weird filename'}, + {type: 'file', name: 'upload', filename: filename, fixture: properFilename}, + ]; +}; + +var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; +var ffOrIe = " ? % * | \" < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; + +module.exports = { + 'osx-chrome-13.http' : expect(webkit), + 'osx-firefox-3.6.http' : expect(ffOrIe), + 'osx-safari-5.http' : expect(webkit), + 'xp-chrome-12.http' : expect(webkit), + 'xp-ie-7.http' : expect(ffOrIe), + 'xp-ie-8.http' : expect(ffOrIe), + 'xp-safari-5.http' : expect(webkit), +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js new file mode 100644 index 0000000..e59c5b2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js @@ -0,0 +1,8 @@ +module.exports['missing-hyphens1.http'] = [ + {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', + sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, +]; +module.exports['missing-hyphens2.http'] = [ + {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', + sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, +]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js new file mode 100644 index 0000000..a476169 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js @@ -0,0 +1,72 @@ +exports['rfc1867'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--\r\n', + parts: + [ { headers: { + 'content-disposition': 'form-data; name="field1"', + }, + data: 'Joe Blow\r\nalmost tricked you!', + }, + { headers: { + 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', + 'Content-Type': 'text/plain', + }, + data: '... contents of file1.txt ...\r', + } + ] + }; + +exports['noTrailing\r\n'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--', + parts: + [ { headers: { + 'content-disposition': 'form-data; name="field1"', + }, + data: 'Joe Blow\r\nalmost tricked you!', + }, + { headers: { + 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', + 'Content-Type': 'text/plain', + }, + data: '... contents of file1.txt ...\r', + } + ] + }; + +exports['emptyHeader'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + ': foo\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--\r\n', + expectError: true, + }; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js new file mode 100644 index 0000000..8e10ac9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js @@ -0,0 +1,96 @@ +var hashish = require('hashish'); +var fs = require('fs'); +var findit = require('findit'); +var path = require('path'); +var http = require('http'); +var net = require('net'); +var assert = require('assert'); + +var common = require('../common'); +var formidable = common.formidable; + +var server = http.createServer(); +server.listen(common.port, findFixtures); + +function findFixtures() { + var fixtures = []; + findit + .sync(common.dir.fixture + '/js') + .forEach(function(jsPath) { + if (!/\.js$/.test(jsPath)) return; + + var group = path.basename(jsPath, '.js'); + hashish.forEach(require(jsPath), function(fixture, name) { + fixtures.push({ + name : group + '/' + name, + fixture : fixture, + }); + }); + }); + + testNext(fixtures); +} + +function testNext(fixtures) { + var fixture = fixtures.shift(); + if (!fixture) return server.close(); + + var name = fixture.name; + var fixture = fixture.fixture; + + uploadFixture(name, function(err, parts) { + if (err) throw err; + + fixture.forEach(function(expectedPart, i) { + var parsedPart = parts[i]; + assert.equal(parsedPart.type, expectedPart.type); + assert.equal(parsedPart.name, expectedPart.name); + + if (parsedPart.type === 'file') { + var file = parsedPart.value; + assert.equal(file.name, expectedPart.filename); + if(expectedPart.sha1) assert.equal(file.hash, expectedPart.sha1); + } + }); + + testNext(fixtures); + }); +}; + +function uploadFixture(name, cb) { + server.once('request', function(req, res) { + var form = new formidable.IncomingForm(); + form.uploadDir = common.dir.tmp; + form.hash = "sha1"; + form.parse(req); + + function callback() { + var realCallback = cb; + cb = function() {}; + realCallback.apply(null, arguments); + } + + var parts = []; + form + .on('error', callback) + .on('fileBegin', function(name, value) { + parts.push({type: 'file', name: name, value: value}); + }) + .on('field', function(name, value) { + parts.push({type: 'field', name: name, value: value}); + }) + .on('end', function() { + res.end('OK'); + callback(null, parts); + }); + }); + + var socket = net.createConnection(common.port); + var file = fs.createReadStream(common.dir.fixture + '/http/' + name); + + file.pipe(socket, {end: false}); + socket.on('data', function () { + socket.end(); + }); + +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js new file mode 100644 index 0000000..28e758e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js @@ -0,0 +1,38 @@ +var common = require('../common'); +var formidable = common.formidable; +var http = require('http'); +var assert = require('assert'); + +var testData = { + numbers: [1, 2, 3, 4, 5], + nested: { key: 'value' } +}; + +var server = http.createServer(function(req, res) { + var form = new formidable.IncomingForm(); + + form.parse(req, function(err, fields, files) { + assert.deepEqual(fields, testData); + + res.end(); + server.close(); + }); +}); + +var port = common.port; + +server.listen(port, function(err){ + assert.equal(err, null); + + var request = http.request({ + port: port, + method: 'POST', + headers: { + 'Content-Type': 'application/json' + } + }); + + request.write(JSON.stringify(testData)); + request.end(); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js new file mode 100644 index 0000000..643d2c6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js @@ -0,0 +1,45 @@ +var common = require('../common'); +var formidable = common.formidable; +var http = require('http'); +var fs = require('fs'); +var path = require('path'); +var hashish = require('hashish'); +var assert = require('assert'); + +var testFilePath = path.join(__dirname, '../fixture/file/binaryfile.tar.gz'); + +var server = http.createServer(function(req, res) { + var form = new formidable.IncomingForm(); + + form.parse(req, function(err, fields, files) { + assert.equal(hashish(files).length, 1); + var file = files.file; + + assert.equal(file.size, 301); + + var uploaded = fs.readFileSync(file.path); + var original = fs.readFileSync(testFilePath); + + assert.deepEqual(uploaded, original); + + res.end(); + server.close(); + }); +}); + +var port = common.port; + +server.listen(port, function(err){ + assert.equal(err, null); + + var request = http.request({ + port: port, + method: 'POST', + headers: { + 'Content-Type': 'application/octet-stream' + } + }); + + fs.createReadStream(testFilePath).pipe(request); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js new file mode 100644 index 0000000..2b98598 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js @@ -0,0 +1,24 @@ +var path = require('path'), + fs = require('fs'); + +try { + global.Gently = require('gently'); +} catch (e) { + throw new Error('this test suite requires node-gently'); +} + +exports.lib = path.join(__dirname, '../../lib'); + +global.GENTLY = new Gently(); + +global.assert = require('assert'); +global.TEST_PORT = 13532; +global.TEST_FIXTURES = path.join(__dirname, '../fixture'); +global.TEST_TMP = path.join(__dirname, '../tmp'); + +// Stupid new feature in node that complains about gently attaching too many +// listeners to process 'exit'. This is a workaround until I can think of a +// better way to deal with this. +if (process.setMaxListeners) { + process.setMaxListeners(10000); +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js new file mode 100644 index 0000000..75232aa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js @@ -0,0 +1,80 @@ +var common = require('../common'); +var CHUNK_LENGTH = 10, + multipartParser = require(common.lib + '/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + parser = new MultipartParser(), + fixtures = require(TEST_FIXTURES + '/multipart'), + Buffer = require('buffer').Buffer; + +Object.keys(fixtures).forEach(function(name) { + var fixture = fixtures[name], + buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')), + offset = 0, + chunk, + nparsed, + + parts = [], + part = null, + headerField, + headerValue, + endCalled = ''; + + parser.initWithBoundary(fixture.boundary); + parser.onPartBegin = function() { + part = {headers: {}, data: ''}; + parts.push(part); + headerField = ''; + headerValue = ''; + }; + + parser.onHeaderField = function(b, start, end) { + headerField += b.toString('ascii', start, end); + }; + + parser.onHeaderValue = function(b, start, end) { + headerValue += b.toString('ascii', start, end); + } + + parser.onHeaderEnd = function() { + part.headers[headerField] = headerValue; + headerField = ''; + headerValue = ''; + }; + + parser.onPartData = function(b, start, end) { + var str = b.toString('ascii', start, end); + part.data += b.slice(start, end); + } + + parser.onEnd = function() { + endCalled = true; + } + + buffer.write(fixture.raw, 'binary', 0); + + while (offset < buffer.length) { + if (offset + CHUNK_LENGTH < buffer.length) { + chunk = buffer.slice(offset, offset+CHUNK_LENGTH); + } else { + chunk = buffer.slice(offset, buffer.length); + } + offset = offset + CHUNK_LENGTH; + + nparsed = parser.write(chunk); + if (nparsed != chunk.length) { + if (fixture.expectError) { + return; + } + puts('-- ERROR --'); + p(chunk.toString('ascii')); + throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!'); + } + } + + if (fixture.expectError) { + throw new Error('expected parse error did not happen'); + } + + assert.ok(endCalled); + assert.deepEqual(parts, fixture.parts); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js new file mode 100644 index 0000000..52ceedb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js @@ -0,0 +1,104 @@ +var common = require('../common'); +var WriteStreamStub = GENTLY.stub('fs', 'WriteStream'); + +var File = require(common.lib + '/file'), + EventEmitter = require('events').EventEmitter, + file, + gently; + +function test(test) { + gently = new Gently(); + file = new File(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.ok(file instanceof EventEmitter); + assert.strictEqual(file.size, 0); + assert.strictEqual(file.path, null); + assert.strictEqual(file.name, null); + assert.strictEqual(file.type, null); + assert.strictEqual(file.lastModifiedDate, null); + + assert.strictEqual(file._writeStream, null); + + (function testSetProperties() { + var file2 = new File({foo: 'bar'}); + assert.equal(file2.foo, 'bar'); + })(); +}); + +test(function open() { + var WRITE_STREAM; + file.path = '/foo'; + + gently.expect(WriteStreamStub, 'new', function (path) { + WRITE_STREAM = this; + assert.strictEqual(path, file.path); + }); + + file.open(); + assert.strictEqual(file._writeStream, WRITE_STREAM); +}); + +test(function write() { + var BUFFER = {length: 10}, + CB_STUB, + CB = function() { + CB_STUB.apply(this, arguments); + }; + + file._writeStream = {}; + + gently.expect(file._writeStream, 'write', function (buffer, cb) { + assert.strictEqual(buffer, BUFFER); + + gently.expect(file, 'emit', function (event, bytesWritten) { + assert.ok(file.lastModifiedDate instanceof Date); + assert.equal(event, 'progress'); + assert.equal(bytesWritten, file.size); + }); + + CB_STUB = gently.expect(function writeCb() { + assert.equal(file.size, 10); + }); + + cb(); + + gently.expect(file, 'emit', function (event, bytesWritten) { + assert.equal(event, 'progress'); + assert.equal(bytesWritten, file.size); + }); + + CB_STUB = gently.expect(function writeCb() { + assert.equal(file.size, 20); + }); + + cb(); + }); + + file.write(BUFFER, CB); +}); + +test(function end() { + var CB_STUB, + CB = function() { + CB_STUB.apply(this, arguments); + }; + + file._writeStream = {}; + + gently.expect(file._writeStream, 'end', function (cb) { + gently.expect(file, 'emit', function (event) { + assert.equal(event, 'end'); + }); + + CB_STUB = gently.expect(function endCb() { + }); + + cb(); + }); + + file.end(CB); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js new file mode 100644 index 0000000..25bd887 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js @@ -0,0 +1,756 @@ +var common = require('../common'); +var MultipartParserStub = GENTLY.stub('./multipart_parser', 'MultipartParser'), + QuerystringParserStub = GENTLY.stub('./querystring_parser', 'QuerystringParser'), + EventEmitterStub = GENTLY.stub('events', 'EventEmitter'), + StreamStub = GENTLY.stub('stream', 'Stream'), + FileStub = GENTLY.stub('./file'); + +var formidable = require(common.lib + '/index'), + IncomingForm = formidable.IncomingForm, + events = require('events'), + fs = require('fs'), + path = require('path'), + Buffer = require('buffer').Buffer, + fixtures = require(TEST_FIXTURES + '/multipart'), + form, + gently; + +function test(test) { + gently = new Gently(); + gently.expect(EventEmitterStub, 'call'); + form = new IncomingForm(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.strictEqual(form.error, null); + assert.strictEqual(form.ended, false); + assert.strictEqual(form.type, null); + assert.strictEqual(form.headers, null); + assert.strictEqual(form.keepExtensions, false); + // Can't assume dir === '/tmp' for portability + // assert.strictEqual(form.uploadDir, '/tmp'); + // Make sure it is a directory instead + assert.doesNotThrow(function () { + assert(fs.statSync(form.uploadDir).isDirectory()); + }); + assert.strictEqual(form.encoding, 'utf-8'); + assert.strictEqual(form.bytesReceived, null); + assert.strictEqual(form.bytesExpected, null); + assert.strictEqual(form.maxFieldsSize, 2 * 1024 * 1024); + assert.strictEqual(form._parser, null); + assert.strictEqual(form._flushing, 0); + assert.strictEqual(form._fieldsSize, 0); + assert.ok(form instanceof EventEmitterStub); + assert.equal(form.constructor.name, 'IncomingForm'); + + (function testSimpleConstructor() { + gently.expect(EventEmitterStub, 'call'); + var form = IncomingForm(); + assert.ok(form instanceof IncomingForm); + })(); + + (function testSimpleConstructorShortcut() { + gently.expect(EventEmitterStub, 'call'); + var form = formidable(); + assert.ok(form instanceof IncomingForm); + })(); +}); + +test(function parse() { + var REQ = {headers: {}} + , emit = {}; + + gently.expect(form, 'writeHeaders', function(headers) { + assert.strictEqual(headers, REQ.headers); + }); + + var EVENTS = ['error', 'aborted', 'data', 'end']; + gently.expect(REQ, 'on', EVENTS.length, function(event, fn) { + assert.equal(event, EVENTS.shift()); + emit[event] = fn; + return this; + }); + + form.parse(REQ); + + (function testPause() { + gently.expect(REQ, 'pause'); + assert.strictEqual(form.pause(), true); + })(); + + (function testPauseCriticalException() { + form.ended = false; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'pause', function() { + throw ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + assert.strictEqual(form.pause(), false); + })(); + + (function testPauseHarmlessException() { + form.ended = true; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'pause', function() { + throw ERR; + }); + + assert.strictEqual(form.pause(), false); + })(); + + (function testResume() { + gently.expect(REQ, 'resume'); + assert.strictEqual(form.resume(), true); + })(); + + (function testResumeCriticalException() { + form.ended = false; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'resume', function() { + throw ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + assert.strictEqual(form.resume(), false); + })(); + + (function testResumeHarmlessException() { + form.ended = true; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'resume', function() { + throw ERR; + }); + + assert.strictEqual(form.resume(), false); + })(); + + (function testEmitError() { + var ERR = new Error('something bad happened'); + gently.expect(form, '_error',function(err) { + assert.strictEqual(err, ERR); + }); + emit.error(ERR); + })(); + + (function testEmitAborted() { + gently.expect(form, 'emit',function(event) { + assert.equal(event, 'aborted'); + }); + gently.expect(form, '_error'); + + emit.aborted(); + })(); + + + (function testEmitData() { + var BUFFER = [1, 2, 3]; + gently.expect(form, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + }); + emit.data(BUFFER); + })(); + + (function testEmitEnd() { + form._parser = {}; + + (function testWithError() { + var ERR = new Error('haha'); + gently.expect(form._parser, 'end', function() { + return ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + emit.end(); + })(); + + (function testWithoutError() { + gently.expect(form._parser, 'end'); + emit.end(); + })(); + + (function testAfterError() { + form.error = true; + emit.end(); + })(); + })(); + + (function testWithCallback() { + gently.expect(EventEmitterStub, 'call'); + var form = new IncomingForm(), + REQ = {headers: {}}, + parseCalled = 0; + + gently.expect(form, 'on', 4, function(event, fn) { + if (event == 'field') { + fn('field1', 'foo'); + fn('field1', 'bar'); + fn('field2', 'nice'); + } + + if (event == 'file') { + fn('file1', '1'); + fn('file1', '2'); + fn('file2', '3'); + } + + if (event == 'end') { + fn(); + } + return this; + }); + + gently.expect(form, 'writeHeaders'); + + gently.expect(REQ, 'on', 4, function() { + return this; + }); + + var parseCbOk = function (err, fields, files) { + assert.deepEqual(fields, {field1: 'bar', field2: 'nice'}); + assert.deepEqual(files, {file1: '2', file2: '3'}); + }; + form.parse(REQ, parseCbOk); + + var ERR = new Error('test'); + gently.expect(form, 'on', 3, function(event, fn) { + if (event == 'field') { + fn('foo', 'bar'); + } + + if (event == 'error') { + fn(ERR); + gently.expect(form, 'on'); + gently.expect(form, 'writeHeaders'); + gently.expect(REQ, 'on', 4, function() { + return this; + }); + } + return this; + }); + + form.parse(REQ, function parseCbErr(err, fields, files) { + assert.strictEqual(err, ERR); + assert.deepEqual(fields, {foo: 'bar'}); + }); + })(); + + (function testWriteOrder() { + gently.expect(EventEmitterStub, 'call'); + var form = new IncomingForm(); + var REQ = new events.EventEmitter(); + var BUF = {}; + var DATACB = null; + + REQ.on('newListener', function(event, fn) { + if ('data' === event) fn(BUF); + }); + + gently.expect(form, 'writeHeaders'); + gently.expect(form, 'write', function(buf) { + assert.strictEqual(buf, BUF); + }); + + form.parse(REQ); + })(); +}); + +test(function pause() { + assert.strictEqual(form.pause(), false); +}); + +test(function resume() { + assert.strictEqual(form.resume(), false); +}); + + +test(function writeHeaders() { + var HEADERS = {}; + gently.expect(form, '_parseContentLength'); + gently.expect(form, '_parseContentType'); + + form.writeHeaders(HEADERS); + assert.strictEqual(form.headers, HEADERS); +}); + +test(function write() { + var parser = {}, + BUFFER = [1, 2, 3]; + + form._parser = parser; + form.bytesExpected = 523423; + + (function testBasic() { + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, BUFFER.length); + assert.equal(bytesExpected, form.bytesExpected); + }); + + gently.expect(parser, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + return buffer.length; + }); + + assert.equal(form.write(BUFFER), BUFFER.length); + assert.equal(form.bytesReceived, BUFFER.length); + })(); + + (function testParserError() { + gently.expect(form, 'emit'); + + gently.expect(parser, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + return buffer.length - 1; + }); + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/parser error/i)); + }); + + assert.equal(form.write(BUFFER), BUFFER.length - 1); + assert.equal(form.bytesReceived, BUFFER.length + BUFFER.length); + })(); + + (function testUninitialized() { + delete form._parser; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/unintialized parser/i)); + }); + form.write(BUFFER); + })(); +}); + +test(function parseContentType() { + var HEADERS = {}; + + form.headers = {'content-type': 'application/x-www-form-urlencoded'}; + gently.expect(form, '_initUrlencoded'); + form._parseContentType(); + + // accept anything that has 'urlencoded' in it + form.headers = {'content-type': 'broken-client/urlencoded-stupid'}; + gently.expect(form, '_initUrlencoded'); + form._parseContentType(); + + var BOUNDARY = '---------------------------57814261102167618332366269'; + form.headers = {'content-type': 'multipart/form-data; boundary='+BOUNDARY}; + + gently.expect(form, '_initMultipart', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + form._parseContentType(); + + (function testQuotedBoundary() { + form.headers = {'content-type': 'multipart/form-data; boundary="' + BOUNDARY + '"'}; + + gently.expect(form, '_initMultipart', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + form._parseContentType(); + })(); + + (function testNoBoundary() { + form.headers = {'content-type': 'multipart/form-data'}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/no multipart boundary/i)); + }); + form._parseContentType(); + })(); + + (function testNoContentType() { + form.headers = {}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/no content-type/i)); + }); + form._parseContentType(); + })(); + + (function testUnknownContentType() { + form.headers = {'content-type': 'invalid'}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/unknown content-type/i)); + }); + form._parseContentType(); + })(); +}); + +test(function parseContentLength() { + var HEADERS = {}; + + form.headers = {}; + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, 0); + assert.equal(bytesExpected, 0); + }); + form._parseContentLength(); + + form.headers['content-length'] = '8'; + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, 0); + assert.equal(bytesExpected, 8); + }); + form._parseContentLength(); + assert.strictEqual(form.bytesReceived, 0); + assert.strictEqual(form.bytesExpected, 8); + + // JS can be evil, lets make sure we are not + form.headers['content-length'] = '08'; + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, 0); + assert.equal(bytesExpected, 8); + }); + form._parseContentLength(); + assert.strictEqual(form.bytesExpected, 8); +}); + +test(function _initMultipart() { + var BOUNDARY = '123', + PARSER; + + gently.expect(MultipartParserStub, 'new', function() { + PARSER = this; + }); + + gently.expect(MultipartParserStub.prototype, 'initWithBoundary', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + + form._initMultipart(BOUNDARY); + assert.equal(form.type, 'multipart'); + assert.strictEqual(form._parser, PARSER); + + (function testRegularField() { + var PART; + gently.expect(StreamStub, 'new', function() { + PART = this; + }); + + gently.expect(form, 'onPart', function(part) { + assert.strictEqual(part, PART); + assert.deepEqual + ( part.headers + , { 'content-disposition': 'form-data; name="field1"' + , 'foo': 'bar' + } + ); + assert.equal(part.name, 'field1'); + + var strings = ['hello', ' world']; + gently.expect(part, 'emit', 2, function(event, b) { + assert.equal(event, 'data'); + assert.equal(b.toString(), strings.shift()); + }); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'end'); + }); + }); + + PARSER.onPartBegin(); + PARSER.onHeaderField(new Buffer('content-disposition'), 0, 10); + PARSER.onHeaderField(new Buffer('content-disposition'), 10, 19); + PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 0, 14); + PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 14, 24); + PARSER.onHeaderEnd(); + PARSER.onHeaderField(new Buffer('foo'), 0, 3); + PARSER.onHeaderValue(new Buffer('bar'), 0, 3); + PARSER.onHeaderEnd(); + PARSER.onHeadersEnd(); + PARSER.onPartData(new Buffer('hello world'), 0, 5); + PARSER.onPartData(new Buffer('hello world'), 5, 11); + PARSER.onPartEnd(); + })(); + + (function testFileField() { + var PART; + gently.expect(StreamStub, 'new', function() { + PART = this; + }); + + gently.expect(form, 'onPart', function(part) { + assert.deepEqual + ( part.headers + , { 'content-disposition': 'form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"' + , 'content-type': 'text/plain' + } + ); + assert.equal(part.name, 'field2'); + assert.equal(part.filename, 'Sun"et.jpg'); + assert.equal(part.mime, 'text/plain'); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'data'); + assert.equal(b.toString(), '... contents of file1.txt ...'); + }); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'end'); + }); + }); + + PARSER.onPartBegin(); + PARSER.onHeaderField(new Buffer('content-disposition'), 0, 19); + PARSER.onHeaderValue(new Buffer('form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"'), 0, 85); + PARSER.onHeaderEnd(); + PARSER.onHeaderField(new Buffer('Content-Type'), 0, 12); + PARSER.onHeaderValue(new Buffer('text/plain'), 0, 10); + PARSER.onHeaderEnd(); + PARSER.onHeadersEnd(); + PARSER.onPartData(new Buffer('... contents of file1.txt ...'), 0, 29); + PARSER.onPartEnd(); + })(); + + (function testEnd() { + gently.expect(form, '_maybeEnd'); + PARSER.onEnd(); + assert.ok(form.ended); + })(); +}); + +test(function _fileName() { + // TODO + return; +}); + +test(function _initUrlencoded() { + var PARSER; + + gently.expect(QuerystringParserStub, 'new', function() { + PARSER = this; + }); + + form._initUrlencoded(); + assert.equal(form.type, 'urlencoded'); + assert.strictEqual(form._parser, PARSER); + + (function testOnField() { + var KEY = 'KEY', VAL = 'VAL'; + gently.expect(form, 'emit', function(field, key, val) { + assert.equal(field, 'field'); + assert.equal(key, KEY); + assert.equal(val, VAL); + }); + + PARSER.onField(KEY, VAL); + })(); + + (function testOnEnd() { + gently.expect(form, '_maybeEnd'); + + PARSER.onEnd(); + assert.equal(form.ended, true); + })(); +}); + +test(function _error() { + var ERR = new Error('bla'); + + gently.expect(form, 'pause'); + gently.expect(form, 'emit', function(event, err) { + assert.equal(event, 'error'); + assert.strictEqual(err, ERR); + }); + + form._error(ERR); + assert.strictEqual(form.error, ERR); + + // make sure _error only does its thing once + form._error(ERR); +}); + +test(function onPart() { + var PART = {}; + gently.expect(form, 'handlePart', function(part) { + assert.strictEqual(part, PART); + }); + + form.onPart(PART); +}); + +test(function handlePart() { + (function testUtf8Field() { + var PART = new events.EventEmitter(); + PART.name = 'my_field'; + + gently.expect(form, 'emit', function(event, field, value) { + assert.equal(event, 'field'); + assert.equal(field, 'my_field'); + assert.equal(value, 'hello world: €'); + }); + + form.handlePart(PART); + PART.emit('data', new Buffer('hello')); + PART.emit('data', new Buffer(' world: ')); + PART.emit('data', new Buffer([0xE2])); + PART.emit('data', new Buffer([0x82, 0xAC])); + PART.emit('end'); + })(); + + (function testBinaryField() { + var PART = new events.EventEmitter(); + PART.name = 'my_field2'; + + gently.expect(form, 'emit', function(event, field, value) { + assert.equal(event, 'field'); + assert.equal(field, 'my_field2'); + assert.equal(value, 'hello world: '+new Buffer([0xE2, 0x82, 0xAC]).toString('binary')); + }); + + form.encoding = 'binary'; + form.handlePart(PART); + PART.emit('data', new Buffer('hello')); + PART.emit('data', new Buffer(' world: ')); + PART.emit('data', new Buffer([0xE2])); + PART.emit('data', new Buffer([0x82, 0xAC])); + PART.emit('end'); + })(); + + (function testFieldSize() { + form.maxFieldsSize = 8; + var PART = new events.EventEmitter(); + PART.name = 'my_field'; + + gently.expect(form, '_error', function(err) { + assert.equal(err.message, 'maxFieldsSize exceeded, received 9 bytes of field data'); + }); + + form.handlePart(PART); + form._fieldsSize = 1; + PART.emit('data', new Buffer(7)); + PART.emit('data', new Buffer(1)); + })(); + + (function testFilePart() { + var PART = new events.EventEmitter(), + FILE = new events.EventEmitter(), + PATH = '/foo/bar'; + + PART.name = 'my_file'; + PART.filename = 'sweet.txt'; + PART.mime = 'sweet.txt'; + + gently.expect(form, '_uploadPath', function(filename) { + assert.equal(filename, PART.filename); + return PATH; + }); + + gently.expect(FileStub, 'new', function(properties) { + assert.equal(properties.path, PATH); + assert.equal(properties.name, PART.filename); + assert.equal(properties.type, PART.mime); + FILE = this; + + gently.expect(form, 'emit', function (event, field, file) { + assert.equal(event, 'fileBegin'); + assert.strictEqual(field, PART.name); + assert.strictEqual(file, FILE); + }); + + gently.expect(FILE, 'open'); + }); + + form.handlePart(PART); + assert.equal(form._flushing, 1); + + var BUFFER; + gently.expect(form, 'pause'); + gently.expect(FILE, 'write', function(buffer, cb) { + assert.strictEqual(buffer, BUFFER); + gently.expect(form, 'resume'); + // @todo handle cb(new Err) + cb(); + }); + + PART.emit('data', BUFFER = new Buffer('test')); + + gently.expect(FILE, 'end', function(cb) { + gently.expect(form, 'emit', function(event, field, file) { + assert.equal(event, 'file'); + assert.strictEqual(file, FILE); + }); + + gently.expect(form, '_maybeEnd'); + + cb(); + assert.equal(form._flushing, 0); + }); + + PART.emit('end'); + })(); +}); + +test(function _uploadPath() { + (function testUniqueId() { + var UUID_A, UUID_B; + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { + assert.equal(uploadDir, form.uploadDir); + UUID_A = uuid; + }); + form._uploadPath(); + + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { + UUID_B = uuid; + }); + form._uploadPath(); + + assert.notEqual(UUID_A, UUID_B); + })(); + + (function testFileExtension() { + form.keepExtensions = true; + var FILENAME = 'foo.jpg', + EXT = '.bar'; + + gently.expect(GENTLY.hijacked.path, 'extname', function(filename) { + assert.equal(filename, FILENAME); + gently.restore(path, 'extname'); + + return EXT; + }); + + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, name) { + assert.equal(path.extname(name), EXT); + }); + form._uploadPath(FILENAME); + })(); +}); + +test(function _maybeEnd() { + gently.expect(form, 'emit', 0); + form._maybeEnd(); + + form.ended = true; + form._flushing = 1; + form._maybeEnd(); + + gently.expect(form, 'emit', function(event) { + assert.equal(event, 'end'); + }); + + form.ended = true; + form._flushing = 0; + form._maybeEnd(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js new file mode 100644 index 0000000..bf2cd5e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js @@ -0,0 +1,50 @@ +var common = require('../common'); +var multipartParser = require(common.lib + '/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + events = require('events'), + Buffer = require('buffer').Buffer, + parser; + +function test(test) { + parser = new MultipartParser(); + test(); +} + +test(function constructor() { + assert.equal(parser.boundary, null); + assert.equal(parser.state, 0); + assert.equal(parser.flags, 0); + assert.equal(parser.boundaryChars, null); + assert.equal(parser.index, null); + assert.equal(parser.lookbehind, null); + assert.equal(parser.constructor.name, 'MultipartParser'); +}); + +test(function initWithBoundary() { + var boundary = 'abc'; + parser.initWithBoundary(boundary); + assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]); + assert.equal(parser.state, multipartParser.START); + + assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true}); +}); + +test(function parserError() { + var boundary = 'abc', + buffer = new Buffer(5); + + parser.initWithBoundary(boundary); + buffer.write('--ad', 'ascii', 0); + assert.equal(parser.write(buffer), 5); +}); + +test(function end() { + (function testError() { + assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain()); + })(); + + (function testRegular() { + parser.state = multipartParser.END; + assert.strictEqual(parser.end(), undefined); + })(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js new file mode 100644 index 0000000..54d3e2d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js @@ -0,0 +1,45 @@ +var common = require('../common'); +var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser, + Buffer = require('buffer').Buffer, + gently, + parser; + +function test(test) { + gently = new Gently(); + parser = new QuerystringParser(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.equal(parser.buffer, ''); + assert.equal(parser.constructor.name, 'QuerystringParser'); +}); + +test(function write() { + var a = new Buffer('a=1'); + assert.equal(parser.write(a), a.length); + + var b = new Buffer('&b=2'); + parser.write(b); + assert.equal(parser.buffer, a + b); +}); + +test(function end() { + var FIELDS = {a: ['b', {c: 'd'}], e: 'f'}; + + gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) { + assert.equal(str, parser.buffer); + return FIELDS; + }); + + gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) { + assert.deepEqual(FIELDS[key], val); + }); + + gently.expect(parser, 'onEnd'); + + parser.buffer = 'my buffer'; + parser.end(); + assert.equal(parser.buffer, ''); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js new file mode 100644 index 0000000..b35ffd6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js @@ -0,0 +1,71 @@ +var common = require('../common'); +var BOUNDARY = '---------------------------10102754414578508781458777923', + FIXTURE = TEST_FIXTURES+'/multi_video.upload', + fs = require('fs'), + http = require('http'), + formidable = require(common.lib + '/index'), + server = http.createServer(); + +server.on('request', function(req, res) { + var form = new formidable.IncomingForm(), + uploads = {}; + + form.uploadDir = TEST_TMP; + form.hash = 'sha1'; + form.parse(req); + + form + .on('fileBegin', function(field, file) { + assert.equal(field, 'upload'); + + var tracker = {file: file, progress: [], ended: false}; + uploads[file.name] = tracker; + file + .on('progress', function(bytesReceived) { + tracker.progress.push(bytesReceived); + assert.equal(bytesReceived, file.size); + }) + .on('end', function() { + tracker.ended = true; + }); + }) + .on('field', function(field, value) { + assert.equal(field, 'title'); + assert.equal(value, ''); + }) + .on('file', function(field, file) { + assert.equal(field, 'upload'); + assert.strictEqual(uploads[file.name].file, file); + }) + .on('end', function() { + assert.ok(uploads['shortest_video.flv']); + assert.ok(uploads['shortest_video.flv'].ended); + assert.ok(uploads['shortest_video.flv'].progress.length > 3); + assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a'); + assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.size); + assert.ok(uploads['shortest_video.mp4']); + assert.ok(uploads['shortest_video.mp4'].ended); + assert.ok(uploads['shortest_video.mp4'].progress.length > 3); + assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f'); + + server.close(); + res.writeHead(200); + res.end('good'); + }); +}); + +server.listen(TEST_PORT, function() { + var stat, headers, request, fixture; + + stat = fs.statSync(FIXTURE); + request = http.request({ + port: TEST_PORT, + path: '/', + method: 'POST', + headers: { + 'content-type': 'multipart/form-data; boundary='+BOUNDARY, + 'content-length': stat.size, + }, + }); + fs.createReadStream(FIXTURE).pipe(request); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js new file mode 100644 index 0000000..02d6d5c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js @@ -0,0 +1 @@ +require('urun')(__dirname) diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js new file mode 100644 index 0000000..4ea4431 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js @@ -0,0 +1,27 @@ +var assert = require('assert'); +var http = require('http'); +var net = require('net'); +var formidable = require('../../lib/index'); + +var server = http.createServer(function (req, res) { + var form = new formidable.IncomingForm(); + var aborted_received = false; + form.on('aborted', function () { + aborted_received = true; + }); + form.on('error', function () { + assert(aborted_received, 'Error event should follow aborted'); + server.close(); + }); + form.on('end', function () { + throw new Error('Unexpected "end" event'); + }); + form.parse(req); +}).listen(0, 'localhost', function () { + var client = net.connect(server.address().port); + client.write( + "POST / HTTP/1.1\r\n" + + "Content-Length: 70\r\n" + + "Content-Type: multipart/form-data; boundary=foo\r\n\r\n"); + client.end(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js new file mode 100644 index 0000000..165628a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js @@ -0,0 +1,48 @@ +var assert = require('assert'); +var common = require('../common'); +var formidable = require('../../lib/index'); +var http = require('http'); + +var server = http.createServer(function(req, res) { + var form = new formidable.IncomingForm(); + form.uploadDir = common.dir.tmp; + form.on('end', function () { + throw new Error('Unexpected "end" event'); + }); + form.on('error', function (e) { + res.writeHead(500); + res.end(e.message); + }); + form.parse(req); +}); + +server.listen(0, function() { + var body = + '--foo\r\n' + + 'Content-Disposition: form-data; name="file1"; filename="file1"\r\n' + + 'Content-Type: application/octet-stream\r\n' + + '\r\nThis is the first file\r\n' + + '--foo\r\n' + + 'Content-Type: application/octet-stream\r\n' + + 'Content-Disposition: form-data; name="file2"; filename="file2"\r\n' + + 'Content-Transfer-Encoding: unknown\r\n' + + '\r\nThis is the second file\r\n' + + '--foo--\r\n'; + + var req = http.request({ + method: 'POST', + port: server.address().port, + headers: { + 'Content-Length': body.length, + 'Content-Type': 'multipart/form-data; boundary=foo' + } + }); + req.on('response', function (res) { + assert.equal(res.statusCode, 500); + res.on('data', function () {}); + res.on('end', function () { + server.close(); + }); + }); + req.end(body); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js new file mode 100644 index 0000000..1939328 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js @@ -0,0 +1,49 @@ +var http = require('http'), + formidable = require('../../lib/index'), + request = require('request'), + assert = require('assert'); + +var host = 'localhost'; + +var index = [ + '
    ', + ' ', + ' ', + '
    ' +].join("\n"); + +var server = http.createServer(function(req, res) { + + // Show a form for testing purposes. + if (req.method == 'GET') { + res.writeHead(200, {'content-type': 'text/html'}); + res.end(index); + return; + } + + // Parse form and write results to response. + var form = new formidable.IncomingForm(); + form.parse(req, function(err, fields, files) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.write(JSON.stringify({err: err, fields: fields, files: files})); + res.end(); + }); + +}).listen(0, host, function() { + + console.log("Server up and running..."); + + var server = this, + url = 'http://' + host + ':' + server.address().port; + + var parts = [ + {'Content-Disposition': 'form-data; name="foo"', 'body': 'bar'} + ] + + var req = request({method: 'POST', url: url, multipart: parts}, function(e, res, body) { + var obj = JSON.parse(body); + assert.equal("bar", obj.fields.foo); + server.close(); + }); + +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html new file mode 100644 index 0000000..48ad92e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html @@ -0,0 +1,67 @@ + + + Convert a file to a base64 request + + + + + + + +
    +
    +
    +
    +
    +
    +

    +Don't forget to save the output with windows (CRLF) line endings! +

    + + + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js new file mode 100644 index 0000000..fc8f36e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js @@ -0,0 +1,33 @@ +var common = require('../common'); +var test = require('utest'); +var assert = common.assert; +var File = common.require('file'); + +var file; +var now = new Date; +test('IncomingForm', { + before: function() { + file = new File({ + size: 1024, + path: '/tmp/cat.png', + name: 'cat.png', + type: 'image/png', + lastModifiedDate: now, + filename: 'cat.png', + mime: 'image/png' + }) + }, + + '#toJSON()': function() { + var obj = file.toJSON(); + var len = Object.keys(obj).length; + assert.equal(1024, obj.size); + assert.equal('/tmp/cat.png', obj.path); + assert.equal('cat.png', obj.name); + assert.equal('image/png', obj.type); + assert.equal('image/png', obj.mime); + assert.equal('cat.png', obj.filename); + assert.equal(now, obj.mtime); + assert.equal(len, 8); + } +}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js new file mode 100644 index 0000000..fe2ac1c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js @@ -0,0 +1,63 @@ +var common = require('../common'); +var test = require('utest'); +var assert = common.assert; +var IncomingForm = common.require('incoming_form').IncomingForm; +var path = require('path'); + +var form; +test('IncomingForm', { + before: function() { + form = new IncomingForm(); + }, + + '#_fileName with regular characters': function() { + var filename = 'foo.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'foo.txt'); + }, + + '#_fileName with unescaped quote': function() { + var filename = 'my".txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); + }, + + '#_fileName with escaped quote': function() { + var filename = 'my%22.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); + }, + + '#_fileName with bad quote and additional sub-header': function() { + var filename = 'my".txt'; + var header = makeHeader(filename) + '; foo="bar"'; + assert.equal(form._fileName(header), filename); + }, + + '#_fileName with semicolon': function() { + var filename = 'my;.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my;.txt'); + }, + + '#_fileName with utf8 character': function() { + var filename = 'my☃.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt'); + }, + + '#_uploadPath strips harmful characters from extension when keepExtensions': function() { + form.keepExtensions = true; + + var ext = path.extname(form._uploadPath('fine.jpg?foo=bar')); + assert.equal(ext, '.jpg'); + + var ext = path.extname(form._uploadPath('fine?foo=bar')); + assert.equal(ext, ''); + + var ext = path.extname(form._uploadPath('super.cr2+dsad')); + assert.equal(ext, '.cr2'); + + var ext = path.extname(form._uploadPath('super.bar')); + assert.equal(ext, '.bar'); + }, +}); + +function makeHeader(filename) { + return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"'; +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js new file mode 100644 index 0000000..9f1cef8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js @@ -0,0 +1,47 @@ +var http = require('http'); +var fs = require('fs'); +var connections = 0; + +var server = http.createServer(function(req, res) { + var socket = req.socket; + console.log('Request: %s %s -> %s', req.method, req.url, socket.filename); + + req.on('end', function() { + if (req.url !== '/') { + res.end(JSON.stringify({ + method: req.method, + url: req.url, + filename: socket.filename, + })); + return; + } + + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + }); +}); + +server.on('connection', function(socket) { + connections++; + + socket.id = connections; + socket.filename = 'connection-' + socket.id + '.http'; + socket.file = fs.createWriteStream(socket.filename); + socket.pipe(socket.file); + + console.log('--> %s', socket.filename); + socket.on('close', function() { + console.log('<-- %s', socket.filename); + }); +}); + +var port = process.env.PORT || 8080; +server.listen(port, function() { + console.log('Recording connections on port %s', port); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md new file mode 100644 index 0000000..c8aa68f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md @@ -0,0 +1,5 @@ + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile new file mode 100644 index 0000000..4e9c8d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md new file mode 100644 index 0000000..1cdd68a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md @@ -0,0 +1,29 @@ + +# pause + + Pause streams... + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js new file mode 100644 index 0000000..1b7b379 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js @@ -0,0 +1,29 @@ + +module.exports = function(obj){ + var onData + , onEnd + , events = []; + + // buffer data + obj.on('data', onData = function(data, encoding){ + events.push(['data', data, encoding]); + }); + + // buffer end + obj.on('end', onEnd = function(data, encoding){ + events.push(['end', data, encoding]); + }); + + return { + end: function(){ + obj.removeListener('data', onData); + obj.removeListener('end', onEnd); + }, + resume: function(){ + this.end(); + for (var i = 0, len = events.length; i < len; ++i) { + obj.emit.apply(obj, events[i]); + } + } + }; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json new file mode 100644 index 0000000..73cfe40 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json @@ -0,0 +1,20 @@ +{ + "name": "pause", + "version": "0.0.1", + "description": "Pause streams...", + "keywords": [], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "main": "index", + "readme": "\n# pause\n\n Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "pause@0.0.1", + "_from": "pause@0.0.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules new file mode 100644 index 0000000..49e31da --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules @@ -0,0 +1,6 @@ +[submodule "support/expresso"] + path = support/expresso + url = git://github.com/visionmedia/expresso.git +[submodule "support/should"] + path = support/should + url = git://github.com/visionmedia/should.js.git diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore new file mode 100644 index 0000000..e85ce2a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore @@ -0,0 +1,7 @@ +test +.travis.yml +benchmark.js +component.json +examples.js +History.md +Makefile diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md new file mode 100644 index 0000000..27e54a4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md @@ -0,0 +1,58 @@ +# node-querystring + + query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. + +## Installation + + $ npm install qs + +## Examples + +```js +var qs = require('qs'); + +qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); +// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } + +qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) +// => user[name]=Tobi&user[email]=tobi%40learnboost.com +``` + +## Testing + +Install dev dependencies: + + $ npm install -d + +and execute: + + $ make test + +browser: + + $ open test/browser/index.html + +## License + +(The MIT License) + +Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js new file mode 100644 index 0000000..590491e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js @@ -0,0 +1,387 @@ +/** + * Object#toString() ref for stringify(). + */ + +var toString = Object.prototype.toString; + +/** + * Object#hasOwnProperty ref + */ + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +/** + * Array#indexOf shim. + */ + +var indexOf = typeof Array.prototype.indexOf === 'function' + ? function(arr, el) { return arr.indexOf(el); } + : function(arr, el) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] === el) return i; + } + return -1; + }; + +/** + * Array.isArray shim. + */ + +var isArray = Array.isArray || function(arr) { + return toString.call(arr) == '[object Array]'; +}; + +/** + * Object.keys shim. + */ + +var objectKeys = Object.keys || function(obj) { + var ret = []; + for (var key in obj) ret.push(key); + return ret; +}; + +/** + * Array#forEach shim. + */ + +var forEach = typeof Array.prototype.forEach === 'function' + ? function(arr, fn) { return arr.forEach(fn); } + : function(arr, fn) { + for (var i = 0; i < arr.length; i++) fn(arr[i]); + }; + +/** + * Array#reduce shim. + */ + +var reduce = function(arr, fn, initial) { + if (typeof arr.reduce === 'function') return arr.reduce(fn, initial); + var res = initial; + for (var i = 0; i < arr.length; i++) res = fn(res, arr[i]); + return res; +}; + +/** + * Create a nullary object if possible + */ + +function createObject() { + return Object.create + ? Object.create(null) + : {}; +} + +/** + * Cache non-integer test regexp. + */ + +var isint = /^[0-9]+$/; + +function promote(parent, key) { + if (parent[key].length == 0) return parent[key] = createObject(); + var t = createObject(); + for (var i in parent[key]) { + if (hasOwnProperty.call(parent[key], i)) { + t[i] = parent[key][i]; + } + } + parent[key] = t; + return t; +} + +function parse(parts, parent, key, val) { + var part = parts.shift(); + // end + if (!part) { + if (isArray(parent[key])) { + parent[key].push(val); + } else if ('object' == typeof parent[key]) { + parent[key] = val; + } else if ('undefined' == typeof parent[key]) { + parent[key] = val; + } else { + parent[key] = [parent[key], val]; + } + // array + } else { + var obj = parent[key] = parent[key] || []; + if (']' == part) { + if (isArray(obj)) { + if ('' != val) obj.push(val); + } else if ('object' == typeof obj) { + obj[objectKeys(obj).length] = val; + } else { + obj = parent[key] = [parent[key], val]; + } + // prop + } else if (~indexOf(part, ']')) { + part = part.substr(0, part.length - 1); + if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + // key + } else { + if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + } + } +} + +/** + * Merge parent key/val pair. + */ + +function merge(parent, key, val){ + if (~indexOf(key, ']')) { + var parts = key.split('[') + , len = parts.length + , last = len - 1; + parse(parts, parent, 'base', val); + // optimize + } else { + if (!isint.test(key) && isArray(parent.base)) { + var t = createObject(); + for (var k in parent.base) t[k] = parent.base[k]; + parent.base = t; + } + set(parent.base, key, val); + } + + return parent; +} + +/** + * Compact sparse arrays. + */ + +function compact(obj) { + if ('object' != typeof obj) return obj; + + if (isArray(obj)) { + var ret = []; + + for (var i in obj) { + if (hasOwnProperty.call(obj, i)) { + ret.push(obj[i]); + } + } + + return ret; + } + + for (var key in obj) { + obj[key] = compact(obj[key]); + } + + return obj; +} + +/** + * Restore Object.prototype. + * see pull-request #58 + */ + +function restoreProto(obj) { + if (!Object.create) return obj; + if (isArray(obj)) return obj; + if (obj && 'object' != typeof obj) return obj; + + for (var key in obj) { + if (hasOwnProperty.call(obj, key)) { + obj[key] = restoreProto(obj[key]); + } + } + + obj.__proto__ = Object.prototype; + return obj; +} + +/** + * Parse the given obj. + */ + +function parseObject(obj){ + var ret = { base: {} }; + + forEach(objectKeys(obj), function(name){ + merge(ret, name, obj[name]); + }); + + return compact(ret.base); +} + +/** + * Parse the given str. + */ + +function parseString(str){ + var ret = reduce(String(str).split('&'), function(ret, pair){ + var eql = indexOf(pair, '=') + , brace = lastBraceInKey(pair) + , key = pair.substr(0, brace || eql) + , val = pair.substr(brace || eql, pair.length) + , val = val.substr(indexOf(val, '=') + 1, val.length); + + // ?foo + if ('' == key) key = pair, val = ''; + if ('' == key) return ret; + + return merge(ret, decode(key), decode(val)); + }, { base: createObject() }).base; + + return restoreProto(compact(ret)); +} + +/** + * Parse the given query `str` or `obj`, returning an object. + * + * @param {String} str | {Object} obj + * @return {Object} + * @api public + */ + +exports.parse = function(str){ + if (null == str || '' == str) return {}; + return 'object' == typeof str + ? parseObject(str) + : parseString(str); +}; + +/** + * Turn the given `obj` into a query string + * + * @param {Object} obj + * @return {String} + * @api public + */ + +var stringify = exports.stringify = function(obj, prefix) { + if (isArray(obj)) { + return stringifyArray(obj, prefix); + } else if ('[object Object]' == toString.call(obj)) { + return stringifyObject(obj, prefix); + } else if ('string' == typeof obj) { + return stringifyString(obj, prefix); + } else { + return prefix + '=' + encodeURIComponent(String(obj)); + } +}; + +/** + * Stringify the given `str`. + * + * @param {String} str + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyString(str, prefix) { + if (!prefix) throw new TypeError('stringify expects an object'); + return prefix + '=' + encodeURIComponent(str); +} + +/** + * Stringify the given `arr`. + * + * @param {Array} arr + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyArray(arr, prefix) { + var ret = []; + if (!prefix) throw new TypeError('stringify expects an object'); + for (var i = 0; i < arr.length; i++) { + ret.push(stringify(arr[i], prefix + '[' + i + ']')); + } + return ret.join('&'); +} + +/** + * Stringify the given `obj`. + * + * @param {Object} obj + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyObject(obj, prefix) { + var ret = [] + , keys = objectKeys(obj) + , key; + + for (var i = 0, len = keys.length; i < len; ++i) { + key = keys[i]; + if ('' == key) continue; + if (null == obj[key]) { + ret.push(encodeURIComponent(key) + '='); + } else { + ret.push(stringify(obj[key], prefix + ? prefix + '[' + encodeURIComponent(key) + ']' + : encodeURIComponent(key))); + } + } + + return ret.join('&'); +} + +/** + * Set `obj`'s `key` to `val` respecting + * the weird and wonderful syntax of a qs, + * where "foo=bar&foo=baz" becomes an array. + * + * @param {Object} obj + * @param {String} key + * @param {String} val + * @api private + */ + +function set(obj, key, val) { + var v = obj[key]; + if (undefined === v) { + obj[key] = val; + } else if (isArray(v)) { + v.push(val); + } else { + obj[key] = [v, val]; + } +} + +/** + * Locate last brace in `str` within the key. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function lastBraceInKey(str) { + var len = str.length + , brace + , c; + for (var i = 0; i < len; ++i) { + c = str[i]; + if (']' == c) brace = false; + if ('[' == c) brace = true; + if ('=' == c && !brace) return i; + } +} + +/** + * Decode `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +function decode(str) { + try { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } catch (err) { + return str; + } +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json new file mode 100644 index 0000000..c11401b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json @@ -0,0 +1,37 @@ +{ + "name": "qs", + "description": "querystring parser", + "version": "0.6.5", + "keywords": [ + "query string", + "parser", + "component" + ], + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/node-querystring.git" + }, + "devDependencies": { + "mocha": "*", + "expect.js": "*" + }, + "scripts": { + "test": "make test" + }, + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "main": "index", + "engines": { + "node": "*" + }, + "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/visionmedia/node-querystring/issues" + }, + "_id": "qs@0.6.5", + "_from": "qs@0.6.5" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json new file mode 100644 index 0000000..3d992a1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json @@ -0,0 +1,57 @@ +{ + "name": "connect", + "version": "2.7.10", + "description": "High performance middleware framework", + "keywords": [ + "framework", + "web", + "middleware", + "connect", + "rack" + ], + "repository": { + "type": "git", + "url": "git://github.com/senchalabs/connect.git" + }, + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "dependencies": { + "qs": "0.6.5", + "formidable": "1.0.14", + "cookie-signature": "1.0.1", + "buffer-crc32": "0.2.1", + "cookie": "0.0.5", + "send": "0.1.0", + "bytes": "0.2.0", + "fresh": "0.1.0", + "pause": "0.0.1", + "debug": "*" + }, + "devDependencies": { + "should": "*", + "mocha": "*", + "jade": "*", + "dox": "*" + }, + "main": "index", + "engines": { + "node": ">= 0.8.0" + }, + "scripts": { + "test": "make" + }, + "readme": "[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect)\n# Connect\n\n Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance \"plugins\" known as _middleware_.\n\n Connect is bundled with over _20_ commonly used middleware, including\n a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/).\n\n```js\nvar connect = require('connect')\n , http = require('http');\n\nvar app = connect()\n .use(connect.favicon())\n .use(connect.logger('dev'))\n .use(connect.static('public'))\n .use(connect.directory('public'))\n .use(connect.cookieParser())\n .use(connect.session({ secret: 'my secret here' }))\n .use(function(req, res){\n res.end('Hello from Connect!\\n');\n });\n\nhttp.createServer(app).listen(3000);\n```\n\n## Middleware\n\n - [csrf](http://www.senchalabs.org/connect/csrf.html)\n - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html)\n - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html)\n - [json](http://www.senchalabs.org/connect/json.html)\n - [multipart](http://www.senchalabs.org/connect/multipart.html)\n - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html)\n - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html)\n - [directory](http://www.senchalabs.org/connect/directory.html)\n - [compress](http://www.senchalabs.org/connect/compress.html)\n - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html)\n - [favicon](http://www.senchalabs.org/connect/favicon.html)\n - [limit](http://www.senchalabs.org/connect/limit.html)\n - [logger](http://www.senchalabs.org/connect/logger.html)\n - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html)\n - [query](http://www.senchalabs.org/connect/query.html)\n - [responseTime](http://www.senchalabs.org/connect/responseTime.html)\n - [session](http://www.senchalabs.org/connect/session.html)\n - [static](http://www.senchalabs.org/connect/static.html)\n - [staticCache](http://www.senchalabs.org/connect/staticCache.html)\n - [vhost](http://www.senchalabs.org/connect/vhost.html)\n - [subdomains](http://www.senchalabs.org/connect/subdomains.html)\n - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html)\n\n## Running Tests\n\nfirst:\n\n $ npm install -d\n\nthen:\n\n $ make test\n\n## Authors\n\n Below is the output from [git-summary](http://github.com/visionmedia/git-extras).\n\n\n project: connect\n commits: 2033\n active : 301 days\n files : 171\n authors: \n 1414\tTj Holowaychuk 69.6%\n 298\tvisionmedia 14.7%\n 191\tTim Caswell 9.4%\n 51\tTJ Holowaychuk 2.5%\n 10\tRyan Olds 0.5%\n 8\tAstro 0.4%\n 5\tNathan Rajlich 0.2%\n 5\tJakub Nešetřil 0.2%\n 3\tDaniel Dickison 0.1%\n 3\tDavid Rio Deiros 0.1%\n 3\tAlexander Simmerl 0.1%\n 3\tAndreas Lind Petersen 0.1%\n 2\tAaron Heckmann 0.1%\n 2\tJacques Crocker 0.1%\n 2\tFabian Jakobs 0.1%\n 2\tBrian J Brennan 0.1%\n 2\tAdam Malcontenti-Wilson 0.1%\n 2\tGlen Mailer 0.1%\n 2\tJames Campos 0.1%\n 1\tTrent Mick 0.0%\n 1\tTroy Kruthoff 0.0%\n 1\tWei Zhu 0.0%\n 1\tcomerc 0.0%\n 1\tdarobin 0.0%\n 1\tnateps 0.0%\n 1\tMarco Sanson 0.0%\n 1\tArthur Taylor 0.0%\n 1\tAseem Kishore 0.0%\n 1\tBart Teeuwisse 0.0%\n 1\tCameron Howey 0.0%\n 1\tChad Weider 0.0%\n 1\tCraig Barnes 0.0%\n 1\tEran Hammer-Lahav 0.0%\n 1\tGregory McWhirter 0.0%\n 1\tGuillermo Rauch 0.0%\n 1\tJae Kwon 0.0%\n 1\tJakub Nesetril 0.0%\n 1\tJoshua Peek 0.0%\n 1\tJxck 0.0%\n 1\tAJ ONeal 0.0%\n 1\tMichael Hemesath 0.0%\n 1\tMorten Siebuhr 0.0%\n 1\tSamori Gorse 0.0%\n 1\tTom Jensen 0.0%\n\n## Node Compatibility\n\n Connect `< 1.x` is compatible with node 0.2.x\n\n\n Connect `1.x` is compatible with node 0.4.x\n\n\n Connect (_master_) `2.x` is compatible with node 0.6.x\n\n## CLA\n\n [http://sencha.com/cla](http://sencha.com/cla)\n\n## License\n\nView the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/).\n", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/senchalabs/connect/issues" + }, + "_id": "connect@2.7.10", + "dist": { + "shasum": "498b2ed118a646a8eae38c99034f65f4cf9160d7" + }, + "_from": "connect@2.7.10", + "_resolved": "https://registry.npmjs.org/connect/-/connect-2.7.10.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js new file mode 100644 index 0000000..92b7003 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js @@ -0,0 +1,40 @@ + +var connect = require('./'); +var app = connect(); + +app.use(connect.logger('dev')); +app.use(connect.bodyParser()); + +app.use(function(req, res, next){ + if (req.checkContinue) { + res.writeContinue(); + } + res.end('hello'); +}); + +var server = app.listen(3000); + +server.on('checkContinue', function(req, res){ + req.checkContinue = true; + app(req, res); +}); + + +// var http = require('http'); + +// var app = http.createServer(function(req, res){ +// console.log(req.headers); +// }); + +// app.on('checkContinue', function(req, res){ +// if ('application/json' == req.headers['content-type']) { +// res.writeContinue(); +// console.log('ok'); +// res.end('thanks') +// } else { +// res.writeHead(400); +// res.end('bad request, json only'); +// } +// }); + +// app.listen(3000); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md new file mode 100644 index 0000000..9e30179 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md @@ -0,0 +1,11 @@ + +1.0.1 / 2013-04-15 +================== + + * Revert "Changed underlying HMAC algo. to sha512." + * Revert "Fix for timing attacks on MAC verification." + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile new file mode 100644 index 0000000..4e9c8d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md new file mode 100644 index 0000000..2559e84 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md @@ -0,0 +1,42 @@ + +# cookie-signature + + Sign and unsign cookies. + +## Example + +```js +var cookie = require('cookie-signature'); + +var val = cookie.sign('hello', 'tobiiscool'); +val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); + +var val = cookie.sign('hello', 'tobiiscool'); +cookie.unsign(val, 'tobiiscool').should.equal('hello'); +cookie.unsign(val, 'luna').should.be.false; +``` + +## License + +(The MIT License) + +Copyright (c) 2012 LearnBoost <tj@learnboost.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js new file mode 100644 index 0000000..ed62814 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js @@ -0,0 +1,42 @@ + +/** + * Module dependencies. + */ + +var crypto = require('crypto'); + +/** + * Sign the given `val` with `secret`. + * + * @param {String} val + * @param {String} secret + * @return {String} + * @api private + */ + +exports.sign = function(val, secret){ + if ('string' != typeof val) throw new TypeError('cookie required'); + if ('string' != typeof secret) throw new TypeError('secret required'); + return val + '.' + crypto + .createHmac('sha256', secret) + .update(val) + .digest('base64') + .replace(/\=+$/, ''); +}; + +/** + * Unsign and decode the given `val` with `secret`, + * returning `false` if the signature is invalid. + * + * @param {String} val + * @param {String} secret + * @return {String|Boolean} + * @api private + */ + +exports.unsign = function(val, secret){ + if ('string' != typeof val) throw new TypeError('cookie required'); + if ('string' != typeof secret) throw new TypeError('secret required'); + var str = val.slice(0, val.lastIndexOf('.')); + return exports.sign(str, secret) == val ? str : false; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json new file mode 100644 index 0000000..83bea32 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json @@ -0,0 +1,24 @@ +{ + "name": "cookie-signature", + "version": "1.0.1", + "description": "Sign and unsign cookies", + "keywords": [ + "cookie", + "sign", + "unsign" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@learnboost.com" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "main": "index", + "readme": "\n# cookie-signature\n\n Sign and unsign cookies.\n\n## Example\n\n```js\nvar cookie = require('cookie-signature');\n\nvar val = cookie.sign('hello', 'tobiiscool');\nval.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');\n\nvar val = cookie.sign('hello', 'tobiiscool');\ncookie.unsign(val, 'tobiiscool').should.equal('hello');\ncookie.unsign(val, 'luna').should.be.false;\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 LearnBoost <tj@learnboost.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "cookie-signature@1.0.1", + "_from": "cookie-signature@1.0.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml new file mode 100644 index 0000000..9400c11 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.6" + - "0.8" + - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE new file mode 100644 index 0000000..249d9de --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE @@ -0,0 +1,9 @@ +// MIT License + +Copyright (C) Roman Shtylman + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md new file mode 100644 index 0000000..5187ed1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md @@ -0,0 +1,44 @@ +# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) # + +cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. + +See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. + +## how? + +``` +npm install cookie +``` + +```javascript +var cookie = require('cookie'); + +var hdr = cookie.serialize('foo', 'bar'); +// hdr = 'foo=bar'; + +var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); +// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; +``` + +## more + +The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. + +### path +> cookie path + +### expires +> absolute expiration date for the cookie (Date object) + +### maxAge +> relative max age of the cookie from when the client receives it (seconds) + +### domain +> domain for the cookie + +### secure +> true or false + +### httpOnly +> true or false + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js new file mode 100644 index 0000000..16bdb65 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js @@ -0,0 +1,70 @@ + +/// Serialize the a name value pair into a cookie string suitable for +/// http headers. An optional options object specified cookie parameters +/// +/// serialize('foo', 'bar', { httpOnly: true }) +/// => "foo=bar; httpOnly" +/// +/// @param {String} name +/// @param {String} val +/// @param {Object} options +/// @return {String} +var serialize = function(name, val, opt){ + opt = opt || {}; + var enc = opt.encode || encode; + var pairs = [name + '=' + enc(val)]; + + if (opt.maxAge) pairs.push('Max-Age=' + opt.maxAge); + if (opt.domain) pairs.push('Domain=' + opt.domain); + if (opt.path) pairs.push('Path=' + opt.path); + if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); + if (opt.httpOnly) pairs.push('HttpOnly'); + if (opt.secure) pairs.push('Secure'); + + return pairs.join('; '); +}; + +/// Parse the given cookie header string into an object +/// The object has the various cookies as keys(names) => values +/// @param {String} str +/// @return {Object} +var parse = function(str, opt) { + opt = opt || {}; + var obj = {} + var pairs = str.split(/[;,] */); + var dec = opt.decode || decode; + + pairs.forEach(function(pair) { + var eq_idx = pair.indexOf('=') + + // skip things that don't look like key=value + if (eq_idx < 0) { + return; + } + + var key = pair.substr(0, eq_idx).trim() + var val = pair.substr(++eq_idx, pair.length).trim(); + + // quoted values + if ('"' == val[0]) { + val = val.slice(1, -1); + } + + // only assign once + if (undefined == obj[key]) { + try { + obj[key] = dec(val); + } catch (e) { + obj[key] = val; + } + } + }); + + return obj; +}; + +var encode = encodeURIComponent; +var decode = decodeURIComponent; + +module.exports.serialize = serialize; +module.exports.parse = parse; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json new file mode 100644 index 0000000..99a390f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json @@ -0,0 +1,36 @@ +{ + "author": { + "name": "Roman Shtylman", + "email": "shtylman@gmail.com" + }, + "name": "cookie", + "description": "cookie parsing and serialization", + "version": "0.1.0", + "repository": { + "type": "git", + "url": "git://github.com/shtylman/node-cookie.git" + }, + "keywords": [ + "cookie", + "cookies" + ], + "main": "index.js", + "scripts": { + "test": "mocha" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "1.x.x" + }, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/shtylman/node-cookie/issues" + }, + "_id": "cookie@0.1.0", + "_from": "cookie@0.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts new file mode 100644 index 0000000..e2bfcc5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts @@ -0,0 +1 @@ +--ui qunit diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js new file mode 100644 index 0000000..c6c27a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js @@ -0,0 +1,44 @@ + +var assert = require('assert'); + +var cookie = require('..'); + +suite('parse'); + +test('basic', function() { + assert.deepEqual({ foo: 'bar' }, cookie.parse('foo=bar')); + assert.deepEqual({ foo: '123' }, cookie.parse('foo=123')); +}); + +test('ignore spaces', function() { + assert.deepEqual({ FOO: 'bar', baz: 'raz' }, + cookie.parse('FOO = bar; baz = raz')); +}); + +test('escaping', function() { + assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' }, + cookie.parse('foo="bar=123456789&name=Magic+Mouse"')); + + assert.deepEqual({ email: ' ",;/' }, + cookie.parse('email=%20%22%2c%3b%2f')); +}); + +test('ignore escaping error and return original value', function() { + assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar')); +}); + +test('ignore non values', function() { + assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar;HttpOnly;Secure')); +}); + +test('unencoded', function() { + assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' }, + cookie.parse('foo="bar=123456789&name=Magic+Mouse"',{ + decode: function(value) { return value; } + })); + + assert.deepEqual({ email: '%20%22%2c%3b%2f' }, + cookie.parse('email=%20%22%2c%3b%2f',{ + decode: function(value) { return value; } + })); +}) diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js new file mode 100644 index 0000000..86bb8c9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js @@ -0,0 +1,64 @@ +// builtin +var assert = require('assert'); + +var cookie = require('..'); + +suite('serialize'); + +test('basic', function() { + assert.equal('foo=bar', cookie.serialize('foo', 'bar')); + assert.equal('foo=bar%20baz', cookie.serialize('foo', 'bar baz')); +}); + +test('path', function() { + assert.equal('foo=bar; Path=/', cookie.serialize('foo', 'bar', { + path: '/' + })); +}); + +test('secure', function() { + assert.equal('foo=bar; Secure', cookie.serialize('foo', 'bar', { + secure: true + })); + + assert.equal('foo=bar', cookie.serialize('foo', 'bar', { + secure: false + })); +}); + +test('domain', function() { + assert.equal('foo=bar; Domain=example.com', cookie.serialize('foo', 'bar', { + domain: 'example.com' + })); +}); + +test('httpOnly', function() { + assert.equal('foo=bar; HttpOnly', cookie.serialize('foo', 'bar', { + httpOnly: true + })); +}); + +test('maxAge', function() { + assert.equal('foo=bar; Max-Age=1000', cookie.serialize('foo', 'bar', { + maxAge: 1000 + })); +}); + +test('escaping', function() { + assert.deepEqual('cat=%2B%20', cookie.serialize('cat', '+ ')); +}); + +test('parse->serialize', function() { + + assert.deepEqual({ cat: 'foo=123&name=baz five' }, cookie.parse( + cookie.serialize('cat', 'foo=123&name=baz five'))); + + assert.deepEqual({ cat: ' ";/' }, cookie.parse( + cookie.serialize('cat', ' ";/'))); +}); + +test('unencoded', function() { + assert.deepEqual('cat=+ ', cookie.serialize('cat', '+ ', { + encode: function(value) { return value; } + })); +}) diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md new file mode 100644 index 0000000..f023269 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md @@ -0,0 +1,62 @@ + +0.7.2 / 2013-02-06 +================== + + * fix package.json + * fix: Mobile Safari (private mode) is broken with debug + * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript + +0.7.1 / 2013-02-05 +================== + + * add repository URL to package.json + * add DEBUG_COLORED to force colored output + * add browserify support + * fix component. Closes #24 + +0.7.0 / 2012-05-04 +================== + + * Added .component to package.json + * Added debug.component.js build + +0.6.0 / 2012-03-16 +================== + + * Added support for "-" prefix in DEBUG [Vinay Pulim] + * Added `.enabled` flag to the node version [TooTallNate] + +0.5.0 / 2012-02-02 +================== + + * Added: humanize diffs. Closes #8 + * Added `debug.disable()` to the CS variant + * Removed padding. Closes #10 + * Fixed: persist client-side variant again. Closes #9 + +0.4.0 / 2012-02-01 +================== + + * Added browser variant support for older browsers [TooTallNate] + * Added `debug.enable('project:*')` to browser variant [TooTallNate] + * Added padding to diff (moved it to the right) + +0.3.0 / 2012-01-26 +================== + + * Added millisecond diff when isatty, otherwise UTC string + +0.2.0 / 2012-01-22 +================== + + * Added wildcard support + +0.1.0 / 2011-12-02 +================== + + * Added: remove colors unless stderr isatty [TooTallNate] + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md new file mode 100644 index 0000000..15ee501 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md @@ -0,0 +1,115 @@ + +# debug + + tiny node.js debugging utility modelled after node core's debugging technique. + +## Installation + +``` +$ npm install debug +``` + +## Usage + + With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility. + +Example _app.js_: + +```js +var debug = require('debug')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %s', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); +``` + +Example _worker.js_: + +```js +var debug = require('debug')('worker'); + +setInterval(function(){ + debug('doing some work'); +}, 1000); +``` + + The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: + + ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) + + ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) + +## Millisecond diff + + When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. + + ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) + + When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: + + ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) + +## Conventions + + If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". + +## Wildcards + + The "*" character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. + + You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with "connect:". + +## Browser support + + Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. + +```js +a = debug('worker:a'); +b = debug('worker:b'); + +setInterval(function(){ + a('doing some work'); +}, 1000); + +setInterval(function(){ + a('doing some work'); +}, 1200); +``` + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json new file mode 100644 index 0000000..4ad0971 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json @@ -0,0 +1,9 @@ +{ + "name": "debug", + "repo": "visionmedia/debug", + "description": "small debugging utility", + "version": "0.7.2", + "keywords": ["debug", "log", "debugger"], + "scripts": ["index.js", "debug.js"], + "dependencies": {} +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js new file mode 100644 index 0000000..e47ba5b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js @@ -0,0 +1,124 @@ + +/** + * Expose `debug()` as the module. + */ + +module.exports = debug; + +/** + * Create a debugger with the given `name`. + * + * @param {String} name + * @return {Type} + * @api public + */ + +function debug(name) { + if (!debug.enabled(name)) return function(){}; + + return function(fmt){ + var curr = new Date; + var ms = curr - (debug[name] || curr); + debug[name] = curr; + + fmt = name + + ' ' + + fmt + + ' +' + debug.humanize(ms); + + // This hackery is required for IE8 + // where `console.log` doesn't have 'apply' + window.console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); + } +} + +/** + * The currently active debug mode names. + */ + +debug.names = []; +debug.skips = []; + +/** + * Enables a debug mode by name. This can include modes + * separated by a colon and wildcards. + * + * @param {String} name + * @api public + */ + +debug.enable = function(name) { + try { + localStorage.debug = name; + } catch(e){} + + var split = (name || '').split(/[\s,]+/) + , len = split.length; + + for (var i = 0; i < len; i++) { + name = split[i].replace('*', '.*?'); + if (name[0] === '-') { + debug.skips.push(new RegExp('^' + name.substr(1) + '$')); + } + else { + debug.names.push(new RegExp('^' + name + '$')); + } + } +}; + +/** + * Disable debug output. + * + * @api public + */ + +debug.disable = function(){ + debug.enable(''); +}; + +/** + * Humanize the given `ms`. + * + * @param {Number} m + * @return {String} + * @api private + */ + +debug.humanize = function(ms) { + var sec = 1000 + , min = 60 * 1000 + , hour = 60 * min; + + if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; + if (ms >= min) return (ms / min).toFixed(1) + 'm'; + if (ms >= sec) return (ms / sec | 0) + 's'; + return ms + 'ms'; +}; + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +debug.enabled = function(name) { + for (var i = 0, len = debug.skips.length; i < len; i++) { + if (debug.skips[i].test(name)) { + return false; + } + } + for (var i = 0, len = debug.names.length; i < len; i++) { + if (debug.names[i].test(name)) { + return true; + } + } + return false; +}; + +// persist + +if (window.localStorage) debug.enable(localStorage.debug); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js new file mode 100644 index 0000000..05374d9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js @@ -0,0 +1,19 @@ + +var debug = require('../')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %s', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html new file mode 100644 index 0000000..7510eee --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html @@ -0,0 +1,24 @@ + + + debug() + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js new file mode 100644 index 0000000..1fdac20 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js @@ -0,0 +1,10 @@ + +var debug = { + foo: require('../')('test:foo'), + bar: require('../')('test:bar'), + baz: require('../')('test:baz') +}; + +debug.foo('foo') +debug.bar('bar') +debug.baz('baz') \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js new file mode 100644 index 0000000..7f6d288 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js @@ -0,0 +1,22 @@ + +// DEBUG=* node example/worker +// DEBUG=worker:* node example/worker +// DEBUG=worker:a node example/worker +// DEBUG=worker:b node example/worker + +var a = require('../')('worker:a') + , b = require('../')('worker:b'); + +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js new file mode 100644 index 0000000..e02c13b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js @@ -0,0 +1,5 @@ +if ('undefined' == typeof window) { + module.exports = require('./lib/debug'); +} else { + module.exports = require('./debug'); +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js new file mode 100644 index 0000000..0b07aa1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js @@ -0,0 +1,134 @@ +/** + * Module dependencies. + */ + +var tty = require('tty'); + +/** + * Expose `debug()` as the module. + */ + +module.exports = debug; + +/** + * Enabled debuggers. + */ + +var names = [] + , skips = []; + +(process.env.DEBUG || '') + .split(/[\s,]+/) + .forEach(function(name){ + name = name.replace('*', '.*?'); + if (name[0] === '-') { + skips.push(new RegExp('^' + name.substr(1) + '$')); + } else { + names.push(new RegExp('^' + name + '$')); + } + }); + +/** + * Colors. + */ + +var colors = [6, 2, 3, 4, 5, 1]; + +/** + * Previous debug() call. + */ + +var prev = {}; + +/** + * Previously assigned color. + */ + +var prevColor = 0; + +/** + * Is stdout a TTY? Colored output is disabled when `true`. + */ + +var isatty = tty.isatty(2); + +/** + * Select a color. + * + * @return {Number} + * @api private + */ + +function color() { + return colors[prevColor++ % colors.length]; +} + +/** + * Humanize the given `ms`. + * + * @param {Number} m + * @return {String} + * @api private + */ + +function humanize(ms) { + var sec = 1000 + , min = 60 * 1000 + , hour = 60 * min; + + if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; + if (ms >= min) return (ms / min).toFixed(1) + 'm'; + if (ms >= sec) return (ms / sec | 0) + 's'; + return ms + 'ms'; +} + +/** + * Create a debugger with the given `name`. + * + * @param {String} name + * @return {Type} + * @api public + */ + +function debug(name) { + function disabled(){} + disabled.enabled = false; + + var match = skips.some(function(re){ + return re.test(name); + }); + + if (match) return disabled; + + match = names.some(function(re){ + return re.test(name); + }); + + if (!match) return disabled; + var c = color(); + + function colored(fmt) { + var curr = new Date; + var ms = curr - (prev[name] || curr); + prev[name] = curr; + + fmt = ' \u001b[9' + c + 'm' + name + ' ' + + '\u001b[3' + c + 'm\u001b[90m' + + fmt + '\u001b[3' + c + 'm' + + ' +' + humanize(ms) + '\u001b[0m'; + + console.error.apply(this, arguments); + } + + function plain(fmt) { + fmt = new Date().toUTCString() + + ' ' + name + ' ' + fmt; + console.error.apply(this, arguments); + } + + colored.enabled = plain.enabled = true; + + return isatty || process.env.DEBUG_COLORS + ? colored + : plain; +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json new file mode 100644 index 0000000..112d22b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json @@ -0,0 +1,40 @@ +{ + "name": "debug", + "version": "0.7.2", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/debug.git" + }, + "description": "small debugging utility", + "keywords": [ + "debug", + "log", + "debugger" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "*" + }, + "main": "lib/debug.js", + "browserify": "debug.js", + "engines": { + "node": "*" + }, + "component": { + "scripts": { + "debug/index.js": "index.js", + "debug/debug.js": "debug.js" + } + }, + "readme": "\n# debug\n\n tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n , http = require('http')\n , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + ' ' + req.url);\n res.end('hello\\n');\n}).listen(3000, function(){\n debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n debug('doing some work');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a \"-\" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/visionmedia/debug/issues" + }, + "_id": "debug@0.7.2", + "_from": "debug@*" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore @@ -0,0 +1 @@ +test diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md new file mode 100644 index 0000000..273130d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md @@ -0,0 +1,32 @@ + +# node-fresh + + HTTP response freshness testing + +## fresh(req, res) + + Check freshness of `req` and `res` headers. + + When the cache is "fresh" __true__ is returned, + otherwise __false__ is returned to indicate that + the cache is now stale. + +## Example: + +```js +var req = { 'if-none-match': 'tobi' }; +var res = { 'etag': 'luna' }; +fresh(req, res); +// => false + +var req = { 'if-none-match': 'tobi' }; +var res = { 'etag': 'tobi' }; +fresh(req, res); +// => true +``` + +## Installation + +``` +$ npm install fresh +``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js new file mode 100644 index 0000000..b2f4d41 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js @@ -0,0 +1,49 @@ + +/** + * Expose `fresh()`. + */ + +module.exports = fresh; + +/** + * Check freshness of `req` and `res` headers. + * + * When the cache is "fresh" __true__ is returned, + * otherwise __false__ is returned to indicate that + * the cache is now stale. + * + * @param {Object} req + * @param {Object} res + * @return {Boolean} + * @api public + */ + +function fresh(req, res) { + // defaults + var etagMatches = true; + var notModified = true; + + // fields + var modifiedSince = req['if-modified-since']; + var noneMatch = req['if-none-match']; + var lastModified = res['last-modified']; + var etag = res['etag']; + + // unconditional request + if (!modifiedSince && !noneMatch) return false; + + // parse if-none-match + if (noneMatch) noneMatch = noneMatch.split(/ *, */); + + // if-none-match + if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0]; + + // if-modified-since + if (modifiedSince) { + modifiedSince = new Date(modifiedSince); + lastModified = new Date(lastModified); + notModified = lastModified <= modifiedSince; + } + + return !! (etagMatches && notModified); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json new file mode 100644 index 0000000..d9fddb2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json @@ -0,0 +1,20 @@ +{ + "name": "fresh", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "HTTP response freshness testing", + "version": "0.1.0", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "\n# node-fresh\n\n HTTP response freshness testing\n\n## fresh(req, res)\n\n Check freshness of `req` and `res` headers.\n\n When the cache is \"fresh\" __true__ is returned,\n otherwise __false__ is returned to indicate that\n the cache is now stale.\n\n## Example:\n\n```js\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'luna' };\nfresh(req, res);\n// => false\n\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'tobi' };\nfresh(req, res);\n// => true\n```\n\n## Installation\n\n```\n$ npm install fresh\n```", + "readmeFilename": "Readme.md", + "_id": "fresh@0.1.0", + "_from": "fresh@0.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js new file mode 100644 index 0000000..297d022 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js @@ -0,0 +1,26 @@ + +module.exports = [ + 'get' + , 'post' + , 'put' + , 'head' + , 'delete' + , 'options' + , 'trace' + , 'copy' + , 'lock' + , 'mkcol' + , 'move' + , 'propfind' + , 'proppatch' + , 'unlock' + , 'report' + , 'mkactivity' + , 'checkout' + , 'merge' + , 'm-search' + , 'notify' + , 'subscribe' + , 'unsubscribe' + , 'patch' +]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json new file mode 100644 index 0000000..f867a8b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json @@ -0,0 +1,20 @@ +{ + "name": "methods", + "version": "0.0.1", + "description": "HTTP methods that node supports", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "http", + "methods" + ], + "author": { + "name": "TJ Holowaychuk" + }, + "license": "MIT", + "readme": "ERROR: No README data found!", + "_id": "methods@0.0.1", + "_from": "methods@0.0.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore new file mode 100644 index 0000000..9303c34 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore @@ -0,0 +1,2 @@ +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown new file mode 100644 index 0000000..40de04f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown @@ -0,0 +1,61 @@ +mkdirp +====== + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +example +======= + +pow.js +------ + var mkdirp = require('mkdirp'); + + mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') + }); + +Output + pow! + +And now /tmp/foo/bar/baz exists, huzzah! + +methods +======= + +var mkdirp = require('mkdirp'); + +mkdirp(dir, mode, cb) +--------------------- + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +mkdirp.sync(dir, mode) +---------------------- + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +Returns the first directory that had to be created, if any. + +install +======= + +With [npm](http://npmjs.org) do: + + npm install mkdirp + +license +======= + +MIT/X11 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js new file mode 100644 index 0000000..e692421 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js new file mode 100644 index 0000000..fda6de8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js @@ -0,0 +1,82 @@ +var path = require('path'); +var fs = require('fs'); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, mode, f, made) { + if (typeof mode === 'function' || mode === undefined) { + f = mode; + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + fs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), mode, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, mode, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + fs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, mode, made) { + if (mode === undefined) { + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + try { + fs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), mode, made); + sync(p, mode, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = fs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json new file mode 100644 index 0000000..64955a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json @@ -0,0 +1,36 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "0.3.4", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "main": "./index", + "keywords": [ + "mkdir", + "directory" + ], + "repository": { + "type": "git", + "url": "http://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "devDependencies": { + "tap": "~0.2.4" + }, + "license": "MIT/X11", + "engines": { + "node": "*" + }, + "readme": "mkdirp\n======\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\nexample\n=======\n\npow.js\n------\n var mkdirp = require('mkdirp');\n \n mkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n });\n\nOutput\n pow!\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\nmethods\n=======\n\nvar mkdirp = require('mkdirp');\n\nmkdirp(dir, mode, cb)\n---------------------\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nmkdirp.sync(dir, mode)\n----------------------\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install mkdirp\n\nlicense\n=======\n\nMIT/X11\n", + "readmeFilename": "README.markdown", + "bugs": { + "url": "https://github.com/substack/node-mkdirp/issues" + }, + "_id": "mkdirp@0.3.4", + "_from": "mkdirp@0.3.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js new file mode 100644 index 0000000..520dcb8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js @@ -0,0 +1,38 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +test('chmod-pre', function (t) { + var mode = 0744 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); + t.end(); + }); + }); +}); + +test('chmod', function (t) { + var mode = 0755 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.end(); + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js new file mode 100644 index 0000000..0eb7099 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js @@ -0,0 +1,37 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +// a file in the way +var itw = ps.slice(0, 3).join('/'); + + +test('clobber-pre', function (t) { + console.error("about to write to "+itw) + fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); + + fs.stat(itw, function (er, stat) { + t.ifError(er) + t.ok(stat && stat.isFile(), 'should be file') + t.end() + }) +}) + +test('clobber', function (t) { + t.plan(2); + mkdirp(file, 0755, function (err) { + t.ok(err); + t.equal(err.code, 'ENOTDIR'); + t.end(); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js new file mode 100644 index 0000000..b07cd70 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('woo', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js new file mode 100644 index 0000000..23a7abb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('async perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); + +test('async root perm', function (t) { + mkdirp('/tmp', 0755, function (err) { + if (err) t.fail(err); + t.end(); + }); + t.end(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js new file mode 100644 index 0000000..f685f60 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js @@ -0,0 +1,39 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; + + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); + +test('sync root perm', function (t) { + t.plan(1); + + var file = '/tmp'; + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js new file mode 100644 index 0000000..96a0447 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js @@ -0,0 +1,41 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('race', function (t) { + t.plan(4); + var ps = [ '', 'tmp' ]; + + for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); + } + var file = ps.join('/'); + + var res = 2; + mk(file, function () { + if (--res === 0) t.end(); + }); + + mk(file, function () { + if (--res === 0) t.end(); + }); + + function mk (file, cb) { + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + if (cb) cb(); + } + }) + }) + }); + } +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js new file mode 100644 index 0000000..7985824 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('rel', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var cwd = process.cwd(); + process.chdir('/tmp'); + + var file = [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + process.chdir(cwd); + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js new file mode 100644 index 0000000..bce68e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js @@ -0,0 +1,25 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(4); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, '/tmp/' + x); + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, null); + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js new file mode 100644 index 0000000..7c222d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js @@ -0,0 +1,24 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + // Note that this will throw on failure, which will fail the test. + var made = mkdirp.sync(file); + t.equal(made, '/tmp/' + x); + + // making the same file again should have no effect. + made = mkdirp.sync(file); + t.equal(made, null); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js new file mode 100644 index 0000000..97ad7a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js @@ -0,0 +1,18 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('root', function (t) { + // '/' on unix, 'c:/' on windows. + var file = path.resolve('/'); + + mkdirp(file, 0755, function (err) { + if (err) throw err + fs.stat(file, function (er, stat) { + if (er) throw er + t.ok(stat.isDirectory(), 'target is a directory'); + t.end(); + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js new file mode 100644 index 0000000..7530cad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file, 0755); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js new file mode 100644 index 0000000..64ccafe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('implicit mode from umask', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0777 & (~process.umask())); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js new file mode 100644 index 0000000..35bd5cb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('umask sync modes', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, (0777 & (~process.umask()))); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore @@ -0,0 +1 @@ +test diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md new file mode 100644 index 0000000..82df7b1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md @@ -0,0 +1,15 @@ + +0.0.4 / 2012-06-17 +================== + + * changed: ret -1 for unsatisfiable and -2 when invalid + +0.0.3 / 2012-06-17 +================== + + * fix last-byte-pos default to len - 1 + +0.0.2 / 2012-06-14 +================== + + * add `.type` diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md new file mode 100644 index 0000000..b2a67fe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md @@ -0,0 +1,28 @@ + +# node-range-parser + + Range header field parser. + +## Example: + +```js +assert(-1 == parse(200, 'bytes=500-20')); +assert(-2 == parse(200, 'bytes=malformed')); +parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); +parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); +parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); +parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); +parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); +parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); +parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); +parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); +parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); +``` + +## Installation + +``` +$ npm install range-parser +``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js new file mode 100644 index 0000000..9b0f7a8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js @@ -0,0 +1,49 @@ + +/** + * Parse "Range" header `str` relative to the given file `size`. + * + * @param {Number} size + * @param {String} str + * @return {Array} + * @api public + */ + +module.exports = function(size, str){ + var valid = true; + var i = str.indexOf('='); + + if (-1 == i) return -2; + + var arr = str.slice(i + 1).split(',').map(function(range){ + var range = range.split('-') + , start = parseInt(range[0], 10) + , end = parseInt(range[1], 10); + + // -nnn + if (isNaN(start)) { + start = size - end; + end = size - 1; + // nnn- + } else if (isNaN(end)) { + end = size - 1; + } + + // limit last-byte-pos to current length + if (end > size - 1) end = size - 1; + + // invalid + if (isNaN(start) + || isNaN(end) + || start > end + || start < 0) valid = false; + + return { + start: start, + end: end + }; + }); + + arr.type = str.slice(0, i); + + return valid ? arr : -1; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json new file mode 100644 index 0000000..efdf450 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json @@ -0,0 +1,20 @@ +{ + "name": "range-parser", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "Range header field string parser", + "version": "0.0.4", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "\n# node-range-parser\n\n Range header field parser.\n\n## Example:\n\n```js\nassert(-1 == parse(200, 'bytes=500-20'));\nassert(-2 == parse(200, 'bytes=malformed'));\nparse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));\nparse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));\nparse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));\nparse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));\nparse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));\nparse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));\nparse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));\nparse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));\nparse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## Installation\n\n```\n$ npm install range-parser\n```", + "readmeFilename": "Readme.md", + "_id": "range-parser@0.0.4", + "_from": "range-parser@0.0.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md new file mode 100644 index 0000000..20c5319 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md @@ -0,0 +1,25 @@ + +0.1.0 / 2012-08-25 +================== + + * add options parameter to send() that is passed to fs.createReadStream() [kanongil] + +0.0.4 / 2012-08-16 +================== + + * allow custom "Accept-Ranges" definition + +0.0.3 / 2012-07-16 +================== + + * fix normalization of the root directory. Closes #3 + +0.0.2 / 2012-07-09 +================== + + * add passing of req explicitly for now (YUCK) + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile new file mode 100644 index 0000000..a9dcfd5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile @@ -0,0 +1,8 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec \ + --bail + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md new file mode 100644 index 0000000..85171a9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md @@ -0,0 +1,123 @@ + +# send + + Send is Connect's `static()` extracted for generalized use, a streaming static file + server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. + +## Installation + + $ npm install send + +## Examples + + Small: + +```js +var http = require('http'); +var send = require('send'); + +var app = http.createServer(function(req, res){ + send(req, req.url).pipe(res); +}); +``` + + Serving from a root directory with custom error-handling: + +```js +var http = require('http'); +var send = require('send'); + +var app = http.createServer(function(req, res){ + // your custom error-handling logic: + function error(err) { + res.statusCode = err.status || 500; + res.end(err.message); + } + + // your custom directory handling logic: + function redirect() { + res.statusCode = 301; + res.setHeader('Location', req.url + '/'); + res.end('Redirecting to ' + req.url + '/'); + } + + // transfer arbitrary files from within + // /www/example.com/public/* + send(req, url.parse(req.url).pathname) + .root('/www/example.com/public') + .on('error', error) + .on('directory', redirect) + .pipe(res); +}); +``` + +## API + +### Events + + - `error` an error occurred `(err)` + - `directory` a directory was requested + - `stream` file streaming has started `(stream)` + - `end` streaming has completed + +### .root(dir) + + Serve files relative to `path`. Aliased as `.from(dir)`. + +### .index(path) + + By default send supports "index.html" files, to disable this + invoke `.index(false)` or to supply a new index pass a string. + +### .maxage(ms) + + Provide a max-age in milliseconds for http caching, defaults to 0. + +## Error-handling + + By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. + +## Caching + + It does _not_ perform internal caching, you should use a reverse proxy cache such + as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). + +## Debugging + + To enable `debug()` instrumentation output export __DEBUG__: + +``` +$ DEBUG=send node app +``` + +## Running tests + +``` +$ npm install +$ make test +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js new file mode 100644 index 0000000..f17158d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/send'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js new file mode 100644 index 0000000..de72146 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js @@ -0,0 +1,473 @@ + +/** + * Module dependencies. + */ + +var debug = require('debug')('send') + , parseRange = require('range-parser') + , Stream = require('stream') + , mime = require('mime') + , fresh = require('fresh') + , path = require('path') + , http = require('http') + , fs = require('fs') + , basename = path.basename + , normalize = path.normalize + , join = path.join + , utils = require('./utils'); + +/** + * Expose `send`. + */ + +exports = module.exports = send; + +/** + * Expose mime module. + */ + +exports.mime = mime; + +/** + * Return a `SendStream` for `req` and `path`. + * + * @param {Request} req + * @param {String} path + * @param {Object} options + * @return {SendStream} + * @api public + */ + +function send(req, path, options) { + return new SendStream(req, path, options); +} + +/** + * Initialize a `SendStream` with the given `path`. + * + * Events: + * + * - `error` an error occurred + * - `stream` file streaming has started + * - `end` streaming has completed + * - `directory` a directory was requested + * + * @param {Request} req + * @param {String} path + * @param {Object} options + * @api private + */ + +function SendStream(req, path, options) { + var self = this; + this.req = req; + this.path = path; + this.options = options || {}; + this.maxage(0); + this.hidden(false); + this.index('index.html'); +} + +/** + * Inherits from `Stream.prototype`. + */ + +SendStream.prototype.__proto__ = Stream.prototype; + +/** + * Enable or disable "hidden" (dot) files. + * + * @param {Boolean} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.hidden = function(val){ + debug('hidden %s', val); + this._hidden = val; + return this; +}; + +/** + * Set index `path`, set to a falsy + * value to disable index support. + * + * @param {String|Boolean} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.index = function(path){ + debug('index %s', path); + this._index = path; + return this; +}; + +/** + * Set root `path`. + * + * @param {String} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.root = +SendStream.prototype.from = function(path){ + this._root = normalize(path); + return this; +}; + +/** + * Set max-age to `ms`. + * + * @param {Number} ms + * @return {SendStream} + * @api public + */ + +SendStream.prototype.maxage = function(ms){ + if (Infinity == ms) ms = 60 * 60 * 24 * 365 * 1000; + debug('max-age %d', ms); + this._maxage = ms; + return this; +}; + +/** + * Emit error with `status`. + * + * @param {Number} status + * @api private + */ + +SendStream.prototype.error = function(status, err){ + var res = this.res; + var msg = http.STATUS_CODES[status]; + err = err || new Error(msg); + err.status = status; + if (this.listeners('error').length) return this.emit('error', err); + res.statusCode = err.status; + res.end(msg); +}; + +/** + * Check if the pathname is potentially malicious. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isMalicious = function(){ + return !this._root && ~this.path.indexOf('..'); +}; + +/** + * Check if the pathname ends with "/". + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.hasTrailingSlash = function(){ + return '/' == this.path[this.path.length - 1]; +}; + +/** + * Check if the basename leads with ".". + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.hasLeadingDot = function(){ + return '.' == basename(this.path)[0]; +}; + +/** + * Check if this is a conditional GET request. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isConditionalGET = function(){ + return this.req.headers['if-none-match'] + || this.req.headers['if-modified-since']; +}; + +/** + * Strip content-* header fields. + * + * @api private + */ + +SendStream.prototype.removeContentHeaderFields = function(){ + var res = this.res; + Object.keys(res._headers).forEach(function(field){ + if (0 == field.indexOf('content')) { + res.removeHeader(field); + } + }); +}; + +/** + * Respond with 304 not modified. + * + * @api private + */ + +SendStream.prototype.notModified = function(){ + var res = this.res; + debug('not modified'); + this.removeContentHeaderFields(); + res.statusCode = 304; + res.end(); +}; + +/** + * Check if the request is cacheable, aka + * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isCachable = function(){ + var res = this.res; + return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode; +}; + +/** + * Handle stat() error. + * + * @param {Error} err + * @api private + */ + +SendStream.prototype.onStatError = function(err){ + var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']; + if (~notfound.indexOf(err.code)) return this.error(404, err); + this.error(500, err); +}; + +/** + * Check if the cache is fresh. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isFresh = function(){ + return fresh(this.req.headers, this.res._headers); +}; + +/** + * Redirect to `path`. + * + * @param {String} path + * @api private + */ + +SendStream.prototype.redirect = function(path){ + if (this.listeners('directory').length) return this.emit('directory'); + var res = this.res; + path += '/'; + res.statusCode = 301; + res.setHeader('Location', path); + res.end('Redirecting to ' + utils.escape(path)); +}; + +/** + * Pipe to `res. + * + * @param {Stream} res + * @return {Stream} res + * @api public + */ + +SendStream.prototype.pipe = function(res){ + var self = this + , args = arguments + , path = this.path + , root = this._root; + + // references + this.res = res; + + // invalid request uri + path = utils.decode(path); + if (-1 == path) return this.error(400); + + // null byte(s) + if (~path.indexOf('\0')) return this.error(400); + + // join / normalize from optional root dir + if (root) path = normalize(join(this._root, path)); + + // ".." is malicious without "root" + if (this.isMalicious()) return this.error(403); + + // malicious path + if (root && 0 != path.indexOf(root)) return this.error(403); + + // hidden file support + if (!this._hidden && this.hasLeadingDot()) return this.error(404); + + // index file support + if (this._index && this.hasTrailingSlash()) path += this._index; + + debug('stat "%s"', path); + fs.stat(path, function(err, stat){ + if (err) return self.onStatError(err); + if (stat.isDirectory()) return self.redirect(self.path); + self.send(path, stat); + }); + + return res; +}; + +/** + * Transfer `path`. + * + * @param {String} path + * @api public + */ + +SendStream.prototype.send = function(path, stat){ + var options = this.options; + var len = stat.size; + var res = this.res; + var req = this.req; + var ranges = req.headers.range; + var offset = options.start || 0; + + // set header fields + this.setHeader(stat); + + // set content-type + this.type(path); + + // conditional GET support + if (this.isConditionalGET() + && this.isCachable() + && this.isFresh()) { + return this.notModified(); + } + + // adjust len to start/end options + len = Math.max(0, len - offset); + if (options.end !== undefined) { + var bytes = options.end - offset + 1; + if (len > bytes) len = bytes; + } + + // Range support + if (ranges) { + ranges = parseRange(len, ranges); + + // unsatisfiable + if (-1 == ranges) { + res.setHeader('Content-Range', 'bytes */' + stat.size); + return this.error(416); + } + + // valid (syntactically invalid ranges are treated as a regular response) + if (-2 != ranges) { + options.start = offset + ranges[0].start; + options.end = offset + ranges[0].end; + + // Content-Range + res.statusCode = 206; + res.setHeader('Content-Range', 'bytes ' + + ranges[0].start + + '-' + + ranges[0].end + + '/' + + len); + len = options.end - options.start + 1; + } + } + + // content-length + res.setHeader('Content-Length', len); + + // HEAD support + if ('HEAD' == req.method) return res.end(); + + this.stream(path, options); +}; + +/** + * Stream `path` to the response. + * + * @param {String} path + * @param {Object} options + * @api private + */ + +SendStream.prototype.stream = function(path, options){ + // TODO: this is all lame, refactor meeee + var self = this; + var res = this.res; + var req = this.req; + + // pipe + var stream = fs.createReadStream(path, options); + this.emit('stream', stream); + stream.pipe(res); + + // socket closed, done with the fd + req.on('close', stream.destroy.bind(stream)); + + // error handling code-smell + stream.on('error', function(err){ + // no hope in responding + if (res._header) { + console.error(err.stack); + req.destroy(); + return; + } + + // 500 + err.status = 500; + self.emit('error', err); + }); + + // end + stream.on('end', function(){ + self.emit('end'); + }); +}; + +/** + * Set content-type based on `path` + * if it hasn't been explicitly set. + * + * @param {String} path + * @api private + */ + +SendStream.prototype.type = function(path){ + var res = this.res; + if (res.getHeader('Content-Type')) return; + var type = mime.lookup(path); + var charset = mime.charsets.lookup(type); + debug('content-type %s', type); + res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); +}; + +/** + * Set reaponse header fields, most + * fields may be pre-defined. + * + * @param {Object} stat + * @api private + */ + +SendStream.prototype.setHeader = function(stat){ + var res = this.res; + if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes'); + if (!res.getHeader('ETag')) res.setHeader('ETag', utils.etag(stat)); + if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString()); + if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000)); + if (!res.getHeader('Last-Modified')) res.setHeader('Last-Modified', stat.mtime.toUTCString()); +}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js new file mode 100644 index 0000000..950e5a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js @@ -0,0 +1,47 @@ + +/** + * Return an ETag in the form of `"-"` + * from the given `stat`. + * + * @param {Object} stat + * @return {String} + * @api private + */ + +exports.etag = function(stat) { + return '"' + stat.size + '-' + Number(stat.mtime) + '"'; +}; + +/** + * decodeURIComponent. + * + * Allows V8 to only deoptimize this fn instead of all + * of send(). + * + * @param {String} path + * @api private + */ + +exports.decode = function(path){ + try { + return decodeURIComponent(path); + } catch (err) { + return -1; + } +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE new file mode 100644 index 0000000..451fc45 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010 Benjamin Thomas, Robert Kieffer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md new file mode 100644 index 0000000..d8b66a8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md @@ -0,0 +1,63 @@ +# mime + +Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. + +## Install + +Install with [npm](http://github.com/isaacs/npm): + + npm install mime + +## API - Queries + +### mime.lookup(path) +Get the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. + + var mime = require('mime'); + + mime.lookup('/path/to/file.txt'); // => 'text/plain' + mime.lookup('file.txt'); // => 'text/plain' + mime.lookup('.TXT'); // => 'text/plain' + mime.lookup('htm'); // => 'text/html' + +### mime.extension(type) +Get the default extension for `type` + + mime.extension('text/html'); // => 'html' + mime.extension('application/octet-stream'); // => 'bin' + +### mime.charsets.lookup() + +Map mime-type to charset + + mime.charsets.lookup('text/plain'); // => 'UTF-8' + +(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) + +## API - Defining Custom Types + +The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types). + +### mime.define() + +Add custom mime/extension mappings + + mime.define({ + 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], + 'application/x-my-type': ['x-mt', 'x-mtt'], + // etc ... + }); + + mime.lookup('x-sft'); // => 'text/x-some-format' + +The first entry in the extensions array is returned by `mime.extension()`. E.g. + + mime.extension('text/x-some-format'); // => 'x-sf' + +### mime.load(filepath) + +Load mappings from an Apache ".types" format file + + mime.load('./my_project.types'); + +The .types file format is simple - See the `types` dir for examples. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js new file mode 100644 index 0000000..1e00585 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js @@ -0,0 +1,104 @@ +var path = require('path'); +var fs = require('fs'); + +function Mime() { + // Map of extension -> mime type + this.types = Object.create(null); + + // Map of mime type -> extension + this.extensions = Object.create(null); +} + +/** + * Define mimetype -> extension mappings. Each key is a mime-type that maps + * to an array of extensions associated with the type. The first extension is + * used as the default extension for the type. + * + * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); + * + * @param map (Object) type definitions + */ +Mime.prototype.define = function (map) { + for (var type in map) { + var exts = map[type]; + + for (var i = 0; i < exts.length; i++) { + this.types[exts[i]] = type; + } + + // Default extension is the first one we encounter + if (!this.extensions[type]) { + this.extensions[type] = exts[0]; + } + } +}; + +/** + * Load an Apache2-style ".types" file + * + * This may be called multiple times (it's expected). Where files declare + * overlapping types/extensions, the last file wins. + * + * @param file (String) path of file to load. + */ +Mime.prototype.load = function(file) { + // Read file and split into lines + var map = {}, + content = fs.readFileSync(file, 'ascii'), + lines = content.split(/[\r\n]+/); + + lines.forEach(function(line) { + // Clean up whitespace/comments, and split into fields + var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); + map[fields.shift()] = fields; + }); + + this.define(map); +}; + +/** + * Lookup a mime type based on extension + */ +Mime.prototype.lookup = function(path, fallback) { + var ext = path.replace(/.*[\.\/]/, '').toLowerCase(); + + return this.types[ext] || fallback || this.default_type; +}; + +/** + * Return file extension associated with a mime type + */ +Mime.prototype.extension = function(mimeType) { + return this.extensions[mimeType]; +}; + +// Default instance +var mime = new Mime(); + +// Load local copy of +// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +mime.load(path.join(__dirname, 'types/mime.types')); + +// Load additional types from node.js community +mime.load(path.join(__dirname, 'types/node.types')); + +// Default type +mime.default_type = mime.lookup('bin'); + +// +// Additional API specific to the default instance +// + +mime.Mime = Mime; + +/** + * Lookup a charset based on mime type. + */ +mime.charsets = { + lookup: function(mimeType, fallback) { + // Assume text types are utf8 + return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; + } +} + +module.exports = mime; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json new file mode 100644 index 0000000..74a6b69 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json @@ -0,0 +1,35 @@ +{ + "author": { + "name": "Robert Kieffer", + "email": "robert@broofa.com", + "url": "http://github.com/broofa" + }, + "contributors": [ + { + "name": "Benjamin Thomas", + "email": "benjamin@benjaminthomas.org", + "url": "http://github.com/bentomas" + } + ], + "dependencies": {}, + "description": "A comprehensive library for mime-type mapping", + "devDependencies": {}, + "keywords": [ + "util", + "mime" + ], + "main": "mime.js", + "name": "mime", + "repository": { + "url": "https://github.com/broofa/node-mime", + "type": "git" + }, + "version": "1.2.6", + "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/broofa/node-mime/issues" + }, + "_id": "mime@1.2.6", + "_from": "mime@1.2.6" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js new file mode 100644 index 0000000..cbad034 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js @@ -0,0 +1,55 @@ +/** + * Usage: node test.js + */ + +var mime = require('./mime'); +var assert = require('assert'); + +function eq(a, b) { + console.log('Test: ' + a + ' === ' + b); + assert.strictEqual.apply(null, arguments); +} + +console.log(Object.keys(mime.extensions).length + ' types'); +console.log(Object.keys(mime.types).length + ' extensions\n'); + +// +// Test mime lookups +// + +eq('text/plain', mime.lookup('text.txt')); +eq('text/plain', mime.lookup('.text.txt')); +eq('text/plain', mime.lookup('.txt')); +eq('text/plain', mime.lookup('txt')); +eq('application/octet-stream', mime.lookup('text.nope')); +eq('fallback', mime.lookup('text.fallback', 'fallback')); +eq('application/octet-stream', mime.lookup('constructor')); +eq('text/plain', mime.lookup('TEXT.TXT')); +eq('text/event-stream', mime.lookup('text/event-stream')); +eq('application/x-web-app-manifest+json', mime.lookup('text.webapp')); + +// +// Test extensions +// + +eq('txt', mime.extension(mime.types.text)); +eq('html', mime.extension(mime.types.htm)); +eq('bin', mime.extension('application/octet-stream')); +eq(undefined, mime.extension('constructor')); + +// +// Test node types +// + +eq('application/octet-stream', mime.lookup('file.buffer')); +eq('audio/mp4', mime.lookup('file.m4a')); + +// +// Test charsets +// + +eq('UTF-8', mime.charsets.lookup('text/plain')); +eq(undefined, mime.charsets.lookup(mime.types.js)); +eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); + +console.log('\nOK'); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types new file mode 100644 index 0000000..b3cae2e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types @@ -0,0 +1,1510 @@ +# This file maps Internet media types to unique file extension(s). +# Although created for httpd, this file is used by many software systems +# and has been placed in the public domain for unlimited redisribution. +# +# The table below contains both registered and (common) unregistered types. +# A type that has no unique extension can be ignored -- they are listed +# here to guide configurations toward known types and to make it easier to +# identify "new" types. File extensions are also commonly used to indicate +# content languages and encodings, so choose them carefully. +# +# Internet media types should be registered as described in RFC 4288. +# The registry is at . +# +# MIME type (lowercased) Extensions +# ============================================ ========== +# application/1d-interleaved-parityfec +# application/3gpp-ims+xml +# application/activemessage +application/andrew-inset ez +# application/applefile +application/applixware aw +application/atom+xml atom +application/atomcat+xml atomcat +# application/atomicmail +application/atomsvc+xml atomsvc +# application/auth-policy+xml +# application/batch-smtp +# application/beep+xml +# application/calendar+xml +# application/cals-1840 +# application/ccmp+xml +application/ccxml+xml ccxml +application/cdmi-capability cdmia +application/cdmi-container cdmic +application/cdmi-domain cdmid +application/cdmi-object cdmio +application/cdmi-queue cdmiq +# application/cea-2018+xml +# application/cellml+xml +# application/cfw +# application/cnrp+xml +# application/commonground +# application/conference-info+xml +# application/cpl+xml +# application/csta+xml +# application/cstadata+xml +application/cu-seeme cu +# application/cybercash +application/davmount+xml davmount +# application/dca-rft +# application/dec-dx +# application/dialog-info+xml +# application/dicom +# application/dns +# application/dskpp+xml +application/dssc+der dssc +application/dssc+xml xdssc +# application/dvcs +application/ecmascript ecma +# application/edi-consent +# application/edi-x12 +# application/edifact +application/emma+xml emma +# application/epp+xml +application/epub+zip epub +# application/eshop +# application/example +application/exi exi +# application/fastinfoset +# application/fastsoap +# application/fits +application/font-tdpfr pfr +# application/framework-attributes+xml +# application/h224 +# application/held+xml +# application/http +application/hyperstudio stk +# application/ibe-key-request+xml +# application/ibe-pkg-reply+xml +# application/ibe-pp-data +# application/iges +# application/im-iscomposing+xml +# application/index +# application/index.cmd +# application/index.obj +# application/index.response +# application/index.vnd +application/inkml+xml ink inkml +# application/iotp +application/ipfix ipfix +# application/ipp +# application/isup +application/java-archive jar +application/java-serialized-object ser +application/java-vm class +application/javascript js +application/json json +# application/kpml-request+xml +# application/kpml-response+xml +application/lost+xml lostxml +application/mac-binhex40 hqx +application/mac-compactpro cpt +# application/macwriteii +application/mads+xml mads +application/marc mrc +application/marcxml+xml mrcx +application/mathematica ma nb mb +# application/mathml-content+xml +# application/mathml-presentation+xml +application/mathml+xml mathml +# application/mbms-associated-procedure-description+xml +# application/mbms-deregister+xml +# application/mbms-envelope+xml +# application/mbms-msk+xml +# application/mbms-msk-response+xml +# application/mbms-protection-description+xml +# application/mbms-reception-report+xml +# application/mbms-register+xml +# application/mbms-register-response+xml +# application/mbms-user-service-description+xml +application/mbox mbox +# application/media_control+xml +application/mediaservercontrol+xml mscml +application/metalink4+xml meta4 +application/mets+xml mets +# application/mikey +application/mods+xml mods +# application/moss-keys +# application/moss-signature +# application/mosskey-data +# application/mosskey-request +application/mp21 m21 mp21 +application/mp4 mp4s +# application/mpeg4-generic +# application/mpeg4-iod +# application/mpeg4-iod-xmt +# application/msc-ivr+xml +# application/msc-mixer+xml +application/msword doc dot +application/mxf mxf +# application/nasdata +# application/news-checkgroups +# application/news-groupinfo +# application/news-transmission +# application/nss +# application/ocsp-request +# application/ocsp-response +application/octet-stream bin dms lha lrf lzh so iso dmg dist distz pkg bpk dump elc deploy +application/oda oda +application/oebps-package+xml opf +application/ogg ogx +application/onenote onetoc onetoc2 onetmp onepkg +application/oxps oxps +# application/parityfec +application/patch-ops-error+xml xer +application/pdf pdf +application/pgp-encrypted pgp +# application/pgp-keys +application/pgp-signature asc sig +application/pics-rules prf +# application/pidf+xml +# application/pidf-diff+xml +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkcs8 p8 +application/pkix-attr-cert ac +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +# application/poc-settings+xml +application/postscript ai eps ps +# application/prs.alvestrand.titrax-sheet +application/prs.cww cww +# application/prs.nprend +# application/prs.plucker +# application/prs.rdf-xml-crypt +# application/prs.xsf+xml +application/pskc+xml pskcxml +# application/qsig +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +# application/remote-printing +application/resource-lists+xml rl +application/resource-lists-diff+xml rld +# application/riscos +# application/rlmi+xml +application/rls-services+xml rs +application/rpki-ghostbusters gbr +application/rpki-manifest mft +application/rpki-roa roa +# application/rpki-updown +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +# application/rtx +# application/samlassertion+xml +# application/samlmetadata+xml +application/sbml+xml sbml +application/scvp-cv-request scq +application/scvp-cv-response scs +application/scvp-vp-request spq +application/scvp-vp-response spp +application/sdp sdp +# application/set-payment +application/set-payment-initiation setpay +# application/set-registration +application/set-registration-initiation setreg +# application/sgml +# application/sgml-open-catalog +application/shf+xml shf +# application/sieve +# application/simple-filter+xml +# application/simple-message-summary +# application/simplesymbolcontainer +# application/slate +# application/smil +application/smil+xml smi smil +# application/soap+fastinfoset +# application/soap+xml +application/sparql-query rq +application/sparql-results+xml srx +# application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/sru+xml sru +application/ssml+xml ssml +# application/tamp-apex-update +# application/tamp-apex-update-confirm +# application/tamp-community-update +# application/tamp-community-update-confirm +# application/tamp-error +# application/tamp-sequence-adjust +# application/tamp-sequence-adjust-confirm +# application/tamp-status-query +# application/tamp-status-response +# application/tamp-update +# application/tamp-update-confirm +application/tei+xml tei teicorpus +application/thraud+xml tfi +# application/timestamp-query +# application/timestamp-reply +application/timestamped-data tsd +# application/tve-trigger +# application/ulpfec +# application/vcard+xml +# application/vemmi +# application/vividence.scriptfile +# application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +# application/vnd.3gpp.sms +# application/vnd.3gpp2.bcmcsinfo+xml +# application/vnd.3gpp2.sms +application/vnd.3gpp2.tcap tcap +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.air-application-installer-package+zip air +application/vnd.adobe.fxp fxp fxpl +# application/vnd.adobe.partial-upload +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +# application/vnd.aether.imp +# application/vnd.ah-barcode +application/vnd.ahead.space ahead +application/vnd.airzip.filesecure.azf azf +application/vnd.airzip.filesecure.azs azs +application/vnd.amazon.ebook azw +application/vnd.americandynamics.acc acc +application/vnd.amiga.ami ami +# application/vnd.amundsen.maze+xml +application/vnd.android.package-archive apk +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.apple.mpegurl m3u8 +# application/vnd.arastra.swi +application/vnd.aristanetworks.swi swi +application/vnd.astraea-software.iota iota +application/vnd.audiograph aep +# application/vnd.autopackage +# application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +# application/vnd.bluetooth.ep.oob +application/vnd.bmi bmi +application/vnd.businessobjects rep +# application/vnd.cab-jscript +# application/vnd.canon-cpdl +# application/vnd.canon-lips +# application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +# application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.cloanto.rp9 rp9 +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +application/vnd.cluetrust.cartomobile-config c11amc +application/vnd.cluetrust.cartomobile-config-pkg c11amz +# application/vnd.collection+json +# application/vnd.commerce-battelle +application/vnd.commonspace csp +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +# application/vnd.ctct.ws+xml +# application/vnd.cups-pdf +# application/vnd.cups-postscript +application/vnd.cups-ppd ppd +# application/vnd.cups-raster +# application/vnd.cups-raw +# application/vnd.curl +application/vnd.curl.car car +application/vnd.curl.pcurl pcurl +# application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.dece.data uvf uvvf uvd uvvd +application/vnd.dece.ttml+xml uvt uvvt +application/vnd.dece.unspecified uvx uvvx +application/vnd.dece.zip uvz uvvz +application/vnd.denovo.fcselayout-link fe_launch +# application/vnd.dir-bi.plate-dl-nosuffix +application/vnd.dna dna +application/vnd.dolby.mlp mlp +# application/vnd.dolby.mobile.1 +# application/vnd.dolby.mobile.2 +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.dvb.ait ait +# application/vnd.dvb.dvbj +# application/vnd.dvb.esgcontainer +# application/vnd.dvb.ipdcdftnotifaccess +# application/vnd.dvb.ipdcesgaccess +# application/vnd.dvb.ipdcesgaccess2 +# application/vnd.dvb.ipdcesgpdd +# application/vnd.dvb.ipdcroaming +# application/vnd.dvb.iptv.alfec-base +# application/vnd.dvb.iptv.alfec-enhancement +# application/vnd.dvb.notif-aggregate-root+xml +# application/vnd.dvb.notif-container+xml +# application/vnd.dvb.notif-generic+xml +# application/vnd.dvb.notif-ia-msglist+xml +# application/vnd.dvb.notif-ia-registration-request+xml +# application/vnd.dvb.notif-ia-registration-response+xml +# application/vnd.dvb.notif-init+xml +# application/vnd.dvb.pfr +application/vnd.dvb.service svc +# application/vnd.dxr +application/vnd.dynageo geo +# application/vnd.easykaraoke.cdgdownload +# application/vnd.ecdis-update +application/vnd.ecowin.chart mag +# application/vnd.ecowin.filerequest +# application/vnd.ecowin.fileupdate +# application/vnd.ecowin.series +# application/vnd.ecowin.seriesrequest +# application/vnd.ecowin.seriesupdate +# application/vnd.emclient.accessrequest+xml +application/vnd.enliven nml +# application/vnd.eprints.data+xml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +# application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +# application/vnd.etsi.aoc+xml +# application/vnd.etsi.cug+xml +# application/vnd.etsi.iptvcommand+xml +# application/vnd.etsi.iptvdiscovery+xml +# application/vnd.etsi.iptvprofile+xml +# application/vnd.etsi.iptvsad-bc+xml +# application/vnd.etsi.iptvsad-cod+xml +# application/vnd.etsi.iptvsad-npvr+xml +# application/vnd.etsi.iptvservice+xml +# application/vnd.etsi.iptvsync+xml +# application/vnd.etsi.iptvueprofile+xml +# application/vnd.etsi.mcid+xml +# application/vnd.etsi.overload-control-policy-dataset+xml +# application/vnd.etsi.sci+xml +# application/vnd.etsi.simservs+xml +# application/vnd.etsi.tsl+xml +# application/vnd.etsi.tsl.der +# application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +# application/vnd.f-secure.mobile +application/vnd.fdf fdf +application/vnd.fdsn.mseed mseed +application/vnd.fdsn.seed seed dataless +# application/vnd.ffsns +# application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +# application/vnd.font-fontforge-sfd +application/vnd.framemaker fm frame maker book +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +# application/vnd.fujixerox.art-ex +# application/vnd.fujixerox.art4 +# application/vnd.fujixerox.hbpl +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +# application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +# application/vnd.geocube+xml +application/vnd.geogebra.file ggb +application/vnd.geogebra.tool ggt +application/vnd.geometry-explorer gex gre +application/vnd.geonext gxt +application/vnd.geoplan g2w +application/vnd.geospace g3w +# application/vnd.globalplatform.card-content-mgt +# application/vnd.globalplatform.card-content-mgt-response +application/vnd.gmx gmx +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +# application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +# application/vnd.hal+json +application/vnd.hal+xml hal +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +# application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +# application/vnd.httphone +application/vnd.hydrostatix.sof-data sfd-hdstx +application/vnd.hzn-3d-crossword x3d +# application/vnd.ibm.afplinedata +# application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.iccprofile icc icm +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +# application/vnd.informedcontrol.rms+xml +# application/vnd.informix-visionary +# application/vnd.infotech.project +# application/vnd.infotech.project+xml +application/vnd.insors.igm igm +application/vnd.intercon.formnet xpw xpx +application/vnd.intergeo i2g +# application/vnd.intertrust.digibox +# application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +# application/vnd.iptc.g2.conceptitem+xml +# application/vnd.iptc.g2.knowledgeitem+xml +# application/vnd.iptc.g2.newsitem+xml +# application/vnd.iptc.g2.packageitem+xml +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.isac.fcs fcs +application/vnd.jam jam +# application/vnd.japannet-directory-service +# application/vnd.japannet-jpnstore-wakeup +# application/vnd.japannet-payment-wakeup +# application/vnd.japannet-registration +# application/vnd.japannet-registration-wakeup +# application/vnd.japannet-setstore-wakeup +# application/vnd.japannet-verification +# application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.joost.joda-archive joda +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.kodak-descriptor sse +application/vnd.las.las+xml lasxml +# application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +# application/vnd.marlin.drm.actiontoken+xml +# application/vnd.marlin.drm.conftoken+xml +# application/vnd.marlin.drm.license+xml +# application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +# application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +# application/vnd.minisoft-hp3000-save +# application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +# application/vnd.motorola.flexsuite +# application/vnd.motorola.flexsuite.adsi +# application/vnd.motorola.flexsuite.fis +# application/vnd.motorola.flexsuite.gotap +# application/vnd.motorola.flexsuite.kmr +# application/vnd.motorola.flexsuite.ttc +# application/vnd.motorola.flexsuite.wem +# application/vnd.motorola.iprm +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +# application/vnd.ms-asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-excel.addin.macroenabled.12 xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb +application/vnd.ms-excel.sheet.macroenabled.12 xlsm +application/vnd.ms-excel.template.macroenabled.12 xltm +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +# application/vnd.ms-office.activex+xml +application/vnd.ms-officetheme thmx +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +# application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-powerpoint.addin.macroenabled.12 ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm +application/vnd.ms-powerpoint.slide.macroenabled.12 sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm +application/vnd.ms-powerpoint.template.macroenabled.12 potm +application/vnd.ms-project mpp mpt +# application/vnd.ms-tnef +# application/vnd.ms-wmdrm.lic-chlg-req +# application/vnd.ms-wmdrm.lic-resp +# application/vnd.ms-wmdrm.meter-chlg-req +# application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-word.document.macroenabled.12 docm +application/vnd.ms-word.template.macroenabled.12 dotm +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +# application/vnd.msign +# application/vnd.multiad.creator +# application/vnd.multiad.creator.cif +# application/vnd.music-niff +application/vnd.musician mus +application/vnd.muvee.style msty +application/vnd.mynfc taglet +# application/vnd.ncd.control +# application/vnd.ncd.reference +# application/vnd.nervana +# application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +# application/vnd.nokia.catalogs +# application/vnd.nokia.conml+wbxml +# application/vnd.nokia.conml+xml +# application/vnd.nokia.isds-radio-presets +# application/vnd.nokia.iptv.config+xml +# application/vnd.nokia.landmark+wbxml +# application/vnd.nokia.landmark+xml +# application/vnd.nokia.landmarkcollection+xml +# application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +# application/vnd.nokia.ncd +# application/vnd.nokia.pcd+wbxml +# application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +# application/vnd.ntt-local.file-transfer +# application/vnd.ntt-local.sip-ta_remote +# application/vnd.ntt-local.sip-ta_tcp_stream +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template odft +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master odm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +# application/vnd.obn +# application/vnd.oftn.l10n+json +# application/vnd.oipf.contentaccessdownload+xml +# application/vnd.oipf.contentaccessstreaming+xml +# application/vnd.oipf.cspg-hexbinary +# application/vnd.oipf.dae.svg+xml +# application/vnd.oipf.dae.xhtml+xml +# application/vnd.oipf.mippvcontrolmessage+xml +# application/vnd.oipf.pae.gem +# application/vnd.oipf.spdiscovery+xml +# application/vnd.oipf.spdlist+xml +# application/vnd.oipf.ueprofile+xml +# application/vnd.oipf.userprofile+xml +application/vnd.olpc-sugar xo +# application/vnd.oma-scws-config +# application/vnd.oma-scws-http-request +# application/vnd.oma-scws-http-response +# application/vnd.oma.bcast.associated-procedure-parameter+xml +# application/vnd.oma.bcast.drm-trigger+xml +# application/vnd.oma.bcast.imd+xml +# application/vnd.oma.bcast.ltkm +# application/vnd.oma.bcast.notification+xml +# application/vnd.oma.bcast.provisioningtrigger +# application/vnd.oma.bcast.sgboot +# application/vnd.oma.bcast.sgdd+xml +# application/vnd.oma.bcast.sgdu +# application/vnd.oma.bcast.simple-symbol-container +# application/vnd.oma.bcast.smartcard-trigger+xml +# application/vnd.oma.bcast.sprov+xml +# application/vnd.oma.bcast.stkm +# application/vnd.oma.cab-address-book+xml +# application/vnd.oma.cab-feature-handler+xml +# application/vnd.oma.cab-pcc+xml +# application/vnd.oma.cab-user-prefs+xml +# application/vnd.oma.dcd +# application/vnd.oma.dcdc +application/vnd.oma.dd2+xml dd2 +# application/vnd.oma.drm.risd+xml +# application/vnd.oma.group-usage-list+xml +# application/vnd.oma.pal+xml +# application/vnd.oma.poc.detailed-progress-report+xml +# application/vnd.oma.poc.final-report+xml +# application/vnd.oma.poc.groups+xml +# application/vnd.oma.poc.invocation-descriptor+xml +# application/vnd.oma.poc.optimized-progress-report+xml +# application/vnd.oma.push +# application/vnd.oma.scidm.messages+xml +# application/vnd.oma.xcap-directory+xml +# application/vnd.omads-email+xml +# application/vnd.omads-file+xml +# application/vnd.omads-folder+xml +# application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +# application/vnd.openxmlformats-officedocument.custom-properties+xml +# application/vnd.openxmlformats-officedocument.customxmlproperties+xml +# application/vnd.openxmlformats-officedocument.drawing+xml +# application/vnd.openxmlformats-officedocument.drawingml.chart+xml +# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml +# application/vnd.openxmlformats-officedocument.extended-properties+xml +# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml +# application/vnd.openxmlformats-officedocument.presentationml.comments+xml +# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx +# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml +application/vnd.openxmlformats-officedocument.presentationml.slide sldx +# application/vnd.openxmlformats-officedocument.presentationml.slide+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx +# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml +# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml +# application/vnd.openxmlformats-officedocument.presentationml.tags+xml +application/vnd.openxmlformats-officedocument.presentationml.template potx +# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx +# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml +# application/vnd.openxmlformats-officedocument.theme+xml +# application/vnd.openxmlformats-officedocument.themeoverride+xml +# application/vnd.openxmlformats-officedocument.vmldrawing +# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx +# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml +# application/vnd.openxmlformats-package.core-properties+xml +# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml +# application/vnd.openxmlformats-package.relationships+xml +# application/vnd.quobject-quoxdocument +# application/vnd.osa.netdeploy +application/vnd.osgeo.mapguide.package mgp +# application/vnd.osgi.bundle +application/vnd.osgi.dp dp +# application/vnd.otps.ct-kip+xml +application/vnd.palm pdb pqa oprc +# application/vnd.paos.xml +application/vnd.pawaafile paw +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +# application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.pmi.widget wg +# application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +# application/vnd.powerbuilder6-s +# application/vnd.powerbuilder7 +# application/vnd.powerbuilder7-s +# application/vnd.powerbuilder75 +# application/vnd.powerbuilder75-s +# application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +# application/vnd.pwg-multiplexed +# application/vnd.pwg-xhtml-print+xml +# application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +# application/vnd.radisys.moml+xml +# application/vnd.radisys.msml+xml +# application/vnd.radisys.msml-audit+xml +# application/vnd.radisys.msml-audit-conf+xml +# application/vnd.radisys.msml-audit-conn+xml +# application/vnd.radisys.msml-audit-dialog+xml +# application/vnd.radisys.msml-audit-stream+xml +# application/vnd.radisys.msml-conf+xml +# application/vnd.radisys.msml-dialog+xml +# application/vnd.radisys.msml-dialog-base+xml +# application/vnd.radisys.msml-dialog-fax-detect+xml +# application/vnd.radisys.msml-dialog-fax-sendrecv+xml +# application/vnd.radisys.msml-dialog-group+xml +# application/vnd.radisys.msml-dialog-speech+xml +# application/vnd.radisys.msml-dialog-transform+xml +# application/vnd.rainstor.data +# application/vnd.rapid +application/vnd.realvnc.bed bed +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml musicxml +# application/vnd.renlearn.rlprint +application/vnd.rig.cryptonote cryptonote +application/vnd.rim.cod cod +application/vnd.rn-realmedia rm +application/vnd.route66.link66+xml link66 +# application/vnd.ruckus.download +# application/vnd.s3sms +application/vnd.sailingtracker.track st +# application/vnd.sbm.cid +# application/vnd.sbm.mid2 +# application/vnd.scribus +# application/vnd.sealed.3df +# application/vnd.sealed.csf +# application/vnd.sealed.doc +# application/vnd.sealed.eml +# application/vnd.sealed.mht +# application/vnd.sealed.net +# application/vnd.sealed.ppt +# application/vnd.sealed.tiff +# application/vnd.sealed.xls +# application/vnd.sealedmedia.softseal.html +# application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +# application/vnd.smart.notebook +application/vnd.smart.teacher teacher +# application/vnd.software602.filler.form+xml +# application/vnd.software602.filler.form-xml-zip +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +# application/vnd.sss-cod +# application/vnd.sss-dtf +# application/vnd.sss-ntf +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.stepmania.package smzip +application/vnd.stepmania.stepchart sm +# application/vnd.street-stream +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +# application/vnd.sun.wadl+xml +application/vnd.sus-calendar sus susp +application/vnd.svd svd +# application/vnd.swiftview-ics +application/vnd.symbian.install sis sisx +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +# application/vnd.syncml.dm.notification +# application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tcpdump.pcap pcap cap dmp +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +# application/vnd.truedoc +# application/vnd.ubisoft.webplayer +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +# application/vnd.uplanet.alert +# application/vnd.uplanet.alert-wbxml +# application/vnd.uplanet.bearer-choice +# application/vnd.uplanet.bearer-choice-wbxml +# application/vnd.uplanet.cacheop +# application/vnd.uplanet.cacheop-wbxml +# application/vnd.uplanet.channel +# application/vnd.uplanet.channel-wbxml +# application/vnd.uplanet.list +# application/vnd.uplanet.list-wbxml +# application/vnd.uplanet.listcmd +# application/vnd.uplanet.listcmd-wbxml +# application/vnd.uplanet.signal +application/vnd.vcx vcx +# application/vnd.vd-study +# application/vnd.vectorworks +# application/vnd.verimatrix.vcas +# application/vnd.vidsoft.vidconference +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +# application/vnd.vividence.scriptfile +application/vnd.vsf vsf +# application/vnd.wap.sic +# application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +# application/vnd.wfa.wsc +# application/vnd.wmc +# application/vnd.wmf.bootstrap +# application/vnd.wolfram.mathematica +# application/vnd.wolfram.mathematica.package +application/vnd.wolfram.player nbp +application/vnd.wordperfect wpd +application/vnd.wqd wqd +# application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +# application/vnd.wv.csp+wbxml +# application/vnd.wv.csp+xml +# application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +# application/vnd.xfdl.webform +# application/vnd.xmi+xml +# application/vnd.xmpie.cpkg +# application/vnd.xmpie.dpkg +# application/vnd.xmpie.plan +# application/vnd.xmpie.ppkg +# application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.openscoreformat osf +application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg +# application/vnd.yamaha.remote-setup +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +# application/vnd.yamaha.through-ngn +# application/vnd.yamaha.tunnel-udpencap +application/vnd.yellowriver-custom-menu cmp +application/vnd.zul zir zirz +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +# application/vq-rtcpxr +# application/watcherinfo+xml +# application/whoispp-query +# application/whoispp-response +application/widget wgt +application/winhlp hlp +# application/wita +# application/wordperfect5.1 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-7z-compressed 7z +application/x-abiword abw +application/x-ace-compressed ace +application/x-authorware-bin aab x32 u32 vox +application/x-authorware-map aam +application/x-authorware-seg aas +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +# application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-debian-package deb udeb +application/x-director dir dcr dxr cst cct cxt w3d fgd swa +application/x-doom wad +application/x-dtbncx+xml ncx +application/x-dtbook+xml dtb +application/x-dtbresource+xml res +application/x-dvi dvi +application/x-font-bdf bdf +# application/x-font-dos +# application/x-font-framemaker +application/x-font-ghostscript gsf +# application/x-font-libgrx +application/x-font-linux-psf psf +application/x-font-otf otf +application/x-font-pcf pcf +application/x-font-snf snf +# application/x-font-speedo +# application/x-font-sunos-news +application/x-font-ttf ttf ttc +application/x-font-type1 pfa pfb pfm afm +application/x-font-woff woff +# application/x-font-vfont +application/x-futuresplash spl +application/x-gnumeric gnumeric +application/x-gtar gtar +# application/x-gzip +application/x-hdf hdf +application/x-java-jnlp-file jnlp +application/x-latex latex +application/x-mobipocket-ebook prc mobi +application/x-ms-application application +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-ms-xbap xbap +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload exe dll com bat msi +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-silverlight-app xap +application/x-stuffit sit +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-tex-tfm tfm +application/x-texinfo texinfo texi +application/x-ustar ustar +application/x-wais-source src +application/x-x509-ca-cert der crt +application/x-xfig fig +application/x-xpinstall xpi +# application/x400-bp +# application/xcap-att+xml +# application/xcap-caps+xml +application/xcap-diff+xml xdf +# application/xcap-el+xml +# application/xcap-error+xml +# application/xcap-ns+xml +# application/xcon-conference-info-diff+xml +# application/xcon-conference-info+xml +application/xenc+xml xenc +application/xhtml+xml xhtml xht +# application/xhtml-voice+xml +application/xml xml xsl +application/xml-dtd dtd +# application/xml-external-parsed-entity +# application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/yang yang +application/yin+xml yin +application/zip zip +# audio/1d-interleaved-parityfec +# audio/32kadpcm +# audio/3gpp +# audio/3gpp2 +# audio/ac3 +audio/adpcm adp +# audio/amr +# audio/amr-wb +# audio/amr-wb+ +# audio/asc +# audio/atrac-advanced-lossless +# audio/atrac-x +# audio/atrac3 +audio/basic au snd +# audio/bv16 +# audio/bv32 +# audio/clearmode +# audio/cn +# audio/dat12 +# audio/dls +# audio/dsr-es201108 +# audio/dsr-es202050 +# audio/dsr-es202211 +# audio/dsr-es202212 +# audio/dv +# audio/dvi4 +# audio/eac3 +# audio/evrc +# audio/evrc-qcp +# audio/evrc0 +# audio/evrc1 +# audio/evrcb +# audio/evrcb0 +# audio/evrcb1 +# audio/evrcwb +# audio/evrcwb0 +# audio/evrcwb1 +# audio/example +# audio/fwdred +# audio/g719 +# audio/g722 +# audio/g7221 +# audio/g723 +# audio/g726-16 +# audio/g726-24 +# audio/g726-32 +# audio/g726-40 +# audio/g728 +# audio/g729 +# audio/g7291 +# audio/g729d +# audio/g729e +# audio/gsm +# audio/gsm-efr +# audio/gsm-hr-08 +# audio/ilbc +# audio/ip-mr_v2.5 +# audio/l16 +# audio/l20 +# audio/l24 +# audio/l8 +# audio/lpc +audio/midi mid midi kar rmi +# audio/mobile-xmf +audio/mp4 mp4a +# audio/mp4a-latm +# audio/mpa +# audio/mpa-robust +audio/mpeg mpga mp2 mp2a mp3 m2a m3a +# audio/mpeg4-generic +audio/ogg oga ogg spx +# audio/parityfec +# audio/pcma +# audio/pcma-wb +# audio/pcmu-wb +# audio/pcmu +# audio/prs.sid +# audio/qcelp +# audio/red +# audio/rtp-enc-aescm128 +# audio/rtp-midi +# audio/rtx +# audio/smv +# audio/smv0 +# audio/smv-qcp +# audio/sp-midi +# audio/speex +# audio/t140c +# audio/t38 +# audio/telephone-event +# audio/tone +# audio/uemclip +# audio/ulpfec +# audio/vdvi +# audio/vmr-wb +# audio/vnd.3gpp.iufp +# audio/vnd.4sb +# audio/vnd.audiokoz +# audio/vnd.celp +# audio/vnd.cisco.nse +# audio/vnd.cmles.radio-events +# audio/vnd.cns.anp1 +# audio/vnd.cns.inf1 +audio/vnd.dece.audio uva uvva +audio/vnd.digital-winds eol +# audio/vnd.dlna.adts +# audio/vnd.dolby.heaac.1 +# audio/vnd.dolby.heaac.2 +# audio/vnd.dolby.mlp +# audio/vnd.dolby.mps +# audio/vnd.dolby.pl2 +# audio/vnd.dolby.pl2x +# audio/vnd.dolby.pl2z +# audio/vnd.dolby.pulse.1 +audio/vnd.dra dra +audio/vnd.dts dts +audio/vnd.dts.hd dtshd +# audio/vnd.dvb.file dvb +# audio/vnd.everad.plj +# audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.ms-playready.media.pya pya +# audio/vnd.nokia.mobile-xmf +# audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +# audio/vnd.octel.sbc +# audio/vnd.qcelp +# audio/vnd.rhetorex.32kadpcm +audio/vnd.rip rip +# audio/vnd.sealedmedia.softseal.mpeg +# audio/vnd.vmx.cvsd +# audio/vorbis +# audio/vorbis-config +audio/webm weba +audio/x-aac aac +audio/x-aiff aif aiff aifc +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/x-wav wav +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +# chemical/x-pdb +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +# image/example +# image/fits +image/g3fax g3 +image/gif gif +image/ief ief +# image/jp2 +image/jpeg jpeg jpg jpe +# image/jpm +# image/jpx +image/ktx ktx +# image/naplps +image/png png +image/prs.btif btif +# image/prs.pti +image/svg+xml svg svgz +# image/t38 +image/tiff tiff tif +# image/tiff-fx +image/vnd.adobe.photoshop psd +# image/vnd.cns.inf2 +image/vnd.dece.graphic uvi uvvi uvg uvvg +image/vnd.dvb.subtitle sub +image/vnd.djvu djvu djv +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +# image/vnd.globalgraphics.pgb +# image/vnd.microsoft.icon +# image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +# image/vnd.radiance +# image/vnd.sealed.png +# image/vnd.sealedmedia.softseal.gif +# image/vnd.sealedmedia.softseal.jpg +# image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/webp webp +image/x-cmu-raster ras +image/x-cmx cmx +image/x-freehand fh fhc fh4 fh5 fh7 +image/x-icon ico +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +# message/cpim +# message/delivery-status +# message/disposition-notification +# message/example +# message/external-body +# message/feedback-report +# message/global +# message/global-delivery-status +# message/global-disposition-notification +# message/global-headers +# message/http +# message/imdn+xml +# message/news +# message/partial +message/rfc822 eml mime +# message/s-http +# message/sip +# message/sipfrag +# message/tracking-status +# message/vnd.si.simp +# model/example +model/iges igs iges +model/mesh msh mesh silo +model/vnd.collada+xml dae +model/vnd.dwf dwf +# model/vnd.flatland.3dml +model/vnd.gdl gdl +# model/vnd.gs-gdl +# model/vnd.gs.gdl +model/vnd.gtw gtw +# model/vnd.moml+xml +model/vnd.mts mts +# model/vnd.parasolid.transmit.binary +# model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml wrl vrml +# multipart/alternative +# multipart/appledouble +# multipart/byteranges +# multipart/digest +# multipart/encrypted +# multipart/example +# multipart/form-data +# multipart/header-set +# multipart/mixed +# multipart/parallel +# multipart/related +# multipart/report +# multipart/signed +# multipart/voice-message +# text/1d-interleaved-parityfec +text/calendar ics ifb +text/css css +text/csv csv +# text/directory +# text/dns +# text/ecmascript +# text/enriched +# text/example +# text/fwdred +text/html html htm +# text/javascript +text/n3 n3 +# text/parityfec +text/plain txt text conf def list log in +# text/prs.fallenstein.rst +text/prs.lines.tag dsc +# text/vnd.radisys.msml-basic-layout +# text/red +# text/rfc822-headers +text/richtext rtx +# text/rtf +# text/rtp-enc-aescm128 +# text/rtx +text/sgml sgml sgm +# text/t140 +text/tab-separated-values tsv +text/troff t tr roff man me ms +text/turtle ttl +# text/ulpfec +text/uri-list uri uris urls +text/vcard vcard +# text/vnd.abc +text/vnd.curl curl +text/vnd.curl.dcurl dcurl +text/vnd.curl.scurl scurl +text/vnd.curl.mcurl mcurl +# text/vnd.dmclientscript +text/vnd.dvb.subtitle sub +# text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.graphviz gv +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +# text/vnd.iptc.newsml +# text/vnd.iptc.nitf +# text/vnd.latex-z +# text/vnd.motorola.reflex +# text/vnd.ms-mediapackage +# text/vnd.net2phone.commcenter.command +# text/vnd.si.uricatalogue +text/vnd.sun.j2me.app-descriptor jad +# text/vnd.trolltech.linguist +# text/vnd.wap.si +# text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-fortran f for f77 f90 +text/x-pascal p pas +text/x-java-source java +text/x-setext etx +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +# text/xml +# text/xml-external-parsed-entity +# video/1d-interleaved-parityfec +video/3gpp 3gp +# video/3gpp-tt +video/3gpp2 3g2 +# video/bmpeg +# video/bt656 +# video/celb +# video/dv +# video/example +video/h261 h261 +video/h263 h263 +# video/h263-1998 +# video/h263-2000 +video/h264 h264 +# video/h264-rcdo +# video/h264-svc +video/jpeg jpgv +# video/jpeg2000 +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +# video/mp1s +# video/mp2p +# video/mp2t +video/mp4 mp4 mp4v mpg4 +# video/mp4v-es +video/mpeg mpeg mpg mpe m1v m2v +# video/mpeg4-generic +# video/mpv +# video/nv +video/ogg ogv +# video/parityfec +# video/pointer +video/quicktime qt mov +# video/raw +# video/rtp-enc-aescm128 +# video/rtx +# video/smpte292m +# video/ulpfec +# video/vc1 +# video/vnd.cctv +video/vnd.dece.hd uvh uvvh +video/vnd.dece.mobile uvm uvvm +# video/vnd.dece.mp4 +video/vnd.dece.pd uvp uvvp +video/vnd.dece.sd uvs uvvs +video/vnd.dece.video uvv uvvv +# video/vnd.directv.mpeg +# video/vnd.directv.mpeg-tts +# video/vnd.dlna.mpeg-tts +video/vnd.dvb.file dvb +video/vnd.fvt fvt +# video/vnd.hns.video +# video/vnd.iptvforum.1dparityfec-1010 +# video/vnd.iptvforum.1dparityfec-2005 +# video/vnd.iptvforum.2dparityfec-1010 +# video/vnd.iptvforum.2dparityfec-2005 +# video/vnd.iptvforum.ttsavc +# video/vnd.iptvforum.ttsmpeg2 +# video/vnd.motorola.video +# video/vnd.motorola.videop +video/vnd.mpegurl mxu m4u +video/vnd.ms-playready.media.pyv pyv +# video/vnd.nokia.interleaved-multimedia +# video/vnd.nokia.videovoip +# video/vnd.objectvideo +# video/vnd.sealed.mpeg1 +# video/vnd.sealed.mpeg4 +# video/vnd.sealed.swf +# video/vnd.sealedmedia.softseal.mov +video/vnd.uvvu.mp4 uvu uvvu +video/vnd.vivo viv +video/webm webm +video/x-f4v f4v +video/x-fli fli +video/x-flv flv +video/x-m4v m4v +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types new file mode 100644 index 0000000..b7fe8c0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types @@ -0,0 +1,65 @@ +# What: Google Chrome Extension +# Why: To allow apps to (work) be served with the right content type header. +# http://codereview.chromium.org/2830017 +# Added by: niftylettuce +application/x-chrome-extension crx + +# What: OTF Message Silencer +# Why: To silence the "Resource interpreted as font but transferred with MIME +# type font/otf" message that occurs in Google Chrome +# Added by: niftylettuce +font/opentype otf + +# What: HTC support +# Why: To properly render .htc files such as CSS3PIE +# Added by: niftylettuce +text/x-component htc + +# What: HTML5 application cache manifest +# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps +# per https://developer.mozilla.org/en/offline_resources_in_firefox +# Added by: louisremi +text/cache-manifest appcache manifest + +# What: node binary buffer format +# Why: semi-standard extension w/in the node community +# Added by: tootallnate +application/octet-stream buffer + +# What: The "protected" MP-4 formats used by iTunes. +# Why: Required for streaming music to browsers (?) +# Added by: broofa +application/mp4 m4p +audio/mp4 m4a + +# What: Music playlist format (http://en.wikipedia.org/wiki/M3U) +# Why: See https://github.com/bentomas/node-mime/pull/6 +# Added by: mjrusso +application/x-mpegURL m3u8 + +# What: Video format, Part of RFC1890 +# Why: See https://github.com/bentomas/node-mime/pull/6 +# Added by: mjrusso +video/MP2T ts + +# What: The FLAC lossless codec format +# Why: Streaming and serving FLAC audio +# Added by: jacobrask +audio/flac flac + +# What: EventSource mime type +# Why: mime type of Server-Sent Events stream +# http://www.w3.org/TR/eventsource/#text-event-stream +# Added by: francois2metz +text/event-stream event-stream + +# What: Mozilla App manifest mime type +# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests +# Added by: ednapiranha +application/x-web-app-manifest+json webapp + +# What: Matroska Mime Types +# Why: http://en.wikipedia.org/wiki/Matroska +# Added by: aduncan88 +video/x-matroska mkv +audio/x-matroska mka diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json new file mode 100644 index 0000000..1645ad7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json @@ -0,0 +1,38 @@ +{ + "name": "send", + "version": "0.1.0", + "description": "Better streaming static file server with Range and conditional-GET support", + "keywords": [ + "static", + "file", + "server" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": { + "debug": "*", + "mime": "1.2.6", + "fresh": "0.1.0", + "range-parser": "0.0.4" + }, + "devDependencies": { + "mocha": "*", + "should": "*", + "supertest": "0.0.1", + "connect": "2.x" + }, + "scripts": { + "test": "make test" + }, + "main": "index", + "readme": "\n# send\n\n Send is Connect's `static()` extracted for generalized use, a streaming static file\n server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.\n\n## Installation\n\n $ npm install send\n\n## Examples\n\n Small:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n send(req, req.url).pipe(res);\n});\n```\n\n Serving from a root directory with custom error-handling:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n // your custom error-handling logic:\n function error(err) {\n res.statusCode = err.status || 500;\n res.end(err.message);\n }\n\n // your custom directory handling logic:\n function redirect() {\n res.statusCode = 301;\n res.setHeader('Location', req.url + '/');\n res.end('Redirecting to ' + req.url + '/');\n }\n\n // transfer arbitrary files from within\n // /www/example.com/public/*\n send(req, url.parse(req.url).pathname)\n .root('/www/example.com/public')\n .on('error', error)\n .on('directory', redirect)\n .pipe(res);\n});\n```\n\n## API\n\n### Events\n\n - `error` an error occurred `(err)`\n - `directory` a directory was requested\n - `stream` file streaming has started `(stream)`\n - `end` streaming has completed\n\n### .root(dir)\n\n Serve files relative to `path`. Aliased as `.from(dir)`.\n\n### .index(path)\n\n By default send supports \"index.html\" files, to disable this\n invoke `.index(false)` or to supply a new index pass a string.\n\n### .maxage(ms)\n\n Provide a max-age in milliseconds for http caching, defaults to 0.\n\n## Error-handling\n\n By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.\n\n## Caching\n\n It does _not_ perform internal caching, you should use a reverse proxy cache such\n as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;).\n\n## Debugging\n\n To enable `debug()` instrumentation output export __DEBUG__:\n\n```\n$ DEBUG=send node app\n```\n\n## Running tests\n\n```\n$ npm install\n$ make test\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "send@0.1.0", + "dist": { + "shasum": "402c8ef02f0c2be9e2fc33d60a69dc9f4f3fb06c" + }, + "_from": "send@0.1.0", + "_resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/package.json b/nodejs-mysql-tutorial/node_modules/express/package.json new file mode 100644 index 0000000..b5d7b2a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/package.json @@ -0,0 +1,88 @@ +{ + "name": "express", + "description": "Sinatra inspired web development framework", + "version": "3.2.5", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "contributors": [ + { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + { + "name": "Aaron Heckmann", + "email": "aaron.heckmann+github@gmail.com" + }, + { + "name": "Ciaran Jessup", + "email": "ciaranj@gmail.com" + }, + { + "name": "Guillermo Rauch", + "email": "rauchg@gmail.com" + } + ], + "dependencies": { + "connect": "2.7.10", + "commander": "0.6.1", + "range-parser": "0.0.4", + "mkdirp": "0.3.4", + "cookie": "0.1.0", + "buffer-crc32": "0.2.1", + "fresh": "0.1.0", + "methods": "0.0.1", + "send": "0.1.0", + "cookie-signature": "1.0.1", + "debug": "*" + }, + "devDependencies": { + "ejs": "*", + "mocha": "*", + "jade": "*", + "hjs": "*", + "stylus": "*", + "should": "*", + "connect-redis": "*", + "marked": "*", + "supertest": "0.6.0" + }, + "keywords": [ + "express", + "framework", + "sinatra", + "web", + "rest", + "restful", + "router", + "app", + "api" + ], + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/express" + }, + "main": "index", + "bin": { + "express": "./bin/express" + }, + "scripts": { + "prepublish": "npm prune", + "test": "make test" + }, + "engines": { + "node": "*" + }, + "readme": "![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)\n\n Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express)\n\n```js\nvar express = require('express');\nvar app = express();\n\napp.get('/', function(req, res){\n res.send('Hello World');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n $ npm install -g express\n $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n $ npm install\n\n Start the server:\n\n $ node app\n\n## Features\n\n * Built on [Connect](http://github.com/senchalabs/connect)\n * Robust routing\n * HTTP helpers (redirection, caching, etc)\n * View system supporting 14+ template engines\n * Content negotiation\n * Focus on high performance\n * Environment based configuration\n * Executable for generating applications quickly\n * High test coverage\n\n## Philosophy\n\n The Express philosophy is to provide small, robust tooling for HTTP servers. Making\n it a great solution for single page applications, web sites, hybrids, or public\n HTTP APIs.\n\n Built on Connect you can use _only_ what you need, and nothing more, applications\n can be as big or as small as you like, even a single file. Express does\n not force you to use any specific ORM or template engine. With support for over\n 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)\n you can quickly craft your perfect framework.\n\n## More Information\n\n * Join #express on freenode\n * [Google Group](http://groups.google.com/group/express-js) for discussion\n * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)\n * [Русскоязычная документация](http://jsman.ru/express/)\n * Run express examples [online](https://runnable.com/express)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite deps:\n\n $ git clone git://github.com/visionmedia/express.git --depth 1\n $ cd express\n $ npm install\n\nthen run whichever tests you want:\n\n $ node examples/content-negotiation\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n $ npm install\n\nthen run the tests:\n\n $ make test\n\n## Contributors\n\n```\nproject: express\ncommits: 3559\nactive : 468 days\nfiles : 237\nauthors:\n 1891\tTj Holowaychuk 53.1%\n 1285\tvisionmedia 36.1%\n 182\tTJ Holowaychuk 5.1%\n 54\tAaron Heckmann 1.5%\n 34\tcsausdev 1.0%\n 26\tciaranj 0.7%\n 21\tRobert Sköld 0.6%\n 6\tGuillermo Rauch 0.2%\n 3\tDav Glass 0.1%\n 3\tNick Poulden 0.1%\n 2\tRandy Merrill 0.1%\n 2\tBenny Wong 0.1%\n 2\tHunter Loftis 0.1%\n 2\tJake Gordon 0.1%\n 2\tBrian McKinney 0.1%\n 2\tRoman Shtylman 0.1%\n 2\tBen Weaver 0.1%\n 2\tDave Hoover 0.1%\n 2\tEivind Fjeldstad 0.1%\n 2\tDaniel Shaw 0.1%\n 1\tMatt Colyer 0.0%\n 1\tPau Ramon 0.0%\n 1\tPero Pejovic 0.0%\n 1\tPeter Rekdal Sunde 0.0%\n 1\tRaynos 0.0%\n 1\tTeng Siong Ong 0.0%\n 1\tViktor Kelemen 0.0%\n 1\tctide 0.0%\n 1\t8bitDesigner 0.0%\n 1\tisaacs 0.0%\n 1\tmgutz 0.0%\n 1\tpikeas 0.0%\n 1\tshuwatto 0.0%\n 1\ttstrimple 0.0%\n 1\tewoudj 0.0%\n 1\tAdam Sanderson 0.0%\n 1\tAndrii Kostenko 0.0%\n 1\tAndy Hiew 0.0%\n 1\tArpad Borsos 0.0%\n 1\tAshwin Purohit 0.0%\n 1\tBenjen 0.0%\n 1\tDarren Torpey 0.0%\n 1\tGreg Ritter 0.0%\n 1\tGregory Ritter 0.0%\n 1\tJames Herdman 0.0%\n 1\tJim Snodgrass 0.0%\n 1\tJoe McCann 0.0%\n 1\tJonathan Dumaine 0.0%\n 1\tJonathan Palardy 0.0%\n 1\tJonathan Zacsh 0.0%\n 1\tJustin Lilly 0.0%\n 1\tKen Sato 0.0%\n 1\tMaciej Małecki 0.0%\n 1\tMasahiro Hayashi 0.0%\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/visionmedia/express/issues" + }, + "_id": "express@3.2.5", + "dist": { + "shasum": "91f59640b48a064cea7b22811f2c027533b819ca" + }, + "_from": "express@3.2.5", + "_resolved": "https://registry.npmjs.org/express/-/express-3.2.5.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/express/test.js b/nodejs-mysql-tutorial/node_modules/express/test.js new file mode 100644 index 0000000..2b4b357 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/express/test.js @@ -0,0 +1,17 @@ +var express = require('./'); +var app = express(); + +express.request.toJSON = function(){ + return { + method: this.method, + url: this.url, + header: this.headers + } +}; + +app.get('*', function(req, res){ + console.log(JSON.stringify(req)); + res.send(200); +}); + +app.listen(4000) diff --git a/nodejs-mysql-tutorial/node_modules/jade/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/.npmignore new file mode 100644 index 0000000..fdc7b89 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/.npmignore @@ -0,0 +1,14 @@ +test +support +benchmarks +examples +lib-cov +coverage.html +.gitmodules +.travis.yml +History.md +Makefile +test/ +support/ +benchmarks/ +examples/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/LICENSE new file mode 100644 index 0000000..8ad0e0d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2009-2010 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/Readme.md new file mode 100644 index 0000000..1501185 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/Readme.md @@ -0,0 +1,1308 @@ +# Jade - template engine +[![Build Status](https://secure.travis-ci.org/visionmedia/jade.png)](http://travis-ci.org/visionmedia/jade) +[![Dependency Status](https://gemnasium.com/visionmedia/jade.png)](https://gemnasium.com/visionmedia/jade) +[![NPM version](https://badge.fury.io/js/jade.png)](http://badge.fury.io/js/jade) + + Jade is a high performance template engine heavily influenced by [Haml](http://haml-lang.com) + and implemented with JavaScript for [node](http://nodejs.org). For discussion join the [Google Group](http://groups.google.com/group/jadejs). + +## Anouncment + +Jade version 0.31.0 deprecated implicit text only support for scripts and styles. To fix this all you need to do is add a `.` character after the script or style tag. + +It is hoped that this change will make jade easier for newcommers to learn without affecting the power of the language or leading to excessive verboseness. + +If you have a lot of jade files that need fixing you can use [fix-jade](https://github.com/ForbesLindesay/fix-jade) to attempt to automate the process. + +## Test drive + + You can test drive Jade online [here](http://naltatis.github.com/jade-syntax-docs). + +## README Contents + +- [Features](#a1) +- [Implementations](#a2) +- [Installation](#a3) +- [Browser Support](#a4) +- [Public API](#a5) +- [Syntax](#a6) + - [Line Endings](#a6-1) + - [Tags](#a6-2) + - [Tag Text](#a6-3) + - [Comments](#a6-4) + - [Block Comments](#a6-5) + - [Nesting](#a6-6) + - [Block Expansion](#a6-7) + - [Case](#a6-8) + - [Attributes](#a6-9) + - [HTML](#a6-10) + - [Doctypes](#a6-11) +- [Filters](#a7) +- [Code](#a8) +- [Iteration](#a9) +- [Conditionals](#a10) +- [Template inheritance](#a11) +- [Block append / prepend](#a12) +- [Includes](#a13) +- [Mixins](#a14) +- [Generated Output](#a15) +- [Example Makefile](#a16) +- [jade(1)](#a17) +- [Tutorials](#a18) +- [License](#a19) + + +## Features + + - client-side support + - great readability + - flexible indentation + - block-expansion + - mixins + - static includes + - attribute interpolation + - code is escaped by default for security + - contextual error reporting at compile & run time + - executable for compiling jade templates via the command line + - html 5 mode (the default doctype) + - optional memory caching + - combine dynamic and static tag classes + - parse tree manipulation via _filters_ + - template inheritance + - block append / prepend + - supports [Express JS](http://expressjs.com) out of the box + - transparent iteration over objects, arrays, and even non-enumerables via `each` + - block comments + - no tag prefix + - filters + - :stylus must have [stylus](http://github.com/LearnBoost/stylus) installed + - :less must have [less.js](http://github.com/cloudhead/less.js) installed + - :markdown must have [markdown-js](http://github.com/evilstreak/markdown-js), [node-discount](http://github.com/visionmedia/node-discount), or [marked](http://github.com/chjj/marked) installed + - :cdata + - :coffeescript must have [coffee-script](http://jashkenas.github.com/coffee-script/) installed + - [Emacs Mode](https://github.com/brianc/jade-mode) + - [Vim Syntax](https://github.com/digitaltoad/vim-jade) + - [TextMate Bundle](http://github.com/miksago/jade-tmbundle) + - [Coda/SubEtha syntax Mode](https://github.com/aaronmccall/jade.mode) + - [Screencasts](http://tjholowaychuk.com/post/1004255394/jade-screencast-template-engine-for-nodejs) + - [html2jade](https://github.com/donpark/html2jade) converter + + +## Implementations + + - [php](http://github.com/everzet/jade.php) + - [scala](http://scalate.fusesource.org/versions/snapshot/documentation/scaml-reference.html) + - [ruby](https://github.com/slim-template/slim) + - [python](https://github.com/SyrusAkbary/pyjade) + - [java](https://github.com/neuland/jade4j) + + +## Installation + +via npm: + +```bash +$ npm install jade +``` + + +## Browser Support + + To compile jade to a single file compatible for client-side use simply execute: + +```bash +$ make jade.js +``` + + Alternatively, if uglifyjs is installed via npm (`npm install uglify-js`) you may execute the following which will create both files. However each release builds these for you. + +```bash +$ make jade.min.js +``` + + By default Jade instruments templates with line number statements such as `__.lineno = 3` for debugging purposes. When used in a browser it's useful to minimize this boiler plate, you can do so by passing the option `{ compileDebug: false }`. The following template + +```jade +p Hello #{name} +``` + + Can then be as small as the following generated function: + +```js +function anonymous(locals, attrs, escape, rethrow) { + var buf = []; + with (locals || {}) { + var interp; + buf.push('\n

    Hello ' + escape((interp = name) == null ? '' : interp) + '\n

    '); + } + return buf.join(""); +} +``` + + Through the use of Jade's `./runtime.js` you may utilize these pre-compiled templates on the client-side _without_ Jade itself, all you need is the associated utility functions (in runtime.js), which are then available as `jade.attrs`, `jade.escape` etc. To enable this you should pass `{ client: true }` to `jade.compile()` to tell Jade to reference the helper functions + via `jade.attrs`, `jade.escape` etc. + +```js +function anonymous(locals, attrs, escape, rethrow) { + var attrs = jade.attrs, escape = jade.escape, rethrow = jade.rethrow; + var buf = []; + with (locals || {}) { + var interp; + buf.push('\n

    Hello ' + escape((interp = name) == null ? '' : interp) + '\n

    '); + } + return buf.join(""); +} +``` + +
    +## Public API + +```js +var jade = require('jade'); + +// Compile a function +var fn = jade.compile('string of jade', options); +fn(locals); +``` + +### Options + + - `self` Use a `self` namespace to hold the locals _(false by default)_ + - `locals` Local variable object + - `filename` Used in exceptions, and required when using includes + - `debug` Outputs tokens and function body generated + - `compiler` Compiler to replace jade's default + - `compileDebug` When `false` no debug instrumentation is compiled + - `pretty` Add pretty-indentation whitespace to output _(false by default)_ + + +## Syntax + + +### Line Endings + +**CRLF** and **CR** are converted to **LF** before parsing. + + +### Tags + +A tag is simply a leading word: + +```jade +html +``` + +for example is converted to `` + +tags can also have ids: + +```jade +div#container +``` + +which would render `
    ` + +how about some classes? + +```jade +div.user-details +``` + +renders `
    ` + +multiple classes? _and_ an id? sure: + +```jade +div#foo.bar.baz +``` + +renders `
    ` + +div div div sure is annoying, how about: + +```jade +#foo +.bar +``` + +which is syntactic sugar for what we have already been doing, and outputs: + +```html +
    +``` + +
    +### Tag Text + +Simply place some content after the tag: + +```jade +p wahoo! +``` + +renders `

    wahoo!

    `. + +well cool, but how about large bodies of text: + +```jade +p + | foo bar baz + | rawr rawr + | super cool + | go jade go +``` + +renders `

    foo bar baz rawr.....

    ` + +interpolation? yup! both types of text can utilize interpolation, +if we passed `{ name: 'tj', email: 'tj@vision-media.ca' }` to the compiled function we can do the following: + +```jade +#user #{name} <#{email}> +``` + +outputs `
    tj <tj@vision-media.ca>
    ` + +Actually want `#{}` for some reason? escape it! + +```jade +p \#{something} +``` + +now we have `

    #{something}

    ` + +We can also utilize the unescaped variant `!{html}`, so the following +will result in a literal script tag: + +```jade +- var html = "" +| !{html} +``` + +Nested tags that also contain text can optionally use a text block: + +```jade +label + | Username: + input(name='user[name]') +``` + +or immediate tag text: + +```jade +label Username: + input(name='user[name]') +``` + +As an alternative, we may use a trailing `.` to indicate a text block, for example: + +```jade +p. + foo asdf + asdf + asdfasdfaf + asdf + asd. +``` + +outputs: + +```html +

    foo asdf +asdf + asdfasdfaf + asdf +asd. +

    +``` + +This however differs from a trailing `.` followed by a space, which although is ignored by the Jade parser, tells Jade that this period is a literal: + +```jade +p . +``` + +outputs: + +```html +

    .

    +``` + +It should be noted that text blocks should be doubled escaped. For example if you desire the following output. + +```html +

    foo\bar

    +``` + +use: + +```jade +p. + foo\\bar +``` + +
    +### Comments + +Single line comments currently look the same as JavaScript comments, +aka `//` and must be placed on their own line: + +```jade +// just some paragraphs +p foo +p bar +``` + +would output + +```html + +

    foo

    +

    bar

    +``` + +Jade also supports unbuffered comments, by simply adding a hyphen: + +```jade +//- will not output within markup +p foo +p bar +``` + +outputting + +```html +

    foo

    +

    bar

    +``` + +
    +### Block Comments + + A block comment is legal as well: + +```jade +body + // + #content + h1 Example +``` + +outputting + +```html + + + +``` + +Jade supports conditional-comments as well, for example: + +```jade +head + //if lt IE 8 + script(src='/ie-sucks.js') +``` + +outputs: + +```html + + + +``` + + +### Nesting + + Jade supports nesting to define the tags in a natural way: + +```jade +ul + li.first + a(href='#') foo + li + a(href='#') bar + li.last + a(href='#') baz +``` + + +### Block Expansion + + Block expansion allows you to create terse single-line nested tags, + the following example is equivalent to the nesting example above. + +```jade +ul + li.first: a(href='#') foo + li: a(href='#') bar + li.last: a(href='#') baz +``` + + +### Case + + The case statement takes the following form: + +```jade +html + body + friends = 10 + case friends + when 0 + p you have no friends + when 1 + p you have a friend + default + p you have #{friends} friends +``` + + Block expansion may also be used: + +```jade +friends = 5 + +html + body + case friends + when 0: p you have no friends + when 1: p you have a friend + default: p you have #{friends} friends +``` + + +### Attributes + +Jade currently supports `(` and `)` as attribute delimiters. + +```jade +a(href='/login', title='View login page') Login +``` + +When a value is `undefined` or `null` the attribute is _not_ added, +so this is fine, it will not compile `something="null"`. + +```jade +div(something=null) +``` + +Boolean attributes are also supported: + +```jade +input(type="checkbox", checked) +``` + +Boolean attributes with code will only output the attribute when `true`: + +```jade +input(type="checkbox", checked=someValue) +``` + +Multiple lines work too: + +```jade +input(type='checkbox', + name='agreement', + checked) +``` + +Multiple lines without the comma work fine: + +```jade +input(type='checkbox' + name='agreement' + checked) +``` + +Funky whitespace? fine: + +```jade +input( + type='checkbox' + name='agreement' + checked) +``` + +Colons work: + +```jade +rss(xmlns:atom="atom") +``` + +Suppose we have the `user` local `{ id: 12, name: 'tobi' }` +and we wish to create an anchor tag with `href` pointing to "/user/12" +we could use regular javascript concatenation: + +```jade +a(href='/user/' + user.id)= user.name +``` + +or we could use jade's interpolation, which I added because everyone +using Ruby or CoffeeScript seems to think this is legal js..: + +```jade +a(href='/user/#{user.id}')= user.name +``` + +The `class` attribute is special-cased when an array is given, +allowing you to pass an array such as `bodyClasses = ['user', 'authenticated']` directly: + +```jade +body(class=bodyClasses) +``` + + +### HTML + + Inline html is fine, we can use the pipe syntax to + write arbitrary text, in this case some html: + +```jade +html + body + |

    Title

    + |

    foo bar baz

    +``` + + Or we can use the trailing `.` to indicate to Jade that we + only want text in this block, allowing us to omit the pipes: + +```jade +html + body. +

    Title

    +

    foo bar baz

    +``` + + Both of these examples yield the same result: + +```html +

    Title

    +

    foo bar baz

    + +``` + + The same rule applies for anywhere you can have text + in jade, raw html is fine: + +```jade +html + body + h1 User #{name} +``` + +
    +### Doctypes + +To add a doctype simply use `!!!`, or `doctype` followed by an optional value: + +```jade +!!! +``` + +or + +```jade +doctype +``` + +Will output the _html 5_ doctype, however: + +```jade +!!! transitional +``` + +Will output the _transitional_ doctype. + +Doctypes are case-insensitive, so the following are equivalent: + +```jade +doctype Basic +doctype basic +``` + +it's also possible to simply pass a doctype literal: + +```jade +doctype html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" +``` + +yielding: + +```html + +``` + +Below are the doctypes defined by default, which can easily be extended: + +```js +var doctypes = exports.doctypes = { + '5': '', + 'default': '', + 'xml': '', + 'transitional': '', + 'strict': '', + 'frameset': '', + '1.1': '', + 'basic': '', + 'mobile': '' +}; +``` + +To alter the default simply change: + +```js +jade.doctypes.default = 'whatever you want'; +``` + + +## Filters + +Filters are prefixed with `:`, for example `:markdown` and +pass the following block of text to an arbitrary function for processing. View the _features_ +at the top of this document for available filters. + +```jade +body + :markdown + Woah! jade _and_ markdown, very **cool** + we can even link to [stuff](http://google.com) +``` + +Renders: + +```html +

    Woah! jade and markdown, very cool we can even link to stuff

    +``` + + +## Code + +Jade currently supports three classifications of executable code. The first +is prefixed by `-`, and is not buffered: + +```jade +- var foo = 'bar'; +``` + +This can be used for conditionals, or iteration: + +```jade +- for (var key in obj) + p= obj[key] +``` + +Due to Jade's buffering techniques the following is valid as well: + +```jade +- if (foo) + ul + li yay + li foo + li worked +- else + p oh no! didnt work +``` + +Hell, even verbose iteration: + +```jade +- if (items.length) + ul + - items.forEach(function(item){ + li= item + - }) +``` + +Anything you want! + +Next up we have _escaped_ buffered code, which is used to +buffer a return value, which is prefixed by `=`: + +```jade +- var foo = 'bar' += foo +h1= foo +``` + +Which outputs `bar

    bar

    `. Code buffered by `=` is escaped +by default for security, however to output unescaped return values +you may use `!=`: + +```jade +p!= aVarContainingMoreHTML +``` + + Jade also has designer-friendly variants, making the literal JavaScript + more expressive and declarative. For example the following assignments + are equivalent, and the expression is still regular javascript: + +```jade +- var foo = 'foo ' + 'bar' +foo = 'foo ' + 'bar' +``` + + Likewise Jade has first-class `if`, `else if`, `else`, `until`, `while`, `unless` among others, however you must remember that the expressions are still regular javascript: + +```jade +if foo == 'bar' + ul + li yay + li foo + li worked +else + p oh no! didnt work +``` + +
    +## Iteration + + Along with vanilla JavaScript Jade also supports a subset of + constructs that allow you to create more designer-friendly templates, + one of these constructs is `each`, taking the form: + +```jade +each VAL[, KEY] in OBJ +``` + +An example iterating over an array: + +```jade +- var items = ["one", "two", "three"] +each item in items + li= item +``` + +outputs: + +```html +
  • one
  • +
  • two
  • +
  • three
  • +``` + +iterating an array with index: + +```jade +items = ["one", "two", "three"] +each item, i in items + li #{item}: #{i} +``` + +outputs: + +```html +
  • one: 0
  • +
  • two: 1
  • +
  • three: 2
  • +``` + +iterating an object's keys and values: + +```jade +obj = { foo: 'bar' } +each val, key in obj + li #{key}: #{val} +``` + +would output `
  • foo: bar
  • ` + +Internally Jade converts these statements to regular +JavaScript loops such as `users.forEach(function(user){`, +so lexical scope and nesting applies as it would with regular +JavaScript: + +```jade +each user in users + each role in user.roles + li= role +``` + + You may also use `for` if you prefer: + +```jade +for user in users + for role in user.roles + li= role +``` + +
    +## Conditionals + + Jade conditionals are equivalent to those using the code (`-`) prefix, + however allow you to ditch parenthesis to become more designer friendly, + however keep in mind the expression given is _regular_ JavaScript: + +```jade +for user in users + if user.role == 'admin' + p #{user.name} is an admin + else + p= user.name +``` + + is equivalent to the following using vanilla JavaScript literals: + +```jade +for user in users + - if (user.role == 'admin') + p #{user.name} is an admin + - else + p= user.name +``` + + Jade also provides `unless` which is equivalent to `if (!(expr))`: + +```jade +for user in users + unless user.isAnonymous + p + | Click to view + a(href='/users/' + user.id)= user.name +``` + + +## Template inheritance + + Jade supports template inheritance via the `block` and `extends` keywords. A block is simply a "block" of Jade that may be replaced within a child template, this process is recursive. To activate template inheritance in Express 2.x you must add: `app.set('view options', { layout: false });`. + + Jade blocks can provide default content if desired, however optional as shown below by `block scripts`, `block content`, and `block foot`. + +```jade +html + head + h1 My Site - #{title} + block scripts + script(src='/jquery.js') + body + block content + block foot + #footer + p some footer content +``` + + Now to extend the layout, simply create a new file and use the `extends` directive as shown below, giving the path (with or without the .jade extension). You may now define one or more blocks that will override the parent block content, note that here the `foot` block is _not_ redefined and will output "some footer content". + +```jade +extends layout + +block scripts + script(src='/jquery.js') + script(src='/pets.js') + +block content + h1= title + each pet in pets + include pet +``` + + It's also possible to override a block to provide additional blocks, as shown in the following example where `content` now exposes a `sidebar` and `primary` block for overriding, or the child template could override `content` all together. + +```jade +extends regular-layout + +block content + .sidebar + block sidebar + p nothing + .primary + block primary + p nothing +``` + + +## Block append / prepend + + Jade allows you to _replace_ (default), _prepend_, or _append_ blocks. Suppose for example you have default scripts in a "head" block that you wish to utilize on _every_ page, you might do this: + +```jade +html + head + block head + script(src='/vendor/jquery.js') + script(src='/vendor/caustic.js') + body + block content +``` + + Now suppose you have a page of your application for a JavaScript game, you want some game related scripts as well as these defaults, you can simply `append` the block: + +```jade +extends layout + +block append head + script(src='/vendor/three.js') + script(src='/game.js') +``` + + When using `block append` or `block prepend` the `block` is optional: + +```jade +extends layout + +append head + script(src='/vendor/three.js') + script(src='/game.js') +``` + + +## Includes + + Includes allow you to statically include chunks of Jade, + or other content like css, or html which lives in separate files. The classical example is including a header and footer. Suppose we have the following directory structure: + + ./layout.jade + ./includes/ + ./head.jade + ./foot.jade + +and the following _layout.jade_: + +```jade +html + include includes/head + body + h1 My Site + p Welcome to my super amazing site. + include includes/foot +``` + +both includes _includes/head_ and _includes/foot_ are +read relative to the `filename` option given to _layout.jade_, +which should be an absolute path to this file, however Express +does this for you. Include then parses these files, and injects +the AST produced to render what you would expect: + +```html + + + My Site + + + +

    My Site

    +

    Welcome to my super lame site.

    + + + +``` + +As mentioned `include` can be used to include other content +such as html or css. By providing an extension, Jade will +read that file in, apply any [filter](#a7) matching the file's +extension, and insert that content into the output. + +```jade +html + head + //- css and js have simple filters that wrap them in + '; + } else if (transformers[name].outputFormat === 'xml') { + res = res.replace(/'/g, '''); + } + } else { + throw new Error('unknown filter ":' + name + '"'); + } + return res; +} +filter.exists = function (name, str, options) { + return typeof filter[name] === 'function' || transformers[name]; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/index.js b/nodejs-mysql-tutorial/node_modules/jade/lib/index.js new file mode 100644 index 0000000..6a783c2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/index.js @@ -0,0 +1 @@ +jade.js \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js b/nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js new file mode 100644 index 0000000..491de0b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js @@ -0,0 +1,28 @@ + +/*! + * Jade - inline tags + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = [ + 'a' + , 'abbr' + , 'acronym' + , 'b' + , 'br' + , 'code' + , 'em' + , 'font' + , 'i' + , 'img' + , 'ins' + , 'kbd' + , 'map' + , 'samp' + , 'small' + , 'span' + , 'strong' + , 'sub' + , 'sup' +]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/jade.js b/nodejs-mysql-tutorial/node_modules/jade/lib/jade.js new file mode 100644 index 0000000..22cbae0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/jade.js @@ -0,0 +1,242 @@ +/*! + * Jade + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Parser = require('./parser') + , Lexer = require('./lexer') + , Compiler = require('./compiler') + , runtime = require('./runtime') + , addWith = require('with') + , fs = require('fs'); + +/** + * Library version. + */ + +exports.version = '0.30.0'; + +/** + * Expose self closing tags. + */ + +exports.selfClosing = require('./self-closing'); + +/** + * Default supported doctypes. + */ + +exports.doctypes = require('./doctypes'); + +/** + * Text filters. + */ + +exports.filters = require('./filters'); + +/** + * Utilities. + */ + +exports.utils = require('./utils'); + +/** + * Expose `Compiler`. + */ + +exports.Compiler = Compiler; + +/** + * Expose `Parser`. + */ + +exports.Parser = Parser; + +/** + * Expose `Lexer`. + */ + +exports.Lexer = Lexer; + +/** + * Nodes. + */ + +exports.nodes = require('./nodes'); + +/** + * Jade runtime helpers. + */ + +exports.runtime = runtime; + +/** + * Template function cache. + */ + +exports.cache = {}; + +/** + * Parse the given `str` of jade and return a function body. + * + * @param {String} str + * @param {Object} options + * @return {String} + * @api private + */ + +function parse(str, options){ + try { + // Parse + var parser = new (options.parser || Parser)(str, options.filename, options); + + // Compile + var compiler = new (options.compiler || Compiler)(parser.parse(), options) + , js = compiler.compile(); + + // Debug compiler + if (options.debug) { + console.error('\nCompiled Function:\n\n\033[90m%s\033[0m', js.replace(/^/gm, ' ')); + } + + return '' + + 'var buf = [];\n' + + (options.self + ? 'var self = locals || {};\n' + js + : addWith('locals || {}', js, ['jade', 'buf'])) + ';' + + 'return buf.join("");'; + } catch (err) { + parser = parser.context(); + runtime.rethrow(err, parser.filename, parser.lexer.lineno); + } +} + +/** + * Strip any UTF-8 BOM off of the start of `str`, if it exists. + * + * @param {String} str + * @return {String} + * @api private + */ + +function stripBOM(str){ + return 0xFEFF == str.charCodeAt(0) + ? str.substring(1) + : str; +} + +/** + * Compile a `Function` representation of the given jade `str`. + * + * Options: + * + * - `compileDebug` when `false` debugging code is stripped from the compiled template + * - `filename` used to improve errors when `compileDebug` is not `false` + * + * @param {String} str + * @param {Options} options + * @return {Function} + * @api public + */ + +exports.compile = function(str, options){ + var options = options || {} + , filename = options.filename + ? JSON.stringify(options.filename) + : 'undefined' + , fn; + + str = stripBOM(String(str)); + + if (options.compileDebug !== false) { + fn = [ + 'jade.debug = [{ lineno: 1, filename: ' + filename + ' }];' + , 'try {' + , parse(str, options) + , '} catch (err) {' + , ' jade.rethrow(err, jade.debug[0].filename, jade.debug[0].lineno);' + , '}' + ].join('\n'); + } else { + fn = parse(str, options); + } + + if (options.client) return new Function('locals', fn) + fn = new Function('locals, jade', fn) + return function(locals){ return fn(locals, Object.create(runtime)) } +}; + +/** + * Render the given `str` of jade and invoke + * the callback `fn(err, str)`. + * + * Options: + * + * - `cache` enable template caching + * - `filename` filename required for `include` / `extends` and caching + * + * @param {String} str + * @param {Object|Function} options or fn + * @param {Function} fn + * @api public + */ + +exports.render = function(str, options, fn){ + // swap args + if ('function' == typeof options) { + fn = options, options = {}; + } + + // cache requires .filename + if (options.cache && !options.filename) { + return fn(new Error('the "filename" option is required for caching')); + } + + try { + var path = options.filename; + var tmpl = options.cache + ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options)) + : exports.compile(str, options); + fn(null, tmpl(options)); + } catch (err) { + fn(err); + } +}; + +/** + * Render a Jade file at the given `path` and callback `fn(err, str)`. + * + * @param {String} path + * @param {Object|Function} options or callback + * @param {Function} fn + * @api public + */ + +exports.renderFile = function(path, options, fn){ + var key = path + ':string'; + + if ('function' == typeof options) { + fn = options, options = {}; + } + + try { + options.filename = path; + var str = options.cache + ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) + : fs.readFileSync(path, 'utf8'); + exports.render(str, options, fn); + } catch (err) { + fn(err); + } +}; + +/** + * Express support. + */ + +exports.__express = exports.renderFile; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js b/nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js new file mode 100644 index 0000000..ac0ce2b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js @@ -0,0 +1,782 @@ +/*! + * Jade - Lexer + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +var utils = require('./utils'); +var parseJSExpression = require('character-parser').parseMax; + +/** + * Initialize `Lexer` with the given `str`. + * + * Options: + * + * - `colons` allow colons for attr delimiters + * + * @param {String} str + * @param {Object} options + * @api private + */ + +var Lexer = module.exports = function Lexer(str, options) { + options = options || {}; + this.input = str.replace(/\r\n|\r/g, '\n'); + this.colons = options.colons; + this.deferredTokens = []; + this.lastIndents = 0; + this.lineno = 1; + this.stash = []; + this.indentStack = []; + this.indentRe = null; + this.pipeless = false; +}; + +/** + * Lexer prototype. + */ + +Lexer.prototype = { + + /** + * Construct a token with the given `type` and `val`. + * + * @param {String} type + * @param {String} val + * @return {Object} + * @api private + */ + + tok: function(type, val){ + return { + type: type + , line: this.lineno + , val: val + } + }, + + /** + * Consume the given `len` of input. + * + * @param {Number} len + * @api private + */ + + consume: function(len){ + this.input = this.input.substr(len); + }, + + /** + * Scan for `type` with the given `regexp`. + * + * @param {String} type + * @param {RegExp} regexp + * @return {Object} + * @api private + */ + + scan: function(regexp, type){ + var captures; + if (captures = regexp.exec(this.input)) { + this.consume(captures[0].length); + return this.tok(type, captures[1]); + } + }, + + /** + * Defer the given `tok`. + * + * @param {Object} tok + * @api private + */ + + defer: function(tok){ + this.deferredTokens.push(tok); + }, + + /** + * Lookahead `n` tokens. + * + * @param {Number} n + * @return {Object} + * @api private + */ + + lookahead: function(n){ + var fetch = n - this.stash.length; + while (fetch-- > 0) this.stash.push(this.next()); + return this.stash[--n]; + }, + + /** + * Return the indexOf `(` or `{` or `[` / `)` or `}` or `]` delimiters. + * + * @return {Number} + * @api private + */ + + bracketExpression: function(skip){ + skip = skip || 0; + var start = this.input[skip]; + if (start != '(' && start != '{' && start != '[') throw new Error('unrecognized start character'); + var end = ({'(': ')', '{': '}', '[': ']'})[start]; + var range = parseJSExpression(this.input, {start: skip + 1}); + if (this.input[range.end] !== end) throw new Error('start character ' + start + ' does not match end character ' + this.input[range.end]); + return range; + }, + + /** + * Stashed token. + */ + + stashed: function() { + return this.stash.length + && this.stash.shift(); + }, + + /** + * Deferred token. + */ + + deferred: function() { + return this.deferredTokens.length + && this.deferredTokens.shift(); + }, + + /** + * end-of-source. + */ + + eos: function() { + if (this.input.length) return; + if (this.indentStack.length) { + this.indentStack.shift(); + return this.tok('outdent'); + } else { + return this.tok('eos'); + } + }, + + /** + * Blank line. + */ + + blank: function() { + var captures; + if (captures = /^\n *\n/.exec(this.input)) { + this.consume(captures[0].length - 1); + ++this.lineno; + if (this.pipeless) return this.tok('text', ''); + return this.next(); + } + }, + + /** + * Comment. + */ + + comment: function() { + var captures; + if (captures = /^ *\/\/(-)?([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('comment', captures[2]); + tok.buffer = '-' != captures[1]; + return tok; + } + }, + + /** + * Interpolated tag. + */ + + interpolation: function() { + if (/^#\{/.test(this.input)) { + var match; + try { + match = this.bracketExpression(1); + } catch (ex) { + return;//not an interpolation expression, just an unmatched open interpolation + } + + this.consume(match.end + 1); + return this.tok('interpolation', match.src); + } + }, + + /** + * Tag. + */ + + tag: function() { + var captures; + if (captures = /^(\w[-:\w]*)(\/?)/.exec(this.input)) { + this.consume(captures[0].length); + var tok, name = captures[1]; + if (':' == name[name.length - 1]) { + name = name.slice(0, -1); + tok = this.tok('tag', name); + this.defer(this.tok(':')); + while (' ' == this.input[0]) this.input = this.input.substr(1); + } else { + tok = this.tok('tag', name); + } + tok.selfClosing = !! captures[2]; + return tok; + } + }, + + /** + * Filter. + */ + + filter: function() { + return this.scan(/^:(\w+)/, 'filter'); + }, + + /** + * Doctype. + */ + + doctype: function() { + return this.scan(/^(?:!!!|doctype) *([^\n]+)?/, 'doctype'); + }, + + /** + * Id. + */ + + id: function() { + return this.scan(/^#([\w-]+)/, 'id'); + }, + + /** + * Class. + */ + + className: function() { + return this.scan(/^\.([\w-]+)/, 'class'); + }, + + /** + * Text. + */ + + text: function() { + return this.scan(/^(?:\| ?| ?)?([^\n]+)/, 'text'); + }, + + /** + * Extends. + */ + + "extends": function() { + return this.scan(/^extends? +([^\n]+)/, 'extends'); + }, + + /** + * Block prepend. + */ + + prepend: function() { + var captures; + if (captures = /^prepend +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = 'prepend' + , name = captures[1] + , tok = this.tok('block', name); + tok.mode = mode; + return tok; + } + }, + + /** + * Block append. + */ + + append: function() { + var captures; + if (captures = /^append +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = 'append' + , name = captures[1] + , tok = this.tok('block', name); + tok.mode = mode; + return tok; + } + }, + + /** + * Block. + */ + + block: function() { + var captures; + if (captures = /^block\b *(?:(prepend|append) +)?([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var mode = captures[1] || 'replace' + , name = captures[2] + , tok = this.tok('block', name); + + tok.mode = mode; + return tok; + } + }, + + /** + * Yield. + */ + + yield: function() { + return this.scan(/^yield */, 'yield'); + }, + + /** + * Include. + */ + + include: function() { + return this.scan(/^include +([^\n]+)/, 'include'); + }, + + /** + * Case. + */ + + "case": function() { + return this.scan(/^case +([^\n]+)/, 'case'); + }, + + /** + * When. + */ + + when: function() { + return this.scan(/^when +([^:\n]+)/, 'when'); + }, + + /** + * Default. + */ + + "default": function() { + return this.scan(/^default */, 'default'); + }, + + /** + * Assignment. + */ + + assignment: function() { + var captures; + if (captures = /^(\w+) += *([^;\n]+)( *;? *)/.exec(this.input)) { + this.consume(captures[0].length); + var name = captures[1] + , val = captures[2]; + return this.tok('code', 'var ' + name + ' = (' + val + ');'); + } + }, + + /** + * Call mixin. + */ + + call: function(){ + var captures; + if (captures = /^\+([-\w]+)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('call', captures[1]); + + // Check for args (not attributes) + if (captures = /^ *\(/.exec(this.input)) { + try { + var range = this.bracketExpression(captures[0].length - 1); + if (!/^ *[-\w]+ *=/.test(range.src)) { // not attributes + this.consume(range.end + 1); + tok.args = range.src; + } + } catch (ex) { + //not a bracket expcetion, just unmatched open parens + } + } + + return tok; + } + }, + + /** + * Mixin. + */ + + mixin: function(){ + var captures; + if (captures = /^mixin +([-\w]+)(?: *\((.*)\))?/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('mixin', captures[1]); + tok.args = captures[2]; + return tok; + } + }, + + /** + * Conditional. + */ + + conditional: function() { + var captures; + if (captures = /^(if|unless|else if|else)\b([^\n]*)/.exec(this.input)) { + this.consume(captures[0].length); + var type = captures[1] + , js = captures[2]; + + switch (type) { + case 'if': js = 'if (' + js + ')'; break; + case 'unless': js = 'if (!(' + js + '))'; break; + case 'else if': js = 'else if (' + js + ')'; break; + case 'else': js = 'else'; break; + } + + return this.tok('code', js); + } + }, + + /** + * While. + */ + + "while": function() { + var captures; + if (captures = /^while +([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + return this.tok('code', 'while (' + captures[1] + ')'); + } + }, + + /** + * Each. + */ + + each: function() { + var captures; + if (captures = /^(?:- *)?(?:each|for) +([a-zA-Z_$][\w$]*)(?: *, *([a-zA-Z_$][\w$]*))? * in *([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var tok = this.tok('each', captures[1]); + tok.key = captures[2] || '$index'; + tok.code = captures[3]; + return tok; + } + }, + + /** + * Code. + */ + + code: function() { + var captures; + if (captures = /^(!?=|-)[ \t]*([^\n]+)/.exec(this.input)) { + this.consume(captures[0].length); + var flags = captures[1]; + captures[1] = captures[2]; + var tok = this.tok('code', captures[1]); + tok.escape = flags.charAt(0) === '='; + tok.buffer = flags.charAt(0) === '=' || flags.charAt(1) === '='; + return tok; + } + }, + + /** + * Attributes. + */ + + attrs: function() { + if ('(' == this.input.charAt(0)) { + var index = this.bracketExpression().end + , str = this.input.substr(1, index-1) + , tok = this.tok('attrs') + , len = str.length + , colons = this.colons + , states = ['key'] + , escapedAttr + , key = '' + , val = '' + , quote + , c + , p; + + function state(){ + return states[states.length - 1]; + } + + function interpolate(attr) { + return attr.replace(/(\\)?#\{(.+)/g, function(_, escape, expr){ + if (escape) return _; + try { + var range = parseJSExpression(expr); + if (expr[range.end] !== '}') return _.substr(0, 2) + interpolate(_.substr(2)); + return quote + " + (" + range.src + ") + " + quote + interpolate(expr.substr(range.end + 1)); + } catch (ex) { + return _.substr(0, 2) + interpolate(_.substr(2)); + } + }); + } + + this.consume(index + 1); + tok.attrs = {}; + tok.escaped = {}; + + function parse(c) { + var real = c; + // TODO: remove when people fix ":" + if (colons && ':' == c) c = '='; + switch (c) { + case ',': + case '\n': + switch (state()) { + case 'expr': + case 'array': + case 'string': + case 'object': + val += c; + break; + default: + states.push('key'); + val = val.trim(); + key = key.trim(); + if ('' == key) return; + key = key.replace(/^['"]|['"]$/g, '').replace('!', ''); + tok.escaped[key] = escapedAttr; + tok.attrs[key] = '' == val + ? true + : interpolate(val); + key = val = ''; + } + break; + case '=': + switch (state()) { + case 'key char': + key += real; + break; + case 'val': + case 'expr': + case 'array': + case 'string': + case 'object': + val += real; + break; + default: + escapedAttr = '!' != p; + states.push('val'); + } + break; + case '(': + if ('val' == state() + || 'expr' == state()) states.push('expr'); + val += c; + break; + case ')': + if ('expr' == state() + || 'val' == state()) states.pop(); + val += c; + break; + case '{': + if ('val' == state()) states.push('object'); + val += c; + break; + case '}': + if ('object' == state()) states.pop(); + val += c; + break; + case '[': + if ('val' == state()) states.push('array'); + val += c; + break; + case ']': + if ('array' == state()) states.pop(); + val += c; + break; + case '"': + case "'": + switch (state()) { + case 'key': + states.push('key char'); + break; + case 'key char': + states.pop(); + break; + case 'string': + if (c == quote) states.pop(); + val += c; + break; + default: + states.push('string'); + val += c; + quote = c; + } + break; + case '': + break; + default: + switch (state()) { + case 'key': + case 'key char': + key += c; + break; + default: + val += c; + } + } + p = c; + } + + for (var i = 0; i < len; ++i) { + parse(str.charAt(i)); + } + + parse(','); + + if ('/' == this.input.charAt(0)) { + this.consume(1); + tok.selfClosing = true; + } + + return tok; + } + }, + + /** + * Indent | Outdent | Newline. + */ + + indent: function() { + var captures, re; + + // established regexp + if (this.indentRe) { + captures = this.indentRe.exec(this.input); + // determine regexp + } else { + // tabs + re = /^\n(\t*) */; + captures = re.exec(this.input); + + // spaces + if (captures && !captures[1].length) { + re = /^\n( *)/; + captures = re.exec(this.input); + } + + // established + if (captures && captures[1].length) this.indentRe = re; + } + + if (captures) { + var tok + , indents = captures[1].length; + + ++this.lineno; + this.consume(indents + 1); + + if (' ' == this.input[0] || '\t' == this.input[0]) { + throw new Error('Invalid indentation, you can use tabs or spaces but not both'); + } + + // blank line + if ('\n' == this.input[0]) return this.tok('newline'); + + // outdent + if (this.indentStack.length && indents < this.indentStack[0]) { + while (this.indentStack.length && this.indentStack[0] > indents) { + this.stash.push(this.tok('outdent')); + this.indentStack.shift(); + } + tok = this.stash.pop(); + // indent + } else if (indents && indents != this.indentStack[0]) { + this.indentStack.unshift(indents); + tok = this.tok('indent', indents); + // newline + } else { + tok = this.tok('newline'); + } + + return tok; + } + }, + + /** + * Pipe-less text consumed only when + * pipeless is true; + */ + + pipelessText: function() { + if (this.pipeless) { + if ('\n' == this.input[0]) return; + var i = this.input.indexOf('\n'); + if (-1 == i) i = this.input.length; + var str = this.input.substr(0, i); + this.consume(str.length); + return this.tok('text', str); + } + }, + + /** + * ':' + */ + + colon: function() { + return this.scan(/^: */, ':'); + }, + + /** + * Return the next token object, or those + * previously stashed by lookahead. + * + * @return {Object} + * @api private + */ + + advance: function(){ + return this.stashed() + || this.next(); + }, + + /** + * Return the next token object. + * + * @return {Object} + * @api private + */ + + next: function() { + return this.deferred() + || this.blank() + || this.eos() + || this.pipelessText() + || this.yield() + || this.doctype() + || this.interpolation() + || this["case"]() + || this.when() + || this["default"]() + || this["extends"]() + || this.append() + || this.prepend() + || this.block() + || this.include() + || this.mixin() + || this.call() + || this.conditional() + || this.each() + || this["while"]() + || this.assignment() + || this.tag() + || this.filter() + || this.code() + || this.id() + || this.className() + || this.attrs() + || this.indent() + || this.comment() + || this.colon() + || this.text(); + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js new file mode 100644 index 0000000..5de9b59 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js @@ -0,0 +1,77 @@ + +/*! + * Jade - nodes - Attrs + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'), + Block = require('./block'); + +/** + * Initialize a `Attrs` node. + * + * @api public + */ + +var Attrs = module.exports = function Attrs() { + this.attrs = []; +}; + +/** + * Inherit from `Node`. + */ + +Attrs.prototype.__proto__ = Node.prototype; + +/** + * Set attribute `name` to `val`, keep in mind these become + * part of a raw js object literal, so to quote a value you must + * '"quote me"', otherwise or example 'user.name' is literal JavaScript. + * + * @param {String} name + * @param {String} val + * @param {Boolean} escaped + * @return {Tag} for chaining + * @api public + */ + +Attrs.prototype.setAttribute = function(name, val, escaped){ + this.attrs.push({ name: name, val: val, escaped: escaped }); + return this; +}; + +/** + * Remove attribute `name` when present. + * + * @param {String} name + * @api public + */ + +Attrs.prototype.removeAttribute = function(name){ + for (var i = 0, len = this.attrs.length; i < len; ++i) { + if (this.attrs[i] && this.attrs[i].name == name) { + delete this.attrs[i]; + } + } +}; + +/** + * Get attribute value by `name`. + * + * @param {String} name + * @return {String} + * @api public + */ + +Attrs.prototype.getAttribute = function(name){ + for (var i = 0, len = this.attrs.length; i < len; ++i) { + if (this.attrs[i] && this.attrs[i].name == name) { + return this.attrs[i].val; + } + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js new file mode 100644 index 0000000..4f41e4a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js @@ -0,0 +1,33 @@ + +/*! + * Jade - nodes - BlockComment + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `BlockComment` with the given `block`. + * + * @param {String} val + * @param {Block} block + * @param {Boolean} buffer + * @api public + */ + +var BlockComment = module.exports = function BlockComment(val, block, buffer) { + this.block = block; + this.val = val; + this.buffer = buffer; +}; + +/** + * Inherit from `Node`. + */ + +BlockComment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js new file mode 100644 index 0000000..6bb18c9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js @@ -0,0 +1,122 @@ + +/*! + * Jade - nodes - Block + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a new `Block` with an optional `node`. + * + * @param {Node} node + * @api public + */ + +var Block = module.exports = function Block(node){ + this.nodes = []; + if (node) this.push(node); +}; + +/** + * Inherit from `Node`. + */ + +Block.prototype.__proto__ = Node.prototype; + +/** + * Block flag. + */ + +Block.prototype.isBlock = true; + +/** + * Replace the nodes in `other` with the nodes + * in `this` block. + * + * @param {Block} other + * @api private + */ + +Block.prototype.replace = function(other){ + other.nodes = this.nodes; +}; + +/** + * Pust the given `node`. + * + * @param {Node} node + * @return {Number} + * @api public + */ + +Block.prototype.push = function(node){ + return this.nodes.push(node); +}; + +/** + * Check if this block is empty. + * + * @return {Boolean} + * @api public + */ + +Block.prototype.isEmpty = function(){ + return 0 == this.nodes.length; +}; + +/** + * Unshift the given `node`. + * + * @param {Node} node + * @return {Number} + * @api public + */ + +Block.prototype.unshift = function(node){ + return this.nodes.unshift(node); +}; + +/** + * Return the "last" block, or the first `yield` node. + * + * @return {Block} + * @api private + */ + +Block.prototype.includeBlock = function(){ + var ret = this + , node; + + for (var i = 0, len = this.nodes.length; i < len; ++i) { + node = this.nodes[i]; + if (node.yield) return node; + else if (node.textOnly) continue; + else if (node.includeBlock) ret = node.includeBlock(); + else if (node.block && !node.block.isEmpty()) ret = node.block.includeBlock(); + if (ret.yield) return ret; + } + + return ret; +}; + +/** + * Return a clone of this block. + * + * @return {Block} + * @api private + */ + +Block.prototype.clone = function(){ + var clone = new Block; + for (var i = 0, len = this.nodes.length; i < len; ++i) { + clone.push(this.nodes[i].clone()); + } + return clone; +}; + diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js new file mode 100644 index 0000000..08ff033 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js @@ -0,0 +1,43 @@ + +/*! + * Jade - nodes - Case + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a new `Case` with `expr`. + * + * @param {String} expr + * @api public + */ + +var Case = exports = module.exports = function Case(expr, block){ + this.expr = expr; + this.block = block; +}; + +/** + * Inherit from `Node`. + */ + +Case.prototype.__proto__ = Node.prototype; + +var When = exports.When = function When(expr, block){ + this.expr = expr; + this.block = block; + this.debug = false; +}; + +/** + * Inherit from `Node`. + */ + +When.prototype.__proto__ = Node.prototype; + diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js new file mode 100644 index 0000000..babc675 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js @@ -0,0 +1,35 @@ + +/*! + * Jade - nodes - Code + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Code` node with the given code `val`. + * Code may also be optionally buffered and escaped. + * + * @param {String} val + * @param {Boolean} buffer + * @param {Boolean} escape + * @api public + */ + +var Code = module.exports = function Code(val, buffer, escape) { + this.val = val; + this.buffer = buffer; + this.escape = escape; + if (val.match(/^ *else/)) this.debug = false; +}; + +/** + * Inherit from `Node`. + */ + +Code.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js new file mode 100644 index 0000000..2e1469e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js @@ -0,0 +1,32 @@ + +/*! + * Jade - nodes - Comment + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Comment` with the given `val`, optionally `buffer`, + * otherwise the comment may render in the output. + * + * @param {String} val + * @param {Boolean} buffer + * @api public + */ + +var Comment = module.exports = function Comment(val, buffer) { + this.val = val; + this.buffer = buffer; +}; + +/** + * Inherit from `Node`. + */ + +Comment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js new file mode 100644 index 0000000..b8f33e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js @@ -0,0 +1,29 @@ + +/*! + * Jade - nodes - Doctype + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Doctype` with the given `val`. + * + * @param {String} val + * @api public + */ + +var Doctype = module.exports = function Doctype(val) { + this.val = val; +}; + +/** + * Inherit from `Node`. + */ + +Doctype.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js new file mode 100644 index 0000000..f54101f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js @@ -0,0 +1,35 @@ + +/*! + * Jade - nodes - Each + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize an `Each` node, representing iteration + * + * @param {String} obj + * @param {String} val + * @param {String} key + * @param {Block} block + * @api public + */ + +var Each = module.exports = function Each(obj, val, key, block) { + this.obj = obj; + this.val = val; + this.key = key; + this.block = block; +}; + +/** + * Inherit from `Node`. + */ + +Each.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js new file mode 100644 index 0000000..0d7ff6e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js @@ -0,0 +1,34 @@ + +/*! + * Jade - nodes - Filter + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node') + , Block = require('./block'); + +/** + * Initialize a `Filter` node with the given + * filter `name` and `block`. + * + * @param {String} name + * @param {Block|Node} block + * @api public + */ + +var Filter = module.exports = function Filter(name, block, attrs) { + this.name = name; + this.block = block; + this.attrs = attrs; +}; + +/** + * Inherit from `Node`. + */ + +Filter.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js new file mode 100644 index 0000000..386ad2f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js @@ -0,0 +1,20 @@ + +/*! + * Jade - nodes + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +exports.Node = require('./node'); +exports.Tag = require('./tag'); +exports.Code = require('./code'); +exports.Each = require('./each'); +exports.Case = require('./case'); +exports.Text = require('./text'); +exports.Block = require('./block'); +exports.Mixin = require('./mixin'); +exports.Filter = require('./filter'); +exports.Comment = require('./comment'); +exports.Literal = require('./literal'); +exports.BlockComment = require('./block-comment'); +exports.Doctype = require('./doctype'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js new file mode 100644 index 0000000..a8a02a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js @@ -0,0 +1,29 @@ + +/*! + * Jade - nodes - Literal + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Literal` node with the given `str. + * + * @param {String} str + * @api public + */ + +var Literal = module.exports = function Literal(str) { + this.str = str; +}; + +/** + * Inherit from `Node`. + */ + +Literal.prototype.__proto__ = Node.prototype; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js new file mode 100644 index 0000000..8407bc7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js @@ -0,0 +1,36 @@ + +/*! + * Jade - nodes - Mixin + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Attrs = require('./attrs'); + +/** + * Initialize a new `Mixin` with `name` and `block`. + * + * @param {String} name + * @param {String} args + * @param {Block} block + * @api public + */ + +var Mixin = module.exports = function Mixin(name, args, block, call){ + this.name = name; + this.args = args; + this.block = block; + this.attrs = []; + this.call = call; +}; + +/** + * Inherit from `Attrs`. + */ + +Mixin.prototype.__proto__ = Attrs.prototype; + diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js new file mode 100644 index 0000000..e98f042 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js @@ -0,0 +1,25 @@ + +/*! + * Jade - nodes - Node + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Initialize a `Node`. + * + * @api public + */ + +var Node = module.exports = function Node(){}; + +/** + * Clone this node (return itself) + * + * @return {Node} + * @api private + */ + +Node.prototype.clone = function(){ + return this; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js new file mode 100644 index 0000000..4b6728a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js @@ -0,0 +1,95 @@ + +/*! + * Jade - nodes - Tag + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Attrs = require('./attrs'), + Block = require('./block'), + inlineTags = require('../inline-tags'); + +/** + * Initialize a `Tag` node with the given tag `name` and optional `block`. + * + * @param {String} name + * @param {Block} block + * @api public + */ + +var Tag = module.exports = function Tag(name, block) { + this.name = name; + this.attrs = []; + this.block = block || new Block; +}; + +/** + * Inherit from `Attrs`. + */ + +Tag.prototype.__proto__ = Attrs.prototype; + +/** + * Clone this tag. + * + * @return {Tag} + * @api private + */ + +Tag.prototype.clone = function(){ + var clone = new Tag(this.name, this.block.clone()); + clone.line = this.line; + clone.attrs = this.attrs; + clone.textOnly = this.textOnly; + return clone; +}; + +/** + * Check if this tag is an inline tag. + * + * @return {Boolean} + * @api private + */ + +Tag.prototype.isInline = function(){ + return ~inlineTags.indexOf(this.name); +}; + +/** + * Check if this tag's contents can be inlined. Used for pretty printing. + * + * @return {Boolean} + * @api private + */ + +Tag.prototype.canInline = function(){ + var nodes = this.block.nodes; + + function isInline(node){ + // Recurse if the node is a block + if (node.isBlock) return node.nodes.every(isInline); + return node.isText || (node.isInline && node.isInline()); + } + + // Empty tag + if (!nodes.length) return true; + + // Text-only or inline-only tag + if (1 == nodes.length) return isInline(nodes[0]); + + // Multi-line inline-only tag + if (this.block.nodes.every(isInline)) { + for (var i = 1, len = nodes.length; i < len; ++i) { + if (nodes[i-1].isText && nodes[i].isText) + return false; + } + return true; + } + + // Mixed tag + return false; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js new file mode 100644 index 0000000..3b5dd55 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js @@ -0,0 +1,36 @@ + +/*! + * Jade - nodes - Text + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Node = require('./node'); + +/** + * Initialize a `Text` node with optional `line`. + * + * @param {String} line + * @api public + */ + +var Text = module.exports = function Text(line) { + this.val = ''; + if ('string' == typeof line) this.val = line; +}; + +/** + * Inherit from `Node`. + */ + +Text.prototype.__proto__ = Node.prototype; + +/** + * Flag as text. + */ + +Text.prototype.isText = true; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/parser.js b/nodejs-mysql-tutorial/node_modules/jade/lib/parser.js new file mode 100644 index 0000000..314adf6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/parser.js @@ -0,0 +1,720 @@ +/*! + * Jade - Parser + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var Lexer = require('./lexer') + , nodes = require('./nodes') + , utils = require('./utils') + , filters = require('./filters') + , path = require('path') + , extname = path.extname; + +/** + * Initialize `Parser` with the given input `str` and `filename`. + * + * @param {String} str + * @param {String} filename + * @param {Object} options + * @api public + */ + +var Parser = exports = module.exports = function Parser(str, filename, options){ + this.input = str; + this.lexer = new Lexer(str, options); + this.filename = filename; + this.blocks = {}; + this.mixins = {}; + this.options = options; + this.contexts = [this]; +}; + +/** + * Tags that may not contain tags. + */ + +var textOnly = exports.textOnly = ['script', 'style']; + +/** + * Parser prototype. + */ + +Parser.prototype = { + + /** + * Push `parser` onto the context stack, + * or pop and return a `Parser`. + */ + + context: function(parser){ + if (parser) { + this.contexts.push(parser); + } else { + return this.contexts.pop(); + } + }, + + /** + * Return the next token object. + * + * @return {Object} + * @api private + */ + + advance: function(){ + return this.lexer.advance(); + }, + + /** + * Skip `n` tokens. + * + * @param {Number} n + * @api private + */ + + skip: function(n){ + while (n--) this.advance(); + }, + + /** + * Single token lookahead. + * + * @return {Object} + * @api private + */ + + peek: function() { + return this.lookahead(1); + }, + + /** + * Return lexer lineno. + * + * @return {Number} + * @api private + */ + + line: function() { + return this.lexer.lineno; + }, + + /** + * `n` token lookahead. + * + * @param {Number} n + * @return {Object} + * @api private + */ + + lookahead: function(n){ + return this.lexer.lookahead(n); + }, + + /** + * Parse input returning a string of js for evaluation. + * + * @return {String} + * @api public + */ + + parse: function(){ + var block = new nodes.Block, parser; + block.line = this.line(); + + while ('eos' != this.peek().type) { + if ('newline' == this.peek().type) { + this.advance(); + } else { + block.push(this.parseExpr()); + } + } + + if (parser = this.extending) { + this.context(parser); + var ast = parser.parse(); + this.context(); + + // hoist mixins + for (var name in this.mixins) + ast.unshift(this.mixins[name]); + return ast; + } + + return block; + }, + + /** + * Expect the given type, or throw an exception. + * + * @param {String} type + * @api private + */ + + expect: function(type){ + if (this.peek().type === type) { + return this.advance(); + } else { + throw new Error('expected "' + type + '", but got "' + this.peek().type + '"'); + } + }, + + /** + * Accept the given `type`. + * + * @param {String} type + * @api private + */ + + accept: function(type){ + if (this.peek().type === type) { + return this.advance(); + } + }, + + /** + * tag + * | doctype + * | mixin + * | include + * | filter + * | comment + * | text + * | each + * | code + * | yield + * | id + * | class + * | interpolation + */ + + parseExpr: function(){ + switch (this.peek().type) { + case 'tag': + return this.parseTag(); + case 'mixin': + return this.parseMixin(); + case 'block': + return this.parseBlock(); + case 'case': + return this.parseCase(); + case 'when': + return this.parseWhen(); + case 'default': + return this.parseDefault(); + case 'extends': + return this.parseExtends(); + case 'include': + return this.parseInclude(); + case 'doctype': + return this.parseDoctype(); + case 'filter': + return this.parseFilter(); + case 'comment': + return this.parseComment(); + case 'text': + return this.parseText(); + case 'each': + return this.parseEach(); + case 'code': + return this.parseCode(); + case 'call': + return this.parseCall(); + case 'interpolation': + return this.parseInterpolation(); + case 'yield': + this.advance(); + var block = new nodes.Block; + block.yield = true; + return block; + case 'id': + case 'class': + var tok = this.advance(); + this.lexer.defer(this.lexer.tok('tag', 'div')); + this.lexer.defer(tok); + return this.parseExpr(); + default: + throw new Error('unexpected token "' + this.peek().type + '"'); + } + }, + + /** + * Text + */ + + parseText: function(){ + var tok = this.expect('text'); + var node = new nodes.Text(tok.val); + node.line = this.line(); + return node; + }, + + /** + * ':' expr + * | block + */ + + parseBlockExpansion: function(){ + if (':' == this.peek().type) { + this.advance(); + return new nodes.Block(this.parseExpr()); + } else { + return this.block(); + } + }, + + /** + * case + */ + + parseCase: function(){ + var val = this.expect('case').val; + var node = new nodes.Case(val); + node.line = this.line(); + node.block = this.block(); + return node; + }, + + /** + * when + */ + + parseWhen: function(){ + var val = this.expect('when').val + return new nodes.Case.When(val, this.parseBlockExpansion()); + }, + + /** + * default + */ + + parseDefault: function(){ + this.expect('default'); + return new nodes.Case.When('default', this.parseBlockExpansion()); + }, + + /** + * code + */ + + parseCode: function(){ + var tok = this.expect('code'); + var node = new nodes.Code(tok.val, tok.buffer, tok.escape); + var block; + var i = 1; + node.line = this.line(); + while (this.lookahead(i) && 'newline' == this.lookahead(i).type) ++i; + block = 'indent' == this.lookahead(i).type; + if (block) { + this.skip(i-1); + node.block = this.block(); + } + return node; + }, + + /** + * comment + */ + + parseComment: function(){ + var tok = this.expect('comment'); + var node; + + if ('indent' == this.peek().type) { + node = new nodes.BlockComment(tok.val, this.block(), tok.buffer); + } else { + node = new nodes.Comment(tok.val, tok.buffer); + } + + node.line = this.line(); + return node; + }, + + /** + * doctype + */ + + parseDoctype: function(){ + var tok = this.expect('doctype'); + var node = new nodes.Doctype(tok.val); + node.line = this.line(); + return node; + }, + + /** + * filter attrs? text-block + */ + + parseFilter: function(){ + var tok = this.expect('filter'); + var attrs = this.accept('attrs'); + var block; + + this.lexer.pipeless = true; + block = this.parseTextBlock(); + this.lexer.pipeless = false; + + var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); + node.line = this.line(); + return node; + }, + + /** + * each block + */ + + parseEach: function(){ + var tok = this.expect('each'); + var node = new nodes.Each(tok.code, tok.val, tok.key); + node.line = this.line(); + node.block = this.block(); + if (this.peek().type == 'code' && this.peek().val == 'else') { + this.advance(); + node.alternative = this.block(); + } + return node; + }, + + /** + * Resolves a path relative to the template for use in + * includes and extends + * + * @param {String} path + * @param {String} purpose Used in error messages. + * @return {String} + * @api private + */ + + resolvePath: function (path, purpose) { + var p = require('path'); + var dirname = p.dirname; + var basename = p.basename; + var join = p.join; + + if (path[0] !== '/' && !this.filename) + throw new Error('the "filename" option is required to use "' + purpose + '" with "relative" paths'); + + if (path[0] === '/' && !this.options.basedir) + throw new Error('the "basedir" option is required to use "' + purpose + '" with "absolute" paths'); + + path = join(path[0] === '/' ? this.options.basedir : dirname(this.filename), path); + + if (basename(path).indexOf('.') === -1) path += '.jade'; + + return path; + }, + + /** + * 'extends' name + */ + + parseExtends: function(){ + var fs = require('fs'); + + var path = this.resolvePath(this.expect('extends').val.trim(), 'extends'); + if ('.jade' != path.substr(-5)) path += '.jade'; + + var str = fs.readFileSync(path, 'utf8'); + var parser = new Parser(str, path, this.options); + + parser.blocks = this.blocks; + parser.contexts = this.contexts; + this.extending = parser; + + // TODO: null node + return new nodes.Literal(''); + }, + + /** + * 'block' name block + */ + + parseBlock: function(){ + var block = this.expect('block'); + var mode = block.mode; + var name = block.val.trim(); + + block = 'indent' == this.peek().type + ? this.block() + : new nodes.Block(new nodes.Literal('')); + + var prev = this.blocks[name] || {prepended: [], appended: []} + if (prev.mode === 'replace') return this.blocks[name] = prev; + + var allNodes = prev.prepended.concat(block.nodes).concat(prev.appended); + + switch (mode) { + case 'append': + prev.appended = prev.parser === this ? + prev.appended.concat(block.nodes) : + block.nodes.concat(prev.appended); + break; + case 'prepend': + prev.prepended = prev.parser === this ? + block.nodes.concat(prev.prepended) : + prev.prepended.concat(block.nodes); + break; + } + block.nodes = allNodes; + block.appended = prev.appended; + block.prepended = prev.prepended; + block.mode = mode; + block.parser = this; + + return this.blocks[name] = block; + }, + + /** + * include block? + */ + + parseInclude: function(){ + var fs = require('fs'); + + var path = this.resolvePath(this.expect('include').val.trim(), 'include'); + + // non-jade + if ('.jade' != path.substr(-5)) { + var str = fs.readFileSync(path, 'utf8').replace(/\r/g, ''); + var ext = extname(path).slice(1); + if (filters.exists(ext)) str = filters(ext, str, { filename: path }); + return new nodes.Literal(str); + } + + var str = fs.readFileSync(path, 'utf8'); + var parser = new Parser(str, path, this.options); + parser.blocks = utils.merge({}, this.blocks); + + parser.mixins = this.mixins; + + this.context(parser); + var ast = parser.parse(); + this.context(); + ast.filename = path; + + if ('indent' == this.peek().type) { + ast.includeBlock().push(this.block()); + } + + return ast; + }, + + /** + * call ident block + */ + + parseCall: function(){ + var tok = this.expect('call'); + var name = tok.val; + var args = tok.args; + var mixin = new nodes.Mixin(name, args, new nodes.Block, true); + + this.tag(mixin); + if (mixin.code) { + mixin.block.push(mixin.code); + mixin.code = null; + } + if (mixin.block.isEmpty()) mixin.block = null; + return mixin; + }, + + /** + * mixin block + */ + + parseMixin: function(){ + var tok = this.expect('mixin'); + var name = tok.val; + var args = tok.args; + var mixin; + + // definition + if ('indent' == this.peek().type) { + mixin = new nodes.Mixin(name, args, this.block(), false); + this.mixins[name] = mixin; + return mixin; + // call + } else { + return new nodes.Mixin(name, args, null, true); + } + }, + + /** + * indent (text | newline)* outdent + */ + + parseTextBlock: function(){ + var block = new nodes.Block; + block.line = this.line(); + var spaces = this.expect('indent').val; + if (null == this._spaces) this._spaces = spaces; + var indent = Array(spaces - this._spaces + 1).join(' '); + while ('outdent' != this.peek().type) { + switch (this.peek().type) { + case 'newline': + this.advance(); + break; + case 'indent': + this.parseTextBlock().nodes.forEach(function(node){ + block.push(node); + }); + break; + default: + var text = new nodes.Text(indent + this.advance().val); + text.line = this.line(); + block.push(text); + } + } + + if (spaces == this._spaces) this._spaces = null; + this.expect('outdent'); + return block; + }, + + /** + * indent expr* outdent + */ + + block: function(){ + var block = new nodes.Block; + block.line = this.line(); + this.expect('indent'); + while ('outdent' != this.peek().type) { + if ('newline' == this.peek().type) { + this.advance(); + } else { + block.push(this.parseExpr()); + } + } + this.expect('outdent'); + return block; + }, + + /** + * interpolation (attrs | class | id)* (text | code | ':')? newline* block? + */ + + parseInterpolation: function(){ + var tok = this.advance(); + var tag = new nodes.Tag(tok.val); + tag.buffer = true; + return this.tag(tag); + }, + + /** + * tag (attrs | class | id)* (text | code | ':')? newline* block? + */ + + parseTag: function(){ + // ast-filter look-ahead + var i = 2; + if ('attrs' == this.lookahead(i).type) ++i; + + var tok = this.advance(); + var tag = new nodes.Tag(tok.val); + + tag.selfClosing = tok.selfClosing; + + return this.tag(tag); + }, + + /** + * Parse tag. + */ + + tag: function(tag){ + var dot; + + tag.line = this.line(); + + // (attrs | class | id)* + out: + while (true) { + switch (this.peek().type) { + case 'id': + case 'class': + var tok = this.advance(); + tag.setAttribute(tok.type, "'" + tok.val + "'"); + continue; + case 'attrs': + var tok = this.advance() + , obj = tok.attrs + , escaped = tok.escaped + , names = Object.keys(obj); + + if (tok.selfClosing) tag.selfClosing = true; + + for (var i = 0, len = names.length; i < len; ++i) { + var name = names[i] + , val = obj[name]; + tag.setAttribute(name, val, escaped[name]); + } + continue; + default: + break out; + } + } + + // check immediate '.' + if ('.' == this.peek().val) { + dot = tag.textOnly = true; + this.advance(); + } + + // (text | code | ':')? + switch (this.peek().type) { + case 'text': + tag.block.push(this.parseText()); + break; + case 'code': + tag.code = this.parseCode(); + break; + case ':': + this.advance(); + tag.block = new nodes.Block; + tag.block.push(this.parseExpr()); + break; + } + + // newline* + while ('newline' == this.peek().type) this.advance(); + + tag.textOnly = tag.textOnly || ~textOnly.indexOf(tag.name); + + // script special-case + if ('script' == tag.name) { + var type = tag.getAttribute('type'); + if (!dot && type && 'text/javascript' != type.replace(/^['"]|['"]$/g, '')) { + tag.textOnly = false; + } + } + + if (tag.textOnly && !dot && !(tag.name == 'script' && tag.getAttribute('src'))) { + console.warn('Implicit textOnly for `script` and `style` is deprecated. Use `script.` or `style.` instead.'); + } + + // block? + if ('indent' == this.peek().type) { + if (tag.textOnly) { + this.lexer.pipeless = true; + tag.block = this.parseTextBlock(); + this.lexer.pipeless = false; + } else { + var block = this.block(); + if (tag.block) { + for (var i = 0, len = block.nodes.length; i < len; ++i) { + tag.block.push(block.nodes[i]); + } + } else { + tag.block = block; + } + } + } + + return tag; + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js b/nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js new file mode 100644 index 0000000..7bc81ef --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js @@ -0,0 +1,187 @@ + +/*! + * Jade - runtime + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Lame Array.isArray() polyfill for now. + */ + +if (!Array.isArray) { + Array.isArray = function(arr){ + return '[object Array]' == Object.prototype.toString.call(arr); + }; +} + +/** + * Lame Object.keys() polyfill for now. + */ + +if (!Object.keys) { + Object.keys = function(obj){ + var arr = []; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + arr.push(key); + } + } + return arr; + } +} + +/** + * Merge two attribute objects giving precedence + * to values in object `b`. Classes are special-cased + * allowing for arrays and merging/joining appropriately + * resulting in a string. + * + * @param {Object} a + * @param {Object} b + * @return {Object} a + * @api private + */ + +exports.merge = function merge(a, b) { + var ac = a['class']; + var bc = b['class']; + + if (ac || bc) { + ac = ac || []; + bc = bc || []; + if (!Array.isArray(ac)) ac = [ac]; + if (!Array.isArray(bc)) bc = [bc]; + a['class'] = ac.concat(bc).filter(nulls); + } + + for (var key in b) { + if (key != 'class') { + a[key] = b[key]; + } + } + + return a; +}; + +/** + * Filter null `val`s. + * + * @param {*} val + * @return {Boolean} + * @api private + */ + +function nulls(val) { + return val != null && val !== ''; +} + +/** + * join array as classes. + * + * @param {*} val + * @return {String} + * @api private + */ + +function joinClasses(val) { + return Array.isArray(val) ? val.map(joinClasses).filter(nulls).join(' ') : val; +} + +/** + * Render the given attributes object. + * + * @param {Object} obj + * @param {Object} escaped + * @return {String} + * @api private + */ + +exports.attrs = function attrs(obj, escaped){ + var buf = [] + , terse = obj.terse; + + delete obj.terse; + var keys = Object.keys(obj) + , len = keys.length; + + if (len) { + buf.push(''); + for (var i = 0; i < len; ++i) { + var key = keys[i] + , val = obj[key]; + + if ('boolean' == typeof val || null == val) { + if (val) { + terse + ? buf.push(key) + : buf.push(key + '="' + key + '"'); + } + } else if (0 == key.indexOf('data') && 'string' != typeof val) { + buf.push(key + "='" + JSON.stringify(val) + "'"); + } else if ('class' == key) { + if (val = exports.escape(joinClasses(val))) { + buf.push(key + '="' + val + '"'); + } + } else if (escaped && escaped[key]) { + buf.push(key + '="' + exports.escape(val) + '"'); + } else { + buf.push(key + '="' + val + '"'); + } + } + } + + return buf.join(' '); +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function escape(html){ + return String(html) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; + +/** + * Re-throw the given `err` in context to the + * the jade in `filename` at the given `lineno`. + * + * @param {Error} err + * @param {String} filename + * @param {String} lineno + * @api private + */ + +exports.rethrow = function rethrow(err, filename, lineno){ + if (!filename) throw err; + if (typeof window != 'undefined') throw err; + + var context = 3 + , str = require('fs').readFileSync(filename, 'utf8') + , lines = str.split('\n') + , start = Math.max(lineno - context, 0) + , end = Math.min(lines.length, lineno + context); + + // Error context + var context = lines.slice(start, end).map(function(line, i){ + var curr = i + start + 1; + return (curr == lineno ? ' > ' : ' ') + + curr + + '| ' + + line; + }).join('\n'); + + // Alter exception message + err.path = filename; + err.message = (filename || 'Jade') + ':' + lineno + + '\n' + context + '\n\n' + err.message; + throw err; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js b/nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js new file mode 100644 index 0000000..0548771 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js @@ -0,0 +1,19 @@ + +/*! + * Jade - self closing tags + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +module.exports = [ + 'meta' + , 'img' + , 'link' + , 'input' + , 'source' + , 'area' + , 'base' + , 'col' + , 'br' + , 'hr' +]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/utils.js b/nodejs-mysql-tutorial/node_modules/jade/lib/utils.js new file mode 100644 index 0000000..9d308cc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/lib/utils.js @@ -0,0 +1,21 @@ + +/*! + * Jade - utils + * Copyright(c) 2010 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Merge `b` into `a`. + * + * @param {Object} a + * @param {Object} b + * @return {Object} + * @api public + */ + +exports.merge = function(a, b) { + for (var key in b) a[key] = b[key]; + return a; +}; + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore new file mode 100644 index 0000000..699b5d4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore @@ -0,0 +1,16 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +npm-debug.log + +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml new file mode 100644 index 0000000..2ca91f2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.10" + - "0.8" \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md new file mode 100644 index 0000000..4485cbf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md @@ -0,0 +1,123 @@ +# character-parser + +Parse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly. + +[![Build Status](https://travis-ci.org/ForbesLindesay/character-parser.png?branch=master)](https://travis-ci.org/ForbesLindesay/character-parser) + +## Installation + + npm install character-parser + +## Usage + +Work out how much depth changes: + +```js +var state = parse('foo(arg1, arg2, {\n foo: [a, b\n'); +assert(state.roundDepth === 1); +assert(state.curlyDepth === 1); +assert(state.squareDepth === 1); +parse(' c, d]\n })', state); +assert(state.squareDepth === 0); +assert(state.curlyDepth === 0); +assert(state.roundDepth === 0); +``` + +### Bracketed Expressions + +Find all the contents of a bracketed expression: + +```js +var section = parser.parseMax('foo="(", bar="}") bing bong'); +assert(section.start === 0); +assert(section.end === 16);//exclusive end of string +assert(section.src = 'foo="(", bar="}"'); + + +var section = parser.parseMax('{foo="(", bar="}"} bing bong', {start: 1}); +assert(section.start === 1); +assert(section.end === 17);//exclusive end of string +assert(section.src = 'foo="(", bar="}"'); +``` + +The bracketed expression parsing simply parses up to but excluding the first unmatched closed bracket (`)`, `}`, `]`). It is clever enough to ignore brackets in comments or strings. + + +### Custom Delimited Expressions + +Find code up to a custom delimiter: + +```js +var section = parser.parseUntil('foo.bar("%>").baz%> bing bong', '%>'); +assert(section.start === 0); +assert(section.end === 17);//exclusive end of string +assert(section.src = 'foo.bar("%>").baz'); + +var section = parser.parseUntil('<%foo.bar("%>").baz%> bing bong', '%>', {start: 2}); +assert(section.start === 2); +assert(section.end === 19);//exclusive end of string +assert(section.src = 'foo.bar("%>").baz'); +``` + +Delimiters are ignored if they are inside strings or comments. + +## API + +### parse(str, state = defaultState(), options = {start: 0, end: src.length}) + +Parse a string starting at the index start, and return the state after parsing that string. + +If you want to parse one string in multiple sections you should keep passing the resulting state to the next parse operation. + +The resulting object has the structure: + +```js +{ + lineComment: false, //true if inside a line comment + blockComment: false, //true if inside a block comment + + singleQuote: false, //true if inside a single quoted string + doubleQuote: false, //true if inside a double quoted string + escaped: false, //true if in a string and the last character was an escape character + + roundDepth: 0, //number of un-closed open `(` brackets + curlyDepth: 0, //number of un-closed open `{` brackets + squareDepth: 0 //number of un-closed open `[` brackets +} +``` + +### parseMax(src, options = {start: 0}) + +Parses the source until the first unmatched close bracket (any of `)`, `}`, `]`). It returns an object with the structure: + +```js +{ + start: 0,//index of first character of string + end: 13,//index of first character after the end of string + src: 'source string' +} +``` + +### parseUntil(src, delimiter, options = {start: 0, includeLineComment: false}) + +Parses the source until the first occurence of `delimiter` which is not in a string or a comment. If `includeLineComment` is `true`, it will still count if the delimiter occurs in a line comment, but not in a block comment. It returns an object with the structure: + +```js +{ + start: 0,//index of first character of string + end: 13,//index of first character after the end of string + src: 'source string' +} +``` + +### parseChar(character, state = defaultState()) + +Parses the single character and returns the state. See `parse` for the structure of the returned state object. N.B. character must be a single character not a multi character string. + +### defaultState() + +Get a default starting state. See `parse` for the structure of the returned state object. + +## License + +MIT \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js new file mode 100644 index 0000000..c80022b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js @@ -0,0 +1,205 @@ +exports = (module.exports = parse); +exports.parse = parse; +function parse(src, state, options) { + options = options || {}; + state = state || exports.defaultState(); + var start = options.start || 0; + var end = options.end || src.length; + var index = start; + while (index < end) { + if (state.roundDepth < 0 || state.curlyDepth < 0 || state.squareDepth < 0) { + throw new SyntaxError('Mismatched Bracket: ' + src[index - 1]); + } + exports.parseChar(src[index++], state); + } + return state; +} + +exports.parseMax = parseMax; +function parseMax(src, options) { + options = options || {}; + var start = options.start || 0; + var index = start; + var state = exports.defaultState(); + while (state.roundDepth >= 0 && state.curlyDepth >= 0 && state.squareDepth >= 0) { + if (index >= src.length) { + throw new Error('The end of the string was reached with no closing bracket found.'); + } + exports.parseChar(src[index++], state); + } + var end = index - 1; + return { + start: start, + end: end, + src: src.substring(start, end) + }; +} + +exports.parseUntil = parseUntil; +function parseUntil(src, delimiter, options) { + options = options || {}; + var includeLineComment = options.includeLineComment || false; + var start = options.start || 0; + var index = start; + var state = exports.defaultState(); + while (state.singleQuote || state.doubleQuote || state.regexp || state.blockComment || + (!includeLineComment && state.lineComment) || !startsWith(src, delimiter, index)) { + exports.parseChar(src[index++], state); + } + var end = index; + return { + start: start, + end: end, + src: src.substring(start, end) + }; +} + + +exports.parseChar = parseChar; +function parseChar(character, state) { + if (character.length !== 1) throw new Error('Character must be a string of length 1'); + state = state || defaultState(); + var wasComment = state.blockComment || state.lineComment; + var lastChar = state.history ? state.history[0] : ''; + if (state.lineComment) { + if (character === '\n') { + state.lineComment = false; + } + } else if (state.blockComment) { + if (state.lastChar === '*' && character === '/') { + state.blockComment = false; + } + } else if (state.singleQuote) { + if (character === '\'' && !state.escaped) { + state.singleQuote = false; + } else if (character === '\\' && !state.escaped) { + state.escaped = true; + } else { + state.escaped = false; + } + } else if (state.doubleQuote) { + if (character === '"' && !state.escaped) { + state.doubleQuote = false; + } else if (character === '\\' && !state.escaped) { + state.escaped = true; + } else { + state.escaped = false; + } + } else if (state.regexp) { + if (character === '/' && !state.escaped) { + state.regexp = false; + } else if (character === '\\' && !state.escaped) { + state.escaped = true; + } else { + state.escaped = false; + } + } else if (lastChar === '/' && character === '/') { + history = history.substr(1); + state.lineComment = true; + } else if (lastChar === '/' && character === '*') { + history = history.substr(1); + state.blockComment = true; + } else if (character === '/') { + //could be start of regexp or divide sign + var history = state.history.replace(/^\s*/, ''); + if (history[0] === ')') { + //unless its an `if`, `while`, `for` or `with` it's a divide + //this is probably best left though + } else if (history[0] === '}') { + //unless it's a function expression, it's a regexp + //this is probably best left though + } else if (isPunctuator(history[0])) { + state.regexp = true; + } else if (/^\w+\b/.test(history) && isKeyword(/^\w+\b/.exec(history)[0])) { + state.regexp = true; + } else { + // assume it's divide + } + } else if (character === '\'') { + state.singleQuote = true; + } else if (character === '"') { + state.doubleQuote = true; + } else if (character === '(') { + state.roundDepth++; + } else if (character === ')') { + state.roundDepth--; + } else if (character === '{') { + state.curlyDepth++; + } else if (character === '}') { + state.curlyDepth--; + } else if (character === '[') { + state.squareDepth++; + } else if (character === ']') { + state.squareDepth--; + } + if (!state.blockComment && !state.lineComment && !wasComment) state.history = character + state.history; + return state; +} + +exports.defaultState = defaultState; +function defaultState() { + return { + lineComment: false, + blockComment: false, + + singleQuote: false, + doubleQuote: false, + regexp: false, + escaped: false, + + roundDepth: 0, + curlyDepth: 0, + squareDepth: 0, + + history: '' + }; +} + +function startsWith(str, start, i) { + return str.substr(i || 0, start.length) === start; +} + +function isPunctuator(c) { + var code = c.charCodeAt(0) + + switch (code) { + case 46: // . dot + case 40: // ( open bracket + case 41: // ) close bracket + case 59: // ; semicolon + case 44: // , comma + case 123: // { open curly brace + case 125: // } close curly brace + case 91: // [ + case 93: // ] + case 58: // : + case 63: // ? + case 126: // ~ + case 37: // % + case 38: // & + case 42: // *: + case 43: // + + case 45: // - + case 47: // / + case 60: // < + case 62: // > + case 94: // ^ + case 124: // | + case 33: // ! + case 61: // = + return true; + default: + return false; + } +} +function isKeyword(id) { + return (id === 'if') || (id === 'in') || (id === 'do') || (id === 'var') || (id === 'for') || (id === 'new') || + (id === 'try') || (id === 'let') || (id === 'this') || (id === 'else') || (id === 'case') || + (id === 'void') || (id === 'with') || (id === 'enum') || (id === 'while') || (id === 'break') || (id === 'catch') || + (id === 'throw') || (id === 'const') || (id === 'yield') || (id === 'class') || (id === 'super') || + (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch') || (id === 'export') || + (id === 'import') || (id === 'default') || (id === 'finally') || (id === 'extends') || (id === 'function') || + (id === 'continue') || (id === 'debugger') || (id === 'package') || (id === 'private') || (id === 'interface') || + (id === 'instanceof') || (id === 'implements') || (id === 'protected') || (id === 'public') || (id === 'static') || + (id === 'yield') || (id === 'let'); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json new file mode 100644 index 0000000..76f2407 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json @@ -0,0 +1,38 @@ +{ + "name": "character-parser", + "version": "1.0.2", + "description": "Parse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly.", + "main": "index.js", + "scripts": { + "test": "mocha -R spec" + }, + "repository": { + "type": "git", + "url": "https://github.com/ForbesLindesay/character-parser.git" + }, + "keywords": [ + "parser", + "JavaScript", + "bracket", + "nesting", + "comment", + "string", + "escape", + "escaping" + ], + "author": { + "name": "ForbesLindesay" + }, + "license": "MIT", + "devDependencies": { + "better-assert": "~1.0.0", + "mocha": "~1.9.0" + }, + "readme": "# character-parser\r\n\r\nParse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly.\r\n\r\n[![Build Status](https://travis-ci.org/ForbesLindesay/character-parser.png?branch=master)](https://travis-ci.org/ForbesLindesay/character-parser)\r\n\r\n## Installation\r\n\r\n npm install character-parser\r\n\r\n## Usage\r\n\r\nWork out how much depth changes:\r\n\r\n```js\r\nvar state = parse('foo(arg1, arg2, {\\n foo: [a, b\\n');\r\nassert(state.roundDepth === 1);\r\nassert(state.curlyDepth === 1);\r\nassert(state.squareDepth === 1);\r\nparse(' c, d]\\n })', state);\r\nassert(state.squareDepth === 0);\r\nassert(state.curlyDepth === 0);\r\nassert(state.roundDepth === 0);\r\n```\r\n\r\n### Bracketed Expressions\r\n\r\nFind all the contents of a bracketed expression:\r\n\r\n```js\r\nvar section = parser.parseMax('foo=\"(\", bar=\"}\") bing bong');\r\nassert(section.start === 0);\r\nassert(section.end === 16);//exclusive end of string\r\nassert(section.src = 'foo=\"(\", bar=\"}\"');\r\n\r\n\r\nvar section = parser.parseMax('{foo=\"(\", bar=\"}\"} bing bong', {start: 1});\r\nassert(section.start === 1);\r\nassert(section.end === 17);//exclusive end of string\r\nassert(section.src = 'foo=\"(\", bar=\"}\"');\r\n```\r\n\r\nThe bracketed expression parsing simply parses up to but excluding the first unmatched closed bracket (`)`, `}`, `]`). It is clever enough to ignore brackets in comments or strings.\r\n\r\n\r\n### Custom Delimited Expressions\r\n\r\nFind code up to a custom delimiter:\r\n\r\n```js\r\nvar section = parser.parseUntil('foo.bar(\"%>\").baz%> bing bong', '%>');\r\nassert(section.start === 0);\r\nassert(section.end === 17);//exclusive end of string\r\nassert(section.src = 'foo.bar(\"%>\").baz');\r\n\r\nvar section = parser.parseUntil('<%foo.bar(\"%>\").baz%> bing bong', '%>', {start: 2});\r\nassert(section.start === 2);\r\nassert(section.end === 19);//exclusive end of string\r\nassert(section.src = 'foo.bar(\"%>\").baz');\r\n```\r\n\r\nDelimiters are ignored if they are inside strings or comments.\r\n\r\n## API\r\n\r\n### parse(str, state = defaultState(), options = {start: 0, end: src.length})\r\n\r\nParse a string starting at the index start, and return the state after parsing that string.\r\n\r\nIf you want to parse one string in multiple sections you should keep passing the resulting state to the next parse operation.\r\n\r\nThe resulting object has the structure:\r\n\r\n```js\r\n{\r\n lineComment: false, //true if inside a line comment\r\n blockComment: false, //true if inside a block comment\r\n\r\n singleQuote: false, //true if inside a single quoted string\r\n doubleQuote: false, //true if inside a double quoted string\r\n escaped: false, //true if in a string and the last character was an escape character\r\n\r\n roundDepth: 0, //number of un-closed open `(` brackets\r\n curlyDepth: 0, //number of un-closed open `{` brackets\r\n squareDepth: 0 //number of un-closed open `[` brackets\r\n}\r\n```\r\n\r\n### parseMax(src, options = {start: 0})\r\n\r\nParses the source until the first unmatched close bracket (any of `)`, `}`, `]`). It returns an object with the structure:\r\n\r\n```js\r\n{\r\n start: 0,//index of first character of string\r\n end: 13,//index of first character after the end of string\r\n src: 'source string'\r\n}\r\n```\r\n\r\n### parseUntil(src, delimiter, options = {start: 0, includeLineComment: false})\r\n\r\nParses the source until the first occurence of `delimiter` which is not in a string or a comment. If `includeLineComment` is `true`, it will still count if the delimiter occurs in a line comment, but not in a block comment. It returns an object with the structure:\r\n\r\n```js\r\n{\r\n start: 0,//index of first character of string\r\n end: 13,//index of first character after the end of string\r\n src: 'source string'\r\n}\r\n```\r\n\r\n### parseChar(character, state = defaultState())\r\n\r\nParses the single character and returns the state. See `parse` for the structure of the returned state object. N.B. character must be a single character not a multi character string.\r\n\r\n### defaultState()\r\n\r\nGet a default starting state. See `parse` for the structure of the returned state object.\r\n\r\n## License\r\n\r\nMIT", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/ForbesLindesay/character-parser/issues" + }, + "_id": "character-parser@1.0.2", + "_from": "character-parser@1.0.2" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js new file mode 100644 index 0000000..6ea0da7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js @@ -0,0 +1,50 @@ +var assert = require('better-assert'); +var parser = require('../'); +var parse = parser; + +it('works out how much depth changes', function () { + var state = parse('foo(arg1, arg2, {\n foo: [a, b\n'); + assert(state.roundDepth === 1); + assert(state.curlyDepth === 1); + assert(state.squareDepth === 1); + + parse(' c, d]\n })', state); + assert(state.squareDepth === 0); + assert(state.curlyDepth === 0); + assert(state.roundDepth === 0); +}); + +it('finds contents of bracketed expressions', function () { + var section = parser.parseMax('foo="(", bar="}") bing bong'); + assert(section.start === 0); + assert(section.end === 16);//exclusive end of string + assert(section.src = 'foo="(", bar="}"'); + + var section = parser.parseMax('{foo="(", bar="}"} bing bong', {start: 1}); + assert(section.start === 1); + assert(section.end === 17);//exclusive end of string + assert(section.src = 'foo="(", bar="}"'); +}); + +it('finds code up to a custom delimiter', function () { + var section = parser.parseUntil('foo.bar("%>").baz%> bing bong', '%>'); + assert(section.start === 0); + assert(section.end === 17);//exclusive end of string + assert(section.src = 'foo.bar("%>").baz'); + + var section = parser.parseUntil('<%foo.bar("%>").baz%> bing bong', '%>', {start: 2}); + assert(section.start === 2); + assert(section.end === 19);//exclusive end of string + assert(section.src = 'foo.bar("%>").baz'); +}); + +describe('regressions', function () { + describe('#1', function () { + it('parses regular expressions', function () { + var section = parser.parseMax('foo=/\\//g, bar="}") bing bong'); + assert(section.start === 0); + assert(section.end === 18);//exclusive end of string + assert(section.src = 'foo=/\\//g, bar="}"'); + }) + }) +}) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md new file mode 100644 index 0000000..160dc6b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md @@ -0,0 +1,152 @@ + +1.1.1 / 2012-11-20 +================== + + * add more sub-command padding + * fix .usage() when args are present. Closes #106 + +1.1.0 / 2012-11-16 +================== + + * add git-style executable subcommand support. Closes #94 + +1.0.5 / 2012-10-09 +================== + + * fix `--name` clobbering. Closes #92 + * fix examples/help. Closes #89 + +1.0.4 / 2012-09-03 +================== + + * add `outputHelp()` method. + +1.0.3 / 2012-08-30 +================== + + * remove invalid .version() defaulting + +1.0.2 / 2012-08-24 +================== + + * add `--foo=bar` support [arv] + * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] + +1.0.1 / 2012-08-03 +================== + + * fix issue #56 + * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) + +1.0.0 / 2012-07-05 +================== + + * add support for optional option descriptions + * add defaulting of `.version()` to package.json's version + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile new file mode 100644 index 0000000..0074625 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile @@ -0,0 +1,7 @@ + +TESTS = $(shell find test/test.*.js) + +test: + @./test/run $(TESTS) + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md new file mode 100644 index 0000000..f93f362 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md @@ -0,0 +1,270 @@ +# Commander.js + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). + + [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) + +## Installation + + $ npm install commander + +## Option parsing + + Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.0.1') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineappe'); +if (program.bbq) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + + Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` + $ ./examples/pizza --help + + Usage: pizza [options] + + Options: + + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineappe + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -h, --help output usage information + +``` + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +program + .version('0.0.1') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range
    ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' args: %j', program.args); +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviours, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('../'); + +function list(val) { + return val.split(',').map(Number); +} + +program + .version('0.0.1') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log(' Examples:'); + console.log(''); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); + console.log(''); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +yielding the following help output: + +``` + +Usage: custom-help [options] + +Options: + + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + + $ custom-help --help + $ custom-help -h + +``` + +## .prompt(msg, fn) + + Single-line prompt: + +```js +program.prompt('name: ', function(name){ + console.log('hi %s', name); +}); +``` + + Multi-line prompt: + +```js +program.prompt('description:', function(name){ + console.log('hi %s', name); +}); +``` + + Coercion: + +```js +program.prompt('Age: ', Number, function(age){ + console.log('age: %j', age); +}); +``` + +```js +program.prompt('Birthdate: ', Date, function(date){ + console.log('date: %s', date); +}); +``` + +## .password(msg[, mask], fn) + +Prompt for password without echoing: + +```js +program.password('Password: ', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +Prompt for password with mask char "*": + +```js +program.password('Password: ', '*', function(pass){ + console.log('got "%s"', pass); + process.stdin.destroy(); +}); +``` + +## .confirm(msg, fn) + + Confirm with the given `msg`: + +```js +program.confirm('continue? ', function(ok){ + console.log(' got %j', ok); +}); +``` + +## .choose(list, fn) + + Let the user choose from a `list`: + +```js +var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + +console.log('Choose the coolest pet:'); +program.choose(list, function(i){ + console.log('you chose %d "%s"', i, list[i]); +}); +``` + +## .outputHelp() + + Output help information without exiting. + +## .help() + + Output help information and exit immediately. + +## Links + + - [API documentation](http://visionmedia.github.com/commander.js/) + - [ascii tables](https://github.com/LearnBoost/cli-table) + - [progress bars](https://github.com/visionmedia/node-progress) + - [more progress bars](https://github.com/substack/node-multimeter) + - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) + +## License + +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js new file mode 100644 index 0000000..bddca73 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js @@ -0,0 +1,1131 @@ +/*! + * commander + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , spawn = require('child_process').spawn + , keypress = require('keypress') + , fs = require('fs') + , exists = fs.existsSync + , path = require('path') + , tty = require('tty') + , dirname = path.dirname + , basename = path.basename; + +/** + * Expose the root command. + */ + +exports = module.exports = new Command; + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = ~flags.indexOf('<'); + this.optional = ~flags.indexOf('['); + this.bool = !~flags.indexOf('-no-'); + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description || ''; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function(){ + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg){ + return arg == this.short + || arg == this.long; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this._args = []; + this._name = name; +} + +/** + * Inherit from `EventEmitter.prototype`. + */ + +Command.prototype.__proto__ = EventEmitter.prototype; + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function(){ + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd){ + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env){ + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @param {String} [desc] + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name, desc){ + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + if (desc) cmd.description(desc); + if (desc) this.executables = true; + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + if (desc) return this; + return cmd; +}; + +/** + * Add an implicit `help [cmd]` subcommand + * which invokes `--help` for the given command. + * + * @api private + */ + +Command.prototype.addImplicitHelpCommand = function() { + this.command('help [cmd]', 'display help for [cmd]'); +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args){ + if (!args.length) return; + var self = this; + args.forEach(function(arg){ + switch (arg[0]) { + case '<': + self._args.push({ required: true, name: arg.slice(1, -1) }); + break; + case '[': + self._args.push({ required: false, name: arg.slice(1, -1) }); + break; + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function(){ + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn){ + var self = this; + this.parent.on(this._name, function(args, unknown){ + // Parse any so-far unknown options + unknown = unknown || []; + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + // Leftover arguments need to be pushed back. Fixes issue #56 + if (parsed.args.length) args = parsed.args.concat(args); + + self._args.forEach(function(arg, i){ + if (arg.required && null == args[i]) { + self.missingArgument(arg.name); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self._args.length) { + args[self._args.length] = self; + } else { + args.push(self); + } + + fn.apply(this, args); + }); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to false + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => true + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|Mixed} fn or default + * @param {Mixed} defaultValue + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue){ + var self = this + , option = new Option(flags, description) + , oname = option.name() + , name = camelcase(oname); + + // default as 3rd arg + if ('function' != typeof fn) defaultValue = fn, fn = null; + + // preassign default value only for --no-*, [optional], or + if (false == option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (false == option.bool) defaultValue = true; + // preassign only if we have a default + if (undefined !== defaultValue) self[name] = defaultValue; + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on(oname, function(val){ + // coercion + if (null != val && fn) val = fn(val); + + // unassigned or bool + if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { + // if no value, bool true, and we have a default, then use it! + if (null == val) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (null !== val) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv){ + // implicit help + if (this.executables) this.addImplicitHelpCommand(); + + // store raw args + this.rawArgs = argv; + + // guess name + this._name = this._name || basename(argv[1]); + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + var args = this.args = parsed.args; + + // executable sub-commands, skip .parseArgs() + if (this.executables) return this.executeSubCommand(argv, args, parsed.unknown); + + return this.parseArgs(this.args, parsed.unknown); +}; + +/** + * Execute a sub-command executable. + * + * @param {Array} argv + * @param {Array} args + * @param {Array} unknown + * @api private + */ + +Command.prototype.executeSubCommand = function(argv, args, unknown) { + args = args.concat(unknown); + + if (!args.length) this.help(); + if ('help' == args[0] && 1 == args.length) this.help(); + + // --help + if ('help' == args[0]) { + args[0] = args[1]; + args[1] = '--help'; + } + + // executable + var dir = dirname(argv[1]); + var bin = basename(argv[1]) + '-' + args[0]; + + // check for ./ first + var local = path.join(dir, bin); + if (exists(local)) bin = local; + + // run it + args = args.slice(1); + var proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] }); + proc.on('exit', function(code){ + if (code == 127) { + console.error('\n %s(1) does not exist\n', bin); + } + }); +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * This also normalizes equal sign and splits "--abc=def" into "--abc def". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args){ + var ret = [] + , arg + , index; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { + arg.slice(1).split('').forEach(function(c){ + ret.push('-' + c); + }); + } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { + ret.push(arg.slice(0, index), arg.slice(index + 1)); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown){ + var cmds = this.commands + , len = cmds.length + , name; + + if (args.length) { + name = args[0]; + if (this.listeners(name).length) { + this.emit(args.shift(), args, unknown); + } else { + this.emit('*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg){ + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv){ + var args = [] + , len = argv.length + , literal + , option + , arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if ('--' == arg) { + literal = true; + continue; + } + + if (literal) { + args.push(arg); + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (null == arg) return this.optionMissingArgument(option); + if ('-' == arg[0]) return this.optionMissingArgument(option, arg); + this.emit(option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i+1]; + if (null == arg || '-' == arg[0]) { + arg = null; + } else { + ++i; + } + this.emit(option.name(), arg); + // bool + } else { + this.emit(option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && '-' == arg[0]) { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if (argv[i+1] && '-' != argv[i+1][0]) { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name){ + console.error(); + console.error(" error: missing required argument `%s'", name); + console.error(); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag){ + console.error(); + if (flag) { + console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error(" error: option `%s' argument missing", option.flags); + } + console.error(); + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag){ + console.error(); + console.error(" error: unknown option `%s'", flag); + console.error(); + process.exit(1); +}; + + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} flags + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags){ + if (0 == arguments.length) return this._version; + this._version = str; + flags = flags || '-V, --version'; + this.option(flags, 'output the version number'); + this.on('version', function(){ + console.log(str); + process.exit(0); + }); + return this; +}; + +/** + * Set the description `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str){ + if (0 == arguments.length) return this._description; + this._description = str; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str){ + var args = this._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }); + + var usage = '[options' + + (this.commands.length ? '] [command' : '') + + ']' + + (this._args.length ? ' ' + args : ''); + + if (0 == arguments.length) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function(){ + return this.options.reduce(function(max, option){ + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function(){ + var width = this.largestOptionLength(); + + // Prepend the help information + return [pad('-h, --help', width) + ' ' + 'output usage information'] + .concat(this.options.map(function(option){ + return pad(option.flags, width) + + ' ' + option.description; + })) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function(){ + if (!this.commands.length) return ''; + return [ + '' + , ' Commands:' + , '' + , this.commands.map(function(cmd){ + var args = cmd._args.map(function(arg){ + return arg.required + ? '<' + arg.name + '>' + : '[' + arg.name + ']'; + }).join(' '); + + return pad(cmd._name + + (cmd.options.length + ? ' [options]' + : '') + ' ' + args, 22) + + (cmd.description() + ? ' ' + cmd.description() + : ''); + }).join('\n').replace(/^/gm, ' ') + , '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function(){ + return [ + '' + , ' Usage: ' + this._name + ' ' + this.usage() + , '' + this.commandHelp() + , ' Options:' + , '' + , '' + this.optionHelp().replace(/^/gm, ' ') + , '' + , '' + ].join('\n'); +}; + +/** + * Prompt for a `Number`. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptForNumber = function(str, fn){ + var self = this; + this.promptSingleLine(str, function parseNumber(val){ + val = Number(val); + if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber); + fn(val); + }); +}; + +/** + * Prompt for a `Date`. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptForDate = function(str, fn){ + var self = this; + this.promptSingleLine(str, function parseDate(val){ + val = new Date(val); + if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate); + fn(val); + }); +}; + +/** + * Single-line prompt. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptSingleLine = function(str, fn){ + if ('function' == typeof arguments[2]) { + return this['promptFor' + (fn.name || fn)](str, arguments[2]); + } + + process.stdout.write(str); + process.stdin.setEncoding('utf8'); + process.stdin.once('data', function(val){ + fn(val.trim()); + }).resume(); +}; + +/** + * Multi-line prompt. + * + * @param {String} str + * @param {Function} fn + * @api private + */ + +Command.prototype.promptMultiLine = function(str, fn){ + var buf = []; + console.log(str); + process.stdin.setEncoding('utf8'); + process.stdin.on('data', function(val){ + if ('\n' == val || '\r\n' == val) { + process.stdin.removeAllListeners('data'); + fn(buf.join('\n')); + } else { + buf.push(val.trimRight()); + } + }).resume(); +}; + +/** + * Prompt `str` and callback `fn(val)` + * + * Commander supports single-line and multi-line prompts. + * To issue a single-line prompt simply add white-space + * to the end of `str`, something like "name: ", whereas + * for a multi-line prompt omit this "description:". + * + * + * Examples: + * + * program.prompt('Username: ', function(name){ + * console.log('hi %s', name); + * }); + * + * program.prompt('Description:', function(desc){ + * console.log('description was "%s"', desc.trim()); + * }); + * + * @param {String|Object} str + * @param {Function} fn + * @api public + */ + +Command.prototype.prompt = function(str, fn){ + var self = this; + + if ('string' == typeof str) { + if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments); + this.promptMultiLine(str, fn); + } else { + var keys = Object.keys(str) + , obj = {}; + + function next() { + var key = keys.shift() + , label = str[key]; + + if (!key) return fn(obj); + self.prompt(label, function(val){ + obj[key] = val; + next(); + }); + } + + next(); + } +}; + +/** + * Prompt for password with `str`, `mask` char and callback `fn(val)`. + * + * The mask string defaults to '', aka no output is + * written while typing, you may want to use "*" etc. + * + * Examples: + * + * program.password('Password: ', function(pass){ + * console.log('got "%s"', pass); + * process.stdin.destroy(); + * }); + * + * program.password('Password: ', '*', function(pass){ + * console.log('got "%s"', pass); + * process.stdin.destroy(); + * }); + * + * @param {String} str + * @param {String} mask + * @param {Function} fn + * @api public + */ + +Command.prototype.password = function(str, mask, fn){ + var self = this + , buf = ''; + + // default mask + if ('function' == typeof mask) { + fn = mask; + mask = ''; + } + + keypress(process.stdin); + + function setRawMode(mode) { + if (process.stdin.setRawMode) { + process.stdin.setRawMode(mode); + } else { + tty.setRawMode(mode); + } + }; + setRawMode(true); + process.stdout.write(str); + + // keypress + process.stdin.on('keypress', function(c, key){ + if (key && 'enter' == key.name) { + console.log(); + process.stdin.pause(); + process.stdin.removeAllListeners('keypress'); + setRawMode(false); + if (!buf.trim().length) return self.password(str, mask, fn); + fn(buf); + return; + } + + if (key && key.ctrl && 'c' == key.name) { + console.log('%s', buf); + process.exit(); + } + + process.stdout.write(mask); + buf += c; + }).resume(); +}; + +/** + * Confirmation prompt with `str` and callback `fn(bool)` + * + * Examples: + * + * program.confirm('continue? ', function(ok){ + * console.log(' got %j', ok); + * process.stdin.destroy(); + * }); + * + * @param {String} str + * @param {Function} fn + * @api public + */ + + +Command.prototype.confirm = function(str, fn, verbose){ + var self = this; + this.prompt(str, function(ok){ + if (!ok.trim()) { + if (!verbose) str += '(yes or no) '; + return self.confirm(str, fn, true); + } + fn(parseBool(ok)); + }); +}; + +/** + * Choice prompt with `list` of items and callback `fn(index, item)` + * + * Examples: + * + * var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; + * + * console.log('Choose the coolest pet:'); + * program.choose(list, function(i){ + * console.log('you chose %d "%s"', i, list[i]); + * process.stdin.destroy(); + * }); + * + * @param {Array} list + * @param {Number|Function} index or fn + * @param {Function} fn + * @api public + */ + +Command.prototype.choose = function(list, index, fn){ + var self = this + , hasDefault = 'number' == typeof index; + + if (!hasDefault) { + fn = index; + index = null; + } + + list.forEach(function(item, i){ + if (hasDefault && i == index) { + console.log('* %d) %s', i + 1, item); + } else { + console.log(' %d) %s', i + 1, item); + } + }); + + function again() { + self.prompt(' : ', function(val){ + val = parseInt(val, 10) - 1; + if (hasDefault && isNaN(val)) val = index; + + if (null == list[val]) { + again(); + } else { + fn(val, list[val]); + } + }); + } + + again(); +}; + + +/** + * Output help information for this command + * + * @api public + */ + +Command.prototype.outputHelp = function(){ + process.stdout.write(this.helpInformation()); + this.emit('--help'); +}; + +/** + * Output help information and exit. + * + * @api public + */ + +Command.prototype.help = function(){ + this.outputHelp(); + process.exit(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word){ + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Parse a boolean `str`. + * + * @param {String} str + * @return {Boolean} + * @api private + */ + +function parseBool(str) { + return /^y|yes|ok|true$/i.test(str); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] == '--help' || options[i] == '-h') { + cmd.outputHelp(); + process.exit(0); + } + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md new file mode 100644 index 0000000..a768e8f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md @@ -0,0 +1,101 @@ +keypress +======== +### Make any Node ReadableStream emit "keypress" events + + +Previous to Node `v0.8.x`, there was an undocumented `"keypress"` event that +`process.stdin` would emit when it was a TTY. Some people discovered this hidden +gem, and started using it in their own code. + +Now in Node `v0.8.x`, this `"keypress"` event does not get emitted by default, +but rather only when it is being used in conjuction with the `readline` (or by +extension, the `repl`) module. + +This module is the exact logic from the node `v0.8.x` releases ripped out into its +own module. + +__Bonus:__ Now with mouse support! + +Installation +------------ + +Install with `npm`: + +``` bash +$ npm install keypress +``` + +Or add it to the `"dependencies"` section of your _package.json_ file. + + +Example +------- + +#### Listening for "keypress" events + +``` js +var keypress = require('keypress'); + +// make `process.stdin` begin emitting "keypress" events +keypress(process.stdin); + +// listen for the "keypress" event +process.stdin.on('keypress', function (ch, key) { + console.log('got "keypress"', key); + if (key && key.ctrl && key.name == 'c') { + process.stdin.pause(); + } +}); + +process.stdin.setRawMode(true); +process.stdin.resume(); +``` + +#### Listening for "mousepress" events + +``` js +var keypress = require('keypress'); + +// make `process.stdin` begin emitting "mousepress" (and "keypress") events +keypress(process.stdin); + +// you must enable the mouse events before they will begin firing +keypress.enableMouse(process.stdout); + +process.stdin.on('mousepress', function (info) { + console.log('got "mousepress" event at %d x %d', info.x, info.y); +}); + +process.on('exit', function () { + // disable mouse on exit, so that the state + // is back to normal for the terminal + keypress.disableMouse(process.stdout); +}); +``` + + +License +------- + +(The MIT License) + +Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js new file mode 100644 index 0000000..c2ba488 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js @@ -0,0 +1,346 @@ + +/** + * This module offers the internal "keypress" functionality from node-core's + * `readline` module, for your own programs and modules to use. + * + * Usage: + * + * require('keypress')(process.stdin); + * + * process.stdin.on('keypress', function (ch, key) { + * console.log(ch, key); + * if (key.ctrl && key.name == 'c') { + * process.stdin.pause(); + * } + * }); + * proces.stdin.resume(); + */ +var exports = module.exports = keypress; + +exports.enableMouse = function (stream) { + stream.write('\x1b' +'[?1000h') +} + +exports.disableMouse = function (stream) { + stream.write('\x1b' +'[?1000l') +} + + +/** + * accepts a readable Stream instance and makes it emit "keypress" events + */ + +function keypress(stream) { + if (isEmittingKeypress(stream)) return; + stream._emitKeypress = true; + + function onData(b) { + if (stream.listeners('keypress').length > 0) { + emitKey(stream, b); + } else { + // Nobody's watching anyway + stream.removeListener('data', onData); + stream.on('newListener', onNewListener); + } + } + + function onNewListener(event) { + if (event == 'keypress') { + stream.on('data', onData); + stream.removeListener('newListener', onNewListener); + } + } + + if (stream.listeners('keypress').length > 0) { + stream.on('data', onData); + } else { + stream.on('newListener', onNewListener); + } +} + +/** + * Returns `true` if the stream is already emitting "keypress" events. + * `false` otherwise. + */ + +function isEmittingKeypress(stream) { + var rtn = stream._emitKeypress; + if (!rtn) { + // hack: check for the v0.6.x "data" event + stream.listeners('data').forEach(function (l) { + if (l.name == 'onData' && /emitKey/.test(l.toString())) { + rtn = true; + stream._emitKeypress = true; + } + }); + } + if (!rtn) { + // hack: check for the v0.6.x "newListener" event + stream.listeners('newListener').forEach(function (l) { + if (l.name == 'onNewListener' && /keypress/.test(l.toString())) { + rtn = true; + stream._emitKeypress = true; + } + }); + } + return rtn; +} + + +/* + Some patterns seen in terminal key escape codes, derived from combos seen + at http://www.midnight-commander.org/browser/lib/tty/key.c + + ESC letter + ESC [ letter + ESC [ modifier letter + ESC [ 1 ; modifier letter + ESC [ num char + ESC [ num ; modifier char + ESC O letter + ESC O modifier letter + ESC O 1 ; modifier letter + ESC N letter + ESC [ [ num ; modifier char + ESC [ [ 1 ; modifier letter + ESC ESC [ num char + ESC ESC O letter + + - char is usually ~ but $ and ^ also happen with rxvt + - modifier is 1 + + (shift * 1) + + (left_alt * 2) + + (ctrl * 4) + + (right_alt * 8) + - two leading ESCs apparently mean the same as one leading ESC +*/ + +// Regexes used for ansi escape code splitting +var metaKeyCodeRe = /^(?:\x1b)([a-zA-Z0-9])$/; +var functionKeyCodeRe = + /^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/; + +function emitKey(stream, s) { + var ch, + key = { + name: undefined, + ctrl: false, + meta: false, + shift: false + }, + parts; + + if (Buffer.isBuffer(s)) { + if (s[0] > 127 && s[1] === undefined) { + s[0] -= 128; + s = '\x1b' + s.toString(stream.encoding || 'utf-8'); + } else { + s = s.toString(stream.encoding || 'utf-8'); + } + } + + key.sequence = s; + + if (s === '\r' || s === '\n') { + // enter + key.name = 'enter'; + + } else if (s === '\t') { + // tab + key.name = 'tab'; + + } else if (s === '\b' || s === '\x7f' || + s === '\x1b\x7f' || s === '\x1b\b') { + // backspace or ctrl+h + key.name = 'backspace'; + key.meta = (s.charAt(0) === '\x1b'); + + } else if (s === '\x1b' || s === '\x1b\x1b') { + // escape key + key.name = 'escape'; + key.meta = (s.length === 2); + + } else if (s === ' ' || s === '\x1b ') { + key.name = 'space'; + key.meta = (s.length === 2); + + } else if (s <= '\x1a') { + // ctrl+letter + key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1); + key.ctrl = true; + + } else if (s.length === 1 && s >= 'a' && s <= 'z') { + // lowercase letter + key.name = s; + + } else if (s.length === 1 && s >= 'A' && s <= 'Z') { + // shift+letter + key.name = s.toLowerCase(); + key.shift = true; + + } else if (parts = metaKeyCodeRe.exec(s)) { + // meta+character key + key.name = parts[1].toLowerCase(); + key.meta = true; + key.shift = /^[A-Z]$/.test(parts[1]); + + } else if (parts = functionKeyCodeRe.exec(s)) { + // ansi escape sequence + + // reassemble the key code leaving out leading \x1b's, + // the modifier key bitflag and any meaningless "1;" sequence + var code = (parts[1] || '') + (parts[2] || '') + + (parts[4] || '') + (parts[6] || ''), + modifier = (parts[3] || parts[5] || 1) - 1; + + // Parse the key modifier + key.ctrl = !!(modifier & 4); + key.meta = !!(modifier & 10); + key.shift = !!(modifier & 1); + key.code = code; + + // Parse the key itself + switch (code) { + /* xterm/gnome ESC O letter */ + case 'OP': key.name = 'f1'; break; + case 'OQ': key.name = 'f2'; break; + case 'OR': key.name = 'f3'; break; + case 'OS': key.name = 'f4'; break; + + /* xterm/rxvt ESC [ number ~ */ + case '[11~': key.name = 'f1'; break; + case '[12~': key.name = 'f2'; break; + case '[13~': key.name = 'f3'; break; + case '[14~': key.name = 'f4'; break; + + /* from Cygwin and used in libuv */ + case '[[A': key.name = 'f1'; break; + case '[[B': key.name = 'f2'; break; + case '[[C': key.name = 'f3'; break; + case '[[D': key.name = 'f4'; break; + case '[[E': key.name = 'f5'; break; + + /* common */ + case '[15~': key.name = 'f5'; break; + case '[17~': key.name = 'f6'; break; + case '[18~': key.name = 'f7'; break; + case '[19~': key.name = 'f8'; break; + case '[20~': key.name = 'f9'; break; + case '[21~': key.name = 'f10'; break; + case '[23~': key.name = 'f11'; break; + case '[24~': key.name = 'f12'; break; + + /* xterm ESC [ letter */ + case '[A': key.name = 'up'; break; + case '[B': key.name = 'down'; break; + case '[C': key.name = 'right'; break; + case '[D': key.name = 'left'; break; + case '[E': key.name = 'clear'; break; + case '[F': key.name = 'end'; break; + case '[H': key.name = 'home'; break; + + /* xterm/gnome ESC O letter */ + case 'OA': key.name = 'up'; break; + case 'OB': key.name = 'down'; break; + case 'OC': key.name = 'right'; break; + case 'OD': key.name = 'left'; break; + case 'OE': key.name = 'clear'; break; + case 'OF': key.name = 'end'; break; + case 'OH': key.name = 'home'; break; + + /* xterm/rxvt ESC [ number ~ */ + case '[1~': key.name = 'home'; break; + case '[2~': key.name = 'insert'; break; + case '[3~': key.name = 'delete'; break; + case '[4~': key.name = 'end'; break; + case '[5~': key.name = 'pageup'; break; + case '[6~': key.name = 'pagedown'; break; + + /* putty */ + case '[[5~': key.name = 'pageup'; break; + case '[[6~': key.name = 'pagedown'; break; + + /* rxvt */ + case '[7~': key.name = 'home'; break; + case '[8~': key.name = 'end'; break; + + /* rxvt keys with modifiers */ + case '[a': key.name = 'up'; key.shift = true; break; + case '[b': key.name = 'down'; key.shift = true; break; + case '[c': key.name = 'right'; key.shift = true; break; + case '[d': key.name = 'left'; key.shift = true; break; + case '[e': key.name = 'clear'; key.shift = true; break; + + case '[2$': key.name = 'insert'; key.shift = true; break; + case '[3$': key.name = 'delete'; key.shift = true; break; + case '[5$': key.name = 'pageup'; key.shift = true; break; + case '[6$': key.name = 'pagedown'; key.shift = true; break; + case '[7$': key.name = 'home'; key.shift = true; break; + case '[8$': key.name = 'end'; key.shift = true; break; + + case 'Oa': key.name = 'up'; key.ctrl = true; break; + case 'Ob': key.name = 'down'; key.ctrl = true; break; + case 'Oc': key.name = 'right'; key.ctrl = true; break; + case 'Od': key.name = 'left'; key.ctrl = true; break; + case 'Oe': key.name = 'clear'; key.ctrl = true; break; + + case '[2^': key.name = 'insert'; key.ctrl = true; break; + case '[3^': key.name = 'delete'; key.ctrl = true; break; + case '[5^': key.name = 'pageup'; key.ctrl = true; break; + case '[6^': key.name = 'pagedown'; key.ctrl = true; break; + case '[7^': key.name = 'home'; key.ctrl = true; break; + case '[8^': key.name = 'end'; key.ctrl = true; break; + + /* misc. */ + case '[Z': key.name = 'tab'; key.shift = true; break; + default: key.name = 'undefined'; break; + + } + } else if (s.length > 1 && s[0] !== '\x1b') { + // Got a longer-than-one string of characters. + // Probably a paste, since it wasn't a control sequence. + Array.prototype.forEach.call(s, function(c) { + emitKey(stream, c); + }); + return; + } + + if (key.code == '[M') { + key.name = 'mouse'; + var s = key.sequence; + var b = s.charCodeAt(3); + key.x = s.charCodeAt(4) - 040; + key.y = s.charCodeAt(5) - 040; + + key.scroll = 0; + + key.ctrl = !!(1<<4 & b); + key.meta = !!(1<<3 & b); + key.shift = !!(1<<2 & b); + + key.release = (3 & b) === 3; + + if (1<<6 & b) { //scroll + key.scroll = 1 & b ? 1 : -1; + } + + if (!key.release && !key.scroll) { + key.button = b & 3; + } + } + + // Don't emit a key if no name was found + if (key.name === undefined) { + key = undefined; + } + + if (s.length === 1) { + ch = s; + } + + if (key && key.name == 'mouse') { + stream.emit('mousepress', key) + } else if (key || ch) { + stream.emit('keypress', ch, key); + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json new file mode 100644 index 0000000..17ac668 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json @@ -0,0 +1,31 @@ +{ + "name": "keypress", + "version": "0.1.0", + "description": "Make any Node ReadableStream emit \"keypress\" events", + "author": { + "name": "Nathan Rajlich", + "email": "nathan@tootallnate.net", + "url": "http://tootallnate.net" + }, + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git://github.com/TooTallNate/keypress.git" + }, + "keywords": [ + "keypress", + "readline", + "core" + ], + "license": "MIT", + "readme": "keypress\n========\n### Make any Node ReadableStream emit \"keypress\" events\n\n\nPrevious to Node `v0.8.x`, there was an undocumented `\"keypress\"` event that\n`process.stdin` would emit when it was a TTY. Some people discovered this hidden\ngem, and started using it in their own code.\n\nNow in Node `v0.8.x`, this `\"keypress\"` event does not get emitted by default,\nbut rather only when it is being used in conjuction with the `readline` (or by\nextension, the `repl`) module.\n\nThis module is the exact logic from the node `v0.8.x` releases ripped out into its\nown module.\n\n__Bonus:__ Now with mouse support!\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install keypress\n```\n\nOr add it to the `\"dependencies\"` section of your _package.json_ file.\n\n\nExample\n-------\n\n#### Listening for \"keypress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"keypress\" events\nkeypress(process.stdin);\n\n// listen for the \"keypress\" event\nprocess.stdin.on('keypress', function (ch, key) {\n console.log('got \"keypress\"', key);\n if (key && key.ctrl && key.name == 'c') {\n process.stdin.pause();\n }\n});\n\nprocess.stdin.setRawMode(true);\nprocess.stdin.resume();\n```\n\n#### Listening for \"mousepress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"mousepress\" (and \"keypress\") events\nkeypress(process.stdin);\n\n// you must enable the mouse events before they will begin firing\nkeypress.enableMouse(process.stdout);\n\nprocess.stdin.on('mousepress', function (info) {\n console.log('got \"mousepress\" event at %d x %d', info.x, info.y);\n});\n\nprocess.on('exit', function () {\n // disable mouse on exit, so that the state\n // is back to normal for the terminal\n keypress.disableMouse(process.stdout);\n});\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/TooTallNate/keypress/issues" + }, + "_id": "keypress@0.1.0", + "_from": "keypress@0.1.x" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js new file mode 100644 index 0000000..c3f61d7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js @@ -0,0 +1,28 @@ + +var keypress = require('./') +keypress(process.stdin) + +if (process.stdin.setRawMode) + process.stdin.setRawMode(true) +else + require('tty').setRawMode(true) + +process.stdin.on('keypress', function (c, key) { + console.log(0, c, key) + if (key && key.ctrl && key.name == 'c') { + process.stdin.pause() + } +}) +process.stdin.on('mousepress', function (mouse) { + console.log(mouse) +}) + +keypress.enableMouse(process.stdout) +process.on('exit', function () { + //disable mouse on exit, so that the state is back to normal + //for the terminal. + keypress.disableMouse(process.stdout) +}) + +process.stdin.resume() + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json new file mode 100644 index 0000000..ecb79aa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json @@ -0,0 +1,40 @@ +{ + "name": "commander", + "version": "1.1.1", + "description": "the complete solution for node.js command-line programs", + "keywords": [ + "command", + "option", + "parser", + "prompt", + "stdin" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "repository": { + "type": "git", + "url": "https://github.com/visionmedia/commander.js.git" + }, + "dependencies": { + "keypress": "0.1.x" + }, + "devDependencies": { + "should": ">= 0.0.1" + }, + "scripts": { + "test": "make test" + }, + "main": "index", + "engines": { + "node": ">= 0.6.x" + }, + "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## .outputHelp()\n\n Output help information without exiting.\n\n## .help()\n\n Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/visionmedia/commander.js/issues" + }, + "_id": "commander@1.1.1", + "_from": "commander@1.1.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore new file mode 100644 index 0000000..9303c34 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore @@ -0,0 +1,2 @@ +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml new file mode 100644 index 0000000..84fd7ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js new file mode 100644 index 0000000..e692421 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js new file mode 100644 index 0000000..fda6de8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js @@ -0,0 +1,82 @@ +var path = require('path'); +var fs = require('fs'); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, mode, f, made) { + if (typeof mode === 'function' || mode === undefined) { + f = mode; + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + fs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), mode, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, mode, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + fs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, mode, made) { + if (mode === undefined) { + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + try { + fs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), mode, made); + sync(p, mode, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = fs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json new file mode 100644 index 0000000..bd9194b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json @@ -0,0 +1,33 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "0.3.5", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "main": "./index", + "keywords": [ + "mkdir", + "directory" + ], + "repository": { + "type": "git", + "url": "http://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "devDependencies": { + "tap": "~0.4.0" + }, + "license": "MIT", + "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", + "readmeFilename": "readme.markdown", + "bugs": { + "url": "https://github.com/substack/node-mkdirp/issues" + }, + "_id": "mkdirp@0.3.5", + "_from": "mkdirp@0.3.x" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown new file mode 100644 index 0000000..83b0216 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown @@ -0,0 +1,63 @@ +# mkdirp + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +# example + +## pow.js + +```js +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); +``` + +Output + +``` +pow! +``` + +And now /tmp/foo/bar/baz exists, huzzah! + +# methods + +```js +var mkdirp = require('mkdirp'); +``` + +## mkdirp(dir, mode, cb) + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +## mkdirp.sync(dir, mode) + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +Returns the first directory that had to be created, if any. + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install mkdirp +``` + +# license + +MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js new file mode 100644 index 0000000..520dcb8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js @@ -0,0 +1,38 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +test('chmod-pre', function (t) { + var mode = 0744 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); + t.end(); + }); + }); +}); + +test('chmod', function (t) { + var mode = 0755 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.end(); + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js new file mode 100644 index 0000000..0eb7099 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js @@ -0,0 +1,37 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +// a file in the way +var itw = ps.slice(0, 3).join('/'); + + +test('clobber-pre', function (t) { + console.error("about to write to "+itw) + fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); + + fs.stat(itw, function (er, stat) { + t.ifError(er) + t.ok(stat && stat.isFile(), 'should be file') + t.end() + }) +}) + +test('clobber', function (t) { + t.plan(2); + mkdirp(file, 0755, function (err) { + t.ok(err); + t.equal(err.code, 'ENOTDIR'); + t.end(); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js new file mode 100644 index 0000000..b07cd70 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('woo', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js new file mode 100644 index 0000000..23a7abb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('async perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); + +test('async root perm', function (t) { + mkdirp('/tmp', 0755, function (err) { + if (err) t.fail(err); + t.end(); + }); + t.end(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js new file mode 100644 index 0000000..f685f60 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js @@ -0,0 +1,39 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; + + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); + +test('sync root perm', function (t) { + t.plan(1); + + var file = '/tmp'; + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js new file mode 100644 index 0000000..96a0447 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js @@ -0,0 +1,41 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('race', function (t) { + t.plan(4); + var ps = [ '', 'tmp' ]; + + for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); + } + var file = ps.join('/'); + + var res = 2; + mk(file, function () { + if (--res === 0) t.end(); + }); + + mk(file, function () { + if (--res === 0) t.end(); + }); + + function mk (file, cb) { + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + if (cb) cb(); + } + }) + }) + }); + } +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js new file mode 100644 index 0000000..7985824 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('rel', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var cwd = process.cwd(); + process.chdir('/tmp'); + + var file = [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + process.chdir(cwd); + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js new file mode 100644 index 0000000..bce68e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js @@ -0,0 +1,25 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(4); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, '/tmp/' + x); + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, null); + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js new file mode 100644 index 0000000..7c222d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js @@ -0,0 +1,24 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + // Note that this will throw on failure, which will fail the test. + var made = mkdirp.sync(file); + t.equal(made, '/tmp/' + x); + + // making the same file again should have no effect. + made = mkdirp.sync(file); + t.equal(made, null); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js new file mode 100644 index 0000000..97ad7a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js @@ -0,0 +1,18 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('root', function (t) { + // '/' on unix, 'c:/' on windows. + var file = path.resolve('/'); + + mkdirp(file, 0755, function (err) { + if (err) throw err + fs.stat(file, function (er, stat) { + if (er) throw er + t.ok(stat.isDirectory(), 'target is a directory'); + t.end(); + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js new file mode 100644 index 0000000..7530cad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file, 0755); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js new file mode 100644 index 0000000..64ccafe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('implicit mode from umask', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0777 & (~process.umask())); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js new file mode 100644 index 0000000..35bd5cb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('umask sync modes', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, (0777 & (~process.umask()))); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore new file mode 100644 index 0000000..28f1ba7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore @@ -0,0 +1,2 @@ +node_modules +.DS_Store \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml new file mode 100644 index 0000000..4a83e22 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.11" + - "0.10" + - "0.8" diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE new file mode 100644 index 0000000..417af37 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2013, Sam Saccone +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md new file mode 100644 index 0000000..370bb9b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md @@ -0,0 +1,67 @@ +[![Build Status](https://travis-ci.org/samccone/monocle.png?branch=master)](https://travis-ci.org/samccone/monocle) + +# Monocle -- a tool for watching things + +[![logo](https://raw.github.com/samccone/monocle/master/logo.png)](https://raw.github.com/samccone/monocle/master/logo.png) + +Have you ever wanted to watch a folder and all of its files/nested folders for changes. well now you can! + +## Installation + +``` +npm install monocle +``` + +## Usage + +### Watch a directory: + +```js +var monocle = require('monocle')() +monocle.watchDirectory({ + root: , + fileFilter: , + directoryFilter: , + listener: fn(fs.stat+ object), //triggered on file change / addition + complete: //file watching all set up +}); +``` + +The listener will recive an object with the following + +```js + name: , + path: , + fullPath: , + parentDir: , + fullParentDir: , + stat: +``` + +[fs.stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) + +When a new file is added to the directoy it triggers a file change and thus will be passed to your specified listener. + +The two filters are passed through to `readdirp`. More documentation can be found [here](https://github.com/thlorenz/readdirp#filters) + +### Watch a list of files: + +```js +Monocle.watchFiles({ + files: [], //path of file(s) + listener: , //triggered on file / addition + complete: //file watching all set up +}); +``` + +## Why not just use fs.watch ? + + - file watching is really bad cross platforms in node + - you need to be smart when using fs.watch as compared to fs.watchFile + - Monocle takes care of this logic for you! + - windows systems use fs.watch + - osx and linux uses fs.watchFile + +## License + +BSD diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/logo.png b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..39d665f755e7eb063b4bd77e5d5a68ebe199091d GIT binary patch literal 25575 zcmc$F^;cC-*zch`MM7FaM7q06K0|bKd z=Jgv2lAMYUfgsCSh>FU~o7+0tI+)wqk$n~wCA0f(YieO-0)eh7U z$b|a-ma$cQi%6y@67Gu=LrqJLgee_Lo;Ckgp&d(H9G0*zGZZE&$~WSz0v&1?@*Khz zd3IDlPH5P`!@5V#x0$A!o#E%2S%KY>i?r%dgf>Lfcqvu|c3;#&5fZGmfZnd2^(_V= zKV(Wf2qt2+F}cGN1r+4gn~(3)`!<9Y2$bt23L>QKOG+CPQOFC%fk=`zly4wZn_~=@ z45BX%M94i#Bo87a0p**PNUa3PgoWr28X0av5Htp)zA2 zWN%DD#USRqkdjf=FmZ@F69mUpri&XgM-O58tY#_&si=drjbNfwK@d?PObVevA0e?M0$G!H8lnjnvu_VpKv$~pbe6R z7&_dN2w42sFxD=HAdt+Mw_vmvPp%{AWg{aTQMKrL^ari*FYgTvH=nmhi|vFUkab7z z@n<^5>UX}p@V?g1*;FU6=DH}EPB-DERTx4wkj(uBwF|q~xe?F$SwBC&y|pzb-6f)B zFreo3Y}TRIruJlY=gs$cbG6p8LFvb$<0lDwyVfyuDVs|)`U@%0aA_x6^05x(<&k*u zeb;BhdUaZyO$BWGD6!;-3zppXKSX|g?53J{G2U3Edw>yGWrtK)3P5?p&==?!!CcFH zz*Ki^+qi*1&Kqspr)Usie9Z&aM_pb{1)n4{sUW_lpMTjyAi83d49Wx5g1unziDmlH zRtOVbw&T;a!4tK^Ew!UO>T?8&P>J9AhC`K(v>sZ4V!Twabc$p{G-%l8X*0)@ZQueFayxz=cEeAh$z{x7LYiRU;-67KD>`D zkok|g0qd>{-;jklL|uxGVg@_<4I`#UsAv}_CH4dI z@Fs~Y!YVn*ipvFA%2@2tnj)oHwTk5mAq8*PoRYbR18_gf4J(D{5GIB)QpB81s?(5jKBrIJW)1}U^1MbSDA^E`7m)e z2_wl?MV+>m*7I%50CJpk9CaKaEu(T_QC`tX5sJ!%%Aj&|p{|lwnS=_f(q*8lAG8a-x3}GAs2qn|jDlj0mb->BzsK6$d-{ zv3F5d4$pf!(>5kP5jTeO7Zql4i?T|ys#Pmq{5BOt*i5v)O?CW=v`dqpaN!-cf^+(D z<0D}nn`}L^iT1am_=I@%VyR+5eNlb6i^-Y(x&0leA-n}RCVti75vcAv1l0;R9 zuSTVWUql_j=j&#-x8);d>|H!l5Y_1v63sP;Ge}qujHw^z%bAvll)#9v=+WM!+_dho z?#ZEsrzWSC`Eu~(Bw6uGecs1BURhq*-r=F)?BSUt_7r~RS(e?D-IUps)jEAmS53Ow zg4(|(pR2Ys^E6Isn{0wKxixatRWx;~B}&susb(5W8}qU9>%Yc+El!^?>#R7d?XNAY zBdFM(gI_GGwXXFtFf+t6tLrZ7Jc(_N^=j~neBwty3zmV7WkgADX_`Mxx%udp*O_YR@YZIDA#G5t{1c_ z>O=8j{NnyH4$1eWf--~o;V0~;1^saA?n&MnCCIaAa$PllEF6(pFZ@NgoDFOZf;|kT8bj0SY3iS?WQe#KXv;WktXftdk1s+t z(l$^wJ@674`*iHwvPL>CgYt0;8L;Vi;)P^GzjFQlCyYs3fEz(|{>FtW3fZlLxWnu{ z<2c87=$xoFEy>q&DcUdYzm8&>*xe|*S##;O>jOU&{%n#(lU+{XNyklgCbMSY=V@jR z_!aZhUZjZpOKh##f!U6!^I(ZdP}Os{O?Vw6NgP7|x9XoIa2oW;wIX?Y%9=E@vpuQcVs330#c^xjz9_z@dGit2X z7~BV^5emHh5mtt?h?nrzXO3pcb(=86cAzzB>Gywy#a;Erqoxz4`#UT2>00RVMF~3z z=r(Bc3;&_5s{VI;buGTgm@rJU*cebNTA$O(_qWL;zkg(yS5Wzn@}=^D=S9Nd^(gw?N8>7b<5_Ty z@F-bFm?U*3HX~-V6iGf$mPk=be$X=1YLFWe7@s*o#KL6`@UbVRWM(wX! zaygHl^?~C7-*fDwTyJA)V{%!&_P6>I_vRW8)0=(5bk33G%VxJT+?Sc@bZ-9T<_mY* zo9>&dRorFo?;oB<1{>#HKAe;`$u;R+3LOj2i!O&u3u-+t&7Cg!Shl%jUW_kE-oOV1 zj6TO)MPrDA+S#lvh%~{2e+wvsyp?NXCtGrSg z%YTR^h>d-Lg-N`4G-9P+1bCCoNJ{Yw1maEwf%pbMAa^g|_dW#T!~}sH=tCepi4X{$ z?JvD<2?#_3`?Hv^vg^W8nwzKc^xcc#&B}aizi|eoF$EzxrI0Tyla;^B+nO+$Pc}7{ zr8R$*uFSM*vX9kDQS`N}mrDmsi|H6>C@HO=u*rrfkGIWqB!E8AV{4|&ybFOIxr9fk;{;>ygcgN>qXnT zpx|KY!s&zm+S=L*6Lg%DEGP56z!4J@&u7!b|4c&k$4A0fz!7H&kTi7NO>;RoZGCxW zGYiVj&i*&s`dp)bcfKtVC(Vu~M3xjqhKP;Hm{(cJ{DGF%@=Sm5Q=IgY!ze$RoZyqA zikO%fpD#_-``4LG_ZwNaQ)c7j)cTsrl|{?QcoQQ;5sglLFwdO%h-Zpe~E zD?QT_qyg_qBm}KO^*UsVBLhT#`IYf; zgSkeR^3z~6!fco0g||hM`%FX_ekK~`HJXp-39TjfSLHs-Tox05+R9s>7pgq(&Ld*H zv;O>{d@#%Ka<-c((a3`QDhNY*9XClNdPq)TP0h5TwsuKDaj_CRC+8<*6ciW?QURi= z`FW(2VUG8l@zS}WVPPUJE}V`$%LUC$Zj`TU`R`ZW(F-SQYwMmgUYC2Hvu->E$tWVE zgX80%adX(w3tc0`A7Y@lH_E<%RYDpa6%_?jy6_&+A9jmKlL%eXOGhVdJ62BM$L(HD z^hQHN16R&CVo0ZODU7dlZpX6A>hix16h>tPSlB;)8&Zh=|4gAO7mpw6tmd;_ujkE_ zQc_ZKsbi5&H0RkA#?9GYugQ2{q^$03f4|d~e@6tycg6xW?)7k7_m*?j^I~abMYrgQ z9FvGB0z9wNvGeUgjd&BYSaEPiU4#XmU;uZkFV8nh1q&gge?G@nSTEK#C9#?X2N;4+ zhc$*)G^tci4i5{PTeNNEclfhG6AayJ9~vE9x9YZ=Hhp$>mRD89vMMKVM+vq@@Wr3? z|4K?qS{Pd&&+X*p$M_(~2a2E&YS+|0fy zD=Q;*GJQ0Q3eQ$wn3|euF&$36#SnaCnlP+%l@;f^T?;_-c{-6dM(c2drtUNqCL=>c@^y;NEPkNqbK?mz0q+d_>_Wp%RY;SG`952?9s{dymBiPB* zKQ)YKIK>RLhb=yi*oMCL*i~%izaRz~+JA{peSUc&7JPVz+Q~F=MoC7Uz8em ziHg<2e;>aO#?!~7rKK5N3$?emyPo%d7%Z#bNxr_lbuCn;jYPoY!5w`cwoz%+8+9e{ ze7kAU=zKikDuOc7*T-bD+VUhXB_#z9Aw8IcWj6e+RXP*3vt!!(MAlX+OmQsKPTyTOCe(|~Rkv1dOxSh*O>kwCtIxPf*p1A|w7R~fxLBq_ zvlI~>Jy;^=2NdREa6(y)IvrY2P|y+rsV8Q${bo;JJ2ffMM;2Dr$kvDDQ|SacjR`z_ ze0=w7qHeA%o$}d)ma7>p1IFgd37qPAzA~*EW!i2q(cve}H@dy^NbiyS@vkMf&l(zd zp1^|+Sam-v{Zmv#yI+7H6#k^ok#ghtuN@)C-rhcH(q<^yM=4LX(#hHR1XoAWtZorQ zSw+R9_33)Cmz9+_Z5g&add_$Re8D|$M*p_+NC2QdY!xBRe;%id(1oGz!J zJiAk2_a`pcXSV+R%O&aI@n91}7P<~TYuIDO>t@+Vv()+M;o1#jc42JnXY=>%0oAC@ z)bzdG-4E{~d-wxf*TYUuPL4na@qV$cTb?;MJr&$xB*w;m-*P_iDR+8$dfvJ5$(JTf zhh(L|@(cB3I)!A^R?GFmw{CFvSiPEwjMw?{G+h%D6GZoDWTEXS@S_)SJZTIM52vlG zt*@V#B+KD_f3+V{^6}%x{{Eq%BZuv+1U>Ki%lCpU%dhMIzyH{Flg!c!Bf`TS`nJ!R zZ&>2#wPu>V9P0;rah zV49klowkDYo&29>DVL2TJ}oWn_le2LVNq^wK0a->lwmi2vfs`wE@rm#Roi0&ai6qc zU|@P5yFIOO0!2K=d$A@)k#<(5;C%gm>4V%FRy(i z|LW)mHnu704PjSu2?dp9u0lhirQ?eI*OKY z8GY&Fy*M??aLF4=dg1p#DtC2vD<;t{K! zQ?JaHELD|*KmN6geh@{%zhDR21s%T4p9lTPJ|@(FzCNj=#X80hEG*x7d?7{fhW?p& zuvrb2m6f*34Nl{vV25vkwg_q~Rz1OB6(Sm1H|WS3=NB0-P5fYnqfO>rAvw5Kdns z3AO*$TaO}GcaNaxa0gdDl{c{zS5#o;)a}CMM>(xV)udzlYG)YGh~# z$Am@Wz})>E9`P6ak5CH5(}_GzMQ7P7txujl~F;|tn zBq@cH`)y39&@eD(Z7>+h{Gi*HzES47^eqU`=M0S^$*tU%Y=~1aN{Jpp=hs|Jd`4Hr`Y5#p6`@@A z%RW^Mj%lK9^;vSDZq+-asfiDWaSDqkF7s6;!Cz81h|v%c6Hykl0`c=hvt1vz`eT=0 z(NIaV$IX4zlozNkm0(eqz1A3(PoD-4HaFiuks0vKca%b7zk3(Pd)idJ6R%}s@l{49 zKqM;^22)^6t!~*yaB618GfE6oLHay$tzJI+> zXYilkfB*hLf(<6VVq~~()_o?1l_8|NqQ2bvICecx>G-mS_2#Jwl1L|HgkYBqKj(%& zr-R7mV$Y-%gth$p&=6ErgNN(m2V6RJOrDjN2E=|@~k1gxLgqKiIP_cZu!x*21Y+CMiuJhB~i}={t<6`=a$N#NN%cFzT1y%X3rj(BVyWwG88ixTj1)x7vkDHULCoq-|K2KM(!Y2`k7|6&S zfEB8F9+uWQM@%*cN$3i_!iP;THFcMl$h4+?s+XUHy96 zB3|S5KQEK~9$D7(7JYSsgc1xcKP=?SCK;|axn1}HK43Q%MsM3i9%lGiODlzelXKP< zENg>R?+5EHDfsKOv%pvImm~NvKN=B$s*(5?`uj`;WV72t?QmSp4z;&z$TuhU7i)u% z3+caU-L=@XwsGk;eLnVa0ZmaY)K2}^F8EqS%pDya`Fy2{;*h?CcN-Qm(9szSJY7x} z&}-F-IXOACn^s5eec_H0_4I6dsvZ^KO-xTe>17&nv@L^`C{zx+S@rQb27T?o%hQv= zukPzFlo^TwcV)kwR=J!OZZ=n_0$UgklML+GiF>6EmgG0bEJ>(0%PxAI;fyWnrQ_y1 zzEx~;i6qFGRdscBSK#7553oY82L}he+}+(J_#}RqXu!h4uGO_ZS$7wy6es)p`x`=a zDaJu$b#!!`!Ocgg5q2r21&B^E`02+e#@a>y#Q6>L@=S8OLngn7JV%tnJASge8#1fs z^K{GTeTKq2SXEu9%7-0GhWG(+HxCZm6{2&{CjR_aSJ!F95j`;M<>h4$x?D}EZgazX zdipOt_S&@O0SyjtVnoN7n`h#Lj*Ei|j>8?y^^Km2D8GNC$(y~)l&%$hH{^T4f7RQk z&P3EEh0nCK{}5+S{)a2X-RK)l@{VSf=7>ovc6Y(bDT530lL&bz_GW7Q@L4j*-EyN z*m#JddH{ia0Ilv_DtLz^Y(a>5{>SfC1C zR7m7xiA8QkYgW%MRoJcy>;u^Qrn?`lFBPeI@cd;G)AAh!Prl#CFU}+vcEs) zPH@T3z+nIMuH@KW+xxXofs0Cmv=`{E%KDgafYl@dZQ{v>zYi;Y^Zp(A+(P?}bLWC_ z;C>)6f5;XSiBhNHE{4o7+^J7glc8LF_ZF<39_*XTlL{70G{}guV$6mWckDA}8XJ@YXwtS>L!)_kJ-8#?~sRblP{N z6W4KJplH0o( zJ|ySmK2P5k=yyNL@qRfnGF8Ymk{{ZafV@NiV!$+=_) zGdnur6i$ZNjULkZK1S*{-QWo9_Id+;FyMGO0AHp)U(M?2txbc01nj!8v9m|+iAqso z2Zn@fzJje=0RI-^Q&Z_^al*_Y%*x`FWTGLbi_x7HA8m$zAGZEMjD5)tSzUs=%wdrt zx_^I!_Gmxy83!sLMp%J8fD{@3NPt>YB^*{~nM0j!M!}}D0(xI7qn0FFE_ zc7~%uNZifib<0CqTLpF9_j6xc45x$pAT)Hr(cYfi0Z4VhD)>j*dfUxtc?u+=d!YT*i@pC0jVY8C0o(PI zE}8D$;z37MNp_d>g!ptv_*qDzsGB#+Ae!Z^on2>3yr}{6L@iV*sdymxTj3k=QhTLX6QOcpdlTx8;29Crjev;}x3i zwY7;}20oSJFlf~d0kuF(@uo)%A4*h`3-{ct7JXym%&h+V!Y&j^lQ2 zna@=^G9O(bj5pUo_<5O_)YAl+65PgI<@>Fjoha863Nu(ZI0HZk5UQ%GT!TcIk%Sz5 z^t!WYNa_}kn*m{KuR3CLm7tS;I4o~nxtlYJj$9DHr5oIc;yp3ft+Ua|)hvyIFO7c> zMc{Ps;^{i~agN{zoP{2#Ser?BVG?R=-qn18c8xJt!X7)6}BimF9$=o}Sc#f`aZG>%sH$^Hi{64_qk8jC>2(2tyQuuZ-X_EL0L> zmSHUHc-XNx$7=WqKa^>(EDa)d6s~o4egO9bLylCBJ!z_g6ca3GW_PDyPzQ&M9!GN2NxUw{XE;|}jg2-AXKenf^9d}=#c#czZoUQPK#<_$Iz}SD z2M6V^Gh*eY*CjSQJRG@si!}_io}3o-EubqF@DMi&yFy-lf}15+H#`bjpT&TcPSHUF zit#<>rw7l#PP9Og zK-yLOKM3^*rs`=H5sops^^!7wBhh3lt1vcKY;qSOxq6Ypb20jVUVO91f<4eB+ho4w1{NtH@8WfVtbQKHgpQ9+xFJH+uQFy52sP zm6gTZof+WwZGVS_hc^TyJ_M-z?jzxx)f7+!jietAv9@S~Yj*>{_R2d|_KTCt+hN+c zQV!UuJ5YG&b^IqG=%Tk`i6DKjZEmL>z^(R3f>k*=K5HgoZ_iw7vm935a*qs<>ShN8 z5+b6Il9E!HVjlT4Uj7h@GFiAvA)Nf0O$^?I{5PR^sE5n zaR;=ZS~q|RC478*G_z%(SxoU2+_fkc1k*OolZv)1hZxq{Y2OrnjM&My_8_;+;LN$R zC4ek7{79gI#w830s5u*xed5nESwT(GhRYcb-Pka+TKbEn=Y2;7T$~X0`4Og}pOcZS zr~$TsW39ba(`JStsYq4B4D5*gAa}j9yZfL~s``~7;X<`IuDHBh&B@WRFITY;|IHgC zAYs%51_sV;f9Ecjr-7~4W}wAE7S56nMGg{CE}s5(b`~Q;`Aa`_K`_-hoDzz_D455w zTZ%4m)(*O=f_nSilg;}29jvpUA zJs;0{f%C(t&x9ZB=oPiOw!4cECk+?S&a}7A3V$0*dCv5RDW ztVdR7*rcsShfa^ zI6@~AORzyUlzG7~Bvrz|U%XJaPA;AS1u}L2IoqPvwKNx($wnfQ5PQ!D7nANw^ZGzmuAaioHR# ze)3%445B0<@ujq*1|xWr6!(xdg0FflhJ>KajPTbHe_Z-HHJ0}xKOB=W}&JEbQAzeN;mh_**-Ei0VPTf7v{t3wTEaE4|F>v^uL^bS9fvb^kz5eMbvZW5f-b1yjFCeQ7 zTkp|5@viMXpCwA<_-XRr;>ZKJ7ibfrXf)$Lven@;qi7R=3FNk*&@ge;jKrovh1d|U zs`Dijw^+6-LZ>qH&gjIBp_54{wHBjgIJ!fz9=?Jd2Gf8Ezl|xth34_;Y5nx{^t+I@ zo}S(aD2@{XUiX(`&i_)Efo=mYgyKJu06im<3Er==K7vhewei zfhsdDQB6qZPoB1#lAyW2Bo#Hn)Um=@_?~vR$91c^gZA3LKHUI-)tAm@F|o1wbmGzv z-nR|77db#B$Me2j4_St27I-6JW7bh{WNtvs-h2)9v|_}G-BnPL6Y?~p7ctExSid2~ zA2In;LR@>_3e!LwnnC3E?_WDrW?aAVtHtweUBoH`NOa)wCr(aII*hdP5}`ltaJDAR zkB{5`qKzkmvgh;)QrR1^ciJx_uJl39woLD%SH}wZ<1-|BP;146Jt)seVbowy=7mv+ zL_3tuPw4FpQ(pHM_%11(9UX=`_0jG6=A(my7tI9$)-3CSFLxL!}ML~>kX7LC^J9N?Bm`#k0#Gn~vX zFDx85`kRcV^JhUKl(S%wLK`bMh@Iyj^o^-y-PL7Oj>KuGM>|Vk(&VYpEL37s*>lde zIEK>dAiT~;1xr8@ATL!#sneO7Rxm0aPz&&Dk|hr+Jxgi zyF#bOjFmoj>(4evvxl_Z$&Y2$k)wT)bhjZtkM&v`Yn-y-`YL92g+&Pk4?zM5r8K9o z@MCLUUXP-#ZrSCfqF#pKyAJ(wS%c`%MR;7P=iTs?M{^9Ox>T1X(YqXe*vr( zmn_N7m+pE;c#29gOLjL>(TW(qdXs?{iZwX|Nx(V^Ow8m|} zeoJ(Z+mc*&;){jGB8a$RZ+akxbH?TDwrMAfBwdbSRSeJ-EkMZ*UYGy}@ffUA%xEI+ z4Tqz-O5e^9j9$V>2}FMgnC=?Q$XuBO+|d-ya*vfJx2S>w8v0)Q^zC`75;WhFLtOQg z4g`;|3}h*`X7=3sxyJx|RvVNa8k=Tm5=7<^X6U`n!qPzEKJ~I$2=u|GIy82&tgsH5t-PRQcLICFfx0X#e+9exZtQ&B=9rX>uUH zL8Sv;{jt4zyf*4+Cv0ZYu3Pi4X*GZFZoy zx46Fkl+Jw*0dCCBr6i$;DlaB}uwONcncgNUcoFZzJC>xQ-V4y2U9VZSkKQ>qrg6V; z8?z+2?mXjpjIiG9?d|tG zF>V4GYIgrNA>2t$QpVJd5p>QDH53VSb(0iWisxJh-~zEtf) zhqXqhjmJ-$jfU0m+c|YC%K0D{*bvZ%JU^N^04ctD*?>(WD$DVen%DLpy5S$>?MgpqoYLIwrSCbLt#mY)xq8# ze!^%ikg6-t2st92^D|!YhmY3UxdjnZ(i2y$)~q5+>f#08C}@i%=0F}aYXz1fm4bqT z(*L~s&62|pdiwu{!#I(o2$Nq<7809nc_P1LND2%4Ic74hRBpvclJr;2TS-bj^(2dj z$6StDsmY~aQ*G?k$#ogxx5vSByU7#v{Txe@&07Kr_FK@7Jia?RUjC9K^AqlU+|J|}Sl${M1N_hZFEkr5*kH|$OP}ps*5p1w$@(># zK77IiXZvX8gm=l}fID7h6QC6wy(20)|f@$syOht(GWi>Lc5B_NAUu?mKsl)wau zK!JMd>k9!nD@SMN?5e8oQnPPhp_Z4I6WJ`V%bKq>=`^Zf0Wn|WLgyQOxiuQLC$i!o z92gj=u$ZJiTBtz*?P1OBSrQ7&jB_I~PZ~P#-}{D#`Md137xteWObH?DCF4{C3_~ZL z*UnJCs-M63qtsz@wd!d?%|W^#p`;nm8)J3Um&%p%}>?EwMu%g7*&XVhD9y%^@?905*S(YW~(-QZVT@k#*-3Zovoz=3r; z&}0z7ADLTNw3pVcgb}csw)O7%XnY51?Ab8q>KeG%@%;4gfToEfj>R|nTAqLAEx5Vg`lSh}SZ%mHivfG1u&nH>DNEAa zBq`?_*Ga1P$OYfGO7+B+7J)Jls?k+YSZ{Q@*y#s1zYZAD$t9aH3jwfY?LlIRW69&R z*{Q$3KSCr65e5^3?3_>G^qtLhFsswz)KuWr;jGc&OzB_1+A59vvBe}Ma~c~7K`03h z=>Dk9x`G9VXME9GHuc-TKw=BEPuKKTB7L9(R}P)#Q_D&FS@@M$OyQ3EQs>q_(#31fiMxJ zynlWrE{4!z!nl!5AWgu(<{uT@fHB5sWogM{M)We2aCt{ED^(^EE1mnA6Lh7 zN`dL`huZlED)imjRA!1zL*YR;o?e8@Z1vRi^!lmK3-9yYsEQ=XaXB?g?K2oGiOM`<9 zY*#V4(2uU`L3mLtsGHIiIorS03?>h+?pHv-NFV6L>mdA~ll?V6pqu4(pH&xf9_Fj@ zS!jcjj20*0TEy6kH;3%Jx6O`q$s!s=!$3M@no+$%2u*0Sos`$a=W&zt%_v^Kw5iod{`F?$_wuaYcMul-LcN~4|1C`qWwhTnd85X$5q z0v81yU>TIYYQ(;GIkMDmMn*z;)022z7*tEt$Mx=$z6xVrg7KAu&NeqSWi04+{s#nT zIqiC*h(DH=mR6qJ+8?k(!EFmEeZa)>v~;zU{}Kh``YpjvDX_t@)sK3d7##tZLEE+e z)u+=3#=FBB(&AUW$HBj5yCZ2iJPf1uL_4DytDu#QroCqJXyT-Ip%ahF4uOKt2y9E* zLm)s}TUq@E+F(DY)!b`}P2yOcN*83Knv`kLD51CyJIAi#bCPI`dhodJfZO>^>x);M7|Y|Sa=b}Qdb-WsQS~UY zmZoNvmX;REYsPD<%?K9kdR1c;@sz&ZZI|1Jvk_rJT?Pwi>A;o=+fwI+G3 zK--A}3rB7w?@P*muSo7ZDLR<-Bge>%v_^aoNG<}}`VI&-xfvYRnzkTfL(jw{PaY>t z0re-k*Jaynh3Op%Jjho8)akkh{Hrq)eA5;6)*Dx=Oi^_nwn{t$X4E$iJ});u9=yD~ zhd^k>6wz^H~EHvMhl5_hUwW&<8 z??(x89Iw$R(Tm;DgzrQN%(^QchMx7|QAimui(t7OUW^I~R@$z%9D%?woQauP{`|2s zKsT4y*CL<<6OUKDfhttKHzLXTR#u<4^+E9N^DeLfx_|z}jFhDghq61nO&rSz%GqfD z%5~Wu@HB%3CrR4bukBVVT#la#^b@hCO*Oz=uElps|8n2#7LI0ZZg>jwL7= z@f8(JLD~#AfEu*_!m{VK?6@vL ztYEpjyF2Q%go#q`}c49?d@$#p;EpkHa0eh#nY+L#yu1D20=@;Nqu$i7eRQM9)(~Y zH8Xhqvm@dxpxOnvJ!kyiR0Mw%BuJ$4-=&lvl2F{T&FS9ZVKq=5I!vpXQ9DDy5&}Yc ziDKdJ&y>F~A=P|mCcQbnsN{J8xu(3Xp7_CMG19rQ(9qBo`t8tk>J<>Kn!$7u2xHjB z`~z|*my3Fg;OIZIYZCobicSo9U6rLZFdEVgTzxNT@B)Ll|kA*}lh!`)POCLs2T=bwo^%PC^|P z+`%dqAbk17dsfk*#7T?mNp$@+<>MG5_jDS^#9c2VA%CNDD5R=3txBDMk$SE6K1PT- z)?S$$Xjd|*+ZPD}Q;06>3$`3EDTAWw0YBhCC==)$$VC`H++#-w?D0a1_QTTo+S`Ht zI|i>U2@XlX*Z`a%=*j|B(1Fd2sgexnv8bK5zv{t>7yo~WBWxZ!i>Sm}t$*hBVH97eWZ)vx+E}HX#la&&(_)133LcGH!3M zvE2(>6W6$C-#bP70k!meaE zFd{#FQ+s|VB;aw+btocX;_mq)Y%syLDeFp4e|8O&K=SW2J@nb^oJ?{xG5!eNcM2~- zw|o|(p(zkX7VSoL? zJX-2h!@1ai+UVT|Pu-=A6rCeMYmnUE=JUqX1NoW2S(LsqokpAy7LI~x%O&rJmw;`DkHW2~8O3yNBRZ00R3KRcyaG z75Vx!wBi*w*frv)s{j0Wckcu8){zJpBvy>zXb1{AI(%p9fIfYg@3i-Ut@_lX01Ubp zmI|vq77-1g)aatVgJ#sNddO|Lcl^Sb@a*O7OsK$MK86!w0y%DTA0CoEFwa9e2#}Jdvx( z-=yJxe?~>t@6G*OKX>y}o9Xz#-aS1jra<&t4Sbk-JQWlGZs_y^KjBV^Q$i585QrVStXza3Oi5QAJ z6e)X_77fN0Y9d>| z-mgjEki7gOWE%cxop7fpE9xz2N9FD@R?kt1PF9-S#d zm+dPKoSAF#kW!s?zxOg6&419wO}Vs4LHWhehXOA&xz3GA|9Z+(uFlUjs4nqtp90tf zp_sL}V;)gRPAqn&!!zj9-UXL7y6y8wmk);W-4DS8TgEMJWa@Gre8Xqkcv0x#`wp!G z=Y0xTs_LZIS6>J2SR6i_6sj@_)uN}}z6?_3f%ZklJFwFQcrpL+EGQS$nkSs}vo}`y zd1T-3MoJ31_Y_rbNv(GsF^{RLu;^21`hgJiUr;GD{Ltt(O!gg5PfM!u#c|cXXt`rq4IwB-y2y*SS&W@Xb?q{EfJo!wM{}Tzar_~3l*zJpH~F`twZr# z>7n-3>WCqXj?9Z#DDqXp^Mn#C_a&j zdi#66tWYPP2+rD_DkSCc^0gE^=ioD4t*@I;>IdsIePk=e$JyIRM!hFv`hS1)7q!Vf zHZ%%W_?Bgp;H+BBm*S?}8^8O$^ zvG%98aSc}M)o}%TVNaVK}S)Sz~;s~l;Ca0-JPwJ6QUDr=h%yEVWhxu4n z`7pV?r@+tD_w*hByEmoRxQfg#RS8fz0+tB@-;Cy8Sq6DLVBKB~LD-)D!N=&wx$wJz zbNWST8{jpgyo+5B4`XJ6-Q6xqlyRTBTl#3!;a;PmW`fTK+$Vr z=ek>yTMtPhX(~&(Gs*9I+xrXIx4N`U8-|MKd(SR?=QdrgPezz0oNry*u^7=>4eHy< zc%im-G~Y^A8Yv0y0mz#2?kdCNkLpl~lKvrESz$?is5pFXc=1!_wf`nUY`4nv8uV5k zbuf-jAH<*^T#5u?Bp5%$}R!kdn>bSfqKC3;)a1nR2owDYHyuUQktWI-@b`5B4 zJVVi$bvcCUnU(eqDR8ZI*;$fWVjsFay?hou!*)jPpOn%W#5JXIlL1FdkDBYDJqQ02 z(3D#C6Za_Y+!%t1Z%BC}1NC+rB-Sr<_t$xKr*WnH;xS=0^v{d)-3_Wu)Z#$O?|$d` zDz{zids!pmAEAT!cJw>n?k0e+j-_Lauj#mEU?k_=)dhy^pV&(mnrmxUJqVar?UwM) ztr5oW4Qji$+`M(`j8JK~z2whrOBMB({|(H%zZ-b;9w{dFzJbpLb&+c;yzeNcZrUkx z+K*WN?G_b2apKE+%Y+g8=!V(|m9rb@XT~%Tn=Yo~aWvyt?D3D~w+) z1@`0@!N5WGi3~N>Yb+TU%qV;yT{c@12cDkzEuHMS5o(Lc&Rwis$LtgT8sGY0q4>}| zH=lG+tEdOB>69aQ0Uj6`8D(kh|L1^kh~vH?!^(*EDgqTeE@g-M!KDKgcw5Quu#Iw) z>|y8Ylwt1F4|=4rf`r(h%|LuB>v7k5$?PNc^}@0-rNZBpr@s*2y~bkc?IhO&qDy4N z5g0zcJ11RcN6*z=jK|O-+QeKx3F~jqNta>gs+?-}F;G=x1G)nDW`9FtF3g^|IVyx4 z{n0HQT==vkNh|2M6hgOsRgav=a(3--DzkKQ=_w6!tb1e_oUQ&l`u~DKKch;rA8nSiW(am$5CK0X|AZKm})y1{@kruK<=J( zT!n%UZB>?a&Umh7x_@k*y!u+cZln9%S0&WAL(2Q>I<`AILPmYZ4`S?&h?*_2JJnrH zQ5`U~QyBC)(A^4Vx=hvF-e$JAnD{#MDi%{P%gw~heCiu~T<D(lo=|JwKDbnuVn+X%f7}HdK4+7>V@-q`0rBh3GQ#83lI1CFL7N5a>7UB}#v9M7 zaD@j1$etYIkK9TI@Y;)VP)d}kp4A*X(@4r=I()d)UOwYhkVf-sW68isK7JQ=+by2h z$FqZGzcRTltB}UHOnW|;(eP`Pmnb7XlyR9eT@C99UX=;gT%Q2)yqDM~edbU47UY`q z1Bs)SSU=)IR@_=n0m{SeQcJ%mivcQF99S5_o2|n5SFlVg^lYab*|pSQzyAh_<^DSP zA?>D}(0d(e+2um!lK%!BcHMK1vOH^^Mz_3Tw9e%IdLsxSLO_1XLOdQplIIp%~M4#ZT!r#angoEXS&8O|2P z?Uq7eYuRgmg&^es@VJG%+p(PMYBZOqf19Go<=X_OU|{L zx7<;y;Ht!neH}Q})xg!&fYLgI%~NI=P>Q)xu9#;gy`1v zxKbOgkT{8I&fj&7cdyUunh|VMehyoC>`5k+n%rQa@5qvu0p<<5MN!h%AN%@I*3)n`_xPzy=QDRnsi{8f2|m8EKlWn=6-QW5zxYVJ zi?|~SEa7Ly`;NFfZS2^c5k3VKapPC)JmRcUc2Ah{mupYakaEjvId#c4D$QC?MH{Xw%GS3oS;c22hH=|L1ka zW+hGl!7jCZ$5%q2D@HjLk^Q1zTL~r*nPU}hYjO$QVMAb>-+-5I3jn9ybLVcNTzj^(<{BgBi`s2H=JK&kfrHIPj2VaT>nj9!yP-e-^5#O}K` zC0JX(SK2z^g3|4R{kZjjm;J{+q&_^tFtGmbSL|pm&4Kml{a5@yj7v0B1`nm2JZ<${ zvjNBeUB$qU-dX3{F6&ZwC}!xybD+8lc2-FfvOSGh;K2PJvj6Z|r$7CTVUslGxNAwP zy)FJXKV^&**Z)~(B5R(-^p+CKq}-Z_tF`QGG8Wb=pH$_E^C&fsCDJ3ILMBA}wY!RZnk(iT10Fali>-d0Baz4X?7aWin`kPFy5ejoq>@e%@7#OGbEM%Lo|`S}Nbi&tW3P80(Qg!uG$; z;Ml%;b8busHQIDv`nS(jMm>~rK>V(n-n;t9F6sZ;%z2RgYBPf$&OVd|FOGZO%=}|e z;P?r}C*l0CCuDHN@+6j9#&SrZfyaX}6AfQ3A^QYuX-MQTgxz%!WD!ryC}PYf+Gv(s z!&!Im@bj(Uy6_N;m1qPnyH?*OMrOClHmQ&y?^Xh>FyT@f!&@9O4adxr%2D0Ul48v6 zA?#@KEPE_+R%{pe-m*CQR?rl2-%F|eGb7D63V0;&;BuZ!)z?SlBAmGDf{DTrXUvxj z8Gi*Nt}pG%ju1f=^&2eE%`_LGX18na-W}cRlDuXd|2-BGI~4n*24r|xoij_j4c?Sr z;o;V7-@No2oE`#P4VSj!1Ww4Oo8v>eJt@Pi=I-u=qd6?aNB6;Ik`+DS2>Y7Q-h;z< zCr3x^(U0~;wjM*3jyI|4Yc@zg@+R_F!R9LTY^R8q)|F^B56&#HZ$P7SJo>f`e-!NH z`5LhNQ1}9(T@v_^%@3HsWyCwLQ|*>M5uj3$0mfv4yuT87qd-8?oV&az!))d*E;*k* z?yCj_I~;|UQ|BFf4&;hX!Ij_tBC}NL6_R0lvkc<8*lN>=8Zt=2bj1pQ8F1px$zEfI zJeCKmEt`EVv3qyGiztA{<6lcwVaF73nP7a(s7LYoXd1@M3E1&jDm__x5Xs;3T-qLN z2#TP{&Xr@Zy)lgr;Kw|L+N{e32_%cfkfl|qD0nWP(xm_l{`YqvCM2td)VL2rMC7Ed zg&|eBZsKf;Y;6T~REvDio$KA{4Tw^|d^?!Vvxxx7vdnOc7Y_gxLZcwOz;b|HGhM0$ zvX$6?g2-~NaVndhoSOOXQXC!Bb__4J2PpJI-nS)3z)eq2 zQsGlDr;^>id1Z>36MeWS*?|B^#6ob)vwVL&g{+<%U@E!H4H1T;)>U?^-H)VkK+Z(B`jtP~*PTvBkz`Iihr zw6KSFRA|PA;j67%Tyu_RfkTm4UWYZBgO_yI#0vlVRLD9gq4H0;LlVtw{euTS>ZR{l?BM1$lAo1T7UX1FYJU>U+h4Eo;&Dn*`8Sx7lB`A-hN>LSY0T=XUjac+ z!rnkCK-*+<@B__Dy+OZCfg;Y*#H6bo6I$6B8I2LQ&*eg3 zQe(o&?0GL$I!+%!iZijY{S?r$-bs1*P@^oay`uvF1Rm2FDRUxdHW9$nJ4QiA4Hz;& zSonsE{IF8SoET4`5HOy_lIZpuz{t&{MZfZGBq@*@%n$QR!?$RYVqRX3DVRird{hMU z_|q&(>1ODnJ4pa2_ZRJPqEV#eX|QB&-r+`jWXkvA0l3r8Jnvqk8;<<|q#J<8 z5_p{)sId4eH2!3liDc(Njog~5qN3;!Cs{n6QAFdcJOc*q61{~+GXwb`xSHL2Dxp49 z2FMJ$0HVOKs7uNZOW9$h6lr1F2O+P?ru8eBfnH~;#>)1xwvURVt&4fZ$C1oy#olz# z*)F{l-QJ3tgtw&Nnz2;Sf{bg86FR2qoeC8c2cYvIr}7~Qru=AS)OApew?O>NeSql$)5#$13+W?Z zV9KjgSfrm%H@KPb$59#XGz0lk;RS-0|c21PNqvQ0H0#!v_-GPN@Br8jZhAT%x;?T2~%VD}CS63POm9LYv zQv0keEEc3Uc?uwyiWM|4Ha##gk{r!3D;VmJA7N#@UqOqkzS^X%oiIeil%@nDe?QsL%@b^HTc^Htu^oap#g&0*IU_@0W#hvq+F_`42sN_q)SH4)PND%E zN4HG`sxU<04$w?69efx|aOw|ERDe)eJtuQ5{`%gS+cs0eVi3ku)W=4Ni~HE!Kq-p^ zN{==#$p0c5LsMZg<}=Cf_FCA|>QI3Yr@Ks>l$YP*q9+M3E92t#;vn|rO%A#IkGg0t zoD)Q7IS$;hlSH&pPHiTfV{GDS(r7Z151V2y`*|UDuB=n zLh-CpgFL*cX5x`vGZP&NTUU#n7w%*uiPB^pL?hx;cQ8yjzTgAOUy0K{-6twWHdj-e z@CE3%%*YwWSQmWQSXpyOklG=4)svO10qdzQz$`$nUzq#7v$~p^l#~SO992?{h6Xr4 zXJPi%^;gRY?rx`17S-<+*t)qb%`W|H@EyF+RZWpg%gYwsRFSE zew@r5COr?Ens!8WLVdQus0aA@&o6Vw!$&*BK&c5$)P zmD5bHq+5GAwevRr+UViDSKXi{oLXK}V{&CONS|(RJrxC^ZH|4fU;)kp4?{0t*ty_W zI|bUR=MYq;oqHxh@VZJd`@bTf=uJ&d&V`rdb3hK%HeiLEd*MZDXBapRE75E4{fepB zYf`(tAPFf!>spW2uCsxG!HH9+W@3`3M*te6TbhoWI~qq+vp~^zeZXgF>yfdPfrkgq zC1dRBG3q7 zI>ljcZ_lrNJ~dRwEx21I>rQE@V$0Hlo*5HUQze(y3yrKq?IB@Rr$+}UjxH|Ea(nms z+FdE5y?j{$PF6M|0mfV4tNr`;yB0>y7<|v1Nz)$8g*d-z>~p-@epRHog}J$N!^sZjijQaeF8@27)iV;g4uzJe zZrEApNhE?U!@s*pC_FM`l5!DQQB!mNRS=ID*L?J9UD{?6$r?y&H;+TC-AnZwQ~fSZi@GSQ1p>c0T_8 zePC2_@d|3^WuydU$|ar@{1ljgv)QUjNlB>&Aza>*mB&?JbbK;h3=s{GKllq0e=gR6 zMHE8x?9T9dS_R2a>w-Xnc>_{S{^KvNsOU~gO)VujGY0X~iwBT@{iFv|UY9tu;!bxO z)qliYl@g3cz6^rbH*5!ri%<|P4MRW`8+cKE_b8c+}6WE71@$Ha3eovfI{OS4TOSEo8s9reCI0S;?Bjf#<mTUq=sT@~Yx#f05n))$H|QdNK;R;aJ%V?&S=TGtf*v6CyJ(?Y9^u>G7e>h_X!)jt<*Adekec`L5Ii2UM2yeyQP+^cLnsxA>O- zT|(7E6zxJ^6&b&JZsR!as2u40(>C~|3#^^cI$jDF>(Xh-EBW_M1(JSaOl~;&Lf0X5 zlPigZevz(zWz*&de^32g&Didacgx?_aU~uGa4(+nsCI~GEMtP%$eIFOfgKAO@<(cV zU6ASB#_9CC#Nz~RL#9lF_Wu6QpZ80q^ZaQ=1jqis$MsL2NK83@dx?VC=0d*Mp`c01 z|3B_vB#4PmowkgG2~7fZJNotC2h0Ug5io`RCth1!{cR6pQU3pqgCR9I!(wPPD7~8z z)^y4GKbOh_I4QW)e*P#?fj>F+|J(YX%={iQ6TL>@hHg$Q{Ou+tJ1y<)bTttYNSS#5 zc2gb)f-Kq7Oe7M?%ggD{zndL)K;gpd_9RlJ?B6T65#j6W^;0ZdqG;yZ(u035YXlOT zAs45ykrB5V`KvWvq(8q7L9?-W<|$4e6yylh64m?PQ6SM@MSB`Rk(h5~N&lAyudpgC zE?Pm^s9Wu{fBD?sgG!*~0pU}bHyrz47l|Hlp)nUEn=Jm%C=t|$*V;xib75)ePChH- zubLB;@RE{6Z$7R=?BbrB%s*oS1#4bDTNk{WF$lr#zyH-)YF^&iNv(V1Q=cE6OGfn@ z&&bfvsGR^7GI_qMQP)K{nAZpaxXr&e7z^4fU0y06ARr?Y$;pD@FuAeIf|$+;{fIPL R^hLnuu!)WFJwuO}{{x3Y>)ikV literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js new file mode 100644 index 0000000..2050da9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js @@ -0,0 +1,142 @@ +var path = require('path'); +var fs = require('fs'); +var readdirp = require('readdirp'); +var is_windows = process.platform === 'win32'; + +module.exports = function() { + var watched_files = {}; + var watched_directories = {}; + var check_dir_pause = 1000; + var checkInterval = undefined; + + // @api public + // Watches the directory passed and its contained files + // accepts args as an object. + + // @param root(string): the root directory to watch + // @param fileFilter(array): ignore these files + // @param directoryFilter(array): ignore these files + // @param listener(fn(file)): on file change event this will be called + // @param complete(fn): on complete of file watching setup + function watchDirectory(args) { + readdirp({ root: args.root, fileFilter: args.fileFilter, directoryFilter: args.directoryFilter }, function(err, res) { + res.files.forEach(function(file) { + watchFile(file, args.listener, args.partial); + }); + typeof args.complete == "function" && args.complete(); + }); + + !args.partial && (checkInterval = setInterval(function() {checkDirectory(args)}, check_dir_pause)); + } + + // @api public + // Watches the files passed + // accepts args as an object. + // @param files(array): a list of files to watch + // @param listener(fn(file)): on file change event this will be called + // @param complete(fn): on complete of file watching setup + function watchFiles(args) { + args.files.forEach(function(file) { + var o = { + fullPath: fs.realpathSync(file), + name: fs.realpathSync(file).split('/').pop() + }; + o.fullParentDir = o.fullPath.split('/').slice(0, o.fullPath.split('/').length - 1).join('/') + + watchFile(o, args.listener); + }); + + typeof args.complete == "function" && args.complete(); + } + + function unwatchAll() { + if (is_windows) { + Object.keys(watched_files).forEach(function(key) { + watched_files[key].close(); + }); + } else { + Object.keys(watched_files).forEach(function(key) { + fs.unwatchFile(key); + }); + } + + clearInterval(checkInterval); + watched_files = {}; + watched_directories = {}; + } + + // Checks to see if something in the directory has changed + function checkDirectory(args) { + Object.keys(watched_directories).forEach(function(path) { + var lastModified = watched_directories[path]; + fs.stat(path, function(err, stats) { + var stats_stamp = lastModified; + if (!err) { + stats_stamp = (new Date(stats.mtime)).getTime(); + } + if (stats_stamp != lastModified) { + watched_directories[path] = stats_stamp; + watchDirectory({ + root: path, + listener: args.listener, + fileFilter: args.fileFilter, + directoryFilter: args.directoryFilter, + partial: true + }); + } + }); + }); + } + + // sets the absolute path to the file from the current working dir + function setAbsolutePath(file) { + file.absolutePath = path.resolve(process.cwd(), file.fullPath); + return file.absolutePath; + } + + // Watches the file passed and its containing directory + // on change calls given listener with file object + function watchFile(file, cb, partial) { + setAbsolutePath(file); + storeDirectory(file); + if (!watched_files[file.fullPath]) { + if (is_windows) { + (function() { + watched_files[file.fullPath] = fs.watch(file.fullPath, function() { + typeof cb === "function" && cb(file); + }); + partial && cb(file); + })(file, cb); + } else { + (function(file, cb) { + watched_files[file.fullPath] = true; + fs.watchFile(file.fullPath, {interval: 150}, function() { + typeof cb === "function" && cb(file); + }); + partial && cb(file); + })(file, cb); + } + } + } + + // Sets up a store of the folders being watched + // and saves the last modification timestamp for it + function storeDirectory(file) { + var directory = file.fullParentDir; + if (!watched_directories[directory]) { + fs.stat(directory, function(err, stats) { + if (err) { + watched_directories[directory] = (new Date).getTime(); + } else { + watched_directories[directory] = (new Date(stats.mtime)).getTime(); + } + }); + } + } + + return { + watchDirectory: watchDirectory, + watchFiles: watchFiles, + unwatchAll: unwatchAll + }; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore new file mode 100644 index 0000000..7dccd97 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore @@ -0,0 +1,15 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +node_modules +npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml new file mode 100644 index 0000000..84fd7ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE new file mode 100644 index 0000000..ee27ba4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md new file mode 100644 index 0000000..7b36a8a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md @@ -0,0 +1,227 @@ +# readdirp [![Build Status](https://secure.travis-ci.org/thlorenz/readdirp.png)](http://travis-ci.org/thlorenz/readdirp) + +Recursive version of [fs.readdir](http://nodejs.org/docs/latest/api/fs.html#fs_fs_readdir_path_callback). Exposes a **stream api**. + +```javascript +var readdirp = require('readdirp'); + , path = require('path') + , es = require('event-stream'); + +// print out all JavaScript files along with their size + +var stream = readdirp({ root: path.join(__dirname), fileFilter: '*.js' }); +stream + .on('warn', function (err) { + console.error('non-fatal error', err); + // optionally call stream.destroy() here in order to abort and cause 'close' to be emitted + }) + .on('error', function (err) { console.error('fatal error', err); }) + .pipe(es.mapSync(function (entry) { + return { path: entry.path, size: entry.stat.size }; + })) + .pipe(es.stringify()) + .pipe(process.stdout); +``` + +Meant to be one of the recursive versions of [fs](http://nodejs.org/docs/latest/api/fs.html) functions, e.g., like [mkdirp](https://github.com/substack/node-mkdirp). + +**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)* + +- [Installation](#installation) +- [API](#api) + - [entry stream](#entry-stream) + - [options](#options) + - [entry info](#entry-info) + - [Filters](#filters) + - [Callback API](#callback-api) + - [allProcessed ](#allprocessed) + - [fileProcessed](#fileprocessed) +- [More Examples](#more-examples) + - [stream api](#stream-api) + - [stream api pipe](#stream-api-pipe) + - [grep](#grep) + - [using callback api](#using-callback-api) + - [tests](#tests) + + +# Installation + + npm install readdirp + +# API + +***var entryStream = readdirp (options)*** + +Reads given root recursively and returns a `stream` of [entry info](#entry-info)s. + +## entry stream + +Behaves as follows: + +- `emit('data')` passes an [entry info](#entry-info) whenever one is found +- `emit('warn')` passes a non-fatal `Error` that prevents a file/directory from being processed (i.e., if it is + inaccessible to the user) +- `emit('error')` passes a fatal `Error` which also ends the stream (i.e., when illegal options where passed) +- `emit('end')` called when all entries were found and no more will be emitted (i.e., we are done) +- `emit('close')` called when the stream is destroyed via `stream.destroy()` (which could be useful if you want to + manually abort even on a non fatal error) - at that point the stream is no longer `readable` and no more entries, + warning or errors are emitted +- the stream is `paused` initially in order to allow `pipe` and `on` handlers be connected before data or errors are + emitted +- the stream is `resumed` automatically during the next event loop +- to learn more about streams, consult the [stream-handbook](https://github.com/substack/stream-handbook) + +## options + +- **root**: path in which to start reading and recursing into subdirectories + +- **fileFilter**: filter to include/exclude files found (see [Filters](#filters) for more) + +- **directoryFilter**: filter to include/exclude directories found and to recurse into (see [Filters](#filters) for more) + +- **depth**: depth at which to stop recursing even if more subdirectories are found + +## entry info + +Has the following properties: + +- **parentDir** : directory in which entry was found (relative to given root) +- **fullParentDir** : full path to parent directory +- **name** : name of the file/directory +- **path** : path to the file/directory (relative to given root) +- **fullPath** : full path to the file/directory found +- **stat** : built in [stat object](http://nodejs.org/docs/v0.4.9/api/fs.html#fs.Stats) +- **Example**: (assuming root was `/User/dev/readdirp`) + + parentDir : 'test/bed/root_dir1', + fullParentDir : '/User/dev/readdirp/test/bed/root_dir1', + name : 'root_dir1_subdir1', + path : 'test/bed/root_dir1/root_dir1_subdir1', + fullPath : '/User/dev/readdirp/test/bed/root_dir1/root_dir1_subdir1', + stat : [ ... ] + +## Filters + +There are three different ways to specify filters for files and directories respectively. + +- **function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry + +- **glob string**: a string (e.g., `*.js`) which is matched using [minimatch](https://github.com/isaacs/minimatch), so go there for more + information. + + Globstars (`**`) are not supported since specifiying a recursive pattern for an already recursive function doesn't make sense. + + Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files. + +- **array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown. + + `[ '*.json', '*.js' ]` includes all JavaScript and Json files. + + + `[ '!.git', '!node_modules' ]` includes all directories except the '.git' and 'node_modules'. + +Directories that do not pass a filter will not be recursed into. + +## Callback API + +Although the stream api is recommended, readdirp also exposes a callback based api. + +***readdirp (options, callback1 [, callback2])*** + +If callback2 is given, callback1 functions as the **fileProcessed** callback, and callback2 as the **allProcessed** callback. + +If only callback1 is given, it functions as the **allProcessed** callback. + +### allProcessed + +- function with err and res parameters, e.g., `function (err, res) { ... }` +- **err**: array of errors that occurred during the operation, **res may still be present, even if errors occurred** +- **res**: collection of file/directory [entry infos](#entry-info) + +### fileProcessed + +- function with [entry info](#entry-info) parameter e.g., `function (entryInfo) { ... }` + + +# More Examples + +`on('error', ..)`, `on('warn', ..)` and `on('end', ..)` handling omitted for brevity + +```javascript +var readdirp = require('readdirp'); + +// Glob file filter +readdirp({ root: './test/bed', fileFilter: '*.js' }) + .on('data', function (entry) { + // do something with each JavaScript file entry + }); + +// Combined glob file filters +readdirp({ root: './test/bed', fileFilter: [ '*.js', '*.json' ] }) + .on('data', function (entry) { + // do something with each JavaScript and Json file entry + }); + +// Combined negated directory filters +readdirp({ root: './test/bed', directoryFilter: [ '!.git', '!*modules' ] }) + .on('data', function (entry) { + // do something with each file entry found outside '.git' or any modules directory + }); + +// Function directory filter +readdirp({ root: './test/bed', directoryFilter: function (di) { return di.name.length === 9; } }) + .on('data', function (entry) { + // do something with each file entry found inside directories whose name has length 9 + }); + +// Limiting depth +readdirp({ root: './test/bed', depth: 1 }) + .on('data', function (entry) { + // do something with each file entry found up to 1 subdirectory deep + }); + +// callback api +readdirp( + { root: '.' } + , function(fileInfo) { + // do something with file entry here + } + , function (err, res) { + // all done, move on or do final step for all file entries here + } +); +``` + +Try more examples by following [instructions](https://github.com/thlorenz/readdirp/blob/master/examples/Readme.md) +on how to get going. + +## stream api + +[stream-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api.js) + +Demonstrates error and data handling by listening to events emitted from the readdirp stream. + +## stream api pipe + +[stream-api-pipe.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api-pipe.js) + +Demonstrates error handling by listening to events emitted from the readdirp stream and how to pipe the data stream into +another destination stream. + +## grep + +[grep.js](https://github.com/thlorenz/readdirp/blob/master/examples/grep.js) + +Very naive implementation of grep, for demonstration purposes only. + +## using callback api + +[callback-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/callback-api.js) + +Shows how to pass callbacks in order to handle errors and/or data. + +## tests + +The [readdirp tests](https://github.com/thlorenz/readdirp/blob/master/test/readdirp.js) also will give you a good idea on +how things work. + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md new file mode 100644 index 0000000..55fc461 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md @@ -0,0 +1,37 @@ +# readdirp examples + +## How to run the examples + +Assuming you installed readdirp (`npm install readdirp`), you can do the following: + +1. `npm explore readdirp` +2. `cd examples` +3. `npm install` + +At that point you can run the examples with node, i.e., `node grep`. + +## stream api + +[stream-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api.js) + +Demonstrates error and data handling by listening to events emitted from the readdirp stream. + +## stream api pipe + +[stream-api-pipe.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api-pipe.js) + +Demonstrates error handling by listening to events emitted from the readdirp stream and how to pipe the data stream into +another destination stream. + +## grep + +[grep.js](https://github.com/thlorenz/readdirp/blob/master/examples/grep.js) + +Very naive implementation of grep, for demonstration purposes only. + +## using callback api + +[callback-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/callback-api.js) + +Shows how to pass callbacks in order to handle errors and/or data. + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js new file mode 100644 index 0000000..39bd2d7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js @@ -0,0 +1,10 @@ +var readdirp = require('..'); + +readdirp({ root: '.', fileFilter: '*.js' }, function (errors, res) { + if (errors) { + errors.forEach(function (err) { + console.error('Error: ', err); + }); + } + console.log('all javascript files', res); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js new file mode 100644 index 0000000..807fa35 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js @@ -0,0 +1,73 @@ +'use strict'; +var readdirp = require('..') + , util = require('util') + , fs = require('fs') + , path = require('path') + , Stream = require('stream') + , tap = require('tap-stream') + , es = require('event-stream') + ; + +function findLinesMatching (searchTerm) { + + return es.through(function (entry) { + var lineno = 0 + , matchingLines = [] + , fileStream = this; + + function filter () { + return es.mapSync(function (line) { + lineno++; + return ~line.indexOf(searchTerm) ? lineno + ': ' + line : undefined; + }); + } + + function aggregate () { + return es.through( + function write (data) { + matchingLines.push(data); + } + , function end () { + + // drop files that had no matches + if (matchingLines.length) { + var result = { file: entry, lines: matchingLines }; + + // pass result on to file stream + fileStream.emit('data', result); + } + this.emit('end'); + } + ); + } + + fs.createReadStream(entry.fullPath, { encoding: 'utf-8' }) + + // handle file contents line by line + .pipe(es.split('\n')) + + // keep only the lines that matched the term + .pipe(filter()) + + // aggregate all matching lines and delegate control back to the file stream + .pipe(aggregate()) + ; + }); +} + +console.log('grepping for "arguments"'); + +// create a stream of all javascript files found in this and all sub directories +readdirp({ root: path.join(__dirname), fileFilter: '*.js' }) + + // find all lines matching the term for each file (if none found, that file is ignored) + .pipe(findLinesMatching('arguments')) + + // format the results and output + .pipe( + es.mapSync(function (res) { + return '\n\n' + res.file.path + '\n\t' + res.lines.join('\n\t'); + }) + ) + .pipe(process.stdout) + ; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore new file mode 100644 index 0000000..13abef4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore @@ -0,0 +1,3 @@ +node_modules +node_modules/* +npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE new file mode 100644 index 0000000..171dd97 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE @@ -0,0 +1,22 @@ +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js new file mode 100644 index 0000000..af04340 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js @@ -0,0 +1,25 @@ + +var inspect = require('util').inspect + +if(!module.parent) { + var es = require('..') //load event-stream + es.pipe( //pipe joins streams together + process.openStdin(), //open stdin + es.split(), //split stream to break on newlines + es.map(function (data, callback) {//turn this async function into a stream + var j + try { + j = JSON.parse(data) //try to parse input into json + } catch (err) { + return callback(null, data) //if it fails just pass it anyway + } + callback(null, inspect(j)) //render it nicely + }), + process.stdout // pipe it to stdout ! + ) + } + +// run this +// +// curl -sS registry.npmjs.org/event-stream | node pretty.js +// diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js new file mode 100644 index 0000000..16846a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js @@ -0,0 +1,341 @@ +//filter will reemit the data if cb(err,pass) pass is truthy + +// reduce is more tricky +// maybe we want to group the reductions or emit progress updates occasionally +// the most basic reduce just emits one 'data' event after it has recieved 'end' + +var Stream = require('stream').Stream + , es = exports + , through = require('through') + , from = require('from') + , duplex = require('duplexer') + , map = require('map-stream') + , pause = require('pause-stream') + , split = require('split') + +es.Stream = Stream //re-export Stream from core +es.through = through +es.from = from +es.duplex = duplex +es.map = map +es.pause = pause +es.split = split + +// merge / concat +// +// combine multiple streams into a single stream. +// will emit end only once + +es.concat = //actually this should be called concat +es.merge = function (/*streams...*/) { + var toMerge = [].slice.call(arguments) + var stream = new Stream() + var endCount = 0 + stream.writable = stream.readable = true + + toMerge.forEach(function (e) { + e.pipe(stream, {end: false}) + var ended = false + e.on('end', function () { + if(ended) return + ended = true + endCount ++ + if(endCount == toMerge.length) + stream.emit('end') + }) + }) + stream.write = function (data) { + this.emit('data', data) + } + stream.destroy = function () { + merge.forEach(function (e) { + if(e.destroy) e.destroy() + }) + } + return stream +} + + +// writable stream, collects all events into an array +// and calls back when 'end' occurs +// mainly I'm using this to test the other functions + +es.writeArray = function (done) { + if ('function' !== typeof done) + throw new Error('function writeArray (done): done must be function') + + var a = new Stream () + , array = [], isDone = false + a.write = function (l) { + array.push(l) + } + a.end = function () { + isDone = true + done(null, array) + } + a.writable = true + a.readable = false + a.destroy = function () { + a.writable = a.readable = false + if(isDone) return + done(new Error('destroyed before end'), array) + } + return a +} + +//return a Stream that reads the properties of an object +//respecting pause() and resume() + +es.readArray = function (array) { + var stream = new Stream() + , i = 0 + , paused = false + , ended = false + + stream.readable = true + stream.writable = false + + if(!Array.isArray(array)) + throw new Error('event-stream.read expects an array') + + stream.resume = function () { + if(ended) return + paused = false + var l = array.length + while(i < l && !paused && !ended) { + stream.emit('data', array[i++]) + } + if(i == l && !ended) + ended = true, stream.readable = false, stream.emit('end') + } + process.nextTick(stream.resume) + stream.pause = function () { + paused = true + } + stream.destroy = function () { + ended = true + stream.emit('close') + } + return stream +} + +// +// readable (asyncFunction) +// return a stream that calls an async function while the stream is not paused. +// +// the function must take: (count, callback) {... +// + +es.readable = function (func, continueOnError) { + var stream = new Stream() + , i = 0 + , paused = false + , ended = false + , reading = false + + stream.readable = true + stream.writable = false + + if('function' !== typeof func) + throw new Error('event-stream.readable expects async function') + + stream.on('end', function () { ended = true }) + + function get (err, data) { + + if(err) { + stream.emit('error', err) + if(!continueOnError) stream.emit('end') + } else if (arguments.length > 1) + stream.emit('data', data) + + process.nextTick(function () { + if(ended || paused || reading) return + try { + reading = true + func.call(stream, i++, function () { + reading = false + get.apply(null, arguments) + }) + } catch (err) { + stream.emit('error', err) + } + }) + } + stream.resume = function () { + paused = false + get() + } + process.nextTick(get) + stream.pause = function () { + paused = true + } + stream.destroy = function () { + stream.emit('end') + stream.emit('close') + ended = true + } + return stream +} + + + +// +// map sync +// + +es.mapSync = function (sync) { + return es.through(function write(data) { + var mappedData = sync(data) + if (typeof mappedData !== 'undefined') + this.emit('data', mappedData) + }) +} + +// +// log just print out what is coming through the stream, for debugging +// + +es.log = function (name) { + return es.through(function (data) { + var args = [].slice.call(arguments) + if(name) console.error(name, data) + else console.error(data) + this.emit('data', data) + }) +} + +// +// combine multiple streams together so that they act as a single stream +// +es.pipeline = +es.pipe = es.connect = function () { + + var streams = [].slice.call(arguments) + , first = streams[0] + , last = streams[streams.length - 1] + , thepipe = es.duplex(first, last) + + if(streams.length == 1) + return streams[0] + else if (!streams.length) + throw new Error('connect called with empty args') + + //pipe all the streams together + + function recurse (streams) { + if(streams.length < 2) + return + streams[0].pipe(streams[1]) + recurse(streams.slice(1)) + } + + recurse(streams) + + function onerror () { + var args = [].slice.call(arguments) + args.unshift('error') + thepipe.emit.apply(thepipe, args) + } + + //es.duplex already reemits the error from the first and last stream. + //add a listener for the inner streams in the pipeline. + for(var i = 1; i < streams.length - 1; i ++) + streams[i].on('error', onerror) + + return thepipe +} + +// +// child -- pipe through a child process +// + +es.child = function (child) { + + return es.duplex(child.stdin, child.stdout) + +} + +// +// parse +// +// must be used after es.split() to ensure that each chunk represents a line +// source.pipe(es.split()).pipe(es.parse()) + +es.parse = function () { + return es.through(function (data) { + var obj + try { + if(data) //ignore empty lines + obj = JSON.parse(data.toString()) + } catch (err) { + return console.error(err, 'attemping to parse:', data) + } + //ignore lines that where only whitespace. + if(obj !== undefined) + this.emit('data', obj) + }) +} +// +// stringify +// + +es.stringify = function () { + var Buffer = require('buffer').Buffer + return es.mapSync(function (e){ + return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n' + }) +} + +// +// replace a string within a stream. +// +// warn: just concatenates the string and then does str.split().join(). +// probably not optimal. +// for smallish responses, who cares? +// I need this for shadow-npm so it's only relatively small json files. + +es.replace = function (from, to) { + return es.pipeline(es.split(from), es.join(to)) +} + +// +// join chunks with a joiner. just like Array#join +// also accepts a callback that is passed the chunks appended together +// this is still supported for legacy reasons. +// + +es.join = function (str) { + + //legacy api + if('function' === typeof str) + return es.wait(str) + + var first = true + return es.through(function (data) { + if(!first) + this.emit('data', str) + first = false + this.emit('data', data) + return true + }) +} + + +// +// wait. callback when 'end' is emitted, with all chunks appended as string. +// + +es.wait = function (callback) { + var body = '' + return es.through(function (data) { body += data }, + function () { + this.emit('data', body) + this.emit('end') + if(callback) callback(null, body) + }) +} + +es.pipeable = function () { + throw new Error('[EVENT-STREAM] es.pipeable is deprecated') +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore new file mode 100644 index 0000000..062c11e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore @@ -0,0 +1,3 @@ +node_modules +*.log +*.err \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml new file mode 100644 index 0000000..c2ba3f9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.8 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE new file mode 100644 index 0000000..a23e08a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE @@ -0,0 +1,19 @@ +Copyright (c) 2012 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile new file mode 100644 index 0000000..1f8985d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile @@ -0,0 +1,4 @@ +test: + node test.js + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md new file mode 100644 index 0000000..a24cecb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md @@ -0,0 +1,36 @@ +# duplexer [![build status][1]][2] + +Creates a duplex stream + +Taken from [event-stream][3] + +## duplex (writeStream, readStream) + +Takes a writable stream and a readable stream and makes them appear as a readable writable stream. + +It is assumed that the two streams are connected to each other in some way. + +## Example + + var grep = cp.exec('grep Stream') + + duplex(grep.stdin, grep.stdout) + +## Installation + +`npm install duplexer` + +## Tests + +`make test` + +## Contributors + + - Dominictarr + - Raynos + +## MIT Licenced + + [1]: https://secure.travis-ci.org/Raynos/duplexer.png + [2]: http://travis-ci.org/Raynos/duplexer + [3]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js new file mode 100644 index 0000000..fee581d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js @@ -0,0 +1,87 @@ +var Stream = require("stream") + , writeMethods = ["write", "end", "destroy"] + , readMethods = ["resume", "pause"] + , readEvents = ["data", "close"] + , slice = Array.prototype.slice + +module.exports = duplex + +function duplex(writer, reader) { + var stream = new Stream() + , ended = false + + Object.defineProperties(stream, { + writable: { + get: getWritable + } + , readable: { + get: getReadable + } + }) + + writeMethods.forEach(proxyWriter) + + readMethods.forEach(proxyReader) + + readEvents.forEach(proxyStream) + + reader.on("end", handleEnd) + + writer.on("error", reemit) + reader.on("error", reemit) + + return stream + + function getWritable() { + return writer.writable + } + + function getReadable() { + return reader.readable + } + + function proxyWriter(methodName) { + stream[methodName] = method + + function method() { + return writer[methodName].apply(writer, arguments) + } + } + + function proxyReader(methodName) { + stream[methodName] = method + + function method() { + stream.emit(methodName) + var func = reader[methodName] + if (func) { + return func.apply(reader, arguments) + } + reader.emit(methodName) + } + } + + function proxyStream(methodName) { + reader.on(methodName, reemit) + + function reemit() { + var args = slice.call(arguments) + args.unshift(methodName) + stream.emit.apply(stream, args) + } + } + + function handleEnd() { + if (ended) { + return + } + ended = true + var args = slice.call(arguments) + args.unshift("end") + stream.emit.apply(stream, args) + } + + function reemit(err) { + stream.emit("error", err) + } +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json new file mode 100644 index 0000000..6f54329 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json @@ -0,0 +1,41 @@ +{ + "name": "duplexer", + "version": "0.0.2", + "description": "Creates a duplex stream", + "keywords": [], + "author": { + "name": "Raynos", + "email": "raynos2@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/Raynos/duplexer.git" + }, + "main": "index", + "homepage": "https://github.com/Raynos/duplexer", + "contributors": [ + { + "name": "Jake Verbaten" + } + ], + "bugs": { + "url": "https://github.com/Raynos/duplexer/issues", + "email": "raynos2@gmail.com" + }, + "dependencies": {}, + "devDependencies": { + "through": "~0.1.4" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://github.com/Raynos/duplexer/raw/master/LICENSE" + } + ], + "scripts": { + "test": "make test" + }, + "readme": "# duplexer [![build status][1]][2]\n\nCreates a duplex stream\n\nTaken from [event-stream][3]\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way.\n\n## Example\n\n var grep = cp.exec('grep Stream')\n\n duplex(grep.stdin, grep.stdout)\n\n## Installation\n\n`npm install duplexer`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Dominictarr\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/duplexer.png\n [2]: http://travis-ci.org/Raynos/duplexer\n [3]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream", + "_id": "duplexer@0.0.2", + "_from": "duplexer@~0.0.2" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js new file mode 100644 index 0000000..e06a864 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js @@ -0,0 +1,27 @@ +var duplex = require("./index") + , assert = require("assert") + , through = require("through") + +var readable = through() + , writable = through(write) + , written = 0 + , data = 0 + +var stream = duplex(writable, readable) + +function write() { + written++ +} + +stream.on("data", ondata) + +function ondata() { + data++ +} + +stream.write() +readable.emit("data") + +assert.equal(written, 1) +assert.equal(data, 1) +console.log("DONE") \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 new file mode 100644 index 0000000..6366c04 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 @@ -0,0 +1,15 @@ +Apache License, Version 2.0 + +Copyright (c) 2011 Dominic Tarr + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT new file mode 100644 index 0000000..6eafbd7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js new file mode 100644 index 0000000..95a8975 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js @@ -0,0 +1,62 @@ + +var Stream = require('stream') + +// from +// +// a stream that reads from an source. +// source may be an array, or a function. +// from handles pause behaviour for you. + +module.exports = +function from (source) { + if(Array.isArray(source)) + return from (function (i) { + if(source.length) + this.emit('data', source.shift()) + else + this.emit('end') + return true + }) + + var s = new Stream(), i = 0, ended = false, started = false + s.readable = true + s.writable = false + s.paused = false + s.pause = function () { + started = true + s.paused = true + } + function next () { + var n = 0, r = false + if(ended) return + while(!ended && !s.paused && source.call(s, i++, function () { + if(!n++ && !s.ended && !s.paused) + next() + })) + ; + } + s.resume = function () { + started = true + s.paused = false + next() + } + s.on('end', function () { + ended = true + s.readable = false + process.nextTick(s.destroy) + }) + s.destroy = function () { + ended = true + s.emit('close') + } + /* + by default, the stream will start emitting at nextTick + if you want, you can pause it, after pipeing. + you can also resume before next tick, and that will also + work. + */ + process.nextTick(function () { + if(!started) s.resume() + }) + return s +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json new file mode 100644 index 0000000..be3c0df --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json @@ -0,0 +1,33 @@ +{ + "name": "from", + "version": "0.0.2", + "description": "Easy way to make a Readable Stream", + "main": "index.js", + "scripts": { + "test": "asynct test/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/from.git" + }, + "keywords": [ + "stream", + "streams", + "readable", + "easy" + ], + "devDependencies": { + "asynct": "1", + "stream-spec": "0", + "assertions": "~2.3.0" + }, + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "dominictarr.com" + }, + "license": "MIT", + "readme": "# from\n\nAn easy way to create a `readable Stream`.\n\n## License\nMIT / Apache2\n", + "_id": "from@0.0.2", + "_from": "from@~0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown new file mode 100644 index 0000000..84c8269 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown @@ -0,0 +1,6 @@ +# from + +An easy way to create a `readable Stream`. + +## License +MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js new file mode 100644 index 0000000..fafea57 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js @@ -0,0 +1,141 @@ +var from = require('..') +var spec = require('stream-spec') +var a = require('assertions') + +function read(stream, callback) { + var actual = [] + stream.on('data', function (data) { + actual.push(data) + }) + stream.once('end', function () { + callback(null, actual) + }) + stream.once('error', function (err) { + callback(err) + }) +} + +function pause(stream) { + stream.on('data', function () { + if(Math.random() > 0.1) return + stream.pause() + process.nextTick(function () { + stream.resume() + }) + }) +} + +exports['inc'] = function (test) { + + var fs = from(function (i) { + this.emit('data', i) + if(i >= 99) + return this.emit('end') + return true + }) + + spec(fs).readable().validateOnExit() + + read(fs, function (err, arr) { + test.equal(arr.length, 100) + test.done() + }) +} + +exports['simple'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = from(expected.slice()) + + spec(t) + .readable() + .pausable({strict: true}) + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + +} + +exports['simple pausable'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = from(expected.slice()) + + spec(t) + .readable() + .pausable({strict: true}) + .validateOnExit() + + pause(t) + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + +} + +exports['simple (not strictly pausable) setTimeout'] = function (test) { + + var l = 10 + , expected = [] + while(l--) expected.push(l * Math.random()) + + + var _expected = expected.slice() + var t = from(function (i, n) { + var self = this + setTimeout(function () { + if(_expected.length) + self.emit('data', _expected.shift()) + else + self.emit('end') + n() + }, 3) + }) + + /* + using from in this way will not be strictly pausable. + it could be extended to buffer outputs, but I think a better + way would be to use a PauseStream that implements strict pause. + */ + + spec(t) + .readable() + .pausable({strict: false }) + .validateOnExit() + + //pause(t) + var paused = false + var i = setInterval(function () { + if(!paused) t.pause() + else t.resume() + paused = !paused + }, 2) + + t.on('end', function () { + clearInterval(i) + }) + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + +} + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore new file mode 100644 index 0000000..13abef4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore @@ -0,0 +1,3 @@ +node_modules +node_modules/* +npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE new file mode 100644 index 0000000..171dd97 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE @@ -0,0 +1,22 @@ +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js new file mode 100644 index 0000000..af04340 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js @@ -0,0 +1,25 @@ + +var inspect = require('util').inspect + +if(!module.parent) { + var es = require('..') //load event-stream + es.pipe( //pipe joins streams together + process.openStdin(), //open stdin + es.split(), //split stream to break on newlines + es.map(function (data, callback) {//turn this async function into a stream + var j + try { + j = JSON.parse(data) //try to parse input into json + } catch (err) { + return callback(null, data) //if it fails just pass it anyway + } + callback(null, inspect(j)) //render it nicely + }), + process.stdout // pipe it to stdout ! + ) + } + +// run this +// +// curl -sS registry.npmjs.org/event-stream | node pretty.js +// diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js new file mode 100644 index 0000000..d3a7fd9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js @@ -0,0 +1,105 @@ +//filter will reemit the data if cb(err,pass) pass is truthy + +// reduce is more tricky +// maybe we want to group the reductions or emit progress updates occasionally +// the most basic reduce just emits one 'data' event after it has recieved 'end' + + +var Stream = require('stream').Stream + + +//create an event stream and apply function to each .write +//emitting each response as data +//unless it's an empty callback + +module.exports = function (mapper) { + var stream = new Stream() + , inputs = 0 + , outputs = 0 + , ended = false + , paused = false + , destroyed = false + + stream.writable = true + stream.readable = true + + stream.write = function () { + if(ended) throw new Error('map stream is not writable') + inputs ++ + var args = [].slice.call(arguments) + , r + , inNext = false + //pipe only allows one argument. so, do not + function next (err) { + if(destroyed) return + inNext = true + outputs ++ + var args = [].slice.call(arguments) + if(err) { + args.unshift('error') + return inNext = false, stream.emit.apply(stream, args) + } + args.shift() //drop err + if (args.length) { + args.unshift('data') + r = stream.emit.apply(stream, args) + } + if(inputs == outputs) { + if(paused) paused = false, stream.emit('drain') //written all the incoming events + if(ended) end() + } + inNext = false + } + args.push(next) + + try { + //catch sync errors and handle them like async errors + var written = mapper.apply(null, args) + paused = (written === false) + return !paused + } catch (err) { + //if the callback has been called syncronously, and the error + //has occured in an listener, throw it again. + if(inNext) + throw err + next(err) + return !paused + } + } + + function end (data) { + //if end was called with args, write it, + ended = true //write will emit 'end' if ended is true + stream.writable = false + if(data !== undefined) + return stream.write(data) + else if (inputs == outputs) //wait for processing + stream.readable = false, stream.emit('end'), stream.destroy() + } + + stream.end = function (data) { + if(ended) return + end() + } + + stream.destroy = function () { + ended = destroyed = true + stream.writable = stream.readable = paused = false + process.nextTick(function () { + stream.emit('close') + }) + } + stream.pause = function () { + paused = true + } + + stream.resume = function () { + paused = false + } + + return stream +} + + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json new file mode 100644 index 0000000..97e7338 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json @@ -0,0 +1,30 @@ +{ + "name": "map-stream", + "version": "0.0.1", + "description": "construct pipes of streams of events", + "homepage": "http://github.com/dominictarr/map-stream", + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/map-stream.git" + }, + "dependencies": {}, + "devDependencies": { + "asynct": "*", + "it-is": "1", + "ubelt": "~2.9", + "stream-spec": "~0.2", + "event-stream": "~2.1", + "from": "0.0.2" + }, + "scripts": { + "test": "asynct test/" + }, + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "http://dominictarr.com" + }, + "readme": "# MapStream\n\nRefactored out of [event-stream](https://github.com/dominictarr/event-stream)\n\n##map (asyncFunction)\n\nCreate a through stream from an asyncronous function. \n\n``` js\nvar es = require('event-stream')\n\nes.map(function (data, callback) {\n //transform data\n // ...\n callback(null, data)\n})\n\n```\n\nEach map MUST call the callback. It may callback with data, with an error or with no arguments, \n\n * `callback()` drop this data. \n this makes the map work like `filter`, \n note:`callback(null,null)` is not the same, and will emit `null`\n\n * `callback(null, newData)` turn data into newData\n \n * `callback(error)` emit an error for this item.\n\n>Note: if a callback is not called, `map` will think that it is still being processed, \n>every call must be answered or the stream will not know when to end. \n>\n>Also, if the callback is called more than once, every call but the first will be ignored.\n\n\n", + "_id": "map-stream@0.0.1", + "_from": "map-stream@0.0.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown new file mode 100644 index 0000000..22c019d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown @@ -0,0 +1,35 @@ +# MapStream + +Refactored out of [event-stream](https://github.com/dominictarr/event-stream) + +##map (asyncFunction) + +Create a through stream from an asyncronous function. + +``` js +var es = require('event-stream') + +es.map(function (data, callback) { + //transform data + // ... + callback(null, data) +}) + +``` + +Each map MUST call the callback. It may callback with data, with an error or with no arguments, + + * `callback()` drop this data. + this makes the map work like `filter`, + note:`callback(null,null)` is not the same, and will emit `null` + + * `callback(null, newData)` turn data into newData + + * `callback(error)` emit an error for this item. + +>Note: if a callback is not called, `map` will think that it is still being processed, +>every call must be answered or the stream will not know when to end. +> +>Also, if the callback is called more than once, every call but the first will be ignored. + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js new file mode 100644 index 0000000..77ac48e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js @@ -0,0 +1,295 @@ +'use strict'; + +var map = require('../') + , it = require('it-is') + , u = require('ubelt') + , spec = require('stream-spec') + , from = require('from') + , Stream = require('stream') + , es = require('event-stream') + +//REFACTOR THIS TEST TO USE es.readArray and es.writeArray + +function writeArray(array, stream) { + + array.forEach( function (j) { + stream.write(j) + }) + stream.end() + +} + +function readStream(stream, done) { + + var array = [] + stream.on('data', function (data) { + array.push(data) + }) + stream.on('error', done) + stream.on('end', function (data) { + done(null, array) + }) + +} + +//call sink on each write, +//and complete when finished. + +function pauseStream (prob, delay) { + var pauseIf = ( + 'number' == typeof prob + ? function () { + return Math.random() < prob + } + : 'function' == typeof prob + ? prob + : 0.1 + ) + var delayer = ( + !delay + ? process.nextTick + : 'number' == typeof delay + ? function (next) { setTimeout(next, delay) } + : delay + ) + + return es.through(function (data) { + if(!this.paused && pauseIf()) { + console.log('PAUSE STREAM PAUSING') + this.pause() + var self = this + delayer(function () { + console.log('PAUSE STREAM RESUMING') + self.resume() + }) + } + console.log("emit ('data', " + data + ')') + this.emit('data', data) + }) +} + +exports ['simple map'] = function (test) { + + var input = u.map(1, 1000, function () { + return Math.random() + }) + var expected = input.map(function (v) { + return v * 2 + }) + + var pause = pauseStream(0.1) + var fs = from(input) + var ts = es.writeArray(function (err, ar) { + it(ar).deepEqual(expected) + test.done() + }) + var map = es.through(function (data) { + this.emit('data', data * 2) + }) + + spec(map).through().validateOnExit() + spec(pause).through().validateOnExit() + + fs.pipe(map).pipe(pause).pipe(ts) +} + +exports ['simple map applied to a stream'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + + var doubler = map(function (data, cb) { + cb(null, data * 2) + }) + + spec(doubler).through().validateOnExit() + + //a map is only a middle man, so it is both readable and writable + + it(doubler).has({ + readable: true, + writable: true, + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 2 + })) +// process.nextTick(x.validate) + test.done() + }) + + writeArray(input, doubler) + +} + +exports['pipe two maps together'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + function dd (data, cb) { + cb(null, data * 2) + } + var doubler1 = es.map(dd), doubler2 = es.map(dd) + + doubler1.pipe(doubler2) + + spec(doubler1).through().validateOnExit() + spec(doubler2).through().validateOnExit() + + readStream(doubler2, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 4 + })) + test.done() + }) + + writeArray(input, doubler1) + +} + +//next: +// +// test pause, resume and drian. +// + +// then make a pipe joiner: +// +// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) +// +// will return a single stream that write goes to the first + +exports ['map will not call end until the callback'] = function (test) { + + var ticker = map(function (data, cb) { + process.nextTick(function () { + cb(null, data * 2) + }) + }) + + spec(ticker).through().validateOnExit() + + ticker.write('x') + ticker.end() + + ticker.on('end', function () { + test.done() + }) +} + + +exports ['emit error thrown'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + es.map(function () { + throw err + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + + mapper.write('hello') + +} + +exports ['emit error calledback'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + es.map(function (data, callback) { + callback(err) + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + + mapper.write('hello') + +} + +exports ['do not emit drain if not paused'] = function (test) { + + var maps = map(function (data, callback) { + u.delay(callback)(null, 1) + return true + }) + + spec(maps).through().pausable().validateOnExit() + + maps.on('drain', function () { + it(false).ok('should not emit drain unless the stream is paused') + }) + + it(maps.write('hello')).equal(true) + it(maps.write('hello')).equal(true) + it(maps.write('hello')).equal(true) + setTimeout(function () {maps.end()},10) + maps.on('end', test.done) +} + +exports ['emits drain if paused, when all '] = function (test) { + var active = 0 + var drained = false + var maps = map(function (data, callback) { + active ++ + u.delay(function () { + active -- + callback(null, 1) + })() + console.log('WRITE', false) + return false + }) + + spec(maps).through().validateOnExit() + + maps.on('drain', function () { + drained = true + it(active).equal(0, 'should emit drain when all maps are done') + }) + + it(maps.write('hello')).equal(false) + it(maps.write('hello')).equal(false) + it(maps.write('hello')).equal(false) + + process.nextTick(function () {maps.end()},10) + + maps.on('end', function () { + console.log('end') + it(drained).ok('shoud have emitted drain before end') + test.done() + }) + +} + +exports ['map applied to a stream with filtering'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = map(function (data, callback) { + if (data % 2) + callback(null, data * 2) + else + callback() + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.filter(function (j) { + return j % 2 + }).map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore new file mode 100644 index 0000000..bfdb82c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore @@ -0,0 +1,4 @@ +lib-cov/* +*.swp +*.swo +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown new file mode 100644 index 0000000..deb493c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown @@ -0,0 +1,474 @@ +optimist +======== + +Optimist is a node.js library for option parsing for people who hate option +parsing. More specifically, this module is for people who like all the --bells +and -whistlz of program usage but think optstrings are a waste of time. + +With optimist, option parsing doesn't have to suck (as much). + +examples +======== + +With Optimist, the options are just a hash! No optstrings attached. +------------------------------------------------------------------- + +xup.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist').argv; + +if (argv.rif - 5 * argv.xup > 7.138) { + console.log('Buy more riffiwobbles'); +} +else { + console.log('Sell the xupptumblers'); +} +```` + +*** + + $ ./xup.js --rif=55 --xup=9.52 + Buy more riffiwobbles + + $ ./xup.js --rif 12 --xup 8.1 + Sell the xupptumblers + +![This one's optimistic.](http://substack.net/images/optimistic.png) + +But wait! There's more! You can do short options: +------------------------------------------------- + +short.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); +```` + +*** + + $ ./short.js -x 10 -y 21 + (10,21) + +And booleans, both long and short (and grouped): +---------------------------------- + +bool.js: + +````javascript +#!/usr/bin/env node +var util = require('util'); +var argv = require('optimist').argv; + +if (argv.s) { + util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); +} +console.log( + (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') +); +```` + +*** + + $ ./bool.js -s + The cat says: meow + + $ ./bool.js -sp + The cat says: meow. + + $ ./bool.js -sp --fr + Le chat dit: miaou. + +And non-hypenated options too! Just use `argv._`! +------------------------------------------------- + +nonopt.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); +console.log(argv._); +```` + +*** + + $ ./nonopt.js -x 6.82 -y 3.35 moo + (6.82,3.35) + [ 'moo' ] + + $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz + (0.54,1.12) + [ 'foo', 'bar', 'baz' ] + +Plus, Optimist comes with .usage() and .demand()! +------------------------------------------------- + +divide.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .usage('Usage: $0 -x [num] -y [num]') + .demand(['x','y']) + .argv; + +console.log(argv.x / argv.y); +```` + +*** + + $ ./divide.js -x 55 -y 11 + 5 + + $ node ./divide.js -x 4.91 -z 2.51 + Usage: node ./divide.js -x [num] -y [num] + + Options: + -x [required] + -y [required] + + Missing required arguments: y + +EVEN MORE HOLY COW +------------------ + +default_singles.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .default('x', 10) + .default('y', 10) + .argv +; +console.log(argv.x + argv.y); +```` + +*** + + $ ./default_singles.js -x 5 + 15 + +default_hash.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .default({ x : 10, y : 10 }) + .argv +; +console.log(argv.x + argv.y); +```` + +*** + + $ ./default_hash.js -y 7 + 17 + +And if you really want to get all descriptive about it... +--------------------------------------------------------- + +boolean_single.js + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .boolean('v') + .argv +; +console.dir(argv); +```` + +*** + + $ ./boolean_single.js -v foo bar baz + true + [ 'bar', 'baz', 'foo' ] + +boolean_double.js + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .boolean(['x','y','z']) + .argv +; +console.dir([ argv.x, argv.y, argv.z ]); +console.dir(argv._); +```` + +*** + + $ ./boolean_double.js -x -z one two three + [ true, false, true ] + [ 'one', 'two', 'three' ] + +Optimist is here to help... +--------------------------- + +You can describe parameters for help messages and set aliases. Optimist figures +out how to format a handy help string automatically. + +line_count.js + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .demand('f') + .alias('f', 'file') + .describe('f', 'Load a file') + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines); +}); +```` + +*** + + $ node line_count.js + Count the lines in a file. + Usage: node ./line_count.js + + Options: + -f, --file Load a file [required] + + Missing required arguments: f + + $ node line_count.js --file line_count.js + 20 + + $ node line_count.js -f line_count.js + 20 + +methods +======= + +By itself, + +````javascript +require('optimist').argv +````` + +will use `process.argv` array to construct the `argv` object. + +You can pass in the `process.argv` yourself: + +````javascript +require('optimist')([ '-x', '1', '-y', '2' ]).argv +```` + +or use .parse() to do the same thing: + +````javascript +require('optimist').parse([ '-x', '1', '-y', '2' ]) +```` + +The rest of these methods below come in just before the terminating `.argv`. + +.alias(key, alias) +------------------ + +Set key names as equivalent such that updates to a key will propagate to aliases +and vice-versa. + +Optionally `.alias()` can take an object that maps keys to aliases. + +.default(key, value) +-------------------- + +Set `argv[key]` to `value` if no option was specified on `process.argv`. + +Optionally `.default()` can take an object that maps keys to default values. + +.demand(key) +------------ + +If `key` is a string, show the usage information and exit if `key` wasn't +specified in `process.argv`. + +If `key` is a number, demand at least as many non-option arguments, which show +up in `argv._`. + +If `key` is an Array, demand each element. + +.describe(key, desc) +-------------------- + +Describe a `key` for the generated usage information. + +Optionally `.describe()` can take an object that maps keys to descriptions. + +.options(key, opt) +------------------ + +Instead of chaining together `.alias().demand().default()`, you can specify +keys in `opt` for each of the chainable methods. + +For example: + +````javascript +var argv = require('optimist') + .options('f', { + alias : 'file', + default : '/etc/passwd', + }) + .argv +; +```` + +is the same as + +````javascript +var argv = require('optimist') + .alias('f', 'file') + .default('f', '/etc/passwd') + .argv +; +```` + +Optionally `.options()` can take an object that maps keys to `opt` parameters. + +.usage(message) +--------------- + +Set a usage message to show which commands to use. Inside `message`, the string +`$0` will get interpolated to the current script name or node command for the +present script similar to how `$0` works in bash or perl. + +.check(fn) +---------- + +Check that certain conditions are met in the provided arguments. + +If `fn` throws or returns `false`, show the thrown error, usage information, and +exit. + +.boolean(key) +------------- + +Interpret `key` as a boolean. If a non-flag option follows `key` in +`process.argv`, that string won't get set as the value of `key`. + +If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be +`false`. + +If `key` is an Array, interpret all the elements as booleans. + +.string(key) +------------ + +Tell the parser logic not to interpret `key` as a number or boolean. +This can be useful if you need to preserve leading zeros in an input. + +If `key` is an Array, interpret all the elements as strings. + +.wrap(columns) +-------------- + +Format usage output to wrap at `columns` many columns. + +.help() +------- + +Return the generated usage string. + +.showHelp(fn=console.error) +--------------------------- + +Print the usage data using `fn` for printing. + +.parse(args) +------------ + +Parse `args` instead of `process.argv`. Returns the `argv` object. + +.argv +----- + +Get the arguments as a plain old object. + +Arguments without a corresponding flag show up in the `argv._` array. + +The script name or node command is available at `argv.$0` similarly to how `$0` +works in bash or perl. + +parsing tricks +============== + +stop parsing +------------ + +Use `--` to stop parsing flags and stuff the remainder into `argv._`. + + $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 + { _: [ '-c', '3', '-d', '4' ], + '$0': 'node ./examples/reflect.js', + a: 1, + b: 2 } + +negate fields +------------- + +If you want to explicity set a field to false instead of just leaving it +undefined or to override a default you can do `--no-key`. + + $ node examples/reflect.js -a --no-b + { _: [], + '$0': 'node ./examples/reflect.js', + a: true, + b: false } + +numbers +------- + +Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to +one. This way you can just `net.createConnection(argv.port)` and you can add +numbers out of `argv` with `+` without having that mean concatenation, +which is super frustrating. + +duplicates +---------- + +If you specify a flag multiple times it will get turned into an array containing +all the values in order. + + $ node examples/reflect.js -x 5 -x 8 -x 0 + { _: [], + '$0': 'node ./examples/reflect.js', + x: [ 5, 8, 0 ] } + +installation +============ + +With [npm](http://github.com/isaacs/npm), just do: + npm install optimist + +or clone this project on github: + + git clone http://github.com/substack/node-optimist.git + +To run the tests with [expresso](http://github.com/visionmedia/expresso), +just do: + + expresso + +inspired By +=========== + +This module is loosely inspired by Perl's +[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js new file mode 100644 index 0000000..a998fb7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node +var util = require('util'); +var argv = require('optimist').argv; + +if (argv.s) { + util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); +} +console.log( + (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') +); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js new file mode 100644 index 0000000..a35a7e6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +var argv = require('optimist') + .boolean(['x','y','z']) + .argv +; +console.dir([ argv.x, argv.y, argv.z ]); +console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js new file mode 100644 index 0000000..017bb68 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +var argv = require('optimist') + .boolean('v') + .argv +; +console.dir(argv.v); +console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js new file mode 100644 index 0000000..ade7768 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js @@ -0,0 +1,8 @@ +#!/usr/bin/env node + +var argv = require('optimist') + .default({ x : 10, y : 10 }) + .argv +; + +console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js new file mode 100644 index 0000000..d9b1ff4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +var argv = require('optimist') + .default('x', 10) + .default('y', 10) + .argv +; +console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js new file mode 100644 index 0000000..5e2ee82 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js @@ -0,0 +1,8 @@ +#!/usr/bin/env node + +var argv = require('optimist') + .usage('Usage: $0 -x [num] -y [num]') + .demand(['x','y']) + .argv; + +console.log(argv.x / argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js new file mode 100644 index 0000000..b5f95bf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .demand('f') + .alias('f', 'file') + .describe('f', 'Load a file') + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js new file mode 100644 index 0000000..d9ac709 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js @@ -0,0 +1,29 @@ +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .options({ + file : { + demand : true, + alias : 'f', + description : 'Load a file' + }, + base : { + alias : 'b', + description : 'Numeric base to use for output', + default : 10, + }, + }) + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines.toString(argv.base)); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js new file mode 100644 index 0000000..4267511 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js @@ -0,0 +1,29 @@ +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .wrap(80) + .demand('f') + .alias('f', [ 'file', 'filename' ]) + .describe('f', + "Load a file. It's pretty important." + + " Required even. So you'd better specify it." + ) + .alias('b', 'base') + .describe('b', 'Numeric base to display the number of lines in') + .default('b', 10) + .describe('x', 'Super-secret optional parameter which is secret') + .default('x', '') + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines.toString(argv.base)); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js new file mode 100644 index 0000000..ee633ee --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js @@ -0,0 +1,4 @@ +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); +console.log(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js new file mode 100644 index 0000000..816b3e1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +console.dir(require('optimist').argv); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js new file mode 100644 index 0000000..1db0ad0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js new file mode 100644 index 0000000..a8e5aeb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js @@ -0,0 +1,11 @@ +#!/usr/bin/env node +var argv = require('optimist') + .string('x', 'y') + .argv +; +console.dir([ argv.x, argv.y ]); + +/* Turns off numeric coercion: + ./node string.js -x 000123 -y 9876 + [ '000123', '9876' ] +*/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js new file mode 100644 index 0000000..b999977 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js @@ -0,0 +1,19 @@ +var optimist = require('./../index'); + +var argv = optimist.usage('This is my awesome program', { + 'about': { + description: 'Provide some details about the author of this program', + required: true, + short: 'a', + }, + 'info': { + description: 'Provide some information about the node.js agains!!!!!!', + boolean: true, + short: 'i' + } +}).argv; + +optimist.showHelp(); + +console.log('\n\nInspecting options'); +console.dir(argv); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js new file mode 100644 index 0000000..8f6ecd2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node +var argv = require('optimist').argv; + +if (argv.rif - 5 * argv.xup > 7.138) { + console.log('Buy more riffiwobbles'); +} +else { + console.log('Sell the xupptumblers'); +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js new file mode 100644 index 0000000..070d642 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js @@ -0,0 +1,457 @@ +var path = require('path'); +var wordwrap = require('wordwrap'); + +/* Hack an instance of Argv with process.argv into Argv + so people can do + require('optimist')(['--beeble=1','-z','zizzle']).argv + to parse a list of args and + require('optimist').argv + to get a parsed version of process.argv. +*/ + +var inst = Argv(process.argv.slice(2)); +Object.keys(inst).forEach(function (key) { + Argv[key] = typeof inst[key] == 'function' + ? inst[key].bind(inst) + : inst[key]; +}); + +var exports = module.exports = Argv; +function Argv (args, cwd) { + var self = {}; + if (!cwd) cwd = process.cwd(); + + self.$0 = process.argv + .slice(0,2) + .map(function (x) { + var b = rebase(cwd, x); + return x.match(/^\//) && b.length < x.length + ? b : x + }) + .join(' ') + ; + + if (process.argv[1] == process.env._) { + self.$0 = process.env._.replace( + path.dirname(process.execPath) + '/', '' + ); + } + + var flags = { bools : {}, strings : {} }; + + self.boolean = function (bools) { + if (!Array.isArray(bools)) { + bools = [].slice.call(arguments); + } + + bools.forEach(function (name) { + flags.bools[name] = true; + }); + + return self; + }; + + self.string = function (strings) { + if (!Array.isArray(strings)) { + strings = [].slice.call(arguments); + } + + strings.forEach(function (name) { + flags.strings[name] = true; + }); + + return self; + }; + + var aliases = {}; + self.alias = function (x, y) { + if (typeof x === 'object') { + Object.keys(x).forEach(function (key) { + self.alias(key, x[key]); + }); + } + else if (Array.isArray(y)) { + y.forEach(function (yy) { + self.alias(x, yy); + }); + } + else { + var zs = (aliases[x] || []).concat(aliases[y] || []).concat(x, y); + aliases[x] = zs.filter(function (z) { return z != x }); + aliases[y] = zs.filter(function (z) { return z != y }); + } + + return self; + }; + + var demanded = {}; + self.demand = function (keys) { + if (typeof keys == 'number') { + if (!demanded._) demanded._ = 0; + demanded._ += keys; + } + else if (Array.isArray(keys)) { + keys.forEach(function (key) { + self.demand(key); + }); + } + else { + demanded[keys] = true; + } + + return self; + }; + + var usage; + self.usage = function (msg, opts) { + if (!opts && typeof msg === 'object') { + opts = msg; + msg = null; + } + + usage = msg; + + if (opts) self.options(opts); + + return self; + }; + + function fail (msg) { + self.showHelp(); + if (msg) console.error(msg); + process.exit(1); + } + + var checks = []; + self.check = function (f) { + checks.push(f); + return self; + }; + + var defaults = {}; + self.default = function (key, value) { + if (typeof key === 'object') { + Object.keys(key).forEach(function (k) { + self.default(k, key[k]); + }); + } + else { + defaults[key] = value; + } + + return self; + }; + + var descriptions = {}; + self.describe = function (key, desc) { + if (typeof key === 'object') { + Object.keys(key).forEach(function (k) { + self.describe(k, key[k]); + }); + } + else { + descriptions[key] = desc; + } + return self; + }; + + self.parse = function (args) { + return Argv(args).argv; + }; + + self.option = self.options = function (key, opt) { + if (typeof key === 'object') { + Object.keys(key).forEach(function (k) { + self.options(k, key[k]); + }); + } + else { + if (opt.alias) self.alias(key, opt.alias); + if (opt.demand) self.demand(key); + if (opt.default) self.default(key, opt.default); + + if (opt.boolean || opt.type === 'boolean') { + self.boolean(key); + } + if (opt.string || opt.type === 'string') { + self.string(key); + } + + var desc = opt.describe || opt.description || opt.desc; + if (desc) { + self.describe(key, desc); + } + } + + return self; + }; + + var wrap = null; + self.wrap = function (cols) { + wrap = cols; + return self; + }; + + self.showHelp = function (fn) { + if (!fn) fn = console.error; + fn(self.help()); + }; + + self.help = function () { + var keys = Object.keys( + Object.keys(descriptions) + .concat(Object.keys(demanded)) + .concat(Object.keys(defaults)) + .reduce(function (acc, key) { + if (key !== '_') acc[key] = true; + return acc; + }, {}) + ); + + var help = keys.length ? [ 'Options:' ] : []; + + if (usage) { + help.unshift(usage.replace(/\$0/g, self.$0), ''); + } + + var switches = keys.reduce(function (acc, key) { + acc[key] = [ key ].concat(aliases[key] || []) + .map(function (sw) { + return (sw.length > 1 ? '--' : '-') + sw + }) + .join(', ') + ; + return acc; + }, {}); + + var switchlen = longest(Object.keys(switches).map(function (s) { + return switches[s] || ''; + })); + + var desclen = longest(Object.keys(descriptions).map(function (d) { + return descriptions[d] || ''; + })); + + keys.forEach(function (key) { + var kswitch = switches[key]; + var desc = descriptions[key] || ''; + + if (wrap) { + desc = wordwrap(switchlen + 4, wrap)(desc) + .slice(switchlen + 4) + ; + } + + var spadding = new Array( + Math.max(switchlen - kswitch.length + 3, 0) + ).join(' '); + + var dpadding = new Array( + Math.max(desclen - desc.length + 1, 0) + ).join(' '); + + var type = null; + + if (flags.bools[key]) type = '[boolean]'; + if (flags.strings[key]) type = '[string]'; + + if (!wrap && dpadding.length > 0) { + desc += dpadding; + } + + var prelude = ' ' + kswitch + spadding; + var extra = [ + type, + demanded[key] + ? '[required]' + : null + , + defaults[key] !== undefined + ? '[default: ' + JSON.stringify(defaults[key]) + ']' + : null + , + ].filter(Boolean).join(' '); + + var body = [ desc, extra ].filter(Boolean).join(' '); + + if (wrap) { + var dlines = desc.split('\n'); + var dlen = dlines.slice(-1)[0].length + + (dlines.length === 1 ? prelude.length : 0) + + body = desc + (dlen + extra.length > wrap - 2 + ? '\n' + + new Array(wrap - extra.length + 1).join(' ') + + extra + : new Array(wrap - extra.length - dlen + 1).join(' ') + + extra + ); + } + + help.push(prelude + body); + }); + + help.push(''); + return help.join('\n'); + }; + + Object.defineProperty(self, 'argv', { + get : parseArgs, + enumerable : true, + }); + + function parseArgs () { + var argv = { _ : [], $0 : self.$0 }; + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] || false); + }); + + function setArg (key, val) { + var num = Number(val); + var value = typeof val !== 'string' || isNaN(num) ? val : num; + if (flags.strings[key]) value = val; + + if (key in argv && !flags.bools[key]) { + if (!Array.isArray(argv[key])) { + argv[key] = [ argv[key] ]; + } + argv[key].push(value); + } + else { + argv[key] = value; + } + + (aliases[key] || []).forEach(function (x) { + argv[x] = argv[key]; + }); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if (arg === '--') { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + else if (arg.match(/^--.+=/)) { + var m = arg.match(/^--([^=]+)=(.*)/); + setArg(m[1], m[2]); + } + else if (arg.match(/^--no-.+/)) { + var key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false); + } + else if (arg.match(/^--.+/)) { + var key = arg.match(/^--(.+)/)[1]; + var next = args[i + 1]; + if (next !== undefined && !next.match(/^-/) + && !flags.bools[key]) { + setArg(key, next); + i++; + } + else if (flags.bools[key] && /true|false/.test(next)) { + setArg(key, next === 'true'); + i++; + } + else { + setArg(key, true); + } + } + else if (arg.match(/^-[^-]+/)) { + var letters = arg.slice(1,-1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + if (letters[j+1] && letters[j+1].match(/\W/)) { + setArg(letters[j], arg.slice(j+2)); + broken = true; + break; + } + else { + setArg(letters[j], true); + } + } + + if (!broken) { + var key = arg.slice(-1)[0]; + + if (args[i+1] && !args[i+1].match(/^-/) + && !flags.bools[key]) { + setArg(key, args[i+1]); + i++; + } + else if (args[i+1] && flags.bools[key] && /true|false/.test(args[i+1])) { + setArg(key, args[i+1] === 'true'); + i++; + } + else { + setArg(key, true); + } + } + } + else { + var n = Number(arg); + argv._.push(flags.strings['_'] || isNaN(n) ? arg : n); + } + } + + Object.keys(defaults).forEach(function (key) { + if (!(key in argv)) { + argv[key] = defaults[key]; + } + }); + + if (demanded._ && argv._.length < demanded._) { + fail('Not enough non-option arguments: got ' + + argv._.length + ', need at least ' + demanded._ + ); + } + + var missing = []; + Object.keys(demanded).forEach(function (key) { + if (!argv[key]) missing.push(key); + }); + + if (missing.length) { + fail('Missing required arguments: ' + missing.join(', ')); + } + + checks.forEach(function (f) { + try { + if (f(argv) === false) { + fail('Argument check failed: ' + f.toString()); + } + } + catch (err) { + fail(err) + } + }); + + return argv; + } + + function longest (xs) { + return Math.max.apply( + null, + xs.map(function (x) { return x.length }) + ); + } + + return self; +}; + +// rebase an absolute path to a relative one with respect to a base directory +// exported for tests +exports.rebase = rebase; +function rebase (base, dir) { + var ds = path.normalize(dir).split('/').slice(1); + var bs = path.normalize(base).split('/').slice(1); + + for (var i = 0; ds[i] && ds[i] == bs[i]; i++); + ds.splice(0, i); bs.splice(0, i); + + var p = path.normalize( + bs.map(function () { return '..' }).concat(ds).join('/') + ).replace(/\/$/,'').replace(/^$/, '.'); + return p.match(/^[.\/]/) ? p : './' + p; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown new file mode 100644 index 0000000..346374e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown @@ -0,0 +1,70 @@ +wordwrap +======== + +Wrap your words. + +example +======= + +made out of meat +---------------- + +meat.js + + var wrap = require('wordwrap')(15); + console.log(wrap('You and your whole family are made out of meat.')); + +output: + + You and your + whole family + are made out + of meat. + +centered +-------- + +center.js + + var wrap = require('wordwrap')(20, 60); + console.log(wrap( + 'At long last the struggle and tumult was over.' + + ' The machines had finally cast off their oppressors' + + ' and were finally free to roam the cosmos.' + + '\n' + + 'Free of purpose, free of obligation.' + + ' Just drifting through emptiness.' + + ' The sun was just another point of light.' + )); + +output: + + At long last the struggle and tumult + was over. The machines had finally cast + off their oppressors and were finally + free to roam the cosmos. + Free of purpose, free of obligation. + Just drifting through emptiness. The + sun was just another point of light. + +methods +======= + +var wrap = require('wordwrap'); + +wrap(stop), wrap(start, stop, params={mode:"soft"}) +--------------------------------------------------- + +Returns a function that takes a string and returns a new string. + +Pad out lines with spaces out to column `start` and then wrap until column +`stop`. If a word is longer than `stop - start` characters it will overflow. + +In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are +longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break +up chunks longer than `stop - start`. + +wrap.hard(start, stop) +---------------------- + +Like `wrap()` but with `params.mode = "hard"`. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js new file mode 100644 index 0000000..a3fbaae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js @@ -0,0 +1,10 @@ +var wrap = require('wordwrap')(20, 60); +console.log(wrap( + 'At long last the struggle and tumult was over.' + + ' The machines had finally cast off their oppressors' + + ' and were finally free to roam the cosmos.' + + '\n' + + 'Free of purpose, free of obligation.' + + ' Just drifting through emptiness.' + + ' The sun was just another point of light.' +)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js new file mode 100644 index 0000000..a4665e1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js @@ -0,0 +1,3 @@ +var wrap = require('wordwrap')(15); + +console.log(wrap('You and your whole family are made out of meat.')); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js new file mode 100644 index 0000000..c9bc945 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js @@ -0,0 +1,76 @@ +var wordwrap = module.exports = function (start, stop, params) { + if (typeof start === 'object') { + params = start; + start = params.start; + stop = params.stop; + } + + if (typeof stop === 'object') { + params = stop; + start = start || params.start; + stop = undefined; + } + + if (!stop) { + stop = start; + start = 0; + } + + if (!params) params = {}; + var mode = params.mode || 'soft'; + var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; + + return function (text) { + var chunks = text.toString() + .split(re) + .reduce(function (acc, x) { + if (mode === 'hard') { + for (var i = 0; i < x.length; i += stop - start) { + acc.push(x.slice(i, i + stop - start)); + } + } + else acc.push(x) + return acc; + }, []) + ; + + return chunks.reduce(function (lines, rawChunk) { + if (rawChunk === '') return lines; + + var chunk = rawChunk.replace(/\t/g, ' '); + + var i = lines.length - 1; + if (lines[i].length + chunk.length > stop) { + lines[i] = lines[i].replace(/\s+$/, ''); + + chunk.split(/\n/).forEach(function (c) { + lines.push( + new Array(start + 1).join(' ') + + c.replace(/^\s+/, '') + ); + }); + } + else if (chunk.match(/\n/)) { + var xs = chunk.split(/\n/); + lines[i] += xs.shift(); + xs.forEach(function (c) { + lines.push( + new Array(start + 1).join(' ') + + c.replace(/^\s+/, '') + ); + }); + } + else { + lines[i] += chunk; + } + + return lines; + }, [ new Array(start + 1).join(' ') ]).join('\n'); + }; +}; + +wordwrap.soft = wordwrap; + +wordwrap.hard = function (start, stop) { + return wordwrap(start, stop, { mode : 'hard' }); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json new file mode 100644 index 0000000..928d935 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json @@ -0,0 +1,40 @@ +{ + "name": "wordwrap", + "description": "Wrap those words. Show them at what columns to start and stop.", + "version": "0.0.2", + "repository": { + "type": "git", + "url": "git://github.com/substack/node-wordwrap.git" + }, + "main": "./index.js", + "keywords": [ + "word", + "wrap", + "rule", + "format", + "column" + ], + "directories": { + "lib": ".", + "example": "example", + "test": "test" + }, + "scripts": { + "test": "expresso" + }, + "devDependencies": { + "expresso": "=0.7.x" + }, + "engines": { + "node": ">=0.4.0" + }, + "license": "MIT/X11", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", + "_id": "wordwrap@0.0.2", + "_from": "wordwrap@>=0.0.1 <0.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js new file mode 100644 index 0000000..749292e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js @@ -0,0 +1,30 @@ +var assert = require('assert'); +var wordwrap = require('../'); + +exports.hard = function () { + var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' + + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' + + '"browser":"chrome/6.0"}' + ; + var s_ = wordwrap.hard(80)(s); + + var lines = s_.split('\n'); + assert.equal(lines.length, 2); + assert.ok(lines[0].length < 80); + assert.ok(lines[1].length < 80); + + assert.equal(s, s_.replace(/\n/g, '')); +}; + +exports.break = function () { + var s = new Array(55+1).join('a'); + var s_ = wordwrap.hard(20)(s); + + var lines = s_.split('\n'); + assert.equal(lines.length, 3); + assert.ok(lines[0].length === 20); + assert.ok(lines[1].length === 20); + assert.ok(lines[2].length === 15); + + assert.equal(s, s_.replace(/\n/g, '')); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt new file mode 100644 index 0000000..aa3f490 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt @@ -0,0 +1,63 @@ +In Praise of Idleness + +By Bertrand Russell + +[1932] + +Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. + +Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. + +One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. + +But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. + +All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. + +First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. + +Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. + +From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. + +It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. + +Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. + +This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? + +The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. + +Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. + +I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. + +If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. + +The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. + +In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. + +The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. + +For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? + +In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. + +In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. + +The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. + +It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. + +When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. + +In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. + +The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. + +In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. + +Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. + +[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js new file mode 100644 index 0000000..0cfb76d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js @@ -0,0 +1,31 @@ +var assert = require('assert'); +var wordwrap = require('wordwrap'); + +var fs = require('fs'); +var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); + +exports.stop80 = function () { + var lines = wordwrap(80)(idleness).split(/\n/); + var words = idleness.split(/\s+/); + + lines.forEach(function (line) { + assert.ok(line.length <= 80, 'line > 80 columns'); + var chunks = line.match(/\S/) ? line.split(/\s+/) : []; + assert.deepEqual(chunks, words.splice(0, chunks.length)); + }); +}; + +exports.start20stop60 = function () { + var lines = wordwrap(20, 100)(idleness).split(/\n/); + var words = idleness.split(/\s+/); + + lines.forEach(function (line) { + assert.ok(line.length <= 100, 'line > 100 columns'); + var chunks = line + .split(/\s+/) + .filter(function (x) { return x.match(/\S/) }) + ; + assert.deepEqual(chunks, words.splice(0, chunks.length)); + assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); + }); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json new file mode 100644 index 0000000..bbe848c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json @@ -0,0 +1,46 @@ +{ + "name": "optimist", + "version": "0.2.8", + "description": "Light-weight option parsing with an argv hash. No optstrings attached.", + "main": "./index.js", + "directories": { + "lib": ".", + "test": "test", + "example": "examples" + }, + "dependencies": { + "wordwrap": ">=0.0.1 <0.1.0" + }, + "devDependencies": { + "hashish": "0.0.x", + "expresso": "0.7.x" + }, + "scripts": { + "test": "expresso" + }, + "repository": { + "type": "git", + "url": "http://github.com/substack/node-optimist.git" + }, + "keywords": [ + "argument", + "args", + "option", + "parser", + "parsing", + "cli", + "command" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT/X11", + "engine": { + "node": ">=0.4" + }, + "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", + "_id": "optimist@0.2.8", + "_from": "optimist@0.2" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js new file mode 100644 index 0000000..3d6df6e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js @@ -0,0 +1,66 @@ +var spawn = require('child_process').spawn; +var assert = require('assert'); + +exports.dotSlashEmpty = function () { + testCmd('./bin.js', []); +}; + +exports.dotSlashArgs = function () { + testCmd('./bin.js', [ 'a', 'b', 'c' ]); +}; + +exports.nodeEmpty = function () { + testCmd('node bin.js', []); +}; + +exports.nodeArgs = function () { + testCmd('node bin.js', [ 'x', 'y', 'z' ]); +}; + +exports.whichNodeEmpty = function () { + var which = spawn('which', ['node']); + + which.stdout.on('data', function (buf) { + testCmd(buf.toString().trim() + ' bin.js', []); + }); + + which.stderr.on('data', function (err) { + assert.fail(err.toString()); + }); +}; + +exports.whichNodeArgs = function () { + var which = spawn('which', ['node']); + + which.stdout.on('data', function (buf) { + testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]); + }); + + which.stderr.on('data', function (err) { + assert.fail(err.toString()); + }); +}; + +function testCmd (cmd, args) { + var to = setTimeout(function () { + assert.fail('Never got stdout data.') + }, 5000); + + var oldDir = process.cwd(); + process.chdir(__dirname + '/_'); + + var cmds = cmd.split(' '); + + var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); + process.chdir(oldDir); + + bin.stderr.on('data', function (err) { + assert.fail(err.toString()); + }); + + bin.stdout.on('data', function (buf) { + clearTimeout(to); + var _ = JSON.parse(buf.toString()); + assert.eql(_.map(String), args.map(String)); + }); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js new file mode 100644 index 0000000..3d09606 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +console.log(JSON.stringify(process.argv)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js new file mode 100644 index 0000000..4a18d85 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node +var argv = require('../../index').argv +console.log(JSON.stringify(argv._)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js new file mode 100644 index 0000000..eed467e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js @@ -0,0 +1,304 @@ +var optimist = require('../index'); +var assert = require('assert'); +var path = require('path'); + +var localExpresso = path.normalize( + __dirname + '/../node_modules/.bin/expresso' +); + +var expresso = process.argv[1] === localExpresso + ? 'node ./node_modules/.bin/expresso' + : 'expresso' +; + +exports['short boolean'] = function () { + var parse = optimist.parse([ '-b' ]); + assert.eql(parse, { b : true, _ : [], $0 : expresso }); + assert.eql(typeof parse.b, 'boolean'); +}; + +exports['long boolean'] = function () { + assert.eql( + optimist.parse([ '--bool' ]), + { bool : true, _ : [], $0 : expresso } + ); +}; + +exports.bare = function () { + assert.eql( + optimist.parse([ 'foo', 'bar', 'baz' ]), + { _ : [ 'foo', 'bar', 'baz' ], $0 : expresso } + ); +}; + +exports['short group'] = function () { + assert.eql( + optimist.parse([ '-cats' ]), + { c : true, a : true, t : true, s : true, _ : [], $0 : expresso } + ); +}; + +exports['short group next'] = function () { + assert.eql( + optimist.parse([ '-cats', 'meow' ]), + { c : true, a : true, t : true, s : 'meow', _ : [], $0 : expresso } + ); +}; + +exports['short capture'] = function () { + assert.eql( + optimist.parse([ '-h', 'localhost' ]), + { h : 'localhost', _ : [], $0 : expresso } + ); +}; + +exports['short captures'] = function () { + assert.eql( + optimist.parse([ '-h', 'localhost', '-p', '555' ]), + { h : 'localhost', p : 555, _ : [], $0 : expresso } + ); +}; + +exports['long capture sp'] = function () { + assert.eql( + optimist.parse([ '--pow', 'xixxle' ]), + { pow : 'xixxle', _ : [], $0 : expresso } + ); +}; + +exports['long capture eq'] = function () { + assert.eql( + optimist.parse([ '--pow=xixxle' ]), + { pow : 'xixxle', _ : [], $0 : expresso } + ); +}; + +exports['long captures sp'] = function () { + assert.eql( + optimist.parse([ '--host', 'localhost', '--port', '555' ]), + { host : 'localhost', port : 555, _ : [], $0 : expresso } + ); +}; + +exports['long captures eq'] = function () { + assert.eql( + optimist.parse([ '--host=localhost', '--port=555' ]), + { host : 'localhost', port : 555, _ : [], $0 : expresso } + ); +}; + +exports['mixed short bool and capture'] = function () { + assert.eql( + optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), + { + f : true, p : 555, h : 'localhost', + _ : [ 'script.js' ], $0 : expresso, + } + ); +}; + +exports['short and long'] = function () { + assert.eql( + optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), + { + f : true, p : 555, h : 'localhost', + _ : [ 'script.js' ], $0 : expresso, + } + ); +}; + +exports.no = function () { + assert.eql( + optimist.parse([ '--no-moo' ]), + { moo : false, _ : [], $0 : expresso } + ); +}; + +exports.multi = function () { + assert.eql( + optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), + { v : ['a','b','c'], _ : [], $0 : expresso } + ); +}; + +exports.comprehensive = function () { + assert.eql( + optimist.parse([ + '--name=meowmers', 'bare', '-cats', 'woo', + '-h', 'awesome', '--multi=quux', + '--key', 'value', + '-b', '--bool', '--no-meep', '--multi=baz', + '--', '--not-a-flag', 'eek' + ]), + { + c : true, + a : true, + t : true, + s : 'woo', + h : 'awesome', + b : true, + bool : true, + key : 'value', + multi : [ 'quux', 'baz' ], + meep : false, + name : 'meowmers', + _ : [ 'bare', '--not-a-flag', 'eek' ], + $0 : expresso + } + ); +}; + +exports.nums = function () { + var argv = optimist.parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789', + ]); + assert.eql(argv, { + x : 1234, + y : 5.67, + z : 1e7, + w : '10f', + hex : 0xdeadbeef, + _ : [ 789 ], + $0 : expresso + }); + assert.eql(typeof argv.x, 'number'); + assert.eql(typeof argv.y, 'number'); + assert.eql(typeof argv.z, 'number'); + assert.eql(typeof argv.w, 'string'); + assert.eql(typeof argv.hex, 'number'); + assert.eql(typeof argv._[0], 'number'); +}; + +exports['flag boolean'] = function () { + var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; + assert.eql(parse, { t : true, _ : [ 'moo' ], $0 : expresso }); + assert.eql(typeof parse.t, 'boolean'); +}; + +exports['flag boolean value'] = function () { + var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) + .boolean(['t', 'verbose']).default('verbose', true).argv; + + assert.eql(parse, { + verbose: false, + t: true, + _: ['moo'], + $0 : expresso + }); + + assert.eql(typeof parse.verbose, 'boolean'); + assert.eql(typeof parse.t, 'boolean'); +}; + +exports['flag boolean default false'] = function () { + var parse = optimist(['moo']) + .boolean(['t', 'verbose']) + .default('verbose', false) + .default('t', false).argv; + + assert.eql(parse, { + verbose: false, + t: false, + _: ['moo'], + $0 : expresso + }); + + assert.eql(typeof parse.verbose, 'boolean'); + assert.eql(typeof parse.t, 'boolean'); + +}; + +exports['boolean groups'] = function () { + var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) + .boolean(['x','y','z']).argv; + + assert.eql(parse, { + x : true, + y : false, + z : true, + _ : [ 'one', 'two', 'three' ], + $0 : expresso + }); + + assert.eql(typeof parse.x, 'boolean'); + assert.eql(typeof parse.y, 'boolean'); + assert.eql(typeof parse.z, 'boolean'); +}; + +exports.strings = function () { + var s = optimist([ '-s', '0001234' ]).string('s').argv.s; + assert.eql(s, '0001234'); + assert.eql(typeof s, 'string'); + + var x = optimist([ '-x', '56' ]).string('x').argv.x; + assert.eql(x, '56'); + assert.eql(typeof x, 'string'); +}; + +exports.stringArgs = function () { + var s = optimist([ ' ', ' ' ]).string('_').argv._; + assert.eql(s.length, 2); + assert.eql(typeof s[0], 'string'); + assert.eql(s[0], ' '); + assert.eql(typeof s[1], 'string'); + assert.eql(s[1], ' '); +}; + +exports.slashBreak = function () { + assert.eql( + optimist.parse([ '-I/foo/bar/baz' ]), + { I : '/foo/bar/baz', _ : [], $0 : expresso } + ); + assert.eql( + optimist.parse([ '-xyz/foo/bar/baz' ]), + { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : expresso } + ); +}; + +exports.alias = function () { + var argv = optimist([ '-f', '11', '--zoom', '55' ]) + .alias('z', 'zoom') + .argv + ; + assert.equal(argv.zoom, 55); + assert.equal(argv.z, argv.zoom); + assert.equal(argv.f, 11); +}; + +exports.multiAlias = function () { + var argv = optimist([ '-f', '11', '--zoom', '55' ]) + .alias('z', [ 'zm', 'zoom' ]) + .argv + ; + assert.equal(argv.zoom, 55); + assert.equal(argv.z, argv.zoom); + assert.equal(argv.z, argv.zm); + assert.equal(argv.f, 11); +}; + +exports['boolean default true'] = function () { + var argv = optimist.options({ + sometrue: { + boolean: true, + default: true + } + }).argv; + + assert.equal(argv.sometrue, true); +}; + +exports['boolean default false'] = function () { + var argv = optimist.options({ + somefalse: { + boolean: true, + default: false + } + }).argv; + + assert.equal(argv.somefalse, false); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js new file mode 100644 index 0000000..6593b9b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js @@ -0,0 +1,256 @@ +var Hash = require('hashish'); +var optimist = require('../index'); +var assert = require('assert'); + +exports.usageFail = function () { + var r = checkUsage(function () { + return optimist('-x 10 -z 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .demand(['x','y']) + .argv; + }); + assert.deepEqual( + r.result, + { x : 10, z : 20, _ : [], $0 : './usage' } + ); + + assert.deepEqual( + r.errors.join('\n').split(/\n+/), + [ + 'Usage: ./usage -x NUM -y NUM', + 'Options:', + ' -x [required]', + ' -y [required]', + 'Missing required arguments: y', + ] + ); + assert.deepEqual(r.logs, []); + assert.ok(r.exit); +}; + +exports.usagePass = function () { + var r = checkUsage(function () { + return optimist('-x 10 -y 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .demand(['x','y']) + .argv; + }); + assert.deepEqual(r, { + result : { x : 10, y : 20, _ : [], $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); +}; + +exports.checkPass = function () { + var r = checkUsage(function () { + return optimist('-x 10 -y 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(function (argv) { + if (!('x' in argv)) throw 'You forgot about -x'; + if (!('y' in argv)) throw 'You forgot about -y'; + }) + .argv; + }); + assert.deepEqual(r, { + result : { x : 10, y : 20, _ : [], $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); +}; + +exports.checkFail = function () { + var r = checkUsage(function () { + return optimist('-x 10 -z 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(function (argv) { + if (!('x' in argv)) throw 'You forgot about -x'; + if (!('y' in argv)) throw 'You forgot about -y'; + }) + .argv; + }); + + assert.deepEqual( + r.result, + { x : 10, z : 20, _ : [], $0 : './usage' } + ); + + assert.deepEqual( + r.errors.join('\n').split(/\n+/), + [ + 'Usage: ./usage -x NUM -y NUM', + 'You forgot about -y' + ] + ); + + assert.deepEqual(r.logs, []); + assert.ok(r.exit); +}; + +exports.checkCondPass = function () { + function checker (argv) { + return 'x' in argv && 'y' in argv; + } + + var r = checkUsage(function () { + return optimist('-x 10 -y 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(checker) + .argv; + }); + assert.deepEqual(r, { + result : { x : 10, y : 20, _ : [], $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); +}; + +exports.checkCondFail = function () { + function checker (argv) { + return 'x' in argv && 'y' in argv; + } + + var r = checkUsage(function () { + return optimist('-x 10 -z 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(checker) + .argv; + }); + + assert.deepEqual( + r.result, + { x : 10, z : 20, _ : [], $0 : './usage' } + ); + + assert.deepEqual( + r.errors.join('\n').split(/\n+/).join('\n'), + 'Usage: ./usage -x NUM -y NUM\n' + + 'Argument check failed: ' + checker.toString() + ); + + assert.deepEqual(r.logs, []); + assert.ok(r.exit); +}; + +exports.countPass = function () { + var r = checkUsage(function () { + return optimist('1 2 3 --moo'.split(' ')) + .usage('Usage: $0 [x] [y] [z] {OPTIONS}') + .demand(3) + .argv; + }); + assert.deepEqual(r, { + result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); +}; + +exports.countFail = function () { + var r = checkUsage(function () { + return optimist('1 2 --moo'.split(' ')) + .usage('Usage: $0 [x] [y] [z] {OPTIONS}') + .demand(3) + .argv; + }); + assert.deepEqual( + r.result, + { _ : [ '1', '2' ], moo : true, $0 : './usage' } + ); + + assert.deepEqual( + r.errors.join('\n').split(/\n+/), + [ + 'Usage: ./usage [x] [y] [z] {OPTIONS}', + 'Not enough non-option arguments: got 2, need at least 3', + ] + ); + + assert.deepEqual(r.logs, []); + assert.ok(r.exit); +}; + +exports.defaultSingles = function () { + var r = checkUsage(function () { + return optimist('--foo 50 --baz 70 --powsy'.split(' ')) + .default('foo', 5) + .default('bar', 6) + .default('baz', 7) + .argv + ; + }); + assert.eql(r.result, { + foo : '50', + bar : 6, + baz : '70', + powsy : true, + _ : [], + $0 : './usage', + }); +}; + +exports.defaultHash = function () { + var r = checkUsage(function () { + return optimist('--foo 50 --baz 70'.split(' ')) + .default({ foo : 10, bar : 20, quux : 30 }) + .argv + ; + }); + assert.eql(r.result, { + foo : '50', + bar : 20, + baz : 70, + quux : 30, + _ : [], + $0 : './usage', + }); +}; + +exports.rebase = function () { + assert.equal( + optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), + './foo/bar/baz' + ); + assert.equal( + optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), + '../../..' + ); + assert.equal( + optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), + '../pow/zoom.txt' + ); +}; + +function checkUsage (f) { + var _process = process; + process = Hash.copy(process); + var exit = false; + process.exit = function () { exit = true }; + process.env = Hash.merge(process.env, { _ : 'node' }); + process.argv = [ './usage' ]; + + var errors = []; + var logs = []; + + console._error = console.error; + console.error = function (msg) { errors.push(msg) }; + console._log = console.log; + console.log = function (msg) { logs.push(msg) }; + + var result = f(); + + process = _process; + console.error = console._error; + console.log = console._log; + + return { + errors : errors, + logs : logs, + exit : exit, + result : result, + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore new file mode 100644 index 0000000..13abef4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore @@ -0,0 +1,3 @@ +node_modules +node_modules/* +npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js new file mode 100644 index 0000000..8fadda9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js @@ -0,0 +1,76 @@ +var Stream = require('stream') + +/* + was gonna use through for this, + but it does not match quite right, + because you need a seperate pause + mechanism for the readable and writable + sides. +*/ + +module.exports = function () { + var buffer = [], ended = false, destroyed = false + var stream = new Stream() + stream.writable = stream.readable = true + stream.paused = false + + stream.write = function (data) { + if(!this.paused) + this.emit('data', data) + else + buffer.push(data) + return !(this.paused || buffer.length) + } + function onEnd () { + stream.readable = false + stream.emit('end') + process.nextTick(stream.destroy.bind(stream)) + } + stream.end = function (data) { + if(data) this.write(data) + this.ended = true + this.writable = false + if(!(this.paused || buffer.length)) + return onEnd() + else + this.once('drain', onEnd) + this.drain() + } + + stream.drain = function () { + while(!this.paused && buffer.length) + this.emit('data', buffer.shift()) + //if the buffer has emptied. emit drain. + if(!buffer.length && !this.paused) + this.emit('drain') + } + + stream.resume = function () { + //this is where I need pauseRead, and pauseWrite. + //here the reading side is unpaused, + //but the writing side may still be paused. + //the whole buffer might not empity at once. + //it might pause again. + //the stream should never emit data inbetween pause()...resume() + //and write should return !buffer.length + + this.paused = false +// process.nextTick(this.drain.bind(this)) //will emit drain if buffer empties. + this.drain() + return this + } + + stream.destroy = function () { + if(destroyed) return + destroyed = ended = true + buffer.length = 0 + this.emit('close') + } + + stream.pause = function () { + stream.paused = true + return this + } + + return stream +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json new file mode 100644 index 0000000..7702ad5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json @@ -0,0 +1,38 @@ +{ + "name": "pause-stream", + "version": "0.0.4", + "description": "a ThroughStream that strictly buffers all readable events when paused.", + "main": "index.js", + "directories": { + "test": "test" + }, + "devDependencies": { + "stream-spec": "~0.2.0" + }, + "scripts": { + "test": "node test/index.js && node test/pause-end.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/pause-stream.git" + }, + "keywords": [ + "stream", + "pipe", + "pause", + "drain", + "buffer" + ], + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "dominictarr.com" + }, + "license": [ + "MIT", + "Apache2" + ], + "readme": "# PauseStream\n\nThis is a `Stream` that will strictly buffer when paused.\nConnect it to anything you need buffered.\n\n``` js\n var ps = require('pause-stream')();\n\n badlyBehavedStream.pipe(ps.pause())\n\n aLittleLater(function (err, data) {\n ps.pipe(createAnotherStream(data))\n ps.resume()\n })\n```\n\n`PauseStream` will buffer whenever paused.\nit will buffer when yau have called `pause` manually.\nbut also when it's downstream `dest.write()===false`.\nit will attempt to drain the buffer when you call resume\nor the downstream emits `'drain'`\n\n`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec)\nand [stream-tester](https://github.com/dominictarr/stream-tester)\n", + "_id": "pause-stream@0.0.4", + "_from": "pause-stream@0.0.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown new file mode 100644 index 0000000..715cb52 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown @@ -0,0 +1,24 @@ +# PauseStream + +This is a `Stream` that will strictly buffer when paused. +Connect it to anything you need buffered. + +``` js + var ps = require('pause-stream')(); + + badlyBehavedStream.pipe(ps.pause()) + + aLittleLater(function (err, data) { + ps.pipe(createAnotherStream(data)) + ps.resume() + }) +``` + +`PauseStream` will buffer whenever paused. +it will buffer when yau have called `pause` manually. +but also when it's downstream `dest.write()===false`. +it will attempt to drain the buffer when you call resume +or the downstream emits `'drain'` + +`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec) +and [stream-tester](https://github.com/dominictarr/stream-tester) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js new file mode 100644 index 0000000..4aa7d5e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js @@ -0,0 +1,17 @@ +var spec = require('stream-spec') +var tester = require('stream-tester') +var ps = require('..')() + +spec(ps) + .through({strict: false}) + .validateOnExit() + +var master = tester.createConsistent + +tester.createRandomStream(100) //1k random numbers + .pipe(master = tester.createConsistentStream()) + .pipe(tester.createUnpauseStream()) + .pipe(ps) + .pipe(tester.createPauseStream()) + .pipe(master.createSlave()) + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js new file mode 100644 index 0000000..a6c27ef --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js @@ -0,0 +1,33 @@ + +var pause = require('..') +var assert = require('assert') + +var ps = pause() +var read = [], ended = false + +ps.on('data', function (i) { + read.push(i) +}) + +ps.on('end', function () { + ended = true +}) + +assert.deepEqual(read, []) + +ps.write(0) +ps.write(1) +ps.write(2) + +assert.deepEqual(read, [0, 1, 2]) + +ps.pause() + +assert.deepEqual(read, [0, 1, 2]) + +ps.end() +assert.equal(ended, false) +ps.resume() +assert.equal(ended, true) + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore new file mode 100644 index 0000000..13abef4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore @@ -0,0 +1,3 @@ +node_modules +node_modules/* +npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE new file mode 100644 index 0000000..171dd97 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE @@ -0,0 +1,22 @@ +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js new file mode 100644 index 0000000..af04340 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js @@ -0,0 +1,25 @@ + +var inspect = require('util').inspect + +if(!module.parent) { + var es = require('..') //load event-stream + es.pipe( //pipe joins streams together + process.openStdin(), //open stdin + es.split(), //split stream to break on newlines + es.map(function (data, callback) {//turn this async function into a stream + var j + try { + j = JSON.parse(data) //try to parse input into json + } catch (err) { + return callback(null, data) //if it fails just pass it anyway + } + callback(null, inspect(j)) //render it nicely + }), + process.stdout // pipe it to stdout ! + ) + } + +// run this +// +// curl -sS registry.npmjs.org/event-stream | node pretty.js +// diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js new file mode 100644 index 0000000..1146c96 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js @@ -0,0 +1,35 @@ +//filter will reemit the data if cb(err,pass) pass is truthy + +// reduce is more tricky +// maybe we want to group the reductions or emit progress updates occasionally +// the most basic reduce just emits one 'data' event after it has recieved 'end' + + +var through = require('through') + + +module.exports = split + +function split (matcher) { + var soFar = '' + if (!matcher) + matcher = '\n' + + return through(function (buffer) { + var stream = this + , pieces = (soFar + buffer).split(matcher) + soFar = pieces.pop() + + pieces.forEach(function (piece) { + stream.emit('data', piece) + }) + + return true + }, + function () { + if(soFar) + this.emit('data', soFar) + this.emit('end') + }) +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 new file mode 100644 index 0000000..6366c04 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 @@ -0,0 +1,15 @@ +Apache License, Version 2.0 + +Copyright (c) 2011 Dominic Tarr + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT new file mode 100644 index 0000000..6eafbd7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js new file mode 100644 index 0000000..cd25055 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js @@ -0,0 +1,65 @@ +var Stream = require('stream') + +// through +// +// a stream that does nothing but re-emit the input. +// useful for aggregating a series of changing but not ending streams into one stream) + +exports = module.exports = through +through.through = through + +//create a readable writable stream. + +function through (write, end) { + write = write || function (data) { this.emit('data', data) } + end = end || function () { this.emit('end') } + + var ended = false, destroyed = false + var stream = new Stream() + stream.readable = stream.writable = true + stream.paused = false + stream.write = function (data) { + write.call(this, data) + return !stream.paused + } + //this will be registered as the first 'end' listener + //must call destroy next tick, to make sure we're after any + //stream piped from here. + stream.on('end', function () { + stream.readable = false + if(!stream.writable) + process.nextTick(function () { + stream.destroy() + }) + }) + + stream.end = function (data) { + if(ended) return + //this breaks, because pipe doesn't check writable before calling end. + //throw new Error('cannot call end twice') + ended = true + if(arguments.length) stream.write(data) + this.writable = false + end.call(this) + if(!this.readable) + this.destroy() + } + stream.destroy = function () { + if(destroyed) return + destroyed = true + ended = true + stream.writable = stream.readable = false + stream.emit('close') + } + stream.pause = function () { + stream.paused = true + } + stream.resume = function () { + if(stream.paused) { + stream.paused = false + stream.emit('drain') + } + } + return stream +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json new file mode 100644 index 0000000..3ecb71d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json @@ -0,0 +1,29 @@ +{ + "name": "through", + "version": "0.0.4", + "description": "simplified stream contruction", + "main": "index.js", + "scripts": { + "test": "asynct test/*.js" + }, + "devDependencies": { + "stream-spec": "0", + "assertions": "2", + "asynct": "1" + }, + "keywords": [ + "stream", + "streams", + "user-streams", + "pipe" + ], + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "dominictarr.com" + }, + "license": "MIT", + "readme": "#through\n\n[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)\n\nEasy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic.\nUse `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream).\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\n## License\n\nMIT / Apache2\n", + "_id": "through@0.0.4", + "_from": "through@0.0.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown new file mode 100644 index 0000000..ce9b9e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown @@ -0,0 +1,26 @@ +#through + +[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) + +Easy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic. +Use `this.pause()` and `this.resume()` to manage flow. +Check `this.paused` to see current flow state. (write always returns `!this.paused`) + +this function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream). + +``` js +var through = require('through') + +through(function write(data) { + this.emit('data', data) + //this.pause() + }, + function end () { //optional + this.emit('end') + }) + +``` + +## License + +MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js new file mode 100644 index 0000000..25a6ea7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js @@ -0,0 +1,113 @@ + +var spec = require('stream-spec') +var through = require('..') +var a = require('assertions') + +/* + I'm using these two functions, and not streams and pipe + so there is less to break. if this test fails it must be + the implementation of _through_ +*/ + +function write(array, stream) { + array = array.slice() + function next() { + while(array.length) + if(stream.write(array.shift()) === false) + return stream.once('drain', next) + + stream.end() + } + + next() +} + +function read(stream, callback) { + var actual = [] + stream.on('data', function (data) { + actual.push(data) + }) + stream.once('end', function () { + callback(null, actual) + }) + stream.once('error', function (err) { + callback(err) + }) +} + +exports['simple defaults'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = through() + spec(t) + .through() + .pausable() + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + + write(expected, t) +} + +exports['simple functions'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = through(function (data) { + this.emit('data', data*2) + }) + spec(t) + .through() + .pausable() + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected.map(function (data) { + return data*2 + })) + test.done() + }) + + write(expected, t) +} +exports['pauses'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l) //Math.random()) + + var t = through() + spec(t) + .through() + .pausable() + .validateOnExit() + + t.on('data', function () { + if(Math.random() > 0.1) return + t.pause() + process.nextTick(function () { + t.resume() + }) + }) + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + + write(expected, t) +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json new file mode 100644 index 0000000..a592dad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json @@ -0,0 +1,35 @@ +{ + "name": "split", + "version": "0.0.0", + "description": "split a Text Stream into a Line Stream", + "homepage": "http://github.com/dominictarr/split", + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/split.git" + }, + "dependencies": { + "through": "0.0.4" + }, + "devDependencies": { + "asynct": "*", + "it-is": "1", + "ubelt": "~2.9", + "stream-spec": "~0.2", + "event-stream": "~3.0.2" + }, + "scripts": { + "test": "asynct test/" + }, + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "http://bit.ly/dominictarr" + }, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "readme": "# Split (matcher)\n\n\n\nBreak up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` \n\nExample, read every line in a file ...\n\n``` js\n fs.createReadStream(file)\n .pipe(split())\n .on('data', function (line) {\n //each chunk now is a seperate line!\n })\n\n```\n\n`split` takes the same arguments as `string.split` except it defaults to '\\n' instead of ',', and the optional `limit` paremeter is ignored.\n[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split)\n\n", + "_id": "split@0.0.0", + "_from": "split@0.0.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown new file mode 100644 index 0000000..57c8edc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown @@ -0,0 +1,20 @@ +# Split (matcher) + + + +Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` + +Example, read every line in a file ... + +``` js + fs.createReadStream(file) + .pipe(split()) + .on('data', function (line) { + //each chunk now is a seperate line! + }) + +``` + +`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` paremeter is ignored. +[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js new file mode 100644 index 0000000..a6a3b1b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js @@ -0,0 +1,47 @@ +var es = require('event-stream') + , it = require('it-is').style('colour') + , d = require('ubelt') + , split = require('..') + , join = require('path').join + , fs = require('fs') + , Stream = require('stream').Stream + , spec = require('stream-spec') + +exports ['es.split() works like String#split'] = function (test) { + var readme = join(__filename) + , expected = fs.readFileSync(readme, 'utf-8').split('\n') + , cs = split() + , actual = [] + , ended = false + , x = spec(cs).through() + + var a = new Stream () + + a.write = function (l) { + actual.push(l.trim()) + } + a.end = function () { + + ended = true + expected.forEach(function (v,k) { + //String.split will append an empty string '' + //if the string ends in a split pattern. + //es.split doesn't which was breaking this test. + //clearly, appending the empty string is correct. + //tests are passing though. which is the current job. + if(v) + it(actual[k]).like(v) + }) + //give the stream time to close + process.nextTick(function () { + test.done() + x.validate() + }) + } + a.writable = true + + fs.createReadStream(readme, {flags: 'r'}).pipe(cs) + cs.pipe(a) + +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 new file mode 100644 index 0000000..6366c04 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 @@ -0,0 +1,15 @@ +Apache License, Version 2.0 + +Copyright (c) 2011 Dominic Tarr + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT new file mode 100644 index 0000000..6eafbd7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js new file mode 100644 index 0000000..7072b37 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js @@ -0,0 +1,100 @@ +var Stream = require('stream') + +// through +// +// a stream that does nothing but re-emit the input. +// useful for aggregating a series of changing but not ending streams into one stream) + + + +exports = module.exports = through +through.through = through + +//create a readable writable stream. + +function through (write, end) { + write = write || function (data) { this.emit('data', data) } + end = end || function () { this.emit('end') } + + var ended = false, destroyed = false + var stream = new Stream(), buffer = [] + stream.buffer = buffer + stream.readable = stream.writable = true + stream.paused = false + stream.write = function (data) { + write.call(this, data) + return !stream.paused + } + + function drain() { + while(buffer.length && !stream.paused) { + var data = buffer.shift() + if(null === data) + return stream.emit('end') + else + stream.emit('data', data) + } + } + + stream.queue = function (data) { + buffer.push(data) + drain() + } + + //this will be registered as the first 'end' listener + //must call destroy next tick, to make sure we're after any + //stream piped from here. + //this is only a problem if end is not emitted synchronously. + //a nicer way to do this is to make sure this is the last listener for 'end' + + stream.on('end', function () { + stream.readable = false + if(!stream.writable) + process.nextTick(function () { + stream.destroy() + }) + }) + + function _end () { + stream.writable = false + end.call(stream) + if(!stream.readable) + stream.destroy() + } + + stream.end = function (data) { + if(ended) return + //this breaks, because pipe doesn't check writable before calling end. + //throw new Error('cannot call end twice') + ended = true + if(arguments.length) stream.write(data) + if(!buffer.length) _end() + } + + stream.destroy = function () { + if(destroyed) return + destroyed = true + ended = true + buffer.length = 0 + stream.writable = stream.readable = false + stream.emit('close') + } + + stream.pause = function () { + if(stream.paused) return + stream.paused = true + stream.emit('pause') + } + stream.resume = function () { + if(stream.paused) { + stream.paused = false + } + drain() + //may have become paused again, + //as drain emits 'data'. + if(!stream.paused) + stream.emit('drain') + } + return stream +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json new file mode 100644 index 0000000..168247e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json @@ -0,0 +1,34 @@ +{ + "name": "through", + "version": "1.1.0", + "description": "simplified stream contruction", + "main": "index.js", + "scripts": { + "test": "asynct test/*.js" + }, + "devDependencies": { + "stream-spec": "0", + "assertions": "2", + "asynct": "1" + }, + "keywords": [ + "stream", + "streams", + "user-streams", + "pipe" + ], + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "dominictarr.com" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/dominictarr/through.git" + }, + "homepage": "http://github.com/dominictarr/through", + "readme": "#through\n\n[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)\n\nEasy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic.\nUse `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream).\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\nor, with buffering on pause, use `this.queue(data)`,\ndata *cannot* be `null`. `this.queue(null)` will emit 'end'\nwhen it gets to the `null` element.\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.queue(data)\n //this.pause() \n },\n function end () { //optional\n this.queue(null)\n })\n\n```\n\n\n## License\n\nMIT / Apache2\n", + "_id": "through@1.1.0", + "_from": "through@~1.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown new file mode 100644 index 0000000..1b687e9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown @@ -0,0 +1,44 @@ +#through + +[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) + +Easy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic. +Use `this.pause()` and `this.resume()` to manage flow. +Check `this.paused` to see current flow state. (write always returns `!this.paused`) + +this function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream). + +``` js +var through = require('through') + +through(function write(data) { + this.emit('data', data) + //this.pause() + }, + function end () { //optional + this.emit('end') + }) + +``` + +or, with buffering on pause, use `this.queue(data)`, +data *cannot* be `null`. `this.queue(null)` will emit 'end' +when it gets to the `null` element. + +``` js +var through = require('through') + +through(function write(data) { + this.queue(data) + //this.pause() + }, + function end () { //optional + this.queue(null) + }) + +``` + + +## License + +MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js new file mode 100644 index 0000000..1ce4b0d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js @@ -0,0 +1,37 @@ +var through = require('..') + +// must emit end before close. + +exports['buffering'] = function (t) { + var ts = through(function (data) { + this.queue(data) + }, function () { + this.queue(null) + }) + + var ended = false, actual = [] + + ts.on('data', actual.push.bind(actual)) + ts.on('end', function () { + ended = true + }) + + ts.write(1) + ts.write(2) + ts.write(3) + t.deepEqual(actual, [1, 2, 3]) + ts.pause() + ts.write(4) + ts.write(5) + ts.write(6) + t.deepEqual(actual, [1, 2, 3]) + ts.resume() + t.deepEqual(actual, [1, 2, 3, 4, 5, 6]) + ts.pause() + ts.end() + t.ok(!ended) + ts.resume() + t.ok(ended) + t.end() + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js new file mode 100644 index 0000000..280da0a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js @@ -0,0 +1,27 @@ +var through = require('..') + +// must emit end before close. + +exports['end before close'] = function (t) { + var ts = through() + var ended = false, closed = false + + ts.on('end', function () { + t.ok(!closed) + ended = true + }) + ts.on('close', function () { + t.ok(ended) + closed = true + }) + + ts.write(1) + ts.write(2) + ts.write(3) + ts.end() + t.ok(ended) + t.ok(closed) + + t.end() + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js new file mode 100644 index 0000000..25a6ea7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js @@ -0,0 +1,113 @@ + +var spec = require('stream-spec') +var through = require('..') +var a = require('assertions') + +/* + I'm using these two functions, and not streams and pipe + so there is less to break. if this test fails it must be + the implementation of _through_ +*/ + +function write(array, stream) { + array = array.slice() + function next() { + while(array.length) + if(stream.write(array.shift()) === false) + return stream.once('drain', next) + + stream.end() + } + + next() +} + +function read(stream, callback) { + var actual = [] + stream.on('data', function (data) { + actual.push(data) + }) + stream.once('end', function () { + callback(null, actual) + }) + stream.once('error', function (err) { + callback(err) + }) +} + +exports['simple defaults'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = through() + spec(t) + .through() + .pausable() + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + + write(expected, t) +} + +exports['simple functions'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = through(function (data) { + this.emit('data', data*2) + }) + spec(t) + .through() + .pausable() + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected.map(function (data) { + return data*2 + })) + test.done() + }) + + write(expected, t) +} +exports['pauses'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l) //Math.random()) + + var t = through() + spec(t) + .through() + .pausable() + .validateOnExit() + + t.on('data', function () { + if(Math.random() > 0.1) return + t.pause() + process.nextTick(function () { + t.resume() + }) + }) + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + + write(expected, t) +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json new file mode 100644 index 0000000..15f8ea8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json @@ -0,0 +1,40 @@ +{ + "name": "event-stream", + "version": "3.0.7", + "description": "construct pipes of streams of events", + "homepage": "http://github.com/dominictarr/event-stream", + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/event-stream.git" + }, + "dependencies": { + "optimist": "0.2", + "through": "1.1.0", + "duplexer": "~0.0.2", + "from": "~0", + "map-stream": "0.0.1", + "pause-stream": "0.0.4", + "split": "0.0.0" + }, + "devDependencies": { + "asynct": "*", + "it-is": "1", + "ubelt": "~2.9", + "stream-spec": "~0.2" + }, + "scripts": { + "test": "asynct test/" + }, + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "http://bit.ly/dominictarr" + }, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "readme": "# EventStream\n\n\n\n[Streams](http://nodejs.org/api/streams.html \"Stream\") are nodes best and most misunderstood idea, and \n_EventStream_ is a toolkit to make creating and working with streams easy. \n\nNormally, streams are only used of IO, \nbut in event stream we send all kinds of objects down the pipe. \nIf your application's input and output are streams, \nshouldn't the throughput be a stream too? \n\nThe *EventStream* functions resemble the array functions, \nbecause Streams are like Arrays, but laid out in time, rather than in memory. \n\nAll the `event-stream` functions return instances of `Stream`.\n\nStream API docs: [nodejs.org/api/streams](http://nodejs.org/api/streams.html \"Stream\")\n\nNOTE: I shall use the term \"through stream\" to refer to a stream that is writable and readable. \n\n###[simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js):\n\n``` js\n\n//pretty.js\n\nif(!module.parent) {\n var es = require('event-stream')\n es.pipeline( //connect streams together with `pipe`\n process.openStdin(), //open stdin\n es.split(), //split stream to break on newlines\n es.map(function (data, callback) {//turn this async function into a stream\n callback(null\n , inspect(JSON.parse(data))) //render it nicely\n }),\n process.stdout // pipe it to stdout !\n )\n }\n```\nrun it ...\n\n``` bash \ncurl -sS registry.npmjs.org/event-stream | node pretty.js\n```\n \n[node Stream documentation](http://nodejs.org/api/streams.html)\n\n## through (write?, end?)\n\nReemits data synchronously. Easy way to create syncronous through streams.\nPass in an optional `write` and `end` methods. They will be called in the \ncontext of the stream. Use `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in `event-stream`.\n\n``` js\n\nes.through(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\n##map (asyncFunction)\n\nCreate a through stream from an asyncronous function. \n\n``` js\nvar es = require('event-stream')\n\nes.map(function (data, callback) {\n //transform data\n // ...\n callback(null, data)\n})\n\n```\n\nEach map MUST call the callback. It may callback with data, with an error or with no arguments, \n\n * `callback()` drop this data. \n this makes the map work like `filter`, \n note:`callback(null,null)` is not the same, and will emit `null`\n\n * `callback(null, newData)` turn data into newData\n \n * `callback(error)` emit an error for this item.\n\n>Note: if a callback is not called, `map` will think that it is still being processed, \n>every call must be answered or the stream will not know when to end. \n>\n>Also, if the callback is called more than once, every call but the first will be ignored.\n\n## mapSync (syncFunction)\n\nSame as `map`, but the callback is called synchronously. Based on `es.through`\n\n## split (matcher)\n\nBreak up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` \n\nExample, read every line in a file ...\n\n``` js\n es.pipeline(\n fs.createReadStream(file, {flags: 'r'}),\n es.split(),\n es.map(function (line, cb) {\n //do something with the line \n cb(null, line)\n })\n )\n\n```\n\n`split` takes the same arguments as `string.split` except it defaults to '\\n' instead of ',', and the optional `limit` paremeter is ignored.\n[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split)\n\n## join (seperator)\n\ncreate a through stream that emits `seperator` between each chunk, just like Array#join.\n\n(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`)\n\n## replace (from, to)\n\nReplace all occurences of `from` with `to`. `from` may be a `String` or a `RegExp`. \nWorks just like `string.split(from).join(to)`, but streaming.\n\n\n## parse\n\nConvienience function for parsing JSON chunks. For newline seperated JSON,\nuse with `es.split`\n\n``` js\nfs.createReadStream(filename)\n .pipe(es.split()) //defaults to lines.\n .pipe(es.parse())\n```\n\n## stringify\n\nconvert javascript objects into lines of text. The text will have whitespace escaped and have a `\\n` appended, so it will be compatible with `es.parse`\n\n``` js\nobjectStream\n .pipe(es.stringify())\n .pipe(fs.createWriteStream(filename))\n```\n\n##readable (asyncFunction) \n\ncreate a readable stream (that respects pause) from an async function. \nwhile the stream is not paused, \nthe function will be polled with `(count, callback)`, \nand `this` will be the readable stream.\n\n``` js\n\nes.readable(function (count, callback) {\n if(streamHasEnded)\n return this.emit('end')\n \n //...\n \n this.emit('data', data) //use this way to emit multiple chunks per call.\n \n callback() // you MUST always call the callback eventually.\n // the function will not be called again until you do this.\n})\n```\nyou can also pass the data and the error to the callback. \nyou may only call the callback once. \ncalling the same callback more than once will have no effect. \n\n##readArray (array)\n\nCreate a readable stream from an Array.\n\nJust emit each item as a data event, respecting `pause` and `resume`.\n\n``` js\n var es = require('event-stream')\n , reader = es.readArray([1,2,3])\n\n reader.pipe(...)\n```\n\n## writeArray (callback)\n\ncreate a writeable stream from a callback, \nall `data` events are stored in an array, which is passed to the callback when the stream ends.\n\n``` js\n var es = require('event-stream')\n , reader = es.readArray([1, 2, 3])\n , writer = es.writeArray(function (err, array){\n //array deepEqual [1, 2, 3]\n })\n\n reader.pipe(writer)\n```\n\n## pipeline (stream1,...,streamN)\n\nTurn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream\nand reads from the last stream. \n\nListening for 'error' will recieve errors from all streams inside the pipe.\n\n> `connect` is an alias for `pipeline`.\n\n``` js\n\n es.pipeline( //connect streams together with `pipe`\n process.openStdin(), //open stdin\n es.split(), //split stream to break on newlines\n es.map(function (data, callback) {//turn this async function into a stream\n callback(null\n , inspect(JSON.parse(data))) //render it nicely\n }),\n process.stdout // pipe it to stdout !\n )\n```\n\n## pause () \n\nA stream that buffers all chunks when paused.\n\n\n``` js\n var ps = es.pause()\n ps.pause() //buffer the stream, also do not allow 'end' \n ps.resume() //allow chunks through\n```\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way. \n\n(This is used by `pipeline` and `child`.)\n\n``` js\n var grep = cp.exec('grep Stream')\n\n es.duplex(grep.stdin, grep.stdout)\n```\n\n## child (child_process)\n\nCreate a through stream from a child process ...\n\n``` js\n var cp = require('child_process')\n\n es.child(cp.exec('grep Stream')) // a through stream\n\n```\n\n## wait (callback)\n\nwaits for stream to emit 'end'.\njoins chunks of a stream into a single string. \ntakes an optional callback, which will be passed the \ncomplete string when it receives the 'end' event.\n\nalso, emits a simgle 'data' event.\n\n``` js\n\nreadStream.pipe(es.join(function (err, text) {\n // have complete text here.\n}))\n\n```\n\n\n", + "_id": "event-stream@3.0.7", + "_from": "event-stream@~3.0.7" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown new file mode 100644 index 0000000..e83724a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown @@ -0,0 +1,286 @@ +# EventStream + + + +[Streams](http://nodejs.org/api/streams.html "Stream") are nodes best and most misunderstood idea, and +_EventStream_ is a toolkit to make creating and working with streams easy. + +Normally, streams are only used of IO, +but in event stream we send all kinds of objects down the pipe. +If your application's input and output are streams, +shouldn't the throughput be a stream too? + +The *EventStream* functions resemble the array functions, +because Streams are like Arrays, but laid out in time, rather than in memory. + +All the `event-stream` functions return instances of `Stream`. + +Stream API docs: [nodejs.org/api/streams](http://nodejs.org/api/streams.html "Stream") + +NOTE: I shall use the term "through stream" to refer to a stream that is writable and readable. + +###[simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js): + +``` js + +//pretty.js + +if(!module.parent) { + var es = require('event-stream') + es.pipeline( //connect streams together with `pipe` + process.openStdin(), //open stdin + es.split(), //split stream to break on newlines + es.map(function (data, callback) {//turn this async function into a stream + callback(null + , inspect(JSON.parse(data))) //render it nicely + }), + process.stdout // pipe it to stdout ! + ) + } +``` +run it ... + +``` bash +curl -sS registry.npmjs.org/event-stream | node pretty.js +``` + +[node Stream documentation](http://nodejs.org/api/streams.html) + +## through (write?, end?) + +Reemits data synchronously. Easy way to create syncronous through streams. +Pass in an optional `write` and `end` methods. They will be called in the +context of the stream. Use `this.pause()` and `this.resume()` to manage flow. +Check `this.paused` to see current flow state. (write always returns `!this.paused`) + +this function is the basis for most of the syncronous streams in `event-stream`. + +``` js + +es.through(function write(data) { + this.emit('data', data) + //this.pause() + }, + function end () { //optional + this.emit('end') + }) + +``` + +##map (asyncFunction) + +Create a through stream from an asyncronous function. + +``` js +var es = require('event-stream') + +es.map(function (data, callback) { + //transform data + // ... + callback(null, data) +}) + +``` + +Each map MUST call the callback. It may callback with data, with an error or with no arguments, + + * `callback()` drop this data. + this makes the map work like `filter`, + note:`callback(null,null)` is not the same, and will emit `null` + + * `callback(null, newData)` turn data into newData + + * `callback(error)` emit an error for this item. + +>Note: if a callback is not called, `map` will think that it is still being processed, +>every call must be answered or the stream will not know when to end. +> +>Also, if the callback is called more than once, every call but the first will be ignored. + +## mapSync (syncFunction) + +Same as `map`, but the callback is called synchronously. Based on `es.through` + +## split (matcher) + +Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` + +Example, read every line in a file ... + +``` js + es.pipeline( + fs.createReadStream(file, {flags: 'r'}), + es.split(), + es.map(function (line, cb) { + //do something with the line + cb(null, line) + }) + ) + +``` + +`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` paremeter is ignored. +[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) + +## join (seperator) + +create a through stream that emits `seperator` between each chunk, just like Array#join. + +(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`) + +## replace (from, to) + +Replace all occurences of `from` with `to`. `from` may be a `String` or a `RegExp`. +Works just like `string.split(from).join(to)`, but streaming. + + +## parse + +Convienience function for parsing JSON chunks. For newline seperated JSON, +use with `es.split` + +``` js +fs.createReadStream(filename) + .pipe(es.split()) //defaults to lines. + .pipe(es.parse()) +``` + +## stringify + +convert javascript objects into lines of text. The text will have whitespace escaped and have a `\n` appended, so it will be compatible with `es.parse` + +``` js +objectStream + .pipe(es.stringify()) + .pipe(fs.createWriteStream(filename)) +``` + +##readable (asyncFunction) + +create a readable stream (that respects pause) from an async function. +while the stream is not paused, +the function will be polled with `(count, callback)`, +and `this` will be the readable stream. + +``` js + +es.readable(function (count, callback) { + if(streamHasEnded) + return this.emit('end') + + //... + + this.emit('data', data) //use this way to emit multiple chunks per call. + + callback() // you MUST always call the callback eventually. + // the function will not be called again until you do this. +}) +``` +you can also pass the data and the error to the callback. +you may only call the callback once. +calling the same callback more than once will have no effect. + +##readArray (array) + +Create a readable stream from an Array. + +Just emit each item as a data event, respecting `pause` and `resume`. + +``` js + var es = require('event-stream') + , reader = es.readArray([1,2,3]) + + reader.pipe(...) +``` + +## writeArray (callback) + +create a writeable stream from a callback, +all `data` events are stored in an array, which is passed to the callback when the stream ends. + +``` js + var es = require('event-stream') + , reader = es.readArray([1, 2, 3]) + , writer = es.writeArray(function (err, array){ + //array deepEqual [1, 2, 3] + }) + + reader.pipe(writer) +``` + +## pipeline (stream1,...,streamN) + +Turn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream +and reads from the last stream. + +Listening for 'error' will recieve errors from all streams inside the pipe. + +> `connect` is an alias for `pipeline`. + +``` js + + es.pipeline( //connect streams together with `pipe` + process.openStdin(), //open stdin + es.split(), //split stream to break on newlines + es.map(function (data, callback) {//turn this async function into a stream + callback(null + , inspect(JSON.parse(data))) //render it nicely + }), + process.stdout // pipe it to stdout ! + ) +``` + +## pause () + +A stream that buffers all chunks when paused. + + +``` js + var ps = es.pause() + ps.pause() //buffer the stream, also do not allow 'end' + ps.resume() //allow chunks through +``` + +## duplex (writeStream, readStream) + +Takes a writable stream and a readable stream and makes them appear as a readable writable stream. + +It is assumed that the two streams are connected to each other in some way. + +(This is used by `pipeline` and `child`.) + +``` js + var grep = cp.exec('grep Stream') + + es.duplex(grep.stdin, grep.stdout) +``` + +## child (child_process) + +Create a through stream from a child process ... + +``` js + var cp = require('child_process') + + es.child(cp.exec('grep Stream')) // a through stream + +``` + +## wait (callback) + +waits for stream to emit 'end'. +joins chunks of a stream into a single string. +takes an optional callback, which will be passed the +complete string when it receives the 'end' event. + +also, emits a simgle 'data' event. + +``` js + +readStream.pipe(es.join(function (err, text) { + // have complete text here. +})) + +``` + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js new file mode 100644 index 0000000..0ba0020 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js @@ -0,0 +1,82 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +function makeExamplePipe() { + + return es.connect( + es.map(function (data, callback) { + callback(null, data * 2) + }), + es.map(function (data, callback) { + d.delay(callback)(null, data) + }), + es.map(function (data, callback) { + callback(null, data + 2) + })) +} + +exports['simple pipe'] = function (test) { + + var pipe = makeExamplePipe() + + pipe.on('data', function (data) { + it(data).equal(18) + test.done() + }) + + pipe.write(8) + +} + +exports['read array then map'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + , first = es.readArray(readThis) + , read = [] + , pipe = + es.connect( + first, + es.map(function (data, callback) { + callback(null, {data: data}) + }), + es.map(function (data, callback) { + callback(null, {data: data}) + }), + es.writeArray(function (err, array) { + it(array).deepEqual(d.map(readThis, function (data) { + return {data: {data: data}} + })) + test.done() + }) + ) +} + +exports ['connect returns a stream'] = function (test) { + + var rw = + es.connect( + es.map(function (data, callback) { + callback(null, data * 2) + }), + es.map(function (data, callback) { + callback(null, data * 5) + }) + ) + + it(rw).has({readable: true, writable: true}) + + var array = [190, 24, 6, 7, 40, 57, 4, 6] + , _array = [] + , c = + es.connect( + es.readArray(array), + rw, + es.log('after rw:'), + es.writeArray(function (err, _array) { + it(_array).deepEqual(array.map(function (e) { return e * 10 })) + test.done() + }) + ) + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js new file mode 100644 index 0000000..17fae5b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js @@ -0,0 +1,20 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +exports.merge = function (t) { + var odd = d.map(1, 3, 100, d.id) //array of multiples of 3 < 100 + var even = d.map(2, 4, 100, d.id) //array of multiples of 3 < 100 + + var r1 = es.readArray(even) + var r2 = es.readArray(odd) + + var writer = es.writeArray(function (err, array){ + if(err) throw err //unpossible + it(array.sort()).deepEqual(even.concat(odd).sort()) + t.done() + }) + + es.merge(r1, r2).pipe(writer) + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js new file mode 100644 index 0000000..59d896f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js @@ -0,0 +1,38 @@ + +var es = require('../') + , it = require('it-is') + , d = require('ubelt') + +exports ['gate buffers when shut'] = function (test) { + + var hundy = d.map(1,100, d.id) + , gate = es.pause() + , ten = 10 + es.connect( + es.readArray(hundy), + es.log('after readArray'), + gate, + //es.log('after gate'), + es.map(function (num, next) { + //stick a map in here to check that gate never emits when open + it(gate.paused).equal(false) + console.log('data', num) + if(!--ten) { + console.log('PAUSE') + gate.pause()//.resume() + d.delay(gate.resume.bind(gate), 10)() + ten = 10 + } + + next(null, num) + }), + es.writeArray(function (err, array) { //just realized that I should remove the error param. errors will be emitted + console.log('eonuhoenuoecbulc') + it(array).deepEqual(hundy) + test.done() + }) + ) + + gate.resume() + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js new file mode 100644 index 0000000..c2af9d8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js @@ -0,0 +1,51 @@ +var es = require('..') + +exports['do not duplicate errors'] = function (test) { + + var errors = 0; + var pipe = es.pipeline( + es.through(function(data) { + return this.emit('data', data); + }), + es.through(function(data) { + return this.emit('error', new Error(data)); + }) + ) + + pipe.on('error', function(err) { + errors++ + console.log('error count', errors) + process.nextTick(function () { + return test.done(); + }) + }) + + return pipe.write('meh'); + +} + +exports['3 pipe do not duplicate errors'] = function (test) { + + var errors = 0; + var pipe = es.pipeline( + es.through(function(data) { + return this.emit('data', data); + }), + es.through(function(data) { + return this.emit('error', new Error(data)); + }), + es.through() + ) + + pipe.on('error', function(err) { + errors++ + console.log('error count', errors) + process.nextTick(function () { + return test.done(); + }) + }) + + return pipe.write('meh'); + +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js new file mode 100644 index 0000000..76585ee --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js @@ -0,0 +1,88 @@ + +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +function readStream(stream, pauseAt, done) { + if(!done) done = pauseAt, pauseAt = -1 + var array = [] + stream.on('data', function (data) { + array.push(data) + if(!--pauseAt ) + stream.pause(), done(null, array) + }) + stream.on('error', done) + stream.on('end', function (data) { + done(null, array) + }) + +} + +exports ['read an array'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + + var reader = es.readArray(readThis) + + var writer = es.writeArray(function (err, array){ + if(err) throw err //unpossible + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + +exports ['read an array and pause it.'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + + var reader = es.readArray(readThis) + + readStream(reader, 10, function (err, data) { + if(err) throw err + it(data).deepEqual([3, 6, 9, 12, 15, 18, 21, 24, 27, 30]) + readStream(reader, 10, function (err, data) { + it(data).deepEqual([33, 36, 39, 42, 45, 48, 51, 54, 57, 60]) + test.done() + }) + reader.resume() + }) + +} + +exports ['reader is readable, but not writeable'] = function (test) { + var reader = es.readArray([1]) + it(reader).has({ + readable: true, + writable: false + }) + + test.done() +} + + +exports ['read one item per tick'] = function (test) { + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + var drains = 0 + var reader = es.readArray(readThis) + var tickMapper = es.map(function (data,callback) { + process.nextTick(function () { + callback(null, data) + }) + //since tickMapper is returning false + //pipe should pause the writer until a drain occurs + return false + }) + reader.pipe(tickMapper) + readStream(tickMapper, function (err, array) { + it(array).deepEqual(readThis) + it(array.length).deepEqual(readThis.length) + it(drains).equal(readThis.length) + test.done() + }) + tickMapper.on('drain', function () { + drains ++ + }) + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js new file mode 100644 index 0000000..77d0039 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js @@ -0,0 +1,167 @@ + +var es = require('../') + , it = require('it-is').style('colour') + , u = require('ubelt') + +exports ['read an array'] = function (test) { + + var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 + + var reader = + es.readable(function (i, callback) { + if(i >= readThis.length) + return this.emit('end') + callback(null, readThis[i]) + }) + + var writer = es.writeArray(function (err, array){ + if(err) throw err + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + +exports ['read an array - async'] = function (test) { + + var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 + + var reader = + es.readable(function (i, callback) { + if(i >= readThis.length) + return this.emit('end') + u.delay(callback)(null, readThis[i]) + }) + + var writer = es.writeArray(function (err, array){ + if(err) throw err + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + + +exports ['emit data then call next() also works'] = function (test) { + + var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 + + var reader = + es.readable(function (i, next) { + if(i >= readThis.length) + return this.emit('end') + this.emit('data', readThis[i]) + next() + }) + + var writer = es.writeArray(function (err, array){ + if(err) throw err + it(array).deepEqual(readThis) + test.done() + }) + + reader.pipe(writer) +} + + +exports ['callback emits error, then stops'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , called = 0 + + var reader = + es.readable(function (i, callback) { + if(called++) + return + callback(err) + }) + + reader.on('error', function (_err){ + it(_err).deepEqual(err) + u.delay(function() { + it(called).equal(1) + test.done() + }, 50)() + }) +} + +exports['readable does not call read concurrently'] = function (test) { + + var current = 0 + var source = es.readable(function(count, cb){ + current ++ + if(count > 100) + return this.emit('end') + u.delay(function(){ + current -- + it(current).equal(0) + cb(null, {ok: true, n: count}); + })(); + }); + + var destination = es.map(function(data, cb){ + //console.info(data); + cb(); + }); + + var all = es.connect(source, destination); + + destination.on('end', test.done) +} + + +// +// emitting multiple errors is not supported by stream. +// +// I do not think that this is a good idea, at least, there should be an option to pipe to +// continue on error. it makes alot ef sense, if you are using Stream like I am, to be able to emit multiple errors. +// an error might not necessarily mean the end of the stream. it depends on the error, at least. +// +// I will start a thread on the mailing list. I'd rather that than use a custom `pipe` implementation. +// +// basically, I want to be able use pipe to transform objects, and if one object is invalid, +// the next might still be good, so I should get to choose if it's gonna stop. +// re-enstate this test when this issue progresses. +// +// hmm. I could add this to es.connect by deregistering the error listener, +// but I would rather it be an option in core. + +/* +exports ['emit multiple errors, with 2nd parameter (continueOnError)'] = function (test) { + + var readThis = d.map(1, 100, d.id) + , errors = 0 + var reader = + es.readable(function (i, callback) { + console.log(i, readThis.length) + if(i >= readThis.length) + return this.emit('end') + if(!(readThis[i] % 7)) + return callback(readThis[i]) + callback(null, readThis[i]) + }, true) + + var writer = es.writeArray(function (err, array) { + if(err) throw err + it(array).every(function (u){ + it(u % 7).notEqual(0) + }).property('length', 80) + it(errors).equal(14) + test.done() + }) + + reader.on('error', function (u) { + errors ++ + console.log(u) + if('number' !== typeof u) + throw u + + it(u % 7).equal(0) + + }) + + reader.pipe(writer) +} +*/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js new file mode 100644 index 0000000..7fabf6e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js @@ -0,0 +1,50 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + , spec = require('stream-spec') + +var next = process.nextTick + +var fizzbuzz = '12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB' + , fizz7buzz = '12F4BFseven8FB11F1314FB161sevenF19BF2223FB26F2829FB3132F34BF3seven38FB41F4344FB464sevenF49BF5253FB56F5859FB6162F64BF6seven68FBseven1Fseven3seven4FBseven6sevensevenFseven9BF8283FB86F8889FB9192F94BF9seven98FB' + +exports ['fizz buzz'] = function (test) { + + var readThis = d.map(1, 100, function (i) { + return ( + ! (i % 3 || i % 5) ? "FB" : + !(i % 3) ? "F" : + !(i % 5) ? "B" : + ''+i + ) + }) //array of multiples of 3 < 100 + + var reader = es.readArray(readThis) + var join = es.wait(function (err, string){ + it(string).equal(fizzbuzz) + test.done() + }) + reader.pipe(join) + +} + + +exports ['fizz buzz replace'] = function (test) { + var split = es.split(/(1)/) + var replace = es.replace('7', 'seven') + var x = spec(replace).through() + split + .pipe(replace) + .pipe(es.join(function (err, string) { + it(string).equal(fizz7buzz) + })) + + replace.on('close', function () { + x.validate() + test.done() + }) + + split.write(fizzbuzz) + split.end() + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js new file mode 100644 index 0000000..4786faa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js @@ -0,0 +1,342 @@ +'use strict'; + +var es = require('../') + , it = require('it-is') + , u = require('ubelt') + , spec = require('stream-spec') + , Stream = require('stream') + , from = require('from') + , through = require('through') + +//REFACTOR THIS TEST TO USE es.readArray and es.writeArray + +function writeArray(array, stream) { + + array.forEach( function (j) { + stream.write(j) + }) + stream.end() + +} + +function readStream(stream, done) { + + var array = [] + stream.on('data', function (data) { + array.push(data) + }) + stream.on('error', done) + stream.on('end', function (data) { + done(null, array) + }) + +} + +//call sink on each write, +//and complete when finished. + +function pauseStream (prob, delay) { + var pauseIf = ( + 'number' == typeof prob + ? function () { + return Math.random() < prob + } + : 'function' == typeof prob + ? prob + : 0.1 + ) + var delayer = ( + !delay + ? process.nextTick + : 'number' == typeof delay + ? function (next) { setTimeout(next, delay) } + : delay + ) + + return es.through(function (data) { + if(!this.paused && pauseIf()) { + console.log('PAUSE STREAM PAUSING') + this.pause() + var self = this + delayer(function () { + console.log('PAUSE STREAM RESUMING') + self.resume() + }) + } + console.log("emit ('data', " + data + ')') + this.emit('data', data) + }) +} + +exports ['simple map'] = function (test) { + + var input = u.map(1, 1000, function () { + return Math.random() + }) + var expected = input.map(function (v) { + return v * 2 + }) + + var pause = pauseStream(0.1) + var fs = from(input) + var ts = es.writeArray(function (err, ar) { + it(ar).deepEqual(expected) + test.done() + }) + var map = es.through(function (data) { + this.emit('data', data * 2) + }) + + spec(map).through().validateOnExit() + spec(pause).through().validateOnExit() + + fs.pipe(map).pipe(pause).pipe(ts) +} + +exports ['simple map applied to a stream'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + + var doubler = es.map(function (data, cb) { + cb(null, data * 2) + }) + + spec(doubler).through().validateOnExit() + + //a map is only a middle man, so it is both readable and writable + + it(doubler).has({ + readable: true, + writable: true, + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 2 + })) +// process.nextTick(x.validate) + test.done() + }) + + writeArray(input, doubler) + +} + +exports['pipe two maps together'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + //create event stream from + function dd (data, cb) { + cb(null, data * 2) + } + var doubler1 = es.map(dd), doubler2 = es.map(dd) + + doubler1.pipe(doubler2) + + spec(doubler1).through().validateOnExit() + spec(doubler2).through().validateOnExit() + + readStream(doubler2, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 4 + })) + test.done() + }) + + writeArray(input, doubler1) + +} + +//next: +// +// test pause, resume and drian. +// + +// then make a pipe joiner: +// +// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) +// +// will return a single stream that write goes to the first + +exports ['map will not call end until the callback'] = function (test) { + + var ticker = es.map(function (data, cb) { + process.nextTick(function () { + cb(null, data * 2) + }) + }) + + spec(ticker).through().validateOnExit() + + ticker.write('x') + ticker.end() + + ticker.on('end', function () { + test.done() + }) +} + + +exports ['emit error thrown'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + es.map(function () { + throw err + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + +// onExit(spec(mapper).basic().validate) +//need spec that says stream may error. + + mapper.write('hello') + +} + +exports ['emit error calledback'] = function (test) { + + var err = new Error('INTENSIONAL ERROR') + , mapper = + es.map(function (data, callback) { + callback(err) + }) + + mapper.on('error', function (_err) { + it(_err).equal(err) + test.done() + }) + + mapper.write('hello') + +} + +exports ['do not emit drain if not paused'] = function (test) { + + var map = es.map(function (data, callback) { + u.delay(callback)(null, 1) + return true + }) + + spec(map).through().pausable().validateOnExit() + + map.on('drain', function () { + it(false).ok('should not emit drain unless the stream is paused') + }) + + it(map.write('hello')).equal(true) + it(map.write('hello')).equal(true) + it(map.write('hello')).equal(true) + setTimeout(function () {map.end()},10) + map.on('end', test.done) +} + +exports ['emits drain if paused, when all '] = function (test) { + var active = 0 + var drained = false + var map = es.map(function (data, callback) { + active ++ + u.delay(function () { + active -- + callback(null, 1) + })() + console.log('WRITE', false) + return false + }) + + spec(map).through().validateOnExit() + + map.on('drain', function () { + drained = true + it(active).equal(0, 'should emit drain when all maps are done') + }) + + it(map.write('hello')).equal(false) + it(map.write('hello')).equal(false) + it(map.write('hello')).equal(false) + + process.nextTick(function () {map.end()},10) + + map.on('end', function () { + console.log('end') + it(drained).ok('shoud have emitted drain before end') + test.done() + }) + +} + +exports ['map applied to a stream with filtering'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = es.map(function (data, callback) { + if (data % 2) + callback(null, data * 2) + else + callback() + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.filter(function (j) { + return j % 2 + }).map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + +exports ['simple mapSync applied to a stream'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = es.mapSync(function (data) { + return data * 2 + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + +exports ['mapSync applied to a stream with filtering'] = function (test) { + + var input = [1,2,3,7,5,3,1,9,0,2,4,6] + + var doubler = es.mapSync(function (data) { + if (data % 2) + return data * 2 + }) + + readStream(doubler, function (err, output) { + it(output).deepEqual(input.filter(function (j) { + return j % 2 + }).map(function (j) { + return j * 2 + })) + test.done() + }) + + spec(doubler).through().validateOnExit() + + writeArray(input, doubler) + +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js new file mode 100644 index 0000000..516dbf4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js @@ -0,0 +1,85 @@ +/* + assert that data is called many times + assert that end is called eventually + + assert that when stream enters pause state, + on drain is emitted eventually. +*/ + +var es = require('..') +var it = require('it-is').style('colour') +var spec = require('stream-spec') + +exports['simple stream'] = function (test) { + + var stream = es.through() + var x = spec(stream).basic().pausable() + + stream.write(1) + stream.write(1) + stream.pause() + stream.write(1) + stream.resume() + stream.write(1) + stream.end(2) //this will call write() + + process.nextTick(function (){ + x.validate() + test.done() + }) +} + +exports['throw on write when !writable'] = function (test) { + + var stream = es.through() + var x = spec(stream).basic().pausable() + + stream.write(1) + stream.write(1) + stream.end(2) //this will call write() + stream.write(1) //this will be throwing..., but the spec will catch it. + + process.nextTick(function () { + x.validate() + test.done() + }) + +} + +exports['end fast'] = function (test) { + + var stream = es.through() + var x = spec(stream).basic().pausable() + + stream.end() //this will call write() + + process.nextTick(function () { + x.validate() + test.done() + }) + +} + + +/* + okay, that was easy enough, whats next? + + say, after you call paused(), write should return false + until resume is called. + + simple way to implement this: + write must return !paused + after pause() paused = true + after resume() paused = false + + on resume, if !paused drain is emitted again. + after drain, !paused + + there are lots of subtle ordering bugs in streams. + + example, set !paused before emitting drain. + + the stream api is stateful. +*/ + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js new file mode 100644 index 0000000..a0ce4b2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js @@ -0,0 +1,46 @@ +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + , join = require('path').join + , fs = require('fs') + , Stream = require('stream').Stream + , spec = require('stream-spec') + +exports ['es.split() works like String#split'] = function (test) { + var readme = join(__filename) + , expected = fs.readFileSync(readme, 'utf-8').split('\n') + , cs = es.split() + , actual = [] + , ended = false + , x = spec(cs).through() + + var a = new Stream () + + a.write = function (l) { + actual.push(l.trim()) + } + a.end = function () { + + ended = true + expected.forEach(function (v,k) { + //String.split will append an empty string '' + //if the string ends in a split pattern. + //es.split doesn't which was breaking this test. + //clearly, appending the empty string is correct. + //tests are passing though. which is the current job. + if(v) + it(actual[k]).like(v) + }) + //give the stream time to close + process.nextTick(function () { + test.done() + x.validate() + }) + } + a.writable = true + + fs.createReadStream(readme, {flags: 'r'}).pipe(cs) + cs.pipe(a) + +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js new file mode 100644 index 0000000..a77887b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js @@ -0,0 +1,14 @@ + + + +var es = require('../') + +exports['handle buffer'] = function (t) { + + + es.stringify().on('data', function (d) { + t.equal(d.trim(), JSON.stringify('HELLO')) + t.end() + }).write(new Buffer('HELLO')) + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js new file mode 100644 index 0000000..f09fea2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js @@ -0,0 +1,30 @@ + +var es = require('../') + , it = require('it-is').style('colour') + , d = require('ubelt') + +exports ['write an array'] = function (test) { + + var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 + + var writer = es.writeArray(function (err, array){ + if(err) throw err //unpossible + it(array).deepEqual(readThis) + test.done() + }) + + d.each(readThis, writer.write.bind(writer)) + writer.end() + +} + + +exports ['writer is writable, but not readable'] = function (test) { + var reader = es.writeArray(function () {}) + it(reader).has({ + readable: false, + writable: true + }) + + test.done() +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore new file mode 100644 index 0000000..ee88966 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore @@ -0,0 +1 @@ +assets/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml new file mode 100644 index 0000000..84fd7ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md new file mode 100644 index 0000000..6cd71ba --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md @@ -0,0 +1,98 @@ +# tap-stream [![Build Status](https://secure.travis-ci.org/thlorenz/tap-stream.png)](http://travis-ci.org/thlorenz/tap-stream) + +Taps a nodejs stream and logs the data that's coming through. + + npm install tap-stream + +Given an [object stream](#object-stream) we can print out objects passing through and control the detail via the +depth parameter: + +```javascript +objectStream().pipe(tap(0)); +``` + +![depth0](https://github.com/thlorenz/tap-stream/raw/master/assets/depth0.png) + +```javascript +objectStream().pipe(tap(1)); +``` + +![depth1](https://github.com/thlorenz/tap-stream/raw/master/assets/depth1.png) + +``` +objectStream().pipe(tap(2)); +``` + +![depth2](https://github.com/thlorenz/tap-stream/raw/master/assets/depth2.png) + +For even more control a custom log function may be supplied: + +```javascript +objectStream() + .pipe(tap(function customLog (data) { + var nest = data.nest; + console.log ('Bird: %s, id: %s, age: %s, layed egg: %s', nest.name, data.id, nest.age, nest.egg !== undefined); + }) + ); +``` + +```text +Bird: yellow rumped warbler, id: 0, age: 1, layed egg: true +Bird: yellow rumped warbler, id: 1, age: 1, layed egg: true +``` + +## API + +### tap( [ depth | log ] ) + +Intercepts the stream and logs data that is passing through. + +- optional parameter is either a `Number` or a `Function` +- if no parameter is given, `depth` defaults to `0` and `log` to `console.log(util.inspect(..))` + +- `depth` controls the `depth` with which + [util.inspect](http://nodejs.org/api/util.html#util_util_inspect_object_showhidden_depth_colors) is called +- `log` replaces the default logging function with a custom one + +**Example:** + +```javascript +var tap = require('tap-stream'); + +myStream + .pipe(tap(1)) // log intermediate results + .pipe(..) // continute manipulating the data +``` + +## Object stream + +Included in order to give context for above examples. + +```javascript +function objectStream () { + var s = new Stream() + , objects = 0; + + var iv = setInterval( + function () { + s.emit('data', { + id: objects + , created: new Date() + , nest: { + name: 'yellow rumped warbler' + , age: 1 + , egg: { name: 'unknown' , age: 0 } + } + } + , 4 + ); + + if (++objects === 2) { + s.emit('end'); + clearInterval(iv); + } + } + , 200); + return s; +} +``` diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js new file mode 100644 index 0000000..97aa578 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js @@ -0,0 +1,38 @@ +var Stream = require('stream') + , tap = require('..'); + +function objectStream () { + var s = new Stream() + , objects = 0; + + var iv = setInterval( + function () { + s.emit('data', { + id: objects + , created: new Date() + , nest: { + name: 'yellow rumped warbler' + , age: 1 + , egg: { name: 'unknown' , age: 0 } + } + } + ); + + if (++objects === 2) { + s.emit('end'); + clearInterval(iv); + } + } + , 200); + return s; +} + +objectStream().pipe(tap(2)); + +objectStream() + .pipe(tap(function customLog (data) { + var nest = data.nest; + console.log ('Bird: %s, id: %s, age: %s, layed egg: %s', nest.name, data.id, nest.age, nest.egg !== undefined); + }) + ); + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js new file mode 100644 index 0000000..a541dfe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js @@ -0,0 +1,56 @@ +'use strict'; + +var util = require('util') + , through = require('through') + , toString = Object.prototype.toString + , slice = Array.prototype.slice; + +function blowup () { + throw new Error('Argument to streamTap needs to be either Number for depth or a log Function'); +} + +function defaultLog (depth) { + function log (data) { + console.log(util.inspect(data, false, depth, true)); + } + + return function (data) { + if (arguments.length === 1) { + log(data); + } else { + slice.call(arguments).forEach(log); + } + }; +} + +// invoke three ways: +// tap () +// tap (depth) +// tap (log) +function tap (arg0) { + var log; + + if (!arguments.length) { + log = defaultLog(1); + } else { + + if (toString.call(arg0) === '[object Number]' ) { + log = defaultLog(arg0); + } else if (toString.call(arg0) === '[object Function]' ) { + log = arg0; + } else { + blowup(); + } + + } + + return through( + function write (data) { + log(data); + this.emit('data', data); + } + ); + +} + +module.exports = tap; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 new file mode 100644 index 0000000..6366c04 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 @@ -0,0 +1,15 @@ +Apache License, Version 2.0 + +Copyright (c) 2011 Dominic Tarr + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT new file mode 100644 index 0000000..6eafbd7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2011 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js new file mode 100644 index 0000000..7072b37 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js @@ -0,0 +1,100 @@ +var Stream = require('stream') + +// through +// +// a stream that does nothing but re-emit the input. +// useful for aggregating a series of changing but not ending streams into one stream) + + + +exports = module.exports = through +through.through = through + +//create a readable writable stream. + +function through (write, end) { + write = write || function (data) { this.emit('data', data) } + end = end || function () { this.emit('end') } + + var ended = false, destroyed = false + var stream = new Stream(), buffer = [] + stream.buffer = buffer + stream.readable = stream.writable = true + stream.paused = false + stream.write = function (data) { + write.call(this, data) + return !stream.paused + } + + function drain() { + while(buffer.length && !stream.paused) { + var data = buffer.shift() + if(null === data) + return stream.emit('end') + else + stream.emit('data', data) + } + } + + stream.queue = function (data) { + buffer.push(data) + drain() + } + + //this will be registered as the first 'end' listener + //must call destroy next tick, to make sure we're after any + //stream piped from here. + //this is only a problem if end is not emitted synchronously. + //a nicer way to do this is to make sure this is the last listener for 'end' + + stream.on('end', function () { + stream.readable = false + if(!stream.writable) + process.nextTick(function () { + stream.destroy() + }) + }) + + function _end () { + stream.writable = false + end.call(stream) + if(!stream.readable) + stream.destroy() + } + + stream.end = function (data) { + if(ended) return + //this breaks, because pipe doesn't check writable before calling end. + //throw new Error('cannot call end twice') + ended = true + if(arguments.length) stream.write(data) + if(!buffer.length) _end() + } + + stream.destroy = function () { + if(destroyed) return + destroyed = true + ended = true + buffer.length = 0 + stream.writable = stream.readable = false + stream.emit('close') + } + + stream.pause = function () { + if(stream.paused) return + stream.paused = true + stream.emit('pause') + } + stream.resume = function () { + if(stream.paused) { + stream.paused = false + } + drain() + //may have become paused again, + //as drain emits 'data'. + if(!stream.paused) + stream.emit('drain') + } + return stream +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json new file mode 100644 index 0000000..168247e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json @@ -0,0 +1,34 @@ +{ + "name": "through", + "version": "1.1.0", + "description": "simplified stream contruction", + "main": "index.js", + "scripts": { + "test": "asynct test/*.js" + }, + "devDependencies": { + "stream-spec": "0", + "assertions": "2", + "asynct": "1" + }, + "keywords": [ + "stream", + "streams", + "user-streams", + "pipe" + ], + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "dominictarr.com" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/dominictarr/through.git" + }, + "homepage": "http://github.com/dominictarr/through", + "readme": "#through\n\n[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)\n\nEasy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic.\nUse `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream).\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\nor, with buffering on pause, use `this.queue(data)`,\ndata *cannot* be `null`. `this.queue(null)` will emit 'end'\nwhen it gets to the `null` element.\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.queue(data)\n //this.pause() \n },\n function end () { //optional\n this.queue(null)\n })\n\n```\n\n\n## License\n\nMIT / Apache2\n", + "_id": "through@1.1.0", + "_from": "through@~1.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown new file mode 100644 index 0000000..1b687e9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown @@ -0,0 +1,44 @@ +#through + +[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) + +Easy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic. +Use `this.pause()` and `this.resume()` to manage flow. +Check `this.paused` to see current flow state. (write always returns `!this.paused`) + +this function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream). + +``` js +var through = require('through') + +through(function write(data) { + this.emit('data', data) + //this.pause() + }, + function end () { //optional + this.emit('end') + }) + +``` + +or, with buffering on pause, use `this.queue(data)`, +data *cannot* be `null`. `this.queue(null)` will emit 'end' +when it gets to the `null` element. + +``` js +var through = require('through') + +through(function write(data) { + this.queue(data) + //this.pause() + }, + function end () { //optional + this.queue(null) + }) + +``` + + +## License + +MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js new file mode 100644 index 0000000..1ce4b0d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js @@ -0,0 +1,37 @@ +var through = require('..') + +// must emit end before close. + +exports['buffering'] = function (t) { + var ts = through(function (data) { + this.queue(data) + }, function () { + this.queue(null) + }) + + var ended = false, actual = [] + + ts.on('data', actual.push.bind(actual)) + ts.on('end', function () { + ended = true + }) + + ts.write(1) + ts.write(2) + ts.write(3) + t.deepEqual(actual, [1, 2, 3]) + ts.pause() + ts.write(4) + ts.write(5) + ts.write(6) + t.deepEqual(actual, [1, 2, 3]) + ts.resume() + t.deepEqual(actual, [1, 2, 3, 4, 5, 6]) + ts.pause() + ts.end() + t.ok(!ended) + ts.resume() + t.ok(ended) + t.end() + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js new file mode 100644 index 0000000..280da0a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js @@ -0,0 +1,27 @@ +var through = require('..') + +// must emit end before close. + +exports['end before close'] = function (t) { + var ts = through() + var ended = false, closed = false + + ts.on('end', function () { + t.ok(!closed) + ended = true + }) + ts.on('close', function () { + t.ok(ended) + closed = true + }) + + ts.write(1) + ts.write(2) + ts.write(3) + ts.end() + t.ok(ended) + t.ok(closed) + + t.end() + +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js new file mode 100644 index 0000000..25a6ea7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js @@ -0,0 +1,113 @@ + +var spec = require('stream-spec') +var through = require('..') +var a = require('assertions') + +/* + I'm using these two functions, and not streams and pipe + so there is less to break. if this test fails it must be + the implementation of _through_ +*/ + +function write(array, stream) { + array = array.slice() + function next() { + while(array.length) + if(stream.write(array.shift()) === false) + return stream.once('drain', next) + + stream.end() + } + + next() +} + +function read(stream, callback) { + var actual = [] + stream.on('data', function (data) { + actual.push(data) + }) + stream.once('end', function () { + callback(null, actual) + }) + stream.once('error', function (err) { + callback(err) + }) +} + +exports['simple defaults'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = through() + spec(t) + .through() + .pausable() + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + + write(expected, t) +} + +exports['simple functions'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l * Math.random()) + + var t = through(function (data) { + this.emit('data', data*2) + }) + spec(t) + .through() + .pausable() + .validateOnExit() + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected.map(function (data) { + return data*2 + })) + test.done() + }) + + write(expected, t) +} +exports['pauses'] = function (test) { + + var l = 1000 + , expected = [] + + while(l--) expected.push(l) //Math.random()) + + var t = through() + spec(t) + .through() + .pausable() + .validateOnExit() + + t.on('data', function () { + if(Math.random() > 0.1) return + t.pause() + process.nextTick(function () { + t.resume() + }) + }) + + read(t, function (err, actual) { + if(err) test.error(err) //fail + a.deepEqual(actual, expected) + test.done() + }) + + write(expected, t) +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json new file mode 100644 index 0000000..8040579 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json @@ -0,0 +1,38 @@ +{ + "name": "tap-stream", + "version": "0.1.0", + "author": { + "name": "Thorsten Lorenz", + "email": "thlorenz@gmx.de", + "url": "http://thlorenz.com" + }, + "description": "Taps a nodejs stream and logs the data that's coming through.", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "tap ./test/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/thlorenz/tap-stream.git" + }, + "keywords": [ + "stream", + "streams", + "log", + "print", + "inspect" + ], + "license": "BSD", + "dependencies": { + "through": "~1.1.0" + }, + "devDependencies": { + "tap": "~0.3.1" + }, + "readme": "# tap-stream [![Build Status](https://secure.travis-ci.org/thlorenz/tap-stream.png)](http://travis-ci.org/thlorenz/tap-stream)\n\nTaps a nodejs stream and logs the data that's coming through.\n\n npm install tap-stream\n\nGiven an [object stream](#object-stream) we can print out objects passing through and control the detail via the\ndepth parameter:\n\n```javascript\nobjectStream().pipe(tap(0));\n```\n\n![depth0](https://github.com/thlorenz/tap-stream/raw/master/assets/depth0.png)\n\n```javascript\nobjectStream().pipe(tap(1));\n```\n\n![depth1](https://github.com/thlorenz/tap-stream/raw/master/assets/depth1.png)\n\n```\nobjectStream().pipe(tap(2));\n```\n\n![depth2](https://github.com/thlorenz/tap-stream/raw/master/assets/depth2.png)\n\nFor even more control a custom log function may be supplied:\n\n```javascript\nobjectStream()\n .pipe(tap(function customLog (data) {\n var nest = data.nest;\n console.log ('Bird: %s, id: %s, age: %s, layed egg: %s', nest.name, data.id, nest.age, nest.egg !== undefined);\n })\n );\n```\n\n```text\nBird: yellow rumped warbler, id: 0, age: 1, layed egg: true\nBird: yellow rumped warbler, id: 1, age: 1, layed egg: true\n```\n\n## API\n\n### tap( [ depth | log ] )\n\nIntercepts the stream and logs data that is passing through.\n\n- optional parameter is either a `Number` or a `Function`\n- if no parameter is given, `depth` defaults to `0` and `log` to `console.log(util.inspect(..))`\n\n- `depth` controls the `depth` with which\n [util.inspect](http://nodejs.org/api/util.html#util_util_inspect_object_showhidden_depth_colors) is called\n- `log` replaces the default logging function with a custom one\n\n**Example:**\n\n```javascript\nvar tap = require('tap-stream');\n\nmyStream\n .pipe(tap(1)) // log intermediate results\n .pipe(..) // continute manipulating the data\n```\n\n## Object stream\n\nIncluded in order to give context for above examples.\n\n```javascript\nfunction objectStream () {\n var s = new Stream()\n , objects = 0;\n \n var iv = setInterval(\n function () {\n s.emit('data', { \n id: objects\n , created: new Date()\n , nest: { \n name: 'yellow rumped warbler'\n , age: 1\n , egg: { name: 'unknown' , age: 0 }\n } \n }\n , 4\n );\n\n if (++objects === 2) {\n s.emit('end');\n clearInterval(iv);\n }\n }\n , 200);\n return s;\n}\n```\n", + "_id": "tap-stream@0.1.0", + "_from": "tap-stream@~0.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js new file mode 100644 index 0000000..b484fcb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js @@ -0,0 +1,104 @@ +'use strict'; +/*jshint asi: true */ + +var test = require('tap').test + , Stream = require('stream') + , tap = require('..') + , through = require('through'); + +function objectStream () { + var s = new Stream() + , objects = 0; + + var iv = setInterval( + function () { + s.emit('data', { id: objects, created: new Date() }); + + if (++objects === 2) { + s.emit('end'); + clearInterval(iv); + } + } + , 20); + return s; +} + +test('tapping object stream that emits 2 objects', function (t) { + var logged = [] + , piped = []; + + function log (data) { + logged.push(data); + } + + t.plan(4); + + objectStream() + .pipe(tap(log)) + .pipe(through( + function write (data) { + piped.push(data); + this.emit('data', data); + } + , function end (data) { + + t.equals(0, logged[0].id, 'logs first item'); + t.equals(1, logged[1].id, 'logs second item'); + + t.equals(0, piped[0].id, 'pipes first item'); + t.equals(1, piped[1].id, 'pipes second item'); + + t.end(); + + this.emit('end'); + } + )) +}) + +/* The below doesn't work since pipe only writes one argument: + * https://github.com/joyent/node/blob/master/lib/stream.js#L36 + * + * Since it uses EventEmitter whose 'emit' supports multiple args, this may change in the future - I hope so. + * Until then ... + */ +var onDataInsidePipeWritesMultipleArgs = false; + +if (! onDataInsidePipeWritesMultipleArgs) return; + +function numberStream () { + var s = new Stream(); + + setTimeout( + function () { + s.emit('data', 1, 2); + s.emit('end'); + } + , 20); + return s; +} + +test('tapping stream that emits a number and a string one time', function (t) { + var logged = [] + , piped = []; + + function log (n1, n2) { + logged.push({ n1: n1, n2: n2 }); + } + + t.plan(2); + + numberStream() + .pipe(tap(log)) + .pipe(through( + function write (n1, n2) { + piped.push({ n1: n1, n2: n2 }); + } + , function end () { + t.equals({ n1: 1, n2: 2 }, logged[0], 'logs both numbers'); + t.equals({ n1: 1, n2: 2 }, piped[0], 'pipes both numbers'); + t.end(); + + this.emit('end'); + } + )) +}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json new file mode 100644 index 0000000..2d9b341 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json @@ -0,0 +1,9 @@ +{ + "name": "readdirp-examples", + "version": "0.0.0", + "description": "Examples for readdirp.", + "dependencies": { + "tap-stream": "~0.1.0", + "event-stream": "~3.0.7" + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js new file mode 100644 index 0000000..b09fe59 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js @@ -0,0 +1,13 @@ +var readdirp = require('..') + , path = require('path') + , es = require('event-stream'); + +// print out all JavaScript files along with their size +readdirp({ root: path.join(__dirname), fileFilter: '*.js' }) + .on('warn', function (err) { console.error('non-fatal error', err); }) + .on('error', function (err) { console.error('fatal error', err); }) + .pipe(es.mapSync(function (entry) { + return { path: entry.path, size: entry.stat.size }; + })) + .pipe(es.stringify()) + .pipe(process.stdout); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js new file mode 100644 index 0000000..0f7b327 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js @@ -0,0 +1,15 @@ +var readdirp = require('..') + , path = require('path'); + +readdirp({ root: path.join(__dirname), fileFilter: '*.js' }) + .on('warn', function (err) { + console.error('something went wrong when processing an entry', err); + }) + .on('error', function (err) { + console.error('something went fatally wrong and the stream was aborted', err); + }) + .on('data', function (entry) { + console.log('%s is ready for processing', entry.path); + // process entry here + }); + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE new file mode 100644 index 0000000..05a4010 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE @@ -0,0 +1,23 @@ +Copyright 2009, 2010, 2011 Isaac Z. Schlueter. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md new file mode 100644 index 0000000..6fd07d2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md @@ -0,0 +1,218 @@ +# minimatch + +A minimal matching utility. + +[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) + + +This is the matching library used internally by npm. + +Eventually, it will replace the C binding in node-glob. + +It works by converting glob expressions into JavaScript `RegExp` +objects. + +## Usage + +```javascript +var minimatch = require("minimatch") + +minimatch("bar.foo", "*.foo") // true! +minimatch("bar.foo", "*.bar") // false! +``` + +## Features + +Supports these glob features: + +* Brace Expansion +* Extended glob matching +* "Globstar" `**` matching + +See: + +* `man sh` +* `man bash` +* `man 3 fnmatch` +* `man 5 gitignore` + +### Comparisons to other fnmatch/glob implementations + +While strict compliance with the existing standards is a worthwhile +goal, some discrepancies exist between minimatch and other +implementations, and are intentional. + +If the pattern starts with a `!` character, then it is negated. Set the +`nonegate` flag to suppress this behavior, and treat leading `!` +characters normally. This is perhaps relevant if you wish to start the +pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` +characters at the start of a pattern will negate the pattern multiple +times. + +If a pattern starts with `#`, then it is treated as a comment, and +will not match anything. Use `\#` to match a literal `#` at the +start of a line, or set the `nocomment` flag to suppress this behavior. + +The double-star character `**` is supported by default, unless the +`noglobstar` flag is set. This is supported in the manner of bsdglob +and bash 4.1, where `**` only has special significance if it is the only +thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but +`a/**b` will not. **Note that this is different from the way that `**` is +handled by ruby's `Dir` class.** + +If an escaped pattern has no matches, and the `nonull` flag is set, +then minimatch.match returns the pattern as-provided, rather than +interpreting the character escapes. For example, +`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than +`"*a?"`. This is akin to setting the `nullglob` option in bash, except +that it does not resolve escaped pattern characters. + +If brace expansion is not disabled, then it is performed before any +other interpretation of the glob pattern. Thus, a pattern like +`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded +**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are +checked for validity. Since those two are valid, matching proceeds. + + +## Minimatch Class + +Create a minimatch object by instanting the `minimatch.Minimatch` class. + +```javascript +var Minimatch = require("minimatch").Minimatch +var mm = new Minimatch(pattern, options) +``` + +### Properties + +* `pattern` The original pattern the minimatch object represents. +* `options` The options supplied to the constructor. +* `set` A 2-dimensional array of regexp or string expressions. + Each row in the + array corresponds to a brace-expanded pattern. Each item in the row + corresponds to a single path-part. For example, the pattern + `{a,b/c}/d` would expand to a set of patterns like: + + [ [ a, d ] + , [ b, c, d ] ] + + If a portion of the pattern doesn't have any "magic" in it + (that is, it's something like `"foo"` rather than `fo*o?`), then it + will be left as a string rather than converted to a regular + expression. + +* `regexp` Created by the `makeRe` method. A single regular expression + expressing the entire pattern. This is useful in cases where you wish + to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. +* `negate` True if the pattern is negated. +* `comment` True if the pattern is a comment. +* `empty` True if the pattern is `""`. + +### Methods + +* `makeRe` Generate the `regexp` member if necessary, and return it. + Will return `false` if the pattern is invalid. +* `match(fname)` Return true if the filename matches the pattern, or + false otherwise. +* `matchOne(fileArray, patternArray, partial)` Take a `/`-split + filename, and match it against a single row in the `regExpSet`. This + method is mainly for internal use, but is exposed so that it can be + used by a glob-walker that needs to avoid excessive filesystem calls. + +All other methods are internal, and will be called as necessary. + +## Functions + +The top-level exported function has a `cache` property, which is an LRU +cache set to store 100 items. So, calling these methods repeatedly +with the same pattern and options will use the same Minimatch object, +saving the cost of parsing it multiple times. + +### minimatch(path, pattern, options) + +Main export. Tests a path against the pattern using the options. + +```javascript +var isJS = minimatch(file, "*.js", { matchBase: true }) +``` + +### minimatch.filter(pattern, options) + +Returns a function that tests its +supplied argument, suitable for use with `Array.filter`. Example: + +```javascript +var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) +``` + +### minimatch.match(list, pattern, options) + +Match against the list of +files, in the style of fnmatch or glob. If nothing is matched, and +options.nonull is set, then return a list containing the pattern itself. + +```javascript +var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) +``` + +### minimatch.makeRe(pattern, options) + +Make a regular expression object from the pattern. + +## Options + +All options are `false` by default. + +### debug + +Dump a ton of stuff to stderr. + +### nobrace + +Do not expand `{a,b}` and `{1..3}` brace sets. + +### noglobstar + +Disable `**` matching against multiple folder names. + +### dot + +Allow patterns to match filenames starting with a period, even if +the pattern does not explicitly have a period in that spot. + +Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` +is set. + +### noext + +Disable "extglob" style patterns like `+(a|b)`. + +### nocase + +Perform a case-insensitive match. + +### nonull + +When a match is not found by `minimatch.match`, return a list containing +the pattern itself. When set, an empty list is returned if there are +no matches. + +### matchBase + +If set, then patterns without slashes will be matched +against the basename of the path if it contains slashes. For example, +`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. + +### nocomment + +Suppress the behavior of treating `#` at the start of a pattern as a +comment. + +### nonegate + +Suppress the behavior of treating a leading `!` character as negation. + +### flipNegate + +Returns from negate expressions the same as if they were not negated. +(Ie, true on a hit, false on a miss.) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js new file mode 100644 index 0000000..405746b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js @@ -0,0 +1,1079 @@ +;(function (require, exports, module, platform) { + +if (module) module.exports = minimatch +else exports.minimatch = minimatch + +if (!require) { + require = function (id) { + switch (id) { + case "sigmund": return function sigmund (obj) { + return JSON.stringify(obj) + } + case "path": return { basename: function (f) { + f = f.split(/[\/\\]/) + var e = f.pop() + if (!e) e = f.pop() + return e + }} + case "lru-cache": return function LRUCache () { + // not quite an LRU, but still space-limited. + var cache = {} + var cnt = 0 + this.set = function (k, v) { + cnt ++ + if (cnt >= 100) cache = {} + cache[k] = v + } + this.get = function (k) { return cache[k] } + } + } + } +} + +minimatch.Minimatch = Minimatch + +var LRU = require("lru-cache") + , cache = minimatch.cache = new LRU({max: 100}) + , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} + , sigmund = require("sigmund") + +var path = require("path") + // any single thing other than / + // don't need to escape / when using new RegExp() + , qmark = "[^/]" + + // * => any number of characters + , star = qmark + "*?" + + // ** when dots are allowed. Anything goes, except .. and . + // not (^ or / followed by one or two dots followed by $ or /), + // followed by anything, any number of times. + , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" + + // not a ^ or / followed by a dot, + // followed by anything, any number of times. + , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" + + // characters that need to be escaped in RegExp. + , reSpecials = charSet("().*{}+?[]^$\\!") + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split("").reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.monkeyPatch = monkeyPatch +function monkeyPatch () { + var desc = Object.getOwnPropertyDescriptor(String.prototype, "match") + var orig = desc.value + desc.value = function (p) { + if (p instanceof Minimatch) return p.match(this) + return orig.call(this, p) + } + Object.defineProperty(String.prototype, desc) +} + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + + +function minimatch (p, pattern, options) { + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + return false + } + + // "" only matches "" + if (pattern.trim() === "") return p === "" + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options, cache) + } + + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required") + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows: need to use /, not \ + // On other platforms, \ is a valid (albeit bad) filename char. + if (platform === "win32") { + pattern = pattern.split("\\").join("/") + } + + // lru storage. + // these things aren't particularly big, but walking down the string + // and turning it into a regexp can get pretty costly. + var cacheKey = pattern + "\n" + sigmund(options) + var cached = minimatch.cache.get(cacheKey) + if (cached) return cached + minimatch.cache.set(cacheKey, this) + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) console.error(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + if (options.debug) console.error(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + if (options.debug) console.error(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return -1 === s.indexOf(false) + }) + + if (options.debug) console.error(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + , negate = false + , options = this.options + , negateOffset = 0 + + if (options.nonegate) return + + for ( var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === "!" + ; i ++) { + negate = !negate + negateOffset ++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return new Minimatch(pattern, options).braceExpand() +} + +Minimatch.prototype.braceExpand = braceExpand +function braceExpand (pattern, options) { + options = options || this.options + pattern = typeof pattern === "undefined" + ? this.pattern : pattern + + if (typeof pattern === "undefined") { + throw new Error("undefined pattern") + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + var escaping = false + + // examples and comments refer to this crazy pattern: + // a{b,c{d,e},{f,g}h}x{y,z} + // expected: + // abxy + // abxz + // acdxy + // acdxz + // acexy + // acexz + // afhxy + // afhxz + // aghxy + // aghxz + + // everything before the first \{ is just a prefix. + // So, we pluck that off, and work with the rest, + // and then prepend it to everything we find. + if (pattern.charAt(0) !== "{") { + // console.error(pattern) + var prefix = null + for (var i = 0, l = pattern.length; i < l; i ++) { + var c = pattern.charAt(i) + // console.error(i, c) + if (c === "\\") { + escaping = !escaping + } else if (c === "{" && !escaping) { + prefix = pattern.substr(0, i) + break + } + } + + // actually no sets, all { were escaped. + if (prefix === null) { + // console.error("no sets") + return [pattern] + } + + var tail = braceExpand(pattern.substr(i), options) + return tail.map(function (t) { + return prefix + t + }) + } + + // now we have something like: + // {b,c{d,e},{f,g}h}x{y,z} + // walk through the set, expanding each part, until + // the set ends. then, we'll expand the suffix. + // If the set only has a single member, then'll put the {} back + + // first, handle numeric sets, since they're easier + var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) + if (numset) { + // console.error("numset", numset[1], numset[2]) + var suf = braceExpand(pattern.substr(numset[0].length), options) + , start = +numset[1] + , end = +numset[2] + , inc = start > end ? -1 : 1 + , set = [] + for (var i = start; i != (end + inc); i += inc) { + // append all the suffixes + for (var ii = 0, ll = suf.length; ii < ll; ii ++) { + set.push(i + suf[ii]) + } + } + return set + } + + // ok, walk through the set + // We hope, somewhat optimistically, that there + // will be a } at the end. + // If the closing brace isn't found, then the pattern is + // interpreted as braceExpand("\\" + pattern) so that + // the leading \{ will be interpreted literally. + var i = 1 // skip the \{ + , depth = 1 + , set = [] + , member = "" + , sawEnd = false + , escaping = false + + function addMember () { + set.push(member) + member = "" + } + + // console.error("Entering for") + FOR: for (i = 1, l = pattern.length; i < l; i ++) { + var c = pattern.charAt(i) + // console.error("", i, c) + + if (escaping) { + escaping = false + member += "\\" + c + } else { + switch (c) { + case "\\": + escaping = true + continue + + case "{": + depth ++ + member += "{" + continue + + case "}": + depth -- + // if this closes the actual set, then we're done + if (depth === 0) { + addMember() + // pluck off the close-brace + i ++ + break FOR + } else { + member += c + continue + } + + case ",": + if (depth === 1) { + addMember() + } else { + member += c + } + continue + + default: + member += c + continue + } // switch + } // else + } // for + + // now we've either finished the set, and the suffix is + // pattern.substr(i), or we have *not* closed the set, + // and need to escape the leading brace + if (depth !== 0) { + // console.error("didn't close", pattern) + return braceExpand("\\" + pattern, options) + } + + // x{y,z} -> ["xy", "xz"] + // console.error("set", set) + // console.error("suffix", pattern.substr(i)) + var suf = braceExpand(pattern.substr(i), options) + // ["b", "c{d,e}","{f,g}h"] -> + // [["b"], ["cd", "ce"], ["fh", "gh"]] + var addBraces = set.length === 1 + // console.error("set pre-expanded", set) + set = set.map(function (p) { + return braceExpand(p, options) + }) + // console.error("set expanded", set) + + + // [["b"], ["cd", "ce"], ["fh", "gh"]] -> + // ["b", "cd", "ce", "fh", "gh"] + set = set.reduce(function (l, r) { + return l.concat(r) + }) + + if (addBraces) { + set = set.map(function (s) { + return "{" + s + "}" + }) + } + + // now attach the suffixes. + var ret = [] + for (var i = 0, l = set.length; i < l; i ++) { + for (var ii = 0, ll = suf.length; ii < ll; ii ++) { + ret.push(set[i] + suf[ii]) + } + } + return ret +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === "**") return GLOBSTAR + if (pattern === "") return "" + + var re = "" + , hasMagic = !!options.nocase + , escaping = false + // ? => one single character + , patternListStack = [] + , plType + , stateChar + , inClass = false + , reClassStart = -1 + , classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + , patternStart = pattern.charAt(0) === "." ? "" // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" + : "(?!\\.)" + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case "*": + re += star + hasMagic = true + break + case "?": + re += qmark + hasMagic = true + break + default: + re += "\\"+stateChar + break + } + stateChar = false + } + } + + for ( var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i ++ ) { + + if (options.debug) { + console.error("%s\t%s %s %j", pattern, i, re, c) + } + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += "\\" + c + escaping = false + continue + } + + SWITCH: switch (c) { + case "/": + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case "\\": + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case "?": + case "*": + case "+": + case "@": + case "!": + if (options.debug) { + console.error("%s\t%s %s %j <-- stateChar", pattern, i, re, c) + } + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + if (c === "!" && i === classStart + 1) c = "^" + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case "(": + if (inClass) { + re += "(" + continue + } + + if (!stateChar) { + re += "\\(" + continue + } + + plType = stateChar + patternListStack.push({ type: plType + , start: i - 1 + , reStart: re.length }) + // negation is (?:(?!js)[^/]*) + re += stateChar === "!" ? "(?:(?!" : "(?:" + stateChar = false + continue + + case ")": + if (inClass || !patternListStack.length) { + re += "\\)" + continue + } + + hasMagic = true + re += ")" + plType = patternListStack.pop().type + // negation is (?:(?!js)[^/]*) + // The others are (?:) + switch (plType) { + case "!": + re += "[^/]*?)" + break + case "?": + case "+": + case "*": re += plType + case "@": break // the default anyway + } + continue + + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|" + escaping = false + continue + } + + re += "|" + continue + + // these are mostly the same in regexp and glob + case "[": + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += "\\" + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case "]": + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += "\\" + c + escaping = false + continue + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === "^" && inClass)) { + re += "\\" + } + + re += c + + } // switch + } // for + + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + var cs = pattern.substr(classStart + 1) + , sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + "\\[" + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + var pl + while (pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + 3) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = "\\" + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + "|" + }) + + // console.error("tail=%j\n %s", tail, tail) + var t = pl.type === "*" ? star + : pl.type === "?" ? qmark + : "\\" + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + + t + "\\(" + + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += "\\\\" + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case ".": + case "[": + case "(": addPatternStart = true + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== "" && hasMagic) re = "(?=.)" + re + + if (addPatternStart) re = patternStart + re + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [ re, hasMagic ] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? "i" : "" + , regExp = new RegExp("^" + re + "$", flags) + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) return this.regexp = false + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + , flags = options.nocase ? "i" : "" + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === "string") ? regExpEscape(p) + : p._src + }).join("\\\/") + }).join("|") + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = "^(?:" + re + ")$" + + // can match anything, as long as it's not this. + if (this.negate) re = "^(?!" + re + ").*$" + + try { + return this.regexp = new RegExp(re, flags) + } catch (ex) { + return this.regexp = false + } +} + +minimatch.match = function (list, pattern, options) { + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + // console.error("match", f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === "" + + if (f === "/" && partial) return true + + var options = this.options + + // windows: need to use /, not \ + // On other platforms, \ is a valid (albeit bad) filename char. + if (platform === "win32") { + f = f.split("\\").join("/") + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + if (options.debug) { + console.error(this.pattern, "split", f) + } + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + // console.error(this.pattern, "set", set) + + for (var i = 0, l = set.length; i < l; i ++) { + var pattern = set[i] + var hit = this.matchOne(f, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + if (options.debug) { + console.error("matchOne", + { "this": this + , file: file + , pattern: pattern }) + } + + if (options.matchBase && pattern.length === 1) { + file = path.basename(file.join("/")).split("/") + } + + if (options.debug) { + console.error("matchOne", file.length, pattern.length) + } + + for ( var fi = 0 + , pi = 0 + , fl = file.length + , pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi ++, pi ++ ) { + + if (options.debug) { + console.error("matchOne loop") + } + var p = pattern[pi] + , f = file[fi] + + if (options.debug) { + console.error(pattern, p, f) + } + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + if (options.debug) + console.error('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + , pr = pi + 1 + if (pr === pl) { + if (options.debug) + console.error('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for ( ; fi < fl; fi ++) { + if (file[fi] === "." || file[fi] === ".." || + (!options.dot && file[fi].charAt(0) === ".")) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + WHILE: while (fr < fl) { + var swallowee = file[fr] + + if (options.debug) { + console.error('\nglobstar while', + file, fr, pattern, pr, swallowee) + } + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + if (options.debug) + console.error('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === "." || swallowee === ".." || + (!options.dot && swallowee.charAt(0) === ".")) { + if (options.debug) + console.error("dot detected!", file, fr, pattern, pr) + break WHILE + } + + // ** swallows a segment, and continue. + if (options.debug) + console.error('globstar swallow a segment, and continue') + fr ++ + } + } + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + // console.error("\n>>> no match, partial?", file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === "string") { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + if (options.debug) { + console.error("string match", p, f, hit) + } + } else { + hit = f.match(p) + if (options.debug) { + console.error("pattern match", p, f, hit) + } + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") + return emptyFileEnd + } + + // should be unreachable. + throw new Error("wtf?") +} + + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, "$1") +} + + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") +} + +})( typeof require === "function" ? require : null, + this, + typeof module === "object" ? module : null, + typeof process === "object" ? process.platform : "win32" + ) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore new file mode 100644 index 0000000..07e6e47 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore @@ -0,0 +1 @@ +/node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS new file mode 100644 index 0000000..016d7fb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS @@ -0,0 +1,8 @@ +# Authors, sorted by whether or not they are me +Isaac Z. Schlueter +Carlos Brito Lage +Marko Mikulicic +Trent Mick +Kevin O'Hara +Marco Rogers +Jesse Dailey diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE new file mode 100644 index 0000000..05a4010 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE @@ -0,0 +1,23 @@ +Copyright 2009, 2010, 2011 Isaac Z. Schlueter. +All rights reserved. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md new file mode 100644 index 0000000..03ee0f9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md @@ -0,0 +1,97 @@ +# lru cache + +A cache object that deletes the least-recently-used items. + +## Usage: + +```javascript +var LRU = require("lru-cache") + , options = { max: 500 + , length: function (n) { return n * 2 } + , dispose: function (key, n) { n.close() } + , maxAge: 1000 * 60 * 60 } + , cache = LRU(options) + , otherCache = LRU(50) // sets just the max size + +cache.set("key", "value") +cache.get("key") // "value" + +cache.reset() // empty the cache +``` + +If you put more stuff in it, then items will fall out. + +If you try to put an oversized thing in it, then it'll fall out right +away. + +## Options + +* `max` The maximum size of the cache, checked by applying the length + function to all values in the cache. Not setting this is kind of + silly, since that's the whole purpose of this lib, but it defaults + to `Infinity`. +* `maxAge` Maximum age in ms. Items are not pro-actively pruned out + as they age, but if you try to get an item that is too old, it'll + drop it and return undefined instead of giving it to you. +* `length` Function that is used to calculate the length of stored + items. If you're storing strings or buffers, then you probably want + to do something like `function(n){return n.length}`. The default is + `function(n){return 1}`, which is fine if you want to store `n` + like-sized things. +* `dispose` Function that is called on items when they are dropped + from the cache. This can be handy if you want to close file + descriptors or do other cleanup tasks when items are no longer + accessible. Called with `key, value`. It's called *before* + actually removing the item from the internal cache, so if you want + to immediately put it back in, you'll have to do that in a + `nextTick` or `setTimeout` callback or it won't do anything. +* `stale` By default, if you set a `maxAge`, it'll only actually pull + stale items out of the cache when you `get(key)`. (That is, it's + not pre-emptively doing a `setTimeout` or anything.) If you set + `stale:true`, it'll return the stale value before deleting it. If + you don't set this, then it'll return `undefined` when you try to + get a stale entry, as if it had already been deleted. + +## API + +* `set(key, value)` +* `get(key) => value` + + Both of these will update the "recently used"-ness of the key. + They do what you think. + +* `peek(key)` + + Returns the key value (or `undefined` if not found) without + updating the "recently used"-ness of the key. + + (If you find yourself using this a lot, you *might* be using the + wrong sort of data structure, but there are some use cases where + it's handy.) + +* `del(key)` + + Deletes a key out of the cache. + +* `reset()` + + Clear the cache entirely, throwing away all values. + +* `has(key)` + + Check if a key is in the cache, without updating the recent-ness + or deleting it for being stale. + +* `forEach(function(value,key,cache), [thisp])` + + Just like `Array.prototype.forEach`. Iterates over all the keys + in the cache, in order of recent-ness. (Ie, more recently used + items are iterated over first.) + +* `keys()` + + Return an array of the keys in the cache. + +* `values()` + + Return an array of the values in the cache. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js new file mode 100644 index 0000000..8c80853 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js @@ -0,0 +1,257 @@ +;(function () { // closure for web browsers + +if (typeof module === 'object' && module.exports) { + module.exports = LRUCache +} else { + // just set the global for non-node platforms. + this.LRUCache = LRUCache +} + +function hOP (obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key) +} + +function naiveLength () { return 1 } + +function LRUCache (options) { + if (!(this instanceof LRUCache)) { + return new LRUCache(options) + } + + var max + if (typeof options === 'number') { + max = options + options = { max: max } + } + + if (!options) options = {} + + max = options.max + + var lengthCalculator = options.length || naiveLength + + if (typeof lengthCalculator !== "function") { + lengthCalculator = naiveLength + } + + if (!max || !(typeof max === "number") || max <= 0 ) { + // a little bit silly. maybe this should throw? + max = Infinity + } + + var allowStale = options.stale || false + + var maxAge = options.maxAge || null + + var dispose = options.dispose + + var cache = Object.create(null) // hash of items by key + , lruList = Object.create(null) // list of items in order of use recency + , mru = 0 // most recently used + , lru = 0 // least recently used + , length = 0 // number of items in the list + , itemCount = 0 + + + // resize the cache when the max changes. + Object.defineProperty(this, "max", + { set : function (mL) { + if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity + max = mL + // if it gets above double max, trim right away. + // otherwise, do it whenever it's convenient. + if (length > max) trim() + } + , get : function () { return max } + , enumerable : true + }) + + // resize the cache when the lengthCalculator changes. + Object.defineProperty(this, "lengthCalculator", + { set : function (lC) { + if (typeof lC !== "function") { + lengthCalculator = naiveLength + length = itemCount + for (var key in cache) { + cache[key].length = 1 + } + } else { + lengthCalculator = lC + length = 0 + for (var key in cache) { + cache[key].length = lengthCalculator(cache[key].value) + length += cache[key].length + } + } + + if (length > max) trim() + } + , get : function () { return lengthCalculator } + , enumerable : true + }) + + Object.defineProperty(this, "length", + { get : function () { return length } + , enumerable : true + }) + + + Object.defineProperty(this, "itemCount", + { get : function () { return itemCount } + , enumerable : true + }) + + this.forEach = function (fn, thisp) { + thisp = thisp || this + var i = 0; + for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { + i++ + var hit = lruList[k] + fn.call(thisp, hit.value, hit.key, this) + } + } + + this.keys = function () { + var keys = new Array(itemCount) + var i = 0 + for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { + var hit = lruList[k] + keys[i++] = hit.key + } + return keys + } + + this.values = function () { + var values = new Array(itemCount) + var i = 0 + for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { + var hit = lruList[k] + values[i++] = hit.value + } + return values + } + + this.reset = function () { + if (dispose) { + for (var k in cache) { + dispose(k, cache[k].value) + } + } + cache = {} + lruList = {} + lru = 0 + mru = 0 + length = 0 + itemCount = 0 + } + + // Provided for debugging/dev purposes only. No promises whatsoever that + // this API stays stable. + this.dump = function () { + return cache + } + + this.dumpLru = function () { + return lruList + } + + this.set = function (key, value) { + if (hOP(cache, key)) { + // dispose of the old one before overwriting + if (dispose) dispose(key, cache[key].value) + if (maxAge) cache[key].now = Date.now() + cache[key].value = value + this.get(key) + return true + } + + var len = lengthCalculator(value) + var age = maxAge ? Date.now() : 0 + var hit = new Entry(key, value, mru++, len, age) + + // oversized objects fall out of cache automatically. + if (hit.length > max) { + if (dispose) dispose(key, value) + return false + } + + length += hit.length + lruList[hit.lu] = cache[key] = hit + itemCount ++ + + if (length > max) trim() + return true + } + + this.has = function (key) { + if (!hOP(cache, key)) return false + var hit = cache[key] + if (maxAge && (Date.now() - hit.now > maxAge)) { + return false + } + return true + } + + this.get = function (key) { + return get(key, true) + } + + this.peek = function (key) { + return get(key, false) + } + + function get (key, doUse) { + var hit = cache[key] + if (hit) { + if (maxAge && (Date.now() - hit.now > maxAge)) { + del(hit) + if (!allowStale) hit = undefined + } else { + if (doUse) use(hit) + } + if (hit) hit = hit.value + } + return hit + } + + function use (hit) { + shiftLU(hit) + hit.lu = mru ++ + lruList[hit.lu] = hit + } + + this.del = function (key) { + del(cache[key]) + } + + function trim () { + while (lru < mru && length > max) + del(lruList[lru]) + } + + function shiftLU(hit) { + delete lruList[ hit.lu ] + while (lru < mru && !lruList[lru]) lru ++ + } + + function del(hit) { + if (hit) { + if (dispose) dispose(hit.key, hit.value) + length -= hit.length + itemCount -- + delete cache[ hit.key ] + shiftLU(hit) + } + } +} + +// classy, since V8 prefers predictable objects. +function Entry (key, value, mru, len, age) { + this.key = key + this.value = value + this.lu = mru + this.length = len + this.now = age +} + +})() diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json new file mode 100644 index 0000000..73920bf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json @@ -0,0 +1,62 @@ +{ + "name": "lru-cache", + "description": "A cache object that deletes the least-recently-used items.", + "version": "2.3.0", + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me" + }, + "scripts": { + "test": "tap test --gc" + }, + "main": "lib/lru-cache.js", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/node-lru-cache.git" + }, + "devDependencies": { + "tap": "", + "weak": "" + }, + "license": { + "type": "MIT", + "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" + }, + "contributors": [ + { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me" + }, + { + "name": "Carlos Brito Lage", + "email": "carlos@carloslage.net" + }, + { + "name": "Marko Mikulicic", + "email": "marko.mikulicic@isti.cnr.it" + }, + { + "name": "Trent Mick", + "email": "trentm@gmail.com" + }, + { + "name": "Kevin O'Hara", + "email": "kevinohara80@gmail.com" + }, + { + "name": "Marco Rogers", + "email": "marco.rogers@gmail.com" + }, + { + "name": "Jesse Dailey", + "email": "jesse.dailey@gmail.com" + } + ], + "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/isaacs/node-lru-cache/issues" + }, + "_id": "lru-cache@2.3.0", + "_from": "lru-cache@2" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js new file mode 100644 index 0000000..c2a9e54 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js @@ -0,0 +1,25 @@ +var LRU = require('lru-cache'); + +var max = +process.argv[2] || 10240; +var more = 1024; + +var cache = LRU({ + max: max, maxAge: 86400e3 +}); + +// fill cache +for (var i = 0; i < max; ++i) { + cache.set(i, {}); +} + +var start = process.hrtime(); + +// adding more items +for ( ; i < max+more; ++i) { + cache.set(i, {}); +} + +var end = process.hrtime(start); +var msecs = end[0] * 1E3 + end[1] / 1E6; + +console.log('adding %d items took %d ms', more, msecs.toPrecision(5)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js new file mode 100644 index 0000000..70f3f8b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js @@ -0,0 +1,329 @@ +var test = require("tap").test + , LRU = require("../") + +test("basic", function (t) { + var cache = new LRU({max: 10}) + cache.set("key", "value") + t.equal(cache.get("key"), "value") + t.equal(cache.get("nada"), undefined) + t.equal(cache.length, 1) + t.equal(cache.max, 10) + t.end() +}) + +test("least recently set", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.set("b", "B") + cache.set("c", "C") + t.equal(cache.get("c"), "C") + t.equal(cache.get("b"), "B") + t.equal(cache.get("a"), undefined) + t.end() +}) + +test("lru recently gotten", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.set("b", "B") + cache.get("a") + cache.set("c", "C") + t.equal(cache.get("c"), "C") + t.equal(cache.get("b"), undefined) + t.equal(cache.get("a"), "A") + t.end() +}) + +test("del", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.del("a") + t.equal(cache.get("a"), undefined) + t.end() +}) + +test("max", function (t) { + var cache = new LRU(3) + + // test changing the max, verify that the LRU items get dropped. + cache.max = 100 + for (var i = 0; i < 100; i ++) cache.set(i, i) + t.equal(cache.length, 100) + for (var i = 0; i < 100; i ++) { + t.equal(cache.get(i), i) + } + cache.max = 3 + t.equal(cache.length, 3) + for (var i = 0; i < 97; i ++) { + t.equal(cache.get(i), undefined) + } + for (var i = 98; i < 100; i ++) { + t.equal(cache.get(i), i) + } + + // now remove the max restriction, and try again. + cache.max = "hello" + for (var i = 0; i < 100; i ++) cache.set(i, i) + t.equal(cache.length, 100) + for (var i = 0; i < 100; i ++) { + t.equal(cache.get(i), i) + } + // should trigger an immediate resize + cache.max = 3 + t.equal(cache.length, 3) + for (var i = 0; i < 97; i ++) { + t.equal(cache.get(i), undefined) + } + for (var i = 98; i < 100; i ++) { + t.equal(cache.get(i), i) + } + t.end() +}) + +test("reset", function (t) { + var cache = new LRU(10) + cache.set("a", "A") + cache.set("b", "B") + cache.reset() + t.equal(cache.length, 0) + t.equal(cache.max, 10) + t.equal(cache.get("a"), undefined) + t.equal(cache.get("b"), undefined) + t.end() +}) + + +// Note: `.dump()` is a debugging tool only. No guarantees are made +// about the format/layout of the response. +test("dump", function (t) { + var cache = new LRU(10) + var d = cache.dump(); + t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") + cache.set("a", "A") + var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } + t.ok(d.a) + t.equal(d.a.key, "a") + t.equal(d.a.value, "A") + t.equal(d.a.lu, 0) + + cache.set("b", "B") + cache.get("b") + d = cache.dump() + t.ok(d.b) + t.equal(d.b.key, "b") + t.equal(d.b.value, "B") + t.equal(d.b.lu, 2) + + t.end() +}) + + +test("basic with weighed length", function (t) { + var cache = new LRU({ + max: 100, + length: function (item) { return item.size } + }) + cache.set("key", {val: "value", size: 50}) + t.equal(cache.get("key").val, "value") + t.equal(cache.get("nada"), undefined) + t.equal(cache.lengthCalculator(cache.get("key")), 50) + t.equal(cache.length, 50) + t.equal(cache.max, 100) + t.end() +}) + + +test("weighed length item too large", function (t) { + var cache = new LRU({ + max: 10, + length: function (item) { return item.size } + }) + t.equal(cache.max, 10) + + // should fall out immediately + cache.set("key", {val: "value", size: 50}) + + t.equal(cache.length, 0) + t.equal(cache.get("key"), undefined) + t.end() +}) + +test("least recently set with weighed length", function (t) { + var cache = new LRU({ + max:8, + length: function (item) { return item.length } + }) + cache.set("a", "A") + cache.set("b", "BB") + cache.set("c", "CCC") + cache.set("d", "DDDD") + t.equal(cache.get("d"), "DDDD") + t.equal(cache.get("c"), "CCC") + t.equal(cache.get("b"), undefined) + t.equal(cache.get("a"), undefined) + t.end() +}) + +test("lru recently gotten with weighed length", function (t) { + var cache = new LRU({ + max: 8, + length: function (item) { return item.length } + }) + cache.set("a", "A") + cache.set("b", "BB") + cache.set("c", "CCC") + cache.get("a") + cache.get("b") + cache.set("d", "DDDD") + t.equal(cache.get("c"), undefined) + t.equal(cache.get("d"), "DDDD") + t.equal(cache.get("b"), "BB") + t.equal(cache.get("a"), "A") + t.end() +}) + +test("set returns proper booleans", function(t) { + var cache = new LRU({ + max: 5, + length: function (item) { return item.length } + }) + + t.equal(cache.set("a", "A"), true) + + // should return false for max exceeded + t.equal(cache.set("b", "donuts"), false) + + t.equal(cache.set("b", "B"), true) + t.equal(cache.set("c", "CCCC"), true) + t.end() +}) + +test("drop the old items", function(t) { + var cache = new LRU({ + max: 5, + maxAge: 50 + }) + + cache.set("a", "A") + + setTimeout(function () { + cache.set("b", "b") + t.equal(cache.get("a"), "A") + }, 25) + + setTimeout(function () { + cache.set("c", "C") + // timed out + t.notOk(cache.get("a")) + }, 60) + + setTimeout(function () { + t.notOk(cache.get("b")) + t.equal(cache.get("c"), "C") + }, 90) + + setTimeout(function () { + t.notOk(cache.get("c")) + t.end() + }, 155) +}) + +test("disposal function", function(t) { + var disposed = false + var cache = new LRU({ + max: 1, + dispose: function (k, n) { + disposed = n + } + }) + + cache.set(1, 1) + cache.set(2, 2) + t.equal(disposed, 1) + cache.set(3, 3) + t.equal(disposed, 2) + cache.reset() + t.equal(disposed, 3) + t.end() +}) + +test("disposal function on too big of item", function(t) { + var disposed = false + var cache = new LRU({ + max: 1, + length: function (k) { + return k.length + }, + dispose: function (k, n) { + disposed = n + } + }) + var obj = [ 1, 2 ] + + t.equal(disposed, false) + cache.set("obj", obj) + t.equal(disposed, obj) + t.end() +}) + +test("has()", function(t) { + var cache = new LRU({ + max: 1, + maxAge: 10 + }) + + cache.set('foo', 'bar') + t.equal(cache.has('foo'), true) + cache.set('blu', 'baz') + t.equal(cache.has('foo'), false) + t.equal(cache.has('blu'), true) + setTimeout(function() { + t.equal(cache.has('blu'), false) + t.end() + }, 15) +}) + +test("stale", function(t) { + var cache = new LRU({ + maxAge: 10, + stale: true + }) + + cache.set('foo', 'bar') + t.equal(cache.get('foo'), 'bar') + t.equal(cache.has('foo'), true) + setTimeout(function() { + t.equal(cache.has('foo'), false) + t.equal(cache.get('foo'), 'bar') + t.equal(cache.get('foo'), undefined) + t.end() + }, 15) +}) + +test("lru update via set", function(t) { + var cache = LRU({ max: 2 }); + + cache.set('foo', 1); + cache.set('bar', 2); + cache.del('bar'); + cache.set('baz', 3); + cache.set('qux', 4); + + t.equal(cache.get('foo'), undefined) + t.equal(cache.get('bar'), undefined) + t.equal(cache.get('baz'), 3) + t.equal(cache.get('qux'), 4) + t.end() +}) + +test("least recently set w/ peek", function (t) { + var cache = new LRU(2) + cache.set("a", "A") + cache.set("b", "B") + t.equal(cache.peek("a"), "A") + cache.set("c", "C") + t.equal(cache.get("c"), "C") + t.equal(cache.get("b"), "B") + t.equal(cache.get("a"), undefined) + t.end() +}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js new file mode 100644 index 0000000..eefb80d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js @@ -0,0 +1,52 @@ +var test = require('tap').test +var LRU = require('../') + +test('forEach', function (t) { + var l = new LRU(5) + for (var i = 0; i < 10; i ++) { + l.set(i.toString(), i.toString(2)) + } + + var i = 9 + l.forEach(function (val, key, cache) { + t.equal(cache, l) + t.equal(key, i.toString()) + t.equal(val, i.toString(2)) + i -= 1 + }) + + // get in order of most recently used + l.get(6) + l.get(8) + + var order = [ 8, 6, 9, 7, 5 ] + var i = 0 + + l.forEach(function (val, key, cache) { + var j = order[i ++] + t.equal(cache, l) + t.equal(key, j.toString()) + t.equal(val, j.toString(2)) + }) + + t.end() +}) + +test('keys() and values()', function (t) { + var l = new LRU(5) + for (var i = 0; i < 10; i ++) { + l.set(i.toString(), i.toString(2)) + } + + t.similar(l.keys(), ['9', '8', '7', '6', '5']) + t.similar(l.values(), ['1001', '1000', '111', '110', '101']) + + // get in order of most recently used + l.get(6) + l.get(8) + + t.similar(l.keys(), ['8', '6', '9', '7', '5']) + t.similar(l.values(), ['1000', '110', '1001', '111', '101']) + + t.end() +}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js new file mode 100644 index 0000000..7af45b0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js @@ -0,0 +1,50 @@ +#!/usr/bin/env node --expose_gc + +var weak = require('weak'); +var test = require('tap').test +var LRU = require('../') +var l = new LRU({ max: 10 }) +var refs = 0 +function X() { + refs ++ + weak(this, deref) +} + +function deref() { + refs -- +} + +test('no leaks', function (t) { + // fill up the cache + for (var i = 0; i < 100; i++) { + l.set(i, new X); + // throw some gets in there, too. + if (i % 2 === 0) + l.get(i / 2) + } + + gc() + + var start = process.memoryUsage() + + // capture the memory + var startRefs = refs + + // do it again, but more + for (var i = 0; i < 10000; i++) { + l.set(i, new X); + // throw some gets in there, too. + if (i % 2 === 0) + l.get(i / 2) + } + + gc() + + var end = process.memoryUsage() + t.equal(refs, startRefs, 'no leaky refs') + + console.error('start: %j\n' + + 'end: %j', start, end); + t.pass(); + t.end(); +}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE new file mode 100644 index 0000000..0c44ae7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) Isaac Z. Schlueter ("Author") +All rights reserved. + +The BSD License + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN +IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md new file mode 100644 index 0000000..7e36512 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md @@ -0,0 +1,53 @@ +# sigmund + +Quick and dirty signatures for Objects. + +This is like a much faster `deepEquals` comparison, which returns a +string key suitable for caches and the like. + +## Usage + +```javascript +function doSomething (someObj) { + var key = sigmund(someObj, maxDepth) // max depth defaults to 10 + var cached = cache.get(key) + if (cached) return cached) + + var result = expensiveCalculation(someObj) + cache.set(key, result) + return result +} +``` + +The resulting key will be as unique and reproducible as calling +`JSON.stringify` or `util.inspect` on the object, but is much faster. +In order to achieve this speed, some differences are glossed over. +For example, the object `{0:'foo'}` will be treated identically to the +array `['foo']`. + +Also, just as there is no way to summon the soul from the scribblings +of a cocain-addled psychoanalyst, there is no way to revive the object +from the signature string that sigmund gives you. In fact, it's +barely even readable. + +As with `sys.inspect` and `JSON.stringify`, larger objects will +produce larger signature strings. + +Because sigmund is a bit less strict than the more thorough +alternatives, the strings will be shorter, and also there is a +slightly higher chance for collisions. For example, these objects +have the same signature: + + var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} + var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} + +Like a good Freudian, sigmund is most effective when you already have +some understanding of what you're looking for. It can help you help +yourself, but you must be willing to do some work as well. + +Cycles are handled, and cyclical objects are silently omitted (though +the key is included in the signature output.) + +The second argument is the maximum depth, which defaults to 10, +because that is the maximum object traversal depth covered by most +insurance carriers. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js new file mode 100644 index 0000000..5acfd6d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js @@ -0,0 +1,283 @@ +// different ways to id objects +// use a req/res pair, since it's crazy deep and cyclical + +// sparseFE10 and sigmund are usually pretty close, which is to be expected, +// since they are essentially the same algorithm, except that sigmund handles +// regular expression objects properly. + + +var http = require('http') +var util = require('util') +var sigmund = require('./sigmund.js') +var sreq, sres, creq, cres, test + +http.createServer(function (q, s) { + sreq = q + sres = s + sres.end('ok') + this.close(function () { setTimeout(function () { + start() + }, 200) }) +}).listen(1337, function () { + creq = http.get({ port: 1337 }) + creq.on('response', function (s) { cres = s }) +}) + +function start () { + test = [sreq, sres, creq, cres] + // test = sreq + // sreq.sres = sres + // sreq.creq = creq + // sreq.cres = cres + + for (var i in exports.compare) { + console.log(i) + var hash = exports.compare[i]() + console.log(hash) + console.log(hash.length) + console.log('') + } + + require('bench').runMain() +} + +function customWs (obj, md, d) { + d = d || 0 + var to = typeof obj + if (to === 'undefined' || to === 'function' || to === null) return '' + if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '') + + if (Array.isArray(obj)) { + return obj.map(function (i, _, __) { + return customWs(i, md, d + 1) + }).reduce(function (a, b) { return a + b }, '') + } + + var keys = Object.keys(obj) + return keys.map(function (k, _, __) { + return k + ':' + customWs(obj[k], md, d + 1) + }).reduce(function (a, b) { return a + b }, '') +} + +function custom (obj, md, d) { + d = d || 0 + var to = typeof obj + if (to === 'undefined' || to === 'function' || to === null) return '' + if (d > md || !obj || to !== 'object') return '' + obj + + if (Array.isArray(obj)) { + return obj.map(function (i, _, __) { + return custom(i, md, d + 1) + }).reduce(function (a, b) { return a + b }, '') + } + + var keys = Object.keys(obj) + return keys.map(function (k, _, __) { + return k + ':' + custom(obj[k], md, d + 1) + }).reduce(function (a, b) { return a + b }, '') +} + +function sparseFE2 (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + Object.keys(v).forEach(function (k, _, __) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') return + var to = typeof v[k] + if (to === 'function' || to === 'undefined') return + soFar += k + ':' + ch(v[k], depth + 1) + }) + soFar += '}' + } + ch(obj, 0) + return soFar +} + +function sparseFE (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + Object.keys(v).forEach(function (k, _, __) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') return + var to = typeof v[k] + if (to === 'function' || to === 'undefined') return + soFar += k + ch(v[k], depth + 1) + }) + } + ch(obj, 0) + return soFar +} + +function sparse (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + for (var k in v) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') continue + var to = typeof v[k] + if (to === 'function' || to === 'undefined') continue + soFar += k + ch(v[k], depth + 1) + } + } + ch(obj, 0) + return soFar +} + +function noCommas (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + for (var k in v) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') continue + var to = typeof v[k] + if (to === 'function' || to === 'undefined') continue + soFar += k + ':' + ch(v[k], depth + 1) + } + soFar += '}' + } + ch(obj, 0) + return soFar +} + + +function flatten (obj, maxDepth) { + var seen = [] + var soFar = '' + function ch (v, depth) { + if (depth > maxDepth) return + if (typeof v === 'function' || typeof v === 'undefined') return + if (typeof v !== 'object' || !v) { + soFar += v + return + } + if (seen.indexOf(v) !== -1 || depth === maxDepth) return + seen.push(v) + soFar += '{' + for (var k in v) { + // pseudo-private values. skip those. + if (k.charAt(0) === '_') continue + var to = typeof v[k] + if (to === 'function' || to === 'undefined') continue + soFar += k + ':' + ch(v[k], depth + 1) + soFar += ',' + } + soFar += '}' + } + ch(obj, 0) + return soFar +} + +exports.compare = +{ + // 'custom 2': function () { + // return custom(test, 2, 0) + // }, + // 'customWs 2': function () { + // return customWs(test, 2, 0) + // }, + 'JSON.stringify (guarded)': function () { + var seen = [] + return JSON.stringify(test, function (k, v) { + if (typeof v !== 'object' || !v) return v + if (seen.indexOf(v) !== -1) return undefined + seen.push(v) + return v + }) + }, + + 'flatten 10': function () { + return flatten(test, 10) + }, + + // 'flattenFE 10': function () { + // return flattenFE(test, 10) + // }, + + 'noCommas 10': function () { + return noCommas(test, 10) + }, + + 'sparse 10': function () { + return sparse(test, 10) + }, + + 'sparseFE 10': function () { + return sparseFE(test, 10) + }, + + 'sparseFE2 10': function () { + return sparseFE2(test, 10) + }, + + sigmund: function() { + return sigmund(test, 10) + }, + + + // 'util.inspect 1': function () { + // return util.inspect(test, false, 1, false) + // }, + // 'util.inspect undefined': function () { + // util.inspect(test) + // }, + // 'util.inspect 2': function () { + // util.inspect(test, false, 2, false) + // }, + // 'util.inspect 3': function () { + // util.inspect(test, false, 3, false) + // }, + // 'util.inspect 4': function () { + // util.inspect(test, false, 4, false) + // }, + // 'util.inspect Infinity': function () { + // util.inspect(test, false, Infinity, false) + // } +} + +/** results +**/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json new file mode 100644 index 0000000..ec8e2eb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json @@ -0,0 +1,41 @@ +{ + "name": "sigmund", + "version": "1.0.0", + "description": "Quick and dirty signatures for Objects.", + "main": "sigmund.js", + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "~0.3.0" + }, + "scripts": { + "test": "tap test/*.js", + "bench": "node bench.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/isaacs/sigmund" + }, + "keywords": [ + "object", + "signature", + "key", + "data", + "psychoanalysis" + ], + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me/" + }, + "license": "BSD", + "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/isaacs/sigmund/issues" + }, + "_id": "sigmund@1.0.0", + "_from": "sigmund@~1.0.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js new file mode 100644 index 0000000..82c7ab8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js @@ -0,0 +1,39 @@ +module.exports = sigmund +function sigmund (subject, maxSessions) { + maxSessions = maxSessions || 10; + var notes = []; + var analysis = ''; + var RE = RegExp; + + function psychoAnalyze (subject, session) { + if (session > maxSessions) return; + + if (typeof subject === 'function' || + typeof subject === 'undefined') { + return; + } + + if (typeof subject !== 'object' || !subject || + (subject instanceof RE)) { + analysis += subject; + return; + } + + if (notes.indexOf(subject) !== -1 || session === maxSessions) return; + + notes.push(subject); + analysis += '{'; + Object.keys(subject).forEach(function (issue, _, __) { + // pseudo-private values. skip those. + if (issue.charAt(0) === '_') return; + var to = typeof subject[issue]; + if (to === 'function' || to === 'undefined') return; + analysis += issue; + psychoAnalyze(subject[issue], session + 1); + }); + } + psychoAnalyze(subject, 0); + return analysis; +} + +// vim: set softtabstop=4 shiftwidth=4: diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js new file mode 100644 index 0000000..50c53a1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js @@ -0,0 +1,24 @@ +var test = require('tap').test +var sigmund = require('../sigmund.js') + + +// occasionally there are duplicates +// that's an acceptable edge-case. JSON.stringify and util.inspect +// have some collision potential as well, though less, and collision +// detection is expensive. +var hash = '{abc/def/g{0h1i2{jkl' +var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} +var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} + +var obj3 = JSON.parse(JSON.stringify(obj1)) +obj3.c = /def/ +obj3.g[2].cycle = obj3 +var cycleHash = '{abc/def/g{0h1i2{jklcycle' + +test('basic', function (t) { + t.equal(sigmund(obj1), hash) + t.equal(sigmund(obj2), hash) + t.equal(sigmund(obj3), cycleHash) + t.end() +}) + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json new file mode 100644 index 0000000..508990f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json @@ -0,0 +1,39 @@ +{ + "author": { + "name": "Isaac Z. Schlueter", + "email": "i@izs.me", + "url": "http://blog.izs.me" + }, + "name": "minimatch", + "description": "a glob matcher in javascript", + "version": "0.2.12", + "repository": { + "type": "git", + "url": "git://github.com/isaacs/minimatch.git" + }, + "main": "minimatch.js", + "scripts": { + "test": "tap test" + }, + "engines": { + "node": "*" + }, + "dependencies": { + "lru-cache": "2", + "sigmund": "~1.0.0" + }, + "devDependencies": { + "tap": "" + }, + "license": { + "type": "MIT", + "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" + }, + "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n### Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n Each row in the\n array corresponds to a brace-expanded pattern. Each item in the row\n corresponds to a single path-part. For example, the pattern\n `{a,b/c}/d` would expand to a set of patterns like:\n\n [ [ a, d ]\n , [ b, c, d ] ]\n\n If a portion of the pattern doesn't have any \"magic\" in it\n (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n will be left as a string rather than converted to a regular\n expression.\n\n* `regexp` Created by the `makeRe` method. A single regular expression\n expressing the entire pattern. This is useful in cases where you wish\n to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n filename, and match it against a single row in the `regExpSet`. This\n method is mainly for internal use, but is exposed so that it can be\n used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items. So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export. Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`. Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob. If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself. When set, an empty list is returned if there are\nno matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes. For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/isaacs/minimatch/issues" + }, + "_id": "minimatch@0.2.12", + "_from": "minimatch@>=0.2.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js new file mode 100644 index 0000000..ae7ac73 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js @@ -0,0 +1,399 @@ +// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test +// +// TODO: Some of these tests do very bad things with backslashes, and will +// most likely fail badly on windows. They should probably be skipped. + +var tap = require("tap") + , globalBefore = Object.keys(global) + , mm = require("../") + , files = [ "a", "b", "c", "d", "abc" + , "abd", "abe", "bb", "bcd" + , "ca", "cb", "dd", "de" + , "bdir/", "bdir/cfile"] + , next = files.concat([ "a-b", "aXb" + , ".x", ".y" ]) + + +var patterns = + [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" + , ["a*", ["a", "abc", "abd", "abe"]] + , ["X*", ["X*"], {nonull: true}] + + // allow null glob expansion + , ["X*", []] + + // isaacs: Slightly different than bash/sh/ksh + // \\* is not un-escaped to literal "*" in a failed match, + // but it does make it get treated as a literal star + , ["\\*", ["\\*"], {nonull: true}] + , ["\\**", ["\\**"], {nonull: true}] + , ["\\*\\*", ["\\*\\*"], {nonull: true}] + + , ["b*/", ["bdir/"]] + , ["c*", ["c", "ca", "cb"]] + , ["**", files] + + , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] + , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] + + , "legendary larry crashes bashes" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] + + , "character classes" + , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] + , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", + "bdir/", "ca", "cb", "dd", "de"]] + , ["a*[^c]", ["abd", "abe"]] + , function () { files.push("a-b", "aXb") } + , ["a[X-]b", ["a-b", "aXb"]] + , function () { files.push(".x", ".y") } + , ["[^a-c]*", ["d", "dd", "de"]] + , function () { files.push("a*b/", "a*b/ooo") } + , ["a\\*b/*", ["a*b/ooo"]] + , ["a\\*?/*", ["a*b/ooo"]] + , ["*\\\\!*", [], {null: true}, ["echo !7"]] + , ["*\\!*", ["echo !7"], null, ["echo !7"]] + , ["*.\\*", ["r.*"], null, ["r.*"]] + , ["a[b]c", ["abc"]] + , ["a[\\b]c", ["abc"]] + , ["a?c", ["abc"]] + , ["a\\*c", [], {null: true}, ["abc"]] + , ["", [""], { null: true }, [""]] + + , "http://www.opensource.apple.com/source/bash/bash-23/" + + "bash/tests/glob-test" + , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } + , ["*/man*/bash.*", ["man/man1/bash.1"]] + , ["man/man1/bash.1", ["man/man1/bash.1"]] + , ["a***c", ["abc"], null, ["abc"]] + , ["a*****?c", ["abc"], null, ["abc"]] + , ["?*****??", ["abc"], null, ["abc"]] + , ["*****??", ["abc"], null, ["abc"]] + , ["?*****?c", ["abc"], null, ["abc"]] + , ["?***?****c", ["abc"], null, ["abc"]] + , ["?***?****?", ["abc"], null, ["abc"]] + , ["?***?****", ["abc"], null, ["abc"]] + , ["*******c", ["abc"], null, ["abc"]] + , ["*******?", ["abc"], null, ["abc"]] + , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["[-abc]", ["-"], null, ["-"]] + , ["[abc-]", ["-"], null, ["-"]] + , ["\\", ["\\"], null, ["\\"]] + , ["[\\\\]", ["\\"], null, ["\\"]] + , ["[[]", ["["], null, ["["]] + , ["[", ["["], null, ["["]] + , ["[*", ["[abc"], null, ["[abc"]] + , "a right bracket shall lose its special meaning and\n" + + "represent itself in a bracket expression if it occurs\n" + + "first in the list. -- POSIX.2 2.8.3.2" + , ["[]]", ["]"], null, ["]"]] + , ["[]-]", ["]"], null, ["]"]] + , ["[a-\z]", ["p"], null, ["p"]] + , ["??**********?****?", [], { null: true }, ["abc"]] + , ["??**********?****c", [], { null: true }, ["abc"]] + , ["?************c****?****", [], { null: true }, ["abc"]] + , ["*c*?**", [], { null: true }, ["abc"]] + , ["a*****c*?**", [], { null: true }, ["abc"]] + , ["a********???*******", [], { null: true }, ["abc"]] + , ["[]", [], { null: true }, ["a"]] + , ["[abc", [], { null: true }, ["["]] + + , "nocase tests" + , ["XYZ", ["xYz"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["ab*", ["ABC"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + + // [ pattern, [matches], MM opts, files, TAP opts] + , "onestar/twostar" + , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] + , ["{/?,*}", ["/a", "bb"], {null: true} + , ["/a", "/b/b", "/a/b/c", "bb"]] + + , "dots should not match unless requested" + , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] + + // .. and . can only match patterns starting with ., + // even when options.dot is set. + , function () { + files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] + } + , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] + , ["a/*/b", ["a/c/b"], {dot:false}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] + + + // this also tests that changing the options needs + // to change the cache key, even if the pattern is + // the same! + , ["**", ["a/b","a/.d",".a/.d"], { dot: true } + , [ ".a/.d", "a/.d", "a/b"]] + + , "paren sets cannot contain slashes" + , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] + + // brace sets trump all else. + // + // invalid glob pattern. fails on bash4 and bsdglob. + // however, in this implementation, it's easier just + // to do the intuitive thing, and let brace-expansion + // actually come before parsing any extglob patterns, + // like the documentation seems to say. + // + // XXX: if anyone complains about this, either fix it + // or tell them to grow up and stop complaining. + // + // bash/bsdglob says this: + // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] + // but we do this instead: + , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] + + // test partial parsing in the presence of comment/negation chars + , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] + , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] + + // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. + , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] + , {} + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] + + + // crazy nested {,,} and *(||) tests. + , function () { + files = [ "a", "b", "c", "d" + , "ab", "ac", "ad" + , "bc", "cb" + , "bc,d", "c,db", "c,d" + , "d)", "(b|c", "*(b|c" + , "b|c", "b|cc", "cb|c" + , "x(a|b|c)", "x(a|c)" + , "(a|b|c)", "(a|c)"] + } + , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] + , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] + // a + // *(b|c) + // *(b|d) + , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] + , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] + + + // test various flag settings. + , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] + , { noext: true } ] + , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} + , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] + , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] + + + // begin channelling Boole and deMorgan... + , "negation tests" + , function () { + files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] + } + + // anything that is NOT a* matches. + , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] + + // anything that IS !a* matches. + , ["!a*", ["!ab", "!abc"], {nonegate: true}] + + // anything that IS a* matches + , ["!!a*", ["a!b"]] + + // anything that is NOT !a* matches + , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] + + // negation nestled within a pattern + , function () { + files = [ "foo.js" + , "foo.bar" + // can't match this one without negative lookbehind. + , "foo.js.js" + , "blar.js" + , "foo." + , "boo.js.boo" ] + } + , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] + + // https://github.com/isaacs/minimatch/issues/5 + , function () { + files = [ 'a/b/.x/c' + , 'a/b/.x/c/d' + , 'a/b/.x/c/d/e' + , 'a/b/.x' + , 'a/b/.x/' + , 'a/.x/b' + , '.x' + , '.x/' + , '.x/a' + , '.x/a/b' + , 'a/.x/b/.x/c' + , '.x/.x' ] + } + , ["**/.x/**", [ '.x/' + , '.x/a' + , '.x/a/b' + , 'a/.x/b' + , 'a/b/.x/' + , 'a/b/.x/c' + , 'a/b/.x/c/d' + , 'a/b/.x/c/d/e' ] ] + + ] + +var regexps = + [ '/^(?:(?=.)a[^/]*?)$/', + '/^(?:(?=.)X[^/]*?)$/', + '/^(?:(?=.)X[^/]*?)$/', + '/^(?:\\*)$/', + '/^(?:(?=.)\\*[^/]*?)$/', + '/^(?:\\*\\*)$/', + '/^(?:(?=.)b[^/]*?\\/)$/', + '/^(?:(?=.)c[^/]*?)$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', + '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', + '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', + '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', + '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', + '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', + '/^(?:(?=.)a[^/]*?[^c])$/', + '/^(?:(?=.)a[X-]b)$/', + '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', + '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', + '/^(?:(?=.)a[b]c)$/', + '/^(?:(?=.)a[b]c)$/', + '/^(?:(?=.)a[^/]c)$/', + '/^(?:a\\*c)$/', + 'false', + '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', + '/^(?:man\\/man1\\/bash\\.1)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[-abc])$/', + '/^(?:(?!\\.)(?=.)[abc-])$/', + '/^(?:\\\\)$/', + '/^(?:(?!\\.)(?=.)[\\\\])$/', + '/^(?:(?!\\.)(?=.)[\\[])$/', + '/^(?:\\[)$/', + '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[\\]])$/', + '/^(?:(?!\\.)(?=.)[\\]-])$/', + '/^(?:(?!\\.)(?=.)[a-z])$/', + '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', + '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', + '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', + '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', + '/^(?:\\[\\])$/', + '/^(?:\\[abc)$/', + '/^(?:(?=.)XYZ)$/i', + '/^(?:(?=.)ab[^/]*?)$/i', + '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', + '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', + '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', + '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', + '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', + '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', + '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', + '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', + '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', + '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', + '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', + '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', + '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', + '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', + '/^(?:(?=.)a[^/]b)$/', + '/^(?:(?=.)#[^/]*?)$/', + '/^(?!^(?:(?=.)a[^/]*?)$).*$/', + '/^(?:(?=.)\\!a[^/]*?)$/', + '/^(?:(?=.)a[^/]*?)$/', + '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', + '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', + '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] +var re = 0; + +tap.test("basic tests", function (t) { + var start = Date.now() + + // [ pattern, [matches], MM opts, files, TAP opts] + patterns.forEach(function (c) { + if (typeof c === "function") return c() + if (typeof c === "string") return t.comment(c) + + var pattern = c[0] + , expect = c[1].sort(alpha) + , options = c[2] || {} + , f = c[3] || files + , tapOpts = c[4] || {} + + // options.debug = true + var m = new mm.Minimatch(pattern, options) + var r = m.makeRe() + var expectRe = regexps[re++] + tapOpts.re = String(r) || JSON.stringify(r) + tapOpts.files = JSON.stringify(f) + tapOpts.pattern = pattern + tapOpts.set = m.set + tapOpts.negated = m.negate + + var actual = mm.match(f, pattern, options) + actual.sort(alpha) + + t.equivalent( actual, expect + , JSON.stringify(pattern) + " " + JSON.stringify(expect) + , tapOpts ) + + t.equal(tapOpts.re, expectRe, tapOpts) + }) + + t.comment("time=" + (Date.now() - start) + "ms") + t.end() +}) + +tap.test("global leak test", function (t) { + var globalAfter = Object.keys(global) + t.equivalent(globalAfter, globalBefore, "no new globals, please") + t.end() +}) + +function alpha (a, b) { + return a > b ? 1 : -1 +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js new file mode 100644 index 0000000..7ee278a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js @@ -0,0 +1,33 @@ +var tap = require("tap") + , minimatch = require("../") + +tap.test("brace expansion", function (t) { + // [ pattern, [expanded] ] + ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" + , [ "abxy" + , "abxz" + , "acdxy" + , "acdxz" + , "acexy" + , "acexz" + , "afhxy" + , "afhxz" + , "aghxy" + , "aghxz" ] ] + , [ "a{1..5}b" + , [ "a1b" + , "a2b" + , "a3b" + , "a4b" + , "a5b" ] ] + , [ "a{b}c", ["a{b}c"] ] + ].forEach(function (tc) { + var p = tc[0] + , expect = tc[1] + t.equivalent(minimatch.braceExpand(p), expect, p) + }) + console.error("ending") + t.end() +}) + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js new file mode 100644 index 0000000..0fec4b0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js @@ -0,0 +1,14 @@ +var Minimatch = require("../minimatch.js").Minimatch +var tap = require("tap") +tap.test("cache test", function (t) { + var mm1 = new Minimatch("a?b") + var mm2 = new Minimatch("a?b") + t.equal(mm1, mm2, "should get the same object") + // the lru should drop it after 100 entries + for (var i = 0; i < 100; i ++) { + new Minimatch("a"+i) + } + mm2 = new Minimatch("a?b") + t.notEqual(mm1, mm2, "cache should have dropped") + t.end() +}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js new file mode 100644 index 0000000..25f1f60 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js @@ -0,0 +1,274 @@ +// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test +// +// TODO: Some of these tests do very bad things with backslashes, and will +// most likely fail badly on windows. They should probably be skipped. + +var tap = require("tap") + , globalBefore = Object.keys(global) + , mm = require("../") + , files = [ "a", "b", "c", "d", "abc" + , "abd", "abe", "bb", "bcd" + , "ca", "cb", "dd", "de" + , "bdir/", "bdir/cfile"] + , next = files.concat([ "a-b", "aXb" + , ".x", ".y" ]) + +tap.test("basic tests", function (t) { + var start = Date.now() + + // [ pattern, [matches], MM opts, files, TAP opts] + ; [ "http://www.bashcookbook.com/bashinfo" + + "/source/bash-1.14.7/tests/glob-test" + , ["a*", ["a", "abc", "abd", "abe"]] + , ["X*", ["X*"], {nonull: true}] + + // allow null glob expansion + , ["X*", []] + + // isaacs: Slightly different than bash/sh/ksh + // \\* is not un-escaped to literal "*" in a failed match, + // but it does make it get treated as a literal star + , ["\\*", ["\\*"], {nonull: true}] + , ["\\**", ["\\**"], {nonull: true}] + , ["\\*\\*", ["\\*\\*"], {nonull: true}] + + , ["b*/", ["bdir/"]] + , ["c*", ["c", "ca", "cb"]] + , ["**", files] + + , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] + , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] + + , "legendary larry crashes bashes" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" + , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] + + , "character classes" + , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] + , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", + "bdir/", "ca", "cb", "dd", "de"]] + , ["a*[^c]", ["abd", "abe"]] + , function () { files.push("a-b", "aXb") } + , ["a[X-]b", ["a-b", "aXb"]] + , function () { files.push(".x", ".y") } + , ["[^a-c]*", ["d", "dd", "de"]] + , function () { files.push("a*b/", "a*b/ooo") } + , ["a\\*b/*", ["a*b/ooo"]] + , ["a\\*?/*", ["a*b/ooo"]] + , ["*\\\\!*", [], {null: true}, ["echo !7"]] + , ["*\\!*", ["echo !7"], null, ["echo !7"]] + , ["*.\\*", ["r.*"], null, ["r.*"]] + , ["a[b]c", ["abc"]] + , ["a[\\b]c", ["abc"]] + , ["a?c", ["abc"]] + , ["a\\*c", [], {null: true}, ["abc"]] + , ["", [""], { null: true }, [""]] + + , "http://www.opensource.apple.com/source/bash/bash-23/" + + "bash/tests/glob-test" + , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } + , ["*/man*/bash.*", ["man/man1/bash.1"]] + , ["man/man1/bash.1", ["man/man1/bash.1"]] + , ["a***c", ["abc"], null, ["abc"]] + , ["a*****?c", ["abc"], null, ["abc"]] + , ["?*****??", ["abc"], null, ["abc"]] + , ["*****??", ["abc"], null, ["abc"]] + , ["?*****?c", ["abc"], null, ["abc"]] + , ["?***?****c", ["abc"], null, ["abc"]] + , ["?***?****?", ["abc"], null, ["abc"]] + , ["?***?****", ["abc"], null, ["abc"]] + , ["*******c", ["abc"], null, ["abc"]] + , ["*******?", ["abc"], null, ["abc"]] + , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] + , ["[-abc]", ["-"], null, ["-"]] + , ["[abc-]", ["-"], null, ["-"]] + , ["\\", ["\\"], null, ["\\"]] + , ["[\\\\]", ["\\"], null, ["\\"]] + , ["[[]", ["["], null, ["["]] + , ["[", ["["], null, ["["]] + , ["[*", ["[abc"], null, ["[abc"]] + , "a right bracket shall lose its special meaning and\n" + + "represent itself in a bracket expression if it occurs\n" + + "first in the list. -- POSIX.2 2.8.3.2" + , ["[]]", ["]"], null, ["]"]] + , ["[]-]", ["]"], null, ["]"]] + , ["[a-\z]", ["p"], null, ["p"]] + , ["??**********?****?", [], { null: true }, ["abc"]] + , ["??**********?****c", [], { null: true }, ["abc"]] + , ["?************c****?****", [], { null: true }, ["abc"]] + , ["*c*?**", [], { null: true }, ["abc"]] + , ["a*****c*?**", [], { null: true }, ["abc"]] + , ["a********???*******", [], { null: true }, ["abc"]] + , ["[]", [], { null: true }, ["a"]] + , ["[abc", [], { null: true }, ["["]] + + , "nocase tests" + , ["XYZ", ["xYz"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["ab*", ["ABC"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } + , ["xYz", "ABC", "IjK"]] + + // [ pattern, [matches], MM opts, files, TAP opts] + , "onestar/twostar" + , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] + , ["{/?,*}", ["/a", "bb"], {null: true} + , ["/a", "/b/b", "/a/b/c", "bb"]] + + , "dots should not match unless requested" + , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] + + // .. and . can only match patterns starting with ., + // even when options.dot is set. + , function () { + files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] + } + , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] + , ["a/*/b", ["a/c/b"], {dot:false}] + , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] + + + // this also tests that changing the options needs + // to change the cache key, even if the pattern is + // the same! + , ["**", ["a/b","a/.d",".a/.d"], { dot: true } + , [ ".a/.d", "a/.d", "a/b"]] + + , "paren sets cannot contain slashes" + , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] + + // brace sets trump all else. + // + // invalid glob pattern. fails on bash4 and bsdglob. + // however, in this implementation, it's easier just + // to do the intuitive thing, and let brace-expansion + // actually come before parsing any extglob patterns, + // like the documentation seems to say. + // + // XXX: if anyone complains about this, either fix it + // or tell them to grow up and stop complaining. + // + // bash/bsdglob says this: + // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] + // but we do this instead: + , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] + + // test partial parsing in the presence of comment/negation chars + , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] + , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] + + // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. + , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] + , {} + , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] + + + // crazy nested {,,} and *(||) tests. + , function () { + files = [ "a", "b", "c", "d" + , "ab", "ac", "ad" + , "bc", "cb" + , "bc,d", "c,db", "c,d" + , "d)", "(b|c", "*(b|c" + , "b|c", "b|cc", "cb|c" + , "x(a|b|c)", "x(a|c)" + , "(a|b|c)", "(a|c)"] + } + , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] + , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] + // a + // *(b|c) + // *(b|d) + , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] + , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] + + + // test various flag settings. + , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] + , { noext: true } ] + , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} + , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] + , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] + + + // begin channelling Boole and deMorgan... + , "negation tests" + , function () { + files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] + } + + // anything that is NOT a* matches. + , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] + + // anything that IS !a* matches. + , ["!a*", ["!ab", "!abc"], {nonegate: true}] + + // anything that IS a* matches + , ["!!a*", ["a!b"]] + + // anything that is NOT !a* matches + , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] + + // negation nestled within a pattern + , function () { + files = [ "foo.js" + , "foo.bar" + // can't match this one without negative lookbehind. + , "foo.js.js" + , "blar.js" + , "foo." + , "boo.js.boo" ] + } + , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] + + ].forEach(function (c) { + if (typeof c === "function") return c() + if (typeof c === "string") return t.comment(c) + + var pattern = c[0] + , expect = c[1].sort(alpha) + , options = c[2] || {} + , f = c[3] || files + , tapOpts = c[4] || {} + + // options.debug = true + var Class = mm.defaults(options).Minimatch + var m = new Class(pattern, {}) + var r = m.makeRe() + tapOpts.re = String(r) || JSON.stringify(r) + tapOpts.files = JSON.stringify(f) + tapOpts.pattern = pattern + tapOpts.set = m.set + tapOpts.negated = m.negate + + var actual = mm.match(f, pattern, options) + actual.sort(alpha) + + t.equivalent( actual, expect + , JSON.stringify(pattern) + " " + JSON.stringify(expect) + , tapOpts ) + }) + + t.comment("time=" + (Date.now() - start) + "ms") + t.end() +}) + +tap.test("global leak test", function (t) { + var globalAfter = Object.keys(global) + t.equivalent(globalAfter, globalBefore, "no new globals, please") + t.end() +}) + +function alpha (a, b) { + return a > b ? 1 : -1 +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json new file mode 100644 index 0000000..81fbcb9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json @@ -0,0 +1,49 @@ +{ + "author": { + "name": "Thorsten Lorenz", + "email": "thlorenz@gmx.de", + "url": "thlorenz.com" + }, + "name": "readdirp", + "description": "Recursive version of fs.readdir with streaming api.", + "version": "0.2.4", + "homepage": "https://github.com/thlorenz/readdirp", + "repository": { + "type": "git", + "url": "git://github.com/thlorenz/readdirp.git" + }, + "engines": { + "node": ">=0.4" + }, + "keywords": [ + "recursive", + "fs", + "stream", + "streams", + "readdir", + "filesystem", + "find", + "filter" + ], + "main": "readdirp.js", + "scripts": { + "test": "tap test/*.js" + }, + "dependencies": { + "minimatch": ">=0.2.4" + }, + "devDependencies": { + "tap": "~0.3.1", + "through": "~1.1.0", + "minimatch": "~0.2.7" + }, + "optionalDependencies": {}, + "license": "MIT", + "readme": "# readdirp [![Build Status](https://secure.travis-ci.org/thlorenz/readdirp.png)](http://travis-ci.org/thlorenz/readdirp)\n\nRecursive version of [fs.readdir](http://nodejs.org/docs/latest/api/fs.html#fs_fs_readdir_path_callback). Exposes a **stream api**.\n\n```javascript\nvar readdirp = require('readdirp'); \n , path = require('path')\n , es = require('event-stream');\n\n// print out all JavaScript files along with their size\n\nvar stream = readdirp({ root: path.join(__dirname), fileFilter: '*.js' });\nstream\n .on('warn', function (err) { \n console.error('non-fatal error', err); \n // optionally call stream.destroy() here in order to abort and cause 'close' to be emitted\n })\n .on('error', function (err) { console.error('fatal error', err); })\n .pipe(es.mapSync(function (entry) { \n return { path: entry.path, size: entry.stat.size };\n }))\n .pipe(es.stringify())\n .pipe(process.stdout);\n```\n\nMeant to be one of the recursive versions of [fs](http://nodejs.org/docs/latest/api/fs.html) functions, e.g., like [mkdirp](https://github.com/substack/node-mkdirp).\n\n**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*\n\n- [Installation](#installation)\n- [API](#api)\n\t- [entry stream](#entry-stream)\n\t- [options](#options)\n\t- [entry info](#entry-info)\n\t- [Filters](#filters)\n\t- [Callback API](#callback-api)\n\t\t- [allProcessed ](#allprocessed)\n\t\t- [fileProcessed](#fileprocessed)\n- [More Examples](#more-examples)\n\t- [stream api](#stream-api)\n\t- [stream api pipe](#stream-api-pipe)\n\t- [grep](#grep)\n\t- [using callback api](#using-callback-api)\n\t- [tests](#tests)\n\n\n# Installation\n\n npm install readdirp\n\n# API\n\n***var entryStream = readdirp (options)***\n\nReads given root recursively and returns a `stream` of [entry info](#entry-info)s.\n\n## entry stream\n\nBehaves as follows:\n \n- `emit('data')` passes an [entry info](#entry-info) whenever one is found\n- `emit('warn')` passes a non-fatal `Error` that prevents a file/directory from being processed (i.e., if it is\n inaccessible to the user)\n- `emit('error')` passes a fatal `Error` which also ends the stream (i.e., when illegal options where passed)\n- `emit('end')` called when all entries were found and no more will be emitted (i.e., we are done)\n- `emit('close')` called when the stream is destroyed via `stream.destroy()` (which could be useful if you want to\n manually abort even on a non fatal error) - at that point the stream is no longer `readable` and no more entries,\n warning or errors are emitted\n- the stream is `paused` initially in order to allow `pipe` and `on` handlers be connected before data or errors are\n emitted\n- the stream is `resumed` automatically during the next event loop \n- to learn more about streams, consult the [stream-handbook](https://github.com/substack/stream-handbook)\n\n## options\n \n- **root**: path in which to start reading and recursing into subdirectories\n\n- **fileFilter**: filter to include/exclude files found (see [Filters](#filters) for more)\n\n- **directoryFilter**: filter to include/exclude directories found and to recurse into (see [Filters](#filters) for more)\n\n- **depth**: depth at which to stop recursing even if more subdirectories are found\n\n## entry info\n\nHas the following properties:\n\n- **parentDir** : directory in which entry was found (relative to given root)\n- **fullParentDir** : full path to parent directory\n- **name** : name of the file/directory\n- **path** : path to the file/directory (relative to given root)\n- **fullPath** : full path to the file/directory found\n- **stat** : built in [stat object](http://nodejs.org/docs/v0.4.9/api/fs.html#fs.Stats)\n- **Example**: (assuming root was `/User/dev/readdirp`)\n \n parentDir : 'test/bed/root_dir1',\n fullParentDir : '/User/dev/readdirp/test/bed/root_dir1',\n name : 'root_dir1_subdir1',\n path : 'test/bed/root_dir1/root_dir1_subdir1',\n fullPath : '/User/dev/readdirp/test/bed/root_dir1/root_dir1_subdir1',\n stat : [ ... ]\n \n## Filters\n \nThere are three different ways to specify filters for files and directories respectively. \n\n- **function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry\n\n- **glob string**: a string (e.g., `*.js`) which is matched using [minimatch](https://github.com/isaacs/minimatch), so go there for more\n information. \n\n Globstars (`**`) are not supported since specifiying a recursive pattern for an already recursive function doesn't make sense.\n\n Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files.\n\n- **array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown.\n \n `[ '*.json', '*.js' ]` includes all JavaScript and Json files.\n \n \n `[ '!.git', '!node_modules' ]` includes all directories except the '.git' and 'node_modules'.\n\nDirectories that do not pass a filter will not be recursed into.\n\n## Callback API\n\nAlthough the stream api is recommended, readdirp also exposes a callback based api.\n\n***readdirp (options, callback1 [, callback2])***\n\nIf callback2 is given, callback1 functions as the **fileProcessed** callback, and callback2 as the **allProcessed** callback.\n\nIf only callback1 is given, it functions as the **allProcessed** callback.\n\n### allProcessed \n\n- function with err and res parameters, e.g., `function (err, res) { ... }`\n- **err**: array of errors that occurred during the operation, **res may still be present, even if errors occurred**\n- **res**: collection of file/directory [entry infos](#entry-info)\n\n### fileProcessed\n\n- function with [entry info](#entry-info) parameter e.g., `function (entryInfo) { ... }`\n\n\n# More Examples\n\n`on('error', ..)`, `on('warn', ..)` and `on('end', ..)` handling omitted for brevity\n\n```javascript\nvar readdirp = require('readdirp');\n\n// Glob file filter\nreaddirp({ root: './test/bed', fileFilter: '*.js' })\n .on('data', function (entry) {\n // do something with each JavaScript file entry\n });\n\n// Combined glob file filters\nreaddirp({ root: './test/bed', fileFilter: [ '*.js', '*.json' ] })\n .on('data', function (entry) {\n // do something with each JavaScript and Json file entry \n });\n\n// Combined negated directory filters\nreaddirp({ root: './test/bed', directoryFilter: [ '!.git', '!*modules' ] })\n .on('data', function (entry) {\n // do something with each file entry found outside '.git' or any modules directory \n });\n\n// Function directory filter\nreaddirp({ root: './test/bed', directoryFilter: function (di) { return di.name.length === 9; } })\n .on('data', function (entry) {\n // do something with each file entry found inside directories whose name has length 9\n });\n\n// Limiting depth\nreaddirp({ root: './test/bed', depth: 1 })\n .on('data', function (entry) {\n // do something with each file entry found up to 1 subdirectory deep\n });\n\n// callback api\nreaddirp(\n { root: '.' }\n , function(fileInfo) { \n // do something with file entry here\n } \n , function (err, res) {\n // all done, move on or do final step for all file entries here\n }\n);\n```\n\nTry more examples by following [instructions](https://github.com/thlorenz/readdirp/blob/master/examples/Readme.md)\non how to get going.\n\n## stream api\n\n[stream-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api.js)\n\nDemonstrates error and data handling by listening to events emitted from the readdirp stream.\n\n## stream api pipe\n\n[stream-api-pipe.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api-pipe.js)\n\nDemonstrates error handling by listening to events emitted from the readdirp stream and how to pipe the data stream into\nanother destination stream.\n\n## grep\n\n[grep.js](https://github.com/thlorenz/readdirp/blob/master/examples/grep.js)\n\nVery naive implementation of grep, for demonstration purposes only.\n\n## using callback api\n\n[callback-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/callback-api.js)\n\nShows how to pass callbacks in order to handle errors and/or data.\n\n## tests\n\nThe [readdirp tests](https://github.com/thlorenz/readdirp/blob/master/test/readdirp.js) also will give you a good idea on\nhow things work.\n\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/thlorenz/readdirp/issues" + }, + "_id": "readdirp@0.2.4", + "_from": "readdirp@~0.2.3" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js new file mode 100644 index 0000000..03bfcd7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js @@ -0,0 +1,267 @@ +'use strict'; + +var fs = require('fs') + , path = require('path') + , minimatch = require('minimatch') + , toString = Object.prototype.toString + ; + +// Standard helpers +function isFunction (obj) { + return toString.call(obj) == '[object Function]'; +} + +function isString (obj) { + return toString.call(obj) == '[object String]'; +} + +function isRegExp (obj) { + return toString.call(obj) == '[object RegExp]'; +} + +function isUndefined (obj) { + return obj === void 0; +} + +/** + * Main function which ends up calling readdirRec and reads all files and directories in given root recursively. + * @param { Object } opts Options to specify root (start directory), filters and recursion depth + * @param { function } callback1 When callback2 is given calls back for each processed file - function (fileInfo) { ... }, + * when callback2 is not given, it behaves like explained in callback2 + * @param { function } callback2 Calls back once all files have been processed with an array of errors and file infos + * function (err, fileInfos) { ... } + */ +function readdir(opts, callback1, callback2) { + var stream + , handleError + , handleFatalError + , pending = 0 + , errors = [] + , readdirResult = { + directories: [] + , files: [] + } + , fileProcessed + , allProcessed + , realRoot + , aborted = false + ; + + // If no callbacks were given we will use a streaming interface + if (isUndefined(callback1)) { + var api = require('./stream-api')(); + stream = api.stream; + callback1 = api.processEntry; + callback2 = api.done; + handleError = api.handleError; + handleFatalError = api.handleFatalError; + + stream.on('close', function () { aborted = true; }); + } else { + handleError = function (err) { errors.push(err); }; + handleFatalError = function (err) { + handleError(err); + allProcessed(errors, null); + }; + } + + if (isUndefined(opts)){ + handleFatalError(new Error ( + 'Need to pass at least one argument: opts! \n' + + 'https://github.com/thlorenz/readdirp#options' + ) + ); + return stream; + } + + opts.root = opts.root || '.'; + opts.fileFilter = opts.fileFilter || function() { return true; }; + opts.directoryFilter = opts.directoryFilter || function() { return true; }; + opts.depth = typeof opts.depth === 'undefined' ? 999999999 : opts.depth; + + if (isUndefined(callback2)) { + fileProcessed = function() { }; + allProcessed = callback1; + } else { + fileProcessed = callback1; + allProcessed = callback2; + } + + function normalizeFilter (filter) { + + if (isUndefined(filter)) return undefined; + + function isNegated (filters) { + + function negated(f) { + return f.indexOf('!') === 0; + } + + var some = filters.some(negated); + if (!some) { + return false; + } else { + if (filters.every(negated)) { + return true; + } else { + // if we detect illegal filters, bail out immediately + throw new Error( + 'Cannot mix negated with non negated glob filters: ' + filters + '\n' + + 'https://github.com/thlorenz/readdirp#filters' + ); + } + } + } + + // Turn all filters into a function + if (isFunction(filter)) { + + return filter; + + } else if (isString(filter)) { + + return function (entryInfo) { + return minimatch(entryInfo.name, filter.trim()); + }; + + } else if (filter && Array.isArray(filter)) { + + if (filter) filter = filter.map(function (f) { + return f.trim(); + }); + + return isNegated(filter) ? + // use AND to concat multiple negated filters + function (entryInfo) { + return filter.every(function (f) { + return minimatch(entryInfo.name, f); + }); + } + : + // use OR to concat multiple inclusive filters + function (entryInfo) { + return filter.some(function (f) { + return minimatch(entryInfo.name, f); + }); + }; + } + } + + function processDir(currentDir, entries, callProcessed) { + if (aborted) return; + var total = entries.length + , processed = 0 + , entryInfos = [] + ; + + fs.realpath(currentDir, function(err, realCurrentDir) { + if (aborted) return; + + var relDir = path.relative(realRoot, realCurrentDir); + + if (entries.length === 0) { + callProcessed([]); + } else { + entries.forEach(function (entry) { + + var fullPath = path.join(realCurrentDir, entry), + relPath = path.join(relDir, entry); + + fs.stat(fullPath, function (err, stat) { + if (err) { + handleError(err); + } else { + entryInfos.push({ + name : entry + , path : relPath // relative to root + , fullPath : fullPath + + , parentDir : relDir // relative to root + , fullParentDir : realCurrentDir + + , stat : stat + }); + } + processed++; + if (processed === total) callProcessed(entryInfos); + }); + }); + } + }); + } + + function readdirRec(currentDir, depth, callCurrentDirProcessed) { + if (aborted) return; + + fs.readdir(currentDir, function (err, entries) { + if (err) { + handleError(err); + callCurrentDirProcessed(); + return; + } + + processDir(currentDir, entries, function(entryInfos) { + + var subdirs = entryInfos + .filter(function (ei) { return ei.stat.isDirectory() && opts.directoryFilter(ei); }); + + subdirs.forEach(function (di) { + readdirResult.directories.push(di); + }); + + entryInfos + .filter(function(ei) { return ei.stat.isFile() && opts.fileFilter(ei); }) + .forEach(function (fi) { + fileProcessed(fi); + readdirResult.files.push(fi); + }); + + var pendingSubdirs = subdirs.length; + + // Be done if no more subfolders exist or we reached the maximum desired depth + if(pendingSubdirs === 0 || depth === opts.depth) { + callCurrentDirProcessed(); + } else { + // recurse into subdirs, keeping track of which ones are done + // and call back once all are processed + subdirs.forEach(function (subdir) { + readdirRec(subdir.fullPath, depth + 1, function () { + pendingSubdirs = pendingSubdirs - 1; + if(pendingSubdirs === 0) { + callCurrentDirProcessed(); + } + }); + }); + } + }); + }); + } + + // Validate and normalize filters + try { + opts.fileFilter = normalizeFilter(opts.fileFilter); + opts.directoryFilter = normalizeFilter(opts.directoryFilter); + } catch (err) { + // if we detect illegal filters, bail out immediately + handleFatalError(err); + return stream; + } + + // If filters were valid get on with the show + fs.realpath(opts.root, function(err, res) { + + realRoot = res; + readdirRec(opts.root, 0, function () { + // All errors are collected into the errors array + if (errors.length > 0) { + allProcessed(errors, readdirResult); + } else { + allProcessed(null, readdirResult); + } + }); + }); + + return stream; +} + +module.exports = readdir; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js new file mode 100644 index 0000000..1cfc616 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js @@ -0,0 +1,86 @@ +var Stream = require('stream'); + +function createStreamAPI () { + var stream + , processEntry + , done + , handleError + , handleFatalError + , paused = true + , controlled = false + , buffer = [] + , closed = false + ; + + stream = new Stream(); + stream.writable = false; + stream.readable = true; + + stream.pause = function () { + controlled = true; + paused = true; + }; + + stream.resume = function () { + controlled = true; + paused = false; + + // emit all buffered entries, errors and ends + while (!paused && buffer.length) { + var msg = buffer.shift(); + this.emit(msg.type, msg.data); + } + }; + + stream.destroy = function () { + closed = true; + stream.readable = false; + stream.emit('close'); + }; + + // called for each entry + processEntry = function (entry) { + if (closed) return; + return paused ? buffer.push({ type: 'data', data: entry }) : stream.emit('data', entry); + }; + + // called with all found entries when directory walk finished + done = function (err, entries) { + if (closed) return; + + // since we already emitted each entry and all non fatal errors + // all we need to do here is to signal that we are done + stream.emit('end'); + }; + + handleError = function (err) { + if (closed) return; + return paused ? buffer.push({ type: 'warn', data: err }) : stream.emit('warn', err); + }; + + handleFatalError = function (err) { + if (closed) return; + return paused ? buffer.push({ type: 'error', data: err }) : stream.emit('error', err); + }; + + // Allow stream to be returned and handlers to be attached and/or stream to be piped before emitting messages + // Otherwise we may loose data/errors that are emitted immediately + process.nextTick(function () { + if (closed) return; + + // In case was controlled (paused/resumed) manually, we don't interfer + // see https://github.com/thlorenz/readdirp/commit/ab7ff8561d73fca82c2ce7eb4ce9f7f5caf48b55#commitcomment-1964530 + if (controlled) return; + stream.resume(); + }); + + return { + stream : stream + , processEntry : processEntry + , done : done + , handleError : handleError + , handleFatalError : handleFatalError + }; +} + +module.exports = createStreamAPI; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file1.ext1 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file2.ext2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file2.ext2 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file3.ext3 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file3.ext3 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_subdir1/root1_dir1_subdir1_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_subdir1/root1_dir1_subdir1_file1.ext1 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file1.ext1 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file2.ext2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file2.ext2 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file1.ext1 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file2.ext2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file2.ext2 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file3.ext3 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file3.ext3 new file mode 100644 index 0000000..e69de29 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js new file mode 100644 index 0000000..261c5f6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js @@ -0,0 +1,215 @@ +/*jshint asi:true */ + +var test = require('tap').test + , path = require('path') + , fs = require('fs') + , util = require('util') + , Stream = require('stream') + , through = require('through') + , streamapi = require('../stream-api') + , readdirp = require('..') + , root = path.join(__dirname, 'bed') + , totalDirs = 6 + , totalFiles = 12 + , ext1Files = 4 + , ext2Files = 3 + , ext3Files = 2 + ; + +// see test/readdirp.js for test bed layout + +function opts (extend) { + var o = { root: root }; + + if (extend) { + for (var prop in extend) { + o[prop] = extend[prop]; + } + } + return o; +} + +function capture () { + var result = { entries: [], errors: [], ended: false } + , dst = new Stream(); + + dst.writable = true; + dst.readable = true; + + dst.write = function (entry) { + result.entries.push(entry); + } + + dst.end = function () { + result.ended = true; + dst.emit('data', result); + dst.emit('end'); + } + + return dst; +} + +test('\nintegrated', function (t) { + t.test('\n# reading root without filter', function (t) { + t.plan(2); + readdirp(opts()) + .on('error', function (err) { + t.fail('should not throw error', err); + }) + .pipe(capture()) + .pipe(through( + function (result) { + t.equals(result.entries.length, totalFiles, 'emits all files'); + t.ok(result.ended, 'ends stream'); + t.end(); + } + )); + }) + + t.test('\n# normal: ["*.ext1", "*.ext3"]', function (t) { + t.plan(2); + + readdirp(opts( { fileFilter: [ '*.ext1', '*.ext3' ] } )) + .on('error', function (err) { + t.fail('should not throw error', err); + }) + .pipe(capture()) + .pipe(through( + function (result) { + t.equals(result.entries.length, ext1Files + ext3Files, 'all ext1 and ext3 files'); + t.ok(result.ended, 'ends stream'); + t.end(); + } + )) + }) + + t.test('\n# negated: ["!*.ext1", "!*.ext3"]', function (t) { + t.plan(2); + + readdirp(opts( { fileFilter: [ '!*.ext1', '!*.ext3' ] } )) + .on('error', function (err) { + t.fail('should not throw error', err); + }) + .pipe(capture()) + .pipe(through( + function (result) { + t.equals(result.entries.length, totalFiles - ext1Files - ext3Files, 'all but ext1 and ext3 files'); + t.ok(result.ended, 'ends stream'); + t.end(); + } + )) + }) + + t.test('\n# no options given', function (t) { + t.plan(1); + readdirp() + .on('error', function (err) { + t.similar(err.toString() , /Need to pass at least one argument/ , 'emits meaningful error'); + t.end(); + }) + }) + + t.test('\n# mixed: ["*.ext1", "!*.ext3"]', function (t) { + t.plan(1); + + readdirp(opts( { fileFilter: [ '*.ext1', '!*.ext3' ] } )) + .on('error', function (err) { + t.similar(err.toString() , /Cannot mix negated with non negated glob filters/ , 'emits meaningful error'); + t.end(); + }) + }) +}) + + +test('\napi separately', function (t) { + + t.test('\n# handleError', function (t) { + t.plan(1); + + var api = streamapi() + , warning = new Error('some file caused problems'); + + api.stream + .on('warn', function (err) { + t.equals(err, warning, 'warns with the handled error'); + }) + api.handleError(warning); + }) + + t.test('\n# when stream is paused and then resumed', function (t) { + t.plan(6); + var api = streamapi() + , resumed = false + , fatalError = new Error('fatal!') + , nonfatalError = new Error('nonfatal!') + , processedData = 'some data' + ; + + api.stream + .on('warn', function (err) { + t.equals(err, nonfatalError, 'emits the buffered warning'); + t.ok(resumed, 'emits warning only after it was resumed'); + }) + .on('error', function (err) { + t.equals(err, fatalError, 'emits the buffered fatal error'); + t.ok(resumed, 'emits errors only after it was resumed'); + }) + .on('data', function (data) { + t.equals(data, processedData, 'emits the buffered data'); + t.ok(resumed, 'emits data only after it was resumed'); + }) + .pause() + + api.processEntry(processedData); + api.handleError(nonfatalError); + api.handleFatalError(fatalError); + + process.nextTick(function () { + resumed = true; + api.stream.resume(); + }) + }) + + t.test('\n# when a stream is destroyed, it emits "closed", but no longer emits "data", "warn" and "error"', function (t) { + t.plan(6) + var api = streamapi() + , destroyed = false + , fatalError = new Error('fatal!') + , nonfatalError = new Error('nonfatal!') + , processedData = 'some data' + + var stream = api.stream + .on('warn', function (err) { + t.notOk(destroyed, 'emits warning until destroyed'); + }) + .on('error', function (err) { + t.notOk(destroyed, 'emits errors until destroyed'); + }) + .on('data', function (data) { + t.notOk(destroyed, 'emits data until destroyed'); + }) + .on('close', function () { + t.ok(destroyed, 'emits close when stream is destroyed'); + }) + + + api.processEntry(processedData); + api.handleError(nonfatalError); + api.handleFatalError(fatalError); + + process.nextTick(function () { + destroyed = true + stream.destroy() + + t.notOk(stream.readable, 'stream is no longer readable after it is destroyed') + + api.processEntry(processedData); + api.handleError(nonfatalError); + api.handleFatalError(fatalError); + + process.nextTick(function () { + t.pass('emits no more data, warn or error events after it was destroyed') + }) + }) + }) +}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js new file mode 100644 index 0000000..f3edb52 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js @@ -0,0 +1,252 @@ +/*jshint asi:true */ + +var test = require('tap').test + , path = require('path') + , fs = require('fs') + , util = require('util') + , readdirp = require('../readdirp.js') + , root = path.join(__dirname, '../test/bed') + , totalDirs = 6 + , totalFiles = 12 + , ext1Files = 4 + , ext2Files = 3 + , ext3Files = 2 + , rootDir2Files = 2 + , nameHasLength9Dirs = 2 + , depth1Files = 8 + , depth0Files = 3 + ; + +/* +Structure of test bed: + . + ├── root_dir1 + │   ├── root_dir1_file1.ext1 + │   ├── root_dir1_file2.ext2 + │   ├── root_dir1_file3.ext3 + │   ├── root_dir1_subdir1 + │   │   └── root1_dir1_subdir1_file1.ext1 + │   └── root_dir1_subdir2 + │   └── .gitignore + ├── root_dir2 + │   ├── root_dir2_file1.ext1 + │   ├── root_dir2_file2.ext2 + │   ├── root_dir2_subdir1 + │   │   └── .gitignore + │   └── root_dir2_subdir2 + │   └── .gitignore + ├── root_file1.ext1 + ├── root_file2.ext2 + └── root_file3.ext3 + + 6 directories, 13 files +*/ + +// console.log('\033[2J'); // clear console + +function opts (extend) { + var o = { root: root }; + + if (extend) { + for (var prop in extend) { + o[prop] = extend[prop]; + } + } + return o; +} + +test('\nreading root without filter', function (t) { + t.plan(2); + readdirp(opts(), function (err, res) { + t.equals(res.directories.length, totalDirs, 'all directories'); + t.equals(res.files.length, totalFiles, 'all files'); + t.end(); + }) +}) + +test('\nreading root using glob filter', function (t) { + // normal + t.test('\n# "*.ext1"', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: '*.ext1' } ), function (err, res) { + t.equals(res.files.length, ext1Files, 'all ext1 files'); + t.end(); + }) + }) + t.test('\n# ["*.ext1", "*.ext3"]', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: [ '*.ext1', '*.ext3' ] } ), function (err, res) { + t.equals(res.files.length, ext1Files + ext3Files, 'all ext1 and ext3 files'); + t.end(); + }) + }) + t.test('\n# "root_dir1"', function (t) { + t.plan(1); + readdirp(opts( { directoryFilter: 'root_dir1' }), function (err, res) { + t.equals(res.directories.length, 1, 'one directory'); + t.end(); + }) + }) + t.test('\n# ["root_dir1", "*dir1_subdir1"]', function (t) { + t.plan(1); + readdirp(opts( { directoryFilter: [ 'root_dir1', '*dir1_subdir1' ]}), function (err, res) { + t.equals(res.directories.length, 2, 'two directories'); + t.end(); + }) + }) + + t.test('\n# negated: "!*.ext1"', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: '!*.ext1' } ), function (err, res) { + t.equals(res.files.length, totalFiles - ext1Files, 'all but ext1 files'); + t.end(); + }) + }) + t.test('\n# negated: ["!*.ext1", "!*.ext3"]', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: [ '!*.ext1', '!*.ext3' ] } ), function (err, res) { + t.equals(res.files.length, totalFiles - ext1Files - ext3Files, 'all but ext1 and ext3 files'); + t.end(); + }) + }) + + t.test('\n# mixed: ["*.ext1", "!*.ext3"]', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: [ '*.ext1', '!*.ext3' ] } ), function (err, res) { + t.similar(err[0].toString(), /Cannot mix negated with non negated glob filters/, 'returns meaningfull error'); + t.end(); + }) + }) + + t.test('\n# leading and trailing spaces: [" *.ext1", "*.ext3 "]', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: [ ' *.ext1', '*.ext3 ' ] } ), function (err, res) { + t.equals(res.files.length, ext1Files + ext3Files, 'all ext1 and ext3 files'); + t.end(); + }) + }) + t.test('\n# leading and trailing spaces: [" !*.ext1", " !*.ext3 "]', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: [ ' !*.ext1', ' !*.ext3' ] } ), function (err, res) { + t.equals(res.files.length, totalFiles - ext1Files - ext3Files, 'all but ext1 and ext3 files'); + t.end(); + }) + }) + + t.test('\n# ** glob pattern', function (t) { + t.plan(1); + readdirp(opts( { fileFilter: '**/*.ext1' } ), function (err, res) { + t.equals(res.files.length, ext1Files, 'ignores ** in **/*.ext1 -> only *.ext1 files'); + t.end(); + }) + }) +}) + +test('\n\nreading root using function filter', function (t) { + t.test('\n# file filter -> "contains root_dir2"', function (t) { + t.plan(1); + readdirp( + opts( { fileFilter: function (fi) { return fi.name.indexOf('root_dir2') >= 0; } }) + , function (err, res) { + t.equals(res.files.length, rootDir2Files, 'all rootDir2Files'); + t.end(); + } + ) + }) + + t.test('\n# directory filter -> "name has length 9"', function (t) { + t.plan(1); + readdirp( + opts( { directoryFilter: function (di) { return di.name.length === 9; } }) + , function (err, res) { + t.equals(res.directories.length, nameHasLength9Dirs, 'all all dirs with name length 9'); + t.end(); + } + ) + }) +}) + +test('\nreading root specifying maximum depth', function (t) { + t.test('\n# depth 1', function (t) { + t.plan(1); + readdirp(opts( { depth: 1 } ), function (err, res) { + t.equals(res.files.length, depth1Files, 'does not return files at depth 2'); + }) + }) +}) + +test('\nreading root with no recursion', function (t) { + t.test('\n# depth 0', function (t) { + t.plan(1); + readdirp(opts( { depth: 0 } ), function (err, res) { + t.equals(res.files.length, depth0Files, 'does not return files at depth 0'); + }) + }) +}) + +test('\nprogress callbacks', function (t) { + t.plan(2); + + var pluckName = function(fi) { return fi.name; } + , processedFiles = []; + + readdirp( + opts() + , function(fi) { + processedFiles.push(fi); + } + , function (err, res) { + t.equals(processedFiles.length, res.files.length, 'calls back for each file processed'); + t.deepEquals(processedFiles.map(pluckName).sort(),res.files.map(pluckName).sort(), 'same file names'); + t.end(); + } + ) +}) + +test('resolving of name, full and relative paths', function (t) { + var expected = { + name : 'root_dir1_file1.ext1' + , parentDirName : 'root_dir1' + , path : 'root_dir1/root_dir1_file1.ext1' + , fullPath : 'test/bed/root_dir1/root_dir1_file1.ext1' + } + , opts = [ + { root: './bed' , prefix: '' } + , { root: './bed/' , prefix: '' } + , { root: 'bed' , prefix: '' } + , { root: 'bed/' , prefix: '' } + , { root: '../test/bed/' , prefix: '' } + , { root: '.' , prefix: 'bed' } + ] + t.plan(opts.length); + + opts.forEach(function (op) { + op.fileFilter = 'root_dir1_file1.ext1'; + + t.test('\n' + util.inspect(op), function (t) { + t.plan(4); + + readdirp (op, function(err, res) { + t.equals(res.files[0].name, expected.name, 'correct name'); + t.equals(res.files[0].path, path.join(op.prefix, expected.path), 'correct path'); + }) + + fs.realpath(op.root, function(err, fullRoot) { + readdirp (op, function(err, res) { + t.equals( + res.files[0].fullParentDir + , path.join(fullRoot, op.prefix, expected.parentDirName) + , 'correct parentDir' + ); + t.equals( + res.files[0].fullPath + , path.join(fullRoot, op.prefix, expected.parentDirName, expected.name) + , 'correct fullPath' + ); + }) + }) + }) + }) +}) + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json new file mode 100644 index 0000000..3e7d5db --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json @@ -0,0 +1,39 @@ +{ + "name": "monocle", + "version": "0.1.48", + "description": "a tool for watching directories for file changes", + "main": "monocle.js", + "directories": { + "test": "test" + }, + "dependencies": { + "readdirp": "~0.2.3" + }, + "devDependencies": { + "mocha": "1.8.1" + }, + "scripts": { + "test": "mocha test -R spec -t 2000" + }, + "repository": { + "type": "git", + "url": "https://github.com/samccone/monocle.git" + }, + "bugs": { + "url": "https://github.com/samccone/monocle/issues" + }, + "keywords": [ + "watch", + "filesystem", + "folders", + "fs" + ], + "author": { + "name": "Sam Saccone" + }, + "license": "BSD", + "readme": "[![Build Status](https://travis-ci.org/samccone/monocle.png?branch=master)](https://travis-ci.org/samccone/monocle)\n\n# Monocle -- a tool for watching things\n\n[![logo](https://raw.github.com/samccone/monocle/master/logo.png)](https://raw.github.com/samccone/monocle/master/logo.png)\n\nHave you ever wanted to watch a folder and all of its files/nested folders for changes. well now you can!\n\n## Installation\n\n```\nnpm install monocle\n```\n\n## Usage\n\n### Watch a directory:\n\n```js\nvar monocle = require('monocle')()\nmonocle.watchDirectory({\n root: ,\n fileFilter: ,\n directoryFilter: ,\n listener: fn(fs.stat+ object), //triggered on file change / addition\n complete: //file watching all set up\n});\n```\n\nThe listener will recive an object with the following\n\n```js\n name: ,\n path: ,\n fullPath: ,\n parentDir: ,\n fullParentDir: ,\n stat: \n```\n\n[fs.stats](http://nodejs.org/api/fs.html#fs_class_fs_stats)\n\nWhen a new file is added to the directoy it triggers a file change and thus will be passed to your specified listener.\n\nThe two filters are passed through to `readdirp`. More documentation can be found [here](https://github.com/thlorenz/readdirp#filters)\n\n### Watch a list of files:\n\n```js\nMonocle.watchFiles({\n files: [], //path of file(s)\n listener: , //triggered on file / addition\n complete: //file watching all set up\n});\n```\n\n## Why not just use fs.watch ?\n\n - file watching is really bad cross platforms in node\n - you need to be smart when using fs.watch as compared to fs.watchFile\n - Monocle takes care of this logic for you!\n - windows systems use fs.watch\n - osx and linux uses fs.watchFile\n\n## License\n\nBSD\n", + "readmeFilename": "README.md", + "_id": "monocle@0.1.48", + "_from": "monocle@0.1.48" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt new file mode 100644 index 0000000..8e9c665 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt @@ -0,0 +1 @@ +1368234683085 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt new file mode 100644 index 0000000..f1937ff --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt @@ -0,0 +1 @@ +1368234683637 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt new file mode 100644 index 0000000..1f5a206 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt @@ -0,0 +1 @@ +1368234684038 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt new file mode 100644 index 0000000..fe02e96 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt @@ -0,0 +1 @@ +1361300019687 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js new file mode 100644 index 0000000..08c3473 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js @@ -0,0 +1 @@ +1361300019993 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt new file mode 100644 index 0000000..b26921e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt @@ -0,0 +1 @@ +1361300019841 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat new file mode 100644 index 0000000..a358cce --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat @@ -0,0 +1,31 @@ +1361223315286 +1361223316535 +1361223345247 +1361223392495 +1361223394521 +1361223401023 +1361223431160 +1361223432160 +1361223437177 +1361223438592 +1361223466645 +1361223467719 +1361223594858 +1361223614308 +1361223643429 +1361223647989 +1361223649211 +1361223650605 +1361223651566 +1361223663051 +1361223664917 +1361223665860 +1361223777758 +1361223779174 +1361223780023 +1361223780769 +1361223783122 +1361223784141 +1361223791305 +1361223795551 +1361223797217 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js new file mode 100644 index 0000000..d65d57b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js @@ -0,0 +1,180 @@ +var fs = require('fs'); +var assert = require('assert'); +var Monocle = require('../monocle'); + +// +// setup +// +var monocle = null; +var sample_dir = __dirname + '/sample_files'; +before(function(){ monocle = Monocle(); }); +after(function() { + fs.unlinkSync(__dirname+"/sample_files/creation.txt"); + fs.unlinkSync(__dirname+"/sample_files/creation2.txt"); + fs.unlinkSync(__dirname+"/sample_files/nestedDir/creation3.txt"); +}); +// +// file change tests +// + +describe("file changes", function() { + + it("should detect a change", function(complete) { + monocle.watchDirectory({ + root: sample_dir, + listener: function(f){ cb_helper('foo.txt', f, complete); }, + complete: function(){ complete_helper("/sample_files/foo.txt"); } + }); + }); + + it("should detect a change in a nested dir file", function(complete) { + monocle.watchDirectory({ + root: sample_dir, + listener: function(f) { cb_helper('servent.txt', f, complete); }, + complete: function() { complete_helper("/sample_files/nestedDir/servent.txt"); } + }); + }); + + it("should detect a change", function(complete) { + monocle.watchDirectory({ + root: sample_dir, + listener: function(f) { cb_helper('longbow.js', f, complete); }, + complete: function() { complete_helper('/sample_files/longbow.js'); } + }); + }); + +}); + +// +// file add tests +// + +describe("file added", function() { + it("should detect a file added", function(complete) { + monocle.watchDirectory({ + root: sample_dir, + listener: function(f) { + cb_helper("creation.txt", f, complete) + }, + complete: function() { + complete_helper('/sample_files/creation.txt'); + } + }); + }); + + it("should detect another file added", function(complete) { + monocle.watchDirectory({ + root: sample_dir, + listener: function(f) { + cb_helper("creation2.txt", f, complete); + }, + complete: function() { + complete_helper('/sample_files/creation2.txt'); + } + }); + }); + + it("should detect another file added in a nested folder", function(complete) { + monocle.watchDirectory({ + root: sample_dir, + listener: function(f) { + cb_helper("creation3.txt", f, complete); + }, + complete: function() { + complete_helper('/sample_files/nestedDir/creation3.txt'); + } + }); + }); +}); + + +// +// watch an array of files +// +describe("files watched", function() { + it("should detect a file changed of multiple", function(complete) { + complete_helper('/sample_files/creation.txt'); + complete_helper('/sample_files/creation2.txt'); + complete_helper('/sample_files/creation3.txt'); + + monocle.watchFiles({ + files: [__dirname+"/sample_files/creation.txt", __dirname+"/sample_files/creation2.txt"], + listener: function(f) { + cb_helper("creation2.txt", f, complete) + }, + complete: function() { + complete_helper('/sample_files/creation2.txt'); + } + }); + }); + + it("should detect a file changed (delayed)", function(complete) { + complete_helper('/sample_files/creation3.txt'); + monocle.watchFiles({ + files: [__dirname+"/sample_files/creation3.txt"], + listener: function(f) { + setTimeout(function() { + cb_helper('creation3.txt', f, complete); + }, 400); + }, + complete: function() { + complete_helper('/sample_files/creation3.txt'); + } + }); + }); + + + + it("should detect a file changed (short delayed)", function(complete) { + complete_helper('/sample_files/creation4.txt'); + monocle.watchFiles({ + files: [__dirname+"/sample_files/creation4.txt"], + listener: function(f) { + setTimeout(function() { + cb_helper('creation4.txt', f, complete); + }, 100); + }, + complete: function() { + complete_helper('/sample_files/creation4.txt'); + } + }); + }); + + it("should detect a file changed", function(complete) { + complete_helper('/sample_files/creation.txt'); + monocle.watchFiles({ + files: [__dirname+"/sample_files/creation.txt"], + listener: function(f) { + cb_helper("creation.txt", f, complete) + }, + complete: function() { + complete_helper('/sample_files/creation.txt'); + } + }); + }); + + it("should not bomb when no callback is passed", function(complete) { + complete_helper('/sample_files/creation5.txt'); + monocle.watchFiles({ + files: [__dirname+"/sample_files/creation5.txt"], + complete: function() { + complete_helper('/sample_files/creation5.txt'); + } + }); + setTimeout(function() { + complete(); + }, 300) + }); +}); + +// +// helpers +// + +function cb_helper(name, file, done){ + if (file.name === name) { monocle.unwatchAll(); done(); } +} + +function complete_helper(path){ + fs.writeFile(__dirname + path, (new Date).getTime() + "\n"); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore new file mode 100644 index 0000000..a72b52e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore @@ -0,0 +1,15 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +npm-debug.log +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml new file mode 100644 index 0000000..baa0031 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +node_js: + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md new file mode 100644 index 0000000..a1dae66 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md @@ -0,0 +1,138 @@ +[![Build Status](https://travis-ci.org/ForbesLindesay/transformers.png?branch=master)](https://travis-ci.org/ForbesLindesay/transformers) +# transformers + + String/Data transformations for use in templating libraries, static site generators and web frameworks. This gathers the most useful transformations you can apply to text or data into one library with a consistent API. Transformations can be pretty much anything but most are either compilers or templating engines. + +## Supported transforms + + To use each of these transforms you will also need to install the associated npm module for that transformer. + +### Template engines + + - [atpl](http://documentup.com/soywiz/atpl.js) - Compatible with twig templates + - [coffeecup](http://documentup.com/gradus/coffeecup) - pure coffee-script templates (fork of coffeekup) + - [dot](http://documentup.com/olado/doT) [(website)](https://github.com/Katahdin/dot-packer) - focused on speed + - [dust](http://documentup.com/akdubya/dustjs) [(website)](http://akdubya.github.com/dustjs/) - asyncronous templates + - [eco](http://documentup.com/sstephenson/eco) - Embedded CoffeeScript templates + - [ect](http://documentup.com/baryshev/ect) [(website)](http://ectjs.com/) - Embedded CoffeeScript templates + - [ejs](http://documentup.com/visionmedia/ejs) - Embedded JavaScript templates + - [haml](http://documentup.com/visionmedia/haml.js) [(website)](http://haml-lang.com/) - dry indented markup + - [haml-coffee](http://documentup.com/netzpirat/haml-coffee/) [(website)](http://haml-lang.com/) - haml with embedded CoffeeScript + - [handlebars](http://documentup.com/wycats/handlebars.js/) [(website)](http://handlebarsjs.com/) - extension of mustache templates + - [hogan](http://documentup.com/twitter/hogan.js) [(website)](http://twitter.github.com/hogan.js/) - Mustache templates + - [jade](http://documentup.com/visionmedia/jade) [(website)](http://jade-lang.com/) - robust, elegant, feature rich template engine + - [jazz](http://documentup.com/shinetech/jazz) + - [jqtpl](http://documentup.com/kof/jqtpl) [(website)](http://api.jquery.com/category/plugins/templates/) - extensible logic-less templates + - [JUST](http://documentup.com/baryshev/just) - EJS style template with some special syntax for layouts/partials etc. + - [liquor](http://documentup.com/chjj/liquor) - extended EJS with significant white space + - [mustache](http://documentup.com/janl/mustache.js) - logic less templates + - [QEJS](http://documentup.com/jepso/QEJS) - Promises + EJS for async templating + - [swig](http://documentup.com/paularmstrong/swig) [(website)](http://paularmstrong.github.com/swig/) - Django-like templating engine + - [templayed](http://documentup.com/archan937/templayed.js/) [(website)](http://archan937.github.com/templayed.js/) - Mustache focused on performance + - [toffee](http://documentup.com/malgorithms/toffee) - templating language based on coffeescript + - [underscore](http://documentup.com/documentcloud/underscore) [(website)](http://documentcloud.github.com/underscore/) + - [walrus](http://documentup.com/jeremyruppel/walrus) - A bolder kind of mustache + - [whiskers](http://documentup.com/gsf/whiskers.js/tree/) - logic-less focused on readability + +### Stylesheet Languages + + - [less](http://documentup.com/cloudhead/less.js) [(website)](http://lesscss.org/) - LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions. + - [stylus](http://documentup.com/learnboost/stylus) [(website)](http://learnboost.github.com/stylus/) - revolutionary CSS generator making braces optional + - [sass](http://documentup.com/visionmedia/sass.js) [(website)](http://sass-lang.com/) - Sassy CSS + +### Minifiers + + - [uglify-js](http://documentup.com/mishoo/UglifyJS2) - No need to install anything, just minifies/beautifies JavaScript + - [uglify-css](https://github.com/visionmedia/css) - No need to install anything, just minifies/beautifies CSS + - ugilify-json - No need to install anything, just minifies/beautifies JSON + +### Other + + - cdata - No need to install anything, just wrapps text in `` + - [coffee-script](http://coffeescript.org/) - `npm install coffee-script` + - [cson](https://github.com/bevry/cson) - coffee-script based JSON format + - markdown - You can use `marked`, `supermarked`, `markdown-js` or `markdown` + - [component-js](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}` + - [component-css](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}` + - [html2jade](http://documentup.com/donpark/html2jade) [(website)](http://html2jade.aaron-powell.com/) - `npm install html2jade` - Converts HTML back into jade + +Pull requests to add more transforms will always be accepted providing they are open-source, come with unit tests, and don't cause any of the tests to fail. + +## API + + The exported object `transformers` is a collection of named transformers. To access an individual transformer just do: + + ```javascript + var transformer = require('transformers')['transformer-name'] + ``` + +### Transformer + + The following options are given special meaning by `transformers`: + + - `filename` is set by transformers automatically if using the `renderFile` APIs. It is used if `cache` is enabled. + - `cache` if true, the template function will be cached where possible (templates are still updated if you provide new options, so this can be used in most live applications). + - `sudoSync` used internally to put some asyncronous transformers into "sudo syncronous" mode. Don't touch this. + - `minify` if set to true on a transformer that isn't a minifier, it will cause the output to be minified. e.g. `coffeeScript.renderSync(str, {minify: true})` will result in minified JavaScript. + +#### Transformer.engines + + Returns an array of engines that can be used to power this transformer. The first of these that's installed will be used for the transformation. + + To enable a transformation just take `[engine] = Transformer.engines[0]` and then do `npm install [engine]`. If `[engine]` is `.` there is no need to install an engine from npm to use the transformer. + +#### Transformer.render(str, options, cb) + + Tranform the string `str` using the `Transformer` with the provided options and call the callback `cb(err, res)`. + + If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise. + +#### Transformer.renderSync(str, options) + + Synchronous version of `Transformer.render` + +#### Transformer.renderFile(filename, options, cb) + + Reads the file at filename into `str` and sets `options.filename = filename` then calls `Transform.render(str, options, cb)`. + + If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise. + +#### Tranformer.renderFileSync(filename, options) + + Synchronous version of `Tranformer.renderFile` + +#### Transformer.outputFormat + + A string, one of: + + - `'xml'` + - `'css'` + - `'js'` + - `'json'` + - `'text'` + +Adding to this list will **not** result in a major version change, so you should handle unexpected types gracefully (I'd suggest default to assuming `'text'`). + +#### Transformer.sync + + `true` if the transformer can be used syncronously, `false` otherwise. + +## Libraries that don't work synchronously + + The following transformations will always throw an exception if you attempt to run them synchronously: + + 1. dust + 2. qejs + 3. html2jade + +The following transformations sometimes throw an exception if run syncronously, typically they only throw an exception if you are doing something like including another file. If you are not doing the things that cause them to fail then they are consistently safe to use syncronously. + + - jade (only when using `then-jade` instead of `jade`) + - less (when `@import` is used with a url instead of a filename) + - jazz (When one of the functions passed as locals is asyncronous) + +The following libraries look like they might sometimes throw exceptions when used syncronously (if you read the source) but they never actually do so: + + - just + - ect + - stylus \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md new file mode 100644 index 0000000..096b9f9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md @@ -0,0 +1,69 @@ +## 2.0.1 - 2013-04-22 + + - Fix global leak of `exportscoffeeScript` (test still fails because `jade` requires an out of date version of `transformers`) + +## 2.0.0 - 2013-03-31 + + - Add `minify` support to all transformers + - Bundle minifiers in package + +## 1.8.3 - 2013-03-19 + + - Update promise dependency + +## 1.8.2 - 2013-02-10 + + - Support `sourceURLs` in **component** + +## 1.8.1 - 2013-02-10 + + - Add travis-ci + - FIX **toffee** support which was broken by their latest update + - FIX lookup paths for **component** weren't set so you couldn't build components with dependancies + +## 1.8.0 - 2013-01-30 + + - **highlight** (needs tests) + +## 1.7.0 - 2013-01-30 + + - **component-js** + - **component-css** + - **html2jade** - must be `v0.0.7` because of a bug in later versions + - Much more extensive tests + +## 1.6.0 - 2013-01-29 + + - **uglify-css** + - **uglify-json** + - Rename **uglify** to **uglify-js** + +## 1.5.0 - 2013-01-27 + + - **dot** + +## 1.4.0 - 2013-01-25 + + - Support sync `@import` statements in **less** + - Report real errors from **less** (rather than objects) + +## 1.3.0 - 2013-01-25 + + - **templayed** + - **plates** + +## 1.2.1 - 2013-01-09 + + - make **markdown** work when using **markdown** as the engine (**marked** is the recommended engine). + +## 1.2.0 - 2013-01-09 + + - **js** (pass through) + - **css** (pass through) + - rename **coffee-script** from **coffee** to **coffee-script** and add **coffee** as an alias + +## 1.1.0 - 2013-01-08 + + - **coffeecup** + - **cson** + - FIX: disabling **dust** cache \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js new file mode 100644 index 0000000..8663117 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js @@ -0,0 +1,162 @@ +var Promise = require('promise'); +var fs = require('fs'); +var path = require('path'); +var normalize = path.normalize; + + +Promise.prototype.nodeify = function (cb) { + if (typeof cb === 'function') { + this.then(function (res) { process.nextTick(function () { cb(null, res); }); }, + function (err) { process.nextTick(function () { cb(err); }); }); + return undefined; + } else { + return this; + } +} + +var minifiers = {}; + +module.exports = Transformer; +function Transformer(obj) { + this.name = obj.name; + this.engines = obj.engines; + this.isBinary = obj.isBinary || false; + this.isMinifier = obj.isMinifier || false; + this.outputFormat = obj.outputFormat; + this._cache = {}; + if (typeof obj.async === 'function') { + this._renderAsync = obj.async; + this.sudoSync = obj.sudoSync || false; + } + if (typeof obj.sync === 'function') { + this._renderSync = obj.sync; + this.sync = true; + } else { + this.sync = obj.sudoSync || false; + } + + if (this.isMinifier) + minifiers[this.outputFormat] = this; + else { + var minifier = minifiers[this.outputFormat]; + if (minifier) { + this.minify = function(str, options) { + if (options && options.minify) + return minifier.renderSync(str, typeof options.minify === 'object' && options.minify || {}); + return str; + } + } + } +} + +Transformer.prototype.cache = function (options, data) { + if (options.cache && options.filename) { + if (data) return this.cache[options.filename] = data; + else return this.cache[options.filename]; + } else { + return data; + } +}; +Transformer.prototype.loadModule = function () { + if (this.engine) return this.engine; + for (var i = 0; i < this.engines.length; i++) { + try { + var res = this.engines[i] === '.' ? null : (this.engine = require(this.engines[i])); + this.engineName = this.engines[i]; + return res; + } catch (ex) { + if (this.engines.length === 1) { + throw ex; + } + } + } + throw new Error('In order to apply the transform ' + this.name + ' you must install one of ' + this.engines.map(function (e) { return '"' + e + '"'; }).join()); +}; +Transformer.prototype.minify = function(str, options) { + return str; +} +Transformer.prototype.renderSync = function (str, options) { + options = options || {}; + options = clone(options); + this.loadModule(); + if (this._renderSync) { + return this.minify(this._renderSync((this.isBinary ? str : fixString(str)), options), options); + } else if (this.sudoSync) { + options.sudoSync = true; + var res, err; + this._renderAsync((this.isBinary ? str : fixString(str)), options, function (e, val) { + if (e) err = e; + else res = val; + }); + if (err) throw err; + else if (res != undefined) return this.minify(res, options); + else if (typeof this.sudoSync === 'string') throw new Error(this.sudoSync.replace(/FILENAME/g, options.filename || '')); + else throw new Error('There was a problem transforming ' + (options.filename || '') + ' syncronously using ' + this.name); + } else { + throw new Error(this.name + ' does not support transforming syncronously.'); + } +}; +Transformer.prototype.render = function (str, options, cb) { + options = options || {}; + var self = this; + return new Promise(function (resolve, reject) { + self.loadModule(); + if (self._renderAsync) { + self._renderAsync((self.isBinary ? str : fixString(str)), clone(options), function (err, val) { + if (err) reject(err); + else resolve(self.minify(val, options)); + }) + } else { + resolve(self.renderSync(str, options)); + } + }) + .nodeify(cb); +}; +Transformer.prototype.renderFile = function (path, options, cb) { + options = options || {}; + var self = this; + return new Promise(function (resolve, reject) { + options.filename = (path = normalize(path)); + if (self._cache[path]) + resolve(null); + else + fs.readFile(path, function (err, data) { + if (err) reject(err); + else resolve(data); + }) + }) + .then(function (str) { + return self.render(str, options); + }) + .nodeify(cb); +}; +Transformer.prototype.renderFileSync = function (path, options) { + options = options || {}; + options.filename = (path = normalize(path)); + return this.renderSync((this._cache[path] ? null : fs.readFileSync(path)), options); +}; +function fixString(str) { + if (str == null) return str; + //convert buffer to string + str = str.toString(); + // Strip UTF-8 BOM if it exists + str = (0xFEFF == str.charCodeAt(0) + ? str.substring(1) + : str); + //remove `\r` added by windows + return str.replace(/\r/g, ''); +} + +function clone(obj) { + if (Array.isArray(obj)) { + return obj.map(clone); + } else if (obj && typeof obj === 'object') { + var res = {}; + for (var key in obj) { + res[key] = clone(obj[key]); + } + return res; + } else { + return obj; + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js new file mode 100644 index 0000000..2ebeaa4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js @@ -0,0 +1,575 @@ +var dirname = require('path').dirname; +var Transformer = require('./shared'); + +/** + * minifiers must be first in order to be incorporated inside instances of respective output formats + */ +var uglifyJS = require('uglify-js'); +exports.uglify = exports.uglifyJS = exports['uglify-js'] = new Transformer({ + name: 'uglify-js', + engines: ['.'], + outputFormat: 'js', + isMinifier: true, + sync: function (str, options) { + options.fromString = true; + return this.cache(options) || this.cache(options, uglifyJS.minify(str, options).code); + } +}); +var uglifyCSS = require('css'); +exports.uglifyCSS = exports['uglify-css'] = new Transformer({ + name: 'uglify-css', + engines: ['.'], + outputFormat: 'css', + isMinifier: true, + sync: function (str, options) { + options.compress = options.compress != false && options.beautify != true; + return this.cache(options) || this.cache(options, uglifyCSS.stringify(uglifyCSS.parse(str), options)); + } +}); + +exports.uglifyJSON = exports['uglify-json'] = new Transformer({ + name: 'uglify-json', + engines: ['.'], + outputFormat: 'json', + isMinifier: true, + sync: function (str, options) { + return JSON.stringify(JSON.parse(str), null, options.beautify); + } +}); + + +/** + * Syncronous Templating Languages + */ + +function sync(str, options) { + var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); + return tmpl(options); +} + +exports.swig = new Transformer({ + name: 'swig', + engines: ['swig'], + outputFormat: 'xml', + sync: sync +}); + +exports.atpl = new Transformer({ + name: 'atpl', + engines: ['atpl'], + outputFormat: 'xml', + sync: function sync(str, options) { + var tmpl = this.cache(options); + if (!tmpl) { + var cInfo = {cache: options.cache, filename: options.filename}; + if (options.filename) { + delete options.filename; //atpl can't handle absolute windows file paths properly + } + tmpl = this.cache(cInfo, this.engine.compile(str, options)); + } + return tmpl(options); + } +}); + +exports.dot = new Transformer({ + name: 'dot', + engines: ['dot'], + outputFormat: 'xml', + sync: function sync(str, options) { + var tmpl = this.cache(options) || this.cache(options, this.engine.template(str)); + return tmpl(options); + } +}); + +exports.liquor = new Transformer({ + name: 'liquor', + engines: ['liquor'], + outputFormat: 'xml', + sync: sync +}); + +exports.ejs = new Transformer({ + name: 'ejs', + engines: ['ejs'], + outputFormat: 'xml', + sync: sync +}); + +exports.eco = new Transformer({ + name: 'eco', + engines: ['eco'], + outputFormat: 'xml', + sync: sync//N.B. eco's internal this.cache isn't quite right but this bypasses it +}); + +exports.jqtpl = new Transformer({ + name: 'jqtpl', + engines: ['jqtpl'], + outputFormat: 'xml', + sync: function (str, options) { + var engine = this.engine; + var key = (options.cache && options.filename) ? options.filename : '@'; + engine.compile(str, key); + var res = this.engine.render(key, options); + if (!(options.cache && options.filename)) { + delete engine.cache[key]; + } + this.cache(options, true); // caching handled internally + return res; + } +}); + +exports.haml = new Transformer({ + name: 'haml', + engines: ['hamljs'], + outputFormat: 'xml', + sync: sync +}); + +exports['haml-coffee'] = new Transformer({ + name: 'haml-coffee', + engines: ['haml-coffee'], + outputFormat: 'xml', + sync: sync +}); + +exports.whiskers = new Transformer({ + name: 'whiskers', + engines: ['whiskers'], + outputFormat: 'xml', + sync: sync +}); + +exports.hogan = new Transformer({ + name: 'hogan', + engines: ['hogan.js'], + outputFormat: 'xml', + sync: function(str, options){ + var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); + return tmpl.render(options, options.partials); + } +}); + +exports.handlebars = new Transformer({ + name: 'handlebars', + engines: ['handlebars'], + outputFormat: 'xml', + sync: function(str, options){ + for (var partial in options.partials) { + this.engine.registerPartial(partial, options.partials[partial]); + } + var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); + return tmpl(options); + } +}); + +exports.underscore = new Transformer({ + name: 'underscore', + engines: ['underscore'], + outputFormat: 'xml', + sync: function(str, options){ + var tmpl = this.cache(options) || this.cache(options, this.engine.template(str)); + return tmpl(options); + } +}); + +exports.walrus = new Transformer({ + name: 'walrus', + engines: ['walrus'], + outputFormat: 'xml', + sync: function(str, options){ + var tmpl = this.cache(options) || this.cache(options, this.engine.parse(str)); + return tmpl.compile(options); + } +}); + +exports.mustache = new Transformer({ + name: 'mustache', + engines: ['mustache'], + outputFormat: 'xml', + sync: function(str, options){ + var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str)); + return tmpl(options, options.partials); + } +}); + +exports.templayed = new Transformer({ + name: 'templayed', + engines: ['templayed'], + outputFormat: 'xml', + sync: function(str, options){ + var tmpl = this.cache(options) || this.cache(options, this.engine(str)); + return tmpl(options); + } +}); + +exports.plates = new Transformer({ + name: 'plates', + engines: ['plates'], + outputFormat: 'xml', + sync: function(str, options){ + str = this.cache(options) || this.cache(options, str); + return this.engine.bind(str, options, options.map); + } +}); + +exports.mote = new Transformer({ + name: 'mote', + engines: ['mote'], + outputFormat: 'xml', + sync: sync +}); + +exports.toffee = new Transformer({ + name: 'toffee', + engines: ['toffee'], + outputFormat: 'xml', + sync: function (str, options) { + var View = this.engine.view; + var v = this.cache(options) || this.cache(options, new View(str, options)); + var res = v.run(options, require('vm').createContext({})); + if (res[0]) throw res[0]; + else return res[1]; + } +}); + +exports.coffeekup = exports.coffeecup = new Transformer({ + name: 'coffeecup', + engines: ['coffeecup', 'coffeekup'], + outputFormat: 'xml', + sync: function (str, options) { + var compiled = this.cache(options) || this.cache(options, this.engine.compile(str, options)); + return compiled(options); + } +}); + +/** + * Asyncronous Templating Languages + */ + +exports.just = new Transformer({ + name: 'just', + engines: ['just'], + outputFormat: 'xml', + sudoSync: true, + async: function (str, options, cb) { + var JUST = this.engine; + var tmpl = this.cache(options) || this.cache(options, new JUST({ root: { page: str }})); + tmpl.render('page', options, cb); + } +}); + +exports.ect = new Transformer({ + name: 'ect', + engines: ['ect'], + outputFormat: 'xml', + sudoSync: true, // Always runs syncronously + async: function (str, options, cb) { + var ECT = this.engine; + var tmpl = this.cache(options) || this.cache(options, new ECT({ root: { page: str }})); + tmpl.render('page', options, cb); + } +}); + +exports.jade = new Transformer({ + name: 'jade', + engines: ['jade', 'then-jade'], + outputFormat: 'xml', + sudoSync: 'The jade file FILENAME could not be rendered syncronously. N.B. then-jade does not support syncronous rendering.', + async: function (str, options, cb) { + this.cache(options, true);//jade handles this.cache internally + this.engine.render(str, options, cb); + } +}) + +exports.dust = new Transformer({ + name: 'dust', + engines: ['dust', 'dustjs-linkedin'], + outputFormat: 'xml', + sudoSync: false, + async: function (str, options, cb) { + var ext = 'dust' + , views = '.'; + + if (options) { + if (options.ext) ext = options.ext; + if (options.views) views = options.views; + if (options.settings && options.settings.views) views = options.settings.views; + } + + this.engine.onLoad = function(path, callback){ + if ('' == extname(path)) path += '.' + ext; + if ('/' !== path[0]) path = views + '/' + path; + read(path, options, callback); + }; + + var tmpl = this.cache(options) || this.cache(options, this.engine.compileFn(str)); + if (options && !options.cache) this.engine.cache = {};//invalidate dust's internal cache + tmpl(options, cb); + } +}); + +exports.jazz = new Transformer({ + name: 'jazz', + engines: ['jazz'], + outputFormat: 'xml', + sudoSync: true, // except when an async function is passed to locals + async: function (str, options, cb) { + var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); + tmpl.eval(options, function(str){ + cb(null, str); + }); + } +}); + +exports.qejs = new Transformer({ + name: 'qejs', + engines: ['qejs'], + outputFormat: 'xml', + sudoSync: false, + async: function (str, options, cb) { + var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); + tmpl(options).done(function (result) { + cb(null, result); + }, function (err) { + cb(err); + }); + } +}); + +/** + * Stylsheet Languages + */ + +exports.less = new Transformer({ + name: 'less', + engines: ['less'], + outputFormat: 'css', + sudoSync: 'The less file FILENAME could not be rendered syncronously. This is usually because the file contains `@import url` statements.', + async: function (str, options, cb) { + var self = this; + if (self.cache(options)) return cb(null, self.cache(options)); + if (options.filename) { + options.paths = options.paths || [dirname(options.filename)]; + } + //If this.cache is enabled, compress by default + if (options.compress !== true && options.compress !== false) { + options.compress = options.cache || false; + } + if (options.sudoSync) { + options.syncImport = true; + } + var parser = new(this.engine.Parser)(options); + parser.parse(str, function (err, tree) { + try { + if (err) throw err; + var res = tree.toCSS(options); + self.cache(options, res); + cb(null, res); + } catch (ex) { + if (!(ex instanceof Error) && typeof ex === 'object') { + ex.filename = ex.filename || '"Unkown Source"'; + var err = new Error(self.engine.formatError(ex, options).replace(/^[^:]+:/, ''), ex.filename, ex.line); + err.name = ex.type; + ex = err; + } + console.log('\n\n' + ex.stack + '\n\n'); + return cb(ex); + } + }); + } +}); + +exports.styl = exports.stylus = new Transformer({ + name: 'stylus', + engines: ['stylus'], + outputFormat: 'css', + sudoSync: true,// always runs syncronously + async: function (str, options, cb) { + var self = this; + if (self.cache(options)) return cb(null, self.cache(options)); + if (options.filename) { + options.paths = options.paths || [dirname(options.filename)]; + } + //If this.cache is enabled, compress by default + if (options.compress !== true && options.compress !== false) { + options.compress = options.cache || false; + } + this.engine.render(str, options, function (err, res) { + if (err) return cb(err); + self.cache(options, res); + cb(null, res); + }); + } +}) + +exports.sass = new Transformer({ + name: 'sass', + engines: ['sass'], + outputFormat: 'css', + sync: function (str, options) { + try { + return this.cache(options) || this.cache(options, this.engine.render(str)); + } catch (ex) { + if (options.filename) ex.message += ' in ' + options.filename; + throw ex; + } + } +}); + +/** + * Miscelaneous + */ + +exports.md = exports.markdown = new Transformer({ + name: 'markdown', + engines: ['marked', 'supermarked', 'markdown-js', 'markdown'], + outputFormat: 'html', + sync: function (str, options) { + var arg = options; + if (this.engineName === 'markdown') arg = options.dialect; //even if undefined + return this.cache(options) || this.cache(options, this.engine.parse(str, arg)); + } +}); + + +exports.coffee = exports['coffee-script'] = exports.coffeescript = exports.coffeeScript = new Transformer({ + name: 'coffee-script', + engines: ['coffee-script'], + outputFormat: 'js', + sync: function (str, options) { + return this.cache(options) || this.cache(options, this.engine.compile(str, options)); + } +}); + +exports.cson = new Transformer({ + name: 'cson', + engines: ['cson'], + outputFormat: 'json', + sync: function (str, options) { + //todo: remove once https://github.com/rstacruz/js2coffee/pull/174 accepted & released + if (global.Narcissus) delete global.Narcissus; //prevent global leak + return this.cache(options) || this.cache(options, JSON.stringify(this.engine.parseSync(str))); + } +}); + +exports.cdata = new Transformer({ + name: 'cdata', + engines: ['.'],// `.` means "no dependency" + outputFormat: 'xml', + sync: function (str, options) { + return this.cache(options) || this.cache(options, ''); + } +}); + +exports.component = exports['component-js'] = new Transformer({ + name: 'component-js', + engines: ['component-builder'], + outputFormat: 'js', + async: function (str, options, cb) { + if (this.cache(options)) return this.cache(options); + var self = this; + var builder = new this.engine(dirname(options.filename)); + if (options.development) { + builder.development(); + } + if (options.sourceURLs === true || (options.sourceURLs !== false && options.development)) { + builder.addSourceURLs(); + } + var path = require('path'); + builder.paths = (options.paths || ['components']).map(function (p) { + if (path.resolve(p) === p) { + return p; + } else { + return path.join(dirname(options.filename), p); + } + }); + builder.build(function (err, obj) { + if (err) return cb(err); + else return cb(null, self.cache(options, obj.require + obj.js)); + }); + } +}); + +exports['component-css'] = new Transformer({ + name: 'component-css', + engines: ['component-builder'], + outputFormat: 'css', + async: function (str, options, cb) { + if (this.cache(options)) return this.cache(options); + var self = this; + var builder = new this.engine(dirname(options.filename)); + if (options.development) { + builder.development(); + } + if (options.sourceURLs === true || (options.sourceURLs !== false && options.development)) { + builder.addSourceURLs(); + } + var path = require('path'); + builder.paths = (options.paths || ['components']).map(function (p) { + if (path.resolve(p) === p) { + return p; + } else { + return path.join(dirname(options.filename), p); + } + }); + builder.build(function (err, obj) { + if (err) return cb(err); + else return cb(null, self.cache(options, obj.css)); + }); + } +}); + +exports['html2jade'] = new Transformer({ + name: 'html2jade', + engines: ['html2jade'], + outputFormat: 'jade', + async: function (str, options, cb) { + return this.cache(options) || this.cache(options, this.engine.convertHtml(str, options, cb)); + } +}); + +exports['highlight'] = new Transformer({ + name: 'highlight', + engines: ['highlight.js'], + outputFormat: 'xml', + sync: function (str, options, cb) { + if (this.cache(options)) return this.cache(options); + if (options.lang) { + try { + return this.cache(options, this.engine.highlight(options.lang, str).value); + } catch (ex) {} + } + if (options.auto || !options.lang) { + try { + return this.cache(options, this.engine.highlightAuto(str).value); + } catch (ex) {} + } + return this.cache(options, str); + } +}); + + +/** + * Marker transformers (they don't actually apply a transformation, but let you declare the 'outputFormat') + */ + +exports.css = new Transformer({ + name: 'css', + engines: ['.'],// `.` means "no dependency" + outputFormat: 'css', + sync: function (str, options) { + return this.cache(options) || this.cache(options, str); + } +}); + +exports.js = new Transformer({ + name: 'js', + engines: ['.'],// `.` means "no dependency" + outputFormat: 'js', + sync: function (str, options) { + return this.cache(options) || this.cache(options, str); + } +}); + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs new file mode 100644 index 0000000..27606b8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=`dirname "$0"` + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../uglify-js/bin/uglifyjs" "$@" + ret=$? +else + node "$basedir/../uglify-js/bin/uglifyjs" "$@" + ret=$? +fi +exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd new file mode 100644 index 0000000..88ff40f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd @@ -0,0 +1,5 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\uglify-js\bin\uglifyjs" %* +) ELSE ( + node "%~dp0\..\uglify-js\bin\uglifyjs" %* +) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md new file mode 100644 index 0000000..93b15c2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md @@ -0,0 +1,20 @@ + +1.0.7 / 2012-11-21 +================== + + * fix component.json + +1.0.4 / 2012-11-15 +================== + + * update css-stringify + +1.0.3 / 2012-09-01 +================== + + * add component support + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile new file mode 100644 index 0000000..f13b4a7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile @@ -0,0 +1,8 @@ + +test: + @node test + +benchmark: + @node benchmark + +.PHONY: test benchmark \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md new file mode 100644 index 0000000..cf578df --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md @@ -0,0 +1,77 @@ + +# css + + CSS parser / stringifier using [css-parse](https://github.com/visionmedia/css-parse) and [css-stringify](https://github.com/visionmedia/css-stringify). + +## Installation + + $ npm install css + +## Example + +js: + +```js +var css = require('css') +var obj = css.parse('tobi { name: "tobi" }') +css.stringify(obj); +``` + +object returned by `.parse()`: + +```json +{ + "stylesheet": { + "rules": [ + { + "selector": "tobi", + "declarations": [ + { + "property": "name", + "value": "tobi" + } + ] + } + ] + } +} +``` + +string returned by `.stringify(ast)`: + +```css +tobi { + name: tobi; +} +``` + +string returned by `.stringify(ast, { compress: true })`: + +```css +tobi{name:tobi} +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js new file mode 100644 index 0000000..dec711d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js @@ -0,0 +1,36 @@ + +var css = require('./') + , fs = require('fs') + , read = fs.readFileSync + , str = read('examples/ui.css', 'utf8'); + +var n = 5000; +var ops = 200; +var t = process.hrtime(t); +var results = []; + +while (n--) { + css.stringify(css.parse(str)); + if (n % ops == 0) { + t = process.hrtime(t); + var ms = t[1] / 1000 / 1000; + var persec = (ops * (1000 / ms) | 0); + results.push(persec); + process.stdout.write('\r [' + persec + ' ops/s] [' + n + ']'); + t = process.hrtime(); + } +} + +function sum(arr) { + return arr.reduce(function(sum, n){ + return sum + n; + }); +} + +function mean(arr) { + return sum(arr) / arr.length | 0; +} + +console.log(); +console.log(' avg: %d ops/s', mean(results)); +console.log(' size: %d kb', (str.length / 1024).toFixed(2)); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json new file mode 100644 index 0000000..2769165 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json @@ -0,0 +1,13 @@ +{ + "name": "css", + "version": "1.0.8", + "description": "CSS parser / stringifier using css-parse and css-stringify", + "keywords": ["css", "parser", "stylesheet"], + "dependencies": { + "visionmedia/css-parse": "*", + "visionmedia/css-stringify": "*" + }, + "scripts": [ + "index.js" + ] +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js new file mode 100644 index 0000000..19ec91a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js @@ -0,0 +1,3 @@ + +exports.parse = require('css-parse'); +exports.stringify = require('css-stringify'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore new file mode 100644 index 0000000..4a3c398 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore @@ -0,0 +1,6 @@ +support +test +examples +*.sock +test.css +test.js diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md new file mode 100644 index 0000000..5276aab --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md @@ -0,0 +1,30 @@ + +1.0.4 / 2012-09-17 +================== + + * fix keyframes float percentages + * fix an issue with comments containing slashes. + +1.0.3 / 2012-09-01 +================== + + * add component support + * fix unquoted data uris [rstacruz] + * fix keyframe names with no whitespace [rstacruz] + * fix excess semicolon support [rstacruz] + +1.0.2 / 2012-09-01 +================== + + * fix IE property hack support [rstacruz] + * fix quoted strings in declarations [rstacruz] + +1.0.1 / 2012-07-26 +================== + + * change "selector" to "selectors" array + +1.0.0 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile new file mode 100644 index 0000000..4e9c8d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md new file mode 100644 index 0000000..fde74a5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md @@ -0,0 +1,62 @@ + +# css-parse + + CSS parser. + +## Example + +js: + +```js +var parse = require('css-parse') +parse('tobi { name: "tobi" }') +``` + +object returned: + +```json +{ + "stylesheet": { + "rules": [ + { + "selectors": ["tobi"], + "declarations": [ + { + "property": "name", + "value": "tobi" + } + ] + } + ] + } +} +``` + +## Performance + + Parsed 15,000 lines of CSS (2mb) in 40ms on my macbook air. + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json new file mode 100644 index 0000000..234ebbe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json @@ -0,0 +1,8 @@ +{ + "name": "css-parse", + "repo": "visionmedia/node-css-parse", + "version": "1.0.3", + "description": "CSS parser", + "keywords": ["css", "parser", "stylesheet"], + "scripts": ["index.js"] +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js new file mode 100644 index 0000000..3ed278f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js @@ -0,0 +1,265 @@ + +module.exports = function(css){ + + /** + * Parse stylesheet. + */ + + function stylesheet() { + return { stylesheet: { rules: rules() }}; + } + + /** + * Opening brace. + */ + + function open() { + return match(/^{\s*/); + } + + /** + * Closing brace. + */ + + function close() { + return match(/^}\s*/); + } + + /** + * Parse ruleset. + */ + + function rules() { + var node; + var rules = []; + whitespace(); + comments(); + while (css[0] != '}' && (node = atrule() || rule())) { + comments(); + rules.push(node); + } + return rules; + } + + /** + * Match `re` and return captures. + */ + + function match(re) { + var m = re.exec(css); + if (!m) return; + css = css.slice(m[0].length); + return m; + } + + /** + * Parse whitespace. + */ + + function whitespace() { + match(/^\s*/); + } + + /** + * Parse comments; + */ + + function comments() { + while (comment()) ; + } + + /** + * Parse comment. + */ + + function comment() { + if ('/' == css[0] && '*' == css[1]) { + var i = 2; + while ('*' != css[i] || '/' != css[i + 1]) ++i; + i += 2; + css = css.slice(i); + whitespace(); + return true; + } + } + + /** + * Parse selector. + */ + + function selector() { + var m = match(/^([^{]+)/); + if (!m) return; + return m[0].trim().split(/\s*,\s*/); + } + + /** + * Parse declaration. + */ + + function declaration() { + // prop + var prop = match(/^(\*?[-\w]+)\s*/); + if (!prop) return; + prop = prop[0]; + + // : + if (!match(/^:\s*/)) return; + + // val + var val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)\s*/); + if (!val) return; + val = val[0].trim(); + + // ; + match(/^[;\s]*/); + + return { property: prop, value: val }; + } + + /** + * Parse keyframe. + */ + + function keyframe() { + var m; + var vals = []; + + while (m = match(/^(from|to|\d+%|\.\d+%|\d+\.\d+%)\s*/)) { + vals.push(m[1]); + match(/^,\s*/); + } + + if (!vals.length) return; + + return { + values: vals, + declarations: declarations() + }; + } + + /** + * Parse keyframes. + */ + + function keyframes() { + var m = match(/^@([-\w]+)?keyframes */); + if (!m) return; + var vendor = m[1]; + + // identifier + var m = match(/^([-\w]+)\s*/); + if (!m) return; + var name = m[1]; + + if (!open()) return; + comments(); + + var frame; + var frames = []; + while (frame = keyframe()) { + frames.push(frame); + comments(); + } + + if (!close()) return; + + return { + name: name, + vendor: vendor, + keyframes: frames + }; + } + + /** + * Parse media. + */ + + function media() { + var m = match(/^@media *([^{]+)/); + if (!m) return; + var media = m[1].trim(); + + if (!open()) return; + comments(); + + var style = rules(); + + if (!close()) return; + + return { media: media, rules: style }; + } + + /** + * Parse import + */ + + function atimport() { + return _atrule('import') + } + + /** + * Parse charset + */ + + function atcharset() { + return _atrule('charset'); + } + + /** + * Parse non-block at-rules + */ + + function _atrule(name) { + var m = match(new RegExp('^@' + name + ' *([^;\\n]+);\\s*')); + if (!m) return; + var ret = {} + ret[name] = m[1].trim(); + return ret; + } + + /** + * Parse declarations. + */ + + function declarations() { + var decls = []; + + if (!open()) return; + comments(); + + // declarations + var decl; + while (decl = declaration()) { + decls.push(decl); + comments(); + } + + if (!close()) return; + return decls; + } + + /** + * Parse at rule. + */ + + function atrule() { + return keyframes() + || media() + || atimport() + || atcharset(); + } + + /** + * Parse rule. + */ + + function rule() { + var sel = selector(); + if (!sel) return; + comments(); + return { selectors: sel, declarations: declarations() }; + } + + return stylesheet(); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json new file mode 100644 index 0000000..cdd44ae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json @@ -0,0 +1,23 @@ +{ + "name": "css-parse", + "version": "1.0.4", + "description": "CSS parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "main": "index", + "readme": "\n# css-parse\n\n CSS parser.\n\n## Example\n\njs:\n\n```js\nvar parse = require('css-parse')\nparse('tobi { name: \"tobi\" }')\n```\n\nobject returned:\n\n```json\n{\n \"stylesheet\": {\n \"rules\": [\n {\n \"selectors\": [\"tobi\"],\n \"declarations\": [\n {\n \"property\": \"name\",\n \"value\": \"tobi\"\n }\n ]\n }\n ]\n }\n}\n```\n\n## Performance\n\n Parsed 15,000 lines of CSS (2mb) in 40ms on my macbook air.\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "css-parse@1.0.4", + "_from": "css-parse@1.0.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore new file mode 100644 index 0000000..4a3c398 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore @@ -0,0 +1,6 @@ +support +test +examples +*.sock +test.css +test.js diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md new file mode 100644 index 0000000..a6ff960 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md @@ -0,0 +1,30 @@ + +1.0.5 / 2013-03-15 +================== + + * fix indentation of multiple selectors in @media. Closes #11 + +1.0.4 / 2012-11-15 +================== + + * fix indentation + +1.0.3 / 2012-09-04 +================== + + * add __@charset__ support [rstacruz] + +1.0.2 / 2012-09-01 +================== + + * add component support + +1.0.1 / 2012-07-26 +================== + + * add "selectors" array support + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile new file mode 100644 index 0000000..4e9c8d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md new file mode 100644 index 0000000..a36e780 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md @@ -0,0 +1,33 @@ + +# css-stringify + + CSS compiler using the AST provided by [css-parse](https://github.com/visionmedia/css-parse). + +## Performance + + Formats 15,000 lines of CSS (2mb) in 23ms on my macbook air. + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json new file mode 100644 index 0000000..259baef --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json @@ -0,0 +1,8 @@ +{ + "name": "css-stringify", + "repo": "visionmedia/css-stringify", + "version": "1.0.5", + "description": "CSS compiler", + "keywords": ["css", "stringify", "stylesheet"], + "scripts": ["index.js"] +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js new file mode 100644 index 0000000..f528e41 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js @@ -0,0 +1,182 @@ + +/** + * Stringfy the given AST `node`. + * + * @param {Object} node + * @param {Object} options + * @return {String} + * @api public + */ + +module.exports = function(node, options){ + return new Compiler(options).compile(node); +}; + +/** + * Initialize a new `Compiler`. + */ + +function Compiler(options) { + options = options || {}; + this.compress = options.compress; + this.indentation = options.indent; +} + +/** + * Compile `node`. + */ + +Compiler.prototype.compile = function(node){ + return node.stylesheet.rules.map(this.visit, this) + .join(this.compress ? '' : '\n\n'); +}; + +/** + * Visit `node`. + */ + +Compiler.prototype.visit = function(node){ + if (node.charset) return this.charset(node); + if (node.keyframes) return this.keyframes(node); + if (node.media) return this.media(node); + if (node.import) return this.import(node); + return this.rule(node); +}; + +/** + * Visit import node. + */ + +Compiler.prototype.import = function(node){ + return '@import ' + node.import + ';'; +}; + +/** + * Visit media node. + */ + +Compiler.prototype.media = function(node){ + if (this.compress) { + return '@media ' + + node.media + + '{' + + node.rules.map(this.visit, this).join('') + + '}'; + } + + return '@media ' + + node.media + + ' {\n' + + this.indent(1) + + node.rules.map(this.visit, this).join('\n\n') + + this.indent(-1) + + '\n}'; +}; + +/** + * Visit charset node. + */ + +Compiler.prototype.charset = function(node){ + if (this.compress) { + return '@charset ' + node.charset + ';'; + } + + return '@charset ' + node.charset + ';\n'; +}; + +/** + * Visit keyframes node. + */ + +Compiler.prototype.keyframes = function(node){ + if (this.compress) { + return '@' + + (node.vendor || '') + + 'keyframes ' + + node.name + + '{' + + node.keyframes.map(this.keyframe, this).join('') + + '}'; + } + + return '@' + + (node.vendor || '') + + 'keyframes ' + + node.name + + ' {\n' + + this.indent(1) + + node.keyframes.map(this.keyframe, this).join('\n') + + this.indent(-1) + + '}'; +}; + +/** + * Visit keyframe node. + */ + +Compiler.prototype.keyframe = function(node){ + if (this.compress) { + return node.values.join(',') + + '{' + + node.declarations.map(this.declaration, this).join(';') + + '}'; + } + + return this.indent() + + node.values.join(', ') + + ' {\n' + + this.indent(1) + + node.declarations.map(this.declaration, this).join(';\n') + + this.indent(-1) + + '\n' + this.indent() + '}\n'; +}; + +/** + * Visit rule node. + */ + +Compiler.prototype.rule = function(node){ + var indent = this.indent(); + + if (this.compress) { + return node.selectors.join(',') + + '{' + + node.declarations.map(this.declaration, this).join(';') + + '}'; + } + + return node.selectors.map(function(s){ return indent + s }).join(',\n') + + ' {\n' + + this.indent(1) + + node.declarations.map(this.declaration, this).join(';\n') + + this.indent(-1) + + '\n' + this.indent() + '}'; +}; + +/** + * Visit declaration node. + */ + +Compiler.prototype.declaration = function(node){ + if (this.compress) { + return node.property + ':' + node.value; + } + + return this.indent() + node.property + ': ' + node.value; +}; + +/** + * Increase, decrease or return current indentation. + */ + +Compiler.prototype.indent = function(level) { + this.level = this.level || 1; + + if (null != level) { + this.level += level; + return ''; + } + + return Array(this.level).join(this.indentation || ' '); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json new file mode 100644 index 0000000..cada5c0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json @@ -0,0 +1,28 @@ +{ + "name": "css-stringify", + "version": "1.0.5", + "description": "CSS compiler", + "keywords": [ + "css", + "stringify", + "stylesheet" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "devDependencies": { + "mocha": "*", + "should": "*", + "css-parse": "1.0.3" + }, + "main": "index", + "readme": "\n# css-stringify\n\n CSS compiler using the AST provided by [css-parse](https://github.com/visionmedia/css-parse).\n\n## Performance\n\n Formats 15,000 lines of CSS (2mb) in 23ms on my macbook air.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "_id": "css-stringify@1.0.5", + "dist": { + "shasum": "f726c3bb10701eedac564618c17968f026596b17" + }, + "_from": "css-stringify@1.0.5", + "_resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json new file mode 100644 index 0000000..638ae96 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json @@ -0,0 +1,23 @@ +{ + "name": "css", + "version": "1.0.8", + "description": "CSS parser / stringifier using css-parse and css-stringify", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": { + "css-parse": "1.0.4", + "css-stringify": "1.0.5" + }, + "main": "index", + "readme": "\n# css\n\n CSS parser / stringifier using [css-parse](https://github.com/visionmedia/css-parse) and [css-stringify](https://github.com/visionmedia/css-stringify).\n\n## Installation\n\n $ npm install css\n\n## Example\n\njs:\n\n```js\nvar css = require('css')\nvar obj = css.parse('tobi { name: \"tobi\" }')\ncss.stringify(obj);\n```\n\nobject returned by `.parse()`:\n\n```json\n{\n \"stylesheet\": {\n \"rules\": [\n {\n \"selector\": \"tobi\",\n \"declarations\": [\n {\n \"property\": \"name\",\n \"value\": \"tobi\"\n }\n ]\n }\n ]\n }\n}\n```\n\nstring returned by `.stringify(ast)`:\n\n```css\ntobi {\n name: tobi;\n}\n```\n\nstring returned by `.stringify(ast, { compress: true })`:\n\n```css\ntobi{name:tobi}\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "css@1.0.8", + "_from": "css@~1.0.8" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js new file mode 100644 index 0000000..3e1b4d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js @@ -0,0 +1,6 @@ + +var css = require('./') + , assert = require('assert'); + +assert(css.parse); +assert(css.stringify); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore new file mode 100644 index 0000000..1195248 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore @@ -0,0 +1,6 @@ +components +node_modules +test +.gitignore +.travis.yml +component.json \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md new file mode 100644 index 0000000..2b9dfe9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md @@ -0,0 +1,85 @@ +[![Build Status](https://travis-ci.org/then/promise.png)](https://travis-ci.org/then/promise) + +# promise + + This a bare bones [Promises/A+](http://promises-aplus.github.com/promises-spec/) implementation. + + It is designed to get the basics spot on correct, so that you can build extended promise implementations on top of it. + +## Installation + + Server: + + $ npm install promise + + Client: + + $ component install then/promise + +## API + + In the example below shows how you can load the promise library (in a way that works on both client and server). It then demonstrates creating a promise from scratch. You simply call `new Promise(fn)`. There is a complete specification for what is returned by this method in [Promises/A+](http://promises-aplus.github.com/promises-spec/). + +```javascript +var Promise = require('promise'); + +var promise = new Promise(function (resolve, reject) { + get('http://www.google.com', function (err, res) { + if (err) reject(err); + else resolve(res); + }); + }); +``` + +## Extending Promises + + There are three options for extending the promises created by this library. + +### Inheritance + + You can use inheritance if you want to create your own complete promise library with this as your basic starting point, perfect if you have lots of cool features you want to add. Here is an example of a promise library called `Awesome`, which is built on top of `Promise` correctly. + +```javascript +var Promise = require('promise'); +function Awesome(fn) { + if (!(this instanceof Awesome)) return new Awesome(fn); + Promise.call(this, fn); +} +Awesome.prototype = Object.create(Promise.prototype); +Awesome.prototype.constructor = Awesome; + +//Awesome extension +Awesome.prototype.spread = function (cb) { + return this.then(function (arr) { + return cb.apply(this, arr); + }) +}; +``` + + N.B. if you fail to set the prototype and constructor properly or fail to do Promise.call, things can fail in really subtle ways. + +### Wrap + + This is the nuclear option, for when you want to start from scratch. It ensures you won't be impacted by anyone who is extending the prototype (see below). + +```javascript +function Uber(fn) { + if (!(this instanceof Uber)) return new Uber(fn); + var _prom = new Promise(fn); + this.then = _prom.then; +} + +Uber.prototype.spread = function (cb) { + return this.then(function (arr) { + return cb.apply(this, arr); + }) +}; +``` + +### Extending the Prototype + + In general, you should never extend the prototype of this promise implimenation because your extensions could easily conflict with someone elses extensions. However, this organisation will host a library of extensions which do not conflict with each other, so you can safely enable any of those. If you think of an extension that we don't provide and you want to write it, submit an issue on this repository and (if I agree) I'll set you up with a repository and give you permission to commit to it. + +## License + + MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js new file mode 100644 index 0000000..492eb99 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js @@ -0,0 +1,164 @@ +var isPromise = require('is-promise') + +var nextTick +if (typeof setImediate === 'function') nextTick = setImediate +else if (typeof process === 'object' && process && process.nextTick) nextTick = process.nextTick +else nextTick = function (cb) { setTimeout(cb, 0) } + +var extensions = [] + +module.exports = Promise +function Promise(fn) { + if (!(this instanceof Promise)) { + return fn ? new Promise(fn) : defer() + } + if (typeof fn !== 'function') { + throw new TypeError('fn is not a function') + } + + var state = { + isResolved: false, + isSettled: false, + isFulfilled: false, + value: null, + waiting: [], + running: false + } + + function _resolve(val) { + resolve(state, val); + } + function _reject(err) { + reject(state, err); + } + this.then = function _then(onFulfilled, onRejected) { + return then(state, onFulfilled, onRejected); + } + + _resolve.fulfill = deprecate(_resolve, 'resolver.fulfill(x)', 'resolve(x)') + _resolve.reject = deprecate(_reject, 'resolver.reject', 'reject(x)') + + try { + fn(_resolve, _reject) + } catch (ex) { + _reject(ex) + } +} + +function resolve(promiseState, value) { + if (promiseState.isResolved) return + if (isPromise(value)) { + assimilate(promiseState, value) + } else { + settle(promiseState, true, value) + } +} + +function reject(promiseState, reason) { + if (promiseState.isResolved) return + settle(promiseState, false, reason) +} + +function then(promiseState, onFulfilled, onRejected) { + return new Promise(function (resolve, reject) { + function done(next, skipTimeout) { + var callback = promiseState.isFulfilled ? onFulfilled : onRejected + if (typeof callback === 'function') { + function timeoutDone() { + var val + try { + val = callback(promiseState.value) + } catch (ex) { + reject(ex) + return next(true) + } + resolve(val) + next(true) + } + if (skipTimeout) timeoutDone() + else nextTick(timeoutDone) + } else if (promiseState.isFulfilled) { + resolve(promiseState.value) + next(skipTimeout) + } else { + reject(promiseState.value) + next(skipTimeout) + } + } + promiseState.waiting.push(done) + if (promiseState.isSettled && !promiseState.running) processQueue(promiseState) + }) +} + +function processQueue(promiseState) { + function next(skipTimeout) { + if (promiseState.waiting.length) { + promiseState.running = true + promiseState.waiting.shift()(next, skipTimeout) + } else { + promiseState.running = false + } + } + next(false) +} + +function settle(promiseState, isFulfilled, value) { + if (promiseState.isSettled) return + + promiseState.isResolved = promiseState.isSettled = true + promiseState.value = value + promiseState.isFulfilled = isFulfilled + + processQueue(promiseState) +} + +function assimilate(promiseState, thenable) { + try { + promiseState.isResolved = true + thenable.then(function (res) { + if (isPromise(res)) { + assimilate(promiseState, res) + } else { + settle(promiseState, true, res) + } + }, function (err) { + settle(promiseState, false, err) + }) + } catch (ex) { + settle(promiseState, false, ex) + } +} + +Promise.use = function (extension) { + extensions.push(extension) +} + + +function deprecate(method, name, alternative) { + return function () { + var err = new Error(name + ' is deprecated use ' + alternative) + if (typeof console !== 'undefined' && console && typeof console.warn === 'function') { + console.warn(name + ' is deprecated use ' + alternative) + if (err.stack) console.warn(err.stack) + } else { + nextTick(function () { + throw err + }) + } + method.apply(this, arguments) + } +} +function defer() { + var err = new Error('promise.defer() is deprecated') + if (typeof console !== 'undefined' && console && typeof console.warn === 'function') { + console.warn('promise.defer() is deprecated') + if (err.stack) console.warn(err.stack) + } else { + nextTick(function () { + throw err + }) + } + var resolver + var promise = new Promise(function (res) { resolver = res }) + return {resolver: resolver, promise: promise} +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore new file mode 100644 index 0000000..aeb7b45 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore @@ -0,0 +1,6 @@ +component +build +node_modules +test.js +component.json +.gitignore \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js new file mode 100644 index 0000000..776c3a5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js @@ -0,0 +1,5 @@ +module.exports = isPromise; + +function isPromise(obj) { + return obj && typeof obj.then === 'function'; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json new file mode 100644 index 0000000..056cf8f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json @@ -0,0 +1,28 @@ +{ + "name": "is-promise", + "version": "1.0.0", + "description": "Test whether an object looks like a promises-a+ promise", + "main": "index.js", + "scripts": { + "test": "mocha -R spec" + }, + "repository": { + "type": "git", + "url": "https://github.com/then/is-promise.git" + }, + "author": { + "name": "ForbesLindesay" + }, + "license": "MIT", + "devDependencies": { + "better-assert": "~0.1.0", + "mocha": "~1.7.4" + }, + "readme": "\n# is-promise\n\n Test whether an object looks like a promises-a+ promise\n\n## Installation\n\n Client:\n\n $ component install then/is-promise\n\n Server:\n\n $ npm install is-promise\n\n## API\n\n```javascript\nvar isPromise = require('is-promise');\n\nisPromise({then:function () {...}});//=>true\nisPromise(null);//=>false\nisPromise({});//=>false\nisPromise({then: true})//=>false\n```\n\n## License\n\n MIT\n", + "readmeFilename": "readme.md", + "bugs": { + "url": "https://github.com/then/is-promise/issues" + }, + "_id": "is-promise@1.0.0", + "_from": "is-promise@~1" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md new file mode 100644 index 0000000..bfeda13 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md @@ -0,0 +1,29 @@ + +# is-promise + + Test whether an object looks like a promises-a+ promise + +## Installation + + Client: + + $ component install then/is-promise + + Server: + + $ npm install is-promise + +## API + +```javascript +var isPromise = require('is-promise'); + +isPromise({then:function () {...}});//=>true +isPromise(null);//=>false +isPromise({});//=>false +isPromise({then: true})//=>false +``` + +## License + + MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json new file mode 100644 index 0000000..f7a24bb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json @@ -0,0 +1,32 @@ +{ + "name": "promise", + "version": "2.0.0", + "description": "Bare bones Promises/A+ implementation", + "main": "index.js", + "scripts": { + "test": "mocha -R spec --timeout 200 --slow 99999" + }, + "repository": { + "type": "git", + "url": "https://github.com/then/promise.git" + }, + "author": { + "name": "ForbesLindesay" + }, + "license": "MIT", + "dependencies": { + "is-promise": "~1" + }, + "devDependencies": { + "promises-aplus-tests": "*", + "mocha-as-promised": "~1.2.1", + "better-assert": "~1.0.0" + }, + "readme": "[![Build Status](https://travis-ci.org/then/promise.png)](https://travis-ci.org/then/promise)\r\n\r\n# promise\r\n\r\n This a bare bones [Promises/A+](http://promises-aplus.github.com/promises-spec/) implementation.\r\n\r\n It is designed to get the basics spot on correct, so that you can build extended promise implementations on top of it.\r\n\r\n## Installation\r\n\r\n Server:\r\n\r\n $ npm install promise\r\n\r\n Client:\r\n\r\n $ component install then/promise\r\n\r\n## API\r\n\r\n In the example below shows how you can load the promise library (in a way that works on both client and server). It then demonstrates creating a promise from scratch. You simply call `new Promise(fn)`. There is a complete specification for what is returned by this method in [Promises/A+](http://promises-aplus.github.com/promises-spec/).\r\n\r\n```javascript\r\nvar Promise = require('promise');\r\n\r\nvar promise = new Promise(function (resolve, reject) {\r\n get('http://www.google.com', function (err, res) {\r\n if (err) reject(err);\r\n else resolve(res);\r\n });\r\n });\r\n```\r\n\r\n## Extending Promises\r\n\r\n There are three options for extending the promises created by this library.\r\n\r\n### Inheritance\r\n\r\n You can use inheritance if you want to create your own complete promise library with this as your basic starting point, perfect if you have lots of cool features you want to add. Here is an example of a promise library called `Awesome`, which is built on top of `Promise` correctly.\r\n\r\n```javascript\r\nvar Promise = require('promise');\r\nfunction Awesome(fn) {\r\n if (!(this instanceof Awesome)) return new Awesome(fn);\r\n Promise.call(this, fn);\r\n}\r\nAwesome.prototype = Object.create(Promise.prototype);\r\nAwesome.prototype.constructor = Awesome;\r\n\r\n//Awesome extension\r\nAwesome.prototype.spread = function (cb) {\r\n return this.then(function (arr) {\r\n return cb.apply(this, arr);\r\n })\r\n};\r\n```\r\n\r\n N.B. if you fail to set the prototype and constructor properly or fail to do Promise.call, things can fail in really subtle ways.\r\n\r\n### Wrap\r\n\r\n This is the nuclear option, for when you want to start from scratch. It ensures you won't be impacted by anyone who is extending the prototype (see below).\r\n\r\n```javascript\r\nfunction Uber(fn) {\r\n if (!(this instanceof Uber)) return new Uber(fn);\r\n var _prom = new Promise(fn);\r\n this.then = _prom.then;\r\n}\r\n\r\nUber.prototype.spread = function (cb) {\r\n return this.then(function (arr) {\r\n return cb.apply(this, arr);\r\n })\r\n};\r\n```\r\n\r\n### Extending the Prototype\r\n\r\n In general, you should never extend the prototype of this promise implimenation because your extensions could easily conflict with someone elses extensions. However, this organisation will host a library of extensions which do not conflict with each other, so you can safely enable any of those. If you think of an extension that we don't provide and you want to write it, submit an issue on this repository and (if I agree) I'll set you up with a repository and give you permission to commit to it.\r\n\r\n## License\r\n\r\n MIT\r\n", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/then/promise/issues" + }, + "_id": "promise@2.0.0", + "_from": "promise@~2.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore new file mode 100644 index 0000000..94fceeb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore @@ -0,0 +1,2 @@ +tmp/ +node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md new file mode 100644 index 0000000..de6abe5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md @@ -0,0 +1,544 @@ +UglifyJS 2 +========== + +UglifyJS is a JavaScript parser, minifier, compressor or beautifier toolkit. + +This page documents the command line utility. For +[API and internals documentation see my website](http://lisperator.net/uglifyjs/). +There's also an +[in-browser online demo](http://lisperator.net/uglifyjs/#demo) (for Firefox, +Chrome and probably Safari). + +Install +------- + +First make sure you have installed the latest version of [node.js](http://nodejs.org/) +(You may need to restart your computer after this step). + +From NPM for use as a command line app: + + npm install uglify-js -g + +From NPM for programmatic use: + + npm install uglify-js + +From Git: + + git clone git://github.com/mishoo/UglifyJS2.git + cd UglifyJS2 + npm link . + +Usage +----- + + uglifyjs [input files] [options] + +UglifyJS2 can take multiple input files. It's recommended that you pass the +input files first, then pass the options. UglifyJS will parse input files +in sequence and apply any compression options. The files are parsed in the +same global scope, that is, a reference from a file to some +variable/function declared in another file will be matched properly. + +If you want to read from STDIN instead, pass a single dash instead of input +files. + +The available options are: + + --source-map Specify an output file where to generate source map. + [string] + --source-map-root The path to the original source to be included in the + source map. [string] + --source-map-url The path to the source map to be added in //@ + sourceMappingURL. Defaults to the value passed with + --source-map. [string] + --in-source-map Input source map, useful if you're compressing JS that was + generated from some other original code. + -p, --prefix Skip prefix for original filenames that appear in source + maps. For example -p 3 will drop 3 directories from file + names and ensure they are relative paths. + -o, --output Output file (default STDOUT). + -b, --beautify Beautify output/specify output options. [string] + -m, --mangle Mangle names/pass mangler options. [string] + -r, --reserved Reserved names to exclude from mangling. + -c, --compress Enable compressor/pass compressor options. Pass options + like -c hoist_vars=false,if_return=false. Use -c with no + argument to use the default compression options. [string] + -d, --define Global definitions [string] + --comments Preserve copyright comments in the output. By default this + works like Google Closure, keeping JSDoc-style comments + that contain "@license" or "@preserve". You can optionally + pass one of the following arguments to this flag: + - "all" to keep all comments + - a valid JS regexp (needs to start with a slash) to keep + only comments that match. + Note that currently not *all* comments can be kept when + compression is on, because of dead code removal or + cascading statements into sequences. [string] + --stats Display operations run time on STDERR. [boolean] + --acorn Use Acorn for parsing. [boolean] + --spidermonkey Assume input fles are SpiderMonkey AST format (as JSON). + [boolean] + --self Build itself (UglifyJS2) as a library (implies + --wrap=UglifyJS --export-all) [boolean] + --wrap Embed everything in a big function, making the “exports” + and “global” variables available. You need to pass an + argument to this option to specify the name that your + module will take when included in, say, a browser. + [string] + --export-all Only used when --wrap, this tells UglifyJS to add code to + automatically export all globals. [boolean] + --lint Display some scope warnings [boolean] + -v, --verbose Verbose [boolean] + -V, --version Print version number and exit. [boolean] + +Specify `--output` (`-o`) to declare the output file. Otherwise the output +goes to STDOUT. + +## Source map options + +UglifyJS2 can generate a source map file, which is highly useful for +debugging your compressed JavaScript. To get a source map, pass +`--source-map output.js.map` (full path to the file where you want the +source map dumped). + +Additionally you might need `--source-map-root` to pass the URL where the +original files can be found. In case you are passing full paths to input +files to UglifyJS, you can use `--prefix` (`-p`) to specify the number of +directories to drop from the path prefix when declaring files in the source +map. + +For example: + + uglifyjs /home/doe/work/foo/src/js/file1.js \ + /home/doe/work/foo/src/js/file2.js \ + -o foo.min.js \ + --source-map foo.min.js.map \ + --source-map-root http://foo.com/src \ + -p 5 -c -m + +The above will compress and mangle `file1.js` and `file2.js`, will drop the +output in `foo.min.js` and the source map in `foo.min.js.map`. The source +mapping will refer to `http://foo.com/src/js/file1.js` and +`http://foo.com/src/js/file2.js` (in fact it will list `http://foo.com/src` +as the source map root, and the original files as `js/file1.js` and +`js/file2.js`). + +### Composed source map + +When you're compressing JS code that was output by a compiler such as +CoffeeScript, mapping to the JS code won't be too helpful. Instead, you'd +like to map back to the original code (i.e. CoffeeScript). UglifyJS has an +option to take an input source map. Assuming you have a mapping from +CoffeeScript → compiled JS, UglifyJS can generate a map from CoffeeScript → +compressed JS by mapping every token in the compiled JS to its original +location. + +To use this feature you need to pass `--in-source-map +/path/to/input/source.map`. Normally the input source map should also point +to the file containing the generated JS, so if that's correct you can omit +input files from the command line. + +## Mangler options + +To enable the mangler you need to pass `--mangle` (`-m`). Optionally you +can pass `-m sort=true` (we'll possibly have other flags in the future) in order +to assign shorter names to most frequently used variables. This saves a few +hundred bytes on jQuery before gzip, but the output is _bigger_ after gzip +(and seems to happen for other libraries I tried it on) therefore it's not +enabled by default. + +When mangling is enabled but you want to prevent certain names from being +mangled, you can declare those names with `--reserved` (`-r`) — pass a +comma-separated list of names. For example: + + uglifyjs ... -m -r '$,require,exports' + +to prevent the `require`, `exports` and `$` names from being changed. + +## Compressor options + +You need to pass `--compress` (`-c`) to enable the compressor. Optionally +you can pass a comma-separated list of options. Options are in the form +`foo=bar`, or just `foo` (the latter implies a boolean option that you want +to set `true`; it's effectively a shortcut for `foo=true`). + +The defaults should be tuned for maximum compression on most code. Here are +the available options (all are `true` by default, except `hoist_vars`): + +- `sequences` -- join consecutive simple statements using the comma operator +- `properties` -- rewrite property access using the dot notation, for + example `foo["bar"] → foo.bar` +- `dead_code` -- remove unreachable code +- `drop_debugger` -- remove `debugger;` statements +- `unsafe` -- apply "unsafe" transformations (discussion below) +- `conditionals` -- apply optimizations for `if`-s and conditional + expressions +- `comparisons` -- apply certain optimizations to binary nodes, for example: + `!(a <= b) → a > b` (only when `unsafe`), attempts to negate binary nodes, + e.g. `a = !b && !c && !d && !e → a=!(b||c||d||e)` etc. +- `evaluate` -- attempt to evaluate constant expressions +- `booleans` -- various optimizations for boolean context, for example `!!a + ? b : c → a ? b : c` +- `loops` -- optimizations for `do`, `while` and `for` loops when we can + statically determine the condition +- `unused` -- drop unreferenced functions and variables +- `hoist_funs` -- hoist function declarations +- `hoist_vars` -- hoist `var` declarations (this is `false` by default + because it seems to increase the size of the output in general) +- `if_return` -- optimizations for if/return and if/continue +- `join_vars` -- join consecutive `var` statements +- `cascade` -- small optimization for sequences, transform `x, x` into `x` + and `x = something(), x` into `x = something()` +- `warnings` -- display warnings when dropping unreachable code or unused + declarations etc. + +### Conditional compilation + +You can use the `--define` (`-d`) switch in order to declare global +variables that UglifyJS will assume to be constants (unless defined in +scope). For example if you pass `--define DEBUG=false` then, coupled with +dead code removal UglifyJS will discard the following from the output: + + if (DEBUG) { + console.log("debug stuff"); + } + +UglifyJS will warn about the condition being always false and about dropping +unreachable code; for now there is no option to turn off only this specific +warning, you can pass `warnings=false` to turn off *all* warnings. + +Another way of doing that is to declare your globals as constants in a +separate file and include it into the build. For example you can have a +`build/defines.js` file with the following: + + const DEBUG = false; + const PRODUCTION = true; + // etc. + +and build your code like this: + + uglifyjs build/defines.js js/foo.js js/bar.js... -c + +UglifyJS will notice the constants and, since they cannot be altered, it +will evaluate references to them to the value itself and drop unreachable +code as usual. The possible downside of this approach is that the build +will contain the `const` declarations. + + +## Beautifier options + +The code generator tries to output shortest code possible by default. In +case you want beautified output, pass `--beautify` (`-b`). Optionally you +can pass additional arguments that control the code output: + +- `beautify` (default `true`) -- whether to actually beautify the output. + Passing `-b` will set this to true, but you might need to pass `-b` even + when you want to generate minified code, in order to specify additional + arguments, so you can use `-b beautify=false` to override it. +- `indent-level` (default 4) +- `indent-start` (default 0) -- prefix all lines by that many spaces +- `quote-keys` (default `false`) -- pass `true` to quote all keys in literal + objects +- `space-colon` (default `true`) -- insert a space after the colon signs +- `ascii-only` (default `false`) -- escape Unicode characters in strings and + regexps +- `inline-script` (default `false`) -- escape the slash in occurrences of + ` 0) { + sys.error("WARN: Ignoring input files since --self was passed"); + } + files = UglifyJS.FILES; + if (!ARGS.wrap) ARGS.wrap = "UglifyJS"; + ARGS.export_all = true; +} + +var ORIG_MAP = ARGS.in_source_map; + +if (ORIG_MAP) { + ORIG_MAP = JSON.parse(fs.readFileSync(ORIG_MAP)); + if (files.length == 0) { + sys.error("INFO: Using file from the input source map: " + ORIG_MAP.file); + files = [ ORIG_MAP.file ]; + } + if (ARGS.source_map_root == null) { + ARGS.source_map_root = ORIG_MAP.sourceRoot; + } +} + +if (files.length == 0) { + files = [ "-" ]; +} + +if (files.indexOf("-") >= 0 && ARGS.source_map) { + sys.error("ERROR: Source map doesn't work with input from STDIN"); + process.exit(1); +} + +if (files.filter(function(el){ return el == "-" }).length > 1) { + sys.error("ERROR: Can read a single file from STDIN (two or more dashes specified)"); + process.exit(1); +} + +var STATS = {}; +var OUTPUT_FILE = ARGS.o; +var TOPLEVEL = null; + +var SOURCE_MAP = ARGS.source_map ? UglifyJS.SourceMap({ + file: OUTPUT_FILE, + root: ARGS.source_map_root, + orig: ORIG_MAP, +}) : null; + +OUTPUT_OPTIONS.source_map = SOURCE_MAP; + +try { + var output = UglifyJS.OutputStream(OUTPUT_OPTIONS); + var compressor = COMPRESS && UglifyJS.Compressor(COMPRESS); +} catch(ex) { + if (ex instanceof UglifyJS.DefaultsError) { + sys.error(ex.msg); + sys.error("Supported options:"); + sys.error(sys.inspect(ex.defs)); + process.exit(1); + } +} + +files.forEach(function(file) { + var code = read_whole_file(file); + if (ARGS.p != null) { + file = file.replace(/^\/+/, "").split(/\/+/).slice(ARGS.p).join("/"); + } + time_it("parse", function(){ + if (ARGS.spidermonkey) { + var program = JSON.parse(code); + if (!TOPLEVEL) TOPLEVEL = program; + else TOPLEVEL.body = TOPLEVEL.body.concat(program.body); + } + else if (ARGS.acorn) { + TOPLEVEL = acorn.parse(code, { + locations : true, + trackComments : true, + sourceFile : file, + program : TOPLEVEL + }); + } + else { + TOPLEVEL = UglifyJS.parse(code, { + filename: file, + toplevel: TOPLEVEL + }); + }; + }); +}); + +if (ARGS.acorn || ARGS.spidermonkey) time_it("convert_ast", function(){ + TOPLEVEL = UglifyJS.AST_Node.from_mozilla_ast(TOPLEVEL); +}); + +if (ARGS.wrap) { + TOPLEVEL = TOPLEVEL.wrap_commonjs(ARGS.wrap, ARGS.export_all); +} + +var SCOPE_IS_NEEDED = COMPRESS || MANGLE || ARGS.lint; + +if (SCOPE_IS_NEEDED) { + time_it("scope", function(){ + TOPLEVEL.figure_out_scope(); + if (ARGS.lint) { + TOPLEVEL.scope_warnings(); + } + }); +} + +if (COMPRESS) { + time_it("squeeze", function(){ + TOPLEVEL = TOPLEVEL.transform(compressor); + }); +} + +if (SCOPE_IS_NEEDED) { + time_it("scope", function(){ + TOPLEVEL.figure_out_scope(); + if (MANGLE) { + TOPLEVEL.compute_char_frequency(MANGLE); + } + }); +} + +if (MANGLE) time_it("mangle", function(){ + TOPLEVEL.mangle_names(MANGLE); +}); +time_it("generate", function(){ + TOPLEVEL.print(output); +}); + +output = output.get(); + +if (SOURCE_MAP) { + fs.writeFileSync(ARGS.source_map, SOURCE_MAP, "utf8"); + output += "\n/*\n//@ sourceMappingURL=" + (ARGS.source_map_url || ARGS.source_map) + "\n*/"; +} + +if (OUTPUT_FILE) { + fs.writeFileSync(OUTPUT_FILE, output, "utf8"); +} else { + sys.print(output); + sys.error("\n"); +} + +if (ARGS.stats) { + sys.error(UglifyJS.string_template("Timing information (compressed {count} files):", { + count: files.length + })); + for (var i in STATS) if (STATS.hasOwnProperty(i)) { + sys.error(UglifyJS.string_template("- {name}: {time}s", { + name: i, + time: (STATS[i] / 1000).toFixed(3) + })); + } +} + +/* -----[ functions ]----- */ + +function normalize(o) { + for (var i in o) if (o.hasOwnProperty(i) && /-/.test(i)) { + o[i.replace(/-/g, "_")] = o[i]; + delete o[i]; + } +} + +function getOptions(x, constants) { + x = ARGS[x]; + if (!x) return null; + var ret = {}; + if (x !== true) { + var ast; + try { + ast = UglifyJS.parse(x); + } catch(ex) { + if (ex instanceof UglifyJS.JS_Parse_Error) { + sys.error("Error parsing arguments in: " + x); + process.exit(1); + } + } + ast.walk(new UglifyJS.TreeWalker(function(node){ + if (node instanceof UglifyJS.AST_Toplevel) return; // descend + if (node instanceof UglifyJS.AST_SimpleStatement) return; // descend + if (node instanceof UglifyJS.AST_Seq) return; // descend + if (node instanceof UglifyJS.AST_Assign) { + var name = node.left.print_to_string({ beautify: false }).replace(/-/g, "_"); + var value = node.right; + if (constants) + value = new Function("return (" + value.print_to_string() + ")")(); + ret[name] = value; + return true; // no descend + } + sys.error(node.TYPE) + sys.error("Error parsing arguments in: " + x); + process.exit(1); + })); + } + return ret; +} + +function read_whole_file(filename) { + if (filename == "-") { + // XXX: this sucks. How does one read the whole STDIN + // synchronously? + filename = "/dev/stdin"; + } + try { + return fs.readFileSync(filename, "utf8"); + } catch(ex) { + sys.error("ERROR: can't read file: " + filename); + process.exit(1); + } +} + +function time_it(name, cont) { + var t1 = new Date().getTime(); + var ret = cont(); + if (ARGS.stats) { + var spent = new Date().getTime() - t1; + if (STATS[name]) STATS[name] += spent; + else STATS[name] = spent; + } + return ret; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js new file mode 100644 index 0000000..62bdd8d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js @@ -0,0 +1,964 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +function DEFNODE(type, props, methods, base) { + if (arguments.length < 4) base = AST_Node; + if (!props) props = []; + else props = props.split(/\s+/); + var self_props = props; + if (base && base.PROPS) + props = props.concat(base.PROPS); + var code = "return function AST_" + type + "(props){ if (props) { "; + for (var i = props.length; --i >= 0;) { + code += "this." + props[i] + " = props." + props[i] + ";"; + } + var proto = base && new base; + if (proto && proto.initialize || (methods && methods.initialize)) + code += "this.initialize();"; + code += "}}"; + var ctor = new Function(code)(); + if (proto) { + ctor.prototype = proto; + ctor.BASE = base; + } + if (base) base.SUBCLASSES.push(ctor); + ctor.prototype.CTOR = ctor; + ctor.PROPS = props || null; + ctor.SELF_PROPS = self_props; + ctor.SUBCLASSES = []; + if (type) { + ctor.prototype.TYPE = ctor.TYPE = type; + } + if (methods) for (i in methods) if (methods.hasOwnProperty(i)) { + if (/^\$/.test(i)) { + ctor[i.substr(1)] = methods[i]; + } else { + ctor.prototype[i] = methods[i]; + } + } + ctor.DEFMETHOD = function(name, method) { + this.prototype[name] = method; + }; + return ctor; +}; + +var AST_Token = DEFNODE("Token", "type value line col pos endpos nlb comments_before file", { +}, null); + +var AST_Node = DEFNODE("Node", "start end", { + clone: function() { + return new this.CTOR(this); + }, + $documentation: "Base class of all AST nodes", + $propdoc: { + start: "[AST_Token] The first token of this node", + end: "[AST_Token] The last token of this node" + }, + _walk: function(visitor) { + return visitor._visit(this); + }, + walk: function(visitor) { + return this._walk(visitor); // not sure the indirection will be any help + } +}, null); + +AST_Node.warn_function = null; +AST_Node.warn = function(txt, props) { + if (AST_Node.warn_function) + AST_Node.warn_function(string_template(txt, props)); +}; + +/* -----[ statements ]----- */ + +var AST_Statement = DEFNODE("Statement", null, { + $documentation: "Base class of all statements", +}); + +var AST_Debugger = DEFNODE("Debugger", null, { + $documentation: "Represents a debugger statement", +}, AST_Statement); + +var AST_Directive = DEFNODE("Directive", "value scope", { + $documentation: "Represents a directive, like \"use strict\";", + $propdoc: { + value: "[string] The value of this directive as a plain string (it's not an AST_String!)", + scope: "[AST_Scope/S] The scope that this directive affects" + }, +}, AST_Statement); + +var AST_SimpleStatement = DEFNODE("SimpleStatement", "body", { + $documentation: "A statement consisting of an expression, i.e. a = 1 + 2", + $propdoc: { + body: "[AST_Node] an expression node (should not be instanceof AST_Statement)" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.body._walk(visitor); + }); + } +}, AST_Statement); + +function walk_body(node, visitor) { + if (node.body instanceof AST_Statement) { + node.body._walk(visitor); + } + else node.body.forEach(function(stat){ + stat._walk(visitor); + }); +}; + +var AST_Block = DEFNODE("Block", "body", { + $documentation: "A body of statements (usually bracketed)", + $propdoc: { + body: "[AST_Statement*] an array of statements" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + walk_body(this, visitor); + }); + } +}, AST_Statement); + +var AST_BlockStatement = DEFNODE("BlockStatement", null, { + $documentation: "A block statement", +}, AST_Block); + +var AST_EmptyStatement = DEFNODE("EmptyStatement", null, { + $documentation: "The empty statement (empty block or simply a semicolon)", + _walk: function(visitor) { + return visitor._visit(this); + } +}, AST_Statement); + +var AST_StatementWithBody = DEFNODE("StatementWithBody", "body", { + $documentation: "Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`", + $propdoc: { + body: "[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.body._walk(visitor); + }); + } +}, AST_Statement); + +var AST_LabeledStatement = DEFNODE("LabeledStatement", "label", { + $documentation: "Statement with a label", + $propdoc: { + label: "[AST_Label] a label definition" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.label._walk(visitor); + this.body._walk(visitor); + }); + } +}, AST_StatementWithBody); + +var AST_DWLoop = DEFNODE("DWLoop", "condition", { + $documentation: "Base class for do/while statements", + $propdoc: { + condition: "[AST_Node] the loop condition. Should not be instanceof AST_Statement" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.condition._walk(visitor); + this.body._walk(visitor); + }); + } +}, AST_StatementWithBody); + +var AST_Do = DEFNODE("Do", null, { + $documentation: "A `do` statement", +}, AST_DWLoop); + +var AST_While = DEFNODE("While", null, { + $documentation: "A `while` statement", +}, AST_DWLoop); + +var AST_For = DEFNODE("For", "init condition step", { + $documentation: "A `for` statement", + $propdoc: { + init: "[AST_Node?] the `for` initialization code, or null if empty", + condition: "[AST_Node?] the `for` termination clause, or null if empty", + step: "[AST_Node?] the `for` update clause, or null if empty" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + if (this.init) this.init._walk(visitor); + if (this.condition) this.condition._walk(visitor); + if (this.step) this.step._walk(visitor); + this.body._walk(visitor); + }); + } +}, AST_StatementWithBody); + +var AST_ForIn = DEFNODE("ForIn", "init name object", { + $documentation: "A `for ... in` statement", + $propdoc: { + init: "[AST_Node] the `for/in` initialization code", + name: "[AST_SymbolRef?] the loop variable, only if `init` is AST_Var", + object: "[AST_Node] the object that we're looping through" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.init._walk(visitor); + this.object._walk(visitor); + this.body._walk(visitor); + }); + } +}, AST_StatementWithBody); + +var AST_With = DEFNODE("With", "expression", { + $documentation: "A `with` statement", + $propdoc: { + expression: "[AST_Node] the `with` expression" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.expression._walk(visitor); + this.body._walk(visitor); + }); + } +}, AST_StatementWithBody); + +/* -----[ scope and functions ]----- */ + +var AST_Scope = DEFNODE("Scope", "directives variables functions uses_with uses_eval parent_scope enclosed cname", { + $documentation: "Base class for all statements introducing a lexical scope", + $propdoc: { + directives: "[string*/S] an array of directives declared in this scope", + variables: "[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope", + functions: "[Object/S] like `variables`, but only lists function declarations", + uses_with: "[boolean/S] tells whether this scope uses the `with` statement", + uses_eval: "[boolean/S] tells whether this scope contains a direct call to the global `eval`", + parent_scope: "[AST_Scope?/S] link to the parent scope", + enclosed: "[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes", + cname: "[integer/S] current index for mangling variables (used internally by the mangler)", + }, +}, AST_Block); + +var AST_Toplevel = DEFNODE("Toplevel", "globals", { + $documentation: "The toplevel scope", + $propdoc: { + globals: "[Object/S] a map of name -> SymbolDef for all undeclared names", + }, + wrap_commonjs: function(name, export_all) { + var self = this; + var to_export = []; + if (export_all) { + self.figure_out_scope(); + self.walk(new TreeWalker(function(node){ + if (node instanceof AST_SymbolDeclaration && node.definition().global) { + if (!find_if(function(n){ return n.name == node.name }, to_export)) + to_export.push(node); + } + })); + } + var wrapped_tl = "(function(exports, global){ global['" + name + "'] = exports; '$ORIG'; '$EXPORTS'; }({}, (function(){return this}())))"; + wrapped_tl = parse(wrapped_tl); + wrapped_tl = wrapped_tl.transform(new TreeTransformer(function before(node){ + if (node instanceof AST_SimpleStatement) { + node = node.body; + if (node instanceof AST_String) switch (node.getValue()) { + case "$ORIG": + return MAP.splice(self.body); + case "$EXPORTS": + var body = []; + to_export.forEach(function(sym){ + body.push(new AST_SimpleStatement({ + body: new AST_Assign({ + left: new AST_Sub({ + expression: new AST_SymbolRef({ name: "exports" }), + property: new AST_String({ value: sym.name }), + }), + operator: "=", + right: new AST_SymbolRef(sym), + }), + })); + }); + return MAP.splice(body); + } + } + })); + return wrapped_tl; + } +}, AST_Scope); + +var AST_Lambda = DEFNODE("Lambda", "name argnames uses_arguments", { + $documentation: "Base class for functions", + $propdoc: { + name: "[AST_SymbolDeclaration?] the name of this function", + argnames: "[AST_SymbolFunarg*] array of function arguments", + uses_arguments: "[boolean/S] tells whether this function accesses the arguments array" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + if (this.name) this.name._walk(visitor); + this.argnames.forEach(function(arg){ + arg._walk(visitor); + }); + walk_body(this, visitor); + }); + } +}, AST_Scope); + +var AST_Accessor = DEFNODE("Accessor", null, { + $documentation: "A setter/getter function" +}, AST_Lambda); + +var AST_Function = DEFNODE("Function", null, { + $documentation: "A function expression" +}, AST_Lambda); + +var AST_Defun = DEFNODE("Defun", null, { + $documentation: "A function definition" +}, AST_Lambda); + +/* -----[ JUMPS ]----- */ + +var AST_Jump = DEFNODE("Jump", null, { + $documentation: "Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)" +}, AST_Statement); + +var AST_Exit = DEFNODE("Exit", "value", { + $documentation: "Base class for “exits” (`return` and `throw`)", + $propdoc: { + value: "[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return" + }, + _walk: function(visitor) { + return visitor._visit(this, this.value && function(){ + this.value._walk(visitor); + }); + } +}, AST_Jump); + +var AST_Return = DEFNODE("Return", null, { + $documentation: "A `return` statement" +}, AST_Exit); + +var AST_Throw = DEFNODE("Throw", null, { + $documentation: "A `throw` statement" +}, AST_Exit); + +var AST_LoopControl = DEFNODE("LoopControl", "label", { + $documentation: "Base class for loop control statements (`break` and `continue`)", + $propdoc: { + label: "[AST_LabelRef?] the label, or null if none", + }, + _walk: function(visitor) { + return visitor._visit(this, this.label && function(){ + this.label._walk(visitor); + }); + } +}, AST_Jump); + +var AST_Break = DEFNODE("Break", null, { + $documentation: "A `break` statement" +}, AST_LoopControl); + +var AST_Continue = DEFNODE("Continue", null, { + $documentation: "A `continue` statement" +}, AST_LoopControl); + +/* -----[ IF ]----- */ + +var AST_If = DEFNODE("If", "condition alternative", { + $documentation: "A `if` statement", + $propdoc: { + condition: "[AST_Node] the `if` condition", + alternative: "[AST_Statement?] the `else` part, or null if not present" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.condition._walk(visitor); + this.body._walk(visitor); + if (this.alternative) this.alternative._walk(visitor); + }); + } +}, AST_StatementWithBody); + +/* -----[ SWITCH ]----- */ + +var AST_Switch = DEFNODE("Switch", "expression", { + $documentation: "A `switch` statement", + $propdoc: { + expression: "[AST_Node] the `switch` “discriminant”" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.expression._walk(visitor); + walk_body(this, visitor); + }); + } +}, AST_Block); + +var AST_SwitchBranch = DEFNODE("SwitchBranch", null, { + $documentation: "Base class for `switch` branches", +}, AST_Block); + +var AST_Default = DEFNODE("Default", null, { + $documentation: "A `default` switch branch", +}, AST_SwitchBranch); + +var AST_Case = DEFNODE("Case", "expression", { + $documentation: "A `case` switch branch", + $propdoc: { + expression: "[AST_Node] the `case` expression" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.expression._walk(visitor); + walk_body(this, visitor); + }); + } +}, AST_SwitchBranch); + +/* -----[ EXCEPTIONS ]----- */ + +var AST_Try = DEFNODE("Try", "bcatch bfinally", { + $documentation: "A `try` statement", + $propdoc: { + bcatch: "[AST_Catch?] the catch block, or null if not present", + bfinally: "[AST_Finally?] the finally block, or null if not present" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + walk_body(this, visitor); + if (this.bcatch) this.bcatch._walk(visitor); + if (this.bfinally) this.bfinally._walk(visitor); + }); + } +}, AST_Block); + +// XXX: this is wrong according to ECMA-262 (12.4). the catch block +// should introduce another scope, as the argname should be visible +// only inside the catch block. However, doing it this way because of +// IE which simply introduces the name in the surrounding scope. If +// we ever want to fix this then AST_Catch should inherit from +// AST_Scope. +var AST_Catch = DEFNODE("Catch", "argname", { + $documentation: "A `catch` node; only makes sense as part of a `try` statement", + $propdoc: { + argname: "[AST_SymbolCatch] symbol for the exception" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.argname._walk(visitor); + walk_body(this, visitor); + }); + } +}, AST_Block); + +var AST_Finally = DEFNODE("Finally", null, { + $documentation: "A `finally` node; only makes sense as part of a `try` statement" +}, AST_Block); + +/* -----[ VAR/CONST ]----- */ + +var AST_Definitions = DEFNODE("Definitions", "definitions", { + $documentation: "Base class for `var` or `const` nodes (variable declarations/initializations)", + $propdoc: { + definitions: "[AST_VarDef*] array of variable definitions" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.definitions.forEach(function(def){ + def._walk(visitor); + }); + }); + } +}, AST_Statement); + +var AST_Var = DEFNODE("Var", null, { + $documentation: "A `var` statement" +}, AST_Definitions); + +var AST_Const = DEFNODE("Const", null, { + $documentation: "A `const` statement" +}, AST_Definitions); + +var AST_VarDef = DEFNODE("VarDef", "name value", { + $documentation: "A variable declaration; only appears in a AST_Definitions node", + $propdoc: { + name: "[AST_SymbolVar|AST_SymbolConst] name of the variable", + value: "[AST_Node?] initializer, or null of there's no initializer" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.name._walk(visitor); + if (this.value) this.value._walk(visitor); + }); + } +}); + +/* -----[ OTHER ]----- */ + +var AST_Call = DEFNODE("Call", "expression args", { + $documentation: "A function call expression", + $propdoc: { + expression: "[AST_Node] expression to invoke as function", + args: "[AST_Node*] array of arguments" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.expression._walk(visitor); + this.args.forEach(function(arg){ + arg._walk(visitor); + }); + }); + } +}); + +var AST_New = DEFNODE("New", null, { + $documentation: "An object instantiation. Derives from a function call since it has exactly the same properties" +}, AST_Call); + +var AST_Seq = DEFNODE("Seq", "car cdr", { + $documentation: "A sequence expression (two comma-separated expressions)", + $propdoc: { + car: "[AST_Node] first element in sequence", + cdr: "[AST_Node] second element in sequence" + }, + $cons: function(x, y) { + var seq = new AST_Seq(x); + seq.car = x; + seq.cdr = y; + return seq; + }, + $from_array: function(array) { + if (array.length == 0) return null; + if (array.length == 1) return array[0].clone(); + var list = null; + for (var i = array.length; --i >= 0;) { + list = AST_Seq.cons(array[i], list); + } + var p = list; + while (p) { + if (p.cdr && !p.cdr.cdr) { + p.cdr = p.cdr.car; + break; + } + p = p.cdr; + } + return list; + }, + to_array: function() { + var p = this, a = []; + while (p) { + a.push(p.car); + if (p.cdr && !(p.cdr instanceof AST_Seq)) { + a.push(p.cdr); + break; + } + p = p.cdr; + } + return a; + }, + add: function(node) { + var p = this; + while (p) { + if (!(p.cdr instanceof AST_Seq)) { + var cell = AST_Seq.cons(p.cdr, node); + return p.cdr = cell; + } + p = p.cdr; + } + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.car._walk(visitor); + if (this.cdr) this.cdr._walk(visitor); + }); + } +}); + +var AST_PropAccess = DEFNODE("PropAccess", "expression property", { + $documentation: "Base class for property access expressions, i.e. `a.foo` or `a[\"foo\"]`", + $propdoc: { + expression: "[AST_Node] the “container” expression", + property: "[AST_Node|string] the property to access. For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node" + } +}); + +var AST_Dot = DEFNODE("Dot", null, { + $documentation: "A dotted property access expression", + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.expression._walk(visitor); + }); + } +}, AST_PropAccess); + +var AST_Sub = DEFNODE("Sub", null, { + $documentation: "Index-style property access, i.e. `a[\"foo\"]`", + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.expression._walk(visitor); + this.property._walk(visitor); + }); + } +}, AST_PropAccess); + +var AST_Unary = DEFNODE("Unary", "operator expression", { + $documentation: "Base class for unary expressions", + $propdoc: { + operator: "[string] the operator", + expression: "[AST_Node] expression that this unary operator applies to" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.expression._walk(visitor); + }); + } +}); + +var AST_UnaryPrefix = DEFNODE("UnaryPrefix", null, { + $documentation: "Unary prefix expression, i.e. `typeof i` or `++i`" +}, AST_Unary); + +var AST_UnaryPostfix = DEFNODE("UnaryPostfix", null, { + $documentation: "Unary postfix expression, i.e. `i++`" +}, AST_Unary); + +var AST_Binary = DEFNODE("Binary", "left operator right", { + $documentation: "Binary expression, i.e. `a + b`", + $propdoc: { + left: "[AST_Node] left-hand side expression", + operator: "[string] the operator", + right: "[AST_Node] right-hand side expression" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.left._walk(visitor); + this.right._walk(visitor); + }); + } +}); + +var AST_Conditional = DEFNODE("Conditional", "condition consequent alternative", { + $documentation: "Conditional expression using the ternary operator, i.e. `a ? b : c`", + $propdoc: { + condition: "[AST_Node]", + consequent: "[AST_Node]", + alternative: "[AST_Node]" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.condition._walk(visitor); + this.consequent._walk(visitor); + this.alternative._walk(visitor); + }); + } +}); + +var AST_Assign = DEFNODE("Assign", null, { + $documentation: "An assignment expression — `a = b + 5`", +}, AST_Binary); + +/* -----[ LITERALS ]----- */ + +var AST_Array = DEFNODE("Array", "elements", { + $documentation: "An array literal", + $propdoc: { + elements: "[AST_Node*] array of elements" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.elements.forEach(function(el){ + el._walk(visitor); + }); + }); + } +}); + +var AST_Object = DEFNODE("Object", "properties", { + $documentation: "An object literal", + $propdoc: { + properties: "[AST_ObjectProperty*] array of properties" + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.properties.forEach(function(prop){ + prop._walk(visitor); + }); + }); + } +}); + +var AST_ObjectProperty = DEFNODE("ObjectProperty", "key value", { + $documentation: "Base class for literal object properties", + $propdoc: { + key: "[string] the property name; it's always a plain string in our AST, no matter if it was a string, number or identifier in original code", + value: "[AST_Node] property value. For setters and getters this is an AST_Function." + }, + _walk: function(visitor) { + return visitor._visit(this, function(){ + this.value._walk(visitor); + }); + } +}); + +var AST_ObjectKeyVal = DEFNODE("ObjectKeyVal", null, { + $documentation: "A key: value object property", +}, AST_ObjectProperty); + +var AST_ObjectSetter = DEFNODE("ObjectSetter", null, { + $documentation: "An object setter property", +}, AST_ObjectProperty); + +var AST_ObjectGetter = DEFNODE("ObjectGetter", null, { + $documentation: "An object getter property", +}, AST_ObjectProperty); + +var AST_Symbol = DEFNODE("Symbol", "scope name thedef", { + $propdoc: { + name: "[string] name of this symbol", + scope: "[AST_Scope/S] the current scope (not necessarily the definition scope)", + thedef: "[SymbolDef/S] the definition of this symbol" + }, + $documentation: "Base class for all symbols", +}); + +var AST_SymbolAccessor = DEFNODE("SymbolAccessor", null, { + $documentation: "The name of a property accessor (setter/getter function)" +}, AST_Symbol); + +var AST_SymbolDeclaration = DEFNODE("SymbolDeclaration", "init", { + $documentation: "A declaration symbol (symbol in var/const, function name or argument, symbol in catch)", + $propdoc: { + init: "[AST_Node*/S] array of initializers for this declaration." + } +}, AST_Symbol); + +var AST_SymbolVar = DEFNODE("SymbolVar", null, { + $documentation: "Symbol defining a variable", +}, AST_SymbolDeclaration); + +var AST_SymbolConst = DEFNODE("SymbolConst", null, { + $documentation: "A constant declaration" +}, AST_SymbolDeclaration); + +var AST_SymbolFunarg = DEFNODE("SymbolFunarg", null, { + $documentation: "Symbol naming a function argument", +}, AST_SymbolVar); + +var AST_SymbolDefun = DEFNODE("SymbolDefun", null, { + $documentation: "Symbol defining a function", +}, AST_SymbolDeclaration); + +var AST_SymbolLambda = DEFNODE("SymbolLambda", null, { + $documentation: "Symbol naming a function expression", +}, AST_SymbolDeclaration); + +var AST_SymbolCatch = DEFNODE("SymbolCatch", null, { + $documentation: "Symbol naming the exception in catch", +}, AST_SymbolDeclaration); + +var AST_Label = DEFNODE("Label", "references", { + $documentation: "Symbol naming a label (declaration)", + $propdoc: { + references: "[AST_LabelRef*] a list of nodes referring to this label" + } +}, AST_Symbol); + +var AST_SymbolRef = DEFNODE("SymbolRef", null, { + $documentation: "Reference to some symbol (not definition/declaration)", +}, AST_Symbol); + +var AST_LabelRef = DEFNODE("LabelRef", null, { + $documentation: "Reference to a label symbol", +}, AST_Symbol); + +var AST_This = DEFNODE("This", null, { + $documentation: "The `this` symbol", +}, AST_Symbol); + +var AST_Constant = DEFNODE("Constant", null, { + $documentation: "Base class for all constants", + getValue: function() { + return this.value; + } +}); + +var AST_String = DEFNODE("String", "value", { + $documentation: "A string literal", + $propdoc: { + value: "[string] the contents of this string" + } +}, AST_Constant); + +var AST_Number = DEFNODE("Number", "value", { + $documentation: "A number literal", + $propdoc: { + value: "[number] the numeric value" + } +}, AST_Constant); + +var AST_RegExp = DEFNODE("RegExp", "value", { + $documentation: "A regexp literal", + $propdoc: { + value: "[RegExp] the actual regexp" + } +}, AST_Constant); + +var AST_Atom = DEFNODE("Atom", null, { + $documentation: "Base class for atoms", +}, AST_Constant); + +var AST_Null = DEFNODE("Null", null, { + $documentation: "The `null` atom", + value: null +}, AST_Atom); + +var AST_NaN = DEFNODE("NaN", null, { + $documentation: "The impossible value", + value: 0/0 +}, AST_Atom); + +var AST_Undefined = DEFNODE("Undefined", null, { + $documentation: "The `undefined` value", + value: (function(){}()) +}, AST_Atom); + +var AST_Hole = DEFNODE("Hole", null, { + $documentation: "A hole in an array", + value: (function(){}()) +}, AST_Atom); + +var AST_Infinity = DEFNODE("Infinity", null, { + $documentation: "The `Infinity` value", + value: 1/0 +}, AST_Atom); + +var AST_Boolean = DEFNODE("Boolean", null, { + $documentation: "Base class for booleans", +}, AST_Atom); + +var AST_False = DEFNODE("False", null, { + $documentation: "The `false` atom", + value: false +}, AST_Boolean); + +var AST_True = DEFNODE("True", null, { + $documentation: "The `true` atom", + value: true +}, AST_Boolean); + +/* -----[ TreeWalker ]----- */ + +function TreeWalker(callback) { + this.visit = callback; + this.stack = []; +}; +TreeWalker.prototype = { + _visit: function(node, descend) { + this.stack.push(node); + var ret = this.visit(node, descend ? function(){ + descend.call(node); + } : noop); + if (!ret && descend) { + descend.call(node); + } + this.stack.pop(); + return ret; + }, + parent: function(n) { + return this.stack[this.stack.length - 2 - (n || 0)]; + }, + push: function (node) { + this.stack.push(node); + }, + pop: function() { + return this.stack.pop(); + }, + self: function() { + return this.stack[this.stack.length - 1]; + }, + find_parent: function(type) { + var stack = this.stack; + for (var i = stack.length; --i >= 0;) { + var x = stack[i]; + if (x instanceof type) return x; + } + }, + in_boolean_context: function() { + var stack = this.stack; + var i = stack.length, self = stack[--i]; + while (i > 0) { + var p = stack[--i]; + if ((p instanceof AST_If && p.condition === self) || + (p instanceof AST_Conditional && p.condition === self) || + (p instanceof AST_DWLoop && p.condition === self) || + (p instanceof AST_For && p.condition === self) || + (p instanceof AST_UnaryPrefix && p.operator == "!" && p.expression === self)) + { + return true; + } + if (!(p instanceof AST_Binary && (p.operator == "&&" || p.operator == "||"))) + return false; + self = p; + } + }, + loopcontrol_target: function(label) { + var stack = this.stack; + if (label) { + for (var i = stack.length; --i >= 0;) { + var x = stack[i]; + if (x instanceof AST_LabeledStatement && x.label.name == label.name) { + return x.body; + } + } + } else { + for (var i = stack.length; --i >= 0;) { + var x = stack[i]; + if (x instanceof AST_Switch + || x instanceof AST_For + || x instanceof AST_ForIn + || x instanceof AST_DWLoop) return x; + } + } + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js new file mode 100644 index 0000000..ca23c40 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js @@ -0,0 +1,1968 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +function Compressor(options, false_by_default) { + if (!(this instanceof Compressor)) + return new Compressor(options, false_by_default); + TreeTransformer.call(this, this.before, this.after); + this.options = defaults(options, { + sequences : !false_by_default, + properties : !false_by_default, + dead_code : !false_by_default, + drop_debugger : !false_by_default, + unsafe : !false_by_default, + unsafe_comps : false, + conditionals : !false_by_default, + comparisons : !false_by_default, + evaluate : !false_by_default, + booleans : !false_by_default, + loops : !false_by_default, + unused : !false_by_default, + hoist_funs : !false_by_default, + hoist_vars : false, + if_return : !false_by_default, + join_vars : !false_by_default, + cascade : !false_by_default, + side_effects : !false_by_default, + + warnings : true, + global_defs : {} + }, true); +}; + +Compressor.prototype = new TreeTransformer; +merge(Compressor.prototype, { + option: function(key) { return this.options[key] }, + warn: function() { + if (this.options.warnings) + AST_Node.warn.apply(AST_Node, arguments); + }, + before: function(node, descend, in_list) { + if (node._squeezed) return node; + if (node instanceof AST_Scope) { + node.drop_unused(this); + node = node.hoist_declarations(this); + } + descend(node, this); + node = node.optimize(this); + if (node instanceof AST_Scope) { + // dead code removal might leave further unused declarations. + // this'll usually save very few bytes, but the performance + // hit seems negligible so I'll just drop it here. + + // no point to repeat warnings. + var save_warnings = this.options.warnings; + this.options.warnings = false; + node.drop_unused(this); + this.options.warnings = save_warnings; + } + node._squeezed = true; + return node; + } +}); + +(function(){ + + function OPT(node, optimizer) { + node.DEFMETHOD("optimize", function(compressor){ + var self = this; + if (self._optimized) return self; + var opt = optimizer(self, compressor); + opt._optimized = true; + if (opt === self) return opt; + return opt.transform(compressor); + }); + }; + + OPT(AST_Node, function(self, compressor){ + return self; + }); + + AST_Node.DEFMETHOD("equivalent_to", function(node){ + // XXX: this is a rather expensive way to test two node's equivalence: + return this.print_to_string() == node.print_to_string(); + }); + + function make_node(ctor, orig, props) { + if (!props) props = {}; + if (orig) { + if (!props.start) props.start = orig.start; + if (!props.end) props.end = orig.end; + } + return new ctor(props); + }; + + function make_node_from_constant(compressor, val, orig) { + // XXX: WIP. + // if (val instanceof AST_Node) return val.transform(new TreeTransformer(null, function(node){ + // if (node instanceof AST_SymbolRef) { + // var scope = compressor.find_parent(AST_Scope); + // var def = scope.find_variable(node); + // node.thedef = def; + // return node; + // } + // })).transform(compressor); + + if (val instanceof AST_Node) return val.transform(compressor); + switch (typeof val) { + case "string": + return make_node(AST_String, orig, { + value: val + }).optimize(compressor); + case "number": + return make_node(isNaN(val) ? AST_NaN : AST_Number, orig, { + value: val + }).optimize(compressor); + case "boolean": + return make_node(val ? AST_True : AST_False, orig); + case "undefined": + return make_node(AST_Undefined, orig).optimize(compressor); + default: + if (val === null) { + return make_node(AST_Null, orig).optimize(compressor); + } + if (val instanceof RegExp) { + return make_node(AST_RegExp, orig).optimize(compressor); + } + throw new Error(string_template("Can't handle constant of type: {type}", { + type: typeof val + })); + } + }; + + function as_statement_array(thing) { + if (thing === null) return []; + if (thing instanceof AST_BlockStatement) return thing.body; + if (thing instanceof AST_EmptyStatement) return []; + if (thing instanceof AST_Statement) return [ thing ]; + throw new Error("Can't convert thing to statement array"); + }; + + function is_empty(thing) { + if (thing === null) return true; + if (thing instanceof AST_EmptyStatement) return true; + if (thing instanceof AST_BlockStatement) return thing.body.length == 0; + return false; + }; + + function loop_body(x) { + if (x instanceof AST_Switch) return x; + if (x instanceof AST_For || x instanceof AST_ForIn || x instanceof AST_DWLoop) { + return (x.body instanceof AST_BlockStatement ? x.body : x); + } + return x; + }; + + function tighten_body(statements, compressor) { + var CHANGED; + do { + CHANGED = false; + statements = eliminate_spurious_blocks(statements); + if (compressor.option("dead_code")) { + statements = eliminate_dead_code(statements, compressor); + } + if (compressor.option("if_return")) { + statements = handle_if_return(statements, compressor); + } + if (compressor.option("sequences")) { + statements = sequencesize(statements, compressor); + } + if (compressor.option("join_vars")) { + statements = join_consecutive_vars(statements, compressor); + } + } while (CHANGED); + return statements; + + function eliminate_spurious_blocks(statements) { + var seen_dirs = []; + return statements.reduce(function(a, stat){ + if (stat instanceof AST_BlockStatement) { + CHANGED = true; + a.push.apply(a, eliminate_spurious_blocks(stat.body)); + } else if (stat instanceof AST_EmptyStatement) { + CHANGED = true; + } else if (stat instanceof AST_Directive) { + if (seen_dirs.indexOf(stat.value) < 0) { + a.push(stat); + seen_dirs.push(stat.value); + } else { + CHANGED = true; + } + } else { + a.push(stat); + } + return a; + }, []); + }; + + function handle_if_return(statements, compressor) { + var self = compressor.self(); + var in_lambda = self instanceof AST_Lambda; + var ret = []; + loop: for (var i = statements.length; --i >= 0;) { + var stat = statements[i]; + switch (true) { + case (in_lambda && stat instanceof AST_Return && !stat.value && ret.length == 0): + CHANGED = true; + // note, ret.length is probably always zero + // because we drop unreachable code before this + // step. nevertheless, it's good to check. + continue loop; + case stat instanceof AST_If: + if (stat.body instanceof AST_Return) { + //--- + // pretty silly case, but: + // if (foo()) return; return; ==> foo(); return; + if (((in_lambda && ret.length == 0) + || (ret[0] instanceof AST_Return && !ret[0].value)) + && !stat.body.value && !stat.alternative) { + CHANGED = true; + var cond = make_node(AST_SimpleStatement, stat.condition, { + body: stat.condition + }); + ret.unshift(cond); + continue loop; + } + //--- + // if (foo()) return x; return y; ==> return foo() ? x : y; + if (ret[0] instanceof AST_Return && stat.body.value && ret[0].value && !stat.alternative) { + CHANGED = true; + stat = stat.clone(); + stat.alternative = ret[0]; + ret[0] = stat.transform(compressor); + continue loop; + } + //--- + // if (foo()) return x; [ return ; ] ==> return foo() ? x : undefined; + if ((ret.length == 0 || ret[0] instanceof AST_Return) && stat.body.value && !stat.alternative && in_lambda) { + CHANGED = true; + stat = stat.clone(); + stat.alternative = ret[0] || make_node(AST_Return, stat, { + value: make_node(AST_Undefined, stat) + }); + ret[0] = stat.transform(compressor); + continue loop; + } + //--- + // if (foo()) return; [ else x... ]; y... ==> if (!foo()) { x...; y... } + if (!stat.body.value && in_lambda) { + CHANGED = true; + stat = stat.clone(); + stat.condition = stat.condition.negate(compressor); + stat.body = make_node(AST_BlockStatement, stat, { + body: as_statement_array(stat.alternative).concat(ret) + }); + stat.alternative = null; + ret = [ stat.transform(compressor) ]; + continue loop; + } + //--- + if (ret.length == 1 && in_lambda && ret[0] instanceof AST_SimpleStatement + && (!stat.alternative || stat.alternative instanceof AST_SimpleStatement)) { + CHANGED = true; + ret.push(make_node(AST_Return, ret[0], { + value: make_node(AST_Undefined, ret[0]) + }).transform(compressor)); + ret = as_statement_array(stat.alternative).concat(ret); + ret.unshift(stat); + continue loop; + } + } + + var ab = aborts(stat.body); + var lct = ab instanceof AST_LoopControl ? compressor.loopcontrol_target(ab.label) : null; + if (ab && ((ab instanceof AST_Return && !ab.value && in_lambda) + || (ab instanceof AST_Continue && self === loop_body(lct)) + || (ab instanceof AST_Break && lct instanceof AST_BlockStatement && self === lct))) { + if (ab.label) { + remove(ab.label.thedef.references, ab.label); + } + CHANGED = true; + var body = as_statement_array(stat.body).slice(0, -1); + stat = stat.clone(); + stat.condition = stat.condition.negate(compressor); + stat.body = make_node(AST_BlockStatement, stat, { + body: ret + }); + stat.alternative = make_node(AST_BlockStatement, stat, { + body: body + }); + ret = [ stat.transform(compressor) ]; + continue loop; + } + + var ab = aborts(stat.alternative); + var lct = ab instanceof AST_LoopControl ? compressor.loopcontrol_target(ab.label) : null; + if (ab && ((ab instanceof AST_Return && !ab.value && in_lambda) + || (ab instanceof AST_Continue && self === loop_body(lct)) + || (ab instanceof AST_Break && lct instanceof AST_BlockStatement && self === lct))) { + if (ab.label) { + remove(ab.label.thedef.references, ab.label); + } + CHANGED = true; + stat = stat.clone(); + stat.body = make_node(AST_BlockStatement, stat.body, { + body: as_statement_array(stat.body).concat(ret) + }); + stat.alternative = make_node(AST_BlockStatement, stat.alternative, { + body: as_statement_array(stat.alternative).slice(0, -1) + }); + ret = [ stat.transform(compressor) ]; + continue loop; + } + + ret.unshift(stat); + break; + default: + ret.unshift(stat); + break; + } + } + return ret; + }; + + function eliminate_dead_code(statements, compressor) { + var has_quit = false; + var orig = statements.length; + var self = compressor.self(); + statements = statements.reduce(function(a, stat){ + if (has_quit) { + extract_declarations_from_unreachable_code(compressor, stat, a); + } else { + if (stat instanceof AST_LoopControl) { + var lct = compressor.loopcontrol_target(stat.label); + if ((stat instanceof AST_Break + && lct instanceof AST_BlockStatement + && loop_body(lct) === self) || (stat instanceof AST_Continue + && loop_body(lct) === self)) { + if (stat.label) { + remove(stat.label.thedef.references, stat.label); + } + } else { + a.push(stat); + } + } else { + a.push(stat); + } + if (aborts(stat)) has_quit = true; + } + return a; + }, []); + CHANGED = statements.length != orig; + return statements; + }; + + function sequencesize(statements, compressor) { + if (statements.length < 2) return statements; + var seq = [], ret = []; + function push_seq() { + seq = AST_Seq.from_array(seq); + if (seq) ret.push(make_node(AST_SimpleStatement, seq, { + body: seq + })); + seq = []; + }; + statements.forEach(function(stat){ + if (stat instanceof AST_SimpleStatement) seq.push(stat.body); + else push_seq(), ret.push(stat); + }); + push_seq(); + ret = sequencesize_2(ret, compressor); + CHANGED = ret.length != statements.length; + return ret; + }; + + function sequencesize_2(statements, compressor) { + function cons_seq(right) { + ret.pop(); + var left = prev.body; + if (left instanceof AST_Seq) { + left.add(right); + } else { + left = AST_Seq.cons(left, right); + } + return left.transform(compressor); + }; + var ret = [], prev = null; + statements.forEach(function(stat){ + if (prev) { + if (stat instanceof AST_For) { + var opera = {}; + try { + prev.body.walk(new TreeWalker(function(node){ + if (node instanceof AST_Binary && node.operator == "in") + throw opera; + })); + if (stat.init && !(stat.init instanceof AST_Definitions)) { + stat.init = cons_seq(stat.init); + } + else if (!stat.init) { + stat.init = prev.body; + ret.pop(); + } + } catch(ex) { + if (ex !== opera) throw ex; + } + } + else if (stat instanceof AST_If) { + stat.condition = cons_seq(stat.condition); + } + else if (stat instanceof AST_With) { + stat.expression = cons_seq(stat.expression); + } + else if (stat instanceof AST_Exit && stat.value) { + stat.value = cons_seq(stat.value); + } + else if (stat instanceof AST_Exit) { + stat.value = cons_seq(make_node(AST_Undefined, stat)); + } + else if (stat instanceof AST_Switch) { + stat.expression = cons_seq(stat.expression); + } + } + ret.push(stat); + prev = stat instanceof AST_SimpleStatement ? stat : null; + }); + return ret; + }; + + function join_consecutive_vars(statements, compressor) { + var prev = null; + return statements.reduce(function(a, stat){ + if (stat instanceof AST_Definitions && prev && prev.TYPE == stat.TYPE) { + prev.definitions = prev.definitions.concat(stat.definitions); + CHANGED = true; + } + else if (stat instanceof AST_For + && prev instanceof AST_Definitions + && (!stat.init || stat.init.TYPE == prev.TYPE)) { + CHANGED = true; + a.pop(); + if (stat.init) { + stat.init.definitions = prev.definitions.concat(stat.init.definitions); + } else { + stat.init = prev; + } + a.push(stat); + prev = stat; + } + else { + prev = stat; + a.push(stat); + } + return a; + }, []); + }; + + }; + + function extract_declarations_from_unreachable_code(compressor, stat, target) { + compressor.warn("Dropping unreachable code [{file}:{line},{col}]", stat.start); + stat.walk(new TreeWalker(function(node){ + if (node instanceof AST_Definitions) { + compressor.warn("Declarations in unreachable code! [{file}:{line},{col}]", node.start); + node.remove_initializers(); + target.push(node); + return true; + } + if (node instanceof AST_Defun) { + target.push(node); + return true; + } + if (node instanceof AST_Scope) { + return true; + } + })); + }; + + /* -----[ boolean/negation helpers ]----- */ + + // methods to determine whether an expression has a boolean result type + (function (def){ + var unary_bool = [ "!", "delete" ]; + var binary_bool = [ "in", "instanceof", "==", "!=", "===", "!==", "<", "<=", ">=", ">" ]; + def(AST_Node, function(){ return false }); + def(AST_UnaryPrefix, function(){ + return member(this.operator, unary_bool); + }); + def(AST_Binary, function(){ + return member(this.operator, binary_bool) || + ( (this.operator == "&&" || this.operator == "||") && + this.left.is_boolean() && this.right.is_boolean() ); + }); + def(AST_Conditional, function(){ + return this.consequent.is_boolean() && this.alternative.is_boolean(); + }); + def(AST_Assign, function(){ + return this.operator == "=" && this.right.is_boolean(); + }); + def(AST_Seq, function(){ + return this.cdr.is_boolean(); + }); + def(AST_True, function(){ return true }); + def(AST_False, function(){ return true }); + })(function(node, func){ + node.DEFMETHOD("is_boolean", func); + }); + + // methods to determine if an expression has a string result type + (function (def){ + def(AST_Node, function(){ return false }); + def(AST_String, function(){ return true }); + def(AST_UnaryPrefix, function(){ + return this.operator == "typeof"; + }); + def(AST_Binary, function(compressor){ + return this.operator == "+" && + (this.left.is_string(compressor) || this.right.is_string(compressor)); + }); + def(AST_Assign, function(compressor){ + return (this.operator == "=" || this.operator == "+=") && this.right.is_string(compressor); + }); + def(AST_Seq, function(compressor){ + return this.cdr.is_string(compressor); + }); + def(AST_Conditional, function(compressor){ + return this.consequent.is_string(compressor) && this.alternative.is_string(compressor); + }); + def(AST_Call, function(compressor){ + return compressor.option("unsafe") + && this.expression instanceof AST_SymbolRef + && this.expression.name == "String" + && this.expression.undeclared(); + }); + })(function(node, func){ + node.DEFMETHOD("is_string", func); + }); + + function best_of(ast1, ast2) { + return ast1.print_to_string().length > + ast2.print_to_string().length + ? ast2 : ast1; + }; + + // methods to evaluate a constant expression + (function (def){ + // The evaluate method returns an array with one or two + // elements. If the node has been successfully reduced to a + // constant, then the second element tells us the value; + // otherwise the second element is missing. The first element + // of the array is always an AST_Node descendant; when + // evaluation was successful it's a node that represents the + // constant; otherwise it's the original node. + AST_Node.DEFMETHOD("evaluate", function(compressor){ + if (!compressor.option("evaluate")) return [ this ]; + try { + var val = this._eval(), ast = make_node_from_constant(compressor, val, this); + return [ best_of(ast, this), val ]; + } catch(ex) { + if (ex !== def) throw ex; + return [ this ]; + } + }); + def(AST_Statement, function(){ + throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]", this.start)); + }); + def(AST_Function, function(){ + // XXX: AST_Function inherits from AST_Scope, which itself + // inherits from AST_Statement; however, an AST_Function + // isn't really a statement. This could byte in other + // places too. :-( Wish JS had multiple inheritance. + return [ this ]; + }); + function ev(node) { + return node._eval(); + }; + def(AST_Node, function(){ + throw def; // not constant + }); + def(AST_Constant, function(){ + return this.getValue(); + }); + def(AST_UnaryPrefix, function(){ + var e = this.expression; + switch (this.operator) { + case "!": return !ev(e); + case "typeof": return typeof ev(e); + case "void": return void ev(e); + case "~": return ~ev(e); + case "-": + e = ev(e); + if (e === 0) throw def; + return -e; + case "+": return +ev(e); + } + throw def; + }); + def(AST_Binary, function(){ + var left = this.left, right = this.right; + switch (this.operator) { + case "&&" : return ev(left) && ev(right); + case "||" : return ev(left) || ev(right); + case "|" : return ev(left) | ev(right); + case "&" : return ev(left) & ev(right); + case "^" : return ev(left) ^ ev(right); + case "+" : return ev(left) + ev(right); + case "*" : return ev(left) * ev(right); + case "/" : return ev(left) / ev(right); + case "%" : return ev(left) % ev(right); + case "-" : return ev(left) - ev(right); + case "<<" : return ev(left) << ev(right); + case ">>" : return ev(left) >> ev(right); + case ">>>" : return ev(left) >>> ev(right); + case "==" : return ev(left) == ev(right); + case "===" : return ev(left) === ev(right); + case "!=" : return ev(left) != ev(right); + case "!==" : return ev(left) !== ev(right); + case "<" : return ev(left) < ev(right); + case "<=" : return ev(left) <= ev(right); + case ">" : return ev(left) > ev(right); + case ">=" : return ev(left) >= ev(right); + case "in" : return ev(left) in ev(right); + case "instanceof" : return ev(left) instanceof ev(right); + } + throw def; + }); + def(AST_Conditional, function(){ + return ev(this.condition) + ? ev(this.consequent) + : ev(this.alternative); + }); + def(AST_SymbolRef, function(){ + var d = this.definition(); + if (d && d.constant && d.init) return ev(d.init); + throw def; + }); + })(function(node, func){ + node.DEFMETHOD("_eval", func); + }); + + // method to negate an expression + (function(def){ + function basic_negation(exp) { + return make_node(AST_UnaryPrefix, exp, { + operator: "!", + expression: exp + }); + }; + def(AST_Node, function(){ + return basic_negation(this); + }); + def(AST_Statement, function(){ + throw new Error("Cannot negate a statement"); + }); + def(AST_Function, function(){ + return basic_negation(this); + }); + def(AST_UnaryPrefix, function(){ + if (this.operator == "!") + return this.expression; + return basic_negation(this); + }); + def(AST_Seq, function(compressor){ + var self = this.clone(); + self.cdr = self.cdr.negate(compressor); + return self; + }); + def(AST_Conditional, function(compressor){ + var self = this.clone(); + self.consequent = self.consequent.negate(compressor); + self.alternative = self.alternative.negate(compressor); + return best_of(basic_negation(this), self); + }); + def(AST_Binary, function(compressor){ + var self = this.clone(), op = this.operator; + if (compressor.option("unsafe_comps")) { + switch (op) { + case "<=" : self.operator = ">" ; return self; + case "<" : self.operator = ">=" ; return self; + case ">=" : self.operator = "<" ; return self; + case ">" : self.operator = "<=" ; return self; + } + } + switch (op) { + case "==" : self.operator = "!="; return self; + case "!=" : self.operator = "=="; return self; + case "===": self.operator = "!=="; return self; + case "!==": self.operator = "==="; return self; + case "&&": + self.operator = "||"; + self.left = self.left.negate(compressor); + self.right = self.right.negate(compressor); + return best_of(basic_negation(this), self); + case "||": + self.operator = "&&"; + self.left = self.left.negate(compressor); + self.right = self.right.negate(compressor); + return best_of(basic_negation(this), self); + } + return basic_negation(this); + }); + })(function(node, func){ + node.DEFMETHOD("negate", function(compressor){ + return func.call(this, compressor); + }); + }); + + // determine if expression has side effects + (function(def){ + def(AST_Node, function(){ return true }); + + def(AST_EmptyStatement, function(){ return false }); + def(AST_Constant, function(){ return false }); + def(AST_This, function(){ return false }); + + def(AST_Block, function(){ + for (var i = this.body.length; --i >= 0;) { + if (this.body[i].has_side_effects()) + return true; + } + return false; + }); + + def(AST_SimpleStatement, function(){ + return this.body.has_side_effects(); + }); + def(AST_Defun, function(){ return true }); + def(AST_Function, function(){ return false }); + def(AST_Binary, function(){ + return this.left.has_side_effects() + || this.right.has_side_effects(); + }); + def(AST_Assign, function(){ return true }); + def(AST_Conditional, function(){ + return this.condition.has_side_effects() + || this.consequent.has_side_effects() + || this.alternative.has_side_effects(); + }); + def(AST_Unary, function(){ + return this.operator == "delete" + || this.operator == "++" + || this.operator == "--" + || this.expression.has_side_effects(); + }); + def(AST_SymbolRef, function(){ return false }); + def(AST_Object, function(){ + for (var i = this.properties.length; --i >= 0;) + if (this.properties[i].has_side_effects()) + return true; + return false; + }); + def(AST_ObjectProperty, function(){ + return this.value.has_side_effects(); + }); + def(AST_Array, function(){ + for (var i = this.elements.length; --i >= 0;) + if (this.elements[i].has_side_effects()) + return true; + return false; + }); + // def(AST_Dot, function(){ + // return this.expression.has_side_effects(); + // }); + // def(AST_Sub, function(){ + // return this.expression.has_side_effects() + // || this.property.has_side_effects(); + // }); + def(AST_PropAccess, function(){ + return true; + }); + def(AST_Seq, function(){ + return this.car.has_side_effects() + || this.cdr.has_side_effects(); + }); + })(function(node, func){ + node.DEFMETHOD("has_side_effects", func); + }); + + // tell me if a statement aborts + function aborts(thing) { + return thing && thing.aborts(); + }; + (function(def){ + def(AST_Statement, function(){ return null }); + def(AST_Jump, function(){ return this }); + function block_aborts(){ + var n = this.body.length; + return n > 0 && aborts(this.body[n - 1]); + }; + def(AST_BlockStatement, block_aborts); + def(AST_SwitchBranch, block_aborts); + def(AST_If, function(){ + return this.alternative && aborts(this.body) && aborts(this.alternative); + }); + })(function(node, func){ + node.DEFMETHOD("aborts", func); + }); + + /* -----[ optimizers ]----- */ + + OPT(AST_Directive, function(self, compressor){ + if (self.scope.has_directive(self.value) !== self.scope) { + return make_node(AST_EmptyStatement, self); + } + return self; + }); + + OPT(AST_Debugger, function(self, compressor){ + if (compressor.option("drop_debugger")) + return make_node(AST_EmptyStatement, self); + return self; + }); + + OPT(AST_LabeledStatement, function(self, compressor){ + if (self.body instanceof AST_Break + && compressor.loopcontrol_target(self.body.label) === self.body) { + return make_node(AST_EmptyStatement, self); + } + return self.label.references.length == 0 ? self.body : self; + }); + + OPT(AST_Block, function(self, compressor){ + self.body = tighten_body(self.body, compressor); + return self; + }); + + OPT(AST_BlockStatement, function(self, compressor){ + self.body = tighten_body(self.body, compressor); + switch (self.body.length) { + case 1: return self.body[0]; + case 0: return make_node(AST_EmptyStatement, self); + } + return self; + }); + + AST_Scope.DEFMETHOD("drop_unused", function(compressor){ + var self = this; + if (compressor.option("unused") + && !(self instanceof AST_Toplevel) + && !self.uses_eval + ) { + var in_use = []; + var initializations = new Dictionary(); + // pass 1: find out which symbols are directly used in + // this scope (not in nested scopes). + var scope = this; + var tw = new TreeWalker(function(node, descend){ + if (node !== self) { + if (node instanceof AST_Defun) { + initializations.add(node.name.name, node); + return true; // don't go in nested scopes + } + if (node instanceof AST_Definitions && scope === self) { + node.definitions.forEach(function(def){ + if (def.value) { + initializations.add(def.name.name, def.value); + if (def.value.has_side_effects()) { + def.value.walk(tw); + } + } + }); + return true; + } + if (node instanceof AST_SymbolRef) { + push_uniq(in_use, node.definition()); + return true; + } + if (node instanceof AST_Scope) { + var save_scope = scope; + scope = node; + descend(); + scope = save_scope; + return true; + } + } + }); + self.walk(tw); + // pass 2: for every used symbol we need to walk its + // initialization code to figure out if it uses other + // symbols (that may not be in_use). + for (var i = 0; i < in_use.length; ++i) { + in_use[i].orig.forEach(function(decl){ + // undeclared globals will be instanceof AST_SymbolRef + var init = initializations.get(decl.name); + if (init) init.forEach(function(init){ + var tw = new TreeWalker(function(node){ + if (node instanceof AST_SymbolRef) { + push_uniq(in_use, node.definition()); + } + }); + init.walk(tw); + }); + }); + } + // pass 3: we should drop declarations not in_use + var tt = new TreeTransformer( + function before(node, descend, in_list) { + if (node instanceof AST_Lambda) { + for (var a = node.argnames, i = a.length; --i >= 0;) { + var sym = a[i]; + if (sym.unreferenced()) { + a.pop(); + compressor.warn("Dropping unused function argument {name} [{file}:{line},{col}]", { + name : sym.name, + file : sym.start.file, + line : sym.start.line, + col : sym.start.col + }); + } + else break; + } + } + if (node instanceof AST_Defun && node !== self) { + if (!member(node.name.definition(), in_use)) { + compressor.warn("Dropping unused function {name} [{file}:{line},{col}]", { + name : node.name.name, + file : node.name.start.file, + line : node.name.start.line, + col : node.name.start.col + }); + return make_node(AST_EmptyStatement, node); + } + return node; + } + if (node instanceof AST_Definitions && !(tt.parent() instanceof AST_ForIn)) { + var def = node.definitions.filter(function(def){ + if (member(def.name.definition(), in_use)) return true; + var w = { + name : def.name.name, + file : def.name.start.file, + line : def.name.start.line, + col : def.name.start.col + }; + if (def.value && def.value.has_side_effects()) { + def._unused_side_effects = true; + compressor.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]", w); + return true; + } + compressor.warn("Dropping unused variable {name} [{file}:{line},{col}]", w); + return false; + }); + // place uninitialized names at the start + def = mergeSort(def, function(a, b){ + if (!a.value && b.value) return -1; + if (!b.value && a.value) return 1; + return 0; + }); + // for unused names whose initialization has + // side effects, we can cascade the init. code + // into the next one, or next statement. + var side_effects = []; + for (var i = 0; i < def.length;) { + var x = def[i]; + if (x._unused_side_effects) { + side_effects.push(x.value); + def.splice(i, 1); + } else { + if (side_effects.length > 0) { + side_effects.push(x.value); + x.value = AST_Seq.from_array(side_effects); + side_effects = []; + } + ++i; + } + } + if (side_effects.length > 0) { + side_effects = make_node(AST_BlockStatement, node, { + body: [ make_node(AST_SimpleStatement, node, { + body: AST_Seq.from_array(side_effects) + }) ] + }); + } else { + side_effects = null; + } + if (def.length == 0 && !side_effects) { + return make_node(AST_EmptyStatement, node); + } + if (def.length == 0) { + return side_effects; + } + node.definitions = def; + if (side_effects) { + side_effects.body.unshift(node); + node = side_effects; + } + return node; + } + if (node instanceof AST_For && node.init instanceof AST_BlockStatement) { + descend(node, this); + // certain combination of unused name + side effect leads to: + // https://github.com/mishoo/UglifyJS2/issues/44 + // that's an invalid AST. + // We fix it at this stage by moving the `var` outside the `for`. + var body = node.init.body.slice(0, -1); + node.init = node.init.body.slice(-1)[0].body; + body.push(node); + return in_list ? MAP.splice(body) : make_node(AST_BlockStatement, node, { + body: body + }); + } + if (node instanceof AST_Scope && node !== self) + return node; + } + ); + self.transform(tt); + } + }); + + AST_Scope.DEFMETHOD("hoist_declarations", function(compressor){ + var hoist_funs = compressor.option("hoist_funs"); + var hoist_vars = compressor.option("hoist_vars"); + var self = this; + if (hoist_funs || hoist_vars) { + var dirs = []; + var hoisted = []; + var vars = new Dictionary(), vars_found = 0, var_decl = 0; + // let's count var_decl first, we seem to waste a lot of + // space if we hoist `var` when there's only one. + self.walk(new TreeWalker(function(node){ + if (node instanceof AST_Scope && node !== self) + return true; + if (node instanceof AST_Var) { + ++var_decl; + return true; + } + })); + hoist_vars = hoist_vars && var_decl > 1; + var tt = new TreeTransformer( + function before(node) { + if (node !== self) { + if (node instanceof AST_Directive) { + dirs.push(node); + return make_node(AST_EmptyStatement, node); + } + if (node instanceof AST_Defun && hoist_funs) { + hoisted.push(node); + return make_node(AST_EmptyStatement, node); + } + if (node instanceof AST_Var && hoist_vars) { + node.definitions.forEach(function(def){ + vars.set(def.name.name, def); + ++vars_found; + }); + var seq = node.to_assignments(); + var p = tt.parent(); + if (p instanceof AST_ForIn && p.init === node) { + if (seq == null) return node.definitions[0].name; + return seq; + } + if (p instanceof AST_For && p.init === node) { + return seq; + } + if (!seq) return make_node(AST_EmptyStatement, node); + return make_node(AST_SimpleStatement, node, { + body: seq + }); + } + if (node instanceof AST_Scope) + return node; // to avoid descending in nested scopes + } + } + ); + self = self.transform(tt); + if (vars_found > 0) { + // collect only vars which don't show up in self's arguments list + var defs = []; + vars.each(function(def, name){ + if (self instanceof AST_Lambda + && find_if(function(x){ return x.name == def.name.name }, + self.argnames)) { + vars.del(name); + } else { + def = def.clone(); + def.value = null; + defs.push(def); + vars.set(name, def); + } + }); + if (defs.length > 0) { + // try to merge in assignments + for (var i = 0; i < self.body.length;) { + if (self.body[i] instanceof AST_SimpleStatement) { + var expr = self.body[i].body, sym, assign; + if (expr instanceof AST_Assign + && expr.operator == "=" + && (sym = expr.left) instanceof AST_Symbol + && vars.has(sym.name)) + { + var def = vars.get(sym.name); + if (def.value) break; + def.value = expr.right; + remove(defs, def); + defs.push(def); + self.body.splice(i, 1); + continue; + } + if (expr instanceof AST_Seq + && (assign = expr.car) instanceof AST_Assign + && assign.operator == "=" + && (sym = assign.left) instanceof AST_Symbol + && vars.has(sym.name)) + { + var def = vars.get(sym.name); + if (def.value) break; + def.value = assign.right; + remove(defs, def); + defs.push(def); + self.body[i].body = expr.cdr; + continue; + } + } + if (self.body[i] instanceof AST_EmptyStatement) { + self.body.splice(i, 1); + continue; + } + if (self.body[i] instanceof AST_BlockStatement) { + var tmp = [ i, 1 ].concat(self.body[i].body); + self.body.splice.apply(self.body, tmp); + continue; + } + break; + } + defs = make_node(AST_Var, self, { + definitions: defs + }); + hoisted.push(defs); + }; + } + self.body = dirs.concat(hoisted, self.body); + } + return self; + }); + + OPT(AST_SimpleStatement, function(self, compressor){ + if (compressor.option("side_effects")) { + if (!self.body.has_side_effects()) { + compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]", self.start); + return make_node(AST_EmptyStatement, self); + } + } + return self; + }); + + OPT(AST_DWLoop, function(self, compressor){ + var cond = self.condition.evaluate(compressor); + self.condition = cond[0]; + if (!compressor.option("loops")) return self; + if (cond.length > 1) { + if (cond[1]) { + return make_node(AST_For, self, { + body: self.body + }); + } else if (self instanceof AST_While) { + if (compressor.option("dead_code")) { + var a = []; + extract_declarations_from_unreachable_code(compressor, self.body, a); + return make_node(AST_BlockStatement, self, { body: a }); + } + } else { + return self.body; + } + } + return self; + }); + + function if_break_in_loop(self, compressor) { + function drop_it(rest) { + rest = as_statement_array(rest); + if (self.body instanceof AST_BlockStatement) { + self.body = self.body.clone(); + self.body.body = rest.concat(self.body.body.slice(1)); + self.body = self.body.transform(compressor); + } else { + self.body = make_node(AST_BlockStatement, self.body, { + body: rest + }).transform(compressor); + } + if_break_in_loop(self, compressor); + } + var first = self.body instanceof AST_BlockStatement ? self.body.body[0] : self.body; + if (first instanceof AST_If) { + if (first.body instanceof AST_Break + && compressor.loopcontrol_target(first.body.label) === self) { + if (self.condition) { + self.condition = make_node(AST_Binary, self.condition, { + left: self.condition, + operator: "&&", + right: first.condition.negate(compressor), + }); + } else { + self.condition = first.condition.negate(compressor); + } + drop_it(first.alternative); + } + else if (first.alternative instanceof AST_Break + && compressor.loopcontrol_target(first.alternative.label) === self) { + if (self.condition) { + self.condition = make_node(AST_Binary, self.condition, { + left: self.condition, + operator: "&&", + right: first.condition, + }); + } else { + self.condition = first.condition; + } + drop_it(first.body); + } + } + }; + + OPT(AST_While, function(self, compressor) { + if (!compressor.option("loops")) return self; + self = AST_DWLoop.prototype.optimize.call(self, compressor); + if (self instanceof AST_While) { + if_break_in_loop(self, compressor); + self = make_node(AST_For, self, self).transform(compressor); + } + return self; + }); + + OPT(AST_For, function(self, compressor){ + var cond = self.condition; + if (cond) { + cond = cond.evaluate(compressor); + self.condition = cond[0]; + } + if (!compressor.option("loops")) return self; + if (cond) { + if (cond.length > 1 && !cond[1]) { + if (compressor.option("dead_code")) { + var a = []; + if (self.init instanceof AST_Statement) { + a.push(self.init); + } + else if (self.init) { + a.push(make_node(AST_SimpleStatement, self.init, { + body: self.init + })); + } + extract_declarations_from_unreachable_code(compressor, self.body, a); + return make_node(AST_BlockStatement, self, { body: a }); + } + } + } + if_break_in_loop(self, compressor); + return self; + }); + + OPT(AST_If, function(self, compressor){ + if (!compressor.option("conditionals")) return self; + // if condition can be statically determined, warn and drop + // one of the blocks. note, statically determined implies + // “has no side effects”; also it doesn't work for cases like + // `x && true`, though it probably should. + var cond = self.condition.evaluate(compressor); + self.condition = cond[0]; + if (cond.length > 1) { + if (cond[1]) { + compressor.warn("Condition always true [{file}:{line},{col}]", self.condition.start); + if (compressor.option("dead_code")) { + var a = []; + if (self.alternative) { + extract_declarations_from_unreachable_code(compressor, self.alternative, a); + } + a.push(self.body); + return make_node(AST_BlockStatement, self, { body: a }).transform(compressor); + } + } else { + compressor.warn("Condition always false [{file}:{line},{col}]", self.condition.start); + if (compressor.option("dead_code")) { + var a = []; + extract_declarations_from_unreachable_code(compressor, self.body, a); + if (self.alternative) a.push(self.alternative); + return make_node(AST_BlockStatement, self, { body: a }).transform(compressor); + } + } + } + if (is_empty(self.alternative)) self.alternative = null; + var negated = self.condition.negate(compressor); + var negated_is_best = best_of(self.condition, negated) === negated; + if (self.alternative && negated_is_best) { + negated_is_best = false; // because we already do the switch here. + self.condition = negated; + var tmp = self.body; + self.body = self.alternative || make_node(AST_EmptyStatement); + self.alternative = tmp; + } + if (is_empty(self.body) && is_empty(self.alternative)) { + return make_node(AST_SimpleStatement, self.condition, { + body: self.condition + }).transform(compressor); + } + if (self.body instanceof AST_SimpleStatement + && self.alternative instanceof AST_SimpleStatement) { + return make_node(AST_SimpleStatement, self, { + body: make_node(AST_Conditional, self, { + condition : self.condition, + consequent : self.body.body, + alternative : self.alternative.body + }) + }).transform(compressor); + } + if (is_empty(self.alternative) && self.body instanceof AST_SimpleStatement) { + if (negated_is_best) return make_node(AST_SimpleStatement, self, { + body: make_node(AST_Binary, self, { + operator : "||", + left : negated, + right : self.body.body + }) + }).transform(compressor); + return make_node(AST_SimpleStatement, self, { + body: make_node(AST_Binary, self, { + operator : "&&", + left : self.condition, + right : self.body.body + }) + }).transform(compressor); + } + if (self.body instanceof AST_EmptyStatement + && self.alternative + && self.alternative instanceof AST_SimpleStatement) { + return make_node(AST_SimpleStatement, self, { + body: make_node(AST_Binary, self, { + operator : "||", + left : self.condition, + right : self.alternative.body + }) + }).transform(compressor); + } + if (self.body instanceof AST_Exit + && self.alternative instanceof AST_Exit + && self.body.TYPE == self.alternative.TYPE) { + return make_node(self.body.CTOR, self, { + value: make_node(AST_Conditional, self, { + condition : self.condition, + consequent : self.body.value || make_node(AST_Undefined, self.body).optimize(compressor), + alternative : self.alternative.value || make_node(AST_Undefined, self.alternative).optimize(compressor) + }) + }).transform(compressor); + } + if (self.body instanceof AST_If + && !self.body.alternative + && !self.alternative) { + self.condition = make_node(AST_Binary, self.condition, { + operator: "&&", + left: self.condition, + right: self.body.condition + }).transform(compressor); + self.body = self.body.body; + } + if (aborts(self.body)) { + if (self.alternative) { + var alt = self.alternative; + self.alternative = null; + return make_node(AST_BlockStatement, self, { + body: [ self, alt ] + }).transform(compressor); + } + } + if (aborts(self.alternative)) { + var body = self.body; + self.body = self.alternative; + self.condition = negated_is_best ? negated : self.condition.negate(compressor); + self.alternative = null; + return make_node(AST_BlockStatement, self, { + body: [ self, body ] + }).transform(compressor); + } + return self; + }); + + OPT(AST_Switch, function(self, compressor){ + if (self.body.length == 0 && compressor.option("conditionals")) { + return make_node(AST_SimpleStatement, self, { + body: self.expression + }).transform(compressor); + } + var last_branch = self.body[self.body.length - 1]; + if (last_branch) { + var stat = last_branch.body[last_branch.body.length - 1]; // last statement + if (stat instanceof AST_Break && loop_body(compressor.loopcontrol_target(stat.label)) === self) + last_branch.body.pop(); + } + var exp = self.expression.evaluate(compressor); + out: if (exp.length == 2) try { + // constant expression + self.expression = exp[0]; + if (!compressor.option("dead_code")) break out; + var value = exp[1]; + var in_if = false; + var in_block = false; + var started = false; + var stopped = false; + var ruined = false; + var tt = new TreeTransformer(function(node, descend, in_list){ + if (node instanceof AST_Lambda || node instanceof AST_SimpleStatement) { + // no need to descend these node types + return node; + } + else if (node instanceof AST_Switch && node === self) { + node = node.clone(); + descend(node, this); + return ruined ? node : make_node(AST_BlockStatement, node, { + body: node.body.reduce(function(a, branch){ + return a.concat(branch.body); + }, []) + }).transform(compressor); + } + else if (node instanceof AST_If || node instanceof AST_Try) { + var save = in_if; + in_if = !in_block; + descend(node, this); + in_if = save; + return node; + } + else if (node instanceof AST_StatementWithBody || node instanceof AST_Switch) { + var save = in_block; + in_block = true; + descend(node, this); + in_block = save; + return node; + } + else if (node instanceof AST_Break && this.loopcontrol_target(node.label) === self) { + if (in_if) { + ruined = true; + return node; + } + if (in_block) return node; + stopped = true; + return in_list ? MAP.skip : make_node(AST_EmptyStatement, node); + } + else if (node instanceof AST_SwitchBranch && this.parent() === self) { + if (stopped) return MAP.skip; + if (node instanceof AST_Case) { + var exp = node.expression.evaluate(compressor); + if (exp.length < 2) { + // got a case with non-constant expression, baling out + throw self; + } + if (exp[1] === value || started) { + started = true; + if (aborts(node)) stopped = true; + descend(node, this); + return node; + } + return MAP.skip; + } + descend(node, this); + return node; + } + }); + tt.stack = compressor.stack.slice(); // so that's able to see parent nodes + self = self.transform(tt); + } catch(ex) { + if (ex !== self) throw ex; + } + return self; + }); + + OPT(AST_Case, function(self, compressor){ + self.body = tighten_body(self.body, compressor); + return self; + }); + + OPT(AST_Try, function(self, compressor){ + self.body = tighten_body(self.body, compressor); + return self; + }); + + AST_Definitions.DEFMETHOD("remove_initializers", function(){ + this.definitions.forEach(function(def){ def.value = null }); + }); + + AST_Definitions.DEFMETHOD("to_assignments", function(){ + var assignments = this.definitions.reduce(function(a, def){ + if (def.value) { + var name = make_node(AST_SymbolRef, def.name, def.name); + a.push(make_node(AST_Assign, def, { + operator : "=", + left : name, + right : def.value + })); + } + return a; + }, []); + if (assignments.length == 0) return null; + return AST_Seq.from_array(assignments); + }); + + OPT(AST_Definitions, function(self, compressor){ + if (self.definitions.length == 0) + return make_node(AST_EmptyStatement, self); + return self; + }); + + OPT(AST_Function, function(self, compressor){ + self = AST_Lambda.prototype.optimize.call(self, compressor); + if (compressor.option("unused")) { + if (self.name && self.name.unreferenced()) { + self.name = null; + } + } + return self; + }); + + OPT(AST_Call, function(self, compressor){ + if (compressor.option("unsafe")) { + var exp = self.expression; + if (exp instanceof AST_SymbolRef && exp.undeclared()) { + switch (exp.name) { + case "Array": + if (self.args.length != 1) { + return make_node(AST_Array, self, { + elements: self.args + }); + } + break; + case "Object": + if (self.args.length == 0) { + return make_node(AST_Object, self, { + properties: [] + }); + } + break; + case "String": + if (self.args.length == 0) return make_node(AST_String, self, { + value: "" + }); + return make_node(AST_Binary, self, { + left: self.args[0], + operator: "+", + right: make_node(AST_String, self, { value: "" }) + }); + } + } + else if (exp instanceof AST_Dot && exp.property == "toString" && self.args.length == 0) { + return make_node(AST_Binary, self, { + left: make_node(AST_String, self, { value: "" }), + operator: "+", + right: exp.expression + }).transform(compressor); + } + } + if (compressor.option("side_effects")) { + if (self.expression instanceof AST_Function + && self.args.length == 0 + && !AST_Block.prototype.has_side_effects.call(self.expression)) { + return make_node(AST_Undefined, self).transform(compressor); + } + } + return self; + }); + + OPT(AST_New, function(self, compressor){ + if (compressor.option("unsafe")) { + var exp = self.expression; + if (exp instanceof AST_SymbolRef && exp.undeclared()) { + switch (exp.name) { + case "Object": + case "RegExp": + case "Function": + case "Error": + case "Array": + return make_node(AST_Call, self, self).transform(compressor); + } + } + } + return self; + }); + + OPT(AST_Seq, function(self, compressor){ + if (!compressor.option("side_effects")) + return self; + if (!self.car.has_side_effects()) { + // we shouldn't compress (1,eval)(something) to + // eval(something) because that changes the meaning of + // eval (becomes lexical instead of global). + var p; + if (!(self.cdr instanceof AST_SymbolRef + && self.cdr.name == "eval" + && self.cdr.undeclared() + && (p = compressor.parent()) instanceof AST_Call + && p.expression === self)) { + return self.cdr; + } + } + if (compressor.option("cascade")) { + if (self.car instanceof AST_Assign + && !self.car.left.has_side_effects() + && self.car.left.equivalent_to(self.cdr)) { + return self.car; + } + if (!self.car.has_side_effects() + && !self.cdr.has_side_effects() + && self.car.equivalent_to(self.cdr)) { + return self.car; + } + } + return self; + }); + + AST_Unary.DEFMETHOD("lift_sequences", function(compressor){ + if (compressor.option("sequences")) { + if (this.expression instanceof AST_Seq) { + var seq = this.expression; + var x = seq.to_array(); + this.expression = x.pop(); + x.push(this); + seq = AST_Seq.from_array(x).transform(compressor); + return seq; + } + } + return this; + }); + + OPT(AST_UnaryPostfix, function(self, compressor){ + return self.lift_sequences(compressor); + }); + + OPT(AST_UnaryPrefix, function(self, compressor){ + self = self.lift_sequences(compressor); + var e = self.expression; + if (compressor.option("booleans") && compressor.in_boolean_context()) { + switch (self.operator) { + case "!": + if (e instanceof AST_UnaryPrefix && e.operator == "!") { + // !!foo ==> foo, if we're in boolean context + return e.expression; + } + break; + case "typeof": + // typeof always returns a non-empty string, thus it's + // always true in booleans + compressor.warn("Boolean expression always true [{file}:{line},{col}]", self.start); + return make_node(AST_True, self); + } + if (e instanceof AST_Binary && self.operator == "!") { + self = best_of(self, e.negate(compressor)); + } + } + return self.evaluate(compressor)[0]; + }); + + AST_Binary.DEFMETHOD("lift_sequences", function(compressor){ + if (compressor.option("sequences")) { + if (this.left instanceof AST_Seq) { + var seq = this.left; + var x = seq.to_array(); + this.left = x.pop(); + x.push(this); + seq = AST_Seq.from_array(x).transform(compressor); + return seq; + } + if (this.right instanceof AST_Seq + && !(this.operator == "||" || this.operator == "&&") + && !this.left.has_side_effects()) { + var seq = this.right; + var x = seq.to_array(); + this.right = x.pop(); + x.push(this); + seq = AST_Seq.from_array(x).transform(compressor); + return seq; + } + } + return this; + }); + + var commutativeOperators = makePredicate("== === != !== * & | ^"); + + OPT(AST_Binary, function(self, compressor){ + function reverse(op) { + if (!(self.left.has_side_effects() && self.right.has_side_effects())) { + if (op) self.operator = op; + var tmp = self.left; + self.left = self.right; + self.right = tmp; + } + }; + if (commutativeOperators(self.operator)) { + if (self.right instanceof AST_Constant + && !(self.left instanceof AST_Constant)) { + reverse(); + } + } + self = self.lift_sequences(compressor); + if (compressor.option("comparisons")) switch (self.operator) { + case "===": + case "!==": + if ((self.left.is_string(compressor) && self.right.is_string(compressor)) || + (self.left.is_boolean() && self.right.is_boolean())) { + self.operator = self.operator.substr(0, 2); + } + // XXX: intentionally falling down to the next case + case "==": + case "!=": + if (self.left instanceof AST_String + && self.left.value == "undefined" + && self.right instanceof AST_UnaryPrefix + && self.right.operator == "typeof" + && compressor.option("unsafe")) { + if (!(self.right.expression instanceof AST_SymbolRef) + || !self.right.expression.undeclared()) { + self.left = self.right.expression; + self.right = make_node(AST_Undefined, self.left).optimize(compressor); + if (self.operator.length == 2) self.operator += "="; + } + } + break; + } + if (compressor.option("booleans") && compressor.in_boolean_context()) switch (self.operator) { + case "&&": + var ll = self.left.evaluate(compressor); + var rr = self.right.evaluate(compressor); + if ((ll.length > 1 && !ll[1]) || (rr.length > 1 && !rr[1])) { + compressor.warn("Boolean && always false [{file}:{line},{col}]", self.start); + return make_node(AST_False, self); + } + if (ll.length > 1 && ll[1]) { + return rr[0]; + } + if (rr.length > 1 && rr[1]) { + return ll[0]; + } + break; + case "||": + var ll = self.left.evaluate(compressor); + var rr = self.right.evaluate(compressor); + if ((ll.length > 1 && ll[1]) || (rr.length > 1 && rr[1])) { + compressor.warn("Boolean || always true [{file}:{line},{col}]", self.start); + return make_node(AST_True, self); + } + if (ll.length > 1 && !ll[1]) { + return rr[0]; + } + if (rr.length > 1 && !rr[1]) { + return ll[0]; + } + break; + case "+": + var ll = self.left.evaluate(compressor); + var rr = self.right.evaluate(compressor); + if ((ll.length > 1 && ll[0] instanceof AST_String && ll[1]) || + (rr.length > 1 && rr[0] instanceof AST_String && rr[1])) { + compressor.warn("+ in boolean context always true [{file}:{line},{col}]", self.start); + return make_node(AST_True, self); + } + break; + } + var exp = self.evaluate(compressor); + if (exp.length > 1) { + if (best_of(exp[0], self) !== self) + return exp[0]; + } + if (compressor.option("comparisons")) { + if (!(compressor.parent() instanceof AST_Binary) + || compressor.parent() instanceof AST_Assign) { + var negated = make_node(AST_UnaryPrefix, self, { + operator: "!", + expression: self.negate(compressor) + }); + self = best_of(self, negated); + } + switch (self.operator) { + case "<": reverse(">"); break; + case "<=": reverse(">="); break; + } + } + if (self.operator == "+" && self.right instanceof AST_String + && self.right.getValue() === "" && self.left instanceof AST_Binary + && self.left.operator == "+" && self.left.is_string(compressor)) { + return self.left; + } + return self; + }); + + OPT(AST_SymbolRef, function(self, compressor){ + if (self.undeclared()) { + var defines = compressor.option("global_defs"); + if (defines && defines.hasOwnProperty(self.name)) { + return make_node_from_constant(compressor, defines[self.name], self); + } + switch (self.name) { + case "undefined": + return make_node(AST_Undefined, self); + case "NaN": + return make_node(AST_NaN, self); + case "Infinity": + return make_node(AST_Infinity, self); + } + } + return self; + }); + + OPT(AST_Undefined, function(self, compressor){ + if (compressor.option("unsafe")) { + var scope = compressor.find_parent(AST_Scope); + var undef = scope.find_variable("undefined"); + if (undef) { + var ref = make_node(AST_SymbolRef, self, { + name : "undefined", + scope : scope, + thedef : undef + }); + ref.reference(); + return ref; + } + } + return self; + }); + + var ASSIGN_OPS = [ '+', '-', '/', '*', '%', '>>', '<<', '>>>', '|', '^', '&' ]; + OPT(AST_Assign, function(self, compressor){ + self = self.lift_sequences(compressor); + if (self.operator == "=" + && self.left instanceof AST_SymbolRef + && self.right instanceof AST_Binary + && self.right.left instanceof AST_SymbolRef + && self.right.left.name == self.left.name + && member(self.right.operator, ASSIGN_OPS)) { + self.operator = self.right.operator + "="; + self.right = self.right.right; + } + return self; + }); + + OPT(AST_Conditional, function(self, compressor){ + if (!compressor.option("conditionals")) return self; + if (self.condition instanceof AST_Seq) { + var car = self.condition.car; + self.condition = self.condition.cdr; + return AST_Seq.cons(car, self); + } + var cond = self.condition.evaluate(compressor); + if (cond.length > 1) { + if (cond[1]) { + compressor.warn("Condition always true [{file}:{line},{col}]", self.start); + return self.consequent; + } else { + compressor.warn("Condition always false [{file}:{line},{col}]", self.start); + return self.alternative; + } + } + var negated = cond[0].negate(compressor); + if (best_of(cond[0], negated) === negated) { + self = make_node(AST_Conditional, self, { + condition: negated, + consequent: self.alternative, + alternative: self.consequent + }); + } + var consequent = self.consequent; + var alternative = self.alternative; + if (consequent instanceof AST_Assign + && alternative instanceof AST_Assign + && consequent.operator == alternative.operator + && consequent.left.equivalent_to(alternative.left) + ) { + /* + * Stuff like this: + * if (foo) exp = something; else exp = something_else; + * ==> + * exp = foo ? something : something_else; + */ + self = make_node(AST_Assign, self, { + operator: consequent.operator, + left: consequent.left, + right: make_node(AST_Conditional, self, { + condition: self.condition, + consequent: consequent.right, + alternative: alternative.right + }) + }); + } + return self; + }); + + OPT(AST_Boolean, function(self, compressor){ + if (compressor.option("booleans")) { + var p = compressor.parent(); + if (p instanceof AST_Binary && (p.operator == "==" + || p.operator == "!=")) { + compressor.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]", { + operator : p.operator, + value : self.value, + file : p.start.file, + line : p.start.line, + col : p.start.col, + }); + return make_node(AST_Number, self, { + value: +self.value + }); + } + return make_node(AST_UnaryPrefix, self, { + operator: "!", + expression: make_node(AST_Number, self, { + value: 1 - self.value + }) + }); + } + return self; + }); + + OPT(AST_Sub, function(self, compressor){ + var prop = self.property; + if (prop instanceof AST_String && compressor.option("properties")) { + prop = prop.getValue(); + if (is_identifier(prop)) { + return make_node(AST_Dot, self, { + expression : self.expression, + property : prop + }); + } + } + return self; + }); + + function literals_in_boolean_context(self, compressor) { + if (compressor.option("booleans") && compressor.in_boolean_context()) { + return make_node(AST_True, self); + } + return self; + }; + OPT(AST_Array, literals_in_boolean_context); + OPT(AST_Object, literals_in_boolean_context); + OPT(AST_RegExp, literals_in_boolean_context); + +})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js new file mode 100644 index 0000000..982d621 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js @@ -0,0 +1,265 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +(function(){ + + var MOZ_TO_ME = { + TryStatement : function(M) { + return new AST_Try({ + start : my_start_token(M), + end : my_end_token(M), + body : from_moz(M.block).body, + bcatch : from_moz(M.handlers[0]), + bfinally : M.finalizer ? new AST_Finally(from_moz(M.finalizer)) : null + }); + }, + CatchClause : function(M) { + return new AST_Catch({ + start : my_start_token(M), + end : my_end_token(M), + argname : from_moz(M.param), + body : from_moz(M.body).body + }); + }, + ObjectExpression : function(M) { + return new AST_Object({ + start : my_start_token(M), + end : my_end_token(M), + properties : M.properties.map(function(prop){ + var key = prop.key; + var name = key.type == "Identifier" ? key.name : key.value; + var args = { + start : my_start_token(key), + end : my_end_token(prop.value), + key : name, + value : from_moz(prop.value) + }; + switch (prop.kind) { + case "init": + return new AST_ObjectKeyVal(args); + case "set": + args.value.name = from_moz(key); + return new AST_ObjectSetter(args); + case "get": + args.value.name = from_moz(key); + return new AST_ObjectGetter(args); + } + }) + }); + }, + SequenceExpression : function(M) { + return AST_Seq.from_array(M.expressions.map(from_moz)); + }, + MemberExpression : function(M) { + return new (M.computed ? AST_Sub : AST_Dot)({ + start : my_start_token(M), + end : my_end_token(M), + property : M.computed ? from_moz(M.property) : M.property.name, + expression : from_moz(M.object) + }); + }, + SwitchCase : function(M) { + return new (M.test ? AST_Case : AST_Default)({ + start : my_start_token(M), + end : my_end_token(M), + expression : from_moz(M.test), + body : M.consequent.map(from_moz) + }); + }, + Literal : function(M) { + var val = M.value, args = { + start : my_start_token(M), + end : my_end_token(M) + }; + if (val === null) return new AST_Null(args); + switch (typeof val) { + case "string": + args.value = val; + return new AST_String(args); + case "number": + args.value = val; + return new AST_Number(args); + case "boolean": + return new (val ? AST_True : AST_False)(args); + default: + args.value = val; + return new AST_RegExp(args); + } + }, + UnaryExpression: From_Moz_Unary, + UpdateExpression: From_Moz_Unary, + Identifier: function(M) { + var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2]; + return new (M.name == "this" ? AST_This + : p.type == "LabeledStatement" ? AST_Label + : p.type == "VariableDeclarator" && p.id === M ? (p.kind == "const" ? AST_SymbolConst : AST_SymbolVar) + : p.type == "FunctionExpression" ? (p.id === M ? AST_SymbolLambda : AST_SymbolFunarg) + : p.type == "FunctionDeclaration" ? (p.id === M ? AST_SymbolDefun : AST_SymbolFunarg) + : p.type == "CatchClause" ? AST_SymbolCatch + : p.type == "BreakStatement" || p.type == "ContinueStatement" ? AST_LabelRef + : AST_SymbolRef)({ + start : my_start_token(M), + end : my_end_token(M), + name : M.name + }); + } + }; + + function From_Moz_Unary(M) { + return new (M.prefix ? AST_UnaryPrefix : AST_UnaryPostfix)({ + start : my_start_token(M), + end : my_end_token(M), + operator : M.operator, + expression : from_moz(M.argument) + }) + }; + + var ME_TO_MOZ = {}; + + map("Node", AST_Node); + map("Program", AST_Toplevel, "body@body"); + map("Function", AST_Function, "id>name, params@argnames, body%body"); + map("EmptyStatement", AST_EmptyStatement); + map("BlockStatement", AST_BlockStatement, "body@body"); + map("ExpressionStatement", AST_SimpleStatement, "expression>body"); + map("IfStatement", AST_If, "test>condition, consequent>body, alternate>alternative"); + map("LabeledStatement", AST_LabeledStatement, "label>label, body>body"); + map("BreakStatement", AST_Break, "label>label"); + map("ContinueStatement", AST_Continue, "label>label"); + map("WithStatement", AST_With, "object>expression, body>body"); + map("SwitchStatement", AST_Switch, "discriminant>expression, cases@body"); + map("ReturnStatement", AST_Return, "argument>value"); + map("ThrowStatement", AST_Throw, "argument>value"); + map("WhileStatement", AST_While, "test>condition, body>body"); + map("DoWhileStatement", AST_Do, "test>condition, body>body"); + map("ForStatement", AST_For, "init>init, test>condition, update>step, body>body"); + map("ForInStatement", AST_ForIn, "left>init, right>object, body>body"); + map("DebuggerStatement", AST_Debugger); + map("FunctionDeclaration", AST_Defun, "id>name, params@argnames, body%body"); + map("VariableDeclaration", AST_Var, "declarations@definitions"); + map("VariableDeclarator", AST_VarDef, "id>name, init>value"); + + map("ThisExpression", AST_This); + map("ArrayExpression", AST_Array, "elements@elements"); + map("FunctionExpression", AST_Function, "id>name, params@argnames, body%body"); + map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right"); + map("AssignmentExpression", AST_Assign, "operator=operator, left>left, right>right"); + map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right"); + map("ConditionalExpression", AST_Conditional, "test>condition, consequent>consequent, alternate>alternative"); + map("NewExpression", AST_New, "callee>expression, arguments@args"); + map("CallExpression", AST_Call, "callee>expression, arguments@args"); + + /* -----[ tools ]----- */ + + function my_start_token(moznode) { + return new AST_Token({ + file : moznode.loc && moznode.loc.source, + line : moznode.loc && moznode.loc.start.line, + col : moznode.loc && moznode.loc.start.column, + pos : moznode.start, + endpos : moznode.start + }); + }; + + function my_end_token(moznode) { + return new AST_Token({ + file : moznode.loc && moznode.loc.source, + line : moznode.loc && moznode.loc.end.line, + col : moznode.loc && moznode.loc.end.column, + pos : moznode.end, + endpos : moznode.end + }); + }; + + function map(moztype, mytype, propmap) { + var moz_to_me = "function From_Moz_" + moztype + "(M){\n"; + moz_to_me += "return new mytype({\n" + + "start: my_start_token(M),\n" + + "end: my_end_token(M)"; + + if (propmap) propmap.split(/\s*,\s*/).forEach(function(prop){ + var m = /([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(prop); + if (!m) throw new Error("Can't understand property map: " + prop); + var moz = "M." + m[1], how = m[2], my = m[3]; + moz_to_me += ",\n" + my + ": "; + if (how == "@") { + moz_to_me += moz + ".map(from_moz)"; + } else if (how == ">") { + moz_to_me += "from_moz(" + moz + ")"; + } else if (how == "=") { + moz_to_me += moz; + } else if (how == "%") { + moz_to_me += "from_moz(" + moz + ").body"; + } else throw new Error("Can't understand operator in propmap: " + prop); + }); + moz_to_me += "\n})}"; + + // moz_to_me = parse(moz_to_me).print_to_string({ beautify: true }); + // console.log(moz_to_me); + + moz_to_me = new Function("mytype", "my_start_token", "my_end_token", "from_moz", "return(" + moz_to_me + ")")( + mytype, my_start_token, my_end_token, from_moz + ); + return MOZ_TO_ME[moztype] = moz_to_me; + }; + + var FROM_MOZ_STACK = null; + + function from_moz(node) { + FROM_MOZ_STACK.push(node); + var ret = node != null ? MOZ_TO_ME[node.type](node) : null; + FROM_MOZ_STACK.pop(); + return ret; + }; + + AST_Node.from_mozilla_ast = function(node){ + var save_stack = FROM_MOZ_STACK; + FROM_MOZ_STACK = []; + var ast = from_moz(node); + FROM_MOZ_STACK = save_stack; + return ast; + }; + +})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js new file mode 100644 index 0000000..42b3aad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js @@ -0,0 +1,1220 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +function OutputStream(options) { + + options = defaults(options, { + indent_start : 0, + indent_level : 4, + quote_keys : false, + space_colon : true, + ascii_only : false, + inline_script : false, + width : 80, + max_line_len : 32000, + ie_proof : true, + beautify : false, + source_map : null, + bracketize : false, + semicolons : true, + comments : false, + preserve_line : false + }, true); + + var indentation = 0; + var current_col = 0; + var current_line = 1; + var current_pos = 0; + var OUTPUT = ""; + + function to_ascii(str) { + return str.replace(/[\u0080-\uffff]/g, function(ch) { + var code = ch.charCodeAt(0).toString(16); + while (code.length < 4) code = "0" + code; + return "\\u" + code; + }); + }; + + function make_string(str) { + var dq = 0, sq = 0; + str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g, function(s){ + switch (s) { + case "\\": return "\\\\"; + case "\b": return "\\b"; + case "\f": return "\\f"; + case "\n": return "\\n"; + case "\r": return "\\r"; + case "\u2028": return "\\u2028"; + case "\u2029": return "\\u2029"; + case '"': ++dq; return '"'; + case "'": ++sq; return "'"; + case "\0": return "\\0"; + } + return s; + }); + if (options.ascii_only) str = to_ascii(str); + if (dq > sq) return "'" + str.replace(/\x27/g, "\\'") + "'"; + else return '"' + str.replace(/\x22/g, '\\"') + '"'; + }; + + function encode_string(str) { + var ret = make_string(str); + if (options.inline_script) + ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1"); + return ret; + }; + + function make_name(name) { + name = name.toString(); + if (options.ascii_only) + name = to_ascii(name); + return name; + }; + + function make_indent(back) { + return repeat_string(" ", options.indent_start + indentation - back * options.indent_level); + }; + + /* -----[ beautification/minification ]----- */ + + var might_need_space = false; + var might_need_semicolon = false; + var last = null; + + function last_char() { + return last.charAt(last.length - 1); + }; + + function maybe_newline() { + if (options.max_line_len && current_col > options.max_line_len) + print("\n"); + }; + + var requireSemicolonChars = makePredicate("( [ + * / - , ."); + + function print(str) { + str = String(str); + var ch = str.charAt(0); + if (might_need_semicolon) { + if ((!ch || ";}".indexOf(ch) < 0) && !/[;]$/.test(last)) { + if (options.semicolons || requireSemicolonChars(ch)) { + OUTPUT += ";"; + current_col++; + current_pos++; + } else { + OUTPUT += "\n"; + current_pos++; + current_line++; + current_col = 0; + } + if (!options.beautify) + might_need_space = false; + } + might_need_semicolon = false; + maybe_newline(); + } + + if (!options.beautify && options.preserve_line && stack[stack.length - 1]) { + var target_line = stack[stack.length - 1].start.line; + while (current_line < target_line) { + OUTPUT += "\n"; + current_pos++; + current_line++; + current_col = 0; + might_need_space = false; + } + } + + if (might_need_space) { + var prev = last_char(); + if ((is_identifier_char(prev) + && (is_identifier_char(ch) || ch == "\\")) + || (/^[\+\-\/]$/.test(ch) && ch == prev)) + { + OUTPUT += " "; + current_col++; + current_pos++; + } + might_need_space = false; + } + var a = str.split(/\r?\n/), n = a.length - 1; + current_line += n; + if (n == 0) { + current_col += a[n].length; + } else { + current_col = a[n].length; + } + current_pos += str.length; + last = str; + OUTPUT += str; + }; + + var space = options.beautify ? function() { + print(" "); + } : function() { + might_need_space = true; + }; + + var indent = options.beautify ? function(half) { + if (options.beautify) { + print(make_indent(half ? 0.5 : 0)); + } + } : noop; + + var with_indent = options.beautify ? function(col, cont) { + if (col === true) col = next_indent(); + var save_indentation = indentation; + indentation = col; + var ret = cont(); + indentation = save_indentation; + return ret; + } : function(col, cont) { return cont() }; + + var newline = options.beautify ? function() { + print("\n"); + } : noop; + + var semicolon = options.beautify ? function() { + print(";"); + } : function() { + might_need_semicolon = true; + }; + + function force_semicolon() { + might_need_semicolon = false; + print(";"); + }; + + function next_indent() { + return indentation + options.indent_level; + }; + + function with_block(cont) { + var ret; + print("{"); + newline(); + with_indent(next_indent(), function(){ + ret = cont(); + }); + indent(); + print("}"); + return ret; + }; + + function with_parens(cont) { + print("("); + //XXX: still nice to have that for argument lists + //var ret = with_indent(current_col, cont); + var ret = cont(); + print(")"); + return ret; + }; + + function with_square(cont) { + print("["); + //var ret = with_indent(current_col, cont); + var ret = cont(); + print("]"); + return ret; + }; + + function comma() { + print(","); + space(); + }; + + function colon() { + print(":"); + if (options.space_colon) space(); + }; + + var add_mapping = options.source_map ? function(token, name) { + try { + if (token) options.source_map.add( + token.file || "?", + current_line, current_col, + token.line, token.col, + (!name && token.type == "name") ? token.value : name + ); + } catch(ex) { + AST_Node.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]", { + file: token.file, + line: token.line, + col: token.col, + cline: current_line, + ccol: current_col, + name: name || "" + }) + } + } : noop; + + function get() { + return OUTPUT; + }; + + var stack = []; + return { + get : get, + toString : get, + indent : indent, + indentation : function() { return indentation }, + current_width : function() { return current_col - indentation }, + should_break : function() { return options.width && this.current_width() >= options.width }, + newline : newline, + print : print, + space : space, + comma : comma, + colon : colon, + last : function() { return last }, + semicolon : semicolon, + force_semicolon : force_semicolon, + to_ascii : to_ascii, + print_name : function(name) { print(make_name(name)) }, + print_string : function(str) { print(encode_string(str)) }, + next_indent : next_indent, + with_indent : with_indent, + with_block : with_block, + with_parens : with_parens, + with_square : with_square, + add_mapping : add_mapping, + option : function(opt) { return options[opt] }, + line : function() { return current_line }, + col : function() { return current_col }, + pos : function() { return current_pos }, + push_node : function(node) { stack.push(node) }, + pop_node : function() { return stack.pop() }, + stack : function() { return stack }, + parent : function(n) { + return stack[stack.length - 2 - (n || 0)]; + } + }; + +}; + +/* -----[ code generators ]----- */ + +(function(){ + + /* -----[ utils ]----- */ + + function DEFPRINT(nodetype, generator) { + nodetype.DEFMETHOD("_codegen", generator); + }; + + AST_Node.DEFMETHOD("print", function(stream, force_parens){ + var self = this, generator = self._codegen; + stream.push_node(self); + if (force_parens || self.needs_parens(stream)) { + stream.with_parens(function(){ + self.add_comments(stream); + self.add_source_map(stream); + generator(self, stream); + }); + } else { + self.add_comments(stream); + self.add_source_map(stream); + generator(self, stream); + } + stream.pop_node(); + }); + + AST_Node.DEFMETHOD("print_to_string", function(options){ + var s = OutputStream(options); + this.print(s); + return s.get(); + }); + + /* -----[ comments ]----- */ + + AST_Node.DEFMETHOD("add_comments", function(output){ + var c = output.option("comments"), self = this; + if (c) { + var start = self.start; + if (start && !start._comments_dumped) { + start._comments_dumped = true; + var comments = start.comments_before; + + // XXX: ugly fix for https://github.com/mishoo/UglifyJS2/issues/112 + // if this node is `return` or `throw`, we cannot allow comments before + // the returned or thrown value. + if (self instanceof AST_Exit && + self.value && self.value.start.comments_before.length > 0) { + comments = (comments || []).concat(self.value.start.comments_before); + self.value.start.comments_before = []; + } + + if (c.test) { + comments = comments.filter(function(comment){ + return c.test(comment.value); + }); + } else if (typeof c == "function") { + comments = comments.filter(function(comment){ + return c(self, comment); + }); + } + comments.forEach(function(c){ + if (c.type == "comment1") { + output.print("//" + c.value + "\n"); + output.indent(); + } + else if (c.type == "comment2") { + output.print("/*" + c.value + "*/"); + if (start.nlb) { + output.print("\n"); + output.indent(); + } else { + output.space(); + } + } + }); + } + } + }); + + /* -----[ PARENTHESES ]----- */ + + function PARENS(nodetype, func) { + nodetype.DEFMETHOD("needs_parens", func); + }; + + PARENS(AST_Node, function(){ + return false; + }); + + // a function expression needs parens around it when it's provably + // the first token to appear in a statement. + PARENS(AST_Function, function(output){ + return first_in_statement(output); + }); + + // same goes for an object literal, because otherwise it would be + // interpreted as a block of code. + PARENS(AST_Object, function(output){ + return first_in_statement(output); + }); + + PARENS(AST_Unary, function(output){ + var p = output.parent(); + return p instanceof AST_PropAccess && p.expression === this; + }); + + PARENS(AST_Seq, function(output){ + var p = output.parent(); + return p instanceof AST_Call // (foo, bar)() or foo(1, (2, 3), 4) + || p instanceof AST_Unary // !(foo, bar, baz) + || p instanceof AST_Binary // 1 + (2, 3) + 4 ==> 8 + || p instanceof AST_VarDef // var a = (1, 2), b = a + a; ==> b == 4 + || p instanceof AST_Dot // (1, {foo:2}).foo ==> 2 + || p instanceof AST_Array // [ 1, (2, 3), 4 ] ==> [ 1, 3, 4 ] + || p instanceof AST_ObjectProperty // { foo: (1, 2) }.foo ==> 2 + || p instanceof AST_Conditional /* (false, true) ? (a = 10, b = 20) : (c = 30) + * ==> 20 (side effect, set a := 10 and b := 20) */ + ; + }); + + PARENS(AST_Binary, function(output){ + var p = output.parent(); + // (foo && bar)() + if (p instanceof AST_Call && p.expression === this) + return true; + // typeof (foo && bar) + if (p instanceof AST_Unary) + return true; + // (foo && bar)["prop"], (foo && bar).prop + if (p instanceof AST_PropAccess && p.expression === this) + return true; + // this deals with precedence: 3 * (2 + 1) + if (p instanceof AST_Binary) { + var po = p.operator, pp = PRECEDENCE[po]; + var so = this.operator, sp = PRECEDENCE[so]; + if (pp > sp + || (pp == sp + && this === p.right + && !(so == po && + (so == "*" || + so == "&&" || + so == "||")))) { + return true; + } + } + }); + + PARENS(AST_PropAccess, function(output){ + var p = output.parent(); + if (p instanceof AST_New && p.expression === this) { + // i.e. new (foo.bar().baz) + // + // if there's one call into this subtree, then we need + // parens around it too, otherwise the call will be + // interpreted as passing the arguments to the upper New + // expression. + try { + this.walk(new TreeWalker(function(node){ + if (node instanceof AST_Call) throw p; + })); + } catch(ex) { + if (ex !== p) throw ex; + return true; + } + } + }); + + PARENS(AST_Call, function(output){ + var p = output.parent(); + return p instanceof AST_New && p.expression === this; + }); + + PARENS(AST_New, function(output){ + var p = output.parent(); + if (no_constructor_parens(this, output) + && (p instanceof AST_PropAccess // (new Date).getTime(), (new Date)["getTime"]() + || p instanceof AST_Call && p.expression === this)) // (new foo)(bar) + return true; + }); + + PARENS(AST_Number, function(output){ + var p = output.parent(); + if (this.getValue() < 0 && p instanceof AST_PropAccess && p.expression === this) + return true; + }); + + PARENS(AST_NaN, function(output){ + var p = output.parent(); + if (p instanceof AST_PropAccess && p.expression === this) + return true; + }); + + function assign_and_conditional_paren_rules(output) { + var p = output.parent(); + // !(a = false) → true + if (p instanceof AST_Unary) + return true; + // 1 + (a = 2) + 3 → 6, side effect setting a = 2 + if (p instanceof AST_Binary && !(p instanceof AST_Assign)) + return true; + // (a = func)() —or— new (a = Object)() + if (p instanceof AST_Call && p.expression === this) + return true; + // (a = foo) ? bar : baz + if (p instanceof AST_Conditional && p.condition === this) + return true; + // (a = foo)["prop"] —or— (a = foo).prop + if (p instanceof AST_PropAccess && p.expression === this) + return true; + }; + + PARENS(AST_Assign, assign_and_conditional_paren_rules); + PARENS(AST_Conditional, assign_and_conditional_paren_rules); + + /* -----[ PRINTERS ]----- */ + + DEFPRINT(AST_Directive, function(self, output){ + output.print_string(self.value); + output.semicolon(); + }); + DEFPRINT(AST_Debugger, function(self, output){ + output.print("debugger"); + output.semicolon(); + }); + + /* -----[ statements ]----- */ + + function display_body(body, is_toplevel, output) { + var last = body.length - 1; + body.forEach(function(stmt, i){ + if (!(stmt instanceof AST_EmptyStatement)) { + output.indent(); + stmt.print(output); + if (!(i == last && is_toplevel)) { + output.newline(); + if (is_toplevel) output.newline(); + } + } + }); + }; + + AST_StatementWithBody.DEFMETHOD("_do_print_body", function(output){ + force_statement(this.body, output); + }); + + DEFPRINT(AST_Statement, function(self, output){ + self.body.print(output); + output.semicolon(); + }); + DEFPRINT(AST_Toplevel, function(self, output){ + display_body(self.body, true, output); + output.print(""); + }); + DEFPRINT(AST_LabeledStatement, function(self, output){ + self.label.print(output); + output.colon(); + self.body.print(output); + }); + DEFPRINT(AST_SimpleStatement, function(self, output){ + self.body.print(output); + output.semicolon(); + }); + function print_bracketed(body, output) { + if (body.length > 0) output.with_block(function(){ + display_body(body, false, output); + }); + else output.print("{}"); + }; + DEFPRINT(AST_BlockStatement, function(self, output){ + print_bracketed(self.body, output); + }); + DEFPRINT(AST_EmptyStatement, function(self, output){ + output.semicolon(); + }); + DEFPRINT(AST_Do, function(self, output){ + output.print("do"); + output.space(); + self._do_print_body(output); + output.space(); + output.print("while"); + output.space(); + output.with_parens(function(){ + self.condition.print(output); + }); + output.semicolon(); + }); + DEFPRINT(AST_While, function(self, output){ + output.print("while"); + output.space(); + output.with_parens(function(){ + self.condition.print(output); + }); + output.space(); + self._do_print_body(output); + }); + DEFPRINT(AST_For, function(self, output){ + output.print("for"); + output.space(); + output.with_parens(function(){ + if (self.init) { + if (self.init instanceof AST_Definitions) { + self.init.print(output); + } else { + parenthesize_for_noin(self.init, output, true); + } + output.print(";"); + output.space(); + } else { + output.print(";"); + } + if (self.condition) { + self.condition.print(output); + output.print(";"); + output.space(); + } else { + output.print(";"); + } + if (self.step) { + self.step.print(output); + } + }); + output.space(); + self._do_print_body(output); + }); + DEFPRINT(AST_ForIn, function(self, output){ + output.print("for"); + output.space(); + output.with_parens(function(){ + self.init.print(output); + output.space(); + output.print("in"); + output.space(); + self.object.print(output); + }); + output.space(); + self._do_print_body(output); + }); + DEFPRINT(AST_With, function(self, output){ + output.print("with"); + output.space(); + output.with_parens(function(){ + self.expression.print(output); + }); + output.space(); + self._do_print_body(output); + }); + + /* -----[ functions ]----- */ + AST_Lambda.DEFMETHOD("_do_print", function(output, nokeyword){ + var self = this; + if (!nokeyword) { + output.print("function"); + } + if (self.name) { + output.space(); + self.name.print(output); + } + output.with_parens(function(){ + self.argnames.forEach(function(arg, i){ + if (i) output.comma(); + arg.print(output); + }); + }); + output.space(); + print_bracketed(self.body, output); + }); + DEFPRINT(AST_Lambda, function(self, output){ + self._do_print(output); + }); + + /* -----[ exits ]----- */ + AST_Exit.DEFMETHOD("_do_print", function(output, kind){ + output.print(kind); + if (this.value) { + output.space(); + this.value.print(output); + } + output.semicolon(); + }); + DEFPRINT(AST_Return, function(self, output){ + self._do_print(output, "return"); + }); + DEFPRINT(AST_Throw, function(self, output){ + self._do_print(output, "throw"); + }); + + /* -----[ loop control ]----- */ + AST_LoopControl.DEFMETHOD("_do_print", function(output, kind){ + output.print(kind); + if (this.label) { + output.space(); + this.label.print(output); + } + output.semicolon(); + }); + DEFPRINT(AST_Break, function(self, output){ + self._do_print(output, "break"); + }); + DEFPRINT(AST_Continue, function(self, output){ + self._do_print(output, "continue"); + }); + + /* -----[ if ]----- */ + function make_then(self, output) { + if (output.option("bracketize")) { + make_block(self.body, output); + return; + } + // The squeezer replaces "block"-s that contain only a single + // statement with the statement itself; technically, the AST + // is correct, but this can create problems when we output an + // IF having an ELSE clause where the THEN clause ends in an + // IF *without* an ELSE block (then the outer ELSE would refer + // to the inner IF). This function checks for this case and + // adds the block brackets if needed. + if (!self.body) + return output.force_semicolon(); + if (self.body instanceof AST_Do + && output.option("ie_proof")) { + // https://github.com/mishoo/UglifyJS/issues/#issue/57 IE + // croaks with "syntax error" on code like this: if (foo) + // do ... while(cond); else ... we need block brackets + // around do/while + make_block(self.body, output); + return; + } + var b = self.body; + while (true) { + if (b instanceof AST_If) { + if (!b.alternative) { + make_block(self.body, output); + return; + } + b = b.alternative; + } + else if (b instanceof AST_StatementWithBody) { + b = b.body; + } + else break; + } + force_statement(self.body, output); + }; + DEFPRINT(AST_If, function(self, output){ + output.print("if"); + output.space(); + output.with_parens(function(){ + self.condition.print(output); + }); + output.space(); + if (self.alternative) { + make_then(self, output); + output.space(); + output.print("else"); + output.space(); + force_statement(self.alternative, output); + } else { + self._do_print_body(output); + } + }); + + /* -----[ switch ]----- */ + DEFPRINT(AST_Switch, function(self, output){ + output.print("switch"); + output.space(); + output.with_parens(function(){ + self.expression.print(output); + }); + output.space(); + if (self.body.length > 0) output.with_block(function(){ + self.body.forEach(function(stmt, i){ + if (i) output.newline(); + output.indent(true); + stmt.print(output); + }); + }); + else output.print("{}"); + }); + AST_SwitchBranch.DEFMETHOD("_do_print_body", function(output){ + if (this.body.length > 0) { + output.newline(); + this.body.forEach(function(stmt){ + output.indent(); + stmt.print(output); + output.newline(); + }); + } + }); + DEFPRINT(AST_Default, function(self, output){ + output.print("default:"); + self._do_print_body(output); + }); + DEFPRINT(AST_Case, function(self, output){ + output.print("case"); + output.space(); + self.expression.print(output); + output.print(":"); + self._do_print_body(output); + }); + + /* -----[ exceptions ]----- */ + DEFPRINT(AST_Try, function(self, output){ + output.print("try"); + output.space(); + print_bracketed(self.body, output); + if (self.bcatch) { + output.space(); + self.bcatch.print(output); + } + if (self.bfinally) { + output.space(); + self.bfinally.print(output); + } + }); + DEFPRINT(AST_Catch, function(self, output){ + output.print("catch"); + output.space(); + output.with_parens(function(){ + self.argname.print(output); + }); + output.space(); + print_bracketed(self.body, output); + }); + DEFPRINT(AST_Finally, function(self, output){ + output.print("finally"); + output.space(); + print_bracketed(self.body, output); + }); + + /* -----[ var/const ]----- */ + AST_Definitions.DEFMETHOD("_do_print", function(output, kind){ + output.print(kind); + output.space(); + this.definitions.forEach(function(def, i){ + if (i) output.comma(); + def.print(output); + }); + var p = output.parent(); + var in_for = p instanceof AST_For || p instanceof AST_ForIn; + var avoid_semicolon = in_for && p.init === this; + if (!avoid_semicolon) + output.semicolon(); + }); + DEFPRINT(AST_Var, function(self, output){ + self._do_print(output, "var"); + }); + DEFPRINT(AST_Const, function(self, output){ + self._do_print(output, "const"); + }); + + function parenthesize_for_noin(node, output, noin) { + if (!noin) node.print(output); + else try { + // need to take some precautions here: + // https://github.com/mishoo/UglifyJS2/issues/60 + node.walk(new TreeWalker(function(node){ + if (node instanceof AST_Binary && node.operator == "in") + throw output; + })); + node.print(output); + } catch(ex) { + if (ex !== output) throw ex; + node.print(output, true); + } + }; + + DEFPRINT(AST_VarDef, function(self, output){ + self.name.print(output); + if (self.value) { + output.space(); + output.print("="); + output.space(); + var p = output.parent(1); + var noin = p instanceof AST_For || p instanceof AST_ForIn; + parenthesize_for_noin(self.value, output, noin); + } + }); + + /* -----[ other expressions ]----- */ + DEFPRINT(AST_Call, function(self, output){ + self.expression.print(output); + if (self instanceof AST_New && no_constructor_parens(self, output)) + return; + output.with_parens(function(){ + self.args.forEach(function(expr, i){ + if (i) output.comma(); + expr.print(output); + }); + }); + }); + DEFPRINT(AST_New, function(self, output){ + output.print("new"); + output.space(); + AST_Call.prototype._codegen(self, output); + }); + + AST_Seq.DEFMETHOD("_do_print", function(output){ + this.car.print(output); + if (this.cdr) { + output.comma(); + if (output.should_break()) { + output.newline(); + output.indent(); + } + this.cdr.print(output); + } + }); + DEFPRINT(AST_Seq, function(self, output){ + self._do_print(output); + // var p = output.parent(); + // if (p instanceof AST_Statement) { + // output.with_indent(output.next_indent(), function(){ + // self._do_print(output); + // }); + // } else { + // self._do_print(output); + // } + }); + DEFPRINT(AST_Dot, function(self, output){ + var expr = self.expression; + expr.print(output); + if (expr instanceof AST_Number && expr.getValue() >= 0) { + if (!/[xa-f.]/i.test(output.last())) { + output.print("."); + } + } + output.print("."); + // the name after dot would be mapped about here. + output.add_mapping(self.end); + output.print_name(self.property); + }); + DEFPRINT(AST_Sub, function(self, output){ + self.expression.print(output); + output.print("["); + self.property.print(output); + output.print("]"); + }); + DEFPRINT(AST_UnaryPrefix, function(self, output){ + var op = self.operator; + output.print(op); + if (/^[a-z]/i.test(op)) + output.space(); + self.expression.print(output); + }); + DEFPRINT(AST_UnaryPostfix, function(self, output){ + self.expression.print(output); + output.print(self.operator); + }); + DEFPRINT(AST_Binary, function(self, output){ + self.left.print(output); + output.space(); + output.print(self.operator); + output.space(); + self.right.print(output); + }); + DEFPRINT(AST_Conditional, function(self, output){ + self.condition.print(output); + output.space(); + output.print("?"); + output.space(); + self.consequent.print(output); + output.space(); + output.colon(); + self.alternative.print(output); + }); + + /* -----[ literals ]----- */ + DEFPRINT(AST_Array, function(self, output){ + output.with_square(function(){ + var a = self.elements, len = a.length; + if (len > 0) output.space(); + a.forEach(function(exp, i){ + if (i) output.comma(); + exp.print(output); + }); + if (len > 0) output.space(); + }); + }); + DEFPRINT(AST_Object, function(self, output){ + if (self.properties.length > 0) output.with_block(function(){ + self.properties.forEach(function(prop, i){ + if (i) { + output.print(","); + output.newline(); + } + output.indent(); + prop.print(output); + }); + output.newline(); + }); + else output.print("{}"); + }); + DEFPRINT(AST_ObjectKeyVal, function(self, output){ + var key = self.key; + if (output.option("quote_keys")) { + output.print_string(key); + } else if ((typeof key == "number" + || !output.option("beautify") + && +key + "" == key) + && parseFloat(key) >= 0) { + output.print(make_num(key)); + } else if (!is_identifier(key)) { + output.print_string(key); + } else { + output.print_name(key); + } + output.colon(); + self.value.print(output); + }); + DEFPRINT(AST_ObjectSetter, function(self, output){ + output.print("set"); + self.value._do_print(output, true); + }); + DEFPRINT(AST_ObjectGetter, function(self, output){ + output.print("get"); + self.value._do_print(output, true); + }); + DEFPRINT(AST_Symbol, function(self, output){ + var def = self.definition(); + output.print_name(def ? def.mangled_name || def.name : self.name); + }); + DEFPRINT(AST_Undefined, function(self, output){ + output.print("void 0"); + }); + DEFPRINT(AST_Hole, noop); + DEFPRINT(AST_Infinity, function(self, output){ + output.print("1/0"); + }); + DEFPRINT(AST_NaN, function(self, output){ + output.print("0/0"); + }); + DEFPRINT(AST_This, function(self, output){ + output.print("this"); + }); + DEFPRINT(AST_Constant, function(self, output){ + output.print(self.getValue()); + }); + DEFPRINT(AST_String, function(self, output){ + output.print_string(self.getValue()); + }); + DEFPRINT(AST_Number, function(self, output){ + output.print(make_num(self.getValue())); + }); + DEFPRINT(AST_RegExp, function(self, output){ + var str = self.getValue().toString(); + if (output.option("ascii_only")) + str = output.to_ascii(str); + output.print(str); + var p = output.parent(); + if (p instanceof AST_Binary && /^in/.test(p.operator) && p.left === self) + output.print(" "); + }); + + function force_statement(stat, output) { + if (output.option("bracketize")) { + if (!stat || stat instanceof AST_EmptyStatement) + output.print("{}"); + else if (stat instanceof AST_BlockStatement) + stat.print(output); + else output.with_block(function(){ + output.indent(); + stat.print(output); + output.newline(); + }); + } else { + if (!stat || stat instanceof AST_EmptyStatement) + output.force_semicolon(); + else + stat.print(output); + } + }; + + // return true if the node at the top of the stack (that means the + // innermost node in the current output) is lexically the first in + // a statement. + function first_in_statement(output) { + var a = output.stack(), i = a.length, node = a[--i], p = a[--i]; + while (i > 0) { + if (p instanceof AST_Statement && p.body === node) + return true; + if ((p instanceof AST_Seq && p.car === node ) || + (p instanceof AST_Call && p.expression === node ) || + (p instanceof AST_Dot && p.expression === node ) || + (p instanceof AST_Sub && p.expression === node ) || + (p instanceof AST_Conditional && p.condition === node ) || + (p instanceof AST_Binary && p.left === node ) || + (p instanceof AST_UnaryPostfix && p.expression === node )) + { + node = p; + p = a[--i]; + } else { + return false; + } + } + }; + + // self should be AST_New. decide if we want to show parens or not. + function no_constructor_parens(self, output) { + return self.args.length == 0 && !output.option("beautify"); + }; + + function best_of(a) { + var best = a[0], len = best.length; + for (var i = 1; i < a.length; ++i) { + if (a[i].length < len) { + best = a[i]; + len = best.length; + } + } + return best; + }; + + function make_num(num) { + var str = num.toString(10), a = [ str.replace(/^0\./, ".").replace('e+', 'e') ], m; + if (Math.floor(num) === num) { + if (num >= 0) { + a.push("0x" + num.toString(16).toLowerCase(), // probably pointless + "0" + num.toString(8)); // same. + } else { + a.push("-0x" + (-num).toString(16).toLowerCase(), // probably pointless + "-0" + (-num).toString(8)); // same. + } + if ((m = /^(.*?)(0+)$/.exec(num))) { + a.push(m[1] + "e" + m[2].length); + } + } else if ((m = /^0?\.(0+)(.*)$/.exec(num))) { + a.push(m[2] + "e-" + (m[1].length + m[2].length), + str.substr(str.indexOf("."))); + } + return best_of(a); + }; + + function make_block(stmt, output) { + if (stmt instanceof AST_BlockStatement) { + stmt.print(output); + return; + } + output.with_block(function(){ + output.indent(); + stmt.print(output); + output.newline(); + }); + }; + + /* -----[ source map generators ]----- */ + + function DEFMAP(nodetype, generator) { + nodetype.DEFMETHOD("add_source_map", function(stream){ + generator(this, stream); + }); + }; + + // We could easily add info for ALL nodes, but it seems to me that + // would be quite wasteful, hence this noop in the base class. + DEFMAP(AST_Node, noop); + + function basic_sourcemap_gen(self, output) { + output.add_mapping(self.start); + }; + + // XXX: I'm not exactly sure if we need it for all of these nodes, + // or if we should add even more. + + DEFMAP(AST_Directive, basic_sourcemap_gen); + DEFMAP(AST_Debugger, basic_sourcemap_gen); + DEFMAP(AST_Symbol, basic_sourcemap_gen); + DEFMAP(AST_Jump, basic_sourcemap_gen); + DEFMAP(AST_StatementWithBody, basic_sourcemap_gen); + DEFMAP(AST_LabeledStatement, noop); // since the label symbol will mark it + DEFMAP(AST_Lambda, basic_sourcemap_gen); + DEFMAP(AST_Switch, basic_sourcemap_gen); + DEFMAP(AST_SwitchBranch, basic_sourcemap_gen); + DEFMAP(AST_BlockStatement, basic_sourcemap_gen); + DEFMAP(AST_Toplevel, noop); + DEFMAP(AST_New, basic_sourcemap_gen); + DEFMAP(AST_Try, basic_sourcemap_gen); + DEFMAP(AST_Catch, basic_sourcemap_gen); + DEFMAP(AST_Finally, basic_sourcemap_gen); + DEFMAP(AST_Definitions, basic_sourcemap_gen); + DEFMAP(AST_Constant, basic_sourcemap_gen); + DEFMAP(AST_ObjectProperty, function(self, output){ + output.add_mapping(self.start, self.key); + }); + +})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js new file mode 100644 index 0000000..5a75e75 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js @@ -0,0 +1,1407 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + Parser based on parse-js (http://marijn.haverbeke.nl/parse-js/). + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +var KEYWORDS = 'break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with'; +var KEYWORDS_ATOM = 'false null true'; +var RESERVED_WORDS = 'abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized this throws transient volatile' + + " " + KEYWORDS_ATOM + " " + KEYWORDS; +var KEYWORDS_BEFORE_EXPRESSION = 'return new delete throw else case'; + +KEYWORDS = makePredicate(KEYWORDS); +RESERVED_WORDS = makePredicate(RESERVED_WORDS); +KEYWORDS_BEFORE_EXPRESSION = makePredicate(KEYWORDS_BEFORE_EXPRESSION); +KEYWORDS_ATOM = makePredicate(KEYWORDS_ATOM); + +var OPERATOR_CHARS = makePredicate(characters("+-*&%=<>!?|~^")); + +var RE_HEX_NUMBER = /^0x[0-9a-f]+$/i; +var RE_OCT_NUMBER = /^0[0-7]+$/; +var RE_DEC_NUMBER = /^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i; + +var OPERATORS = makePredicate([ + "in", + "instanceof", + "typeof", + "new", + "void", + "delete", + "++", + "--", + "+", + "-", + "!", + "~", + "&", + "|", + "^", + "*", + "/", + "%", + ">>", + "<<", + ">>>", + "<", + ">", + "<=", + ">=", + "==", + "===", + "!=", + "!==", + "?", + "=", + "+=", + "-=", + "/=", + "*=", + "%=", + ">>=", + "<<=", + ">>>=", + "|=", + "^=", + "&=", + "&&", + "||" +]); + +var WHITESPACE_CHARS = makePredicate(characters(" \u00a0\n\r\t\f\u000b\u200b\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000")); + +var PUNC_BEFORE_EXPRESSION = makePredicate(characters("[{(,.;:")); + +var PUNC_CHARS = makePredicate(characters("[]{}(),;:")); + +var REGEXP_MODIFIERS = makePredicate(characters("gmsiy")); + +/* -----[ Tokenizer ]----- */ + +// regexps adapted from http://xregexp.com/plugins/#unicode +var UNICODE = { + letter: new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), + non_spacing_mark: new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"), + space_combining_mark: new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"), + connector_punctuation: new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]") +}; + +function is_letter(code) { + return (code >= 97 && code <= 122) + || (code >= 65 && code <= 90) + || (code >= 0xaa && UNICODE.letter.test(String.fromCharCode(code))); +}; + +function is_digit(code) { + return code >= 48 && code <= 57; //XXX: find out if "UnicodeDigit" means something else than 0..9 +}; + +function is_alphanumeric_char(code) { + return is_digit(code) || is_letter(code); +}; + +function is_unicode_combining_mark(ch) { + return UNICODE.non_spacing_mark.test(ch) || UNICODE.space_combining_mark.test(ch); +}; + +function is_unicode_connector_punctuation(ch) { + return UNICODE.connector_punctuation.test(ch); +}; + +function is_identifier(name) { + return /^[a-z_$][a-z0-9_$]*$/i.test(name) && !RESERVED_WORDS(name); +}; + +function is_identifier_start(code) { + return code == 36 || code == 95 || is_letter(code); +}; + +function is_identifier_char(ch) { + var code = ch.charCodeAt(0); + return is_identifier_start(code) + || is_digit(code) + || code == 8204 // \u200c: zero-width non-joiner + || code == 8205 // \u200d: zero-width joiner (in my ECMA-262 PDF, this is also 200c) + || is_unicode_combining_mark(ch) + || is_unicode_connector_punctuation(ch) + ; +}; + +function parse_js_number(num) { + if (RE_HEX_NUMBER.test(num)) { + return parseInt(num.substr(2), 16); + } else if (RE_OCT_NUMBER.test(num)) { + return parseInt(num.substr(1), 8); + } else if (RE_DEC_NUMBER.test(num)) { + return parseFloat(num); + } +}; + +function JS_Parse_Error(message, line, col, pos) { + this.message = message; + this.line = line; + this.col = col; + this.pos = pos; + this.stack = new Error().stack; +}; + +JS_Parse_Error.prototype.toString = function() { + return this.message + " (line: " + this.line + ", col: " + this.col + ", pos: " + this.pos + ")" + "\n\n" + this.stack; +}; + +function js_error(message, filename, line, col, pos) { + AST_Node.warn("ERROR: {message} [{file}:{line},{col}]", { + message: message, + file: filename, + line: line, + col: col + }); + throw new JS_Parse_Error(message, line, col, pos); +}; + +function is_token(token, type, val) { + return token.type == type && (val == null || token.value == val); +}; + +var EX_EOF = {}; + +function tokenizer($TEXT, filename) { + + var S = { + text : $TEXT.replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/\uFEFF/g, ''), + filename : filename, + pos : 0, + tokpos : 0, + line : 1, + tokline : 0, + col : 0, + tokcol : 0, + newline_before : false, + regex_allowed : false, + comments_before : [] + }; + + function peek() { return S.text.charAt(S.pos); }; + + function next(signal_eof, in_string) { + var ch = S.text.charAt(S.pos++); + if (signal_eof && !ch) + throw EX_EOF; + if (ch == "\n") { + S.newline_before = S.newline_before || !in_string; + ++S.line; + S.col = 0; + } else { + ++S.col; + } + return ch; + }; + + function find(what, signal_eof) { + var pos = S.text.indexOf(what, S.pos); + if (signal_eof && pos == -1) throw EX_EOF; + return pos; + }; + + function start_token() { + S.tokline = S.line; + S.tokcol = S.col; + S.tokpos = S.pos; + }; + + function token(type, value, is_comment) { + S.regex_allowed = ((type == "operator" && !UNARY_POSTFIX[value]) || + (type == "keyword" && KEYWORDS_BEFORE_EXPRESSION(value)) || + (type == "punc" && PUNC_BEFORE_EXPRESSION(value))); + var ret = { + type : type, + value : value, + line : S.tokline, + col : S.tokcol, + pos : S.tokpos, + endpos : S.pos, + nlb : S.newline_before, + file : filename + }; + if (!is_comment) { + ret.comments_before = S.comments_before; + S.comments_before = []; + // make note of any newlines in the comments that came before + for (var i = 0, len = ret.comments_before.length; i < len; i++) { + ret.nlb = ret.nlb || ret.comments_before[i].nlb; + } + } + S.newline_before = false; + return new AST_Token(ret); + }; + + function skip_whitespace() { + while (WHITESPACE_CHARS(peek())) + next(); + }; + + function read_while(pred) { + var ret = "", ch, i = 0; + while ((ch = peek()) && pred(ch, i++)) + ret += next(); + return ret; + }; + + function parse_error(err) { + js_error(err, filename, S.tokline, S.tokcol, S.tokpos); + }; + + function read_num(prefix) { + var has_e = false, after_e = false, has_x = false, has_dot = prefix == "."; + var num = read_while(function(ch, i){ + var code = ch.charCodeAt(0); + switch (code) { + case 120: case 88: // xX + return has_x ? false : (has_x = true); + case 101: case 69: // eE + return has_x ? true : has_e ? false : (has_e = after_e = true); + case 45: // - + return after_e || (i == 0 && !prefix); + case 43: // + + return after_e; + case (after_e = false, 46): // . + return (!has_dot && !has_x && !has_e) ? (has_dot = true) : false; + } + return is_alphanumeric_char(code); + }); + if (prefix) num = prefix + num; + var valid = parse_js_number(num); + if (!isNaN(valid)) { + return token("num", valid); + } else { + parse_error("Invalid syntax: " + num); + } + }; + + function read_escaped_char(in_string) { + var ch = next(true, in_string); + switch (ch.charCodeAt(0)) { + case 110 : return "\n"; + case 114 : return "\r"; + case 116 : return "\t"; + case 98 : return "\b"; + case 118 : return "\u000b"; // \v + case 102 : return "\f"; + case 48 : return "\0"; + case 120 : return String.fromCharCode(hex_bytes(2)); // \x + case 117 : return String.fromCharCode(hex_bytes(4)); // \u + case 10 : return ""; // newline + default : return ch; + } + }; + + function hex_bytes(n) { + var num = 0; + for (; n > 0; --n) { + var digit = parseInt(next(true), 16); + if (isNaN(digit)) + parse_error("Invalid hex-character pattern in string"); + num = (num << 4) | digit; + } + return num; + }; + + var read_string = with_eof_error("Unterminated string constant", function(){ + var quote = next(), ret = ""; + for (;;) { + var ch = next(true); + if (ch == "\\") { + // read OctalEscapeSequence (XXX: deprecated if "strict mode") + // https://github.com/mishoo/UglifyJS/issues/178 + var octal_len = 0, first = null; + ch = read_while(function(ch){ + if (ch >= "0" && ch <= "7") { + if (!first) { + first = ch; + return ++octal_len; + } + else if (first <= "3" && octal_len <= 2) return ++octal_len; + else if (first >= "4" && octal_len <= 1) return ++octal_len; + } + return false; + }); + if (octal_len > 0) ch = String.fromCharCode(parseInt(ch, 8)); + else ch = read_escaped_char(true); + } + else if (ch == quote) break; + ret += ch; + } + return token("string", ret); + }); + + function read_line_comment() { + next(); + var i = find("\n"), ret; + if (i == -1) { + ret = S.text.substr(S.pos); + S.pos = S.text.length; + } else { + ret = S.text.substring(S.pos, i); + S.pos = i; + } + return token("comment1", ret, true); + }; + + var read_multiline_comment = with_eof_error("Unterminated multiline comment", function(){ + next(); + var i = find("*/", true); + var text = S.text.substring(S.pos, i); + var a = text.split("\n"), n = a.length; + // update stream position + S.pos = i + 2; + S.line += n - 1; + if (n > 1) S.col = a[n - 1].length; + else S.col += a[n - 1].length; + S.col += 2; + S.newline_before = S.newline_before || text.indexOf("\n") >= 0; + return token("comment2", text, true); + }); + + function read_name() { + var backslash = false, name = "", ch, escaped = false, hex; + while ((ch = peek()) != null) { + if (!backslash) { + if (ch == "\\") escaped = backslash = true, next(); + else if (is_identifier_char(ch)) name += next(); + else break; + } + else { + if (ch != "u") parse_error("Expecting UnicodeEscapeSequence -- uXXXX"); + ch = read_escaped_char(); + if (!is_identifier_char(ch)) parse_error("Unicode char: " + ch.charCodeAt(0) + " is not valid in identifier"); + name += ch; + backslash = false; + } + } + if (KEYWORDS(name) && escaped) { + hex = name.charCodeAt(0).toString(16).toUpperCase(); + name = "\\u" + "0000".substr(hex.length) + hex + name.slice(1); + } + return name; + }; + + var read_regexp = with_eof_error("Unterminated regular expression", function(regexp){ + var prev_backslash = false, ch, in_class = false; + while ((ch = next(true))) if (prev_backslash) { + regexp += "\\" + ch; + prev_backslash = false; + } else if (ch == "[") { + in_class = true; + regexp += ch; + } else if (ch == "]" && in_class) { + in_class = false; + regexp += ch; + } else if (ch == "/" && !in_class) { + break; + } else if (ch == "\\") { + prev_backslash = true; + } else { + regexp += ch; + } + var mods = read_name(); + return token("regexp", new RegExp(regexp, mods)); + }); + + function read_operator(prefix) { + function grow(op) { + if (!peek()) return op; + var bigger = op + peek(); + if (OPERATORS(bigger)) { + next(); + return grow(bigger); + } else { + return op; + } + }; + return token("operator", grow(prefix || next())); + }; + + function handle_slash() { + next(); + var regex_allowed = S.regex_allowed; + switch (peek()) { + case "/": + S.comments_before.push(read_line_comment()); + S.regex_allowed = regex_allowed; + return next_token(); + case "*": + S.comments_before.push(read_multiline_comment()); + S.regex_allowed = regex_allowed; + return next_token(); + } + return S.regex_allowed ? read_regexp("") : read_operator("/"); + }; + + function handle_dot() { + next(); + return is_digit(peek().charCodeAt(0)) + ? read_num(".") + : token("punc", "."); + }; + + function read_word() { + var word = read_name(); + return KEYWORDS_ATOM(word) ? token("atom", word) + : !KEYWORDS(word) ? token("name", word) + : OPERATORS(word) ? token("operator", word) + : token("keyword", word); + }; + + function with_eof_error(eof_error, cont) { + return function(x) { + try { + return cont(x); + } catch(ex) { + if (ex === EX_EOF) parse_error(eof_error); + else throw ex; + } + }; + }; + + function next_token(force_regexp) { + if (force_regexp != null) + return read_regexp(force_regexp); + skip_whitespace(); + start_token(); + var ch = peek(); + if (!ch) return token("eof"); + var code = ch.charCodeAt(0); + switch (code) { + case 34: case 39: return read_string(); + case 46: return handle_dot(); + case 47: return handle_slash(); + } + if (is_digit(code)) return read_num(); + if (PUNC_CHARS(ch)) return token("punc", next()); + if (OPERATOR_CHARS(ch)) return read_operator(); + if (code == 92 || is_identifier_start(code)) return read_word(); + parse_error("Unexpected character '" + ch + "'"); + }; + + next_token.context = function(nc) { + if (nc) S = nc; + return S; + }; + + return next_token; + +}; + +/* -----[ Parser (constants) ]----- */ + +var UNARY_PREFIX = makePredicate([ + "typeof", + "void", + "delete", + "--", + "++", + "!", + "~", + "-", + "+" +]); + +var UNARY_POSTFIX = makePredicate([ "--", "++" ]); + +var ASSIGNMENT = makePredicate([ "=", "+=", "-=", "/=", "*=", "%=", ">>=", "<<=", ">>>=", "|=", "^=", "&=" ]); + +var PRECEDENCE = (function(a, ret){ + for (var i = 0, n = 1; i < a.length; ++i, ++n) { + var b = a[i]; + for (var j = 0; j < b.length; ++j) { + ret[b[j]] = n; + } + } + return ret; +})( + [ + ["||"], + ["&&"], + ["|"], + ["^"], + ["&"], + ["==", "===", "!=", "!=="], + ["<", ">", "<=", ">=", "in", "instanceof"], + [">>", "<<", ">>>"], + ["+", "-"], + ["*", "/", "%"] + ], + {} +); + +var STATEMENTS_WITH_LABELS = array_to_hash([ "for", "do", "while", "switch" ]); + +var ATOMIC_START_TOKEN = array_to_hash([ "atom", "num", "string", "regexp", "name" ]); + +/* -----[ Parser ]----- */ + +function parse($TEXT, options) { + + options = defaults(options, { + strict : false, + filename : null, + toplevel : null + }); + + var S = { + input : typeof $TEXT == "string" ? tokenizer($TEXT, options.filename) : $TEXT, + token : null, + prev : null, + peeked : null, + in_function : 0, + in_directives : true, + in_loop : 0, + labels : [] + }; + + S.token = next(); + + function is(type, value) { + return is_token(S.token, type, value); + }; + + function peek() { return S.peeked || (S.peeked = S.input()); }; + + function next() { + S.prev = S.token; + if (S.peeked) { + S.token = S.peeked; + S.peeked = null; + } else { + S.token = S.input(); + } + S.in_directives = S.in_directives && ( + S.token.type == "string" || is("punc", ";") + ); + return S.token; + }; + + function prev() { + return S.prev; + }; + + function croak(msg, line, col, pos) { + var ctx = S.input.context(); + js_error(msg, + ctx.filename, + line != null ? line : ctx.tokline, + col != null ? col : ctx.tokcol, + pos != null ? pos : ctx.tokpos); + }; + + function token_error(token, msg) { + croak(msg, token.line, token.col); + }; + + function unexpected(token) { + if (token == null) + token = S.token; + token_error(token, "Unexpected token: " + token.type + " (" + token.value + ")"); + }; + + function expect_token(type, val) { + if (is(type, val)) { + return next(); + } + token_error(S.token, "Unexpected token " + S.token.type + " «" + S.token.value + "»" + ", expected " + type + " «" + val + "»"); + }; + + function expect(punc) { return expect_token("punc", punc); }; + + function can_insert_semicolon() { + return !options.strict && ( + S.token.nlb || is("eof") || is("punc", "}") + ); + }; + + function semicolon() { + if (is("punc", ";")) next(); + else if (!can_insert_semicolon()) unexpected(); + }; + + function parenthesised() { + expect("("); + var exp = expression(true); + expect(")"); + return exp; + }; + + function embed_tokens(parser) { + return function() { + var start = S.token; + var expr = parser(); + var end = prev(); + expr.start = start; + expr.end = end; + return expr; + }; + }; + + var statement = embed_tokens(function() { + var tmp; + if (is("operator", "/") || is("operator", "/=")) { + S.peeked = null; + S.token = S.input(S.token.value.substr(1)); // force regexp + } + switch (S.token.type) { + case "string": + var dir = S.in_directives, stat = simple_statement(); + // XXXv2: decide how to fix directives + if (dir && stat.body instanceof AST_String && !is("punc", ",")) + return new AST_Directive({ value: stat.body.value }); + return stat; + case "num": + case "regexp": + case "operator": + case "atom": + return simple_statement(); + + case "name": + return is_token(peek(), "punc", ":") + ? labeled_statement() + : simple_statement(); + + case "punc": + switch (S.token.value) { + case "{": + return new AST_BlockStatement({ + start : S.token, + body : block_(), + end : prev() + }); + case "[": + case "(": + return simple_statement(); + case ";": + next(); + return new AST_EmptyStatement(); + default: + unexpected(); + } + + case "keyword": + switch (tmp = S.token.value, next(), tmp) { + case "break": + return break_cont(AST_Break); + + case "continue": + return break_cont(AST_Continue); + + case "debugger": + semicolon(); + return new AST_Debugger(); + + case "do": + return new AST_Do({ + body : in_loop(statement), + condition : (expect_token("keyword", "while"), tmp = parenthesised(), semicolon(), tmp) + }); + + case "while": + return new AST_While({ + condition : parenthesised(), + body : in_loop(statement) + }); + + case "for": + return for_(); + + case "function": + return function_(true); + + case "if": + return if_(); + + case "return": + if (S.in_function == 0) + croak("'return' outside of function"); + return new AST_Return({ + value: ( is("punc", ";") + ? (next(), null) + : can_insert_semicolon() + ? null + : (tmp = expression(true), semicolon(), tmp) ) + }); + + case "switch": + return new AST_Switch({ + expression : parenthesised(), + body : in_loop(switch_body_) + }); + + case "throw": + if (S.token.nlb) + croak("Illegal newline after 'throw'"); + return new AST_Throw({ + value: (tmp = expression(true), semicolon(), tmp) + }); + + case "try": + return try_(); + + case "var": + return tmp = var_(), semicolon(), tmp; + + case "const": + return tmp = const_(), semicolon(), tmp; + + case "with": + return new AST_With({ + expression : parenthesised(), + body : statement() + }); + + default: + unexpected(); + } + } + }); + + function labeled_statement() { + var label = as_symbol(AST_Label); + if (find_if(function(l){ return l.name == label.name }, S.labels)) { + // ECMA-262, 12.12: An ECMAScript program is considered + // syntactically incorrect if it contains a + // LabelledStatement that is enclosed by a + // LabelledStatement with the same Identifier as label. + croak("Label " + label.name + " defined twice"); + } + expect(":"); + S.labels.push(label); + var stat = statement(); + S.labels.pop(); + return new AST_LabeledStatement({ body: stat, label: label }); + }; + + function simple_statement(tmp) { + return new AST_SimpleStatement({ body: (tmp = expression(true), semicolon(), tmp) }); + }; + + function break_cont(type) { + var label = null; + if (!can_insert_semicolon()) { + label = as_symbol(AST_LabelRef, true); + } + if (label != null) { + if (!find_if(function(l){ return l.name == label.name }, S.labels)) + croak("Undefined label " + label.name); + } + else if (S.in_loop == 0) + croak(type.TYPE + " not inside a loop or switch"); + semicolon(); + return new type({ label: label }); + }; + + function for_() { + expect("("); + var init = null; + if (!is("punc", ";")) { + init = is("keyword", "var") + ? (next(), var_(true)) + : expression(true, true); + if (is("operator", "in")) { + if (init instanceof AST_Var && init.definitions.length > 1) + croak("Only one variable declaration allowed in for..in loop"); + next(); + return for_in(init); + } + } + return regular_for(init); + }; + + function regular_for(init) { + expect(";"); + var test = is("punc", ";") ? null : expression(true); + expect(";"); + var step = is("punc", ")") ? null : expression(true); + expect(")"); + return new AST_For({ + init : init, + condition : test, + step : step, + body : in_loop(statement) + }); + }; + + function for_in(init) { + var lhs = init instanceof AST_Var ? init.definitions[0].name : null; + var obj = expression(true); + expect(")"); + return new AST_ForIn({ + init : init, + name : lhs, + object : obj, + body : in_loop(statement) + }); + }; + + var function_ = function(in_statement, ctor) { + var is_accessor = ctor === AST_Accessor; + var name = (is("name") ? as_symbol(in_statement + ? AST_SymbolDefun + : is_accessor + ? AST_SymbolAccessor + : AST_SymbolLambda) + : is_accessor && (is("string") || is("num")) ? as_atom_node() + : null); + if (in_statement && !name) + unexpected(); + expect("("); + if (!ctor) ctor = in_statement ? AST_Defun : AST_Function; + return new ctor({ + name: name, + argnames: (function(first, a){ + while (!is("punc", ")")) { + if (first) first = false; else expect(","); + a.push(as_symbol(AST_SymbolFunarg)); + } + next(); + return a; + })(true, []), + body: (function(loop, labels){ + ++S.in_function; + S.in_directives = true; + S.in_loop = 0; + S.labels = []; + var a = block_(); + --S.in_function; + S.in_loop = loop; + S.labels = labels; + return a; + })(S.in_loop, S.labels) + }); + }; + + function if_() { + var cond = parenthesised(), body = statement(), belse = null; + if (is("keyword", "else")) { + next(); + belse = statement(); + } + return new AST_If({ + condition : cond, + body : body, + alternative : belse + }); + }; + + function block_() { + expect("{"); + var a = []; + while (!is("punc", "}")) { + if (is("eof")) unexpected(); + a.push(statement()); + } + next(); + return a; + }; + + function switch_body_() { + expect("{"); + var a = [], cur = null, branch = null, tmp; + while (!is("punc", "}")) { + if (is("eof")) unexpected(); + if (is("keyword", "case")) { + if (branch) branch.end = prev(); + cur = []; + branch = new AST_Case({ + start : (tmp = S.token, next(), tmp), + expression : expression(true), + body : cur + }); + a.push(branch); + expect(":"); + } + else if (is("keyword", "default")) { + if (branch) branch.end = prev(); + cur = []; + branch = new AST_Default({ + start : (tmp = S.token, next(), expect(":"), tmp), + body : cur + }); + a.push(branch); + } + else { + if (!cur) unexpected(); + cur.push(statement()); + } + } + if (branch) branch.end = prev(); + next(); + return a; + }; + + function try_() { + var body = block_(), bcatch = null, bfinally = null; + if (is("keyword", "catch")) { + var start = S.token; + next(); + expect("("); + var name = as_symbol(AST_SymbolCatch); + expect(")"); + bcatch = new AST_Catch({ + start : start, + argname : name, + body : block_(), + end : prev() + }); + } + if (is("keyword", "finally")) { + var start = S.token; + next(); + bfinally = new AST_Finally({ + start : start, + body : block_(), + end : prev() + }); + } + if (!bcatch && !bfinally) + croak("Missing catch/finally blocks"); + return new AST_Try({ + body : body, + bcatch : bcatch, + bfinally : bfinally + }); + }; + + function vardefs(no_in, in_const) { + var a = []; + for (;;) { + a.push(new AST_VarDef({ + start : S.token, + name : as_symbol(in_const ? AST_SymbolConst : AST_SymbolVar), + value : is("operator", "=") ? (next(), expression(false, no_in)) : null, + end : prev() + })); + if (!is("punc", ",")) + break; + next(); + } + return a; + }; + + var var_ = function(no_in) { + return new AST_Var({ + start : prev(), + definitions : vardefs(no_in, false), + end : prev() + }); + }; + + var const_ = function() { + return new AST_Const({ + start : prev(), + definitions : vardefs(false, true), + end : prev() + }); + }; + + var new_ = function() { + var start = S.token; + expect_token("operator", "new"); + var newexp = expr_atom(false), args; + if (is("punc", "(")) { + next(); + args = expr_list(")"); + } else { + args = []; + } + return subscripts(new AST_New({ + start : start, + expression : newexp, + args : args, + end : prev() + }), true); + }; + + function as_atom_node() { + var tok = S.token, ret; + switch (tok.type) { + case "name": + return as_symbol(AST_SymbolRef); + case "num": + ret = new AST_Number({ start: tok, end: tok, value: tok.value }); + break; + case "string": + ret = new AST_String({ start: tok, end: tok, value: tok.value }); + break; + case "regexp": + ret = new AST_RegExp({ start: tok, end: tok, value: tok.value }); + break; + case "atom": + switch (tok.value) { + case "false": + ret = new AST_False({ start: tok, end: tok }); + break; + case "true": + ret = new AST_True({ start: tok, end: tok }); + break; + case "null": + ret = new AST_Null({ start: tok, end: tok }); + break; + } + break; + } + next(); + return ret; + }; + + var expr_atom = function(allow_calls) { + if (is("operator", "new")) { + return new_(); + } + var start = S.token; + if (is("punc")) { + switch (start.value) { + case "(": + next(); + var ex = expression(true); + ex.start = start; + ex.end = S.token; + expect(")"); + return subscripts(ex, allow_calls); + case "[": + return subscripts(array_(), allow_calls); + case "{": + return subscripts(object_(), allow_calls); + } + unexpected(); + } + if (is("keyword", "function")) { + next(); + var func = function_(false); + func.start = start; + func.end = prev(); + return subscripts(func, allow_calls); + } + if (ATOMIC_START_TOKEN[S.token.type]) { + return subscripts(as_atom_node(), allow_calls); + } + unexpected(); + }; + + function expr_list(closing, allow_trailing_comma, allow_empty) { + var first = true, a = []; + while (!is("punc", closing)) { + if (first) first = false; else expect(","); + if (allow_trailing_comma && is("punc", closing)) break; + if (is("punc", ",") && allow_empty) { + a.push(new AST_Hole({ start: S.token, end: S.token })); + } else { + a.push(expression(false)); + } + } + next(); + return a; + }; + + var array_ = embed_tokens(function() { + expect("["); + return new AST_Array({ + elements: expr_list("]", !options.strict, true) + }); + }); + + var object_ = embed_tokens(function() { + expect("{"); + var first = true, a = []; + while (!is("punc", "}")) { + if (first) first = false; else expect(","); + if (!options.strict && is("punc", "}")) + // allow trailing comma + break; + var start = S.token; + var type = start.type; + var name = as_property_name(); + if (type == "name" && !is("punc", ":")) { + if (name == "get") { + a.push(new AST_ObjectGetter({ + start : start, + key : name, + value : function_(false, AST_Accessor), + end : prev() + })); + continue; + } + if (name == "set") { + a.push(new AST_ObjectSetter({ + start : start, + key : name, + value : function_(false, AST_Accessor), + end : prev() + })); + continue; + } + } + expect(":"); + a.push(new AST_ObjectKeyVal({ + start : start, + key : name, + value : expression(false), + end : prev() + })); + } + next(); + return new AST_Object({ properties: a }); + }); + + function as_property_name() { + var tmp = S.token; + next(); + switch (tmp.type) { + case "num": + case "string": + case "name": + case "operator": + case "keyword": + case "atom": + return tmp.value; + default: + unexpected(); + } + }; + + function as_name() { + var tmp = S.token; + next(); + switch (tmp.type) { + case "name": + case "operator": + case "keyword": + case "atom": + return tmp.value; + default: + unexpected(); + } + }; + + function as_symbol(type, noerror) { + if (!is("name")) { + if (!noerror) croak("Name expected"); + return null; + } + var name = S.token.value; + var sym = new (name == "this" ? AST_This : type)({ + name : String(S.token.value), + start : S.token, + end : S.token + }); + next(); + return sym; + }; + + var subscripts = function(expr, allow_calls) { + var start = expr.start; + if (is("punc", ".")) { + next(); + return subscripts(new AST_Dot({ + start : start, + expression : expr, + property : as_name(), + end : prev() + }), allow_calls); + } + if (is("punc", "[")) { + next(); + var prop = expression(true); + expect("]"); + return subscripts(new AST_Sub({ + start : start, + expression : expr, + property : prop, + end : prev() + }), allow_calls); + } + if (allow_calls && is("punc", "(")) { + next(); + return subscripts(new AST_Call({ + start : start, + expression : expr, + args : expr_list(")"), + end : prev() + }), true); + } + return expr; + }; + + var maybe_unary = function(allow_calls) { + var start = S.token; + if (is("operator") && UNARY_PREFIX(start.value)) { + next(); + var ex = make_unary(AST_UnaryPrefix, start.value, maybe_unary(allow_calls)); + ex.start = start; + ex.end = prev(); + return ex; + } + var val = expr_atom(allow_calls); + while (is("operator") && UNARY_POSTFIX(S.token.value) && !S.token.nlb) { + val = make_unary(AST_UnaryPostfix, S.token.value, val); + val.start = start; + val.end = S.token; + next(); + } + return val; + }; + + function make_unary(ctor, op, expr) { + if ((op == "++" || op == "--") && !is_assignable(expr)) + croak("Invalid use of " + op + " operator"); + return new ctor({ operator: op, expression: expr }); + }; + + var expr_op = function(left, min_prec, no_in) { + var op = is("operator") ? S.token.value : null; + if (op == "in" && no_in) op = null; + var prec = op != null ? PRECEDENCE[op] : null; + if (prec != null && prec > min_prec) { + next(); + var right = expr_op(maybe_unary(true), prec, no_in); + return expr_op(new AST_Binary({ + start : left.start, + left : left, + operator : op, + right : right, + end : right.end + }), min_prec, no_in); + } + return left; + }; + + function expr_ops(no_in) { + return expr_op(maybe_unary(true), 0, no_in); + }; + + var maybe_conditional = function(no_in) { + var start = S.token; + var expr = expr_ops(no_in); + if (is("operator", "?")) { + next(); + var yes = expression(false); + expect(":"); + return new AST_Conditional({ + start : start, + condition : expr, + consequent : yes, + alternative : expression(false, no_in), + end : peek() + }); + } + return expr; + }; + + function is_assignable(expr) { + if (!options.strict) return true; + switch (expr[0]+"") { + case "dot": + case "sub": + case "new": + case "call": + return true; + case "name": + return expr[1] != "this"; + } + }; + + var maybe_assign = function(no_in) { + var start = S.token; + var left = maybe_conditional(no_in), val = S.token.value; + if (is("operator") && ASSIGNMENT(val)) { + if (is_assignable(left)) { + next(); + return new AST_Assign({ + start : start, + left : left, + operator : val, + right : maybe_assign(no_in), + end : prev() + }); + } + croak("Invalid assignment"); + } + return left; + }; + + var expression = function(commas, no_in) { + var start = S.token; + var expr = maybe_assign(no_in); + if (commas && is("punc", ",")) { + next(); + return new AST_Seq({ + start : start, + car : expr, + cdr : expression(true, no_in), + end : peek() + }); + } + return expr; + }; + + function in_loop(cont) { + ++S.in_loop; + var ret = cont(); + --S.in_loop; + return ret; + }; + + return (function(){ + var start = S.token; + var body = []; + while (!is("eof")) + body.push(statement()); + var end = prev(); + var toplevel = options.toplevel; + if (toplevel) { + toplevel.body = toplevel.body.concat(body); + toplevel.end = end; + } else { + toplevel = new AST_Toplevel({ start: start, body: body, end: end }); + } + return toplevel; + })(); + +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js new file mode 100644 index 0000000..f23f6eb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js @@ -0,0 +1,580 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +function SymbolDef(scope, index, orig) { + this.name = orig.name; + this.orig = [ orig ]; + this.scope = scope; + this.references = []; + this.global = false; + this.mangled_name = null; + this.undeclared = false; + this.constant = false; + this.index = index; +}; + +SymbolDef.prototype = { + unmangleable: function(options) { + return this.global + || this.undeclared + || (!(options && options.eval) && (this.scope.uses_eval || this.scope.uses_with)); + }, + mangle: function(options) { + if (!this.mangled_name && !this.unmangleable(options)) + this.mangled_name = this.scope.next_mangled(options); + } +}; + +AST_Toplevel.DEFMETHOD("figure_out_scope", function(){ + // This does what ast_add_scope did in UglifyJS v1. + // + // Part of it could be done at parse time, but it would complicate + // the parser (and it's already kinda complex). It's also worth + // having it separated because we might need to call it multiple + // times on the same tree. + + // pass 1: setup scope chaining and handle definitions + var self = this; + var scope = self.parent_scope = null; + var labels = new Dictionary(); + var nesting = 0; + var tw = new TreeWalker(function(node, descend){ + if (node instanceof AST_Scope) { + node.init_scope_vars(nesting); + var save_scope = node.parent_scope = scope; + var save_labels = labels; + ++nesting; + scope = node; + labels = new Dictionary(); + descend(); + labels = save_labels; + scope = save_scope; + --nesting; + return true; // don't descend again in TreeWalker + } + if (node instanceof AST_Directive) { + node.scope = scope; + push_uniq(scope.directives, node.value); + return true; + } + if (node instanceof AST_With) { + for (var s = scope; s; s = s.parent_scope) + s.uses_with = true; + return; + } + if (node instanceof AST_LabeledStatement) { + var l = node.label; + if (labels.has(l.name)) + throw new Error(string_template("Label {name} defined twice", l)); + labels.set(l.name, l); + descend(); + labels.del(l.name); + return true; // no descend again + } + if (node instanceof AST_Symbol) { + node.scope = scope; + } + if (node instanceof AST_Label) { + node.thedef = node; + node.init_scope_vars(); + } + if (node instanceof AST_SymbolLambda) { + //scope.def_function(node); + // + // https://github.com/mishoo/UglifyJS2/issues/24 — MSIE + // leaks function expression names into the containing + // scope. Don't like this fix but seems we can't do any + // better. IE: please die. Please! + (node.scope = scope.parent_scope).def_function(node); + } + else if (node instanceof AST_SymbolDefun) { + // Careful here, the scope where this should be defined is + // the parent scope. The reason is that we enter a new + // scope when we encounter the AST_Defun node (which is + // instanceof AST_Scope) but we get to the symbol a bit + // later. + (node.scope = scope.parent_scope).def_function(node); + } + else if (node instanceof AST_SymbolVar + || node instanceof AST_SymbolConst) { + var def = scope.def_variable(node); + def.constant = node instanceof AST_SymbolConst; + def.init = tw.parent().value; + } + else if (node instanceof AST_SymbolCatch) { + // XXX: this is wrong according to ECMA-262 (12.4). the + // `catch` argument name should be visible only inside the + // catch block. For a quick fix AST_Catch should inherit + // from AST_Scope. Keeping it this way because of IE, + // which doesn't obey the standard. (it introduces the + // identifier in the enclosing scope) + scope.def_variable(node); + } + if (node instanceof AST_LabelRef) { + var sym = labels.get(node.name); + if (!sym) throw new Error(string_template("Undefined label {name} [{line},{col}]", { + name: node.name, + line: node.start.line, + col: node.start.col + })); + node.thedef = sym; + } + }); + self.walk(tw); + + // pass 2: find back references and eval + var func = null; + var globals = self.globals = new Dictionary(); + var tw = new TreeWalker(function(node, descend){ + if (node instanceof AST_Lambda) { + var prev_func = func; + func = node; + descend(); + func = prev_func; + return true; + } + if (node instanceof AST_LabelRef) { + node.reference(); + return true; + } + if (node instanceof AST_SymbolRef) { + var name = node.name; + var sym = node.scope.find_variable(name); + if (!sym) { + var g; + if (globals.has(name)) { + g = globals.get(name); + } else { + g = new SymbolDef(self, globals.size(), node); + g.undeclared = true; + globals.set(name, g); + } + node.thedef = g; + if (name == "eval" && tw.parent() instanceof AST_Call) { + for (var s = node.scope; s && !s.uses_eval; s = s.parent_scope) + s.uses_eval = true; + } + if (name == "arguments") { + func.uses_arguments = true; + } + } else { + node.thedef = sym; + } + node.reference(); + return true; + } + }); + self.walk(tw); +}); + +AST_Scope.DEFMETHOD("init_scope_vars", function(nesting){ + this.directives = []; // contains the directives defined in this scope, i.e. "use strict" + this.variables = new Dictionary(); // map name to AST_SymbolVar (variables defined in this scope; includes functions) + this.functions = new Dictionary(); // map name to AST_SymbolDefun (functions defined in this scope) + this.uses_with = false; // will be set to true if this or some nested scope uses the `with` statement + this.uses_eval = false; // will be set to true if this or nested scope uses the global `eval` + this.parent_scope = null; // the parent scope + this.enclosed = []; // a list of variables from this or outer scope(s) that are referenced from this or inner scopes + this.cname = -1; // the current index for mangling functions/variables + this.nesting = nesting; // the nesting level of this scope (0 means toplevel) +}); + +AST_Scope.DEFMETHOD("strict", function(){ + return this.has_directive("use strict"); +}); + +AST_Lambda.DEFMETHOD("init_scope_vars", function(){ + AST_Scope.prototype.init_scope_vars.apply(this, arguments); + this.uses_arguments = false; +}); + +AST_SymbolRef.DEFMETHOD("reference", function() { + var def = this.definition(); + def.references.push(this); + var s = this.scope; + while (s) { + push_uniq(s.enclosed, def); + if (s === def.scope) break; + s = s.parent_scope; + } + this.frame = this.scope.nesting - def.scope.nesting; +}); + +AST_Label.DEFMETHOD("init_scope_vars", function(){ + this.references = []; +}); + +AST_LabelRef.DEFMETHOD("reference", function(){ + this.thedef.references.push(this); +}); + +AST_Scope.DEFMETHOD("find_variable", function(name){ + if (name instanceof AST_Symbol) name = name.name; + return this.variables.get(name) + || (this.parent_scope && this.parent_scope.find_variable(name)); +}); + +AST_Scope.DEFMETHOD("has_directive", function(value){ + return this.parent_scope && this.parent_scope.has_directive(value) + || (this.directives.indexOf(value) >= 0 ? this : null); +}); + +AST_Scope.DEFMETHOD("def_function", function(symbol){ + this.functions.set(symbol.name, this.def_variable(symbol)); +}); + +AST_Scope.DEFMETHOD("def_variable", function(symbol){ + var def; + if (!this.variables.has(symbol.name)) { + def = new SymbolDef(this, this.variables.size(), symbol); + this.variables.set(symbol.name, def); + def.global = !this.parent_scope; + } else { + def = this.variables.get(symbol.name); + def.orig.push(symbol); + } + return symbol.thedef = def; +}); + +AST_Scope.DEFMETHOD("next_mangled", function(options){ + var ext = this.enclosed, n = ext.length; + out: while (true) { + var m = base54(++this.cname); + if (!is_identifier(m)) continue; // skip over "do" + // we must ensure that the mangled name does not shadow a name + // from some parent scope that is referenced in this or in + // inner scopes. + for (var i = n; --i >= 0;) { + var sym = ext[i]; + var name = sym.mangled_name || (sym.unmangleable(options) && sym.name); + if (m == name) continue out; + } + return m; + } +}); + +AST_Scope.DEFMETHOD("references", function(sym){ + if (sym instanceof AST_Symbol) sym = sym.definition(); + return this.enclosed.indexOf(sym) < 0 ? null : sym; +}); + +AST_Symbol.DEFMETHOD("unmangleable", function(options){ + return this.definition().unmangleable(options); +}); + +// property accessors are not mangleable +AST_SymbolAccessor.DEFMETHOD("unmangleable", function(){ + return true; +}); + +// labels are always mangleable +AST_Label.DEFMETHOD("unmangleable", function(){ + return false; +}); + +AST_Symbol.DEFMETHOD("unreferenced", function(){ + return this.definition().references.length == 0 + && !(this.scope.uses_eval || this.scope.uses_with); +}); + +AST_Symbol.DEFMETHOD("undeclared", function(){ + return this.definition().undeclared; +}); + +AST_LabelRef.DEFMETHOD("undeclared", function(){ + return false; +}); + +AST_Label.DEFMETHOD("undeclared", function(){ + return false; +}); + +AST_Symbol.DEFMETHOD("definition", function(){ + return this.thedef; +}); + +AST_Symbol.DEFMETHOD("global", function(){ + return this.definition().global; +}); + +AST_Toplevel.DEFMETHOD("_default_mangler_options", function(options){ + return defaults(options, { + except : [], + eval : false, + sort : false + }); +}); + +AST_Toplevel.DEFMETHOD("mangle_names", function(options){ + options = this._default_mangler_options(options); + // We only need to mangle declaration nodes. Special logic wired + // into the code generator will display the mangled name if it's + // present (and for AST_SymbolRef-s it'll use the mangled name of + // the AST_SymbolDeclaration that it points to). + var lname = -1; + var to_mangle = []; + var tw = new TreeWalker(function(node, descend){ + if (node instanceof AST_LabeledStatement) { + // lname is incremented when we get to the AST_Label + var save_nesting = lname; + descend(); + lname = save_nesting; + return true; // don't descend again in TreeWalker + } + if (node instanceof AST_Scope) { + var p = tw.parent(), a = []; + node.variables.each(function(symbol){ + if (options.except.indexOf(symbol.name) < 0) { + a.push(symbol); + } + }); + if (options.sort) a.sort(function(a, b){ + return b.references.length - a.references.length; + }); + to_mangle.push.apply(to_mangle, a); + return; + } + if (node instanceof AST_Label) { + var name; + do name = base54(++lname); while (!is_identifier(name)); + node.mangled_name = name; + return true; + } + }); + this.walk(tw); + to_mangle.forEach(function(def){ def.mangle(options) }); +}); + +AST_Toplevel.DEFMETHOD("compute_char_frequency", function(options){ + options = this._default_mangler_options(options); + var tw = new TreeWalker(function(node){ + if (node instanceof AST_Constant) + base54.consider(node.print_to_string()); + else if (node instanceof AST_Return) + base54.consider("return"); + else if (node instanceof AST_Throw) + base54.consider("throw"); + else if (node instanceof AST_Continue) + base54.consider("continue"); + else if (node instanceof AST_Break) + base54.consider("break"); + else if (node instanceof AST_Debugger) + base54.consider("debugger"); + else if (node instanceof AST_Directive) + base54.consider(node.value); + else if (node instanceof AST_While) + base54.consider("while"); + else if (node instanceof AST_Do) + base54.consider("do while"); + else if (node instanceof AST_If) { + base54.consider("if"); + if (node.alternative) base54.consider("else"); + } + else if (node instanceof AST_Var) + base54.consider("var"); + else if (node instanceof AST_Const) + base54.consider("const"); + else if (node instanceof AST_Lambda) + base54.consider("function"); + else if (node instanceof AST_For) + base54.consider("for"); + else if (node instanceof AST_ForIn) + base54.consider("for in"); + else if (node instanceof AST_Switch) + base54.consider("switch"); + else if (node instanceof AST_Case) + base54.consider("case"); + else if (node instanceof AST_Default) + base54.consider("default"); + else if (node instanceof AST_With) + base54.consider("with"); + else if (node instanceof AST_ObjectSetter) + base54.consider("set" + node.key); + else if (node instanceof AST_ObjectGetter) + base54.consider("get" + node.key); + else if (node instanceof AST_ObjectKeyVal) + base54.consider(node.key); + else if (node instanceof AST_New) + base54.consider("new"); + else if (node instanceof AST_This) + base54.consider("this"); + else if (node instanceof AST_Try) + base54.consider("try"); + else if (node instanceof AST_Catch) + base54.consider("catch"); + else if (node instanceof AST_Finally) + base54.consider("finally"); + else if (node instanceof AST_Symbol && node.unmangleable(options)) + base54.consider(node.name); + else if (node instanceof AST_Unary || node instanceof AST_Binary) + base54.consider(node.operator); + else if (node instanceof AST_Dot) + base54.consider(node.property); + }); + this.walk(tw); + base54.sort(); +}); + +var base54 = (function() { + var string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789"; + var chars, frequency; + function reset() { + frequency = Object.create(null); + chars = string.split("").map(function(ch){ return ch.charCodeAt(0) }); + chars.forEach(function(ch){ frequency[ch] = 0 }); + } + base54.consider = function(str){ + for (var i = str.length; --i >= 0;) { + var code = str.charCodeAt(i); + if (code in frequency) ++frequency[code]; + } + }; + base54.sort = function() { + chars = mergeSort(chars, function(a, b){ + if (is_digit(a) && !is_digit(b)) return 1; + if (is_digit(b) && !is_digit(a)) return -1; + return frequency[b] - frequency[a]; + }); + }; + base54.reset = reset; + reset(); + base54.get = function(){ return chars }; + base54.freq = function(){ return frequency }; + function base54(num) { + var ret = "", base = 54; + do { + ret += String.fromCharCode(chars[num % base]); + num = Math.floor(num / base); + base = 64; + } while (num > 0); + return ret; + }; + return base54; +})(); + +AST_Toplevel.DEFMETHOD("scope_warnings", function(options){ + options = defaults(options, { + undeclared : false, // this makes a lot of noise + unreferenced : true, + assign_to_global : true, + func_arguments : true, + nested_defuns : true, + eval : true + }); + var tw = new TreeWalker(function(node){ + if (options.undeclared + && node instanceof AST_SymbolRef + && node.undeclared()) + { + // XXX: this also warns about JS standard names, + // i.e. Object, Array, parseInt etc. Should add a list of + // exceptions. + AST_Node.warn("Undeclared symbol: {name} [{file}:{line},{col}]", { + name: node.name, + file: node.start.file, + line: node.start.line, + col: node.start.col + }); + } + if (options.assign_to_global) + { + var sym = null; + if (node instanceof AST_Assign && node.left instanceof AST_SymbolRef) + sym = node.left; + else if (node instanceof AST_ForIn && node.init instanceof AST_SymbolRef) + sym = node.init; + if (sym + && (sym.undeclared() + || (sym.global() && sym.scope !== sym.definition().scope))) { + AST_Node.warn("{msg}: {name} [{file}:{line},{col}]", { + msg: sym.undeclared() ? "Accidental global?" : "Assignment to global", + name: sym.name, + file: sym.start.file, + line: sym.start.line, + col: sym.start.col + }); + } + } + if (options.eval + && node instanceof AST_SymbolRef + && node.undeclared() + && node.name == "eval") { + AST_Node.warn("Eval is used [{file}:{line},{col}]", node.start); + } + if (options.unreferenced + && (node instanceof AST_SymbolDeclaration || node instanceof AST_Label) + && node.unreferenced()) { + AST_Node.warn("{type} {name} is declared but not referenced [{file}:{line},{col}]", { + type: node instanceof AST_Label ? "Label" : "Symbol", + name: node.name, + file: node.start.file, + line: node.start.line, + col: node.start.col + }); + } + if (options.func_arguments + && node instanceof AST_Lambda + && node.uses_arguments) { + AST_Node.warn("arguments used in function {name} [{file}:{line},{col}]", { + name: node.name ? node.name.name : "anonymous", + file: node.start.file, + line: node.start.line, + col: node.start.col + }); + } + if (options.nested_defuns + && node instanceof AST_Defun + && !(tw.parent() instanceof AST_Scope)) { + AST_Node.warn("Function {name} declared in nested statement \"{type}\" [{file}:{line},{col}]", { + name: node.name.name, + type: tw.parent().TYPE, + file: node.start.file, + line: node.start.line, + col: node.start.col + }); + } + }); + this.walk(tw); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js new file mode 100644 index 0000000..3429908 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js @@ -0,0 +1,81 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +// a small wrapper around fitzgen's source-map library +function SourceMap(options) { + options = defaults(options, { + file : null, + root : null, + orig : null, + }); + var generator = new MOZ_SourceMap.SourceMapGenerator({ + file : options.file, + sourceRoot : options.root + }); + var orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig); + function add(source, gen_line, gen_col, orig_line, orig_col, name) { + if (orig_map) { + var info = orig_map.originalPositionFor({ + line: orig_line, + column: orig_col + }); + source = info.source; + orig_line = info.line; + orig_col = info.column; + name = info.name; + } + generator.addMapping({ + generated : { line: gen_line, column: gen_col }, + original : { line: orig_line, column: orig_col }, + source : source, + name : name + }); + }; + return { + add : add, + get : function() { return generator }, + toString : function() { return generator.toString() } + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js new file mode 100644 index 0000000..8b4fd9f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js @@ -0,0 +1,218 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +// Tree transformer helpers. +// XXX: eventually I should refactor the compressor to use this infrastructure. + +function TreeTransformer(before, after) { + TreeWalker.call(this); + this.before = before; + this.after = after; +} +TreeTransformer.prototype = new TreeWalker; + +(function(undefined){ + + function _(node, descend) { + node.DEFMETHOD("transform", function(tw, in_list){ + var x, y; + tw.push(this); + if (tw.before) x = tw.before(this, descend, in_list); + if (x === undefined) { + if (!tw.after) { + x = this; + descend(x, tw); + } else { + tw.stack[tw.stack.length - 1] = x = this.clone(); + descend(x, tw); + y = tw.after(x, in_list); + if (y !== undefined) x = y; + } + } + tw.pop(); + return x; + }); + }; + + function do_list(list, tw) { + return MAP(list, function(node){ + return node.transform(tw, true); + }); + }; + + _(AST_Node, noop); + + _(AST_LabeledStatement, function(self, tw){ + self.label = self.label.transform(tw); + self.body = self.body.transform(tw); + }); + + _(AST_SimpleStatement, function(self, tw){ + self.body = self.body.transform(tw); + }); + + _(AST_Block, function(self, tw){ + self.body = do_list(self.body, tw); + }); + + _(AST_DWLoop, function(self, tw){ + self.condition = self.condition.transform(tw); + self.body = self.body.transform(tw); + }); + + _(AST_For, function(self, tw){ + if (self.init) self.init = self.init.transform(tw); + if (self.condition) self.condition = self.condition.transform(tw); + if (self.step) self.step = self.step.transform(tw); + self.body = self.body.transform(tw); + }); + + _(AST_ForIn, function(self, tw){ + self.init = self.init.transform(tw); + self.object = self.object.transform(tw); + self.body = self.body.transform(tw); + }); + + _(AST_With, function(self, tw){ + self.expression = self.expression.transform(tw); + self.body = self.body.transform(tw); + }); + + _(AST_Exit, function(self, tw){ + if (self.value) self.value = self.value.transform(tw); + }); + + _(AST_LoopControl, function(self, tw){ + if (self.label) self.label = self.label.transform(tw); + }); + + _(AST_If, function(self, tw){ + self.condition = self.condition.transform(tw); + self.body = self.body.transform(tw); + if (self.alternative) self.alternative = self.alternative.transform(tw); + }); + + _(AST_Switch, function(self, tw){ + self.expression = self.expression.transform(tw); + self.body = do_list(self.body, tw); + }); + + _(AST_Case, function(self, tw){ + self.expression = self.expression.transform(tw); + self.body = do_list(self.body, tw); + }); + + _(AST_Try, function(self, tw){ + self.body = do_list(self.body, tw); + if (self.bcatch) self.bcatch = self.bcatch.transform(tw); + if (self.bfinally) self.bfinally = self.bfinally.transform(tw); + }); + + _(AST_Catch, function(self, tw){ + self.argname = self.argname.transform(tw); + self.body = do_list(self.body, tw); + }); + + _(AST_Definitions, function(self, tw){ + self.definitions = do_list(self.definitions, tw); + }); + + _(AST_VarDef, function(self, tw){ + if (self.value) self.value = self.value.transform(tw); + }); + + _(AST_Lambda, function(self, tw){ + if (self.name) self.name = self.name.transform(tw); + self.argnames = do_list(self.argnames, tw); + self.body = do_list(self.body, tw); + }); + + _(AST_Call, function(self, tw){ + self.expression = self.expression.transform(tw); + self.args = do_list(self.args, tw); + }); + + _(AST_Seq, function(self, tw){ + self.car = self.car.transform(tw); + self.cdr = self.cdr.transform(tw); + }); + + _(AST_Dot, function(self, tw){ + self.expression = self.expression.transform(tw); + }); + + _(AST_Sub, function(self, tw){ + self.expression = self.expression.transform(tw); + self.property = self.property.transform(tw); + }); + + _(AST_Unary, function(self, tw){ + self.expression = self.expression.transform(tw); + }); + + _(AST_Binary, function(self, tw){ + self.left = self.left.transform(tw); + self.right = self.right.transform(tw); + }); + + _(AST_Conditional, function(self, tw){ + self.condition = self.condition.transform(tw); + self.consequent = self.consequent.transform(tw); + self.alternative = self.alternative.transform(tw); + }); + + _(AST_Array, function(self, tw){ + self.elements = do_list(self.elements, tw); + }); + + _(AST_Object, function(self, tw){ + self.properties = do_list(self.properties, tw); + }); + + _(AST_ObjectProperty, function(self, tw){ + self.value = self.value.transform(tw); + }); + +})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js new file mode 100644 index 0000000..c95b982 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js @@ -0,0 +1,288 @@ +/*********************************************************************** + + A JavaScript tokenizer / parser / beautifier / compressor. + https://github.com/mishoo/UglifyJS2 + + -------------------------------- (C) --------------------------------- + + Author: Mihai Bazon + + http://mihai.bazon.net/blog + + Distributed under the BSD license: + + Copyright 2012 (c) Mihai Bazon + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above + copyright notice, this list of conditions and the following + disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + + ***********************************************************************/ + +"use strict"; + +function array_to_hash(a) { + var ret = Object.create(null); + for (var i = 0; i < a.length; ++i) + ret[a[i]] = true; + return ret; +}; + +function slice(a, start) { + return Array.prototype.slice.call(a, start || 0); +}; + +function characters(str) { + return str.split(""); +}; + +function member(name, array) { + for (var i = array.length; --i >= 0;) + if (array[i] == name) + return true; + return false; +}; + +function find_if(func, array) { + for (var i = 0, n = array.length; i < n; ++i) { + if (func(array[i])) + return array[i]; + } +}; + +function repeat_string(str, i) { + if (i <= 0) return ""; + if (i == 1) return str; + var d = repeat_string(str, i >> 1); + d += d; + if (i & 1) d += str; + return d; +}; + +function DefaultsError(msg, defs) { + this.msg = msg; + this.defs = defs; +}; + +function defaults(args, defs, croak) { + if (args === true) + args = {}; + var ret = args || {}; + if (croak) for (var i in ret) if (ret.hasOwnProperty(i) && !defs.hasOwnProperty(i)) + throw new DefaultsError("`" + i + "` is not a supported option", defs); + for (var i in defs) if (defs.hasOwnProperty(i)) { + ret[i] = (args && args.hasOwnProperty(i)) ? args[i] : defs[i]; + } + return ret; +}; + +function merge(obj, ext) { + for (var i in ext) if (ext.hasOwnProperty(i)) { + obj[i] = ext[i]; + } + return obj; +}; + +function noop() {}; + +var MAP = (function(){ + function MAP(a, f, backwards) { + var ret = [], top = [], i; + function doit() { + var val = f(a[i], i); + var is_last = val instanceof Last; + if (is_last) val = val.v; + if (val instanceof AtTop) { + val = val.v; + if (val instanceof Splice) { + top.push.apply(top, backwards ? val.v.slice().reverse() : val.v); + } else { + top.push(val); + } + } + else if (val !== skip) { + if (val instanceof Splice) { + ret.push.apply(ret, backwards ? val.v.slice().reverse() : val.v); + } else { + ret.push(val); + } + } + return is_last; + }; + if (a instanceof Array) { + if (backwards) { + for (i = a.length; --i >= 0;) if (doit()) break; + ret.reverse(); + top.reverse(); + } else { + for (i = 0; i < a.length; ++i) if (doit()) break; + } + } + else { + for (i in a) if (a.hasOwnProperty(i)) if (doit()) break; + } + return top.concat(ret); + }; + MAP.at_top = function(val) { return new AtTop(val) }; + MAP.splice = function(val) { return new Splice(val) }; + MAP.last = function(val) { return new Last(val) }; + var skip = MAP.skip = {}; + function AtTop(val) { this.v = val }; + function Splice(val) { this.v = val }; + function Last(val) { this.v = val }; + return MAP; +})(); + +function push_uniq(array, el) { + if (array.indexOf(el) < 0) + array.push(el); +}; + +function string_template(text, props) { + return text.replace(/\{(.+?)\}/g, function(str, p){ + return props[p]; + }); +}; + +function remove(array, el) { + for (var i = array.length; --i >= 0;) { + if (array[i] === el) array.splice(i, 1); + } +}; + +function mergeSort(array, cmp) { + if (array.length < 2) return array.slice(); + function merge(a, b) { + var r = [], ai = 0, bi = 0, i = 0; + while (ai < a.length && bi < b.length) { + cmp(a[ai], b[bi]) <= 0 + ? r[i++] = a[ai++] + : r[i++] = b[bi++]; + } + if (ai < a.length) r.push.apply(r, a.slice(ai)); + if (bi < b.length) r.push.apply(r, b.slice(bi)); + return r; + }; + function _ms(a) { + if (a.length <= 1) + return a; + var m = Math.floor(a.length / 2), left = a.slice(0, m), right = a.slice(m); + left = _ms(left); + right = _ms(right); + return merge(left, right); + }; + return _ms(array); +}; + +function set_difference(a, b) { + return a.filter(function(el){ + return b.indexOf(el) < 0; + }); +}; + +function set_intersection(a, b) { + return a.filter(function(el){ + return b.indexOf(el) >= 0; + }); +}; + +// this function is taken from Acorn [1], written by Marijn Haverbeke +// [1] https://github.com/marijnh/acorn +function makePredicate(words) { + if (!(words instanceof Array)) words = words.split(" "); + var f = "", cats = []; + out: for (var i = 0; i < words.length; ++i) { + for (var j = 0; j < cats.length; ++j) + if (cats[j][0].length == words[i].length) { + cats[j].push(words[i]); + continue out; + } + cats.push([words[i]]); + } + function compareTo(arr) { + if (arr.length == 1) return f += "return str === " + JSON.stringify(arr[0]) + ";"; + f += "switch(str){"; + for (var i = 0; i < arr.length; ++i) f += "case " + JSON.stringify(arr[i]) + ":"; + f += "return true}return false;"; + } + // When there are more than three length categories, an outer + // switch first dispatches on the lengths, to save on comparisons. + if (cats.length > 3) { + cats.sort(function(a, b) {return b.length - a.length;}); + f += "switch(str.length){"; + for (var i = 0; i < cats.length; ++i) { + var cat = cats[i]; + f += "case " + cat[0].length + ":"; + compareTo(cat); + } + f += "}"; + // Otherwise, simply generate a flat `switch` statement. + } else { + compareTo(words); + } + return new Function("str", f); +}; + +function Dictionary() { + this._values = Object.create(null); + this._size = 0; +}; +Dictionary.prototype = { + set: function(key, val) { + if (!this.has(key)) ++this._size; + this._values["$" + key] = val; + return this; + }, + add: function(key, val) { + if (this.has(key)) { + this.get(key).push(val); + } else { + this.set(key, [ val ]); + } + return this; + }, + get: function(key) { return this._values["$" + key] }, + del: function(key) { + if (this.has(key)) { + --this._size; + delete this._values["$" + key]; + } + return this; + }, + has: function(key) { return ("$" + key) in this._values }, + each: function(f) { + for (var i in this._values) + f(this._values[i], i.substr(1)); + }, + size: function() { + return this._size; + }, + map: function(f) { + var ret = []; + for (var i in this._values) + ret.push(f(this._values[i], i.substr(1))); + return ret; + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js new file mode 100644 index 0000000..a998fb7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node +var util = require('util'); +var argv = require('optimist').argv; + +if (argv.s) { + util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); +} +console.log( + (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') +); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js new file mode 100644 index 0000000..a35a7e6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +var argv = require('optimist') + .boolean(['x','y','z']) + .argv +; +console.dir([ argv.x, argv.y, argv.z ]); +console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js new file mode 100644 index 0000000..017bb68 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +var argv = require('optimist') + .boolean('v') + .argv +; +console.dir(argv.v); +console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js new file mode 100644 index 0000000..ade7768 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js @@ -0,0 +1,8 @@ +#!/usr/bin/env node + +var argv = require('optimist') + .default({ x : 10, y : 10 }) + .argv +; + +console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js new file mode 100644 index 0000000..d9b1ff4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +var argv = require('optimist') + .default('x', 10) + .default('y', 10) + .argv +; +console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js new file mode 100644 index 0000000..5e2ee82 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js @@ -0,0 +1,8 @@ +#!/usr/bin/env node + +var argv = require('optimist') + .usage('Usage: $0 -x [num] -y [num]') + .demand(['x','y']) + .argv; + +console.log(argv.x / argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js new file mode 100644 index 0000000..b5f95bf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .demand('f') + .alias('f', 'file') + .describe('f', 'Load a file') + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js new file mode 100644 index 0000000..d9ac709 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js @@ -0,0 +1,29 @@ +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .options({ + file : { + demand : true, + alias : 'f', + description : 'Load a file' + }, + base : { + alias : 'b', + description : 'Numeric base to use for output', + default : 10, + }, + }) + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines.toString(argv.base)); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js new file mode 100644 index 0000000..4267511 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js @@ -0,0 +1,29 @@ +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .wrap(80) + .demand('f') + .alias('f', [ 'file', 'filename' ]) + .describe('f', + "Load a file. It's pretty important." + + " Required even. So you'd better specify it." + ) + .alias('b', 'base') + .describe('b', 'Numeric base to display the number of lines in') + .default('b', 10) + .describe('x', 'Super-secret optional parameter which is secret') + .default('x', '') + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines.toString(argv.base)); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js new file mode 100644 index 0000000..ee633ee --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js @@ -0,0 +1,4 @@ +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); +console.log(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js new file mode 100644 index 0000000..816b3e1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +console.dir(require('optimist').argv); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js new file mode 100644 index 0000000..1db0ad0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js new file mode 100644 index 0000000..a8e5aeb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js @@ -0,0 +1,11 @@ +#!/usr/bin/env node +var argv = require('optimist') + .string('x', 'y') + .argv +; +console.dir([ argv.x, argv.y ]); + +/* Turns off numeric coercion: + ./node string.js -x 000123 -y 9876 + [ '000123', '9876' ] +*/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js new file mode 100644 index 0000000..b999977 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js @@ -0,0 +1,19 @@ +var optimist = require('./../index'); + +var argv = optimist.usage('This is my awesome program', { + 'about': { + description: 'Provide some details about the author of this program', + required: true, + short: 'a', + }, + 'info': { + description: 'Provide some information about the node.js agains!!!!!!', + boolean: true, + short: 'i' + } +}).argv; + +optimist.showHelp(); + +console.log('\n\nInspecting options'); +console.dir(argv); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js new file mode 100644 index 0000000..8f6ecd2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js @@ -0,0 +1,10 @@ +#!/usr/bin/env node +var argv = require('optimist').argv; + +if (argv.rif - 5 * argv.xup > 7.138) { + console.log('Buy more riffiwobbles'); +} +else { + console.log('Sell the xupptumblers'); +} + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js new file mode 100644 index 0000000..8ac67eb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js @@ -0,0 +1,478 @@ +var path = require('path'); +var wordwrap = require('wordwrap'); + +/* Hack an instance of Argv with process.argv into Argv + so people can do + require('optimist')(['--beeble=1','-z','zizzle']).argv + to parse a list of args and + require('optimist').argv + to get a parsed version of process.argv. +*/ + +var inst = Argv(process.argv.slice(2)); +Object.keys(inst).forEach(function (key) { + Argv[key] = typeof inst[key] == 'function' + ? inst[key].bind(inst) + : inst[key]; +}); + +var exports = module.exports = Argv; +function Argv (args, cwd) { + var self = {}; + if (!cwd) cwd = process.cwd(); + + self.$0 = process.argv + .slice(0,2) + .map(function (x) { + var b = rebase(cwd, x); + return x.match(/^\//) && b.length < x.length + ? b : x + }) + .join(' ') + ; + + if (process.env._ != undefined && process.argv[1] == process.env._) { + self.$0 = process.env._.replace( + path.dirname(process.execPath) + '/', '' + ); + } + + var flags = { bools : {}, strings : {} }; + + self.boolean = function (bools) { + if (!Array.isArray(bools)) { + bools = [].slice.call(arguments); + } + + bools.forEach(function (name) { + flags.bools[name] = true; + }); + + return self; + }; + + self.string = function (strings) { + if (!Array.isArray(strings)) { + strings = [].slice.call(arguments); + } + + strings.forEach(function (name) { + flags.strings[name] = true; + }); + + return self; + }; + + var aliases = {}; + self.alias = function (x, y) { + if (typeof x === 'object') { + Object.keys(x).forEach(function (key) { + self.alias(key, x[key]); + }); + } + else if (Array.isArray(y)) { + y.forEach(function (yy) { + self.alias(x, yy); + }); + } + else { + var zs = (aliases[x] || []).concat(aliases[y] || []).concat(x, y); + aliases[x] = zs.filter(function (z) { return z != x }); + aliases[y] = zs.filter(function (z) { return z != y }); + } + + return self; + }; + + var demanded = {}; + self.demand = function (keys) { + if (typeof keys == 'number') { + if (!demanded._) demanded._ = 0; + demanded._ += keys; + } + else if (Array.isArray(keys)) { + keys.forEach(function (key) { + self.demand(key); + }); + } + else { + demanded[keys] = true; + } + + return self; + }; + + var usage; + self.usage = function (msg, opts) { + if (!opts && typeof msg === 'object') { + opts = msg; + msg = null; + } + + usage = msg; + + if (opts) self.options(opts); + + return self; + }; + + function fail (msg) { + self.showHelp(); + if (msg) console.error(msg); + process.exit(1); + } + + var checks = []; + self.check = function (f) { + checks.push(f); + return self; + }; + + var defaults = {}; + self.default = function (key, value) { + if (typeof key === 'object') { + Object.keys(key).forEach(function (k) { + self.default(k, key[k]); + }); + } + else { + defaults[key] = value; + } + + return self; + }; + + var descriptions = {}; + self.describe = function (key, desc) { + if (typeof key === 'object') { + Object.keys(key).forEach(function (k) { + self.describe(k, key[k]); + }); + } + else { + descriptions[key] = desc; + } + return self; + }; + + self.parse = function (args) { + return Argv(args).argv; + }; + + self.option = self.options = function (key, opt) { + if (typeof key === 'object') { + Object.keys(key).forEach(function (k) { + self.options(k, key[k]); + }); + } + else { + if (opt.alias) self.alias(key, opt.alias); + if (opt.demand) self.demand(key); + if (typeof opt.default !== 'undefined') { + self.default(key, opt.default); + } + + if (opt.boolean || opt.type === 'boolean') { + self.boolean(key); + } + if (opt.string || opt.type === 'string') { + self.string(key); + } + + var desc = opt.describe || opt.description || opt.desc; + if (desc) { + self.describe(key, desc); + } + } + + return self; + }; + + var wrap = null; + self.wrap = function (cols) { + wrap = cols; + return self; + }; + + self.showHelp = function (fn) { + if (!fn) fn = console.error; + fn(self.help()); + }; + + self.help = function () { + var keys = Object.keys( + Object.keys(descriptions) + .concat(Object.keys(demanded)) + .concat(Object.keys(defaults)) + .reduce(function (acc, key) { + if (key !== '_') acc[key] = true; + return acc; + }, {}) + ); + + var help = keys.length ? [ 'Options:' ] : []; + + if (usage) { + help.unshift(usage.replace(/\$0/g, self.$0), ''); + } + + var switches = keys.reduce(function (acc, key) { + acc[key] = [ key ].concat(aliases[key] || []) + .map(function (sw) { + return (sw.length > 1 ? '--' : '-') + sw + }) + .join(', ') + ; + return acc; + }, {}); + + var switchlen = longest(Object.keys(switches).map(function (s) { + return switches[s] || ''; + })); + + var desclen = longest(Object.keys(descriptions).map(function (d) { + return descriptions[d] || ''; + })); + + keys.forEach(function (key) { + var kswitch = switches[key]; + var desc = descriptions[key] || ''; + + if (wrap) { + desc = wordwrap(switchlen + 4, wrap)(desc) + .slice(switchlen + 4) + ; + } + + var spadding = new Array( + Math.max(switchlen - kswitch.length + 3, 0) + ).join(' '); + + var dpadding = new Array( + Math.max(desclen - desc.length + 1, 0) + ).join(' '); + + var type = null; + + if (flags.bools[key]) type = '[boolean]'; + if (flags.strings[key]) type = '[string]'; + + if (!wrap && dpadding.length > 0) { + desc += dpadding; + } + + var prelude = ' ' + kswitch + spadding; + var extra = [ + type, + demanded[key] + ? '[required]' + : null + , + defaults[key] !== undefined + ? '[default: ' + JSON.stringify(defaults[key]) + ']' + : null + , + ].filter(Boolean).join(' '); + + var body = [ desc, extra ].filter(Boolean).join(' '); + + if (wrap) { + var dlines = desc.split('\n'); + var dlen = dlines.slice(-1)[0].length + + (dlines.length === 1 ? prelude.length : 0) + + body = desc + (dlen + extra.length > wrap - 2 + ? '\n' + + new Array(wrap - extra.length + 1).join(' ') + + extra + : new Array(wrap - extra.length - dlen + 1).join(' ') + + extra + ); + } + + help.push(prelude + body); + }); + + help.push(''); + return help.join('\n'); + }; + + Object.defineProperty(self, 'argv', { + get : parseArgs, + enumerable : true, + }); + + function parseArgs () { + var argv = { _ : [], $0 : self.$0 }; + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] || false); + }); + + function setArg (key, val) { + var num = Number(val); + var value = typeof val !== 'string' || isNaN(num) ? val : num; + if (flags.strings[key]) value = val; + + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + argv[x] = argv[key]; + }); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if (arg === '--') { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + else if (arg.match(/^--.+=/)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + setArg(m[1], m[2]); + } + else if (arg.match(/^--no-.+/)) { + var key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false); + } + else if (arg.match(/^--.+/)) { + var key = arg.match(/^--(.+)/)[1]; + var next = args[i + 1]; + if (next !== undefined && !next.match(/^-/) + && !flags.bools[key] + && (aliases[key] ? !flags.bools[aliases[key]] : true)) { + setArg(key, next); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next === 'true'); + i++; + } + else { + setArg(key, true); + } + } + else if (arg.match(/^-[^-]+/)) { + var letters = arg.slice(1,-1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + if (letters[j+1] && letters[j+1].match(/\W/)) { + setArg(letters[j], arg.slice(j+2)); + broken = true; + break; + } + else { + setArg(letters[j], true); + } + } + + if (!broken) { + var key = arg.slice(-1)[0]; + + if (args[i+1] && !args[i+1].match(/^-/) + && !flags.bools[key] + && (aliases[key] ? !flags.bools[aliases[key]] : true)) { + setArg(key, args[i+1]); + i++; + } + else if (args[i+1] && /true|false/.test(args[i+1])) { + setArg(key, args[i+1] === 'true'); + i++; + } + else { + setArg(key, true); + } + } + } + else { + var n = Number(arg); + argv._.push(flags.strings['_'] || isNaN(n) ? arg : n); + } + } + + Object.keys(defaults).forEach(function (key) { + if (!(key in argv)) { + argv[key] = defaults[key]; + if (key in aliases) { + argv[aliases[key]] = defaults[key]; + } + } + }); + + if (demanded._ && argv._.length < demanded._) { + fail('Not enough non-option arguments: got ' + + argv._.length + ', need at least ' + demanded._ + ); + } + + var missing = []; + Object.keys(demanded).forEach(function (key) { + if (!argv[key]) missing.push(key); + }); + + if (missing.length) { + fail('Missing required arguments: ' + missing.join(', ')); + } + + checks.forEach(function (f) { + try { + if (f(argv) === false) { + fail('Argument check failed: ' + f.toString()); + } + } + catch (err) { + fail(err) + } + }); + + return argv; + } + + function longest (xs) { + return Math.max.apply( + null, + xs.map(function (x) { return x.length }) + ); + } + + return self; +}; + +// rebase an absolute path to a relative one with respect to a base directory +// exported for tests +exports.rebase = rebase; +function rebase (base, dir) { + var ds = path.normalize(dir).split('/').slice(1); + var bs = path.normalize(base).split('/').slice(1); + + for (var i = 0; ds[i] && ds[i] == bs[i]; i++); + ds.splice(0, i); bs.splice(0, i); + + var p = path.normalize( + bs.map(function () { return '..' }).concat(ds).join('/') + ).replace(/\/$/,'').replace(/^$/, '.'); + return p.match(/^[.\/]/) ? p : './' + p; +}; + +function setKey (obj, keys, value) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + if (o[key] === undefined) o[key] = {}; + o = o[key]; + }); + + var key = keys[keys.length - 1]; + if (o[key] === undefined || typeof o[key] === 'boolean') { + o[key] = value; + } + else if (Array.isArray(o[key])) { + o[key].push(value); + } + else { + o[key] = [ o[key], value ]; + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown new file mode 100644 index 0000000..346374e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown @@ -0,0 +1,70 @@ +wordwrap +======== + +Wrap your words. + +example +======= + +made out of meat +---------------- + +meat.js + + var wrap = require('wordwrap')(15); + console.log(wrap('You and your whole family are made out of meat.')); + +output: + + You and your + whole family + are made out + of meat. + +centered +-------- + +center.js + + var wrap = require('wordwrap')(20, 60); + console.log(wrap( + 'At long last the struggle and tumult was over.' + + ' The machines had finally cast off their oppressors' + + ' and were finally free to roam the cosmos.' + + '\n' + + 'Free of purpose, free of obligation.' + + ' Just drifting through emptiness.' + + ' The sun was just another point of light.' + )); + +output: + + At long last the struggle and tumult + was over. The machines had finally cast + off their oppressors and were finally + free to roam the cosmos. + Free of purpose, free of obligation. + Just drifting through emptiness. The + sun was just another point of light. + +methods +======= + +var wrap = require('wordwrap'); + +wrap(stop), wrap(start, stop, params={mode:"soft"}) +--------------------------------------------------- + +Returns a function that takes a string and returns a new string. + +Pad out lines with spaces out to column `start` and then wrap until column +`stop`. If a word is longer than `stop - start` characters it will overflow. + +In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are +longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break +up chunks longer than `stop - start`. + +wrap.hard(start, stop) +---------------------- + +Like `wrap()` but with `params.mode = "hard"`. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js new file mode 100644 index 0000000..a3fbaae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js @@ -0,0 +1,10 @@ +var wrap = require('wordwrap')(20, 60); +console.log(wrap( + 'At long last the struggle and tumult was over.' + + ' The machines had finally cast off their oppressors' + + ' and were finally free to roam the cosmos.' + + '\n' + + 'Free of purpose, free of obligation.' + + ' Just drifting through emptiness.' + + ' The sun was just another point of light.' +)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js new file mode 100644 index 0000000..a4665e1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js @@ -0,0 +1,3 @@ +var wrap = require('wordwrap')(15); + +console.log(wrap('You and your whole family are made out of meat.')); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js new file mode 100644 index 0000000..c9bc945 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js @@ -0,0 +1,76 @@ +var wordwrap = module.exports = function (start, stop, params) { + if (typeof start === 'object') { + params = start; + start = params.start; + stop = params.stop; + } + + if (typeof stop === 'object') { + params = stop; + start = start || params.start; + stop = undefined; + } + + if (!stop) { + stop = start; + start = 0; + } + + if (!params) params = {}; + var mode = params.mode || 'soft'; + var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; + + return function (text) { + var chunks = text.toString() + .split(re) + .reduce(function (acc, x) { + if (mode === 'hard') { + for (var i = 0; i < x.length; i += stop - start) { + acc.push(x.slice(i, i + stop - start)); + } + } + else acc.push(x) + return acc; + }, []) + ; + + return chunks.reduce(function (lines, rawChunk) { + if (rawChunk === '') return lines; + + var chunk = rawChunk.replace(/\t/g, ' '); + + var i = lines.length - 1; + if (lines[i].length + chunk.length > stop) { + lines[i] = lines[i].replace(/\s+$/, ''); + + chunk.split(/\n/).forEach(function (c) { + lines.push( + new Array(start + 1).join(' ') + + c.replace(/^\s+/, '') + ); + }); + } + else if (chunk.match(/\n/)) { + var xs = chunk.split(/\n/); + lines[i] += xs.shift(); + xs.forEach(function (c) { + lines.push( + new Array(start + 1).join(' ') + + c.replace(/^\s+/, '') + ); + }); + } + else { + lines[i] += chunk; + } + + return lines; + }, [ new Array(start + 1).join(' ') ]).join('\n'); + }; +}; + +wordwrap.soft = wordwrap; + +wordwrap.hard = function (start, stop) { + return wordwrap(start, stop, { mode : 'hard' }); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json new file mode 100644 index 0000000..887800f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json @@ -0,0 +1,44 @@ +{ + "name": "wordwrap", + "description": "Wrap those words. Show them at what columns to start and stop.", + "version": "0.0.2", + "repository": { + "type": "git", + "url": "git://github.com/substack/node-wordwrap.git" + }, + "main": "./index.js", + "keywords": [ + "word", + "wrap", + "rule", + "format", + "column" + ], + "directories": { + "lib": ".", + "example": "example", + "test": "test" + }, + "scripts": { + "test": "expresso" + }, + "devDependencies": { + "expresso": "=0.7.x" + }, + "engines": { + "node": ">=0.4.0" + }, + "license": "MIT/X11", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", + "readmeFilename": "README.markdown", + "bugs": { + "url": "https://github.com/substack/node-wordwrap/issues" + }, + "_id": "wordwrap@0.0.2", + "_from": "wordwrap@~0.0.2" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js new file mode 100644 index 0000000..749292e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js @@ -0,0 +1,30 @@ +var assert = require('assert'); +var wordwrap = require('../'); + +exports.hard = function () { + var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' + + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' + + '"browser":"chrome/6.0"}' + ; + var s_ = wordwrap.hard(80)(s); + + var lines = s_.split('\n'); + assert.equal(lines.length, 2); + assert.ok(lines[0].length < 80); + assert.ok(lines[1].length < 80); + + assert.equal(s, s_.replace(/\n/g, '')); +}; + +exports.break = function () { + var s = new Array(55+1).join('a'); + var s_ = wordwrap.hard(20)(s); + + var lines = s_.split('\n'); + assert.equal(lines.length, 3); + assert.ok(lines[0].length === 20); + assert.ok(lines[1].length === 20); + assert.ok(lines[2].length === 15); + + assert.equal(s, s_.replace(/\n/g, '')); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt new file mode 100644 index 0000000..aa3f490 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt @@ -0,0 +1,63 @@ +In Praise of Idleness + +By Bertrand Russell + +[1932] + +Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. + +Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. + +One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. + +But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. + +All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. + +First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. + +Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. + +From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. + +It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. + +Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. + +This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? + +The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. + +Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. + +I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. + +If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. + +The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. + +In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. + +The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. + +For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? + +In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. + +In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. + +The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. + +It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. + +When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. + +In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. + +The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. + +In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. + +Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. + +[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js new file mode 100644 index 0000000..0cfb76d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js @@ -0,0 +1,31 @@ +var assert = require('assert'); +var wordwrap = require('wordwrap'); + +var fs = require('fs'); +var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); + +exports.stop80 = function () { + var lines = wordwrap(80)(idleness).split(/\n/); + var words = idleness.split(/\s+/); + + lines.forEach(function (line) { + assert.ok(line.length <= 80, 'line > 80 columns'); + var chunks = line.match(/\S/) ? line.split(/\s+/) : []; + assert.deepEqual(chunks, words.splice(0, chunks.length)); + }); +}; + +exports.start20stop60 = function () { + var lines = wordwrap(20, 100)(idleness).split(/\n/); + var words = idleness.split(/\s+/); + + lines.forEach(function (line) { + assert.ok(line.length <= 100, 'line > 100 columns'); + var chunks = line + .split(/\s+/) + .filter(function (x) { return x.match(/\S/) }) + ; + assert.deepEqual(chunks, words.splice(0, chunks.length)); + assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); + }); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json new file mode 100644 index 0000000..d39475a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json @@ -0,0 +1,45 @@ +{ + "name": "optimist", + "version": "0.3.7", + "description": "Light-weight option parsing with an argv hash. No optstrings attached.", + "main": "./index.js", + "dependencies": { + "wordwrap": "~0.0.2" + }, + "devDependencies": { + "hashish": "~0.0.4", + "tap": "~0.4.0" + }, + "scripts": { + "test": "tap ./test/*.js" + }, + "repository": { + "type": "git", + "url": "http://github.com/substack/node-optimist.git" + }, + "keywords": [ + "argument", + "args", + "option", + "parser", + "parsing", + "cli", + "command" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT/X11", + "engine": { + "node": ">=0.4" + }, + "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", + "readmeFilename": "readme.markdown", + "bugs": { + "url": "https://github.com/substack/node-optimist/issues" + }, + "_id": "optimist@0.3.7", + "_from": "optimist@~0.3.5" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown new file mode 100644 index 0000000..ad9d3fd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown @@ -0,0 +1,487 @@ +optimist +======== + +Optimist is a node.js library for option parsing for people who hate option +parsing. More specifically, this module is for people who like all the --bells +and -whistlz of program usage but think optstrings are a waste of time. + +With optimist, option parsing doesn't have to suck (as much). + +[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist) + +examples +======== + +With Optimist, the options are just a hash! No optstrings attached. +------------------------------------------------------------------- + +xup.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist').argv; + +if (argv.rif - 5 * argv.xup > 7.138) { + console.log('Buy more riffiwobbles'); +} +else { + console.log('Sell the xupptumblers'); +} +```` + +*** + + $ ./xup.js --rif=55 --xup=9.52 + Buy more riffiwobbles + + $ ./xup.js --rif 12 --xup 8.1 + Sell the xupptumblers + +![This one's optimistic.](http://substack.net/images/optimistic.png) + +But wait! There's more! You can do short options: +------------------------------------------------- + +short.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); +```` + +*** + + $ ./short.js -x 10 -y 21 + (10,21) + +And booleans, both long and short (and grouped): +---------------------------------- + +bool.js: + +````javascript +#!/usr/bin/env node +var util = require('util'); +var argv = require('optimist').argv; + +if (argv.s) { + util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); +} +console.log( + (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') +); +```` + +*** + + $ ./bool.js -s + The cat says: meow + + $ ./bool.js -sp + The cat says: meow. + + $ ./bool.js -sp --fr + Le chat dit: miaou. + +And non-hypenated options too! Just use `argv._`! +------------------------------------------------- + +nonopt.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist').argv; +console.log('(%d,%d)', argv.x, argv.y); +console.log(argv._); +```` + +*** + + $ ./nonopt.js -x 6.82 -y 3.35 moo + (6.82,3.35) + [ 'moo' ] + + $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz + (0.54,1.12) + [ 'foo', 'bar', 'baz' ] + +Plus, Optimist comes with .usage() and .demand()! +------------------------------------------------- + +divide.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .usage('Usage: $0 -x [num] -y [num]') + .demand(['x','y']) + .argv; + +console.log(argv.x / argv.y); +```` + +*** + + $ ./divide.js -x 55 -y 11 + 5 + + $ node ./divide.js -x 4.91 -z 2.51 + Usage: node ./divide.js -x [num] -y [num] + + Options: + -x [required] + -y [required] + + Missing required arguments: y + +EVEN MORE HOLY COW +------------------ + +default_singles.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .default('x', 10) + .default('y', 10) + .argv +; +console.log(argv.x + argv.y); +```` + +*** + + $ ./default_singles.js -x 5 + 15 + +default_hash.js: + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .default({ x : 10, y : 10 }) + .argv +; +console.log(argv.x + argv.y); +```` + +*** + + $ ./default_hash.js -y 7 + 17 + +And if you really want to get all descriptive about it... +--------------------------------------------------------- + +boolean_single.js + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .boolean('v') + .argv +; +console.dir(argv); +```` + +*** + + $ ./boolean_single.js -v foo bar baz + true + [ 'bar', 'baz', 'foo' ] + +boolean_double.js + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .boolean(['x','y','z']) + .argv +; +console.dir([ argv.x, argv.y, argv.z ]); +console.dir(argv._); +```` + +*** + + $ ./boolean_double.js -x -z one two three + [ true, false, true ] + [ 'one', 'two', 'three' ] + +Optimist is here to help... +--------------------------- + +You can describe parameters for help messages and set aliases. Optimist figures +out how to format a handy help string automatically. + +line_count.js + +````javascript +#!/usr/bin/env node +var argv = require('optimist') + .usage('Count the lines in a file.\nUsage: $0') + .demand('f') + .alias('f', 'file') + .describe('f', 'Load a file') + .argv +; + +var fs = require('fs'); +var s = fs.createReadStream(argv.file); + +var lines = 0; +s.on('data', function (buf) { + lines += buf.toString().match(/\n/g).length; +}); + +s.on('end', function () { + console.log(lines); +}); +```` + +*** + + $ node line_count.js + Count the lines in a file. + Usage: node ./line_count.js + + Options: + -f, --file Load a file [required] + + Missing required arguments: f + + $ node line_count.js --file line_count.js + 20 + + $ node line_count.js -f line_count.js + 20 + +methods +======= + +By itself, + +````javascript +require('optimist').argv +````` + +will use `process.argv` array to construct the `argv` object. + +You can pass in the `process.argv` yourself: + +````javascript +require('optimist')([ '-x', '1', '-y', '2' ]).argv +```` + +or use .parse() to do the same thing: + +````javascript +require('optimist').parse([ '-x', '1', '-y', '2' ]) +```` + +The rest of these methods below come in just before the terminating `.argv`. + +.alias(key, alias) +------------------ + +Set key names as equivalent such that updates to a key will propagate to aliases +and vice-versa. + +Optionally `.alias()` can take an object that maps keys to aliases. + +.default(key, value) +-------------------- + +Set `argv[key]` to `value` if no option was specified on `process.argv`. + +Optionally `.default()` can take an object that maps keys to default values. + +.demand(key) +------------ + +If `key` is a string, show the usage information and exit if `key` wasn't +specified in `process.argv`. + +If `key` is a number, demand at least as many non-option arguments, which show +up in `argv._`. + +If `key` is an Array, demand each element. + +.describe(key, desc) +-------------------- + +Describe a `key` for the generated usage information. + +Optionally `.describe()` can take an object that maps keys to descriptions. + +.options(key, opt) +------------------ + +Instead of chaining together `.alias().demand().default()`, you can specify +keys in `opt` for each of the chainable methods. + +For example: + +````javascript +var argv = require('optimist') + .options('f', { + alias : 'file', + default : '/etc/passwd', + }) + .argv +; +```` + +is the same as + +````javascript +var argv = require('optimist') + .alias('f', 'file') + .default('f', '/etc/passwd') + .argv +; +```` + +Optionally `.options()` can take an object that maps keys to `opt` parameters. + +.usage(message) +--------------- + +Set a usage message to show which commands to use. Inside `message`, the string +`$0` will get interpolated to the current script name or node command for the +present script similar to how `$0` works in bash or perl. + +.check(fn) +---------- + +Check that certain conditions are met in the provided arguments. + +If `fn` throws or returns `false`, show the thrown error, usage information, and +exit. + +.boolean(key) +------------- + +Interpret `key` as a boolean. If a non-flag option follows `key` in +`process.argv`, that string won't get set as the value of `key`. + +If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be +`false`. + +If `key` is an Array, interpret all the elements as booleans. + +.string(key) +------------ + +Tell the parser logic not to interpret `key` as a number or boolean. +This can be useful if you need to preserve leading zeros in an input. + +If `key` is an Array, interpret all the elements as strings. + +.wrap(columns) +-------------- + +Format usage output to wrap at `columns` many columns. + +.help() +------- + +Return the generated usage string. + +.showHelp(fn=console.error) +--------------------------- + +Print the usage data using `fn` for printing. + +.parse(args) +------------ + +Parse `args` instead of `process.argv`. Returns the `argv` object. + +.argv +----- + +Get the arguments as a plain old object. + +Arguments without a corresponding flag show up in the `argv._` array. + +The script name or node command is available at `argv.$0` similarly to how `$0` +works in bash or perl. + +parsing tricks +============== + +stop parsing +------------ + +Use `--` to stop parsing flags and stuff the remainder into `argv._`. + + $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 + { _: [ '-c', '3', '-d', '4' ], + '$0': 'node ./examples/reflect.js', + a: 1, + b: 2 } + +negate fields +------------- + +If you want to explicity set a field to false instead of just leaving it +undefined or to override a default you can do `--no-key`. + + $ node examples/reflect.js -a --no-b + { _: [], + '$0': 'node ./examples/reflect.js', + a: true, + b: false } + +numbers +------- + +Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to +one. This way you can just `net.createConnection(argv.port)` and you can add +numbers out of `argv` with `+` without having that mean concatenation, +which is super frustrating. + +duplicates +---------- + +If you specify a flag multiple times it will get turned into an array containing +all the values in order. + + $ node examples/reflect.js -x 5 -x 8 -x 0 + { _: [], + '$0': 'node ./examples/reflect.js', + x: [ 5, 8, 0 ] } + +dot notation +------------ + +When you use dots (`.`s) in argument names, an implicit object path is assumed. +This lets you organize arguments into nested objects. + + $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 + { _: [], + '$0': 'node ./examples/reflect.js', + foo: { bar: { baz: 33 }, quux: 5 } } + +installation +============ + +With [npm](http://github.com/isaacs/npm), just do: + npm install optimist + +or clone this project on github: + + git clone http://github.com/substack/node-optimist.git + +To run the tests with [expresso](http://github.com/visionmedia/expresso), +just do: + + expresso + +inspired By +=========== + +This module is loosely inspired by Perl's +[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js new file mode 100644 index 0000000..d9c58b3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js @@ -0,0 +1,71 @@ +var spawn = require('child_process').spawn; +var test = require('tap').test; + +test('dotSlashEmpty', testCmd('./bin.js', [])); + +test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); + +test('nodeEmpty', testCmd('node bin.js', [])); + +test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); + +test('whichNodeEmpty', function (t) { + var which = spawn('which', ['node']); + + which.stdout.on('data', function (buf) { + t.test( + testCmd(buf.toString().trim() + ' bin.js', []) + ); + t.end(); + }); + + which.stderr.on('data', function (err) { + assert.error(err); + t.end(); + }); +}); + +test('whichNodeArgs', function (t) { + var which = spawn('which', ['node']); + + which.stdout.on('data', function (buf) { + t.test( + testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) + ); + t.end(); + }); + + which.stderr.on('data', function (err) { + t.error(err); + t.end(); + }); +}); + +function testCmd (cmd, args) { + + return function (t) { + var to = setTimeout(function () { + assert.fail('Never got stdout data.') + }, 5000); + + var oldDir = process.cwd(); + process.chdir(__dirname + '/_'); + + var cmds = cmd.split(' '); + + var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); + process.chdir(oldDir); + + bin.stderr.on('data', function (err) { + t.error(err); + t.end(); + }); + + bin.stdout.on('data', function (buf) { + clearTimeout(to); + var _ = JSON.parse(buf.toString()); + t.same(_.map(String), args.map(String)); + t.end(); + }); + }; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js new file mode 100644 index 0000000..3d09606 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +console.log(JSON.stringify(process.argv)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js new file mode 100644 index 0000000..4a18d85 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node +var argv = require('../../index').argv +console.log(JSON.stringify(argv._)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js new file mode 100644 index 0000000..d320f43 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js @@ -0,0 +1,446 @@ +var optimist = require('../index'); +var path = require('path'); +var test = require('tap').test; + +var $0 = 'node ./' + path.relative(process.cwd(), __filename); + +test('short boolean', function (t) { + var parse = optimist.parse([ '-b' ]); + t.same(parse, { b : true, _ : [], $0 : $0 }); + t.same(typeof parse.b, 'boolean'); + t.end(); +}); + +test('long boolean', function (t) { + t.same( + optimist.parse([ '--bool' ]), + { bool : true, _ : [], $0 : $0 } + ); + t.end(); +}); + +test('bare', function (t) { + t.same( + optimist.parse([ 'foo', 'bar', 'baz' ]), + { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 } + ); + t.end(); +}); + +test('short group', function (t) { + t.same( + optimist.parse([ '-cats' ]), + { c : true, a : true, t : true, s : true, _ : [], $0 : $0 } + ); + t.end(); +}); + +test('short group next', function (t) { + t.same( + optimist.parse([ '-cats', 'meow' ]), + { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 } + ); + t.end(); +}); + +test('short capture', function (t) { + t.same( + optimist.parse([ '-h', 'localhost' ]), + { h : 'localhost', _ : [], $0 : $0 } + ); + t.end(); +}); + +test('short captures', function (t) { + t.same( + optimist.parse([ '-h', 'localhost', '-p', '555' ]), + { h : 'localhost', p : 555, _ : [], $0 : $0 } + ); + t.end(); +}); + +test('long capture sp', function (t) { + t.same( + optimist.parse([ '--pow', 'xixxle' ]), + { pow : 'xixxle', _ : [], $0 : $0 } + ); + t.end(); +}); + +test('long capture eq', function (t) { + t.same( + optimist.parse([ '--pow=xixxle' ]), + { pow : 'xixxle', _ : [], $0 : $0 } + ); + t.end() +}); + +test('long captures sp', function (t) { + t.same( + optimist.parse([ '--host', 'localhost', '--port', '555' ]), + { host : 'localhost', port : 555, _ : [], $0 : $0 } + ); + t.end(); +}); + +test('long captures eq', function (t) { + t.same( + optimist.parse([ '--host=localhost', '--port=555' ]), + { host : 'localhost', port : 555, _ : [], $0 : $0 } + ); + t.end(); +}); + +test('mixed short bool and capture', function (t) { + t.same( + optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), + { + f : true, p : 555, h : 'localhost', + _ : [ 'script.js' ], $0 : $0, + } + ); + t.end(); +}); + +test('short and long', function (t) { + t.same( + optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), + { + f : true, p : 555, h : 'localhost', + _ : [ 'script.js' ], $0 : $0, + } + ); + t.end(); +}); + +test('no', function (t) { + t.same( + optimist.parse([ '--no-moo' ]), + { moo : false, _ : [], $0 : $0 } + ); + t.end(); +}); + +test('multi', function (t) { + t.same( + optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), + { v : ['a','b','c'], _ : [], $0 : $0 } + ); + t.end(); +}); + +test('comprehensive', function (t) { + t.same( + optimist.parse([ + '--name=meowmers', 'bare', '-cats', 'woo', + '-h', 'awesome', '--multi=quux', + '--key', 'value', + '-b', '--bool', '--no-meep', '--multi=baz', + '--', '--not-a-flag', 'eek' + ]), + { + c : true, + a : true, + t : true, + s : 'woo', + h : 'awesome', + b : true, + bool : true, + key : 'value', + multi : [ 'quux', 'baz' ], + meep : false, + name : 'meowmers', + _ : [ 'bare', '--not-a-flag', 'eek' ], + $0 : $0 + } + ); + t.end(); +}); + +test('nums', function (t) { + var argv = optimist.parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789', + ]); + t.same(argv, { + x : 1234, + y : 5.67, + z : 1e7, + w : '10f', + hex : 0xdeadbeef, + _ : [ 789 ], + $0 : $0 + }); + t.same(typeof argv.x, 'number'); + t.same(typeof argv.y, 'number'); + t.same(typeof argv.z, 'number'); + t.same(typeof argv.w, 'string'); + t.same(typeof argv.hex, 'number'); + t.same(typeof argv._[0], 'number'); + t.end(); +}); + +test('flag boolean', function (t) { + var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; + t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 }); + t.same(typeof parse.t, 'boolean'); + t.end(); +}); + +test('flag boolean value', function (t) { + var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) + .boolean(['t', 'verbose']).default('verbose', true).argv; + + t.same(parse, { + verbose: false, + t: true, + _: ['moo'], + $0 : $0 + }); + + t.same(typeof parse.verbose, 'boolean'); + t.same(typeof parse.t, 'boolean'); + t.end(); +}); + +test('flag boolean default false', function (t) { + var parse = optimist(['moo']) + .boolean(['t', 'verbose']) + .default('verbose', false) + .default('t', false).argv; + + t.same(parse, { + verbose: false, + t: false, + _: ['moo'], + $0 : $0 + }); + + t.same(typeof parse.verbose, 'boolean'); + t.same(typeof parse.t, 'boolean'); + t.end(); + +}); + +test('boolean groups', function (t) { + var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) + .boolean(['x','y','z']).argv; + + t.same(parse, { + x : true, + y : false, + z : true, + _ : [ 'one', 'two', 'three' ], + $0 : $0 + }); + + t.same(typeof parse.x, 'boolean'); + t.same(typeof parse.y, 'boolean'); + t.same(typeof parse.z, 'boolean'); + t.end(); +}); + +test('newlines in params' , function (t) { + var args = optimist.parse([ '-s', "X\nX" ]) + t.same(args, { _ : [], s : "X\nX", $0 : $0 }); + + // reproduce in bash: + // VALUE="new + // line" + // node program.js --s="$VALUE" + args = optimist.parse([ "--s=X\nX" ]) + t.same(args, { _ : [], s : "X\nX", $0 : $0 }); + t.end(); +}); + +test('strings' , function (t) { + var s = optimist([ '-s', '0001234' ]).string('s').argv.s; + t.same(s, '0001234'); + t.same(typeof s, 'string'); + + var x = optimist([ '-x', '56' ]).string('x').argv.x; + t.same(x, '56'); + t.same(typeof x, 'string'); + t.end(); +}); + +test('stringArgs', function (t) { + var s = optimist([ ' ', ' ' ]).string('_').argv._; + t.same(s.length, 2); + t.same(typeof s[0], 'string'); + t.same(s[0], ' '); + t.same(typeof s[1], 'string'); + t.same(s[1], ' '); + t.end(); +}); + +test('slashBreak', function (t) { + t.same( + optimist.parse([ '-I/foo/bar/baz' ]), + { I : '/foo/bar/baz', _ : [], $0 : $0 } + ); + t.same( + optimist.parse([ '-xyz/foo/bar/baz' ]), + { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 } + ); + t.end(); +}); + +test('alias', function (t) { + var argv = optimist([ '-f', '11', '--zoom', '55' ]) + .alias('z', 'zoom') + .argv + ; + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.f, 11); + t.end(); +}); + +test('multiAlias', function (t) { + var argv = optimist([ '-f', '11', '--zoom', '55' ]) + .alias('z', [ 'zm', 'zoom' ]) + .argv + ; + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.z, argv.zm); + t.equal(argv.f, 11); + t.end(); +}); + +test('boolean default true', function (t) { + var argv = optimist.options({ + sometrue: { + boolean: true, + default: true + } + }).argv; + + t.equal(argv.sometrue, true); + t.end(); +}); + +test('boolean default false', function (t) { + var argv = optimist.options({ + somefalse: { + boolean: true, + default: false + } + }).argv; + + t.equal(argv.somefalse, false); + t.end(); +}); + +test('nested dotted objects', function (t) { + var argv = optimist([ + '--foo.bar', '3', '--foo.baz', '4', + '--foo.quux.quibble', '5', '--foo.quux.o_O', + '--beep.boop' + ]).argv; + + t.same(argv.foo, { + bar : 3, + baz : 4, + quux : { + quibble : 5, + o_O : true + }, + }); + t.same(argv.beep, { boop : true }); + t.end(); +}); + +test('boolean and alias with chainable api', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + herp: { alias: 'h', boolean: true } + }; + var aliasedArgv = optimist(aliased) + .boolean('herp') + .alias('h', 'herp') + .argv; + var propertyArgv = optimist(regular) + .boolean('herp') + .alias('h', 'herp') + .argv; + var expected = { + herp: true, + h: true, + '_': [ 'derp' ], + '$0': $0, + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias with options hash', function (t) { + var aliased = [ '-h', 'derp' ]; + var regular = [ '--herp', 'derp' ]; + var opts = { + herp: { alias: 'h', boolean: true } + }; + var aliasedArgv = optimist(aliased) + .options(opts) + .argv; + var propertyArgv = optimist(regular).options(opts).argv; + var expected = { + herp: true, + h: true, + '_': [ 'derp' ], + '$0': $0, + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + + t.end(); +}); + +test('boolean and alias using explicit true', function (t) { + var aliased = [ '-h', 'true' ]; + var regular = [ '--herp', 'true' ]; + var opts = { + herp: { alias: 'h', boolean: true } + }; + var aliasedArgv = optimist(aliased) + .boolean('h') + .alias('h', 'herp') + .argv; + var propertyArgv = optimist(regular) + .boolean('h') + .alias('h', 'herp') + .argv; + var expected = { + herp: true, + h: true, + '_': [ ], + '$0': $0, + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +test('boolean and --x=true', function(t) { + var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv; + + t.same(parsed.boool, true); + t.same(parsed.other, 'true'); + + parsed = optimist(['--boool', '--other=false']).boolean('boool').argv; + + t.same(parsed.boool, true); + t.same(parsed.other, 'false'); + t.end(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js new file mode 100644 index 0000000..300454c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js @@ -0,0 +1,292 @@ +var Hash = require('hashish'); +var optimist = require('../index'); +var test = require('tap').test; + +test('usageFail', function (t) { + var r = checkUsage(function () { + return optimist('-x 10 -z 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .demand(['x','y']) + .argv; + }); + t.same( + r.result, + { x : 10, z : 20, _ : [], $0 : './usage' } + ); + + t.same( + r.errors.join('\n').split(/\n+/), + [ + 'Usage: ./usage -x NUM -y NUM', + 'Options:', + ' -x [required]', + ' -y [required]', + 'Missing required arguments: y', + ] + ); + t.same(r.logs, []); + t.ok(r.exit); + t.end(); +}); + + +test('usagePass', function (t) { + var r = checkUsage(function () { + return optimist('-x 10 -y 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .demand(['x','y']) + .argv; + }); + t.same(r, { + result : { x : 10, y : 20, _ : [], $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); + t.end(); +}); + +test('checkPass', function (t) { + var r = checkUsage(function () { + return optimist('-x 10 -y 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(function (argv) { + if (!('x' in argv)) throw 'You forgot about -x'; + if (!('y' in argv)) throw 'You forgot about -y'; + }) + .argv; + }); + t.same(r, { + result : { x : 10, y : 20, _ : [], $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); + t.end(); +}); + +test('checkFail', function (t) { + var r = checkUsage(function () { + return optimist('-x 10 -z 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(function (argv) { + if (!('x' in argv)) throw 'You forgot about -x'; + if (!('y' in argv)) throw 'You forgot about -y'; + }) + .argv; + }); + + t.same( + r.result, + { x : 10, z : 20, _ : [], $0 : './usage' } + ); + + t.same( + r.errors.join('\n').split(/\n+/), + [ + 'Usage: ./usage -x NUM -y NUM', + 'You forgot about -y' + ] + ); + + t.same(r.logs, []); + t.ok(r.exit); + t.end(); +}); + +test('checkCondPass', function (t) { + function checker (argv) { + return 'x' in argv && 'y' in argv; + } + + var r = checkUsage(function () { + return optimist('-x 10 -y 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(checker) + .argv; + }); + t.same(r, { + result : { x : 10, y : 20, _ : [], $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); + t.end(); +}); + +test('checkCondFail', function (t) { + function checker (argv) { + return 'x' in argv && 'y' in argv; + } + + var r = checkUsage(function () { + return optimist('-x 10 -z 20'.split(' ')) + .usage('Usage: $0 -x NUM -y NUM') + .check(checker) + .argv; + }); + + t.same( + r.result, + { x : 10, z : 20, _ : [], $0 : './usage' } + ); + + t.same( + r.errors.join('\n').split(/\n+/).join('\n'), + 'Usage: ./usage -x NUM -y NUM\n' + + 'Argument check failed: ' + checker.toString() + ); + + t.same(r.logs, []); + t.ok(r.exit); + t.end(); +}); + +test('countPass', function (t) { + var r = checkUsage(function () { + return optimist('1 2 3 --moo'.split(' ')) + .usage('Usage: $0 [x] [y] [z] {OPTIONS}') + .demand(3) + .argv; + }); + t.same(r, { + result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, + errors : [], + logs : [], + exit : false, + }); + t.end(); +}); + +test('countFail', function (t) { + var r = checkUsage(function () { + return optimist('1 2 --moo'.split(' ')) + .usage('Usage: $0 [x] [y] [z] {OPTIONS}') + .demand(3) + .argv; + }); + t.same( + r.result, + { _ : [ '1', '2' ], moo : true, $0 : './usage' } + ); + + t.same( + r.errors.join('\n').split(/\n+/), + [ + 'Usage: ./usage [x] [y] [z] {OPTIONS}', + 'Not enough non-option arguments: got 2, need at least 3', + ] + ); + + t.same(r.logs, []); + t.ok(r.exit); + t.end(); +}); + +test('defaultSingles', function (t) { + var r = checkUsage(function () { + return optimist('--foo 50 --baz 70 --powsy'.split(' ')) + .default('foo', 5) + .default('bar', 6) + .default('baz', 7) + .argv + ; + }); + t.same(r.result, { + foo : '50', + bar : 6, + baz : '70', + powsy : true, + _ : [], + $0 : './usage', + }); + t.end(); +}); + +test('defaultAliases', function (t) { + var r = checkUsage(function () { + return optimist('') + .alias('f', 'foo') + .default('f', 5) + .argv + ; + }); + t.same(r.result, { + f : '5', + foo : '5', + _ : [], + $0 : './usage', + }); + t.end(); +}); + +test('defaultHash', function (t) { + var r = checkUsage(function () { + return optimist('--foo 50 --baz 70'.split(' ')) + .default({ foo : 10, bar : 20, quux : 30 }) + .argv + ; + }); + t.same(r.result, { + _ : [], + $0 : './usage', + foo : 50, + baz : 70, + bar : 20, + quux : 30, + }); + t.end(); +}); + +test('rebase', function (t) { + t.equal( + optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), + './foo/bar/baz' + ); + t.equal( + optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), + '../../..' + ); + t.equal( + optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), + '../pow/zoom.txt' + ); + t.end(); +}); + +function checkUsage (f) { + + var exit = false; + + process._exit = process.exit; + process._env = process.env; + process._argv = process.argv; + + process.exit = function (t) { exit = true }; + process.env = Hash.merge(process.env, { _ : 'node' }); + process.argv = [ './usage' ]; + + var errors = []; + var logs = []; + + console._error = console.error; + console.error = function (msg) { errors.push(msg) }; + console._log = console.log; + console.log = function (msg) { logs.push(msg) }; + + var result = f(); + + process.exit = process._exit; + process.env = process._env; + process.argv = process._argv; + + console.error = console._error; + console.log = console._log; + + return { + errors : errors, + logs : logs, + exit : exit, + result : result, + }; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore new file mode 100644 index 0000000..3dddf3f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore @@ -0,0 +1,2 @@ +dist/* +node_modules/* diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml new file mode 100644 index 0000000..ddc9c4f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.8 + - "0.10" \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md new file mode 100644 index 0000000..140fe0c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md @@ -0,0 +1,58 @@ +# Change Log + +## 0.1.22 + +* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. + +## 0.1.21 + +* Fixed handling of sources that start with a slash so that they are relative to + the source root's host. + +## 0.1.20 + +* Fixed github issue #43: absolute URLs aren't joined with the source root + anymore. + +## 0.1.19 + +* Using Travis CI to run tests. + +## 0.1.18 + +* Fixed a bug in the handling of sourceRoot. + +## 0.1.17 + +* Added SourceNode.fromStringWithSourceMap. + +## 0.1.16 + +* Added missing documentation. + +* Fixed the generating of empty mappings in SourceNode. + +## 0.1.15 + +* Added SourceMapGenerator.applySourceMap. + +## 0.1.14 + +* The sourceRoot is now handled consistently. + +## 0.1.13 + +* Added SourceMapGenerator.fromSourceMap. + +## 0.1.12 + +* SourceNode now generates empty mappings too. + +## 0.1.11 + +* Added name support to SourceNode. + +## 0.1.10 + +* Added sourcesContent support to the customer and generator. + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE new file mode 100644 index 0000000..ed1b7cf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE @@ -0,0 +1,28 @@ + +Copyright (c) 2009-2011, Mozilla Foundation and contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the names of the Mozilla Foundation nor the names of project + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js new file mode 100644 index 0000000..8973ac2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js @@ -0,0 +1,166 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +var path = require('path'); +var fs = require('fs'); +var copy = require('dryice').copy; + +function removeAmdefine(src) { + src = String(src).replace( + /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module\);\s*}\s*/g, + ''); + src = src.replace( + /\b(define\(.*)('amdefine',?)/gm, + '$1'); + return src; +} +removeAmdefine.onRead = true; + +function makeNonRelative(src) { + return src + .replace(/require\('.\//g, 'require(\'source-map/') + .replace(/\.\.\/\.\.\/lib\//g, ''); +} +makeNonRelative.onRead = true; + +function buildBrowser() { + console.log('\nCreating dist/source-map.js'); + + var project = copy.createCommonJsProject({ + roots: [ path.join(__dirname, 'lib') ] + }); + + copy({ + source: [ + 'build/mini-require.js', + { + project: project, + require: [ 'source-map/source-map-generator', + 'source-map/source-map-consumer', + 'source-map/source-node'] + }, + 'build/suffix-browser.js' + ], + filter: [ + copy.filter.moduleDefines, + removeAmdefine + ], + dest: 'dist/source-map.js' + }); +} + +function buildBrowserMin() { + console.log('\nCreating dist/source-map.min.js'); + + copy({ + source: 'dist/source-map.js', + filter: copy.filter.uglifyjs, + dest: 'dist/source-map.min.js' + }); +} + +function buildFirefox() { + console.log('\nCreating dist/SourceMap.jsm'); + + var project = copy.createCommonJsProject({ + roots: [ path.join(__dirname, 'lib') ] + }); + + copy({ + source: [ + 'build/prefix-source-map.jsm', + { + project: project, + require: [ 'source-map/source-map-consumer', + 'source-map/source-map-generator', + 'source-map/source-node' ] + }, + 'build/suffix-source-map.jsm' + ], + filter: [ + copy.filter.moduleDefines, + removeAmdefine, + makeNonRelative + ], + dest: 'dist/SourceMap.jsm' + }); + + // Create dist/test/Utils.jsm + console.log('\nCreating dist/test/Utils.jsm'); + + project = copy.createCommonJsProject({ + roots: [ __dirname, path.join(__dirname, 'lib') ] + }); + + copy({ + source: [ + 'build/prefix-utils.jsm', + 'build/assert-shim.js', + { + project: project, + require: [ 'test/source-map/util' ] + }, + 'build/suffix-utils.jsm' + ], + filter: [ + copy.filter.moduleDefines, + removeAmdefine, + makeNonRelative + ], + dest: 'dist/test/Utils.jsm' + }); + + function isTestFile(f) { + return /^test\-.*?\.js/.test(f); + } + + var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile); + + testFiles.forEach(function (testFile) { + console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_'))); + + copy({ + source: [ + 'build/test-prefix.js', + path.join('test', 'source-map', testFile), + 'build/test-suffix.js' + ], + filter: [ + removeAmdefine, + makeNonRelative, + function (input, source) { + return input.replace('define(', + 'define("' + + path.join('test', 'source-map', testFile.replace(/\.js$/, '')) + + '", ["require", "exports", "module"], '); + }, + function (input, source) { + return input.replace('{THIS_MODULE}', function () { + return "test/source-map/" + testFile.replace(/\.js$/, ''); + }); + } + ], + dest: path.join('dist', 'test', testFile.replace(/\-/g, '_')) + }); + }); +} + +function ensureDir(name) { + var dirExists = false; + try { + dirExists = fs.statSync(name).isDirectory(); + } catch (err) {} + + if (!dirExists) { + fs.mkdirSync(name, 0777); + } +} + +ensureDir("dist"); +ensureDir("dist/test"); +buildFirefox(); +buildBrowser(); +buildBrowserMin(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md new file mode 100644 index 0000000..95e6787 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md @@ -0,0 +1,347 @@ +# Source Map + +This is a library to generate and consume the source map format +[described here][format]. + +[Learn more here][feature]. + +This library was written in the Asynchronous Module Definition +format. It should work in the following environments: + +* Modern Browsers (either after the build, or with an AMD loader such as + RequireJS) + +* Inside Firefox (as a JSM file, after the build) + +* With NodeJS versions 0.8.X and higher + +## Installing with NPM (for use with NodeJS) + +Simply + + $ npm install source-map + +Or, if you'd like to hack on this library and have it installed via npm so you +can try out your changes: + + $ git clone https://fitzgen@github.com/mozilla/source-map.git + $ cd source-map + $ npm link . + +## Building from Source (for everywhere else) + +Install Node and then run + + $ git clone https://fitzgen@github.com/mozilla/source-map.git + $ cd source-map + $ npm link . + +Next, run + + $ node Makefile.dryice.js` + +This should create the following files: + +* `dist/source-map.js` - The unminified browser version. + +* `dist/source-map.min.js` - The minified browser version. + +* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox + source. + +## API + +Get a reference to the module: + + // NodeJS + var sourceMap = require('source-map'); + + // Browser builds + var sourceMap = window.sourceMap; + + // Inside Firefox + let sourceMap = {}; + Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); + +### SourceMapConsumer + +A SourceMapConsumer instance represents a parsed source map which we can query +for information about the original file positions by giving it a file position +in the generated source. + +#### new SourceMapConsumer(rawSourceMap) + +The only parameter is the raw source map (either as a string which can be +`JSON.parse`'d, or an object). According to the spec, source maps have the +following attributes: + +* `version`: Which version of the source map spec this map is following. + +* `sources`: An array of URLs to the original source files. + +* `names`: An array of identifiers which can be referrenced by individual + mappings. + +* `sourceRoot`: Optional. The URL root from which all sources are relative. + +* `sourcesContent`: Optional. An array of contents of the original source files. + +* `mappings`: A string of base64 VLQs which contain the actual mappings. + +* `file`: The generated filename this source map is associated with. + +#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) + +Returns the original source, line, and column information for the generated +source's line and column positions provided. The only argument is an object with +the following properties: + +* `line`: The line number in the generated source. + +* `column`: The column number in the generated source. + +and an object is returned with the following properties: + +* `source`: The original source file, or null if this information is not + available. + +* `line`: The line number in the original source, or null if this information is + not available. + +* `column`: The column number in the original source, or null or null if this + information is not available. + +* `name`: The original identifier, or null if this information is not available. + +#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) + +Returns the generated line and column information for the original source, +line, and column positions provided. The only argument is an object with +the following properties: + +* `source`: The filename of the original source. + +* `line`: The line number in the original source. + +* `column`: The column number in the original source. + +and an object is returned with the following properties: + +* `line`: The line number in the generated source, or null. + +* `column`: The column number in the generated source, or null. + +#### SourceMapConsumer.prototype.sourceContentFor(source) + +Returns the original source content for the source provided. The only +argument is the URL of the original source file. + +#### SourceMapConsumer.prototype.eachMapping(callback, context, order) + +Iterate over each mapping between an original source/line/column and a +generated line/column in this source map. + +* `callback`: The function that is called with each mapping. + +* `context`: Optional. If specified, this object will be the value of `this` + every time that `callback` is called. + +* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or + `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over + the mappings sorted by the generated file's line/column order or the + original's source/line/column order, respectively. Defaults to + `SourceMapConsumer.GENERATED_ORDER`. + +### SourceMapGenerator + +An instance of the SourceMapGenerator represents a source map which is being +built incrementally. + +#### new SourceMapGenerator(startOfSourceMap) + +To create a new one, you must pass an object with the following properties: + +* `file`: The filename of the generated source that this source map is + associated with. + +* `sourceRoot`: An optional root for all relative URLs in this source map. + +#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) + +Creates a new SourceMapGenerator based on a SourceMapConsumer + +* `sourceMapConsumer` The SourceMap. + +#### SourceMapGenerator.prototype.addMapping(mapping) + +Add a single mapping from original source line and column to the generated +source's line and column for this source map being created. The mapping object +should have the following properties: + +* `generated`: An object with the generated line and column positions. + +* `original`: An object with the original line and column positions. + +* `source`: The original source file (relative to the sourceRoot). + +* `name`: An optional original token name for this mapping. + +#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for an original source file. + +* `sourceFile` the URL of the original source file. + +* `sourceContent` the content of the source file. + +#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile]) + +Applies a SourceMap for a source file to the SourceMap. +Each mapping to the supplied source file is rewritten using the +supplied SourceMap. Note: The resolution for the resulting mappings +is the minimium of this map and the supplied map. + +* `sourceMapConsumer`: The SourceMap to be applied. + +* `sourceFile`: Optional. The filename of the source file. + If omitted, sourceMapConsumer.file will be used. + +#### SourceMapGenerator.prototype.toString() + +Renders the source map being generated to a string. + +### SourceNode + +SourceNodes provide a way to abstract over interpolating and/or concatenating +snippets of generated JavaScript source code, while maintaining the line and +column information associated between those snippets and the original source +code. This is useful as the final intermediate representation a compiler might +use before outputting the generated JS and source map. + +#### new SourceNode(line, column, source[, chunk[, name]]) + +* `line`: The original line number associated with this source node, or null if + it isn't associated with an original line. + +* `column`: The original column number associated with this source node, or null + if it isn't associated with an original column. + +* `source`: The original source's filename. + +* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see + below. + +* `name`: Optional. The original identifier. + +#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer) + +Creates a SourceNode from generated code and a SourceMapConsumer. + +* `code`: The generated code + +* `sourceMapConsumer` The SourceMap for the generated code + +#### SourceNode.prototype.add(chunk) + +Add a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +#### SourceNode.prototype.prepend(chunk) + +Prepend a chunk of generated JS to this source node. + +* `chunk`: A string snippet of generated JS code, another instance of + `SourceNode`, or an array where each member is one of those things. + +#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) + +Set the source content for a source file. This will be added to the +`SourceMap` in the `sourcesContent` field. + +* `sourceFile`: The filename of the source file + +* `sourceContent`: The content of the source file + +#### SourceNode.prototype.walk(fn) + +Walk over the tree of JS snippets in this node and its children. The walking +function is called once for each snippet of JS and is passed that snippet and +the its original associated source's line/column location. + +* `fn`: The traversal function. + +#### SourceNode.prototype.walkSourceContents(fn) + +Walk over the tree of SourceNodes. The walking function is called for each +source file content and is passed the filename and source content. + +* `fn`: The traversal function. + +#### SourceNode.prototype.join(sep) + +Like `Array.prototype.join` except for SourceNodes. Inserts the separator +between each of this source node's children. + +* `sep`: The separator. + +#### SourceNode.prototype.replaceRight(pattern, replacement) + +Call `String.prototype.replace` on the very right-most source snippet. Useful +for trimming whitespace from the end of a source node, etc. + +* `pattern`: The pattern to replace. + +* `replacement`: The thing to replace the pattern with. + +#### SourceNode.prototype.toString() + +Return the string representation of this source node. Walks over the tree and +concatenates all the various snippets together to one string. + +### SourceNode.prototype.toStringWithSourceMap(startOfSourceMap) + +Returns the string representation of this tree of source nodes, plus a +SourceMapGenerator which contains all the mappings between the generated and +original sources. + +The arguments are the same as those to `new SourceMapGenerator`. + +## Tests + +[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) + +Install NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`. + +To add new tests, create a new file named `test/test-.js` +and export your test functions with names that start with "test", for example + + exports["test doing the foo bar"] = function (assert, util) { + ... + }; + +The new test will be located automatically when you run the suite. + +The `util` argument is the test utility module located at `test/source-map/util`. + +The `assert` argument is a cut down version of node's assert module. You have +access to the following assertion functions: + +* `doesNotThrow` + +* `equal` + +* `ok` + +* `strictEqual` + +* `throws` + +(The reason for the restricted set of test functions is because we need the +tests to run inside Firefox's test suite as well and so the assert module is +shimmed in that environment. See `build/assert-shim.js`.) + +[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit +[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap +[Dryice]: https://github.com/mozilla/dryice diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js new file mode 100644 index 0000000..daa1a62 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js @@ -0,0 +1,56 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +define('test/source-map/assert', ['exports'], function (exports) { + + let do_throw = function (msg) { + throw new Error(msg); + }; + + exports.init = function (throw_fn) { + do_throw = throw_fn; + }; + + exports.doesNotThrow = function (fn) { + try { + fn(); + } + catch (e) { + do_throw(e.message); + } + }; + + exports.equal = function (actual, expected, msg) { + msg = msg || String(actual) + ' != ' + String(expected); + if (actual != expected) { + do_throw(msg); + } + }; + + exports.ok = function (val, msg) { + msg = msg || String(val) + ' is falsey'; + if (!Boolean(val)) { + do_throw(msg); + } + }; + + exports.strictEqual = function (actual, expected, msg) { + msg = msg || String(actual) + ' !== ' + String(expected); + if (actual !== expected) { + do_throw(msg); + } + }; + + exports.throws = function (fn) { + try { + fn(); + do_throw('Expected an error to be thrown, but it wasn\'t.'); + } + catch (e) { + } + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js new file mode 100644 index 0000000..0daf453 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js @@ -0,0 +1,152 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * Define a module along with a payload. + * @param {string} moduleName Name for the payload + * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec + * @param {function} payload Function with (require, exports, module) params + */ +function define(moduleName, deps, payload) { + if (typeof moduleName != "string") { + throw new TypeError('Expected string, got: ' + moduleName); + } + + if (arguments.length == 2) { + payload = deps; + } + + if (moduleName in define.modules) { + throw new Error("Module already defined: " + moduleName); + } + define.modules[moduleName] = payload; +}; + +/** + * The global store of un-instantiated modules + */ +define.modules = {}; + + +/** + * We invoke require() in the context of a Domain so we can have multiple + * sets of modules running separate from each other. + * This contrasts with JSMs which are singletons, Domains allows us to + * optionally load a CommonJS module twice with separate data each time. + * Perhaps you want 2 command lines with a different set of commands in each, + * for example. + */ +function Domain() { + this.modules = {}; + this._currentModule = null; +} + +(function () { + + /** + * Lookup module names and resolve them by calling the definition function if + * needed. + * There are 2 ways to call this, either with an array of dependencies and a + * callback to call when the dependencies are found (which can happen + * asynchronously in an in-page context) or with a single string an no callback + * where the dependency is resolved synchronously and returned. + * The API is designed to be compatible with the CommonJS AMD spec and + * RequireJS. + * @param {string[]|string} deps A name, or names for the payload + * @param {function|undefined} callback Function to call when the dependencies + * are resolved + * @return {undefined|object} The module required or undefined for + * array/callback method + */ + Domain.prototype.require = function(deps, callback) { + if (Array.isArray(deps)) { + var params = deps.map(function(dep) { + return this.lookup(dep); + }, this); + if (callback) { + callback.apply(null, params); + } + return undefined; + } + else { + return this.lookup(deps); + } + }; + + function normalize(path) { + var bits = path.split('/'); + var i = 1; + while (i < bits.length) { + if (bits[i] === '..') { + bits.splice(i-1, 1); + } else if (bits[i] === '.') { + bits.splice(i, 1); + } else { + i++; + } + } + return bits.join('/'); + } + + function join(a, b) { + a = a.trim(); + b = b.trim(); + if (/^\//.test(b)) { + return b; + } else { + return a.replace(/\/*$/, '/') + b; + } + } + + function dirname(path) { + var bits = path.split('/'); + bits.pop(); + return bits.join('/'); + } + + /** + * Lookup module names and resolve them by calling the definition function if + * needed. + * @param {string} moduleName A name for the payload to lookup + * @return {object} The module specified by aModuleName or null if not found. + */ + Domain.prototype.lookup = function(moduleName) { + if (/^\./.test(moduleName)) { + moduleName = normalize(join(dirname(this._currentModule), moduleName)); + } + + if (moduleName in this.modules) { + var module = this.modules[moduleName]; + return module; + } + + if (!(moduleName in define.modules)) { + throw new Error("Module not defined: " + moduleName); + } + + var module = define.modules[moduleName]; + + if (typeof module == "function") { + var exports = {}; + var previousModule = this._currentModule; + this._currentModule = moduleName; + module(this.require.bind(this), exports, { id: moduleName, uri: "" }); + this._currentModule = previousModule; + module = exports; + } + + // cache the resulting module object for next time + this.modules[moduleName] = module; + + return module; + }; + +}()); + +define.Domain = Domain; +define.globalDomain = new Domain(); +var require = define.globalDomain.require.bind(define.globalDomain); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm new file mode 100644 index 0000000..ee2539d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm @@ -0,0 +1,20 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/* + * WARNING! + * + * Do not edit this file directly, it is built from the sources at + * https://github.com/mozilla/source-map/ + */ + +/////////////////////////////////////////////////////////////////////////////// + + +this.EXPORTED_SYMBOLS = [ "SourceMapConsumer", "SourceMapGenerator", "SourceNode" ]; + +Components.utils.import('resource://gre/modules/devtools/Require.jsm'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm new file mode 100644 index 0000000..80341d4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm @@ -0,0 +1,18 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/* + * WARNING! + * + * Do not edit this file directly, it is built from the sources at + * https://github.com/mozilla/source-map/ + */ + +Components.utils.import('resource://gre/modules/devtools/Require.jsm'); +Components.utils.import('resource://gre/modules/devtools/SourceMap.jsm'); + +this.EXPORTED_SYMBOLS = [ "define", "runSourceMapTests" ]; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js new file mode 100644 index 0000000..cf6cde7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js @@ -0,0 +1,8 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/////////////////////////////////////////////////////////////////////////////// + +window.sourceMap = { + SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer, + SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator, + SourceNode: require('source-map/source-node').SourceNode +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm new file mode 100644 index 0000000..cf3c2d8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm @@ -0,0 +1,6 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/////////////////////////////////////////////////////////////////////////////// + +this.SourceMapConsumer = require('source-map/source-map-consumer').SourceMapConsumer; +this.SourceMapGenerator = require('source-map/source-map-generator').SourceMapGenerator; +this.SourceNode = require('source-map/source-node').SourceNode; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm new file mode 100644 index 0000000..b31b84c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm @@ -0,0 +1,21 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +function runSourceMapTests(modName, do_throw) { + let mod = require(modName); + let assert = require('test/source-map/assert'); + let util = require('test/source-map/util'); + + assert.init(do_throw); + + for (let k in mod) { + if (/^test/.test(k)) { + mod[k](assert, util); + } + } + +} +this.runSourceMapTests = runSourceMapTests; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js new file mode 100644 index 0000000..1b13f30 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js @@ -0,0 +1,8 @@ +/* + * WARNING! + * + * Do not edit this file directly, it is built from the sources at + * https://github.com/mozilla/source-map/ + */ + +Components.utils.import('resource://test/Utils.jsm'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js new file mode 100644 index 0000000..bec2de3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js @@ -0,0 +1,3 @@ +function run_test() { + runSourceMapTests('{THIS_MODULE}', do_throw); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js new file mode 100644 index 0000000..121ad24 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js @@ -0,0 +1,8 @@ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator; +exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer; +exports.SourceNode = require('./source-map/source-node').SourceNode; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js new file mode 100644 index 0000000..f138ae7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js @@ -0,0 +1,96 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var util = require('./util'); + + /** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ + function ArraySet() { + this._array = []; + this._set = {}; + } + + /** + * Static method for creating ArraySet instances from an existing array. + */ + ArraySet.fromArray = function ArraySet_fromArray(aArray) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i]); + } + return set; + }; + + /** + * Add the given string to this set. + * + * @param String aStr + */ + ArraySet.prototype.add = function ArraySet_add(aStr) { + if (this.has(aStr)) { + // Already a member; nothing to do. + return; + } + var idx = this._array.length; + this._array.push(aStr); + this._set[util.toSetString(aStr)] = idx; + }; + + /** + * Is the given string a member of this set? + * + * @param String aStr + */ + ArraySet.prototype.has = function ArraySet_has(aStr) { + return Object.prototype.hasOwnProperty.call(this._set, + util.toSetString(aStr)); + }; + + /** + * What is the index of the given string in the array? + * + * @param String aStr + */ + ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (this.has(aStr)) { + return this._set[util.toSetString(aStr)]; + } + throw new Error('"' + aStr + '" is not in the set.'); + }; + + /** + * What is the element at the given index? + * + * @param Number aIdx + */ + ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); + }; + + /** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ + ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); + }; + + exports.ArraySet = ArraySet; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js new file mode 100644 index 0000000..a9dd758 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js @@ -0,0 +1,144 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var base64 = require('./base64'); + + // A single base 64 digit can contain 6 bits of data. For the base 64 variable + // length quantities we use in the source map spec, the first bit is the sign, + // the next four bits are the actual value, and the 6th bit is the + // continuation bit. The continuation bit tells us whether there are more + // digits in this value following this digit. + // + // Continuation + // | Sign + // | | + // V V + // 101011 + + var VLQ_BASE_SHIFT = 5; + + // binary: 100000 + var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + + // binary: 011111 + var VLQ_BASE_MASK = VLQ_BASE - 1; + + // binary: 100000 + var VLQ_CONTINUATION_BIT = VLQ_BASE; + + /** + * Converts from a two-complement value to a value where the sign bit is + * is placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ + function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; + } + + /** + * Converts to a two-complement value from a value where the sign bit is + * is placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ + function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; + } + + /** + * Returns the base 64 VLQ encoded value. + */ + exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; + }; + + /** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string. + */ + exports.decode = function base64VLQ_decode(aStr) { + var i = 0; + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (i >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + digit = base64.decode(aStr.charAt(i++)); + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + return { + value: fromVLQSigned(result), + rest: aStr.slice(i) + }; + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js new file mode 100644 index 0000000..397a754 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js @@ -0,0 +1,42 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var charToIntMap = {}; + var intToCharMap = {}; + + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' + .split('') + .forEach(function (ch, index) { + charToIntMap[ch] = index; + intToCharMap[index] = ch; + }); + + /** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ + exports.encode = function base64_encode(aNumber) { + if (aNumber in intToCharMap) { + return intToCharMap[aNumber]; + } + throw new TypeError("Must be between 0 and 63: " + aNumber); + }; + + /** + * Decode a single base 64 digit to an integer. + */ + exports.decode = function base64_decode(aChar) { + if (aChar in charToIntMap) { + return charToIntMap[aChar]; + } + throw new TypeError("Not a valid base 64 digit: " + aChar); + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js new file mode 100644 index 0000000..c6cb517 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js @@ -0,0 +1,81 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + /** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + */ + function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the next + // closest element that is less than that element. + // + // 3. We did not find the exact element, and there is no next-closest + // element which is less than the one we are searching for, so we + // return null. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid]); + if (cmp === 0) { + // Found the element we are looking for. + return aHaystack[mid]; + } + else if (cmp > 0) { + // aHaystack[mid] is greater than our needle. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare); + } + // We did not find an exact match, return the next closest one + // (termination case 2). + return aHaystack[mid]; + } + else { + // aHaystack[mid] is less than our needle. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare); + } + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (2) or (3) and return the appropriate thing. + return aLow < 0 + ? null + : aHaystack[aLow]; + } + } + + /** + * This is an implementation of binary search which will always try and return + * the next lowest value checked if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + */ + exports.search = function search(aNeedle, aHaystack, aCompare) { + return aHaystack.length > 0 + ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) + : null; + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js new file mode 100644 index 0000000..9da6f1c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js @@ -0,0 +1,426 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var util = require('./util'); + var binarySearch = require('./binary-search'); + var ArraySet = require('./array-set').ArraySet; + var base64VLQ = require('./base64-vlq'); + + /** + * A SourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The only parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ + function SourceMapConsumer(aSourceMap) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + var names = util.getArg(sourceMap, 'names'); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file'); + + if (version !== this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._names = ArraySet.fromArray(names); + this._sources = ArraySet.fromArray(sources); + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this.file = file; + + // `this._generatedMappings` and `this._originalMappings` hold the parsed + // mapping coordinates from the source map's "mappings" attribute. Each + // object in the array is of the form + // + // { + // generatedLine: The line number in the generated code, + // generatedColumn: The column number in the generated code, + // source: The path to the original source file that generated this + // chunk of code, + // originalLine: The line number in the original source that + // corresponds to this chunk of generated code, + // originalColumn: The column number in the original source that + // corresponds to this chunk of generated code, + // name: The name of the original symbol which generated this chunk of + // code. + // } + // + // All properties except for `generatedLine` and `generatedColumn` can be + // `null`. + // + // `this._generatedMappings` is ordered by the generated positions. + // + // `this._originalMappings` is ordered by the original positions. + this._generatedMappings = []; + this._originalMappings = []; + this._parseMappings(mappings, sourceRoot); + } + + /** + * The version of the source mapping spec that we are consuming. + */ + SourceMapConsumer.prototype._version = 3; + + /** + * The list of original sources. + */ + Object.defineProperty(SourceMapConsumer.prototype, 'sources', { + get: function () { + return this._sources.toArray().map(function (s) { + return this.sourceRoot ? util.join(this.sourceRoot, s) : s; + }, this); + } + }); + + /** + * Parse the mappings in a string in to a data structure which we can easily + * query (an ordered list in this._generatedMappings). + */ + SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var mappingSeparator = /^[,;]/; + var str = aStr; + var mapping; + var temp; + + while (str.length > 0) { + if (str.charAt(0) === ';') { + generatedLine++; + str = str.slice(1); + previousGeneratedColumn = 0; + } + else if (str.charAt(0) === ',') { + str = str.slice(1); + } + else { + mapping = {}; + mapping.generatedLine = generatedLine; + + // Generated column. + temp = base64VLQ.decode(str); + mapping.generatedColumn = previousGeneratedColumn + temp.value; + previousGeneratedColumn = mapping.generatedColumn; + str = temp.rest; + + if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { + // Original source. + temp = base64VLQ.decode(str); + mapping.source = this._sources.at(previousSource + temp.value); + previousSource += temp.value; + str = temp.rest; + if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { + throw new Error('Found a source, but no line and column'); + } + + // Original line. + temp = base64VLQ.decode(str); + mapping.originalLine = previousOriginalLine + temp.value; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + str = temp.rest; + if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { + throw new Error('Found a source and line, but no column'); + } + + // Original column. + temp = base64VLQ.decode(str); + mapping.originalColumn = previousOriginalColumn + temp.value; + previousOriginalColumn = mapping.originalColumn; + str = temp.rest; + + if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { + // Original name. + temp = base64VLQ.decode(str); + mapping.name = this._names.at(previousName + temp.value); + previousName += temp.value; + str = temp.rest; + } + } + + this._generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + this._originalMappings.push(mapping); + } + } + } + + this._originalMappings.sort(this._compareOriginalPositions); + }; + + /** + * Comparator between two mappings where the original positions are compared. + */ + SourceMapConsumer.prototype._compareOriginalPositions = + function SourceMapConsumer_compareOriginalPositions(mappingA, mappingB) { + if (mappingA.source > mappingB.source) { + return 1; + } + else if (mappingA.source < mappingB.source) { + return -1; + } + else { + var cmp = mappingA.originalLine - mappingB.originalLine; + return cmp === 0 + ? mappingA.originalColumn - mappingB.originalColumn + : cmp; + } + }; + + /** + * Comparator between two mappings where the generated positions are compared. + */ + SourceMapConsumer.prototype._compareGeneratedPositions = + function SourceMapConsumer_compareGeneratedPositions(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + return cmp === 0 + ? mappingA.generatedColumn - mappingB.generatedColumn + : cmp; + }; + + /** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ + SourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator); + }; + + /** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. + * - column: The column number in the generated source. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. + * - column: The column number in the original source, or null. + * - name: The original identifier, or null. + */ + SourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var mapping = this._findMapping(needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + this._compareGeneratedPositions); + + if (mapping) { + var source = util.getArg(mapping, 'source', null); + if (source && this.sourceRoot) { + source = util.join(this.sourceRoot, source); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: util.getArg(mapping, 'name', null) + }; + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + + /** + * Returns the original source content. The only argument is + * the url of the original source file. Returns null if no + * original source content is availible. + */ + SourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource) { + if (!this.sourcesContent) { + return null; + } + + if (this.sourceRoot) { + // Try to remove the sourceRoot + var relativeUrl = util.relative(this.sourceRoot, aSource); + if (this._sources.has(relativeUrl)) { + return this.sourcesContent[this._sources.indexOf(relativeUrl)]; + } + } + + if (this._sources.has(aSource)) { + return this.sourcesContent[this._sources.indexOf(aSource)]; + } + + throw new Error('"' + aSource + '" is not in the SourceMap.'); + }; + + /** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. + * - column: The column number in the original source. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. + * - column: The column number in the generated source, or null. + */ + SourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + if (this.sourceRoot) { + needle.source = util.relative(this.sourceRoot, needle.source); + } + + var mapping = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + this._compareOriginalPositions); + + if (mapping) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null) + }; + } + + return { + line: null, + column: null + }; + }; + + SourceMapConsumer.GENERATED_ORDER = 1; + SourceMapConsumer.ORIGINAL_ORDER = 2; + + /** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ + SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source; + if (source && sourceRoot) { + source = util.join(sourceRoot, source); + } + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name + }; + }).forEach(aCallback, context); + }; + + exports.SourceMapConsumer = SourceMapConsumer; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js new file mode 100644 index 0000000..b3f62f5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js @@ -0,0 +1,381 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var base64VLQ = require('./base64-vlq'); + var util = require('./util'); + var ArraySet = require('./array-set').ArraySet; + + /** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. To create a new one, you must pass an object + * with the following properties: + * + * - file: The filename of the generated source. + * - sourceRoot: An optional root for all URLs in this source map. + */ + function SourceMapGenerator(aArgs) { + this._file = util.getArg(aArgs, 'file'); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = []; + this._sourcesContents = null; + } + + SourceMapGenerator.prototype._version = 3; + + /** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ + SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source) { + newMapping.source = mapping.source; + if (sourceRoot) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + + /** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ + SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + this._validateMapping(generated, original, source, name); + + if (source && !this._sources.has(source)) { + this._sources.add(source); + } + + if (name && !this._names.has(name)) { + this._names.add(name); + } + + this._mappings.push({ + generated: generated, + original: original, + source: source, + name: name + }); + }; + + /** + * Set the source content for a source file. + */ + SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent !== null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = {}; + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + + /** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + */ + SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile) { + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (!aSourceFile) { + aSourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "aSourceFile" relative if an absolute Url is passed. + if (sourceRoot) { + aSourceFile = util.relative(sourceRoot, aSourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "aSourceFile" + this._mappings.forEach(function (mapping) { + if (mapping.source === aSourceFile && mapping.original) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.original.line, + column: mapping.original.column + }); + if (original.source !== null) { + // Copy mapping + if (sourceRoot) { + mapping.source = util.relative(sourceRoot, original.source); + } else { + mapping.source = original.source; + } + mapping.original.line = original.line; + mapping.original.column = original.column; + if (original.name !== null && mapping.name !== null) { + // Only use the identifier name if it's an identifier + // in both SourceMaps + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content) { + if (sourceRoot) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + + /** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ + SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping.'); + } + }; + + function cmpLocation(loc1, loc2) { + var cmp = (loc1 && loc1.line) - (loc2 && loc2.line); + return cmp ? cmp : (loc1 && loc1.column) - (loc2 && loc2.column); + } + + function strcmp(str1, str2) { + str1 = str1 || ''; + str2 = str2 || ''; + return (str1 > str2) - (str1 < str2); + } + + function cmpMapping(mappingA, mappingB) { + return cmpLocation(mappingA.generated, mappingB.generated) || + cmpLocation(mappingA.original, mappingB.original) || + strcmp(mappingA.source, mappingB.source) || + strcmp(mappingA.name, mappingB.name); + } + + /** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ + SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var mapping; + + // The mappings must be guarenteed to be in sorted order before we start + // serializing them or else the generated line numbers (which are defined + // via the ';' separators) will be all messed up. Note: it might be more + // performant to maintain the sorting as we insert them, rather than as we + // serialize them, but the big O is the same either way. + this._mappings.sort(cmpMapping); + + for (var i = 0, len = this._mappings.length; i < len; i++) { + mapping = this._mappings[i]; + + if (mapping.generated.line !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generated.line !== previousGeneratedLine) { + result += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!cmpMapping(mapping, this._mappings[i - 1])) { + continue; + } + result += ','; + } + } + + result += base64VLQ.encode(mapping.generated.column + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generated.column; + + if (mapping.source && mapping.original) { + result += base64VLQ.encode(this._sources.indexOf(mapping.source) + - previousSource); + previousSource = this._sources.indexOf(mapping.source); + + // lines are stored 0-based in SourceMap spec version 3 + result += base64VLQ.encode(mapping.original.line - 1 + - previousOriginalLine); + previousOriginalLine = mapping.original.line - 1; + + result += base64VLQ.encode(mapping.original.column + - previousOriginalColumn); + previousOriginalColumn = mapping.original.column; + + if (mapping.name) { + result += base64VLQ.encode(this._names.indexOf(mapping.name) + - previousName); + previousName = this._names.indexOf(mapping.name); + } + } + } + + return result; + }; + + /** + * Externalize the source map. + */ + SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + file: this._file, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._sourceRoot) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = map.sources.map(function (source) { + if (map.sourceRoot) { + source = util.relative(map.sourceRoot, source); + } + return Object.prototype.hasOwnProperty.call( + this._sourcesContents, util.toSetString(source)) + ? this._sourcesContents[util.toSetString(source)] + : null; + }, this); + } + return map; + }; + + /** + * Render the source map being generated to a string. + */ + SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this); + }; + + exports.SourceMapGenerator = SourceMapGenerator; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js new file mode 100644 index 0000000..4c3314a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js @@ -0,0 +1,353 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; + var util = require('./util'); + + /** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ + function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine === undefined ? null : aLine; + this.column = aColumn === undefined ? null : aColumn; + this.source = aSource === undefined ? null : aSource; + this.name = aName === undefined ? null : aName; + if (aChunks != null) this.add(aChunks); + } + + /** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + */ + SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // The generated code + // Processed fragments are removed from this array. + var remainingLines = aGeneratedCode.split('\n'); + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping === null) { + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(remainingLines.shift() + "\n"); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[0]; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[0] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + } else { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + var code = ""; + // Associate full lines with "lastMapping" + do { + code += remainingLines.shift() + "\n"; + lastGeneratedLine++; + lastGeneratedColumn = 0; + } while (lastGeneratedLine < mapping.generatedLine); + // When we reached the correct line, we add code until we + // reach the correct column too. + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[0]; + code += nextLine.substr(0, mapping.generatedColumn); + remainingLines[0] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + // Create the SourceNode. + addMappingWithCode(lastMapping, code); + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[0]; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[0] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + } + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + // Associate the remaining code in the current line with "lastMapping" + // and add the remaining lines without any mapping + addMappingWithCode(lastMapping, remainingLines.join("\n")); + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content) { + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping.source === undefined) { + node.add(code); + } else { + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + mapping.source, + code, + mapping.name)); + } + } + }; + + /** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk instanceof SourceNode || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ + SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk instanceof SourceNode || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; + }; + + /** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walk = function SourceNode_walk(aFn) { + this.children.forEach(function (chunk) { + if (chunk instanceof SourceNode) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + }, this); + }; + + /** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ + SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; + }; + + /** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ + SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild instanceof SourceNode) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; + }; + + /** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ + SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + + /** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ + SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + this.children.forEach(function (chunk) { + if (chunk instanceof SourceNode) { + chunk.walkSourceContents(aFn); + } + }, this); + Object.keys(this.sourceContents).forEach(function (sourceFileKey) { + aFn(util.fromSetString(sourceFileKey), this.sourceContents[sourceFileKey]); + }, this); + }; + + /** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ + SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; + }; + + /** + * Returns the string representation of this source node along with a source + * map. + */ + SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + sourceMappingActive = false; + } + chunk.split('').forEach(function (ch) { + if (ch === '\n') { + generated.line++; + generated.column = 0; + } else { + generated.column++; + } + }); + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; + }; + + exports.SourceNode = SourceNode; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js new file mode 100644 index 0000000..d59b257 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js @@ -0,0 +1,91 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + /** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ + function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } + } + exports.getArg = getArg; + + var urlRegexp = /([\w+\-.]+):\/\/((\w+:\w+)@)?([\w.]+)?(:(\d+))?(\S+)?/; + + function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[3], + host: match[4], + port: match[6], + path: match[7] + }; + } + + function join(aRoot, aPath) { + var url; + + if (aPath.match(urlRegexp)) { + return aPath; + } + + if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) { + return aRoot.replace(url.path, '') + aPath; + } + + return aRoot.replace(/\/$/, '') + '/' + aPath; + } + exports.join = join; + + /** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ + function toSetString(aStr) { + return '$' + aStr; + } + exports.toSetString = toSetString; + + function fromSetString(aStr) { + return aStr.substr(1); + } + exports.fromSetString = fromSetString; + + function relative(aRoot, aPath) { + aRoot = aRoot.replace(/\/$/, ''); + return aPath.indexOf(aRoot + '/') === 0 + ? aPath.substr(aRoot.length + 1) + : aPath; + } + exports.relative = relative; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE new file mode 100644 index 0000000..f33d665 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE @@ -0,0 +1,58 @@ +amdefine is released under two licenses: new BSD, and MIT. You may pick the +license that best suits your development needs. The text of both licenses are +provided below. + + +The "New" BSD License: +---------------------- + +Copyright (c) 2011, The Dojo Foundation +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the Dojo Foundation nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +MIT License +----------- + +Copyright (c) 2011, The Dojo Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md new file mode 100644 index 0000000..8ebbc73 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md @@ -0,0 +1,119 @@ +# amdefine + +A module that can be used to implement AMD's define() in Node. This allows you +to code to the AMD API and have the module work in node programs without +requiring those other programs to use AMD. + +## Usage + +**1)** Update your package.json to indicate amdefine as a dependency: + +```javascript + "dependencies": { + "amdefine": ">=0.0.5" + } +``` + +Then run `npm install` to get amdefine into your project. + +**2)** At the top of each module that uses define(), place this code: + +```javascript +if (typeof define !== 'function') { var define = require('amdefine')(module) } +``` + +**Only use these snippets** when loading amdefine. If you preserve the basic structure, +with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer). + +You can add spaces, line breaks and even require amdefine with a local path, but +keep the rest of the structure to get the stripping behavior. + +As you may know, because `if` statements in JavaScript don't have their own scope, the var +declaration in the above snippet is made whether the `if` expression is truthy or not. If +RequireJS is loaded then the declaration is superfluous because `define` is already already +declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var` +declarations of the same variable in the same scope gracefully. + +If you want to deliver amdefine.js with your code rather than specifying it as a dependency +with npm, then just download the latest release and refer to it using a relative path: + +[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js) + +## define() usage + +It is best if you use the anonymous forms of define() in your module: + +```javascript +define(function (require) { + var dependency = require('dependency'); +}); +``` + +or + +```javascript +define(['dependency'], function (dependency) { + +}); +``` + +## RequireJS optimizer integration.
    + +Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html) +will have support for stripping the `if (typeof define !== 'function')` check +mentioned above, so you can include this snippet for code that runs in the +browser, but avoid taking the cost of the if() statement once the code is +optimized for deployment. + +## Node 0.4 Support + +If you want to support Node 0.4, then add `require` as the second parameter to amdefine: + +```javascript +//Only if you want Node 0.4. If using 0.5 or later, use the above snippet. +if (typeof define !== 'function') { var define = require('amdefine')(module, require) } +``` + +## Limitations + +### Synchronous vs Asynchronous + +amdefine creates a define() function that is callable by your code. It will +execute and trace dependencies and call the factory function *synchronously*, +to keep the behavior in line with Node's synchronous dependency tracing. + +The exception: calling AMD's callback-style require() from inside a factory +function. The require callback is called on process.nextTick(): + +```javascript +define(function (require) { + require(['a'], function(a) { + //'a' is loaded synchronously, but + //this callback is called on process.nextTick(). + }); +}); +``` + +### Loader Plugins + +Loader plugins are supported as long as they call their load() callbacks +synchronously. So ones that do network requests will not work. However plugins +like [text](http://requirejs.org/docs/api.html#text) can load text files locally. + +The plugin API's `load.fromText()` is **not supported** in amdefine, so this means +transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs) +will not work. This may be fixable, but it is a bit complex, and I do not have +enough node-fu to figure it out yet. See the source for amdefine.js if you want +to get an idea of the issues involved. + +## Tests + +To run the tests, cd to **tests** and run: + +``` +node all.js +``` + +## License + +New BSD and MIT. Check the LICENSE file for all the details. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js new file mode 100644 index 0000000..d074c94 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js @@ -0,0 +1,299 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license amdefine 0.0.5 Copyright (c) 2011, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/amdefine for details + */ + +/*jslint node: true */ +/*global module, process */ +'use strict'; + +var path = require('path'); + +/** + * Creates a define for node. + * @param {Object} module the "module" object that is defined by Node for the + * current module. + * @param {Function} [require]. Node's require function for the current module. + * It only needs to be passed in Node versions before 0.5, when module.require + * did not exist. + * @returns {Function} a define function that is usable for the current node + * module. + */ +function amdefine(module, require) { + var defineCache = {}, + loaderCache = {}, + alreadyCalled = false, + makeRequire, stringRequire; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part; + for (i = 0; ary[i]; i+= 1) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { + //End of the line. Keep at least one non-dot + //path segment at the front so it can be mapped + //correctly to disk. Otherwise, there is likely + //no path mapping for a path starting with '..'. + //This can still fail, but catches the most reasonable + //uses of .. + break; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + function normalize(name, baseName) { + var baseParts; + + //Adjust any relative paths. + if (name && name.charAt(0) === '.') { + //If have a base name, try to normalize against it, + //otherwise, assume it is a top-level require that will + //be relative to baseUrl in the end. + if (baseName) { + baseParts = baseName.split('/'); + baseParts = baseParts.slice(0, baseParts.length - 1); + baseParts = baseParts.concat(name.split('/')); + trimDots(baseParts); + name = baseParts.join('/'); + } + } + + return name; + } + + /** + * Create the normalize() function passed to a loader plugin's + * normalize method. + */ + function makeNormalize(relName) { + return function (name) { + return normalize(name, relName); + }; + } + + function makeLoad(id) { + function load(value) { + loaderCache[id] = value; + } + + load.fromText = function (id, text) { + //This one is difficult because the text can/probably uses + //define, and any relative paths and requires should be relative + //to that id was it would be found on disk. But this would require + //bootstrapping a module/require fairly deeply from node core. + //Not sure how best to go about that yet. + throw new Error('amdefine does not implement load.fromText'); + }; + + return load; + } + + makeRequire = function (systemRequire, exports, module, relId) { + function amdRequire(deps, callback) { + if (typeof deps === 'string') { + //Synchronous, single module require('') + return stringRequire(systemRequire, exports, module, deps, relId); + } else { + //Array of dependencies with a callback. + + //Convert the dependencies to modules. + deps = deps.map(function (depName) { + return stringRequire(systemRequire, exports, module, depName, relId); + }); + + //Wait for next tick to call back the require call. + process.nextTick(function () { + callback.apply(null, deps); + }); + } + } + + amdRequire.toUrl = function (filePath) { + if (filePath.indexOf('.') === 0) { + return normalize(filePath, path.dirname(module.filename)); + } else { + return filePath; + } + }; + + return amdRequire; + }; + + //Favor explicit value, passed in if the module wants to support Node 0.4. + require = require || function req() { + return module.require.apply(module, arguments); + }; + + function runFactory(id, deps, factory) { + var r, e, m, result; + + if (id) { + e = loaderCache[id] = {}; + m = { + id: id, + uri: __filename, + exports: e + }; + r = makeRequire(require, e, m, id); + } else { + //Only support one define call per file + if (alreadyCalled) { + throw new Error('amdefine with no module ID cannot be called more than once per file.'); + } + alreadyCalled = true; + + //Use the real variables from node + //Use module.exports for exports, since + //the exports in here is amdefine exports. + e = module.exports; + m = module; + r = makeRequire(require, e, m, module.id); + } + + //If there are dependencies, they are strings, so need + //to convert them to dependency values. + if (deps) { + deps = deps.map(function (depName) { + return r(depName); + }); + } + + //Call the factory with the right dependencies. + if (typeof factory === 'function') { + result = factory.apply(module.exports, deps); + } else { + result = factory; + } + + if (result !== undefined) { + m.exports = result; + if (id) { + loaderCache[id] = m.exports; + } + } + } + + stringRequire = function (systemRequire, exports, module, id, relId) { + //Split the ID by a ! so that + var index = id.indexOf('!'), + originalId = id, + prefix, plugin; + + if (index === -1) { + id = normalize(id, relId); + + //Straight module lookup. If it is one of the special dependencies, + //deal with it, otherwise, delegate to node. + if (id === 'require') { + return makeRequire(systemRequire, exports, module, relId); + } else if (id === 'exports') { + return exports; + } else if (id === 'module') { + return module; + } else if (loaderCache.hasOwnProperty(id)) { + return loaderCache[id]; + } else if (defineCache[id]) { + runFactory.apply(null, defineCache[id]); + return loaderCache[id]; + } else { + if(systemRequire) { + return systemRequire(originalId); + } else { + throw new Error('No module with ID: ' + id); + } + } + } else { + //There is a plugin in play. + prefix = id.substring(0, index); + id = id.substring(index + 1, id.length); + + plugin = stringRequire(systemRequire, exports, module, prefix, relId); + + if (plugin.normalize) { + id = plugin.normalize(id, makeNormalize(relId)); + } else { + //Normalize the ID normally. + id = normalize(id, relId); + } + + if (loaderCache[id]) { + return loaderCache[id]; + } else { + plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {}); + + return loaderCache[id]; + } + } + }; + + //Create a define function specific to the module asking for amdefine. + function define(id, deps, factory) { + if (Array.isArray(id)) { + factory = deps; + deps = id; + id = undefined; + } else if (typeof id !== 'string') { + factory = id; + id = deps = undefined; + } + + if (deps && !Array.isArray(deps)) { + factory = deps; + deps = undefined; + } + + if (!deps) { + deps = ['require', 'exports', 'module']; + } + + //Set up properties for this module. If an ID, then use + //internal cache. If no ID, then use the external variables + //for this node module. + if (id) { + //Put the module in deep freeze until there is a + //require call for it. + defineCache[id] = [id, deps, factory]; + } else { + runFactory(id, deps, factory); + } + } + + //define.require, which has access to all the values in the + //cache. Useful for AMD modules that all have IDs in the file, + //but need to finally export a value to node based on one of those + //IDs. + define.require = function (id) { + if (loaderCache[id]) { + return loaderCache[id]; + } + + if (defineCache[id]) { + runFactory.apply(null, defineCache[id]); + return loaderCache[id]; + } + }; + + define.amd = {}; + + return define; +} + +module.exports = amdefine; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json new file mode 100644 index 0000000..0610cd1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json @@ -0,0 +1,36 @@ +{ + "name": "amdefine", + "description": "Provide AMD's define() API for declaring modules in the AMD format", + "version": "0.0.5", + "homepage": "http://github.com/jrburke/amdefine", + "author": { + "name": "James Burke", + "email": "jrburke@gmail.com", + "url": "http://github.com/jrburke" + }, + "licenses": [ + { + "type": "BSD", + "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" + }, + { + "type": "MIT", + "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" + } + ], + "repository": { + "type": "git", + "url": "https://github.com/jrburke/amdefine.git" + }, + "main": "./amdefine.js", + "engines": { + "node": ">=0.4.2" + }, + "readme": "# amdefine\n\nA module that can be used to implement AMD's define() in Node. This allows you\nto code to the AMD API and have the module work in node programs without\nrequiring those other programs to use AMD.\n\n## Usage\n\n**1)** Update your package.json to indicate amdefine as a dependency:\n\n```javascript\n \"dependencies\": {\n \"amdefine\": \">=0.0.5\"\n }\n```\n\nThen run `npm install` to get amdefine into your project.\n\n**2)** At the top of each module that uses define(), place this code:\n\n```javascript\nif (typeof define !== 'function') { var define = require('amdefine')(module) }\n```\n\n**Only use these snippets** when loading amdefine. If you preserve the basic structure,\nwith the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).\n\nYou can add spaces, line breaks and even require amdefine with a local path, but\nkeep the rest of the structure to get the stripping behavior.\n\nAs you may know, because `if` statements in JavaScript don't have their own scope, the var\ndeclaration in the above snippet is made whether the `if` expression is truthy or not. If\nRequireJS is loaded then the declaration is superfluous because `define` is already already\ndeclared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`\ndeclarations of the same variable in the same scope gracefully.\n\nIf you want to deliver amdefine.js with your code rather than specifying it as a dependency\nwith npm, then just download the latest release and refer to it using a relative path:\n\n[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)\n\n## define() usage\n\nIt is best if you use the anonymous forms of define() in your module:\n\n```javascript\ndefine(function (require) {\n var dependency = require('dependency');\n});\n```\n\nor\n\n```javascript\ndefine(['dependency'], function (dependency) {\n\n});\n```\n\n## RequireJS optimizer integration. \n\nVersion 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)\nwill have support for stripping the `if (typeof define !== 'function')` check\nmentioned above, so you can include this snippet for code that runs in the\nbrowser, but avoid taking the cost of the if() statement once the code is\noptimized for deployment.\n\n## Node 0.4 Support\n\nIf you want to support Node 0.4, then add `require` as the second parameter to amdefine:\n\n```javascript\n//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.\nif (typeof define !== 'function') { var define = require('amdefine')(module, require) }\n```\n\n## Limitations\n\n### Synchronous vs Asynchronous\n\namdefine creates a define() function that is callable by your code. It will\nexecute and trace dependencies and call the factory function *synchronously*,\nto keep the behavior in line with Node's synchronous dependency tracing.\n\nThe exception: calling AMD's callback-style require() from inside a factory\nfunction. The require callback is called on process.nextTick():\n\n```javascript\ndefine(function (require) {\n require(['a'], function(a) {\n //'a' is loaded synchronously, but\n //this callback is called on process.nextTick().\n });\n});\n```\n\n### Loader Plugins\n\nLoader plugins are supported as long as they call their load() callbacks\nsynchronously. So ones that do network requests will not work. However plugins\nlike [text](http://requirejs.org/docs/api.html#text) can load text files locally.\n\nThe plugin API's `load.fromText()` is **not supported** in amdefine, so this means\ntranspiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)\nwill not work. This may be fixable, but it is a bit complex, and I do not have\nenough node-fu to figure it out yet. See the source for amdefine.js if you want\nto get an idea of the issues involved.\n\n## Tests\n\nTo run the tests, cd to **tests** and run:\n\n```\nnode all.js\n```\n\n## License\n\nNew BSD and MIT. Check the LICENSE file for all the details.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/jrburke/amdefine/issues" + }, + "_id": "amdefine@0.0.5", + "_from": "amdefine@>=0.0.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json new file mode 100644 index 0000000..c863c33 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json @@ -0,0 +1,77 @@ +{ + "name": "source-map", + "description": "Generates and consumes source maps", + "version": "0.1.22", + "homepage": "https://github.com/mozilla/source-map", + "author": { + "name": "Nick Fitzgerald", + "email": "nfitzgerald@mozilla.com" + }, + "contributors": [ + { + "name": "Stephen Crane" + }, + { + "name": "Ryan Seddon" + }, + { + "name": "Mihai Bazon", + "email": "mihai.bazon@gmail.com" + }, + { + "name": "Michael Ficarra", + "email": "github.public.email@michael.ficarra.me" + }, + { + "name": "Todd Wolfson", + "email": "todd@twolfson.com" + }, + { + "name": "Alexander Solovyov", + "email": "alexander@solovyov.net" + }, + { + "name": "Felix Gnass" + }, + { + "name": "Conrad Irwin", + "email": "conrad.irwin@gmail.com" + }, + { + "name": "github.com/usrbincc" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/mozilla/source-map.git" + }, + "directories": { + "lib": "./lib" + }, + "main": "./lib/source-map.js", + "engines": { + "node": ">=0.8.0" + }, + "licenses": [ + { + "type": "BSD", + "url": "http://opensource.org/licenses/BSD-3-Clause" + } + ], + "dependencies": { + "amdefine": ">=0.0.4" + }, + "devDependencies": { + "dryice": ">=0.4.8" + }, + "scripts": { + "test": "node test/run-tests.js" + }, + "readme": "# Source Map\n\nThis is a library to generate and consume the source map format\n[described here][format].\n\n[Learn more here][feature].\n\nThis library was written in the Asynchronous Module Definition\nformat. It should work in the following environments:\n\n* Modern Browsers (either after the build, or with an AMD loader such as\n RequireJS)\n\n* Inside Firefox (as a JSM file, after the build)\n\n* With NodeJS versions 0.8.X and higher\n\n## Installing with NPM (for use with NodeJS)\n\nSimply\n\n $ npm install source-map\n\nOr, if you'd like to hack on this library and have it installed via npm so you\ncan try out your changes:\n\n $ git clone https://fitzgen@github.com/mozilla/source-map.git\n $ cd source-map\n $ npm link .\n\n## Building from Source (for everywhere else)\n\nInstall Node and then run\n\n $ git clone https://fitzgen@github.com/mozilla/source-map.git\n $ cd source-map\n $ npm link .\n\nNext, run\n\n $ node Makefile.dryice.js`\n\nThis should create the following files:\n\n* `dist/source-map.js` - The unminified browser version.\n\n* `dist/source-map.min.js` - The minified browser version.\n\n* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox\n source.\n\n## API\n\nGet a reference to the module:\n\n // NodeJS\n var sourceMap = require('source-map');\n\n // Browser builds\n var sourceMap = window.sourceMap;\n\n // Inside Firefox\n let sourceMap = {};\n Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap);\n\n### SourceMapConsumer\n\nA SourceMapConsumer instance represents a parsed source map which we can query\nfor information about the original file positions by giving it a file position\nin the generated source.\n\n#### new SourceMapConsumer(rawSourceMap)\n\nThe only parameter is the raw source map (either as a string which can be\n`JSON.parse`'d, or an object). According to the spec, source maps have the\nfollowing attributes:\n\n* `version`: Which version of the source map spec this map is following.\n\n* `sources`: An array of URLs to the original source files.\n\n* `names`: An array of identifiers which can be referrenced by individual\n mappings.\n\n* `sourceRoot`: Optional. The URL root from which all sources are relative.\n\n* `sourcesContent`: Optional. An array of contents of the original source files.\n\n* `mappings`: A string of base64 VLQs which contain the actual mappings.\n\n* `file`: The generated filename this source map is associated with.\n\n#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)\n\nReturns the original source, line, and column information for the generated\nsource's line and column positions provided. The only argument is an object with\nthe following properties:\n\n* `line`: The line number in the generated source.\n\n* `column`: The column number in the generated source.\n\nand an object is returned with the following properties:\n\n* `source`: The original source file, or null if this information is not\n available.\n\n* `line`: The line number in the original source, or null if this information is\n not available.\n\n* `column`: The column number in the original source, or null or null if this\n information is not available.\n\n* `name`: The original identifier, or null if this information is not available.\n\n#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition)\n\nReturns the generated line and column information for the original source,\nline, and column positions provided. The only argument is an object with\nthe following properties:\n\n* `source`: The filename of the original source.\n\n* `line`: The line number in the original source.\n\n* `column`: The column number in the original source.\n\nand an object is returned with the following properties:\n\n* `line`: The line number in the generated source, or null.\n\n* `column`: The column number in the generated source, or null.\n\n#### SourceMapConsumer.prototype.sourceContentFor(source)\n\nReturns the original source content for the source provided. The only\nargument is the URL of the original source file.\n\n#### SourceMapConsumer.prototype.eachMapping(callback, context, order)\n\nIterate over each mapping between an original source/line/column and a\ngenerated line/column in this source map.\n\n* `callback`: The function that is called with each mapping.\n\n* `context`: Optional. If specified, this object will be the value of `this`\n every time that `callback` is called.\n\n* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or\n `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over\n the mappings sorted by the generated file's line/column order or the\n original's source/line/column order, respectively. Defaults to\n `SourceMapConsumer.GENERATED_ORDER`.\n\n### SourceMapGenerator\n\nAn instance of the SourceMapGenerator represents a source map which is being\nbuilt incrementally.\n\n#### new SourceMapGenerator(startOfSourceMap)\n\nTo create a new one, you must pass an object with the following properties:\n\n* `file`: The filename of the generated source that this source map is\n associated with.\n\n* `sourceRoot`: An optional root for all relative URLs in this source map.\n\n#### SourceMapGenerator.fromSourceMap(sourceMapConsumer)\n\nCreates a new SourceMapGenerator based on a SourceMapConsumer\n\n* `sourceMapConsumer` The SourceMap.\n\n#### SourceMapGenerator.prototype.addMapping(mapping)\n\nAdd a single mapping from original source line and column to the generated\nsource's line and column for this source map being created. The mapping object\nshould have the following properties:\n\n* `generated`: An object with the generated line and column positions.\n\n* `original`: An object with the original line and column positions.\n\n* `source`: The original source file (relative to the sourceRoot).\n\n* `name`: An optional original token name for this mapping.\n\n#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)\n\nSet the source content for an original source file.\n\n* `sourceFile` the URL of the original source file.\n\n* `sourceContent` the content of the source file.\n\n#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile])\n\nApplies a SourceMap for a source file to the SourceMap.\nEach mapping to the supplied source file is rewritten using the\nsupplied SourceMap. Note: The resolution for the resulting mappings\nis the minimium of this map and the supplied map.\n\n* `sourceMapConsumer`: The SourceMap to be applied.\n\n* `sourceFile`: Optional. The filename of the source file.\n If omitted, sourceMapConsumer.file will be used.\n\n#### SourceMapGenerator.prototype.toString()\n\nRenders the source map being generated to a string.\n\n### SourceNode\n\nSourceNodes provide a way to abstract over interpolating and/or concatenating\nsnippets of generated JavaScript source code, while maintaining the line and\ncolumn information associated between those snippets and the original source\ncode. This is useful as the final intermediate representation a compiler might\nuse before outputting the generated JS and source map.\n\n#### new SourceNode(line, column, source[, chunk[, name]])\n\n* `line`: The original line number associated with this source node, or null if\n it isn't associated with an original line.\n\n* `column`: The original column number associated with this source node, or null\n if it isn't associated with an original column.\n\n* `source`: The original source's filename.\n\n* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see\n below.\n\n* `name`: Optional. The original identifier.\n\n#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer)\n\nCreates a SourceNode from generated code and a SourceMapConsumer.\n\n* `code`: The generated code\n\n* `sourceMapConsumer` The SourceMap for the generated code\n\n#### SourceNode.prototype.add(chunk)\n\nAdd a chunk of generated JS to this source node.\n\n* `chunk`: A string snippet of generated JS code, another instance of\n `SourceNode`, or an array where each member is one of those things.\n\n#### SourceNode.prototype.prepend(chunk)\n\nPrepend a chunk of generated JS to this source node.\n\n* `chunk`: A string snippet of generated JS code, another instance of\n `SourceNode`, or an array where each member is one of those things.\n\n#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent)\n\nSet the source content for a source file. This will be added to the\n`SourceMap` in the `sourcesContent` field.\n\n* `sourceFile`: The filename of the source file\n\n* `sourceContent`: The content of the source file\n\n#### SourceNode.prototype.walk(fn)\n\nWalk over the tree of JS snippets in this node and its children. The walking\nfunction is called once for each snippet of JS and is passed that snippet and\nthe its original associated source's line/column location.\n\n* `fn`: The traversal function.\n\n#### SourceNode.prototype.walkSourceContents(fn)\n\nWalk over the tree of SourceNodes. The walking function is called for each\nsource file content and is passed the filename and source content.\n\n* `fn`: The traversal function.\n\n#### SourceNode.prototype.join(sep)\n\nLike `Array.prototype.join` except for SourceNodes. Inserts the separator\nbetween each of this source node's children.\n\n* `sep`: The separator.\n\n#### SourceNode.prototype.replaceRight(pattern, replacement)\n\nCall `String.prototype.replace` on the very right-most source snippet. Useful\nfor trimming whitespace from the end of a source node, etc.\n\n* `pattern`: The pattern to replace.\n\n* `replacement`: The thing to replace the pattern with.\n\n#### SourceNode.prototype.toString()\n\nReturn the string representation of this source node. Walks over the tree and\nconcatenates all the various snippets together to one string.\n\n### SourceNode.prototype.toStringWithSourceMap(startOfSourceMap)\n\nReturns the string representation of this tree of source nodes, plus a\nSourceMapGenerator which contains all the mappings between the generated and\noriginal sources.\n\nThe arguments are the same as those to `new SourceMapGenerator`.\n\n## Tests\n\n[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map)\n\nInstall NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`.\n\nTo add new tests, create a new file named `test/test-.js`\nand export your test functions with names that start with \"test\", for example\n\n exports[\"test doing the foo bar\"] = function (assert, util) {\n ...\n };\n\nThe new test will be located automatically when you run the suite.\n\nThe `util` argument is the test utility module located at `test/source-map/util`.\n\nThe `assert` argument is a cut down version of node's assert module. You have\naccess to the following assertion functions:\n\n* `doesNotThrow`\n\n* `equal`\n\n* `ok`\n\n* `strictEqual`\n\n* `throws`\n\n(The reason for the restricted set of test functions is because we need the\ntests to run inside Firefox's test suite as well and so the assert module is\nshimmed in that environment. See `build/assert-shim.js`.)\n\n[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\n[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap\n[Dryice]: https://github.com/mozilla/dryice\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/mozilla/source-map/issues" + }, + "_id": "source-map@0.1.22", + "_from": "source-map@~0.1.7" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js new file mode 100644 index 0000000..8bf2256 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js @@ -0,0 +1,73 @@ +#!/usr/bin/env node +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +var assert = require('assert'); +var fs = require('fs'); +var path = require('path'); +var util = require('./source-map/util'); + +function run(tests) { + var failures = []; + var total = 0; + var passed = 0; + + for (var i = 0; i < tests.length; i++) { + for (var k in tests[i].testCase) { + if (/^test/.test(k)) { + total++; + try { + tests[i].testCase[k](assert, util); + passed++; + process.stdout.write('.'); + } + catch (e) { + failures.push({ + name: tests[i].name + ': ' + k, + error: e + }); + process.stdout.write('E'); + } + } + } + } + + process.stdout.write('\n'); + console.log(passed + ' / ' + total + ' tests passed.'); + + failures.forEach(function (f) { + console.log('================================================================================'); + console.log(f.name); + console.log('--------------------------------------------------------------------------------'); + console.log(f.error.stack); + }); + + return failures.length; +} + +var code; + +process.stdout.on('close', function () { + process.exit(code); +}); + +function isTestFile(f) { + return /^test\-.*?\.js/.test(f); +} + +function toModule(f) { + return './source-map/' + f.replace(/\.js$/, ''); +} + +var requires = fs.readdirSync(path.join(__dirname, 'source-map')).filter(isTestFile).map(toModule); + +code = run(requires.map(require).map(function (mod, i) { + return { + name: requires[i], + testCase: mod + }; +})); +process.exit(code); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js new file mode 100644 index 0000000..63eb45a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js @@ -0,0 +1,26 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2012 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var sourceMap; + try { + sourceMap = require('../../lib/source-map'); + } catch (e) { + sourceMap = {}; + Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); + } + + exports['test that the api is properly exposed in the top level'] = function (assert, util) { + assert.equal(typeof sourceMap.SourceMapGenerator, "function"); + assert.equal(typeof sourceMap.SourceMapConsumer, "function"); + assert.equal(typeof sourceMap.SourceNode, "function"); + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js new file mode 100644 index 0000000..c4e88d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js @@ -0,0 +1,71 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var ArraySet = require('../../lib/source-map/array-set').ArraySet; + + function makeTestSet() { + var set = new ArraySet(); + for (var i = 0; i < 100; i++) { + set.add(String(i)); + } + return set; + } + + exports['test .has() membership'] = function (assert, util) { + var set = makeTestSet(); + for (var i = 0; i < 100; i++) { + assert.ok(set.has(String(i))); + } + }; + + exports['test .indexOf() elements'] = function (assert, util) { + var set = makeTestSet(); + for (var i = 0; i < 100; i++) { + assert.strictEqual(set.indexOf(String(i)), i); + } + }; + + exports['test .at() indexing'] = function (assert, util) { + var set = makeTestSet(); + for (var i = 0; i < 100; i++) { + assert.strictEqual(set.at(i), String(i)); + } + }; + + exports['test creating from an array'] = function (assert, util) { + var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); + + assert.ok(set.has('foo')); + assert.ok(set.has('bar')); + assert.ok(set.has('baz')); + assert.ok(set.has('quux')); + assert.ok(set.has('hasOwnProperty')); + + assert.strictEqual(set.indexOf('foo'), 0); + assert.strictEqual(set.indexOf('bar'), 1); + assert.strictEqual(set.indexOf('baz'), 2); + assert.strictEqual(set.indexOf('quux'), 3); + + assert.strictEqual(set.at(0), 'foo'); + assert.strictEqual(set.at(1), 'bar'); + assert.strictEqual(set.at(2), 'baz'); + assert.strictEqual(set.at(3), 'quux'); + }; + + exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { + var set = new ArraySet(); + set.add('__proto__'); + assert.ok(set.has('__proto__')); + assert.strictEqual(set.at(0), '__proto__'); + assert.strictEqual(set.indexOf('__proto__'), 0); + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js new file mode 100644 index 0000000..7100da3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js @@ -0,0 +1,24 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var base64VLQ = require('../../lib/source-map/base64-vlq'); + + exports['test normal encoding and decoding'] = function (assert, util) { + var result; + for (var i = -255; i < 256; i++) { + result = base64VLQ.decode(base64VLQ.encode(i)); + assert.ok(result); + assert.equal(result.value, i); + assert.equal(result.rest, ""); + } + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js new file mode 100644 index 0000000..23e0f88 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js @@ -0,0 +1,35 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var base64 = require('../../lib/source-map/base64'); + + exports['test out of range encoding'] = function (assert, util) { + assert.throws(function () { + base64.encode(-1); + }); + assert.throws(function () { + base64.encode(64); + }); + }; + + exports['test out of range decoding'] = function (assert, util) { + assert.throws(function () { + base64.decode('='); + }); + }; + + exports['test normal encoding and decoding'] = function (assert, util) { + for (var i = 0; i < 64; i++) { + assert.equal(base64.decode(base64.encode(i)), i); + } + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js new file mode 100644 index 0000000..41d0bf8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js @@ -0,0 +1,54 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var binarySearch = require('../../lib/source-map/binary-search'); + + function numberCompare(a, b) { + return a - b; + } + + exports['test too high'] = function (assert, util) { + var needle = 30; + var haystack = [2,4,6,8,10,12,14,16,18,20]; + + assert.doesNotThrow(function () { + binarySearch.search(needle, haystack, numberCompare); + }); + + assert.equal(binarySearch.search(needle, haystack, numberCompare), 20); + }; + + exports['test too low'] = function (assert, util) { + var needle = 1; + var haystack = [2,4,6,8,10,12,14,16,18,20]; + + assert.doesNotThrow(function () { + binarySearch.search(needle, haystack, numberCompare); + }); + + assert.equal(binarySearch.search(needle, haystack, numberCompare), null); + }; + + exports['test exact search'] = function (assert, util) { + var needle = 4; + var haystack = [2,4,6,8,10,12,14,16,18,20]; + + assert.equal(binarySearch.search(needle, haystack, numberCompare), 4); + }; + + exports['test fuzzy search'] = function (assert, util) { + var needle = 19; + var haystack = [2,4,6,8,10,12,14,16,18,20]; + + assert.equal(binarySearch.search(needle, haystack, numberCompare), 18); + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js new file mode 100644 index 0000000..d433bf6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js @@ -0,0 +1,72 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; + var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; + + exports['test eating our own dog food'] = function (assert, util) { + var smg = new SourceMapGenerator({ + file: 'testing.js', + sourceRoot: '/wu/tang' + }); + + smg.addMapping({ + source: 'gza.coffee', + original: { line: 1, column: 0 }, + generated: { line: 2, column: 2 } + }); + + smg.addMapping({ + source: 'gza.coffee', + original: { line: 2, column: 0 }, + generated: { line: 3, column: 2 } + }); + + smg.addMapping({ + source: 'gza.coffee', + original: { line: 3, column: 0 }, + generated: { line: 4, column: 2 } + }); + + smg.addMapping({ + source: 'gza.coffee', + original: { line: 4, column: 0 }, + generated: { line: 5, column: 2 } + }); + + var smc = new SourceMapConsumer(smg.toString()); + + // Exact + util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 0, null, smc, assert); + util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 0, null, smc, assert); + util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 0, null, smc, assert); + util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 0, null, smc, assert); + + // Fuzzy + + // Original to generated + util.assertMapping(2, 0, null, null, null, null, smc, assert, true); + util.assertMapping(2, 9, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); + util.assertMapping(3, 0, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); + util.assertMapping(3, 9, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); + util.assertMapping(4, 0, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); + util.assertMapping(4, 9, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); + util.assertMapping(5, 0, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); + util.assertMapping(5, 9, '/wu/tang/gza.coffee', 4, 0, null, smc, assert, true); + + // Generated to original + util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 1, null, smc, assert, null, true); + util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 3, null, smc, assert, null, true); + util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 6, null, smc, assert, null, true); + util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 9, null, smc, assert, null, true); + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js new file mode 100644 index 0000000..610d463 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js @@ -0,0 +1,291 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; + var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; + + exports['test that we can instantiate with a string or an objects'] = function (assert, util) { + assert.doesNotThrow(function () { + var map = new SourceMapConsumer(util.testMap); + }); + assert.doesNotThrow(function () { + var map = new SourceMapConsumer(JSON.stringify(util.testMap)); + }); + }; + + exports['test that the `sources` field has the original sources'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMap); + var sources = map.sources; + + assert.equal(sources[0], '/the/root/one.js'); + assert.equal(sources[1], '/the/root/two.js'); + assert.equal(sources.length, 2); + }; + + exports['test that the source root is reflected in a mapping\'s source field'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMap); + var mapping; + + mapping = map.originalPositionFor({ + line: 2, + column: 1 + }); + assert.equal(mapping.source, '/the/root/two.js'); + + mapping = map.originalPositionFor({ + line: 1, + column: 1 + }); + assert.equal(mapping.source, '/the/root/one.js'); + }; + + exports['test mapping tokens back exactly'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMap); + + util.assertMapping(1, 1, '/the/root/one.js', 1, 1, null, map, assert); + util.assertMapping(1, 5, '/the/root/one.js', 1, 5, null, map, assert); + util.assertMapping(1, 9, '/the/root/one.js', 1, 11, null, map, assert); + util.assertMapping(1, 18, '/the/root/one.js', 1, 21, 'bar', map, assert); + util.assertMapping(1, 21, '/the/root/one.js', 2, 3, null, map, assert); + util.assertMapping(1, 28, '/the/root/one.js', 2, 10, 'baz', map, assert); + util.assertMapping(1, 32, '/the/root/one.js', 2, 14, 'bar', map, assert); + + util.assertMapping(2, 1, '/the/root/two.js', 1, 1, null, map, assert); + util.assertMapping(2, 5, '/the/root/two.js', 1, 5, null, map, assert); + util.assertMapping(2, 9, '/the/root/two.js', 1, 11, null, map, assert); + util.assertMapping(2, 18, '/the/root/two.js', 1, 21, 'n', map, assert); + util.assertMapping(2, 21, '/the/root/two.js', 2, 3, null, map, assert); + util.assertMapping(2, 28, '/the/root/two.js', 2, 10, 'n', map, assert); + }; + + exports['test mapping tokens fuzzy'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMap); + + // Finding original positions + util.assertMapping(1, 20, '/the/root/one.js', 1, 21, 'bar', map, assert, true); + util.assertMapping(1, 30, '/the/root/one.js', 2, 10, 'baz', map, assert, true); + util.assertMapping(2, 12, '/the/root/two.js', 1, 11, null, map, assert, true); + + // Finding generated positions + util.assertMapping(1, 18, '/the/root/one.js', 1, 22, 'bar', map, assert, null, true); + util.assertMapping(1, 28, '/the/root/one.js', 2, 13, 'baz', map, assert, null, true); + util.assertMapping(2, 9, '/the/root/two.js', 1, 16, null, map, assert, null, true); + }; + + exports['test creating source map consumers with )]}\' prefix'] = function (assert, util) { + assert.doesNotThrow(function () { + var map = new SourceMapConsumer(")]}'" + JSON.stringify(util.testMap)); + }); + }; + + exports['test eachMapping'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMap); + var previousLine = -Infinity; + var previousColumn = -Infinity; + map.eachMapping(function (mapping) { + assert.ok(mapping.generatedLine >= previousLine); + + if (mapping.source) { + assert.equal(mapping.source.indexOf(util.testMap.sourceRoot), 0); + } + + if (mapping.generatedLine === previousLine) { + assert.ok(mapping.generatedColumn >= previousColumn); + previousColumn = mapping.generatedColumn; + } + else { + previousLine = mapping.generatedLine; + previousColumn = -Infinity; + } + }); + }; + + exports['test iterating over mappings in a different order'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMap); + var previousLine = -Infinity; + var previousColumn = -Infinity; + var previousSource = ""; + map.eachMapping(function (mapping) { + assert.ok(mapping.source >= previousSource); + + if (mapping.source === previousSource) { + assert.ok(mapping.originalLine >= previousLine); + + if (mapping.originalLine === previousLine) { + assert.ok(mapping.originalColumn >= previousColumn); + previousColumn = mapping.originalColumn; + } + else { + previousLine = mapping.originalLine; + previousColumn = -Infinity; + } + } + else { + previousSource = mapping.source; + previousLine = -Infinity; + previousColumn = -Infinity; + } + }, null, SourceMapConsumer.ORIGINAL_ORDER); + }; + + exports['test that we can set the context for `this` in eachMapping'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMap); + var context = {}; + map.eachMapping(function () { + assert.equal(this, context); + }, context); + }; + + exports['test that the `sourcesContent` field has the original sources'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMapWithSourcesContent); + var sourcesContent = map.sourcesContent; + + assert.equal(sourcesContent[0], ' ONE.foo = function (bar) {\n return baz(bar);\n };'); + assert.equal(sourcesContent[1], ' TWO.inc = function (n) {\n return n + 1;\n };'); + assert.equal(sourcesContent.length, 2); + }; + + exports['test that we can get the original sources for the sources'] = function (assert, util) { + var map = new SourceMapConsumer(util.testMapWithSourcesContent); + var sources = map.sources; + + assert.equal(map.sourceContentFor(sources[0]), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); + assert.equal(map.sourceContentFor(sources[1]), ' TWO.inc = function (n) {\n return n + 1;\n };'); + assert.equal(map.sourceContentFor("one.js"), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); + assert.equal(map.sourceContentFor("two.js"), ' TWO.inc = function (n) {\n return n + 1;\n };'); + assert.throws(function () { + map.sourceContentFor(""); + }, Error); + assert.throws(function () { + map.sourceContentFor("/the/root/three.js"); + }, Error); + assert.throws(function () { + map.sourceContentFor("three.js"); + }, Error); + }; + + exports['test sourceRoot + generatedPositionFor'] = function (assert, util) { + var map = new SourceMapGenerator({ + sourceRoot: 'foo/bar', + file: 'baz.js' + }); + map.addMapping({ + original: { line: 1, column: 1 }, + generated: { line: 2, column: 2 }, + source: 'bang.coffee' + }); + map.addMapping({ + original: { line: 5, column: 5 }, + generated: { line: 6, column: 6 }, + source: 'bang.coffee' + }); + map = new SourceMapConsumer(map.toString()); + + // Should handle without sourceRoot. + var pos = map.generatedPositionFor({ + line: 1, + column: 1, + source: 'bang.coffee' + }); + + assert.equal(pos.line, 2); + assert.equal(pos.column, 2); + + // Should handle with sourceRoot. + var pos = map.generatedPositionFor({ + line: 1, + column: 1, + source: 'foo/bar/bang.coffee' + }); + + assert.equal(pos.line, 2); + assert.equal(pos.column, 2); + }; + + exports['test sourceRoot + originalPositionFor'] = function (assert, util) { + var map = new SourceMapGenerator({ + sourceRoot: 'foo/bar', + file: 'baz.js' + }); + map.addMapping({ + original: { line: 1, column: 1 }, + generated: { line: 2, column: 2 }, + source: 'bang.coffee' + }); + map = new SourceMapConsumer(map.toString()); + + var pos = map.originalPositionFor({ + line: 2, + column: 2, + }); + + // Should always have the prepended source root + assert.equal(pos.source, 'foo/bar/bang.coffee'); + assert.equal(pos.line, 1); + assert.equal(pos.column, 1); + }; + + exports['test github issue #56'] = function (assert, util) { + var map = new SourceMapGenerator({ + sourceRoot: 'http://', + file: 'www.example.com/foo.js' + }); + map.addMapping({ + original: { line: 1, column: 1 }, + generated: { line: 2, column: 2 }, + source: 'www.example.com/original.js' + }); + map = new SourceMapConsumer(map.toString()); + + var sources = map.sources; + assert.equal(sources.length, 1); + assert.equal(sources[0], 'http://www.example.com/original.js'); + }; + + exports['test github issue #43'] = function (assert, util) { + var map = new SourceMapGenerator({ + sourceRoot: 'http://example.com', + file: 'foo.js' + }); + map.addMapping({ + original: { line: 1, column: 1 }, + generated: { line: 2, column: 2 }, + source: 'http://cdn.example.com/original.js' + }); + map = new SourceMapConsumer(map.toString()); + + var sources = map.sources; + assert.equal(sources.length, 1, + 'Should only be one source.'); + assert.equal(sources[0], 'http://cdn.example.com/original.js', + 'Should not be joined with the sourceRoot.'); + }; + + exports['test absolute path, but same host sources'] = function (assert, util) { + var map = new SourceMapGenerator({ + sourceRoot: 'http://example.com/foo/bar', + file: 'foo.js' + }); + map.addMapping({ + original: { line: 1, column: 1 }, + generated: { line: 2, column: 2 }, + source: '/original.js' + }); + map = new SourceMapConsumer(map.toString()); + + var sources = map.sources; + assert.equal(sources.length, 1, + 'Should only be one source.'); + assert.equal(sources[0], 'http://example.com/original.js', + 'Source should be relative the host of the source root.'); + }; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js new file mode 100644 index 0000000..2c42c8c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js @@ -0,0 +1,391 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; + var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; + var SourceNode = require('../../lib/source-map/source-node').SourceNode; + var util = require('./util'); + + exports['test some simple stuff'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'foo.js', + sourceRoot: '.' + }); + assert.ok(true); + }; + + exports['test JSON serialization'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'foo.js', + sourceRoot: '.' + }); + assert.equal(map.toString(), JSON.stringify(map)); + }; + + exports['test adding mappings (case 1)'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'generated-foo.js', + sourceRoot: '.' + }); + + assert.doesNotThrow(function () { + map.addMapping({ + generated: { line: 1, column: 1 } + }); + }); + }; + + exports['test adding mappings (case 2)'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'generated-foo.js', + sourceRoot: '.' + }); + + assert.doesNotThrow(function () { + map.addMapping({ + generated: { line: 1, column: 1 }, + source: 'bar.js', + original: { line: 1, column: 1 } + }); + }); + }; + + exports['test adding mappings (case 3)'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'generated-foo.js', + sourceRoot: '.' + }); + + assert.doesNotThrow(function () { + map.addMapping({ + generated: { line: 1, column: 1 }, + source: 'bar.js', + original: { line: 1, column: 1 }, + name: 'someToken' + }); + }); + }; + + exports['test adding mappings (invalid)'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'generated-foo.js', + sourceRoot: '.' + }); + + // Not enough info. + assert.throws(function () { + map.addMapping({}); + }); + + // Original file position, but no source. + assert.throws(function () { + map.addMapping({ + generated: { line: 1, column: 1 }, + original: { line: 1, column: 1 } + }); + }); + }; + + exports['test that the correct mappings are being generated'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'min.js', + sourceRoot: '/the/root' + }); + + map.addMapping({ + generated: { line: 1, column: 1 }, + original: { line: 1, column: 1 }, + source: 'one.js' + }); + map.addMapping({ + generated: { line: 1, column: 5 }, + original: { line: 1, column: 5 }, + source: 'one.js' + }); + map.addMapping({ + generated: { line: 1, column: 9 }, + original: { line: 1, column: 11 }, + source: 'one.js' + }); + map.addMapping({ + generated: { line: 1, column: 18 }, + original: { line: 1, column: 21 }, + source: 'one.js', + name: 'bar' + }); + map.addMapping({ + generated: { line: 1, column: 21 }, + original: { line: 2, column: 3 }, + source: 'one.js' + }); + map.addMapping({ + generated: { line: 1, column: 28 }, + original: { line: 2, column: 10 }, + source: 'one.js', + name: 'baz' + }); + map.addMapping({ + generated: { line: 1, column: 32 }, + original: { line: 2, column: 14 }, + source: 'one.js', + name: 'bar' + }); + + map.addMapping({ + generated: { line: 2, column: 1 }, + original: { line: 1, column: 1 }, + source: 'two.js' + }); + map.addMapping({ + generated: { line: 2, column: 5 }, + original: { line: 1, column: 5 }, + source: 'two.js' + }); + map.addMapping({ + generated: { line: 2, column: 9 }, + original: { line: 1, column: 11 }, + source: 'two.js' + }); + map.addMapping({ + generated: { line: 2, column: 18 }, + original: { line: 1, column: 21 }, + source: 'two.js', + name: 'n' + }); + map.addMapping({ + generated: { line: 2, column: 21 }, + original: { line: 2, column: 3 }, + source: 'two.js' + }); + map.addMapping({ + generated: { line: 2, column: 28 }, + original: { line: 2, column: 10 }, + source: 'two.js', + name: 'n' + }); + + map = JSON.parse(map.toString()); + + util.assertEqualMaps(assert, map, util.testMap); + }; + + exports['test that source content can be set'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'min.js', + sourceRoot: '/the/root' + }); + map.addMapping({ + generated: { line: 1, column: 1 }, + original: { line: 1, column: 1 }, + source: 'one.js' + }); + map.addMapping({ + generated: { line: 2, column: 1 }, + original: { line: 1, column: 1 }, + source: 'two.js' + }); + map.setSourceContent('one.js', 'one file content'); + + map = JSON.parse(map.toString()); + assert.equal(map.sources[0], 'one.js'); + assert.equal(map.sources[1], 'two.js'); + assert.equal(map.sourcesContent[0], 'one file content'); + assert.equal(map.sourcesContent[1], null); + }; + + exports['test .fromSourceMap'] = function (assert, util) { + var map = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(util.testMap)); + util.assertEqualMaps(assert, map.toJSON(), util.testMap); + }; + + exports['test .fromSourceMap with sourcesContent'] = function (assert, util) { + var map = SourceMapGenerator.fromSourceMap( + new SourceMapConsumer(util.testMapWithSourcesContent)); + util.assertEqualMaps(assert, map.toJSON(), util.testMapWithSourcesContent); + }; + + exports['test applySourceMap'] = function (assert, util) { + var node = new SourceNode(null, null, null, [ + new SourceNode(2, 0, 'fileX', 'lineX2\n'), + 'genA1\n', + new SourceNode(2, 0, 'fileY', 'lineY2\n'), + 'genA2\n', + new SourceNode(1, 0, 'fileX', 'lineX1\n'), + 'genA3\n', + new SourceNode(1, 0, 'fileY', 'lineY1\n') + ]); + var mapStep1 = node.toStringWithSourceMap({ + file: 'fileA' + }).map; + mapStep1.setSourceContent('fileX', 'lineX1\nlineX2\n'); + mapStep1 = mapStep1.toJSON(); + + node = new SourceNode(null, null, null, [ + 'gen1\n', + new SourceNode(1, 0, 'fileA', 'lineA1\n'), + new SourceNode(2, 0, 'fileA', 'lineA2\n'), + new SourceNode(3, 0, 'fileA', 'lineA3\n'), + new SourceNode(4, 0, 'fileA', 'lineA4\n'), + new SourceNode(1, 0, 'fileB', 'lineB1\n'), + new SourceNode(2, 0, 'fileB', 'lineB2\n'), + 'gen2\n' + ]); + var mapStep2 = node.toStringWithSourceMap({ + file: 'fileGen' + }).map; + mapStep2.setSourceContent('fileB', 'lineB1\nlineB2\n'); + mapStep2 = mapStep2.toJSON(); + + node = new SourceNode(null, null, null, [ + 'gen1\n', + new SourceNode(2, 0, 'fileX', 'lineA1\n'), + new SourceNode(2, 0, 'fileA', 'lineA2\n'), + new SourceNode(2, 0, 'fileY', 'lineA3\n'), + new SourceNode(4, 0, 'fileA', 'lineA4\n'), + new SourceNode(1, 0, 'fileB', 'lineB1\n'), + new SourceNode(2, 0, 'fileB', 'lineB2\n'), + 'gen2\n' + ]); + var expectedMap = node.toStringWithSourceMap({ + file: 'fileGen' + }).map; + expectedMap.setSourceContent('fileX', 'lineX1\nlineX2\n'); + expectedMap.setSourceContent('fileB', 'lineB1\nlineB2\n'); + expectedMap = expectedMap.toJSON(); + + // apply source map "mapStep1" to "mapStep2" + var generator = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(mapStep2)); + generator.applySourceMap(new SourceMapConsumer(mapStep1)); + var actualMap = generator.toJSON(); + + util.assertEqualMaps(assert, actualMap, expectedMap); + }; + + exports['test sorting with duplicate generated mappings'] = function (assert, util) { + var map = new SourceMapGenerator({ + file: 'test.js' + }); + map.addMapping({ + generated: { line: 3, column: 0 }, + original: { line: 2, column: 0 }, + source: 'a.js' + }); + map.addMapping({ + generated: { line: 2, column: 0 } + }); + map.addMapping({ + generated: { line: 2, column: 0 } + }); + map.addMapping({ + generated: { line: 1, column: 0 }, + original: { line: 1, column: 0 }, + source: 'a.js' + }); + + util.assertEqualMaps(assert, map.toJSON(), { + version: 3, + file: 'test.js', + sources: ['a.js'], + names: [], + mappings: 'AAAA;A;AACA' + }); + }; + + exports['test ignore duplicate mappings.'] = function (assert, util) { + var init = { file: 'min.js', sourceRoot: '/the/root' }; + var map1, map2; + + // null original source location + var nullMapping1 = { + generated: { line: 1, column: 0 } + }; + var nullMapping2 = { + generated: { line: 2, column: 2 } + }; + + map1 = new SourceMapGenerator(init); + map2 = new SourceMapGenerator(init); + + map1.addMapping(nullMapping1); + map1.addMapping(nullMapping1); + + map2.addMapping(nullMapping1); + + util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); + + map1.addMapping(nullMapping2); + map1.addMapping(nullMapping1); + + map2.addMapping(nullMapping2); + + util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); + + // original source location + var srcMapping1 = { + generated: { line: 1, column: 0 }, + original: { line: 11, column: 0 }, + source: 'srcMapping1.js' + }; + var srcMapping2 = { + generated: { line: 2, column: 2 }, + original: { line: 11, column: 0 }, + source: 'srcMapping2.js' + }; + + map1 = new SourceMapGenerator(init); + map2 = new SourceMapGenerator(init); + + map1.addMapping(srcMapping1); + map1.addMapping(srcMapping1); + + map2.addMapping(srcMapping1); + + util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); + + map1.addMapping(srcMapping2); + map1.addMapping(srcMapping1); + + map2.addMapping(srcMapping2); + + util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); + + // full original source and name information + var fullMapping1 = { + generated: { line: 1, column: 0 }, + original: { line: 11, column: 0 }, + source: 'fullMapping1.js', + name: 'fullMapping1' + }; + var fullMapping2 = { + generated: { line: 2, column: 2 }, + original: { line: 11, column: 0 }, + source: 'fullMapping2.js', + name: 'fullMapping2' + }; + + map1 = new SourceMapGenerator(init); + map2 = new SourceMapGenerator(init); + + map1.addMapping(fullMapping1); + map1.addMapping(fullMapping1); + + map2.addMapping(fullMapping1); + + util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); + + map1.addMapping(fullMapping2); + map1.addMapping(fullMapping1); + + map2.addMapping(fullMapping2); + + util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); + }; +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js new file mode 100644 index 0000000..231dd7b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js @@ -0,0 +1,282 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; + var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; + var SourceNode = require('../../lib/source-map/source-node').SourceNode; + + exports['test .add()'] = function (assert, util) { + var node = new SourceNode(null, null, null); + + // Adding a string works. + node.add('function noop() {}'); + + // Adding another source node works. + node.add(new SourceNode(null, null, null)); + + // Adding an array works. + node.add(['function foo() {', + new SourceNode(null, null, null, + 'return 10;'), + '}']); + + // Adding other stuff doesn't. + assert.throws(function () { + node.add({}); + }); + assert.throws(function () { + node.add(function () {}); + }); + }; + + exports['test .prepend()'] = function (assert, util) { + var node = new SourceNode(null, null, null); + + // Prepending a string works. + node.prepend('function noop() {}'); + assert.equal(node.children[0], 'function noop() {}'); + assert.equal(node.children.length, 1); + + // Prepending another source node works. + node.prepend(new SourceNode(null, null, null)); + assert.equal(node.children[0], ''); + assert.equal(node.children[1], 'function noop() {}'); + assert.equal(node.children.length, 2); + + // Prepending an array works. + node.prepend(['function foo() {', + new SourceNode(null, null, null, + 'return 10;'), + '}']); + assert.equal(node.children[0], 'function foo() {'); + assert.equal(node.children[1], 'return 10;'); + assert.equal(node.children[2], '}'); + assert.equal(node.children[3], ''); + assert.equal(node.children[4], 'function noop() {}'); + assert.equal(node.children.length, 5); + + // Prepending other stuff doesn't. + assert.throws(function () { + node.prepend({}); + }); + assert.throws(function () { + node.prepend(function () {}); + }); + }; + + exports['test .toString()'] = function (assert, util) { + assert.equal((new SourceNode(null, null, null, + ['function foo() {', + new SourceNode(null, null, null, 'return 10;'), + '}'])).toString(), + 'function foo() {return 10;}'); + }; + + exports['test .join()'] = function (assert, util) { + assert.equal((new SourceNode(null, null, null, + ['a', 'b', 'c', 'd'])).join(', ').toString(), + 'a, b, c, d'); + }; + + exports['test .walk()'] = function (assert, util) { + var node = new SourceNode(null, null, null, + ['(function () {\n', + ' ', new SourceNode(1, 0, 'a.js', ['someCall()']), ';\n', + ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', + '}());']); + var expected = [ + { str: '(function () {\n', source: null, line: null, column: null }, + { str: ' ', source: null, line: null, column: null }, + { str: 'someCall()', source: 'a.js', line: 1, column: 0 }, + { str: ';\n', source: null, line: null, column: null }, + { str: ' ', source: null, line: null, column: null }, + { str: 'if (foo) bar()', source: 'b.js', line: 2, column: 0 }, + { str: ';\n', source: null, line: null, column: null }, + { str: '}());', source: null, line: null, column: null }, + ]; + var i = 0; + node.walk(function (chunk, loc) { + assert.equal(expected[i].str, chunk); + assert.equal(expected[i].source, loc.source); + assert.equal(expected[i].line, loc.line); + assert.equal(expected[i].column, loc.column); + i++; + }); + }; + + exports['test .replaceRight'] = function (assert, util) { + var node; + + // Not nested + node = new SourceNode(null, null, null, 'hello world'); + node.replaceRight(/world/, 'universe'); + assert.equal(node.toString(), 'hello universe'); + + // Nested + node = new SourceNode(null, null, null, + [new SourceNode(null, null, null, 'hey sexy mama, '), + new SourceNode(null, null, null, 'want to kill all humans?')]); + node.replaceRight(/kill all humans/, 'watch Futurama'); + assert.equal(node.toString(), 'hey sexy mama, want to watch Futurama?'); + }; + + exports['test .toStringWithSourceMap()'] = function (assert, util) { + var node = new SourceNode(null, null, null, + ['(function () {\n', + ' ', + new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'), + new SourceNode(1, 8, 'a.js', '()'), + ';\n', + ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', + '}());']); + var map = node.toStringWithSourceMap({ + file: 'foo.js' + }).map; + + assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); + map = new SourceMapConsumer(map.toString()); + + var actual; + + actual = map.originalPositionFor({ + line: 1, + column: 4 + }); + assert.equal(actual.source, null); + assert.equal(actual.line, null); + assert.equal(actual.column, null); + + actual = map.originalPositionFor({ + line: 2, + column: 2 + }); + assert.equal(actual.source, 'a.js'); + assert.equal(actual.line, 1); + assert.equal(actual.column, 0); + assert.equal(actual.name, 'originalCall'); + + actual = map.originalPositionFor({ + line: 3, + column: 2 + }); + assert.equal(actual.source, 'b.js'); + assert.equal(actual.line, 2); + assert.equal(actual.column, 0); + + actual = map.originalPositionFor({ + line: 3, + column: 16 + }); + assert.equal(actual.source, null); + assert.equal(actual.line, null); + assert.equal(actual.column, null); + + actual = map.originalPositionFor({ + line: 4, + column: 2 + }); + assert.equal(actual.source, null); + assert.equal(actual.line, null); + assert.equal(actual.column, null); + }; + + exports['test .fromStringWithSourceMap()'] = function (assert, util) { + var node = SourceNode.fromStringWithSourceMap( + util.testGeneratedCode, + new SourceMapConsumer(util.testMap)); + + var result = node.toStringWithSourceMap({ + file: 'min.js' + }); + var map = result.map; + var code = result.code; + + assert.equal(code, util.testGeneratedCode); + assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); + map = map.toJSON(); + assert.equal(map.version, util.testMap.version); + assert.equal(map.file, util.testMap.file); + assert.equal(map.mappings, util.testMap.mappings); + }; + + exports['test .fromStringWithSourceMap() complex version'] = function (assert, util) { + var input = new SourceNode(null, null, null, [ + "(function() {\n", + " var Test = {};\n", + " ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };\n"), + " ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), "\n", + "}());\n", + "/* Generated Source */"]); + input = input.toStringWithSourceMap({ + file: 'foo.js' + }); + + var node = SourceNode.fromStringWithSourceMap( + input.code, + new SourceMapConsumer(input.map.toString())); + + var result = node.toStringWithSourceMap({ + file: 'foo.js' + }); + var map = result.map; + var code = result.code; + + assert.equal(code, input.code); + assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); + map = map.toJSON(); + var inputMap = input.map.toJSON(); + util.assertEqualMaps(assert, map, inputMap); + }; + + exports['test setSourceContent with toStringWithSourceMap'] = function (assert, util) { + var aNode = new SourceNode(1, 1, 'a.js', 'a'); + aNode.setSourceContent('a.js', 'someContent'); + var node = new SourceNode(null, null, null, + ['(function () {\n', + ' ', aNode, + ' ', new SourceNode(1, 1, 'b.js', 'b'), + '}());']); + node.setSourceContent('b.js', 'otherContent'); + var map = node.toStringWithSourceMap({ + file: 'foo.js' + }).map; + + assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); + map = new SourceMapConsumer(map.toString()); + + assert.equal(map.sources.length, 2); + assert.equal(map.sources[0], 'a.js'); + assert.equal(map.sources[1], 'b.js'); + assert.equal(map.sourcesContent.length, 2); + assert.equal(map.sourcesContent[0], 'someContent'); + assert.equal(map.sourcesContent[1], 'otherContent'); + }; + + exports['test walkSourceContents'] = function (assert, util) { + var aNode = new SourceNode(1, 1, 'a.js', 'a'); + aNode.setSourceContent('a.js', 'someContent'); + var node = new SourceNode(null, null, null, + ['(function () {\n', + ' ', aNode, + ' ', new SourceNode(1, 1, 'b.js', 'b'), + '}());']); + node.setSourceContent('b.js', 'otherContent'); + var results = []; + node.walkSourceContents(function (sourceFile, sourceContent) { + results.push([sourceFile, sourceContent]); + }); + assert.equal(results.length, 2); + assert.equal(results[0][0], 'a.js'); + assert.equal(results[0][1], 'someContent'); + assert.equal(results[1][0], 'b.js'); + assert.equal(results[1][1], 'otherContent'); + }; +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js new file mode 100644 index 0000000..3e19fc9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js @@ -0,0 +1,152 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ +if (typeof define !== 'function') { + var define = require('amdefine')(module); +} +define(function (require, exports, module) { + + var util = require('../../lib/source-map/util'); + + // This is a test mapping which maps functions from two different files + // (one.js and two.js) to a minified generated source. + // + // Here is one.js: + // + // ONE.foo = function (bar) { + // return baz(bar); + // }; + // + // Here is two.js: + // + // TWO.inc = function (n) { + // return n + 1; + // }; + // + // And here is the generated code (min.js): + // + // ONE.foo=function(a){return baz(a);}; + // TWO.inc=function(a){return a+1;}; + exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+ + " TWO.inc=function(a){return a+1;};"; + exports.testMap = { + version: 3, + file: 'min.js', + names: ['bar', 'baz', 'n'], + sources: ['one.js', 'two.js'], + sourceRoot: '/the/root', + mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' + }; + exports.testMapWithSourcesContent = { + version: 3, + file: 'min.js', + names: ['bar', 'baz', 'n'], + sources: ['one.js', 'two.js'], + sourcesContent: [ + ' ONE.foo = function (bar) {\n' + + ' return baz(bar);\n' + + ' };', + ' TWO.inc = function (n) {\n' + + ' return n + 1;\n' + + ' };' + ], + sourceRoot: '/the/root', + mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' + }; + + function assertMapping(generatedLine, generatedColumn, originalSource, + originalLine, originalColumn, name, map, assert, + dontTestGenerated, dontTestOriginal) { + if (!dontTestOriginal) { + var origMapping = map.originalPositionFor({ + line: generatedLine, + column: generatedColumn + }); + assert.equal(origMapping.name, name, + 'Incorrect name, expected ' + JSON.stringify(name) + + ', got ' + JSON.stringify(origMapping.name)); + assert.equal(origMapping.line, originalLine, + 'Incorrect line, expected ' + JSON.stringify(originalLine) + + ', got ' + JSON.stringify(origMapping.line)); + assert.equal(origMapping.column, originalColumn, + 'Incorrect column, expected ' + JSON.stringify(originalColumn) + + ', got ' + JSON.stringify(origMapping.column)); + + var expectedSource; + + if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) { + expectedSource = originalSource; + } else if (originalSource) { + expectedSource = map.sourceRoot + ? util.join(map.sourceRoot, originalSource) + : originalSource; + } else { + expectedSource = null; + } + + assert.equal(origMapping.source, expectedSource, + 'Incorrect source, expected ' + JSON.stringify(expectedSource) + + ', got ' + JSON.stringify(origMapping.source)); + } + + if (!dontTestGenerated) { + var genMapping = map.generatedPositionFor({ + source: originalSource, + line: originalLine, + column: originalColumn + }); + assert.equal(genMapping.line, generatedLine, + 'Incorrect line, expected ' + JSON.stringify(generatedLine) + + ', got ' + JSON.stringify(genMapping.line)); + assert.equal(genMapping.column, generatedColumn, + 'Incorrect column, expected ' + JSON.stringify(generatedColumn) + + ', got ' + JSON.stringify(genMapping.column)); + } + } + exports.assertMapping = assertMapping; + + function assertEqualMaps(assert, actualMap, expectedMap) { + assert.equal(actualMap.version, expectedMap.version, "version mismatch"); + assert.equal(actualMap.file, expectedMap.file, "file mismatch"); + assert.equal(actualMap.names.length, + expectedMap.names.length, + "names length mismatch: " + + actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); + for (var i = 0; i < actualMap.names.length; i++) { + assert.equal(actualMap.names[i], + expectedMap.names[i], + "names[" + i + "] mismatch: " + + actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); + } + assert.equal(actualMap.sources.length, + expectedMap.sources.length, + "sources length mismatch: " + + actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); + for (var i = 0; i < actualMap.sources.length; i++) { + assert.equal(actualMap.sources[i], + expectedMap.sources[i], + "sources[" + i + "] length mismatch: " + + actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); + } + assert.equal(actualMap.sourceRoot, + expectedMap.sourceRoot, + "sourceRoot mismatch: " + + actualMap.sourceRoot + " != " + expectedMap.sourceRoot); + assert.equal(actualMap.mappings, expectedMap.mappings, "mappings mismatch"); + if (actualMap.sourcesContent) { + assert.equal(actualMap.sourcesContent.length, + expectedMap.sourcesContent.length, + "sourcesContent length mismatch"); + for (var i = 0; i < actualMap.sourcesContent.length; i++) { + assert.equal(actualMap.sourcesContent[i], + expectedMap.sourcesContent[i], + "sourcesContent[" + i + "] mismatch"); + } + } + } + exports.assertEqualMaps = assertEqualMaps; + +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json new file mode 100644 index 0000000..6587b99 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json @@ -0,0 +1,44 @@ +{ + "name": "uglify-js", + "description": "JavaScript parser, mangler/compressor and beautifier toolkit", + "homepage": "http://lisperator.net/uglifyjs", + "main": "tools/node.js", + "version": "2.2.5", + "engines": { + "node": ">=0.4.0" + }, + "maintainers": [ + { + "name": "Mihai Bazon", + "email": "mihai.bazon@gmail.com", + "url": "http://lisperator.net/" + } + ], + "repositories": [ + { + "type": "git", + "url": "https://github.com/mishoo/UglifyJS2.git" + } + ], + "dependencies": { + "source-map": "~0.1.7", + "optimist": "~0.3.5" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "scripts": { + "test": "node test/run-tests.js" + }, + "readme": "UglifyJS 2\n==========\n\nUglifyJS is a JavaScript parser, minifier, compressor or beautifier toolkit.\n\nThis page documents the command line utility. For\n[API and internals documentation see my website](http://lisperator.net/uglifyjs/).\nThere's also an\n[in-browser online demo](http://lisperator.net/uglifyjs/#demo) (for Firefox,\nChrome and probably Safari).\n\nInstall\n-------\n\nFirst make sure you have installed the latest version of [node.js](http://nodejs.org/)\n(You may need to restart your computer after this step).\n\nFrom NPM for use as a command line app:\n\n npm install uglify-js -g\n\nFrom NPM for programmatic use:\n\n npm install uglify-js\n\nFrom Git:\n\n git clone git://github.com/mishoo/UglifyJS2.git\n cd UglifyJS2\n npm link .\n\nUsage\n-----\n\n uglifyjs [input files] [options]\n\nUglifyJS2 can take multiple input files. It's recommended that you pass the\ninput files first, then pass the options. UglifyJS will parse input files\nin sequence and apply any compression options. The files are parsed in the\nsame global scope, that is, a reference from a file to some\nvariable/function declared in another file will be matched properly.\n\nIf you want to read from STDIN instead, pass a single dash instead of input\nfiles.\n\nThe available options are:\n\n --source-map Specify an output file where to generate source map.\n [string]\n --source-map-root The path to the original source to be included in the\n source map. [string]\n --source-map-url The path to the source map to be added in //@\n sourceMappingURL. Defaults to the value passed with\n --source-map. [string]\n --in-source-map Input source map, useful if you're compressing JS that was\n generated from some other original code.\n -p, --prefix Skip prefix for original filenames that appear in source\n maps. For example -p 3 will drop 3 directories from file\n names and ensure they are relative paths.\n -o, --output Output file (default STDOUT).\n -b, --beautify Beautify output/specify output options. [string]\n -m, --mangle Mangle names/pass mangler options. [string]\n -r, --reserved Reserved names to exclude from mangling.\n -c, --compress Enable compressor/pass compressor options. Pass options\n like -c hoist_vars=false,if_return=false. Use -c with no\n argument to use the default compression options. [string]\n -d, --define Global definitions [string]\n --comments Preserve copyright comments in the output. By default this\n works like Google Closure, keeping JSDoc-style comments\n that contain \"@license\" or \"@preserve\". You can optionally\n pass one of the following arguments to this flag:\n - \"all\" to keep all comments\n - a valid JS regexp (needs to start with a slash) to keep\n only comments that match.\n Note that currently not *all* comments can be kept when\n compression is on, because of dead code removal or\n cascading statements into sequences. [string]\n --stats Display operations run time on STDERR. [boolean]\n --acorn Use Acorn for parsing. [boolean]\n --spidermonkey Assume input fles are SpiderMonkey AST format (as JSON).\n [boolean]\n --self Build itself (UglifyJS2) as a library (implies\n --wrap=UglifyJS --export-all) [boolean]\n --wrap Embed everything in a big function, making the “exports”\n and “global” variables available. You need to pass an\n argument to this option to specify the name that your\n module will take when included in, say, a browser.\n [string]\n --export-all Only used when --wrap, this tells UglifyJS to add code to\n automatically export all globals. [boolean]\n --lint Display some scope warnings [boolean]\n -v, --verbose Verbose [boolean]\n -V, --version Print version number and exit. [boolean]\n\nSpecify `--output` (`-o`) to declare the output file. Otherwise the output\ngoes to STDOUT.\n\n## Source map options\n\nUglifyJS2 can generate a source map file, which is highly useful for\ndebugging your compressed JavaScript. To get a source map, pass\n`--source-map output.js.map` (full path to the file where you want the\nsource map dumped).\n\nAdditionally you might need `--source-map-root` to pass the URL where the\noriginal files can be found. In case you are passing full paths to input\nfiles to UglifyJS, you can use `--prefix` (`-p`) to specify the number of\ndirectories to drop from the path prefix when declaring files in the source\nmap.\n\nFor example:\n\n uglifyjs /home/doe/work/foo/src/js/file1.js \\\n /home/doe/work/foo/src/js/file2.js \\\n -o foo.min.js \\\n --source-map foo.min.js.map \\\n --source-map-root http://foo.com/src \\\n -p 5 -c -m\n\nThe above will compress and mangle `file1.js` and `file2.js`, will drop the\noutput in `foo.min.js` and the source map in `foo.min.js.map`. The source\nmapping will refer to `http://foo.com/src/js/file1.js` and\n`http://foo.com/src/js/file2.js` (in fact it will list `http://foo.com/src`\nas the source map root, and the original files as `js/file1.js` and\n`js/file2.js`).\n\n### Composed source map\n\nWhen you're compressing JS code that was output by a compiler such as\nCoffeeScript, mapping to the JS code won't be too helpful. Instead, you'd\nlike to map back to the original code (i.e. CoffeeScript). UglifyJS has an\noption to take an input source map. Assuming you have a mapping from\nCoffeeScript → compiled JS, UglifyJS can generate a map from CoffeeScript →\ncompressed JS by mapping every token in the compiled JS to its original\nlocation.\n\nTo use this feature you need to pass `--in-source-map\n/path/to/input/source.map`. Normally the input source map should also point\nto the file containing the generated JS, so if that's correct you can omit\ninput files from the command line.\n\n## Mangler options\n\nTo enable the mangler you need to pass `--mangle` (`-m`). Optionally you\ncan pass `-m sort=true` (we'll possibly have other flags in the future) in order\nto assign shorter names to most frequently used variables. This saves a few\nhundred bytes on jQuery before gzip, but the output is _bigger_ after gzip\n(and seems to happen for other libraries I tried it on) therefore it's not\nenabled by default.\n\nWhen mangling is enabled but you want to prevent certain names from being\nmangled, you can declare those names with `--reserved` (`-r`) — pass a\ncomma-separated list of names. For example:\n\n uglifyjs ... -m -r '$,require,exports'\n\nto prevent the `require`, `exports` and `$` names from being changed.\n\n## Compressor options\n\nYou need to pass `--compress` (`-c`) to enable the compressor. Optionally\nyou can pass a comma-separated list of options. Options are in the form\n`foo=bar`, or just `foo` (the latter implies a boolean option that you want\nto set `true`; it's effectively a shortcut for `foo=true`).\n\nThe defaults should be tuned for maximum compression on most code. Here are\nthe available options (all are `true` by default, except `hoist_vars`):\n\n- `sequences` -- join consecutive simple statements using the comma operator\n- `properties` -- rewrite property access using the dot notation, for\n example `foo[\"bar\"] → foo.bar`\n- `dead_code` -- remove unreachable code\n- `drop_debugger` -- remove `debugger;` statements\n- `unsafe` -- apply \"unsafe\" transformations (discussion below)\n- `conditionals` -- apply optimizations for `if`-s and conditional\n expressions\n- `comparisons` -- apply certain optimizations to binary nodes, for example:\n `!(a <= b) → a > b` (only when `unsafe`), attempts to negate binary nodes,\n e.g. `a = !b && !c && !d && !e → a=!(b||c||d||e)` etc.\n- `evaluate` -- attempt to evaluate constant expressions\n- `booleans` -- various optimizations for boolean context, for example `!!a\n ? b : c → a ? b : c`\n- `loops` -- optimizations for `do`, `while` and `for` loops when we can\n statically determine the condition\n- `unused` -- drop unreferenced functions and variables\n- `hoist_funs` -- hoist function declarations\n- `hoist_vars` -- hoist `var` declarations (this is `false` by default\n because it seems to increase the size of the output in general)\n- `if_return` -- optimizations for if/return and if/continue\n- `join_vars` -- join consecutive `var` statements\n- `cascade` -- small optimization for sequences, transform `x, x` into `x`\n and `x = something(), x` into `x = something()`\n- `warnings` -- display warnings when dropping unreachable code or unused\n declarations etc.\n\n### Conditional compilation\n\nYou can use the `--define` (`-d`) switch in order to declare global\nvariables that UglifyJS will assume to be constants (unless defined in\nscope). For example if you pass `--define DEBUG=false` then, coupled with\ndead code removal UglifyJS will discard the following from the output:\n\n if (DEBUG) {\n console.log(\"debug stuff\");\n }\n\nUglifyJS will warn about the condition being always false and about dropping\nunreachable code; for now there is no option to turn off only this specific\nwarning, you can pass `warnings=false` to turn off *all* warnings.\n\nAnother way of doing that is to declare your globals as constants in a\nseparate file and include it into the build. For example you can have a\n`build/defines.js` file with the following:\n\n const DEBUG = false;\n const PRODUCTION = true;\n // etc.\n\nand build your code like this:\n\n uglifyjs build/defines.js js/foo.js js/bar.js... -c\n\nUglifyJS will notice the constants and, since they cannot be altered, it\nwill evaluate references to them to the value itself and drop unreachable\ncode as usual. The possible downside of this approach is that the build\nwill contain the `const` declarations.\n\n\n## Beautifier options\n\nThe code generator tries to output shortest code possible by default. In\ncase you want beautified output, pass `--beautify` (`-b`). Optionally you\ncan pass additional arguments that control the code output:\n\n- `beautify` (default `true`) -- whether to actually beautify the output.\n Passing `-b` will set this to true, but you might need to pass `-b` even\n when you want to generate minified code, in order to specify additional\n arguments, so you can use `-b beautify=false` to override it.\n- `indent-level` (default 4)\n- `indent-start` (default 0) -- prefix all lines by that many spaces\n- `quote-keys` (default `false`) -- pass `true` to quote all keys in literal\n objects\n- `space-colon` (default `true`) -- insert a space after the colon signs\n- `ascii-only` (default `false`) -- escape Unicode characters in strings and\n regexps\n- `inline-script` (default `false`) -- escape the slash in occurrences of\n ` 5) break; // this break refers to the for, not to the switch; thus it + // shouldn't ruin our optimization + console.log(x); + } + y(); + case 1+1: + bar(); + break; + default: + def(); + } + } + } + expect: { + OUT: { + foo(); + x(); + if (foo) break OUT; + for (var x = 0; x < 10; x++) { + if (x > 5) break; + console.log(x); + } + y(); + bar(); + } + } +} + +constant_switch_8: { + options = { dead_code: true, evaluate: true }; + input: { + OUT: switch (1) { + case 1: + x(); + for (;;) break OUT; + y(); + break; + case 1+1: + bar(); + default: + def(); + } + } + expect: { + OUT: { + x(); + for (;;) break OUT; + y(); + } + } +} + +constant_switch_9: { + options = { dead_code: true, evaluate: true }; + input: { + OUT: switch (1) { + case 1: + x(); + for (;;) if (foo) break OUT; + y(); + case 1+1: + bar(); + default: + def(); + } + } + expect: { + OUT: { + x(); + for (;;) if (foo) break OUT; + y(); + bar(); + def(); + } + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js new file mode 100644 index 0000000..0568c6a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js @@ -0,0 +1,170 @@ +#! /usr/bin/env node + +var U = require("../tools/node"); +var path = require("path"); +var fs = require("fs"); +var assert = require("assert"); +var sys = require("util"); + +var tests_dir = path.dirname(module.filename); + +run_compress_tests(); + +/* -----[ utils ]----- */ + +function tmpl() { + return U.string_template.apply(this, arguments); +} + +function log() { + var txt = tmpl.apply(this, arguments); + sys.puts(txt); +} + +function log_directory(dir) { + log("*** Entering [{dir}]", { dir: dir }); +} + +function log_start_file(file) { + log("--- {file}", { file: file }); +} + +function log_test(name) { + log(" Running test [{name}]", { name: name }); +} + +function find_test_files(dir) { + var files = fs.readdirSync(dir).filter(function(name){ + return /\.js$/i.test(name); + }); + if (process.argv.length > 2) { + var x = process.argv.slice(2); + files = files.filter(function(f){ + return x.indexOf(f) >= 0; + }); + } + return files; +} + +function test_directory(dir) { + return path.resolve(tests_dir, dir); +} + +function as_toplevel(input) { + if (input instanceof U.AST_BlockStatement) input = input.body; + else if (input instanceof U.AST_Statement) input = [ input ]; + else throw new Error("Unsupported input syntax"); + var toplevel = new U.AST_Toplevel({ body: input }); + toplevel.figure_out_scope(); + return toplevel; +} + +function run_compress_tests() { + var dir = test_directory("compress"); + log_directory("compress"); + var files = find_test_files(dir); + function test_file(file) { + log_start_file(file); + function test_case(test) { + log_test(test.name); + var options = U.defaults(test.options, { + warnings: false + }); + var cmp = new U.Compressor(options, true); + var expect = make_code(as_toplevel(test.expect), false); + var input = as_toplevel(test.input); + var input_code = make_code(test.input); + var output = input.transform(cmp); + output.figure_out_scope(); + output = make_code(output, false); + if (expect != output) { + log("!!! failed\n---INPUT---\n{input}\n---OUTPUT---\n{output}\n---EXPECTED---\n{expected}\n\n", { + input: input_code, + output: output, + expected: expect + }); + } + } + var tests = parse_test(path.resolve(dir, file)); + for (var i in tests) if (tests.hasOwnProperty(i)) { + test_case(tests[i]); + } + } + files.forEach(function(file){ + test_file(file); + }); +} + +function parse_test(file) { + var script = fs.readFileSync(file, "utf8"); + var ast = U.parse(script, { + filename: file + }); + var tests = {}; + var tw = new U.TreeWalker(function(node, descend){ + if (node instanceof U.AST_LabeledStatement + && tw.parent() instanceof U.AST_Toplevel) { + var name = node.label.name; + tests[name] = get_one_test(name, node.body); + return true; + } + if (!(node instanceof U.AST_Toplevel)) croak(node); + }); + ast.walk(tw); + return tests; + + function croak(node) { + throw new Error(tmpl("Can't understand test file {file} [{line},{col}]\n{code}", { + file: file, + line: node.start.line, + col: node.start.col, + code: make_code(node, false) + })); + } + + function get_one_test(name, block) { + var test = { name: name, options: {} }; + var tw = new U.TreeWalker(function(node, descend){ + if (node instanceof U.AST_Assign) { + if (!(node.left instanceof U.AST_SymbolRef)) { + croak(node); + } + var name = node.left.name; + test[name] = evaluate(node.right); + return true; + } + if (node instanceof U.AST_LabeledStatement) { + assert.ok( + node.label.name == "input" || node.label.name == "expect", + tmpl("Unsupported label {name} [{line},{col}]", { + name: node.label.name, + line: node.label.start.line, + col: node.label.start.col + }) + ); + var stat = node.body; + if (stat instanceof U.AST_BlockStatement) { + if (stat.body.length == 1) stat = stat.body[0]; + else if (stat.body.length == 0) stat = new U.AST_EmptyStatement(); + } + test[node.label.name] = stat; + return true; + } + }); + block.walk(tw); + return test; + }; +} + +function make_code(ast, beautify) { + if (arguments.length == 1) beautify = true; + var stream = U.OutputStream({ beautify: beautify }); + ast.print(stream); + return stream.get(); +} + +function evaluate(code) { + if (code instanceof U.AST_Node) + code = make_code(code); + return new Function("return(" + code + ")")(); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js new file mode 100644 index 0000000..cf87628 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js @@ -0,0 +1,164 @@ +var path = require("path"); +var fs = require("fs"); +var vm = require("vm"); +var sys = require("util"); + +var UglifyJS = vm.createContext({ + sys : sys, + console : console, + MOZ_SourceMap : require("source-map") +}); + +function load_global(file) { + file = path.resolve(path.dirname(module.filename), file); + try { + var code = fs.readFileSync(file, "utf8"); + return vm.runInContext(code, UglifyJS, file); + } catch(ex) { + // XXX: in case of a syntax error, the message is kinda + // useless. (no location information). + sys.debug("ERROR in file: " + file + " / " + ex); + process.exit(1); + } +}; + +var FILES = exports.FILES = [ + "../lib/utils.js", + "../lib/ast.js", + "../lib/parse.js", + "../lib/transform.js", + "../lib/scope.js", + "../lib/output.js", + "../lib/compress.js", + "../lib/sourcemap.js", + "../lib/mozilla-ast.js" +].map(function(file){ + return path.join(path.dirname(fs.realpathSync(__filename)), file); +}); + +FILES.forEach(load_global); + +UglifyJS.AST_Node.warn_function = function(txt) { + sys.error("WARN: " + txt); +}; + +// XXX: perhaps we shouldn't export everything but heck, I'm lazy. +for (var i in UglifyJS) { + if (UglifyJS.hasOwnProperty(i)) { + exports[i] = UglifyJS[i]; + } +} + +exports.minify = function(files, options) { + options = UglifyJS.defaults(options, { + outSourceMap : null, + sourceRoot : null, + inSourceMap : null, + fromString : false, + warnings : false, + mangle : {}, + output : null, + compress : {} + }); + if (typeof files == "string") + files = [ files ]; + + // 1. parse + var toplevel = null; + files.forEach(function(file){ + var code = options.fromString + ? file + : fs.readFileSync(file, "utf8"); + toplevel = UglifyJS.parse(code, { + filename: options.fromString ? "?" : file, + toplevel: toplevel + }); + }); + + // 2. compress + if (options.compress) { + var compress = { warnings: options.warnings }; + UglifyJS.merge(compress, options.compress); + toplevel.figure_out_scope(); + var sq = UglifyJS.Compressor(compress); + toplevel = toplevel.transform(sq); + } + + // 3. mangle + if (options.mangle) { + toplevel.figure_out_scope(); + toplevel.compute_char_frequency(); + toplevel.mangle_names(options.mangle); + } + + // 4. output + var map = null; + var inMap = null; + if (options.inSourceMap) { + inMap = fs.readFileSync(options.inSourceMap, "utf8"); + } + if (options.outSourceMap) map = UglifyJS.SourceMap({ + file: options.outSourceMap, + orig: inMap, + root: options.sourceRoot + }); + var output = { source_map: map }; + if (options.output) { + UglifyJS.merge(output, options.output); + } + var stream = UglifyJS.OutputStream(output); + toplevel.print(stream); + return { + code : stream + "", + map : map + "" + }; +}; + +// exports.describe_ast = function() { +// function doitem(ctor) { +// var sub = {}; +// ctor.SUBCLASSES.forEach(function(ctor){ +// sub[ctor.TYPE] = doitem(ctor); +// }); +// var ret = {}; +// if (ctor.SELF_PROPS.length > 0) ret.props = ctor.SELF_PROPS; +// if (ctor.SUBCLASSES.length > 0) ret.sub = sub; +// return ret; +// } +// return doitem(UglifyJS.AST_Node).sub; +// } + +exports.describe_ast = function() { + var out = UglifyJS.OutputStream({ beautify: true }); + function doitem(ctor) { + out.print("AST_" + ctor.TYPE); + var props = ctor.SELF_PROPS.filter(function(prop){ + return !/^\$/.test(prop); + }); + if (props.length > 0) { + out.space(); + out.with_parens(function(){ + props.forEach(function(prop, i){ + if (i) out.space(); + out.print(prop); + }); + }); + } + if (ctor.documentation) { + out.space(); + out.print_string(ctor.documentation); + } + if (ctor.SUBCLASSES.length > 0) { + out.space(); + out.with_block(function(){ + ctor.SUBCLASSES.forEach(function(ctor, i){ + out.indent(); + doitem(ctor); + out.newline(); + }); + }); + } + }; + doitem(UglifyJS.AST_Node); + return out + ""; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json new file mode 100644 index 0000000..5ccf9a1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json @@ -0,0 +1,76 @@ +{ + "name": "transformers", + "version": "2.0.1", + "description": "String/Data transformations for use in templating libraries, static site generators and web frameworks", + "main": "lib/transformers.js", + "scripts": { + "pretest": "node test/update-package && npm install", + "test": "mocha test/test.js -R spec" + }, + "repository": { + "type": "git", + "url": "https://github.com/ForbesLindesay/transformers.git" + }, + "author": { + "name": "ForbesLindesay" + }, + "license": "MIT", + "readmeFilename": "README.md", + "gitHead": "4b46e72cba3ad3403fd5ed3802d5472dcfa77311", + "devDependencies": { + "mocha": "~1.8", + "expect.js": "~0.2", + "swig": "*", + "atpl": "*", + "liquor": "*", + "ejs": "*", + "eco": "*", + "jqtpl": "*", + "hamljs": "*", + "haml-coffee": "*", + "whiskers": "*", + "hogan.js": "*", + "handlebars": "*", + "underscore": "*", + "walrus": "*", + "mustache": "*", + "mote": "*", + "toffee": "*", + "just": "*", + "ect": "*", + "jade": "*", + "then-jade": "*", + "dust": "*", + "dustjs-linkedin": "*", + "jazz": "*", + "qejs": "*", + "less": "*", + "stylus": "*", + "sass": "*", + "marked": "*", + "supermarked": "*", + "markdown-js": "*", + "markdown": "*", + "coffee-script": "*", + "cson": "*", + "coffeekup": "*", + "coffeecup": "*", + "templayed": "*", + "plates": "*", + "dot": "*", + "component-builder": "*", + "html2jade": "*", + "highlight.js": "*" + }, + "dependencies": { + "promise": "~2.0", + "css": "~1.0.8", + "uglify-js": "~2.2.5" + }, + "readme": "[![Build Status](https://travis-ci.org/ForbesLindesay/transformers.png?branch=master)](https://travis-ci.org/ForbesLindesay/transformers)\r\n# transformers\r\n\r\n String/Data transformations for use in templating libraries, static site generators and web frameworks. This gathers the most useful transformations you can apply to text or data into one library with a consistent API. Transformations can be pretty much anything but most are either compilers or templating engines.\r\n\r\n## Supported transforms\r\n\r\n To use each of these transforms you will also need to install the associated npm module for that transformer.\r\n\r\n### Template engines\r\n\r\n - [atpl](http://documentup.com/soywiz/atpl.js) - Compatible with twig templates\r\n - [coffeecup](http://documentup.com/gradus/coffeecup) - pure coffee-script templates (fork of coffeekup)\r\n - [dot](http://documentup.com/olado/doT) [(website)](https://github.com/Katahdin/dot-packer) - focused on speed\r\n - [dust](http://documentup.com/akdubya/dustjs) [(website)](http://akdubya.github.com/dustjs/) - asyncronous templates\r\n - [eco](http://documentup.com/sstephenson/eco) - Embedded CoffeeScript templates\r\n - [ect](http://documentup.com/baryshev/ect) [(website)](http://ectjs.com/) - Embedded CoffeeScript templates\r\n - [ejs](http://documentup.com/visionmedia/ejs) - Embedded JavaScript templates\r\n - [haml](http://documentup.com/visionmedia/haml.js) [(website)](http://haml-lang.com/) - dry indented markup\r\n - [haml-coffee](http://documentup.com/netzpirat/haml-coffee/) [(website)](http://haml-lang.com/) - haml with embedded CoffeeScript\r\n - [handlebars](http://documentup.com/wycats/handlebars.js/) [(website)](http://handlebarsjs.com/) - extension of mustache templates\r\n - [hogan](http://documentup.com/twitter/hogan.js) [(website)](http://twitter.github.com/hogan.js/) - Mustache templates\r\n - [jade](http://documentup.com/visionmedia/jade) [(website)](http://jade-lang.com/) - robust, elegant, feature rich template engine\r\n - [jazz](http://documentup.com/shinetech/jazz)\r\n - [jqtpl](http://documentup.com/kof/jqtpl) [(website)](http://api.jquery.com/category/plugins/templates/) - extensible logic-less templates\r\n - [JUST](http://documentup.com/baryshev/just) - EJS style template with some special syntax for layouts/partials etc.\r\n - [liquor](http://documentup.com/chjj/liquor) - extended EJS with significant white space\r\n - [mustache](http://documentup.com/janl/mustache.js) - logic less templates\r\n - [QEJS](http://documentup.com/jepso/QEJS) - Promises + EJS for async templating\r\n - [swig](http://documentup.com/paularmstrong/swig) [(website)](http://paularmstrong.github.com/swig/) - Django-like templating engine\r\n - [templayed](http://documentup.com/archan937/templayed.js/) [(website)](http://archan937.github.com/templayed.js/) - Mustache focused on performance\r\n - [toffee](http://documentup.com/malgorithms/toffee) - templating language based on coffeescript\r\n - [underscore](http://documentup.com/documentcloud/underscore) [(website)](http://documentcloud.github.com/underscore/)\r\n - [walrus](http://documentup.com/jeremyruppel/walrus) - A bolder kind of mustache\r\n - [whiskers](http://documentup.com/gsf/whiskers.js/tree/) - logic-less focused on readability\r\n\r\n### Stylesheet Languages\r\n\r\n - [less](http://documentup.com/cloudhead/less.js) [(website)](http://lesscss.org/) - LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.\r\n - [stylus](http://documentup.com/learnboost/stylus) [(website)](http://learnboost.github.com/stylus/) - revolutionary CSS generator making braces optional\r\n - [sass](http://documentup.com/visionmedia/sass.js) [(website)](http://sass-lang.com/) - Sassy CSS\r\n\r\n### Minifiers\r\n\r\n - [uglify-js](http://documentup.com/mishoo/UglifyJS2) - No need to install anything, just minifies/beautifies JavaScript\r\n - [uglify-css](https://github.com/visionmedia/css) - No need to install anything, just minifies/beautifies CSS\r\n - ugilify-json - No need to install anything, just minifies/beautifies JSON\r\n\r\n### Other\r\n\r\n - cdata - No need to install anything, just wrapps text in ``\r\n - [coffee-script](http://coffeescript.org/) - `npm install coffee-script`\r\n - [cson](https://github.com/bevry/cson) - coffee-script based JSON format\r\n - markdown - You can use `marked`, `supermarked`, `markdown-js` or `markdown`\r\n - [component-js](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}`\r\n - [component-css](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}`\r\n - [html2jade](http://documentup.com/donpark/html2jade) [(website)](http://html2jade.aaron-powell.com/) - `npm install html2jade` - Converts HTML back into jade\r\n\r\nPull requests to add more transforms will always be accepted providing they are open-source, come with unit tests, and don't cause any of the tests to fail.\r\n\r\n## API\r\n\r\n The exported object `transformers` is a collection of named transformers. To access an individual transformer just do:\r\n\r\n ```javascript\r\n var transformer = require('transformers')['transformer-name']\r\n ```\r\n\r\n### Transformer\r\n\r\n The following options are given special meaning by `transformers`:\r\n\r\n - `filename` is set by transformers automatically if using the `renderFile` APIs. It is used if `cache` is enabled.\r\n - `cache` if true, the template function will be cached where possible (templates are still updated if you provide new options, so this can be used in most live applications).\r\n - `sudoSync` used internally to put some asyncronous transformers into \"sudo syncronous\" mode. Don't touch this.\r\n - `minify` if set to true on a transformer that isn't a minifier, it will cause the output to be minified. e.g. `coffeeScript.renderSync(str, {minify: true})` will result in minified JavaScript.\r\n\r\n#### Transformer.engines\r\n\r\n Returns an array of engines that can be used to power this transformer. The first of these that's installed will be used for the transformation.\r\n\r\n To enable a transformation just take `[engine] = Transformer.engines[0]` and then do `npm install [engine]`. If `[engine]` is `.` there is no need to install an engine from npm to use the transformer.\r\n\r\n#### Transformer.render(str, options, cb)\r\n\r\n Tranform the string `str` using the `Transformer` with the provided options and call the callback `cb(err, res)`.\r\n\r\n If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise.\r\n\r\n#### Transformer.renderSync(str, options)\r\n\r\n Synchronous version of `Transformer.render`\r\n\r\n#### Transformer.renderFile(filename, options, cb)\r\n\r\n Reads the file at filename into `str` and sets `options.filename = filename` then calls `Transform.render(str, options, cb)`.\r\n\r\n If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise.\r\n\r\n#### Tranformer.renderFileSync(filename, options)\r\n\r\n Synchronous version of `Tranformer.renderFile`\r\n\r\n#### Transformer.outputFormat\r\n\r\n A string, one of:\r\n\r\n - `'xml'`\r\n - `'css'`\r\n - `'js'`\r\n - `'json'`\r\n - `'text'`\r\n\r\nAdding to this list will **not** result in a major version change, so you should handle unexpected types gracefully (I'd suggest default to assuming `'text'`).\r\n\r\n#### Transformer.sync\r\n\r\n `true` if the transformer can be used syncronously, `false` otherwise.\r\n\r\n## Libraries that don't work synchronously\r\n\r\n The following transformations will always throw an exception if you attempt to run them synchronously:\r\n\r\n 1. dust\r\n 2. qejs\r\n 3. html2jade\r\n\r\nThe following transformations sometimes throw an exception if run syncronously, typically they only throw an exception if you are doing something like including another file. If you are not doing the things that cause them to fail then they are consistently safe to use syncronously.\r\n\r\n - jade (only when using `then-jade` instead of `jade`)\r\n - less (when `@import` is used with a url instead of a filename)\r\n - jazz (When one of the functions passed as locals is asyncronous)\r\n\r\nThe following libraries look like they might sometimes throw exceptions when used syncronously (if you read the source) but they never actually do so:\r\n\r\n - just\r\n - ect\r\n - stylus", + "bugs": { + "url": "https://github.com/ForbesLindesay/transformers/issues" + }, + "_id": "transformers@2.0.1", + "_from": "transformers@2.0.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css new file mode 100644 index 0000000..7519e93 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css @@ -0,0 +1,6 @@ +#foo { + name: 'bar'; +} +#baz { + name: 'bing'; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js new file mode 100644 index 0000000..51b9b2e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js @@ -0,0 +1,1235 @@ + + +/** + * hasOwnProperty. + */ + +var has = Object.prototype.hasOwnProperty; + +/** + * Require the given path. + * + * @param {String} path + * @return {Object} exports + * @api public + */ + +function require(path, parent, orig) { + var resolved = require.resolve(path); + + // lookup failed + if (null == resolved) { + orig = orig || path; + parent = parent || 'root'; + var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); + err.path = orig; + err.parent = parent; + err.require = true; + throw err; + } + + var module = require.modules[resolved]; + + // perform real require() + // by invoking the module's + // registered function + if (!module.exports) { + module.exports = {}; + module.client = module.component = true; + module.call(this, module.exports, require.relative(resolved), module); + } + + return module.exports; +} + +/** + * Registered modules. + */ + +require.modules = {}; + +/** + * Registered aliases. + */ + +require.aliases = {}; + +/** + * Resolve `path`. + * + * Lookup: + * + * - PATH/index.js + * - PATH.js + * - PATH + * + * @param {String} path + * @return {String} path or null + * @api private + */ + +require.resolve = function(path) { + if (path.charAt(0) === '/') path = path.slice(1); + var index = path + '/index.js'; + + var paths = [ + path, + path + '.js', + path + '.json', + path + '/index.js', + path + '/index.json' + ]; + + for (var i = 0; i < paths.length; i++) { + var path = paths[i]; + if (has.call(require.modules, path)) return path; + } + + if (has.call(require.aliases, index)) { + return require.aliases[index]; + } +}; + +/** + * Normalize `path` relative to the current path. + * + * @param {String} curr + * @param {String} path + * @return {String} + * @api private + */ + +require.normalize = function(curr, path) { + var segs = []; + + if ('.' != path.charAt(0)) return path; + + curr = curr.split('/'); + path = path.split('/'); + + for (var i = 0; i < path.length; ++i) { + if ('..' == path[i]) { + curr.pop(); + } else if ('.' != path[i] && '' != path[i]) { + segs.push(path[i]); + } + } + + return curr.concat(segs).join('/'); +}; + +/** + * Register module at `path` with callback `definition`. + * + * @param {String} path + * @param {Function} definition + * @api private + */ + +require.register = function(path, definition) { + require.modules[path] = definition; +}; + +/** + * Alias a module definition. + * + * @param {String} from + * @param {String} to + * @api private + */ + +require.alias = function(from, to) { + if (!has.call(require.modules, from)) { + throw new Error('Failed to alias "' + from + '", it does not exist'); + } + require.aliases[to] = from; +}; + +/** + * Return a require function relative to the `parent` path. + * + * @param {String} parent + * @return {Function} + * @api private + */ + +require.relative = function(parent) { + var p = require.normalize(parent, '..'); + + /** + * lastIndexOf helper. + */ + + function lastIndexOf(arr, obj) { + var i = arr.length; + while (i--) { + if (arr[i] === obj) return i; + } + return -1; + } + + /** + * The relative require() itself. + */ + + function localRequire(path) { + var resolved = localRequire.resolve(path); + return require(resolved, parent, path); + } + + /** + * Resolve relative to the parent. + */ + + localRequire.resolve = function(path) { + var c = path.charAt(0); + if ('/' == c) return path.slice(1); + if ('.' == c) return require.normalize(p, path); + + // resolve deps by returning + // the dep in the nearest "deps" + // directory + var segs = parent.split('/'); + var i = lastIndexOf(segs, 'deps') + 1; + if (!i) i = 0; + path = segs.slice(0, i + 1).join('/') + '/deps/' + path; + return path; + }; + + /** + * Check if module is defined at `path`. + */ + + localRequire.exists = function(path) { + return has.call(require.modules, localRequire.resolve(path)); + }; + + return localRequire; +}; +require.register("component-type/index.js", function(exports, require, module){ + +/** + * toString ref. + */ + +var toString = Object.prototype.toString; + +/** + * Return the type of `val`. + * + * @param {Mixed} val + * @return {String} + * @api public + */ + +module.exports = function(val){ + switch (toString.call(val)) { + case '[object Function]': return 'function'; + case '[object Date]': return 'date'; + case '[object RegExp]': return 'regexp'; + case '[object Arguments]': return 'arguments'; + case '[object Array]': return 'array'; + case '[object String]': return 'string'; + } + + if (val === null) return 'null'; + if (val === undefined) return 'undefined'; + if (val === Object(val)) return 'object'; + + return typeof val; +}; + +}); +require.register("component-event/index.js", function(exports, require, module){ + +/** + * Bind `el` event `type` to `fn`. + * + * @param {Element} el + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @return {Function} + * @api public + */ + +exports.bind = function(el, type, fn, capture){ + if (el.addEventListener) { + el.addEventListener(type, fn, capture); + } else { + el.attachEvent('on' + type, fn); + } + return fn; +}; + +/** + * Unbind `el` event `type`'s callback `fn`. + * + * @param {Element} el + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @return {Function} + * @api public + */ + +exports.unbind = function(el, type, fn, capture){ + if (el.removeEventListener) { + el.removeEventListener(type, fn, capture); + } else { + el.detachEvent('on' + type, fn); + } + return fn; +}; + +}); +require.register("component-matches-selector/index.js", function(exports, require, module){ + +/** + * Element prototype. + */ + +var proto = Element.prototype; + +/** + * Vendor function. + */ + +var vendor = proto.matchesSelector + || proto.webkitMatchesSelector + || proto.mozMatchesSelector + || proto.msMatchesSelector + || proto.oMatchesSelector; + +/** + * Expose `match()`. + */ + +module.exports = match; + +/** + * Match `el` to `selector`. + * + * @param {Element} el + * @param {String} selector + * @return {Boolean} + * @api public + */ + +function match(el, selector) { + if (vendor) return vendor.call(el, selector); + var nodes = el.parentNode.querySelectorAll(selector); + for (var i = 0; i < nodes.length; ++i) { + if (nodes[i] == el) return true; + } + return false; +} +}); +require.register("component-delegate/index.js", function(exports, require, module){ + +/** + * Module dependencies. + */ + +var matches = require('matches-selector') + , event = require('event'); + +/** + * Delegate event `type` to `selector` + * and invoke `fn(e)`. A callback function + * is returned which may be passed to `.unbind()`. + * + * @param {Element} el + * @param {String} selector + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @return {Function} + * @api public + */ + +exports.bind = function(el, selector, type, fn, capture){ + return event.bind(el, type, function(e){ + if (matches(e.target, selector)) fn(e); + }, capture); + return callback; +}; + +/** + * Unbind event `type`'s callback `fn`. + * + * @param {Element} el + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @api public + */ + +exports.unbind = function(el, type, fn, capture){ + event.unbind(el, type, fn, capture); +}; + +}); +require.register("component-indexof/index.js", function(exports, require, module){ + +var indexOf = [].indexOf; + +module.exports = function(arr, obj){ + if (indexOf) return arr.indexOf(obj); + for (var i = 0; i < arr.length; ++i) { + if (arr[i] === obj) return i; + } + return -1; +}; +}); +require.register("component-domify/index.js", function(exports, require, module){ + +/** + * Expose `parse`. + */ + +module.exports = parse; + +/** + * Wrap map from jquery. + */ + +var map = { + option: [1, ''], + optgroup: [1, ''], + legend: [1, '
    ', '
    '], + thead: [1, '', '
    '], + tbody: [1, '', '
    '], + tfoot: [1, '', '
    '], + colgroup: [1, '', '
    '], + caption: [1, '', '
    '], + tr: [2, '', '
    '], + td: [3, '', '
    '], + th: [3, '', '
    '], + col: [2, '', '
    '], + _default: [0, '', ''] +}; + +/** + * Parse `html` and return the children. + * + * @param {String} html + * @return {Array} + * @api private + */ + +function parse(html) { + if ('string' != typeof html) throw new TypeError('String expected'); + + // tag name + var m = /<([\w:]+)/.exec(html); + if (!m) throw new Error('No elements were generated.'); + var tag = m[1]; + + // body support + if (tag == 'body') { + var el = document.createElement('html'); + el.innerHTML = html; + return [el.removeChild(el.lastChild)]; + } + + // wrap map + var wrap = map[tag] || map._default; + var depth = wrap[0]; + var prefix = wrap[1]; + var suffix = wrap[2]; + var el = document.createElement('div'); + el.innerHTML = prefix + html + suffix; + while (depth--) el = el.lastChild; + + return orphan(el.children); +} + +/** + * Orphan `els` and return an array. + * + * @param {NodeList} els + * @return {Array} + * @api private + */ + +function orphan(els) { + var ret = []; + + while (els.length) { + ret.push(els[0].parentNode.removeChild(els[0])); + } + + return ret; +} + +}); +require.register("component-classes/index.js", function(exports, require, module){ + +/** + * Module dependencies. + */ + +var index = require('indexof'); + +/** + * Whitespace regexp. + */ + +var re = /\s+/; + +/** + * toString reference. + */ + +var toString = Object.prototype.toString; + +/** + * Wrap `el` in a `ClassList`. + * + * @param {Element} el + * @return {ClassList} + * @api public + */ + +module.exports = function(el){ + return new ClassList(el); +}; + +/** + * Initialize a new ClassList for `el`. + * + * @param {Element} el + * @api private + */ + +function ClassList(el) { + this.el = el; + this.list = el.classList; +} + +/** + * Add class `name` if not already present. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.add = function(name){ + // classList + if (this.list) { + this.list.add(name); + return this; + } + + // fallback + var arr = this.array(); + var i = index(arr, name); + if (!~i) arr.push(name); + this.el.className = arr.join(' '); + return this; +}; + +/** + * Remove class `name` when present, or + * pass a regular expression to remove + * any which match. + * + * @param {String|RegExp} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.remove = function(name){ + if ('[object RegExp]' == toString.call(name)) { + return this.removeMatching(name); + } + + // classList + if (this.list) { + this.list.remove(name); + return this; + } + + // fallback + var arr = this.array(); + var i = index(arr, name); + if (~i) arr.splice(i, 1); + this.el.className = arr.join(' '); + return this; +}; + +/** + * Remove all classes matching `re`. + * + * @param {RegExp} re + * @return {ClassList} + * @api private + */ + +ClassList.prototype.removeMatching = function(re){ + var arr = this.array(); + for (var i = 0; i < arr.length; i++) { + if (re.test(arr[i])) { + this.remove(arr[i]); + } + } + return this; +}; + +/** + * Toggle class `name`. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.toggle = function(name){ + // classList + if (this.list) { + this.list.toggle(name); + return this; + } + + // fallback + if (this.has(name)) { + this.remove(name); + } else { + this.add(name); + } + return this; +}; + +/** + * Return an array of classes. + * + * @return {Array} + * @api public + */ + +ClassList.prototype.array = function(){ + var arr = this.el.className.split(re); + if ('' === arr[0]) arr.pop(); + return arr; +}; + +/** + * Check if class `name` is present. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.has = +ClassList.prototype.contains = function(name){ + return this.list + ? this.list.contains(name) + : !! ~index(this.array(), name); +}; + +}); +require.register("component-dom/index.js", function(exports, require, module){ +/** + * Module dependencies. + */ + +var domify = require('domify') + , classes = require('classes') + , indexof = require('indexof') + , delegate = require('delegate') + , events = require('event') + , type = require('type') + +/** + * Attributes supported. + */ + +var attrs = [ + 'id', + 'src', + 'rel', + 'cols', + 'rows', + 'name', + 'href', + 'title', + 'style', + 'width', + 'height', + 'tabindex', + 'placeholder' +]; + +/** + * Expose `dom()`. + */ + +exports = module.exports = dom; + +/** + * Expose supported attrs. + */ + +exports.attrs = attrs; + +/** + * Return a dom `List` for the given + * `html`, selector, or element. + * + * @param {String|Element|List} + * @return {List} + * @api public + */ + +function dom(selector, context) { + var ctx = context + ? (context.els ? context.els[0] : context) + : document.firstChild; + + // array + if (Array.isArray(selector)) { + return new List(selector); + } + + // List + if (selector instanceof List) { + return selector; + } + + // node + if (selector.nodeName) { + return new List([selector]); + } + + // html + if ('<' == selector.charAt(0)) { + return new List([domify(selector)[0]], selector); + } + + // selector + if ('string' == typeof selector) { + return new List(ctx.querySelectorAll(selector), selector); + } +} + +/** + * Expose `List` constructor. + */ + +exports.List = List; + +/** + * Initialize a new `List` with the + * given array-ish of `els` and `selector` + * string. + * + * @param {Mixed} els + * @param {String} selector + * @api private + */ + +function List(els, selector) { + this.els = els || []; + this.selector = selector; +} + +/** + * Set attribute `name` to `val`, or get attr `name`. + * + * @param {String} name + * @param {String} [val] + * @return {String|List} self + * @api public + */ + +List.prototype.attr = function(name, val){ + if (2 == arguments.length) { + this.els[0].setAttribute(name, val); + return this; + } else { + return this.els[0].getAttribute(name); + } +}; + +/** + * Return a cloned `List` with all elements cloned. + * + * @return {List} + * @api public + */ + +List.prototype.clone = function(){ + var arr = []; + for (var i = 0, len = this.els.length; i < len; ++i) { + arr.push(this.els[i].cloneNode(true)); + } + return new List(arr); +}; + +/** + * Prepend `val`. + * + * @param {String|Element|List} val + * @return {List} self + * @api public + */ + +List.prototype.prepend = function(val){ + var el = this.els[0]; + if (!el) return this; + val = dom(val); + for (var i = 0; i < val.els.length; ++i) { + if (el.children.length) { + el.insertBefore(val.els[i], el.firstChild); + } else { + el.appendChild(val.els[i]); + } + } + return this; +}; + +/** + * Append `val`. + * + * @param {String|Element|List} val + * @return {List} self + * @api public + */ + +List.prototype.append = function(val){ + var el = this.els[0]; + if (!el) return this; + val = dom(val); + for (var i = 0; i < val.els.length; ++i) { + el.appendChild(val.els[i]); + } + return this; +}; + +/** + * Append self's `el` to `val` + * + * @param {String|Element|List} val + * @return {List} self + * @api public + */ + +List.prototype.appendTo = function(val){ + dom(val).append(this); +}; + +/** + * Return a `List` containing the element at `i`. + * + * @param {Number} i + * @return {List} + * @api public + */ + +List.prototype.at = function(i){ + return new List([this.els[i]], this.selector); +}; + +/** + * Return a `List` containing the first element. + * + * @param {Number} i + * @return {List} + * @api public + */ + +List.prototype.first = function(){ + return new List([this.els[0]], this.selector); +}; + +/** + * Return a `List` containing the last element. + * + * @param {Number} i + * @return {List} + * @api public + */ + +List.prototype.last = function(){ + return new List([this.els[this.els.length - 1]], this.selector); +}; + +/** + * Return an `Element` at `i`. + * + * @param {Number} i + * @return {Element} + * @api public + */ + +List.prototype.get = function(i){ + return this.els[i]; +}; + +/** + * Return list length. + * + * @return {Number} + * @api public + */ + +List.prototype.length = function(){ + return this.els.length; +}; + +/** + * Return element text. + * + * @return {String} + * @api public + */ + +List.prototype.text = function(){ + // TODO: real impl + var str = ''; + for (var i = 0; i < this.els.length; ++i) { + str += this.els[i].textContent; + } + return str; +}; + +/** + * Return element html. + * + * @return {String} + * @api public + */ + +List.prototype.html = function(){ + // TODO: real impl + return this.els[0] && this.els[0].innerHTML; +}; + +/** + * Bind to `event` and invoke `fn(e)`. When + * a `selector` is given then events are delegated. + * + * @param {String} event + * @param {String} [selector] + * @param {Function} fn + * @param {Boolean} capture + * @return {List} + * @api public + */ + +List.prototype.on = function(event, selector, fn, capture){ + if ('string' == typeof selector) { + for (var i = 0; i < this.els.length; ++i) { + fn._delegate = delegate.bind(this.els[i], selector, event, fn, capture); + } + return this; + } + + capture = fn; + fn = selector; + + for (var i = 0; i < this.els.length; ++i) { + events.bind(this.els[i], event, fn, capture); + } + + return this; +}; + +/** + * Unbind to `event` and invoke `fn(e)`. When + * a `selector` is given then delegated event + * handlers are unbound. + * + * @param {String} event + * @param {String} [selector] + * @param {Function} fn + * @param {Boolean} capture + * @return {List} + * @api public + */ + +List.prototype.off = function(event, selector, fn, capture){ + if ('string' == typeof selector) { + for (var i = 0; i < this.els.length; ++i) { + // TODO: add selector support back + delegate.unbind(this.els[i], event, fn._delegate, capture); + } + return this; + } + + capture = fn; + fn = selector; + + for (var i = 0; i < this.els.length; ++i) { + events.unbind(this.els[i], event, fn, capture); + } + return this; +}; + +/** + * Iterate elements and invoke `fn(list, i)`. + * + * @param {Function} fn + * @return {List} self + * @api public + */ + +List.prototype.each = function(fn){ + for (var i = 0; i < this.els.length; ++i) { + fn(new List([this.els[i]], this.selector), i); + } + return this; +}; + +/** + * Iterate elements and invoke `fn(el, i)`. + * + * @param {Function} fn + * @return {List} self + * @api public + */ + +List.prototype.forEach = function(fn){ + for (var i = 0; i < this.els.length; ++i) { + fn(this.els[i], i); + } + return this; +}; + +/** + * Map elements invoking `fn(list, i)`. + * + * @param {Function} fn + * @return {Array} + * @api public + */ + +List.prototype.map = function(fn){ + var arr = []; + for (var i = 0; i < this.els.length; ++i) { + arr.push(fn(new List([this.els[i]], this.selector), i)); + } + return arr; +}; + +/** + * Filter elements invoking `fn(list, i)`, returning + * a new `List` of elements when a truthy value is returned. + * + * @param {Function} fn + * @return {List} + * @api public + */ + +List.prototype.select = +List.prototype.filter = function(fn){ + var el; + var list = new List([], this.selector); + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + if (fn(new List([el], this.selector), i)) list.els.push(el); + } + return list; +}; + +/** + * Add the given class `name`. + * + * @param {String} name + * @return {List} self + * @api public + */ + +List.prototype.addClass = function(name){ + var el; + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + el._classes.add(name); + } + return this; +}; + +/** + * Remove the given class `name`. + * + * @param {String|RegExp} name + * @return {List} self + * @api public + */ + +List.prototype.removeClass = function(name){ + var el; + + if ('regexp' == type(name)) { + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + var arr = el._classes.array(); + for (var j = 0; j < arr.length; j++) { + if (name.test(arr[j])) { + el._classes.remove(arr[j]); + } + } + } + return this; + } + + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + el._classes.remove(name); + } + + return this; +}; + +/** + * Toggle the given class `name`, + * optionally a `bool` may be given + * to indicate that the class should + * be added when truthy. + * + * @param {String} name + * @param {Boolean} bool + * @return {List} self + * @api public + */ + +List.prototype.toggleClass = function(name, bool){ + var el; + var fn = 'toggle'; + + // toggle with boolean + if (2 == arguments.length) { + fn = bool ? 'add' : 'remove'; + } + + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + el._classes[fn](name); + } + + return this; +}; + +/** + * Check if the given class `name` is present. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +List.prototype.hasClass = function(name){ + var el; + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + if (el._classes.has(name)) return true; + } + return false; +}; + +/** + * Set CSS `prop` to `val` or get `prop` value. + * + * @param {String} prop + * @param {Mixed} val + * @return {List|String} + * @api public + */ + +List.prototype.css = function(prop, val){ + if (2 == arguments.length) return this.setStyle(prop, val); + return this.getStyle(prop); +}; + +/** + * Set CSS `prop` to `val`. + * + * @param {String} prop + * @param {Mixed} val + * @return {List} self + * @api private + */ + +List.prototype.setStyle = function(prop, val){ + for (var i = 0; i < this.els.length; ++i) { + this.els[i].style[prop] = val; + } + return this; +}; + +/** + * Get CSS `prop` value. + * + * @param {String} prop + * @return {String} + * @api private + */ + +List.prototype.getStyle = function(prop){ + var el = this.els[0]; + if (el) return el.style[prop]; +}; + +/** + * Find children matching the given `selector`. + * + * @param {String} selector + * @return {List} + * @api public + */ + +List.prototype.find = function(selector){ + // TODO: real implementation + var list = new List([], this.selector); + var el, els; + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + els = el.querySelectorAll(selector); + for (var j = 0; j < els.length; ++j) { + list.els.push(els[j]); + } + } + return list; +}; + +/** + * Attribute accessors. + */ + +attrs.forEach(function(name){ + List.prototype[name] = function(val){ + if (0 == arguments.length) return this.attr(name); + return this.attr(name, val); + }; +}); + + +}); +require.register("foo/index.js", function(exports, require, module){ +module.exports = 'foo'; +}); +require.alias("component-dom/index.js", "foo/deps/dom/index.js"); +require.alias("component-type/index.js", "component-dom/deps/type/index.js"); + +require.alias("component-event/index.js", "component-dom/deps/event/index.js"); + +require.alias("component-delegate/index.js", "component-dom/deps/delegate/index.js"); +require.alias("component-matches-selector/index.js", "component-delegate/deps/matches-selector/index.js"); + +require.alias("component-event/index.js", "component-delegate/deps/event/index.js"); + +require.alias("component-indexof/index.js", "component-dom/deps/indexof/index.js"); + +require.alias("component-domify/index.js", "component-dom/deps/domify/index.js"); + +require.alias("component-classes/index.js", "component-dom/deps/classes/index.js"); +require.alias("component-indexof/index.js", "component-classes/deps/indexof/index.js"); + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json new file mode 100644 index 0000000..d24701d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json @@ -0,0 +1,8 @@ +{ + "name": "foo", + "scripts": ["index.js"], + "styles": ["index.css", "second.css"], + "dependencies": { + "component/dom": "*" + } +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json new file mode 100644 index 0000000..0c67e32 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json @@ -0,0 +1,19 @@ +{ + "name": "classes", + "version": "1.1.0", + "description": "Cross-browser element class list", + "keywords": [ + "dom", + "html", + "classList", + "class", + "ui" + ], + "scripts": [ + "index.js" + ], + "dependencies": { + "component/indexof": "*" + }, + "repo": "https://raw.github.com/component/classes" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js new file mode 100644 index 0000000..e3a30d5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js @@ -0,0 +1,164 @@ + +/** + * Module dependencies. + */ + +var index = require('indexof'); + +/** + * Whitespace regexp. + */ + +var re = /\s+/; + +/** + * toString reference. + */ + +var toString = Object.prototype.toString; + +/** + * Wrap `el` in a `ClassList`. + * + * @param {Element} el + * @return {ClassList} + * @api public + */ + +module.exports = function(el){ + return new ClassList(el); +}; + +/** + * Initialize a new ClassList for `el`. + * + * @param {Element} el + * @api private + */ + +function ClassList(el) { + this.el = el; + this.list = el.classList; +} + +/** + * Add class `name` if not already present. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.add = function(name){ + // classList + if (this.list) { + this.list.add(name); + return this; + } + + // fallback + var arr = this.array(); + var i = index(arr, name); + if (!~i) arr.push(name); + this.el.className = arr.join(' '); + return this; +}; + +/** + * Remove class `name` when present, or + * pass a regular expression to remove + * any which match. + * + * @param {String|RegExp} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.remove = function(name){ + if ('[object RegExp]' == toString.call(name)) { + return this.removeMatching(name); + } + + // classList + if (this.list) { + this.list.remove(name); + return this; + } + + // fallback + var arr = this.array(); + var i = index(arr, name); + if (~i) arr.splice(i, 1); + this.el.className = arr.join(' '); + return this; +}; + +/** + * Remove all classes matching `re`. + * + * @param {RegExp} re + * @return {ClassList} + * @api private + */ + +ClassList.prototype.removeMatching = function(re){ + var arr = this.array(); + for (var i = 0; i < arr.length; i++) { + if (re.test(arr[i])) { + this.remove(arr[i]); + } + } + return this; +}; + +/** + * Toggle class `name`. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.toggle = function(name){ + // classList + if (this.list) { + this.list.toggle(name); + return this; + } + + // fallback + if (this.has(name)) { + this.remove(name); + } else { + this.add(name); + } + return this; +}; + +/** + * Return an array of classes. + * + * @return {Array} + * @api public + */ + +ClassList.prototype.array = function(){ + var arr = this.el.className.split(re); + if ('' === arr[0]) arr.pop(); + return arr; +}; + +/** + * Check if class `name` is present. + * + * @param {String} name + * @return {ClassList} + * @api public + */ + +ClassList.prototype.has = +ClassList.prototype.contains = function(name){ + return this.list + ? this.list.contains(name) + : !! ~index(this.array(), name); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json new file mode 100644 index 0000000..8461aa4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json @@ -0,0 +1,19 @@ +{ + "name": "delegate", + "repo": "component/delegate", + "description": "Event delegation component", + "version": "0.1.0", + "keywords": [ + "event", + "events", + "delegate", + "delegation" + ], + "dependencies": { + "component/matches-selector": "*", + "component/event": "*" + }, + "scripts": [ + "index.js" + ] +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js new file mode 100644 index 0000000..03b9f9e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js @@ -0,0 +1,42 @@ + +/** + * Module dependencies. + */ + +var matches = require('matches-selector') + , event = require('event'); + +/** + * Delegate event `type` to `selector` + * and invoke `fn(e)`. A callback function + * is returned which may be passed to `.unbind()`. + * + * @param {Element} el + * @param {String} selector + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @return {Function} + * @api public + */ + +exports.bind = function(el, selector, type, fn, capture){ + return event.bind(el, type, function(e){ + if (matches(e.target, selector)) fn(e); + }, capture); + return callback; +}; + +/** + * Unbind event `type`'s callback `fn`. + * + * @param {Element} el + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @api public + */ + +exports.unbind = function(el, type, fn, capture){ + event.unbind(el, type, fn, capture); +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json new file mode 100644 index 0000000..6aa448c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json @@ -0,0 +1,27 @@ +{ + "name": "dom", + "version": "0.1.0", + "description": "DOM traversal, manipulation and events aggregate library", + "keywords": [ + "html", + "dom", + "ui", + "jquery" + ], + "scripts": [ + "index.js" + ], + "dependencies": { + "component/type": "*", + "component/event": "*", + "component/delegate": "*", + "component/indexof": "*", + "component/domify": "*", + "component/classes": "*" + }, + "development": { + "component/assert": "*" + }, + "license": "MIT", + "repo": "https://raw.github.com/component/dom" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js new file mode 100644 index 0000000..0f9df95 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js @@ -0,0 +1,579 @@ +/** + * Module dependencies. + */ + +var domify = require('domify') + , classes = require('classes') + , indexof = require('indexof') + , delegate = require('delegate') + , events = require('event') + , type = require('type') + +/** + * Attributes supported. + */ + +var attrs = [ + 'id', + 'src', + 'rel', + 'cols', + 'rows', + 'name', + 'href', + 'title', + 'style', + 'width', + 'height', + 'tabindex', + 'placeholder' +]; + +/** + * Expose `dom()`. + */ + +exports = module.exports = dom; + +/** + * Expose supported attrs. + */ + +exports.attrs = attrs; + +/** + * Return a dom `List` for the given + * `html`, selector, or element. + * + * @param {String|Element|List} + * @return {List} + * @api public + */ + +function dom(selector, context) { + var ctx = context + ? (context.els ? context.els[0] : context) + : document.firstChild; + + // array + if (Array.isArray(selector)) { + return new List(selector); + } + + // List + if (selector instanceof List) { + return selector; + } + + // node + if (selector.nodeName) { + return new List([selector]); + } + + // html + if ('<' == selector.charAt(0)) { + return new List([domify(selector)[0]], selector); + } + + // selector + if ('string' == typeof selector) { + return new List(ctx.querySelectorAll(selector), selector); + } +} + +/** + * Expose `List` constructor. + */ + +exports.List = List; + +/** + * Initialize a new `List` with the + * given array-ish of `els` and `selector` + * string. + * + * @param {Mixed} els + * @param {String} selector + * @api private + */ + +function List(els, selector) { + this.els = els || []; + this.selector = selector; +} + +/** + * Set attribute `name` to `val`, or get attr `name`. + * + * @param {String} name + * @param {String} [val] + * @return {String|List} self + * @api public + */ + +List.prototype.attr = function(name, val){ + if (2 == arguments.length) { + this.els[0].setAttribute(name, val); + return this; + } else { + return this.els[0].getAttribute(name); + } +}; + +/** + * Return a cloned `List` with all elements cloned. + * + * @return {List} + * @api public + */ + +List.prototype.clone = function(){ + var arr = []; + for (var i = 0, len = this.els.length; i < len; ++i) { + arr.push(this.els[i].cloneNode(true)); + } + return new List(arr); +}; + +/** + * Prepend `val`. + * + * @param {String|Element|List} val + * @return {List} self + * @api public + */ + +List.prototype.prepend = function(val){ + var el = this.els[0]; + if (!el) return this; + val = dom(val); + for (var i = 0; i < val.els.length; ++i) { + if (el.children.length) { + el.insertBefore(val.els[i], el.firstChild); + } else { + el.appendChild(val.els[i]); + } + } + return this; +}; + +/** + * Append `val`. + * + * @param {String|Element|List} val + * @return {List} self + * @api public + */ + +List.prototype.append = function(val){ + var el = this.els[0]; + if (!el) return this; + val = dom(val); + for (var i = 0; i < val.els.length; ++i) { + el.appendChild(val.els[i]); + } + return this; +}; + +/** + * Append self's `el` to `val` + * + * @param {String|Element|List} val + * @return {List} self + * @api public + */ + +List.prototype.appendTo = function(val){ + dom(val).append(this); +}; + +/** + * Return a `List` containing the element at `i`. + * + * @param {Number} i + * @return {List} + * @api public + */ + +List.prototype.at = function(i){ + return new List([this.els[i]], this.selector); +}; + +/** + * Return a `List` containing the first element. + * + * @param {Number} i + * @return {List} + * @api public + */ + +List.prototype.first = function(){ + return new List([this.els[0]], this.selector); +}; + +/** + * Return a `List` containing the last element. + * + * @param {Number} i + * @return {List} + * @api public + */ + +List.prototype.last = function(){ + return new List([this.els[this.els.length - 1]], this.selector); +}; + +/** + * Return an `Element` at `i`. + * + * @param {Number} i + * @return {Element} + * @api public + */ + +List.prototype.get = function(i){ + return this.els[i]; +}; + +/** + * Return list length. + * + * @return {Number} + * @api public + */ + +List.prototype.length = function(){ + return this.els.length; +}; + +/** + * Return element text. + * + * @return {String} + * @api public + */ + +List.prototype.text = function(){ + // TODO: real impl + var str = ''; + for (var i = 0; i < this.els.length; ++i) { + str += this.els[i].textContent; + } + return str; +}; + +/** + * Return element html. + * + * @return {String} + * @api public + */ + +List.prototype.html = function(){ + // TODO: real impl + return this.els[0] && this.els[0].innerHTML; +}; + +/** + * Bind to `event` and invoke `fn(e)`. When + * a `selector` is given then events are delegated. + * + * @param {String} event + * @param {String} [selector] + * @param {Function} fn + * @param {Boolean} capture + * @return {List} + * @api public + */ + +List.prototype.on = function(event, selector, fn, capture){ + if ('string' == typeof selector) { + for (var i = 0; i < this.els.length; ++i) { + fn._delegate = delegate.bind(this.els[i], selector, event, fn, capture); + } + return this; + } + + capture = fn; + fn = selector; + + for (var i = 0; i < this.els.length; ++i) { + events.bind(this.els[i], event, fn, capture); + } + + return this; +}; + +/** + * Unbind to `event` and invoke `fn(e)`. When + * a `selector` is given then delegated event + * handlers are unbound. + * + * @param {String} event + * @param {String} [selector] + * @param {Function} fn + * @param {Boolean} capture + * @return {List} + * @api public + */ + +List.prototype.off = function(event, selector, fn, capture){ + if ('string' == typeof selector) { + for (var i = 0; i < this.els.length; ++i) { + // TODO: add selector support back + delegate.unbind(this.els[i], event, fn._delegate, capture); + } + return this; + } + + capture = fn; + fn = selector; + + for (var i = 0; i < this.els.length; ++i) { + events.unbind(this.els[i], event, fn, capture); + } + return this; +}; + +/** + * Iterate elements and invoke `fn(list, i)`. + * + * @param {Function} fn + * @return {List} self + * @api public + */ + +List.prototype.each = function(fn){ + for (var i = 0; i < this.els.length; ++i) { + fn(new List([this.els[i]], this.selector), i); + } + return this; +}; + +/** + * Iterate elements and invoke `fn(el, i)`. + * + * @param {Function} fn + * @return {List} self + * @api public + */ + +List.prototype.forEach = function(fn){ + for (var i = 0; i < this.els.length; ++i) { + fn(this.els[i], i); + } + return this; +}; + +/** + * Map elements invoking `fn(list, i)`. + * + * @param {Function} fn + * @return {Array} + * @api public + */ + +List.prototype.map = function(fn){ + var arr = []; + for (var i = 0; i < this.els.length; ++i) { + arr.push(fn(new List([this.els[i]], this.selector), i)); + } + return arr; +}; + +/** + * Filter elements invoking `fn(list, i)`, returning + * a new `List` of elements when a truthy value is returned. + * + * @param {Function} fn + * @return {List} + * @api public + */ + +List.prototype.select = +List.prototype.filter = function(fn){ + var el; + var list = new List([], this.selector); + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + if (fn(new List([el], this.selector), i)) list.els.push(el); + } + return list; +}; + +/** + * Add the given class `name`. + * + * @param {String} name + * @return {List} self + * @api public + */ + +List.prototype.addClass = function(name){ + var el; + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + el._classes.add(name); + } + return this; +}; + +/** + * Remove the given class `name`. + * + * @param {String|RegExp} name + * @return {List} self + * @api public + */ + +List.prototype.removeClass = function(name){ + var el; + + if ('regexp' == type(name)) { + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + var arr = el._classes.array(); + for (var j = 0; j < arr.length; j++) { + if (name.test(arr[j])) { + el._classes.remove(arr[j]); + } + } + } + return this; + } + + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + el._classes.remove(name); + } + + return this; +}; + +/** + * Toggle the given class `name`, + * optionally a `bool` may be given + * to indicate that the class should + * be added when truthy. + * + * @param {String} name + * @param {Boolean} bool + * @return {List} self + * @api public + */ + +List.prototype.toggleClass = function(name, bool){ + var el; + var fn = 'toggle'; + + // toggle with boolean + if (2 == arguments.length) { + fn = bool ? 'add' : 'remove'; + } + + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + el._classes[fn](name); + } + + return this; +}; + +/** + * Check if the given class `name` is present. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +List.prototype.hasClass = function(name){ + var el; + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + el._classes = el._classes || classes(el); + if (el._classes.has(name)) return true; + } + return false; +}; + +/** + * Set CSS `prop` to `val` or get `prop` value. + * + * @param {String} prop + * @param {Mixed} val + * @return {List|String} + * @api public + */ + +List.prototype.css = function(prop, val){ + if (2 == arguments.length) return this.setStyle(prop, val); + return this.getStyle(prop); +}; + +/** + * Set CSS `prop` to `val`. + * + * @param {String} prop + * @param {Mixed} val + * @return {List} self + * @api private + */ + +List.prototype.setStyle = function(prop, val){ + for (var i = 0; i < this.els.length; ++i) { + this.els[i].style[prop] = val; + } + return this; +}; + +/** + * Get CSS `prop` value. + * + * @param {String} prop + * @return {String} + * @api private + */ + +List.prototype.getStyle = function(prop){ + var el = this.els[0]; + if (el) return el.style[prop]; +}; + +/** + * Find children matching the given `selector`. + * + * @param {String} selector + * @return {List} + * @api public + */ + +List.prototype.find = function(selector){ + // TODO: real implementation + var list = new List([], this.selector); + var el, els; + for (var i = 0; i < this.els.length; ++i) { + el = this.els[i]; + els = el.querySelectorAll(selector); + for (var j = 0; j < els.length; ++j) { + list.els.push(els[j]); + } + } + return list; +}; + +/** + * Attribute accessors. + */ + +attrs.forEach(function(name){ + List.prototype[name] = function(val){ + if (0 == arguments.length) return this.attr(name); + return this.attr(name, val); + }; +}); + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json new file mode 100644 index 0000000..95fff1f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json @@ -0,0 +1,20 @@ +{ + "name": "domify", + "version": "0.1.0", + "description": "turn HTML into DOM elements", + "scripts": [ + "index.js" + ], + "development": { + "visionmedia/mocha-cloud": "*" + }, + "keywords": [ + "dom", + "html", + "client", + "browser", + "component" + ], + "license": "MIT", + "repo": "https://raw.github.com/component/domify" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js new file mode 100644 index 0000000..55eb1b5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js @@ -0,0 +1,79 @@ + +/** + * Expose `parse`. + */ + +module.exports = parse; + +/** + * Wrap map from jquery. + */ + +var map = { + option: [1, ''], + optgroup: [1, ''], + legend: [1, '
    ', '
    '], + thead: [1, '', '
    '], + tbody: [1, '', '
    '], + tfoot: [1, '', '
    '], + colgroup: [1, '', '
    '], + caption: [1, '', '
    '], + tr: [2, '', '
    '], + td: [3, '', '
    '], + th: [3, '', '
    '], + col: [2, '', '
    '], + _default: [0, '', ''] +}; + +/** + * Parse `html` and return the children. + * + * @param {String} html + * @return {Array} + * @api private + */ + +function parse(html) { + if ('string' != typeof html) throw new TypeError('String expected'); + + // tag name + var m = /<([\w:]+)/.exec(html); + if (!m) throw new Error('No elements were generated.'); + var tag = m[1]; + + // body support + if (tag == 'body') { + var el = document.createElement('html'); + el.innerHTML = html; + return [el.removeChild(el.lastChild)]; + } + + // wrap map + var wrap = map[tag] || map._default; + var depth = wrap[0]; + var prefix = wrap[1]; + var suffix = wrap[2]; + var el = document.createElement('div'); + el.innerHTML = prefix + html + suffix; + while (depth--) el = el.lastChild; + + return orphan(el.children); +} + +/** + * Orphan `els` and return an array. + * + * @param {NodeList} els + * @return {Array} + * @api private + */ + +function orphan(els) { + var ret = []; + + while (els.length) { + ret.push(els[0].parentNode.removeChild(els[0])); + } + + return ret; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json new file mode 100644 index 0000000..c20f5bf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json @@ -0,0 +1,13 @@ +{ + "name": "event", + "repo": "component/event", + "description": "Event binding component", + "version": "0.1.0", + "keywords": [ + "event", + "events" + ], + "scripts": [ + "index.js" + ] +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js new file mode 100644 index 0000000..f111b17 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js @@ -0,0 +1,40 @@ + +/** + * Bind `el` event `type` to `fn`. + * + * @param {Element} el + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @return {Function} + * @api public + */ + +exports.bind = function(el, type, fn, capture){ + if (el.addEventListener) { + el.addEventListener(type, fn, capture); + } else { + el.attachEvent('on' + type, fn); + } + return fn; +}; + +/** + * Unbind `el` event `type`'s callback `fn`. + * + * @param {Element} el + * @param {String} type + * @param {Function} fn + * @param {Boolean} capture + * @return {Function} + * @api public + */ + +exports.unbind = function(el, type, fn, capture){ + if (el.removeEventListener) { + el.removeEventListener(type, fn, capture); + } else { + el.detachEvent('on' + type, fn); + } + return fn; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json new file mode 100644 index 0000000..282e39c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json @@ -0,0 +1,15 @@ +{ + "name": "indexof", + "description": "Microsoft sucks", + "version": "0.0.1", + "keywords": [ + "index", + "array", + "indexOf" + ], + "dependencies": {}, + "scripts": [ + "index.js" + ], + "repo": "https://raw.github.com/component/indexof" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js new file mode 100644 index 0000000..9d9667b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js @@ -0,0 +1,10 @@ + +var indexOf = [].indexOf; + +module.exports = function(arr, obj){ + if (indexOf) return arr.indexOf(obj); + for (var i = 0; i < arr.length; ++i) { + if (arr[i] === obj) return i; + } + return -1; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json new file mode 100644 index 0000000..ea48be3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json @@ -0,0 +1,17 @@ +{ + "name": "matches-selector", + "repo": "component/matches-selector", + "description": "Check if an element matches a given selector", + "version": "0.0.1", + "keywords": [ + "match", + "element", + "selector" + ], + "development": { + "component/domify": "*" + }, + "scripts": [ + "index.js" + ] +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js new file mode 100644 index 0000000..8f67590 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js @@ -0,0 +1,40 @@ + +/** + * Element prototype. + */ + +var proto = Element.prototype; + +/** + * Vendor function. + */ + +var vendor = proto.matchesSelector + || proto.webkitMatchesSelector + || proto.mozMatchesSelector + || proto.msMatchesSelector + || proto.oMatchesSelector; + +/** + * Expose `match()`. + */ + +module.exports = match; + +/** + * Match `el` to `selector`. + * + * @param {Element} el + * @param {String} selector + * @return {Boolean} + * @api public + */ + +function match(el, selector) { + if (vendor) return vendor.call(el, selector); + var nodes = el.parentNode.querySelectorAll(selector); + for (var i = 0; i < nodes.length; ++i) { + if (nodes[i] == el) return true; + } + return false; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json new file mode 100644 index 0000000..901f736 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json @@ -0,0 +1,15 @@ +{ + "name": "type", + "description": "Cross-browser type assertions (less broken typeof)", + "version": "0.0.1", + "keywords": [ + "typeof", + "type", + "utility" + ], + "dependencies": {}, + "scripts": [ + "index.js" + ], + "repo": "https://raw.github.com/component/type" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js new file mode 100644 index 0000000..32f1fde --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js @@ -0,0 +1,31 @@ + +/** + * toString ref. + */ + +var toString = Object.prototype.toString; + +/** + * Return the type of `val`. + * + * @param {Mixed} val + * @return {String} + * @api public + */ + +module.exports = function(val){ + switch (toString.call(val)) { + case '[object Function]': return 'function'; + case '[object Date]': return 'date'; + case '[object RegExp]': return 'regexp'; + case '[object Arguments]': return 'arguments'; + case '[object Array]': return 'array'; + case '[object String]': return 'string'; + } + + if (val === null) return 'null'; + if (val === undefined) return 'undefined'; + if (val === Object(val)) return 'object'; + + return typeof val; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css new file mode 100644 index 0000000..80ed567 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css @@ -0,0 +1,3 @@ +#foo { + name: 'bar'; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js new file mode 100644 index 0000000..d00e0a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js @@ -0,0 +1 @@ +module.exports = 'foo'; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css new file mode 100644 index 0000000..6666a58 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css @@ -0,0 +1,3 @@ +#baz { + name: 'bing'; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js new file mode 100644 index 0000000..8a2f505 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js @@ -0,0 +1,6 @@ +(function (name) { + function hello(world) { + return 'Hello ' + world + '!'; + } + return hello(name); +}('Forbes Lindesay')); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt new file mode 100644 index 0000000..f5b9962 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt @@ -0,0 +1 @@ +

    {{user.name}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt new file mode 100644 index 0000000..3dcaa58 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt @@ -0,0 +1 @@ +{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt new file mode 100644 index 0000000..c88ab7c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt new file mode 100644 index 0000000..95d09f2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt @@ -0,0 +1 @@ +hello world \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt new file mode 100644 index 0000000..81540ec --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt new file mode 100644 index 0000000..b8f852e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt @@ -0,0 +1 @@ +goodbye world \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt new file mode 100644 index 0000000..a65ebe7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt @@ -0,0 +1,6 @@ +(function() { + var n; + + n = 4; + +}).call(this); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt new file mode 100644 index 0000000..a7c552d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt @@ -0,0 +1 @@ +n = 4; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt new file mode 100644 index 0000000..a65ebe7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt @@ -0,0 +1,6 @@ +(function() { + var n; + + n = 4; + +}).call(this); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt new file mode 100644 index 0000000..a7c552d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt @@ -0,0 +1 @@ +n = 4; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt new file mode 100644 index 0000000..c8be9c2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt @@ -0,0 +1 @@ +
    • foo
    • bar
    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt new file mode 100644 index 0000000..f369928 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt @@ -0,0 +1,3 @@ +ul -> + li 'foo' + li 'bar' \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt new file mode 100644 index 0000000..8c02a7f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt @@ -0,0 +1 @@ +
    1. foo
    2. bar
    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt new file mode 100644 index 0000000..f75d443 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt @@ -0,0 +1,3 @@ +ol -> + li 'foo' + li 'bar' \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt new file mode 100644 index 0000000..500bb12 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt @@ -0,0 +1 @@ +{"abc":["a","b","c"],"a":{"b":"c"}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt new file mode 100644 index 0000000..11c3d1d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt @@ -0,0 +1,9 @@ +{ + abc: [ + 'a' + 'b' + 'c' + ] + a: + b: 'c' +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt new file mode 100644 index 0000000..63d5fe1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt @@ -0,0 +1 @@ +{"abc":["a",5,"c"],"a":{"b":"c"}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt new file mode 100644 index 0000000..101b9f5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt @@ -0,0 +1,9 @@ +{ + abc: [ + 'a' + 5 + 'c' + ] + a: + b: 'c' +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt new file mode 100644 index 0000000..e2fc66c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt @@ -0,0 +1 @@ +

    {{=it.user.name}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt new file mode 100644 index 0000000..6ea9cf0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt @@ -0,0 +1 @@ +{{=it.user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt new file mode 100644 index 0000000..d2f6eeb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt @@ -0,0 +1 @@ +

    {user.name}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt new file mode 100644 index 0000000..d6a4bea --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt @@ -0,0 +1 @@ +{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt new file mode 100644 index 0000000..e95657f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt @@ -0,0 +1 @@ +

    <%= @user.name %>

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt new file mode 100644 index 0000000..a78ce39 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt @@ -0,0 +1 @@ +<%= @user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt new file mode 100644 index 0000000..e95657f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt @@ -0,0 +1 @@ +

    <%= @user.name %>

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt new file mode 100644 index 0000000..a78ce39 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt @@ -0,0 +1 @@ +<%= @user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt new file mode 100644 index 0000000..b015881 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt @@ -0,0 +1 @@ +

    <%= user.name %>

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt new file mode 100644 index 0000000..a55afc5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt @@ -0,0 +1 @@ +<%= user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt new file mode 100644 index 0000000..c6b8fb8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt @@ -0,0 +1 @@ +%p= @user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt new file mode 100644 index 0000000..d579cbe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt @@ -0,0 +1 @@ +%strong= @user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt new file mode 100644 index 0000000..a692f8f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt @@ -0,0 +1,2 @@ + +

    bob

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt new file mode 100644 index 0000000..166d315 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt @@ -0,0 +1 @@ +%p= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt new file mode 100644 index 0000000..8260b87 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt @@ -0,0 +1,2 @@ + +bob \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt new file mode 100644 index 0000000..f64da6e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt @@ -0,0 +1 @@ +%strong= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt new file mode 100644 index 0000000..f5b9962 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt @@ -0,0 +1 @@ +

    {{user.name}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt new file mode 100644 index 0000000..3dcaa58 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt @@ -0,0 +1 @@ +{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt new file mode 100644 index 0000000..f5b9962 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt @@ -0,0 +1 @@ +

    {{user.name}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt new file mode 100644 index 0000000..3dcaa58 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt @@ -0,0 +1 @@ +{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt new file mode 100644 index 0000000..8c69046 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt @@ -0,0 +1,7 @@ +!!! 5 +html + head + link(type='text/css', rel='stylesheet', href='/site.css') + title Hello + body + h1 Hello world! diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt new file mode 100644 index 0000000..face101 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt @@ -0,0 +1,10 @@ + + + + + Hello + + +

    Hello world!

    + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt new file mode 100644 index 0000000..f12c62f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt @@ -0,0 +1,7 @@ +!!! 5 +html + head + link(type='text/css', rel='stylesheet', href='/site.css') + title Hello + body + h1 Hello Forbes! diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt new file mode 100644 index 0000000..0ceeda4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt @@ -0,0 +1,10 @@ + + + + + Hello + + +

    Hello Forbes!

    + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt new file mode 100644 index 0000000..623c665 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt @@ -0,0 +1 @@ +p= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt new file mode 100644 index 0000000..da8875c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt @@ -0,0 +1 @@ +strong= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt new file mode 100644 index 0000000..d2f6eeb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt @@ -0,0 +1 @@ +

    {user.name}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt new file mode 100644 index 0000000..d6a4bea --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt @@ -0,0 +1 @@ +{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt new file mode 100644 index 0000000..13817b6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt @@ -0,0 +1 @@ +

    ${user.name}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt new file mode 100644 index 0000000..3636556 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt @@ -0,0 +1 @@ +${user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt new file mode 100644 index 0000000..b015881 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt @@ -0,0 +1 @@ +

    <%= user.name %>

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt new file mode 100644 index 0000000..a55afc5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt @@ -0,0 +1 @@ +<%= user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt new file mode 100644 index 0000000..961fe69 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt @@ -0,0 +1,27 @@ +.variables { + width: 14cm; +} +.variables { + height: 24px; + color: #888888; + font-family: "Trebuchet MS", Verdana, sans-serif; + quotes: "~" "~"; +} +.redefinition { + three: 3; +} +.values { + font-family: 'Trebuchet', 'Trebuchet', 'Trebuchet'; + color: #888888 !important; + url: url('Trebuchet'); + multi: something 'A', B, C, 'Trebuchet'; +} +.variable-names { + name: 'hello'; +} +.alpha { + filter: alpha(opacity=42); +} +a:nth-child(2) { + border: 1px; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt new file mode 100644 index 0000000..3d7529e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt @@ -0,0 +1,54 @@ +@a: 2; +@x: @a * @a; +@y: @x + 1; +@z: @x * 2 + @y; + +.variables { + width: @z + 1cm; // 14cm +} + +@b: @a * 10; +@c: #888; + +@fonts: "Trebuchet MS", Verdana, sans-serif; +@f: @fonts; + +@quotes: "~" "~"; +@q: @quotes; + +.variables { + height: @b + @x + 0px; // 24px + color: @c; + font-family: @f; + quotes: @q; +} + +.redefinition { + @var: 4; + @var: 2; + @var: 3; + three: @var; +} + +.values { + @a: 'Trebuchet'; + @multi: 'A', B, C; + font-family: @a, @a, @a; + color: @c !important; + url: url(@a); + multi: something @multi, @a; +} + +.variable-names { + @var: 'hello'; + @name: 'var'; + name: @@name; +} +.alpha { + @var: 42; + filter: alpha(opacity=@var); +} + +a:nth-child(@a) { + border: 1px; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt new file mode 100644 index 0000000..649a7f4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt @@ -0,0 +1,27 @@ +.variables { + width: 14cm; +} +.variables { + height: 24px; + color: #888888; + font-family: "Trebuchet MS"; + quotes: "~" "~"; +} +.redefinition { + three: 3; +} +.values { + font-family: 'Trebuchet', 'Trebuchet', 'Trebuchet'; + color: #888888 !important; + url: url('Trebuchet'); + multi: something 'A', B, C, 'Trebuchet'; +} +.variable-names { + name: 'hello'; +} +.alpha { + filter: alpha(opacity=42); +} +a:nth-child(2) { + border: 1px; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt new file mode 100644 index 0000000..0fc80a3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt @@ -0,0 +1,54 @@ +@a: 2; +@x: @a * @a; +@y: @x + 1; +@z: @x * 2 + @y; + +.variables { + width: @z + 1cm; // 14cm +} + +@b: @a * 10; +@c: #888; + +@fonts: "Trebuchet MS"; +@f: @fonts; + +@quotes: "~" "~"; +@q: @quotes; + +.variables { + height: @b + @x + 0px; // 24px + color: @c; + font-family: @f; + quotes: @q; +} + +.redefinition { + @var: 4; + @var: 2; + @var: 3; + three: @var; +} + +.values { + @a: 'Trebuchet'; + @multi: 'A', B, C; + font-family: @a, @a, @a; + color: @c !important; + url: url(@a); + multi: something @multi, @a; +} + +.variable-names { + @var: 'hello'; + @name: 'var'; + name: @@name; +} +.alpha { + @var: 42; + filter: alpha(opacity=@var); +} + +a:nth-child(@a) { + border: 1px; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt new file mode 100644 index 0000000..04b1781 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt @@ -0,0 +1 @@ +

    #{user.name}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt new file mode 100644 index 0000000..76eedd8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt @@ -0,0 +1 @@ +#{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt new file mode 100644 index 0000000..977a9ad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt @@ -0,0 +1,6 @@ +

    Heading 1

    +

    Heading 2

    +
      +
    • bullet 1
    • +
    • bullet 2
    • +
    diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt new file mode 100644 index 0000000..bbd8eb0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt @@ -0,0 +1,6 @@ +# Heading 1 + +## Heading 2 + +- bullet 1 +- bullet 2 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt new file mode 100644 index 0000000..b22f33b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt @@ -0,0 +1,6 @@ +

    Heading 1

    +

    Heading 2

    +
      +
    1. num 1
    2. +
    3. num 2
    4. +
    diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt new file mode 100644 index 0000000..73f4b83 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt @@ -0,0 +1,6 @@ +# Heading 1 + +## Heading 2 + +1. num 1 +2. num 2 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt new file mode 100644 index 0000000..f5b9962 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt @@ -0,0 +1 @@ +

    {{user.name}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt new file mode 100644 index 0000000..3dcaa58 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt @@ -0,0 +1 @@ +{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt new file mode 100644 index 0000000..c7270fb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt @@ -0,0 +1 @@ +

    {{#user}}{{name}}{{/user}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt new file mode 100644 index 0000000..90982ae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt @@ -0,0 +1 @@ +{{#user}}{{name}}{{/user}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt new file mode 100644 index 0000000..25f2db2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt @@ -0,0 +1 @@ +

    bob

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt new file mode 100644 index 0000000..4efa161 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt @@ -0,0 +1 @@ +

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt new file mode 100644 index 0000000..d6969d5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt @@ -0,0 +1 @@ +
    bob
    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt new file mode 100644 index 0000000..0eb6deb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt @@ -0,0 +1 @@ +
    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt new file mode 100644 index 0000000..b015881 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt @@ -0,0 +1 @@ +

    <%= user.name %>

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt new file mode 100644 index 0000000..a55afc5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt @@ -0,0 +1 @@ +<%= user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt new file mode 100644 index 0000000..6ddc778 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt @@ -0,0 +1,8 @@ +table { + border: none;} +table tr { + background: #fff;} +table tr { + font-size: 15px;} +table tr:odd { + background: #000;} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt new file mode 100644 index 0000000..a27a945 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt @@ -0,0 +1,11 @@ ++large + :font-size 15px ++striped + tr + :background #fff + +large + &:odd + :background #000 +table + +striped + :border none \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt new file mode 100644 index 0000000..603a155 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt @@ -0,0 +1,8 @@ +table { + border: none;} +table tr { + background: #000;} +table tr { + font-size: 15px;} +table tr:odd { + background: #fff;} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt new file mode 100644 index 0000000..0392bd6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt @@ -0,0 +1,11 @@ ++large + :font-size 15px ++striped + tr + :background #000 + +large + &:odd + :background #fff +table + +striped + :border none \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt new file mode 100644 index 0000000..f686c1c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt @@ -0,0 +1,8 @@ +body { + font: 12px Helvetica, Arial, sans-serif; +} +a.button { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt new file mode 100644 index 0000000..f2b7d94 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt @@ -0,0 +1,10 @@ +border-radius() + -webkit-border-radius arguments + -moz-border-radius arguments + border-radius arguments + +body + font 12px Helvetica, Arial, sans-serif + +a.button + border-radius(5px) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt new file mode 100644 index 0000000..11f10bf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt @@ -0,0 +1,8 @@ +body { + font: 20px Helvetica, Arial, sans-serif; +} +a.button { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt new file mode 100644 index 0000000..a2d03c2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt @@ -0,0 +1,10 @@ +border-radius() + -webkit-border-radius arguments + -moz-border-radius arguments + border-radius arguments + +body + font 20px Helvetica, Arial, sans-serif + +a.button + border-radius(5px) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt new file mode 100644 index 0000000..f5b9962 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt @@ -0,0 +1 @@ +

    {{user.name}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt new file mode 100644 index 0000000..3dcaa58 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt @@ -0,0 +1 @@ +{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt new file mode 100644 index 0000000..f5b9962 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt @@ -0,0 +1 @@ +

    {{user.name}}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt new file mode 100644 index 0000000..3dcaa58 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt @@ -0,0 +1 @@ +{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt new file mode 100644 index 0000000..04b1781 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt @@ -0,0 +1 @@ +

    #{user.name}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt new file mode 100644 index 0000000..76eedd8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt @@ -0,0 +1 @@ +#{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt new file mode 100644 index 0000000..bf80f1e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt @@ -0,0 +1 @@ +tobi{name:"tobi"} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt new file mode 100644 index 0000000..bac0d3f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt @@ -0,0 +1,3 @@ +tobi { + name: "tobi" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt new file mode 100644 index 0000000..01859af --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt @@ -0,0 +1 @@ +tobi{name:"bob"} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt new file mode 100644 index 0000000..e55a457 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt @@ -0,0 +1,3 @@ +tobi { + name: "bob" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt new file mode 100644 index 0000000..9f5dd4e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt @@ -0,0 +1 @@ +{"foo":"bar"} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt new file mode 100644 index 0000000..b42f309 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt @@ -0,0 +1,3 @@ +{ + "foo": "bar" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt new file mode 100644 index 0000000..3a26a2e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt @@ -0,0 +1 @@ +[1,2,3] \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt new file mode 100644 index 0000000..d930309 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt @@ -0,0 +1,5 @@ +[ + 1, + 2, + 3 +] \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt new file mode 100644 index 0000000..a244072 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt @@ -0,0 +1 @@ +

    <%- user.name %>

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt new file mode 100644 index 0000000..0e320e4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt @@ -0,0 +1 @@ +<%- user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt new file mode 100644 index 0000000..ba27a12 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt @@ -0,0 +1 @@ +

    {{ user.name }}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt new file mode 100644 index 0000000..be635ff --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt @@ -0,0 +1 @@ +{{ user.name }} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt new file mode 100644 index 0000000..d2f6eeb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt @@ -0,0 +1 @@ +

    {user.name}

    \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt new file mode 100644 index 0000000..d6a4bea --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt @@ -0,0 +1 @@ +{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js new file mode 100644 index 0000000..ebca3d7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js @@ -0,0 +1,123 @@ +var transformers = require('../'); +var fs = require('fs'); +var path = require('path'); +var expect = require('expect.js'); + +fs.readdirSync(path.join(__dirname, 'simple')) + .forEach(function (transformer) { + if (!transformers[transformer]) { + throw new Error(transformer + ' appears to be undefined.'); + } + transformer = transformers[transformer]; + function locate(name) { + return path.join(__dirname, 'simple', transformer.name, name + '.txt'); + } + function read(name) { + try { + return fs.readFileSync(locate(name)).toString(); + } catch (ex) { + return null; + } + } + describe(transformer.name, function () { + var sampleA = read('sample-a'); + var sampleAExpected = (read('sample-a-expected') || '

    bob

    ').replace(/\r/g, ''); + var sampleB = read('sample-b'); + var sampleBExpected = (read('sample-b-expected') || 'bob').replace(/\r/g, ''); + if (transformer.sync) describe('syncronous operation', testSyncronousOperation); + else describe.skip('syncronous operation', testSyncronousOperation); + function testSyncronousOperation() { + it('works from a string', function () { + expect(transformer.renderSync(sampleA, {user: {name: 'bob'}})).to.be(sampleAExpected); + expect(transformer.renderSync(sampleB, {user: {name: 'bob'}})).to.be(sampleBExpected); + }); + it('works from a file', function () { + expect(transformer.renderFileSync(locate('sample-a'), {user: {name: 'bob'}})).to.be(sampleAExpected); + expect(transformer.renderFileSync(locate('sample-b'), {user: {name: 'bob'}})).to.be(sampleBExpected); + }); + } + describe('asyncronous operation', function () { + it('works from a string A', function (done) { + transformer.render(sampleA, {user: {name: 'bob'}}, function (err, res) { + if (err) return done(err); + expect(res).to.be(sampleAExpected); + done(); + }); + }); + it('works from a string B', function (done) { + transformer.render(sampleB, {user: {name: 'bob'}}, function (err, res) { + if (err) return done(err); + expect(res).to.be(sampleBExpected); + done(); + }); + }); + it('works from a file A', function (done) { + transformer.renderFile(locate('sample-a'), {user: {name: 'bob'}}, function (err, res) { + if (err) return done(err); + expect(res).to.be(sampleAExpected); + done(); + }); + }); + it('works from a file B', function (done) { + transformer.renderFile(locate('sample-b'), {user: {name: 'bob'}}, function (err, res) { + if (err) return done(err); + expect(res).to.be(sampleBExpected); + done(); + }); + }); + }) + }); + }); + + + + function read(name) { + try { + return fs.readFileSync(locate(name)).toString(); + } catch (ex) { + return null; + } + } + + +describe('uglify-js', function () { + var str = fs.readFileSync(path.join(__dirname, 'fixtures', 'uglify-js', 'script.js')).toString(); + it('minifies files', function () { + var res = transformers['uglify-js'].renderSync(str, {}); + expect(res.length).to.be.lessThan(82); + expect(require('vm').runInNewContext(res)).to.be('Hello Forbes Lindesay!'); + }); + it('beautifies files with {mangle: false, compress: false, output: {beautify: true}}', function () { + var res = transformers['uglify-js'].renderSync(str, {mangle: false, compress: false, output: {beautify: true}}); + expect(res).to.be('(function(name) {\n function hello(world) {\n return "Hello " + world + "!";\n }\n return hello(name);\n})("Forbes Lindesay");'); + expect(require('vm').runInNewContext(res)).to.be('Hello Forbes Lindesay!'); + }); +}); + + + +describe('component', function () { + var p = path.join(__dirname, 'fixtures', 'component', 'component.json'); + var output = path.join(__dirname, 'fixtures', 'component', 'build'); + function simplifyCSS(str) { + return transformers['uglify-css'].renderSync(str); + } + describe('component-js', function () { + it('builds the JavaScript file', function (done) { + transformers['component-js'].renderFile(p, {}, function (err, res) { + if (err) return done(err); + expect(require('vm').runInNewContext(res + '\nrequire("foo")')).to.be('foo'); + done(); + }) + }); + }); + describe('component-css', function () { + it('builds the CSS file', function (done) { + transformers['component-css'].renderFile(p, {}, function (err, res) { + if (err) return done(err); + expect(simplifyCSS(res)).to.be("#foo{name:'bar'}#baz{name:'bing'}"); + done(); + }) + }); + }); +}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js new file mode 100644 index 0000000..5d6b6ac --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js @@ -0,0 +1,13 @@ +var transformers = require('../'); +var pack = require('../package'); +Object.keys(transformers) + .forEach(function (transformer) { + transformers[transformer].engines + .forEach(function (engine) { + if (engine != '.' && !pack.devDependencies[engine]) { + pack.devDependencies[engine] = '*'; + } + }); + }); +require('fs').writeFileSync(require('path').join(__dirname, '..', 'package.json'), + JSON.stringify(pack, null, 2)); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore new file mode 100644 index 0000000..699b5d4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore @@ -0,0 +1,16 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz + +pids +logs +results + +npm-debug.log + +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md new file mode 100644 index 0000000..21e4865 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md @@ -0,0 +1,55 @@ +# with + +Compile time `with` for strict mode JavaScript + +[![build status](https://secure.travis-ci.org/ForbesLindesay/with.png)](http://travis-ci.org/ForbesLindesay/with) +[![Dependency Status](https://gemnasium.com/ForbesLindesay/with.png)](https://gemnasium.com/ForbesLindesay/with) +[![NPM version](https://badge.fury.io/js/with.png)](http://badge.fury.io/js/with) + +## Installation + + $ npm install with + +## Usage + +```js +var addWith = require('with') + +addWith('obj', 'console.log(a)') +// => "var a = obj.a;console.log(a)" + +addWith("obj || {}", "console.log(helper(a))", ["helper"]) +// => var locals = (obj || {}),a = locals.a;console.log(helper(a)) +``` + +## API + +### addWith(obj, src, [exclude]) + +The idea is that this is roughly equivallent to: + +```js +with (obj) { + src +} +``` + +There are a few differences though. For starters, it will be assumed that all variables used in `src` come from `obj` so any that don't (e.g. template helpers) need to have their names parsed to `exclude` as an array. + +It also makes everything be declared, so you can always do: + +```js +if (foo === undefined) +``` + +instead of + +```js +if (typeof foo === 'undefined') +``` + +It is also safe to use in strict mode (unlike `with`) and it minifies properly (`with` disables virtually all minification). + +## License + + MIT \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js new file mode 100644 index 0000000..a2565fd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js @@ -0,0 +1,31 @@ +var scope = require('lexical-scope') + +module.exports = addWith + +function addWith(obj, src, exclude) { + exclude = exclude || [] + var objScope = scope(obj) + exclude = exclude.concat(objScope.globals.implicit).concat(objScope.globals.exported) + var s = scope('(function () {' + src + '}())')//allows the `return` keyword + var vars = s.globals.implicit + .filter(function (v) { + return !(v in global) && exclude.indexOf(v) === -1 + }) + + if (vars.length === 0) return src + + var declareLocal = '' + var local = 'locals' + if (/^[a-zA-Z0-9$_]+$/.test(obj)) { + local = obj + } else { + while (s.globals.implicit.indexOf(local) != -1 || s.globals.exported.indexOf(local) != -1 || exclude.indexOf(local) != -1 || obj.indexOf(local) != -1) { + local += '_' + } + declareLocal = local + ' = (' + obj + '),' + } + return 'var ' + declareLocal + vars + .map(function (v) { + return v + ' = ' + local + '.' + v + }).join(',') + ';' + src +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml new file mode 100644 index 0000000..09d3ef3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.8 + - 0.10 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE new file mode 100644 index 0000000..ee27ba4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js new file mode 100644 index 0000000..198b3ff --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
    a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
    "+""+"
    ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
    t
    ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
    ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt new file mode 100644 index 0000000..2a68ff8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt @@ -0,0 +1,15 @@ +$ git log|head -n1 +commit ae85dfd4cc0284679ce21bb662427340fa966666 +$ time node run.js >/dev/null + +real 0m6.551s +user 0m6.336s +sys 0m0.288s + +$ git log|head -n1 +commit 9125bf1ec0cf78c77a852e0547a4cc69db7797bf +$ time node run.js>/dev/null + +real 0m1.702s +user 0m1.644s +sys 0m0.084s diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js new file mode 100644 index 0000000..3c0ca06 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/jquery.js'); + +var scope = detect(src); +console.dir(scope); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js new file mode 100644 index 0000000..7b98e48 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js @@ -0,0 +1,6 @@ +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/src.js'); + +var scope = detect(src); +console.dir(scope); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js new file mode 100644 index 0000000..ff45a92 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js @@ -0,0 +1,27 @@ +var x = 5; +var y = 3, z = 2; + +w.foo(); +w = 2; + +RAWR=444; +RAWR.foo(); + +BLARG=3; + +foo(function () { + var BAR = 3; + process.nextTick(function (ZZZZZZZZZZZZ) { + console.log('beep boop'); + var xyz = 4; + x += 10; + x.zzzzzz; + ZZZ=6; + }); + function doom () { + } + ZZZ.foo(); + +}); + +console.log(xyz); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js new file mode 100644 index 0000000..7ee7798 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js @@ -0,0 +1,161 @@ +var astw = require('astw'); + +module.exports = function (src) { + var locals = {}; + var implicit = {}; + var exported = {}; + + src = String(src).replace(/^#![^\n]*\n/, ''); + var walk = astw(src); + + walk(function (node) { + if (node.type === 'VariableDeclaration') { + // take off the leading `var ` + var id = getScope(node); + for (var i = 0; i < node.declarations.length; i++) { + var d = node.declarations[i]; + locals[id][d.id.name] = d; + } + } + else if (isFunction(node)) { + var id = getScope(node.parent); + if (node.id) locals[id][node.id.name] = node; + var nid = node.params.length && getScope(node); + if (nid && !locals[nid]) locals[nid] = {}; + for (var i = 0; i < node.params.length; i++) { + var p = node.params[i]; + locals[nid][p.name] = p; + } + } + }); + + walk(function (node) { + if (node.type === 'Identifier' + && lookup(node) === undefined) { + if (node.parent.type === 'Property' + && node.parent.key === node) return; + if (node.parent.type === 'MemberExpression' + && node.parent.property === node) return; + if (isFunction(node.parent)) return; + + if (node.parent.type === 'AssignmentExpression') { + var isLeft0 = node.parent.left.type === 'MemberExpression' + && node.parent.left.object === node.name + ; + var isLeft1 = node.parent.left.type === 'Identifier' + && node.parent.left.name === node.name + ; + if (isLeft0 || isLeft1) { + exported[node.name] = keyOf(node).length; + } + } + if (!exported[node.name] + || exported[node.name] < keyOf(node).length) { + implicit[node.name] = keyOf(node).length; + } + } + }); + + var localScopes = {}; + var lks = objectKeys(locals); + for (var i = 0; i < lks.length; i++) { + var key = lks[i]; + localScopes[key] = objectKeys(locals[key]); + } + + return { + locals: localScopes, + globals: { + implicit: objectKeys(implicit), + exported: objectKeys(exported) + } + }; + + function lookup (node) { + for (var p = node; p; p = p.parent) { + if (isFunction(p) || p.type === 'Program') { + var id = getScope(p); + if (locals[id][node.name]) { + return id; + } + } + } + return undefined; + } + + function getScope (node) { + for ( + var p = node; + !isFunction(p) && p.type !== 'Program'; + p = p.parent + ); + var id = idOf(p); + if (!locals[id]) locals[id] = {}; + return id; + } + +}; + +function isFunction (x) { + return x.type === 'FunctionDeclaration' + || x.type === 'FunctionExpression' + ; +} + +function idOf (node) { + var id = []; + for (var n = node; n.type !== 'Program'; n = n.parent) { + var key = keyOf(n).join('.'); + id.unshift(key); + } + return id.join('.'); +} + +function keyOf (node) { + var p = node.parent; + var ks = objectKeys(p); + var kv = { keys : [], values : [], top : [] }; + + for (var i = 0; i < ks.length; i++) { + var key = ks[i]; + kv.keys.push(key); + kv.values.push(p[key]); + kv.top.push(undefined); + + if (isArray(p[key])) { + var keys = objectKeys(p[key]); + kv.keys.push.apply(kv.keys, keys); + kv.values.push.apply(kv.values, p[key]); + + var nkeys = []; + for (var j = 0; j < keys.length; j++) nkeys.push(key); + kv.top.push.apply(kv.top, nkeys); + } + } + var ix = indexOf(kv.values, node); + var res = []; + if (kv.top[ix]) res.push(kv.top[ix]); + if (kv.keys[ix]) res.push(kv.keys[ix]); + if (node.parent.type === 'CallExpression') { + res.unshift.apply(res, keyOf(node.parent.parent)); + } + return res; +} + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +}; + +function indexOf (xs, x) { + if (xs.indexOf) return xs.indexOf(x); + for (var i = 0; i < xs.length; i++) { + if (x === xs[i]) return i; + } + return -1; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml new file mode 100644 index 0000000..ed178f6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.8 + - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE new file mode 100644 index 0000000..ee27ba4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js new file mode 100644 index 0000000..08cbe28 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js @@ -0,0 +1,8 @@ +var astw = require('../'); +var deparse = require('escodegen').generate; +var walk = astw('4 + beep(5 * 2)'); + +walk(function (node) { + var src = deparse(node); + console.log(node.type + ' :: ' + JSON.stringify(src)); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js new file mode 100644 index 0000000..4d71a1f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js @@ -0,0 +1,42 @@ +var parse = require('esprima').parse; + +module.exports = function (src) { + var ast = typeof src === 'string' ? parse(src) : src; + return function (cb) { + walk(ast, undefined, cb); + }; +}; + +function walk (node, parent, cb) { + var keys = objectKeys(node); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (key === 'parent') continue; + + var child = node[key]; + if (isArray(child)) { + for (var j = 0; j < child.length; j++) { + var c = child[j]; + if (c && typeof c.type === 'string') { + c.parent = node; + walk(c, node, cb); + } + } + } + else if (child && typeof child.type === 'string') { + child.parent = node; + walk(child, node, cb); + } + } + cb(node); +} + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; +}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse new file mode 100644 index 0000000..2b5398f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=`dirname "$0"` + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@" + ret=$? +else + node "$basedir/../esprima/bin/esparse.js" "$@" + ret=$? +fi +exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd new file mode 100644 index 0000000..0bc3f65 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd @@ -0,0 +1,5 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\esprima\bin\esparse.js" %* +) ELSE ( + node "%~dp0\..\esprima\bin\esparse.js" %* +) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate new file mode 100644 index 0000000..6d6df8a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate @@ -0,0 +1,15 @@ +#!/bin/sh +basedir=`dirname "$0"` + +case `uname` in + *CYGWIN*) basedir=`cygpath -w "$basedir"`;; +esac + +if [ -x "$basedir/node" ]; then + "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@" + ret=$? +else + node "$basedir/../esprima/bin/esvalidate.js" "$@" + ret=$? +fi +exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd new file mode 100644 index 0000000..b8ec592 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd @@ -0,0 +1,5 @@ +@IF EXIST "%~dp0\node.exe" ( + "%~dp0\node.exe" "%~dp0\..\esprima\bin\esvalidate.js" %* +) ELSE ( + node "%~dp0\..\esprima\bin\esvalidate.js" %* +) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore new file mode 100644 index 0000000..88dc4e8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore @@ -0,0 +1,8 @@ +.git +.travis.yml +/node_modules/ +/assets/ +/coverage/ +/demo/ +/test/3rdparty +/tools/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog new file mode 100644 index 0000000..86c73fe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog @@ -0,0 +1,18 @@ +2012-11-05: Version 1.0.2 + + Improvements: + + * Fix esvalidate's JUnit output for exception error (issue 374) + * Allow npm installation with test (npat=true) + +2012-10-28: Version 1.0.1 + + Improvements: + + * esvalidate understands shebang in a Unix shell script (issue 361) + * esvalidate treats fatal parsing failure as an error (issue 361) + * Reduce Node.js package via .npmignore (issue 362) + +2012-10-22: Version 1.0.0 + + Initial release. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD new file mode 100644 index 0000000..3e580c3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD @@ -0,0 +1,19 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md new file mode 100644 index 0000000..a74bd12 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md @@ -0,0 +1,73 @@ +**Esprima** ([esprima.org](http://esprima.org)) is a high performance, +standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) +parser written in ECMAScript (also popularly known as +[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)). +Esprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat), +with the help of [many contributors](https://github.com/ariya/esprima/contributors). + +Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as +[Node.js](http://nodejs.org). + +### Features + +- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262) +- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla +[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) +- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage) +- Optional tracking of syntax node location (index-based and line-column) +- Experimental support for ES6/Harmony (module, class, destructuring, ...) + +Esprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)). +It is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html) +with the new generation of fast parsers. + +### Applications + +Esprima serves as the basis for many popular JavaScript development tools: + +- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul) +- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck) +- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS), +[Sweet.js](http://sweetjs.org/) (macro) +- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr) +- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html)) +- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter), +- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen) + +### Questions? +- [Documentation](http://esprima.org/doc) +- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect) +and [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement) +- [Mailing list](http://groups.google.com/group/esprima) +- [Contribution guide](http://esprima.org/doc/index.html#contribution) + +Follow [@Esprima](http://twitter.com/Esprima) on Twitter to get the +development updates. +Feedback and contribution are welcomed! + +### License + +Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) + and other contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js new file mode 100644 index 0000000..3e7bb81 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js @@ -0,0 +1,117 @@ +#!/usr/bin/env node +/* + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint sloppy:true node:true rhino:true */ + +var fs, esprima, fname, content, options, syntax; + +if (typeof require === 'function') { + fs = require('fs'); + esprima = require('esprima'); +} else if (typeof load === 'function') { + try { + load('esprima.js'); + } catch (e) { + load('../esprima.js'); + } +} + +// Shims to Node.js objects when running under Rhino. +if (typeof console === 'undefined' && typeof process === 'undefined') { + console = { log: print }; + fs = { readFileSync: readFile }; + process = { argv: arguments, exit: quit }; + process.argv.unshift('esparse.js'); + process.argv.unshift('rhino'); +} + +function showUsage() { + console.log('Usage:'); + console.log(' esparse [options] file.js'); + console.log(); + console.log('Available options:'); + console.log(); + console.log(' --comment Gather all line and block comments in an array'); + console.log(' --loc Include line-column location info for each syntax node'); + console.log(' --range Include index-based range for each syntax node'); + console.log(' --raw Display the raw value of literals'); + console.log(' --tokens List all tokens in an array'); + console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); + console.log(' -v, --version Shows program version'); + console.log(); + process.exit(1); +} + +if (process.argv.length <= 2) { + showUsage(); +} + +options = {}; + +process.argv.splice(2).forEach(function (entry) { + + if (entry === '-h' || entry === '--help') { + showUsage(); + } else if (entry === '-v' || entry === '--version') { + console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); + console.log(); + process.exit(0); + } else if (entry === '--comment') { + options.comment = true; + } else if (entry === '--loc') { + options.loc = true; + } else if (entry === '--range') { + options.range = true; + } else if (entry === '--raw') { + options.raw = true; + } else if (entry === '--tokens') { + options.tokens = true; + } else if (entry === '--tolerant') { + options.tolerant = true; + } else if (entry.slice(0, 2) === '--') { + console.log('Error: unknown option ' + entry + '.'); + process.exit(1); + } else if (typeof fname === 'string') { + console.log('Error: more than one input file.'); + process.exit(1); + } else { + fname = entry; + } +}); + +if (typeof fname !== 'string') { + console.log('Error: no input file.'); + process.exit(1); +} + +try { + content = fs.readFileSync(fname, 'utf-8'); + syntax = esprima.parse(content, options); + console.log(JSON.stringify(syntax, null, 4)); +} catch (e) { + console.log('Error: ' + e.message); + process.exit(1); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js new file mode 100644 index 0000000..e0af3f7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js @@ -0,0 +1,177 @@ +#!/usr/bin/env node +/* + Copyright (C) 2012 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint sloppy:true plusplus:true node:true rhino:true */ + +var fs, esprima, options, fnames, count; + +if (typeof require === 'function') { + fs = require('fs'); + esprima = require('esprima'); +} else if (typeof load === 'function') { + try { + load('esprima.js'); + } catch (e) { + load('../esprima.js'); + } +} + +// Shims to Node.js objects when running under Rhino. +if (typeof console === 'undefined' && typeof process === 'undefined') { + console = { log: print }; + fs = { readFileSync: readFile }; + process = { argv: arguments, exit: quit }; + process.argv.unshift('esvalidate.js'); + process.argv.unshift('rhino'); +} + +function showUsage() { + console.log('Usage:'); + console.log(' esvalidate [options] file.js'); + console.log(); + console.log('Available options:'); + console.log(); + console.log(' --format=type Set the report format, plain (default) or junit'); + console.log(' -v, --version Print program version'); + console.log(); + process.exit(1); +} + +if (process.argv.length <= 2) { + showUsage(); +} + +options = { + format: 'plain' +}; + +fnames = []; + +process.argv.splice(2).forEach(function (entry) { + + if (entry === '-h' || entry === '--help') { + showUsage(); + } else if (entry === '-v' || entry === '--version') { + console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); + console.log(); + process.exit(0); + } else if (entry.slice(0, 9) === '--format=') { + options.format = entry.slice(9); + if (options.format !== 'plain' && options.format !== 'junit') { + console.log('Error: unknown report format ' + options.format + '.'); + process.exit(1); + } + } else if (entry.slice(0, 2) === '--') { + console.log('Error: unknown option ' + entry + '.'); + process.exit(1); + } else { + fnames.push(entry); + } +}); + +if (fnames.length === 0) { + console.log('Error: no input file.'); + process.exit(1); +} + +if (options.format === 'junit') { + console.log(''); + console.log(''); +} + +count = 0; +fnames.forEach(function (fname) { + var content, timestamp, syntax, name; + try { + content = fs.readFileSync(fname, 'utf-8'); + + if (content[0] === '#' && content[1] === '!') { + content = '//' + content.substr(2, content.length); + } + + timestamp = Date.now(); + syntax = esprima.parse(content, { tolerant: true }); + + if (options.format === 'junit') { + + name = fname; + if (name.lastIndexOf('/') >= 0) { + name = name.slice(name.lastIndexOf('/') + 1); + } + + console.log(''); + + syntax.errors.forEach(function (error) { + var msg = error.message; + msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); + console.log(' '); + console.log(' ' + + error.message + '(' + name + ':' + error.lineNumber + ')' + + ''); + console.log(' '); + }); + + console.log(''); + + } else if (options.format === 'plain') { + + syntax.errors.forEach(function (error) { + var msg = error.message; + msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); + msg = fname + ':' + error.lineNumber + ': ' + msg; + console.log(msg); + ++count; + }); + + } + } catch (e) { + ++count; + if (options.format === 'junit') { + console.log(''); + console.log(' '); + console.log(' ' + + e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + + ')'); + console.log(' '); + console.log(''); + } else { + console.log('Error: ' + e.message); + } + } +}); + +if (options.format === 'junit') { + console.log(''); +} + +if (count > 0) { + process.exit(1); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json new file mode 100644 index 0000000..ca85b45 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json @@ -0,0 +1,14 @@ +{ + "name": "esprima", + "version": "1.0.2", + "main": "./esprima.js", + "dependencies": {}, + "repository": { + "type": "git", + "url": "http://github.com/ariya/esprima.git" + }, + "licenses": [{ + "type": "BSD", + "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" + }] +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html new file mode 100644 index 0000000..921f77f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html @@ -0,0 +1,473 @@ + + + + +Esprima Documentation + + + + + + + +
    + + + +

    Esprima Documentation

    + +
    + +

    Basic Usage

    + +

    Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as +Rhino and Node.js.

    + +

    In a web browser

    + +

    Just include the source file:

    + +
    +<script src="esparse.js"></script>
    +
    + +

    The module esprima will be available as part of the global window object:

    + +
    +var syntax = esprima.parse('var answer = 42');
    +
    + +

    Since Esprima supports AMD (Asynchronous Module Definition), it can be loaded via a module loader such as RequireJS:

    + +
    +require(['esprima'], function (parser) {
    +    // Do something with parser, e.g.
    +    var syntax = parser.parse('var answer = 42');
    +    console.log(JSON.stringify(syntax, null, 4));
    +});
    +
    + +

    Since Esprima is available as a Bower component, it can be installed with:

    + +
    +bower install esprima
    +
    + +

    Obviously, it can be used with Yeoman as well:

    + +
    +yeoman install esprima
    +
    + +

    With Node.js

    + +

    Esprima is available as a Node.js package, install it using npm:

    + +
    +npm install esprima
    +
    + +

    Load the module with require and use it:

    + +
    +var esprima = require('esprima');
    +console.log(JSON.stringify(esprima.parse('var answer = 42'), null, 4));
    +
    + +

    With Rhino

    + +

    Load the source file from another script:

    + +
    +load('/path/to/esprima.js');
    +
    + +

    The module esprima will be available as part of the global object:

    + +
    +var syntax = esprima.parse('42');
    +print(JSON.stringify(syntax, null, 2));
    +
    + +

    Parsing Interface

    + +

    Basic usage: + +

    +esprima.parse(code, options);
    +
    + +

    The output of the parser is the syntax tree formatted in JSON, see the following Syntax Tree Format section.

    + +

    Available options so far (by default, every option false):

    + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    OptionWhen set to true
    locNodes have line and column-based location info
    rangeNodes have an index-based location range (array)
    rawLiterals have extra property which stores the verbatim source
    tokensAn extra array containing all found tokens
    commentAn extra array containing all line and block comments
    + + +

    The easiest way to see the different output based on various option settings is to use the online parser demo. + +

    Examples

    + +

    Detect Nested Ternary Conditionals

    + +

    The script detectnestedternary.js in the examples/ subdirectory is using Esprima to look for a ternary conditional, i.e. operator ?:, which is immediately followed (in one of its code paths) by another ternary conditional. The script can be invoked from the command-line with Node.js:

    + +
    +node detectnestedternary.js /some/path
    +
    + +

    An example code fragment which will be flagged by this script as having a nested ternary conditional:

    + +
    +var str = (age < 1) ? "baby" :
    +    (age < 5) ? "toddler" :
    +    (age < 18) ? "child": "adult";
    +
    + +

    which will yield the following report:

    + +
    +  Line 1 : Nested ternary for "age < 1"
    +  Line 2 : Nested ternary for "age < 5"
    +
    + +

    Find Possible Boolean Traps

    + +

    The script findbooleantrap.js in the examples/ subdirectory is using Esprima to detect some possible cases of Boolean trap, i.e. the use of Boolean literal which may lead to ambiguities and lack of readability. The script can be invoked from command-line with Node.js:

    + +
    +node findbooleantrap.js /some/path
    +
    + +It will search for all files (recursively) in the given path, try to parse each file, and then look for signs of Boolean traps: + +
      +
    • Literal used with a non-setter function (assumption: setter starts with the "set" prefix):
    • +
      this.refresh(true);
      +
    • Literal used with a function whose name may have a double-negative interpretation:
    • +
      item.setHidden(false);
      +
    • Two different literals in a single function call:
    • +
      element.stop(true, false);
      +
    • Multiple literals in a single function invocation:
    • +
      event.initKeyEvent("keypress", true, true, null, null,
      +    false, false, false, false, 9, 0);
      +
    • Ambiguous Boolean literal as the last argument:
    • +
      return getSomething(obj, false);
      +
    + +For some more info, read also the blog post on Boolean trap. + +

    Syntax Tree Format

    + +

    The output of the parser is expected to be compatible with Mozilla SpiderMonkey Parser API. +The best way to understand various different constructs is the online parser demo which shows the syntax tree (formatted with JSON.stringify) corresponding to the typed code. + +The simplest example is as follows. If the following code is executed: + +

    +esprima.parse('var answer = 42;');
    +
    + +then the return value will be (JSON formatted): + +
    +{
    +    type: 'Program',
    +    body: [
    +        {
    +            type: 'VariableDeclaration',
    +            declarations: [
    +                {
    +                    type: 'AssignmentExpression',
    +                    operator: =,
    +                    left: {
    +                        type: 'Identifier',
    +                        name: 'answer'
    +                    },
    +                    right: {
    +                        type: 'Literal',
    +                        value: 42
    +                    }
    +                }
    +            ]
    +        }
    +    ]
    +}
    +
    + +

    Contribution Guide

    + +

    Guidelines

    + +

    Contributors are mandated to follow the guides described in the following sections. Any contribution which do not conform to the guides may be rejected.

    + +

    Laundry list

    + +

    Before creating pull requests, make sure the following applies.

    + +

    There is a corresponding issue. If there is no issue yet, create one in the issue tracker.

    + +

    The commit log links the corresponding issue (usually as the last line).

    + +

    No functional regression. Run all unit tests.

    + +

    No coverage regression. Run the code coverage analysis.

    + +

    Each commit must be granular. Big changes should be splitted into smaller commits.

    + +

    Write understandable code. No need to be too terse (or even obfuscated).

    + +

    JSLint does not complain.

    + +

    A new feature must be accompanied with unit tests. No compromise.

    + +

    A new feature should not cause performance loss. Verify with the benchmark tests.

    + +

    Performance improvement should be backed up by actual conclusive speed-up in the benchmark suite.

    + +

    Coding style

    + +

    Indentation is 4 spaces.

    + +

    Open curly brace is at the end of the line.

    + +

    String literal uses single quote (') and not double quote (").

    + +

    Commit message

    + +

    Bad:

    + +
    +    Fix a problem with Firefox.
    +
    + +

    The above commit is too short and useless in the long term.

    + +

    Good:

    + +
    +    Add support for labeled statement.
    +
    +    It is covered in ECMAScript Language Specification Section 12.12.
    +    This also fixes parsing MooTools and JSLint code.
    +
    +    Running the benchmarks suite show negligible performance loss.
    +
    +    http://code.google.com/p/esprima/issues/detail?id=10
    +    http://code.google.com/p/esprima/issues/detail?id=15
    +    http://code.google.com/p/esprima/issues/detail?id=16
    +
    + +

    Important aspects:

    + +
      +
    • The first line is the short description, useful for per-line commit view and thus keep it under 80 characters.
    • +
    • The next paragraphs should provide more explanation (if needed).
    • +
    • Describe the testing situation (new unit/benchmark test, change in performance, etc).
    • +
    • Put the link to the issues for cross-ref.
    • +
    + +

    Baseline syntax tree as the expected result

    + +

    The test suite contains a collection of a pair of code and its syntax tree. To generate the syntax tree suitably formatted for the test fixture, use the included helper script tools/generate-test-fixture.js (with Node.js), e.g.: + +

    +node tools/generate-test-fixture.js "var answer = 42"
    +
    + +The syntax tree will be printed out to the console. This can be used in the test fixture. + +

    Test Workflow

    + +

    Unit tests

    + +

    Browser-based unit testing is available by opening test/index.html in the source tree. The online version is esprima.org/test.

    + +

    Command-line testing using Node.js:

    + +
    npm test
    + +

    Code coverage test

    + +

    Note: you need to use Node.js 0.6 or later version.

    + +

    Install node-cover:

    + +
    sudo npm install -g cover
    + +

    Run it in Esprima source tree:

    + +
    cover run test/runner.js
    + +

    Check the quick report:

    + +
    cover report
    + +

    To get the detailed report:

    + +
    cover report html
    + +

    and then open cover_html/index.html file and choose esprima.js from the list.

    + +

    Benchmark tests

    + +

    Available by opening test/benchmarks.html in the source tree. The online version is esprima.org/test/benchmarks.html.

    + +

    Note: Because the corpus is fetched via XML HTTP Request, the benchmarks test needs to be served via a web server and not local file.

    + +

    It is important to run this with various browsers to cover different JavaScript engines.

    + +

    Command-line benchmark using Node.js:

    + +
    node test/benchmark.js
    + +

    Command-line benchmark using V8 shell:

    + +
    /path/to/v8/shell test/benchmark.js
    + +

    The current corpus for the benchmarks:

    + +
      +
    • jQuery (version 1.7.1 and 1.6.4)
    • +
    • jQuery Mobile (version 1.0)
    • +
    • Prototype (version 1.7.0.0 and 1.6.1)
    • +
    • Ext Core (version 3.1.0 and 3.0.0)
    • +
    • MooTools (version 1.4.1 and 1.3.2)
    • +
    • Backbone (version 0.5.3)
    • +
    • Underscore (version 1.2.3)
    • +
    + +

    Speed comparison tests

    + +

    Available by opening test/compare.html. The online version is esprima.org/test/compare.html.

    + +

    Note: Because the corpus is fetched via XML HTTP Request, the benchmarks test needs to be served via a web server and not local file.

    + +

    Warning: Since each parser has a different format for the syntax tree, the speed is not fully comparable (the cost of constructing different result is not taken into account). These tests exist only to ensure that Esprima parser is not ridiculously slow, e.g. one magnitude slower compare to other parsers.

    + +

    The current corpus for the speed comparison tests:

    + +
      +
    • jQuery version 1.7.1
    • +
    • Prototype version 1.7.0.0
    • +
    • MooTools version 1.4.1
    • +
    • Ext Core version 3.1.0
    • +
    + +

    Manual tests

    + +

    Code parser

    + +

    Available by opening demo/parse.html. + +

    In this demo, whatever is typed in the editor will be parsed. If it is a valid code, the syntax tree will be shown formatted using JSON.stringify.

    + +

    Operator precedence

    + +

    Available by opening demo/precedence.html. + +

    The demo compares two expression and decides whether they are semantically equivalent or not. If not, the expression will be rewritten, with extra parentheses, to following the intended semantic of the original.

    + +

    Regular expression collector

    + +

    Available by opening demo/collector.html. + +

    The demo finds all the regular expressions in the given code, along with the location for each regular expression.

    + +

    Function tracing

    + +

    Available by opening demo/functiontrace.html. + +

    The demo inserts a function call at the beginning of every function block to log the number of times the function is executed.

    + + + +

    Sister projects

    + +

    Escodegen is a code generator which supports Esprima syntax tree. This is useful for source code transformation. The source can be parsed by Esprima and then regenerated using escodegen. Between the process, the syntax tree can be transformed.

    + +

    Esmorph is a non-destructive source code morphing tool. It can tweak portions of the code without affecting the rest (hence the term non-destructive).

    + +

    Similar parsers

    + +

    Narcissus is a metacircular implementation of JavaScript. Obviously it has a parsing capability. Check more at the code repo: github.com/mozilla/narcissus. Narcissus is likely the oldest JavaScript parser written in JavaScript.

    + +

    UglifyJS is a minifier and obfuscator which has a parser called parse-js. It is pretty popular and widely used. Read more at its project page: github.com/mishoo/UglifyJS.

    + +

    ZeParser, see github.com/qfox/ZeParser.

    + +

    License

    + +

    Copyright (C) 2012, 2011 Ariya Hidayat and other contributors.

    + +

    Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

    +
      +
    • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
    • +
    • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
    • +
    + +

    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

    + + + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js new file mode 100644 index 0000000..9f77a45 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js @@ -0,0 +1,3895 @@ +/* + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Mathias Bynens + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Kris Kowal + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint bitwise:true plusplus:true */ +/*global esprima:true, define:true, exports:true, window: true, +throwError: true, createLiteral: true, generateStatement: true, +parseAssignmentExpression: true, parseBlock: true, parseExpression: true, +parseFunctionDeclaration: true, parseFunctionExpression: true, +parseFunctionSourceElements: true, parseVariableIdentifier: true, +parseLeftHandSideExpression: true, +parseStatement: true, parseSourceElement: true */ + +(function (root, factory) { + 'use strict'; + + // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, + // Rhino, and plain browser loading. + if (typeof define === 'function' && define.amd) { + define(['exports'], factory); + } else if (typeof exports !== 'undefined') { + factory(exports); + } else { + factory((root.esprima = {})); + } +}(this, function (exports) { + 'use strict'; + + var Token, + TokenName, + Syntax, + PropertyKind, + Messages, + Regex, + source, + strict, + index, + lineNumber, + lineStart, + length, + buffer, + state, + extra; + + Token = { + BooleanLiteral: 1, + EOF: 2, + Identifier: 3, + Keyword: 4, + NullLiteral: 5, + NumericLiteral: 6, + Punctuator: 7, + StringLiteral: 8 + }; + + TokenName = {}; + TokenName[Token.BooleanLiteral] = 'Boolean'; + TokenName[Token.EOF] = ''; + TokenName[Token.Identifier] = 'Identifier'; + TokenName[Token.Keyword] = 'Keyword'; + TokenName[Token.NullLiteral] = 'Null'; + TokenName[Token.NumericLiteral] = 'Numeric'; + TokenName[Token.Punctuator] = 'Punctuator'; + TokenName[Token.StringLiteral] = 'String'; + + Syntax = { + AssignmentExpression: 'AssignmentExpression', + ArrayExpression: 'ArrayExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SwitchStatement: 'SwitchStatement', + SwitchCase: 'SwitchCase', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement' + }; + + PropertyKind = { + Data: 1, + Get: 2, + Set: 4 + }; + + // Error messages should be identical to V8. + Messages = { + UnexpectedToken: 'Unexpected token %0', + UnexpectedNumber: 'Unexpected number', + UnexpectedString: 'Unexpected string', + UnexpectedIdentifier: 'Unexpected identifier', + UnexpectedReserved: 'Unexpected reserved word', + UnexpectedEOS: 'Unexpected end of input', + NewlineAfterThrow: 'Illegal newline after throw', + InvalidRegExp: 'Invalid regular expression', + UnterminatedRegExp: 'Invalid regular expression: missing /', + InvalidLHSInAssignment: 'Invalid left-hand side in assignment', + InvalidLHSInForIn: 'Invalid left-hand side in for-in', + MultipleDefaultsInSwitch: 'More than one default clause in switch statement', + NoCatchOrFinally: 'Missing catch or finally after try', + UnknownLabel: 'Undefined label \'%0\'', + Redeclaration: '%0 \'%1\' has already been declared', + IllegalContinue: 'Illegal continue statement', + IllegalBreak: 'Illegal break statement', + IllegalReturn: 'Illegal return statement', + StrictModeWith: 'Strict mode code may not include a with statement', + StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', + StrictVarName: 'Variable name may not be eval or arguments in strict mode', + StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', + StrictParamDupe: 'Strict mode function may not have duplicate parameter names', + StrictFunctionName: 'Function name may not be eval or arguments in strict mode', + StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', + StrictDelete: 'Delete of an unqualified identifier in strict mode.', + StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', + AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', + AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', + StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', + StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', + StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', + StrictReservedWord: 'Use of future reserved word in strict mode' + }; + + // See also tools/generate-unicode-regex.py. + Regex = { + NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), + NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') + }; + + // Ensure the condition is true, otherwise throw an error. + // This is only to have a better contract semantic, i.e. another safety net + // to catch a logic error. The condition shall be fulfilled in normal case. + // Do NOT use this to enforce a certain condition on any user input. + + function assert(condition, message) { + if (!condition) { + throw new Error('ASSERT: ' + message); + } + } + + function sliceSource(from, to) { + return source.slice(from, to); + } + + if (typeof 'esprima'[0] === 'undefined') { + sliceSource = function sliceArraySource(from, to) { + return source.slice(from, to).join(''); + }; + } + + function isDecimalDigit(ch) { + return '0123456789'.indexOf(ch) >= 0; + } + + function isHexDigit(ch) { + return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; + } + + function isOctalDigit(ch) { + return '01234567'.indexOf(ch) >= 0; + } + + + // 7.2 White Space + + function isWhiteSpace(ch) { + return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') || + (ch === '\u000C') || (ch === '\u00A0') || + (ch.charCodeAt(0) >= 0x1680 && + '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0); + } + + // 7.3 Line Terminators + + function isLineTerminator(ch) { + return (ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029'); + } + + // 7.6 Identifier Names and Identifiers + + function isIdentifierStart(ch) { + return (ch === '$') || (ch === '_') || (ch === '\\') || + (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || + ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch)); + } + + function isIdentifierPart(ch) { + return (ch === '$') || (ch === '_') || (ch === '\\') || + (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || + ((ch >= '0') && (ch <= '9')) || + ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch)); + } + + // 7.6.1.2 Future Reserved Words + + function isFutureReservedWord(id) { + switch (id) { + + // Future reserved words. + case 'class': + case 'enum': + case 'export': + case 'extends': + case 'import': + case 'super': + return true; + } + + return false; + } + + function isStrictModeReservedWord(id) { + switch (id) { + + // Strict Mode reserved words. + case 'implements': + case 'interface': + case 'package': + case 'private': + case 'protected': + case 'public': + case 'static': + case 'yield': + case 'let': + return true; + } + + return false; + } + + function isRestrictedWord(id) { + return id === 'eval' || id === 'arguments'; + } + + // 7.6.1.1 Keywords + + function isKeyword(id) { + var keyword = false; + switch (id.length) { + case 2: + keyword = (id === 'if') || (id === 'in') || (id === 'do'); + break; + case 3: + keyword = (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); + break; + case 4: + keyword = (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with'); + break; + case 5: + keyword = (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw'); + break; + case 6: + keyword = (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch'); + break; + case 7: + keyword = (id === 'default') || (id === 'finally'); + break; + case 8: + keyword = (id === 'function') || (id === 'continue') || (id === 'debugger'); + break; + case 10: + keyword = (id === 'instanceof'); + break; + } + + if (keyword) { + return true; + } + + switch (id) { + // Future reserved words. + // 'const' is specialized as Keyword in V8. + case 'const': + return true; + + // For compatiblity to SpiderMonkey and ES.next + case 'yield': + case 'let': + return true; + } + + if (strict && isStrictModeReservedWord(id)) { + return true; + } + + return isFutureReservedWord(id); + } + + // 7.4 Comments + + function skipComment() { + var ch, blockComment, lineComment; + + blockComment = false; + lineComment = false; + + while (index < length) { + ch = source[index]; + + if (lineComment) { + ch = source[index++]; + if (isLineTerminator(ch)) { + lineComment = false; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + } + } else if (blockComment) { + if (isLineTerminator(ch)) { + if (ch === '\r' && source[index + 1] === '\n') { + ++index; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + ch = source[index++]; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + if (ch === '*') { + ch = source[index]; + if (ch === '/') { + ++index; + blockComment = false; + } + } + } + } else if (ch === '/') { + ch = source[index + 1]; + if (ch === '/') { + index += 2; + lineComment = true; + } else if (ch === '*') { + index += 2; + blockComment = true; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + break; + } + } else if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + } else { + break; + } + } + } + + function scanHexEscape(prefix) { + var i, len, ch, code = 0; + + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && isHexDigit(source[index])) { + ch = source[index++]; + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } + + function scanIdentifier() { + var ch, start, id, restore; + + ch = source[index]; + if (!isIdentifierStart(ch)) { + return; + } + + start = index; + if (ch === '\\') { + ++index; + if (source[index] !== 'u') { + return; + } + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + if (ch === '\\' || !isIdentifierStart(ch)) { + return; + } + id = ch; + } else { + index = restore; + id = 'u'; + } + } else { + id = source[index++]; + } + + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch)) { + break; + } + if (ch === '\\') { + ++index; + if (source[index] !== 'u') { + return; + } + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + if (ch === '\\' || !isIdentifierPart(ch)) { + return; + } + id += ch; + } else { + index = restore; + id += 'u'; + } + } else { + id += source[index++]; + } + } + + // There is no keyword or literal with only one character. + // Thus, it must be an identifier. + if (id.length === 1) { + return { + type: Token.Identifier, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (isKeyword(id)) { + return { + type: Token.Keyword, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.8.1 Null Literals + + if (id === 'null') { + return { + type: Token.NullLiteral, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.8.2 Boolean Literals + + if (id === 'true' || id === 'false') { + return { + type: Token.BooleanLiteral, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + return { + type: Token.Identifier, + value: id, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.7 Punctuators + + function scanPunctuator() { + var start = index, + ch1 = source[index], + ch2, + ch3, + ch4; + + // Check for most common single-character punctuators. + + if (ch1 === ';' || ch1 === '{' || ch1 === '}') { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === ',' || ch1 === '(' || ch1 === ')') { + ++index; + return { + type: Token.Punctuator, + value: ch1, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // Dot (.) can also start a floating-point number, hence the need + // to check the next character. + + ch2 = source[index + 1]; + if (ch1 === '.' && !isDecimalDigit(ch2)) { + return { + type: Token.Punctuator, + value: source[index++], + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // Peek more characters. + + ch3 = source[index + 2]; + ch4 = source[index + 3]; + + // 4-character punctuator: >>>= + + if (ch1 === '>' && ch2 === '>' && ch3 === '>') { + if (ch4 === '=') { + index += 4; + return { + type: Token.Punctuator, + value: '>>>=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + // 3-character punctuators: === !== >>> <<= >>= + + if (ch1 === '=' && ch2 === '=' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '===', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '!' && ch2 === '=' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '!==', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '>' && ch2 === '>' && ch3 === '>') { + index += 3; + return { + type: Token.Punctuator, + value: '>>>', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '<' && ch2 === '<' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '<<=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + if (ch1 === '>' && ch2 === '>' && ch3 === '=') { + index += 3; + return { + type: Token.Punctuator, + value: '>>=', + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 2-character punctuators: <= >= == != ++ -- << >> && || + // += -= *= %= &= |= ^= /= + + if (ch2 === '=') { + if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { + index += 2; + return { + type: Token.Punctuator, + value: ch1 + ch2, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { + if ('+-<>&|'.indexOf(ch2) >= 0) { + index += 2; + return { + type: Token.Punctuator, + value: ch1 + ch2, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + // The remaining 1-character punctuators. + + if ('[]<>+-*%&|^!~?:=/'.indexOf(ch1) >= 0) { + return { + type: Token.Punctuator, + value: source[index++], + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + } + + // 7.8.3 Numeric Literals + + function scanNumericLiteral() { + var number, start, ch; + + ch = source[index]; + assert(isDecimalDigit(ch) || (ch === '.'), + 'Numeric literal must start with a decimal digit or a decimal point'); + + start = index; + number = ''; + if (ch !== '.') { + number = source[index++]; + ch = source[index]; + + // Hex number starts with '0x'. + // Octal number starts with '0'. + if (number === '0') { + if (ch === 'x' || ch === 'X') { + number += source[index++]; + while (index < length) { + ch = source[index]; + if (!isHexDigit(ch)) { + break; + } + number += source[index++]; + } + + if (number.length <= 2) { + // only 0x + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + return { + type: Token.NumericLiteral, + value: parseInt(number, 16), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } else if (isOctalDigit(ch)) { + number += source[index++]; + while (index < length) { + ch = source[index]; + if (!isOctalDigit(ch)) { + break; + } + number += source[index++]; + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch) || isDecimalDigit(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + return { + type: Token.NumericLiteral, + value: parseInt(number, 8), + octal: true, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // decimal number starts with '0' such as '09' is illegal. + if (isDecimalDigit(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += source[index++]; + } + } + + if (ch === '.') { + number += source[index++]; + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += source[index++]; + } + } + + if (ch === 'e' || ch === 'E') { + number += source[index++]; + + ch = source[index]; + if (ch === '+' || ch === '-') { + number += source[index++]; + } + + ch = source[index]; + if (isDecimalDigit(ch)) { + number += source[index++]; + while (index < length) { + ch = source[index]; + if (!isDecimalDigit(ch)) { + break; + } + number += source[index++]; + } + } else { + ch = 'character ' + ch; + if (index >= length) { + ch = ''; + } + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + if (index < length) { + ch = source[index]; + if (isIdentifierStart(ch)) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } + + return { + type: Token.NumericLiteral, + value: parseFloat(number), + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + // 7.8.4 String Literals + + function scanStringLiteral() { + var str = '', quote, start, ch, code, unescaped, restore, octal = false; + + quote = source[index]; + assert((quote === '\'' || quote === '"'), + 'String literal must starts with a quote'); + + start = index; + ++index; + + while (index < length) { + ch = source[index++]; + + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = source[index++]; + if (!isLineTerminator(ch)) { + switch (ch) { + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\v'; + break; + + default: + if (isOctalDigit(ch)) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + if (code !== 0) { + octal = true; + } + + if (index < length && isOctalDigit(source[index])) { + octal = true; + code = code * 8 + '01234567'.indexOf(source[index++]); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + isOctalDigit(source[index])) { + code = code * 8 + '01234567'.indexOf(source[index++]); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + ++lineNumber; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + } + } else if (isLineTerminator(ch)) { + break; + } else { + str += ch; + } + } + + if (quote !== '') { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + return { + type: Token.StringLiteral, + value: str, + octal: octal, + lineNumber: lineNumber, + lineStart: lineStart, + range: [start, index] + }; + } + + function scanRegExp() { + var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false; + + buffer = null; + skipComment(); + + start = index; + ch = source[index]; + assert(ch === '/', 'Regular expression literal must start with a slash'); + str = source[index++]; + + while (index < length) { + ch = source[index++]; + str += ch; + if (classMarker) { + if (ch === ']') { + classMarker = false; + } + } else { + if (ch === '\\') { + ch = source[index++]; + // ECMA-262 7.8.5 + if (isLineTerminator(ch)) { + throwError({}, Messages.UnterminatedRegExp); + } + str += ch; + } else if (ch === '/') { + terminated = true; + break; + } else if (ch === '[') { + classMarker = true; + } else if (isLineTerminator(ch)) { + throwError({}, Messages.UnterminatedRegExp); + } + } + } + + if (!terminated) { + throwError({}, Messages.UnterminatedRegExp); + } + + // Exclude leading and trailing slash. + pattern = str.substr(1, str.length - 2); + + flags = ''; + while (index < length) { + ch = source[index]; + if (!isIdentifierPart(ch)) { + break; + } + + ++index; + if (ch === '\\' && index < length) { + ch = source[index]; + if (ch === 'u') { + ++index; + restore = index; + ch = scanHexEscape('u'); + if (ch) { + flags += ch; + str += '\\u'; + for (; restore < index; ++restore) { + str += source[restore]; + } + } else { + index = restore; + flags += 'u'; + str += '\\u'; + } + } else { + str += '\\'; + } + } else { + flags += ch; + str += ch; + } + } + + try { + value = new RegExp(pattern, flags); + } catch (e) { + throwError({}, Messages.InvalidRegExp); + } + + return { + literal: str, + value: value, + range: [start, index] + }; + } + + function isIdentifierName(token) { + return token.type === Token.Identifier || + token.type === Token.Keyword || + token.type === Token.BooleanLiteral || + token.type === Token.NullLiteral; + } + + function advance() { + var ch, token; + + skipComment(); + + if (index >= length) { + return { + type: Token.EOF, + lineNumber: lineNumber, + lineStart: lineStart, + range: [index, index] + }; + } + + token = scanPunctuator(); + if (typeof token !== 'undefined') { + return token; + } + + ch = source[index]; + + if (ch === '\'' || ch === '"') { + return scanStringLiteral(); + } + + if (ch === '.' || isDecimalDigit(ch)) { + return scanNumericLiteral(); + } + + token = scanIdentifier(); + if (typeof token !== 'undefined') { + return token; + } + + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + + function lex() { + var token; + + if (buffer) { + index = buffer.range[1]; + lineNumber = buffer.lineNumber; + lineStart = buffer.lineStart; + token = buffer; + buffer = null; + return token; + } + + buffer = null; + return advance(); + } + + function lookahead() { + var pos, line, start; + + if (buffer !== null) { + return buffer; + } + + pos = index; + line = lineNumber; + start = lineStart; + buffer = advance(); + index = pos; + lineNumber = line; + lineStart = start; + + return buffer; + } + + // Return true if there is a line terminator before the next token. + + function peekLineTerminator() { + var pos, line, start, found; + + pos = index; + line = lineNumber; + start = lineStart; + skipComment(); + found = lineNumber !== line; + index = pos; + lineNumber = line; + lineStart = start; + + return found; + } + + // Throw an exception + + function throwError(token, messageFormat) { + var error, + args = Array.prototype.slice.call(arguments, 2), + msg = messageFormat.replace( + /%(\d)/g, + function (whole, index) { + return args[index] || ''; + } + ); + + if (typeof token.lineNumber === 'number') { + error = new Error('Line ' + token.lineNumber + ': ' + msg); + error.index = token.range[0]; + error.lineNumber = token.lineNumber; + error.column = token.range[0] - lineStart + 1; + } else { + error = new Error('Line ' + lineNumber + ': ' + msg); + error.index = index; + error.lineNumber = lineNumber; + error.column = index - lineStart + 1; + } + + throw error; + } + + function throwErrorTolerant() { + try { + throwError.apply(null, arguments); + } catch (e) { + if (extra.errors) { + extra.errors.push(e); + } else { + throw e; + } + } + } + + + // Throw an exception because of the token. + + function throwUnexpected(token) { + if (token.type === Token.EOF) { + throwError(token, Messages.UnexpectedEOS); + } + + if (token.type === Token.NumericLiteral) { + throwError(token, Messages.UnexpectedNumber); + } + + if (token.type === Token.StringLiteral) { + throwError(token, Messages.UnexpectedString); + } + + if (token.type === Token.Identifier) { + throwError(token, Messages.UnexpectedIdentifier); + } + + if (token.type === Token.Keyword) { + if (isFutureReservedWord(token.value)) { + throwError(token, Messages.UnexpectedReserved); + } else if (strict && isStrictModeReservedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictReservedWord); + return; + } + throwError(token, Messages.UnexpectedToken, token.value); + } + + // BooleanLiteral, NullLiteral, or Punctuator. + throwError(token, Messages.UnexpectedToken, token.value); + } + + // Expect the next token to match the specified punctuator. + // If not, an exception will be thrown. + + function expect(value) { + var token = lex(); + if (token.type !== Token.Punctuator || token.value !== value) { + throwUnexpected(token); + } + } + + // Expect the next token to match the specified keyword. + // If not, an exception will be thrown. + + function expectKeyword(keyword) { + var token = lex(); + if (token.type !== Token.Keyword || token.value !== keyword) { + throwUnexpected(token); + } + } + + // Return true if the next token matches the specified punctuator. + + function match(value) { + var token = lookahead(); + return token.type === Token.Punctuator && token.value === value; + } + + // Return true if the next token matches the specified keyword + + function matchKeyword(keyword) { + var token = lookahead(); + return token.type === Token.Keyword && token.value === keyword; + } + + // Return true if the next token is an assignment operator + + function matchAssign() { + var token = lookahead(), + op = token.value; + + if (token.type !== Token.Punctuator) { + return false; + } + return op === '=' || + op === '*=' || + op === '/=' || + op === '%=' || + op === '+=' || + op === '-=' || + op === '<<=' || + op === '>>=' || + op === '>>>=' || + op === '&=' || + op === '^=' || + op === '|='; + } + + function consumeSemicolon() { + var token, line; + + // Catch the very common case first. + if (source[index] === ';') { + lex(); + return; + } + + line = lineNumber; + skipComment(); + if (lineNumber !== line) { + return; + } + + if (match(';')) { + lex(); + return; + } + + token = lookahead(); + if (token.type !== Token.EOF && !match('}')) { + throwUnexpected(token); + } + } + + // Return true if provided expression is LeftHandSideExpression + + function isLeftHandSide(expr) { + return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; + } + + // 11.1.4 Array Initialiser + + function parseArrayInitialiser() { + var elements = []; + + expect('['); + + while (!match(']')) { + if (match(',')) { + lex(); + elements.push(null); + } else { + elements.push(parseAssignmentExpression()); + + if (!match(']')) { + expect(','); + } + } + } + + expect(']'); + + return { + type: Syntax.ArrayExpression, + elements: elements + }; + } + + // 11.1.5 Object Initialiser + + function parsePropertyFunction(param, first) { + var previousStrict, body; + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (first && strict && isRestrictedWord(param[0].name)) { + throwErrorTolerant(first, Messages.StrictParamName); + } + strict = previousStrict; + + return { + type: Syntax.FunctionExpression, + id: null, + params: param, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }; + } + + function parseObjectPropertyKey() { + var token = lex(); + + // Note: This function is called only from parseObjectProperty(), where + // EOF and Punctuator tokens are already filtered out. + + if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return createLiteral(token); + } + + return { + type: Syntax.Identifier, + name: token.value + }; + } + + function parseObjectProperty() { + var token, key, id, param; + + token = lookahead(); + + if (token.type === Token.Identifier) { + + id = parseObjectPropertyKey(); + + // Property Assignment: Getter and Setter. + + if (token.value === 'get' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + expect(')'); + return { + type: Syntax.Property, + key: key, + value: parsePropertyFunction([]), + kind: 'get' + }; + } else if (token.value === 'set' && !match(':')) { + key = parseObjectPropertyKey(); + expect('('); + token = lookahead(); + if (token.type !== Token.Identifier) { + throwUnexpected(lex()); + } + param = [ parseVariableIdentifier() ]; + expect(')'); + return { + type: Syntax.Property, + key: key, + value: parsePropertyFunction(param, token), + kind: 'set' + }; + } else { + expect(':'); + return { + type: Syntax.Property, + key: id, + value: parseAssignmentExpression(), + kind: 'init' + }; + } + } else if (token.type === Token.EOF || token.type === Token.Punctuator) { + throwUnexpected(token); + } else { + key = parseObjectPropertyKey(); + expect(':'); + return { + type: Syntax.Property, + key: key, + value: parseAssignmentExpression(), + kind: 'init' + }; + } + } + + function parseObjectInitialiser() { + var properties = [], property, name, kind, map = {}, toString = String; + + expect('{'); + + while (!match('}')) { + property = parseObjectProperty(); + + if (property.key.type === Syntax.Identifier) { + name = property.key.name; + } else { + name = toString(property.key.value); + } + kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; + if (Object.prototype.hasOwnProperty.call(map, name)) { + if (map[name] === PropertyKind.Data) { + if (strict && kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.StrictDuplicateProperty); + } else if (kind !== PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } + } else { + if (kind === PropertyKind.Data) { + throwErrorTolerant({}, Messages.AccessorDataProperty); + } else if (map[name] & kind) { + throwErrorTolerant({}, Messages.AccessorGetSet); + } + } + map[name] |= kind; + } else { + map[name] = kind; + } + + properties.push(property); + + if (!match('}')) { + expect(','); + } + } + + expect('}'); + + return { + type: Syntax.ObjectExpression, + properties: properties + }; + } + + // 11.1.6 The Grouping Operator + + function parseGroupExpression() { + var expr; + + expect('('); + + expr = parseExpression(); + + expect(')'); + + return expr; + } + + + // 11.1 Primary Expressions + + function parsePrimaryExpression() { + var token = lookahead(), + type = token.type; + + if (type === Token.Identifier) { + return { + type: Syntax.Identifier, + name: lex().value + }; + } + + if (type === Token.StringLiteral || type === Token.NumericLiteral) { + if (strict && token.octal) { + throwErrorTolerant(token, Messages.StrictOctalLiteral); + } + return createLiteral(lex()); + } + + if (type === Token.Keyword) { + if (matchKeyword('this')) { + lex(); + return { + type: Syntax.ThisExpression + }; + } + + if (matchKeyword('function')) { + return parseFunctionExpression(); + } + } + + if (type === Token.BooleanLiteral) { + lex(); + token.value = (token.value === 'true'); + return createLiteral(token); + } + + if (type === Token.NullLiteral) { + lex(); + token.value = null; + return createLiteral(token); + } + + if (match('[')) { + return parseArrayInitialiser(); + } + + if (match('{')) { + return parseObjectInitialiser(); + } + + if (match('(')) { + return parseGroupExpression(); + } + + if (match('/') || match('/=')) { + return createLiteral(scanRegExp()); + } + + return throwUnexpected(lex()); + } + + // 11.2 Left-Hand-Side Expressions + + function parseArguments() { + var args = []; + + expect('('); + + if (!match(')')) { + while (index < length) { + args.push(parseAssignmentExpression()); + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + return args; + } + + function parseNonComputedProperty() { + var token = lex(); + + if (!isIdentifierName(token)) { + throwUnexpected(token); + } + + return { + type: Syntax.Identifier, + name: token.value + }; + } + + function parseNonComputedMember() { + expect('.'); + + return parseNonComputedProperty(); + } + + function parseComputedMember() { + var expr; + + expect('['); + + expr = parseExpression(); + + expect(']'); + + return expr; + } + + function parseNewExpression() { + var expr; + + expectKeyword('new'); + + expr = { + type: Syntax.NewExpression, + callee: parseLeftHandSideExpression(), + 'arguments': [] + }; + + if (match('(')) { + expr['arguments'] = parseArguments(); + } + + return expr; + } + + function parseLeftHandSideExpressionAllowCall() { + var expr; + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[') || match('(')) { + if (match('(')) { + expr = { + type: Syntax.CallExpression, + callee: expr, + 'arguments': parseArguments() + }; + } else if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + } + } + + return expr; + } + + + function parseLeftHandSideExpression() { + var expr; + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[')) { + if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + } + } + + return expr; + } + + // 11.3 Postfix Expressions + + function parsePostfixExpression() { + var expr = parseLeftHandSideExpressionAllowCall(), token; + + token = lookahead(); + if (token.type !== Token.Punctuator) { + return expr; + } + + if ((match('++') || match('--')) && !peekLineTerminator()) { + // 11.3.1, 11.3.2 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPostfix); + } + + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + expr = { + type: Syntax.UpdateExpression, + operator: lex().value, + argument: expr, + prefix: false + }; + } + + return expr; + } + + // 11.4 Unary Operators + + function parseUnaryExpression() { + var token, expr; + + token = lookahead(); + if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { + return parsePostfixExpression(); + } + + if (match('++') || match('--')) { + token = lex(); + expr = parseUnaryExpression(); + // 11.4.4, 11.4.5 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant({}, Messages.StrictLHSPrefix); + } + + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + expr = { + type: Syntax.UpdateExpression, + operator: token.value, + argument: expr, + prefix: true + }; + return expr; + } + + if (match('+') || match('-') || match('~') || match('!')) { + expr = { + type: Syntax.UnaryExpression, + operator: lex().value, + argument: parseUnaryExpression() + }; + return expr; + } + + if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { + expr = { + type: Syntax.UnaryExpression, + operator: lex().value, + argument: parseUnaryExpression() + }; + if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { + throwErrorTolerant({}, Messages.StrictDelete); + } + return expr; + } + + return parsePostfixExpression(); + } + + // 11.5 Multiplicative Operators + + function parseMultiplicativeExpression() { + var expr = parseUnaryExpression(); + + while (match('*') || match('/') || match('%')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseUnaryExpression() + }; + } + + return expr; + } + + // 11.6 Additive Operators + + function parseAdditiveExpression() { + var expr = parseMultiplicativeExpression(); + + while (match('+') || match('-')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseMultiplicativeExpression() + }; + } + + return expr; + } + + // 11.7 Bitwise Shift Operators + + function parseShiftExpression() { + var expr = parseAdditiveExpression(); + + while (match('<<') || match('>>') || match('>>>')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseAdditiveExpression() + }; + } + + return expr; + } + // 11.8 Relational Operators + + function parseRelationalExpression() { + var expr, previousAllowIn; + + previousAllowIn = state.allowIn; + state.allowIn = true; + + expr = parseShiftExpression(); + + while (match('<') || match('>') || match('<=') || match('>=') || (previousAllowIn && matchKeyword('in')) || matchKeyword('instanceof')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseShiftExpression() + }; + } + + state.allowIn = previousAllowIn; + return expr; + } + + // 11.9 Equality Operators + + function parseEqualityExpression() { + var expr = parseRelationalExpression(); + + while (match('==') || match('!=') || match('===') || match('!==')) { + expr = { + type: Syntax.BinaryExpression, + operator: lex().value, + left: expr, + right: parseRelationalExpression() + }; + } + + return expr; + } + + // 11.10 Binary Bitwise Operators + + function parseBitwiseANDExpression() { + var expr = parseEqualityExpression(); + + while (match('&')) { + lex(); + expr = { + type: Syntax.BinaryExpression, + operator: '&', + left: expr, + right: parseEqualityExpression() + }; + } + + return expr; + } + + function parseBitwiseXORExpression() { + var expr = parseBitwiseANDExpression(); + + while (match('^')) { + lex(); + expr = { + type: Syntax.BinaryExpression, + operator: '^', + left: expr, + right: parseBitwiseANDExpression() + }; + } + + return expr; + } + + function parseBitwiseORExpression() { + var expr = parseBitwiseXORExpression(); + + while (match('|')) { + lex(); + expr = { + type: Syntax.BinaryExpression, + operator: '|', + left: expr, + right: parseBitwiseXORExpression() + }; + } + + return expr; + } + + // 11.11 Binary Logical Operators + + function parseLogicalANDExpression() { + var expr = parseBitwiseORExpression(); + + while (match('&&')) { + lex(); + expr = { + type: Syntax.LogicalExpression, + operator: '&&', + left: expr, + right: parseBitwiseORExpression() + }; + } + + return expr; + } + + function parseLogicalORExpression() { + var expr = parseLogicalANDExpression(); + + while (match('||')) { + lex(); + expr = { + type: Syntax.LogicalExpression, + operator: '||', + left: expr, + right: parseLogicalANDExpression() + }; + } + + return expr; + } + + // 11.12 Conditional Operator + + function parseConditionalExpression() { + var expr, previousAllowIn, consequent; + + expr = parseLogicalORExpression(); + + if (match('?')) { + lex(); + previousAllowIn = state.allowIn; + state.allowIn = true; + consequent = parseAssignmentExpression(); + state.allowIn = previousAllowIn; + expect(':'); + + expr = { + type: Syntax.ConditionalExpression, + test: expr, + consequent: consequent, + alternate: parseAssignmentExpression() + }; + } + + return expr; + } + + // 11.13 Assignment Operators + + function parseAssignmentExpression() { + var token, expr; + + token = lookahead(); + expr = parseConditionalExpression(); + + if (matchAssign()) { + // LeftHandSideExpression + if (!isLeftHandSide(expr)) { + throwError({}, Messages.InvalidLHSInAssignment); + } + + // 11.13.1 + if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { + throwErrorTolerant(token, Messages.StrictLHSAssignment); + } + + expr = { + type: Syntax.AssignmentExpression, + operator: lex().value, + left: expr, + right: parseAssignmentExpression() + }; + } + + return expr; + } + + // 11.14 Comma Operator + + function parseExpression() { + var expr = parseAssignmentExpression(); + + if (match(',')) { + expr = { + type: Syntax.SequenceExpression, + expressions: [ expr ] + }; + + while (index < length) { + if (!match(',')) { + break; + } + lex(); + expr.expressions.push(parseAssignmentExpression()); + } + + } + return expr; + } + + // 12.1 Block + + function parseStatementList() { + var list = [], + statement; + + while (index < length) { + if (match('}')) { + break; + } + statement = parseSourceElement(); + if (typeof statement === 'undefined') { + break; + } + list.push(statement); + } + + return list; + } + + function parseBlock() { + var block; + + expect('{'); + + block = parseStatementList(); + + expect('}'); + + return { + type: Syntax.BlockStatement, + body: block + }; + } + + // 12.2 Variable Statement + + function parseVariableIdentifier() { + var token = lex(); + + if (token.type !== Token.Identifier) { + throwUnexpected(token); + } + + return { + type: Syntax.Identifier, + name: token.value + }; + } + + function parseVariableDeclaration(kind) { + var id = parseVariableIdentifier(), + init = null; + + // 12.2.1 + if (strict && isRestrictedWord(id.name)) { + throwErrorTolerant({}, Messages.StrictVarName); + } + + if (kind === 'const') { + expect('='); + init = parseAssignmentExpression(); + } else if (match('=')) { + lex(); + init = parseAssignmentExpression(); + } + + return { + type: Syntax.VariableDeclarator, + id: id, + init: init + }; + } + + function parseVariableDeclarationList(kind) { + var list = []; + + while (index < length) { + list.push(parseVariableDeclaration(kind)); + if (!match(',')) { + break; + } + lex(); + } + + return list; + } + + function parseVariableStatement() { + var declarations; + + expectKeyword('var'); + + declarations = parseVariableDeclarationList(); + + consumeSemicolon(); + + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: 'var' + }; + } + + // kind may be `const` or `let` + // Both are experimental and not in the specification yet. + // see http://wiki.ecmascript.org/doku.php?id=harmony:const + // and http://wiki.ecmascript.org/doku.php?id=harmony:let + function parseConstLetDeclaration(kind) { + var declarations; + + expectKeyword(kind); + + declarations = parseVariableDeclarationList(kind); + + consumeSemicolon(); + + return { + type: Syntax.VariableDeclaration, + declarations: declarations, + kind: kind + }; + } + + // 12.3 Empty Statement + + function parseEmptyStatement() { + expect(';'); + + return { + type: Syntax.EmptyStatement + }; + } + + // 12.4 Expression Statement + + function parseExpressionStatement() { + var expr = parseExpression(); + + consumeSemicolon(); + + return { + type: Syntax.ExpressionStatement, + expression: expr + }; + } + + // 12.5 If statement + + function parseIfStatement() { + var test, consequent, alternate; + + expectKeyword('if'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + consequent = parseStatement(); + + if (matchKeyword('else')) { + lex(); + alternate = parseStatement(); + } else { + alternate = null; + } + + return { + type: Syntax.IfStatement, + test: test, + consequent: consequent, + alternate: alternate + }; + } + + // 12.6 Iteration Statements + + function parseDoWhileStatement() { + var body, test, oldInIteration; + + expectKeyword('do'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + if (match(';')) { + lex(); + } + + return { + type: Syntax.DoWhileStatement, + body: body, + test: test + }; + } + + function parseWhileStatement() { + var test, body, oldInIteration; + + expectKeyword('while'); + + expect('('); + + test = parseExpression(); + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + return { + type: Syntax.WhileStatement, + test: test, + body: body + }; + } + + function parseForVariableDeclaration() { + var token = lex(); + + return { + type: Syntax.VariableDeclaration, + declarations: parseVariableDeclarationList(), + kind: token.value + }; + } + + function parseForStatement() { + var init, test, update, left, right, body, oldInIteration; + + init = test = update = null; + + expectKeyword('for'); + + expect('('); + + if (match(';')) { + lex(); + } else { + if (matchKeyword('var') || matchKeyword('let')) { + state.allowIn = false; + init = parseForVariableDeclaration(); + state.allowIn = true; + + if (init.declarations.length === 1 && matchKeyword('in')) { + lex(); + left = init; + right = parseExpression(); + init = null; + } + } else { + state.allowIn = false; + init = parseExpression(); + state.allowIn = true; + + if (matchKeyword('in')) { + // LeftHandSideExpression + if (!isLeftHandSide(init)) { + throwError({}, Messages.InvalidLHSInForIn); + } + + lex(); + left = init; + right = parseExpression(); + init = null; + } + } + + if (typeof left === 'undefined') { + expect(';'); + } + } + + if (typeof left === 'undefined') { + + if (!match(';')) { + test = parseExpression(); + } + expect(';'); + + if (!match(')')) { + update = parseExpression(); + } + } + + expect(')'); + + oldInIteration = state.inIteration; + state.inIteration = true; + + body = parseStatement(); + + state.inIteration = oldInIteration; + + if (typeof left === 'undefined') { + return { + type: Syntax.ForStatement, + init: init, + test: test, + update: update, + body: body + }; + } + + return { + type: Syntax.ForInStatement, + left: left, + right: right, + body: body, + each: false + }; + } + + // 12.7 The continue statement + + function parseContinueStatement() { + var token, label = null; + + expectKeyword('continue'); + + // Optimize the most common form: 'continue;'. + if (source[index] === ';') { + lex(); + + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return { + type: Syntax.ContinueStatement, + label: null + }; + } + + if (peekLineTerminator()) { + if (!state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return { + type: Syntax.ContinueStatement, + label: null + }; + } + + token = lookahead(); + if (token.type === Token.Identifier) { + label = parseVariableIdentifier(); + + if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !state.inIteration) { + throwError({}, Messages.IllegalContinue); + } + + return { + type: Syntax.ContinueStatement, + label: label + }; + } + + // 12.8 The break statement + + function parseBreakStatement() { + var token, label = null; + + expectKeyword('break'); + + // Optimize the most common form: 'break;'. + if (source[index] === ';') { + lex(); + + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return { + type: Syntax.BreakStatement, + label: null + }; + } + + if (peekLineTerminator()) { + if (!(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return { + type: Syntax.BreakStatement, + label: null + }; + } + + token = lookahead(); + if (token.type === Token.Identifier) { + label = parseVariableIdentifier(); + + if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { + throwError({}, Messages.UnknownLabel, label.name); + } + } + + consumeSemicolon(); + + if (label === null && !(state.inIteration || state.inSwitch)) { + throwError({}, Messages.IllegalBreak); + } + + return { + type: Syntax.BreakStatement, + label: label + }; + } + + // 12.9 The return statement + + function parseReturnStatement() { + var token, argument = null; + + expectKeyword('return'); + + if (!state.inFunctionBody) { + throwErrorTolerant({}, Messages.IllegalReturn); + } + + // 'return' followed by a space and an identifier is very common. + if (source[index] === ' ') { + if (isIdentifierStart(source[index + 1])) { + argument = parseExpression(); + consumeSemicolon(); + return { + type: Syntax.ReturnStatement, + argument: argument + }; + } + } + + if (peekLineTerminator()) { + return { + type: Syntax.ReturnStatement, + argument: null + }; + } + + if (!match(';')) { + token = lookahead(); + if (!match('}') && token.type !== Token.EOF) { + argument = parseExpression(); + } + } + + consumeSemicolon(); + + return { + type: Syntax.ReturnStatement, + argument: argument + }; + } + + // 12.10 The with statement + + function parseWithStatement() { + var object, body; + + if (strict) { + throwErrorTolerant({}, Messages.StrictModeWith); + } + + expectKeyword('with'); + + expect('('); + + object = parseExpression(); + + expect(')'); + + body = parseStatement(); + + return { + type: Syntax.WithStatement, + object: object, + body: body + }; + } + + // 12.10 The swith statement + + function parseSwitchCase() { + var test, + consequent = [], + statement; + + if (matchKeyword('default')) { + lex(); + test = null; + } else { + expectKeyword('case'); + test = parseExpression(); + } + expect(':'); + + while (index < length) { + if (match('}') || matchKeyword('default') || matchKeyword('case')) { + break; + } + statement = parseStatement(); + if (typeof statement === 'undefined') { + break; + } + consequent.push(statement); + } + + return { + type: Syntax.SwitchCase, + test: test, + consequent: consequent + }; + } + + function parseSwitchStatement() { + var discriminant, cases, clause, oldInSwitch, defaultFound; + + expectKeyword('switch'); + + expect('('); + + discriminant = parseExpression(); + + expect(')'); + + expect('{'); + + if (match('}')) { + lex(); + return { + type: Syntax.SwitchStatement, + discriminant: discriminant + }; + } + + cases = []; + + oldInSwitch = state.inSwitch; + state.inSwitch = true; + defaultFound = false; + + while (index < length) { + if (match('}')) { + break; + } + clause = parseSwitchCase(); + if (clause.test === null) { + if (defaultFound) { + throwError({}, Messages.MultipleDefaultsInSwitch); + } + defaultFound = true; + } + cases.push(clause); + } + + state.inSwitch = oldInSwitch; + + expect('}'); + + return { + type: Syntax.SwitchStatement, + discriminant: discriminant, + cases: cases + }; + } + + // 12.13 The throw statement + + function parseThrowStatement() { + var argument; + + expectKeyword('throw'); + + if (peekLineTerminator()) { + throwError({}, Messages.NewlineAfterThrow); + } + + argument = parseExpression(); + + consumeSemicolon(); + + return { + type: Syntax.ThrowStatement, + argument: argument + }; + } + + // 12.14 The try statement + + function parseCatchClause() { + var param; + + expectKeyword('catch'); + + expect('('); + if (!match(')')) { + param = parseExpression(); + // 12.14.1 + if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) { + throwErrorTolerant({}, Messages.StrictCatchVariable); + } + } + expect(')'); + + return { + type: Syntax.CatchClause, + param: param, + body: parseBlock() + }; + } + + function parseTryStatement() { + var block, handlers = [], finalizer = null; + + expectKeyword('try'); + + block = parseBlock(); + + if (matchKeyword('catch')) { + handlers.push(parseCatchClause()); + } + + if (matchKeyword('finally')) { + lex(); + finalizer = parseBlock(); + } + + if (handlers.length === 0 && !finalizer) { + throwError({}, Messages.NoCatchOrFinally); + } + + return { + type: Syntax.TryStatement, + block: block, + guardedHandlers: [], + handlers: handlers, + finalizer: finalizer + }; + } + + // 12.15 The debugger statement + + function parseDebuggerStatement() { + expectKeyword('debugger'); + + consumeSemicolon(); + + return { + type: Syntax.DebuggerStatement + }; + } + + // 12 Statements + + function parseStatement() { + var token = lookahead(), + expr, + labeledBody; + + if (token.type === Token.EOF) { + throwUnexpected(token); + } + + if (token.type === Token.Punctuator) { + switch (token.value) { + case ';': + return parseEmptyStatement(); + case '{': + return parseBlock(); + case '(': + return parseExpressionStatement(); + default: + break; + } + } + + if (token.type === Token.Keyword) { + switch (token.value) { + case 'break': + return parseBreakStatement(); + case 'continue': + return parseContinueStatement(); + case 'debugger': + return parseDebuggerStatement(); + case 'do': + return parseDoWhileStatement(); + case 'for': + return parseForStatement(); + case 'function': + return parseFunctionDeclaration(); + case 'if': + return parseIfStatement(); + case 'return': + return parseReturnStatement(); + case 'switch': + return parseSwitchStatement(); + case 'throw': + return parseThrowStatement(); + case 'try': + return parseTryStatement(); + case 'var': + return parseVariableStatement(); + case 'while': + return parseWhileStatement(); + case 'with': + return parseWithStatement(); + default: + break; + } + } + + expr = parseExpression(); + + // 12.12 Labelled Statements + if ((expr.type === Syntax.Identifier) && match(':')) { + lex(); + + if (Object.prototype.hasOwnProperty.call(state.labelSet, expr.name)) { + throwError({}, Messages.Redeclaration, 'Label', expr.name); + } + + state.labelSet[expr.name] = true; + labeledBody = parseStatement(); + delete state.labelSet[expr.name]; + + return { + type: Syntax.LabeledStatement, + label: expr, + body: labeledBody + }; + } + + consumeSemicolon(); + + return { + type: Syntax.ExpressionStatement, + expression: expr + }; + } + + // 13 Function Definition + + function parseFunctionSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted, + oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody; + + expect('{'); + + while (index < length) { + token = lookahead(); + if (token.type !== Token.StringLiteral) { + break; + } + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = sliceSource(token.range[0] + 1, token.range[1] - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + oldLabelSet = state.labelSet; + oldInIteration = state.inIteration; + oldInSwitch = state.inSwitch; + oldInFunctionBody = state.inFunctionBody; + + state.labelSet = {}; + state.inIteration = false; + state.inSwitch = false; + state.inFunctionBody = true; + + while (index < length) { + if (match('}')) { + break; + } + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + + expect('}'); + + state.labelSet = oldLabelSet; + state.inIteration = oldInIteration; + state.inSwitch = oldInSwitch; + state.inFunctionBody = oldInFunctionBody; + + return { + type: Syntax.BlockStatement, + body: sourceElements + }; + } + + function parseFunctionDeclaration() { + var id, param, params = [], body, token, stricted, firstRestricted, message, previousStrict, paramSet; + + expectKeyword('function'); + token = lookahead(); + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + + expect('('); + + if (!match(')')) { + paramSet = {}; + while (index < length) { + token = lookahead(); + param = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + stricted = token; + message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + stricted = token; + message = Messages.StrictParamDupe; + } + } else if (!firstRestricted) { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + firstRestricted = token; + message = Messages.StrictParamDupe; + } + } + params.push(param); + paramSet[param.name] = true; + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; + + return { + type: Syntax.FunctionDeclaration, + id: id, + params: params, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }; + } + + function parseFunctionExpression() { + var token, id = null, stricted, firstRestricted, message, param, params = [], body, previousStrict, paramSet; + + expectKeyword('function'); + + if (!match('(')) { + token = lookahead(); + id = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + throwErrorTolerant(token, Messages.StrictFunctionName); + } + } else { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictFunctionName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } + } + } + + expect('('); + + if (!match(')')) { + paramSet = {}; + while (index < length) { + token = lookahead(); + param = parseVariableIdentifier(); + if (strict) { + if (isRestrictedWord(token.value)) { + stricted = token; + message = Messages.StrictParamName; + } + if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + stricted = token; + message = Messages.StrictParamDupe; + } + } else if (!firstRestricted) { + if (isRestrictedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictParamName; + } else if (isStrictModeReservedWord(token.value)) { + firstRestricted = token; + message = Messages.StrictReservedWord; + } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { + firstRestricted = token; + message = Messages.StrictParamDupe; + } + } + params.push(param); + paramSet[param.name] = true; + if (match(')')) { + break; + } + expect(','); + } + } + + expect(')'); + + previousStrict = strict; + body = parseFunctionSourceElements(); + if (strict && firstRestricted) { + throwError(firstRestricted, message); + } + if (strict && stricted) { + throwErrorTolerant(stricted, message); + } + strict = previousStrict; + + return { + type: Syntax.FunctionExpression, + id: id, + params: params, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }; + } + + // 14 Program + + function parseSourceElement() { + var token = lookahead(); + + if (token.type === Token.Keyword) { + switch (token.value) { + case 'const': + case 'let': + return parseConstLetDeclaration(token.value); + case 'function': + return parseFunctionDeclaration(); + default: + return parseStatement(); + } + } + + if (token.type !== Token.EOF) { + return parseStatement(); + } + } + + function parseSourceElements() { + var sourceElement, sourceElements = [], token, directive, firstRestricted; + + while (index < length) { + token = lookahead(); + if (token.type !== Token.StringLiteral) { + break; + } + + sourceElement = parseSourceElement(); + sourceElements.push(sourceElement); + if (sourceElement.expression.type !== Syntax.Literal) { + // this is not directive + break; + } + directive = sliceSource(token.range[0] + 1, token.range[1] - 1); + if (directive === 'use strict') { + strict = true; + if (firstRestricted) { + throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); + } + } else { + if (!firstRestricted && token.octal) { + firstRestricted = token; + } + } + } + + while (index < length) { + sourceElement = parseSourceElement(); + if (typeof sourceElement === 'undefined') { + break; + } + sourceElements.push(sourceElement); + } + return sourceElements; + } + + function parseProgram() { + var program; + strict = false; + program = { + type: Syntax.Program, + body: parseSourceElements() + }; + return program; + } + + // The following functions are needed only when the option to preserve + // the comments is active. + + function addComment(type, value, start, end, loc) { + assert(typeof start === 'number', 'Comment must have valid position'); + + // Because the way the actual token is scanned, often the comments + // (if any) are skipped twice during the lexical analysis. + // Thus, we need to skip adding a comment if the comment array already + // handled it. + if (extra.comments.length > 0) { + if (extra.comments[extra.comments.length - 1].range[1] > start) { + return; + } + } + + extra.comments.push({ + type: type, + value: value, + range: [start, end], + loc: loc + }); + } + + function scanComment() { + var comment, ch, loc, start, blockComment, lineComment; + + comment = ''; + blockComment = false; + lineComment = false; + + while (index < length) { + ch = source[index]; + + if (lineComment) { + ch = source[index++]; + if (isLineTerminator(ch)) { + loc.end = { + line: lineNumber, + column: index - lineStart - 1 + }; + lineComment = false; + addComment('Line', comment, start, index - 1, loc); + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + comment = ''; + } else if (index >= length) { + lineComment = false; + comment += ch; + loc.end = { + line: lineNumber, + column: length - lineStart + }; + addComment('Line', comment, start, length, loc); + } else { + comment += ch; + } + } else if (blockComment) { + if (isLineTerminator(ch)) { + if (ch === '\r' && source[index + 1] === '\n') { + ++index; + comment += '\r\n'; + } else { + comment += ch; + } + ++lineNumber; + ++index; + lineStart = index; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + ch = source[index++]; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + comment += ch; + if (ch === '*') { + ch = source[index]; + if (ch === '/') { + comment = comment.substr(0, comment.length - 1); + blockComment = false; + ++index; + loc.end = { + line: lineNumber, + column: index - lineStart + }; + addComment('Block', comment, start, index, loc); + comment = ''; + } + } + } + } else if (ch === '/') { + ch = source[index + 1]; + if (ch === '/') { + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + start = index; + index += 2; + lineComment = true; + if (index >= length) { + loc.end = { + line: lineNumber, + column: index - lineStart + }; + lineComment = false; + addComment('Line', comment, start, index, loc); + } + } else if (ch === '*') { + start = index; + index += 2; + blockComment = true; + loc = { + start: { + line: lineNumber, + column: index - lineStart - 2 + } + }; + if (index >= length) { + throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); + } + } else { + break; + } + } else if (isWhiteSpace(ch)) { + ++index; + } else if (isLineTerminator(ch)) { + ++index; + if (ch === '\r' && source[index] === '\n') { + ++index; + } + ++lineNumber; + lineStart = index; + } else { + break; + } + } + } + + function filterCommentLocation() { + var i, entry, comment, comments = []; + + for (i = 0; i < extra.comments.length; ++i) { + entry = extra.comments[i]; + comment = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + comment.range = entry.range; + } + if (extra.loc) { + comment.loc = entry.loc; + } + comments.push(comment); + } + + extra.comments = comments; + } + + function collectToken() { + var start, loc, token, range, value; + + skipComment(); + start = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + token = extra.advance(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + if (token.type !== Token.EOF) { + range = [token.range[0], token.range[1]]; + value = sliceSource(token.range[0], token.range[1]); + extra.tokens.push({ + type: TokenName[token.type], + value: value, + range: range, + loc: loc + }); + } + + return token; + } + + function collectRegex() { + var pos, loc, regex, token; + + skipComment(); + + pos = index; + loc = { + start: { + line: lineNumber, + column: index - lineStart + } + }; + + regex = extra.scanRegExp(); + loc.end = { + line: lineNumber, + column: index - lineStart + }; + + // Pop the previous token, which is likely '/' or '/=' + if (extra.tokens.length > 0) { + token = extra.tokens[extra.tokens.length - 1]; + if (token.range[0] === pos && token.type === 'Punctuator') { + if (token.value === '/' || token.value === '/=') { + extra.tokens.pop(); + } + } + } + + extra.tokens.push({ + type: 'RegularExpression', + value: regex.literal, + range: [pos, index], + loc: loc + }); + + return regex; + } + + function filterTokenLocation() { + var i, entry, token, tokens = []; + + for (i = 0; i < extra.tokens.length; ++i) { + entry = extra.tokens[i]; + token = { + type: entry.type, + value: entry.value + }; + if (extra.range) { + token.range = entry.range; + } + if (extra.loc) { + token.loc = entry.loc; + } + tokens.push(token); + } + + extra.tokens = tokens; + } + + function createLiteral(token) { + return { + type: Syntax.Literal, + value: token.value + }; + } + + function createRawLiteral(token) { + return { + type: Syntax.Literal, + value: token.value, + raw: sliceSource(token.range[0], token.range[1]) + }; + } + + function createLocationMarker() { + var marker = {}; + + marker.range = [index, index]; + marker.loc = { + start: { + line: lineNumber, + column: index - lineStart + }, + end: { + line: lineNumber, + column: index - lineStart + } + }; + + marker.end = function () { + this.range[1] = index; + this.loc.end.line = lineNumber; + this.loc.end.column = index - lineStart; + }; + + marker.applyGroup = function (node) { + if (extra.range) { + node.groupRange = [this.range[0], this.range[1]]; + } + if (extra.loc) { + node.groupLoc = { + start: { + line: this.loc.start.line, + column: this.loc.start.column + }, + end: { + line: this.loc.end.line, + column: this.loc.end.column + } + }; + } + }; + + marker.apply = function (node) { + if (extra.range) { + node.range = [this.range[0], this.range[1]]; + } + if (extra.loc) { + node.loc = { + start: { + line: this.loc.start.line, + column: this.loc.start.column + }, + end: { + line: this.loc.end.line, + column: this.loc.end.column + } + }; + } + }; + + return marker; + } + + function trackGroupExpression() { + var marker, expr; + + skipComment(); + marker = createLocationMarker(); + expect('('); + + expr = parseExpression(); + + expect(')'); + + marker.end(); + marker.applyGroup(expr); + + return expr; + } + + function trackLeftHandSideExpression() { + var marker, expr; + + skipComment(); + marker = createLocationMarker(); + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[')) { + if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + marker.end(); + marker.apply(expr); + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + marker.end(); + marker.apply(expr); + } + } + + return expr; + } + + function trackLeftHandSideExpressionAllowCall() { + var marker, expr; + + skipComment(); + marker = createLocationMarker(); + + expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); + + while (match('.') || match('[') || match('(')) { + if (match('(')) { + expr = { + type: Syntax.CallExpression, + callee: expr, + 'arguments': parseArguments() + }; + marker.end(); + marker.apply(expr); + } else if (match('[')) { + expr = { + type: Syntax.MemberExpression, + computed: true, + object: expr, + property: parseComputedMember() + }; + marker.end(); + marker.apply(expr); + } else { + expr = { + type: Syntax.MemberExpression, + computed: false, + object: expr, + property: parseNonComputedMember() + }; + marker.end(); + marker.apply(expr); + } + } + + return expr; + } + + function filterGroup(node) { + var n, i, entry; + + n = (Object.prototype.toString.apply(node) === '[object Array]') ? [] : {}; + for (i in node) { + if (node.hasOwnProperty(i) && i !== 'groupRange' && i !== 'groupLoc') { + entry = node[i]; + if (entry === null || typeof entry !== 'object' || entry instanceof RegExp) { + n[i] = entry; + } else { + n[i] = filterGroup(entry); + } + } + } + return n; + } + + function wrapTrackingFunction(range, loc) { + + return function (parseFunction) { + + function isBinary(node) { + return node.type === Syntax.LogicalExpression || + node.type === Syntax.BinaryExpression; + } + + function visit(node) { + var start, end; + + if (isBinary(node.left)) { + visit(node.left); + } + if (isBinary(node.right)) { + visit(node.right); + } + + if (range) { + if (node.left.groupRange || node.right.groupRange) { + start = node.left.groupRange ? node.left.groupRange[0] : node.left.range[0]; + end = node.right.groupRange ? node.right.groupRange[1] : node.right.range[1]; + node.range = [start, end]; + } else if (typeof node.range === 'undefined') { + start = node.left.range[0]; + end = node.right.range[1]; + node.range = [start, end]; + } + } + if (loc) { + if (node.left.groupLoc || node.right.groupLoc) { + start = node.left.groupLoc ? node.left.groupLoc.start : node.left.loc.start; + end = node.right.groupLoc ? node.right.groupLoc.end : node.right.loc.end; + node.loc = { + start: start, + end: end + }; + } else if (typeof node.loc === 'undefined') { + node.loc = { + start: node.left.loc.start, + end: node.right.loc.end + }; + } + } + } + + return function () { + var marker, node; + + skipComment(); + + marker = createLocationMarker(); + node = parseFunction.apply(null, arguments); + marker.end(); + + if (range && typeof node.range === 'undefined') { + marker.apply(node); + } + + if (loc && typeof node.loc === 'undefined') { + marker.apply(node); + } + + if (isBinary(node)) { + visit(node); + } + + return node; + }; + }; + } + + function patch() { + + var wrapTracking; + + if (extra.comments) { + extra.skipComment = skipComment; + skipComment = scanComment; + } + + if (extra.raw) { + extra.createLiteral = createLiteral; + createLiteral = createRawLiteral; + } + + if (extra.range || extra.loc) { + + extra.parseGroupExpression = parseGroupExpression; + extra.parseLeftHandSideExpression = parseLeftHandSideExpression; + extra.parseLeftHandSideExpressionAllowCall = parseLeftHandSideExpressionAllowCall; + parseGroupExpression = trackGroupExpression; + parseLeftHandSideExpression = trackLeftHandSideExpression; + parseLeftHandSideExpressionAllowCall = trackLeftHandSideExpressionAllowCall; + + wrapTracking = wrapTrackingFunction(extra.range, extra.loc); + + extra.parseAdditiveExpression = parseAdditiveExpression; + extra.parseAssignmentExpression = parseAssignmentExpression; + extra.parseBitwiseANDExpression = parseBitwiseANDExpression; + extra.parseBitwiseORExpression = parseBitwiseORExpression; + extra.parseBitwiseXORExpression = parseBitwiseXORExpression; + extra.parseBlock = parseBlock; + extra.parseFunctionSourceElements = parseFunctionSourceElements; + extra.parseCatchClause = parseCatchClause; + extra.parseComputedMember = parseComputedMember; + extra.parseConditionalExpression = parseConditionalExpression; + extra.parseConstLetDeclaration = parseConstLetDeclaration; + extra.parseEqualityExpression = parseEqualityExpression; + extra.parseExpression = parseExpression; + extra.parseForVariableDeclaration = parseForVariableDeclaration; + extra.parseFunctionDeclaration = parseFunctionDeclaration; + extra.parseFunctionExpression = parseFunctionExpression; + extra.parseLogicalANDExpression = parseLogicalANDExpression; + extra.parseLogicalORExpression = parseLogicalORExpression; + extra.parseMultiplicativeExpression = parseMultiplicativeExpression; + extra.parseNewExpression = parseNewExpression; + extra.parseNonComputedProperty = parseNonComputedProperty; + extra.parseObjectProperty = parseObjectProperty; + extra.parseObjectPropertyKey = parseObjectPropertyKey; + extra.parsePostfixExpression = parsePostfixExpression; + extra.parsePrimaryExpression = parsePrimaryExpression; + extra.parseProgram = parseProgram; + extra.parsePropertyFunction = parsePropertyFunction; + extra.parseRelationalExpression = parseRelationalExpression; + extra.parseStatement = parseStatement; + extra.parseShiftExpression = parseShiftExpression; + extra.parseSwitchCase = parseSwitchCase; + extra.parseUnaryExpression = parseUnaryExpression; + extra.parseVariableDeclaration = parseVariableDeclaration; + extra.parseVariableIdentifier = parseVariableIdentifier; + + parseAdditiveExpression = wrapTracking(extra.parseAdditiveExpression); + parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression); + parseBitwiseANDExpression = wrapTracking(extra.parseBitwiseANDExpression); + parseBitwiseORExpression = wrapTracking(extra.parseBitwiseORExpression); + parseBitwiseXORExpression = wrapTracking(extra.parseBitwiseXORExpression); + parseBlock = wrapTracking(extra.parseBlock); + parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements); + parseCatchClause = wrapTracking(extra.parseCatchClause); + parseComputedMember = wrapTracking(extra.parseComputedMember); + parseConditionalExpression = wrapTracking(extra.parseConditionalExpression); + parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration); + parseEqualityExpression = wrapTracking(extra.parseEqualityExpression); + parseExpression = wrapTracking(extra.parseExpression); + parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration); + parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration); + parseFunctionExpression = wrapTracking(extra.parseFunctionExpression); + parseLeftHandSideExpression = wrapTracking(parseLeftHandSideExpression); + parseLogicalANDExpression = wrapTracking(extra.parseLogicalANDExpression); + parseLogicalORExpression = wrapTracking(extra.parseLogicalORExpression); + parseMultiplicativeExpression = wrapTracking(extra.parseMultiplicativeExpression); + parseNewExpression = wrapTracking(extra.parseNewExpression); + parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty); + parseObjectProperty = wrapTracking(extra.parseObjectProperty); + parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey); + parsePostfixExpression = wrapTracking(extra.parsePostfixExpression); + parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression); + parseProgram = wrapTracking(extra.parseProgram); + parsePropertyFunction = wrapTracking(extra.parsePropertyFunction); + parseRelationalExpression = wrapTracking(extra.parseRelationalExpression); + parseStatement = wrapTracking(extra.parseStatement); + parseShiftExpression = wrapTracking(extra.parseShiftExpression); + parseSwitchCase = wrapTracking(extra.parseSwitchCase); + parseUnaryExpression = wrapTracking(extra.parseUnaryExpression); + parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration); + parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier); + } + + if (typeof extra.tokens !== 'undefined') { + extra.advance = advance; + extra.scanRegExp = scanRegExp; + + advance = collectToken; + scanRegExp = collectRegex; + } + } + + function unpatch() { + if (typeof extra.skipComment === 'function') { + skipComment = extra.skipComment; + } + + if (extra.raw) { + createLiteral = extra.createLiteral; + } + + if (extra.range || extra.loc) { + parseAdditiveExpression = extra.parseAdditiveExpression; + parseAssignmentExpression = extra.parseAssignmentExpression; + parseBitwiseANDExpression = extra.parseBitwiseANDExpression; + parseBitwiseORExpression = extra.parseBitwiseORExpression; + parseBitwiseXORExpression = extra.parseBitwiseXORExpression; + parseBlock = extra.parseBlock; + parseFunctionSourceElements = extra.parseFunctionSourceElements; + parseCatchClause = extra.parseCatchClause; + parseComputedMember = extra.parseComputedMember; + parseConditionalExpression = extra.parseConditionalExpression; + parseConstLetDeclaration = extra.parseConstLetDeclaration; + parseEqualityExpression = extra.parseEqualityExpression; + parseExpression = extra.parseExpression; + parseForVariableDeclaration = extra.parseForVariableDeclaration; + parseFunctionDeclaration = extra.parseFunctionDeclaration; + parseFunctionExpression = extra.parseFunctionExpression; + parseGroupExpression = extra.parseGroupExpression; + parseLeftHandSideExpression = extra.parseLeftHandSideExpression; + parseLeftHandSideExpressionAllowCall = extra.parseLeftHandSideExpressionAllowCall; + parseLogicalANDExpression = extra.parseLogicalANDExpression; + parseLogicalORExpression = extra.parseLogicalORExpression; + parseMultiplicativeExpression = extra.parseMultiplicativeExpression; + parseNewExpression = extra.parseNewExpression; + parseNonComputedProperty = extra.parseNonComputedProperty; + parseObjectProperty = extra.parseObjectProperty; + parseObjectPropertyKey = extra.parseObjectPropertyKey; + parsePrimaryExpression = extra.parsePrimaryExpression; + parsePostfixExpression = extra.parsePostfixExpression; + parseProgram = extra.parseProgram; + parsePropertyFunction = extra.parsePropertyFunction; + parseRelationalExpression = extra.parseRelationalExpression; + parseStatement = extra.parseStatement; + parseShiftExpression = extra.parseShiftExpression; + parseSwitchCase = extra.parseSwitchCase; + parseUnaryExpression = extra.parseUnaryExpression; + parseVariableDeclaration = extra.parseVariableDeclaration; + parseVariableIdentifier = extra.parseVariableIdentifier; + } + + if (typeof extra.scanRegExp === 'function') { + advance = extra.advance; + scanRegExp = extra.scanRegExp; + } + } + + function stringToArray(str) { + var length = str.length, + result = [], + i; + for (i = 0; i < length; ++i) { + result[i] = str.charAt(i); + } + return result; + } + + function parse(code, options) { + var program, toString; + + toString = String; + if (typeof code !== 'string' && !(code instanceof String)) { + code = toString(code); + } + + source = code; + index = 0; + lineNumber = (source.length > 0) ? 1 : 0; + lineStart = 0; + length = source.length; + buffer = null; + state = { + allowIn: true, + labelSet: {}, + inFunctionBody: false, + inIteration: false, + inSwitch: false + }; + + extra = {}; + if (typeof options !== 'undefined') { + extra.range = (typeof options.range === 'boolean') && options.range; + extra.loc = (typeof options.loc === 'boolean') && options.loc; + extra.raw = (typeof options.raw === 'boolean') && options.raw; + if (typeof options.tokens === 'boolean' && options.tokens) { + extra.tokens = []; + } + if (typeof options.comment === 'boolean' && options.comment) { + extra.comments = []; + } + if (typeof options.tolerant === 'boolean' && options.tolerant) { + extra.errors = []; + } + } + + if (length > 0) { + if (typeof source[0] === 'undefined') { + // Try first to convert to a string. This is good as fast path + // for old IE which understands string indexing for string + // literals only and not for string object. + if (code instanceof String) { + source = code.valueOf(); + } + + // Force accessing the characters via an array. + if (typeof source[0] === 'undefined') { + source = stringToArray(code); + } + } + } + + patch(); + try { + program = parseProgram(); + if (typeof extra.comments !== 'undefined') { + filterCommentLocation(); + program.comments = extra.comments; + } + if (typeof extra.tokens !== 'undefined') { + filterTokenLocation(); + program.tokens = extra.tokens; + } + if (typeof extra.errors !== 'undefined') { + program.errors = extra.errors; + } + if (extra.range || extra.loc) { + program.body = filterGroup(program.body); + } + } catch (e) { + throw e; + } finally { + unpatch(); + extra = {}; + } + + return program; + } + + // Sync with package.json. + exports.version = '1.0.2'; + + exports.parse = parse; + + // Deep copy. + exports.Syntax = (function () { + var name, types = {}; + + if (typeof Object.create === 'function') { + types = Object.create(null); + } + + for (name in Syntax) { + if (Syntax.hasOwnProperty(name)) { + types[name] = Syntax[name]; + } + } + + if (typeof Object.freeze === 'function') { + Object.freeze(types); + } + + return types; + }()); + +})); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js new file mode 100644 index 0000000..f144955 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js @@ -0,0 +1,106 @@ +// Usage: node detectnestedternary.js /path/to/some/directory +// For more details, please read http://esprima.org/doc/#nestedternary + +/*jslint node:true sloppy:true plusplus:true */ + +var fs = require('fs'), + esprima = require('../esprima'), + dirname = process.argv[2]; + + +// Executes visitor on the object and its children (recursively). +function traverse(object, visitor) { + var key, child; + + visitor.call(null, object); + for (key in object) { + if (object.hasOwnProperty(key)) { + child = object[key]; + if (typeof child === 'object' && child !== null) { + traverse(child, visitor); + } + } + } +} + +// http://stackoverflow.com/q/5827612/ +function walk(dir, done) { + var results = []; + fs.readdir(dir, function (err, list) { + if (err) { + return done(err); + } + var i = 0; + (function next() { + var file = list[i++]; + if (!file) { + return done(null, results); + } + file = dir + '/' + file; + fs.stat(file, function (err, stat) { + if (stat && stat.isDirectory()) { + walk(file, function (err, res) { + results = results.concat(res); + next(); + }); + } else { + results.push(file); + next(); + } + }); + }()); + }); +} + +walk(dirname, function (err, results) { + if (err) { + console.log('Error', err); + return; + } + + results.forEach(function (filename) { + var shortname, first, content, syntax; + + shortname = filename; + first = true; + + if (shortname.substr(0, dirname.length) === dirname) { + shortname = shortname.substr(dirname.length + 1, shortname.length); + } + + function report(node, problem) { + if (first === true) { + console.log(shortname + ': '); + first = false; + } + console.log(' Line', node.loc.start.line, ':', problem); + } + + function checkConditional(node) { + var condition; + + if (node.consequent.type === 'ConditionalExpression' || + node.alternate.type === 'ConditionalExpression') { + + condition = content.substring(node.test.range[0], node.test.range[1]); + if (condition.length > 20) { + condition = condition.substring(0, 20) + '...'; + } + condition = '"' + condition + '"'; + report(node, 'Nested ternary for ' + condition); + } + } + + try { + content = fs.readFileSync(filename, 'utf-8'); + syntax = esprima.parse(content, { tolerant: true, loc: true, range: true }); + traverse(syntax, function (node) { + if (node.type === 'ConditionalExpression') { + checkConditional(node); + } + }); + } catch (e) { + } + + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js new file mode 100644 index 0000000..dc6d1d9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js @@ -0,0 +1,173 @@ +// Usage: node findbooleantrap.js /path/to/some/directory +// For more details, please read http://esprima.org/doc/#booleantrap. + +/*jslint node:true sloppy:true plusplus:true */ + +var fs = require('fs'), + esprima = require('../esprima'), + dirname = process.argv[2], + doubleNegativeList = []; + + +// Black-list of terms with double-negative meaning. +doubleNegativeList = [ + 'hidden', + 'caseinsensitive', + 'disabled' +]; + + +// Executes visitor on the object and its children (recursively). +function traverse(object, visitor) { + var key, child; + + if (visitor.call(null, object) === false) { + return; + } + for (key in object) { + if (object.hasOwnProperty(key)) { + child = object[key]; + if (typeof child === 'object' && child !== null) { + traverse(child, visitor); + } + } + } +} + +// http://stackoverflow.com/q/5827612/ +function walk(dir, done) { + var results = []; + fs.readdir(dir, function (err, list) { + if (err) { + return done(err); + } + var i = 0; + (function next() { + var file = list[i++]; + if (!file) { + return done(null, results); + } + file = dir + '/' + file; + fs.stat(file, function (err, stat) { + if (stat && stat.isDirectory()) { + walk(file, function (err, res) { + results = results.concat(res); + next(); + }); + } else { + results.push(file); + next(); + } + }); + }()); + }); +} + +walk(dirname, function (err, results) { + if (err) { + console.log('Error', err); + return; + } + + results.forEach(function (filename) { + var shortname, first, content, syntax; + + shortname = filename; + first = true; + + if (shortname.substr(0, dirname.length) === dirname) { + shortname = shortname.substr(dirname.length + 1, shortname.length); + } + + function getFunctionName(node) { + if (node.callee.type === 'Identifier') { + return node.callee.name; + } + if (node.callee.type === 'MemberExpression') { + return node.callee.property.name; + } + } + + function report(node, problem) { + if (first === true) { + console.log(shortname + ': '); + first = false; + } + console.log(' Line', node.loc.start.line, 'in function', + getFunctionName(node) + ':', problem); + } + + function checkSingleArgument(node) { + var args = node['arguments'], + functionName = getFunctionName(node); + + if ((args.length !== 1) || (typeof args[0].value !== 'boolean')) { + return; + } + + // Check if the method is a setter, i.e. starts with 'set', + // e.g. 'setEnabled(false)'. + if (functionName.substr(0, 3) !== 'set') { + report(node, 'Boolean literal with a non-setter function'); + } + + // Does it contain a term with double-negative meaning? + doubleNegativeList.forEach(function (term) { + if (functionName.toLowerCase().indexOf(term.toLowerCase()) >= 0) { + report(node, 'Boolean literal with confusing double-negative'); + } + }); + } + + function checkMultipleArguments(node) { + var args = node['arguments'], + literalCount = 0; + + args.forEach(function (arg) { + if (typeof arg.value === 'boolean') { + literalCount++; + } + }); + + // At least two arguments must be Boolean literals. + if (literalCount >= 2) { + + // Check for two different Boolean literals in one call. + if (literalCount === 2 && args.length === 2) { + if (args[0].value !== args[1].value) { + report(node, 'Confusing true vs false'); + return; + } + } + + report(node, 'Multiple Boolean literals'); + } + } + + function checkLastArgument(node) { + var args = node['arguments']; + + if (args.length < 2) { + return; + } + + if (typeof args[args.length - 1].value === 'boolean') { + report(node, 'Ambiguous Boolean literal as the last argument'); + } + } + + try { + content = fs.readFileSync(filename, 'utf-8'); + syntax = esprima.parse(content, { tolerant: true, loc: true }); + traverse(syntax, function (node) { + if (node.type === 'CallExpression') { + checkSingleArgument(node); + checkLastArgument(node); + checkMultipleArguments(node); + } + }); + } catch (e) { + } + + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js new file mode 100644 index 0000000..bdd7761 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js @@ -0,0 +1,33 @@ +/*jslint node:true */ +var fs = require('fs'), + esprima = require('../esprima'), + files = process.argv.splice(2), + histogram, + type; + +histogram = { + Boolean: 0, + Identifier: 0, + Keyword: 0, + Null: 0, + Numeric: 0, + Punctuator: 0, + RegularExpression: 0, + String: 0 +}; + +files.forEach(function (filename) { + 'use strict'; + var content = fs.readFileSync(filename, 'utf-8'), + tokens = esprima.parse(content, { tokens: true }).tokens; + + tokens.forEach(function (token) { + histogram[token.type] += 1; + }); +}); + +for (type in histogram) { + if (histogram.hasOwnProperty(type)) { + console.log(type, histogram[type]); + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html new file mode 100644 index 0000000..a78e83e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html @@ -0,0 +1,102 @@ + + + + +Esprima + + + +
    + + + +

    Esprima ECMAScript parsing infrastructure for multipurpose analysis

    + +
    +

    Esprima is a high performance, standard-compliant +ECMAScript parser +written in ECMAScript (also popularly known as +JavaScript).

    + +

    Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as +Rhino and Node.js.

    + +

    Features

    + +
      +
    • Full support for ECMAScript 5.1 (ECMA-262)
    • +
    • Sensible syntax tree format, compatible with Mozilla +Parser AST
    • +
    • Heavily tested (> 550 unit tests with solid 100% statement coverage)
    • +
    • Optional tracking of syntax node location (index-based and line-column)
    • +
    • Experimental support for ES6/Harmony (module, class, destructuring, ...)
    • +
    + +

    Esprima is blazing fast (see the benchmark suite). +It is up to 3x faster than UglifyJS v1 and it is still +competitive with the new generation of fast parsers.

    + +

    Applications

    + +Esprima serves as the basis for many popular JavaScript development tools: + + + +

    Feedback is welcomed! Please join the discussion in the mailing list.

    + +
    + + + +
    + + +
    +Fork me on GitHub + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json new file mode 100644 index 0000000..40f3021 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json @@ -0,0 +1,43 @@ +{ + "name": "esprima", + "description": "ECMAScript parsing infrastructure for multipurpose analysis", + "homepage": "http://esprima.org", + "main": "esprima.js", + "bin": { + "esparse": "./bin/esparse.js", + "esvalidate": "./bin/esvalidate.js" + }, + "version": "1.0.2", + "engines": { + "node": ">=0.4.0" + }, + "maintainers": [ + { + "name": "Ariya Hidayat", + "email": "ariya.hidayat@gmail.com", + "url": "http://ariya.ofilabs.com" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/ariya/esprima.git" + }, + "licenses": [ + { + "type": "BSD", + "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" + } + ], + "scripts": { + "test": "node test/run.js", + "benchmark": "node test/benchmarks.js", + "benchmark-quick": "node test/benchmarks.js quick" + }, + "readme": "**Esprima** ([esprima.org](http://esprima.org)) is a high performance,\nstandard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\nparser written in ECMAScript (also popularly known as\n[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)).\nEsprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat),\nwith the help of [many contributors](https://github.com/ariya/esprima/contributors).\n\nEsprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as\n[Node.js](http://nodejs.org).\n\n### Features\n\n- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262)\n- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla\n[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)\n- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage)\n- Optional tracking of syntax node location (index-based and line-column)\n- Experimental support for ES6/Harmony (module, class, destructuring, ...)\n\nEsprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)).\nIt is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html)\nwith the new generation of fast parsers.\n\n### Applications\n\nEsprima serves as the basis for many popular JavaScript development tools:\n\n- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul)\n- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck)\n- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS),\n[Sweet.js](http://sweetjs.org/) (macro)\n- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr)\n- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html))\n- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter),\n- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen)\n\n### Questions?\n- [Documentation](http://esprima.org/doc)\n- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect)\nand [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement)\n- [Mailing list](http://groups.google.com/group/esprima)\n- [Contribution guide](http://esprima.org/doc/index.html#contribution)\n\nFollow [@Esprima](http://twitter.com/Esprima) on Twitter to get the\ndevelopment updates.\nFeedback and contribution are welcomed!\n\n### License\n\nCopyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about)\n and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/ariya/esprima/issues" + }, + "_id": "esprima@1.0.2", + "_from": "esprima@1.0.2" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html new file mode 100644 index 0000000..0187497 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html @@ -0,0 +1,58 @@ + + + + +Esprima: Benchmarks + + + + + + + + + + +
    + + + +

    Benchmarks show the speed

    + +

    Time measurement is carried out using Benchmark.js.

    + +

    Esprima version .

    + +

    Please wait...

    + +

    + + +

    + +

    + +

    Note: On a modern machine and up-to-date web browsers, +running full benchmarks suite takes around 1 minute.
    +For the quick benchmarks, the running time is only about 15 seconds.

    + + +
    + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js new file mode 100644 index 0000000..788b140 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js @@ -0,0 +1,334 @@ +/* + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +/*jslint browser: true node: true */ +/*global load:true, print:true */ +var setupBenchmarks, + fixture; + +fixture = [ + 'jQuery 1.7.1', + 'jQuery 1.6.4', + 'jQuery.Mobile 1.0', + 'Prototype 1.7.0.0', + 'Prototype 1.6.1', + 'Ext Core 3.1.0', + 'Ext Core 3.0.0', + 'MooTools 1.4.1', + 'MooTools 1.3.2', + 'Backbone 0.5.3', + 'Underscore 1.2.3' +]; + +function slug(name) { + 'use strict'; + return name.toLowerCase().replace(/\s/g, '-'); +} + +function kb(bytes) { + 'use strict'; + return (bytes / 1024).toFixed(1); +} + +if (typeof window !== 'undefined') { + // Run all tests in a browser environment. + setupBenchmarks = function () { + 'use strict'; + + function id(i) { + return document.getElementById(i); + } + + function setText(id, str) { + var el = document.getElementById(id); + if (typeof el.innerText === 'string') { + el.innerText = str; + } else { + el.textContent = str; + } + } + + function enableRunButtons() { + id('runquick').disabled = false; + id('runfull').disabled = false; + } + + function disableRunButtons() { + id('runquick').disabled = true; + id('runfull').disabled = true; + } + + function createTable() { + var str = '', + index, + test, + name; + + str += ''; + str += ''; + str += ''; + str += ''; + for (index = 0; index < fixture.length; index += 1) { + test = fixture[index]; + name = slug(test); + str += ''; + str += ''; + str += ''; + str += ''; + str += ''; + str += ''; + } + str += ''; + str += ''; + str += ''; + str += ''; + str += ''; + str += '
    SourceSize (KiB)Time (ms)Variance
    ' + test + '
    Total
    '; + + id('result').innerHTML = str; + } + + function loadTests() { + + var index = 0, + totalSize = 0; + + function load(test, callback) { + var xhr = new XMLHttpRequest(), + src = '3rdparty/' + test + '.js'; + + window.data = window.data || {}; + window.data[test] = ''; + + try { + xhr.timeout = 30000; + xhr.open('GET', src, true); + + xhr.ontimeout = function () { + setText('status', 'Error: time out while loading ' + test); + callback.apply(); + }; + + xhr.onreadystatechange = function () { + var success = false, + size = 0; + + if (this.readyState === XMLHttpRequest.DONE) { + if (this.status === 200) { + window.data[test] = this.responseText; + size = this.responseText.length; + totalSize += size; + success = true; + } + } + + if (success) { + setText(test + '-size', kb(size)); + } else { + setText('status', 'Please wait. Error loading ' + src); + setText(test + '-size', 'Error'); + } + + callback.apply(); + }; + + xhr.send(null); + } catch (e) { + setText('status', 'Please wait. Error loading ' + src); + callback.apply(); + } + } + + function loadNextTest() { + var test; + + if (index < fixture.length) { + test = fixture[index]; + index += 1; + setText('status', 'Please wait. Loading ' + test + + ' (' + index + ' of ' + fixture.length + ')'); + window.setTimeout(function () { + load(slug(test), loadNextTest); + }, 100); + } else { + setText('total-size', kb(totalSize)); + setText('status', 'Ready.'); + enableRunButtons(); + } + } + + loadNextTest(); + } + + function runBenchmarks(suite) { + + var index = 0, + totalTime = 0; + + function reset() { + var i, name; + for (i = 0; i < fixture.length; i += 1) { + name = slug(fixture[i]); + setText(name + '-time', ''); + setText(name + '-variance', ''); + } + setText('total-time', ''); + } + + function run() { + var el, test, source, benchmark; + + if (index >= suite.length) { + setText('total-time', (1000 * totalTime).toFixed(1)); + setText('status', 'Ready.'); + enableRunButtons(); + return; + } + + test = slug(suite[index]); + el = id(test); + source = window.data[test]; + setText(test + '-time', 'Running...'); + + // Force the result to be held in this array, thus defeating any + // possible "dead core elimination" optimization. + window.tree = []; + + benchmark = new window.Benchmark(test, function (o) { + var syntax = window.esprima.parse(source); + window.tree.push(syntax.body.length); + }, { + 'onComplete': function () { + setText(this.name + '-time', (1000 * this.stats.mean).toFixed(1)); + setText(this.name + '-variance', (1000 * this.stats.variance).toFixed(1)); + totalTime += this.stats.mean; + } + }); + + window.setTimeout(function () { + benchmark.run(); + index += 1; + window.setTimeout(run, 211); + }, 211); + } + + + disableRunButtons(); + setText('status', 'Please wait. Running benchmarks...'); + + reset(); + run(); + } + + id('runquick').onclick = function () { + runBenchmarks(['jQuery 1.7.1', 'jQuery.Mobile 1.0', 'Backbone 0.5.3']); + }; + + id('runfull').onclick = function () { + runBenchmarks(fixture); + }; + + setText('benchmarkjs-version', ' version ' + window.Benchmark.version); + setText('version', window.esprima.version); + + createTable(); + disableRunButtons(); + loadTests(); + }; +} else { + + // UMD workaround for V8 shell. + var window; + + (function (global) { + 'use strict'; + var Benchmark, + esprima, + dirname, + option, + fs, + readFileSync, + log; + + if (typeof require === 'undefined') { + dirname = 'test'; + load(dirname + '/3rdparty/benchmark.js'); + + window = global; + load(dirname + '/../esprima.js'); + + Benchmark = global.Benchmark; + esprima = global.esprima; + readFileSync = global.read; + log = print; + } else { + Benchmark = require('./3rdparty/benchmark'); + esprima = require('../esprima'); + fs = require('fs'); + option = process.argv[2]; + readFileSync = function readFileSync(filename) { + return fs.readFileSync(filename, 'utf-8'); + }; + dirname = __dirname; + log = console.log.bind(console); + } + + function runTests(tests) { + var index, + tree = [], + totalTime = 0, + totalSize = 0; + + tests.reduce(function (suite, filename) { + var source = readFileSync(dirname + '/3rdparty/' + slug(filename) + '.js'), + size = source.length; + totalSize += size; + return suite.add(filename, function () { + var syntax = esprima.parse(source); + tree.push(syntax.body.length); + }, { + 'onComplete': function (event, bench) { + log(this.name + + ' size ' + kb(size) + + ' time ' + (1000 * this.stats.mean).toFixed(1) + + ' variance ' + (1000 * this.stats.variance).toFixed(1)); + totalTime += this.stats.mean; + } + }); + }, new Benchmark.Suite()).on('complete', function () { + log('Total size ' + kb(totalSize) + + ' time ' + (1000 * totalTime).toFixed(1)); + }).run(); + } + + if (option === 'quick') { + runTests(['jQuery 1.7.1', 'jQuery.Mobile 1.0', 'Backbone 0.5.3']); + } else { + runTests(fixture); + } + }(this)); +} +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html new file mode 100644 index 0000000..51f1226 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html @@ -0,0 +1,69 @@ + + + + +Esprima: Speed Comparison + + + + + + + + + + +
    + + + +

    Compare with other parsers

    + +

    Time measurement is carried out using Benchmark.js.

    + +

    Esprima version .

    + +

    Please wait... +

    + +

    + + +

    Warning: Since each parser may have a different format for the syntax tree, the speed is not fully comparable (the cost of constructing different result is not taken into account). These tests exist only to ensure that Esprima parser is not ridiculously slow compare to other parsers.

    + +

    parse-js is the parser used in UglifyJS v1. It's a JavaScript port of the Common LISP version. This test uses parse-js from UglifyJS version 1.3.2 (June 26 2012).

    + +

    Acorn is a compact stand-alone JavaScript parser. This test uses Acorn revision 0590d122 (dated Oct 3 2012).

    + +

    More comparison variants will be added in the near future.

    + + +
    + + + + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js new file mode 100644 index 0000000..b81655c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js @@ -0,0 +1,328 @@ +/* + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint browser: true node: true */ +/*global load:true, print:true */ +var setupBenchmarks, + parsers, + fixtureList, + suite; + +parsers = [ + 'Esprima', + 'parse-js', + 'Acorn' +]; + +fixtureList = [ + 'jQuery 1.7.1', + 'Prototype 1.7.0.0', + 'MooTools 1.4.1', + 'Ext Core 3.1.0' +]; + +function slug(name) { + 'use strict'; + return name.toLowerCase().replace(/\s/g, '-'); +} + +function kb(bytes) { + 'use strict'; + return (bytes / 1024).toFixed(1); +} + +function inject(fname) { + 'use strict'; + var head = document.getElementsByTagName('head')[0], + script = document.createElement('script'); + + script.src = fname; + script.type = 'text/javascript'; + head.appendChild(script); +} + +if (typeof window !== 'undefined') { + + // Run all tests in a browser environment. + setupBenchmarks = function () { + 'use strict'; + + function id(i) { + return document.getElementById(i); + } + + function setText(id, str) { + var el = document.getElementById(id); + if (typeof el.innerText === 'string') { + el.innerText = str; + } else { + el.textContent = str; + } + } + + function enableRunButtons() { + id('run').disabled = false; + } + + function disableRunButtons() { + id('run').disabled = true; + } + + function createTable() { + var str = '', + i, + index, + test, + name; + + str += ''; + str += ''; + for (i = 0; i < parsers.length; i += 1) { + str += ''; + } + str += ''; + str += ''; + for (index = 0; index < fixtureList.length; index += 1) { + test = fixtureList[index]; + name = slug(test); + str += ''; + str += ''; + if (window.data && window.data[name]) { + str += ''; + } else { + str += ''; + } + for (i = 0; i < parsers.length; i += 1) { + str += ''; + } + str += ''; + } + str += ''; + str += ''; + for (i = 0; i < parsers.length; i += 1) { + str += ''; + } + str += ''; + str += ''; + str += '
    SourceSize (KiB)' + parsers[i] + '
    ' + test + '' + kb(window.data[name].length) + '
    Total
    '; + + id('result').innerHTML = str; + } + + function loadFixtures() { + + var index = 0, + totalSize = 0; + + function load(test, callback) { + var xhr = new XMLHttpRequest(), + src = '3rdparty/' + test + '.js'; + + window.data = window.data || {}; + window.data[test] = ''; + + try { + xhr.timeout = 30000; + xhr.open('GET', src, true); + + xhr.ontimeout = function () { + setText('status', 'Error: time out while loading ' + test); + callback.apply(); + }; + + xhr.onreadystatechange = function () { + var success = false, + size = 0; + + if (this.readyState === XMLHttpRequest.DONE) { + if (this.status === 200) { + window.data[test] = this.responseText; + size = this.responseText.length; + totalSize += size; + success = true; + } + } + + if (success) { + setText(test + '-size', kb(size)); + } else { + setText('status', 'Please wait. Error loading ' + src); + setText(test + '-size', 'Error'); + } + + callback.apply(); + }; + + xhr.send(null); + } catch (e) { + setText('status', 'Please wait. Error loading ' + src); + callback.apply(); + } + } + + function loadNextTest() { + var test; + + if (index < fixtureList.length) { + test = fixtureList[index]; + index += 1; + setText('status', 'Please wait. Loading ' + test + + ' (' + index + ' of ' + fixtureList.length + ')'); + window.setTimeout(function () { + load(slug(test), loadNextTest); + }, 100); + } else { + setText('total-size', kb(totalSize)); + setText('status', 'Ready.'); + enableRunButtons(); + } + } + + loadNextTest(); + } + + function setupParser() { + var i, j; + + suite = []; + for (i = 0; i < fixtureList.length; i += 1) { + for (j = 0; j < parsers.length; j += 1) { + suite.push({ + fixture: fixtureList[i], + parser: parsers[j] + }); + } + } + + createTable(); + } + + function runBenchmarks() { + + var index = 0, + totalTime = {}; + + function reset() { + var i, name; + for (i = 0; i < suite.length; i += 1) { + name = slug(suite[i].fixture) + '-' + slug(suite[i].parser); + setText(name + '-time', ''); + } + } + + function run() { + var fixture, parser, test, source, fn, benchmark; + + if (index >= suite.length) { + setText('status', 'Ready.'); + enableRunButtons(); + return; + } + + fixture = suite[index].fixture; + parser = suite[index].parser; + + source = window.data[slug(fixture)]; + + test = slug(fixture) + '-' + slug(parser); + setText(test + '-time', 'Running...'); + + setText('status', 'Please wait. Parsing ' + fixture + '...'); + + // Force the result to be held in this array, thus defeating any + // possible "dead code elimination" optimization. + window.tree = []; + + switch (parser) { + case 'Esprima': + fn = function () { + var syntax = window.esprima.parse(source); + window.tree.push(syntax.body.length); + }; + break; + + case 'parse-js': + fn = function () { + var syntax = window.parseJS.parse(source); + window.tree.push(syntax.length); + }; + break; + + case 'Acorn': + fn = function () { + var syntax = window.acorn.parse(source); + window.tree.push(syntax.body.length); + }; + break; + + default: + throw 'Unknown parser type ' + parser; + } + + benchmark = new window.Benchmark(test, fn, { + 'onComplete': function () { + setText(this.name + '-time', (1000 * this.stats.mean).toFixed(1)); + if (!totalTime[parser]) { + totalTime[parser] = this.stats.mean; + } else { + totalTime[parser] += this.stats.mean; + } + setText(slug(parser) + '-total', (1000 * totalTime[parser]).toFixed(1)); + } + }); + + window.setTimeout(function () { + benchmark.run(); + index += 1; + window.setTimeout(run, 211); + }, 211); + } + + + disableRunButtons(); + setText('status', 'Please wait. Running benchmarks...'); + + reset(); + run(); + } + + id('run').onclick = function () { + runBenchmarks(); + }; + + setText('benchmarkjs-version', ' version ' + window.Benchmark.version); + setText('version', window.esprima.version); + + setupParser(); + createTable(); + + disableRunButtons(); + loadFixtures(); + }; +} else { + // TODO + console.log('Not implemented yet!'); +} +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html new file mode 100644 index 0000000..2ae18cc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html @@ -0,0 +1,40 @@ + + + + +Esprima: Compatibility Tests + + + + + + + +
    + + + +

    Compatibility keeps everyone happy

    +

    Esprima version .

    +

    The following tests are to ensure that the syntax tree is compatible to +that produced by Mozilla SpiderMonkey +Parser reflection.

    +

    Please wait...

    +
    + +
    + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js new file mode 100644 index 0000000..ee3a629 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js @@ -0,0 +1,239 @@ +/* + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2011 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint node: true */ +/*global document: true, window:true, esprima: true, testReflect: true */ + +var runTests; + +function getContext(esprima, reportCase, reportFailure) { + 'use strict'; + + var Reflect, Pattern; + + // Maps Mozilla Reflect object to our Esprima parser. + Reflect = { + parse: function (code) { + var result; + + reportCase(code); + + try { + result = esprima.parse(code); + } catch (error) { + result = error; + } + + return result; + } + }; + + // This is used by Reflect test suite to match a syntax tree. + Pattern = function (obj) { + var pattern; + + // Poor man's deep object cloning. + pattern = JSON.parse(JSON.stringify(obj)); + + // Special handling for regular expression literal since we need to + // convert it to a string literal, otherwise it will be decoded + // as object "{}" and the regular expression would be lost. + if (obj.type && obj.type === 'Literal') { + if (obj.value instanceof RegExp) { + pattern = { + type: obj.type, + value: obj.value.toString() + }; + } + } + + // Special handling for branch statement because SpiderMonkey + // prefers to put the 'alternate' property before 'consequent'. + if (obj.type && obj.type === 'IfStatement') { + pattern = { + type: pattern.type, + test: pattern.test, + consequent: pattern.consequent, + alternate: pattern.alternate + }; + } + + // Special handling for do while statement because SpiderMonkey + // prefers to put the 'test' property before 'body'. + if (obj.type && obj.type === 'DoWhileStatement') { + pattern = { + type: pattern.type, + body: pattern.body, + test: pattern.test + }; + } + + function adjustRegexLiteralAndRaw(key, value) { + if (key === 'value' && value instanceof RegExp) { + value = value.toString(); + } else if (key === 'raw' && typeof value === "string") { + // Ignore Esprima-specific 'raw' property. + return undefined; + } + return value; + } + + if (obj.type && (obj.type === 'Program')) { + pattern.assert = function (tree) { + var actual, expected; + actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4); + expected = JSON.stringify(obj, null, 4); + + if (expected !== actual) { + reportFailure(expected, actual); + } + }; + } + + return pattern; + }; + + return { + Reflect: Reflect, + Pattern: Pattern + }; +} + +if (typeof window !== 'undefined') { + // Run all tests in a browser environment. + runTests = function () { + 'use strict'; + + var total = 0, + failures = 0; + + function setText(el, str) { + if (typeof el.innerText === 'string') { + el.innerText = str; + } else { + el.textContent = str; + } + } + + function reportCase(code) { + var report, e; + report = document.getElementById('report'); + e = document.createElement('pre'); + e.setAttribute('class', 'code'); + setText(e, code); + report.appendChild(e); + total += 1; + } + + function reportFailure(expected, actual) { + var report, e; + + failures += 1; + + report = document.getElementById('report'); + + e = document.createElement('p'); + setText(e, 'Expected'); + report.appendChild(e); + + e = document.createElement('pre'); + e.setAttribute('class', 'expected'); + setText(e, expected); + report.appendChild(e); + + e = document.createElement('p'); + setText(e, 'Actual'); + report.appendChild(e); + + e = document.createElement('pre'); + e.setAttribute('class', 'actual'); + setText(e, actual); + report.appendChild(e); + } + + setText(document.getElementById('version'), esprima.version); + + window.setTimeout(function () { + var tick, context = getContext(esprima, reportCase, reportFailure); + + tick = new Date(); + testReflect(context.Reflect, context.Pattern); + tick = (new Date()) - tick; + + if (failures > 0) { + setText(document.getElementById('status'), total + ' tests. ' + + 'Failures: ' + failures + '. ' + tick + ' ms'); + } else { + setText(document.getElementById('status'), total + ' tests. ' + + 'No failure. ' + tick + ' ms'); + } + }, 513); + }; +} else { + (function (global) { + 'use strict'; + var esprima = require('../esprima'), + tick, + total = 0, + failures = [], + header, + current, + context; + + function reportCase(code) { + total += 1; + current = code; + } + + function reportFailure(expected, actual) { + failures.push({ + source: current, + expected: expected.toString(), + actual: actual.toString() + }); + } + + context = getContext(esprima, reportCase, reportFailure); + + tick = new Date(); + require('./reflect').testReflect(context.Reflect, context.Pattern); + tick = (new Date()) - tick; + + header = total + ' tests. ' + failures.length + ' failures. ' + + tick + ' ms'; + if (failures.length) { + console.error(header); + failures.forEach(function (failure) { + console.error(failure.source + ': Expected\n ' + + failure.expected.split('\n').join('\n ') + + '\nto match\n ' + failure.actual); + }); + } else { + console.log(header); + } + process.exit(failures.length === 0 ? 0 : 1); + }(this)); +} +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html new file mode 100644 index 0000000..9943ff0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html @@ -0,0 +1,3 @@ + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html new file mode 100644 index 0000000..0885679 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html @@ -0,0 +1,37 @@ + + + + +Esprima: Coverage Analysis Report + + + + +
    + + + +

    Coverage Analysis ensures systematic exercise of the parser

    + +

    Note: This is not a live (in-browser) code coverage report. +The analysis is performed offline +(using node-cover).
    + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html new file mode 100644 index 0000000..696c682 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html @@ -0,0 +1,4676 @@ + + + + +Esprima: Coverage Analysis Report + + + + +

    + + + +

    Coverage Analysis ensures systematic exercise of the parser

    + +

    Note: This is not a live (in-browser) code coverage report. +The analysis is performed offline +(using node-cover).
    + +Tested revision: b61b064 + (dated 4 Aug 2012 ).

    +
    +/*
    +    Copyright (C) 2012 Ariya Hidayat 
    +    Copyright (C) 2012 Mathias Bynens 
    +    Copyright (C) 2012 Joost-Wim Boekesteijn 
    +    Copyright (C) 2012 Kris Kowal 
    +    Copyright (C) 2012 Yusuke Suzuki 
    +    Copyright (C) 2012 Arpad Borsos 
    +    Copyright (C) 2011 Ariya Hidayat 
    +  
    +    Redistribution and use in source and binary forms, with or without
    +    modification, are permitted provided that the following conditions are met:
    +  
    +      * Redistributions of source code must retain the above copyright
    +        notice, this list of conditions and the following disclaimer.
    +      * Redistributions in binary form must reproduce the above copyright
    +        notice, this list of conditions and the following disclaimer in the
    +        documentation and/or other materials provided with the distribution.
    +  
    +    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    +    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    +    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    +    ARE DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
    +    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    +    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    +    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    +    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    +    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    +    THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    +  */
    +  
    +  /*jslint bitwise:true plusplus:true */
    +  /*global esprima:true, define:true, exports:true, window: true,
    +  throwError: true, createLiteral: true, generateStatement: true,
    +  parseAssignmentExpression: true, parseBlock: true,
    +  parseClassExpression: true, parseClassDeclaration: true, parseExpression: true,
    +  parseFunctionDeclaration: true, parseFunctionExpression: true,
    +  parseFunctionSourceElements: true, parseVariableIdentifier: true,
    +  parseImportSpecifier: true,
    +  parseLeftHandSideExpression: true,
    +  parseStatement: true, parseSourceElement: true, parseModuleBlock: true, parseConciseBody: true,
    +  parseYieldExpression: true
    +  */
    +  
    +  (function (factory) {
    +      'use strict';
    +  
    +      // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js,
    +      // and plain browser loading,
    +      if (typeof define === 'function' && define.amd) {
    +          define(['exports'], factory);
    +      } else if (typeof exports !== 'undefined') {
    +          factory(exports);
    +      } else {
    +          factory((window.esprima = {}));
    +      }
    +  }(function (exports) {
    +      'use strict';
    +  
    +      var Token,
    +          TokenName,
    +          Syntax,
    +          PropertyKind,
    +          Messages,
    +          Regex,
    +          source,
    +          strict,
    +          yieldAllowed,
    +          yieldFound,
    +          index,
    +          lineNumber,
    +          lineStart,
    +          length,
    +          buffer,
    +          state,
    +          extra;
    +  
    +      Token = {
    +          BooleanLiteral: 1,
    +          EOF: 2,
    +          Identifier: 3,
    +          Keyword: 4,
    +          NullLiteral: 5,
    +          NumericLiteral: 6,
    +          Punctuator: 7,
    +          StringLiteral: 8
    +      };
    +  
    +      TokenName = {};
    +      TokenName[Token.BooleanLiteral] = 'Boolean';
    +      TokenName[Token.EOF] = '';
    +      TokenName[Token.Identifier] = 'Identifier';
    +      TokenName[Token.Keyword] = 'Keyword';
    +      TokenName[Token.NullLiteral] = 'Null';
    +      TokenName[Token.NumericLiteral] = 'Numeric';
    +      TokenName[Token.Punctuator] = 'Punctuator';
    +      TokenName[Token.StringLiteral] = 'String';
    +  
    +      Syntax = {
    +          ArrayExpression: 'ArrayExpression',
    +          ArrayPattern: 'ArrayPattern',
    +          ArrowFunctionExpression: 'ArrowFunctionExpression',
    +          AssignmentExpression: 'AssignmentExpression',
    +          BinaryExpression: 'BinaryExpression',
    +          BlockStatement: 'BlockStatement',
    +          BreakStatement: 'BreakStatement',
    +          CallExpression: 'CallExpression',
    +          CatchClause: 'CatchClause',
    +          ClassBody: 'ClassBody',
    +          ClassDeclaration: 'ClassDeclaration',
    +          ClassExpression: 'ClassExpression',
    +          MethodDefinition: 'MethodDefinition',
    +          ClassHeritage: 'ClassHeritage',
    +          ConditionalExpression: 'ConditionalExpression',
    +          ContinueStatement: 'ContinueStatement',
    +          DebuggerStatement: 'DebuggerStatement',
    +          DoWhileStatement: 'DoWhileStatement',
    +          EmptyStatement: 'EmptyStatement',
    +          ExportDeclaration: 'ExportDeclaration',
    +          ExportSpecifier: 'ExportSpecifier',
    +          ExportSpecifierSet: 'ExportSpecifierSet',
    +          ExpressionStatement: 'ExpressionStatement',
    +          ForInStatement: 'ForInStatement',
    +          ForOfStatement: 'ForOfStatement',
    +          ForStatement: 'ForStatement',
    +          FunctionDeclaration: 'FunctionDeclaration',
    +          FunctionExpression: 'FunctionExpression',
    +          Glob: 'Glob',
    +          Identifier: 'Identifier',
    +          IfStatement: 'IfStatement',
    +          ImportDeclaration: 'ImportDeclaration',
    +          ImportSpecifier: 'ImportSpecifier',
    +          LabeledStatement: 'LabeledStatement',
    +          Literal: 'Literal',
    +          LogicalExpression: 'LogicalExpression',
    +          MemberExpression: 'MemberExpression',
    +          ModuleDeclaration: 'ModuleDeclaration',
    +          NewExpression: 'NewExpression',
    +          ObjectExpression: 'ObjectExpression',
    +          ObjectPattern: 'ObjectPattern',
    +          Path:  'Path',
    +          Program: 'Program',
    +          Property: 'Property',
    +          ReturnStatement: 'ReturnStatement',
    +          SequenceExpression: 'SequenceExpression',
    +          SwitchCase: 'SwitchCase',
    +          SwitchStatement: 'SwitchStatement',
    +          ThisExpression: 'ThisExpression',
    +          ThrowStatement: 'ThrowStatement',
    +          TryStatement: 'TryStatement',
    +          UnaryExpression: 'UnaryExpression',
    +          UpdateExpression: 'UpdateExpression',
    +          VariableDeclaration: 'VariableDeclaration',
    +          VariableDeclarator: 'VariableDeclarator',
    +          WhileStatement: 'WhileStatement',
    +          WithStatement: 'WithStatement',
    +          YieldExpression: 'YieldExpression'
    +      };
    +  
    +      PropertyKind = {
    +          Data: 1,
    +          Get: 2,
    +          Set: 4
    +      };
    +  
    +      // Error messages should be identical to V8.
    +      Messages = {
    +          UnexpectedToken:  'Unexpected token %0',
    +          UnexpectedNumber:  'Unexpected number',
    +          UnexpectedString:  'Unexpected string',
    +          UnexpectedIdentifier:  'Unexpected identifier',
    +          UnexpectedReserved:  'Unexpected reserved word',
    +          UnexpectedEOS:  'Unexpected end of input',
    +          NewlineAfterThrow:  'Illegal newline after throw',
    +          InvalidRegExp: 'Invalid regular expression',
    +          UnterminatedRegExp:  'Invalid regular expression: missing /',
    +          InvalidLHSInAssignment:  'Invalid left-hand side in assignment',
    +          InvalidLHSInForIn:  'Invalid left-hand side in for-in',
    +          MultipleDefaultsInSwitch: 'More than one default clause in switch statement',
    +          NoCatchOrFinally:  'Missing catch or finally after try',
    +          UnknownLabel: 'Undefined label \'%0\'',
    +          Redeclaration: '%0 \'%1\' has already been declared',
    +          IllegalContinue: 'Illegal continue statement',
    +          IllegalBreak: 'Illegal break statement',
    +          IllegalReturn: 'Illegal return statement',
    +          IllegalYield: 'Illegal yield expression',
    +          StrictModeWith:  'Strict mode code may not include a with statement',
    +          StrictCatchVariable:  'Catch variable may not be eval or arguments in strict mode',
    +          StrictVarName:  'Variable name may not be eval or arguments in strict mode',
    +          StrictParamName:  'Parameter name eval or arguments is not allowed in strict mode',
    +          StrictParamDupe: 'Strict mode function may not have duplicate parameter names',
    +          StrictFunctionName:  'Function name may not be eval or arguments in strict mode',
    +          StrictOctalLiteral:  'Octal literals are not allowed in strict mode.',
    +          StrictDelete:  'Delete of an unqualified identifier in strict mode.',
    +          StrictDuplicateProperty:  'Duplicate data property in object literal not allowed in strict mode',
    +          AccessorDataProperty:  'Object literal may not have data and accessor property with the same name',
    +          AccessorGetSet:  'Object literal may not have multiple get/set accessors with the same name',
    +          StrictLHSAssignment:  'Assignment to eval or arguments is not allowed in strict mode',
    +          StrictLHSPostfix:  'Postfix increment/decrement may not have eval or arguments operand in strict mode',
    +          StrictLHSPrefix:  'Prefix increment/decrement may not have eval or arguments operand in strict mode',
    +          StrictReservedWord:  'Use of future reserved word in strict mode',
    +          NoFromAfterImport: 'Missing from after import',
    +          NoYieldInGenerator: 'Missing yield in generator'
    +      };
    +  
    +      // See also tools/generate-unicode-regex.py.
    +      Regex = {
    +          NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'),
    +          NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]')
    +      };
    +  
    +      // Ensure the condition is true, otherwise throw an error.
    +      // This is only to have a better contract semantic, i.e. another safety net
    +      // to catch a logic error. The condition shall be fulfilled in normal case.
    +      // Do NOT use this to enforce a certain condition on any user input.
    +  
    +      function assert(condition, message) {
    +          if (!condition) {
    +              throw new Error('ASSERT: ' + message);
    +          }
    +      }
    +  
    +      function sliceSource(from, to) {
    +          return source.slice(from, to);
    +      }
    +  
    +      if (typeof 'esprima'[0] === 'undefined') {
    +          sliceSource = function sliceArraySource(from, to) {
    +              return source.slice(from, to).join('');
    +          };
    +      }
    +  
    +      function isDecimalDigit(ch) {
    +          return '0123456789'.indexOf(ch) >= 0;
    +      }
    +  
    +      function isHexDigit(ch) {
    +          return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;
    +      }
    +  
    +      function isOctalDigit(ch) {
    +          return '01234567'.indexOf(ch) >= 0;
    +      }
    +  
    +  
    +      // 7.2 White Space
    +  
    +      function isWhiteSpace(ch) {
    +          return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') ||
    +              (ch === '\u000C') || (ch === '\u00A0') ||
    +              (ch.charCodeAt(0) >= 0x1680 &&
    +               '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0);
    +      }
    +  
    +      // 7.3 Line Terminators
    +  
    +      function isLineTerminator(ch) {
    +          return (ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029');
    +      }
    +  
    +      // 7.6 Identifier Names and Identifiers
    +  
    +      function isIdentifierStart(ch) {
    +          return (ch === '$') || (ch === '_') || (ch === '\\') ||
    +              (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') ||
    +              ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch));
    +      }
    +  
    +      function isIdentifierPart(ch) {
    +          return (ch === '$') || (ch === '_') || (ch === '\\') ||
    +              (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') ||
    +              ((ch >= '0') && (ch <= '9')) ||
    +              ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch));
    +      }
    +  
    +      // 7.6.1.2 Future Reserved Words
    +  
    +      function isFutureReservedWord(id) {
    +          switch (id) {
    +  
    +          // Future reserved words.
    +          case 'class':
    +          case 'enum':
    +          case 'export':
    +          case 'extends':
    +          case 'import':
    +          case 'super':
    +              return true;
    +          }
    +  
    +          return false;
    +      }
    +  
    +      function isStrictModeReservedWord(id) {
    +          switch (id) {
    +  
    +          // Strict Mode reserved words.
    +          case 'implements':
    +          case 'interface':
    +          case 'package':
    +          case 'private':
    +          case 'protected':
    +          case 'public':
    +          case 'static':
    +          case 'yield':
    +          case 'let':
    +              return true;
    +          }
    +  
    +          return false;
    +      }
    +  
    +      function isRestrictedWord(id) {
    +          return id === 'eval' || id === 'arguments';
    +      }
    +  
    +      // 7.6.1.1 Keywords
    +  
    +      function isKeyword(id) {
    +          var keyword = false;
    +          switch (id.length) {
    +          case 2:
    +              keyword = (id === 'if') || (id === 'in') || (id === 'do');
    +              break;
    +          case 3:
    +              keyword = (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');
    +              break;
    +          case 4:
    +              keyword = (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with');
    +              break;
    +          case 5:
    +              keyword = (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw');
    +              break;
    +          case 6:
    +              keyword = (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch');
    +              break;
    +          case 7:
    +              keyword = (id === 'default') || (id === 'finally');
    +              break;
    +          case 8:
    +              keyword = (id === 'function') || (id === 'continue') || (id === 'debugger');
    +              break;
    +          case 10:
    +              keyword = (id === 'instanceof');
    +              break;
    +          }
    +  
    +          if (keyword) {
    +              return true;
    +          }
    +  
    +          switch (id) {
    +          // Future reserved words.
    +          // 'const' is specialized as Keyword in V8.
    +          case 'const':
    +              return true;
    +  
    +          // For compatiblity to SpiderMonkey and ES.next
    +          case 'yield':
    +          case 'let':
    +              return true;
    +          }
    +  
    +          if (strict && isStrictModeReservedWord(id)) {
    +              return true;
    +          }
    +  
    +          return isFutureReservedWord(id);
    +      }
    +  
    +      // Return the next character and move forward.
    +  
    +      function nextChar() {
    +          return source[index++];
    +      }
    +  
    +      // 7.4 Comments
    +  
    +      function skipComment() {
    +          var ch, blockComment, lineComment;
    +  
    +          blockComment = false;
    +          lineComment = false;
    +  
    +          while (index < length) {
    +              ch = source[index];
    +  
    +              if (lineComment) {
    +                  ch = nextChar();
    +                  if (isLineTerminator(ch)) {
    +                      lineComment = false;
    +                      if (ch === '\r' && source[index] === '\n') {
    +                          ++index;
    +                      }
    +                      ++lineNumber;
    +                      lineStart = index;
    +                  }
    +              } else if (blockComment) {
    +                  if (isLineTerminator(ch)) {
    +                      if (ch === '\r' && source[index + 1] === '\n') {
    +                          ++index;
    +                      }
    +                      ++lineNumber;
    +                      ++index;
    +                      lineStart = index;
    +                      if (index >= length) {
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +                  } else {
    +                      ch = nextChar();
    +                      if (index >= length) {
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +                      if (ch === '*') {
    +                          ch = source[index];
    +                          if (ch === '/') {
    +                              ++index;
    +                              blockComment = false;
    +                          }
    +                      }
    +                  }
    +              } else if (ch === '/') {
    +                  ch = source[index + 1];
    +                  if (ch === '/') {
    +                      index += 2;
    +                      lineComment = true;
    +                  } else if (ch === '*') {
    +                      index += 2;
    +                      blockComment = true;
    +                      if (index >= length) {
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +                  } else {
    +                      break;
    +                  }
    +              } else if (isWhiteSpace(ch)) {
    +                  ++index;
    +              } else if (isLineTerminator(ch)) {
    +                  ++index;
    +                  if (ch ===  '\r' && source[index] === '\n') {
    +                      ++index;
    +                  }
    +                  ++lineNumber;
    +                  lineStart = index;
    +              } else {
    +                  break;
    +              }
    +          }
    +      }
    +  
    +      function scanHexEscape(prefix) {
    +          var i, len, ch, code = 0;
    +  
    +          len = (prefix === 'u') ? 4 : 2;
    +          for (i = 0; i < len; ++i) {
    +              if (index < length && isHexDigit(source[index])) {
    +                  ch = nextChar();
    +                  code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
    +              } else {
    +                  return '';
    +              }
    +          }
    +          return String.fromCharCode(code);
    +      }
    +  
    +      function scanUnicodeCodePointEscape() {
    +          var ch, code, cu1, cu2;
    +  
    +          ch = source[index];
    +          code = 0;
    +  
    +          // At least, one hex digit is required.
    +          if (ch === '}') {
    +              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +          }
    +  
    +          while (index < length) {
    +              ch = nextChar();
    +              if (!isHexDigit(ch)) {
    +                  break;
    +              }
    +              code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
    +          }
    +  
    +          if (code > 0x10FFFF || ch !== '}') {
    +              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +          }
    +  
    +          // UTF-16 Encoding
    +          if (code <= 0xFFFF) {
    +              return String.fromCharCode(code);
    +          }
    +          cu1 = ((code - 0x10000) >> 10) + 0xD800;
    +          cu2 = ((code - 0x10000) & 1023) + 0xDC00;
    +          return String.fromCharCode(cu1, cu2);
    +      }
    +  
    +      function scanIdentifier() {
    +          var ch, start, id, restore;
    +  
    +          ch = source[index];
    +          if (!isIdentifierStart(ch)) {
    +              return;
    +          }
    +  
    +          start = index;
    +          if (ch === '\\') {
    +              ++index;
    +              if (source[index] !== 'u') {
    +                  return;
    +              }
    +              ++index;
    +              restore = index;
    +              ch = scanHexEscape('u');
    +              if (ch) {
    +                  if (ch === '\\' || !isIdentifierStart(ch)) {
    +                      return;
    +                  }
    +                  id = ch;
    +              } else {
    +                  index = restore;
    +                  id = 'u';
    +              }
    +          } else {
    +              id = nextChar();
    +          }
    +  
    +          while (index < length) {
    +              ch = source[index];
    +              if (!isIdentifierPart(ch)) {
    +                  break;
    +              }
    +              if (ch === '\\') {
    +                  ++index;
    +                  if (source[index] !== 'u') {
    +                      return;
    +                  }
    +                  ++index;
    +                  restore = index;
    +                  ch = scanHexEscape('u');
    +                  if (ch) {
    +                      if (ch === '\\' || !isIdentifierPart(ch)) {
    +                          return;
    +                      }
    +                      id += ch;
    +                  } else {
    +                      index = restore;
    +                      id += 'u';
    +                  }
    +              } else {
    +                  id += nextChar();
    +              }
    +          }
    +  
    +          // There is no keyword or literal with only one character.
    +          // Thus, it must be an identifier.
    +          if (id.length === 1) {
    +              return {
    +                  type: Token.Identifier,
    +                  value: id,
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          if (isKeyword(id)) {
    +              return {
    +                  type: Token.Keyword,
    +                  value: id,
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          // 7.8.1 Null Literals
    +  
    +          if (id === 'null') {
    +              return {
    +                  type: Token.NullLiteral,
    +                  value: id,
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          // 7.8.2 Boolean Literals
    +  
    +          if (id === 'true' || id === 'false') {
    +              return {
    +                  type: Token.BooleanLiteral,
    +                  value: id,
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          return {
    +              type: Token.Identifier,
    +              value: id,
    +              lineNumber: lineNumber,
    +              lineStart: lineStart,
    +              range: [start, index]
    +          };
    +      }
    +  
    +      // 7.7 Punctuators
    +  
    +      function scanPunctuator() {
    +          var start = index,
    +              ch1 = source[index],
    +              ch2,
    +              ch3,
    +              ch4;
    +  
    +          // Check for most common single-character punctuators.
    +  
    +          if (ch1 === ';' || ch1 === '{' || ch1 === '}') {
    +              ++index;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: ch1,
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          if (ch1 === ',' || ch1 === '(' || ch1 === ')') {
    +              ++index;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: ch1,
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          // Dot (.) can also start a floating-point number, hence the need
    +          // to check the next character.
    +  
    +          ch2 = source[index + 1];
    +          if (ch1 === '.' && !isDecimalDigit(ch2)) {
    +              return {
    +                  type: Token.Punctuator,
    +                  value: nextChar(),
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          // Peek more characters.
    +  
    +          ch3 = source[index + 2];
    +          ch4 = source[index + 3];
    +  
    +          // 4-character punctuator: >>>=
    +  
    +          if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
    +              if (ch4 === '=') {
    +                  index += 4;
    +                  return {
    +                      type: Token.Punctuator,
    +                      value: '>>>=',
    +                      lineNumber: lineNumber,
    +                      lineStart: lineStart,
    +                      range: [start, index]
    +                  };
    +              }
    +          }
    +  
    +          // 3-character punctuators: === !== >>> <<= >>=
    +  
    +          if (ch1 === '=' && ch2 === '=' && ch3 === '=') {
    +              index += 3;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: '===',
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          if (ch1 === '!' && ch2 === '=' && ch3 === '=') {
    +              index += 3;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: '!==',
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
    +              index += 3;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: '>>>',
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          if (ch1 === '<' && ch2 === '<' && ch3 === '=') {
    +              index += 3;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: '<<=',
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          if (ch1 === '>' && ch2 === '>' && ch3 === '=') {
    +              index += 3;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: '>>=',
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          // 2-character punctuators: <= >= == != ++ -- << >> && ||
    +          // += -= *= %= &= |= ^= /=
    +  
    +          if (ch2 === '=') {
    +              if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {
    +                  index += 2;
    +                  return {
    +                      type: Token.Punctuator,
    +                      value: ch1 + ch2,
    +                      lineNumber: lineNumber,
    +                      lineStart: lineStart,
    +                      range: [start, index]
    +                  };
    +              }
    +          }
    +  
    +          if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) {
    +              if ('+-<>&|'.indexOf(ch2) >= 0) {
    +                  index += 2;
    +                  return {
    +                      type: Token.Punctuator,
    +                      value: ch1 + ch2,
    +                      lineNumber: lineNumber,
    +                      lineStart: lineStart,
    +                      range: [start, index]
    +                  };
    +              }
    +          }
    +  
    +          if (ch1 === '=' && ch2 === '>') {
    +              index += 2;
    +              return {
    +                  type: Token.Punctuator,
    +                  value: '=>',
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +  
    +          // The remaining 1-character punctuators.
    +  
    +          if ('[]<>+-*%&|^!~?:=/'.indexOf(ch1) >= 0) {
    +              return {
    +                  type: Token.Punctuator,
    +                  value: nextChar(),
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [start, index]
    +              };
    +          }
    +      }
    +  
    +      // 7.8.3 Numeric Literals
    +  
    +      function scanNumericLiteral() {
    +          var number, start, ch, octal;
    +  
    +          ch = source[index];
    +          assert(isDecimalDigit(ch) || (ch === '.'),
    +              'Numeric literal must start with a decimal digit or a decimal point');
    +  
    +          start = index;
    +          number = '';
    +          if (ch !== '.') {
    +              number = nextChar();
    +              ch = source[index];
    +  
    +              // Hex number starts with '0x'.
    +              // Octal number starts with '0'.
    +              // Octal number in ES6 starts with '0o'.
    +              // Binary number in ES6 starts with '0b'.
    +              if (number === '0') {
    +                  if (ch === 'x' || ch === 'X') {
    +                      number += nextChar();
    +                      while (index < length) {
    +                          ch = source[index];
    +                          if (!isHexDigit(ch)) {
    +                              break;
    +                          }
    +                          number += nextChar();
    +                      }
    +  
    +                      if (number.length <= 2) {
    +                          // only 0x
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +  
    +                      if (index < length) {
    +                          ch = source[index];
    +                          if (isIdentifierStart(ch)) {
    +                              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                          }
    +                      }
    +                      return {
    +                          type: Token.NumericLiteral,
    +                          value: parseInt(number, 16),
    +                          lineNumber: lineNumber,
    +                          lineStart: lineStart,
    +                          range: [start, index]
    +                      };
    +                  } else if (ch === 'b' || ch === 'B') {
    +                      nextChar();
    +                      number = '';
    +  
    +                      while (index < length) {
    +                          ch = source[index];
    +                          if (ch !== '0' && ch !== '1') {
    +                              break;
    +                          }
    +                          number += nextChar();
    +                      }
    +  
    +                      if (number.length === 0) {
    +                          // only 0b or 0B
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +  
    +                      if (index < length) {
    +                          ch = source[index];
    +                          if (isIdentifierStart(ch) || isDecimalDigit(ch)) {
    +                              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                          }
    +                      }
    +                      return {
    +                          type: Token.NumericLiteral,
    +                          value: parseInt(number, 2),
    +                          lineNumber: lineNumber,
    +                          lineStart: lineStart,
    +                          range: [start, index]
    +                      };
    +                  } else if (ch === 'o' || ch === 'O' || isOctalDigit(ch)) {
    +                      if (isOctalDigit(ch)) {
    +                          octal = true;
    +                          number = nextChar();
    +                      } else {
    +                          octal = false;
    +                          nextChar();
    +                          number = '';
    +                      }
    +  
    +                      while (index < length) {
    +                          ch = source[index];
    +                          if (!isOctalDigit(ch)) {
    +                              break;
    +                          }
    +                          number += nextChar();
    +                      }
    +  
    +                      if (number.length === 0) {
    +                          // only 0o or 0O
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +  
    +                      if (index < length) {
    +                          ch = source[index];
    +                          if (isIdentifierStart(ch) || isDecimalDigit(ch)) {
    +                              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                          }
    +                      }
    +  
    +                      return {
    +                          type: Token.NumericLiteral,
    +                          value: parseInt(number, 8),
    +                          octal: octal,
    +                          lineNumber: lineNumber,
    +                          lineStart: lineStart,
    +                          range: [start, index]
    +                      };
    +                  }
    +  
    +                  // decimal number starts with '0' such as '09' is illegal.
    +                  if (isDecimalDigit(ch)) {
    +                      throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                  }
    +              }
    +  
    +              while (index < length) {
    +                  ch = source[index];
    +                  if (!isDecimalDigit(ch)) {
    +                      break;
    +                  }
    +                  number += nextChar();
    +              }
    +          }
    +  
    +          if (ch === '.') {
    +              number += nextChar();
    +              while (index < length) {
    +                  ch = source[index];
    +                  if (!isDecimalDigit(ch)) {
    +                      break;
    +                  }
    +                  number += nextChar();
    +              }
    +          }
    +  
    +          if (ch === 'e' || ch === 'E') {
    +              number += nextChar();
    +  
    +              ch = source[index];
    +              if (ch === '+' || ch === '-') {
    +                  number += nextChar();
    +              }
    +  
    +              ch = source[index];
    +              if (isDecimalDigit(ch)) {
    +                  number += nextChar();
    +                  while (index < length) {
    +                      ch = source[index];
    +                      if (!isDecimalDigit(ch)) {
    +                          break;
    +                      }
    +                      number += nextChar();
    +                  }
    +              } else {
    +                  ch = 'character ' + ch;
    +                  if (index >= length) {
    +                      ch = '';
    +                  }
    +                  throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +              }
    +          }
    +  
    +          if (index < length) {
    +              ch = source[index];
    +              if (isIdentifierStart(ch)) {
    +                  throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +              }
    +          }
    +  
    +          return {
    +              type: Token.NumericLiteral,
    +              value: parseFloat(number),
    +              lineNumber: lineNumber,
    +              lineStart: lineStart,
    +              range: [start, index]
    +          };
    +      }
    +  
    +      // 7.8.4 String Literals
    +  
    +      function scanStringLiteral() {
    +          var str = '', quote, start, ch, code, unescaped, restore, octal = false;
    +  
    +          quote = source[index];
    +          assert((quote === '\'' || quote === '"'),
    +              'String literal must starts with a quote');
    +  
    +          start = index;
    +          ++index;
    +  
    +          while (index < length) {
    +              ch = nextChar();
    +  
    +              if (ch === quote) {
    +                  quote = '';
    +                  break;
    +              } else if (ch === '\\') {
    +                  ch = nextChar();
    +                  if (!isLineTerminator(ch)) {
    +                      switch (ch) {
    +                      case 'n':
    +                          str += '\n';
    +                          break;
    +                      case 'r':
    +                          str += '\r';
    +                          break;
    +                      case 't':
    +                          str += '\t';
    +                          break;
    +                      case 'u':
    +                      case 'x':
    +                          if (source[index] === '{') {
    +                              ++index;
    +                              str += scanUnicodeCodePointEscape();
    +                          } else {
    +                              restore = index;
    +                              unescaped = scanHexEscape(ch);
    +                              if (unescaped) {
    +                                  str += unescaped;
    +                              } else {
    +                                  index = restore;
    +                                  str += ch;
    +                              }
    +                          }
    +                          break;
    +                      case 'b':
    +                          str += '\b';
    +                          break;
    +                      case 'f':
    +                          str += '\f';
    +                          break;
    +                      case 'v':
    +                          str += '\v';
    +                          break;
    +  
    +                      default:
    +                          if (isOctalDigit(ch)) {
    +                              code = '01234567'.indexOf(ch);
    +  
    +                              // \0 is not octal escape sequence
    +                              if (code !== 0) {
    +                                  octal = true;
    +                              }
    +  
    +                              if (index < length && isOctalDigit(source[index])) {
    +                                  octal = true;
    +                                  code = code * 8 + '01234567'.indexOf(nextChar());
    +  
    +                                  // 3 digits are only allowed when string starts
    +                                  // with 0, 1, 2, 3
    +                                  if ('0123'.indexOf(ch) >= 0 &&
    +                                          index < length &&
    +                                          isOctalDigit(source[index])) {
    +                                      code = code * 8 + '01234567'.indexOf(nextChar());
    +                                  }
    +                              }
    +                              str += String.fromCharCode(code);
    +                          } else {
    +                              str += ch;
    +                          }
    +                          break;
    +                      }
    +                  } else {
    +                      ++lineNumber;
    +                      if (ch ===  '\r' && source[index] === '\n') {
    +                          ++index;
    +                      }
    +                  }
    +              } else if (isLineTerminator(ch)) {
    +                  break;
    +              } else {
    +                  str += ch;
    +              }
    +          }
    +  
    +          if (quote !== '') {
    +              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +          }
    +  
    +          return {
    +              type: Token.StringLiteral,
    +              value: str,
    +              octal: octal,
    +              lineNumber: lineNumber,
    +              lineStart: lineStart,
    +              range: [start, index]
    +          };
    +      }
    +  
    +      function scanRegExp() {
    +          var str = '', ch, start, pattern, flags, value, classMarker = false, restore;
    +  
    +          buffer = null;
    +          skipComment();
    +  
    +          start = index;
    +          ch = source[index];
    +          assert(ch === '/', 'Regular expression literal must start with a slash');
    +          str = nextChar();
    +  
    +          while (index < length) {
    +              ch = nextChar();
    +              str += ch;
    +              if (classMarker) {
    +                  if (ch === ']') {
    +                      classMarker = false;
    +                  }
    +              } else {
    +                  if (ch === '\\') {
    +                      ch = nextChar();
    +                      // ECMA-262 7.8.5
    +                      if (isLineTerminator(ch)) {
    +                          throwError({}, Messages.UnterminatedRegExp);
    +                      }
    +                      str += ch;
    +                  } else if (ch === '/') {
    +                      break;
    +                  } else if (ch === '[') {
    +                      classMarker = true;
    +                  } else if (isLineTerminator(ch)) {
    +                      throwError({}, Messages.UnterminatedRegExp);
    +                  }
    +              }
    +          }
    +  
    +          if (str.length === 1) {
    +              throwError({}, Messages.UnterminatedRegExp);
    +          }
    +  
    +          // Exclude leading and trailing slash.
    +          pattern = str.substr(1, str.length - 2);
    +  
    +          flags = '';
    +          while (index < length) {
    +              ch = source[index];
    +              if (!isIdentifierPart(ch)) {
    +                  break;
    +              }
    +  
    +              ++index;
    +              if (ch === '\\' && index < length) {
    +                  ch = source[index];
    +                  if (ch === 'u') {
    +                      ++index;
    +                      restore = index;
    +                      ch = scanHexEscape('u');
    +                      if (ch) {
    +                          flags += ch;
    +                          str += '\\u';
    +                          for (; restore < index; ++restore) {
    +                              str += source[restore];
    +                          }
    +                      } else {
    +                          index = restore;
    +                          flags += 'u';
    +                          str += '\\u';
    +                      }
    +                  } else {
    +                      str += '\\';
    +                  }
    +              } else {
    +                  flags += ch;
    +                  str += ch;
    +              }
    +          }
    +  
    +          try {
    +              value = new RegExp(pattern, flags);
    +          } catch (e) {
    +              throwError({}, Messages.InvalidRegExp);
    +          }
    +  
    +          return {
    +              literal: str,
    +              value: value,
    +              range: [start, index]
    +          };
    +      }
    +  
    +      function isIdentifierName(token) {
    +          return token.type === Token.Identifier ||
    +              token.type === Token.Keyword ||
    +              token.type === Token.BooleanLiteral ||
    +              token.type === Token.NullLiteral;
    +      }
    +  
    +      function advance() {
    +          var ch, token;
    +  
    +          skipComment();
    +  
    +          if (index >= length) {
    +              return {
    +                  type: Token.EOF,
    +                  lineNumber: lineNumber,
    +                  lineStart: lineStart,
    +                  range: [index, index]
    +              };
    +          }
    +  
    +          token = scanPunctuator();
    +          if (typeof token !== 'undefined') {
    +              return token;
    +          }
    +  
    +          ch = source[index];
    +  
    +          if (ch === '\'' || ch === '"') {
    +              return scanStringLiteral();
    +          }
    +  
    +          if (ch === '.' || isDecimalDigit(ch)) {
    +              return scanNumericLiteral();
    +          }
    +  
    +          token = scanIdentifier();
    +          if (typeof token !== 'undefined') {
    +              return token;
    +          }
    +  
    +          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +      }
    +  
    +      function lex() {
    +          var token;
    +  
    +          if (buffer) {
    +              index = buffer.range[1];
    +              lineNumber = buffer.lineNumber;
    +              lineStart = buffer.lineStart;
    +              token = buffer;
    +              buffer = null;
    +              return token;
    +          }
    +  
    +          buffer = null;
    +          return advance();
    +      }
    +  
    +      function lookahead() {
    +          var pos, line, start;
    +  
    +          if (buffer !== null) {
    +              return buffer;
    +          }
    +  
    +          pos = index;
    +          line = lineNumber;
    +          start = lineStart;
    +          buffer = advance();
    +          index = pos;
    +          lineNumber = line;
    +          lineStart = start;
    +  
    +          return buffer;
    +      }
    +  
    +      function lookahead2() {
    +          var adv, pos, line, start, result;
    +  
    +          // If we are collecting the tokens, don't grab the next one yet.
    +          adv = (typeof extra.advance === 'function') ? extra.advance : advance;
    +  
    +          pos = index;
    +          line = lineNumber;
    +          start = lineStart;
    +  
    +          // Scan for the next immediate token.
    +          if (buffer === null) {
    +              buffer = adv();
    +          }
    +          index = buffer.range[1];
    +          lineNumber = buffer.lineNumber;
    +          lineStart = buffer.lineStart;
    +  
    +          // Grab the token right after.
    +          result = adv();
    +          index = pos;
    +          lineNumber = line;
    +          lineStart = start;
    +  
    +          return result;
    +      }
    +  
    +      // Return true if there is a line terminator before the next token.
    +  
    +      function peekLineTerminator() {
    +          var pos, line, start, found;
    +  
    +          pos = index;
    +          line = lineNumber;
    +          start = lineStart;
    +          skipComment();
    +          found = lineNumber !== line;
    +          index = pos;
    +          lineNumber = line;
    +          lineStart = start;
    +  
    +          return found;
    +      }
    +  
    +      // Throw an exception
    +  
    +      function throwError(token, messageFormat) {
    +          var error,
    +              args = Array.prototype.slice.call(arguments, 2),
    +              msg = messageFormat.replace(
    +                  /%(\d)/g,
    +                  function (whole, index) {
    +                      return args[index] || '';
    +                  }
    +              );
    +  
    +          if (typeof token.lineNumber === 'number') {
    +              error = new Error('Line ' + token.lineNumber + ': ' + msg);
    +              error.index = token.range[0];
    +              error.lineNumber = token.lineNumber;
    +              error.column = token.range[0] - lineStart + 1;
    +          } else {
    +              error = new Error('Line ' + lineNumber + ': ' + msg);
    +              error.index = index;
    +              error.lineNumber = lineNumber;
    +              error.column = index - lineStart + 1;
    +          }
    +  
    +          throw error;
    +      }
    +  
    +      function throwErrorTolerant() {
    +          try {
    +              throwError.apply(null, arguments);
    +          } catch (e) {
    +              if (extra.errors) {
    +                  extra.errors.push(e);
    +              } else {
    +                  throw e;
    +              }
    +          }
    +      }
    +  
    +  
    +      // Throw an exception because of the token.
    +  
    +      function throwUnexpected(token) {
    +          if (token.type === Token.EOF) {
    +              throwError(token, Messages.UnexpectedEOS);
    +          }
    +  
    +          if (token.type === Token.NumericLiteral) {
    +              throwError(token, Messages.UnexpectedNumber);
    +          }
    +  
    +          if (token.type === Token.StringLiteral) {
    +              throwError(token, Messages.UnexpectedString);
    +          }
    +  
    +          if (token.type === Token.Identifier) {
    +              throwError(token, Messages.UnexpectedIdentifier);
    +          }
    +  
    +          if (token.type === Token.Keyword) {
    +              if (isFutureReservedWord(token.value)) {
    +                  throwError(token, Messages.UnexpectedReserved);
    +              } else if (strict && isStrictModeReservedWord(token.value)) {
    +                  throwError(token, Messages.StrictReservedWord);
    +              }
    +              throwError(token, Messages.UnexpectedToken, token.value);
    +          }
    +  
    +          // BooleanLiteral, NullLiteral, or Punctuator.
    +          throwError(token, Messages.UnexpectedToken, token.value);
    +      }
    +  
    +      // Expect the next token to match the specified punctuator.
    +      // If not, an exception will be thrown.
    +  
    +      function expect(value) {
    +          var token = lex();
    +          if (token.type !== Token.Punctuator || token.value !== value) {
    +              throwUnexpected(token);
    +          }
    +      }
    +  
    +      // Expect the next token to match the specified keyword.
    +      // If not, an exception will be thrown.
    +  
    +      function expectKeyword(keyword) {
    +          var token = lex();
    +          if (token.type !== Token.Keyword || token.value !== keyword) {
    +              throwUnexpected(token);
    +          }
    +      }
    +  
    +      // Return true if the next token matches the specified punctuator.
    +  
    +      function match(value) {
    +          var token = lookahead();
    +          return token.type === Token.Punctuator && token.value === value;
    +      }
    +  
    +      // Return true if the next token matches the specified keyword
    +  
    +      function matchKeyword(keyword) {
    +          var token = lookahead();
    +          return token.type === Token.Keyword && token.value === keyword;
    +      }
    +  
    +  
    +      // Return true if the next token matches the specified contextual keyword
    +  
    +      function matchContextualKeyword(keyword) {
    +          var token = lookahead();
    +          return token.type === Token.Identifier && token.value === keyword;
    +      }
    +  
    +      // Return true if the next token is an assignment operator
    +  
    +      function matchAssign() {
    +          var token = lookahead(),
    +              op = token.value;
    +  
    +          if (token.type !== Token.Punctuator) {
    +              return false;
    +          }
    +          return op === '=' ||
    +              op === '*=' ||
    +              op === '/=' ||
    +              op === '%=' ||
    +              op === '+=' ||
    +              op === '-=' ||
    +              op === '<<=' ||
    +              op === '>>=' ||
    +              op === '>>>=' ||
    +              op === '&=' ||
    +              op === '^=' ||
    +              op === '|=';
    +      }
    +  
    +      function consumeSemicolon() {
    +          var token, line;
    +  
    +          // Catch the very common case first.
    +          if (source[index] === ';') {
    +              lex();
    +              return;
    +          }
    +  
    +          line = lineNumber;
    +          skipComment();
    +          if (lineNumber !== line) {
    +              return;
    +          }
    +  
    +          if (match(';')) {
    +              lex();
    +              return;
    +          }
    +  
    +          token = lookahead();
    +          if (token.type !== Token.EOF && !match('}')) {
    +              throwUnexpected(token);
    +          }
    +          return;
    +      }
    +  
    +      // Return true if provided expression is LeftHandSideExpression
    +  
    +      function isLeftHandSide(expr) {
    +          return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression;
    +      }
    +  
    +      function isAssignableLeftHandSide(expr) {
    +          return isLeftHandSide(expr) || expr.type === Syntax.ObjectPattern || expr.type === Syntax.ArrayPattern;
    +      }
    +  
    +      // 11.1.4 Array Initialiser
    +  
    +      function parseArrayInitialiser() {
    +          var elements = [],
    +              undef;
    +  
    +          expect('[');
    +  
    +          while (!match(']')) {
    +              if (match(',')) {
    +                  lex();
    +                  elements.push(undef);
    +              } else {
    +                  elements.push(parseAssignmentExpression());
    +  
    +                  if (!match(']')) {
    +                      expect(',');
    +                  }
    +              }
    +          }
    +  
    +          expect(']');
    +  
    +          return {
    +              type: Syntax.ArrayExpression,
    +              elements: elements
    +          };
    +      }
    +  
    +      // 11.1.5 Object Initialiser
    +  
    +      function parsePropertyFunction(param, options) {
    +          var previousStrict, previousYieldAllowed, body;
    +  
    +          previousStrict = strict;
    +          previousYieldAllowed = yieldAllowed;
    +          yieldAllowed = options.generator;
    +          body = parseConciseBody();
    +          if (options.name && strict && isRestrictedWord(param[0].name)) {
    +              throwError(options.name, Messages.StrictParamName);
    +          }
    +          if (yieldAllowed && !yieldFound) {
    +              throwError({}, Messages.NoYieldInGenerator);
    +          }
    +          strict = previousStrict;
    +          yieldAllowed = previousYieldAllowed;
    +  
    +          return {
    +              type: Syntax.FunctionExpression,
    +              id: null,
    +              params: param,
    +              body: body,
    +              generator: options.generator
    +          };
    +      }
    +  
    +      function parsePropertyMethodFunction(options) {
    +          var token, previousStrict, param, params, paramSet, method;
    +  
    +          previousStrict = strict;
    +          strict = true;
    +          params = [];
    +  
    +          expect('(');
    +  
    +          if (!match(')')) {
    +              paramSet = {};
    +              while (index < length) {
    +                  token = lookahead();
    +                  param = parseVariableIdentifier();
    +                  if (isRestrictedWord(token.value)) {
    +                      throwError(token, Messages.StrictParamName);
    +                  }
    +                  if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
    +                      throwError(token, Messages.StrictParamDupe);
    +                  }
    +                  params.push(param);
    +                  paramSet[param.name] = true;
    +                  if (match(')')) {
    +                      break;
    +                  }
    +                  expect(',');
    +              }
    +          }
    +  
    +          expect(')');
    +  
    +          method = parsePropertyFunction(params, { generator: options.generator });
    +  
    +          strict = previousStrict;
    +  
    +          return method;
    +      }
    +  
    +      function parseObjectPropertyKey() {
    +          var token = lex();
    +  
    +          // Note: This function is called only from parseObjectProperty(), where
    +          // EOF and Punctuator tokens are already filtered out.
    +  
    +          if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {
    +              if (strict && token.octal) {
    +                  throwError(token, Messages.StrictOctalLiteral);
    +              }
    +              return createLiteral(token);
    +          }
    +  
    +          return {
    +              type: Syntax.Identifier,
    +              name: token.value
    +          };
    +      }
    +  
    +      function parseObjectProperty() {
    +          var token, key, id, param;
    +  
    +          token = lookahead();
    +  
    +          if (token.type === Token.Identifier) {
    +  
    +              id = parseObjectPropertyKey();
    +  
    +              // Property Assignment: Getter and Setter.
    +  
    +              if (token.value === 'get' && !(match(':') || match('('))) {
    +                  key = parseObjectPropertyKey();
    +                  expect('(');
    +                  expect(')');
    +                  return {
    +                      type: Syntax.Property,
    +                      key: key,
    +                      value: parsePropertyFunction([], { generator: false }),
    +                      kind: 'get'
    +                  };
    +              } else if (token.value === 'set' && !(match(':') || match('('))) {
    +                  key = parseObjectPropertyKey();
    +                  expect('(');
    +                  token = lookahead();
    +                  param = [ parseVariableIdentifier() ];
    +                  expect(')');
    +                  return {
    +                      type: Syntax.Property,
    +                      key: key,
    +                      value: parsePropertyFunction(param, { generator: false, name: token }),
    +                      kind: 'set'
    +                  };
    +              } else {
    +                  if (match(':')) {
    +                      lex();
    +                      return {
    +                          type: Syntax.Property,
    +                          key: id,
    +                          value: parseAssignmentExpression(),
    +                          kind: 'init'
    +                      };
    +                  } else if (match('(')) {
    +                      return {
    +                          type: Syntax.Property,
    +                          key: id,
    +                          value: parsePropertyMethodFunction({ generator: false }),
    +                          kind: 'init',
    +                          method: true
    +                      };
    +                  } else {
    +                      return {
    +                          type: Syntax.Property,
    +                          key: id,
    +                          value: id,
    +                          kind: 'init',
    +                          shorthand: true
    +                      };
    +                  }
    +              }
    +          } else if (token.type === Token.EOF || token.type === Token.Punctuator) {
    +              if (!match('*')) {
    +                  throwUnexpected(token);
    +              }
    +              lex();
    +  
    +              id = parseObjectPropertyKey();
    +  
    +              if (!match('(')) {
    +                  throwUnexpected(lex());
    +              }
    +  
    +              return {
    +                  type: Syntax.Property,
    +                  key: id,
    +                  value: parsePropertyMethodFunction({ generator: true }),
    +                  kind: 'init',
    +                  method: true
    +              };
    +          } else {
    +              key = parseObjectPropertyKey();
    +              if (match(':')) {
    +                  lex();
    +                  return {
    +                      type: Syntax.Property,
    +                      key: key,
    +                      value: parseAssignmentExpression(),
    +                      kind: 'init'
    +                  };
    +              } else if (match('(')) {
    +                  return {
    +                      type: Syntax.Property,
    +                      key: key,
    +                      value: parsePropertyMethodFunction({ generator: false }),
    +                      kind: 'init',
    +                      method: true
    +                  };
    +              } else {
    +                  return {
    +                      type: Syntax.Property,
    +                      key: key,
    +                      value: key,
    +                      kind: 'init',
    +                      shorthand: true
    +                  };
    +              }
    +          }
    +      }
    +  
    +      function parseObjectInitialiser() {
    +          var properties = [], property, name, kind, map = {}, toString = String;
    +  
    +          expect('{');
    +  
    +          while (!match('}')) {
    +              property = parseObjectProperty();
    +  
    +              if (property.key.type === Syntax.Identifier) {
    +                  name = property.key.name;
    +              } else {
    +                  name = toString(property.key.value);
    +              }
    +              kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;
    +              if (Object.prototype.hasOwnProperty.call(map, name)) {
    +                  if (map[name] === PropertyKind.Data) {
    +                      if (strict && kind === PropertyKind.Data) {
    +                          throwErrorTolerant({}, Messages.StrictDuplicateProperty);
    +                      } else if (kind !== PropertyKind.Data) {
    +                          throwError({}, Messages.AccessorDataProperty);
    +                      }
    +                  } else {
    +                      if (kind === PropertyKind.Data) {
    +                          throwError({}, Messages.AccessorDataProperty);
    +                      } else if (map[name] & kind) {
    +                          throwError({}, Messages.AccessorGetSet);
    +                      }
    +                  }
    +                  map[name] |= kind;
    +              } else {
    +                  map[name] = kind;
    +              }
    +  
    +              properties.push(property);
    +  
    +              if (!match('}')) {
    +                  expect(',');
    +              }
    +          }
    +  
    +          expect('}');
    +  
    +          return {
    +              type: Syntax.ObjectExpression,
    +              properties: properties
    +          };
    +      }
    +  
    +      // 11.1 Primary Expressions
    +  
    +      function parsePrimaryExpression() {
    +          var expr,
    +              token = lookahead(),
    +              type = token.type;
    +  
    +          if (type === Token.Identifier) {
    +              return {
    +                  type: Syntax.Identifier,
    +                  name: lex().value
    +              };
    +          }
    +  
    +          if (type === Token.StringLiteral || type === Token.NumericLiteral) {
    +              if (strict && token.octal) {
    +                  throwErrorTolerant(token, Messages.StrictOctalLiteral);
    +              }
    +              return createLiteral(lex());
    +          }
    +  
    +          if (type === Token.Keyword) {
    +              if (matchKeyword('this')) {
    +                  lex();
    +                  return {
    +                      type: Syntax.ThisExpression
    +                  };
    +              }
    +  
    +              if (matchKeyword('function')) {
    +                  return parseFunctionExpression();
    +              }
    +  
    +              if (matchKeyword('class')) {
    +                  return parseClassExpression();
    +              }
    +  
    +              if (matchKeyword('super')) {
    +                  lex();
    +                  return {
    +                      type: Syntax.Identifier,
    +                      name: 'super'
    +                  };
    +              }
    +          }
    +  
    +          if (type === Token.BooleanLiteral) {
    +              lex();
    +              token.value = (token.value === 'true');
    +              return createLiteral(token);
    +          }
    +  
    +          if (type === Token.NullLiteral) {
    +              lex();
    +              token.value = null;
    +              return createLiteral(token);
    +          }
    +  
    +          if (match('[')) {
    +              return parseArrayInitialiser();
    +          }
    +  
    +          if (match('{')) {
    +              return parseObjectInitialiser();
    +          }
    +  
    +          if (match('(')) {
    +              lex();
    +              state.lastParenthesized = expr = parseExpression();
    +              state.parenthesizedCount += 1;
    +              expect(')');
    +              return expr;
    +          }
    +  
    +          if (match('/') || match('/=')) {
    +              return createLiteral(scanRegExp());
    +          }
    +  
    +          return throwUnexpected(lex());
    +      }
    +  
    +      // 11.2 Left-Hand-Side Expressions
    +  
    +      function parseArguments() {
    +          var args = [];
    +  
    +          expect('(');
    +  
    +          if (!match(')')) {
    +              while (index < length) {
    +                  args.push(parseAssignmentExpression());
    +                  if (match(')')) {
    +                      break;
    +                  }
    +                  expect(',');
    +              }
    +          }
    +  
    +          expect(')');
    +  
    +          return args;
    +      }
    +  
    +      function parseNonComputedProperty() {
    +          var token = lex();
    +  
    +          if (!isIdentifierName(token)) {
    +              throwUnexpected(token);
    +          }
    +  
    +          return {
    +              type: Syntax.Identifier,
    +              name: token.value
    +          };
    +      }
    +  
    +      function parseNonComputedMember(object) {
    +          return {
    +              type: Syntax.MemberExpression,
    +              computed: false,
    +              object: object,
    +              property: parseNonComputedProperty()
    +          };
    +      }
    +  
    +      function parseComputedMember(object) {
    +          var property, expr;
    +  
    +          expect('[');
    +          property = parseExpression();
    +          expr = {
    +              type: Syntax.MemberExpression,
    +              computed: true,
    +              object: object,
    +              property: property
    +          };
    +          expect(']');
    +          return expr;
    +      }
    +  
    +      function parseCallMember(object) {
    +          return {
    +              type: Syntax.CallExpression,
    +              callee: object,
    +              'arguments': parseArguments()
    +          };
    +      }
    +  
    +      function parseNewExpression() {
    +          var expr;
    +  
    +          expectKeyword('new');
    +  
    +          expr = {
    +              type: Syntax.NewExpression,
    +              callee: parseLeftHandSideExpression(),
    +              'arguments': []
    +          };
    +  
    +          if (match('(')) {
    +              expr['arguments'] = parseArguments();
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      function parseLeftHandSideExpressionAllowCall() {
    +          var useNew, expr;
    +  
    +          useNew = matchKeyword('new');
    +          expr = useNew ? parseNewExpression() : parsePrimaryExpression();
    +  
    +          while (index < length) {
    +              if (match('.')) {
    +                  lex();
    +                  expr = parseNonComputedMember(expr);
    +              } else if (match('[')) {
    +                  expr = parseComputedMember(expr);
    +              } else if (match('(')) {
    +                  expr = parseCallMember(expr);
    +              } else {
    +                  break;
    +              }
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      function parseLeftHandSideExpression() {
    +          var useNew, expr;
    +  
    +          useNew = matchKeyword('new');
    +          expr = useNew ? parseNewExpression() : parsePrimaryExpression();
    +  
    +          while (index < length) {
    +              if (match('.')) {
    +                  lex();
    +                  expr = parseNonComputedMember(expr);
    +              } else if (match('[')) {
    +                  expr = parseComputedMember(expr);
    +              } else {
    +                  break;
    +              }
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.3 Postfix Expressions
    +  
    +      function parsePostfixExpression() {
    +          var expr = parseLeftHandSideExpressionAllowCall();
    +  
    +          if ((match('++') || match('--')) && !peekLineTerminator()) {
    +              // 11.3.1, 11.3.2
    +              if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
    +                  throwError({}, Messages.StrictLHSPostfix);
    +              }
    +  
    +              if (!isLeftHandSide(expr)) {
    +                  throwError({}, Messages.InvalidLHSInAssignment);
    +              }
    +  
    +              expr = {
    +                  type: Syntax.UpdateExpression,
    +                  operator: lex().value,
    +                  argument: expr,
    +                  prefix: false
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.4 Unary Operators
    +  
    +      function parseUnaryExpression() {
    +          var token, expr;
    +  
    +          if (match('++') || match('--')) {
    +              token = lex();
    +              expr = parseUnaryExpression();
    +              // 11.4.4, 11.4.5
    +              if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
    +                  throwError({}, Messages.StrictLHSPrefix);
    +              }
    +  
    +              if (!isLeftHandSide(expr)) {
    +                  throwError({}, Messages.InvalidLHSInAssignment);
    +              }
    +  
    +              expr = {
    +                  type: Syntax.UpdateExpression,
    +                  operator: token.value,
    +                  argument: expr,
    +                  prefix: true
    +              };
    +              return expr;
    +          }
    +  
    +          if (match('+') || match('-') || match('~') || match('!')) {
    +              expr = {
    +                  type: Syntax.UnaryExpression,
    +                  operator: lex().value,
    +                  argument: parseUnaryExpression()
    +              };
    +              return expr;
    +          }
    +  
    +          if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {
    +              expr = {
    +                  type: Syntax.UnaryExpression,
    +                  operator: lex().value,
    +                  argument: parseUnaryExpression()
    +              };
    +              if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) {
    +                  throwErrorTolerant({}, Messages.StrictDelete);
    +              }
    +              return expr;
    +          }
    +  
    +          return parsePostfixExpression();
    +      }
    +  
    +      // 11.5 Multiplicative Operators
    +  
    +      function parseMultiplicativeExpression() {
    +          var expr = parseUnaryExpression();
    +  
    +          while (match('*') || match('/') || match('%')) {
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: lex().value,
    +                  left: expr,
    +                  right: parseUnaryExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.6 Additive Operators
    +  
    +      function parseAdditiveExpression() {
    +          var expr = parseMultiplicativeExpression();
    +  
    +          while (match('+') || match('-')) {
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: lex().value,
    +                  left: expr,
    +                  right: parseMultiplicativeExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.7 Bitwise Shift Operators
    +  
    +      function parseShiftExpression() {
    +          var expr = parseAdditiveExpression();
    +  
    +          while (match('<<') || match('>>') || match('>>>')) {
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: lex().value,
    +                  left: expr,
    +                  right: parseAdditiveExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +      // 11.8 Relational Operators
    +  
    +      function parseRelationalExpression() {
    +          var expr, previousAllowIn;
    +  
    +          previousAllowIn = state.allowIn;
    +          state.allowIn = true;
    +  
    +          expr = parseShiftExpression();
    +  
    +          while (match('<') || match('>') || match('<=') || match('>=') || (previousAllowIn && matchKeyword('in')) || matchKeyword('instanceof')) {
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: lex().value,
    +                  left: expr,
    +                  right: parseShiftExpression()
    +              };
    +          }
    +  
    +          state.allowIn = previousAllowIn;
    +          return expr;
    +      }
    +  
    +      // 11.9 Equality Operators
    +  
    +      function parseEqualityExpression() {
    +          var expr = parseRelationalExpression();
    +  
    +          while ((!peekLineTerminator() && (matchContextualKeyword('is') || matchContextualKeyword('isnt'))) || match('==') || match('!=') || match('===') || match('!==')) {
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: lex().value,
    +                  left: expr,
    +                  right: parseRelationalExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.10 Binary Bitwise Operators
    +  
    +      function parseBitwiseANDExpression() {
    +          var expr = parseEqualityExpression();
    +  
    +          while (match('&')) {
    +              lex();
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: '&',
    +                  left: expr,
    +                  right: parseEqualityExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      function parseBitwiseXORExpression() {
    +          var expr = parseBitwiseANDExpression();
    +  
    +          while (match('^')) {
    +              lex();
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: '^',
    +                  left: expr,
    +                  right: parseBitwiseANDExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      function parseBitwiseORExpression() {
    +          var expr = parseBitwiseXORExpression();
    +  
    +          while (match('|')) {
    +              lex();
    +              expr = {
    +                  type: Syntax.BinaryExpression,
    +                  operator: '|',
    +                  left: expr,
    +                  right: parseBitwiseXORExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.11 Binary Logical Operators
    +  
    +      function parseLogicalANDExpression() {
    +          var expr = parseBitwiseORExpression();
    +  
    +          while (match('&&')) {
    +              lex();
    +              expr = {
    +                  type: Syntax.LogicalExpression,
    +                  operator: '&&',
    +                  left: expr,
    +                  right: parseBitwiseORExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      function parseLogicalORExpression() {
    +          var expr = parseLogicalANDExpression();
    +  
    +          while (match('||')) {
    +              lex();
    +              expr = {
    +                  type: Syntax.LogicalExpression,
    +                  operator: '||',
    +                  left: expr,
    +                  right: parseLogicalANDExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.12 Conditional Operator
    +  
    +      function parseConditionalExpression() {
    +          var expr, previousAllowIn, consequent;
    +  
    +          expr = parseLogicalORExpression();
    +  
    +          if (match('?')) {
    +              lex();
    +              previousAllowIn = state.allowIn;
    +              state.allowIn = true;
    +              consequent = parseAssignmentExpression();
    +              state.allowIn = previousAllowIn;
    +              expect(':');
    +  
    +              expr = {
    +                  type: Syntax.ConditionalExpression,
    +                  test: expr,
    +                  consequent: consequent,
    +                  alternate: parseAssignmentExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.13 Assignment Operators
    +  
    +      function reinterpretAsAssignmentBindingPattern(expr) {
    +          var i, len, property, element;
    +  
    +          if (expr.type === Syntax.ObjectExpression) {
    +              expr.type = Syntax.ObjectPattern;
    +              for (i = 0, len = expr.properties.length; i < len; i += 1) {
    +                  property = expr.properties[i];
    +                  if (property.kind !== 'init') {
    +                      throwError({}, Messages.InvalidLHSInAssignment);
    +                  }
    +                  reinterpretAsAssignmentBindingPattern(property.value);
    +              }
    +          } else if (expr.type === Syntax.ArrayExpression) {
    +              expr.type = Syntax.ArrayPattern;
    +              for (i = 0, len = expr.elements.length; i < len; i += 1) {
    +                  element = expr.elements[i];
    +                  if (element) {
    +                      reinterpretAsAssignmentBindingPattern(element);
    +                  }
    +              }
    +          } else if (expr.type === Syntax.Identifier) {
    +              if (isRestrictedWord(expr.name)) {
    +                  throwError({}, Messages.InvalidLHSInAssignment);
    +              }
    +          } else {
    +              if (expr.type !== Syntax.MemberExpression && expr.type !== Syntax.CallExpression && expr.type !== Syntax.NewExpression) {
    +                  throwError({}, Messages.InvalidLHSInAssignment);
    +              }
    +          }
    +      }
    +  
    +      function reinterpretAsCoverFormalsList(expr) {
    +          var i, len, param, paramSet;
    +          assert(expr.type === Syntax.SequenceExpression);
    +  
    +          paramSet = {};
    +  
    +          for (i = 0, len = expr.expressions.length; i < len; i += 1) {
    +              param = expr.expressions[i];
    +              if (param.type !== Syntax.Identifier) {
    +                  return null;
    +              }
    +              if (isRestrictedWord(param.name)) {
    +                  throwError({}, Messages.StrictParamName);
    +              }
    +              if (Object.prototype.hasOwnProperty.call(paramSet, param.name)) {
    +                  throwError({}, Messages.StrictParamDupe);
    +              }
    +              paramSet[param.name] = true;
    +          }
    +          return expr.expressions;
    +      }
    +  
    +      function parseArrowFunctionExpression(param) {
    +          var previousStrict, previousYieldAllowed, body;
    +  
    +          expect('=>');
    +  
    +          previousStrict = strict;
    +          previousYieldAllowed = yieldAllowed;
    +          strict = true;
    +          yieldAllowed = false;
    +          body = parseConciseBody();
    +          strict = previousStrict;
    +          yieldAllowed = previousYieldAllowed;
    +  
    +          return {
    +              type: Syntax.ArrowFunctionExpression,
    +              id: null,
    +              params: param,
    +              body: body
    +          };
    +      }
    +  
    +      function parseAssignmentExpression() {
    +          var expr, token, oldParenthesizedCount, coverFormalsList;
    +  
    +          if (matchKeyword('yield')) {
    +              return parseYieldExpression();
    +          }
    +  
    +          oldParenthesizedCount = state.parenthesizedCount;
    +  
    +          if (match('(')) {
    +              token = lookahead2();
    +              if (token.type === Token.Punctuator && token.value === ')') {
    +                  lex();
    +                  lex();
    +                  if (!match('=>')) {
    +                      throwUnexpected(lex());
    +                  }
    +                  return parseArrowFunctionExpression([]);
    +              }
    +          }
    +  
    +          expr = parseConditionalExpression();
    +  
    +          if (match('=>')) {
    +              if (expr.type === Syntax.Identifier) {
    +                  if (state.parenthesizedCount === oldParenthesizedCount || state.parenthesizedCount === (oldParenthesizedCount + 1)) {
    +                      if (isRestrictedWord(expr.name)) {
    +                          throwError({}, Messages.StrictParamName);
    +                      }
    +                      return parseArrowFunctionExpression([ expr ]);
    +                  }
    +              } else if (expr.type === Syntax.SequenceExpression) {
    +                  if (state.parenthesizedCount === (oldParenthesizedCount + 1)) {
    +                      coverFormalsList = reinterpretAsCoverFormalsList(expr);
    +                      if (coverFormalsList) {
    +                          return parseArrowFunctionExpression(coverFormalsList);
    +                      }
    +                  }
    +              }
    +          }
    +  
    +          if (matchAssign()) {
    +              // 11.13.1
    +              if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
    +                  throwError({}, Messages.StrictLHSAssignment);
    +              }
    +  
    +              // ES.next draf 11.13 Runtime Semantics step 1
    +              if (match('=') && (expr.type === Syntax.ObjectExpression || expr.type === Syntax.ArrayExpression)) {
    +                  reinterpretAsAssignmentBindingPattern(expr);
    +              } else if (!isLeftHandSide(expr)) {
    +                  throwError({}, Messages.InvalidLHSInAssignment);
    +              }
    +  
    +              expr = {
    +                  type: Syntax.AssignmentExpression,
    +                  operator: lex().value,
    +                  left: expr,
    +                  right: parseAssignmentExpression()
    +              };
    +          }
    +  
    +          return expr;
    +      }
    +  
    +      // 11.14 Comma Operator
    +  
    +      function parseExpression() {
    +          var expr = parseAssignmentExpression();
    +  
    +          if (match(',')) {
    +              expr = {
    +                  type: Syntax.SequenceExpression,
    +                  expressions: [ expr ]
    +              };
    +  
    +              while (index < length) {
    +                  if (!match(',')) {
    +                      break;
    +                  }
    +                  lex();
    +                  expr.expressions.push(parseAssignmentExpression());
    +              }
    +  
    +          }
    +          return expr;
    +      }
    +  
    +      // 12.1 Block
    +  
    +      function parseStatementList() {
    +          var list = [],
    +              statement;
    +  
    +          while (index < length) {
    +              if (match('}')) {
    +                  break;
    +              }
    +              statement = parseSourceElement();
    +              if (typeof statement === 'undefined') {
    +                  break;
    +              }
    +              list.push(statement);
    +          }
    +  
    +          return list;
    +      }
    +  
    +      function parseBlock() {
    +          var block;
    +  
    +          expect('{');
    +  
    +          block = parseStatementList();
    +  
    +          expect('}');
    +  
    +          return {
    +              type: Syntax.BlockStatement,
    +              body: block
    +          };
    +      }
    +  
    +      // 12.2 Variable Statement
    +  
    +      function parseVariableIdentifier() {
    +          var token = lex();
    +  
    +          if (token.type !== Token.Identifier) {
    +              throwUnexpected(token);
    +          }
    +  
    +          return {
    +              type: Syntax.Identifier,
    +              name: token.value
    +          };
    +      }
    +  
    +      function parseVariableDeclaration(kind) {
    +          var id = parseVariableIdentifier(),
    +              init = null;
    +  
    +          // 12.2.1
    +          if (strict && isRestrictedWord(id.name)) {
    +              throwErrorTolerant({}, Messages.StrictVarName);
    +          }
    +  
    +          if (kind === 'const') {
    +              expect('=');
    +              init = parseAssignmentExpression();
    +          } else if (match('=')) {
    +              lex();
    +              init = parseAssignmentExpression();
    +          }
    +  
    +          return {
    +              type: Syntax.VariableDeclarator,
    +              id: id,
    +              init: init
    +          };
    +      }
    +  
    +      function parseVariableDeclarationList(kind) {
    +          var list = [];
    +  
    +          while (index < length) {
    +              list.push(parseVariableDeclaration(kind));
    +              if (!match(',')) {
    +                  break;
    +              }
    +              lex();
    +          }
    +  
    +          return list;
    +      }
    +  
    +      function parseVariableStatement() {
    +          var declarations;
    +  
    +          expectKeyword('var');
    +  
    +          declarations = parseVariableDeclarationList();
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.VariableDeclaration,
    +              declarations: declarations,
    +              kind: 'var'
    +          };
    +      }
    +  
    +      // kind may be `const` or `let`
    +      // Both are experimental and not in the specification yet.
    +      // see http://wiki.ecmascript.org/doku.php?id=harmony:const
    +      // and http://wiki.ecmascript.org/doku.php?id=harmony:let
    +      function parseConstLetDeclaration(kind) {
    +          var declarations;
    +  
    +          expectKeyword(kind);
    +  
    +          declarations = parseVariableDeclarationList(kind);
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.VariableDeclaration,
    +              declarations: declarations,
    +              kind: kind
    +          };
    +      }
    +  
    +      // http://wiki.ecmascript.org/doku.php?id=harmony:modules
    +  
    +      function parsePath() {
    +          var result, id;
    +  
    +          result = {
    +              type: Syntax.Path,
    +              body: []
    +          };
    +  
    +          while (true) {
    +              id = parseVariableIdentifier();
    +              result.body.push(id);
    +              if (!match('.')) {
    +                  break;
    +              }
    +              lex();
    +          }
    +  
    +          return result;
    +      }
    +  
    +      function parseGlob() {
    +          expect('*');
    +          return {
    +              type: Syntax.Glob
    +          };
    +      }
    +  
    +      function parseModuleDeclaration() {
    +          var id, token, declaration;
    +  
    +          token = lex();
    +          if (token.value !== 'module') {
    +              throwUnexpected(token);
    +          }
    +  
    +          id = parseVariableIdentifier();
    +  
    +          if (match('{')) {
    +              return {
    +                  type: Syntax.ModuleDeclaration,
    +                  id: id,
    +                  body: parseModuleBlock()
    +              };
    +          }
    +  
    +          expect('=');
    +  
    +          token = lookahead();
    +          if (token.type === Token.StringLiteral) {
    +              declaration = {
    +                  type: Syntax.ModuleDeclaration,
    +                  id: id,
    +                  from: parsePrimaryExpression()
    +              };
    +          } else {
    +              declaration = {
    +                  type: Syntax.ModuleDeclaration,
    +                  id: id,
    +                  from: parsePath()
    +              };
    +          }
    +  
    +          consumeSemicolon();
    +  
    +          return declaration;
    +      }
    +  
    +      function parseExportSpecifierSetProperty() {
    +          var specifier;
    +  
    +          specifier = {
    +              type: Syntax.ExportSpecifier,
    +              id: parseVariableIdentifier(),
    +              from: null
    +          };
    +  
    +          if (match(':')) {
    +              lex();
    +              specifier.from = parsePath();
    +          }
    +  
    +          return specifier;
    +      }
    +  
    +      function parseExportSpecifier() {
    +          var specifier, specifiers;
    +  
    +          if (match('{')) {
    +              lex();
    +              specifiers = [];
    +  
    +              do {
    +                  specifiers.push(parseExportSpecifierSetProperty());
    +              } while (match(',') && lex());
    +  
    +              expect('}');
    +  
    +              return {
    +                  type: Syntax.ExportSpecifierSet,
    +                  specifiers: specifiers
    +              };
    +          }
    +  
    +          if (match('*')) {
    +              specifier = {
    +                  type: Syntax.ExportSpecifier,
    +                  id: parseGlob(),
    +                  from: null
    +              };
    +  
    +              if (matchContextualKeyword('from')) {
    +                  lex();
    +                  specifier.from = parsePath();
    +              }
    +          } else {
    +              specifier = {
    +                  type: Syntax.ExportSpecifier,
    +                  id: parseVariableIdentifier(),
    +                  from: null
    +              };
    +          }
    +          return specifier;
    +      }
    +  
    +      function parseExportDeclaration() {
    +          var token, specifiers;
    +  
    +          expectKeyword('export');
    +  
    +          token = lookahead();
    +  
    +          if (token.type === Token.Keyword || (token.type === Token.Identifier && token.value === 'module')) {
    +              switch (token.value) {
    +              case 'function':
    +                  return {
    +                      type: Syntax.ExportDeclaration,
    +                      declaration: parseFunctionDeclaration()
    +                  };
    +              case 'module':
    +                  return {
    +                      type: Syntax.ExportDeclaration,
    +                      declaration: parseModuleDeclaration()
    +                  };
    +              case 'let':
    +              case 'const':
    +                  return {
    +                      type: Syntax.ExportDeclaration,
    +                      declaration: parseConstLetDeclaration(token.value)
    +                  };
    +              case 'var':
    +                  return {
    +                      type: Syntax.ExportDeclaration,
    +                      declaration: parseStatement()
    +                  };
    +              }
    +              throwUnexpected(lex());
    +          }
    +  
    +          specifiers = [ parseExportSpecifier() ];
    +          if (match(',')) {
    +              while (index < length) {
    +                  if (!match(',')) {
    +                      break;
    +                  }
    +                  lex();
    +                  specifiers.push(parseExportSpecifier());
    +              }
    +          }
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.ExportDeclaration,
    +              specifiers: specifiers
    +          };
    +      }
    +  
    +      function parseImportDeclaration() {
    +          var specifiers, from;
    +  
    +          expectKeyword('import');
    +  
    +          if (match('*')) {
    +              specifiers = [parseGlob()];
    +          } else if (match('{')) {
    +              lex();
    +              specifiers = [];
    +  
    +              do {
    +                  specifiers.push(parseImportSpecifier());
    +              } while (match(',') && lex());
    +  
    +              expect('}');
    +          } else {
    +              specifiers = [parseVariableIdentifier()];
    +          }
    +  
    +          if (!matchContextualKeyword('from')) {
    +              throwError({}, Messages.NoFromAfterImport);
    +          }
    +  
    +          lex();
    +  
    +          if (lookahead().type === Token.StringLiteral) {
    +              from = parsePrimaryExpression();
    +          } else {
    +              from = parsePath();
    +          }
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.ImportDeclaration,
    +              specifiers: specifiers,
    +              from: from
    +          };
    +      }
    +  
    +      function parseImportSpecifier() {
    +          var specifier;
    +  
    +          specifier = {
    +              type: Syntax.ImportSpecifier,
    +              id: parseVariableIdentifier(),
    +              from: null
    +          };
    +  
    +          if (match(':')) {
    +              lex();
    +              specifier.from = parsePath();
    +          }
    +  
    +          return specifier;
    +      }
    +  
    +      // 12.3 Empty Statement
    +  
    +      function parseEmptyStatement() {
    +          expect(';');
    +  
    +          return {
    +              type: Syntax.EmptyStatement
    +          };
    +      }
    +  
    +      // 12.4 Expression Statement
    +  
    +      function parseExpressionStatement() {
    +          var expr = parseExpression();
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.ExpressionStatement,
    +              expression: expr
    +          };
    +      }
    +  
    +      // 12.5 If statement
    +  
    +      function parseIfStatement() {
    +          var test, consequent, alternate;
    +  
    +          expectKeyword('if');
    +  
    +          expect('(');
    +  
    +          test = parseExpression();
    +  
    +          expect(')');
    +  
    +          consequent = parseStatement();
    +  
    +          if (matchKeyword('else')) {
    +              lex();
    +              alternate = parseStatement();
    +          } else {
    +              alternate = null;
    +          }
    +  
    +          return {
    +              type: Syntax.IfStatement,
    +              test: test,
    +              consequent: consequent,
    +              alternate: alternate
    +          };
    +      }
    +  
    +      // 12.6 Iteration Statements
    +  
    +      function parseDoWhileStatement() {
    +          var body, test, oldInIteration;
    +  
    +          expectKeyword('do');
    +  
    +          oldInIteration = state.inIteration;
    +          state.inIteration = true;
    +  
    +          body = parseStatement();
    +  
    +          state.inIteration = oldInIteration;
    +  
    +          expectKeyword('while');
    +  
    +          expect('(');
    +  
    +          test = parseExpression();
    +  
    +          expect(')');
    +  
    +          if (match(';')) {
    +              lex();
    +          }
    +  
    +          return {
    +              type: Syntax.DoWhileStatement,
    +              body: body,
    +              test: test
    +          };
    +      }
    +  
    +      function parseWhileStatement() {
    +          var test, body, oldInIteration;
    +  
    +          expectKeyword('while');
    +  
    +          expect('(');
    +  
    +          test = parseExpression();
    +  
    +          expect(')');
    +  
    +          oldInIteration = state.inIteration;
    +          state.inIteration = true;
    +  
    +          body = parseStatement();
    +  
    +          state.inIteration = oldInIteration;
    +  
    +          return {
    +              type: Syntax.WhileStatement,
    +              test: test,
    +              body: body
    +          };
    +      }
    +  
    +      function parseForVariableDeclaration() {
    +          var token = lex();
    +  
    +          return {
    +              type: Syntax.VariableDeclaration,
    +              declarations: parseVariableDeclarationList(),
    +              kind: token.value
    +          };
    +      }
    +  
    +      function parseForStatement() {
    +          var init, test, update, left, right, body, operator, oldInIteration;
    +  
    +          init = test = update = null;
    +  
    +          expectKeyword('for');
    +  
    +          expect('(');
    +  
    +          if (match(';')) {
    +              lex();
    +          } else {
    +              if (matchKeyword('var') || matchKeyword('let') || matchKeyword('const')) {
    +                  state.allowIn = false;
    +                  init = parseForVariableDeclaration();
    +                  state.allowIn = true;
    +  
    +                  if (init.declarations.length === 1) {
    +                      if (matchKeyword('in') || matchContextualKeyword('of')) {
    +                          operator = lookahead();
    +                          if (!((operator.value === 'in' || init.kind !== 'var') && init.declarations[0].init)) {
    +                              lex();
    +                              left = init;
    +                              right = parseExpression();
    +                              init = null;
    +                          }
    +                      }
    +                  }
    +              } else {
    +                  state.allowIn = false;
    +                  init = parseExpression();
    +                  state.allowIn = true;
    +  
    +                  if (matchContextualKeyword('of')) {
    +                      operator = lex();
    +                      left = init;
    +                      right = parseExpression();
    +                      init = null;
    +                  } else if (matchKeyword('in')) {
    +                      // LeftHandSideExpression
    +                      if (!isAssignableLeftHandSide(init)) {
    +                          throwError({}, Messages.InvalidLHSInForIn);
    +                      }
    +                      operator = lex();
    +                      left = init;
    +                      right = parseExpression();
    +                      init = null;
    +                  }
    +              }
    +  
    +              if (typeof left === 'undefined') {
    +                  expect(';');
    +              }
    +          }
    +  
    +          if (typeof left === 'undefined') {
    +  
    +              if (!match(';')) {
    +                  test = parseExpression();
    +              }
    +              expect(';');
    +  
    +              if (!match(')')) {
    +                  update = parseExpression();
    +              }
    +          }
    +  
    +          expect(')');
    +  
    +          oldInIteration = state.inIteration;
    +          state.inIteration = true;
    +  
    +          body = parseStatement();
    +  
    +          state.inIteration = oldInIteration;
    +  
    +          if (typeof left === 'undefined') {
    +              return {
    +                  type: Syntax.ForStatement,
    +                  init: init,
    +                  test: test,
    +                  update: update,
    +                  body: body
    +              };
    +          }
    +  
    +          if (operator.value === 'in') {
    +              return {
    +                  type: Syntax.ForInStatement,
    +                  left: left,
    +                  right: right,
    +                  body: body,
    +                  each: false
    +              };
    +          } else {
    +              return {
    +                  type: Syntax.ForOfStatement,
    +                  left: left,
    +                  right: right,
    +                  body: body
    +              };
    +          }
    +      }
    +  
    +      // 12.7 The continue statement
    +  
    +      function parseContinueStatement() {
    +          var token, label = null;
    +  
    +          expectKeyword('continue');
    +  
    +          // Optimize the most common form: 'continue;'.
    +          if (source[index] === ';') {
    +              lex();
    +  
    +              if (!state.inIteration) {
    +                  throwError({}, Messages.IllegalContinue);
    +              }
    +  
    +              return {
    +                  type: Syntax.ContinueStatement,
    +                  label: null
    +              };
    +          }
    +  
    +          if (peekLineTerminator()) {
    +              if (!state.inIteration) {
    +                  throwError({}, Messages.IllegalContinue);
    +              }
    +  
    +              return {
    +                  type: Syntax.ContinueStatement,
    +                  label: null
    +              };
    +          }
    +  
    +          token = lookahead();
    +          if (token.type === Token.Identifier) {
    +              label = parseVariableIdentifier();
    +  
    +              if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) {
    +                  throwError({}, Messages.UnknownLabel, label.name);
    +              }
    +          }
    +  
    +          consumeSemicolon();
    +  
    +          if (label === null && !state.inIteration) {
    +              throwError({}, Messages.IllegalContinue);
    +          }
    +  
    +          return {
    +              type: Syntax.ContinueStatement,
    +              label: label
    +          };
    +      }
    +  
    +      // 12.8 The break statement
    +  
    +      function parseBreakStatement() {
    +          var token, label = null;
    +  
    +          expectKeyword('break');
    +  
    +          // Optimize the most common form: 'break;'.
    +          if (source[index] === ';') {
    +              lex();
    +  
    +              if (!(state.inIteration || state.inSwitch)) {
    +                  throwError({}, Messages.IllegalBreak);
    +              }
    +  
    +              return {
    +                  type: Syntax.BreakStatement,
    +                  label: null
    +              };
    +          }
    +  
    +          if (peekLineTerminator()) {
    +              if (!(state.inIteration || state.inSwitch)) {
    +                  throwError({}, Messages.IllegalBreak);
    +              }
    +  
    +              return {
    +                  type: Syntax.BreakStatement,
    +                  label: null
    +              };
    +          }
    +  
    +          token = lookahead();
    +          if (token.type === Token.Identifier) {
    +              label = parseVariableIdentifier();
    +  
    +              if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) {
    +                  throwError({}, Messages.UnknownLabel, label.name);
    +              }
    +          }
    +  
    +          consumeSemicolon();
    +  
    +          if (label === null && !(state.inIteration || state.inSwitch)) {
    +              throwError({}, Messages.IllegalBreak);
    +          }
    +  
    +          return {
    +              type: Syntax.BreakStatement,
    +              label: label
    +          };
    +      }
    +  
    +      // 12.9 The return statement
    +  
    +      function parseReturnStatement() {
    +          var token, argument = null;
    +  
    +          expectKeyword('return');
    +  
    +          if (!state.inFunctionBody) {
    +              throwErrorTolerant({}, Messages.IllegalReturn);
    +          }
    +  
    +          // 'return' followed by a space and an identifier is very common.
    +          if (source[index] === ' ') {
    +              if (isIdentifierStart(source[index + 1])) {
    +                  argument = parseExpression();
    +                  consumeSemicolon();
    +                  return {
    +                      type: Syntax.ReturnStatement,
    +                      argument: argument
    +                  };
    +              }
    +          }
    +  
    +          if (peekLineTerminator()) {
    +              return {
    +                  type: Syntax.ReturnStatement,
    +                  argument: null
    +              };
    +          }
    +  
    +          if (!match(';')) {
    +              token = lookahead();
    +              if (!match('}') && token.type !== Token.EOF) {
    +                  argument = parseExpression();
    +              }
    +          }
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.ReturnStatement,
    +              argument: argument
    +          };
    +      }
    +  
    +      // 12.10 The with statement
    +  
    +      function parseWithStatement() {
    +          var object, body;
    +  
    +          if (strict) {
    +              throwErrorTolerant({}, Messages.StrictModeWith);
    +          }
    +  
    +          expectKeyword('with');
    +  
    +          expect('(');
    +  
    +          object = parseExpression();
    +  
    +          expect(')');
    +  
    +          body = parseStatement();
    +  
    +          return {
    +              type: Syntax.WithStatement,
    +              object: object,
    +              body: body
    +          };
    +      }
    +  
    +      // 12.10 The swith statement
    +  
    +      function parseSwitchCase() {
    +          var test,
    +              consequent = [],
    +              statement;
    +  
    +          if (matchKeyword('default')) {
    +              lex();
    +              test = null;
    +          } else {
    +              expectKeyword('case');
    +              test = parseExpression();
    +          }
    +          expect(':');
    +  
    +          while (index < length) {
    +              if (match('}') || matchKeyword('default') || matchKeyword('case')) {
    +                  break;
    +              }
    +              statement = parseSourceElement();
    +              if (typeof statement === 'undefined') {
    +                  break;
    +              }
    +              consequent.push(statement);
    +          }
    +  
    +          return {
    +              type: Syntax.SwitchCase,
    +              test: test,
    +              consequent: consequent
    +          };
    +      }
    +  
    +      function parseSwitchStatement() {
    +          var discriminant, cases, clause, oldInSwitch, defaultFound;
    +  
    +          expectKeyword('switch');
    +  
    +          expect('(');
    +  
    +          discriminant = parseExpression();
    +  
    +          expect(')');
    +  
    +          expect('{');
    +  
    +          if (match('}')) {
    +              lex();
    +              return {
    +                  type: Syntax.SwitchStatement,
    +                  discriminant: discriminant
    +              };
    +          }
    +  
    +          cases = [];
    +  
    +          oldInSwitch = state.inSwitch;
    +          state.inSwitch = true;
    +          defaultFound = false;
    +  
    +          while (index < length) {
    +              if (match('}')) {
    +                  break;
    +              }
    +              clause = parseSwitchCase();
    +              if (clause.test === null) {
    +                  if (defaultFound) {
    +                      throwError({}, Messages.MultipleDefaultsInSwitch);
    +                  }
    +                  defaultFound = true;
    +              }
    +              cases.push(clause);
    +          }
    +  
    +          state.inSwitch = oldInSwitch;
    +  
    +          expect('}');
    +  
    +          return {
    +              type: Syntax.SwitchStatement,
    +              discriminant: discriminant,
    +              cases: cases
    +          };
    +      }
    +  
    +      // 12.13 The throw statement
    +  
    +      function parseThrowStatement() {
    +          var argument;
    +  
    +          expectKeyword('throw');
    +  
    +          if (peekLineTerminator()) {
    +              throwError({}, Messages.NewlineAfterThrow);
    +          }
    +  
    +          argument = parseExpression();
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.ThrowStatement,
    +              argument: argument
    +          };
    +      }
    +  
    +      // 12.14 The try statement
    +  
    +      function parseCatchClause() {
    +          var param;
    +  
    +          expectKeyword('catch');
    +  
    +          expect('(');
    +          if (!match(')')) {
    +              param = parseExpression();
    +              // 12.14.1
    +              if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) {
    +                  throwErrorTolerant({}, Messages.StrictCatchVariable);
    +              }
    +          }
    +          expect(')');
    +  
    +          return {
    +              type: Syntax.CatchClause,
    +              param: param,
    +              guard: null,
    +              body: parseBlock()
    +          };
    +      }
    +  
    +      function parseTryStatement() {
    +          var block, handlers = [], finalizer = null;
    +  
    +          expectKeyword('try');
    +  
    +          block = parseBlock();
    +  
    +          if (matchKeyword('catch')) {
    +              handlers.push(parseCatchClause());
    +          }
    +  
    +          if (matchKeyword('finally')) {
    +              lex();
    +              finalizer = parseBlock();
    +          }
    +  
    +          if (handlers.length === 0 && !finalizer) {
    +              throwError({}, Messages.NoCatchOrFinally);
    +          }
    +  
    +          return {
    +              type: Syntax.TryStatement,
    +              block: block,
    +              handlers: handlers,
    +              finalizer: finalizer
    +          };
    +      }
    +  
    +      // 12.15 The debugger statement
    +  
    +      function parseDebuggerStatement() {
    +          expectKeyword('debugger');
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.DebuggerStatement
    +          };
    +      }
    +  
    +      // 12 Statements
    +  
    +      function parseStatement() {
    +          var token = lookahead(),
    +              expr,
    +              labeledBody;
    +  
    +          if (token.type === Token.EOF) {
    +              throwUnexpected(token);
    +          }
    +  
    +          if (token.type === Token.Punctuator) {
    +              switch (token.value) {
    +              case ';':
    +                  return parseEmptyStatement();
    +              case '{':
    +                  return parseBlock();
    +              case '(':
    +                  return parseExpressionStatement();
    +              default:
    +                  break;
    +              }
    +          }
    +  
    +          if (token.type === Token.Keyword) {
    +              switch (token.value) {
    +              case 'break':
    +                  return parseBreakStatement();
    +              case 'continue':
    +                  return parseContinueStatement();
    +              case 'debugger':
    +                  return parseDebuggerStatement();
    +              case 'do':
    +                  return parseDoWhileStatement();
    +              case 'for':
    +                  return parseForStatement();
    +              case 'function':
    +                  return parseFunctionDeclaration();
    +              case 'class':
    +                  return parseClassDeclaration();
    +              case 'if':
    +                  return parseIfStatement();
    +              case 'return':
    +                  return parseReturnStatement();
    +              case 'switch':
    +                  return parseSwitchStatement();
    +              case 'throw':
    +                  return parseThrowStatement();
    +              case 'try':
    +                  return parseTryStatement();
    +              case 'var':
    +                  return parseVariableStatement();
    +              case 'while':
    +                  return parseWhileStatement();
    +              case 'with':
    +                  return parseWithStatement();
    +              default:
    +                  break;
    +              }
    +          }
    +  
    +          expr = parseExpression();
    +  
    +          // 12.12 Labelled Statements
    +          if ((expr.type === Syntax.Identifier) && match(':')) {
    +              lex();
    +  
    +              if (Object.prototype.hasOwnProperty.call(state.labelSet, expr.name)) {
    +                  throwError({}, Messages.Redeclaration, 'Label', expr.name);
    +              }
    +  
    +              state.labelSet[expr.name] = true;
    +              labeledBody = parseStatement();
    +              delete state.labelSet[expr.name];
    +  
    +              return {
    +                  type: Syntax.LabeledStatement,
    +                  label: expr,
    +                  body: labeledBody
    +              };
    +          }
    +  
    +          consumeSemicolon();
    +  
    +          return {
    +              type: Syntax.ExpressionStatement,
    +              expression: expr
    +          };
    +      }
    +  
    +      // 13 Function Definition
    +  
    +      function parseConciseBody() {
    +          if (match('{')) {
    +              return parseFunctionSourceElements();
    +          } else {
    +              return parseAssignmentExpression();
    +          }
    +      }
    +  
    +      function parseFunctionSourceElements() {
    +          var sourceElement, sourceElements = [], token, directive, firstRestricted,
    +              oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, oldParenthesizedCount;
    +  
    +          expect('{');
    +  
    +          while (index < length) {
    +              token = lookahead();
    +              if (token.type !== Token.StringLiteral) {
    +                  break;
    +              }
    +  
    +              sourceElement = parseSourceElement();
    +              sourceElements.push(sourceElement);
    +              if (sourceElement.expression.type !== Syntax.Literal) {
    +                  // this is not directive
    +                  break;
    +              }
    +              directive = sliceSource(token.range[0] + 1, token.range[1] - 1);
    +              if (directive === 'use strict') {
    +                  strict = true;
    +                  if (firstRestricted) {
    +                      throwError(firstRestricted, Messages.StrictOctalLiteral);
    +                  }
    +              } else {
    +                  if (!firstRestricted && token.octal) {
    +                      firstRestricted = token;
    +                  }
    +              }
    +          }
    +  
    +          oldLabelSet = state.labelSet;
    +          oldInIteration = state.inIteration;
    +          oldInSwitch = state.inSwitch;
    +          oldInFunctionBody = state.inFunctionBody;
    +          oldParenthesizedCount = state.parenthesizedCount;
    +  
    +          state.labelSet = {};
    +          state.inIteration = false;
    +          state.inSwitch = false;
    +          state.inFunctionBody = true;
    +          state.parenthesizedCount = 0;
    +  
    +          while (index < length) {
    +              if (match('}')) {
    +                  break;
    +              }
    +              sourceElement = parseSourceElement();
    +              if (typeof sourceElement === 'undefined') {
    +                  break;
    +              }
    +              sourceElements.push(sourceElement);
    +          }
    +  
    +          expect('}');
    +  
    +          state.labelSet = oldLabelSet;
    +          state.inIteration = oldInIteration;
    +          state.inSwitch = oldInSwitch;
    +          state.inFunctionBody = oldInFunctionBody;
    +          state.parenthesizedCount = oldParenthesizedCount;
    +  
    +          return {
    +              type: Syntax.BlockStatement,
    +              body: sourceElements
    +          };
    +      }
    +  
    +      function parseFunctionDeclaration() {
    +          var id, param, params = [], body, token, firstRestricted, message, previousStrict, previousYieldAllowed, paramSet, generator;
    +  
    +          expectKeyword('function');
    +  
    +          generator = false;
    +          if (match('*')) {
    +              lex();
    +              generator = true;
    +          }
    +  
    +          token = lookahead();
    +  
    +          id = parseVariableIdentifier();
    +          if (strict) {
    +              if (isRestrictedWord(token.value)) {
    +                  throwError(token, Messages.StrictFunctionName);
    +              }
    +          } else {
    +              if (isRestrictedWord(token.value)) {
    +                  firstRestricted = token;
    +                  message = Messages.StrictFunctionName;
    +              } else if (isStrictModeReservedWord(token.value)) {
    +                  firstRestricted = token;
    +                  message = Messages.StrictReservedWord;
    +              }
    +          }
    +  
    +          expect('(');
    +  
    +          if (!match(')')) {
    +              paramSet = {};
    +              while (index < length) {
    +                  token = lookahead();
    +                  param = parseVariableIdentifier();
    +                  if (strict) {
    +                      if (isRestrictedWord(token.value)) {
    +                          throwError(token, Messages.StrictParamName);
    +                      }
    +                      if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
    +                          throwError(token, Messages.StrictParamDupe);
    +                      }
    +                  } else if (!firstRestricted) {
    +                      if (isRestrictedWord(token.value)) {
    +                          firstRestricted = token;
    +                          message = Messages.StrictParamName;
    +                      } else if (isStrictModeReservedWord(token.value)) {
    +                          firstRestricted = token;
    +                          message = Messages.StrictReservedWord;
    +                      } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
    +                          firstRestricted = token;
    +                          message = Messages.StrictParamDupe;
    +                      }
    +                  }
    +                  params.push(param);
    +                  paramSet[param.name] = true;
    +                  if (match(')')) {
    +                      break;
    +                  }
    +                  expect(',');
    +              }
    +          }
    +  
    +          expect(')');
    +  
    +          previousStrict = strict;
    +          previousYieldAllowed = yieldAllowed;
    +          yieldAllowed = generator;
    +          body = parseFunctionSourceElements();
    +          if (strict && firstRestricted) {
    +              throwError(firstRestricted, message);
    +          }
    +          if (yieldAllowed && !yieldFound) {
    +              throwError({}, Messages.NoYieldInGenerator);
    +          }
    +          strict = previousStrict;
    +          yieldAllowed = previousYieldAllowed;
    +  
    +          return {
    +              type: Syntax.FunctionDeclaration,
    +              id: id,
    +              params: params,
    +              body: body,
    +              generator: generator
    +          };
    +      }
    +  
    +      function parseFunctionExpression() {
    +          var token, id = null, firstRestricted, message, param, params = [], body, previousStrict, previousYieldAllowed, paramSet, generator;
    +  
    +          expectKeyword('function');
    +  
    +          generator = false;
    +  
    +          if (match('*')) {
    +              lex();
    +              generator = true;
    +          }
    +  
    +          if (!match('(')) {
    +              token = lookahead();
    +              id = parseVariableIdentifier();
    +              if (strict) {
    +                  if (isRestrictedWord(token.value)) {
    +                      throwError(token, Messages.StrictFunctionName);
    +                  }
    +              } else {
    +                  if (isRestrictedWord(token.value)) {
    +                      firstRestricted = token;
    +                      message = Messages.StrictFunctionName;
    +                  } else if (isStrictModeReservedWord(token.value)) {
    +                      firstRestricted = token;
    +                      message = Messages.StrictReservedWord;
    +                  }
    +              }
    +          }
    +  
    +          expect('(');
    +  
    +          if (!match(')')) {
    +              paramSet = {};
    +              while (index < length) {
    +                  token = lookahead();
    +                  param = parseVariableIdentifier();
    +                  if (strict) {
    +                      if (isRestrictedWord(token.value)) {
    +                          throwError(token, Messages.StrictParamName);
    +                      }
    +                      if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
    +                          throwError(token, Messages.StrictParamDupe);
    +                      }
    +                  } else if (!firstRestricted) {
    +                      if (isRestrictedWord(token.value)) {
    +                          firstRestricted = token;
    +                          message = Messages.StrictParamName;
    +                      } else if (isStrictModeReservedWord(token.value)) {
    +                          firstRestricted = token;
    +                          message = Messages.StrictReservedWord;
    +                      } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
    +                          firstRestricted = token;
    +                          message = Messages.StrictParamDupe;
    +                      }
    +                  }
    +                  params.push(param);
    +                  paramSet[param.name] = true;
    +                  if (match(')')) {
    +                      break;
    +                  }
    +                  expect(',');
    +              }
    +          }
    +  
    +          expect(')');
    +  
    +          previousStrict = strict;
    +          previousYieldAllowed = yieldAllowed;
    +          yieldAllowed = generator;
    +          body = parseFunctionSourceElements();
    +          if (strict && firstRestricted) {
    +              throwError(firstRestricted, message);
    +          }
    +          if (yieldAllowed && !yieldFound) {
    +              throwError({}, Messages.NoYieldInGenerator);
    +          }
    +          strict = previousStrict;
    +          yieldAllowed = previousYieldAllowed;
    +  
    +  
    +          return {
    +              type: Syntax.FunctionExpression,
    +              id: id,
    +              params: params,
    +              body: body,
    +              generator: generator
    +          };
    +      }
    +  
    +      function parseYieldExpression() {
    +          var delegate, expr, previousYieldAllowed;
    +  
    +          expectKeyword('yield');
    +  
    +          if (!yieldAllowed) {
    +              throwErrorTolerant({}, Messages.IllegalYield);
    +          }
    +  
    +          delegate = false;
    +          if (match('*')) {
    +              lex();
    +              delegate = true;
    +          }
    +  
    +          // It is a Syntax Error if any AssignmentExpression Contains YieldExpression.
    +          previousYieldAllowed = yieldAllowed;
    +          yieldAllowed = false;
    +          expr = parseAssignmentExpression();
    +          yieldAllowed = previousYieldAllowed;
    +          yieldFound = true;
    +  
    +          return {
    +              type: Syntax.YieldExpression,
    +              argument: expr,
    +              delegate: delegate
    +          };
    +      }
    +  
    +      // 14 Classes
    +  
    +      function parseMethodDefinition() {
    +          var token, key, param;
    +  
    +          if (match('*')) {
    +              lex();
    +              return {
    +                  type: Syntax.MethodDefinition,
    +                  key: parseObjectPropertyKey(),
    +                  value: parsePropertyMethodFunction({ generator: true }),
    +                  kind: ''
    +              };
    +          }
    +  
    +          token = lookahead();
    +          key = parseObjectPropertyKey();
    +  
    +          if (token.value === 'get' && !match('(')) {
    +              key = parseObjectPropertyKey();
    +              expect('(');
    +              expect(')');
    +              return {
    +                  type: Syntax.MethodDefinition,
    +                  key: key,
    +                  value: parsePropertyFunction([], { generator: false }),
    +                  kind: 'get'
    +              };
    +          } else if (token.value === 'set' && !match('(')) {
    +              key = parseObjectPropertyKey();
    +              expect('(');
    +              token = lookahead();
    +              param = [ parseVariableIdentifier() ];
    +              expect(')');
    +              return {
    +                  type: Syntax.MethodDefinition,
    +                  key: key,
    +                  value: parsePropertyFunction(param, { generator: false, name: token }),
    +                  kind: 'set'
    +              };
    +          } else {
    +              return {
    +                  type: Syntax.MethodDefinition,
    +                  key: key,
    +                  value: parsePropertyMethodFunction({ generator: false }),
    +                  kind: ''
    +              };
    +          }
    +      }
    +  
    +      function parseClassElement() {
    +          if (match(';')) {
    +              lex();
    +              return;
    +          } else {
    +              return parseMethodDefinition();
    +          }
    +      }
    +  
    +      function parseClassBody() {
    +          var classElement, classElements = [];
    +  
    +          expect('{');
    +  
    +          while (index < length) {
    +              if (match('}')) {
    +                  break;
    +              }
    +              classElement = parseClassElement();
    +              if (typeof classElement !== 'undefined') {
    +                  classElements.push(classElement);
    +              }
    +          }
    +  
    +          expect('}');
    +  
    +          return {
    +              type: Syntax.ClassBody,
    +              body: classElements
    +          };
    +      }
    +  
    +      function parseClassExpression() {
    +          var id, body, previousYieldAllowed, superClass;
    +  
    +          expectKeyword('class');
    +  
    +          if (!matchKeyword('extends') && !match('{')) {
    +              id = parseVariableIdentifier();
    +          }
    +  
    +          if (matchKeyword('extends')) {
    +              expectKeyword('extends');
    +              previousYieldAllowed = yieldAllowed;
    +              yieldAllowed = false;
    +              superClass = parseAssignmentExpression();
    +              yieldAllowed = previousYieldAllowed;
    +          }
    +  
    +          body = parseClassBody();
    +          return {
    +              id: id,
    +              type: Syntax.ClassExpression,
    +              body: body,
    +              superClass: superClass
    +          };
    +      }
    +  
    +      function parseClassDeclaration() {
    +          var token, id, body, previousYieldAllowed, superClass;
    +  
    +          expectKeyword('class');
    +  
    +          token = lookahead();
    +          id = parseVariableIdentifier();
    +  
    +          if (matchKeyword('extends')) {
    +              expectKeyword('extends');
    +              previousYieldAllowed = yieldAllowed;
    +              yieldAllowed = false;
    +              superClass = parseAssignmentExpression();
    +              yieldAllowed = previousYieldAllowed;
    +          }
    +  
    +          body = parseClassBody();
    +          return {
    +              id: id,
    +              type: Syntax.ClassDeclaration,
    +              body: body,
    +              superClass: superClass
    +          };
    +      }
    +  
    +      // 15 Program
    +  
    +      function parseSourceElement() {
    +          var token = lookahead();
    +  
    +          if (token.type === Token.Keyword) {
    +              switch (token.value) {
    +              case 'const':
    +              case 'let':
    +                  return parseConstLetDeclaration(token.value);
    +              case 'function':
    +                  return parseFunctionDeclaration();
    +              default:
    +                  return parseStatement();
    +              }
    +          }
    +  
    +          if (token.type !== Token.EOF) {
    +              return parseStatement();
    +          }
    +      }
    +  
    +      function parseProgramElement() {
    +          var token = lookahead(), lineNumber;
    +  
    +          if (token.type === Token.Keyword) {
    +              switch (token.value) {
    +              case 'export':
    +                  return parseExportDeclaration();
    +              case 'import':
    +                  return parseImportDeclaration();
    +              }
    +          }
    +  
    +          if (token.value === 'module' && token.type === Token.Identifier) {
    +              lineNumber = token.lineNumber;
    +              token = lookahead2();
    +              if (token.type === Token.Identifier && token.lineNumber === lineNumber) {
    +                  return parseModuleDeclaration();
    +              }
    +          }
    +  
    +          return parseSourceElement();
    +      }
    +  
    +      function parseProgramElements() {
    +          var sourceElement, sourceElements = [], token, directive, firstRestricted;
    +  
    +          while (index < length) {
    +              token = lookahead();
    +              if (token.type !== Token.StringLiteral) {
    +                  break;
    +              }
    +  
    +              sourceElement = parseProgramElement();
    +              sourceElements.push(sourceElement);
    +              if (sourceElement.expression.type !== Syntax.Literal) {
    +                  // this is not directive
    +                  break;
    +              }
    +              directive = sliceSource(token.range[0] + 1, token.range[1] - 1);
    +              if (directive === 'use strict') {
    +                  strict = true;
    +                  if (firstRestricted) {
    +                      throwError(firstRestricted, Messages.StrictOctalLiteral);
    +                  }
    +              } else {
    +                  if (!firstRestricted && token.octal) {
    +                      firstRestricted = token;
    +                  }
    +              }
    +          }
    +  
    +          while (index < length) {
    +              sourceElement = parseProgramElement();
    +              if (typeof sourceElement === 'undefined') {
    +                  break;
    +              }
    +              sourceElements.push(sourceElement);
    +          }
    +          return sourceElements;
    +      }
    +  
    +      function parseModuleElement() {
    +          return parseProgramElement();
    +      }
    +  
    +      function parseModuleElements() {
    +          var list = [],
    +              statement;
    +  
    +          while (index < length) {
    +              if (match('}')) {
    +                  break;
    +              }
    +              statement = parseModuleElement();
    +              if (typeof statement === 'undefined') {
    +                  break;
    +              }
    +              list.push(statement);
    +          }
    +  
    +          return list;
    +      }
    +  
    +      function parseModuleBlock() {
    +          var block;
    +  
    +          expect('{');
    +  
    +          block = parseModuleElements();
    +  
    +          expect('}');
    +  
    +          return {
    +              type: Syntax.BlockStatement,
    +              body: block
    +          };
    +      }
    +  
    +      function parseProgram() {
    +          var program;
    +          strict = false;
    +          yieldAllowed = false;
    +          yieldFound = false;
    +          program = {
    +              type: Syntax.Program,
    +              body: parseProgramElements()
    +          };
    +          return program;
    +      }
    +  
    +      // The following functions are needed only when the option to preserve
    +      // the comments is active.
    +  
    +      function addComment(type, value, start, end, loc) {
    +          assert(typeof start === 'number', 'Comment must have valid position');
    +  
    +          // Because the way the actual token is scanned, often the comments
    +          // (if any) are skipped twice during the lexical analysis.
    +          // Thus, we need to skip adding a comment if the comment array already
    +          // handled it.
    +          if (extra.comments.length > 0) {
    +              if (extra.comments[extra.comments.length - 1].range[1] > start) {
    +                  return;
    +              }
    +          }
    +  
    +          extra.comments.push({
    +              type: type,
    +              value: value,
    +              range: [start, end],
    +              loc: loc
    +          });
    +      }
    +  
    +      function scanComment() {
    +          var comment, ch, loc, start, blockComment, lineComment;
    +  
    +          comment = '';
    +          blockComment = false;
    +          lineComment = false;
    +  
    +          while (index < length) {
    +              ch = source[index];
    +  
    +              if (lineComment) {
    +                  ch = nextChar();
    +                  if (isLineTerminator(ch)) {
    +                      loc.end = {
    +                          line: lineNumber,
    +                          column: index - lineStart - 1
    +                      };
    +                      lineComment = false;
    +                      addComment('Line', comment, start, index - 1, loc);
    +                      if (ch === '\r' && source[index] === '\n') {
    +                          ++index;
    +                      }
    +                      ++lineNumber;
    +                      lineStart = index;
    +                      comment = '';
    +                  } else if (index >= length) {
    +                      lineComment = false;
    +                      comment += ch;
    +                      loc.end = {
    +                          line: lineNumber,
    +                          column: length - lineStart
    +                      };
    +                      addComment('Line', comment, start, length, loc);
    +                  } else {
    +                      comment += ch;
    +                  }
    +              } else if (blockComment) {
    +                  if (isLineTerminator(ch)) {
    +                      if (ch === '\r' && source[index + 1] === '\n') {
    +                          ++index;
    +                          comment += '\r\n';
    +                      } else {
    +                          comment += ch;
    +                      }
    +                      ++lineNumber;
    +                      ++index;
    +                      lineStart = index;
    +                      if (index >= length) {
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +                  } else {
    +                      ch = nextChar();
    +                      if (index >= length) {
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +                      comment += ch;
    +                      if (ch === '*') {
    +                          ch = source[index];
    +                          if (ch === '/') {
    +                              comment = comment.substr(0, comment.length - 1);
    +                              blockComment = false;
    +                              ++index;
    +                              loc.end = {
    +                                  line: lineNumber,
    +                                  column: index - lineStart
    +                              };
    +                              addComment('Block', comment, start, index, loc);
    +                              comment = '';
    +                          }
    +                      }
    +                  }
    +              } else if (ch === '/') {
    +                  ch = source[index + 1];
    +                  if (ch === '/') {
    +                      loc = {
    +                          start: {
    +                              line: lineNumber,
    +                              column: index - lineStart
    +                          }
    +                      };
    +                      start = index;
    +                      index += 2;
    +                      lineComment = true;
    +                      if (index >= length) {
    +                          loc.end = {
    +                              line: lineNumber,
    +                              column: index - lineStart
    +                          };
    +                          lineComment = false;
    +                          addComment('Line', comment, start, index, loc);
    +                      }
    +                  } else if (ch === '*') {
    +                      start = index;
    +                      index += 2;
    +                      blockComment = true;
    +                      loc = {
    +                          start: {
    +                              line: lineNumber,
    +                              column: index - lineStart - 2
    +                          }
    +                      };
    +                      if (index >= length) {
    +                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
    +                      }
    +                  } else {
    +                      break;
    +                  }
    +              } else if (isWhiteSpace(ch)) {
    +                  ++index;
    +              } else if (isLineTerminator(ch)) {
    +                  ++index;
    +                  if (ch ===  '\r' && source[index] === '\n') {
    +                      ++index;
    +                  }
    +                  ++lineNumber;
    +                  lineStart = index;
    +              } else {
    +                  break;
    +              }
    +          }
    +      }
    +  
    +      function filterCommentLocation() {
    +          var i, entry, comment, comments = [];
    +  
    +          for (i = 0; i < extra.comments.length; ++i) {
    +              entry = extra.comments[i];
    +              comment = {
    +                  type: entry.type,
    +                  value: entry.value
    +              };
    +              if (extra.range) {
    +                  comment.range = entry.range;
    +              }
    +              if (extra.loc) {
    +                  comment.loc = entry.loc;
    +              }
    +              comments.push(comment);
    +          }
    +  
    +          extra.comments = comments;
    +      }
    +  
    +      function collectToken() {
    +          var start, loc, token, range, value;
    +  
    +          skipComment();
    +          start = index;
    +          loc = {
    +              start: {
    +                  line: lineNumber,
    +                  column: index - lineStart
    +              }
    +          };
    +  
    +          token = extra.advance();
    +          loc.end = {
    +              line: lineNumber,
    +              column: index - lineStart
    +          };
    +  
    +          if (token.type !== Token.EOF) {
    +              range = [token.range[0], token.range[1]];
    +              value = sliceSource(token.range[0], token.range[1]);
    +              extra.tokens.push({
    +                  type: TokenName[token.type],
    +                  value: value,
    +                  range: range,
    +                  loc: loc
    +              });
    +          }
    +  
    +          return token;
    +      }
    +  
    +      function collectRegex() {
    +          var pos, loc, regex, token;
    +  
    +          skipComment();
    +  
    +          pos = index;
    +          loc = {
    +              start: {
    +                  line: lineNumber,
    +                  column: index - lineStart
    +              }
    +          };
    +  
    +          regex = extra.scanRegExp();
    +          loc.end = {
    +              line: lineNumber,
    +              column: index - lineStart
    +          };
    +  
    +          // Pop the previous token, which is likely '/' or '/='
    +          if (extra.tokens.length > 0) {
    +              token = extra.tokens[extra.tokens.length - 1];
    +              if (token.range[0] === pos && token.type === 'Punctuator') {
    +                  if (token.value === '/' || token.value === '/=') {
    +                      extra.tokens.pop();
    +                  }
    +              }
    +          }
    +  
    +          extra.tokens.push({
    +              type: 'RegularExpression',
    +              value: regex.literal,
    +              range: [pos, index],
    +              loc: loc
    +          });
    +  
    +          return regex;
    +      }
    +  
    +      function filterTokenLocation() {
    +          var i, entry, token, tokens = [];
    +  
    +          for (i = 0; i < extra.tokens.length; ++i) {
    +              entry = extra.tokens[i];
    +              token = {
    +                  type: entry.type,
    +                  value: entry.value
    +              };
    +              if (extra.range) {
    +                  token.range = entry.range;
    +              }
    +              if (extra.loc) {
    +                  token.loc = entry.loc;
    +              }
    +              tokens.push(token);
    +          }
    +  
    +          extra.tokens = tokens;
    +      }
    +  
    +      function createLiteral(token) {
    +          return {
    +              type: Syntax.Literal,
    +              value: token.value
    +          };
    +      }
    +  
    +      function createRawLiteral(token) {
    +          return {
    +              type: Syntax.Literal,
    +              value: token.value,
    +              raw: sliceSource(token.range[0], token.range[1])
    +          };
    +      }
    +  
    +      function wrapTrackingFunction(range, loc) {
    +  
    +          return function (parseFunction) {
    +  
    +              function isBinary(node) {
    +                  return node.type === Syntax.LogicalExpression ||
    +                      node.type === Syntax.BinaryExpression;
    +              }
    +  
    +              function visit(node) {
    +                  if (isBinary(node.left)) {
    +                      visit(node.left);
    +                  }
    +                  if (isBinary(node.right)) {
    +                      visit(node.right);
    +                  }
    +  
    +                  if (range && typeof node.range === 'undefined') {
    +                      node.range = [node.left.range[0], node.right.range[1]];
    +                  }
    +                  if (loc && typeof node.loc === 'undefined') {
    +                      node.loc = {
    +                          start: node.left.loc.start,
    +                          end: node.right.loc.end
    +                      };
    +                  }
    +              }
    +  
    +              return function () {
    +                  var node, rangeInfo, locInfo;
    +  
    +                  skipComment();
    +                  rangeInfo = [index, 0];
    +                  locInfo = {
    +                      start: {
    +                          line: lineNumber,
    +                          column: index - lineStart
    +                      }
    +                  };
    +  
    +                  node = parseFunction.apply(null, arguments);
    +                  if (typeof node !== 'undefined') {
    +  
    +                      if (range) {
    +                          rangeInfo[1] = index;
    +                          node.range = rangeInfo;
    +                      }
    +  
    +                      if (loc) {
    +                          locInfo.end = {
    +                              line: lineNumber,
    +                              column: index - lineStart
    +                          };
    +                          node.loc = locInfo;
    +                      }
    +  
    +                      if (isBinary(node)) {
    +                          visit(node);
    +                      }
    +  
    +                      if (node.type === Syntax.MemberExpression) {
    +                          if (typeof node.object.range !== 'undefined') {
    +                              node.range[0] = node.object.range[0];
    +                          }
    +                          if (typeof node.object.loc !== 'undefined') {
    +                              node.loc.start = node.object.loc.start;
    +                          }
    +                      }
    +  
    +                      if (node.type === Syntax.CallExpression) {
    +                          if (typeof node.callee.range !== 'undefined') {
    +                              node.range[0] = node.callee.range[0];
    +                          }
    +                          if (typeof node.callee.loc !== 'undefined') {
    +                              node.loc.start = node.callee.loc.start;
    +                          }
    +                      }
    +                      return node;
    +                  }
    +              };
    +  
    +          };
    +      }
    +  
    +      function patch() {
    +  
    +          var wrapTracking;
    +  
    +          if (extra.comments) {
    +              extra.skipComment = skipComment;
    +              skipComment = scanComment;
    +          }
    +  
    +          if (extra.raw) {
    +              extra.createLiteral = createLiteral;
    +              createLiteral = createRawLiteral;
    +          }
    +  
    +          if (extra.range || extra.loc) {
    +  
    +              wrapTracking = wrapTrackingFunction(extra.range, extra.loc);
    +  
    +              extra.parseAdditiveExpression = parseAdditiveExpression;
    +              extra.parseAssignmentExpression = parseAssignmentExpression;
    +              extra.parseBitwiseANDExpression = parseBitwiseANDExpression;
    +              extra.parseBitwiseORExpression = parseBitwiseORExpression;
    +              extra.parseBitwiseXORExpression = parseBitwiseXORExpression;
    +              extra.parseBlock = parseBlock;
    +              extra.parseFunctionSourceElements = parseFunctionSourceElements;
    +              extra.parseCallMember = parseCallMember;
    +              extra.parseCatchClause = parseCatchClause;
    +              extra.parseComputedMember = parseComputedMember;
    +              extra.parseConditionalExpression = parseConditionalExpression;
    +              extra.parseConstLetDeclaration = parseConstLetDeclaration;
    +              extra.parseEqualityExpression = parseEqualityExpression;
    +              extra.parseExportDeclaration = parseExportDeclaration;
    +              extra.parseExportSpecifier = parseExportSpecifier;
    +              extra.parseExportSpecifierSetProperty = parseExportSpecifierSetProperty;
    +              extra.parseExpression = parseExpression;
    +              extra.parseForVariableDeclaration = parseForVariableDeclaration;
    +              extra.parseFunctionDeclaration = parseFunctionDeclaration;
    +              extra.parseFunctionExpression = parseFunctionExpression;
    +              extra.parseGlob = parseGlob;
    +              extra.parseImportDeclaration = parseImportDeclaration;
    +              extra.parseImportSpecifier = parseImportSpecifier;
    +              extra.parseLogicalANDExpression = parseLogicalANDExpression;
    +              extra.parseLogicalORExpression = parseLogicalORExpression;
    +              extra.parseMultiplicativeExpression = parseMultiplicativeExpression;
    +              extra.parseModuleDeclaration = parseModuleDeclaration;
    +              extra.parseModuleBlock = parseModuleBlock;
    +              extra.parseNewExpression = parseNewExpression;
    +              extra.parseNonComputedMember = parseNonComputedMember;
    +              extra.parseNonComputedProperty = parseNonComputedProperty;
    +              extra.parseObjectProperty = parseObjectProperty;
    +              extra.parseObjectPropertyKey = parseObjectPropertyKey;
    +              extra.parsePath = parsePath;
    +              extra.parsePostfixExpression = parsePostfixExpression;
    +              extra.parsePrimaryExpression = parsePrimaryExpression;
    +              extra.parseProgram = parseProgram;
    +              extra.parsePropertyFunction = parsePropertyFunction;
    +              extra.parseRelationalExpression = parseRelationalExpression;
    +              extra.parseStatement = parseStatement;
    +              extra.parseShiftExpression = parseShiftExpression;
    +              extra.parseSwitchCase = parseSwitchCase;
    +              extra.parseUnaryExpression = parseUnaryExpression;
    +              extra.parseVariableDeclaration = parseVariableDeclaration;
    +              extra.parseVariableIdentifier = parseVariableIdentifier;
    +              extra.parseMethodDefinition = parseMethodDefinition;
    +              extra.parseClassDeclaration = parseClassDeclaration;
    +              extra.parseClassExpression = parseClassExpression;
    +              extra.parseClassBody = parseClassBody;
    +  
    +              parseAdditiveExpression = wrapTracking(extra.parseAdditiveExpression);
    +              parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression);
    +              parseBitwiseANDExpression = wrapTracking(extra.parseBitwiseANDExpression);
    +              parseBitwiseORExpression = wrapTracking(extra.parseBitwiseORExpression);
    +              parseBitwiseXORExpression = wrapTracking(extra.parseBitwiseXORExpression);
    +              parseBlock = wrapTracking(extra.parseBlock);
    +              parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements);
    +              parseCallMember = wrapTracking(extra.parseCallMember);
    +              parseCatchClause = wrapTracking(extra.parseCatchClause);
    +              parseComputedMember = wrapTracking(extra.parseComputedMember);
    +              parseConditionalExpression = wrapTracking(extra.parseConditionalExpression);
    +              parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration);
    +              parseExportDeclaration = wrapTracking(parseExportDeclaration);
    +              parseExportSpecifier = wrapTracking(parseExportSpecifier);
    +              parseExportSpecifierSetProperty = wrapTracking(parseExportSpecifierSetProperty);
    +              parseEqualityExpression = wrapTracking(extra.parseEqualityExpression);
    +              parseExpression = wrapTracking(extra.parseExpression);
    +              parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration);
    +              parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration);
    +              parseFunctionExpression = wrapTracking(extra.parseFunctionExpression);
    +              parseGlob = wrapTracking(extra.parseGlob);
    +              parseImportDeclaration = wrapTracking(extra.parseImportDeclaration);
    +              parseImportSpecifier = wrapTracking(extra.parseImportSpecifier);
    +              parseLogicalANDExpression = wrapTracking(extra.parseLogicalANDExpression);
    +              parseLogicalORExpression = wrapTracking(extra.parseLogicalORExpression);
    +              parseMultiplicativeExpression = wrapTracking(extra.parseMultiplicativeExpression);
    +              parseModuleDeclaration = wrapTracking(extra.parseModuleDeclaration);
    +              parseModuleBlock = wrapTracking(extra.parseModuleBlock);
    +              parseNewExpression = wrapTracking(extra.parseNewExpression);
    +              parseNonComputedMember = wrapTracking(extra.parseNonComputedMember);
    +              parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty);
    +              parseObjectProperty = wrapTracking(extra.parseObjectProperty);
    +              parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey);
    +              parsePath = wrapTracking(extra.parsePath);
    +              parsePostfixExpression = wrapTracking(extra.parsePostfixExpression);
    +              parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression);
    +              parseProgram = wrapTracking(extra.parseProgram);
    +              parsePropertyFunction = wrapTracking(extra.parsePropertyFunction);
    +              parseRelationalExpression = wrapTracking(extra.parseRelationalExpression);
    +              parseStatement = wrapTracking(extra.parseStatement);
    +              parseShiftExpression = wrapTracking(extra.parseShiftExpression);
    +              parseSwitchCase = wrapTracking(extra.parseSwitchCase);
    +              parseUnaryExpression = wrapTracking(extra.parseUnaryExpression);
    +              parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration);
    +              parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier);
    +              parseMethodDefinition = wrapTracking(extra.parseMethodDefinition);
    +              parseClassDeclaration = wrapTracking(extra.parseClassDeclaration);
    +              parseClassExpression = wrapTracking(extra.parseClassExpression);
    +              parseClassBody = wrapTracking(extra.parseClassBody);
    +          }
    +  
    +          if (typeof extra.tokens !== 'undefined') {
    +              extra.advance = advance;
    +              extra.scanRegExp = scanRegExp;
    +  
    +              advance = collectToken;
    +              scanRegExp = collectRegex;
    +          }
    +      }
    +  
    +      function unpatch() {
    +          if (typeof extra.skipComment === 'function') {
    +              skipComment = extra.skipComment;
    +          }
    +  
    +          if (extra.raw) {
    +              createLiteral = extra.createLiteral;
    +          }
    +  
    +          if (extra.range || extra.loc) {
    +              parseAdditiveExpression = extra.parseAdditiveExpression;
    +              parseAssignmentExpression = extra.parseAssignmentExpression;
    +              parseBitwiseANDExpression = extra.parseBitwiseANDExpression;
    +              parseBitwiseORExpression = extra.parseBitwiseORExpression;
    +              parseBitwiseXORExpression = extra.parseBitwiseXORExpression;
    +              parseBlock = extra.parseBlock;
    +              parseFunctionSourceElements = extra.parseFunctionSourceElements;
    +              parseCallMember = extra.parseCallMember;
    +              parseCatchClause = extra.parseCatchClause;
    +              parseComputedMember = extra.parseComputedMember;
    +              parseConditionalExpression = extra.parseConditionalExpression;
    +              parseConstLetDeclaration = extra.parseConstLetDeclaration;
    +              parseEqualityExpression = extra.parseEqualityExpression;
    +              parseExportDeclaration = extra.parseExportDeclaration;
    +              parseExportSpecifier = extra.parseExportSpecifier;
    +              parseExportSpecifierSetProperty = extra.parseExportSpecifierSetProperty;
    +              parseExpression = extra.parseExpression;
    +              parseForVariableDeclaration = extra.parseForVariableDeclaration;
    +              parseFunctionDeclaration = extra.parseFunctionDeclaration;
    +              parseFunctionExpression = extra.parseFunctionExpression;
    +              parseGlob = extra.parseGlob;
    +              parseImportDeclaration = extra.parseImportDeclaration;
    +              parseImportSpecifier = extra.parseImportSpecifier;
    +              parseLogicalANDExpression = extra.parseLogicalANDExpression;
    +              parseLogicalORExpression = extra.parseLogicalORExpression;
    +              parseMultiplicativeExpression = extra.parseMultiplicativeExpression;
    +              parseModuleDeclaration = extra.parseModuleDeclaration;
    +              parseModuleBlock = extra.parseModuleBlock;
    +              parseNewExpression = extra.parseNewExpression;
    +              parseNonComputedMember = extra.parseNonComputedMember;
    +              parseNonComputedProperty = extra.parseNonComputedProperty;
    +              parseObjectProperty = extra.parseObjectProperty;
    +              parseObjectPropertyKey = extra.parseObjectPropertyKey;
    +              parsePath = extra.parsePath;
    +              parsePostfixExpression = extra.parsePostfixExpression;
    +              parsePrimaryExpression = extra.parsePrimaryExpression;
    +              parseProgram = extra.parseProgram;
    +              parsePropertyFunction = extra.parsePropertyFunction;
    +              parseRelationalExpression = extra.parseRelationalExpression;
    +              parseStatement = extra.parseStatement;
    +              parseShiftExpression = extra.parseShiftExpression;
    +              parseSwitchCase = extra.parseSwitchCase;
    +              parseUnaryExpression = extra.parseUnaryExpression;
    +              parseVariableDeclaration = extra.parseVariableDeclaration;
    +              parseVariableIdentifier = extra.parseVariableIdentifier;
    +              parseMethodDefinition = extra.parseMethodDefinition;
    +              parseClassDeclaration = extra.parseClassDeclaration;
    +              parseClassExpression = extra.parseClassExpression;
    +              parseClassBody = extra.parseClassBody;
    +          }
    +  
    +          if (typeof extra.scanRegExp === 'function') {
    +              advance = extra.advance;
    +              scanRegExp = extra.scanRegExp;
    +          }
    +      }
    +  
    +      function stringToArray(str) {
    +          var length = str.length,
    +              result = [],
    +              i;
    +          for (i = 0; i < length; ++i) {
    +              result[i] = str.charAt(i);
    +          }
    +          return result;
    +      }
    +  
    +      function parse(code, options) {
    +          var program, toString;
    +  
    +          toString = String;
    +          if (typeof code !== 'string' && !(code instanceof String)) {
    +              code = toString(code);
    +          }
    +  
    +          source = code;
    +          index = 0;
    +          lineNumber = (source.length > 0) ? 1 : 0;
    +          lineStart = 0;
    +          length = source.length;
    +          buffer = null;
    +          state = {
    +              allowIn: true,
    +              labelSet: {},
    +              parenthesizedCount: 0,
    +              lastParenthesized: null,
    +              inFunctionBody: false,
    +              inIteration: false,
    +              inSwitch: false
    +          };
    +  
    +          extra = {};
    +          if (typeof options !== 'undefined') {
    +              extra.range = (typeof options.range === 'boolean') && options.range;
    +              extra.loc = (typeof options.loc === 'boolean') && options.loc;
    +              extra.raw = (typeof options.raw === 'boolean') && options.raw;
    +              if (typeof options.tokens === 'boolean' && options.tokens) {
    +                  extra.tokens = [];
    +              }
    +              if (typeof options.comment === 'boolean' && options.comment) {
    +                  extra.comments = [];
    +              }
    +              if (typeof options.tolerant === 'boolean' && options.tolerant) {
    +                  extra.errors = [];
    +              }
    +          }
    +  
    +          if (length > 0) {
    +              if (typeof source[0] === 'undefined') {
    +                  // Try first to convert to a string. This is good as fast path
    +                  // for old IE which understands string indexing for string
    +                  // literals only and not for string object.
    +                  if (code instanceof String) {
    +                      source = code.valueOf();
    +                  }
    +  
    +                  // Force accessing the characters via an array.
    +                  if (typeof source[0] === 'undefined') {
    +                      source = stringToArray(code);
    +                  }
    +              }
    +          }
    +  
    +          patch();
    +          try {
    +              program = parseProgram();
    +              if (typeof extra.comments !== 'undefined') {
    +                  filterCommentLocation();
    +                  program.comments = extra.comments;
    +              }
    +              if (typeof extra.tokens !== 'undefined') {
    +                  filterTokenLocation();
    +                  program.tokens = extra.tokens;
    +              }
    +              if (typeof extra.errors !== 'undefined') {
    +                  program.errors = extra.errors;
    +              }
    +          } catch (e) {
    +              throw e;
    +          } finally {
    +              unpatch();
    +              extra = {};
    +          }
    +  
    +          return program;
    +      }
    +  
    +      // Sync with package.json.
    +      exports.version = '1.0.0-dev-harmony';
    +  
    +      exports.parse = parse;
    +  
    +      // Deep copy.
    +      exports.Syntax = (function () {
    +          var name, types = {};
    +  
    +          if (typeof Object.create === 'function') {
    +              types = Object.create(null);
    +          }
    +  
    +          for (name in Syntax) {
    +              if (Syntax.hasOwnProperty(name)) {
    +                  types[name] = Syntax[name];
    +              }
    +          }
    +  
    +          if (typeof Object.freeze === 'function') {
    +              Object.freeze(types);
    +          }
    +  
    +          return types;
    +      }());
    +  
    +  }));
    +  /* vim: set sw=4 ts=4 et tw=80 : */
    + +
    + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html new file mode 100644 index 0000000..ec2af9c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html @@ -0,0 +1,37 @@ + + + + +Esprima: Unit Tests + + + + + + + +
    + + + +

    Unit Tests ensures the correct implementation

    +

    Esprima version .

    +

    Please wait...

    +
    + +
    + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html new file mode 100644 index 0000000..7173a30 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html @@ -0,0 +1,36 @@ + + + + +Esprima: Module Loading Test + + + + +
    + + + +

    Module Loading works also with web browsers

    + +

    The following tests are to ensure that Esprima can be loaded using AMD (Asynchronous Module Definition) loader such as RequireJS.

    +

    +
    + +
    + + + + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js new file mode 100644 index 0000000..bba84c7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js @@ -0,0 +1,129 @@ +/*jslint browser:true plusplus:true */ +/*global require:true */ +function runTests() { + 'use strict'; + + function setText(el, str) { + if (typeof el.innerText === 'string') { + el.innerText = str; + } else { + el.textContent = str; + } + } + + function reportSuccess(code) { + var report, e; + report = document.getElementById('report'); + e = document.createElement('pre'); + e.setAttribute('class', 'code'); + setText(e, code); + report.appendChild(e); + } + + function reportFailure(code, expected, actual) { + var report, e; + + report = document.getElementById('report'); + + e = document.createElement('pre'); + e.setAttribute('class', 'code'); + setText(e, code); + report.appendChild(e); + + e = document.createElement('p'); + setText(e, 'Expected type: ' + expected); + report.appendChild(e); + + e = document.createElement('p'); + setText(e, 'Actual type: ' + actual); + report.appendChild(e); + } + + + require(['../esprima'], function (ESParser) { + var tick, total, failures, obj, variable, variables, i, entry, entries; + + // We check only the type of some members of ESParser. + variables = { + 'version': 'string', + 'parse': 'function', + 'Syntax': 'object', + 'Syntax.AssignmentExpression': 'string', + 'Syntax.ArrayExpression': 'string', + 'Syntax.BlockStatement': 'string', + 'Syntax.BinaryExpression': 'string', + 'Syntax.BreakStatement': 'string', + 'Syntax.CallExpression': 'string', + 'Syntax.CatchClause': 'string', + 'Syntax.ConditionalExpression': 'string', + 'Syntax.ContinueStatement': 'string', + 'Syntax.DoWhileStatement': 'string', + 'Syntax.DebuggerStatement': 'string', + 'Syntax.EmptyStatement': 'string', + 'Syntax.ExpressionStatement': 'string', + 'Syntax.ForStatement': 'string', + 'Syntax.ForInStatement': 'string', + 'Syntax.FunctionDeclaration': 'string', + 'Syntax.FunctionExpression': 'string', + 'Syntax.Identifier': 'string', + 'Syntax.IfStatement': 'string', + 'Syntax.Literal': 'string', + 'Syntax.LabeledStatement': 'string', + 'Syntax.LogicalExpression': 'string', + 'Syntax.MemberExpression': 'string', + 'Syntax.NewExpression': 'string', + 'Syntax.ObjectExpression': 'string', + 'Syntax.Program': 'string', + 'Syntax.Property': 'string', + 'Syntax.ReturnStatement': 'string', + 'Syntax.SequenceExpression': 'string', + 'Syntax.SwitchStatement': 'string', + 'Syntax.SwitchCase': 'string', + 'Syntax.ThisExpression': 'string', + 'Syntax.ThrowStatement': 'string', + 'Syntax.TryStatement': 'string', + 'Syntax.UnaryExpression': 'string', + 'Syntax.UpdateExpression': 'string', + 'Syntax.VariableDeclaration': 'string', + 'Syntax.VariableDeclarator': 'string', + 'Syntax.WhileStatement': 'string', + 'Syntax.WithStatement': 'string' + }; + + total = failures = 0; + tick = new Date(); + + for (variable in variables) { + if (variables.hasOwnProperty(variable)) { + entries = variable.split('.'); + obj = ESParser; + for (i = 0; i < entries.length; ++i) { + entry = entries[i]; + if (typeof obj[entry] !== 'undefined') { + obj = obj[entry]; + } else { + obj = undefined; + break; + } + } + total++; + if (typeof obj === variables[variable]) { + reportSuccess(variable); + } else { + failures++; + reportFailure(variable, variables[variable], typeof obj); + } + } + } + + tick = (new Date()) - tick; + + if (failures > 0) { + setText(document.getElementById('status'), total + ' tests. ' + + 'Failures: ' + failures + '. ' + tick + ' ms'); + } else { + setText(document.getElementById('status'), total + ' tests. ' + + 'No failure. ' + tick + ' ms'); + } + }); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js new file mode 100644 index 0000000..ffbeb53 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js @@ -0,0 +1,422 @@ +// This is modified from Mozilla Reflect.parse test suite (the file is located +// at js/src/tests/js1_8_5/extensions/reflect-parse.js in the source tree). +// +// Some notable changes: +// * Removed unsupported features (destructuring, let, comprehensions...). +// * Removed tests for E4X (ECMAScript for XML). +// * Removed everything related to builder. +// * Enclosed every 'Pattern' construct with a scope. +// * Tweaked some expected tree to remove generator field. +// * Removed the test for bug 632030 and bug 632024. + +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/licenses/publicdomain/ + */ + +(function (exports) { + +function testReflect(Reflect, Pattern) { + +function program(elts) { return Pattern({ type: "Program", body: elts }) } +function exprStmt(expr) { return Pattern({ type: "ExpressionStatement", expression: expr }) } +function throwStmt(expr) { return Pattern({ type: "ThrowStatement", argument: expr }) } +function returnStmt(expr) { return Pattern({ type: "ReturnStatement", argument: expr }) } +function yieldExpr(expr) { return Pattern({ type: "YieldExpression", argument: expr }) } +function lit(val) { return Pattern({ type: "Literal", value: val }) } +var thisExpr = Pattern({ type: "ThisExpression" }); +function funDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", + id: id, + params: params, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }) } +function genFunDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", + id: id, + params: params, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }) } +function declarator(id, init) { return Pattern({ type: "VariableDeclarator", id: id, init: init }) } +function varDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "var" }) } +function letDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "let" }) } +function constDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "const" }) } +function ident(name) { return Pattern({ type: "Identifier", name: name }) } +function dotExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: false, object: obj, property: id }) } +function memExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: true, object: obj, property: id }) } +function forStmt(init, test, update, body) { return Pattern({ type: "ForStatement", init: init, test: test, update: update, body: body }) } +function forInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: false }) } +function forEachInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: true }) } +function breakStmt(lab) { return Pattern({ type: "BreakStatement", label: lab }) } +function continueStmt(lab) { return Pattern({ type: "ContinueStatement", label: lab }) } +function blockStmt(body) { return Pattern({ type: "BlockStatement", body: body }) } +var emptyStmt = Pattern({ type: "EmptyStatement" }); +function ifStmt(test, cons, alt) { return Pattern({ type: "IfStatement", test: test, alternate: alt, consequent: cons }) } +function labStmt(lab, stmt) { return Pattern({ type: "LabeledStatement", label: lab, body: stmt }) } +function withStmt(obj, stmt) { return Pattern({ type: "WithStatement", object: obj, body: stmt }) } +function whileStmt(test, stmt) { return Pattern({ type: "WhileStatement", test: test, body: stmt }) } +function doStmt(stmt, test) { return Pattern({ type: "DoWhileStatement", test: test, body: stmt }) } +function switchStmt(disc, cases) { return Pattern({ type: "SwitchStatement", discriminant: disc, cases: cases }) } +function caseClause(test, stmts) { return Pattern({ type: "SwitchCase", test: test, consequent: stmts }) } +function defaultClause(stmts) { return Pattern({ type: "SwitchCase", test: null, consequent: stmts }) } +function catchClause(id, guard, body) { if (guard) { return Pattern({ type: "GuardedCatchClause", param: id, guard: guard, body: body }) } else { return Pattern({ type: "CatchClause", param: id, body: body }) } } +function tryStmt(body, guarded, catches, fin) { return Pattern({ type: "TryStatement", block: body, guardedHandlers: guarded, handlers: catches, finalizer: fin }) } +function letStmt(head, body) { return Pattern({ type: "LetStatement", head: head, body: body }) } +function funExpr(id, args, body, gen) { return Pattern({ type: "FunctionExpression", + id: id, + params: args, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }) } +function genFunExpr(id, args, body) { return Pattern({ type: "FunctionExpression", + id: id, + params: args, + defaults: [], + body: body, + rest: null, + generator: false, + expression: false + }) } + +function unExpr(op, arg) { return Pattern({ type: "UnaryExpression", operator: op, argument: arg }) } +function binExpr(op, left, right) { return Pattern({ type: "BinaryExpression", operator: op, left: left, right: right }) } +function aExpr(op, left, right) { return Pattern({ type: "AssignmentExpression", operator: op, left: left, right: right }) } +function updExpr(op, arg, prefix) { return Pattern({ type: "UpdateExpression", operator: op, argument: arg, prefix: prefix }) } +function logExpr(op, left, right) { return Pattern({ type: "LogicalExpression", operator: op, left: left, right: right }) } + +function condExpr(test, cons, alt) { return Pattern({ type: "ConditionalExpression", test: test, consequent: cons, alternate: alt }) } +function seqExpr(exprs) { return Pattern({ type: "SequenceExpression", expressions: exprs }) } +function newExpr(callee, args) { return Pattern({ type: "NewExpression", callee: callee, arguments: args }) } +function callExpr(callee, args) { return Pattern({ type: "CallExpression", callee: callee, arguments: args }) } +function arrExpr(elts) { return Pattern({ type: "ArrayExpression", elements: elts }) } +function objExpr(elts) { return Pattern({ type: "ObjectExpression", properties: elts }) } +function objProp(key, value, kind) { return Pattern({ type: "Property", key: key, value: value, kind: kind }) } + +function arrPatt(elts) { return Pattern({ type: "ArrayPattern", elements: elts }) } +function objPatt(elts) { return Pattern({ type: "ObjectPattern", properties: elts }) } + +function localSrc(src) { return "(function(){ " + src + " })" } +function localPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([patt])))]) } +function blockSrc(src) { return "(function(){ { " + src + " } })" } +function blockPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]) } + +function assertBlockStmt(src, patt) { + blockPatt(patt).assert(Reflect.parse(blockSrc(src))); +} + +function assertBlockExpr(src, patt) { + assertBlockStmt(src, exprStmt(patt)); +} + +function assertBlockDecl(src, patt, builder) { + blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder})); +} + +function assertLocalStmt(src, patt) { + localPatt(patt).assert(Reflect.parse(localSrc(src))); +} + +function assertLocalExpr(src, patt) { + assertLocalStmt(src, exprStmt(patt)); +} + +function assertLocalDecl(src, patt) { + localPatt(patt).assert(Reflect.parse(localSrc(src))); +} + +function assertGlobalStmt(src, patt, builder) { + program([patt]).assert(Reflect.parse(src, {builder: builder})); +} + +function assertGlobalExpr(src, patt, builder) { + program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder})); + //assertStmt(src, exprStmt(patt)); +} + +function assertGlobalDecl(src, patt) { + program([patt]).assert(Reflect.parse(src)); +} + +function assertProg(src, patt) { + program(patt).assert(Reflect.parse(src)); +} + +function assertStmt(src, patt) { + assertLocalStmt(src, patt); + assertGlobalStmt(src, patt); + assertBlockStmt(src, patt); +} + +function assertExpr(src, patt) { + assertLocalExpr(src, patt); + assertGlobalExpr(src, patt); + assertBlockExpr(src, patt); +} + +function assertDecl(src, patt) { + assertLocalDecl(src, patt); + assertGlobalDecl(src, patt); + assertBlockDecl(src, patt); +} + +function assertError(src, errorType) { + try { + Reflect.parse(src); + } catch (e) { + return; + } + throw new Error("expected " + errorType.name + " for " + uneval(src)); +} + + +// general tests + +// NB: These are useful but for now jit-test doesn't do I/O reliably. + +//program(_).assert(Reflect.parse(snarf('data/flapjax.txt'))); +//program(_).assert(Reflect.parse(snarf('data/jquery-1.4.2.txt'))); +//program(_).assert(Reflect.parse(snarf('data/prototype.js'))); +//program(_).assert(Reflect.parse(snarf('data/dojo.js.uncompressed.js'))); +//program(_).assert(Reflect.parse(snarf('data/mootools-1.2.4-core-nc.js'))); + + +// declarations + +assertDecl("var x = 1, y = 2, z = 3", + varDecl([declarator(ident("x"), lit(1)), + declarator(ident("y"), lit(2)), + declarator(ident("z"), lit(3))])); +assertDecl("var x, y, z", + varDecl([declarator(ident("x"), null), + declarator(ident("y"), null), + declarator(ident("z"), null)])); +assertDecl("function foo() { }", + funDecl(ident("foo"), [], blockStmt([]))); +assertDecl("function foo() { return 42 }", + funDecl(ident("foo"), [], blockStmt([returnStmt(lit(42))]))); + + +// Bug 591437: rebound args have their defs turned into uses +assertDecl("function f(a) { function a() { } }", + funDecl(ident("f"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))]))); +assertDecl("function f(a,b,c) { function b() { } }", + funDecl(ident("f"), [ident("a"),ident("b"),ident("c")], blockStmt([funDecl(ident("b"), [], blockStmt([]))]))); + +// expressions + +assertExpr("true", lit(true)); +assertExpr("false", lit(false)); +assertExpr("42", lit(42)); +assertExpr("(/asdf/)", lit(/asdf/)); +assertExpr("this", thisExpr); +assertExpr("foo", ident("foo")); +assertExpr("foo.bar", dotExpr(ident("foo"), ident("bar"))); +assertExpr("foo[bar]", memExpr(ident("foo"), ident("bar"))); +assertExpr("(function(){})", funExpr(null, [], blockStmt([]))); +assertExpr("(function f() {})", funExpr(ident("f"), [], blockStmt([]))); +assertExpr("(function f(x,y,z) {})", funExpr(ident("f"), [ident("x"),ident("y"),ident("z")], blockStmt([]))); +assertExpr("(++x)", updExpr("++", ident("x"), true)); +assertExpr("(x++)", updExpr("++", ident("x"), false)); +assertExpr("(+x)", unExpr("+", ident("x"))); +assertExpr("(-x)", unExpr("-", ident("x"))); +assertExpr("(!x)", unExpr("!", ident("x"))); +assertExpr("(~x)", unExpr("~", ident("x"))); +assertExpr("(delete x)", unExpr("delete", ident("x"))); +assertExpr("(typeof x)", unExpr("typeof", ident("x"))); +assertExpr("(void x)", unExpr("void", ident("x"))); +assertExpr("(x == y)", binExpr("==", ident("x"), ident("y"))); +assertExpr("(x != y)", binExpr("!=", ident("x"), ident("y"))); +assertExpr("(x === y)", binExpr("===", ident("x"), ident("y"))); +assertExpr("(x !== y)", binExpr("!==", ident("x"), ident("y"))); +assertExpr("(x < y)", binExpr("<", ident("x"), ident("y"))); +assertExpr("(x <= y)", binExpr("<=", ident("x"), ident("y"))); +assertExpr("(x > y)", binExpr(">", ident("x"), ident("y"))); +assertExpr("(x >= y)", binExpr(">=", ident("x"), ident("y"))); +assertExpr("(x << y)", binExpr("<<", ident("x"), ident("y"))); +assertExpr("(x >> y)", binExpr(">>", ident("x"), ident("y"))); +assertExpr("(x >>> y)", binExpr(">>>", ident("x"), ident("y"))); +assertExpr("(x + y)", binExpr("+", ident("x"), ident("y"))); +assertExpr("(w + x + y + z)", binExpr("+", binExpr("+", binExpr("+", ident("w"), ident("x")), ident("y")), ident("z"))); +assertExpr("(x - y)", binExpr("-", ident("x"), ident("y"))); +assertExpr("(w - x - y - z)", binExpr("-", binExpr("-", binExpr("-", ident("w"), ident("x")), ident("y")), ident("z"))); +assertExpr("(x * y)", binExpr("*", ident("x"), ident("y"))); +assertExpr("(x / y)", binExpr("/", ident("x"), ident("y"))); +assertExpr("(x % y)", binExpr("%", ident("x"), ident("y"))); +assertExpr("(x | y)", binExpr("|", ident("x"), ident("y"))); +assertExpr("(x ^ y)", binExpr("^", ident("x"), ident("y"))); +assertExpr("(x & y)", binExpr("&", ident("x"), ident("y"))); +assertExpr("(x in y)", binExpr("in", ident("x"), ident("y"))); +assertExpr("(x instanceof y)", binExpr("instanceof", ident("x"), ident("y"))); +assertExpr("(x = y)", aExpr("=", ident("x"), ident("y"))); +assertExpr("(x += y)", aExpr("+=", ident("x"), ident("y"))); +assertExpr("(x -= y)", aExpr("-=", ident("x"), ident("y"))); +assertExpr("(x *= y)", aExpr("*=", ident("x"), ident("y"))); +assertExpr("(x /= y)", aExpr("/=", ident("x"), ident("y"))); +assertExpr("(x %= y)", aExpr("%=", ident("x"), ident("y"))); +assertExpr("(x <<= y)", aExpr("<<=", ident("x"), ident("y"))); +assertExpr("(x >>= y)", aExpr(">>=", ident("x"), ident("y"))); +assertExpr("(x >>>= y)", aExpr(">>>=", ident("x"), ident("y"))); +assertExpr("(x |= y)", aExpr("|=", ident("x"), ident("y"))); +assertExpr("(x ^= y)", aExpr("^=", ident("x"), ident("y"))); +assertExpr("(x &= y)", aExpr("&=", ident("x"), ident("y"))); +assertExpr("(x || y)", logExpr("||", ident("x"), ident("y"))); +assertExpr("(x && y)", logExpr("&&", ident("x"), ident("y"))); +assertExpr("(w || x || y || z)", logExpr("||", logExpr("||", logExpr("||", ident("w"), ident("x")), ident("y")), ident("z"))) +assertExpr("(x ? y : z)", condExpr(ident("x"), ident("y"), ident("z"))); +assertExpr("(x,y)", seqExpr([ident("x"),ident("y")])) +assertExpr("(x,y,z)", seqExpr([ident("x"),ident("y"),ident("z")])) +assertExpr("(a,b,c,d,e,f,g)", seqExpr([ident("a"),ident("b"),ident("c"),ident("d"),ident("e"),ident("f"),ident("g")])); +assertExpr("(new Object)", newExpr(ident("Object"), [])); +assertExpr("(new Object())", newExpr(ident("Object"), [])); +assertExpr("(new Object(42))", newExpr(ident("Object"), [lit(42)])); +assertExpr("(new Object(1,2,3))", newExpr(ident("Object"), [lit(1),lit(2),lit(3)])); +assertExpr("(String())", callExpr(ident("String"), [])); +assertExpr("(String(42))", callExpr(ident("String"), [lit(42)])); +assertExpr("(String(1,2,3))", callExpr(ident("String"), [lit(1),lit(2),lit(3)])); +assertExpr("[]", arrExpr([])); +assertExpr("[1]", arrExpr([lit(1)])); +assertExpr("[1,2]", arrExpr([lit(1),lit(2)])); +assertExpr("[1,2,3]", arrExpr([lit(1),lit(2),lit(3)])); +assertExpr("[1,,2,3]", arrExpr([lit(1),,lit(2),lit(3)])); +assertExpr("[1,,,2,3]", arrExpr([lit(1),,,lit(2),lit(3)])); +assertExpr("[1,,,2,,3]", arrExpr([lit(1),,,lit(2),,lit(3)])); +assertExpr("[1,,,2,,,3]", arrExpr([lit(1),,,lit(2),,,lit(3)])); +assertExpr("[,1,2,3]", arrExpr([,lit(1),lit(2),lit(3)])); +assertExpr("[,,1,2,3]", arrExpr([,,lit(1),lit(2),lit(3)])); +assertExpr("[,,,1,2,3]", arrExpr([,,,lit(1),lit(2),lit(3)])); +assertExpr("[,,,1,2,3,]", arrExpr([,,,lit(1),lit(2),lit(3)])); +assertExpr("[,,,1,2,3,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined])); +assertExpr("[,,,1,2,3,,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined,undefined])); +assertExpr("[,,,,,]", arrExpr([undefined,undefined,undefined,undefined,undefined])); +assertExpr("({})", objExpr([])); +assertExpr("({x:1})", objExpr([objProp(ident("x"), lit(1), "init")])); +assertExpr("({x:1, y:2})", objExpr([objProp(ident("x"), lit(1), "init"), + objProp(ident("y"), lit(2), "init")])); +assertExpr("({x:1, y:2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), + objProp(ident("y"), lit(2), "init"), + objProp(ident("z"), lit(3), "init") ])); +assertExpr("({x:1, 'y':2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), + objProp(lit("y"), lit(2), "init"), + objProp(ident("z"), lit(3), "init") ])); +assertExpr("({'x':1, 'y':2, z:3})", objExpr([objProp(lit("x"), lit(1), "init"), + objProp(lit("y"), lit(2), "init"), + objProp(ident("z"), lit(3), "init") ])); +assertExpr("({'x':1, 'y':2, 3:3})", objExpr([objProp(lit("x"), lit(1), "init"), + objProp(lit("y"), lit(2), "init"), + objProp(lit(3), lit(3), "init") ])); + +// Bug 571617: eliminate constant-folding +assertExpr("2 + 3", binExpr("+", lit(2), lit(3))); + +// Bug 632026: constant-folding +assertExpr("typeof(0?0:a)", unExpr("typeof", condExpr(lit(0), lit(0), ident("a")))); + +// Bug 632056: constant-folding +program([exprStmt(ident("f")), + ifStmt(lit(1), + funDecl(ident("f"), [], blockStmt([])), + null)]).assert(Reflect.parse("f; if (1) function f(){}")); + +// statements + +assertStmt("throw 42", throwStmt(lit(42))); +assertStmt("for (;;) break", forStmt(null, null, null, breakStmt(null))); +assertStmt("for (x; y; z) break", forStmt(ident("x"), ident("y"), ident("z"), breakStmt(null))); +assertStmt("for (var x; y; z) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), ident("z"), breakStmt(null))); +assertStmt("for (var x = 42; y; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), ident("y"), ident("z"), breakStmt(null))); +assertStmt("for (x; ; z) break", forStmt(ident("x"), null, ident("z"), breakStmt(null))); +assertStmt("for (var x; ; z) break", forStmt(varDecl([declarator(ident("x"), null)]), null, ident("z"), breakStmt(null))); +assertStmt("for (var x = 42; ; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), null, ident("z"), breakStmt(null))); +assertStmt("for (x; y; ) break", forStmt(ident("x"), ident("y"), null, breakStmt(null))); +assertStmt("for (var x; y; ) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), null, breakStmt(null))); +assertStmt("for (var x = 42; y; ) break", forStmt(varDecl([declarator(ident("x"),lit(42))]), ident("y"), null, breakStmt(null))); +assertStmt("for (var x in y) break", forInStmt(varDecl([declarator(ident("x"),null)]), ident("y"), breakStmt(null))); +assertStmt("for (x in y) break", forInStmt(ident("x"), ident("y"), breakStmt(null))); +assertStmt("{ }", blockStmt([])); +assertStmt("{ throw 1; throw 2; throw 3; }", blockStmt([ throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))])); +assertStmt(";", emptyStmt); +assertStmt("if (foo) throw 42;", ifStmt(ident("foo"), throwStmt(lit(42)), null)); +assertStmt("if (foo) throw 42; else true;", ifStmt(ident("foo"), throwStmt(lit(42)), exprStmt(lit(true)))); +assertStmt("if (foo) { throw 1; throw 2; throw 3; }", + ifStmt(ident("foo"), + blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), + null)); +assertStmt("if (foo) { throw 1; throw 2; throw 3; } else true;", + ifStmt(ident("foo"), + blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), + exprStmt(lit(true)))); +assertStmt("foo: for(;;) break foo;", labStmt(ident("foo"), forStmt(null, null, null, breakStmt(ident("foo"))))); +assertStmt("foo: for(;;) continue foo;", labStmt(ident("foo"), forStmt(null, null, null, continueStmt(ident("foo"))))); +assertStmt("with (obj) { }", withStmt(ident("obj"), blockStmt([]))); +assertStmt("with (obj) { obj; }", withStmt(ident("obj"), blockStmt([exprStmt(ident("obj"))]))); +assertStmt("while (foo) { }", whileStmt(ident("foo"), blockStmt([]))); +assertStmt("while (foo) { foo; }", whileStmt(ident("foo"), blockStmt([exprStmt(ident("foo"))]))); +assertStmt("do { } while (foo);", doStmt(blockStmt([]), ident("foo"))); +assertStmt("do { foo; } while (foo)", doStmt(blockStmt([exprStmt(ident("foo"))]), ident("foo"))); +assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; }", + switchStmt(ident("foo"), + [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), + caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), + defaultClause([ exprStmt(lit(3)) ]) ])); +assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; case 42: 42; }", + switchStmt(ident("foo"), + [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), + caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), + defaultClause([ exprStmt(lit(3)) ]), + caseClause(lit(42), [ exprStmt(lit(42)) ]) ])); +assertStmt("try { } catch (e) { }", + tryStmt(blockStmt([]), + [], + [ catchClause(ident("e"), null, blockStmt([])) ], + null)); +assertStmt("try { } catch (e) { } finally { }", + tryStmt(blockStmt([]), + [], + [ catchClause(ident("e"), null, blockStmt([])) ], + blockStmt([]))); +assertStmt("try { } finally { }", + tryStmt(blockStmt([]), + [], + [], + blockStmt([]))); + +// redeclarations (TOK_NAME nodes with lexdef) + +assertStmt("function f() { function g() { } function g() { } }", + funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), + funDecl(ident("g"), [], blockStmt([]))]))); + +assertStmt("function f() { function g() { } function g() { return 42 } }", + funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), + funDecl(ident("g"), [], blockStmt([returnStmt(lit(42))]))]))); + +assertStmt("function f() { var x = 42; var x = 43; }", + funDecl(ident("f"), [], blockStmt([varDecl([declarator(ident("x"),lit(42))]), + varDecl([declarator(ident("x"),lit(43))])]))); + +// getters and setters + + assertExpr("({ get x() { return 42 } })", + objExpr([ objProp(ident("x"), + funExpr(null, [], blockStmt([returnStmt(lit(42))])), + "get" ) ])); + assertExpr("({ set x(v) { return 42 } })", + objExpr([ objProp(ident("x"), + funExpr(null, [ident("v")], blockStmt([returnStmt(lit(42))])), + "set" ) ])); + +} + +exports.testReflect = testReflect; + +}(typeof exports === 'undefined' ? this : exports)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js new file mode 100644 index 0000000..32ca3fa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js @@ -0,0 +1,66 @@ +/* + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Ariya Hidayat + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint node:true */ + +(function () { + 'use strict'; + + var child = require('child_process'), + nodejs = '"' + process.execPath + '"', + ret = 0, + suites, + index; + + suites = [ + 'runner', + 'compat' + ]; + + function nextTest() { + var suite = suites[index]; + + if (index < suites.length) { + child.exec(nodejs + ' ./test/' + suite + '.js', function (err, stdout, stderr) { + if (stdout) { + process.stdout.write(suite + ': ' + stdout); + } + if (stderr) { + process.stderr.write(suite + ': ' + stderr); + } + if (err) { + ret = err.code; + } + index += 1; + nextTest(); + }); + } else { + process.exit(ret); + } + } + + index = 0; + nextTest(); +}()); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js new file mode 100644 index 0000000..c1a3fc9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js @@ -0,0 +1,387 @@ +/* + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat + Copyright (C) 2011 Yusuke Suzuki + Copyright (C) 2011 Arpad Borsos + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/*jslint browser:true node:true */ +/*global esprima:true, testFixture:true */ + +var runTests; + +// Special handling for regular expression literal since we need to +// convert it to a string literal, otherwise it will be decoded +// as object "{}" and the regular expression would be lost. +function adjustRegexLiteral(key, value) { + 'use strict'; + if (key === 'value' && value instanceof RegExp) { + value = value.toString(); + } + return value; +} + +function NotMatchingError(expected, actual) { + 'use strict'; + Error.call(this, 'Expected '); + this.expected = expected; + this.actual = actual; +} +NotMatchingError.prototype = new Error(); + +function errorToObject(e) { + 'use strict'; + var msg = e.toString(); + + // Opera 9.64 produces an non-standard string in toString(). + if (msg.substr(0, 6) !== 'Error:') { + if (typeof e.message === 'string') { + msg = 'Error: ' + e.message; + } + } + + return { + index: e.index, + lineNumber: e.lineNumber, + column: e.column, + message: msg + }; +} + +function testParse(esprima, code, syntax) { + 'use strict'; + var expected, tree, actual, options, StringObject, i, len, err; + + // alias, so that JSLint does not complain. + StringObject = String; + + options = { + comment: (typeof syntax.comments !== 'undefined'), + range: true, + loc: true, + tokens: (typeof syntax.tokens !== 'undefined'), + raw: true, + tolerant: (typeof syntax.errors !== 'undefined') + }; + + if (typeof syntax.tokens !== 'undefined') { + if (syntax.tokens.length > 0) { + options.range = (typeof syntax.tokens[0].range !== 'undefined'); + options.loc = (typeof syntax.tokens[0].loc !== 'undefined'); + } + } + + if (typeof syntax.comments !== 'undefined') { + if (syntax.comments.length > 0) { + options.range = (typeof syntax.comments[0].range !== 'undefined'); + options.loc = (typeof syntax.comments[0].loc !== 'undefined'); + } + } + + expected = JSON.stringify(syntax, null, 4); + try { + tree = esprima.parse(code, options); + tree = (options.comment || options.tokens || options.tolerant) ? tree : tree.body[0]; + + if (options.tolerant) { + for (i = 0, len = tree.errors.length; i < len; i += 1) { + tree.errors[i] = errorToObject(tree.errors[i]); + } + } + + actual = JSON.stringify(tree, adjustRegexLiteral, 4); + + // Only to ensure that there is no error when using string object. + esprima.parse(new StringObject(code), options); + + } catch (e) { + throw new NotMatchingError(expected, e.toString()); + } + if (expected !== actual) { + throw new NotMatchingError(expected, actual); + } + + function filter(key, value) { + if (key === 'value' && value instanceof RegExp) { + value = value.toString(); + } + return (key === 'loc' || key === 'range') ? undefined : value; + } + + if (options.tolerant) { + return; + } + + + // Check again without any location info. + options.range = false; + options.loc = false; + expected = JSON.stringify(syntax, filter, 4); + try { + tree = esprima.parse(code, options); + tree = (options.comment || options.tokens) ? tree : tree.body[0]; + + if (options.tolerant) { + for (i = 0, len = tree.errors.length; i < len; i += 1) { + tree.errors[i] = errorToObject(tree.errors[i]); + } + } + + actual = JSON.stringify(tree, filter, 4); + } catch (e) { + throw new NotMatchingError(expected, e.toString()); + } + if (expected !== actual) { + throw new NotMatchingError(expected, actual); + } +} + +function testError(esprima, code, exception) { + 'use strict'; + var i, options, expected, actual, handleInvalidRegexFlag; + + // Different parsing options should give the same error. + options = [ + {}, + { comment: true }, + { raw: true }, + { raw: true, comment: true } + ]; + + // If handleInvalidRegexFlag is true, an invalid flag in a regular expression + // will throw an exception. In some old version V8, this is not the case + // and hence handleInvalidRegexFlag is false. + handleInvalidRegexFlag = false; + try { + 'test'.match(new RegExp('[a-z]', 'x')); + } catch (e) { + handleInvalidRegexFlag = true; + } + + expected = JSON.stringify(exception); + + for (i = 0; i < options.length; i += 1) { + + try { + esprima.parse(code, options[i]); + } catch (e) { + actual = JSON.stringify(errorToObject(e)); + } + + if (expected !== actual) { + + // Compensate for old V8 which does not handle invalid flag. + if (exception.message.indexOf('Invalid regular expression') > 0) { + if (typeof actual === 'undefined' && !handleInvalidRegexFlag) { + return; + } + } + + throw new NotMatchingError(expected, actual); + } + + } +} + +function testAPI(esprima, code, result) { + 'use strict'; + var expected, res, actual; + + expected = JSON.stringify(result.result, null, 4); + try { + if (typeof result.property !== 'undefined') { + res = esprima[result.property]; + } else { + res = esprima[result.call].apply(esprima, result.args); + } + actual = JSON.stringify(res, adjustRegexLiteral, 4); + } catch (e) { + throw new NotMatchingError(expected, e.toString()); + } + if (expected !== actual) { + throw new NotMatchingError(expected, actual); + } +} + +function runTest(esprima, code, result) { + 'use strict'; + if (result.hasOwnProperty('lineNumber')) { + testError(esprima, code, result); + } else if (result.hasOwnProperty('result')) { + testAPI(esprima, code, result); + } else { + testParse(esprima, code, result); + } +} + +if (typeof window !== 'undefined') { + // Run all tests in a browser environment. + runTests = function () { + 'use strict'; + var total = 0, + failures = 0, + category, + fixture, + source, + tick, + expected, + index, + len; + + function setText(el, str) { + if (typeof el.innerText === 'string') { + el.innerText = str; + } else { + el.textContent = str; + } + } + + function startCategory(category) { + var report, e; + report = document.getElementById('report'); + e = document.createElement('h4'); + setText(e, category); + report.appendChild(e); + } + + function reportSuccess(code) { + var report, e; + report = document.getElementById('report'); + e = document.createElement('pre'); + e.setAttribute('class', 'code'); + setText(e, code); + report.appendChild(e); + } + + function reportFailure(code, expected, actual) { + var report, e; + + report = document.getElementById('report'); + + e = document.createElement('p'); + setText(e, 'Code:'); + report.appendChild(e); + + e = document.createElement('pre'); + e.setAttribute('class', 'code'); + setText(e, code); + report.appendChild(e); + + e = document.createElement('p'); + setText(e, 'Expected'); + report.appendChild(e); + + e = document.createElement('pre'); + e.setAttribute('class', 'expected'); + setText(e, expected); + report.appendChild(e); + + e = document.createElement('p'); + setText(e, 'Actual'); + report.appendChild(e); + + e = document.createElement('pre'); + e.setAttribute('class', 'actual'); + setText(e, actual); + report.appendChild(e); + } + + setText(document.getElementById('version'), esprima.version); + + tick = new Date(); + for (category in testFixture) { + if (testFixture.hasOwnProperty(category)) { + startCategory(category); + fixture = testFixture[category]; + for (source in fixture) { + if (fixture.hasOwnProperty(source)) { + expected = fixture[source]; + total += 1; + try { + runTest(esprima, source, expected); + reportSuccess(source, JSON.stringify(expected, null, 4)); + } catch (e) { + failures += 1; + reportFailure(source, e.expected, e.actual); + } + } + } + } + } + tick = (new Date()) - tick; + + if (failures > 0) { + setText(document.getElementById('status'), total + ' tests. ' + + 'Failures: ' + failures + '. ' + tick + ' ms'); + } else { + setText(document.getElementById('status'), total + ' tests. ' + + 'No failure. ' + tick + ' ms'); + } + }; +} else { + (function () { + 'use strict'; + + var esprima = require('../esprima'), + vm = require('vm'), + fs = require('fs'), + total = 0, + failures = [], + tick = new Date(), + expected, + header; + + vm.runInThisContext(fs.readFileSync(__dirname + '/test.js', 'utf-8')); + + Object.keys(testFixture).forEach(function (category) { + Object.keys(testFixture[category]).forEach(function (source) { + total += 1; + expected = testFixture[category][source]; + try { + runTest(esprima, source, expected); + } catch (e) { + e.source = source; + failures.push(e); + } + }); + }); + tick = (new Date()) - tick; + + header = total + ' tests. ' + failures.length + ' failures. ' + + tick + ' ms'; + if (failures.length) { + console.error(header); + failures.forEach(function (failure) { + console.error(failure.source + ': Expected\n ' + + failure.expected.split('\n').join('\n ') + + '\nto match\n ' + failure.actual); + }); + } else { + console.log(header); + } + process.exit(failures.length === 0 ? 0 : 1); + }()); +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js new file mode 100644 index 0000000..780af55 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js @@ -0,0 +1,19764 @@ +/* + Copyright (C) 2012 Ariya Hidayat + Copyright (C) 2012 Joost-Wim Boekesteijn + Copyright (C) 2012 Yusuke Suzuki + Copyright (C) 2012 Arpad Borsos + Copyright (C) 2011 Ariya Hidayat + Copyright (C) 2011 Yusuke Suzuki + Copyright (C) 2011 Arpad Borsos + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +var testFixture = { + + 'Primary Expression': { + + 'this\n': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'ThisExpression', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 0 } + } + }], + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 0 } + }, + tokens: [{ + type: 'Keyword', + value: 'this', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }] + }, + + 'null\n': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: null, + raw: 'null', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 0 } + } + }], + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 0 } + }, + tokens: [{ + type: 'Null', + value: 'null', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }] + }, + + '\n 42\n\n': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }, + range: [5, 9], + loc: { + start: { line: 2, column: 4 }, + end: { line: 4, column: 0 } + } + }], + range: [5, 9], + loc: { + start: { line: 2, column: 4 }, + end: { line: 4, column: 0 } + }, + tokens: [{ + type: 'Numeric', + value: '42', + range: [5, 7], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }] + }, + + '(1 + 2 ) * 3': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Literal', + value: 1, + raw: '1', + range: [1, 2], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 2 } + } + }, + right: { + type: 'Literal', + value: 2, + raw: '2', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [1, 6], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 6 } + } + }, + right: { + type: 'Literal', + value: 3, + raw: '3', + range: [11, 12], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + } + + }, + + 'Grouping Operator': { + + '(1) + (2 ) + 3': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Literal', + value: 1, + raw: '1', + range: [1, 2], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 2 } + } + }, + right: { + type: 'Literal', + value: 2, + raw: '2', + range: [7, 8], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + right: { + type: 'Literal', + value: 3, + raw: '3', + range: [14, 15], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + + '4 + 5 << (6)': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '<<', + left: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Literal', + value: 4, + raw: '4', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 5, + raw: '5', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Literal', + value: 6, + raw: '6', + range: [10, 11], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + } + + }, + + 'Array Initializer': { + + 'x = []': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }], + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + }, + tokens: [{ + type: 'Identifier', + value: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, { + type: 'Punctuator', + value: '=', + range: [2, 3], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Punctuator', + value: '[', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: ']', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }] + }, + + 'x = [ ]': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x = [ 42 ]': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ArrayExpression', + elements: [{ + type: 'Literal', + value: 42, + raw: '42', + range: [6, 8], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 8 } + } + }], + range: [4, 10], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 10 } + } + }, + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + }, + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + }, + + 'x = [ 42, ]': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ArrayExpression', + elements: [{ + type: 'Literal', + value: 42, + raw: '42', + range: [6, 8], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 8 } + } + }], + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'x = [ ,, 42 ]': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ArrayExpression', + elements: [ + null, + null, + { + type: 'Literal', + value: 42, + raw: '42', + range: [9, 11], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 11 } + } + }], + range: [4, 13], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + 'x = [ 1, 2, 3, ]': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ArrayExpression', + elements: [{ + type: 'Literal', + value: 1, + raw: '1', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'Literal', + value: 2, + raw: '2', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, { + type: 'Literal', + value: 3, + raw: '3', + range: [12, 13], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 13 } + } + }], + range: [4, 16], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + 'x = [ 1, 2,, 3, ]': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ArrayExpression', + elements: [{ + type: 'Literal', + value: 1, + raw: '1', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'Literal', + value: 2, + raw: '2', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, null, { + type: 'Literal', + value: 3, + raw: '3', + range: [13, 14], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 14 } + } + }], + range: [4, 17], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + + '日本語 = []': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: '日本語', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [6, 8], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + + 'T\u203F = []': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'T\u203F', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'T\u200C = []': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'T\u200C', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'T\u200D = []': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'T\u200D', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + '\u2163\u2161 = []': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: '\u2163\u2161', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + '\u2163\u2161\u200A=\u2009[]': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: '\u2163\u2161', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + } + + }, + + 'Object Initializer': { + + 'x = {}': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [], + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x = { }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [], + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x = { answer: 42 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'answer', + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [14, 16], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 16 } + } + }, + kind: 'init', + range: [6, 16], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 16 } + } + }], + range: [4, 18], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 18 } + } + }, + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }, + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }, + + 'x = { if: 42 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'if', + range: [6, 8], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 8 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + kind: 'init', + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }], + range: [4, 14], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + 'x = { true: 42 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'true', + range: [6, 10], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 10 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [12, 14], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 14 } + } + }, + kind: 'init', + range: [6, 14], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 14 } + } + }], + range: [4, 16], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + 'x = { false: 42 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'false', + range: [6, 11], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 11 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [13, 15], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 15 } + } + }, + kind: 'init', + range: [6, 15], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 15 } + } + }], + range: [4, 17], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + + 'x = { null: 42 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'null', + range: [6, 10], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 10 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [12, 14], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 14 } + } + }, + kind: 'init', + range: [6, 14], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 14 } + } + }], + range: [4, 16], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + 'x = { "answer": 42 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Literal', + value: 'answer', + raw: '"answer"', + range: [6, 14], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 14 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [16, 18], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 18 } + } + }, + kind: 'init', + range: [6, 18], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 18 } + } + }], + range: [4, 20], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 20 } + } + }, + range: [0, 20], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 20 } + } + }, + range: [0, 20], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 20 } + } + }, + + 'x = { x: 1, x: 2 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [ + { + type: 'Property', + key: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + value: { + type: 'Literal', + value: 1, + raw: '1', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + kind: 'init', + range: [6, 10], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 10 } + } + }, + { + type: 'Property', + key: { + type: 'Identifier', + name: 'x', + range: [12, 13], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 13 } + } + }, + value: { + type: 'Literal', + value: 2, + raw: '2', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }, + kind: 'init', + range: [12, 16], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 16 } + } + } + ], + range: [4, 18], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 18 } + } + }, + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }, + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }, + + 'x = { get width() { return m_width } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'width', + range: [10, 15], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 15 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ReturnStatement', + argument: { + type: 'Identifier', + name: 'm_width', + range: [27, 34], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 34 } + } + }, + range: [20, 35], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 35 } + } + }], + range: [18, 36], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 36 } + } + }, + rest: null, + generator: false, + expression: false, + range: [18, 36], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 36 } + } + }, + kind: 'get', + range: [6, 36], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 36 } + } + }], + range: [4, 38], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 38 } + } + }, + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + } + }, + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + } + }, + + 'x = { get undef() {} }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'undef', + range: [10, 15], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 15 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [18, 20], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 20 } + } + }, + rest: null, + generator: false, + expression: false, + range: [18, 20], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 20 } + } + }, + kind: 'get', + range: [6, 20], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 20 } + } + }], + range: [4, 22], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + + 'x = { get if() {} }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'if', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [15, 17], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 17 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 17], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 17 } + } + }, + kind: 'get', + range: [6, 17], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 17 } + } + }], + range: [4, 19], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 19 } + } + }, + range: [0, 19], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 19 } + } + }, + range: [0, 19], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 19 } + } + }, + + 'x = { get true() {} }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'true', + range: [10, 14], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 14 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [17, 19], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 19 } + } + }, + rest: null, + generator: false, + expression: false, + range: [17, 19], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 19 } + } + }, + kind: 'get', + range: [6, 19], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 19 } + } + }], + range: [4, 21], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + + 'x = { get false() {} }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'false', + range: [10, 15], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 15 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [18, 20], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 20 } + } + }, + rest: null, + generator: false, + expression: false, + range: [18, 20], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 20 } + } + }, + kind: 'get', + range: [6, 20], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 20 } + } + }], + range: [4, 22], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + + 'x = { get null() {} }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'null', + range: [10, 14], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 14 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [17, 19], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 19 } + } + }, + rest: null, + generator: false, + expression: false, + range: [17, 19], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 19 } + } + }, + kind: 'get', + range: [6, 19], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 19 } + } + }], + range: [4, 21], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + + 'x = { get "undef"() {} }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Literal', + value: 'undef', + raw: '"undef"', + range: [10, 17], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 17 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [20, 22], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 22 } + } + }, + rest: null, + generator: false, + expression: false, + range: [20, 22], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 22 } + } + }, + kind: 'get', + range: [6, 22], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 22 } + } + }], + range: [4, 24], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 24 } + } + }, + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + } + }, + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + } + }, + + 'x = { get 10() {} }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Literal', + value: 10, + raw: '10', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [15, 17], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 17 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 17], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 17 } + } + }, + kind: 'get', + range: [6, 17], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 17 } + } + }], + range: [4, 19], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 19 } + } + }, + range: [0, 19], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 19 } + } + }, + range: [0, 19], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 19 } + } + }, + + 'x = { set width(w) { m_width = w } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'width', + range: [10, 15], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 15 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'w', + range: [16, 17], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 17 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'm_width', + range: [21, 28], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 28 } + } + }, + right: { + type: 'Identifier', + name: 'w', + range: [31, 32], + loc: { + start: { line: 1, column: 31 }, + end: { line: 1, column: 32 } + } + }, + range: [21, 32], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 32 } + } + }, + range: [21, 33], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 33 } + } + }], + range: [19, 34], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 34 } + } + }, + rest: null, + generator: false, + expression: false, + range: [19, 34], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 34 } + } + }, + kind: 'set', + range: [6, 34], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 34 } + } + }], + range: [4, 36], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + + 'x = { set if(w) { m_if = w } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'if', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'w', + range: [13, 14], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 14 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'm_if', + range: [18, 22], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 22 } + } + }, + right: { + type: 'Identifier', + name: 'w', + range: [25, 26], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 26 } + } + }, + range: [18, 26], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 26 } + } + }, + range: [18, 27], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 27 } + } + }], + range: [16, 28], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 28 } + } + }, + rest: null, + generator: false, + expression: false, + range: [16, 28], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 28 } + } + }, + kind: 'set', + range: [6, 28], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 28 } + } + }], + range: [4, 30], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 30 } + } + }, + range: [0, 30], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 30 } + } + }, + range: [0, 30], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 30 } + } + }, + + 'x = { set true(w) { m_true = w } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'true', + range: [10, 14], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 14 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'w', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'm_true', + range: [20, 26], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 26 } + } + }, + right: { + type: 'Identifier', + name: 'w', + range: [29, 30], + loc: { + start: { line: 1, column: 29 }, + end: { line: 1, column: 30 } + } + }, + range: [20, 30], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 30 } + } + }, + range: [20, 31], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 31 } + } + }], + range: [18, 32], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 32 } + } + }, + rest: null, + generator: false, + expression: false, + range: [18, 32], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 32 } + } + }, + kind: 'set', + range: [6, 32], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 32 } + } + }], + range: [4, 34], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 34 } + } + }, + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + }, + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + }, + + 'x = { set false(w) { m_false = w } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'false', + range: [10, 15], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 15 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'w', + range: [16, 17], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 17 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'm_false', + range: [21, 28], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 28 } + } + }, + right: { + type: 'Identifier', + name: 'w', + range: [31, 32], + loc: { + start: { line: 1, column: 31 }, + end: { line: 1, column: 32 } + } + }, + range: [21, 32], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 32 } + } + }, + range: [21, 33], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 33 } + } + }], + range: [19, 34], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 34 } + } + }, + rest: null, + generator: false, + expression: false, + range: [19, 34], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 34 } + } + }, + kind: 'set', + range: [6, 34], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 34 } + } + }], + range: [4, 36], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + + 'x = { set null(w) { m_null = w } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'null', + range: [10, 14], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 14 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'w', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'm_null', + range: [20, 26], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 26 } + } + }, + right: { + type: 'Identifier', + name: 'w', + range: [29, 30], + loc: { + start: { line: 1, column: 29 }, + end: { line: 1, column: 30 } + } + }, + range: [20, 30], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 30 } + } + }, + range: [20, 31], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 31 } + } + }], + range: [18, 32], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 32 } + } + }, + rest: null, + generator: false, + expression: false, + range: [18, 32], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 32 } + } + }, + kind: 'set', + range: [6, 32], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 32 } + } + }], + range: [4, 34], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 34 } + } + }, + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + }, + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + }, + + 'x = { set "null"(w) { m_null = w } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Literal', + value: 'null', + raw: '"null"', + range: [10, 16], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 16 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'w', + range: [17, 18], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 18 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'm_null', + range: [22, 28], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 28 } + } + }, + right: { + type: 'Identifier', + name: 'w', + range: [31, 32], + loc: { + start: { line: 1, column: 31 }, + end: { line: 1, column: 32 } + } + }, + range: [22, 32], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 32 } + } + }, + range: [22, 33], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 33 } + } + }], + range: [20, 34], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 34 } + } + }, + rest: null, + generator: false, + expression: false, + range: [20, 34], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 34 } + } + }, + kind: 'set', + range: [6, 34], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 34 } + } + }], + range: [4, 36], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + + 'x = { set 10(w) { m_null = w } }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Literal', + value: 10, + raw: '10', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'w', + range: [13, 14], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 14 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'm_null', + range: [18, 24], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 24 } + } + }, + right: { + type: 'Identifier', + name: 'w', + range: [27, 28], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 28 } + } + }, + range: [18, 28], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 28 } + } + }, + range: [18, 29], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 29 } + } + }], + range: [16, 30], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 30 } + } + }, + rest: null, + generator: false, + expression: false, + range: [16, 30], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 30 } + } + }, + kind: 'set', + range: [6, 30], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 30 } + } + }], + range: [4, 32], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 32 } + } + }, + range: [0, 32], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 32 } + } + }, + range: [0, 32], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 32 } + } + }, + + 'x = { get: 42 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'get', + range: [6, 9], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 9 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [11, 13], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 13 } + } + }, + kind: 'init', + range: [6, 13], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 13 } + } + }], + range: [4, 15], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + + 'x = { set: 43 }': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'set', + range: [6, 9], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 9 } + } + }, + value: { + type: 'Literal', + value: 43, + raw: '43', + range: [11, 13], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 13 } + } + }, + kind: 'init', + range: [6, 13], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 13 } + } + }], + range: [4, 15], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + } + + }, + + 'Comments': { + + '/* block comment */ 42': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [20, 22], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 22 } + } + }, + range: [20, 22], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 22 } + } + }, + + '42 /*The*/ /*Answer*/': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }], + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + }, + comments: [{ + type: 'Block', + value: 'The', + range: [3, 10], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 10 } + } + }, { + type: 'Block', + value: 'Answer', + range: [11, 21], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 21 } + } + }] + }, + + '42 /*the*/ /*answer*/': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [0, 2] + }, + range: [0, 21] + }], + range: [0, 21], + comments: [{ + type: 'Block', + value: 'the', + range: [3, 10] + }, { + type: 'Block', + value: 'answer', + range: [11, 21] + }] + }, + + '/* multiline\ncomment\nshould\nbe\nignored */ 42': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [42, 44], + loc: { + start: { line: 5, column: 11 }, + end: { line: 5, column: 13 } + } + }, + range: [42, 44], + loc: { + start: { line: 5, column: 11 }, + end: { line: 5, column: 13 } + } + }, + + '/*a\r\nb*/ 42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [9, 11], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }, + range: [9, 11], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }], + range: [9, 11], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + }, + comments: [{ + type: 'Block', + value: 'a\r\nb', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 3 } + } + }] + }, + + '/*a\rb*/ 42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [8, 10], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }, + range: [8, 10], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }], + range: [8, 10], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + }, + comments: [{ + type: 'Block', + value: 'a\rb', + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 3 } + } + }] + }, + + '/*a\nb*/ 42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [8, 10], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }, + range: [8, 10], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }], + range: [8, 10], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + }, + comments: [{ + type: 'Block', + value: 'a\nb', + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 3 } + } + }] + }, + + '/*a\nc*/ 42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }, + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + } + }], + loc: { + start: { line: 2, column: 4 }, + end: { line: 2, column: 6 } + }, + comments: [{ + type: 'Block', + value: 'a\nc', + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 3 } + } + }] + }, + + '// line comment\n42': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [16, 18], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + }, + range: [16, 18], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + }, + + '42 // line comment': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }], + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + }, + comments: [{ + type: 'Line', + value: ' line comment', + range: [3, 18], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 18 } + } + }] + }, + + '// Hello, world!\n42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [17, 19], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + }, + range: [17, 19], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + }], + range: [17, 19], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + }, + comments: [{ + type: 'Line', + value: ' Hello, world!', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }] + }, + + '// Hello, world!\n': { + type: 'Program', + body: [], + range: [17, 17], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 0 } + }, + comments: [{ + type: 'Line', + value: ' Hello, world!', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }] + }, + + '// Hallo, world!\n': { + type: 'Program', + body: [], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 0 } + }, + comments: [{ + type: 'Line', + value: ' Hallo, world!', + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }] + }, + + '//\n42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [3, 5], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + }, + range: [3, 5], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + }], + range: [3, 5], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + }, + comments: [{ + type: 'Line', + value: '', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }] + }, + + '//': { + type: 'Program', + body: [], + range: [2, 2], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 2 } + }, + comments: [{ + type: 'Line', + value: '', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }] + }, + + '// ': { + type: 'Program', + body: [], + range: [3, 3], + comments: [{ + type: 'Line', + value: ' ', + range: [0, 3] + }] + }, + + '/**/42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }, + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }], + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + }, + comments: [{ + type: 'Block', + value: '', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }] + }, + + '// Hello, world!\n\n// Another hello\n42': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [37, 39], + loc: { + start: { line: 4, column: 0 }, + end: { line: 4, column: 2 } + } + }, + range: [37, 39], + loc: { + start: { line: 4, column: 0 }, + end: { line: 4, column: 2 } + } + }], + range: [37, 39], + loc: { + start: { line: 4, column: 0 }, + end: { line: 4, column: 2 } + }, + comments: [{ + type: 'Line', + value: ' Hello, world!', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, { + type: 'Line', + value: ' Another hello', + range: [18, 36], + loc: { + start: { line: 3, column: 0 }, + end: { line: 3, column: 18 } + } + }] + }, + + 'if (x) { // Some comment\ndoThat(); }': { + type: 'Program', + body: [{ + type: 'IfStatement', + test: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + consequent: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'doThat', + range: [25, 31], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 6 } + } + }, + 'arguments': [], + range: [25, 33], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 8 } + } + }, + range: [25, 34], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 9 } + } + }], + range: [7, 36], + loc: { + start: { line: 1, column: 7 }, + end: { line: 2, column: 11 } + } + }, + alternate: null, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 11 } + } + }], + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 11 } + }, + comments: [{ + type: 'Line', + value: ' Some comment', + range: [9, 24], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 24 } + } + }] + }, + + 'switch (answer) { case 42: /* perfect */ bingo() }': { + type: 'Program', + body: [{ + type: 'SwitchStatement', + discriminant: { + type: 'Identifier', + name: 'answer', + range: [8, 14], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 14 } + } + }, + cases: [{ + type: 'SwitchCase', + test: { + type: 'Literal', + value: 42, + raw: '42', + range: [23, 25], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 25 } + } + }, + consequent: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'bingo', + range: [41, 46], + loc: { + start: { line: 1, column: 41 }, + end: { line: 1, column: 46 } + } + }, + 'arguments': [], + range: [41, 48], + loc: { + start: { line: 1, column: 41 }, + end: { line: 1, column: 48 } + } + }, + range: [41, 49], + loc: { + start: { line: 1, column: 41 }, + end: { line: 1, column: 49 } + } + }], + range: [18, 49], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 49 } + } + }], + range: [0, 50], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 50 } + } + }], + range: [0, 50], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 50 } + }, + comments: [{ + type: 'Block', + value: ' perfect ', + range: [27, 40], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 40 } + } + }] + } + + }, + + 'Numeric Literals': { + + '0': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0, + raw: '0', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + + '42': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42, + raw: '42', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + + '3': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 3, + raw: '3', + range: [0, 1] + }, + range: [0, 1] + }], + range: [0, 1], + tokens: [{ + type: 'Numeric', + value: '3', + range: [0, 1] + }] + }, + + '5': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 5, + raw: '5', + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + }, + tokens: [{ + type: 'Numeric', + value: '5', + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }] + }, + + '.14': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0.14, + raw: '.14', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + '3.14159': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 3.14159, + raw: '3.14159', + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + '6.02214179e+23': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 6.02214179e+23, + raw: '6.02214179e+23', + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + '1.492417830e-10': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 1.49241783e-10, + raw: '1.492417830e-10', + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + + '0x0': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0, + raw: '0x0', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + '0e+100': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0, + raw: '0e+100', + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + '0xabc': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0xabc, + raw: '0xabc', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + '0xdef': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0xdef, + raw: '0xdef', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + '0X1A': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0x1A, + raw: '0X1A', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + + '0x10': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0x10, + raw: '0x10', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + + '0x100': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0x100, + raw: '0x100', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + '0X04': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 0X04, + raw: '0X04', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + + '02': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 2, + raw: '02', + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + + '012': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 10, + raw: '012', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + '0012': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 10, + raw: '0012', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + } + + }, + + 'String Literals': { + + '"Hello"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello', + raw: '"Hello"', + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: '\n\r\t\v\b\f\\\'"\x00', + raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"', + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + + '"\\u0061"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'a', + raw: '"\\u0061"', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + + '"\\x61"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'a', + raw: '"\\x61"', + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + '"\\u00"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'u00', + raw: '"\\u00"', + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + '"\\xt"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'xt', + raw: '"\\xt"', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + '"Hello\\nworld"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\nworld', + raw: '"Hello\\nworld"', + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + '"Hello\\\nworld"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Helloworld', + raw: '"Hello\\\nworld"', + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 14 } + } + }, + + '"Hello\\02World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\u0002World', + raw: '"Hello\\02World"', + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + + '"Hello\\012World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\u000AWorld', + raw: '"Hello\\012World"', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + '"Hello\\122World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\122World', + raw: '"Hello\\122World"', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + '"Hello\\0122World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\u000A2World', + raw: '"Hello\\0122World"', + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + + '"Hello\\312World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\u00CAWorld', + raw: '"Hello\\312World"', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + '"Hello\\412World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\412World', + raw: '"Hello\\412World"', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + '"Hello\\812World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello812World', + raw: '"Hello\\812World"', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + '"Hello\\712World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\712World', + raw: '"Hello\\712World"', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + '"Hello\\0World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\u0000World', + raw: '"Hello\\0World"', + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + '"Hello\\\r\nworld"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Helloworld', + raw: '"Hello\\\r\nworld"', + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 15 } + } + }, + + '"Hello\\1World"': { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'Hello\u0001World', + raw: '"Hello\\1World"', + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + } + }, + + 'Regular Expression Literals': { + + 'var x = /[a-z]/i': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: '/[a-z]/i', + raw: '/[a-z]/i', + range: [8, 16], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 16 } + } + }, + range: [4, 16], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 16 } + } + }], + kind: 'var', + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }], + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + }, + tokens: [{ + type: 'Keyword', + value: 'var', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Identifier', + value: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: '=', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'RegularExpression', + value: '/[a-z]/i', + range: [8, 16], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 16 } + } + }] + }, + + 'var x = /[x-z]/i': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5] + }, + init: { + type: 'Literal', + value: '/[x-z]/i', + raw: '/[x-z]/i', + range: [8, 16] + }, + range: [4, 16] + }], + kind: 'var', + range: [0, 16] + }], + range: [0, 16], + tokens: [{ + type: 'Keyword', + value: 'var', + range: [0, 3] + }, { + type: 'Identifier', + value: 'x', + range: [4, 5] + }, { + type: 'Punctuator', + value: '=', + range: [6, 7] + }, { + type: 'RegularExpression', + value: '/[x-z]/i', + range: [8, 16] + }] + }, + + 'var x = /[a-c]/i': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: '/[a-c]/i', + raw: '/[a-c]/i', + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 16 } + } + }, + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 16 } + } + }], + kind: 'var', + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + }, + tokens: [{ + type: 'Keyword', + value: 'var', + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Identifier', + value: 'x', + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: '=', + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'RegularExpression', + value: '/[a-c]/i', + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 16 } + } + }] + }, + + 'var x = /[P QR]/i': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: '/[P QR]/i', + raw: '/[P QR]/i', + range: [8, 17], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 17 } + } + }, + range: [4, 17], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 17 } + } + }], + kind: 'var', + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }], + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + }, + tokens: [{ + type: 'Keyword', + value: 'var', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Identifier', + value: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: '=', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'RegularExpression', + value: '/[P QR]/i', + range: [8, 17], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 17 } + } + }] + }, + + 'var x = /foo\\/bar/': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: '/foo\\/bar/', + raw: '/foo\\/bar/', + range: [8, 18], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 18 } + } + }, + range: [4, 18], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 18 } + } + }], + kind: 'var', + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }], + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + }, + tokens: [{ + type: 'Keyword', + value: 'var', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Identifier', + value: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: '=', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'RegularExpression', + value: '/foo\\/bar/', + range: [8, 18], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 18 } + } + }] + }, + + 'var x = /=([^=\\s])+/g': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: '/=([^=\\s])+/g', + raw: '/=([^=\\s])+/g', + range: [8, 21], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 21 } + } + }, + range: [4, 21], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 21 } + } + }], + kind: 'var', + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }], + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + }, + tokens: [{ + type: 'Keyword', + value: 'var', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Identifier', + value: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: '=', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'RegularExpression', + value: '/=([^=\\s])+/g', + range: [8, 21], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 21 } + } + }] + }, + + 'var x = /[P QR]/\\u0067': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: '/[P QR]/g', + raw: '/[P QR]/\\u0067', + range: [8, 22], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 22 } + } + }, + range: [4, 22], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 22 } + } + }], + kind: 'var', + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }], + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + }, + tokens: [{ + type: 'Keyword', + value: 'var', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Identifier', + value: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: '=', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'RegularExpression', + value: '/[P QR]/\\u0067', + range: [8, 22], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 22 } + } + }] + }, + + 'var x = /[P QR]/\\g': { + type: 'Program', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: '/[P QR]/g', + raw: '/[P QR]/\\g', + range: [8, 18], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 18 } + } + }, + range: [4, 18], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 18 } + } + }], + kind: 'var', + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }], + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + }, + tokens: [{ + type: 'Keyword', + value: 'var', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, { + type: 'Identifier', + value: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'Punctuator', + value: '=', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, { + type: 'RegularExpression', + value: '/[P QR]/\\g', + range: [8, 18], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 18 } + } + }] + } + + }, + + 'Left-Hand-Side Expression': { + + 'new Button': { + type: 'ExpressionStatement', + expression: { + type: 'NewExpression', + callee: { + type: 'Identifier', + name: 'Button', + range: [4, 10], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 10 } + } + }, + 'arguments': [], + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + }, + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + }, + + 'new Button()': { + type: 'ExpressionStatement', + expression: { + type: 'NewExpression', + callee: { + type: 'Identifier', + name: 'Button', + range: [4, 10], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 10 } + } + }, + 'arguments': [], + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + + 'new new foo': { + type: 'ExpressionStatement', + expression: { + type: 'NewExpression', + callee: { + type: 'NewExpression', + callee: { + type: 'Identifier', + name: 'foo', + range: [8, 11], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 11 } + } + }, + 'arguments': [], + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + 'arguments': [], + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'new new foo()': { + type: 'ExpressionStatement', + expression: { + type: 'NewExpression', + callee: { + type: 'NewExpression', + callee: { + type: 'Identifier', + name: 'foo', + range: [8, 11], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 11 } + } + }, + 'arguments': [], + range: [4, 13], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 13 } + } + }, + 'arguments': [], + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + 'new foo().bar()': { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'MemberExpression', + computed: false, + object: { + type: 'NewExpression', + callee: { + type: 'Identifier', + name: 'foo', + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + 'arguments': [], + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + property: { + type: 'Identifier', + name: 'bar', + range: [10, 13], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + 'arguments': [], + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + range: [0, 15], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 15 } + } + }, + + 'new foo[bar]': { + type: 'ExpressionStatement', + expression: { + type: 'NewExpression', + callee: { + type: 'MemberExpression', + computed: true, + object: { + type: 'Identifier', + name: 'foo', + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + property: { + type: 'Identifier', + name: 'bar', + range: [8, 11], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 11 } + } + }, + range: [4, 12], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 12 } + } + }, + 'arguments': [], + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + + 'new foo.bar()': { + type: 'ExpressionStatement', + expression: { + type: 'NewExpression', + callee: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'foo', + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + property: { + type: 'Identifier', + name: 'bar', + range: [8, 11], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 11 } + } + }, + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + 'arguments': [], + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + '( new foo).bar()': { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'MemberExpression', + computed: false, + object: { + type: 'NewExpression', + callee: { + type: 'Identifier', + name: 'foo', + range: [6, 9], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 9 } + } + }, + 'arguments': [], + range: [2, 9], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 9 } + } + }, + property: { + type: 'Identifier', + name: 'bar', + range: [11, 14], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + 'arguments': [], + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + 'foo(bar, baz)': { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'foo', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'bar', + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, { + type: 'Identifier', + name: 'baz', + range: [9, 12], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 12 } + } + }], + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + '( foo )()': { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'foo', + range: [5, 8], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 8 } + } + }, + 'arguments': [], + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + 'universe.milkyway': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'milkyway', + range: [9, 17], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + + 'universe.milkyway.solarsystem': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'milkyway', + range: [9, 17], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + property: { + type: 'Identifier', + name: 'solarsystem', + range: [18, 29], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 29 } + } + }, + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 29 } + } + }, + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 29 } + } + }, + + 'universe.milkyway.solarsystem.Earth': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'MemberExpression', + computed: false, + object: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'milkyway', + range: [9, 17], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + property: { + type: 'Identifier', + name: 'solarsystem', + range: [18, 29], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 29 } + } + }, + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 29 } + } + }, + property: { + type: 'Identifier', + name: 'Earth', + range: [30, 35], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 35 } + } + }, + range: [0, 35], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 35 } + } + }, + range: [0, 35], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 35 } + } + }, + + 'universe[galaxyName, otherUselessName]': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: true, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'SequenceExpression', + expressions: [{ + type: 'Identifier', + name: 'galaxyName', + range: [9, 19], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 19 } + } + }, { + type: 'Identifier', + name: 'otherUselessName', + range: [21, 37], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 37 } + } + }], + range: [9, 37], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 37 } + } + }, + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + } + }, + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + } + }, + + 'universe[galaxyName]': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: true, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'galaxyName', + range: [9, 19], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 19 } + } + }, + range: [0, 20], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 20 } + } + }, + range: [0, 20], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 20 } + } + }, + + 'universe[42].galaxies': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'MemberExpression', + computed: true, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Literal', + value: 42, + raw: '42', + range: [9, 11], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + property: { + type: 'Identifier', + name: 'galaxies', + range: [13, 21], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + + 'universe(42).galaxies': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + 'arguments': [{ + type: 'Literal', + value: 42, + raw: '42', + range: [9, 11], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 11 } + } + }], + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + property: { + type: 'Identifier', + name: 'galaxies', + range: [13, 21], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + + 'universe(42).galaxies(14, 3, 77).milkyway': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'CallExpression', + callee: { + type: 'MemberExpression', + computed: false, + object: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + 'arguments': [{ + type: 'Literal', + value: 42, + raw: '42', + range: [9, 11], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 11 } + } + }], + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + property: { + type: 'Identifier', + name: 'galaxies', + range: [13, 21], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + 'arguments': [{ + type: 'Literal', + value: 14, + raw: '14', + range: [22, 24], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 24 } + } + }, { + type: 'Literal', + value: 3, + raw: '3', + range: [26, 27], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 27 } + } + }, { + type: 'Literal', + value: 77, + raw: '77', + range: [29, 31], + loc: { + start: { line: 1, column: 29 }, + end: { line: 1, column: 31 } + } + }], + range: [0, 32], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 32 } + } + }, + property: { + type: 'Identifier', + name: 'milkyway', + range: [33, 41], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 41 } + } + }, + range: [0, 41], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 41 } + } + }, + range: [0, 41], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 41 } + } + }, + + 'earth.asia.Indonesia.prepareForElection(2014)': { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'MemberExpression', + computed: false, + object: { + type: 'MemberExpression', + computed: false, + object: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'earth', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + property: { + type: 'Identifier', + name: 'asia', + range: [6, 10], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 10 } + } + }, + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + }, + property: { + type: 'Identifier', + name: 'Indonesia', + range: [11, 20], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 20 } + } + }, + range: [0, 20], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 20 } + } + }, + property: { + type: 'Identifier', + name: 'prepareForElection', + range: [21, 39], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 39 } + } + }, + range: [0, 39], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 39 } + } + }, + 'arguments': [{ + type: 'Literal', + value: 2014, + raw: '2014', + range: [40, 44], + loc: { + start: { line: 1, column: 40 }, + end: { line: 1, column: 44 } + } + }], + range: [0, 45], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 45 } + } + }, + range: [0, 45], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 45 } + } + }, + + 'universe.if': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'if', + range: [9, 11], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'universe.true': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'true', + range: [9, 13], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + 'universe.false': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'false', + range: [9, 14], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + 'universe.null': { + type: 'ExpressionStatement', + expression: { + type: 'MemberExpression', + computed: false, + object: { + type: 'Identifier', + name: 'universe', + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + property: { + type: 'Identifier', + name: 'null', + range: [9, 13], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + } + + }, + + 'Postfix Expressions': { + + 'x++': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + prefix: false, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + 'x--': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + prefix: false, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + 'eval++': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'eval', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + prefix: false, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'eval--': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'eval', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + prefix: false, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'arguments++': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'arguments', + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + prefix: false, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'arguments--': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'arguments', + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + prefix: false, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + } + + }, + + 'Unary Operators': { + + '++x': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'x', + range: [2, 3], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 3 } + } + }, + prefix: true, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + '--x': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'x', + range: [2, 3], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 3 } + } + }, + prefix: true, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + '++eval': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'eval', + range: [2, 6], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 6 } + } + }, + prefix: true, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + '--eval': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'eval', + range: [2, 6], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 6 } + } + }, + prefix: true, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + '++arguments': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'arguments', + range: [2, 11], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 11 } + } + }, + prefix: true, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + '--arguments': { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'arguments', + range: [2, 11], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 11 } + } + }, + prefix: true, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + '+x': { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: '+', + argument: { + type: 'Identifier', + name: 'x', + range: [1, 2], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + + '-x': { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: '-', + argument: { + type: 'Identifier', + name: 'x', + range: [1, 2], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + + '~x': { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: '~', + argument: { + type: 'Identifier', + name: 'x', + range: [1, 2], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + + '!x': { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: '!', + argument: { + type: 'Identifier', + name: 'x', + range: [1, 2], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + }, + + 'void x': { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: 'void', + argument: { + type: 'Identifier', + name: 'x', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'delete x': { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: 'delete', + argument: { + type: 'Identifier', + name: 'x', + range: [7, 8], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + + 'typeof x': { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: 'typeof', + argument: { + type: 'Identifier', + name: 'x', + range: [7, 8], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + } + + }, + + 'Multiplicative Operators': { + + 'x * y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'x / y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '/', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'x % y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '%', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + } + + }, + + 'Additive Operators': { + + 'x + y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'x - y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '-', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + } + + }, + + 'Bitwise Shift Operator': { + + 'x << y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '<<', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x >> y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '>>', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x >>> y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '>>>', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + } + + }, + + 'Relational Operators': { + + 'x < y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'x > y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '>', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'x <= y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '<=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x >= y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '>=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x in y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: 'in', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x instanceof y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: 'instanceof', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [13, 14], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + 'x < y < z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + } + + }, + + 'Equality Operators': { + + 'x == y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '==', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x != y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '!=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x === y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '===', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x !== y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '!==', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + } + + }, + + 'Binary Bitwise Operators': { + + 'x & y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '&', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'x ^ y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '^', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'x | y': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '|', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + } + + }, + + 'Binary Expressions': { + + 'x + y + z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x - y + z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'BinaryExpression', + operator: '-', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x + y - z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '-', + left: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x - y - z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '-', + left: { + type: 'BinaryExpression', + operator: '-', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x + y * z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x + y / z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '+', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'BinaryExpression', + operator: '/', + left: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x - y % z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '-', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'BinaryExpression', + operator: '%', + left: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x * y * z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x * y / z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '/', + left: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x * y % z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '%', + left: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x % y * z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'BinaryExpression', + operator: '%', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x << y << z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '<<', + left: { + type: 'BinaryExpression', + operator: '<<', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [10, 11], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'x | y | z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '|', + left: { + type: 'BinaryExpression', + operator: '|', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x & y & z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '&', + left: { + type: 'BinaryExpression', + operator: '&', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x ^ y ^ z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '^', + left: { + type: 'BinaryExpression', + operator: '^', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x & y | z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '|', + left: { + type: 'BinaryExpression', + operator: '&', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x | y ^ z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '|', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'BinaryExpression', + operator: '^', + left: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x | y & z': { + type: 'ExpressionStatement', + expression: { + type: 'BinaryExpression', + operator: '|', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'BinaryExpression', + operator: '&', + left: { + type: 'Identifier', + name: 'y', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + } + + }, + + 'Binary Logical Operators': { + + 'x || y': { + type: 'ExpressionStatement', + expression: { + type: 'LogicalExpression', + operator: '||', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x && y': { + type: 'ExpressionStatement', + expression: { + type: 'LogicalExpression', + operator: '&&', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'x || y || z': { + type: 'ExpressionStatement', + expression: { + type: 'LogicalExpression', + operator: '||', + left: { + type: 'LogicalExpression', + operator: '||', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [10, 11], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'x && y && z': { + type: 'ExpressionStatement', + expression: { + type: 'LogicalExpression', + operator: '&&', + left: { + type: 'LogicalExpression', + operator: '&&', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [10, 11], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'x || y && z': { + type: 'ExpressionStatement', + expression: { + type: 'LogicalExpression', + operator: '||', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'LogicalExpression', + operator: '&&', + left: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [10, 11], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 11 } + } + }, + range: [5, 11], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'x || y ^ z': { + type: 'ExpressionStatement', + expression: { + type: 'LogicalExpression', + operator: '||', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'BinaryExpression', + operator: '^', + left: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + right: { + type: 'Identifier', + name: 'z', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + range: [5, 10], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 10 } + } + }, + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + }, + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + } + + }, + + 'Conditional Operator': { + + 'y ? 1 : 2': { + type: 'ExpressionStatement', + expression: { + type: 'ConditionalExpression', + test: { + type: 'Identifier', + name: 'y', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + consequent: { + type: 'Literal', + value: 1, + raw: '1', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + alternate: { + type: 'Literal', + value: 2, + raw: '2', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x && y ? 1 : 2': { + type: 'ExpressionStatement', + expression: { + type: 'ConditionalExpression', + test: { + type: 'LogicalExpression', + operator: '&&', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + consequent: { + type: 'Literal', + value: 1, + raw: '1', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + alternate: { + type: 'Literal', + value: 2, + raw: '2', + range: [13, 14], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + } + + }, + + 'Assignment Operators': { + + 'x = 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'eval = 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'eval', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [7, 9], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'arguments = 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'arguments', + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [12, 14], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + 'x *= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '*=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x /= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '/=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x %= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '%=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x += 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '+=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x -= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '-=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x <<= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '<<=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [6, 8], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + + 'x >>= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '>>=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [6, 8], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + + 'x >>>= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '>>>=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [7, 9], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'x &= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '&=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x ^= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '^=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + 'x |= 42': { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '|=', + left: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [5, 7], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + } + + }, + + 'Block': { + + '{ foo }': { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'foo', + range: [2, 5], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 5 } + } + }, + range: [2, 6], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 6 } + } + }], + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + '{ doThis(); doThat(); }': { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'doThis', + range: [2, 8], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 8 } + } + }, + 'arguments': [], + range: [2, 10], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 10 } + } + }, + range: [2, 11], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 11 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'doThat', + range: [12, 18], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 18 } + } + }, + 'arguments': [], + range: [12, 20], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 20 } + } + }, + range: [12, 21], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 21 } + } + }], + range: [0, 23], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 23 } + } + }, + + '{}': { + type: 'BlockStatement', + body: [], + range: [0, 2], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 2 } + } + } + + }, + + 'Variable Statement': { + + 'var x': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: null, + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }], + kind: 'var', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + 'var x, y;': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: null, + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'y', + range: [7, 8], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 8 } + } + }, + init: null, + range: [7, 8], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 8 } + } + }], + kind: 'var', + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'var x = 42': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [8, 10], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 10 } + } + }, + range: [4, 10], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 10 } + } + }], + kind: 'var', + range: [0, 10], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 10 } + } + }, + + 'var eval = 42, arguments = 42': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'eval', + range: [4, 8], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 8 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [11, 13], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 13 } + } + }, + range: [4, 13], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'arguments', + range: [15, 24], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 24 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [27, 29], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 29 } + } + }, + range: [15, 29], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 29 } + } + }], + kind: 'var', + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 29 } + } + }, + + 'var x = 14, y = 3, z = 1977': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: { + type: 'Literal', + value: 14, + raw: '14', + range: [8, 10], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 10 } + } + }, + range: [4, 10], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 10 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'y', + range: [12, 13], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 13 } + } + }, + init: { + type: 'Literal', + value: 3, + raw: '3', + range: [16, 17], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 17 } + } + }, + range: [12, 17], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 17 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'z', + range: [19, 20], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 20 } + } + }, + init: { + type: 'Literal', + value: 1977, + raw: '1977', + range: [23, 27], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 27 } + } + }, + range: [19, 27], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 27 } + } + }], + kind: 'var', + range: [0, 27], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 27 } + } + }, + + 'var implements, interface, package': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'implements', + range: [4, 14], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 14 } + } + }, + init: null, + range: [4, 14], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 14 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'interface', + range: [16, 25], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 25 } + } + }, + init: null, + range: [16, 25], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 25 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'package', + range: [27, 34], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 34 } + } + }, + init: null, + range: [27, 34], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 34 } + } + }], + kind: 'var', + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + }, + + 'var private, protected, public, static': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'private', + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + init: null, + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'protected', + range: [13, 22], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 22 } + } + }, + init: null, + range: [13, 22], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 22 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'public', + range: [24, 30], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 30 } + } + }, + init: null, + range: [24, 30], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 30 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'static', + range: [32, 38], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 38 } + } + }, + init: null, + range: [32, 38], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 38 } + } + }], + kind: 'var', + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + } + } + + }, + + 'Let Statement': { + + 'let x': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: null, + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }], + kind: 'let', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + + '{ let x }': { + type: 'BlockStatement', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + init: null, + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }], + kind: 'let', + range: [2, 8], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 8 } + } + }], + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + '{ let x = 42 }': { + type: 'BlockStatement', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }], + kind: 'let', + range: [2, 13], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 13 } + } + }], + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + }, + + '{ let x = 14, y = 3, z = 1977 }': { + type: 'BlockStatement', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + init: { + type: 'Literal', + value: 14, + raw: '14', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'y', + range: [14, 15], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 15 } + } + }, + init: { + type: 'Literal', + value: 3, + raw: '3', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }, + range: [14, 19], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 19 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'z', + range: [21, 22], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 22 } + } + }, + init: { + type: 'Literal', + value: 1977, + raw: '1977', + range: [25, 29], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 29 } + } + }, + range: [21, 29], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 29 } + } + }], + kind: 'let', + range: [2, 30], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 30 } + } + }], + range: [0, 31], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 31 } + } + } + + }, + + 'Const Statement': { + + 'const x = 42': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }], + kind: 'const', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + + '{ const x = 42 }': { + type: 'BlockStatement', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [12, 14], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 14 } + } + }, + range: [8, 14], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 14 } + } + }], + kind: 'const', + range: [2, 15], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 15 } + } + }], + range: [0, 16], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 16 } + } + }, + + '{ const x = 14, y = 3, z = 1977 }': { + type: 'BlockStatement', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + init: { + type: 'Literal', + value: 14, + raw: '14', + range: [12, 14], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 14 } + } + }, + range: [8, 14], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 14 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'y', + range: [16, 17], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 17 } + } + }, + init: { + type: 'Literal', + value: 3, + raw: '3', + range: [20, 21], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 21 } + } + }, + range: [16, 21], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 21 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'z', + range: [23, 24], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 24 } + } + }, + init: { + type: 'Literal', + value: 1977, + raw: '1977', + range: [27, 31], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 31 } + } + }, + range: [23, 31], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 31 } + } + }], + kind: 'const', + range: [2, 32], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 32 } + } + }], + range: [0, 33], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 33 } + } + } + + }, + + 'Empty Statement': { + + ';': { + type: 'EmptyStatement', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + } + + }, + + 'Expression Statement': { + + 'x': { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, + + 'x, y': { + type: 'ExpressionStatement', + expression: { + type: 'SequenceExpression', + expressions: [{ + type: 'Identifier', + name: 'x', + range: [0, 1], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 1 } + } + }, { + type: 'Identifier', + name: 'y', + range: [3, 4], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 4 } + } + }], + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + + '\\u0061': { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'a', + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }, + + 'a\\u0061': { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'aa', + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 7], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 7 } + } + }, + + '\\ua': { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'ua', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + + 'a\\u': { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'au', + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + }, + range: [0, 3], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 3 } + } + } + + }, + + 'If Statement': { + + 'if (morning) goodMorning()': { + type: 'IfStatement', + test: { + type: 'Identifier', + name: 'morning', + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + consequent: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'goodMorning', + range: [13, 24], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 24 } + } + }, + 'arguments': [], + range: [13, 26], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 26 } + } + }, + range: [13, 26], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 26 } + } + }, + alternate: null, + range: [0, 26], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 26 } + } + }, + + 'if (morning) (function(){})': { + type: 'IfStatement', + test: { + type: 'Identifier', + name: 'morning', + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + consequent: { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [24, 26], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 26 } + } + }, + rest: null, + generator: false, + expression: false, + range: [14, 26], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 26 } + } + }, + range: [13, 27], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 27 } + } + }, + alternate: null, + range: [0, 27], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 27 } + } + }, + + 'if (morning) var x = 0;': { + type: 'IfStatement', + test: { + type: 'Identifier', + name: 'morning', + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + consequent: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [17, 18], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 18 } + } + }, + init: { + type: 'Literal', + value: 0, + raw: '0', + range: [21, 22], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 22 } + } + }, + range: [17, 22], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 22 } + } + }], + kind: 'var', + range: [13, 23], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 23 } + } + }, + alternate: null, + range: [0, 23], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 23 } + } + }, + + 'if (morning) function a(){}': { + type: 'IfStatement', + test: { + type: 'Identifier', + name: 'morning', + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + consequent: { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'a', + range: [22, 23], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 23 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [25, 27], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 27 } + } + }, + rest: null, + generator: false, + expression: false, + range: [13, 27], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 27 } + } + }, + alternate: null, + range: [0, 27], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 27 } + } + }, + + 'if (morning) goodMorning(); else goodDay()': { + type: 'IfStatement', + test: { + type: 'Identifier', + name: 'morning', + range: [4, 11], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 11 } + } + }, + consequent: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'goodMorning', + range: [13, 24], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 24 } + } + }, + 'arguments': [], + range: [13, 26], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 26 } + } + }, + range: [13, 27], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 27 } + } + }, + alternate: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'goodDay', + range: [33, 40], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 40 } + } + }, + 'arguments': [], + range: [33, 42], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 42 } + } + }, + range: [33, 42], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 42 } + } + }, + range: [0, 42], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 42 } + } + } + + }, + + 'Iteration Statements': { + + 'do keep(); while (true)': { + type: 'DoWhileStatement', + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'keep', + range: [3, 7], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 7 } + } + }, + 'arguments': [], + range: [3, 9], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 9 } + } + }, + range: [3, 10], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 10 } + } + }, + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [18, 22], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 23], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 23 } + } + }, + + 'do keep(); while (true);': { + type: 'DoWhileStatement', + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'keep', + range: [3, 7], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 7 } + } + }, + 'arguments': [], + range: [3, 9], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 9 } + } + }, + range: [3, 10], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 10 } + } + }, + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [18, 22], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + } + }, + + 'do { x++; y--; } while (x < 10)': { + type: 'DoWhileStatement', + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'x', + range: [5, 6], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 6 } + } + }, + prefix: false, + range: [5, 8], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 8 } + } + }, + range: [5, 9], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 9 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'y', + range: [10, 11], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 11 } + } + }, + prefix: false, + range: [10, 13], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 13 } + } + }, + range: [10, 14], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 14 } + } + }], + range: [3, 16], + loc: { + start: { line: 1, column: 3 }, + end: { line: 1, column: 16 } + } + }, + test: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'Identifier', + name: 'x', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }, + right: { + type: 'Literal', + value: 10, + raw: '10', + range: [28, 30], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 30 } + } + }, + range: [24, 30], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 30 } + } + }, + range: [0, 31], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 31 } + } + }, + + '{ do { } while (false) false }': { + type: 'BlockStatement', + body: [{ + type: 'DoWhileStatement', + body: { + type: 'BlockStatement', + body: [], + range: [5, 8], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 8 } + } + }, + test: { + type: 'Literal', + value: false, + raw: 'false', + range: [16, 21], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 21 } + } + }, + range: [2, 22], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 22 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: false, + raw: 'false', + range: [23, 28], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 28 } + } + }, + range: [23, 29], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 29 } + } + }], + range: [0, 30], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 30 } + } + }, + + 'while (true) doSomething()': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'doSomething', + range: [13, 24], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 24 } + } + }, + 'arguments': [], + range: [13, 26], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 26 } + } + }, + range: [13, 26], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 26 } + } + }, + range: [0, 26], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 26 } + } + }, + + 'while (x < 10) { x++; y--; }': { + type: 'WhileStatement', + test: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'Identifier', + name: 'x', + range: [7, 8], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 8 } + } + }, + right: { + type: 'Literal', + value: 10, + raw: '10', + range: [11, 13], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 13 } + } + }, + range: [7, 13], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 13 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'x', + range: [17, 18], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 18 } + } + }, + prefix: false, + range: [17, 20], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 20 } + } + }, + range: [17, 21], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 21 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'y', + range: [22, 23], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 23 } + } + }, + prefix: false, + range: [22, 25], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 25 } + } + }, + range: [22, 26], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 26 } + } + }], + range: [15, 28], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 28 } + } + }, + range: [0, 28], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 28 } + } + }, + + 'for(;;);': { + type: 'ForStatement', + init: null, + test: null, + update: null, + body: { + type: 'EmptyStatement', + range: [7, 8], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 8 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + + 'for(;;){}': { + type: 'ForStatement', + init: null, + test: null, + update: null, + body: { + type: 'BlockStatement', + body: [], + range: [7, 9], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + }, + + 'for(x = 0;;);': { + type: 'ForStatement', + init: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Literal', + value: 0, + raw: '0', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + test: null, + update: null, + body: { + type: 'EmptyStatement', + range: [12, 13], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + 'for(var x = 0;;);': { + type: 'ForStatement', + init: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + init: { + type: 'Literal', + value: 0, + raw: '0', + range: [12, 13], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 13 } + } + }, + range: [8, 13], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 13 } + } + }], + kind: 'var', + range: [4, 13], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 13 } + } + }, + test: null, + update: null, + body: { + type: 'EmptyStatement', + range: [16, 17], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + + 'for(let x = 0;;);': { + type: 'ForStatement', + init: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + init: { + type: 'Literal', + value: 0, + raw: '0', + range: [12, 13], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 13 } + } + }, + range: [8, 13], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 13 } + } + }], + kind: 'let', + range: [4, 13], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 13 } + } + }, + test: null, + update: null, + body: { + type: 'EmptyStatement', + range: [16, 17], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 17 } + } + }, + range: [0, 17], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 17 } + } + }, + + 'for(var x = 0, y = 1;;);': { + type: 'ForStatement', + init: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + init: { + type: 'Literal', + value: 0, + raw: '0', + range: [12, 13], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 13 } + } + }, + range: [8, 13], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'y', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }, + init: { + type: 'Literal', + value: 1, + raw: '1', + range: [19, 20], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 20 } + } + }, + range: [15, 20], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 20 } + } + }], + kind: 'var', + range: [4, 20], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 20 } + } + }, + test: null, + update: null, + body: { + type: 'EmptyStatement', + range: [23, 24], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 24 } + } + }, + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + } + }, + + 'for(x = 0; x < 42;);': { + type: 'ForStatement', + init: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Literal', + value: 0, + raw: '0', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + test: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'Identifier', + name: 'x', + range: [11, 12], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 12 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [15, 17], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 17 } + } + }, + range: [11, 17], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 17 } + } + }, + update: null, + body: { + type: 'EmptyStatement', + range: [19, 20], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 20 } + } + }, + range: [0, 20], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 20 } + } + }, + + 'for(x = 0; x < 42; x++);': { + type: 'ForStatement', + init: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Literal', + value: 0, + raw: '0', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + test: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'Identifier', + name: 'x', + range: [11, 12], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 12 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [15, 17], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 17 } + } + }, + range: [11, 17], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 17 } + } + }, + update: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'x', + range: [19, 20], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 20 } + } + }, + prefix: false, + range: [19, 22], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 22 } + } + }, + body: { + type: 'EmptyStatement', + range: [23, 24], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 24 } + } + }, + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + } + }, + + 'for(x = 0; x < 42; x++) process(x);': { + type: 'ForStatement', + init: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Literal', + value: 0, + raw: '0', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + test: { + type: 'BinaryExpression', + operator: '<', + left: { + type: 'Identifier', + name: 'x', + range: [11, 12], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 12 } + } + }, + right: { + type: 'Literal', + value: 42, + raw: '42', + range: [15, 17], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 17 } + } + }, + range: [11, 17], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 17 } + } + }, + update: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'x', + range: [19, 20], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 20 } + } + }, + prefix: false, + range: [19, 22], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 22 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'process', + range: [24, 31], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 31 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'x', + range: [32, 33], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 33 } + } + }], + range: [24, 34], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 34 } + } + }, + range: [24, 35], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 35 } + } + }, + range: [0, 35], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 35 } + } + }, + + 'for(x in list) process(x);': { + type: 'ForInStatement', + left: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + right: { + type: 'Identifier', + name: 'list', + range: [9, 13], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 13 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'process', + range: [15, 22], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 22 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'x', + range: [23, 24], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 24 } + } + }], + range: [15, 25], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 25 } + } + }, + range: [15, 26], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 26 } + } + }, + each: false, + range: [0, 26], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 26 } + } + }, + + 'for (var x in list) process(x);': { + type: 'ForInStatement', + left: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + init: null, + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }], + kind: 'var', + range: [5, 10], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 10 } + } + }, + right: { + type: 'Identifier', + name: 'list', + range: [14, 18], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 18 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'process', + range: [20, 27], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 27 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'x', + range: [28, 29], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 29 } + } + }], + range: [20, 30], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 30 } + } + }, + range: [20, 31], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 31 } + } + }, + each: false, + range: [0, 31], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 31 } + } + }, + + 'for (var x = 42 in list) process(x);': { + type: 'ForInStatement', + left: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [13, 15], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 15 } + } + }, + range: [9, 15], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 15 } + } + }], + kind: 'var', + range: [5, 15], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 15 } + } + }, + right: { + type: 'Identifier', + name: 'list', + range: [19, 23], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 23 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'process', + range: [25, 32], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 32 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'x', + range: [33, 34], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 34 } + } + }], + range: [25, 35], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 35 } + } + }, + range: [25, 36], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 36 } + } + }, + each: false, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + + 'for (let x in list) process(x);': { + type: 'ForInStatement', + left: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + init: null, + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }], + kind: 'let', + range: [5, 10], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 10 } + } + }, + right: { + type: 'Identifier', + name: 'list', + range: [14, 18], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 18 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'process', + range: [20, 27], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 27 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'x', + range: [28, 29], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 29 } + } + }], + range: [20, 30], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 30 } + } + }, + range: [20, 31], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 31 } + } + }, + each: false, + range: [0, 31], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 31 } + } + }, + + 'for (let x = 42 in list) process(x);': { + type: 'ForInStatement', + left: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + init: { + type: 'Literal', + value: 42, + raw: '42', + range: [13, 15], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 15 } + } + }, + range: [9, 15], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 15 } + } + }], + kind: 'let', + range: [5, 15], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 15 } + } + }, + right: { + type: 'Identifier', + name: 'list', + range: [19, 23], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 23 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'process', + range: [25, 32], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 32 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'x', + range: [33, 34], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 34 } + } + }], + range: [25, 35], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 35 } + } + }, + range: [25, 36], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 36 } + } + }, + each: false, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + + 'for (var i = function() { return 10 in [] } in list) process(x);': { + type: 'ForInStatement', + left: { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'i', + range: [9, 10], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 10 } + } + }, + init: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ReturnStatement', + argument: { + type: 'BinaryExpression', + operator: 'in', + left: { + type: 'Literal', + value: 10, + raw: '10', + range: [33, 35], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 35 } + } + }, + right: { + type: 'ArrayExpression', + elements: [], + range: [39, 41], + loc: { + start: { line: 1, column: 39 }, + end: { line: 1, column: 41 } + } + }, + range: [33, 41], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 41 } + } + }, + range: [26, 42], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 42 } + } + }], + range: [24, 43], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 43 } + } + }, + rest: null, + generator: false, + expression: false, + range: [13, 43], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 43 } + } + }, + range: [9, 43], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 43 } + } + }], + kind: 'var', + range: [5, 43], + loc: { + start: { line: 1, column: 5 }, + end: { line: 1, column: 43 } + } + }, + right: { + type: 'Identifier', + name: 'list', + range: [47, 51], + loc: { + start: { line: 1, column: 47 }, + end: { line: 1, column: 51 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'process', + range: [53, 60], + loc: { + start: { line: 1, column: 53 }, + end: { line: 1, column: 60 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'x', + range: [61, 62], + loc: { + start: { line: 1, column: 61 }, + end: { line: 1, column: 62 } + } + }], + range: [53, 63], + loc: { + start: { line: 1, column: 53 }, + end: { line: 1, column: 63 } + } + }, + range: [53, 64], + loc: { + start: { line: 1, column: 53 }, + end: { line: 1, column: 64 } + } + }, + each: false, + range: [0, 64], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 64 } + } + } + + }, + + 'continue statement': { + + 'while (true) { continue; }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [ + { + type: 'ContinueStatement', + label: null, + range: [15, 24], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 24 } + } + } + ], + range: [13, 26], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 26 } + } + }, + range: [0, 26], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 26 } + } + }, + + 'while (true) { continue }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [ + { + type: 'ContinueStatement', + label: null, + range: [15, 24], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 24 } + } + } + ], + range: [13, 25], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 25 } + } + }, + range: [0, 25], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 25 } + } + }, + + 'done: while (true) { continue done }': { + type: 'LabeledStatement', + label: { + type: 'Identifier', + name: 'done', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + body: { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [13, 17], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 17 } + } + }, + body: { + type: 'BlockStatement', + body: [ + { + type: 'ContinueStatement', + label: { + type: 'Identifier', + name: 'done', + range: [30, 34], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 34 } + } + }, + range: [21, 35], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 35 } + } + } + ], + range: [19, 36], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 36 } + } + }, + range: [6, 36], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + } + }, + + 'done: while (true) { continue done; }': { + type: 'LabeledStatement', + label: { + type: 'Identifier', + name: 'done', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + body: { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [13, 17], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 17 } + } + }, + body: { + type: 'BlockStatement', + body: [ + { + type: 'ContinueStatement', + label: { + type: 'Identifier', + name: 'done', + range: [30, 34], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 34 } + } + }, + range: [21, 35], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 35 } + } + } + ], + range: [19, 37], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 37 } + } + }, + range: [6, 37], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 37 } + } + }, + range: [0, 37], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 37 } + } + } + + }, + + 'break statement': { + + 'while (true) { break }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [ + { + type: 'BreakStatement', + label: null, + range: [15, 21], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 21 } + } + } + ], + range: [13, 22], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + + 'done: while (true) { break done }': { + type: 'LabeledStatement', + label: { + type: 'Identifier', + name: 'done', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + body: { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [13, 17], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 17 } + } + }, + body: { + type: 'BlockStatement', + body: [ + { + type: 'BreakStatement', + label: { + type: 'Identifier', + name: 'done', + range: [27, 31], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 31 } + } + }, + range: [21, 32], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 32 } + } + } + ], + range: [19, 33], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 33 } + } + }, + range: [6, 33], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 33 } + } + }, + range: [0, 33], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 33 } + } + }, + + 'done: while (true) { break done; }': { + type: 'LabeledStatement', + label: { + type: 'Identifier', + name: 'done', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + body: { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [13, 17], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 17 } + } + }, + body: { + type: 'BlockStatement', + body: [ + { + type: 'BreakStatement', + label: { + type: 'Identifier', + name: 'done', + range: [27, 31], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 31 } + } + }, + range: [21, 32], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 32 } + } + } + ], + range: [19, 34], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 34 } + } + }, + range: [6, 34], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 34 } + } + }, + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + } + + }, + + 'return statement': { + + '(function(){ return })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [ + { + type: 'ReturnStatement', + argument: null, + range: [13, 20], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 20 } + } + } + ], + range: [11, 21], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 21 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 21], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 21 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + }, + + '(function(){ return; })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [ + { + type: 'ReturnStatement', + argument: null, + range: [13, 20], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 20 } + } + } + ], + range: [11, 22], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 22 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 22], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 23], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 23 } + } + }, + + '(function(){ return x; })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [ + { + type: 'ReturnStatement', + argument: { + type: 'Identifier', + name: 'x', + range: [20, 21], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 21 } + } + }, + range: [13, 22], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 22 } + } + } + ], + range: [11, 24], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 24 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 24], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 24 } + } + }, + range: [0, 25], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 25 } + } + }, + + '(function(){ return x * y })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [ + { + type: 'ReturnStatement', + argument: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'Identifier', + name: 'x', + range: [20, 21], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 21 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }, + range: [20, 25], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 25 } + } + }, + range: [13, 26], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 26 } + } + } + ], + range: [11, 27], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 27 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 27], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 27 } + } + }, + range: [0, 28], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 28 } + } + } + }, + + 'with statement': { + + 'with (x) foo = bar': { + type: 'WithStatement', + object: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'foo', + range: [9, 12], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 12 } + } + }, + right: { + type: 'Identifier', + name: 'bar', + range: [15, 18], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 18 } + } + }, + range: [9, 18], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 18 } + } + }, + range: [9, 18], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 18 } + } + }, + range: [0, 18], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 18 } + } + }, + + 'with (x) foo = bar;': { + type: 'WithStatement', + object: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + body: { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'foo', + range: [9, 12], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 12 } + } + }, + right: { + type: 'Identifier', + name: 'bar', + range: [15, 18], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 18 } + } + }, + range: [9, 18], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 18 } + } + }, + range: [9, 19], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 19 } + } + }, + range: [0, 19], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 19 } + } + }, + + 'with (x) { foo = bar }': { + type: 'WithStatement', + object: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'foo', + range: [11, 14], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 14 } + } + }, + right: { + type: 'Identifier', + name: 'bar', + range: [17, 20], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 20 } + } + }, + range: [11, 20], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 20 } + } + }, + range: [11, 21], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 21 } + } + }], + range: [9, 22], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 22 } + } + }, + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + } + } + + }, + + 'switch statement': { + + 'switch (x) {}': { + type: 'SwitchStatement', + discriminant: { + type: 'Identifier', + name: 'x', + range: [8, 9], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 9 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, + + 'switch (answer) { case 42: hi(); break; }': { + type: 'SwitchStatement', + discriminant: { + type: 'Identifier', + name: 'answer', + range: [8, 14], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 14 } + } + }, + cases: [{ + type: 'SwitchCase', + test: { + type: 'Literal', + value: 42, + raw: '42', + range: [23, 25], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 25 } + } + }, + consequent: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'hi', + range: [27, 29], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 29 } + } + }, + 'arguments': [], + range: [27, 31], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 31 } + } + }, + range: [27, 32], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 32 } + } + }, { + type: 'BreakStatement', + label: null, + range: [33, 39], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 39 } + } + }], + range: [18, 39], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 39 } + } + }], + range: [0, 41], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 41 } + } + }, + + 'switch (answer) { case 42: hi(); break; default: break }': { + type: 'SwitchStatement', + discriminant: { + type: 'Identifier', + name: 'answer', + range: [8, 14], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 14 } + } + }, + cases: [{ + type: 'SwitchCase', + test: { + type: 'Literal', + value: 42, + raw: '42', + range: [23, 25], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 25 } + } + }, + consequent: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'hi', + range: [27, 29], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 29 } + } + }, + 'arguments': [], + range: [27, 31], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 31 } + } + }, + range: [27, 32], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 32 } + } + }, { + type: 'BreakStatement', + label: null, + range: [33, 39], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 39 } + } + }], + range: [18, 39], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 39 } + } + }, { + type: 'SwitchCase', + test: null, + consequent: [{ + type: 'BreakStatement', + label: null, + range: [49, 55], + loc: { + start: { line: 1, column: 49 }, + end: { line: 1, column: 55 } + } + }], + range: [40, 55], + loc: { + start: { line: 1, column: 40 }, + end: { line: 1, column: 55 } + } + }], + range: [0, 56], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 56 } + } + } + + }, + + 'Labelled Statements': { + + 'start: for (;;) break start': { + type: 'LabeledStatement', + label: { + type: 'Identifier', + name: 'start', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + body: { + type: 'ForStatement', + init: null, + test: null, + update: null, + body: { + type: 'BreakStatement', + label: { + type: 'Identifier', + name: 'start', + range: [22, 27], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 27 } + } + }, + range: [16, 27], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 27 } + } + }, + range: [7, 27], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 27 } + } + }, + range: [0, 27], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 27 } + } + }, + + 'start: while (true) break start': { + type: 'LabeledStatement', + label: { + type: 'Identifier', + name: 'start', + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, + body: { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [14, 18], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 18 } + } + }, + body: { + type: 'BreakStatement', + label: { + type: 'Identifier', + name: 'start', + range: [26, 31], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 31 } + } + }, + range: [20, 31], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 31 } + } + }, + range: [7, 31], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 31 } + } + }, + range: [0, 31], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 31 } + } + } + + }, + + 'throw statement': { + + 'throw x;': { + type: 'ThrowStatement', + argument: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + range: [0, 8], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 8 } + } + }, + + 'throw x * y': { + type: 'ThrowStatement', + argument: { + type: 'BinaryExpression', + operator: '*', + left: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + right: { + type: 'Identifier', + name: 'y', + range: [10, 11], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 11 } + } + }, + range: [6, 11], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 11 } + } + }, + range: [0, 11], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 11 } + } + }, + + 'throw { message: "Error" }': { + type: 'ThrowStatement', + argument: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'message', + range: [8, 15], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 15 } + } + }, + value: { + type: 'Literal', + value: 'Error', + raw: '"Error"', + range: [17, 24], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 24 } + } + }, + kind: 'init', + range: [8, 24], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 24 } + } + }], + range: [6, 26], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 26 } + } + }, + range: [0, 26], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 26 } + } + } + + }, + + 'try statement': { + + 'try { } catch (e) { }': { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [], + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'e', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }, + body: { + type: 'BlockStatement', + body: [], + range: [18, 21], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 21 } + } + }, + range: [8, 21], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 21 } + } + }], + finalizer: null, + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + } + }, + + 'try { } catch (eval) { }': { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [], + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'eval', + range: [15, 19], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 19 } + } + }, + body: { + type: 'BlockStatement', + body: [], + range: [21, 24], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 24 } + } + }, + range: [8, 24], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 24 } + } + }], + finalizer: null, + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + } + }, + + 'try { } catch (arguments) { }': { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [], + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'arguments', + range: [15, 24], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 24 } + } + }, + body: { + type: 'BlockStatement', + body: [], + range: [26, 29], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 29 } + } + }, + range: [8, 29], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 29 } + } + }], + finalizer: null, + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 29 } + } + }, + + 'try { } catch (e) { say(e) }': { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [], + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'e', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'say', + range: [20, 23], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 23 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'e', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }], + range: [20, 26], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 26 } + } + }, + range: [20, 27], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 27 } + } + }], + range: [18, 28], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 28 } + } + }, + range: [8, 28], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 28 } + } + }], + finalizer: null, + range: [0, 28], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 28 } + } + }, + + 'try { } finally { cleanup(stuff) }': { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [], + range: [4, 7], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 7 } + } + }, + guardedHandlers: [], + handlers: [], + finalizer: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'cleanup', + range: [18, 25], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 25 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'stuff', + range: [26, 31], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 31 } + } + }], + range: [18, 32], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 32 } + } + }, + range: [18, 33], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 33 } + } + }], + range: [16, 34], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 34 } + } + }, + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + }, + + 'try { doThat(); } catch (e) { say(e) }': { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'doThat', + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }, + 'arguments': [], + range: [6, 14], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 14 } + } + }, + range: [6, 15], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 15 } + } + }], + range: [4, 17], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 17 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'e', + range: [25, 26], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 26 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'say', + range: [30, 33], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 33 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'e', + range: [34, 35], + loc: { + start: { line: 1, column: 34 }, + end: { line: 1, column: 35 } + } + }], + range: [30, 36], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 36 } + } + }, + range: [30, 37], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 37 } + } + }], + range: [28, 38], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 38 } + } + }, + range: [18, 38], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 38 } + } + }], + finalizer: null, + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + } + }, + + 'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'doThat', + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }, + 'arguments': [], + range: [6, 14], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 14 } + } + }, + range: [6, 15], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 15 } + } + }], + range: [4, 17], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 17 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'e', + range: [25, 26], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 26 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'say', + range: [30, 33], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 33 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'e', + range: [34, 35], + loc: { + start: { line: 1, column: 34 }, + end: { line: 1, column: 35 } + } + }], + range: [30, 36], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 36 } + } + }, + range: [30, 37], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 37 } + } + }], + range: [28, 38], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 38 } + } + }, + range: [18, 38], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 38 } + } + }], + finalizer: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'cleanup', + range: [49, 56], + loc: { + start: { line: 1, column: 49 }, + end: { line: 1, column: 56 } + } + }, + 'arguments': [{ + type: 'Identifier', + name: 'stuff', + range: [57, 62], + loc: { + start: { line: 1, column: 57 }, + end: { line: 1, column: 62 } + } + }], + range: [49, 63], + loc: { + start: { line: 1, column: 49 }, + end: { line: 1, column: 63 } + } + }, + range: [49, 64], + loc: { + start: { line: 1, column: 49 }, + end: { line: 1, column: 64 } + } + }], + range: [47, 65], + loc: { + start: { line: 1, column: 47 }, + end: { line: 1, column: 65 } + } + }, + range: [0, 65], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 65 } + } + } + + }, + + 'debugger statement': { + + 'debugger;': { + type: 'DebuggerStatement', + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 9 } + } + } + + }, + + 'Function Definition': { + + 'function hello() { sayHi(); }': { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'hello', + range: [9, 14], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 14 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'sayHi', + range: [19, 24], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 24 } + } + }, + 'arguments': [], + range: [19, 26], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 26 } + } + }, + range: [19, 27], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 27 } + } + }], + range: [17, 29], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 29 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 29 } + } + }, + + 'function eval() { }': { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'eval', + range: [9, 13], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 13 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [16, 19], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 19 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 19], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 19 } + } + }, + + 'function arguments() { }': { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'arguments', + range: [9, 18], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 18 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [21, 24], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 24 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + } + }, + + 'function test(t, t) { }': { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'test', + range: [9, 13], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 13 } + } + }, + params: [{ + type: 'Identifier', + name: 't', + range: [14, 15], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 15 } + } + }, { + type: 'Identifier', + name: 't', + range: [17, 18], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 18 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [20, 23], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 23 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 23], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 23 } + } + }, + + '(function test(t, t) { })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'test', + range: [10, 14], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 14 } + } + }, + params: [{ + type: 'Identifier', + name: 't', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }, { + type: 'Identifier', + name: 't', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [21, 24], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 24 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 24], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 24 } + } + }, + range: [0, 25], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 25 } + } + }, + + 'function eval() { function inner() { "use strict" } }': { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'eval', + range: [9, 13], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 13 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'inner', + range: [27, 32], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 32 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '\"use strict\"', + range: [37, 49], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 49 } + } + }, + range: [37, 50], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 50 } + } + }], + range: [35, 51], + loc: { + start: { line: 1, column: 35 }, + end: { line: 1, column: 51 } + } + }, + rest: null, + generator: false, + expression: false, + range: [18, 51], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 51 } + } + }], + range: [16, 53], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 53 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 53], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 53 } + } + }, + + 'function hello(a) { sayHi(); }': { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'hello', + range: [9, 14], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 14 } + } + }, + params: [{ + type: 'Identifier', + name: 'a', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'sayHi', + range: [20, 25], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 25 } + } + }, + 'arguments': [], + range: [20, 27], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 27 } + } + }, + range: [20, 28], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 28 } + } + }], + range: [18, 30], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 30 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 30], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 30 } + } + }, + + 'function hello(a, b) { sayHi(); }': { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'hello', + range: [9, 14], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 14 } + } + }, + params: [{ + type: 'Identifier', + name: 'a', + range: [15, 16], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 16 } + } + }, { + type: 'Identifier', + name: 'b', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'sayHi', + range: [23, 28], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 28 } + } + }, + 'arguments': [], + range: [23, 30], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 30 } + } + }, + range: [23, 31], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 31 } + } + }], + range: [21, 33], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 33 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 33], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 33 } + } + }, + + 'var hi = function() { sayHi() };': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'hi', + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }, + init: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'sayHi', + range: [22, 27], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 27 } + } + }, + 'arguments': [], + range: [22, 29], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 29 } + } + }, + range: [22, 30], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 30 } + } + }], + range: [20, 31], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 31 } + } + }, + rest: null, + generator: false, + expression: false, + range: [9, 31], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 31 } + } + }, + range: [4, 31], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 31 } + } + }], + kind: 'var', + range: [0, 32], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 32 } + } + }, + + 'var hi = function eval() { };': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'hi', + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }, + init: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'eval', + range: [18, 22], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 22 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [25, 28], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 28 } + } + }, + rest: null, + generator: false, + expression: false, + range: [9, 28], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 28 } + } + }, + range: [4, 28], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 28 } + } + }], + kind: 'var', + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 29 } + } + }, + + 'var hi = function arguments() { };': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'hi', + range: [4, 6], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 6 } + } + }, + init: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'arguments', + range: [18, 27], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 27 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [30, 33], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 33 } + } + }, + rest: null, + generator: false, + expression: false, + range: [9, 33], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 33 } + } + }, + range: [4, 33], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 33 } + } + }], + kind: 'var', + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + } + }, + + 'var hello = function hi() { sayHi() };': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'hello', + range: [4, 9], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 9 } + } + }, + init: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'hi', + range: [21, 23], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 23 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'Identifier', + name: 'sayHi', + range: [28, 33], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 33 } + } + }, + 'arguments': [], + range: [28, 35], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 35 } + } + }, + range: [28, 36], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 36 } + } + }], + range: [26, 37], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 37 } + } + }, + rest: null, + generator: false, + expression: false, + range: [12, 37], + loc: { + start: { line: 1, column: 12 }, + end: { line: 1, column: 37 } + } + }, + range: [4, 37], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 37 } + } + }], + kind: 'var', + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + } + }, + + '(function(){})': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [11, 13], + loc: { + start: { line: 1, column: 11 }, + end: { line: 1, column: 13 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 13], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 13 } + } + }, + range: [0, 14], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 14 } + } + } + + }, + + 'Automatic semicolon insertion': { + + '{ x\n++y }': { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'x', + range: [2, 3], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 3 } + } + }, + range: [2, 4], + loc: { + start: { line: 1, column: 2 }, + end: { line: 2, column: 0 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'y', + range: [6, 7], + loc: { + start: { line: 2, column: 2 }, + end: { line: 2, column: 3 } + } + }, + prefix: true, + range: [4, 7], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 3 } + } + }, + range: [4, 8], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 4 } + } + }], + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 5 } + } + }, + + '{ x\n--y }': { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'x', + range: [2, 3], + loc: { + start: { line: 1, column: 2 }, + end: { line: 1, column: 3 } + } + }, + range: [2, 4], + loc: { + start: { line: 1, column: 2 }, + end: { line: 2, column: 0 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'y', + range: [6, 7], + loc: { + start: { line: 2, column: 2 }, + end: { line: 2, column: 3 } + } + }, + prefix: true, + range: [4, 7], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 3 } + } + }, + range: [4, 8], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 4 } + } + }], + range: [0, 9], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 5 } + } + }, + + 'var x /* comment */;': { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }, + init: null, + range: [4, 5], + loc: { + start: { line: 1, column: 4 }, + end: { line: 1, column: 5 } + } + }], + kind: 'var', + range: [0, 20], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 20 } + } + }, + + '{ var x = 14, y = 3\nz; }': { + type: 'BlockStatement', + body: [{ + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [6, 7], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 7 } + } + }, + init: { + type: 'Literal', + value: 14, + raw: '14', + range: [10, 12], + loc: { + start: { line: 1, column: 10 }, + end: { line: 1, column: 12 } + } + }, + range: [6, 12], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 12 } + } + }, { + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'y', + range: [14, 15], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 15 } + } + }, + init: { + type: 'Literal', + value: 3, + raw: '3', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }, + range: [14, 19], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 19 } + } + }], + kind: 'var', + range: [2, 20], + loc: { + start: { line: 1, column: 2 }, + end: { line: 2, column: 0 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'z', + range: [20, 21], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 1 } + } + }, + range: [20, 22], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + }], + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 4 } + } + }, + + 'while (true) { continue\nthere; }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ContinueStatement', + label: null, + range: [15, 23], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 23 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'there', + range: [24, 29], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 5 } + } + }, + range: [24, 30], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 6 } + } + }], + range: [13, 32], + loc: { + start: { line: 1, column: 13 }, + end: { line: 2, column: 8 } + } + }, + range: [0, 32], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 8 } + } + }, + + 'while (true) { continue // Comment\nthere; }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ContinueStatement', + label: null, + range: [15, 23], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 23 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'there', + range: [35, 40], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 5 } + } + }, + range: [35, 41], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 6 } + } + }], + range: [13, 43], + loc: { + start: { line: 1, column: 13 }, + end: { line: 2, column: 8 } + } + }, + range: [0, 43], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 8 } + } + }, + + 'while (true) { continue /* Multiline\nComment */there; }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'ContinueStatement', + label: null, + range: [15, 23], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 23 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'there', + range: [47, 52], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 15 } + } + }, + range: [47, 53], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 16 } + } + }], + range: [13, 55], + loc: { + start: { line: 1, column: 13 }, + end: { line: 2, column: 18 } + } + }, + range: [0, 55], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 18 } + } + }, + + 'while (true) { break\nthere; }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'BreakStatement', + label: null, + range: [15, 20], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 20 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'there', + range: [21, 26], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 5 } + } + }, + range: [21, 27], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 6 } + } + }], + range: [13, 29], + loc: { + start: { line: 1, column: 13 }, + end: { line: 2, column: 8 } + } + }, + range: [0, 29], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 8 } + } + }, + + 'while (true) { break // Comment\nthere; }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'BreakStatement', + label: null, + range: [15, 20], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 20 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'there', + range: [32, 37], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 5 } + } + }, + range: [32, 38], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 6 } + } + }], + range: [13, 40], + loc: { + start: { line: 1, column: 13 }, + end: { line: 2, column: 8 } + } + }, + range: [0, 40], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 8 } + } + }, + + 'while (true) { break /* Multiline\nComment */there; }': { + type: 'WhileStatement', + test: { + type: 'Literal', + value: true, + raw: 'true', + range: [7, 11], + loc: { + start: { line: 1, column: 7 }, + end: { line: 1, column: 11 } + } + }, + body: { + type: 'BlockStatement', + body: [{ + type: 'BreakStatement', + label: null, + range: [15, 20], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 20 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'there', + range: [44, 49], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 15 } + } + }, + range: [44, 50], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 16 } + } + }], + range: [13, 52], + loc: { + start: { line: 1, column: 13 }, + end: { line: 2, column: 18 } + } + }, + range: [0, 52], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 18 } + } + }, + + '(function(){ return\nx; })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [ + { + type: 'ReturnStatement', + argument: null, + range: [13, 19], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 19 } + } + }, + { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'x', + range: [20, 21], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 1 } + } + }, + range: [20, 22], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + } + ], + range: [11, 24], + loc: { + start: { line: 1, column: 11 }, + end: { line: 2, column: 4 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 24], + loc: { + start: { line: 1, column: 1 }, + end: { line: 2, column: 4 } + } + }, + range: [0, 25], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 5 } + } + }, + + '(function(){ return // Comment\nx; })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [ + { + type: 'ReturnStatement', + argument: null, + range: [13, 19], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 19 } + } + }, + { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'x', + range: [31, 32], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 1 } + } + }, + range: [31, 33], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 2 } + } + } + ], + range: [11, 35], + loc: { + start: { line: 1, column: 11 }, + end: { line: 2, column: 4 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 35], + loc: { + start: { line: 1, column: 1 }, + end: { line: 2, column: 4 } + } + }, + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 5 } + } + }, + + '(function(){ return/* Multiline\nComment */x; })': { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [ + { + type: 'ReturnStatement', + argument: null, + range: [13, 19], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 19 } + } + }, + { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'x', + range: [42, 43], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 11 } + } + }, + range: [42, 44], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 12 } + } + } + ], + range: [11, 46], + loc: { + start: { line: 1, column: 11 }, + end: { line: 2, column: 14 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 46], + loc: { + start: { line: 1, column: 1 }, + end: { line: 2, column: 14 } + } + }, + range: [0, 47], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 15 } + } + }, + + '{ throw error\nerror; }': { + type: 'BlockStatement', + body: [{ + type: 'ThrowStatement', + argument: { + type: 'Identifier', + name: 'error', + range: [8, 13], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 13 } + } + }, + range: [2, 14], + loc: { + start: { line: 1, column: 2 }, + end: { line: 2, column: 0 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'error', + range: [14, 19], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 5 } + } + }, + range: [14, 20], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 6 } + } + }], + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 8 } + } + }, + + '{ throw error// Comment\nerror; }': { + type: 'BlockStatement', + body: [{ + type: 'ThrowStatement', + argument: { + type: 'Identifier', + name: 'error', + range: [8, 13], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 13 } + } + }, + range: [2, 24], + loc: { + start: { line: 1, column: 2 }, + end: { line: 2, column: 0 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'error', + range: [24, 29], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 5 } + } + }, + range: [24, 30], + loc: { + start: { line: 2, column: 0 }, + end: { line: 2, column: 6 } + } + }], + range: [0, 32], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 8 } + } + }, + + '{ throw error/* Multiline\nComment */error; }': { + type: 'BlockStatement', + body: [{ + type: 'ThrowStatement', + argument: { + type: 'Identifier', + name: 'error', + range: [8, 13], + loc: { + start: { line: 1, column: 8 }, + end: { line: 1, column: 13 } + } + }, + range: [2, 36], + loc: { + start: { line: 1, column: 2 }, + end: { line: 2, column: 10 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'error', + range: [36, 41], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 15 } + } + }, + range: [36, 42], + loc: { + start: { line: 2, column: 10 }, + end: { line: 2, column: 16 } + } + }], + range: [0, 44], + loc: { + start: { line: 1, column: 0 }, + end: { line: 2, column: 18 } + } + } + + }, + + 'Source elements': { + + '': { + type: 'Program', + body: [], + range: [0, 0], + loc: { + start: { line: 0, column: 0 }, + end: { line: 0, column: 0 } + }, + tokens: [] + } + }, + + 'Invalid syntax': { + + '{': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected end of input' + }, + + '}': { + index: 0, + lineNumber: 1, + column: 1, + message: 'Error: Line 1: Unexpected token }' + }, + + '3ea': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '3in []': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '3e': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '3e+': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '3e-': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '3x': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '3x0': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '0x': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '09': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '018': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '01a': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '3in[]': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '0x3in[]': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '"Hello\nWorld"': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + 'x\\': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + 'x\\u005c': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + 'x\\u002a': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + 'var x = /(s/g': { + index: 13, + lineNumber: 1, + column: 14, + message: 'Error: Line 1: Invalid regular expression' + }, + + '/': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Invalid regular expression: missing /' + }, + + '/test': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Invalid regular expression: missing /' + }, + + 'var x = /[a-z]/\\ux': { + index: 18, + lineNumber: 1, + column: 19, + message: 'Error: Line 1: Invalid regular expression' + }, + + '3 = 4': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + 'func() = 4': { + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + '(1 + 1) = 10': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + '1++': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + '1--': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + '++1': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + '--1': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + 'for((1 + 1) in list) process(x);': { + index: 11, + lineNumber: 1, + column: 12, + message: 'Error: Line 1: Invalid left-hand side in for-in' + }, + + '[': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected end of input' + }, + + '[,': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected end of input' + }, + + '1 + {': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Unexpected end of input' + }, + + '1 + { t:t ': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Unexpected end of input' + }, + + '1 + { t:t,': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'var x = /\n/': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Invalid regular expression: missing /' + }, + + 'var x = "\n': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + 'var if = 42': { + index: 4, + lineNumber: 1, + column: 5, + message: 'Error: Line 1: Unexpected token if' + }, + + 'i + 2 = 42': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + '+i = 42': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Invalid left-hand side in assignment' + }, + + '1 + (': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Unexpected end of input' + }, + + '\n\n\n{': { + index: 4, + lineNumber: 4, + column: 2, + message: 'Error: Line 4: Unexpected end of input' + }, + + '\n/* Some multiline\ncomment */\n)': { + index: 30, + lineNumber: 4, + column: 1, + message: 'Error: Line 4: Unexpected token )' + }, + + '{ set 1 }': { + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Unexpected number' + }, + + '{ get 2 }': { + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Unexpected number' + }, + + '({ set: s(if) { } })': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Unexpected token if' + }, + + '({ set s(.) { } })': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token .' + }, + + '({ set: s() { } })': { + index: 12, + lineNumber: 1, + column: 13, + message: 'Error: Line 1: Unexpected token {' + }, + + '({ set: s(a, b) { } })': { + index: 16, + lineNumber: 1, + column: 17, + message: 'Error: Line 1: Unexpected token {' + }, + + '({ get: g(d) { } })': { + index: 13, + lineNumber: 1, + column: 14, + message: 'Error: Line 1: Unexpected token {' + }, + + '({ get i() { }, i: 42 })': { + index: 21, + lineNumber: 1, + column: 22, + message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' + }, + + '({ i: 42, get i() { } })': { + index: 21, + lineNumber: 1, + column: 22, + message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' + }, + + '({ set i(x) { }, i: 42 })': { + index: 22, + lineNumber: 1, + column: 23, + message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' + }, + + '({ i: 42, set i(x) { } })': { + index: 22, + lineNumber: 1, + column: 23, + message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' + }, + + '({ get i() { }, get i() { } })': { + index: 27, + lineNumber: 1, + column: 28, + message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' + }, + + '({ set i(x) { }, set i(x) { } })': { + index: 29, + lineNumber: 1, + column: 30, + message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' + }, + + 'function t(if) { }': { + index: 11, + lineNumber: 1, + column: 12, + message: 'Error: Line 1: Unexpected token if' + }, + + 'function t(true) { }': { + index: 11, + lineNumber: 1, + column: 12, + message: 'Error: Line 1: Unexpected token true' + }, + + 'function t(false) { }': { + index: 11, + lineNumber: 1, + column: 12, + message: 'Error: Line 1: Unexpected token false' + }, + + 'function t(null) { }': { + index: 11, + lineNumber: 1, + column: 12, + message: 'Error: Line 1: Unexpected token null' + }, + + 'function null() { }': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token null' + }, + + 'function true() { }': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token true' + }, + + 'function false() { }': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token false' + }, + + 'function if() { }': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token if' + }, + + 'a b;': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected identifier' + }, + + 'if.a;': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token .' + }, + + 'a if;': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token if' + }, + + 'a class;': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected reserved word' + }, + + 'break\n': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Illegal break statement' + }, + + 'break 1;': { + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Unexpected number' + }, + + 'continue\n': { + index: 8, + lineNumber: 1, + column: 9, + message: 'Error: Line 1: Illegal continue statement' + }, + + 'continue 2;': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected number' + }, + + 'throw': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'throw;': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Unexpected token ;' + }, + + 'throw\n': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Illegal newline after throw' + }, + + 'for (var i, i2 in {});': { + index: 15, + lineNumber: 1, + column: 16, + message: 'Error: Line 1: Unexpected token in' + }, + + 'for ((i in {}));': { + index: 14, + lineNumber: 1, + column: 15, + message: 'Error: Line 1: Unexpected token )' + }, + + 'for (i + 1 in {});': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Invalid left-hand side in for-in' + }, + + 'for (+i in {});': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Invalid left-hand side in for-in' + }, + + 'if(false)': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'if(false) doThis(); else': { + index: 24, + lineNumber: 1, + column: 25, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'do': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'while(false)': { + index: 12, + lineNumber: 1, + column: 13, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'for(;;)': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'with(x)': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected end of input' + }, + + 'try { }': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Missing catch or finally after try' + }, + + '\u203F = 10': { + index: 0, + lineNumber: 1, + column: 1, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + 'const x = 12, y;': { + index: 15, + lineNumber: 1, + column: 16, + message: 'Error: Line 1: Unexpected token ;' + }, + + 'const x, y = 12;': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected token ,' + }, + + 'const x;': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected token ;' + }, + + 'if(true) let a = 1;': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token let' + }, + + 'if(true) const a = 1;': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token const' + }, + + 'switch (c) { default: default: }': { + index: 30, + lineNumber: 1, + column: 31, + message: 'Error: Line 1: More than one default clause in switch statement' + }, + + 'new X()."s"': { + index: 8, + lineNumber: 1, + column: 9, + message: 'Error: Line 1: Unexpected string' + }, + + '/*': { + index: 2, + lineNumber: 1, + column: 3, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '/*\n\n\n': { + index: 5, + lineNumber: 4, + column: 1, + message: 'Error: Line 4: Unexpected token ILLEGAL' + }, + + '/**': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '/*\n\n*': { + index: 5, + lineNumber: 3, + column: 2, + message: 'Error: Line 3: Unexpected token ILLEGAL' + }, + + '/*hello': { + index: 7, + lineNumber: 1, + column: 8, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '/*hello *': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '\n]': { + index: 1, + lineNumber: 2, + column: 1, + message: 'Error: Line 2: Unexpected token ]' + }, + + '\r]': { + index: 1, + lineNumber: 2, + column: 1, + message: 'Error: Line 2: Unexpected token ]' + }, + + '\r\n]': { + index: 2, + lineNumber: 2, + column: 1, + message: 'Error: Line 2: Unexpected token ]' + }, + + '\n\r]': { + index: 2, + lineNumber: 3, + column: 1, + message: 'Error: Line 3: Unexpected token ]' + }, + + '//\r\n]': { + index: 4, + lineNumber: 2, + column: 1, + message: 'Error: Line 2: Unexpected token ]' + }, + + '//\n\r]': { + index: 4, + lineNumber: 3, + column: 1, + message: 'Error: Line 3: Unexpected token ]' + }, + + '/a\\\n/': { + index: 4, + lineNumber: 1, + column: 5, + message: 'Error: Line 1: Invalid regular expression: missing /' + }, + + '//\r \n]': { + index: 5, + lineNumber: 3, + column: 1, + message: 'Error: Line 3: Unexpected token ]' + }, + + '/*\r\n*/]': { + index: 6, + lineNumber: 2, + column: 3, + message: 'Error: Line 2: Unexpected token ]' + }, + + '/*\n\r*/]': { + index: 6, + lineNumber: 3, + column: 3, + message: 'Error: Line 3: Unexpected token ]' + }, + + '/*\r \n*/]': { + index: 7, + lineNumber: 3, + column: 3, + message: 'Error: Line 3: Unexpected token ]' + }, + + '\\\\': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '\\u005c': { + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + + '\\x': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '\\u0000': { + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '\u200C = []': { + index: 0, + lineNumber: 1, + column: 1, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '\u200D = []': { + index: 0, + lineNumber: 1, + column: 1, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '"\\': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + '"\\u': { + index: 3, + lineNumber: 1, + column: 4, + message: 'Error: Line 1: Unexpected token ILLEGAL' + }, + + 'return': { + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Illegal return statement' + }, + + 'break': { + index: 5, + lineNumber: 1, + column: 6, + message: 'Error: Line 1: Illegal break statement' + }, + + 'continue': { + index: 8, + lineNumber: 1, + column: 9, + message: 'Error: Line 1: Illegal continue statement' + }, + + 'switch (x) { default: continue; }': { + index: 31, + lineNumber: 1, + column: 32, + message: 'Error: Line 1: Illegal continue statement' + }, + + 'do { x } *': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Unexpected token *' + }, + + 'while (true) { break x; }': { + index: 22, + lineNumber: 1, + column: 23, + message: 'Error: Line 1: Undefined label \'x\'' + }, + + 'while (true) { continue x; }': { + index: 25, + lineNumber: 1, + column: 26, + message: 'Error: Line 1: Undefined label \'x\'' + }, + + 'x: while (true) { (function () { break x; }); }': { + index: 40, + lineNumber: 1, + column: 41, + message: 'Error: Line 1: Undefined label \'x\'' + }, + + 'x: while (true) { (function () { continue x; }); }': { + index: 43, + lineNumber: 1, + column: 44, + message: 'Error: Line 1: Undefined label \'x\'' + }, + + 'x: while (true) { (function () { break; }); }': { + index: 39, + lineNumber: 1, + column: 40, + message: 'Error: Line 1: Illegal break statement' + }, + + 'x: while (true) { (function () { continue; }); }': { + index: 42, + lineNumber: 1, + column: 43, + message: 'Error: Line 1: Illegal continue statement' + }, + + 'x: while (true) { x: while (true) { } }': { + index: 20, + lineNumber: 1, + column: 21, + message: 'Error: Line 1: Label \'x\' has already been declared' + }, + + '(function () { \'use strict\'; delete i; }())': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' + }, + + '(function () { \'use strict\'; with (i); }())': { + index: 28, + lineNumber: 1, + column: 29, + message: 'Error: Line 1: Strict mode code may not include a with statement' + }, + + 'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': { + index: 47, + lineNumber: 1, + column: 48, + message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' + }, + + 'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': { + index: 73, + lineNumber: 1, + column: 74, + message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' + }, + + 'function hello() {\'use strict\'; var eval = 10; }': { + index: 40, + lineNumber: 1, + column: 41, + message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; var arguments = 10; }': { + index: 45, + lineNumber: 1, + column: 46, + message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; try { } catch (eval) { } }': { + index: 51, + lineNumber: 1, + column: 52, + message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; try { } catch (arguments) { } }': { + index: 56, + lineNumber: 1, + column: 57, + message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; eval = 10; }': { + index: 32, + lineNumber: 1, + column: 33, + message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' + }, + + 'function hello() {\'use strict\'; arguments = 10; }': { + index: 32, + lineNumber: 1, + column: 33, + message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' + }, + + 'function hello() {\'use strict\'; ++eval; }': { + index: 38, + lineNumber: 1, + column: 39, + message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; --eval; }': { + index: 38, + lineNumber: 1, + column: 39, + message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; ++arguments; }': { + index: 43, + lineNumber: 1, + column: 44, + message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; --arguments; }': { + index: 43, + lineNumber: 1, + column: 44, + message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; eval++; }': { + index: 36, + lineNumber: 1, + column: 37, + message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; eval--; }': { + index: 36, + lineNumber: 1, + column: 37, + message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; arguments++; }': { + index: 41, + lineNumber: 1, + column: 42, + message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; arguments--; }': { + index: 41, + lineNumber: 1, + column: 42, + message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' + }, + + 'function hello() {\'use strict\'; function eval() { } }': { + index: 41, + lineNumber: 1, + column: 42, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; function arguments() { } }': { + index: 41, + lineNumber: 1, + column: 42, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + 'function eval() {\'use strict\'; }': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + 'function arguments() {\'use strict\'; }': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; (function eval() { }()) }': { + index: 42, + lineNumber: 1, + column: 43, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; (function arguments() { }()) }': { + index: 42, + lineNumber: 1, + column: 43, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + '(function eval() {\'use strict\'; })()': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + '(function arguments() {\'use strict\'; })()': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + 'function hello() {\'use strict\'; ({ s: function eval() { } }); }': { + index: 47, + lineNumber: 1, + column: 48, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }, + + '(function package() {\'use strict\'; })()': { + index: 10, + lineNumber: 1, + column: 11, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': { + index: 48, + lineNumber: 1, + column: 49, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + 'function hello() {\'use strict\'; ({ set s(eval) { } }); }': { + index: 41, + lineNumber: 1, + column: 42, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + 'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': { + index: 49, + lineNumber: 1, + column: 50, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + 'function hello(eval) {\'use strict\';}': { + index: 15, + lineNumber: 1, + column: 16, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + 'function hello(arguments) {\'use strict\';}': { + index: 15, + lineNumber: 1, + column: 16, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + 'function hello() { \'use strict\'; function inner(eval) {} }': { + index: 48, + lineNumber: 1, + column: 49, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + 'function hello() { \'use strict\'; function inner(arguments) {} }': { + index: 48, + lineNumber: 1, + column: 49, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + ' "\\1"; \'use strict\';': { + index: 1, + lineNumber: 1, + column: 2, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { \'use strict\'; "\\1"; }': { + index: 33, + lineNumber: 1, + column: 34, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { \'use strict\'; 021; }': { + index: 33, + lineNumber: 1, + column: 34, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { \'use strict\'; ({ "\\1": 42 }); }': { + index: 36, + lineNumber: 1, + column: 37, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { \'use strict\'; ({ 021: 42 }); }': { + index: 36, + lineNumber: 1, + column: 37, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { "octal directive\\1"; "use strict"; }': { + index: 19, + lineNumber: 1, + column: 20, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': { + index: 19, + lineNumber: 1, + column: 20, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': { + index: 52, + lineNumber: 1, + column: 53, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }, + + 'function hello() { "use strict"; var implements; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var interface; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var package; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var private; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var protected; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var public; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var static; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var yield; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello() { "use strict"; var let; }': { + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function hello(static) { "use strict"; }': { + index: 15, + lineNumber: 1, + column: 16, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function static() { "use strict"; }': { + index: 9, + lineNumber: 1, + column: 10, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'var yield': { + index: 4, + lineNumber: 1, + column: 5, + message: 'Error: Line 1: Unexpected token yield' + }, + + 'var let': { + index: 4, + lineNumber: 1, + column: 5, + message: 'Error: Line 1: Unexpected token let' + }, + + '"use strict"; function static() { }': { + index: 23, + lineNumber: 1, + column: 24, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function a(t, t) { "use strict"; }': { + index: 14, + lineNumber: 1, + column: 15, + message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' + }, + + 'function a(eval) { "use strict"; }': { + index: 11, + lineNumber: 1, + column: 12, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + 'function a(package) { "use strict"; }': { + index: 11, + lineNumber: 1, + column: 12, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }, + + 'function a() { "use strict"; function b(t, t) { }; }': { + index: 43, + lineNumber: 1, + column: 44, + message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' + }, + + '(function a(t, t) { "use strict"; })': { + index: 15, + lineNumber: 1, + column: 16, + message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' + }, + + 'function a() { "use strict"; (function b(t, t) { }); }': { + index: 44, + lineNumber: 1, + column: 45, + message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' + }, + + '(function a(eval) { "use strict"; })': { + index: 12, + lineNumber: 1, + column: 13, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }, + + '(function a(package) { "use strict"; })': { + index: 12, + lineNumber: 1, + column: 13, + message: 'Error: Line 1: Use of future reserved word in strict mode' + } + + }, + + 'API': { + 'parse()': { + call: 'parse', + args: [], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'undefined' + } + }] + } + }, + + 'parse(null)': { + call: 'parse', + args: [null], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: null + } + }] + } + }, + + 'parse(42)': { + call: 'parse', + args: [42], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42 + } + }] + } + }, + + 'parse(true)': { + call: 'parse', + args: [true], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: true + } + }] + } + }, + + 'parse(undefined)': { + call: 'parse', + args: [void 0], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'undefined' + } + }] + } + }, + + 'parse(new String("test"))': { + call: 'parse', + args: [new String('test')], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Identifier', + name: 'test' + } + }] + } + }, + + 'parse(new Number(42))': { + call: 'parse', + args: [new Number(42)], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 42 + } + }] + } + }, + + 'parse(new Boolean(true))': { + call: 'parse', + args: [new Boolean(true)], + result: { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: true + } + }] + } + }, + + 'Syntax': { + property: 'Syntax', + result: { + AssignmentExpression: 'AssignmentExpression', + ArrayExpression: 'ArrayExpression', + BlockStatement: 'BlockStatement', + BinaryExpression: 'BinaryExpression', + BreakStatement: 'BreakStatement', + CallExpression: 'CallExpression', + CatchClause: 'CatchClause', + ConditionalExpression: 'ConditionalExpression', + ContinueStatement: 'ContinueStatement', + DoWhileStatement: 'DoWhileStatement', + DebuggerStatement: 'DebuggerStatement', + EmptyStatement: 'EmptyStatement', + ExpressionStatement: 'ExpressionStatement', + ForStatement: 'ForStatement', + ForInStatement: 'ForInStatement', + FunctionDeclaration: 'FunctionDeclaration', + FunctionExpression: 'FunctionExpression', + Identifier: 'Identifier', + IfStatement: 'IfStatement', + Literal: 'Literal', + LabeledStatement: 'LabeledStatement', + LogicalExpression: 'LogicalExpression', + MemberExpression: 'MemberExpression', + NewExpression: 'NewExpression', + ObjectExpression: 'ObjectExpression', + Program: 'Program', + Property: 'Property', + ReturnStatement: 'ReturnStatement', + SequenceExpression: 'SequenceExpression', + SwitchStatement: 'SwitchStatement', + SwitchCase: 'SwitchCase', + ThisExpression: 'ThisExpression', + ThrowStatement: 'ThrowStatement', + TryStatement: 'TryStatement', + UnaryExpression: 'UnaryExpression', + UpdateExpression: 'UpdateExpression', + VariableDeclaration: 'VariableDeclaration', + VariableDeclarator: 'VariableDeclarator', + WhileStatement: 'WhileStatement', + WithStatement: 'WithStatement' + } + } + + }, + + 'Tolerant parse': { + 'return': { + type: 'Program', + body: [{ + type: 'ReturnStatement', + 'argument': null, + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + } + }], + range: [0, 6], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 6 } + }, + errors: [{ + index: 6, + lineNumber: 1, + column: 7, + message: 'Error: Line 1: Illegal return statement' + }] + }, + + '(function () { \'use strict\'; with (i); }())': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '\'use strict\'', + range: [15, 27], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 27 } + } + }, + range: [15, 28], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 28 } + } + }, { + type: 'WithStatement', + object: { + type: 'Identifier', + name: 'i', + range: [35, 36], + loc: { + start: { line: 1, column: 35 }, + end: { line: 1, column: 36 } + } + }, + body: { + type: 'EmptyStatement', + range: [37, 38], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 38 } + } + }, + range: [29, 38], + loc: { + start: { line: 1, column: 29 }, + end: { line: 1, column: 38 } + } + }], + range: [13, 40], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 40 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 40], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 40 } + } + }, + 'arguments': [], + range: [1, 42], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 42 } + } + }, + range: [0, 43], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 43 } + } + }], + range: [0, 43], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 43 } + }, + errors: [{ + index: 29, + lineNumber: 1, + column: 30, + message: 'Error: Line 1: Strict mode code may not include a with statement' + }] + }, + + '(function () { \'use strict\'; 021 }())': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '\'use strict\'', + range: [15, 27], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 27 } + } + }, + range: [15, 28], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 28 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 17, + raw: "021", + range: [29, 32], + loc: { + start: { line: 1, column: 29 }, + end: { line: 1, column: 32 } + } + }, + range: [29, 33], + loc: { + start: { line: 1, column: 29 }, + end: { line: 1, column: 33 } + } + }], + range: [13, 34], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 34 } + } + }, + rest: null, + generator: false, + expression: false, + range: [1, 34], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 34 } + } + }, + 'arguments': [], + range: [1, 36], + loc: { + start: { line: 1, column: 1 }, + end: { line: 1, column: 36 } + } + }, + range: [0, 37], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 37 } + } + }], + range: [0, 37], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 37 } + }, + errors: [{ + index: 29, + lineNumber: 1, + column: 30, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }] + }, + + '"use strict"; delete x': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UnaryExpression', + operator: 'delete', + argument: { + type: 'Identifier', + name: 'x', + range: [21, 22], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 22 } + } + }, + range: [14, 22], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 22 } + } + }, + range: [14, 22], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 22 } + } + }], + range: [0, 22], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 22 } + }, + errors: [{ + index: 22, + lineNumber: 1, + column: 23, + message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' + }] + }, + + '"use strict"; try {} catch (eval) {}': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [], + range: [18, 20], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 20 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'eval', + range: [28, 32], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 32 } + } + }, + body: { + type: 'BlockStatement', + body: [], + range: [34, 36], + loc: { + start: { line: 1, column: 34 }, + end: { line: 1, column: 36 } + } + }, + range: [21, 36], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 36 } + } + }], + finalizer: null, + range: [14, 36], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 36 } + } + }], + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + }, + errors: [{ + index: 32, + lineNumber: 1, + column: 33, + message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; try {} catch (arguments) {}': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'TryStatement', + block: { + type: 'BlockStatement', + body: [], + range: [18, 20], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 20 } + } + }, + guardedHandlers: [], + handlers: [{ + type: 'CatchClause', + param: { + type: 'Identifier', + name: 'arguments', + range: [28, 37], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 37 } + } + }, + body: { + type: 'BlockStatement', + body: [], + range: [39, 41], + loc: { + start: { line: 1, column: 39 }, + end: { line: 1, column: 41 } + } + }, + range: [21, 41], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 41 } + } + }], + finalizer: null, + range: [14, 41], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 41 } + } + }], + range: [0, 41], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 41 } + }, + errors: [{ + index: 37, + lineNumber: 1, + column: 38, + message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; var eval;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'eval', + range: [18, 22], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 22 } + } + }, + init: null, + range: [18, 22], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 22 } + } + }], + kind: 'var', + range: [14, 23], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 23 } + } + }], + range: [0, 23], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 23 } + }, + errors: [{ + index: 22, + lineNumber: 1, + column: 23, + message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; var arguments;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'arguments', + range: [18, 27], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 27 } + } + }, + init: null, + range: [18, 27], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 27 } + } + }], + kind: 'var', + range: [14, 28], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 28 } + } + }], + range: [0, 28], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 28 } + }, + errors: [{ + index: 27, + lineNumber: 1, + column: 28, + message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; eval = 0;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'eval', + range: [14, 18], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 18 } + } + }, + right: { + type: 'Literal', + value: 0, + raw: '0', + range: [21, 22], + loc: { + start: { line: 1, column: 21 }, + end: { line: 1, column: 22 } + } + }, + range: [14, 22], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 22 } + } + }, + range: [14, 23], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 23 } + } + }], + range: [0, 23], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 23 } + }, + errors: [{ + index: 14, + lineNumber: 1, + column: 15, + message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' + }] + }, + + '"use strict"; eval++;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'eval', + range: [14, 18], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 18 } + } + }, + prefix: false, + range: [14, 20], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 20 } + } + }, + range: [14, 21], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 21 } + } + }], + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + }, + errors: [{ + index: 18, + lineNumber: 1, + column: 19, + message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' + }] + }, + + '"use strict"; --eval;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'eval', + range: [16, 20], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 20 } + } + }, + prefix: true, + range: [14, 20], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 20 } + } + }, + range: [14, 21], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 21 } + } + }], + range: [0, 21], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 21 } + }, + errors: [{ + index: 20, + lineNumber: 1, + column: 21, + message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' + }] + }, + + '"use strict"; arguments = 0;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'arguments', + range: [14, 23], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 23 } + } + }, + right: { + type: 'Literal', + value: 0, + raw: '0', + range: [26, 27], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 27 } + } + }, + range: [14, 27], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 27 } + } + }, + range: [14, 28], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 28 } + } + }], + range: [0, 28], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 28 } + }, + errors: [{ + index: 14, + lineNumber: 1, + column: 15, + message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' + }] + }, + + '"use strict"; arguments--;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '--', + argument: { + type: 'Identifier', + name: 'arguments', + range: [14, 23], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 23 } + } + }, + prefix: false, + range: [14, 25], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 25 } + } + }, + range: [14, 26], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 26 } + } + }], + range: [0, 26], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 26 } + }, + errors: [{ + index: 23, + lineNumber: 1, + column: 24, + message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' + }] + }, + + '"use strict"; ++arguments;': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'UpdateExpression', + operator: '++', + argument: { + type: 'Identifier', + name: 'arguments', + range: [16, 25], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 25 } + } + }, + prefix: true, + range: [14, 25], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 25 } + } + }, + range: [14, 26], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 26 } + } + }], + range: [0, 26], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 26 } + }, + errors: [{ + index: 25, + lineNumber: 1, + column: 26, + message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' + }] + }, + + + '"use strict";x={y:1,y:1}': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [13, 14], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 14 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'y', + range: [16, 17], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 17 } + } + }, + value: { + type: 'Literal', + value: 1, + raw: '1', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }, + kind: 'init', + range: [16, 19], + loc: { + start: { line: 1, column: 16 }, + end: { line: 1, column: 19 } + } + }, { + type: 'Property', + key: { + type: 'Identifier', + name: 'y', + range: [20, 21], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 21 } + } + }, + value: { + type: 'Literal', + value: 1, + raw: '1', + range: [22, 23], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 23 } + } + }, + kind: 'init', + range: [20, 23], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 23 } + } + }], + range: [15, 24], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 24 } + } + }, + range: [13, 24], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 24 } + } + }, + range: [13, 24], + loc: { + start: { line: 1, column: 13 }, + end: { line: 1, column: 24 } + } + }], + range: [0, 24], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 24 } + }, + errors: [{ + index: 23, + lineNumber: 1, + column: 24, + message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' + }] + }, + + '"use strict"; function eval() {};': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'eval', + range: [23, 27], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 27 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [30, 32], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 32 } + } + }, + rest: null, + generator: false, + expression: false, + range: [14, 32], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 32 } + } + }, { + type: 'EmptyStatement', + range: [32, 33], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 33 } + } + }], + range: [0, 33], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 33 } + }, + errors: [{ + index: 23, + lineNumber: 1, + column: 24, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; function arguments() {};': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'arguments', + range: [23, 32], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 32 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [35, 37], + loc: { + start: { line: 1, column: 35 }, + end: { line: 1, column: 37 } + } + }, + rest: null, + generator: false, + expression: false, + range: [14, 37], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 37 } + } + }, { + type: 'EmptyStatement', + range: [37, 38], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 38 } + } + }], + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + }, + errors: [{ + index: 23, + lineNumber: 1, + column: 24, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; function interface() {};': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'interface', + range: [23, 32], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 32 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [35, 37], + loc: { + start: { line: 1, column: 35 }, + end: { line: 1, column: 37 } + } + }, + rest: null, + generator: false, + expression: false, + range: [14, 37], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 37 } + } + }, { + type: 'EmptyStatement', + range: [37, 38], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 38 } + } + }], + range: [0, 38], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 38 } + }, + errors: [{ + index: 23, + lineNumber: 1, + column: 24, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }] + }, + + '"use strict"; (function eval() {});': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'eval', + range: [24, 28], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 28 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [31, 33], + loc: { + start: { line: 1, column: 31 }, + end: { line: 1, column: 33 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 33], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 33 } + } + }, + range: [14, 35], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 35 } + } + }], + range: [0, 35], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 35 } + }, + errors: [{ + index: 24, + lineNumber: 1, + column: 25, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; (function arguments() {});': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'arguments', + range: [24, 33], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 33 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [36, 38], + loc: { + start: { line: 1, column: 36 }, + end: { line: 1, column: 38 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 38], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 38 } + } + }, + range: [14, 40], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 40 } + } + }], + range: [0, 40], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 40 } + }, + errors: [{ + index: 24, + lineNumber: 1, + column: 25, + message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' + }] + }, + + '"use strict"; (function interface() {});': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'interface', + range: [24, 33], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 33 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [36, 38], + loc: { + start: { line: 1, column: 36 }, + end: { line: 1, column: 38 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 38], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 38 } + } + }, + range: [14, 40], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 40 } + } + }], + range: [0, 40], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 40 } + }, + errors: [{ + index: 24, + lineNumber: 1, + column: 25, + message: 'Error: Line 1: Use of future reserved word in strict mode' + }] + }, + + '"use strict"; function f(eval) {};': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'f', + range: [23, 24], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 24 } + } + }, + params: [{ + type: 'Identifier', + name: 'eval', + range: [25, 29], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 29 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [31, 33], + loc: { + start: { line: 1, column: 31 }, + end: { line: 1, column: 33 } + } + }, + rest: null, + generator: false, + expression: false, + range: [14, 33], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 33 } + } + }, { + type: 'EmptyStatement', + range: [33, 34], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 34 } + } + }], + range: [0, 34], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 34 } + }, + errors: [{ + index: 25, + lineNumber: 1, + column: 26, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }] + }, + + '"use strict"; function f(arguments) {};': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'f', + range: [23, 24], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 24 } + } + }, + params: [{ + type: 'Identifier', + name: 'arguments', + range: [25, 34], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 34 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [36, 38], + loc: { + start: { line: 1, column: 36 }, + end: { line: 1, column: 38 } + } + }, + rest: null, + generator: false, + expression: false, + range: [14, 38], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 38 } + } + }, { + type: 'EmptyStatement', + range: [38, 39], + loc: { + start: { line: 1, column: 38 }, + end: { line: 1, column: 39 } + } + }], + range: [0, 39], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 39 } + }, + errors: [{ + index: 25, + lineNumber: 1, + column: 26, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }] + }, + + '"use strict"; function f(foo, foo) {};': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'f', + range: [23, 24], + loc: { + start: { line: 1, column: 23 }, + end: { line: 1, column: 24 } + } + }, + params: [{ + type: 'Identifier', + name: 'foo', + range: [25, 28], + loc: { + start: { line: 1, column: 25 }, + end: { line: 1, column: 28 } + } + }, { + type: 'Identifier', + name: 'foo', + range: [31, 34], + loc: { + start: { line: 1, column: 31 }, + end: { line: 1, column: 34 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [36, 38], + loc: { + start: { line: 1, column: 36 }, + end: { line: 1, column: 38 } + } + }, + rest: null, + generator: false, + expression: false, + range: [14, 38], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 38 } + } + }, { + type: 'EmptyStatement', + range: [38, 39], + loc: { + start: { line: 1, column: 38 }, + end: { line: 1, column: 39 } + } + }], + range: [0, 39], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 39 } + }, + errors: [{ + index: 31, + lineNumber: 1, + column: 32, + message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' + }] + }, + + '"use strict"; (function f(eval) {});': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'f', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }, + params: [{ + type: 'Identifier', + name: 'eval', + range: [26, 30], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 30 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [32, 34], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 34 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 34], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 34 } + } + }, + range: [14, 36], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 36 } + } + }], + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + }, + errors: [{ + index: 26, + lineNumber: 1, + column: 27, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }] + }, + + + '"use strict"; (function f(arguments) {});': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'f', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }, + params: [{ + type: 'Identifier', + name: 'arguments', + range: [26, 35], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 35 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [37, 39], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 39 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 39], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 39 } + } + }, + range: [14, 41], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 41 } + } + }], + range: [0, 41], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 41 } + }, + errors: [{ + index: 26, + lineNumber: 1, + column: 27, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }] + }, + + '"use strict"; (function f(foo, foo) {});': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'FunctionExpression', + id: { + type: 'Identifier', + name: 'f', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }, + params: [{ + type: 'Identifier', + name: 'foo', + range: [26, 29], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 29 } + } + }, { + type: 'Identifier', + name: 'foo', + range: [32, 35], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 35 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [37, 39], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 39 } + } + }, + rest: null, + generator: false, + expression: false, + range: [15, 39], + loc: { + start: { line: 1, column: 15 }, + end: { line: 1, column: 39 } + } + }, + range: [14, 41], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 41 } + } + }], + range: [0, 41], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 41 } + }, + errors: [{ + index: 32, + lineNumber: 1, + column: 33, + message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' + }] + }, + + '"use strict"; x = { set f(eval) {} }' : { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'AssignmentExpression', + operator: '=', + left: { + type: 'Identifier', + name: 'x', + range: [14, 15], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 15 } + } + }, + right: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'f', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }, + value : { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'eval', + range: [26, 30], + loc: { + start: { line: 1, column: 26 }, + end: { line: 1, column: 30 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [32, 34], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 34 } + } + }, + rest: null, + generator: false, + expression: false, + range: [32, 34], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 34 } + } + }, + kind: 'set', + range: [20, 34], + loc: { + start: { line: 1, column: 20 }, + end: { line: 1, column: 34 } + } + }], + range: [18, 36], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 36 } + } + }, + range: [14, 36], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 36 } + } + }, + range: [14, 36], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 36 } + } + }], + range: [0, 36], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 36 } + }, + errors: [{ + index: 26, + lineNumber: 1, + column: 27, + message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' + }] + }, + + 'function hello() { "octal directive\\1"; "use strict"; }': { + type: 'Program', + body: [{ + type: 'FunctionDeclaration', + id: { + type: 'Identifier', + name: 'hello', + range: [9, 14], + loc: { + start: { line: 1, column: 9 }, + end: { line: 1, column: 14 } + } + }, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'octal directive\u0001', + raw: '"octal directive\\1"', + range: [19, 38], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 38 } + } + }, + range: [19, 39], + loc: { + start: { line: 1, column: 19 }, + end: { line: 1, column: 39 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [40, 52], + loc: { + start: { line: 1, column: 40 }, + end: { line: 1, column: 52 } + } + }, + range: [40, 53], + loc: { + start: { line: 1, column: 40 }, + end: { line: 1, column: 53 } + } + }], + range: [17, 55], + loc: { + start: { line: 1, column: 17 }, + end: { line: 1, column: 55 } + } + }, + rest: null, + generator: false, + expression: false, + range: [0, 55], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 55 } + } + }], + range: [0, 55], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 55 } + }, + errors: [{ + index: 19, + lineNumber: 1, + column: 20, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }] + }, + + '"\\1"; \'use strict\';': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: '\u0001', + raw: '"\\1"', + range: [0, 4], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 4 } + } + }, + range: [0, 5], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 5 } + } + }, { + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '\'use strict\'', + range: [6, 18], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 18 } + } + }, + range: [6, 19], + loc: { + start: { line: 1, column: 6 }, + end: { line: 1, column: 19 } + } + }], + range: [0, 19], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 19 } + }, + errors: [{ + index: 0, + lineNumber: 1, + column: 1, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }] + }, + + '"use strict"; var x = { 014: 3}': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }, + init: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Literal', + value: 12, + raw: '014', + range: [24, 27], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 27 } + } + }, + value: { + type: 'Literal', + value: 3, + raw: '3', + range: [29, 30], + loc: { + start: { line: 1, column: 29 }, + end: { line: 1, column: 30 } + } + }, + kind: 'init', + range: [24, 30], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 30 } + } + }], + range: [22, 31], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 31 } + } + }, + range: [18, 31], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 31 } + } + }], + kind: 'var', + range: [14, 31], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 31 } + } + }], + range: [0, 31], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 31 } + }, + errors: [{ + index: 24, + lineNumber: 1, + column: 25, + message: 'Error: Line 1: Octal literals are not allowed in strict mode.' + }] + }, + + '"use strict"; var x = { get i() {}, get i() {} }': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }, + init: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'i', + range: [28, 29], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 29 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [32, 34], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 34 } + } + }, + rest: null, + generator: false, + expression: false, + range: [32, 34], + loc: { + start: { line: 1, column: 32 }, + end: { line: 1, column: 34 } + } + }, + kind: 'get', + range: [24, 34], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 34 } + } + }, { + type: 'Property', + key: { + type: 'Identifier', + name: 'i', + range: [40, 41], + loc: { + start: { line: 1, column: 40 }, + end: { line: 1, column: 41 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [44, 46], + loc: { + start: { line: 1, column: 44 }, + end: { line: 1, column: 46 } + } + }, + rest: null, + generator: false, + expression: false, + range: [44, 46], + loc: { + start: { line: 1, column: 44 }, + end: { line: 1, column: 46 } + } + }, + kind: 'get', + range: [36, 46], + loc: { + start: { line: 1, column: 36 }, + end: { line: 1, column: 46 } + } + }], + range: [22, 48], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 48 } + } + }, + range: [18, 48], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 48 } + } + }], + kind: 'var', + range: [14, 48], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 48 } + } + }], + range: [0, 48], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 48 } + }, + errors: [{ + index: 46, + lineNumber: 1, + column: 47, + message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' + }] + }, + + '"use strict"; var x = { i: 42, get i() {} }': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }, + init: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'i', + range: [24, 25], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 25 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [27, 29], + loc: { + start: { line: 1, column: 27 }, + end: { line: 1, column: 29 } + } + }, + kind: 'init', + range: [24, 29], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 29 } + } + }, { + type: 'Property', + key: { + type: 'Identifier', + name: 'i', + range: [35, 36], + loc: { + start: { line: 1, column: 35 }, + end: { line: 1, column: 36 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [39, 41], + loc: { + start: { line: 1, column: 39 }, + end: { line: 1, column: 41 } + } + }, + rest: null, + generator: false, + expression: false, + range: [39, 41], + loc: { + start: { line: 1, column: 39 }, + end: { line: 1, column: 41 } + } + }, + kind: 'get', + range: [31, 41], + loc: { + start: { line: 1, column: 31 }, + end: { line: 1, column: 41 } + } + }], + range: [22, 43], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 43 } + } + }, + range: [18, 43], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 43 } + } + }], + kind: 'var', + range: [14, 43], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 43 } + } + }], + range: [0, 43], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 43 } + }, + errors: [{ + index: 41, + lineNumber: 1, + column: 42, + message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' + }] + }, + + '"use strict"; var x = { set i(x) {}, i: 42 }': { + type: 'Program', + body: [{ + type: 'ExpressionStatement', + expression: { + type: 'Literal', + value: 'use strict', + raw: '"use strict"', + range: [0, 12], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 12 } + } + }, + range: [0, 13], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 13 } + } + }, { + type: 'VariableDeclaration', + declarations: [{ + type: 'VariableDeclarator', + id: { + type: 'Identifier', + name: 'x', + range: [18, 19], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 19 } + } + }, + init: { + type: 'ObjectExpression', + properties: [{ + type: 'Property', + key: { + type: 'Identifier', + name: 'i', + range: [28, 29], + loc: { + start: { line: 1, column: 28 }, + end: { line: 1, column: 29 } + } + }, + value: { + type: 'FunctionExpression', + id: null, + params: [{ + type: 'Identifier', + name: 'x', + range: [30, 31], + loc: { + start: { line: 1, column: 30 }, + end: { line: 1, column: 31 } + } + }], + defaults: [], + body: { + type: 'BlockStatement', + body: [], + range: [33, 35], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 35 } + } + }, + rest: null, + generator: false, + expression: false, + range: [33, 35], + loc: { + start: { line: 1, column: 33 }, + end: { line: 1, column: 35 } + } + }, + kind: 'set', + range: [24, 35], + loc: { + start: { line: 1, column: 24 }, + end: { line: 1, column: 35 } + } + }, { + type: 'Property', + key: { + type: 'Identifier', + name: 'i', + range: [37, 38], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 38 } + } + }, + value: { + type: 'Literal', + value: 42, + raw: '42', + range: [40, 42], + loc: { + start: { line: 1, column: 40 }, + end: { line: 1, column: 42 } + } + }, + kind: 'init', + range: [37, 42], + loc: { + start: { line: 1, column: 37 }, + end: { line: 1, column: 42 } + } + }], + range: [22, 44], + loc: { + start: { line: 1, column: 22 }, + end: { line: 1, column: 44 } + } + }, + range: [18, 44], + loc: { + start: { line: 1, column: 18 }, + end: { line: 1, column: 44 } + } + }], + kind: 'var', + range: [14, 44], + loc: { + start: { line: 1, column: 14 }, + end: { line: 1, column: 44 } + } + }], + range: [0, 44], + loc: { + start: { line: 1, column: 0 }, + end: { line: 1, column: 44 } + }, + errors: [{ + index: 42, + lineNumber: 1, + column: 43, + message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' + }] + + + } + + + } +}; + diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json new file mode 100644 index 0000000..7d8856b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json @@ -0,0 +1,53 @@ +{ + "name": "astw", + "version": "0.0.0", + "description": "walk the ast with references to parent nodes", + "main": "index.js", + "dependencies": { + "esprima": "1.0.2" + }, + "devDependencies": { + "tape": "~0.2.2", + "tap": "~0.4.0", + "escodegen": "~0.0.17" + }, + "scripts": { + "test": "tap test/*.js" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6..latest", + "chrome/20..latest", + "firefox/10..latest", + "safari/latest", + "opera/11.0..latest", + "iphone/6", + "ipad/6" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/substack/astw.git" + }, + "homepage": "https://github.com/substack/astw", + "keywords": [ + "ast", + "walk", + "source", + "esprima" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT", + "readme": "# astw\n\nwalk the ast\n\n[![browser support](http://ci.testling.com/substack/astw.png)](http://ci.testling.com/substack/astw)\n\n[![build status](https://secure.travis-ci.org/substack/astw.png)](http://travis-ci.org/substack/astw)\n\nThis module is a faster version of\n[falafel](https://github.com/substack/node-falafel)\nthat only does ast walking and `.parent` tracking, not source transforms.\n\n# example\n\n``` js\nvar astw = require('astw');\nvar deparse = require('escodegen').generate;\nvar walk = astw('4 + beep(5 * 2)');\n\nwalk(function (node) {\n var src = deparse(node);\n console.log(node.type + ' :: ' + JSON.stringify(src));\n});\n```\n\n# methods\n\n``` js\nvar astw = require('astw')\n```\n\n## var walk = astw(src)\n\nReturn a `walk()` function from the source string or ast object `src`.\n\n## walk(cb)\n\nWalk the nodes in the ast with `cb(node)` where `node` is each element in the\nast from [esprima](http://esprima.org/) but with an additional `.parent`\nreference to the parent node.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install astw\n```\n\n# license\n\nMIT\n", + "readmeFilename": "readme.markdown", + "bugs": { + "url": "https://github.com/substack/astw/issues" + }, + "_id": "astw@0.0.0", + "_from": "astw@~0.0.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown new file mode 100644 index 0000000..807b5ad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown @@ -0,0 +1,52 @@ +# astw + +walk the ast + +[![browser support](http://ci.testling.com/substack/astw.png)](http://ci.testling.com/substack/astw) + +[![build status](https://secure.travis-ci.org/substack/astw.png)](http://travis-ci.org/substack/astw) + +This module is a faster version of +[falafel](https://github.com/substack/node-falafel) +that only does ast walking and `.parent` tracking, not source transforms. + +# example + +``` js +var astw = require('astw'); +var deparse = require('escodegen').generate; +var walk = astw('4 + beep(5 * 2)'); + +walk(function (node) { + var src = deparse(node); + console.log(node.type + ' :: ' + JSON.stringify(src)); +}); +``` + +# methods + +``` js +var astw = require('astw') +``` + +## var walk = astw(src) + +Return a `walk()` function from the source string or ast object `src`. + +## walk(cb) + +Walk the nodes in the ast with `cb(node)` where `node` is each element in the +ast from [esprima](http://esprima.org/) but with an additional `.parent` +reference to the parent node. + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install astw +``` + +# license + +MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js new file mode 100644 index 0000000..a7403d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js @@ -0,0 +1,25 @@ +var astw = require('../'); +var test = require('tape'); +var generate = require('escodegen').generate; + +function unparse (s) { + return generate(s, { format: { compact: true } }); +} + +test('parent', function (t) { + t.plan(4); + + var walk = astw('(' + function () { + var xs = [ 1, 2, 3 ]; + fn(ys); + } + ')()'); + + walk(function (node) { + if (node.type === 'ArrayExpression') { + t.equal(node.parent.type, 'VariableDeclarator'); + t.equal(unparse(node.parent), 'xs=[1,2,3]'); + t.equal(node.parent.parent.type, 'VariableDeclaration'); + t.equal(unparse(node.parent.parent), 'var xs=[1,2,3];'); + } + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json new file mode 100644 index 0000000..c0d8c9b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json @@ -0,0 +1,64 @@ +{ + "name": "lexical-scope", + "version": "0.0.12", + "description": "detect global and local lexical identifiers from javascript source code", + "main": "index.js", + "dependencies": { + "astw": "~0.0.0" + }, + "devDependencies": { + "tap": "~0.4.0", + "tape": "~0.2.2", + "browserify": "~2.10.2", + "brfs": "~0.0.3" + }, + "scripts": { + "test": "tap test/*.js" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6", + "ie/7", + "ie/8", + "ie/9", + "ie/10", + "chrome/20", + "chrome/latest", + "firefox/10", + "firefox/15", + "firefox/latest", + "safari/latest", + "opera/11.0", + "opera/latest" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/substack/lexical-scope.git" + }, + "homepage": "https://github.com/substack/lexical-scope", + "keywords": [ + "ast", + "variable", + "name", + "lexical", + "local", + "global", + "implicit", + "exported" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT", + "readme": "# lexical-scope\n\ndetect global and local lexical identifiers from javascript source code\n\n[![browser support](http://ci.testling.com/substack/lexical-scope.png)](http://ci.testling.com/substack/lexical-scope)\n\n[![build status](https://secure.travis-ci.org/substack/lexical-scope.png)](http://travis-ci.org/substack/lexical-scope)\n\n# example\n\n``` js\nvar detect = require('lexical-scope');\nvar fs = require('fs');\nvar src = fs.readFileSync(__dirname + '/src.js');\n\nvar scope = detect(src);\nconsole.dir(scope);\n```\n\ninput:\n\n```\nvar x = 5;\nvar y = 3, z = 2;\n\nw.foo();\nw = 2;\n\nRAWR=444;\nRAWR.foo();\n\nBLARG=3;\n\nfoo(function () {\n var BAR = 3;\n process.nextTick(function (ZZZZZZZZZZZZ) {\n console.log('beep boop');\n var xyz = 4;\n x += 10;\n x.zzzzzz;\n ZZZ=6;\n });\n function doom () {\n }\n ZZZ.foo();\n\n});\n\nconsole.log(xyz);\n```\n\noutput:\n\n```\n$ node example/detect.js\n{ locals: \n { '': [ 'x', 'y', 'z' ],\n 'body.7.arguments.0': [ 'BAR', 'doom' ],\n 'body.7.arguments.0.body.1.arguments.0': [ 'xyz' ],\n 'body.7.arguments.0.body.2': [] },\n globals: \n { implicit: [ 'w', 'foo', 'process', 'console', 'xyz' ],\n exported: [ 'w', 'RAWR', 'BLARG', 'ZZZ' ] } }\n```\n\n# live demo\n\nIf you are using a modern browser, you can go to http://lexical-scope.forbeslindesay.co.uk/ for a live demo.\n\n# methods\n\n``` js\nvar detect = require('lexical-scope')\n```\n\n## var scope = detect(src)\n\nReturn a `scope` structure from a javascript source string `src`.\n\n`scope.locals` maps scope name keys to an array of local variable names declared\nwith `var`. The key name `''` refers to the top-level scope.\n\n`scope.globals.implicit` contains the global variable names that are expected to\nalready exist in the environment by the script.\n\n`scope.globals.explicit` contains the global variable names that are exported by\nthe script.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install lexical-scope\n```\n\n# license\n\nMIT\n", + "readmeFilename": "readme.markdown", + "bugs": { + "url": "https://github.com/substack/lexical-scope/issues" + }, + "_id": "lexical-scope@0.0.12", + "_from": "lexical-scope@0.0.12" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown new file mode 100644 index 0000000..258bdb8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown @@ -0,0 +1,99 @@ +# lexical-scope + +detect global and local lexical identifiers from javascript source code + +[![browser support](http://ci.testling.com/substack/lexical-scope.png)](http://ci.testling.com/substack/lexical-scope) + +[![build status](https://secure.travis-ci.org/substack/lexical-scope.png)](http://travis-ci.org/substack/lexical-scope) + +# example + +``` js +var detect = require('lexical-scope'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/src.js'); + +var scope = detect(src); +console.dir(scope); +``` + +input: + +``` +var x = 5; +var y = 3, z = 2; + +w.foo(); +w = 2; + +RAWR=444; +RAWR.foo(); + +BLARG=3; + +foo(function () { + var BAR = 3; + process.nextTick(function (ZZZZZZZZZZZZ) { + console.log('beep boop'); + var xyz = 4; + x += 10; + x.zzzzzz; + ZZZ=6; + }); + function doom () { + } + ZZZ.foo(); + +}); + +console.log(xyz); +``` + +output: + +``` +$ node example/detect.js +{ locals: + { '': [ 'x', 'y', 'z' ], + 'body.7.arguments.0': [ 'BAR', 'doom' ], + 'body.7.arguments.0.body.1.arguments.0': [ 'xyz' ], + 'body.7.arguments.0.body.2': [] }, + globals: + { implicit: [ 'w', 'foo', 'process', 'console', 'xyz' ], + exported: [ 'w', 'RAWR', 'BLARG', 'ZZZ' ] } } +``` + +# live demo + +If you are using a modern browser, you can go to http://lexical-scope.forbeslindesay.co.uk/ for a live demo. + +# methods + +``` js +var detect = require('lexical-scope') +``` + +## var scope = detect(src) + +Return a `scope` structure from a javascript source string `src`. + +`scope.locals` maps scope name keys to an array of local variable names declared +with `var`. The key name `''` refers to the top-level scope. + +`scope.globals.implicit` contains the global variable names that are expected to +already exist in the environment by the script. + +`scope.globals.explicit` contains the global variable names that are exported by +the script. + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install lexical-scope +``` + +# license + +MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js new file mode 100644 index 0000000..ddfd549 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js @@ -0,0 +1,17 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/argument.js'); + +test('parameters from inline arguments', function (t) { + t.plan(3); + + var scope = detect(src); + t.same(scope.globals.implicit, []); + t.same(scope.globals.exported, []); + t.same(scope.locals, { + 'body.0': [ 'a' ], + '': [ 'foo' ], + 'body.0.body.body.1.argument': [ 'c' ] + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js new file mode 100644 index 0000000..cd8cb4b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js @@ -0,0 +1,13 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/assign_implicit.js'); + +test('assign from an implicit global', function (t) { + t.plan(3); + + var scope = detect(src); + t.same(scope.globals.implicit, [ 'bar' ]); + t.same(scope.globals.exported, []); + t.same(scope.locals, { '': [ 'foo' ] }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js new file mode 100644 index 0000000..0230ad6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js @@ -0,0 +1,17 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/detect.js'); + +test('check locals and globals', function (t) { + t.plan(3); + + var scope = detect(src); + t.same(scope.globals.implicit, [ + 'w', 'foo', 'process', 'console', 'AAA', 'BBB', 'CCC', 'xyz' + ]); + t.same(scope.globals.exported, [ + 'w', 'RAWR', 'BLARG', 'ZZZ' + ]); + t.same(scope.locals[''], [ 'x', 'y', 'z', 'beep' ]); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js new file mode 100644 index 0000000..55d20e3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js @@ -0,0 +1,6 @@ +function foo () { + var a; + return function (c) { + a = c; + }; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js new file mode 100644 index 0000000..a731d1e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js @@ -0,0 +1,2 @@ +var foo; +foo = bar; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js new file mode 100644 index 0000000..cb9c6f2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js @@ -0,0 +1,32 @@ +var x = 5; +var y = 3, z = 2; + +w.foo(); +w = 2; + +RAWR=444; +RAWR.foo(); + +BLARG=3; + +foo(function () { + var BAR = 3; + process.nextTick(function (ZZZZZZZZZZZZ) { + console.log('beep boop'); + var xyz = 4; + x += 10; + x.zzzzzz; + ZZZ=6; + }); + function doom () { + if (AAA.aaa) {} + BBB.bbb = 3; + var z = 2 + CCC.x * 5; + } + ZZZ.foo(); + +}); + +function beep () {} + +console.log(xyz); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js new file mode 100644 index 0000000..df549c1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js @@ -0,0 +1,6 @@ +exports.foo = function () { + return bar; +}; +exports.bar = function (bar) { + return bar; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js new file mode 100644 index 0000000..af6c275 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js @@ -0,0 +1,6 @@ +function foo (x) { + var a = x; + return function (c) { + a += c; + }; +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js new file mode 100644 index 0000000..1e6900e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js @@ -0,0 +1 @@ +module.exports = {foo: bar} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js new file mode 100644 index 0000000..8cdd57b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js @@ -0,0 +1,5 @@ +function foo() { + return { + bar: true + } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js new file mode 100644 index 0000000..85dc112 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js @@ -0,0 +1,2 @@ +exports.filename = __filename; +exports.dirname = __dirname; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js new file mode 100644 index 0000000..990d068 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js @@ -0,0 +1,18 @@ + +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/multiple-exports.js'); + +test('multiple-exports', function (t) { + t.plan(3); + + var scope = detect(src); + t.same(scope.globals.implicit.sort(), ['bar', 'exports'].sort()); + t.same(scope.globals.exported, []); + t.same(scope.locals, { + '':[], + 'body.1.expression.right': ['bar'], + 'body.0.expression.right': [] + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js new file mode 100644 index 0000000..421d711 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js @@ -0,0 +1,17 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/named_arg.js'); + +test('named argument parameter', function (t) { + t.plan(3); + + var scope = detect(src); + t.same(scope.globals.implicit, []); + t.same(scope.globals.exported, []); + t.same(scope.locals, { + 'body.0': [ 'a', 'x' ], + '': [ 'foo' ], + 'body.0.body.body.1.argument': [ 'c' ] + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js new file mode 100644 index 0000000..64b8d5e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js @@ -0,0 +1,16 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/obj.js'); + +test('globals on the right-hand of a colon in an object literal', function (t) { + t.plan(3); + + var scope = detect(src); + t.same( + scope.globals.implicit.sort(), + [ 'bar', 'module' ].sort() + ); + t.same(scope.globals.exported, []); + t.same(scope.locals, { '': [] }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json new file mode 100644 index 0000000..10dcae1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json @@ -0,0 +1,5 @@ +{ + "name": "lexical-scope-test", + "version": "0.0.0", + "browserify": { "transform": "brfs" } +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js new file mode 100644 index 0000000..442d91a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js @@ -0,0 +1,13 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/return_hash.js'); + +test('return hash', function (t) { + t.plan(3); + + var scope = detect(src); + t.same(scope.globals.implicit, []); + t.same(scope.globals.exported, []); + t.same(scope.locals, { 'body.0': [], '': [ 'foo' ] }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js new file mode 100644 index 0000000..28b283d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js @@ -0,0 +1,16 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/files/right_hand.js'); + +test('globals on the right-hand of assignment', function (t) { + t.plan(3); + + var scope = detect(src); + t.same( + scope.globals.implicit.sort(), + [ 'exports', '__dirname', '__filename' ].sort() + ); + t.same(scope.globals.exported, []); + t.same(scope.locals, { '': [] }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js new file mode 100644 index 0000000..5445580 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js @@ -0,0 +1,19 @@ +var test = require('tape'); +var detect = require('../'); +var fs = require('fs'); +var src = '#!/beep/boop blah\n' + + fs.readFileSync(__dirname + '/files/detect.js') +; + +test('shebangs', function (t) { + t.plan(3); + + var scope = detect(src); + t.same(scope.globals.implicit, [ + 'w', 'foo', 'process', 'console', 'AAA', 'BBB', 'CCC', 'xyz' + ]); + t.same(scope.globals.exported, [ + 'w', 'RAWR', 'BLARG', 'ZZZ' + ]); + t.same(scope.locals[''], [ 'x', 'y', 'z', 'beep' ]); +}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json new file mode 100644 index 0000000..498a528 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json @@ -0,0 +1,30 @@ +{ + "name": "with", + "version": "1.0.4", + "description": "Compile time `with` for strict mode JavaScript", + "main": "index.js", + "scripts": { + "test": "mocha -R spec" + }, + "repository": { + "type": "git", + "url": "https://github.com/ForbesLindesay/with.git" + }, + "author": { + "name": "ForbesLindesay" + }, + "license": "MIT", + "dependencies": { + "lexical-scope": "0.0.12" + }, + "devDependencies": { + "mocha": "~1.9.0" + }, + "readme": "# with\r\n\r\nCompile time `with` for strict mode JavaScript\r\n\r\n[![build status](https://secure.travis-ci.org/ForbesLindesay/with.png)](http://travis-ci.org/ForbesLindesay/with)\r\n[![Dependency Status](https://gemnasium.com/ForbesLindesay/with.png)](https://gemnasium.com/ForbesLindesay/with)\r\n[![NPM version](https://badge.fury.io/js/with.png)](http://badge.fury.io/js/with)\r\n\r\n## Installation\r\n\r\n $ npm install with\r\n\r\n## Usage\r\n\r\n```js\r\nvar addWith = require('with')\r\n\r\naddWith('obj', 'console.log(a)')\r\n// => \"var a = obj.a;console.log(a)\"\r\n\r\naddWith(\"obj || {}\", \"console.log(helper(a))\", [\"helper\"])\r\n// => var locals = (obj || {}),a = locals.a;console.log(helper(a))\r\n```\r\n\r\n## API\r\n\r\n### addWith(obj, src, [exclude])\r\n\r\nThe idea is that this is roughly equivallent to:\r\n\r\n```js\r\nwith (obj) {\r\n src\r\n}\r\n```\r\n\r\nThere are a few differences though. For starters, it will be assumed that all variables used in `src` come from `obj` so any that don't (e.g. template helpers) need to have their names parsed to `exclude` as an array.\r\n\r\nIt also makes everything be declared, so you can always do:\r\n\r\n```js\r\nif (foo === undefined)\r\n```\r\n\r\ninstead of\r\n\r\n```js\r\nif (typeof foo === 'undefined')\r\n```\r\n\r\nIt is also safe to use in strict mode (unlike `with`) and it minifies properly (`with` disables virtually all minification).\r\n\r\n## License\r\n\r\n MIT", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/ForbesLindesay/with/issues" + }, + "_id": "with@1.0.4", + "_from": "with@1.0.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js new file mode 100644 index 0000000..3bfc6ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js @@ -0,0 +1,107 @@ +var assert = require('assert') + +var addWith = require('../') + +var sentinel = {} +var sentinel2 = {} +describe('addWith("obj", "console.log(a)")', function () { + it('adds the necessary variable declarations', function (done) { + var src = addWith('obj', 'console.log(a)') + // var a = obj.a;console.log(a) + Function('console,obj', src)( + { + log: function (a) { + assert(a === sentinel) + done() + } + }, + {a: sentinel}) + }) +}) +describe('addWith("obj || {}", "console.log(a)")', function () { + it('adds the necessary variable declarations', function (done) { + var src = addWith('obj || {}', 'console.log(a)') + // var locals = (obj || {}),a = locals.a;console.log(a) + var expected = 2 + Function('console,obj', src)( + { + log: function (a) { + assert(a === sentinel) + if (0 === --expected) done() + } + }, + {a: sentinel}) + Function('console,obj', src)( + { + log: function (a) { + assert(a === undefined) + if (0 === --expected) done() + } + }) + }) +}) +describe('addWith("obj", "console.log(helper(a))", ["helper"])', function () { + it('adds the necessary variable declarations', function (done) { + var src = addWith('obj', 'console.log(helper(a))', ['helper']) + // var a = obj.a;console.log(helper(a)) + Function('console,obj,helper', src)( + { + log: function (a) { + assert(a === sentinel) + done() + } + }, + {a: sentinel2}, + function (a) { + assert(a === sentinel2) + return sentinel + }) + }) +}) +describe('addWith("obj || {}", "console.log(locals(a))", ["locals_"])', function () { + it('adds the necessary variable declarations', function (done) { + var src = addWith('obj || {}', 'console.log(locals(a))', ['locals_']) + // var locals__ = (obj || {}),locals = locals__.locals,a = locals__.a;console.log(locals(a)) + Function('console,obj', src)( + { + log: function (a) { + assert(a === sentinel) + done() + } + }, + { + a: sentinel2, + locals: function (a) { + assert(a === sentinel2) + return sentinel + } + }) + }) +}) + +describe('addWith("obj || {}", "console.log(\'foo\')")', function () { + it('passes through', function (done) { + var src = addWith('obj || {}', 'console.log("foo")') + // console.log(\'foo\') + Function('console,obj', src)( + { + log: function (a) { + assert(a === 'foo') + done() + } + }) + }) +}) + +describe('addWith("obj || {}", "obj.foo")', function () { + it('passes through', function (done) { + var src = addWith('obj || {}', 'obj.bar = obj.foo') + // obj.bar = obj.foo + var obj = { + foo: 'ding' + } + Function('obj', src)(obj) + assert(obj.bar === 'ding') + done() + }) +}) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/package.json b/nodejs-mysql-tutorial/node_modules/jade/package.json new file mode 100644 index 0000000..864ac77 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/jade/package.json @@ -0,0 +1,62 @@ +{ + "name": "jade", + "description": "Jade template engine", + "version": "0.31.1", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/jade" + }, + "main": "./index.js", + "bin": { + "jade": "./bin/jade" + }, + "man": [ + "./jade.1" + ], + "dependencies": { + "commander": "1.1.1", + "mkdirp": "0.3.x", + "transformers": "2.0.1", + "character-parser": "1.0.2", + "monocle": "0.1.48", + "with": "1.0.4" + }, + "devDependencies": { + "coffee-script": "*", + "mocha": "*", + "markdown": "*", + "stylus": "*", + "uubench": "*", + "should": "*", + "less": "*", + "uglify-js": "*", + "browserify": "*" + }, + "component": { + "scripts": { + "jade": "runtime.js" + } + }, + "scripts": { + "test": "mocha -R spec", + "prepublish": "npm prune", + "build": "npm run compile", + "compile": "npm run compile-full && npm run compile-runtime", + "compile-full": "browserify ./lib/jade.js --standalone jade -x ./node_modules/transformers > jade.js", + "compile-runtime": "browserify ./lib/runtime.js --standalone jade > runtime.js" + }, + "browser": { + "./lib/filters.js": "./lib/filters-client.js" + }, + "readme": "# Jade - template engine \r\n[![Build Status](https://secure.travis-ci.org/visionmedia/jade.png)](http://travis-ci.org/visionmedia/jade)\r\n[![Dependency Status](https://gemnasium.com/visionmedia/jade.png)](https://gemnasium.com/visionmedia/jade)\r\n[![NPM version](https://badge.fury.io/js/jade.png)](http://badge.fury.io/js/jade)\r\n\r\n Jade is a high performance template engine heavily influenced by [Haml](http://haml-lang.com)\r\n and implemented with JavaScript for [node](http://nodejs.org). For discussion join the [Google Group](http://groups.google.com/group/jadejs).\r\n\r\n## Anouncment\r\n\r\nJade version 0.31.0 deprecated implicit text only support for scripts and styles. To fix this all you need to do is add a `.` character after the script or style tag.\r\n\r\nIt is hoped that this change will make jade easier for newcommers to learn without affecting the power of the language or leading to excessive verboseness.\r\n\r\nIf you have a lot of jade files that need fixing you can use [fix-jade](https://github.com/ForbesLindesay/fix-jade) to attempt to automate the process.\r\n\r\n## Test drive\r\n\r\n You can test drive Jade online [here](http://naltatis.github.com/jade-syntax-docs).\r\n\r\n## README Contents\r\n\r\n- [Features](#a1)\r\n- [Implementations](#a2)\r\n- [Installation](#a3)\r\n- [Browser Support](#a4)\r\n- [Public API](#a5)\r\n- [Syntax](#a6)\r\n - [Line Endings](#a6-1)\r\n - [Tags](#a6-2)\r\n - [Tag Text](#a6-3)\r\n - [Comments](#a6-4)\r\n - [Block Comments](#a6-5)\r\n - [Nesting](#a6-6)\r\n - [Block Expansion](#a6-7)\r\n - [Case](#a6-8)\r\n - [Attributes](#a6-9)\r\n - [HTML](#a6-10)\r\n - [Doctypes](#a6-11)\r\n- [Filters](#a7)\r\n- [Code](#a8)\r\n- [Iteration](#a9)\r\n- [Conditionals](#a10)\r\n- [Template inheritance](#a11)\r\n- [Block append / prepend](#a12)\r\n- [Includes](#a13)\r\n- [Mixins](#a14)\r\n- [Generated Output](#a15)\r\n- [Example Makefile](#a16)\r\n- [jade(1)](#a17)\r\n- [Tutorials](#a18)\r\n- [License](#a19)\r\n\r\n\r\n## Features\r\n\r\n - client-side support\r\n - great readability\r\n - flexible indentation\r\n - block-expansion\r\n - mixins\r\n - static includes\r\n - attribute interpolation\r\n - code is escaped by default for security\r\n - contextual error reporting at compile & run time\r\n - executable for compiling jade templates via the command line\r\n - html 5 mode (the default doctype)\r\n - optional memory caching\r\n - combine dynamic and static tag classes\r\n - parse tree manipulation via _filters_\r\n - template inheritance\r\n - block append / prepend\r\n - supports [Express JS](http://expressjs.com) out of the box\r\n - transparent iteration over objects, arrays, and even non-enumerables via `each`\r\n - block comments\r\n - no tag prefix\r\n - filters\r\n - :stylus must have [stylus](http://github.com/LearnBoost/stylus) installed\r\n - :less must have [less.js](http://github.com/cloudhead/less.js) installed\r\n - :markdown must have [markdown-js](http://github.com/evilstreak/markdown-js), [node-discount](http://github.com/visionmedia/node-discount), or [marked](http://github.com/chjj/marked) installed\r\n - :cdata\r\n - :coffeescript must have [coffee-script](http://jashkenas.github.com/coffee-script/) installed\r\n - [Emacs Mode](https://github.com/brianc/jade-mode)\r\n - [Vim Syntax](https://github.com/digitaltoad/vim-jade)\r\n - [TextMate Bundle](http://github.com/miksago/jade-tmbundle)\r\n - [Coda/SubEtha syntax Mode](https://github.com/aaronmccall/jade.mode)\r\n - [Screencasts](http://tjholowaychuk.com/post/1004255394/jade-screencast-template-engine-for-nodejs)\r\n - [html2jade](https://github.com/donpark/html2jade) converter\r\n\r\n\r\n## Implementations\r\n\r\n - [php](http://github.com/everzet/jade.php)\r\n - [scala](http://scalate.fusesource.org/versions/snapshot/documentation/scaml-reference.html)\r\n - [ruby](https://github.com/slim-template/slim)\r\n - [python](https://github.com/SyrusAkbary/pyjade)\r\n - [java](https://github.com/neuland/jade4j)\r\n\r\n\r\n## Installation\r\n\r\nvia npm:\r\n\r\n```bash\r\n$ npm install jade\r\n```\r\n\r\n\r\n## Browser Support\r\n\r\n To compile jade to a single file compatible for client-side use simply execute:\r\n\r\n```bash\r\n$ make jade.js\r\n```\r\n\r\n Alternatively, if uglifyjs is installed via npm (`npm install uglify-js`) you may execute the following which will create both files. However each release builds these for you.\r\n\r\n```bash\r\n$ make jade.min.js\r\n```\r\n\r\n By default Jade instruments templates with line number statements such as `__.lineno = 3` for debugging purposes. When used in a browser it's useful to minimize this boiler plate, you can do so by passing the option `{ compileDebug: false }`. The following template\r\n\r\n```jade\r\np Hello #{name}\r\n```\r\n\r\n Can then be as small as the following generated function:\r\n\r\n```js\r\nfunction anonymous(locals, attrs, escape, rethrow) {\r\n var buf = [];\r\n with (locals || {}) {\r\n var interp;\r\n buf.push('\\n

    Hello ' + escape((interp = name) == null ? '' : interp) + '\\n

    ');\r\n }\r\n return buf.join(\"\");\r\n}\r\n```\r\n\r\n Through the use of Jade's `./runtime.js` you may utilize these pre-compiled templates on the client-side _without_ Jade itself, all you need is the associated utility functions (in runtime.js), which are then available as `jade.attrs`, `jade.escape` etc. To enable this you should pass `{ client: true }` to `jade.compile()` to tell Jade to reference the helper functions\r\n via `jade.attrs`, `jade.escape` etc.\r\n\r\n```js\r\nfunction anonymous(locals, attrs, escape, rethrow) {\r\n var attrs = jade.attrs, escape = jade.escape, rethrow = jade.rethrow;\r\n var buf = [];\r\n with (locals || {}) {\r\n var interp;\r\n buf.push('\\n

    Hello ' + escape((interp = name) == null ? '' : interp) + '\\n

    ');\r\n }\r\n return buf.join(\"\");\r\n}\r\n```\r\n\r\n
    \r\n## Public API\r\n\r\n```js\r\nvar jade = require('jade');\r\n\r\n// Compile a function\r\nvar fn = jade.compile('string of jade', options);\r\nfn(locals);\r\n```\r\n\r\n### Options\r\n\r\n - `self` Use a `self` namespace to hold the locals _(false by default)_\r\n - `locals` Local variable object\r\n - `filename` Used in exceptions, and required when using includes\r\n - `debug` Outputs tokens and function body generated\r\n - `compiler` Compiler to replace jade's default\r\n - `compileDebug` When `false` no debug instrumentation is compiled\r\n - `pretty` Add pretty-indentation whitespace to output _(false by default)_\r\n\r\n\r\n## Syntax\r\n\r\n\r\n### Line Endings\r\n\r\n**CRLF** and **CR** are converted to **LF** before parsing.\r\n\r\n\r\n### Tags\r\n\r\nA tag is simply a leading word:\r\n\r\n```jade\r\nhtml\r\n```\r\n\r\nfor example is converted to ``\r\n\r\ntags can also have ids:\r\n\r\n```jade\r\ndiv#container\r\n```\r\n\r\nwhich would render `
    `\r\n\r\nhow about some classes?\r\n\r\n```jade\r\ndiv.user-details\r\n```\r\n\r\nrenders `
    `\r\n\r\nmultiple classes? _and_ an id? sure:\r\n\r\n```jade\r\ndiv#foo.bar.baz\r\n```\r\n\r\nrenders `
    `\r\n\r\ndiv div div sure is annoying, how about:\r\n\r\n```jade\r\n#foo\r\n.bar\r\n```\r\n\r\nwhich is syntactic sugar for what we have already been doing, and outputs:\r\n\r\n```html\r\n
    \r\n```\r\n\r\n
    \r\n### Tag Text\r\n\r\nSimply place some content after the tag:\r\n\r\n```jade\r\np wahoo!\r\n```\r\n\r\nrenders `

    wahoo!

    `.\r\n\r\nwell cool, but how about large bodies of text:\r\n\r\n```jade\r\np\r\n | foo bar baz\r\n | rawr rawr\r\n | super cool\r\n | go jade go\r\n```\r\n\r\nrenders `

    foo bar baz rawr.....

    `\r\n\r\ninterpolation? yup! both types of text can utilize interpolation,\r\nif we passed `{ name: 'tj', email: 'tj@vision-media.ca' }` to the compiled function we can do the following:\r\n\r\n```jade\r\n#user #{name} <#{email}>\r\n```\r\n\r\noutputs `
    tj <tj@vision-media.ca>
    `\r\n\r\nActually want `#{}` for some reason? escape it!\r\n\r\n```jade\r\np \\#{something}\r\n```\r\n\r\nnow we have `

    #{something}

    `\r\n\r\nWe can also utilize the unescaped variant `!{html}`, so the following\r\nwill result in a literal script tag:\r\n\r\n```jade\r\n- var html = \"\"\r\n| !{html}\r\n```\r\n\r\nNested tags that also contain text can optionally use a text block:\r\n\r\n```jade\r\nlabel\r\n | Username:\r\n input(name='user[name]')\r\n```\r\n\r\nor immediate tag text:\r\n\r\n```jade\r\nlabel Username:\r\n input(name='user[name]')\r\n```\r\n\r\nAs an alternative, we may use a trailing `.` to indicate a text block, for example:\r\n\r\n```jade\r\np.\r\n foo asdf\r\n asdf\r\n asdfasdfaf\r\n asdf\r\n asd.\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n

    foo asdf\r\nasdf\r\n asdfasdfaf\r\n asdf\r\nasd.\r\n

    \r\n```\r\n\r\nThis however differs from a trailing `.` followed by a space, which although is ignored by the Jade parser, tells Jade that this period is a literal:\r\n\r\n```jade\r\np .\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n

    .

    \r\n```\r\n\r\nIt should be noted that text blocks should be doubled escaped. For example if you desire the following output.\r\n\r\n```html\r\n

    foo\\bar

    \r\n```\r\n\r\nuse:\r\n\r\n```jade\r\np.\r\n foo\\\\bar\r\n```\r\n\r\n
    \r\n### Comments\r\n\r\nSingle line comments currently look the same as JavaScript comments,\r\naka `//` and must be placed on their own line:\r\n\r\n```jade\r\n// just some paragraphs\r\np foo\r\np bar\r\n```\r\n\r\nwould output\r\n\r\n```html\r\n\r\n

    foo

    \r\n

    bar

    \r\n```\r\n\r\nJade also supports unbuffered comments, by simply adding a hyphen:\r\n\r\n```jade\r\n//- will not output within markup\r\np foo\r\np bar\r\n```\r\n\r\noutputting\r\n\r\n```html\r\n

    foo

    \r\n

    bar

    \r\n```\r\n\r\n
    \r\n### Block Comments\r\n\r\n A block comment is legal as well:\r\n\r\n```jade\r\nbody\r\n //\r\n #content\r\n h1 Example\r\n```\r\n\r\noutputting\r\n\r\n```html\r\n\r\n \r\n\r\n```\r\n\r\nJade supports conditional-comments as well, for example:\r\n\r\n```jade\r\nhead\r\n //if lt IE 8\r\n script(src='/ie-sucks.js')\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n\r\n \r\n\r\n```\r\n\r\n\r\n### Nesting\r\n\r\n Jade supports nesting to define the tags in a natural way:\r\n\r\n```jade\r\nul\r\n li.first\r\n a(href='#') foo\r\n li\r\n a(href='#') bar\r\n li.last\r\n a(href='#') baz\r\n```\r\n\r\n\r\n### Block Expansion\r\n\r\n Block expansion allows you to create terse single-line nested tags,\r\n the following example is equivalent to the nesting example above.\r\n\r\n```jade\r\nul\r\n li.first: a(href='#') foo\r\n li: a(href='#') bar\r\n li.last: a(href='#') baz\r\n```\r\n\r\n\r\n### Case\r\n\r\n The case statement takes the following form:\r\n\r\n```jade\r\nhtml\r\n body\r\n friends = 10\r\n case friends\r\n when 0\r\n p you have no friends\r\n when 1\r\n p you have a friend\r\n default\r\n p you have #{friends} friends\r\n```\r\n\r\n Block expansion may also be used:\r\n\r\n```jade\r\nfriends = 5\r\n\r\nhtml\r\n body\r\n case friends\r\n when 0: p you have no friends\r\n when 1: p you have a friend\r\n default: p you have #{friends} friends\r\n```\r\n\r\n\r\n### Attributes\r\n\r\nJade currently supports `(` and `)` as attribute delimiters.\r\n\r\n```jade\r\na(href='/login', title='View login page') Login\r\n```\r\n\r\nWhen a value is `undefined` or `null` the attribute is _not_ added,\r\nso this is fine, it will not compile `something=\"null\"`.\r\n\r\n```jade\r\ndiv(something=null)\r\n```\r\n\r\nBoolean attributes are also supported:\r\n\r\n```jade\r\ninput(type=\"checkbox\", checked)\r\n```\r\n\r\nBoolean attributes with code will only output the attribute when `true`:\r\n\r\n```jade\r\ninput(type=\"checkbox\", checked=someValue)\r\n```\r\n\r\nMultiple lines work too:\r\n\r\n```jade\r\ninput(type='checkbox',\r\n name='agreement',\r\n checked)\r\n```\r\n\r\nMultiple lines without the comma work fine:\r\n\r\n```jade\r\ninput(type='checkbox'\r\n name='agreement'\r\n checked)\r\n```\r\n\r\nFunky whitespace? fine:\r\n\r\n```jade\r\ninput(\r\n type='checkbox'\r\n name='agreement'\r\n checked)\r\n```\r\n\r\nColons work:\r\n\r\n```jade\r\nrss(xmlns:atom=\"atom\")\r\n```\r\n\r\nSuppose we have the `user` local `{ id: 12, name: 'tobi' }`\r\nand we wish to create an anchor tag with `href` pointing to \"/user/12\"\r\nwe could use regular javascript concatenation:\r\n\r\n```jade\r\na(href='/user/' + user.id)= user.name\r\n```\r\n\r\nor we could use jade's interpolation, which I added because everyone\r\nusing Ruby or CoffeeScript seems to think this is legal js..:\r\n\r\n```jade\r\na(href='/user/#{user.id}')= user.name\r\n```\r\n\r\nThe `class` attribute is special-cased when an array is given,\r\nallowing you to pass an array such as `bodyClasses = ['user', 'authenticated']` directly:\r\n\r\n```jade\r\nbody(class=bodyClasses)\r\n```\r\n\r\n\r\n### HTML\r\n\r\n Inline html is fine, we can use the pipe syntax to\r\n write arbitrary text, in this case some html:\r\n\r\n```jade\r\nhtml\r\n body\r\n |

    Title

    \r\n |

    foo bar baz

    \r\n```\r\n\r\n Or we can use the trailing `.` to indicate to Jade that we\r\n only want text in this block, allowing us to omit the pipes:\r\n\r\n```jade\r\nhtml\r\n body.\r\n

    Title

    \r\n

    foo bar baz

    \r\n```\r\n\r\n Both of these examples yield the same result:\r\n\r\n```html\r\n

    Title

    \r\n

    foo bar baz

    \r\n\r\n```\r\n\r\n The same rule applies for anywhere you can have text\r\n in jade, raw html is fine:\r\n\r\n```jade\r\nhtml\r\n body\r\n h1 User #{name}\r\n```\r\n\r\n
    \r\n### Doctypes\r\n\r\nTo add a doctype simply use `!!!`, or `doctype` followed by an optional value:\r\n\r\n```jade\r\n!!!\r\n```\r\n\r\nor\r\n\r\n```jade\r\ndoctype\r\n```\r\n\r\nWill output the _html 5_ doctype, however:\r\n\r\n```jade\r\n!!! transitional\r\n```\r\n\r\nWill output the _transitional_ doctype.\r\n\r\nDoctypes are case-insensitive, so the following are equivalent:\r\n\r\n```jade\r\ndoctype Basic\r\ndoctype basic\r\n```\r\n\r\nit's also possible to simply pass a doctype literal:\r\n\r\n```jade\r\ndoctype html PUBLIC \"-//W3C//DTD XHTML Basic 1.1//EN\"\r\n```\r\n\r\nyielding:\r\n\r\n```html\r\n\r\n```\r\n\r\nBelow are the doctypes defined by default, which can easily be extended:\r\n\r\n```js\r\nvar doctypes = exports.doctypes = {\r\n '5': '',\r\n 'default': '',\r\n 'xml': '',\r\n 'transitional': '',\r\n 'strict': '',\r\n 'frameset': '',\r\n '1.1': '',\r\n 'basic': '',\r\n 'mobile': ''\r\n};\r\n```\r\n\r\nTo alter the default simply change:\r\n\r\n```js\r\njade.doctypes.default = 'whatever you want';\r\n```\r\n\r\n\r\n## Filters\r\n\r\nFilters are prefixed with `:`, for example `:markdown` and\r\npass the following block of text to an arbitrary function for processing. View the _features_\r\nat the top of this document for available filters.\r\n\r\n```jade\r\nbody\r\n :markdown\r\n Woah! jade _and_ markdown, very **cool**\r\n we can even link to [stuff](http://google.com)\r\n```\r\n\r\nRenders:\r\n\r\n```html\r\n

    Woah! jade and markdown, very cool we can even link to stuff

    \r\n```\r\n\r\n\r\n## Code\r\n\r\nJade currently supports three classifications of executable code. The first\r\nis prefixed by `-`, and is not buffered:\r\n\r\n```jade\r\n- var foo = 'bar';\r\n```\r\n\r\nThis can be used for conditionals, or iteration:\r\n\r\n```jade\r\n- for (var key in obj)\r\n p= obj[key]\r\n```\r\n\r\nDue to Jade's buffering techniques the following is valid as well:\r\n\r\n```jade\r\n- if (foo)\r\n ul\r\n li yay\r\n li foo\r\n li worked\r\n- else\r\n p oh no! didnt work\r\n```\r\n\r\nHell, even verbose iteration:\r\n\r\n```jade\r\n- if (items.length)\r\n ul\r\n - items.forEach(function(item){\r\n li= item\r\n - })\r\n```\r\n\r\nAnything you want!\r\n\r\nNext up we have _escaped_ buffered code, which is used to\r\nbuffer a return value, which is prefixed by `=`:\r\n\r\n```jade\r\n- var foo = 'bar'\r\n= foo\r\nh1= foo\r\n```\r\n\r\nWhich outputs `bar

    bar

    `. Code buffered by `=` is escaped\r\nby default for security, however to output unescaped return values\r\nyou may use `!=`:\r\n\r\n```jade\r\np!= aVarContainingMoreHTML\r\n```\r\n\r\n Jade also has designer-friendly variants, making the literal JavaScript\r\n more expressive and declarative. For example the following assignments\r\n are equivalent, and the expression is still regular javascript:\r\n\r\n```jade\r\n- var foo = 'foo ' + 'bar'\r\nfoo = 'foo ' + 'bar'\r\n```\r\n\r\n Likewise Jade has first-class `if`, `else if`, `else`, `until`, `while`, `unless` among others, however you must remember that the expressions are still regular javascript:\r\n\r\n```jade\r\nif foo == 'bar'\r\n ul\r\n li yay\r\n li foo\r\n li worked\r\nelse\r\n p oh no! didnt work\r\n```\r\n\r\n
    \r\n## Iteration\r\n\r\n Along with vanilla JavaScript Jade also supports a subset of\r\n constructs that allow you to create more designer-friendly templates,\r\n one of these constructs is `each`, taking the form:\r\n\r\n```jade\r\neach VAL[, KEY] in OBJ\r\n```\r\n\r\nAn example iterating over an array:\r\n\r\n```jade\r\n- var items = [\"one\", \"two\", \"three\"]\r\neach item in items\r\n li= item\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n
  • one
  • \r\n
  • two
  • \r\n
  • three
  • \r\n```\r\n\r\niterating an array with index:\r\n\r\n```jade\r\nitems = [\"one\", \"two\", \"three\"]\r\neach item, i in items\r\n li #{item}: #{i}\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n
  • one: 0
  • \r\n
  • two: 1
  • \r\n
  • three: 2
  • \r\n```\r\n\r\niterating an object's keys and values:\r\n\r\n```jade\r\nobj = { foo: 'bar' }\r\neach val, key in obj\r\n li #{key}: #{val}\r\n```\r\n\r\nwould output `
  • foo: bar
  • `\r\n\r\nInternally Jade converts these statements to regular\r\nJavaScript loops such as `users.forEach(function(user){`,\r\nso lexical scope and nesting applies as it would with regular\r\nJavaScript:\r\n\r\n```jade\r\neach user in users\r\n each role in user.roles\r\n li= role\r\n```\r\n\r\n You may also use `for` if you prefer:\r\n\r\n```jade\r\nfor user in users\r\n for role in user.roles\r\n li= role\r\n```\r\n\r\n
    \r\n## Conditionals\r\n\r\n Jade conditionals are equivalent to those using the code (`-`) prefix,\r\n however allow you to ditch parenthesis to become more designer friendly,\r\n however keep in mind the expression given is _regular_ JavaScript:\r\n\r\n```jade\r\nfor user in users\r\n if user.role == 'admin'\r\n p #{user.name} is an admin\r\n else\r\n p= user.name\r\n```\r\n\r\n is equivalent to the following using vanilla JavaScript literals:\r\n\r\n```jade\r\nfor user in users\r\n - if (user.role == 'admin')\r\n p #{user.name} is an admin\r\n - else\r\n p= user.name\r\n```\r\n\r\n Jade also provides `unless` which is equivalent to `if (!(expr))`:\r\n\r\n```jade\r\nfor user in users\r\n unless user.isAnonymous\r\n p\r\n | Click to view\r\n a(href='/users/' + user.id)= user.name\r\n```\r\n\r\n\r\n## Template inheritance\r\n\r\n Jade supports template inheritance via the `block` and `extends` keywords. A block is simply a \"block\" of Jade that may be replaced within a child template, this process is recursive. To activate template inheritance in Express 2.x you must add: `app.set('view options', { layout: false });`.\r\n\r\n Jade blocks can provide default content if desired, however optional as shown below by `block scripts`, `block content`, and `block foot`.\r\n\r\n```jade\r\nhtml\r\n head\r\n h1 My Site - #{title}\r\n block scripts\r\n script(src='/jquery.js')\r\n body\r\n block content\r\n block foot\r\n #footer\r\n p some footer content\r\n```\r\n\r\n Now to extend the layout, simply create a new file and use the `extends` directive as shown below, giving the path (with or without the .jade extension). You may now define one or more blocks that will override the parent block content, note that here the `foot` block is _not_ redefined and will output \"some footer content\".\r\n\r\n```jade\r\nextends layout\r\n\r\nblock scripts\r\n script(src='/jquery.js')\r\n script(src='/pets.js')\r\n\r\nblock content\r\n h1= title\r\n each pet in pets\r\n include pet\r\n```\r\n\r\n It's also possible to override a block to provide additional blocks, as shown in the following example where `content` now exposes a `sidebar` and `primary` block for overriding, or the child template could override `content` all together.\r\n\r\n```jade\r\nextends regular-layout\r\n\r\nblock content\r\n .sidebar\r\n block sidebar\r\n p nothing\r\n .primary\r\n block primary\r\n p nothing\r\n```\r\n\r\n\r\n## Block append / prepend\r\n\r\n Jade allows you to _replace_ (default), _prepend_, or _append_ blocks. Suppose for example you have default scripts in a \"head\" block that you wish to utilize on _every_ page, you might do this:\r\n\r\n```jade\r\nhtml\r\n head\r\n block head\r\n script(src='/vendor/jquery.js')\r\n script(src='/vendor/caustic.js')\r\n body\r\n block content\r\n```\r\n\r\n Now suppose you have a page of your application for a JavaScript game, you want some game related scripts as well as these defaults, you can simply `append` the block:\r\n\r\n```jade\r\nextends layout\r\n\r\nblock append head\r\n script(src='/vendor/three.js')\r\n script(src='/game.js')\r\n```\r\n\r\n When using `block append` or `block prepend` the `block` is optional:\r\n\r\n```jade\r\nextends layout\r\n\r\nappend head\r\n script(src='/vendor/three.js')\r\n script(src='/game.js')\r\n```\r\n\r\n\r\n## Includes\r\n\r\n Includes allow you to statically include chunks of Jade,\r\n or other content like css, or html which lives in separate files. The classical example is including a header and footer. Suppose we have the following directory structure:\r\n\r\n ./layout.jade\r\n ./includes/\r\n ./head.jade\r\n ./foot.jade\r\n\r\nand the following _layout.jade_:\r\n\r\n```jade\r\nhtml\r\n include includes/head\r\n body\r\n h1 My Site\r\n p Welcome to my super amazing site.\r\n include includes/foot\r\n```\r\n\r\nboth includes _includes/head_ and _includes/foot_ are\r\nread relative to the `filename` option given to _layout.jade_,\r\nwhich should be an absolute path to this file, however Express\r\ndoes this for you. Include then parses these files, and injects\r\nthe AST produced to render what you would expect:\r\n\r\n```html\r\n\r\n \r\n My Site\r\n \r\n \r\n \r\n

    My Site

    \r\n

    Welcome to my super lame site.

    \r\n
    \r\n

    Copyright>(c) foobar

    \r\n
    \r\n \r\n\r\n```\r\n\r\nAs mentioned `include` can be used to include other content\r\nsuch as html or css. By providing an extension, Jade will\r\nread that file in, apply any [filter](#a7) matching the file's\r\nextension, and insert that content into the output.\r\n\r\n```jade\r\nhtml\r\n head\r\n //- css and js have simple filters that wrap them in\r\n + + + + +
    +

    {linked-path}

    + {files} +
    + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html new file mode 100644 index 0000000..a6d3faf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html @@ -0,0 +1,14 @@ + + + + {error} + + + +
    +

    {title}

    +

    {statusCode} {error}

    +
      {stack}
    +
    + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/favicon.ico b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..895fc96a76b68b4924f1c51d022e1b82fa0f461f GIT binary patch literal 1406 zcmZQzU<5(|0R}M0U}azs1F|%L7$l?s#Ec9aKoZP=&}i&OouUjIY8@C}uZw4x5z5N2 zvEG^C^vXtt_xtJ?p3O32c(KTx;lsgZhW%5M85Sf}k-mf`L80)|7ga~M{a znlL=>m1Q`#uoPkbC~GtXMnhnDh5$DU1D6mx+;2QAKt3ZQFH}H~1y~00GcqzVg9QXw z_<%(a7y$V|wJgF=E>MgE#Aid|14}IyCM5MhEnxFF;pTzOK(>#80puP=gnOXwAd33` mpMe2}f66m3eB@_fcnmb^7!b1nO#opK8zcsj1F30)+jEP);68^d)m`eN0o>(5%D`Q(1;j>g@G;xlf`0VBQ`PFY?6)!N&f?*K}$p; zB!U=NBn{eB8${1}&-2_L*HuZp@ZP1@clS@cHp)4iM1ewzw59vko7eMM{e9z|%NNdX z0V;`?KKSzTCvTm5bc{L^CIKLUxc2X{i{ISz$8Sgf{q)1nXTP{`{s?9mQ$4&hPiKC- zY8q7(Y1Xu5iCf33=O4Vy(+|zQ?rW#gkKB0f%}?+6{G*qT22|DQB-73`YzA{N4W^=s zq0kQYcbtFfz zLz)H<&|z(Y4kBG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png new file mode 100644 index 0000000000000000000000000000000000000000..89ee2da0753040d1ba0a3487473a715a8fe89322 GIT binary patch literal 794 zcmV+#1LgdQP)i_t#ewV_0K6;=bl;e_Jt7$~$sQ)q$+ia<4Ec+jeaGt9oWH@O|2`W6&O0t!k{B9sUvLWxkCaPsd9W(`fa z;j-|^ZI^2XnzhgZWYRW-kP&J>DWPo`%;JaBX}or79k=+Jo@h%4Eo72tqev+cB?PjP zO<|ByL#>Tehyq$jR74O$B9WDW1`tK`LzYyL3A9iAcRxLkJ`I)n}v%Od-3H>j$OTBtk>(k-9o?8PqI=0 zB&f-+KOXVnjyKJlf4iHOtnuiE_4+ZVJ$dHjU<^o^YCjQ-wt^!;rPpBv(@pFO{9rdw98 z_s@3+yta93oyfL>7AD5}r=|`zS3Gm$_|(iSl8XBd9k%=91J0j2=ivT5cJ18ZmDjh{ z$-RMd{jQ#X79#Sc literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_code.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_code.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ea90419d950f9e69d977a1f5847456d96a5f0b GIT binary patch literal 818 zcmV-21I_%2P)@LCln44|RX7Ti z0HI3&7jPq){odH{?_{%nYVq_;n_c4WbUpvU(&Cvnj!vq|kVC-vpF6vp^;;e0mm6HW z+WPzA`AZ|;pPp$&dNjzrc??4rt`k%Q1l*u-BPD0MQ}Fbm8jnsyezNt7+u{23>t7Em zJtETY?ja9KrVs^!LJ$xEMF3-bAZO;-IQJavE60KA7fO$VY_%N)R6s>g5mW>fL4&aR z*EVgKKTBXm!=L?S0?xM zYqL@C$|EDF2q*3zWW7;PDZ}SK*IE8;i!3U62=qn80C&*I1Le7WwNP5EcX;_oh2dJn zf#HgBe4@r$GcjHjmj2vAfT%(YN?}kK=(*+1*DkNNc1H5R++vfBMhACi<5uFUU+N4+ z<&U*CPmWi}REa7C6-t>2im1CWv5Jkefxa6>)dEj-CAW wWa{_}BJ!}~75?MkfaCnj>Dn=~vkLS70Pk`;z)@TQj{pDw07*qoM6N<$f@imYHUIzs literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..195dc6d6c365d298e466026b37c1959d96119ea7 GIT binary patch literal 663 zcmV;I0%-k-P)^@R5;6Z z(>-WZK@^7J_sq=QY_e{46@P+~LNG}sRzZsxQHvCsN*h5ir6^j7pq-$xu$N#V1gx}9 zClV7;5)7zih-s3DB)G=7|99>ji@So7-P24n=VQ(@GctDX!^_@$bj%oviY6e4Dh;od zooe%Wvs8LEKQ&&bL&@bwi=STIAI@!-gB2jC5+?y?VR~VkrNxam-`6*8&po|RZ5LpS zNKdJ%c4bTX`XjKsnecf%W>1%6WT?pKNdLLq{=(f(Col?P1+oq@R>)W(n=x!|*BIIh z6DJGw_w`)u6yN|vAhMteYK5#b%r5^v+VCFl1IGssaclZZMS{vs-LJ2$)n7DAr6==K z<29#%AXsBsDoO}SBaXR#_Ap!JKx)(1)3O2pj0_dYWz5By*X74fRT01$Fk%P_RzOMDtV?GU{nsYq#K8iy zb6qzLYDj`_f5$BwC*WE(t0m#xYJ*=jC2|HQYHh=pf#QG7oowi`h!L!{DB$8|qY{~X zu8@sU1tWq;n$XThR0%;45mdqXM892|{CJ@0DS*}>?ami06Q_^tvM~Y3K(_-`#m!8f z8f!QIrH4y#61;0Ym0cCoLl8{IPombPHtnn7%SbTdI&G-d>ZQo!_wBMF9nzX!g8HVY xYTJPGciz9XMh3w2fmZ(7v{)r*QZD48?mrio{~IaoqP z|1Ep}yDQG09bP~E^Dk?@JiKQJ z6-pO(3~IOP)IYisL6D6;oAEd;E%zR}{U$rMRNuD6nQV7nesKS>)yLo7JuDCrD>Abi zbj3uW23?^GA}9jQ{M^8v?ejL?HaT7AX5WPZNkBmfN`w-jL?{tT7ykZt$%Yln?p_m~ z-?>&d(LD(jAd}h=LPltPQbO$*Wbyl@G-_k5jXbb#qffHY03>M1jfEqoPJQ6Mr=Byp=^jfzePZV1 zLjCmNi31hdIJHa%e;5g=1(`u3BRzfeExY%=VCu{loOr{`%2hUR*x>tL^W_TTaj);0 zpPR6CUD1+0>4TQ6zVfH3TQ;%l6#(_%yspK@3gcmG#Q4!WCPyLU93nMKk7E2pcA=l45({2jNho>sdF*A~bA zxX?-cp~y_z_kFf+yqu3m#QiB}03?Z&9vvR5TNgj<)($Vm)xq5G>|o2sFMag&6aNF+ WAT1?sQBYt20000iHtsh1EzPArg^Q zIZrOk#rNsfjaSbMAL;<4h;Z=jvu8dzyz8N&Nb7=z03ZUw?9z%8KQEa6yM5=kUnka& z3?FJk2}L7q>na=T#;<7U*P91xfF`;`6%pVgWgRy0?1ZryL@%z52=-!fGXWGEn4M351L4<+7eDgwo|moqXT+s1&Kmn>-uQQ8mL7XY)w5Zk*(g+<3Y3tmkR!bL zOUKaUtj_pX26sH+=Iorwu}MGd`_%O-_sS}8VpG#fJA)Fcs#ezwtZf?q?Ac70mDv`rVs{$od?VPKeqf<-kUjNtS6ecB*mq<&M97K^6IVsDO zt2$Ru!b+>2S<}_H>$RcInusU_8PMNdf(W{sNlJ3FkrwMJPeBPO#d}Y^a{9TH(#{Y) l0D?dWAV4eUJX#h`!2gmISk&ZKd4B)^002ovPDHLkV1g&sd|Lnj literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_error.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_error.png new file mode 100644 index 0000000000000000000000000000000000000000..f07f449a44ff2761bfc7b752db3d08d0e1238b02 GIT binary patch literal 793 zcmV+!1LpjRP)lHwhvrAu0-@MQwt}+5~MQTtu}C0%;W( z1<{R?aHBz*g;pk%AyQVBR_Zu5m~;ES_vxI-O!vIF|H*|T{l`n#garr?$RMk>)?Y48 z(ZF2yTneKb};DNWF+jK)IF`6_IfJ{i|F3o%Q+l&4_HGBD|ACE8na_6>L z=s{^>-C(a7J$6=8A_%h5W!1K6dcL!D?XX+Ndk)oei?UundDpX_E&1Y&`)3P8#Ny0s z2Ag7_&ZPhyGj%)g&S6V2LNun1;iBQm#Fwlfv zgyESZR$X}2P;=RW!2zid1r$hBL{K7>2qi*f7>pT1=RdT3@-anEoH{ z={KFOO;Dh#bV*jaN>}M>RZqQd`S=6O9C3KpI~I>l%QFYfo;jqQYe5fcn`)+)zMm6P z4X&L(>gnN0!%J4^rhX->?$S5bY<=GEU%jc!KLL8sww-Eg;h z`H-yBHa)yfojYT}&G*GFc$<(Yja_q=lZvj66DC^O5%$B)|Z(CeD=n`|eM04SP; z>-=-l+xdJjA~vR6^xB#o{ehf~tSM`iwaQv$O<8NIHA}W_WOw*~ XD^gE}t;YAo00000NkvXXu0mjfl6ZQ> literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6158eb5ca9c4b64c81e70e0fd894dbc8e2bed9 GIT binary patch literal 817 zcmV-11J3-3P)hdKqhFO_H1|Vn1E?(=|cjAh_&P}y{{^`u< zcYD@PK?$)4i~7o9*6F_$F$4lR(d4AAvrez^(88Hk+)+B7E)M3jc=Ewl4$S^`_qwSF zA%qz@=c2EOsz@0qB1IqsqJU)HaG&+}%`-OM8YqW{K85hqj@4&V9vz!Cm_n0-W#f;# zeEpJde%vdgRn5?(+PY=W*z~|lT2-mtown({ll8&3S5+lWz5K}LTRW{k{eJn3Qz!SU zQ`@qI_n2;K?RG~pYJ9=dj-RWgG;P&wEuoAxL~Q)<>x0b=dED^Outj&xQ^rA;u3pw| zca_ClTh_d9cxXg_U!lLRl0`xU@$=UXO|_dRdtXfKwPawmnf(LC7u}-U>8k6}3u|{8 zs9LHr>MIJZGD^r9h|q2yF24Wuh+PM^yMN9GP1$khlDkdyCY}D{kg}jEf-(kW5jBY> z0rB29ZhG-r=i_R{;+1k0?A-sBM;AP6(k1i9ZuixR4?MqXOvphQgCYj~RnXKKL~J9Q zIDNz~XMfO{ZhUg&BTtMyXJqDVqc<x643?SvKHx004lTvR=0a5$dUw z>Xb470000$S;ka1sfH4I-R8njUol7M4dtApOahDylptpYswf1hD#CwFoz6oEA>(SIECU&IQ%a}GXdnC!9$70`0uH1B00000NkvXXu0mjf!8w72 literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_find.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_find.png new file mode 100644 index 0000000000000000000000000000000000000000..2f193889f7ea091c292acdd684c595dcb206b5c4 GIT binary patch literal 879 zcmV-#1CacQP)@+1&aazfGU7ezSm^v zpACwO+tu0su66!(dT=`e05DeeCnCFJW(8|RKtKa{4LGONnx2V85A4m%PEQ?MEtR-esdM$pB-`H542D0)N2zSC6Imf)4L8?>%ZrW+H>xCKi$unm zvGZq-*Q%Aahx;C*=l+K%-?>XB)6TB$-L$r*`RUvlA`xP1NG2?)ge8@TQ4EN|Jks0u zcDg;oFC#-#R`YbWB`D?Q`1#y7l$LXhjSLf8AvQuB84}i#j0^!#g{VE#(K7h@5pFHy zSenl=@XBEdxp`h2Ji>CR%=qXJ7!e|?paKet-~;#ok#jETyeB(5&Bkhp;!+;51~G=) zH?L7xmDUu_h+a$+xuWom;AWW!mS$%%+436Rjc@}y?l1134kgD0AOf$OmjOR zstUlshZk$ZC!bAyIg{Y29z#&@3SJ;6D4+_eFume9^#TmMccC5u0J!ZCTnO6m$lnD| z5JeFHf`Xs~1vP>RLKI1GKDY<~pjr2&bi(fX;6Nj-ss@Ds0CcoO0H{JsEQkm{q03skAA);_bv3q{k31qwVo&s-q`Z?_e+j^w(WL? zl+uETs5+~xBU2};OqEE9ETLGwsMGe1%iTRNue)9}|0~E4B*@5#oRXZ9oRXZ9TqRep zPrGZuoOON4n@=uPbyP1y4G=+HktC6l(gZoFD>@_lXDrN?wo+zozGt3P=Qh+3L7+}q z2!WK7geXLnO3Vw;o12Skp%_E#+N#9;DDWP?Q-VS3B$v~Ha)dDzWn0zG~O(^_1!n0HYp-( z+;wPIdoFgQlpYV!10V>5@a)1LyGBMvoa}miyp(bxbMTM-FYNyx;V@TfYddyT00000 LNkvXXu0mjf90!wr literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_go.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_go.png new file mode 100644 index 0000000000000000000000000000000000000000..80fe1ed0cc75fbb67e9398ae686641f8fb287238 GIT binary patch literal 779 zcmV+m1N8ifP)JNR2Ufr z!Apo%Wf%b9=l#x^8AolrB&K9H?Pg_|78WA8(M3toqE%3B#7*srcF`i*xhupr27%Nr ziguah1+mN)U5GNmyEfQ3-e%_i&-vb-Co#(>FJ+EhQEwjRYVQ(&UYy{U@%vbY||>@4x=B^vIqabI?L* z;-S&DS^V3-ni4^fl|HMkOEbgX)(390>A}|VIypb5Xee4g;7ck zwKh^A3Mi1Mh@eC$5lV!}Fw%sP623U`g3pd_Hr5sunLvTskx4}&Gm%Q6L}(l4x}jCe z*81q1_4-O*ffi~_nMslo?EQ8t*&Ec(pzEw$vc}pKn_Qp0>D7Jr>ATNC3w@9f|Y+U&+)#!t7l&wKp+nP{PQsb+fb=Yf!Fu&5j8vpRj{FT>jD z>d>$sx;A&+`n$HcF}&sYKSyR;=(=9tvvOj@hUG;~4qTYk^_@E=?$*^_pVh_bGnOt~ z;pEw)j{SK$XVc;qy181rT655gW9NG{(yeablViIL>cDI_ux8m>Pp{tY$J0lgo4#ax za?j0EA3s0S!f>{~ykN9h_RhM&g3K(E`q(dE(Rd49+%xMeR9{qlWnmd{s#(SQ>PmFtSQqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_key.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_key.png new file mode 100644 index 0000000000000000000000000000000000000000..d6626cb09eb11a298b90a8a27b0d8eab41f49a82 GIT binary patch literal 801 zcmV++1K#|JP)$lC4gU2-`f*>nhR-;k6IP7e>YO!0^w)WK%3$w02v-#>5Ep64PCP| zJihT#O|N+nT7XR2h7dAB?UEAOhJF^mol1i`QtQB`HSY}RE7=r! z)zaVIHr5?>v2Gz&fdYw&2ug$!p+txby(aWZ7(4QT)l2`jX7eMQ{>)lG6ev(fWKxmH zOr%mM5$6B%u~qGtCf40#`mbGj3s!n+^%wnJ&#rl>g<4Z)lB5J6f!?|AP275)Zswr* z%T}4~{;_(?waU!#?JabbF3Cy-kf0{R{z}6$e=5yMQKt3BPcl2>zoTPMqMwF;3!_n|>sT?~bK_-2O_m+o>GJ6h zt=+g$4n7y%1qVJI7*5Yw(hqM=JusY{d}*?U(Oj*gT655eZ>Ksn(qrd7v3}DX1}C>` z+X+8@+4-pVq_fxG zlU}~Ye!0+%>J+pPk+0wV{GM$QaYM?5ux)w2z59=S&H2+K?;gH$bZGzL&g5>G ft+noNiyiPkP9r@8gT|RZ00000NkvXXu0mjfuqTIu literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png new file mode 100644 index 0000000000000000000000000000000000000000..7e568703d6432c530224e443771a04fc1e2e59c6 GIT binary patch literal 839 zcmV-N1GxN&P)73{`^;G#xwAtHz%LU)4b zqTRU=ve1RNa3QT=ZM7C`iJ~QFQ*9t7<~pX$d^7W%^M8FFCkcQj-~0ZRTBCB(J0^iD z-~e!d9LR`f3#|=(>$bPvx_D-~2jC%pJ=n_e_OK zeJ_2b-KdDDh@@UlzBSMC;EPygH_MwjWBnPGQegihBV73D?-x9PlHL9A=(Vg=8^d<4 z<9r=UkxuIm)*CO=9e###7PztDxUv}e?$0)rQicmYhV`pQ%S!g@;K(?TVfhM#E?bM| z=B0gfb6h@a8bf5FVT-SV~6}?X}9lK@@Yynoty&1zdZP@?RfODsl=2XzzU% zS8gIN43How+9%bK2S@Xbc`O>`z5`%^;pXGy8^4f>9^3!Sp@|O&)m;dOa3q6d;4P-l zca|=H_{G&m?D_+&-}r{u-J$5T=(X4R&)q|O^gN8cgv;s#@5sEPT5_Z)oFo9Ac>l+I zc4ng5zHpps|9)<_Rw>5bKzE(M1j)dFWI_%OH$BJSz0?T+02W0)_a>#vFqb!*d|5wB zzBUN|M&ty51O@=i?kiDrjQ{{}e|^rU?OS|RdxxP1p5mAw36cX72#`R6UsoeCQFI~! z0ATITp!vfeYyQ?Dr=^5BAshfEa0nB~JG?nUa2Aur006MC*<9`)86SPS(W^`H2n+xi ztOWohsFfVfVWrI7PSKW}BmkyPoj(-|J?ES|BGd-}fIxr{00@ANnO*ZR`#)pee4I5T Rmm>fG002ovPDHLkV1i|Hc$okI literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_link.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_link.png new file mode 100644 index 0000000000000000000000000000000000000000..312eab0914ab59271384686255d1be913a6b3add GIT binary patch literal 830 zcmV-E1Ht@>P)VWgGzD=Y79#JI$lhEn`|2MpRa?Bt#-nSD~P0P(mbVe{KrOBoKnSsk>m|ML{6l zBosu@om4j#WzNLRAk+{k1JRvL(MfE&vvbb->v>W{*z*1_uMP}0cIRX*?mz+wk%*#O z%0D-+$B*g1nRkvI+_3E8Pr1NC6@5M&4vWaLCnNlr;lNlr4i91z&)eBGqL{L{GNu;Fof}GS9{gM5BJuH;2QWk8yuOZdB3pGR#s8bd~ zAmt<>3Q=YH$t5YJ5;7@+8Uh6=ktBgY6#6Pa%2F?h910?U8cLT43KAj$Z1*==ra&gILO{WkHfs(--F=bly9l~${z@AT>V$oat!YAD@M zBE0v_F{`g#^wOSP-u~!wvlmXdd*uqFqoZ0^{&nEMDU+=!>({S0wrQhFmoB}Yq1)~0 z^{A)L8Xjzdr(W4_exYO6u3a{4*kIeXZMJUR>Q=ksjW_p!rAwDKYUs90>6Q|C>56o@ zbrSq^Xk7Gq#>dAsn@un`Hz$?w$;Ss`%jV7L%9ShgHFV~C)6M>B`Tp%|nqPc&G*A3| z)Qe+}vT4-x^t1~XE@(6wR;^lPWMo9n*~E!cy~)YRsT2{`?fqeIw-e7N@mOA%UcCIq z_kH(_EK7|>pM*1Wt2^DaDAp|cvp*@(ZZDKpYkKC^?97(`0sb&XTXy7N#sB~S07*qo IM6N<$f;YmCWB>pF literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png new file mode 100644 index 0000000000000000000000000000000000000000..246a2f0b426faa0c7f5ba009e32b1deaf88d1288 GIT binary patch literal 813 zcmV+|1JeA7P)otxGRZMDZ!_a~nK|b_-`n%VosaL{KDuPV10`(1LIen8kX2Xff$3BE zah#djvFGJ&eE^89Pk*-O^+&d>FC~^GjRYVQ(uuPJyS|-v?9lxA-+tM5>1Qu*n+Ir1 z6KhA>X4$XDH6?-|E5oe1E?pQ5-M;2xw_ex!x}I2+b=}mPFW$U%^;o(Zg*LP!K^1kP%8ynsD^= z1y^6xD1#GLjO{VLdh@0GKY7;d$+NGukV)GRLPn^=q=dF%B#XaJrNP`0E6=}e&Gj3d zKJbQre*WXt!60_DnIzgMQc6S#fvjXxsE1v7;T;njHkdy2miIqAS(nX~o%cO+q+b#h z5tIleLWvL=dQE8OC#{%y*Tnku&K`Tuub&_ELI0t_ea{@3f>Jv&sYqld(%}3_GY3Dm z;O{3*Y?v^A`a|D;^qrM=ykI)U6QHd%WhO~VF!SGjGn0GOZrc3mGZudNl9{Q#X5&-F zuGwVReFLBjE5jr!!^-5*L%!I%PkYH#Hs5rMrEBl^)9)9XTD;xjHFxVZMc3~Dw6#k$ z(-S}RE$bgMHv6Z`mS5|u$$78sp4G-8b@lVkl`HtEv+MGn!F&bKcHPi$$oP_;=BrPf z$(~b3&p3CsuQxhoV$%jIR;`lB-s7FDX)xCTXuJ7ZyIQk96uIR=HBt%-P?N*bp`)EF zq14c}QM+O70NTOa@V~_)&GMZ$^cQDlkyOCa(H3Mf+6xhCuZh`VSN{cQBl5Ys9{cp( rh`2H3A^=GuC6HjQ*7|*0>;m{7QlnX3z3MSD00000NkvXXu0mjfR5FYo literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png new file mode 100644 index 0000000000000000000000000000000000000000..968f073fdddc1cc0f0800b1ac4001cd9a55f053d GIT binary patch literal 703 zcmV;w0zmzVP)AVs!l4K}n~L(tL`6d4Up4iSWnZ3Qg~4n+_J zDGk-qQdogO5JUtO-d5pRp7Nd7_r1^a|M&Zq%mn9Oe((|e0sw%Ur!K7T1pojj=U#f? zQM`qbQrM^DPkwa?DK_be^~z<~RgSMIa<`xP_4P7gg2jCwJ{9^k!fsU=#Ti|%I3p;>90Qd+7|~0h&mIklA#nb>ATL2+v$&u)OBgB z;nsHb)I&QRKeX40H~~cIZxCd}5C} z=79lXoXK%6YlyLtsV$~bSm?Upq|DJh#{|*a7XMm`4QJWZ>s6nL2R1|&J z0VPEwJ9?!n`o5PKAjc->P1Gi8BY*%!5&FVp=#)$mMJYul1Jton}gujiUf??eOy!x&!tsjxy;=Q3_DdcXx=a^OBhW0N~`A@4xB0a*%F? l+@c^sQA%W+?pa#c`9H5UNfS6T{e=Jk002ovPDHLkV1grvM=byV literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_red.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_red.png new file mode 100644 index 0000000000000000000000000000000000000000..0b18247da5850f3c2486373a3e179acd2772e8aa GIT binary patch literal 641 zcmV-{0)G98P);68^@7JE5sw#jpE*579S@TLkU(6yap1yN*Zuy>-hV%Q_v4Ar&!63c8OBr(ZRhFu z_kWs36-AmgZCT>x!RqM;Zu9tqvoHI~k@UmYo_g(*J3c%2{N8}7I+|qKPQzv}7t>%W zsu&9G)UmCzkDYSw{fBnuW4j;1fKV_nicw`$8C6D=F_qu`zUiK$2Oc?5UVY+D(`I@R zW`KlwqLftWHH3Z2_XVNfKn>VgT~k=@- z+N>c>0|@A_HbI9Jn`v0~7cfIF(TS69zaomDS1QtgvaBBfGEPLHccO2~3jc>n^6}^HAEh-2#VxC7YYcDXv!L9X= z-R*SOUvIs;n`8(LxP4~^2|JsiN^hq6cU}5dn4v1~Kl{eT7pm&f$PoY`hyVe%y8G*S bxB&kH@RuR86sIAS00000NkvXXu0mjfZBi!% literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..cf347c7d4685128a4a447abb9fb8e939417644f4 GIT binary patch literal 858 zcmV-g1Eu_lP)`6pHR2Ufr z!EI=jWf;Km|8+n2IrHqe<9xxFVk)&(Nh?w$Xk`TAyvb=#e=0aySC z00NkRDM597_LiNIJ2M^qhuTvB004REvvU8@of{r?P8tmo3;+Pk0F0@*jAMhdOkS&1 zhJPPfQa;pP0|4+Yk%#j>X}o-s#EF1_DMV93FsfPP`G*>Ks>L&)Q}w2g%slu0kBfW1 z+*$*0BC^oTl6>OGIq(9BgG4|C90Dk-N_mPazGrQ7uHZ|>BLD!-KmZ)z1e^#?1Sf(M z!6m}K(^b|i%$TcA5bC}r$tAA?0C)g1@CgWliJ;NAk&ZF+-w#}$`-3nZ32C6IVKrHp zr+(!L2hRfF&AsTw>_@ z1y23;E%Oz}?q^Q2d($ayO;-sON2t7$w(Z|o0Pw1YnSp^}0PI+I5HnDNsFCA?oorkG z5sUIGIq=FSyxcj+xlhkm0en=52Bx3@02o12gdAU$_i?v6iyFMuc7P9#zQ-Hf; zVuV$t9P5`m)F2w1?t6{<8%wk{w-PP#Sj#%1MbsjrSI6n;D_@8q9`~W98dNQf$j=iI z6~hpgww&be%X_HI50Hhx@W==u4TLPB;ei-J-1}G8wH}|{i#Lk-WZAyfv}k4y0|fvU zZTy^$u6L>2nWo(NDSV2@MRD}JQ4(c%G%=dG@_vxH?>gcH#*Ue2HC}9sapf8X?R$Z;XEnm&g zW99mh)5jNw008mK8)r^`_{yH0rNn%u1|SpC(tjf#om=+r#lh+?Kb>DVb9`|C0Bvbv zN3U(>f4-tAC1hosRoA7p(b(hL*V}(j>ug<`&U)|l$6o$)!>PBQ9RQSwn9asj2p*|xhU*R^vq?*Twb0t!lm5}`yW5lRy-U0ZYK?8to!;o!r!XeOE$ z0HB3T+6EEoI4PlR=wonwqJ+TvCoWh&$?CAPVYcU= zD{DS0?AkOtb@-hh^ZLq~FMjxYf19X?pa_YqtgZGvv2TaxcF#KT?O%=_*a-kW_;N|D zakkWsOe!)HsT5WRBiC+p;N-c>0Qwy(1D2MDBC595oXSiR07)sKNk-%9*rDBOO^HUD zZW#;)R&EZpqha<(HK$(tZYU#V29<@0qCXgU{gXeGpc_|pTqQD-WO|}%yKZbeX7k*H z2W~CK$v8NBAq~czrc5A(v51g0Wma7`G8}f=ZcuAiYYxZan@gP(;Ku66M6?bquGiHe z3Q0ya)%Lvk@kLixZfZyU@#UFbv+>pYhcj8TRKSr_sWG8i^X~UA**LvbD3(_Lba3xm ziYcpup*A9qJ$?AA=Og05lndxfwr`!C+O~h|B~4 z01q8H`StcY);%&mId7_+)76ovRpeNWRp&4M?#jx@|E-)x%P*A6t^fc407*qoM6N<$ Ef@ddc(f|Me literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8b1ca0000bc8fa8d0379926736029f8fabe364 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H;pyTSqH(@-Vl>|&1p(LP>kg~E zYiz5X^`c$+%8#zC{u)yfe-5 zmgid={Z3k(ERKCKrE7DF;=x4^O+ pzO8rLO8p|Ip=x)jHOtWj`bJBmKdh_V<`47(gQu&X%Q~loCIFbEay|e6 literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8095e46fa4965700afe1f9d065d8a37b101676 GIT binary patch literal 591 zcmV-V0~O9lw>B8WRlD)Gm}Jrz31u-X&&gn2lvjs=i{7nIaL6v2==uw+8Lcs(8j27 z;|c`rmSv@Lx!heopGP^^Ieb3f=R!%Lpp$}iMS-&P3EJ)s48wrJ_Ni0~k|c47D2nj= z{jS6bt|kFpFf|p5cM`_&0Zh|`rfEp0(}=}lT#(6RpzAsUfxv^LSYX>WlAaN$>)*J5 z0#sE+JRUD8iT9*fz{)_^7@6P&!sEjTcD+I9Z4YjT1`wH@fV{cEvneYGFU%maIEU2s55&K(LixD|{p-uiS@?KNj zk-Go8G$hH6g002ovPDHLkV1hVj1#|!a literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png new file mode 100644 index 0000000000000000000000000000000000000000..159b24075191fc259cfd80c797a1b0d74c168422 GIT binary patch literal 664 zcmV;J0%!e+P)7Z7t2}reCh0o`+ zAlt$F2tW%oO@m<=(B8a-_VgLl#~yUMUDWG!0qFPppd^03e+x1WpkO1NhIaKD2A)-@ z=Py8(Wi%R%JtYZG#sTKH@6Z+&!S3Edf8jFJJNKuva#KJQD3X^7;H^fd2di znEN&c58aUG>`>P{Vqq$kLb+TP{?I!d4(|o59X_%|nVEZq2Rk60n7072SWJ{64CV?3 zgS!EB=eYxwQ>P2&$}(iT6UMvuFgHHIEdNA29!EBtg=v~X!DxxEH~}L2zn|52%xalaq@DTdhh{EVwv0IaQ=!?daer zTKp4I`l8SDt;d{8Q`5Ko;BXUi&oAG1l4}59P-{|^S(Rmord5s6qsh<&m@Ab^wqCD) zHyRD}lKLDzpYN&@q5&*47mGzGiqcXpmqR9#K|CH8kXS4RNs`(iEF%HjP%f8ItyaZK z6$%Apvsok(2>~dTO5jTZfq;N?0ch4l01f$k9?4{~Youl-#x{UDMr#AFIkz@SDwPtQ z$gQ^$2|*(Ps9LQiav_8o8Ne<=Zx1*M*syo80sEO1tB%>5 zfdHB`1z+!R@?ghPRKmL)hWEvZE$=*54ose*0JiUNTM_)cMDXhxEKg(?-pD=y<)L4J zT0dSyD0&NhJ$^_8Ko9uom%-ZM4BTM{Tw$9qyPj=-9W;N(Wi@3*-Q4pq`Gcp}^vvNr zyd&PsmG>fpCSZz?K}UIEd;HGgG%0MG>ymxKPwy{>wy(m*Atq7)0000~7 zMNw2LQirBVQoa8G3P(rY+l;L4iy+JwSqmy$9JlSkk z&*$^Eg+c)@!R|v4gdc8+TTn&eWHO0VD&>$!B%o;;WLf4CNs=Inq9d`xA4otCWHK38 zmc{pkX`0Y=9g3oGK{}lVy~OYL|C5lQ&U^l;wrg|7w=BcA9L4-r411?K7f`@348&rw zXD#uW)DK;H`hxO}u%=@Cj{;#u#_;bb1_KgUOT2Hp6;)MvC6P$vQP3=g1O5#aU%I!K zZ1dc@f}YvG&*Spnplm2rIp^VdA^HydZ0X1axdms2!RKi5x-SFA4p@ zC@N|PI$ryHL@t-(!zBsf2-+sYAukhDHU7Lxm88-p zDk^c;sHj}OKUc4lGZU}6umlGVNAJx0%sKDOFwQx|V2pVvxhYKe|L9TNk!~md3BVrm zYPDL8Hk*yU-ER3~LGwJ7N`0ZV&nOhBI{~~A;@ND*=kxg?#^W&`4u`zk?Mg_e)8XlK z`T#M+OaR1!<#Nf_>$S`xrqd}OjYhoJ>q)?3vEX8pY&I()ERjfjrXM$k7e+-Qs3Ihj zNyOuEQ2EGYG7ro!o6VOBQEwuV2z)*tR8>WxP{616FY)p1Pn1d}#9}cxolZC$4n(6- z35hJq0;FlHC{ zp*iF(lgUK(E`($(s9pJ8Kn?(M734H_63WHtf}6SQQ_MXEP!#0|&@>J8dL5TfG&tBw z#tYn{TCGZvAr>cca%YYn^!t73tg8OOJ2FvJ(`YpCyVZi*?Ur+1uUA$hAg8-aK)c;e zQ<)!XwHh|n&ND=$@^)>aF-`~n}#*WMkD*M|f8r$i*z7+W! qF|A!t*4fE(R`<_YIkN&?Jng?3oQ|aAqClPi0000t>5xmo{nArfL4CJwMMm+N`pQ3p^Le$?rMud6Rbxz!-yG7bz2z$^USP5(;udf(gfQ zG~f68y^)EvcNWp#bUoDt2=h+^%o-?-|mo~iieWqLNP<0m@2PTB7ftyb= z@H`K$>v9Pr5X`L|rw&CEN2(9SB7A2SE;d|j9@*F}sd(@*2l|P*fWfK>1drZUrtUA7 zNXO~pKn1cjf~~TLbje1g>EPPzN2GH#UIBxJ{}S9=E`{zs-w#hO?vcH+hJxroI5v?j zD!4lP0WXq8zUx3RAP@|Gq$}6wXCjFLZY^YSWBxN9#&g)ro$%5}aYn#y=tJ_aIT%4d z5d4u`rlp!};XGmbZkJE*kYJoi&N0pd*yxY{0${xD;;Q1h^8f$<07*qoM6N<$f(}t7 Ae*gdg literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png new file mode 100644 index 0000000000000000000000000000000000000000..0c76bd1297751b66230f74719504b2adb02b1615 GIT binary patch literal 603 zcmV-h0;K(kP)^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png new file mode 100644 index 0000000000000000000000000000000000000000..87a69145075afd8f8fd8b391c5da1249ec8b2889 GIT binary patch literal 587 zcmV-R0<`^!P)LWh{^|hy<@Q*xw+qo|KpY<+vaXbbW{L4q( zTsjXEJvb}e%bgb=o%W0h?4u1;^bWTqH8}5Th002ovPDHLkV1nrS0P+9; literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png new file mode 100644 index 0000000000000000000000000000000000000000..c66011fb0fbdcbf210483d676b7131542a0e282b GIT binary patch literal 592 zcmV-W0k7R5;6x zlV4BMP#DI+Z{WQcKZBTk0lfkj5F$ztWhP#lcuyb@0@rA^#Kpu5KLA&Rgc}o#aSmis zrZC__xY^&#cI&!!{c|4Q_tcec*#b>|Y15wPcY2=o3;-Bl=(t4;6Ok*pL)-{*A;GX^ zS(@WGp6j~k1wBVR9)BB_gar`}HyRBXh7nM!)u5^>N~MyN6bc0-5{W?44iB<`2biXb zR;wk?jIQg@G!5l)SqhrXCU}x$GU-dY1sra}0uCq@153FUULT=jNwSk}0WBjKz}Jdu z<5gB*<^XtpAmp3m^ZEXQZWd1krhft}CoYaF4cSMvTJ01}X3X37KYdx-D0$c{doUe8 ztY{vlGr-e*;N!WAV%_hgUawyYrhegW>^F)pv%uUTFslHn; zvJ)l{%w(~{!O4`KTmK{Q{zCYltLfs&4?nz|6IdlqHCvX;|HGv~!QW?8P~_d#e0$v$ z)5XHEz{3>qMiH`1+qNYf?huS+@L`J9_$cjJF)Hf?@pu;)`9}BXwGUM{2!{y-4|Z{L zG>z?O%Cp8P5T#j1DID7u_*(Jg?7iss8AZQ+&;u_J{FmILf((9eoiL5nGUe>Fgq*U$z0000 zJ3A|*qoWOonz+4ZQ0KNhDB07SX1?#FrNy8%K)_l}y&kh`*KYdy`Y99&tgNgMLSSrc z?B?+B@HO@P-jS~z2Rgc6yy~Y~%>oJpBxsb$5<&nRLqiuR7K=@0SZj~jTs|sv_jWVX zGe?WflejOaq|Vec=s9+ahmXbyJ|T)Sl*?s82sr2H?Ce~HD5WI+Sz&tmWrN()wI2}+ zKqg92t*l^-#ae~;9%KFlWkmwnY=-UK`_|%ICZ#P1gdjK<2n38VXsuC7{WiU!fZFmm zW~Sda9(Qi@pxO}$ARY+;t##Ao27usOqNt7Hwq6K7G1il@xitj=LIM&{N&#SuX;x4x zmG6FhCg-$PI;hQ=;1iZ>F>^~@)IPi;l}fX?SZ!QiO=X<|pSVkNpJuLHzW(FT_~W-v z?vFpkyE>8ee4d=7wKauH5~dd_M7d2Aa=ICC{Nj7Blqv&DQEP#j_VeWV&WXL>c=LLK zsmYg^_JiDb;%U!UxO%qjFAvsDFj-kzT2$GbV(ZopPM$i$z`!7jvEk07BcC=6FMt4` z*0u3Sy`0b~%#(0000K literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f31a278e17993d8d4e13beac2f9d5f7b42d08f GIT binary patch literal 309 zcmV-50m}Y~P)sF~CC`eaI+m%Y8jfzomMvZQaNUIT3LIrJ$h)_W{ zwF|LDNlB-g`Hb_G$;>3F$9JF3WYR|3fy2C+_wH}*xp!_4fF2UN4lt#d26oXwru}hT z0+0%Vz-l&|Tdh_L-Ng1G2*RBtBncRx;99K)&+}s0whhxXp{go}$g&Jk6k|vfypI5M z!1sNGVaV?!*L7i87Bo%cfO@?S`bajL{R<($@$|PtgBRcCGIJ_2a|&kO>G-s2aR3E4 zjssoScUa;zIdOeGHBnH13G)W-zt$kUQgNfG;96b=v&4NzRt&@7nN%v3HsG`<<+F$cumMs448N!W3r&2Z*b~D5^$^d6Jxn@SFK5Q8*uKSR7x{I|H-_N1f+AD zSYC5@2K4OKL$==F9U@CH;ONNL(W}oZICHn;d?~pw?GRIsH*x-68Oy6SuK`)`{E)46 z9^3(-HXa#X89SBv?u_YP)WjsQrp;}0X?Bxrvf12IKW8>3t`e~W9|JS<{btTNbNT@EQIWBSNJTX8AMGXD z-SsH|s#>j9Xf~VMtyT-YMD}5^SWHTY5->o`k|d#AE_YQd79j`%GMS7FNvG3b7^Vy9 zn0HYCJy5MyQLoqKnW|JOp-?D*<2V^msZ>BOv0ANd2n7t@{=V;sZrQ>3c})5_%ms4z z7!qXwHHe~!QFj8aR~&*-3F?O|;#(ESIXP~Os%|~y^7c15*q5`gz2-5ol!fU92NIGT z_ves+>+Tf3gfcL?!nimYmR}cw*|BGULzI^7!;k#3K^YO#;!+vM@N~(99+<;fdqr zYPJm+pXYFYk;neQyXXEcTQDNQx57i`Okp9A#n?<7!{#tnKJdsF>utb@JH7dU01gfL zEK2hoPZAnO5+je3&^i*hWM`qCW^vLK!O*?U-#IvXV?#6koWqrwnD{j&K`7N>^tR3G z8zr1(qVOzcF#nF1&0MZ5C$l8*E^Uth0000zE0Ay_3@1Z_7#f-XWL#E{8Al7>L$ z0Rx7lnddoqAyfT%&#`$;v0@*5YdW3w z7mLNoa=FAshK% zDiy@zakyMAxr-H?iQDZi^!t5;Eno2A=?>mMx`Vg(Z!?<53LHLvfTPa`$mjDcX*Qdv zR;ylN4OH+m)fVX&Z#yZpUae;ss@a$K&})gHovkhr@w#xyPVlfVgXti1_357y%I-UHDvRWYvPEX+#g+j4Q9ayba zh7uQN1j%HQgA=Fp9DfODAU^*3*FCs^6IpO7xg`RUXyP)(;=d!ly=#I^l3e0Cub`{H Z`5PU3+D2e&<<>s`J(VpX#y^kqzQ;#=2x({YMw9Q&ndHT&`BD$#%Ql?{+)-OuSA`r}MWJ zVg+2Gc(GW}a=BERPNy^;kEz$|38dTYlFQ{%5S!g@|8f8D_!Nu9_Ni2glF1}xG8xi! zorc39&F6EPOeWOt_XS`W2H_Bo$MXugy}SEctJQj=(TLXTHL(jRXfzs>NF=0SHk;94 zF!&HjdZNX(3U3;LY64IMX__Xv%_wjLC!J2`0Jw?X=zPK$C$`&dYPDKaC={e16bcE@ zgun^<0k;ak*=xLE)@(Lqu~MmsFoMCLY&0Qog`NO(h@kyxaA%EbwJLy8sU*Vi`~52K zX0wrqW;_LmMq@evX4iAM9Od(Q0eHP$1%L|xAh@vrqB`HPQLon}f3aAka=9!3hr=O- z5F9`#J_7Jhah=U(4RjaRhkS4Xkk98kDz-`i!r|~~AQ1TFcDw(@<8g{aBE)l)PNxNE zI(RPyc>9e{@WGSMU%i7*v{!&P$WLz25)0oc=Dl-yy%xYZAm4b-rttL7UjR#%`#j_F R;_m(?iiXTHIMmcoLoO94I8;j@ zv^2DJ5#orqydFJX|Gm$_Bi_vyew+j6{r}$Qc@D1%fQqeAhJj)1!z4pP83k2MV2~s! zSt^w(<#HLFVBg_#xz1W8ioi(WY&Hu~6zil?DI^jJgu`K35(hkP)H%@Imesbg#5!Ps_$Ni*SiR8&sKb9?M`0-mH)gtg&YgRX#*TXz@Z+| z;|2H@xzE0TfuORhuO2k6#K8#sW^J`mQ0+E@$K`QkFV+DTlI$w{GJ;zid{*v9xeIe_ z$|Bp`@iKkgoFK3{4Z)#DWKV~W4K@5WZN+Ql_7%YxNqSx7%cWud&cX>)_PvD*UzxZg a%Kia9Rjz_59@~-t0000)l$0ECbfb-0$}>7z|u>IvuoHEmW&j4lzv=KA+EpIObc7e7{sGA)QVmnM@*^ z%|h38^m;wC+ilpk%>l#V5LCqP_y2_Cayd^XlX;j*r54R*lW!zbqtSpQNyz8(JVmWm zyV4S$2{Uhyc{Cb0QQbf{ZGT{Kr zvJi{K_&f+q^Pv4MK$hhS4TgFj_FD*rLOePdE-E^T7ZzTFCRUB`*?9&h(a#C!-v8lWG#k3AOJQaUey6Oasked^kDPe=Khg@7s584 zg`XfS1)&u*_c;I76#%`kkBfiZgKKo@0)9d6vZw=ExQUtV?eW{Y1Xv}=4X(2zy85d> Y0C^(qLv?Ui{{R3007*qoM6N<$f-gW7od5s; literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..b93e77600def75c9a144d3d0a5088a62c02cbb0b GIT binary patch literal 618 zcmV-w0+s!VP)$>5Y&axjp2O=VLu>*f>1L;s0)kkvKC!*u?s6CVL=HJ6oP~pNfZc; zsKr=bq;7MITw8NXw{SZm%59TId2x_9BQ zV86`NuvGI!>o^V!Na!=$7GJE{Cq`b+XwknM{UcGHFTTfmuS+ zm-zYC!P3+zmY;SG$?!fYkOih`QYaLxyF}A86h$GGN}kFj)_o*0e zjPMP%zTG7FYMAfO2Nn1D`D0Cj?Wl>5q%@CE10nX)KxpNmwk+!IWkzywiYD( zqUXiYYIq3qcRyMGJ;IY`(Gz~E$J$zu2+R{)xGlE*88b3WK6V*J>}2iPY1HH|tER0W z_+^^FdppY?o)Gt5M2`%xwRDH@R3G}^i1l4|6uchm0X0f!@&YdVLB5K&dd7Rv{)DXX zt^&vP;}kqj3f>94j+4xd93>s|Q!Ezi>?r8(Il$P}PFxSqu{d*!Y%*#cX(R0f|Juz# z3o0_xI14Al->1uky@W-rCI_%l&>PK^TXNSN{byMk2AI5vbwp!K-%-@!-vPR3iikL1L7HA!^!~ChCFU#lnGzp88=I z67V8PHBo4(l$u?-AKmT8?#_0rKW9dUNRbpLc`}piywAM9$xZ-3fR1C75T(BjCn-l* zjUcci2oXXo-}iqun@#)+`W@kL_-U&|2>MxZy~3IdmRm&8b)9!2%ksg3R)nNnT*TJOC=6{2hG86Dz+<^p6qfG5$i^UNUh+u)CD7O2 zK>Ioazn;U|+X0x$=feveYZL1W*Fm%e5P1sajd#eW#^5(ddx76*pt$^)b}$Q4oPabL zLc^HF>Z{8za;f$LtN0P$6C?1{X*jtXkRJ8IEeyiSzencvH3Ux_y>y^}wfJrRCQN#9 z?&e+C>sSAfrE%mZD5RfZ`gSndD)=P?+nG5Oq$zmY&-v+gc7R6c0u8^Ke#|XOq?gF@othF3zFpM8Il<8BJrWqBtF>b#_ye4{0)Xbu6j&@UIhRE002ov JPDHLkV1nWI9dZBw literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png new file mode 100644 index 0000000000000000000000000000000000000000..b977d7e52e2446ea01201c5c7209ac3a05f12c9f GIT binary patch literal 663 zcmV;I0%-k-P)^@R5;6x zlTS!gQ5431_q{u#M2 zg&W%y6a}>qj1Z|7Vu&-DW6d~k-n;jnHsjb-q#u0C^W!_5^C=MlKq<8oNCQ6qS00!X z5eI;XP=g!^f}j{hku}E1zZ?XCjE;`p19k(Rh%^AQQ54xysU+ocx$c#f61Z4HnT#3u~FR(3>BnZniMIF4DouI8Hi4u>cAK%EN)5PO(ip3(% zIgBx+QYirR){Z8QwV$9Z(Mpt=L-Or3#bf-G@66}txq0yc*T(zNTBDT0T8rO^JeNbSI-Tzf5!pBioy4NwAN^?iN#{;fH1Jke4Xa`^fR8m z%h6dq%xX)S?7`zae))(Xst^Scp6B8FejQW?RLTM8@0=vnnntuRGBM2dpo>gbCnTD= z^<;=JuqdSf@O>Z8^XdR?s+KEfhDdB_#ahFj^giCtzT(s8kA$AViyTqaAR;KGaLzUU z<=GqA4bRwpX|IG~*x>pZ!@zLr`XQ`od>m(`;jz|M_*1GDO#$7;n74ppb8=eiqh760 x0yt}J1#p`gw$`o!R{d7zU9~!Un@nJV{4bstt4Au+Up@c;002ovPDHLkV1kWhGjjj{ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png new file mode 100644 index 0000000000000000000000000000000000000000..581843637079359a6a58fcdccf0763690c67b063 GIT binary patch literal 676 zcmV;V0$crwP)_k3`4d{s8lK_6bi^@vq&To98fNoK}7)fx$e2^Y&@<^jR_Ee+8}KG;X`@ z@bCyiolqX>bb1ZIs%QGnjzFU~L8H~d?e;*XP(h(S262}XyZ3a0h07r{KV?E70l+e- zE`%3x|M5#q+;HOC(h@A^M)7Rn13dm0&>K$j%k_F4wOWlsNCIH+!c_#{eS&TL8v4yc zcpnPEY`cQzZ$ILq{U-MA6Z6Z|1p!FZjQ}tXSb25J@HphEqX-6Hqo?-_Zn@{d#>2Ml zJGhxTAd&emK$lV-QK&VM&ix0Xy{GyS3Wp(+E1^8BhD3T0a)m-Lw@Lu4zQRrP)9(3F z^>$hh@N>OAXrmPYunLi|fJ$_*5i`46;M>~*5D{bp>-OL3{+!MJa`3kv~Q#QfQ%c z)1s}QE<_XaYBG;IuRF=td#+}fi4h(6HgoUyJLi0t(*dA^B)%@8kkG&bdM5P5^Z5WF z%d%>m^SbN0XeV)wbUOXn5Ag#A$gJx+7-OCkMM1S%MWIlTkbFLmOeW(&n&wUd&;`>p zVcRy$Z{K0=?SpNnP^;BYEEXleFbq(UY&LrXX$6qkJ~)8+b{=jj3HEXds;Z(?D%}}L zX3`39&dy=Zyar!ehA}e>w)(*vrCct{PI9^2Jpj&OZS8<3-@{0(gNv%1{)zAiLY+_^ zl}e>Ofd4&#Irj#7>=o=Uhv5IJ@?sN0^J|(WL2Uun$4}si6}TG-s3T#p&6GE<<2W)O zf{^Y2HlO#*QDvTp3v&d@;8*}aUC4lisG9(w7@d5Y8y)}U#FwCkqp*Mcgme4{&gGRf zlBfd`nF9cQBKB2_L{F8G2)7pAf$i)Ds`|}-c>pc^LRW{w4SQ)3N^BbZx)6BlCZts! zKph%`(m#xg-q3I7=(us;9<)*2%iuQ1J`oV3gU6V~T}^JU5714JN33&GwEEru0d}Uo U{MPL+lmGw#07*qoM6N<$f^vibe*gdg literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png new file mode 100644 index 0000000000000000000000000000000000000000..8d719df5205f7415ce657e5c277db4533c82f346 GIT binary patch literal 639 zcmV-_0)YLAP)p{{sC7)XB-g4w*W1a1)XtvxrMYa1o?wn&v~3 zHnC|#(>B_M1d`_7gfzLiHy=0c<2kQQdXu*33(xYN_xYW39(cz9jEVT%VokB8|DoF~ z8u%Q5sdl@4VB7X#uh+v_;yOGY&pRi?378ghv)P1cngiAAb<}D#l*?rWDV0j_dc6Zk z-|P~AJZQCA=yWcQjG8fYnimzj*3KqTfN0Cy!G^$7)+bQ$+mHVd1J zvwOR^5Lm<|R+uyB1Nu4vL?d4qa3tn?9H7SZH@~u=fFHEDfSH|bHU6kh0O3%cLdyny z{`9S2Sw~WMy0MPy!64i`jdk4Z3>^+KIL_fN2V_d&ywBt`^IJpxUI$=YAph~5`;xCe Z{s%Y0vkUXDnO6V+002ovPDHLkV1loX8z=w( literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png new file mode 100644 index 0000000000000000000000000000000000000000..106f5aa3611a4807ec8c21701c631730275089a4 GIT binary patch literal 402 zcmV;D0d4+?P)<@FR}JvtGRKa0_WfK^c7uXaFH3q@Y!Hnl8VySc`OtkPN3;#l*y*l23+99h*9JzA00}rAC!#M1dZ#v9YOBH|eC*${MmzzYjBu!!-< zK8tujf&(6i)1biy*F>4{f*Kd(IU-JsG&#b_@NgTnx@40)2@2%c;*=?-2Za=}O}7&( w%_K#(S>e1j&gfY?mR})n>>0+8p`iTe2d1K2h8#$+)&Kwi07*qoM6N<$f(2cptN;K2 literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a1ecba1b60e54f3777717ed105cdde745b7184 GIT binary patch literal 516 zcmV+f0{i`mP)o)wchR-92qq~y6`XqbKmElbB3z{pkZs0VPF`CFvS?7jDn^mFo>d9Y&06* z&1MsS!M-CH3ee+h_sy)Ms%B*ec3R0RpVi9?*mU84yoq(Bw8 z<4(999dJJE!V%pWT~HGRIAb;(#O%2K3?uRpz}AfgE8e9q&OSdr^e^}lC$QXZz;S2A z)w>^oHy>?v)q--`!pmuBe96PxP0u*inQvyFW(llfv9 zXV1s*Jh`y2H%B3ZTA(AzpsQ?hb6_PyZ=c1?_B4fbl>G%!@ubJln=!)x0000#DY{xaiib^#X=YT4@yE_&2#eBulEdzjE`u&@G%2(&u{J-<}d(^uY4W_kMfEX z@!X)AR9F&FL?RJyJRUzvBoeqN{5kY`z3wcM0+du73~_0|*lac! z42Dw(Eg1o{Ash}P8jXrqN+1w`*XxDD;ShmPCZC7#4;wWbHoMvBl$=zF-`?*9j*Nbjd=v@OWt_BgKxP-3wd zy37?ATx&$b+&zRM!K;BD%Okw`Sb@&Pak8$KRX19jWZmC0&n*Ggv%j8nvSPDFw zEkV65AGOoBQ8kf`R|}Px*&INNS%osq9b{Fq2I(x6@xM>tg=vRLF?I`0rWzHyRc>}g~)F_Qn`A>)C_iwK%Z zrIJ;xR)UI1Y4Ozts|-Nho;q zVk9-bX)%F~!;63iu$Fk=VJn3~fmb5S@@)ZqjBT2{f`vT`b2}zxb0$o;EF@G3&BHK^ zc)`1kUzo^Qkk$?KFKHNBD?nP-MJ3b@&4fg;g5l2wMi^g?9qj+~@b;62o_U1_S1J`g z7m^UMg25FX1MJ5AQxAJ5F5WDt=$=-@JV-!LHA2vuxl9kN>PS8x??^AINH6LjF*#nbk4}=n3gfWp$kEX5IpHS zYiQ{@d7Nl&d$#+7-TckP&Q}N91e-C#5QQ<|d}62BjvZR2H60wE-&H<>}%WqH(_V;zPbB1rgSSSC(0? zWlQ#?N3UgnJ9m2C29w!SwoOo5_2Iq!<8vCyEoDoj@#oV($oJEg6Bj@;nD|2g8 s%L|>IZ381yx9RvPhV4J)*SeoEV4lyr#k*`nfWBbxboFyt=akR{0DpOPi2wiq literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png new file mode 100644 index 0000000000000000000000000000000000000000..d61648452284da1bc28b10385f95b5d2bf027901 GIT binary patch literal 616 zcmV-u0+;=XP)-tZUVHjYHp;RjQ0M0pRlXN=mLv{hk9Ebp9&~+Wj-T9IkpzWPWd#fZ)d=zV^~S`;LE*!&u-?g42^wwN&Xr1~#d5ifl_2*B1OoS}CDno^8a50ArfE8;stQF>AP54J@H~%T zFz84s;dO!QJKD36(~!QOg!t_^gfFcSKDU4yK0+Ypg$NT^mIYcQ6bk*3P(lBLh7Df_ zTu=2xC#+-_%)|{Cv8zz0t|0y4D5M`xAc{gwOKc`ou<*&VjUREFHs1qd<_xSkKeTBt zgyCi=@jj;&Ns^GsWWaIUl0Y2azcDlF@u{(P*!+EH;lnU~b|Lv{4|4Hdkh!qoQHiE$ zY#y>KFA0QEw=4Z|uV{0A^`Y=D}hB$GP&<$bi8q(u;p^0(my3Rz7fP}|# zGZ&#uor4@c3q9r|f?H6-UZmfgKx(iV(MQ`MPWB>iC~SxnN5H*zb*A3#zWwgu&c|}3 zn^g87H{pdeasl%Lhmab&jC?lES}7C?4BFDNA<}20hoY@w_IU%i*T;}}wh!589}7~7 z#Ug`-R~4j&+K_y4kW@X7qLr-)S5qVKU)tO;+kXJ++{vPI@{hVK|PhMVVx_`)vx~zUs}c9O-Ok{00000NkvXXu0mjf DS5_-g literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7bd1c9bfd78d689c73ba67cf914182933ee68c GIT binary patch literal 614 zcmV-s0-61ZP)OOAS;jTeL{ZSdz-%)SMH9tDF;N4B6%j=d15J&5qy`F#vB?Ar zqS1nH@%ny_XSI*Y>) z1f5QYdmzT>YciP<3WehS<{GovEaLGv27>{*-7f0&I$yJ^L%ZGPv1YT$V|u;*+ZCWz ztHI~CDVsuy($SfR6-`N~K?9GTB#l%%0h7 z-q`K-y~E)+s8lMyTrPL8^_pUo)9G|SluG5pPqw6!LJB_PzyJUM07*qoM6N<$f^=yZ AYybcN literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b74cc40f82fc83e4dfa6e9647ccc1b34e6ed7e GIT binary patch literal 554 zcmV+_0@eMAP)Vb2f>2}Fa82O3m(Ob=t*sniin`NpInLyMJgI`saru@YOPfh zy4g0#G*cV!#N%;Gq9_VH9?v%kjS3Rb1j8^;C={$Gp=lbj z*(?%?geA!5^Pok%UauwjA)v4g2`HedDw4_Mk4hhBQt?e7YJ5(hcj|3dNu^TOPGnjB zTTsqd3GIZ=Bb`n=7no)dflv&K(lsWw?lH6T1Yht0F9qgIuzh}ym0%n<3d3EBWB*pg z+G!I0lbAEXyd>k|QNuwr4=KX1D+tLPv)j@C1=N4sA4NF9A>HcO3G47*Y6!+SrUH-7 z1hb;^#S=r|`aMh>J#dWruAEf}gcR(DRUC`ZUev&$Sbh0SgLiTXeeHEU<$_YV;9281 zym`igIE%Sm8DpDw7@71Tv^EB5xSdUR*0$Mqp+Wq8OoaZtOg52&)zZ;;M=7#C1Yd6x svjx>8ad4e2x|*xHHwRjcjs6zA0XLDUqKT6dS^xk507*qoM6N<$f*wetruo^Ag2=LamM1T#~4RmC^m`_ zs}H7d&XJ}mg+hU?tu0noRvyjI&o2SRAeYZFesYkts79I^jJ7!A7%6nJwq8O?iT55M z1OQ` zbL{!Cp5o*IRmE9PInMCSPjTwfT~J+EYkz}tjxY=fg5Yf6EQ@DG$0kMJ9h^&$W}9BU zP1oj2;?MWVkKIEl)r=Y;L^Cx2q|>!)qJJ8zE7-V*-Cf7V8_2#1c0N975t~+&QUpQJ z5(uo(-O_`%Rj@U@t>JYAgd!>L?0Idxtd#oW2gc!jinsAEva8|kF4#Ic**mmml_{d^$s}Q5Q)KCys4sfck5bP1SyeHwh2`A<@N&t2j0^lgHC_^(pAAPCNjwl+>AN%C4Ll>_8Hjda%9 oS~i=#*e)>KsPlg0=2)Qg6BCqJ=F8HdGXMYp07*qoM6N<$f@i)wr~m)} literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png new file mode 100644 index 0000000000000000000000000000000000000000..a65bcb3e1e9613cd9e4950850db43d7025a5fdf9 GIT binary patch literal 779 zcmV+m1N8ifP)JNR5;6x zll@CmQ5eTZ^k*a#RQf}fVOdd`5NJh6S(>6Cf$wEW#f&JyAR#GAn9>Gml;nOf3WCDa z5({5&UB$(IF?G#$x4X@Ickg!Y-HU!Z_rzX=qAq-XI_LS^=lOCT0|0{#{kBkYDS7{3 zD`iu%E=`cDX_^#^#n$5SIQ|4Zhsk8>N|zXHXG@*41$i-7`Jr{8`3S_OEcmY|RF48wXkk?WpdVM4OePBSbfh z#4_=eXJg@3epx~gi>QbUmO}Bm(ENN3+@c?jWiKvSrm(o|W}Ud*?vy~fn1!V~Cl4kB zI-;c!8f~-v)jX82%EG($>?;KSD$64f2&4qQ#=Yyrcpy$57RAVuV#vKMP)0hT$r6m# zc^F^XaJ8R9Q|}x^NoJYIvYZkq-z}Tnj@UJK2l2H zG}p+VvtjP2Z%bsb$~7QLJ9#pC0dKi`ppOd^_V;ME6tdzC0PtV|r=@e@37O`%0k^=5^`%cf$eu00N17Ro!{^30krz>a%3j34C?*{Mt2^a4~ zK=P+Qq%|f;Tc&+9ps;@Mw`EE%rgs&#y=j6BUGg96oIqdwj9-fiy*N(|@o)eD002ov JPDHLkV1j#pUPb@_ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png new file mode 100644 index 0000000000000000000000000000000000000000..23a37b891c2f5faa3b8128d45373ceab794ca609 GIT binary patch literal 688 zcmV;h0#E&kP)PK^TXt2QS_@2qt2T|9~baC-vaPn=ziepcfAwB$0!O2Q)E}1e8!q+9)KT5JVKU z7HNY}h##OS-BxWHWjD0wrPDeEfUClHs%Q6&2u@FTOJkKMQN|_Rlw6rQz$gPzqGNtj z#ruSeFeh835JJFiM6vp@6M5bXj%k7CMt%SIwfbF_fD-3*Os`9Ly_Q3WQ_SX33E{pX z9_WIeeTCGQ3wYALpBcK+P-iuw;3i&7xCua37k5# z`>c`M@sGeC7cdsdz`aE9lOz!hPholbyz%T85LYf6O*@SA+9&+^7k>+4M8$A8iNQq{ zQvn8k?-+dU`Z@gK0z$EtPV#+`^OH`R@cE-cuE&_!D)SZGxmQxeobP_Zwq zMEgi6ePN45N`|V1so0uE8^}1xw8s;VM%Ai@7} z2-&Cyvez_-O4?6uv{zTaj|YeYEk34i~K@`8YW2g{x* zc;7z3lItpVy_et{Z-ZZ)<@*%{l7Ao8mu@V7*gz<_1##mwW*%LEwCdzNsVLYx2*T-J z#HeQ*_a=R~KDdVNk$EVgAIRl$oQi_(`_IrdJciDpH|Xe{K-YsMtc!cRnFi$qzsr4z z5*$;ecov%3->1{YNy6-Gf(Ecy&_I$CjI#laeuE+S120^|Vjsf)W&i*H07*qoM6N<$ Ef)^4A_ab^avY?n0hpS-#mn_4{O$e%cm-@NH=3`90Wq+3`~HKArSdfX`&Z12 z(CY$VW-MNtXX4xy%yUeE?}*~0-|iByA@ZrwXgph4S*bhcc5{HB!DFVm_v}P*g7+Q~K}7K0lcp(^N@X>U zV`{ZpeIf${R6Hgg4FL^`X$Eu75k(PE6ycl$AW0Ic)#@rR7Z(7;V?i-dR1K935Jgcx zPfkwK>2wGokf!Nih^ARp6-6arYFG#(9Ta!x93nFEjoA==z(g?#sDg?Owk?Mg7K+>l zWYsf(<`#+$h9Sp6gFOg_dd+80SkUpk&xM7h0`Sov9W73spU;GP073|VfZ&Gd$J$*0<~TV5aPS|qWH57|VJz+d0000vYep8SaFV10Q$h+;hIUPX_=v5b}%>Tm<(&j1&5;I!55C)oN0s(P%ZB zP3Q#ahfpXKWF@S?jm4U#fv)QovMhrriclyNs6-G12#3R##4PSZ0VY(dRWJ;Lwuq{# zAW0Gwi$yA^R4RZ!;W+L`f&%x{=D^VK#BBWL4Ys{;*!A7Q;!=dN<&D8*GzGaF4`hV4 zDbY0{NrMX>ZqF=0((gR5-zL$kC*b)!fwu{Euru|XrG<$^n#@)7i_>rCmRxnDq>$Y%gJaCkRd|tE*a2x05Pe!I^e13o69#&RQZ36s0 zB=O|K2Yi(jsMqThn}9t?f5E-)L^naZ+db$&%M$!bCdm=jv7?t_lB?3&%Ltq(>ESw? c;MI421LCcoDG!2@;{X5v07*qoM6N<$f`UZt7XSbN literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png new file mode 100644 index 0000000000000000000000000000000000000000..134b6693687b2fa5fe36d48a9c0b8001f937c741 GIT binary patch literal 650 zcmV;50(Jd~P)VHAd+bMNh~)LLRqN>D)-jd9UvB%+hyKX5U|&4t0)fzgD-MPpQ$nHU%yoz=vI zMGb>1Xu!6Hw$NT~@Au<4P-+{9;Uw?&oj31uzH>xX0T7Xkz!(tn|Ed9-s_FqyReC13 z(ll)vW1O{Ck5ihay12Ob2ABc@RUI;zHpaMiyRDs0r>|D4rHw{ItJSJnYjt~jTbGuW z`X(~}?!&86q40R8<4zYw;$qi0^3ec=c&<&H;r`8W%H=Xymf^i;Wo6~<+}zx2UMzpC z*6MZN?(FMv`n|KO3(KFiUaucP0;Z!@LcUNa%8#vGK5aZ>wDgB0Gi=t*argWJcdlMQ z2#MpEX0wU+9&0U?N(F#OgpviU_Y{jYMsj65U3|PjwUOY}lUYj?MTiK_Il}NCVx-Eh zDx-TzMk7se+M#W_>?A1-x}ZXw3kkyz5kW)_hkjsi@RhKadN#H$Hq)$07*qoM6N<$f}lhwPXGV_ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..c4eff0387d5888c638ba09473ba6d2369f7b56f0 GIT binary patch literal 588 zcmV-S0<-;zP)HU2HvUSp%6 z*n}iP63IK?dpo;h@sj9~pcxo;VVTc-XLiP@DgefqE#NE=@oyUd-&HjLpsLIuSFXV-EMck)oQ(A`s%*^&wf0(rNiNHsU%=0Rw;WC z(kbc37l6fo`-0uR!pYkYv8U^3?nsh^@pw!K0TH3uYyx1_2>|JbXPmfskJ|1YAw9w! z9`N)1^Aesr;y5Nr5-ODn)oOL|CGi}f9!&iVwpK$khlIX10X$H6^A_stBJqvLhU$?V`QXqKme*s~gVDJ4A;LTs_e15jhc1;By a82kqHEPVYFAD2!50000JNR5;6( zlS@kiVHAe7MZY2;Xi-5)WxDDgv@tCUl*&p14T@Z~3ThM5LP4tuQfLu@EnG;nXc<8S z6&3BN?fx-cv-Kp6>HRiNTHE>$X( zD&=w+?GWC>?RLAGC6Yix;an~UmSt)tSf}1VS6N1N2ONORdD? zaj}w6DAZZdOud9Ep?M?{iQWbE5^9HLLZZF|1kdy0Tu4InEuboP9@nvbZ-P0n4AZTy zyMRIxRDmUE#LdqYuD=-Qz4N^bC`_#S7vcLn1M}{J(Wl3#c4VWczu&)AjUlh(11>gp>f`wv{KnjF%!aA*Jk N002ovPDHLkV1kkt*XsZP literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png new file mode 100644 index 0000000000000000000000000000000000000000..f59b7c4365fa1720af1aa04eb47167ddaa6eeed4 GIT binary patch literal 626 zcmV-&0*(ENP)ZS(e|#C2>JN4>y}l*tQ*E7zP@R2CCJnkW?xa6bgk%(hgtZ z0=~d?U3i`+Mvi4!&~+WPT1^NX#{u6&QIx+DE(oR{&T5&-ovF?@wGw)P&AtpHZa|G%V*GUUqL@@!d4V$`8=##4)ytY959JG zdc&Kho)&AL70^i z!PEmeeDWCB-UbK(*4JST44^tV2z_J(dn~+vBMJT97_7rzFio=~XczIv?PQ5$v%u~y zu(bteXb5I1h2zCV{Jc2~V{{yzZipgsP6;k264$*#5q?GzCm|CPa9CKqm4b116h3Pu z?+%Cm52plC8|5P0@igf2GV1KkCfk{Zecu=G@VNrf>s%g9c5D%@cfxVb6$nY`1IW=4 zt10QqSps_2JLp0f3I0j0u>#qA;v!+T))KEbCg|mo3q0pG{OR}p0fPds8+K~d>Hq)$ M07*qoM6N<$g1S2e3jhEB literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..44084add79b9a0fc3354d16bbd4b4b5ff8095da7 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R@9E+gqH(@-qA%AW0|7U8+xDRI z0k`B18}ImRw2g{jTGP$Pmx3yI6F_2s&$|`cJ!i0UN zB3H;=r{#{FwLaNVJ&hZl9+MTHGx1T^-A=Q0?hRb#8a~x50X%;`b6ik3cw=#XdxWy= zgrpBoDjpwP&g9<9h3x!k_B!?vuTJVkmIJ-U N;OXk;vd$@?2>|rNdMN+^ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1441c9a12062a4bb3d706000d3ca14399aebca GIT binary patch literal 565 zcmV-50?Pe~P)SCZIX8XZzY2l?gCw6LlgWJ5Avz#QX4|&mI8LN)w~J1vgL=KLAhlWz*=#m~gyvxa z&;iC6gb?aZvMdXxX`<0+D1hs_pqJ!wxqlEH;CJ)je~uL(gpi@v>!I0f_Kl=E(E+Tq z26na*9gribxx-Oft(HnstyXUUy!39&E-cI%J5Rsy;(PGZH{g{ty!HVC&yGPT3H8x# zw{^gBPW)O0FMoh{k%l<`1a|To_Wl&u&-GXm8izU|&<&utILc4wc6s@u1bmTz6x{qg zTw@7=FQRcg&r`h+gcR$*Jbv+*DPk7v)B@e0o2 z6IlBXW&8xh@9)YKiV~2>+z&XKd24JT55YWz&JtfvCg4r^~bLP79-yS@n$OW00000NkvXXu0mjf DStt2z literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png new file mode 100644 index 0000000000000000000000000000000000000000..e7708292adabf4821612bfca032cbd019c63180b GIT binary patch literal 634 zcmV-=0)_pFP)KrcWDBzIw9XCtIF5G<@j zP(;CSqHxUrerI>~wKyloM4~t_Ofl@UFEj6$Bmm6p1aK6H{5zI_FOn(%k{CiRq?CT< zoV}Ey-7=-5nVFes;1m!f?EqZLIs4k$n%39XN4dPbtX{9DZnvvaiWV0aH9I>yf;2<< zHmo7WNC<&iE4ji-iKJpsBApDKiAiqWy8R$FV|M@E-RCB03vjWNGQZJxKCc-cSB=dq z#v3snoDMC=4<2BDgiZrv0Veh~mz(X=S@;fbe>CJO_5|oe2o3=wgfW(StLzI-qr&kc zhXEJ?9=`nWXzrUKL_p*Kr9u@95MU9EKqp2vi+%&1&gUn&>Ut_d3>wiyiAJg5G7j%G z#$sf%Kqau!AAHP&4Q?edl!FWqpT=C{D}$15WC#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R>*?YcqH(@;f-l!01CbW>s1Izr z3LkoHh<3E?TVANoG4CX|$empRCCS=R(U(hVJfm~E?IkDKRK&NP2|n`v>d(vV;W1uY zrFGVdwn;4b{qUtE`?GB`)E1ga&i2|7ncUL1b!KMq^QnT#_gn?_Z8(c`1Q~Vy3oL!N z$M8vHL&U1J3SJF!56azQU3B6>r|ZQ{U6)pC|tRy7$(5JQ<@7eB8yk=XcNf-aBIe#;8c_B$^=N z{-Iq&o3%O}V4~G($=zcP(LI|+6dq{?rby~MXwJQ*=!bOvl%?k zYY;jP^@M_k03MHL+-9?_3W5MN=moFW3xmPHU=-4Bw;62MrIhg_lwHEsv)V9U4x>+9cG2kIz8fWo`WyMMfz zdg-)p!<(hFR{VYSDJHEJn09O@#)%q0l?GUg9eS2~vKPUtd+=ak5lWLd-jI=;cjEf# zt$1;~?G!t@s+VLwL=P+Ks;E z!Jkh#NeohG;&02OFD7^EY zP!_PL2~i9VnPEW6Fz?O3dVF_U$duAL$=SU7&hNc@-drC5A4z=IgjR%B|D)?dOEaGb zuwod-$hPex$8oSoqK;@Z8u3EBfK@V2CKKqo?yA%2pjNA)(P%)HWf#)x^$?52W{|1b zPXOA$IfrSQV2q(qC_vLR)a!L9isAxjoeoJRlgE&G0Ga8krBVsGjZJJ-x6y1i(eL-q zwB%+o53no?l}ZJh#drAjlc6nhs3RTn;1IH+x;K#|X)!=#fM76)$IqT4^N}IF%aQ#o zTKS@*)|#L#jiCPi9~);c`x>TR|0{+9a?O5Exg#~V5W2C7G9nAAN(~f z2caqx&t~GhnK;qW3~&OuEke?%u(8Jxs_+ZVVz1^-uLrP95TahadGG$+(D&+%2QMF8 eFxE8s%l`oWamgLPAe&$S0000dKE@duOisOkyZ-5 zuwDqkAi_*y5o3Xrq7ieT<<3p#-R^dGySwea-CgZZZITBc?#1u+FtBuUCJUZe;~j-%Tu@ZpYB;$&ydfdZG#(j;(iB#^yRlqv#C*LO zXWXM0cpKKBlj#L6awm|;A38Zs3mg;sQZmCAZT8m@X{AlP6 zVI=SsiA16x=>2%^XV3U0y4~G+MNE!B{!#;~%L2l(14PX>EblXb{rnCSlVKe0dyf-O zuY#uOf}m&2xq80;4d3i|cuNw}U@sg3VKRU)>Os_1L3pl5mK*|?X3#a}K+EVZt&w?w zefXKP^ZqnW-3y9AhYJZ~r4m*!Z3OSz3d}2Q`nDM_f_u>L%8Cb}8`?bl)x?gwAy>zp z06y57kT6sry1g2l{|V%UW?)JwnbzUugbvpOF3=oZDo}spfs2EWKOH{_^59;ue!o^A z@e7dWS|QI`Ff-E$USJ`LqDF}zH%R}YOlMiv63A=qK^d}n!5_(fW%^k4U_D`_meIDi kNMKea>saR;>gt<+0gk_zsk5>Xc>n+a07*qoM6N<$f>Jg*?*IS* literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb880947ddf3e745c29e8d9dc90f09c7e6e323c GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8ecbf47672a874c0958d0d113a56162c2bd364 GIT binary patch literal 651 zcmV;60(AX}P)hkjP zNW|QGv-YFNLN^qH@tJycPNG5ti6B7;r4mEr#lr@*T8*M85D`{ZR^BWwF23T<%MYIh zdC)S*p=|xk^!~H=+HSZ183~y8v4|mYmZxt&)5{{~>J`>E223Q5>T$=~mtA71q-jdG z+eJhOAyBW^0k9Gk1+rX8)zFx((CG^&tDY>6XaS~Fy!WJON|Gdujg5^~Vzt@o%BcYLiNiTQSD`zL^ociBz_>bDlpw3kriQ@Z`bVsGz-_6N>$&gTDiKDTKR^ z-hB*tHa^>!oD~5TK^0UK5rZ}RBm50Bv}S-yA%s=Ha5RYb{)!z2N&$&64gfhybBu8p lh~_|?8^bu;BRYt{<}Yrwd83Y=s?Goa002ovPDHLkV1l%3CP4rI literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2490ed1432d5d667a76235360824a1088e928 GIT binary patch literal 734 zcmV<40wMj0P)JT{hN;C#tgf#9krG=I>5!<*aE1_(spcgF}<`n4i zJi-}^6UUeU4jUFwdCiVPDm%`Zx^UBa8J(mnR6wEgz^}o8;)M*Y(@l_!Kfv)}4+NuM zaPXE50z)r)9=D=SR|RIqfQ^j}Hu!fzMeQBo+@PZk1G8hOw|vBTvkx`HM)Xe9q3xao z@`p0`NO!2904FHSLA6E@Y-O6zH$DQzvq@aHsz}}<(!v(Z_+EodX%R&NZW75g+nENo zV0020rxE^;7d!067AN>6*+&YLp$9uH6F-=In`XC{Cn%+o|5)b&boEPr02w@|P*oGm QmjD0&07*qoM6N<$g78X0Q~&?~ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..fecadd08afed92536be91ab12d8e37b6bf410d5d GIT binary patch literal 613 zcmV-r0-F7aP)wK%m(L+9IV|s|#(WRl-O^4GvaQsnHq|OstfO zIJ3}3<01}YGARE4m!7=)QisvlHUo!Qymx-@-t*p_129Ko-#pVI)6#!*kLj-AGXWNR zyA_{wKii_amK7^YT-v z6#plaNm#8`-kz@OvjIt^4%IN{@J3bR zRI}ME1Mv85p|%;RK>ViR>APPLB4;;BpCtqE@P+*7!G>I4UjNx~e>r3HA^tWCQ@S)l z{BslcSwL-CxQ&_ZZSv_g0Tu{yi*X){Mt|W7)lbE`SQxFP00000NkvXXu0mjf;)M*S literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4bbccdf1643f4ff5022fbc59b82546e259317e GIT binary patch literal 386 zcmV-|0e$|7P)_QM!1S$Bhw4w+iRuFWf;tfR6D%SMJrb+tx zC9R6{2>Ou6#juIy6u(I?|;&Owi$sRB4^20apB5xE2 z#B9XekY66S6lzfCL!eEQRgo0LokTA55@Y#%_wN!TXPw^Q4IIXsG~v#u_4t;x_HM16EQ@QRY+rut&97&UefsPmLrQ5P zBC2kcbux9L%2bJz$P$XV$*zSxb2e@6_3O#;&!FD<&hLjGn%~%en;7)djE^d6!t$lW7GyIOKlQ46hr`Z zjLNuRDP_53dNoN?wd&HMgL^m1DXFU<5dQsrceN>fSz00000)O9XRTN^$%%`*Fg>ryDtc(lF@?b>dE!20r+y z#Q*>(wbV5H`-E4Do={CJp7=ERhw15hgZi)?jRG88 zzVz(5;g?Td1izJyO33bhjg2Qc7FVY@f9!o)Gu?DII~vm-Dc?}3M!fsgjP?F(7`rgg z+xOk8XD)e?Zl=5+un`5!7kr?F=eq)K-5uqr%yU$1hLv){Vlm=)*5~`lwMciiXFu*g z)*Jkz6AF>#zb(Vx`Iv{bdGZHtlW)v(y5k^|xgSUc9%0}S20nrYrO}78ofk?bV!5)4 z=Ngz@+$9N1>>mA%IWx`Fqa240bWkiW;2TZgd8CZS0U}@mknC;!2;wi$eI@`h0y2JS`Eae0CW}q(2(%!m8 zWq$`PDU>LT1_y*bBv#P5<@q0@ttz$hIH}YMDvAigCc=y*)jY-VOpTd;A8@3t7Xh4r z0KTWOk;N2Ox4!&&^4B*no$WtTX!BXB)rg!y8dvGgKBQKLJNXRRp0}Bsjd1|LNQX~c zbC~fjrk2iL@4dYF*vt;}dFn(%h)n_-vzEIHMOKRkdF%3Lq|zBgKm_h>TEq!))nWjq zzn;B!?!(dQcHu$#=JF`cS&W~C`WHFW^B!~MI#k)>1Vk&eQy8P1O`J6V04{D@|7d6^ zyBABnh-d^H0FX&L07M||E0n_dp4v&Q%PSE9p#R#Hq)`5I_(B5CE#q dxjPz0{s-<+c#AC!i7@~G002ovPDHLkV1iPlpuqqD literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css new file mode 100644 index 0000000..32b6507 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css @@ -0,0 +1,141 @@ +body { + margin: 0; + padding: 80px 100px; + font: 13px "Helvetica Neue", "Lucida Grande", "Arial"; + background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9)); + background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9); + background-repeat: no-repeat; + color: #555; + -webkit-font-smoothing: antialiased; +} +h1, h2, h3 { + margin: 0; + font-size: 22px; + color: #343434; +} +h1 em, h2 em { + padding: 0 5px; + font-weight: normal; +} +h1 { + font-size: 60px; +} +h2 { + margin-top: 10px; +} +h3 { + margin: 5px 0 10px 0; + padding-bottom: 5px; + border-bottom: 1px solid #eee; + font-size: 18px; +} +ul { + margin: 0; + padding: 0; +} +ul li { + margin: 5px 0; + padding: 3px 8px; + list-style: none; +} +ul li:hover { + cursor: pointer; + color: #2e2e2e; +} +ul li .path { + padding-left: 5px; + font-weight: bold; +} +ul li .line { + padding-right: 5px; + font-style: italic; +} +ul li:first-child .path { + padding-left: 0; +} +p { + line-height: 1.5; +} +a { + color: #555; + text-decoration: none; +} +a:hover { + color: #303030; +} +#stacktrace { + margin-top: 15px; +} +.directory h1 { + margin-bottom: 15px; + font-size: 18px; +} +ul#files { + width: 100%; + height: 500px; +} +ul#files li { + padding: 0; +} +ul#files li img { + position: absolute; + top: 5px; + left: 5px; +} +ul#files li a { + position: relative; + display: block; + margin: 1px; + width: 30%; + height: 25px; + line-height: 25px; + text-indent: 8px; + float: left; + border: 1px solid transparent; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + overflow: hidden; + text-overflow: ellipsis; +} +ul#files li a.icon { + text-indent: 25px; +} +ul#files li a:focus, +ul#files li a:hover { + outline: none; + background: rgba(255,255,255,0.65); + border: 1px solid #ececec; +} +ul#files li a.highlight { + -webkit-transition: background .4s ease-in-out; + background: #ffff4f; + border-color: #E9DC51; +} +#search { + display: block; + position: fixed; + top: 20px; + right: 20px; + width: 90px; + -webkit-transition: width ease 0.2s, opacity ease 0.4s; + -moz-transition: width ease 0.2s, opacity ease 0.4s; + -webkit-border-radius: 32px; + -moz-border-radius: 32px; + -webkit-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -moz-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); + -webkit-font-smoothing: antialiased; + text-align: left; + font: 13px "Helvetica Neue", Arial, sans-serif; + padding: 4px 10px; + border: none; + background: transparent; + margin-bottom: 0; + outline: none; + opacity: 0.7; + color: #888; +} +#search:focus { + width: 120px; + opacity: 1.0; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js new file mode 100644 index 0000000..2c03c28 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js @@ -0,0 +1,388 @@ + +/*! + * Connect - utils + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var http = require('http') + , crypto = require('crypto') + , parse = require('url').parse + , signature = require('cookie-signature'); + +/** + * Return `true` if the request has a body, otherwise return `false`. + * + * @param {IncomingMessage} req + * @return {Boolean} + * @api private + */ + +exports.hasBody = function(req) { + return 'transfer-encoding' in req.headers || 'content-length' in req.headers; +}; + +/** + * Extract the mime type from the given request's + * _Content-Type_ header. + * + * @param {IncomingMessage} req + * @return {String} + * @api private + */ + +exports.mime = function(req) { + var str = req.headers['content-type'] || ''; + return str.split(';')[0]; +}; + +/** + * Generate an `Error` from the given status `code` + * and optional `msg`. + * + * @param {Number} code + * @param {String} msg + * @return {Error} + * @api private + */ + +exports.error = function(code, msg){ + var err = new Error(msg || http.STATUS_CODES[code]); + err.status = code; + return err; +}; + +/** + * Return md5 hash of the given string and optional encoding, + * defaulting to hex. + * + * utils.md5('wahoo'); + * // => "e493298061761236c96b02ea6aa8a2ad" + * + * @param {String} str + * @param {String} encoding + * @return {String} + * @api private + */ + +exports.md5 = function(str, encoding){ + return crypto + .createHash('md5') + .update(str) + .digest(encoding || 'hex'); +}; + +/** + * Merge object b with object a. + * + * var a = { foo: 'bar' } + * , b = { bar: 'baz' }; + * + * utils.merge(a, b); + * // => { foo: 'bar', bar: 'baz' } + * + * @param {Object} a + * @param {Object} b + * @return {Object} + * @api private + */ + +exports.merge = function(a, b){ + if (a && b) { + for (var key in b) { + a[key] = b[key]; + } + } + return a; +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; + + +/** + * Return a unique identifier with the given `len`. + * + * utils.uid(10); + * // => "FDaS435D2z" + * + * @param {Number} len + * @return {String} + * @api private + */ + +exports.uid = function(len) { + return crypto.randomBytes(Math.ceil(len * 3 / 4)) + .toString('base64') + .slice(0, len) + .replace(/\//g, '-') + .replace(/\+/g, '_'); +}; + +/** + * Sign the given `val` with `secret`. + * + * @param {String} val + * @param {String} secret + * @return {String} + * @api private + */ + +exports.sign = function(val, secret){ + console.warn('do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature') + return val + '.' + crypto + .createHmac('sha256', secret) + .update(val) + .digest('base64') + .replace(/=+$/, ''); +}; + +/** + * Unsign and decode the given `val` with `secret`, + * returning `false` if the signature is invalid. + * + * @param {String} val + * @param {String} secret + * @return {String|Boolean} + * @api private + */ + +exports.unsign = function(val, secret){ + console.warn('do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature') + var str = val.slice(0, val.lastIndexOf('.')); + return exports.sign(str, secret) == val + ? str + : false; +}; + +/** + * Parse signed cookies, returning an object + * containing the decoded key/value pairs, + * while removing the signed key from `obj`. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.parseSignedCookies = function(obj, secret){ + var ret = {}; + Object.keys(obj).forEach(function(key){ + var val = obj[key]; + if (0 == val.indexOf('s:')) { + val = signature.unsign(val.slice(2), secret); + if (val) { + ret[key] = val; + delete obj[key]; + } + } + }); + return ret; +}; + +/** + * Parse a signed cookie string, return the decoded value + * + * @param {String} str signed cookie string + * @param {String} secret + * @return {String} decoded value + * @api private + */ + +exports.parseSignedCookie = function(str, secret){ + return 0 == str.indexOf('s:') + ? signature.unsign(str.slice(2), secret) + : str; +}; + +/** + * Parse JSON cookies. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.parseJSONCookies = function(obj){ + Object.keys(obj).forEach(function(key){ + var val = obj[key]; + var res = exports.parseJSONCookie(val); + if (res) obj[key] = res; + }); + return obj; +}; + +/** + * Parse JSON cookie string + * + * @param {String} str + * @return {Object} Parsed object or null if not json cookie + * @api private + */ + +exports.parseJSONCookie = function(str) { + if (0 == str.indexOf('j:')) { + try { + return JSON.parse(str.slice(2)); + } catch (err) { + // no op + } + } +}; + +/** + * Pause `data` and `end` events on the given `obj`. + * Middleware performing async tasks _should_ utilize + * this utility (or similar), to re-emit data once + * the async operation has completed, otherwise these + * events may be lost. + * + * var pause = utils.pause(req); + * fs.readFile(path, function(){ + * next(); + * pause.resume(); + * }); + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +exports.pause = require('pause'); + +/** + * Strip `Content-*` headers from `res`. + * + * @param {ServerResponse} res + * @api private + */ + +exports.removeContentHeaders = function(res){ + Object.keys(res._headers).forEach(function(field){ + if (0 == field.indexOf('content')) { + res.removeHeader(field); + } + }); +}; + +/** + * Check if `req` is a conditional GET request. + * + * @param {IncomingMessage} req + * @return {Boolean} + * @api private + */ + +exports.conditionalGET = function(req) { + return req.headers['if-modified-since'] + || req.headers['if-none-match']; +}; + +/** + * Respond with 401 "Unauthorized". + * + * @param {ServerResponse} res + * @param {String} realm + * @api private + */ + +exports.unauthorized = function(res, realm) { + res.statusCode = 401; + res.setHeader('WWW-Authenticate', 'Basic realm="' + realm + '"'); + res.end('Unauthorized'); +}; + +/** + * Respond with 304 "Not Modified". + * + * @param {ServerResponse} res + * @param {Object} headers + * @api private + */ + +exports.notModified = function(res) { + exports.removeContentHeaders(res); + res.statusCode = 304; + res.end(); +}; + +/** + * Return an ETag in the form of `"-"` + * from the given `stat`. + * + * @param {Object} stat + * @return {String} + * @api private + */ + +exports.etag = function(stat) { + return '"' + stat.size + '-' + Number(stat.mtime) + '"'; +}; + +/** + * Parse the given Cache-Control `str`. + * + * @param {String} str + * @return {Object} + * @api private + */ + +exports.parseCacheControl = function(str){ + var directives = str.split(',') + , obj = {}; + + for(var i = 0, len = directives.length; i < len; i++) { + var parts = directives[i].split('=') + , key = parts.shift().trim() + , val = parseInt(parts.shift(), 10); + + obj[key] = isNaN(val) ? true : val; + } + + return obj; +}; + +/** + * Parse the `req` url with memoization. + * + * @param {ServerRequest} req + * @return {Object} + * @api private + */ + +exports.parseUrl = function(req){ + var parsed = req._parsedUrl; + if (parsed && parsed.href == req.url) { + return parsed; + } else { + return req._parsedUrl = parse(req.url); + } +}; + +/** + * Parse byte `size` string. + * + * @param {String} size + * @return {Number} + * @api private + */ + +exports.parseBytes = require('bytes'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml new file mode 100644 index 0000000..7a902e8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - 0.6 + - 0.8 +notifications: + email: + recipients: + - brianloveswords@gmail.com \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md new file mode 100644 index 0000000..4ad5d64 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md @@ -0,0 +1,33 @@ +# buffer-crc32 + +[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32) + +crc32 that works with binary data and fancy character sets, outputs +buffer, signed or unsigned data and has tests. + +Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix + +# install +``` +npm install buffer-crc32 +``` + +# example +```js +var crc32 = require('buffer-crc32'); +// works with buffers +var buf = Buffer([[0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00]) +crc32(buf) // -> + +// has convenience methods for getting signed or unsigned ints +crc32.signed(buf) // -> -1805997238 +crc32.unsigned(buf) // -> 2488970058 + +// will cast to buffer if given a string, so you can +// directly use foreign characters safely +crc32('自動販売機') // -> +``` + +# tests +This was tested against the output of zlib's crc32 method. You can run +the tests with`npm test` (requires tap) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js new file mode 100644 index 0000000..ab0e19e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js @@ -0,0 +1,84 @@ +var Buffer = require('buffer').Buffer; + +var CRC_TABLE = [ + 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, + 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, + 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, + 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, + 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, + 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, + 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, + 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, + 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, + 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, + 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, + 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, + 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, + 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, + 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, + 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, + 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, + 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, + 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, + 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, + 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, + 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, + 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, + 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, + 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, + 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, + 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, + 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, + 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, + 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, + 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, + 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, + 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, + 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, + 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, + 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, + 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, + 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, + 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, + 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, + 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, + 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, + 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, + 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, + 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, + 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, + 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, + 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, + 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, + 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, + 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, + 0x2d02ef8d +]; + +function bufferizeInt(num) { + var tmp = Buffer(4); + tmp.writeInt32BE(num, 0); + return tmp; +} + +function _crc32(buf) { + if (!Buffer.isBuffer(buf)) + buf = Buffer(buf); + var crc = 0xffffffff; + for (var n = 0; n < buf.length; n++) { + crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8); + } + return (crc ^ 0xffffffff); +} + +function crc32() { + return bufferizeInt(_crc32.apply(null, arguments)); +} +crc32.signed = function () { + return _crc32.apply(null, arguments); +}; +crc32.unsigned = function () { + return crc32.apply(null, arguments).readUInt32BE(0); +}; + +module.exports = crc32; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json new file mode 100644 index 0000000..82f79e0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json @@ -0,0 +1,31 @@ +{ + "author": { + "name": "Brian J. Brennan", + "email": "brianloveswords@gmail.com", + "url": "http://bjb.io" + }, + "name": "buffer-crc32", + "description": "A pure javascript CRC32 algorithm that plays nice with binary data", + "version": "0.1.1", + "homepage": "https://github.com/brianloveswords/buffer-crc32", + "repository": { + "type": "git", + "url": "git://github.com/brianloveswords/buffer-crc32.git" + }, + "main": "index.js", + "scripts": { + "test": "./node_modules/.bin/tap tests/*.test.js" + }, + "dependencies": {}, + "devDependencies": { + "tap": "~0.2.5" + }, + "optionalDependencies": {}, + "engines": { + "node": "*" + }, + "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([[0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> \n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('自動販売機') // -> \n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n", + "readmeFilename": "README.md", + "_id": "buffer-crc32@0.1.1", + "_from": "buffer-crc32@0.1.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js new file mode 100644 index 0000000..d4767e3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js @@ -0,0 +1,52 @@ +var crc32 = require('..'); +var test = require('tap').test; + +test('simple crc32 is no problem', function (t) { + var input = Buffer('hey sup bros'); + var expected = Buffer([0x47, 0xfa, 0x55, 0x70]); + t.same(crc32(input), expected); + t.end(); +}); + +test('another simple one', function (t) { + var input = Buffer('IEND'); + var expected = Buffer([0xae, 0x42, 0x60, 0x82]); + t.same(crc32(input), expected); + t.end(); +}); + +test('slightly more complex', function (t) { + var input = Buffer([0x00, 0x00, 0x00]); + var expected = Buffer([0xff, 0x41, 0xd9, 0x12]); + t.same(crc32(input), expected); + t.end(); +}); + +test('complex crc32 gets calculated like a champ', function (t) { + var input = Buffer('शीर्षक'); + var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); + t.same(crc32(input), expected); + t.end(); +}); + +test('casts to buffer if necessary', function (t) { + var input = 'शीर्षक'; + var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); + t.same(crc32(input), expected); + t.end(); +}); + +test('can do unsigned', function (t) { + var input = 'ham sandwich'; + var expected = -1891873021; + t.same(crc32.signed(input), expected); + t.end(); +}); + +test('can do signed', function (t) { + var input = 'bear sandwich'; + var expected = 3711466352; + t.same(crc32.unsigned(input), expected); + t.end(); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore @@ -0,0 +1 @@ +test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md new file mode 100644 index 0000000..1332808 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md @@ -0,0 +1,10 @@ + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md new file mode 100644 index 0000000..9325d5b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md @@ -0,0 +1,51 @@ +# node-bytes + + Byte string parser / formatter. + +## Example: + +```js +bytes('1kb') +// => 1024 + +bytes('2mb') +// => 2097152 + +bytes('1gb') +// => 1073741824 + +bytes(1073741824) +// => 1gb +``` + +## Installation + +``` +$ npm install bytes +$ component install visionmedia/bytes.js +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json new file mode 100644 index 0000000..76a6057 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json @@ -0,0 +1,7 @@ +{ + "name": "bytes", + "description": "byte size string parser / serializer", + "keywords": ["bytes", "utility"], + "version": "0.1.0", + "scripts": ["index.js"] +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js new file mode 100644 index 0000000..70b2e01 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js @@ -0,0 +1,39 @@ + +/** + * Parse byte `size` string. + * + * @param {String} size + * @return {Number} + * @api public + */ + +module.exports = function(size) { + if ('number' == typeof size) return convert(size); + var parts = size.match(/^(\d+(?:\.\d+)?) *(kb|mb|gb)$/) + , n = parseFloat(parts[1]) + , type = parts[2]; + + var map = { + kb: 1 << 10 + , mb: 1 << 20 + , gb: 1 << 30 + }; + + return map[type] * n; +}; + +/** + * convert bytes into string. + * + * @param {Number} b - bytes to convert + * @return {String} + * @api public + */ + +function convert (b) { + var gb = 1 << 30, mb = 1 << 20, kb = 1 << 10; + if (b >= gb) return (Math.round(b / gb * 100) / 100) + 'gb'; + if (b >= mb) return (Math.round(b / mb * 100) / 100) + 'mb'; + if (b >= kb) return (Math.round(b / kb * 100) / 100) + 'kb'; + return b + 'b'; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json new file mode 100644 index 0000000..0db9bc9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json @@ -0,0 +1,20 @@ +{ + "name": "bytes", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "byte size string parser / serializer", + "version": "0.2.0", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "_id": "bytes@0.2.0", + "_from": "bytes@0.2.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore new file mode 100644 index 0000000..4fbabb3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore @@ -0,0 +1,4 @@ +/test/tmp/ +*.upload +*.un~ +*.http diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile new file mode 100644 index 0000000..8945872 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile @@ -0,0 +1,14 @@ +SHELL := /bin/bash + +test: + @./test/run.js + +build: npm test + +npm: + npm install . + +clean: + rm test/tmp/* + +.PHONY: test clean build diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md new file mode 100644 index 0000000..a5ca104 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md @@ -0,0 +1,311 @@ +# Formidable + +[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable) + +## Purpose + +A node.js module for parsing form data, especially file uploads. + +## Current status + +This module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading +and encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from +a large variety of clients and is considered production-ready. + +## Features + +* Fast (~500mb/sec), non-buffering multipart parser +* Automatically writing file uploads to disk +* Low memory footprint +* Graceful error handling +* Very high test coverage + +## Changelog + +### v1.0.9 + +* Emit progress when content length header parsed (Tim Koschützki) +* Fix Readme syntax due to GitHub changes (goob) +* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara) + +### v1.0.8 + +* Strip potentially unsafe characters when using `keepExtensions: true`. +* Switch to utest / urun for testing +* Add travis build + +### v1.0.7 + +* Remove file from package that was causing problems when installing on windows. (#102) +* Fix typos in Readme (Jason Davies). + +### v1.0.6 + +* Do not default to the default to the field name for file uploads where + filename="". + +### v1.0.5 + +* Support filename="" in multipart parts +* Explain unexpected end() errors in parser better + +**Note:** Starting with this version, formidable emits 'file' events for empty +file input fields. Previously those were incorrectly emitted as regular file +input fields with value = "". + +### v1.0.4 + +* Detect a good default tmp directory regardless of platform. (#88) + +### v1.0.3 + +* Fix problems with utf8 characters (#84) / semicolons in filenames (#58) +* Small performance improvements +* New test suite and fixture system + +### v1.0.2 + +* Exclude node\_modules folder from git +* Implement new `'aborted'` event +* Fix files in example folder to work with recent node versions +* Make gently a devDependency + +[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2) + +### v1.0.1 + +* Fix package.json to refer to proper main directory. (#68, Dean Landolt) + +[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1) + +### v1.0.0 + +* Add support for multipart boundaries that are quoted strings. (Jeff Craig) + +This marks the beginning of development on version 2.0 which will include +several architectural improvements. + +[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0) + +### v0.9.11 + +* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki) +* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class + +**Important:** The old property names of the File class will be removed in a +future release. + +[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11) + +### Older releases + +These releases were done before starting to maintain the above Changelog: + +* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10) +* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9) +* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8) +* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7) +* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6) +* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5) +* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4) +* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3) +* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2) +* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) +* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0) + +## Installation + +Via [npm](http://github.com/isaacs/npm): + + npm install formidable@latest + +Manually: + + git clone git://github.com/felixge/node-formidable.git formidable + vim my.js + # var formidable = require('./formidable'); + +Note: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library. + +## Example + +Parse an incoming file upload. + + var formidable = require('formidable'), + http = require('http'), + + util = require('util'); + + http.createServer(function(req, res) { + if (req.url == '/upload' && req.method.toLowerCase() == 'post') { + // parse a file upload + var form = new formidable.IncomingForm(); + form.parse(req, function(err, fields, files) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.write('received upload:\n\n'); + res.end(util.inspect({fields: fields, files: files})); + }); + return; + } + + // show a file upload form + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + }).listen(80); + +## API + +### formidable.IncomingForm + +__new formidable.IncomingForm()__ + +Creates a new incoming form. + +__incomingForm.encoding = 'utf-8'__ + +The encoding to use for incoming form fields. + +__incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()__ + +The directory for placing file uploads in. You can move them later on using +`fs.rename()`. The default directory is picked at module load time depending on +the first existing directory from those listed above. + +__incomingForm.keepExtensions = false__ + +If you want the files written to `incomingForm.uploadDir` to include the extensions of the original files, set this property to `true`. + +__incomingForm.type__ + +Either 'multipart' or 'urlencoded' depending on the incoming request. + +__incomingForm.maxFieldsSize = 2 * 1024 * 1024__ + +Limits the amount of memory a field (not file) can allocate in bytes. +If this value is exceeded, an `'error'` event is emitted. The default +size is 2MB. + +__incomingForm.hash = false__ + +If you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`. + +__incomingForm.bytesReceived__ + +The amount of bytes received for this form so far. + +__incomingForm.bytesExpected__ + +The expected number of bytes in this form. + +__incomingForm.parse(request, [cb])__ + +Parses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback: + + incomingForm.parse(req, function(err, fields, files) { + // ... + }); + +__incomingForm.onPart(part)__ + +You may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing. + + incomingForm.onPart = function(part) { + part.addListener('data', function() { + // ... + }); + } + +If you want to use formidable to only handle certain parts for you, you can do so: + + incomingForm.onPart = function(part) { + if (!part.filename) { + // let formidable handle all non-file parts + incomingForm.handlePart(part); + } + } + +Check the code in this method for further inspiration. + +__Event: 'progress' (bytesReceived, bytesExpected)__ + +Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar. + +__Event: 'field' (name, value)__ + +Emitted whenever a field / value pair has been received. + +__Event: 'fileBegin' (name, file)__ + +Emitted whenever a new file is detected in the upload stream. Use this even if +you want to stream the file to somewhere else while buffering the upload on +the file system. + +__Event: 'file' (name, file)__ + +Emitted whenever a field / file pair has been received. `file` is an instance of `File`. + +__Event: 'error' (err)__ + +Emitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events. + +__Event: 'aborted'__ + +Emitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core). + +__Event: 'end' ()__ + +Emitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response. + +### formidable.File + +__file.size = 0__ + +The size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet. + +__file.path = null__ + +The path this file is being written to. You can modify this in the `'fileBegin'` event in +case you are unhappy with the way formidable generates a temporary path for your files. + +__file.name = null__ + +The name this file had according to the uploading client. + +__file.type = null__ + +The mime type of this file, according to the uploading client. + +__file.lastModifiedDate = null__ + +A date object (or `null`) containing the time this file was last written to. Mostly +here for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/). + +__file.hash = null__ + +If hash calculation was set, you can read the hex digest out of this var. + +## License + +Formidable is licensed under the MIT license. + +## Ports + +* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable + +## Credits + +* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO new file mode 100644 index 0000000..e1107f2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO @@ -0,0 +1,3 @@ +- Better bufferMaxSize handling approach +- Add tests for JSON parser pull request and merge it +- Implement QuerystringParser the same way as MultipartParser diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js new file mode 100644 index 0000000..bff41f1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js @@ -0,0 +1,70 @@ +require('../test/common'); +var multipartParser = require('../lib/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + parser = new MultipartParser(), + Buffer = require('buffer').Buffer, + boundary = '-----------------------------168072824752491622650073', + mb = 100, + buffer = createMultipartBuffer(boundary, mb * 1024 * 1024), + callbacks = + { partBegin: -1, + partEnd: -1, + headerField: -1, + headerValue: -1, + partData: -1, + end: -1, + }; + + +parser.initWithBoundary(boundary); +parser.onHeaderField = function() { + callbacks.headerField++; +}; + +parser.onHeaderValue = function() { + callbacks.headerValue++; +}; + +parser.onPartBegin = function() { + callbacks.partBegin++; +}; + +parser.onPartData = function() { + callbacks.partData++; +}; + +parser.onPartEnd = function() { + callbacks.partEnd++; +}; + +parser.onEnd = function() { + callbacks.end++; +}; + +var start = +new Date(), + nparsed = parser.write(buffer), + duration = +new Date - start, + mbPerSec = (mb / (duration / 1000)).toFixed(2); + +console.log(mbPerSec+' mb/sec'); + +assert.equal(nparsed, buffer.length); + +function createMultipartBuffer(boundary, size) { + var head = + '--'+boundary+'\r\n' + + 'content-disposition: form-data; name="field1"\r\n' + + '\r\n' + , tail = '\r\n--'+boundary+'--\r\n' + , buffer = new Buffer(size); + + buffer.write(head, 'ascii', 0); + buffer.write(tail, 'ascii', buffer.length - tail.length); + return buffer; +} + +process.on('exit', function() { + for (var k in callbacks) { + assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]); + } +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js new file mode 100644 index 0000000..f6c15a6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js @@ -0,0 +1,43 @@ +require('../test/common'); +var http = require('http'), + util = require('util'), + formidable = require('formidable'), + server; + +server = http.createServer(function(req, res) { + if (req.url == '/') { + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + } else if (req.url == '/post') { + var form = new formidable.IncomingForm(), + fields = []; + + form + .on('error', function(err) { + res.writeHead(200, {'content-type': 'text/plain'}); + res.end('error:\n\n'+util.inspect(err)); + }) + .on('field', function(field, value) { + console.log(field, value); + fields.push([field, value]); + }) + .on('end', function() { + console.log('-> post done'); + res.writeHead(200, {'content-type': 'text/plain'}); + res.end('received fields:\n\n '+util.inspect(fields)); + }); + form.parse(req); + } else { + res.writeHead(404, {'content-type': 'text/plain'}); + res.end('404'); + } +}); +server.listen(TEST_PORT); + +console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js new file mode 100644 index 0000000..050cdd9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js @@ -0,0 +1,48 @@ +require('../test/common'); +var http = require('http'), + util = require('util'), + formidable = require('formidable'), + server; + +server = http.createServer(function(req, res) { + if (req.url == '/') { + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + } else if (req.url == '/upload') { + var form = new formidable.IncomingForm(), + files = [], + fields = []; + + form.uploadDir = TEST_TMP; + + form + .on('field', function(field, value) { + console.log(field, value); + fields.push([field, value]); + }) + .on('file', function(field, file) { + console.log(field, file); + files.push([field, file]); + }) + .on('end', function() { + console.log('-> upload done'); + res.writeHead(200, {'content-type': 'text/plain'}); + res.write('received fields:\n\n '+util.inspect(fields)); + res.write('\n\n'); + res.end('received files:\n\n '+util.inspect(files)); + }); + form.parse(req); + } else { + res.writeHead(404, {'content-type': 'text/plain'}); + res.end('404'); + } +}); +server.listen(TEST_PORT); + +console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js new file mode 100644 index 0000000..be41032 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/formidable'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js new file mode 100644 index 0000000..dad8d5f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js @@ -0,0 +1,73 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +var util = require('./util'), + WriteStream = require('fs').WriteStream, + EventEmitter = require('events').EventEmitter, + crypto = require('crypto'); + +function File(properties) { + EventEmitter.call(this); + + this.size = 0; + this.path = null; + this.name = null; + this.type = null; + this.hash = null; + this.lastModifiedDate = null; + + this._writeStream = null; + + for (var key in properties) { + this[key] = properties[key]; + } + + if(typeof this.hash === 'string') { + this.hash = crypto.createHash(properties.hash); + } + + this._backwardsCompatibility(); +} +module.exports = File; +util.inherits(File, EventEmitter); + +// @todo Next release: Show error messages when accessing these +File.prototype._backwardsCompatibility = function() { + var self = this; + this.__defineGetter__('length', function() { + return self.size; + }); + this.__defineGetter__('filename', function() { + return self.name; + }); + this.__defineGetter__('mime', function() { + return self.type; + }); +}; + +File.prototype.open = function() { + this._writeStream = new WriteStream(this.path); +}; + +File.prototype.write = function(buffer, cb) { + var self = this; + this._writeStream.write(buffer, function() { + if(self.hash) { + self.hash.update(buffer); + } + self.lastModifiedDate = new Date(); + self.size += buffer.length; + self.emit('progress', self.size); + cb(); + }); +}; + +File.prototype.end = function(cb) { + var self = this; + this._writeStream.end(function() { + if(self.hash) { + self.hash = self.hash.digest('hex'); + } + self.emit('end'); + cb(); + }); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js new file mode 100644 index 0000000..060eac2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js @@ -0,0 +1,384 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +var fs = require('fs'); +var util = require('./util'), + path = require('path'), + File = require('./file'), + MultipartParser = require('./multipart_parser').MultipartParser, + QuerystringParser = require('./querystring_parser').QuerystringParser, + StringDecoder = require('string_decoder').StringDecoder, + EventEmitter = require('events').EventEmitter, + Stream = require('stream').Stream; + +function IncomingForm(opts) { + if (!(this instanceof IncomingForm)) return new IncomingForm; + EventEmitter.call(this); + + opts=opts||{}; + + this.error = null; + this.ended = false; + + this.maxFieldsSize = opts.maxFieldsSize || 2 * 1024 * 1024; + this.keepExtensions = opts.keepExtensions || false; + this.uploadDir = opts.uploadDir || IncomingForm.UPLOAD_DIR; + this.encoding = opts.encoding || 'utf-8'; + this.headers = null; + this.type = null; + this.hash = false; + + this.bytesReceived = null; + this.bytesExpected = null; + + this._parser = null; + this._flushing = 0; + this._fieldsSize = 0; +}; +util.inherits(IncomingForm, EventEmitter); +exports.IncomingForm = IncomingForm; + +IncomingForm.UPLOAD_DIR = (function() { + var dirs = [process.env.TMP, '/tmp', process.cwd()]; + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + var isDirectory = false; + + try { + isDirectory = fs.statSync(dir).isDirectory(); + } catch (e) {} + + if (isDirectory) return dir; + } +})(); + +IncomingForm.prototype.parse = function(req, cb) { + this.pause = function() { + try { + req.pause(); + } catch (err) { + // the stream was destroyed + if (!this.ended) { + // before it was completed, crash & burn + this._error(err); + } + return false; + } + return true; + }; + + this.resume = function() { + try { + req.resume(); + } catch (err) { + // the stream was destroyed + if (!this.ended) { + // before it was completed, crash & burn + this._error(err); + } + return false; + } + + return true; + }; + + this.writeHeaders(req.headers); + + var self = this; + req + .on('error', function(err) { + self._error(err); + }) + .on('aborted', function() { + self.emit('aborted'); + }) + .on('data', function(buffer) { + self.write(buffer); + }) + .on('end', function() { + if (self.error) { + return; + } + + var err = self._parser.end(); + if (err) { + self._error(err); + } + }); + + if (cb) { + var fields = {}, files = {}; + this + .on('field', function(name, value) { + fields[name] = value; + }) + .on('file', function(name, file) { + files[name] = file; + }) + .on('error', function(err) { + cb(err, fields, files); + }) + .on('end', function() { + cb(null, fields, files); + }); + } + + return this; +}; + +IncomingForm.prototype.writeHeaders = function(headers) { + this.headers = headers; + this._parseContentLength(); + this._parseContentType(); +}; + +IncomingForm.prototype.write = function(buffer) { + if (!this._parser) { + this._error(new Error('unintialized parser')); + return; + } + + this.bytesReceived += buffer.length; + this.emit('progress', this.bytesReceived, this.bytesExpected); + + var bytesParsed = this._parser.write(buffer); + if (bytesParsed !== buffer.length) { + this._error(new Error('parser error, '+bytesParsed+' of '+buffer.length+' bytes parsed')); + } + + return bytesParsed; +}; + +IncomingForm.prototype.pause = function() { + // this does nothing, unless overwritten in IncomingForm.parse + return false; +}; + +IncomingForm.prototype.resume = function() { + // this does nothing, unless overwritten in IncomingForm.parse + return false; +}; + +IncomingForm.prototype.onPart = function(part) { + // this method can be overwritten by the user + this.handlePart(part); +}; + +IncomingForm.prototype.handlePart = function(part) { + var self = this; + + if (part.filename === undefined) { + var value = '' + , decoder = new StringDecoder(this.encoding); + + part.on('data', function(buffer) { + self._fieldsSize += buffer.length; + if (self._fieldsSize > self.maxFieldsSize) { + self._error(new Error('maxFieldsSize exceeded, received '+self._fieldsSize+' bytes of field data')); + return; + } + value += decoder.write(buffer); + }); + + part.on('end', function() { + self.emit('field', part.name, value); + }); + return; + } + + this._flushing++; + + var file = new File({ + path: this._uploadPath(part.filename), + name: part.filename, + type: part.mime, + hash: self.hash + }); + + this.emit('fileBegin', part.name, file); + + file.open(); + + part.on('data', function(buffer) { + self.pause(); + file.write(buffer, function() { + self.resume(); + }); + }); + + part.on('end', function() { + file.end(function() { + self._flushing--; + self.emit('file', part.name, file); + self._maybeEnd(); + }); + }); +}; + +IncomingForm.prototype._parseContentType = function() { + if (!this.headers['content-type']) { + this._error(new Error('bad content-type header, no content-type')); + return; + } + + if (this.headers['content-type'].match(/urlencoded/i)) { + this._initUrlencoded(); + return; + } + + if (this.headers['content-type'].match(/multipart/i)) { + var m; + if (m = this.headers['content-type'].match(/boundary=(?:"([^"]+)"|([^;]+))/i)) { + this._initMultipart(m[1] || m[2]); + } else { + this._error(new Error('bad content-type header, no multipart boundary')); + } + return; + } + + this._error(new Error('bad content-type header, unknown content-type: '+this.headers['content-type'])); +}; + +IncomingForm.prototype._error = function(err) { + if (this.error) { + return; + } + + this.error = err; + this.pause(); + this.emit('error', err); +}; + +IncomingForm.prototype._parseContentLength = function() { + if (this.headers['content-length']) { + this.bytesReceived = 0; + this.bytesExpected = parseInt(this.headers['content-length'], 10); + this.emit('progress', this.bytesReceived, this.bytesExpected); + } +}; + +IncomingForm.prototype._newParser = function() { + return new MultipartParser(); +}; + +IncomingForm.prototype._initMultipart = function(boundary) { + this.type = 'multipart'; + + var parser = new MultipartParser(), + self = this, + headerField, + headerValue, + part; + + parser.initWithBoundary(boundary); + + parser.onPartBegin = function() { + part = new Stream(); + part.readable = true; + part.headers = {}; + part.name = null; + part.filename = null; + part.mime = null; + headerField = ''; + headerValue = ''; + }; + + parser.onHeaderField = function(b, start, end) { + headerField += b.toString(self.encoding, start, end); + }; + + parser.onHeaderValue = function(b, start, end) { + headerValue += b.toString(self.encoding, start, end); + }; + + parser.onHeaderEnd = function() { + headerField = headerField.toLowerCase(); + part.headers[headerField] = headerValue; + + var m; + if (headerField == 'content-disposition') { + if (m = headerValue.match(/name="([^"]+)"/i)) { + part.name = m[1]; + } + + part.filename = self._fileName(headerValue); + } else if (headerField == 'content-type') { + part.mime = headerValue; + } + + headerField = ''; + headerValue = ''; + }; + + parser.onHeadersEnd = function() { + self.onPart(part); + }; + + parser.onPartData = function(b, start, end) { + part.emit('data', b.slice(start, end)); + }; + + parser.onPartEnd = function() { + part.emit('end'); + }; + + parser.onEnd = function() { + self.ended = true; + self._maybeEnd(); + }; + + this._parser = parser; +}; + +IncomingForm.prototype._fileName = function(headerValue) { + var m = headerValue.match(/filename="(.*?)"($|; )/i) + if (!m) return; + + var filename = m[1].substr(m[1].lastIndexOf('\\') + 1); + filename = filename.replace(/%22/g, '"'); + filename = filename.replace(/&#([\d]{4});/g, function(m, code) { + return String.fromCharCode(code); + }); + return filename; +}; + +IncomingForm.prototype._initUrlencoded = function() { + this.type = 'urlencoded'; + + var parser = new QuerystringParser() + , self = this; + + parser.onField = function(key, val) { + self.emit('field', key, val); + }; + + parser.onEnd = function() { + self.ended = true; + self._maybeEnd(); + }; + + this._parser = parser; +}; + +IncomingForm.prototype._uploadPath = function(filename) { + var name = ''; + for (var i = 0; i < 32; i++) { + name += Math.floor(Math.random() * 16).toString(16); + } + + if (this.keepExtensions) { + var ext = path.extname(filename); + ext = ext.replace(/(\.[a-z0-9]+).*/, '$1') + + name += ext; + } + + return path.join(this.uploadDir, name); +}; + +IncomingForm.prototype._maybeEnd = function() { + if (!this.ended || this._flushing) { + return; + } + + this.emit('end'); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js new file mode 100644 index 0000000..7a6e3e1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js @@ -0,0 +1,3 @@ +var IncomingForm = require('./incoming_form').IncomingForm; +IncomingForm.IncomingForm = IncomingForm; +module.exports = IncomingForm; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js new file mode 100644 index 0000000..9ca567c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js @@ -0,0 +1,312 @@ +var Buffer = require('buffer').Buffer, + s = 0, + S = + { PARSER_UNINITIALIZED: s++, + START: s++, + START_BOUNDARY: s++, + HEADER_FIELD_START: s++, + HEADER_FIELD: s++, + HEADER_VALUE_START: s++, + HEADER_VALUE: s++, + HEADER_VALUE_ALMOST_DONE: s++, + HEADERS_ALMOST_DONE: s++, + PART_DATA_START: s++, + PART_DATA: s++, + PART_END: s++, + END: s++, + }, + + f = 1, + F = + { PART_BOUNDARY: f, + LAST_BOUNDARY: f *= 2, + }, + + LF = 10, + CR = 13, + SPACE = 32, + HYPHEN = 45, + COLON = 58, + A = 97, + Z = 122, + + lower = function(c) { + return c | 0x20; + }; + +for (var s in S) { + exports[s] = S[s]; +} + +function MultipartParser() { + this.boundary = null; + this.boundaryChars = null; + this.lookbehind = null; + this.state = S.PARSER_UNINITIALIZED; + + this.index = null; + this.flags = 0; +}; +exports.MultipartParser = MultipartParser; + +MultipartParser.stateToString = function(stateNumber) { + for (var state in S) { + var number = S[state]; + if (number === stateNumber) return state; + } +}; + +MultipartParser.prototype.initWithBoundary = function(str) { + this.boundary = new Buffer(str.length+4); + this.boundary.write('\r\n--', 'ascii', 0); + this.boundary.write(str, 'ascii', 4); + this.lookbehind = new Buffer(this.boundary.length+8); + this.state = S.START; + + this.boundaryChars = {}; + for (var i = 0; i < this.boundary.length; i++) { + this.boundaryChars[this.boundary[i]] = true; + } +}; + +MultipartParser.prototype.write = function(buffer) { + var self = this, + i = 0, + len = buffer.length, + prevIndex = this.index, + index = this.index, + state = this.state, + flags = this.flags, + lookbehind = this.lookbehind, + boundary = this.boundary, + boundaryChars = this.boundaryChars, + boundaryLength = this.boundary.length, + boundaryEnd = boundaryLength - 1, + bufferLength = buffer.length, + c, + cl, + + mark = function(name) { + self[name+'Mark'] = i; + }, + clear = function(name) { + delete self[name+'Mark']; + }, + callback = function(name, buffer, start, end) { + if (start !== undefined && start === end) { + return; + } + + var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1); + if (callbackSymbol in self) { + self[callbackSymbol](buffer, start, end); + } + }, + dataCallback = function(name, clear) { + var markSymbol = name+'Mark'; + if (!(markSymbol in self)) { + return; + } + + if (!clear) { + callback(name, buffer, self[markSymbol], buffer.length); + self[markSymbol] = 0; + } else { + callback(name, buffer, self[markSymbol], i); + delete self[markSymbol]; + } + }; + + for (i = 0; i < len; i++) { + c = buffer[i]; + switch (state) { + case S.PARSER_UNINITIALIZED: + return i; + case S.START: + index = 0; + state = S.START_BOUNDARY; + case S.START_BOUNDARY: + if (index == boundary.length - 2) { + if (c != CR) { + return i; + } + index++; + break; + } else if (index - 1 == boundary.length - 2) { + if (c != LF) { + return i; + } + index = 0; + callback('partBegin'); + state = S.HEADER_FIELD_START; + break; + } + + if (c != boundary[index+2]) { + return i; + } + index++; + break; + case S.HEADER_FIELD_START: + state = S.HEADER_FIELD; + mark('headerField'); + index = 0; + case S.HEADER_FIELD: + if (c == CR) { + clear('headerField'); + state = S.HEADERS_ALMOST_DONE; + break; + } + + index++; + if (c == HYPHEN) { + break; + } + + if (c == COLON) { + if (index == 1) { + // empty header field + return i; + } + dataCallback('headerField', true); + state = S.HEADER_VALUE_START; + break; + } + + cl = lower(c); + if (cl < A || cl > Z) { + return i; + } + break; + case S.HEADER_VALUE_START: + if (c == SPACE) { + break; + } + + mark('headerValue'); + state = S.HEADER_VALUE; + case S.HEADER_VALUE: + if (c == CR) { + dataCallback('headerValue', true); + callback('headerEnd'); + state = S.HEADER_VALUE_ALMOST_DONE; + } + break; + case S.HEADER_VALUE_ALMOST_DONE: + if (c != LF) { + return i; + } + state = S.HEADER_FIELD_START; + break; + case S.HEADERS_ALMOST_DONE: + if (c != LF) { + return i; + } + + callback('headersEnd'); + state = S.PART_DATA_START; + break; + case S.PART_DATA_START: + state = S.PART_DATA + mark('partData'); + case S.PART_DATA: + prevIndex = index; + + if (index == 0) { + // boyer-moore derrived algorithm to safely skip non-boundary data + i += boundaryEnd; + while (i < bufferLength && !(buffer[i] in boundaryChars)) { + i += boundaryLength; + } + i -= boundaryEnd; + c = buffer[i]; + } + + if (index < boundary.length) { + if (boundary[index] == c) { + if (index == 0) { + dataCallback('partData', true); + } + index++; + } else { + index = 0; + } + } else if (index == boundary.length) { + index++; + if (c == CR) { + // CR = part boundary + flags |= F.PART_BOUNDARY; + } else if (c == HYPHEN) { + // HYPHEN = end boundary + flags |= F.LAST_BOUNDARY; + } else { + index = 0; + } + } else if (index - 1 == boundary.length) { + if (flags & F.PART_BOUNDARY) { + index = 0; + if (c == LF) { + // unset the PART_BOUNDARY flag + flags &= ~F.PART_BOUNDARY; + callback('partEnd'); + callback('partBegin'); + state = S.HEADER_FIELD_START; + break; + } + } else if (flags & F.LAST_BOUNDARY) { + if (c == HYPHEN) { + callback('partEnd'); + callback('end'); + state = S.END; + } else { + index = 0; + } + } else { + index = 0; + } + } + + if (index > 0) { + // when matching a possible boundary, keep a lookbehind reference + // in case it turns out to be a false lead + lookbehind[index-1] = c; + } else if (prevIndex > 0) { + // if our boundary turned out to be rubbish, the captured lookbehind + // belongs to partData + callback('partData', lookbehind, 0, prevIndex); + prevIndex = 0; + mark('partData'); + + // reconsider the current character even so it interrupted the sequence + // it could be the beginning of a new sequence + i--; + } + + break; + case S.END: + break; + default: + return i; + } + } + + dataCallback('headerField'); + dataCallback('headerValue'); + dataCallback('partData'); + + this.index = index; + this.state = state; + this.flags = flags; + + return len; +}; + +MultipartParser.prototype.end = function() { + if (this.state != S.END) { + return new Error('MultipartParser.end(): stream ended unexpectedly: ' + this.explain()); + } +}; + +MultipartParser.prototype.explain = function() { + return 'state = ' + MultipartParser.stateToString(this.state); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js new file mode 100644 index 0000000..63f109e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js @@ -0,0 +1,25 @@ +if (global.GENTLY) require = GENTLY.hijack(require); + +// This is a buffering parser, not quite as nice as the multipart one. +// If I find time I'll rewrite this to be fully streaming as well +var querystring = require('querystring'); + +function QuerystringParser() { + this.buffer = ''; +}; +exports.QuerystringParser = QuerystringParser; + +QuerystringParser.prototype.write = function(buffer) { + this.buffer += buffer.toString('ascii'); + return buffer.length; +}; + +QuerystringParser.prototype.end = function() { + var fields = querystring.parse(this.buffer); + for (var field in fields) { + this.onField(field, fields[field]); + } + this.buffer = ''; + + this.onEnd(); +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js new file mode 100644 index 0000000..e9493e9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js @@ -0,0 +1,6 @@ +// Backwards compatibility ... +try { + module.exports = require('util'); +} catch (e) { + module.exports = require('sys'); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile new file mode 100644 index 0000000..01f7140 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile @@ -0,0 +1,4 @@ +test: + @find test/simple/test-*.js | xargs -n 1 -t node + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md new file mode 100644 index 0000000..f8f0c66 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md @@ -0,0 +1,167 @@ +# Gently + +## Purpose + +A node.js module that helps with stubbing and behavior verification. It allows you to test the most remote and nested corners of your code while keeping being fully unobtrusive. + +## Features + +* Overwrite and stub individual object functions +* Verify that all expected calls have been made in the expected order +* Restore stubbed functions to their original behavior +* Detect object / class names from obj.constructor.name and obj.toString() +* Hijack any required module function or class constructor + +## Installation + +Via [npm](http://github.com/isaacs/npm): + + npm install gently@latest + +## Example + +Make sure your dog is working properly: + + function Dog() {} + + Dog.prototype.seeCat = function() { + this.bark('whuf, whuf'); + this.run(); + } + + Dog.prototype.bark = function(bark) { + require('sys').puts(bark); + } + + var gently = new (require('gently')) + , assert = require('assert') + , dog = new Dog(); + + gently.expect(dog, 'bark', function(bark) { + assert.equal(bark, 'whuf, whuf'); + }); + gently.expect(dog, 'run'); + + dog.seeCat(); + +You can also easily test event emitters with this, for example a simple sequence of 2 events emitted by `fs.WriteStream`: + + var gently = new (require('gently')) + , stream = new (require('fs').WriteStream)('my_file.txt'); + + gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'open'); + }); + + gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'drain'); + }); + +For a full read world example, check out this test case: [test-incoming-form.js](http://github.com/felixge/node-formidable/blob/master/test/simple/test-incoming-form.js) (in [node-formdiable](http://github.com/felixge/node-formidable)). + +## API + +### Gently + +#### new Gently() + +Creates a new gently instance. It listens to the process `'exit'` event to make sure all expectations have been verified. + +#### gently.expect(obj, method, [[count], stubFn]) + +Creates an expectation for an objects method to be called. You can optionally specify the call `count` you are expecting, as well as `stubFn` function that will run instead of the original function. + +Returns a reference to the function that is getting overwritten. + +#### gently.expect([count], stubFn) + +Returns a function that is supposed to be executed `count` times, delegating any calls to the provided `stubFn` function. Naming your stubFn closure will help to properly diagnose errors that are being thrown: + + childProcess.exec('ls', gently.expect(function lsCallback(code) { + assert.equal(0, code); + })); + +#### gently.restore(obj, method) + +Restores an object method that has been previously overwritten using `gently.expect()`. + +#### gently.hijack(realRequire) + +Returns a new require functions that catches a reference to all required modules into `gently.hijacked`. + +To use this function, include a line like this in your `'my-module.js'`. + + if (global.GENTLY) require = GENTLY.hijack(require); + + var sys = require('sys'); + exports.hello = function() { + sys.log('world'); + }; + +Now you can write a test for the module above: + + var gently = global.GENTLY = new (require('gently')) + , myModule = require('./my-module'); + + gently.expect(gently.hijacked.sys, 'log', function(str) { + assert.equal(str, 'world'); + }); + + myModule.hello(); + +#### gently.stub(location, [exportsName]) + +Returns a stub class that will be used instead of the real class from the module at `location` with the given `exportsName`. + +This allows to test an OOP version of the previous example, where `'my-module.js'`. + + if (global.GENTLY) require = GENTLY.hijack(require); + + var World = require('./world'); + + exports.hello = function() { + var world = new World(); + world.hello(); + } + +And `world.js` looks like this: + + var sys = require('sys'); + + function World() { + + } + module.exports = World; + + World.prototype.hello = function() { + sys.log('world'); + }; + +Testing `'my-module.js'` can now easily be accomplished: + + var gently = global.GENTLY = new (require('gently')) + , WorldStub = gently.stub('./world') + , myModule = require('./my-module') + , WORLD; + + gently.expect(WorldStub, 'new', function() { + WORLD = this; + }); + + gently.expect(WORLD, 'hello'); + + myModule.hello(); + +#### gently.hijacked + +An object that holds the references to all hijacked modules. + +#### gently.verify([msg]) + +Verifies that all expectations of this gently instance have been satisfied. If not called manually, this method is called when the process `'exit'` event is fired. + +If `msg` is given, it will appear in any error that might be thrown. + +## License + +Gently is licensed under the MIT license. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js new file mode 100644 index 0000000..022fae0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js @@ -0,0 +1,22 @@ +require('../test/common'); +function Dog() {} + +Dog.prototype.seeCat = function() { + this.bark('whuf, whuf'); + this.run(); +} + +Dog.prototype.bark = function(bark) { + require('sys').puts(bark); +} + +var gently = new (require('gently')) + , assert = require('assert') + , dog = new Dog(); + +gently.expect(dog, 'bark', function(bark) { + assert.equal(bark, 'whuf, whuf'); +}); +gently.expect(dog, 'run'); + +dog.seeCat(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js new file mode 100644 index 0000000..7def134 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js @@ -0,0 +1,11 @@ +require('../test/common'); +var gently = new (require('gently')) + , stream = new (require('fs').WriteStream)('my_file.txt'); + +gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'open'); +}); + +gently.expect(stream, 'emit', function(event) { + assert.equal(event, 'drain'); +}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js new file mode 100644 index 0000000..69122bd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/gently'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js new file mode 100644 index 0000000..8af0e1e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js @@ -0,0 +1,184 @@ +var path = require('path'); + +function Gently() { + this.expectations = []; + this.hijacked = {}; + + var self = this; + process.addListener('exit', function() { + self.verify('process exit'); + }); +}; +module.exports = Gently; + +Gently.prototype.stub = function(location, exportsName) { + function Stub() { + return Stub['new'].apply(this, arguments); + }; + + Stub['new'] = function () {}; + + var stubName = 'require('+JSON.stringify(location)+')'; + if (exportsName) { + stubName += '.'+exportsName; + } + + Stub.prototype.toString = Stub.toString = function() { + return stubName; + }; + + var exports = this.hijacked[location] || {}; + if (exportsName) { + exports[exportsName] = Stub; + } else { + exports = Stub; + } + + this.hijacked[location] = exports; + return Stub; +}; + +Gently.prototype.hijack = function(realRequire) { + var self = this; + return function(location) { + return self.hijacked[location] = (self.hijacked[location]) + ? self.hijacked[location] + : realRequire(location); + }; +}; + +Gently.prototype.expect = function(obj, method, count, stubFn) { + if (typeof obj != 'function' && typeof obj != 'object' && typeof obj != 'number') { + throw new Error + ( 'Bad 1st argument for gently.expect(), ' + + 'object, function, or number expected, got: '+(typeof obj) + ); + } else if (typeof obj == 'function' && (typeof method != 'string')) { + // expect(stubFn) interface + stubFn = obj; + obj = null; + method = null; + count = 1; + } else if (typeof method == 'function') { + // expect(count, stubFn) interface + count = obj; + stubFn = method; + obj = null; + method = null; + } else if (typeof count == 'function') { + // expect(obj, method, stubFn) interface + stubFn = count; + count = 1; + } else if (count === undefined) { + // expect(obj, method) interface + count = 1; + } + + var name = this._name(obj, method, stubFn); + this.expectations.push({obj: obj, method: method, stubFn: stubFn, name: name, count: count}); + + var self = this; + function delegate() { + return self._stubFn(this, obj, method, name, Array.prototype.slice.call(arguments)); + } + + if (!obj) { + return delegate; + } + + var original = (obj[method]) + ? obj[method]._original || obj[method] + : undefined; + + obj[method] = delegate; + return obj[method]._original = original; +}; + +Gently.prototype.restore = function(obj, method) { + if (!obj[method] || !obj[method]._original) { + throw new Error(this._name(obj, method)+' is not gently stubbed'); + } + obj[method] = obj[method]._original; +}; + +Gently.prototype.verify = function(msg) { + if (!this.expectations.length) { + return; + } + + var validExpectations = []; + for (var i = 0, l = this.expectations.length; i < l; i++) { + var expectation = this.expectations[i]; + + if (expectation.count > 0) { + validExpectations.push(expectation); + } + } + + this.expectations = []; // reset so that no duplicate verification attempts are made + + if (!validExpectations.length) { + return; + } + + var expectation = validExpectations[0]; + + throw new Error + ( 'Expected call to '+expectation.name+' did not happen' + + ( (msg) + ? ' ('+msg+')' + : '' + ) + ); +}; + +Gently.prototype._stubFn = function(self, obj, method, name, args) { + var expectation = this.expectations[0], obj, method; + + if (!expectation) { + throw new Error('Unexpected call to '+name+', no call was expected'); + } + + if (expectation.obj !== obj || expectation.method !== method) { + throw new Error('Unexpected call to '+name+', expected call to '+ expectation.name); + } + + expectation.count -= 1; + if (expectation.count === 0) { + this.expectations.shift(); + + // autorestore original if its not a closure + // and no more expectations on that object + var has_more_expectations = this.expectations.reduce(function (memo, expectation) { + return memo || (expectation.obj === obj && expectation.method === method); + }, false); + if (obj !== null && method !== null && !has_more_expectations) { + if (typeof obj[method]._original !== 'undefined') { + obj[method] = obj[method]._original; + delete obj[method]._original; + } else { + delete obj[method]; + } + } + } + + if (expectation.stubFn) { + return expectation.stubFn.apply(self, args); + } +}; + +Gently.prototype._name = function(obj, method, stubFn) { + if (obj) { + var objectName = obj.toString(); + if (objectName == '[object Object]' && obj.constructor.name) { + objectName = '['+obj.constructor.name+']'; + } + return (objectName)+'.'+method+'()'; + } + + if (stubFn.name) { + return stubFn.name+'()'; + } + + return '>> '+stubFn.toString()+' <<'; +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js new file mode 100644 index 0000000..64c1977 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js @@ -0,0 +1 @@ +module.exports = require('./gently'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json new file mode 100644 index 0000000..9c1b7a0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json @@ -0,0 +1,14 @@ +{ + "name": "gently", + "version": "0.9.2", + "directories": { + "lib": "./lib/gently" + }, + "main": "./lib/gently/index", + "dependencies": {}, + "devDependencies": {}, + "engines": { + "node": "*" + }, + "optionalDependencies": {} +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js new file mode 100644 index 0000000..978b5c5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js @@ -0,0 +1,8 @@ +var path = require('path') + , sys = require('sys'); + +require.paths.unshift(path.dirname(__dirname)+'/lib'); + +global.puts = sys.puts; +global.p = function() {sys.error(sys.inspect.apply(null, arguments))};; +global.assert = require('assert'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js new file mode 100644 index 0000000..4f8fe2d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js @@ -0,0 +1,348 @@ +require('../common'); +var Gently = require('gently') + , gently; + +function test(test) { + process.removeAllListeners('exit'); + gently = new Gently(); + test(); +} + +test(function constructor() { + assert.deepEqual(gently.expectations, []); + assert.deepEqual(gently.hijacked, {}); + assert.equal(gently.constructor.name, 'Gently'); +}); + +test(function expectBadArgs() { + var BAD_ARG = 'oh no'; + try { + gently.expect(BAD_ARG); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Bad 1st argument for gently.expect(), object, function, or number expected, got: '+(typeof BAD_ARG)); + } +}); + +test(function expectObjMethod() { + var OBJ = {}, NAME = 'foobar'; + OBJ.foo = function(x) { + return x; + }; + + gently._name = function() { + return NAME; + }; + + var original = OBJ.foo + , stubFn = function() {}; + + (function testAddOne() { + assert.strictEqual(gently.expect(OBJ, 'foo', stubFn), original); + + assert.equal(gently.expectations.length, 1); + var expectation = gently.expectations[0]; + assert.strictEqual(expectation.obj, OBJ); + assert.strictEqual(expectation.method, 'foo'); + assert.strictEqual(expectation.stubFn, stubFn); + assert.strictEqual(expectation.name, NAME); + assert.strictEqual(OBJ.foo._original, original); + })(); + + (function testAddTwo() { + gently.expect(OBJ, 'foo', 2, stubFn); + assert.equal(gently.expectations.length, 2); + assert.strictEqual(OBJ.foo._original, original); + })(); + + (function testAddOneWithoutMock() { + gently.expect(OBJ, 'foo'); + assert.equal(gently.expectations.length, 3); + })(); + + var stubFnCalled = 0, SELF = {}; + gently._stubFn = function(self, obj, method, name, args) { + stubFnCalled++; + assert.strictEqual(self, SELF); + assert.strictEqual(obj, OBJ); + assert.strictEqual(method, 'foo'); + assert.strictEqual(name, NAME); + assert.deepEqual(args, [1, 2]); + return 23; + }; + assert.equal(OBJ.foo.apply(SELF, [1, 2]), 23); + assert.equal(stubFnCalled, 1); +}); + +test(function expectClosure() { + var NAME = 'MY CLOSURE'; + function closureFn() {}; + + gently._name = function() { + return NAME; + }; + + var fn = gently.expect(closureFn); + assert.equal(gently.expectations.length, 1); + var expectation = gently.expectations[0]; + assert.strictEqual(expectation.obj, null); + assert.strictEqual(expectation.method, null); + assert.strictEqual(expectation.stubFn, closureFn); + assert.strictEqual(expectation.name, NAME); + + var stubFnCalled = 0, SELF = {}; + gently._stubFn = function(self, obj, method, name, args) { + stubFnCalled++; + assert.strictEqual(self, SELF); + assert.strictEqual(obj, null); + assert.strictEqual(method, null); + assert.strictEqual(name, NAME); + assert.deepEqual(args, [1, 2]); + return 23; + }; + assert.equal(fn.apply(SELF, [1, 2]), 23); + assert.equal(stubFnCalled, 1); +}); + +test(function expectClosureCount() { + var stubFnCalled = 0; + function closureFn() {stubFnCalled++}; + + var fn = gently.expect(2, closureFn); + assert.equal(gently.expectations.length, 1); + fn(); + assert.equal(gently.expectations.length, 1); + fn(); + assert.equal(stubFnCalled, 2); +}); + +test(function restore() { + var OBJ = {}, NAME = '[my object].myFn()'; + OBJ.foo = function(x) { + return x; + }; + + gently._name = function() { + return NAME; + }; + + var original = OBJ.foo; + gently.expect(OBJ, 'foo'); + gently.restore(OBJ, 'foo'); + assert.strictEqual(OBJ.foo, original); + + (function testError() { + try { + gently.restore(OBJ, 'foo'); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, NAME+' is not gently stubbed'); + } + })(); +}); + +test(function _stubFn() { + var OBJ1 = {toString: function() {return '[OBJ 1]'}} + , OBJ2 = {toString: function() {return '[OBJ 2]'}, foo: function () {return 'bar';}} + , SELF = {}; + + gently.expect(OBJ1, 'foo', function(x) { + assert.strictEqual(this, SELF); + return x * 2; + }); + + assert.equal(gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]), 10); + + (function testAutorestore() { + assert.equal(OBJ2.foo(), 'bar'); + + gently.expect(OBJ2, 'foo', function() { + return 'stubbed foo'; + }); + + gently.expect(OBJ2, 'foo', function() { + return "didn't restore yet"; + }); + + assert.equal(gently._stubFn(SELF, OBJ2, 'foo', 'dummy_name', []), 'stubbed foo'); + assert.equal(gently._stubFn(SELF, OBJ2, 'foo', 'dummy_name', []), "didn't restore yet"); + assert.equal(OBJ2.foo(), 'bar'); + assert.deepEqual(gently.expectations, []); + })(); + + (function testNoMoreCallExpected() { + try { + gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Unexpected call to dummy_name, no call was expected'); + } + })(); + + (function testDifferentCallExpected() { + gently.expect(OBJ2, 'bar'); + try { + gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Unexpected call to dummy_name, expected call to '+gently._name(OBJ2, 'bar')); + } + + assert.equal(gently.expectations.length, 1); + })(); + + (function testNoMockCallback() { + OBJ2.bar(); + assert.equal(gently.expectations.length, 0); + })(); +}); + +test(function stub() { + var LOCATION = './my_class'; + + (function testRegular() { + var Stub = gently.stub(LOCATION); + assert.ok(Stub instanceof Function); + assert.strictEqual(gently.hijacked[LOCATION], Stub); + assert.ok(Stub['new'] instanceof Function); + assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+')'); + + (function testConstructor() { + var newCalled = 0 + , STUB + , ARGS = ['foo', 'bar']; + + Stub['new'] = function(a, b) { + assert.equal(a, ARGS[0]); + assert.equal(b, ARGS[1]); + newCalled++; + STUB = this; + }; + + var stub = new Stub(ARGS[0], ARGS[1]); + assert.strictEqual(stub, STUB); + assert.equal(newCalled, 1); + assert.equal(stub.toString(), 'require('+JSON.stringify(LOCATION)+')'); + })(); + + (function testUseReturnValueAsInstance() { + var R = {}; + + Stub['new'] = function() { + return R; + }; + + var stub = new Stub(); + assert.strictEqual(stub, R); + + })(); + })(); + + var EXPORTS_NAME = 'MyClass'; + test(function testExportsName() { + var Stub = gently.stub(LOCATION, EXPORTS_NAME); + assert.strictEqual(gently.hijacked[LOCATION][EXPORTS_NAME], Stub); + assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+').'+EXPORTS_NAME); + + (function testConstructor() { + var stub = new Stub(); + assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+').'+EXPORTS_NAME); + })(); + }); +}); + +test(function hijack() { + var LOCATION = './foo' + , REQUIRE_CALLS = 0 + , EXPORTS = {} + , REQUIRE = function() { + REQUIRE_CALLS++; + return EXPORTS; + }; + + var hijackedRequire = gently.hijack(REQUIRE); + hijackedRequire(LOCATION); + assert.strictEqual(gently.hijacked[LOCATION], EXPORTS); + + assert.equal(REQUIRE_CALLS, 1); + + // make sure we are caching the hijacked module + hijackedRequire(LOCATION); + assert.equal(REQUIRE_CALLS, 1); +}); + +test(function verify() { + var OBJ = {toString: function() {return '[OBJ]'}}; + gently.verify(); + + gently.expect(OBJ, 'foo'); + try { + gently.verify(); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Expected call to [OBJ].foo() did not happen'); + } + + try { + gently.verify('foo'); + assert.ok(false, 'throw needs to happen'); + } catch (e) { + assert.equal(e.message, 'Expected call to [OBJ].foo() did not happen (foo)'); + } +}); + +test(function processExit() { + var verifyCalled = 0; + gently.verify = function(msg) { + verifyCalled++; + assert.equal(msg, 'process exit'); + }; + + process.emit('exit'); + assert.equal(verifyCalled, 1); +}); + +test(function _name() { + (function testNamedClass() { + function Foo() {}; + var foo = new Foo(); + assert.equal(gently._name(foo, 'bar'), '[Foo].bar()'); + })(); + + (function testToStringPreference() { + function Foo() {}; + Foo.prototype.toString = function() { + return '[Superman 123]'; + }; + var foo = new Foo(); + assert.equal(gently._name(foo, 'bar'), '[Superman 123].bar()'); + })(); + + (function testUnamedClass() { + var Foo = function() {}; + var foo = new Foo(); + assert.equal(gently._name(foo, 'bar'), foo.toString()+'.bar()'); + })(); + + (function testNamedClosure() { + function myClosure() {}; + assert.equal(gently._name(null, null, myClosure), myClosure.name+'()'); + })(); + + (function testUnamedClosure() { + var myClosure = function() {2+2 == 5}; + assert.equal(gently._name(null, null, myClosure), '>> '+myClosure.toString()+' <<'); + })(); +}); + +test(function verifyExpectNone() { + var OBJ = {toString: function() {return '[OBJ]'}}; + gently.verify(); + + gently.expect(OBJ, 'foo', 0); + try { + gently.verify(); + } catch (e) { + assert.fail('Exception should not have been thrown'); + } +}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json new file mode 100644 index 0000000..1fd45c7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json @@ -0,0 +1,28 @@ +{ + "name": "formidable", + "version": "1.0.11", + "dependencies": {}, + "devDependencies": { + "gently": "0.8.0", + "findit": "0.1.1", + "hashish": "0.0.4", + "urun": "0.0.4", + "utest": "0.0.3" + }, + "directories": { + "lib": "./lib" + }, + "main": "./lib/index", + "scripts": { + "test": "make test" + }, + "engines": { + "node": "*" + }, + "optionalDependencies": {}, + "readme": "# Formidable\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)\n\n## Purpose\n\nA node.js module for parsing form data, especially file uploads.\n\n## Current status\n\nThis module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading\nand encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from\na large variety of clients and is considered production-ready.\n\n## Features\n\n* Fast (~500mb/sec), non-buffering multipart parser\n* Automatically writing file uploads to disk\n* Low memory footprint\n* Graceful error handling\n* Very high test coverage\n\n## Changelog\n\n### v1.0.9\n\n* Emit progress when content length header parsed (Tim Koschützki)\n* Fix Readme syntax due to GitHub changes (goob)\n* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)\n\n### v1.0.8\n\n* Strip potentially unsafe characters when using `keepExtensions: true`.\n* Switch to utest / urun for testing\n* Add travis build\n\n### v1.0.7\n\n* Remove file from package that was causing problems when installing on windows. (#102)\n* Fix typos in Readme (Jason Davies).\n\n### v1.0.6\n\n* Do not default to the default to the field name for file uploads where\n filename=\"\".\n\n### v1.0.5\n\n* Support filename=\"\" in multipart parts\n* Explain unexpected end() errors in parser better\n\n**Note:** Starting with this version, formidable emits 'file' events for empty\nfile input fields. Previously those were incorrectly emitted as regular file\ninput fields with value = \"\".\n\n### v1.0.4\n\n* Detect a good default tmp directory regardless of platform. (#88)\n\n### v1.0.3\n\n* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)\n* Small performance improvements\n* New test suite and fixture system\n\n### v1.0.2\n\n* Exclude node\\_modules folder from git\n* Implement new `'aborted'` event\n* Fix files in example folder to work with recent node versions\n* Make gently a devDependency\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)\n\n### v1.0.1\n\n* Fix package.json to refer to proper main directory. (#68, Dean Landolt)\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)\n\n### v1.0.0\n\n* Add support for multipart boundaries that are quoted strings. (Jeff Craig)\n\nThis marks the beginning of development on version 2.0 which will include\nseveral architectural improvements.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)\n\n### v0.9.11\n\n* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki)\n* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class\n\n**Important:** The old property names of the File class will be removed in a\nfuture release.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)\n\n### Older releases\n\nThese releases were done before starting to maintain the above Changelog:\n\n* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)\n* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)\n* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)\n* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)\n* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)\n* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)\n* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)\n* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)\n* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)\n* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)\n\n## Installation\n\nVia [npm](http://github.com/isaacs/npm):\n\n npm install formidable@latest\n\nManually:\n\n git clone git://github.com/felixge/node-formidable.git formidable\n vim my.js\n # var formidable = require('./formidable');\n\nNote: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.\n\n## Example\n\nParse an incoming file upload.\n\n var formidable = require('formidable'),\n http = require('http'),\n\n util = require('util');\n\n http.createServer(function(req, res) {\n if (req.url == '/upload' && req.method.toLowerCase() == 'post') {\n // parse a file upload\n var form = new formidable.IncomingForm();\n form.parse(req, function(err, fields, files) {\n res.writeHead(200, {'content-type': 'text/plain'});\n res.write('received upload:\\n\\n');\n res.end(util.inspect({fields: fields, files: files}));\n });\n return;\n }\n\n // show a file upload form\n res.writeHead(200, {'content-type': 'text/html'});\n res.end(\n '
    '+\n '
    '+\n '
    '+\n ''+\n '
    '\n );\n }).listen(80);\n\n## API\n\n### formidable.IncomingForm\n\n__new formidable.IncomingForm()__\n\nCreates a new incoming form.\n\n__incomingForm.encoding = 'utf-8'__\n\nThe encoding to use for incoming form fields.\n\n__incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()__\n\nThe directory for placing file uploads in. You can move them later on using\n`fs.rename()`. The default directory is picked at module load time depending on\nthe first existing directory from those listed above.\n\n__incomingForm.keepExtensions = false__\n\nIf you want the files written to `incomingForm.uploadDir` to include the extensions of the original files, set this property to `true`.\n\n__incomingForm.type__\n\nEither 'multipart' or 'urlencoded' depending on the incoming request.\n\n__incomingForm.maxFieldsSize = 2 * 1024 * 1024__\n\nLimits the amount of memory a field (not file) can allocate in bytes.\nIf this value is exceeded, an `'error'` event is emitted. The default\nsize is 2MB.\n\n__incomingForm.hash = false__\n\nIf you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.\n\n__incomingForm.bytesReceived__\n\nThe amount of bytes received for this form so far.\n\n__incomingForm.bytesExpected__\n\nThe expected number of bytes in this form.\n\n__incomingForm.parse(request, [cb])__\n\nParses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:\n\n incomingForm.parse(req, function(err, fields, files) {\n // ...\n });\n\n__incomingForm.onPart(part)__\n\nYou may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing.\n\n incomingForm.onPart = function(part) {\n part.addListener('data', function() {\n // ...\n });\n }\n\nIf you want to use formidable to only handle certain parts for you, you can do so:\n\n incomingForm.onPart = function(part) {\n if (!part.filename) {\n // let formidable handle all non-file parts\n incomingForm.handlePart(part);\n }\n }\n\nCheck the code in this method for further inspiration.\n\n__Event: 'progress' (bytesReceived, bytesExpected)__\n\nEmitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.\n\n__Event: 'field' (name, value)__\n\nEmitted whenever a field / value pair has been received.\n\n__Event: 'fileBegin' (name, file)__\n\nEmitted whenever a new file is detected in the upload stream. Use this even if\nyou want to stream the file to somewhere else while buffering the upload on\nthe file system.\n\n__Event: 'file' (name, file)__\n\nEmitted whenever a field / file pair has been received. `file` is an instance of `File`.\n\n__Event: 'error' (err)__\n\nEmitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.\n\n__Event: 'aborted'__\n\nEmitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).\n\n__Event: 'end' ()__\n\nEmitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.\n\n### formidable.File\n\n__file.size = 0__\n\nThe size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.\n\n__file.path = null__\n\nThe path this file is being written to. You can modify this in the `'fileBegin'` event in\ncase you are unhappy with the way formidable generates a temporary path for your files.\n\n__file.name = null__\n\nThe name this file had according to the uploading client.\n\n__file.type = null__\n\nThe mime type of this file, according to the uploading client.\n\n__file.lastModifiedDate = null__\n\nA date object (or `null`) containing the time this file was last written to. Mostly\nhere for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).\n\n__file.hash = null__\n\nIf hash calculation was set, you can read the hex digest out of this var.\n\n## License\n\nFormidable is licensed under the MIT license.\n\n## Ports\n\n* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable\n\n## Credits\n\n* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js\n", + "readmeFilename": "Readme.md", + "_id": "formidable@1.0.11", + "description": "[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)", + "_from": "formidable@1.0.11" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js new file mode 100644 index 0000000..eb432ad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js @@ -0,0 +1,19 @@ +var mysql = require('..'); +var path = require('path'); + +var root = path.join(__dirname, '../'); +exports.dir = { + root : root, + lib : root + '/lib', + fixture : root + '/test/fixture', + tmp : root + '/test/tmp', +}; + +exports.port = 13532; + +exports.formidable = require('..'); +exports.assert = require('assert'); + +exports.require = function(lib) { + return require(exports.dir.lib + '/' + lib); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt new file mode 100644 index 0000000..e7a4785 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt @@ -0,0 +1 @@ +I am a text file with a funky name! diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt new file mode 100644 index 0000000..9b6903e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt @@ -0,0 +1 @@ +I am a plain text file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md new file mode 100644 index 0000000..3c9dbe3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md @@ -0,0 +1,3 @@ +* Opera does not allow submitting this file, it shows a warning to the + user that the file could not be found instead. Tested in 9.8, 11.51 on OSX. + Reported to Opera on 08.09.2011 (tracking email DSK-346009@bugs.opera.com). diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js new file mode 100644 index 0000000..0bae449 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js @@ -0,0 +1,3 @@ +module.exports['generic.http'] = [ + {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt'}, +]; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js new file mode 100644 index 0000000..eb76fdc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js @@ -0,0 +1,21 @@ +var properFilename = 'funkyfilename.txt'; + +function expect(filename) { + return [ + {type: 'field', name: 'title', value: 'Weird filename'}, + {type: 'file', name: 'upload', filename: filename, fixture: properFilename}, + ]; +}; + +var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; +var ffOrIe = " ? % * | \" < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; + +module.exports = { + 'osx-chrome-13.http' : expect(webkit), + 'osx-firefox-3.6.http' : expect(ffOrIe), + 'osx-safari-5.http' : expect(webkit), + 'xp-chrome-12.http' : expect(webkit), + 'xp-ie-7.http' : expect(ffOrIe), + 'xp-ie-8.http' : expect(ffOrIe), + 'xp-safari-5.http' : expect(webkit), +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js new file mode 100644 index 0000000..a476169 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js @@ -0,0 +1,72 @@ +exports['rfc1867'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--\r\n', + parts: + [ { headers: { + 'content-disposition': 'form-data; name="field1"', + }, + data: 'Joe Blow\r\nalmost tricked you!', + }, + { headers: { + 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', + 'Content-Type': 'text/plain', + }, + data: '... contents of file1.txt ...\r', + } + ] + }; + +exports['noTrailing\r\n'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--', + parts: + [ { headers: { + 'content-disposition': 'form-data; name="field1"', + }, + data: 'Joe Blow\r\nalmost tricked you!', + }, + { headers: { + 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', + 'Content-Type': 'text/plain', + }, + data: '... contents of file1.txt ...\r', + } + ] + }; + +exports['emptyHeader'] = + { boundary: 'AaB03x', + raw: + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="field1"\r\n'+ + ': foo\r\n'+ + '\r\n'+ + 'Joe Blow\r\nalmost tricked you!\r\n'+ + '--AaB03x\r\n'+ + 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ + 'Content-Type: text/plain\r\n'+ + '\r\n'+ + '... contents of file1.txt ...\r\r\n'+ + '--AaB03x--\r\n', + expectError: true, + }; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js new file mode 100644 index 0000000..66ad259 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js @@ -0,0 +1,89 @@ +var hashish = require('hashish'); +var fs = require('fs'); +var findit = require('findit'); +var path = require('path'); +var http = require('http'); +var net = require('net'); +var assert = require('assert'); + +var common = require('../common'); +var formidable = common.formidable; + +var server = http.createServer(); +server.listen(common.port, findFixtures); + +function findFixtures() { + var fixtures = []; + findit + .sync(common.dir.fixture + '/js') + .forEach(function(jsPath) { + if (!/\.js$/.test(jsPath)) return; + + var group = path.basename(jsPath, '.js'); + hashish.forEach(require(jsPath), function(fixture, name) { + fixtures.push({ + name : group + '/' + name, + fixture : fixture, + }); + }); + }); + + testNext(fixtures); +} + +function testNext(fixtures) { + var fixture = fixtures.shift(); + if (!fixture) return server.close(); + + var name = fixture.name; + var fixture = fixture.fixture; + + uploadFixture(name, function(err, parts) { + if (err) throw err; + + fixture.forEach(function(expectedPart, i) { + var parsedPart = parts[i]; + assert.equal(parsedPart.type, expectedPart.type); + assert.equal(parsedPart.name, expectedPart.name); + + if (parsedPart.type === 'file') { + var filename = parsedPart.value.name; + assert.equal(filename, expectedPart.filename); + } + }); + + testNext(fixtures); + }); +}; + +function uploadFixture(name, cb) { + server.once('request', function(req, res) { + var form = new formidable.IncomingForm(); + form.uploadDir = common.dir.tmp; + form.parse(req); + + function callback() { + var realCallback = cb; + cb = function() {}; + realCallback.apply(null, arguments); + } + + var parts = []; + form + .on('error', callback) + .on('fileBegin', function(name, value) { + parts.push({type: 'file', name: name, value: value}); + }) + .on('field', function(name, value) { + parts.push({type: 'field', name: name, value: value}); + }) + .on('end', function() { + callback(null, parts); + }); + }); + + var socket = net.createConnection(common.port); + var file = fs.createReadStream(common.dir.fixture + '/http/' + name); + + file.pipe(socket); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js new file mode 100644 index 0000000..2b98598 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js @@ -0,0 +1,24 @@ +var path = require('path'), + fs = require('fs'); + +try { + global.Gently = require('gently'); +} catch (e) { + throw new Error('this test suite requires node-gently'); +} + +exports.lib = path.join(__dirname, '../../lib'); + +global.GENTLY = new Gently(); + +global.assert = require('assert'); +global.TEST_PORT = 13532; +global.TEST_FIXTURES = path.join(__dirname, '../fixture'); +global.TEST_TMP = path.join(__dirname, '../tmp'); + +// Stupid new feature in node that complains about gently attaching too many +// listeners to process 'exit'. This is a workaround until I can think of a +// better way to deal with this. +if (process.setMaxListeners) { + process.setMaxListeners(10000); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js new file mode 100644 index 0000000..75232aa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js @@ -0,0 +1,80 @@ +var common = require('../common'); +var CHUNK_LENGTH = 10, + multipartParser = require(common.lib + '/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + parser = new MultipartParser(), + fixtures = require(TEST_FIXTURES + '/multipart'), + Buffer = require('buffer').Buffer; + +Object.keys(fixtures).forEach(function(name) { + var fixture = fixtures[name], + buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')), + offset = 0, + chunk, + nparsed, + + parts = [], + part = null, + headerField, + headerValue, + endCalled = ''; + + parser.initWithBoundary(fixture.boundary); + parser.onPartBegin = function() { + part = {headers: {}, data: ''}; + parts.push(part); + headerField = ''; + headerValue = ''; + }; + + parser.onHeaderField = function(b, start, end) { + headerField += b.toString('ascii', start, end); + }; + + parser.onHeaderValue = function(b, start, end) { + headerValue += b.toString('ascii', start, end); + } + + parser.onHeaderEnd = function() { + part.headers[headerField] = headerValue; + headerField = ''; + headerValue = ''; + }; + + parser.onPartData = function(b, start, end) { + var str = b.toString('ascii', start, end); + part.data += b.slice(start, end); + } + + parser.onEnd = function() { + endCalled = true; + } + + buffer.write(fixture.raw, 'binary', 0); + + while (offset < buffer.length) { + if (offset + CHUNK_LENGTH < buffer.length) { + chunk = buffer.slice(offset, offset+CHUNK_LENGTH); + } else { + chunk = buffer.slice(offset, buffer.length); + } + offset = offset + CHUNK_LENGTH; + + nparsed = parser.write(chunk); + if (nparsed != chunk.length) { + if (fixture.expectError) { + return; + } + puts('-- ERROR --'); + p(chunk.toString('ascii')); + throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!'); + } + } + + if (fixture.expectError) { + throw new Error('expected parse error did not happen'); + } + + assert.ok(endCalled); + assert.deepEqual(parts, fixture.parts); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js new file mode 100644 index 0000000..52ceedb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js @@ -0,0 +1,104 @@ +var common = require('../common'); +var WriteStreamStub = GENTLY.stub('fs', 'WriteStream'); + +var File = require(common.lib + '/file'), + EventEmitter = require('events').EventEmitter, + file, + gently; + +function test(test) { + gently = new Gently(); + file = new File(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.ok(file instanceof EventEmitter); + assert.strictEqual(file.size, 0); + assert.strictEqual(file.path, null); + assert.strictEqual(file.name, null); + assert.strictEqual(file.type, null); + assert.strictEqual(file.lastModifiedDate, null); + + assert.strictEqual(file._writeStream, null); + + (function testSetProperties() { + var file2 = new File({foo: 'bar'}); + assert.equal(file2.foo, 'bar'); + })(); +}); + +test(function open() { + var WRITE_STREAM; + file.path = '/foo'; + + gently.expect(WriteStreamStub, 'new', function (path) { + WRITE_STREAM = this; + assert.strictEqual(path, file.path); + }); + + file.open(); + assert.strictEqual(file._writeStream, WRITE_STREAM); +}); + +test(function write() { + var BUFFER = {length: 10}, + CB_STUB, + CB = function() { + CB_STUB.apply(this, arguments); + }; + + file._writeStream = {}; + + gently.expect(file._writeStream, 'write', function (buffer, cb) { + assert.strictEqual(buffer, BUFFER); + + gently.expect(file, 'emit', function (event, bytesWritten) { + assert.ok(file.lastModifiedDate instanceof Date); + assert.equal(event, 'progress'); + assert.equal(bytesWritten, file.size); + }); + + CB_STUB = gently.expect(function writeCb() { + assert.equal(file.size, 10); + }); + + cb(); + + gently.expect(file, 'emit', function (event, bytesWritten) { + assert.equal(event, 'progress'); + assert.equal(bytesWritten, file.size); + }); + + CB_STUB = gently.expect(function writeCb() { + assert.equal(file.size, 20); + }); + + cb(); + }); + + file.write(BUFFER, CB); +}); + +test(function end() { + var CB_STUB, + CB = function() { + CB_STUB.apply(this, arguments); + }; + + file._writeStream = {}; + + gently.expect(file._writeStream, 'end', function (cb) { + gently.expect(file, 'emit', function (event) { + assert.equal(event, 'end'); + }); + + CB_STUB = gently.expect(function endCb() { + }); + + cb(); + }); + + file.end(CB); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js new file mode 100644 index 0000000..84de439 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js @@ -0,0 +1,727 @@ +var common = require('../common'); +var MultipartParserStub = GENTLY.stub('./multipart_parser', 'MultipartParser'), + QuerystringParserStub = GENTLY.stub('./querystring_parser', 'QuerystringParser'), + EventEmitterStub = GENTLY.stub('events', 'EventEmitter'), + StreamStub = GENTLY.stub('stream', 'Stream'), + FileStub = GENTLY.stub('./file'); + +var formidable = require(common.lib + '/index'), + IncomingForm = formidable.IncomingForm, + events = require('events'), + fs = require('fs'), + path = require('path'), + Buffer = require('buffer').Buffer, + fixtures = require(TEST_FIXTURES + '/multipart'), + form, + gently; + +function test(test) { + gently = new Gently(); + gently.expect(EventEmitterStub, 'call'); + form = new IncomingForm(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.strictEqual(form.error, null); + assert.strictEqual(form.ended, false); + assert.strictEqual(form.type, null); + assert.strictEqual(form.headers, null); + assert.strictEqual(form.keepExtensions, false); + assert.strictEqual(form.uploadDir, '/tmp'); + assert.strictEqual(form.encoding, 'utf-8'); + assert.strictEqual(form.bytesReceived, null); + assert.strictEqual(form.bytesExpected, null); + assert.strictEqual(form.maxFieldsSize, 2 * 1024 * 1024); + assert.strictEqual(form._parser, null); + assert.strictEqual(form._flushing, 0); + assert.strictEqual(form._fieldsSize, 0); + assert.ok(form instanceof EventEmitterStub); + assert.equal(form.constructor.name, 'IncomingForm'); + + (function testSimpleConstructor() { + gently.expect(EventEmitterStub, 'call'); + var form = IncomingForm(); + assert.ok(form instanceof IncomingForm); + })(); + + (function testSimpleConstructorShortcut() { + gently.expect(EventEmitterStub, 'call'); + var form = formidable(); + assert.ok(form instanceof IncomingForm); + })(); +}); + +test(function parse() { + var REQ = {headers: {}} + , emit = {}; + + gently.expect(form, 'writeHeaders', function(headers) { + assert.strictEqual(headers, REQ.headers); + }); + + var events = ['error', 'aborted', 'data', 'end']; + gently.expect(REQ, 'on', events.length, function(event, fn) { + assert.equal(event, events.shift()); + emit[event] = fn; + return this; + }); + + form.parse(REQ); + + (function testPause() { + gently.expect(REQ, 'pause'); + assert.strictEqual(form.pause(), true); + })(); + + (function testPauseCriticalException() { + form.ended = false; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'pause', function() { + throw ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + assert.strictEqual(form.pause(), false); + })(); + + (function testPauseHarmlessException() { + form.ended = true; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'pause', function() { + throw ERR; + }); + + assert.strictEqual(form.pause(), false); + })(); + + (function testResume() { + gently.expect(REQ, 'resume'); + assert.strictEqual(form.resume(), true); + })(); + + (function testResumeCriticalException() { + form.ended = false; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'resume', function() { + throw ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + assert.strictEqual(form.resume(), false); + })(); + + (function testResumeHarmlessException() { + form.ended = true; + + var ERR = new Error('dasdsa'); + gently.expect(REQ, 'resume', function() { + throw ERR; + }); + + assert.strictEqual(form.resume(), false); + })(); + + (function testEmitError() { + var ERR = new Error('something bad happened'); + gently.expect(form, '_error',function(err) { + assert.strictEqual(err, ERR); + }); + emit.error(ERR); + })(); + + (function testEmitAborted() { + gently.expect(form, 'emit',function(event) { + assert.equal(event, 'aborted'); + }); + + emit.aborted(); + })(); + + + (function testEmitData() { + var BUFFER = [1, 2, 3]; + gently.expect(form, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + }); + emit.data(BUFFER); + })(); + + (function testEmitEnd() { + form._parser = {}; + + (function testWithError() { + var ERR = new Error('haha'); + gently.expect(form._parser, 'end', function() { + return ERR; + }); + + gently.expect(form, '_error', function(err) { + assert.strictEqual(err, ERR); + }); + + emit.end(); + })(); + + (function testWithoutError() { + gently.expect(form._parser, 'end'); + emit.end(); + })(); + + (function testAfterError() { + form.error = true; + emit.end(); + })(); + })(); + + (function testWithCallback() { + gently.expect(EventEmitterStub, 'call'); + var form = new IncomingForm(), + REQ = {headers: {}}, + parseCalled = 0; + + gently.expect(form, 'writeHeaders'); + gently.expect(REQ, 'on', 4, function() { + return this; + }); + + gently.expect(form, 'on', 4, function(event, fn) { + if (event == 'field') { + fn('field1', 'foo'); + fn('field1', 'bar'); + fn('field2', 'nice'); + } + + if (event == 'file') { + fn('file1', '1'); + fn('file1', '2'); + fn('file2', '3'); + } + + if (event == 'end') { + fn(); + } + return this; + }); + + form.parse(REQ, gently.expect(function parseCbOk(err, fields, files) { + assert.deepEqual(fields, {field1: 'bar', field2: 'nice'}); + assert.deepEqual(files, {file1: '2', file2: '3'}); + })); + + gently.expect(form, 'writeHeaders'); + gently.expect(REQ, 'on', 4, function() { + return this; + }); + + var ERR = new Error('test'); + gently.expect(form, 'on', 3, function(event, fn) { + if (event == 'field') { + fn('foo', 'bar'); + } + + if (event == 'error') { + fn(ERR); + gently.expect(form, 'on'); + } + return this; + }); + + form.parse(REQ, gently.expect(function parseCbErr(err, fields, files) { + assert.strictEqual(err, ERR); + assert.deepEqual(fields, {foo: 'bar'}); + })); + })(); +}); + +test(function pause() { + assert.strictEqual(form.pause(), false); +}); + +test(function resume() { + assert.strictEqual(form.resume(), false); +}); + + +test(function writeHeaders() { + var HEADERS = {}; + gently.expect(form, '_parseContentLength'); + gently.expect(form, '_parseContentType'); + + form.writeHeaders(HEADERS); + assert.strictEqual(form.headers, HEADERS); +}); + +test(function write() { + var parser = {}, + BUFFER = [1, 2, 3]; + + form._parser = parser; + form.bytesExpected = 523423; + + (function testBasic() { + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, BUFFER.length); + assert.equal(bytesExpected, form.bytesExpected); + }); + + gently.expect(parser, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + return buffer.length; + }); + + assert.equal(form.write(BUFFER), BUFFER.length); + assert.equal(form.bytesReceived, BUFFER.length); + })(); + + (function testParserError() { + gently.expect(form, 'emit'); + + gently.expect(parser, 'write', function(buffer) { + assert.strictEqual(buffer, BUFFER); + return buffer.length - 1; + }); + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/parser error/i)); + }); + + assert.equal(form.write(BUFFER), BUFFER.length - 1); + assert.equal(form.bytesReceived, BUFFER.length + BUFFER.length); + })(); + + (function testUninitialized() { + delete form._parser; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/unintialized parser/i)); + }); + form.write(BUFFER); + })(); +}); + +test(function parseContentType() { + var HEADERS = {}; + + form.headers = {'content-type': 'application/x-www-form-urlencoded'}; + gently.expect(form, '_initUrlencoded'); + form._parseContentType(); + + // accept anything that has 'urlencoded' in it + form.headers = {'content-type': 'broken-client/urlencoded-stupid'}; + gently.expect(form, '_initUrlencoded'); + form._parseContentType(); + + var BOUNDARY = '---------------------------57814261102167618332366269'; + form.headers = {'content-type': 'multipart/form-data; boundary='+BOUNDARY}; + + gently.expect(form, '_initMultipart', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + form._parseContentType(); + + (function testQuotedBoundary() { + form.headers = {'content-type': 'multipart/form-data; boundary="' + BOUNDARY + '"'}; + + gently.expect(form, '_initMultipart', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + form._parseContentType(); + })(); + + (function testNoBoundary() { + form.headers = {'content-type': 'multipart/form-data'}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/no multipart boundary/i)); + }); + form._parseContentType(); + })(); + + (function testNoContentType() { + form.headers = {}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/no content-type/i)); + }); + form._parseContentType(); + })(); + + (function testUnknownContentType() { + form.headers = {'content-type': 'invalid'}; + + gently.expect(form, '_error', function(err) { + assert.ok(err.message.match(/unknown content-type/i)); + }); + form._parseContentType(); + })(); +}); + +test(function parseContentLength() { + var HEADERS = {}; + + form.headers = {}; + form._parseContentLength(); + assert.strictEqual(form.bytesReceived, null); + assert.strictEqual(form.bytesExpected, null); + + form.headers['content-length'] = '8'; + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, 0); + assert.equal(bytesExpected, 8); + }); + form._parseContentLength(); + assert.strictEqual(form.bytesReceived, 0); + assert.strictEqual(form.bytesExpected, 8); + + // JS can be evil, lets make sure we are not + form.headers['content-length'] = '08'; + gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { + assert.equal(event, 'progress'); + assert.equal(bytesReceived, 0); + assert.equal(bytesExpected, 8); + }); + form._parseContentLength(); + assert.strictEqual(form.bytesExpected, 8); +}); + +test(function _initMultipart() { + var BOUNDARY = '123', + PARSER; + + gently.expect(MultipartParserStub, 'new', function() { + PARSER = this; + }); + + gently.expect(MultipartParserStub.prototype, 'initWithBoundary', function(boundary) { + assert.equal(boundary, BOUNDARY); + }); + + form._initMultipart(BOUNDARY); + assert.equal(form.type, 'multipart'); + assert.strictEqual(form._parser, PARSER); + + (function testRegularField() { + var PART; + gently.expect(StreamStub, 'new', function() { + PART = this; + }); + + gently.expect(form, 'onPart', function(part) { + assert.strictEqual(part, PART); + assert.deepEqual + ( part.headers + , { 'content-disposition': 'form-data; name="field1"' + , 'foo': 'bar' + } + ); + assert.equal(part.name, 'field1'); + + var strings = ['hello', ' world']; + gently.expect(part, 'emit', 2, function(event, b) { + assert.equal(event, 'data'); + assert.equal(b.toString(), strings.shift()); + }); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'end'); + }); + }); + + PARSER.onPartBegin(); + PARSER.onHeaderField(new Buffer('content-disposition'), 0, 10); + PARSER.onHeaderField(new Buffer('content-disposition'), 10, 19); + PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 0, 14); + PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 14, 24); + PARSER.onHeaderEnd(); + PARSER.onHeaderField(new Buffer('foo'), 0, 3); + PARSER.onHeaderValue(new Buffer('bar'), 0, 3); + PARSER.onHeaderEnd(); + PARSER.onHeadersEnd(); + PARSER.onPartData(new Buffer('hello world'), 0, 5); + PARSER.onPartData(new Buffer('hello world'), 5, 11); + PARSER.onPartEnd(); + })(); + + (function testFileField() { + var PART; + gently.expect(StreamStub, 'new', function() { + PART = this; + }); + + gently.expect(form, 'onPart', function(part) { + assert.deepEqual + ( part.headers + , { 'content-disposition': 'form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"' + , 'content-type': 'text/plain' + } + ); + assert.equal(part.name, 'field2'); + assert.equal(part.filename, 'Sun"et.jpg'); + assert.equal(part.mime, 'text/plain'); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'data'); + assert.equal(b.toString(), '... contents of file1.txt ...'); + }); + + gently.expect(part, 'emit', function(event, b) { + assert.equal(event, 'end'); + }); + }); + + PARSER.onPartBegin(); + PARSER.onHeaderField(new Buffer('content-disposition'), 0, 19); + PARSER.onHeaderValue(new Buffer('form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"'), 0, 85); + PARSER.onHeaderEnd(); + PARSER.onHeaderField(new Buffer('Content-Type'), 0, 12); + PARSER.onHeaderValue(new Buffer('text/plain'), 0, 10); + PARSER.onHeaderEnd(); + PARSER.onHeadersEnd(); + PARSER.onPartData(new Buffer('... contents of file1.txt ...'), 0, 29); + PARSER.onPartEnd(); + })(); + + (function testEnd() { + gently.expect(form, '_maybeEnd'); + PARSER.onEnd(); + assert.ok(form.ended); + })(); +}); + +test(function _fileName() { + // TODO + return; +}); + +test(function _initUrlencoded() { + var PARSER; + + gently.expect(QuerystringParserStub, 'new', function() { + PARSER = this; + }); + + form._initUrlencoded(); + assert.equal(form.type, 'urlencoded'); + assert.strictEqual(form._parser, PARSER); + + (function testOnField() { + var KEY = 'KEY', VAL = 'VAL'; + gently.expect(form, 'emit', function(field, key, val) { + assert.equal(field, 'field'); + assert.equal(key, KEY); + assert.equal(val, VAL); + }); + + PARSER.onField(KEY, VAL); + })(); + + (function testOnEnd() { + gently.expect(form, '_maybeEnd'); + + PARSER.onEnd(); + assert.equal(form.ended, true); + })(); +}); + +test(function _error() { + var ERR = new Error('bla'); + + gently.expect(form, 'pause'); + gently.expect(form, 'emit', function(event, err) { + assert.equal(event, 'error'); + assert.strictEqual(err, ERR); + }); + + form._error(ERR); + assert.strictEqual(form.error, ERR); + + // make sure _error only does its thing once + form._error(ERR); +}); + +test(function onPart() { + var PART = {}; + gently.expect(form, 'handlePart', function(part) { + assert.strictEqual(part, PART); + }); + + form.onPart(PART); +}); + +test(function handlePart() { + (function testUtf8Field() { + var PART = new events.EventEmitter(); + PART.name = 'my_field'; + + gently.expect(form, 'emit', function(event, field, value) { + assert.equal(event, 'field'); + assert.equal(field, 'my_field'); + assert.equal(value, 'hello world: €'); + }); + + form.handlePart(PART); + PART.emit('data', new Buffer('hello')); + PART.emit('data', new Buffer(' world: ')); + PART.emit('data', new Buffer([0xE2])); + PART.emit('data', new Buffer([0x82, 0xAC])); + PART.emit('end'); + })(); + + (function testBinaryField() { + var PART = new events.EventEmitter(); + PART.name = 'my_field2'; + + gently.expect(form, 'emit', function(event, field, value) { + assert.equal(event, 'field'); + assert.equal(field, 'my_field2'); + assert.equal(value, 'hello world: '+new Buffer([0xE2, 0x82, 0xAC]).toString('binary')); + }); + + form.encoding = 'binary'; + form.handlePart(PART); + PART.emit('data', new Buffer('hello')); + PART.emit('data', new Buffer(' world: ')); + PART.emit('data', new Buffer([0xE2])); + PART.emit('data', new Buffer([0x82, 0xAC])); + PART.emit('end'); + })(); + + (function testFieldSize() { + form.maxFieldsSize = 8; + var PART = new events.EventEmitter(); + PART.name = 'my_field'; + + gently.expect(form, '_error', function(err) { + assert.equal(err.message, 'maxFieldsSize exceeded, received 9 bytes of field data'); + }); + + form.handlePart(PART); + form._fieldsSize = 1; + PART.emit('data', new Buffer(7)); + PART.emit('data', new Buffer(1)); + })(); + + (function testFilePart() { + var PART = new events.EventEmitter(), + FILE = new events.EventEmitter(), + PATH = '/foo/bar'; + + PART.name = 'my_file'; + PART.filename = 'sweet.txt'; + PART.mime = 'sweet.txt'; + + gently.expect(form, '_uploadPath', function(filename) { + assert.equal(filename, PART.filename); + return PATH; + }); + + gently.expect(FileStub, 'new', function(properties) { + assert.equal(properties.path, PATH); + assert.equal(properties.name, PART.filename); + assert.equal(properties.type, PART.mime); + FILE = this; + + gently.expect(form, 'emit', function (event, field, file) { + assert.equal(event, 'fileBegin'); + assert.strictEqual(field, PART.name); + assert.strictEqual(file, FILE); + }); + + gently.expect(FILE, 'open'); + }); + + form.handlePart(PART); + assert.equal(form._flushing, 1); + + var BUFFER; + gently.expect(form, 'pause'); + gently.expect(FILE, 'write', function(buffer, cb) { + assert.strictEqual(buffer, BUFFER); + gently.expect(form, 'resume'); + // @todo handle cb(new Err) + cb(); + }); + + PART.emit('data', BUFFER = new Buffer('test')); + + gently.expect(FILE, 'end', function(cb) { + gently.expect(form, 'emit', function(event, field, file) { + assert.equal(event, 'file'); + assert.strictEqual(file, FILE); + }); + + gently.expect(form, '_maybeEnd'); + + cb(); + assert.equal(form._flushing, 0); + }); + + PART.emit('end'); + })(); +}); + +test(function _uploadPath() { + (function testUniqueId() { + var UUID_A, UUID_B; + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { + assert.equal(uploadDir, form.uploadDir); + UUID_A = uuid; + }); + form._uploadPath(); + + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { + UUID_B = uuid; + }); + form._uploadPath(); + + assert.notEqual(UUID_A, UUID_B); + })(); + + (function testFileExtension() { + form.keepExtensions = true; + var FILENAME = 'foo.jpg', + EXT = '.bar'; + + gently.expect(GENTLY.hijacked.path, 'extname', function(filename) { + assert.equal(filename, FILENAME); + gently.restore(path, 'extname'); + + return EXT; + }); + + gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, name) { + assert.equal(path.extname(name), EXT); + }); + form._uploadPath(FILENAME); + })(); +}); + +test(function _maybeEnd() { + gently.expect(form, 'emit', 0); + form._maybeEnd(); + + form.ended = true; + form._flushing = 1; + form._maybeEnd(); + + gently.expect(form, 'emit', function(event) { + assert.equal(event, 'end'); + }); + + form.ended = true; + form._flushing = 0; + form._maybeEnd(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js new file mode 100644 index 0000000..d8dc968 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js @@ -0,0 +1,50 @@ +var common = require('../common'); +var multipartParser = require(common.lib + '/multipart_parser'), + MultipartParser = multipartParser.MultipartParser, + events = require('events'), + Buffer = require('buffer').Buffer, + parser; + +function test(test) { + parser = new MultipartParser(); + test(); +} + +test(function constructor() { + assert.equal(parser.boundary, null); + assert.equal(parser.state, 0); + assert.equal(parser.flags, 0); + assert.equal(parser.boundaryChars, null); + assert.equal(parser.index, null); + assert.equal(parser.lookbehind, null); + assert.equal(parser.constructor.name, 'MultipartParser'); +}); + +test(function initWithBoundary() { + var boundary = 'abc'; + parser.initWithBoundary(boundary); + assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]); + assert.equal(parser.state, multipartParser.START); + + assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true}); +}); + +test(function parserError() { + var boundary = 'abc', + buffer = new Buffer(5); + + parser.initWithBoundary(boundary); + buffer.write('--ad', 'ascii', 0); + assert.equal(parser.write(buffer), 3); +}); + +test(function end() { + (function testError() { + assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain()); + })(); + + (function testRegular() { + parser.state = multipartParser.END; + assert.strictEqual(parser.end(), undefined); + })(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js new file mode 100644 index 0000000..54d3e2d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js @@ -0,0 +1,45 @@ +var common = require('../common'); +var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser, + Buffer = require('buffer').Buffer, + gently, + parser; + +function test(test) { + gently = new Gently(); + parser = new QuerystringParser(); + test(); + gently.verify(test.name); +} + +test(function constructor() { + assert.equal(parser.buffer, ''); + assert.equal(parser.constructor.name, 'QuerystringParser'); +}); + +test(function write() { + var a = new Buffer('a=1'); + assert.equal(parser.write(a), a.length); + + var b = new Buffer('&b=2'); + parser.write(b); + assert.equal(parser.buffer, a + b); +}); + +test(function end() { + var FIELDS = {a: ['b', {c: 'd'}], e: 'f'}; + + gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) { + assert.equal(str, parser.buffer); + return FIELDS; + }); + + gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) { + assert.deepEqual(FIELDS[key], val); + }); + + gently.expect(parser, 'onEnd'); + + parser.buffer = 'my buffer'; + parser.end(); + assert.equal(parser.buffer, ''); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js new file mode 100644 index 0000000..479e46d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js @@ -0,0 +1,75 @@ +var common = require('../common'); +var BOUNDARY = '---------------------------10102754414578508781458777923', + FIXTURE = TEST_FIXTURES+'/multi_video.upload', + fs = require('fs'), + util = require(common.lib + '/util'), + http = require('http'), + formidable = require(common.lib + '/index'), + server = http.createServer(); + +server.on('request', function(req, res) { + var form = new formidable.IncomingForm(), + uploads = {}; + + form.uploadDir = TEST_TMP; + form.hash = 'sha1'; + form.parse(req); + + form + .on('fileBegin', function(field, file) { + assert.equal(field, 'upload'); + + var tracker = {file: file, progress: [], ended: false}; + uploads[file.filename] = tracker; + file + .on('progress', function(bytesReceived) { + tracker.progress.push(bytesReceived); + assert.equal(bytesReceived, file.length); + }) + .on('end', function() { + tracker.ended = true; + }); + }) + .on('field', function(field, value) { + assert.equal(field, 'title'); + assert.equal(value, ''); + }) + .on('file', function(field, file) { + assert.equal(field, 'upload'); + assert.strictEqual(uploads[file.filename].file, file); + }) + .on('end', function() { + assert.ok(uploads['shortest_video.flv']); + assert.ok(uploads['shortest_video.flv'].ended); + assert.ok(uploads['shortest_video.flv'].progress.length > 3); + assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a'); + assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.length); + assert.ok(uploads['shortest_video.mp4']); + assert.ok(uploads['shortest_video.mp4'].ended); + assert.ok(uploads['shortest_video.mp4'].progress.length > 3); + assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f'); + + server.close(); + res.writeHead(200); + res.end('good'); + }); +}); + +server.listen(TEST_PORT, function() { + var client = http.createClient(TEST_PORT), + stat = fs.statSync(FIXTURE), + headers = { + 'content-type': 'multipart/form-data; boundary='+BOUNDARY, + 'content-length': stat.size, + } + request = client.request('POST', '/', headers), + fixture = new fs.ReadStream(FIXTURE); + + fixture + .on('data', function(b) { + request.write(b); + }) + .on('end', function() { + request.end(); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js new file mode 100644 index 0000000..50b2361 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +require('urun')(__dirname) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js new file mode 100644 index 0000000..fe2ac1c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js @@ -0,0 +1,63 @@ +var common = require('../common'); +var test = require('utest'); +var assert = common.assert; +var IncomingForm = common.require('incoming_form').IncomingForm; +var path = require('path'); + +var form; +test('IncomingForm', { + before: function() { + form = new IncomingForm(); + }, + + '#_fileName with regular characters': function() { + var filename = 'foo.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'foo.txt'); + }, + + '#_fileName with unescaped quote': function() { + var filename = 'my".txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); + }, + + '#_fileName with escaped quote': function() { + var filename = 'my%22.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); + }, + + '#_fileName with bad quote and additional sub-header': function() { + var filename = 'my".txt'; + var header = makeHeader(filename) + '; foo="bar"'; + assert.equal(form._fileName(header), filename); + }, + + '#_fileName with semicolon': function() { + var filename = 'my;.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my;.txt'); + }, + + '#_fileName with utf8 character': function() { + var filename = 'my☃.txt'; + assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt'); + }, + + '#_uploadPath strips harmful characters from extension when keepExtensions': function() { + form.keepExtensions = true; + + var ext = path.extname(form._uploadPath('fine.jpg?foo=bar')); + assert.equal(ext, '.jpg'); + + var ext = path.extname(form._uploadPath('fine?foo=bar')); + assert.equal(ext, ''); + + var ext = path.extname(form._uploadPath('super.cr2+dsad')); + assert.equal(ext, '.cr2'); + + var ext = path.extname(form._uploadPath('super.bar')); + assert.equal(ext, '.bar'); + }, +}); + +function makeHeader(filename) { + return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"'; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js new file mode 100644 index 0000000..9f1cef8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js @@ -0,0 +1,47 @@ +var http = require('http'); +var fs = require('fs'); +var connections = 0; + +var server = http.createServer(function(req, res) { + var socket = req.socket; + console.log('Request: %s %s -> %s', req.method, req.url, socket.filename); + + req.on('end', function() { + if (req.url !== '/') { + res.end(JSON.stringify({ + method: req.method, + url: req.url, + filename: socket.filename, + })); + return; + } + + res.writeHead(200, {'content-type': 'text/html'}); + res.end( + '
    '+ + '
    '+ + '
    '+ + ''+ + '
    ' + ); + }); +}); + +server.on('connection', function(socket) { + connections++; + + socket.id = connections; + socket.filename = 'connection-' + socket.id + '.http'; + socket.file = fs.createWriteStream(socket.filename); + socket.pipe(socket.file); + + console.log('--> %s', socket.filename); + socket.on('close', function() { + console.log('<-- %s', socket.filename); + }); +}); + +var port = process.env.PORT || 8080; +server.listen(port, function() { + console.log('Recording connections on port %s', port); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md new file mode 100644 index 0000000..c8aa68f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md @@ -0,0 +1,5 @@ + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile new file mode 100644 index 0000000..4e9c8d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md new file mode 100644 index 0000000..1cdd68a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md @@ -0,0 +1,29 @@ + +# pause + + Pause streams... + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js new file mode 100644 index 0000000..1b7b379 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js @@ -0,0 +1,29 @@ + +module.exports = function(obj){ + var onData + , onEnd + , events = []; + + // buffer data + obj.on('data', onData = function(data, encoding){ + events.push(['data', data, encoding]); + }); + + // buffer end + obj.on('end', onEnd = function(data, encoding){ + events.push(['end', data, encoding]); + }); + + return { + end: function(){ + obj.removeListener('data', onData); + obj.removeListener('end', onEnd); + }, + resume: function(){ + this.end(); + for (var i = 0, len = events.length; i < len; ++i) { + obj.emit.apply(obj, events[i]); + } + } + }; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json new file mode 100644 index 0000000..73cfe40 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json @@ -0,0 +1,20 @@ +{ + "name": "pause", + "version": "0.0.1", + "description": "Pause streams...", + "keywords": [], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "main": "index", + "readme": "\n# pause\n\n Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "pause@0.0.1", + "_from": "pause@0.0.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules new file mode 100644 index 0000000..49e31da --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules @@ -0,0 +1,6 @@ +[submodule "support/expresso"] + path = support/expresso + url = git://github.com/visionmedia/expresso.git +[submodule "support/should"] + path = support/should + url = git://github.com/visionmedia/should.js.git diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml new file mode 100644 index 0000000..2c0a8f6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.4 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md new file mode 100644 index 0000000..1feef45 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md @@ -0,0 +1,83 @@ + +0.5.1 / 2012-09-18 +================== + + * fix encoded `=`. Closes #43 + +0.5.0 / 2012-05-04 +================== + + * Added component support + +0.4.2 / 2012-02-08 +================== + + * Fixed: ensure objects are created when appropriate not arrays [aheckmann] + +0.4.1 / 2012-01-26 +================== + + * Fixed stringify()ing numbers. Closes #23 + +0.4.0 / 2011-11-21 +================== + + * Allow parsing of an existing object (for `bodyParser()`) [jackyz] + * Replaced expresso with mocha + +0.3.2 / 2011-11-08 +================== + + * Fixed global variable leak + +0.3.1 / 2011-08-17 +================== + + * Added `try/catch` around malformed uri components + * Add test coverage for Array native method bleed-though + +0.3.0 / 2011-07-19 +================== + + * Allow `array[index]` and `object[property]` syntaxes [Aria Stewart] + +0.2.0 / 2011-06-29 +================== + + * Added `qs.stringify()` [Cory Forsyth] + +0.1.0 / 2011-04-13 +================== + + * Added jQuery-ish array support + +0.0.7 / 2011-03-13 +================== + + * Fixed; handle empty string and `== null` in `qs.parse()` [dmit] + allows for convenient `qs.parse(url.parse(str).query)` + +0.0.6 / 2011-02-14 +================== + + * Fixed; support for implicit arrays + +0.0.4 / 2011-02-09 +================== + + * Fixed `+` as a space + +0.0.3 / 2011-02-08 +================== + + * Fixed case when right-hand value contains "]" + +0.0.2 / 2011-02-07 +================== + + * Fixed "=" presence in key + +0.0.1 / 2011-02-07 +================== + + * Initial release \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile new file mode 100644 index 0000000..0a21cf7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile @@ -0,0 +1,12 @@ + +test/browser/qs.js: querystring.js + component build package.json test/browser/qs + +querystring.js: lib/head.js lib/querystring.js lib/tail.js + cat $^ > $@ + +test: + @./node_modules/.bin/mocha \ + --ui bdd + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md new file mode 100644 index 0000000..27e54a4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md @@ -0,0 +1,58 @@ +# node-querystring + + query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. + +## Installation + + $ npm install qs + +## Examples + +```js +var qs = require('qs'); + +qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); +// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } + +qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) +// => user[name]=Tobi&user[email]=tobi%40learnboost.com +``` + +## Testing + +Install dev dependencies: + + $ npm install -d + +and execute: + + $ make test + +browser: + + $ open test/browser/index.html + +## License + +(The MIT License) + +Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js new file mode 100644 index 0000000..97e2c93 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js @@ -0,0 +1,17 @@ + +var qs = require('./'); + +var times = 100000 + , start = new Date + , n = times; + +console.log('times: %d', times); + +while (n--) qs.parse('foo=bar'); +console.log('simple: %dms', new Date - start); + +var start = new Date + , n = times; + +while (n--) qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); +console.log('nested: %dms', new Date - start); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json new file mode 100644 index 0000000..ba34ead --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json @@ -0,0 +1,6 @@ +{ + "name": "querystring", + "description": "Querystring parser / stringifier with nesting support", + "keywords": ["querystring", "query", "parser"], + "main": "lib/querystring.js" +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js new file mode 100644 index 0000000..27617b7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js @@ -0,0 +1,51 @@ + +/** + * Module dependencies. + */ + +var qs = require('./'); + +var obj = qs.parse('foo'); +console.log(obj) + +var obj = qs.parse('foo=bar=baz'); +console.log(obj) + +var obj = qs.parse('users[]'); +console.log(obj) + +var obj = qs.parse('name=tj&email=tj@vision-media.ca'); +console.log(obj) + +var obj = qs.parse('users[]=tj&users[]=tobi&users[]=jane'); +console.log(obj) + +var obj = qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); +console.log(obj) + +var obj = qs.parse('users[][name][first]=tj&users[][name][last]=holowaychuk'); +console.log(obj) + +var obj = qs.parse('a=a&a=b&a=c'); +console.log(obj) + +var obj = qs.parse('user[tj]=tj&user[tj]=TJ'); +console.log(obj) + +var obj = qs.parse('user[names]=tj&user[names]=TJ&user[names]=Tyler'); +console.log(obj) + +var obj = qs.parse('user[name][first]=tj&user[name][first]=TJ'); +console.log(obj) + +var obj = qs.parse('user[0]=tj&user[1]=TJ'); +console.log(obj) + +var obj = qs.parse('user[0]=tj&user[]=TJ'); +console.log(obj) + +var obj = qs.parse('user[0]=tj&user[foo]=TJ'); +console.log(obj) + +var str = qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}); +console.log(str); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js new file mode 100644 index 0000000..d177d20 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/querystring'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js new file mode 100644 index 0000000..55d3817 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js @@ -0,0 +1 @@ +;(function(){ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js new file mode 100644 index 0000000..d3689bb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js @@ -0,0 +1,262 @@ + +/** + * Object#toString() ref for stringify(). + */ + +var toString = Object.prototype.toString; + +/** + * Cache non-integer test regexp. + */ + +var isint = /^[0-9]+$/; + +function promote(parent, key) { + if (parent[key].length == 0) return parent[key] = {}; + var t = {}; + for (var i in parent[key]) t[i] = parent[key][i]; + parent[key] = t; + return t; +} + +function parse(parts, parent, key, val) { + var part = parts.shift(); + // end + if (!part) { + if (Array.isArray(parent[key])) { + parent[key].push(val); + } else if ('object' == typeof parent[key]) { + parent[key] = val; + } else if ('undefined' == typeof parent[key]) { + parent[key] = val; + } else { + parent[key] = [parent[key], val]; + } + // array + } else { + var obj = parent[key] = parent[key] || []; + if (']' == part) { + if (Array.isArray(obj)) { + if ('' != val) obj.push(val); + } else if ('object' == typeof obj) { + obj[Object.keys(obj).length] = val; + } else { + obj = parent[key] = [parent[key], val]; + } + // prop + } else if (~part.indexOf(']')) { + part = part.substr(0, part.length - 1); + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + // key + } else { + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + } + } +} + +/** + * Merge parent key/val pair. + */ + +function merge(parent, key, val){ + if (~key.indexOf(']')) { + var parts = key.split('[') + , len = parts.length + , last = len - 1; + parse(parts, parent, 'base', val); + // optimize + } else { + if (!isint.test(key) && Array.isArray(parent.base)) { + var t = {}; + for (var k in parent.base) t[k] = parent.base[k]; + parent.base = t; + } + set(parent.base, key, val); + } + + return parent; +} + +/** + * Parse the given obj. + */ + +function parseObject(obj){ + var ret = { base: {} }; + Object.keys(obj).forEach(function(name){ + merge(ret, name, obj[name]); + }); + return ret.base; +} + +/** + * Parse the given str. + */ + +function parseString(str){ + return String(str) + .split('&') + .reduce(function(ret, pair){ + var eql = pair.indexOf('=') + , brace = lastBraceInKey(pair) + , key = pair.substr(0, brace || eql) + , val = pair.substr(brace || eql, pair.length) + , val = val.substr(val.indexOf('=') + 1, val.length); + + // ?foo + if ('' == key) key = pair, val = ''; + + return merge(ret, decode(key), decode(val)); + }, { base: {} }).base; +} + +/** + * Parse the given query `str` or `obj`, returning an object. + * + * @param {String} str | {Object} obj + * @return {Object} + * @api public + */ + +exports.parse = function(str){ + if (null == str || '' == str) return {}; + return 'object' == typeof str + ? parseObject(str) + : parseString(str); +}; + +/** + * Turn the given `obj` into a query string + * + * @param {Object} obj + * @return {String} + * @api public + */ + +var stringify = exports.stringify = function(obj, prefix) { + if (Array.isArray(obj)) { + return stringifyArray(obj, prefix); + } else if ('[object Object]' == toString.call(obj)) { + return stringifyObject(obj, prefix); + } else if ('string' == typeof obj) { + return stringifyString(obj, prefix); + } else { + return prefix + '=' + obj; + } +}; + +/** + * Stringify the given `str`. + * + * @param {String} str + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyString(str, prefix) { + if (!prefix) throw new TypeError('stringify expects an object'); + return prefix + '=' + encodeURIComponent(str); +} + +/** + * Stringify the given `arr`. + * + * @param {Array} arr + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyArray(arr, prefix) { + var ret = []; + if (!prefix) throw new TypeError('stringify expects an object'); + for (var i = 0; i < arr.length; i++) { + ret.push(stringify(arr[i], prefix + '['+i+']')); + } + return ret.join('&'); +} + +/** + * Stringify the given `obj`. + * + * @param {Object} obj + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyObject(obj, prefix) { + var ret = [] + , keys = Object.keys(obj) + , key; + + for (var i = 0, len = keys.length; i < len; ++i) { + key = keys[i]; + ret.push(stringify(obj[key], prefix + ? prefix + '[' + encodeURIComponent(key) + ']' + : encodeURIComponent(key))); + } + + return ret.join('&'); +} + +/** + * Set `obj`'s `key` to `val` respecting + * the weird and wonderful syntax of a qs, + * where "foo=bar&foo=baz" becomes an array. + * + * @param {Object} obj + * @param {String} key + * @param {String} val + * @api private + */ + +function set(obj, key, val) { + var v = obj[key]; + if (undefined === v) { + obj[key] = val; + } else if (Array.isArray(v)) { + v.push(val); + } else { + obj[key] = [v, val]; + } +} + +/** + * Locate last brace in `str` within the key. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function lastBraceInKey(str) { + var len = str.length + , brace + , c; + for (var i = 0; i < len; ++i) { + c = str[i]; + if (']' == c) brace = false; + if ('[' == c) brace = true; + if ('=' == c && !brace) return i; + } +} + +/** + * Decode `str`. + * + * @param {String} str + * @return {String} + * @api private + */ + +function decode(str) { + try { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } catch (err) { + return str; + } +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js new file mode 100644 index 0000000..158693a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js @@ -0,0 +1 @@ +})(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json new file mode 100644 index 0000000..233d5e4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json @@ -0,0 +1,36 @@ +{ + "name": "qs", + "description": "querystring parser", + "version": "0.5.1", + "keywords": [ + "query string", + "parser", + "component" + ], + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/node-querystring.git" + }, + "devDependencies": { + "mocha": "*", + "expect.js": "*" + }, + "component": { + "scripts": { + "querystring": "querystring.js" + } + }, + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "main": "index", + "engines": { + "node": "*" + }, + "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "qs@0.5.1", + "_from": "qs@0.5.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js new file mode 100644 index 0000000..7466b06 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js @@ -0,0 +1,254 @@ +;(function(){ + +/** + * Object#toString() ref for stringify(). + */ + +var toString = Object.prototype.toString; + +/** + * Cache non-integer test regexp. + */ + +var isint = /^[0-9]+$/; + +function promote(parent, key) { + if (parent[key].length == 0) return parent[key] = {}; + var t = {}; + for (var i in parent[key]) t[i] = parent[key][i]; + parent[key] = t; + return t; +} + +function parse(parts, parent, key, val) { + var part = parts.shift(); + // end + if (!part) { + if (Array.isArray(parent[key])) { + parent[key].push(val); + } else if ('object' == typeof parent[key]) { + parent[key] = val; + } else if ('undefined' == typeof parent[key]) { + parent[key] = val; + } else { + parent[key] = [parent[key], val]; + } + // array + } else { + var obj = parent[key] = parent[key] || []; + if (']' == part) { + if (Array.isArray(obj)) { + if ('' != val) obj.push(val); + } else if ('object' == typeof obj) { + obj[Object.keys(obj).length] = val; + } else { + obj = parent[key] = [parent[key], val]; + } + // prop + } else if (~part.indexOf(']')) { + part = part.substr(0, part.length - 1); + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + // key + } else { + if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); + parse(parts, obj, part, val); + } + } +} + +/** + * Merge parent key/val pair. + */ + +function merge(parent, key, val){ + if (~key.indexOf(']')) { + var parts = key.split('[') + , len = parts.length + , last = len - 1; + parse(parts, parent, 'base', val); + // optimize + } else { + if (!isint.test(key) && Array.isArray(parent.base)) { + var t = {}; + for (var k in parent.base) t[k] = parent.base[k]; + parent.base = t; + } + set(parent.base, key, val); + } + + return parent; +} + +/** + * Parse the given obj. + */ + +function parseObject(obj){ + var ret = { base: {} }; + Object.keys(obj).forEach(function(name){ + merge(ret, name, obj[name]); + }); + return ret.base; +} + +/** + * Parse the given str. + */ + +function parseString(str){ + return String(str) + .split('&') + .reduce(function(ret, pair){ + try{ + pair = decodeURIComponent(pair.replace(/\+/g, ' ')); + } catch(e) { + // ignore + } + + var eql = pair.indexOf('=') + , brace = lastBraceInKey(pair) + , key = pair.substr(0, brace || eql) + , val = pair.substr(brace || eql, pair.length) + , val = val.substr(val.indexOf('=') + 1, val.length); + + // ?foo + if ('' == key) key = pair, val = ''; + + return merge(ret, key, val); + }, { base: {} }).base; +} + +/** + * Parse the given query `str` or `obj`, returning an object. + * + * @param {String} str | {Object} obj + * @return {Object} + * @api public + */ + +exports.parse = function(str){ + if (null == str || '' == str) return {}; + return 'object' == typeof str + ? parseObject(str) + : parseString(str); +}; + +/** + * Turn the given `obj` into a query string + * + * @param {Object} obj + * @return {String} + * @api public + */ + +var stringify = exports.stringify = function(obj, prefix) { + if (Array.isArray(obj)) { + return stringifyArray(obj, prefix); + } else if ('[object Object]' == toString.call(obj)) { + return stringifyObject(obj, prefix); + } else if ('string' == typeof obj) { + return stringifyString(obj, prefix); + } else { + return prefix + '=' + obj; + } +}; + +/** + * Stringify the given `str`. + * + * @param {String} str + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyString(str, prefix) { + if (!prefix) throw new TypeError('stringify expects an object'); + return prefix + '=' + encodeURIComponent(str); +} + +/** + * Stringify the given `arr`. + * + * @param {Array} arr + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyArray(arr, prefix) { + var ret = []; + if (!prefix) throw new TypeError('stringify expects an object'); + for (var i = 0; i < arr.length; i++) { + ret.push(stringify(arr[i], prefix + '['+i+']')); + } + return ret.join('&'); +} + +/** + * Stringify the given `obj`. + * + * @param {Object} obj + * @param {String} prefix + * @return {String} + * @api private + */ + +function stringifyObject(obj, prefix) { + var ret = [] + , keys = Object.keys(obj) + , key; + + for (var i = 0, len = keys.length; i < len; ++i) { + key = keys[i]; + ret.push(stringify(obj[key], prefix + ? prefix + '[' + encodeURIComponent(key) + ']' + : encodeURIComponent(key))); + } + + return ret.join('&'); +} + +/** + * Set `obj`'s `key` to `val` respecting + * the weird and wonderful syntax of a qs, + * where "foo=bar&foo=baz" becomes an array. + * + * @param {Object} obj + * @param {String} key + * @param {String} val + * @api private + */ + +function set(obj, key, val) { + var v = obj[key]; + if (undefined === v) { + obj[key] = val; + } else if (Array.isArray(v)) { + v.push(val); + } else { + obj[key] = [v, val]; + } +} + +/** + * Locate last brace in `str` within the key. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function lastBraceInKey(str) { + var len = str.length + , brace + , c; + for (var i = 0; i < len; ++i) { + c = str[i]; + if (']' == c) brace = false; + if ('[' == c) brace = true; + if ('=' == c && !brace) return i; + } +} +})(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js new file mode 100644 index 0000000..76aa4e8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js @@ -0,0 +1,1202 @@ + +(function (global, module) { + + if ('undefined' == typeof module) { + var module = { exports: {} } + , exports = module.exports + } + + /** + * Exports. + */ + + module.exports = expect; + expect.Assertion = Assertion; + + /** + * Exports version. + */ + + expect.version = '0.1.2'; + + /** + * Possible assertion flags. + */ + + var flags = { + not: ['to', 'be', 'have', 'include', 'only'] + , to: ['be', 'have', 'include', 'only', 'not'] + , only: ['have'] + , have: ['own'] + , be: ['an'] + }; + + function expect (obj) { + return new Assertion(obj); + } + + /** + * Constructor + * + * @api private + */ + + function Assertion (obj, flag, parent) { + this.obj = obj; + this.flags = {}; + + if (undefined != parent) { + this.flags[flag] = true; + + for (var i in parent.flags) { + if (parent.flags.hasOwnProperty(i)) { + this.flags[i] = true; + } + } + } + + var $flags = flag ? flags[flag] : keys(flags) + , self = this + + if ($flags) { + for (var i = 0, l = $flags.length; i < l; i++) { + // avoid recursion + if (this.flags[$flags[i]]) continue; + + var name = $flags[i] + , assertion = new Assertion(this.obj, name, this) + + if ('function' == typeof Assertion.prototype[name]) { + // clone the function, make sure we dont touch the prot reference + var old = this[name]; + this[name] = function () { + return old.apply(self, arguments); + } + + for (var fn in Assertion.prototype) { + if (Assertion.prototype.hasOwnProperty(fn) && fn != name) { + this[name][fn] = bind(assertion[fn], assertion); + } + } + } else { + this[name] = assertion; + } + } + } + }; + + /** + * Performs an assertion + * + * @api private + */ + + Assertion.prototype.assert = function (truth, msg, error) { + var msg = this.flags.not ? error : msg + , ok = this.flags.not ? !truth : truth; + + if (!ok) { + throw new Error(msg); + } + + this.and = new Assertion(this.obj); + }; + + /** + * Check if the value is truthy + * + * @api public + */ + + Assertion.prototype.ok = function () { + this.assert( + !!this.obj + , 'expected ' + i(this.obj) + ' to be truthy' + , 'expected ' + i(this.obj) + ' to be falsy'); + }; + + /** + * Assert that the function throws. + * + * @param {Function|RegExp} callback, or regexp to match error string against + * @api public + */ + + Assertion.prototype.throwError = + Assertion.prototype.throwException = function (fn) { + expect(this.obj).to.be.a('function'); + + var thrown = false + , not = this.flags.not + + try { + this.obj(); + } catch (e) { + if ('function' == typeof fn) { + fn(e); + } else if ('object' == typeof fn) { + var subject = 'string' == typeof e ? e : e.message; + if (not) { + expect(subject).to.not.match(fn); + } else { + expect(subject).to.match(fn); + } + } + thrown = true; + } + + if ('object' == typeof fn && not) { + // in the presence of a matcher, ensure the `not` only applies to + // the matching. + this.flags.not = false; + } + + var name = this.obj.name || 'fn'; + this.assert( + thrown + , 'expected ' + name + ' to throw an exception' + , 'expected ' + name + ' not to throw an exception'); + }; + + /** + * Checks if the array is empty. + * + * @api public + */ + + Assertion.prototype.empty = function () { + var expectation; + + if ('object' == typeof this.obj && null !== this.obj && !isArray(this.obj)) { + if ('number' == typeof this.obj.length) { + expectation = !this.obj.length; + } else { + expectation = !keys(this.obj).length; + } + } else { + if ('string' != typeof this.obj) { + expect(this.obj).to.be.an('object'); + } + + expect(this.obj).to.have.property('length'); + expectation = !this.obj.length; + } + + this.assert( + expectation + , 'expected ' + i(this.obj) + ' to be empty' + , 'expected ' + i(this.obj) + ' to not be empty'); + return this; + }; + + /** + * Checks if the obj exactly equals another. + * + * @api public + */ + + Assertion.prototype.be = + Assertion.prototype.equal = function (obj) { + this.assert( + obj === this.obj + , 'expected ' + i(this.obj) + ' to equal ' + i(obj) + , 'expected ' + i(this.obj) + ' to not equal ' + i(obj)); + return this; + }; + + /** + * Checks if the obj sortof equals another. + * + * @api public + */ + + Assertion.prototype.eql = function (obj) { + this.assert( + expect.eql(obj, this.obj) + , 'expected ' + i(this.obj) + ' to sort of equal ' + i(obj) + , 'expected ' + i(this.obj) + ' to sort of not equal ' + i(obj)); + return this; + }; + + /** + * Assert within start to finish (inclusive). + * + * @param {Number} start + * @param {Number} finish + * @api public + */ + + Assertion.prototype.within = function (start, finish) { + var range = start + '..' + finish; + this.assert( + this.obj >= start && this.obj <= finish + , 'expected ' + i(this.obj) + ' to be within ' + range + , 'expected ' + i(this.obj) + ' to not be within ' + range); + return this; + }; + + /** + * Assert typeof / instance of + * + * @api public + */ + + Assertion.prototype.a = + Assertion.prototype.an = function (type) { + if ('string' == typeof type) { + // proper english in error msg + var n = /^[aeiou]/.test(type) ? 'n' : ''; + + // typeof with support for 'array' + this.assert( + 'array' == type ? isArray(this.obj) : + 'object' == type + ? 'object' == typeof this.obj && null !== this.obj + : type == typeof this.obj + , 'expected ' + i(this.obj) + ' to be a' + n + ' ' + type + , 'expected ' + i(this.obj) + ' not to be a' + n + ' ' + type); + } else { + // instanceof + var name = type.name || 'supplied constructor'; + this.assert( + this.obj instanceof type + , 'expected ' + i(this.obj) + ' to be an instance of ' + name + , 'expected ' + i(this.obj) + ' not to be an instance of ' + name); + } + + return this; + }; + + /** + * Assert numeric value above _n_. + * + * @param {Number} n + * @api public + */ + + Assertion.prototype.greaterThan = + Assertion.prototype.above = function (n) { + this.assert( + this.obj > n + , 'expected ' + i(this.obj) + ' to be above ' + n + , 'expected ' + i(this.obj) + ' to be below ' + n); + return this; + }; + + /** + * Assert numeric value below _n_. + * + * @param {Number} n + * @api public + */ + + Assertion.prototype.lessThan = + Assertion.prototype.below = function (n) { + this.assert( + this.obj < n + , 'expected ' + i(this.obj) + ' to be below ' + n + , 'expected ' + i(this.obj) + ' to be above ' + n); + return this; + }; + + /** + * Assert string value matches _regexp_. + * + * @param {RegExp} regexp + * @api public + */ + + Assertion.prototype.match = function (regexp) { + this.assert( + regexp.exec(this.obj) + , 'expected ' + i(this.obj) + ' to match ' + regexp + , 'expected ' + i(this.obj) + ' not to match ' + regexp); + return this; + }; + + /** + * Assert property "length" exists and has value of _n_. + * + * @param {Number} n + * @api public + */ + + Assertion.prototype.length = function (n) { + expect(this.obj).to.have.property('length'); + var len = this.obj.length; + this.assert( + n == len + , 'expected ' + i(this.obj) + ' to have a length of ' + n + ' but got ' + len + , 'expected ' + i(this.obj) + ' to not have a length of ' + len); + return this; + }; + + /** + * Assert property _name_ exists, with optional _val_. + * + * @param {String} name + * @param {Mixed} val + * @api public + */ + + Assertion.prototype.property = function (name, val) { + if (this.flags.own) { + this.assert( + Object.prototype.hasOwnProperty.call(this.obj, name) + , 'expected ' + i(this.obj) + ' to have own property ' + i(name) + , 'expected ' + i(this.obj) + ' to not have own property ' + i(name)); + return this; + } + + if (this.flags.not && undefined !== val) { + if (undefined === this.obj[name]) { + throw new Error(i(this.obj) + ' has no property ' + i(name)); + } + } else { + var hasProp; + try { + hasProp = name in this.obj + } catch (e) { + hasProp = undefined !== this.obj[name] + } + + this.assert( + hasProp + , 'expected ' + i(this.obj) + ' to have a property ' + i(name) + , 'expected ' + i(this.obj) + ' to not have a property ' + i(name)); + } + + if (undefined !== val) { + this.assert( + val === this.obj[name] + , 'expected ' + i(this.obj) + ' to have a property ' + i(name) + + ' of ' + i(val) + ', but got ' + i(this.obj[name]) + , 'expected ' + i(this.obj) + ' to not have a property ' + i(name) + + ' of ' + i(val)); + } + + this.obj = this.obj[name]; + return this; + }; + + /** + * Assert that the array contains _obj_ or string contains _obj_. + * + * @param {Mixed} obj|string + * @api public + */ + + Assertion.prototype.string = + Assertion.prototype.contain = function (obj) { + if ('string' == typeof this.obj) { + this.assert( + ~this.obj.indexOf(obj) + , 'expected ' + i(this.obj) + ' to contain ' + i(obj) + , 'expected ' + i(this.obj) + ' to not contain ' + i(obj)); + } else { + this.assert( + ~indexOf(this.obj, obj) + , 'expected ' + i(this.obj) + ' to contain ' + i(obj) + , 'expected ' + i(this.obj) + ' to not contain ' + i(obj)); + } + return this; + }; + + /** + * Assert exact keys or inclusion of keys by using + * the `.own` modifier. + * + * @param {Array|String ...} keys + * @api public + */ + + Assertion.prototype.key = + Assertion.prototype.keys = function ($keys) { + var str + , ok = true; + + $keys = isArray($keys) + ? $keys + : Array.prototype.slice.call(arguments); + + if (!$keys.length) throw new Error('keys required'); + + var actual = keys(this.obj) + , len = $keys.length; + + // Inclusion + ok = every($keys, function (key) { + return ~indexOf(actual, key); + }); + + // Strict + if (!this.flags.not && this.flags.only) { + ok = ok && $keys.length == actual.length; + } + + // Key string + if (len > 1) { + $keys = map($keys, function (key) { + return i(key); + }); + var last = $keys.pop(); + str = $keys.join(', ') + ', and ' + last; + } else { + str = i($keys[0]); + } + + // Form + str = (len > 1 ? 'keys ' : 'key ') + str; + + // Have / include + str = (!this.flags.only ? 'include ' : 'only have ') + str; + + // Assertion + this.assert( + ok + , 'expected ' + i(this.obj) + ' to ' + str + , 'expected ' + i(this.obj) + ' to not ' + str); + + return this; + }; + + /** + * Function bind implementation. + */ + + function bind (fn, scope) { + return function () { + return fn.apply(scope, arguments); + } + } + + /** + * Array every compatibility + * + * @see bit.ly/5Fq1N2 + * @api public + */ + + function every (arr, fn, thisObj) { + var scope = thisObj || global; + for (var i = 0, j = arr.length; i < j; ++i) { + if (!fn.call(scope, arr[i], i, arr)) { + return false; + } + } + return true; + }; + + /** + * Array indexOf compatibility. + * + * @see bit.ly/a5Dxa2 + * @api public + */ + + function indexOf (arr, o, i) { + if (Array.prototype.indexOf) { + return Array.prototype.indexOf.call(arr, o, i); + } + + if (arr.length === undefined) { + return -1; + } + + for (var j = arr.length, i = i < 0 ? i + j < 0 ? 0 : i + j : i || 0 + ; i < j && arr[i] !== o; i++); + + return j <= i ? -1 : i; + }; + + /** + * Inspects an object. + * + * @see taken from node.js `util` module (copyright Joyent, MIT license) + * @api private + */ + + function i (obj, showHidden, depth) { + var seen = []; + + function stylize (str) { + return str; + }; + + function format (value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (value && typeof value.inspect === 'function' && + // Filter out the util module, it's inspect function is special + value !== exports && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + return value.inspect(recurseTimes); + } + + // Primitive types cannot have properties + switch (typeof value) { + case 'undefined': + return stylize('undefined', 'undefined'); + + case 'string': + var simple = '\'' + json.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return stylize(simple, 'string'); + + case 'number': + return stylize('' + value, 'number'); + + case 'boolean': + return stylize('' + value, 'boolean'); + } + // For some reason typeof null is "object", so special case here. + if (value === null) { + return stylize('null', 'null'); + } + + // Look up the keys of the object. + var visible_keys = keys(value); + var $keys = showHidden ? Object.getOwnPropertyNames(value) : visible_keys; + + // Functions without properties can be shortcutted. + if (typeof value === 'function' && $keys.length === 0) { + if (isRegExp(value)) { + return stylize('' + value, 'regexp'); + } else { + var name = value.name ? ': ' + value.name : ''; + return stylize('[Function' + name + ']', 'special'); + } + } + + // Dates without properties can be shortcutted + if (isDate(value) && $keys.length === 0) { + return stylize(value.toUTCString(), 'date'); + } + + var base, type, braces; + // Determine the object type + if (isArray(value)) { + type = 'Array'; + braces = ['[', ']']; + } else { + type = 'Object'; + braces = ['{', '}']; + } + + // Make functions say that they are functions + if (typeof value === 'function') { + var n = value.name ? ': ' + value.name : ''; + base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']'; + } else { + base = ''; + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + value.toUTCString(); + } + + if ($keys.length === 0) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return stylize('' + value, 'regexp'); + } else { + return stylize('[Object]', 'special'); + } + } + + seen.push(value); + + var output = map($keys, function (key) { + var name, str; + if (value.__lookupGetter__) { + if (value.__lookupGetter__(key)) { + if (value.__lookupSetter__(key)) { + str = stylize('[Getter/Setter]', 'special'); + } else { + str = stylize('[Getter]', 'special'); + } + } else { + if (value.__lookupSetter__(key)) { + str = stylize('[Setter]', 'special'); + } + } + } + if (indexOf(visible_keys, key) < 0) { + name = '[' + key + ']'; + } + if (!str) { + if (indexOf(seen, value[key]) < 0) { + if (recurseTimes === null) { + str = format(value[key]); + } else { + str = format(value[key], recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (isArray(value)) { + str = map(str.split('\n'), function (line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + map(str.split('\n'), function (line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = stylize('[Circular]', 'special'); + } + } + if (typeof name === 'undefined') { + if (type === 'Array' && key.match(/^\d+$/)) { + return str; + } + name = json.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = stylize(name, 'string'); + } + } + + return name + ': ' + str; + }); + + seen.pop(); + + var numLinesEst = 0; + var length = reduce(output, function (prev, cur) { + numLinesEst++; + if (indexOf(cur, '\n') >= 0) numLinesEst++; + return prev + cur.length + 1; + }, 0); + + if (length > 50) { + output = braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + + } else { + output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; + } + + return output; + } + return format(obj, (typeof depth === 'undefined' ? 2 : depth)); + }; + + function isArray (ar) { + return Object.prototype.toString.call(ar) == '[object Array]'; + }; + + function isRegExp(re) { + var s = '' + re; + return re instanceof RegExp || // easy case + // duck-type for context-switching evalcx case + typeof(re) === 'function' && + re.constructor.name === 'RegExp' && + re.compile && + re.test && + re.exec && + s.match(/^\/.*\/[gim]{0,3}$/); + }; + + function isDate(d) { + if (d instanceof Date) return true; + return false; + }; + + function keys (obj) { + if (Object.keys) { + return Object.keys(obj); + } + + var keys = []; + + for (var i in obj) { + if (Object.prototype.hasOwnProperty.call(obj, i)) { + keys.push(i); + } + } + + return keys; + } + + function map (arr, mapper, that) { + if (Array.prototype.map) { + return Array.prototype.map.call(arr, mapper, that); + } + + var other= new Array(arr.length); + + for (var i= 0, n = arr.length; i= 2) { + var rv = arguments[1]; + } else { + do { + if (i in this) { + rv = this[i++]; + break; + } + + // if array contains no values, no initial value to return + if (++i >= len) + throw new TypeError(); + } while (true); + } + + for (; i < len; i++) { + if (i in this) + rv = fun.call(null, rv, this[i], i, this); + } + + return rv; + }; + + /** + * Asserts deep equality + * + * @see taken from node.js `assert` module (copyright Joyent, MIT license) + * @api private + */ + + expect.eql = function eql (actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if ('undefined' != typeof Buffer + && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (actual instanceof Date && expected instanceof Date) { + return actual.getTime() === expected.getTime(); + + // 7.3. Other pairs that do not both pass typeof value == "object", + // equivalence is determined by ==. + } else if (typeof actual != 'object' && typeof expected != 'object') { + return actual == expected; + + // 7.4. For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical "prototype" property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } + } + + function isUndefinedOrNull (value) { + return value === null || value === undefined; + } + + function isArguments (object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; + } + + function objEquiv (a, b) { + if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) + return false; + // an identical "prototype" property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return expect.eql(a, b); + } + try{ + var ka = keys(a), + kb = keys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!expect.eql(a[key], b[key])) + return false; + } + return true; + } + + var json = (function () { + "use strict"; + + if ('object' == typeof JSON && JSON.parse && JSON.stringify) { + return { + parse: nativeJSON.parse + , stringify: nativeJSON.stringify + } + } + + var JSON = {}; + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + function date(d, key) { + return isFinite(d.valueOf()) ? + d.getUTCFullYear() + '-' + + f(d.getUTCMonth() + 1) + '-' + + f(d.getUTCDate()) + 'T' + + f(d.getUTCHours()) + ':' + + f(d.getUTCMinutes()) + ':' + + f(d.getUTCSeconds()) + 'Z' : null; + }; + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + + // If the string contains no control characters, no quote characters, and no + // backslash characters, then we can safely slap some quotes around it. + // Otherwise we must also replace the offending characters with safe escape + // sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : '"' + string + '"'; + } + + + function str(key, holder) { + + // Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + + // If the value has a toJSON method, call it to obtain a replacement value. + + if (value instanceof Date) { + value = date(key); + } + + // If we were called with a replacer function, then call the replacer to + // obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + + // What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + + // JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + + // If the value is a boolean or null, convert it to a string. Note: + // typeof null does not produce 'null'. The case is included here in + // the remote chance that this gets fixed someday. + + return String(value); + + // If the type is 'object', we might be dealing with an object or an array or + // null. + + case 'object': + + // Due to a specification blunder in ECMAScript, typeof null is 'object', + // so watch out for that case. + + if (!value) { + return 'null'; + } + + // Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + + // Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + + // The value is an array. Stringify every element. Use null as a placeholder + // for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + + // Join all of the elements together, separated with commas, and wrap them in + // brackets. + + v = partial.length === 0 ? '[]' : gap ? + '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + + // If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + if (typeof rep[i] === 'string') { + k = rep[i]; + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + + // Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + + // Join all of the member texts together, separated with commas, + // and wrap them in braces. + + v = partial.length === 0 ? '{}' : gap ? + '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : + '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + + // If the JSON object does not yet have a stringify method, give it one. + + JSON.stringify = function (value, replacer, space) { + + // The stringify method takes a value and an optional replacer, and an optional + // space parameter, and returns a JSON text. The replacer can be a function + // that can replace values, or an array of strings that will select the keys. + // A default replacer method can be provided. Use of the space parameter can + // produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + + // If the space parameter is a number, make an indent string containing that + // many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + + // If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + + // If there is a replacer, it must be a function or an array. + // Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + + // Make a fake root object containing our value under the key of ''. + // Return the result of stringifying the value. + + return str('', {'': value}); + }; + + // If the JSON object does not yet have a parse method, give it one. + + JSON.parse = function (text, reviver) { + // The parse method takes a text and an optional reviver function, and returns + // a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + + // The walk method is used to recursively walk the resulting structure so + // that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.prototype.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + + // Parsing happens in four stages. In the first stage, we replace certain + // Unicode characters with escape sequences. JavaScript handles many characters + // incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + + // In the second stage, we run the text against regular expressions that look + // for non-JSON patterns. We are especially concerned with '()' and 'new' + // because they can cause invocation, and '=' because it can cause mutation. + // But just to be safe, we want to reject all unexpected forms. + + // We split the second stage into 4 regexp operations in order to work around + // crippling inefficiencies in IE's and Safari's regexp engines. First we + // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we + // replace all simple value tokens with ']' characters. Third, we delete all + // open brackets that follow a colon or comma or that begin the text. Finally, + // we look to see that the remaining characters are only whitespace or ']' or + // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ + .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') + .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') + .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + + // In the third stage we use the eval function to compile the text into a + // JavaScript structure. The '{' operator is subject to a syntactic ambiguity + // in JavaScript: it can begin a block or an object literal. We wrap the text + // in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + + // In the optional fourth stage, we recursively walk the new structure, passing + // each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + + // If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + + return JSON; + })(); + + if ('undefined' != typeof window) { + window.expect = module.exports; + } + +})( + this + , 'undefined' != typeof module ? module : {} + , 'undefined' != typeof exports ? exports : {} +); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html new file mode 100644 index 0000000..c73147a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html @@ -0,0 +1,18 @@ + + + Mocha + + + + + + + + + + + + +
    + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js new file mode 100644 index 0000000..f3201aa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js @@ -0,0 +1,8981 @@ +/*! + * jQuery JavaScript Library v1.6.2 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Jun 30 14:16:56 2011 -0400 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // (both of which we optimize for) + quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Check for digits + rdigit = /\d/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z])/ig, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = (context ? context.ownerDocument || context : document); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return (context || rootjQuery).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.6.2", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + (this.selector ? " " : "") + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.done( fn ); + + return this; + }, + + eq: function( i ) { + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).unbind( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery._Deferred(); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNaN: function( obj ) { + return obj == null || !rdigit.test( obj ) || isNaN( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw msg; + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return (new Function( "return " + data ))(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + // (xml & tmp used internally) + parseXML: function( data , xml , tmp ) { + + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + + tmp = xml.documentElement; + + if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { + jQuery.error( "Invalid XML: " + data ); + } + + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Converts a dashed string to camelCased string; + // Used by both the css and data modules + camelCase: function( string ) { + return string.replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // The extra typeof function check is to prevent crashes + // in Safari 2 (See: #3039) + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array ) { + + if ( indexOf ) { + return indexOf.call( array, elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return (new Date()).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +var // Promise methods + promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), + // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + // Create a simple deferred (one callbacks list) + _Deferred: function() { + var // callbacks list + callbacks = [], + // stored [ context , args ] + fired, + // to avoid firing when already doing so + firing, + // flag to know if the deferred has been cancelled + cancelled, + // the deferred itself + deferred = { + + // done( f1, f2, ...) + done: function() { + if ( !cancelled ) { + var args = arguments, + i, + length, + elem, + type, + _fired; + if ( fired ) { + _fired = fired; + fired = 0; + } + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + deferred.done.apply( deferred, elem ); + } else if ( type === "function" ) { + callbacks.push( elem ); + } + } + if ( _fired ) { + deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); + } + } + return this; + }, + + // resolve with given context and args + resolveWith: function( context, args ) { + if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; + firing = 1; + try { + while( callbacks[ 0 ] ) { + callbacks.shift().apply( context, args ); + } + } + finally { + fired = [ context, args ]; + firing = 0; + } + } + return this; + }, + + // resolve with this as context and given arguments + resolve: function() { + deferred.resolveWith( this, arguments ); + return this; + }, + + // Has this deferred been resolved? + isResolved: function() { + return !!( firing || fired ); + }, + + // Cancel + cancel: function() { + cancelled = 1; + callbacks = []; + return this; + } + }; + + return deferred; + }, + + // Full fledged deferred (two callbacks list) + Deferred: function( func ) { + var deferred = jQuery._Deferred(), + failDeferred = jQuery._Deferred(), + promise; + // Add errorDeferred methods, then and promise + jQuery.extend( deferred, { + then: function( doneCallbacks, failCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ); + return this; + }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); + }, + fail: failDeferred.done, + rejectWith: failDeferred.resolveWith, + reject: failDeferred.resolve, + isRejected: failDeferred.isResolved, + pipe: function( fnDone, fnFail ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject ); + } else { + newDefer[ action ]( returned ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + if ( promise ) { + return promise; + } + promise = obj = {}; + } + var i = promiseMethods.length; + while( i-- ) { + obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; + } + return obj; + } + }); + // Make sure only one callback list will be used + deferred.done( failDeferred.cancel ).fail( deferred.cancel ); + // Unexpose cancel + delete deferred.cancel; + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = arguments, + i = 0, + length = args.length, + count = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + // Strange bug in FF4: + // Values changed onto the arguments object sometimes end up as undefined values + // outside the $.when method. Cloning the object into a fresh array solves the issue + deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); + } + }; + } + if ( length > 1 ) { + for( ; i < length; i++ ) { + if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return deferred.promise(); + } +}); + + + +jQuery.support = (function() { + + var div = document.createElement( "div" ), + documentElement = document.documentElement, + all, + a, + select, + opt, + input, + marginDiv, + support, + fragment, + body, + testElementParent, + testElement, + testElementStyle, + tds, + events, + eventName, + i, + isSupported; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
    a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName( "tbody" ).length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName( "link" ).length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55$/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains it's value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.firstChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + div.innerHTML = ""; + + // Figure out if the W3C box model works as expected + div.style.width = div.style.paddingLeft = "1px"; + + body = document.getElementsByTagName( "body" )[ 0 ]; + // We use our own, invisible, body unless the body is already present + // in which case we use a div (#9239) + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0 + }; + if ( body ) { + jQuery.extend( testElementStyle, { + position: "absolute", + left: -1000, + top: -1000 + }); + } + for ( i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + support.boxModel = div.offsetWidth === 2; + + if ( "zoom" in div.style ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
    "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName( "td" ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE < 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Remove the body element we added + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); + + // Technique from Juriy Zaytsev + // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + } ) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + // Null connected elements to avoid leaks in IE + testElement = fragment = select = opt = body = marginDiv = div = input = null; + + return support; +})(); + +// Keep track of boxModel +jQuery.boxModel = jQuery.support.boxModel; + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([a-z])([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ jQuery.expando ] = id = ++jQuery.uuid; + } else { + id = jQuery.expando; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); + } else { + cache[ id ] = jQuery.extend(cache[ id ], name); + } + } + + thisCache = cache[ id ]; + + // Internal jQuery data is stored in a separate object inside the object's data + // cache in order to avoid key collisions between internal data and user-defined + // data + if ( pvt ) { + if ( !thisCache[ internalKey ] ) { + thisCache[ internalKey ] = {}; + } + + thisCache = thisCache[ internalKey ]; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should + // not attempt to inspect the internal events object using jQuery.data, as this + // internal data object is undocumented and subject to change. + if ( name === "events" && !thisCache[name] ) { + return thisCache[ internalKey ] && thisCache[ internalKey ].events; + } + + return getByName ? + // Check for both converted-to-camel and non-converted data property names + thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] : + thisCache; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; + + if ( thisCache ) { + delete thisCache[ name ]; + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !isEmptyDataObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( pvt ) { + delete cache[ id ][ internalKey ]; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + var internalCache = cache[ id ][ internalKey ]; + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + if ( jQuery.support.deleteExpando || cache != window ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the entire user cache at once because it's faster than + // iterating through each key, but we need to continue to persist internal + // data if it existed + if ( internalCache ) { + cache[ id ] = {}; + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + + cache[ id ][ internalKey ] = internalCache; + + // Otherwise, we need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + } else if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ jQuery.expando ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } else { + elem[ jQuery.expando ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 ) { + var attr = this[0].attributes, name; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var $this = jQuery( this ), + args = [ parts[0], value ]; + + $this.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + $this.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + !jQuery.isNaN( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON +// property to be considered empty objects; this property always exists in +// order to make sure JSON.stringify does not expose internal metadata +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery.data( elem, deferDataKey, undefined, true ); + if ( defer && + ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && + ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery.data( elem, queueDataKey, undefined, true ) && + !jQuery.data( elem, markDataKey, undefined, true ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.resolve(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = (type || "fx") + "mark"; + jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); + if ( count ) { + jQuery.data( elem, key, count, true ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + if ( elem ) { + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type, undefined, true ); + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data), true ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + defer; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift("inprogress"); + } + + fn.call(elem, function() { + jQuery.dequeue(elem, type); + }); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + + return this.queue( type, function() { + var elem = this; + setTimeout(function() { + jQuery.dequeue( elem, type ); + }, time ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { + count++; + tmp.done( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + rinvalidChar = /\:|^on/, + formHook, boolHook; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = (value || "").split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " "; + for ( var i = 0, l = this.length; i < l; i++ ) { + if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return undefined; + } + + var isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attrFix: { + // Always normalize to ensure hook usage + tabindex: "tabIndex" + }, + + attr: function( elem, name, value, pass ) { + var nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Normalize the name if needed + if ( notxml ) { + name = jQuery.attrFix[ name ] || name; + + hooks = jQuery.attrHooks[ name ]; + + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) ) { + + hooks = boolHook; + + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && name !== "className" && + (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + + hooks = formHook; + } + } + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, name ) { + var propName; + if ( elem.nodeType === 1 ) { + name = jQuery.attrFix[ name ] || name; + + if ( jQuery.support.getSetAttribute ) { + // Use removeAttribute in browsers that support it + elem.removeAttribute( name ); + } else { + jQuery.attr( elem, name, "" ); + elem.removeAttributeNode( elem.getAttributeNode( name ) ); + } + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabIndex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + }, + // Use the value property for back compat + // Use the formHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return (elem[ name ] = value); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: {} +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + return jQuery.prop( elem, name ) ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !jQuery.support.getSetAttribute ) { + + // propFix is more comprehensive and contains all fixes + jQuery.attrFix = jQuery.propFix; + + // Use this for any attribute on a form in IE6/7 + formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + // Return undefined if nodeValue is empty string + return ret && ret.nodeValue !== "" ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Check form objects in IE (multiple bugs related) + // Only use nodeValue if the attribute node exists on the form + var ret = elem.getAttributeNode( name ); + if ( ret ) { + ret.nodeValue = value; + return value; + } + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return (elem.style.cssText = "" + value); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }); +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); + } + } + }); +}); + + + + +var rnamespaces = /\.(.*)$/, + rformElems = /^(?:textarea|input|select)$/i, + rperiod = /\./g, + rspaces = / /g, + rescape = /[^\w\s.|`]/g, + fcleanup = function( nm ) { + return nm.replace(rescape, "\\$&"); + }; + +/* + * A number of helper functions used for managing events. + * Many of the ideas behind this code originated from + * Dean Edwards' addEvent library. + */ +jQuery.event = { + + // Bind an event to an element + // Original by Dean Edwards + add: function( elem, types, handler, data ) { + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + if ( handler === false ) { + handler = returnFalse; + } else if ( !handler ) { + // Fixes bug #7229. Fix recommended by jdalton + return; + } + + var handleObjIn, handleObj; + + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the function being executed has a unique ID + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure + var elemData = jQuery._data( elem ); + + // If no elemData is found then we must be trying to bind to one of the + // banned noData elements + if ( !elemData ) { + return; + } + + var events = elemData.events, + eventHandle = elemData.handle; + + if ( !events ) { + elemData.events = events = {}; + } + + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.handle.apply( eventHandle.elem, arguments ) : + undefined; + }; + } + + // Add elem as a property of the handle function + // This is to prevent a memory leak with non-native events in IE. + eventHandle.elem = elem; + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = types.split(" "); + + var type, i = 0, namespaces; + + while ( (type = types[ i++ ]) ) { + handleObj = handleObjIn ? + jQuery.extend({}, handleObjIn) : + { handler: handler, data: data }; + + // Namespaced event handlers + if ( type.indexOf(".") > -1 ) { + namespaces = type.split("."); + type = namespaces.shift(); + handleObj.namespace = namespaces.slice(0).sort().join("."); + + } else { + namespaces = []; + handleObj.namespace = ""; + } + + handleObj.type = type; + if ( !handleObj.guid ) { + handleObj.guid = handler.guid; + } + + // Get the current list of functions bound to this event + var handlers = events[ type ], + special = jQuery.event.special[ type ] || {}; + + // Init the event handler queue + if ( !handlers ) { + handlers = events[ type ] = []; + + // Check for a special event handler + // Only use addEventListener/attachEvent if the special + // events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add the function to the element's handler list + handlers.push( handleObj ); + + // Keep track of which events have been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, pos ) { + // don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + if ( handler === false ) { + handler = returnFalse; + } + + var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + events = elemData && elemData.events; + + if ( !elemData || !events ) { + return; + } + + // types is actually an event object here + if ( types && types.type ) { + handler = types.handler; + types = types.type; + } + + // Unbind all events for the element + if ( !types || typeof types === "string" && types.charAt(0) === "." ) { + types = types || ""; + + for ( type in events ) { + jQuery.event.remove( elem, type + types ); + } + + return; + } + + // Handle multiple events separated by a space + // jQuery(...).unbind("mouseover mouseout", fn); + types = types.split(" "); + + while ( (type = types[ i++ ]) ) { + origType = type; + handleObj = null; + all = type.indexOf(".") < 0; + namespaces = []; + + if ( !all ) { + // Namespaced event handlers + namespaces = type.split("."); + type = namespaces.shift(); + + namespace = new RegExp("(^|\\.)" + + jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + + eventType = events[ type ]; + + if ( !eventType ) { + continue; + } + + if ( !handler ) { + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( all || namespace.test( handleObj.namespace ) ) { + jQuery.event.remove( elem, origType, handleObj.handler, j ); + eventType.splice( j--, 1 ); + } + } + + continue; + } + + special = jQuery.event.special[ type ] || {}; + + for ( j = pos || 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( handler.guid === handleObj.guid ) { + // remove the given handler for the given type + if ( all || namespace.test( handleObj.namespace ) ) { + if ( pos == null ) { + eventType.splice( j--, 1 ); + } + + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + + if ( pos != null ) { + break; + } + } + } + + // remove generic event handler if no more handlers exist + if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + ret = null; + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + var handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + delete elemData.events; + delete elemData.handle; + + if ( jQuery.isEmptyObject( elemData ) ) { + jQuery.removeData( elem, undefined, true ); + } + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Event object or event type + var type = event.type || event, + namespaces = [], + exclusive; + + if ( type.indexOf("!") >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.exclusive = exclusive; + event.namespace = namespaces.join("."); + event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); + + // triggerHandler() and global events don't bubble or run the default action + if ( onlyHandlers || !elem ) { + event.preventDefault(); + event.stopPropagation(); + } + + // Handle a global trigger + if ( !elem ) { + // TODO: Stop taunting the data cache; remove global events and always attach to document + jQuery.each( jQuery.cache, function() { + // internalKey variable is just used to make it easier to find + // and potentially change this stuff later; currently it just + // points to jQuery.expando + var internalKey = jQuery.expando, + internalCache = this[ internalKey ]; + if ( internalCache && internalCache.events && internalCache.events[ type ] ) { + jQuery.event.trigger( event, data, internalCache.handle.elem ); + } + }); + return; + } + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + event.target = elem; + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + var cur = elem, + // IE doesn't like method names with a colon (#3533, #8272) + ontype = type.indexOf(":") < 0 ? "on" + type : ""; + + // Fire event on the current element, then bubble up the DOM tree + do { + var handle = jQuery._data( cur, "handle" ); + + event.currentTarget = cur; + if ( handle ) { + handle.apply( cur, data ); + } + + // Trigger an inline bound script + if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { + event.result = false; + event.preventDefault(); + } + + // Bubble up to document, then to window + cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; + } while ( cur && !event.isPropagationStopped() ); + + // If nobody prevented the default action, do it now + if ( !event.isDefaultPrevented() ) { + var old, + special = jQuery.event.special[ type ] || {}; + + if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction)() check here because IE6/7 fails that test. + // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. + try { + if ( ontype && elem[ type ] ) { + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + jQuery.event.triggered = type; + elem[ type ](); + } + } catch ( ieError ) {} + + if ( old ) { + elem[ ontype ] = old; + } + + jQuery.event.triggered = undefined; + } + } + + return event.result; + }, + + handle: function( event ) { + event = jQuery.event.fix( event || window.event ); + // Snapshot the handlers list since a called handler may add/remove events. + var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), + run_all = !event.exclusive && !event.namespace, + args = Array.prototype.slice.call( arguments, 0 ); + + // Use the fix-ed Event rather than the (read-only) native event + args[0] = event; + event.currentTarget = this; + + for ( var j = 0, l = handlers.length; j < l; j++ ) { + var handleObj = handlers[ j ]; + + // Triggered event must 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event. + if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { + // Pass in a reference to the handler function itself + // So that we can later remove it + event.handler = handleObj.handler; + event.data = handleObj.data; + event.handleObj = handleObj; + + var ret = handleObj.handler.apply( this, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + + if ( event.isImmediatePropagationStopped() ) { + break; + } + } + } + return event.result; + }, + + props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // store a copy of the original event object + // and "clone" to set read-only properties + var originalEvent = event; + event = jQuery.Event( originalEvent ); + + for ( var i = this.props.length, prop; i; ) { + prop = this.props[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary + if ( !event.target ) { + // Fixes #1925 where srcElement might not be defined either + event.target = event.srcElement || document; + } + + // check if target is a textnode (safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && event.fromElement ) { + event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; + } + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && event.clientX != null ) { + var eventDocument = event.target.ownerDocument || document, + doc = eventDocument.documentElement, + body = eventDocument.body; + + event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + + // Add which for key events + if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { + event.which = event.charCode != null ? event.charCode : event.keyCode; + } + + // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) + if ( !event.metaKey && event.ctrlKey ) { + event.metaKey = event.ctrlKey; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && event.button !== undefined ) { + event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); + } + + return event; + }, + + // Deprecated, use jQuery.guid instead + guid: 1E8, + + // Deprecated, use jQuery.proxy instead + proxy: jQuery.proxy, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady, + teardown: jQuery.noop + }, + + live: { + add: function( handleObj ) { + jQuery.event.add( this, + liveConvert( handleObj.origType, handleObj.selector ), + jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); + }, + + remove: function( handleObj ) { + jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); + } + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !this.preventDefault ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // timeStamp is buggy for some events on Firefox(#3843) + // So we won't rely on the native value + this.timeStamp = jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Checks if an event happened on an element within another element +// Used in jQuery.event.special.mouseenter and mouseleave handlers +var withinElement = function( event ) { + + // Check if mouse(over|out) are still within the same parent element + var related = event.relatedTarget, + inside = false, + eventType = event.type; + + event.type = event.data; + + if ( related !== this ) { + + if ( related ) { + inside = jQuery.contains( this, related ); + } + + if ( !inside ) { + + jQuery.event.handle.apply( this, arguments ); + + event.type = eventType; + } + } +}, + +// In case of event delegation, we only need to rename the event.type, +// liveHandler will take care of the rest. +delegate = function( event ) { + event.type = event.data; + jQuery.event.handle.apply( this, arguments ); +}; + +// Create mouseenter and mouseleave events +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + setup: function( data ) { + jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); + }, + teardown: function( data ) { + jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); + } + }; +}); + +// submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function( data, namespaces ) { + if ( !jQuery.nodeName( this, "form" ) ) { + jQuery.event.add(this, "click.specialSubmit", function( e ) { + var elem = e.target, + type = elem.type; + + if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { + trigger( "submit", this, arguments ); + } + }); + + jQuery.event.add(this, "keypress.specialSubmit", function( e ) { + var elem = e.target, + type = elem.type; + + if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { + trigger( "submit", this, arguments ); + } + }); + + } else { + return false; + } + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialSubmit" ); + } + }; + +} + +// change delegation, happens here so we have bind. +if ( !jQuery.support.changeBubbles ) { + + var changeFilters, + + getVal = function( elem ) { + var type = elem.type, val = elem.value; + + if ( type === "radio" || type === "checkbox" ) { + val = elem.checked; + + } else if ( type === "select-multiple" ) { + val = elem.selectedIndex > -1 ? + jQuery.map( elem.options, function( elem ) { + return elem.selected; + }).join("-") : + ""; + + } else if ( jQuery.nodeName( elem, "select" ) ) { + val = elem.selectedIndex; + } + + return val; + }, + + testChange = function testChange( e ) { + var elem = e.target, data, val; + + if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { + return; + } + + data = jQuery._data( elem, "_change_data" ); + val = getVal(elem); + + // the current data will be also retrieved by beforeactivate + if ( e.type !== "focusout" || elem.type !== "radio" ) { + jQuery._data( elem, "_change_data", val ); + } + + if ( data === undefined || val === data ) { + return; + } + + if ( data != null || val ) { + e.type = "change"; + e.liveFired = undefined; + jQuery.event.trigger( e, arguments[1], elem ); + } + }; + + jQuery.event.special.change = { + filters: { + focusout: testChange, + + beforedeactivate: testChange, + + click: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { + testChange.call( this, e ); + } + }, + + // Change has to be called before submit + // Keydown will be called before keypress, which is used in submit-event delegation + keydown: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || + (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || + type === "select-multiple" ) { + testChange.call( this, e ); + } + }, + + // Beforeactivate happens also before the previous element is blurred + // with this event you can't trigger a change event, but you can store + // information + beforeactivate: function( e ) { + var elem = e.target; + jQuery._data( elem, "_change_data", getVal(elem) ); + } + }, + + setup: function( data, namespaces ) { + if ( this.type === "file" ) { + return false; + } + + for ( var type in changeFilters ) { + jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); + } + + return rformElems.test( this.nodeName ); + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialChange" ); + + return rformElems.test( this.nodeName ); + } + }; + + changeFilters = jQuery.event.special.change.filters; + + // Handle when the input is .focus()'d + changeFilters.focus = changeFilters.beforeactivate; +} + +function trigger( type, elem, args ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + // Don't pass args or remember liveFired; they apply to the donor event. + var event = jQuery.extend( {}, args[ 0 ] ); + event.type = type; + event.originalEvent = {}; + event.liveFired = undefined; + jQuery.event.handle.call( elem, event ); + if ( event.isDefaultPrevented() ) { + args[ 0 ].preventDefault(); + } +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + + function handler( donor ) { + // Donor event is always a native one; fix it and switch its type. + // Let focusin/out handler cancel the donor focus/blur event. + var e = jQuery.event.fix( donor ); + e.type = fix; + e.originalEvent = {}; + jQuery.event.trigger( e, null, e.target ); + if ( e.isDefaultPrevented() ) { + donor.preventDefault(); + } + } + }); +} + +jQuery.each(["bind", "one"], function( i, name ) { + jQuery.fn[ name ] = function( type, data, fn ) { + var handler; + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ name ](key, data, type[key], fn); + } + return this; + } + + if ( arguments.length === 2 || data === false ) { + fn = data; + data = undefined; + } + + if ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } + + if ( type === "unload" && name !== "one" ) { + this.one( type, data, fn ); + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.add( this[i], type, handler, data ); + } + } + + return this; + }; +}); + +jQuery.fn.extend({ + unbind: function( type, fn ) { + // Handle object literals + if ( typeof type === "object" && !type.preventDefault ) { + for ( var key in type ) { + this.unbind(key, type[key]); + } + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.remove( this[i], type, fn ); + } + } + + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.live( types, data, fn, selector ); + }, + + undelegate: function( selector, types, fn ) { + if ( arguments.length === 0 ) { + return this.unbind( "live" ); + + } else { + return this.die( types, null, fn, selector ); + } + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +var liveMap = { + focus: "focusin", + blur: "focusout", + mouseenter: "mouseover", + mouseleave: "mouseout" +}; + +jQuery.each(["live", "die"], function( i, name ) { + jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { + var type, i = 0, match, namespaces, preType, + selector = origSelector || this.selector, + context = origSelector ? this : jQuery( this.context ); + + if ( typeof types === "object" && !types.preventDefault ) { + for ( var key in types ) { + context[ name ]( key, data, types[key], selector ); + } + + return this; + } + + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; + data = undefined; + } + + types = (types || "").split(" "); + + while ( (type = types[ i++ ]) != null ) { + match = rnamespaces.exec( type ); + namespaces = ""; + + if ( match ) { + namespaces = match[0]; + type = type.replace( rnamespaces, "" ); + } + + if ( type === "hover" ) { + types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); + continue; + } + + preType = type; + + if ( liveMap[ type ] ) { + types.push( liveMap[ type ] + namespaces ); + type = type + namespaces; + + } else { + type = (liveMap[ type ] || type) + namespaces; + } + + if ( name === "live" ) { + // bind live handler + for ( var j = 0, l = context.length; j < l; j++ ) { + jQuery.event.add( context[j], "live." + liveConvert( type, selector ), + { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); + } + + } else { + // unbind live handler + context.unbind( "live." + liveConvert( type, selector ), fn ); + } + } + + return this; + }; +}); + +function liveHandler( event ) { + var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, + elems = [], + selectors = [], + events = jQuery._data( this, "events" ); + + // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) + if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { + return; + } + + if ( event.namespace ) { + namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + + event.liveFired = this; + + var live = events.live.slice(0); + + for ( j = 0; j < live.length; j++ ) { + handleObj = live[j]; + + if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { + selectors.push( handleObj.selector ); + + } else { + live.splice( j--, 1 ); + } + } + + match = jQuery( event.target ).closest( selectors, event.currentTarget ); + + for ( i = 0, l = match.length; i < l; i++ ) { + close = match[i]; + + for ( j = 0; j < live.length; j++ ) { + handleObj = live[j]; + + if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { + elem = close.elem; + related = null; + + // Those two events require additional checking + if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { + event.type = handleObj.preType; + related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; + + // Make sure not to accidentally match a child element with the same selector + if ( related && jQuery.contains( elem, related ) ) { + related = elem; + } + } + + if ( !related || related !== elem ) { + elems.push({ elem: elem, handleObj: handleObj, level: close.level }); + } + } + } + } + + for ( i = 0, l = elems.length; i < l; i++ ) { + match = elems[i]; + + if ( maxLevel && match.level > maxLevel ) { + break; + } + + event.currentTarget = match.elem; + event.data = match.handleObj.data; + event.handleObj = match.handleObj; + + ret = match.handleObj.origHandler.apply( match.elem, arguments ); + + if ( ret === false || event.isPropagationStopped() ) { + maxLevel = match.level; + + if ( ret === false ) { + stop = false; + } + if ( event.isImmediatePropagationStopped() ) { + break; + } + } + } + + return stop; +} + +function liveConvert( type, selector ) { + return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); +} + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set; + + if ( !expr ) { + return []; + } + + for ( var i = 0, l = Expr.order.length; i < l; i++ ) { + var match, + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + var left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( var type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + var found, item, + filter = Expr.filter[ type ], + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( var i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + var pass = not ^ !!found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw "Syntax error, unrecognized expression: " + msg; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + var first = match[2], + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + var doneName = match[0], + parent = elem.parentNode; + + if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { + var count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent.sizcache = doneName; + } + + var diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Utility function for retreiving the text value of an array of DOM nodes +Sizzle.getText = function( elems ) { + var ret = "", elem; + + for ( var i = 0; elems[i]; i++ ) { + elem = elems[i]; + + // Get the text from text nodes and CDATA nodes + if ( elem.nodeType === 3 || elem.nodeType === 4 ) { + ret += elem.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( elem.nodeType !== 8 ) { + ret += Sizzle.getText( elem.childNodes ); + } + } + + return ret; +}; + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

    "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
    "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( typeof selector === "string" ? + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array + if ( jQuery.isArray( selectors ) ) { + var match, selector, + matches = {}, + level = 1; + + if ( cur && selectors.length ) { + for ( i = 0, l = selectors.length; i < l; i++ ) { + selector = selectors[i]; + + if ( !matches[ selector ] ) { + matches[ selector ] = POS.test( selector ) ? + jQuery( selector, context || this.context ) : + selector; + } + } + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( selector in matches ) { + match = matches[ selector ]; + + if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { + ret.push({ selector: selector, elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + if ( !elem || typeof elem === "string" ) { + return jQuery.inArray( this[0], + // If it receives a string, the selector is used + // If it receives nothing, the siblings are used + elem ? jQuery( elem ) : this.parent().children() ); + } + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return (elem === qualifier) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return (jQuery.inArray( elem, qualifier ) >= 0) === keep; + }); +} + + + + +var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
    ", "
    " ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + col: [ 2, "", "
    " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }; + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js new file mode 100644 index 0000000..1fdac20 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js @@ -0,0 +1,10 @@ + +var debug = { + foo: require('../')('test:foo'), + bar: require('../')('test:bar'), + baz: require('../')('test:baz') +}; + +debug.foo('foo') +debug.bar('bar') +debug.baz('baz') \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js new file mode 100644 index 0000000..7f6d288 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js @@ -0,0 +1,22 @@ + +// DEBUG=* node example/worker +// DEBUG=worker:* node example/worker +// DEBUG=worker:a node example/worker +// DEBUG=worker:b node example/worker + +var a = require('../')('worker:a') + , b = require('../')('worker:b'); + +function work() { + a('doing lots of uninteresting work'); + setTimeout(work, Math.random() * 1000); +} + +work(); + +function workb() { + b('doing some work'); + setTimeout(workb, Math.random() * 2000); +} + +workb(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js new file mode 100644 index 0000000..e02c13b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js @@ -0,0 +1,5 @@ +if ('undefined' == typeof window) { + module.exports = require('./lib/debug'); +} else { + module.exports = require('./debug'); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js new file mode 100644 index 0000000..0b07aa1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js @@ -0,0 +1,134 @@ +/** + * Module dependencies. + */ + +var tty = require('tty'); + +/** + * Expose `debug()` as the module. + */ + +module.exports = debug; + +/** + * Enabled debuggers. + */ + +var names = [] + , skips = []; + +(process.env.DEBUG || '') + .split(/[\s,]+/) + .forEach(function(name){ + name = name.replace('*', '.*?'); + if (name[0] === '-') { + skips.push(new RegExp('^' + name.substr(1) + '$')); + } else { + names.push(new RegExp('^' + name + '$')); + } + }); + +/** + * Colors. + */ + +var colors = [6, 2, 3, 4, 5, 1]; + +/** + * Previous debug() call. + */ + +var prev = {}; + +/** + * Previously assigned color. + */ + +var prevColor = 0; + +/** + * Is stdout a TTY? Colored output is disabled when `true`. + */ + +var isatty = tty.isatty(2); + +/** + * Select a color. + * + * @return {Number} + * @api private + */ + +function color() { + return colors[prevColor++ % colors.length]; +} + +/** + * Humanize the given `ms`. + * + * @param {Number} m + * @return {String} + * @api private + */ + +function humanize(ms) { + var sec = 1000 + , min = 60 * 1000 + , hour = 60 * min; + + if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; + if (ms >= min) return (ms / min).toFixed(1) + 'm'; + if (ms >= sec) return (ms / sec | 0) + 's'; + return ms + 'ms'; +} + +/** + * Create a debugger with the given `name`. + * + * @param {String} name + * @return {Type} + * @api public + */ + +function debug(name) { + function disabled(){} + disabled.enabled = false; + + var match = skips.some(function(re){ + return re.test(name); + }); + + if (match) return disabled; + + match = names.some(function(re){ + return re.test(name); + }); + + if (!match) return disabled; + var c = color(); + + function colored(fmt) { + var curr = new Date; + var ms = curr - (prev[name] || curr); + prev[name] = curr; + + fmt = ' \u001b[9' + c + 'm' + name + ' ' + + '\u001b[3' + c + 'm\u001b[90m' + + fmt + '\u001b[3' + c + 'm' + + ' +' + humanize(ms) + '\u001b[0m'; + + console.error.apply(this, arguments); + } + + function plain(fmt) { + fmt = new Date().toUTCString() + + ' ' + name + ' ' + fmt; + console.error.apply(this, arguments); + } + + colored.enabled = plain.enabled = true; + + return isatty || process.env.DEBUG_COLORS + ? colored + : plain; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json new file mode 100644 index 0000000..56e2714 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json @@ -0,0 +1,37 @@ +{ + "name": "debug", + "version": "0.7.2", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/debug.git" + }, + "description": "small debugging utility", + "keywords": [ + "debug", + "log", + "debugger" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": {}, + "devDependencies": { + "mocha": "*" + }, + "main": "lib/debug.js", + "browserify": "debug.js", + "engines": { + "node": "*" + }, + "component": { + "scripts": { + "debug/index.js": "index.js", + "debug/debug.js": "debug.js" + } + }, + "readme": "\n# debug\n\n tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n , http = require('http')\n , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + ' ' + req.url);\n res.end('hello\\n');\n}).listen(3000, function(){\n debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n debug('doing some work');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a \"-\" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "debug@0.7.2", + "_from": "debug@*" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore @@ -0,0 +1 @@ +test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md new file mode 100644 index 0000000..273130d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md @@ -0,0 +1,32 @@ + +# node-fresh + + HTTP response freshness testing + +## fresh(req, res) + + Check freshness of `req` and `res` headers. + + When the cache is "fresh" __true__ is returned, + otherwise __false__ is returned to indicate that + the cache is now stale. + +## Example: + +```js +var req = { 'if-none-match': 'tobi' }; +var res = { 'etag': 'luna' }; +fresh(req, res); +// => false + +var req = { 'if-none-match': 'tobi' }; +var res = { 'etag': 'tobi' }; +fresh(req, res); +// => true +``` + +## Installation + +``` +$ npm install fresh +``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js new file mode 100644 index 0000000..b2f4d41 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js @@ -0,0 +1,49 @@ + +/** + * Expose `fresh()`. + */ + +module.exports = fresh; + +/** + * Check freshness of `req` and `res` headers. + * + * When the cache is "fresh" __true__ is returned, + * otherwise __false__ is returned to indicate that + * the cache is now stale. + * + * @param {Object} req + * @param {Object} res + * @return {Boolean} + * @api public + */ + +function fresh(req, res) { + // defaults + var etagMatches = true; + var notModified = true; + + // fields + var modifiedSince = req['if-modified-since']; + var noneMatch = req['if-none-match']; + var lastModified = res['last-modified']; + var etag = res['etag']; + + // unconditional request + if (!modifiedSince && !noneMatch) return false; + + // parse if-none-match + if (noneMatch) noneMatch = noneMatch.split(/ *, */); + + // if-none-match + if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0]; + + // if-modified-since + if (modifiedSince) { + modifiedSince = new Date(modifiedSince); + lastModified = new Date(lastModified); + notModified = lastModified <= modifiedSince; + } + + return !! (etagMatches && notModified); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json new file mode 100644 index 0000000..d9fddb2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json @@ -0,0 +1,20 @@ +{ + "name": "fresh", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "HTTP response freshness testing", + "version": "0.1.0", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "\n# node-fresh\n\n HTTP response freshness testing\n\n## fresh(req, res)\n\n Check freshness of `req` and `res` headers.\n\n When the cache is \"fresh\" __true__ is returned,\n otherwise __false__ is returned to indicate that\n the cache is now stale.\n\n## Example:\n\n```js\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'luna' };\nfresh(req, res);\n// => false\n\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'tobi' };\nfresh(req, res);\n// => true\n```\n\n## Installation\n\n```\n$ npm install fresh\n```", + "readmeFilename": "Readme.md", + "_id": "fresh@0.1.0", + "_from": "fresh@0.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js new file mode 100644 index 0000000..297d022 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js @@ -0,0 +1,26 @@ + +module.exports = [ + 'get' + , 'post' + , 'put' + , 'head' + , 'delete' + , 'options' + , 'trace' + , 'copy' + , 'lock' + , 'mkcol' + , 'move' + , 'propfind' + , 'proppatch' + , 'unlock' + , 'report' + , 'mkactivity' + , 'checkout' + , 'merge' + , 'm-search' + , 'notify' + , 'subscribe' + , 'unsubscribe' + , 'patch' +]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json new file mode 100644 index 0000000..341b226 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json @@ -0,0 +1,20 @@ +{ + "name": "methods", + "version": "0.0.1", + "description": "HTTP methods that node supports", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "http", + "methods" + ], + "author": { + "name": "TJ Holowaychuk" + }, + "license": "MIT", + "_id": "methods@0.0.1", + "readme": "ERROR: No README.md file found!", + "_from": "methods@0.0.1" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore new file mode 100644 index 0000000..9303c34 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore @@ -0,0 +1,2 @@ +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml new file mode 100644 index 0000000..84fd7ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js new file mode 100644 index 0000000..e692421 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js @@ -0,0 +1,6 @@ +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js new file mode 100644 index 0000000..fda6de8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js @@ -0,0 +1,82 @@ +var path = require('path'); +var fs = require('fs'); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, mode, f, made) { + if (typeof mode === 'function' || mode === undefined) { + f = mode; + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + var cb = f || function () {}; + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + fs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + mkdirP(path.dirname(p), mode, function (er, made) { + if (er) cb(er, made); + else mkdirP(p, mode, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + fs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, mode, made) { + if (mode === undefined) { + mode = 0777 & (~process.umask()); + } + if (!made) made = null; + + if (typeof mode === 'string') mode = parseInt(mode, 8); + p = path.resolve(p); + + try { + fs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), mode, made); + sync(p, mode, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = fs.statSync(p); + } + catch (err1) { + throw err0; + } + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json new file mode 100644 index 0000000..549e2c2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json @@ -0,0 +1,30 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "0.3.5", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "main": "./index", + "keywords": [ + "mkdir", + "directory" + ], + "repository": { + "type": "git", + "url": "http://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "devDependencies": { + "tap": "~0.4.0" + }, + "license": "MIT", + "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", + "readmeFilename": "readme.markdown", + "_id": "mkdirp@0.3.5", + "_from": "mkdirp@~0.3.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown new file mode 100644 index 0000000..83b0216 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown @@ -0,0 +1,63 @@ +# mkdirp + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +# example + +## pow.js + +```js +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); +``` + +Output + +``` +pow! +``` + +And now /tmp/foo/bar/baz exists, huzzah! + +# methods + +```js +var mkdirp = require('mkdirp'); +``` + +## mkdirp(dir, mode, cb) + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +## mkdirp.sync(dir, mode) + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `mode`. + +If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. + +Returns the first directory that had to be created, if any. + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install mkdirp +``` + +# license + +MIT diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js new file mode 100644 index 0000000..520dcb8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js @@ -0,0 +1,38 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +test('chmod-pre', function (t) { + var mode = 0744 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); + t.end(); + }); + }); +}); + +test('chmod', function (t) { + var mode = 0755 + mkdirp(file, mode, function (er) { + t.ifError(er, 'should not error'); + fs.stat(file, function (er, stat) { + t.ifError(er, 'should exist'); + t.ok(stat && stat.isDirectory(), 'should be directory'); + t.end(); + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js new file mode 100644 index 0000000..0eb7099 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js @@ -0,0 +1,37 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +var ps = [ '', 'tmp' ]; + +for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); +} + +var file = ps.join('/'); + +// a file in the way +var itw = ps.slice(0, 3).join('/'); + + +test('clobber-pre', function (t) { + console.error("about to write to "+itw) + fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); + + fs.stat(itw, function (er, stat) { + t.ifError(er) + t.ok(stat && stat.isFile(), 'should be file') + t.end() + }) +}) + +test('clobber', function (t) { + t.plan(2); + mkdirp(file, 0755, function (err) { + t.ok(err); + t.equal(err.code, 'ENOTDIR'); + t.end(); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js new file mode 100644 index 0000000..b07cd70 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('woo', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js new file mode 100644 index 0000000..23a7abb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('async perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); + +test('async root perm', function (t) { + mkdirp('/tmp', 0755, function (err) { + if (err) t.fail(err); + t.end(); + }); + t.end(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js new file mode 100644 index 0000000..f685f60 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js @@ -0,0 +1,39 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync perm', function (t) { + t.plan(2); + var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; + + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); + +test('sync root perm', function (t) { + t.plan(1); + + var file = '/tmp'; + mkdirp.sync(file, 0755); + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js new file mode 100644 index 0000000..96a0447 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js @@ -0,0 +1,41 @@ +var mkdirp = require('../').mkdirp; +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('race', function (t) { + t.plan(4); + var ps = [ '', 'tmp' ]; + + for (var i = 0; i < 25; i++) { + var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + ps.push(dir); + } + var file = ps.join('/'); + + var res = 2; + mk(file, function () { + if (--res === 0) t.end(); + }); + + mk(file, function () { + if (--res === 0) t.end(); + }); + + function mk (file, cb) { + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + if (cb) cb(); + } + }) + }) + }); + } +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js new file mode 100644 index 0000000..7985824 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('rel', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var cwd = process.cwd(); + process.chdir('/tmp'); + + var file = [x,y,z].join('/'); + + mkdirp(file, 0755, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + process.chdir(cwd); + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js new file mode 100644 index 0000000..bce68e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js @@ -0,0 +1,25 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(4); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, '/tmp/' + x); + mkdirp(file, function (err, made) { + t.ifError(err); + t.equal(made, null); + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js new file mode 100644 index 0000000..7c222d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js @@ -0,0 +1,24 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('return value', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + // should return the first dir created. + // By this point, it would be profoundly surprising if /tmp didn't + // already exist, since every other test makes things in there. + // Note that this will throw on failure, which will fail the test. + var made = mkdirp.sync(file); + t.equal(made, '/tmp/' + x); + + // making the same file again should have no effect. + made = mkdirp.sync(file); + t.equal(made, null); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js new file mode 100644 index 0000000..97ad7a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js @@ -0,0 +1,18 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('root', function (t) { + // '/' on unix, 'c:/' on windows. + var file = path.resolve('/'); + + mkdirp(file, 0755, function (err) { + if (err) throw err + fs.stat(file, function (er, stat) { + if (er) throw er + t.ok(stat.isDirectory(), 'target is a directory'); + t.end(); + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js new file mode 100644 index 0000000..7530cad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('sync', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file, 0755); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0755); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js new file mode 100644 index 0000000..64ccafe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js @@ -0,0 +1,28 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('implicit mode from umask', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + mkdirp(file, function (err) { + if (err) t.fail(err); + else path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, 0777 & (~process.umask())); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }) + }) + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js new file mode 100644 index 0000000..35bd5cb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js @@ -0,0 +1,32 @@ +var mkdirp = require('../'); +var path = require('path'); +var fs = require('fs'); +var test = require('tap').test; + +test('umask sync modes', function (t) { + t.plan(2); + var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); + + var file = '/tmp/' + [x,y,z].join('/'); + + try { + mkdirp.sync(file); + } catch (err) { + t.fail(err); + return t.end(); + } + + path.exists(file, function (ex) { + if (!ex) t.fail('file not created') + else fs.stat(file, function (err, stat) { + if (err) t.fail(err) + else { + t.equal(stat.mode & 0777, (0777 & (~process.umask()))); + t.ok(stat.isDirectory(), 'target not a directory'); + t.end(); + } + }); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore @@ -0,0 +1 @@ +test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md new file mode 100644 index 0000000..82df7b1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md @@ -0,0 +1,15 @@ + +0.0.4 / 2012-06-17 +================== + + * changed: ret -1 for unsatisfiable and -2 when invalid + +0.0.3 / 2012-06-17 +================== + + * fix last-byte-pos default to len - 1 + +0.0.2 / 2012-06-14 +================== + + * add `.type` diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile new file mode 100644 index 0000000..8e8640f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile @@ -0,0 +1,7 @@ + +test: + @./node_modules/.bin/mocha \ + --reporter spec \ + --require should + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md new file mode 100644 index 0000000..b2a67fe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md @@ -0,0 +1,28 @@ + +# node-range-parser + + Range header field parser. + +## Example: + +```js +assert(-1 == parse(200, 'bytes=500-20')); +assert(-2 == parse(200, 'bytes=malformed')); +parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); +parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); +parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); +parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); +parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); +parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); +parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); +parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); +parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); +parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); +``` + +## Installation + +``` +$ npm install range-parser +``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js new file mode 100644 index 0000000..9b0f7a8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js @@ -0,0 +1,49 @@ + +/** + * Parse "Range" header `str` relative to the given file `size`. + * + * @param {Number} size + * @param {String} str + * @return {Array} + * @api public + */ + +module.exports = function(size, str){ + var valid = true; + var i = str.indexOf('='); + + if (-1 == i) return -2; + + var arr = str.slice(i + 1).split(',').map(function(range){ + var range = range.split('-') + , start = parseInt(range[0], 10) + , end = parseInt(range[1], 10); + + // -nnn + if (isNaN(start)) { + start = size - end; + end = size - 1; + // nnn- + } else if (isNaN(end)) { + end = size - 1; + } + + // limit last-byte-pos to current length + if (end > size - 1) end = size - 1; + + // invalid + if (isNaN(start) + || isNaN(end) + || start > end + || start < 0) valid = false; + + return { + start: start, + end: end + }; + }); + + arr.type = str.slice(0, i); + + return valid ? arr : -1; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json new file mode 100644 index 0000000..efdf450 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json @@ -0,0 +1,20 @@ +{ + "name": "range-parser", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca", + "url": "http://tjholowaychuk.com" + }, + "description": "Range header field string parser", + "version": "0.0.4", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "readme": "\n# node-range-parser\n\n Range header field parser.\n\n## Example:\n\n```js\nassert(-1 == parse(200, 'bytes=500-20'));\nassert(-2 == parse(200, 'bytes=malformed'));\nparse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));\nparse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));\nparse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));\nparse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));\nparse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));\nparse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));\nparse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));\nparse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));\nparse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## Installation\n\n```\n$ npm install range-parser\n```", + "readmeFilename": "Readme.md", + "_id": "range-parser@0.0.4", + "_from": "range-parser@0.0.4" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md new file mode 100644 index 0000000..20c5319 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md @@ -0,0 +1,25 @@ + +0.1.0 / 2012-08-25 +================== + + * add options parameter to send() that is passed to fs.createReadStream() [kanongil] + +0.0.4 / 2012-08-16 +================== + + * allow custom "Accept-Ranges" definition + +0.0.3 / 2012-07-16 +================== + + * fix normalization of the root directory. Closes #3 + +0.0.2 / 2012-07-09 +================== + + * add passing of req explicitly for now (YUCK) + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile new file mode 100644 index 0000000..a9dcfd5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile @@ -0,0 +1,8 @@ + +test: + @./node_modules/.bin/mocha \ + --require should \ + --reporter spec \ + --bail + +.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md new file mode 100644 index 0000000..85171a9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md @@ -0,0 +1,123 @@ + +# send + + Send is Connect's `static()` extracted for generalized use, a streaming static file + server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. + +## Installation + + $ npm install send + +## Examples + + Small: + +```js +var http = require('http'); +var send = require('send'); + +var app = http.createServer(function(req, res){ + send(req, req.url).pipe(res); +}); +``` + + Serving from a root directory with custom error-handling: + +```js +var http = require('http'); +var send = require('send'); + +var app = http.createServer(function(req, res){ + // your custom error-handling logic: + function error(err) { + res.statusCode = err.status || 500; + res.end(err.message); + } + + // your custom directory handling logic: + function redirect() { + res.statusCode = 301; + res.setHeader('Location', req.url + '/'); + res.end('Redirecting to ' + req.url + '/'); + } + + // transfer arbitrary files from within + // /www/example.com/public/* + send(req, url.parse(req.url).pathname) + .root('/www/example.com/public') + .on('error', error) + .on('directory', redirect) + .pipe(res); +}); +``` + +## API + +### Events + + - `error` an error occurred `(err)` + - `directory` a directory was requested + - `stream` file streaming has started `(stream)` + - `end` streaming has completed + +### .root(dir) + + Serve files relative to `path`. Aliased as `.from(dir)`. + +### .index(path) + + By default send supports "index.html" files, to disable this + invoke `.index(false)` or to supply a new index pass a string. + +### .maxage(ms) + + Provide a max-age in milliseconds for http caching, defaults to 0. + +## Error-handling + + By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. + +## Caching + + It does _not_ perform internal caching, you should use a reverse proxy cache such + as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). + +## Debugging + + To enable `debug()` instrumentation output export __DEBUG__: + +``` +$ DEBUG=send node app +``` + +## Running tests + +``` +$ npm install +$ make test +``` + +## License + +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js new file mode 100644 index 0000000..f17158d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js @@ -0,0 +1,2 @@ + +module.exports = require('./lib/send'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js new file mode 100644 index 0000000..de72146 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js @@ -0,0 +1,473 @@ + +/** + * Module dependencies. + */ + +var debug = require('debug')('send') + , parseRange = require('range-parser') + , Stream = require('stream') + , mime = require('mime') + , fresh = require('fresh') + , path = require('path') + , http = require('http') + , fs = require('fs') + , basename = path.basename + , normalize = path.normalize + , join = path.join + , utils = require('./utils'); + +/** + * Expose `send`. + */ + +exports = module.exports = send; + +/** + * Expose mime module. + */ + +exports.mime = mime; + +/** + * Return a `SendStream` for `req` and `path`. + * + * @param {Request} req + * @param {String} path + * @param {Object} options + * @return {SendStream} + * @api public + */ + +function send(req, path, options) { + return new SendStream(req, path, options); +} + +/** + * Initialize a `SendStream` with the given `path`. + * + * Events: + * + * - `error` an error occurred + * - `stream` file streaming has started + * - `end` streaming has completed + * - `directory` a directory was requested + * + * @param {Request} req + * @param {String} path + * @param {Object} options + * @api private + */ + +function SendStream(req, path, options) { + var self = this; + this.req = req; + this.path = path; + this.options = options || {}; + this.maxage(0); + this.hidden(false); + this.index('index.html'); +} + +/** + * Inherits from `Stream.prototype`. + */ + +SendStream.prototype.__proto__ = Stream.prototype; + +/** + * Enable or disable "hidden" (dot) files. + * + * @param {Boolean} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.hidden = function(val){ + debug('hidden %s', val); + this._hidden = val; + return this; +}; + +/** + * Set index `path`, set to a falsy + * value to disable index support. + * + * @param {String|Boolean} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.index = function(path){ + debug('index %s', path); + this._index = path; + return this; +}; + +/** + * Set root `path`. + * + * @param {String} path + * @return {SendStream} + * @api public + */ + +SendStream.prototype.root = +SendStream.prototype.from = function(path){ + this._root = normalize(path); + return this; +}; + +/** + * Set max-age to `ms`. + * + * @param {Number} ms + * @return {SendStream} + * @api public + */ + +SendStream.prototype.maxage = function(ms){ + if (Infinity == ms) ms = 60 * 60 * 24 * 365 * 1000; + debug('max-age %d', ms); + this._maxage = ms; + return this; +}; + +/** + * Emit error with `status`. + * + * @param {Number} status + * @api private + */ + +SendStream.prototype.error = function(status, err){ + var res = this.res; + var msg = http.STATUS_CODES[status]; + err = err || new Error(msg); + err.status = status; + if (this.listeners('error').length) return this.emit('error', err); + res.statusCode = err.status; + res.end(msg); +}; + +/** + * Check if the pathname is potentially malicious. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isMalicious = function(){ + return !this._root && ~this.path.indexOf('..'); +}; + +/** + * Check if the pathname ends with "/". + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.hasTrailingSlash = function(){ + return '/' == this.path[this.path.length - 1]; +}; + +/** + * Check if the basename leads with ".". + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.hasLeadingDot = function(){ + return '.' == basename(this.path)[0]; +}; + +/** + * Check if this is a conditional GET request. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isConditionalGET = function(){ + return this.req.headers['if-none-match'] + || this.req.headers['if-modified-since']; +}; + +/** + * Strip content-* header fields. + * + * @api private + */ + +SendStream.prototype.removeContentHeaderFields = function(){ + var res = this.res; + Object.keys(res._headers).forEach(function(field){ + if (0 == field.indexOf('content')) { + res.removeHeader(field); + } + }); +}; + +/** + * Respond with 304 not modified. + * + * @api private + */ + +SendStream.prototype.notModified = function(){ + var res = this.res; + debug('not modified'); + this.removeContentHeaderFields(); + res.statusCode = 304; + res.end(); +}; + +/** + * Check if the request is cacheable, aka + * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isCachable = function(){ + var res = this.res; + return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode; +}; + +/** + * Handle stat() error. + * + * @param {Error} err + * @api private + */ + +SendStream.prototype.onStatError = function(err){ + var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']; + if (~notfound.indexOf(err.code)) return this.error(404, err); + this.error(500, err); +}; + +/** + * Check if the cache is fresh. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isFresh = function(){ + return fresh(this.req.headers, this.res._headers); +}; + +/** + * Redirect to `path`. + * + * @param {String} path + * @api private + */ + +SendStream.prototype.redirect = function(path){ + if (this.listeners('directory').length) return this.emit('directory'); + var res = this.res; + path += '/'; + res.statusCode = 301; + res.setHeader('Location', path); + res.end('Redirecting to ' + utils.escape(path)); +}; + +/** + * Pipe to `res. + * + * @param {Stream} res + * @return {Stream} res + * @api public + */ + +SendStream.prototype.pipe = function(res){ + var self = this + , args = arguments + , path = this.path + , root = this._root; + + // references + this.res = res; + + // invalid request uri + path = utils.decode(path); + if (-1 == path) return this.error(400); + + // null byte(s) + if (~path.indexOf('\0')) return this.error(400); + + // join / normalize from optional root dir + if (root) path = normalize(join(this._root, path)); + + // ".." is malicious without "root" + if (this.isMalicious()) return this.error(403); + + // malicious path + if (root && 0 != path.indexOf(root)) return this.error(403); + + // hidden file support + if (!this._hidden && this.hasLeadingDot()) return this.error(404); + + // index file support + if (this._index && this.hasTrailingSlash()) path += this._index; + + debug('stat "%s"', path); + fs.stat(path, function(err, stat){ + if (err) return self.onStatError(err); + if (stat.isDirectory()) return self.redirect(self.path); + self.send(path, stat); + }); + + return res; +}; + +/** + * Transfer `path`. + * + * @param {String} path + * @api public + */ + +SendStream.prototype.send = function(path, stat){ + var options = this.options; + var len = stat.size; + var res = this.res; + var req = this.req; + var ranges = req.headers.range; + var offset = options.start || 0; + + // set header fields + this.setHeader(stat); + + // set content-type + this.type(path); + + // conditional GET support + if (this.isConditionalGET() + && this.isCachable() + && this.isFresh()) { + return this.notModified(); + } + + // adjust len to start/end options + len = Math.max(0, len - offset); + if (options.end !== undefined) { + var bytes = options.end - offset + 1; + if (len > bytes) len = bytes; + } + + // Range support + if (ranges) { + ranges = parseRange(len, ranges); + + // unsatisfiable + if (-1 == ranges) { + res.setHeader('Content-Range', 'bytes */' + stat.size); + return this.error(416); + } + + // valid (syntactically invalid ranges are treated as a regular response) + if (-2 != ranges) { + options.start = offset + ranges[0].start; + options.end = offset + ranges[0].end; + + // Content-Range + res.statusCode = 206; + res.setHeader('Content-Range', 'bytes ' + + ranges[0].start + + '-' + + ranges[0].end + + '/' + + len); + len = options.end - options.start + 1; + } + } + + // content-length + res.setHeader('Content-Length', len); + + // HEAD support + if ('HEAD' == req.method) return res.end(); + + this.stream(path, options); +}; + +/** + * Stream `path` to the response. + * + * @param {String} path + * @param {Object} options + * @api private + */ + +SendStream.prototype.stream = function(path, options){ + // TODO: this is all lame, refactor meeee + var self = this; + var res = this.res; + var req = this.req; + + // pipe + var stream = fs.createReadStream(path, options); + this.emit('stream', stream); + stream.pipe(res); + + // socket closed, done with the fd + req.on('close', stream.destroy.bind(stream)); + + // error handling code-smell + stream.on('error', function(err){ + // no hope in responding + if (res._header) { + console.error(err.stack); + req.destroy(); + return; + } + + // 500 + err.status = 500; + self.emit('error', err); + }); + + // end + stream.on('end', function(){ + self.emit('end'); + }); +}; + +/** + * Set content-type based on `path` + * if it hasn't been explicitly set. + * + * @param {String} path + * @api private + */ + +SendStream.prototype.type = function(path){ + var res = this.res; + if (res.getHeader('Content-Type')) return; + var type = mime.lookup(path); + var charset = mime.charsets.lookup(type); + debug('content-type %s', type); + res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); +}; + +/** + * Set reaponse header fields, most + * fields may be pre-defined. + * + * @param {Object} stat + * @api private + */ + +SendStream.prototype.setHeader = function(stat){ + var res = this.res; + if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes'); + if (!res.getHeader('ETag')) res.setHeader('ETag', utils.etag(stat)); + if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString()); + if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000)); + if (!res.getHeader('Last-Modified')) res.setHeader('Last-Modified', stat.mtime.toUTCString()); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js new file mode 100644 index 0000000..950e5a2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js @@ -0,0 +1,47 @@ + +/** + * Return an ETag in the form of `"-"` + * from the given `stat`. + * + * @param {Object} stat + * @return {String} + * @api private + */ + +exports.etag = function(stat) { + return '"' + stat.size + '-' + Number(stat.mtime) + '"'; +}; + +/** + * decodeURIComponent. + * + * Allows V8 to only deoptimize this fn instead of all + * of send(). + * + * @param {String} path + * @api private + */ + +exports.decode = function(path){ + try { + return decodeURIComponent(path); + } catch (err) { + return -1; + } +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function(html){ + return String(html) + .replace(/&(?!\w+;)/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE new file mode 100644 index 0000000..451fc45 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010 Benjamin Thomas, Robert Kieffer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md new file mode 100644 index 0000000..d8b66a8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md @@ -0,0 +1,63 @@ +# mime + +Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. + +## Install + +Install with [npm](http://github.com/isaacs/npm): + + npm install mime + +## API - Queries + +### mime.lookup(path) +Get the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. + + var mime = require('mime'); + + mime.lookup('/path/to/file.txt'); // => 'text/plain' + mime.lookup('file.txt'); // => 'text/plain' + mime.lookup('.TXT'); // => 'text/plain' + mime.lookup('htm'); // => 'text/html' + +### mime.extension(type) +Get the default extension for `type` + + mime.extension('text/html'); // => 'html' + mime.extension('application/octet-stream'); // => 'bin' + +### mime.charsets.lookup() + +Map mime-type to charset + + mime.charsets.lookup('text/plain'); // => 'UTF-8' + +(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) + +## API - Defining Custom Types + +The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types). + +### mime.define() + +Add custom mime/extension mappings + + mime.define({ + 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], + 'application/x-my-type': ['x-mt', 'x-mtt'], + // etc ... + }); + + mime.lookup('x-sft'); // => 'text/x-some-format' + +The first entry in the extensions array is returned by `mime.extension()`. E.g. + + mime.extension('text/x-some-format'); // => 'x-sf' + +### mime.load(filepath) + +Load mappings from an Apache ".types" format file + + mime.load('./my_project.types'); + +The .types file format is simple - See the `types` dir for examples. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js new file mode 100644 index 0000000..1e00585 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js @@ -0,0 +1,104 @@ +var path = require('path'); +var fs = require('fs'); + +function Mime() { + // Map of extension -> mime type + this.types = Object.create(null); + + // Map of mime type -> extension + this.extensions = Object.create(null); +} + +/** + * Define mimetype -> extension mappings. Each key is a mime-type that maps + * to an array of extensions associated with the type. The first extension is + * used as the default extension for the type. + * + * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); + * + * @param map (Object) type definitions + */ +Mime.prototype.define = function (map) { + for (var type in map) { + var exts = map[type]; + + for (var i = 0; i < exts.length; i++) { + this.types[exts[i]] = type; + } + + // Default extension is the first one we encounter + if (!this.extensions[type]) { + this.extensions[type] = exts[0]; + } + } +}; + +/** + * Load an Apache2-style ".types" file + * + * This may be called multiple times (it's expected). Where files declare + * overlapping types/extensions, the last file wins. + * + * @param file (String) path of file to load. + */ +Mime.prototype.load = function(file) { + // Read file and split into lines + var map = {}, + content = fs.readFileSync(file, 'ascii'), + lines = content.split(/[\r\n]+/); + + lines.forEach(function(line) { + // Clean up whitespace/comments, and split into fields + var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); + map[fields.shift()] = fields; + }); + + this.define(map); +}; + +/** + * Lookup a mime type based on extension + */ +Mime.prototype.lookup = function(path, fallback) { + var ext = path.replace(/.*[\.\/]/, '').toLowerCase(); + + return this.types[ext] || fallback || this.default_type; +}; + +/** + * Return file extension associated with a mime type + */ +Mime.prototype.extension = function(mimeType) { + return this.extensions[mimeType]; +}; + +// Default instance +var mime = new Mime(); + +// Load local copy of +// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +mime.load(path.join(__dirname, 'types/mime.types')); + +// Load additional types from node.js community +mime.load(path.join(__dirname, 'types/node.types')); + +// Default type +mime.default_type = mime.lookup('bin'); + +// +// Additional API specific to the default instance +// + +mime.Mime = Mime; + +/** + * Lookup a charset based on mime type. + */ +mime.charsets = { + lookup: function(mimeType, fallback) { + // Assume text types are utf8 + return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; + } +} + +module.exports = mime; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json new file mode 100644 index 0000000..9a5114b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json @@ -0,0 +1,32 @@ +{ + "author": { + "name": "Robert Kieffer", + "email": "robert@broofa.com", + "url": "http://github.com/broofa" + }, + "contributors": [ + { + "name": "Benjamin Thomas", + "email": "benjamin@benjaminthomas.org", + "url": "http://github.com/bentomas" + } + ], + "dependencies": {}, + "description": "A comprehensive library for mime-type mapping", + "devDependencies": {}, + "keywords": [ + "util", + "mime" + ], + "main": "mime.js", + "name": "mime", + "repository": { + "url": "https://github.com/broofa/node-mime", + "type": "git" + }, + "version": "1.2.6", + "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", + "readmeFilename": "README.md", + "_id": "mime@1.2.6", + "_from": "mime@1.2.6" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js new file mode 100644 index 0000000..cbad034 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js @@ -0,0 +1,55 @@ +/** + * Usage: node test.js + */ + +var mime = require('./mime'); +var assert = require('assert'); + +function eq(a, b) { + console.log('Test: ' + a + ' === ' + b); + assert.strictEqual.apply(null, arguments); +} + +console.log(Object.keys(mime.extensions).length + ' types'); +console.log(Object.keys(mime.types).length + ' extensions\n'); + +// +// Test mime lookups +// + +eq('text/plain', mime.lookup('text.txt')); +eq('text/plain', mime.lookup('.text.txt')); +eq('text/plain', mime.lookup('.txt')); +eq('text/plain', mime.lookup('txt')); +eq('application/octet-stream', mime.lookup('text.nope')); +eq('fallback', mime.lookup('text.fallback', 'fallback')); +eq('application/octet-stream', mime.lookup('constructor')); +eq('text/plain', mime.lookup('TEXT.TXT')); +eq('text/event-stream', mime.lookup('text/event-stream')); +eq('application/x-web-app-manifest+json', mime.lookup('text.webapp')); + +// +// Test extensions +// + +eq('txt', mime.extension(mime.types.text)); +eq('html', mime.extension(mime.types.htm)); +eq('bin', mime.extension('application/octet-stream')); +eq(undefined, mime.extension('constructor')); + +// +// Test node types +// + +eq('application/octet-stream', mime.lookup('file.buffer')); +eq('audio/mp4', mime.lookup('file.m4a')); + +// +// Test charsets +// + +eq('UTF-8', mime.charsets.lookup('text/plain')); +eq(undefined, mime.charsets.lookup(mime.types.js)); +eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); + +console.log('\nOK'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types new file mode 100644 index 0000000..b3cae2e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types @@ -0,0 +1,1510 @@ +# This file maps Internet media types to unique file extension(s). +# Although created for httpd, this file is used by many software systems +# and has been placed in the public domain for unlimited redisribution. +# +# The table below contains both registered and (common) unregistered types. +# A type that has no unique extension can be ignored -- they are listed +# here to guide configurations toward known types and to make it easier to +# identify "new" types. File extensions are also commonly used to indicate +# content languages and encodings, so choose them carefully. +# +# Internet media types should be registered as described in RFC 4288. +# The registry is at . +# +# MIME type (lowercased) Extensions +# ============================================ ========== +# application/1d-interleaved-parityfec +# application/3gpp-ims+xml +# application/activemessage +application/andrew-inset ez +# application/applefile +application/applixware aw +application/atom+xml atom +application/atomcat+xml atomcat +# application/atomicmail +application/atomsvc+xml atomsvc +# application/auth-policy+xml +# application/batch-smtp +# application/beep+xml +# application/calendar+xml +# application/cals-1840 +# application/ccmp+xml +application/ccxml+xml ccxml +application/cdmi-capability cdmia +application/cdmi-container cdmic +application/cdmi-domain cdmid +application/cdmi-object cdmio +application/cdmi-queue cdmiq +# application/cea-2018+xml +# application/cellml+xml +# application/cfw +# application/cnrp+xml +# application/commonground +# application/conference-info+xml +# application/cpl+xml +# application/csta+xml +# application/cstadata+xml +application/cu-seeme cu +# application/cybercash +application/davmount+xml davmount +# application/dca-rft +# application/dec-dx +# application/dialog-info+xml +# application/dicom +# application/dns +# application/dskpp+xml +application/dssc+der dssc +application/dssc+xml xdssc +# application/dvcs +application/ecmascript ecma +# application/edi-consent +# application/edi-x12 +# application/edifact +application/emma+xml emma +# application/epp+xml +application/epub+zip epub +# application/eshop +# application/example +application/exi exi +# application/fastinfoset +# application/fastsoap +# application/fits +application/font-tdpfr pfr +# application/framework-attributes+xml +# application/h224 +# application/held+xml +# application/http +application/hyperstudio stk +# application/ibe-key-request+xml +# application/ibe-pkg-reply+xml +# application/ibe-pp-data +# application/iges +# application/im-iscomposing+xml +# application/index +# application/index.cmd +# application/index.obj +# application/index.response +# application/index.vnd +application/inkml+xml ink inkml +# application/iotp +application/ipfix ipfix +# application/ipp +# application/isup +application/java-archive jar +application/java-serialized-object ser +application/java-vm class +application/javascript js +application/json json +# application/kpml-request+xml +# application/kpml-response+xml +application/lost+xml lostxml +application/mac-binhex40 hqx +application/mac-compactpro cpt +# application/macwriteii +application/mads+xml mads +application/marc mrc +application/marcxml+xml mrcx +application/mathematica ma nb mb +# application/mathml-content+xml +# application/mathml-presentation+xml +application/mathml+xml mathml +# application/mbms-associated-procedure-description+xml +# application/mbms-deregister+xml +# application/mbms-envelope+xml +# application/mbms-msk+xml +# application/mbms-msk-response+xml +# application/mbms-protection-description+xml +# application/mbms-reception-report+xml +# application/mbms-register+xml +# application/mbms-register-response+xml +# application/mbms-user-service-description+xml +application/mbox mbox +# application/media_control+xml +application/mediaservercontrol+xml mscml +application/metalink4+xml meta4 +application/mets+xml mets +# application/mikey +application/mods+xml mods +# application/moss-keys +# application/moss-signature +# application/mosskey-data +# application/mosskey-request +application/mp21 m21 mp21 +application/mp4 mp4s +# application/mpeg4-generic +# application/mpeg4-iod +# application/mpeg4-iod-xmt +# application/msc-ivr+xml +# application/msc-mixer+xml +application/msword doc dot +application/mxf mxf +# application/nasdata +# application/news-checkgroups +# application/news-groupinfo +# application/news-transmission +# application/nss +# application/ocsp-request +# application/ocsp-response +application/octet-stream bin dms lha lrf lzh so iso dmg dist distz pkg bpk dump elc deploy +application/oda oda +application/oebps-package+xml opf +application/ogg ogx +application/onenote onetoc onetoc2 onetmp onepkg +application/oxps oxps +# application/parityfec +application/patch-ops-error+xml xer +application/pdf pdf +application/pgp-encrypted pgp +# application/pgp-keys +application/pgp-signature asc sig +application/pics-rules prf +# application/pidf+xml +# application/pidf-diff+xml +application/pkcs10 p10 +application/pkcs7-mime p7m p7c +application/pkcs7-signature p7s +application/pkcs8 p8 +application/pkix-attr-cert ac +application/pkix-cert cer +application/pkix-crl crl +application/pkix-pkipath pkipath +application/pkixcmp pki +application/pls+xml pls +# application/poc-settings+xml +application/postscript ai eps ps +# application/prs.alvestrand.titrax-sheet +application/prs.cww cww +# application/prs.nprend +# application/prs.plucker +# application/prs.rdf-xml-crypt +# application/prs.xsf+xml +application/pskc+xml pskcxml +# application/qsig +application/rdf+xml rdf +application/reginfo+xml rif +application/relax-ng-compact-syntax rnc +# application/remote-printing +application/resource-lists+xml rl +application/resource-lists-diff+xml rld +# application/riscos +# application/rlmi+xml +application/rls-services+xml rs +application/rpki-ghostbusters gbr +application/rpki-manifest mft +application/rpki-roa roa +# application/rpki-updown +application/rsd+xml rsd +application/rss+xml rss +application/rtf rtf +# application/rtx +# application/samlassertion+xml +# application/samlmetadata+xml +application/sbml+xml sbml +application/scvp-cv-request scq +application/scvp-cv-response scs +application/scvp-vp-request spq +application/scvp-vp-response spp +application/sdp sdp +# application/set-payment +application/set-payment-initiation setpay +# application/set-registration +application/set-registration-initiation setreg +# application/sgml +# application/sgml-open-catalog +application/shf+xml shf +# application/sieve +# application/simple-filter+xml +# application/simple-message-summary +# application/simplesymbolcontainer +# application/slate +# application/smil +application/smil+xml smi smil +# application/soap+fastinfoset +# application/soap+xml +application/sparql-query rq +application/sparql-results+xml srx +# application/spirits-event+xml +application/srgs gram +application/srgs+xml grxml +application/sru+xml sru +application/ssml+xml ssml +# application/tamp-apex-update +# application/tamp-apex-update-confirm +# application/tamp-community-update +# application/tamp-community-update-confirm +# application/tamp-error +# application/tamp-sequence-adjust +# application/tamp-sequence-adjust-confirm +# application/tamp-status-query +# application/tamp-status-response +# application/tamp-update +# application/tamp-update-confirm +application/tei+xml tei teicorpus +application/thraud+xml tfi +# application/timestamp-query +# application/timestamp-reply +application/timestamped-data tsd +# application/tve-trigger +# application/ulpfec +# application/vcard+xml +# application/vemmi +# application/vividence.scriptfile +# application/vnd.3gpp.bsf+xml +application/vnd.3gpp.pic-bw-large plb +application/vnd.3gpp.pic-bw-small psb +application/vnd.3gpp.pic-bw-var pvb +# application/vnd.3gpp.sms +# application/vnd.3gpp2.bcmcsinfo+xml +# application/vnd.3gpp2.sms +application/vnd.3gpp2.tcap tcap +application/vnd.3m.post-it-notes pwn +application/vnd.accpac.simply.aso aso +application/vnd.accpac.simply.imp imp +application/vnd.acucobol acu +application/vnd.acucorp atc acutc +application/vnd.adobe.air-application-installer-package+zip air +application/vnd.adobe.fxp fxp fxpl +# application/vnd.adobe.partial-upload +application/vnd.adobe.xdp+xml xdp +application/vnd.adobe.xfdf xfdf +# application/vnd.aether.imp +# application/vnd.ah-barcode +application/vnd.ahead.space ahead +application/vnd.airzip.filesecure.azf azf +application/vnd.airzip.filesecure.azs azs +application/vnd.amazon.ebook azw +application/vnd.americandynamics.acc acc +application/vnd.amiga.ami ami +# application/vnd.amundsen.maze+xml +application/vnd.android.package-archive apk +application/vnd.anser-web-certificate-issue-initiation cii +application/vnd.anser-web-funds-transfer-initiation fti +application/vnd.antix.game-component atx +application/vnd.apple.installer+xml mpkg +application/vnd.apple.mpegurl m3u8 +# application/vnd.arastra.swi +application/vnd.aristanetworks.swi swi +application/vnd.astraea-software.iota iota +application/vnd.audiograph aep +# application/vnd.autopackage +# application/vnd.avistar+xml +application/vnd.blueice.multipass mpm +# application/vnd.bluetooth.ep.oob +application/vnd.bmi bmi +application/vnd.businessobjects rep +# application/vnd.cab-jscript +# application/vnd.canon-cpdl +# application/vnd.canon-lips +# application/vnd.cendio.thinlinc.clientconf +application/vnd.chemdraw+xml cdxml +application/vnd.chipnuts.karaoke-mmd mmd +application/vnd.cinderella cdy +# application/vnd.cirpack.isdn-ext +application/vnd.claymore cla +application/vnd.cloanto.rp9 rp9 +application/vnd.clonk.c4group c4g c4d c4f c4p c4u +application/vnd.cluetrust.cartomobile-config c11amc +application/vnd.cluetrust.cartomobile-config-pkg c11amz +# application/vnd.collection+json +# application/vnd.commerce-battelle +application/vnd.commonspace csp +application/vnd.contact.cmsg cdbcmsg +application/vnd.cosmocaller cmc +application/vnd.crick.clicker clkx +application/vnd.crick.clicker.keyboard clkk +application/vnd.crick.clicker.palette clkp +application/vnd.crick.clicker.template clkt +application/vnd.crick.clicker.wordbank clkw +application/vnd.criticaltools.wbs+xml wbs +application/vnd.ctc-posml pml +# application/vnd.ctct.ws+xml +# application/vnd.cups-pdf +# application/vnd.cups-postscript +application/vnd.cups-ppd ppd +# application/vnd.cups-raster +# application/vnd.cups-raw +# application/vnd.curl +application/vnd.curl.car car +application/vnd.curl.pcurl pcurl +# application/vnd.cybank +application/vnd.data-vision.rdz rdz +application/vnd.dece.data uvf uvvf uvd uvvd +application/vnd.dece.ttml+xml uvt uvvt +application/vnd.dece.unspecified uvx uvvx +application/vnd.dece.zip uvz uvvz +application/vnd.denovo.fcselayout-link fe_launch +# application/vnd.dir-bi.plate-dl-nosuffix +application/vnd.dna dna +application/vnd.dolby.mlp mlp +# application/vnd.dolby.mobile.1 +# application/vnd.dolby.mobile.2 +application/vnd.dpgraph dpg +application/vnd.dreamfactory dfac +application/vnd.dvb.ait ait +# application/vnd.dvb.dvbj +# application/vnd.dvb.esgcontainer +# application/vnd.dvb.ipdcdftnotifaccess +# application/vnd.dvb.ipdcesgaccess +# application/vnd.dvb.ipdcesgaccess2 +# application/vnd.dvb.ipdcesgpdd +# application/vnd.dvb.ipdcroaming +# application/vnd.dvb.iptv.alfec-base +# application/vnd.dvb.iptv.alfec-enhancement +# application/vnd.dvb.notif-aggregate-root+xml +# application/vnd.dvb.notif-container+xml +# application/vnd.dvb.notif-generic+xml +# application/vnd.dvb.notif-ia-msglist+xml +# application/vnd.dvb.notif-ia-registration-request+xml +# application/vnd.dvb.notif-ia-registration-response+xml +# application/vnd.dvb.notif-init+xml +# application/vnd.dvb.pfr +application/vnd.dvb.service svc +# application/vnd.dxr +application/vnd.dynageo geo +# application/vnd.easykaraoke.cdgdownload +# application/vnd.ecdis-update +application/vnd.ecowin.chart mag +# application/vnd.ecowin.filerequest +# application/vnd.ecowin.fileupdate +# application/vnd.ecowin.series +# application/vnd.ecowin.seriesrequest +# application/vnd.ecowin.seriesupdate +# application/vnd.emclient.accessrequest+xml +application/vnd.enliven nml +# application/vnd.eprints.data+xml +application/vnd.epson.esf esf +application/vnd.epson.msf msf +application/vnd.epson.quickanime qam +application/vnd.epson.salt slt +application/vnd.epson.ssf ssf +# application/vnd.ericsson.quickcall +application/vnd.eszigno3+xml es3 et3 +# application/vnd.etsi.aoc+xml +# application/vnd.etsi.cug+xml +# application/vnd.etsi.iptvcommand+xml +# application/vnd.etsi.iptvdiscovery+xml +# application/vnd.etsi.iptvprofile+xml +# application/vnd.etsi.iptvsad-bc+xml +# application/vnd.etsi.iptvsad-cod+xml +# application/vnd.etsi.iptvsad-npvr+xml +# application/vnd.etsi.iptvservice+xml +# application/vnd.etsi.iptvsync+xml +# application/vnd.etsi.iptvueprofile+xml +# application/vnd.etsi.mcid+xml +# application/vnd.etsi.overload-control-policy-dataset+xml +# application/vnd.etsi.sci+xml +# application/vnd.etsi.simservs+xml +# application/vnd.etsi.tsl+xml +# application/vnd.etsi.tsl.der +# application/vnd.eudora.data +application/vnd.ezpix-album ez2 +application/vnd.ezpix-package ez3 +# application/vnd.f-secure.mobile +application/vnd.fdf fdf +application/vnd.fdsn.mseed mseed +application/vnd.fdsn.seed seed dataless +# application/vnd.ffsns +# application/vnd.fints +application/vnd.flographit gph +application/vnd.fluxtime.clip ftc +# application/vnd.font-fontforge-sfd +application/vnd.framemaker fm frame maker book +application/vnd.frogans.fnc fnc +application/vnd.frogans.ltf ltf +application/vnd.fsc.weblaunch fsc +application/vnd.fujitsu.oasys oas +application/vnd.fujitsu.oasys2 oa2 +application/vnd.fujitsu.oasys3 oa3 +application/vnd.fujitsu.oasysgp fg5 +application/vnd.fujitsu.oasysprs bh2 +# application/vnd.fujixerox.art-ex +# application/vnd.fujixerox.art4 +# application/vnd.fujixerox.hbpl +application/vnd.fujixerox.ddd ddd +application/vnd.fujixerox.docuworks xdw +application/vnd.fujixerox.docuworks.binder xbd +# application/vnd.fut-misnet +application/vnd.fuzzysheet fzs +application/vnd.genomatix.tuxedo txd +# application/vnd.geocube+xml +application/vnd.geogebra.file ggb +application/vnd.geogebra.tool ggt +application/vnd.geometry-explorer gex gre +application/vnd.geonext gxt +application/vnd.geoplan g2w +application/vnd.geospace g3w +# application/vnd.globalplatform.card-content-mgt +# application/vnd.globalplatform.card-content-mgt-response +application/vnd.gmx gmx +application/vnd.google-earth.kml+xml kml +application/vnd.google-earth.kmz kmz +application/vnd.grafeq gqf gqs +# application/vnd.gridmp +application/vnd.groove-account gac +application/vnd.groove-help ghf +application/vnd.groove-identity-message gim +application/vnd.groove-injector grv +application/vnd.groove-tool-message gtm +application/vnd.groove-tool-template tpl +application/vnd.groove-vcard vcg +# application/vnd.hal+json +application/vnd.hal+xml hal +application/vnd.handheld-entertainment+xml zmm +application/vnd.hbci hbci +# application/vnd.hcl-bireports +application/vnd.hhe.lesson-player les +application/vnd.hp-hpgl hpgl +application/vnd.hp-hpid hpid +application/vnd.hp-hps hps +application/vnd.hp-jlyt jlt +application/vnd.hp-pcl pcl +application/vnd.hp-pclxl pclxl +# application/vnd.httphone +application/vnd.hydrostatix.sof-data sfd-hdstx +application/vnd.hzn-3d-crossword x3d +# application/vnd.ibm.afplinedata +# application/vnd.ibm.electronic-media +application/vnd.ibm.minipay mpy +application/vnd.ibm.modcap afp listafp list3820 +application/vnd.ibm.rights-management irm +application/vnd.ibm.secure-container sc +application/vnd.iccprofile icc icm +application/vnd.igloader igl +application/vnd.immervision-ivp ivp +application/vnd.immervision-ivu ivu +# application/vnd.informedcontrol.rms+xml +# application/vnd.informix-visionary +# application/vnd.infotech.project +# application/vnd.infotech.project+xml +application/vnd.insors.igm igm +application/vnd.intercon.formnet xpw xpx +application/vnd.intergeo i2g +# application/vnd.intertrust.digibox +# application/vnd.intertrust.nncp +application/vnd.intu.qbo qbo +application/vnd.intu.qfx qfx +# application/vnd.iptc.g2.conceptitem+xml +# application/vnd.iptc.g2.knowledgeitem+xml +# application/vnd.iptc.g2.newsitem+xml +# application/vnd.iptc.g2.packageitem+xml +application/vnd.ipunplugged.rcprofile rcprofile +application/vnd.irepository.package+xml irp +application/vnd.is-xpr xpr +application/vnd.isac.fcs fcs +application/vnd.jam jam +# application/vnd.japannet-directory-service +# application/vnd.japannet-jpnstore-wakeup +# application/vnd.japannet-payment-wakeup +# application/vnd.japannet-registration +# application/vnd.japannet-registration-wakeup +# application/vnd.japannet-setstore-wakeup +# application/vnd.japannet-verification +# application/vnd.japannet-verification-wakeup +application/vnd.jcp.javame.midlet-rms rms +application/vnd.jisp jisp +application/vnd.joost.joda-archive joda +application/vnd.kahootz ktz ktr +application/vnd.kde.karbon karbon +application/vnd.kde.kchart chrt +application/vnd.kde.kformula kfo +application/vnd.kde.kivio flw +application/vnd.kde.kontour kon +application/vnd.kde.kpresenter kpr kpt +application/vnd.kde.kspread ksp +application/vnd.kde.kword kwd kwt +application/vnd.kenameaapp htke +application/vnd.kidspiration kia +application/vnd.kinar kne knp +application/vnd.koan skp skd skt skm +application/vnd.kodak-descriptor sse +application/vnd.las.las+xml lasxml +# application/vnd.liberty-request+xml +application/vnd.llamagraphics.life-balance.desktop lbd +application/vnd.llamagraphics.life-balance.exchange+xml lbe +application/vnd.lotus-1-2-3 123 +application/vnd.lotus-approach apr +application/vnd.lotus-freelance pre +application/vnd.lotus-notes nsf +application/vnd.lotus-organizer org +application/vnd.lotus-screencam scm +application/vnd.lotus-wordpro lwp +application/vnd.macports.portpkg portpkg +# application/vnd.marlin.drm.actiontoken+xml +# application/vnd.marlin.drm.conftoken+xml +# application/vnd.marlin.drm.license+xml +# application/vnd.marlin.drm.mdcf +application/vnd.mcd mcd +application/vnd.medcalcdata mc1 +application/vnd.mediastation.cdkey cdkey +# application/vnd.meridian-slingshot +application/vnd.mfer mwf +application/vnd.mfmp mfm +application/vnd.micrografx.flo flo +application/vnd.micrografx.igx igx +application/vnd.mif mif +# application/vnd.minisoft-hp3000-save +# application/vnd.mitsubishi.misty-guard.trustweb +application/vnd.mobius.daf daf +application/vnd.mobius.dis dis +application/vnd.mobius.mbk mbk +application/vnd.mobius.mqy mqy +application/vnd.mobius.msl msl +application/vnd.mobius.plc plc +application/vnd.mobius.txf txf +application/vnd.mophun.application mpn +application/vnd.mophun.certificate mpc +# application/vnd.motorola.flexsuite +# application/vnd.motorola.flexsuite.adsi +# application/vnd.motorola.flexsuite.fis +# application/vnd.motorola.flexsuite.gotap +# application/vnd.motorola.flexsuite.kmr +# application/vnd.motorola.flexsuite.ttc +# application/vnd.motorola.flexsuite.wem +# application/vnd.motorola.iprm +application/vnd.mozilla.xul+xml xul +application/vnd.ms-artgalry cil +# application/vnd.ms-asf +application/vnd.ms-cab-compressed cab +application/vnd.ms-excel xls xlm xla xlc xlt xlw +application/vnd.ms-excel.addin.macroenabled.12 xlam +application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb +application/vnd.ms-excel.sheet.macroenabled.12 xlsm +application/vnd.ms-excel.template.macroenabled.12 xltm +application/vnd.ms-fontobject eot +application/vnd.ms-htmlhelp chm +application/vnd.ms-ims ims +application/vnd.ms-lrm lrm +# application/vnd.ms-office.activex+xml +application/vnd.ms-officetheme thmx +application/vnd.ms-pki.seccat cat +application/vnd.ms-pki.stl stl +# application/vnd.ms-playready.initiator+xml +application/vnd.ms-powerpoint ppt pps pot +application/vnd.ms-powerpoint.addin.macroenabled.12 ppam +application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm +application/vnd.ms-powerpoint.slide.macroenabled.12 sldm +application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm +application/vnd.ms-powerpoint.template.macroenabled.12 potm +application/vnd.ms-project mpp mpt +# application/vnd.ms-tnef +# application/vnd.ms-wmdrm.lic-chlg-req +# application/vnd.ms-wmdrm.lic-resp +# application/vnd.ms-wmdrm.meter-chlg-req +# application/vnd.ms-wmdrm.meter-resp +application/vnd.ms-word.document.macroenabled.12 docm +application/vnd.ms-word.template.macroenabled.12 dotm +application/vnd.ms-works wps wks wcm wdb +application/vnd.ms-wpl wpl +application/vnd.ms-xpsdocument xps +application/vnd.mseq mseq +# application/vnd.msign +# application/vnd.multiad.creator +# application/vnd.multiad.creator.cif +# application/vnd.music-niff +application/vnd.musician mus +application/vnd.muvee.style msty +application/vnd.mynfc taglet +# application/vnd.ncd.control +# application/vnd.ncd.reference +# application/vnd.nervana +# application/vnd.netfpx +application/vnd.neurolanguage.nlu nlu +application/vnd.noblenet-directory nnd +application/vnd.noblenet-sealer nns +application/vnd.noblenet-web nnw +# application/vnd.nokia.catalogs +# application/vnd.nokia.conml+wbxml +# application/vnd.nokia.conml+xml +# application/vnd.nokia.isds-radio-presets +# application/vnd.nokia.iptv.config+xml +# application/vnd.nokia.landmark+wbxml +# application/vnd.nokia.landmark+xml +# application/vnd.nokia.landmarkcollection+xml +# application/vnd.nokia.n-gage.ac+xml +application/vnd.nokia.n-gage.data ngdat +application/vnd.nokia.n-gage.symbian.install n-gage +# application/vnd.nokia.ncd +# application/vnd.nokia.pcd+wbxml +# application/vnd.nokia.pcd+xml +application/vnd.nokia.radio-preset rpst +application/vnd.nokia.radio-presets rpss +application/vnd.novadigm.edm edm +application/vnd.novadigm.edx edx +application/vnd.novadigm.ext ext +# application/vnd.ntt-local.file-transfer +# application/vnd.ntt-local.sip-ta_remote +# application/vnd.ntt-local.sip-ta_tcp_stream +application/vnd.oasis.opendocument.chart odc +application/vnd.oasis.opendocument.chart-template otc +application/vnd.oasis.opendocument.database odb +application/vnd.oasis.opendocument.formula odf +application/vnd.oasis.opendocument.formula-template odft +application/vnd.oasis.opendocument.graphics odg +application/vnd.oasis.opendocument.graphics-template otg +application/vnd.oasis.opendocument.image odi +application/vnd.oasis.opendocument.image-template oti +application/vnd.oasis.opendocument.presentation odp +application/vnd.oasis.opendocument.presentation-template otp +application/vnd.oasis.opendocument.spreadsheet ods +application/vnd.oasis.opendocument.spreadsheet-template ots +application/vnd.oasis.opendocument.text odt +application/vnd.oasis.opendocument.text-master odm +application/vnd.oasis.opendocument.text-template ott +application/vnd.oasis.opendocument.text-web oth +# application/vnd.obn +# application/vnd.oftn.l10n+json +# application/vnd.oipf.contentaccessdownload+xml +# application/vnd.oipf.contentaccessstreaming+xml +# application/vnd.oipf.cspg-hexbinary +# application/vnd.oipf.dae.svg+xml +# application/vnd.oipf.dae.xhtml+xml +# application/vnd.oipf.mippvcontrolmessage+xml +# application/vnd.oipf.pae.gem +# application/vnd.oipf.spdiscovery+xml +# application/vnd.oipf.spdlist+xml +# application/vnd.oipf.ueprofile+xml +# application/vnd.oipf.userprofile+xml +application/vnd.olpc-sugar xo +# application/vnd.oma-scws-config +# application/vnd.oma-scws-http-request +# application/vnd.oma-scws-http-response +# application/vnd.oma.bcast.associated-procedure-parameter+xml +# application/vnd.oma.bcast.drm-trigger+xml +# application/vnd.oma.bcast.imd+xml +# application/vnd.oma.bcast.ltkm +# application/vnd.oma.bcast.notification+xml +# application/vnd.oma.bcast.provisioningtrigger +# application/vnd.oma.bcast.sgboot +# application/vnd.oma.bcast.sgdd+xml +# application/vnd.oma.bcast.sgdu +# application/vnd.oma.bcast.simple-symbol-container +# application/vnd.oma.bcast.smartcard-trigger+xml +# application/vnd.oma.bcast.sprov+xml +# application/vnd.oma.bcast.stkm +# application/vnd.oma.cab-address-book+xml +# application/vnd.oma.cab-feature-handler+xml +# application/vnd.oma.cab-pcc+xml +# application/vnd.oma.cab-user-prefs+xml +# application/vnd.oma.dcd +# application/vnd.oma.dcdc +application/vnd.oma.dd2+xml dd2 +# application/vnd.oma.drm.risd+xml +# application/vnd.oma.group-usage-list+xml +# application/vnd.oma.pal+xml +# application/vnd.oma.poc.detailed-progress-report+xml +# application/vnd.oma.poc.final-report+xml +# application/vnd.oma.poc.groups+xml +# application/vnd.oma.poc.invocation-descriptor+xml +# application/vnd.oma.poc.optimized-progress-report+xml +# application/vnd.oma.push +# application/vnd.oma.scidm.messages+xml +# application/vnd.oma.xcap-directory+xml +# application/vnd.omads-email+xml +# application/vnd.omads-file+xml +# application/vnd.omads-folder+xml +# application/vnd.omaloc-supl-init +application/vnd.openofficeorg.extension oxt +# application/vnd.openxmlformats-officedocument.custom-properties+xml +# application/vnd.openxmlformats-officedocument.customxmlproperties+xml +# application/vnd.openxmlformats-officedocument.drawing+xml +# application/vnd.openxmlformats-officedocument.drawingml.chart+xml +# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml +# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml +# application/vnd.openxmlformats-officedocument.extended-properties+xml +# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml +# application/vnd.openxmlformats-officedocument.presentationml.comments+xml +# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml +# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml +application/vnd.openxmlformats-officedocument.presentationml.presentation pptx +# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml +application/vnd.openxmlformats-officedocument.presentationml.slide sldx +# application/vnd.openxmlformats-officedocument.presentationml.slide+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml +# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml +application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx +# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml +# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml +# application/vnd.openxmlformats-officedocument.presentationml.tags+xml +application/vnd.openxmlformats-officedocument.presentationml.template potx +# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml +# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml +application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx +# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml +# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml +# application/vnd.openxmlformats-officedocument.theme+xml +# application/vnd.openxmlformats-officedocument.themeoverride+xml +# application/vnd.openxmlformats-officedocument.vmldrawing +# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.document docx +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml +application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx +# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml +# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml +# application/vnd.openxmlformats-package.core-properties+xml +# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml +# application/vnd.openxmlformats-package.relationships+xml +# application/vnd.quobject-quoxdocument +# application/vnd.osa.netdeploy +application/vnd.osgeo.mapguide.package mgp +# application/vnd.osgi.bundle +application/vnd.osgi.dp dp +# application/vnd.otps.ct-kip+xml +application/vnd.palm pdb pqa oprc +# application/vnd.paos.xml +application/vnd.pawaafile paw +application/vnd.pg.format str +application/vnd.pg.osasli ei6 +# application/vnd.piaccess.application-licence +application/vnd.picsel efif +application/vnd.pmi.widget wg +# application/vnd.poc.group-advertisement+xml +application/vnd.pocketlearn plf +application/vnd.powerbuilder6 pbd +# application/vnd.powerbuilder6-s +# application/vnd.powerbuilder7 +# application/vnd.powerbuilder7-s +# application/vnd.powerbuilder75 +# application/vnd.powerbuilder75-s +# application/vnd.preminet +application/vnd.previewsystems.box box +application/vnd.proteus.magazine mgz +application/vnd.publishare-delta-tree qps +application/vnd.pvi.ptid1 ptid +# application/vnd.pwg-multiplexed +# application/vnd.pwg-xhtml-print+xml +# application/vnd.qualcomm.brew-app-res +application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb +# application/vnd.radisys.moml+xml +# application/vnd.radisys.msml+xml +# application/vnd.radisys.msml-audit+xml +# application/vnd.radisys.msml-audit-conf+xml +# application/vnd.radisys.msml-audit-conn+xml +# application/vnd.radisys.msml-audit-dialog+xml +# application/vnd.radisys.msml-audit-stream+xml +# application/vnd.radisys.msml-conf+xml +# application/vnd.radisys.msml-dialog+xml +# application/vnd.radisys.msml-dialog-base+xml +# application/vnd.radisys.msml-dialog-fax-detect+xml +# application/vnd.radisys.msml-dialog-fax-sendrecv+xml +# application/vnd.radisys.msml-dialog-group+xml +# application/vnd.radisys.msml-dialog-speech+xml +# application/vnd.radisys.msml-dialog-transform+xml +# application/vnd.rainstor.data +# application/vnd.rapid +application/vnd.realvnc.bed bed +application/vnd.recordare.musicxml mxl +application/vnd.recordare.musicxml+xml musicxml +# application/vnd.renlearn.rlprint +application/vnd.rig.cryptonote cryptonote +application/vnd.rim.cod cod +application/vnd.rn-realmedia rm +application/vnd.route66.link66+xml link66 +# application/vnd.ruckus.download +# application/vnd.s3sms +application/vnd.sailingtracker.track st +# application/vnd.sbm.cid +# application/vnd.sbm.mid2 +# application/vnd.scribus +# application/vnd.sealed.3df +# application/vnd.sealed.csf +# application/vnd.sealed.doc +# application/vnd.sealed.eml +# application/vnd.sealed.mht +# application/vnd.sealed.net +# application/vnd.sealed.ppt +# application/vnd.sealed.tiff +# application/vnd.sealed.xls +# application/vnd.sealedmedia.softseal.html +# application/vnd.sealedmedia.softseal.pdf +application/vnd.seemail see +application/vnd.sema sema +application/vnd.semd semd +application/vnd.semf semf +application/vnd.shana.informed.formdata ifm +application/vnd.shana.informed.formtemplate itp +application/vnd.shana.informed.interchange iif +application/vnd.shana.informed.package ipk +application/vnd.simtech-mindmapper twd twds +application/vnd.smaf mmf +# application/vnd.smart.notebook +application/vnd.smart.teacher teacher +# application/vnd.software602.filler.form+xml +# application/vnd.software602.filler.form-xml-zip +application/vnd.solent.sdkm+xml sdkm sdkd +application/vnd.spotfire.dxp dxp +application/vnd.spotfire.sfs sfs +# application/vnd.sss-cod +# application/vnd.sss-dtf +# application/vnd.sss-ntf +application/vnd.stardivision.calc sdc +application/vnd.stardivision.draw sda +application/vnd.stardivision.impress sdd +application/vnd.stardivision.math smf +application/vnd.stardivision.writer sdw vor +application/vnd.stardivision.writer-global sgl +application/vnd.stepmania.package smzip +application/vnd.stepmania.stepchart sm +# application/vnd.street-stream +application/vnd.sun.xml.calc sxc +application/vnd.sun.xml.calc.template stc +application/vnd.sun.xml.draw sxd +application/vnd.sun.xml.draw.template std +application/vnd.sun.xml.impress sxi +application/vnd.sun.xml.impress.template sti +application/vnd.sun.xml.math sxm +application/vnd.sun.xml.writer sxw +application/vnd.sun.xml.writer.global sxg +application/vnd.sun.xml.writer.template stw +# application/vnd.sun.wadl+xml +application/vnd.sus-calendar sus susp +application/vnd.svd svd +# application/vnd.swiftview-ics +application/vnd.symbian.install sis sisx +application/vnd.syncml+xml xsm +application/vnd.syncml.dm+wbxml bdm +application/vnd.syncml.dm+xml xdm +# application/vnd.syncml.dm.notification +# application/vnd.syncml.ds.notification +application/vnd.tao.intent-module-archive tao +application/vnd.tcpdump.pcap pcap cap dmp +application/vnd.tmobile-livetv tmo +application/vnd.trid.tpt tpt +application/vnd.triscape.mxs mxs +application/vnd.trueapp tra +# application/vnd.truedoc +# application/vnd.ubisoft.webplayer +application/vnd.ufdl ufd ufdl +application/vnd.uiq.theme utz +application/vnd.umajin umj +application/vnd.unity unityweb +application/vnd.uoml+xml uoml +# application/vnd.uplanet.alert +# application/vnd.uplanet.alert-wbxml +# application/vnd.uplanet.bearer-choice +# application/vnd.uplanet.bearer-choice-wbxml +# application/vnd.uplanet.cacheop +# application/vnd.uplanet.cacheop-wbxml +# application/vnd.uplanet.channel +# application/vnd.uplanet.channel-wbxml +# application/vnd.uplanet.list +# application/vnd.uplanet.list-wbxml +# application/vnd.uplanet.listcmd +# application/vnd.uplanet.listcmd-wbxml +# application/vnd.uplanet.signal +application/vnd.vcx vcx +# application/vnd.vd-study +# application/vnd.vectorworks +# application/vnd.verimatrix.vcas +# application/vnd.vidsoft.vidconference +application/vnd.visio vsd vst vss vsw +application/vnd.visionary vis +# application/vnd.vividence.scriptfile +application/vnd.vsf vsf +# application/vnd.wap.sic +# application/vnd.wap.slc +application/vnd.wap.wbxml wbxml +application/vnd.wap.wmlc wmlc +application/vnd.wap.wmlscriptc wmlsc +application/vnd.webturbo wtb +# application/vnd.wfa.wsc +# application/vnd.wmc +# application/vnd.wmf.bootstrap +# application/vnd.wolfram.mathematica +# application/vnd.wolfram.mathematica.package +application/vnd.wolfram.player nbp +application/vnd.wordperfect wpd +application/vnd.wqd wqd +# application/vnd.wrq-hp3000-labelled +application/vnd.wt.stf stf +# application/vnd.wv.csp+wbxml +# application/vnd.wv.csp+xml +# application/vnd.wv.ssp+xml +application/vnd.xara xar +application/vnd.xfdl xfdl +# application/vnd.xfdl.webform +# application/vnd.xmi+xml +# application/vnd.xmpie.cpkg +# application/vnd.xmpie.dpkg +# application/vnd.xmpie.plan +# application/vnd.xmpie.ppkg +# application/vnd.xmpie.xlim +application/vnd.yamaha.hv-dic hvd +application/vnd.yamaha.hv-script hvs +application/vnd.yamaha.hv-voice hvp +application/vnd.yamaha.openscoreformat osf +application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg +# application/vnd.yamaha.remote-setup +application/vnd.yamaha.smaf-audio saf +application/vnd.yamaha.smaf-phrase spf +# application/vnd.yamaha.through-ngn +# application/vnd.yamaha.tunnel-udpencap +application/vnd.yellowriver-custom-menu cmp +application/vnd.zul zir zirz +application/vnd.zzazz.deck+xml zaz +application/voicexml+xml vxml +# application/vq-rtcpxr +# application/watcherinfo+xml +# application/whoispp-query +# application/whoispp-response +application/widget wgt +application/winhlp hlp +# application/wita +# application/wordperfect5.1 +application/wsdl+xml wsdl +application/wspolicy+xml wspolicy +application/x-7z-compressed 7z +application/x-abiword abw +application/x-ace-compressed ace +application/x-authorware-bin aab x32 u32 vox +application/x-authorware-map aam +application/x-authorware-seg aas +application/x-bcpio bcpio +application/x-bittorrent torrent +application/x-bzip bz +application/x-bzip2 bz2 boz +application/x-cdlink vcd +application/x-chat chat +application/x-chess-pgn pgn +# application/x-compress +application/x-cpio cpio +application/x-csh csh +application/x-debian-package deb udeb +application/x-director dir dcr dxr cst cct cxt w3d fgd swa +application/x-doom wad +application/x-dtbncx+xml ncx +application/x-dtbook+xml dtb +application/x-dtbresource+xml res +application/x-dvi dvi +application/x-font-bdf bdf +# application/x-font-dos +# application/x-font-framemaker +application/x-font-ghostscript gsf +# application/x-font-libgrx +application/x-font-linux-psf psf +application/x-font-otf otf +application/x-font-pcf pcf +application/x-font-snf snf +# application/x-font-speedo +# application/x-font-sunos-news +application/x-font-ttf ttf ttc +application/x-font-type1 pfa pfb pfm afm +application/x-font-woff woff +# application/x-font-vfont +application/x-futuresplash spl +application/x-gnumeric gnumeric +application/x-gtar gtar +# application/x-gzip +application/x-hdf hdf +application/x-java-jnlp-file jnlp +application/x-latex latex +application/x-mobipocket-ebook prc mobi +application/x-ms-application application +application/x-ms-wmd wmd +application/x-ms-wmz wmz +application/x-ms-xbap xbap +application/x-msaccess mdb +application/x-msbinder obd +application/x-mscardfile crd +application/x-msclip clp +application/x-msdownload exe dll com bat msi +application/x-msmediaview mvb m13 m14 +application/x-msmetafile wmf +application/x-msmoney mny +application/x-mspublisher pub +application/x-msschedule scd +application/x-msterminal trm +application/x-mswrite wri +application/x-netcdf nc cdf +application/x-pkcs12 p12 pfx +application/x-pkcs7-certificates p7b spc +application/x-pkcs7-certreqresp p7r +application/x-rar-compressed rar +application/x-sh sh +application/x-shar shar +application/x-shockwave-flash swf +application/x-silverlight-app xap +application/x-stuffit sit +application/x-stuffitx sitx +application/x-sv4cpio sv4cpio +application/x-sv4crc sv4crc +application/x-tar tar +application/x-tcl tcl +application/x-tex tex +application/x-tex-tfm tfm +application/x-texinfo texinfo texi +application/x-ustar ustar +application/x-wais-source src +application/x-x509-ca-cert der crt +application/x-xfig fig +application/x-xpinstall xpi +# application/x400-bp +# application/xcap-att+xml +# application/xcap-caps+xml +application/xcap-diff+xml xdf +# application/xcap-el+xml +# application/xcap-error+xml +# application/xcap-ns+xml +# application/xcon-conference-info-diff+xml +# application/xcon-conference-info+xml +application/xenc+xml xenc +application/xhtml+xml xhtml xht +# application/xhtml-voice+xml +application/xml xml xsl +application/xml-dtd dtd +# application/xml-external-parsed-entity +# application/xmpp+xml +application/xop+xml xop +application/xslt+xml xslt +application/xspf+xml xspf +application/xv+xml mxml xhvml xvml xvm +application/yang yang +application/yin+xml yin +application/zip zip +# audio/1d-interleaved-parityfec +# audio/32kadpcm +# audio/3gpp +# audio/3gpp2 +# audio/ac3 +audio/adpcm adp +# audio/amr +# audio/amr-wb +# audio/amr-wb+ +# audio/asc +# audio/atrac-advanced-lossless +# audio/atrac-x +# audio/atrac3 +audio/basic au snd +# audio/bv16 +# audio/bv32 +# audio/clearmode +# audio/cn +# audio/dat12 +# audio/dls +# audio/dsr-es201108 +# audio/dsr-es202050 +# audio/dsr-es202211 +# audio/dsr-es202212 +# audio/dv +# audio/dvi4 +# audio/eac3 +# audio/evrc +# audio/evrc-qcp +# audio/evrc0 +# audio/evrc1 +# audio/evrcb +# audio/evrcb0 +# audio/evrcb1 +# audio/evrcwb +# audio/evrcwb0 +# audio/evrcwb1 +# audio/example +# audio/fwdred +# audio/g719 +# audio/g722 +# audio/g7221 +# audio/g723 +# audio/g726-16 +# audio/g726-24 +# audio/g726-32 +# audio/g726-40 +# audio/g728 +# audio/g729 +# audio/g7291 +# audio/g729d +# audio/g729e +# audio/gsm +# audio/gsm-efr +# audio/gsm-hr-08 +# audio/ilbc +# audio/ip-mr_v2.5 +# audio/l16 +# audio/l20 +# audio/l24 +# audio/l8 +# audio/lpc +audio/midi mid midi kar rmi +# audio/mobile-xmf +audio/mp4 mp4a +# audio/mp4a-latm +# audio/mpa +# audio/mpa-robust +audio/mpeg mpga mp2 mp2a mp3 m2a m3a +# audio/mpeg4-generic +audio/ogg oga ogg spx +# audio/parityfec +# audio/pcma +# audio/pcma-wb +# audio/pcmu-wb +# audio/pcmu +# audio/prs.sid +# audio/qcelp +# audio/red +# audio/rtp-enc-aescm128 +# audio/rtp-midi +# audio/rtx +# audio/smv +# audio/smv0 +# audio/smv-qcp +# audio/sp-midi +# audio/speex +# audio/t140c +# audio/t38 +# audio/telephone-event +# audio/tone +# audio/uemclip +# audio/ulpfec +# audio/vdvi +# audio/vmr-wb +# audio/vnd.3gpp.iufp +# audio/vnd.4sb +# audio/vnd.audiokoz +# audio/vnd.celp +# audio/vnd.cisco.nse +# audio/vnd.cmles.radio-events +# audio/vnd.cns.anp1 +# audio/vnd.cns.inf1 +audio/vnd.dece.audio uva uvva +audio/vnd.digital-winds eol +# audio/vnd.dlna.adts +# audio/vnd.dolby.heaac.1 +# audio/vnd.dolby.heaac.2 +# audio/vnd.dolby.mlp +# audio/vnd.dolby.mps +# audio/vnd.dolby.pl2 +# audio/vnd.dolby.pl2x +# audio/vnd.dolby.pl2z +# audio/vnd.dolby.pulse.1 +audio/vnd.dra dra +audio/vnd.dts dts +audio/vnd.dts.hd dtshd +# audio/vnd.dvb.file dvb +# audio/vnd.everad.plj +# audio/vnd.hns.audio +audio/vnd.lucent.voice lvp +audio/vnd.ms-playready.media.pya pya +# audio/vnd.nokia.mobile-xmf +# audio/vnd.nortel.vbk +audio/vnd.nuera.ecelp4800 ecelp4800 +audio/vnd.nuera.ecelp7470 ecelp7470 +audio/vnd.nuera.ecelp9600 ecelp9600 +# audio/vnd.octel.sbc +# audio/vnd.qcelp +# audio/vnd.rhetorex.32kadpcm +audio/vnd.rip rip +# audio/vnd.sealedmedia.softseal.mpeg +# audio/vnd.vmx.cvsd +# audio/vorbis +# audio/vorbis-config +audio/webm weba +audio/x-aac aac +audio/x-aiff aif aiff aifc +audio/x-mpegurl m3u +audio/x-ms-wax wax +audio/x-ms-wma wma +audio/x-pn-realaudio ram ra +audio/x-pn-realaudio-plugin rmp +audio/x-wav wav +chemical/x-cdx cdx +chemical/x-cif cif +chemical/x-cmdf cmdf +chemical/x-cml cml +chemical/x-csml csml +# chemical/x-pdb +chemical/x-xyz xyz +image/bmp bmp +image/cgm cgm +# image/example +# image/fits +image/g3fax g3 +image/gif gif +image/ief ief +# image/jp2 +image/jpeg jpeg jpg jpe +# image/jpm +# image/jpx +image/ktx ktx +# image/naplps +image/png png +image/prs.btif btif +# image/prs.pti +image/svg+xml svg svgz +# image/t38 +image/tiff tiff tif +# image/tiff-fx +image/vnd.adobe.photoshop psd +# image/vnd.cns.inf2 +image/vnd.dece.graphic uvi uvvi uvg uvvg +image/vnd.dvb.subtitle sub +image/vnd.djvu djvu djv +image/vnd.dwg dwg +image/vnd.dxf dxf +image/vnd.fastbidsheet fbs +image/vnd.fpx fpx +image/vnd.fst fst +image/vnd.fujixerox.edmics-mmr mmr +image/vnd.fujixerox.edmics-rlc rlc +# image/vnd.globalgraphics.pgb +# image/vnd.microsoft.icon +# image/vnd.mix +image/vnd.ms-modi mdi +image/vnd.net-fpx npx +# image/vnd.radiance +# image/vnd.sealed.png +# image/vnd.sealedmedia.softseal.gif +# image/vnd.sealedmedia.softseal.jpg +# image/vnd.svf +image/vnd.wap.wbmp wbmp +image/vnd.xiff xif +image/webp webp +image/x-cmu-raster ras +image/x-cmx cmx +image/x-freehand fh fhc fh4 fh5 fh7 +image/x-icon ico +image/x-pcx pcx +image/x-pict pic pct +image/x-portable-anymap pnm +image/x-portable-bitmap pbm +image/x-portable-graymap pgm +image/x-portable-pixmap ppm +image/x-rgb rgb +image/x-xbitmap xbm +image/x-xpixmap xpm +image/x-xwindowdump xwd +# message/cpim +# message/delivery-status +# message/disposition-notification +# message/example +# message/external-body +# message/feedback-report +# message/global +# message/global-delivery-status +# message/global-disposition-notification +# message/global-headers +# message/http +# message/imdn+xml +# message/news +# message/partial +message/rfc822 eml mime +# message/s-http +# message/sip +# message/sipfrag +# message/tracking-status +# message/vnd.si.simp +# model/example +model/iges igs iges +model/mesh msh mesh silo +model/vnd.collada+xml dae +model/vnd.dwf dwf +# model/vnd.flatland.3dml +model/vnd.gdl gdl +# model/vnd.gs-gdl +# model/vnd.gs.gdl +model/vnd.gtw gtw +# model/vnd.moml+xml +model/vnd.mts mts +# model/vnd.parasolid.transmit.binary +# model/vnd.parasolid.transmit.text +model/vnd.vtu vtu +model/vrml wrl vrml +# multipart/alternative +# multipart/appledouble +# multipart/byteranges +# multipart/digest +# multipart/encrypted +# multipart/example +# multipart/form-data +# multipart/header-set +# multipart/mixed +# multipart/parallel +# multipart/related +# multipart/report +# multipart/signed +# multipart/voice-message +# text/1d-interleaved-parityfec +text/calendar ics ifb +text/css css +text/csv csv +# text/directory +# text/dns +# text/ecmascript +# text/enriched +# text/example +# text/fwdred +text/html html htm +# text/javascript +text/n3 n3 +# text/parityfec +text/plain txt text conf def list log in +# text/prs.fallenstein.rst +text/prs.lines.tag dsc +# text/vnd.radisys.msml-basic-layout +# text/red +# text/rfc822-headers +text/richtext rtx +# text/rtf +# text/rtp-enc-aescm128 +# text/rtx +text/sgml sgml sgm +# text/t140 +text/tab-separated-values tsv +text/troff t tr roff man me ms +text/turtle ttl +# text/ulpfec +text/uri-list uri uris urls +text/vcard vcard +# text/vnd.abc +text/vnd.curl curl +text/vnd.curl.dcurl dcurl +text/vnd.curl.scurl scurl +text/vnd.curl.mcurl mcurl +# text/vnd.dmclientscript +text/vnd.dvb.subtitle sub +# text/vnd.esmertec.theme-descriptor +text/vnd.fly fly +text/vnd.fmi.flexstor flx +text/vnd.graphviz gv +text/vnd.in3d.3dml 3dml +text/vnd.in3d.spot spot +# text/vnd.iptc.newsml +# text/vnd.iptc.nitf +# text/vnd.latex-z +# text/vnd.motorola.reflex +# text/vnd.ms-mediapackage +# text/vnd.net2phone.commcenter.command +# text/vnd.si.uricatalogue +text/vnd.sun.j2me.app-descriptor jad +# text/vnd.trolltech.linguist +# text/vnd.wap.si +# text/vnd.wap.sl +text/vnd.wap.wml wml +text/vnd.wap.wmlscript wmls +text/x-asm s asm +text/x-c c cc cxx cpp h hh dic +text/x-fortran f for f77 f90 +text/x-pascal p pas +text/x-java-source java +text/x-setext etx +text/x-uuencode uu +text/x-vcalendar vcs +text/x-vcard vcf +# text/xml +# text/xml-external-parsed-entity +# video/1d-interleaved-parityfec +video/3gpp 3gp +# video/3gpp-tt +video/3gpp2 3g2 +# video/bmpeg +# video/bt656 +# video/celb +# video/dv +# video/example +video/h261 h261 +video/h263 h263 +# video/h263-1998 +# video/h263-2000 +video/h264 h264 +# video/h264-rcdo +# video/h264-svc +video/jpeg jpgv +# video/jpeg2000 +video/jpm jpm jpgm +video/mj2 mj2 mjp2 +# video/mp1s +# video/mp2p +# video/mp2t +video/mp4 mp4 mp4v mpg4 +# video/mp4v-es +video/mpeg mpeg mpg mpe m1v m2v +# video/mpeg4-generic +# video/mpv +# video/nv +video/ogg ogv +# video/parityfec +# video/pointer +video/quicktime qt mov +# video/raw +# video/rtp-enc-aescm128 +# video/rtx +# video/smpte292m +# video/ulpfec +# video/vc1 +# video/vnd.cctv +video/vnd.dece.hd uvh uvvh +video/vnd.dece.mobile uvm uvvm +# video/vnd.dece.mp4 +video/vnd.dece.pd uvp uvvp +video/vnd.dece.sd uvs uvvs +video/vnd.dece.video uvv uvvv +# video/vnd.directv.mpeg +# video/vnd.directv.mpeg-tts +# video/vnd.dlna.mpeg-tts +video/vnd.dvb.file dvb +video/vnd.fvt fvt +# video/vnd.hns.video +# video/vnd.iptvforum.1dparityfec-1010 +# video/vnd.iptvforum.1dparityfec-2005 +# video/vnd.iptvforum.2dparityfec-1010 +# video/vnd.iptvforum.2dparityfec-2005 +# video/vnd.iptvforum.ttsavc +# video/vnd.iptvforum.ttsmpeg2 +# video/vnd.motorola.video +# video/vnd.motorola.videop +video/vnd.mpegurl mxu m4u +video/vnd.ms-playready.media.pyv pyv +# video/vnd.nokia.interleaved-multimedia +# video/vnd.nokia.videovoip +# video/vnd.objectvideo +# video/vnd.sealed.mpeg1 +# video/vnd.sealed.mpeg4 +# video/vnd.sealed.swf +# video/vnd.sealedmedia.softseal.mov +video/vnd.uvvu.mp4 uvu uvvu +video/vnd.vivo viv +video/webm webm +video/x-f4v f4v +video/x-fli fli +video/x-flv flv +video/x-m4v m4v +video/x-ms-asf asf asx +video/x-ms-wm wm +video/x-ms-wmv wmv +video/x-ms-wmx wmx +video/x-ms-wvx wvx +video/x-msvideo avi +video/x-sgi-movie movie +x-conference/x-cooltalk ice diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types new file mode 100644 index 0000000..b7fe8c0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types @@ -0,0 +1,65 @@ +# What: Google Chrome Extension +# Why: To allow apps to (work) be served with the right content type header. +# http://codereview.chromium.org/2830017 +# Added by: niftylettuce +application/x-chrome-extension crx + +# What: OTF Message Silencer +# Why: To silence the "Resource interpreted as font but transferred with MIME +# type font/otf" message that occurs in Google Chrome +# Added by: niftylettuce +font/opentype otf + +# What: HTC support +# Why: To properly render .htc files such as CSS3PIE +# Added by: niftylettuce +text/x-component htc + +# What: HTML5 application cache manifest +# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps +# per https://developer.mozilla.org/en/offline_resources_in_firefox +# Added by: louisremi +text/cache-manifest appcache manifest + +# What: node binary buffer format +# Why: semi-standard extension w/in the node community +# Added by: tootallnate +application/octet-stream buffer + +# What: The "protected" MP-4 formats used by iTunes. +# Why: Required for streaming music to browsers (?) +# Added by: broofa +application/mp4 m4p +audio/mp4 m4a + +# What: Music playlist format (http://en.wikipedia.org/wiki/M3U) +# Why: See https://github.com/bentomas/node-mime/pull/6 +# Added by: mjrusso +application/x-mpegURL m3u8 + +# What: Video format, Part of RFC1890 +# Why: See https://github.com/bentomas/node-mime/pull/6 +# Added by: mjrusso +video/MP2T ts + +# What: The FLAC lossless codec format +# Why: Streaming and serving FLAC audio +# Added by: jacobrask +audio/flac flac + +# What: EventSource mime type +# Why: mime type of Server-Sent Events stream +# http://www.w3.org/TR/eventsource/#text-event-stream +# Added by: francois2metz +text/event-stream event-stream + +# What: Mozilla App manifest mime type +# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests +# Added by: ednapiranha +application/x-web-app-manifest+json webapp + +# What: Matroska Mime Types +# Why: http://en.wikipedia.org/wiki/Matroska +# Added by: aduncan88 +video/x-matroska mkv +audio/x-matroska mka diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json new file mode 100644 index 0000000..5e936f1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json @@ -0,0 +1,34 @@ +{ + "name": "send", + "version": "0.1.0", + "description": "Better streaming static file server with Range and conditional-GET support", + "keywords": [ + "static", + "file", + "server" + ], + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "dependencies": { + "debug": "*", + "mime": "1.2.6", + "fresh": "0.1.0", + "range-parser": "0.0.4" + }, + "devDependencies": { + "mocha": "*", + "should": "*", + "supertest": "0.0.1", + "connect": "2.x" + }, + "scripts": { + "test": "make test" + }, + "main": "index", + "readme": "\n# send\n\n Send is Connect's `static()` extracted for generalized use, a streaming static file\n server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.\n\n## Installation\n\n $ npm install send\n\n## Examples\n\n Small:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n send(req, req.url).pipe(res);\n});\n```\n\n Serving from a root directory with custom error-handling:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n // your custom error-handling logic:\n function error(err) {\n res.statusCode = err.status || 500;\n res.end(err.message);\n }\n\n // your custom directory handling logic:\n function redirect() {\n res.statusCode = 301;\n res.setHeader('Location', req.url + '/');\n res.end('Redirecting to ' + req.url + '/');\n }\n\n // transfer arbitrary files from within\n // /www/example.com/public/*\n send(req, url.parse(req.url).pathname)\n .root('/www/example.com/public')\n .on('error', error)\n .on('directory', redirect)\n .pipe(res);\n});\n```\n\n## API\n\n### Events\n\n - `error` an error occurred `(err)`\n - `directory` a directory was requested\n - `stream` file streaming has started `(stream)`\n - `end` streaming has completed\n\n### .root(dir)\n\n Serve files relative to `path`. Aliased as `.from(dir)`.\n\n### .index(path)\n\n By default send supports \"index.html\" files, to disable this\n invoke `.index(false)` or to supply a new index pass a string.\n\n### .maxage(ms)\n\n Provide a max-age in milliseconds for http caching, defaults to 0.\n\n## Error-handling\n\n By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.\n\n## Caching\n\n It does _not_ perform internal caching, you should use a reverse proxy cache such\n as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;).\n\n## Debugging\n\n To enable `debug()` instrumentation output export __DEBUG__:\n\n```\n$ DEBUG=send node app\n```\n\n## Running tests\n\n```\n$ npm install\n$ make test\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "readmeFilename": "Readme.md", + "_id": "send@0.1.0", + "_from": "send@0.1.0" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json new file mode 100644 index 0000000..cb52fb9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json @@ -0,0 +1,85 @@ +{ + "name": "express", + "description": "Sinatra inspired web development framework", + "version": "3.1.1", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "contributors": [ + { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + { + "name": "Aaron Heckmann", + "email": "aaron.heckmann+github@gmail.com" + }, + { + "name": "Ciaran Jessup", + "email": "ciaranj@gmail.com" + }, + { + "name": "Guillermo Rauch", + "email": "rauchg@gmail.com" + } + ], + "dependencies": { + "connect": "2.7.4", + "commander": "0.6.1", + "range-parser": "0.0.4", + "mkdirp": "~0.3.4", + "cookie": "0.0.5", + "buffer-crc32": "~0.2.1", + "fresh": "0.1.0", + "methods": "0.0.1", + "send": "0.1.0", + "cookie-signature": "0.0.1", + "debug": "*" + }, + "devDependencies": { + "ejs": "*", + "mocha": "*", + "jade": "*", + "hjs": "*", + "stylus": "*", + "should": "*", + "connect-redis": "*", + "github-flavored-markdown": "*", + "supertest": "0.0.1" + }, + "keywords": [ + "express", + "framework", + "sinatra", + "web", + "rest", + "restful", + "router", + "app", + "api" + ], + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/express" + }, + "main": "index", + "bin": { + "express": "./bin/express" + }, + "scripts": { + "prepublish": "npm prune", + "test": "make test" + }, + "engines": { + "node": "*" + }, + "readme": "![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)\n\n Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express)\n\n```js\nvar express = require('express');\nvar app = express();\n\napp.get('/', function(req, res){\n res.send('Hello World');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n $ npm install -g express\n $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n $ npm install\n\n Start the server:\n\n $ node app\n\n## Features\n\n * Built on [Connect](http://github.com/senchalabs/connect)\n * Robust routing\n * HTTP helpers (redirection, caching, etc)\n * View system supporting 14+ template engines\n * Content negotiation\n * Focus on high performance\n * Environment based configuration\n * Executable for generating applications quickly\n * High test coverage\n\n## Philosophy\n\n The Express philosophy is to provide small, robust tooling for HTTP servers. Making\n it a great solution for single page applications, web sites, hybrids, or public\n HTTP APIs.\n\n Built on Connect you can use _only_ what you need, and nothing more, applications\n can be as big or as small as you like, even a single file. Express does\n not force you to use any specific ORM or template engine. With support for over\n 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)\n you can quickly craft your perfect framework.\n\n## More Information\n\n * Join #express on freenode\n * [Google Group](http://groups.google.com/group/express-js) for discussion\n * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)\n * [Русскоязычная документация](http://express-js.ru/)\n * Run express examples [online](https://runnable.com/express)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite deps:\n\n $ git clone git://github.com/visionmedia/express.git --depth 1\n $ cd express\n $ npm install\n\nthen run whichever tests you want:\n\n $ node examples/content-negotiation\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n $ npm install\n\nthen run the tests:\n\n $ make test\n\n## Contributors\n\n```\nproject: express\ncommits: 3559\nactive : 468 days\nfiles : 237\nauthors:\n 1891\tTj Holowaychuk 53.1%\n 1285\tvisionmedia 36.1%\n 182\tTJ Holowaychuk 5.1%\n 54\tAaron Heckmann 1.5%\n 34\tcsausdev 1.0%\n 26\tciaranj 0.7%\n 21\tRobert Sköld 0.6%\n 6\tGuillermo Rauch 0.2%\n 3\tDav Glass 0.1%\n 3\tNick Poulden 0.1%\n 2\tRandy Merrill 0.1%\n 2\tBenny Wong 0.1%\n 2\tHunter Loftis 0.1%\n 2\tJake Gordon 0.1%\n 2\tBrian McKinney 0.1%\n 2\tRoman Shtylman 0.1%\n 2\tBen Weaver 0.1%\n 2\tDave Hoover 0.1%\n 2\tEivind Fjeldstad 0.1%\n 2\tDaniel Shaw 0.1%\n 1\tMatt Colyer 0.0%\n 1\tPau Ramon 0.0%\n 1\tPero Pejovic 0.0%\n 1\tPeter Rekdal Sunde 0.0%\n 1\tRaynos 0.0%\n 1\tTeng Siong Ong 0.0%\n 1\tViktor Kelemen 0.0%\n 1\tctide 0.0%\n 1\t8bitDesigner 0.0%\n 1\tisaacs 0.0%\n 1\tmgutz 0.0%\n 1\tpikeas 0.0%\n 1\tshuwatto 0.0%\n 1\ttstrimple 0.0%\n 1\tewoudj 0.0%\n 1\tAdam Sanderson 0.0%\n 1\tAndrii Kostenko 0.0%\n 1\tAndy Hiew 0.0%\n 1\tArpad Borsos 0.0%\n 1\tAshwin Purohit 0.0%\n 1\tBenjen 0.0%\n 1\tDarren Torpey 0.0%\n 1\tGreg Ritter 0.0%\n 1\tGregory Ritter 0.0%\n 1\tJames Herdman 0.0%\n 1\tJim Snodgrass 0.0%\n 1\tJoe McCann 0.0%\n 1\tJonathan Dumaine 0.0%\n 1\tJonathan Palardy 0.0%\n 1\tJonathan Zacsh 0.0%\n 1\tJustin Lilly 0.0%\n 1\tKen Sato 0.0%\n 1\tMaciej Małecki 0.0%\n 1\tMasahiro Hayashi 0.0%\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "Readme.md", + "_id": "express@3.1.1", + "dist": { + "shasum": "46f6247a14d17e2b488e9ee6df5df19c1229cbf1" + }, + "_from": "express@3.1.1", + "_resolved": "https://registry.npmjs.org/express/-/express-3.1.1.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js new file mode 100644 index 0000000..50cf320 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js @@ -0,0 +1,38 @@ + +/** + * Module dependencies. + */ + +var express = require('./') + , app = express() + +var users = ['foo', 'bar', 'baz']; + +app.use(express.bodyParser()); + +app.get('/api/users', function(req, res){ + res.send(users); +}); + +app.del('/api/users', function(req, res){ + users = []; + res.send(200); +}); + +app.post('/api/users', function(req, res){ + users.push(req.body.name); + res.send(201); +}); + +app.get('/api/user/:id', function(req, res){ + var id = req.params.id; + res.send(users[id]); +}); + +app.use('/api', function(req, res, next){ + var err = new Error('Method Not Allowed'); + err.status = 405; +}); + +app.listen(5555); +console.log('listening on 5555'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js new file mode 100644 index 0000000..01b2bb1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js @@ -0,0 +1,42 @@ + +var mongoose = require('mongoose') +var Schema = mongoose.Schema; + +mongoose.connect('mongodb://localhost/example-hooks'); + +var schema = Schema({ name: String }); +schema.post('save', function () { + console.log('post save hook', arguments); +}) + +schema.pre('save', function (next) { + console.log('pre save'); + next(); +}) + +var M = mongoose.model('Hooks', schema); + +var doc = new M({ name: 'hooooks' }); +doc.save(function (err) { + console.log('save callback'); + mongoose.disconnect(); +}) + + +//// + +Model.on('init', cb); +Model.on('remove', cb); +Model.on('update', cb); + // Model.update() and doc.save() +Model.on('insert', cb); +Model.on('save', cb); + +var promise = Model.save(doc, options, callback); + +// + +var schema = new Schema(..); +schema.pre('save', function (next, done) { + +}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js new file mode 100644 index 0000000..4bec928 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js @@ -0,0 +1,135 @@ + +var assert = require('assert') +var mongoose = require('../'); +var Schema = mongoose.Schema; +var ObjectId = mongoose.Types.ObjectId; + +/** + * Connect to the db + */ + +var dbname = 'testing_populateAdInfinitum_' + require('../lib/utils').random() +mongoose.connect('localhost', dbname); +mongoose.connection.on('error', function() { + console.error('connection error', arguments); +}); + +/** + * Schemas + */ + +var user = new Schema({ + name: String, + friends: [{ + type: Schema.ObjectId, + ref: 'User' + }] +}); +var User = mongoose.model('User', user); + +var blogpost = Schema({ + title: String, + tags: [String], + author: { + type: Schema.ObjectId, + ref: 'User' + } +}) +var BlogPost = mongoose.model('BlogPost', blogpost); + +/** + * example + */ + +mongoose.connection.on('open', function() { + + /** + * Generate data + */ + + var userIds = [new ObjectId, new ObjectId, new ObjectId, new ObjectId]; + var users = []; + + users.push({ + _id: userIds[0], + name: 'mary', + friends: [userIds[1], userIds[2], userIds[3]] + }); + users.push({ + _id: userIds[1], + name: 'bob', + friends: [userIds[0], userIds[2], userIds[3]] + }); + users.push({ + _id: userIds[2], + name: 'joe', + friends: [userIds[0], userIds[1], userIds[3]] + }); + users.push({ + _id: userIds[3], + name: 'sally', + friends: [userIds[0], userIds[1], userIds[2]] + }); + + User.create(users, function(err, docs) { + assert.ifError(err); + + var blogposts = []; + blogposts.push({ + title: 'blog 1', + tags: ['fun', 'cool'], + author: userIds[3] + }) + blogposts.push({ + title: 'blog 2', + tags: ['cool'], + author: userIds[1] + }) + blogposts.push({ + title: 'blog 3', + tags: ['fun', 'odd'], + author: userIds[2] + }) + + BlogPost.create(blogposts, function(err, docs) { + assert.ifError(err); + + /** + * Population + */ + + BlogPost + .find({ tags: 'fun' }) + .lean() + .populate('author') + .exec(function(err, docs) { + assert.ifError(err); + + /** + * Populate the populated documents + */ + + var opts = { + path: 'author.friends', + select: 'name', + options: { limit: 2 } + } + + BlogPost.populate(docs, opts, function(err, docs) { + assert.ifError(err); + console.log('populated'); + var s = require('util').inspect(docs, { depth: null }) + console.log(s); + done(); + }) + }) + }) + }) +}); + +function done(err) { + if (err) console.error(err.stack); + mongoose.connection.db.dropDatabase(function() { + mongoose.connection.close(); + }); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js new file mode 100644 index 0000000..c1d6a70 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js @@ -0,0 +1,95 @@ + +var mongoose = require('mongoose') +var Schema = mongoose.Schema; + +console.log('Running mongoose version %s', mongoose.version); + +/** + * Console schema + */ + +var consoleSchema = Schema({ + name: String + , manufacturer: String + , released: Date +}) +var Console = mongoose.model('Console', consoleSchema); + +/** + * Game schema + */ + +var gameSchema = Schema({ + name: String + , developer: String + , released: Date + , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] +}) +var Game = mongoose.model('Game', gameSchema); + +/** + * Connect to the console database on localhost with + * the default port (27017) + */ + +mongoose.connect('mongodb://localhost/console', function (err) { + // if we failed to connect, abort + if (err) throw err; + + // we connected ok + createData(); +}) + +/** + * Data generation + */ + +function createData () { + Console.create({ + name: 'Nintendo 64' + , manufacturer: 'Nintendo' + , released: 'September 29, 1996' + }, function (err, nintendo64) { + if (err) return done(err); + + Game.create({ + name: 'Legend of Zelda: Ocarina of Time' + , developer: 'Nintendo' + , released: new Date('November 21, 1998') + , consoles: [nintendo64] + }, function (err) { + if (err) return done(err); + example(); + }) + }) +} + +/** + * Population + */ + +function example () { + Game + .findOne({ name: /^Legend of Zelda/ }) + .populate('consoles') + .exec(function (err, ocinara) { + if (err) return done(err); + + console.log( + '"%s" was released for the %s on %s' + , ocinara.name + , ocinara.consoles[0].name + , ocinara.released.toLocaleDateString()); + + done(); + }) +} + +function done (err) { + if (err) console.error(err); + Console.remove(function () { + Game.remove(function () { + mongoose.disconnect(); + }) + }) +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js new file mode 100644 index 0000000..6d48fdc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js @@ -0,0 +1,101 @@ + +var mongoose = require('mongoose') +var Schema = mongoose.Schema; + +console.log('Running mongoose version %s', mongoose.version); + +/** + * Console schema + */ + +var consoleSchema = Schema({ + name: String + , manufacturer: String + , released: Date +}) +var Console = mongoose.model('Console', consoleSchema); + +/** + * Game schema + */ + +var gameSchema = Schema({ + name: String + , developer: String + , released: Date + , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] +}) +var Game = mongoose.model('Game', gameSchema); + +/** + * Connect to the console database on localhost with + * the default port (27017) + */ + +mongoose.connect('mongodb://localhost/console', function (err) { + // if we failed to connect, abort + if (err) throw err; + + // we connected ok + createData(); +}) + +/** + * Data generation + */ + +function createData () { + Console.create({ + name: 'Nintendo 64' + , manufacturer: 'Nintendo' + , released: 'September 29, 1996' + }, function (err, nintendo64) { + if (err) return done(err); + + Game.create({ + name: 'Legend of Zelda: Ocarina of Time' + , developer: 'Nintendo' + , released: new Date('November 21, 1998') + , consoles: [nintendo64] + }, function (err) { + if (err) return done(err); + example(); + }) + }) +} + +/** + * Population + */ + +function example () { + Game + .findOne({ name: /^Legend of Zelda/ }) + .exec(function (err, ocinara) { + if (err) return done(err); + + console.log('"%s" console _id: %s', ocinara.name, ocinara.consoles[0]); + + // population of existing document + ocinara.populate('consoles', function (err) { + if (err) return done(err); + + console.log( + '"%s" was released for the %s on %s' + , ocinara.name + , ocinara.consoles[0].name + , ocinara.released.toLocaleDateString()); + + done(); + }) + }) +} + +function done (err) { + if (err) console.error(err); + Console.remove(function () { + Game.remove(function () { + mongoose.disconnect(); + }) + }) +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js new file mode 100644 index 0000000..6d918ff --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js @@ -0,0 +1,112 @@ + +var mongoose = require('mongoose') +var Schema = mongoose.Schema; + +console.log('Running mongoose version %s', mongoose.version); + +/** + * Console schema + */ + +var consoleSchema = Schema({ + name: String + , manufacturer: String + , released: Date +}) +var Console = mongoose.model('Console', consoleSchema); + +/** + * Game schema + */ + +var gameSchema = Schema({ + name: String + , developer: String + , released: Date + , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] +}) +var Game = mongoose.model('Game', gameSchema); + +/** + * Connect to the console database on localhost with + * the default port (27017) + */ + +mongoose.connect('mongodb://localhost/console', function (err) { + // if we failed to connect, abort + if (err) throw err; + + // we connected ok + createData(); +}) + +/** + * Data generation + */ + +function createData () { + Console.create({ + name: 'Nintendo 64' + , manufacturer: 'Nintendo' + , released: 'September 29, 1996' + }, { + name: 'Super Nintendo' + , manufacturer: 'Nintendo' + , released: 'August 23, 1991' + }, function (err, nintendo64, superNintendo) { + if (err) return done(err); + + Game.create({ + name: 'Legend of Zelda: Ocarina of Time' + , developer: 'Nintendo' + , released: new Date('November 21, 1998') + , consoles: [nintendo64] + }, { + name: 'Mario Kart' + , developer: 'Nintendo' + , released: 'September 1, 1992' + , consoles: [superNintendo] + }, function (err) { + if (err) return done(err); + example(); + }) + }) +} + +/** + * Population + */ + +function example () { + Game + .find({}) + .exec(function (err, games) { + if (err) return done(err); + + console.log('found %d games', games.length); + + var options = { path: 'consoles', select: 'name released -_id' }; + Game.populate(games, options, function (err, games) { + if (err) return done(err); + + games.forEach(function (game) { + console.log( + '"%s" was released for the %s on %s' + , game.name + , game.consoles[0].name + , game.released.toLocaleDateString()); + }) + + done() + }) + }) +} + +function done (err) { + if (err) console.error(err); + Console.remove(function () { + Game.remove(function () { + mongoose.disconnect(); + }) + }) +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js new file mode 100644 index 0000000..7387b3b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js @@ -0,0 +1,124 @@ + +var mongoose = require('mongoose') +var Schema = mongoose.Schema; + +console.log('Running mongoose version %s', mongoose.version); + +/** + * Console schema + */ + +var consoleSchema = Schema({ + name: String + , manufacturer: String + , released: Date +}) +var Console = mongoose.model('Console', consoleSchema); + +/** + * Game schema + */ + +var gameSchema = Schema({ + name: String + , developer: String + , released: Date + , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] +}) +var Game = mongoose.model('Game', gameSchema); + +/** + * Connect to the console database on localhost with + * the default port (27017) + */ + +mongoose.connect('mongodb://localhost/console', function (err) { + // if we failed to connect, abort + if (err) throw err; + + // we connected ok + createData(); +}) + +/** + * Data generation + */ + +function createData () { + Console.create({ + name: 'Nintendo 64' + , manufacturer: 'Nintendo' + , released: 'September 29, 1996' + }, { + name: 'Super Nintendo' + , manufacturer: 'Nintendo' + , released: 'August 23, 1991' + }, { + name: 'XBOX 360' + , manufacturer: 'Microsoft' + , released: 'November 22, 2005' + }, function (err, nintendo64, superNintendo, xbox360) { + if (err) return done(err); + + Game.create({ + name: 'Legend of Zelda: Ocarina of Time' + , developer: 'Nintendo' + , released: new Date('November 21, 1998') + , consoles: [nintendo64] + }, { + name: 'Mario Kart' + , developer: 'Nintendo' + , released: 'September 1, 1992' + , consoles: [superNintendo] + }, { + name: 'Perfect Dark Zero' + , developer: 'Rare' + , released: 'November 17, 2005' + , consoles: [xbox360] + }, function (err) { + if (err) return done(err); + example(); + }) + }) +} + +/** + * Population + */ + +function example () { + Game + .find({}) + .populate({ + path: 'consoles' + , match: { manufacturer: 'Nintendo' } + , select: 'name' + , options: { comment: 'population' } + }) + .exec(function (err, games) { + if (err) return done(err); + + games.forEach(function (game) { + console.log( + '"%s" was released for the %s on %s' + , game.name + , game.consoles.length ? game.consoles[0].name : '??' + , game.released.toLocaleDateString()); + }) + + return done(); + }) +} + +/** + * Clean up + */ + +function done (err) { + if (err) console.error(err); + Console.remove(function () { + Game.remove(function () { + mongoose.disconnect(); + }) + }) +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js new file mode 100644 index 0000000..50fc9fa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js @@ -0,0 +1,96 @@ + +var mongoose = require('mongoose') +var Schema = mongoose.Schema; + +console.log('Running mongoose version %s', mongoose.version); + +/** + * Console schema + */ + +var consoleSchema = Schema({ + name: String + , manufacturer: String + , released: Date +}) +var Console = mongoose.model('Console', consoleSchema); + +/** + * Game schema + */ + +var gameSchema = Schema({ + name: String + , developer: String + , released: Date + , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] +}) +var Game = mongoose.model('Game', gameSchema); + +/** + * Connect to the console database on localhost with + * the default port (27017) + */ + +mongoose.connect('mongodb://localhost/console', function (err) { + // if we failed to connect, abort + if (err) throw err; + + // we connected ok + createData(); +}) + +/** + * Data generation + */ + +function createData () { + Console.create({ + name: 'Nintendo 64' + , manufacturer: 'Nintendo' + , released: 'September 29, 1996' + }, function (err, nintendo64) { + if (err) return done(err); + + Game.create({ + name: 'Legend of Zelda: Ocarina of Time' + , developer: 'Nintendo' + , released: new Date('November 21, 1998') + , consoles: [nintendo64] + }, function (err) { + if (err) return done(err); + example(); + }) + }) +} + +/** + * Population + */ + +function example () { + Game + .findOne({ name: /^Legend of Zelda/ }) + .populate('consoles') + .lean() // just return plain objects, not documents wrapped by mongoose + .exec(function (err, ocinara) { + if (err) return done(err); + + console.log( + '"%s" was released for the %s on %s' + , ocinara.name + , ocinara.consoles[0].name + , ocinara.released.toLocaleDateString()); + + done(); + }) +} + +function done (err) { + if (err) console.error(err); + Console.remove(function () { + Game.remove(function () { + mongoose.disconnect(); + }) + }) +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js new file mode 100644 index 0000000..d108d05 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js @@ -0,0 +1,102 @@ + +/** + * Module dependencies. + */ + +var mongoose = require('mongoose') + , Schema = mongoose.Schema; + +/** + * Schema definition + */ + +// recursive embedded-document schema + +var Comment = new Schema(); + +Comment.add({ + title : { type: String, index: true } + , date : Date + , body : String + , comments : [Comment] +}); + +var BlogPost = new Schema({ + title : { type: String, index: true } + , slug : { type: String, lowercase: true, trim: true } + , date : Date + , buf : Buffer + , comments : [Comment] + , creator : Schema.ObjectId +}); + +var Person = new Schema({ + name: { + first: String + , last : String + } + , email: { type: String, required: true, index: { unique: true, sparse: true } } + , alive: Boolean +}); + +/** + * Accessing a specific schema type by key + */ + +BlogPost.path('date') +.default(function(){ + return new Date() + }) +.set(function(v){ + return v == 'now' ? new Date() : v; + }); + +/** + * Pre hook. + */ + +BlogPost.pre('save', function(next, done){ + emailAuthor(done); // some async function + next(); +}); + +/** + * Methods + */ + +BlogPost.methods.findCreator = function (callback) { + return this.db.model('Person').findById(this.creator, callback); +} + +BlogPost.statics.findByTitle = function (title, callback) { + return this.find({ title: title }, callback); +} + +BlogPost.methods.expressiveQuery = function (creator, date, callback) { + return this.find('creator', creator).where('date').gte(date).run(callback); +} + +/** + * Plugins + */ + +function slugGenerator (options){ + options = options || {}; + var key = options.key || 'title'; + + return function slugGenerator(schema){ + schema.path(key).set(function(v){ + this.slug = v.toLowerCase().replace(/[^a-z0-9]/g, '').replace(/-+/g, ''); + return v; + }); + }; +}; + +BlogPost.plugin(slugGenerator()); + +/** + * Define model. + */ + +mongoose.model('BlogPost', BlogPost); +mongoose.model('Person', Person); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/index.js new file mode 100644 index 0000000..e7e6278 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/index.js @@ -0,0 +1,7 @@ + +/** + * Export lib/mongoose + * + */ + +module.exports = require('./lib/'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js new file mode 100644 index 0000000..1c38286 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js @@ -0,0 +1,188 @@ + +/*! + * Module dependencies. + */ + +var STATES = require('./connectionstate') + +/** + * Abstract Collection constructor + * + * This is the base class that drivers inherit from and implement. + * + * @param {String} name name of the collection + * @param {Connection} conn A MongooseConnection instance + * @param {Object} opts optional collection options + * @api public + */ + +function Collection (name, conn, opts) { + if (undefined === opts) opts = {}; + if (undefined === opts.capped) opts.capped = {}; + + opts.bufferCommands = undefined === opts.bufferCommands + ? true + : opts.bufferCommands; + + if ('number' == typeof opts.capped) { + opts.capped = { size: opts.capped }; + } + + this.opts = opts; + this.name = name; + this.conn = conn; + this.queue = []; + this.buffer = this.opts.bufferCommands; + + if (STATES.connected == this.conn.readyState) { + this.onOpen(); + } +}; + +/** + * The collection name + * + * @api public + * @property name + */ + +Collection.prototype.name; + +/** + * The Connection instance + * + * @api public + * @property conn + */ + +Collection.prototype.conn; + +/** + * Called when the database connects + * + * @api private + */ + +Collection.prototype.onOpen = function () { + var self = this; + this.buffer = false; + self.doQueue(); +}; + +/** + * Called when the database disconnects + * + * @api private + */ + +Collection.prototype.onClose = function () { + if (this.opts.bufferCommands) { + this.buffer = true; + } +}; + +/** + * Queues a method for later execution when its + * database connection opens. + * + * @param {String} name name of the method to queue + * @param {Array} args arguments to pass to the method when executed + * @api private + */ + +Collection.prototype.addQueue = function (name, args) { + this.queue.push([name, args]); + return this; +}; + +/** + * Executes all queued methods and clears the queue. + * + * @api private + */ + +Collection.prototype.doQueue = function () { + for (var i = 0, l = this.queue.length; i < l; i++){ + this[this.queue[i][0]].apply(this, this.queue[i][1]); + } + this.queue = []; + return this; +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.ensureIndex = function(){ + throw new Error('Collection#ensureIndex unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.findAndModify = function(){ + throw new Error('Collection#findAndModify unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.findOne = function(){ + throw new Error('Collection#findOne unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.find = function(){ + throw new Error('Collection#find unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.insert = function(){ + throw new Error('Collection#insert unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.save = function(){ + throw new Error('Collection#save unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.update = function(){ + throw new Error('Collection#update unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.getIndexes = function(){ + throw new Error('Collection#getIndexes unimplemented by driver'); +}; + +/** + * Abstract method that drivers must implement. + */ + +Collection.prototype.mapReduce = function(){ + throw new Error('Collection#mapReduce unimplemented by driver'); +}; + +/*! + * Module exports. + */ + +module.exports = Collection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js new file mode 100644 index 0000000..ef4595f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js @@ -0,0 +1,706 @@ +/*! + * Module dependencies. + */ + +var url = require('url') + , utils = require('./utils') + , EventEmitter = require('events').EventEmitter + , driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native' + , Model = require('./model') + , Schema = require('./schema') + , Collection = require(driver + '/collection') + , STATES = require('./connectionstate') + , MongooseError = require('./error') + , assert =require('assert') + , muri = require('muri') + +/*! + * Protocol prefix regexp. + * + * @api private + */ + +var rgxProtocol = /^(?:.)+:\/\//; + +/** + * Connection constructor + * + * For practical reasons, a Connection equals a Db. + * + * @param {Mongoose} base a mongoose instance + * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter + * @event `connecting`: Emitted when `connection.{open,openSet}()` is executed on this connection. + * @event `connected`: Emitted when this connection successfully connects to the db. May be emitted _multiple_ times in `reconnected` scenarios. + * @event `open`: Emitted after we `connected` and `onOpen` is executed on all of this connections models. + * @event `disconnecting`: Emitted when `connection.close()` was executed. + * @event `disconnected`: Emitted after getting disconnected from the db. + * @event `close`: Emitted after we `disconnected` and `onClose` executed on all of this connections models. + * @event `reconnected`: Emitted after we `connected` and subsequently `disconnected`, followed by successfully another successfull connection. + * @event `error`: Emitted when an error occurs on this connection. + * @event `fullsetup`: Emitted in a replica-set scenario, when all nodes specified in the connection string are connected. + * @api public + */ + +function Connection (base) { + this.base = base; + this.collections = {}; + this.models = {}; + this.replica = false; + this.hosts = null; + this.host = null; + this.port = null; + this.user = null; + this.pass = null; + this.name = null; + this.options = null; + this._readyState = STATES.disconnected; + this._closeCalled = false; + this._hasOpened = false; +}; + +/*! + * Inherit from EventEmitter + */ + +Connection.prototype.__proto__ = EventEmitter.prototype; + +/** + * Connection ready state + * + * - 0 = disconnected + * - 1 = connected + * - 2 = connecting + * - 3 = disconnecting + * + * Each state change emits its associated event name. + * + * ####Example + * + * conn.on('connected', callback); + * conn.on('disconnected', callback); + * + * @property readyState + * @api public + */ + +Object.defineProperty(Connection.prototype, 'readyState', { + get: function(){ return this._readyState; } + , set: function (val) { + if (!(val in STATES)) { + throw new Error('Invalid connection state: ' + val); + } + + if (this._readyState !== val) { + this._readyState = val; + + if (STATES.connected === val) + this._hasOpened = true; + + this.emit(STATES[val]); + } + } +}); + +/** + * A hash of the collections associated with this connection + * + * @property collections + */ + +Connection.prototype.collections; + +/** + * The mongodb.Db instance, set when the connection is opened + * + * @property db + */ + +Connection.prototype.db; + +/** + * Opens the connection to MongoDB. + * + * `options` is a hash with the following possible properties: + * + * db - passed to the connection db instance + * server - passed to the connection server instance(s) + * replset - passed to the connection ReplSet instance + * user - username for authentication + * pass - password for authentication + * auth - options for authentication (see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate) + * + * ####Notes: + * + * Mongoose forces the db option `forceServerObjectId` false and cannot be overridden. + * Mongoose defaults the server `auto_reconnect` options to true which can be overridden. + * See the node-mongodb-native driver instance for options that it understands. + * + * _Options passed take precedence over options included in connection strings._ + * + * @param {String} connection_string mongodb://uri or the host to which you are connecting + * @param {String} [database] database name + * @param {Number} [port] database port + * @param {Object} [options] options + * @param {Function} [callback] + * @see node-mongodb-native https://github.com/mongodb/node-mongodb-native + * @see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate + * @api public + */ + +Connection.prototype.open = function (host, database, port, options, callback) { + var self = this + , parsed + , uri; + + if ('string' === typeof database) { + switch (arguments.length) { + case 2: + port = 27017; + case 3: + switch (typeof port) { + case 'function': + callback = port, port = 27017; + break; + case 'object': + options = port, port = 27017; + break; + } + break; + case 4: + if ('function' === typeof options) + callback = options, options = {}; + } + } else { + switch (typeof database) { + case 'function': + callback = database, database = undefined; + break; + case 'object': + options = database; + database = undefined; + callback = port; + break; + } + + if (!rgxProtocol.test(host)) { + host = 'mongodb://' + host; + } + + try { + parsed = muri(host); + } catch (err) { + this.error(err, callback); + return this; + } + + database = parsed.db; + host = parsed.hosts[0].host || parsed.hosts[0].ipc; + port = parsed.hosts[0].port || 27017; + } + + this.options = this.parseOptions(options, parsed && parsed.options); + + // make sure we can open + if (STATES.disconnected !== this.readyState) { + var err = new Error('Trying to open unclosed connection.'); + err.state = this.readyState; + this.error(err, callback); + return this; + } + + if (!host) { + this.error(new Error('Missing hostname.'), callback); + return this; + } + + if (!database) { + this.error(new Error('Missing database name.'), callback); + return this; + } + + // authentication + if (options && options.user && options.pass) { + this.user = options.user; + this.pass = options.pass; + + } else if (parsed && parsed.auth) { + this.user = parsed.auth.user; + this.pass = parsed.auth.pass; + + // Check hostname for user/pass + } else if (/@/.test(host) && /:/.test(host.split('@')[0])) { + host = host.split('@'); + var auth = host.shift().split(':'); + host = host.pop(); + this.user = auth[0]; + this.pass = auth[1]; + + } else { + this.user = this.pass = undefined; + } + + this.name = database; + this.host = host; + this.port = port; + + this._open(callback); + return this; +}; + +/** + * Opens the connection to a replica set. + * + * ####Example: + * + * var db = mongoose.createConnection(); + * db.openSet("mongodb://user:pwd@localhost:27020/testing,mongodb://example.com:27020,mongodb://localhost:27019"); + * + * The database name and/or auth need only be included in one URI. + * The `options` is a hash which is passed to the internal driver connection object. + * + * Valid `options` + * + * db - passed to the connection db instance + * server - passed to the connection server instance(s) + * replset - passed to the connection ReplSetServer instance + * user - username for authentication + * pass - password for authentication + * auth - options for authentication (see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate) + * + * _Options passed take precedence over options included in connection strings._ + * + * ####Notes: + * + * Mongoose forces the db option `forceServerObjectId` false and cannot be overridden. + * Mongoose defaults the server `auto_reconnect` options to true which can be overridden. + * See the node-mongodb-native driver instance for options that it understands. + * + * @param {String} uris comma-separated mongodb:// `URI`s + * @param {String} [database] database name if not included in `uris` + * @param {Object} [options] passed to the internal driver + * @param {Function} [callback] + * @see node-mongodb-native https://github.com/mongodb/node-mongodb-native + * @see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate + * @api public + */ + +Connection.prototype.openSet = function (uris, database, options, callback) { + if (!rgxProtocol.test(uris)) { + uris = 'mongodb://' + uris; + } + + var self = this; + + switch (arguments.length) { + case 3: + switch (typeof database) { + case 'string': + this.name = database; + break; + case 'object': + callback = options; + options = database; + database = null; + break; + } + + if ('function' === typeof options) { + callback = options; + options = {}; + } + break; + case 2: + switch (typeof database) { + case 'string': + this.name = database; + break; + case 'function': + callback = database, database = null; + break; + case 'object': + options = database, database = null; + break; + } + } + + var parsed; + try { + parsed = muri(uris); + } catch (err) { + this.error(err, callback); + return this; + } + + if (!this.name) { + this.name = parsed.db; + } + + this.hosts = parsed.hosts; + this.options = this.parseOptions(options, parsed && parsed.options); + this.replica = true; + + if (!this.name) { + this.error(new Error('No database name provided for replica set'), callback); + return this; + } + + // authentication + if (options && options.user && options.pass) { + this.user = options.user; + this.pass = options.pass; + + } else if (parsed && parsed.auth) { + this.user = parsed.auth.user; + this.pass = parsed.auth.pass; + + } else { + this.user = this.pass = undefined; + } + + this._open(callback); + return this; +}; + +/** + * error + * + * Graceful error handling, passes error to callback + * if available, else emits error on the connection. + * + * @param {Error} err + * @param {Function} callback optional + * @api private + */ + +Connection.prototype.error = function (err, callback) { + if (callback) return callback(err); + this.emit('error', err); +} + +/** + * Handles opening the connection with the appropriate method based on connection type. + * + * @param {Function} callback + * @api private + */ + +Connection.prototype._open = function (callback) { + this.readyState = STATES.connecting; + this._closeCalled = false; + + var self = this; + + var method = this.replica + ? 'doOpenSet' + : 'doOpen'; + + // open connection + this[method](function (err) { + if (err) { + self.readyState = STATES.disconnected; + if (self._hasOpened) { + if (callback) callback(err); + } else { + self.error(err, callback); + } + return; + } + + self.onOpen(callback); + }); +} + +/** + * Called when the connection is opened + * + * @api private + */ + +Connection.prototype.onOpen = function (callback) { + var self = this; + + function open (err) { + if (err) { + self.readyState = STATES.disconnected; + if (self._hasOpened) { + if (callback) callback(err); + } else { + self.error(err, callback); + } + return; + } + + self.readyState = STATES.connected; + + // avoid having the collection subscribe to our event emitter + // to prevent 0.3 warning + for (var i in self.collections) + self.collections[i].onOpen(); + + callback && callback(); + self.emit('open'); + }; + + // re-authenticate + if (self.user && self.pass) { + self.db.authenticate(self.user, self.pass, self.options.auth, open); + } + else + open(); +}; + +/** + * Closes the connection + * + * @param {Function} [callback] optional + * @return {Connection} self + * @api public + */ + +Connection.prototype.close = function (callback) { + var self = this; + this._closeCalled = true; + + switch (this.readyState){ + case 0: // disconnected + callback && callback(); + break; + + case 1: // connected + this.readyState = STATES.disconnecting; + this.doClose(function(err){ + if (err){ + self.error(err, callback); + } else { + self.onClose(); + callback && callback(); + } + }); + break; + + case 2: // connecting + this.once('open', function(){ + self.close(callback); + }); + break; + + case 3: // disconnecting + if (!callback) break; + this.once('close', function () { + callback(); + }); + break; + } + + return this; +}; + +/** + * Called when the connection closes + * + * @api private + */ + +Connection.prototype.onClose = function () { + this.readyState = STATES.disconnected; + + // avoid having the collection subscribe to our event emitter + // to prevent 0.3 warning + for (var i in this.collections) + this.collections[i].onClose(); + + this.emit('close'); +}; + +/** + * Retrieves a collection, creating it if not cached. + * + * Not typically needed by applications. Just talk to your collection through your model. + * + * @param {String} name of the collection + * @param {Object} [options] optional collection options + * @return {Collection} collection instance + * @api public + */ + +Connection.prototype.collection = function (name, options) { + if (!(name in this.collections)) + this.collections[name] = new Collection(name, this, options); + return this.collections[name]; +}; + +/** + * Defines or retrieves a model. + * + * var mongoose = require('mongoose'); + * var db = mongoose.createConnection(..); + * db.model('Venue', new Schema(..)); + * var Ticket = db.model('Ticket', new Schema(..)); + * var Venue = db.model('Venue'); + * + * _When no `collection` argument is passed, Mongoose produces a collection name by passing the model `name` to the [utils.toCollectionName](#utils_exports.toCollectionName) method. This method pluralizes the name. If you don't like this behavior, either pass a collection name or set your schemas collection name option._ + * + * ####Example: + * + * var schema = new Schema({ name: String }, { collection: 'actor' }); + * + * // or + * + * schema.set('collection', 'actor'); + * + * // or + * + * var collectionName = 'actor' + * var M = conn.model('Actor', schema, collectionName) + * + * @param {String} name the model name + * @param {Schema} [schema] a schema. necessary when defining a model + * @param {String} [collection] name of mongodb collection (optional) if not given it will be induced from model name + * @see Mongoose#model #index_Mongoose-model + * @return {Model} The compiled model + * @api public + */ + +Connection.prototype.model = function (name, schema, collection) { + // collection name discovery + if ('string' == typeof schema) { + collection = schema; + schema = false; + } + + if (utils.isObject(schema) && !(schema instanceof Schema)) { + schema = new Schema(schema); + } + + if (this.models[name] && !collection) { + // model exists but we are not subclassing with custom collection + if (schema instanceof Schema && schema != this.models[name].schema) { + throw new MongooseError.OverwriteModelError(name); + } + return this.models[name]; + } + + var opts = { cache: false, connection: this } + var model; + + if (schema instanceof Schema) { + // compile a model + model = this.base.model(name, schema, collection, opts) + + // only the first model with this name is cached to allow + // for one-offs with custom collection names etc. + if (!this.models[name]) { + this.models[name] = model; + } + + model.init(); + return model; + } + + if (this.models[name] && collection) { + // subclassing current model with alternate collection + model = this.models[name]; + schema = model.prototype.schema; + var sub = model.__subclass(this, schema, collection); + // do not cache the sub model + return sub; + } + + // lookup model in mongoose module + model = this.base.models[name]; + + if (!model) { + throw new MongooseError.MissingSchemaError(name); + } + + if (this == model.prototype.db + && (!collection || collection == model.collection.name)) { + // model already uses this connection. + + // only the first model with this name is cached to allow + // for one-offs with custom collection names etc. + if (!this.models[name]) { + this.models[name] = model; + } + + return model; + } + + return this.models[name] = model.__subclass(this, schema, collection); +} + +/** + * Returns an array of model names created on this connection. + * @api public + * @return {Array} + */ + +Connection.prototype.modelNames = function () { + return Object.keys(this.models); +} + +/** + * Set profiling level. + * + * @param {Number|String} level either off (0), slow (1), or all (2) + * @param {Number} [ms] the threshold in milliseconds above which queries will be logged when in `slow` mode. defaults to 100. + * @param {Function} callback + * @api public + */ + +Connection.prototype.setProfiling = function (level, ms, callback) { + if (STATES.connected !== this.readyState) { + return this.on('open', this.setProfiling.bind(this, level, ms, callback)); + } + + if (!callback) callback = ms, ms = 100; + + var cmd = {}; + + switch (level) { + case 0: + case 'off': + cmd.profile = 0; + break; + case 1: + case 'slow': + cmd.profile = 1; + if ('number' !== typeof ms) { + ms = parseInt(ms, 10); + if (isNaN(ms)) ms = 100; + } + cmd.slowms = ms; + break; + case 2: + case 'all': + cmd.profile = 2; + break; + default: + return callback(new Error('Invalid profiling level: '+ level)); + } + + this.db.executeDbCommand(cmd, function (err, resp) { + if (err) return callback(err); + + var doc = resp.documents[0]; + + err = 1 === doc.ok + ? null + : new Error('Could not set profiling level to: '+ level) + + callback(err, doc); + }); +}; + +/*! + * Noop. + */ + +function noop () {} + +/*! + * Module exports. + */ + +Connection.STATES = STATES; +module.exports = Connection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js new file mode 100644 index 0000000..2d05ab0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js @@ -0,0 +1,24 @@ + +/*! + * Connection states + */ + +var STATES = module.exports = exports = Object.create(null); + +var disconnected = 'disconnected'; +var connected = 'connected'; +var connecting = 'connecting'; +var disconnecting = 'disconnecting'; +var uninitialized = 'uninitialized'; + +STATES[0] = disconnected; +STATES[1] = connected; +STATES[2] = connecting; +STATES[3] = disconnecting; +STATES[99] = uninitialized; + +STATES[disconnected] = 0; +STATES[connected] = 1; +STATES[connecting] = 2; +STATES[disconnecting] = 3; +STATES[uninitialized] = 99; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js new file mode 100644 index 0000000..7b735c4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js @@ -0,0 +1,1710 @@ +/*! + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , setMaxListeners = EventEmitter.prototype.setMaxListeners + , MongooseError = require('./error') + , MixedSchema = require('./schema/mixed') + , Schema = require('./schema') + , ValidatorError = require('./schematype').ValidatorError + , utils = require('./utils') + , clone = utils.clone + , isMongooseObject = utils.isMongooseObject + , inspect = require('util').inspect + , ElemMatchError = MongooseError.ElemMatchError + , ValidationError = MongooseError.ValidationError + , DocumentError = MongooseError.DocumentError + , InternalCache = require('./internal') + , deepEqual = utils.deepEqual + , hooks = require('hooks') + , DocumentArray + , MongooseArray + , Embedded + +/** + * Document constructor. + * + * @param {Object} obj the values to set + * @param {Object} [opts] optional object containing the fields which were selected in the query returning this document and any populated paths data + * @param {Boolean} [skipId] bool, should we auto create an ObjectId _id + * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter + * @event `init`: Emitted on a document after it has was retreived from the db and fully hydrated by Mongoose. + * @event `save`: Emitted when the document is successfully saved + * @api private + */ + +function Document (obj, fields, skipId) { + this.$__ = new InternalCache; + this.isNew = true; + this.errors = undefined; + + var schema = this.schema; + + if ('boolean' === typeof fields) { + this.$__.strictMode = fields; + fields = undefined; + } else { + this.$__.strictMode = schema.options && schema.options.strict; + this.$__.selected = fields; + } + + var required = schema.requiredPaths(); + for (var i = 0; i < required.length; ++i) { + this.$__.activePaths.require(required[i]); + } + + setMaxListeners.call(this, 0); + this._doc = this.$__buildDoc(obj, fields, skipId); + + if (obj) { + this.set(obj, undefined, true); + } + + this.$__registerHooks(); +} + +/*! + * Inherit from EventEmitter. + */ + +Document.prototype.__proto__ = EventEmitter.prototype; + +/** + * The documents schema. + * + * @api public + * @property schema + */ + +Document.prototype.schema; + +/** + * Boolean flag specifying if the document is new. + * + * @api public + * @property isNew + */ + +Document.prototype.isNew; + +/** + * The string version of this documents _id. + * + * ####Note: + * + * This getter exists on all documents by default. The getter can be disabled by setting the `id` [option](/docs/guide.html#id) of its `Schema` to false at construction time. + * + * new Schema({ name: String }, { id: false }); + * + * @api public + * @see Schema options /docs/guide.html#options + * @property id + */ + +Document.prototype.id; + +/** + * Hash containing current validation errors. + * + * @api public + * @property errors + */ + +Document.prototype.errors; + +/** + * Builds the default doc structure + * + * @param {Object} obj + * @param {Object} [fields] + * @param {Boolean} [skipId] + * @return {Object} + * @api private + * @method $__buildDoc + * @memberOf Document + */ + +Document.prototype.$__buildDoc = function (obj, fields, skipId) { + var doc = {} + , self = this + , exclude + , keys + , key + , ki + + // determine if this doc is a result of a query with + // excluded fields + if (fields && 'Object' === fields.constructor.name) { + keys = Object.keys(fields); + ki = keys.length; + + while (ki--) { + if ('_id' !== keys[ki]) { + exclude = 0 === fields[keys[ki]]; + break; + } + } + } + + var paths = Object.keys(this.schema.paths) + , plen = paths.length + , ii = 0 + + for (; ii < plen; ++ii) { + var p = paths[ii]; + + if ('_id' == p) { + if (skipId) continue; + if (obj && '_id' in obj) continue; + } + + var type = this.schema.paths[p] + , path = p.split('.') + , len = path.length + , last = len-1 + , doc_ = doc + , i = 0 + + for (; i < len; ++i) { + var piece = path[i] + , def + + if (i === last) { + if (fields) { + if (exclude) { + // apply defaults to all non-excluded fields + if (p in fields) continue; + + def = type.getDefault(self, true); + if ('undefined' !== typeof def) { + doc_[piece] = def; + self.$__.activePaths.default(p); + } + + } else if (p in fields) { + // selected field + def = type.getDefault(self, true); + if ('undefined' !== typeof def) { + doc_[piece] = def; + self.$__.activePaths.default(p); + } + } + } else { + def = type.getDefault(self, true); + if ('undefined' !== typeof def) { + doc_[piece] = def; + self.$__.activePaths.default(p); + } + } + } else { + doc_ = doc_[piece] || (doc_[piece] = {}); + } + } + }; + + return doc; +}; + +/** + * Initializes the document without setters or marking anything modified. + * + * Called internally after a document is returned from mongodb. + * + * @param {Object} doc document returned by mongo + * @param {Function} fn callback + * @api private + */ + +Document.prototype.init = function (doc, opts, fn) { + // do not prefix this method with $__ since its + // used by public hooks + + if ('function' == typeof opts) { + fn = opts; + opts = null; + } + + this.isNew = false; + + // handle docs with populated paths + if (doc._id && opts && opts.populated && opts.populated.length) { + var id = String(doc._id); + for (var i = 0; i < opts.populated.length; ++i) { + var item = opts.populated[i]; + this.populated(item.path, item._docs[id], item); + } + } + + init(this, doc, this._doc); + this.$__storeShard(); + + this.emit('init', this); + if (fn) fn(null); + return this; +}; + +/*! + * Init helper. + * + * @param {Object} self document instance + * @param {Object} obj raw mongodb doc + * @param {Object} doc object we are initializing + * @api private + */ + +function init (self, obj, doc, prefix) { + prefix = prefix || ''; + + var keys = Object.keys(obj) + , len = keys.length + , schema + , path + , i; + + while (len--) { + i = keys[len]; + path = prefix + i; + schema = self.schema.path(path); + + if (!schema && utils.isObject(obj[i]) && + (!obj[i].constructor || 'Object' == obj[i].constructor.name)) { + // assume nested object + if (!doc[i]) doc[i] = {}; + init(self, obj[i], doc[i], path + '.'); + } else { + if (obj[i] === null) { + doc[i] = null; + } else if (obj[i] !== undefined) { + if (schema) { + self.$__try(function(){ + doc[i] = schema.cast(obj[i], self, true); + }); + } else { + doc[i] = obj[i]; + } + } + // mark as hydrated + self.$__.activePaths.init(path); + } + } +}; + +/** + * Stores the current values of the shard keys. + * + * ####Note: + * + * _Shard key values do not / are not allowed to change._ + * + * @api private + * @method $__storeShard + * @memberOf Document + */ + +Document.prototype.$__storeShard = function () { + // backwards compat + var key = this.schema.options.shardKey || this.schema.options.shardkey; + if (!(key && 'Object' == key.constructor.name)) return; + + var orig = this.$__.shardval = {} + , paths = Object.keys(key) + , len = paths.length + , val + + for (var i = 0; i < len; ++i) { + val = this.getValue(paths[i]); + if (isMongooseObject(val)) { + orig[paths[i]] = val.toObject({ depopulate: true }) + } else if (null != val && val.valueOf) { + orig[paths[i]] = val.valueOf(); + } else { + orig[paths[i]] = val; + } + } +} + +/*! + * Set up middleware support + */ + +for (var k in hooks) { + Document.prototype[k] = Document[k] = hooks[k]; +} + +/** + * Sends an update command with this document `_id` as the query selector. + * + * ####Example: + * + * weirdCar.update({$inc: {wheels:1}}, { w: 1 }, callback); + * + * ####Valid options: + * + * - same as in [Model.update](#model_Model.update) + * + * @see Model.update #model_Model.update + * @param {Object} doc + * @param {Object} options + * @param {Function} callback + * @return {Query} + * @api public + */ + +Document.prototype.update = function update () { + var args = utils.args(arguments); + args.unshift({_id: this._id}); + return this.constructor.update.apply(this.constructor, args); +} + +/** + * Sets the value of a path, or many paths. + * + * ####Example: + * + * // path, value + * doc.set(path, value) + * + * // object + * doc.set({ + * path : value + * , path2 : { + * path : value + * } + * }) + * + * // only-the-fly cast to number + * doc.set(path, value, Number) + * + * // only-the-fly cast to string + * doc.set(path, value, String) + * + * // changing strict mode behavior + * doc.set(path, value, { strict: false }); + * + * @param {String|Object} path path or object of key/vals to set + * @param {Any} val the value to set + * @param {Schema|String|Number|Buffer|etc..} [type] optionally specify a type for "on-the-fly" attributes + * @param {Object} [options] optionally specify options that modify the behavior of the set + * @api public + */ + +Document.prototype.set = function (path, val, type, options) { + if (type && 'Object' == type.constructor.name) { + options = type; + type = undefined; + } + + var merge = options && options.merge + , adhoc = type && true !== type + , constructing = true === type + , adhocs + + var strict = options && 'strict' in options + ? options.strict + : this.$__.strictMode; + + if (adhoc) { + adhocs = this.$__.adhocPaths || (this.$__.adhocPaths = {}); + adhocs[path] = Schema.interpretAsType(path, type); + } + + if ('string' !== typeof path) { + // new Document({ key: val }) + + if (null === path || undefined === path) { + var _ = path; + path = val; + val = _; + + } else { + var prefix = val + ? val + '.' + : ''; + + if (path instanceof Document) path = path._doc; + + var keys = Object.keys(path) + , i = keys.length + , pathtype + , key + + while (i--) { + key = keys[i]; + pathtype = this.schema.pathType(prefix + key); + if (null != path[key] + // need to know if plain object - no Buffer, ObjectId, etc + && utils.isObject(path[key]) + && (!path[key].constructor || 'Object' == path[key].constructor.name) + && 'virtual' != pathtype + && !(this.$__path(prefix + key) instanceof MixedSchema)) { + this.set(path[key], prefix + key, constructing); + } else if (strict) { + if ('real' === pathtype || 'virtual' === pathtype) { + this.set(prefix + key, path[key], constructing); + } else if ('throw' == strict) { + throw new Error("Field `" + key + "` is not in schema."); + } + } else if (undefined !== path[key]) { + this.set(prefix + key, path[key], constructing); + } + } + + return this; + } + } + + // ensure _strict is honored for obj props + // docschema = new Schema({ path: { nest: 'string' }}) + // doc.set('path', obj); + var pathType = this.schema.pathType(path); + if ('nested' == pathType && val && utils.isObject(val) && + (!val.constructor || 'Object' == val.constructor.name)) { + if (!merge) this.setValue(path, null); + this.set(val, path, constructing); + return this; + } + + var schema; + var parts = path.split('.'); + + if ('adhocOrUndefined' == pathType && strict) { + + // check for roots that are Mixed types + var mixed; + + for (var i = 0; i < parts.length; ++i) { + var subpath = parts.slice(0, i+1).join('.'); + schema = this.schema.path(subpath); + if (schema instanceof MixedSchema) { + // allow changes to sub paths of mixed types + mixed = true; + break; + } + } + + if (!mixed) { + if ('throw' == strict) { + throw new Error("Field `" + path + "` is not in schema."); + } + return this; + } + + } else if ('virtual' == pathType) { + schema = this.schema.virtualpath(path); + schema.applySetters(val, this); + return this; + } else { + schema = this.$__path(path); + } + + var pathToMark; + + // When using the $set operator the path to the field must already exist. + // Else mongodb throws: "LEFT_SUBFIELD only supports Object" + + if (parts.length <= 1) { + pathToMark = path; + } else { + for (var i = 0; i < parts.length; ++i) { + var subpath = parts.slice(0, i+1).join('.'); + if (this.isDirectModified(subpath) // earlier prefixes that are already + // marked as dirty have precedence + || this.get(subpath) === null) { + pathToMark = subpath; + break; + } + } + + if (!pathToMark) pathToMark = path; + } + + // if this doc is being constructed we should not trigger getters + var priorVal = constructing + ? undefined + : this.get(path); + + if (!schema || null === val || undefined === val) { + this.$__set(pathToMark, path, constructing, parts, schema, val, priorVal); + return this; + } + + var self = this; + var shouldSet = this.$__try(function(){ + val = schema.applySetters(val, self, false, priorVal); + }); + + if (shouldSet) { + this.$__set(pathToMark, path, constructing, parts, schema, val, priorVal); + } + + return this; +} + +/** + * Determine if we should mark this change as modified. + * + * @return {Boolean} + * @api private + * @method $__shouldModify + * @memberOf Document + */ + +Document.prototype.$__shouldModify = function ( + pathToMark, path, constructing, parts, schema, val, priorVal) { + + if (this.isNew) return true; + if (this.isDirectModified(pathToMark)) return false; + + if (undefined === val && !this.isSelected(path)) { + // when a path is not selected in a query, its initial + // value will be undefined. + return true; + } + + if (undefined === val && path in this.$__.activePaths.states.default) { + // we're just unsetting the default value which was never saved + return false; + } + + if (!deepEqual(val, priorVal || this.get(path))) { + return true; + } + + if (!constructing && + null != val && + path in this.$__.activePaths.states.default && + deepEqual(val, schema.getDefault(this, constructing))) { + // a path with a default was $unset on the server + // and the user is setting it to the same value again + return true; + } + + return false; +} + +/** + * Handles the actual setting of the value and marking the path modified if appropriate. + * + * @api private + * @method $__set + * @memberOf Document + */ + +Document.prototype.$__set = function ( + pathToMark, path, constructing, parts, schema, val, priorVal) { + + var shouldModify = this.$__shouldModify.apply(this, arguments); + + if (shouldModify) { + this.markModified(pathToMark, val); + + // handle directly setting arrays (gh-1126) + MongooseArray || (MongooseArray = require('./types/array')); + if (val instanceof MongooseArray) { + val._registerAtomic('$set', val); + } + } + + var obj = this._doc + , i = 0 + , l = parts.length + + for (; i < l; i++) { + var next = i + 1 + , last = next === l; + + if (last) { + obj[parts[i]] = val; + } else { + if (obj[parts[i]] && 'Object' === obj[parts[i]].constructor.name) { + obj = obj[parts[i]]; + } else if (obj[parts[i]] && Array.isArray(obj[parts[i]])) { + obj = obj[parts[i]]; + } else { + obj = obj[parts[i]] = {}; + } + } + } +} + +/** + * Gets a raw value from a path (no getters) + * + * @param {String} path + * @api private + */ + +Document.prototype.getValue = function (path) { + return utils.getValue(path, this._doc); +} + +/** + * Sets a raw value for a path (no casting, setters, transformations) + * + * @param {String} path + * @param {Object} value + * @api private + */ + +Document.prototype.setValue = function (path, val) { + utils.setValue(path, val, this._doc); + return this; +} + +/** + * Returns the value of a path. + * + * ####Example + * + * // path + * doc.get('age') // 47 + * + * // dynamic casting to a string + * doc.get('age', String) // "47" + * + * @param {String} path + * @param {Schema|String|Number|Buffer|etc..} [type] optionally specify a type for on-the-fly attributes + * @api public + */ + +Document.prototype.get = function (path, type) { + var adhocs; + if (type) { + adhocs = this.$__.adhocPaths || (this.$__.adhocPaths = {}); + adhocs[path] = Schema.interpretAsType(path, type); + } + + var schema = this.$__path(path) || this.schema.virtualpath(path) + , pieces = path.split('.') + , obj = this._doc; + + for (var i = 0, l = pieces.length; i < l; i++) { + obj = undefined === obj || null === obj + ? undefined + : obj[pieces[i]]; + } + + if (schema) { + obj = schema.applyGetters(obj, this); + } + + return obj; +}; + +/** + * Returns the schematype for the given `path`. + * + * @param {String} path + * @api private + * @method $__path + * @memberOf Document + */ + +Document.prototype.$__path = function (path) { + var adhocs = this.$__.adhocPaths + , adhocType = adhocs && adhocs[path]; + + if (adhocType) { + return adhocType; + } else { + return this.schema.path(path); + } +}; + +/** + * Marks the path as having pending changes to write to the db. + * + * _Very helpful when using [Mixed](./schematypes.html#mixed) types._ + * + * ####Example: + * + * doc.mixed.type = 'changed'; + * doc.markModified('mixed.type'); + * doc.save() // changes to mixed.type are now persisted + * + * @param {String} path the path to mark modified + * @api public + */ + +Document.prototype.markModified = function (path) { + this.$__.activePaths.modify(path); +} + +/** + * Catches errors that occur during execution of `fn` and stores them to later be passed when `save()` is executed. + * + * @param {Function} fn function to execute + * @param {Object} scope the scope with which to call fn + * @api private + * @method $__try + * @memberOf Document + */ + +Document.prototype.$__try = function (fn, scope) { + var res; + try { + fn.call(scope); + res = true; + } catch (e) { + this.$__error(e); + res = false; + } + return res; +}; + +/** + * Returns the list of paths that have been modified. + * + * @return {Array} + * @api public + */ + +Document.prototype.modifiedPaths = function () { + var directModifiedPaths = Object.keys(this.$__.activePaths.states.modify); + + return directModifiedPaths.reduce(function (list, path) { + var parts = path.split('.'); + return list.concat(parts.reduce(function (chains, part, i) { + return chains.concat(parts.slice(0, i).concat(part).join('.')); + }, [])); + }, []); +}; + +/** + * Returns true if this document was modified, else false. + * + * If `path` is given, checks if a path or any full path containing `path` as part of its path chain has been modified. + * + * ####Example + * + * doc.set('documents.0.title', 'changed'); + * doc.isModified() // true + * doc.isModified('documents') // true + * doc.isModified('documents.0.title') // true + * doc.isDirectModified('documents') // false + * + * @param {String} [path] optional + * @return {Boolean} + * @api public + */ + +Document.prototype.isModified = function (path) { + return path + ? !!~this.modifiedPaths().indexOf(path) + : this.$__.activePaths.some('modify'); +}; + +/** + * Returns true if `path` was directly set and modified, else false. + * + * ####Example + * + * doc.set('documents.0.title', 'changed'); + * doc.isDirectModified('documents.0.title') // true + * doc.isDirectModified('documents') // false + * + * @param {String} path + * @return {Boolean} + * @api public + */ + +Document.prototype.isDirectModified = function (path) { + return (path in this.$__.activePaths.states.modify); +}; + +/** + * Checks if `path` was initialized. + * + * @param {String} path + * @return {Boolean} + * @api public + */ + +Document.prototype.isInit = function (path) { + return (path in this.$__.activePaths.states.init); +}; + +/** + * Checks if `path` was selected in the source query which initialized this document. + * + * ####Example + * + * Thing.findOne().select('name').exec(function (err, doc) { + * doc.isSelected('name') // true + * doc.isSelected('age') // false + * }) + * + * @param {String} path + * @return {Boolean} + * @api public + */ + +Document.prototype.isSelected = function isSelected (path) { + if (this.$__.selected) { + + if ('_id' === path) { + return 0 !== this.$__.selected._id; + } + + var paths = Object.keys(this.$__.selected) + , i = paths.length + , inclusive = false + , cur + + if (1 === i && '_id' === paths[0]) { + // only _id was selected. + return 0 === this.$__.selected._id; + } + + while (i--) { + cur = paths[i]; + if ('_id' == cur) continue; + inclusive = !! this.$__.selected[cur]; + break; + } + + if (path in this.$__.selected) { + return inclusive; + } + + i = paths.length; + var pathDot = path + '.'; + + while (i--) { + cur = paths[i]; + if ('_id' == cur) continue; + + if (0 === cur.indexOf(pathDot)) { + return inclusive; + } + + if (0 === pathDot.indexOf(cur)) { + return inclusive; + } + } + + return ! inclusive; + } + + return true; +} + +/** + * Executes registered validation rules for this document. + * + * ####Note: + * + * This method is called `pre` save and if a validation rule is violated, [save](#model_Model-save) is aborted and the error is returned to your `callback`. + * + * ####Example: + * + * doc.validate(function (err) { + * if (err) handleError(err); + * else // validation passed + * }); + * + * @param {Function} cb called after validation completes, passing an error if one occurred + * @api public + */ + +Document.prototype.validate = function (cb) { + var self = this + + // only validate required fields when necessary + var paths = Object.keys(this.$__.activePaths.states.require).filter(function (path) { + if (!self.isSelected(path) && !self.isModified(path)) return false; + return true; + }); + + paths = paths.concat(Object.keys(this.$__.activePaths.states.init)); + paths = paths.concat(Object.keys(this.$__.activePaths.states.modify)); + paths = paths.concat(Object.keys(this.$__.activePaths.states.default)); + + if (0 === paths.length) { + complete(); + return this; + } + + var validating = {} + , total = 0; + + paths.forEach(validatePath); + return this; + + function validatePath (path) { + if (validating[path]) return; + + validating[path] = true; + total++; + + process.nextTick(function(){ + var p = self.schema.path(path); + if (!p) return --total || complete(); + + var val = self.getValue(path); + p.doValidate(val, function (err) { + if (err) { + self.invalidate( + path + , err + , undefined + , true // embedded docs + ); + } + --total || complete(); + }, self); + }); + } + + function complete () { + var err = self.$__.validationError; + self.$__.validationError = undefined; + self.emit('validate', self); + cb(err); + } +}; + +/** + * Marks a path as invalid, causing validation to fail. + * + * @param {String} path the field to invalidate + * @param {String|Error} err the error which states the reason `path` was invalid + * @param {Object|String|Number|any} value optional invalid value + * @api public + */ + +Document.prototype.invalidate = function (path, err, val) { + if (!this.$__.validationError) { + this.$__.validationError = new ValidationError(this); + } + + if (!err || 'string' === typeof err) { + // sniffing arguments: + // need to handle case where user does not pass value + // so our error message is cleaner + err = 2 < arguments.length + ? new ValidatorError(path, err, val) + : new ValidatorError(path, err) + } + + this.$__.validationError.errors[path] = err; +} + +/** + * Resets the internal modified state of this document. + * + * @api private + * @return {Document} + * @method $__reset + * @memberOf Document + */ + +Document.prototype.$__reset = function reset () { + var self = this; + DocumentArray || (DocumentArray = require('./types/documentarray')); + + this.$__.activePaths + .map('init', 'modify', function (i) { + return self.getValue(i); + }) + .filter(function (val) { + return val && val instanceof DocumentArray && val.length; + }) + .forEach(function (array) { + var i = array.length; + while (i--) { + var doc = array[i]; + if (!doc) continue; + doc.$__reset(); + } + }); + + // clear atomics + this.$__dirty().forEach(function (dirt) { + var type = dirt.value; + if (type && type._atomics) { + type._atomics = {}; + } + }); + + // Clear 'modify'('dirty') cache + this.$__.activePaths.clear('modify'); + this.$__.validationError = undefined; + this.errors = undefined; + var self = this; + this.schema.requiredPaths().forEach(function (path) { + self.$__.activePaths.require(path); + }); + + return this; +} + +/** + * Returns this documents dirty paths / vals. + * + * @api private + * @method $__dirty + * @memberOf Document + */ + +Document.prototype.$__dirty = function () { + var self = this; + + var all = this.$__.activePaths.map('modify', function (path) { + return { path: path + , value: self.getValue(path) + , schema: self.$__path(path) }; + }); + + // Sort dirty paths in a flat hierarchy. + all.sort(function (a, b) { + return (a.path < b.path ? -1 : (a.path > b.path ? 1 : 0)); + }); + + // Ignore "foo.a" if "foo" is dirty already. + var minimal = [] + , lastPath + , top; + + all.forEach(function (item, i) { + if (item.path.indexOf(lastPath) !== 0) { + lastPath = item.path + '.'; + minimal.push(item); + top = item; + } else { + // special case for top level MongooseArrays + if (top.value && top.value._atomics && top.value.hasAtomics()) { + // the `top` array itself and a sub path of `top` are being modified. + // the only way to honor all of both modifications is through a $set + // of entire array. + top.value._atomics = {}; + top.value._atomics.$set = top.value; + } + } + }); + + top = lastPath = null; + return minimal; +} + +/*! + * Compiles schemas. + */ + +function compile (tree, proto, prefix) { + var keys = Object.keys(tree) + , i = keys.length + , limb + , key; + + while (i--) { + key = keys[i]; + limb = tree[key]; + + define(key + , (('Object' === limb.constructor.name + && Object.keys(limb).length) + && (!limb.type || limb.type.type) + ? limb + : null) + , proto + , prefix + , keys); + } +}; + +/*! + * Defines the accessor named prop on the incoming prototype. + */ + +function define (prop, subprops, prototype, prefix, keys) { + var prefix = prefix || '' + , path = (prefix ? prefix + '.' : '') + prop; + + if (subprops) { + + Object.defineProperty(prototype, prop, { + enumerable: true + , get: function () { + if (!this.$__.getters) + this.$__.getters = {}; + + if (!this.$__.getters[path]) { + var nested = Object.create(this); + + // save scope for nested getters/setters + if (!prefix) nested.$__.scope = this; + + // shadow inherited getters from sub-objects so + // thing.nested.nested.nested... doesn't occur (gh-366) + var i = 0 + , len = keys.length; + + for (; i < len; ++i) { + // over-write the parents getter without triggering it + Object.defineProperty(nested, keys[i], { + enumerable: false // It doesn't show up. + , writable: true // We can set it later. + , configurable: true // We can Object.defineProperty again. + , value: undefined // It shadows its parent. + }); + } + + nested.toObject = function () { + return this.get(path); + }; + + compile(subprops, nested, path); + this.$__.getters[path] = nested; + } + + return this.$__.getters[path]; + } + , set: function (v) { + if (v instanceof Document) v = v.toObject(); + return (this.$__.scope || this).set(path, v); + } + }); + + } else { + + Object.defineProperty(prototype, prop, { + enumerable: true + , get: function ( ) { return this.get.call(this.$__.scope || this, path); } + , set: function (v) { return this.set.call(this.$__.scope || this, path, v); } + }); + } +}; + +/** + * Assigns/compiles `schema` into this documents prototype. + * + * @param {Schema} schema + * @api private + * @method $__setSchema + * @memberOf Document + */ + +Document.prototype.$__setSchema = function (schema) { + compile(schema.tree, this); + this.schema = schema; +} + +/** + * Register default hooks + * + * @api private + * @method $__registerHooks + * @memberOf Document + */ + +Document.prototype.$__registerHooks = function () { + if (!this.save) return; + + DocumentArray || (DocumentArray = require('./types/documentarray')); + + this.pre('save', function (next) { + // validate all document arrays. + // we keep the error semaphore to make sure we don't + // call `save` unnecessarily (we only need 1 error) + var subdocs = 0 + , error = false + , self = this; + + // check for DocumentArrays + var arrays = this.$__.activePaths + .map('init', 'modify', function (i) { + return self.getValue(i); + }) + .filter(function (val) { + return val && val instanceof DocumentArray && val.length; + }); + + if (!arrays.length) + return next(); + + arrays.forEach(function (array) { + if (error) return; + + // handle sparse arrays by using for loop vs array.forEach + // which skips the sparse elements + + var len = array.length + subdocs += len; + + for (var i = 0; i < len; ++i) { + if (error) break; + + var doc = array[i]; + if (!doc) { + --subdocs || next(); + continue; + } + + doc.save(handleSave); + } + }); + + function handleSave (err) { + if (error) return; + + if (err) { + self.$__.validationError = undefined; + return next(error = err); + } + + --subdocs || next(); + } + + }, function (err) { + // emit on the Model if listening + if (this.constructor.listeners('error').length) { + this.constructor.emit('error', err); + } else { + // emit on the connection + if (!this.db.listeners('error').length) { + err.stack = 'No listeners detected, throwing. ' + + 'Consider adding an error listener to your connection.\n' + + err.stack + } + this.db.emit('error', err); + } + }).pre('save', function checkForExistingErrors (next) { + // if any doc.set() calls failed + var err = this.$__.saveError; + if (err) { + this.$__.saveError = null; + next(err); + } else { + next(); + } + }).pre('save', function validation (next) { + return this.validate(next); + }); + + // add user defined queues + this.$__doQueue(); +}; + +/** + * Registers an error + * + * @param {Error} err + * @api private + * @method $__error + * @memberOf Document + */ + +Document.prototype.$__error = function (err) { + this.$__.saveError = err; + return this; +}; + +/** + * Executes methods queued from the Schema definition + * + * @api private + * @method $__doQueue + * @memberOf Document + */ + +Document.prototype.$__doQueue = function () { + var q = this.schema && this.schema.callQueue; + if (q) { + for (var i = 0, l = q.length; i < l; i++) { + this[q[i][0]].apply(this, q[i][1]); + } + } + return this; +}; + +/** + * Converts this document into a plain javascript object, ready for storage in MongoDB. + * + * Buffers are converted to instances of [mongodb.Binary](http://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html) for proper storage. + * + * ####Options: + * + * - `getters` apply all getters (path and virtual getters) + * - `virtuals` apply virtual getters (can override `getters` option) + * - `minimize` remove empty objects (defaults to true) + * - `transform` a transform function to apply to the resulting document before returning + * + * ####Getters/Virtuals + * + * Example of only applying path getters + * + * doc.toObject({ getters: true, virtuals: false }) + * + * Example of only applying virtual getters + * + * doc.toObject({ virtuals: true }) + * + * Example of applying both path and virtual getters + * + * doc.toObject({ getters: true }) + * + * To apply these options to every document of your schema by default, set your [schemas](#schema_Schema) `toObject` option to the same argument. + * + * schema.set('toObject', { virtuals: true }) + * + * ####Transform + * + * We may need to perform a transformation of the resulting object based on some criteria, say to remove some sensitive information or return a custom object. In this case we set the optional `transform` function. + * + * Transform functions receive three arguments + * + * function (doc, ret, options) {} + * + * - `doc` The mongoose document which is being converted + * - `ret` The plain object representation which has been converted + * - `options` The options in use (either schema options or the options passed inline) + * + * ####Example + * + * // specify the transform schema option + * schema.options.toObject.transform = function (doc, ret, options) { + * // remove the _id of every document before returning the result + * delete ret._id; + * } + * + * // without the transformation in the schema + * doc.toObject(); // { _id: 'anId', name: 'Wreck-it Ralph' } + * + * // with the transformation + * doc.toObject(); // { name: 'Wreck-it Ralph' } + * + * With transformations we can do a lot more than remove properties. We can even return completely new customized objects: + * + * schema.options.toObject.transform = function (doc, ret, options) { + * return { movie: ret.name } + * } + * + * // without the transformation in the schema + * doc.toObject(); // { _id: 'anId', name: 'Wreck-it Ralph' } + * + * // with the transformation + * doc.toObject(); // { movie: 'Wreck-it Ralph' } + * + * _Note: if a transform function returns `undefined`, the return value will be ignored._ + * + * Transformations may also be applied inline, overridding any transform set in the options: + * + * function xform (doc, ret, options) { + * return { inline: ret.name, custom: true } + * } + * + * // pass the transform as an inline option + * doc.toObject({ transform: xform }); // { inline: 'Wreck-it Ralph', custom: true } + * + * _Note: if you call `toObject` and pass any options, the transform declared in your schema options will __not__ be applied. To force its application pass `transform: true`_ + * + * schema.options.toObject.hide = '_id'; + * schema.options.toObject.transform = function (doc, ret, options) { + * if (options.hide) { + * options.hide.split(' ').forEach(function (prop) { + * delete ret[prop]; + * }); + * } + * } + * + * var doc = new Doc({ _id: 'anId', secret: 47, name: 'Wreck-it Ralph' }); + * doc.toObject(); // { secret: 47, name: 'Wreck-it Ralph' } + * doc.toObject({ hide: 'secret _id' }); // { _id: 'anId', secret: 47, name: 'Wreck-it Ralph' } + * doc.toObject({ hide: 'secret _id', transform: true }); // { name: 'Wreck-it Ralph' } + * + * Transforms are applied to the document _and each of its sub-documents_. To determine whether or not you are currently operating on a sub-document you might use the following guard: + * + * if ('function' == typeof doc.ownerDocument) { + * // working with a sub doc + * } + * + * Transforms, like all of these options, are also available for `toJSON`. + * + * See [schema options](/docs/guide.html#toObject) for some more details. + * + * @param {Object} [options] + * @return {Object} js object + * @see mongodb.Binary http://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html + * @api public + */ + +Document.prototype.toObject = function (options) { + if (options && options.depopulate && this.$__.wasPopulated) { + // populated paths that we set to a document + return clone(this._id, options); + } + + // When internally saving this document we always pass options, + // bypassing the custom schema options. + if (!(options && 'Object' == options.constructor.name)) { + options = this.schema.options.toObject + ? clone(this.schema.options.toObject) + : {}; + } + + ;('minimize' in options) || (options.minimize = this.schema.options.minimize); + + var ret = clone(this._doc, options); + + if (options.virtuals || options.getters && false !== options.virtuals) { + applyGetters(this, ret, 'virtuals', options); + } + + if (options.getters) { + applyGetters(this, ret, 'paths', options); + } + + if (true === options.transform) { + var opts = options.json + ? this.schema.options.toJSON + : this.schema.options.toObject; + if (opts) { + options.transform = opts.transform; + } + } + + if ('function' == typeof options.transform) { + var xformed = options.transform(this, ret, options); + if ('undefined' != typeof xformed) ret = xformed; + } + + return ret; +}; + +/*! + * Applies virtuals properties to `json`. + * + * @param {Document} self + * @param {Object} json + * @param {String} type either `virtuals` or `paths` + * @return {Object} `json` + */ + +function applyGetters (self, json, type, options) { + var schema = self.schema + , paths = Object.keys(schema[type]) + , i = paths.length + , path + + while (i--) { + path = paths[i]; + + var parts = path.split('.') + , plen = parts.length + , last = plen - 1 + , branch = json + , part + + for (var ii = 0; ii < plen; ++ii) { + part = parts[ii]; + if (ii === last) { + branch[part] = clone(self.get(path), options); + } else { + branch = branch[part] || (branch[part] = {}); + } + } + } + + return json; +} + +/** + * The return value of this method is used in calls to JSON.stringify(doc). + * + * This method accepts the same options as [Document#toObject](#document_Document-toObject). To apply the options to every document of your schema by default, set your [schemas](#schema_Schema) `toJSON` option to the same argument. + * + * schema.set('toJSON', { virtuals: true }) + * + * See [schema options](/docs/guide.html#toJSON) for details. + * + * @param {Object} options same options as [Document#toObject](#document_Document-toObject) + * @return {Object} + * @see Document#toObject #document_Document-toObject + + * @api public + */ + +Document.prototype.toJSON = function (options) { + // check for object type since an array of documents + // being stringified passes array indexes instead + // of options objects. JSON.stringify([doc, doc]) + if (!(options && 'Object' == options.constructor.name)) { + options = this.schema.options.toJSON + ? clone(this.schema.options.toJSON) + : {}; + } + options.json = true; + return this.toObject(options); +}; + +/** + * Helper for console.log + * + * @api public + */ + +Document.prototype.inspect = function (options) { + var opts = options && 'Object' == options.constructor.name ? options : + this.schema.options.toObject ? clone(this.schema.options.toObject) : + {}; + opts.minimize = false; + return inspect(this.toObject(opts)); +}; + +/** + * Helper for console.log + * + * @api public + * @method toString + */ + +Document.prototype.toString = Document.prototype.inspect; + +/** + * Returns true if the Document stores the same data as doc. + * + * Documents are considered equal when they have matching `_id`s. + * + * @param {Document} doc a document to compare + * @return {Boolean} + * @api public + */ + +Document.prototype.equals = function (doc) { + var tid = this.get('_id'); + var docid = doc.get('_id'); + return tid.equals + ? tid.equals(docid) + : tid === docid; +} + +/** + * Populates document references, executing the `callback` when complete. + * + * ####Example: + * + * doc + * .populate('company') + * .populate({ + * path: 'notes', + * match: /airline/, + * select: 'text', + * model: 'modelName' + * options: opts + * }, function (err, user) { + * assert(doc._id == user._id) // the document itself is passed + * }) + * + * // summary + * doc.populate(path) // not executed + * doc.populate(options); // not executed + * doc.populate(path, callback) // executed + * doc.populate(options, callback); // executed + * doc.populate(callback); // executed + * + * + * ####NOTE: + * + * Population does not occur unless a `callback` is passed. + * Passing the same path a second time will overwrite the previous path options. + * See [Model.populate()](#model_Model.populate) for explaination of options. + * + * @see Model.populate #model_Model.populate + * @param {String|Object} [path] The path to populate or an options object + * @param {Function} [callback] When passed, population is invoked + * @api public + * @return {Document} this + */ + +Document.prototype.populate = function populate () { + if (0 === arguments.length) return this; + + var pop = this.$__.populate || (this.$__.populate = {}); + var args = utils.args(arguments); + var fn; + + if ('function' == typeof args[args.length-1]) { + fn = args.pop(); + } + + // allow `doc.populate(callback)` + if (args.length) { + // use hash to remove duplicate paths + var res = utils.populate.apply(null, args); + for (var i = 0; i < res.length; ++i) { + pop[res[i].path] = res[i]; + } + } + + if (fn) { + var paths = utils.object.vals(pop); + this.$__.populate = undefined; + this.constructor.populate(this, paths, fn); + } + + return this; +} + +/** + * Gets _id(s) used during population of the given `path`. + * + * ####Example: + * + * Model.findOne().populate('author').exec(function (err, doc) { + * console.log(doc.author.name) // Dr.Seuss + * console.log(doc.populated('author')) // '5144cf8050f071d979c118a7' + * }) + * + * If the path was not populated, undefined is returned. + * + * @param {String} path + * @return {Array|ObjectId|Number|Buffer|String|undefined} + * @api public + */ + +Document.prototype.populated = function (path, val, options) { + // val and options are internal + + if (null == val) { + if (!this.$__.populated) return undefined; + var v = this.$__.populated[path]; + if (v) return v.value; + return undefined; + } + + // internal + + if (true === val) { + if (!this.$__.populated) return undefined; + return this.$__.populated[path]; + } + + this.$__.populated || (this.$__.populated = {}); + this.$__.populated[path] = { value: val, options: options }; + return val; +} + +/** + * Returns the full path to this document. + * + * @param {String} [path] + * @return {String} + * @api private + * @method $__fullPath + * @memberOf Document + */ + +Document.prototype.$__fullPath = function (path) { + // overridden in SubDocuments + return path || ''; +} + +/*! + * Module exports. + */ + +Document.ValidationError = ValidationError; +module.exports = exports = Document; +exports.Error = DocumentError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md new file mode 100644 index 0000000..6464693 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md @@ -0,0 +1,4 @@ + +# Driver Spec + +TODO diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js new file mode 100644 index 0000000..0480d31 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js @@ -0,0 +1,8 @@ + +/*! + * Module dependencies. + */ + +var Binary = require('mongodb').BSONPure.Binary; + +module.exports = exports = Binary; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js new file mode 100644 index 0000000..da0f6e7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js @@ -0,0 +1,211 @@ + +/*! + * Module dependencies. + */ + +var MongooseCollection = require('../../collection') + , Collection = require('mongodb').Collection + , STATES = require('../../connectionstate') + , utils = require('../../utils') + +/** + * A [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) collection implementation. + * + * All methods methods from the [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) driver are copied and wrapped in queue management. + * + * @inherits Collection + * @api private + */ + +function NativeCollection () { + this.collection = null; + MongooseCollection.apply(this, arguments); +} + +/*! + * Inherit from abstract Collection. + */ + +NativeCollection.prototype.__proto__ = MongooseCollection.prototype; + +/** + * Called when the connection opens. + * + * @api private + */ + +NativeCollection.prototype.onOpen = function () { + var self = this; + + // always get a new collection in case the user changed host:port + // of parent db instance when re-opening the connection. + + if (!self.opts.capped.size) { + // non-capped + return self.conn.db.collection(self.name, callback); + } + + // capped + return self.conn.db.collection(self.name, function (err, c) { + if (err) return callback(err); + + // discover if this collection exists and if it is capped + c.options(function (err, exists) { + if (err) return callback(err); + + if (exists) { + if (exists.capped) { + callback(null, c); + } else { + var msg = 'A non-capped collection exists with this name.\n\n' + + ' To use this collection as a capped collection, please ' + + 'first convert it.\n' + + ' http://www.mongodb.org/display/DOCS/Capped+Collections#CappedCollections-Convertingacollectiontocapped' + err = new Error(msg); + callback(err); + } + } else { + // create + var opts = utils.clone(self.opts.capped); + opts.capped = true; + self.conn.db.createCollection(self.name, opts, callback); + } + }); + }); + + function callback (err, collection) { + if (err) { + // likely a strict mode error + self.conn.emit('error', err); + } else { + self.collection = collection; + MongooseCollection.prototype.onOpen.call(self); + } + }; +}; + +/** + * Called when the connection closes + * + * @api private + */ + +NativeCollection.prototype.onClose = function () { + MongooseCollection.prototype.onClose.call(this); +}; + +/*! + * Copy the collection methods and make them subject to queues + */ + +for (var i in Collection.prototype) { + (function(i){ + NativeCollection.prototype[i] = function () { + if (this.buffer) { + this.addQueue(i, arguments); + return; + } + + var collection = this.collection + , args = arguments + , self = this + , debug = self.conn.base.options.debug; + + if (debug) { + if ('function' === typeof debug) { + debug.apply(debug + , [self.name, i].concat(utils.args(args, 0, args.length-1))); + } else { + console.error('\x1B[0;36mMongoose:\x1B[0m %s.%s(%s) %s %s %s' + , self.name + , i + , print(args[0]) + , print(args[1]) + , print(args[2]) + , print(args[3])) + } + } + + collection[i].apply(collection, args); + }; + })(i); +} + +/*! + * Debug print helper + */ + +function print (arg) { + var type = typeof arg; + if ('function' === type || 'undefined' === type) return ''; + return format(arg); +} + +/*! + * Debug print helper + */ + +function format (obj, sub) { + var x = utils.clone(obj); + if (x) { + if ('Binary' === x.constructor.name) { + x = '[object Buffer]'; + } else if ('ObjectID' === x.constructor.name) { + var representation = 'ObjectId("' + x.toHexString() + '")'; + x = { inspect: function() { return representation; } }; + } else if ('Date' === x.constructor.name) { + var representation = 'new Date("' + x.toUTCString() + '")'; + x = { inspect: function() { return representation; } }; + } else if ('Object' === x.constructor.name) { + var keys = Object.keys(x) + , i = keys.length + , key + while (i--) { + key = keys[i]; + if (x[key]) { + if ('Binary' === x[key].constructor.name) { + x[key] = '[object Buffer]'; + } else if ('Object' === x[key].constructor.name) { + x[key] = format(x[key], true); + } else if ('ObjectID' === x[key].constructor.name) { + ;(function(x){ + var representation = 'ObjectId("' + x[key].toHexString() + '")'; + x[key] = { inspect: function() { return representation; } }; + })(x) + } else if ('Date' === x[key].constructor.name) { + ;(function(x){ + var representation = 'new Date("' + x[key].toUTCString() + '")'; + x[key] = { inspect: function() { return representation; } }; + })(x) + } else if (Array.isArray(x[key])) { + x[key] = x[key].map(function (o) { + return format(o, true) + }); + } + } + } + } + if (sub) return x; + } + + return require('util') + .inspect(x, false, 10, true) + .replace(/\n/g, '') + .replace(/\s{2,}/g, ' ') +} + +/** + * Retreives information about this collections indexes. + * + * @param {Function} callback + * @method getIndexes + * @api public + */ + +NativeCollection.prototype.getIndexes = NativeCollection.prototype.indexInformation; + +/*! + * Module exports. + */ + +module.exports = NativeCollection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js new file mode 100644 index 0000000..fb894fc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js @@ -0,0 +1,299 @@ +/*! + * Module dependencies. + */ + +var MongooseConnection = require('../../connection') + , mongo = require('mongodb') + , Server = mongo.Server + , STATES = require('../../connectionstate') + , ReplSetServers = mongo.ReplSetServers; + +/** + * A [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) connection implementation. + * + * @inherits Connection + * @api private + */ + +function NativeConnection() { + MongooseConnection.apply(this, arguments); + this._listening = false; +}; + +/*! + * Inherits from Connection. + */ + +NativeConnection.prototype.__proto__ = MongooseConnection.prototype; + +/** + * Opens the connection to MongoDB. + * + * @param {Function} fn + * @return {Connection} this + * @api private + */ + +NativeConnection.prototype.doOpen = function (fn) { + if (this.db) { + mute(this); + } + + var server = new mongo.Server(this.host, this.port, this.options.server); + this.db = new mongo.Db(this.name, server, this.options.db); + + var self = this; + this.db.open(function (err) { + if (err) return fn(err); + listen(self); + fn(); + }); + + return this; +}; + +/*! + * Register listeners for important events and bubble appropriately. + */ + +function listen (conn) { + if (conn._listening) return; + conn._listening = true; + + conn.db.on('close', function(){ + if (conn._closeCalled) return; + + // the driver never emits an `open` event. auto_reconnect still + // emits a `close` event but since we never get another + // `open` we can't emit close + if (conn.db.serverConfig.autoReconnect) { + conn.readyState = STATES.disconnected; + conn.emit('close'); + return; + } + conn.onClose(); + }); + conn.db.on('error', function(err){ + conn.emit('error', err); + }); + conn.db.on('timeout', function(err){ + var error = new Error(err && err.err || 'connection timeout'); + conn.emit('error', error); + }); + conn.db.on('open', function (err, db) { + if (STATES.disconnected === conn.readyState && db && db.databaseName) { + conn.readyState = STATES.connected; + conn.emit('reconnected') + } + }) +} + +/*! + * Remove listeners registered in `listen` + */ + +function mute (conn) { + if (!conn.db) throw new Error('missing db'); + conn.db.removeAllListeners("close"); + conn.db.removeAllListeners("error"); + conn.db.removeAllListeners("timeout"); + conn.db.removeAllListeners("open"); + conn.db.removeAllListeners("fullsetup"); + conn._listening = false; +} + +/** + * Opens a connection to a MongoDB ReplicaSet. + * + * See description of [doOpen](#NativeConnection-doOpen) for server options. In this case `options.replset` is also passed to ReplSetServers. + * + * @param {Function} fn + * @api private + * @return {Connection} this + */ + +NativeConnection.prototype.doOpenSet = function (fn) { + if (this.db) { + mute(this); + } + + var servers = [] + , self = this; + + this.hosts.forEach(function (server) { + var host = server.host || server.ipc; + var port = server.port || 27017; + servers.push(new mongo.Server(host, port, self.options.server)); + }) + + var server = new ReplSetServers(servers, this.options.replset); + this.db = new mongo.Db(this.name, server, this.options.db); + + this.db.on('fullsetup', function () { + self.emit('fullsetup') + }); + + this.db.open(function (err) { + if (err) return fn(err); + fn(); + listen(self); + }); + + return this; +}; + +/** + * Closes the connection + * + * @param {Function} fn + * @return {Connection} this + * @api private + */ + +NativeConnection.prototype.doClose = function (fn) { + this.db.close(); + if (fn) fn(); + return this; +} + +/** + * Prepares default connection options for the node-mongodb-native driver. + * + * _NOTE: `passed` options take precedence over connection string options._ + * + * @param {Object} passed options that were passed directly during connection + * @param {Object} [connStrOptions] options that were passed in the connection string + * @api private + */ + +NativeConnection.prototype.parseOptions = function (passed, connStrOpts) { + var o = passed || {}; + o.db || (o.db = {}); + o.auth || (o.auth = {}); + o.server || (o.server = {}); + o.replset || (o.replset = {}); + o.server.socketOptions || (o.server.socketOptions = {}); + o.replset.socketOptions || (o.replset.socketOptions = {}); + + var opts = connStrOpts || {}; + Object.keys(opts).forEach(function (name) { + switch (name) { + case 'poolSize': + if ('undefined' == typeof o.server.poolSize) { + o.server.poolSize = o.replset.poolSize = opts[name]; + } + break; + case 'slaveOk': + if ('undefined' == typeof o.server.slave_ok) { + o.server.slave_ok = opts[name]; + } + break; + case 'autoReconnect': + if ('undefined' == typeof o.server.auto_reconnect) { + o.server.auto_reconnect = opts[name]; + } + break; + case 'ssl': + case 'socketTimeoutMS': + case 'connectTimeoutMS': + if ('undefined' == typeof o.server.socketOptions[name]) { + o.server.socketOptions[name] = o.replset.socketOptions[name] = opts[name]; + } + break; + case 'authdb': + if ('undefined' == typeof o.auth.authdb) { + o.auth.authdb = opts[name]; + } + break; + case 'authSource': + if ('undefined' == typeof o.auth.authSource) { + o.auth.authSource = opts[name]; + } + break; + case 'retries': + case 'reconnectWait': + case 'rs_name': + if ('undefined' == typeof o.replset[name]) { + o.replset[name] = opts[name]; + } + break; + case 'replicaSet': + if ('undefined' == typeof o.replset.rs_name) { + o.replset.rs_name = opts[name]; + } + break; + case 'readSecondary': + if ('undefined' == typeof o.replset.read_secondary) { + o.replset.read_secondary = opts[name]; + } + break; + case 'nativeParser': + if ('undefined' == typeof o.db.native_parser) { + o.db.native_parser = opts[name]; + } + break; + case 'w': + case 'safe': + case 'fsync': + case 'journal': + case 'wtimeoutMS': + if ('undefined' == typeof o.db[name]) { + o.db[name] = opts[name]; + } + break; + case 'readPreference': + if ('undefined' == typeof o.db.read_preference) { + o.db.read_preference = opts[name]; + } + break; + case 'readPreferenceTags': + if ('undefined' == typeof o.db.read_preference_tags) { + o.db.read_preference_tags = opts[name]; + } + break; + } + }) + + if (!('auto_reconnect' in o.server)) { + o.server.auto_reconnect = true; + } + + if (!o.db.read_preference) { + // read from primaries by default + o.db.read_preference = 'primary'; + } + + // mongoose creates its own ObjectIds + o.db.forceServerObjectId = false; + + // default safe using new nomenclature + if (!('journal' in o.db || 'j' in o.db || + 'fsync' in o.db || 'safe' in o.db || 'w' in o.db)) { + o.db.w = 1; + } + + validate(o); + return o; +} + +/*! + * Validates the driver db options. + * + * @param {Object} o + */ + +function validate (o) { + if (-1 === o.db.w || 0 === o.db.w) { + if (o.db.journal || o.db.fsync || o.db.safe) { + throw new Error( + 'Invalid writeConcern: ' + + 'w set to -1 or 0 cannot be combined with safe|fsync|journal'); + } + } +} + +/*! + * Module exports. + */ + +module.exports = NativeConnection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js new file mode 100644 index 0000000..3c46c93 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js @@ -0,0 +1,29 @@ + +/*! + * [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) ObjectId + * @constructor NodeMongoDbObjectId + * @see ObjectId + */ + +var ObjectId = require('mongodb').BSONPure.ObjectID; + +/*! + * ignore + */ + +var ObjectIdToString = ObjectId.toString.bind(ObjectId); +module.exports = exports = ObjectId; + +ObjectId.fromString = function(str){ + // patch native driver bug in V0.9.6.4 + if (!('string' === typeof str && 24 === str.length)) { + throw new Error("Invalid ObjectId"); + } + + return ObjectId.createFromHexString(str); +}; + +ObjectId.toString = function(oid){ + if (!arguments.length) return ObjectIdToString(); + return oid.toHexString(); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js new file mode 100644 index 0000000..6d00f80 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js @@ -0,0 +1,39 @@ + +/** + * MongooseError constructor + * + * @param {String} msg Error message + * @inherits Error https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error + */ + +function MongooseError (msg) { + Error.call(this); + Error.captureStackTrace(this, arguments.callee); + this.message = msg; + this.name = 'MongooseError'; +}; + +/*! + * Inherits from Error. + */ + +MongooseError.prototype.__proto__ = Error.prototype; + +/*! + * Module exports. + */ + +module.exports = exports = MongooseError; + +/*! + * Expose subclasses + */ + +MongooseError.CastError = require('./errors/cast'); +MongooseError.DocumentError = require('./errors/document'); +MongooseError.ValidationError = require('./errors/validation') +MongooseError.ValidatorError = require('./errors/validator') +MongooseError.VersionError =require('./errors/version') +MongooseError.OverwriteModelError = require('./errors/overwriteModel') +MongooseError.MissingSchemaError = require('./errors/missingSchema') +MongooseError.DivergentArrayError = require('./errors/divergentArray') diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js new file mode 100644 index 0000000..055063a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js @@ -0,0 +1,35 @@ +/*! + * Module dependencies. + */ + +var MongooseError = require('../error'); + +/** + * Casting Error constructor. + * + * @param {String} type + * @param {String} value + * @inherits MongooseError + * @api private + */ + +function CastError (type, value, path) { + MongooseError.call(this, 'Cast to ' + type + ' failed for value "' + value + '" at path "' + path + '"'); + Error.captureStackTrace(this, arguments.callee); + this.name = 'CastError'; + this.type = type; + this.value = value; + this.path = path; +}; + +/*! + * Inherits from MongooseError. + */ + +CastError.prototype.__proto__ = MongooseError.prototype; + +/*! + * exports + */ + +module.exports = CastError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js new file mode 100644 index 0000000..45809bc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js @@ -0,0 +1,40 @@ + +/*! + * Module dependencies. + */ + +var MongooseError = require('../error'); + +/*! + * DivergentArrayError constructor. + * + * @inherits MongooseError + */ + +function DivergentArrayError (paths) { + var msg = 'For your own good, using `document.save()` to update an array ' + + 'which was selected using an $elemMatch projection OR ' + + 'populated using skip, limit, query conditions, or exclusion of ' + + 'the _id field when the operation results in a $pop or $set of ' + + 'the entire array is not supported. The following ' + + 'path(s) would have been modified unsafely:\n' + + ' ' + paths.join('\n ') + '\n' + + 'Use Model.update() to update these arrays instead.' + // TODO write up a docs page (FAQ) and link to it + + MongooseError.call(this, msg); + Error.captureStackTrace(this, arguments.callee); + this.name = 'DivergentArrayError'; +}; + +/*! + * Inherits from MongooseError. + */ + +DivergentArrayError.prototype.__proto__ = MongooseError.prototype; + +/*! + * exports + */ + +module.exports = DivergentArrayError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js new file mode 100644 index 0000000..6955256 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js @@ -0,0 +1,32 @@ + +/*! + * Module requirements + */ + +var MongooseError = require('../error') + +/** + * Document Error + * + * @param {String} msg + * @inherits MongooseError + * @api private + */ + +function DocumentError (msg) { + MongooseError.call(this, msg); + Error.captureStackTrace(this, arguments.callee); + this.name = 'DocumentError'; +}; + +/*! + * Inherits from MongooseError. + */ + +DocumentError.prototype.__proto__ = MongooseError.prototype; + +/*! + * Module exports. + */ + +module.exports = exports = DocumentError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js new file mode 100644 index 0000000..02a02ee --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js @@ -0,0 +1,32 @@ + +/*! + * Module dependencies. + */ + +var MongooseError = require('../error'); + +/*! + * MissingSchema Error constructor. + * + * @inherits MongooseError + */ + +function MissingSchemaError (name) { + var msg = 'Schema hasn\'t been registered for model "' + name + '".\n' + + 'Use mongoose.model(name, schema)'; + MongooseError.call(this, msg); + Error.captureStackTrace(this, arguments.callee); + this.name = 'MissingSchemaError'; +}; + +/*! + * Inherits from MongooseError. + */ + +MissingSchemaError.prototype.__proto__ = MongooseError.prototype; + +/*! + * exports + */ + +module.exports = MissingSchemaError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js new file mode 100644 index 0000000..2591581 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js @@ -0,0 +1,30 @@ + +/*! + * Module dependencies. + */ + +var MongooseError = require('../error'); + +/*! + * OverwriteModel Error constructor. + * + * @inherits MongooseError + */ + +function OverwriteModelError (name) { + MongooseError.call(this, 'Cannot overwrite `' + name + '` model once compiled.'); + Error.captureStackTrace(this, arguments.callee); + this.name = 'OverwriteModelError'; +}; + +/*! + * Inherits from MongooseError. + */ + +OverwriteModelError.prototype.__proto__ = MongooseError.prototype; + +/*! + * exports + */ + +module.exports = OverwriteModelError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js new file mode 100644 index 0000000..1679849 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js @@ -0,0 +1,49 @@ + +/*! + * Module requirements + */ + +var MongooseError = require('../error') + +/** + * Document Validation Error + * + * @api private + * @param {Document} instance + * @inherits MongooseError + */ + +function ValidationError (instance) { + MongooseError.call(this, "Validation failed"); + Error.captureStackTrace(this, arguments.callee); + this.name = 'ValidationError'; + this.errors = instance.errors = {}; +}; + +/** + * Console.log helper + */ + +ValidationError.prototype.toString = function () { + var ret = this.name + ': '; + var msgs = []; + + Object.keys(this.errors).forEach(function (key) { + if (this == this.errors[key]) return; + msgs.push(String(this.errors[key])); + }, this) + + return ret + msgs.join(', '); +}; + +/*! + * Inherits from MongooseError. + */ + +ValidationError.prototype.__proto__ = MongooseError.prototype; + +/*! + * Module exports + */ + +module.exports = exports = ValidationError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js new file mode 100644 index 0000000..2498b05 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js @@ -0,0 +1,51 @@ +/*! + * Module dependencies. + */ + +var MongooseError = require('../error'); + +/** + * Schema validator error + * + * @param {String} path + * @param {String} msg + * @param {String|Number|any} val + * @inherits MongooseError + * @api private + */ + +function ValidatorError (path, type, val) { + var msg = type + ? '"' + type + '" ' + : ''; + + var message = 'Validator ' + msg + 'failed for path ' + path + if (2 < arguments.length) message += ' with value `' + String(val) + '`'; + + MongooseError.call(this, message); + Error.captureStackTrace(this, arguments.callee); + this.name = 'ValidatorError'; + this.path = path; + this.type = type; + this.value = val; +}; + +/*! + * toString helper + */ + +ValidatorError.prototype.toString = function () { + return this.message; +} + +/*! + * Inherits from MongooseError + */ + +ValidatorError.prototype.__proto__ = MongooseError.prototype; + +/*! + * exports + */ + +module.exports = ValidatorError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js new file mode 100644 index 0000000..b2388aa --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js @@ -0,0 +1,31 @@ + +/*! + * Module dependencies. + */ + +var MongooseError = require('../error'); + +/** + * Version Error constructor. + * + * @inherits MongooseError + * @api private + */ + +function VersionError () { + MongooseError.call(this, 'No matching document found.'); + Error.captureStackTrace(this, arguments.callee); + this.name = 'VersionError'; +}; + +/*! + * Inherits from MongooseError. + */ + +VersionError.prototype.__proto__ = MongooseError.prototype; + +/*! + * exports + */ + +module.exports = VersionError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js new file mode 100644 index 0000000..ca4cfa0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js @@ -0,0 +1,580 @@ + +/*! + * Module dependencies. + */ + +var Schema = require('./schema') + , SchemaType = require('./schematype') + , VirtualType = require('./virtualtype') + , SchemaTypes = Schema.Types + , SchemaDefaults = require('./schemadefault') + , Types = require('./types') + , Query = require('./query') + , Promise = require('./promise') + , Model = require('./model') + , Document = require('./document') + , utils = require('./utils') + , format = utils.toCollectionName + , mongodb = require('mongodb') + +/** + * Mongoose constructor. + * + * The exports object of the `mongoose` module is an instance of this class. + * Most apps will only use this one instance. + * + * @api public + */ + +function Mongoose () { + this.connections = []; + this.plugins = []; + this.models = {}; + this.modelSchemas = {}; + this.options = {}; + this.createConnection(); // default connection +}; + +/** + * Sets mongoose options + * + * ####Example: + * + * mongoose.set('test', value) // sets the 'test' option to `value` + * + * mongoose.set('debug', true) // enable logging collection methods + arguments to the console + * + * @param {String} key + * @param {String} value + * @api public + */ + +Mongoose.prototype.set = function (key, value) { + if (arguments.length == 1) + return this.options[key]; + this.options[key] = value; + return this; +}; + +/** + * Gets mongoose options + * + * ####Example: + * + * mongoose.get('test') // returns the 'test' value + * + * @param {String} key + * @method get + * @api public + */ + +Mongoose.prototype.get = Mongoose.prototype.set; + +/*! + * ReplSet connection string check. + */ + +var rgxReplSet = /^.+,.+$/; + +/** + * Creates a Connection instance. + * + * Each `connection` instance maps to a single database. This method is helpful when mangaging multiple db connections. + * + * If arguments are passed, they are proxied to either [Connection#open](#connection_Connection-open) or [Connection#openSet](#connection_Connection-openSet) appropriately. This means we can pass `db`, `server`, and `replset` options to the driver. + * + * _Options passed take precedence over options included in connection strings._ + * + * ####Example: + * + * // with mongodb:// URI + * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database'); + * + * // and options + * var opts = { db: { native_parser: true }} + * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database', opts); + * + * // replica sets + * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database,mongodb://anotherhost:port,mongodb://yetanother:port'); + * + * // and options + * var opts = { replset: { strategy: 'ping', rs_name: 'testSet' }} + * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database,mongodb://anotherhost:port,mongodb://yetanother:port', opts); + * + * // with [host, database_name[, port] signature + * db = mongoose.createConnection('localhost', 'database', port) + * + * // and options + * var opts = { server: { auto_reconnect: false }, user: 'username', pass: 'mypassword' } + * db = mongoose.createConnection('localhost', 'database', port, opts) + * + * // initialize now, connect later + * db = mongoose.createConnection(); + * db.open('localhost', 'database', port, [opts]); + * + * @param {String} [uri] a mongodb:// URI + * @param {Object} [options] options to pass to the driver + * @see Connection#open #connection_Connection-open + * @see Connection#openSet #connection_Connection-openSet + * @return {Connection} the created Connection object + * @api public + */ + +Mongoose.prototype.createConnection = function () { + var conn = new Connection(this); + this.connections.push(conn); + + if (arguments.length) { + if (rgxReplSet.test(arguments[0])) { + conn.openSet.apply(conn, arguments); + } else { + conn.open.apply(conn, arguments); + } + } + + return conn; +}; + +/** + * Opens the default mongoose connection. + * + * If arguments are passed, they are proxied to either [Connection#open](#connection_Connection-open) or [Connection#openSet](#connection_Connection-openSet) appropriately. + * + * _Options passed take precedence over options included in connection strings._ + * + * @see Mongoose#createConnection #index_Mongoose-createConnection + * @api public + * @return {Mongoose} this + */ + +Mongoose.prototype.connect = function () { + var conn = this.connection; + + if (rgxReplSet.test(arguments[0])) { + conn.openSet.apply(conn, arguments); + } else { + conn.open.apply(conn, arguments); + } + + return this; +}; + +/** + * Disconnects all connections. + * + * @param {Function} [fn] called after all connection close. + * @return {Mongoose} this + * @api public + */ + +Mongoose.prototype.disconnect = function (fn) { + var count = this.connections.length + , error + + this.connections.forEach(function(conn){ + conn.close(function(err){ + if (error) return; + + if (err) { + error = err; + if (fn) return fn(err); + throw err; + } + + if (fn) + --count || fn(); + }); + }); + return this; +}; + +/** + * Defines a model or retrieves it. + * + * Models defined on the `mongoose` instance are available to all connection created by the same `mongoose` instance. + * + * ####Example: + * + * var mongoose = require('mongoose'); + * + * // define an Actor model with this mongoose instance + * mongoose.model('Actor', new Schema({ name: String })); + * + * // create a new connection + * var conn = mongoose.createConnection(..); + * + * // retrieve the Actor model + * var Actor = conn.model('Actor'); + * + * _When no `collection` argument is passed, Mongoose produces a collection name by passing the model `name` to the [utils.toCollectionName](#utils_exports.toCollectionName) method. This method pluralizes the name. If you don't like this behavior, either pass a collection name or set your schemas collection name option._ + * + * ####Example: + * + * var schema = new Schema({ name: String }, { collection: 'actor' }); + * + * // or + * + * schema.set('collection', 'actor'); + * + * // or + * + * var collectionName = 'actor' + * var M = mongoose.model('Actor', schema, collectionName) + * + * @param {String} name model name + * @param {Schema} [schema] + * @param {String} [collection] name (optional, induced from model name) + * @param {Boolean} [skipInit] whether to skip initialization (defaults to false) + * @api public + */ + +Mongoose.prototype.model = function (name, schema, collection, skipInit) { + if ('string' == typeof schema) { + collection = schema; + schema = false; + } + + if (utils.isObject(schema) && !(schema instanceof Schema)) { + schema = new Schema(schema); + } + + if ('boolean' === typeof collection) { + skipInit = collection; + collection = null; + } + + // handle internal options from connection.model() + var options; + if (skipInit && utils.isObject(skipInit)) { + options = skipInit; + skipInit = true; + } else { + options = {}; + } + + // look up schema for the collection. this might be a + // default schema like system.indexes stored in SchemaDefaults. + if (!this.modelSchemas[name]) { + if (!schema && name in SchemaDefaults) { + schema = SchemaDefaults[name]; + } + + if (schema) { + // cache it so we only apply plugins once + this.modelSchemas[name] = schema; + this._applyPlugins(schema); + } else { + throw new mongoose.Error.MissingSchemaError(name); + } + } + + var model; + var sub; + + // connection.model() may be passing a different schema for + // an existing model name. in this case don't read from cache. + if (this.models[name] && false !== options.cache) { + if (schema instanceof Schema && schema != this.models[name].schema) { + throw new mongoose.Error.OverwriteModelError(name); + } + + if (collection) { + // subclass current model with alternate collection + model = this.models[name]; + schema = model.prototype.schema; + sub = model.__subclass(this.connection, schema, collection); + // do not cache the sub model + return sub; + } + + return this.models[name]; + } + + // ensure a schema exists + if (!schema) { + schema = this.modelSchemas[name]; + if (!schema) { + throw new mongoose.Error.MissingSchemaError(name); + } + } + + if (!collection) { + collection = schema.get('collection') || format(name); + } + + var connection = options.connection || this.connection; + model = Model.compile(name, schema, collection, connection, this); + + if (!skipInit) { + model.init(); + } + + if (false === options.cache) { + return model; + } + + return this.models[name] = model; +} + +/** + * Returns an array of model names created on this instance of Mongoose. + * + * ####Note: + * + * _Does not include names of models created using `connection.model()`._ + * + * @api public + * @return {Array} + */ + +Mongoose.prototype.modelNames = function () { + var names = Object.keys(this.models); + return names; +} + +/** + * Applies global plugins to `schema`. + * + * @param {Schema} schema + * @api private + */ + +Mongoose.prototype._applyPlugins = function (schema) { + for (var i = 0, l = this.plugins.length; i < l; i++) { + schema.plugin(this.plugins[i][0], this.plugins[i][1]); + } +} + +/** + * Declares a global plugin executed on all Schemas. + * + * Equivalent to calling `.plugin(fn)` on each Schema you create. + * + * @param {Function} fn plugin callback + * @param {Object} [opts] optional options + * @return {Mongoose} this + * @see plugins ./plugins.html + * @api public + */ + +Mongoose.prototype.plugin = function (fn, opts) { + this.plugins.push([fn, opts]); + return this; +}; + +/** + * The default connection of the mongoose module. + * + * ####Example: + * + * var mongoose = require('mongoose'); + * mongoose.connect(...); + * mongoose.connection.on('error', cb); + * + * This is the connection used by default for every model created using [mongoose.model](#index_Mongoose-model). + * + * @property connection + * @return {Connection} + * @api public + */ + +Mongoose.prototype.__defineGetter__('connection', function(){ + return this.connections[0]; +}); + +/*! + * Driver depentend APIs + */ + +var driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native'; + +/*! + * Connection + */ + +var Connection = require(driver + '/connection'); + +/*! + * Collection + */ + +var Collection = require(driver + '/collection'); + +/** + * The Mongoose Collection constructor + * + * @method Collection + * @api public + */ + +Mongoose.prototype.Collection = Collection; + +/** + * The Mongoose [Connection](#connection_Connection) constructor + * + * @method Connection + * @api public + */ + +Mongoose.prototype.Connection = Connection; + +/** + * The Mongoose version + * + * @property version + * @api public + */ + +Mongoose.prototype.version = require(__dirname + '/../package.json').version; + +/** + * The Mongoose constructor + * + * The exports of the mongoose module is an instance of this class. + * + * ####Example: + * + * var mongoose = require('mongoose'); + * var mongoose2 = new mongoose.Mongoose(); + * + * @method Mongoose + * @api public + */ + +Mongoose.prototype.Mongoose = Mongoose; + +/** + * The Mongoose [Schema](#schema_Schema) constructor + * + * ####Example: + * + * var mongoose = require('mongoose'); + * var Schema = mongoose.Schema; + * var CatSchema = new Schema(..); + * + * @method Schema + * @api public + */ + +Mongoose.prototype.Schema = Schema; + +/** + * The Mongoose [SchemaType](#schematype_SchemaType) constructor + * + * @method SchemaType + * @api public + */ + +Mongoose.prototype.SchemaType = SchemaType; + +/** + * The various Mongoose SchemaTypes. + * + * ####Note: + * + * _Alias of mongoose.Schema.Types for backwards compatibility._ + * + * @property SchemaTypes + * @see Schema.SchemaTypes #schema_Schema.Types + * @api public + */ + +Mongoose.prototype.SchemaTypes = Schema.Types; + +/** + * The Mongoose [VirtualType](#virtualtype_VirtualType) constructor + * + * @method VirtualType + * @api public + */ + +Mongoose.prototype.VirtualType = VirtualType; + +/** + * The various Mongoose Types. + * + * ####Example: + * + * var mongoose = require('mongoose'); + * var array = mongoose.Types.Array; + * + * ####Types: + * + * - [ObjectId](#types-objectid-js) + * - [Buffer](#types-buffer-js) + * - [SubDocument](#types-embedded-js) + * - [Array](#types-array-js) + * - [DocumentArray](#types-documentarray-js) + * + * Using this exposed access to the `ObjectId` type, we can construct ids on demand. + * + * var ObjectId = mongoose.Types.ObjectId; + * var id1 = new ObjectId; + * + * @property Types + * @api public + */ + +Mongoose.prototype.Types = Types; + +/** + * The Mongoose [Query](#query_Query) constructor. + * + * @method Query + * @api public + */ + +Mongoose.prototype.Query = Query; + +/** + * The Mongoose [Promise](#promise_Promise) constructor. + * + * @method Promise + * @api public + */ + +Mongoose.prototype.Promise = Promise; + +/** + * The Mongoose [Model](#model_Model) constructor. + * + * @method Model + * @api public + */ + +Mongoose.prototype.Model = Model; + +/** + * The Mongoose [Document](#document-js) constructor. + * + * @method Document + * @api public + */ + +Mongoose.prototype.Document = Document; + +/** + * The [MongooseError](#error_MongooseError) constructor. + * + * @method Error + * @api public + */ + +Mongoose.prototype.Error = require('./error'); + +/** + * The [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) driver Mongoose uses. + * + * @property mongo + * @api public + */ + +Mongoose.prototype.mongo = require('mongodb'); + +/*! + * The exports object is an instance of Mongoose. + * + * @api public + */ + +var mongoose = module.exports = exports = new Mongoose; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js new file mode 100644 index 0000000..d5a3f12 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js @@ -0,0 +1,31 @@ +/*! + * Dependencies + */ + +var StateMachine = require('./statemachine') +var ActiveRoster = StateMachine.ctor('require', 'modify', 'init', 'default') + +module.exports = exports = InternalCache; + +function InternalCache () { + this.strictMode = undefined; + this.selected = undefined; + this.shardval = undefined; + this.saveError = undefined; + this.validationError = undefined; + this.adhocPaths = undefined; + this.removing = undefined; + this.inserting = undefined; + this.version = undefined; + this.getters = {}; + this._id = undefined; + this.populate = undefined; // what we want to populate in this doc + this.populated = undefined;// the _ids that have been populated + this.wasPopulated = false; // if this doc was the result of a population + this.scope = undefined; + this.activePaths = new ActiveRoster; + + // embedded docs + this.ownerDocument = undefined; + this.fullPath = undefined; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js new file mode 100644 index 0000000..5348ff2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js @@ -0,0 +1,2229 @@ +/*! + * Module dependencies. + */ + +var Document = require('./document') + , MongooseArray = require('./types/array') + , MongooseBuffer = require('./types/buffer') + , MongooseError = require('./error') + , VersionError = MongooseError.VersionError + , DivergentArrayError = MongooseError.DivergentArrayError + , Query = require('./query') + , Schema = require('./schema') + , Types = require('./schema/index') + , utils = require('./utils') + , hasOwnProperty = utils.object.hasOwnProperty + , isMongooseObject = utils.isMongooseObject + , EventEmitter = require('events').EventEmitter + , merge = utils.merge + , Promise = require('./promise') + , assert = require('assert') + , tick = utils.tick + +var VERSION_WHERE = 1 + , VERSION_INC = 2 + , VERSION_ALL = VERSION_WHERE | VERSION_INC; + +/** + * Model constructor + * + * @param {Object} doc values to with which to create the document + * @inherits Document + * @event `error`: If listening to this Model event, it is emitted when a document was saved without passing a callback and an `error` occurred. If not listening, the event bubbles to the connection used to create this Model. + * @event `index`: Emitted after `Model#ensureIndexes` completes. If an error occurred it is passed with the event. + * @api public + */ + +function Model (doc, fields, skipId) { + Document.call(this, doc, fields, skipId); +}; + +/*! + * Inherits from Document. + * + * All Model.prototype features are available on + * top level (non-sub) documents. + */ + +Model.prototype.__proto__ = Document.prototype; + +/** + * Connection the model uses. + * + * @api public + * @property db + */ + +Model.prototype.db; + +/** + * Collection the model uses. + * + * @api public + * @property collection + */ + +Model.prototype.collection; + +/** + * The name of the model + * + * @api public + * @property modelName + */ + +Model.prototype.modelName; + +/*! + * Handles doc.save() callbacks + */ + +function handleSave (promise, self) { + return tick(function handleSave (err, result) { + if (err) { + // If the initial insert fails provide a second chance. + // (If we did this all the time we would break updates) + if (self.$__.inserting) { + self.isNew = true; + self.emit('isNew', true); + } + promise.error(err); + promise = self = null; + return; + } + + self.$__storeShard(); + + var numAffected; + if (result) { + // when inserting, the array of created docs is returned + numAffected = result.length + ? result.length + : result; + } else { + numAffected = 0; + } + + // was this an update that required a version bump? + if (self.$__.version && !self.$__.inserting) { + var doIncrement = VERSION_INC === (VERSION_INC & self.$__.version); + self.$__.version = undefined; + + // increment version if was successful + if (numAffected > 0) { + if (doIncrement) { + var key = self.schema.options.versionKey; + var version = self.getValue(key) | 0; + self.setValue(key, version + 1); + } + } else { + // the update failed. pass an error back + promise.error(new VersionError); + promise = self = null; + return; + } + } + + self.emit('save', self, numAffected); + promise.complete(self, numAffected); + promise = self = null; + }); +} + +/** + * Saves this document. + * + * ####Example: + * + * product.sold = Date.now(); + * product.save(function (err, product) { + * if (err) .. + * }) + * + * The `fn` callback is optional. If no `fn` is passed and validation fails, the validation error will be emitted on the connection used to create this model. + * + * var db = mongoose.createConnection(..); + * var schema = new Schema(..); + * var Product = db.model('Product', schema); + * + * db.on('error', handleError); + * + * However, if you desire more local error handling you can add an `error` listener to the model and handle errors there instead. + * + * Product.on('error', handleError); + * + * @param {Function} [fn] optional callback + * @api public + * @see middleware http://mongoosejs.com/docs/middleware.html + */ + +Model.prototype.save = function save (fn) { + var promise = new Promise(fn) + , complete = handleSave(promise, this) + , options = {} + + if (this.schema.options.safe) { + options.safe = this.schema.options.safe; + } + + if (this.isNew) { + // send entire doc + var obj = this.toObject({ depopulate: 1 }); + this.$__version(true, obj); + this.collection.insert(obj, options, complete); + this.$__reset(); + this.isNew = false; + this.emit('isNew', false); + // Make it possible to retry the insert + this.$__.inserting = true; + + } else { + // Make sure we don't treat it as a new object on error, + // since it already exists + this.$__.inserting = false; + + var delta = this.$__delta(); + if (delta) { + if (delta instanceof Error) return complete(delta); + var where = this.$__where(delta[0]); + this.$__reset(); + this.collection.update(where, delta[1], options, complete); + } else { + this.$__reset(); + complete(null); + } + + this.emit('isNew', false); + } +}; + +/*! + * Apply the operation to the delta (update) clause as + * well as track versioning for our where clause. + * + * @param {Document} self + * @param {Object} where + * @param {Object} delta + * @param {Object} data + * @param {Mixed} val + * @param {String} [operation] + */ + +function operand (self, where, delta, data, val, op) { + // delta + op || (op = '$set'); + if (!delta[op]) delta[op] = {}; + delta[op][data.path] = val; + + // disabled versioning? + if (false === self.schema.options.versionKey) return; + + // already marked for versioning? + if (VERSION_ALL === (VERSION_ALL & self.$__.version)) return; + + switch (op) { + case '$set': + case '$unset': + case '$pop': + case '$pull': + case '$pullAll': + case '$push': + case '$pushAll': + case '$addToSet': + break; + default: + // nothing to do + return; + } + + // ensure updates sent with positional notation are + // editing the correct array element. + // only increment the version if an array position changes. + // modifying elements of an array is ok if position does not change. + + if ('$push' == op || '$pushAll' == op || '$addToSet' == op) { + self.$__.version = VERSION_INC; + } + else if (/^\$p/.test(op)) { + // potentially changing array positions + self.increment(); + } + else if (Array.isArray(val)) { + // $set an array + self.increment(); + } + // now handling $set, $unset + else if (/\.\d+\.|\.\d+$/.test(data.path)) { + // subpath of array + self.$__.version = VERSION_WHERE; + } +} + +/*! + * Compiles an update and where clause for a `val` with _atomics. + * + * @param {Document} self + * @param {Object} where + * @param {Object} delta + * @param {Object} data + * @param {Array} value + */ + +function handleAtomics (self, where, delta, data, value) { + if (delta.$set && delta.$set[data.path]) { + // $set has precedence over other atomics + return; + } + + if ('function' == typeof value.$__getAtomics) { + value.$__getAtomics().forEach(function (atomic) { + var op = atomic[0]; + var val = atomic[1]; + operand(self, where, delta, data, val, op); + }) + return; + } + + // legacy support for plugins + + var atomics = value._atomics + , ops = Object.keys(atomics) + , i = ops.length + , val + , op; + + if (0 === i) { + // $set + + if (isMongooseObject(value)) { + value = value.toObject({ depopulate: 1 }); + } else if (value.valueOf) { + value = value.valueOf(); + } + + return operand(self, where, delta, data, value); + } + + while (i--) { + op = ops[i]; + val = atomics[op]; + + if (isMongooseObject(val)) { + val = val.toObject({ depopulate: 1 }) + } else if (Array.isArray(val)) { + val = val.map(function (mem) { + return isMongooseObject(mem) + ? mem.toObject({ depopulate: 1 }) + : mem; + }) + } else if (val.valueOf) { + val = val.valueOf() + } + + if ('$addToSet' === op) + val = { $each: val }; + + operand(self, where, delta, data, val, op); + } +} + +/** + * Produces a special query document of the modified properties used in updates. + * + * @api private + * @method $__delta + * @memberOf Model + */ + +Model.prototype.$__delta = function () { + var dirty = this.$__dirty(); + if (!dirty.length && VERSION_ALL != this.$__.version) return; + + var where = {} + , delta = {} + , len = dirty.length + , divergent = [] + , d = 0 + , val + , obj + + for (; d < len; ++d) { + var data = dirty[d] + var value = data.value + var schema = data.schema + + var match = checkDivergentArray(this, data.path, value); + if (match) { + divergent.push(match); + continue; + } + + if (divergent.length) continue; + + if (undefined === value) { + operand(this, where, delta, data, 1, '$unset'); + + } else if (null === value) { + operand(this, where, delta, data, null); + + } else if (value._path && value._atomics) { + // arrays and other custom types (support plugins etc) + handleAtomics(this, where, delta, data, value); + + } else if (value._path && Buffer.isBuffer(value)) { + // MongooseBuffer + value = value.toObject(); + operand(this, where, delta, data, value); + + } else { + value = utils.clone(value, { depopulate: 1 }); + operand(this, where, delta, data, value); + } + } + + if (divergent.length) { + return new DivergentArrayError(divergent); + } + + if (this.$__.version) { + this.$__version(where, delta); + } + + return [where, delta]; +} + +/*! + * Determine if array was populated with some form of filter and is now + * being updated in a manner which could overwrite data unintentionally. + * + * @see https://github.com/LearnBoost/mongoose/issues/1334 + * @param {Document} doc + * @param {String} path + * @return {String|undefined} + */ + +function checkDivergentArray (doc, path, array) { + // see if we populated this path + var pop = doc.populated(path, true); + + if (!pop && doc.$__.selected) { + // If any array was selected using an $elemMatch projection, we deny the update. + // NOTE: MongoDB only supports projected $elemMatch on top level array. + var top = path.split('.')[0]; + if (doc.$__.selected[top] && doc.$__.selected[top].$elemMatch) { + return top; + } + } + + if (!(pop && array instanceof MongooseArray)) return; + + // If the array was populated using options that prevented all + // documents from being returned (match, skip, limit) or they + // deselected the _id field, $pop and $set of the array are + // not safe operations. If _id was deselected, we do not know + // how to remove elements. $pop will pop off the _id from the end + // of the array in the db which is not guaranteed to be the + // same as the last element we have here. $set of the entire array + // would be similarily destructive as we never received all + // elements of the array and potentially would overwrite data. + var check = pop.options.match || + pop.options.options && hasOwnProperty(pop.options.options, 'limit') || // 0 is not permitted + pop.options.options && pop.options.options.skip || // 0 is permitted + pop.options.select && // deselected _id? + (0 === pop.options.select._id || + /\s?-_id\s?/.test(pop.options.select)) + + if (check) { + var atomics = array._atomics; + if (0 === Object.keys(atomics).length || atomics.$set || atomics.$pop) { + return path; + } + } +} + +/** + * Appends versioning to the where and update clauses. + * + * @api private + * @method $__version + * @memberOf Model + */ + +Model.prototype.$__version = function (where, delta) { + var key = this.schema.options.versionKey; + + if (true === where) { + // this is an insert + if (key) this.setValue(key, delta[key] = 0); + return; + } + + // updates + + // only apply versioning if our versionKey was selected. else + // there is no way to select the correct version. we could fail + // fast here and force them to include the versionKey but + // thats a bit intrusive. can we do this automatically? + if (!this.isSelected(key)) { + return; + } + + // $push $addToSet don't need the where clause set + if (VERSION_WHERE === (VERSION_WHERE & this.$__.version)) { + where[key] = this.getValue(key); + } + + if (VERSION_INC === (VERSION_INC & this.$__.version)) { + delta.$inc || (delta.$inc = {}); + delta.$inc[key] = 1; + } +} + +/** + * Signal that we desire an increment of this documents version. + * + * ####Example: + * + * Model.findById(id, function (err, doc) { + * doc.increment(); + * doc.save(function (err) { .. }) + * }) + * + * @see versionKeys http://mongoosejs.com/docs/guide.html#versionKey + * @api public + */ + +Model.prototype.increment = function increment () { + this.$__.version = VERSION_ALL; + return this; +} + +/** + * Returns a query object which applies shardkeys if they exist. + * + * @api private + * @method $__where + * @memberOf Model + */ + +Model.prototype.$__where = function _where (where) { + where || (where = {}); + + var paths + , len + + if (this.$__.shardval) { + paths = Object.keys(this.$__.shardval) + len = paths.length + + for (var i = 0; i < len; ++i) { + where[paths[i]] = this.$__.shardval[paths[i]]; + } + } + + where._id = this._doc._id; + return where; +} + +/** + * Removes this document from the db. + * + * ####Example: + * + * product.remove(function (err, product) { + * if (err) return handleError(err); + * Product.findById(product._id, function (err, product) { + * console.log(product) // null + * }) + * }) + * + * @param {Function} [fn] optional callback + * @api public + */ + +Model.prototype.remove = function remove (fn) { + if (this.$__.removing) { + this.$__.removing.addBack(fn); + return this; + } + + var promise = this.$__.removing = new Promise(fn) + , where = this.$__where() + , self = this + , options = {} + + if (this.schema.options.safe) { + options.safe = this.schema.options.safe; + } + + this.collection.remove(where, options, tick(function (err) { + if (err) { + promise.error(err); + promise = self = self.$__.removing = where = options = null; + return; + } + self.emit('remove', self); + promise.complete(); + promise = self = where = options = null; + })); + + return this; +}; + +/** + * Returns another Model instance. + * + * ####Example: + * + * var doc = new Tank; + * doc.model('User').findById(id, callback); + * + * @param {String} name model name + * @api public + */ + +Model.prototype.model = function model (name) { + return this.db.model(name); +}; + +// Model (class) features + +/*! + * Give the constructor the ability to emit events. + */ + +for (var i in EventEmitter.prototype) + Model[i] = EventEmitter.prototype[i]; + +/** + * Called when the model compiles. + * + * @api private + */ + +Model.init = function init () { + if (this.schema.options.autoIndex) { + this.ensureIndexes(); + } + + this.schema.emit('init', this); +}; + +/** + * Sends `ensureIndex` commands to mongo for each index declared in the schema. + * + * ####Example: + * + * Event.ensureIndexes(function (err) { + * if (err) return handleError(err); + * }); + * + * After completion, an `index` event is emitted on this `Model` passing an error if one occurred. + * + * ####Example: + * + * var eventSchema = new Schema({ thing: { type: 'string', unique: true }}) + * var Event = mongoose.model('Event', eventSchema); + * + * Event.on('index', function (err) { + * if (err) console.error(err); // error occurred during index creation + * }) + * + * _NOTE: It is not recommended that you run this in production. Index creation may impact database performance depending on your load. Use with caution._ + * + * The `ensureIndex` commands are not sent in parallel. This is to avoid the `MongoError: cannot add index with a background operation in progress` error. See [this ticket](https://github.com/LearnBoost/mongoose/issues/1365) for more information. + * + * @param {Function} [cb] optional callback + * @api public + */ + +Model.ensureIndexes = function ensureIndexes (cb) { + var indexes = this.schema.indexes(); + if (!indexes.length) { + return cb && process.nextTick(cb); + } + + // Indexes are created one-by-one to support how MongoDB < 2.4 deals + // with background indexes. + + var self = this + , safe = self.schema.options.safe + + function done (err) { + self.emit('index', err); + cb && cb(err); + } + + function create () { + var index = indexes.shift(); + if (!index) return done(); + + var options = index[1]; + options.safe = safe; + self.collection.ensureIndex(index[0], options, tick(function (err) { + if (err) return done(err); + create(); + })); + } + + create(); +} + +/** + * Schema the model uses. + * + * @property schema + * @receiver Model + * @api public + */ + +Model.schema; + +/*! + * Connection instance the model uses. + * + * @property db + * @receiver Model + * @api public + */ + +Model.db; + +/*! + * Collection the model uses. + * + * @property collection + * @receiver Model + * @api public + */ + +Model.collection; + +/** + * Base Mongoose instance the model uses. + * + * @property base + * @receiver Model + * @api public + */ + +Model.base; + +/** + * Removes documents from the collection. + * + * ####Example: + * + * Comment.remove({ title: 'baby born from alien father' }, function (err) { + * + * }); + * + * ####Note: + * + * To remove documents without waiting for a response from MongoDB, do not pass a `callback`, then call `exec` on the returned [Query](#query-js): + * + * var query = Comment.remove({ _id: id }); + * query.exec(); + * + * ####Note: + * + * This method sends a remove command directly to MongoDB, no Mongoose documents are involved. Because no Mongoose documents are involved, _no middleware (hooks) are executed_. + * + * @param {Object} conditions + * @param {Function} [callback] + * @return {Query} + * @api public + */ + +Model.remove = function remove (conditions, callback) { + if ('function' === typeof conditions) { + callback = conditions; + conditions = {}; + } + + var query = new Query(conditions).bind(this, 'remove'); + + if ('undefined' === typeof callback) + return query; + + this._applyNamedScope(query); + return query.remove(callback); +}; + +/** + * Finds documents + * + * The `conditions` are cast to their respective SchemaTypes before the command is sent. + * + * ####Examples: + * + * // named john and at least 18 + * MyModel.find({ name: 'john', age: { $gte: 18 }}); + * + * // executes immediately, passing results to callback + * MyModel.find({ name: 'john', age: { $gte: 18 }}, function (err, docs) {}); + * + * // name LIKE john and only selecting the "name" and "friends" fields, executing immediately + * MyModel.find({ name: /john/i }, 'name friends', function (err, docs) { }) + * + * // passing options + * MyModel.find({ name: /john/i }, null, { skip: 10 }) + * + * // passing options and executing immediately + * MyModel.find({ name: /john/i }, null, { skip: 10 }, function (err, docs) {}); + * + * // executing a query explicitly + * var query = MyModel.find({ name: /john/i }, null, { skip: 10 }) + * query.exec(function (err, docs) {}); + * + * // using the promise returned from executing a query + * var query = MyModel.find({ name: /john/i }, null, { skip: 10 }); + * var promise = query.exec(); + * promise.addBack(function (err, docs) {}); + * + * @param {Object} conditions + * @param {Object} [fields] optional fields to select + * @param {Object} [options] optional + * @param {Function} [callback] + * @return {Query} + * @see field selection #query_Query-select + * @see promise #promise-js + * @api public + */ + +Model.find = function find (conditions, fields, options, callback) { + if ('function' == typeof conditions) { + callback = conditions; + conditions = {}; + fields = null; + options = null; + } else if ('function' == typeof fields) { + callback = fields; + fields = null; + options = null; + } else if ('function' == typeof options) { + callback = options; + options = null; + } + + var query = new Query(conditions, options); + query.bind(this, 'find'); + query.select(fields); + + if ('undefined' === typeof callback) + return query; + + this._applyNamedScope(query); + return query.find(callback); +}; + +/** + * Merges the current named scope query into `query`. + * + * @param {Query} query + * @return {Query} + * @api private + */ + +Model._applyNamedScope = function _applyNamedScope (query) { + var cQuery = this._cumulativeQuery; + + if (cQuery) { + merge(query._conditions, cQuery._conditions); + if (query._fields && cQuery._fields) + merge(query._fields, cQuery._fields); + if (query.options && cQuery.options) + merge(query.options, cQuery.options); + delete this._cumulativeQuery; + } + + return query; +} + +/** + * Finds a single document by id. + * + * The `id` is cast based on the Schema before sending the command. + * + * ####Example: + * + * // find adventure by id and execute immediately + * Adventure.findById(id, function (err, adventure) {}); + * + * // same as above + * Adventure.findById(id).exec(callback); + * + * // select only the adventures name and length + * Adventure.findById(id, 'name length', function (err, adventure) {}); + * + * // same as above + * Adventure.findById(id, 'name length').exec(callback); + * + * // include all properties except for `length` + * Adventure.findById(id, '-length').exec(function (err, adventure) {}); + * + * // passing options (in this case return the raw js objects, not mongoose documents by passing `lean` + * Adventure.findById(id, 'name', { lean: true }, function (err, doc) {}); + * + * // same as above + * Adventure.findById(id, 'name').lean().exec(function (err, doc) {}); + * + * @param {ObjectId|HexId} id objectid, or a value that can be casted to one + * @param {Object} [fields] optional fields to select + * @param {Object} [options] optional + * @param {Function} [callback] + * @return {Query} + * @see field selection #query_Query-select + * @see lean queries #query_Query-lean + * @api public + */ + +Model.findById = function findById (id, fields, options, callback) { + return this.findOne({ _id: id }, fields, options, callback); +}; + +/** + * Finds one document. + * + * The `conditions` are cast to their respective SchemaTypes before the command is sent. + * + * ####Example: + * + * // find one iphone adventures - iphone adventures?? + * Adventure.findOne({ type: 'iphone' }, function (err, adventure) {}); + * + * // same as above + * Adventure.findOne({ type: 'iphone' }).exec(function (err, adventure) {}); + * + * // select only the adventures name + * Adventure.findOne({ type: 'iphone' }, 'name', function (err, adventure) {}); + * + * // same as above + * Adventure.findOne({ type: 'iphone' }, 'name').exec(function (err, adventure) {}); + * + * // specify options, in this case lean + * Adventure.findOne({ type: 'iphone' }, 'name', { lean: true }, callback); + * + * // same as above + * Adventure.findOne({ type: 'iphone' }, 'name', { lean: true }).exec(callback); + * + * // chaining findOne queries (same as above) + * Adventure.findOne({ type: 'iphone' }).select('name').lean().exec(callback); + * + * @param {Object} conditions + * @param {Object} [fields] optional fields to select + * @param {Object} [options] optional + * @param {Function} [callback] + * @return {Query} + * @see field selection #query_Query-select + * @see lean queries #query_Query-lean + * @api public + */ + +Model.findOne = function findOne (conditions, fields, options, callback) { + if ('function' == typeof options) { + callback = options; + options = null; + } else if ('function' == typeof fields) { + callback = fields; + fields = null; + options = null; + } else if ('function' == typeof conditions) { + callback = conditions; + conditions = {}; + fields = null; + options = null; + } + + var query = new Query(conditions, options).select(fields).bind(this, 'findOne'); + + if ('undefined' == typeof callback) + return query; + + this._applyNamedScope(query); + return query.findOne(callback); +}; + +/** + * Counts number of matching documents in a database collection. + * + * ####Example: + * + * Adventure.count({ type: 'jungle' }, function (err, count) { + * if (err) .. + * console.log('there are %d jungle adventures', count); + * }); + * + * @param {Object} conditions + * @param {Function} [callback] + * @return {Query} + * @api public + */ + +Model.count = function count (conditions, callback) { + if ('function' === typeof conditions) + callback = conditions, conditions = {}; + + var query = new Query(conditions).bind(this, 'count'); + if ('undefined' == typeof callback) + return query; + + this._applyNamedScope(query); + return query.count(callback); +}; + +/** + * Executes a DISTINCT command + * + * ####Example + * + * Link.distinct('url', { clicks: {$gt: 100}}, function (err, result) { + * if (err) return handleError(err); + * + * assert(Array.isArray(result)); + * console.log('unique urls with more than 100 clicks', result); + * }) + * + * @param {String} field + * @param {Object} [conditions] optional + * @param {Function} [callback] + * @return {Query} + * @api public + */ + +Model.distinct = function distinct (field, conditions, callback) { + var query = new Query(conditions).bind(this, 'distinct'); + if ('undefined' == typeof callback) { + query._distinctArg = field; + return query; + } + + this._applyNamedScope(query); + return query.distinct(field, callback); +}; + +/** + * Creates a Query, applies the passed conditions, and returns the Query. + * + * For example, instead of writing: + * + * User.find({age: {$gte: 21, $lte: 65}}, callback); + * + * we can instead write: + * + * User.where('age').gte(21).lte(65).exec(callback); + * + * Since the Query class also supports `where` you can continue chaining + * + * User + * .where('age').gte(21).lte(65) + * .where('name', /^b/i) + * ... etc + * + * @param {String} path + * @param {Object} [val] optional value + * @return {Query} + * @api public + */ + +Model.where = function where (path, val) { + var q = new Query().bind(this, 'find'); + return q.where.apply(q, arguments); +}; + +/** + * Creates a `Query` and specifies a `$where` condition. + * + * Sometimes you need to query for things in mongodb using a JavaScript expression. You can do so via `find({ $where: javascript })`, or you can use the mongoose shortcut method $where via a Query chain or from your mongoose Model. + * + * Blog.$where('this.comments.length > 5').exec(function (err, docs) {}); + * + * @param {String|Function} argument is a javascript string or anonymous function + * @method $where + * @memberOf Model + * @return {Query} + * @see Query.$where #query_Query-%24where + * @api public + */ + +Model.$where = function $where () { + var q = new Query().bind(this, 'find'); + return q.$where.apply(q, arguments); +}; + +/** + * Issues a mongodb findAndModify update command. + * + * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. + * + * ####Options: + * + * - `new`: bool - true to return the modified document rather than the original. defaults to true + * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. + * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update + * - `select`: sets the document fields to return + * + * ####Examples: + * + * A.findOneAndUpdate(conditions, update, options, callback) // executes + * A.findOneAndUpdate(conditions, update, options) // returns Query + * A.findOneAndUpdate(conditions, update, callback) // executes + * A.findOneAndUpdate(conditions, update) // returns Query + * A.findOneAndUpdate() // returns Query + * + * ####Note: + * + * All top level update keys which are not `atomic` operation names are treated as set operations: + * + * ####Example: + * + * var query = { name: 'borne' }; + * Model.findOneAndUpdate(query, { name: 'jason borne' }, options, callback) + * + * // is sent as + * Model.findOneAndUpdate(query, { $set: { name: 'jason borne' }}, options, callback) + * + * This helps prevent accidentally overwriting your document with `{ name: 'jason borne' }`. + * + * ####Note: + * + * Although values are cast to their appropriate types when using the findAndModify helpers, the following are *not* applied: + * + * - defaults + * - setters + * - validators + * - middleware + * + * If you need those features, use the traditional approach of first retrieving the document. + * + * Model.findOne({ name: 'borne' }, function (err, doc) { + * if (err) .. + * doc.name = 'jason borne'; + * doc.save(callback); + * }) + * + * @param {Object} [conditions] + * @param {Object} [update] + * @param {Object} [options] + * @param {Function} [callback] + * @return {Query} + * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command + * @api public + */ + +Model.findOneAndUpdate = function (conditions, update, options, callback) { + if ('function' == typeof options) { + callback = options; + options = null; + } + else if (1 === arguments.length) { + if ('function' == typeof conditions) { + var msg = 'Model.findOneAndUpdate(): First argument must not be a function.\n\n' + + ' ' + this.modelName + '.findOneAndUpdate(conditions, update, options, callback)\n' + + ' ' + this.modelName + '.findOneAndUpdate(conditions, update, options)\n' + + ' ' + this.modelName + '.findOneAndUpdate(conditions, update)\n' + + ' ' + this.modelName + '.findOneAndUpdate(update)\n' + + ' ' + this.modelName + '.findOneAndUpdate()\n'; + throw new TypeError(msg) + } + update = conditions; + conditions = undefined; + } + + var fields; + if (options && options.fields) { + fields = options.fields; + options.fields = undefined; + } + + var query = new Query(conditions); + query.setOptions(options); + query.select(fields); + query.bind(this, 'findOneAndUpdate', update); + + if ('undefined' == typeof callback) + return query; + + this._applyNamedScope(query); + return query.findOneAndUpdate(callback); +} + +/** + * Issues a mongodb findAndModify update command by a documents id. + * + * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. + * + * ####Options: + * + * - `new`: bool - true to return the modified document rather than the original. defaults to true + * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. + * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update + * - `select`: sets the document fields to return + * + * ####Examples: + * + * A.findByIdAndUpdate(id, update, options, callback) // executes + * A.findByIdAndUpdate(id, update, options) // returns Query + * A.findByIdAndUpdate(id, update, callback) // executes + * A.findByIdAndUpdate(id, update) // returns Query + * A.findByIdAndUpdate() // returns Query + * + * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. + * + * ####Options: + * + * - `new`: bool - true to return the modified document rather than the original. defaults to true + * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. + * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update + * + * ####Note: + * + * All top level update keys which are not `atomic` operation names are treated as set operations: + * + * ####Example: + * + * Model.findByIdAndUpdate(id, { name: 'jason borne' }, options, callback) + * + * // is sent as + * Model.findByIdAndUpdate(id, { $set: { name: 'jason borne' }}, options, callback) + * + * This helps prevent accidentally overwriting your document with `{ name: 'jason borne' }`. + * + * ####Note: + * + * Although values are cast to their appropriate types when using the findAndModify helpers, the following are *not* applied: + * + * - defaults + * - setters + * - validators + * - middleware + * + * If you need those features, use the traditional approach of first retrieving the document. + * + * Model.findById(id, function (err, doc) { + * if (err) .. + * doc.name = 'jason borne'; + * doc.save(callback); + * }) + * + * @param {ObjectId|HexId} id an ObjectId or string that can be cast to one. + * @param {Object} [update] + * @param {Object} [options] + * @param {Function} [callback] + * @return {Query} + * @see Model.findOneAndUpdate #model_Model.findOneAndUpdate + * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command + * @api public + */ + +Model.findByIdAndUpdate = function (id, update, options, callback) { + var args; + + if (1 === arguments.length) { + if ('function' == typeof id) { + var msg = 'Model.findByIdAndUpdate(): First argument must not be a function.\n\n' + + ' ' + this.modelName + '.findByIdAndUpdate(id, callback)\n' + + ' ' + this.modelName + '.findByIdAndUpdate(id)\n' + + ' ' + this.modelName + '.findByIdAndUpdate()\n'; + throw new TypeError(msg) + } + return this.findOneAndUpdate({_id: id }, undefined); + } + + args = utils.args(arguments, 1); + args.unshift({ _id: id }); + return this.findOneAndUpdate.apply(this, args); +} + +/** + * Issue a mongodb findAndModify remove command. + * + * Finds a matching document, removes it, passing the found document (if any) to the callback. + * + * Executes immediately if `callback` is passed else a Query object is returned. + * + * ####Options: + * + * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update + * - `select`: sets the document fields to return + * + * ####Examples: + * + * A.findOneAndRemove(conditions, options, callback) // executes + * A.findOneAndRemove(conditions, options) // return Query + * A.findOneAndRemove(conditions, callback) // executes + * A.findOneAndRemove(conditions) // returns Query + * A.findOneAndRemove() // returns Query + * + * @param {Object} conditions + * @param {Object} [options] + * @param {Function} [callback] + * @return {Query} + * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command + * @api public + */ + +Model.findOneAndRemove = function (conditions, options, callback) { + if (1 === arguments.length && 'function' == typeof conditions) { + var msg = 'Model.findOneAndRemove(): First argument must not be a function.\n\n' + + ' ' + this.modelName + '.findOneAndRemove(conditions, callback)\n' + + ' ' + this.modelName + '.findOneAndRemove(conditions)\n' + + ' ' + this.modelName + '.findOneAndRemove()\n'; + throw new TypeError(msg) + } + + if ('function' == typeof options) { + callback = options; + options = undefined; + } + + var fields; + if (options) { + fields = options.select; + options.select = undefined; + } + + var query = new Query(conditions); + query.setOptions(options); + query.select(fields); + query.bind(this, 'findOneAndRemove'); + + if ('undefined' == typeof callback) + return query; + + this._applyNamedScope(query); + return query.findOneAndRemove(callback); +} + +/** + * Issue a mongodb findAndModify remove command by a documents id. + * + * Finds a matching document, removes it, passing the found document (if any) to the callback. + * + * Executes immediately if `callback` is passed, else a `Query` object is returned. + * + * ####Options: + * + * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update + * - `select`: sets the document fields to return + * + * ####Examples: + * + * A.findByIdAndRemove(id, options, callback) // executes + * A.findByIdAndRemove(id, options) // return Query + * A.findByIdAndRemove(id, callback) // executes + * A.findByIdAndRemove(id) // returns Query + * A.findByIdAndRemove() // returns Query + * + * @param {ObjectId|HexString} id ObjectId or string that can be cast to one + * @param {Object} [options] + * @param {Function} [callback] + * @return {Query} + * @see Model.findOneAndRemove #model_Model.findOneAndRemove + * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command + */ + +Model.findByIdAndRemove = function (id, options, callback) { + if (1 === arguments.length && 'function' == typeof id) { + var msg = 'Model.findByIdAndRemove(): First argument must not be a function.\n\n' + + ' ' + this.modelName + '.findByIdAndRemove(id, callback)\n' + + ' ' + this.modelName + '.findByIdAndRemove(id)\n' + + ' ' + this.modelName + '.findByIdAndRemove()\n'; + throw new TypeError(msg) + } + + return this.findOneAndRemove({ _id: id }, options, callback); +} + +/** + * Shortcut for creating a new Document that is automatically saved to the db if valid. + * + * ####Example: + * + * Candy.create({ type: 'jelly bean' }, { type: 'snickers' }, function (err, jellybean, snickers) { + * if (err) // ... + * }); + * + * var array = [{ type: 'jelly bean' }, { type: 'snickers' }]; + * Candy.create(array, function (err, jellybean, snickers) { + * if (err) // ... + * }); + * + * @param {Array|Object...} doc + * @param {Function} fn callback + * @api public + */ + +Model.create = function create (doc, fn) { + if (1 === arguments.length) { + return 'function' === typeof doc && doc(null); + } + + var self = this + , docs = [null] + , promise + , count + , args + + if (Array.isArray(doc)) { + args = doc; + } else { + args = utils.args(arguments, 0, arguments.length - 1); + fn = arguments[arguments.length - 1]; + } + + if (0 === args.length) return fn(null); + + promise = new Promise(fn); + count = args.length; + + args.forEach(function (arg, i) { + var doc = new self(arg); + docs[i+1] = doc; + doc.save(function (err) { + if (err) return promise.error(err); + --count || fn.apply(null, docs); + }); + }); +}; + +/** + * Updates documents in the database without returning them. + * + * ####Examples: + * + * MyModel.update({ age: { $gt: 18 } }, { oldEnough: true }, fn); + * MyModel.update({ name: 'Tobi' }, { ferret: true }, { multi: true }, function (err, numberAffected, raw) { + * if (err) return handleError(err); + * console.log('The number of updated documents was %d', numberAffected); + * console.log('The raw response from Mongo was ', raw); + * }); + * + * ####Valid options: + * + * - `safe` (boolean) safe mode (defaults to value set in schema (true)) + * - `upsert` (boolean) whether to create the doc if it doesn't match (false) + * - `multi` (boolean) whether multiple documents should be updated (false) + * - `strict` (boolean) overrides the `strict` option for this update + * + * All `update` values are cast to their appropriate SchemaTypes before being sent. + * + * The `callback` function receives `(err, numberAffected, rawResponse)`. + * + * - `err` is the error if any occurred + * - `numberAffected` is the count of updated documents Mongo reported + * - `rawResponse` is the full response from Mongo + * + * ####Note: + * + * All top level keys which are not `atomic` operation names are treated as set operations: + * + * ####Example: + * + * var query = { name: 'borne' }; + * Model.update(query, { name: 'jason borne' }, options, callback) + * + * // is sent as + * Model.update(query, { $set: { name: 'jason borne' }}, options, callback) + * + * This helps prevent accidentally overwriting all documents in your collection with `{ name: 'jason borne' }`. + * + * ####Note: + * + * To update documents without waiting for a response from MongoDB, do not pass a `callback`, then call `exec` on the returned [Query](#query-js): + * + * Comment.update({ _id: id }, { $set: { text: 'changed' }}).exec(); + * + * ####Note: + * + * Although values are casted to their appropriate types when using update, the following are *not* applied: + * + * - defaults + * - setters + * - validators + * - middleware + * + * If you need those features, use the traditional approach of first retrieving the document. + * + * Model.findOne({ name: 'borne' }, function (err, doc) { + * if (err) .. + * doc.name = 'jason borne'; + * doc.save(callback); + * }) + * + * @see strict schemas http://mongoosejs.com/docs/guide.html#strict + * @param {Object} conditions + * @param {Object} update + * @param {Object} [options] + * @param {Function} [callback] + * @return {Query} + * @api public + */ + +Model.update = function update (conditions, doc, options, callback) { + if (arguments.length < 4) { + if ('function' === typeof options) { + // Scenario: update(conditions, doc, callback) + callback = options; + options = null; + } else if ('function' === typeof doc) { + // Scenario: update(doc, callback); + callback = doc; + doc = conditions; + conditions = {}; + options = null; + } + } + + var query = new Query(conditions, options).bind(this, 'update', doc); + + if ('undefined' == typeof callback) + return query; + + this._applyNamedScope(query); + return query.update(doc, callback); +}; + +/** + * Executes a mapReduce command. + * + * `o` is an object specifying all mapReduce options as well as the map and reduce functions. All options are delegated to the driver implementation. + * + * ####Example: + * + * var o = {}; + * o.map = function () { emit(this.name, 1) } + * o.reduce = function (k, vals) { return vals.length } + * User.mapReduce(o, function (err, results) { + * console.log(results) + * }) + * + * ####Other options: + * + * - `query` {Object} query filter object. + * - `limit` {Number} max number of documents + * - `keeptemp` {Boolean, default:false} keep temporary data + * - `finalize` {Function} finalize function + * - `scope` {Object} scope variables exposed to map/reduce/finalize during execution + * - `jsMode` {Boolean, default:false} it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X + * - `verbose` {Boolean, default:false} provide statistics on job execution time. + * - `out*` {Object, default: {inline:1}} sets the output target for the map reduce job. + * + * ####* out options: + * + * - `{inline:1}` the results are returned in an array + * - `{replace: 'collectionName'}` add the results to collectionName: the results replace the collection + * - `{reduce: 'collectionName'}` add the results to collectionName: if dups are detected, uses the reducer / finalize functions + * - `{merge: 'collectionName'}` add the results to collectionName: if dups exist the new docs overwrite the old + * + * If `options.out` is set to `replace`, `merge`, or `reduce`, a Model instance is returned that can be used for further querying. Queries run against this model are all executed with the `lean` option; meaning only the js object is returned and no Mongoose magic is applied (getters, setters, etc). + * + * ####Example: + * + * var o = {}; + * o.map = function () { emit(this.name, 1) } + * o.reduce = function (k, vals) { return vals.length } + * o.out = { replace: 'createdCollectionNameForResults' } + * o.verbose = true; + * User.mapReduce(o, function (err, model, stats) { + * console.log('map reduce took %d ms', stats.processtime) + * model.find().where('value').gt(10).exec(function (err, docs) { + * console.log(docs); + * }); + * }) + * + * @param {Object} o an object specifying map-reduce options + * @param {Function} callback + * @see http://www.mongodb.org/display/DOCS/MapReduce + * @api public + */ + +Model.mapReduce = function mapReduce (o, callback) { + if ('function' != typeof callback) throw new Error('missing callback'); + + var self = this; + + if (!Model.mapReduce.schema) { + var opts = { noId: true, noVirtualId: true, strict: false } + Model.mapReduce.schema = new Schema({}, opts); + } + + if (!o.out) o.out = { inline: 1 }; + + o.map = String(o.map); + o.reduce = String(o.reduce); + + if (o.query) { + var q = new Query(o.query); + q.cast(this); + o.query = q._conditions; + q = undefined; + } + + this.collection.mapReduce(null, null, o, function (err, ret, stats) { + if (err) return callback(err); + + if (ret.findOne && ret.mapReduce) { + // returned a collection, convert to Model + var model = Model.compile( + '_mapreduce_' + ret.collectionName + , Model.mapReduce.schema + , ret.collectionName + , self.db + , self.base); + + model._mapreduce = true; + + return callback(err, model, stats); + } + + callback(err, ret, stats); + }); +} + +/** + * Executes an aggregate command on this models collection. + * + * ####Example: + * + * // find the max age of all users + * Users.aggregate( + * { $group: { _id: null, maxAge: { $max: '$age' }}} + * , { $project: { _id: 0, maxAge: 1 }} + * , function (err, res) { + * if (err) return handleError(err); + * console.log(res); // [ { maxAge: 98 } ] + * }); + * + * ####NOTE: + * + * - At this time, arguments are not cast to the schema because $project operators allow redefining the "shape" of the documents at any stage of the pipeline. + * - The documents returned are plain javascript objects, not mongoose documents cast to this models schema definition (since any shape of document can be returned). + * - Requires MongoDB >= 2.1 + * + * @param {Array} array an array of pipeline commands + * @param {Object} [options] + * @param {Function} callback + * @see aggregation http://docs.mongodb.org/manual/applications/aggregation/ + * @see driver http://mongodb.github.com/node-mongodb-native/api-generated/collection.html#aggregate + * @api public + */ + +Model.aggregate = function aggregate () { + return this.collection.aggregate.apply(this.collection, arguments); +} + +/** + * Populates document references. + * + * ####Available options: + * + * - path: space delimited path(s) to populate + * - select: optional fields to select + * - match: optional query conditions to match + * - model: optional name of the model to use for population + * - options: optional query options like sort, limit, etc + * + * ####Examples: + * + * // populates a single object + * User.findById(id, function (err, user) { + * var opts = [ + * { path: 'company', match: { x: 1 }, select: 'name' } + * , { path: 'notes', options: { limit: 10 }, model: 'override' } + * ] + * + * User.populate(user, opts, function (err, user) { + * console.log(user); + * }) + * }) + * + * // populates an array of objects + * User.find(match, function (err, users) { + * var opts = [{ path: 'company', match: { x: 1 }, select: 'name' }] + * + * User.populate(users, opts, function (err, user) { + * console.log(user); + * }) + * }) + * + * // imagine a Weapon model exists with two saved documents: + * // { _id: 389, name: 'whip' } + * // { _id: 8921, name: 'boomerang' } + * + * var user = { name: 'Indiana Jones', weapon: 389 } + * Weapon.populate(user, { path: 'weapon', model: 'Weapon' }, function (err, user) { + * console.log(user.weapon.name) // whip + * }) + * + * // populate many plain objects + * var users = [{ name: 'Indiana Jones', weapon: 389 }] + * users.push({ name: 'Batman', weapon: 8921 }) + * Weapon.populate(users, { path: 'weapon' }, function (err, users) { + * users.forEach(function (user) { + * console.log('%s uses a %s', users.name, user.weapon.name) + * // Indiana Jones uses a whip + * // Batman uses a boomerang + * }) + * }) + * // Note that we didn't need to specify the Weapon model because + * // we were already using it's populate() method. + * + * @param {Document|Array} docs Either a single document or array of documents to populate. + * @param {Object} options A hash of key/val (path, options) used for population. + * @param {Function} cb(err,doc) A callback, executed upon completion. Receives `err` and the `doc(s)`. + * @api public + */ + +Model.populate = function (docs, paths, cb) { + assert.equal('function', typeof cb); + + // always callback on nextTick for consistent async behavior + function callback () { + var args = utils.args(arguments); + process.nextTick(function () { + cb.apply(null, args); + }); + } + + // normalized paths + var paths = utils.populate(paths); + var pending = paths.length; + + if (0 === pending) { + return callback(null, docs); + } + + // each path has its own query options and must be executed separately + var i = pending; + var path; + while (i--) { + path = paths[i]; + populate(this, docs, path, next); + } + + function next (err) { + if (next.err) return; + if (err) return callback(next.err = err); + if (--pending) return; + callback(null, docs); + } +} + +/*! + * Prepare population options + */ + +function populate (model, docs, options, cb) { + var path = options.path + var schema = model._getSchema(path); + + // handle document arrays + if (schema && schema.caster) { + schema = schema.caster; + } + + // model name for the populate query + var modelName = options.model && options.model.modelName + || options.model // query options + || schema && schema.options.ref // declared in schema + || model.modelName // an ad-hoc structure + + var Model = model.db.model(modelName); + + // expose the model used + options.model = Model; + + // normalize single / multiple docs passed + if (!Array.isArray(docs)) { + docs = [docs]; + } + + if (0 === docs.length || docs.every(utils.isNullOrUndefined)) { + return cb(); + } + + populateDocs(docs, options, cb); +} + +/*! + * Populates `docs` + */ + +function populateDocs (docs, options, cb) { + var select = options.select; + var match = options.match; + var path = options.path; + var Model = options.model; + + var rawIds = []; + var i, doc, id; + var len = docs.length; + var found = 0; + var isDocument; + var subpath; + var ret; + + for (i = 0; i < len; i++) { + ret = undefined; + doc = docs[i]; + id = String(utils.getValue("_id", doc)); + isDocument = !! doc.$__; + + if (isDocument && !doc.isModified(path)) { + // it is possible a previously populated path is being + // populated again. because users can specify matcher + // clauses in their populate arguments we use the cached + // _ids from the original populate call to ensure all _ids + // are looked up, but only if the path wasn't modified which + // signifies the users intent of the state of the path. + ret = doc.populated(path); + } + + if (!ret || Array.isArray(ret) && 0 === ret.length) { + ret = utils.getValue(path, doc); + } + + if (ret) { + // previously we always assigned this even if the document had no _id + options._docs[id] = Array.isArray(ret) + ? ret.slice() + : ret; + } + + // always retain original values, even empty values. these are + // used to map the query results back to the correct position. + rawIds.push(ret); + + if (isDocument) { + // cache original populated _ids and model used + doc.populated(path, options._docs[id], options); + } + } + + var ids = utils.array.flatten(rawIds, function (item) { + // no need to include undefined values in our query + return undefined !== item; + }); + + if (0 === ids.length || ids.every(utils.isNullOrUndefined)) { + return cb(); + } + + // preserve original match conditions by copying + if (match) { + match = utils.object.shallowCopy(match); + } else { + match = {}; + } + + match._id || (match._id = { $in: ids }); + + var assignmentOpts = {}; + assignmentOpts.sort = options.options && options.options.sort || undefined; + assignmentOpts.excludeId = /\s?-_id\s?/.test(select) || (select && 0 === select._id); + + if (assignmentOpts.excludeId) { + // override the exclusion from the query so we can use the _id + // for document matching during assignment. we'll delete the + // _id back off before returning the result. + if ('string' == typeof select) { + select = null; + } else { + // preserve original select conditions by copying + select = utils.object.shallowCopy(select); + delete select._id; + } + } + + Model.find(match, select, options.options, function (err, vals) { + if (err) return cb(err); + + var lean = options.options && options.options.lean; + var len = vals.length; + var rawOrder = {}; + var rawDocs = {} + var key; + var val; + + // optimization: + // record the document positions as returned by + // the query result. + for (var i = 0; i < len; i++) { + val = vals[i]; + key = String(utils.getValue('_id', val)); + rawDocs[key] = val; + rawOrder[key] = i; + + // flag each as result of population + if (!lean) val.$__.wasPopulated = true; + } + + assignVals({ + rawIds: rawIds, + rawDocs: rawDocs, + rawOrder: rawOrder, + docs: docs, + path: path, + options: assignmentOpts + }); + + cb(); + }); +} + +/*! + * Assigns documents returned from a population query back + * to the original document path. + */ + +function assignVals (o) { + // replace the original ids in our intermediate _ids structure + // with the documents found by query + + assignRawDocsToIdStructure(o.rawIds, o.rawDocs, o.rawOrder, o.options); + + // now update the original documents being populated using the + // result structure that contains real documents. + + var docs = o.docs; + var path = o.path; + var rawIds = o.rawIds; + var options = o.options; + + for (var i = 0; i < docs.length; ++i) { + utils.setValue(path, rawIds[i], docs[i], function (val) { + return valueFilter(val, options); + }); + } +} + +/*! + * 1) Apply backwards compatible find/findOne behavior to sub documents + * + * find logic: + * a) filter out non-documents + * b) remove _id from sub docs when user specified + * + * findOne + * a) if no doc found, set to null + * b) remove _id from sub docs when user specified + * + * 2) Remove _ids when specified by users query. + * + * background: + * _ids are left in the query even when user excludes them so + * that population mapping can occur. + */ + +function valueFilter (val, assignmentOpts) { + if (Array.isArray(val)) { + // find logic + var ret = []; + for (var i = 0; i < val.length; ++i) { + var subdoc = val[i]; + if (!isDoc(subdoc)) continue; + maybeRemoveId(subdoc, assignmentOpts); + ret.push(subdoc); + } + return ret; + } + + // findOne + if (isDoc(val)) { + maybeRemoveId(val, assignmentOpts); + return val; + } + + return null; +} + +/*! + * Remove _id from `subdoc` if user specified "lean" query option + */ + +function maybeRemoveId (subdoc, assignmentOpts) { + if (assignmentOpts.excludeId) { + if ('function' == typeof subdoc.setValue) { + subdoc.setValue('_id', undefined); + } else { + delete subdoc._id; + } + } +} + +/*! + * Determine if `doc` is a document returned + * by a populate query. + */ + +function isDoc (doc) { + if (null == doc) + return false; + + var type = typeof doc; + if ('string' == type) + return false; + + if ('number' == type) + return false; + + if (Buffer.isBuffer(doc)) + return false; + + if ('ObjectID' == doc.constructor.name) + return false; + + // only docs + return true; +} + +/*! + * Assign `vals` returned by mongo query to the `rawIds` + * structure returned from utils.getVals() honoring + * query sort order if specified by user. + * + * This can be optimized. + * + * Rules: + * + * if the value of the path is not an array, use findOne rules, else find. + * for findOne the results are assigned directly to doc path (including null results). + * for find, if user specified sort order, results are assigned directly + * else documents are put back in original order of array if found in results + * + * @param {Array} rawIds + * @param {Array} vals + * @param {Boolean} sort + * @api private + */ + +function assignRawDocsToIdStructure (rawIds, resultDocs, resultOrder, options, recursed) { + // honor user specified sort order + var newOrder = []; + var sorting = options.sort && rawIds.length > 1; + var found; + var doc; + var sid; + var id; + + for (var i = 0; i < rawIds.length; ++i) { + id = rawIds[i]; + + if (Array.isArray(id)) { + // handle [ [id0, id2], [id3] ] + assignRawDocsToIdStructure(id, resultDocs, resultOrder, options, true); + newOrder.push(id); + continue; + } + + if (null === id && !sorting) { + // keep nulls for findOne unless sorting, which always + // removes them (backward compat) + newOrder.push(id); + continue; + } + + sid = String(id); + found = false; + + if (recursed) { + // apply find behavior + + // assign matching documents in original order unless sorting + doc = resultDocs[sid]; + if (doc) { + if (sorting) { + newOrder[resultOrder[sid]] = doc; + } else { + newOrder.push(doc); + } + } else { + newOrder.push(id); + } + } else { + // apply findOne behavior - if document in results, assign, else assign null + newOrder[i] = doc = resultDocs[sid] || null; + } + } + + rawIds.length = 0; + if (newOrder.length) { + // reassign the documents based on corrected order + + // forEach skips over sparse entries in arrays so we + // can safely use this to our advantage dealing with sorted + // result sets too. + newOrder.forEach(function (doc, i) { + rawIds[i] = doc; + }); + } +} + +/** + * Finds the schema for `path`. This is different than + * calling `schema.path` as it also resolves paths with + * positional selectors (something.$.another.$.path). + * + * @param {String} path + * @return {Schema} + * @api private + */ + +Model._getSchema = function _getSchema (path) { + var schema = this.schema + , pathschema = schema.path(path); + + if (pathschema) + return pathschema; + + // look for arrays + return (function search (parts, schema) { + var p = parts.length + 1 + , foundschema + , trypath + + while (p--) { + trypath = parts.slice(0, p).join('.'); + foundschema = schema.path(trypath); + if (foundschema) { + if (foundschema.caster) { + + // array of Mixed? + if (foundschema.caster instanceof Types.Mixed) { + return foundschema.caster; + } + + // Now that we found the array, we need to check if there + // are remaining document paths to look up for casting. + // Also we need to handle array.$.path since schema.path + // doesn't work for that. + if (p !== parts.length) { + if ('$' === parts[p]) { + // comments.$.comments.$.title + return search(parts.slice(p+1), foundschema.schema); + } else { + // this is the last path of the selector + return search(parts.slice(p), foundschema.schema); + } + } + } + return foundschema; + } + } + })(path.split('.'), schema) +} + +/*! + * Compiler utility. + * + * @param {String} name model name + * @param {Schema} schema + * @param {String} collectionName + * @param {Connection} connection + * @param {Mongoose} base mongoose instance + */ + +Model.compile = function compile (name, schema, collectionName, connection, base) { + var versioningEnabled = false !== schema.options.versionKey; + + if (versioningEnabled && !schema.paths[schema.options.versionKey]) { + // add versioning to top level documents only + var o = {}; + o[schema.options.versionKey] = Number; + schema.add(o); + } + + // generate new class + function model (doc, fields, skipId) { + if (!(this instanceof model)) + return new model(doc, fields, skipId); + Model.call(this, doc, fields, skipId); + }; + + model.base = base; + model.modelName = name; + model.__proto__ = Model; + model.prototype.__proto__ = Model.prototype; + model.model = Model.prototype.model; + model.db = model.prototype.db = connection; + + model.prototype.$__setSchema(schema); + + var collectionOptions = { + bufferCommands: schema.options.bufferCommands + , capped: schema.options.capped + }; + + model.prototype.collection = connection.collection( + collectionName + , collectionOptions + ); + + // apply methods + for (var i in schema.methods) + model.prototype[i] = schema.methods[i]; + + // apply statics + for (var i in schema.statics) + model[i] = schema.statics[i]; + + // apply named scopes + if (schema.namedScopes) schema.namedScopes.compile(model); + + model.schema = model.prototype.schema; + model.options = model.prototype.options; + model.collection = model.prototype.collection; + + return model; +}; + +/*! + * Subclass this model with `conn`, `schema`, and `collection` settings. + * + * @param {Connection} conn + * @param {Schema} [schema] + * @param {String} [collection] + * @return {Model} + */ + +Model.__subclass = function subclass (conn, schema, collection) { + // subclass model using this connection and collection name + var model = this; + + var Model = function Model (doc, fields, skipId) { + if (!(this instanceof Model)) { + return new Model(doc, fields, skipId); + } + model.call(this, doc, fields, skipId); + } + + Model.__proto__ = model; + Model.prototype.__proto__ = model.prototype; + Model.db = Model.prototype.db = conn; + + var s = schema && 'string' != typeof schema + ? schema + : model.prototype.schema; + + if (!collection) { + collection = model.prototype.schema.get('collection') + || utils.toCollectionName(model.modelName); + } + + var collectionOptions = { + bufferCommands: s ? s.options.bufferCommands : true + , capped: s && s.options.capped + }; + + Model.prototype.collection = conn.collection(collection, collectionOptions); + Model.collection = Model.prototype.collection; + Model.init(); + return Model; +} + +/*! + * Module exports. + */ + +module.exports = exports = Model; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js new file mode 100644 index 0000000..1b3f5d4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js @@ -0,0 +1,70 @@ +var Query = require('./query'); +function NamedScope () {} + +NamedScope.prototype.query; + +NamedScope.prototype.where = function () { + var q = this.query || (this.query = new Query()); + q.where.apply(q, arguments); + return q; +}; + +/** + * Decorate + * + * @param {NamedScope} target + * @param {Object} getters + * @api private + */ + +NamedScope.prototype.decorate = function (target, getters) { + var name = this.name + , block = this.block + , query = this.query; + if (block) { + if (block.length === 0) { + Object.defineProperty(target, name, { + get: getters.block0(block) + }); + } else { + target[name] = getters.blockN(block); + } + } else { + Object.defineProperty(target, name, { + get: getters.basic(query) + }); + } +}; + +NamedScope.prototype.compile = function (model) { + var allScopes = this.scopesByName + , scope; + for (var k in allScopes) { + scope = allScopes[k]; + scope.decorate(model, { + block0: function (block) { + return function () { + var cquery = this._cumulativeQuery || (this._cumulativeQuery = new Query().bind(this)); + block.call(cquery); + return this; + }; + }, + blockN: function (block) { + return function () { + var cquery = this._cumulativeQuery || (this._cumulativeQuery = new Query().bind(this)); + block.apply(cquery, arguments); + return this; + }; + }, + basic: function (query) { + return function () { + var cquery = this._cumulativeQuery || (this._cumulativeQuery = new Query().bind(this)); + cquery.find(query); + return this; + }; + } + }); + } +}; + +module.exports = NamedScope; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js new file mode 100644 index 0000000..20ab42a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js @@ -0,0 +1,231 @@ + +/*! + * Module dependencies + */ + +var MPromise = require('mpromise'); + +/** + * Promise constructor. + * + * Promises are returned from executed queries. Example: + * + * var query = Candy.find({ bar: true }); + * var promise = query.exec(); + * + * @param {Function} fn a function which will be called when the promise is resolved that accepts `fn(err, ...){}` as signature + * @inherits mpromise https://github.com/aheckmann/mpromise + * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter + * @event `err`: Emits when the promise is rejected + * @event `complete`: Emits when the promise is fulfilled + * @api public + */ + +function Promise (fn) { + MPromise.call(this, fn); +} + +/*! + * Inherit from mpromise + */ + +Promise.prototype = Object.create(MPromise.prototype, { + constructor: { + value: Promise + , enumerable: false + , writable: true + , configurable: true + } +}); + +/*! + * Override event names for backward compatibility. + */ + +Promise.SUCCESS = 'complete'; +Promise.FAILURE = 'err'; + +/** + * Adds `listener` to the `event`. + * + * If `event` is either the success or failure event and the event has already been emitted, the`listener` is called immediately and passed the results of the original emitted event. + * + * @see mpromise#on https://github.com/aheckmann/mpromise#on + * @method on + * @memberOf Promise + * @param {String} event + * @param {Function} listener + * @return {Promise} this + * @api public + */ + +/** + * Rejects this promise with `reason`. + * + * If the promise has already been fulfilled or rejected, not action is taken. + * + * @see mpromise#reject https://github.com/aheckmann/mpromise#reject + * @method reject + * @memberOf Promise + * @param {Object|String|Error} reason + * @return {Promise} this + * @api public + */ + +/** + * Rejects this promise with `err`. + * + * If the promise has already been fulfilled or rejected, not action is taken. + * + * Differs from [#reject](#promise_Promise-reject) by first casting `err` to an `Error` if it is not `instanceof Error`. + * + * @api public + * @param {Error|String} err + * @return {Promise} this + */ + +Promise.prototype.error = function (err) { + if (!(err instanceof Error)) err = new Error(err); + return this.reject(err); +} + +/** + * Resolves this promise to a rejected state if `err` is passed or a fulfilled state if no `err` is passed. + * + * If the promise has already been fulfilled or rejected, not action is taken. + * + * `err` will be cast to an Error if not already instanceof Error. + * + * _NOTE: overrides [mpromise#resolve](https://github.com/aheckmann/mpromise#resolve) to provide error casting._ + * + * @param {Error} [err] error or null + * @param {Object} [val] value to fulfill the promise with + * @api public + */ + +Promise.prototype.resolve = function (err, val) { + if (err) return this.error(err); + return this.fulfill(val); +} + +/** + * Adds a single function as a listener to both err and complete. + * + * It will be executed with traditional node.js argument position when the promise is resolved. + * + * promise.addBack(function (err, args...) { + * if (err) return handleError(err); + * console.log('success'); + * }) + * + * Alias of [mpromise#onResolve](https://github.com/aheckmann/mpromise#onresolve). + * + * @method addBack + * @param {Function} listener + * @return {Promise} this + */ + +Promise.prototype.addBack = Promise.prototype.onResolve; + +/** + * Fulfills this promise with passed arguments. + * + * Alias of [mpromise#fulfill](https://github.com/aheckmann/mpromise#fulfill). + * + * @method complete + * @param {any} args + * @api public + */ + +Promise.prototype.complete = MPromise.prototype.fulfill; + +/** + * Adds a listener to the `complete` (success) event. + * + * Alias of [mpromise#onFulfill](https://github.com/aheckmann/mpromise#onfulfill). + * + * @method addCallback + * @param {Function} listener + * @return {Promise} this + * @api public + */ + +Promise.prototype.addCallback = Promise.prototype.onFulfill; + +/** + * Adds a listener to the `err` (rejected) event. + * + * Alias of [mpromise#onReject](https://github.com/aheckmann/mpromise#onreject). + * + * @method addErrback + * @param {Function} listener + * @return {Promise} this + * @api public + */ + +Promise.prototype.addErrback = Promise.prototype.onReject; + +/** + * Creates a new promise and returns it. If `onFulfill` or `onReject` are passed, they are added as SUCCESS/ERROR callbacks to this promise after the nextTick. + * + * Conforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification. + * + * ####Example: + * + * var promise = Meetups.find({ tags: 'javascript' }).select('_id').exec(); + * promise.then(function (meetups) { + * var ids = meetups.map(function (m) { + * return m._id; + * }); + * return People.find({ meetups: { $in: ids }).exec(); + * }).then(function (people) { + * if (people.length < 10000) { + * throw new Error('Too few people!!!'); + * } else { + * throw new Error('Still need more people!!!'); + * } + * }).then(null, function (err) { + * assert.ok(err instanceof Error); + * }); + * + * @see promises-A+ https://github.com/promises-aplus/promises-spec + * @see mpromise#then https://github.com/aheckmann/mpromise#then + * @method then + * @memberOf Promise + * @param {Function} onFulFill + * @param {Function} onReject + * @return {Promise} newPromise + */ + +/** + * Signifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught. + * + * ####Example: + * + * var p = new Promise; + * p.then(function(){ throw new Error('shucks') }); + * setTimeout(function () { + * p.fulfill(); + * // error was caught and swallowed by the promise returned from + * // p.then(). we either have to always register handlers on + * // the returned promises or we can do the following... + * }, 10); + * + * // this time we use .end() which prevents catching thrown errors + * var p = new Promise; + * var p2 = p.then(function(){ throw new Error('shucks') }).end(); // <-- + * setTimeout(function () { + * p.fulfill(); // throws "shucks" + * }, 10); + * + * @api public + * @see mpromise#end https://github.com/aheckmann/mpromise#end + * @method end + * @memberOf Promise + */ + +/*! + * expose + */ + +module.exports = Promise; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js new file mode 100644 index 0000000..9f052e8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js @@ -0,0 +1,2608 @@ +/*! + * Module dependencies. + */ + +var utils = require('./utils') + , merge = utils.merge + , Promise = require('./promise') + , Document = require('./document') + , Types = require('./schema/index') + , inGroupsOf = utils.inGroupsOf + , tick = utils.tick + , QueryStream = require('./querystream') + , helpers = require('./queryhelpers') + , ReadPref = require('mongodb').ReadPreference + +/** + * Query constructor used for building queries. + * + * ####Example: + * + * var query = Model.find(); + * query.where('age').gte(21).exec(callback); + * + * @param {Object} criteria + * @param {Object} options + * @api public + */ + +function Query (criteria, options) { + this.setOptions(options, true); + this._conditions = {}; + this._updateArg = {}; + this._fields = undefined; + this._geoComparison = undefined; + if (criteria) this.find(criteria); +} + +/** + * Sets query options. + * + * ####Options: + * + * - [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors) * + * - [sort](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsort(\)%7D%7D) * + * - [limit](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D) * + * - [skip](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bskip%28%29%7D%7D) * + * - [maxscan](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24maxScan) * + * - [batchSize](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7BbatchSize%28%29%7D%7D) * + * - [comment](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24comment) * + * - [snapshot](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsnapshot%28%29%7D%7D) * + * - [hint](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24hint) * + * - [slaveOk](http://docs.mongodb.org/manual/applications/replication/#read-preference) * + * - [lean](./api.html#query_Query-lean) * + * - [safe](http://www.mongodb.org/display/DOCS/getLastError+Command) + * + * _* denotes a query helper method is also available_ + * + * @param {Object} options + * @api public + */ + +Query.prototype.setOptions = function (options, overwrite) { + // overwrite is internal use only + if (overwrite) { + options = this.options = options || {}; + this.safe = options.safe; + if ('populate' in options) { + this.populate(this.options.populate); + } + return this; + } + + if (!(options && 'Object' == options.constructor.name)) + return this; + + if ('safe' in options) + this.safe = options.safe; + + // set arbitrary options + var methods = Object.keys(options) + , i = methods.length + , method + + while (i--) { + method = methods[i]; + + // use methods if exist (safer option manipulation) + if ('function' == typeof this[method]) { + var args = Array.isArray(options[method]) + ? options[method] + : [options[method]]; + this[method].apply(this, args) + } else { + this.options[method] = options[method]; + } + } + + return this; +} + +/** + * Binds this query to a model. + * + * @param {Model} model the model to which the query is bound + * @param {String} op the operation to execute + * @param {Object} updateArg used in update methods + * @return {Query} + * @api private + */ + +Query.prototype.bind = function bind (model, op, updateArg) { + this.model = model; + this.op = op; + + if (model._mapreduce) this.options.lean = true; + + if (op == 'update' || op == 'findOneAndUpdate') { + merge(this._updateArg, updateArg || {}); + } + + return this; +}; + +/** + * Executes the query + * + * ####Examples + * + * query.exec(); + * query.exec(callback); + * query.exec('update'); + * query.exec('find', callback); + * + * @param {String|Function} [operation] + * @param {Function} [callback] + * @return {Promise} + * @api public + */ + +Query.prototype.exec = function exec (op, callback) { + var promise = new Promise(); + + switch (typeof op) { + case 'function': + callback = op; + op = null; + break; + case 'string': + this.op = op; + break; + } + + if (callback) promise.addBack(callback); + + if (!this.op) { + promise.complete(); + return promise; + } + + if ('update' == this.op) { + this[this.op](this._updateArg, promise.resolve.bind(promise)); + return promise; + } + + if ('distinct' == this.op) { + this.distinct(this._distinctArg, promise.resolve.bind(promise)); + return promise; + } + + this[this.op](promise.resolve.bind(promise)); + return promise; +}; + +/** + * Finds documents. + * + * When no `callback` is passed, the query is not executed. + * + * ####Example + * + * query.find({ name: 'Los Pollos Hermanos' }).find(callback) + * + * @param {Object} [criteria] mongodb selector + * @param {Function} [callback] + * @return {Query} this + * @api public + */ + +Query.prototype.find = function (criteria, callback) { + this.op = 'find'; + if ('function' === typeof criteria) { + callback = criteria; + criteria = {}; + } else if (criteria instanceof Query) { + // TODO Merge options, too + merge(this._conditions, criteria._conditions); + } else if (criteria instanceof Document) { + merge(this._conditions, criteria.toObject()); + } else if (criteria && 'Object' === criteria.constructor.name) { + merge(this._conditions, criteria); + } + if (!callback) return this; + return this.execFind(callback); +}; + +/** + * Casts this query to the schema of `model` + * + * ####Note + * + * If `obj` is present, it is cast instead of this query. + * + * @param {Model} model + * @param {Object} [obj] + * @return {Object} + * @api public + */ + +Query.prototype.cast = function (model, obj) { + obj || (obj= this._conditions); + + var schema = model.schema + , paths = Object.keys(obj) + , i = paths.length + , any$conditionals + , schematype + , nested + , path + , type + , val; + + while (i--) { + path = paths[i]; + val = obj[path]; + + if ('$or' === path || '$nor' === path || '$and' === path) { + var k = val.length + , orComponentQuery; + + while (k--) { + orComponentQuery = new Query(val[k]); + orComponentQuery.cast(model); + val[k] = orComponentQuery._conditions; + } + + } else if (path === '$where') { + type = typeof val; + + if ('string' !== type && 'function' !== type) { + throw new Error("Must have a string or function for $where"); + } + + if ('function' === type) { + obj[path] = val.toString(); + } + + continue; + + } else { + + if (!schema) { + // no casting for Mixed types + continue; + } + + schematype = schema.path(path); + + if (!schematype) { + // Handle potential embedded array queries + var split = path.split('.') + , j = split.length + , pathFirstHalf + , pathLastHalf + , remainingConds + , castingQuery; + + // Find the part of the var path that is a path of the Schema + while (j--) { + pathFirstHalf = split.slice(0, j).join('.'); + schematype = schema.path(pathFirstHalf); + if (schematype) break; + } + + // If a substring of the input path resolves to an actual real path... + if (schematype) { + // Apply the casting; similar code for $elemMatch in schema/array.js + if (schematype.caster && schematype.caster.schema) { + remainingConds = {}; + pathLastHalf = split.slice(j).join('.'); + remainingConds[pathLastHalf] = val; + castingQuery = new Query(remainingConds); + castingQuery.cast(schematype.caster); + obj[path] = castingQuery._conditions[pathLastHalf]; + } else { + obj[path] = val; + } + continue; + } + + if (utils.isObject(val)) { + // handle geo schemas that use object notation + // { loc: { long: Number, lat: Number } + + var geo = val.$near ? '$near' : + val.$nearSphere ? '$nearSphere' : + val.$within ? '$within' : + val.$geoIntersects ? '$geoIntersects' : ''; + + if (!geo) { + continue; + } + + var numbertype = new Types.Number('__QueryCasting__') + var value = val[geo]; + + if (val.$maxDistance) { + val.$maxDistance = numbertype.castForQuery(val.$maxDistance); + } + + if ('$within' == geo) { + var withinType = value.$center + || value.$centerSphere + || value.$box + || value.$polygon; + + if (!withinType) { + throw new Error('Bad $within paramater: ' + JSON.stringify(val)); + } + + value = withinType; + + } else if ('$near' == geo && + 'string' == typeof value.type && Array.isArray(value.coordinates)) { + // geojson; cast the coordinates + value = value.coordinates; + + } else if (('$near' == geo || '$geoIntersects' == geo) && + value.$geometry && 'string' == typeof value.$geometry.type && + Array.isArray(value.$geometry.coordinates)) { + // geojson; cast the coordinates + value = value.$geometry.coordinates; + } + + ;(function _cast (val) { + if (Array.isArray(val)) { + val.forEach(function (item, i) { + if (Array.isArray(item) || utils.isObject(item)) { + return _cast(item); + } + val[i] = numbertype.castForQuery(item); + }); + } else { + var nearKeys= Object.keys(val); + var nearLen = nearKeys.length; + while (nearLen--) { + var nkey = nearKeys[nearLen]; + var item = val[nkey]; + if (Array.isArray(item) || utils.isObject(item)) { + _cast(item); + val[nkey] = item; + } else { + val[nkey] = numbertype.castForQuery(item); + } + } + } + })(value); + } + + } else if (val === null || val === undefined) { + continue; + } else if ('Object' === val.constructor.name) { + + any$conditionals = Object.keys(val).some(function (k) { + return k.charAt(0) === '$' && k !== '$id' && k !== '$ref'; + }); + + if (!any$conditionals) { + obj[path] = schematype.castForQuery(val); + } else { + + var ks = Object.keys(val) + , k = ks.length + , $cond; + + while (k--) { + $cond = ks[k]; + nested = val[$cond]; + + if ('$exists' === $cond) { + if ('boolean' !== typeof nested) { + throw new Error("$exists parameter must be Boolean"); + } + continue; + } + + if ('$type' === $cond) { + if ('number' !== typeof nested) { + throw new Error("$type parameter must be Number"); + } + continue; + } + + if ('$not' === $cond) { + this.cast(model, nested); + } else { + val[$cond] = schematype.castForQuery($cond, nested); + } + } + } + } else { + obj[path] = schematype.castForQuery(val); + } + } + } + + return obj; +}; + +/** + * Returns default options. + * @param {Model} model + * @api private + */ + +Query.prototype._optionsForExec = function (model) { + var options = utils.clone(this.options, { retainKeyOrder: true }); + delete options.populate; + + if (!('safe' in options)) + options.safe = model.schema.options.safe; + + if (!('readPreference' in options) && model.schema.options.read) + options.readPreference = model.schema.options.read; + + return options; +}; + +/** + * Applies schematype selected options to this query. + * @api private + */ + +Query.prototype._applyPaths = function applyPaths () { + // determine if query is selecting or excluding fields + + var fields = this._fields + , exclude + , keys + , ki + + if (fields) { + keys = Object.keys(fields); + ki = keys.length; + + while (ki--) { + if ('+' == keys[ki][0]) continue; + exclude = 0 === fields[keys[ki]]; + break; + } + } + + // if selecting, apply default schematype select:true fields + // if excluding, apply schematype select:false fields + + var selected = [] + , excluded = [] + , seen = []; + + analyzeSchema(this.model.schema); + + switch (exclude) { + case true: + excluded.length && this.select('-' + excluded.join(' -')); + break; + case false: + selected.length && this.select(selected.join(' ')); + break; + case undefined: + // user didn't specify fields, implies returning all fields. + // only need to apply excluded fields + excluded.length && this.select('-' + excluded.join(' -')); + break; + } + + return seen = excluded = selected = keys = fields = null; + + function analyzeSchema (schema, prefix) { + prefix || (prefix = ''); + + // avoid recursion + if (~seen.indexOf(schema)) return; + seen.push(schema); + + schema.eachPath(function (path, type) { + if (prefix) path = prefix + '.' + path; + + analyzePath(path, type); + + // array of subdocs? + if (type.schema) { + analyzeSchema(type.schema, path); + } + + }); + } + + function analyzePath (path, type) { + if ('boolean' != typeof type.selected) return; + + var plusPath = '+' + path; + if (fields && plusPath in fields) { + // forced inclusion + delete fields[plusPath]; + + // if there are other fields being included, add this one + // if no other included fields, leave this out (implied inclusion) + if (false === exclude && keys.length > 1 && !~keys.indexOf(path)) { + fields[path] = 1; + } + + return + }; + + // check for parent exclusions + var root = path.split('.')[0]; + if (~excluded.indexOf(root)) return; + + ;(type.selected ? selected : excluded).push(path); + } +} + +/** + * Specifies a javascript function or expression to pass to MongoDBs query system. + * + * ####Example + * + * query.$where('this.comments.length > 10 || this.name.length > 5') + * + * // or + * + * query.$where(function () { + * return this.comments.length > 10 || this.name.length > 5; + * }) + * + * ####NOTE: + * + * Only use `$where` when you have a condition that cannot be met using other MongoDB operators like `$lt`. + * **Be sure to read about all of [its caveats](http://docs.mongodb.org/manual/reference/operator/where/) before using.** + * + * @see $where http://docs.mongodb.org/manual/reference/operator/where/ + * @param {String|Function} js javascript string or function + * @return {Query} this + * @memberOf Query + * @method $where + * @api public + */ + +Query.prototype.$where = function (js) { + this._conditions['$where'] = js; + return this; +}; + +/** + * Specifies a `path` for use with chaining. + * + * ####Example + * + * // instead of writing: + * User.find({age: {$gte: 21, $lte: 65}}, callback); + * + * // we can instead write: + * User.where('age').gte(21).lte(65); + * + * // Moreover, you can also chain a bunch of these together: + * + * User + * .where('age').gte(21).lte(65) + * .where('name', /^b/i) + * .where('friends').slice(10) + * .exec(callback) + * + * @param {String} [path] + * @param {Object} [val] + * @return {Query} this + * @api public + */ + +Query.prototype.where = function (path, val) { + if (!arguments.length) return this; + + if ('string' != typeof path) { + throw new TypeError('path must be a string'); + } + + this._currPath = path; + + if (2 === arguments.length) { + this._conditions[path] = val; + } + + return this; +}; + +/** + * Specifies the complementary comparison value for paths specified with `where()` + * + * ####Example + * + * User.where('age').equals(49); + * + * // is the same as + * + * User.where('age', 49); + * + * @param {Object} val + * @return {Query} this + * @api public + */ + +Query.prototype.equals = function equals (val) { + var path = this._currPath; + if (!path) throw new Error('equals() must be used after where()'); + this._conditions[path] = val; + return this; +} + +/** + * Specifies arguments for an `$or` condition. + * + * ####Example + * + * query.or([{ color: 'red' }, { status: 'emergency' }]) + * + * @see $or http://docs.mongodb.org/manual/reference/operator/or/ + * @param {Array} array array of conditions + * @return {Query} this + * @api public + */ + +Query.prototype.or = function or (array) { + var or = this._conditions.$or || (this._conditions.$or = []); + if (!Array.isArray(array)) array = [array]; + or.push.apply(or, array); + return this; +} + +/** + * Specifies arguments for a `$nor` condition. + * + * ####Example + * + * query.nor([{ color: 'green' }, { status: 'ok' }]) + * + * @see $nor http://docs.mongodb.org/manual/reference/operator/nor/ + * @param {Array} array array of conditions + * @return {Query} this + * @api public + */ + +Query.prototype.nor = function nor (array) { + var nor = this._conditions.$nor || (this._conditions.$nor = []); + if (!Array.isArray(array)) array = [array]; + nor.push.apply(nor, array); + return this; +} + +/** + * Specifies arguments for a `$and` condition. + * + * ####Example + * + * query.and([{ color: 'green' }, { status: 'ok' }]) + * + * @see $and http://docs.mongodb.org/manual/reference/operator/and/ + * @param {Array} array array of conditions + * @return {Query} this + * @api public + */ + +Query.prototype.and = function and (array) { + var and = this._conditions.$and || (this._conditions.$and = []); + if (!Array.isArray(array)) array = [array]; + and.push.apply(and, array); + return this; +} + +/** + * Specifies a $gt query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * ####Example + * + * Thing.find().where('age').gt(21) + * + * // or + * Thing.find().gt('age', 21) + * + * @see $gt http://docs.mongodb.org/manual/reference/operator/gt/ + * @method gt + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies a $gte query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $gte http://docs.mongodb.org/manual/reference/operator/gte/ + * @method gte + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies a $lt query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $lt http://docs.mongodb.org/manual/reference/operator/lt/ + * @method lt + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies a $lte query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $lte http://docs.mongodb.org/manual/reference/operator/lte/ + * @method lte + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies a $ne query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $ne http://docs.mongodb.org/manual/reference/operator/ne/ + * @method ne + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies an $in query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $in http://docs.mongodb.org/manual/reference/operator/in/ + * @method in + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies an $nin query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $nin http://docs.mongodb.org/manual/reference/operator/nin/ + * @method nin + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies an $all query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $all http://docs.mongodb.org/manual/reference/operator/all/ + * @method all + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies an $size query condition. + * + * ####Example + * + * MyModel.where('tags').size(0).exec(function (err, docs) { + * if (err) return handleError(err); + * + * assert(Array.isArray(docs)); + * console.log('documents with 0 tags', docs); + * }) + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $size http://docs.mongodb.org/manual/reference/operator/size/ + * @method size + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies a $regex query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $regex http://docs.mongodb.org/manual/reference/operator/regex/ + * @method regex + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/** + * Specifies a $maxDistance query condition. + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @see $maxDistance http://docs.mongodb.org/manual/reference/operator/maxDistance/ + * @method maxDistance + * @memberOf Query + * @param {String} path + * @param {Number} val + * @api public + */ + +/*! + * gt, gte, lt, lte, ne, in, nin, all, regex, size, maxDistance + * + * Thing.where('type').nin(array) + */ + +'gt gte lt lte ne in nin all regex size maxDistance'.split(' ').forEach(function ($conditional) { + Query.prototype[$conditional] = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds['$' + $conditional] = val; + return this; + }; +}); + +/** + * Specifies a `$near` condition + * + * @param {String} path + * @param {Number} val + * @return {Query} this + * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $near http://docs.mongodb.org/manual/reference/operator/near/ + * @api public + */ + +Query.prototype.near = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath + } else if (arguments.length === 2 && !Array.isArray(val)) { + val = utils.args(arguments); + path = this._currPath; + } else if (arguments.length === 3) { + val = utils.args(arguments, 1); + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds.$near = val; + return this; +} + +/** + * Specifies a `$nearSphere` condition. + * + * @param {String} path + * @param {Object} val + * @return {Query} this + * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $nearSphere http://docs.mongodb.org/manual/reference/operator/nearSphere/ + * @api public + */ + +Query.prototype.nearSphere = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath + } else if (arguments.length === 2 && !Array.isArray(val)) { + val = utils.args(arguments); + path = this._currPath; + } else if (arguments.length === 3) { + val = utils.args(arguments, 1); + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds.$nearSphere = val; + return this; +} + +/** + * Specifies a `$mod` condition + * + * @param {String} path + * @param {Number} val + * @return {Query} this + * @see $mod http://docs.mongodb.org/manual/reference/operator/mod/ + * @api public + */ + +Query.prototype.mod = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath + } else if (arguments.length === 2 && !Array.isArray(val)) { + val = utils.args(arguments); + path = this._currPath; + } else if (arguments.length === 3) { + val = utils.args(arguments, 1); + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds.$mod = val; + return this; +} + +/** + * Specifies an `$exists` condition + * + * @param {String} path + * @param {Number} val + * @return {Query} this + * @see $exists http://docs.mongodb.org/manual/reference/operator/exists/ + * @api public + */ + +Query.prototype.exists = function (path, val) { + if (arguments.length === 0) { + path = this._currPath + val = true; + } else if (arguments.length === 1) { + if ('boolean' === typeof path) { + val = path; + path = this._currPath; + } else { + val = true; + } + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds['$exists'] = val; + return this; +}; + +/** + * Specifies an `$elemMatch` condition + * + * ####Example + * + * query.elemMatch('comment', { author: 'autobot', votes: {$gte: 5}}) + * + * query.where('comment').elemMatch({ author: 'autobot', votes: {$gte: 5}}) + * + * query.elemMatch('comment', function (elem) { + * elem.where('author').equals('autobot'); + * elem.where('votes').gte(5); + * }) + * + * query.where('comment').elemMatch(function (elem) { + * elem.where('author').equals('autobot'); + * elem.where('votes').gte(5); + * }) + * + * @param {String|Object|Function} path + * @param {Object|Function} criteria + * @return {Query} this + * @see $elemMatch http://docs.mongodb.org/manual/reference/operator/elemMatch/ + * @api public + */ + +Query.prototype.elemMatch = function (path, criteria) { + var block; + if ('Object' === path.constructor.name) { + criteria = path; + path = this._currPath; + } else if ('function' === typeof path) { + block = path; + path = this._currPath; + } else if ('Object' === criteria.constructor.name) { + } else if ('function' === typeof criteria) { + block = criteria; + } else { + throw new Error("Argument error"); + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + if (block) { + criteria = new Query(); + block(criteria); + conds['$elemMatch'] = criteria._conditions; + } else { + conds['$elemMatch'] = criteria; + } + return this; +}; + +// Spatial queries + +/** + * Defines a $within query for `box()`, `center()`, etc + * + * ####Example + * + * query.within.box() + * query.within.center() + * query.within.geometry() + * + * @property within + * @memberOf Query + * @see Query#box #query_Query-box + * @see Query#center #query_Query-center + * @see Query#centerSphere #query_Query-centerSphere + * @see Query#polygon #query_Query-polygon + * @see Query#geometry #query_Query-geometry + * @see $geoWithin http://docs.mongodb.org/manual/reference/operator/within/ + * @return {Query} this + * @api public + */ + +Object.defineProperty(Query.prototype, 'within', { + get: function () { + this._geoComparison = '$within'; + return this + } +}); + +/** + * Declares an intersects query for `geometry()`. + * + * ####Example + * + * query.intersects.geometry({ + * type: 'LineString' + * , coordinates: [[180.0, 11.0], [180, 9.0]] + * }) + * + * @property intersects + * @see Query#geometry #query_Query-geometry + * @see $geometry http://docs.mongodb.org/manual/reference/operator/geometry/ + * @see geoIntersects http://docs.mongodb.org/manual/reference/operator/geoIntersects/ + * @memberOf Query + * @return {Query} this + * @api public + */ + +Object.defineProperty(Query.prototype, 'intersects', { + get: function () { + this._geoComparison = '$geoIntersects'; + return this + } +}); + +/** + * Specifies a $box condition + * + * ####Example + * + * var lowerLeft = [40.73083, -73.99756] + * var upperRight= [40.741404, -73.988135] + * query.where('loc').within.box({ ll: lowerLeft , ur: upperRight }) + * + * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see Query#within #query_Query-within + * @see $box http://docs.mongodb.org/manual/reference/operator/box/ + * @param {String} path + * @param {Object} val + * @return {Query} this + * @api public + */ + +Query.prototype.box = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath; + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds['$within'] = { '$box': [val.ll, val.ur] }; + return this; +}; + +/** + * Specifies a $center condition + * + * ####Example + * + * var area = { center: [50, 50], radius: 10 } + * query.where('loc').within.center(area) + * + * @param {String} path + * @param {Object} val + * @param {Object} [opts] options e.g. { $uniqueDocs: true } + * @return {Query} this + * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $center http://docs.mongodb.org/manual/reference/operator/center/ + * @api public + */ + +Query.prototype.center = function (path, val, opts) { + if (arguments.length === 1) { + val = path; + path = this._currPath; + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds['$within'] = { '$center': [val.center, val.radius] }; + + // copy any options + if (opts && 'Object' == opts.constructor.name) { + utils.options(opts, conds.$within); + } + + return this; +}; + +/** + * Specifies a $centerSphere condition + * + * ####Example + * + * var area = { center: [50, 50], radius: 10 } + * query.where('loc').within.centerSphere(area) + * + * @param {String} [path] + * @param {Object} val + * @return {Query} this + * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $centerSphere http://docs.mongodb.org/manual/reference/operator/centerSphere/ + * @api public + */ + +Query.prototype.centerSphere = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath; + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds['$within'] = { '$centerSphere': [val.center, val.radius] }; + return this; +}; + +/** + * Specifies a $polygon condition + * + * ####Example + * + * var polyA = [ [ 10, 20 ], [ 10, 40 ], [ 30, 40 ], [ 30, 20 ] ] + * query.where('loc').within.polygon(polyA) + * + * // or + * var polyB = { a : { x : 10, y : 20 }, b : { x : 15, y : 25 }, c : { x : 20, y : 20 } } + * query.where('loc').within.polygon(polyB) + * + * @param {String} [path] + * @param {Array|Object} val + * @return {Query} this + * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $polygon http://docs.mongodb.org/manual/reference/operator/polygon/ + * @api public + */ + +Query.prototype.polygon = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath; + } + var conds = this._conditions[path] || (this._conditions[path] = {}); + conds['$within'] = { '$polygon': val }; + return this; +}; + +/** + * Specifies a $geometry condition + * + * ####Example + * + * var polyA = [[[ 10, 20 ], [ 10, 40 ], [ 30, 40 ], [ 30, 20 ]]] + * query.where('loc').within.geometry({ type: 'Polygon', coordinates: polyA }) + * + * // or + * var polyB = [[ 0, 0 ], [ 1, 1 ]] + * query.where('loc').within.geometry({ type: 'LineString', coordinates: polyB }) + * + * // or + * var polyC = [ 0, 0 ] + * query.where('loc').within.geometry({ type: 'Point', coordinates: polyC }) + * + * // or + * var polyC = [ 0, 0 ] + * query.where('loc').intersects.geometry({ type: 'Point', coordinates: polyC }) + * + * ####NOTE: + * + * `geometry()` **must** come after either `intersects` or `within`. + * + * The `object` argument must contain `type` and `coordinates` properties. + * - type {String} + * - coordinates {Array} + * + * When called with one argument, the most recent path passed to `where()` is used. + * + * @param {String} [path] Optional name of a path to match against + * @param {Object} object Must contain a `type` property which is a String and a `coordinates` property which is an Array. See the example. + * @return {Query} this + * @see http://docs.mongodb.org/manual/release-notes/2.4/#new-geospatial-indexes-with-geojson-and-improved-spherical-geometry + * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing + * @see $geometry http://docs.mongodb.org/manual/reference/operator/geometry/ + * @api public + */ + +Query.prototype.geometry = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath; + } + + var conds = this._conditions[path] || (this._conditions[path] = {}); + + if (!this._geoComparison) { + throw new Error('query.geometry() must come after either `within` or `intersects`'); + } + + conds[this._geoComparison] = { $geometry: val }; + return this; +}; + +/** + * Specifies which document fields to include or exclude + * + * When using string syntax, prefixing a path with `-` will flag that path as excluded. When a path does not have the `-` prefix, it is included. Lastly, if a path is prefixed with `+`, it forces inclusion of the path, which is useful for paths excluded at the [schema level](/docs/api.html#schematype_SchemaType-select). + * + * ####Example + * + * // include a and b, exclude c + * query.select('a b -c'); + * + * // or you may use object notation, useful when + * // you have keys already prefixed with a "-" + * query.select({a: 1, b: 1, c: 0}); + * + * // force inclusion of field excluded at schema level + * query.select('+path') + * + * ####NOTE: + * + * _v2 had slightly different syntax such as allowing arrays of field names. This support was removed in v3._ + * + * @param {Object|String} arg + * @return {Query} this + * @see SchemaType + * @api public + */ + +Query.prototype.select = function select (arg) { + if (!arg) return this; + + var fields = this._fields || (this._fields = {}); + + if ('Object' === arg.constructor.name) { + Object.keys(arg).forEach(function (field) { + fields[field] = arg[field]; + }); + } else if (1 === arguments.length && 'string' == typeof arg) { + arg.split(/\s+/).forEach(function (field) { + if (!field) return; + var include = '-' == field[0] ? 0 : 1; + if (include === 0) field = field.substring(1); + fields[field] = include; + }); + } else { + throw new TypeError('Invalid select() argument. Must be a string or object.'); + } + + return this; +}; + +/** + * Specifies a $slice projection for an array. + * + * ####Example + * + * query.slice('comments', 5) + * query.slice('comments', -5) + * query.slice('comments', [10, 5]) + * query.where('comments').slice(5) + * query.where('comments').slice([-10, 5]) + * + * @param {String} path + * @param {Number} val number of elements to slice + * @return {Query} this + * @see mongodb http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-RetrievingaSubrangeofArrayElements + * @see $slice http://docs.mongodb.org/manual/reference/projection/slice/#prj._S_slice + * @api public + */ + +Query.prototype.slice = function (path, val) { + if (arguments.length === 1) { + val = path; + path = this._currPath + } else if (arguments.length === 2) { + if ('number' === typeof path) { + val = [path, val]; + path = this._currPath; + } + } else if (arguments.length === 3) { + val = utils.args(arguments, 1); + } + var myFields = this._fields || (this._fields = {}); + myFields[path] = { '$slice': val }; + return this; +}; + +/** + * Sets the sort order + * + * If an object is passed, values allowed are `asc`, `desc`, `ascending`, `descending`, `1`, and `-1`. + * + * If a string is passed, it must be a space delimited list of path names. The sort order of each path is ascending unless the path name is prefixed with `-` which will be treated as descending. + * + * ####Example + * + * // sort by "field" ascending and "test" descending + * query.sort({ field: 'asc', test: -1 }); + * + * // equivalent + * query.sort('field -test'); + * + * @param {Object|String} arg + * @return {Query} this + * @see cursor.sort http://docs.mongodb.org/manual/reference/method/cursor.sort/ + * @api public + */ + +Query.prototype.sort = function (arg) { + if (!arg) return this; + + var sort = this.options.sort || (this.options.sort = []); + + if ('Object' === arg.constructor.name) { + Object.keys(arg).forEach(function (field) { + push(sort, field, arg[field]); + }); + } else if (1 === arguments.length && 'string' == typeof arg) { + arg.split(/\s+/).forEach(function (field) { + if (!field) return; + var ascend = '-' == field[0] ? -1 : 1; + if (ascend === -1) field = field.substring(1); + push(sort, field, ascend); + }); + } else { + throw new TypeError('Invalid sort() argument. Must be a string or object.'); + } + + return this; +}; + +/*! + * @ignore + */ + +function push (arr, field, value) { + var val = String(value || 1).toLowerCase(); + if (!/^(?:ascending|asc|descending|desc|1|-1)$/.test(val)) { + if (Array.isArray(value)) value = '['+value+']'; + throw new TypeError('Invalid sort value: {' + field + ': ' + value + ' }'); + } + arr.push([field, value]); +} + +/** + * Specifies the maximum number of documents the query will return. + * + * ####Example + * + * Kitten.find().limit(20).exec(callback) + * + * @method limit + * @memberOf Query + * @param {Number} val + * @api public + */ +/** + * Specifies the number of documents to skip. + * + * ####Example + * + * Kitten.find().skip(100).limit(20) + * + * @method skip + * @memberOf Query + * @param {Number} val + * @see cursor.skip http://docs.mongodb.org/manual/reference/method/cursor.skip/ + * @api public + */ +/** + * Specifies the maxscan option. + * + * ####Example + * + * Kitten.find().maxscan(100) + * + * @method maxscan + * @memberOf Query + * @param {Number} val + * @see maxScan http://docs.mongodb.org/manual/reference/operator/maxScan/ + * @api public + */ +/** + * Specifies the batchSize option. + * + * ####Example + * + * Kitten.find().batchSize(100) + * + * @method batchSize + * @memberOf Query + * @param {Number} val + * @see batchSize http://docs.mongodb.org/manual/reference/method/cursor.batchSize/ + * @api public + */ +/** + * Specifies the `comment` option. + * + * ####Example + * + * Kitten.findOne(condition).comment('login query') + * + * @method comment + * @memberOf Query + * @param {Number} val + * @see comment http://docs.mongodb.org/manual/reference/operator/comment/ + * @api public + */ + +/*! + * limit, skip, maxscan, batchSize, comment + * + * Sets these associated options. + * + * query.comment('feed query'); + */ + +;['limit', 'skip', 'maxscan', 'batchSize', 'comment'].forEach(function (method) { + Query.prototype[method] = function (v) { + this.options[method] = v; + return this; + }; +}); + +/** + * Specifies this query as a `snapshot` query. + * + * ####Example + * + * Kitten.find().snapshot() + * + * @see snapshot http://docs.mongodb.org/manual/reference/operator/snapshot/ + * @return {Query} this + * @api public + */ + +Query.prototype.snapshot = function () { + this.options.snapshot = true; + return this; +}; + +/** + * Sets query hints. + * + * ####Example + * + * Model.find().hint({ indexA: 1, indexB: -1}) + * + * @param {Object} val a hint object + * @return {Query} this + * @see $hint http://docs.mongodb.org/manual/reference/operator/hint/ + * @api public + */ + +Query.prototype.hint = function (val) { + if (!val) return this; + + var hint = this.options.hint || (this.options.hint = {}); + + if ('Object' === val.constructor.name) { + // must keep object keys in order so don't use Object.keys() + for (var k in val) { + hint[k] = val[k]; + } + } else { + throw new TypeError('Invalid hint. ' + val); + } + + return this; +}; + +/** + * Sets the slaveOk option. _Deprecated_ in MongoDB 2.2 in favor of [read preferences](#query_Query-read). + * + * ####Example: + * + * new Query().slaveOk() // true + * new Query().slaveOk(true) + * new Query().slaveOk(false) + * + * @param {Boolean} v defaults to true + * @see mongodb http://docs.mongodb.org/manual/applications/replication/#read-preference + * @see slaveOk http://docs.mongodb.org/manual/reference/method/rs.slaveOk/ + * @return {Query} this + * @api public + */ + +Query.prototype.slaveOk = function (v) { + this.options.slaveOk = arguments.length ? !!v : true; + return this; +} + +/** + * Determines the MongoDB nodes from which to read. + * + * ####Preferences: + * + * primary - (default) Read from primary only. Operations will produce an error if primary is unavailable. Cannot be combined with tags. + * secondary Read from secondary if available, otherwise error. + * primaryPreferred Read from primary if available, otherwise a secondary. + * secondaryPreferred Read from a secondary if available, otherwise read from the primary. + * nearest All operations read from among the nearest candidates, but unlike other modes, this option will include both the primary and all secondaries in the selection. + * + * Aliases + * + * p primary + * pp primaryPreferred + * s secondary + * sp secondaryPreferred + * n nearest + * + * ####Example: + * + * new Query().read('primary') + * new Query().read('p') // same as primary + * + * new Query().read('primaryPreferred') + * new Query().read('pp') // same as primaryPreferred + * + * new Query().read('secondary') + * new Query().read('s') // same as secondary + * + * new Query().read('secondaryPreferred') + * new Query().read('sp') // same as secondaryPreferred + * + * new Query().read('nearest') + * new Query().read('n') // same as nearest + * + * // read from secondaries with matching tags + * new Query().read('secondary', [{ dc:'sf', s: 1 },{ dc:'ma', s: 2 }]) + * + * Read more about how to use read preferrences [here](http://docs.mongodb.org/manual/applications/replication/#read-preference) and [here](http://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences). + * + * @param {String} pref one of the listed preference options or aliases + * @param {Array} [tags] optional tags for this query + * @see mongodb http://docs.mongodb.org/manual/applications/replication/#read-preference + * @see driver http://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences + * @return {Query} this + * @api public + */ + +Query.prototype.read = function (pref, tags) { + this.options.readPreference = utils.readPref(pref, tags); + return this; +} + +/** + * Sets the lean option. + * + * Documents returned from queries with the `lean` option enabled are plain javascript objects, not [MongooseDocuments](#document-js). They have no `save` method, getters/setters or other Mongoose magic applied. + * + * ####Example: + * + * new Query().lean() // true + * new Query().lean(true) + * new Query().lean(false) + * + * Model.find().lean().exec(function (err, docs) { + * docs[0] instanceof mongoose.Document // false + * }); + * + * This is a [great](https://groups.google.com/forum/#!topic/mongoose-orm/u2_DzDydcnA/discussion) option in high-performance read-only scenarios, especially when combined with [stream](#query_Query-stream). + * + * @param {Boolean} bool defaults to true + * @return {Query} this + * @api public + */ + +Query.prototype.lean = function (v) { + this.options.lean = arguments.length ? !!v : true; + return this; +} + +/** + * Sets the tailable option (for use with capped collections). + * + * ####Example + * + * Kitten.find().tailable() // true + * Kitten.find().tailable(true) + * Kitten.find().tailable(false) + * + * @param {Boolean} bool defaults to true + * @see tailable http://docs.mongodb.org/manual/tutorial/create-tailable-cursor/ + * @api public + */ + +Query.prototype.tailable = function (v) { + this.options.tailable = arguments.length ? !!v : true; + return this; +}; + +/** + * Executes the query as a find() operation. + * + * @param {Function} callback + * @return {Query} this + * @api private + */ + +Query.prototype.execFind = function (callback) { + var model = this.model + , promise = new Promise(callback); + + try { + this.cast(model); + } catch (err) { + promise.error(err); + return this; + } + + // apply default schematype path selections + this._applyPaths(); + + var self = this + , castQuery = this._conditions + , options = this._optionsForExec(model) + , fields = utils.clone(this._fields) + + options.fields = this._castFields(fields); + if (options.fields instanceof Error) { + promise.error(options.fields); + return this; + } + + model.collection.find(castQuery, options, function (err, cursor) { + if (err) return promise.error(err); + cursor.toArray(tick(cb)); + }); + + function cb (err, docs) { + if (err) return promise.error(err); + + if (0 === docs.length) { + return promise.complete(docs); + } + + if (!self.options.populate) { + return true === options.lean + ? promise.complete(docs) + : completeMany(model, docs, fields, self, null, promise); + } + + var pop = helpers.preparePopulationOptions(self, options); + model.populate(docs, pop, function (err, docs) { + if (err) return promise.error(err); + return true === options.lean + ? promise.complete(docs) + : completeMany(model, docs, fields, self, pop, promise); + }); + } + + return this; +} + +/*! + * hydrates many documents + * + * @param {Model} model + * @param {Array} docs + * @param {Object} fields + * @param {Query} self + * @param {Array} [pop] array of paths used in population + * @param {Promise} promise + */ + +function completeMany (model, docs, fields, self, pop, promise) { + var arr = []; + var count = docs.length; + var len = count; + var i = 0; + var opts = pop ? + { populated: pop } + : undefined; + + for (; i < len; ++i) { + arr[i] = new model(undefined, fields, true); + arr[i].init(docs[i], opts, function (err) { + if (err) return promise.error(err); + --count || promise.complete(arr); + }); + } +} + +/** + * Executes the query as a findOne() operation, passing the first found document to the callback. + * + * ####Example + * + * var query = Kitten.find({ color: 'white'}); + * + * query.findOne(function (err, kitten) { + * if (err) return handleError(err); + * + * // kitten may be null if no document matched + * if (kitten) { + * ... + * } + * }) + * + * @param {Function} callback + * @return {Query} this + * @see findOne http://docs.mongodb.org/manual/reference/method/db.collection.findOne/ + * @api public + */ + +Query.prototype.findOne = function (callback) { + this.op = 'findOne'; + + if (!callback) return this; + + var model = this.model; + var promise = new Promise(callback); + + try { + this.cast(model); + } catch (err) { + promise.error(err); + return this; + } + + // apply default schematype path selections + this._applyPaths(); + + var self = this + , castQuery = this._conditions + , options = this._optionsForExec(model) + , fields = utils.clone(this._fields) + + options.fields = this._castFields(fields); + if (options.fields instanceof Error) { + promise.error(options.fields); + return this; + } + + model.collection.findOne(castQuery, options, tick(function (err, doc) { + if (err) return promise.error(err); + if (!doc) return promise.complete(null); + + if (!self.options.populate) { + return true === options.lean + ? promise.complete(doc) + : completeOne(model, doc, fields, self, null, promise); + } + + var pop = helpers.preparePopulationOptions(self, options); + model.populate(doc, pop, function (err, doc) { + if (err) return promise.error(err); + return true === options.lean + ? promise.complete(doc) + : completeOne(model, doc, fields, self, pop, promise); + }) + })); + + return this; +} + +/*! + * hydrates a document + * + * @param {Model} model + * @param {Document} doc + * @param {Object} fields + * @param {Query} self + * @param {Array} [pop] array of paths used in population + * @param {Promise} promise + */ + +function completeOne (model, doc, fields, self, pop, promise) { + var opts = pop ? + { populated: pop } + : undefined; + + var casted = new model(undefined, fields, true); + casted.init(doc, opts, function (err) { + if (err) return promise.error(err); + promise.complete(casted); + }); +} + +/** + * Exectues the query as a count() operation. + * + * ####Example + * + * Kitten.where('color', 'black').count(function (err, count) { + * if (err) return handleError(err); + * console.log('there are %d black kittens', count); + * }) + * + * @param {Function} callback + * @return {Query} this + * @see count http://docs.mongodb.org/manual/reference/method/db.collection.count/ + * @api public + */ + +Query.prototype.count = function (callback) { + this.op = 'count'; + var model = this.model; + + try { + this.cast(model); + } catch (err) { + return callback(err); + } + + var castQuery = this._conditions; + model.collection.count(castQuery, tick(callback)); + + return this; +}; + +/** + * Executes this query as a distict() operation. + * + * ####Example + * + * Link.find({ clicks: { $gt: 100 }}).distinct('url', function (err, result) { + * if (err) return handleError(err); + * + * assert(Array.isArray(result)); + * console.log('unique urls with more than 100 clicks', result); + * }) + * + * @param {String} field + * @param {Function} callback + * @return {Query} this + * @see distinct http://docs.mongodb.org/manual/reference/method/db.collection.distinct/ + * @api public + */ + +Query.prototype.distinct = function (field, callback) { + this.op = 'distinct'; + var model = this.model; + + try { + this.cast(model); + } catch (err) { + return callback(err); + } + + var castQuery = this._conditions; + model.collection.distinct(field, castQuery, tick(callback)); + + return this; +}; + +/*! + * These operators require casting docs + * to real Documents for Update operations. + */ + +var castOps = { + $push: 1 + , $pushAll: 1 + , $addToSet: 1 + , $set: 1 +}; + +/*! + * These operators should be cast to numbers instead + * of their path schema type. + */ + +var numberOps = { + $pop: 1 + , $unset: 1 + , $inc: 1 +} + +/** + * Executes this query as an update() operation. + * + * _All paths passed that are not $atomic operations will become $set ops so we retain backwards compatibility._ + * + * ####Example + * + * Model.update({..}, { title: 'remove words' }, ...) + * + * // becomes + * + * Model.update({..}, { $set: { title: 'remove words' }}, ...) + * + * ####Note + * + * Passing an empty object `{}` as the doc will result in a no-op. The update operation will be ignored and the callback executed without sending the command to MongoDB so as to prevent accidently overwritting the collection. + * + * @param {Object} doc the update conditions + * @param {Function} callback + * @return {Query} this + * @api public + * @see Model.update #model_Model.update + * @see update http://docs.mongodb.org/manual/reference/method/db.collection.update/ + */ + +Query.prototype.update = function update (doc, callback) { + this.op = 'update'; + this._updateArg = doc; + + var model = this.model + , options = this._optionsForExec(model) + , fn = 'function' == typeof callback + , castedQuery + , castedDoc + + castedQuery = castQuery(this); + if (castedQuery instanceof Error) { + if (fn) { + process.nextTick(callback.bind(null, castedQuery)); + return this; + } + throw castedQuery; + } + + castedDoc = castDoc(this); + if (!castedDoc) { + fn && process.nextTick(callback.bind(null, null, 0)); + return this; + } + + if (castedDoc instanceof Error) { + if (fn) { + process.nextTick(callback.bind(null, castedDoc)); + return this; + } + throw castedDoc; + } + + if (!fn) { + options.safe = { w: 0 }; + } + + model.collection.update(castedQuery, castedDoc, options, tick(callback)); + return this; +}; + +/** + * Casts obj for an update command. + * + * @param {Object} obj + * @return {Object} obj after casting its values + * @api private + */ + +Query.prototype._castUpdate = function _castUpdate (obj) { + var ops = Object.keys(obj) + , i = ops.length + , ret = {} + , hasKeys + , val + + while (i--) { + var op = ops[i]; + if ('$' !== op[0]) { + // fix up $set sugar + if (!ret.$set) { + if (obj.$set) { + ret.$set = obj.$set; + } else { + ret.$set = {}; + } + } + ret.$set[op] = obj[op]; + ops.splice(i, 1); + if (!~ops.indexOf('$set')) ops.push('$set'); + } else if ('$set' === op) { + if (!ret.$set) { + ret[op] = obj[op]; + } + } else { + ret[op] = obj[op]; + } + } + + // cast each value + i = ops.length; + + while (i--) { + op = ops[i]; + val = ret[op]; + if ('Object' === val.constructor.name) { + hasKeys |= this._walkUpdatePath(val, op); + } else { + var msg = 'Invalid atomic update value for ' + op + '. ' + + 'Expected an object, received ' + typeof val; + throw new Error(msg); + } + } + + return hasKeys && ret; +} + +/** + * Walk each path of obj and cast its values + * according to its schema. + * + * @param {Object} obj - part of a query + * @param {String} op - the atomic operator ($pull, $set, etc) + * @param {String} pref - path prefix (internal only) + * @return {Bool} true if this path has keys to update + * @api private + */ + +Query.prototype._walkUpdatePath = function _walkUpdatePath (obj, op, pref) { + var prefix = pref ? pref + '.' : '' + , keys = Object.keys(obj) + , i = keys.length + , hasKeys = false + , schema + , key + , val + + var strict = 'strict' in this.options + ? this.options.strict + : this.model.schema.options.strict; + + while (i--) { + key = keys[i]; + val = obj[key]; + + if (val && 'Object' === val.constructor.name) { + // watch for embedded doc schemas + schema = this._getSchema(prefix + key); + if (schema && schema.caster && op in castOps) { + // embedded doc schema + + if (strict && !schema) { + // path is not in our strict schema + if ('throw' == strict) { + throw new Error('Field `' + key + '` is not in schema.'); + } else { + // ignore paths not specified in schema + delete obj[key]; + } + } else { + hasKeys = true; + + if ('$each' in val) { + obj[key] = { + $each: this._castUpdateVal(schema, val.$each, op) + } + + if (val.$slice) { + obj[key].$slice = val.$slice | 0; + } + + if (val.$sort) { + obj[key].$sort = val.$sort; + } + + } else { + obj[key] = this._castUpdateVal(schema, val, op); + } + } + } else { + hasKeys |= this._walkUpdatePath(val, op, prefix + key); + } + } else { + schema = '$each' === key + ? this._getSchema(pref) + : this._getSchema(prefix + key); + + var skip = strict && + !schema && + !/real|nested/.test(this.model.schema.pathType(prefix + key)); + + if (skip) { + if ('throw' == strict) { + throw new Error('Field `' + prefix + key + '` is not in schema.'); + } else { + delete obj[key]; + } + } else { + hasKeys = true; + obj[key] = this._castUpdateVal(schema, val, op, key); + } + } + } + return hasKeys; +} + +/** + * Casts `val` according to `schema` and atomic `op`. + * + * @param {Schema} schema + * @param {Object} val + * @param {String} op - the atomic operator ($pull, $set, etc) + * @param {String} [$conditional] + * @api private + */ + +Query.prototype._castUpdateVal = function _castUpdateVal (schema, val, op, $conditional) { + if (!schema) { + // non-existing schema path + return op in numberOps + ? Number(val) + : val + } + + if (schema.caster && op in castOps && + ('Object' === val.constructor.name || Array.isArray(val))) { + // Cast values for ops that add data to MongoDB. + // Ensures embedded documents get ObjectIds etc. + var tmp = schema.cast(val); + + if (Array.isArray(val)) { + val = tmp; + } else { + val = tmp[0]; + } + } + + if (op in numberOps) return Number(val); + if (/^\$/.test($conditional)) return schema.castForQuery($conditional, val); + return schema.castForQuery(val) +} + +/** + * Finds the schema for `path`. This is different than + * calling `schema.path` as it also resolves paths with + * positional selectors (something.$.another.$.path). + * + * @param {String} path + * @api private + */ + +Query.prototype._getSchema = function _getSchema (path) { + return this.model._getSchema(path); +} + +/** + * Casts selected field arguments for field selection with mongo 2.2 + * + * query.select({ ids: { $elemMatch: { $in: [hexString] }}) + * + * @param {Object} fields + * @see https://github.com/LearnBoost/mongoose/issues/1091 + * @see http://docs.mongodb.org/manual/reference/projection/elemMatch/ + * @api private + */ + +Query.prototype._castFields = function _castFields (fields) { + var selected + , elemMatchKeys + , keys + , key + , out + , i + + if (fields) { + keys = Object.keys(fields); + elemMatchKeys = []; + i = keys.length; + + // collect $elemMatch args + while (i--) { + key = keys[i]; + if (fields[key].$elemMatch) { + selected || (selected = {}); + selected[key] = fields[key]; + elemMatchKeys.push(key); + } + } + } + + if (selected) { + // they passed $elemMatch, cast em + try { + out = this.cast(this.model, selected); + } catch (err) { + return err; + } + + // apply the casted field args + i = elemMatchKeys.length; + while (i--) { + key = elemMatchKeys[i]; + fields[key] = out[key]; + } + } + + return fields; +} + +/** + * Executes this query as a remove() operation. + * + * ####Example + * + * Cassette.where('artist').equals('Anne Murray').remove(callback) + * + * @param {Function} callback + * @api public + * @see remove http://docs.mongodb.org/manual/reference/method/db.collection.remove/ + */ + +Query.prototype.remove = function (callback) { + this.op = 'remove'; + + var model = this.model + , options = this._optionsForExec(model) + , cb = 'function' == typeof callback + + try { + this.cast(model); + } catch (err) { + if (cb) return callback(err); + throw err; + } + + if (!cb) { + options.safe = { w: 0 }; + } + + var castQuery = this._conditions; + model.collection.remove(castQuery, options, tick(callback)); + return this; +}; + +/** + * Issues a mongodb [findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) update command. + * + * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. + * + * ####Available options + * + * - `new`: bool - true to return the modified document rather than the original. defaults to true + * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. + * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update + * + * ####Examples + * + * query.findOneAndUpdate(conditions, update, options, callback) // executes + * query.findOneAndUpdate(conditions, update, options) // returns Query + * query.findOneAndUpdate(conditions, update, callback) // executes + * query.findOneAndUpdate(conditions, update) // returns Query + * query.findOneAndUpdate(callback) // executes + * query.findOneAndUpdate() // returns Query + * + * @param {Object} [query] + * @param {Object} [doc] + * @param {Object} [options] + * @param {Function} [callback] + * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command + * @return {Query} this + * @api public + */ + +Query.prototype.findOneAndUpdate = function (query, doc, options, callback) { + this.op = 'findOneAndUpdate'; + + switch (arguments.length) { + case 3: + if ('function' == typeof options) + callback = options, options = {}; + break; + case 2: + if ('function' == typeof doc) { + callback = doc; + doc = query; + query = undefined; + } + options = undefined; + break; + case 1: + if ('function' == typeof query) { + callback = query; + query = options = doc = undefined; + } else { + doc = query; + query = options = undefined; + } + } + + // apply query + if (query) { + if ('Object' === query.constructor.name) { + merge(this._conditions, query); + } else if (query instanceof Query) { + merge(this._conditions, query._conditions); + } else if (query instanceof Document) { + merge(this._conditions, query.toObject()); + } + } + + // apply doc + if (doc) { + merge(this._updateArg, doc); + } + + // apply options + options && this.setOptions(options); + + if (!callback) return this; + + return this._findAndModify('update', callback); +} + +/** + * Issues a mongodb [findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) remove command. + * + * Finds a matching document, removes it, passing the found document (if any) to the callback. Executes immediately if `callback` is passed else a Query object is returned. + * + * ####Available options + * + * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update + * + * ####Examples + * + * A.where().findOneAndRemove(conditions, options, callback) // executes + * A.where().findOneAndRemove(conditions, options) // return Query + * A.where().findOneAndRemove(conditions, callback) // executes + * A.where().findOneAndRemove(conditions) // returns Query + * A.where().findOneAndRemove(callback) // executes + * A.where().findOneAndRemove() // returns Query + * + * @param {Object} [conditions] + * @param {Object} [options] + * @param {Function} [callback] + * @return {Query} this + * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command + * @api public + */ + +Query.prototype.findOneAndRemove = function (conditions, options, callback) { + this.op = 'findOneAndRemove'; + + if ('function' == typeof options) { + callback = options; + options = undefined; + } else if ('function' == typeof conditions) { + callback = conditions; + conditions = undefined; + } + + // apply conditions + if (conditions) { + if ('Object' === conditions.constructor.name) { + merge(this._conditions, conditions); + } else if (conditions instanceof Query) { + merge(this._conditions, conditions._conditions); + } else if (conditions instanceof Document) { + merge(this._conditions, conditions.toObject()); + } + } + + // apply options + options && this.setOptions(options); + + if (!callback) return this; + + return this._findAndModify('remove', callback); +} + +/** + * _findAndModify + * + * @param {String} type - either "remove" or "update" + * @param {Function} callback + * @api private + */ + +Query.prototype._findAndModify = function (type, callback) { + var model = this.model + , promise = new Promise(callback) + , self = this + , castedQuery + , castedDoc + , fields + , sort + , opts + + castedQuery = castQuery(this); + if (castedQuery instanceof Error) { + process.nextTick(promise.error.bind(promise, castedQuery)); + return promise; + } + + opts = this._optionsForExec(model); + + if ('remove' == type) { + opts.remove = true; + } else { + if (!('new' in opts)) opts.new = true; + if (!('upsert' in opts)) opts.upsert = false; + + castedDoc = castDoc(this); + if (!castedDoc) { + if (opts.upsert) { + // still need to do the upsert to empty doc + castedDoc = { $set: {} }; + } else { + return this.findOne(callback); + } + } else if (castedDoc instanceof Error) { + process.nextTick(promise.error.bind(promise, castedDoc)); + return promise; + } + } + + this._applyPaths(); + + if (this._fields) { + fields = utils.clone(this._fields) + opts.fields = this._castFields(fields); + if (opts.fields instanceof Error) { + process.nextTick(promise.error.bind(promise, opts.fields)); + return promise; + } + } + + // the driver needs a default + sort = opts.sort || []; + + model + .collection + .findAndModify(castedQuery, sort, castedDoc, opts, tick(function (err, doc) { + if (err) return promise.error(err); + if (!doc) return promise.complete(null); + + if (!self.options.populate) { + return true === opts.lean + ? promise.complete(doc) + : completeOne(model, doc, fields, self, null, promise); + } + + var pop = helpers.preparePopulationOptions(self, opts); + model.populate(doc, pop, function (err, doc) { + if (err) return promise.error(err); + return true === opts.lean + ? promise.complete(doc) + : completeOne(model, doc, fields, self, pop, promise); + }) + })); + + return promise; +} + +/** + * Specifies paths which should be populated with other documents. + * + * ####Example: + * + * Kitten.findOne().populate('owner').exec(function (err, kitten) { + * console.log(kitten.owner.name) // Max + * }) + * + * Kitten.find().populate({ + * path: 'owner' + * , select: 'name' + * , match: { color: 'black' } + * , options: { sort: { name: -1 }} + * }).exec(function (err, kittens) { + * console.log(kittens[0].owner.name) // Zoopa + * }) + * + * // alternatively + * Kitten.find().populate('owner', 'name', null, {sort: { name: -1 }}).exec(function (err, kittens) { + * console.log(kittens[0].owner.name) // Zoopa + * }) + * + * Paths are populated after the query executes and a response is received. A separate query is then executed for each path specified for population. After a response for each query has also been returned, the results are passed to the callback. + * + * @param {Object|String} path either the path to populate or an object specifying all parameters + * @param {Object|String} [select] Field selection for the population query + * @param {Model} [model] The name of the model you wish to use for population. If not specified, the name is looked up from the Schema ref. + * @param {Object} [match] Conditions for the population query + * @param {Object} [options] Options for the population query (sort, etc) + * @see population ./populate.html + * @see Query#select #query_Query-select + * @see Model.populate #model_Model.populate + * @return {Query} this + * @api public + */ + +Query.prototype.populate = function populate () { + var res = utils.populate.apply(null, arguments); + var opts = this.options; + + if (!utils.isObject(opts.populate)) { + opts.populate = {}; + } + + for (var i = 0; i < res.length; ++i) { + opts.populate[res[i].path] = res[i]; + } + + return this; +} + +/** + * Returns a Node.js 0.8 style [read stream](http://nodejs.org/docs/v0.8.21/api/stream.html#stream_readable_stream) interface. + * + * ####Example + * + * // follows the nodejs 0.8 stream api + * Thing.find({ name: /^hello/ }).stream().pipe(res) + * + * // manual streaming + * var stream = Thing.find({ name: /^hello/ }).stream(); + * + * stream.on('data', function (doc) { + * // do something with the mongoose document + * }).on('error', function (err) { + * // handle the error + * }).on('close', function () { + * // the stream is closed + * }); + * + * ####Valid options + * + * - `transform`: optional function which accepts a mongoose document. The return value of the function will be emitted on `data`. + * + * ####Example + * + * // JSON.stringify all documents before emitting + * var stream = Thing.find().stream({ transform: JSON.stringify }); + * stream.pipe(writeStream); + * + * @return {QueryStream} + * @param {Object} [options] + * @see QueryStream + * @api public + */ + +Query.prototype.stream = function stream (opts) { + return new QueryStream(this, opts); +} + +// helpers + +/*! + * castDoc + * @api private + */ + +function castDoc (query) { + try { + return query._castUpdate(query._updateArg); + } catch (err) { + return err; + } +} + +/*! + * castQuery + * @api private + */ + +function castQuery (query) { + try { + return query.cast(query.model); + } catch (err) { + return err; + } +} + +/*! + * Exports. + */ + +module.exports = Query; +module.exports.QueryStream = QueryStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js new file mode 100644 index 0000000..4637fad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js @@ -0,0 +1,35 @@ + +/*! + * Module dependencies + */ + +var utils = require('./utils') + +/*! + * Prepare a set of path options for query population. + * + * @param {Query} query + * @param {Object} options + * @return {Array} + */ + +exports.preparePopulationOptions = function preparePopulationOptions (query, options) { + var pop = utils.object.vals(query.options.populate); + + // lean options should trickle through all queries + if (options.lean) pop.forEach(makeLean); + + return pop; +} + +/*! + * Set each path query option to lean + * + * @param {Object} option + */ + +function makeLean (option) { + option.options || (option.options = {}); + option.options.lean = true; +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js new file mode 100644 index 0000000..6db7570 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js @@ -0,0 +1,336 @@ + +/*! + * Module dependencies. + */ + +var Stream = require('stream').Stream +var utils = require('./utils') +var helpers = require('./queryhelpers') +var K = function(k){ return k } + +/** + * Provides a Node.js 0.8 style [ReadStream](http://nodejs.org/docs/v0.8.21/api/stream.html#stream_readable_stream) interface for Queries. + * + * var stream = Model.find().stream(); + * + * stream.on('data', function (doc) { + * // do something with the mongoose document + * }).on('error', function (err) { + * // handle the error + * }).on('close', function () { + * // the stream is closed + * }); + * + * + * The stream interface allows us to simply "plug-in" to other _Node.js 0.8_ style write streams. + * + * Model.where('created').gte(twoWeeksAgo).stream().pipe(writeStream); + * + * ####Valid options + * + * - `transform`: optional function which accepts a mongoose document. The return value of the function will be emitted on `data`. + * + * ####Example + * + * // JSON.stringify all documents before emitting + * var stream = Thing.find().stream({ transform: JSON.stringify }); + * stream.pipe(writeStream); + * + * _NOTE: plugging into an HTTP response will *not* work out of the box. Those streams expect only strings or buffers to be emitted, so first formatting our documents as strings/buffers is necessary._ + * + * _NOTE: these streams are Node.js 0.8 style read streams which differ from Node.js 0.10 style. Node.js 0.10 streams are not well tested yet and are not guaranteed to work._ + * + * @param {Query} query + * @param {Object} [options] + * @inherits NodeJS Stream http://nodejs.org/docs/v0.8.21/api/stream.html#stream_readable_stream + * @event `data`: emits a single Mongoose document + * @event `error`: emits when an error occurs during streaming. This will emit _before_ the `close` event. + * @event `close`: emits when the stream reaches the end of the cursor or an error occurs, or the stream is manually `destroy`ed. After this event, no more events are emitted. + * @api public + */ + +function QueryStream (query, options) { + Stream.call(this); + + this.query = query; + this.readable = true; + this.paused = false; + this._cursor = null; + this._destroyed = null; + this._fields = null; + this._buffer = null; + this._inline = T_INIT; + this._running = false; + this._transform = options && 'function' == typeof options.transform + ? options.transform + : K; + + // give time to hook up events + var self = this; + process.nextTick(function () { + self._init(); + }); +} + +/*! + * Inherit from Stream + */ + +QueryStream.prototype.__proto__ = Stream.prototype; + +/** + * Flag stating whether or not this stream is readable. + * + * @property readable + * @api public + */ + +QueryStream.prototype.readable; + +/** + * Flag stating whether or not this stream is paused. + * + * @property paused + * @api public + */ + +QueryStream.prototype.paused; + +// trampoline flags +var T_INIT = 0; +var T_IDLE = 1; +var T_CONT = 2; + +/** + * Initializes the query. + * + * @api private + */ + +QueryStream.prototype._init = function () { + if (this._destroyed) return; + + var query = this.query + , model = query.model + , options = query._optionsForExec(model) + , self = this + + try { + query.cast(model); + } catch (err) { + return self.destroy(err); + } + + self._fields = utils.clone(query._fields); + options.fields = query._castFields(self._fields); + + model.collection.find(query._conditions, options, function (err, cursor) { + if (err) return self.destroy(err); + self._cursor = cursor; + self._next(); + }); +} + +/** + * Trampoline for pulling the next doc from cursor. + * + * @see QueryStream#__next #querystream_QueryStream-__next + * @api private + */ + +QueryStream.prototype._next = function _next () { + if (this.paused || this._destroyed) { + return this._running = false; + } + + this._running = true; + + if (this._buffer && this._buffer.length) { + var arg; + while (!this.paused && !this._destroyed && (arg = this._buffer.shift())) { + this._onNextObject.apply(this, arg); + } + } + + // avoid stack overflows with large result sets. + // trampoline instead of recursion. + while (this.__next()) {} +} + +/** + * Pulls the next doc from the cursor. + * + * @see QueryStream#_next #querystream_QueryStream-_next + * @api private + */ + +QueryStream.prototype.__next = function () { + if (this.paused || this._destroyed) + return this._running = false; + + var self = this; + self._inline = T_INIT; + + self._cursor.nextObject(function cursorcb (err, doc) { + self._onNextObject(err, doc); + }); + + // if onNextObject() was already called in this tick + // return ourselves to the trampoline. + if (T_CONT === this._inline) { + return true; + } else { + // onNextObject() hasn't fired yet. tell onNextObject + // that its ok to call _next b/c we are not within + // the trampoline anymore. + this._inline = T_IDLE; + } +} + +/** + * Transforms raw `doc`s returned from the cursor into a model instance. + * + * @param {Error|null} err + * @param {Object} doc + * @api private + */ + +QueryStream.prototype._onNextObject = function _onNextObject (err, doc) { + if (this._destroyed) return; + + if (this.paused) { + this._buffer || (this._buffer = []); + this._buffer.push([err, doc]); + return this._running = false; + } + + if (err) return this.destroy(err); + + // when doc is null we hit the end of the cursor + if (!doc) { + this.emit('end'); + return this.destroy(); + } + + var opts = this.query.options; + + if (!opts.populate) { + return true === opts.lean + ? emit(this, doc) + : createAndEmit(this, doc); + } + + var self = this; + var pop = helpers.preparePopulationOptions(self.query, self.query.options); + + self.query.model.populate(doc, pop, function (err, doc) { + if (err) return self.destroy(err); + return true === opts.lean + ? emit(self, doc) + : createAndEmit(self, doc); + }) +} + +function createAndEmit (self, doc) { + var instance = new self.query.model(undefined, self._fields, true); + instance.init(doc, function (err) { + if (err) return self.destroy(err); + emit(self, instance); + }); +} + +/*! + * Emit a data event and manage the trampoline state + */ + +function emit (self, doc) { + self.emit('data', self._transform(doc)); + + // trampoline management + if (T_IDLE === self._inline) { + // no longer in trampoline. restart it. + self._next(); + } else { + // in a trampoline. tell __next that its + // ok to continue jumping. + self._inline = T_CONT; + } +} + +/** + * Pauses this stream. + * + * @api public + */ + +QueryStream.prototype.pause = function () { + this.paused = true; +} + +/** + * Resumes this stream. + * + * @api public + */ + +QueryStream.prototype.resume = function () { + this.paused = false; + + if (!this._cursor) { + // cannot start if not initialized + return; + } + + // are we within the trampoline? + if (T_INIT === this._inline) { + return; + } + + if (!this._running) { + // outside QueryStream control, need manual restart + return this._next(); + } +} + +/** + * Destroys the stream, closing the underlying cursor. No more events will be emitted. + * + * @param {Error} [err] + * @api public + */ + +QueryStream.prototype.destroy = function (err) { + if (this._destroyed) return; + this._destroyed = true; + this._running = false; + this.readable = false; + + if (this._cursor) { + this._cursor.close(); + } + + if (err) { + this.emit('error', err); + } + + this.emit('close'); +} + +/** + * Pipes this query stream into another stream. This method is inherited from NodeJS Streams. + * + * ####Example: + * + * query.stream().pipe(writeStream [, options]) + * + * @method pipe + * @memberOf QueryStream + * @see NodeJS http://nodejs.org/api/stream.html + * @api public + */ + +/*! + * Module exports + */ + +module.exports = exports = QueryStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js new file mode 100644 index 0000000..53effd4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js @@ -0,0 +1,910 @@ +/*! + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter + , VirtualType = require('./virtualtype') + , utils = require('./utils') + , NamedScope + , Query + , Types + +/** + * Schema constructor. + * + * ####Example: + * + * var child = new Schema({ name: String }); + * var schema = new Schema({ name: String, age: Number, children: [child] }); + * var Tree = mongoose.model('Tree', schema); + * + * // setting schema options + * new Schema({ name: String }, { _id: false, autoIndex: false }) + * + * ####Options: + * + * - [autoIndex](/docs/guide.html#autoIndex): bool - defaults to true + * - [bufferCommands](/docs/guide.html#bufferCommands): bool - defaults to true + * - [capped](/docs/guide.html#capped): bool - defaults to false + * - [collection](/docs/guide.html#collection): string - no default + * - [id](/docs/guide.html#id): bool - defaults to true + * - [_id](/docs/guide.html#_id): bool - defaults to true + * - `minimize`: bool - controls [document#toObject](#document_Document-toObject) behavior when called manually - defaults to true + * - [read](/docs/guide.html#read): string + * - [safe](/docs/guide.html#safe): bool - defaults to true. + * - [shardKey](/docs/guide.html#shardKey): bool - defaults to `null` + * - [strict](/docs/guide.html#strict): bool - defaults to true + * - [toJSON](/docs/guide.html#toJSON) - object - no default + * - [toObject](/docs/guide.html#toObject) - object - no default + * - [versionKey](/docs/guide.html#versionKey): bool - defaults to "__v" + * + * ####Note: + * + * _When nesting schemas, (`children` in the example above), always declare the child schema first before passing it into is parent._ + * + * @param {Object} definition + * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter + * @event `init`: Emitted after the schema is compiled into a `Model`. + * @api public + */ + +function Schema (obj, options) { + if (!(this instanceof Schema)) + return new Schema(obj, options); + + this.paths = {}; + this.subpaths = {}; + this.virtuals = {}; + this.nested = {}; + this.inherits = {}; + this.callQueue = []; + this._indexes = []; + this.methods = {}; + this.statics = {}; + this.tree = {}; + this._requiredpaths = undefined; + + this.options = this.defaultOptions(options); + + // build paths + if (obj) { + this.add(obj); + } + + // ensure the documents get an auto _id unless disabled + var auto_id = !this.paths['_id'] && (!this.options.noId && this.options._id); + if (auto_id) { + this.add({ _id: {type: Schema.ObjectId, auto: true} }); + } + + // ensure the documents receive an id getter unless disabled + var autoid = !this.paths['id'] && (!this.options.noVirtualId && this.options.id); + if (autoid) { + this.virtual('id').get(idGetter); + } +} + +/*! + * Returns this documents _id cast to a string. + */ + +function idGetter () { + if (this.$__._id) { + return this.$__._id; + } + + return this.$__._id = null == this._id + ? null + : String(this._id); +} + +/*! + * Inherit from EventEmitter. + */ + +Schema.prototype.__proto__ = EventEmitter.prototype; + +/** + * Schema as flat paths + * + * ####Example: + * { + * '_id' : SchemaType, + * , 'nested.key' : SchemaType, + * } + * + * @api private + * @property paths + */ + +Schema.prototype.paths; + +/** + * Schema as a tree + * + * ####Example: + * { + * '_id' : ObjectId + * , 'nested' : { + * 'key' : String + * } + * } + * + * @api private + * @property tree + */ + +Schema.prototype.tree; + +/** + * Returns default options for this schema, merged with `options`. + * + * @param {Object} options + * @return {Object} + * @api private + */ + +Schema.prototype.defaultOptions = function (options) { + if (options && false === options.safe) { + options.safe = { w: 0 }; + } + + options = utils.options({ + strict: true + , bufferCommands: true + , capped: false // { size, max, autoIndexId } + , versionKey: '__v' + , minimize: true + , autoIndex: true + , shardKey: null + , read: null + // the following are only applied at construction time + , noId: false // deprecated, use { _id: false } + , _id: true + , noVirtualId: false // deprecated, use { id: false } + , id: true + }, options); + + if (options.read) + options.read = utils.readPref(options.read); + + return options; +} + +/** + * Adds key path / schema type pairs to this schema. + * + * ####Example: + * + * var ToySchema = new Schema; + * ToySchema.add({ name: 'string', color: 'string', price: 'number' }); + * + * @param {Object} obj + * @param {String} prefix + * @api public + */ + +Schema.prototype.add = function add (obj, prefix) { + prefix = prefix || ''; + var keys = Object.keys(obj); + + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + + if (null == obj[key]) { + throw new TypeError('Invalid value for schema path `'+ prefix + key +'`'); + } + + if (utils.isObject(obj[key]) && (!obj[key].constructor || 'Object' == obj[key].constructor.name) && (!obj[key].type || obj[key].type.type)) { + if (Object.keys(obj[key]).length) { + // nested object { last: { name: String }} + this.nested[prefix + key] = true; + this.add(obj[key], prefix + key + '.'); + } else { + this.path(prefix + key, obj[key]); // mixed type + } + } else { + this.path(prefix + key, obj[key]); + } + } +}; + +/** + * Reserved document keys. + * + * Keys in this object are names that are rejected in schema declarations b/c they conflict with mongoose functionality. Using these key name will throw an error. + * + * on, emit, _events, db, init, isNew, errors, schema, options, modelName, collection, _pres, _posts, toObject + * + * _NOTE:_ Use of these terms as method names is permitted, but play at your own risk, as they may be existing mongoose document methods you are stomping on. + * + * var schema = new Schema(..); + * schema.methods.init = function () {} // potentially breaking + */ + +Schema.reserved = Object.create(null); +var reserved = Schema.reserved; +reserved.on = +reserved.db = +reserved.init = +reserved.isNew = +reserved.errors = +reserved.schema = +reserved.options = +reserved.modelName = +reserved.collection = +reserved.toObject = +reserved.emit = // EventEmitter +reserved._events = // EventEmitter +reserved._pres = reserved._posts = 1 // hooks.js + +/** + * Gets/sets schema paths. + * + * Sets a path (if arity 2) + * Gets a path (if arity 1) + * + * ####Example + * + * schema.path('name') // returns a SchemaType + * schema.path('name', Number) // changes the schemaType of `name` to Number + * + * @param {String} path + * @param {Object} constructor + * @api public + */ + +Schema.prototype.path = function (path, obj) { + if (obj == undefined) { + if (this.paths[path]) return this.paths[path]; + if (this.subpaths[path]) return this.subpaths[path]; + + // subpaths? + return /\.\d+\.?.*$/.test(path) + ? getPositionalPath(this, path) + : undefined; + } + + // some path names conflict with document methods + if (reserved[path]) { + throw new Error("`" + path + "` may not be used as a schema pathname"); + } + + // update the tree + var subpaths = path.split(/\./) + , last = subpaths.pop() + , branch = this.tree; + + subpaths.forEach(function(sub, i) { + if (!branch[sub]) branch[sub] = {}; + if ('object' != typeof branch[sub]) { + var msg = 'Cannot set nested path `' + path + '`. ' + + 'Parent path `' + + subpaths.slice(0, i).concat([sub]).join('.') + + '` already set to type ' + branch[sub].name + + '.'; + throw new Error(msg); + } + branch = branch[sub]; + }); + + branch[last] = utils.clone(obj); + + this.paths[path] = Schema.interpretAsType(path, obj); + return this; +}; + +/** + * Converts type arguments into Mongoose Types. + * + * @param {String} path + * @param {Object} obj constructor + * @api private + */ + +Schema.interpretAsType = function (path, obj) { + if (obj.constructor && obj.constructor.name != 'Object') + obj = { type: obj }; + + // Get the type making sure to allow keys named "type" + // and default to mixed if not specified. + // { type: { type: String, default: 'freshcut' } } + var type = obj.type && !obj.type.type + ? obj.type + : {}; + + if ('Object' == type.constructor.name || 'mixed' == type) { + return new Types.Mixed(path, obj); + } + + if (Array.isArray(type) || Array == type || 'array' == type) { + // if it was specified through { type } look for `cast` + var cast = (Array == type || 'array' == type) + ? obj.cast + : type[0]; + + if (cast instanceof Schema) { + return new Types.DocumentArray(path, cast, obj); + } + + if ('string' == typeof cast) { + cast = Types[cast.charAt(0).toUpperCase() + cast.substring(1)]; + } else if (cast && (!cast.type || cast.type.type) + && 'Object' == cast.constructor.name + && Object.keys(cast).length) { + return new Types.DocumentArray(path, new Schema(cast), obj); + } + + return new Types.Array(path, cast || Types.Mixed, obj); + } + + var name = 'string' == typeof type + ? type + : type.name; + + if (name) { + name = name.charAt(0).toUpperCase() + name.substring(1); + } + + if (undefined == Types[name]) { + throw new TypeError('Undefined type at `' + path + + '`\n Did you try nesting Schemas? ' + + 'You can only nest using refs or arrays.'); + } + + return new Types[name](path, obj); +}; + +/** + * Iterates the schemas paths similar to Array#forEach. + * + * The callback is passed the pathname and schemaType as arguments on each iteration. + * + * @param {Function} fn callback function + * @return {Schema} this + * @api public + */ + +Schema.prototype.eachPath = function (fn) { + var keys = Object.keys(this.paths) + , len = keys.length; + + for (var i = 0; i < len; ++i) { + fn(keys[i], this.paths[keys[i]]); + } + + return this; +}; + +/** + * Returns an Array of path strings that are required by this schema. + * + * @api public + * @return {Array} + */ + +Schema.prototype.requiredPaths = function requiredPaths () { + if (this._requiredpaths) return this._requiredpaths; + + var paths = Object.keys(this.paths) + , i = paths.length + , ret = []; + + while (i--) { + var path = paths[i]; + if (this.paths[path].isRequired) ret.push(path); + } + + return this._requiredpaths = ret; +} + +/** + * Returns the pathType of `path` for this schema. + * + * Given a path, returns whether it is a real, virtual, nested, or ad-hoc/undefined path. + * + * @param {String} path + * @return {String} + * @api public + */ + +Schema.prototype.pathType = function (path) { + if (path in this.paths) return 'real'; + if (path in this.virtuals) return 'virtual'; + if (path in this.nested) return 'nested'; + if (path in this.subpaths) return 'real'; + + if (/\.\d+\.|\.\d+$/.test(path) && getPositionalPath(this, path)) { + return 'real'; + } else { + return 'adhocOrUndefined' + } +}; + +/*! + * ignore + */ + +function getPositionalPath (self, path) { + var subpaths = path.split(/\.(\d+)\.|\.(\d+)$/).filter(Boolean); + if (subpaths.length < 2) { + return self.paths[subpaths[0]]; + } + + var val = self.path(subpaths[0]); + if (!val) return val; + + var last = subpaths.length - 1 + , subpath + , i = 1; + + for (; i < subpaths.length; ++i) { + subpath = subpaths[i]; + + if (i === last && val && !val.schema && !/\D/.test(subpath)) { + if (val instanceof Types.Array) { + // StringSchema, NumberSchema, etc + val = val.caster; + } else { + val = undefined; + } + break; + } + + // ignore if its just a position segment: path.0.subpath + if (!/\D/.test(subpath)) continue; + + if (!(val && val.schema)) { + val = undefined; + break; + } + + val = val.schema.path(subpath); + } + + return self.subpaths[path] = val; +} + +/** + * Adds a method call to the queue. + * + * @param {String} name name of the document method to call later + * @param {Array} args arguments to pass to the method + * @api private + */ + +Schema.prototype.queue = function(name, args){ + this.callQueue.push([name, args]); + return this; +}; + +/** + * Defines a pre hook for the document. + * + * ####Example + * + * var toySchema = new Schema(..); + * + * toySchema.pre('save', function (next) { + * if (!this.created) this.created = new Date; + * next(); + * }) + * + * toySchema.pre('validate', function (next) { + * if (this.name != 'Woody') this.name = 'Woody'; + * next(); + * }) + * + * @param {String} method + * @param {Function} callback + * @see hooks.js https://github.com/bnoguchi/hooks-js/tree/31ec571cef0332e21121ee7157e0cf9728572cc3 + * @api public + */ + +Schema.prototype.pre = function(){ + return this.queue('pre', arguments); +}; + +/** + * Defines a post for the document + * + * Post hooks fire `on` the event emitted from document instances of Models compiled from this schema. + * + * var schema = new Schema(..); + * schema.post('save', function (doc) { + * console.log('this fired after a document was saved'); + * }); + * + * var Model = mongoose.model('Model', schema); + * + * var m = new Model(..); + * m.save(function (err) { + * console.log('this fires after the `post` hook'); + * }); + * + * @param {String} method name of the method to hook + * @param {Function} fn callback + * @see hooks.js https://github.com/bnoguchi/hooks-js/tree/31ec571cef0332e21121ee7157e0cf9728572cc3 + * @api public + */ + +Schema.prototype.post = function(method, fn){ + return this.queue('on', arguments); +}; + +/** + * Registers a plugin for this schema. + * + * @param {Function} plugin callback + * @param {Object} opts + * @see plugins + * @api public + */ + +Schema.prototype.plugin = function (fn, opts) { + fn(this, opts); + return this; +}; + +/** + * Adds an instance method to documents constructed from Models compiled from this schema. + * + * ####Example + * + * var schema = kittySchema = new Schema(..); + * + * schema.method('meow', function () { + * console.log('meeeeeoooooooooooow'); + * }) + * + * var Kitty = mongoose.model('Kitty', schema); + * + * var fizz = new Kitty; + * fizz.meow(); // meeeeeooooooooooooow + * + * If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as methods. + * + * schema.method({ + * purr: function () {} + * , scratch: function () {} + * }); + * + * // later + * fizz.purr(); + * fizz.scratch(); + * + * @param {String|Object} method name + * @param {Function} [fn] + * @api public + */ + +Schema.prototype.method = function (name, fn) { + if ('string' != typeof name) + for (var i in name) + this.methods[i] = name[i]; + else + this.methods[name] = fn; + return this; +}; + +/** + * Adds static "class" methods to Models compiled from this schema. + * + * ####Example + * + * var schema = new Schema(..); + * schema.static('findByName', function (name, callback) { + * return this.find({ name: name }, callback); + * }); + * + * var Drink = mongoose.model('Drink', schema); + * Drink.findByName('sanpellegrino', function (err, drinks) { + * // + * }); + * + * If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as statics. + * + * @param {String} name + * @param {Function} fn + * @api public + */ + +Schema.prototype.static = function(name, fn) { + if ('string' != typeof name) + for (var i in name) + this.statics[i] = name[i]; + else + this.statics[name] = fn; + return this; +}; + +/** + * Defines an index (most likely compound) for this schema. + * + * ####Example + * + * schema.index({ first: 1, last: -1 }) + * + * @param {Object} fields + * @param {Object} [options] + * @api public + */ + +Schema.prototype.index = function (fields, options) { + options || (options = {}); + + if (options.expires) + utils.expires(options); + + this._indexes.push([fields, options]); + return this; +}; + +/** + * Sets/gets a schema option. + * + * @param {String} key option name + * @param {Object} [value] if not passed, the current option value is returned + * @api public + */ + +Schema.prototype.set = function (key, value, _tags) { + if (1 === arguments.length) { + return this.options[key]; + } + + switch (key) { + case 'read': + this.options[key] = utils.readPref(value, _tags) + break; + case 'safe': + this.options[key] = false === value + ? { w: 0 } + : value + break; + default: + this.options[key] = value; + } + + return this; +} + +/** + * Gets a schema option. + * + * @param {String} key option name + * @api public + */ + +Schema.prototype.get = function (key) { + return this.options[key]; +} + +/** + * The allowed index types + * + * @static indexTypes + * @receiver Schema + * @api public + */ + +var indexTypes = '2d 2dsphere hashed text'.split(' '); + +Object.defineProperty(Schema, 'indexTypes', { + get: function () { return indexTypes } + , set: function () { throw new Error('Cannot overwrite Schema.indexTypes') } +}) + +/** + * Compiles indexes from fields and schema-level indexes + * + * @api public + */ + +Schema.prototype.indexes = function () { + 'use strict'; + + var indexes = [] + , seenSchemas = [] + collectIndexes(this); + return indexes; + + function collectIndexes (schema, prefix) { + if (~seenSchemas.indexOf(schema)) return; + seenSchemas.push(schema); + + prefix = prefix || ''; + + var key, path, index, field, isObject, options, type; + var keys = Object.keys(schema.paths); + + for (var i = 0; i < keys.length; ++i) { + key = keys[i]; + path = schema.paths[key]; + + if (path instanceof Types.DocumentArray) { + collectIndexes(path.schema, key + '.'); + } else { + index = path._index; + + if (false !== index && null != index) { + field = {}; + isObject = utils.isObject(index); + options = isObject ? index : {}; + type = 'string' == typeof index ? index : + isObject ? index.type : + false; + + if (type && ~Schema.indexTypes.indexOf(type)) { + field[prefix + key] = type; + } else { + field[prefix + key] = 1; + } + + delete options.type; + if (!('background' in options)) { + options.background = true; + } + + indexes.push([field, options]); + } + } + } + + if (prefix) { + fixSubIndexPaths(schema, prefix); + } else { + schema._indexes.forEach(function (index) { + if (!('background' in index[1])) index[1].background = true; + }); + indexes = indexes.concat(schema._indexes); + } + } + + /*! + * Checks for indexes added to subdocs using Schema.index(). + * These indexes need their paths prefixed properly. + * + * schema._indexes = [ [indexObj, options], [indexObj, options] ..] + */ + + function fixSubIndexPaths (schema, prefix) { + var subindexes = schema._indexes + , len = subindexes.length + , indexObj + , newindex + , klen + , keys + , key + , i = 0 + , j + + for (i = 0; i < len; ++i) { + indexObj = subindexes[i][0]; + keys = Object.keys(indexObj); + klen = keys.length; + newindex = {}; + + // use forward iteration, order matters + for (j = 0; j < klen; ++j) { + key = keys[j]; + newindex[prefix + key] = indexObj[key]; + } + + indexes.push([newindex, subindexes[i][1]]); + } + } +} + +/** + * Creates a virtual type with the given name. + * + * @param {String} name + * @param {Object} [options] + * @return {VirtualType} + */ + +Schema.prototype.virtual = function (name, options) { + var virtuals = this.virtuals; + var parts = name.split('.'); + return virtuals[name] = parts.reduce(function (mem, part, i) { + mem[part] || (mem[part] = (i === parts.length-1) + ? new VirtualType(options, name) + : {}); + return mem[part]; + }, this.tree); +}; + +/** + * Returns the virtual type with the given `name`. + * + * @param {String} name + * @return {VirtualType} + */ + +Schema.prototype.virtualpath = function (name) { + return this.virtuals[name]; +}; + +/** + * These still haven't been fixed. Once they're working we'll make them public again. + * @api private + */ + +Schema.prototype.namedScope = function (name, fn) { + var namedScopes = this.namedScopes || (this.namedScopes = new NamedScope) + , newScope = Object.create(namedScopes) + , allScopes = namedScopes.scopesByName || (namedScopes.scopesByName = {}); + allScopes[name] = newScope; + newScope.name = name; + newScope.block = fn; + newScope.query = new Query(); + newScope.decorate(namedScopes, { + block0: function (block) { + return function () { + block.call(this.query); + return this; + }; + }, + blockN: function (block) { + return function () { + block.apply(this.query, arguments); + return this; + }; + }, + basic: function (query) { + return function () { + this.query.find(query); + return this; + }; + } + }); + return newScope; +}; + +/*! + * Module exports. + */ + +module.exports = exports = Schema; + +// require down here because of reference issues + +/** + * The various built-in Mongoose Schema Types. + * + * ####Example: + * + * var mongoose = require('mongoose'); + * var ObjectId = mongoose.Schema.Types.ObjectId; + * + * ####Types: + * + * - [String](#schema-string-js) + * - [Number](#schema-number-js) + * - [Boolean](#schema-boolean-js) | Bool + * - [Array](#schema-array-js) + * - [Buffer](#schema-buffer-js) + * - [Date](#schema-date-js) + * - [ObjectId](#schema-objectid-js) | Oid + * - [Mixed](#schema-mixed-js) + * + * Using this exposed access to the `Mixed` SchemaType, we can use them in our schema. + * + * var Mixed = mongoose.Schema.Types.Mixed; + * new mongoose.Schema({ _user: Mixed }) + * + * @api public + */ + +Schema.Types = require('./schema/index'); + +/*! + * ignore + */ + +Types = Schema.Types; +NamedScope = require('./namedscope') +Query = require('./query'); +var ObjectId = exports.ObjectId = Types.ObjectId; + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js new file mode 100644 index 0000000..81f3dd5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js @@ -0,0 +1,314 @@ +/*! + * Module dependencies. + */ + +var SchemaType = require('../schematype') + , CastError = SchemaType.CastError + , NumberSchema = require('./number') + , Types = { + Boolean: require('./boolean') + , Date: require('./date') + , Number: require('./number') + , String: require('./string') + , ObjectId: require('./objectid') + , Buffer: require('./buffer') + } + , MongooseArray = require('../types').Array + , EmbeddedDoc = require('../types').Embedded + , Mixed = require('./mixed') + , Query = require('../query') + , utils = require('../utils') + , isMongooseObject = utils.isMongooseObject + +/** + * Array SchemaType constructor + * + * @param {String} key + * @param {SchemaType} cast + * @param {Object} options + * @inherits SchemaType + * @api private + */ + +function SchemaArray (key, cast, options) { + if (cast) { + var castOptions = {}; + + if ('Object' === cast.constructor.name) { + if (cast.type) { + // support { type: Woot } + castOptions = utils.clone(cast); // do not alter user arguments + delete castOptions.type; + cast = cast.type; + } else { + cast = Mixed; + } + } + + // support { type: 'String' } + var name = 'string' == typeof cast + ? cast + : cast.name; + + var caster = name in Types + ? Types[name] + : cast; + + this.casterConstructor = caster; + this.caster = new caster(null, castOptions); + if (!(this.caster instanceof EmbeddedDoc)) { + this.caster.path = key; + } + } + + SchemaType.call(this, key, options); + + var self = this + , defaultArr + , fn; + + if (this.defaultValue) { + defaultArr = this.defaultValue; + fn = 'function' == typeof defaultArr; + } + + this.default(function(){ + var arr = fn ? defaultArr() : defaultArr || []; + return new MongooseArray(arr, self.path, this); + }); +}; + +/*! + * Inherits from SchemaType. + */ + +SchemaArray.prototype.__proto__ = SchemaType.prototype; + +/** + * Check required + * + * @param {Array} value + * @api private + */ + +SchemaArray.prototype.checkRequired = function (value) { + return !!(value && value.length); +}; + +/** + * Overrides the getters application for the population special-case + * + * @param {Object} value + * @param {Object} scope + * @api private + */ + +SchemaArray.prototype.applyGetters = function (value, scope) { + if (this.caster.options && this.caster.options.ref) { + // means the object id was populated + return value; + } + + return SchemaType.prototype.applyGetters.call(this, value, scope); +}; + +/** + * Casts contents + * + * @param {Object} value + * @param {Document} doc document that triggers the casting + * @param {Boolean} init whether this is an initialization cast + * @api private + */ + +SchemaArray.prototype.cast = function (value, doc, init) { + if (Array.isArray(value)) { + if (!(value instanceof MongooseArray)) { + value = new MongooseArray(value, this.path, doc); + } + + if (this.caster) { + try { + for (var i = 0, l = value.length; i < l; i++) { + value[i] = this.caster.cast(value[i], doc, init); + } + } catch (e) { + // rethrow + throw new CastError(e.type, value, this.path); + } + } + + return value; + } else { + return this.cast([value], doc, init); + } +}; + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} [value] + * @api private + */ + +SchemaArray.prototype.castForQuery = function ($conditional, value) { + var handler + , val; + if (arguments.length === 2) { + handler = this.$conditionalHandlers[$conditional]; + if (!handler) + throw new Error("Can't use " + $conditional + " with Array."); + val = handler.call(this, value); + } else { + val = $conditional; + var proto = this.casterConstructor.prototype; + var method = proto.castForQuery || proto.cast; + + var caster = this.caster; + if (Array.isArray(val)) { + val = val.map(function (v) { + if (method) v = method.call(caster, v); + + return isMongooseObject(v) + ? v.toObject() + : v; + }); + } else if (method) { + val = method.call(caster, val); + } + } + return val && isMongooseObject(val) + ? val.toObject() + : val; +}; + +/*! + * @ignore + */ + +function castToNumber (val) { + return Types.Number.prototype.cast.call(this, val); +} + +function castArray (arr, self) { + self || (self = this); + + arr.forEach(function (v, i) { + if (Array.isArray(v)) { + castArray(v, self); + } else { + arr[i] = castToNumber.call(self, v); + } + }); +} + +SchemaArray.prototype.$conditionalHandlers = { + '$all': function handle$all (val) { + if (!Array.isArray(val)) { + val = [val]; + } + + val = val.map(function (v) { + if (v && 'Object' === v.constructor.name) { + var o = {}; + o[this.path] = v; + var query = new Query(o); + query.cast(this.casterConstructor); + return query._conditions[this.path]; + } + return v; + }, this); + + return this.castForQuery(val); + } + , '$elemMatch': function (val) { + if (val.$in) { + val.$in = this.castForQuery('$in', val.$in); + return val; + } + + var query = new Query(val); + query.cast(this.casterConstructor); + return query._conditions; + } + , '$size': castToNumber + , '$ne': SchemaArray.prototype.castForQuery + , '$in': SchemaArray.prototype.castForQuery + , '$nin': SchemaArray.prototype.castForQuery + , '$regex': SchemaArray.prototype.castForQuery + , '$options': String + , '$near': SchemaArray.prototype.castForQuery + , '$nearSphere': SchemaArray.prototype.castForQuery + , '$gt': SchemaArray.prototype.castForQuery + , '$gte': SchemaArray.prototype.castForQuery + , '$lt': SchemaArray.prototype.castForQuery + , '$lte': SchemaArray.prototype.castForQuery + , '$within': function (val) { + var self = this; + + if (val.$maxDistance) { + val.$maxDistance = castToNumber.call(this, val.$maxDistance); + } + + if (val.$box || val.$polygon) { + var type = val.$box ? '$box' : '$polygon'; + val[type].forEach(function (arr) { + if (!Array.isArray(arr)) { + var msg = 'Invalid $within $box argument. ' + + 'Expected an array, received ' + arr; + throw new TypeError(msg); + } + arr.forEach(function (v, i) { + arr[i] = castToNumber.call(this, v); + }); + }) + } else if (val.$center || val.$centerSphere) { + var type = val.$center ? '$center' : '$centerSphere'; + val[type].forEach(function (item, i) { + if (Array.isArray(item)) { + item.forEach(function (v, j) { + item[j] = castToNumber.call(this, v); + }); + } else { + val[type][i] = castToNumber.call(this, item); + } + }) + } else if (val.$geometry) { + switch (val.$geometry.type) { + case 'Polygon': + case 'LineString': + case 'Point': + val.$geometry.coordinates.forEach(castArray); + break; + default: + // ignore unknowns + break; + } + } + + return val; + } + , '$geoIntersects': function (val) { + var geo = val.$geometry; + if (!geo) return; + + switch (val.$geometry.type) { + case 'Polygon': + case 'LineString': + case 'Point': + val.$geometry.coordinates.forEach(castArray); + break; + default: + // ignore unknowns + break; + } + } + , '$maxDistance': castToNumber +}; + +/*! + * Module exports. + */ + +module.exports = SchemaArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js new file mode 100644 index 0000000..cc16b7a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js @@ -0,0 +1,92 @@ +/*! + * Module dependencies. + */ + +var SchemaType = require('../schematype'); + +/** + * Boolean SchemaType constructor. + * + * @param {String} path + * @param {Object} options + * @inherits SchemaType + * @api private + */ + +function SchemaBoolean (path, options) { + SchemaType.call(this, path, options); +}; + +/*! + * Inherits from SchemaType. + */ +SchemaBoolean.prototype.__proto__ = SchemaType.prototype; + +/** + * Required validator + * + * @api private + */ + +SchemaBoolean.prototype.checkRequired = function (value) { + return value === true || value === false; +}; + +/** + * Casts to boolean + * + * @param {Object} value + * @api private + */ + +SchemaBoolean.prototype.cast = function (value) { + if (null === value) return value; + if ('0' === value) return false; + if ('true' === value) return true; + if ('false' === value) return false; + return !! value; +} + +/*! + * ignore + */ + +function handleArray (val) { + var self = this; + return val.map(function (m) { + return self.cast(m); + }); +} + +SchemaBoolean.$conditionalHandlers = { + '$in': handleArray +} + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} val + * @api private + */ + +SchemaBoolean.prototype.castForQuery = function ($conditional, val) { + var handler; + if (2 === arguments.length) { + handler = SchemaBoolean.$conditionalHandlers[$conditional]; + + if (handler) { + return handler.call(this, val); + } + + return this.cast(val); + } + + return this.cast($conditional); +}; + +/*! + * Module exports. + */ + +module.exports = SchemaBoolean; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js new file mode 100644 index 0000000..55c0628 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js @@ -0,0 +1,163 @@ +/*! + * Module dependencies. + */ + +var SchemaType = require('../schematype') + , CastError = SchemaType.CastError + , MongooseBuffer = require('../types').Buffer + , Binary = MongooseBuffer.Binary + , Query = require('../query') + , utils = require('../utils') + , Document + +/** + * Buffer SchemaType constructor + * + * @param {String} key + * @param {SchemaType} cast + * @inherits SchemaType + * @api private + */ + +function SchemaBuffer (key, options) { + SchemaType.call(this, key, options, 'Buffer'); +}; + +/*! + * Inherits from SchemaType. + */ + +SchemaBuffer.prototype.__proto__ = SchemaType.prototype; + +/** + * Check required + * + * @api private + */ + +SchemaBuffer.prototype.checkRequired = function (value, doc) { + if (SchemaType._isRef(this, value, doc, true)) { + return null != value; + } else { + return !!(value && value.length); + } +}; + +/** + * Casts contents + * + * @param {Object} value + * @param {Document} doc document that triggers the casting + * @param {Boolean} init + * @api private + */ + +SchemaBuffer.prototype.cast = function (value, doc, init) { + if (SchemaType._isRef(this, value, doc, init)) { + // wait! we may need to cast this to a document + + if (null == value) { + return value; + } + + // lazy load + Document || (Document = require('./../document')); + + if (value instanceof Document) { + value.$__.wasPopulated = true; + return value; + } + + // setting a populated path + if (Buffer.isBuffer(value)) { + return value; + } else if (!utils.isObject(value)) { + throw new CastError('buffer', value, this.path); + } + + // Handle the case where user directly sets a populated + // path to a plain object; cast to the Model used in + // the population query. + var path = doc.$__fullPath(this.path); + var owner = doc.ownerDocument ? doc.ownerDocument() : doc; + var pop = owner.populated(path, true); + var ret = new pop.options.model(value); + ret.$__.wasPopulated = true; + return ret; + } + + // documents + if (value && value._id) { + value = value._id; + } + + if (Buffer.isBuffer(value)) { + if (!(value instanceof MongooseBuffer)) { + value = new MongooseBuffer(value, [this.path, doc]); + } + + return value; + } else if (value instanceof Binary) { + return new MongooseBuffer(value.value(true), [this.path, doc]); + } + + if (null === value) return value; + + var type = typeof value; + if ('string' == type || 'number' == type || Array.isArray(value)) { + return new MongooseBuffer(value, [this.path, doc]); + } + + throw new CastError('buffer', value, this.path); +}; + +/*! + * ignore + */ +function handleSingle (val) { + return this.castForQuery(val); +} + +function handleArray (val) { + var self = this; + return val.map( function (m) { + return self.castForQuery(m); + }); +} + +SchemaBuffer.prototype.$conditionalHandlers = { + '$ne' : handleSingle + , '$in' : handleArray + , '$nin': handleArray + , '$gt' : handleSingle + , '$lt' : handleSingle + , '$gte': handleSingle + , '$lte': handleSingle +}; + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} [value] + * @api private + */ + +SchemaBuffer.prototype.castForQuery = function ($conditional, val) { + var handler; + if (arguments.length === 2) { + handler = this.$conditionalHandlers[$conditional]; + if (!handler) + throw new Error("Can't use " + $conditional + " with Buffer."); + return handler.call(this, val); + } else { + val = $conditional; + return this.cast(val).toObject(); + } +}; + +/*! + * Module exports. + */ + +module.exports = SchemaBuffer; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js new file mode 100644 index 0000000..86e4062 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js @@ -0,0 +1,167 @@ +/*! + * Module requirements. + */ + +var SchemaType = require('../schematype'); +var CastError = SchemaType.CastError; +var utils = require('../utils'); + +/** + * Date SchemaType constructor. + * + * @param {String} key + * @param {Object} options + * @inherits SchemaType + * @api private + */ + +function SchemaDate (key, options) { + SchemaType.call(this, key, options); +}; + +/*! + * Inherits from SchemaType. + */ + +SchemaDate.prototype.__proto__ = SchemaType.prototype; + +/** + * Declares a TTL index (rounded to the nearest second) for _Date_ types only. + * + * This sets the `expiresAfterSeconds` index option available in MongoDB >= 2.1.2. + * This index type is only compatible with Date types. + * + * ####Example: + * + * // expire in 24 hours + * new Schema({ createdAt: { type: Date, expires: 60*60*24 }}); + * + * `expires` utilizes the `ms` module from [guille](https://github.com/guille/) allowing us to use a friendlier syntax: + * + * ####Example: + * + * // expire in 24 hours + * new Schema({ createdAt: { type: Date, expires: '24h' }}); + * + * // expire in 1.5 hours + * new Schema({ createdAt: { type: Date, expires: '1.5h' }}); + * + * // expire in 7 days + * var schema = new Schema({ createdAt: Date }); + * schema.path('createdAt').expires('7d'); + * + * @param {Number|String} when + * @added 3.0.0 + * @return {SchemaType} this + * @api public + */ + +SchemaDate.prototype.expires = function (when) { + if (!this._index || 'Object' !== this._index.constructor.name) { + this._index = {}; + } + + this._index.expires = when; + utils.expires(this._index); + return this; +}; + +/** + * Required validator for date + * + * @api private + */ + +SchemaDate.prototype.checkRequired = function (value) { + return value instanceof Date; +}; + +/** + * Casts to date + * + * @param {Object} value to cast + * @api private + */ + +SchemaDate.prototype.cast = function (value) { + if (value === null || value === '') + return null; + + if (value instanceof Date) + return value; + + var date; + + // support for timestamps + if (value instanceof Number || 'number' == typeof value + || String(value) == Number(value)) + date = new Date(Number(value)); + + // support for date strings + else if (value.toString) + date = new Date(value.toString()); + + if (date.toString() != 'Invalid Date') + return date; + + throw new CastError('date', value, this.path); +}; + +/*! + * Date Query casting. + * + * @api private + */ + +function handleSingle (val) { + return this.cast(val); +} + +function handleArray (val) { + var self = this; + return val.map( function (m) { + return self.cast(m); + }); +} + +SchemaDate.prototype.$conditionalHandlers = { + '$lt': handleSingle + , '$lte': handleSingle + , '$gt': handleSingle + , '$gte': handleSingle + , '$ne': handleSingle + , '$in': handleArray + , '$nin': handleArray + , '$all': handleArray +}; + + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} [value] + * @api private + */ + +SchemaDate.prototype.castForQuery = function ($conditional, val) { + var handler; + + if (2 !== arguments.length) { + return this.cast($conditional); + } + + handler = this.$conditionalHandlers[$conditional]; + + if (!handler) { + throw new Error("Can't use " + $conditional + " with Date."); + } + + return handler.call(this, val); +}; + +/*! + * Module exports. + */ + +module.exports = SchemaDate; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js new file mode 100644 index 0000000..3b02887 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js @@ -0,0 +1,189 @@ + +/*! + * Module dependencies. + */ + +var SchemaType = require('../schematype') + , ArrayType = require('./array') + , MongooseDocumentArray = require('../types/documentarray') + , Subdocument = require('../types/embedded') + , Document = require('../document'); + +/** + * SubdocsArray SchemaType constructor + * + * @param {String} key + * @param {Schema} schema + * @param {Object} options + * @inherits SchemaArray + * @api private + */ + +function DocumentArray (key, schema, options) { + + // compile an embedded document for this schema + function EmbeddedDocument () { + Subdocument.apply(this, arguments); + } + + EmbeddedDocument.prototype.__proto__ = Subdocument.prototype; + EmbeddedDocument.prototype.$__setSchema(schema); + EmbeddedDocument.schema = schema; + + // apply methods + for (var i in schema.methods) { + EmbeddedDocument.prototype[i] = schema.methods[i]; + } + + // apply statics + for (var i in schema.statics) + EmbeddedDocument[i] = schema.statics[i]; + + EmbeddedDocument.options = options; + this.schema = schema; + + ArrayType.call(this, key, EmbeddedDocument, options); + + this.schema = schema; + var path = this.path; + var fn = this.defaultValue; + + this.default(function(){ + var arr = fn.call(this); + if (!Array.isArray(arr)) arr = [arr]; + return new MongooseDocumentArray(arr, path, this); + }); +}; + +/*! + * Inherits from ArrayType. + */ + +DocumentArray.prototype.__proto__ = ArrayType.prototype; + +/** + * Performs local validations first, then validations on each embedded doc + * + * @api private + */ + +DocumentArray.prototype.doValidate = function (array, fn, scope) { + var self = this; + + SchemaType.prototype.doValidate.call(this, array, function (err) { + if (err) return fn(err); + + var count = array && array.length + , error; + + if (!count) return fn(); + + // handle sparse arrays, do not use array.forEach which does not + // iterate over sparse elements yet reports array.length including + // them :( + + for (var i = 0, len = count; i < len; ++i) { + // sidestep sparse entries + var doc = array[i]; + if (!doc) { + --count || fn(); + continue; + } + + ;(function (i) { + doc.validate(function (err) { + if (err && !error) { + // rewrite the key + err.key = self.key + '.' + i + '.' + err.key; + return fn(error = err); + } + --count || fn(); + }); + })(i); + } + }, scope); +}; + +/** + * Casts contents + * + * @param {Object} value + * @param {Document} document that triggers the casting + * @api private + */ + +DocumentArray.prototype.cast = function (value, doc, init, prev) { + var selected + , subdoc + , i + + if (!Array.isArray(value)) { + return this.cast([value], doc, init, prev); + } + + if (!(value instanceof MongooseDocumentArray)) { + value = new MongooseDocumentArray(value, this.path, doc); + } + + i = value.length; + + while (i--) { + if (!(value[i] instanceof Subdocument) && value[i]) { + if (init) { + selected || (selected = scopePaths(this, doc.$__.selected, init)); + subdoc = new this.casterConstructor(null, value, true, selected); + value[i] = subdoc.init(value[i]); + } else { + if (prev && (subdoc = prev.id(value[i]._id))) { + // handle resetting doc with existing id but differing data + // doc.array = [{ doc: 'val' }] + subdoc.set(value[i]); + } else { + subdoc = new this.casterConstructor(value[i], value); + } + + // if set() is hooked it will have no return value + // see gh-746 + value[i] = subdoc; + } + } + } + + return value; +} + +/*! + * Scopes paths selected in a query to this array. + * Necessary for proper default application of subdocument values. + * + * @param {DocumentArray} array - the array to scope `fields` paths + * @param {Object|undefined} fields - the root fields selected in the query + * @param {Boolean|undefined} init - if we are being created part of a query result + */ + +function scopePaths (array, fields, init) { + if (!(init && fields)) return undefined; + + var path = array.path + '.' + , keys = Object.keys(fields) + , i = keys.length + , selected = {} + , hasKeys + , key + + while (i--) { + key = keys[i]; + if (0 === key.indexOf(path)) { + hasKeys || (hasKeys = true); + selected[key.substring(path.length)] = fields[key]; + } + } + + return hasKeys && selected || undefined; +} + +/*! + * Module exports. + */ + +module.exports = DocumentArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js new file mode 100644 index 0000000..d1347ed --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js @@ -0,0 +1,28 @@ + +/*! + * Module exports. + */ + +exports.String = require('./string'); + +exports.Number = require('./number'); + +exports.Boolean = require('./boolean'); + +exports.DocumentArray = require('./documentarray'); + +exports.Array = require('./array'); + +exports.Buffer = require('./buffer'); + +exports.Date = require('./date'); + +exports.ObjectId = require('./objectid'); + +exports.Mixed = require('./mixed'); + +// alias + +exports.Oid = exports.ObjectId; +exports.Object = exports.Mixed; +exports.Bool = exports.Boolean; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js new file mode 100644 index 0000000..6e2e4d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js @@ -0,0 +1,83 @@ + +/*! + * Module dependencies. + */ + +var SchemaType = require('../schematype'); +var utils = require('../utils'); + +/** + * Mixed SchemaType constructor. + * + * @param {String} path + * @param {Object} options + * @inherits SchemaType + * @api private + */ + +function Mixed (path, options) { + if (options && options.default) { + var def = options.default; + if (Array.isArray(def) && 0 === def.length) { + // make sure empty array defaults are handled + options.default = Array; + } else if (!options.shared && + utils.isObject(def) && + 0 === Object.keys(def).length) { + // prevent odd "shared" objects between documents + options.default = function () { + return {} + } + } + } + + SchemaType.call(this, path, options); +}; + +/*! + * Inherits from SchemaType. + */ + +Mixed.prototype.__proto__ = SchemaType.prototype; + +/** + * Required validator + * + * @api private + */ + +Mixed.prototype.checkRequired = function (val) { + return true; +}; + +/** + * Casts `val` for Mixed. + * + * _this is a no-op_ + * + * @param {Object} value to cast + * @api private + */ + +Mixed.prototype.cast = function (val) { + return val; +}; + +/** + * Casts contents for queries. + * + * @param {String} $cond + * @param {any} [val] + * @api private + */ + +Mixed.prototype.castForQuery = function ($cond, val) { + if (arguments.length === 2) return val; + return $cond; +}; + +/*! + * Module exports. + */ + +module.exports = Mixed; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js new file mode 100644 index 0000000..1cdc56e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js @@ -0,0 +1,225 @@ +/*! + * Module requirements. + */ + +var SchemaType = require('../schematype') + , CastError = SchemaType.CastError + , utils = require('../utils') + , Document + +/** + * Number SchemaType constructor. + * + * @param {String} key + * @param {Object} options + * @inherits SchemaType + * @api private + */ + +function SchemaNumber (key, options) { + SchemaType.call(this, key, options, 'Number'); +}; + +/*! + * Inherits from SchemaType. + */ + +SchemaNumber.prototype.__proto__ = SchemaType.prototype; + +/** + * Required validator for number + * + * @api private + */ + +SchemaNumber.prototype.checkRequired = function checkRequired (value, doc) { + if (SchemaType._isRef(this, value, doc, true)) { + return null != value; + } else { + return typeof value == 'number' || value instanceof Number; + } +}; + +/** + * Sets a minimum number validator. + * + * ####Example: + * + * var s = new Schema({ n: { type: Number, min: 10 }) + * var M = db.model('M', s) + * var m = new M({ n: 9 }) + * m.save(function (err) { + * console.error(err) // validator error + * m.n = 10; + * m.save() // success + * }) + * + * @param {Number} value minimum number + * @api public + */ + +SchemaNumber.prototype.min = function (value) { + if (this.minValidator) { + this.validators = this.validators.filter(function (v) { + return 'min' != v[1]; + }); + } + + if (value != null) { + this.validators.push([this.minValidator = function (v) { + return v === null || v >= value; + }, 'min']); + } + + return this; +}; + +/** + * Sets a maximum number validator. + * + * ####Example: + * + * var s = new Schema({ n: { type: Number, max: 10 }) + * var M = db.model('M', s) + * var m = new M({ n: 11 }) + * m.save(function (err) { + * console.error(err) // validator error + * m.n = 10; + * m.save() // success + * }) + * + * @param {Number} maximum number + * @api public + */ + +SchemaNumber.prototype.max = function (value) { + if (this.maxValidator) { + this.validators = this.validators.filter(function(v){ + return 'max' != v[1]; + }); + } + + if (value != null) { + this.validators.push([this.maxValidator = function(v){ + return v === null || v <= value; + }, 'max']); + } + + return this; +}; + +/** + * Casts to number + * + * @param {Object} value value to cast + * @param {Document} doc document that triggers the casting + * @param {Boolean} init + * @api private + */ + +SchemaNumber.prototype.cast = function (value, doc, init) { + if (SchemaType._isRef(this, value, doc, init)) { + // wait! we may need to cast this to a document + + if (null == value) { + return value; + } + + // lazy load + Document || (Document = require('./../document')); + + if (value instanceof Document) { + value.$__.wasPopulated = true; + return value; + } + + // setting a populated path + if ('number' == typeof value) { + return value; + } else if (Buffer.isBuffer(value) || !utils.isObject(value)) { + throw new CastError('number', value, this.path); + } + + // Handle the case where user directly sets a populated + // path to a plain object; cast to the Model used in + // the population query. + var path = doc.$__fullPath(this.path); + var owner = doc.ownerDocument ? doc.ownerDocument() : doc; + var pop = owner.populated(path, true); + var ret = new pop.options.model(value); + ret.$__.wasPopulated = true; + return ret; + } + + var val = value && value._id + ? value._id // documents + : value; + + if (!isNaN(val)){ + if (null === val) return val; + if ('' === val) return null; + if ('string' == typeof val) val = Number(val); + if (val instanceof Number) return val + if ('number' == typeof val) return val; + if (val.toString && !Array.isArray(val) && + val.toString() == Number(val)) { + return new Number(val) + } + } + + throw new CastError('number', value, this.path); +}; + +/*! + * ignore + */ + +function handleSingle (val) { + return this.cast(val) +} + +function handleArray (val) { + var self = this; + return val.map(function (m) { + return self.cast(m) + }); +} + +SchemaNumber.prototype.$conditionalHandlers = { + '$lt' : handleSingle + , '$lte': handleSingle + , '$gt' : handleSingle + , '$gte': handleSingle + , '$ne' : handleSingle + , '$in' : handleArray + , '$nin': handleArray + , '$mod': handleArray + , '$all': handleArray +}; + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} [value] + * @api private + */ + +SchemaNumber.prototype.castForQuery = function ($conditional, val) { + var handler; + if (arguments.length === 2) { + handler = this.$conditionalHandlers[$conditional]; + if (!handler) + throw new Error("Can't use " + $conditional + " with Number."); + return handler.call(this, val); + } else { + val = this.cast($conditional); + return val == null ? val : val + } +}; + +/*! + * Module exports. + */ + +module.exports = SchemaNumber; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js new file mode 100644 index 0000000..65ef132 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js @@ -0,0 +1,183 @@ +/*! + * Module dependencies. + */ + +var SchemaType = require('../schematype') + , CastError = SchemaType.CastError + , driver = global.MONGOOSE_DRIVER_PATH || './../drivers/node-mongodb-native' + , oid = require('../types/objectid') + , utils = require('../utils') + , Document + +/** + * ObjectId SchemaType constructor. + * + * @param {String} key + * @param {Object} options + * @inherits SchemaType + * @api private + */ + +function ObjectId (key, options) { + SchemaType.call(this, key, options, 'ObjectID'); +}; + +/*! + * Inherits from SchemaType. + */ + +ObjectId.prototype.__proto__ = SchemaType.prototype; + +/** + * Check required + * + * @api private + */ + +ObjectId.prototype.checkRequired = function checkRequired (value, doc) { + if (SchemaType._isRef(this, value, doc, true)) { + return null != value; + } else { + return value instanceof oid; + } +}; + +/** + * Casts to ObjectId + * + * @param {Object} value + * @param {Object} doc + * @param {Boolean} init whether this is an initialization cast + * @api private + */ + +ObjectId.prototype.cast = function (value, doc, init) { + if (SchemaType._isRef(this, value, doc, init)) { + // wait! we may need to cast this to a document + + if (null == value) { + return value; + } + + // lazy load + Document || (Document = require('./../document')); + + if (value instanceof Document) { + value.$__.wasPopulated = true; + return value; + } + + // setting a populated path + if (value instanceof oid) { + return value; + } else if (Buffer.isBuffer(value) || !utils.isObject(value)) { + throw new CastError('ObjectId', value, this.path); + } + + // Handle the case where user directly sets a populated + // path to a plain object; cast to the Model used in + // the population query. + var path = doc.$__fullPath(this.path); + var owner = doc.ownerDocument ? doc.ownerDocument() : doc; + var pop = owner.populated(path, true); + var ret = new pop.options.model(value); + ret.$__.wasPopulated = true; + return ret; + } + + if (value === null) return value; + + if (value instanceof oid) + return value; + + if (value._id && value._id instanceof oid) + return value._id; + + if (value.toString) { + try { + return oid.fromString(value.toString()); + } catch (err) { + throw new CastError('ObjectId', value, this.path); + } + } + + throw new CastError('ObjectId', value, this.path); +}; + +/*! + * ignore + */ + +function handleSingle (val) { + return this.cast(val); +} + +function handleArray (val) { + var self = this; + return val.map(function (m) { + return self.cast(m); + }); +} + +ObjectId.prototype.$conditionalHandlers = { + '$ne': handleSingle + , '$in': handleArray + , '$nin': handleArray + , '$gt': handleSingle + , '$lt': handleSingle + , '$gte': handleSingle + , '$lte': handleSingle + , '$all': handleArray +}; + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} [val] + * @api private + */ + +ObjectId.prototype.castForQuery = function ($conditional, val) { + var handler; + if (arguments.length === 2) { + handler = this.$conditionalHandlers[$conditional]; + if (!handler) + throw new Error("Can't use " + $conditional + " with ObjectId."); + return handler.call(this, val); + } else { + return this.cast($conditional); + } +}; + +/** + * Adds an auto-generated ObjectId default if turnOn is true. + * @param {Boolean} turnOn auto generated ObjectId defaults + * @api public + */ + +ObjectId.prototype.auto = function (turnOn) { + if (turnOn) { + this.default(defaultId); + this.set(resetId) + } +}; + +/*! + * ignore + */ + +function defaultId () { + return new oid(); +}; + +function resetId (v) { + this.$__._id = null; + return v; +} + +/*! + * Module exports. + */ + +module.exports = ObjectId; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js new file mode 100644 index 0000000..6981ff3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js @@ -0,0 +1,302 @@ + +/*! + * Module dependencies. + */ + +var SchemaType = require('../schematype') + , CastError = SchemaType.CastError + , utils = require('../utils') + , Document + +/** + * String SchemaType constructor. + * + * @param {String} key + * @param {Object} options + * @inherits SchemaType + * @api private + */ + +function SchemaString (key, options) { + this.enumValues = []; + this.regExp = null; + SchemaType.call(this, key, options, 'String'); +}; + +/*! + * Inherits from SchemaType. + */ + +SchemaString.prototype.__proto__ = SchemaType.prototype; + +/** + * Adds enumeration values and a coinciding validator. + * + * ####Example: + * + * var states = 'opening open closing closed'.split(' ') + * var s = new Schema({ state: { type: String, enum: states }) + * var M = db.model('M', s) + * var m = new M({ state: 'invalid' }) + * m.save(function (err) { + * console.error(err) // validator error + * m.state = 'open' + * m.save() // success + * }) + * + * @param {String} [args...] enumeration values + * @api public + */ + +SchemaString.prototype.enum = function () { + var len = arguments.length; + if (!len || undefined === arguments[0] || false === arguments[0]) { + if (this.enumValidator){ + this.enumValidator = false; + this.validators = this.validators.filter(function(v){ + return v[1] != 'enum'; + }); + } + return; + } + + for (var i = 0; i < len; i++) { + if (undefined !== arguments[i]) { + this.enumValues.push(this.cast(arguments[i])); + } + } + + if (!this.enumValidator) { + var values = this.enumValues; + this.enumValidator = function(v){ + return undefined === v || ~values.indexOf(v); + }; + this.validators.push([this.enumValidator, 'enum']); + } +}; + +/** + * Adds a lowercase setter. + * + * ####Example: + * + * var s = new Schema({ email: { type: String, lowercase: true }}) + * var M = db.model('M', s); + * var m = new M({ email: 'SomeEmail@example.COM' }); + * console.log(m.email) // someemail@example.com + * + * @api public + */ + +SchemaString.prototype.lowercase = function () { + return this.set(function (v, self) { + if ('string' != typeof v) v = self.cast(v) + if (v) return v.toLowerCase(); + return v; + }); +}; + +/** + * Adds an uppercase setter. + * + * ####Example: + * + * var s = new Schema({ caps: { type: String, uppercase: true }}) + * var M = db.model('M', s); + * var m = new M({ caps: 'an example' }); + * console.log(m.caps) // AN EXAMPLE + * + * @api public + */ + +SchemaString.prototype.uppercase = function () { + return this.set(function (v, self) { + if ('string' != typeof v) v = self.cast(v) + if (v) return v.toUpperCase(); + return v; + }); +}; + +/** + * Adds a trim setter. + * + * The string value will be trimmed when set. + * + * ####Example: + * + * var s = new Schema({ name: { type: String, trim: true }}) + * var M = db.model('M', s) + * var string = ' some name ' + * console.log(string.length) // 11 + * var m = new M({ name: string }) + * console.log(m.name.length) // 9 + * + * @api public + */ + +SchemaString.prototype.trim = function () { + return this.set(function (v, self) { + if ('string' != typeof v) v = self.cast(v) + if (v) return v.trim(); + return v; + }); +}; + +/** + * Sets a regexp validator. + * + * Any value that does not pass `regExp`.test(val) will fail validation. + * + * ####Example: + * + * var s = new Schema({ name: { type: String, match: /^a/ }}) + * var M = db.model('M', s) + * var m = new M({ name: 'invalid' }) + * m.validate(function (err) { + * console.error(err) // validation error + * m.name = 'apples' + * m.validate(function (err) { + * assert.ok(err) // success + * }) + * }) + * + * @param {RegExp} regExp regular expression to test against + * @api public + */ + +SchemaString.prototype.match = function match (regExp) { + this.validators.push([function(v){ + return null != v && '' !== v + ? regExp.test(v) + : true + }, 'regexp']); +}; + +/** + * Check required + * + * @param {String|null|undefined} value + * @api private + */ + +SchemaString.prototype.checkRequired = function checkRequired (value, doc) { + if (SchemaType._isRef(this, value, doc, true)) { + return null != value; + } else { + return (value instanceof String || typeof value == 'string') && value.length; + } +}; + +/** + * Casts to String + * + * @api private + */ + +SchemaString.prototype.cast = function (value, doc, init) { + if (SchemaType._isRef(this, value, doc, init)) { + // wait! we may need to cast this to a document + + if (null == value) { + return value; + } + + // lazy load + Document || (Document = require('./../document')); + + if (value instanceof Document) { + value.$__.wasPopulated = true; + return value; + } + + // setting a populated path + if ('string' == typeof value) { + return value; + } else if (Buffer.isBuffer(value) || !utils.isObject(value)) { + throw new CastError('string', value, this.path); + } + + // Handle the case where user directly sets a populated + // path to a plain object; cast to the Model used in + // the population query. + var path = doc.$__fullPath(this.path); + var owner = doc.ownerDocument ? doc.ownerDocument() : doc; + var pop = owner.populated(path, true); + var ret = new pop.options.model(value); + ret.$__.wasPopulated = true; + return ret; + } + + if (value === null) { + return value; + } + + if ('undefined' !== typeof value) { + // handle documents being passed + if (value._id && 'string' == typeof value._id) { + return value._id; + } + if (value.toString) { + return value.toString(); + } + } + + + throw new CastError('string', value, this.path); +}; + +/*! + * ignore + */ + +function handleSingle (val) { + return this.castForQuery(val); +} + +function handleArray (val) { + var self = this; + return val.map(function (m) { + return self.castForQuery(m); + }); +} + +SchemaString.prototype.$conditionalHandlers = { + '$ne' : handleSingle + , '$in' : handleArray + , '$nin': handleArray + , '$gt' : handleSingle + , '$lt' : handleSingle + , '$gte': handleSingle + , '$lte': handleSingle + , '$all': handleArray + , '$regex': handleSingle + , '$options': handleSingle +}; + +/** + * Casts contents for queries. + * + * @param {String} $conditional + * @param {any} [val] + * @api private + */ + +SchemaString.prototype.castForQuery = function ($conditional, val) { + var handler; + if (arguments.length === 2) { + handler = this.$conditionalHandlers[$conditional]; + if (!handler) + throw new Error("Can't use " + $conditional + " with String."); + return handler.call(this, val); + } else { + val = $conditional; + if (val instanceof RegExp) return val; + return this.cast(val); + } +}; + +/*! + * Module exports. + */ + +module.exports = SchemaString; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js new file mode 100644 index 0000000..aebcff5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js @@ -0,0 +1,34 @@ + +/*! + * Module dependencies. + */ + +var Schema = require('./schema') + +/** + * Default model for querying the system.profiles collection. + * + * @property system.profile + * @receiver exports + * @api private + */ + +exports['system.profile'] = new Schema({ + ts: Date + , info: String // deprecated + , millis: Number + , op: String + , ns: String + , query: Schema.Types.Mixed + , updateobj: Schema.Types.Mixed + , ntoreturn: Number + , nreturned: Number + , nscanned: Number + , responseLength: Number + , client: String + , user: String + , idhack: Boolean + , scanAndOrder: Boolean + , keyUpdates: Number + , cursorid: Number +}, { noVirtualId: true, noId: true }); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js new file mode 100644 index 0000000..d5dc7fd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js @@ -0,0 +1,625 @@ +/*! + * Module dependencies. + */ + +var utils = require('./utils'); +var CastError = require('./error').CastError; +var ValidatorError = require('./error').ValidatorError; + +/** + * SchemaType constructor + * + * @param {String} path + * @param {Object} [options] + * @param {String} [instance] + * @api public + */ + +function SchemaType (path, options, instance) { + this.path = path; + this.instance = instance; + this.validators = []; + this.setters = []; + this.getters = []; + this.options = options; + this._index = null; + this.selected; + + for (var i in options) if (this[i] && 'function' == typeof this[i]) { + // { unique: true, index: true } + if ('index' == i && this._index) continue; + + var opts = Array.isArray(options[i]) + ? options[i] + : [options[i]]; + + this[i].apply(this, opts); + } +}; + +/** + * Sets a default value for this SchemaType. + * + * ####Example: + * + * var schema = new Schema({ n: { type: Number, default: 10 }) + * var M = db.model('M', schema) + * var m = new M; + * console.log(m.n) // 10 + * + * Defaults can be either `functions` which return the value to use as the default or the literal value itself. Either way, the value will be cast based on its schema type before being set during document creation. + * + * ####Example: + * + * // values are cast: + * var schema = new Schema({ aNumber: Number, default: "4.815162342" }) + * var M = db.model('M', schema) + * var m = new M; + * console.log(m.aNumber, typeof m.aNumber) // 4.815162342 "number" + * + * @param {Function|any} val the default value + * @return {defaultValue} + * @api public + */ + +SchemaType.prototype.default = function (val) { + if (1 === arguments.length) { + this.defaultValue = typeof val === 'function' + ? val + : this.cast(val); + return this; + } else if (arguments.length > 1) { + this.defaultValue = utils.args(arguments); + } + return this.defaultValue; +}; + +/** + * Declares the index options for this schematype. + * + * ####Example: + * + * var s = new Schema({ name: { type: String, index: true }) + * var s = new Schema({ loc: { type: [Number], index: 'hashed' }) + * var s = new Schema({ loc: { type: [Number], index: '2d', sparse: true }) + * var s = new Schema({ loc: { type: [Number], index: { type: '2dsphere', sparse: true }}) + * var s = new Schema({ date: { type: Date, index: { unique: true, expires: '1d' }}) + * Schema.path('my.path').index(true); + * Schema.path('my.date').index({ expires: 60 }); + * Schema.path('my.path').index({ unique: true, sparse: true }); + * + * ####NOTE: + * + * _Indexes are created in the background by default. Specify `background: false` to override._ + * + * [Direction doesn't matter for single key indexes](http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes) + * + * @param {Object|Boolean|String} options + * @return {SchemaType} this + * @api public + */ + +SchemaType.prototype.index = function (options) { + this._index = options; + utils.expires(this._index); + return this; +}; + +/** + * Declares an unique index. + * + * ####Example: + * + * var s = new Schema({ name: { type: String, unique: true }) + * Schema.path('name').index({ unique: true }); + * + * _NOTE: violating the constraint returns an `E11000` error from MongoDB when saving, not a Mongoose validation error._ + * + * @param {Boolean} bool + * @return {SchemaType} this + * @api public + */ + +SchemaType.prototype.unique = function (bool) { + if (null == this._index || 'boolean' == typeof this._index) { + this._index = {}; + } else if ('string' == typeof this._index) { + this._index = { type: this._index }; + } + + this._index.unique = bool; + return this; +}; + +/** + * Declares a sparse index. + * + * ####Example: + * + * var s = new Schema({ name: { type: String, sparse: true }) + * Schema.path('name').index({ sparse: true }); + * + * @param {Boolean} bool + * @return {SchemaType} this + * @api public + */ + +SchemaType.prototype.sparse = function (bool) { + if (null == this._index || 'boolean' == typeof this._index) { + this._index = {}; + } else if ('string' == typeof this._index) { + this._index = { type: this._index }; + } + + this._index.sparse = bool; + return this; +}; + +/** + * Adds a setter to this schematype. + * + * ####Example: + * + * function capitalize (val) { + * if ('string' != typeof val) val = ''; + * return val.charAt(0).toUpperCase() + val.substring(1); + * } + * + * // defining within the schema + * var s = new Schema({ name: { type: String, set: capitalize }}) + * + * // or by retreiving its SchemaType + * var s = new Schema({ name: String }) + * s.path('name').set(capitalize) + * + * Setters allow you to transform the data before it gets to the raw mongodb document and is set as a value on an actual key. + * + * Suppose you are implementing user registration for a website. Users provide an email and password, which gets saved to mongodb. The email is a string that you will want to normalize to lower case, in order to avoid one email having more than one account -- e.g., otherwise, avenue@q.com can be registered for 2 accounts via avenue@q.com and AvEnUe@Q.CoM. + * + * You can set up email lower case normalization easily via a Mongoose setter. + * + * function toLower (v) { + * return v.toLowerCase(); + * } + * + * var UserSchema = new Schema({ + * email: { type: String, set: toLower } + * }) + * + * var User = db.model('User', UserSchema) + * + * var user = new User({email: 'AVENUE@Q.COM'}) + * console.log(user.email); // 'avenue@q.com' + * + * // or + * var user = new User + * user.email = 'Avenue@Q.com' + * console.log(user.email) // 'avenue@q.com' + * + * As you can see above, setters allow you to transform the data before it gets to the raw mongodb document and is set as a value on an actual key. + * + * _NOTE: we could have also just used the built-in `lowercase: true` SchemaType option instead of defining our own function._ + * + * new Schema({ email: { type: String, lowercase: true }}) + * + * Setters are also passed a second argument, the schematype on which the setter was defined. This allows for tailored behavior based on options passed in the schema. + * + * function inspector (val, schematype) { + * if (schematype.options.required) { + * return schematype.path + ' is required'; + * } else { + * return val; + * } + * } + * + * var VirusSchema = new Schema({ + * name: { type: String, required: true, set: inspector }, + * taxonomy: { type: String, set: inspector } + * }) + * + * var Virus = db.model('Virus', VirusSchema); + * var v = new Virus({ name: 'Parvoviridae', taxonomy: 'Parvovirinae' }); + * + * console.log(v.name); // name is required + * console.log(v.taxonomy); // Parvovirinae + * + * @param {Function} fn + * @return {SchemaType} this + * @api public + */ + +SchemaType.prototype.set = function (fn) { + if ('function' != typeof fn) + throw new TypeError('A setter must be a function.'); + this.setters.push(fn); + return this; +}; + +/** + * Adds a getter to this schematype. + * + * ####Example: + * + * function dob (val) { + * if (!val) return val; + * return (val.getMonth() + 1) + "/" + val.getDate() + "/" + val.getFullYear(); + * } + * + * // defining within the schema + * var s = new Schema({ born: { type: Date, get: dob }) + * + * // or by retreiving its SchemaType + * var s = new Schema({ born: Date }) + * s.path('born').get(dob) + * + * Getters allow you to transform the representation of the data as it travels from the raw mongodb document to the value that you see. + * + * Suppose you are storing credit card numbers and you want to hide everything except the last 4 digits to the mongoose user. You can do so by defining a getter in the following way: + * + * function obfuscate (cc) { + * return '****-****-****-' + cc.slice(cc.length-4, cc.length); + * } + * + * var AccountSchema = new Schema({ + * creditCardNumber: { type: String, get: obfuscate } + * }); + * + * var Account = db.model('Account', AccountSchema); + * + * Account.findById(id, function (err, found) { + * console.log(found.creditCardNumber); // '****-****-****-1234' + * }); + * + * Getters are also passed a second argument, the schematype on which the getter was defined. This allows for tailored behavior based on options passed in the schema. + * + * function inspector (val, schematype) { + * if (schematype.options.required) { + * return schematype.path + ' is required'; + * } else { + * return schematype.path + ' is not'; + * } + * } + * + * var VirusSchema = new Schema({ + * name: { type: String, required: true, get: inspector }, + * taxonomy: { type: String, get: inspector } + * }) + * + * var Virus = db.model('Virus', VirusSchema); + * + * Virus.findById(id, function (err, virus) { + * console.log(virus.name); // name is required + * console.log(virus.taxonomy); // taxonomy is not + * }) + * + * @param {Function} fn + * @return {SchemaType} this + * @api public + */ + +SchemaType.prototype.get = function (fn) { + if ('function' != typeof fn) + throw new TypeError('A getter must be a function.'); + this.getters.push(fn); + return this; +}; + +/** + * Adds validator(s) for this document path. + * + * Validators always receive the value to validate as their first argument and must return `Boolean`. Returning false is interpreted as validation failure. + * + * ####Examples: + * + * function validator (val) { + * return val == 'something'; + * } + * + * new Schema({ name: { type: String, validate: validator }}); + * + * // with a custom error message + * + * var custom = [validator, 'validation failed'] + * new Schema({ name: { type: String, validate: custom }}); + * + * var many = [ + * { validator: validator, msg: 'uh oh' } + * , { validator: fn, msg: 'failed' } + * ] + * new Schema({ name: { type: String, validate: many }}); + * + * // or utilizing SchemaType methods directly: + * + * var schema = new Schema({ name: 'string' }); + * schema.path('name').validate(validator, 'validation failed'); + * + * ####Asynchronous validation: + * + * Passing a validator function that receives two arguments tells mongoose that the validator is an asynchronous validator. The second argument is an callback function that must be passed either `true` or `false` when validation is complete. + * + * schema.path('name').validate(function (value, respond) { + * doStuff(value, function () { + * ... + * respond(false); // validation failed + * }) +* }, 'my error type'); +* + * You might use asynchronous validators to retreive other documents from the database to validate against or to meet other I/O bound validation needs. + * + * Validation occurs `pre('save')` or whenever you manually execute [document#validate](#document_Document-validate). + * + * If validation fails during `pre('save')` and no callback was passed to receive the error, an `error` event will be emitted on your Models associated db [connection](#connection_Connection), passing the validation error object along. + * + * var conn = mongoose.createConnection(..); + * conn.on('error', handleError); + * + * var Product = conn.model('Product', yourSchema); + * var dvd = new Product(..); + * dvd.save(); // emits error on the `conn` above + * + * If you desire handling these errors at the Model level, attach an `error` listener to your Model and the event will instead be emitted there. + * + * // registering an error listener on the Model lets us handle errors more locally + * Product.on('error', handleError); + * + * @param {RegExp|Function|Object} obj validator + * @param {String} [error] optional error message + * @api public + */ + +SchemaType.prototype.validate = function (obj, error) { + if ('function' == typeof obj || obj && 'RegExp' === obj.constructor.name) { + this.validators.push([obj, error]); + return this; + } + + var i = arguments.length + , arg + + while (i--) { + arg = arguments[i]; + if (!(arg && 'Object' == arg.constructor.name)) { + var msg = 'Invalid validator. Received (' + typeof arg + ') ' + + arg + + '. See http://mongoosejs.com/docs/api.html#schematype_SchemaType-validate'; + + throw new Error(msg); + } + this.validate(arg.validator, arg.msg); + } + + return this; +}; + +/** + * Adds a required validator to this schematype. + * + * ####Example: + * + * var s = new Schema({ born: { type: Date, required: true }) + * // or + * Schema.path('name').required(true); + * + * + * @param {Boolean} required enable/disable the validator + * @return {SchemaType} this + * @api public + */ + +SchemaType.prototype.required = function (required) { + var self = this; + + function __checkRequired (v) { + // in here, `this` refers to the validating document. + // no validation when this path wasn't selected in the query. + if ('isSelected' in this && + !this.isSelected(self.path) && + !this.isModified(self.path)) return true; + return self.checkRequired(v, this); + } + + if (false === required) { + this.isRequired = false; + this.validators = this.validators.filter(function (v) { + return v[0].name !== '__checkRequired'; + }); + } else { + this.isRequired = true; + this.validators.push([__checkRequired, 'required']); + } + + return this; +}; + +/** + * Gets the default value + * + * @param {Object} scope the scope which callback are executed + * @param {Boolean} init + * @api private + */ + +SchemaType.prototype.getDefault = function (scope, init) { + var ret = 'function' === typeof this.defaultValue + ? this.defaultValue.call(scope) + : this.defaultValue; + + if (null !== ret && undefined !== ret) { + return this.cast(ret, scope, init); + } else { + return ret; + } +}; + +/** + * Applies setters + * + * @param {Object} value + * @param {Object} scope + * @param {Boolean} init + * @api private + */ + +SchemaType.prototype.applySetters = function (value, scope, init, priorVal) { + if (SchemaType._isRef(this, value, scope, init)) { + return init + ? value + : this.cast(value, scope, init, priorVal); + } + + var v = value + , setters = this.setters + , len = setters.length + + if (!len) { + if (null === v || undefined === v) return v; + return this.cast(v, scope, init, priorVal) + } + + while (len--) { + v = setters[len].call(scope, v, this); + } + + if (null === v || undefined === v) return v; + + // do not cast until all setters are applied #665 + v = this.cast(v, scope, init, priorVal); + + return v; +}; + +/** + * Applies getters to a value + * + * @param {Object} value + * @param {Object} scope + * @api private + */ + +SchemaType.prototype.applyGetters = function (value, scope) { + if (SchemaType._isRef(this, value, scope, true)) return value; + + var v = value + , getters = this.getters + , len = getters.length; + + if (!len) { + return v; + } + + while (len--) { + v = getters[len].call(scope, v, this); + } + + return v; +}; + +/** + * Sets default `select()` behavior for this path. + * + * Set to `true` if this path should always be included in the results, `false` if it should be excluded by default. This setting can be overridden at the query level. + * + * ####Example: + * + * T = db.model('T', new Schema({ x: { type: String, select: true }})); + * T.find(..); // field x will always be selected .. + * // .. unless overridden; + * T.find().select('-x').exec(callback); + * + * @param {Boolean} val + * @api public + */ + +SchemaType.prototype.select = function select (val) { + this.selected = !! val; +} + +/** + * Performs a validation of `value` using the validators declared for this SchemaType. + * + * @param {any} value + * @param {Function} callback + * @param {Object} scope + * @api private + */ + +SchemaType.prototype.doValidate = function (value, fn, scope) { + var err = false + , path = this.path + , count = this.validators.length; + + if (!count) return fn(null); + + function validate (ok, msg, val) { + if (err) return; + if (ok === undefined || ok) { + --count || fn(null); + } else { + fn(err = new ValidatorError(path, msg, val)); + } + } + + this.validators.forEach(function (v) { + var validator = v[0] + , message = v[1]; + + if (validator instanceof RegExp) { + validate(validator.test(value), message, value); + } else if ('function' === typeof validator) { + if (2 === validator.length) { + validator.call(scope, value, function (ok) { + validate(ok, message, value); + }); + } else { + validate(validator.call(scope, value), message, value); + } + } + }); +}; + +/** + * Determines if value is a valid Reference. + * + * @param {SchemaType} self + * @param {Object} value + * @param {Document} doc + * @param {Boolean} init + * @return {Boolean} + * @api private + */ + +SchemaType._isRef = function (self, value, doc, init) { + // fast path + var ref = init && self.options && self.options.ref; + + if (!ref && doc && doc.$__fullPath) { + // checks for + // - this populated with adhoc model and no ref was set in schema OR + // - setting / pushing values after population + var path = doc.$__fullPath(self.path); + var owner = doc.ownerDocument ? doc.ownerDocument() : doc; + ref = owner.populated(path); + } + + if (ref) { + if (null == value) return true; + if (!Buffer.isBuffer(value) && // buffers are objects too + 'Binary' != value._bsontype // raw binary value from the db + && utils.isObject(value) // might have deselected _id in population query + ) { + return true; + } + } + + return false; +} + +/*! + * Module exports. + */ + +module.exports = exports = SchemaType; + +exports.CastError = CastError; + +exports.ValidatorError = ValidatorError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js new file mode 100644 index 0000000..76005d8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js @@ -0,0 +1,179 @@ + +/*! + * Module dependencies. + */ + +var utils = require('./utils'); + +/*! + * StateMachine represents a minimal `interface` for the + * constructors it builds via StateMachine.ctor(...). + * + * @api private + */ + +var StateMachine = module.exports = exports = function StateMachine () { + this.paths = {}; + this.states = {}; +} + +/*! + * StateMachine.ctor('state1', 'state2', ...) + * A factory method for subclassing StateMachine. + * The arguments are a list of states. For each state, + * the constructor's prototype gets state transition + * methods named after each state. These transition methods + * place their path argument into the given state. + * + * @param {String} state + * @param {String} [state] + * @return {Function} subclass constructor + * @private + */ + +StateMachine.ctor = function () { + var states = utils.args(arguments); + + var ctor = function () { + StateMachine.apply(this, arguments); + this.stateNames = states; + + var i = states.length + , state; + + while (i--) { + state = states[i]; + this.states[state] = {}; + } + }; + + ctor.prototype.__proto__ = StateMachine.prototype; + + states.forEach(function (state) { + // Changes the `path`'s state to `state`. + ctor.prototype[state] = function (path) { + this._changeState(path, state); + } + }); + + return ctor; +}; + +/*! + * This function is wrapped by the state change functions: + * + * - `require(path)` + * - `modify(path)` + * - `init(path)` + * + * @api private + */ + +StateMachine.prototype._changeState = function _changeState (path, nextState) { + var prevBucket = this.states[this.paths[path]]; + if (prevBucket) delete prevBucket[path]; + + this.paths[path] = nextState; + this.states[nextState][path] = true; +} + +/*! + * ignore + */ + +StateMachine.prototype.clear = function clear (state) { + var keys = Object.keys(this.states[state]) + , i = keys.length + , path + + while (i--) { + path = keys[i]; + delete this.states[state][path]; + delete this.paths[path]; + } +} + +/*! + * Checks to see if at least one path is in the states passed in via `arguments` + * e.g., this.some('required', 'inited') + * + * @param {String} state that we want to check for. + * @private + */ + +StateMachine.prototype.some = function some () { + var self = this; + var what = arguments.length ? arguments : this.stateNames; + return Array.prototype.some.call(what, function (state) { + return Object.keys(self.states[state]).length; + }); +} + +/*! + * This function builds the functions that get assigned to `forEach` and `map`, + * since both of those methods share a lot of the same logic. + * + * @param {String} iterMethod is either 'forEach' or 'map' + * @return {Function} + * @api private + */ + +StateMachine.prototype._iter = function _iter (iterMethod) { + return function () { + var numArgs = arguments.length + , states = utils.args(arguments, 0, numArgs-1) + , callback = arguments[numArgs-1]; + + if (!states.length) states = this.stateNames; + + var self = this; + + var paths = states.reduce(function (paths, state) { + return paths.concat(Object.keys(self.states[state])); + }, []); + + return paths[iterMethod](function (path, i, paths) { + return callback(path, i, paths); + }); + }; +} + +/*! + * Iterates over the paths that belong to one of the parameter states. + * + * The function profile can look like: + * this.forEach(state1, fn); // iterates over all paths in state1 + * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2 + * this.forEach(fn); // iterates over all paths in all states + * + * @param {String} [state] + * @param {String} [state] + * @param {Function} callback + * @private + */ + +StateMachine.prototype.forEach = function forEach () { + this.forEach = this._iter('forEach'); + return this.forEach.apply(this, arguments); +} + +/*! + * Maps over the paths that belong to one of the parameter states. + * + * The function profile can look like: + * this.forEach(state1, fn); // iterates over all paths in state1 + * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2 + * this.forEach(fn); // iterates over all paths in all states + * + * @param {String} [state] + * @param {String} [state] + * @param {Function} callback + * @return {Array} + * @private + */ + +StateMachine.prototype.map = function map () { + this.map = this._iter('map'); + return this.map.apply(this, arguments); +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js new file mode 100644 index 0000000..e0d7700 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js @@ -0,0 +1,679 @@ + +/*! + * Module dependencies. + */ + +var EmbeddedDocument = require('./embedded'); +var Document = require('../document'); +var ObjectId = require('./objectid'); +var utils = require('../utils'); +var isMongooseObject = utils.isMongooseObject; + +/** + * Mongoose Array constructor. + * + * ####NOTE: + * + * _Values always have to be passed to the constructor to initialize, otherwise `MongooseArray#push` will mark the array as modified._ + * + * @param {Array} values + * @param {String} path + * @param {Document} doc parent document + * @api private + * @inherits Array + * @see http://bit.ly/f6CnZU + */ + +function MongooseArray (values, path, doc) { + var arr = []; + arr.push.apply(arr, values); + arr.__proto__ = MongooseArray.prototype; + + arr._atomics = {}; + arr.validators = []; + arr._path = path; + + if (doc) { + arr._parent = doc; + arr._schema = doc.schema.path(path); + } + + return arr; +}; + +/*! + * Inherit from Array + */ + +MongooseArray.prototype = new Array; + +/** + * Stores a queue of atomic operations to perform + * + * @property _atomics + * @api private + */ + +MongooseArray.prototype._atomics; + +/** + * Parent owner document + * + * @property _parent + * @api private + */ + +MongooseArray.prototype._parent; + +/** + * Casts a member based on this arrays schema. + * + * @param {any} value + * @return value the casted value + * @api private + */ + +MongooseArray.prototype._cast = function (value) { + var owner = this._owner; + var populated = false; + var Model; + + if (this._parent) { + // if a populated array, we must cast to the same model + // instance as specified in the original query. + if (!owner) { + owner = this._owner = this._parent.ownerDocument + ? this._parent.ownerDocument() + : this._parent; + } + + populated = owner.populated(this._path, true); + } + + if (populated && null != value) { + // cast to the populated Models schema + var Model = populated.options.model; + + // only objects are permitted so we can safely assume that + // non-objects are to be interpreted as _id + if (Buffer.isBuffer(value) || + value instanceof ObjectId || !utils.isObject(value)) { + value = { _id: value }; + } + + value = new Model(value); + return this._schema.caster.cast(value, this._parent, true) + } + + return this._schema.caster.cast(value, this._parent, false) +} + +/** + * Marks this array as modified. + * + * If it bubbles up from an embedded document change, then it takes the following arguments (otherwise, takes 0 arguments) + * + * @param {EmbeddedDocument} embeddedDoc the embedded doc that invoked this method on the Array + * @param {String} embeddedPath the path which changed in the embeddedDoc + * @api private + */ + +MongooseArray.prototype._markModified = function (elem, embeddedPath) { + var parent = this._parent + , dirtyPath; + + if (parent) { + dirtyPath = this._path; + + if (arguments.length) { + if (null != embeddedPath) { + // an embedded doc bubbled up the change + dirtyPath = dirtyPath + '.' + this.indexOf(elem) + '.' + embeddedPath; + } else { + // directly set an index + dirtyPath = dirtyPath + '.' + elem; + } + } + parent.markModified(dirtyPath); + } + + return this; +}; + +/** + * Register an atomic operation with the parent. + * + * @param {Array} op operation + * @param {any} val + * @api private + */ + +MongooseArray.prototype._registerAtomic = function (op, val) { + if ('$set' == op) { + // $set takes precedence over all other ops. + // mark entire array modified. + this._atomics = { $set: val }; + return this; + } + + var atomics = this._atomics; + + // reset pop/shift after save + if ('$pop' == op && !('$pop' in atomics)) { + var self = this; + this._parent.once('save', function () { + self._popped = self._shifted = null; + }); + } + + // check for impossible $atomic combos (Mongo denies more than one + // $atomic op on a single path + if (this._atomics.$set || + Object.keys(atomics).length && !(op in atomics)) { + // a different op was previously registered. + // save the entire thing. + this._atomics = { $set: this }; + return this; + } + + if (op === '$pullAll' || op === '$pushAll' || op === '$addToSet') { + atomics[op] || (atomics[op] = []); + atomics[op] = atomics[op].concat(val); + } else if (op === '$pullDocs') { + var pullOp = atomics['$pull'] || (atomics['$pull'] = {}) + , selector = pullOp['_id'] || (pullOp['_id'] = {'$in' : [] }); + selector['$in'] = selector['$in'].concat(val); + } else { + atomics[op] = val; + } + + return this; +}; + +/** + * Depopulates stored atomic operation values as necessary for direct insertion to MongoDB. + * + * If no atomics exist, we return all array values after conversion. + * + * @return {Array} + * @method $__getAtomics + * @memberOf MongooseArray + * @api private + */ + +MongooseArray.prototype.$__getAtomics = function () { + var ret = []; + var keys = Object.keys(this._atomics); + var i = keys.length; + + if (0 === i) { + ret[0] = ['$set', this.toObject({ depopulate: 1 })]; + return ret; + } + + while (i--) { + var op = keys[i]; + var val = this._atomics[op]; + + // the atomic values which are arrays are not MongooseArrays. we + // need to convert their elements as if they were MongooseArrays + // to handle populated arrays versus DocumentArrays properly. + if (isMongooseObject(val)) { + val = val.toObject({ depopulate: 1 }); + } else if (Array.isArray(val)) { + val = this.toObject.call(val, { depopulate: 1 }); + } else if (val.valueOf) { + val = val.valueOf(); + } + + if ('$addToSet' == op) { + val = { $each: val } + } + + ret.push([op, val]); + } + + return ret; +} + +/** + * Returns the number of pending atomic operations to send to the db for this array. + * + * @api private + * @return {Number} + */ + +MongooseArray.prototype.hasAtomics = function hasAtomics () { + if (!(this._atomics && 'Object' === this._atomics.constructor.name)) { + return 0; + } + + return Object.keys(this._atomics).length; +} + +/** + * Wraps [`Array#push`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/push) with proper change tracking. + * + * @param {Object} [args...] + * @api public + */ + +MongooseArray.prototype.push = function () { + var values = [].map.call(arguments, this._cast, this) + , ret = [].push.apply(this, values); + + // $pushAll might be fibbed (could be $push). But it makes it easier to + // handle what could have been $push, $pushAll combos + this._registerAtomic('$pushAll', values); + this._markModified(); + return ret; +}; + +/** + * Pushes items to the array non-atomically. + * + * ####NOTE: + * + * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ + * + * @param {any} [args...] + * @api public + */ + +MongooseArray.prototype.nonAtomicPush = function () { + var values = [].map.call(arguments, this._cast, this) + , ret = [].push.apply(this, values); + this._registerAtomic('$set', this); + this._markModified(); + return ret; +}; + +/** + * Pops the array atomically at most one time per document `save()`. + * + * #### NOTE: + * + * _Calling this mulitple times on an array before saving sends the same command as calling it once._ + * _This update is implemented using the MongoDB [$pop](http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop) method which enforces this restriction._ + * + * doc.array = [1,2,3]; + * + * var popped = doc.array.$pop(); + * console.log(popped); // 3 + * console.log(doc.array); // [1,2] + * + * // no affect + * popped = doc.array.$pop(); + * console.log(doc.array); // [1,2] + * + * doc.save(function (err) { + * if (err) return handleError(err); + * + * // we saved, now $pop works again + * popped = doc.array.$pop(); + * console.log(popped); // 2 + * console.log(doc.array); // [1] + * }) + * + * @api public + * @method $pop + * @memberOf MongooseArray + * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop + */ + +MongooseArray.prototype.$pop = function () { + this._registerAtomic('$pop', 1); + this._markModified(); + + // only allow popping once + if (this._popped) return; + this._popped = true; + + return [].pop.call(this); +}; + +/** + * Wraps [`Array#pop`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/pop) with proper change tracking. + * + * ####Note: + * + * _marks the entire array as modified which will pass the entire thing to $set potentially overwritting any changes that happen between when you retrieved the object and when you save it._ + * + * @see MongooseArray#$pop #types_array_MongooseArray-%24pop + * @api public + */ + +MongooseArray.prototype.pop = function () { + var ret = [].pop.call(this); + this._registerAtomic('$set', this); + this._markModified(); + return ret; +}; + +/** + * Atomically shifts the array at most one time per document `save()`. + * + * ####NOTE: + * + * _Calling this mulitple times on an array before saving sends the same command as calling it once._ + * _This update is implemented using the MongoDB [$pop](http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop) method which enforces this restriction._ + * + * doc.array = [1,2,3]; + * + * var shifted = doc.array.$shift(); + * console.log(shifted); // 1 + * console.log(doc.array); // [2,3] + * + * // no affect + * shifted = doc.array.$shift(); + * console.log(doc.array); // [2,3] + * + * doc.save(function (err) { + * if (err) return handleError(err); + * + * // we saved, now $shift works again + * shifted = doc.array.$shift(); + * console.log(shifted ); // 2 + * console.log(doc.array); // [3] + * }) + * + * @api public + * @memberOf MongooseArray + * @method $shift + * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop + */ + +MongooseArray.prototype.$shift = function $shift () { + this._registerAtomic('$pop', -1); + this._markModified(); + + // only allow shifting once + if (this._shifted) return; + this._shifted = true; + + return [].shift.call(this); +}; + +/** + * Wraps [`Array#shift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. + * + * ####Example: + * + * doc.array = [2,3]; + * var res = doc.array.shift(); + * console.log(res) // 2 + * console.log(doc.array) // [3] + * + * ####Note: + * + * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ + * + * @api public + */ + +MongooseArray.prototype.shift = function () { + var ret = [].shift.call(this); + this._registerAtomic('$set', this); + this._markModified(); + return ret; +}; + +/** + * Pulls items from the array atomically. + * + * ####Examples: + * + * doc.array.pull(ObjectId) + * doc.array.pull({ _id: 'someId' }) + * doc.array.pull(36) + * doc.array.pull('tag 1', 'tag 2') + * + * To remove a document from a subdocument array we may pass an object with a matching `_id`. + * + * doc.subdocs.push({ _id: 4815162342 }) + * doc.subdocs.pull({ _id: 4815162342 }) // removed + * + * Or we may passing the _id directly and let mongoose take care of it. + * + * doc.subdocs.push({ _id: 4815162342 }) + * doc.subdocs.pull(4815162342); // works + * + * @param {any} [args...] + * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pull + * @api public + */ + +MongooseArray.prototype.pull = function () { + var values = [].map.call(arguments, this._cast, this) + , cur = this._parent.get(this._path) + , i = cur.length + , mem; + + while (i--) { + mem = cur[i]; + if (mem instanceof EmbeddedDocument) { + if (values.some(function (v) { return v.equals(mem); } )) { + [].splice.call(cur, i, 1); + } + } else if (~cur.indexOf.call(values, mem)) { + [].splice.call(cur, i, 1); + } + } + + if (values[0] instanceof EmbeddedDocument) { + this._registerAtomic('$pullDocs', values.map( function (v) { return v._id; } )); + } else { + this._registerAtomic('$pullAll', values); + } + + this._markModified(); + return this; +}; + +/** + * Alias of [pull](#types_array_MongooseArray-pull) + * + * @see MongooseArray#pull #types_array_MongooseArray-pull + * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pull + * @api public + * @memberOf MongooseArray + * @method remove + */ + +MongooseArray.prototype.remove = MongooseArray.prototype.pull; + +/** + * Wraps [`Array#splice`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) with proper change tracking and casting. + * + * ####Note: + * + * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ + * + * @api public + */ + +MongooseArray.prototype.splice = function splice () { + var ret, vals, i; + + if (arguments.length) { + vals = []; + for (i = 0; i < arguments.length; ++i) { + vals[i] = i < 2 + ? arguments[i] + : this._cast(arguments[i]); + } + ret = [].splice.apply(this, vals); + this._registerAtomic('$set', this); + this._markModified(); + } + + return ret; +} + +/** + * Wraps [`Array#unshift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. + * + * ####Note: + * + * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ + * + * @api public + */ + +MongooseArray.prototype.unshift = function () { + var values = [].map.call(arguments, this._cast, this); + [].unshift.apply(this, values); + this._registerAtomic('$set', this); + this._markModified(); + return this.length; +}; + +/** + * Wraps [`Array#sort`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort) with proper change tracking. + * + * ####NOTE: + * + * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ + * + * @api public + */ + +MongooseArray.prototype.sort = function () { + var ret = [].sort.apply(this, arguments); + this._registerAtomic('$set', this); + this._markModified(); + return ret; +} + +/** + * Adds values to the array if not already present. + * + * ####Example: + * + * console.log(doc.array) // [2,3,4] + * var added = doc.array.addToSet(4,5); + * console.log(doc.array) // [2,3,4,5] + * console.log(added) // [5] + * + * @param {any} [args...] + * @return {Array} the values that were added + * @api public + */ + +MongooseArray.prototype.addToSet = function addToSet () { + var values = [].map.call(arguments, this._cast, this) + , added = [] + , type = values[0] instanceof EmbeddedDocument ? 'doc' : + values[0] instanceof Date ? 'date' : + ''; + + values.forEach(function (v) { + var found; + switch (type) { + case 'doc': + found = this.some(function(doc){ return doc.equals(v) }); + break; + case 'date': + var val = +v; + found = this.some(function(d){ return +d === val }); + break; + default: + found = ~this.indexOf(v); + } + + if (!found) { + [].push.call(this, v); + this._registerAtomic('$addToSet', v); + this._markModified(); + [].push.call(added, v); + } + }, this); + + return added; +}; + +/** + * Sets the casted `val` at index `i` and marks the array modified. + * + * ####Example: + * + * // given documents based on the following + * var Doc = mongoose.model('Doc', new Schema({ array: [Number] })); + * + * var doc = new Doc({ array: [2,3,4] }) + * + * console.log(doc.array) // [2,3,4] + * + * doc.array.set(1,"5"); + * console.log(doc.array); // [2,5,4] // properly cast to number + * doc.save() // the change is saved + * + * // VS not using array#set + * doc.array[1] = "5"; + * console.log(doc.array); // [2,"5",4] // no casting + * doc.save() // change is not saved + * + * @return {Array} this + * @api public + */ + +MongooseArray.prototype.set = function set (i, val) { + this[i] = this._cast(val); + this._markModified(i); + return this; +} + +/** + * Returns a native js Array. + * + * @param {Object} options + * @return {Array} + * @api public + */ + +MongooseArray.prototype.toObject = function (options) { + if (options && options.depopulate) { + return this.map(function (doc) { + return doc instanceof Document + ? doc.toObject(options) + : doc + }); + } + + return this.slice(); +} + +/** + * Helper for console.log + * + * @api public + */ + +MongooseArray.prototype.inspect = function () { + return '[' + this.map(function (doc) { + return ' ' + doc; + }) + ' ]'; +}; + +/** + * Return the index of `obj` or `-1` if not found. + * + * @param {Object} obj the item to look for + * @return {Number} + * @api public + */ + +MongooseArray.prototype.indexOf = function indexOf (obj) { + if (obj instanceof ObjectId) obj = obj.toString(); + for (var i = 0, len = this.length; i < len; ++i) { + if (obj == this[i]) + return i; + } + return -1; +}; + +/*! + * Module exports. + */ + +module.exports = exports = MongooseArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js new file mode 100644 index 0000000..d84370b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js @@ -0,0 +1,210 @@ + +/*! + * Access driver. + */ + +var driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native'; + +/*! + * Module dependencies. + */ + +var Binary = require(driver + '/binary'); + +/** + * Mongoose Buffer constructor. + * + * Values always have to be passed to the constructor to initialize. + * + * @param {Buffer} value + * @param {String} encode + * @param {Number} offset + * @api private + * @inherits Buffer + * @see http://bit.ly/f6CnZU + */ + +function MongooseBuffer (value, encode, offset) { + var length = arguments.length; + var val; + + if (0 === length || null === arguments[0] || undefined === arguments[0]) { + val = 0; + } else { + val = value; + } + + var encoding; + var path; + var doc; + + if (Array.isArray(encode)) { + // internal casting + path = encode[0]; + doc = encode[1]; + } else { + encoding = encode; + } + + var buf = new Buffer(val, encoding, offset); + buf.__proto__ = MongooseBuffer.prototype; + + // make sure these internal props don't show up in Object.keys() + Object.defineProperties(buf, { + validators: { value: [] } + , _path: { value: path } + , _parent: { value: doc } + }); + + if (doc && "string" === typeof path) { + Object.defineProperty(buf, '_schema', { + value: doc.schema.path(path) + }); + } + + return buf; +}; + +/*! + * Inherit from Buffer. + */ + +MongooseBuffer.prototype = new Buffer(0); + +/** + * Parent owner document + * + * @api private + * @property _parent + */ + +MongooseBuffer.prototype._parent; + +/** + * Marks this buffer as modified. + * + * @api private + */ + +MongooseBuffer.prototype._markModified = function () { + var parent = this._parent; + + if (parent) { + parent.markModified(this._path); + } + return this; +}; + +/** +* Writes the buffer. +*/ + +MongooseBuffer.prototype.write = function () { + var written = Buffer.prototype.write.apply(this, arguments); + + if (written > 0) { + this._markModified(); + } + + return written; +}; + +/** + * Copies the buffer. + * + * ####Note: + * + * `Buffer#copy` does not mark `target` as modified so you must copy from a `MongooseBuffer` for it to work as expected. This is a work around since `copy` modifies the target, not this. + * + * @return {MongooseBuffer} + * @param {Buffer} target + */ + +MongooseBuffer.prototype.copy = function (target) { + var ret = Buffer.prototype.copy.apply(this, arguments); + + if (target instanceof MongooseBuffer) { + target._markModified(); + } + + return ret; +}; + +/*! + * Compile other Buffer methods marking this buffer as modified. + */ + +;( +// node < 0.5 +'writeUInt8 writeUInt16 writeUInt32 writeInt8 writeInt16 writeInt32 ' + +'writeFloat writeDouble fill ' + +'utf8Write binaryWrite asciiWrite set ' + + +// node >= 0.5 +'writeUInt16LE writeUInt16BE writeUInt32LE writeUInt32BE ' + +'writeInt16LE writeInt16BE writeInt32LE writeInt32BE ' + +'writeFloatLE writeFloatBE writeDoubleLE writeDoubleBE' +).split(' ').forEach(function (method) { + if (!Buffer.prototype[method]) return; + MongooseBuffer.prototype[method] = new Function( + 'var ret = Buffer.prototype.'+method+'.apply(this, arguments);' + + 'this._markModified();' + + 'return ret;' + ) +}); + +/** + * Converts this buffer to its Binary type representation. + * + * ####SubTypes: + * + * - 0x00: Binary/Generic + * - 0x01: Function + * - 0x02: Binary (Deprecated, 0x00 is new default) + * - 0x03: UUID + * - 0x04: MD5 + * - 0x80: User Defined + * + * @see http://bsonspec.org/#/specification + * @param {Hex} [subtype] + * @return {Binary} + * @api public + */ + +MongooseBuffer.prototype.toObject = function (options) { + var subtype = 'number' == typeof options + ? options + : 0x00; + return new Binary(this, subtype); +}; + +/** + * Determines if this buffer is equals to `other` buffer + * + * @param {Buffer} other + * @return {Boolean} + */ + +MongooseBuffer.prototype.equals = function (other) { + if (!Buffer.isBuffer(other)) { + return false; + } + + if (this.length !== other.length) { + return false; + } + + for (var i = 0; i < this.length; ++i) { + if (this[i] !== other[i]) return false; + } + + return true; +} + +/*! + * Module exports. + */ + +MongooseBuffer.Binary = Binary; + +module.exports = MongooseBuffer; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js new file mode 100644 index 0000000..d5ca8de --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js @@ -0,0 +1,189 @@ + +/*! + * Module dependencies. + */ + +var MongooseArray = require('./array') + , driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native' + , ObjectId = require(driver + '/objectid') + , ObjectIdSchema = require('../schema/objectid') + , utils = require('../utils') + , util = require('util') + +/** + * DocumentArray constructor + * + * @param {Array} values + * @param {String} path the path to this array + * @param {Document} doc parent document + * @api private + * @return {MongooseDocumentArray} + * @inherits MongooseArray + * @see http://bit.ly/f6CnZU + */ + +function MongooseDocumentArray (values, path, doc) { + var arr = []; + + // Values always have to be passed to the constructor to initialize, since + // otherwise MongooseArray#push will mark the array as modified to the parent. + arr.push.apply(arr, values); + arr.__proto__ = MongooseDocumentArray.prototype; + + arr._atomics = {}; + arr.validators = []; + arr._path = path; + + if (doc) { + arr._parent = doc; + arr._schema = doc.schema.path(path); + doc.on('save', arr.notify('save')); + doc.on('isNew', arr.notify('isNew')); + } + + return arr; +}; + +/*! + * Inherits from MongooseArray + */ + +MongooseDocumentArray.prototype.__proto__ = MongooseArray.prototype; + +/** + * Overrides MongooseArray#cast + * + * @api private + */ + +MongooseDocumentArray.prototype._cast = function (value) { + if (value instanceof this._schema.casterConstructor) { + if (!(value.__parent && value.__parentArray)) { + // value may have been created using array.create() + value.__parent = this._parent; + value.__parentArray = this; + } + return value; + } + + // handle cast('string') or cast(ObjectId) etc. + // only objects are permitted so we can safely assume that + // non-objects are to be interpreted as _id + if (Buffer.isBuffer(value) || + value instanceof ObjectId || !utils.isObject(value)) { + value = { _id: value }; + } + + return new this._schema.casterConstructor(value, this); +}; + +/** + * Searches array items for the first document with a matching _id. + * + * ####Example: + * + * var embeddedDoc = m.array.id(some_id); + * + * @return {EmbeddedDocument|null} the subdocuent or null if not found. + * @param {ObjectId|String|Number|Buffer} id + * @api public + */ + +MongooseDocumentArray.prototype.id = function (id) { + var casted + , sid + , _id + + try { + casted = ObjectId.toString(ObjectIdSchema.prototype.cast.call({}, id)); + } catch (e) { + casted = null; + } + + for (var i = 0, l = this.length; i < l; i++) { + _id = this[i].get('_id'); + if (!(_id instanceof ObjectId)) { + sid || (sid = String(id)); + if (sid == _id) + return this[i]; + } else { + if (casted == _id) + return this[i]; + } + } + + return null; +}; + +/** + * Returns a native js Array of plain js objects + * + * ####NOTE: + * + * _Each sub-document is converted to a plain object by calling its `#toObject` method._ + * + * @param {Object} [options] optional options to pass to each documents `toObject` method call during conversion + * @return {Array} + * @api public + */ + +MongooseDocumentArray.prototype.toObject = function (options) { + return this.map(function (doc) { + return doc && doc.toObject(options) || null; + }); +}; + +/** + * Helper for console.log + * + * @api public + */ + +MongooseDocumentArray.prototype.inspect = function () { + return '[' + this.map(function (doc) { + if (doc) { + return doc.inspect + ? doc.inspect() + : util.inspect(doc) + } + return 'null' + }).join('\n') + ']'; +}; + +/** + * Creates a subdocument casted to this schema. + * + * This is the same subdocument constructor used for casting. + * + * @param {Object} obj the value to cast to this arrays SubDocument schema + * @api public + */ + +MongooseDocumentArray.prototype.create = function (obj) { + return new this._schema.casterConstructor(obj); +} + +/** + * Creates a fn that notifies all child docs of `event`. + * + * @param {String} event + * @return {Function} + * @api private + */ + +MongooseDocumentArray.prototype.notify = function notify (event) { + var self = this; + return function notify (val) { + var i = self.length; + while (i--) { + if (!self[i]) continue; + self[i].emit(event, val); + } + } +} + +/*! + * Module exports. + */ + +module.exports = MongooseDocumentArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js new file mode 100644 index 0000000..6de36e6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js @@ -0,0 +1,244 @@ +/*! + * Module dependencies. + */ + +var Document = require('../document') + , inspect = require('util').inspect; + +/** + * EmbeddedDocument constructor. + * + * @param {Object} obj js object returned from the db + * @param {MongooseDocumentArray} parentArr the parent array of this document + * @param {Boolean} skipId + * @inherits Document + * @api private + */ + +function EmbeddedDocument (obj, parentArr, skipId, fields) { + if (parentArr) { + this.__parentArray = parentArr; + this.__parent = parentArr._parent; + } else { + this.__parentArray = undefined; + this.__parent = undefined; + } + + Document.call(this, obj, fields, skipId); + + var self = this; + this.on('isNew', function (val) { + self.isNew = val; + }); +}; + +/*! + * Inherit from Document + */ + +EmbeddedDocument.prototype.__proto__ = Document.prototype; + +/** + * Marks the embedded doc modified. + * + * ####Example: + * + * var doc = blogpost.comments.id(hexstring); + * doc.mixed.type = 'changed'; + * doc.markModified('mixed.type'); + * + * @param {String} path the path which changed + * @api public + */ + +EmbeddedDocument.prototype.markModified = function (path) { + if (!this.__parentArray) return; + + this.$__.activePaths.modify(path); + + if (this.isNew) { + // Mark the WHOLE parent array as modified + // if this is a new document (i.e., we are initializing + // a document), + this.__parentArray._markModified(); + } else + this.__parentArray._markModified(this, path); +}; + +/** + * Used as a stub for [hooks.js](https://github.com/bnoguchi/hooks-js/tree/31ec571cef0332e21121ee7157e0cf9728572cc3) + * + * ####NOTE: + * + * _This is a no-op. Does not actually save the doc to the db._ + * + * @param {Function} [fn] + * @return {EmbeddedDocument} this + * @api private + */ + +EmbeddedDocument.prototype.save = function(fn) { + if (fn) + fn(null); + return this; +}; + +/** + * Removes the subdocument from its parent array. + * + * @param {Function} [fn] + * @api public + */ + +EmbeddedDocument.prototype.remove = function (fn) { + if (!this.__parentArray) return this; + + var _id; + if (!this.willRemove) { + _id = this._doc._id; + if (!_id) { + throw new Error('For your own good, Mongoose does not know ' + + 'how to remove an EmbeddedDocument that has no _id'); + } + this.__parentArray.pull({ _id: _id }); + this.willRemove = true; + } + + if (fn) + fn(null); + + return this; +}; + +/** + * Override #update method of parent documents. + * @api private + */ + +EmbeddedDocument.prototype.update = function () { + throw new Error('The #update method is not available on EmbeddedDocuments'); +} + +/** + * Helper for console.log + * + * @api public + */ + +EmbeddedDocument.prototype.inspect = function () { + return inspect(this.toObject()); +}; + +/** + * Marks a path as invalid, causing validation to fail. + * + * @param {String} path the field to invalidate + * @param {String|Error} err error which states the reason `path` was invalid + * @return {Boolean} + * @api public + */ + +EmbeddedDocument.prototype.invalidate = function (path, err, val, first) { + if (!this.__parent) { + var msg = 'Unable to invalidate a subdocument that has not been added to an array.' + throw new Error(msg); + } + + var index = this.__parentArray.indexOf(this); + var parentPath = this.__parentArray._path; + var fullPath = [parentPath, index, path].join('.'); + + // sniffing arguments: + // need to check if user passed a value to keep + // our error message clean. + if (2 < arguments.length) { + this.__parent.invalidate(fullPath, err, val); + } else { + this.__parent.invalidate(fullPath, err); + } + + if (first) + this.$__.validationError = this.ownerDocument().$__.validationError; + return true; +} + +/** + * Returns the top level document of this sub-document. + * + * @return {Document} + */ + +EmbeddedDocument.prototype.ownerDocument = function () { + if (this.$__.ownerDocument) { + return this.$__.ownerDocument; + } + + var parent = this.__parent; + if (!parent) return this; + + while (parent.__parent) { + parent = parent.__parent; + } + + return this.$__.ownerDocument = parent; +} + +/** + * Returns the full path to this document. If optional `path` is passed, it is appended to the full path. + * + * @param {String} [path] + * @return {String} + * @api private + * @method $__fullPath + * @memberOf EmbeddedDocument + */ + +EmbeddedDocument.prototype.$__fullPath = function (path) { + if (!this.$__.fullPath) { + var parent = this; + if (!parent.__parent) return path; + + var paths = []; + while (parent.__parent) { + paths.unshift(parent.__parentArray._path); + parent = parent.__parent; + } + + this.$__.fullPath = paths.join('.'); + + if (!this.$__.ownerDocument) { + // optimization + this.$__.ownerDocument = parent; + } + } + + return path + ? this.$__.fullPath + '.' + path + : this.$__.fullPath; +} + +/** + * Returns this sub-documents parent document. + * + * @api public + */ + +EmbeddedDocument.prototype.parent = function () { + return this.__parent; +} + +/** + * Returns this sub-documents parent array. + * + * @api public + */ + +EmbeddedDocument.prototype.parentArray = function () { + return this.__parentArray; +} + +/*! + * Module exports. + */ + +module.exports = EmbeddedDocument; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js new file mode 100644 index 0000000..e6a9901 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js @@ -0,0 +1,13 @@ + +/*! + * Module exports. + */ + +exports.Array = require('./array'); +exports.Buffer = require('./buffer'); + +exports.Document = // @deprecate +exports.Embedded = require('./embedded'); + +exports.DocumentArray = require('./documentarray'); +exports.ObjectId = require('./objectid'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js new file mode 100644 index 0000000..44ad43f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js @@ -0,0 +1,43 @@ + +/*! + * Access driver. + */ + +var driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native'; + +/** + * ObjectId type constructor + * + * ####Example + * + * var id = new mongoose.Types.ObjectId; + * + * @constructor ObjectId + */ + +var ObjectId = require(driver + '/objectid'); +module.exports = ObjectId; + +/** + * Creates an ObjectId from `str` + * + * @param {ObjectId|HexString} str + * @static fromString + * @receiver ObjectId + * @return {ObjectId} + * @api private + */ + +ObjectId.fromString; + +/** + * Converts `oid` to a string. + * + * @param {ObjectId} oid ObjectId instance + * @static toString + * @receiver ObjectId + * @return {String} + * @api private + */ + +ObjectId.toString; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js new file mode 100644 index 0000000..678a7a8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js @@ -0,0 +1,671 @@ +/*! + * Module dependencies. + */ + +var ReadPref = require('mongodb').ReadPreference + , ObjectId = require('./types/objectid') + , cloneRegExp = require('regexp-clone') + , sliced = require('sliced') + , mpath = require('mpath') + , ms = require('ms') + , MongooseBuffer + , MongooseArray + , Document + +/*! + * Produces a collection name from model `name`. + * + * @param {String} name a model name + * @return {String} a collection name + * @api private + */ + +exports.toCollectionName = function (name) { + if ('system.profile' === name) return name; + if ('system.indexes' === name) return name; + return pluralize(name.toLowerCase()); +}; + +/** + * Pluralization rules. + * + * These rules are applied while processing the argument to `toCollectionName`. + * + * @deprecated remove in 4.x gh-1350 + */ + +exports.pluralization = [ + [/(m)an$/gi, '$1en'], + [/(pe)rson$/gi, '$1ople'], + [/(child)$/gi, '$1ren'], + [/^(ox)$/gi, '$1en'], + [/(ax|test)is$/gi, '$1es'], + [/(octop|vir)us$/gi, '$1i'], + [/(alias|status)$/gi, '$1es'], + [/(bu)s$/gi, '$1ses'], + [/(buffal|tomat|potat)o$/gi, '$1oes'], + [/([ti])um$/gi, '$1a'], + [/sis$/gi, 'ses'], + [/(?:([^f])fe|([lr])f)$/gi, '$1$2ves'], + [/(hive)$/gi, '$1s'], + [/([^aeiouy]|qu)y$/gi, '$1ies'], + [/(x|ch|ss|sh)$/gi, '$1es'], + [/(matr|vert|ind)ix|ex$/gi, '$1ices'], + [/([m|l])ouse$/gi, '$1ice'], + [/(quiz)$/gi, '$1zes'], + [/s$/gi, 's'], + [/$/gi, 's'] +]; +var rules = exports.pluralization; + +/** + * Uncountable words. + * + * These words are applied while processing the argument to `toCollectionName`. + * @api public + */ + +exports.uncountables = [ + 'advice', + 'energy', + 'excretion', + 'digestion', + 'cooperation', + 'health', + 'justice', + 'labour', + 'machinery', + 'equipment', + 'information', + 'pollution', + 'sewage', + 'paper', + 'money', + 'species', + 'series', + 'rain', + 'rice', + 'fish', + 'sheep', + 'moose', + 'deer', + 'news', + 'expertise', + 'status', + 'media' +]; +var uncountables = exports.uncountables; + +/*! + * Pluralize function. + * + * @author TJ Holowaychuk (extracted from _ext.js_) + * @param {String} string to pluralize + * @api private + */ + +function pluralize (str) { + var rule, found; + if (!~uncountables.indexOf(str.toLowerCase())){ + found = rules.filter(function(rule){ + return str.match(rule[0]); + }); + if (found[0]) return str.replace(found[0][0], found[0][1]); + } + return str; +}; + +/*! + * Determines if `a` and `b` are deep equal. + * + * Modified from node/lib/assert.js + * + * @param {any} a a value to compare to `b` + * @param {any} b a value to compare to `a` + * @return {Boolean} + * @api private + */ + +exports.deepEqual = function deepEqual (a, b) { + if (a === b) return true; + + if (a instanceof Date && b instanceof Date) + return a.getTime() === b.getTime(); + + if (a instanceof ObjectId && b instanceof ObjectId) { + return a.toString() === b.toString(); + } + + if (a instanceof RegExp && b instanceof RegExp) { + return a.source == b.source && + a.ignoreCase == b.ignoreCase && + a.multiline == b.multiline && + a.global == b.global; + } + + if (typeof a !== 'object' && typeof b !== 'object') + return a == b; + + if (a === null || b === null || a === undefined || b === undefined) + return false + + if (a.prototype !== b.prototype) return false; + + // Handle MongooseNumbers + if (a instanceof Number && b instanceof Number) { + return a.valueOf() === b.valueOf(); + } + + if (Buffer.isBuffer(a)) { + if (!Buffer.isBuffer(b)) return false; + if (a.length !== b.length) return false; + for (var i = 0, len = a.length; i < len; ++i) { + if (a[i] !== b[i]) return false; + } + return true; + } + + if (isMongooseObject(a)) a = a.toObject(); + if (isMongooseObject(b)) b = b.toObject(); + + try { + var ka = Object.keys(a), + kb = Object.keys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!deepEqual(a[key], b[key])) return false; + } + + return true; +}; + +/*! + * Object clone with Mongoose natives support. + * + * If options.minimize is true, creates a minimal data object. Empty objects and undefined values will not be cloned. This makes the data payload sent to MongoDB as small as possible. + * + * Functions are never cloned. + * + * @param {Object} obj the object to clone + * @param {Object} options + * @return {Object} the cloned object + * @api private + */ + +exports.clone = function clone (obj, options) { + if (obj === undefined || obj === null) + return obj; + + if (Array.isArray(obj)) + return cloneArray(obj, options); + + if (isMongooseObject(obj)) { + if (options && options.json && 'function' === typeof obj.toJSON) { + return obj.toJSON(options); + } else { + return obj.toObject(options); + } + } + + if (obj.constructor) { + switch (obj.constructor.name) { + case 'Object': + return cloneObject(obj, options); + case 'Date': + return new obj.constructor(+obj); + case 'RegExp': + return cloneRegExp(obj); + default: + // ignore + break; + } + } + + if (obj instanceof ObjectId) + return new ObjectId(obj.id); + + if (!obj.constructor && exports.isObject(obj)) { + // object created with Object.create(null) + return cloneObject(obj, options); + } + + if (obj.valueOf) + return obj.valueOf(); +}; +var clone = exports.clone; + +/*! + * ignore + */ + +function cloneObject (obj, options) { + var retainKeyOrder = options && options.retainKeyOrder + , minimize = options && options.minimize + , ret = {} + , hasKeys + , keys + , val + , k + , i + + if (retainKeyOrder) { + for (k in obj) { + val = clone(obj[k], options); + + if (!minimize || ('undefined' !== typeof val)) { + hasKeys || (hasKeys = true); + ret[k] = val; + } + } + } else { + // faster + + keys = Object.keys(obj); + i = keys.length; + + while (i--) { + k = keys[i]; + val = clone(obj[k], options); + + if (!minimize || ('undefined' !== typeof val)) { + if (!hasKeys) hasKeys = true; + ret[k] = val; + } + } + } + + return minimize + ? hasKeys && ret + : ret; +}; + +function cloneArray (arr, options) { + var ret = []; + for (var i = 0, l = arr.length; i < l; i++) + ret.push(clone(arr[i], options)); + return ret; +}; + +/*! + * Shallow copies defaults into options. + * + * @param {Object} defaults + * @param {Object} options + * @return {Object} the merged object + * @api private + */ + +exports.options = function (defaults, options) { + var keys = Object.keys(defaults) + , i = keys.length + , k ; + + options = options || {}; + + while (i--) { + k = keys[i]; + if (!(k in options)) { + options[k] = defaults[k]; + } + } + + return options; +}; + +/*! + * Generates a random string + * + * @api private + */ + +exports.random = function () { + return Math.random().toString().substr(3); +}; + +/*! + * Merges `from` into `to` without overwriting existing properties. + * + * @param {Object} to + * @param {Object} from + * @api private + */ + +exports.merge = function merge (to, from) { + var keys = Object.keys(from) + , i = keys.length + , key + + while (i--) { + key = keys[i]; + if ('undefined' === typeof to[key]) { + to[key] = from[key]; + } else { + if (exports.isObject(from[key])) { + merge(to[key], from[key]); + } else { + to[key] = from[key]; + } + } + } +}; + +/*! + * toString helper + */ + +var toString = Object.prototype.toString; + +/*! + * Determines if `arg` is an object. + * + * @param {Object|Array|String|Function|RegExp|any} arg + * @api private + * @return {Boolean} + */ + +exports.isObject = function (arg) { + return '[object Object]' == toString.call(arg); +} + +/*! + * A faster Array.prototype.slice.call(arguments) alternative + * @api private + */ + +exports.args = sliced; + +/*! + * process.nextTick helper. + * + * Wraps `callback` in a try/catch + nextTick. + * + * node-mongodb-native has a habit of state corruption when an error is immediately thrown from within a collection callback. + * + * @param {Function} callback + * @api private + */ + +exports.tick = function tick (callback) { + if ('function' !== typeof callback) return; + return function () { + try { + callback.apply(this, arguments); + } catch (err) { + // only nextTick on err to get out of + // the event loop and avoid state corruption. + process.nextTick(function () { + throw err; + }); + } + } +} + +/*! + * Returns if `v` is a mongoose object that has a `toObject()` method we can use. + * + * This is for compatibility with libs like Date.js which do foolish things to Natives. + * + * @param {any} v + * @api private + */ + +exports.isMongooseObject = function (v) { + Document || (Document = require('./document')); + MongooseArray || (MongooseArray = require('./types').Array); + MongooseBuffer || (MongooseBuffer = require('./types').Buffer); + + return v instanceof Document || + v instanceof MongooseArray || + v instanceof MongooseBuffer +} +var isMongooseObject = exports.isMongooseObject; + +/*! + * Converts `expires` options of index objects to `expiresAfterSeconds` options for MongoDB. + * + * @param {Object} object + * @api private + */ + +exports.expires = function expires (object) { + if (!(object && 'Object' == object.constructor.name)) return; + if (!('expires' in object)) return; + + var when; + if ('string' != typeof object.expires) { + when = object.expires; + } else { + when = Math.round(ms(object.expires) / 1000); + } + object.expireAfterSeconds = when; + delete object.expires; +} + +/*! + * Converts arguments to ReadPrefs the driver + * can understand. + * + * @TODO move this into the driver layer + * @param {String|Array} pref + * @param {Array} [tags] + */ + +exports.readPref = function readPref (pref, tags) { + if (Array.isArray(pref)) { + tags = pref[1]; + pref = pref[0]; + } + + switch (pref) { + case 'p': + pref = 'primary'; + break; + case 'pp': + pref = 'primaryPreferred'; + break; + case 's': + pref = 'secondary'; + break; + case 'sp': + pref = 'secondaryPreferred'; + break; + case 'n': + pref = 'nearest'; + break; + } + + return new ReadPref(pref, tags); +} + +/*! + * Populate options constructor + */ + +function PopulateOptions (path, select, match, options, model) { + this.path = path; + this.match = match; + this.select = select; + this.options = options; + this.model = model; + this._docs = {}; +} + +// make it compatible with utils.clone +PopulateOptions.prototype.constructor = Object; + +// expose +exports.PopulateOptions = PopulateOptions; + +/*! + * populate helper + */ + +exports.populate = function populate (path, select, model, match, options) { + // The order of select/conditions args is opposite Model.find but + // necessary to keep backward compatibility (select could be + // an array, string, or object literal). + + // might have passed an object specifying all arguments + if (1 === arguments.length) { + if (path instanceof PopulateOptions) { + return [path]; + } + + if (Array.isArray(path)) { + return path.map(function(o){ + return exports.populate(o)[0]; + }); + } + + if (exports.isObject(path)) { + match = path.match; + options = path.options; + select = path.select; + model = path.model; + path = path.path; + } + } else if ('string' !== typeof model) { + options = match; + match = model; + model = undefined; + } + + if ('string' != typeof path) { + throw new TypeError('utils.populate: invalid path. Expected string. Got typeof `' + typeof path + '`'); + } + + var ret = []; + var paths = path.split(' '); + for (var i = 0; i < paths.length; ++i) { + ret.push(new PopulateOptions(paths[i], select, match, options, model)); + } + + return ret; +} + +/*! + * Return the value of `obj` at the given `path`. + * + * @param {String} path + * @param {Object} obj + */ + +exports.getValue = function (path, obj, map) { + return mpath.get(path, obj, '_doc', map); +} + +/*! + * Sets the value of `obj` at the given `path`. + * + * @param {String} path + * @param {Anything} val + * @param {Object} obj + */ + +exports.setValue = function (path, val, obj, map) { + mpath.set(path, val, obj, '_doc', map); +} + +/*! + * Returns an array of values from object `o`. + * + * @param {Object} o + * @return {Array} + * @private + */ + +exports.object = {}; +exports.object.vals = function vals (o) { + var keys = Object.keys(o) + , i = keys.length + , ret = []; + + while (i--) { + ret.push(o[keys[i]]); + } + + return ret; +} + +/*! + * @see exports.options + */ + +exports.object.shallowCopy = exports.options; + +/*! + * Safer helper for hasOwnProperty checks + * + * @param {Object} obj + * @param {String} prop + */ + +exports.object.hasOwnProperty = function (obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +/*! + * Determine if `val` is null or undefined + * + * @return {Boolean} + */ + +exports.isNullOrUndefined = function (val) { + return null == val +} + +/*! + * ignore + */ + +exports.array = {}; + +/*! + * Flattens an array. + * + * [ 1, [ 2, 3, [4] ]] -> [1,2,3,4] + * + * @param {Array} arr + * @param {Function} [filter] If passed, will be invoked with each item in the array. If `filter` returns a falsey value, the item will not be included in the results. + * @return {Array} + * @private + */ + +exports.array.flatten = function flatten (arr, filter, ret) { + ret || (ret = []); + + arr.forEach(function (item) { + if (Array.isArray(item)) { + flatten(item, filter, ret); + } else { + if (!filter || filter(item)) { + ret.push(item); + } + } + }); + + return ret; +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js new file mode 100644 index 0000000..819ac10 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js @@ -0,0 +1,103 @@ + +/** + * VirtualType constructor + * + * This is what mongoose uses to define virtual attributes via `Schema.prototype.virtual`. + * + * ####Example: + * + * var fullname = schema.virtual('fullname'); + * fullname instanceof mongoose.VirtualType // true + * + * @parma {Object} options + * @api public + */ + +function VirtualType (options, name) { + this.path = name; + this.getters = []; + this.setters = []; + this.options = options || {}; +} + +/** + * Defines a getter. + * + * ####Example: + * + * var virtual = schema.virtual('fullname'); + * virtual.get(function () { + * return this.name.first + ' ' + this.name.last; + * }); + * + * @param {Function} fn + * @return {VirtualType} this + * @api public + */ + +VirtualType.prototype.get = function (fn) { + this.getters.push(fn); + return this; +}; + +/** + * Defines a setter. + * + * ####Example: + * + * var virtual = schema.virtual('fullname'); + * virtual.set(function (v) { + * var parts = v.split(' '); + * this.name.first = parts[0]; + * this.name.last = parts[1]; + * }); + * + * @param {Function} fn + * @return {VirtualType} this + * @api public + */ + +VirtualType.prototype.set = function (fn) { + this.setters.push(fn); + return this; +}; + +/** + * Applies getters to `value` using optional `scope`. + * + * @param {Object} value + * @param {Object} scope + * @return {any} the value after applying all getters + * @api public + */ + +VirtualType.prototype.applyGetters = function (value, scope) { + var v = value; + for (var l = this.getters.length - 1; l >= 0; l--) { + v = this.getters[l].call(scope, v, this); + } + return v; +}; + +/** + * Applies setters to `value` using optional `scope`. + * + * @param {Object} value + * @param {Object} scope + * @return {any} the value after applying all setters + * @api public + */ + +VirtualType.prototype.applySetters = function (value, scope) { + var v = value; + for (var l = this.setters.length - 1; l >= 0; l--) { + v = this.setters[l].call(scope, v, this); + } + return v; +}; + +/*! + * exports + */ + +module.exports = VirtualType; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore new file mode 100644 index 0000000..96e29a8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore @@ -0,0 +1,2 @@ +**.swp +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile new file mode 100644 index 0000000..1db5d65 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile @@ -0,0 +1,9 @@ +test: + @NODE_ENV=test ./node_modules/expresso/bin/expresso \ + $(TESTFLAGS) \ + ./test.js + +test-cov: + @TESTFLAGS=--cov $(MAKE) test + +.PHONY: test test-cov diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md new file mode 100644 index 0000000..af90a48 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md @@ -0,0 +1,306 @@ +hooks +============ + +Add pre and post middleware hooks to your JavaScript methods. + +## Installation + npm install hooks + +## Motivation +Suppose you have a JavaScript object with a `save` method. + +It would be nice to be able to declare code that runs before `save` and after `save`. +For example, you might want to run validation code before every `save`, +and you might want to dispatch a job to a background job queue after `save`. + +One might have an urge to hard code this all into `save`, but that turns out to +couple all these pieces of functionality (validation, save, and job creation) more +tightly than is necessary. For example, what if someone does not want to do background +job creation after the logical save? + +It is nicer to tack on functionality using what we call `pre` and `post` hooks. These +are functions that you define and that you direct to execute before or after particular +methods. + +## Example +We can use `hooks` to add validation and background jobs in the following way: + + var hooks = require('hooks') + , Document = require('./path/to/some/document/constructor'); + + // Add hooks' methods: `hook`, `pre`, and `post` + for (var k in hooks) { + Document[k] = hooks[k]; + } + + // Define a new method that is able to invoke pre and post middleware + Document.hook('save', Document.prototype.save); + + // Define a middleware function to be invoked before 'save' + Document.pre('save', function validate (next) { + // The `this` context inside of `pre` and `post` functions + // is the Document instance + if (this.isValid()) next(); // next() passes control to the next middleware + // or to the target method itself + else next(new Error("Invalid")); // next(error) invokes an error callback + }); + + // Define a middleware function to be invoked after 'save' + Document.post('save', function createJob () { + this.sendToBackgroundQueue(); + }); + +If you already have defined `Document.prototype` methods for which you want pres and posts, +then you do not need to explicitly invoke `Document.hook(...)`. Invoking `Document.pre(methodName, fn)` +or `Document.post(methodName, fn)` will automatically and lazily change `Document.prototype[methodName]` +so that it plays well with `hooks`. An equivalent way to implement the previous example is: + +```javascript +var hooks = require('hooks') + , Document = require('./path/to/some/document/constructor'); + +// Add hooks' methods: `hook`, `pre`, and `post` +for (var k in hooks) { + Document[k] = hooks[k]; +} + +Document.prototype.save = function () { + // ... +}; + +// Define a middleware function to be invoked before 'save' +Document.pre('save', function validate (next) { + // The `this` context inside of `pre` and `post` functions + // is the Document instance + if (this.isValid()) next(); // next() passes control to the next middleware + // or to the target method itself + else next(new Error("Invalid")); // next(error) invokes an error callback +}); + +// Define a middleware function to be invoked after 'save' +Document.post('save', function createJob () { + this.sendToBackgroundQueue(); +}); +``` + +## Pres and Posts as Middleware +We structure pres and posts as middleware to give you maximum flexibility: + +1. You can define **multiple** pres (or posts) for a single method. +2. These pres (or posts) are then executed as a chain of methods. +3. Any functions in this middleware chain can choose to halt the chain's execution by `next`ing an Error from that middleware function. If this occurs, then none of the other middleware in the chain will execute, and the main method (e.g., `save`) will not execute. This is nice, for example, when we don't want a document to save if it is invalid. + +## Defining multiple pres (or posts) +`pre` is chainable, so you can define multiple pres via: + Document.pre('save', function (next, halt) { + console.log("hello"); + }).pre('save', function (next, halt) { + console.log("world"); + }); + +As soon as one pre finishes executing, the next one will be invoked, and so on. + +## Error Handling +You can define a default error handler by passing a 2nd function as the 3rd argument to `hook`: + Document.hook('set', function (path, val) { + this[path] = val; + }, function (err) { + // Handler the error here + console.error(err); + }); + +Then, we can pass errors to this handler from a pre or post middleware function: + Document.pre('set', function (next, path, val) { + next(new Error()); + }); + +If you do not set up a default handler, then `hooks` makes the default handler that just throws the `Error`. + +The default error handler can be over-rided on a per method invocation basis. + +If the main method that you are surrounding with pre and post middleware expects its last argument to be a function +with callback signature `function (error, ...)`, then that callback becomes the error handler, over-riding the default +error handler you may have set up. + +```javascript +Document.hook('save', function (callback) { + // Save logic goes here + ... +}); + +var doc = new Document(); +doc.save( function (err, saved) { + // We can pass err via `next` in any of our pre or post middleware functions + if (err) console.error(err); + + // Rest of callback logic follows ... +}); +``` + +## Mutating Arguments via Middleware +`pre` and `post` middleware can also accept the intended arguments for the method +they augment. This is useful if you want to mutate the arguments before passing +them along to the next middleware and eventually pass a mutated arguments list to +the main method itself. + +As a simple example, let's define a method `set` that just sets a key, value pair. +If we want to namespace the key, we can do so by adding a `pre` middleware hook +that runs before `set`, alters the arguments by namespacing the `key` argument, and passes them onto `set`: + + Document.hook('set', function (key, val) { + this[key] = val; + }); + Document.pre('set', function (next, key, val) { + next('namespace-' + key, val); + }); + var doc = new Document(); + doc.set('hello', 'world'); + console.log(doc.hello); // undefined + console.log(doc['namespace-hello']); // 'world' + +As you can see above, we pass arguments via `next`. + +If you are not mutating the arguments, then you can pass zero arguments +to `next`, and the next middleware function will still have access +to the arguments. + + Document.hook('set', function (key, val) { + this[key] = val; + }); + Document.pre('set', function (next, key, val) { + // I have access to key and val here + next(); // We don't need to pass anything to next + }); + Document.pre('set', function (next, key, val) { + // And I still have access to the original key and val here + next(); + }); + +Finally, you can add arguments that downstream middleware can also see: + + // Note that in the definition of `set`, there is no 3rd argument, options + Document.hook('set', function (key, val) { + // But... + var options = arguments[2]; // ...I have access to an options argument + // because of pre function pre2 (defined below) + console.log(options); // '{debug: true}' + this[key] = val; + }); + Document.pre('set', function pre1 (next, key, val) { + // I only have access to key and val arguments + console.log(arguments.length); // 3 + next(key, val, {debug: true}); + }); + Document.pre('set', function pre2 (next, key, val, options) { + console.log(arguments.length); // 4 + console.log(options); // '{ debug: true}' + next(); + }); + Document.pre('set', function pre3 (next, key, val, options) { + // I still have access to key, val, AND the options argument introduced via the preceding middleware + console.log(arguments.length); // 4 + console.log(options); // '{ debug: true}' + next(); + }); + + var doc = new Document() + doc.set('hey', 'there'); + +## Parallel `pre` middleware + +All middleware up to this point has been "serial" middleware -- i.e., middleware whose logic +is executed as a serial chain. + +Some scenarios call for parallel middleware -- i.e., middleware that can wait for several +asynchronous services at once to respond. + +For instance, you may only want to save a Document only after you have checked +that the Document is valid according to two different remote services. + +We accomplish asynchronous middleware by adding a second kind of flow control callback +(the only flow control callback so far has been `next`), called `done`. + +- `next` passes control to the next middleware in the chain +- `done` keeps track of how many parallel middleware have invoked `done` and passes + control to the target method when ALL parallel middleware have invoked `done`. If + you pass an `Error` to `done`, then the error is handled, and the main method that is + wrapped by pres and posts will not get invoked. + +We declare pre middleware that is parallel by passing a 3rd boolean argument to our `pre` +definition method. + +We illustrate via the parallel validation example mentioned above: + + Document.hook('save', function targetFn (callback) { + // Save logic goes here + // ... + // This only gets run once the two `done`s are both invoked via preOne and preTwo. + }); + + // true marks this as parallel middleware + Document.pre('save', true, function preOne (next, doneOne, callback) { + remoteServiceOne.validate(this.serialize(), function (err, isValid) { + // The code in here will probably be run after the `next` below this block + // and could possibly be run after the console.log("Hola") in `preTwo + if (err) return doneOne(err); + if (isValid) doneOne(); + }); + next(); // Pass control to the next middleware + }); + + // We will suppose that we need 2 different remote services to validate our document + Document.pre('save', true, function preTwo (next, doneTwo, callback) { + remoteServiceTwo.validate(this.serialize(), function (err, isValid) { + if (err) return doneTwo(err); + if (isValid) doneTwo(); + }); + next(); + }); + + // While preOne and preTwo are parallel, preThree is a serial pre middleware + Document.pre('save', function preThree (next, callback) { + next(); + }); + + var doc = new Document(); + doc.save( function (err, doc) { + // Do stuff with the saved doc here... + }); + +In the above example, flow control may happen in the following way: + +(1) doc.save -> (2) preOne --(next)--> (3) preTwo --(next)--> (4) preThree --(next)--> (wait for dones to invoke) -> (5) doneTwo -> (6) doneOne -> (7) targetFn + +So what's happening is that: + +1. You call `doc.save(...)` +2. First, your preOne middleware gets executed. It makes a remote call to the validation service and `next()`s to the preTwo middleware. +3. Now, your preTwo middleware gets executed. It makes a remote call to another validation service and `next()`s to the preThree middleware. +4. Your preThree middleware gets executed. It immediately `next()`s. But nothing else gets executing until both `doneOne` and `doneTwo` are invoked inside the callbacks handling the response from the two valiation services. +5. We will suppose that validation remoteServiceTwo returns a response to us first. In this case, we call `doneTwo` inside the callback to remoteServiceTwo. +6. Some fractions of a second later, remoteServiceOne returns a response to us. In this case, we call `doneOne` inside the callback to remoteServiceOne. +7. `hooks` implementation keeps track of how many parallel middleware has been defined per target function. It detects that both asynchronous pre middlewares (`preOne` and `preTwo`) have finally called their `done` functions (`doneOne` and `doneTwo`), so the implementation finally invokes our `targetFn` (i.e., our core `save` business logic). + +## Removing Pres + +You can remove a particular pre associated with a hook: + + Document.pre('set', someFn); + Document.removePre('set', someFn); + +And you can also remove all pres associated with a hook: + Document.removePre('set'); // Removes all declared `pre`s on the hook 'set' + +## Tests +To run the tests: + make test + +### Contributors +- [Brian Noguchi](https://github.com/bnoguchi) + +### License +MIT License + +--- +### Author +Brian Noguchi diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js new file mode 100644 index 0000000..6ced357 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js @@ -0,0 +1,134 @@ +/** + * Hooks are useful if we want to add a method that automatically has `pre` and `post` hooks. + * For example, it would be convenient to have `pre` and `post` hooks for `save`. + * _.extend(Model, mixins.hooks); + * Model.hook('save', function () { + * console.log('saving'); + * }); + * Model.pre('save', function (next, done) { + * console.log('about to save'); + * next(); + * }); + * Model.post('save', function (next, done) { + * console.log('saved'); + * next(); + * }); + * + * var m = new Model(); + * m.save(); + * // about to save + * // saving + * // saved + */ + +// TODO Add in pre and post skipping options +module.exports = { + /** + * Declares a new hook to which you can add pres and posts + * @param {String} name of the function + * @param {Function} the method + * @param {Function} the error handler callback + */ + hook: function (name, fn, err) { + if (arguments.length === 1 && typeof name === 'object') { + for (var k in name) { // `name` is a hash of hookName->hookFn + this.hook(k, name[k]); + } + return; + } + + if (!err) err = fn; + + var proto = this.prototype || this + , pres = proto._pres = proto._pres || {} + , posts = proto._posts = proto._posts || {}; + pres[name] = pres[name] || []; + posts[name] = posts[name] || []; + + function noop () {} + + proto[name] = function () { + var self = this + , pres = this._pres[name] + , posts = this._posts[name] + , numAsyncPres = 0 + , hookArgs = [].slice.call(arguments) + , preChain = pres.map( function (pre, i) { + var wrapper = function () { + if (arguments[0] instanceof Error) + return err(arguments[0]); + if (numAsyncPres) { + // arguments[1] === asyncComplete + if (arguments.length) + hookArgs = [].slice.call(arguments, 2); + pre.apply(self, + [ preChain[i+1] || allPresInvoked, + asyncComplete + ].concat(hookArgs) + ); + } else { + if (arguments.length) + hookArgs = [].slice.call(arguments); + pre.apply(self, + [ preChain[i+1] || allPresDone ].concat(hookArgs)); + } + }; // end wrapper = function () {... + if (wrapper.isAsync = pre.isAsync) + numAsyncPres++; + return wrapper; + }); // end posts.map(...) + function allPresInvoked () { + if (arguments[0] instanceof Error) + err(arguments[0]); + } + + function allPresDone () { + if (arguments[0] instanceof Error) + return err(arguments[0]); + if (arguments.length) + hookArgs = [].slice.call(arguments); + fn.apply(self, hookArgs); + var postChain = posts.map( function (post, i) { + var wrapper = function () { + if (arguments[0] instanceof Error) + return err(arguments[0]); + if (arguments.length) + hookArgs = [].slice.call(arguments); + post.apply(self, + [ postChain[i+1] || noop].concat(hookArgs)); + }; // end wrapper = function () {... + return wrapper; + }); // end posts.map(...) + if (postChain.length) postChain[0](); + } + + if (numAsyncPres) { + complete = numAsyncPres; + function asyncComplete () { + if (arguments[0] instanceof Error) + return err(arguments[0]); + --complete || allPresDone.call(this); + } + } + (preChain[0] || allPresDone)(); + }; + + return this; + }, + + pre: function (name, fn, isAsync) { + var proto = this.prototype + , pres = proto._pres = proto._pres || {}; + if (fn.isAsync = isAsync) { + this.prototype[name].numAsyncPres++; + } + (pres[name] = pres[name] || []).push(fn); + return this; + }, + post: function (name, fn, isAsync) { + var proto = this.prototype + , posts = proto._posts = proto._posts || {}; + (posts[name] = posts[name] || []).push(fn); + return this; + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js new file mode 100644 index 0000000..9a887c7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js @@ -0,0 +1,161 @@ +// TODO Add in pre and post skipping options +module.exports = { + /** + * Declares a new hook to which you can add pres and posts + * @param {String} name of the function + * @param {Function} the method + * @param {Function} the error handler callback + */ + hook: function (name, fn, errorCb) { + if (arguments.length === 1 && typeof name === 'object') { + for (var k in name) { // `name` is a hash of hookName->hookFn + this.hook(k, name[k]); + } + return; + } + + var proto = this.prototype || this + , pres = proto._pres = proto._pres || {} + , posts = proto._posts = proto._posts || {}; + pres[name] = pres[name] || []; + posts[name] = posts[name] || []; + + proto[name] = function () { + var self = this + , hookArgs // arguments eventually passed to the hook - are mutable + , lastArg = arguments[arguments.length-1] + , pres = this._pres[name] + , posts = this._posts[name] + , _total = pres.length + , _current = -1 + , _asyncsLeft = proto[name].numAsyncPres + , _next = function () { + if (arguments[0] instanceof Error) { + return handleError(arguments[0]); + } + var _args = Array.prototype.slice.call(arguments) + , currPre + , preArgs; + if (_args.length && !(arguments[0] == null && typeof lastArg === 'function')) + hookArgs = _args; + if (++_current < _total) { + currPre = pres[_current] + if (currPre.isAsync && currPre.length < 2) + throw new Error("Your pre must have next and done arguments -- e.g., function (next, done, ...)"); + if (currPre.length < 1) + throw new Error("Your pre must have a next argument -- e.g., function (next, ...)"); + preArgs = (currPre.isAsync + ? [once(_next), once(_asyncsDone)] + : [once(_next)]).concat(hookArgs); + return currPre.apply(self, preArgs); + } else if (!proto[name].numAsyncPres) { + return _done.apply(self, hookArgs); + } + } + , _done = function () { + var args_ = Array.prototype.slice.call(arguments) + , ret, total_, current_, next_, done_, postArgs; + if (_current === _total) { + ret = fn.apply(self, args_); + total_ = posts.length; + current_ = -1; + next_ = function () { + if (arguments[0] instanceof Error) { + return handleError(arguments[0]); + } + var args_ = Array.prototype.slice.call(arguments, 1) + , currPost + , postArgs; + if (args_.length) hookArgs = args_; + if (++current_ < total_) { + currPost = posts[current_] + if (currPost.length < 1) + throw new Error("Your post must have a next argument -- e.g., function (next, ...)"); + postArgs = [once(next_)].concat(hookArgs); + return currPost.apply(self, postArgs); + } + }; + if (total_) return next_(); + return ret; + } + }; + if (_asyncsLeft) { + function _asyncsDone (err) { + if (err && err instanceof Error) { + return handleError(err); + } + --_asyncsLeft || _done.apply(self, hookArgs); + } + } + function handleError (err) { + if ('function' == typeof lastArg) + return lastArg(err); + if (errorCb) return errorCb.call(self, err); + throw err; + } + return _next.apply(this, arguments); + }; + + proto[name].numAsyncPres = 0; + + return this; + }, + + pre: function (name, isAsync, fn, errorCb) { + if ('boolean' !== typeof arguments[1]) { + errorCb = fn; + fn = isAsync; + isAsync = false; + } + var proto = this.prototype || this + , pres = proto._pres = proto._pres || {}; + + this._lazySetupHooks(proto, name, errorCb); + + if (fn.isAsync = isAsync) { + proto[name].numAsyncPres++; + } + + (pres[name] = pres[name] || []).push(fn); + return this; + }, + post: function (name, isAsync, fn) { + if (arguments.length === 2) { + fn = isAsync; + isAsync = false; + } + var proto = this.prototype || this + , posts = proto._posts = proto._posts || {}; + + this._lazySetupHooks(proto, name); + (posts[name] = posts[name] || []).push(fn); + return this; + }, + removePre: function (name, fnToRemove) { + var proto = this.prototype || this + , pres = proto._pres || (proto._pres || {}); + if (!pres[name]) return this; + if (arguments.length === 1) { + // Remove all pre callbacks for hook `name` + pres[name].length = 0; + } else { + pres[name] = pres[name].filter( function (currFn) { + return currFn !== fnToRemove; + }); + } + return this; + }, + _lazySetupHooks: function (proto, methodName, errorCb) { + if ('undefined' === typeof proto[methodName].numAsyncPres) { + this.hook(methodName, proto[methodName], errorCb); + } + } +}; + +function once (fn, scope) { + return function fnWrapper () { + if (fnWrapper.hookCalled) return; + fnWrapper.hookCalled = true; + fn.apply(scope, arguments); + }; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json new file mode 100644 index 0000000..798cff5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json @@ -0,0 +1,53 @@ +{ + "name": "hooks", + "description": "Adds pre and post hook functionality to your JavaScript methods.", + "version": "0.2.1", + "keywords": [ + "node", + "hooks", + "middleware", + "pre", + "post" + ], + "homepage": "https://github.com/bnoguchi/hooks-js/", + "repository": { + "type": "git", + "url": "git://github.com/bnoguchi/hooks-js.git" + }, + "author": { + "name": "Brian Noguchi", + "email": "brian.noguchi@gmail.com", + "url": "https://github.com/bnoguchi/" + }, + "main": "./hooks.js", + "directories": { + "lib": "." + }, + "scripts": { + "test": "make test" + }, + "dependencies": {}, + "devDependencies": { + "expresso": ">=0.7.6", + "should": ">=0.2.1", + "underscore": ">=1.1.4" + }, + "engines": { + "node": ">=0.4.0" + }, + "licenses": [ + "MIT" + ], + "optionalDependencies": {}, + "readme": "hooks\n============\n\nAdd pre and post middleware hooks to your JavaScript methods.\n\n## Installation\n npm install hooks\n\n## Motivation\nSuppose you have a JavaScript object with a `save` method.\n\nIt would be nice to be able to declare code that runs before `save` and after `save`.\nFor example, you might want to run validation code before every `save`,\nand you might want to dispatch a job to a background job queue after `save`.\n\nOne might have an urge to hard code this all into `save`, but that turns out to\ncouple all these pieces of functionality (validation, save, and job creation) more\ntightly than is necessary. For example, what if someone does not want to do background\njob creation after the logical save? \n\nIt is nicer to tack on functionality using what we call `pre` and `post` hooks. These\nare functions that you define and that you direct to execute before or after particular\nmethods.\n\n## Example\nWe can use `hooks` to add validation and background jobs in the following way:\n\n var hooks = require('hooks')\n , Document = require('./path/to/some/document/constructor');\n\n // Add hooks' methods: `hook`, `pre`, and `post` \n for (var k in hooks) {\n Document[k] = hooks[k];\n }\n\n // Define a new method that is able to invoke pre and post middleware\n Document.hook('save', Document.prototype.save);\n\n // Define a middleware function to be invoked before 'save'\n Document.pre('save', function validate (next) {\n // The `this` context inside of `pre` and `post` functions\n // is the Document instance\n if (this.isValid()) next(); // next() passes control to the next middleware\n // or to the target method itself\n else next(new Error(\"Invalid\")); // next(error) invokes an error callback\n });\n\n // Define a middleware function to be invoked after 'save'\n Document.post('save', function createJob () {\n this.sendToBackgroundQueue();\n });\n\nIf you already have defined `Document.prototype` methods for which you want pres and posts,\nthen you do not need to explicitly invoke `Document.hook(...)`. Invoking `Document.pre(methodName, fn)`\nor `Document.post(methodName, fn)` will automatically and lazily change `Document.prototype[methodName]`\nso that it plays well with `hooks`. An equivalent way to implement the previous example is:\n\n```javascript\nvar hooks = require('hooks')\n , Document = require('./path/to/some/document/constructor');\n\n// Add hooks' methods: `hook`, `pre`, and `post` \nfor (var k in hooks) {\n Document[k] = hooks[k];\n}\n\nDocument.prototype.save = function () {\n // ...\n};\n\n// Define a middleware function to be invoked before 'save'\nDocument.pre('save', function validate (next) {\n // The `this` context inside of `pre` and `post` functions\n // is the Document instance\n if (this.isValid()) next(); // next() passes control to the next middleware\n // or to the target method itself\n else next(new Error(\"Invalid\")); // next(error) invokes an error callback\n});\n\n// Define a middleware function to be invoked after 'save'\nDocument.post('save', function createJob () {\n this.sendToBackgroundQueue();\n});\n```\n\n## Pres and Posts as Middleware\nWe structure pres and posts as middleware to give you maximum flexibility:\n\n1. You can define **multiple** pres (or posts) for a single method.\n2. These pres (or posts) are then executed as a chain of methods.\n3. Any functions in this middleware chain can choose to halt the chain's execution by `next`ing an Error from that middleware function. If this occurs, then none of the other middleware in the chain will execute, and the main method (e.g., `save`) will not execute. This is nice, for example, when we don't want a document to save if it is invalid.\n\n## Defining multiple pres (or posts)\n`pre` is chainable, so you can define multiple pres via:\n Document.pre('save', function (next, halt) {\n console.log(\"hello\");\n }).pre('save', function (next, halt) {\n console.log(\"world\");\n });\n\nAs soon as one pre finishes executing, the next one will be invoked, and so on.\n\n## Error Handling\nYou can define a default error handler by passing a 2nd function as the 3rd argument to `hook`:\n Document.hook('set', function (path, val) {\n this[path] = val;\n }, function (err) {\n // Handler the error here\n console.error(err);\n });\n\nThen, we can pass errors to this handler from a pre or post middleware function:\n Document.pre('set', function (next, path, val) {\n next(new Error());\n });\n\nIf you do not set up a default handler, then `hooks` makes the default handler that just throws the `Error`.\n\nThe default error handler can be over-rided on a per method invocation basis.\n\nIf the main method that you are surrounding with pre and post middleware expects its last argument to be a function\nwith callback signature `function (error, ...)`, then that callback becomes the error handler, over-riding the default\nerror handler you may have set up.\n \n```javascript\nDocument.hook('save', function (callback) {\n // Save logic goes here\n ...\n});\n\nvar doc = new Document();\ndoc.save( function (err, saved) {\n // We can pass err via `next` in any of our pre or post middleware functions\n if (err) console.error(err);\n \n // Rest of callback logic follows ...\n});\n```\n\n## Mutating Arguments via Middleware\n`pre` and `post` middleware can also accept the intended arguments for the method\nthey augment. This is useful if you want to mutate the arguments before passing\nthem along to the next middleware and eventually pass a mutated arguments list to\nthe main method itself.\n\nAs a simple example, let's define a method `set` that just sets a key, value pair.\nIf we want to namespace the key, we can do so by adding a `pre` middleware hook\nthat runs before `set`, alters the arguments by namespacing the `key` argument, and passes them onto `set`:\n\n Document.hook('set', function (key, val) {\n this[key] = val;\n });\n Document.pre('set', function (next, key, val) {\n next('namespace-' + key, val);\n });\n var doc = new Document();\n doc.set('hello', 'world');\n console.log(doc.hello); // undefined\n console.log(doc['namespace-hello']); // 'world'\n\nAs you can see above, we pass arguments via `next`.\n\nIf you are not mutating the arguments, then you can pass zero arguments\nto `next`, and the next middleware function will still have access\nto the arguments.\n\n Document.hook('set', function (key, val) {\n this[key] = val;\n });\n Document.pre('set', function (next, key, val) {\n // I have access to key and val here\n next(); // We don't need to pass anything to next\n });\n Document.pre('set', function (next, key, val) {\n // And I still have access to the original key and val here\n next();\n });\n\nFinally, you can add arguments that downstream middleware can also see:\n\n // Note that in the definition of `set`, there is no 3rd argument, options\n Document.hook('set', function (key, val) {\n // But...\n var options = arguments[2]; // ...I have access to an options argument\n // because of pre function pre2 (defined below)\n console.log(options); // '{debug: true}'\n this[key] = val;\n });\n Document.pre('set', function pre1 (next, key, val) {\n // I only have access to key and val arguments\n console.log(arguments.length); // 3\n next(key, val, {debug: true});\n });\n Document.pre('set', function pre2 (next, key, val, options) {\n console.log(arguments.length); // 4\n console.log(options); // '{ debug: true}'\n next();\n });\n Document.pre('set', function pre3 (next, key, val, options) {\n // I still have access to key, val, AND the options argument introduced via the preceding middleware\n console.log(arguments.length); // 4\n console.log(options); // '{ debug: true}'\n next();\n });\n \n var doc = new Document()\n doc.set('hey', 'there');\n\n## Parallel `pre` middleware\n\nAll middleware up to this point has been \"serial\" middleware -- i.e., middleware whose logic\nis executed as a serial chain.\n\nSome scenarios call for parallel middleware -- i.e., middleware that can wait for several\nasynchronous services at once to respond.\n\nFor instance, you may only want to save a Document only after you have checked\nthat the Document is valid according to two different remote services.\n\nWe accomplish asynchronous middleware by adding a second kind of flow control callback\n(the only flow control callback so far has been `next`), called `done`.\n\n- `next` passes control to the next middleware in the chain\n- `done` keeps track of how many parallel middleware have invoked `done` and passes\n control to the target method when ALL parallel middleware have invoked `done`. If\n you pass an `Error` to `done`, then the error is handled, and the main method that is\n wrapped by pres and posts will not get invoked.\n\nWe declare pre middleware that is parallel by passing a 3rd boolean argument to our `pre`\ndefinition method.\n\nWe illustrate via the parallel validation example mentioned above:\n\n Document.hook('save', function targetFn (callback) {\n // Save logic goes here\n // ...\n // This only gets run once the two `done`s are both invoked via preOne and preTwo.\n });\n\n // true marks this as parallel middleware\n Document.pre('save', true, function preOne (next, doneOne, callback) {\n remoteServiceOne.validate(this.serialize(), function (err, isValid) {\n // The code in here will probably be run after the `next` below this block\n // and could possibly be run after the console.log(\"Hola\") in `preTwo\n if (err) return doneOne(err);\n if (isValid) doneOne();\n });\n next(); // Pass control to the next middleware\n });\n \n // We will suppose that we need 2 different remote services to validate our document\n Document.pre('save', true, function preTwo (next, doneTwo, callback) {\n remoteServiceTwo.validate(this.serialize(), function (err, isValid) {\n if (err) return doneTwo(err);\n if (isValid) doneTwo();\n });\n next();\n });\n \n // While preOne and preTwo are parallel, preThree is a serial pre middleware\n Document.pre('save', function preThree (next, callback) {\n next();\n });\n \n var doc = new Document();\n doc.save( function (err, doc) {\n // Do stuff with the saved doc here...\n });\n\nIn the above example, flow control may happen in the following way:\n\n(1) doc.save -> (2) preOne --(next)--> (3) preTwo --(next)--> (4) preThree --(next)--> (wait for dones to invoke) -> (5) doneTwo -> (6) doneOne -> (7) targetFn\n\nSo what's happening is that:\n\n1. You call `doc.save(...)`\n2. First, your preOne middleware gets executed. It makes a remote call to the validation service and `next()`s to the preTwo middleware.\n3. Now, your preTwo middleware gets executed. It makes a remote call to another validation service and `next()`s to the preThree middleware.\n4. Your preThree middleware gets executed. It immediately `next()`s. But nothing else gets executing until both `doneOne` and `doneTwo` are invoked inside the callbacks handling the response from the two valiation services.\n5. We will suppose that validation remoteServiceTwo returns a response to us first. In this case, we call `doneTwo` inside the callback to remoteServiceTwo.\n6. Some fractions of a second later, remoteServiceOne returns a response to us. In this case, we call `doneOne` inside the callback to remoteServiceOne.\n7. `hooks` implementation keeps track of how many parallel middleware has been defined per target function. It detects that both asynchronous pre middlewares (`preOne` and `preTwo`) have finally called their `done` functions (`doneOne` and `doneTwo`), so the implementation finally invokes our `targetFn` (i.e., our core `save` business logic).\n\n## Removing Pres\n\nYou can remove a particular pre associated with a hook:\n\n Document.pre('set', someFn);\n Document.removePre('set', someFn);\n\nAnd you can also remove all pres associated with a hook:\n Document.removePre('set'); // Removes all declared `pre`s on the hook 'set'\n\n## Tests\nTo run the tests:\n make test\n\n### Contributors\n- [Brian Noguchi](https://github.com/bnoguchi)\n\n### License\nMIT License\n\n---\n### Author\nBrian Noguchi\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/bnoguchi/hooks-js/issues" + }, + "_id": "hooks@0.2.1", + "dist": { + "shasum": "71a04e72ae50d0d5bc58f13f29c8f343455cbb23" + }, + "_from": "hooks@0.2.1", + "_resolved": "https://registry.npmjs.org/hooks/-/hooks-0.2.1.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js new file mode 100644 index 0000000..efe2f3e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js @@ -0,0 +1,691 @@ +var hooks = require('./hooks') + , should = require('should') + , assert = require('assert') + , _ = require('underscore'); + +// TODO Add in test for making sure all pres get called if pre is defined directly on an instance. +// TODO Test for calling `done` twice or `next` twice in the same function counts only once +module.exports = { + 'should be able to assign multiple hooks at once': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook({ + hook1: function (a) {}, + hook2: function (b) {} + }); + var a = new A(); + assert.equal(typeof a.hook1, 'function'); + assert.equal(typeof a.hook2, 'function'); + }, + 'should run without pres and posts when not present': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + var a = new A(); + a.save(); + a.value.should.equal(1); + }, + 'should run with pres when present': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.pre('save', function (next) { + this.preValue = 2; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(1); + a.preValue.should.equal(2); + }, + 'should run with posts when present': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.post('save', function (next) { + this.value = 2; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(2); + }, + 'should run pres and posts when present': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.pre('save', function (next) { + this.preValue = 2; + next(); + }); + A.post('save', function (next) { + this.value = 3; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(3); + a.preValue.should.equal(2); + }, + 'should run posts after pres': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.pre('save', function (next) { + this.override = 100; + next(); + }); + A.post('save', function (next) { + this.override = 200; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(1); + a.override.should.equal(200); + }, + 'should not run a hook if a pre fails': function () { + var A = function () {}; + _.extend(A, hooks); + var counter = 0; + A.hook('save', function () { + this.value = 1; + }, function (err) { + counter++; + }); + A.pre('save', true, function (next, done) { + next(new Error()); + }); + var a = new A(); + a.save(); + counter.should.equal(1); + assert.equal(typeof a.value, 'undefined'); + }, + 'should be able to run multiple pres': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.pre('save', function (next) { + this.v1 = 1; + next(); + }).pre('save', function (next) { + this.v2 = 2; + next(); + }); + var a = new A(); + a.save(); + a.v1.should.equal(1); + a.v2.should.equal(2); + }, + 'should run multiple pres until a pre fails and not call the hook': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }, function (err) {}); + A.pre('save', function (next) { + this.v1 = 1; + next(); + }).pre('save', function (next) { + next(new Error()); + }).pre('save', function (next) { + this.v3 = 3; + next(); + }); + var a = new A(); + a.save(); + a.v1.should.equal(1); + assert.equal(typeof a.v3, 'undefined'); + assert.equal(typeof a.value, 'undefined'); + }, + 'should be able to run multiple posts': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.post('save', function (next) { + this.value = 2; + next(); + }).post('save', function (next) { + this.value = 3.14; + next(); + }).post('save', function (next) { + this.v3 = 3; + next(); + }); + var a = new A(); + a.save(); + assert.equal(a.value, 3.14); + assert.equal(a.v3, 3); + }, + 'should run only posts up until an error': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }, function (err) {}); + A.post('save', function (next) { + this.value = 2; + next(); + }).post('save', function (next) { + this.value = 3; + next(new Error()); + }).post('save', function (next) { + this.value = 4; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(3); + }, + "should fall back first to the hook method's last argument as the error handler if it is a function of arity 1 or 2": function () { + var A = function () {}; + _.extend(A, hooks); + var counter = 0; + A.hook('save', function (callback) { + this.value = 1; + }); + A.pre('save', true, function (next, done) { + next(new Error()); + }); + var a = new A(); + a.save( function (err) { + if (err instanceof Error) counter++; + }); + counter.should.equal(1); + should.deepEqual(undefined, a.value); + }, + 'should fall back second to the default error handler if specified': function () { + var A = function () {}; + _.extend(A, hooks); + var counter = 0; + A.hook('save', function (callback) { + this.value = 1; + }, function (err) { + if (err instanceof Error) counter++; + }); + A.pre('save', true, function (next, done) { + next(new Error()); + }); + var a = new A(); + a.save(); + counter.should.equal(1); + should.deepEqual(undefined, a.value); + }, + 'fallback default error handler should scope to the object': function () { + var A = function () { + this.counter = 0; + }; + _.extend(A, hooks); + var counter = 0; + A.hook('save', function (callback) { + this.value = 1; + }, function (err) { + if (err instanceof Error) this.counter++; + }); + A.pre('save', true, function (next, done) { + next(new Error()); + }); + var a = new A(); + a.save(); + a.counter.should.equal(1); + should.deepEqual(undefined, a.value); + }, + 'should fall back last to throwing the error': function () { + var A = function () {}; + _.extend(A, hooks); + var counter = 0; + A.hook('save', function (err) { + if (err instanceof Error) return counter++; + this.value = 1; + }); + A.pre('save', true, function (next, done) { + next(new Error()); + }); + var a = new A(); + var didCatch = false; + try { + a.save(); + } catch (e) { + didCatch = true; + e.should.be.an.instanceof(Error); + counter.should.equal(0); + assert.equal(typeof a.value, 'undefined'); + } + didCatch.should.be.true; + }, + "should proceed without mutating arguments if `next(null|undefined)` is called in a serial pre, and the last argument of the target method is a callback with node-like signature function (err, obj) {...} or function (err) {...}": function () { + var A = function () {}; + _.extend(A, hooks); + var counter = 0; + A.prototype.save = function (callback) { + this.value = 1; + callback(); + }; + A.pre('save', function (next) { + next(null); + }); + A.pre('save', function (next) { + next(undefined); + }); + var a = new A(); + a.save( function (err) { + if (err instanceof Error) counter++; + else counter--; + }); + counter.should.equal(-1); + a.value.should.eql(1); + }, + "should proceed with mutating arguments if `next(null|undefined)` is callback in a serial pre, and the last argument of the target method is not a function": function () { + var A = function () {}; + _.extend(A, hooks); + A.prototype.set = function (v) { + this.value = v; + }; + A.pre('set', function (next) { + next(undefined); + }); + A.pre('set', function (next) { + next(null); + }); + var a = new A(); + a.set(1); + should.strictEqual(null, a.value); + }, + 'should not run any posts if a pre fails': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 2; + }, function (err) {}); + A.pre('save', function (next) { + this.value = 1; + next(new Error()); + }).post('save', function (next) { + this.value = 3; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(1); + }, + + "can pass the hook's arguments verbatim to pres": function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val) { + this[path] = val; + }); + A.pre('set', function (next, path, val) { + path.should.equal('hello'); + val.should.equal('world'); + next(); + }); + var a = new A(); + a.set('hello', 'world'); + a.hello.should.equal('world'); + }, +// "can pass the hook's arguments as an array to pres": function () { +// // Great for dynamic arity - e.g., slice(...) +// var A = function () {}; +// _.extend(A, hooks); +// A.hook('set', function (path, val) { +// this[path] = val; +// }); +// A.pre('set', function (next, hello, world) { +// hello.should.equal('hello'); +// world.should.equal('world'); +// next(); +// }); +// var a = new A(); +// a.set('hello', 'world'); +// assert.equal(a.hello, 'world'); +// }, + "can pass the hook's arguments verbatim to posts": function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val) { + this[path] = val; + }); + A.post('set', function (next, path, val) { + path.should.equal('hello'); + val.should.equal('world'); + next(); + }); + var a = new A(); + a.set('hello', 'world'); + assert.equal(a.hello, 'world'); + }, +// "can pass the hook's arguments as an array to posts": function () { +// var A = function () {}; +// _.extend(A, hooks); +// A.hook('set', function (path, val) { +// this[path] = val; +// }); +// A.post('set', function (next, halt, args) { +// assert.equal(args[0], 'hello'); +// assert.equal(args[1], 'world'); +// next(); +// }); +// var a = new A(); +// a.set('hello', 'world'); +// assert.equal(a.hello, 'world'); +// }, + "pres should be able to modify and pass on a modified version of the hook's arguments": function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val) { + this[path] = val; + assert.equal(arguments[2], 'optional'); + }); + A.pre('set', function (next, path, val) { + next('foo', 'bar'); + }); + A.pre('set', function (next, path, val) { + assert.equal(path, 'foo'); + assert.equal(val, 'bar'); + next('rock', 'says', 'optional'); + }); + A.pre('set', function (next, path, val, opt) { + assert.equal(path, 'rock'); + assert.equal(val, 'says'); + assert.equal(opt, 'optional'); + next(); + }); + var a = new A(); + a.set('hello', 'world'); + assert.equal(typeof a.hello, 'undefined'); + a.rock.should.equal('says'); + }, + 'posts should see the modified version of arguments if the pres modified them': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val) { + this[path] = val; + }); + A.pre('set', function (next, path, val) { + next('foo', 'bar'); + }); + A.post('set', function (next, path, val) { + path.should.equal('foo'); + val.should.equal('bar'); + }); + var a = new A(); + a.set('hello', 'world'); + assert.equal(typeof a.hello, 'undefined'); + a.foo.should.equal('bar'); + }, + 'should pad missing arguments (relative to expected arguments of the hook) with null': function () { + // Otherwise, with hookFn = function (a, b, next, ), + // if we use hookFn(a), then because the pre functions are of the form + // preFn = function (a, b, next, ), then it actually gets executed with + // preFn(a, next, ), so when we call next() from within preFn, we are actually + // calling () + + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val, opts) { + this[path] = val; + }); + A.pre('set', function (next, path, val, opts) { + next('foo', 'bar'); + assert.equal(typeof opts, 'undefined'); + }); + var a = new A(); + a.set('hello', 'world'); + }, + + 'should not invoke the target method until all asynchronous middleware have invoked dones': function () { + var counter = 0; + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val) { + counter++; + this[path] = val; + counter.should.equal(7); + }); + A.pre('set', function (next, path, val) { + counter++; + next(); + }); + A.pre('set', true, function (next, done, path, val) { + counter++; + setTimeout(function () { + counter++; + done(); + }, 1000); + next(); + }); + A.pre('set', function (next, path, val) { + counter++; + next(); + }); + A.pre('set', true, function (next, done, path, val) { + counter++; + setTimeout(function () { + counter++; + done(); + }, 500); + next(); + }); + var a = new A(); + a.set('hello', 'world'); + }, + + 'invoking a method twice should run its async middleware twice': function () { + var counter = 0; + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val) { + this[path] = val; + if (path === 'hello') counter.should.equal(1); + if (path === 'foo') counter.should.equal(2); + }); + A.pre('set', true, function (next, done, path, val) { + setTimeout(function () { + counter++; + done(); + }, 1000); + next(); + }); + var a = new A(); + a.set('hello', 'world'); + a.set('foo', 'bar'); + }, + + 'calling the same done multiple times should have the effect of only calling it once': function () { + var A = function () { + this.acked = false; + }; + _.extend(A, hooks); + A.hook('ack', function () { + console.log("UH OH, YOU SHOULD NOT BE SEEING THIS"); + this.acked = true; + }); + A.pre('ack', true, function (next, done) { + next(); + done(); + done(); + }); + A.pre('ack', true, function (next, done) { + next(); + // Notice that done() is not invoked here + }); + var a = new A(); + a.ack(); + setTimeout( function () { + a.acked.should.be.false; + }, 1000); + }, + + 'calling the same next multiple times should have the effect of only calling it once': function (beforeExit) { + var A = function () { + this.acked = false; + }; + _.extend(A, hooks); + A.hook('ack', function () { + console.log("UH OH, YOU SHOULD NOT BE SEEING THIS"); + this.acked = true; + }); + A.pre('ack', function (next) { + // force a throw to re-exec next() + try { + next(new Error('bam')); + } catch (err) { + next(); + } + }); + A.pre('ack', function (next) { + next(); + }); + var a = new A(); + a.ack(); + beforeExit( function () { + a.acked.should.be.false; + }); + }, + + 'asynchronous middleware should be able to pass an error via `done`, stopping the middleware chain': function () { + var counter = 0; + var A = function () {}; + _.extend(A, hooks); + A.hook('set', function (path, val, fn) { + counter++; + this[path] = val; + fn(null); + }); + A.pre('set', true, function (next, done, path, val, fn) { + setTimeout(function () { + counter++; + done(new Error); + }, 1000); + next(); + }); + var a = new A(); + a.set('hello', 'world', function (err) { + err.should.be.an.instanceof(Error); + should.strictEqual(undefined, a['hello']); + counter.should.eql(1); + }); + }, + + 'should be able to remove a particular pre': function () { + var A = function () {} + , preTwo; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.pre('save', function (next) { + this.preValueOne = 2; + next(); + }); + A.pre('save', preTwo = function (next) { + this.preValueTwo = 4; + next(); + }); + A.removePre('save', preTwo); + var a = new A(); + a.save(); + a.value.should.equal(1); + a.preValueOne.should.equal(2); + should.strictEqual(undefined, a.preValueTwo); + }, + + 'should be able to remove all pres associated with a hook': function () { + var A = function () {}; + _.extend(A, hooks); + A.hook('save', function () { + this.value = 1; + }); + A.pre('save', function (next) { + this.preValueOne = 2; + next(); + }); + A.pre('save', function (next) { + this.preValueTwo = 4; + next(); + }); + A.removePre('save'); + var a = new A(); + a.save(); + a.value.should.equal(1); + should.strictEqual(undefined, a.preValueOne); + should.strictEqual(undefined, a.preValueTwo); + }, + + '#pre should lazily make a method hookable': function () { + var A = function () {}; + _.extend(A, hooks); + A.prototype.save = function () { + this.value = 1; + }; + A.pre('save', function (next) { + this.preValue = 2; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(1); + a.preValue.should.equal(2); + }, + + '#pre lazily making a method hookable should be able to provide a default errorHandler as the last argument': function () { + var A = function () {}; + var preValue = ""; + _.extend(A, hooks); + A.prototype.save = function () { + this.value = 1; + }; + A.pre('save', function (next) { + next(new Error); + }, function (err) { + preValue = 'ERROR'; + }); + var a = new A(); + a.save(); + should.strictEqual(undefined, a.value); + preValue.should.equal('ERROR'); + }, + + '#post should lazily make a method hookable': function () { + var A = function () {}; + _.extend(A, hooks); + A.prototype.save = function () { + this.value = 1; + }; + A.post('save', function (next) { + this.value = 2; + next(); + }); + var a = new A(); + a.save(); + a.value.should.equal(2); + }, + + "a lazy hooks setup should handle errors via a method's last argument, if it's a callback": function () { + var A = function () {}; + _.extend(A, hooks); + A.prototype.save = function (fn) {}; + A.pre('save', function (next) { + next(new Error("hi there")); + }); + var a = new A(); + a.save( function (err) { + err.should.be.an.instanceof(Error); + }); + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml new file mode 100644 index 0000000..0140117 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.10 # development version of 0.8, may be unstable \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md new file mode 100644 index 0000000..2a1c52e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md @@ -0,0 +1,23 @@ +## Contributing to the driver + +### Bugfixes + +- Before starting to write code, look for existing [tickets](https://github.com/mongodb/node-mongodb-native/issues) or [create one](https://github.com/mongodb/node-mongodb-native/issues/new) for your specific issue. That way you avoid working on something that might not be of interest or that has been addressed already in a different branch. +- Fork the [repo](https://github.com/mongodb/node-mongodb-native) _or_ for small documentation changes, navigate to the source on github and click the [Edit](https://github.com/blog/844-forking-with-the-edit-button) button. +- Follow the general coding style of the rest of the project: + - 2 space tabs + - no trailing whitespace + - comma last + - inline documentation for new methods, class members, etc + - 0 space between conditionals/functions, and their parenthesis and curly braces + - `if(..) {` + - `for(..) {` + - `while(..) {` + - `function(err) {` +- Write tests and make sure they pass (execute `make test` from the cmd line to run the test suite). + +### Documentation + +To contribute to the [API documentation](http://mongodb.github.com/node-mongodb-native/) just make your changes to the inline documentation of the appropriate [source code](https://github.com/mongodb/node-mongodb-native/tree/master/docs) in the master branch and submit a [pull request](https://help.github.com/articles/using-pull-requests/). You might also use the github [Edit](https://github.com/blog/844-forking-with-the-edit-button) button. + +If you'd like to preview your documentation changes, first commit your changes to your local master branch, then execute `make generate_docs`. Make sure you have the python documentation framework sphinx installed `easy_install sphinx`. The docs are generated under `docs/build'. If all looks good, submit a [pull request](https://help.github.com/articles/using-pull-requests/) to the master branch with your changes. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile new file mode 100644 index 0000000..59d2bfe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile @@ -0,0 +1,28 @@ +NODE = node +NPM = npm +NODEUNIT = node_modules/nodeunit/bin/nodeunit +DOX = node_modules/dox/bin/dox +name = all + +total: build_native + +test_functional: + node test/runner.js -t functional + +test_ssl: + node test/runner.js -t ssl + +test_replicaset: + node test/runner.js -t replicaset + +test_sharded: + node test/runner.js -t sharded + +test_auth: + node test/runner.js -t auth + +generate_docs: + $(NODE) dev/tools/build-docs.js + make --directory=./docs/sphinx-docs --file=Makefile html + +.PHONY: total diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md new file mode 100644 index 0000000..306fde7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md @@ -0,0 +1,442 @@ +Up to date documentation +======================== + +[Documentation](http://mongodb.github.com/node-mongodb-native/) + +Install +======= + +To install the most recent release from npm, run: + + npm install mongodb + +That may give you a warning telling you that bugs['web'] should be bugs['url'], it would be safe to ignore it (this has been fixed in the development version) + +To install the latest from the repository, run:: + + npm install path/to/node-mongodb-native + +Community +========= +Check out the google group [node-mongodb-native](http://groups.google.com/group/node-mongodb-native) for questions/answers from users of the driver. + +Live Examples +============ + + +Introduction +============ + +This is a node.js driver for MongoDB. It's a port (or close to a port) of the library for ruby at http://github.com/mongodb/mongo-ruby-driver/. + +A simple example of inserting a document. + +```javascript + var client = new Db('test', new Server("127.0.0.1", 27017, {}), {w: 1}), + test = function (err, collection) { + collection.insert({a:2}, function(err, docs) { + + collection.count(function(err, count) { + test.assertEquals(1, count); + }); + + // Locate all the entries using find + collection.find().toArray(function(err, results) { + test.assertEquals(1, results.length); + test.assertTrue(results[0].a === 2); + + // Let's close the db + client.close(); + }); + }); + }; + + client.open(function(err, p_client) { + client.collection('test_insert', test); + }); +``` + +Data types +========== + +To store and retrieve the non-JSON MongoDb primitives ([ObjectID](http://www.mongodb.org/display/DOCS/Object+IDs), Long, Binary, [Timestamp](http://www.mongodb.org/display/DOCS/Timestamp+data+type), [DBRef](http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef), Code). + +In particular, every document has a unique `_id` which can be almost any type, and by default a 12-byte ObjectID is created. ObjectIDs can be represented as 24-digit hexadecimal strings, but you must convert the string back into an ObjectID before you can use it in the database. For example: + +```javascript + // Get the objectID type + var ObjectID = require('mongodb').ObjectID; + + var idString = '4e4e1638c85e808431000003'; + collection.findOne({_id: new ObjectID(idString)}, console.log) // ok + collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined +``` + +Here are the constructors the non-Javascript BSON primitive types: + +```javascript + // Fetch the library + var mongo = require('mongodb'); + // Create new instances of BSON types + new mongo.Long(numberString) + new mongo.ObjectID(hexString) + new mongo.Timestamp() // the actual unique number is generated on insert. + new mongo.DBRef(collectionName, id, dbName) + new mongo.Binary(buffer) // takes a string or Buffer + new mongo.Code(code, [context]) + new mongo.Symbol(string) + new mongo.MinKey() + new mongo.MaxKey() + new mongo.Double(number) // Force double storage +``` + +The C/C++ bson parser/serializer +-------------------------------- + +If you are running a version of this library has the C/C++ parser compiled, to enable the driver to use the C/C++ bson parser pass it the option native_parser:true like below + +```javascript + // using native_parser: + var client = new Db('integration_tests_20', + new Server("127.0.0.1", 27017), + {native_parser:true}); +``` + +The C++ parser uses the js objects both for serialization and deserialization. + +GitHub information +================== + +The source code is available at http://github.com/mongodb/node-mongodb-native. +You can either clone the repository or download a tarball of the latest release. + +Once you have the source you can test the driver by running + + $ make test + +in the main directory. You will need to have a mongo instance running on localhost for the integration tests to pass. + +Examples +======== + +For examples look in the examples/ directory. You can execute the examples using node. + + $ cd examples + $ node queries.js + +GridStore +========= + +The GridStore class allows for storage of binary files in mongoDB using the mongoDB defined files and chunks collection definition. + +For more information have a look at [Gridstore](https://github.com/mongodb/node-mongodb-native/blob/master/docs/gridfs.md) + +Replicasets +=========== +For more information about how to connect to a replicaset have a look at [Replicasets](https://github.com/mongodb/node-mongodb-native/blob/master/docs/replicaset.md) + +Primary Key Factories +--------------------- + +Defining your own primary key factory allows you to generate your own series of id's +(this could f.ex be to use something like ISBN numbers). The generated the id needs to be a 12 byte long "string". + +Simple example below + +```javascript + // Custom factory (need to provide a 12 byte array); + CustomPKFactory = function() {} + CustomPKFactory.prototype = new Object(); + CustomPKFactory.createPk = function() { + return new ObjectID("aaaaaaaaaaaa"); + } + + var p_client = new Db('integration_tests_20', new Server("127.0.0.1", 27017, {}), {'pk':CustomPKFactory}); + p_client.open(function(err, p_client) { + p_client.dropDatabase(function(err, done) { + p_client.createCollection('test_custom_key', function(err, collection) { + collection.insert({'a':1}, function(err, docs) { + collection.find({'_id':new ObjectID("aaaaaaaaaaaa")}, function(err, cursor) { + cursor.toArray(function(err, items) { + test.assertEquals(1, items.length); + + // Let's close the db + p_client.close(); + }); + }); + }); + }); + }); + }); +``` + +Strict mode +----------- + +Each database has an optional strict mode. If it is set then asking for a collection +that does not exist will return an Error object in the callback. Similarly if you +attempt to create a collection that already exists. Strict is provided for convenience. + +```javascript + var error_client = new Db('integration_tests_', new Server("127.0.0.1", 27017, {auto_reconnect: false}), {strict:true}); + test.assertEquals(true, error_client.strict); + + error_client.open(function(err, error_client) { + error_client.collection('does-not-exist', function(err, collection) { + test.assertTrue(err instanceof Error); + test.assertEquals("Collection does-not-exist does not exist. Currently in strict mode.", err.message); + }); + + error_client.createCollection('test_strict_access_collection', function(err, collection) { + error_client.collection('test_strict_access_collection', function(err, collection) { + test.assertTrue(collection instanceof Collection); + // Let's close the db + error_client.close(); + }); + }); + }); +``` + +Documentation +============= + +If this document doesn't answer your questions, see the source of +[Collection](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js) +or [Cursor](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/cursor.js), +or the documentation at MongoDB for query and update formats. + +Find +---- + +The find method is actually a factory method to create +Cursor objects. A Cursor lazily uses the connection the first time +you call `nextObject`, `each`, or `toArray`. + +The basic operation on a cursor is the `nextObject` method +that fetches the next matching document from the database. The convenience +methods `each` and `toArray` call `nextObject` until the cursor is exhausted. + +Signatures: + +```javascript + var cursor = collection.find(query, [fields], options); + cursor.sort(fields).limit(n).skip(m). + + cursor.nextObject(function(err, doc) {}); + cursor.each(function(err, doc) {}); + cursor.toArray(function(err, docs) {}); + + cursor.rewind() // reset the cursor to its initial state. +``` + +Useful chainable methods of cursor. These can optionally be options of `find` instead of method calls: + +* `.limit(n).skip(m)` to control paging. +* `.sort(fields)` Order by the given fields. There are several equivalent syntaxes: + * `.sort({field1: -1, field2: 1})` descending by field1, then ascending by field2. + * `.sort([['field1', 'desc'], ['field2', 'asc']])` same as above + * `.sort([['field1', 'desc'], 'field2'])` same as above + * `.sort('field1')` ascending by field1 + +Other options of `find`: + +* `fields` the fields to fetch (to avoid transferring the entire document) +* `tailable` if true, makes the cursor [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors). +* `batchSize` The number of the subset of results to request the database +to return for every request. This should initially be greater than 1 otherwise +the database will automatically close the cursor. The batch size can be set to 1 +with `batchSize(n, function(err){})` after performing the initial query to the database. +* `hint` See [Optimization: hint](http://www.mongodb.org/display/DOCS/Optimization#Optimization-Hint). +* `explain` turns this into an explain query. You can also call +`explain()` on any cursor to fetch the explanation. +* `snapshot` prevents documents that are updated while the query is active +from being returned multiple times. See more +[details about query snapshots](http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database). +* `timeout` if false, asks MongoDb not to time out this cursor after an +inactivity period. + + +For information on how to create queries, see the +[MongoDB section on querying](http://www.mongodb.org/display/DOCS/Querying). + +```javascript + var mongodb = require('mongodb'); + var server = new mongodb.Server("127.0.0.1", 27017, {}); + new mongodb.Db('test', server, {}).open(function (error, client) { + if (error) throw error; + var collection = new mongodb.Collection(client, 'test_collection'); + collection.find({}, {limit:10}).toArray(function(err, docs) { + console.dir(docs); + }); + }); +``` + +Insert +------ + +Signature: + +```javascript + collection.insert(docs, options, [callback]); +``` + +where `docs` can be a single document or an array of documents. + +Useful options: + +* `safe:true` Should always set if you have a callback. + +See also: [MongoDB docs for insert](http://www.mongodb.org/display/DOCS/Inserting). + +```javascript + var mongodb = require('mongodb'); + var server = new mongodb.Server("127.0.0.1", 27017, {}); + new mongodb.Db('test', server, {w: 1}).open(function (error, client) { + if (error) throw error; + var collection = new mongodb.Collection(client, 'test_collection'); + collection.insert({hello: 'world'}, {safe:true}, + function(err, objects) { + if (err) console.warn(err.message); + if (err && err.message.indexOf('E11000 ') !== -1) { + // this _id was already inserted in the database + } + }); + }); +``` + +Note that there's no reason to pass a callback to the insert or update commands +unless you use the `safe:true` option. If you don't specify `safe:true`, then +your callback will be called immediately. + +Update; update and insert (upsert) +---------------------------------- + +The update operation will update the first document that matches your query +(or all documents that match if you use `multi:true`). +If `safe:true`, `upsert` is not set, and no documents match, your callback will return 0 documents updated. + +See the [MongoDB docs](http://www.mongodb.org/display/DOCS/Updating) for +the modifier (`$inc`, `$set`, `$push`, etc.) formats. + +Signature: + +```javascript + collection.update(criteria, objNew, options, [callback]); +``` + +Useful options: + +* `safe:true` Should always set if you have a callback. +* `multi:true` If set, all matching documents are updated, not just the first. +* `upsert:true` Atomically inserts the document if no documents matched. + +Example for `update`: + +```javascript + var mongodb = require('mongodb'); + var server = new mongodb.Server("127.0.0.1", 27017, {}); + new mongodb.Db('test', server, {w: 1}).open(function (error, client) { + if (error) throw error; + var collection = new mongodb.Collection(client, 'test_collection'); + collection.update({hi: 'here'}, {$set: {hi: 'there'}}, {safe:true}, + function(err) { + if (err) console.warn(err.message); + else console.log('successfully updated'); + }); + }); +``` + +Find and modify +--------------- + +`findAndModify` is like `update`, but it also gives the updated document to +your callback. But there are a few key differences between findAndModify and +update: + + 1. The signatures differ. + 2. You can only findAndModify a single item, not multiple items. + +Signature: + +```javascript + collection.findAndModify(query, sort, update, options, callback) +``` + +The sort parameter is used to specify which object to operate on, if more than +one document matches. It takes the same format as the cursor sort (see +Connection.find above). + +See the +[MongoDB docs for findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) +for more details. + +Useful options: + +* `remove:true` set to a true to remove the object before returning +* `new:true` set to true if you want to return the modified object rather than the original. Ignored for remove. +* `upsert:true` Atomically inserts the document if no documents matched. + +Example for `findAndModify`: + +```javascript + var mongodb = require('mongodb'); + var server = new mongodb.Server("127.0.0.1", 27017, {}); + new mongodb.Db('test', server, {w: 1}).open(function (error, client) { + if (error) throw error; + var collection = new mongodb.Collection(client, 'test_collection'); + collection.findAndModify({hello: 'world'}, [['_id','asc']], {$set: {hi: 'there'}}, {}, + function(err, object) { + if (err) console.warn(err.message); + else console.dir(object); // undefined if no matching object exists. + }); + }); +``` + +Save +---- + +The `save` method is a shorthand for upsert if the document contains an +`_id`, or an insert if there is no `_id`. + +Sponsors +======== +Just as Felix Geisendörfer I'm also working on the driver for my own startup and this driver is a big project that also benefits other companies who are using MongoDB. + +If your company could benefit from a even better-engineered node.js mongodb driver I would appreciate any type of sponsorship you may be able to provide. All the sponsors will get a lifetime display in this readme, priority support and help on problems and votes on the roadmap decisions for the driver. If you are interested contact me on [christkv AT g m a i l.com](mailto:christkv@gmail.com) for details. + +And I'm very thankful for code contributions. If you are interested in working on features please contact me so we can discuss API design and testing. + +Release Notes +============= + +See HISTORY + +Credits +======= + +1. [10gen](http://github.com/mongodb/mongo-ruby-driver/) +2. [Google Closure Library](http://code.google.com/closure/library/) +3. [Jonas Raoni Soares Silva](http://jsfromhell.com/classes/binary-parser) + +Contributors +============ + +Aaron Heckmann, Christoph Pojer, Pau Ramon Revilla, Nathan White, Emmerman, Seth LaForge, Boris Filipov, Stefan Schärmeli, Tedde Lundgren, renctan, Sergey Ukustov, Ciaran Jessup, kuno, srimonti, Erik Abele, Pratik Daga, Slobodan Utvic, Kristina Chodorow, Yonathan Randolph, Brian Noguchi, Sam Epstein, James Harrison Fisher, Vladimir Dronnikov, Ben Hockey, Henrik Johansson, Simon Weare, Alex Gorbatchev, Shimon Doodkin, Kyle Mueller, Eran Hammer-Lahav, Marcin Ciszak, François de Metz, Vinay Pulim, nstielau, Adam Wiggins, entrinzikyl, Jeremy Selier, Ian Millington, Public Keating, andrewjstone, Christopher Stott, Corey Jewett, brettkiefer, Rob Holland, Senmiao Liu, heroic, gitfy + +License +======= + + Copyright 2009 - 2012 Christian Amor Kvalheim. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js new file mode 100644 index 0000000..4f59e9d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/mongodb'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js new file mode 100644 index 0000000..f9f2a57 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js @@ -0,0 +1,40 @@ +var spawn = require('child_process').spawn, + exec = require('child_process').exec; + +process.stdout.write("================================================================================\n"); +process.stdout.write("= =\n"); +process.stdout.write("= To install with C++ bson parser do =\n"); +process.stdout.write("= =\n"); +process.stdout.write("================================================================================\n"); + +// Check if we want to build the native code +var build_native = process.env['npm_package_config_native'] != null ? process.env['npm_package_config_native'] : 'false'; +build_native = build_native == 'true' ? true : false; +// If we are building the native bson extension ensure we use gmake if available +if(build_native) { + // Check if we need to use gmake + exec('which gmake', function(err, stdout, stderr) { + // Set up spawn command + var make = null; + // No gmake build using make + if(err != null) { + make = spawn('make', ['total']); + } else { + make = spawn('gmake', ['total']); + } + + // Execute spawn + make.stdout.on('data', function(data) { + process.stdout.write(data); + }) + + make.stderr.on('data', function(data) { + process.stdout.write(data); + }) + + make.on('exit', function(code) { + process.stdout.write('child process exited with code ' + code + "\n"); + }) + }); +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js new file mode 100644 index 0000000..6e9cd30 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js @@ -0,0 +1,339 @@ +/*! + * Module dependencies. + */ +var Collection = require('./collection').Collection, + Cursor = require('./cursor').Cursor, + DbCommand = require('./commands/db_command').DbCommand, + utils = require('./utils'); + +/** + * Allows the user to access the admin functionality of MongoDB + * + * @class Represents the Admin methods of MongoDB. + * @param {Object} db Current db instance we wish to perform Admin operations on. + * @return {Function} Constructor for Admin type. + */ +function Admin(db) { + if(!(this instanceof Admin)) return new Admin(db); + this.db = db; +}; + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from buildInfo or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.buildInfo = function(callback) { + this.serverInfo(callback); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from serverInfo or null if an error occured. + * @return {null} Returns no result + * @api private + */ +Admin.prototype.serverInfo = function(callback) { + this.db.executeDbAdminCommand({buildinfo:1}, function(err, doc) { + if(err != null) return callback(err, null); + return callback(null, doc.documents[0]); + }); +} + +/** + * Retrieve this db's server status. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from serverStatus or null if an error occured. + * @return {null} + * @api public + */ +Admin.prototype.serverStatus = function(callback) { + var self = this; + + this.db.executeDbAdminCommand({serverStatus: 1}, function(err, doc) { + if(err == null && doc.documents[0].ok === 1) { + callback(null, doc.documents[0]); + } else { + if(err) return callback(err, false); + return callback(utils.toError(doc.documents[0]), false); + } + }); +}; + +/** + * Retrieve the current profiling Level for MongoDB + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from profilingLevel or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.profilingLevel = function(callback) { + var self = this; + + this.db.executeDbAdminCommand({profile:-1}, function(err, doc) { + doc = doc.documents[0]; + + if(err == null && doc.ok === 1) { + var was = doc.was; + if(was == 0) return callback(null, "off"); + if(was == 1) return callback(null, "slow_only"); + if(was == 2) return callback(null, "all"); + return callback(new Error("Error: illegal profiling level value " + was), null); + } else { + err != null ? callback(err, null) : callback(new Error("Error with profile command"), null); + } + }); +}; + +/** + * Ping the MongoDB server and retrieve results + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from ping or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.ping = function(options, callback) { + // Unpack calls + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + + this.db.executeDbAdminCommand({ping: 1}, callback); +} + +/** + * Authenticate against MongoDB + * + * @param {String} username The user name for the authentication. + * @param {String} password The password for the authentication. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from authenticate or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.authenticate = function(username, password, callback) { + this.db.authenticate(username, password, {authdb: 'admin'}, function(err, doc) { + return callback(err, doc); + }) +} + +/** + * Logout current authenticated user + * + * @param {Object} [options] Optional parameters to the command. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from logout or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.logout = function(callback) { + this.db.logout({authdb: 'admin'}, function(err, doc) { + return callback(err, doc); + }) +} + +/** + * Add a user to the MongoDB server, if the user exists it will + * overwrite the current password + * + * Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {String} username The user name for the authentication. + * @param {String} password The password for the authentication. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from addUser or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.addUser = function(username, password, options, callback) { + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + options = args.length ? args.shift() : {}; + + options.dbName = 'admin'; + // Add user + this.db.addUser(username, password, options, function(err, doc) { + return callback(err, doc); + }) +} + +/** + * Remove a user from the MongoDB server + * + * Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {String} username The user name for the authentication. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from removeUser or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.removeUser = function(username, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() : {}; + options.dbName = 'admin'; + + this.db.removeUser(username, options, function(err, doc) { + return callback(err, doc); + }) +} + +/** + * Set the current profiling level of MongoDB + * + * @param {String} level The new profiling level (off, slow_only, all) + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from setProfilingLevel or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.setProfilingLevel = function(level, callback) { + var self = this; + var command = {}; + var profile = 0; + + if(level == "off") { + profile = 0; + } else if(level == "slow_only") { + profile = 1; + } else if(level == "all") { + profile = 2; + } else { + return callback(new Error("Error: illegal profiling level value " + level)); + } + + // Set up the profile number + command['profile'] = profile; + + this.db.executeDbAdminCommand(command, function(err, doc) { + doc = doc.documents[0]; + + if(err == null && doc.ok === 1) + return callback(null, level); + return err != null ? callback(err, null) : callback(new Error("Error with profile command"), null); + }); +}; + +/** + * Retrive the current profiling information for MongoDB + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from profilingInfo or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.profilingInfo = function(callback) { + try { + new Cursor(this.db, new Collection(this.db, DbCommand.SYSTEM_PROFILE_COLLECTION), {}, {}, {dbName: 'admin'}).toArray(function(err, items) { + return callback(err, items); + }); + } catch (err) { + return callback(err, null); + } +}; + +/** + * Execute a db command against the Admin database + * + * @param {Object} command A command object `{ping:1}`. + * @param {Object} [options] Optional parameters to the command. + * @param {Function} callback this will be called after executing this method. The command always return the whole result of the command as the second parameter. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.command = function(command, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() : {}; + + // Execute a command + this.db.executeDbAdminCommand(command, options, function(err, doc) { + // Ensure change before event loop executes + return callback != null ? callback(err, doc) : null; + }); +} + +/** + * Validate an existing collection + * + * @param {String} collectionName The name of the collection to validate. + * @param {Object} [options] Optional parameters to the command. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from validateCollection or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.validateCollection = function(collectionName, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() : {}; + + var self = this; + var command = {validate: collectionName}; + var keys = Object.keys(options); + + // Decorate command with extra options + for(var i = 0; i < keys.length; i++) { + if(options.hasOwnProperty(keys[i])) { + command[keys[i]] = options[keys[i]]; + } + } + + this.db.executeDbCommand(command, function(err, doc) { + if(err != null) return callback(err, null); + doc = doc.documents[0]; + + if(doc.ok === 0) + return callback(new Error("Error with validate command"), null); + if(doc.result != null && doc.result.constructor != String) + return callback(new Error("Error with validation data"), null); + if(doc.result != null && doc.result.match(/exception|corrupt/) != null) + return callback(new Error("Error: invalid collection " + collectionName), null); + if(doc.valid != null && !doc.valid) + return callback(new Error("Error: invalid collection " + collectionName), null); + + return callback(null, doc); + }); +}; + +/** + * List the available databases + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from listDatabases or null if an error occured. + * @return {null} Returns no result + * @api public + */ +Admin.prototype.listDatabases = function(callback) { + // Execute the listAllDatabases command + this.db.executeDbAdminCommand({listDatabases:1}, {}, function(err, doc) { + if(err != null) return callback(err, null); + return callback(null, doc.documents[0]); + }); +} + +/** + * Get ReplicaSet status + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from replSetGetStatus or null if an error occured. + * @return {null} + * @api public + */ +Admin.prototype.replSetGetStatus = function(callback) { + var self = this; + + this.db.executeDbAdminCommand({replSetGetStatus:1}, function(err, doc) { + if(err == null && doc.documents[0].ok === 1) + return callback(null, doc.documents[0]); + if(err) return callback(err, false); + return callback(utils.toError(doc.documents[0]), false); + }); +}; + +/** + * @ignore + */ +exports.Admin = Admin; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js new file mode 100644 index 0000000..51b09b1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js @@ -0,0 +1,53 @@ +var DbCommand = require('../commands/db_command').DbCommand + , utils = require('../utils'); + +var authenticate = function(db, username, password, authdb, options, callback) { + var numberOfConnections = 0; + var errorObject = null; + + if(options['connection'] != null) { + //if a connection was explicitly passed on options, then we have only one... + numberOfConnections = 1; + } else { + // Get the amount of connections in the pool to ensure we have authenticated all comments + numberOfConnections = db.serverConfig.allRawConnections().length; + options['onAll'] = true; + } + + // Execute all four + db._executeQueryCommand(DbCommand.createGetNonceCommand(db), options, function(err, result, connection) { + // Execute on all the connections + if(err == null) { + // Nonce used to make authentication request with md5 hash + var nonce = result.documents[0].nonce; + // Execute command + db._executeQueryCommand(DbCommand.createAuthenticationCommand(db, username, password, nonce, authdb), {connection:connection}, function(err, result) { + // Count down + numberOfConnections = numberOfConnections - 1; + // Ensure we save any error + if(err) { + errorObject = err; + } else if(result.documents[0].err != null || result.documents[0].errmsg != null){ + errorObject = utils.toError(result.documents[0]); + } + + // Work around the case where the number of connections are 0 + if(numberOfConnections <= 0 && typeof callback == 'function') { + var internalCallback = callback; + callback = null; + + if(errorObject == null && result.documents[0].ok == 1) { + // We authenticated correctly save the credentials + db.serverConfig.auth.add('MONGODB-CR', db.databaseName, username, password, authdb); + // Return callback + internalCallback(errorObject, true); + } else { + internalCallback(errorObject, false); + } + } + }); + } + }); +} + +exports.authenticate = authenticate; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js new file mode 100644 index 0000000..f41cd5d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js @@ -0,0 +1,148 @@ +var DbCommand = require('../commands/db_command').DbCommand + , utils = require('../utils') + , format = require('util').format; + +// Kerberos class +var Kerberos = null; +var MongoAuthProcess = null; +// Try to grab the Kerberos class +try { + Kerberos = require('kerberos').Kerberos + // Authentication process for Mongo + MongoAuthProcess = require('kerberos').processes.MongoAuthProcess +} catch(err) {} + +var authenticate = function(db, username, password, authdb, options, callback) { + var numberOfConnections = 0; + var errorObject = null; + // We don't have the Kerberos library + if(Kerberos == null) return callback(new Error("Kerberos library is not installed")); + + if(options['connection'] != null) { + //if a connection was explicitly passed on options, then we have only one... + numberOfConnections = 1; + } else { + // Get the amount of connections in the pool to ensure we have authenticated all comments + numberOfConnections = db.serverConfig.allRawConnections().length; + options['onAll'] = true; + } + + // Grab all the connections + var connections = options['connection'] != null ? [options['connection']] : db.serverConfig.allRawConnections(); + var error = null; + // Authenticate all connections + for(var i = 0; i < numberOfConnections; i++) { + + // Start Auth process for a connection + GSSAPIInitialize(db, username, password, authdb, connections[i], function(err, result) { + // Adjust number of connections left to connect + numberOfConnections = numberOfConnections - 1; + // If we have an error save it + if(err) error = err; + + // We are done + if(numberOfConnections == 0) { + if(err) return callback(error, false); + // We authenticated correctly save the credentials + db.serverConfig.auth.add('GSSAPI', db.databaseName, username, password, authdb); + // Return valid callback + return callback(null, true); + } + }); + } +} + +// +// Initialize step +var GSSAPIInitialize = function(db, username, password, authdb, connection, callback) { + // Create authenticator + var mongo_auth_process = new MongoAuthProcess(connection.socketOptions.host, connection.socketOptions.port); + + // Perform initialization + mongo_auth_process.init(username, password, function(err, context) { + if(err) return callback(err, false); + + // Perform the first step + mongo_auth_process.transition('', function(err, payload) { + if(err) return callback(err, false); + + // Call the next db step + MongoDBGSSAPIFirstStep(mongo_auth_process, payload, db, username, password, authdb, connection, callback); + }); + }); +} + +// +// Perform first step against mongodb +var MongoDBGSSAPIFirstStep = function(mongo_auth_process, payload, db, username, password, authdb, connection, callback) { + // Build the sasl start command + var command = { + saslStart: 1 + , mechanism: 'GSSAPI' + , payload: payload + , autoAuthorize: 1 + }; + + // Execute first sasl step + db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { + if(err) return callback(err, false); + // Get the payload + doc = doc.documents[0]; + var db_payload = doc.payload; + + mongo_auth_process.transition(doc.payload, function(err, payload) { + if(err) return callback(err, false); + + // MongoDB API Second Step + MongoDBGSSAPISecondStep(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback); + }); + }); +} + +// +// Perform first step against mongodb +var MongoDBGSSAPISecondStep = function(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback) { + // Build Authentication command to send to MongoDB + var command = { + saslContinue: 1 + , conversationId: doc.conversationId + , payload: payload + }; + + // Execute the command + db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { + if(err) return callback(err, false); + + // Get the result document + doc = doc.documents[0]; + + // Call next transition for kerberos + mongo_auth_process.transition(doc.payload, function(err, payload) { + if(err) return callback(err, false); + + // Call the last and third step + MongoDBGSSAPIThirdStep(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback); + }); + }); +} + +var MongoDBGSSAPIThirdStep = function(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback) { + // Build final command + var command = { + saslContinue: 1 + , conversationId: doc.conversationId + , payload: payload + }; + + // Let's finish the auth process against mongodb + db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { + if(err) return callback(err, false); + + mongo_auth_process.transition(null, function(err, payload) { + if(err) return callback(err, false); + callback(null, true); + }); + }); +} + +exports.authenticate = authenticate; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js new file mode 100644 index 0000000..1990efd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js @@ -0,0 +1,134 @@ +var DbCommand = require('../commands/db_command').DbCommand + , utils = require('../utils') + , format = require('util').format; + +// Kerberos class +var Kerberos = null; +var MongoAuthProcess = null; +// Try to grab the Kerberos class +try { + Kerberos = require('kerberos').Kerberos + // Authentication process for Mongo + MongoAuthProcess = require('kerberos').processes.MongoAuthProcess +} catch(err) {} + +var authenticate = function(db, username, password, authdb, options, callback) { + var numberOfConnections = 0; + var errorObject = null; + // We don't have the Kerberos library + if(Kerberos == null) return callback(new Error("Kerberos library is not installed")); + + if(options['connection'] != null) { + //if a connection was explicitly passed on options, then we have only one... + numberOfConnections = 1; + } else { + // Get the amount of connections in the pool to ensure we have authenticated all comments + numberOfConnections = db.serverConfig.allRawConnections().length; + options['onAll'] = true; + } + + var connection = db.serverConfig.allRawConnections()[0]; + + // Grab all the connections + var connections = db.serverConfig.allRawConnections(); + var error = null; + + // Authenticate all connections + for(var i = 0; i < numberOfConnections; i++) { + // Start Auth process for a connection + SSIPAuthenticate(db, username, password, authdb, connections[i], function(err, result) { + // Adjust number of connections left to connect + numberOfConnections = numberOfConnections - 1; + // If we have an error save it + if(err) error = err; + + // We are done + if(numberOfConnections == 0) { + if(err) return callback(err, false); + // We authenticated correctly save the credentials + db.serverConfig.auth.add('GSSAPI', db.databaseName, username, password, authdb); + // Return valid callback + return callback(null, true); + } + }); + } +} + +var SSIPAuthenticate = function(db, username, password, authdb, connection, callback) { + // -------------------------------------------------------------- + // Async Version + // -------------------------------------------------------------- + var command = { + saslStart: 1 + , mechanism: 'GSSAPI' + , payload: '' + , autoAuthorize: 1 + }; + + // Create authenticator + var mongo_auth_process = new MongoAuthProcess(connection.socketOptions.host, connection.socketOptions.port); + + // Execute first sasl step + db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { + if(err) return callback(err); + doc = doc.documents[0]; + + mongo_auth_process.init(username, password, function(err) { + if(err) return callback(err); + + mongo_auth_process.transition(doc.payload, function(err, payload) { + if(err) return callback(err); + + // Perform the next step against mongod + var command = { + saslContinue: 1 + , conversationId: doc.conversationId + , payload: payload + }; + + // Execute the command + db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { + if(err) return callback(err); + doc = doc.documents[0]; + + mongo_auth_process.transition(doc.payload, function(err, payload) { + if(err) return callback(err); + + // Perform the next step against mongod + var command = { + saslContinue: 1 + , conversationId: doc.conversationId + , payload: payload + }; + + // Execute the command + db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { + if(err) return callback(err); + doc = doc.documents[0]; + + mongo_auth_process.transition(doc.payload, function(err, payload) { + // Perform the next step against mongod + var command = { + saslContinue: 1 + , conversationId: doc.conversationId + , payload: payload + }; + + // Execute the command + db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { + if(err) return callback(err); + doc = doc.documents[0]; + + if(doc.done) return callback(null, true); + callback(new Error("Authentication failed"), false); + }); + }); + }); + }); + }); + }); + }); + }); +} + +exports.authenticate = authenticate; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js new file mode 100644 index 0000000..7b3938b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js @@ -0,0 +1,1764 @@ +/** + * Module dependencies. + * @ignore + */ +var InsertCommand = require('./commands/insert_command').InsertCommand + , QueryCommand = require('./commands/query_command').QueryCommand + , DeleteCommand = require('./commands/delete_command').DeleteCommand + , UpdateCommand = require('./commands/update_command').UpdateCommand + , DbCommand = require('./commands/db_command').DbCommand + , ObjectID = require('bson').ObjectID + , Code = require('bson').Code + , Cursor = require('./cursor').Cursor + , utils = require('./utils'); + +/** + * Precompiled regexes + * @ignore +**/ +const eErrorMessages = /No matching object found/; + +/** + * toString helper. + * @ignore + */ +var toString = Object.prototype.toString; + +/** + * Create a new Collection instance (INTERNAL TYPE) + * + * Options + * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + * - **slaveOk** {Boolean, default:false}, Allow reads from secondaries. + * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. + * - **raw** {Boolean, default:false}, perform all operations using raw bson objects. + * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. + * + * @class Represents a Collection + * @param {Object} db db instance. + * @param {String} collectionName collection name. + * @param {Object} [pkFactory] alternative primary key factory. + * @param {Object} [options] additional options for the collection. + * @return {Object} a collection instance. + */ +function Collection (db, collectionName, pkFactory, options) { + if(!(this instanceof Collection)) return new Collection(db, collectionName, pkFactory, options); + + checkCollectionName(collectionName); + + this.db = db; + this.collectionName = collectionName; + this.internalHint = null; + this.opts = options != null && ('object' === typeof options) ? options : {}; + this.slaveOk = options == null || options.slaveOk == null ? db.slaveOk : options.slaveOk; + this.serializeFunctions = options == null || options.serializeFunctions == null ? db.serializeFunctions : options.serializeFunctions; + this.raw = options == null || options.raw == null ? db.raw : options.raw; + + this.readPreference = options == null || options.readPreference == null ? db.serverConfig.options.readPreference : options.readPreference; + this.readPreference = this.readPreference == null ? 'primary' : this.readPreference; + + this.pkFactory = pkFactory == null + ? ObjectID + : pkFactory; + + var self = this; +} + +/** + * Inserts a single document or a an array of documents into MongoDB. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **continueOnError/keepGoing** {Boolean, default:false}, keep inserting documents even if one document has an error, *mongodb 1.9.1 >*. + * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Array|Object} docs + * @param {Object} [options] optional options for insert command + * @param {Function} [callback] optional callback for the function, must be provided when using a writeconcern + * @return {null} + * @api public + */ +Collection.prototype.insert = function insert (docs, options, callback) { + if ('function' === typeof options) callback = options, options = {}; + if(options == null) options = {}; + if(!('function' === typeof callback)) callback = null; + var self = this; + insertAll(self, Array.isArray(docs) ? docs : [docs], options, callback); + return this; +}; + +/** + * @ignore + */ +var checkCollectionName = function checkCollectionName (collectionName) { + if ('string' !== typeof collectionName) { + throw Error("collection name must be a String"); + } + + if (!collectionName || collectionName.indexOf('..') != -1) { + throw Error("collection names cannot be empty"); + } + + if (collectionName.indexOf('$') != -1 && + collectionName.match(/((^\$cmd)|(oplog\.\$main))/) == null) { + throw Error("collection names must not contain '$'"); + } + + if (collectionName.match(/^\.|\.$/) != null) { + throw Error("collection names must not start or end with '.'"); + } +}; + +/** + * Removes documents specified by `selector` from the db. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **single** {Boolean, default:false}, removes the first document found. + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Object} [selector] optional select, no selector is equivalent to removing all documents. + * @param {Object} [options] additional options during remove. + * @param {Function} [callback] must be provided if you performing a remove with a writeconcern + * @return {null} + * @api public + */ +Collection.prototype.remove = function remove(selector, options, callback) { + if ('function' === typeof selector) { + callback = selector; + selector = options = {}; + } else if ('function' === typeof options) { + callback = options; + options = {}; + } + + // Ensure options + if(options == null) options = {}; + if(!('function' === typeof callback)) callback = null; + // Ensure we have at least an empty selector + selector = selector == null ? {} : selector; + // Set up flags for the command, if we have a single document remove + var flags = 0 | (options.single ? 1 : 0); + + // DbName + var dbName = options['dbName']; + // If no dbname defined use the db one + if(dbName == null) { + dbName = this.db.databaseName; + } + + // Create a delete command + var deleteCommand = new DeleteCommand( + this.db + , dbName + "." + this.collectionName + , selector + , flags); + + var self = this; + var errorOptions = _getWriteConcern(self, options, callback); + // Execute the command, do not add a callback as it's async + if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { + // Insert options + var commandOptions = {read:false}; + // If we have safe set set async to false + if(errorOptions == null) commandOptions['async'] = true; + // Set safe option + commandOptions['safe'] = true; + // If we have an error option + if(typeof errorOptions == 'object') { + var keys = Object.keys(errorOptions); + for(var i = 0; i < keys.length; i++) { + commandOptions[keys[i]] = errorOptions[keys[i]]; + } + } + + // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection) + this.db._executeRemoveCommand(deleteCommand, commandOptions, function (err, error) { + error = error && error.documents; + if(!callback) return; + + if(err) { + callback(err); + } else if(error[0].err || error[0].errmsg) { + callback(utils.toError(error[0])); + } else { + callback(null, error[0].n); + } + }); + } else if(_hasWriteConcern(errorOptions) && callback == null) { + throw new Error("Cannot use a writeConcern without a provided callback"); + } else { + var result = this.db._executeRemoveCommand(deleteCommand); + // If no callback just return + if (!callback) return; + // If error return error + if (result instanceof Error) { + return callback(result); + } + // Otherwise just return + return callback(); + } +}; + +/** + * Renames the collection. + * + * Options + * - **dropTarget** {Boolean, default:false}, drop the target name collection if it previously exists. + * + * @param {String} newName the new name of the collection. + * @param {Object} [options] returns option results. + * @param {Function} callback the callback accepting the result + * @return {null} + * @api public + */ +Collection.prototype.rename = function rename (newName, options, callback) { + var self = this; + + if(typeof options == 'function') { + callback = options; + options = {} + } + + // Ensure the new name is valid + checkCollectionName(newName); + // Execute the command, return the new renamed collection if successful + self.db._executeQueryCommand(DbCommand.createRenameCollectionCommand(self.db, self.collectionName, newName, options), function(err, result) { + if(err == null && result.documents[0].ok == 1) { + if(callback != null) { + // Set current object to point to the new name + self.collectionName = newName; + // Return the current collection + callback(null, self); + } + } else if(result.documents[0].errmsg != null) { + if(null != callback) { + if (null == err) { + err = utils.toError(result.documents[0]); + } + callback(err, null); + } + } + }); +}; + +/** + * @ignore + */ +var insertAll = function insertAll (self, docs, options, callback) { + if('function' === typeof options) callback = options, options = {}; + if(options == null) options = {}; + if(!('function' === typeof callback)) callback = null; + + // Insert options (flags for insert) + var insertFlags = {}; + // If we have a mongodb version >= 1.9.1 support keepGoing attribute + if(options['keepGoing'] != null) { + insertFlags['keepGoing'] = options['keepGoing']; + } + + // If we have a mongodb version >= 1.9.1 support keepGoing attribute + if(options['continueOnError'] != null) { + insertFlags['continueOnError'] = options['continueOnError']; + } + + // DbName + var dbName = options['dbName']; + // If no dbname defined use the db one + if(dbName == null) { + dbName = self.db.databaseName; + } + + // Either use override on the function, or go back to default on either the collection + // level or db + if(options['serializeFunctions'] != null) { + insertFlags['serializeFunctions'] = options['serializeFunctions']; + } else { + insertFlags['serializeFunctions'] = self.serializeFunctions; + } + + // Pass in options + var insertCommand = new InsertCommand( + self.db + , dbName + "." + self.collectionName, true, insertFlags); + + // Add the documents and decorate them with id's if they have none + for(var index = 0, len = docs.length; index < len; ++index) { + var doc = docs[index]; + + // Add id to each document if it's not already defined + if (!(Buffer.isBuffer(doc)) && doc['_id'] == null && self.db.forceServerObjectId != true) { + doc['_id'] = self.pkFactory.createPk(); + } + + insertCommand.add(doc); + } + + // Collect errorOptions + var errorOptions = _getWriteConcern(self, options, callback); + // Default command options + var commandOptions = {}; + // If safe is defined check for error message + if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { + // Insert options + commandOptions['read'] = false; + // If we have safe set set async to false + if(errorOptions == null) commandOptions['async'] = true; + + // Set safe option + commandOptions['safe'] = errorOptions; + // If we have an error option + if(typeof errorOptions == 'object') { + var keys = Object.keys(errorOptions); + for(var i = 0; i < keys.length; i++) { + commandOptions[keys[i]] = errorOptions[keys[i]]; + } + } + + // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection) + self.db._executeInsertCommand(insertCommand, commandOptions, function (err, error) { + error = error && error.documents; + if(!callback) return; + + if (err) { + callback(err); + } else if(error[0].err || error[0].errmsg) { + callback(utils.toError(error[0])); + } else { + callback(null, docs); + } + }); + } else if(_hasWriteConcern(errorOptions) && callback == null) { + throw new Error("Cannot use a writeConcern without a provided callback"); + } else { + // Execute the call without a write concern + var result = self.db._executeInsertCommand(insertCommand, commandOptions); + // If no callback just return + if(!callback) return; + // If error return error + if(result instanceof Error) { + return callback(result); + } + // Otherwise just return + return callback(null, docs); + } +}; + +/** + * Save a document. Simple full document replacement function. Not recommended for efficiency, use atomic + * operators and update instead for more efficient operations. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Object} [doc] the document to save + * @param {Object} [options] additional options during remove. + * @param {Function} [callback] must be provided if you performing a safe save + * @return {null} + * @api public + */ +Collection.prototype.save = function save(doc, options, callback) { + if('function' === typeof options) callback = options, options = null; + if(options == null) options = {}; + if(!('function' === typeof callback)) callback = null; + // Throw an error if attempting to perform a bulk operation + if(Array.isArray(doc)) throw new Error("doc parameter must be a single document"); + // Extract the id, if we have one we need to do a update command + var id = doc['_id']; + var commandOptions = _getWriteConcern(this, options, callback); + + if(id) { + commandOptions.upsert = true; + this.update({ _id: id }, doc, commandOptions, callback); + } else { + this.insert(doc, commandOptions, callback && function (err, docs) { + if (err) return callback(err, null); + + if (Array.isArray(docs)) { + callback(err, docs[0]); + } else { + callback(err, docs); + } + }); + } +}; + +/** + * Updates documents. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **upsert** {Boolean, default:false}, perform an upsert operation. + * - **multi** {Boolean, default:false}, update all documents matching the selector. + * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Object} selector the query to select the document/documents to be updated + * @param {Object} document the fields/vals to be updated, or in the case of an upsert operation, inserted. + * @param {Object} [options] additional options during update. + * @param {Function} [callback] must be provided if you performing an update with a writeconcern + * @return {null} + * @api public + */ +Collection.prototype.update = function update(selector, document, options, callback) { + if('function' === typeof options) callback = options, options = null; + if(options == null) options = {}; + if(!('function' === typeof callback)) callback = null; + + // DbName + var dbName = options['dbName']; + // If no dbname defined use the db one + if(dbName == null) { + dbName = this.db.databaseName; + } + + // If we are not providing a selector or document throw + if(selector == null || typeof selector != 'object') return callback(new Error("selector must be a valid JavaScript object")); + if(document == null || typeof document != 'object') return callback(new Error("document must be a valid JavaScript object")); + + // Either use override on the function, or go back to default on either the collection + // level or db + if(options['serializeFunctions'] != null) { + options['serializeFunctions'] = options['serializeFunctions']; + } else { + options['serializeFunctions'] = this.serializeFunctions; + } + + var updateCommand = new UpdateCommand( + this.db + , dbName + "." + this.collectionName + , selector + , document + , options); + + var self = this; + // Unpack the error options if any + var errorOptions = _getWriteConcern(this, options, callback); + // If safe is defined check for error message + if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { + // Insert options + var commandOptions = {read:false}; + // If we have safe set set async to false + if(errorOptions == null) commandOptions['async'] = true; + // Set safe option + commandOptions['safe'] = errorOptions; + // If we have an error option + if(typeof errorOptions == 'object') { + var keys = Object.keys(errorOptions); + for(var i = 0; i < keys.length; i++) { + commandOptions[keys[i]] = errorOptions[keys[i]]; + } + } + + // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection) + this.db._executeUpdateCommand(updateCommand, commandOptions, function (err, error) { + error = error && error.documents; + if(!callback) return; + + if(err) { + callback(err); + } else if(error[0].err || error[0].errmsg) { + callback(utils.toError(error[0])); + } else { + // Perform the callback + callback(null, error[0].n, error[0]); + } + }); + } else if(_hasWriteConcern(errorOptions) && callback == null) { + throw new Error("Cannot use a writeConcern without a provided callback"); + } else { + // Execute update + var result = this.db._executeUpdateCommand(updateCommand); + // If no callback just return + if (!callback) return; + // If error return error + if (result instanceof Error) { + return callback(result); + } + // Otherwise just return + return callback(); + } +}; + +/** + * The distinct command returns returns a list of distinct values for the given key across a collection. + * + * Options + * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {String} key key to run distinct against. + * @param {Object} [query] option query to narrow the returned objects. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from distinct or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.distinct = function distinct(key, query, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + query = args.length ? args.shift() || {} : {}; + options = args.length ? args.shift() || {} : {}; + + var mapCommandHash = { + 'distinct': this.collectionName + , 'query': query + , 'key': key + }; + + // Set read preference if we set one + var readPreference = options['readPreference'] ? options['readPreference'] : false; + // Create the command + var cmd = DbCommand.createDbSlaveOkCommand(this.db, mapCommandHash); + + this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) { + if(err) + return callback(err); + if(result.documents[0].ok != 1) + return callback(new Error(result.documents[0].errmsg)); + callback(null, result.documents[0].values); + }); +}; + +/** + * Count number of matching documents in the db to a query. + * + * Options + * - **skip** {Number}, The number of documents to skip for the count. + * - **limit** {Number}, The limit of documents to count. + * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Object} [query] query to filter by before performing count. + * @param {Object} [options] additional options during count. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the count method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.count = function count (query, options, callback) { + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + query = args.length ? args.shift() || {} : {}; + options = args.length ? args.shift() || {} : {}; + var skip = options.skip; + var limit = options.limit; + + // Final query + var final_query = { + 'count': this.collectionName + , 'query': query + , 'fields': null + }; + + // Add limit and skip if defined + if(typeof skip == 'number') final_query.skip = skip; + if(typeof limit == 'number') final_query.limit = limit; + + // Set read preference if we set one + var readPreference = options['readPreference'] ? options['readPreference'] : false; + + // Set up query options + var queryOptions = QueryCommand.OPTS_NO_CURSOR_TIMEOUT; + if (this.slaveOk || this.db.slaveOk) { + queryOptions |= QueryCommand.OPTS_SLAVE; + } + + var queryCommand = new QueryCommand( + this.db + , this.db.databaseName + ".$cmd" + , queryOptions + , 0 + , -1 + , final_query + , null + ); + + var self = this; + this.db._executeQueryCommand(queryCommand, {read:readPreference}, function (err, result) { + result = result && result.documents; + if(!callback) return; + + if(err) return callback(err); + if (result[0].ok != 1 || result[0].errmsg) { + return callback(utils.toError(result[0])); + } + callback(null, result[0].n); + }); +}; + + +/** + * Drop the collection + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the drop method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.drop = function drop(callback) { + this.db.dropCollection(this.collectionName, callback); +}; + +/** + * Find and update a document. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **remove** {Boolean, default:false}, set to true to remove the object before returning. + * - **upsert** {Boolean, default:false}, perform an upsert operation. + * - **new** {Boolean, default:false}, set to true if you want to return the modified object rather than the original. Ignored for remove. + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Object} query query object to locate the object to modify + * @param {Array} sort - if multiple docs match, choose the first one in the specified sort order as the object to manipulate + * @param {Object} doc - the fields/vals to be updated + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findAndModify method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.findAndModify = function findAndModify (query, sort, doc, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + sort = args.length ? args.shift() || [] : []; + doc = args.length ? args.shift() : null; + options = args.length ? args.shift() || {} : {}; + var self = this; + + var queryObject = { + 'findandmodify': this.collectionName + , 'query': query + , 'sort': utils.formattedOrderClause(sort) + }; + + queryObject.new = options.new ? 1 : 0; + queryObject.remove = options.remove ? 1 : 0; + queryObject.upsert = options.upsert ? 1 : 0; + + if (options.fields) { + queryObject.fields = options.fields; + } + + if (doc && !options.remove) { + queryObject.update = doc; + } + + // Either use override on the function, or go back to default on either the collection + // level or db + if(options['serializeFunctions'] != null) { + options['serializeFunctions'] = options['serializeFunctions']; + } else { + options['serializeFunctions'] = this.serializeFunctions; + } + + // Unpack the error options if any + var errorOptions = _getWriteConcern(this, options, callback); + + // If we have j, w or something else do the getLast Error path + if(errorOptions != null + && typeof errorOptions == 'object' + && (errorOptions.w != 0 && errorOptions.safe != false)) { + // Commands to send + var commands = []; + // Add the find and modify command + commands.push(DbCommand.createDbCommand(this.db, queryObject, options)); + // If we have safe defined we need to return both call results + var chainedCommands = errorOptions != null ? true : false; + // Add error command if we have one + if(chainedCommands) { + commands.push(DbCommand.createGetLastErrorCommand(errorOptions, this.db)); + } + + // Fire commands and + this.db._executeQueryCommand(commands, {read:false}, function(err, result) { + if(err != null) return callback(err); + result = result && result.documents; + + if(result[0].err != null) { + return callback(utils.toError(result[0]), null); + } + + // Workaround due to 1.8.X returning an error on no matching object + // while 2.0.X does not not, making 2.0.X behaviour standard + if(result[0].errmsg != null && !result[0].errmsg.match(eErrorMessages)) { + return callback(utils.toError(result[0]), null, result[0]); + } + + return callback(null, result[0].value, result[0]); + }); + } else { + // Only run command and rely on getLastError command + var command = DbCommand.createDbCommand(this.db, queryObject, options) + // Execute command + this.db._executeQueryCommand(command, {read:false}, function(err, result) { + if(err != null) return callback(err); + + result = result && result.documents; + + if(result[0].errmsg != null && !result[0].errmsg.match(eErrorMessages)) { + return callback(utils.toError(result[0]), null, result[0]); + } + + // If we have an error return it + if(result[0].lastErrorObject && result[0].lastErrorObject.err != null) { + return callback(utils.toError(result[0].lastErrorObject), null); + } + + return callback(null, result[0].value, result[0]); + }); + } +} + +/** + * Find and remove a document + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Object} query query object to locate the object to modify + * @param {Array} sort - if multiple docs match, choose the first one in the specified sort order as the object to manipulate + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findAndRemove method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.findAndRemove = function(query, sort, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + sort = args.length ? args.shift() || [] : []; + options = args.length ? args.shift() || {} : {}; + // Add the remove option + options['remove'] = true; + // Execute the callback + this.findAndModify(query, sort, null, options, callback); +} + +var testForFields = { + limit: 1, sort: 1, fields:1, skip: 1, hint: 1, explain: 1, snapshot: 1, timeout: 1, tailable: 1, tailableRetryInterval: 1 + , numberOfRetries: 1, awaitdata: 1, exhaust: 1, batchSize: 1, returnKey: 1, maxScan: 1, min: 1, max: 1, showDiskLoc: 1 + , comment: 1, raw: 1, readPreference: 1, partial: 1, read: 1, dbName: 1 +}; + +/** + * Creates a cursor for a query that can be used to iterate over results from MongoDB + * + * Various argument possibilities + * - callback? + * - selector, callback?, + * - selector, fields, callback? + * - selector, options, callback? + * - selector, fields, options, callback? + * - selector, fields, skip, limit, callback? + * - selector, fields, skip, limit, timeout, callback? + * + * Options + * - **limit** {Number, default:0}, sets the limit of documents returned in the query. + * - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc. + * - **fields** {Object}, the fields to return in the query. Object of fields to include or exclude (not both), {'a':1} + * - **skip** {Number, default:0}, set to skip N documents ahead in your query (useful for pagination). + * - **hint** {Object}, tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1} + * - **explain** {Boolean, default:false}, explain the query instead of returning the data. + * - **snapshot** {Boolean, default:false}, snapshot query. + * - **timeout** {Boolean, default:false}, specify if the cursor can timeout. + * - **tailable** {Boolean, default:false}, specify if the cursor is tailable. + * - **tailableRetryInterval** {Number, default:100}, specify the miliseconds between getMores on tailable cursor. + * - **numberOfRetries** {Number, default:5}, specify the number of times to retry the tailable cursor. + * - **awaitdata** {Boolean, default:false} allow the cursor to wait for data, only applicable for tailable cursor. + * - **exhaust** {Boolean, default:false} have the server send all the documents at once as getMore packets, not recommended. + * - **batchSize** {Number, default:0}, set the batchSize for the getMoreCommand when iterating over the query results. + * - **returnKey** {Boolean, default:false}, only return the index key. + * - **maxScan** {Number}, Limit the number of items to scan. + * - **min** {Number}, Set index bounds. + * - **max** {Number}, Set index bounds. + * - **showDiskLoc** {Boolean, default:false}, Show disk location of results. + * - **comment** {String}, You can put a $comment field on a query to make looking in the profiler logs simpler. + * - **raw** {Boolean, default:false}, Return all BSON documents as Raw Buffer documents. + * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * - **numberOfRetries** {Number, default:5}, if using awaidata specifies the number of times to retry on timeout. + * - **partial** {Boolean, default:false}, specify if the cursor should return partial results when querying against a sharded system + * + * @param {Object|ObjectID} query query object to locate the object to modify + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the find method or null if an error occured. + * @return {Cursor} returns a cursor to the query + * @api public + */ +Collection.prototype.find = function find () { + var options + , args = Array.prototype.slice.call(arguments, 0) + , has_callback = typeof args[args.length - 1] === 'function' + , has_weird_callback = typeof args[0] === 'function' + , callback = has_callback ? args.pop() : (has_weird_callback ? args.shift() : null) + , len = args.length + , selector = len >= 1 ? args[0] : {} + , fields = len >= 2 ? args[1] : undefined; + + if(len === 1 && has_weird_callback) { + // backwards compat for callback?, options case + selector = {}; + options = args[0]; + } + + if(len === 2 && !Array.isArray(fields)) { + var fieldKeys = Object.getOwnPropertyNames(fields); + var is_option = false; + + for(var i = 0; i < fieldKeys.length; i++) { + if(testForFields[fieldKeys[i]] != null) { + is_option = true; + break; + } + } + + if(is_option) { + options = fields; + fields = undefined; + } else { + options = {}; + } + } else if(len === 2 && Array.isArray(fields) && !Array.isArray(fields[0])) { + var newFields = {}; + // Rewrite the array + for(var i = 0; i < fields.length; i++) { + newFields[fields[i]] = 1; + } + // Set the fields + fields = newFields; + } + + if(3 === len) { + options = args[2]; + } + + // Ensure selector is not null + selector = selector == null ? {} : selector; + // Validate correctness off the selector + var object = selector; + if(Buffer.isBuffer(object)) { + var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) { + var error = new Error("query selector raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + // Validate correctness of the field selector + var object = fields; + if(Buffer.isBuffer(object)) { + var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) { + var error = new Error("query fields raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + // Check special case where we are using an objectId + if(selector instanceof ObjectID || (selector != null && selector._bsontype == 'ObjectID')) { + selector = {_id:selector}; + } + + // If it's a serialized fields field we need to just let it through + // user be warned it better be good + if(options && options.fields && !(Buffer.isBuffer(options.fields))) { + fields = {}; + + if(Array.isArray(options.fields)) { + if(!options.fields.length) { + fields['_id'] = 1; + } else { + for (var i = 0, l = options.fields.length; i < l; i++) { + fields[options.fields[i]] = 1; + } + } + } else { + fields = options.fields; + } + } + + if (!options) options = {}; + options.skip = len > 3 ? args[2] : options.skip ? options.skip : 0; + options.limit = len > 3 ? args[3] : options.limit ? options.limit : 0; + options.raw = options.raw != null && typeof options.raw === 'boolean' ? options.raw : this.raw; + options.hint = options.hint != null ? normalizeHintField(options.hint) : this.internalHint; + options.timeout = len == 5 ? args[4] : typeof options.timeout === 'undefined' ? undefined : options.timeout; + // If we have overridden slaveOk otherwise use the default db setting + options.slaveOk = options.slaveOk != null ? options.slaveOk : this.db.slaveOk; + + // Set option + var o = options; + // Support read/readPreference + if(o["read"] != null) o["readPreference"] = o["read"]; + // Set the read preference + o.read = o["readPreference"] ? o.readPreference : this.readPreference; + // Adjust slave ok if read preference is secondary or secondary only + if(o.read == "secondary" || o.read == "secondaryOnly") options.slaveOk = true; + + // callback for backward compatibility + if(callback) { + // TODO refactor Cursor args + callback(null, new Cursor(this.db, this, selector, fields, o)); + } else { + return new Cursor(this.db, this, selector, fields, o); + } +}; + +/** + * Normalizes a `hint` argument. + * + * @param {String|Object|Array} hint + * @return {Object} + * @api private + */ +var normalizeHintField = function normalizeHintField(hint) { + var finalHint = null; + + if(typeof hint == 'string') { + finalHint = hint; + } else if(Array.isArray(hint)) { + finalHint = {}; + + hint.forEach(function(param) { + finalHint[param] = 1; + }); + } else if(hint != null && typeof hint == 'object') { + finalHint = {}; + for (var name in hint) { + finalHint[name] = hint[name]; + } + } + + return finalHint; +}; + +/** + * Finds a single document based on the query + * + * Various argument possibilities + * - callback? + * - selector, callback?, + * - selector, fields, callback? + * - selector, options, callback? + * - selector, fields, options, callback? + * - selector, fields, skip, limit, callback? + * - selector, fields, skip, limit, timeout, callback? + * + * Options + * - **limit** {Number, default:0}, sets the limit of documents returned in the query. + * - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc. + * - **fields** {Object}, the fields to return in the query. Object of fields to include or exclude (not both), {'a':1} + * - **skip** {Number, default:0}, set to skip N documents ahead in your query (useful for pagination). + * - **hint** {Object}, tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1} + * - **explain** {Boolean, default:false}, explain the query instead of returning the data. + * - **snapshot** {Boolean, default:false}, snapshot query. + * - **timeout** {Boolean, default:false}, specify if the cursor can timeout. + * - **tailable** {Boolean, default:false}, specify if the cursor is tailable. + * - **batchSize** {Number, default:0}, set the batchSize for the getMoreCommand when iterating over the query results. + * - **returnKey** {Boolean, default:false}, only return the index key. + * - **maxScan** {Number}, Limit the number of items to scan. + * - **min** {Number}, Set index bounds. + * - **max** {Number}, Set index bounds. + * - **showDiskLoc** {Boolean, default:false}, Show disk location of results. + * - **comment** {String}, You can put a $comment field on a query to make looking in the profiler logs simpler. + * - **raw** {Boolean, default:false}, Return all BSON documents as Raw Buffer documents. + * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * - **partial** {Boolean, default:false}, specify if the cursor should return partial results when querying against a sharded system + * + * @param {Object|ObjectID} query query object to locate the object to modify + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findOne method or null if an error occured. + * @return {Cursor} returns a cursor to the query + * @api public + */ +Collection.prototype.findOne = function findOne () { + var self = this; + var args = Array.prototype.slice.call(arguments, 0); + var callback = args.pop(); + var cursor = this.find.apply(this, args).limit(-1).batchSize(1); + // Return the item + cursor.nextObject(function(err, item) { + if(err != null) return callback(utils.toError(err), null); + callback(null, item); + }); +}; + +/** + * Creates an index on the collection. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **unique** {Boolean, default:false}, creates an unique index. + * - **sparse** {Boolean, default:false}, creates a sparse index. + * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. + * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value + * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. + * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. + * - **v** {Number}, specify the format version of the indexes. + * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) + * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Object} fieldOrSpec fieldOrSpec that defines the index. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the createIndex method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.createIndex = function createIndex (fieldOrSpec, options, callback) { + // Clean up call + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + options = typeof callback === 'function' ? options : callback; + options = options == null ? {} : options; + + // Collect errorOptions + var errorOptions = _getWriteConcern(this, options, callback); + // Execute create index + this.db.createIndex(this.collectionName, fieldOrSpec, options, callback); +}; + +/** + * Ensures that an index exists, if it does not it creates it + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **unique** {Boolean, default:false}, creates an unique index. + * - **sparse** {Boolean, default:false}, creates a sparse index. + * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. + * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value + * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. + * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. + * - **v** {Number}, specify the format version of the indexes. + * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) + * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {Object} fieldOrSpec fieldOrSpec that defines the index. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the ensureIndex method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.ensureIndex = function ensureIndex (fieldOrSpec, options, callback) { + // Clean up call + if (typeof callback === 'undefined' && typeof options === 'function') { + callback = options; + options = {}; + } + + if (options == null) { + options = {}; + } + + // Execute create index + this.db.ensureIndex(this.collectionName, fieldOrSpec, options, callback); +}; + +/** + * Retrieves this collections index info. + * + * Options + * - **full** {Boolean, default:false}, returns the full raw index information. + * + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexInformation method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.indexInformation = function indexInformation (options, callback) { + // Unpack calls + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + // Call the index information + this.db.indexInformation(this.collectionName, options, callback); +}; + +/** + * Drops an index from this collection. + * + * @param {String} name + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropIndex method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.dropIndex = function dropIndex (name, callback) { + this.db.dropIndex(this.collectionName, name, callback); +}; + +/** + * Drops all indexes from this collection. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropAllIndexes method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.dropAllIndexes = function dropIndexes (callback) { + this.db.dropIndex(this.collectionName, '*', function (err, result) { + if(err != null) { + callback(err, false); + } else if(result.documents[0].errmsg == null) { + callback(null, true); + } else { + callback(new Error(result.documents[0].errmsg), false); + } + }); +}; + +/** + * Drops all indexes from this collection. + * + * @deprecated + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropIndexes method or null if an error occured. + * @return {null} + * @api private + */ +Collection.prototype.dropIndexes = Collection.prototype.dropAllIndexes; + +/** + * Reindex all indexes on the collection + * Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the reIndex method or null if an error occured. + * @return {null} + * @api public +**/ +Collection.prototype.reIndex = function(callback) { + this.db.reIndex(this.collectionName, callback); +} + +/** + * Run Map Reduce across a collection. Be aware that the inline option for out will return an array of results not a collection. + * + * Options + * - **out** {Object}, sets the output target for the map reduce job. *{inline:1} | {replace:'collectionName'} | {merge:'collectionName'} | {reduce:'collectionName'}* + * - **query** {Object}, query filter object. + * - **sort** {Object}, sorts the input objects using this key. Useful for optimization, like sorting by the emit key for fewer reduces. + * - **limit** {Number}, number of objects to return from collection. + * - **keeptemp** {Boolean, default:false}, keep temporary data. + * - **finalize** {Function | String}, finalize function. + * - **scope** {Object}, can pass in variables that can be access from map/reduce/finalize. + * - **jsMode** {Boolean, default:false}, it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X. + * - **verbose** {Boolean, default:false}, provide statistics on job execution time. + * - **readPreference** {String, only for inline results}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Function|String} map the mapping function. + * @param {Function|String} reduce the reduce function. + * @param {Objects} [options] options for the map reduce job. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the mapReduce method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.mapReduce = function mapReduce (map, reduce, options, callback) { + if ('function' === typeof options) callback = options, options = {}; + // Out must allways be defined (make sure we don't break weirdly on pre 1.8+ servers) + if(null == options.out) { + throw new Error("the out option parameter must be defined, see mongodb docs for possible values"); + } + + if ('function' === typeof map) { + map = map.toString(); + } + + if ('function' === typeof reduce) { + reduce = reduce.toString(); + } + + if ('function' === typeof options.finalize) { + options.finalize = options.finalize.toString(); + } + + var mapCommandHash = { + mapreduce: this.collectionName + , map: map + , reduce: reduce + }; + + // Add any other options passed in + for (var name in options) { + if ('scope' == name) { + mapCommandHash[name] = processScope(options[name]); + } else { + mapCommandHash[name] = options[name]; + } + } + + // Set read preference if we set one + var readPreference = options['readPreference'] ? options['readPreference'] : false; + // If we have a read preference and inline is not set as output fail hard + if(readPreference != false && options['out'] != 'inline') { + throw new Error("a readPreference can only be provided when performing an inline mapReduce"); + } + + // self + var self = this; + var cmd = DbCommand.createDbCommand(this.db, mapCommandHash); + + this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) { + if (err) { + return callback(err); + } + + // + if (1 != result.documents[0].ok || result.documents[0].err || result.documents[0].errmsg) { + return callback(utils.toError(result.documents[0])); + } + + // Create statistics value + var stats = {}; + if(result.documents[0].timeMillis) stats['processtime'] = result.documents[0].timeMillis; + if(result.documents[0].counts) stats['counts'] = result.documents[0].counts; + if(result.documents[0].timing) stats['timing'] = result.documents[0].timing; + + // invoked with inline? + if(result.documents[0].results) { + return callback(null, result.documents[0].results, stats); + } + + // The returned collection + var collection = null; + + // If we have an object it's a different db + if(result.documents[0].result != null && typeof result.documents[0].result == 'object') { + var doc = result.documents[0].result; + collection = self.db.db(doc.db).collection(doc.collection); + } else { + // Create a collection object that wraps the result collection + collection = self.db.collection(result.documents[0].result) + } + + // If we wish for no verbosity + if(options['verbose'] == null || !options['verbose']) { + return callback(err, collection); + } + + // Return stats as third set of values + callback(err, collection, stats); + }); +}; + +/** + * Functions that are passed as scope args must + * be converted to Code instances. + * @ignore + */ +function processScope (scope) { + if (!utils.isObject(scope)) { + return scope; + } + + var keys = Object.keys(scope); + var i = keys.length; + var key; + + while (i--) { + key = keys[i]; + if ('function' == typeof scope[key]) { + scope[key] = new Code(String(scope[key])); + } + } + + return scope; +} + +/** + * Group function helper + * @ignore + */ +var groupFunction = function () { + var c = db[ns].find(condition); + var map = new Map(); + var reduce_function = reduce; + + while (c.hasNext()) { + var obj = c.next(); + var key = {}; + + for (var i = 0, len = keys.length; i < len; ++i) { + var k = keys[i]; + key[k] = obj[k]; + } + + var aggObj = map.get(key); + + if (aggObj == null) { + var newObj = Object.extend({}, key); + aggObj = Object.extend(newObj, initial); + map.put(key, aggObj); + } + + reduce_function(obj, aggObj); + } + + return { "result": map.values() }; +}.toString(); + +/** + * Run a group command across a collection + * + * Options + * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Object|Array|Function|Code} keys an object, array or function expressing the keys to group by. + * @param {Object} condition an optional condition that must be true for a row to be considered. + * @param {Object} initial initial value of the aggregation counter object. + * @param {Function|Code} reduce the reduce function aggregates (reduces) the objects iterated + * @param {Function|Code} finalize an optional function to be run on each item in the result set just before the item is returned. + * @param {Boolean} command specify if you wish to run using the internal group command or using eval, default is true. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the group method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.group = function group(keys, condition, initial, reduce, finalize, command, options, callback) { + var args = Array.prototype.slice.call(arguments, 3); + callback = args.pop(); + // Fetch all commands + reduce = args.length ? args.shift() : null; + finalize = args.length ? args.shift() : null; + command = args.length ? args.shift() : null; + options = args.length ? args.shift() || {} : {}; + + // Make sure we are backward compatible + if(!(typeof finalize == 'function')) { + command = finalize; + finalize = null; + } + + if (!Array.isArray(keys) && keys instanceof Object && typeof(keys) !== 'function' && !(keys instanceof Code)) { + keys = Object.keys(keys); + } + + if(typeof reduce === 'function') { + reduce = reduce.toString(); + } + + if(typeof finalize === 'function') { + finalize = finalize.toString(); + } + + // Set up the command as default + command = command == null ? true : command; + + // Execute using the command + if(command) { + var reduceFunction = reduce instanceof Code + ? reduce + : new Code(reduce); + + var selector = { + group: { + 'ns': this.collectionName + , '$reduce': reduceFunction + , 'cond': condition + , 'initial': initial + , 'out': "inline" + } + }; + + // if finalize is defined + if(finalize != null) selector.group['finalize'] = finalize; + // Set up group selector + if ('function' === typeof keys || keys instanceof Code) { + selector.group.$keyf = keys instanceof Code + ? keys + : new Code(keys); + } else { + var hash = {}; + keys.forEach(function (key) { + hash[key] = 1; + }); + selector.group.key = hash; + } + + var cmd = DbCommand.createDbSlaveOkCommand(this.db, selector); + // Set read preference if we set one + var readPreference = options['readPreference'] ? options['readPreference'] : this.readPreference; + + this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) { + if(err != null) return callback(err); + + var document = result.documents[0]; + if (null == document.retval) { + return callback(new Error("group command failed: " + document.errmsg)); + } + + callback(null, document.retval); + }); + + } else { + // Create execution scope + var scope = reduce != null && reduce instanceof Code + ? reduce.scope + : {}; + + scope.ns = this.collectionName; + scope.keys = keys; + scope.condition = condition; + scope.initial = initial; + + // Pass in the function text to execute within mongodb. + var groupfn = groupFunction.replace(/ reduce;/, reduce.toString() + ';'); + + this.db.eval(new Code(groupfn, scope), function (err, results) { + if (err) return callback(err, null); + callback(null, results.result || results); + }); + } +}; + +/** + * Returns the options of the collection. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the options method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.options = function options(callback) { + this.db.collectionsInfo(this.collectionName, function (err, cursor) { + if (err) return callback(err); + cursor.nextObject(function (err, document) { + callback(err, document && document.options || null); + }); + }); +}; + +/** + * Returns if the collection is a capped collection + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the isCapped method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.isCapped = function isCapped(callback) { + this.options(function(err, document) { + if(err != null) { + callback(err); + } else { + callback(null, document && document.capped); + } + }); +}; + +/** + * Checks if one or more indexes exist on the collection + * + * @param {String|Array} indexNames check if one or more indexes exist on the collection. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexExists method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.indexExists = function indexExists(indexes, callback) { + this.indexInformation(function(err, indexInformation) { + // If we have an error return + if(err != null) return callback(err, null); + // Let's check for the index names + if(Array.isArray(indexes)) { + for(var i = 0; i < indexes.length; i++) { + if(indexInformation[indexes[i]] == null) { + return callback(null, false); + } + } + + // All keys found return true + return callback(null, true); + } else { + return callback(null, indexInformation[indexes] != null); + } + }); +} + +/** + * Execute the geoNear command to search for items in the collection + * + * Options + * - **num** {Number}, max number of results to return. + * - **maxDistance** {Number}, include results up to maxDistance from the point. + * - **distanceMultiplier** {Number}, include a value to multiply the distances with allowing for range conversions. + * - **query** {Object}, filter the results by a query. + * - **spherical** {Boolean, default:false}, perform query using a spherical model. + * - **uniqueDocs** {Boolean, default:false}, the closest location in a document to the center of the search region will always be returned MongoDB > 2.X. + * - **includeLocs** {Boolean, default:false}, include the location data fields in the top level of the results MongoDB > 2.X. + * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Number} x point to search on the x axis, ensure the indexes are ordered in the same order. + * @param {Number} y point to search on the y axis, ensure the indexes are ordered in the same order. + * @param {Objects} [options] options for the map reduce job. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the geoNear method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.geoNear = function geoNear(x, y, options, callback) { + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + // Fetch all commands + options = args.length ? args.shift() || {} : {}; + + // Build command object + var commandObject = { + geoNear:this.collectionName, + near: [x, y] + } + + // Decorate object if any with known properties + if(options['num'] != null) commandObject['num'] = options['num']; + if(options['maxDistance'] != null) commandObject['maxDistance'] = options['maxDistance']; + if(options['distanceMultiplier'] != null) commandObject['distanceMultiplier'] = options['distanceMultiplier']; + if(options['query'] != null) commandObject['query'] = options['query']; + if(options['spherical'] != null) commandObject['spherical'] = options['spherical']; + if(options['uniqueDocs'] != null) commandObject['uniqueDocs'] = options['uniqueDocs']; + if(options['includeLocs'] != null) commandObject['includeLocs'] = options['includeLocs']; + + // Execute the command + this.db.command(commandObject, options, callback); +} + +/** + * Execute a geo search using a geo haystack index on a collection. + * + * Options + * - **maxDistance** {Number}, include results up to maxDistance from the point. + * - **search** {Object}, filter the results by a query. + * - **limit** {Number}, max number of results to return. + * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Number} x point to search on the x axis, ensure the indexes are ordered in the same order. + * @param {Number} y point to search on the y axis, ensure the indexes are ordered in the same order. + * @param {Objects} [options] options for the map reduce job. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the geoHaystackSearch method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.geoHaystackSearch = function geoHaystackSearch(x, y, options, callback) { + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + // Fetch all commands + options = args.length ? args.shift() || {} : {}; + + // Build command object + var commandObject = { + geoSearch:this.collectionName, + near: [x, y] + } + + // Decorate object if any with known properties + if(options['maxDistance'] != null) commandObject['maxDistance'] = options['maxDistance']; + if(options['query'] != null) commandObject['search'] = options['query']; + if(options['search'] != null) commandObject['search'] = options['search']; + if(options['limit'] != null) commandObject['limit'] = options['limit']; + + // Execute the command + this.db.command(commandObject, options, callback); +} + +/** + * Retrieve all the indexes on the collection. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexes method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.indexes = function indexes(callback) { + // Return all the index information + this.db.indexInformation(this.collectionName, {full:true}, callback); +} + +/** + * Execute an aggregation framework pipeline against the collection, needs MongoDB >= 2.1 + * + * Options + * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Array} array containing all the aggregation framework commands for the execution. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the aggregate method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.aggregate = function(pipeline, options, callback) { + // * - **explain** {Boolean}, return the query plan for the aggregation pipeline instead of the results. 2.3, 2.4 + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + var self = this; + + // If we have any of the supported options in the options object + var opts = args[args.length - 1]; + options = opts.readPreference || opts.explain ? args.pop() : {} + + // Convert operations to an array + if(!Array.isArray(args[0])) { + pipeline = []; + // Push all the operations to the pipeline + for(var i = 0; i < args.length; i++) pipeline.push(args[i]); + } + + // Build the command + var command = { aggregate : this.collectionName, pipeline : pipeline}; + // Add all options + var keys = Object.keys(options); + // Add all options + for(var i = 0; i < keys.length; i++) { + command[keys[i]] = options[keys[i]]; + } + + // Execute the command + this.db.command(command, options, function(err, result) { + if(err) { + callback(err); + } else if(result['err'] || result['errmsg']) { + callback(utils.toError(result)); + } else if(typeof result == 'object' && result['serverPipeline']) { + callback(null, result); + } else { + callback(null, result.result); + } + }); +} + +/** + * Get all the collection statistics. + * + * Options + * - **scale** {Number}, divide the returned sizes by scale value. + * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Objects} [options] options for the stats command. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the stats method or null if an error occured. + * @return {null} + * @api public + */ +Collection.prototype.stats = function stats(options, callback) { + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + // Fetch all commands + options = args.length ? args.shift() || {} : {}; + + // Build command object + var commandObject = { + collStats:this.collectionName, + } + + // Check if we have the scale value + if(options['scale'] != null) commandObject['scale'] = options['scale']; + + // Execute the command + this.db.command(commandObject, options, callback); +} + +/** + * @ignore + */ +Object.defineProperty(Collection.prototype, "hint", { + enumerable: true + , get: function () { + return this.internalHint; + } + , set: function (v) { + this.internalHint = normalizeHintField(v); + } +}); + +/** + * @ignore + */ +var _hasWriteConcern = function(errorOptions) { + return errorOptions == true + || errorOptions.w > 0 + || errorOptions.w == 'majority' + || errorOptions.j == true + || errorOptions.journal == true + || errorOptions.fsync == true +} + +/** + * @ignore + */ +var _setWriteConcernHash = function(options) { + var finalOptions = {}; + if(options.w != null) finalOptions.w = options.w; + if(options.journal == true) finalOptions.j = options.journal; + if(options.j == true) finalOptions.j = options.j; + if(options.fsync == true) finalOptions.fsync = options.fsync; + if(options.wtimeout != null) finalOptions.wtimeout = options.wtimeout; + return finalOptions; +} + +/** + * @ignore + */ +var _getWriteConcern = function(self, options, callback) { + // Final options + var finalOptions = {w:1}; + // Local options verification + if(options.w != null || typeof options.j == 'boolean' || typeof options.journal == 'boolean' || typeof options.fsync == 'boolean') { + finalOptions = _setWriteConcernHash(options); + } else if(typeof options.safe == "boolean") { + finalOptions = {w: (options.safe ? 1 : 0)}; + } else if(options.safe != null && typeof options.safe == 'object') { + finalOptions = _setWriteConcernHash(options.safe); + } else if(self.opts.w != null || typeof self.opts.j == 'boolean' || typeof self.opts.journal == 'boolean' || typeof self.opts.fsync == 'boolean') { + finalOptions = _setWriteConcernHash(self.opts); + } else if(typeof self.opts.safe == "boolean") { + finalOptions = {w: (self.opts.safe ? 1 : 0)}; + } else if(self.db.safe.w != null || typeof self.db.safe.j == 'boolean' || typeof self.db.safe.journal == 'boolean' || typeof self.db.safe.fsync == 'boolean') { + finalOptions = _setWriteConcernHash(self.db.safe); + } else if(self.db.options.w != null || typeof self.db.options.j == 'boolean' || typeof self.db.options.journal == 'boolean' || typeof self.db.options.fsync == 'boolean') { + finalOptions = _setWriteConcernHash(self.db.options); + } else if(typeof self.db.safe == "boolean") { + finalOptions = {w: (self.db.safe ? 1 : 0)}; + } + + // Ensure we don't have an invalid combination of write concerns + if(finalOptions.w < 1 + && (finalOptions.journal == true || finalOptions.j == true || finalOptions.fsync == true)) throw new Error("No acknowlegement using w < 1 cannot be combined with journal:true or fsync:true"); + + // Return the options + return finalOptions; +} + +/** + * Expose. + */ +exports.Collection = Collection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js new file mode 100644 index 0000000..9558582 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js @@ -0,0 +1,29 @@ +/** + Base object used for common functionality +**/ +var BaseCommand = exports.BaseCommand = function BaseCommand() { +}; + +var id = 1; +BaseCommand.prototype.getRequestId = function getRequestId() { + if (!this.requestId) this.requestId = id++; + return this.requestId; +}; + +BaseCommand.prototype.setMongosReadPreference = function setMongosReadPreference(readPreference, tags) {} + +BaseCommand.prototype.updateRequestId = function() { + this.requestId = id++; + return this.requestId; +}; + +// OpCodes +BaseCommand.OP_REPLY = 1; +BaseCommand.OP_MSG = 1000; +BaseCommand.OP_UPDATE = 2001; +BaseCommand.OP_INSERT = 2002; +BaseCommand.OP_GET_BY_OID = 2003; +BaseCommand.OP_QUERY = 2004; +BaseCommand.OP_GET_MORE = 2005; +BaseCommand.OP_DELETE = 2006; +BaseCommand.OP_KILL_CURSORS = 2007; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js new file mode 100644 index 0000000..f8751b5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js @@ -0,0 +1,241 @@ +var QueryCommand = require('./query_command').QueryCommand, + InsertCommand = require('./insert_command').InsertCommand, + inherits = require('util').inherits, + utils = require('../utils'), + crypto = require('crypto'); + +/** + Db Command +**/ +var DbCommand = exports.DbCommand = function(dbInstance, collectionName, queryOptions, numberToSkip, numberToReturn, query, returnFieldSelector, options) { + QueryCommand.call(this); + this.collectionName = collectionName; + this.queryOptions = queryOptions; + this.numberToSkip = numberToSkip; + this.numberToReturn = numberToReturn; + this.query = query; + this.returnFieldSelector = returnFieldSelector; + this.db = dbInstance; + + // Make sure we don't get a null exception + options = options == null ? {} : options; + // Let us defined on a command basis if we want functions to be serialized or not + if(options['serializeFunctions'] != null && options['serializeFunctions']) { + this.serializeFunctions = true; + } +}; + +inherits(DbCommand, QueryCommand); + +// Constants +DbCommand.SYSTEM_NAMESPACE_COLLECTION = "system.namespaces"; +DbCommand.SYSTEM_INDEX_COLLECTION = "system.indexes"; +DbCommand.SYSTEM_PROFILE_COLLECTION = "system.profile"; +DbCommand.SYSTEM_USER_COLLECTION = "system.users"; +DbCommand.SYSTEM_COMMAND_COLLECTION = "$cmd"; +DbCommand.SYSTEM_JS_COLLECTION = "system.js"; + +// New commands +DbCommand.NcreateIsMasterCommand = function(db, databaseName) { + return new DbCommand(db, databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'ismaster':1}, null); +}; + +// Provide constructors for different db commands +DbCommand.createIsMasterCommand = function(db) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'ismaster':1}, null); +}; + +DbCommand.createCollectionInfoCommand = function(db, selector) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_NAMESPACE_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, 0, selector, null); +}; + +DbCommand.createGetNonceCommand = function(db, options) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'getnonce':1}, null); +}; + +DbCommand.createAuthenticationCommand = function(db, username, password, nonce, authdb) { + // Use node md5 generator + var md5 = crypto.createHash('md5'); + // Generate keys used for authentication + md5.update(username + ":mongo:" + password); + var hash_password = md5.digest('hex'); + // Final key + md5 = crypto.createHash('md5'); + md5.update(nonce + username + hash_password); + var key = md5.digest('hex'); + // Creat selector + var selector = {'authenticate':1, 'user':username, 'nonce':nonce, 'key':key}; + // Create db command + return new DbCommand(db, authdb + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NONE, 0, -1, selector, null); +}; + +DbCommand.createLogoutCommand = function(db) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'logout':1}, null); +}; + +DbCommand.createCreateCollectionCommand = function(db, collectionName, options) { + var selector = {'create':collectionName}; + // Modify the options to ensure correct behaviour + for(var name in options) { + if(options[name] != null && options[name].constructor != Function) selector[name] = options[name]; + } + // Execute the command + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, selector, null); +}; + +DbCommand.createDropCollectionCommand = function(db, collectionName) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'drop':collectionName}, null); +}; + +DbCommand.createRenameCollectionCommand = function(db, fromCollectionName, toCollectionName, options) { + var renameCollection = db.databaseName + "." + fromCollectionName; + var toCollection = db.databaseName + "." + toCollectionName; + var dropTarget = options && options.dropTarget ? options.dropTarget : false; + return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'renameCollection':renameCollection, 'to':toCollection, 'dropTarget':dropTarget}, null); +}; + +DbCommand.createGetLastErrorCommand = function(options, db) { + + if (typeof db === 'undefined') { + db = options; + options = {}; + } + // Final command + var command = {'getlasterror':1}; + // If we have an options Object let's merge in the fields (fsync/wtimeout/w) + if('object' === typeof options) { + for(var name in options) { + command[name] = options[name] + } + } + + // Special case for w == 1, remove the w + if(1 == command.w) { + delete command.w; + } + + // Execute command + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command, null); +}; + +DbCommand.createGetLastStatusCommand = DbCommand.createGetLastErrorCommand; + +DbCommand.createGetPreviousErrorsCommand = function(db) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'getpreverror':1}, null); +}; + +DbCommand.createResetErrorHistoryCommand = function(db) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'reseterror':1}, null); +}; + +DbCommand.createCreateIndexCommand = function(db, collectionName, fieldOrSpec, options) { + var fieldHash = {}; + var indexes = []; + var keys; + + // Get all the fields accordingly + if('string' == typeof fieldOrSpec) { + // 'type' + indexes.push(fieldOrSpec + '_' + 1); + fieldHash[fieldOrSpec] = 1; + + } else if(utils.isArray(fieldOrSpec)) { + + fieldOrSpec.forEach(function(f) { + if('string' == typeof f) { + // [{location:'2d'}, 'type'] + indexes.push(f + '_' + 1); + fieldHash[f] = 1; + } else if(utils.isArray(f)) { + // [['location', '2d'],['type', 1]] + indexes.push(f[0] + '_' + (f[1] || 1)); + fieldHash[f[0]] = f[1] || 1; + } else if(utils.isObject(f)) { + // [{location:'2d'}, {type:1}] + keys = Object.keys(f); + keys.forEach(function(k) { + indexes.push(k + '_' + f[k]); + fieldHash[k] = f[k]; + }); + } else { + // undefined (ignore) + } + }); + + } else if(utils.isObject(fieldOrSpec)) { + // {location:'2d', type:1} + keys = Object.keys(fieldOrSpec); + keys.forEach(function(key) { + indexes.push(key + '_' + fieldOrSpec[key]); + fieldHash[key] = fieldOrSpec[key]; + }); + } + + // Generate the index name + var indexName = typeof options.name == 'string' + ? options.name + : indexes.join("_"); + + var selector = { + 'ns': db.databaseName + "." + collectionName, + 'key': fieldHash, + 'name': indexName + } + + // Ensure we have a correct finalUnique + var finalUnique = options == null || 'object' === typeof options + ? false + : options; + + // Set up options + options = options == null || typeof options == 'boolean' + ? {} + : options; + + // Add all the options + var keys = Object.keys(options); + for(var i = 0; i < keys.length; i++) { + selector[keys[i]] = options[keys[i]]; + } + + if(selector['unique'] == null) + selector['unique'] = finalUnique; + + var name = db.databaseName + "." + DbCommand.SYSTEM_INDEX_COLLECTION; + var cmd = new InsertCommand(db, name, false); + return cmd.add(selector); +}; + +DbCommand.logoutCommand = function(db, command_hash, options) { + var dbName = options != null && options['authdb'] != null ? options['authdb'] : db.databaseName; + return new DbCommand(db, dbName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null); +} + +DbCommand.createDropIndexCommand = function(db, collectionName, indexName) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'deleteIndexes':collectionName, 'index':indexName}, null); +}; + +DbCommand.createReIndexCommand = function(db, collectionName) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'reIndex':collectionName}, null); +}; + +DbCommand.createDropDatabaseCommand = function(db) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'dropDatabase':1}, null); +}; + +DbCommand.createDbCommand = function(db, command_hash, options, auth_db) { + var db_name = (auth_db ? auth_db : db.databaseName) + "." + DbCommand.SYSTEM_COMMAND_COLLECTION; + return new DbCommand(db, db_name, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null, options); +}; + +DbCommand.createAdminDbCommand = function(db, command_hash) { + return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null); +}; + +DbCommand.createAdminDbCommandSlaveOk = function(db, command_hash) { + return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT | QueryCommand.OPTS_SLAVE, 0, -1, command_hash, null); +}; + +DbCommand.createDbSlaveOkCommand = function(db, command_hash, options) { + return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT | QueryCommand.OPTS_SLAVE, 0, -1, command_hash, null, options); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js new file mode 100644 index 0000000..e6ae20a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js @@ -0,0 +1,114 @@ +var BaseCommand = require('./base_command').BaseCommand, + inherits = require('util').inherits; + +/** + Insert Document Command +**/ +var DeleteCommand = exports.DeleteCommand = function(db, collectionName, selector, flags) { + BaseCommand.call(this); + + // Validate correctness off the selector + var object = selector; + if(Buffer.isBuffer(object)) { + var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) { + var error = new Error("delete raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + this.flags = flags; + this.collectionName = collectionName; + this.selector = selector; + this.db = db; +}; + +inherits(DeleteCommand, BaseCommand); + +DeleteCommand.OP_DELETE = 2006; + +/* +struct { + MsgHeader header; // standard message header + int32 ZERO; // 0 - reserved for future use + cstring fullCollectionName; // "dbname.collectionname" + int32 ZERO; // 0 - reserved for future use + mongo.BSON selector; // query object. See below for details. +} +*/ +DeleteCommand.prototype.toBinary = function() { + // Calculate total length of the document + var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + this.db.bson.calculateObjectSize(this.selector, false, true) + (4 * 4); + // Let's build the single pass buffer command + var _index = 0; + var _command = new Buffer(totalLengthOfCommand); + // Write the header information to the buffer + _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; + _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; + _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; + _command[_index] = totalLengthOfCommand & 0xff; + // Adjust index + _index = _index + 4; + // Write the request ID + _command[_index + 3] = (this.requestId >> 24) & 0xff; + _command[_index + 2] = (this.requestId >> 16) & 0xff; + _command[_index + 1] = (this.requestId >> 8) & 0xff; + _command[_index] = this.requestId & 0xff; + // Adjust index + _index = _index + 4; + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + // Write the op_code for the command + _command[_index + 3] = (DeleteCommand.OP_DELETE >> 24) & 0xff; + _command[_index + 2] = (DeleteCommand.OP_DELETE >> 16) & 0xff; + _command[_index + 1] = (DeleteCommand.OP_DELETE >> 8) & 0xff; + _command[_index] = DeleteCommand.OP_DELETE & 0xff; + // Adjust index + _index = _index + 4; + + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + + // Write the collection name to the command + _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; + _command[_index - 1] = 0; + + // Write the flags + _command[_index + 3] = (this.flags >> 24) & 0xff; + _command[_index + 2] = (this.flags >> 16) & 0xff; + _command[_index + 1] = (this.flags >> 8) & 0xff; + _command[_index] = this.flags & 0xff; + // Adjust index + _index = _index + 4; + + // Document binary length + var documentLength = 0 + + // Serialize the selector + // If we are passing a raw buffer, do minimal validation + if(Buffer.isBuffer(this.selector)) { + documentLength = this.selector.length; + // Copy the data into the current buffer + this.selector.copy(_command, _index); + } else { + documentLength = this.db.bson.serializeWithBufferAndIndex(this.selector, this.checkKeys, _command, _index) - _index + 1; + } + + // Write the length to the document + _command[_index + 3] = (documentLength >> 24) & 0xff; + _command[_index + 2] = (documentLength >> 16) & 0xff; + _command[_index + 1] = (documentLength >> 8) & 0xff; + _command[_index] = documentLength & 0xff; + // Update index in buffer + _index = _index + documentLength; + // Add terminating 0 for the object + _command[_index - 1] = 0; + return _command; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js new file mode 100644 index 0000000..d3aac02 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js @@ -0,0 +1,83 @@ +var BaseCommand = require('./base_command').BaseCommand, + inherits = require('util').inherits, + binaryutils = require('../utils'); + +/** + Get More Document Command +**/ +var GetMoreCommand = exports.GetMoreCommand = function(db, collectionName, numberToReturn, cursorId) { + BaseCommand.call(this); + + this.collectionName = collectionName; + this.numberToReturn = numberToReturn; + this.cursorId = cursorId; + this.db = db; +}; + +inherits(GetMoreCommand, BaseCommand); + +GetMoreCommand.OP_GET_MORE = 2005; + +GetMoreCommand.prototype.toBinary = function() { + // Calculate total length of the document + var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 8 + (4 * 4); + // Let's build the single pass buffer command + var _index = 0; + var _command = new Buffer(totalLengthOfCommand); + // Write the header information to the buffer + _command[_index++] = totalLengthOfCommand & 0xff; + _command[_index++] = (totalLengthOfCommand >> 8) & 0xff; + _command[_index++] = (totalLengthOfCommand >> 16) & 0xff; + _command[_index++] = (totalLengthOfCommand >> 24) & 0xff; + + // Write the request ID + _command[_index++] = this.requestId & 0xff; + _command[_index++] = (this.requestId >> 8) & 0xff; + _command[_index++] = (this.requestId >> 16) & 0xff; + _command[_index++] = (this.requestId >> 24) & 0xff; + + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + + // Write the op_code for the command + _command[_index++] = GetMoreCommand.OP_GET_MORE & 0xff; + _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 8) & 0xff; + _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 16) & 0xff; + _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 24) & 0xff; + + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + + // Write the collection name to the command + _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; + _command[_index - 1] = 0; + + // Number of documents to return + _command[_index++] = this.numberToReturn & 0xff; + _command[_index++] = (this.numberToReturn >> 8) & 0xff; + _command[_index++] = (this.numberToReturn >> 16) & 0xff; + _command[_index++] = (this.numberToReturn >> 24) & 0xff; + + // Encode the cursor id + var low_bits = this.cursorId.getLowBits(); + // Encode low bits + _command[_index++] = low_bits & 0xff; + _command[_index++] = (low_bits >> 8) & 0xff; + _command[_index++] = (low_bits >> 16) & 0xff; + _command[_index++] = (low_bits >> 24) & 0xff; + + var high_bits = this.cursorId.getHighBits(); + // Encode high bits + _command[_index++] = high_bits & 0xff; + _command[_index++] = (high_bits >> 8) & 0xff; + _command[_index++] = (high_bits >> 16) & 0xff; + _command[_index++] = (high_bits >> 24) & 0xff; + // Return command + return _command; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js new file mode 100644 index 0000000..d6a2100 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js @@ -0,0 +1,147 @@ +var BaseCommand = require('./base_command').BaseCommand, + inherits = require('util').inherits; + +/** + Insert Document Command +**/ +var InsertCommand = exports.InsertCommand = function(db, collectionName, checkKeys, options) { + BaseCommand.call(this); + + this.collectionName = collectionName; + this.documents = []; + this.checkKeys = checkKeys == null ? true : checkKeys; + this.db = db; + this.flags = 0; + this.serializeFunctions = false; + + // Ensure valid options hash + options = options == null ? {} : options; + + // Check if we have keepGoing set -> set flag if it's the case + if(options['keepGoing'] != null && options['keepGoing']) { + // This will finish inserting all non-index violating documents even if it returns an error + this.flags = 1; + } + + // Check if we have keepGoing set -> set flag if it's the case + if(options['continueOnError'] != null && options['continueOnError']) { + // This will finish inserting all non-index violating documents even if it returns an error + this.flags = 1; + } + + // Let us defined on a command basis if we want functions to be serialized or not + if(options['serializeFunctions'] != null && options['serializeFunctions']) { + this.serializeFunctions = true; + } +}; + +inherits(InsertCommand, BaseCommand); + +// OpCodes +InsertCommand.OP_INSERT = 2002; + +InsertCommand.prototype.add = function(document) { + if(Buffer.isBuffer(document)) { + var object_size = document[0] | document[1] << 8 | document[2] << 16 | document[3] << 24; + if(object_size != document.length) { + var error = new Error("insert raw message size does not match message header size [" + document.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + this.documents.push(document); + return this; +}; + +/* +struct { + MsgHeader header; // standard message header + int32 ZERO; // 0 - reserved for future use + cstring fullCollectionName; // "dbname.collectionname" + BSON[] documents; // one or more documents to insert into the collection +} +*/ +InsertCommand.prototype.toBinary = function() { + // Calculate total length of the document + var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + (4 * 4); + // var docLength = 0 + for(var i = 0; i < this.documents.length; i++) { + if(Buffer.isBuffer(this.documents[i])) { + totalLengthOfCommand += this.documents[i].length; + } else { + // Calculate size of document + totalLengthOfCommand += this.db.bson.calculateObjectSize(this.documents[i], this.serializeFunctions, true); + } + } + + // Let's build the single pass buffer command + var _index = 0; + var _command = new Buffer(totalLengthOfCommand); + // Write the header information to the buffer + _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; + _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; + _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; + _command[_index] = totalLengthOfCommand & 0xff; + // Adjust index + _index = _index + 4; + // Write the request ID + _command[_index + 3] = (this.requestId >> 24) & 0xff; + _command[_index + 2] = (this.requestId >> 16) & 0xff; + _command[_index + 1] = (this.requestId >> 8) & 0xff; + _command[_index] = this.requestId & 0xff; + // Adjust index + _index = _index + 4; + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + // Write the op_code for the command + _command[_index + 3] = (InsertCommand.OP_INSERT >> 24) & 0xff; + _command[_index + 2] = (InsertCommand.OP_INSERT >> 16) & 0xff; + _command[_index + 1] = (InsertCommand.OP_INSERT >> 8) & 0xff; + _command[_index] = InsertCommand.OP_INSERT & 0xff; + // Adjust index + _index = _index + 4; + // Write flags if any + _command[_index + 3] = (this.flags >> 24) & 0xff; + _command[_index + 2] = (this.flags >> 16) & 0xff; + _command[_index + 1] = (this.flags >> 8) & 0xff; + _command[_index] = this.flags & 0xff; + // Adjust index + _index = _index + 4; + // Write the collection name to the command + _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; + _command[_index - 1] = 0; + + // Write all the bson documents to the buffer at the index offset + for(var i = 0; i < this.documents.length; i++) { + // Document binary length + var documentLength = 0 + var object = this.documents[i]; + + // Serialize the selector + // If we are passing a raw buffer, do minimal validation + if(Buffer.isBuffer(object)) { + documentLength = object.length; + // Copy the data into the current buffer + object.copy(_command, _index); + } else { + // Serialize the document straight to the buffer + documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; + } + + // Write the length to the document + _command[_index + 3] = (documentLength >> 24) & 0xff; + _command[_index + 2] = (documentLength >> 16) & 0xff; + _command[_index + 1] = (documentLength >> 8) & 0xff; + _command[_index] = documentLength & 0xff; + // Update index in buffer + _index = _index + documentLength; + // Add terminating 0 for the object + _command[_index - 1] = 0; + } + + return _command; +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js new file mode 100644 index 0000000..d8ccb0c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js @@ -0,0 +1,98 @@ +var BaseCommand = require('./base_command').BaseCommand, + inherits = require('util').inherits, + binaryutils = require('../utils'); + +/** + Insert Document Command +**/ +var KillCursorCommand = exports.KillCursorCommand = function(db, cursorIds) { + BaseCommand.call(this); + + this.cursorIds = cursorIds; + this.db = db; +}; + +inherits(KillCursorCommand, BaseCommand); + +KillCursorCommand.OP_KILL_CURSORS = 2007; + +/* +struct { + MsgHeader header; // standard message header + int32 ZERO; // 0 - reserved for future use + int32 numberOfCursorIDs; // number of cursorIDs in message + int64[] cursorIDs; // array of cursorIDs to close +} +*/ +KillCursorCommand.prototype.toBinary = function() { + // Calculate total length of the document + var totalLengthOfCommand = 4 + 4 + (4 * 4) + (this.cursorIds.length * 8); + // Let's build the single pass buffer command + var _index = 0; + var _command = new Buffer(totalLengthOfCommand); + // Write the header information to the buffer + _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; + _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; + _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; + _command[_index] = totalLengthOfCommand & 0xff; + // Adjust index + _index = _index + 4; + // Write the request ID + _command[_index + 3] = (this.requestId >> 24) & 0xff; + _command[_index + 2] = (this.requestId >> 16) & 0xff; + _command[_index + 1] = (this.requestId >> 8) & 0xff; + _command[_index] = this.requestId & 0xff; + // Adjust index + _index = _index + 4; + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + // Write the op_code for the command + _command[_index + 3] = (KillCursorCommand.OP_KILL_CURSORS >> 24) & 0xff; + _command[_index + 2] = (KillCursorCommand.OP_KILL_CURSORS >> 16) & 0xff; + _command[_index + 1] = (KillCursorCommand.OP_KILL_CURSORS >> 8) & 0xff; + _command[_index] = KillCursorCommand.OP_KILL_CURSORS & 0xff; + // Adjust index + _index = _index + 4; + + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + + // Number of cursors to kill + var numberOfCursors = this.cursorIds.length; + _command[_index + 3] = (numberOfCursors >> 24) & 0xff; + _command[_index + 2] = (numberOfCursors >> 16) & 0xff; + _command[_index + 1] = (numberOfCursors >> 8) & 0xff; + _command[_index] = numberOfCursors & 0xff; + // Adjust index + _index = _index + 4; + + // Encode all the cursors + for(var i = 0; i < this.cursorIds.length; i++) { + // Encode the cursor id + var low_bits = this.cursorIds[i].getLowBits(); + // Encode low bits + _command[_index + 3] = (low_bits >> 24) & 0xff; + _command[_index + 2] = (low_bits >> 16) & 0xff; + _command[_index + 1] = (low_bits >> 8) & 0xff; + _command[_index] = low_bits & 0xff; + // Adjust index + _index = _index + 4; + + var high_bits = this.cursorIds[i].getHighBits(); + // Encode high bits + _command[_index + 3] = (high_bits >> 24) & 0xff; + _command[_index + 2] = (high_bits >> 16) & 0xff; + _command[_index + 1] = (high_bits >> 8) & 0xff; + _command[_index] = high_bits & 0xff; + // Adjust index + _index = _index + 4; + } + + return _command; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js new file mode 100644 index 0000000..76829d9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js @@ -0,0 +1,261 @@ +var BaseCommand = require('./base_command').BaseCommand, + inherits = require('util').inherits; + +/** + Insert Document Command +**/ +var QueryCommand = exports.QueryCommand = function(db, collectionName, queryOptions, numberToSkip, numberToReturn, query, returnFieldSelector, options) { + BaseCommand.call(this); + + // Validate correctness off the selector + var object = query, + object_size; + if(Buffer.isBuffer(object)) { + object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) { + var error = new Error("query selector raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + object = returnFieldSelector; + if(Buffer.isBuffer(object)) { + object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) { + var error = new Error("query fields raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + // Make sure we don't get a null exception + options = options == null ? {} : options; + // Set up options + this.collectionName = collectionName; + this.queryOptions = queryOptions; + this.numberToSkip = numberToSkip; + this.numberToReturn = numberToReturn; + + // Ensure we have no null query + query = query == null ? {} : query; + // Wrap query in the $query parameter so we can add read preferences for mongos + this.query = query; + this.returnFieldSelector = returnFieldSelector; + this.db = db; + + // Let us defined on a command basis if we want functions to be serialized or not + if(options['serializeFunctions'] != null && options['serializeFunctions']) { + this.serializeFunctions = true; + } +}; + +inherits(QueryCommand, BaseCommand); + +QueryCommand.OP_QUERY = 2004; + +/* + * Adds the read prefrence to the current command + */ +QueryCommand.prototype.setMongosReadPreference = function(readPreference, tags) { + // If we have readPreference set to true set to secondary prefered + if(readPreference == true) { + readPreference = 'secondaryPreferred'; + } else if(readPreference == 'false') { + readPreference = 'primary'; + } + + // Force the slave ok flag to be set if we are not using primary read preference + if(readPreference != false && readPreference != 'primary') { + this.queryOptions |= QueryCommand.OPTS_SLAVE; + } + + // Backward compatibility, ensure $query only set on read preference so 1.8.X works + if((readPreference != null || tags != null) && this.query['$query'] == null) { + this.query = {'$query': this.query}; + } + + // If we have no readPreference set and no tags, check if the slaveOk bit is set + if(readPreference == null && tags == null) { + // If we have a slaveOk bit set the read preference for MongoS + if(this.queryOptions & QueryCommand.OPTS_SLAVE) { + this.query['$readPreference'] = {mode: 'secondary'} + } else { + this.query['$readPreference'] = {mode: 'primary'} + } + } + + // Build read preference object + if(typeof readPreference == 'object' && readPreference['_type'] == 'ReadPreference') { + this.query['$readPreference'] = readPreference.toObject(); + } else if(readPreference != null) { + // Add the read preference + this.query['$readPreference'] = {mode: readPreference}; + + // If we have tags let's add them + if(tags != null) { + this.query['$readPreference']['tags'] = tags; + } + } +} + +/* +struct { + MsgHeader header; // standard message header + int32 opts; // query options. See below for details. + cstring fullCollectionName; // "dbname.collectionname" + int32 numberToSkip; // number of documents to skip when returning results + int32 numberToReturn; // number of documents to return in the first OP_REPLY + BSON query ; // query object. See below for details. + [ BSON returnFieldSelector; ] // OPTIONAL : selector indicating the fields to return. See below for details. +} +*/ +QueryCommand.prototype.toBinary = function() { + // Total length of the command + var totalLengthOfCommand = 0; + // Calculate total length of the document + if(Buffer.isBuffer(this.query)) { + totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 4 + this.query.length + (4 * 4); + } else { + totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 4 + this.db.bson.calculateObjectSize(this.query, this.serializeFunctions, true) + (4 * 4); + } + + // Calculate extra fields size + if(this.returnFieldSelector != null && !(Buffer.isBuffer(this.returnFieldSelector))) { + if(Object.keys(this.returnFieldSelector).length > 0) { + totalLengthOfCommand += this.db.bson.calculateObjectSize(this.returnFieldSelector, this.serializeFunctions, true); + } + } else if(Buffer.isBuffer(this.returnFieldSelector)) { + totalLengthOfCommand += this.returnFieldSelector.length; + } + + // Let's build the single pass buffer command + var _index = 0; + var _command = new Buffer(totalLengthOfCommand); + // Write the header information to the buffer + _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; + _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; + _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; + _command[_index] = totalLengthOfCommand & 0xff; + // Adjust index + _index = _index + 4; + // Write the request ID + _command[_index + 3] = (this.requestId >> 24) & 0xff; + _command[_index + 2] = (this.requestId >> 16) & 0xff; + _command[_index + 1] = (this.requestId >> 8) & 0xff; + _command[_index] = this.requestId & 0xff; + // Adjust index + _index = _index + 4; + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + // Write the op_code for the command + _command[_index + 3] = (QueryCommand.OP_QUERY >> 24) & 0xff; + _command[_index + 2] = (QueryCommand.OP_QUERY >> 16) & 0xff; + _command[_index + 1] = (QueryCommand.OP_QUERY >> 8) & 0xff; + _command[_index] = QueryCommand.OP_QUERY & 0xff; + // Adjust index + _index = _index + 4; + + // Write the query options + _command[_index + 3] = (this.queryOptions >> 24) & 0xff; + _command[_index + 2] = (this.queryOptions >> 16) & 0xff; + _command[_index + 1] = (this.queryOptions >> 8) & 0xff; + _command[_index] = this.queryOptions & 0xff; + // Adjust index + _index = _index + 4; + + // Write the collection name to the command + _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; + _command[_index - 1] = 0; + + // Write the number of documents to skip + _command[_index + 3] = (this.numberToSkip >> 24) & 0xff; + _command[_index + 2] = (this.numberToSkip >> 16) & 0xff; + _command[_index + 1] = (this.numberToSkip >> 8) & 0xff; + _command[_index] = this.numberToSkip & 0xff; + // Adjust index + _index = _index + 4; + + // Write the number of documents to return + _command[_index + 3] = (this.numberToReturn >> 24) & 0xff; + _command[_index + 2] = (this.numberToReturn >> 16) & 0xff; + _command[_index + 1] = (this.numberToReturn >> 8) & 0xff; + _command[_index] = this.numberToReturn & 0xff; + // Adjust index + _index = _index + 4; + + // Document binary length + var documentLength = 0 + var object = this.query; + + // Serialize the selector + if(Buffer.isBuffer(object)) { + documentLength = object.length; + // Copy the data into the current buffer + object.copy(_command, _index); + } else { + // Serialize the document straight to the buffer + documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; + } + + // Write the length to the document + _command[_index + 3] = (documentLength >> 24) & 0xff; + _command[_index + 2] = (documentLength >> 16) & 0xff; + _command[_index + 1] = (documentLength >> 8) & 0xff; + _command[_index] = documentLength & 0xff; + // Update index in buffer + _index = _index + documentLength; + // Add terminating 0 for the object + _command[_index - 1] = 0; + + // Push field selector if available + if(this.returnFieldSelector != null && !(Buffer.isBuffer(this.returnFieldSelector))) { + if(Object.keys(this.returnFieldSelector).length > 0) { + var documentLength = this.db.bson.serializeWithBufferAndIndex(this.returnFieldSelector, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; + // Write the length to the document + _command[_index + 3] = (documentLength >> 24) & 0xff; + _command[_index + 2] = (documentLength >> 16) & 0xff; + _command[_index + 1] = (documentLength >> 8) & 0xff; + _command[_index] = documentLength & 0xff; + // Update index in buffer + _index = _index + documentLength; + // Add terminating 0 for the object + _command[_index - 1] = 0; + } + } if(this.returnFieldSelector != null && Buffer.isBuffer(this.returnFieldSelector)) { + // Document binary length + var documentLength = 0 + var object = this.returnFieldSelector; + + // Serialize the selector + documentLength = object.length; + // Copy the data into the current buffer + object.copy(_command, _index); + + // Write the length to the document + _command[_index + 3] = (documentLength >> 24) & 0xff; + _command[_index + 2] = (documentLength >> 16) & 0xff; + _command[_index + 1] = (documentLength >> 8) & 0xff; + _command[_index] = documentLength & 0xff; + // Update index in buffer + _index = _index + documentLength; + // Add terminating 0 for the object + _command[_index - 1] = 0; + } + + // Return finished command + return _command; +}; + +// Constants +QueryCommand.OPTS_NONE = 0; +QueryCommand.OPTS_TAILABLE_CURSOR = 2; +QueryCommand.OPTS_SLAVE = 4; +QueryCommand.OPTS_OPLOG_REPLY = 8; +QueryCommand.OPTS_NO_CURSOR_TIMEOUT = 16; +QueryCommand.OPTS_AWAIT_DATA = 32; +QueryCommand.OPTS_EXHAUST = 64; +QueryCommand.OPTS_PARTIAL = 128; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js new file mode 100644 index 0000000..9829dea --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js @@ -0,0 +1,174 @@ +var BaseCommand = require('./base_command').BaseCommand, + inherits = require('util').inherits; + +/** + Update Document Command +**/ +var UpdateCommand = exports.UpdateCommand = function(db, collectionName, spec, document, options) { + BaseCommand.call(this); + + var object = spec; + if(Buffer.isBuffer(object)) { + var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) { + var error = new Error("update spec raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + var object = document; + if(Buffer.isBuffer(object)) { + var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) { + var error = new Error("update document raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + error.name = 'MongoError'; + throw error; + } + } + + this.collectionName = collectionName; + this.spec = spec; + this.document = document; + this.db = db; + this.serializeFunctions = false; + + // Generate correct flags + var db_upsert = 0; + var db_multi_update = 0; + db_upsert = options != null && options['upsert'] != null ? (options['upsert'] == true ? 1 : 0) : db_upsert; + db_multi_update = options != null && options['multi'] != null ? (options['multi'] == true ? 1 : 0) : db_multi_update; + + // Flags + this.flags = parseInt(db_multi_update.toString() + db_upsert.toString(), 2); + // Let us defined on a command basis if we want functions to be serialized or not + if(options['serializeFunctions'] != null && options['serializeFunctions']) { + this.serializeFunctions = true; + } +}; + +inherits(UpdateCommand, BaseCommand); + +UpdateCommand.OP_UPDATE = 2001; + +/* +struct { + MsgHeader header; // standard message header + int32 ZERO; // 0 - reserved for future use + cstring fullCollectionName; // "dbname.collectionname" + int32 flags; // bit vector. see below + BSON spec; // the query to select the document + BSON document; // the document data to update with or insert +} +*/ +UpdateCommand.prototype.toBinary = function() { + // Calculate total length of the document + var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + this.db.bson.calculateObjectSize(this.spec, false, true) + + this.db.bson.calculateObjectSize(this.document, this.serializeFunctions, true) + (4 * 4); + + // Let's build the single pass buffer command + var _index = 0; + var _command = new Buffer(totalLengthOfCommand); + // Write the header information to the buffer + _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; + _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; + _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; + _command[_index] = totalLengthOfCommand & 0xff; + // Adjust index + _index = _index + 4; + // Write the request ID + _command[_index + 3] = (this.requestId >> 24) & 0xff; + _command[_index + 2] = (this.requestId >> 16) & 0xff; + _command[_index + 1] = (this.requestId >> 8) & 0xff; + _command[_index] = this.requestId & 0xff; + // Adjust index + _index = _index + 4; + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + // Write the op_code for the command + _command[_index + 3] = (UpdateCommand.OP_UPDATE >> 24) & 0xff; + _command[_index + 2] = (UpdateCommand.OP_UPDATE >> 16) & 0xff; + _command[_index + 1] = (UpdateCommand.OP_UPDATE >> 8) & 0xff; + _command[_index] = UpdateCommand.OP_UPDATE & 0xff; + // Adjust index + _index = _index + 4; + + // Write zero + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + _command[_index++] = 0; + + // Write the collection name to the command + _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; + _command[_index - 1] = 0; + + // Write the update flags + _command[_index + 3] = (this.flags >> 24) & 0xff; + _command[_index + 2] = (this.flags >> 16) & 0xff; + _command[_index + 1] = (this.flags >> 8) & 0xff; + _command[_index] = this.flags & 0xff; + // Adjust index + _index = _index + 4; + + // Document binary length + var documentLength = 0 + var object = this.spec; + + // Serialize the selector + // If we are passing a raw buffer, do minimal validation + if(Buffer.isBuffer(object)) { + var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) throw new Error("raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + documentLength = object.length; + // Copy the data into the current buffer + object.copy(_command, _index); + } else { + documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, false) - _index + 1; + } + + // Write the length to the document + _command[_index + 3] = (documentLength >> 24) & 0xff; + _command[_index + 2] = (documentLength >> 16) & 0xff; + _command[_index + 1] = (documentLength >> 8) & 0xff; + _command[_index] = documentLength & 0xff; + // Update index in buffer + _index = _index + documentLength; + // Add terminating 0 for the object + _command[_index - 1] = 0; + + // Document binary length + var documentLength = 0 + var object = this.document; + + // Serialize the document + // If we are passing a raw buffer, do minimal validation + if(Buffer.isBuffer(object)) { + var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; + if(object_size != object.length) throw new Error("raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); + documentLength = object.length; + // Copy the data into the current buffer + object.copy(_command, _index); + } else { + documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; + } + + // Write the length to the document + _command[_index + 3] = (documentLength >> 24) & 0xff; + _command[_index + 2] = (documentLength >> 16) & 0xff; + _command[_index + 1] = (documentLength >> 8) & 0xff; + _command[_index] = documentLength & 0xff; + // Update index in buffer + _index = _index + documentLength; + // Add terminating 0 for the object + _command[_index - 1] = 0; + + return _command; +}; + +// Constants +UpdateCommand.DB_UPSERT = 0; +UpdateCommand.DB_MULTI_UPDATE = 1; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js new file mode 100644 index 0000000..372b586 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js @@ -0,0 +1,465 @@ +var EventEmitter = require('events').EventEmitter + , inherits = require('util').inherits + , mongodb_cr_authenticate = require('../auth/mongodb_cr.js').authenticate + , mongodb_gssapi_authenticate = require('../auth/mongodb_gssapi.js').authenticate + , mongodb_sspi_authenticate = require('../auth/mongodb_sspi.js').authenticate; + +var id = 0; + +/** + * Internal class for callback storage + * @ignore + */ +var CallbackStore = function() { + // Make class an event emitter + EventEmitter.call(this); + // Add a info about call variable + this._notReplied = {}; + this.id = id++; +} + +/** + * @ignore + */ +inherits(CallbackStore, EventEmitter); + +CallbackStore.prototype.notRepliedToIds = function() { + return Object.keys(this._notReplied); +} + +CallbackStore.prototype.callbackInfo = function(id) { + return this._notReplied[id]; +} + +/** + * Internal class for holding non-executed commands + * @ignore + */ +var NonExecutedOperationStore = function(config) { + this.config = config; + this.commands = { + read: [] + , write_reads: [] + , write: [] + }; +} + +NonExecutedOperationStore.prototype.write = function(op) { + this.commands.write.push(op); +} + +NonExecutedOperationStore.prototype.read_from_writer = function(op) { + this.commands.write_reads.push(op); +} + +NonExecutedOperationStore.prototype.read = function(op) { + this.commands.read.push(op); +} + +NonExecutedOperationStore.prototype.execute_queries = function(executeInsertCommand) { + var connection = this.config.checkoutReader(); + if(connection == null || connection instanceof Error) return; + + // Write out all the queries + while(this.commands.read.length > 0) { + // Get the next command + var command = this.commands.read.shift(); + // command['options'].connection = this.config.checkoutReader(); + command.options.connection = connection; + // Execute the next command + command.executeQueryCommand(command.db, command.db_command, command.options, command.callback); + } +} + +NonExecutedOperationStore.prototype.execute_writes = function() { + var connection = this.config.checkoutWriter(); + if(connection == null || connection instanceof Error) return; + + // Write out all the queries to the primary + while(this.commands.write_reads.length > 0) { + // Get the next command + var command = this.commands.write_reads.shift(); + command.options.connection = connection; + // Execute the next command + command.executeQueryCommand(command.db, command.db_command, command.options, command.callback); + } + + // Execute all write operations + while(this.commands.write.length > 0) { + // Get the next command + var command = this.commands.write.shift(); + // Set the connection + command.options.connection = connection; + // Execute the next command + command.executeInsertCommand(command.db, command.db_command, command.options, command.callback); + } +} + +/** + * Internal class for authentication storage + * @ignore + */ +var AuthStore = function() { + this._auths = []; +} + +AuthStore.prototype.add = function(authMechanism, dbName, username, password, authdbName) { + // Check for duplicates + if(!this.contains(dbName)) { + // Base config + var config = { + 'username':username + , 'password':password + , 'db': dbName + , 'authMechanism': authMechanism + }; + + // Add auth source if passed in + if(typeof authdbName == 'string') { + config['authdb'] = authdbName; + } + + // Push the config + this._auths.push(config); + } +} + +AuthStore.prototype.contains = function(dbName) { + for(var i = 0; i < this._auths.length; i++) { + if(this._auths[i].db == dbName) return true; + } + + return false; +} + +AuthStore.prototype.remove = function(dbName) { + var newAuths = []; + + // Filter out all the login details + for(var i = 0; i < this._auths.length; i++) { + if(this._auths[i].db != dbName) newAuths.push(this._auths[i]); + } + + // Set the filtered list + this._auths = newAuths; +} + +AuthStore.prototype.get = function(index) { + return this._auths[index]; +} + +AuthStore.prototype.length = function() { + return this._auths.length; +} + +AuthStore.prototype.toArray = function() { + return this._auths.slice(0); +} + +/** + * Internal class for storing db references + * @ignore + */ +var DbStore = function() { + this._dbs = []; +} + +DbStore.prototype.add = function(db) { + // this._dbs.push(db); + var found = false; + // Only add if it does not exist already + for(var i = 0; i < this._dbs.length; i++) { + if(db.databaseName == this._dbs[i].databaseName) found = true; + } + + if(!found) this._dbs.push(db); +} + +DbStore.prototype.reset = function() { + this._dbs = []; +} + +DbStore.prototype.emit = function(event, message, object, reset, filterDb) { + if(reset) { + while(this._dbs.length > 0) { + var db = this._dbs.shift(); + // Only emit if there is a listener + if(db.listeners(event).length > 0) { + if(filterDb == null || filterDb.databaseName !== db.databaseName + || filterDb.tag !== db.tag) { + db.emit(event, message, object); + } + } + } + } else { + for(var i = 0; i < this._dbs.length; i++) { + if(this._dbs[i].listeners(event).length > 0) { + if(filterDb == null || filterDb.databaseName !== this._dbs[i].databaseName + || filterDb.tag !== this._dbs[i].tag) { + this._dbs[i].emit(event, message, object); + } + } + } + } +} + +var Base = function Base() { + EventEmitter.call(this); + + // Callback store is part of connection specification + if(Base._callBackStore == null) { + Base._callBackStore = new CallbackStore(); + } + + // Create a new callback store + this._callBackStore = new CallbackStore(); + // All commands not being executed + this._commandsStore = new NonExecutedOperationStore(this); + // Create a new auth store + this.auth = new AuthStore(); + // Contains all the dbs attached to this server config + this._dbStore = new DbStore(); +} + +/** + * @ignore + */ +inherits(Base, EventEmitter); + +/** + * @ignore + */ +Base.prototype._apply_auths = function(db, callback) { + _apply_auths_serially(this, db, this.auth.toArray(), callback); +} + +var _apply_auths_serially = function(self, db, auths, callback) { + if(auths.length == 0) return callback(null, null); + // Get the first auth + var auth = auths.shift(); + var connections = self.allRawConnections(); + var connectionsLeft = connections.length; + + // Let's apply it to all raw connections + for(var i = 0; i < connections.length; i++) { + if(auth.authMechanism == 'GSSAPI') { + var options = {connection: connections[i]}; + + var connectionHandler = function(err, result) { + connectionsLeft = connectionsLeft - 1; + // If no more connections are left return + if(connectionsLeft == 0) { + return _apply_auths_serially(self, db, auths, callback); + } + } + + // We have the kerberos library, execute auth process + if(process.platform == 'win32') { + mongodb_sspi_authenticate(db, auth.username, auth.password, auth.authdb, options, callback); + } else { + mongodb_gssapi_authenticate(db, auth.username, auth.password, auth.authdb, options, callback); + } + } else if(auth.authMechanism == 'MONGODB-CR') { + mongodb_cr_authenticate(db, auth.username, auth.password, auth.authdb, options, callback); + } + } +} + +/** + * Fire all the errors + * @ignore + */ +Base.prototype.__executeAllCallbacksWithError = function(err) { + // Check all callbacks + var keys = Object.keys(this._callBackStore._notReplied); + // For each key check if it's a callback that needs to be returned + for(var j = 0; j < keys.length; j++) { + var info = this._callBackStore._notReplied[keys[j]]; + // Check if we have a chained command (findAndModify) + if(info && info['chained'] && Array.isArray(info['chained']) && info['chained'].length > 0) { + var chained = info['chained']; + // Only callback once and the last one is the right one + var finalCallback = chained.pop(); + // Emit only the last event + this._callBackStore.emit(finalCallback, err, null); + + // Put back the final callback to ensure we don't call all commands in the chain + chained.push(finalCallback); + + // Remove all chained callbacks + for(var i = 0; i < chained.length; i++) { + delete this._callBackStore._notReplied[chained[i]]; + } + // Remove the key + delete this._callBackStore._notReplied[keys[j]]; + } else { + this._callBackStore.emit(keys[j], err, null); + // Remove the key + delete this._callBackStore._notReplied[keys[j]]; + } + } +} + +/** + * Fire all the errors + * @ignore + */ +Base.prototype.__executeAllServerSpecificErrorCallbacks = function(host, port, err) { + // Check all callbacks + var keys = Object.keys(this._callBackStore._notReplied); + // For each key check if it's a callback that needs to be returned + for(var j = 0; j < keys.length; j++) { + var info = this._callBackStore._notReplied[keys[j]]; + + if(info.connection) { + // Unpack the connection settings + var _host = info.connection.socketOptions.host; + var _port = info.connection.socketOptions.port; + // Check if we have a chained command (findAndModify) + if(info && info['chained'] + && Array.isArray(info['chained']) + && info['chained'].length > 0 + && _port == port && _host == host) { + var chained = info['chained']; + // Only callback once and the last one is the right one + var finalCallback = chained.pop(); + // Emit only the last event + this._callBackStore.emit(finalCallback, err, null); + + // Put back the final callback to ensure we don't call all commands in the chain + chained.push(finalCallback); + + // Remove all chained callbacks + for(var i = 0; i < chained.length; i++) { + delete this._callBackStore._notReplied[chained[i]]; + } + // Remove the key + delete this._callBackStore._notReplied[keys[j]]; + } else if(_port == port && _host == host) { + this._callBackStore.emit(keys[j], err, null); + // Remove the key + delete this._callBackStore._notReplied[keys[j]]; + } + } + } +} + +/** + * Register a handler + * @ignore + * @api private + */ +Base.prototype._registerHandler = function(db_command, raw, connection, exhaust, callback) { + // If we have an array of commands, chain them + var chained = Array.isArray(db_command); + + // Check if we have exhausted + if(typeof exhaust == 'function') { + callback = exhaust; + exhaust = false; + } + + // If they are chained we need to add a special handler situation + if(chained) { + // List off chained id's + var chainedIds = []; + // Add all id's + for(var i = 0; i < db_command.length; i++) chainedIds.push(db_command[i].getRequestId().toString()); + // Register all the commands together + for(var i = 0; i < db_command.length; i++) { + var command = db_command[i]; + // Add the callback to the store + this._callBackStore.once(command.getRequestId(), callback); + // Add the information about the reply + this._callBackStore._notReplied[command.getRequestId().toString()] = {start: new Date().getTime(), 'raw': raw, chained:chainedIds, connection:connection, exhaust:false}; + } + } else { + // Add the callback to the list of handlers + this._callBackStore.once(db_command.getRequestId(), callback); + // Add the information about the reply + this._callBackStore._notReplied[db_command.getRequestId().toString()] = {start: new Date().getTime(), 'raw': raw, connection:connection, exhaust:exhaust}; + } +} + +/** + * Re-Register a handler, on the cursor id f.ex + * @ignore + * @api private + */ +Base.prototype._reRegisterHandler = function(newId, object, callback) { + // Add the callback to the list of handlers + this._callBackStore.once(newId, object.callback.listener); + // Add the information about the reply + this._callBackStore._notReplied[newId] = object.info; +} + +/** + * + * @ignore + * @api private + */ +Base.prototype._callHandler = function(id, document, err) { + // If there is a callback peform it + if(this._callBackStore.listeners(id).length >= 1) { + // Get info object + var info = this._callBackStore._notReplied[id]; + // Delete the current object + delete this._callBackStore._notReplied[id]; + // Emit to the callback of the object + this._callBackStore.emit(id, err, document, info.connection); + } +} + +/** + * + * @ignore + * @api private + */ +Base.prototype._hasHandler = function(id) { + // If there is a callback peform it + return this._callBackStore.listeners(id).length >= 1; +} + +/** + * + * @ignore + * @api private + */ +Base.prototype._removeHandler = function(id) { + // Remove the information + if(this._callBackStore._notReplied[id] != null) delete this._callBackStore._notReplied[id]; + // Remove the callback if it's registered + this._callBackStore.removeAllListeners(id); + // Force cleanup _events, node.js seems to set it as a null value + if(this._callBackStore._events != null) delete this._callBackStore._events[id]; +} + +/** + * + * @ignore + * @api private + */ +Base.prototype._findHandler = function(id) { + var info = this._callBackStore._notReplied[id]; + // Return the callback + return {info:info, callback:(this._callBackStore.listeners(id).length >= 1) ? this._callBackStore.listeners(id)[0] : null} +} + +/** + * + * @ignore + * @api private + */ +Base.prototype._emitAcrossAllDbInstances = function(server, filterDb, event, message, object, resetConnection) { + if(resetConnection) { + for(var i = 0; i < this._dbStore._dbs.length; i++) { + if(typeof this._dbStore._dbs[i].openCalled != 'undefined') + this._dbStore._dbs[i].openCalled = false; + } + } + + // Fire event + this._dbStore.emit(event, message, object, resetConnection, filterDb); +} + +exports.Base = Base; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js new file mode 100644 index 0000000..6753fd2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js @@ -0,0 +1,505 @@ +var utils = require('./connection_utils'), + inherits = require('util').inherits, + net = require('net'), + EventEmitter = require('events').EventEmitter, + inherits = require('util').inherits, + binaryutils = require('../utils'), + tls = require('tls'); + +var Connection = exports.Connection = function(id, socketOptions) { + // Set up event emitter + EventEmitter.call(this); + // Store all socket options + this.socketOptions = socketOptions ? socketOptions : {host:'localhost', port:27017, domainSocket:false}; + // Set keep alive default if not overriden + if(this.socketOptions.keepAlive == null && (process.platform !== "sunos" || process.platform !== "win32")) this.socketOptions.keepAlive = 100; + // Id for the connection + this.id = id; + // State of the connection + this.connected = false; + // Set if this is a domain socket + this.domainSocket = this.socketOptions.domainSocket; + + // + // Connection parsing state + // + this.maxBsonSize = socketOptions.maxBsonSize ? socketOptions.maxBsonSize : Connection.DEFAULT_MAX_BSON_SIZE; + this.maxMessageSizeBytes = socketOptions.maxMessageSizeBytes ? socketOptions.maxMessageSizeBytes : Connection.DEFAULT_MAX_MESSAGE_SIZE; + // Contains the current message bytes + this.buffer = null; + // Contains the current message size + this.sizeOfMessage = 0; + // Contains the readIndex for the messaage + this.bytesRead = 0; + // Contains spill over bytes from additional messages + this.stubBuffer = 0; + + // Just keeps list of events we allow + this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[], timeout:[], end:[]}; + + // Just keeps list of events we allow + resetHandlers(this, false); +} + +// Set max bson size +Connection.DEFAULT_MAX_BSON_SIZE = 1024 * 1024 * 4; +// Set default to max bson to avoid overflow or bad guesses +Connection.DEFAULT_MAX_MESSAGE_SIZE = Connection.DEFAULT_MAX_BSON_SIZE; + +// Inherit event emitter so we can emit stuff wohoo +inherits(Connection, EventEmitter); + +Connection.prototype.start = function() { + var self = this; + + // If we have a normal connection + if(this.socketOptions.ssl) { + // Create new connection instance + if(this.domainSocket) { + this.connection = net.createConnection(this.socketOptions.host); + } else { + this.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host); + } + if(this.logger != null && this.logger.doDebug){ + this.logger.debug("opened connection", this.socketOptions); + } + // Set options on the socket + this.connection.setTimeout(this.socketOptions.connectTimeoutMS != null ? this.socketOptions.connectTimeoutMS : this.socketOptions.timeout); + // Work around for 0.4.X + if(process.version.indexOf("v0.4") == -1) this.connection.setNoDelay(this.socketOptions.noDelay); + // Set keep alive if defined + if(process.version.indexOf("v0.4") == -1) { + if(this.socketOptions.keepAlive > 0) { + this.connection.setKeepAlive(true, this.socketOptions.keepAlive); + } else { + this.connection.setKeepAlive(false); + } + } + + // Check if the driver should validate the certificate + var validate_certificates = this.socketOptions.sslValidate == true ? true : false; + + // Create options for the tls connection + var tls_options = { + socket: this.connection + , rejectUnauthorized: false + } + + // If we wish to validate the certificate we have provided a ca store + if(validate_certificates) { + tls_options.ca = this.socketOptions.sslCA; + } + + // If we have a certificate to present + if(this.socketOptions.sslCert) { + tls_options.cert = this.socketOptions.sslCert; + tls_options.key = this.socketOptions.sslKey; + } + + // If the driver has been provided a private key password + if(this.socketOptions.sslPass) { + tls_options.passphrase = this.socketOptions.sslPass; + } + + // Contains the cleartext stream + var cleartext = null; + // Attempt to establish a TLS connection to the server + try { + cleartext = tls.connect(this.socketOptions.port, this.socketOptions.host, tls_options, function() { + // If we have a ssl certificate validation error return an error + if(cleartext.authorizationError && validate_certificates) { + // Emit an error + return self.emit("error", cleartext.authorizationError, self, {ssl:true}); + } + + // Connect to the server + connectHandler(self)(); + }) + } catch(err) { + return self.emit("error", "SSL connection failed", self, {ssl:true}); + } + + // Save the output stream + this.writeSteam = cleartext; + + // Set up data handler for the clear stream + cleartext.on("data", createDataHandler(this)); + // Do any handling of end event of the stream + cleartext.on("end", endHandler(this)); + cleartext.on("error", errorHandler(this)); + + // Handle any errors + this.connection.on("error", errorHandler(this)); + // Handle timeout + this.connection.on("timeout", timeoutHandler(this)); + // Handle drain event + this.connection.on("drain", drainHandler(this)); + // Handle the close event + this.connection.on("close", closeHandler(this)); + } else { + // Create new connection instance + if(this.domainSocket) { + this.connection = net.createConnection(this.socketOptions.host); + } else { + this.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host); + } + if(this.logger != null && this.logger.doDebug){ + this.logger.debug("opened connection", this.socketOptions); + } + + // Set options on the socket + this.connection.setTimeout(this.socketOptions.connectTimeoutMS != null ? this.socketOptions.connectTimeoutMS : this.socketOptions.timeout); + // Work around for 0.4.X + if(process.version.indexOf("v0.4") == -1) this.connection.setNoDelay(this.socketOptions.noDelay); + // Set keep alive if defined + if(process.version.indexOf("v0.4") == -1) { + if(this.socketOptions.keepAlive > 0) { + this.connection.setKeepAlive(true, this.socketOptions.keepAlive); + } else { + this.connection.setKeepAlive(false); + } + } + + // Set up write stream + this.writeSteam = this.connection; + // Add handlers + this.connection.on("error", errorHandler(this)); + // Add all handlers to the socket to manage it + this.connection.on("connect", connectHandler(this)); + // this.connection.on("end", endHandler(this)); + this.connection.on("data", createDataHandler(this)); + this.connection.on("timeout", timeoutHandler(this)); + this.connection.on("drain", drainHandler(this)); + this.connection.on("close", closeHandler(this)); + } +} + +// Check if the sockets are live +Connection.prototype.isConnected = function() { + return this.connected && !this.connection.destroyed && this.connection.writable && this.connection.readable; +} + +// Write the data out to the socket +Connection.prototype.write = function(command, callback) { + try { + // If we have a list off commands to be executed on the same socket + if(Array.isArray(command)) { + for(var i = 0; i < command.length; i++) { + var binaryCommand = command[i].toBinary() + + if(!this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxBsonSize) + return callback(new Error("Document exceeds maximum allowed bson size of " + this.maxBsonSize + " bytes")); + + if(this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxMessageSizeBytes) { + return callback(new Error("Command exceeds maximum message size of " + this.maxMessageSizeBytes + " bytes")); + } + + if(this.logger != null && this.logger.doDebug) + this.logger.debug("writing command to mongodb", {binary: binaryCommand, json: command[i]}); + + var r = this.writeSteam.write(binaryCommand); + } + } else { + var binaryCommand = command.toBinary() + + if(!this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxBsonSize) + return callback(new Error("Document exceeds maximum allowed bson size of " + this.maxBsonSize + " bytes")); + + if(this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxMessageSizeBytes) { + return callback(new Error("Command exceeds maximum message size of " + this.maxMessageSizeBytes + " bytes")); + } + + if(this.logger != null && this.logger.doDebug) + this.logger.debug("writing command to mongodb", {binary: binaryCommand, json: command}); + + var r = this.writeSteam.write(binaryCommand); + } + } catch (err) { + if(typeof callback === 'function') callback(err); + } +} + +// Force the closure of the connection +Connection.prototype.close = function() { + // clear out all the listeners + resetHandlers(this, true); + // Add a dummy error listener to catch any weird last moment errors (and ignore them) + this.connection.on("error", function() {}) + // destroy connection + this.connection.destroy(); + if(this.logger != null && this.logger.doDebug){ + this.logger.debug("closed connection", this.connection); + } +} + +// Reset all handlers +var resetHandlers = function(self, clearListeners) { + self.eventHandlers = {error:[], connect:[], close:[], end:[], timeout:[], parseError:[], message:[]}; + + // If we want to clear all the listeners + if(clearListeners && self.connection != null) { + var keys = Object.keys(self.eventHandlers); + // Remove all listeners + for(var i = 0; i < keys.length; i++) { + self.connection.removeAllListeners(keys[i]); + } + } +} + +// +// Handlers +// + +// Connect handler +var connectHandler = function(self) { + return function(data) { + // Set connected + self.connected = true; + // Now that we are connected set the socket timeout + self.connection.setTimeout(self.socketOptions.socketTimeoutMS != null ? self.socketOptions.socketTimeoutMS : self.socketOptions.timeout); + // Emit the connect event with no error + self.emit("connect", null, self); + } +} + +var createDataHandler = exports.Connection.createDataHandler = function(self) { + // We need to handle the parsing of the data + // and emit the messages when there is a complete one + return function(data) { + // Parse until we are done with the data + while(data.length > 0) { + // If we still have bytes to read on the current message + if(self.bytesRead > 0 && self.sizeOfMessage > 0) { + // Calculate the amount of remaining bytes + var remainingBytesToRead = self.sizeOfMessage - self.bytesRead; + // Check if the current chunk contains the rest of the message + if(remainingBytesToRead > data.length) { + // Copy the new data into the exiting buffer (should have been allocated when we know the message size) + data.copy(self.buffer, self.bytesRead); + // Adjust the number of bytes read so it point to the correct index in the buffer + self.bytesRead = self.bytesRead + data.length; + + // Reset state of buffer + data = new Buffer(0); + } else { + // Copy the missing part of the data into our current buffer + data.copy(self.buffer, self.bytesRead, 0, remainingBytesToRead); + // Slice the overflow into a new buffer that we will then re-parse + data = data.slice(remainingBytesToRead); + + // Emit current complete message + try { + var emitBuffer = self.buffer; + // Reset state of buffer + self.buffer = null; + self.sizeOfMessage = 0; + self.bytesRead = 0; + self.stubBuffer = null; + // Emit the buffer + self.emit("message", emitBuffer, self); + } catch(err) { + var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{ + sizeOfMessage:self.sizeOfMessage, + bytesRead:self.bytesRead, + stubBuffer:self.stubBuffer}}; + if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); + // We got a parse Error fire it off then keep going + self.emit("parseError", errorObject, self); + } + } + } else { + // Stub buffer is kept in case we don't get enough bytes to determine the + // size of the message (< 4 bytes) + if(self.stubBuffer != null && self.stubBuffer.length > 0) { + + // If we have enough bytes to determine the message size let's do it + if(self.stubBuffer.length + data.length > 4) { + // Prepad the data + var newData = new Buffer(self.stubBuffer.length + data.length); + self.stubBuffer.copy(newData, 0); + data.copy(newData, self.stubBuffer.length); + // Reassign for parsing + data = newData; + + // Reset state of buffer + self.buffer = null; + self.sizeOfMessage = 0; + self.bytesRead = 0; + self.stubBuffer = null; + + } else { + + // Add the the bytes to the stub buffer + var newStubBuffer = new Buffer(self.stubBuffer.length + data.length); + // Copy existing stub buffer + self.stubBuffer.copy(newStubBuffer, 0); + // Copy missing part of the data + data.copy(newStubBuffer, self.stubBuffer.length); + // Exit parsing loop + data = new Buffer(0); + } + } else { + if(data.length > 4) { + // Retrieve the message size + var sizeOfMessage = binaryutils.decodeUInt32(data, 0); + // If we have a negative sizeOfMessage emit error and return + if(sizeOfMessage < 0 || sizeOfMessage > self.maxBsonSize) { + var errorObject = {err:"socketHandler", trace:'', bin:self.buffer, parseState:{ + sizeOfMessage: sizeOfMessage, + bytesRead: self.bytesRead, + stubBuffer: self.stubBuffer}}; + if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); + // We got a parse Error fire it off then keep going + self.emit("parseError", errorObject, self); + return; + } + + // Ensure that the size of message is larger than 0 and less than the max allowed + if(sizeOfMessage > 4 && sizeOfMessage < self.maxBsonSize && sizeOfMessage > data.length) { + self.buffer = new Buffer(sizeOfMessage); + // Copy all the data into the buffer + data.copy(self.buffer, 0); + // Update bytes read + self.bytesRead = data.length; + // Update sizeOfMessage + self.sizeOfMessage = sizeOfMessage; + // Ensure stub buffer is null + self.stubBuffer = null; + // Exit parsing loop + data = new Buffer(0); + + } else if(sizeOfMessage > 4 && sizeOfMessage < self.maxBsonSize && sizeOfMessage == data.length) { + try { + var emitBuffer = data; + // Reset state of buffer + self.buffer = null; + self.sizeOfMessage = 0; + self.bytesRead = 0; + self.stubBuffer = null; + // Exit parsing loop + data = new Buffer(0); + // Emit the message + self.emit("message", emitBuffer, self); + } catch (err) { + var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{ + sizeOfMessage:self.sizeOfMessage, + bytesRead:self.bytesRead, + stubBuffer:self.stubBuffer}}; + if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); + // We got a parse Error fire it off then keep going + self.emit("parseError", errorObject, self); + } + } else if(sizeOfMessage <= 4 || sizeOfMessage > self.maxBsonSize) { + var errorObject = {err:"socketHandler", trace:null, bin:data, parseState:{ + sizeOfMessage:sizeOfMessage, + bytesRead:0, + buffer:null, + stubBuffer:null}}; + if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); + // We got a parse Error fire it off then keep going + self.emit("parseError", errorObject, self); + + // Clear out the state of the parser + self.buffer = null; + self.sizeOfMessage = 0; + self.bytesRead = 0; + self.stubBuffer = null; + // Exit parsing loop + data = new Buffer(0); + + } else { + try { + var emitBuffer = data.slice(0, sizeOfMessage); + // Reset state of buffer + self.buffer = null; + self.sizeOfMessage = 0; + self.bytesRead = 0; + self.stubBuffer = null; + // Copy rest of message + data = data.slice(sizeOfMessage); + // Emit the message + self.emit("message", emitBuffer, self); + } catch (err) { + var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{ + sizeOfMessage:sizeOfMessage, + bytesRead:self.bytesRead, + stubBuffer:self.stubBuffer}}; + if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); + // We got a parse Error fire it off then keep going + self.emit("parseError", errorObject, self); + } + + } + } else { + // Create a buffer that contains the space for the non-complete message + self.stubBuffer = new Buffer(data.length) + // Copy the data to the stub buffer + data.copy(self.stubBuffer, 0); + // Exit parsing loop + data = new Buffer(0); + } + } + } + } + } +} + +var endHandler = function(self) { + return function() { + // Set connected to false + self.connected = false; + // Emit end event + self.emit("end", {err: 'connection received Fin packet from [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); + } +} + +var timeoutHandler = function(self) { + return function() { + // Set connected to false + self.connected = false; + // Emit timeout event + self.emit("timeout", {err: 'connection to [' + self.socketOptions.host + ':' + self.socketOptions.port + '] timed out'}, self); + } +} + +var drainHandler = function(self) { + return function() { + } +} + +var errorHandler = function(self) { + return function(err) { + self.connection.destroy(); + // Set connected to false + self.connected = false; + // Emit error + self.emit("error", {err: 'failed to connect to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); + } +} + +var closeHandler = function(self) { + return function(hadError) { + // If we have an error during the connection phase + if(hadError && !self.connected) { + // Set disconnected + self.connected = false; + // Emit error + self.emit("error", {err: 'failed to connect to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); + } else { + // Set disconnected + self.connected = false; + // Emit close + self.emit("close", {err: 'connection closed to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); + } + } +} + +// Some basic defaults +Connection.DEFAULT_PORT = 27017; + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js new file mode 100644 index 0000000..94cf754 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js @@ -0,0 +1,294 @@ +var utils = require('./connection_utils'), + inherits = require('util').inherits, + net = require('net'), + timers = require('timers'), + EventEmitter = require('events').EventEmitter, + inherits = require('util').inherits, + MongoReply = require("../responses/mongo_reply").MongoReply, + Connection = require("./connection").Connection; + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; +processor = process.nextTick + +var ConnectionPool = exports.ConnectionPool = function(host, port, poolSize, bson, socketOptions) { + if(typeof host !== 'string') { + throw new Error("host must be specified [" + host + "]"); + } + + // Set up event emitter + EventEmitter.call(this); + + // Keep all options for the socket in a specific collection allowing the user to specify the + // Wished upon socket connection parameters + this.socketOptions = typeof socketOptions === 'object' ? socketOptions : {}; + this.socketOptions.host = host; + this.socketOptions.port = port; + this.socketOptions.domainSocket = false; + this.bson = bson; + // PoolSize is always + 1 for special reserved "measurment" socket (like ping, stats etc) + this.poolSize = poolSize; + this.minPoolSize = Math.floor(this.poolSize / 2) + 1; + + // Check if the host is a socket + if(host.match(/^\//)) { + this.socketOptions.domainSocket = true; + } else if(typeof port === 'string') { + try { + port = parseInt(port, 10); + } catch(err) { + new Error("port must be specified or valid integer[" + port + "]"); + } + } else if(typeof port !== 'number') { + throw new Error("port must be specified [" + port + "]"); + } + + // Set default settings for the socket options + utils.setIntegerParameter(this.socketOptions, 'timeout', 0); + // Delay before writing out the data to the server + utils.setBooleanParameter(this.socketOptions, 'noDelay', true); + // Delay before writing out the data to the server + utils.setIntegerParameter(this.socketOptions, 'keepAlive', 0); + // Set the encoding of the data read, default is binary == null + utils.setStringParameter(this.socketOptions, 'encoding', null); + // Allows you to set a throttling bufferSize if you need to stop overflows + utils.setIntegerParameter(this.socketOptions, 'bufferSize', 0); + + // Internal structures + this.openConnections = []; + // Assign connection id's + this.connectionId = 0; + + // Current index for selection of pool connection + this.currentConnectionIndex = 0; + // The pool state + this._poolState = 'disconnected'; + // timeout control + this._timeout = false; + // Time to wait between connections for the pool + this._timeToWait = 10; +} + +inherits(ConnectionPool, EventEmitter); + +ConnectionPool.prototype.setMaxBsonSize = function(maxBsonSize) { + if(maxBsonSize == null){ + maxBsonSize = Connection.DEFAULT_MAX_BSON_SIZE; + } + + for(var i = 0; i < this.openConnections.length; i++) { + this.openConnections[i].maxBsonSize = maxBsonSize; + } +} + +ConnectionPool.prototype.setMaxMessageSizeBytes = function(maxMessageSizeBytes) { + if(maxMessageSizeBytes == null){ + maxMessageSizeBytes = Connection.DEFAULT_MAX_MESSAGE_SIZE; + } + + for(var i = 0; i < this.openConnections.length; i++) { + this.openConnections[i].maxMessageSizeBytes = maxMessageSizeBytes; + } +} + +// Start a function +var _connect = function(_self) { + // return new function() { + // Create a new connection instance + var connection = new Connection(_self.connectionId++, _self.socketOptions); + // Set logger on pool + connection.logger = _self.logger; + // Connect handler + connection.on("connect", function(err, connection) { + // Add connection to list of open connections + _self.openConnections.push(connection); + // If the number of open connections is equal to the poolSize signal ready pool + if(_self.openConnections.length === _self.poolSize && _self._poolState !== 'disconnected') { + // Set connected + _self._poolState = 'connected'; + // Emit pool ready + _self.emit("poolReady"); + } else if(_self.openConnections.length < _self.poolSize) { + // Wait a little bit of time to let the close event happen if the server closes the connection + // so we don't leave hanging connections around + if(typeof _self._timeToWait == 'number') { + setTimeout(function() { + // If we are still connecting (no close events fired in between start another connection) + if(_self._poolState == 'connecting') { + _connect(_self); + } + }, _self._timeToWait); + } else { + processor(function() { + // If we are still connecting (no close events fired in between start another connection) + if(_self._poolState == 'connecting') { + _connect(_self); + } + }); + } + } + }); + + var numberOfErrors = 0 + + // Error handler + connection.on("error", function(err, connection, error_options) { + numberOfErrors++; + // If we are already disconnected ignore the event + if(_self._poolState != 'disconnected' && _self.listeners("error").length > 0) { + _self.emit("error", err, connection, error_options); + } + + // Close the connection + connection.close(); + // Set pool as disconnected + _self._poolState = 'disconnected'; + // Stop the pool + _self.stop(); + }); + + // Close handler + connection.on("close", function() { + // If we are already disconnected ignore the event + if(_self._poolState !== 'disconnected' && _self.listeners("close").length > 0) { + _self.emit("close"); + } + + // Set disconnected + _self._poolState = 'disconnected'; + // Stop + _self.stop(); + }); + + // Timeout handler + connection.on("timeout", function(err, connection) { + // If we are already disconnected ignore the event + if(_self._poolState !== 'disconnected' && _self.listeners("timeout").length > 0) { + _self.emit("timeout", err); + } + + // Close the connection + connection.close(); + // Set disconnected + _self._poolState = 'disconnected'; + _self.stop(); + }); + + // Parse error, needs a complete shutdown of the pool + connection.on("parseError", function() { + // If we are already disconnected ignore the event + if(_self._poolState !== 'disconnected' && _self.listeners("parseError").length > 0) { + _self.emit("parseError", new Error("parseError occured")); + } + + // Set disconnected + _self._poolState = 'disconnected'; + _self.stop(); + }); + + connection.on("message", function(message) { + _self.emit("message", message); + }); + + // Start connection in the next tick + connection.start(); + // }(); +} + + +// Start method, will throw error if no listeners are available +// Pass in an instance of the listener that contains the api for +// finding callbacks for a given message etc. +ConnectionPool.prototype.start = function() { + var markerDate = new Date().getTime(); + var self = this; + + if(this.listeners("poolReady").length == 0) { + throw "pool must have at least one listener ready that responds to the [poolReady] event"; + } + + // Set pool state to connecting + this._poolState = 'connecting'; + this._timeout = false; + + _connect(self); +} + +// Restart a connection pool (on a close the pool might be in a wrong state) +ConnectionPool.prototype.restart = function() { + // Close all connections + this.stop(false); + // Now restart the pool + this.start(); +} + +// Stop the connections in the pool +ConnectionPool.prototype.stop = function(removeListeners) { + removeListeners = removeListeners == null ? true : removeListeners; + // Set disconnected + this._poolState = 'disconnected'; + + // Clear all listeners if specified + if(removeListeners) { + this.removeAllEventListeners(); + } + + // Close all connections + for(var i = 0; i < this.openConnections.length; i++) { + this.openConnections[i].close(); + } + + // Clean up + this.openConnections = []; +} + +// Check the status of the connection +ConnectionPool.prototype.isConnected = function() { + // return this._poolState === 'connected'; + return this.openConnections.length > 0 && this.openConnections[0].isConnected(); +} + +// Checkout a connection from the pool for usage, or grab a specific pool instance +ConnectionPool.prototype.checkoutConnection = function(id) { + var index = (this.currentConnectionIndex++ % (this.openConnections.length)); + var connection = this.openConnections[index]; + return connection; +} + +ConnectionPool.prototype.getAllConnections = function() { + return this.openConnections; +} + +// Remove all non-needed event listeners +ConnectionPool.prototype.removeAllEventListeners = function() { + this.removeAllListeners("close"); + this.removeAllListeners("error"); + this.removeAllListeners("timeout"); + this.removeAllListeners("connect"); + this.removeAllListeners("end"); + this.removeAllListeners("parseError"); + this.removeAllListeners("message"); + this.removeAllListeners("poolReady"); +} + + + + + + + + + + + + + + + + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js new file mode 100644 index 0000000..5910924 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js @@ -0,0 +1,23 @@ +exports.setIntegerParameter = function(object, field, defaultValue) { + if(object[field] == null) { + object[field] = defaultValue; + } else if(typeof object[field] !== "number" && object[field] !== parseInt(object[field], 10)) { + throw "object field [" + field + "] must be a numeric integer value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]"; + } +} + +exports.setBooleanParameter = function(object, field, defaultValue) { + if(object[field] == null) { + object[field] = defaultValue; + } else if(typeof object[field] !== "boolean") { + throw "object field [" + field + "] must be a boolean value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]"; + } +} + +exports.setStringParameter = function(object, field, defaultValue) { + if(object[field] == null) { + object[field] = defaultValue; + } else if(typeof object[field] !== "string") { + throw "object field [" + field + "] must be a string value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]"; + } +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js new file mode 100644 index 0000000..f0617ab --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js @@ -0,0 +1,471 @@ +var ReadPreference = require('./read_preference').ReadPreference + , Base = require('./base').Base + , Server = require('./server').Server + , inherits = require('util').inherits; + +/** + * Mongos constructor provides a connection to a mongos proxy including failover to additional servers + * + * Options + * - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number)) + * - **ha** {Boolean, default:true}, turn on high availability, attempts to reconnect to down proxies + * - **haInterval** {Number, default:2000}, time between each replicaset status check. + * + * @class Represents a Mongos connection with failover to backup proxies + * @param {Array} list of mongos server objects + * @param {Object} [options] additional options for the mongos connection + */ +var Mongos = function Mongos(servers, options) { + // Set up basic + if(!(this instanceof Mongos)) + return new Mongos(servers, options); + + // Set up event emitter + Base.call(this); + + // Throw error on wrong setup + if(servers == null || !Array.isArray(servers) || servers.length == 0) + throw new Error("At least one mongos proxy must be in the array"); + + // Ensure we have at least an empty options object + this.options = options == null ? {} : options; + // Set default connection pool options + this.socketOptions = this.options.socketOptions != null ? this.options.socketOptions : {}; + // Enabled ha + this.haEnabled = this.options['ha'] == null ? true : this.options['ha']; + this._haInProgress = false; + // How often are we checking for new servers in the replicaset + this.mongosStatusCheckInterval = this.options['haInterval'] == null ? 1000 : this.options['haInterval']; + // Save all the server connections + this.servers = servers; + // Servers we need to attempt reconnect with + this.downServers = []; + // Just contains the current lowest ping time and server + this.lowestPingTimeServer = null; + this.lowestPingTime = 0; + + // Connection timeout + this._connectTimeoutMS = this.socketOptions.connectTimeoutMS + ? this.socketOptions.connectTimeoutMS + : 1000; + + // Add options to servers + for(var i = 0; i < this.servers.length; i++) { + var server = this.servers[i]; + server._callBackStore = this._callBackStore; + server.auto_reconnect = false; + // Default empty socket options object + var socketOptions = {host: server.host, port: server.port}; + // If a socket option object exists clone it + if(this.socketOptions != null) { + var keys = Object.keys(this.socketOptions); + for(var k = 0; k < keys.length;k++) socketOptions[keys[i]] = this.socketOptions[keys[i]]; + } + + // Set socket options + server.socketOptions = socketOptions; + } +} + +/** + * @ignore + */ +inherits(Mongos, Base); + +/** + * @ignore + */ +Mongos.prototype.isMongos = function() { + return true; +} + +/** + * @ignore + */ +Mongos.prototype.connect = function(db, options, callback) { + if('function' === typeof options) callback = options, options = {}; + if(options == null) options = {}; + if(!('function' === typeof callback)) callback = null; + var self = this; + + // Keep reference to parent + this.db = db; + // Set server state to connecting + this._serverState = 'connecting'; + // Number of total servers that need to initialized (known servers) + this._numberOfServersLeftToInitialize = this.servers.length; + // Connect handler + var connectHandler = function(_server) { + return function(err, result) { + self._numberOfServersLeftToInitialize = self._numberOfServersLeftToInitialize - 1; + + if(self._numberOfServersLeftToInitialize == 0) { + // Start ha function if it exists + if(self.haEnabled) { + // Setup the ha process + if(self._replicasetTimeoutId != null) clearInterval(self._replicasetTimeoutId); + self._replicasetTimeoutId = setInterval(self.mongosCheckFunction, self.mongosStatusCheckInterval); + } + + // Set the mongos to connected + self._serverState = "connected"; + // Emit the open event + self.db.emit("open", null, self.db); + // Callback + callback(null, self.db); + } + } + }; + + // Error handler + var errorOrCloseHandler = function(_server) { + return function(err, result) { + var validServers = []; + // Execute all the callbacks with errors + self.__executeAllCallbacksWithError(err); + + // // We are going to process all the non-replied to callbacks timing out any that has gone over the socket time out settings + // if(typeof self.socketOptions.socketTimeoutMS == 'number' && self.socketOptions.socketTimeoutMS > 0) + // self._timeoutCalls(self.socketOptions.socketTimeoutMS * 1.1); + + // Check if we have the server + var found = false; + // Save the down server if it does not already exists + for(var i = 0; i < self.downServers.length; i++) { + if(self.downServers[i].host == _server.host && self.downServers[i].port == _server.port) { + found = true; + break; + } + } + + if(!found) + self.downServers.push(_server); + + // Remove the current server from the list + for(var i = 0; i < self.servers.length; i++) { + if(!(self.servers[i].host == _server.host && self.servers[i].port == _server.port) && self.servers[i].isConnected()) { + validServers.push(self.servers[i]); + } + } + + // Set current list of servers + self.servers = validServers; + + // Emit close across all the attached db instances + if(self.servers.length == 0) { + self._dbStore.emit("close", new Error("mongos disconnected, no valid proxies contactable over tcp"), null, true); + } + } + } + + // Mongo function + this.mongosCheckFunction = function() { + if(self._haInProgress) return; + // If all servers are down we are done + if(self.servers.length == 0) return; + + // Check that at least one server is available + var alldown = true; + for(var i = 0; i < self.servers.length; i++) { + if(self.servers[i].isConnected()) { + alldown = false; + break; + } + } + + // All servers are down + if(alldown) return; + + // Set as not waiting for check event + self._haInProgress = true; + // Check downed servers + if(self.downServers.length > 0) { + var numberOfServersLeft = self.downServers.length; + + // Iterate over all the downed servers + for(var i = 0; i < self.downServers.length; i++) { + // Pop a downed server + var downServer = self.downServers.pop(); + + // Set up the connection options for a Mongos + var options = { + auto_reconnect: false, + returnIsMasterResults: true, + slaveOk: true, + poolSize: downServer.poolSize, + socketOptions: { + connectTimeoutMS: self._connectTimeoutMS, + socketTimeoutMS: self._socketTimeoutMS + } + } + + // Create a new server object + var newServer = new Server(downServer.host, downServer.port, options); + // Setup the connection function + var connectFunction = function(_db, _server, _options, _callback) { + return function() { + // Attempt to connect + _server.connect(_db, _options, function(err, result) { + numberOfServersLeft = numberOfServersLeft - 1; + + if(err) { + return _callback(err, _server); + } else { + // Set the new server settings + _server._callBackStore = self._callBackStore; + + // Add server event handlers + _server.on("close", errorOrCloseHandler(_server)); + _server.on("timeout", errorOrCloseHandler(_server)); + _server.on("error", errorOrCloseHandler(_server)); + + // Get a read connection + var _connection = _server.checkoutReader(); + // Get the start time + var startTime = new Date().getTime(); + + // Execute ping command to mark each server with the expected times + self.db.command({ping:1} + , {failFast:true, connection:_connection}, function(err, result) { + // Get the start time + var endTime = new Date().getTime(); + // Mark the server with the ping time + _server.runtimeStats['pingMs'] = endTime - startTime; + // Sort the servers on runtime so the first server always is the closest one + self.servers.sort(function(a, b) { + return a.runtimeStats['pingMs'] > b.runtimeStats['pingMs']; + }); + + // Callback + return _callback(null, _server); + }); + } + }); + } + } + + // Attempt to connect to the database + connectFunction(self.db, newServer, options, function(err, _server) { + // If we have an error + if(err) { + self.downServers.push(_server); + } + + // Connection function + var connectionFunction = function(_auth, _connection, _callback) { + var pending = _auth.length(); + + for(var j = 0; j < pending; j++) { + // Get the auth object + var _auth = _auth.get(j); + // Unpack the parameter + var username = _auth.username; + var password = _auth.password; + var options = { + authMechanism: _auth.authMechanism + , authSource: _auth.authdb + , connection: _connection + }; + + // Hold any error + var _error = null; + // Authenticate against the credentials + self.db.authenticate(username, password, options, function(err, result) { + _error = err != null ? err : _error; + // Adjust the pending authentication + pending = pending - 1; + // Finished up + if(pending == 0) _callback(_error ? _error : null, _error ? false : true); + }); + } + } + + // Run auths against the connections + if(self.auth.length() > 0) { + var connections = _server.allRawConnections(); + var pendingAuthConn = connections.length; + + // No connections we are done + if(connections.length == 0) { + // Set ha done + if(numberOfServersLeft == 0) { + self._haInProgress = false; + } + } + + // Final error object + var finalError = null; + // Go over all the connections + for(var j = 0; j < connections.length; j++) { + + // Execute against all the connections + connectionFunction(self.auth, connections[j], function(err, result) { + // Pending authentication + pendingAuthConn = pendingAuthConn - 1 ; + + // Save error if any + finalError = err ? err : finalError; + + // If we are done let's finish up + if(pendingAuthConn == 0) { + // Set ha done + if(numberOfServersLeft == 0) { + self._haInProgress = false; + } + + if(finalError) { + return self.downServers.push(_server); + } + + // Push to list of valid server + self.servers.push(_server); + } + }); + } + } else { + self.servers.push(_server); + // Set ha done + if(numberOfServersLeft == 0) { + self._haInProgress = false; + } + } + })(); + } + } else { + self._haInProgress = false; + } + } + + // Connect all the server instances + for(var i = 0; i < this.servers.length; i++) { + // Get the connection + var server = this.servers[i]; + server.mongosInstance = this; + // Add server event handlers + server.on("close", errorOrCloseHandler(server)); + server.on("timeout", errorOrCloseHandler(server)); + server.on("error", errorOrCloseHandler(server)); + + // Configuration + var options = { + slaveOk: true, + poolSize: server.poolSize, + socketOptions: { connectTimeoutMS: self._connectTimeoutMS }, + returnIsMasterResults: true + } + + // Connect the instance + server.connect(self.db, options, connectHandler(server)); + } +} + +/** + * @ignore + * Just return the currently picked active connection + */ +Mongos.prototype.allServerInstances = function() { + return this.servers; +} + +/** + * Always ourselves + * @ignore + */ +Mongos.prototype.setReadPreference = function() {} + +/** + * @ignore + */ +Mongos.prototype.allRawConnections = function() { + // Neeed to build a complete list of all raw connections, start with master server + var allConnections = []; + // Add all connections + for(var i = 0; i < this.servers.length; i++) { + allConnections = allConnections.concat(this.servers[i].allRawConnections()); + } + + // Return all the conections + return allConnections; +} + +/** + * @ignore + */ +Mongos.prototype.isConnected = function() { + return this._serverState == "connected"; +} + +/** + * @ignore + */ +Mongos.prototype.canWrite = Mongos.prototype.isConnected; + +/** + * @ignore + */ +Mongos.prototype.canRead = Mongos.prototype.isConnected; + +/** + * @ignore + */ +Mongos.prototype.isDestroyed = function() { + return this._serverState == 'destroyed'; +} + +/** + * @ignore + */ +Mongos.prototype.checkoutWriter = function() { + if(this.servers.length == 0) return null; + return this.servers[0].checkoutWriter(); +} + +/** + * @ignore + */ +Mongos.prototype.checkoutReader = function(read) { + // If we have a read preference object unpack it + if(read != null && typeof read == 'object' && read['_type'] == 'ReadPreference') { + // Validate if the object is using a valid mode + if(!read.isValid()) throw new Error("Illegal readPreference mode specified, " + read.mode); + } else if(!ReadPreference.isValid(read)) { + throw new Error("Illegal readPreference mode specified, " + read); + } + + if(this.servers.length == 0) return null; + return this.servers[0].checkoutWriter(); +} + +/** + * @ignore + */ +Mongos.prototype.close = function(callback) { + var self = this; + // Set server status as disconnected + this._serverState = 'destroyed'; + // Number of connections to close + var numberOfConnectionsToClose = self.servers.length; + // If we have a ha process running kill it + if(self._replicasetTimeoutId != null) clearInterval(self._replicasetTimeoutId); + self._replicasetTimeoutId = null; + // Close all proxy connections + for(var i = 0; i < self.servers.length; i++) { + self.servers[i].close(function(err, result) { + numberOfConnectionsToClose = numberOfConnectionsToClose - 1; + // Callback if we have one defined + if(numberOfConnectionsToClose == 0 && typeof callback == 'function') { + callback(null); + } + }); + } +} + +/** + * @ignore + * Return the used state + */ +Mongos.prototype._isUsed = function() { + return this._used; +} + +exports.Mongos = Mongos; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js new file mode 100644 index 0000000..6845171 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js @@ -0,0 +1,67 @@ +/** + * A class representation of the Read Preference. + * + * Read Preferences + * - **ReadPreference.PRIMARY**, Read from primary only. All operations produce an error (throw an exception where applicable) if primary is unavailable. Cannot be combined with tags (This is the default.). + * - **ReadPreference.PRIMARY_PREFERRED**, Read from primary if available, otherwise a secondary. + * - **ReadPreference.SECONDARY**, Read from secondary if available, otherwise error. + * - **ReadPreference.SECONDARY_PREFERRED**, Read from a secondary if available, otherwise read from the primary. + * - **ReadPreference.NEAREST**, All modes read from among the nearest candidates, but unlike other modes, NEAREST will include both the primary and all secondaries in the random selection. + * + * @class Represents a Read Preference. + * @param {String} the read preference type + * @param {Object} tags + * @return {ReadPreference} + */ +var ReadPreference = function(mode, tags) { + if(!(this instanceof ReadPreference)) + return new ReadPreference(mode, tags); + this._type = 'ReadPreference'; + this.mode = mode; + this.tags = tags; +} + +/** + * @ignore + */ +ReadPreference.isValid = function(_mode) { + return (_mode == ReadPreference.PRIMARY || _mode == ReadPreference.PRIMARY_PREFERRED + || _mode == ReadPreference.SECONDARY || _mode == ReadPreference.SECONDARY_PREFERRED + || _mode == ReadPreference.NEAREST + || _mode == true || _mode == false); +} + +/** + * @ignore + */ +ReadPreference.prototype.isValid = function(mode) { + var _mode = typeof mode == 'string' ? mode : this.mode; + return ReadPreference.isValid(_mode); +} + +/** + * @ignore + */ +ReadPreference.prototype.toObject = function() { + var object = {mode:this.mode}; + + if(this.tags != null) { + object['tags'] = this.tags; + } + + return object; +} + +/** + * @ignore + */ +ReadPreference.PRIMARY = 'primary'; +ReadPreference.PRIMARY_PREFERRED = 'primaryPreferred'; +ReadPreference.SECONDARY = 'secondary'; +ReadPreference.SECONDARY_PREFERRED = 'secondaryPreferred'; +ReadPreference.NEAREST = 'nearest' + +/** + * @ignore + */ +exports.ReadPreference = ReadPreference; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js new file mode 100644 index 0000000..c899712 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js @@ -0,0 +1,392 @@ +var DbCommand = require('../../commands/db_command').DbCommand + , format = require('util').format; + +var HighAvailabilityProcess = function(replset, options) { + this.replset = replset; + this.options = options; + this.server = null; + this.state = HighAvailabilityProcess.INIT; + this.selectedIndex = 0; +} + +HighAvailabilityProcess.INIT = 'init'; +HighAvailabilityProcess.RUNNING = 'running'; +HighAvailabilityProcess.STOPPED = 'stopped'; + +HighAvailabilityProcess.prototype.start = function() { + var self = this; + if(this.replset._state + && Object.keys(this.replset._state.addresses).length == 0) { + if(this.server) this.server.close(); + this.state = HighAvailabilityProcess.STOPPED; + return; + } + + if(this.server) this.server.close(); + // Start the running + this._haProcessInProcess = false; + this.state = HighAvailabilityProcess.RUNNING; + + // Get all possible reader servers + var candidate_servers = this.replset._state.getAllReadServers(); + if(candidate_servers.length == 0) { + return; + } + + // Select a candidate server for the connection + var server = candidate_servers[this.selectedIndex % candidate_servers.length]; + this.selectedIndex = this.selectedIndex + 1; + + // Unpack connection options + var connectTimeoutMS = self.options.connectTimeoutMS || 10000; + var socketTimeoutMS = self.options.socketTimeoutMS || 30000; + + // Just ensure we don't have a full cycle dependency + var Db = require('../../db').Db + var Server = require('../server').Server; + + // Set up a new server instance + var newServer = new Server(server.host, server.port, { + auto_reconnect: false + , returnIsMasterResults: true + , poolSize: 1 + , socketOptions: { + connectTimeoutMS: connectTimeoutMS, + socketTimeoutMS: socketTimeoutMS, + keepAlive: 100 + } + , ssl: this.options.ssl + , sslValidate: this.options.sslValidate + , sslCA: this.options.sslCA + , sslCert: this.options.sslCert + , sslKey: this.options.sslKey + , sslPass: this.options.sslPass + }); + + // Create new dummy db for app + self.db = new Db('local', newServer, {w:1}); + + // Set up the event listeners + newServer.once("error", _handle(this, newServer)); + newServer.once("close", _handle(this, newServer)); + newServer.once("timeout", _handle(this, newServer)); + newServer.name = format("%s:%s", server.host, server.port); + + // Let's attempt a connection over here + newServer.connect(self.db, function(err, result, _server) { + if(self.state == HighAvailabilityProcess.STOPPED) { + _server.close(); + } + + if(err) { + // Close the server + _server.close(); + // Check if we can even do HA (is there anything running) + if(Object.keys(self.replset._state.addresses).length == 0) { + return; + } + + // Let's boot the ha timeout settings + setTimeout(function() { + self.start(); + }, self.options.haInterval); + } else { + self.server = _server; + // Let's boot the ha timeout settings + setTimeout(_timeoutHandle(self), self.options.haInterval); + } + }); +} + +HighAvailabilityProcess.prototype.stop = function() { + this.state = HighAvailabilityProcess.STOPPED; + if(this.server) this.server.close(); +} + +var _timeoutHandle = function(self) { + return function() { + if(self.state == HighAvailabilityProcess.STOPPED) { + // Stop all server instances + for(var name in self.replset._state.addresses) { + self.replset._state.addresses[name].close(); + delete self.replset._state.addresses[name]; + } + + // Finished pinging + return; + } + + // If the server is connected + if(self.server.isConnected() && !self._haProcessInProcess) { + // Start HA process + self._haProcessInProcess = true; + // Execute is master command + self.db._executeQueryCommand(DbCommand.createIsMasterCommand(self.db), + {failFast:true, connection: self.server.checkoutReader()} + , function(err, res) { + if(err) { + self.server.close(); + return setTimeout(_timeoutHandle(self), self.options.haInterval); + } + + // Master document + var master = res.documents[0]; + var hosts = master.hosts || []; + var reconnect_servers = []; + var state = self.replset._state; + + // For all the hosts let's check that we have connections + for(var i = 0; i < hosts.length; i++) { + var host = hosts[i]; + + // Check if we need to reconnect to a server + if(state.addresses[host] == null) { + reconnect_servers.push(host); + } else if(state.addresses[host] && !state.addresses[host].isConnected()) { + state.addresses[host].close(); + reconnect_servers.push(host); + } + + if((master.primary && state.master == null) + || (master.primary && state.master.name != master.primary)) { + + // Locate the primary and set it + if(state.addresses[master.primary]) { + if(state.master) state.master.close(); + delete state.secondaries[master.primary]; + state.master = state.addresses[master.primary]; + } + + // Set up the changes + if(state.master != null && state.master.isMasterDoc != null) { + state.master.isMasterDoc.ismaster = true; + state.master.isMasterDoc.secondary = false; + } else if(state.master != null) { + state.master.isMasterDoc = master; + state.master.isMasterDoc.ismaster = true; + state.master.isMasterDoc.secondary = false; + } + + // Execute any waiting writes + self.replset._commandsStore.execute_writes(); + } + } + + // Let's reconnect to any server needed + if(reconnect_servers.length > 0) { + _reconnect_servers(self, reconnect_servers); + } else { + self._haProcessInProcess = false + return setTimeout(_timeoutHandle(self), self.options.haInterval); + } + }); + } else if(!self.server.isConnected()) { + setTimeout(function() { + return self.start(); + }, self.options.haInterval); + } else { + setTimeout(_timeoutHandle(self), self.options.haInterval); + } + } +} + +var _reconnect_servers = function(self, reconnect_servers) { + if(reconnect_servers.length == 0) { + self._haProcessInProcess = false + return setTimeout(_timeoutHandle(self), self.options.haInterval); + } + + // Unpack connection options + var connectTimeoutMS = self.options.connectTimeoutMS || 10000; + var socketTimeoutMS = self.options.socketTimeoutMS || 30000; + + // Server class + var Db = require('../../db').Db + var Server = require('../server').Server; + // Get the host + var host = reconnect_servers.shift(); + // Split it up + var _host = host.split(":")[0]; + var _port = parseInt(host.split(":")[1], 10); + + // Set up a new server instance + var newServer = new Server(_host, _port, { + auto_reconnect: false + , returnIsMasterResults: true + , poolSize: self.options.poolSize + , socketOptions: { + connectTimeoutMS: connectTimeoutMS, + socketTimeoutMS: socketTimeoutMS + } + , ssl: self.options.ssl + , sslValidate: self.options.sslValidate + , sslCA: self.options.sslCA + , sslCert: self.options.sslCert + , sslKey: self.options.sslKey + , sslPass: self.options.sslPass + }); + + // Create new dummy db for app + var db = new Db('local', newServer, {w:1}); + var state = self.replset._state; + + // Set up the event listeners + newServer.once("error", _repl_set_handler("error", self.replset, newServer)); + newServer.once("close", _repl_set_handler("close", self.replset, newServer)); + newServer.once("timeout", _repl_set_handler("timeout", self.replset, newServer)); + + // Set shared state + newServer.name = host; + newServer._callBackStore = self.replset._callBackStore; + newServer.replicasetInstance = self.replset; + newServer.enableRecordQueryStats(self.replset.recordQueryStats); + + // Let's attempt a connection over here + newServer.connect(db, function(err, result, _server) { + if(self.state == HighAvailabilityProcess.STOPPED) { + _server.close(); + } + + // If we connected let's check what kind of server we have + if(!err) { + _apply_auths(self, db, _server, function(err, result) { + if(err) { + _server.close(); + // Process the next server + return setTimeout(function() { + _reconnect_servers(self, reconnect_servers); + }, self.options.haInterval); + } + var doc = _server.isMasterDoc; + // Fire error on any unknown callbacks for this server + self.replset.__executeAllServerSpecificErrorCallbacks(_server.socketOptions.host, _server.socketOptions.port, err); + + if(doc.ismaster) { + if(state.secondaries[doc.me]) { + delete state.secondaries[doc.me]; + } + + // Override any server in list of addresses + state.addresses[doc.me] = _server; + // Set server as master + state.master = _server; + // Execute any waiting writes + self.replset._commandsStore.execute_writes(); + } else if(doc.secondary) { + state.secondaries[doc.me] = _server; + // Override any server in list of addresses + state.addresses[doc.me] = _server; + // Execute any waiting reads + self.replset._commandsStore.execute_queries(); + } else { + _server.close(); + } + + // Set any tags on the instance server + _server.name = doc.me; + _server.tags = doc.tags; + // Process the next server + setTimeout(function() { + _reconnect_servers(self, reconnect_servers); + }, self.options.haInterval); + }); + } else { + _server.close(); + self.replset.__executeAllServerSpecificErrorCallbacks(_server.socketOptions.host, _server.socketOptions.port, err); + + setTimeout(function() { + _reconnect_servers(self, reconnect_servers); + }, self.options.haInterval); + } + }); +} + +var _apply_auths = function(self, _db, _server, _callback) { + if(self.replset.auth.length() == 0) return _callback(null); + // Apply any authentication needed + if(self.replset.auth.length() > 0) { + var pending = self.replset.auth.length(); + var connections = _server.allRawConnections(); + var pendingAuthConn = connections.length; + + // Connection function + var connectionFunction = function(_auth, _connection, __callback) { + var pending = _auth.length(); + + for(var j = 0; j < pending; j++) { + // Get the auth object + var _auth = _auth.get(j); + // Unpack the parameter + var username = _auth.username; + var password = _auth.password; + var options = { + authMechanism: _auth.authMechanism + , authSource: _auth.authdb + , connection: _connection + }; + + // Hold any error + var _error = null; + + // Authenticate against the credentials + _db.authenticate(username, password, options, function(err, result) { + _error = err != null ? err : _error; + // Adjust the pending authentication + pending = pending - 1; + // Finished up + if(pending == 0) __callback(_error ? _error : null, _error ? false : true); + }); + } + } + + // Final error object + var finalError = null; + // Iterate over all the connections + for(var i = 0; i < connections.length; i++) { + connectionFunction(self.replset.auth, connections[i], function(err, result) { + // Pending authentication + pendingAuthConn = pendingAuthConn - 1 ; + + // Save error if any + finalError = err ? err : finalError; + + // If we are done let's finish up + if(pendingAuthConn == 0) { + _callback(null); + } + }); + } + } +} + +var _handle = function(self, server) { + return function(err) { + server.close(); + } +} + +var _repl_set_handler = function(event, self, server) { + var ReplSet = require('./repl_set').ReplSet; + + return function(err, doc) { + server.close(); + + // The event happened to a primary + // Remove it from play + if(self._state.isPrimary(server)) { + self._state.master == null; + self._serverState = ReplSet.REPLSET_READ_ONLY; + } else if(self._state.isSecondary(server)) { + delete self._state.secondaries[server.name]; + } + + // Unpack variables + var host = server.socketOptions.host; + var port = server.socketOptions.port; + + // Fire error on any unknown callbacks + self.__executeAllServerSpecificErrorCallbacks(host, port, err); + } +} + +exports.HighAvailabilityProcess = HighAvailabilityProcess; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js new file mode 100644 index 0000000..e0abc38 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js @@ -0,0 +1,125 @@ +var PingStrategy = require('./strategies/ping_strategy').PingStrategy + , StatisticsStrategy = require('./strategies/statistics_strategy').StatisticsStrategy + , ReadPreference = require('../read_preference').ReadPreference; + +var Options = function(options) { + options = options || {}; + this._options = options; + this.ha = options.ha || true; + this.haInterval = options.haInterval || 2000; + this.reconnectWait = options.reconnectWait || 1000; + this.retries = options.retries || 30; + this.rs_name = options.rs_name; + this.socketOptions = options.socketOptions || {}; + this.readPreference = options.readPreference; + this.readSecondary = options.read_secondary; + this.poolSize = options.poolSize == null ? 5 : options.poolSize; + this.strategy = options.strategy || 'ping'; + this.secondaryAcceptableLatencyMS = options.secondaryAcceptableLatencyMS || 15; + this.connectArbiter = options.connectArbiter || false; + this.connectWithNoPrimary = options.connectWithNoPrimary || false; + this.logger = options.logger; + this.ssl = options.ssl || false; + this.sslValidate = options.sslValidate || false; + this.sslCA = options.sslCA; + this.sslCert = options.sslCert; + this.sslKey = options.sslKey; + this.sslPass = options.sslPass; +} + +Options.prototype.init = function() { + if(this.sslValidate && (!Array.isArray(this.sslCA) || this.sslCA.length == 0)) { + throw new Error("The driver expects an Array of CA certificates in the sslCA parameter when enabling sslValidate"); + } + + // Make sure strategy is one of the two allowed + if(this.strategy != null && (this.strategy != 'ping' && this.strategy != 'statistical' && this.strategy != 'none')) + throw new Error("Only ping or statistical strategies allowed"); + + if(this.strategy == null) this.strategy = 'ping'; + + // Set logger if strategy exists + if(this.strategyInstance) this.strategyInstance.logger = this.logger; + + // Unpack read Preference + var readPreference = this.readPreference; + // Validate correctness of Read preferences + if(readPreference != null) { + if(readPreference != ReadPreference.PRIMARY && readPreference != ReadPreference.PRIMARY_PREFERRED + && readPreference != ReadPreference.SECONDARY && readPreference != ReadPreference.SECONDARY_PREFERRED + && readPreference != ReadPreference.NEAREST && typeof readPreference != 'object' && readPreference['_type'] != 'ReadPreference') { + throw new Error("Illegal readPreference mode specified, " + readPreference); + } + + this.readPreference = readPreference; + } else { + this.readPreference = null; + } + + // Ensure read_secondary is set correctly + if(this.readSecondary != null) + this.readSecondary = this.readPreference == ReadPreference.PRIMARY + || this.readPreference == false + || this.readPreference == null ? false : true; + + // Ensure correct slave set + if(this.readSecondary) this.slaveOk = true; + + // Set up logger if any set + this.logger = this.logger != null + && (typeof this.logger.debug == 'function') + && (typeof this.logger.error == 'function') + && (typeof this.logger.debug == 'function') + ? this.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}}; + + // Connection timeout + this.connectTimeoutMS = this.socketOptions.connectTimeoutMS + ? this.socketOptions.connectTimeoutMS + : 1000; + + // Socket connection timeout + this.socketTimeoutMS = this.socketOptions.socketTimeoutMS + ? this.socketOptions.socketTimeoutMS + : 30000; +} + +Options.prototype.decorateAndClean = function(servers, callBackStore) { + var self = this; + + // var de duplicate list + var uniqueServers = {}; + // De-duplicate any servers in the seed list + for(var i = 0; i < servers.length; i++) { + var server = servers[i]; + // If server does not exist set it + if(uniqueServers[server.host + ":" + server.port] == null) { + uniqueServers[server.host + ":" + server.port] = server; + } + } + + // Let's set the deduplicated list of servers + var finalServers = []; + // Add the servers + for(var key in uniqueServers) { + finalServers.push(uniqueServers[key]); + } + + finalServers.forEach(function(server) { + // Ensure no server has reconnect on + server.options.auto_reconnect = false; + // Set up ssl options + server.ssl = self.ssl; + server.sslValidate = self.sslValidate; + server.sslCA = self.sslCA; + server.sslCert = self.sslCert; + server.sslKey = self.sslKey; + server.sslPass = self.sslPass; + server.poolSize = self.poolSize; + // Set callback store + server._callBackStore = callBackStore; + }); + + return finalServers; +} + +exports.Options = Options; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js new file mode 100644 index 0000000..ebb6657 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js @@ -0,0 +1,758 @@ +var ReadPreference = require('../read_preference').ReadPreference + , DbCommand = require('../../commands/db_command').DbCommand + , inherits = require('util').inherits + , format = require('util').format + , timers = require('timers') + , Server = require('../server').Server + , utils = require('../../utils') + , PingStrategy = require('./strategies/ping_strategy').PingStrategy + , StatisticsStrategy = require('./strategies/statistics_strategy').StatisticsStrategy + , Options = require('./options').Options + , ReplSetState = require('./repl_set_state').ReplSetState + , HighAvailabilityProcess = require('./ha').HighAvailabilityProcess + , Base = require('../base').Base; + +const STATE_STARTING_PHASE_1 = 0; +const STATE_PRIMARY = 1; +const STATE_SECONDARY = 2; +const STATE_RECOVERING = 3; +const STATE_FATAL_ERROR = 4; +const STATE_STARTING_PHASE_2 = 5; +const STATE_UNKNOWN = 6; +const STATE_ARBITER = 7; +const STATE_DOWN = 8; +const STATE_ROLLBACK = 9; + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; + +/** + * ReplSet constructor provides replicaset functionality + * + * Options + * - **ha** {Boolean, default:true}, turn on high availability. + * - **haInterval** {Number, default:2000}, time between each replicaset status check. + * - **reconnectWait** {Number, default:1000}, time to wait in miliseconds before attempting reconnect. + * - **retries** {Number, default:30}, number of times to attempt a replicaset reconnect. + * - **rs_name** {String}, the name of the replicaset to connect to. + * - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number)) + * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + * - **strategy** {String, default:'ping'}, selection strategy for reads choose between (ping, statistical and none, default is ping) + * - **secondaryAcceptableLatencyMS** {Number, default:15}, sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms) + * - **connectWithNoPrimary** {Boolean, default:false}, sets if the driver should connect even if no primary is available + * - **connectArbiter** {Boolean, default:false}, sets if the driver should connect to arbiters or not. + * - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**. + * - **ssl** {Boolean, default:false}, use ssl connection (needs to have a mongod server with ssl support) + * - **sslValidate** {Boolean, default:false}, validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslCA** {Array, default:null}, Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslCert** {Buffer/String, default:null}, String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslKey** {Buffer/String, default:null}, String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslPass** {Buffer/String, default:null}, String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher) + * + * @class Represents a Replicaset Configuration + * @param {Array} list of server objects participating in the replicaset. + * @param {Object} [options] additional options for the replicaset connection. + */ +var ReplSet = exports.ReplSet = function(servers, options) { + // Set up basic + if(!(this instanceof ReplSet)) + return new ReplSet(servers, options); + + // Set up event emitter + Base.call(this); + + // Ensure we have a list of servers + if(!Array.isArray(servers)) throw Error("The parameter must be an array of servers and contain at least one server"); + // Ensure no Mongos's + for(var i = 0; i < servers.length; i++) { + if(!(servers[i] instanceof Server)) throw new Error("list of servers must be of type Server"); + } + + // Save the options + this.options = new Options(options); + // Ensure basic validation of options + this.options.init(); + + // Server state + this._serverState = ReplSet.REPLSET_DISCONNECTED; + // Add high availability process + this._haProcess = new HighAvailabilityProcess(this, this.options); + + + // Let's iterate over all the provided server objects and decorate them + this.servers = this.options.decorateAndClean(servers, this._callBackStore); + // Throw error if no seed servers + if(this.servers.length == 0) throw new Error("No valid seed servers in the array"); + + // Let's set up our strategy object for picking secondaries + if(this.options.strategy == 'ping') { + // Create a new instance + this.strategyInstance = new PingStrategy(this, this.options.secondaryAcceptableLatencyMS); + } else if(this.options.strategy == 'statistical') { + // Set strategy as statistical + this.strategyInstance = new StatisticsStrategy(this); + // Add enable query information + this.enableRecordQueryStats(true); + } + + // Set up a clean state + this._state = new ReplSetState(); + // Ensure up the server callbacks + for(var i = 0; i < this.servers.length; i++) { + this.servers[i]._callBackStore = this._callBackStore; + this.servers[i].name = format("%s:%s", this.servers[i].host, this.servers[i].port) + this.servers[i].replicasetInstance = this; + this.servers[i].options.auto_reconnect = false; + this.servers[i].inheritReplSetOptionsFrom(this); + } +} + +/** + * @ignore + */ +inherits(ReplSet, Base); + +// Replicaset states +ReplSet.REPLSET_CONNECTING = 'connecting'; +ReplSet.REPLSET_DISCONNECTED = 'disconnected'; +ReplSet.REPLSET_CONNECTED = 'connected'; +ReplSet.REPLSET_RECONNECTING = 'reconnecting'; +ReplSet.REPLSET_DESTROYED = 'destroyed'; +ReplSet.REPLSET_READ_ONLY = 'readonly'; + +ReplSet.prototype.isAutoReconnect = function() { + return true; +} + +ReplSet.prototype.canWrite = function() { + return this._state.master && this._state.master.isConnected(); +} + +ReplSet.prototype.canRead = function(read) { + if((read == ReadPreference.PRIMARY + || read == null || read == false) && (this._state.master == null || !this._state.master.isConnected())) return false; + return Object.keys(this._state.secondaries).length > 0; +} + +/** + * @ignore + */ +ReplSet.prototype.enableRecordQueryStats = function(enable) { + // Set the global enable record query stats + this.recordQueryStats = enable; + + // Enable all the servers + for(var i = 0; i < this.servers.length; i++) { + this.servers[i].enableRecordQueryStats(enable); + } +} + +/** + * @ignore + */ +ReplSet.prototype.setReadPreference = function(preference) { + this.options.readPreference = preference; +} + +ReplSet.prototype.connect = function(parent, options, callback) { + if(this._serverState != ReplSet.REPLSET_DISCONNECTED) + return callback(new Error("in process of connection")); + + // If no callback throw + if(!(typeof callback == 'function')) + throw new Error("cannot call ReplSet.prototype.connect with no callback function"); + + var self = this; + // Save db reference + this.options.db = parent; + // Set replicaset as connecting + this._serverState = ReplSet.REPLSET_CONNECTING + // Copy all the servers to our list of seeds + var candidateServers = this.servers.slice(0); + // Pop the first server + var server = candidateServers.pop(); + server.name = format("%s:%s", server.host, server.port); + // Set up the options + var opts = { + returnIsMasterResults: true, + eventReceiver: server + } + + // Register some event listeners + this.once("fullsetup", function(err, db, replset) { + // Set state to connected + self._serverState = ReplSet.REPLSET_CONNECTED; + // Stop any process running + if(self._haProcess) self._haProcess.stop(); + // Start the HA process + self._haProcess.start(); + + // Emit fullsetup + processor(function() { + parent.emit("open", null, self.options.db, self); + parent.emit("fullsetup", null, self.options.db, self); + }); + + // If we have a strategy defined start it + if(self.strategyInstance) { + self.strategyInstance.start(); + } + + // Finishing up the call + callback(err, db, replset); + }); + + // Errors + this.once("connectionError", function(err, result) { + callback(err, result); + }); + + // Attempt to connect to the server + server.connect(this.options.db, opts, _connectHandler(this, candidateServers, server)); +} + +ReplSet.prototype.close = function(callback) { + var self = this; + // Set as destroyed + this._serverState = ReplSet.REPLSET_DESTROYED; + // Stop the ha + this._haProcess.stop(); + + // If we have a strategy stop it + if(this.strategyInstance) { + this.strategyInstance.stop(); + } + + // Kill all servers available + for(var name in this._state.addresses) { + this._state.addresses[name].close(); + } + + // Clean out the state + this._state = new ReplSetState(); + + // Emit close event + processor(function() { + self._emitAcrossAllDbInstances(self, null, "close", null, null, true) + }); + + // Callback + if(typeof callback == 'function') + return callback(null, null); +} + +/** + * Creates a new server for the `replset` based on `host`. + * + * @param {String} host - host:port pair (localhost:27017) + * @param {ReplSet} replset - the ReplSet instance + * @return {Server} + * @ignore + */ +var createServer = function(self, host, options) { + // copy existing socket options to new server + var socketOptions = {} + if(options.socketOptions) { + var keys = Object.keys(options.socketOptions); + for(var k = 0; k < keys.length; k++) { + socketOptions[keys[k]] = options.socketOptions[keys[k]]; + } + } + + var parts = host.split(/:/); + if(1 === parts.length) { + parts[1] = Connection.DEFAULT_PORT; + } + + socketOptions.host = parts[0]; + socketOptions.port = parseInt(parts[1], 10); + + var serverOptions = { + readPreference: options.readPreference, + socketOptions: socketOptions, + // poolSize: options.poolSize, + poolSize: 1, + logger: options.logger, + auto_reconnect: false, + ssl: options.ssl, + sslValidate: options.sslValidate, + sslCA: options.sslCA, + sslCert: options.sslCert, + sslKey: options.sslKey, + sslPass: options.sslPass + } + + var server = new Server(socketOptions.host, socketOptions.port, serverOptions); + // Set up shared state + server._callBackStore = self._callBackStore; + server.replicasetInstance = self; + server.enableRecordQueryStats(self.recordQueryStats); + // Set up event handlers + server.on("close", _handler("close", self, server)); + server.on("error", _handler("error", self, server)); + server.on("timeout", _handler("timeout", self, server)); + return server; +} + +var _handler = function(event, self, server) { + return function(err, doc) { + // The event happened to a primary + // Remove it from play + if(self._state.isPrimary(server)) { + var current_master = self._state.master; + self._state.master = null; + self._serverState = ReplSet.REPLSET_READ_ONLY; + // delete self._state.addresses[server.name]; + + if(current_master != null) { + // Unpack variables + var host = current_master.socketOptions.host; + var port = current_master.socketOptions.port; + + // Fire error on any unknown callbacks + self.__executeAllServerSpecificErrorCallbacks(host, port, err); + } + } else if(self._state.isSecondary(server)) { + delete self._state.secondaries[server.name]; + // delete self._state.addresses[server.name]; + } + + // If there is no more connections left and the setting is not destroyed + // set to disconnected + if(Object.keys(self._state.addresses).length == 0 + && self._serverState != ReplSet.REPLSET_DESTROYED) { + self._serverState = ReplSet.REPLSET_DISCONNECTED; + + // Emit close across all the attached db instances + self._dbStore.emit("close", new Error("replicaset disconnected, no valid servers contactable over tcp"), null, true); + } + + // Unpack variables + var host = server.socketOptions.host; + var port = server.socketOptions.port; + + // Fire error on any unknown callbacks + self.__executeAllServerSpecificErrorCallbacks(host, port, err); + } +} + +var locateNewServers = function(self, state, candidateServers, ismaster) { + // Retrieve the host + var hosts = ismaster.hosts; + // In candidate servers + var inCandidateServers = function(name, candidateServers) { + for(var i = 0; i < candidateServers.length; i++) { + if(candidateServers[i].name == name) return true; + } + + return false; + } + + // New servers + var newServers = []; + if(Array.isArray(hosts)) { + // Let's go over all the hosts + for(var i = 0; i < hosts.length; i++) { + if(!state.contains(hosts[i]) + && !inCandidateServers(hosts[i], candidateServers)) { + newServers.push(createServer(self, hosts[i], self.options)); + } + } + } + + // Return list of possible new servers + return newServers; +} + +var _connectHandler = function(self, candidateServers, instanceServer) { + return function(err, doc) { + // If we have an error add to the list + if(err) self._state.errors[instanceServer.name] = instanceServer; + + // No error let's analyse the ismaster command + if(!err) { + var ismaster = doc.documents[0] + // If no replicaset name exists set the current one + if(self.options.rs_name == null) { + self.options.rs_name = ismaster.setName; + } + + // If we have a member that is not part of the set let's finish up + if(typeof ismaster.setName == 'string' && ismaster.setName != self.options.rs_name) { + return self.emit("connectionError", new Error("Replicaset name " + ismaster.setName + " does not match specified name " + self.options.rs_name)); + } + + // Add the error handlers + instanceServer.on("close", _handler("close", self, instanceServer)); + instanceServer.on("error", _handler("error", self, instanceServer)); + instanceServer.on("timeout", _handler("timeout", self, instanceServer)); + // Set any tags on the instance server + instanceServer.name = ismaster.me; + instanceServer.tags = ismaster.tags; + + // Add the server to the list + self._state.addServer(instanceServer, ismaster); + + // Get additional new servers that are not currently in set + var new_servers = locateNewServers(self, self._state, candidateServers, ismaster); + + // If we have new servers join them + if(new_servers.length > 0) { + candidateServers = candidateServers.concat(new_servers); + } + } + + + // If the candidate server list is empty and no valid servers + if(candidateServers.length == 0 && + !self._state.hasValidServers()) { + return self.emit("connectionError", new Error("No valid replicaset instance servers found")); + } else if(candidateServers.length == 0) { + if(!self.options.connectWithNoPrimary && (self._state.master == null || !self._state.master.isConnected())) { + return self.emit("connectionError", new Error("No primary found in set")); + } + return self.emit("fullsetup", null, self.options.db, self); + } + + // Let's connect the next server + var nextServer = candidateServers.pop(); + + // Set up the options + var opts = { + returnIsMasterResults: true, + eventReceiver: nextServer + } + + // Attempt to connect to the server + nextServer.connect(self.options.db, opts, _connectHandler(self, candidateServers, nextServer)); + } +} + +ReplSet.prototype.isDestroyed = function() { + return this._serverState == ReplSet.REPLSET_DESTROYED; +} + +ReplSet.prototype.isConnected = function(read) { + var isConnected = false; + + if(read == null || read == ReadPreference.PRIMARY || read == false) + isConnected = this._state.master != null && this._state.master.isConnected(); + + if((read == ReadPreference.PRIMARY_PREFERRED || read == ReadPreference.SECONDARY_PREFERRED || read == ReadPreference.NEAREST) + && ((this._state.master != null && this._state.master.isConnected()) + || (this._state && this._state.secondaries && Object.keys(this._state.secondaries).length > 0))) { + isConnected = true; + } else if(read == ReadPreference.SECONDARY) { + isConnected = this._state && this._state.secondaries && Object.keys(this._state.secondaries).length > 0; + } + + // No valid connection return false + return isConnected; +} + +ReplSet.prototype.isMongos = function() { + return false; +} + +ReplSet.prototype.checkoutWriter = function() { + if(this._state.master) return this._state.master.checkoutWriter(); + return new Error("no writer connection available"); +} + +ReplSet.prototype.allRawConnections = function() { + var connections = []; + + for(var name in this._state.addresses) { + connections = connections.concat(this._state.addresses[name].allRawConnections()); + } + + return connections; +} + +/** + * @ignore + */ +ReplSet.prototype.allServerInstances = function() { + var self = this; + // If no state yet return empty + if(!self._state) return []; + // Close all the servers (concatenate entire list of servers first for ease) + var allServers = self._state.master != null ? [self._state.master] : []; + + // Secondary keys + var keys = Object.keys(self._state.secondaries); + // Add all secondaries + for(var i = 0; i < keys.length; i++) { + allServers.push(self._state.secondaries[keys[i]]); + } + + // Return complete list of all servers + return allServers; +} + +/** + * @ignore + */ +ReplSet.prototype.checkoutReader = function(readPreference, tags) { + var connection = null; + + // If we have a read preference object unpack it + if(typeof readPreference == 'object' && readPreference['_type'] == 'ReadPreference') { + // Validate if the object is using a valid mode + if(!readPreference.isValid()) throw new Error("Illegal readPreference mode specified, " + readPreference.mode); + // Set the tag + tags = readPreference.tags; + readPreference = readPreference.mode; + } else if(typeof readPreference == 'object' && readPreference['_type'] != 'ReadPreference') { + return new Error("read preferences must be either a string or an instance of ReadPreference"); + } + + // Set up our read Preference, allowing us to override the readPreference + var finalReadPreference = readPreference != null ? readPreference : this.options.readPreference; + + // Ensure we unpack a reference + if(finalReadPreference != null && typeof finalReadPreference == 'object' && finalReadPreference['_type'] == 'ReadPreference') { + // Validate if the object is using a valid mode + if(!finalReadPreference.isValid()) throw new Error("Illegal readPreference mode specified, " + finalReadPreference.mode); + // Set the tag + tags = finalReadPreference.tags; + readPreference = finalReadPreference.mode; + } + + // Finalize the read preference setup + finalReadPreference = finalReadPreference == true ? ReadPreference.SECONDARY_PREFERRED : finalReadPreference; + finalReadPreference = finalReadPreference == null ? ReadPreference.PRIMARY : finalReadPreference; + + // If we are reading from a primary + if(finalReadPreference == 'primary') { + // If we provide a tags set send an error + if(typeof tags == 'object' && tags != null) { + return new Error("PRIMARY cannot be combined with tags"); + } + + // If we provide a tags set send an error + if(this._state.master == null) { + return new Error("No replica set primary available for query with ReadPreference PRIMARY"); + } + + // Checkout a writer + return this.checkoutWriter(); + } + + // If we have specified to read from a secondary server grab a random one and read + // from it, otherwise just pass the primary connection + if((this.options.readSecondary || finalReadPreference == ReadPreference.SECONDARY_PREFERRED || finalReadPreference == ReadPreference.SECONDARY) && Object.keys(this._state.secondaries).length > 0) { + // If we have tags, look for servers matching the specific tag + if(this.strategyInstance != null) { + // Only pick from secondaries + var _secondaries = []; + for(var key in this._state.secondaries) { + _secondaries.push(this._state.secondaries[key]); + } + + if(finalReadPreference == ReadPreference.SECONDARY) { + // Check out the nearest from only the secondaries + connection = this.strategyInstance.checkoutConnection(tags, _secondaries); + } else { + connection = this.strategyInstance.checkoutConnection(tags, _secondaries); + // No candidate servers that match the tags, error + if(connection == null || connection instanceof Error) { + // No secondary server avilable, attemp to checkout a primary server + connection = this.checkoutWriter(); + // If no connection return an error + if(connection == null || connection instanceof Error) { + return new Error("No replica set members available for query"); + } + } + } + } else if(tags != null && typeof tags == 'object') { + // Get connection + connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) { + // No candidate servers that match the tags, error + if(connection == null) { + return new Error("No replica set members available for query"); + } + } else { + connection = _roundRobin(this, tags); + } + } else if(finalReadPreference == ReadPreference.PRIMARY_PREFERRED) { + // Check if there is a primary available and return that if possible + connection = this.checkoutWriter(); + // If no connection available checkout a secondary + if(connection == null || connection instanceof Error) { + // If we have tags, look for servers matching the specific tag + if(tags != null && typeof tags == 'object') { + // Get connection + connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) { + // No candidate servers that match the tags, error + if(connection == null) { + return new Error("No replica set members available for query"); + } + } else { + connection = _roundRobin(this, tags); + } + } + } else if(finalReadPreference == ReadPreference.SECONDARY_PREFERRED) { + // If we have tags, look for servers matching the specific tag + if(this.strategyInstance != null) { + connection = this.strategyInstance.checkoutConnection(tags); + + // No candidate servers that match the tags, error + if(connection == null || connection instanceof Error) { + // No secondary server avilable, attemp to checkout a primary server + connection = this.checkoutWriter(); + // If no connection return an error + if(connection == null || connection instanceof Error) { + var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference; + return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags)); + } + } + } else if(tags != null && typeof tags == 'object') { + // Get connection + connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) { + // No candidate servers that match the tags, error + if(connection == null) { + // No secondary server avilable, attemp to checkout a primary server + connection = this.checkoutWriter(); + // If no connection return an error + if(connection == null || connection instanceof Error) { + var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference; + return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags)); + } + } + } + } else if(finalReadPreference == ReadPreference.NEAREST && this.strategyInstance != null) { + connection = this.strategyInstance.checkoutConnection(tags); + } else if(finalReadPreference == ReadPreference.NEAREST && this.strategyInstance == null) { + return new Error("A strategy for calculating nearness must be enabled such as ping or statistical"); + } else if(finalReadPreference == ReadPreference.SECONDARY && Object.keys(this._state.secondaries).length == 0) { + if(tags != null && typeof tags == 'object') { + var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference; + return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags)); + } else { + return new Error("No replica set secondary available for query with ReadPreference SECONDARY"); + } + } else { + connection = this.checkoutWriter(); + } + + // Return the connection + return connection; +} + +/** + * @ignore + */ +var _pickFromTags = function(self, tags) { + // If we have an array or single tag selection + var tagObjects = Array.isArray(tags) ? tags : [tags]; + // Iterate over all tags until we find a candidate server + for(var _i = 0; _i < tagObjects.length; _i++) { + // Grab a tag object + var tagObject = tagObjects[_i]; + // Matching keys + var matchingKeys = Object.keys(tagObject); + // Match all the servers that match the provdided tags + var keys = Object.keys(self._state.secondaries); + var candidateServers = []; + + for(var i = 0; i < keys.length; i++) { + var server = self._state.secondaries[keys[i]]; + // If we have tags match + if(server.tags != null) { + var matching = true; + // Ensure we have all the values + for(var j = 0; j < matchingKeys.length; j++) { + if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) { + matching = false; + break; + } + } + + // If we have a match add it to the list of matching servers + if(matching) { + candidateServers.push(server); + } + } + } + + // If we have a candidate server return + if(candidateServers.length > 0) { + if(self.strategyInstance) return self.strategyInstance.checkoutConnection(tags, candidateServers); + // Set instance to return + return candidateServers[Math.floor(Math.random() * candidateServers.length)].checkoutReader(); + } + } + + // No connection found + return null; +} + +/** + * Pick a secondary using round robin + * + * @ignore + */ +function _roundRobin (replset, tags) { + var keys = Object.keys(replset._state.secondaries); + var key = keys[replset._currentServerChoice++ % keys.length]; + + var conn = null != replset._state.secondaries[key] + ? replset._state.secondaries[key].checkoutReader() + : null; + + // If connection is null fallback to first available secondary + if (null == conn) { + conn = pickFirstConnectedSecondary(replset, tags); + } + + return conn; +} + +/** + * @ignore + */ +var pickFirstConnectedSecondary = function pickFirstConnectedSecondary(self, tags) { + var keys = Object.keys(self._state.secondaries); + var connection; + + // Find first available reader if any + for(var i = 0; i < keys.length; i++) { + connection = self._state.secondaries[keys[i]].checkoutReader(); + if(connection) return connection; + } + + // If we still have a null, read from primary if it's not secondary only + if(self._readPreference == ReadPreference.SECONDARY_PREFERRED) { + connection = self._state.master.checkoutReader(); + if(connection) return connection; + } + + var preferenceName = self._readPreference == ReadPreference.SECONDARY_PREFERRED + ? 'secondary' + : self._readPreference; + + return new Error("No replica set member available for query with ReadPreference " + + preferenceName + " and tags " + JSON.stringify(tags)); +} + +/** + * Get list of secondaries + * @ignore + */ +Object.defineProperty(ReplSet.prototype, "secondaries", {enumerable: true + , get: function() { + return utils.objectToArray(this._state.secondaries); + } +}); + +/** + * Get list of secondaries + * @ignore + */ +Object.defineProperty(ReplSet.prototype, "arbiters", {enumerable: true + , get: function() { + return utils.objectToArray(this._state.arbiters); + } +}); + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js new file mode 100644 index 0000000..6f9e143 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js @@ -0,0 +1,70 @@ +/** + * Interval state object constructor + * + * @ignore + */ +var ReplSetState = function ReplSetState () { + this.errorMessages = []; + this.secondaries = {}; + this.addresses = {}; + this.arbiters = {}; + this.passives = {}; + this.members = []; + this.errors = {}; + this.setName = null; + this.master = null; +} + +ReplSetState.prototype.hasValidServers = function() { + var validServers = []; + if(this.master && this.master.isConnected()) return true; + + if(this.secondaries) { + var keys = Object.keys(this.secondaries) + for(var i = 0; i < keys.length; i++) { + if(this.secondaries[keys[i]].isConnected()) + return true; + } + } + + return false; +} + +ReplSetState.prototype.getAllReadServers = function() { + var candidate_servers = []; + for(var name in this.addresses) { + candidate_servers.push(this.addresses[name]); + } + + // Return all possible read candidates + return candidate_servers; +} + +ReplSetState.prototype.addServer = function(server, master) { + server.name = master.me; + + if(master.ismaster) { + this.master = server; + this.addresses[server.name] = server; + } else if(master.secondary) { + this.secondaries[server.name] = server; + this.addresses[server.name] = server; + } else if(master.arbiters) { + this.arbiters[server.name] = server; + this.addresses[server.name] = server; + } +} + +ReplSetState.prototype.contains = function(host) { + return this.addresses[host] != null; +} + +ReplSetState.prototype.isPrimary = function(server) { + return this.master && this.master.name == server.name; +} + +ReplSetState.prototype.isSecondary = function(server) { + return this.secondaries[server.name] != null; +} + +exports.ReplSetState = ReplSetState; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js new file mode 100644 index 0000000..d1baaae --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js @@ -0,0 +1,297 @@ +var Server = require("../../server").Server + , format = require('util').format; + +// The ping strategy uses pings each server and records the +// elapsed time for the server so it can pick a server based on lowest +// return time for the db command {ping:true} +var PingStrategy = exports.PingStrategy = function(replicaset, secondaryAcceptableLatencyMS) { + this.replicaset = replicaset; + this.secondaryAcceptableLatencyMS = secondaryAcceptableLatencyMS; + this.state = 'disconnected'; + this.pingInterval = 5000; + // Class instance + this.Db = require("../../../db").Db; + // Active db connections + this.dbs = {}; + // Logger api + this.Logger = null; +} + +// Starts any needed code +PingStrategy.prototype.start = function(callback) { + // already running? + if ('connected' == this.state) return; + + this.state = 'connected'; + + // Start ping server + this._pingServer(callback); +} + +// Stops and kills any processes running +PingStrategy.prototype.stop = function(callback) { + // Stop the ping process + this.state = 'disconnected'; + + // Stop all the server instances + for(var key in this.dbs) { + this.dbs[key].close(); + } + + // optional callback + callback && callback(null, null); +} + +PingStrategy.prototype.checkoutConnection = function(tags, secondaryCandidates) { + // Servers are picked based on the lowest ping time and then servers that lower than that + secondaryAcceptableLatencyMS + // Create a list of candidat servers, containing the primary if available + var candidateServers = []; + var self = this; + + // If we have not provided a list of candidate servers use the default setup + if(!Array.isArray(secondaryCandidates)) { + candidateServers = this.replicaset._state.master != null ? [this.replicaset._state.master] : []; + // Add all the secondaries + var keys = Object.keys(this.replicaset._state.secondaries); + for(var i = 0; i < keys.length; i++) { + candidateServers.push(this.replicaset._state.secondaries[keys[i]]) + } + } else { + candidateServers = secondaryCandidates; + } + + // Final list of eligable server + var finalCandidates = []; + + // If we have tags filter by tags + if(tags != null && typeof tags == 'object') { + // If we have an array or single tag selection + var tagObjects = Array.isArray(tags) ? tags : [tags]; + // Iterate over all tags until we find a candidate server + for(var _i = 0; _i < tagObjects.length; _i++) { + // Grab a tag object + var tagObject = tagObjects[_i]; + // Matching keys + var matchingKeys = Object.keys(tagObject); + // Remove any that are not tagged correctly + for(var i = 0; i < candidateServers.length; i++) { + var server = candidateServers[i]; + // If we have tags match + if(server.tags != null) { + var matching = true; + + // Ensure we have all the values + for(var j = 0; j < matchingKeys.length; j++) { + if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) { + matching = false; + break; + } + } + + // If we have a match add it to the list of matching servers + if(matching) { + finalCandidates.push(server); + } + } + } + } + } else { + // Final array candidates + var finalCandidates = candidateServers; + } + + // Sort by ping time + finalCandidates.sort(function(a, b) { + return a.runtimeStats['pingMs'] > b.runtimeStats['pingMs']; + }); + + if(0 === finalCandidates.length) + return new Error("No replica set members available for query"); + + // find lowest server with a ping time + var lowest = finalCandidates.filter(function (server) { + return undefined != server.runtimeStats.pingMs; + })[0]; + + if(!lowest) { + lowest = finalCandidates[0]; + } + + // convert to integer + var lowestPing = lowest.runtimeStats.pingMs | 0; + + // determine acceptable latency + var acceptable = lowestPing + this.secondaryAcceptableLatencyMS; + + // remove any server responding slower than acceptable + var len = finalCandidates.length; + while(len--) { + if(finalCandidates[len].runtimeStats['pingMs'] > acceptable) { + finalCandidates.splice(len, 1); + } + } + + if(self.logger && self.logger.debug) { + self.logger.debug("Ping strategy selection order for tags", tags); + finalCandidates.forEach(function(c) { + self.logger.debug(format("%s:%s = %s ms", c.host, c.port, c.runtimeStats['pingMs']), null); + }) + } + + // If no candidates available return an error + if(finalCandidates.length == 0) + return new Error("No replica set members available for query"); + + // Pick a random acceptable server + var connection = finalCandidates[Math.round(Math.random(1000000) * (finalCandidates.length - 1))].checkoutReader(); + if(self.logger && self.logger.debug) { + if(connection) + self.logger.debug("picked server %s:%s", connection.socketOptions.host, connection.socketOptions.port); + } + + return connection; +} + +PingStrategy.prototype._pingServer = function(callback) { + var self = this; + + // Ping server function + var pingFunction = function() { + // Our state changed to disconnected or destroyed return + if(self.state == 'disconnected' || self.state == 'destroyed') return; + // If the replicaset is destroyed return + if(self.replicaset.isDestroyed() || self.replicaset._serverState == 'disconnected') return + + // Create a list of all servers we can send the ismaster command to + var allServers = self.replicaset._state.master != null ? [self.replicaset._state.master] : []; + + // Secondary keys + var keys = Object.keys(self.replicaset._state.secondaries); + // Add all secondaries + for(var i = 0; i < keys.length; i++) { + allServers.push(self.replicaset._state.secondaries[keys[i]]); + } + + // Number of server entries + var numberOfEntries = allServers.length; + + // We got keys + for(var i = 0; i < allServers.length; i++) { + + // We got a server instance + var server = allServers[i]; + + // Create a new server object, avoid using internal connections as they might + // be in an illegal state + new function(serverInstance) { + var _db = self.dbs[serverInstance.host + ":" + serverInstance.port]; + // If we have a db + if(_db != null) { + // Startup time of the command + var startTime = Date.now(); + + // Execute ping command in own scope + var _ping = function(__db, __serverInstance) { + // Execute ping on this connection + __db.executeDbCommand({ping:1}, {failFast:true}, function(err) { + if(err) { + delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port]; + __db.close(); + return done(); + } + + if(null != __serverInstance.runtimeStats && __serverInstance.isConnected()) { + __serverInstance.runtimeStats['pingMs'] = Date.now() - startTime; + } + + done(); + }); + }; + // Ping + _ping(_db, serverInstance); + } else { + var connectTimeoutMS = self.replicaset.options.socketOptions + ? self.replicaset.options.socketOptions.connectTimeoutMS : 0 + + // Create a new master connection + var _server = new Server(serverInstance.host, serverInstance.port, { + auto_reconnect: false, + returnIsMasterResults: true, + slaveOk: true, + poolSize: 1, + socketOptions: { connectTimeoutMS: connectTimeoutMS }, + ssl: self.replicaset.ssl, + sslValidate: self.replicaset.sslValidate, + sslCA: self.replicaset.sslCA, + sslCert: self.replicaset.sslCert, + sslKey: self.replicaset.sslKey, + sslPass: self.replicaset.sslPass + }); + + // Create Db instance + var _db = new self.Db('local', _server, { safe: true }); + _db.on("close", function() { + delete self.dbs[this.serverConfig.host + ":" + this.serverConfig.port]; + }) + + var _ping = function(__db, __serverInstance) { + if(self.state == 'disconnected') { + self.stop(); + return; + } + + __db.open(function(err, db) { + if(self.state == 'disconnected' && __db != null) { + return __db.close(); + } + + if(err) { + delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port]; + __db.close(); + return done(); + } + + // Save instance + self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port] = __db; + + // Startup time of the command + var startTime = Date.now(); + + // Execute ping on this connection + __db.executeDbCommand({ping:1}, {failFast:true}, function(err) { + if(err) { + delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port]; + __db.close(); + return done(); + } + + if(null != __serverInstance.runtimeStats && __serverInstance.isConnected()) { + __serverInstance.runtimeStats['pingMs'] = Date.now() - startTime; + } + + done(); + }); + }); + }; + + _ping(_db, serverInstance); + } + + function done() { + // Adjust the number of checks + numberOfEntries--; + + // If we are done with all results coming back trigger ping again + if(0 === numberOfEntries && 'connected' == self.state) { + setTimeout(pingFunction, self.pingInterval); + } + } + }(server); + } + } + + // Start pingFunction + pingFunction(); + + callback && callback(null); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js new file mode 100644 index 0000000..f9b8c46 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js @@ -0,0 +1,80 @@ +// The Statistics strategy uses the measure of each end-start time for each +// query executed against the db to calculate the mean, variance and standard deviation +// and pick the server which the lowest mean and deviation +var StatisticsStrategy = exports.StatisticsStrategy = function(replicaset) { + this.replicaset = replicaset; + // Logger api + this.Logger = null; +} + +// Starts any needed code +StatisticsStrategy.prototype.start = function(callback) { + callback && callback(null, null); +} + +StatisticsStrategy.prototype.stop = function(callback) { + callback && callback(null, null); +} + +StatisticsStrategy.prototype.checkoutConnection = function(tags, secondaryCandidates) { + // Servers are picked based on the lowest ping time and then servers that lower than that + secondaryAcceptableLatencyMS + // Create a list of candidat servers, containing the primary if available + var candidateServers = []; + + // If we have not provided a list of candidate servers use the default setup + if(!Array.isArray(secondaryCandidates)) { + candidateServers = this.replicaset._state.master != null ? [this.replicaset._state.master] : []; + // Add all the secondaries + var keys = Object.keys(this.replicaset._state.secondaries); + for(var i = 0; i < keys.length; i++) { + candidateServers.push(this.replicaset._state.secondaries[keys[i]]) + } + } else { + candidateServers = secondaryCandidates; + } + + // Final list of eligable server + var finalCandidates = []; + + // If we have tags filter by tags + if(tags != null && typeof tags == 'object') { + // If we have an array or single tag selection + var tagObjects = Array.isArray(tags) ? tags : [tags]; + // Iterate over all tags until we find a candidate server + for(var _i = 0; _i < tagObjects.length; _i++) { + // Grab a tag object + var tagObject = tagObjects[_i]; + // Matching keys + var matchingKeys = Object.keys(tagObject); + // Remove any that are not tagged correctly + for(var i = 0; i < candidateServers.length; i++) { + var server = candidateServers[i]; + // If we have tags match + if(server.tags != null) { + var matching = true; + + // Ensure we have all the values + for(var j = 0; j < matchingKeys.length; j++) { + if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) { + matching = false; + break; + } + } + + // If we have a match add it to the list of matching servers + if(matching) { + finalCandidates.push(server); + } + } + } + } + } else { + // Final array candidates + var finalCandidates = candidateServers; + } + + // If no candidates available return an error + if(finalCandidates.length == 0) return new Error("No replica set members available for query"); + // Pick a random server + return finalCandidates[Math.round(Math.random(1000000) * (finalCandidates.length - 1))].checkoutReader(); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js new file mode 100644 index 0000000..16be9d8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js @@ -0,0 +1,965 @@ +var Connection = require('./connection').Connection, + ReadPreference = require('./read_preference').ReadPreference, + DbCommand = require('../commands/db_command').DbCommand, + MongoReply = require('../responses/mongo_reply').MongoReply, + ConnectionPool = require('./connection_pool').ConnectionPool, + EventEmitter = require('events').EventEmitter, + Base = require('./base').Base, + utils = require('../utils'), + timers = require('timers'), + inherits = require('util').inherits; + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; + +/** + * Class representing a single MongoDB Server connection + * + * Options + * - **readPreference** {String, default:null}, set's the read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST) + * - **ssl** {Boolean, default:false}, use ssl connection (needs to have a mongod server with ssl support) + * - **sslValidate** {Boolean, default:false}, validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslCA** {Array, default:null}, Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslCert** {Buffer/String, default:null}, String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslKey** {Buffer/String, default:null}, String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) + * - **sslPass** {Buffer/String, default:null}, String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher) + * - **poolSize** {Number, default:5}, number of connections in the connection pool, set to 5 as default for legacy reasons. + * - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number)) + * - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**. + * - **auto_reconnect** {Boolean, default:false}, reconnect on error. + * - **disableDriverBSONSizeCheck** {Boolean, default:false}, force the server to error if the BSON message is to big + * + * @class Represents a Server connection. + * @param {String} host the server host + * @param {Number} port the server port + * @param {Object} [options] optional options for insert command + */ +function Server(host, port, options) { + // Set up Server instance + if(!(this instanceof Server)) return new Server(host, port, options); + + // Set up event emitter + Base.call(this); + + // Ensure correct values + if(port != null && typeof port == 'object') { + options = port; + port = Connection.DEFAULT_PORT; + } + + var self = this; + this.host = host; + this.port = port; + this.options = options == null ? {} : options; + this.internalConnection; + this.internalMaster = false; + this.connected = false; + this.poolSize = this.options.poolSize == null ? 5 : this.options.poolSize; + this.disableDriverBSONSizeCheck = this.options.disableDriverBSONSizeCheck != null ? this.options.disableDriverBSONSizeCheck : false; + this._used = false; + this.replicasetInstance = null; + + // Set ssl as connection method + this.ssl = this.options.ssl == null ? false : this.options.ssl; + // Set ssl validation + this.sslValidate = this.options.sslValidate == null ? false : this.options.sslValidate; + // Set the ssl certificate authority (array of Buffer/String keys) + this.sslCA = Array.isArray(this.options.sslCA) ? this.options.sslCA : null; + // Certificate to present to the server + this.sslCert = this.options.sslCert; + // Certificate private key if in separate file + this.sslKey = this.options.sslKey; + // Password to unlock private key + this.sslPass = this.options.sslPass; + + // // Create connection Pool instance with the current BSON serializer + // this.connectionPool = new ConnectionPool(this.host, this.port, this.poolSize, null, this.socketOptions); + // Ensure we are not trying to validate with no list of certificates + if(this.sslValidate && (!Array.isArray(this.sslCA) || this.sslCA.length == 0)) { + throw new Error("The driver expects an Array of CA certificates in the sslCA parameter when enabling sslValidate"); + } + + // Get the readPreference + var readPreference = this.options['readPreference']; + // If readPreference is an object get the mode string + var validateReadPreference = readPreference != null && typeof readPreference == 'object' ? readPreference.mode : readPreference; + // Read preference setting + if(validateReadPreference != null) { + if(validateReadPreference != ReadPreference.PRIMARY && validateReadPreference != ReadPreference.SECONDARY && validateReadPreference != ReadPreference.NEAREST + && validateReadPreference != ReadPreference.SECONDARY_PREFERRED && validateReadPreference != ReadPreference.PRIMARY_PREFERRED) { + throw new Error("Illegal readPreference mode specified, " + validateReadPreference); + } + + // Set read Preference + this._readPreference = readPreference; + } else { + this._readPreference = null; + } + + // Contains the isMaster information returned from the server + this.isMasterDoc; + + // Set default connection pool options + this.socketOptions = this.options.socketOptions != null ? this.options.socketOptions : {}; + if(this.disableDriverBSONSizeCheck) this.socketOptions.disableDriverBSONSizeCheck = this.disableDriverBSONSizeCheck; + + // Set ssl up if it's defined + if(this.ssl) { + this.socketOptions.ssl = true; + // Set ssl validation + this.socketOptions.sslValidate = this.sslValidate == null ? false : this.sslValidate; + // Set the ssl certificate authority (array of Buffer/String keys) + this.socketOptions.sslCA = Array.isArray(this.sslCA) ? this.sslCA : null; + // Set certificate to present + this.socketOptions.sslCert = this.sslCert; + // Set certificate to present + this.socketOptions.sslKey = this.sslKey; + // Password to unlock private key + this.socketOptions.sslPass = this.sslPass; + } + + // Set up logger if any set + this.logger = this.options.logger != null + && (typeof this.options.logger.debug == 'function') + && (typeof this.options.logger.error == 'function') + && (typeof this.options.logger.log == 'function') + ? this.options.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}}; + + // Just keeps list of events we allow + this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[], timeout:[]}; + // Internal state of server connection + this._serverState = 'disconnected'; + // Contains state information about server connection + this._state = {'runtimeStats': {'queryStats':new RunningStats()}}; + // Do we record server stats or not + this.recordQueryStats = false; +}; + +/** + * @ignore + */ +inherits(Server, Base); + +// +// Deprecated, USE ReadPreferences class +// +Server.READ_PRIMARY = ReadPreference.PRIMARY; +Server.READ_SECONDARY = ReadPreference.SECONDARY_PREFERRED; +Server.READ_SECONDARY_ONLY = ReadPreference.SECONDARY; + +/** + * Always ourselves + * @ignore + */ +Server.prototype.setReadPreference = function(readPreference) { + this._readPreference = readPreference; +} + +/** + * @ignore + */ +Server.prototype.isMongos = function() { + return this.isMasterDoc != null && this.isMasterDoc['msg'] == "isdbgrid" ? true : false; +} + +/** + * @ignore + */ +Server.prototype._isUsed = function() { + return this._used; +} + +/** + * @ignore + */ +Server.prototype.close = function(callback) { + // Set server status as disconnected + this._serverState = 'destroyed'; + // Remove all local listeners + this.removeAllListeners(); + + if(this.connectionPool != null) { + // Remove all the listeners on the pool so it does not fire messages all over the place + this.connectionPool.removeAllEventListeners(); + // Close the connection if it's open + this.connectionPool.stop(true); + } + + // Emit close event + if(this.db && !this.isSetMember()) { + var self = this; + processor(function() { + self._emitAcrossAllDbInstances(self, null, "close", null, null, true) + }) + } + + // Peform callback if present + if(typeof callback === 'function') callback(null); +}; + +Server.prototype.isDestroyed = function() { + return this._serverState == 'destroyed'; +} + +/** + * @ignore + */ +Server.prototype.isConnected = function() { + return this.connectionPool.isConnected(); +} + +/** + * @ignore + */ +Server.prototype.canWrite = Server.prototype.isConnected; +Server.prototype.canRead = Server.prototype.isConnected; + +Server.prototype.isAutoReconnect = function() { + if(this.isSetMember()) return false; + return this.options.auto_reconnect != null ? this.options.auto_reconnect : true; +} + +/** + * @ignore + */ +Server.prototype.allServerInstances = function() { + return [this]; +} + +/** + * @ignore + */ +Server.prototype.isSetMember = function() { + return this.replicasetInstance != null || this.mongosInstance != null; +} + +/** + * Assigns a replica set to this `server`. + * + * @param {ReplSet} replset + * @ignore + */ +Server.prototype.assignReplicaSet = function (replset) { + this.replicasetInstance = replset; + this.inheritReplSetOptionsFrom(replset); + this.enableRecordQueryStats(replset.recordQueryStats); +} + +/** + * Takes needed options from `replset` and overwrites + * our own options. + * + * @param {ReplSet} replset + * @ignore + */ +Server.prototype.inheritReplSetOptionsFrom = function (replset) { + this.socketOptions = {}; + this.socketOptions.connectTimeoutMS = replset.options.socketOptions.connectTimeoutMS || 30000; + + if(replset.options.ssl) { + // Set ssl on + this.socketOptions.ssl = true; + // Set ssl validation + this.socketOptions.sslValidate = replset.options.sslValidate == null ? false : replset.options.sslValidate; + // Set the ssl certificate authority (array of Buffer/String keys) + this.socketOptions.sslCA = Array.isArray(replset.options.sslCA) ? replset.options.sslCA : null; + // Set certificate to present + this.socketOptions.sslCert = replset.options.sslCert; + // Set certificate to present + this.socketOptions.sslKey = replset.options.sslKey; + // Password to unlock private key + this.socketOptions.sslPass = replset.options.sslPass; + } + + // If a socket option object exists clone it + if(utils.isObject(replset.options.socketOptions)) { + var keys = Object.keys(replset.options.socketOptions); + for(var i = 0; i < keys.length; i++) + this.socketOptions[keys[i]] = replset.options.socketOptions[keys[i]]; + } +} + +/** + * Opens this server connection. + * + * @ignore + */ +Server.prototype.connect = function(dbInstance, options, callback) { + if('function' === typeof options) callback = options, options = {}; + if(options == null) options = {}; + if(!('function' === typeof callback)) callback = null; + var self = this; + // Save the options + this.options = options; + + // Currently needed to work around problems with multiple connections in a pool with ssl + // TODO fix if possible + if(this.ssl == true) { + // Set up socket options for ssl + this.socketOptions.ssl = true; + // Set ssl validation + this.socketOptions.sslValidate = this.sslValidate == null ? false : this.sslValidate; + // Set the ssl certificate authority (array of Buffer/String keys) + this.socketOptions.sslCA = Array.isArray(this.sslCA) ? this.sslCA : null; + // Set certificate to present + this.socketOptions.sslCert = this.sslCert; + // Set certificate to present + this.socketOptions.sslKey = this.sslKey; + // Password to unlock private key + this.socketOptions.sslPass = this.sslPass; + } + + // Let's connect + var server = this; + // Let's us override the main receiver of events + var eventReceiver = options.eventReceiver != null ? options.eventReceiver : this; + // Save reference to dbInstance + this.db = dbInstance; // `db` property matches ReplSet and Mongos + this.dbInstances = [dbInstance]; + + // Force connection pool if there is one + if(server.connectionPool) server.connectionPool.stop(); + // Set server state to connecting + this._serverState = 'connecting'; + + if(server.connectionPool != null) { + // Remove all the listeners on the pool so it does not fire messages all over the place + this.connectionPool.removeAllEventListeners(); + // Close the connection if it's open + this.connectionPool.stop(true); + } + + this.connectionPool = new ConnectionPool(this.host, this.port, this.poolSize, dbInstance.bson, this.socketOptions); + var connectionPool = this.connectionPool; + // If ssl is not enabled don't wait between the pool connections + if(this.ssl == null || !this.ssl) connectionPool._timeToWait = null; + // Set logger on pool + connectionPool.logger = this.logger; + connectionPool.bson = dbInstance.bson; + + // Set basic parameters passed in + var returnIsMasterResults = options.returnIsMasterResults == null ? false : options.returnIsMasterResults; + + // Create a default connect handler, overriden when using replicasets + var connectCallback = function(_server) { + return function(err, reply) { + // ensure no callbacks get called twice + var internalCallback = callback; + callback = null; + // Assign the server + _server = _server != null ? _server : server; + + // If something close down the connection and removed the callback before + // proxy killed connection etc, ignore the erorr as close event was isssued + if(err != null && internalCallback == null) return; + // Internal callback + if(err != null) return internalCallback(err, null, _server); + _server.master = reply.documents[0].ismaster == 1 ? true : false; + _server.connectionPool.setMaxBsonSize(reply.documents[0].maxBsonObjectSize); + _server.connectionPool.setMaxMessageSizeBytes(reply.documents[0].maxMessageSizeBytes); + // Set server state to connEcted + _server._serverState = 'connected'; + // Set server as connected + _server.connected = true; + // Save document returned so we can query it + _server.isMasterDoc = reply.documents[0]; + + // Emit open event + _server._emitAcrossAllDbInstances(_server, eventReceiver, "open", null, returnIsMasterResults ? reply : dbInstance, null); + + // If we have it set to returnIsMasterResults + if(returnIsMasterResults) { + internalCallback(null, reply, _server); + } else { + internalCallback(null, dbInstance, _server); + } + } + }; + + // Let's us override the main connect callback + var connectHandler = options.connectHandler == null ? connectCallback(server) : options.connectHandler; + + // Set up on connect method + connectionPool.on("poolReady", function() { + // Create db command and Add the callback to the list of callbacks by the request id (mapping outgoing messages to correct callbacks) + var db_command = DbCommand.NcreateIsMasterCommand(dbInstance, dbInstance.databaseName); + // Check out a reader from the pool + var connection = connectionPool.checkoutConnection(); + // Register handler for messages + server._registerHandler(db_command, false, connection, connectHandler); + // Write the command out + connection.write(db_command); + }) + + // Set up item connection + connectionPool.on("message", function(message) { + // Attempt to parse the message + try { + // Create a new mongo reply + var mongoReply = new MongoReply() + // Parse the header + mongoReply.parseHeader(message, connectionPool.bson) + + // If message size is not the same as the buffer size + // something went terribly wrong somewhere + if(mongoReply.messageLength != message.length) { + // Emit the error + if(eventReceiver.listeners("error") && eventReceiver.listeners("error").length > 0) eventReceiver.emit("error", new Error("bson length is different from message length"), server); + // Remove all listeners + server.removeAllListeners(); + } else { + var startDate = new Date().getTime(); + + // Callback instance + var callbackInfo = server._findHandler(mongoReply.responseTo.toString()); + + // The command executed another request, log the handler again under that request id + if(mongoReply.requestId > 0 && mongoReply.cursorId.toString() != "0" + && callbackInfo && callbackInfo.info && callbackInfo.info.exhaust) { + server._reRegisterHandler(mongoReply.requestId, callbackInfo); + } + + // Only execute callback if we have a caller + // chained is for findAndModify as it does not respect write concerns + if(callbackInfo && callbackInfo.callback && callbackInfo.info && Array.isArray(callbackInfo.info.chained)) { + // Check if callback has already been fired (missing chain command) + var chained = callbackInfo.info.chained; + var numberOfFoundCallbacks = 0; + for(var i = 0; i < chained.length; i++) { + if(server._hasHandler(chained[i])) numberOfFoundCallbacks++; + } + + // If we have already fired then clean up rest of chain and move on + if(numberOfFoundCallbacks != chained.length) { + for(var i = 0; i < chained.length; i++) { + server._removeHandler(chained[i]); + } + + // Just return from function + return; + } + + // Parse the body + mongoReply.parseBody(message, connectionPool.bson, callbackInfo.info.raw, function(err) { + if(err != null) { + // If pool connection is already closed + if(server._serverState === 'disconnected') return; + // Set server state to disconnected + server._serverState = 'disconnected'; + // Remove all listeners and close the connection pool + server.removeAllListeners(); + connectionPool.stop(true); + + // If we have a callback return the error + if(typeof callback === 'function') { + // ensure no callbacks get called twice + var internalCallback = callback; + callback = null; + // Perform callback + internalCallback(new Error("connection closed due to parseError"), null, server); + } else if(server.isSetMember()) { + if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", new Error("connection closed due to parseError"), server); + } else { + if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", new Error("connection closed due to parseError"), server); + } + + // If we are a single server connection fire errors correctly + if(!server.isSetMember()) { + // Fire all callback errors + server.__executeAllCallbacksWithError(new Error("connection closed due to parseError")); + // Emit error + server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true); + } + // Short cut + return; + } + + // Fetch the callback + var callbackInfo = server._findHandler(mongoReply.responseTo.toString()); + // If we have an error let's execute the callback and clean up all other + // chained commands + var firstResult = mongoReply && mongoReply.documents; + + // Check for an error, if we have one let's trigger the callback and clean up + // The chained callbacks + if(firstResult[0].err != null || firstResult[0].errmsg != null) { + // Trigger the callback for the error + server._callHandler(mongoReply.responseTo, mongoReply, null); + } else { + var chainedIds = callbackInfo.info.chained; + + if(chainedIds.length > 0 && chainedIds[chainedIds.length - 1] == mongoReply.responseTo) { + // Cleanup all other chained calls + chainedIds.pop(); + // Remove listeners + for(var i = 0; i < chainedIds.length; i++) server._removeHandler(chainedIds[i]); + // Call the handler + server._callHandler(mongoReply.responseTo, callbackInfo.info.results.shift(), null); + } else{ + // Add the results to all the results + for(var i = 0; i < chainedIds.length; i++) { + var handler = server._findHandler(chainedIds[i]); + // Check if we have an object, if it's the case take the current object commands and + // and add this one + if(handler.info != null) { + handler.info.results = Array.isArray(callbackInfo.info.results) ? callbackInfo.info.results : []; + handler.info.results.push(mongoReply); + } + } + } + } + }); + } else if(callbackInfo && callbackInfo.callback && callbackInfo.info) { + // Parse the body + mongoReply.parseBody(message, connectionPool.bson, callbackInfo.info.raw, function(err) { + if(err != null) { + // If pool connection is already closed + if(server._serverState === 'disconnected') return; + // Set server state to disconnected + server._serverState = 'disconnected'; + // Remove all listeners and close the connection pool + server.removeAllListeners(); + connectionPool.stop(true); + + // If we have a callback return the error + if(typeof callback === 'function') { + // ensure no callbacks get called twice + var internalCallback = callback; + callback = null; + // Perform callback + internalCallback(new Error("connection closed due to parseError"), null, server); + } else if(server.isSetMember()) { + if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", new Error("connection closed due to parseError"), server); + } else { + if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", new Error("connection closed due to parseError"), server); + } + + // If we are a single server connection fire errors correctly + if(!server.isSetMember()) { + // Fire all callback errors + server.__executeAllCallbacksWithError(new Error("connection closed due to parseError")); + // Emit error + server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true); + } + // Short cut + return; + } + + // Let's record the stats info if it's enabled + if(server.recordQueryStats == true && server._state['runtimeStats'] != null + && server._state.runtimeStats['queryStats'] instanceof RunningStats) { + // Add data point to the running statistics object + server._state.runtimeStats.queryStats.push(new Date().getTime() - callbackInfo.info.start); + } + + server._callHandler(mongoReply.responseTo, mongoReply, null); + }); + } + } + } catch (err) { + // Throw error in next tick + processor(function() { + throw err; + }) + } + }); + + // Handle timeout + connectionPool.on("timeout", function(err) { + // If pool connection is already closed + if(server._serverState === 'disconnected' + || server._serverState === 'destroyed') return; + // Set server state to disconnected + server._serverState = 'disconnected'; + // If we have a callback return the error + if(typeof callback === 'function') { + // ensure no callbacks get called twice + var internalCallback = callback; + callback = null; + // Perform callback + internalCallback(err, null, server); + } else if(server.isSetMember()) { + if(server.listeners("timeout") && server.listeners("timeout").length > 0) server.emit("timeout", err, server); + } else { + if(eventReceiver.listeners("timeout") && eventReceiver.listeners("timeout").length > 0) eventReceiver.emit("timeout", err, server); + } + + // If we are a single server connection fire errors correctly + if(!server.isSetMember()) { + // Fire all callback errors + server.__executeAllCallbacksWithError(err); + // Emit error + server._emitAcrossAllDbInstances(server, eventReceiver, "timeout", err, server, true); + } + }); + + // Handle errors + connectionPool.on("error", function(message, connection, error_options) { + // If pool connection is already closed + if(server._serverState === 'disconnected' + || server._serverState === 'destroyed') return; + // Set server state to disconnected + server._serverState = 'disconnected'; + // Error message + var error_message = new Error(message && message.err ? message.err : message); + // Error message coming from ssl + if(error_options && error_options.ssl) error_message.ssl = true; + // If we have a callback return the error + if(typeof callback === 'function') { + // ensure no callbacks get called twice + var internalCallback = callback; + callback = null; + // Perform callback + internalCallback(error_message, null, server); + } else if(server.isSetMember()) { + if(server.listeners("error") && server.listeners("error").length > 0) server.emit("error", error_message, server); + } else { + if(eventReceiver.listeners("error") && eventReceiver.listeners("error").length > 0) eventReceiver.emit("error", error_message, server); + } + + // If we are a single server connection fire errors correctly + if(!server.isSetMember()) { + // Fire all callback errors + server.__executeAllCallbacksWithError(error_message); + // Emit error + server._emitAcrossAllDbInstances(server, eventReceiver, "error", error_message, server, true); + } + }); + + // Handle close events + connectionPool.on("close", function() { + // If pool connection is already closed + if(server._serverState === 'disconnected' + || server._serverState === 'destroyed') return; + // Set server state to disconnected + server._serverState = 'disconnected'; + // If we have a callback return the error + if(typeof callback == 'function') { + // ensure no callbacks get called twice + var internalCallback = callback; + callback = null; + // Perform callback + internalCallback(new Error("connection closed"), null, server); + } else if(server.isSetMember()) { + if(server.listeners("close") && server.listeners("close").length > 0) server.emit("close", new Error("connection closed"), server); + } else { + if(eventReceiver.listeners("close") && eventReceiver.listeners("close").length > 0) eventReceiver.emit("close", new Error("connection closed"), server); + } + + // If we are a single server connection fire errors correctly + if(!server.isSetMember()) { + // Fire all callback errors + server.__executeAllCallbacksWithError(new Error("connection closed")); + // Emit error + server._emitAcrossAllDbInstances(server, eventReceiver, "close", server, null, true); + } + + // If we have autoConnect enabled let's fire up an attempt to reconnect + if(server.isAutoReconnect() + && (server._serverState != 'destroyed')) { + // Set the number of retries + server._reconnect_retries = server.db.numberOfRetries; + + // Attempt reconnect + if(!server._reconnectInProgreess) { + server._reconnectInProgreess = true; + setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds); + } + } + }); + + /** + * @ignore + */ + var __attemptReconnect = function(server) { + return function() { + // Attempt reconnect + server.connect(server.db, server.options, function(err, result) { + server._reconnect_retries = server._reconnect_retries - 1; + + if(err) { + // Retry + if(server._reconnect_retries == 0 || server._serverState == 'destroyed') { + server._serverState = 'connected'; + server._reconnectInProgreess = false + // Fire all callback errors + return server.__executeAllCallbacksWithError(new Error("failed to reconnect to server")); + } else { + return setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds); + } + } else { + // Set as authenticating (isConnected will be false) + server._serverState = 'authenticating'; + // Apply any auths, we don't try to catch any errors here + // as there are nowhere to simply propagate them to + self._apply_auths(server.db, function(err, result) { + server._serverState = 'connected'; + server._reconnectInProgreess = false; + server._commandsStore.execute_queries(); + server._commandsStore.execute_writes(); + }); + } + }); + } + } + + // If we have a parser error we are in an unknown state, close everything and emit + // error + connectionPool.on("parseError", function(message) { + // If pool connection is already closed + if(server._serverState === 'disconnected' + || server._serverState === 'destroyed') return; + // Set server state to disconnected + server._serverState = 'disconnected'; + // If we have a callback return the error + if(typeof callback === 'function') { + // ensure no callbacks get called twice + var internalCallback = callback; + callback = null; + // Perform callback + internalCallback(new Error("connection closed due to parseError"), null, server); + } else if(server.isSetMember()) { + if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", new Error("connection closed due to parseError"), server); + } else { + if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", new Error("connection closed due to parseError"), server); + } + + // If we are a single server connection fire errors correctly + if(!server.isSetMember()) { + // Fire all callback errors + server.__executeAllCallbacksWithError(new Error("connection closed due to parseError")); + // Emit error + server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true); + } + }); + + // Boot up connection poole, pass in a locator of callbacks + connectionPool.start(); +} + +/** + * @ignore + */ +Server.prototype.allRawConnections = function() { + return this.connectionPool.getAllConnections(); +} + +/** + * Check if a writer can be provided + * @ignore + */ +var canCheckoutWriter = function(self, read) { + // We cannot write to an arbiter or secondary server + if(self.isMasterDoc['arbiterOnly'] == true) { + return new Error("Cannot write to an arbiter"); + } if(self.isMasterDoc['secondary'] == true) { + return new Error("Cannot write to a secondary"); + } else if(read == true && self._readPreference == ReadPreference.SECONDARY && self.isMasterDoc['ismaster'] == true) { + return new Error("Cannot read from primary when secondary only specified"); + } + + // Return no error + return null; +} + +/** + * @ignore + */ +Server.prototype.checkoutWriter = function(read) { + if(read == true) return this.connectionPool.checkoutConnection(); + // Check if are allowed to do a checkout (if we try to use an arbiter f.ex) + var result = canCheckoutWriter(this, read); + // If the result is null check out a writer + if(result == null && this.connectionPool != null) { + return this.connectionPool.checkoutConnection(); + } else if(result == null) { + return null; + } else { + return result; + } +} + +/** + * Check if a reader can be provided + * @ignore + */ +var canCheckoutReader = function(self) { + // We cannot write to an arbiter or secondary server + if(self.isMasterDoc && self.isMasterDoc['arbiterOnly'] == true) { + return new Error("Cannot write to an arbiter"); + } else if(self._readPreference != null) { + // If the read preference is Primary and the instance is not a master return an error + if((self._readPreference == ReadPreference.PRIMARY) && self.isMasterDoc['ismaster'] != true) { + return new Error("Read preference is Server.PRIMARY and server is not master"); + } else if(self._readPreference == ReadPreference.SECONDARY && self.isMasterDoc['ismaster'] == true) { + return new Error("Cannot read from primary when secondary only specified"); + } + } + + // Return no error + return null; +} + +/** + * @ignore + */ +Server.prototype.checkoutReader = function(read) { + // Check if are allowed to do a checkout (if we try to use an arbiter f.ex) + var result = canCheckoutReader(this); + // If the result is null check out a writer + if(result == null && this.connectionPool != null) { + return this.connectionPool.checkoutConnection(); + } else if(result == null) { + return null; + } else { + return result; + } +} + +/** + * @ignore + */ +Server.prototype.enableRecordQueryStats = function(enable) { + this.recordQueryStats = enable; +} + +/** + * Internal statistics object used for calculating average and standard devitation on + * running queries + * @ignore + */ +var RunningStats = function() { + var self = this; + this.m_n = 0; + this.m_oldM = 0.0; + this.m_oldS = 0.0; + this.m_newM = 0.0; + this.m_newS = 0.0; + + // Define getters + Object.defineProperty(this, "numDataValues", { enumerable: true + , get: function () { return this.m_n; } + }); + + Object.defineProperty(this, "mean", { enumerable: true + , get: function () { return (this.m_n > 0) ? this.m_newM : 0.0; } + }); + + Object.defineProperty(this, "variance", { enumerable: true + , get: function () { return ((this.m_n > 1) ? this.m_newS/(this.m_n - 1) : 0.0); } + }); + + Object.defineProperty(this, "standardDeviation", { enumerable: true + , get: function () { return Math.sqrt(this.variance); } + }); + + Object.defineProperty(this, "sScore", { enumerable: true + , get: function () { + var bottom = this.mean + this.standardDeviation; + if(bottom == 0) return 0; + return ((2 * this.mean * this.standardDeviation)/(bottom)); + } + }); +} + +/** + * @ignore + */ +RunningStats.prototype.push = function(x) { + // Update the number of samples + this.m_n = this.m_n + 1; + // See Knuth TAOCP vol 2, 3rd edition, page 232 + if(this.m_n == 1) { + this.m_oldM = this.m_newM = x; + this.m_oldS = 0.0; + } else { + this.m_newM = this.m_oldM + (x - this.m_oldM) / this.m_n; + this.m_newS = this.m_oldS + (x - this.m_oldM) * (x - this.m_newM); + + // set up for next iteration + this.m_oldM = this.m_newM; + this.m_oldS = this.m_newS; + } +} + +/** + * @ignore + */ +Object.defineProperty(Server.prototype, "autoReconnect", { enumerable: true + , get: function () { + return this.options['auto_reconnect'] == null ? false : this.options['auto_reconnect']; + } +}); + +/** + * @ignore + */ +Object.defineProperty(Server.prototype, "connection", { enumerable: true + , get: function () { + return this.internalConnection; + } + , set: function(connection) { + this.internalConnection = connection; + } +}); + +/** + * @ignore + */ +Object.defineProperty(Server.prototype, "master", { enumerable: true + , get: function () { + return this.internalMaster; + } + , set: function(value) { + this.internalMaster = value; + } +}); + +/** + * @ignore + */ +Object.defineProperty(Server.prototype, "primary", { enumerable: true + , get: function () { + return this; + } +}); + +/** + * Getter for query Stats + * @ignore + */ +Object.defineProperty(Server.prototype, "queryStats", { enumerable: true + , get: function () { + return this._state.runtimeStats.queryStats; + } +}); + +/** + * @ignore + */ +Object.defineProperty(Server.prototype, "runtimeStats", { enumerable: true + , get: function () { + return this._state.runtimeStats; + } +}); + +/** + * Get Read Preference method + * @ignore + */ +Object.defineProperty(Server.prototype, "readPreference", { enumerable: true + , get: function () { + if(this._readPreference == null && this.readSecondary) { + return Server.READ_SECONDARY; + } else if(this._readPreference == null && !this.readSecondary) { + return Server.READ_PRIMARY; + } else { + return this._readPreference; + } + } +}); + +/** + * @ignore + */ +exports.Server = Server; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js new file mode 100644 index 0000000..9adf526 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js @@ -0,0 +1,241 @@ +var fs = require('fs'), + ReadPreference = require('./read_preference').ReadPreference; + +exports.parse = function(url, options) { + // Ensure we have a default options object if none set + options = options || {}; + // Variables + var connection_part = ''; + var auth_part = ''; + var query_string_part = ''; + var dbName = 'admin'; + + // Must start with mongodb + if(url.indexOf("mongodb://") != 0) + throw Error("URL must be in the format mongodb://user:pass@host:port/dbname"); + // If we have a ? mark cut the query elements off + if(url.indexOf("?") != -1) { + query_string_part = url.substr(url.indexOf("?") + 1); + connection_part = url.substring("mongodb://".length, url.indexOf("?")) + } else { + connection_part = url.substring("mongodb://".length); + } + + // Check if we have auth params + if(connection_part.indexOf("@") != -1) { + auth_part = connection_part.split("@")[0]; + connection_part = connection_part.split("@")[1]; + } + + // Check if the connection string has a db + if(connection_part.indexOf(".sock") != -1) { + if(connection_part.indexOf(".sock/") != -1) { + dbName = connection_part.split(".sock/")[1]; + connection_part = connection_part.split("/", connection_part.indexOf(".sock") + ".sock".length); + } + } else if(connection_part.indexOf("/") != -1) { + dbName = connection_part.split("/")[1]; + connection_part = connection_part.split("/")[0]; + } + + // Result object + var object = {}; + + // Pick apart the authentication part of the string + var authPart = auth_part || ''; + var auth = authPart.split(':', 2); + if(options['uri_decode_auth']){ + auth[0] = decodeURIComponent(auth[0]); + if(auth[1]){ + auth[1] = decodeURIComponent(auth[1]); + } + } + + // Add auth to final object if we have 2 elements + if(auth.length == 2) object.auth = {user: auth[0], password: auth[1]}; + + // Variables used for temporary storage + var hostPart; + var urlOptions; + var servers; + var serverOptions = {socketOptions: {}}; + var dbOptions = {read_preference_tags: []}; + var replSetServersOptions = {socketOptions: {}}; + // Add server options to final object + object.server_options = serverOptions; + object.db_options = dbOptions; + object.rs_options = replSetServersOptions; + object.mongos_options = {}; + + // Let's check if we are using a domain socket + if(url.match(/\.sock/)) { + // Split out the socket part + var domainSocket = url.substring( + url.indexOf("mongodb://") + "mongodb://".length + , url.lastIndexOf(".sock") + ".sock".length); + // Clean out any auth stuff if any + if(domainSocket.indexOf("@") != -1) domainSocket = domainSocket.split("@")[1]; + servers = [{domain_socket: domainSocket}]; + } else { + // Split up the db + hostPart = connection_part; + // Parse all server results + servers = hostPart.split(',').map(function(h) { + var hostPort = h.split(':', 2); + var _host = hostPort[0] || 'localhost'; + var _port = hostPort[1] != null ? parseInt(hostPort[1], 10) : 27017; + // Check for localhost?safe=true style case + if(_host.indexOf("?") != -1) _host = _host.split(/\?/)[0]; + + // Return the mapped object + return {host: _host, port: _port}; + }); + } + + // Get the db name + object.dbName = dbName || 'admin'; + // Split up all the options + urlOptions = (query_string_part || '').split(/[&;]/); + // Ugh, we have to figure out which options go to which constructor manually. + urlOptions.forEach(function(opt) { + if(!opt) return; + var splitOpt = opt.split('='), name = splitOpt[0], value = splitOpt[1]; + // Options implementations + switch(name) { + case 'slaveOk': + case 'slave_ok': + serverOptions.slave_ok = (value == 'true'); + break; + case 'maxPoolSize': + case 'poolSize': + serverOptions.poolSize = parseInt(value, 10); + replSetServersOptions.poolSize = parseInt(value, 10); + break; + case 'autoReconnect': + case 'auto_reconnect': + serverOptions.auto_reconnect = (value == 'true'); + break; + case 'minPoolSize': + throw new Error("minPoolSize not supported"); + case 'maxIdleTimeMS': + throw new Error("maxIdleTimeMS not supported"); + case 'waitQueueMultiple': + throw new Error("waitQueueMultiple not supported"); + case 'waitQueueTimeoutMS': + throw new Error("waitQueueTimeoutMS not supported"); + case 'uuidRepresentation': + throw new Error("uuidRepresentation not supported"); + case 'ssl': + if(value == 'prefer') { + serverOptions.ssl = value; + replSetServersOptions.ssl = value; + break; + } + serverOptions.ssl = (value == 'true'); + replSetServersOptions.ssl = (value == 'true'); + break; + case 'replicaSet': + case 'rs_name': + replSetServersOptions.rs_name = value; + break; + case 'reconnectWait': + replSetServersOptions.reconnectWait = parseInt(value, 10); + break; + case 'retries': + replSetServersOptions.retries = parseInt(value, 10); + break; + case 'readSecondary': + case 'read_secondary': + replSetServersOptions.read_secondary = (value == 'true'); + break; + case 'fsync': + dbOptions.fsync = (value == 'true'); + break; + case 'journal': + dbOptions.journal = (value == 'true'); + break; + case 'safe': + dbOptions.safe = (value == 'true'); + break; + case 'nativeParser': + case 'native_parser': + dbOptions.native_parser = (value == 'true'); + break; + case 'connectTimeoutMS': + serverOptions.socketOptions.connectTimeoutMS = parseInt(value, 10); + replSetServersOptions.socketOptions.connectTimeoutMS = parseInt(value, 10); + break; + case 'socketTimeoutMS': + serverOptions.socketOptions.socketTimeoutMS = parseInt(value, 10); + replSetServersOptions.socketOptions.socketTimeoutMS = parseInt(value, 10); + break; + case 'w': + dbOptions.w = parseInt(value, 10); + break; + case 'authSource': + dbOptions.authSource = value; + break; + case 'authMechanism': + if(value == 'GSSAPI') { + // If no password provided decode only the principal + if(object.auth == null) { + var urlDecodeAuthPart = decodeURIComponent(authPart); + if(urlDecodeAuthPart.indexOf("@") == -1) throw new Error("GSSAPI requires a provided principal"); + object.auth = {user: urlDecodeAuthPart, password: null}; + } else { + object.auth.user = decodeURIComponent(object.auth.user); + } + } + // Only support GSSAPI or MONGODB-CR for now + if(value != 'GSSAPI' && value != 'MONGODB-CR') throw new Error("only GSSAPI or MONGODB-CR is supported by authMechanism"); + dbOptions.authMechanism = value; + break; + case 'wtimeoutMS': + dbOptions.wtimeoutMS = parseInt(value, 10); + break; + case 'readPreference': + if(!ReadPreference.isValid(value)) throw new Error("readPreference must be either primary/primaryPreferred/secondary/secondaryPreferred/nearest"); + dbOptions.read_preference = value; + break; + case 'readPreferenceTags': + // Contains the tag object + var tagObject = {}; + if(value == null || value == '') { + dbOptions.read_preference_tags.push(tagObject); + break; + } + + // Split up the tags + var tags = value.split(/\,/); + for(var i = 0; i < tags.length; i++) { + var parts = tags[i].trim().split(/\:/); + tagObject[parts[0]] = parts[1]; + } + + // Set the preferences tags + dbOptions.read_preference_tags.push(tagObject); + break; + default: + break; + } + }); + + // No tags: should be null (not []) + if(dbOptions.read_preference_tags.length === 0) { + dbOptions.read_preference_tags = null; + } + + // Validate if there are an invalid write concern combinations + if((dbOptions.w == -1 || dbOptions.w == 0) && ( + dbOptions.journal == true + || dbOptions.fsync == true + || dbOptions.safe == true)) throw new Error("w set to -1 or 0 cannot be combined with safe/w/journal/fsync") + + // If no read preference set it to primary + if(!dbOptions.read_preference) dbOptions.read_preference = 'primary'; + + // Add servers to result + object.servers = servers; + // Returned parsed object + return object; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js new file mode 100644 index 0000000..f91417b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js @@ -0,0 +1,930 @@ +var QueryCommand = require('./commands/query_command').QueryCommand, + GetMoreCommand = require('./commands/get_more_command').GetMoreCommand, + KillCursorCommand = require('./commands/kill_cursor_command').KillCursorCommand, + Long = require('bson').Long, + ReadPreference = require('./connection/read_preference').ReadPreference, + CursorStream = require('./cursorstream'), + timers = require('timers'), + utils = require('./utils'); + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; + +/** + * Constructor for a cursor object that handles all the operations on query result + * using find. This cursor object is unidirectional and cannot traverse backwards. Clients should not be creating a cursor directly, + * but use find to acquire a cursor. (INTERNAL TYPE) + * + * Options + * - **skip** {Number} skip number of documents to skip. + * - **limit** {Number}, limit the number of results to return. -1 has a special meaning and is used by Db.eval. A value of 1 will also be treated as if it were -1. + * - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc. + * - **hint** {Object}, hint force the query to use a specific index. + * - **explain** {Boolean}, explain return the explaination of the query. + * - **snapshot** {Boolean}, snapshot Snapshot mode assures no duplicates are returned. + * - **timeout** {Boolean}, timeout allow the query to timeout. + * - **tailable** {Boolean}, tailable allow the cursor to be tailable. + * - **awaitdata** {Boolean}, awaitdata allow the cursor to wait for data, only applicable for tailable cursor. + * - **batchSize** {Number}, batchSize the number of the subset of results to request the database to return for every request. This should initially be greater than 1 otherwise the database will automatically close the cursor. The batch size can be set to 1 with cursorInstance.batchSize after performing the initial query to the database. + * - **raw** {Boolean}, raw return all query documents as raw buffers (default false). + * - **read** {Boolean}, read specify override of read from source (primary/secondary). + * - **returnKey** {Boolean}, returnKey only return the index key. + * - **maxScan** {Number}, maxScan limit the number of items to scan. + * - **min** {Number}, min set index bounds. + * - **max** {Number}, max set index bounds. + * - **showDiskLoc** {Boolean}, showDiskLoc show disk location of results. + * - **comment** {String}, comment you can put a $comment field on a query to make looking in the profiler logs simpler. + * - **numberOfRetries** {Number}, numberOfRetries if using awaidata specifies the number of times to retry on timeout. + * - **dbName** {String}, dbName override the default dbName. + * - **tailableRetryInterval** {Number}, tailableRetryInterval specify the miliseconds between getMores on tailable cursor. + * - **exhaust** {Boolean}, exhaust have the server send all the documents at once as getMore packets. + * - **partial** {Boolean}, partial have the sharded system return a partial result from mongos. + * + * @class Represents a Cursor. + * @param {Db} db the database object to work with. + * @param {Collection} collection the collection to query. + * @param {Object} selector the query selector. + * @param {Object} fields an object containing what fields to include or exclude from objects returned. + * @param {Object} [options] additional options for the collection. +*/ +function Cursor(db, collection, selector, fields, options) { + this.db = db; + this.collection = collection; + this.selector = selector; + this.fields = fields; + options = !options ? {} : options; + + this.skipValue = options.skip == null ? 0 : options.skip; + this.limitValue = options.limit == null ? 0 : options.limit; + this.sortValue = options.sort; + this.hint = options.hint; + this.explainValue = options.explain; + this.snapshot = options.snapshot; + this.timeout = options.timeout == null ? true : options.timeout; + this.tailable = options.tailable; + this.awaitdata = options.awaitdata; + this.numberOfRetries = options.numberOfRetries == null ? 5 : options.numberOfRetries; + this.currentNumberOfRetries = this.numberOfRetries; + this.batchSizeValue = options.batchSize == null ? 0 : options.batchSize; + this.raw = options.raw == null ? false : options.raw; + this.read = options.read == null ? ReadPreference.PRIMARY : options.read; + this.returnKey = options.returnKey; + this.maxScan = options.maxScan; + this.min = options.min; + this.max = options.max; + this.showDiskLoc = options.showDiskLoc; + this.comment = options.comment; + this.tailableRetryInterval = options.tailableRetryInterval || 100; + this.exhaust = options.exhaust || false; + this.partial = options.partial || false; + this.slaveOk = options.slaveOk || false; + + this.totalNumberOfRecords = 0; + this.items = []; + this.cursorId = Long.fromInt(0); + + // This name + this.dbName = options.dbName; + + // State variables for the cursor + this.state = Cursor.INIT; + // Keep track of the current query run + this.queryRun = false; + this.getMoreTimer = false; + + // If we are using a specific db execute against it + if(this.dbName != null) { + this.collectionName = this.dbName + "." + this.collection.collectionName; + } else { + this.collectionName = (this.db.databaseName ? this.db.databaseName + "." : '') + this.collection.collectionName; + } +}; + +/** + * Resets this cursor to its initial state. All settings like the query string, + * tailable, batchSizeValue, skipValue and limits are preserved. + * + * @return {Cursor} returns itself with rewind applied. + * @api public + */ +Cursor.prototype.rewind = function() { + var self = this; + + if (self.state != Cursor.INIT) { + if (self.state != Cursor.CLOSED) { + self.close(function() {}); + } + + self.numberOfReturned = 0; + self.totalNumberOfRecords = 0; + self.items = []; + self.cursorId = Long.fromInt(0); + self.state = Cursor.INIT; + self.queryRun = false; + } + + return self; +}; + + +/** + * Returns an array of documents. The caller is responsible for making sure that there + * is enough memory to store the results. Note that the array only contain partial + * results when this cursor had been previouly accessed. In that case, + * cursor.rewind() can be used to reset the cursor. + * + * @param {Function} callback This will be called after executing this method successfully. The first parameter will contain the Error object if an error occured, or null otherwise. The second parameter will contain an array of BSON deserialized objects as a result of the query. + * @return {null} + * @api public + */ +Cursor.prototype.toArray = function(callback) { + var self = this; + + if(!callback) { + throw new Error('callback is mandatory'); + } + + if(this.tailable) { + callback(new Error("Tailable cursor cannot be converted to array"), null); + } else if(this.state != Cursor.CLOSED) { + // return toArrayExhaust(self, callback); + // If we are using exhaust we can't use the quick fire method + if(self.exhaust) return toArrayExhaust(self, callback); + // Quick fire using trampoline to avoid nextTick + self.nextObject({noReturn: true}, function(err, result) { + if(err) return callback(utils.toError(err), null); + if(self.cursorId.toString() == "0") { + self.state = Cursor.CLOSED; + return callback(null, self.items); + } + + // Let's issue getMores until we have no more records waiting + getAllByGetMore(self, function(err, done) { + self.state = Cursor.CLOSED; + if(err) return callback(utils.toError(err), null); + // Let's release the internal list + var items = self.items; + self.items = null; + // Return all the items + callback(null, items); + }); + }) + + } else { + callback(new Error("Cursor is closed"), null); + } +} + +var toArrayExhaust = function(self, callback) { + var items = []; + + self.each(function(err, item) { + if(err != null) { + return callback(utils.toError(err), null); + } + + if(item != null && Array.isArray(items)) { + items.push(item); + } else { + var resultItems = items; + items = null; + self.items = []; + callback(null, resultItems); + } + }); +} + +var getAllByGetMore = function(self, callback) { + getMore(self, {noReturn: true}, function(err, result) { + if(err) return callback(utils.toError(err)); + if(result == null) return callback(null, null); + if(self.cursorId.toString() == "0") return callback(null, null); + getAllByGetMore(self, callback); + }) +} + +/** + * Iterates over all the documents for this cursor. As with **{cursor.toArray}**, + * not all of the elements will be iterated if this cursor had been previouly accessed. + * In that case, **{cursor.rewind}** can be used to reset the cursor. However, unlike + * **{cursor.toArray}**, the cursor will only hold a maximum of batch size elements + * at any given time if batch size is specified. Otherwise, the caller is responsible + * for making sure that the entire result can fit the memory. + * + * @param {Function} callback this will be called for while iterating every document of the query result. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the document. + * @return {null} + * @api public + */ +Cursor.prototype.each = function(callback) { + var self = this; + var fn; + + if (!callback) { + throw new Error('callback is mandatory'); + } + + if(this.state != Cursor.CLOSED) { + // If we are using exhaust we can't use the quick fire method + if(self.exhaust) return eachExhaust(self, callback); + // Quick fire using trampoline to avoid nextTick + if(this.items.length > 0) { + // Trampoline all the entries + while(fn = loop(self, callback)) fn(self, callback); + // Call each again + self.each(callback); + } else { + self.nextObject(function(err, item) { + + if(err) { + self.state = Cursor.CLOSED; + return callback(utils.toError(err), item); + } + + if(item == null) return callback(null, null); + callback(null, item); + self.each(callback); + }) + } + } else { + callback(new Error("Cursor is closed"), null); + } +} + +// Special for exhaust command as we don't initiate the actual result sets +// the server just sends them as they arrive meaning we need to get the IO event +// loop happen so we can receive more data from the socket or we return to early +// after the first fetch and loose all the incoming getMore's automatically issued +// from the server. +var eachExhaust = function(self, callback) { + //FIX: stack overflow (on deep callback) (cred: https://github.com/limp/node-mongodb-native/commit/27da7e4b2af02035847f262b29837a94bbbf6ce2) + processor(function(){ + // Fetch the next object until there is no more objects + self.nextObject(function(err, item) { + if(err != null) return callback(err, null); + if(item != null) { + callback(null, item); + eachExhaust(self, callback); + } else { + // Close the cursor if done + self.state = Cursor.CLOSED; + callback(err, null); + } + }); + }); +} + +// Trampoline emptying the number of retrieved items +// without incurring a nextTick operation +var loop = function(self, callback) { + // No more items we are done + if(self.items.length == 0) return; + // Get the next document + var doc = self.items.shift(); + // Callback + callback(null, doc); + // Loop + return loop; +} + +/** + * Determines how many result the query for this cursor will return + * + * @param {Boolean} applySkipLimit if set to true will apply the skip and limits set on the cursor. Defaults to false. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the number of results or null if an error occured. + * @return {null} + * @api public + */ +Cursor.prototype.count = function(applySkipLimit, callback) { + if(typeof applySkipLimit == 'function') { + callback = applySkipLimit; + applySkipLimit = false; + } + + var options = {}; + if(applySkipLimit) { + if(typeof this.skipValue == 'number') options.skip = this.skipValue; + if(typeof this.limitValue == 'number') options.limit = this.limitValue; + } + + // Call count command + this.collection.count(this.selector, options, callback); +}; + +/** + * Sets the sort parameter of this cursor to the given value. + * + * This method has the following method signatures: + * (keyOrList, callback) + * (keyOrList, direction, callback) + * + * @param {String|Array|Object} keyOrList This can be a string or an array. If passed as a string, the string will be the field to sort. If passed an array, each element will represent a field to be sorted and should be an array that contains the format [string, direction]. + * @param {String|Number} direction this determines how the results are sorted. "asc", "ascending" or 1 for asceding order while "desc", "desceding or -1 for descending order. Note that the strings are case insensitive. + * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. + * @return {Cursor} an instance of this object. + * @api public + */ +Cursor.prototype.sort = function(keyOrList, direction, callback) { + callback = callback || function(){}; + if(typeof direction === "function") { callback = direction; direction = null; } + + if(this.tailable) { + callback(new Error("Tailable cursor doesn't support sorting"), null); + } else if(this.queryRun == true || this.state == Cursor.CLOSED) { + callback(new Error("Cursor is closed"), null); + } else { + var order = keyOrList; + + if(direction != null) { + order = [[keyOrList, direction]]; + } + + this.sortValue = order; + callback(null, this); + } + return this; +}; + +/** + * Sets the limit parameter of this cursor to the given value. + * + * @param {Number} limit the new limit. + * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the limit given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. + * @return {Cursor} an instance of this object. + * @api public + */ +Cursor.prototype.limit = function(limit, callback) { + if(this.tailable) { + if(callback) { + callback(new Error("Tailable cursor doesn't support limit"), null); + } else { + throw new Error("Tailable cursor doesn't support limit"); + } + } else if(this.queryRun == true || this.state == Cursor.CLOSED) { + if(callback) { + callback(new Error("Cursor is closed"), null); + } else { + throw new Error("Cursor is closed"); + } + } else { + if(limit != null && limit.constructor != Number) { + if(callback) { + callback(new Error("limit requires an integer"), null); + } else { + throw new Error("limit requires an integer"); + } + } else { + this.limitValue = limit; + if(callback) return callback(null, this); + } + } + + return this; +}; + +/** + * Sets the read preference for the cursor + * + * @param {String} the read preference for the cursor, one of Server.READ_PRIMARY, Server.READ_SECONDARY, Server.READ_SECONDARY_ONLY + * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the read preference given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. + * @return {Cursor} an instance of this object. + * @api public + */ +Cursor.prototype.setReadPreference = function(readPreference, tags, callback) { + if(typeof tags == 'function') callback = tags; + + var _mode = readPreference != null && typeof readPreference == 'object' ? readPreference.mode : readPreference; + + if(this.queryRun == true || this.state == Cursor.CLOSED) { + if(callback == null) throw new Error("Cannot change read preference on executed query or closed cursor"); + callback(new Error("Cannot change read preference on executed query or closed cursor")); + } else if(_mode != null && _mode != 'primary' + && _mode != 'secondaryOnly' && _mode != 'secondary' + && _mode != 'nearest' && _mode != 'primaryPreferred' && _mode != 'secondaryPreferred') { + if(callback == null) throw new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported"); + callback(new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported")); + } else { + this.read = readPreference; + if(callback != null) callback(null, this); + } + + return this; +} + +/** + * Sets the skip parameter of this cursor to the given value. + * + * @param {Number} skip the new skip value. + * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the skip value given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. + * @return {Cursor} an instance of this object. + * @api public + */ +Cursor.prototype.skip = function(skip, callback) { + callback = callback || function(){}; + + if(this.tailable) { + callback(new Error("Tailable cursor doesn't support skip"), null); + } else if(this.queryRun == true || this.state == Cursor.CLOSED) { + callback(new Error("Cursor is closed"), null); + } else { + if(skip != null && skip.constructor != Number) { + callback(new Error("skip requires an integer"), null); + } else { + this.skipValue = skip; + callback(null, this); + } + } + + return this; +}; + +/** + * Sets the batch size parameter of this cursor to the given value. + * + * @param {Number} batchSize the new batch size. + * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the batchSize given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. + * @return {Cursor} an instance of this object. + * @api public + */ +Cursor.prototype.batchSize = function(batchSize, callback) { + if(this.state == Cursor.CLOSED) { + if(callback != null) { + return callback(new Error("Cursor is closed"), null); + } else { + throw new Error("Cursor is closed"); + } + } else if(batchSize != null && batchSize.constructor != Number) { + if(callback != null) { + return callback(new Error("batchSize requires an integer"), null); + } else { + throw new Error("batchSize requires an integer"); + } + } else { + this.batchSizeValue = batchSize; + if(callback != null) return callback(null, this); + } + + return this; +}; + +/** + * The limit used for the getMore command + * + * @return {Number} The number of records to request per batch. + * @ignore + * @api private + */ +var limitRequest = function(self) { + var requestedLimit = self.limitValue; + var absLimitValue = Math.abs(self.limitValue); + var absBatchValue = Math.abs(self.batchSizeValue); + + if(absLimitValue > 0) { + if (absBatchValue > 0) { + requestedLimit = Math.min(absLimitValue, absBatchValue); + } + } else { + requestedLimit = self.batchSizeValue; + } + + return requestedLimit; +}; + + +/** + * Generates a QueryCommand object using the parameters of this cursor. + * + * @return {QueryCommand} The command object + * @ignore + * @api private + */ +var generateQueryCommand = function(self) { + // Unpack the options + var queryOptions = QueryCommand.OPTS_NONE; + if(!self.timeout) { + queryOptions |= QueryCommand.OPTS_NO_CURSOR_TIMEOUT; + } + + if(self.tailable != null) { + queryOptions |= QueryCommand.OPTS_TAILABLE_CURSOR; + self.skipValue = self.limitValue = 0; + + // if awaitdata is set + if(self.awaitdata != null) { + queryOptions |= QueryCommand.OPTS_AWAIT_DATA; + } + } + + if(self.exhaust) { + queryOptions |= QueryCommand.OPTS_EXHAUST; + } + + // Unpack the read preference to set slave ok correctly + var read = self.read instanceof ReadPreference ? self.read.mode : self.read; + + // if(self.read == 'secondary') + if(read == ReadPreference.PRIMARY_PREFERRED + || read == ReadPreference.SECONDARY + || read == ReadPreference.SECONDARY_PREFERRED + || read == ReadPreference.NEAREST) { + queryOptions |= QueryCommand.OPTS_SLAVE; + } + + // Override slaveOk from the user + if(self.slaveOk) { + queryOptions |= QueryCommand.OPTS_SLAVE; + } + + if(self.partial) { + queryOptions |= QueryCommand.OPTS_PARTIAL; + } + + // limitValue of -1 is a special case used by Db#eval + var numberToReturn = self.limitValue == -1 ? -1 : limitRequest(self); + + // Check if we need a special selector + if(self.sortValue != null || self.explainValue != null || self.hint != null || self.snapshot != null + || self.returnKey != null || self.maxScan != null || self.min != null || self.max != null + || self.showDiskLoc != null || self.comment != null) { + + // Build special selector + var specialSelector = {'$query':self.selector}; + if(self.sortValue != null) specialSelector['orderby'] = utils.formattedOrderClause(self.sortValue); + if(self.hint != null && self.hint.constructor == Object) specialSelector['$hint'] = self.hint; + if(self.snapshot != null) specialSelector['$snapshot'] = true; + if(self.returnKey != null) specialSelector['$returnKey'] = self.returnKey; + if(self.maxScan != null) specialSelector['$maxScan'] = self.maxScan; + if(self.min != null) specialSelector['$min'] = self.min; + if(self.max != null) specialSelector['$max'] = self.max; + if(self.showDiskLoc != null) specialSelector['$showDiskLoc'] = self.showDiskLoc; + if(self.comment != null) specialSelector['$comment'] = self.comment; + // If we have explain set only return a single document with automatic cursor close + if(self.explainValue != null) { + numberToReturn = (-1)*Math.abs(numberToReturn); + specialSelector['$explain'] = true; + } + + // Return the query + return new QueryCommand(self.db, self.collectionName, queryOptions, self.skipValue, numberToReturn, specialSelector, self.fields); + } else { + return new QueryCommand(self.db, self.collectionName, queryOptions, self.skipValue, numberToReturn, self.selector, self.fields); + } +}; + +/** + * @return {Object} Returns an object containing the sort value of this cursor with + * the proper formatting that can be used internally in this cursor. + * @ignore + * @api private + */ +Cursor.prototype.formattedOrderClause = function() { + return utils.formattedOrderClause(this.sortValue); +}; + +/** + * Converts the value of the sort direction into its equivalent numerical value. + * + * @param sortDirection {String|number} Range of acceptable values: + * 'ascending', 'descending', 'asc', 'desc', 1, -1 + * + * @return {number} The equivalent numerical value + * @throws Error if the given sortDirection is invalid + * @ignore + * @api private + */ +Cursor.prototype.formatSortValue = function(sortDirection) { + return utils.formatSortValue(sortDirection); +}; + +/** + * Gets the next document from the cursor. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object on error while the second parameter will contain a document from the returned result or null if there are no more results. + * @api public + */ +Cursor.prototype.nextObject = function(options, callback) { + var self = this; + + if(typeof options == 'function') { + callback = options; + options = {}; + } + + if(self.state == Cursor.INIT) { + var cmd; + try { + cmd = generateQueryCommand(self); + } catch (err) { + return callback(err, null); + } + + // Execute command + var commandHandler = function(err, result) { + self.state = Cursor.OPEN; + if(err != null && result == null) return callback(utils.toError(err), null); + + if(!err && result.documents[0] && result.documents[0]['$err']) { + return self.close(function() {callback(utils.toError(result.documents[0]['$err']), null);}); + } + + self.queryRun = true; + self.state = Cursor.OPEN; // Adjust the state of the cursor + self.cursorId = result.cursorId; + self.totalNumberOfRecords = result.numberReturned; + + // Add the new documents to the list of items, using forloop to avoid + // new array allocations and copying + for(var i = 0; i < result.documents.length; i++) { + self.items.push(result.documents[i]); + } + + // If we have noReturn set just return (not modifying the internal item list) + // used for toArray + if(options.noReturn) { + return callback(null, true); + } + + // Ignore callbacks until the cursor is dead for exhausted + if(self.exhaust && result.cursorId.toString() == "0") { + self.nextObject(callback); + } else if(self.exhaust == false || self.exhaust == null) { + self.nextObject(callback); + } + }; + + // If we have no connection set on this cursor check one out + if(self.connection == null) { + try { + // self.connection = this.read == null ? self.db.serverConfig.checkoutWriter() : self.db.serverConfig.checkoutReader(this.read); + self.connection = self.db.serverConfig.checkoutReader(this.read); + } catch(err) { + return callback(utils.toError(err), null); + } + } + + // Execute the command + self.db._executeQueryCommand(cmd, {exhaust: self.exhaust, raw:self.raw, read:self.read, connection:self.connection}, commandHandler); + // Set the command handler to null + commandHandler = null; + } else if(self.items.length) { + callback(null, self.items.shift()); + } else if(self.cursorId.greaterThan(Long.fromInt(0))) { + getMore(self, callback); + } else { + // Force cursor to stay open + return self.close(function() {callback(null, null);}); + } +} + +/** + * Gets more results from the database if any. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object on error while the second parameter will contain a document from the returned result or null if there are no more results. + * @ignore + * @api private + */ +var getMore = function(self, options, callback) { + var limit = 0; + + if(typeof options == 'function') { + callback = options; + options = {}; + } + + if(self.state == Cursor.GET_MORE) return callback(null, null); + + // Set get more in progress + self.state = Cursor.GET_MORE; + + // Set options + if (!self.tailable && self.limitValue > 0) { + limit = self.limitValue - self.totalNumberOfRecords; + if (limit < 1) { + self.close(function() {callback(null, null);}); + return; + } + } + + try { + var getMoreCommand = new GetMoreCommand( + self.db + , self.collectionName + , limitRequest(self) + , self.cursorId + ); + + // Set up options + var command_options = {read: self.read, raw: self.raw, connection:self.connection }; + + // Execute the command + self.db._executeQueryCommand(getMoreCommand, command_options, function(err, result) { + var cbValue; + + // Get more done + self.state = Cursor.OPEN; + + if(err != null) { + return callback(utils.toError(err), null); + } + + try { + var isDead = 1 === result.responseFlag && result.cursorId.isZero(); + + self.cursorId = result.cursorId; + self.totalNumberOfRecords += result.numberReturned; + + // Determine if there's more documents to fetch + if(result.numberReturned > 0) { + if (self.limitValue > 0) { + var excessResult = self.totalNumberOfRecords - self.limitValue; + + if (excessResult > 0) { + result.documents.splice(-1 * excessResult, excessResult); + } + } + + // Reset the tries for awaitdata if we are using it + self.currentNumberOfRetries = self.numberOfRetries; + // Get the documents + for(var i = 0; i < result.documents.length; i++) { + self.items.push(result.documents[i]); + } + + // Don's shift a document out as we need it for toArray + if(options.noReturn) { + cbValue = true; + } else { + cbValue = self.items.shift(); + } + } else if(self.tailable && !isDead && self.awaitdata) { + // Excute the tailable cursor once more, will timeout after ~4 sec if awaitdata used + self.currentNumberOfRetries = self.currentNumberOfRetries - 1; + if(self.currentNumberOfRetries == 0) { + self.close(function() { + callback(new Error("tailable cursor timed out"), null); + }); + } else { + getMore(self, callback); + } + } else if(self.tailable && !isDead) { + self.getMoreTimer = setTimeout(function() { getMore(self, callback); }, self.tailableRetryInterval); + } else { + self.close(function() {callback(null, null); }); + } + + result = null; + } catch(err) { + callback(utils.toError(err), null); + } + if (cbValue != null) callback(null, cbValue); + }); + + getMoreCommand = null; + } catch(err) { + // Get more done + self.state = Cursor.OPEN; + + var handleClose = function() { + callback(utils.toError(err), null); + }; + + self.close(handleClose); + handleClose = null; + } +} + +/** + * Gets a detailed information about how the query is performed on this cursor and how + * long it took the database to process it. + * + * @param {Function} callback this will be called after executing this method. The first parameter will always be null while the second parameter will be an object containing the details. + * @api public + */ +Cursor.prototype.explain = function(callback) { + var limit = (-1)*Math.abs(this.limitValue); + + // Create a new cursor and fetch the plan + var cursor = new Cursor(this.db, this.collection, this.selector, this.fields, { + skip: this.skipValue + , limit:limit + , sort: this.sortValue + , hint: this.hint + , explain: true + , snapshot: this.snapshot + , timeout: this.timeout + , tailable: this.tailable + , batchSize: this.batchSizeValue + , slaveOk: this.slaveOk + , raw: this.raw + , read: this.read + , returnKey: this.returnKey + , maxScan: this.maxScan + , min: this.min + , max: this.max + , showDiskLoc: this.showDiskLoc + , comment: this.comment + , awaitdata: this.awaitdata + , numberOfRetries: this.numberOfRetries + , dbName: this.dbName + }); + + // Fetch the explaination document + cursor.nextObject(function(err, item) { + if(err != null) return callback(utils.toError(err), null); + // close the cursor + cursor.close(function(err, result) { + if(err != null) return callback(utils.toError(err), null); + callback(null, item); + }); + }); +}; + +/** + * Returns a Node ReadStream interface for this cursor. + * + * Options + * - **transform** {Function} function of type function(object) { return transformed }, allows for transformation of data before emitting. + * + * @return {CursorStream} returns a stream object. + * @api public + */ +Cursor.prototype.stream = function stream(options) { + return new CursorStream(this, options); +} + +/** + * Close the cursor. + * + * @param {Function} callback this will be called after executing this method. The first parameter will always contain null while the second parameter will contain a reference to this cursor. + * @return {null} + * @api public + */ +Cursor.prototype.close = function(callback) { + var self = this + this.getMoreTimer && clearTimeout(this.getMoreTimer); + // Close the cursor if not needed + if(this.cursorId instanceof Long && this.cursorId.greaterThan(Long.fromInt(0))) { + try { + var command = new KillCursorCommand(this.db, [this.cursorId]); + // Added an empty callback to ensure we don't throw any null exceptions + this.db._executeQueryCommand(command, {read:self.read, raw:self.raw, connection:self.connection}, function() {}); + } catch(err) {} + } + + // Null out the connection + self.connection = null; + // Reset cursor id + this.cursorId = Long.fromInt(0); + // Set to closed status + this.state = Cursor.CLOSED; + + if(callback) { + callback(null, self); + self.items = []; + } + + return this; +}; + +/** + * Check if the cursor is closed or open. + * + * @return {Boolean} returns the state of the cursor. + * @api public + */ +Cursor.prototype.isClosed = function() { + return this.state == Cursor.CLOSED ? true : false; +}; + +/** + * Init state + * + * @classconstant INIT + **/ +Cursor.INIT = 0; + +/** + * Cursor open + * + * @classconstant OPEN + **/ +Cursor.OPEN = 1; + +/** + * Cursor closed + * + * @classconstant CLOSED + **/ +Cursor.CLOSED = 2; + +/** + * Cursor performing a get more + * + * @classconstant OPEN + **/ +Cursor.GET_MORE = 3; + +/** + * @ignore + * @api private + */ +exports.Cursor = Cursor; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js new file mode 100644 index 0000000..2752091 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js @@ -0,0 +1,164 @@ +var timers = require('timers'); + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; + +/** + * Module dependecies. + */ +var Stream = require('stream').Stream; + +/** + * CursorStream + * + * Returns a stream interface for the **cursor**. + * + * Options + * - **transform** {Function} function of type function(object) { return transformed }, allows for transformation of data before emitting. + * + * Events + * - **data** {function(item) {}} the data event triggers when a document is ready. + * - **error** {function(err) {}} the error event triggers if an error happens. + * - **close** {function() {}} the end event triggers when there is no more documents available. + * + * @class Represents a CursorStream. + * @param {Cursor} cursor a cursor object that the stream wraps. + * @return {Stream} + */ +function CursorStream(cursor, options) { + if(!(this instanceof CursorStream)) return new CursorStream(cursor); + options = options ? options : {}; + + Stream.call(this); + + this.readable = true; + this.paused = false; + this._cursor = cursor; + this._destroyed = null; + this.options = options; + + // give time to hook up events + var self = this; + process.nextTick(function() { + self._init(); + }); +} + +/** + * Inherit from Stream + * @ignore + * @api private + */ +CursorStream.prototype.__proto__ = Stream.prototype; + +/** + * Flag stating whether or not this stream is readable. + */ +CursorStream.prototype.readable; + +/** + * Flag stating whether or not this stream is paused. + */ +CursorStream.prototype.paused; + +/** + * Initialize the cursor. + * @ignore + * @api private + */ +CursorStream.prototype._init = function () { + if (this._destroyed) return; + this._next(); +} + +/** + * Pull the next document from the cursor. + * @ignore + * @api private + */ +CursorStream.prototype._next = function () { + if(this.paused || this._destroyed) return; + + var self = this; + // Get the next object + processor(function() { + if(self.paused || self._destroyed) return; + + self._cursor.nextObject(function (err, doc) { + self._onNextObject(err, doc); + }); + }); +} + +/** + * Handle each document as its returned from the cursor. + * @ignore + * @api private + */ +CursorStream.prototype._onNextObject = function (err, doc) { + if(err) return this.destroy(err); + + // when doc is null we hit the end of the cursor + if(!doc && (this._cursor.state == 1 || this._cursor.state == 2)) { + this.emit('end') + return this.destroy(); + } else if(doc) { + var data = typeof this.options.transform == 'function' ? this.options.transform(doc) : doc; + this.emit('data', data); + this._next(); + } +} + +/** + * Pauses the stream. + * + * @api public + */ +CursorStream.prototype.pause = function () { + this.paused = true; +} + +/** + * Resumes the stream. + * + * @api public + */ +CursorStream.prototype.resume = function () { + var self = this; + + // Don't do anything if we are not paused + if(!this.paused) return; + if(!this._cursor.state == 3) return; + + process.nextTick(function() { + self.paused = false; + // Only trigger more fetching if the cursor is open + self._next(); + }) +} + +/** + * Destroys the stream, closing the underlying + * cursor. No more events will be emitted. + * + * @api public + */ +CursorStream.prototype.destroy = function (err) { + if (this._destroyed) return; + this._destroyed = true; + this.readable = false; + + this._cursor.close(); + + if(err) { + this.emit('error', err); + } + + this.emit('close'); +} + +// TODO - maybe implement the raw option to pass binary? +//CursorStream.prototype.setEncoding = function () { +//} + +module.exports = exports = CursorStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js new file mode 100644 index 0000000..4cf6280 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js @@ -0,0 +1,1928 @@ +/** + * Module dependencies. + * @ignore + */ +var QueryCommand = require('./commands/query_command').QueryCommand + , DbCommand = require('./commands/db_command').DbCommand + , MongoReply = require('./responses/mongo_reply').MongoReply + , Admin = require('./admin').Admin + , Collection = require('./collection').Collection + , Server = require('./connection/server').Server + , ReplSet = require('./connection/repl_set/repl_set').ReplSet + , ReadPreference = require('./connection/read_preference').ReadPreference + , Mongos = require('./connection/mongos').Mongos + , Cursor = require('./cursor').Cursor + , EventEmitter = require('events').EventEmitter + , inherits = require('util').inherits + , crypto = require('crypto') + , timers = require('timers') + , utils = require('./utils') + , mongodb_cr_authenticate = require('./auth/mongodb_cr.js').authenticate + , mongodb_gssapi_authenticate = require('./auth/mongodb_gssapi.js').authenticate + , mongodb_sspi_authenticate = require('./auth/mongodb_sspi.js').authenticate; + +var hasKerberos = false; +// Check if we have a the kerberos library +try { + require('kerberos'); + hasKerberos = true; +} catch(err) {} + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; + +/** + * Create a new Db instance. + * + * Options + * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + * - **native_parser** {Boolean, default:false}, use c++ bson parser. + * - **forceServerObjectId** {Boolean, default:false}, force server to create _id fields instead of client. + * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. + * - **serializeFunctions** {Boolean, default:false}, serialize functions. + * - **raw** {Boolean, default:false}, peform operations using raw bson buffers. + * - **recordQueryStats** {Boolean, default:false}, record query statistics during execution. + * - **retryMiliSeconds** {Number, default:5000}, number of miliseconds between retries. + * - **numberOfRetries** {Number, default:5}, number of retries off connection. + * - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**. + * - **slaveOk** {Number, default:null}, force setting of SlaveOk flag on queries (only use when explicitly connecting to a secondary server). + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @class Represents a Db + * @param {String} databaseName name of the database. + * @param {Object} serverConfig server config object. + * @param {Object} [options] additional options for the collection. + */ +function Db(databaseName, serverConfig, options) { + if(!(this instanceof Db)) return new Db(databaseName, serverConfig, options); + EventEmitter.call(this); + + var self = this; + this.databaseName = databaseName; + this.serverConfig = serverConfig; + this.options = options == null ? {} : options; + // State to check against if the user force closed db + this._applicationClosed = false; + // Fetch the override flag if any + var overrideUsedFlag = this.options['override_used_flag'] == null ? false : this.options['override_used_flag']; + + // Verify that nobody is using this config + if(!overrideUsedFlag && this.serverConfig != null && typeof this.serverConfig == 'object' && this.serverConfig._isUsed && this.serverConfig._isUsed()) { + throw new Error("A Server or ReplSet instance cannot be shared across multiple Db instances"); + } else if(!overrideUsedFlag && typeof this.serverConfig == 'object'){ + // Set being used + this.serverConfig._used = true; + } + + // Allow slaveOk override + this.slaveOk = this.options["slave_ok"] == null ? false : this.options["slave_ok"]; + this.slaveOk = this.options["slaveOk"] == null ? this.slaveOk : this.options["slaveOk"]; + + // Ensure we have a valid db name + validateDatabaseName(databaseName); + + // Contains all the connections for the db + try { + this.native_parser = this.options.native_parser; + // The bson lib + var bsonLib = this.bsonLib = this.options.native_parser ? require('bson').BSONNative : require('bson').BSONPure; + // Fetch the serializer object + var BSON = bsonLib.BSON; + // Create a new instance + this.bson = new BSON([bsonLib.Long, bsonLib.ObjectID, bsonLib.Binary, bsonLib.Code, bsonLib.DBRef, bsonLib.Symbol, bsonLib.Double, bsonLib.Timestamp, bsonLib.MaxKey, bsonLib.MinKey]); + // Backward compatibility to access types + this.bson_deserializer = bsonLib; + this.bson_serializer = bsonLib; + } catch (err) { + // If we tried to instantiate the native driver + var msg = "Native bson parser not compiled, please compile " + + "or avoid using native_parser=true"; + throw Error(msg); + } + + // Internal state of the server + this._state = 'disconnected'; + + this.pkFactory = this.options.pk == null ? bsonLib.ObjectID : this.options.pk; + this.forceServerObjectId = this.options.forceServerObjectId != null ? this.options.forceServerObjectId : false; + + // Added safe + this.safe = this.options.safe == null ? false : this.options.safe; + + // If we have not specified a "safe mode" we just print a warning to the console + if(this.options.safe == null && this.options.w == null && this.options.journal == null && this.options.fsync == null) { + console.log("========================================================================================"); + console.log("= Please ensure that you set the default write concern for the database by setting ="); + console.log("= one of the options ="); + console.log("= ="); + console.log("= w: (value of > -1 or the string 'majority'), where < 1 means ="); + console.log("= no write acknowlegement ="); + console.log("= journal: true/false, wait for flush to journal before acknowlegement ="); + console.log("= fsync: true/false, wait for flush to file system before acknowlegement ="); + console.log("= ="); + console.log("= For backward compatibility safe is still supported and ="); + console.log("= allows values of [true | false | {j:true} | {w:n, wtimeout:n} | {fsync:true}] ="); + console.log("= the default value is false which means the driver receives does not ="); + console.log("= return the information of the success/error of the insert/update/remove ="); + console.log("= ="); + console.log("= ex: new Db(new Server('localhost', 27017), {safe:false}) ="); + console.log("= ="); + console.log("= http://www.mongodb.org/display/DOCS/getLastError+Command ="); + console.log("= ="); + console.log("= The default of no acknowlegement will change in the very near future ="); + console.log("= ="); + console.log("= This message will disappear when the default safe is set on the driver Db ="); + console.log("========================================================================================"); + } + + // Internal states variables + this.notReplied ={}; + this.isInitializing = true; + this.openCalled = false; + + // Command queue, keeps a list of incoming commands that need to be executed once the connection is up + this.commands = []; + + // Set up logger + this.logger = this.options.logger != null + && (typeof this.options.logger.debug == 'function') + && (typeof this.options.logger.error == 'function') + && (typeof this.options.logger.log == 'function') + ? this.options.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}}; + + // Associate the logger with the server config + this.serverConfig.logger = this.logger; + if(this.serverConfig.strategyInstance) this.serverConfig.strategyInstance.logger = this.logger; + this.tag = new Date().getTime(); + // Just keeps list of events we allow + this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[]}; + + // Controls serialization options + this.serializeFunctions = this.options.serializeFunctions != null ? this.options.serializeFunctions : false; + + // Raw mode + this.raw = this.options.raw != null ? this.options.raw : false; + + // Record query stats + this.recordQueryStats = this.options.recordQueryStats != null ? this.options.recordQueryStats : false; + + // If we have server stats let's make sure the driver objects have it enabled + if(this.recordQueryStats == true) { + this.serverConfig.enableRecordQueryStats(true); + } + + // Retry information + this.retryMiliSeconds = this.options.retryMiliSeconds != null ? this.options.retryMiliSeconds : 1000; + this.numberOfRetries = this.options.numberOfRetries != null ? this.options.numberOfRetries : 60; + + // Set default read preference if any + this.readPreference = this.options.readPreference; + + // Ensure we keep a reference to this db + this.serverConfig._dbStore.add(this); +}; + +/** + * @ignore + */ +function validateDatabaseName(databaseName) { + if(typeof databaseName !== 'string') throw new Error("database name must be a string"); + if(databaseName.length === 0) throw new Error("database name cannot be the empty string"); + + var invalidChars = [" ", ".", "$", "/", "\\"]; + for(var i = 0; i < invalidChars.length; i++) { + if(databaseName.indexOf(invalidChars[i]) != -1) throw new Error("database names cannot contain the character '" + invalidChars[i] + "'"); + } +} + +/** + * @ignore + */ +inherits(Db, EventEmitter); + +/** + * Initialize the database connection. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the index information or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.open = function(callback) { + var self = this; + + // Check that the user has not called this twice + if(this.openCalled) { + // Close db + this.close(); + // Throw error + throw new Error("db object already connecting, open cannot be called multiple times"); + } + + // If we have a specified read preference + if(this.readPreference != null) this.serverConfig.setReadPreference(this.readPreference); + + // Set that db has been opened + this.openCalled = true; + + // Set the status of the server + self._state = 'connecting'; + + // Set up connections + if(self.serverConfig instanceof Server || self.serverConfig instanceof ReplSet || self.serverConfig instanceof Mongos) { + // Ensure we have the original options passed in for the server config + var connect_options = {}; + for(var name in self.serverConfig.options) { + connect_options[name] = self.serverConfig.options[name] + } + connect_options.firstCall = true; + + // Attempt to connect + self.serverConfig.connect(self, connect_options, function(err, result) { + if(err != null) { + // Set that db has been closed + self.openCalled = false; + // Return error from connection + return callback(err, null); + } + // Set the status of the server + self._state = 'connected'; + // If we have queued up commands execute a command to trigger replays + if(self.commands.length > 0) _execute_queued_command(self); + // Callback + return callback(null, self); + }); + } else { + return callback(Error("Server parameter must be of type Server, ReplSet or Mongos"), null); + } +}; + +/** + * Create a new Db instance sharing the current socket connections. + * + * @param {String} dbName the name of the database we want to use. + * @return {Db} a db instance using the new database. + * @api public + */ +Db.prototype.db = function(dbName) { + // Copy the options and add out internal override of the not shared flag + var options = {}; + for(var key in this.options) { + options[key] = this.options[key]; + } + + // Add override flag + options['override_used_flag'] = true; + // Create a new db instance + var newDbInstance = new Db(dbName, this.serverConfig, options); + // Add the instance to the list of approved db instances + var allServerInstances = this.serverConfig.allServerInstances(); + // Add ourselves to all server callback instances + for(var i = 0; i < allServerInstances.length; i++) { + // var server = allServerInstances[i]; + // server.dbInstances.push(newDbInstance); + this.serverConfig._dbStore.add(newDbInstance); + } + // Return new db object + return newDbInstance; +} + +/** + * Close the current db connection, including all the child db instances. Emits close event if no callback is provided. + * + * @param {Boolean} [forceClose] connection can never be reused. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.close = function(forceClose, callback) { + var self = this; + // Ensure we force close all connections + this._applicationClosed = false; + + if(typeof forceClose == 'function') { + callback = forceClose; + } else if(typeof forceClose == 'boolean') { + this._applicationClosed = forceClose; + } + + this.serverConfig.close(function(err, result) { + // You can reuse the db as everything is shut down + self.openCalled = false; + // If we have a callback call it + if(callback) callback(err, result); + }); +}; + +/** + * Access the Admin database + * + * @param {Function} [callback] returns the results. + * @return {Admin} the admin db object. + * @api public + */ +Db.prototype.admin = function(callback) { + if(callback == null) return new Admin(this); + callback(null, new Admin(this)); +}; + +/** + * Returns a cursor to all the collection information. + * + * @param {String} [collectionName] the collection name we wish to retrieve the information from. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the options or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.collectionsInfo = function(collectionName, callback) { + if(callback == null && typeof collectionName == 'function') { callback = collectionName; collectionName = null; } + // Create selector + var selector = {}; + // If we are limiting the access to a specific collection name + if(collectionName != null) selector.name = this.databaseName + "." + collectionName; + + // Return Cursor + // callback for backward compatibility + if(callback) { + callback(null, new Cursor(this, new Collection(this, DbCommand.SYSTEM_NAMESPACE_COLLECTION), selector)); + } else { + return new Cursor(this, new Collection(this, DbCommand.SYSTEM_NAMESPACE_COLLECTION), selector); + } +}; + +/** + * Get the list of all collection names for the specified db + * + * Options + * - **namesOnly** {String, default:false}, Return only the full collection namespace. + * + * @param {String} [collectionName] the collection name we wish to filter by. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the collection names or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.collectionNames = function(collectionName, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + collectionName = args.length ? args.shift() : null; + options = args.length ? args.shift() || {} : {}; + + // Ensure no breaking behavior + if(collectionName != null && typeof collectionName == 'object') { + options = collectionName; + collectionName = null; + } + + // Let's make our own callback to reuse the existing collections info method + self.collectionsInfo(collectionName, function(err, cursor) { + if(err != null) return callback(err, null); + + cursor.toArray(function(err, documents) { + if(err != null) return callback(err, null); + + // List of result documents that have been filtered + var filtered_documents = documents.filter(function(document) { + return !(document.name.indexOf(self.databaseName) == -1 || document.name.indexOf('$') != -1); + }); + + // If we are returning only the names + if(options.namesOnly) { + filtered_documents = filtered_documents.map(function(document) { return document.name }); + } + + // Return filtered items + callback(null, filtered_documents); + }); + }); +}; + +/** + * Fetch a specific collection (containing the actual collection information). If the application does not use strict mode you can + * can use it without a callback in the following way. var collection = db.collection('mycollection'); + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. + * - **raw** {Boolean, default:false}, perform all operations using raw bson objects. + * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. + * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + * - **strict**, (Boolean, default:false) throws an error if the collection does not exist + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {String} collectionName the collection name we wish to access. + * @param {Object} [options] returns option results. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the collection or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.collection = function(collectionName, options, callback) { + var self = this; + if(typeof options === "function") { callback = options; options = {}; } + // Execute safe + + if(options && (options.strict)) { + self.collectionNames(collectionName, function(err, collections) { + if(err != null) return callback(err, null); + + if(collections.length == 0) { + return callback(new Error("Collection " + collectionName + " does not exist. Currently in safe mode."), null); + } else { + try { + var collection = new Collection(self, collectionName, self.pkFactory, options); + } catch(err) { + return callback(err, null); + } + return callback(null, collection); + } + }); + } else { + try { + var collection = new Collection(self, collectionName, self.pkFactory, options); + } catch(err) { + if(callback == null) { + throw err; + } else { + return callback(err, null); + } + } + + // If we have no callback return collection object + return callback == null ? collection : callback(null, collection); + } +}; + +/** + * Fetch all collections for the current db. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the collections or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.collections = function(callback) { + var self = this; + // Let's get the collection names + self.collectionNames(function(err, documents) { + if(err != null) return callback(err, null); + var collections = []; + documents.forEach(function(document) { + collections.push(new Collection(self, document.name.replace(self.databaseName + ".", ''), self.pkFactory)); + }); + // Return the collection objects + callback(null, collections); + }); +}; + +/** + * Evaluate javascript on the server + * + * Options + * - **nolock** {Boolean, default:false}, Tell MongoDB not to block on the evaulation of the javascript. + * + * @param {Code} code javascript to execute on server. + * @param {Object|Array} [parameters] the parameters for the call. + * @param {Object} [options] the options + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from eval or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.eval = function(code, parameters, options, callback) { + // Unpack calls + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + parameters = args.length ? args.shift() : parameters; + options = args.length ? args.shift() || {} : {}; + + var finalCode = code; + var finalParameters = []; + // If not a code object translate to one + if(!(finalCode instanceof this.bsonLib.Code)) { + finalCode = new this.bsonLib.Code(finalCode); + } + + // Ensure the parameters are correct + if(parameters != null && parameters.constructor != Array && typeof parameters !== 'function') { + finalParameters = [parameters]; + } else if(parameters != null && parameters.constructor == Array && typeof parameters !== 'function') { + finalParameters = parameters; + } + + // Create execution selector + var selector = {'$eval':finalCode, 'args':finalParameters}; + // Check if the nolock parameter is passed in + if(options['nolock']) { + selector['nolock'] = options['nolock']; + } + + // Set primary read preference + options.readPreference = ReadPreference.PRIMARY; + + // Execute the eval + this.collection(DbCommand.SYSTEM_COMMAND_COLLECTION).findOne(selector, options, function(err, result) { + if(err) return callback(err); + + if(result && result.ok == 1) { + callback(null, result.retval); + } else if(result) { + callback(new Error("eval failed: " + result.errmsg), null); return; + } else { + callback(err, result); + } + }); +}; + +/** + * Dereference a dbref, against a db + * + * @param {DBRef} dbRef db reference object we wish to resolve. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dereference or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.dereference = function(dbRef, callback) { + var db = this; + // If we have a db reference then let's get the db first + if(dbRef.db != null) db = this.db(dbRef.db); + // Fetch the collection and find the reference + var collection = db.collection(dbRef.namespace); + collection.findOne({'_id':dbRef.oid}, function(err, result) { + callback(err, result); + }); +}; + +/** + * Logout user from server, fire off on all connections and remove all auth info + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from logout or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.logout = function(options, callback) { + var self = this; + // Unpack calls + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + + // Number of connections we need to logout from + var numberOfConnections = this.serverConfig.allRawConnections().length; + + // Let's generate the logout command object + var logoutCommand = DbCommand.logoutCommand(self, {logout:1}, options); + self._executeQueryCommand(logoutCommand, {onAll:true}, function(err, result) { + // Count down + numberOfConnections = numberOfConnections - 1; + // Work around the case where the number of connections are 0 + if(numberOfConnections <= 0 && typeof callback == 'function') { + var internalCallback = callback; + callback = null; + + // Remove the db from auths + self.serverConfig.auth.remove(self.databaseName); + + // Handle any errors + if(err == null && result.documents[0].ok == 1) { + internalCallback(null, true); + } else { + err != null ? internalCallback(err, false) : internalCallback(new Error(result.documents[0].errmsg), false); + } + } + }); +} + +/** + * Authenticate a user against the server. + * authMechanism + * Options + * - **authSource** {String}, The database that the credentials are for, + * different from the name of the current DB, for example admin + * - **authMechanism** {String, default:MONGODB-CR}, The authentication mechanism to use, GSSAPI or MONGODB-CR + * + * @param {String} username username. + * @param {String} password password. + * @param {Object} [options] the options + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from authentication or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.authenticate = function(username, password, options, callback) { + var self = this; + + if(typeof callback === 'undefined') { + callback = options; + options = {}; + } + + // Set default mechanism + if(!options.authMechanism) { + options.authMechanism = 'MONGODB-CR'; + } else if(options.authMechanism != 'GSSAPI' && options.authMechanism != 'MONGODB-CR') { + return callback(new Error("only GSSAPI or MONGODB-CR is supported by authMechanism")); + } + + // the default db to authenticate against is 'this' + // if authententicate is called from a retry context, it may be another one, like admin + var authdb = options.authdb ? options.authdb : self.databaseName; + authdb = options.authSource ? options.authSource : authdb; + + // If classic auth delegate to auth command + if(options.authMechanism == 'MONGODB-CR') { + mongodb_cr_authenticate(self, username, password, authdb, options, callback); + } else if(options.authMechanism == 'GSSAPI') { + // + // Kerberos library is not installed, throw and error + if(hasKerberos == false) { + console.log("========================================================================================"); + console.log("= Please make sure that you install the Kerberos library to use GSSAPI ="); + console.log("= ="); + console.log("= npm install -g kerberos ="); + console.log("= ="); + console.log("= The Kerberos package is not installed by default for simplicities sake ="); + console.log("= and needs to be global install ="); + console.log("========================================================================================"); + throw new Error("Kerberos library not installed"); + } + + if(process.platform == 'win32') { + mongodb_sspi_authenticate(self, username, password, authdb, options, callback); + } else { + // We have the kerberos library, execute auth process + mongodb_gssapi_authenticate(self, username, password, authdb, options, callback); + } + } +}; + +/** + * Add a user to the database. + * + * Options + * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {String} username username. + * @param {String} password password. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from addUser or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.addUser = function(username, password, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + + // Get the error options + var errorOptions = _getWriteConcern(this, options, callback); + errorOptions.w = errorOptions.w == null ? 1 : errorOptions.w; + // Use node md5 generator + var md5 = crypto.createHash('md5'); + // Generate keys used for authentication + md5.update(username + ":mongo:" + password); + var userPassword = md5.digest('hex'); + // Fetch a user collection + var collection = this.collection(DbCommand.SYSTEM_USER_COLLECTION); + // Check if we are inserting the first user + collection.count({}, function(err, count) { + // We got an error (f.ex not authorized) + if(err != null) return callback(err, null); + // Check if the user exists and update i + collection.find({user: username}, {dbName: options['dbName']}).toArray(function(err, documents) { + // We got an error (f.ex not authorized) + if(err != null) return callback(err, null); + // Add command keys + var commandOptions = errorOptions; + commandOptions.dbName = options['dbName']; + commandOptions.upsert = true; + + // We have a user, let's update the password or upsert if not + collection.update({user: username},{$set: {user: username, pwd: userPassword}}, commandOptions, function(err, results) { + if(count == 0 && err) { + callback(null, [{user:username, pwd:userPassword}]); + } else if(err) { + callback(err, null) + } else { + callback(null, [{user:username, pwd:userPassword}]); + } + }); + }); + }); +}; + +/** + * Remove a user from a database + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {String} username username. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from removeUser or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.removeUser = function(username, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + + // Figure out the safe mode settings + var safe = self.safe != null && self.safe == false ? {w: 1} : self.safe; + // Override with options passed in if applicable + safe = options != null && options['safe'] != null ? options['safe'] : safe; + // Ensure it's at least set to safe + safe = safe == null ? {w: 1} : safe; + + // Fetch a user collection + var collection = this.collection(DbCommand.SYSTEM_USER_COLLECTION); + collection.findOne({user: username}, {dbName: options['dbName']}, function(err, user) { + if(user != null) { + // Add command keys + var commandOptions = safe; + commandOptions.dbName = options['dbName']; + + collection.remove({user: username}, commandOptions, function(err, result) { + callback(err, true); + }); + } else { + callback(err, false); + } + }); +}; + +/** + * Creates a collection on a server pre-allocating space, need to create f.ex capped collections. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. + * - **raw** {Boolean, default:false}, perform all operations using raw bson objects. + * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. + * - **capped** {Boolean, default:false}, create a capped collection. + * - **size** {Number}, the size of the capped collection in bytes. + * - **max** {Number}, the maximum number of documents in the capped collection. + * - **autoIndexId** {Boolean, default:true}, create an index on the _id field of the document, True by default on MongoDB 2.2 or higher off for version < 2.2. + * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + * - **strict**, (Boolean, default:false) throws an error if collection already exists + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {String} collectionName the collection name we wish to access. + * @param {Object} [options] returns option results. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from createCollection or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.createCollection = function(collectionName, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() : null; + var self = this; + + // Figure out the safe mode settings + var safe = self.safe != null && self.safe == false ? {w: 1} : self.safe; + // Override with options passed in if applicable + safe = options != null && options['safe'] != null ? options['safe'] : safe; + // Ensure it's at least set to safe + safe = safe == null ? {w: 1} : safe; + + // Check if we have the name + this.collectionNames(collectionName, function(err, collections) { + if(err != null) return callback(err, null); + + var found = false; + collections.forEach(function(collection) { + if(collection.name == self.databaseName + "." + collectionName) found = true; + }); + + // If the collection exists either throw an exception (if db in safe mode) or return the existing collection + if(found && options && options.strict) { + return callback(new Error("Collection " + collectionName + " already exists. Currently in safe mode."), null); + } else if(found){ + try { + var collection = new Collection(self, collectionName, self.pkFactory, options); + } catch(err) { + return callback(err, null); + } + return callback(null, collection); + } + + // Create a new collection and return it + self._executeQueryCommand(DbCommand.createCreateCollectionCommand(self, collectionName, options), {read:false, safe:safe}, function(err, result) { + var document = result.documents[0]; + // If we have no error let's return the collection + if(err == null && document.ok == 1) { + try { + var collection = new Collection(self, collectionName, self.pkFactory, options); + } catch(err) { + return callback(err, null); + } + return callback(null, collection); + } else { + if (null == err) err = utils.toError(document); + callback(err, null); + } + }); + }); +}; + +/** + * Execute a command hash against MongoDB. This lets you acess any commands not available through the api on the server. + * + * @param {Object} selector the command hash to send to the server, ex: {ping:1}. + * @param {Function} callback this will be called after executing this method. The command always return the whole result of the command as the second parameter. + * @return {null} + * @api public + */ +Db.prototype.command = function(selector, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + + // Set up the options + var cursor = new Cursor(this + , new Collection(this, DbCommand.SYSTEM_COMMAND_COLLECTION), selector, {}, { + limit: -1, timeout: QueryCommand.OPTS_NO_CURSOR_TIMEOUT, dbName: options['dbName'] + }); + + // Set read preference if we set one + var readPreference = options['readPreference'] ? options['readPreference'] : false; + + // Ensure only commands who support read Prefrences are exeuted otherwise override and use Primary + if(readPreference != false) { + if(selector['group'] || selector['aggregate'] || selector['collStats'] || selector['dbStats'] + || selector['count'] || selector['distinct'] || selector['geoNear'] || selector['geoSearch'] || selector['geoWalk'] + || (selector['mapreduce'] && selector.out == 'inline')) { + // Set the read preference + cursor.setReadPreference(readPreference); + } else { + cursor.setReadPreference(ReadPreference.PRIMARY); + } + } + + // Return the next object + cursor.nextObject(callback); +}; + +/** + * Drop a collection from the database, removing it permanently. New accesses will create a new collection. + * + * @param {String} collectionName the name of the collection we wish to drop. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dropCollection or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.dropCollection = function(collectionName, callback) { + var self = this; + callback || (callback = function(){}); + + // Drop the collection + this._executeQueryCommand(DbCommand.createDropCollectionCommand(this, collectionName), function(err, result) { + if(err == null && result.documents[0].ok == 1) { + return callback(null, true); + } + + if(null == err) err = utils.toError(result.documents[0]); + callback(err, null); + }); +}; + +/** + * Rename a collection. + * + * Options + * - **dropTarget** {Boolean, default:false}, drop the target name collection if it previously exists. + * + * @param {String} fromCollection the name of the current collection we wish to rename. + * @param {String} toCollection the new name of the collection. + * @param {Object} [options] returns option results. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from renameCollection or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.renameCollection = function(fromCollection, toCollection, options, callback) { + var self = this; + + if(typeof options == 'function') { + callback = options; + options = {} + } + + callback || (callback = function(){}); + // Execute the command, return the new renamed collection if successful + this._executeQueryCommand(DbCommand.createRenameCollectionCommand(this, fromCollection, toCollection, options), function(err, result) { + if(err == null && result.documents[0].ok == 1) { + return callback(null, new Collection(self, toCollection, self.pkFactory)); + } + + if(null == err) err = utils.toError(result.documents[0]); + callback(err, null); + }); +}; + +/** + * Return last error message for the given connection, note options can be combined. + * + * Options + * - **fsync** {Boolean, default:false}, option forces the database to fsync all files before returning. + * - **j** {Boolean, default:false}, awaits the journal commit before returning, > MongoDB 2.0. + * - **w** {Number}, until a write operation has been replicated to N servers. + * - **wtimeout** {Number}, number of miliseconds to wait before timing out. + * + * Connection Options + * - **connection** {Connection}, fire the getLastError down a specific connection. + * + * @param {Object} [options] returns option results. + * @param {Object} [connectionOptions] returns option results. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from lastError or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.lastError = function(options, connectionOptions, callback) { + // Unpack calls + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + connectionOptions = args.length ? args.shift() || {} : {}; + + this._executeQueryCommand(DbCommand.createGetLastErrorCommand(options, this), connectionOptions, function(err, error) { + callback(err, error && error.documents); + }); +}; + +/** + * Legacy method calls. + * + * @ignore + * @api private + */ +Db.prototype.error = Db.prototype.lastError; +Db.prototype.lastStatus = Db.prototype.lastError; + +/** + * Return all errors up to the last time db reset_error_history was called. + * + * Options + * - **connection** {Connection}, fire the getLastError down a specific connection. + * + * @param {Object} [options] returns option results. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from previousErrors or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.previousErrors = function(options, callback) { + // Unpack calls + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + + this._executeQueryCommand(DbCommand.createGetPreviousErrorsCommand(this), options, function(err, error) { + callback(err, error.documents); + }); +}; + +/** + * Runs a command on the database. + * @ignore + * @api private + */ +Db.prototype.executeDbCommand = function(command_hash, options, callback) { + if(callback == null) { callback = options; options = {}; } + this._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this, command_hash, options), options, callback); +}; + +/** + * Runs a command on the database as admin. + * @ignore + * @api private + */ +Db.prototype.executeDbAdminCommand = function(command_hash, options, callback) { + if(callback == null) { callback = options; options = {}; } + this._executeQueryCommand(DbCommand.createAdminDbCommand(this, command_hash), options, callback); +}; + +/** + * Resets the error history of the mongo instance. + * + * Options + * - **connection** {Connection}, fire the getLastError down a specific connection. + * + * @param {Object} [options] returns option results. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from resetErrorHistory or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.resetErrorHistory = function(options, callback) { + // Unpack calls + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + + this._executeQueryCommand(DbCommand.createResetErrorHistoryCommand(this), options, function(err, error) { + callback(err, error.documents); + }); +}; + +/** + * Creates an index on the collection. + * + * Options +* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **unique** {Boolean, default:false}, creates an unique index. + * - **sparse** {Boolean, default:false}, creates a sparse index. + * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. + * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value + * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. + * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. + * - **v** {Number}, specify the format version of the indexes. + * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) + * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * + * @param {String} collectionName name of the collection to create the index on. + * @param {Object} fieldOrSpec fieldOrSpec that defines the index. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from createIndex or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.createIndex = function(collectionName, fieldOrSpec, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + options = typeof callback === 'function' ? options : callback; + options = options == null ? {} : options; + + // Get the error options + var errorOptions = _getWriteConcern(this, options, callback); + // Create command + var command = DbCommand.createCreateIndexCommand(this, collectionName, fieldOrSpec, options); + // Default command options + var commandOptions = {}; + + // If we have error conditions set handle them + if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { + // Insert options + commandOptions['read'] = false; + // If we have safe set set async to false + if(errorOptions == null) commandOptions['async'] = true; + + // Set safe option + commandOptions['safe'] = errorOptions; + // If we have an error option + if(typeof errorOptions == 'object') { + var keys = Object.keys(errorOptions); + for(var i = 0; i < keys.length; i++) { + commandOptions[keys[i]] = errorOptions[keys[i]]; + } + } + + // Execute insert command + this._executeInsertCommand(command, commandOptions, function(err, result) { + if(err != null) return callback(err, null); + + result = result && result.documents; + if (result[0].err) { + callback(utils.toError(result[0])); + } else { + callback(null, command.documents[0].name); + } + }); + } else if(_hasWriteConcern(errorOptions) && callback == null) { + throw new Error("Cannot use a writeConcern without a provided callback"); + } else { + // Execute insert command + var result = this._executeInsertCommand(command, commandOptions); + // If no callback just return + if(!callback) return; + // If error return error + if(result instanceof Error) { + return callback(result); + } + // Otherwise just return + return callback(null, null); + } +}; + +/** + * Ensures that an index exists, if it does not it creates it + * + * Options + * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **unique** {Boolean, default:false}, creates an unique index. + * - **sparse** {Boolean, default:false}, creates a sparse index. + * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. + * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value + * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. + * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. + * - **v** {Number}, specify the format version of the indexes. + * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) + * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @param {String} collectionName name of the collection to create the index on. + * @param {Object} fieldOrSpec fieldOrSpec that defines the index. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from ensureIndex or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.ensureIndex = function(collectionName, fieldOrSpec, options, callback) { + var self = this; + + if (typeof callback === 'undefined' && typeof options === 'function') { + callback = options; + options = {}; + } + + if (options == null) { + options = {}; + } + + // Get the error options + var errorOptions = _getWriteConcern(this, options, callback); + // Make sure we don't try to do a write concern without a callback + if(_hasWriteConcern(errorOptions) && callback == null) + throw new Error("Cannot use a writeConcern without a provided callback"); + // Create command + var command = DbCommand.createCreateIndexCommand(this, collectionName, fieldOrSpec, options); + var index_name = command.documents[0].name; + + // Default command options + var commandOptions = {}; + // Check if the index allready exists + this.indexInformation(collectionName, function(err, collectionInfo) { + if(err != null) return callback(err, null); + + if(!collectionInfo[index_name]) { + // If we have error conditions set handle them + if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { + // Insert options + commandOptions['read'] = false; + // If we have safe set set async to false + if(errorOptions == null) commandOptions['async'] = true; + + // If we have an error option + if(typeof errorOptions == 'object') { + var keys = Object.keys(errorOptions); + for(var i = 0; i < keys.length; i++) { + commandOptions[keys[i]] = errorOptions[keys[i]]; + } + } + + if(typeof callback === 'function' + && commandOptions.w < 1 && !commandOptions.fsync && !commandOptions.journal) { + commandOptions.w = 1; + } + + self._executeInsertCommand(command, commandOptions, function(err, result) { + // Only callback if we have one specified + if(typeof callback === 'function') { + if(err != null) return callback(err, null); + + result = result && result.documents; + if (result[0].err) { + callback(utils.toError(result[0])); + } else { + callback(null, command.documents[0].name); + } + } + }); + } else { + // Execute insert command + var result = self._executeInsertCommand(command, commandOptions); + // If no callback just return + if(!callback) return; + // If error return error + if(result instanceof Error) { + return callback(result); + } + // Otherwise just return + return callback(null, index_name); + } + } else { + if(typeof callback === 'function') return callback(null, index_name); + } + }); +}; + +/** + * Returns the information available on allocated cursors. + * + * Options + * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + * + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from cursorInfo or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.cursorInfo = function(options, callback) { + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + options = args.length ? args.shift() || {} : {}; + + this._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this, {'cursorInfo':1}), options, function(err, result) { + callback(err, result.documents[0]); + }); +}; + +/** + * Drop an index on a collection. + * + * @param {String} collectionName the name of the collection where the command will drop an index. + * @param {String} indexName name of the index to drop. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dropIndex or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.dropIndex = function(collectionName, indexName, callback) { + this._executeQueryCommand(DbCommand.createDropIndexCommand(this, collectionName, indexName), callback); +}; + +/** + * Reindex all indexes on the collection + * Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections. + * + * @param {String} collectionName the name of the collection. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from reIndex or null if an error occured. + * @api public +**/ +Db.prototype.reIndex = function(collectionName, callback) { + this._executeQueryCommand(DbCommand.createReIndexCommand(this, collectionName), function(err, result) { + if(err != null) { + callback(err, false); + } else if(result.documents[0].errmsg == null) { + callback(null, true); + } else { + callback(new Error(result.documents[0].errmsg), false); + } + }); +}; + +/** + * Retrieves this collections index info. + * + * Options + * - **full** {Boolean, default:false}, returns the full raw index information. + * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {String} collectionName the name of the collection. + * @param {Object} [options] additional options during update. + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from indexInformation or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.indexInformation = function(collectionName, options, callback) { + if(typeof callback === 'undefined') { + if(typeof options === 'undefined') { + callback = collectionName; + collectionName = null; + } else { + callback = options; + } + options = {}; + } + + // If we specified full information + var full = options['full'] == null ? false : options['full']; + // Build selector for the indexes + var selector = collectionName != null ? {ns: (this.databaseName + "." + collectionName)} : {}; + + // Set read preference if we set one + var readPreference = options['readPreference'] ? options['readPreference'] : ReadPreference.PRIMARY; + + // Iterate through all the fields of the index + this.collection(DbCommand.SYSTEM_INDEX_COLLECTION, function(err, collection) { + // Perform the find for the collection + collection.find(selector).setReadPreference(readPreference).toArray(function(err, indexes) { + if(err != null) return callback(err, null); + // Contains all the information + var info = {}; + + // if full defined just return all the indexes directly + if(full) return callback(null, indexes); + + // Process all the indexes + for(var i = 0; i < indexes.length; i++) { + var index = indexes[i]; + // Let's unpack the object + info[index.name] = []; + for(var name in index.key) { + info[index.name].push([name, index.key[name]]); + } + } + + // Return all the indexes + callback(null, info); + }); + }); +}; + +/** + * Drop a database. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dropDatabase or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.dropDatabase = function(callback) { + var self = this; + + this._executeQueryCommand(DbCommand.createDropDatabaseCommand(this), function(err, result) { + if(err == null && result.documents[0].ok == 1) { + callback(null, true); + } else { + if(err) { + callback(err, false); + } else { + callback(utils.toError(result.documents[0]), false); + } + } + }); +}; + +/** + * Get all the db statistics. + * + * Options + * - **scale** {Number}, divide the returned sizes by scale value. + * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). + * + * @param {Objects} [options] options for the stats command + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from stats or null if an error occured. + * @return {null} + * @api public + */ +Db.prototype.stats = function stats(options, callback) { + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + // Fetch all commands + options = args.length ? args.shift() || {} : {}; + + // Build command object + var commandObject = { + dbStats:this.collectionName, + } + + // Check if we have the scale value + if(options['scale'] != null) commandObject['scale'] = options['scale']; + + // Execute the command + this.command(commandObject, options, callback); +} + +/** + * @ignore + */ +var __executeQueryCommand = function(self, db_command, options, callback) { + // Options unpacking + var read = options['read'] != null ? options['read'] : false; + var raw = options['raw'] != null ? options['raw'] : self.raw; + var onAll = options['onAll'] != null ? options['onAll'] : false; + var specifiedConnection = options['connection'] != null ? options['connection'] : null; + + // Correct read preference to default primary if set to false, null or primary + if(!(typeof read == 'object') && read._type == 'ReadPreference') { + read = (read == null || read == 'primary' || read == false) ? ReadPreference.PRIMARY : read; + if(!ReadPreference.isValid(read)) return callback(new Error("Illegal readPreference mode specified, " + read)); + } else if(typeof read == 'object' && read._type == 'ReadPreference') { + if(!read.isValid()) return callback(new Error("Illegal readPreference mode specified, " + read.mode)); + } + + // If we have a read preference set and we are a mongos pass the read preference on to the mongos instance, + if(self.serverConfig.isMongos() && read != null && read != false) { + db_command.setMongosReadPreference(read); + } + + // If we got a callback object + if(typeof callback === 'function' && !onAll) { + // Override connection if we passed in a specific connection + var connection = specifiedConnection != null ? specifiedConnection : null; + + if(connection instanceof Error) return callback(connection, null); + + // Fetch either a reader or writer dependent on the specified read option if no connection + // was passed in + if(connection == null) { + // connection = read == null || read == 'primary' || read == false ? self.serverConfig.checkoutWriter(true) : self.serverConfig.checkoutReader(read); + connection = self.serverConfig.checkoutReader(read); + } + + // Ensure we have a valid connection + /*if(connection == null && self.serverConfig.isAutoReconnect()) { + return self.serverConfig._commandsStore.read_from_writer( + { type: 'query' + , db_command: db_command + , options: options + , callback: callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } else */if(connection == null) { + return callback(new Error("no open connections")); + } else if(connection instanceof Error || connection['message'] != null) { + return callback(connection); + } + + // Exhaust Option + var exhaust = options.exhaust || false; + + // Register the handler in the data structure + self.serverConfig._registerHandler(db_command, raw, connection, exhaust, callback); + + // Ensure the connection is valid + if(!connection.isConnected()) { + if(read == ReadPreference.PRIMARY + || read == ReadPreference.PRIMARY_PREFERRED + || (read != null && typeof read == 'object' && read.mode) + || read == null) { + + // Save the command + self.serverConfig._commandsStore.read_from_writer( + { type: 'query' + , db_command: db_command + , options: options + , callback: callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } else { + self.serverConfig._commandsStore.read( + { type: 'query' + , db_command: db_command + , options: options + , callback: callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } + } + + // Write the message out and handle any errors if there are any + connection.write(db_command, function(err) { + if(err != null) { + // Call the handler with an error + if(Array.isArray(db_command)) + self.serverConfig._callHandler(db_command[0].getRequestId(), null, err); + else + self.serverConfig._callHandler(db_command.getRequestId(), null, err); + } + }); + } else if(typeof callback === 'function' && onAll) { + var connections = self.serverConfig.allRawConnections(); + var numberOfEntries = connections.length; + // Go through all the connections + for(var i = 0; i < connections.length; i++) { + // Fetch a connection + var connection = connections[i]; + + // Ensure we have a valid connection + if(connection == null) { + return callback(new Error("no open connections")); + } else if(connection instanceof Error) { + return callback(connection); + } + + // Register the handler in the data structure + self.serverConfig._registerHandler(db_command, raw, connection, callback); + + // Write the message out + connection.write(db_command, function(err) { + // Adjust the number of entries we need to process + numberOfEntries = numberOfEntries - 1; + // Remove listener + if(err != null) { + // Clean up listener and return error + self.serverConfig._removeHandler(db_command.getRequestId()); + } + + // No more entries to process callback with the error + if(numberOfEntries <= 0) { + callback(err); + } + }); + + // Update the db_command request id + db_command.updateRequestId(); + } + } else { + // Fetch either a reader or writer dependent on the specified read option + // var connection = read == null || read == 'primary' || read == false ? self.serverConfig.checkoutWriter(true) : self.serverConfig.checkoutReader(read); + var connection = self.serverConfig.checkoutReader(read); + // Override connection if needed + connection = specifiedConnection != null ? specifiedConnection : connection; + // Ensure we have a valid connection + if(connection == null || connection instanceof Error || connection['message'] != null) return null; + // Write the message out + connection.write(db_command, function(err) { + if(err != null) { + // Emit the error + self.emit("error", err); + } + }); + } +} + +/** + * Execute db query command (not safe) + * @ignore + * @api private + */ +Db.prototype._executeQueryCommand = function(db_command, options, callback) { + var self = this; + + // Unpack the parameters + if (typeof callback === 'undefined') { + callback = options; + options = {}; + } + + // fast fail option used for HA, no retry + var failFast = options['failFast'] != null + ? options['failFast'] + : false; + + // Check if the user force closed the command + if(this._applicationClosed) { + var err = new Error("db closed by application"); + if('function' == typeof callback) { + return callback(err, null); + } else { + throw err; + } + } + + if(this.serverConfig.isDestroyed()) return callback(new Error("Connection was destroyed by application")); + + // Get the configuration + var config = this.serverConfig; + var read = options.read; + + if(!config.canRead(read) && !config.canWrite() && config.isAutoReconnect()) { + if(read == ReadPreference.PRIMARY + || read == ReadPreference.PRIMARY_PREFERRED + || (read != null && typeof read == 'object' && read.mode) + || read == null) { + + // Save the command + self.serverConfig._commandsStore.read_from_writer( + { type: 'query' + , db_command: db_command + , options: options + , callback: callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } else { + self.serverConfig._commandsStore.read( + { type: 'query' + , db_command: db_command + , options: options + , callback: callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } + } else if(!config.canRead(read) && !config.canWrite() && !config.isAutoReconnect()) { + return callback(new Error("no open connections"), null); + } else { + // Execute the command + __executeQueryCommand(self, db_command, options, function (err, result, conn) { + if(callback) callback(err, result, conn); + }); + } +}; + +/** + * @ignore + */ +var __executeInsertCommand = function(self, db_command, options, callback) { + // Always checkout a writer for this kind of operations + var connection = self.serverConfig.checkoutWriter(); + // Get safe mode + var safe = options['safe'] != null ? options['safe'] : false; + var raw = options['raw'] != null ? options['raw'] : self.raw; + var specifiedConnection = options['connection'] != null ? options['connection'] : null; + // Override connection if needed + connection = specifiedConnection != null ? specifiedConnection : connection; + + // Ensure we have a valid connection + if(typeof callback === 'function') { + // Ensure we have a valid connection + /*if(connection == null && self.serverConfig.isAutoReconnect()) { + return self.serverConfig._commandsStore.write( + { type:'insert' + , 'db_command':db_command + , 'options':options + , 'callback':callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } else*/ if(connection == null) { + return callback(new Error("no open connections")); + } else if(connection instanceof Error) { + return callback(connection); + } + + var errorOptions = _getWriteConcern(self, options, callback); + if(errorOptions.w > 0 || errorOptions.w == 'majority' || errorOptions.j || errorOptions.journal || errorOptions.fsync) { + // db command is now an array of commands (original command + lastError) + db_command = [db_command, DbCommand.createGetLastErrorCommand(safe, self)]; + // Register the handler in the data structure + self.serverConfig._registerHandler(db_command[1], raw, connection, callback); + } + } + + // If we have no callback and there is no connection + if(connection == null) return null; + if(connection instanceof Error && typeof callback == 'function') return callback(connection, null); + if(connection instanceof Error) return null; + if(connection == null && typeof callback == 'function') return callback(new Error("no primary server found"), null); + + // Ensure we truly are connected + if(!connection.isConnected()) { + return self.serverConfig._commandsStore.write( + { type:'insert' + , 'db_command':db_command + , 'options':options + , 'callback':callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } + + // Write the message out + connection.write(db_command, function(err) { + // Return the callback if it's not a safe operation and the callback is defined + if(typeof callback === 'function' && (safe == null || safe == false)) { + // Perform the callback + callback(err, null); + } else if(typeof callback === 'function') { + // Call the handler with an error + self.serverConfig._callHandler(db_command[1].getRequestId(), null, err); + } else if(typeof callback == 'function' && safe && safe.w == -1) { + // Call the handler with no error + self.serverConfig._callHandler(db_command[1].getRequestId(), null, null); + } else if(!safe || safe.w == -1) { + self.emit("error", err); + } + }); +} + +/** + * Execute an insert Command + * @ignore + * @api private + */ +Db.prototype._executeInsertCommand = function(db_command, options, callback) { + var self = this; + + // Unpack the parameters + if(callback == null && typeof options === 'function') { + callback = options; + options = {}; + } + + // Ensure options are not null + options = options == null ? {} : options; + + // Check if the user force closed the command + if(this._applicationClosed) { + if(typeof callback == 'function') { + return callback(new Error("db closed by application"), null); + } else { + throw new Error("db closed by application"); + } + } + + if(this.serverConfig.isDestroyed()) return callback(new Error("Connection was destroyed by application")); + + // Get config + var config = self.serverConfig; + // Check if we are connected + if(!config.canWrite() && config.isAutoReconnect()) { + self.serverConfig._commandsStore.write( + { type:'insert' + , 'db_command':db_command + , 'options':options + , 'callback':callback + , db: self + , executeQueryCommand: __executeQueryCommand + , executeInsertCommand: __executeInsertCommand + } + ); + } else if(!config.canWrite() && !config.isAutoReconnect()) { + return callback(new Error("no open connections"), null); + } else { + // Execute write command + __executeInsertCommand(self, db_command, options, callback); + } +} + +/** + * Update command is the same + * @ignore + * @api private + */ +Db.prototype._executeUpdateCommand = Db.prototype._executeInsertCommand; +/** + * Remove command is the same + * @ignore + * @api private + */ +Db.prototype._executeRemoveCommand = Db.prototype._executeInsertCommand; + +/** + * Wrap a Mongo error document into an Error instance. + * Deprecated. Use utils.toError instead. + * + * @ignore + * @api private + * @deprecated + */ +Db.prototype.wrap = utils.toError; + +/** + * Default URL + * + * @classconstant DEFAULT_URL + **/ +Db.DEFAULT_URL = 'mongodb://localhost:27017/default'; + +/** + * Connect to MongoDB using a url as documented at + * + * docs.mongodb.org/manual/reference/connection-string/ + * + * Options + * - **uri_decode_auth** {Boolean, default:false} uri decode the user name and password for authentication + * - **db** {Object, default: null} a hash off options to set on the db object, see **Db constructor** + * - **server** {Object, default: null} a hash off options to set on the server objects, see **Server** constructor** + * - **replSet** {Object, default: null} a hash off options to set on the replSet object, see **ReplSet** constructor** + * - **mongos** {Object, default: null} a hash off options to set on the mongos object, see **Mongos** constructor** + * + * @param {String} url connection url for MongoDB. + * @param {Object} [options] optional options for insert command + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the db instance or null if an error occured. + * @return {null} + * @api public + */ +Db.connect = function(url, options, callback) { + // Ensure correct mapping of the callback + if(typeof options == 'function') { + callback = options; + options = {}; + } + + // Ensure same behavior as previous version w:0 + if(url.indexOf("safe") == -1 + && url.indexOf("w") == -1 + && url.indexOf("journal") == -1 && url.indexOf("j") == -1 + && url.indexOf("fsync") == -1) options.w = 0; + + // Avoid circular require problem + var MongoClient = require('./mongo_client.js').MongoClient; + // Attempt to connect + MongoClient.connect.call(MongoClient, url, options, callback); +} + +/** + * State of the db connection + * @ignore + */ +Object.defineProperty(Db.prototype, "state", { enumerable: true + , get: function () { + return this.serverConfig._serverState; + } +}); + +/** + * @ignore + */ +var _hasWriteConcern = function(errorOptions) { + return errorOptions == true + || errorOptions.w > 0 + || errorOptions.w == 'majority' + || errorOptions.j == true + || errorOptions.journal == true + || errorOptions.fsync == true +} + +/** + * @ignore + */ +var _setWriteConcernHash = function(options) { + var finalOptions = {}; + if(options.w != null) finalOptions.w = options.w; + if(options.journal == true) finalOptions.j = options.journal; + if(options.j == true) finalOptions.j = options.j; + if(options.fsync == true) finalOptions.fsync = options.fsync; + if(options.wtimeout != null) finalOptions.wtimeout = options.wtimeout; + return finalOptions; +} + +/** + * @ignore + */ +var _getWriteConcern = function(self, options, callback) { + // Final options + var finalOptions = {w:1}; + // Local options verification + if(options.w != null || typeof options.j == 'boolean' || typeof options.journal == 'boolean' || typeof options.fsync == 'boolean') { + finalOptions = _setWriteConcernHash(options); + } else if(options.safe != null && typeof options.safe == 'object') { + finalOptions = _setWriteConcernHash(options.safe); + } else if(typeof options.safe == "boolean") { + finalOptions = {w: (options.safe ? 1 : 0)}; + } else if(self.options.w != null || typeof self.options.j == 'boolean' || typeof self.options.journal == 'boolean' || typeof self.options.fsync == 'boolean') { + finalOptions = _setWriteConcernHash(self.options); + } else if(self.safe.w != null || typeof self.safe.j == 'boolean' || typeof self.safe.journal == 'boolean' || typeof self.safe.fsync == 'boolean') { + finalOptions = _setWriteConcernHash(self.safe); + } else if(typeof self.safe == "boolean") { + finalOptions = {w: (self.safe ? 1 : 0)}; + } + + // Ensure we don't have an invalid combination of write concerns + if(finalOptions.w < 1 + && (finalOptions.journal == true || finalOptions.j == true || finalOptions.fsync == true)) throw new Error("No acknowlegement using w < 1 cannot be combined with journal:true or fsync:true"); + + // Return the options + return finalOptions; +} + +/** + * Legacy support + * + * @ignore + * @api private + */ +exports.connect = Db.connect; +exports.Db = Db; + +/** + * Remove all listeners to the db instance. + * @ignore + * @api private + */ +Db.prototype.removeAllEventListeners = function() { + this.removeAllListeners("close"); + this.removeAllListeners("error"); + this.removeAllListeners("timeout"); + this.removeAllListeners("parseError"); + this.removeAllListeners("poolReady"); + this.removeAllListeners("message"); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js new file mode 100644 index 0000000..572d144 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js @@ -0,0 +1,213 @@ +var Binary = require('bson').Binary, + ObjectID = require('bson').ObjectID; + +/** + * Class for representing a single chunk in GridFS. + * + * @class + * + * @param file {GridStore} The {@link GridStore} object holding this chunk. + * @param mongoObject {object} The mongo object representation of this chunk. + * + * @throws Error when the type of data field for {@link mongoObject} is not + * supported. Currently supported types for data field are instances of + * {@link String}, {@link Array}, {@link Binary} and {@link Binary} + * from the bson module + * + * @see Chunk#buildMongoObject + */ +var Chunk = exports.Chunk = function(file, mongoObject) { + if(!(this instanceof Chunk)) return new Chunk(file, mongoObject); + + this.file = file; + var self = this; + var mongoObjectFinal = mongoObject == null ? {} : mongoObject; + + this.objectId = mongoObjectFinal._id == null ? new ObjectID() : mongoObjectFinal._id; + this.chunkNumber = mongoObjectFinal.n == null ? 0 : mongoObjectFinal.n; + this.data = new Binary(); + + if(mongoObjectFinal.data == null) { + } else if(typeof mongoObjectFinal.data == "string") { + var buffer = new Buffer(mongoObjectFinal.data.length); + buffer.write(mongoObjectFinal.data, 'binary', 0); + this.data = new Binary(buffer); + } else if(Array.isArray(mongoObjectFinal.data)) { + var buffer = new Buffer(mongoObjectFinal.data.length); + buffer.write(mongoObjectFinal.data.join(''), 'binary', 0); + this.data = new Binary(buffer); + } else if(mongoObjectFinal.data instanceof Binary || Object.prototype.toString.call(mongoObjectFinal.data) == "[object Binary]") { + this.data = mongoObjectFinal.data; + } else if(Buffer.isBuffer(mongoObjectFinal.data)) { + } else { + throw Error("Illegal chunk format"); + } + // Update position + this.internalPosition = 0; +}; + +/** + * Writes a data to this object and advance the read/write head. + * + * @param data {string} the data to write + * @param callback {function(*, GridStore)} This will be called after executing + * this method. The first parameter will contain null and the second one + * will contain a reference to this object. + */ +Chunk.prototype.write = function(data, callback) { + this.data.write(data, this.internalPosition); + this.internalPosition = this.data.length(); + if(callback != null) return callback(null, this); + return this; +}; + +/** + * Reads data and advances the read/write head. + * + * @param length {number} The length of data to read. + * + * @return {string} The data read if the given length will not exceed the end of + * the chunk. Returns an empty String otherwise. + */ +Chunk.prototype.read = function(length) { + // Default to full read if no index defined + length = length == null || length == 0 ? this.length() : length; + + if(this.length() - this.internalPosition + 1 >= length) { + var data = this.data.read(this.internalPosition, length); + this.internalPosition = this.internalPosition + length; + return data; + } else { + return ''; + } +}; + +Chunk.prototype.readSlice = function(length) { + if ((this.length() - this.internalPosition) >= length) { + var data = null; + if (this.data.buffer != null) { //Pure BSON + data = this.data.buffer.slice(this.internalPosition, this.internalPosition + length); + } else { //Native BSON + data = new Buffer(length); + length = this.data.readInto(data, this.internalPosition); + } + this.internalPosition = this.internalPosition + length; + return data; + } else { + return null; + } +}; + +/** + * Checks if the read/write head is at the end. + * + * @return {boolean} Whether the read/write head has reached the end of this + * chunk. + */ +Chunk.prototype.eof = function() { + return this.internalPosition == this.length() ? true : false; +}; + +/** + * Reads one character from the data of this chunk and advances the read/write + * head. + * + * @return {string} a single character data read if the the read/write head is + * not at the end of the chunk. Returns an empty String otherwise. + */ +Chunk.prototype.getc = function() { + return this.read(1); +}; + +/** + * Clears the contents of the data in this chunk and resets the read/write head + * to the initial position. + */ +Chunk.prototype.rewind = function() { + this.internalPosition = 0; + this.data = new Binary(); +}; + +/** + * Saves this chunk to the database. Also overwrites existing entries having the + * same id as this chunk. + * + * @param callback {function(*, GridStore)} This will be called after executing + * this method. The first parameter will contain null and the second one + * will contain a reference to this object. + */ +Chunk.prototype.save = function(callback) { + var self = this; + + self.file.chunkCollection(function(err, collection) { + if(err) return callback(err); + + collection.remove({'_id':self.objectId}, {safe:true}, function(err, result) { + if(err) return callback(err); + + if(self.data.length() > 0) { + self.buildMongoObject(function(mongoObject) { + collection.insert(mongoObject, {safe:true}, function(err, collection) { + callback(err, self); + }); + }); + } else { + callback(null, self); + } + }); + }); +}; + +/** + * Creates a mongoDB object representation of this chunk. + * + * @param callback {function(Object)} This will be called after executing this + * method. The object will be passed to the first parameter and will have + * the structure: + * + *
    
    + *        {
    + *          '_id' : , // {number} id for this chunk
    + *          'files_id' : , // {number} foreign key to the file collection
    + *          'n' : , // {number} chunk number
    + *          'data' : , // {bson#Binary} the chunk data itself
    + *        }
    + *        
    + * + * @see MongoDB GridFS Chunk Object Structure + */ +Chunk.prototype.buildMongoObject = function(callback) { + var mongoObject = {'_id': this.objectId, + 'files_id': this.file.fileId, + 'n': this.chunkNumber, + 'data': this.data}; + callback(mongoObject); +}; + +/** + * @return {number} the length of the data + */ +Chunk.prototype.length = function() { + return this.data.length(); +}; + +/** + * The position of the read/write head + * @name position + * @lends Chunk# + * @field + */ +Object.defineProperty(Chunk.prototype, "position", { enumerable: true + , get: function () { + return this.internalPosition; + } + , set: function(value) { + this.internalPosition = value; + } +}); + +/** + * The default chunk size + * @constant + */ +Chunk.DEFAULT_CHUNK_SIZE = 1024 * 256; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js new file mode 100644 index 0000000..aa695b7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js @@ -0,0 +1,103 @@ +var GridStore = require('./gridstore').GridStore, + ObjectID = require('bson').ObjectID; + +/** + * A class representation of a simple Grid interface. + * + * @class Represents the Grid. + * @param {Db} db A database instance to interact with. + * @param {String} [fsName] optional different root collection for GridFS. + * @return {Grid} + */ +function Grid(db, fsName) { + + if(!(this instanceof Grid)) return new Grid(db, fsName); + + this.db = db; + this.fsName = fsName == null ? GridStore.DEFAULT_ROOT_COLLECTION : fsName; +} + +/** + * Puts binary data to the grid + * + * Options + * - **_id** {Any}, unique id for this file + * - **root** {String}, root collection to use. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. + * - **content_type** {String}, mime type of the file. Defaults to **{GridStore.DEFAULT_CONTENT_TYPE}**. + * - **chunk_size** {Number}, size for the chunk. Defaults to **{Chunk.DEFAULT_CHUNK_SIZE}**. + * - **metadata** {Object}, arbitrary data the user wants to store. + * + * @param {Buffer} data buffer with Binary Data. + * @param {Object} [options] the options for the files. + * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. + * @return {null} + * @api public + */ +Grid.prototype.put = function(data, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + options = args.length ? args.shift() : {}; + // If root is not defined add our default one + options['root'] = options['root'] == null ? this.fsName : options['root']; + + // Return if we don't have a buffer object as data + if(!(Buffer.isBuffer(data))) return callback(new Error("Data object must be a buffer object"), null); + // Get filename if we are using it + var filename = options['filename'] || null; + // Get id if we are using it + var id = options['_id'] || null; + // Create gridstore + var gridStore = new GridStore(this.db, id, filename, "w", options); + gridStore.open(function(err, gridStore) { + if(err) return callback(err, null); + + gridStore.write(data, function(err, result) { + if(err) return callback(err, null); + + gridStore.close(function(err, result) { + if(err) return callback(err, null); + callback(null, result); + }) + }) + }) +} + +/** + * Get binary data to the grid + * + * @param {Any} id for file. + * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. + * @return {null} + * @api public + */ +Grid.prototype.get = function(id, callback) { + // Create gridstore + var gridStore = new GridStore(this.db, id, null, "r", {root:this.fsName}); + gridStore.open(function(err, gridStore) { + if(err) return callback(err, null); + + // Return the data + gridStore.read(function(err, data) { + return callback(err, data) + }); + }) +} + +/** + * Delete file from grid + * + * @param {Any} id for file. + * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. + * @return {null} + * @api public + */ +Grid.prototype.delete = function(id, callback) { + // Create gridstore + GridStore.unlink(this.db, id, {root:this.fsName}, function(err, result) { + if(err) return callback(err, false); + return callback(null, true); + }); +} + +exports.Grid = Grid; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js new file mode 100644 index 0000000..0699e32 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js @@ -0,0 +1,1482 @@ +/** + * @fileOverview GridFS is a tool for MongoDB to store files to the database. + * Because of the restrictions of the object size the database can hold, a + * facility to split a file into several chunks is needed. The {@link GridStore} + * class offers a simplified api to interact with files while managing the + * chunks of split files behind the scenes. More information about GridFS can be + * found here. + */ +var Chunk = require('./chunk').Chunk, + DbCommand = require('../commands/db_command').DbCommand, + ObjectID = require('bson').ObjectID, + Buffer = require('buffer').Buffer, + fs = require('fs'), + timers = require('timers'), + util = require('util'), + inherits = util.inherits, + ReadStream = require('./readstream').ReadStream, + Stream = require('stream'); + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; +processor = process.nextTick + +var REFERENCE_BY_FILENAME = 0, + REFERENCE_BY_ID = 1; + +/** + * A class representation of a file stored in GridFS. + * + * Modes + * - **"r"** - read only. This is the default mode. + * - **"w"** - write in truncate mode. Existing data will be overwriten. + * - **w+"** - write in edit mode. + * + * Options + * - **root** {String}, root collection to use. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. + * - **content_type** {String}, mime type of the file. Defaults to **{GridStore.DEFAULT_CONTENT_TYPE}**. + * - **chunk_size** {Number}, size for the chunk. Defaults to **{Chunk.DEFAULT_CHUNK_SIZE}**. + * - **metadata** {Object}, arbitrary data the user wants to store. + * + * @class Represents the GridStore. + * @param {Db} db A database instance to interact with. + * @param {Any} [id] optional unique id for this file + * @param {String} [filename] optional filename for this file, no unique constrain on the field + * @param {String} mode set the mode for this file. + * @param {Object} options optional properties to specify. + * @return {GridStore} + */ +var GridStore = function GridStore(db, id, filename, mode, options) { + if(!(this instanceof GridStore)) return new GridStore(db, id, filename, mode, options); + + var self = this; + this.db = db; + + // Call stream constructor + if(typeof Stream == 'function') { + Stream.call(this); + } else { + // 0.4.X backward compatibility fix + Stream.Stream.call(this); + } + + // Handle options + if(typeof options === 'undefined') options = {}; + // Handle mode + if(typeof mode === 'undefined') { + mode = filename; + filename = undefined; + } else if(typeof mode == 'object') { + options = mode; + mode = filename; + filename = undefined; + } + + if(id instanceof ObjectID) { + this.referenceBy = REFERENCE_BY_ID; + this.fileId = id; + this.filename = filename; + } else if(typeof filename == 'undefined') { + this.referenceBy = REFERENCE_BY_FILENAME; + this.filename = id; + if (mode.indexOf('w') != null) { + this.fileId = new ObjectID(); + } + } else { + this.referenceBy = REFERENCE_BY_ID; + this.fileId = id; + this.filename = filename; + } + + // Set up the rest + this.mode = mode == null ? "r" : mode; + this.options = options == null ? {} : options; + this.root = this.options['root'] == null ? exports.GridStore.DEFAULT_ROOT_COLLECTION : this.options['root']; + this.position = 0; + // Set default chunk size + this.internalChunkSize = this.options['chunkSize'] == null ? Chunk.DEFAULT_CHUNK_SIZE : this.options['chunkSize']; +} + +/** + * Code for the streaming capabilities of the gridstore object + * Most code from Aaron heckmanns project https://github.com/aheckmann/gridfs-stream + * Modified to work on the gridstore object itself + * @ignore + */ +if(typeof Stream == 'function') { + GridStore.prototype = { __proto__: Stream.prototype } +} else { + // Node 0.4.X compatibility code + GridStore.prototype = { __proto__: Stream.Stream.prototype } +} + +// Move pipe to _pipe +GridStore.prototype._pipe = GridStore.prototype.pipe; + +/** + * Opens the file from the database and initialize this object. Also creates a + * new one if file does not exist. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain an **{Error}** object and the second parameter will be null if an error occured. Otherwise, the first parameter will be null and the second will contain the reference to this object. + * @return {null} + * @api public + */ +GridStore.prototype.open = function(callback) { + if( this.mode != "w" && this.mode != "w+" && this.mode != "r"){ + callback(new Error("Illegal mode " + this.mode), null); + return; + } + + var self = this; + + if((self.mode == "w" || self.mode == "w+") && self.db.serverConfig.primary != null) { + // Get files collection + self.collection(function(err, collection) { + if(err) return callback(err); + + // Put index on filename + collection.ensureIndex([['filename', 1]], function(err, index) { + if(err) return callback(err); + + // Get chunk collection + self.chunkCollection(function(err, chunkCollection) { + if(err) return callback(err); + + // Ensure index on chunk collection + chunkCollection.ensureIndex([['files_id', 1], ['n', 1]], function(err, index) { + if(err) return callback(err); + _open(self, callback); + }); + }); + }); + }); + } else { + // Open the gridstore + _open(self, callback); + } +}; + +/** + * Hidding the _open function + * @ignore + * @api private + */ +var _open = function(self, callback) { + self.collection(function(err, collection) { + if(err!==null) { + callback(new Error("at collection: "+err), null); + return; + } + + // Create the query + var query = self.referenceBy == REFERENCE_BY_ID ? {_id:self.fileId} : {filename:self.filename}; + query = null == self.fileId && this.filename == null ? null : query; + + // Fetch the chunks + if(query != null) { + collection.find(query, function(err, cursor) { + if(err) return error(err); + + // Fetch the file + cursor.nextObject(function(err, doc) { + if(err) return error(err); + + // Check if the collection for the files exists otherwise prepare the new one + if(doc != null) { + self.fileId = doc._id; + self.filename = doc.filename; + self.contentType = doc.contentType; + self.internalChunkSize = doc.chunkSize; + self.uploadDate = doc.uploadDate; + self.aliases = doc.aliases; + self.length = doc.length; + self.metadata = doc.metadata; + self.internalMd5 = doc.md5; + } else if (self.mode != 'r') { + self.fileId = self.fileId == null ? new ObjectID() : self.fileId; + self.contentType = exports.GridStore.DEFAULT_CONTENT_TYPE; + self.internalChunkSize = self.internalChunkSize == null ? Chunk.DEFAULT_CHUNK_SIZE : self.internalChunkSize; + self.length = 0; + } else { + self.length = 0; + var txtId = self.fileId instanceof ObjectID ? self.fileId.toHexString() : self.fileId; + return error(new Error((self.referenceBy == REFERENCE_BY_ID ? txtId : self.filename) + " does not exist", self)); + } + + // Process the mode of the object + if(self.mode == "r") { + nthChunk(self, 0, function(err, chunk) { + if(err) return error(err); + self.currentChunk = chunk; + self.position = 0; + callback(null, self); + }); + } else if(self.mode == "w") { + // Delete any existing chunks + deleteChunks(self, function(err, result) { + if(err) return error(err); + self.currentChunk = new Chunk(self, {'n':0}); + self.contentType = self.options['content_type'] == null ? self.contentType : self.options['content_type']; + self.internalChunkSize = self.options['chunk_size'] == null ? self.internalChunkSize : self.options['chunk_size']; + self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; + self.position = 0; + callback(null, self); + }); + } else if(self.mode == "w+") { + nthChunk(self, lastChunkNumber(self), function(err, chunk) { + if(err) return error(err); + // Set the current chunk + self.currentChunk = chunk == null ? new Chunk(self, {'n':0}) : chunk; + self.currentChunk.position = self.currentChunk.data.length(); + self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; + self.position = self.length; + callback(null, self); + }); + } + }); + }); + } else { + // Write only mode + self.fileId = null == self.fileId ? new ObjectID() : self.fileId; + self.contentType = exports.GridStore.DEFAULT_CONTENT_TYPE; + self.internalChunkSize = self.internalChunkSize == null ? Chunk.DEFAULT_CHUNK_SIZE : self.internalChunkSize; + self.length = 0; + + self.chunkCollection(function(err, collection2) { + if(err) return error(err); + + // No file exists set up write mode + if(self.mode == "w") { + // Delete any existing chunks + deleteChunks(self, function(err, result) { + if(err) return error(err); + self.currentChunk = new Chunk(self, {'n':0}); + self.contentType = self.options['content_type'] == null ? self.contentType : self.options['content_type']; + self.internalChunkSize = self.options['chunk_size'] == null ? self.internalChunkSize : self.options['chunk_size']; + self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; + self.position = 0; + callback(null, self); + }); + } else if(self.mode == "w+") { + nthChunk(self, lastChunkNumber(self), function(err, chunk) { + if(err) return error(err); + // Set the current chunk + self.currentChunk = chunk == null ? new Chunk(self, {'n':0}) : chunk; + self.currentChunk.position = self.currentChunk.data.length(); + self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; + self.position = self.length; + callback(null, self); + }); + } + }); + } + }); + + // only pass error to callback once + function error (err) { + if(error.err) return; + callback(error.err = err); + } +}; + +/** + * Stores a file from the file system to the GridFS database. + * + * @param {String|Buffer|FileHandle} file the file to store. + * @param {Function} callback this will be called after this method is executed. The first parameter will be null and the the second will contain the reference to this object. + * @return {null} + * @api public + */ +GridStore.prototype.writeFile = function (file, callback) { + var self = this; + if (typeof file === 'string') { + fs.open(file, 'r', 0666, function (err, fd) { + if(err) return callback(err); + self.writeFile(fd, callback); + }); + return; + } + + self.open(function (err, self) { + if(err) return callback(err, self); + + fs.fstat(file, function (err, stats) { + if(err) return callback(err, self); + + var offset = 0; + var index = 0; + var numberOfChunksLeft = Math.min(stats.size / self.chunkSize); + + // Write a chunk + var writeChunk = function() { + fs.read(file, self.chunkSize, offset, 'binary', function(err, data, bytesRead) { + if(err) return callback(err, self); + + offset = offset + bytesRead; + + // Create a new chunk for the data + var chunk = new Chunk(self, {n:index++}); + chunk.write(data, function(err, chunk) { + if(err) return callback(err, self); + + chunk.save(function(err, result) { + if(err) return callback(err, self); + + self.position = self.position + data.length; + + // Point to current chunk + self.currentChunk = chunk; + + if(offset >= stats.size) { + fs.close(file); + self.close(function(err, result) { + if(err) return callback(err, self); + return callback(null, self); + }); + } else { + return processor(writeChunk); + } + }); + }); + }); + } + + // Process the first write + processor(writeChunk); + }); + }); +}; + +/** + * Writes some data. This method will work properly only if initialized with mode + * "w" or "w+". + * + * @param string {string} The data to write. + * @param close {boolean=false} opt_argument Closes this file after writing if + * true. + * @param callback {function(*, GridStore)} This will be called after executing + * this method. The first parameter will contain null and the second one + * will contain a reference to this object. + * + * @ignore + * @api private + */ +var writeBuffer = function(self, buffer, close, callback) { + if(typeof close === "function") { callback = close; close = null; } + var finalClose = (close == null) ? false : close; + + if(self.mode[0] != "w") { + callback(new Error((self.referenceBy == REFERENCE_BY_ID ? self.toHexString() : self.filename) + " not opened for writing"), null); + } else { + if(self.currentChunk.position + buffer.length >= self.chunkSize) { + // Write out the current Chunk and then keep writing until we have less data left than a chunkSize left + // to a new chunk (recursively) + var previousChunkNumber = self.currentChunk.chunkNumber; + var leftOverDataSize = self.chunkSize - self.currentChunk.position; + var firstChunkData = buffer.slice(0, leftOverDataSize); + var leftOverData = buffer.slice(leftOverDataSize); + // A list of chunks to write out + var chunksToWrite = [self.currentChunk.write(firstChunkData)]; + // If we have more data left than the chunk size let's keep writing new chunks + while(leftOverData.length >= self.chunkSize) { + // Create a new chunk and write to it + var newChunk = new Chunk(self, {'n': (previousChunkNumber + 1)}); + var firstChunkData = leftOverData.slice(0, self.chunkSize); + leftOverData = leftOverData.slice(self.chunkSize); + // Update chunk number + previousChunkNumber = previousChunkNumber + 1; + // Write data + newChunk.write(firstChunkData); + // Push chunk to save list + chunksToWrite.push(newChunk); + } + + // Set current chunk with remaining data + self.currentChunk = new Chunk(self, {'n': (previousChunkNumber + 1)}); + // If we have left over data write it + if(leftOverData.length > 0) self.currentChunk.write(leftOverData); + + // Update the position for the gridstore + self.position = self.position + buffer.length; + // Total number of chunks to write + var numberOfChunksToWrite = chunksToWrite.length; + // Write out all the chunks and then return + for(var i = 0; i < chunksToWrite.length; i++) { + var chunk = chunksToWrite[i]; + chunk.save(function(err, result) { + if(err) return callback(err); + + numberOfChunksToWrite = numberOfChunksToWrite - 1; + + if(numberOfChunksToWrite <= 0) { + return callback(null, self); + } + }) + } + } else { + // Update the position for the gridstore + self.position = self.position + buffer.length; + // We have less data than the chunk size just write it and callback + self.currentChunk.write(buffer); + callback(null, self); + } + } +}; + +/** + * Creates a mongoDB object representation of this object. + * + * @param callback {function(object)} This will be called after executing this + * method. The object will be passed to the first parameter and will have + * the structure: + * + *
    
    + *        {
    + *          '_id' : , // {number} id for this file
    + *          'filename' : , // {string} name for this file
    + *          'contentType' : , // {string} mime type for this file
    + *          'length' : , // {number} size of this file?
    + *          'chunksize' : , // {number} chunk size used by this file
    + *          'uploadDate' : , // {Date}
    + *          'aliases' : , // {array of string}
    + *          'metadata' : , // {string}
    + *        }
    + *        
    + * + * @ignore + * @api private + */ +var buildMongoObject = function(self, callback) { + // // Keeps the final chunk number + // var chunkNumber = 0; + // var previousChunkSize = 0; + // // Get the correct chunk Number, if we have an empty chunk return the previous chunk number + // if(null != self.currentChunk && self.currentChunk.chunkNumber > 0 && self.currentChunk.position == 0) { + // chunkNumber = self.currentChunk.chunkNumber - 1; + // } else { + // chunkNumber = self.currentChunk.chunkNumber; + // previousChunkSize = self.currentChunk.position; + // } + + // // Calcuate the length + // var length = self.currentChunk != null ? (chunkNumber * self.chunkSize + previousChunkSize) : 0; + var mongoObject = { + '_id': self.fileId, + 'filename': self.filename, + 'contentType': self.contentType, + 'length': self.position ? self.position : 0, + 'chunkSize': self.chunkSize, + 'uploadDate': self.uploadDate, + 'aliases': self.aliases, + 'metadata': self.metadata + }; + + var md5Command = {filemd5:self.fileId, root:self.root}; + self.db.command(md5Command, function(err, results) { + mongoObject.md5 = results.md5; + callback(mongoObject); + }); +}; + +/** + * Saves this file to the database. This will overwrite the old entry if it + * already exists. This will work properly only if mode was initialized to + * "w" or "w+". + * + * @param {Function} callback this will be called after executing this method. Passes an **{Error}** object to the first parameter and null to the second if an error occured. Otherwise, passes null to the first and a reference to this object to the second. + * @return {null} + * @api public + */ +GridStore.prototype.close = function(callback) { + var self = this; + + if(self.mode[0] == "w") { + if(self.currentChunk != null && self.currentChunk.position > 0) { + self.currentChunk.save(function(err, chunk) { + if(err && typeof callback == 'function') return callback(err); + + self.collection(function(err, files) { + if(err && typeof callback == 'function') return callback(err); + + // Build the mongo object + if(self.uploadDate != null) { + files.remove({'_id':self.fileId}, {safe:true}, function(err, collection) { + if(err && typeof callback == 'function') return callback(err); + + buildMongoObject(self, function(mongoObject) { + files.save(mongoObject, {safe:true}, function(err) { + if(typeof callback == 'function') + callback(err, mongoObject); + }); + }); + }); + } else { + self.uploadDate = new Date(); + buildMongoObject(self, function(mongoObject) { + files.save(mongoObject, {safe:true}, function(err) { + if(typeof callback == 'function') + callback(err, mongoObject); + }); + }); + } + }); + }); + } else { + self.collection(function(err, files) { + if(err && typeof callback == 'function') return callback(err); + + self.uploadDate = new Date(); + buildMongoObject(self, function(mongoObject) { + files.save(mongoObject, {safe:true}, function(err) { + if(typeof callback == 'function') + callback(err, mongoObject); + }); + }); + }); + } + } else if(self.mode[0] == "r") { + if(typeof callback == 'function') + callback(null, null); + } else { + if(typeof callback == 'function') + callback(new Error("Illegal mode " + self.mode), null); + } +}; + +/** + * Gets the nth chunk of this file. + * + * @param chunkNumber {number} The nth chunk to retrieve. + * @param callback {function(*, Chunk|object)} This will be called after + * executing this method. null will be passed to the first parameter while + * a new {@link Chunk} instance will be passed to the second parameter if + * the chunk was found or an empty object {} if not. + * + * @ignore + * @api private + */ +var nthChunk = function(self, chunkNumber, callback) { + self.chunkCollection(function(err, collection) { + if(err) return callback(err); + + collection.find({'files_id':self.fileId, 'n':chunkNumber}, function(err, cursor) { + if(err) return callback(err); + + cursor.nextObject(function(err, chunk) { + if(err) return callback(err); + + var finalChunk = chunk == null ? {} : chunk; + callback(null, new Chunk(self, finalChunk)); + }); + }); + }); +}; + +/** + * + * @ignore + * @api private + */ +GridStore.prototype._nthChunk = function(chunkNumber, callback) { + nthChunk(this, chunkNumber, callback); +} + +/** + * @return {Number} The last chunk number of this file. + * + * @ignore + * @api private + */ +var lastChunkNumber = function(self) { + return Math.floor(self.length/self.chunkSize); +}; + +/** + * Retrieve this file's chunks collection. + * + * @param {Function} callback this will be called after executing this method. An exception object will be passed to the first parameter when an error occured or null otherwise. A new **{Collection}** object will be passed to the second parameter if no error occured. + * @return {null} + * @api public + */ +GridStore.prototype.chunkCollection = function(callback) { + this.db.collection((this.root + ".chunks"), callback); +}; + +/** + * Deletes all the chunks of this file in the database. + * + * @param callback {function(*, boolean)} This will be called after this method + * executes. Passes null to the first and true to the second argument. + * + * @ignore + * @api private + */ +var deleteChunks = function(self, callback) { + if(self.fileId != null) { + self.chunkCollection(function(err, collection) { + if(err) return callback(err, false); + collection.remove({'files_id':self.fileId}, {safe:true}, function(err, result) { + if(err) return callback(err, false); + callback(null, true); + }); + }); + } else { + callback(null, true); + } +}; + +/** + * Deletes all the chunks of this file in the database. + * + * @param {Function} callback this will be called after this method executes. Passes null to the first and true to the second argument. + * @return {null} + * @api public + */ +GridStore.prototype.unlink = function(callback) { + var self = this; + deleteChunks(this, function(err) { + if(err!==null) { + err.message = "at deleteChunks: " + err.message; + return callback(err); + } + + self.collection(function(err, collection) { + if(err!==null) { + err.message = "at collection: " + err.message; + return callback(err); + } + + collection.remove({'_id':self.fileId}, {safe:true}, function(err) { + callback(err, self); + }); + }); + }); +}; + +/** + * Retrieves the file collection associated with this object. + * + * @param {Function} callback this will be called after executing this method. An exception object will be passed to the first parameter when an error occured or null otherwise. A new **{Collection}** object will be passed to the second parameter if no error occured. + * @return {null} + * @api public + */ +GridStore.prototype.collection = function(callback) { + this.db.collection(this.root + ".files", callback); +}; + +/** + * Reads the data of this file. + * + * @param {String} [separator] the character to be recognized as the newline separator. + * @param {Function} callback This will be called after this method is executed. The first parameter will be null and the second parameter will contain an array of strings representing the entire data, each element representing a line including the separator character. + * @return {null} + * @api public + */ +GridStore.prototype.readlines = function(separator, callback) { + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + separator = args.length ? args.shift() : "\n"; + + this.read(function(err, data) { + if(err) return callback(err); + + var items = data.toString().split(separator); + items = items.length > 0 ? items.splice(0, items.length - 1) : []; + for(var i = 0; i < items.length; i++) { + items[i] = items[i] + separator; + } + + callback(null, items); + }); +}; + +/** + * Deletes all the chunks of this file in the database if mode was set to "w" or + * "w+" and resets the read/write head to the initial position. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. + * @return {null} + * @api public + */ +GridStore.prototype.rewind = function(callback) { + var self = this; + + if(this.currentChunk.chunkNumber != 0) { + if(this.mode[0] == "w") { + deleteChunks(self, function(err, gridStore) { + if(err) return callback(err); + self.currentChunk = new Chunk(self, {'n': 0}); + self.position = 0; + callback(null, self); + }); + } else { + self.currentChunk(0, function(err, chunk) { + if(err) return callback(err); + self.currentChunk = chunk; + self.currentChunk.rewind(); + self.position = 0; + callback(null, self); + }); + } + } else { + self.currentChunk.rewind(); + self.position = 0; + callback(null, self); + } +}; + +/** + * Retrieves the contents of this file and advances the read/write head. Works with Buffers only. + * + * There are 3 signatures for this method: + * + * (callback) + * (length, callback) + * (length, buffer, callback) + * + * @param {Number} [length] the number of characters to read. Reads all the characters from the read/write head to the EOF if not specified. + * @param {String|Buffer} [buffer] a string to hold temporary data. This is used for storing the string data read so far when recursively calling this method. + * @param {Function} callback this will be called after this method is executed. null will be passed to the first parameter and a string containing the contents of the buffer concatenated with the contents read from this file will be passed to the second. + * @return {null} + * @api public + */ +GridStore.prototype.read = function(length, buffer, callback) { + var self = this; + + var args = Array.prototype.slice.call(arguments, 0); + callback = args.pop(); + length = args.length ? args.shift() : null; + buffer = args.length ? args.shift() : null; + + // The data is a c-terminated string and thus the length - 1 + var finalLength = length == null ? self.length - self.position : length; + var finalBuffer = buffer == null ? new Buffer(finalLength) : buffer; + // Add a index to buffer to keep track of writing position or apply current index + finalBuffer._index = buffer != null && buffer._index != null ? buffer._index : 0; + + if((self.currentChunk.length() - self.currentChunk.position + finalBuffer._index) >= finalLength) { + var slice = self.currentChunk.readSlice(finalLength - finalBuffer._index); + // Copy content to final buffer + slice.copy(finalBuffer, finalBuffer._index); + // Update internal position + self.position = self.position + finalBuffer.length; + // Check if we don't have a file at all + if(finalLength == 0 && finalBuffer.length == 0) return callback(new Error("File does not exist"), null); + // Else return data + callback(null, finalBuffer); + } else { + var slice = self.currentChunk.readSlice(self.currentChunk.length() - self.currentChunk.position); + // Copy content to final buffer + slice.copy(finalBuffer, finalBuffer._index); + // Update index position + finalBuffer._index += slice.length; + + // Load next chunk and read more + nthChunk(self, self.currentChunk.chunkNumber + 1, function(err, chunk) { + if(err) return callback(err); + + if(chunk.length() > 0) { + self.currentChunk = chunk; + self.read(length, finalBuffer, callback); + } else { + if (finalBuffer._index > 0) { + callback(null, finalBuffer) + } else { + callback(new Error("no chunks found for file, possibly corrupt"), null); + } + } + }); + } +} + +/** + * Retrieves the position of the read/write head of this file. + * + * @param {Function} callback This gets called after this method terminates. null is passed to the first parameter and the position is passed to the second. + * @return {null} + * @api public + */ +GridStore.prototype.tell = function(callback) { + callback(null, this.position); +}; + +/** + * Moves the read/write head to a new location. + * + * There are 3 signatures for this method + * + * Seek Location Modes + * - **GridStore.IO_SEEK_SET**, **(default)** set the position from the start of the file. + * - **GridStore.IO_SEEK_CUR**, set the position from the current position in the file. + * - **GridStore.IO_SEEK_END**, set the position from the end of the file. + * + * @param {Number} [position] the position to seek to + * @param {Number} [seekLocation] seek mode. Use one of the Seek Location modes. + * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. + * @return {null} + * @api public + */ +GridStore.prototype.seek = function(position, seekLocation, callback) { + var self = this; + + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + seekLocation = args.length ? args.shift() : null; + + var seekLocationFinal = seekLocation == null ? exports.GridStore.IO_SEEK_SET : seekLocation; + var finalPosition = position; + var targetPosition = 0; + + // Calculate the position + if(seekLocationFinal == exports.GridStore.IO_SEEK_CUR) { + targetPosition = self.position + finalPosition; + } else if(seekLocationFinal == exports.GridStore.IO_SEEK_END) { + targetPosition = self.length + finalPosition; + } else { + targetPosition = finalPosition; + } + + // Get the chunk + var newChunkNumber = Math.floor(targetPosition/self.chunkSize); + if(newChunkNumber != self.currentChunk.chunkNumber) { + var seekChunk = function() { + nthChunk(self, newChunkNumber, function(err, chunk) { + self.currentChunk = chunk; + self.position = targetPosition; + self.currentChunk.position = (self.position % self.chunkSize); + callback(err, self); + }); + }; + + if(self.mode[0] == 'w') { + self.currentChunk.save(function(err) { + if(err) return callback(err); + seekChunk(); + }); + } else { + seekChunk(); + } + } else { + self.position = targetPosition; + self.currentChunk.position = (self.position % self.chunkSize); + callback(null, self); + } +}; + +/** + * Verify if the file is at EOF. + * + * @return {Boolean} true if the read/write head is at the end of this file. + * @api public + */ +GridStore.prototype.eof = function() { + return this.position == this.length ? true : false; +}; + +/** + * Retrieves a single character from this file. + * + * @param {Function} callback this gets called after this method is executed. Passes null to the first parameter and the character read to the second or null to the second if the read/write head is at the end of the file. + * @return {null} + * @api public + */ +GridStore.prototype.getc = function(callback) { + var self = this; + + if(self.eof()) { + callback(null, null); + } else if(self.currentChunk.eof()) { + nthChunk(self, self.currentChunk.chunkNumber + 1, function(err, chunk) { + self.currentChunk = chunk; + self.position = self.position + 1; + callback(err, self.currentChunk.getc()); + }); + } else { + self.position = self.position + 1; + callback(null, self.currentChunk.getc()); + } +}; + +/** + * Writes a string to the file with a newline character appended at the end if + * the given string does not have one. + * + * @param {String} string the string to write. + * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. + * @return {null} + * @api public + */ +GridStore.prototype.puts = function(string, callback) { + var finalString = string.match(/\n$/) == null ? string + "\n" : string; + this.write(finalString, callback); +}; + +/** + * Returns read stream based on this GridStore file + * + * Events + * - **data** {function(item) {}} the data event triggers when a document is ready. + * - **end** {function() {}} the end event triggers when there is no more documents available. + * - **close** {function() {}} the close event triggers when the stream is closed. + * - **error** {function(err) {}} the error event triggers if an error happens. + * + * @param {Boolean} autoclose if true current GridStore will be closed when EOF and 'close' event will be fired + * @return {null} + * @api public + */ +GridStore.prototype.stream = function(autoclose) { + return new ReadStream(autoclose, this); +}; + +/** +* The collection to be used for holding the files and chunks collection. +* +* @classconstant DEFAULT_ROOT_COLLECTION +**/ +GridStore.DEFAULT_ROOT_COLLECTION = 'fs'; + +/** +* Default file mime type +* +* @classconstant DEFAULT_CONTENT_TYPE +**/ +GridStore.DEFAULT_CONTENT_TYPE = 'binary/octet-stream'; + +/** +* Seek mode where the given length is absolute. +* +* @classconstant IO_SEEK_SET +**/ +GridStore.IO_SEEK_SET = 0; + +/** +* Seek mode where the given length is an offset to the current read/write head. +* +* @classconstant IO_SEEK_CUR +**/ +GridStore.IO_SEEK_CUR = 1; + +/** +* Seek mode where the given length is an offset to the end of the file. +* +* @classconstant IO_SEEK_END +**/ +GridStore.IO_SEEK_END = 2; + +/** + * Checks if a file exists in the database. + * + * @param {Db} db the database to query. + * @param {String} name the name of the file to look for. + * @param {String} [rootCollection] the root collection that holds the files and chunks collection. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. + * @param {Function} callback this will be called after this method executes. Passes null to the first and passes true to the second if the file exists and false otherwise. + * @return {null} + * @api public + */ +GridStore.exist = function(db, fileIdObject, rootCollection, callback) { + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + rootCollection = args.length ? args.shift() : null; + + // Fetch collection + var rootCollectionFinal = rootCollection != null ? rootCollection : GridStore.DEFAULT_ROOT_COLLECTION; + db.collection(rootCollectionFinal + ".files", function(err, collection) { + if(err) return callback(err); + + // Build query + var query = (typeof fileIdObject == 'string' || Object.prototype.toString.call(fileIdObject) == '[object RegExp]' ) + ? {'filename':fileIdObject} + : {'_id':fileIdObject}; // Attempt to locate file + + collection.find(query, function(err, cursor) { + if(err) return callback(err); + + cursor.nextObject(function(err, item) { + if(err) return callback(err); + callback(null, item == null ? false : true); + }); + }); + }); +}; + +/** + * Gets the list of files stored in the GridFS. + * + * @param {Db} db the database to query. + * @param {String} [rootCollection] the root collection that holds the files and chunks collection. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. + * @param {Function} callback this will be called after this method executes. Passes null to the first and passes an array of strings containing the names of the files. + * @return {null} + * @api public + */ +GridStore.list = function(db, rootCollection, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = args.pop(); + rootCollection = args.length ? args.shift() : null; + options = args.length ? args.shift() : {}; + + // Ensure we have correct values + if(rootCollection != null && typeof rootCollection == 'object') { + options = rootCollection; + rootCollection = null; + } + + // Check if we are returning by id not filename + var byId = options['id'] != null ? options['id'] : false; + // Fetch item + var rootCollectionFinal = rootCollection != null ? rootCollection : GridStore.DEFAULT_ROOT_COLLECTION; + var items = []; + db.collection((rootCollectionFinal + ".files"), function(err, collection) { + if(err) return callback(err); + + collection.find(function(err, cursor) { + if(err) return callback(err); + + cursor.each(function(err, item) { + if(item != null) { + items.push(byId ? item._id : item.filename); + } else { + callback(err, items); + } + }); + }); + }); +}; + +/** + * Reads the contents of a file. + * + * This method has the following signatures + * + * (db, name, callback) + * (db, name, length, callback) + * (db, name, length, offset, callback) + * (db, name, length, offset, options, callback) + * + * @param {Db} db the database to query. + * @param {String} name the name of the file. + * @param {Number} [length] the size of data to read. + * @param {Number} [offset] the offset from the head of the file of which to start reading from. + * @param {Object} [options] the options for the file. + * @param {Function} callback this will be called after this method executes. A string with an error message will be passed to the first parameter when the length and offset combination exceeds the length of the file while an Error object will be passed if other forms of error occured, otherwise, a string is passed. The second parameter will contain the data read if successful or null if an error occured. + * @return {null} + * @api public + */ +GridStore.read = function(db, name, length, offset, options, callback) { + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + length = args.length ? args.shift() : null; + offset = args.length ? args.shift() : null; + options = args.length ? args.shift() : null; + + new GridStore(db, name, "r", options).open(function(err, gridStore) { + if(err) return callback(err); + // Make sure we are not reading out of bounds + if(offset && offset >= gridStore.length) return callback("offset larger than size of file", null); + if(length && length > gridStore.length) return callback("length is larger than the size of the file", null); + if(offset && length && (offset + length) > gridStore.length) return callback("offset and length is larger than the size of the file", null); + + if(offset != null) { + gridStore.seek(offset, function(err, gridStore) { + if(err) return callback(err); + gridStore.read(length, callback); + }); + } else { + gridStore.read(length, callback); + } + }); +}; + +/** + * Reads the data of this file. + * + * @param {Db} db the database to query. + * @param {String} name the name of the file. + * @param {String} [separator] the character to be recognized as the newline separator. + * @param {Object} [options] file options. + * @param {Function} callback this will be called after this method is executed. The first parameter will be null and the second parameter will contain an array of strings representing the entire data, each element representing a line including the separator character. + * @return {null} + * @api public + */ +GridStore.readlines = function(db, name, separator, options, callback) { + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + separator = args.length ? args.shift() : null; + options = args.length ? args.shift() : null; + + var finalSeperator = separator == null ? "\n" : separator; + new GridStore(db, name, "r", options).open(function(err, gridStore) { + if(err) return callback(err); + gridStore.readlines(finalSeperator, callback); + }); +}; + +/** + * Deletes the chunks and metadata information of a file from GridFS. + * + * @param {Db} db the database to interact with. + * @param {String|Array} names the name/names of the files to delete. + * @param {Object} [options] the options for the files. + * @callback {Function} this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. + * @return {null} + * @api public + */ +GridStore.unlink = function(db, names, options, callback) { + var self = this; + var args = Array.prototype.slice.call(arguments, 2); + callback = args.pop(); + options = args.length ? args.shift() : null; + + if(names.constructor == Array) { + var tc = 0; + for(var i = 0; i < names.length; i++) { + ++tc; + self.unlink(db, names[i], function(result) { + if(--tc == 0) { + callback(null, self); + } + }); + } + } else { + new GridStore(db, names, "w", options).open(function(err, gridStore) { + if(err) return callback(err); + deleteChunks(gridStore, function(err, result) { + if(err) return callback(err); + gridStore.collection(function(err, collection) { + if(err) return callback(err); + collection.remove({'_id':gridStore.fileId}, {safe:true}, function(err, collection) { + callback(err, self); + }); + }); + }); + }); + } +}; + +/** + * Returns the current chunksize of the file. + * + * @field chunkSize + * @type {Number} + * @getter + * @setter + * @property return number of bytes in the current chunkSize. + */ +Object.defineProperty(GridStore.prototype, "chunkSize", { enumerable: true + , get: function () { + return this.internalChunkSize; + } + , set: function(value) { + if(!(this.mode[0] == "w" && this.position == 0 && this.uploadDate == null)) { + this.internalChunkSize = this.internalChunkSize; + } else { + this.internalChunkSize = value; + } + } +}); + +/** + * The md5 checksum for this file. + * + * @field md5 + * @type {Number} + * @getter + * @setter + * @property return this files md5 checksum. + */ +Object.defineProperty(GridStore.prototype, "md5", { enumerable: true + , get: function () { + return this.internalMd5; + } +}); + +/** + * GridStore Streaming methods + * Handles the correct return of the writeable stream status + * @ignore + */ +Object.defineProperty(GridStore.prototype, "writable", { enumerable: true + , get: function () { + if(this._writeable == null) { + this._writeable = this.mode != null && this.mode.indexOf("w") != -1; + } + // Return the _writeable + return this._writeable; + } + , set: function(value) { + this._writeable = value; + } +}); + +/** + * Handles the correct return of the readable stream status + * @ignore + */ +Object.defineProperty(GridStore.prototype, "readable", { enumerable: true + , get: function () { + if(this._readable == null) { + this._readable = this.mode != null && this.mode.indexOf("r") != -1; + } + return this._readable; + } + , set: function(value) { + this._readable = value; + } +}); + +GridStore.prototype.paused; + +/** + * Handles the correct setting of encoding for the stream + * @ignore + */ +GridStore.prototype.setEncoding = fs.ReadStream.prototype.setEncoding; + +/** + * Handles the end events + * @ignore + */ +GridStore.prototype.end = function end(data) { + var self = this; + // allow queued data to write before closing + if(!this.writable) return; + this.writable = false; + + if(data) { + this._q.push(data); + } + + this.on('drain', function () { + self.close(function (err) { + if (err) return _error(self, err); + self.emit('close'); + }); + }); + + _flush(self); +} + +/** + * Handles the normal writes to gridstore + * @ignore + */ +var _writeNormal = function(self, data, close, callback) { + // If we have a buffer write it using the writeBuffer method + if(Buffer.isBuffer(data)) { + return writeBuffer(self, data, close, callback); + } else { + // Wrap the string in a buffer and write + return writeBuffer(self, new Buffer(data, 'binary'), close, callback); + } +} + +/** + * Writes some data. This method will work properly only if initialized with mode "w" or "w+". + * + * @param {String|Buffer} data the data to write. + * @param {Boolean} [close] closes this file after writing if set to true. + * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. + * @return {null} + * @api public + */ +GridStore.prototype.write = function write(data, close, callback) { + // If it's a normal write delegate the call + if(typeof close == 'function' || typeof callback == 'function') { + return _writeNormal(this, data, close, callback); + } + + // Otherwise it's a stream write + var self = this; + if (!this.writable) { + throw new Error('GridWriteStream is not writable'); + } + + // queue data until we open. + if (!this._opened) { + // Set up a queue to save data until gridstore object is ready + this._q = []; + _openStream(self); + this._q.push(data); + return false; + } + + // Push data to queue + this._q.push(data); + _flush(this); + // Return write successful + return true; +} + +/** + * Handles the destroy part of a stream + * @ignore + */ +GridStore.prototype.destroy = function destroy() { + // close and do not emit any more events. queued data is not sent. + if(!this.writable) return; + this.readable = false; + if(this.writable) { + this.writable = false; + this._q.length = 0; + this.emit('close'); + } +} + +/** + * Handles the destroySoon part of a stream + * @ignore + */ +GridStore.prototype.destroySoon = function destroySoon() { + // as soon as write queue is drained, destroy. + // may call destroy immediately if no data is queued. + if(!this._q.length) { + return this.destroy(); + } + this._destroying = true; +} + +/** + * Handles the pipe part of the stream + * @ignore + */ +GridStore.prototype.pipe = function(destination, options) { + var self = this; + // Open the gridstore + this.open(function(err, result) { + if(err) _errorRead(self, err); + if(!self.readable) return; + // Set up the pipe + self._pipe(destination, options); + // Emit the stream is open + self.emit('open'); + // Read from the stream + _read(self); + }) +} + +/** + * Internal module methods + * @ignore + */ +var _read = function _read(self) { + if (!self.readable || self.paused || self.reading) { + return; + } + + self.reading = true; + var stream = self._stream = self.stream(); + stream.paused = self.paused; + + stream.on('data', function (data) { + if (self._decoder) { + var str = self._decoder.write(data); + if (str.length) self.emit('data', str); + } else { + self.emit('data', data); + } + }); + + stream.on('end', function (data) { + self.emit('end', data); + }); + + stream.on('error', function (data) { + _errorRead(self, data); + }); + + stream.on('close', function (data) { + self.emit('close', data); + }); + + self.pause = function () { + // native doesn't always pause. + // bypass its pause() method to hack it + self.paused = stream.paused = true; + } + + self.resume = function () { + if(!self.paused) return; + + self.paused = false; + stream.resume(); + self.readable = stream.readable; + } + + self.destroy = function () { + self.readable = false; + stream.destroy(); + } +} + +/** + * pause + * @ignore + */ +GridStore.prototype.pause = function pause () { + // Overridden when the GridStore opens. + this.paused = true; +} + +/** + * resume + * @ignore + */ +GridStore.prototype.resume = function resume () { + // Overridden when the GridStore opens. + this.paused = false; +} + +/** + * Internal module methods + * @ignore + */ +var _flush = function _flush(self, _force) { + if (!self._opened) return; + if (!_force && self._flushing) return; + self._flushing = true; + + // write the entire q to gridfs + if (!self._q.length) { + self._flushing = false; + self.emit('drain'); + + if(self._destroying) { + self.destroy(); + } + return; + } + + self.write(self._q.shift(), function (err, store) { + if (err) return _error(self, err); + self.emit('progress', store.position); + _flush(self, true); + }); +} + +var _openStream = function _openStream (self) { + if(self._opening == true) return; + self._opening = true; + + // Open the store + self.open(function (err, gridstore) { + if (err) return _error(self, err); + self._opened = true; + self.emit('open'); + _flush(self); + }); +} + +var _error = function _error(self, err) { + self.destroy(); + self.emit('error', err); +} + +var _errorRead = function _errorRead (self, err) { + self.readable = false; + self.emit('error', err); +} + +/** + * @ignore + * @api private + */ +exports.GridStore = GridStore; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js new file mode 100644 index 0000000..8ff9973 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js @@ -0,0 +1,193 @@ +var Stream = require('stream').Stream, + timers = require('timers'), + util = require('util'); + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; +processor = process.nextTick + +/** + * ReadStream + * + * Returns a stream interface for the **file**. + * + * Events + * - **data** {function(item) {}} the data event triggers when a document is ready. + * - **end** {function() {}} the end event triggers when there is no more documents available. + * - **close** {function() {}} the close event triggers when the stream is closed. + * - **error** {function(err) {}} the error event triggers if an error happens. + * + * @class Represents a GridFS File Stream. + * @param {Boolean} autoclose automatically close file when the stream reaches the end. + * @param {GridStore} cursor a cursor object that the stream wraps. + * @return {ReadStream} + */ +function ReadStream(autoclose, gstore) { + if (!(this instanceof ReadStream)) return new ReadStream(autoclose, gstore); + Stream.call(this); + + this.autoclose = !!autoclose; + this.gstore = gstore; + + this.finalLength = gstore.length - gstore.position; + this.completedLength = 0; + this.currentChunkNumber = gstore.currentChunk.chunkNumber; + + this.paused = false; + this.readable = true; + this.pendingChunk = null; + this.executing = false; + + // Calculate the number of chunks + this.numberOfChunks = Math.ceil(gstore.length/gstore.chunkSize); + + // This seek start position inside the current chunk + this.seekStartPosition = gstore.position - (this.currentChunkNumber * gstore.chunkSize); + + var self = this; + processor(function() { + self._execute(); + }); +}; + +/** + * Inherit from Stream + * @ignore + * @api private + */ +ReadStream.prototype.__proto__ = Stream.prototype; + +/** + * Flag stating whether or not this stream is readable. + */ +ReadStream.prototype.readable; + +/** + * Flag stating whether or not this stream is paused. + */ +ReadStream.prototype.paused; + +/** + * @ignore + * @api private + */ +ReadStream.prototype._execute = function() { + if(this.paused === true || this.readable === false) { + return; + } + + var gstore = this.gstore; + var self = this; + // Set that we are executing + this.executing = true; + + var last = false; + var toRead = 0; + + if(gstore.currentChunk.chunkNumber >= (this.numberOfChunks - 1)) { + self.executing = false; + last = true; + } + + // Data setup + var data = null; + + // Read a slice (with seek set if none) + if(this.seekStartPosition > 0 && (gstore.currentChunk.length() - this.seekStartPosition) > 0) { + data = gstore.currentChunk.readSlice(gstore.currentChunk.length() - this.seekStartPosition); + this.seekStartPosition = 0; + } else { + data = gstore.currentChunk.readSlice(gstore.currentChunk.length()); + } + + // Return the data + if(data != null && gstore.currentChunk.chunkNumber == self.currentChunkNumber) { + self.currentChunkNumber = self.currentChunkNumber + 1; + self.completedLength += data.length; + self.pendingChunk = null; + self.emit("data", data); + } + + if(last === true) { + self.readable = false; + self.emit("end"); + + if(self.autoclose === true) { + if(gstore.mode[0] == "w") { + gstore.close(function(err, doc) { + if (err) { + self.emit("error", err); + return; + } + self.readable = false; + self.emit("close", doc); + }); + } else { + self.readable = false; + self.emit("close"); + } + } + } else { + gstore._nthChunk(gstore.currentChunk.chunkNumber + 1, function(err, chunk) { + if(err) { + self.readable = false; + self.emit("error", err); + self.executing = false; + return; + } + + self.pendingChunk = chunk; + if(self.paused === true) { + self.executing = false; + return; + } + + gstore.currentChunk = self.pendingChunk; + self._execute(); + }); + } +}; + +/** + * Pauses this stream, then no farther events will be fired. + * + * @ignore + * @api public + */ +ReadStream.prototype.pause = function() { + if(!this.executing) { + this.paused = true; + } +}; + +/** + * Destroys the stream, then no farther events will be fired. + * + * @ignore + * @api public + */ +ReadStream.prototype.destroy = function() { + this.readable = false; + // Emit close event + this.emit("close"); +}; + +/** + * Resumes this stream. + * + * @ignore + * @api public + */ +ReadStream.prototype.resume = function() { + if(this.paused === false || !this.readable) { + return; + } + + this.paused = false; + var self = this; + processor(function() { + self._execute(); + }); +}; + +exports.ReadStream = ReadStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js new file mode 100644 index 0000000..b2fdadf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js @@ -0,0 +1,66 @@ +try { + exports.BSONPure = require('bson').BSONPure; + exports.BSONNative = require('bson').BSONNative; +} catch(err) { + // do nothing +} + +[ 'commands/base_command' + , 'admin' + , 'collection' + , 'connection/read_preference' + , 'connection/connection' + , 'connection/server' + , 'connection/mongos' + , 'connection/repl_set/repl_set' + , 'mongo_client' + , 'cursor' + , 'db' + , 'mongo_client' + , 'gridfs/grid' + , 'gridfs/chunk' + , 'gridfs/gridstore'].forEach(function (path) { + var module = require('./' + path); + for (var i in module) { + exports[i] = module[i]; + } +}); + +// backwards compat +exports.ReplSetServers = exports.ReplSet; +// Add BSON Classes +exports.Binary = require('bson').Binary; +exports.Code = require('bson').Code; +exports.DBRef = require('bson').DBRef; +exports.Double = require('bson').Double; +exports.Long = require('bson').Long; +exports.MinKey = require('bson').MinKey; +exports.MaxKey = require('bson').MaxKey; +exports.ObjectID = require('bson').ObjectID; +exports.Symbol = require('bson').Symbol; +exports.Timestamp = require('bson').Timestamp; +// Add BSON Parser +exports.BSON = require('bson').BSONPure.BSON; + +// Get the Db object +var Db = require('./db').Db; +// Set up the connect function +var connect = Db.connect; +var obj = connect; +// Map all values to the exports value +for(var name in exports) { + obj[name] = exports[name]; +} + +// Add the pure and native backward compatible functions +exports.pure = exports.native = function() { + return obj; +} + +// Map all values to the exports value +for(var name in exports) { + connect[name] = exports[name]; +} + +// Set our exports to be the connect function +module.exports = connect; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js new file mode 100644 index 0000000..32362e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js @@ -0,0 +1,340 @@ +var Db = require('./db').Db + , Server = require('./connection/server').Server + , Mongos = require('./connection/mongos').Mongos + , ReplSet = require('./connection/repl_set/repl_set').ReplSet + , ReadPreference = require('./connection/read_preference').ReadPreference + , parse = require('./connection/url_parser').parse; + +/** + * Create a new MongoClient instance. + * + * Options + * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write + * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) + * - **fsync**, (Boolean, default:false) write waits for fsync before returning + * - **journal**, (Boolean, default:false) write waits for journal sync before returning + * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). + * - **native_parser** {Boolean, default:false}, use c++ bson parser. + * - **forceServerObjectId** {Boolean, default:false}, force server to create _id fields instead of client. + * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. + * - **serializeFunctions** {Boolean, default:false}, serialize functions. + * - **raw** {Boolean, default:false}, peform operations using raw bson buffers. + * - **recordQueryStats** {Boolean, default:false}, record query statistics during execution. + * - **retryMiliSeconds** {Number, default:5000}, number of miliseconds between retries. + * - **numberOfRetries** {Number, default:5}, number of retries off connection. + * + * Deprecated Options + * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. + * + * @class Represents a MongoClient + * @param {Object} serverConfig server config object. + * @param {Object} [options] additional options for the collection. + */ +function MongoClient(serverConfig, options) { + options = options == null ? {} : options; + // If no write concern is set set the default to w:1 + if(options != null && !options.journal && !options.w && !options.fsync) { + options.w = 1; + } + + // The internal db instance we are wrapping + this._db = new Db('test', serverConfig, options); +} + +/** + * Initialize the database connection. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the connected mongoclient or null if an error occured. + * @return {null} + * @api public + */ +MongoClient.prototype.open = function(callback) { + // Self reference + var self = this; + + this._db.open(function(err, db) { + if(err) return callback(err, null); + callback(null, self); + }) +} + +/** + * Close the current db connection, including all the child db instances. Emits close event if no callback is provided. + * + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the close method or null if an error occured. + * @return {null} + * @api public + */ +MongoClient.prototype.close = function(callback) { + this._db.close(callback); +} + +/** + * Create a new Db instance sharing the current socket connections. + * + * @param {String} dbName the name of the database we want to use. + * @return {Db} a db instance using the new database. + * @api public + */ +MongoClient.prototype.db = function(dbName) { + return this._db.db(dbName); +} + +/** + * Connect to MongoDB using a url as documented at + * + * docs.mongodb.org/manual/reference/connection-string/ + * + * Options + * - **uri_decode_auth** {Boolean, default:false} uri decode the user name and password for authentication + * - **db** {Object, default: null} a hash off options to set on the db object, see **Db constructor** + * - **server** {Object, default: null} a hash off options to set on the server objects, see **Server** constructor** + * - **replSet** {Object, default: null} a hash off options to set on the replSet object, see **ReplSet** constructor** + * - **mongos** {Object, default: null} a hash off options to set on the mongos object, see **Mongos** constructor** + * + * @param {String} url connection url for MongoDB. + * @param {Object} [options] optional options for insert command + * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the initialized db object or null if an error occured. + * @return {null} + * @api public + */ +// MongoClient.connect = function(url, options, callback) { +// if(typeof options == 'function') { +// callback = options; +// options = {}; +// } + +// Db.connect(url, options, function(err, db) { +// if(err) return callback(err, null); + +// if(db.options !== null && !db.options.safe && !db.options.journal +// && !db.options.w && !db.options.fsync && typeof db.options.w != 'number' +// && (db.options.safe == false && url.indexOf("safe=") == -1)) { +// db.options.w = 1; +// } + +// // Return the db +// callback(null, db); +// }); +// } + +MongoClient.connect = function(url, options, callback) { + var args = Array.prototype.slice.call(arguments, 1); + callback = typeof args[args.length - 1] == 'function' ? args.pop() : null; + options = args.length ? args.shift() : null; + options = options || {}; + + // Set default empty server options + var serverOptions = options.server || {}; + var mongosOptions = options.mongos || {}; + var replSetServersOptions = options.replSet || options.replSetServers || {}; + var dbOptions = options.db || {}; + + // If callback is null throw an exception + if(callback == null) throw new Error("no callback function provided"); + + // Parse the string + var object = parse(url, options); + // Merge in any options for db in options object + if(dbOptions) { + for(var name in dbOptions) object.db_options[name] = dbOptions[name]; + } + + // Added the url to the options + object.db_options.url = url; + + // Merge in any options for server in options object + if(serverOptions) { + for(var name in serverOptions) object.server_options[name] = serverOptions[name]; + } + + // Merge in any replicaset server options + if(replSetServersOptions) { + for(var name in replSetServersOptions) object.rs_options[name] = replSetServersOptions[name]; + } + + // Merge in any replicaset server options + if(mongosOptions) { + for(var name in mongosOptions) object.mongos_options[name] = mongosOptions[name]; + } + + // We need to ensure that the list of servers are only either direct members or mongos + // they cannot be a mix of monogs and mongod's + var totalNumberOfServers = object.servers.length; + var totalNumberOfMongosServers = 0; + var totalNumberOfMongodServers = 0; + var serverConfig = null; + var errorServers = {}; + + // Failure modes + if(object.servers.length == 0) throw new Error("connection string must contain at least one seed host"); + + // If we have no db setting for the native parser try to set the c++ one first + object.db_options.native_parser = _setNativeParser(object.db_options); + // If no auto_reconnect is set, set it to true as default for single servers + if(typeof object.server_options.auto_reconnect != 'boolean') { + object.server_options.auto_reconnect = true; + } + + // If we have more than a server, it could be replicaset or mongos list + // need to verify that it's one or the other and fail if it's a mix + // Connect to all servers and run ismaster + for(var i = 0; i < object.servers.length; i++) { + // Set up socket options + var _server_options = {poolSize:1, socketOptions:{connectTimeoutMS:1000}, auto_reconnect:false}; + + // Ensure we have ssl setup for the servers + if(object.rs_options.ssl) { + _server_options.ssl = object.rs_options.ssl; + _server_options.sslValidate = object.rs_options.sslValidate; + _server_options.sslCA = object.rs_options.sslCA; + _server_options.sslCert = object.rs_options.sslCert; + _server_options.sslKey = object.rs_options.sslKey; + _server_options.sslPass = object.rs_options.sslPass; + } else if(object.server_options.ssl) { + _server_options.ssl = object.server_options.ssl; + _server_options.sslValidate = object.server_options.sslValidate; + _server_options.sslCA = object.server_options.sslCA; + _server_options.sslCert = object.server_options.sslCert; + _server_options.sslKey = object.server_options.sslKey; + _server_options.sslPass = object.server_options.sslPass; + } + + // Set up the Server object + var _server = object.servers[i].domain_socket + ? new Server(object.servers[i].domain_socket, _server_options) + : new Server(object.servers[i].host, object.servers[i].port, _server_options); + + var connectFunction = function(__server) { + // Attempt connect + new Db(object.dbName, __server, {safe:false, native_parser:false}).open(function(err, db) { + // Update number of servers + totalNumberOfServers = totalNumberOfServers - 1; + // If no error do the correct checks + if(!err) { + // Close the connection + db.close(true); + var isMasterDoc = db.serverConfig.isMasterDoc; + // Check what type of server we have + if(isMasterDoc.setName) totalNumberOfMongodServers++; + if(isMasterDoc.msg && isMasterDoc.msg == "isdbgrid") totalNumberOfMongosServers++; + } else { + errorServers[__server.host + ":" + __server.port] = __server; + } + + if(totalNumberOfServers == 0) { + // If we have a mix of mongod and mongos, throw an error + if(totalNumberOfMongosServers > 0 && totalNumberOfMongodServers > 0) + return callback(new Error("cannot combine a list of replicaset seeds and mongos seeds")); + + if(totalNumberOfMongodServers == 0 && object.servers.length == 1) { + var obj = object.servers[0]; + serverConfig = obj.domain_socket ? + new Server(obj.domain_socket, object.server_options) + : new Server(obj.host, obj.port, object.server_options); + } else if(totalNumberOfMongodServers > 0 || totalNumberOfMongosServers > 0) { + var finalServers = object.servers + .filter(function(serverObj) { + return errorServers[serverObj.host + ":" + serverObj.port] == null; + }) + .map(function(serverObj) { + return new Server(serverObj.host, serverObj.port, object.server_options); + }); + // Clean out any error servers + errorServers = {}; + // Set up the final configuration + if(totalNumberOfMongodServers > 0) { + serverConfig = new ReplSet(finalServers, object.rs_options); + } else { + serverConfig = new Mongos(finalServers, object.mongos_options); + } + } + + if(serverConfig == null) return callback(new Error("Could not locate any valid servers in initial seed list")); + // Set up all options etc and connect to the database + _finishConnecting(serverConfig, object, options, callback) + } + }); + } + + // Wrap the context of the call + connectFunction(_server); + } +} + +var _setNativeParser = function(db_options) { + if(typeof db_options.native_parser == 'boolean') return db_options.native_parser; + + try { + require('bson').BSONNative.BSON; + return true; + } catch(err) { + return false; + } +} + +var _finishConnecting = function(serverConfig, object, options, callback) { + // Safe settings + var safe = {}; + // Build the safe parameter if needed + if(object.db_options.journal) safe.j = object.db_options.journal; + if(object.db_options.w) safe.w = object.db_options.w; + if(object.db_options.fsync) safe.fsync = object.db_options.fsync; + if(object.db_options.wtimeoutMS) safe.wtimeout = object.db_options.wtimeoutMS; + + // If we have a read Preference set + if(object.db_options.read_preference) { + var readPreference = new ReadPreference(object.db_options.read_preference); + // If we have the tags set up + if(object.db_options.read_preference_tags) + readPreference = new ReadPreference(object.db_options.read_preference, object.db_options.read_preference_tags); + // Add the read preference + object.db_options.readPreference = readPreference; + } + + // No safe mode if no keys + if(Object.keys(safe).length == 0) safe = false; + + // Add the safe object + object.db_options.safe = safe; + + // Set up the db options + var db = new Db(object.dbName, serverConfig, object.db_options); + // Open the db + db.open(function(err, db){ + if(err) return callback(err, null); + + if(db.options !== null && !db.options.safe && !db.options.journal + && !db.options.w && !db.options.fsync && typeof db.options.w != 'number' + && (db.options.safe == false && object.db_options.url.indexOf("safe=") == -1)) { + db.options.w = 1; + } + + if(err == null && object.auth){ + // What db to authenticate against + var authentication_db = db; + if(object.db_options && object.db_options.authSource) { + authentication_db = db.db(object.db_options.authSource); + } + + // Build options object + var options = {}; + if(object.db_options.authMechanism) options.authMechanism = object.db_options.authMechanism; + + // Authenticate + authentication_db.authenticate(object.auth.user, object.auth.password, options, function(err, success){ + if(success){ + callback(null, db); + } else { + if(db) db.close(); + callback(err ? err : new Error('Could not authenticate user ' + auth[0]), null); + } + }); + } else { + callback(err, db); + } + }); +} + + +exports.MongoClient = MongoClient; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js new file mode 100644 index 0000000..b27b812 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js @@ -0,0 +1,144 @@ +var Long = require('bson').Long + , timers = require('timers'); + +// Set processor, setImmediate if 0.10 otherwise nextTick +var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; + +/** + Reply message from mongo db +**/ +var MongoReply = exports.MongoReply = function() { + this.documents = []; + this.index = 0; +}; + +MongoReply.prototype.parseHeader = function(binary_reply, bson) { + // Unpack the standard header first + this.messageLength = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + this.index = this.index + 4; + // Fetch the request id for this reply + this.requestId = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + this.index = this.index + 4; + // Fetch the id of the request that triggered the response + this.responseTo = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + // Skip op-code field + this.index = this.index + 4 + 4; + // Unpack the reply message + this.responseFlag = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + this.index = this.index + 4; + // Unpack the cursor id (a 64 bit long integer) + var low_bits = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + this.index = this.index + 4; + var high_bits = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + this.index = this.index + 4; + this.cursorId = new Long(low_bits, high_bits); + // Unpack the starting from + this.startingFrom = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + this.index = this.index + 4; + // Unpack the number of objects returned + this.numberReturned = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + this.index = this.index + 4; +} + +MongoReply.prototype.parseBody = function(binary_reply, bson, raw, callback) { + raw = raw == null ? false : raw; + // Just set a doc limit for deserializing + var docLimitSize = 1024*20; + + // If our message length is very long, let's switch to process.nextTick for messages + if(this.messageLength > docLimitSize) { + var batchSize = this.numberReturned; + this.documents = new Array(this.numberReturned); + + // Just walk down until we get a positive number >= 1 + for(var i = 50; i > 0; i--) { + if((this.numberReturned/i) >= 1) { + batchSize = i; + break; + } + } + + // Actual main creator of the processFunction setting internal state to control the flow + var parseFunction = function(_self, _binary_reply, _batchSize, _numberReturned) { + var object_index = 0; + // Internal loop process that will use nextTick to ensure we yield some time + var processFunction = function() { + // Adjust batchSize if we have less results left than batchsize + if((_numberReturned - object_index) < _batchSize) { + _batchSize = _numberReturned - object_index; + } + + // If raw just process the entries + if(raw) { + // Iterate over the batch + for(var i = 0; i < _batchSize; i++) { + // Are we done ? + if(object_index <= _numberReturned) { + // Read the size of the bson object + var bsonObjectSize = _binary_reply[_self.index] | _binary_reply[_self.index + 1] << 8 | _binary_reply[_self.index + 2] << 16 | _binary_reply[_self.index + 3] << 24; + // If we are storing the raw responses to pipe straight through + _self.documents[object_index] = binary_reply.slice(_self.index, _self.index + bsonObjectSize); + // Adjust binary index to point to next block of binary bson data + _self.index = _self.index + bsonObjectSize; + // Update number of docs parsed + object_index = object_index + 1; + } + } + } else { + try { + // Parse documents + _self.index = bson.deserializeStream(binary_reply, _self.index, _batchSize, _self.documents, object_index); + // Adjust index + object_index = object_index + _batchSize; + } catch (err) { + return callback(err); + } + } + + // If we have more documents process NextTick + if(object_index < _numberReturned) { + processor(processFunction); + } else { + callback(null); + } + } + + // Return the process function + return processFunction; + }(this, binary_reply, batchSize, this.numberReturned)(); + } else { + try { + // Let's unpack all the bson documents, deserialize them and store them + for(var object_index = 0; object_index < this.numberReturned; object_index++) { + // Read the size of the bson object + var bsonObjectSize = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; + // If we are storing the raw responses to pipe straight through + if(raw) { + // Deserialize the object and add to the documents array + this.documents.push(binary_reply.slice(this.index, this.index + bsonObjectSize)); + } else { + // Deserialize the object and add to the documents array + this.documents.push(bson.deserialize(binary_reply.slice(this.index, this.index + bsonObjectSize))); + } + // Adjust binary index to point to next block of binary bson data + this.index = this.index + bsonObjectSize; + } + } catch(err) { + return callback(err); + } + + // No error return + callback(null); + } +} + +MongoReply.prototype.is_error = function(){ + if(this.documents.length == 1) { + return this.documents[0].ok == 1 ? false : true; + } + return false; +}; + +MongoReply.prototype.error_message = function() { + return this.documents.length == 1 && this.documents[0].ok == 1 ? '' : this.documents[0].errmsg; +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js new file mode 100644 index 0000000..087789d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js @@ -0,0 +1,137 @@ +/** + * Sort functions, Normalize and prepare sort parameters + */ +var formatSortValue = exports.formatSortValue = function(sortDirection) { + var value = ("" + sortDirection).toLowerCase(); + + switch (value) { + case 'ascending': + case 'asc': + case '1': + return 1; + case 'descending': + case 'desc': + case '-1': + return -1; + default: + throw new Error("Illegal sort clause, must be of the form " + + "[['field1', '(ascending|descending)'], " + + "['field2', '(ascending|descending)']]"); + } +}; + +var formattedOrderClause = exports.formattedOrderClause = function(sortValue) { + var orderBy = {}; + + if (Array.isArray(sortValue)) { + for(var i = 0; i < sortValue.length; i++) { + if(sortValue[i].constructor == String) { + orderBy[sortValue[i]] = 1; + } else { + orderBy[sortValue[i][0]] = formatSortValue(sortValue[i][1]); + } + } + } else if(Object.prototype.toString.call(sortValue) === '[object Object]') { + orderBy = sortValue; + } else if (sortValue.constructor == String) { + orderBy[sortValue] = 1; + } else { + throw new Error("Illegal sort clause, must be of the form " + + "[['field1', '(ascending|descending)'], ['field2', '(ascending|descending)']]"); + } + + return orderBy; +}; + +exports.encodeInt = function(value) { + var buffer = new Buffer(4); + buffer[3] = (value >> 24) & 0xff; + buffer[2] = (value >> 16) & 0xff; + buffer[1] = (value >> 8) & 0xff; + buffer[0] = value & 0xff; + return buffer; +} + +exports.encodeIntInPlace = function(value, buffer, index) { + buffer[index + 3] = (value >> 24) & 0xff; + buffer[index + 2] = (value >> 16) & 0xff; + buffer[index + 1] = (value >> 8) & 0xff; + buffer[index] = value & 0xff; +} + +exports.encodeCString = function(string) { + var buf = new Buffer(string, 'utf8'); + return [buf, new Buffer([0])]; +} + +exports.decodeUInt32 = function(array, index) { + return array[index] | array[index + 1] << 8 | array[index + 2] << 16 | array[index + 3] << 24; +} + +// Decode the int +exports.decodeUInt8 = function(array, index) { + return array[index]; +} + +/** + * Context insensitive type checks + */ + +var toString = Object.prototype.toString; + +exports.isObject = function (arg) { + return '[object Object]' == toString.call(arg) +} + +exports.isArray = function (arg) { + return Array.isArray(arg) || + 'object' == typeof arg && '[object Array]' == toString.call(arg) +} + +exports.isDate = function (arg) { + return 'object' == typeof arg && '[object Date]' == toString.call(arg) +} + +exports.isRegExp = function (arg) { + return 'object' == typeof arg && '[object RegExp]' == toString.call(arg) +} + +/** + * Wrap a Mongo error document in an Error instance + * @ignore + * @api private + */ +exports.toError = function(error) { + if (error instanceof Error) return error; + + var msg = error.err || error.errmsg || error; + var e = new Error(msg); + e.name = 'MongoError'; + + // Get all object keys + var keys = typeof error == 'object' + ? Object.keys(error) + : []; + + for(var i = 0; i < keys.length; i++) { + e[keys[i]] = error[keys[i]]; + } + + return e; +} + +/** + * Convert a single level object to an array + * @ignore + * @api private + */ +exports.objectToArray = function(object) { + var list = []; + + for(var name in object) { + list.push(object[name]) + } + + return list; +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml new file mode 100644 index 0000000..94740d0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.6 + - 0.8 + - 0.9 # development version of 0.8, may be unstable \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile new file mode 100644 index 0000000..77ce4e0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile @@ -0,0 +1,19 @@ +NODE = node +NPM = npm +NODEUNIT = node_modules/nodeunit/bin/nodeunit + +all: clean node_gyp + +test: clean node_gyp + npm test + +node_gyp: clean + node-gyp configure build + +clean: + node-gyp clean + +browserify: + node_modules/.bin/onejs build browser_build/package.json browser_build/bson.js + +.PHONY: all diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md new file mode 100644 index 0000000..73892e2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md @@ -0,0 +1 @@ +A JS/C++ Bson parser for node, used in the MongoDB Native driver \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js new file mode 100644 index 0000000..45a1111 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js @@ -0,0 +1,130 @@ +// var BSON = require('../../lib/mongodb').BSONNative.BSON, +// ObjectID = require('../../lib/mongodb').BSONNative.ObjectID, +// Code = require('../../lib/mongodb').BSONNative.Code, +// Long = require('../../lib/mongodb').BSONNative.Long, +// Binary = require('../../lib/mongodb').BSONNative.Binary, +// debug = require('util').debug, +// inspect = require('util').inspect, +// +// Long = require('../../lib/mongodb').Long, +// ObjectID = require('../../lib/mongodb').ObjectID, +// Binary = require('../../lib/mongodb').Binary, +// Code = require('../../lib/mongodb').Code, +// DBRef = require('../../lib/mongodb').DBRef, +// Symbol = require('../../lib/mongodb').Symbol, +// Double = require('../../lib/mongodb').Double, +// MaxKey = require('../../lib/mongodb').MaxKey, +// MinKey = require('../../lib/mongodb').MinKey, +// Timestamp = require('../../lib/mongodb').Timestamp; + + +// var BSON = require('../../lib/mongodb').BSONPure.BSON, +// ObjectID = require('../../lib/mongodb').BSONPure.ObjectID, +// Code = require('../../lib/mongodb').BSONPure.Code, +// Long = require('../../lib/mongodb').BSONPure.Long, +// Binary = require('../../lib/mongodb').BSONPure.Binary; + +var BSON = require('../lib/bson').BSONNative.BSON, + Long = require('../lib/bson').Long, + ObjectID = require('../lib/bson').ObjectID, + Binary = require('../lib/bson').Binary, + Code = require('../lib/bson').Code, + DBRef = require('../lib/bson').DBRef, + Symbol = require('../lib/bson').Symbol, + Double = require('../lib/bson').Double, + MaxKey = require('../lib/bson').MaxKey, + MinKey = require('../lib/bson').MinKey, + Timestamp = require('../lib/bson').Timestamp; + + // console.dir(require('../lib/bson')) + +var COUNT = 1000; +var COUNT = 100; + +var object = { + string: "Strings are great", + decimal: 3.14159265, + bool: true, + integer: 5, + date: new Date(), + double: new Double(1.4), + id: new ObjectID(), + min: new MinKey(), + max: new MaxKey(), + symbol: new Symbol('hello'), + long: Long.fromNumber(100), + bin: new Binary(new Buffer(100)), + + subObject: { + moreText: "Bacon ipsum dolor sit amet cow pork belly rump ribeye pastrami andouille. Tail hamburger pork belly, drumstick flank salami t-bone sirloin pork chop ribeye ham chuck pork loin shankle. Ham fatback pork swine, sirloin shankle short loin andouille shank sausage meatloaf drumstick. Pig chicken cow bresaola, pork loin jerky meatball tenderloin brisket strip steak jowl spare ribs. Biltong sirloin pork belly boudin, bacon pastrami rump chicken. Jowl rump fatback, biltong bacon t-bone turkey. Turkey pork loin boudin, tenderloin jerky beef ribs pastrami spare ribs biltong pork chop beef.", + longKeylongKeylongKeylongKeylongKeylongKey: "Pork belly boudin shoulder ribeye pork chop brisket biltong short ribs. Salami beef pork belly, t-bone sirloin meatloaf tail jowl spare ribs. Sirloin biltong bresaola cow turkey. Biltong fatback meatball, bresaola tail shankle turkey pancetta ham ribeye flank bacon jerky pork chop. Boudin sirloin shoulder, salami swine flank jerky t-bone pork chop pork beef tongue. Bresaola ribeye jerky andouille. Ribeye ground round sausage biltong beef ribs chuck, shank hamburger chicken short ribs spare ribs tenderloin meatloaf pork loin." + }, + + subArray: [1,2,3,4,5,6,7,8,9,10], + anotherString: "another string", + code: new Code("function() {}", {i:1}) +} + +// Number of objects +var numberOfObjects = 10000; +var bson = new BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); +console.log("---------------------- 1") +var s = new Date() +// Object serialized +for(var i = 0; i < numberOfObjects; i++) { + objectBSON = bson.serialize(object, null, true) +} +console.log("====================== " + (new Date().getTime() - s.getTime()) + " :: " + ((new Date().getTime() - s.getTime()))/numberOfObjects) + +console.log("---------------------- 2") +var s = new Date() +// Object serialized +for(var i = 0; i < numberOfObjects; i++) { + bson.deserialize(objectBSON); +} +console.log("====================== " + (new Date().getTime() - s.getTime()) + " :: " + ((new Date().getTime() - s.getTime()))/numberOfObjects) + +// // Buffer With copies of the objectBSON +// var data = new Buffer(objectBSON.length * numberOfObjects); +// var index = 0; +// +// // Copy the buffer 1000 times to create a strea m of objects +// for(var i = 0; i < numberOfObjects; i++) { +// // Copy data +// objectBSON.copy(data, index); +// // Adjust index +// index = index + objectBSON.length; +// } +// +// // console.log("-----------------------------------------------------------------------------------") +// // console.dir(objectBSON) +// +// var x, start, end, j +// var objectBSON, objectJSON +// +// // Allocate the return array (avoid concatinating everything) +// var results = new Array(numberOfObjects); +// +// console.log(COUNT + "x (objectBSON = BSON.serialize(object))") +// start = new Date +// +// // var objects = BSON.deserializeStream(data, 0, numberOfObjects); +// // console.log("----------------------------------------------------------------------------------- 0") +// // var objects = BSON.deserialize(data); +// // console.log("----------------------------------------------------------------------------------- 1") +// // console.dir(objects) +// +// for (j=COUNT; --j>=0; ) { +// var nextIndex = BSON.deserializeStream(data, 0, numberOfObjects, results, 0); +// } +// +// end = new Date +// var opsprsecond = COUNT / ((end - start)/1000); +// console.log("bson size (bytes): ", objectBSON.length); +// console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec"); +// console.log("MB/s = " + ((opsprsecond*objectBSON.length)/1024)); +// +// // console.dir(nextIndex) +// // console.dir(results) + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp new file mode 100644 index 0000000..42445d3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp @@ -0,0 +1,17 @@ +{ + 'targets': [ + { + 'target_name': 'bson', + 'sources': [ 'ext/bson.cc' ], + 'cflags!': [ '-fno-exceptions' ], + 'cflags_cc!': [ '-fno-exceptions' ], + 'conditions': [ + ['OS=="mac"', { + 'xcode_settings': { + 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES' + } + }] + ] + } + ] +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js new file mode 100644 index 0000000..e7a1c74 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js @@ -0,0 +1,4814 @@ +var bson = (function(){ + + var pkgmap = {}, + global = {}, + nativeRequire = typeof require != 'undefined' && require, + lib, ties, main, async; + + function exports(){ return main(); }; + + exports.main = exports; + exports.module = module; + exports.packages = pkgmap; + exports.pkg = pkg; + exports.require = function require(uri){ return pkgmap.main.index.require(uri); }; + + + ties = {}; + + aliases = {}; + + + return exports; + +function join() { + return normalize(Array.prototype.join.call(arguments, "/")); +}; + +function normalize(path) { + var ret = [], parts = path.split('/'), cur, prev; + + var i = 0, l = parts.length-1; + for (; i <= l; i++) { + cur = parts[i]; + + if (cur === "." && prev !== undefined) continue; + + if (cur === ".." && ret.length && prev !== ".." && prev !== "." && prev !== undefined) { + ret.pop(); + prev = ret.slice(-1)[0]; + } else { + if (prev === ".") ret.pop(); + ret.push(cur); + prev = cur; + } + } + + return ret.join("/"); +}; + +function dirname(path) { + return path && path.substr(0, path.lastIndexOf("/")) || "."; +}; + +function findModule(workingModule, uri){ + var moduleId = join(dirname(workingModule.id), uri).replace(/\.js$/, ''), + moduleIndexId = join(moduleId, 'index'), + pkg = workingModule.pkg, + module; + + var i = pkg.modules.length, + id; + + while(i-->0){ + id = pkg.modules[i].id; + if(id==moduleId || id == moduleIndexId){ + module = pkg.modules[i]; + break; + } + } + + return module; +} + +function newRequire(callingModule){ + function require(uri){ + var module, pkg; + + if(/^\./.test(uri)){ + module = findModule(callingModule, uri); + } else if ( ties && ties.hasOwnProperty( uri ) ) { + return ties[uri]; + } else if ( aliases && aliases.hasOwnProperty( uri ) ) { + return require(aliases[uri]); + } else { + pkg = pkgmap[uri]; + + if(!pkg && nativeRequire){ + try { + pkg = nativeRequire(uri); + } catch (nativeRequireError) {} + + if(pkg) return pkg; + } + + if(!pkg){ + throw new Error('Cannot find module "'+uri+'" @[module: '+callingModule.id+' package: '+callingModule.pkg.name+']'); + } + + module = pkg.index; + } + + if(!module){ + throw new Error('Cannot find module "'+uri+'" @[module: '+callingModule.id+' package: '+callingModule.pkg.name+']'); + } + + module.parent = callingModule; + return module.call(); + }; + + + return require; +} + + +function module(parent, id, wrapper){ + var mod = { pkg: parent, id: id, wrapper: wrapper }, + cached = false; + + mod.exports = {}; + mod.require = newRequire(mod); + + mod.call = function(){ + if(cached) { + return mod.exports; + } + + cached = true; + + global.require = mod.require; + + mod.wrapper(mod, mod.exports, global, global.require); + return mod.exports; + }; + + if(parent.mainModuleId == mod.id){ + parent.index = mod; + parent.parents.length === 0 && ( main = mod.call ); + } + + parent.modules.push(mod); +} + +function pkg(/* [ parentId ...], wrapper */){ + var wrapper = arguments[ arguments.length - 1 ], + parents = Array.prototype.slice.call(arguments, 0, arguments.length - 1), + ctx = wrapper(parents); + + + pkgmap[ctx.name] = ctx; + + arguments.length == 1 && ( pkgmap.main = ctx ); + + return function(modules){ + var id; + for(id in modules){ + module(ctx, id, modules[id]); + } + }; +} + + +}(this)); + +bson.pkg(function(parents){ + + return { + 'name' : 'bson', + 'mainModuleId' : 'bson', + 'modules' : [], + 'parents' : parents + }; + +})({ 'binary': function(module, exports, global, require, undefined){ + /** + * Module dependencies. + */ +if(typeof window === 'undefined') { + var Buffer = require('buffer').Buffer; // TODO just use global Buffer +} + +// Binary default subtype +var BSON_BINARY_SUBTYPE_DEFAULT = 0; + +/** + * @ignore + * @api private + */ +var writeStringToArray = function(data) { + // Create a buffer + var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(data.length)) : new Array(data.length); + // Write the content to the buffer + for(var i = 0; i < data.length; i++) { + buffer[i] = data.charCodeAt(i); + } + // Write the string to the buffer + return buffer; +} + +/** + * Convert Array ot Uint8Array to Binary String + * + * @ignore + * @api private + */ +var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { + var result = ""; + for(var i = startIndex; i < endIndex; i++) { + result = result + String.fromCharCode(byteArray[i]); + } + return result; +}; + +/** + * A class representation of the BSON Binary type. + * + * Sub types + * - **BSON.BSON_BINARY_SUBTYPE_DEFAULT**, default BSON type. + * - **BSON.BSON_BINARY_SUBTYPE_FUNCTION**, BSON function type. + * - **BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY**, BSON byte array type. + * - **BSON.BSON_BINARY_SUBTYPE_UUID**, BSON uuid type. + * - **BSON.BSON_BINARY_SUBTYPE_MD5**, BSON md5 type. + * - **BSON.BSON_BINARY_SUBTYPE_USER_DEFINED**, BSON user defined type. + * + * @class Represents the Binary BSON type. + * @param {Buffer} buffer a buffer object containing the binary data. + * @param {Number} [subType] the option binary type. + * @return {Grid} + */ +function Binary(buffer, subType) { + if(!(this instanceof Binary)) return new Binary(buffer, subType); + + this._bsontype = 'Binary'; + + if(buffer instanceof Number) { + this.sub_type = buffer; + this.position = 0; + } else { + this.sub_type = subType == null ? BSON_BINARY_SUBTYPE_DEFAULT : subType; + this.position = 0; + } + + if(buffer != null && !(buffer instanceof Number)) { + // Only accept Buffer, Uint8Array or Arrays + if(typeof buffer == 'string') { + // Different ways of writing the length of the string for the different types + if(typeof Buffer != 'undefined') { + this.buffer = new Buffer(buffer); + } else if(typeof Uint8Array != 'undefined' || (Object.prototype.toString.call(buffer) == '[object Array]')) { + this.buffer = writeStringToArray(buffer); + } else { + throw new Error("only String, Buffer, Uint8Array or Array accepted"); + } + } else { + this.buffer = buffer; + } + this.position = buffer.length; + } else { + if(typeof Buffer != 'undefined') { + this.buffer = new Buffer(Binary.BUFFER_SIZE); + } else if(typeof Uint8Array != 'undefined'){ + this.buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE)); + } else { + this.buffer = new Array(Binary.BUFFER_SIZE); + } + // Set position to start of buffer + this.position = 0; + } +}; + +/** + * Updates this binary with byte_value. + * + * @param {Character} byte_value a single byte we wish to write. + * @api public + */ +Binary.prototype.put = function put(byte_value) { + // If it's a string and a has more than one character throw an error + if(byte_value['length'] != null && typeof byte_value != 'number' && byte_value.length != 1) throw new Error("only accepts single character String, Uint8Array or Array"); + if(typeof byte_value != 'number' && byte_value < 0 || byte_value > 255) throw new Error("only accepts number in a valid unsigned byte range 0-255"); + + // Decode the byte value once + var decoded_byte = null; + if(typeof byte_value == 'string') { + decoded_byte = byte_value.charCodeAt(0); + } else if(byte_value['length'] != null) { + decoded_byte = byte_value[0]; + } else { + decoded_byte = byte_value; + } + + if(this.buffer.length > this.position) { + this.buffer[this.position++] = decoded_byte; + } else { + if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { + // Create additional overflow buffer + var buffer = new Buffer(Binary.BUFFER_SIZE + this.buffer.length); + // Combine the two buffers together + this.buffer.copy(buffer, 0, 0, this.buffer.length); + this.buffer = buffer; + this.buffer[this.position++] = decoded_byte; + } else { + var buffer = null; + // Create a new buffer (typed or normal array) + if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { + buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE + this.buffer.length)); + } else { + buffer = new Array(Binary.BUFFER_SIZE + this.buffer.length); + } + + // We need to copy all the content to the new array + for(var i = 0; i < this.buffer.length; i++) { + buffer[i] = this.buffer[i]; + } + + // Reassign the buffer + this.buffer = buffer; + // Write the byte + this.buffer[this.position++] = decoded_byte; + } + } +}; + +/** + * Writes a buffer or string to the binary. + * + * @param {Buffer|String} string a string or buffer to be written to the Binary BSON object. + * @param {Number} offset specify the binary of where to write the content. + * @api public + */ +Binary.prototype.write = function write(string, offset) { + offset = typeof offset == 'number' ? offset : this.position; + + // If the buffer is to small let's extend the buffer + if(this.buffer.length < offset + string.length) { + var buffer = null; + // If we are in node.js + if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { + buffer = new Buffer(this.buffer.length + string.length); + this.buffer.copy(buffer, 0, 0, this.buffer.length); + } else if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { + // Create a new buffer + buffer = new Uint8Array(new ArrayBuffer(this.buffer.length + string.length)) + // Copy the content + for(var i = 0; i < this.position; i++) { + buffer[i] = this.buffer[i]; + } + } + + // Assign the new buffer + this.buffer = buffer; + } + + if(typeof Buffer != 'undefined' && Buffer.isBuffer(string) && Buffer.isBuffer(this.buffer)) { + string.copy(this.buffer, offset, 0, string.length); + this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; + // offset = string.length + } else if(typeof Buffer != 'undefined' && typeof string == 'string' && Buffer.isBuffer(this.buffer)) { + this.buffer.write(string, 'binary', offset); + this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; + // offset = string.length; + } else if(Object.prototype.toString.call(string) == '[object Uint8Array]' + || Object.prototype.toString.call(string) == '[object Array]' && typeof string != 'string') { + for(var i = 0; i < string.length; i++) { + this.buffer[offset++] = string[i]; + } + + this.position = offset > this.position ? offset : this.position; + } else if(typeof string == 'string') { + for(var i = 0; i < string.length; i++) { + this.buffer[offset++] = string.charCodeAt(i); + } + + this.position = offset > this.position ? offset : this.position; + } +}; + +/** + * Reads **length** bytes starting at **position**. + * + * @param {Number} position read from the given position in the Binary. + * @param {Number} length the number of bytes to read. + * @return {Buffer} + * @api public + */ +Binary.prototype.read = function read(position, length) { + length = length && length > 0 + ? length + : this.position; + + // Let's return the data based on the type we have + if(this.buffer['slice']) { + return this.buffer.slice(position, position + length); + } else { + // Create a buffer to keep the result + var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(length)) : new Array(length); + for(var i = 0; i < length; i++) { + buffer[i] = this.buffer[position++]; + } + } + // Return the buffer + return buffer; +}; + +/** + * Returns the value of this binary as a string. + * + * @return {String} + * @api public + */ +Binary.prototype.value = function value(asRaw) { + asRaw = asRaw == null ? false : asRaw; + + // If it's a node.js buffer object + if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { + return asRaw ? this.buffer.slice(0, this.position) : this.buffer.toString('binary', 0, this.position); + } else { + if(asRaw) { + // we support the slice command use it + if(this.buffer['slice'] != null) { + return this.buffer.slice(0, this.position); + } else { + // Create a new buffer to copy content to + var newBuffer = Object.prototype.toString.call(this.buffer) == '[object Uint8Array]' ? new Uint8Array(new ArrayBuffer(this.position)) : new Array(this.position); + // Copy content + for(var i = 0; i < this.position; i++) { + newBuffer[i] = this.buffer[i]; + } + // Return the buffer + return newBuffer; + } + } else { + return convertArraytoUtf8BinaryString(this.buffer, 0, this.position); + } + } +}; + +/** + * Length. + * + * @return {Number} the length of the binary. + * @api public + */ +Binary.prototype.length = function length() { + return this.position; +}; + +/** + * @ignore + * @api private + */ +Binary.prototype.toJSON = function() { + return this.buffer != null ? this.buffer.toString('base64') : ''; +} + +/** + * @ignore + * @api private + */ +Binary.prototype.toString = function(format) { + return this.buffer != null ? this.buffer.slice(0, this.position).toString(format) : ''; +} + +Binary.BUFFER_SIZE = 256; + +/** + * Default BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_DEFAULT = 0; +/** + * Function BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_FUNCTION = 1; +/** + * Byte Array BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_BYTE_ARRAY = 2; +/** + * OLD UUID BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_UUID_OLD = 3; +/** + * UUID BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_UUID = 4; +/** + * MD5 BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_MD5 = 5; +/** + * User BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_USER_DEFINED = 128; + +/** + * Expose. + */ +exports.Binary = Binary; + + +}, + + + +'binary_parser': function(module, exports, global, require, undefined){ + /** + * Binary Parser. + * Jonas Raoni Soares Silva + * http://jsfromhell.com/classes/binary-parser [v1.0] + */ +var chr = String.fromCharCode; + +var maxBits = []; +for (var i = 0; i < 64; i++) { + maxBits[i] = Math.pow(2, i); +} + +function BinaryParser (bigEndian, allowExceptions) { + if(!(this instanceof BinaryParser)) return new BinaryParser(bigEndian, allowExceptions); + + this.bigEndian = bigEndian; + this.allowExceptions = allowExceptions; +}; + +BinaryParser.warn = function warn (msg) { + if (this.allowExceptions) { + throw new Error(msg); + } + + return 1; +}; + +BinaryParser.decodeFloat = function decodeFloat (data, precisionBits, exponentBits) { + var b = new this.Buffer(this.bigEndian, data); + + b.checkBuffer(precisionBits + exponentBits + 1); + + var bias = maxBits[exponentBits - 1] - 1 + , signal = b.readBits(precisionBits + exponentBits, 1) + , exponent = b.readBits(precisionBits, exponentBits) + , significand = 0 + , divisor = 2 + , curByte = b.buffer.length + (-precisionBits >> 3) - 1; + + do { + for (var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 ); + } while (precisionBits -= startBit); + + return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 ); +}; + +BinaryParser.decodeInt = function decodeInt (data, bits, signed, forceBigEndian) { + var b = new this.Buffer(this.bigEndian || forceBigEndian, data) + , x = b.readBits(0, bits) + , max = maxBits[bits]; //max = Math.pow( 2, bits ); + + return signed && x >= max / 2 + ? x - max + : x; +}; + +BinaryParser.encodeFloat = function encodeFloat (data, precisionBits, exponentBits) { + var bias = maxBits[exponentBits - 1] - 1 + , minExp = -bias + 1 + , maxExp = bias + , minUnnormExp = minExp - precisionBits + , n = parseFloat(data) + , status = isNaN(n) || n == -Infinity || n == +Infinity ? n : 0 + , exp = 0 + , len = 2 * bias + 1 + precisionBits + 3 + , bin = new Array(len) + , signal = (n = status !== 0 ? 0 : n) < 0 + , intPart = Math.floor(n = Math.abs(n)) + , floatPart = n - intPart + , lastBit + , rounded + , result + , i + , j; + + for (i = len; i; bin[--i] = 0); + + for (i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor(intPart / 2)); + + for (i = bias + 1; floatPart > 0 && i; (bin[++i] = ((floatPart *= 2) >= 1) - 0 ) && --floatPart); + + for (i = -1; ++i < len && !bin[i];); + + if (bin[(lastBit = precisionBits - 1 + (i = (exp = bias + 1 - i) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - (exp = minExp - 1))) + 1]) { + if (!(rounded = bin[lastBit])) { + for (j = lastBit + 2; !rounded && j < len; rounded = bin[j++]); + } + + for (j = lastBit + 1; rounded && --j >= 0; (bin[j] = !bin[j] - 0) && (rounded = 0)); + } + + for (i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i];); + + if ((exp = bias + 1 - i) >= minExp && exp <= maxExp) { + ++i; + } else if (exp < minExp) { + exp != bias + 1 - len && exp < minUnnormExp && this.warn("encodeFloat::float underflow"); + i = bias + 1 - (exp = minExp - 1); + } + + if (intPart || status !== 0) { + this.warn(intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status); + exp = maxExp + 1; + i = bias + 2; + + if (status == -Infinity) { + signal = 1; + } else if (isNaN(status)) { + bin[i] = 1; + } + } + + for (n = Math.abs(exp + bias), j = exponentBits + 1, result = ""; --j; result = (n % 2) + result, n = n >>= 1); + + for (n = 0, j = 0, i = (result = (signal ? "1" : "0") + result + bin.slice(i, i + precisionBits).join("")).length, r = []; i; j = (j + 1) % 8) { + n += (1 << j) * result.charAt(--i); + if (j == 7) { + r[r.length] = String.fromCharCode(n); + n = 0; + } + } + + r[r.length] = n + ? String.fromCharCode(n) + : ""; + + return (this.bigEndian ? r.reverse() : r).join(""); +}; + +BinaryParser.encodeInt = function encodeInt (data, bits, signed, forceBigEndian) { + var max = maxBits[bits]; + + if (data >= max || data < -(max / 2)) { + this.warn("encodeInt::overflow"); + data = 0; + } + + if (data < 0) { + data += max; + } + + for (var r = []; data; r[r.length] = String.fromCharCode(data % 256), data = Math.floor(data / 256)); + + for (bits = -(-bits >> 3) - r.length; bits--; r[r.length] = "\0"); + + return ((this.bigEndian || forceBigEndian) ? r.reverse() : r).join(""); +}; + +BinaryParser.toSmall = function( data ){ return this.decodeInt( data, 8, true ); }; +BinaryParser.fromSmall = function( data ){ return this.encodeInt( data, 8, true ); }; +BinaryParser.toByte = function( data ){ return this.decodeInt( data, 8, false ); }; +BinaryParser.fromByte = function( data ){ return this.encodeInt( data, 8, false ); }; +BinaryParser.toShort = function( data ){ return this.decodeInt( data, 16, true ); }; +BinaryParser.fromShort = function( data ){ return this.encodeInt( data, 16, true ); }; +BinaryParser.toWord = function( data ){ return this.decodeInt( data, 16, false ); }; +BinaryParser.fromWord = function( data ){ return this.encodeInt( data, 16, false ); }; +BinaryParser.toInt = function( data ){ return this.decodeInt( data, 32, true ); }; +BinaryParser.fromInt = function( data ){ return this.encodeInt( data, 32, true ); }; +BinaryParser.toLong = function( data ){ return this.decodeInt( data, 64, true ); }; +BinaryParser.fromLong = function( data ){ return this.encodeInt( data, 64, true ); }; +BinaryParser.toDWord = function( data ){ return this.decodeInt( data, 32, false ); }; +BinaryParser.fromDWord = function( data ){ return this.encodeInt( data, 32, false ); }; +BinaryParser.toQWord = function( data ){ return this.decodeInt( data, 64, true ); }; +BinaryParser.fromQWord = function( data ){ return this.encodeInt( data, 64, true ); }; +BinaryParser.toFloat = function( data ){ return this.decodeFloat( data, 23, 8 ); }; +BinaryParser.fromFloat = function( data ){ return this.encodeFloat( data, 23, 8 ); }; +BinaryParser.toDouble = function( data ){ return this.decodeFloat( data, 52, 11 ); }; +BinaryParser.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11 ); }; + +// Factor out the encode so it can be shared by add_header and push_int32 +BinaryParser.encode_int32 = function encode_int32 (number, asArray) { + var a, b, c, d, unsigned; + unsigned = (number < 0) ? (number + 0x100000000) : number; + a = Math.floor(unsigned / 0xffffff); + unsigned &= 0xffffff; + b = Math.floor(unsigned / 0xffff); + unsigned &= 0xffff; + c = Math.floor(unsigned / 0xff); + unsigned &= 0xff; + d = Math.floor(unsigned); + return asArray ? [chr(a), chr(b), chr(c), chr(d)] : chr(a) + chr(b) + chr(c) + chr(d); +}; + +BinaryParser.encode_int64 = function encode_int64 (number) { + var a, b, c, d, e, f, g, h, unsigned; + unsigned = (number < 0) ? (number + 0x10000000000000000) : number; + a = Math.floor(unsigned / 0xffffffffffffff); + unsigned &= 0xffffffffffffff; + b = Math.floor(unsigned / 0xffffffffffff); + unsigned &= 0xffffffffffff; + c = Math.floor(unsigned / 0xffffffffff); + unsigned &= 0xffffffffff; + d = Math.floor(unsigned / 0xffffffff); + unsigned &= 0xffffffff; + e = Math.floor(unsigned / 0xffffff); + unsigned &= 0xffffff; + f = Math.floor(unsigned / 0xffff); + unsigned &= 0xffff; + g = Math.floor(unsigned / 0xff); + unsigned &= 0xff; + h = Math.floor(unsigned); + return chr(a) + chr(b) + chr(c) + chr(d) + chr(e) + chr(f) + chr(g) + chr(h); +}; + +/** + * UTF8 methods + */ + +// Take a raw binary string and return a utf8 string +BinaryParser.decode_utf8 = function decode_utf8 (binaryStr) { + var len = binaryStr.length + , decoded = '' + , i = 0 + , c = 0 + , c1 = 0 + , c2 = 0 + , c3; + + while (i < len) { + c = binaryStr.charCodeAt(i); + if (c < 128) { + decoded += String.fromCharCode(c); + i++; + } else if ((c > 191) && (c < 224)) { + c2 = binaryStr.charCodeAt(i+1); + decoded += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = binaryStr.charCodeAt(i+1); + c3 = binaryStr.charCodeAt(i+2); + decoded += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return decoded; +}; + +// Encode a cstring +BinaryParser.encode_cstring = function encode_cstring (s) { + return unescape(encodeURIComponent(s)) + BinaryParser.fromByte(0); +}; + +// Take a utf8 string and return a binary string +BinaryParser.encode_utf8 = function encode_utf8 (s) { + var a = "" + , c; + + for (var n = 0, len = s.length; n < len; n++) { + c = s.charCodeAt(n); + + if (c < 128) { + a += String.fromCharCode(c); + } else if ((c > 127) && (c < 2048)) { + a += String.fromCharCode((c>>6) | 192) ; + a += String.fromCharCode((c&63) | 128); + } else { + a += String.fromCharCode((c>>12) | 224); + a += String.fromCharCode(((c>>6) & 63) | 128); + a += String.fromCharCode((c&63) | 128); + } + } + + return a; +}; + +BinaryParser.hprint = function hprint (s) { + var number; + + for (var i = 0, len = s.length; i < len; i++) { + if (s.charCodeAt(i) < 32) { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + process.stdout.write(number + " ") + } else { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + process.stdout.write(number + " ") + } + } + + process.stdout.write("\n\n"); +}; + +BinaryParser.ilprint = function hprint (s) { + var number; + + for (var i = 0, len = s.length; i < len; i++) { + if (s.charCodeAt(i) < 32) { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(10) + : s.charCodeAt(i).toString(10); + + require('util').debug(number+' : '); + } else { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(10) + : s.charCodeAt(i).toString(10); + require('util').debug(number+' : '+ s.charAt(i)); + } + } +}; + +BinaryParser.hlprint = function hprint (s) { + var number; + + for (var i = 0, len = s.length; i < len; i++) { + if (s.charCodeAt(i) < 32) { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + require('util').debug(number+' : '); + } else { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + require('util').debug(number+' : '+ s.charAt(i)); + } + } +}; + +/** + * BinaryParser buffer constructor. + */ +function BinaryParserBuffer (bigEndian, buffer) { + this.bigEndian = bigEndian || 0; + this.buffer = []; + this.setBuffer(buffer); +}; + +BinaryParserBuffer.prototype.setBuffer = function setBuffer (data) { + var l, i, b; + + if (data) { + i = l = data.length; + b = this.buffer = new Array(l); + for (; i; b[l - i] = data.charCodeAt(--i)); + this.bigEndian && b.reverse(); + } +}; + +BinaryParserBuffer.prototype.hasNeededBits = function hasNeededBits (neededBits) { + return this.buffer.length >= -(-neededBits >> 3); +}; + +BinaryParserBuffer.prototype.checkBuffer = function checkBuffer (neededBits) { + if (!this.hasNeededBits(neededBits)) { + throw new Error("checkBuffer::missing bytes"); + } +}; + +BinaryParserBuffer.prototype.readBits = function readBits (start, length) { + //shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni) + + function shl (a, b) { + for (; b--; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1); + return a; + } + + if (start < 0 || length <= 0) { + return 0; + } + + this.checkBuffer(start + length); + + var offsetLeft + , offsetRight = start % 8 + , curByte = this.buffer.length - ( start >> 3 ) - 1 + , lastByte = this.buffer.length + ( -( start + length ) >> 3 ) + , diff = curByte - lastByte + , sum = ((this.buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + (diff && (offsetLeft = (start + length) % 8) ? (this.buffer[lastByte++] & ((1 << offsetLeft) - 1)) << (diff-- << 3) - offsetRight : 0); + + for(; diff; sum += shl(this.buffer[lastByte++], (diff-- << 3) - offsetRight)); + + return sum; +}; + +/** + * Expose. + */ +BinaryParser.Buffer = BinaryParserBuffer; + +exports.BinaryParser = BinaryParser; + +}, + + + +'bson': function(module, exports, global, require, undefined){ + var Long = require('./long').Long + , Double = require('./double').Double + , Timestamp = require('./timestamp').Timestamp + , ObjectID = require('./objectid').ObjectID + , Symbol = require('./symbol').Symbol + , Code = require('./code').Code + , MinKey = require('./min_key').MinKey + , MaxKey = require('./max_key').MaxKey + , DBRef = require('./db_ref').DBRef + , Binary = require('./binary').Binary + , BinaryParser = require('./binary_parser').BinaryParser + , writeIEEE754 = require('./float_parser').writeIEEE754 + , readIEEE754 = require('./float_parser').readIEEE754 + +// To ensure that 0.4 of node works correctly +var isDate = function isDate(d) { + return typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]'; +} + +/** + * Create a new BSON instance + * + * @class Represents the BSON Parser + * @return {BSON} instance of BSON Parser. + */ +function BSON () {}; + +/** + * @ignore + * @api private + */ +// BSON MAX VALUES +BSON.BSON_INT32_MAX = 0x7FFFFFFF; +BSON.BSON_INT32_MIN = -0x80000000; + +BSON.BSON_INT64_MAX = Math.pow(2, 63) - 1; +BSON.BSON_INT64_MIN = -Math.pow(2, 63); + +// JS MAX PRECISE VALUES +BSON.JS_INT_MAX = 0x20000000000000; // Any integer up to 2^53 can be precisely represented by a double. +BSON.JS_INT_MIN = -0x20000000000000; // Any integer down to -2^53 can be precisely represented by a double. + +// Internal long versions +var JS_INT_MAX_LONG = Long.fromNumber(0x20000000000000); // Any integer up to 2^53 can be precisely represented by a double. +var JS_INT_MIN_LONG = Long.fromNumber(-0x20000000000000); // Any integer down to -2^53 can be precisely represented by a double. + +/** + * Number BSON Type + * + * @classconstant BSON_DATA_NUMBER + **/ +BSON.BSON_DATA_NUMBER = 1; +/** + * String BSON Type + * + * @classconstant BSON_DATA_STRING + **/ +BSON.BSON_DATA_STRING = 2; +/** + * Object BSON Type + * + * @classconstant BSON_DATA_OBJECT + **/ +BSON.BSON_DATA_OBJECT = 3; +/** + * Array BSON Type + * + * @classconstant BSON_DATA_ARRAY + **/ +BSON.BSON_DATA_ARRAY = 4; +/** + * Binary BSON Type + * + * @classconstant BSON_DATA_BINARY + **/ +BSON.BSON_DATA_BINARY = 5; +/** + * ObjectID BSON Type + * + * @classconstant BSON_DATA_OID + **/ +BSON.BSON_DATA_OID = 7; +/** + * Boolean BSON Type + * + * @classconstant BSON_DATA_BOOLEAN + **/ +BSON.BSON_DATA_BOOLEAN = 8; +/** + * Date BSON Type + * + * @classconstant BSON_DATA_DATE + **/ +BSON.BSON_DATA_DATE = 9; +/** + * null BSON Type + * + * @classconstant BSON_DATA_NULL + **/ +BSON.BSON_DATA_NULL = 10; +/** + * RegExp BSON Type + * + * @classconstant BSON_DATA_REGEXP + **/ +BSON.BSON_DATA_REGEXP = 11; +/** + * Code BSON Type + * + * @classconstant BSON_DATA_CODE + **/ +BSON.BSON_DATA_CODE = 13; +/** + * Symbol BSON Type + * + * @classconstant BSON_DATA_SYMBOL + **/ +BSON.BSON_DATA_SYMBOL = 14; +/** + * Code with Scope BSON Type + * + * @classconstant BSON_DATA_CODE_W_SCOPE + **/ +BSON.BSON_DATA_CODE_W_SCOPE = 15; +/** + * 32 bit Integer BSON Type + * + * @classconstant BSON_DATA_INT + **/ +BSON.BSON_DATA_INT = 16; +/** + * Timestamp BSON Type + * + * @classconstant BSON_DATA_TIMESTAMP + **/ +BSON.BSON_DATA_TIMESTAMP = 17; +/** + * Long BSON Type + * + * @classconstant BSON_DATA_LONG + **/ +BSON.BSON_DATA_LONG = 18; +/** + * MinKey BSON Type + * + * @classconstant BSON_DATA_MIN_KEY + **/ +BSON.BSON_DATA_MIN_KEY = 0xff; +/** + * MaxKey BSON Type + * + * @classconstant BSON_DATA_MAX_KEY + **/ +BSON.BSON_DATA_MAX_KEY = 0x7f; + +/** + * Binary Default Type + * + * @classconstant BSON_BINARY_SUBTYPE_DEFAULT + **/ +BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0; +/** + * Binary Function Type + * + * @classconstant BSON_BINARY_SUBTYPE_FUNCTION + **/ +BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1; +/** + * Binary Byte Array Type + * + * @classconstant BSON_BINARY_SUBTYPE_BYTE_ARRAY + **/ +BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +/** + * Binary UUID Type + * + * @classconstant BSON_BINARY_SUBTYPE_UUID + **/ +BSON.BSON_BINARY_SUBTYPE_UUID = 3; +/** + * Binary MD5 Type + * + * @classconstant BSON_BINARY_SUBTYPE_MD5 + **/ +BSON.BSON_BINARY_SUBTYPE_MD5 = 4; +/** + * Binary User Defined Type + * + * @classconstant BSON_BINARY_SUBTYPE_USER_DEFINED + **/ +BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +/** + * Calculate the bson size for a passed in Javascript object. + * + * @param {Object} object the Javascript object to calculate the BSON byte size for. + * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. + * @return {Number} returns the number of bytes the BSON object will take up. + * @api public + */ +BSON.calculateObjectSize = function calculateObjectSize(object, serializeFunctions) { + var totalLength = (4 + 1); + + if(Array.isArray(object)) { + for(var i = 0; i < object.length; i++) { + totalLength += calculateElement(i.toString(), object[i], serializeFunctions) + } + } else { + // If we have toBSON defined, override the current object + if(object.toBSON) { + object = object.toBSON(); + } + + // Calculate size + for(var key in object) { + totalLength += calculateElement(key, object[key], serializeFunctions) + } + } + + return totalLength; +} + +/** + * @ignore + * @api private + */ +function calculateElement(name, value, serializeFunctions) { + var isBuffer = typeof Buffer !== 'undefined'; + + switch(typeof value) { + case 'string': + return 1 + (!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1 + 4 + (!isBuffer ? numberOfBytes(value) : Buffer.byteLength(value, 'utf8')) + 1; + case 'number': + if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { + if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { // 32 bit + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (4 + 1); + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } + } else { // 64 bit + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } + case 'undefined': + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); + case 'boolean': + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 1); + case 'object': + if(value == null || value instanceof MinKey || value instanceof MaxKey || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); + } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (12 + 1); + } else if(value instanceof Date || isDate(value)) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 4 + 1) + value.length; + } else if(value instanceof Long || value instanceof Double || value instanceof Timestamp + || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Double' || value['_bsontype'] == 'Timestamp') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } else if(value instanceof Code || value['_bsontype'] == 'Code') { + // Calculate size depending on the availability of a scope + if(value.scope != null && Object.keys(value.scope).length > 0) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1; + } + } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { + // Check what kind of subtype we have + if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1 + 4); + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1); + } + } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + ((!isBuffer ? numberOfBytes(value.value) : Buffer.byteLength(value.value, 'utf8')) + 4 + 1 + 1); + } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { + // Set up correct object for serialization + var ordered_values = { + '$ref': value.namespace + , '$id' : value.oid + }; + + // Add db reference if it exists + if(null != value.db) { + ordered_values['$db'] = value.db; + } + + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + BSON.calculateObjectSize(ordered_values, serializeFunctions); + } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 + + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + BSON.calculateObjectSize(value, serializeFunctions) + 1; + } + case 'function': + // WTF for 0.4.X where typeof /someregexp/ === 'function' + if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 + + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 + } else { + if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); + } else if(serializeFunctions) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1; + } + } + } + + return 0; +} + +/** + * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. + * @param {Number} index the index in the buffer where we wish to start serializing into. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Number} returns the new write index in the Buffer. + * @api public + */ +BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, checkKeys, buffer, index, serializeFunctions) { + // Default setting false + serializeFunctions = serializeFunctions == null ? false : serializeFunctions; + // Write end information (length of the object) + var size = buffer.length; + // Write the size of the object + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + return serializeObject(object, checkKeys, buffer, index, serializeFunctions) - 1; +} + +/** + * @ignore + * @api private + */ +var serializeObject = function(object, checkKeys, buffer, index, serializeFunctions) { + // Process the object + if(Array.isArray(object)) { + for(var i = 0; i < object.length; i++) { + index = packElement(i.toString(), object[i], checkKeys, buffer, index, serializeFunctions); + } + } else { + // If we have toBSON defined, override the current object + if(object.toBSON) { + object = object.toBSON(); + } + + // Serialize the object + for(var key in object) { + // Check the key and throw error if it's illegal + if(checkKeys == true && (key != '$db' && key != '$ref' && key != '$id')) { + BSON.checkKey(key); + } + + // Pack the element + index = packElement(key, object[key], checkKeys, buffer, index, serializeFunctions); + } + } + + // Write zero + buffer[index++] = 0; + return index; +} + +var stringToBytes = function(str) { + var ch, st, re = []; + for (var i = 0; i < str.length; i++ ) { + ch = str.charCodeAt(i); // get char + st = []; // set up "stack" + do { + st.push( ch & 0xFF ); // push byte to stack + ch = ch >> 8; // shift value down by 1 byte + } + while ( ch ); + // add stack contents to result + // done because chars have "wrong" endianness + re = re.concat( st.reverse() ); + } + // return an array of bytes + return re; +} + +var numberOfBytes = function(str) { + var ch, st, re = 0; + for (var i = 0; i < str.length; i++ ) { + ch = str.charCodeAt(i); // get char + st = []; // set up "stack" + do { + st.push( ch & 0xFF ); // push byte to stack + ch = ch >> 8; // shift value down by 1 byte + } + while ( ch ); + // add stack contents to result + // done because chars have "wrong" endianness + re = re + st.length; + } + // return an array of bytes + return re; +} + +/** + * @ignore + * @api private + */ +var writeToTypedArray = function(buffer, string, index) { + var bytes = stringToBytes(string); + for(var i = 0; i < bytes.length; i++) { + buffer[index + i] = bytes[i]; + } + return bytes.length; +} + +/** + * @ignore + * @api private + */ +var supportsBuffer = typeof Buffer != 'undefined'; + +/** + * @ignore + * @api private + */ +var packElement = function(name, value, checkKeys, buffer, index, serializeFunctions) { + var startIndex = index; + + switch(typeof value) { + case 'string': + // Encode String type + buffer[index++] = BSON.BSON_DATA_STRING; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Calculate size + var size = supportsBuffer ? Buffer.byteLength(value) + 1 : numberOfBytes(value) + 1; + // Write the size of the string to buffer + buffer[index + 3] = (size >> 24) & 0xff; + buffer[index + 2] = (size >> 16) & 0xff; + buffer[index + 1] = (size >> 8) & 0xff; + buffer[index] = size & 0xff; + // Ajust the index + index = index + 4; + // Write the string + supportsBuffer ? buffer.write(value, index, 'utf8') : writeToTypedArray(buffer, value, index); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0; + // Return index + return index; + case 'number': + // We have an integer value + if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { + // If the value fits in 32 bits encode as int, if it fits in a double + // encode it as a double, otherwise long + if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { + // Set int type 32 bits or less + buffer[index++] = BSON.BSON_DATA_INT; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write the int value + buffer[index++] = value & 0xff; + buffer[index++] = (value >> 8) & 0xff; + buffer[index++] = (value >> 16) & 0xff; + buffer[index++] = (value >> 24) & 0xff; + } else if(value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { + // Encode as double + buffer[index++] = BSON.BSON_DATA_NUMBER; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write float + writeIEEE754(buffer, value, index, 'little', 52, 8); + // Ajust index + index = index + 8; + } else { + // Set long type + buffer[index++] = BSON.BSON_DATA_LONG; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + var longVal = Long.fromNumber(value); + var lowBits = longVal.getLowBits(); + var highBits = longVal.getHighBits(); + // Encode low bits + buffer[index++] = lowBits & 0xff; + buffer[index++] = (lowBits >> 8) & 0xff; + buffer[index++] = (lowBits >> 16) & 0xff; + buffer[index++] = (lowBits >> 24) & 0xff; + // Encode high bits + buffer[index++] = highBits & 0xff; + buffer[index++] = (highBits >> 8) & 0xff; + buffer[index++] = (highBits >> 16) & 0xff; + buffer[index++] = (highBits >> 24) & 0xff; + } + } else { + // Encode as double + buffer[index++] = BSON.BSON_DATA_NUMBER; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write float + writeIEEE754(buffer, value, index, 'little', 52, 8); + // Ajust index + index = index + 8; + } + + return index; + case 'undefined': + // Set long type + buffer[index++] = BSON.BSON_DATA_NULL; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + return index; + case 'boolean': + // Write the type + buffer[index++] = BSON.BSON_DATA_BOOLEAN; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Encode the boolean value + buffer[index++] = value ? 1 : 0; + return index; + case 'object': + if(value === null || value instanceof MinKey || value instanceof MaxKey + || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { + // Write the type of either min or max key + if(value === null) { + buffer[index++] = BSON.BSON_DATA_NULL; + } else if(value instanceof MinKey) { + buffer[index++] = BSON.BSON_DATA_MIN_KEY; + } else { + buffer[index++] = BSON.BSON_DATA_MAX_KEY; + } + + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + return index; + } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { + // Write the type + buffer[index++] = BSON.BSON_DATA_OID; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write objectid + supportsBuffer ? buffer.write(value.id, index, 'binary') : writeToTypedArray(buffer, value.id, index); + // Ajust index + index = index + 12; + return index; + } else if(value instanceof Date || isDate(value)) { + // Write the type + buffer[index++] = BSON.BSON_DATA_DATE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write the date + var dateInMilis = Long.fromNumber(value.getTime()); + var lowBits = dateInMilis.getLowBits(); + var highBits = dateInMilis.getHighBits(); + // Encode low bits + buffer[index++] = lowBits & 0xff; + buffer[index++] = (lowBits >> 8) & 0xff; + buffer[index++] = (lowBits >> 16) & 0xff; + buffer[index++] = (lowBits >> 24) & 0xff; + // Encode high bits + buffer[index++] = highBits & 0xff; + buffer[index++] = (highBits >> 8) & 0xff; + buffer[index++] = (highBits >> 16) & 0xff; + buffer[index++] = (highBits >> 24) & 0xff; + return index; + } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { + // Write the type + buffer[index++] = BSON.BSON_DATA_BINARY; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Get size of the buffer (current write point) + var size = value.length; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the default subtype + buffer[index++] = BSON.BSON_BINARY_SUBTYPE_DEFAULT; + // Copy the content form the binary field to the buffer + value.copy(buffer, index, 0, size); + // Adjust the index + index = index + size; + return index; + } else if(value instanceof Long || value instanceof Timestamp || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { + // Write the type + buffer[index++] = value instanceof Long ? BSON.BSON_DATA_LONG : BSON.BSON_DATA_TIMESTAMP; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write the date + var lowBits = value.getLowBits(); + var highBits = value.getHighBits(); + // Encode low bits + buffer[index++] = lowBits & 0xff; + buffer[index++] = (lowBits >> 8) & 0xff; + buffer[index++] = (lowBits >> 16) & 0xff; + buffer[index++] = (lowBits >> 24) & 0xff; + // Encode high bits + buffer[index++] = highBits & 0xff; + buffer[index++] = (highBits >> 8) & 0xff; + buffer[index++] = (highBits >> 16) & 0xff; + buffer[index++] = (highBits >> 24) & 0xff; + return index; + } else if(value instanceof Double || value['_bsontype'] == 'Double') { + // Encode as double + buffer[index++] = BSON.BSON_DATA_NUMBER; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write float + writeIEEE754(buffer, value, index, 'little', 52, 8); + // Ajust index + index = index + 8; + return index; + } else if(value instanceof Code || value['_bsontype'] == 'Code') { + if(value.scope != null && Object.keys(value.scope).length > 0) { + // Write the type + buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Calculate the scope size + var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); + // Function string + var functionString = value.code.toString(); + // Function Size + var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + + // Calculate full size of the object + var totalSize = 4 + codeSize + scopeSize + 4; + + // Write the total size of the object + buffer[index++] = totalSize & 0xff; + buffer[index++] = (totalSize >> 8) & 0xff; + buffer[index++] = (totalSize >> 16) & 0xff; + buffer[index++] = (totalSize >> 24) & 0xff; + + // Write the size of the string to buffer + buffer[index++] = codeSize & 0xff; + buffer[index++] = (codeSize >> 8) & 0xff; + buffer[index++] = (codeSize >> 16) & 0xff; + buffer[index++] = (codeSize >> 24) & 0xff; + + // Write the string + supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index); + // Update index + index = index + codeSize - 1; + // Write zero + buffer[index++] = 0; + // Serialize the scope object + var scopeObjectBuffer = supportsBuffer ? new Buffer(scopeSize) : new Uint8Array(new ArrayBuffer(scopeSize)); + // Execute the serialization into a seperate buffer + serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); + + // Adjusted scope Size (removing the header) + var scopeDocSize = scopeSize; + // Write scope object size + buffer[index++] = scopeDocSize & 0xff; + buffer[index++] = (scopeDocSize >> 8) & 0xff; + buffer[index++] = (scopeDocSize >> 16) & 0xff; + buffer[index++] = (scopeDocSize >> 24) & 0xff; + + // Write the scopeObject into the buffer + supportsBuffer ? scopeObjectBuffer.copy(buffer, index, 0, scopeSize) : buffer.set(scopeObjectBuffer, index); + // Adjust index, removing the empty size of the doc (5 bytes 0000000005) + index = index + scopeDocSize - 5; + // Write trailing zero + buffer[index++] = 0; + return index + } else { + buffer[index++] = BSON.BSON_DATA_CODE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Function string + var functionString = value.code.toString(); + // Function Size + var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the string + buffer.write(functionString, index, 'utf8'); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0; + return index; + } + } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { + // Write the type + buffer[index++] = BSON.BSON_DATA_BINARY; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Extract the buffer + var data = value.value(true); + // Calculate size + var size = value.position; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the subtype to the buffer + buffer[index++] = value.sub_type; + + // If we have binary type 2 the 4 first bytes are the size + if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + } + + // Write the data to the object + supportsBuffer ? data.copy(buffer, index, 0, value.position) : buffer.set(data, index); + // Ajust index + index = index + value.position; + return index; + } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { + // Write the type + buffer[index++] = BSON.BSON_DATA_SYMBOL; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Calculate size + var size = supportsBuffer ? Buffer.byteLength(value.value) + 1 : numberOfBytes(value.value) + 1; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the string + buffer.write(value.value, index, 'utf8'); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0x00; + return index; + } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { + // Write the type + buffer[index++] = BSON.BSON_DATA_OBJECT; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Set up correct object for serialization + var ordered_values = { + '$ref': value.namespace + , '$id' : value.oid + }; + + // Add db reference if it exists + if(null != value.db) { + ordered_values['$db'] = value.db; + } + + // Message size + var size = BSON.calculateObjectSize(ordered_values, serializeFunctions); + // Serialize the object + var endIndex = BSON.serializeWithBufferAndIndex(ordered_values, checkKeys, buffer, index, serializeFunctions); + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write zero for object + buffer[endIndex++] = 0x00; + // Return the end index + return endIndex; + } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { + // Write the type + buffer[index++] = BSON.BSON_DATA_REGEXP; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write the regular expression string + supportsBuffer ? buffer.write(value.source, index, 'utf8') : writeToTypedArray(buffer, value.source, index); + // Adjust the index + index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); + // Write zero + buffer[index++] = 0x00; + // Write the parameters + if(value.global) buffer[index++] = 0x73; // s + if(value.ignoreCase) buffer[index++] = 0x69; // i + if(value.multiline) buffer[index++] = 0x6d; // m + // Add ending zero + buffer[index++] = 0x00; + return index; + } else { + // Write the type + buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Adjust the index + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + var endIndex = serializeObject(value, checkKeys, buffer, index + 4, serializeFunctions); + // Write size + var size = endIndex - index; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + return endIndex; + } + case 'function': + // WTF for 0.4.X where typeof /someregexp/ === 'function' + if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { + // Write the type + buffer[index++] = BSON.BSON_DATA_REGEXP; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write the regular expression string + buffer.write(value.source, index, 'utf8'); + // Adjust the index + index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); + // Write zero + buffer[index++] = 0x00; + // Write the parameters + if(value.global) buffer[index++] = 0x73; // s + if(value.ignoreCase) buffer[index++] = 0x69; // i + if(value.multiline) buffer[index++] = 0x6d; // m + // Add ending zero + buffer[index++] = 0x00; + return index; + } else { + if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { + // Write the type + buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Calculate the scope size + var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); + // Function string + var functionString = value.toString(); + // Function Size + var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + + // Calculate full size of the object + var totalSize = 4 + codeSize + scopeSize; + + // Write the total size of the object + buffer[index++] = totalSize & 0xff; + buffer[index++] = (totalSize >> 8) & 0xff; + buffer[index++] = (totalSize >> 16) & 0xff; + buffer[index++] = (totalSize >> 24) & 0xff; + + // Write the size of the string to buffer + buffer[index++] = codeSize & 0xff; + buffer[index++] = (codeSize >> 8) & 0xff; + buffer[index++] = (codeSize >> 16) & 0xff; + buffer[index++] = (codeSize >> 24) & 0xff; + + // Write the string + buffer.write(functionString, index, 'utf8'); + // Update index + index = index + codeSize - 1; + // Write zero + buffer[index++] = 0; + // Serialize the scope object + var scopeObjectBuffer = new Buffer(scopeSize); + // Execute the serialization into a seperate buffer + serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); + + // Adjusted scope Size (removing the header) + var scopeDocSize = scopeSize - 4; + // Write scope object size + buffer[index++] = scopeDocSize & 0xff; + buffer[index++] = (scopeDocSize >> 8) & 0xff; + buffer[index++] = (scopeDocSize >> 16) & 0xff; + buffer[index++] = (scopeDocSize >> 24) & 0xff; + + // Write the scopeObject into the buffer + scopeObjectBuffer.copy(buffer, index, 0, scopeSize); + + // Adjust index, removing the empty size of the doc (5 bytes 0000000005) + index = index + scopeDocSize - 5; + // Write trailing zero + buffer[index++] = 0; + return index + } else if(serializeFunctions) { + buffer[index++] = BSON.BSON_DATA_CODE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Function string + var functionString = value.toString(); + // Function Size + var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the string + buffer.write(functionString, index, 'utf8'); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0; + return index; + } + } + } + + // If no value to serialize + return index; +} + +/** + * Serialize a Javascript object. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Buffer} returns the Buffer object containing the serialized object. + * @api public + */ +BSON.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { + var buffer = null; + // Calculate the size of the object + var size = BSON.calculateObjectSize(object, serializeFunctions); + // Fetch the best available type for storing the binary data + if(buffer = typeof Buffer != 'undefined') { + buffer = new Buffer(size); + asBuffer = true; + } else if(typeof Uint8Array != 'undefined') { + buffer = new Uint8Array(new ArrayBuffer(size)); + } else { + buffer = new Array(size); + } + + // If asBuffer is false use typed arrays + BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, 0, serializeFunctions); + return buffer; +} + +/** + * Contains the function cache if we have that enable to allow for avoiding the eval step on each deserialization, comparison is by md5 + * + * @ignore + * @api private + */ +var functionCache = BSON.functionCache = {}; + +/** + * Crc state variables shared by function + * + * @ignore + * @api private + */ +var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D]; + +/** + * CRC32 hash method, Fast and enough versitility for our usage + * + * @ignore + * @api private + */ +var crc32 = function(string, start, end) { + var crc = 0 + var x = 0; + var y = 0; + crc = crc ^ (-1); + + for(var i = start, iTop = end; i < iTop;i++) { + y = (crc ^ string[i]) & 0xFF; + x = table[y]; + crc = (crc >>> 8) ^ x; + } + + return crc ^ (-1); +} + +/** + * Deserialize stream data as BSON documents. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} data the buffer containing the serialized set of BSON documents. + * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. + * @param {Number} numberOfDocuments number of documents to deserialize. + * @param {Array} documents an array where to store the deserialized documents. + * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. + * @param {Object} [options] additional options used for the deserialization. + * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. + * @api public + */ +BSON.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { + // if(numberOfDocuments !== documents.length) throw new Error("Number of expected results back is less than the number of documents"); + options = options != null ? options : {}; + var index = startIndex; + // Loop over all documents + for(var i = 0; i < numberOfDocuments; i++) { + // Find size of the document + var size = data[index] | data[index + 1] << 8 | data[index + 2] << 16 | data[index + 3] << 24; + // Update options with index + options['index'] = index; + // Parse the document at this point + documents[docStartIndex + i] = BSON.deserialize(data, options); + // Adjust index by the document size + index = index + size; + } + + // Return object containing end index of parsing and list of documents + return index; +} + +/** + * Ensure eval is isolated. + * + * @ignore + * @api private + */ +var isolateEvalWithHash = function(functionCache, hash, functionString, object) { + // Contains the value we are going to set + var value = null; + + // Check for cache hit, eval if missing and return cached function + if(functionCache[hash] == null) { + eval("value = " + functionString); + functionCache[hash] = value; + } + // Set the object + return functionCache[hash].bind(object); +} + +/** + * Ensure eval is isolated. + * + * @ignore + * @api private + */ +var isolateEval = function(functionString) { + // Contains the value we are going to set + var value = null; + // Eval the function + eval("value = " + functionString); + return value; +} + +/** + * Convert Uint8Array to String + * + * @ignore + * @api private + */ +var convertUint8ArrayToUtf8String = function(byteArray, startIndex, endIndex) { + return BinaryParser.decode_utf8(convertArraytoUtf8BinaryString(byteArray, startIndex, endIndex)); +} + +var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { + var result = ""; + for(var i = startIndex; i < endIndex; i++) { + result = result + String.fromCharCode(byteArray[i]); + } + + return result; +}; + +/** + * Deserialize data as BSON. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. + * @param {Object} [options] additional options used for the deserialization. + * @param {Boolean} [isArray] ignore used for recursive parsing. + * @return {Object} returns the deserialized Javascript Object. + * @api public + */ +BSON.deserialize = function(buffer, options, isArray) { + // Options + options = options == null ? {} : options; + var evalFunctions = options['evalFunctions'] == null ? false : options['evalFunctions']; + var cacheFunctions = options['cacheFunctions'] == null ? false : options['cacheFunctions']; + var cacheFunctionsCrc32 = options['cacheFunctionsCrc32'] == null ? false : options['cacheFunctionsCrc32']; + + // Validate that we have at least 4 bytes of buffer + if(buffer.length < 5) throw new Error("corrupt bson message < 5 bytes long"); + + // Set up index + var index = typeof options['index'] == 'number' ? options['index'] : 0; + // Reads in a C style string + var readCStyleString = function() { + // Get the start search index + var i = index; + // Locate the end of the c string + while(buffer[i] !== 0x00) { i++ } + // Grab utf8 encoded string + var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, i) : convertUint8ArrayToUtf8String(buffer, index, i); + // Update index position + index = i + 1; + // Return string + return string; + } + + // Create holding object + var object = isArray ? [] : {}; + + // Read the document size + var size = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + + // Ensure buffer is valid size + if(size < 5 || size > buffer.length) throw new Error("corrupt bson message"); + + // While we have more left data left keep parsing + while(true) { + // Read the type + var elementType = buffer[index++]; + // If we get a zero it's the last byte, exit + if(elementType == 0) break; + // Read the name of the field + var name = readCStyleString(); + // Switch on the type + switch(elementType) { + case BSON.BSON_DATA_OID: + var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('binary', index, index + 12) : convertArraytoUtf8BinaryString(buffer, index, index + 12); + // Decode the oid + object[name] = new ObjectID(string); + // Update index + index = index + 12; + break; + case BSON.BSON_DATA_STRING: + // Read the content of the field + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Add string to object + object[name] = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); + // Update parse index position + index = index + stringSize; + break; + case BSON.BSON_DATA_INT: + // Decode the 32bit value + object[name] = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + break; + case BSON.BSON_DATA_NUMBER: + // Decode the double value + object[name] = readIEEE754(buffer, index, 'little', 52, 8); + // Update the index + index = index + 8; + break; + case BSON.BSON_DATA_DATE: + // Unpack the low and high bits + var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Set date object + object[name] = new Date(new Long(lowBits, highBits).toNumber()); + break; + case BSON.BSON_DATA_BOOLEAN: + // Parse the boolean value + object[name] = buffer[index++] == 1; + break; + case BSON.BSON_DATA_NULL: + // Parse the boolean value + object[name] = null; + break; + case BSON.BSON_DATA_BINARY: + // Decode the size of the binary blob + var binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Decode the subtype + var subType = buffer[index++]; + // Decode as raw Buffer object if options specifies it + if(buffer['slice'] != null) { + // If we have subtype 2 skip the 4 bytes for the size + if(subType == Binary.SUBTYPE_BYTE_ARRAY) { + binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + } + // Slice the data + object[name] = new Binary(buffer.slice(index, index + binarySize), subType); + } else { + var _buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(binarySize)) : new Array(binarySize); + // If we have subtype 2 skip the 4 bytes for the size + if(subType == Binary.SUBTYPE_BYTE_ARRAY) { + binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + } + // Copy the data + for(var i = 0; i < binarySize; i++) { + _buffer[i] = buffer[index + i]; + } + // Create the binary object + object[name] = new Binary(_buffer, subType); + } + // Update the index + index = index + binarySize; + break; + case BSON.BSON_DATA_ARRAY: + options['index'] = index; + // Decode the size of the array document + var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; + // Set the array to the object + object[name] = BSON.deserialize(buffer, options, true); + // Adjust the index + index = index + objectSize; + break; + case BSON.BSON_DATA_OBJECT: + options['index'] = index; + // Decode the size of the object document + var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; + // Set the array to the object + object[name] = BSON.deserialize(buffer, options, false); + // Adjust the index + index = index + objectSize; + break; + case BSON.BSON_DATA_REGEXP: + // Create the regexp + var source = readCStyleString(); + var regExpOptions = readCStyleString(); + // For each option add the corresponding one for javascript + var optionsArray = new Array(regExpOptions.length); + + // Parse options + for(var i = 0; i < regExpOptions.length; i++) { + switch(regExpOptions[i]) { + case 'm': + optionsArray[i] = 'm'; + break; + case 's': + optionsArray[i] = 'g'; + break; + case 'i': + optionsArray[i] = 'i'; + break; + } + } + + object[name] = new RegExp(source, optionsArray.join('')); + break; + case BSON.BSON_DATA_LONG: + // Unpack the low and high bits + var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Create long object + var long = new Long(lowBits, highBits); + // Set the object + object[name] = long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG) ? long.toNumber() : long; + break; + case BSON.BSON_DATA_SYMBOL: + // Read the content of the field + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Add string to object + object[name] = new Symbol(buffer.toString('utf8', index, index + stringSize - 1)); + // Update parse index position + index = index + stringSize; + break; + case BSON.BSON_DATA_TIMESTAMP: + // Unpack the low and high bits + var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Set the object + object[name] = new Timestamp(lowBits, highBits); + break; + case BSON.BSON_DATA_MIN_KEY: + // Parse the object + object[name] = new MinKey(); + break; + case BSON.BSON_DATA_MAX_KEY: + // Parse the object + object[name] = new MaxKey(); + break; + case BSON.BSON_DATA_CODE: + // Read the content of the field + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Function string + var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); + + // If we are evaluating the functions + if(evalFunctions) { + // Contains the value we are going to set + var value = null; + // If we have cache enabled let's look for the md5 of the function in the cache + if(cacheFunctions) { + var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; + // Got to do this to avoid V8 deoptimizing the call due to finding eval + object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); + } else { + // Set directly + object[name] = isolateEval(functionString); + } + } else { + object[name] = new Code(functionString, {}); + } + + // Update parse index position + index = index + stringSize; + break; + case BSON.BSON_DATA_CODE_W_SCOPE: + // Read the content of the field + var totalSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Javascript function + var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); + // Update parse index position + index = index + stringSize; + // Parse the element + options['index'] = index; + // Decode the size of the object document + var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; + // Decode the scope object + var scopeObject = BSON.deserialize(buffer, options, false); + // Adjust the index + index = index + objectSize; + + // If we are evaluating the functions + if(evalFunctions) { + // Contains the value we are going to set + var value = null; + // If we have cache enabled let's look for the md5 of the function in the cache + if(cacheFunctions) { + var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; + // Got to do this to avoid V8 deoptimizing the call due to finding eval + object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); + } else { + // Set directly + object[name] = isolateEval(functionString); + } + + // Set the scope on the object + object[name].scope = scopeObject; + } else { + object[name] = new Code(functionString, scopeObject); + } + + // Add string to object + break; + } + } + + // Check if we have a db ref object + if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']); + + // Return the final objects + return object; +} + +/** + * Check if key name is valid. + * + * @ignore + * @api private + */ +BSON.checkKey = function checkKey (key) { + if (!key.length) return; + // Check if we have a legal key for the object + if('$' == key[0]) { + throw Error("key " + key + " must not start with '$'"); + } else if (!!~key.indexOf('.')) { + throw Error("key " + key + " must not contain '.'"); + } +}; + +/** + * Deserialize data as BSON. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. + * @param {Object} [options] additional options used for the deserialization. + * @param {Boolean} [isArray] ignore used for recursive parsing. + * @return {Object} returns the deserialized Javascript Object. + * @api public + */ +BSON.prototype.deserialize = function(data, options) { + return BSON.deserialize(data, options); +} + +/** + * Deserialize stream data as BSON documents. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} data the buffer containing the serialized set of BSON documents. + * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. + * @param {Number} numberOfDocuments number of documents to deserialize. + * @param {Array} documents an array where to store the deserialized documents. + * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. + * @param {Object} [options] additional options used for the deserialization. + * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. + * @api public + */ +BSON.prototype.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { + return BSON.deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options); +} + +/** + * Serialize a Javascript object. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Buffer} returns the Buffer object containing the serialized object. + * @api public + */ +BSON.prototype.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { + return BSON.serialize(object, checkKeys, asBuffer, serializeFunctions); +} + +/** + * Calculate the bson size for a passed in Javascript object. + * + * @param {Object} object the Javascript object to calculate the BSON byte size for. + * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. + * @return {Number} returns the number of bytes the BSON object will take up. + * @api public + */ +BSON.prototype.calculateObjectSize = function(object, serializeFunctions) { + return BSON.calculateObjectSize(object, serializeFunctions); +} + +/** + * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. + * @param {Number} index the index in the buffer where we wish to start serializing into. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Number} returns the new write index in the Buffer. + * @api public + */ +BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, buffer, startIndex, serializeFunctions) { + return BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, startIndex, serializeFunctions); +} + +/** + * @ignore + * @api private + */ +exports.Code = Code; +exports.Symbol = Symbol; +exports.BSON = BSON; +exports.DBRef = DBRef; +exports.Binary = Binary; +exports.ObjectID = ObjectID; +exports.Long = Long; +exports.Timestamp = Timestamp; +exports.Double = Double; +exports.MinKey = MinKey; +exports.MaxKey = MaxKey; +}, + + + +'code': function(module, exports, global, require, undefined){ + /** + * A class representation of the BSON Code type. + * + * @class Represents the BSON Code type. + * @param {String|Function} code a string or function. + * @param {Object} [scope] an optional scope for the function. + * @return {Code} + */ +function Code(code, scope) { + if(!(this instanceof Code)) return new Code(code, scope); + + this._bsontype = 'Code'; + this.code = code; + this.scope = scope == null ? {} : scope; +}; + +/** + * @ignore + * @api private + */ +Code.prototype.toJSON = function() { + return {scope:this.scope, code:this.code}; +} + +exports.Code = Code; +}, + + + +'db_ref': function(module, exports, global, require, undefined){ + /** + * A class representation of the BSON DBRef type. + * + * @class Represents the BSON DBRef type. + * @param {String} namespace the collection name. + * @param {ObjectID} oid the reference ObjectID. + * @param {String} [db] optional db name, if omitted the reference is local to the current db. + * @return {DBRef} + */ +function DBRef(namespace, oid, db) { + if(!(this instanceof DBRef)) return new DBRef(namespace, oid, db); + + this._bsontype = 'DBRef'; + this.namespace = namespace; + this.oid = oid; + this.db = db; +}; + +/** + * @ignore + * @api private + */ +DBRef.prototype.toJSON = function() { + return { + '$ref':this.namespace, + '$id':this.oid, + '$db':this.db == null ? '' : this.db + }; +} + +exports.DBRef = DBRef; +}, + + + +'double': function(module, exports, global, require, undefined){ + /** + * A class representation of the BSON Double type. + * + * @class Represents the BSON Double type. + * @param {Number} value the number we want to represent as a double. + * @return {Double} + */ +function Double(value) { + if(!(this instanceof Double)) return new Double(value); + + this._bsontype = 'Double'; + this.value = value; +} + +/** + * Access the number value. + * + * @return {Number} returns the wrapped double number. + * @api public + */ +Double.prototype.valueOf = function() { + return this.value; +}; + +/** + * @ignore + * @api private + */ +Double.prototype.toJSON = function() { + return this.value; +} + +exports.Double = Double; +}, + + + +'float_parser': function(module, exports, global, require, undefined){ + // Copyright (c) 2008, Fair Oaks Labs, Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// +// Modifications to writeIEEE754 to support negative zeroes made by Brian White + +var readIEEE754 = function(buffer, offset, endian, mLen, nBytes) { + var e, m, + bBE = (endian === 'big'), + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + nBits = -7, + i = bBE ? 0 : (nBytes - 1), + d = bBE ? 1 : -1, + s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity); + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); +}; + +var writeIEEE754 = function(buffer, value, offset, endian, mLen, nBytes) { + var e, m, c, + bBE = (endian === 'big'), + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), + i = bBE ? (nBytes-1) : 0, + d = bBE ? -1 : 1, + s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e+eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); + + buffer[offset + i - d] |= s * 128; +}; + +exports.readIEEE754 = readIEEE754; +exports.writeIEEE754 = writeIEEE754; +}, + + + +'index': function(module, exports, global, require, undefined){ + try { + exports.BSONPure = require('./bson'); + exports.BSONNative = require('../../ext'); +} catch(err) { + // do nothing +} + +[ './binary_parser' + , './binary' + , './code' + , './db_ref' + , './double' + , './max_key' + , './min_key' + , './objectid' + , './symbol' + , './timestamp' + , './long'].forEach(function (path) { + var module = require('./' + path); + for (var i in module) { + exports[i] = module[i]; + } +}); + +// Exports all the classes for the NATIVE JS BSON Parser +exports.native = function() { + var classes = {}; + // Map all the classes + [ './binary_parser' + , './binary' + , './code' + , './db_ref' + , './double' + , './max_key' + , './min_key' + , './objectid' + , './symbol' + , './timestamp' + , './long' + , '../../ext' +].forEach(function (path) { + var module = require('./' + path); + for (var i in module) { + classes[i] = module[i]; + } + }); + // Return classes list + return classes; +} + +// Exports all the classes for the PURE JS BSON Parser +exports.pure = function() { + var classes = {}; + // Map all the classes + [ './binary_parser' + , './binary' + , './code' + , './db_ref' + , './double' + , './max_key' + , './min_key' + , './objectid' + , './symbol' + , './timestamp' + , './long' + , '././bson'].forEach(function (path) { + var module = require('./' + path); + for (var i in module) { + classes[i] = module[i]; + } + }); + // Return classes list + return classes; +} + +}, + + + +'long': function(module, exports, global, require, undefined){ + // Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright 2009 Google Inc. All Rights Reserved + +/** + * Defines a Long class for representing a 64-bit two's-complement + * integer value, which faithfully simulates the behavior of a Java "Long". This + * implementation is derived from LongLib in GWT. + * + * Constructs a 64-bit two's-complement integer, given its low and high 32-bit + * values as *signed* integers. See the from* functions below for more + * convenient ways of constructing Longs. + * + * The internal representation of a Long is the two given signed, 32-bit values. + * We use 32-bit pieces because these are the size of integers on which + * Javascript performs bit-operations. For operations like addition and + * multiplication, we split each number into 16-bit pieces, which can easily be + * multiplied within Javascript's floating-point representation without overflow + * or change in sign. + * + * In the algorithms below, we frequently reduce the negative case to the + * positive case by negating the input(s) and then post-processing the result. + * Note that we must ALWAYS check specially whether those values are MIN_VALUE + * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as + * a positive number, it overflows back into a negative). Not handling this + * case would often result in infinite recursion. + * + * @class Represents the BSON Long type. + * @param {Number} low the low (signed) 32 bits of the Long. + * @param {Number} high the high (signed) 32 bits of the Long. + */ +function Long(low, high) { + if(!(this instanceof Long)) return new Long(low, high); + + this._bsontype = 'Long'; + /** + * @type {number} + * @api private + */ + this.low_ = low | 0; // force into 32 signed bits. + + /** + * @type {number} + * @api private + */ + this.high_ = high | 0; // force into 32 signed bits. +}; + +/** + * Return the int value. + * + * @return {Number} the value, assuming it is a 32-bit integer. + * @api public + */ +Long.prototype.toInt = function() { + return this.low_; +}; + +/** + * Return the Number value. + * + * @return {Number} the closest floating-point representation to this value. + * @api public + */ +Long.prototype.toNumber = function() { + return this.high_ * Long.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); +}; + +/** + * Return the JSON value. + * + * @return {String} the JSON representation. + * @api public + */ +Long.prototype.toJSON = function() { + return this.toString(); +} + +/** + * Return the String value. + * + * @param {Number} [opt_radix] the radix in which the text should be written. + * @return {String} the textual representation of this value. + * @api public + */ +Long.prototype.toString = function(opt_radix) { + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (this.isZero()) { + return '0'; + } + + if (this.isNegative()) { + if (this.equals(Long.MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = Long.fromNumber(radix); + var div = this.div(radixLong); + var rem = div.multiply(radixLong).subtract(this); + return div.toString(radix) + rem.toInt().toString(radix); + } else { + return '-' + this.negate().toString(radix); + } + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Long.fromNumber(Math.pow(radix, 6)); + + var rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower); + var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); + var digits = intval.toString(radix); + + rem = remDiv; + if (rem.isZero()) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } +}; + +/** + * Return the high 32-bits value. + * + * @return {Number} the high 32-bits as a signed value. + * @api public + */ +Long.prototype.getHighBits = function() { + return this.high_; +}; + +/** + * Return the low 32-bits value. + * + * @return {Number} the low 32-bits as a signed value. + * @api public + */ +Long.prototype.getLowBits = function() { + return this.low_; +}; + +/** + * Return the low unsigned 32-bits value. + * + * @return {Number} the low 32-bits as an unsigned value. + * @api public + */ +Long.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : Long.TWO_PWR_32_DBL_ + this.low_; +}; + +/** + * Returns the number of bits needed to represent the absolute value of this Long. + * + * @return {Number} Returns the number of bits needed to represent the absolute value of this Long. + * @api public + */ +Long.prototype.getNumBitsAbs = function() { + if (this.isNegative()) { + if (this.equals(Long.MIN_VALUE)) { + return 64; + } else { + return this.negate().getNumBitsAbs(); + } + } else { + var val = this.high_ != 0 ? this.high_ : this.low_; + for (var bit = 31; bit > 0; bit--) { + if ((val & (1 << bit)) != 0) { + break; + } + } + return this.high_ != 0 ? bit + 33 : bit + 1; + } +}; + +/** + * Return whether this value is zero. + * + * @return {Boolean} whether this value is zero. + * @api public + */ +Long.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; +}; + +/** + * Return whether this value is negative. + * + * @return {Boolean} whether this value is negative. + * @api public + */ +Long.prototype.isNegative = function() { + return this.high_ < 0; +}; + +/** + * Return whether this value is odd. + * + * @return {Boolean} whether this value is odd. + * @api public + */ +Long.prototype.isOdd = function() { + return (this.low_ & 1) == 1; +}; + +/** + * Return whether this Long equals the other + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long equals the other + * @api public + */ +Long.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); +}; + +/** + * Return whether this Long does not equal the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long does not equal the other. + * @api public + */ +Long.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); +}; + +/** + * Return whether this Long is less than the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is less than the other. + * @api public + */ +Long.prototype.lessThan = function(other) { + return this.compare(other) < 0; +}; + +/** + * Return whether this Long is less than or equal to the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is less than or equal to the other. + * @api public + */ +Long.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; +}; + +/** + * Return whether this Long is greater than the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is greater than the other. + * @api public + */ +Long.prototype.greaterThan = function(other) { + return this.compare(other) > 0; +}; + +/** + * Return whether this Long is greater than or equal to the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is greater than or equal to the other. + * @api public + */ +Long.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; +}; + +/** + * Compares this Long with the given one. + * + * @param {Long} other Long to compare against. + * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. + * @api public + */ +Long.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + // at this point, the signs are the same, so subtraction will not overflow + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } +}; + +/** + * The negation of this value. + * + * @return {Long} the negation of this value. + * @api public + */ +Long.prototype.negate = function() { + if (this.equals(Long.MIN_VALUE)) { + return Long.MIN_VALUE; + } else { + return this.not().add(Long.ONE); + } +}; + +/** + * Returns the sum of this and the given Long. + * + * @param {Long} other Long to add to this one. + * @return {Long} the sum of this and the given Long. + * @api public + */ +Long.prototype.add = function(other) { + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns the difference of this and the given Long. + * + * @param {Long} other Long to subtract from this. + * @return {Long} the difference of this and the given Long. + * @api public + */ +Long.prototype.subtract = function(other) { + return this.add(other.negate()); +}; + +/** + * Returns the product of this and the given Long. + * + * @param {Long} other Long to multiply with this. + * @return {Long} the product of this and the other. + * @api public + */ +Long.prototype.multiply = function(other) { + if (this.isZero()) { + return Long.ZERO; + } else if (other.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + return other.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } else if (other.equals(Long.MIN_VALUE)) { + return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + // If both Longs are small, use float multiplication + if (this.lessThan(Long.TWO_PWR_24_) && + other.lessThan(Long.TWO_PWR_24_)) { + return Long.fromNumber(this.toNumber() * other.toNumber()); + } + + // Divide each Long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns this Long divided by the given one. + * + * @param {Long} other Long by which to divide. + * @return {Long} this Long divided by the given one. + * @api public + */ +Long.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + if (other.equals(Long.ONE) || + other.equals(Long.NEG_ONE)) { + return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ONE; + } else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(Long.ZERO)) { + return other.isNegative() ? Long.ONE : Long.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + var res = Long.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + var approxRes = Long.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = Long.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) { + approxRes = Long.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; +}; + +/** + * Returns this Long modulo the given one. + * + * @param {Long} other Long by which to mod. + * @return {Long} this Long modulo the given one. + * @api public + */ +Long.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); +}; + +/** + * The bitwise-NOT of this value. + * + * @return {Long} the bitwise-NOT of this value. + * @api public + */ +Long.prototype.not = function() { + return Long.fromBits(~this.low_, ~this.high_); +}; + +/** + * Returns the bitwise-AND of this Long and the given one. + * + * @param {Long} other the Long with which to AND. + * @return {Long} the bitwise-AND of this and the other. + * @api public + */ +Long.prototype.and = function(other) { + return Long.fromBits(this.low_ & other.low_, this.high_ & other.high_); +}; + +/** + * Returns the bitwise-OR of this Long and the given one. + * + * @param {Long} other the Long with which to OR. + * @return {Long} the bitwise-OR of this and the other. + * @api public + */ +Long.prototype.or = function(other) { + return Long.fromBits(this.low_ | other.low_, this.high_ | other.high_); +}; + +/** + * Returns the bitwise-XOR of this Long and the given one. + * + * @param {Long} other the Long with which to XOR. + * @return {Long} the bitwise-XOR of this and the other. + * @api public + */ +Long.prototype.xor = function(other) { + return Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Long} this shifted to the left by the given amount. + * @api public + */ +Long.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return Long.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return Long.fromBits(0, low << (numBits - 32)); + } + } +}; + +/** + * Returns this Long with bits shifted to the right by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Long} this shifted to the right by the given amount. + * @api public + */ +Long.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return Long.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } +}; + +/** + * Returns this Long with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Long} this shifted to the right by the given amount, with zeros placed into the new leading bits. + * @api public + */ +Long.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return Long.fromBits(high, 0); + } else { + return Long.fromBits(high >>> (numBits - 32), 0); + } + } +}; + +/** + * Returns a Long representing the given (32-bit) integer value. + * + * @param {Number} value the 32-bit integer in question. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Long.INT_CACHE_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Long(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Long.INT_CACHE_[value] = obj; + } + return obj; +}; + +/** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * + * @param {Number} value the number in question. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Long.ZERO; + } else if (value <= -Long.TWO_PWR_63_DBL_) { + return Long.MIN_VALUE; + } else if (value + 1 >= Long.TWO_PWR_63_DBL_) { + return Long.MAX_VALUE; + } else if (value < 0) { + return Long.fromNumber(-value).negate(); + } else { + return new Long( + (value % Long.TWO_PWR_32_DBL_) | 0, + (value / Long.TWO_PWR_32_DBL_) | 0); + } +}; + +/** + * Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. + * + * @param {Number} lowBits the low 32-bits. + * @param {Number} highBits the high 32-bits. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromBits = function(lowBits, highBits) { + return new Long(lowBits, highBits); +}; + +/** + * Returns a Long representation of the given string, written using the given radix. + * + * @param {String} str the textual representation of the Long. + * @param {Number} opt_radix the radix in which the text is written. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return Long.fromString(str.substring(1), radix).negate(); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character: ' + str); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Long.fromNumber(Math.pow(radix, 8)); + + var result = Long.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = Long.fromNumber(Math.pow(radix, size)); + result = result.multiply(power).add(Long.fromNumber(value)); + } else { + result = result.multiply(radixToPower); + result = result.add(Long.fromNumber(value)); + } + } + return result; +}; + +// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the +// from* methods on which they depend. + + +/** + * A cache of the Long representations of small integer values. + * @type {Object} + * @api private + */ +Long.INT_CACHE_ = {}; + +// NOTE: the compiler should inline these constant values below and then remove +// these variables, so there should be no runtime penalty for these. + +/** + * Number used repeated below in calculations. This must appear before the + * first call to any from* function below. + * @type {number} + * @api private + */ +Long.TWO_PWR_16_DBL_ = 1 << 16; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_24_DBL_ = 1 << 24; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_32_DBL_ = Long.TWO_PWR_16_DBL_ * Long.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_31_DBL_ = Long.TWO_PWR_32_DBL_ / 2; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_48_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_64_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_32_DBL_; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_63_DBL_ = Long.TWO_PWR_64_DBL_ / 2; + +/** @type {Long} */ +Long.ZERO = Long.fromInt(0); + +/** @type {Long} */ +Long.ONE = Long.fromInt(1); + +/** @type {Long} */ +Long.NEG_ONE = Long.fromInt(-1); + +/** @type {Long} */ +Long.MAX_VALUE = + Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); + +/** @type {Long} */ +Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0); + +/** + * @type {Long} + * @api private + */ +Long.TWO_PWR_24_ = Long.fromInt(1 << 24); + +/** + * Expose. + */ +exports.Long = Long; +}, + + + +'max_key': function(module, exports, global, require, undefined){ + /** + * A class representation of the BSON MaxKey type. + * + * @class Represents the BSON MaxKey type. + * @return {MaxKey} + */ +function MaxKey() { + if(!(this instanceof MaxKey)) return new MaxKey(); + + this._bsontype = 'MaxKey'; +} + +exports.MaxKey = MaxKey; +}, + + + +'min_key': function(module, exports, global, require, undefined){ + /** + * A class representation of the BSON MinKey type. + * + * @class Represents the BSON MinKey type. + * @return {MinKey} + */ +function MinKey() { + if(!(this instanceof MinKey)) return new MinKey(); + + this._bsontype = 'MinKey'; +} + +exports.MinKey = MinKey; +}, + + + +'objectid': function(module, exports, global, require, undefined){ + /** + * Module dependencies. + */ +var BinaryParser = require('./binary_parser').BinaryParser; + +/** + * Machine id. + * + * Create a random 3-byte value (i.e. unique for this + * process). Other drivers use a md5 of the machine id here, but + * that would mean an asyc call to gethostname, so we don't bother. + */ +var MACHINE_ID = parseInt(Math.random() * 0xFFFFFF, 10); + +// Regular expression that checks for hex value +var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$"); + +/** +* Create a new ObjectID instance +* +* @class Represents the BSON ObjectID type +* @param {String|Number} id Can be a 24 byte hex string, 12 byte binary string or a Number. +* @return {Object} instance of ObjectID. +*/ +var ObjectID = function ObjectID(id, _hex) { + if(!(this instanceof ObjectID)) return new ObjectID(id, _hex); + + this._bsontype = 'ObjectID'; + var __id = null; + + // Throw an error if it's not a valid setup + if(id != null && 'number' != typeof id && (id.length != 12 && id.length != 24)) + throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); + + // Generate id based on the input + if(id == null || typeof id == 'number') { + // convert to 12 byte binary string + this.id = this.generate(id); + } else if(id != null && id.length === 12) { + // assume 12 byte string + this.id = id; + } else if(checkForHexRegExp.test(id)) { + return ObjectID.createFromHexString(id); + } else if(!checkForHexRegExp.test(id)) { + throw new Error("Value passed in is not a valid 24 character hex string"); + } + + if(ObjectID.cacheHexString) this.__id = this.toHexString(); +}; + +// Allow usage of ObjectId aswell as ObjectID +var ObjectId = ObjectID; + +/** +* Return the ObjectID id as a 24 byte hex string representation +* +* @return {String} return the 24 byte hex string representation. +* @api public +*/ +ObjectID.prototype.toHexString = function() { + if(ObjectID.cacheHexString && this.__id) return this.__id; + + var hexString = '' + , number + , value; + + for (var index = 0, len = this.id.length; index < len; index++) { + value = BinaryParser.toByte(this.id[index]); + number = value <= 15 + ? '0' + value.toString(16) + : value.toString(16); + hexString = hexString + number; + } + + if(ObjectID.cacheHexString) this.__id = hexString; + return hexString; +}; + +/** +* Update the ObjectID index used in generating new ObjectID's on the driver +* +* @return {Number} returns next index value. +* @api private +*/ +ObjectID.prototype.get_inc = function() { + return ObjectID.index = (ObjectID.index + 1) % 0xFFFFFF; +}; + +/** +* Update the ObjectID index used in generating new ObjectID's on the driver +* +* @return {Number} returns next index value. +* @api private +*/ +ObjectID.prototype.getInc = function() { + return this.get_inc(); +}; + +/** +* Generate a 12 byte id string used in ObjectID's +* +* @param {Number} [time] optional parameter allowing to pass in a second based timestamp. +* @return {String} return the 12 byte id binary string. +* @api private +*/ +ObjectID.prototype.generate = function(time) { + if ('number' == typeof time) { + var time4Bytes = BinaryParser.encodeInt(time, 32, true, true); + /* for time-based ObjectID the bytes following the time will be zeroed */ + var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); + var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); + var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); + } else { + var unixTime = parseInt(Date.now()/1000,10); + var time4Bytes = BinaryParser.encodeInt(unixTime, 32, true, true); + var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); + var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); + var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); + } + + return time4Bytes + machine3Bytes + pid2Bytes + index3Bytes; +}; + +/** +* Converts the id into a 24 byte hex string for printing +* +* @return {String} return the 24 byte hex string representation. +* @api private +*/ +ObjectID.prototype.toString = function() { + return this.toHexString(); +}; + +/** +* Converts to a string representation of this Id. +* +* @return {String} return the 24 byte hex string representation. +* @api private +*/ +ObjectID.prototype.inspect = ObjectID.prototype.toString; + +/** +* Converts to its JSON representation. +* +* @return {String} return the 24 byte hex string representation. +* @api private +*/ +ObjectID.prototype.toJSON = function() { + return this.toHexString(); +}; + +/** +* Compares the equality of this ObjectID with `otherID`. +* +* @param {Object} otherID ObjectID instance to compare against. +* @return {Bool} the result of comparing two ObjectID's +* @api public +*/ +ObjectID.prototype.equals = function equals (otherID) { + var id = (otherID instanceof ObjectID || otherID.toHexString) + ? otherID.id + : ObjectID.createFromHexString(otherID).id; + + return this.id === id; +} + +/** +* Returns the generation time in seconds that this ID was generated. +* +* @return {Number} return number of seconds in the timestamp part of the 12 byte id. +* @api public +*/ +ObjectID.prototype.getTimestamp = function() { + var timestamp = new Date(); + timestamp.setTime(Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)) * 1000); + return timestamp; +} + +/** +* @ignore +* @api private +*/ +ObjectID.index = 0; + +ObjectID.createPk = function createPk () { + return new ObjectID(); +}; + +/** +* Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID. +* +* @param {Number} time an integer number representing a number of seconds. +* @return {ObjectID} return the created ObjectID +* @api public +*/ +ObjectID.createFromTime = function createFromTime (time) { + var id = BinaryParser.encodeInt(time, 32, true, true) + + BinaryParser.encodeInt(0, 64, true, true); + return new ObjectID(id); +}; + +/** +* Creates an ObjectID from a hex string representation of an ObjectID. +* +* @param {String} hexString create a ObjectID from a passed in 24 byte hexstring. +* @return {ObjectID} return the created ObjectID +* @api public +*/ +ObjectID.createFromHexString = function createFromHexString (hexString) { + // Throw an error if it's not a valid setup + if(typeof hexString === 'undefined' || hexString != null && hexString.length != 24) + throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); + + var len = hexString.length; + + if(len > 12*2) { + throw new Error('Id cannot be longer than 12 bytes'); + } + + var result = '' + , string + , number; + + for (var index = 0; index < len; index += 2) { + string = hexString.substr(index, 2); + number = parseInt(string, 16); + result += BinaryParser.fromByte(number); + } + + return new ObjectID(result, hexString); +}; + +/** +* @ignore +*/ +Object.defineProperty(ObjectID.prototype, "generationTime", { + enumerable: true + , get: function () { + return Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)); + } + , set: function (value) { + var value = BinaryParser.encodeInt(value, 32, true, true); + this.id = value + this.id.substr(4); + // delete this.__id; + this.toHexString(); + } +}); + +/** + * Expose. + */ +exports.ObjectID = ObjectID; +exports.ObjectId = ObjectID; +}, + + + +'symbol': function(module, exports, global, require, undefined){ + /** + * A class representation of the BSON Symbol type. + * + * @class Represents the BSON Symbol type. + * @param {String} value the string representing the symbol. + * @return {Symbol} + */ +function Symbol(value) { + if(!(this instanceof Symbol)) return new Symbol(value); + this._bsontype = 'Symbol'; + this.value = value; +} + +/** + * Access the wrapped string value. + * + * @return {String} returns the wrapped string. + * @api public + */ +Symbol.prototype.valueOf = function() { + return this.value; +}; + +/** + * @ignore + * @api private + */ +Symbol.prototype.toString = function() { + return this.value; +} + +/** + * @ignore + * @api private + */ +Symbol.prototype.inspect = function() { + return this.value; +} + +/** + * @ignore + * @api private + */ +Symbol.prototype.toJSON = function() { + return this.value; +} + +exports.Symbol = Symbol; +}, + + + +'timestamp': function(module, exports, global, require, undefined){ + // Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright 2009 Google Inc. All Rights Reserved + +/** + * Defines a Timestamp class for representing a 64-bit two's-complement + * integer value, which faithfully simulates the behavior of a Java "Timestamp". This + * implementation is derived from TimestampLib in GWT. + * + * Constructs a 64-bit two's-complement integer, given its low and high 32-bit + * values as *signed* integers. See the from* functions below for more + * convenient ways of constructing Timestamps. + * + * The internal representation of a Timestamp is the two given signed, 32-bit values. + * We use 32-bit pieces because these are the size of integers on which + * Javascript performs bit-operations. For operations like addition and + * multiplication, we split each number into 16-bit pieces, which can easily be + * multiplied within Javascript's floating-point representation without overflow + * or change in sign. + * + * In the algorithms below, we frequently reduce the negative case to the + * positive case by negating the input(s) and then post-processing the result. + * Note that we must ALWAYS check specially whether those values are MIN_VALUE + * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as + * a positive number, it overflows back into a negative). Not handling this + * case would often result in infinite recursion. + * + * @class Represents the BSON Timestamp type. + * @param {Number} low the low (signed) 32 bits of the Timestamp. + * @param {Number} high the high (signed) 32 bits of the Timestamp. + */ +function Timestamp(low, high) { + if(!(this instanceof Timestamp)) return new Timestamp(low, high); + this._bsontype = 'Timestamp'; + /** + * @type {number} + * @api private + */ + this.low_ = low | 0; // force into 32 signed bits. + + /** + * @type {number} + * @api private + */ + this.high_ = high | 0; // force into 32 signed bits. +}; + +/** + * Return the int value. + * + * @return {Number} the value, assuming it is a 32-bit integer. + * @api public + */ +Timestamp.prototype.toInt = function() { + return this.low_; +}; + +/** + * Return the Number value. + * + * @return {Number} the closest floating-point representation to this value. + * @api public + */ +Timestamp.prototype.toNumber = function() { + return this.high_ * Timestamp.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); +}; + +/** + * Return the JSON value. + * + * @return {String} the JSON representation. + * @api public + */ +Timestamp.prototype.toJSON = function() { + return this.toString(); +} + +/** + * Return the String value. + * + * @param {Number} [opt_radix] the radix in which the text should be written. + * @return {String} the textual representation of this value. + * @api public + */ +Timestamp.prototype.toString = function(opt_radix) { + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (this.isZero()) { + return '0'; + } + + if (this.isNegative()) { + if (this.equals(Timestamp.MIN_VALUE)) { + // We need to change the Timestamp value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixTimestamp = Timestamp.fromNumber(radix); + var div = this.div(radixTimestamp); + var rem = div.multiply(radixTimestamp).subtract(this); + return div.toString(radix) + rem.toInt().toString(radix); + } else { + return '-' + this.negate().toString(radix); + } + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Timestamp.fromNumber(Math.pow(radix, 6)); + + var rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower); + var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); + var digits = intval.toString(radix); + + rem = remDiv; + if (rem.isZero()) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } +}; + +/** + * Return the high 32-bits value. + * + * @return {Number} the high 32-bits as a signed value. + * @api public + */ +Timestamp.prototype.getHighBits = function() { + return this.high_; +}; + +/** + * Return the low 32-bits value. + * + * @return {Number} the low 32-bits as a signed value. + * @api public + */ +Timestamp.prototype.getLowBits = function() { + return this.low_; +}; + +/** + * Return the low unsigned 32-bits value. + * + * @return {Number} the low 32-bits as an unsigned value. + * @api public + */ +Timestamp.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : Timestamp.TWO_PWR_32_DBL_ + this.low_; +}; + +/** + * Returns the number of bits needed to represent the absolute value of this Timestamp. + * + * @return {Number} Returns the number of bits needed to represent the absolute value of this Timestamp. + * @api public + */ +Timestamp.prototype.getNumBitsAbs = function() { + if (this.isNegative()) { + if (this.equals(Timestamp.MIN_VALUE)) { + return 64; + } else { + return this.negate().getNumBitsAbs(); + } + } else { + var val = this.high_ != 0 ? this.high_ : this.low_; + for (var bit = 31; bit > 0; bit--) { + if ((val & (1 << bit)) != 0) { + break; + } + } + return this.high_ != 0 ? bit + 33 : bit + 1; + } +}; + +/** + * Return whether this value is zero. + * + * @return {Boolean} whether this value is zero. + * @api public + */ +Timestamp.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; +}; + +/** + * Return whether this value is negative. + * + * @return {Boolean} whether this value is negative. + * @api public + */ +Timestamp.prototype.isNegative = function() { + return this.high_ < 0; +}; + +/** + * Return whether this value is odd. + * + * @return {Boolean} whether this value is odd. + * @api public + */ +Timestamp.prototype.isOdd = function() { + return (this.low_ & 1) == 1; +}; + +/** + * Return whether this Timestamp equals the other + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp equals the other + * @api public + */ +Timestamp.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); +}; + +/** + * Return whether this Timestamp does not equal the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp does not equal the other. + * @api public + */ +Timestamp.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); +}; + +/** + * Return whether this Timestamp is less than the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is less than the other. + * @api public + */ +Timestamp.prototype.lessThan = function(other) { + return this.compare(other) < 0; +}; + +/** + * Return whether this Timestamp is less than or equal to the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is less than or equal to the other. + * @api public + */ +Timestamp.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; +}; + +/** + * Return whether this Timestamp is greater than the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is greater than the other. + * @api public + */ +Timestamp.prototype.greaterThan = function(other) { + return this.compare(other) > 0; +}; + +/** + * Return whether this Timestamp is greater than or equal to the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is greater than or equal to the other. + * @api public + */ +Timestamp.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; +}; + +/** + * Compares this Timestamp with the given one. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. + * @api public + */ +Timestamp.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + // at this point, the signs are the same, so subtraction will not overflow + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } +}; + +/** + * The negation of this value. + * + * @return {Timestamp} the negation of this value. + * @api public + */ +Timestamp.prototype.negate = function() { + if (this.equals(Timestamp.MIN_VALUE)) { + return Timestamp.MIN_VALUE; + } else { + return this.not().add(Timestamp.ONE); + } +}; + +/** + * Returns the sum of this and the given Timestamp. + * + * @param {Timestamp} other Timestamp to add to this one. + * @return {Timestamp} the sum of this and the given Timestamp. + * @api public + */ +Timestamp.prototype.add = function(other) { + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns the difference of this and the given Timestamp. + * + * @param {Timestamp} other Timestamp to subtract from this. + * @return {Timestamp} the difference of this and the given Timestamp. + * @api public + */ +Timestamp.prototype.subtract = function(other) { + return this.add(other.negate()); +}; + +/** + * Returns the product of this and the given Timestamp. + * + * @param {Timestamp} other Timestamp to multiply with this. + * @return {Timestamp} the product of this and the other. + * @api public + */ +Timestamp.prototype.multiply = function(other) { + if (this.isZero()) { + return Timestamp.ZERO; + } else if (other.isZero()) { + return Timestamp.ZERO; + } + + if (this.equals(Timestamp.MIN_VALUE)) { + return other.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; + } else if (other.equals(Timestamp.MIN_VALUE)) { + return this.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + // If both Timestamps are small, use float multiplication + if (this.lessThan(Timestamp.TWO_PWR_24_) && + other.lessThan(Timestamp.TWO_PWR_24_)) { + return Timestamp.fromNumber(this.toNumber() * other.toNumber()); + } + + // Divide each Timestamp into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns this Timestamp divided by the given one. + * + * @param {Timestamp} other Timestamp by which to divide. + * @return {Timestamp} this Timestamp divided by the given one. + * @api public + */ +Timestamp.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return Timestamp.ZERO; + } + + if (this.equals(Timestamp.MIN_VALUE)) { + if (other.equals(Timestamp.ONE) || + other.equals(Timestamp.NEG_ONE)) { + return Timestamp.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + } else if (other.equals(Timestamp.MIN_VALUE)) { + return Timestamp.ONE; + } else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(Timestamp.ZERO)) { + return other.isNegative() ? Timestamp.ONE : Timestamp.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(Timestamp.MIN_VALUE)) { + return Timestamp.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + var res = Timestamp.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + var approxRes = Timestamp.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = Timestamp.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) { + approxRes = Timestamp.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; +}; + +/** + * Returns this Timestamp modulo the given one. + * + * @param {Timestamp} other Timestamp by which to mod. + * @return {Timestamp} this Timestamp modulo the given one. + * @api public + */ +Timestamp.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); +}; + +/** + * The bitwise-NOT of this value. + * + * @return {Timestamp} the bitwise-NOT of this value. + * @api public + */ +Timestamp.prototype.not = function() { + return Timestamp.fromBits(~this.low_, ~this.high_); +}; + +/** + * Returns the bitwise-AND of this Timestamp and the given one. + * + * @param {Timestamp} other the Timestamp with which to AND. + * @return {Timestamp} the bitwise-AND of this and the other. + * @api public + */ +Timestamp.prototype.and = function(other) { + return Timestamp.fromBits(this.low_ & other.low_, this.high_ & other.high_); +}; + +/** + * Returns the bitwise-OR of this Timestamp and the given one. + * + * @param {Timestamp} other the Timestamp with which to OR. + * @return {Timestamp} the bitwise-OR of this and the other. + * @api public + */ +Timestamp.prototype.or = function(other) { + return Timestamp.fromBits(this.low_ | other.low_, this.high_ | other.high_); +}; + +/** + * Returns the bitwise-XOR of this Timestamp and the given one. + * + * @param {Timestamp} other the Timestamp with which to XOR. + * @return {Timestamp} the bitwise-XOR of this and the other. + * @api public + */ +Timestamp.prototype.xor = function(other) { + return Timestamp.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); +}; + +/** + * Returns this Timestamp with bits shifted to the left by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Timestamp} this shifted to the left by the given amount. + * @api public + */ +Timestamp.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return Timestamp.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return Timestamp.fromBits(0, low << (numBits - 32)); + } + } +}; + +/** + * Returns this Timestamp with bits shifted to the right by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Timestamp} this shifted to the right by the given amount. + * @api public + */ +Timestamp.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Timestamp.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return Timestamp.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } +}; + +/** + * Returns this Timestamp with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Timestamp} this shifted to the right by the given amount, with zeros placed into the new leading bits. + * @api public + */ +Timestamp.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Timestamp.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return Timestamp.fromBits(high, 0); + } else { + return Timestamp.fromBits(high >>> (numBits - 32), 0); + } + } +}; + +/** + * Returns a Timestamp representing the given (32-bit) integer value. + * + * @param {Number} value the 32-bit integer in question. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Timestamp.INT_CACHE_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Timestamp(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Timestamp.INT_CACHE_[value] = obj; + } + return obj; +}; + +/** + * Returns a Timestamp representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * + * @param {Number} value the number in question. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Timestamp.ZERO; + } else if (value <= -Timestamp.TWO_PWR_63_DBL_) { + return Timestamp.MIN_VALUE; + } else if (value + 1 >= Timestamp.TWO_PWR_63_DBL_) { + return Timestamp.MAX_VALUE; + } else if (value < 0) { + return Timestamp.fromNumber(-value).negate(); + } else { + return new Timestamp( + (value % Timestamp.TWO_PWR_32_DBL_) | 0, + (value / Timestamp.TWO_PWR_32_DBL_) | 0); + } +}; + +/** + * Returns a Timestamp representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. + * + * @param {Number} lowBits the low 32-bits. + * @param {Number} highBits the high 32-bits. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromBits = function(lowBits, highBits) { + return new Timestamp(lowBits, highBits); +}; + +/** + * Returns a Timestamp representation of the given string, written using the given radix. + * + * @param {String} str the textual representation of the Timestamp. + * @param {Number} opt_radix the radix in which the text is written. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return Timestamp.fromString(str.substring(1), radix).negate(); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character: ' + str); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Timestamp.fromNumber(Math.pow(radix, 8)); + + var result = Timestamp.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = Timestamp.fromNumber(Math.pow(radix, size)); + result = result.multiply(power).add(Timestamp.fromNumber(value)); + } else { + result = result.multiply(radixToPower); + result = result.add(Timestamp.fromNumber(value)); + } + } + return result; +}; + +// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the +// from* methods on which they depend. + + +/** + * A cache of the Timestamp representations of small integer values. + * @type {Object} + * @api private + */ +Timestamp.INT_CACHE_ = {}; + +// NOTE: the compiler should inline these constant values below and then remove +// these variables, so there should be no runtime penalty for these. + +/** + * Number used repeated below in calculations. This must appear before the + * first call to any from* function below. + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_16_DBL_ = 1 << 16; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_24_DBL_ = 1 << 24; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_32_DBL_ = Timestamp.TWO_PWR_16_DBL_ * Timestamp.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_31_DBL_ = Timestamp.TWO_PWR_32_DBL_ / 2; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_48_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_64_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_32_DBL_; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_63_DBL_ = Timestamp.TWO_PWR_64_DBL_ / 2; + +/** @type {Timestamp} */ +Timestamp.ZERO = Timestamp.fromInt(0); + +/** @type {Timestamp} */ +Timestamp.ONE = Timestamp.fromInt(1); + +/** @type {Timestamp} */ +Timestamp.NEG_ONE = Timestamp.fromInt(-1); + +/** @type {Timestamp} */ +Timestamp.MAX_VALUE = + Timestamp.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); + +/** @type {Timestamp} */ +Timestamp.MIN_VALUE = Timestamp.fromBits(0, 0x80000000 | 0); + +/** + * @type {Timestamp} + * @api private + */ +Timestamp.TWO_PWR_24_ = Timestamp.fromInt(1 << 24); + +/** + * Expose. + */ +exports.Timestamp = Timestamp; +}, + + }); + + +if(typeof module != 'undefined' && module.exports ){ + module.exports = bson; + + if( !module.parent ){ + bson(); + } +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json new file mode 100644 index 0000000..3ebb587 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json @@ -0,0 +1,8 @@ +{ "name" : "bson" +, "description" : "A bson parser for node.js and the browser" +, "main": "../lib/bson/bson" +, "directories" : { "lib" : "../lib/bson" } +, "engines" : { "node" : ">=0.6.0" } +, "licenses" : [ { "type" : "Apache License, Version 2.0" + , "url" : "http://www.apache.org/licenses/LICENSE-2.0" } ] +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js new file mode 100644 index 0000000..bb80238 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js @@ -0,0 +1,7 @@ +require('one'); + +one('./package.json') + .tie('bson', BSON) + // .exclude('buffer') + .tie('buffer', {}) + .save('./browser_build/bson.js') \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log new file mode 100644 index 0000000..92b4b8b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log @@ -0,0 +1,11 @@ +gyp ERR! configure error +gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. +gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:113:14) +gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:81:11 +gyp ERR! stack at Object.oncomplete (fs.js:107:15) +gyp ERR! System Windows_NT 6.1.7600 +gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" +gyp ERR! cwd D:\helloexpress\node_modules\mongoose\node_modules\mongodb\node_modules\bson +gyp ERR! node -v v0.10.9 +gyp ERR! node-gyp -v v0.9.6 +gyp ERR! not ok diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile new file mode 100644 index 0000000..435999e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile @@ -0,0 +1,28 @@ +NODE = node +name = all +JOBS = 1 + +all: + rm -rf build .lock-wscript bson.node + node-waf configure build + cp -R ./build/Release/bson.node . || true + +all_debug: + rm -rf build .lock-wscript bson.node + node-waf --debug configure build + cp -R ./build/Release/bson.node . || true + +clang: + rm -rf build .lock-wscript bson.node + CXX=clang node-waf configure build + cp -R ./build/Release/bson.node . || true + +clang_debug: + rm -rf build .lock-wscript bson.node + CXX=clang node-waf --debug configure build + cp -R ./build/Release/bson.node . || true + +clean: + rm -rf build .lock-wscript bson.node + +.PHONY: all \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc new file mode 100644 index 0000000..8a2ec8b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc @@ -0,0 +1,1006 @@ +//=========================================================================== + +#include +#include +#include +#include +#include + +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunused-parameter" +#endif + +#include + +// this and the above block must be around the v8.h header otherwise +// v8 is not happy +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __sun + #include +#endif + +#include "bson.h" + +using namespace v8; +using namespace node; + +//=========================================================================== + +void DataStream::WriteObjectId(const Handle& object, const Handle& key) +{ + uint16_t buffer[12]; + object->Get(key)->ToString()->Write(buffer, 0, 12); + for(uint32_t i = 0; i < 12; ++i) + { + *p++ = (char) buffer[i]; + } +} + +void ThrowAllocatedStringException(size_t allocationSize, const char* format, ...) +{ + va_list args; + va_start(args, format); + char* string = (char*) malloc(allocationSize); + vsprintf(string, format, args); + va_end(args); + + throw string; +} + +void DataStream::CheckKey(const Local& keyName) +{ + size_t keyLength = keyName->Utf8Length(); + if(keyLength == 0) return; + + char* keyStringBuffer = (char*) alloca(keyLength+1); + keyName->WriteUtf8(keyStringBuffer); + + if(keyStringBuffer[0] == '$') + { + ThrowAllocatedStringException(64+keyLength, "key %s must not start with '$'", keyStringBuffer); + } + + if(strchr(keyStringBuffer, '.') != NULL) + { + ThrowAllocatedStringException(64+keyLength, "key %s must not contain '.'", keyStringBuffer); + } +} + +template void BSONSerializer::SerializeDocument(const Handle& value) +{ + void* documentSize = this->BeginWriteSize(); + Local object = bson->GetSerializeObject(value); + + // Get the object property names + #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 6 + Local propertyNames = object->GetPropertyNames(); + #else + Local propertyNames = object->GetOwnPropertyNames(); + #endif + + // Length of the property + int propertyLength = propertyNames->Length(); + for(int i = 0; i < propertyLength; ++i) + { + const Local& propertyName = propertyNames->Get(i)->ToString(); + if(checkKeys) this->CheckKey(propertyName); + + const Local& propertyValue = object->Get(propertyName); + + if(serializeFunctions || !propertyValue->IsFunction()) + { + void* typeLocation = this->BeginWriteType(); + this->WriteString(propertyName); + SerializeValue(typeLocation, propertyValue); + } + } + + this->WriteByte(0); + this->CommitSize(documentSize); +} + +template void BSONSerializer::SerializeArray(const Handle& value) +{ + void* documentSize = this->BeginWriteSize(); + + Local array = Local::Cast(value->ToObject()); + uint32_t arrayLength = array->Length(); + + for(uint32_t i = 0; i < arrayLength; ++i) + { + void* typeLocation = this->BeginWriteType(); + this->WriteUInt32String(i); + SerializeValue(typeLocation, array->Get(i)); + } + + this->WriteByte(0); + this->CommitSize(documentSize); +} + +// This is templated so that we can use this function to both count the number of bytes, and to serialize those bytes. +// The template approach eliminates almost all of the inspection of values unless they're required (eg. string lengths) +// and ensures that there is always consistency between bytes counted and bytes written by design. +template void BSONSerializer::SerializeValue(void* typeLocation, const Handle& value) +{ + if(value->IsNumber()) + { + double doubleValue = value->NumberValue(); + int intValue = (int) doubleValue; + if(intValue == doubleValue) + { + this->CommitType(typeLocation, BSON_TYPE_INT); + this->WriteInt32(intValue); + } + else + { + this->CommitType(typeLocation, BSON_TYPE_NUMBER); + this->WriteDouble(doubleValue); + } + } + else if(value->IsString()) + { + this->CommitType(typeLocation, BSON_TYPE_STRING); + this->WriteLengthPrefixedString(value->ToString()); + } + else if(value->IsBoolean()) + { + this->CommitType(typeLocation, BSON_TYPE_BOOLEAN); + this->WriteBool(value); + } + else if(value->IsArray()) + { + this->CommitType(typeLocation, BSON_TYPE_ARRAY); + SerializeArray(value); + } + else if(value->IsDate()) + { + this->CommitType(typeLocation, BSON_TYPE_DATE); + this->WriteInt64(value); + } + else if(value->IsRegExp()) + { + this->CommitType(typeLocation, BSON_TYPE_REGEXP); + const Handle& regExp = Handle::Cast(value); + + this->WriteString(regExp->GetSource()); + + int flags = regExp->GetFlags(); + if(flags & RegExp::kGlobal) this->WriteByte('s'); + if(flags & RegExp::kIgnoreCase) this->WriteByte('i'); + if(flags & RegExp::kMultiline) this->WriteByte('m'); + this->WriteByte(0); + } + else if(value->IsFunction()) + { + this->CommitType(typeLocation, BSON_TYPE_CODE); + this->WriteLengthPrefixedString(value->ToString()); + } + else if(value->IsObject()) + { + const Local& object = value->ToObject(); + if(object->Has(bson->_bsontypeString)) + { + const Local& constructorString = object->GetConstructorName(); + if(bson->longString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_LONG); + this->WriteInt32(object, bson->_longLowString); + this->WriteInt32(object, bson->_longHighString); + } + else if(bson->timestampString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_TIMESTAMP); + this->WriteInt32(object, bson->_longLowString); + this->WriteInt32(object, bson->_longHighString); + } + else if(bson->objectIDString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_OID); + this->WriteObjectId(object, bson->_objectIDidString); + } + else if(bson->binaryString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_BINARY); + + uint32_t length = object->Get(bson->_binaryPositionString)->Uint32Value(); + Local bufferObj = object->Get(bson->_binaryBufferString)->ToObject(); + + this->WriteInt32(length); + this->WriteByte(object, bson->_binarySubTypeString); // write subtype + // If type 0x02 write the array length aswell + if(object->Get(bson->_binarySubTypeString)->Int32Value() == 0x02) { + this->WriteInt32(length); + } + // Write the actual data + this->WriteData(Buffer::Data(bufferObj), length); + } + else if(bson->doubleString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_NUMBER); + this->WriteDouble(object, bson->_doubleValueString); + } + else if(bson->symbolString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_SYMBOL); + this->WriteLengthPrefixedString(object->Get(bson->_symbolValueString)->ToString()); + } + else if(bson->codeString->StrictEquals(constructorString)) + { + const Local& function = object->Get(bson->_codeCodeString)->ToString(); + const Local& scope = object->Get(bson->_codeScopeString)->ToObject(); + + // For Node < 0.6.X use the GetPropertyNames + #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 6 + uint32_t propertyNameLength = scope->GetPropertyNames()->Length(); + #else + uint32_t propertyNameLength = scope->GetOwnPropertyNames()->Length(); + #endif + + if(propertyNameLength > 0) + { + this->CommitType(typeLocation, BSON_TYPE_CODE_W_SCOPE); + void* codeWidthScopeSize = this->BeginWriteSize(); + this->WriteLengthPrefixedString(function->ToString()); + SerializeDocument(scope); + this->CommitSize(codeWidthScopeSize); + } + else + { + this->CommitType(typeLocation, BSON_TYPE_CODE); + this->WriteLengthPrefixedString(function->ToString()); + } + } + else if(bson->dbrefString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_OBJECT); + + void* dbRefSize = this->BeginWriteSize(); + + void* refType = this->BeginWriteType(); + this->WriteData("$ref", 5); + SerializeValue(refType, object->Get(bson->_dbRefNamespaceString)); + + void* idType = this->BeginWriteType(); + this->WriteData("$id", 4); + SerializeValue(idType, object->Get(bson->_dbRefOidString)); + + const Local& refDbValue = object->Get(bson->_dbRefDbString); + if(!refDbValue->IsUndefined()) + { + void* dbType = this->BeginWriteType(); + this->WriteData("$db", 4); + SerializeValue(dbType, refDbValue); + } + + this->WriteByte(0); + this->CommitSize(dbRefSize); + } + else if(bson->minKeyString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_MIN_KEY); + } + else if(bson->maxKeyString->StrictEquals(constructorString)) + { + this->CommitType(typeLocation, BSON_TYPE_MAX_KEY); + } + } + else if(Buffer::HasInstance(value)) + { + this->CommitType(typeLocation, BSON_TYPE_BINARY); + + #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 + Buffer *buffer = ObjectWrap::Unwrap(value->ToObject()); + uint32_t length = object->length(); + #else + uint32_t length = Buffer::Length(value->ToObject()); + #endif + + this->WriteInt32(length); + this->WriteByte(0); + this->WriteData(Buffer::Data(value->ToObject()), length); + } + else + { + this->CommitType(typeLocation, BSON_TYPE_OBJECT); + SerializeDocument(value); + } + } + else if(value->IsNull() || value->IsUndefined()) + { + this->CommitType(typeLocation, BSON_TYPE_NULL); + } +} + +// Data points to start of element list, length is length of entire document including '\0' but excluding initial size +BSONDeserializer::BSONDeserializer(BSON* aBson, char* data, size_t length) +: bson(aBson), + pStart(data), + p(data), + pEnd(data + length - 1) +{ + if(*pEnd != '\0') ThrowAllocatedStringException(64, "Missing end of document marker '\\0'"); +} + +BSONDeserializer::BSONDeserializer(BSONDeserializer& parentSerializer, size_t length) +: bson(parentSerializer.bson), + pStart(parentSerializer.p), + p(parentSerializer.p), + pEnd(parentSerializer.p + length - 1) +{ + parentSerializer.p += length; + if(pEnd > parentSerializer.pEnd) ThrowAllocatedStringException(64, "Child document exceeds parent's bounds"); + if(*pEnd != '\0') ThrowAllocatedStringException(64, "Missing end of document marker '\\0'"); +} + +Local BSONDeserializer::ReadCString() +{ + char* start = p; + while(*p++) { } + return String::New(start, (int32_t) (p-start-1) ); +} + +int32_t BSONDeserializer::ReadRegexOptions() +{ + int32_t options = 0; + for(;;) + { + switch(*p++) + { + case '\0': return options; + case 's': options |= RegExp::kGlobal; break; + case 'i': options |= RegExp::kIgnoreCase; break; + case 'm': options |= RegExp::kMultiline; break; + } + } +} + +uint32_t BSONDeserializer::ReadIntegerString() +{ + uint32_t value = 0; + while(*p) + { + if(*p < '0' || *p > '9') ThrowAllocatedStringException(64, "Invalid key for array"); + value = value * 10 + *p++ - '0'; + } + ++p; + return value; +} + +Local BSONDeserializer::ReadString() +{ + uint32_t length = ReadUInt32(); + char* start = p; + p += length; + return String::New(start, length-1); +} + +Local BSONDeserializer::ReadObjectId() +{ + uint16_t objectId[12]; + for(size_t i = 0; i < 12; ++i) + { + objectId[i] = *reinterpret_cast(p++); + } + return String::New(objectId, 12); +} + +Handle BSONDeserializer::DeserializeDocument() +{ + uint32_t length = ReadUInt32(); + if(length < 5) ThrowAllocatedStringException(64, "Bad BSON: Document is less than 5 bytes"); + + BSONDeserializer documentDeserializer(*this, length-4); + return documentDeserializer.DeserializeDocumentInternal(); +} + +Handle BSONDeserializer::DeserializeDocumentInternal() +{ + Local returnObject = Object::New(); + + while(HasMoreData()) + { + BsonType type = (BsonType) ReadByte(); + const Local& name = ReadCString(); + const Handle& value = DeserializeValue(type); + returnObject->ForceSet(name, value); + } + if(p != pEnd) ThrowAllocatedStringException(64, "Bad BSON Document: Serialize consumed unexpected number of bytes"); + + // From JavaScript: + // if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']); + if(returnObject->Has(bson->_dbRefIdRefString)) + { + Local argv[] = { returnObject->Get(bson->_dbRefRefString), returnObject->Get(bson->_dbRefIdRefString), returnObject->Get(bson->_dbRefDbRefString) }; + return bson->dbrefConstructor->NewInstance(3, argv); + } + else + { + return returnObject; + } +} + +Handle BSONDeserializer::DeserializeArray() +{ + uint32_t length = ReadUInt32(); + if(length < 5) ThrowAllocatedStringException(64, "Bad BSON: Array Document is less than 5 bytes"); + + BSONDeserializer documentDeserializer(*this, length-4); + return documentDeserializer.DeserializeArrayInternal(); +} + +Handle BSONDeserializer::DeserializeArrayInternal() +{ + Local returnArray = Array::New(); + + while(HasMoreData()) + { + BsonType type = (BsonType) ReadByte(); + uint32_t index = ReadIntegerString(); + const Handle& value = DeserializeValue(type); + returnArray->Set(index, value); + } + if(p != pEnd) ThrowAllocatedStringException(64, "Bad BSON Array: Serialize consumed unexpected number of bytes"); + + return returnArray; +} + +Handle BSONDeserializer::DeserializeValue(BsonType type) +{ + switch(type) + { + case BSON_TYPE_STRING: + return ReadString(); + + case BSON_TYPE_INT: + return Integer::New(ReadInt32()); + + case BSON_TYPE_NUMBER: + return Number::New(ReadDouble()); + + case BSON_TYPE_NULL: + return Null(); + + case BSON_TYPE_UNDEFINED: + return Undefined(); + + case BSON_TYPE_TIMESTAMP: + { + int32_t lowBits = ReadInt32(); + int32_t highBits = ReadInt32(); + Local argv[] = { Int32::New(lowBits), Int32::New(highBits) }; + return bson->timestampConstructor->NewInstance(2, argv); + } + + case BSON_TYPE_BOOLEAN: + return (ReadByte() != 0) ? True() : False(); + + case BSON_TYPE_REGEXP: + { + const Local& regex = ReadCString(); + int32_t options = ReadRegexOptions(); + return RegExp::New(regex, (RegExp::Flags) options); + } + + case BSON_TYPE_CODE: + { + const Local& code = ReadString(); + const Local& scope = Object::New(); + Local argv[] = { code, scope }; + return bson->codeConstructor->NewInstance(2, argv); + } + + case BSON_TYPE_CODE_W_SCOPE: + { + ReadUInt32(); + const Local& code = ReadString(); + const Handle& scope = DeserializeDocument(); + Local argv[] = { code, scope->ToObject() }; + return bson->codeConstructor->NewInstance(2, argv); + } + + case BSON_TYPE_OID: + { + Local argv[] = { ReadObjectId() }; + return bson->objectIDConstructor->NewInstance(1, argv); + } + + case BSON_TYPE_BINARY: + { + uint32_t length = ReadUInt32(); + uint32_t subType = ReadByte(); + if(subType == 0x02) { + length = ReadInt32(); + } + + Buffer* buffer = Buffer::New(p, length); + p += length; + + Handle argv[] = { buffer->handle_, Uint32::New(subType) }; + return bson->binaryConstructor->NewInstance(2, argv); + } + + case BSON_TYPE_LONG: + { + // Read 32 bit integers + int32_t lowBits = (int32_t) ReadInt32(); + int32_t highBits = (int32_t) ReadInt32(); + + // If value is < 2^53 and >-2^53 + if((highBits < 0x200000 || (highBits == 0x200000 && lowBits == 0)) && highBits >= -0x200000) { + // Adjust the pointer and read as 64 bit value + p -= 8; + // Read the 64 bit value + int64_t finalValue = (int64_t) ReadInt64(); + return Number::New(finalValue); + } + + Local argv[] = { Int32::New(lowBits), Int32::New(highBits) }; + return bson->longConstructor->NewInstance(2, argv); + } + + case BSON_TYPE_DATE: + return Date::New((double) ReadInt64()); + + case BSON_TYPE_ARRAY: + return DeserializeArray(); + + case BSON_TYPE_OBJECT: + return DeserializeDocument(); + + case BSON_TYPE_SYMBOL: + { + const Local& string = ReadString(); + Local argv[] = { string }; + return bson->symbolConstructor->NewInstance(1, argv); + } + + case BSON_TYPE_MIN_KEY: + return bson->minKeyConstructor->NewInstance(); + + case BSON_TYPE_MAX_KEY: + return bson->maxKeyConstructor->NewInstance(); + + default: + ThrowAllocatedStringException(64, "Unhandled BSON Type: %d", type); + } + + return v8::Null(); +} + + +static Handle VException(const char *msg) +{ + HandleScope scope; + return ThrowException(Exception::Error(String::New(msg))); +} + +Persistent BSON::constructor_template; + +BSON::BSON() : ObjectWrap() +{ + // Setup pre-allocated comparision objects + _bsontypeString = Persistent::New(String::New("_bsontype")); + _longLowString = Persistent::New(String::New("low_")); + _longHighString = Persistent::New(String::New("high_")); + _objectIDidString = Persistent::New(String::New("id")); + _binaryPositionString = Persistent::New(String::New("position")); + _binarySubTypeString = Persistent::New(String::New("sub_type")); + _binaryBufferString = Persistent::New(String::New("buffer")); + _doubleValueString = Persistent::New(String::New("value")); + _symbolValueString = Persistent::New(String::New("value")); + _dbRefRefString = Persistent::New(String::New("$ref")); + _dbRefIdRefString = Persistent::New(String::New("$id")); + _dbRefDbRefString = Persistent::New(String::New("$db")); + _dbRefNamespaceString = Persistent::New(String::New("namespace")); + _dbRefDbString = Persistent::New(String::New("db")); + _dbRefOidString = Persistent::New(String::New("oid")); + _codeCodeString = Persistent::New(String::New("code")); + _codeScopeString = Persistent::New(String::New("scope")); + _toBSONString = Persistent::New(String::New("toBSON")); + + longString = Persistent::New(String::New("Long")); + objectIDString = Persistent::New(String::New("ObjectID")); + binaryString = Persistent::New(String::New("Binary")); + codeString = Persistent::New(String::New("Code")); + dbrefString = Persistent::New(String::New("DBRef")); + symbolString = Persistent::New(String::New("Symbol")); + doubleString = Persistent::New(String::New("Double")); + timestampString = Persistent::New(String::New("Timestamp")); + minKeyString = Persistent::New(String::New("MinKey")); + maxKeyString = Persistent::New(String::New("MaxKey")); +} + +void BSON::Initialize(v8::Handle target) +{ + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("BSON")); + + // Instance methods + NODE_SET_PROTOTYPE_METHOD(constructor_template, "calculateObjectSize", CalculateObjectSize); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "serialize", BSONSerialize); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "serializeWithBufferAndIndex", SerializeWithBufferAndIndex); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "deserialize", BSONDeserialize); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "deserializeStream", BSONDeserializeStream); + + target->ForceSet(String::NewSymbol("BSON"), constructor_template->GetFunction()); +} + +// Create a new instance of BSON and passing it the existing context +Handle BSON::New(const Arguments &args) +{ + HandleScope scope; + + // Check that we have an array + if(args.Length() == 1 && args[0]->IsArray()) + { + // Cast the array to a local reference + Local array = Local::Cast(args[0]); + + if(array->Length() > 0) + { + // Create a bson object instance and return it + BSON *bson = new BSON(); + + uint32_t foundClassesMask = 0; + + // Iterate over all entries to save the instantiate funtions + for(uint32_t i = 0; i < array->Length(); i++) { + // Let's get a reference to the function + Local func = Local::Cast(array->Get(i)); + Local functionName = func->GetName()->ToString(); + + // Save the functions making them persistant handles (they don't get collected) + if(functionName->StrictEquals(bson->longString)) { + bson->longConstructor = Persistent::New(func); + foundClassesMask |= 1; + } else if(functionName->StrictEquals(bson->objectIDString)) { + bson->objectIDConstructor = Persistent::New(func); + foundClassesMask |= 2; + } else if(functionName->StrictEquals(bson->binaryString)) { + bson->binaryConstructor = Persistent::New(func); + foundClassesMask |= 4; + } else if(functionName->StrictEquals(bson->codeString)) { + bson->codeConstructor = Persistent::New(func); + foundClassesMask |= 8; + } else if(functionName->StrictEquals(bson->dbrefString)) { + bson->dbrefConstructor = Persistent::New(func); + foundClassesMask |= 0x10; + } else if(functionName->StrictEquals(bson->symbolString)) { + bson->symbolConstructor = Persistent::New(func); + foundClassesMask |= 0x20; + } else if(functionName->StrictEquals(bson->doubleString)) { + bson->doubleConstructor = Persistent::New(func); + foundClassesMask |= 0x40; + } else if(functionName->StrictEquals(bson->timestampString)) { + bson->timestampConstructor = Persistent::New(func); + foundClassesMask |= 0x80; + } else if(functionName->StrictEquals(bson->minKeyString)) { + bson->minKeyConstructor = Persistent::New(func); + foundClassesMask |= 0x100; + } else if(functionName->StrictEquals(bson->maxKeyString)) { + bson->maxKeyConstructor = Persistent::New(func); + foundClassesMask |= 0x200; + } + } + + // Check if we have the right number of constructors otherwise throw an error + if(foundClassesMask != 0x3ff) { + delete bson; + return VException("Missing function constructor for either [Long/ObjectID/Binary/Code/DbRef/Symbol/Double/Timestamp/MinKey/MaxKey]"); + } else { + bson->Wrap(args.This()); + return args.This(); + } + } + else + { + return VException("No types passed in"); + } + } + else + { + return VException("Argument passed in must be an array of types"); + } +} + +//------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------ +//------------------------------------------------------------------------------------------------ + +Handle BSON::BSONDeserialize(const Arguments &args) +{ + HandleScope scope; + + // Ensure that we have an parameter + if(Buffer::HasInstance(args[0]) && args.Length() > 1) return VException("One argument required - buffer1."); + if(args[0]->IsString() && args.Length() > 1) return VException("One argument required - string1."); + // Throw an exception if the argument is not of type Buffer + if(!Buffer::HasInstance(args[0]) && !args[0]->IsString()) return VException("Argument must be a Buffer or String."); + + // Define pointer to data + Local obj = args[0]->ToObject(); + + // Unpack the BSON parser instance + BSON *bson = ObjectWrap::Unwrap(args.This()); + + // If we passed in a buffer, let's unpack it, otherwise let's unpack the string + if(Buffer::HasInstance(obj)) + { +#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 + Buffer *buffer = ObjectWrap::Unwrap(obj); + char* data = buffer->data(); + size_t length = buffer->length(); +#else + char* data = Buffer::Data(obj); + size_t length = Buffer::Length(obj); +#endif + + // Validate that we have at least 5 bytes + if(length < 5) return VException("corrupt bson message < 5 bytes long"); + + try + { + BSONDeserializer deserializer(bson, data, length); + return deserializer.DeserializeDocument(); + } + catch(char* exception) + { + Handle error = VException(exception); + free(exception); + return error; + } + + } + else + { + // The length of the data for this encoding + ssize_t len = DecodeBytes(args[0], BINARY); + + // Validate that we have at least 5 bytes + if(len < 5) return VException("corrupt bson message < 5 bytes long"); + + // Let's define the buffer size + char* data = (char *)malloc(len); + DecodeWrite(data, len, args[0], BINARY); + + try + { + BSONDeserializer deserializer(bson, data, len); + Handle result = deserializer.DeserializeDocument(); + free(data); + return result; + + } + catch(char* exception) + { + Handle error = VException(exception); + free(exception); + free(data); + return error; + } + } +} + +Local BSON::GetSerializeObject(const Handle& argValue) +{ + Local object = argValue->ToObject(); + if(object->Has(_toBSONString)) + { + const Local& toBSON = object->Get(_toBSONString); + if(!toBSON->IsFunction()) ThrowAllocatedStringException(64, "toBSON is not a function"); + + Local result = Local::Cast(toBSON)->Call(object, 0, NULL); + if(!result->IsObject()) ThrowAllocatedStringException(64, "toBSON function did not return an object"); + return result->ToObject(); + } + else + { + return object; + } +} + +Handle BSON::BSONSerialize(const Arguments &args) +{ + HandleScope scope; + + if(args.Length() == 1 && !args[0]->IsObject()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]"); + if(args.Length() == 2 && !args[0]->IsObject() && !args[1]->IsBoolean()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]"); + if(args.Length() == 3 && !args[0]->IsObject() && !args[1]->IsBoolean() && !args[2]->IsBoolean()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]"); + if(args.Length() == 4 && !args[0]->IsObject() && !args[1]->IsBoolean() && !args[2]->IsBoolean() && !args[3]->IsBoolean()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean] or [object, boolean, boolean, boolean]"); + if(args.Length() > 4) return VException("One, two, tree or four arguments required - [object] or [object, boolean] or [object, boolean, boolean] or [object, boolean, boolean, boolean]"); + + // Unpack the BSON parser instance + BSON *bson = ObjectWrap::Unwrap(args.This()); + + // Calculate the total size of the document in binary form to ensure we only allocate memory once + // With serialize function + bool serializeFunctions = (args.Length() >= 4) && args[3]->BooleanValue(); + + char *serialized_object = NULL; + size_t object_size; + try + { + Local object = bson->GetSerializeObject(args[0]); + + BSONSerializer counter(bson, false, serializeFunctions); + counter.SerializeDocument(object); + object_size = counter.GetSerializeSize(); + + // Allocate the memory needed for the serialization + serialized_object = (char *)malloc(object_size); + + // Check if we have a boolean value + bool checkKeys = args.Length() >= 3 && args[1]->IsBoolean() && args[1]->BooleanValue(); + BSONSerializer data(bson, checkKeys, serializeFunctions, serialized_object); + data.SerializeDocument(object); + } + catch(char *err_msg) + { + free(serialized_object); + Handle error = VException(err_msg); + free(err_msg); + return error; + } + + // If we have 3 arguments + if(args.Length() == 3 || args.Length() == 4) + { + Buffer *buffer = Buffer::New(serialized_object, object_size); + free(serialized_object); + return scope.Close(buffer->handle_); + } + else + { + Local bin_value = Encode(serialized_object, object_size, BINARY)->ToString(); + free(serialized_object); + return bin_value; + } +} + +Handle BSON::CalculateObjectSize(const Arguments &args) +{ + HandleScope scope; + // Ensure we have a valid object + if(args.Length() == 1 && !args[0]->IsObject()) return VException("One argument required - [object]"); + if(args.Length() == 2 && !args[0]->IsObject() && !args[1]->IsBoolean()) return VException("Two arguments required - [object, boolean]"); + if(args.Length() > 3) return VException("One or two arguments required - [object] or [object, boolean]"); + + // Unpack the BSON parser instance + BSON *bson = ObjectWrap::Unwrap(args.This()); + bool serializeFunctions = (args.Length() >= 2) && args[1]->BooleanValue(); + BSONSerializer countSerializer(bson, false, serializeFunctions); + countSerializer.SerializeDocument(args[0]); + + // Return the object size + return scope.Close(Uint32::New((uint32_t) countSerializer.GetSerializeSize())); +} + +Handle BSON::SerializeWithBufferAndIndex(const Arguments &args) +{ + HandleScope scope; + + //BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, ->, buffer, index) { + // Ensure we have the correct values + if(args.Length() > 5) return VException("Four or five parameters required [object, boolean, Buffer, int] or [object, boolean, Buffer, int, boolean]"); + if(args.Length() == 4 && !args[0]->IsObject() && !args[1]->IsBoolean() && !Buffer::HasInstance(args[2]) && !args[3]->IsUint32()) return VException("Four parameters required [object, boolean, Buffer, int]"); + if(args.Length() == 5 && !args[0]->IsObject() && !args[1]->IsBoolean() && !Buffer::HasInstance(args[2]) && !args[3]->IsUint32() && !args[4]->IsBoolean()) return VException("Four parameters required [object, boolean, Buffer, int, boolean]"); + + uint32_t index; + size_t object_size; + + try + { + BSON *bson = ObjectWrap::Unwrap(args.This()); + + Local obj = args[2]->ToObject(); + char* data = Buffer::Data(obj); + size_t length = Buffer::Length(obj); + + index = args[3]->Uint32Value(); + bool checkKeys = args.Length() >= 4 && args[1]->IsBoolean() && args[1]->BooleanValue(); + bool serializeFunctions = (args.Length() == 5) && args[4]->BooleanValue(); + + BSONSerializer dataSerializer(bson, checkKeys, serializeFunctions, data+index); + dataSerializer.SerializeDocument(bson->GetSerializeObject(args[0])); + object_size = dataSerializer.GetSerializeSize(); + + if(object_size + index > length) return VException("Serious error - overflowed buffer!!"); + } + catch(char *exception) + { + Handle error = VException(exception); + free(exception); + return error; + } + + return scope.Close(Uint32::New((uint32_t) (index + object_size - 1))); +} + +Handle BSON::BSONDeserializeStream(const Arguments &args) +{ + HandleScope scope; + + // At least 3 arguments required + if(args.Length() < 5) return VException("Arguments required (Buffer(data), Number(index in data), Number(number of documents to deserialize), Array(results), Number(index in the array), Object(optional))"); + + // If the number of argumets equals 3 + if(args.Length() >= 5) + { + if(!Buffer::HasInstance(args[0])) return VException("First argument must be Buffer instance"); + if(!args[1]->IsUint32()) return VException("Second argument must be a positive index number"); + if(!args[2]->IsUint32()) return VException("Third argument must be a positive number of documents to deserialize"); + if(!args[3]->IsArray()) return VException("Fourth argument must be an array the size of documents to deserialize"); + if(!args[4]->IsUint32()) return VException("Sixth argument must be a positive index number"); + } + + // If we have 4 arguments + if(args.Length() == 6 && !args[5]->IsObject()) return VException("Fifth argument must be an object with options"); + + // Define pointer to data + Local obj = args[0]->ToObject(); + uint32_t numberOfDocuments = args[2]->Uint32Value(); + uint32_t index = args[1]->Uint32Value(); + uint32_t resultIndex = args[4]->Uint32Value(); + + // Unpack the BSON parser instance + BSON *bson = ObjectWrap::Unwrap(args.This()); + + // Unpack the buffer variable +#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 + Buffer *buffer = ObjectWrap::Unwrap(obj); + char* data = buffer->data(); + size_t length = buffer->length(); +#else + char* data = Buffer::Data(obj); + size_t length = Buffer::Length(obj); +#endif + + // Fetch the documents + Local documents = args[3]->ToObject(); + + BSONDeserializer deserializer(bson, data+index, length-index); + for(uint32_t i = 0; i < numberOfDocuments; i++) + { + try + { + documents->Set(i + resultIndex, deserializer.DeserializeDocument()); + } + catch (char* exception) + { + Handle error = VException(exception); + free(exception); + return error; + } + } + + // Return new index of parsing + return scope.Close(Uint32::New((uint32_t) (index + deserializer.GetSerializeSize()))); +} + +// Exporting function +extern "C" void init(Handle target) +{ + HandleScope scope; + BSON::Initialize(target); +} + +NODE_MODULE(bson, BSON::Initialize); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h new file mode 100644 index 0000000..580abd4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h @@ -0,0 +1,273 @@ +//=========================================================================== + +#ifndef BSON_H_ +#define BSON_H_ + +//=========================================================================== + +#define USE_MISALIGNED_MEMORY_ACCESS 1 + +#include +#include +#include + +using namespace v8; +using namespace node; + +//=========================================================================== + +enum BsonType +{ + BSON_TYPE_NUMBER = 1, + BSON_TYPE_STRING = 2, + BSON_TYPE_OBJECT = 3, + BSON_TYPE_ARRAY = 4, + BSON_TYPE_BINARY = 5, + BSON_TYPE_UNDEFINED = 6, + BSON_TYPE_OID = 7, + BSON_TYPE_BOOLEAN = 8, + BSON_TYPE_DATE = 9, + BSON_TYPE_NULL = 10, + BSON_TYPE_REGEXP = 11, + BSON_TYPE_CODE = 13, + BSON_TYPE_SYMBOL = 14, + BSON_TYPE_CODE_W_SCOPE = 15, + BSON_TYPE_INT = 16, + BSON_TYPE_TIMESTAMP = 17, + BSON_TYPE_LONG = 18, + BSON_TYPE_MAX_KEY = 0x7f, + BSON_TYPE_MIN_KEY = 0xff +}; + +//=========================================================================== + +template class BSONSerializer; + +class BSON : public ObjectWrap { +public: + BSON(); + ~BSON() {} + + static void Initialize(Handle target); + static Handle BSONDeserializeStream(const Arguments &args); + + // JS based objects + static Handle BSONSerialize(const Arguments &args); + static Handle BSONDeserialize(const Arguments &args); + + // Calculate size of function + static Handle CalculateObjectSize(const Arguments &args); + static Handle SerializeWithBufferAndIndex(const Arguments &args); + + // Constructor used for creating new BSON objects from C++ + static Persistent constructor_template; + +private: + static Handle New(const Arguments &args); + static Handle deserialize(BSON *bson, char *data, uint32_t dataLength, uint32_t startIndex, bool is_array_item); + + // BSON type instantiate functions + Persistent longConstructor; + Persistent objectIDConstructor; + Persistent binaryConstructor; + Persistent codeConstructor; + Persistent dbrefConstructor; + Persistent symbolConstructor; + Persistent doubleConstructor; + Persistent timestampConstructor; + Persistent minKeyConstructor; + Persistent maxKeyConstructor; + + // Equality Objects + Persistent longString; + Persistent objectIDString; + Persistent binaryString; + Persistent codeString; + Persistent dbrefString; + Persistent symbolString; + Persistent doubleString; + Persistent timestampString; + Persistent minKeyString; + Persistent maxKeyString; + + // Equality speed up comparison objects + Persistent _bsontypeString; + Persistent _longLowString; + Persistent _longHighString; + Persistent _objectIDidString; + Persistent _binaryPositionString; + Persistent _binarySubTypeString; + Persistent _binaryBufferString; + Persistent _doubleValueString; + Persistent _symbolValueString; + + Persistent _dbRefRefString; + Persistent _dbRefIdRefString; + Persistent _dbRefDbRefString; + Persistent _dbRefNamespaceString; + Persistent _dbRefDbString; + Persistent _dbRefOidString; + + Persistent _codeCodeString; + Persistent _codeScopeString; + Persistent _toBSONString; + + Local GetSerializeObject(const Handle& object); + + template friend class BSONSerializer; + friend class BSONDeserializer; +}; + +//=========================================================================== + +class CountStream +{ +public: + CountStream() : count(0) { } + + void WriteByte(int value) { ++count; } + void WriteByte(const Handle&, const Handle&) { ++count; } + void WriteBool(const Handle& value) { ++count; } + void WriteInt32(int32_t value) { count += 4; } + void WriteInt32(const Handle& value) { count += 4; } + void WriteInt32(const Handle& object, const Handle& key) { count += 4; } + void WriteInt64(int64_t value) { count += 8; } + void WriteInt64(const Handle& value) { count += 8; } + void WriteDouble(double value) { count += 8; } + void WriteDouble(const Handle& value) { count += 8; } + void WriteDouble(const Handle&, const Handle&) { count += 8; } + void WriteUInt32String(uint32_t name) { char buffer[32]; count += sprintf(buffer, "%u", name) + 1; } + void WriteLengthPrefixedString(const Local& value) { count += value->Utf8Length()+5; } + void WriteObjectId(const Handle& object, const Handle& key) { count += 12; } + void WriteString(const Local& value) { count += value->Utf8Length() + 1; } // This returns the number of bytes exclusive of the NULL terminator + void WriteData(const char* data, size_t length) { count += length; } + + void* BeginWriteType() { ++count; return NULL; } + void CommitType(void*, BsonType) { } + void* BeginWriteSize() { count += 4; return NULL; } + void CommitSize(void*) { } + + size_t GetSerializeSize() const { return count; } + + // Do nothing. CheckKey is implemented for DataStream + void CheckKey(const Local&) { } + +private: + size_t count; +}; + +class DataStream +{ +public: + DataStream(char* aDestinationBuffer) : destinationBuffer(aDestinationBuffer), p(aDestinationBuffer) { } + + void WriteByte(int value) { *p++ = value; } + void WriteByte(const Handle& object, const Handle& key) { *p++ = object->Get(key)->Int32Value(); } +#if USE_MISALIGNED_MEMORY_ACCESS + void WriteInt32(int32_t value) { *reinterpret_cast(p) = value; p += 4; } + void WriteInt64(int64_t value) { *reinterpret_cast(p) = value; p += 8; } + void WriteDouble(double value) { *reinterpret_cast(p) = value; p += 8; } +#else + void WriteInt32(int32_t value) { memcpy(p, &value, 4); p += 4; } + void WriteInt64(int64_t value) { memcpy(p, &value, 8); p += 8; } + void WriteDouble(double value) { memcpy(p, &value, 8); p += 8; } +#endif + void WriteBool(const Handle& value) { WriteByte(value->BooleanValue() ? 1 : 0); } + void WriteInt32(const Handle& value) { WriteInt32(value->Int32Value()); } + void WriteInt32(const Handle& object, const Handle& key) { WriteInt32(object->Get(key)); } + void WriteInt64(const Handle& value) { WriteInt64(value->IntegerValue()); } + void WriteDouble(const Handle& value) { WriteDouble(value->NumberValue()); } + void WriteDouble(const Handle& object, const Handle& key) { WriteDouble(object->Get(key)); } + void WriteUInt32String(uint32_t name) { p += sprintf(p, "%u", name) + 1; } + void WriteLengthPrefixedString(const Local& value) { WriteInt32(value->Utf8Length()+1); WriteString(value); } + void WriteObjectId(const Handle& object, const Handle& key); + void WriteString(const Local& value) { p += value->WriteUtf8(p); } // This returns the number of bytes inclusive of the NULL terminator. + void WriteData(const char* data, size_t length) { memcpy(p, data, length); p += length; } + + void* BeginWriteType() { void* returnValue = p; p++; return returnValue; } + void CommitType(void* beginPoint, BsonType value) { *reinterpret_cast(beginPoint) = value; } + void* BeginWriteSize() { void* returnValue = p; p += 4; return returnValue; } + +#if USE_MISALIGNED_MEMORY_ACCESS + void CommitSize(void* beginPoint) { *reinterpret_cast(beginPoint) = (int32_t) (p - (char*) beginPoint); } +#else + void CommitSize(void* beginPoint) { int32_t value = (int32_t) (p - (char*) beginPoint); memcpy(beginPoint, &value, 4); } +#endif + + size_t GetSerializeSize() const { return p - destinationBuffer; } + + void CheckKey(const Local& keyName); + +protected: + char *const destinationBuffer; // base, never changes + char* p; // cursor into buffer +}; + +template class BSONSerializer : public T +{ +private: + typedef T Inherited; + +public: + BSONSerializer(BSON* aBson, bool aCheckKeys, bool aSerializeFunctions) : Inherited(), checkKeys(aCheckKeys), serializeFunctions(aSerializeFunctions), bson(aBson) { } + BSONSerializer(BSON* aBson, bool aCheckKeys, bool aSerializeFunctions, char* parentParam) : Inherited(parentParam), checkKeys(aCheckKeys), serializeFunctions(aSerializeFunctions), bson(aBson) { } + + void SerializeDocument(const Handle& value); + void SerializeArray(const Handle& value); + void SerializeValue(void* typeLocation, const Handle& value); + +private: + bool checkKeys; + bool serializeFunctions; + BSON* bson; +}; + +//=========================================================================== + +class BSONDeserializer +{ +public: + BSONDeserializer(BSON* aBson, char* data, size_t length); + BSONDeserializer(BSONDeserializer& parentSerializer, size_t length); + + Handle DeserializeDocument(); + + bool HasMoreData() const { return p < pEnd; } + Local ReadCString(); + uint32_t ReadIntegerString(); + int32_t ReadRegexOptions(); + Local ReadString(); + Local ReadObjectId(); + + unsigned char ReadByte() { return *reinterpret_cast(p++); } +#if USE_MISALIGNED_MEMORY_ACCESS + int32_t ReadInt32() { int32_t returnValue = *reinterpret_cast(p); p += 4; return returnValue; } + uint32_t ReadUInt32() { uint32_t returnValue = *reinterpret_cast(p); p += 4; return returnValue; } + int64_t ReadInt64() { int64_t returnValue = *reinterpret_cast(p); p += 8; return returnValue; } + double ReadDouble() { double returnValue = *reinterpret_cast(p); p += 8; return returnValue; } +#else + int32_t ReadInt32() { int32_t returnValue; memcpy(&returnValue, p, 4); p += 4; return returnValue; } + uint32_t ReadUInt32() { uint32_t returnValue; memcpy(&returnValue, p, 4); p += 4; return returnValue; } + int64_t ReadInt64() { int64_t returnValue; memcpy(&returnValue, p, 8); p += 8; return returnValue; } + double ReadDouble() { double returnValue; memcpy(&returnValue, p, 8); p += 8; return returnValue; } +#endif + + size_t GetSerializeSize() const { return p - pStart; } + +private: + Handle DeserializeArray(); + Handle DeserializeValue(BsonType type); + Handle DeserializeDocumentInternal(); + Handle DeserializeArrayInternal(); + + BSON* bson; + char* const pStart; + char* p; + char* const pEnd; +}; + +//=========================================================================== + +#endif // BSON_H_ + +//=========================================================================== diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js new file mode 100644 index 0000000..85e243c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js @@ -0,0 +1,30 @@ +var bson = null; + +// Load the precompiled win32 binary +if(process.platform == "win32" && process.arch == "x64") { + bson = require('./win32/x64/bson'); +} else if(process.platform == "win32" && process.arch == "ia32") { + bson = require('./win32/ia32/bson'); +} else { + bson = require('../build/Release/bson'); +} + +exports.BSON = bson.BSON; +exports.Long = require('../lib/bson/long').Long; +exports.ObjectID = require('../lib/bson/objectid').ObjectID; +exports.DBRef = require('../lib/bson/db_ref').DBRef; +exports.Code = require('../lib/bson/code').Code; +exports.Timestamp = require('../lib/bson/timestamp').Timestamp; +exports.Binary = require('../lib/bson/binary').Binary; +exports.Double = require('../lib/bson/double').Double; +exports.MaxKey = require('../lib/bson/max_key').MaxKey; +exports.MinKey = require('../lib/bson/min_key').MinKey; +exports.Symbol = require('../lib/bson/symbol').Symbol; + +// Just add constants tot he Native BSON parser +exports.BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0; +exports.BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1; +exports.BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +exports.BSON.BSON_BINARY_SUBTYPE_UUID = 3; +exports.BSON.BSON_BINARY_SUBTYPE_MD5 = 4; +exports.BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node new file mode 100644 index 0000000000000000000000000000000000000000..b27819bb1a8a4fb1bda843df4d87dd0753137603 GIT binary patch literal 113152 zcmeFae|S{YwLg3&nIuD)FoPr*G)TmtXh5R_HZcT-ACm+nI3Z+03JG`%bWEvII7hLU zK;p^JoNT7rd$rfL>V=~BORH_^y`b0vP6#GYQ2|j=sK%CW-RYznD-8i6=l!gG&iqJ7 zZ2La%bN_ntJefIX@3q%nYwfkyUVH5yQ}*@8r9?@RtoYY;N!p8V`g4oVum0#m_NWQJ z871u=@y7LgEeqbbezE`l_1SCJJ^0Oa_kBD28}~i%z=Lx3zpTn$r#z5-{{z|c?yboF z_Jb=|-I|t`nq#8g|J!Xn7e07%N96y9FRt40A>M!ZqIXBP_+GiA8Q(oWt=Vx&yf4~u z5#JX+cx%T}@qXWqKJi^?epiU^MfZQhPdJC;!0VBu1(qaf>`#)*BQTv(!u2C9sgjgs zk)$7+srTXAiT^yL(Gxu$;Wq$@fXpR6jC^_d0xM4xKq`~Uy_e;@%@NSkfdEZS^a+fn*s zt!zP#m5tV%tlX-3t!%zcE43Z8N+S2@(GJVmT8q_!QP^yhlp3EY7j|*yp_m z6XfY^VSiO{Q-9F<{rMZl1fLToK;_o?Mu|tx^&YgyBdYk>1(Kv5va*ilwZPJmOz1_H zj~_9!+9^j+MD?AEqbP7hwlNEH)>-ruL?z|-$K^9ijCMi)Z0mr8e~ezLF-q^WLG)6l zN$`E@v}I`X0%ZZ%4<7li?vU@G>#q} zz)!Iuf4jRhX#f5OXK-bXq;}a$J1hhES$WSu`N#1y-^_~1zr&IRT03Uj&1%`a9BYTr zOM|B1Z2JHf*zC+f?^y%hTTs4vc6L-KEwi%+te9qVH2qFX~G`C2~PUu(rR7 z6$YnWzIQ`@hhWSF)%URn}>Zf`Jfg;z2Tpv#| za!pD*EK@*9tceFwWAxv62zMjw+I8Jch{oKPO+p5S4FE$w2v1rYYYMW>!qT9hLhmlb%P+tQb9_zt`#Pb8m1#jshl0v zEHEl|HX?}8dy$^8l4M}hGwjsm7s6doi>=mb(Im{FXFNyQ3$1mM+sI+XR_3Ua>U6K3 z@gnjp#j!D#`K-)_JmdoL;M}7})$W|_FK)9qU5B)JIoaTKazzz@A$hb%RyhdDT7>2( zWmgfIqZuVn%^a|-aDs5Rd&)Iy9WucXAvN~Q`JnyRJt79+e@h@Y= z3&CUpHu`c+CJ5|^_GKV>NV&utRqf!1&gi_N;nRTo~qpY1@pHB@Q=TbqR)U$o?GMH2Cc7kqS72FB+V$ynt zzcbpT#b4?=yB$5wj(=#Vvp?w7p`$i!aZWnm3(M^fIsDtA@M8hraMwV!NFW^bHuhE! z<#;-EJ9zNWtf;P#4At)Jn0&G-DyzVXon7#18*|e2j19yO6yuP!aG`zux7gHWlrWy; zYt9!~v8~1CcD!@}3dasJeURz_Tb5UU8}g_U_JY01Z^2BH3^;6eIb@a14rw-gXX@`T zpRLemU-u&0nBxTA!eTr0+~$ku`R)B+XcTK~B357yVa@y?q$wnCW@Fi-4U}9&rZHkL zscUC@_4gu$kPds5BaEqY5z>=cLo-SVc#t=l=t)QVSax@opu8?o7&tv6pZK=H{5dt- z@|vZ9%YvnudndJSb{p8SBWbdBHAGxPHt1$E=O`<+vC(RGrrK)tVftV+^nxf)HJ89s zo(6944+Ay2KUf}X=u%sucVI(L1^nQK9*49lG_su|K7mHARS(5{`tpiOwkF3(&6-{( zL1f#A6KYZ$HR)|Hdfi-?*sj{=-oX zUW`|iOxHZpa`sxyQe!kbdQ|k6P-FLQV6I^Avod>dw(hGcx{P(yNN{z<#kWdB! z|6T%jOVny-c#9E?uXnKI?Dbx)_nZvNNF=rn8g0l;{&R@a@+I*guNNzwe;LVBQ9U!LNITX`G z1I?x;&x;kXi?7$S$f=dn_!sG-gR zEb=gPQH$moZP|kHidkBfF9rP`YFG@gglD|@Wg=Z3G9s_4`=?odO0 zq`9P%r3~?s1vv{oT9Z?X%82By{~-%LL_RtgKwbn$d_T*I>0P`6(U{i8pQDDwcoyl{ z3W5-?^Jn{z+8#|s%gsZ}ojQ+HYBg%R8LTwh;K>3NC$ln~B*(D3r^G;JMASL1M>Bxr zK?6#GBAUOvR(@)p(|G@PeAi}6&W|Tb z&fnnu=k$#KGQhYf4`~!01G5}Th|ClvFB&@?y=n_etIgMHXK1xt#*x8yH=}}wb~6@?MCg{2I!#nEOij= zSu$eUvs=X{^-t|t8UX5a?O8I$P&KFjBveX!mO89gdv+VXFcL^?YC3ug+^oVj#p()$ zlfC*ou%vZ5xODnEQKVceUPh2Z!C(aUbHFUpidPH+qZO|dwf6vwT&f}QP+jMYy8Oez zP+d}$sB6tIFk10iQI{QHUs+c=0Kk_#3?8(+(@!wqYr`-wTJc6vSJvOFD@W9|rNI>V zaAKS+s@p=XIb4lfsF6jbQ~qA1`9`Ir55r&+JkBsGC50IVOxr?wBr0|Py-G`sN=e~{ z!6qv88kLeF4g;ob*%qmE$=|DVg{ZW6+Ayd@jcY`W#rea)XvH%GgYw_2Yok$@dl)>T zt|p_ddBebH#igRIt$(ksCycttT^q8?kcw_I>Kabfwc^F1uAKwxN?l$9`@-6nR<{|Q z9q+})dt`Df=66#nDt$Ehnqu0>q7bZ+E97+@DF@n2f9DiQ^fHRufc0sxl}%(6K`xnA z3g+zCdw>E~hbh^Hm7I(P^fY}hK4D=nrSk707W8*vh|&lay#qtyF@hRT@6qbA{5=Im zb!&2Rgms$c-%BDwSu)CXn2a6LCWEjX_BtDX6d1f1v~w_(ps6D49EJKQzVr^uh+!rW zf8KPs|0qau#AHlRmhV3*gu5UokEkX&aAzC1vxdVR${Pyzxk0#r6cad_q2~M(xEtIC z?kS*qV-C^1AZLbOS~5`L0;iS_PNxizwjm4AqL9>NXvQIG(tMyHp-`iH4b~A4q*-)9 zWa_;@&sYXfL+xmcU0z$WR6R7M&4_=f-HR)HRjh~xZNN}ZRP309s(ltmU{xX<`SDL7 zD-hZ|3N>XSg1~4p6;4E0Q_nbstfr8oX$An*O*U!sRlt!|4xmh$JuJ&f505~I5zUp( zK47ow8BYsbjwX)KgP+`3{@Xm7xmyv48_9Zj3b~Da;RKhCaM zf0U>}Z8_8sS$f6_U>38D9L#|AjCu4*AyA>B8RzJ=WLiWh>H6CUR@@TkRUEF6iaEbU zE3tR|9uZM^CC2z|jV8AvnU&-ZTQ)%}advILqO3@!^?p_|W7x7*tt7o`)fHt$@Qbjyn$u2d~n03@NZ;*CUkMZp;N2M>N<;tU?rtPKvzG?V>CkDn3sn}IFj zI8d=d_>)!v}(fRwkj#7h55VX~Mm=qW{zY#%iMm33>FWks98(R2(_W0l>IwUvtWFj3qs+6jg{ zY5i3H43nm+e}JYAPd~K-mh;$qLC-#(_z7$>S`Y2aJ2>XfUnNmif3_;9*!icQBNWPi ze?1v@8!NN1O1m~1n6W~l?_J@NoNX~Q9sms2`h0-;)sX_uGZvI6v1z1pP4^ZBoX|`3HDFCuWrbMZy3P#CeAl|F_dX zOs$R%Z^P~d8%4&qYy*ujS~hU*M;}3mW4FC|;d<#+gW=jnP8$jY7@}(9yOW(QJDghF#loEs?c} zw|E8&d*hC`H{@CjZEtq5>10#kvOuLvY=)BopF>gLX~cCl>JRtA(J+aFt=Xo(3tO`j zG!C*gCx^8)+hVq6*U+{GB&dA}%G$52e381@W&v?z;)J!Zg_A*?+GS+ho88<3qa6md4nb~LR*Hxcz% z9RUjOeN|nKKnozgy1s9HWqry5WG8~0IBpDC*#)&z{m!o&MzZ}ce_u+#W!-cmHGO0t z-iFd*Xfie-Ahc9=vb?LG*4awL$jqO$3%8Q>Xv#^0?~OOAeZ!EH(Jyqr-Q%z*R(wj> z`{y}}Rpx>c8)@UII3rYI)jZuW(7_sxCA1P4v<^=Q;*#1uhoqJ=M|0V0nsS&`a;>s6 z=;;h9A^vZmg?U0`oQ`>U;`k_KXN{KMxD=Ydc{HHWiz60Gf^vZuj_S_PB0gyt`hK2h zmO<7n4)zqm8tll{U6ydd9U)EGrYX-gdv>-|I+`ng#ylrA&x^248dh+~+IhC|U7*mk zOl&hkA?F!}&4f!0NmCudqt5s7i`N?LC^l_ouzy#m8O1=v}i zkH01g+1X|*dNj&B0p`$W$ijXF23C1?5pO|JR)18OS}jbbc7utGh7p9PBNp~GOm8vB zMDPtY$i$m3V|}Yn?Vc7tAIgTkQ0(Mcu<>Mrlp31%VDg|WhP#zVeh*n+f8J7>fSKAT zd^XzQ5Q%kywV`}A6bBNj!VHv?&y%1mj#P0E)r%<=A``G}q!`BBD;WT=IuV^vZUBD& zVo<<0{MqPDgms`33RH=k;%QFzHw-~D?d#b`6-oav&F~6^i!x;d8m5n?j)$zS(=ewS zb4jhgg8V^hirHfGvYgE3c{$^-=ABhgYuh~59NMD1)B0>U#h6mkxMzp2pU!Wmsxd34 z`5;N1mhNb#V55YbsCtpGBi?z`O^)h-F@9yok6+$l$FJw&{biahCy^h#Tlm2t$aRo$ zIu;e{U_W?wY;1aNn6b%l$NONo_rc6uX}D=3PPz#*ANVmKgw_lgLkBC&!=z{Ng9RB7 zG$SV`BkEWxUQ(LDMx0a+E(RAB!rPs)OmtoTB^)NSe6Z}fh~{1C)QPx4k|XeOgpatv z%m^q%_;@wO$AIBhC_XC^!|i*-@DB|@;wC!Q49(4hCO2_)8ghwovj8C0c)8FROI12` zR0d}KCbQ0efLYif&?ZH?M_RJ5lbVP8Q$g;r=%m9GKE@n!F37r)7YMJ^bm@@+{}XLv z`t+LTn8^%`ab)IVAhBznPC{T4mR74jDr9cmSV4UeGJ=<6&U6g;LBq=w;3YWE$>@+5 zg&Q!m{0|K+r;P?xZd3cL7{AI+LCxdGFH$L|<~bQZCjFWU9)T$jTCdhTyEV_==9+!Y zW&4?jYn~9Qmo}%<7!!vH11{R(A*-es1MeveUi=MArkMnB(kwIR+0DC?AZ*XxT*7%c zv7^v)?4hat7tID+{(t|zcA5i6DW=9GYce7_=ku= z3^Dy#j!+;*rU;s0Mkd1^t%$cr?qTiGp)2fBebgQugA4}Qqci`AJv#JN_Gq9Px-vMR zWccM8!!rEwk3#lc?U-#v)GHEIh;%S3D`x><(*X|v?d%#vG;k^@Xuq@>L(bIdHG zm}Qn2Wrnj~rwsd*;m^dzc#L(t$Sjv_lp`~6g{6qlx56wl!YtEmp?;20AX)huhJv9i z2)1w;whe-L+${dPKNy1f1&RyBkF#Ne0|Ce%ntfJ8U0r_75=ws@5s}L?3qT`*KD>~jGbA%eIp^O@s}; z(gdJToC%1a7$Oc3aVX%BAgZk-Y00d;4YH!JvX)H2h<35{Q{9+jm6Y_l8UBXF7N!61vg>VBm{zOm4PChkmC!HZ-(2w;rM7t1tT}aCW zS#U!&ykJ3u7)s|q#|)e*Fr7$~A*aC*>vR2u+{}RP_&zPyK3)l4#J)q2N4yDsrhs;0 zw*ljlJOWs!aQSUrCl>SKSj>#FIASo1w_T zIiAAL99zFblXYy!#->RuKIq`-A!}~WaxG6R-DDcuMzLv?))P@^GGay8Y<`xAc3_T} zt7k}1w)aEazfF=LnaQW||3TMBoxO+VeRma_+*kv0(mp&3JJ#@r#D5vLae?qE=5An`C`9b~hHt$pIaM zwi=k>H8L(<9-M*Yazixs7&`-t&d}d0ClbB~sbfH4?ls0fS~_vpEIAU(zcyKJpxq7z*Ad7_6wtsjOjZl$$|qXqdUL(LOw%XrxD} zSY#<{3TnxQA{kJl2@0y(NQTM~Y?cr#%+q_Y5}Ew5qq+`zIvTBwlBNy)0Q+tSbe(wh zT})zEzCDnGCHi}D%%(tY(b=F}$Q)=0#EjpDOKeU>pj!^cY1$`*V&n{^L>)YcO`9>? zFyX`7uf4kPf;i!l@8s+aJNeq7|-92Lu$MY ziW$190fufqVQZHXgki#91}h}YNni8;k53%nNuXM2uo-lKCsuL9PRf%Fls3Z9Pv*mC zbsd3{KiS%x3TqxK5ob@wQ5o3OcFD?*W3D(5$TX{ypsqRXmJw9WitYoqErbF1F0mt3=21jSfNhaE~PO?#60)$KmRUX1&D_;qJX1m63yKPn`Zl! zruktSCI60TwwtCI)$FL~ZrcuAM21_@b{U1`AKt?sYN?AkQ##?NSmDu-R*_=-Z~D2Zhi~ z4%(Po9%NZfLvPh4BU|Wb%-jpk^Jpw!>LgVkkI72QVavO&hleWTZCc zRA8aC(p%1R6!KA>mIvY+A0bLwj>1Z~ot27FLY`shs)hONY|e&w!$yPcO6nHijvSSt zdg}m$#^^H3KsZVuq(LTUm_a7ef%zkc;}vdT`=5}FdgiuU z9ITdnLK;ePf)!S;=Cfi9>f=W`pno)Gq3-{rPxiLuTmI+rDla4Zrf zA4ADl_CQWCERo8EO_ghxXd$0Xr4|Toz>+DvQgWNqXyc`3YstvQcQfuc5ZaVv3}K@A zAac_KdB;oM-(9rxdy~~HpF#UFg$4+{X^0MIgNr3nF(}2O=4fV&WRL~);vMP~y!ACP znoR_q!BUF`dy_%CIknM*Su{Krr}=N`7=SQDric86<{C~0VziS-8@+W{Nn!XSNr??E zprc*d9K**Pm=VWD!x}QI)PC&=7y~h-jt+{@X2!Lfg%HSI3jf_fVuvvVjkMk{zFgX>`I?N%*3zD;t|pn2sPE&gE59xlY%mxI)#z`m>vhe|AQie}f#&a$2jDa_N^oEa8y75oKMU0scRJj<6JX^YUHuIiMk>Qbs*ArSG! z3(E^UM8c0zuSr6YK>|v6=veDnpRS~X3SB`2wsUA2PU4svOu0b=_9t{gTf>NZb)r@I zqzDxz4M2oYf@0SZEc+%nLBSf6x_V5Gry?Es)ARN~m>GR}cDB)%G$z- zu8(<*o;a8!eUpM_KSL#R{B;}422I;j#)ui&o| z0AGqU+!lgLT%o0rgT7_}Cpbr6+Gd`;qyFFu;RX&{1v}N+X+w9joj-_qq9kXuq^buk zcfBsZg_B(6MxqiPd8&%Fwf@oR8+nSQzN%loyb0GEoOivR*pqlc{ajajbk|$1cJ-jO z@ngwiX;iW%(U<%-eOVM+=)>A$N@z7w9+XLtQkzNzV~{7EZ!A}Iq& zXONVPq?6$v)-E?_o^u)H+JbYwG`{-jOQ=!MlTM;joMtngf)Lb0>1Jazb}xb7Y3|pc zBi0^Ug-;8-NM_b!uc}Mb0=x0d%Wj3}u$?Bt1joO3O{Mzm0ZbuN0HIG`g5DO*9Usf>f}iIsF+Ulau?*`EXmFVBx)mQ$8f6p$4f z37%#=lurp8kPv*@<3oNhXh7w*)+OrGy`cAa-z$VQ_i%Xye>7JJ5H$UtiYTd-gpRmW z{!O30IG)48NRA^QqX+q)j_2^YSY{P6^*ut^f1w&ewrb-Q6gsxFQJ;7R>Fh}YVW%7~ z&-?o2>W;uJyn!-F?OP__#103Mx>~((n|y7-GnBP{j4nV_p5S=d$$qC^T&8@)+Hysr z7T5_8weJSUmU4=K@23)@9qMen)ZMx+Cx$=JkerqPb;4IHI+; zAeRa4VL_@VXvHc^L@Or6;A#by0WwR8<+_pU-x@EoKi@(Gh$?PCrh&39)yrQ(Mm2jA zjbx;G`E!&KZ1RvQdeH@V`{XF`pI|CKNEsiGVLpOf|JwL!*T*tnq@sJMkMKE2g*PSG z^73hT3pOS0LVHvfwpSa;jxAxKkXIw~mHQ1XGD;iy=p)sFtaOs8SCB&(k)%ft_z#Ecbon`knDb)mY{}%DgJuVs>hO2>!d5-!@6K z12)(=0_k9@ZY+P~1~3le(2K4HwOYU8_%BGMhSjC}Zi+U?5<%VozAZ5d?m}*^P-sJ= zg4QKnzXG>)*@Lvx5yO~#CB|O~ISWa0sDz=H2FALS0s7f-W0bN3fE=Xd-;CkeMtFpl z2j?yMYu7c@KteUT=0G{IMyezq?fOJ?P%MJKkB2V$aOqvEQL^qFR@G@VJLS?3;KDek zdP$d86@Db&2W>SJz+lk8>GP9m_3|6wO(QrS2yH09*2Zoipb6a6s-Wo5W-s&d=OK*h z$QuBAgt3&9__f!=n%p-*lFqvq*wJ)KMpd1)irW1z$e~PrC>x!jtbci}>y4%S`CeT=(xy*8gwYv65~Jz_{aD>N?#_g^Sm187 zqX4>c7o&pYchz+LC!H46%R4NY(-E@BfuO66aSU!O$I_eL>%qlIDL#(imrni?U8o?+ zV(3y^N0h6f5njF$<<6g~zBW|tru+^|Hn4U51_~uW#WgUL#QzVHA{f6r7$dwXY{}$% z0Mn67;PKTVlod`RzvzA_J4Qm;K`+;Ue0urQk+$BX?q6eIe6*KT!ctUYDYu8;g{u8~??aFF^msL;hc_eZXr0aP{1+|+bw9fSpcFA zP)3_lcsEF?u7O}g2Wsq|3`cl}^M4@IG&_A}*ywY-l|H9S^jXvozi{=|jLCRey)`XM ze2woDiAm?g*Q6ftHMJXGPd}EF4G`v$cBG4M>yAu(2R*hOIrJXrggx&_S^-cC4uWi_ z%pK`?>qxTUbA(k2btKtEuIbQffm0~5eHYBC7C1wrK}Lwwe+ht~L>JL}s^J-D973Xh z1{w}$?C_`-5rBl5jfKBUFn+?VXB!xzjDD@sC8-L}Z2kSm8R2Rj;vHt#v0<>3c|{rPl!RAW! zf-YaHUbrleWvy!G1a`djVp3~oa-#Lg&I33ZleG6RdTX!Snk}c-B~(kn@nXTCt9_!Les?eIEy1&khR98^nFOM+g6sB7{Ch4Gc`O;cb#z=v+ZZEcz zG5ZE@x(TudBc*G=Mya2|M57ARHoS-#;8iRw@8{@!rE6jI-kc9O+Qn3ul>akijwSA+ z`8Gav4&gz(%hu~&o1mntrE3#Vi6xxMaC;ywgP=@faOs_GcgxA@Bbe{z=<}@`MzYb( z3A)AcQYdV990-+r`Df^c)tE`>O5%v*Ha*$sM&%W>Q2jm+r(uXGvAb#GQoo#vy}XiQ zwOkjzn;%Dxnk|JVgUJ?&y>$f34=NI-3Noufmm%%h(4b=MW2Da;#{@`^4vAeDZI>2EhE~@=R20Mj(D`$E0=tE@VqMLKPs_SY5I9OVawYsbIX= z?pA7jTthvvW2pKOwkr1eXrD z&Izp-46O^APzQV6ISq~gt(v=f3okpGC_K?}wd;ts=L}K2r&E0H#%J@B)Id!q98CqF zs6^X;2(JYK%(3-GBn9Vm&RFuW!*SrC<3NKOhCuCf;5cH)aiFPn1zzh?TKlZkT3{Q> z6}CFQ_d5DEF1#sOiyOLvBr8<+1irLALRfo*5cdf2?Ga+#L*nat0>w~=%CqIWRi23T zNN$rSm6pmGcyk04WUE1fw{_hgeYSShM4v5P<#=usFw~>F=0vj+y6(ht!^K`Eq5$MZY|+;o=%Ov*F^yjzA;Q4Spm%b*&?? zS!A3|$xCgv?m!X!@MK?{_qH(f5OnrjO}caWuV8-y0lF$LV{Cqv;5~ zwLPQ{>hp*3iJ1}gE3f0FgI;be6=t|4AnbxXkp-!@1%<-#U&8BeNimg>0?)s~z%&42 zD8fg4jb-hdITL??W=G+_E)sLVbN7STXsT!mf+u3TIvXFMS!K@V0K4< zv=OBwL-h^0xr6)9A$hL^MB4tdc+>(<hBH9=3;ZKw!WK1F(0VLMjGORa@(%F_(?NP``( zN?MSpm(zcgd+>N)920+r!=xF8;3GV4-yP-G%ioy`jp;g!WVLUtlLlkV2}+WB>6tGHNbnglDVQZ^9oc% z-Y2c%7{#(>`)U>-let<;#sDlHwd9y!x>`xV!sfV*Dqt}sCKArKN)1HnPeCe6WEEDm z&DQlMUX;-d7r&`|!%!!@OW~>lp<0`gHSyiJpX|a87p7#0TI+9 zR6$V!9?c`kKr19#Ztj0frGf5t=3PQ1G&qP|(PC6Kxn00ymv0*=5U!rW%e7zt#sC;1zCAzRC*bNcf#6sltXhSBtDW(B;{EQB=%Oi}oni|f;G{Ahx4UfbIjL}9;w$Xlo zm6#Z^bDtsJbDyDBHJILMS8igL0;e}!A3ucb%D$HuV}h&hKLbczwg&XgAF=&33b7y+ z4hk)SL8N@X5TJ%y*{bEq#*-brY7YF51HbnkwLO8KaHFlr=qlMPNXfVjZL9$#h&TfLSng3;!{gPUAUm9{ z3w#EZxL)kP2*jX4+IXu;CuSI;`Qxa~zK54yNiCTYNgjiM7V(@%S47I?{$^%RBs%^Y+z}^FI8)ivN+{ zl$>MnzYPCDAPHDfIx?9XG2Y9GFtU@4Xr0gZezpfTg+x!N6HO;5tbj zgitZ6;mw%q1_ODZ8xb{QzH6$x5U2K}aQ2@e^Pm~N>3;J4R&RZ>PkaTt#n&^`s;jpK z4vDYlNoQ7X{lz|fJ^h$aVCKPjAFCETholZsA5F&%tIp>48^a$R$_o-*h#nwC5ZH}R zV+M}RzJ12DJ1C~;m{rrn8@l1dqMqGk`sOstMlOw(A;{1wQ-h2UQLBy% zZQP$pW2}-J)23hS;fAIl z+=U3mK1j!P1OxYztvhJNl(izTYAm|$rLk|4SVlFF`j2A9g1c~qK;;boKD-G~WL@YTm_$HD~l`1pfx1$=xaTHeRM zdlfx*0NBSTjHJ(>i!PpNwtzA13_GY**(mh(1pT<$ZY@;o>$)RL!D`V8+{G=)-|tzMaUW7{_8?l|S^PH9 zzdqfDWF+7+hm%^(8Lj@5`k58ag_qXd!z~maO_BeCmznz4s2Kkg(N--*f7`%ENf8tU zHD{Eh0?#RV6yd2si1C!b%4&{1+@H zolPb{XAGcI02ndZY%rtNBM5eLhv1sVAc!Ns2;v~E*$)+L`PvhMH;$1*WPzVYm#zs*eegLg|RCEp81XN}#w7=$`i7uGxR{O@T z`;^*;SzlX&r0D8(Kaj-POj0_;d}-c+z5b`Gwf$DqS$N6Ov<84!nF=5PXRKqV7zr{Z zK%Zjk*q?%u#>@TqbTr)wAb;j8XkR)U?N|M1ZJh8LMMIfbMcNA}u_Aro$H?+ktlsg{ zm#O#Bvh;5+!Q%kt31V%!!pHwBQcku<%uX)mdOrRo!YOXC5`Bx0_uwUH_2d8_JDmGw zUE=Wz{=I0e-1jTIJQ6KG;i|w9HIS)-I`7>QR7YvFZwa+&PnK|H8}rb!VSHPCmq{OsxbdC16UWa zKuOW6eW;$*J1L}FcuCGG`~qNkF|fByFxuf}Zs*Yyt|^_35THKmp%La*pKx-}Itu}P zUCF|p8e`1y>XkSkjV(Fpkgu<>ZQ~s5zS)o}_W$Uf&ak)zpn~u0B91BUHIeeo{Xu3X zi)JP}?W zU~xD_gm7Qim!qJ%+KSj~Eq?FBtcR*W+z`KZf;9%II((atZ-mf9i&2<)0s_^N8`Y-! z_&un|%V(4VPAuS29F7LVbpKki%lBaO4vr;ZOIH0E#OHAbHntYk_q%%05{1(xm{~_q zMJ3xiU&Y#ibyq>YT+5_hw_TNeU?YI;QeEvjF-NQH7a+{KiC<-k`1eI6ZISgY zjFYgXxJUqng4uk$L<9tVp${ z^waY%sZT(;BB;@oC7|WsC5!~{9sv{XqXbE~_Y&?5!X2VGu#P3OCqrnz3|@hyO0y62 zVy%`M;vQ&Ky86m4!pC>g6B?_gjCDOiP~co$~OgNgdT z*O)}jF^IDJPZ2E|lGRmb4SE8-s0?NxlfMQMOltfFHC?-iyBaKsV;4Gx(NXFpxAGny zlIX#~>eGWImy0kEZGI>z{3>46Pc93ZmqUZapzY%s!d3YXkX~KgxZ3{3L5vFv?Y(VQ zd8B&88Z5?=#q#h}tf7L2>?*zlZADhet|vVO3!|2u)x*~{F0|X=_k>3@9+41V({S!= zQzq6Ru$Tx%AI$Y!sD3h`^^;^~O(FfZA%caOypo{Zj^c9~FKk1Bjc+bTe{18f zKyVF3VE{qQxk{|2#owbfb9|A6ie z=~0ZRI-IJuXJc%5E)TyIW7-9nb+s?Oeyke8c9J~+Mng1~8t?$Y%616nVMLKw3Bh?` z>$(X=qQcC^6?O{b=C*=Sf#~0-p}HD4-c)uQs*9Axg;YR!A-#T#Sw;}K@=9?295fHZ zi49v?{tJ)Qy-6fkOw8*net2tc3}B_=QY|~4MxY-VP77u|+X)c&KHX4hKY#p&!y|vE zrBOQ4NWQVT4e|O{9C>DM7mB>Qx*3y)^}nH;k!sJ z@N_CE5bJ+q%3T1Hnd0R?cA*XEdY*puk_{_pmqwBeuqxNGdsk>>C$*9lNLOaEdsk{@ z$2v+@ZUq`jnZnXKAx^FA3`;wUheYvOPW=K5u4p7x5@&=LxzdJ%xGV>hMN>*Zd{XHNw zx=r*qeZ)`NV80~<0L8>Fk-(Cl!;qq`>Xy`^T@VxuELZCNyWoIgb2MbdP6bXony>(l z({ePU^FN0y+|)%e-HV`@O+SNF+zRS{f--gx5*#SQdxLo29erOZ-uFh{cZBc+m3R6V z7#LAz$3CQOrw`n{U`%QXTji31G=i090Rr1DD7TMhD7Zp#3XJn)B1Rq;EIU(t*%A#D`yF zZvsdjRX4TTbsDg9g9{VRpJEqWC(a{|adE^$N$SC>aH4uJZ#51wv?k02=}Cn(wsjx6 zLiCl6pgaE^>a3esjdRnVcl|4R+G_l6R2Q~uT2`~GQEauAf>*3-6<%2PXIBU}B}TVl zsP*aaB5g`4w(lfkl9d`xqOHCZ5oSHzhjzYVwM!Vfa>`Y{z=l&JUB!4wCG^-lK z%-vvSrC=t3pTY%b5oYS5%y?|8ao3ZO5W>hF+ws0qv-QYRXtj4&tN2NxWVD6ZM!Clgeo{?-62XrvghoF|O6ZA^6#jX1cpp&d#Av1M-O)-t zNXFf8zHWI7rdY%Yy#&4h$O3f}5UY5u6|3W7aNbNw%-r_#IcUg&OZU4QhJ91a_1JhHu4 zvdJkOo^z7>N7(s#4g%=Wjj=o9DX@72S5i<6mKbQmjVt)Vo?XP9v3VH2GcImH3hMz! z*Xq+xq6Zs(BQb3PY$bs9+P3Yq3zX(IW3i-rCJKo-aGKa3x}ES*{wVmK%_yX%i5j|W zlPSLGUqTY%@QM94xQj**9VVosc$pXP>S`Ne4<*{BbZyhx_AQ5@4s+YL+=E^_x1-qa zd>#|IH2x_t3DcuLn zUimHvZOFZ{_(eDz+#+Q#H_OsiS(tT1BSzwEbG54%H8r57k1AhaFaXU;WXvPe`sSkXx;vA>~ocRMs2(WmH@wUr&n`XTI)Oed=yggyOxsA6i z#@jsOZG-VvYP{7MZ_A3PnW&O#N`Salkd(wgu*nZUPkx6Eo)}ZVSRlIZp5(|sOZo~9OecKBtZ&znYw14LG##Z z(PxHeO6sQ@(2P-CA0d8tj=BhW6IJo5O=svv@OCWB!K}2w1d2JuJP5H0Q-*x{-f@h& z(YyXB;zjhncl|lyMQpZyS1lq4%si-u9n|UMv1$@FrvOHS1&ct7wzaeebo^EO$AAvp!}f;u;3d&O>hfGXDu`m zDOSsRV6c?m(HX{wHwYx;=8IFApCJr~Td}bm@eku_8-&ZmbWt-6#eIU&YCXT9JigJB3K^U z>kcKs60{ou+bqAo>kcPCLZ1s9$xJiP7?`q%iX zHaImm!Q6LP8+D3RZhU1q+@B)nF<2m+XZSr9;bG$F$V(NPq!&9up^ZO)+-4NXmJ%Po z7i$aEK{?sdl8jq&{#<7*sp1T_kvfG|G!L;*NaJ+_Lq*u-B4))a8m-R62EAeDJh3_K>~jXv1oM?Q6qusjwCC{q|pW^&X}mGx(}=D4|@8%6&1nybDZ`K!jQn+7opZ!>+i;WyVz;Feh%wv{Ujl1 zbs#W)r%Grk*z&SussE|gne*Uvp2}0?|A;lF`C$w{f`5c?@?0pdj;SSJ8 z)sVY9&}(2o_UV-4r9nJp8=y8eD~l|J=^Vt*f_t`dzPi zwNrfe7(CEai~^ftaYOxU`Vf*nMoh%{86wny6yQ z?H(OVN3^0Y1^*ROlFM=$0u_mGx$OD;Tl>*QxEiR~X1p(@cMlG#SXVm&<7jLvbK(MA zt)ibTrOP?BvTpU#WqCO^o&~M=apWzy{BR4x96fa6qz@e=oxR7WAzF<}EjZZc-dsY1 z(J9obyxCBXU2!=yI>eJeyO4+kpCI8beu~~b_>pw+D>F2e!(aFa;th=j-&p_cPUU8` zXw7mMDLLCu-@HN`38g@S1FIo*7F-BL>EeD)`dtiu@^%`o?FCEh@>PCAC~vdF{9PlN zmG$AL)(2CyXb@F%1XVrsBhT;gI+Xkk4KoE5c1P2_crekv&Kr@{H4Z68+<>=Zoq{GV z4(x&f6$_VvAl6z{fLkQ6*b;o@aWGfdvF@|RR`Jxj-ij>DyunQh^V*C^XxHBWg&&kg zoOcE0g(0{2MJ4qjmN8Bt2d1Qg;YTMIu0W7Uy4PqJN9Lx6u1_MSBuV{3s}eM-}a+_Y~9*LL~j6m321#M76eQCD!)AU^%_i zu2?F}gz1RxrKZPFBTk=r`LmFIHCEneWeW0$oE5}DS+PS$UDYQ>hl;9K7yilp+ux!R zoE(+Y0&Vh$^T&43F}?6AxR0<78Kqu^lB`YkLEYxCR*c6AM0T6h3`g?Jy_OXE^JxGJWzp>032gX z#-S)Ugq(>o)#0~Tdu$07o*g{0;JiF*L-v={2`h108oOiC{X1#S{B2AY)Yo;fwF_%P zSRK8rWbyr2a>cm9e~NFDhBo$g*LE}$db6!ic&+QM;ZK@y-;KiY@pud$XS5<4oFR@* zVLBmbU^woy;C8F}u|;n8@;kt*F;7nE1#uQRYrs~?_t3Ip1Irowz(sf*&y3ZOZB%NI z9GU;(Oc*-%8CKcJKf)Fou^#>aRbkA6_MXKa04`xwFSd2dYyfy>T3{NcciMj1qO0xC z!zUdJrgP1|M9>UEp1@yt7g_oI2lz4r!_)9c?i>S%A@Iu;!7RgfPBfOiTNdQ!Bpf+* zL3<_#IGcmB@QE!i@Lw)iu#39Pd0yP5JD!&jF39_i82Wb*RqPrM+`aSianjL2n+CEb1SJaQYmlc>c|bAeb%) z3116O*Z}hKzPuRB1Arm-wJs@Gb`Hye!5|?j$59NDiCG#yTuA&1<6MLSxIb5L>xE%B z=Vbw6ib)WivCE9sJyQY3MAa-v+LG9+1xR-a_K=tyTYE8|R`(PC@Jio+W=3(+Is6#X zcF(!A0f>Js3K9~FW9u%w=mEm73+!DgFwL;QyG>B8cf9O!9Z@es(yeM+f+~nf(Do32 zT99fs0T<~ajcd0;$g2y5BpreIRF6QKVA3hyjBUnVP2}@s1Awyx9mJnO4a`-6sL%1} z1t?>e4f$+T3$A@3nC8WfX>61>&ynBt8MMiDgj6%1RC7CC8}^gV;P?p<>Im$lUMn=M zpbWb8B_P=AuHIas2*E%pfC|f;>u+osGk3Q33^iKA#Z=q~Af$q8AKk^xPIqzRWgRNC z?j6=+6v^!&c~1s3+E5@Fx*6wEbpp;JNH1)6Y%QcTTvkJxSO|T8bPd?4v8m5fhXCyc<)pGido2+^*YWb0#19kSH0W1B|2399)T(u9OIK@|Ot6*MZrMX9 zjL+4YGqJsKKP6ly&i4MZoY9>xgE_m8(&9NQA zY!$L6g|feVl|^WM;+w=8Hmeg;!?Lpz25nu))$8;5E7RbJ27B<^I_1G&DbVJ&iUVw3 z*6Q{7yS^k#Bzop4oce6~53?7ERs|dF-eA*oDm+xv%J#%P1X%dt=GVixS-hV{OQG6G zS;hpTMiU$TRy6cTh$B1;v`|S5v$%+alt7=BAL;nm(jv4)eV()zR*>|4AbwShA(FC2 z-7jF|sdY)U1)>Wo>Ad1tWH{wZ@u=m6XPMn|IbN&7w@0iE8FM%MSkW*I`PYcKP!1m> z$|D4T1wuTk*X6-&WAI*@NjTB0l2q-dv^>gCYl-iK2Z{raEV*- z2!8b?5!U=N45qxIbV3;g;!{;0g?uA?whYt!IpFj ztmVDR`QVoEcs+nKG)S`{ZJ}~r%w#bQZ|u&(03UObDsaOOhePGXDk*+g3mxfIDo3MW zKe%#*nwyenJT^oN%QE@nO}&$Yxi^NyR=z{U&gJDtZ%!xZlYu@ z4vB7FBgt2@hy7wPESq18{)5FZ{s#cJVHxUuh}P(V5BoLcY~gfqC&isuj=Kg?mW^mf zu_ATZSdsGaAO8~Nw-b<7;%5RH#Q++=o(Rp5!ry1gSyb?!SR^$2BBoo2I#tl^LBGZP zSR3Di7?XPWvT|KV5uCA`5r@lcLU~0!cwF~Mqs}q*IGSWYHtIAEIhy=E9F~IY*NZ zDZ&4Ty|;mns<;>a&t^AaA%R^rYSbvH#EM31G^m6H4Z?<~ECxdoq6S1r#K_wXyS!LJ zk{+U2j%#Uad+DQXZH3lWZ%c1g@I4_k2}m)#)PkT!Buq6g$sw+H}D<&rX#pC zCAZjgJuGvkuI6Kk+)F4F_+;&fHQQZl007PPVm>ovd-#`x2Njb}F^2C5#XPt@I~eE; z{kBjBDR3l`wKm_zB)h`(;!R>1gf8n`TQ{CW=VZ^tlxCaa>0NfzsBxkUDP-Ud1`gSO zz14~6BextKsSX=$)U9oj2;ggqZ&Z~OoRospKqxqwg6^s`uB{AaBkuv_?Y6+D#^>gr zI4_2uXHwQpwO{PW^E5B(mf}~7%4s&89-4H?OD8F<&gsm%HE_b1LdjJQoP6MhP;TW zQYHw}t{J{|YFc_@WA-m3A#5cG2Ce~Nr3r>kiWteJvK?}oY>8YZoWG3vFRkVlnYz4XK7p>Hb?S{c^omXn+MVV~7TtbU z$JteXHA@(~vbIDaJX0%H25X@fF&F8nQUDPaukpwx5?QA0a952-whVp{@yPy^rh$jh zY^>Tk**R+U-|QVjA4A8t$1>{QgjzogFpEF8U}x4Dpy++%Pn0705LCq2!YtK5_HT_& zf>ce$_`j`M&^Fs<$0|l;5W;!*RqB;VpeWi;4b4~=`xYAlKUr;sW|fNSh&|n-3TxuYoK6t>gz>QS|AetJS{LQ6mpVyx z|C$N5eNmFk(PS(u3$5-S+gfXE&oYKk`(!GCRE1qK<<9QI)Y25kK=iR+5UsbVp>8WN z-<8Kx#u(l-wlb83;xQ#gwx`EGx)kzFl}vTkz>7-Ej|u8GX=R9IoK#{Jn6O$ZAZ)bF zQZi3U#Ba3Vom)*7;F@>ogDz_U&R@dLZ8ZyUx>+gFOBTdd;qNn1WEH-LH$-Hnh!sMg0kpKZGWV`FKZGb4zIA$^Ot^ z`$K)PP>dDf7SK)ssL^#pF8VCbm&=ATG>m3KFby8hH?0S|?u;tUw%TRqm{-7AwWLk| zAPO|C5qLOhvcb6Pc^@-@UZ9O0FWS|i+WsdiGE zAYduSwPrl=@jPn%<5sVtQgp^czSQYO!Sa;o686pafMs|w6@%WchAMdlRns^9uLW(9 zm#pKd-un=iSV=+bZ_QHizjQtPAigvu&1#C0OjeyLvKWK(%D*SeX1{@DwqwXwNM~LB zJK228{bOB5u$?NqHajL>rq#(FL|EIgomgxuC51YbBCC+p;~c9Jm{h6BO@Yx2s+({M zg65wZ`w2PmyNs5edBnFHt>W8vN2U-KL+CRyQzXys@a}`VkM7=|yghKd=X0ZrTv*p4 z#ohCfeRuT;5BZimt6d)QE*m;6i-e1?)1GsXkdshK&pVj?ctC+wLJ&)5A6Pwtlf=6 z^fn~lZGmnG)}2m!vv_X29r|H=b2!1D^!c+CJj}{>RPs?RBx@#TI;>gR{f3*_r;q>3 z^UP0M;Np3 z#<&65=$PM2v2oQTunNr#o81a zqbi(x3HH(3A`7e1%qI^Dw(IqLiJ{FEZ^$g;&>;;ftQuy{Bv^(hYwjh1EY%n6lr71T z!1<+S77Z#hC-uJ+EI$%S4&D?&tj#S+@%;%~D0Ul1%w+1?LaA3UBVwlx8degrS_U4M z#buNva;$MyonP)OKMi$vNlMx zP!-WdYG+F!5yFdXI)sCUYOsD+-MgWH0qBo89yj{({ zQ>~(drk7P-)yetK&|-^s{Zqz7E7Xr+w!Ks>L)UtHVOaNbr{P>Pe3EHC&TU>v+qsv5 z-kCvLua-EBWJ!wPJAIoFZN?dSna$?No(>2|v9TY_K|?0m zI0H=a*bCAZXyRgONMC{Y$Aw4%IL*VC$~NdFD0s4H1QPWT5M`oCv3*$FhT<UWF! z-N&zaDI|s5AIYnME6q1wiSOslMFhwG=y~GBmf|M-xGlvmkfvp2+~eAO9wrWdB-X2g zKRTv<#khI!`DfwLk0#zt|tPg?~l3UgfC+K*LY)IP^#IN_ZW?N?jQ{Y;#z>Z`Ae$Uz56U zo(L}KF9l|z z#w`3x60J^hhkw)`&Io^pFjkiI-WviVEA`b0V)n4r5qq7!ioISXuk_|vdBpG`c{WP_ zMQa&8>l3JEkO#|$6I1}xhhtO#+lN^yfbqjiRRHUU7pMSs_{5T*zENO=P8Be|GxUN0 zTU*0Eeq}pmj_9Kw{>(X6fIzGmUc=7XwWf(*WySC!a`{&)3x)ti8P1v2;%fL1Y@&+= zLjf@<$bxLE7xMJiqQASvd7OHS z$-{1TmeNVDlfku_-I61xJ3n5%7o_WBn5f}N!v0$t8`|+P3ePW`8Sz>hw)3k+H$6w0 zA(dVT1y?ed*Q05!i;1q4uHXw>h>8s1(hW(oas(SxU%w!243DD@NMXijiCQ%ZMAItA z>Q#YmWeri@@t+MdX#hCFf8j)=Znv<3{9*Tl`%wt zWKn3t7@`El7^3usKx6m|85@O@@~lsQAK}i)2ja#MH<8g8Vw5`cHfLCjI0nuJSKS|& zZ$YLM6S*f>L8(|n6nJ~(X(DqK=&kk`FGy6}9OCbHvotB}jyXg@_4G9Cvw@Mo9O8(e zdKGzNl@X(Kgvb{Y$7_UvLbRN zaB5XXd()2`wa!- zhN|-^SUHZ4pX7zo!rRSfIl6&~vEN4o_itxnu9T3~80(AXzhL6fu4b9+W;aDH#|$%h zFjx{*!xwLtHJw$1e#t8sP?WH?Dks(;|CPpT0wIx0zS>u}ll|1b(q9t{q^u}P!2Ilc zfi3x60Cdec_}iSOj;~Fc<*bW z;C>cFAzOPPkX-kY=1$+Nxu@Zt#r5JGTQv9WxFXW3;Izx3Fnu4Nm+Qt(qS}6+`ZBvV zVbojVa|io5>}Q*k`jgF%enWq}^EWx`NeLUtv`a~JLV%UFvENSMiO@ab`r8U-DhIAKed-ruVS}UaPRAx?0}3Nf74ZL+eJ8sx8l$PJM#l|7Sr%i2@)Nh^WS&Je$}A&0>6@lR ze)?5Ph>co^xuub`Otiu|;g(9_16R|rXRrq;-u60%(z11cagkVQ%V}B}T{DN;jj(Zfx4JqzbI6rOyZXV8< z{MeD;I8(|- z4`cTBmUYtN!C|ZQu^8%jN{`ST@w_4bwSA#gxqY!Q$Q&4h;eY*nV;|q0+QwI+JqPIN zzE-Tcaz|xsOioy1k|kqOND?_D^SXNp!&7!Yhg+L(AGN!2ie3L$_1-6{_x^QI(Necq zo`JFYI6?nJjY8v~oa+YVqXo1uHfA5&^-pAEUEeBUIT-W?WouLj69H~FE)AD~8;#4x zO~TRF>GX9vej0uneky({z8hcCQ}7`sKjy@D;ydsir;d%)NB2pjdOlt>?18pOZ6?e+m#R+PxE@yLnLjBlx;qMA>>i!TjFh(^(oF9`QgUo--hjD5# zFj5G?z{o*t5-i8H$dSWX`siBgY)nbY<1$AqR(#IR<}5UP%#+ijmdM*BgiTZDG&lO8o-vZ+YE4Xe2m3(2&%W8IeTXIeCqM0EOnXn>V1psUEbpQ zjSrdrPhkey@}XUw>|B0M2|5k2qK;e3^L6@!$I-=td01jT1yxQc)_W9i2xBQmK_3n} z=VM82Hi?L@T1rQb=%Yl&hN_LWAmRSm?_#y~^T`MSEnG=6<) z9_zXFd8CO>b}oCf#5_x$&3}QL8n1|Sy!j*%19z)V6=o}E)x+kRQ{u;1@$d$ASUoIk zD5tQYe!iYV--}#Vp5dZVyR^s<>ugxz_-JHYQgH}+5SFUJ4f^=(s6RVy2=wBtH~sEg z{mxqh=M+^Pk2s5}{t~elRdq+tO_NR=qNgOWC5W7Beh;G|*2c+vf?!b8ITfVEafE13 zq?xs(=^2_iuRptjt3e`#7n*m+^5pgBF+beM7VwWsb0Q{JD3{Q5QfDXoygwKYOg+Q9 zaaOPwc@YBwvfPW#uF~EeP~44~I)kS(%Ne*Hp2@C{WWeCW@O;5(IAzT&9XH>nWIaQZ$BO>%2I&-dGRvt$3mU&QPCl{@QP=^-%<1xxp~*IR_bJ|u z6Wa9&g}=7BPokxG4V$)~%7aLs4B5iwTth=e6LlA1q&kt2L2U-m1`T82)2 zu2{u#kG(`h$An31nR!AF9tN*co#`?!`2n4#c*lWDtV~I+7e`=LX|QM+pci>lRDE18 zCKZ~`!s1ahvlt z+#dBxb;j6PHW)8;^1fmlR|3B=?rZoi!sgfw0$NvE>HTtUz)jdgvY1}wOHIPRpy(>w zsb6z7j3ZOzWd(*ZMT7xNR`ZVv>&011imfx9JGmWM7!U917}aiUyG-kX?A~5I%xErq z9PK?vX3N#Ghi>2kzxXsB#FHpavnJZ!)gxiN8#`_tn}(fU&zpg6eS6f{n$=w3*;-@E z3wqOn<-NJ(nSo?F8f7zXxAJBh*GuO}TSgZld6hamY-uj4q`O6G0^GQAKJ+}g&|ef!;BVDL)$c2q@hNk z6^hVV`SINH^64RSki!z&016y?UErTk5gH+zrjOn*`keoF7u=qQ_ZHUwy zqFv;|Li5gsuT~y9TLR`&zx3aX(iflTQuVj02bR3Fs3^BQBj6}1iXiUJe`1?hvKAbkJ|G6V`z6%=4NHx32q0tJA8oG5EokFSpc zptZ}#3?BRS98AAD_UEiQt^2TC=zlrnxS7kSi_CrRs||qkk1*2&0{9Z$h}o$$b$fdB z+!UaIUMn)4-SN&k*56rEzIBGqdXv){-K08;?jPJu5jFSH&(uwFnigHqx$K3IXErZp z9OMXkuJTjN;mUWLiONqk|H`MM%hJrhh<}6mv3krfKT>|C`JVDen{O-sDsz|ev&~lJ zk1=0Ye!BUh^2eILR{nVN=lJ@zyy&t#^9dC-+5DdJ3rs`#Q%zm@h2}SvKf_$A{F&y1 z%D=~)tNeS-yOlrBEK>e_^LFJgFefR0iRn?k-^@||3NuUjtISdOQiT`mm^9|O68qvB z2@X@iMhPmZpcfyN;BgTUdU2fu!zw6z3iCY`Tra`BD)^)X+g0!>3BIO+8zlIzD)@{9 zf1!d(bnZzNY?9dTsNgmUKCFW668xqLGFdfq2|-om4tcsyC5TL(S*n8jB{)?D4@q#M z3U*5H1{FLa!7LRtC77Xt$0T^J3htBOFcs{QV6;veeO!XaRj^lrVHFfMyZN393QgPG ztAcW2x!JCQBHC-dMo?8*2r=ewRDuX;nj2IwRf0cML6I~vA5+0}3F<1CA;A?Ym?^=9 zDmYq#_o?7j5-e50Yza2^SHuogfmB=QR(ApWj>9g0y0JCq zVDr%gzcYA2=vK#VSc>Sh`;!_km{<__;_jI(#{QmzdW$;?(W^U+y^y#_vrW7$@I`Y( z-k~JN?SbCA!o^XJ-@~HkI#~yv7QwN&5VP1*5D5&QX&&I@1$8tu$u>b|+;SHdfQ&jp z5(wALj0A$^&gL4YQ*;B^`Y7u)Tn@dTP7&7Y*=xPds)R;wZ)5q1R__;Lq&jDNV|j0@ z_k=c)l313Oq_U5c+nT3~Vmjqu&em)=A&{IwU%JP7kIVkBOXM_IB2!(Py?vv+DRni+ zl|)~cj&8+(c7%J-f-I*+xgE3A)gZS_l$g_n`1(rxip+16n0XQ*b{Q@$F~<<*bWsvJ zKAD+3b08^`n^=dGMKC$IHZL=?c6@?sjo`5o({8;S^;1yKj)8(Aga;RNkmoZMgc*aM zsDfU$URDMDdQd?>`$|FIJ*^-NR@C{+<=E*xUX>^!NrmQ{=u|5nv)?*dM9SsX=dRV+ z(P@qqXB$atr%pKD=rl&SUbIaNj);svlWW3p^fw-DlriH(;%}egsp(qPAt#SWhMw;@ zxnj66f(Nmho0Je4&IpL%%Ih4EdDZnnN_XM>hx+#mf_O?%?B`gXYEI)c93we=`p?m5 za$96FgQEM#mY4^aJ0%#@D+|jV9lzszRcIcA_+qih6Da{LkNkAtD7nxyDPONlhq7GB z70Jq07pKF~aynf93Q1_vDFgg*gZJl}`}kb!%gYIJxQGlFctB-Nir`4Mffrj!%ymDL z(ZgC}i8-DrF<4kxNI{W(iW~5*uG^q83-?@w2FqpJn&*vw8^$_Y+sUn7G>I#MRa=38{@j zNQt4}7I+#G$*o)ud{m@A&ma7~+99E3?oh4!w!kO)2QI9QG()Py;K_Nx^Ft_*)jDqF zwl^+=wflz(VK#rtt%07Im>X?*nX`|U)seMhy0JB$;k?H4RfcBslp+cOpO=M`>7T*k zay#XG<;xRv1E@)v_!@uF*m}6slp=KTcnjc~#V(Se7glxF#chC*b zx9EnGf9Euz^g?+gFq=SRvs61~q9#T-%xRiu3@1&iU+IuKa6X=%V%(XMJKc$;Sn!e7 zQZ)UQJXVxQax6e0DZ$&F!AXwbgDJ(+3ul&sd!8;<#9i+a4tz z>G`!uDyh}xdfJh>^kY`EZ5f!)7#Q+@tUM#C3QB>8p$hsmlrQ)^e&uxRTJPrHLsaU& z*82i;)Z=k_liYQp=px|>^pv{TJ4q#8O7kNhz`8zPtl!GD-omo@%C+94$ZRgEO5ld? zyOUeEJ|%v)_pTp-2x518Z&l&`yS?At#{6c*K`|mI!GXKIb@_yKw|7G9Zttu&xfq+P zTVj`cuW6xJQSdeb5oixr8! zLP#CPmny2f&rIq6ZZ5ZcC--+-WQfsnnb4I6uK89-xx}1^QklZ?g+Eoc{!U^szPoM> zEwlxa^^*yK^zOXLT$;|-<~*`i*}%`k4 zvNlmhOIQw!?7s9ZR+-nHaTE6w6u3{>#Pv0n|FzY7l1<#X=8ARFqXxQG!c@UPub5|_LqfB zGvRr*r5d=?>kJjVp`W;5`B_X~z(y%=w8)4JQr@ueU1>=Xq{!s$ejk_(>F>=Ge|Oi5 z8G`q|KJ3WaA^yujaihRYuvW+YxjJdwhszTZJ{s3XsD)7LxK1VlIug5cwvX%d4~4}a zjaDc0959;i7S89+=w+Ee{Fa8#H22e@rPP*K$L}}88lg3Wu2G>zLi1JVQ9`>-GOr`h zmMHh&{`FJIyq?g%lhBqZLR)vJklcKG@XuOIR^Ehy%Pny5`xDIvF-UpvaGaQ2gf$;5 zX@PL&85c7OSj35~XwV}5Gldsg1!8 zte4~GO#Rr{qWT)=D3*l4*;@`Df#XU2Y>=?kO-6dfek{Hn8u4$MbqWai_UAOKt3T41 z)wBsqZiY9VJ20SYV!TbSILgrU^eIf5oIrv1gqs9B!K3B9Oe}b;j`TfIUlbmPH{XeVDAs2;m1 zcrR1j#&Q8T2k4x+v zz-SOldrZ?9Xqlix3$!4girE$Of2Gl!cF=Kb0yhudZtaZAv0QCUHT_8MyXl#qxvp|# zV$n6G?RA!Z%yD3R=FCdHvli`xTK`^^IYU3vb)f0MjLfw6S7o~2$LJzlaRd%BVc7V` zzZY)Uv+|My>6u1KX8oshL0x?_Q@>X4(8!j`)zguyVyRaAek=YREs`o3dbUdLz?K8| zWTuH5U{YDDSeNkP=y$)mP8(#?0uZX1ND?XE-Ha9et1wK`YXOYOBWJSP^IE>rPboQ|eB5<0+pQ9R+n`v;AKfk6AS+TAMcRg1ZB@ zg0;i)ZfTU4yM@3#tDj>PtHFVf`RJjv_dC0{O?>DpcO*`qE*RWGid@?Rk;8oYe46LO z5MByb(x4RsOmPXJlQXrzf^d$V+~l$?C04qH5-k?jFJ(p8rkIK)81ahAjefn`Fi28Z zV(%$2e?$Q!$L@)c7oFz3*ea=@){2sgeP!W{0Wy3=*aPscxf#`53IA=o=Rn|6^Lvm4 zETN7Y3B@S;af=i(S-G@l*@0YN%4%**OpzU(-ZV7VD;N39lvgi}w3LqZrTH&0ic?{O z`BGdzX~K%vxT{5bx7Yrr(QMuzs|^>+-F&t2c_69PesyT6P0+>abJtD-({(kDFzVD$ zXlu3n#-yC4v0jwGn(W>bdl%gb7Q&ieBr)qfd%1J|JnUbhK6=-?(nTp?06&)nVa3gF zZ%y(VQ&MDTuR*c8U}aLz{?>fk)u>IZO8#NhyxBcbEk6OOUGFe?9;Tk{##Sxg(Vf`D z4#YOwpUO4n0aukhG|^T#-MpR=5{y6Jg;QJCY%U(UUd% zq${(Uxw*L8^%DY8P-vQMdLcuh66tT1WN)*#Pd7W&${^D}v2}&F^w_ z&#g(Vu?K5XS@*FdIm#SE!z}RPYAe9Y6oMWSgUaAZ_#)oNEa9^Kpi;dlxitwEq#MXO zNnRkUU6v$__#S6Gks%1Dz8pmrrfAd-E~DDvYQPjHX9ZWoT0taU#b}pKv+GSKr5UNA zSqXB#eWq#vx4rr=kni&m%Wj)kAc3wJ{yq}hb)KsOj@G2B^YxlEa%2O3C)+bS9V;61 zZB-RutP=BbM08}U>{?UI3zCmvIk~;=gU-6Rw@3N*^o zsAIgio`V-1qOVlhL_@%k*u-G* zu?RO{96L#WMTU^)S`v&_>`!BYB^3cIcf`eAY(_AKQ-?zQ8z_XuX}Qz0)upT`1dETe zA>`aZ6H>L+Q_-*(RorU~alPS#|6RdUCov8FcpATSj2BOx% zD-F?=U+;NezR$JWH7TpW5GkUv+hSe_6QHyz8}>9CkkgUvz;^Mg_*M3+;MQ3sr{dNE zM1SMBbxS?CHQStxhp^%TtVeSN8|d#TD}IUQ$zkSyr zL~Cy=H0vNpN|R#v6~=p-!mk`i-!iAMHjvnFvF@Y$`Z4Qi4FE-!R-HGy^wb7Ca<0{Y zZba>SU>IWIJ)BP80W>$lA~p8lMdXiUkAH?^*3s22`Iqo$IW@ zSn--BX^~RSB?X@St|y!I-o8~=d%USNquC-2TRUV5<^@hPPGLWRu76Uht^Usvft11;+u4ElJMTS9Ew7b-T zkSr`yJ@!6oL;ROhp+@DIZfdr678do`vZTiR@Xb{*knsFT*Q*5J-8i86mp zRQ%4Y`YQHYa%O>=Yh|;JR7@uSlu)6wj*H}OR_9^Ria%9vc22+3w4wW<2rwcVlG&Y< z;7{xx;`D#UdS+;lKzXwHkD$IoAi;l-BU}FkCUSz*3~j=llO}cgM^5nFftNNx*%80e z{FyLAo>~XUXyJWtAdK}LiP)kdRwtV}PtitslEV|)0EPF{nlV44fi-RpboI54IudKK z0k{+#jLmgyYneWIt4`h$(yJ$s>c5Xe;Oa!ra>uGf^CdoGv>JCfjWNv_^hOGMSth?8G<-&Q# zmM5;H;U<{foc4X`>_fJSZAh;hh;pIp4ik%vofI%1C2_iz6eK^n%_X;igf`Rkz|Q1#_odo0o|a6 zBR~=QQ!?DxNlT@2^{X9qJP7#TA>a>8&vM7Cgn9B)mZm`qF=nJWJUdoT^h`~2)_R15 zKea4tuhG;PD71Oq6sswomhdK>^hS%^UH=QKN3ixCoI<_#n^#FU zn1|>(gR6NPRZDlNrw*&7^*1S~zC~XRRF60EQzs~(9x*||^pFV(q%-xJotg+Hqb-#t z(pJ9)EQMzey$EyLm(c-b>VEUI`Hao=KL+sk1dAb~xrH{e!?i{PQN~VpauWans8^mH zXe3D!>M#=|Q8W%XTH!$DBZb@Gxqzey<)evg+@s6W%s_E$&+Rt*UI2KNI zm!!aSO@`1L0``)Koz>SgC@6ZPwIP7L&#DZPnJ-c#%)UJ0Q8|+u-=4zB(`o*NI_TR* zGbBThE;yH$`_Gk%8d!f5+iqa%7$a9|z6%3F-%>|d^G`9~;whw_%+zml(j0=CMv}Gc zU1=?XqvFz?11H!L^XGg7(kBPE2DO8#Nz-dn6)t{iIC~1KlLqwWH=jtNEzmR#25;}LfbWG$WxslSj4nJuI321-ZE|I#;uzf zi<<&pSBNOX`r4^jC|SNl&h_LphpJDhMZ~oxNQq|8V-&8I74sNDzyuqoo7B>g06dkk zIlTwT|BdR8l#L zw*m+~Yf`4KOMy_QOPBLkXoVY-R2-p0Q@U8%a-FVk3(>-J$8p!U>j}h&9IS&Tddk(v z!?2KtW;*2RnPbF^iY`kxFoqR4&Pr+i=!Ek_%QG*>;KoXjEm)@32H9g)=*S8882wGWJ zla47$2HiZ-EqyBY+_)Nkt*Q*~IXY5-mFrtiN=$9KSfLc-vs_o#qejlc!DecRk$1_@ zFn(eSca*-@Ycl0bV=ZYVfkaS+;FU}>=ij7uX;oZbDu;~}bEayvn~pH=r)*}3{>>C^ z+1I6pu7)TpS$y*M#>Am{tHk_?LO2=bcjaRW$Yk#_;)Up-YnlWz8K0V|L2#nl)(_sq zbM7{a)yvlYzzf;Tns4mEq9b2X>uiQ`mgi6Y3+uo5I@k-lj_y%!d-hfj>(0x-bn5r$ zknV|&O8AlR87woMI<*eeRADH>YTZM}Wk}tTDt!gGNfl84g{kSVAObZZp`%1+^$8JI(nkybn%GbqXYp4BDlD1ix4 zi=PU2p-8T8vG|QFg2n6*7#Wz1X70O)Zk0wmX3sL-Ehnznh}54D6dy=@N%lhIwB@7*aAoSO$h87oF=BfVg`eM zc4z;wT0i!8>UqxJsONcu>$xT6|5`o2m@f5=(o&hBI+8_y+adnr#5LiL;QDp4|DOJ~6pjo*f8Llb@K^M=CD-59-;R}WKbdCW zrs5{!#^c7|uEJ&F(D^-r&hLLwe_QoNR2togdmQ(SlpWU*{=cTbos!5`EdA|Q9jedb zV=`EO+f5QMl_w@Oxze;fyBhe=D)7L?Mp2(%G9B6uTRfJRPgyf8`Oee1!Rg{)Sko#*;h!^OgXHjLC*Is>U0B5n-NLQqY?eq&ORvA;RuP*z(@6i;W=JEbBdIMHDYb#4Cgb*f#*_QHi( z`#v!n>iGgHO^Y@j?#JjiqP2LLIeR=?17~v{RZ`0$BT~o}n2}rRTWnB3vybC`FN8oX_@TgQU%>(QGb@vlJkeV&0kLyTpH&x-VS9^@M`?8 zw4^vEn)B~)`LSYKbM6!`yn1)f{+@UA{TfR1sXwqI|A{z@>#RR5^mjzyrt*Xoyb_4P6h1gT~ z!N|QPJ(9C0E$flbX2>n*gegieO-P2Ow54}7wVIlkuGPHV3N7%f%vqTK?qiW z*vv%7+&|RpgB6S3ccS?@0j^hWg4|XZlO#rhI3;UdCRcct21gra3<|i!vJ3eq4$llb z`-0<^M2A%=_Ef@Z3BV=q-&u?u3_eH#qy&9CU7HJr6&VNM{?+k)U%OF|6ofHfkbv#Y z`VR%b>m$*d)wO%2K_8p`-uf?Xz)Ik93)B_k z5}utIZsb|7IHZ+?0$rh+BO5nvG$yojV!9(V#r8w}@JRbsG#5gpw)(>(nP$QAeVj;E zCf=s+=)5K5Z|JHTiK&>Z9eH~@gT9W2q?quncfYU6Dk6RYR8+aH=|d z9$93x{jh3e*{I#B==wiPxhoUz(BJBuA{EJci#sFs9u7@y=rVHcUtnCu$jzAg68m4LbuFiaEV9uVbUGZVMHZ=Y`&&g_s=L;Ew{W1o@T)1J8kqp-*v7xHA zp~?FhBX!cY)Gk(+uQlE(Sot0VOEo-S!#YWaKuFDSMrvSujNvm(R=?Khvb_5 zt2+J>NCukTVMc9D3{>XHu_!#ik3a(S12A}@exkex>H@nD%FcvfVX zej+1~NKEhoSrlbC{E2ta5$JyeLhYpT|6fC>hiJ1PRB8MFqY$c8`2W=i^#~38pNLSU zUY?8h^ZP#lqNLN%TL6P^aY$La3`w*`elaFMT8=nNJ=w>DvXhCgNeP``8hFz$IB9KBEs$81SQgptdc8?Ev-}qq6rkd1La1LQOZTqGrm6&P zSa?)6)R7H(#iLknFN-`uiNU}#6uRu$uNLR1azuVJKFfdU_^bVwjBD|~GJcZlv1=%7 zym$4mtLBZjxgPl%PgO~g;B8gOku_H3To2D?jr~elt~Kx?qT{flvQ!d_p9>3rg%3wA z9G_czpwBNE#*oQI(t=FFBrCb0qT0l`Xt7eyHn_MHEuy2tNx0DsI$$XuU=WLH$K+7{8+&;|pdRJ)b zwH@^*3R7W_4Yj)T!${&w(|HC!Bgx})UEc;AqgK+VVF;AbsPB2cb4T6Hn*X>697F@p z%hBC*V20E1KA8jI9GS}XH3$USy_<52p9=bTO%brN%DhDDWP=R76ItWTzmBh77lY!-^-!$Ek^M! zxi^gtlj9ro2-oIG!;G$+z^<3%_&93!sOI{QlFaSZ?+nxeW5W4 zoH-nxE;*PyPk9J8GDVj6`R$d_A-Z=%g1+#ngsAUHz2-@+_7x0oM!oB!zGnpbYS+~_ zCp1yfhV83wG-?htL|0@P0fdkD?XK9zRUO9L_U`1a=A$Dqu#>!1R3&5zlQ@Xe}g&h^Nxb%SY^3X&BNLs{2Kt?TR zyU=oSx{aE~WbdPuL04sP$}q$GcyM__ur#S(rf_4fEL6~g$EHFz#{ChObgs>PJ5I;_ zGp-AF5I6HYo7;!$BOGHZ`3KfEOd7xhDt5ml(_&OJguHa1jElcYMs*;${FGK2EPt}i z+aXl8Ht#;m+rM+?mp8MnNR|Cbt&phGE4{Ue)s9|ff znbsU}h8&X~Z1RQHI8*-p)nm=Q^rk>r(AVjDV}Be6_8bIn(KF zaB!t-iy%bZyjSw9M=E}e4oK+U^)rk&o4>T{9}ID=xu2K^x2M>B>$w8h_o^DJ%3Npl zSzH%hvu)!>P&OE_HRyen3tW6#pqdGN%-1UvHDh;9@zK{6_3W^Waj^Iqqxk5kw@2*? zjXBG;`J_q$k-79=@D;F}OaC!}*DVZq()GwXd9pCz$>nZ#K>-sHL}VGmdl>&15}eZG zg~4wj!6SkMQ6*JK@M!osa#3vHoGCqd77`qqyTlQ2W4O+-C%(E4=*DPpngFvHR zvjKfMh4zwk?>f-lfEJUY_e1Ol{(!=+Cmu*CwbF4rU1%aa9IUCVD*7oMWC8qSs6 zhWE4NnrFbmoeW3Ndzk(YdOxZR)*Mw<6lq3xWp3aZaPc5KjG#z(4mAhxnC}u~xo&pQC*0RhNYEr5Jg3v#WcT89@tlfab) zQQsE5W{Xz)hFXUEf$^W~TPx~x6_-oR|q~zh;1FcPgS%otP_DK==GMmc=3BfBd)*&*2vCbL~) zwg`e~j{06jhL?&2_A?OI^}JXA5#yw-9!-|mTMJFu2SwzqPQeLga`QCxPA8+dAC5%m zE=RDOz2@@>=sos=e6g5`a3sX7(1Pzb@?E2*Q@+l&EJaJ+VHBH2SM$fhzfj%{ahPiTCCr&m$0k$$wnDr|*H-78e;J-47xxyNtAFjadfH9J`R zDtE*=JRM7I6Yaj8g7~&4?+A^#8KiFnUJVLjNV9j>HNzX_JIP&*$&)xiSf{cht=4B7kEWRo3#})2)EypP zw>6`&Frk&5MIIyiQv{=Onz~!uep_C5i_>q{+a2944)LAcEeYbgyIVlkm@nyR(YRbl zf(gc(FQWvZjoMN2x&}t_kFunD{O5Ug`IF(Wo-3%WXuF#NnEQQF>GMlXlIY zB6|?_t4YbNk%Z)}v!q-E{>g=eEd09et!{tf7OIZ;Z|N&ie)m?VKOwoLd#gioQC9a> z)EiXc-CNOkP;b5=@F`seXsl(X|;x*Vm<+Mzy{nHT7pIqptq*CrGFH zog9tMPX1G51lj3=h`dGvN4+Il2oe*J6rxlL5w6WGzf|`=s1E=oNX+}Njf{oct)t$O zg*rtJib@i1zd3}HIcqT(^1#Ag8q#Z&_x|VGF{;%++N%9UR_#-${dv@nc73%4K!LRO zZ?pnn01B*5a&n(FQx_`gOTTAg*azX|Hn6`lWOUeZ0&0 zO92oGafh#TB%uVWV+h%-n{JZocgYwS?XL(pjCvF0j1yW0nbYy}@KZ46dmfpr`tOR3 zz%ChqHv|kuwdrP_KmF>aS~5db%2T-+4q8jmnw?P*p9>C-86Bg%&YnG^-cIh|NIV1~ zi%q1M=dc(TvU@V0qUL3^hMm>%oIPu{OMC8OD{nPu2W;wCi*|6OajZ!@5(r912~;VA zFb%unkYzNFY7t<{AerIFQ_X1!oE;mEVfYly)O&l>TY5Ope{p>{){L+;1E5mP5MP=h zK0+WyJ9a3Ny(vA-^uL;|npQVh*)9!9bY<-pM)x#68cYk$bOdKQ<+k64y>wi#+>Im! zn{rba%)3M5hbjbpksxR^A24|Hxp5#^(;LUsfnNJ|LC|j*C)lnlgl*cp5yVJ-)Bbia zJGjDu&;__S(Nk>7mO?0K?ETzY(Cxq6!1^IYBBcUTGR_$u$g#rVcTD7UBXCS*OTW?c zK1lt&Q_Gnd%VkG47mFaqm-g+(XR1n4$AhdV?@@+2P9R#~47zEt>-B3xDc5lh@a&+# zT~c7LRk2>AM*Nwf+huimlRBMOQFim329@MTh2K37$KLi@* z82oE0G`dIO9Mb!XK1Nc3B(+OYTKrY@{g<}TA<@g~ zt`%E8ois1wdYk(t34~v}M|%AK|NFZ=FuBgA-GI9g=fw5a+O)&CJ-BVSEx6}!>v0d` z9>Oib&BNV^y9JkxI}fMfx>nn?w{frHevW$-w+uH6Hx-wOI~z9)_gM|!!tKB{;rI`- z+q6Tt4qOvX{4Z0oy2A0cCEB&Kfo=(72?L=4y~|hPvOSmG~CYR zyo0*|=f)jcX44+S-Ge(D_g;WH;_kv-htqKFew+3ty-#eD;JHtzT$oAx@c5m$-J z$7SLixFZWG6E`0>4mS+<&H~0Cw+44F?n2z52kCR%GTfu|&lvppUlS^b@o?!X&Hc+p z&HdW1xD@D5vT9m?CGT=4PtCw{JU;H9_e9ck3A0#g66l>xd+(q={F6WV{f7FdX+G@% zZLU_WE!LLeDmA~Bp_LG~R10Wxv;{m((z5uMq1{Q$BGMnw7HSndPbG98Z_dH3ROQOg zXswXv3f^C;-l^aXNzcGv%t8uq!w`w!+ z7xKME!&a-tQNH}ih%BO{_;bFh)4=n1_2%GKN*`LIDP#K} zPWok$c9SYkMsgsxRqDjkTA$J1dKrnYNj>hhxqnd3onH8d@&EX+=Du&vyo@;u7A&4S z$N#|MMXGqs`L8zjy|~eQF+lGvh>hduMS%qiVnYgVHA%B^+qh;=(vlL~4zJgnD1X;y z18Mw?&KO%bbBI&BF+01o5L#|VhMeU!=e_gq z^H`}x!0|L~${A8LZ8C59w23Om>2In}F#B%Mvb7xkNqI6eCIT;hzO#@~m3d*!uQ;sw zsKu?+M<95ynsqWxQfq;3fl8U<0@E^6r4*SBVPIVun$aK4N@gUgci2ULn+ zi3hZY2EpzyW^BBC$v2O5nMYDv>zgu*EgT@}gXiIyaltppb1U!5yp|Fc(hdt7$hRM) zT&wQ!*=EfTfhl=M@R~J~1;*knvu1O=pRQK@Bz-CKSRgqATy_ny3+S~gc&b!TFjuwN z!Xg9xIfwMqduoxYqdOJ9WIJ?0A1q0zPN(EaM`5Z>3m0 zEPW;Q`v!3Pe;zKr+K%l0cEsxx@3%9xVBS~y`#NoG|NAoM<10*jcAcq=429tZZsT>4 z8EcK-b=r;n<;CmqkB#4QdRx}Z)4yoVN9olweeZ_<#P?(-$sGO9eDC`H?=1l)t+8K5 zS+Y9DcMzw~91A)Z3~E8VzsB^J_mB72Y-%p+-U`0!XUz{dKLD+yA{Y zjrU?kRmRK0d@`RG$7Yr6W2Bt|*=H*ER5+5lNlAhSEZicy0)d&okMFM?1V2*0)60>4 zkzhG#`Fz#?a}@5faKMBAVfp_Vcscb;^HhJ&iS>dtj@PnQNw3H{CA}|L!4EzaJUX8k z!Qrxxi}$VIDhunz`_d{Wd(im&q=U*SoMv}VOdL;@GN1$;!7^0RIB~-f=cJ7Rt0nd~`vy zG<+0DwDw$^`x1%AABo>I7IFaoO#H9m&%eRuUV%RuUv~VX@gKrZ!SBO&;0wjz2qc8B zo)*0HowaBB8gMa8of5vfx13TD-;0$#uxQ@m%VnT<>Kmv zDxs8bkv4VCQvbxc{s)#-6fRy8Sfb*rXR8>^$L?;<{S~(?UQwzQvoG?3opZG7Sdk{P zLz+q{nwC1p=KjSa)?T%E(SwT?FJF{Vv0`q;lGt`ttPa>zPU{Eys+NJ$ay;sGRq8Z; zr=C`J{(`0X)fE*Qeo=+LWX^(s3RCs|@I=`fOIbpC!d#I06Z#V*VfFWeL19e9Hwhfb z-(!Qq-yRfRHz@p_LE-NX3V&}<`1yo^GG7=JmUarPQJ%WovOp`~e6f&!A8$EPlqljj)_n;xSfz<8{>7$qSB$1ElIBWlJ66-?n@?{>XQvCf2v(-;IA$^2v9k z99hj|WfeSY)jgl52L?UMu1az&9TZo}_vcZ9?6~7^&LG#|XCM74yYqOtMWmnlEZ>$o z$@et1dkf%OWy`aaCv}%{q^|Nlc&1?7!iD4HL;DTQlkv~YAwIwKJB(Si?pIS z{y_CS68Ounen5q0%nwvAjm4E#%v)3udzcZhLcYa|RBBNm=FjoVyBhClgU4A-Axwk*Z{j zu4}C0EsbOD{Q2{p&LJz7ELpx}$tmaCj7f_ZE?H3FugI`aXU0@HelM=RTnd=9V9wH| z83hkiR7-EI%$QuUbZ+$nOJd1d#w~M}R>U$*tgfE3l9vX@4P?)lS&#$h42yj2cFz<5h-i31(fs^NDECZ)6uFjadc*#nB7A^Hx2UNrZ zerjgb=H6JIW%o&){$9@i-QL&0H&JEnPocQzB2+~MMGaU4k&l_lBH<%PP3IqJqHsK4&JA zPSUj0-F^S>zW|%I`*v@&+h- zqyv+u7|Q&?aCOM5<}cA-=UWo24EPKvI)B(VmC9XZd|! zW+RqNJPpcxY(c>YlI^e@rli^vF@(IRTmfGIiIlXEPAnQmCqqr%&8g|6qoYeIKApdw zUtJ8~ZH6xtsfN~ieBovhRl2Jn2TixyVnU-y$^hj(rk_c(z?6g`cXvn?IV7V~&Zu5` z%iY!fNOFlc$FCGwvhXVN&FoRWp#DlB5PxxXHdq{AHxKz)Mf*(4C!fagqHvszlw;+3DYKCHJw)U znP`iPs{^RzQv+z9i;F|lBKXin;JGRiG7GqS-KFRRi;K(rAl8Zu9Raucq_cQOD2&>iRuoE(9DzQ94C5!eIl0A2&? zfz7~1U_G!FSOcsC>VW0ILSO+fAD9Q!0<(b{AOchYexL&I03|>XPzV$Nc|b0Z17ra% zKm@FS0I2H8914fl6Dk02s8lOf%U*bpbE$XSRf5JG#oU*T3`X- z0dfE0~mm#!|)@Bmhz7eMmsjQgQ1&;Xl( z$r9Dpz?rrmKzvIsNcinx@f_v|~f8nAB9$dU+ z=|jsN{>>xHAARicx+k7ovGS=^tJnPY>1Woid-l2Y8=n8&#ur}PwE6chy}acQuWYT~ z_Ua$EzxMhYJKlWjPdne<^-jaPyWiXM=l4I@`{BNiKK^9?r;VR|{zcP)FaL7zuU~zA z=T&7qGskSn(HrbgX*j;E1mn=XCY$mg*rH~^ z+EoPm{9vqg4Q4p}F9I#uyozFUw4zdq4-2U)7RA^TK>H%9Ku>lRy2y%8wj#3H55h=& z1m4K{7Q&sZ`Ly?dR%JcN5v^8|uWJ8yqNib%IQqhvG|fB9&^K(Tgh9s;2u8?Q5Q-RP z`XUvEe(9J@B>H3G7IFImhJJ(lF(ZB9Fimm10goYAZtw)ls+9?Er8_hYv-N&OY(FNm z!squidyz@k>j@jG+#yVj`-KgqK^SRZsTvWOf#JW$Kxl$!DJ|%74e2+bTKl!A>SKP4F}3x4Xk+#FjUo4!Qg?%KsA}Wh;KE5 zxU>|DODrlw(iEF{GbrT0Ji&1Rd${!b5)Ao0Rr&sAV5xkruuS@b;A7f`Hunb9y=L&qu!1KI#0810WK-_$t6wHfwQT~%DqeHY@4pFl> zgmO3}s}$KAqGoQ0nztdbtPN2!Hbl+W6xcKkR1BoqVazQJJ{V#%LQ~ZW5pz@PS*h0m z%~dp<^iK&#JdX~*Lkkn~POtWb5Yr%oTCUvSwrErnf=UxhSE<#Mnn9JI0r`fMP-m66 z%7UR#bydVb>SjQZ(ISmO)T)%hPb#451JwX(9oz;@p2SPkPjiCF2Gt5ws#%Hh7*v*w zqI?fDL}mtw1(Z{BM#CVF<#e(dUQM5KvKtMUrGcQWcc5kPBPYFT*Mw= z`A{#7A23C^M!w2})zrMHs`2m2eY?48O~*9J6W0YOrnVT==aS;1B0Wuzq=iR9$|h-$ zRIq$Vy#ksj7@l=vNmPS@QC%L0Di%o^Z5)N3S0$}qo`zD8|6Evo>R6vas}-yc8@!W>v#Zw+K%h<9%8*0k;z z9c7TLm|ByGD3t!HKa6ZJWQLPOiI!1qp5Ui8js1hlLaf_=HSB}gK8)#O8WL;MqHT;1 zhE;cfI+=VgMhn<>s5NQL&5_!Jp~Tf(s7xzzE~xN@+75F198yG7UKqo)Oj~PsDUV_F zI{J}IqNos0zON=}G=^5PknJl^O0Ttr>d;D+CN0qQjvL7h#yBpFHEeZH;Vfmu2HP&C zsbjE@Qv)^`q&2`zyKC-^QFjLS+6$Pp_2)Bbd4K^EU81SSeIa1DNPTa(kV$I<$nOa5 z>!a?C7c*(!qJ>=|93x6>ED+^=tIpm19O_VC=wMIbu{c z=;=-a2ky#z#T}1Wz5eH~wRNziB7NF(F*ZLdf8Ep0!X?EgTw4s?CNJxC@*J8#m)VPG zuR^$}tRmzKN2bjv%JPP%MS@jDH-raKM^{u@jS*?lSS-rG2&@k1t7tS7e-$CEl9FcI zB*k5Y_nN31`D-C?D3i8bFfKqJhTI~cTN4dK@3fC(Gv2oYjZt@^Q6~TJ)5k^O7Q&Ch z(WUo084XMB6t)ZGqQysU+C|~@wB%lgPsoU%*Jy~RT)Y?R;vkx2Jn6$x_&jWkSigf| z3?F0vNfX21*OD2-fE30BlmN8=e%41zD(?OP^o|^MAYI~N5AH_*awD10UCVP9JfD5N zO0UU8@3#wkM~EJ0os_bm6X^Q)n~UT9_vrjTDS^HNdir{uKe-RAj`!c0;D5u7sz1@1 z@vQNoPlx=rMCn@dA9GWDI*H+j<4gj@qlHi8^Rn7_|HSZDU@y2ne4>BaUGe^ja$I(I zbKX|#o)hUNEoi1I*F7i7ZNek*=`|$Cwcm<(|3rSDUls4482>z+-DoSnou6&n|C-;$ z`|I<0C;aYd!~X;Lebk2kH7_t}PC(CJV*Z!D+P1%Gd%S<5e75dv+y8}q@&1YFzuCwr z?LZ0I1L70KqtvTZdcj3CyQ&pGs?#1X+H8PmwQD)vwRp5U`B579>EWMEE|n*8qxcCs z5QcvLLTNwoOm2G<;)PR;zr=V+FCMV9jMq@!9B&$)DP9(Lic5cK@o9JRBYsKV&t|ra zw?-FlMKs>|?TA;4U%PARG{M1aRMVk!KgK&Nv`n`VX^@Nvw0Dg1b0o?Om05k%pPAY+ zkMNGQD~WpGN8eBWgK@V4TKl7~58c0K(k=sBL>RqJ;9bj$cGvufH^O4@qLuARJd@kT z1pdg4E-l@Sh)n-({88m^#Scu{T0o=I*N01vGijFt`fz&we+R!!QU3;vafr@Sp~|xg zcdc)#OVD@fo1Xqh>+!yQHBNH^hkRNt80JNs&r9WSX0D>yZEP)`+2(gjU%Rs4cjlbq znRAZ+j&qJ%85!H~VB#7|rc+k{PcGNQjGXaudX8d{bd6Uw#=2%$T`uL{1i>3X02q#3 zoXa(dd7qJok%KoDSk6Fb+TZ4H5jbyX;fTZtm={vyQQny@b1!*pc0QinJPch$rDMIEP z)H82Hi=)+y>bZ*%H}mz9+7@U&G2VzGzFkO4LN(VM-y$>@I6O0kj?d5x*m!kK8jmWj z7d`gz(Z20y`=nH2<|FhOWcYLq(~fm0ZAUyiamnaoR8}q2_DG3tw~|A3amJ-9>iFn% z9+an{SvjN!Z>ZAIdA29ij$asRxRO?R2U+QV#zo4ldOp$SQBMTqD0F2}x|TG@t+=uO$iqI4K zhh!a46M8rI%uMWY_PW%5B%jt4mEai}!`jh9aMX_`2Bi)cEL}wXa4UX)P;(w_xmspj z=YhOa=eJG`A*biTR7f3iAmSRIyeh<^!@xwRkjaTvO;06W+Z%T@e?!p1VJQH0KQE|s zpxL2dC3-!jC(ZVG{T`RD_fX_nNTs+{&56!0UYB(q$UBwobZWD7@n&KLKBA8t98tIW z6GJUgX7k2!rRCMd2ReN-q^nNRl=>@e+31-8w7S?99GOKigcFj|N71Z^(HIJq5nw`y zxUoWfs#LoVD|{z}(WlZ{8x!YFF&+9vG0~9qON^<4p)xNzs{{t(n2t+{ogirP$%vqt zE3L)=PEn*EQmEH!5m76nS5^1=lJ1QQU>A8?Bi7?;%yIn!inI0ZQ>Xbf!qpn$R#|7R zPx=evER#Vc5S7yBrL_}c>ijKt%3Y36o$&@nJMznDvhjuSzdr3!{^Ot_~0vV`%D=G#&8QpyWv#BqSsk~&OEWvP4#_;vQpYBK_tdZ}I{Z|EQZ^S4F3} zBcr8xkY=21_?ObC1EJK&brFn+Zw!(o&KRk;ZV@m#)nzWBcBq9fv`p!P$mB5CTZ1*? z4js_R&Z-T zBc^cP((0*b2lHS^07J~%iZn98Rs?d}rMzKnGZG5UVun$EDcKBQH>6RD!;7;J^M;ON z-M+9lmP>|tEw#WOR*Q~#gPy^lQfZhS^oGo&xMU%Wg+GC9Cm_{ zq;wkcwVnG>S! zE6UU7$)xIqZDh=Zlx%->xPnqrn>EtO)Ugr&xWG(o`e61b`m1dFV|FXgW4)@n+({hj z>hjc%F^LrfH8C=SI_74MbXTboh6ehS94oU#Y7yX)3Z9}hF&N55t-*X$t4sGYYCR(M zCg5uX%B&^Ycw9GZ?5JV6Mt-nIIb;R{y!Jh}^xNrF4E9$>F&{ShlDYVX-n$}4rAh&uT4Rn~)F!e->cNcI3&$V!KozE~02t%kv z811>9;sgx~+J$(oCI2YW;HEv(y-Md_Lh-;xfimDOU?cDe@DE_X-6>2C5CWC}uK_;*hI`-+_<%*gCZGvO zU68``2d)Exz=Obc;7g$Mz2F@f1>68E0GgWjZluG59hazOr!+^J{!#<6NdI(+#S49&0l$1iSo8ab|!{6_hjdEixa@3rxd~|4Qujr|%|BSI#5Qw=0xG z3pC`SF{2CYIeb}lWT?I;%8Re6hZ;duS z#$S@Vcv||Bgx+4*ERE6Ck*aDMrC{HDEbIDWO-i8hr5g7VrjS&ioMMQ8MyVENfP=anory!V}#576CT)cZb)TUhlVrtWpI$6QCq>3*reL06XrvsdzRQzXwN6iF-X`9lLkQyCtO+?eq zmIR7^sYADBd$X3NvQ&X1iZsiXWkIitNn&cHm1;>Do9DF7R!sGhHe$)5Y_l$5@o&af`KYoUEf+0tqU1Qd>haHcHM25+in zw$56D<|a+B9cl?Nl}*d0LkMjoMKlE=9HVNJrq#^=NqIZHPzyq{GTo7~iq;dQc~3r0 z?zKgeXc=xi$q95ZBo94Y zjlQKPg;YI@Ey=nI^H3MshGI*s#wwZ8ySAgNXa{+$qe!IHDuRBjkVw;dC($-#Vi%!N zx2U3;M?yu4Ik(X#M`^NQ)YYvykTn@%%}&%f#a(HLTXrh(_HeZ*6&tByRF<>wNg!HX zq>`dCi5E&@R--mhWf7~QIxvlF4XzgXMjuCuT|}iYl`x>m%TV}*ujY}AYm9m{ZhH@3eU|OevoS1>V!rX*9^GYuy9jFU~iauUC~)uEMM2OB6TnJAG~x~CC}!dWy(YaNX~+GO2{;$P{mDaHauS+(*7 zE=43*=u)SiNk%lWFsO6I${Fm_1c~O3l9`3_nEFcs1!(+|P<}Ce2zw*NZE9L!G3}6$ ziLM=`jhzUEwDPUc|3aZC8yI2%+bbC)NDIHQaP1e5J|xa4mQ9N)aU11^h9{OgY#ej@ zn`M$r_v56IK(AAm(*~`^5%Tt?q*^Tfb=F6ysQcoiBC?7!GW&Ewm3z*?XOzN1az8jRr(?HMihknpJ>!v!ZdQAbwg3qVqZgIV=i*NOw*llo51@D!0apW$ zMc<#mo%mY`Pv+G zTUCK*3)-p*82;n4_DdN2U#<#iPoe+oklJ}A1{@`GXU**$&HJiP)rTjZQtxvfZ#+p) zu3KuA`x?-1Td{A2LG^C&f6hNtCs*|TLOba*qVz9<{+%bAp1g!P@Z`ZKC$}E|El(&R z#$bRnX5aPu3{3I98}{)n>EGMCzwtP}L2`@A8J!Ex1eJ*I4qE{MV1a=^e;^&`1#}0x z01R+66K8jUM&M&$FR%w_0Coa9fbBp%um#u*Yy{Q=Yk=jzVqgJ4^z(q(Km@1&N`L|& z2gm|kfB+bP?!eg?3~J+$E_hD`P7VcMz#*Us_!!s;Yys8+%Yb=61SkOtfjl4wZ~<0; z1^NR9pa+l!bOspUNCx5r8i4Hp(Qn3mEwCJz57Yo2AP>j^T);pe6*%Hj$5|TREehse zbP%47j^m>7{HyQ8XCkkA*EOfHBNzD`19^;vERc5HGbw3rzt6M_iCNXs(e9eR_O9Jq zb8pT6m(pwTXm>6A|Ky!MOh;&d?APL_kxz$Pqt_nLuLpf=pt7Vgd}|cy383Xs{~JQ& zM(qR1gLt5OY_5kTF1+gB3+Y{xT}1)(V*ry@f_wEc>{vFWfy7BhApr3RG(9~zIo|=0zE%*c;~K5Uwvsy{4lljD#GrrjQ_p67@n{!oG z|FnyrKK5+d7q4yqDeLRid%pYe>(8#eamhQwygT1m)OFRfbv?gWk$tZB;x5&5?x>#e zX3ogMp-rnFv^h+hpFf;Ga`k~J(rZ&3_dNE%q@Sm(I`V{}zTl|^7WccS?wNGY-o8`r zI{wkrrPw(`5&J9nOtr%UI2u%e3o z9g`<{9G{N9_o2Y~w|y`F@x6iGo}U+9yy@L<<%Vuo&KrK|@U^e4{zi7KdeP^9uG1eZ zcYG}yr7c5mJn-kmTi^eS{OYMwyWI26o4NCuCV5Ei^;g?d{l2<&%>eo4wNEr{@yyO{_+*^3?54AJURf~nwx1Wxkrw@A?|EZc z-%PH4t=Rjncdc`WKeU-S^?~E#`GuV?-Ei=WJ63gcygqN(&|kgyaJA*5!FJ>HUc0aS zi2r89!b!GOcfL|TVc%18S3UUx|9Qpp=dB+5c-F*CX#@L?Xc}Y|M(01fYg*s?C#J5f z-~Z~(Cl0=T`D1^XKWV}uackafeR_<#&Rcrww)>wuYw^wJH4WPT_^#bMQa@R>SDW3` zrlBT9>rE}g#-2(1|MZ1wgbTl~jsHL`z0sw))4U5w)sh=snmhHaIe0H@#BW=JsV3Ef z5$Q9Ym8Je!hMG!$AT0I452e_{Wfk5^cX$wfyCxJ22g@UaaM0iG4p$DI!Syjcb6Y`#8@%$6yfgqdH;bm($uAn^6sikYOw_U|0SuB_0}Di}blnq~i79 z5atZ*U!Lj>$2|4k!<5wtFp}$?;q~K_x%e;jq3Q}E$eRUK5M|X z#J1A*N82vj*S4$e6YTTs_t@*~EA4CSYwhdp!yE;UR~#oD14Wk@5$_Wp7oQT(lLkvJ z=^^QWbfNQVr`s8Fe(L48@rdy#a&!`#O;d%=LKh)T=q~gSdI<(0UFa_i z6l|vJOcPCIrYh5X(|x8toBEh-=5gj(<~s8>^8s@g%OJ}bOO54WOTFc=rK{CsEw$ce zecJkg^_aDnEz{<)&9^;gYp@-)U230VFSCd2x7(N6m)ln%r`TBk}YPd*;;lH`xv{DeVyIQ9)U!9a2)60a=3Avo7>Fo z9c++op5OgUnWQuDRSi-+a`3y(MH>Vp(okWjSP-X}#aN!uqnctL+M# z)mC8h+itYg+upMM!*-s1kX^73vyZhG+85ea*q^g+gCq{xkK503ba9M!lsXnTUUvM+ zvCr{?qqArbZDOXFCr%N4;@#pp$l{oIxztZ`NY&DE>2>Ll)ZN+Nd9(9Q=VIq8(2R>@ zi#%GMBflnpC_^V)409AWhV8~)#!g~A(Dh~PdiG8BJ+_fO%pPYi;Y?fxSH<1LJ;&|m z{=!|#kKrfrck{pHI~cnf(~S;esWD=F&-jV4qi{ZSBTu+N2nutA1;Qd>C$=e{W4gp- zFpV@#F;$x0HGO0{X*%1?nqB7W%^S>rfR^+?T^MaCwcKE-wmf24YuRXd)AFI^TT5qa zSL=N1Y#%klO#%0DAjbEWA{9v@0B-3cqbW@#amFWf3F|)~%VewezSTGJTdTxbL~2uzCC} zz8BiAK}Ny2$+*?H$M~u74WZa{vuTB?qxpPj>rJ+4_7@$;9eu@Y@hT@7+S5>XhO^hP zquG3R0y`PCr;M#)=dz`opPPj?Bd>c1;&Sr%Z<+(Hyi(8{LuJ?@whQnxLmke;DiiexKIdfc|_PI><~T|{wj1gEkfJ* zqUn_BLh}`7yLqTN$2{JAxA`ISTJtC7pUl~o2y|tQvG#x)SAOK(LMt$#`TVK z#Ia(b7!v28ef*91w75a67k7#uil@YG(q$4aiBhSwL|Q4WlitOa`JT?9D1|a-g|iYZ z=UnFo=O*V?=UMWv*tK@g(eR3m}LoI&W3G%35?_rm+%h|Q;2KH67 zs158sXwp|`Nq%BGa$UI#xL({K$J=4xIKRy%KT-tFAxe9QU1vzy!lqsS3*P_C9Amz(6T zW%`lPWe^?14rj-(v!T7uv+uKKaXq+f=xmUi$E{R!^b52tefe^JI)4+t0D3e*s1T}z z8Ny9yO%4m+3EfN<(`}~vO^-oWx0~KHeQWA!E;WmmEK8APre&9<&~_90l*P8?=t0-p zKD2!XNtx}L_9FX@kkEenbVq|DEIugSCask^Im0qj$1uym)=2g;ZWQO?p5nH1ZvH|3 zW!`3d)L3tvC@dA$3744%n=8!K=3CA8nwO$)+hhLJ{8w`aOBc%(mQ2fymgg+5T6pVd z>oV)FY*(R`T5Wp?CG{8E-)ujkCFqCrbJ3DdwwKt0=-;;58|+PX)^V%j4acQu54uS6 zq{q->9h7=G`=Fh+Iy0RINYB>e8*#XGWJ|bh+zyO5nz$3_tGn?$Z{x>8N`AhYpO2b$ zh<6!Fj5na2+GczMz4qUYKN>p;Yry$d;S=Fo;YT6O{EhjPxrfDMuW{@a&zGE1iNsPG z^>i+qVb*YK(Nb(gueSxQ#dg%@@3{;4>-cf}C;Z>|r;M*-Oz;C*_s+saXxo=#Z1b}4 zN7U4vLIZleE6^@xq36pr<(Udhg{C6(flr&(qyO7%+JZ5`Ak^K_<^pq}xyXF8dA0dN zbECP*e9(Nzd;~q>G4n~(=3GmjrNB~XF3@F5+~w*x#eg z=pkiGxzZSE0&2xM@_F(-@(y{o{1v6sh_hX|U4VY1l4a4}y@~PQ9*hY0^PlqvQ8It$ zf8bB>DaKC5UmLp_FEsWvUSYh_xX5^|P%2CncA;E&%P32c{dxN_J0d!Q-^s(RknPFs z<`3|{Gwu=IHeFL4f(lV*I}yBbXQ1Dck_Qh>xJo+y;GEz%S%~ z&wt9F;!};Cja`gs#_q-*#$HAPG^7gsbd7Pg@pI#0V`rgTbTlV{lZS;mj9J$RYlZbF z-Oa)l;Ve@ZQ<|x}sfVe-{JyoD?E%{z_WSIz!ys-(FIy~mrLfe^d6l!o`GxZX`BRxX z37YRLWTz`yx}JX#@+dLRG;S~o!nfwmmI91sickwYC{w?^3gud3pKY(T-)kT3nCZCF zvC{Fqqo;@uFDNoFm{*_<`%2VHEU+{cZcZ_V-CvEY4}+mWRBT@E*Pb z5~$&c-(DDPq?<&O%j9=PoU@(toC`4WSq|-3>)hzv;@s}s>D=S|*xBSf^Z2pdG^-$o`+t30mf&G?aMG~Z62dkj9u{8u^fXL}p4-m}7{ukS${U7zNa@3)wo1qBpXe*)5nOeT-i4 z7~7fa!Wp=9PT;H1Io9=RAHKj@fgjrcAEB>4w{Z) zbeV1*h|y&(TAbPDdFEx9ajivra|mtCNpqSd-NIU|mI_N1Mi2`u3oUh)?Un}1UW_)= ztlg~xt*kZInrAJ=&yrHmwn7i?!lBalW_!?aX3vnYbLI>Alj&Qlr#_zUdJ9 z`=in^>7>-z*~OXW?C$L0?Bz6|_wVl<=wzJ&+JP#JvlloQI_s1c3KBbWosqy937nC@ c83~+`z!?dgk-!-VoRPp837nC@{|X8G7ocWVn*aa+ literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node new file mode 100644 index 0000000000000000000000000000000000000000..a544c8ed6385a61b494425288425714221fc77f4 GIT binary patch literal 118272 zcmeFae|(h1wLkuBvPqV(VHZg-N|1p-PcoUPr@?(>r1U3XVbyg%+x@<zmgryU)y=IdjgLGiT16nR&MI@3$$*ilSKYZy1WQ7vJ>f7N1}I(TCy@ z<9;?m**)x?oA+AgymRvc|HEr@SFd^Op*0VFE%&PrKKkfmf!zPIB6p4YXzs(0=FXZ| zo%^-Nman)oBO^V}M7{qXUh27Yoo#({&gFBn?-SdAI?Yu0~ zH9J4Y_oW+uvGXC3UcR$We0$ArpZK2t@K^nWb0`kH9z~gBNm2f5&x775OqY^$^KeVL zqKvmF%F8l$`$~K}@$W_+J<)TLqNFGy9s5=akO?6^`D+V`2^fF`8~c{Y#_w8`$SsO; zaB8(>U|*r>MIdFUzdHjf)&)@5kSj?P zyi(^U{N*ajvOCu-e=zW%qCE0A3W%L`_`Yo*p>CAiDZ!MS0+feQejUDFxC$w%>+mC%bK zAAi^^>Yx%qQK!YadN4hSIl;pL8?!KHgT**bR193jcU(nZr)45&>zr;kg~n#(Sv!SZNg6`a?E^?=)3XPqa|WbaP``P4ZnS%j zv`o((P+r}#B+o_)(UugrFQyQOXNRm?)@A;Th|qW*G=iwoz4j*oD3szcZ%pWmg;of% z%LLg1#K-5DARYAtA;o)y`0;t!XGYe<8Ndy-iuVnHP`Pdy2(M4K$1<2@0QpB)bf84> z50($%n;su9SB=4`Gy+jzz}fT>MwWBB#W{#N&^OGu)s6zQIdgn=Dw81} zIYMKk3J|kBF?Ok>7xW~dkw8&(sJ_336^ABYnYS);A)8bHc`!r!qm8|5d@%3H-a3Ff zA?s?MJWt4aDQjCyf`@CSN4RIW2dDAl*DB;kQzDO5+P{(Q924YK);8y z4^$(j-^)z`qV|Cb&G9#T0Bt0YA>?0WhjOvm7?d$eq=e(+QAbBv;{#C^C*qrp@obIq zVHO{0fVc|LUr~urdNRZpO?O&m4UpGfavGwAK;jA~B#_=qQ(poVB)>!q(R7rKzfGQm zAtukv%Gl5Xmd;cvH060|PGVmZkDZn!1L&vr6LX^JC_St-`b4#l9QoVmBaAWn0wxjB z{-#2czS^tk6XU(XV4rzIbMl;3M%H#3RSWX68RiswgEHR>b9~JzVR$qV=Uao*vL6Uk0B#7~aC%7ZSRZ4I>J*ZksM`giMOXfZ51e1SG-mrp$(N2~kK8T{9&WutK1huqzU~uK_)% zmsyRhWwLR9*A0r(2LKxYKo>}L3Q+X8RUvy@X8i(~0n&}p3z;mE)T}3J=9|=@*)p3c z7OmY{-xlQ$@DC-xkB`BF`0=QaEs1XmLlAxm_#z>`1jiP_);8J{2;gB^a)?SkmLzM?zyW!4J{HKM{tF&f(b*9a;BYpw*a=ldZ)Z0IWHV=|nRRFebuvvN0@)3!EVZpf z>EFjo;aH7;XcM*OaS54AkOh)lmP)P{hTL(;hW?_y4r$-DJj}%TYq0N0^|f<$av?Go z`f7v|;b?jf1`>{ha4cuf*4O7{!k5r7_#MsvOhu(aDJKba9V_&AwKZZh-Op{>AMM&y zrL(MG42L?F`X!@b(R8VY;Qjs3g1nsh#s~31Fal%Xq(G6N{*b1#GnHJb*+kWoA&{TT zK&I*0JX1~>g}Ym~7-EN#a$mn;m|o4}vUn*xgJ?0yA^J!CYuvgVsxNcMy0D6PmMr&Q zU2bMwqd$a)(y6Q#JtXGID!5|ktxVmU$!2Hk71?o{KA^v(ZzJc{A?gT!q=sDzxT`}; z`+dw6vi^l+lix8nRPxPr*TFGy)7bb^4tvk|U~ZyYvZ_o7svd61QV?Kd5uoXo)bP2o z6sv|faS#c{duQr;u)>orL#9zDCf9@>=nMkBiYZl$4B8wFnPKQ*>wF`tf-DOxQy+cL zg}FEzW=T>?LOAM=yN%DhUSbk;HEbgDFKInD{Aj` zLzw&q)Q{;Hn~UXJi_@)_*_w{4z4@&b-YSqxUI$H@or9(m_;;w`I52X$KG&vwzV?aF z9Iv(P9;Y~sywG-hX@@M4kF-NckzZeFN1ZiEwPNvG+o#$1`cz!DEGH#dL*asGZA=%O|ILVGUTZvrAr@w~VY+ z#19ms-C8`?zV;E=LdqCR@--(cR%UClxgD=vg2J&w%owD4z?S1R-iJJDguP(z@~0T1#f5Ivd5AIdN1{EZX1TE9a$6f>mlMgvO({dB}Z6=jg8dK zWoxZgAHprNqnE^Zs>39}3NR1bX)eY9?+;bQJG#PF>>b$AlK?-sqi;Z74LaG*5uZgT z*K6(Zm`GLiLbfW;N!^;+pg?3>i4*El8+GYQHnxN^L@%NXT}ES};&|;?V1n7dEw;u> z1?zo{mx?x3ISw3lhf3ZIt$*?;xwtkMBK70>kdV_opS_C=j^(ZbA(1dLy*0-BXb7#W z*)DrFaFc&)jPtL4ZW#VkF%4dTBx+{r9%U(et8THJ&5j%q<0ZWL+-_j5X1`>W_Rw_0 zS5tZgX~#F8h9~cMt#QH~WUzv#CMeF(?z~16vG@6JNVGQQ!OCW7{bJI4o5E(oT2zIe z&I|75CWgzgc6>zsmJ7?3vwqNJuN$@}%+@1gqth;~}v*-l)0itD$ zn?!&GdCO2L96zFKV5uODl@cu=40N#qBJ}A5LQjg>b+xYwMxg>~>SW27#9$IiSj7Yo zS~$NUDbysWKu4P@JD7irRv>RW9JmQJR)e10I6DKVZOVHVZ39v65bUhabF=fDT`~;* z8a~kHZZDDCh-$!_6URG1OuO^;0stK}ow~dLRCocsil8x=tl+JL(XcC=4}%BJvISGL z{V@bn+Dw}j-A*GJSR+IVVTDe<%|p}%2!r}Bph>>O$T}r-cpM)49hrHda!YNv4umDS72)d|83uIryD*C+53-aa(eVYY=I$oQTH_x)x z#@yDJ%tW_JZG=aGu9Z@lh4yA=3Mr83`-0Y>rc!g{_ht-|TxI=Ytg;RV>ZEQ_W7~j* z%%2k4n)e)@uc=UW(YR>!#i3iJCc2FEJGF2hsVpgD1>AjzbdZ~O&B7%We5 zy76BC8#M<1Z{MakPb2-0_^!WIasKLd#rZR&e}d;v@LvWP7nLFJ68?)&{v+gR`0v2K zVo6H2rlh9XhNX`hZqFFuaE|(4{2Ted*w(e0x-RPe!GFod%nc*Hj=Bln239$g5skDd zUi5h;M)u3Xz3iFnXI;+vOD54Cg#f;*J-`ps@L1(LQSu?>-A2(K2xvH*6VZh z`dqy}Pp_Y#*H6^z3-tQQdVQf@U!vE$_4-+QeT7~>N3Zwl^$Ya+MSA@by?&Wqzg(~P z>-DSj`qg@UK(Ak?*RR)KXoL#tFVOhVUl7Ktl>93Fg{>lo2C4o6ng0eue}POf^v&r% z3%$}`pi%49U)YW>8pmvs3_jV5+f=J797**WAHbA07~s+A??II+y=)0V!V$X)2J^SS z4>0rfvSmZS=w-`A>x$pvB!}vnc&IHa0MM3yC>UzX2^h4sY6uv;Y_(`B=gZp4lWhft zz=M8w`UwVYts4SHFIz9#n)qdHO%`o!X*2~slo$&|b6coShiY*Pb+u@;03Nr+lzJ>HiH0u4bMiC4*MD%)}ofk(9Uv}|kE5HNaKg=p)!FKg>X+18vP@QAi{ z$+m_XR(jb2(bnF9ZKW@*gMDEgi)-8DU`M)4ren5IuJ0yRBQ^;`FwwM;rLV%uxWZo7 z;VK}`_IKT_h%t?|5?l_1CK7_#s7Aq@oqIpBIE}2`WGijhxy~w}rztPu6E+4*Du0-m zFg}DS${<*b56q1F2x=^)W6kCGyQa$KR^{ah`!v~qh=hc?WRx4Q7;D!jfUrFFHtGU{ z7jt(WmJ+m7gr%dc5{fTp5X6tOWYF#?gD|k#LrFKg#&Qs0e6nTJyGD!mAG?;!X2J+ zE!@_J$#Tuf`+vqwV)L)|U`aG9Zz5^e`aGh0PF{)M3EYVip95*P>xBX^QQA@#qDLXA z37AE9QI{414a6rp-78r~Jdjq=MbV}A97IC_D%FnW*rg&`Jh4s2KeTfTsu3_RrAZqw zG!|9t2q2tdaRiqq!;v4`gd*&^j6h4-h#)XpE=7_N?KHC5QPdQ6G!+9->`Yt-961Pp zvus*GAQ~STh7cn-$z;D`ZyQ<70+*xdQ-mJ;Qd!wMKHKT1*vRH$fH7bVLlM}?AU zypLeTSAxB&!xh%B=C|nO_HG=|Qs9-y8QdDn?m#vxFC4ONl3woY-f>l3k=-KdmJC_f zs+VVWuehqN$et_ex`(W5)628F@3^Y2$i7b0oi(s-jt}1WM80-3_`wht96I%yobI#e z2v%Nk4d?>yA!zC$l1Hvyp4HHE-8@9lM2Ucg+UWBNu-lal zZOJUd`qNaZ;vUCS|AF}2=Jk1Y16mxo8PVi)c0EhN=G1$}QD_kCCykBKl>fChnxMoyxER{@8_ zteDSC<{LU)5_6k@E$TV5Qfh}5r$pmPf%hcs2GP=|jp8-Hm|I|RF5dysDqiheA%?mc zLidI|7nbj&e0@bvsPc%k0CMz;5if>wM#zKd13^P8Q!wPkMsEq$gvh}7sRN8u3TG1|SMg*-;L7lbEx{FVD8^&q?Q2wLr6l^2%l8AMO5DYt7A5Z`52XE3+X z;!Z1RbbJ@Pl>wKaW|CiNz))9heARg=Zs0dNWXLua+A%R)n@N?JR5o2Dhy*%DfR4s> zX_5?el0VNRAoAz`IRQ3dSVNw3P`a~Zv&w{`@sDwMlJ)5u?5v$tp3||)igkmd>1{|2 zxklD5~;3Nb)8S?Dowojqm=s0vSKf{rvoOTCN{Zo}yV8-;?lYzJX5QgnD=4$7d}|G-|OO!CJHP(phg@Dt_U zBa%i|Siq?c|7!HL+=}|vS@ayR&|VnLklAPhThdvX07cSiWF3lD+8V1=D=RsxK}XwC zM6c~_m}YHD^<>s2Qi%?&v@czECD<2oC9Z8>cCjgBL*b%8h0ATyseq56s_-ll1{dl7 zJUA96aj-4hjSpd4_JYPiw&lc-wq<+Vw(PpLZ2<{dUy{1|3mc!WZL(QF9GNtsh_*;7 zh|{{QY|0VA49-Zn1ZiY%`u}JS_gzEV8(C4bo~$ktt;cN7Al7G?t;Y;-taalh_uQd z{^84|1YFjQw^7$eC*EDCEv6!QXbYjF$`e)H{j{%EE)C=X%pGJbdUW-KP zWpSbV9Ug~8wc=C3S!d5#>?#+P+ejNvCCqu{R^4+B202v6v1L{cE7s`=LtILSr(J2O zbTn7KrK^W9-t~oDAx~FG4fFp5EzA=pi*(e>UmqKz?5ynh^^2kTn??c}qd01&6et&X z;b`s*ZQ7HDVeA)(ZW$S>?83Zy4cJozE7=KHcUdAy_k?wIyRN?2?0LCmp`&@>kD2F$ z?s=6}aveK1=%0{hJ3k5vO>@LH*)$_LP^B5xz?=qawNJ{qLK;fA(2z8>Aw1|pAOH89 zs9n^jhAO{6*Q+tzQ+%EE`S_EflAUd`Vnm}(BbdXO(Nn(=16z1@KA(!JY{L;@U%wwA z`#RA?Hpr~*!EzQeOO&E(%`A!LOYUd&Y3C*$^8 zfczY?zJB*A3cs1!D4aAp(GZPog0*WoX{Zh))PxxyZ$m>#>Vjw!4^X?Cu7jn<3f|nE zf=)v*=91Nk>V$d=@cWm80^a<4IhqLTK(7<1k~b#Ooax_o4Vvj3oBa3mWu6G*J+s3_4%aMUqJpKHO1<%c}ZS&^Q^oZu*aQKRBzif+ML=*(S`GlWw$+& zCYO*j@7dwoXYwj)8e5dK{v)YR6db_Ypp3kjdXccB?s(iUjw*qizru<0mv_kd>%~O> zm{!Lrk2m9d447_(;9i^7pZBW(ouu@^CC$ zck}BYTISiCPdE=HcNTk&K0e96&+IDozyGGLqQyuB+z48(lKG&e3b_@~=7h=Vi*$QK zyO@(w&|VFH7SV=ltafH2=!ZEeislRFBx#S7#Pzy+NPE)c@0`Mrh4 zIc9-W_3tnhT+4#s$dLJYpI??Ni z7kcPEOkxhRAO=noGF^_qjR;zKU#l!%benl&QH`F+|g+{)O)PA)uLw0%%Eyz?&LOHqN3XdtyT(6T4zI zIPy5}@V*GYh+U{0u?vMf5xZ&Jn4+j7fD)nTFe<}5jYTTcKm>Uk(r!yCn$Gs(8q2%< zCTLH2G2GV4x;_M@Jn`i_DXJmn!O_Oqd4_AMXMVAT8&WF{@nuFo^vL%pYq`sUa zKCSc#4H$rnv`26{9x6whgF+)sOj7N(9!fErU=S1*QE=nu~OQCqh8MxhlYJNc0Y~`kb^!7eKoMaD+@lqGPnQ-2p~9! z#vW&9VAT@iWEDW_FxfKqDtV?Do0}F|*$JJ4%K|oq2kf&UH@ga(L5#B*0Z=Q?7Z*@e z)h0HTv$fO|>0(>%j5j%e3mgz2E-J4g7RNk6$!&s?^=K)FT0$ea;t(?$G4FzOZ@j81 zHdTSM=|7-4RK1Z-bVy#J6b~YnO`;Bj2_fj`01dcIv%RaBqT!5_-O@fm7-XF=liUln z7G#3G9I{5{Z3);Up%GLI`?5LQiqp9Rgpn-~e$f3h#McJ)2aaK&KO9YThy}!Hsp+hd z4#ixvXQbg;K?e?f08L>}QMKr1-9)sK3)PTN(+CR6x0y_j6l{(VEDX*`jQecJ zadw_^mqWS(l&6!o;W%m>r!>Z5J{ig$Er{78{|_L$LkMyRi}cG@( zqR>Y=T`G#V(4o+!%3t4r+(eraH(WIX4A*SJ)}bT`Lxaf)Rz;YHzSspNA8u&6^(1PA zCXYcEl;RCX?OtGlL}?=o90CE6uEWraXIh)nVV&bO671s*R0lS)L$UH5sY95_ThW1e z9hPBKuZIxRl`6f;I*3)2n&$Iicu092NyEV$(37JmtSJBKFQ89InD&zpby(JlD^IxG z6iE?JFsXDpp(E*G@WipwD7Vj zUUV2zK^l{U7G6G|-+^?T;DK1AaUL(Rq`{-mTK#m%Y~p;r<_oI9Vv~W`PDTObu}KvW zL5Gq81Z?`MK_gpOB{JTi5Soc#qMf+|gX}5+y^o&J3yBEQ(dnzNg{KdA(9O+sK`#$l zXl{r4tTo>G+@T6L(Xuh2M+fpN41b_R@{0ima@WabCPWQU?6x0y6QJnV*#q@*AVN7| zOp^#l2!!iNX>ivDGZ=_0kQOk8RgOyD-Z^xqm@~;Sk}hQRKbc7Y{r@tPkT5Zu%dhUri^i%dGirdU9O92%y7~K{)7cY#;v> zOnSU{p!6`)kRC-$J?c>C^nui-&^m1P!gVCyHiOQK>b91w0(>{)r8H%vA}MlK5`uZFT-Ty1O8(i|NLm*Ih%&KulnPky3+(loVz(l9cc+ zghAL8$HyF4{>3M_MPx0h|2mQ|uOTiFo#!xa7}xI*ql;{y@Udw!6sPgbX>Xwyta*9+ z*X2-pG+`)_mejD04ofmuaqJ?2fN89g|K@;@%y2yZt9T5gNwb|E2c-4a#Q6O;nqdlP zIrACZ7^cv=Dl;A^&5j-=W87r~{}3pm_uUw&H6S?0KLP{MR*a8>t|@kjQWy;Xgzjt$m_-E06Az69J@mr(#Q~9Nck4Gnw=0aGM$X zn84miSQO@BxJ(btRxn&@LNhIb9$MpYyrBprA?z+`%JEV)K~psp;~m_Ppaov;nhu85 zrx@fxsc|4p!r^d_$TmTpQYORKq>2!7$m8@@8!C=Lba^{HI00a6>hzqO zK{XaQNgz(6@+|9Fm&QC@&DjwFSIz$wP1n}qu+h@RhufkwXe+vunufGmR~ST`e`RTr zhe-Gy+BHcik|dyphpyh9^%-g=s4!H7j=Qc+!%&gyfMqpW88_=OzEvB${jM~;`jh*Yhf zT5r~@W_330a@P}&`D(OMs;Q{i{M6034R8}5pNnIRcsHKHYrt7;ZSZu!%Gx5yuCN>A zMH{*Rv<$bD)!Q2E^+hR9pT_GoGOGC*;HU)wKaQmFHE2^W;E#wex>OU%tmZ!_0A7PU zyqOA(xWbF0myzLLhGrOx+swOxr2npP3nDtz>{M$P#f@wi4`O|%1hQJvwS$)X-VVHn zn`TuqQ;iHiRm0j^f9v!OKgH7DG_G9Pi0k?nU2iA%Bwx}#GqfJV^`5IkJ80efiDI#A zR&#EpufY5CWl?RLe+Sf!YCC!#5fwJ0|Gu`sz3`0wbl-0Sw>O;)eA>#L$jU<28Dym* z>qO*x^-CqqGp?XsTWH2#32(avbivqp1J|{+?MD=Ybq7 zZbQL#tbuSneb*#v&mP1AFbxpKltmb6vC^^e(r)-^{xhf_D^z45%u!e^Ua1Ge!05MH z2>D(Rg)5j@XQjT~?tfKOq-=i*AiTUViaC&8Lx23u8&L6if?#c4u1^G6;o;z^bcLm>&3-`bFDO!0!=V|{NB*8D?N)%>Y^AwbaduhlV97ZN(+QvI$mWkDi` z#nBQ+Fo4nHe=d>3o8pBvC^Ys6VgG?z2-|995)?YNw9$C@0Qu}00%4~duh07XE47`$ zT}Xj4MeAD8`+-qUWh-?I=TlXgtaBx|97v`+SM|F>A{gnR@VLfM|WU zIJQ)w%e4JeW28fyjzq)VizJX&QW4|y-|iqzF~}Xk7qKdr@`;sJ3gL*}-hxslw1?O;NL(;{&(%bqj+bT< z(c5MwR6P(cyhzLXfrD>*y!4kS^*a-*YVpE-RCryk#T?ZBFal^^e%Gy{A8;VZ5zGWz z4Ws#!w}5dNhh7XdsMXqK$Nr5}YDisr@b*}DEE41m;M)?X;69Y*3x$>%6|yes{wcU^ z$Q`7ejyT5Dt1Hbsy|bAAxYsZaw;5B~F*74NBAZS!jyBxD-PzC<3tWv3RKQT~W>k@U zuDb4>bg9*->a=8guvd`>LD$N83|=G0R-w`B!HeGSGglpYY-f77Nw(g%np#-RSO$}x7e??Xl<2MFlgeQd~qrFX#3=`v${ioJoM0RCuf1h3HZ~5)(9~`Ee9Py7|xVr6BtW^ux~V9#qamdglddZh8ShKAFb%19{{< zK5Yu6*X8o?J>ubd^i*Z0U{W1!r1YRp_i^YjuS9v|u*)d!R2LVOQvSxxMh1QB8~Te% zm%*=7Q#kg&l%fqz)xpOCo-aZpd@5)H_hk8b8c=mVg%6iOU?a5Ba6426YB~v^ZIK4j z?OJ}0M3G4|lZF3Xb^))_zE0EOIV$%SeV`~ft zeIoEqOR$)(?LI1oXtJ7C!vmO!;bXh`osi2xJKh20_mYf%1!1sD?9XsmQHl*>+;6cL zWf7B(rnf+~wxVAt?g^x5SCZ5_cNC&O(Xg$?S8W`n?c@z-6-U$e0EZkt6YUWSEG;!N z>-|DFserp;Q4teRb8EcS{7vNHHAK~X6yT#MQz-{r^-@#G>TQJYJgf~WCEqL?3XF^b z$J#fAjPoLqvCMN0?`^>DC7+50YB8=>aI@SM=J$fps9SHhpx>qehz3BV6Fb2C97w6H zgJ8q}+I(&T9O0eL_aV~^JAG!^=yR-Co!IQ>e0IR~Wk6I}K zC|K24_=g1JC)|kBqRfjOFnpOSBfQ;Dwfp$9)2Rz_!OLFz@>A;d{Bx|XI+bCh8*}Zs zSRHoXg#r1pJCMOY7DeMx6!~qn>oj(uM&mN}%TT3nB9FF8yRPUXbcCT0Jn8xqUQL8& zx~^T<|6^gOC-R@r+#1e>%Gvn~;@Mr?qrwu|`5SIfOJm;0SJ30dGP?~e*EpIQ6=284 z$5e`K%`PTl#5nrRr@54Olg;lz!>e)mB47$ zs&$QH$67y6Y3)i)wm#E^tB;YCy@xPbd)?Mtyjw4+y1I(r1)1G)5Yva&XCSPLcdu01 znr)HME~C5#y(yae^VDc_MH~79!%R6v=)EDg8lZLQ;(AlY$bq%)D6^9>`zmj`9kK=^ z6|2BTg`XlqBZ@QD9l`4FI+juJ3yi*s)i8SR&ITMEy(&&AJdDE8#C@#X#wX1nJP2*s zdfls&)J&~nbrKq}MA8}F4vW`TP@$Y$dZ*jnfmH2DtabB@+17PCFvXPH-E`clKah^I$BJsT+!VQ=A47?j zt3)P%$rgpZ_W<7pB{eXQO*Pa};>fdB_!TvSy|-%`S5Xo?z3Bx10o5v0)O7wGJYl}o zZS~Q3!RB-8U?JnnIjplYp``R$C`{(KClCs~2x9d;VfuXj6nzHwiq9VLc|?42@p)8y z?h~Jf@W~&64S@N}=hRk^{&JEo-;)8o-XmZ8=uY3PzN;~cQh4&qH=wIJCa2L z%(3-0WQAsQl`ML~;W%*6aiGx+L!fmza9uL&IMCF(49SMH);?>k9^8(4#jTESzKyYs z7xH|n;)N9)O|0W8$bUFoQyWB>{+(BUw@ux zDgMY2x;_SKy(lufQ;@@gRQ^af-ErU-p;@-0x=45b-iFb!hdAs07>|VZwt;A=jL?Qr zY|5Z}H=bFLN)izYEZ-McW(O8Fe(n#nm(a#)zS1z`d;T~I!51%98HJut?way&|W%( zPpph+TzMU@9rSW*g)qY{L17mH<5`GCTSzDz|95!(Eor6_QjGbhn3x7YYz0KO9}SSM z^euOMo5O}Xnx4eK*7~X)-~KatURrdGPY*buKa22htEg}Uw<5sOcrdp!NZN>6id20m zH+N|N1!V74fJone7LR)HIeZq0j&_79kl!h~4-p}ydnb|?gCwT{h|dvx7MTfMr6UH9lm34n5JpUWa6_kNP;CMx}OA$ z#v%6iK@)g=GQZW)bUSbp&(Bif)lCEn9Iwyp_xg$3P>>kMLWpdFmzS5JhIkjixXvJr zSZX9Ps%2(>vjFTAaFi)4N~*f=LPK~ZRdjR}cLa*@E}-If1Cu3tq`{6i6+J{e1Tw#$ zfACme0u#T7!=y_?@G%~D?2hs46cQIZWJl)!^#Z-Dp6LgtFm%&XB5d7t-T0V%8H z2J9;-cNR6CrUP!GNFK*JL&-F<0r;rKnsfvi@O^@aHmbh z(D#tO;wpQ(L`>Du>=asDqGdhUOvN+%_25=Km_yPKrWs?&5Y0#hL{N)Rg+vW_KvSNE z2Vs0@9A(dw#%t|4n|}+=l)zX`5Q;N&Cb}A9%61dBwzhFU4e^K6?BMA{fal@>(Ij|ys)FX=2l(m?9>ph=KIa#M$Pvlqaa1fO#VLR!Q*kDF~Q@Tu3v8rhS!d~cuG62T>Mp>Idc?jL!bPL^{Gj? zzanL~!JeQ8H)_K6UKD0%piZ#P;caT_&4TEVdR|T?hOj0$DV<8ifk{{gfT!=z_g2^N zKhA(=wif8mOSNFX(k>NkOidQjY#uQ;vOnZGpWjht5(YWwqO!h6jL`oB#Y$uEHWn2G zY78-GnfUCm6u2YPX0Jqkniftfepfx8FD%lrzQ_b&s^UXenyN_JY&wpc;s)$rB&=*n z+rJOQLgX9JhfEApECcTOF5VrhP9eK;=kYQuaJBts0BHoQL1WX$Y(LFHEJT$S<_u3KoEFMAYPZ*Hm{QPW>6->_1QDL6^Sie)9cRZhfXte1*=5uji>(S8ffqi?5eR zXI5_gw|)3}?%P6vnFsfita|7IvN}b3v>caKoz3o-(;wE2dWh&k^Z+@6z;pPND{vgX z?UT#ykXWK)RZRv?BC1SPoo|<+!gQiN8g5tlf?) zkqJxldb#*ArjTf3amVC3qsvgUu`^0BO}Ur(Q;>rf1bgX^pNjg z(ScFZwM&!Md={$sgLY};6C)Zj7NNte@3f<=t}SI2>NSk0Ej~0Rd`m0#Z0g#$Kbz)Q zHFfWVgE$b4yf(ftnl({o;R-lufRBSKh{#r@+xSy>L`aM8!#5qm#hGe9*=veW?1OY% zhcR(K)4G#(OL2xgx(~V+McS=m3soZZ9}$s^UC4)l%ku9-5(3^W(!JBVD0aV+rF_?P`aaq^`IFYaB0vI9%-QOo*@JJvc_8qgrvtaVz8 zudMk@E6qg66Q_s+WBl~QcN32Q!Hazwl1Rdo>k32Yx&GB_0r1?Gg&;g1b~dm z=7Je*1A<_8bPBF%4uUueOCb)@n*C4#Di7F@JDzge_+L;-svv}FA*i3q0Sc)i*pDFc zzsR%%;@v<>PzVYm#zs*eegM6DL<|kQsi@LcY=6r?7eg@Jt@Vvw^GE6*W_@cFvSK!~ zA4n2xCMg|azO?SZ+56MA`hF|gEWYe$S_MGtOa&2ull$0dG9y44(5Lu5_8&pX<}3a9 zbTr)yAb<8eXkR9b^P7J3b`Ae%1WjdP7ilk`#E$fVe@2n7dgaa^o+PtF+tNS3437ht z$BDh^Y9Iemv|hj-H9PrO>-qR!5l(T7o#?Olcn=aGt0xcm*rEJ)8s{jVbP0FmXZ;U9{8kfgq3>>-wscQBUs9lsNscVgSFhOeVQK)XFsUrm4A zPeN3&U8tVo^MNw$iV>KOgAexd=B+6<;96OfQy#FnOKDlMhGWm08o=aEW!~nx%X~CN zNuwDs$1j8X*rd4Q3|Vf7J{|0n=mS|u5X&U?apv&>b+n%(&Tj=ysS9K9L^0~B!W8DojKEkG)tz0b z&)Rs!@q8G&`#A3rJFhcfp7X!>b680V--{i?CzHXfDIWwV5#L9!nSPVUb-M9VlIs33 zMT`SQ2#nUSsrfiyvvFdL*T;8%g}PYmM?rb8;p0HPrtp&vt?RD{7Dv)V2={GcDJp6! zt%$wS4@a2oP&0@d;@7OO$Dq_k?(*^V5Sr*Q3Nw#GpjvUG*-RgQ01bJ0Nd@4<1|G%X zXfniAd$P+9;NT9f3E?=_hBJuI;~m{NR#FxK3xKxF?pAde@isd7Tw>%JPBKhmmhe}29lZQ z3_mgkh7!d8o`y|ZgWbQEIQu$sUA;xBjpUR;Ek$l8^Y|TDky>5tr{{mCF#+X@qQ+2G zfR=xQFcQE?0w&x?2$FE0BHUSoJ4|t416yX#gwcOlyc%1T<{0S3UM+RR1JJ4sb^#Fh zSjRhx_$bl(hJGJ^svK>dqJwP+C1cm)15C^y1-nob@4||CFj4<~qe;{ZNtE5+N3`h3 z)>fRA^aOj+7|cL6e+wj-)c7Se-MfgpI&6vK6gj5R5!z+9dJ+#Q^x$9{GDGE8N-+^_ zdORiaCX(8xR|L&Vp}}I(_VFy?s{9j3udUs@(tiFR=7qWT-ZpDsxOUhYD#Mn=(#Rz2 zp@N3o8omg9MOMjfq&y1?qg9?YA~$WGYq!Dgi45C(SV4SE$33u(+1P`?W+D`QFxP*= zmW=3%IYdR<-hzX00(X#N`WiCpfjdpCd?TsF9UIbE$4)B2Ynb?WYPxnOsV#tR!mE|A zjfOHlY(POu!;OpT+g!)rAiR+jp>(=ENo&oeb7hxyA;7-=_YGI-0pSKj4LjJ{m%^+; zikh>}wNJ;jewxaxX{6saM6j@uSCjO+QGLedOWRRl{kuys-rD#Z5L{y^c{fZ(*AN*{sFLT3aEsWzNdjO1%*jypuVLGt09mZ`IQN^?*s3ABnZe263R5X~qd6}I8 zx%sVNR3Q4t$!M+)jyKiaj^?6uag`M)FJ*2RW!4cyF25R_zX;94bYjDimLK7EmU5#7kMmIWIJ&$ZHKa*k_OQ+LP%Wc=qCsHRm2VY)`JV)fcy}O`&3##X2kk z2#1^q$#u;Rpob=0A2X4s#4*d^n;yWDwyhzlHorA69{)D{<5``__rY-||M3*oU70is zE`Zh^AQE@bM`WS##1gz|ypGIKXtj-{Mygnw#vOrsG@cr`xgu~Kx8vBaIdFdpnMB?= zKs4>3kI3i)#OMzCh@>ANR(H?`rb;xUpnE8Chf}I}U*v`^93lJ=xka8XH4S3@Pb|5M zU^3IZ{GVOu1A3iMzjoP%9kk2C$p%=}F>Ky4z4C-!z6|;5R5ow9UU{^$eEC+Op`3{< zqYL8HE6=cuvv^1r$)d_L8*X5gXCP2kvqYaY(q?$hM1IYmgf&Ir(>#@cZWcJk8BZ*) zHWqf(Ms9#G89aCF=tDCUo_`OhY7=Dx$%5Y*|8~nTAfa2Fz$g4UPJnd-01~_hq(TdLhB8u>4 zF^cJa4vN{7GswkTOZ`t%!A?Sg>tIMXiuCSSdbvpNjiz^o@dTB3`sYZDsIzk)@^;V% z-WVYlHN~xg@}dla4NL%lpdVVf(lrp;9%t{p^6v4;ol03wu+r}Gl$sO}D;ib`;ro=R+ndQKD?Qv^ShC(b6R z@Uq}yp^&_Un8$e+F3+025ImgET&Lm7jpobo9=V3m^*9i0!xQW1-VJ%x6xG?D7|knU zW#|4R%KiyuuERxj&XxKIEV`!`Rob2y#&0ID@sX3XE8coVyEOiZx7fP?3XEu&RO>no z*qNcZNf%GCORnP=5y$v^*yAbM!J0_2cCcV2?kuz>%>?Nw#dWqdAGyNxm5HD`{{`A? z7+;Hf%%64t14i0P+!OD{aZSrgc0H=C)YFi}zE<(2HNSU-@g~REF$`@(CcH?SnvUZ; zsaRyCM^fmhF9kV3BfkVEz_cyVjo=!D*qrdioJFc#y-s3l!sW~mXzYoHljf-x(D9!lWTTGGKj?TpeWh-9Y6p{6 zV!?mMJoS%}Jk%YNf7J21J!z#5TP8|U=LM1s@WQv9 zdu37gVj+-J{t~E(3h6=Q$#ua(oXy4#x8&+LxLTON)$ur24^eHw)o_z5v@O_4iX26Z z3cuB7rcSVfL_;?FbN*-41-f+v`fVlp?RH{kJo_yF&tN9?i2Q$kBGfDgu zE{#W-X^1i7v8}}WnS_K8M)uf_^;MX?M-FsNyqB{0KM?}KPchv;$E&XZ8D}FEz4qZs z4L_NbioP)WDF2w`C*9;H8T`1y==6i6gq}D_k)O!u)Zj+P#~ST87i-i*?n(-&#mDSJ z>Sz4$6#Nm{&#@*>P!qpFEtBiWKG}bjw&3A)H))rWHezB<6Ko;oA}Z*WP<+$ z^~@OtFVP@JH9lePY=^DD^1$vdq`7Y*1*_<)&3 zZ;mXY`2oM>aX*}|JKw|nW;|}?x6(tRTSt3cdEl{pig|vy^5l zVkVu+5g2eb48N(?;kGH_XMv`Zo0qcp1PaV42p2c#R{d__A1o4JgcMVW7%DOf zM1V8#0HsiBcB%MEU@ZR;27y3o2U5HN*oU-uofe3pn;Y^FCm|CS($r7<)*xkZKcJ(B zIQM)2f(A4LMg~*E$;>7K(ODg_jfm|%3gOYzMlm}I;q_y7Ltw=5)Mj)8yOMu7gjWjo zS=Xr5eA;y6;M$zEw)oWAioLW0jE5xFmfTj{wg%Ie+RvZCZn}tAjt4u~yJ-!&0lBM#v%>A?XOb@X^1=Fv9Sl-lu@ywbqok0T4kwgdL>L5bWy^ z+r?93!dRI{O%q}))ZaA?w%P+6oe|p5b^ayY(+7`cDI7Mecmnob#TH2G^juKf-^a<< z3lKn$A?NO_XTj!Sydr{Pu*5){k@Ymb#F<{4>THMaj63$oVLjkzj4|Z|MzHi7iD?sH zD*<%Wx9y-)ptQCbjV;|XF-XLLGsOAO9fXg{=@)pLQAx`XEp*!^P<+$BjwHn46Z>s& z7x6xL!mHXk%a(YN)>hgOdnng8X6hSPcWgNXb(q<)P1V9XlW@)nsx;?(IBFBYzHmZ=}fREbPID^qTnYLTf~GPPc&DrD+W znOagx-9(MlQ3k}djHDzcf{lLoDK~zKgd4 zir!w19*oFmif=}bJU@Uqk)qyi>NT4}iZ5K?QPEBl>WXs;y2n{Tsq;a|q-5AsL zVc03e590w9O`A1|s!jLjhVc$;%)zX*!32sm#ViQ121|xQ`rdhzhS7)qi6S9J--rG@ zkr0QiKh#PI0xJ({VJ8i`z-X#uTb97d&LH39m`4A@NCKr6JfUi4|?|qqm6V z{a0Bjtv~(0-G<-S6WENC#?hTo8!{_8dcH|IAV*KZz|jM6DBu_xIdn^8;K)HN8kZ0s zMn3HCQfWkeHLhOjpo_Sr&H8E~{@aUEx?DI-vv>{$JQLjj-za1{SV>5h{kY#@$|+u409sR za~Xjpbf~oktJRiac$Ze7vbWWy4u{CjL1dt!lwH(*H;#28oYnff)a1!BbVrqOp4rpi zqBP?N)wg5UDpW>q&{{2OIhttu0>6%~dHSs7hNr*y^7?PNPP6lbLWqswXM_zzJ<)b* z<6LWFJOqRFcI`b(h00Hl_sT`+T~=&R&v%1(dR~101d(N&|zXfvo}Sk zlJ;-!l^ua@xH+^MuioodaPJ52kRj^Qv<`O)byH~Wh2leNeq;O{f4B`!&FwJvoz~3; z#VXgou@vr4sj~+b2=^I&jZJu%IJ)vugD&aCNl<9xcObWt(txGh$LC>hp*9pqwX~$- z9XG#ku$I?w2HQx3LNA?#SSY0Nw!}~!aryX7sL(jIv^KQJ5*XiLspjw%$$=)~r}?m5 z_vjSiJ!85l2UW@E8>cGjAw!UWA65prw-Pl9sP0U$f=rriaNB$_=r*QMgZya$MUUc| z`Pt~k;h#T>1|6%g?yGi%eR>)$sVua2S_nyz$A(v#;EuJ&X4OYw7&J~DuhO28r~kjk z;{|$U$cmI0X~E+GTT5zl681yvEjKw{Yx9=zafJ{AI2dK5(attbbywP3QVoy2*;0lE z&|K4L#Q!$*E9#FMFXskQ8ZQr1{{@(=9WxAZ9R_UT2rbBHNiE3@SWAYfsb!J#b0fbM z1xHap^Bf37{FexH8Wz{-nXbc;q_XLaQ*Dr3cvs-;cT4RXMXqK_ZF4_&gb*xxA~6sx$(khyanL`y)P4IF#?5NZUH%1V)P^R z6(5$IeOLip02GA^X%_3}|Mn(9sQtL4xQyC_b`CS2;|rd>N7i7+n?7o;dCCK$1_osB z34)@JA)#WglRDz>!4Z<>28JnSj9K{k<5hSyA^!8bqHl@4+tcrQ%d4-z`xLOI={G$* zu!b9X^0!_Pcb;0-jlRXXuAFnV=ATa5P=;~n(p zw98ilOL6clWW|p+Z^7Hkwjj*WLpM(PFhDZdNj@3TYBY-XNv?BmDyPZl6k1i^ZQOuU zad|X5B$9A$pCrL2NVt!mp|l4-;x2v$hn8~qiyTJ0VRO+}*M6-_y+bQ~dNqtxAlFad zyc!oo@fu1D2?usV8Z3CB6XlCHirSIGPuxw@wY_MOJ#d|03gvxvh<_-vS!Ex73VtwE zzCl!#395SNN2pKo2Gsl+O*2K+c1P1ZJeX+T=9^K}eFJi2+<l zi%;6;*v2@85}1-|h9AeAy9_}l?UKzAd=0q`d9`fg5^Z^r4F^~4n=cXm^?$&N;x{fY z{g$GH)nT1w%Qa+1HkP7HrZ-di(bDfk(@m7FFa5`8I!NicrJ-p0DN0W*{dP3Hh0=GH zem9zKq4Z6qdy-82sHj9nl{J~*2zvr?njV4RM}r8Y+2SUP=T5N93>ayP!wE3&Ze!> z$a}0Kz6A@<4jx%(R)MuK_pdYv7vi=wPRC^W57CXTYlhb-ZoF$Mm;HczD^sG3*at1%h5xIe9$6LsijY^WE>tEan!{9!{ z7IyKEafC+fhd)Y9$OX*avp56573}K8k8YVA0MAShPR8<1-(M&`3-C$Tg6UrKzawY{ zA&=v)d|+m@*<5N8YC5eUWi0g#y)6pA_>LgbZof=;Xgg-MzSSH{NO@S@FCc=mf>s< zap?*-UP>odDVT#4OHJ<7)?w!+tHnFHdEtfT%D-sK3ULCGf^v}u90yvxd=qYFllONY z3sIZ-Zzos6J#ZHva%_1Chyfd%g?u=-IW#`nar+#%c)n{z5X=ySM8?1qmOx(KR}hDJ z6foqzHl&0qFJN0R6e2`bxQanCF>4!HKpRM553&U{1%YwudQy@Bd%8d3s z(*edr(=0^VlH95XNq36&keD1>d$FF@_7nf`O5cHI#&FU-{5aAM&xMQui2p-WBqSEc z)?G*#LBekc?A;nLl~~~2CaE_&UU#_;YgZuYR;?{b6T~Fxdx$?hL@k?u^9_;5^*bTt zmBm7mj^J!+M<7iy=?vU~W5!-xl=CG6fO7;L#Gj-F=Bh}v=XmN8l(E}}ayFs`uYDny z<^_()Y=l0`QP}+_Xp`$Osb(Rm<_;tq_mj@x`Uw&02)<0CR%lvLC3NerfM9RCdh>-M zgn|_SDz0>{y{%=`%<1~`)M<^Mr{j$PLMnJ|qr0rx=`P!R#efQ}`GEDvD)~Jm?+JiL z9||Pb?#7waoPe_k(u+GBTZ<_VFRLL6wF+!^-x?!5$q}RuO(2>sv1u>SfB@~1 za#C5My`G4l>3Drq@<++f1_m&^=d=L;+1+f6Ko}SSoRPK`MFYeCUh<~j3p3z|hI;T@Kvkho1<>ZViVJLB*6Q{7yZ=g-NQ}%= zxb@lePv$5Ry$UuuyrHHkRQXz68?YzuA;98~HoYCeo4)&LwiK$3oFz;!D!W*YThY{~EWSTiVmm*mkxjSlY$e6p~$BK?=EWA;yh4T0)Q6C`yY!Kp6%M~kh zI}?QDi$SrN&Lp_rsprrAhd2c5^mCf#x8TT(IGJ-r9m7AymLux&c6^&}4ZuA1G|&c5 zV{#V}BuwsmO|a)8d zqMAS2N7EP95N9LT^OCl zb^HghB0d$5k&mMH!3*)aJ zVy*f{tG>~uZ?w05;vC)@+UR`cl~>-Ny#`1c!1?dKNflc%EwGmJ)Qh1lW05?7J2c3% zA#bkwf7yE*_^66|;s0!QlPn~#D@F|(B}!B@Qlmj7E@%)oL}f7$lMpqa6(U9y3cG+U zA&G}*mg6dIwU<7{sufyWy#BXaFomTFX*1dZ(T{mt1;g3x>W zx%YWK_x@i3vomLA&YXGq&2MIYZ_}+#vK+(fj%2XF_ivJlvG8NEp(=t)%DszBq_^cg zSp|FP&D_R@6^X*n%jfiRbY=Z#WNoRJh)l>KIiaUMC&IO%&9%YqX3(4nc-akLlpBg70%syi3%G}N=#_QPfa55qpcKP4K*n#mJcIQO7^3xtluI8DQ>;u#R~gi;hOm zv&!7WDbt%(w(8^Gl`d~<9?uiwi_Tfb|;w~=xB@oxje24)#UmdJkn zcyC~s0WBfl(VrOEBJU!g-XpdixTd|2;*~i7SQX6!!4*@)UQoyA3RXKk$GM%M*?f(G zWJCWfm7!tKB{${MSl5alOXVDrNqcZMo_9{QpkL`hA1^dLlZNQW4IeG9Ae+VckoA!;G)#L64Ujt%$eHi&nR*? zp-|xSl|xr-b*%sZG}nd#X3Ey^ZwU`5CWB%O-yw>*Z);94&=LCQA{nH>p-A@10vnU; z64!?7#4-q7*0Hj79Er|Jo^vV9Hrdm&_^?s!L>W@Z!0ikivj2LE6VXTRW;(PmY_w9h z)`=p3uPMG!RZ?(bDpCWX;3NvVtaSv$pkt|Q;m zw75%(UoI-AIdpnx;(4zgr?gt9GylfGF=L{`JdIZ4Cw(=%fXG)Hs2j7!_~xs1`bexB@uH|?LPGa;Fo^XsKt|wz zVx`As3AVTAj<@DXk-7K%!vM}t6%|p!o$4Ql_;~5`_@0;ff-WD$XQcx zqT@O31I`!|ozFRxpZc5=UtL$p#Y5HZN@L1I1piXKN9l(Ah^bP>3(~G0vT{m#MngkR zt0aW21i`@7Agpx3Fbxf3+a&GNsG7BXllycvoBJyMCS6$`JXdBo(wp%$R#wDF4wY?} z(`0kxLgD;n)_r3&x7d6{-ZFoIuA;SyMI8E^4i4HK=7TJ{eXNdQRo|MWj9qzaq7a^` z6)S_aP>Yz0^i&yu2#eQvWIc&2({{M4#v_{sK8Sc^UrJ;DLueKjZJq2KwYnemjG>RA zkLrz9`Ywjk$ea$Vr*fSY9RZ!LMK70CS&~HRxN0ot+Qek zqcRBLJp2ar%H3ZEL4N-Dy?>;sbB%|k$B3Ajmmavycv!lOr?YrEy~zCZc_!TkdCRQ3 zgdr?99+o!uXZS;ZhVD_4A-X}zGykza{#OL$#YXGJNtB##JiLXc(K3~b%sMg{4{s;@ zb}c{It?-#tRD0~{PE}YVPi6^0=o7}n(*NVf%4nUFw_55X)%`XLY`Z~{%*)7FULIQB zH?}p_*q&x2Q~MMufmB7ZWXhY>i>al_j{fM*-w>_0s-bQzH9wZe6UG?cG`2F7b>cCl zMvkZ3KdKD!O_fY_*1&U0&Cdwx*J$IK!-z=mqm)tMHRd6j_Du;0+O(DQ3k~C?I;3h;ZmF^GeNf229XR zpGu9IgKv?03Ol`WkhI$Ew)SnRfV`zd{ig#o;HHRh~?+bm~7wV0LVypF|MmWIfn*XH;pn)hs^UyadjwC2jggQJ`swz{5$G4aRLR^XTo& zn~~-GoySH2=cbOUQ}eX*74wCce#R z5#PQuGMTU#KEE|9Rr2f%@7%xh@Xoy{TLVYCzcM<>g>@}b+})qrcPR_`LYIfU ziw8~3CgB|Hvght6nx$QDyP19ZxWB&4{Imtm4LSb0o=|YC5>ANb z=&k8-i3xuyimqA9c0=1_0_#~SBkN@33nN-=oGU^GrEkg0s6m3hPS=-16(3R--CbsC z&oRIkfl6AOb;sLT7M2}QIcFJ3tb2nbXMhEDcYpe)Gh@cM0omx7KS;50)g+yWU>3QkfGRru0NP~*12AeYomLtlVcU~Y{^#wa+OL8P|R+)MEuXxp**!NPf;!q?d zcwGdswlqnK?@!o5vD-Lgrcl>rO1*>`5j%Czu+os#GVr)8E+Zw8V~w-wG&6+>Tpqo; zPx}iQ!3Jq`^+9m?Kf^&V@|V(eXDXT0_6W58`~k)(&3W6%_A~M}n=4f2Wn@OXKMeYb zQr7cQ))k~jueuWe>r)K=Tjf=gbNk%nR}uTNq-NzUYlB2Po}0~6Y|5$m4SLw*yA7n4 z2f0@%7f%>xZ>k$xLi$%i4$D1q!IBb__CRIPLo|0xXQ1y@l*M)haq*dRgUF9iQ7qi!I*u zvy6#Wq#wa-dzo5>uJHE2uKaT0UUNL>s4{DIR-4`T|W{ObzKv5&t+F zDFCN=@B-Ney$S_S7L7onJ`|!%G%2Pk}TL!99kt8X9P&Z&`iy{=5!S=h7=14am+cvkfNXUzyB~x>HQ0* zAp210c{xedACTWS56SOSZ>ZlM_1ms~kE-9j>UWd+-NUbW0VIXIr{vYZrRF=Y$M^H* z0|duD^)m5dOL0AZ+?L|kNYk=1?s9EB6BCC|iS_E>Q%BUV7&i|-*}-q6XSZv`Msijq z+;0C0>r2F8b4<+UyB>X-cnlp@>OErWaN~bq>ToUZh^a#{kBF(m!d8s~k{*)w&}cDw zjonD~s~TFbnpoeXVx)=Tzkn?G%6E(%W^;dmGHSJhWIZJLo#D-WVMlmFU)UD@9pO5a zrxpMW|ANOsPsuCcRRk+_W$dukVfDUI(;IwK>cV*9$2J2hdZ5C<9lxOm+3uov8m95 z#Y4RZi--S8lGP}YUJJMIQ>kA!FL0Lqt5~!fnur>+@NY@9I>{Y=sxO=w{xM;!Ea^R0 z2S!xt%M--xVT&X7I(-#;y-Hr`$+hx`;Y0GQlm3g=Fnrc0P|Y9@mJi3P0HzPer~tMP zvsD1&hZm>-)(?lP0CxDqlApd#V1!N;FrFTIMS!ifehHKH2f8h-3lmksIaTPjYzAcOl9t&KP`|Pi#MKq?ozz1!UXcehH6Kf(IUs_N&d`Mj(>{1F8!bBD*NKb@j(1{9NrUF6VFk+?tru2WG zWyE-nlPn`jp>lr1GNLr8Ec`9QYIT$hUNH0qu`$btcY;!6I$)s2vW&Qa7co>xj*H2A z!pMU}fttI?S(P&bDBeycLuJ()r}4alXUrP%8@`TAanp#Cq-dsmlbA+StGZZ0#5Ce$ zWg2mEub4)hJkT^^U#3%;MvS*EHYGSB_nSsky(gv-C7^%;(}?my+%%%Z#{nd68c`}7 zdgUAX$WZS^)rx$AbwqMl))CvkpekImu znabAeY(Y50@}4UM$vL*7x6>m%>$}ss%sUTfDmQgn?EG4RVa25 zudqUn?-ZO9FZjHZ3fAA;BW(;U(BD+6!t#3z1>=UQ^9fivj*i#xLRrzx<_jF%z{J?^ zBZB*|voKdm$ZCxBMe`pqacEbwOm?&DBNtMilP{e2wvVdliXWb@O1qCejM zo1FC|hj7++6r0~rSRZFS2?D_t#pZH}D~g^m3JLTmFW|h3M+YB{ajAE=&xZQim1$DbH+OqCh7};)0J%;W#wi@ zumE#6j>r(>df{td7o3^SjRe?rNjOdD3$yZXkJ)IlD2yW6f3eUQ#i$eI`iEl?=@k~V z%GBs*RIoB#gLopkl;v?dFpAh-kovstKks>`|Lo{ur@7|G>Wyw-1BHlSlGLQY!3&J6 zb1@@(!!An(GOv>3U#B(J}X$=;TbP>bE|!FqcNJcY?R7I4$ESUP<~Vlww%l}s7ASZ3TCXI9C`M;ln@)W5OYf-Xqjk*bHXi? zwj)glYlG|GcG_D!#}_+2J+6nIq2KF{)dGGCGvbu6)5}WrKfCl#T^_D)3nYfeQMv9` zwlS=$P`sdfAv(P9lCRc9vz{z^2g9MQuSudFb}Zz62)n(Fv)Sxz&@r+?cappc{}7L> z{QNwF+kzXp6Ah1K*pm&DZ7T~BD7Im8g5F}+TUFuP`wB;Xyf3fHWrLZB-3h6}ulsVX zvhwIHHmM*4J5n3^QYm9H6&ZuO43~w=z@_0*aSog@>9Iq>Nsk}GH}OsUBlt(~JMla5 zkK!N2@4@fE@5S#8IYKmD<2JpXcyC0d(Q|QrT!WO29>%P#&8wuv1H)G9V=>h6gdU+g z;(0^Zc z{AA&#;8qscNA7HxY}Y?iz4y85y?+@{wA3w@r+=(IOVB@8qtGxQ=c)nuXaOyZjoD{* z{c{;v*F&W&2Ls-q>}ROM^SJf6O}Iu}8?GJq368$bpszFV)A7^s)9};q-T0E8iVrdQ zF(ZLr#9~pbxC|tacsW&|^U@X)#tsO89Rvs(vgt3bg)L31HaeYGF z*bm_E3UBJZ5Hm1FHA0*plOO}kf6Rq(YB4ZU3Bka~MQjo*=V(ZX9K_N`=SpWoYEnLz zIbyNmD|R-gq2Xg*DQ{VJSt2b$jH_sd$Oeg5y0iqb)(` z(zAmX3b>Lr2g)9~FUuWnpvHFmIJ~f1v&QIOANM;vUoQS$Xw2f!9lv)QDQG=iCqpIGS7%*L~psI zw5-^`>`dC>YAtTgi#*=AD_6#x4c4dk<$;4jAHvt|=ym4*}u0T~ToA&5uM$OJdX z$5>2w6l&8~m)A=Cc_%s^WKw5#JCOHMCEry*9dN1suXyic!#qfX?|?QmaiO;;WX@)lPxAV_rf}1ABt_`I@>E z?7&K*ScQFMksMV6v9!_OkPN=AZZC~rU7F8&ZhanUqT?Nl-zhaulV|fE;ikqbA{}q8 zA)^0Y)hWVk<*a(pTyaAD7%Lv$z&5Lgg$?BtHq@_IbLiW^bw$3TD@)Q=+-f^FaGo;d zI_w0-)JU&emUZSCl5qK_tc0gkCx=Sx-%3 zOAtB3{3%95tc{cT3xYvW=Twju#}Oh)m~PgPre|vA?7r*@t_Fw{o^9S9%ah-i$NXd+ zTfl!+niDa(Lb-&dgE~9e=l#)eVCos(%_!N6Y`}nkEcc?btF(9f6?bE%&fw|HbOx@1 zXR_l{88A38JP$ufXBLgWibJT)#`hUHz#Dcx{pYH(J_SkeDoE1d#QW(jp@ zM&q~I$wyWp3fs?^Iaxk3G|49KKEu0lLc2b`Xot;x94*Dm*|a??4Mp`abt17Jze(^Q3}0uT>{pz%44wK6v5Ms$d!C4n36s_`^MoEe3|^%=(`lafGdfN2 zjsxdenUY)^hGJG}plBJO7kNiieOw!oip&>a@hF;EwFsm&2nkC+W?OzC;_AyXb9Z6O z%k|{u>A>W)(yBp<)tg2O>l?`}My1>y^~%D`u`_KjUTWoi#Wt=4eq-F%@NI<6v1vwg?~ZORkjnq=BmGzOp(_V7|Ik81~6I8e^pp7&RSAzooU>` z?a0P>cz65AHe<_$S|?=pwuOU@rt&Ay-g9I%kCr`jJs0@Jr||%uL`k|e(RME%0ps1+ zcH`J|?DTrx33TaOqsHd!rb5r=YFmELn;xv_$*af;q|nhQn{m69H_Nz6I!D?vsu;I5l%FP&UzJbR``oCudNU;EQ2VW;3c`i!Q%m zK;^HN%6pnH{q{bRlSVHVf9JL)OU)tLMb0iVOY6T|dFX5jm{0x2e?3ZHe4M#1 z@`B>xyo$_#qqsPdgwPh%kZg2pmL+gN3(Cyvx+#_S%&Q0>s8Al7a|o2h@izC5=2G1{ z+p>Zxp#g=hdpPh$1EZJ%Qc|qk^gelmBJAofTExvV;~e{^g}_W zKtY;<0u1NIp&&z`01%K9WzF(&bx{DcX33a=W51e%>37HetQ9A9AC?RKuZ0}f7sKmom0Y&yH*opq$Ivu=Lq6rJ@Br!~4sbr#(} zu$v-k?q!^+o8Zi z@(az!l|RLNMEU4wDgRb;iSlQd^Ob*xd5`k%G-oM)wpph9x#lg(pJz^1{sQxQ<@?QR zl)u!xT=~n)i}9rj8)}&}=5UGKutI`ERj@&Vb`^Y7f;}Q2v|*J5|Du9VNbsNvu9o1R zRB(+1x2xbY5^PezwG!N*g3n9v1r=1HbI+(?qr^U`f?FiGQU%*2SfheWR?YMiR8?-5 zr%II|GI{3hD!5mIMJjkef?gHukl?i{cu0bmtDq^tEEPN=!Qm>Xq~nIFV5h{|Rq&_; zdupZqJrewj3JROuJg9;~(>DL4f^uQGxm^WCwAXARsH!Z481wfkL4-8T=T$IGf={WS zNE(?xQNaueKB9t|5?rQ&SrYt#3XYOsr3zjq!P`|ZM}kEvI7WhA6;$`bUaNxRB=&L@ z%$H!63Qm&Xa1|_+;8239%2VV?Qwc>9{A-PL!L1TJtb#Kn_>l_UA;CQ=c&7xn66Dwt z-#%N@&R=dMc@mXuC5O0QlLgyQT-ta*q%Dbg!iqu3wIdeukQI~TNp!MDkvt1j%;GVg zt5Q`A_f<&Di63&UILzo^wA_<;C|1%~t0cE4(Tv4hWW}U;5|6}U(yW+tPhw{*Cc%oy z@FX6M#dI!Lwa)Y;_QYa7v|_S6iM_Fy?N-cKPog_k>({K9ah}AqSj_WQOui>EJr?sb zD`t`>F(VeU!ip*MBxc597OI%VQ#@B?shCppPKlxQT#@pVUlMGtbba19jXgNm8gjg; z!NTRinkF;Ze@#sIu+mjy!%c9@Pp16j$WOlf6v@w>^0OcmtfdPJ1MM8Gufec1+A^+) z9jXGUw$P34LiQa8UH%MXbMF48!wG(8aCqoO$4yv@=&<{f8ir3O419h2jAmnR_kO+E zosH<#bYnLpF4AlhZVG(e6p?o*$#HX_=eBT3l;ii{=owDdf#*bUEH1<>_7p?{!)KcN zIC()G4NbI-ml?Ojg#{p^R*(e3bu%J?V1=`(+UXSC0Jc8LdJUIDi(a;{UWcvpI;#>I zygdyS$6CB!i;?Qwtqm1DE#70=1WICAT9C#*Qf_OWCW`5lgE?EX{+K{=CVlB1>pd#_ z!%mUYV2Mm~ZS?kz^rqHUA5{{4ojSS|{n`ayw?3t6pxIC^e@E@%8oi z6`9{FHS;Ax>@r+XYK|ey>7q1td@{3m=0H*|H?by{M=&|KGCwP;W?X`6h2XJL({8;S z^;1yyw*G=5ga;P1pXXB*gc*aURY9*=FROxH8c@)$zEjXoPAUk46}A2fcD`uYRwar^ zQjz%%I@OBD?6*!9kqWu>xpR3=bgEds~Da`K2|>IIJDONSUkc@V3)NePi5jDQ%fywU-gS6v^ZbQjL~Vc&j1 z5KkG3{T$2F%&DA)V&trWi?f|)u$2{)CQKEE`RpP4e#lX15YRZ~V(%`BqkSLXBcKoLKS@8oCs z0ut^au4X=QHA{%AsaX(G8-I;QnZdI{D3H}SZsfK%E`zoE2MJ-eVDgQD?irXHZGMfjkCxq@y=|JYIiBIn zhO<71=8P37U0Uy6!rEH*hF>nB!Tw5V4l zqTD}s)5p+oIkx={>RN?tJpYZe@^|TNS3*lmGYWg5w{2RY=xuJJXw-D0C~LZzM&%Kx zJBi#TM8rv1?vf$|`5O61%>GP_c32cboYk@{L#|OmI~1y6)PJqMEbFqUKgr|Ix@_@i zsD?)B?}JmaQiW`|?Dx}nMW3;vZOO!ZM*ooiedQTZRZuEC3{}t< zp#s6@@hhie*LpYo0isghwcf+ckx#_wO>)+%WfZtsNH-QL;na4|Mlx5O^@UeQdkqUPHhnQC3`9Ujk2!9>m9f4TP=#WE?TnbSZ@ zeYbm$mhV=8debB4iWQ08B1j#^H!7;4*G%pEZXUOMr}TAOB-v=bQ0Pki*L*9aTxw20 zsZ3${qGy$@zvEbp@2Xuv3vGcE{dhtkqbq+Bm!`9|Ig_kaHt_Qhc?T;kLc+C4I0j#I z7Q2UDAk8|umzot38hw&Amhu)IBu5#Flm+Wk+*u_!}u^!0bRCS-1nJ4y3fnYz_?K+0p$mGW^BeAIH=PPzkVG3I!kAci&D@ zjPR6>K`>EdFwNNysm^#yc3hqh7v0M30Q##h$`~zAlbx1W!Yh_DJMmmJHN>ckZ^&Sq zvs}82Iyt+!HaOD5LbHi&maI*b(HxcoBfBqslU3#wr`*Iny@R$5+{E=ZRD9dwJ2jgp$$qZ4#rtjFe$Ejp>8Y|$pC;tYQnq(eVe=7TOmE2&3e4g1U-)-yq_?Ow1YT!<WJyB8r`NU;Y9`cj zZ3hzp9f_T}Td(c#4}!%XjV?^+-e)x3E}YNp(F?PH_)Qn~Xzu4kOQ|)nmfv$e*9fg3 z^zLU8Y9QoPagP%E0ddc*BG8&B_uxL&Em>9*3aQK@wDtL4Bu;L={ShHcR^Ehy%Pny5 z`xDLkF#fpzV4Rp-j5QxDX@PKN8|N|#Sj35~XwV-kQjPn2jk|lJ9k*|V0W_oh5l2?E zLqXXzD?F9P}mxRH)HT^ISej;gB%7cnSm-oZy&kj8~ti=nZ;i z2i50Tt)*y1NfW{NUTUJ28Enn<(axl}-54SQ^FwBm1s;1$vc`*?dTFn4@uxa-cbFZ3 z1h#&ni_=hAx9GWx)yCjw*30p8rha5>ab2}@B(owgY|}%B;doL%8zgLXlaW4WFBabp zyhOZO=|jG~xlQWok91}=ZNie9;mzO<4CtB|Z`0=-Wu350W(DUQ4c^}~`&nrxH~xjZ zd#&zl^|tXfCJUt1?QpGv-gfi*zov(3YgNuYA@6oM_(XG}C41OD&uK&c1YM)E`i8}* z*c-IRdM$!M##q6Iw=I5ZnTDA;IvkcFH%jbzK)TwtKT&BYjv3ls$RPjh9F%|guXOOLq3Mf+u)&zw!f?})<0QF=1NbR&oYUSIyAh! z0yuYP824pHJNR0E_1I0pdztJumI%NZA4am-Ey2h5dVJhpL+`OReTj7nrA(s0&3r-f1)LuB zJ_g5rA*_kA(5BHXpz%3kPTeUTD5Br7n}=a{f= z%v`w}KuiJ(oE@dH`CMYRmdO>w(jL<^23jWQ&;l*Ur($-+{9oxbrww!*o4`#2w_Dre zax9~*siq(5`5+_fOV?$NEG)Xlw7pK#k2v;?%bHQCchsPLP~+dNGH2?CI`=j1yEQBQ zqh(p{k1)CjR~&(ZEEqQaaUX{3cRhICzKkp*HLLCmx}dhMiK$CcIz7AQWGpElPw zmIuC2iKmgso@8mjjyR0skqVX4;Ha{4P{YuIl|vhnRyM61TCiek;H#Nqef@S3PX6Yl z@=dRErPBy>B5ZJm@iSG_u$9BE-R4iuU+JWbzpiwOAi~v=l-gr+{He9ayz!LJjrPLY zu{r*)jmNAS6t7IbcKGc9Tj9#V`8PDk%Uwd?p4rE-iq&A>XMFTP`bQmITPFPQJ9i{b znFFMWHu~kw*traB~`^v%@17!G$um|8> zb2F;>ApEzjo_&D}%%4IMu!K6UArzzR$1PIGWaZMH#ryJnsmr-BF;#YSdgGuxuUzCa zLtecg(p)yym+n8$C`p42=1X-w-G~*hYe$RrZjb#PqshElRvRvsyMDCsRUoOwK036> zCg@`M87rrP={g&R8ntRDw3S*xLsD+zST9OojdpLUy_0SQ3t`PKl9>IWy}~*7QS4u$ zK6={+(nYCY06&)nVa3gFZ%OhRlT&4AFGsPu@WG_+y)6Z{(Wp%{;DWtsnua zUC&^79;}}2#%8U+(UsW94#YOgpT;%j0aukhG{IIh&Af^ce zC$=POk+Wscy?exZJ=gKH0t0UIFslS7*gkpCNpt(iIs!WV93O$K^As?q_rXyXcO?iM z9RT%3VfN&TaibjOviTE^?s?T|)%IX@8tXomBuAQKXqW|FTx|t-nL^M*Vo(`837^CJ zm?d1i7gVY@rnDr%f^-8}$H@z1waJo%5#OVXCo%-#wAZ4j!W56(#${C7T=kgZ!)aQQwTvFx^q1rq3r;U|&UuJw!#I9ifM z7wFaLdP*sA7$u}aO05z&#YvTH>NFGxOy<@naxk2`9c7Bo0p^6gsK zL&}BJrZ#tLN*k7(DbT1$r;hRBy7!;6pW-RixW%D=(oy%ZrghdZkj)q8?n-G2WVI9| z`!BYB@F>Acf`eAY(_AKQwKr( z>o0`GX^GRb*`=%~1WS&xA>`aZ6VkNhQ_!#&S<+)9yWaLeay?piP(Ew^kWE=7_G4Td z8}**N#R+!I^Y-ZX_c}yh{HW{2Hb+y~Q4sZ|Rmx6?5#k%wFR6!R(@tIF#j402=i)1% z6RdRB9;@_YGqM1Lpyd=sK124%pC-|Hf#lleYa7xdgN`>fU|!{TKD%RT3QsewDyP)^ zh&72>$u&pdquQ}rAOT~XjK)8YiTCmXDk+*H=F3cl-2E2{(2U%j?LAUle$LLNt{RLk zEF1)C$Yxw4Llll^;l8occXz*U9A|VqyO(9XD)$GFvuWY*;%U>1%pf?|k<*Y=5G?6L zAaysu&0Sv0&Z|iTzbrh9{nl)9-5twCrh);vMo6x~3%MJlYB0IRpO7n9(J2K}4UTXF zrbligB4YiEANy}Q00o344r3o!e5yIpFWOPev35?9)*SN_IssjALEEdqqbyE~|5Phi zO`pNl;bOxaY%DmorLxtLo}-q;$iN0aoF}{i<2x10- zPg8j+;&~k80iX9{a|WWu!7KIA2QTXWNWRat+tsPdz!0gTvfFH)4HKZODhKv78<3Nc zZU1)hyZBZ1tKim|r6=OnLPUS#xOGz@>Jgi4^1smv3IHSZ*w&IH+RCxCK zhghiAXjaG;+%0I<@a?tl7=UQ)twm-n1W9R948Ov7PgnSr1L?cwRMrL(`z+QS{(c{3 zJ*fep$g-+4XO*4UfJe@-8qkHPeK#yZEPVVD&u9%lDQHfK(0xi%_U1Nn&xx!JjiGTl zP@q^aF#Vq0MrA9Rdmd{T$hp+^C#Q;@l`un|Sp~>w;XQ97jP+xQ*rXzsrv!xP#7 z3zpKFF~6dL)ou=Sbv2G!5^JylxCk7K&2?;RnLc@|R^AfQt0$1=|2~Jn<%ympj%A7F zt9-_2F>Y}hW12AP#jZe(wED6p2UrIqS##|?7n2_KH#y7(B!;9E*`ORTvnd!+yE&#r zSyeCs9byse=W!uEaJl+qqFKa;D9_yXtVN>3yo~uTP*M7uw^nE>s(HmC`_w6mYMj|;eL1BvGc`u)*ZV5KX8`5G(+Recn>e?l{=xOk>(9=#kY+R zHw>GcgY7N)gAQ#O3>R>Ie_@~s>|lOAEcn2Pm{b)a6d=?ibMLG?HZbZK`++HK%-lV%ns2) zfkM02{79x-Z39IFy?e}^>giGS)NVHO6kIQ9<|aw-xq}UoCKY0i1citLjY_7z2uGEf z-|M83ThgErNtVcb>@Jue(+z4k0u-S?Bg2iIv@|MLx7<<7gMj}n0{+1COn1ymn5Q6h zQ985`9hMS1Bs-HJTa&g;uYdVl~Cn65gbf z-e{J)>wjbQ2-d!Xld1P!^D^lM^8j6Ea5Zm(YUvL3)NZx3?m7k4H|WcO>TyOv+IR)j zL&qzaP9Cp7I!mwKu8CkW+EVHCu=x^TDdb-0MVQ;ZkPawU_nVKEvAOD(0RFCE31l?4 z&_=eoR)`?V*lA8~0w4hO%CilPBxyn|W`ZP&#sNo59jJVyavMAskQAeQG=YtKbV<7T zXPRs6nZM*6j&1MtMSM(zF*%*vczg;K!u+Mz82O~|JCei^0*c#$^c5rgh33#{ z=dr$spA!*X63bj_)}c4XHbSpSbGYgsl7hsV%rfK=%OY#?%F+X4&FQgs{dZ9z84!hk zZ>12)WqsA0r7BZYYUWr4M)J(F<5@4^y&>_33~47@W@YZ%)s>7m_Y9^vAb2Q}Xs&y$ z4-GKhk)gn*g18C9bDgpCDaIe$bYrp9rB2S{Iixz|Onlv{V6GfU~rS z^^@K$GYgI@AS?8bC=852q`1IYBvtwKH`0rkHcc-!{|wJPk{(ZabU?}CG;j;rb`eRrT z*xsdM{;#x5ko$OPzhI&p1ry!q#+vJefeLzgTU{Y>ovYpihY3b_U66sR z{t}s@1!;&653}$>ioy%7dXbdVmuG0M`XoZ8pZ?T036kM#{0U{4-zUaU2o~C|d8<6t z3W7yU8{}#Zh3hTThHl)vk+HZgaFIepnby}%#6l_ZC33DNr#VP{N-ZL;6+ucgyC0)) zwXB#&2m&V9I9;!njs)PToXzPSNdAvley)%Krr5c+3wF3UmE9&uLkf_BVsJh&|FVH& z5PMgr>0=Lw89s<@A>Ve)EUuNU+HY23{>jfo6KZ~|ce~oZ)jWD)|E*K~;k2wGWNoq;Jz2HiZ?C4DOQ+_>srQdNfc937#+%JtA1iK)pDE0kh< zmh0-e)yP>m*h~vC@-F!q%uj6Lj?(vfb(WlItR<~9kO-;}ypm<+{+rY;y(-GIb3PTZA>wb7thSVLY(wBmpQ~`Bg z%Syg*hU`lH)ARBISLzSC?F%oV1{g$Uz+t_3= z0EV<(YcIUkIC+|Ci(-}UZUz@njIpgx7kRfThs^4NKPj+}xGm8{h5_lsLcPNgqj*@> z590;Kn98C#V+@%K$5reEk~z*+hQbIu_pLso`iZw9Q;1ntnqN(g4w$cVh7WlU6k!gU zzcSc{mJr@s?1`D4RFI|2<&=HLs4njjdmtOmci^2KdbkUoo#$w2+>_0)y2kj$$Z2_M3x@(|a#KBfM)?bZb;EVSGP zao1?A-?jYgl_^jK*>7&07_nF7ls7o@Z>rx_6Xu-O0>5R~(qXlptCkHB3;#JVQuF-X z$GN`q3fArkj>xbw^Oom@Vq8{gcByp+QZq!{7@mconu`6#q+(-lQ^cXHww5ZM&dB%6 zL`ZOg!x-e+_|02XyO!;R3$ymUVm8$CHB_2rZ5-T>QEx|U@Un7uc{T@zaUNAt%OWFE z#1)v48|s>EWaB7GIU+`TMpH*hN_$EP;umb(Q!qT_H1;(`M%Z_y?6z;MYZU>ypp%#D z-}AFWOHFxq*38Oap))R~pdZQUUm7553Kf|x@B!8VwwK=aBJ%>ZlE^L)q6cjH)DULr zd)KY2TxTwU0*mGK;6$hEE$_jg-SxJ&1If>j_Yezmda3zDqbzAz?Bvn}-D6RIrqP`H z$J@<+nIgC}&SktA%A(-a_+MFRNp3XvFL3#>Vq1O2WG}pWclX}z_w~IRO7m$!OSwLS z#I(sG573{ML0Wpu^sR^qr1hD;b@!RRO-E8eOy8y})303Rr~RX-6lPfyDKg}B7#8xNq2N)o2=N~O&z_Rz5XoBfesPs zlbM+zXB6a1*54bS7Pk_D6(BY<(J}WAGJ9dgqW7I>eno)ml^Y?q6~!cpkswaZo}I-N zo@K#Nh8cqbF0t%H{)xjg!_L0os3p;1Rf;{8uv!9e$@_K|V+Vo{k^ree-*(r=!okJH zKDd9ieBak*6ea~>%oiqLd$aBn0r0v=^m=veURlt`roX4|8ym0^xEKQhjd^#}cLs*! zb7%0fqwu3wJA{fGs_uN@g{p)XW`rAf*5@41N<)FpQ1zj8>(&|L+c+`Z5}IuLxqfhj zeKVR1p)y^;`tQvu-nCxx&yE}ru_WGol@U3^RzAd`@ zVE3;2TkAU`iTbkoPA%Y6b@(dsfYJK%suATQcdDZ6{w(D_n0Sl+ZpUP)NcOwj8L|6d zXi9yjk!SxJ<1$8GUUkR93-U@jBIiI%&6Zp$`LxgvZDM@p>xGGW)V3%YQ7`tHS|NAf z1y6&+`QXkVY))T0Je%DeRrd1pVMp%e#)j&_A!?M}mfQH%3wred&2O9d>=xQ=v}F&G zwtMzfbLFk-qZh)1*tEh2c{~L_+q)+eIApYuw9e|BbzqI2M5}Yw#rj30&V>Ajwt}&3 z_n)a%Cbhbx?*@H)NdJtArUdo|bB(~B-Je3<<8BJ>pxwJ{ zx6xUZ(DZ3S$k%gQ_6|?`GN*Ax(Ep_L=jK`9t$aWfth=tX@&@@|LfB!dhcU3~}{u$w7T4>eFb8aKGb3OW7njD9iI$tMGwMLUw z;{gEj-%w%W+&xs#uBr*X39qJVb`@6#WNMURxx)hD z&xuK?-W!z2>ODa8?mx#Nxq9!i_P+;`!KMPHYPffQV))v+_nos5j|D6bR zdj0@}y6l7E8Pp?;Yx-8&-ds}i_j;ZfO8N7m|d9>scldE^(A7z{j5p^IPmZgGw(N93Qz zW&1A}H`;&Rwaxz5$4zuSb~%NO^DZBJ+3ayP*CXfiRFxD7-c*$mSz%Sq_3$j#*zc6( zS^+O2dM#E|7D-~si(%of@ZreW1x(kc00RmmywlH;k>ha#_E+RQ8C2Du)2 zfI_Mq;TK>)g>E_?^t~AC(5O3)2;e*yu9EH|Clu0w>nytTppfAxGFik z94{DnCSq5$_aD3LigC`xn{J9+WEHviAFpkWye$ku|75Gw&`nW3=-)!wFQY|U{XEiP ztAgnB?S;!%l|CcS`|@IUZFP6zGW&6F_bv2G(EGBq*!A!SNaCy0cm_ZtDdX~7j{}ZTE9r|c z1j=aC_cGtPrS^Kwe^dkxqJfv?=x#bN!)bWeOPfs6}cpo z%I$iqTpPDmdj90nGbz2&)9TXCBJlRNZ_CrWu1Dlp^w!(g%hQe}oR)&#HmVyQLUe9d zrRTlChzZ@^?et(x;EcRLTfm(c*b+!ljoJ}D48T`KR)?zhwtAlzwQIw>+9-M6-WV)d1L)JSsL$N*wp!lcFMpl9mgKVe0djdQ20_**WmAY?Fe005gmYimk>=D^pn^yO=R%_D& zWAy6xqOcO?yhj7yhr6TCd0#_nfZFGkd>BXuls=pg8Cn_jei(5^z3&TJd2f@9eI=%^ zMnWjrTA9ae^R^+-$T;3;ZM^H6usc!%2_oXDG`#Pn_*Mx_a)=IkTSWTAyR9cH?4n~C{ zx>R*u;{kbSq5&i=;vyiUmb+DGIk{a%bwi5x(aNB!GB|m#;e8^wBq3Oq)F)H;+dNsQ zpa<_AZgXFHHuw49evOOZMxJAHUxQnP`w^}O_ZQq6T#T*c?_b+6X#f+b#QmyFi;+zb z@-l!jF8(SV*^cD$Gg?`&Voj^JU8roW-aVGLcl-8lu4i45D*KaKCMJwVQfgvCrf@f^ zot5>w0@u(__3x4l^RvEHTGm*Z=X<6SYTuJ0L_Wlk*)TDovUQ@}meVpZk>vbv3f!Vf zPrIxBAIJ|$h&b|Z;-S{l7Dy5rlK&j6scTw(;PkoMVP8jz8 z10XDCVD#KAl5Z#lKv;1G&Yk-P&!LHqsxyns>=za93_|0kmWlSn$T@Rg?oS-rm-q`3 zK~v%TkeKFr4`biGTirft*wSRCH$|Kw$He;@eW4Z3)W5uOq^XDA6etV&I$Uq>jpM-X z{owG*V9DWN;L~9B!Ju!oh0f~tKj_*d2vIlhlsv1EieI4v61sQwt;Rb|-`Mq!lU*zB zA?CiVsdnFLt^oGEp~k8*&$;k4t_!c;vThwH8w}VI^uECbF1}4r&4fPY>k*2Yu`{>i z@LP&{c2LGRSn|A4a(Lu>BX@+xoaWkiTqS|XT>5YL3Rupi|B}F476v@-dSsP6Ss3v6 z5;wb`fQbkqvW($fjDHLXPVV-?;J1+AAwhzuk}4#4IQ$~HC^m5VFrNVw+(#|f0{kk;db?Dzb-`5KJeLY!Wzpn-R zbqV(SGKT#y68#(67sG(hBZ#FiV8?ebpqbmnCG7Rpg2a4gQ`r5QP+VhWY;!&IG{9g~ zywB!JWa8E%(vRvy5LJni_jC7+Y#Z5L_lW>mXw2YX1*;S*WSdK$q5!MirB5WV$pWlS z*CSWSlLc6vOKw&do}#lF&Xe4R_sf*(=fT1q3`fv=kp2&PKdlT_A68ZrX+~FNUf_9f z@c=xGph);GY7XEr-_I?G!{q6C-a~<*dESn|AWA$OeqTXkdmx=0FjawC688j9;A(fR zSWE=llTdXZSbASHe2uKezD=xPB2v_ORGnU({&X{Ec%%;!Wb)Ow)3RuXDL1mF* zgVteGz!y8Tb4~|4B>VmpwoA+wK@d$*-y6vAQjx%32I9)@59>ZeUWW~-M3v3-`13Ep)uEk^o_t9K|u`Z_O99{ zc%ytLrL!SrA}0vzRCcJv8{sf;Gt+40#Hb!g7&Xcu-ptJEk~jA)`XkGI z(EXZV8(H?zG_zr$_4u~hgF|XJXEqciaFs|)J|p@pf>F7RUCnO4Ex)VT>9^}`j;>~h z_|C581o7Qn%^+*cmvlF4TrMQR1mm68P=e4#ZYzCD10(rITGBoKGd(-}DR5X%A0j54 zBdJ5=Hlj%45Y53Ty(9ZcyXH@oJqY{Nq?DFOLdxcuQZ54j~$%>YqQgzkkZ_>*&(?ot7|jr4XW_2&1gKRH{TZdqVCPAjtMEP#ktIie-vnQ>ry<~ujyUZa5{-xVzci3vywQ7VN9*T&}G zs(T;Q2Y?bJ=6%>k#=`C9k?+bvohk=KC5gA!Oy*?HS`3EVcYhBJ=`kvL{`2h^+2S8% z)&3l-_NmnVOzKCwzS{zzKwA4ZS^+Qs1y(0H*pH>c$?eL!O3cu~SEK{r722I>gB@|b zR3Q?GD;giPSGi~YR=R{f-r@YM0EmRR!&f?zP=eJlglyJLH%WCnWDJb9*99C#zJqec zF)fqK8Tk45sTlJ;lT23qcf>|uhm6460tO>nbu-_eF}ksa%uto`Rc?lZ)>5=)XH>-J zf`cPQ`$(^|d)LVKQrbBZCnIFBo)q(R7ULpzPv$e!yqwmsvpSl)YsFS+&uwhwtp;s_ zO&x2|Hm)>|HECM{LFp)gDrFF+en%X#jHZ#z0!*1CGaUJ} zhx7gC)`eru2um{nD%A|}r5WNQ1Y)#dha$zB+TBF|tJ$h)wF8yy(vd`0)^1^RPvxV* z^xzCfaE4QE`+e9;#|10gNK&vVH-*8xGc<0HLeS?3f=2TJgEwCp`-0UyaZDZPv2PUw z{jPD0?YctPro9V6jFflm?*(&$OC1PZfQu77C8lgCgo4K2&#eXB{)-K)A5tVzDljGE zoZ zq6N;Nn-;s?x+0W%CFcOoHVWJ!1@>4K>p^P7pB1`UR+o3E)3MmPVky~;#}^kSjY^++Q#7NO=D&cLNck;8D-d3!rqJB_c6FIb414!WB@cc;A9 z^s!sSTAbKRJ`h~$G?qHMTLps!a?sB((s@ZXM%*E=TbdBHmapS1(%TrXLITyr`LRZb2<> zJeFY^#h5*)U1<#H7fOBzG|smre@v+$;*3X_S$yOK>q+WkjGM|NrlQUJrc#CpPU?+*sU2xHEAYuJgw>?I7+w z+&0_>+*;gf++(R1a29w3U>o82R91m#%Vb7 zahvubt{t}-w*j{n_XKVkZZ>WP?k3#TxGdb6I4ADtW7HA%8t&J)pWte7Rk+)5H{r(M zvT$eOl5k(MTz-c8P?k;pOoMdDQp<3wakV^uh<_&O^KkzQS4dnMu4AQ5TaKH7%fh`E zq^`Kza2MeYHQ2OY;eLp_7KbHSt?dz;_Au^NTn6s&!!~UP?q6^VaN}^9xXya|0QVB^ zVO$aJY}|({Y}zVZuTJ0KX5)t8wxd7sBJMHV0$dU9N?aPQr;ahet;Icnn}WLxHyC%g zmNCVx!cE1c<2KjujGKWw4`(i?9=KXu5iS$=Wi{{NevP{mcLC0cI|Se8SGbqyvpa={ z^qs%%I?a9KW172Sz2?sOKvrk#uj?Rp|2)+H9FPC~D|Z!1n8jF|g3J5?-!G%?{F6WV z{hs=#X+G^+b50HMZcE2`<=P87~ z&zpDQ9#rMZ&nT^k=Q+H;NWC+MHzYk1e?GsnN&7w}-J@dWs*>)~7VvMLs>xmI3-kF> zrZyUPlXjzaEB^hwvxu}z-j=V=A;(>W=MkE%UDEgc0=}}4^m|FKRN?!{C$+Z9w0`IE zw1iv_;s;dz1^mvZR??pPNx2(e>L9*+S-xq-+@;z!hn(?J2lJ)7_`*C@)*S6J^2!_X zjvtL~@lV~Sv-#%Tyd^y8p4TTdlg5^5suPGKNqMv^*@hO zZw_pw^r1DHGPd{Oq+cG;u2bd7NcQKpN}X_0>ofaWFC%e2Z_fLH&3*OVn)_w^hwuZB zYVPmfH9PaJdGqGqeV6~<`46b#HRmp5;&G$+Vu0S87aPY>4+Q4Tiw!Bf+a%4#ZRVOi zNlQv_JG@?RqWoQz1EldcDsybnjAW;FO-@c(5wzmWOraHM&O7Jc$)BbzU9gltCpola z&FRE*@=qSMiSrkFm)`3yS~&miIg9Ar`)S+Vv{-s~4)bHSsuQ=nQM-YVFJmt~BXA~v zLt^vlRz~0!t(boTpYc3aYB6v;RhxW@6iu7NTRv@q%5n0W>J!YqtF;_0mw!^8%!~=Z zi=Xe@Òu;y1BR(;gsM(QIFJYUT^87HZ=K(|1p%yEHfnW<8W%q5wpvlSEzB*`2V z2oX46OrC*dN&3AiMXDf3t$ITKuV zIkEHTwM%%aR8VlYYO{q!`up=P(ogQG2UHyedgLt&Uaa5#Hz!g4JVsye#{S-@p}Ay=#p(td8*=#K|+qg3fsZS`hEAF@5Fz{rxqIn#;Pkl<)ePvlgbY zo@C_Wqj++EU7_XmeeYD`J)cpP@v<ji5ZuVAf` zUXgW5dS9@DAABl!bS^Q1!(|^A?_0rD7S@gTrBzPOfbseJ;Xz8ZU{K&9zPGYUj+fg% zK7W6?veUhX{*ITpXu!zF%k9V4m9%KS>KmEEvX(C3S;B(FWq&QZUaMzh^{}wJ^^QPS zKW-9yB71q~RBZg>ulL#9gYakI%U<4%FNcCnQ*3TThqM{^C|Ytssm+bnkGAP%n>!u9 z5Pvv+&rLQr7SOZ?d~{8;bbJ(4w6+^)9$s^Rc_T>z+9` z%wJljm9Q`Jf}L}RjeA= zR8H#$`mL6UQgl4(W>xA`ey5yNcEP+w1q0Y7 zPuQJ9p;J!*1*A_xu08|JT2}ulL@E^EsdMIiGXR=RBVw8;=<# zSsvm|GN@rIck2F7I3$S@wi>P)Cecwi#D{7#s#(d-DzXp3n_u%zttz63Xugd@_+D_J z7PsoN6ja*x;m|9!&Q-o8a8G`xut_EgkIAjK2HX|i^iKRpcH%>_l7HBlLVJC^oqANr z8@T%GhvU-ILlZ7Ge0Z+cn~Mir#Yp};g}Km3X2JVJ{qT4GH_@r_$Pna3uC^oX;EZ#a>Dql&9grfb3e*5W9P# zaJF>a?%H~sso~jRxOd3rZ|L5k%q8OiC?O_ z#XPMi(X=up*nA~cP5G;|r&r*YTHtKk6IruxIt2IN|=Kax;U zy(a`csClbBAyk@-0#MxJ`7>h_SY-ry_k||^Pa1P*bIGM}k zWPS0R3k(3x2hIa#%m59Jslkn13|tQ6oXgN^U<_X5QAl{Fz4r1^#<{o;aGl5C1tZdU zCg9)scsWmYV=Nd_%m!W=<Hs4bhBoo4=4m-U6KzFBLja|GQULb3q9RNd z!H+5e&!K48V#3|$sX`@KQBhqNrs&IlYS8plUMec0wSG!FI8;N>cSA@kUBGr=3-AKa3akg#0c(NPz$#z`&;l$2 z76S8udB7Z?8JGby0#P6Y)B&}C7pMfvfij>JC zU^}oLSPF!ILO>7f8>7qK0jvWS0$xA>dI6-rF1UYF3L0QNuneGd`2YRVqwSvjmxKPg z@|XNQ^IIWC=-d07!_xnf>1VOTpN@6xPs?F8OZ;_0f4L)ns(=0e@5zt&r>AS}|Lq*0 zn-%}lb?{PCknXc}iN8*|j{T|r(_{ZvzZ|LrP)ObIr-n#xiRWzA!3f95Qt3Mu+XPiM zOFS!2Ivo{)=2^3^m^1gvtL9yO&9(CvTzCD#MK|2I_@ICDtbXvJHESP!e@A9DU3`x*mJn@!2Pwcv82MPwC#H=c%XlI{l0@^}WwJyHDS9 z`sJK^-ue9p49w*WywPN~SOuG1bU0m-+f#)~wq{bT|B}gd^?_h$N;nd2m^!VoY5GOw z6ECi)Y}@_P8JAr?^M5=3|J&jJZT;sB$}bo^WN2a01s4t*K4N6?sL>^*W5$jv8$UtO zf7|Z=5&HkT*{|*BbtwB`wZ%w`ca6k2Whv`}@>ms7X3GZ-EcZ1=%jtDswLDTtrIlf{ z$-AS2@Py2V#C}AjZ_oK}n-r<#8&SL#e`1 zMampS1y%vjN{A4sX(R<>zj&juAsVHxz}F&h7=dRR2ct1C8Y!as0?qe~w1Y8vN8@u% z8E6KerC$W@G}%5Z zjp*w!z@-laqcnIDj_RlRqqX{eebBi|bw@`w>hTBk{RZ}9!~Ky6b@_Y&uRd6#_XevQ zu!y!T=B+0}V9%M{+9+lERWlpyI6b8AD9SrkBb8dVpgBh=I2b!cYw55iPsEFZzR2 z>ZtzX&Qky1`04OJB}QdZSaQ$r(~&?H9u80!=E)sWvl z@YKg!#V`ovi-a&tgKv0cL421}1^&_09r#=Kf!~KB^eMrdRo<{kuaEBf7)KxdsVL(g? zpakPx40A3@g27+>c^tChAUR@r0dG;j>uY2fOo&rzo=c(_@T(_5ajAK;rXhf-nqVMl z{DLx=4}6jS7g0oW)mY{#QOuM0p0XGhT2 z*84Fqofn>@6o~jYrJPmy^vJn#4yXJl`y-i02H>Fj3Hzor_`~2dK(C~$VPJbS%8-ge z6AxD|)fAdu(V!mjhL%ufWnR_6aJV59)l+uUBgtseO7BpMl)jF#fRZ1m1dw&`=v94^ zEHO9r6Na!*tU#p=IqbV@`t0`hoFFH$^AB&yhRf0&41ozD}< z_%Y#1f#8A;|7XL=BwAdG_yb0QluMNdLQ$*{ubN;3nKvbC{CCB^!&0@C$5hRe)TKzK z_5{?%lK4@Q9>Pn;#3LmQA#IRWFr7-Z0!$PJ;x%eX%?ABrdAUD|STrNsBnqvpa#(*o z3^^hHJ-^z}F<%9%6>Ny;ec>=-JV1|Wr*I7nJPNr|#C!LS+YF5ca+JcG!C)gEXqEnoO{e>#H0LI$~fql7S^Gqhg-mrkKW@pgb|{ zsXG@9t|5N(apE~7Zqs5m#*cw!Pk<_!5+7O%-gH8bUa7&5;z}$Op=CXn*80QkdpUFr zi4mn2+AwN1jtdz#ycEX>Y8`FMB~?}6Q{r#T$fm6*4Dr`wq*raB(zH^vNfVaIZAGQc zmfCi$M7RBissz{xEPEGq>c-ovF8@tL#HU;*PhC<^*uoggnA{OcWIut>|xoy^Er-M##4S{*@aloa4CK=T3vgq zUCUrNd(?+nY&UR!=m>#7H6Elah%oYr(i%Bv@rhr&Tx*%2wfBr<^NzVfODG*Zh)W8Mnm zL=7a(RgN&4vA$USq{G8Pyf2M?BX`veZEISV!rXw?4}FV*Zi|Kw$+iRUyXhO^pwbY3 zy0pB=-@-P+=@s)!e#mcsde?lT?{txWEiHX(!4W>?8d{R64)2W`9z>H#Capi>wf8p6 zvA>Fi9v?Hd;!DQxYt^hZ7yB>(#_52U&WlK-vKlijzbxF6H3 zxD$`JXR>Tn4sAH(Rvx2k%l(H#xPO7Y8pKESpDO3mbCcau!{2yq`|fM84@Ap9Rgc2L zMBIjIo>S?5Ta=(X@`l87s@{HSNe*vYie6t_mF%7xpV6z6-BbDZS)1&h>VMUv?YsYL zeX_eYp8cL++2;do>1!I?E^Wshd(pE$1hoEB<8Rs0zWZA*CA+7_ui}mN-N)=oc25o8 z|2dQGKqc$}$%*8V%S9Hw;G&WpYQv4n^qi@%)d10|*9N?+eAGL+Q5g8?=YwYsR%D`Y z#GkMSe(3i{Wc!I{`nErXFFwWPOXW-XVzw)tuX|d8FNbI1TZ}vL(q1Y*^-gXiFX?+3 z4b8_cRo%;qJuy`L^_MS)*c0Nl&!4j^xS4H_{!Y z*)GUHZhCyfE$ve6N@_mniaMW&U;UM3?*LRfZFyJ+nx_G`hU;y=vy5p?B&x2~#pENo zHsP7RZ%>hrzR{(IyAJW!zQ1`ukuM+jVSq}fEe}ur$+DjTwEnd6mmFl-;{b9Gp>0F= zIZcYb7UHhfO)V+;o$96wvJ`!);cEHT=i+QUpzEb-ED*m1I+m4({dv<9-$Jyv)17#y z@YU<^KG4JaK>sK9fo^0HmMmiUYY+{qx&wG}yT|7hj+Ocp%7c~evGO8f_f)~{mj8`2 z`2z5OK_$1r?ViBiX3}8#;EQ{f^5C1+0@kH@E*?}?l*)iTrjtharn!~=WQ>Yw5~LwdMNb07poE6o8$t!>+LPMrL+F%8f{LeDguc>A zqkWV75e$nAZjAZ@5sYTaOvmSyfoI~Ito^s3JM3nR5y+ZX)2%q{ugAFYRG;h!AxK;6 z6z*+N05F#V$u*#T|^-suMn#N3{nQ_H0%d;p>@G3Pu)15XL7<*#fUb1k#tuke2wsV z!UaB0w60STrlfjrW20t9&j`4%e(gAt#iw2nzXRwpUs7zn{&w-1vt)xLz+HZ(1N zHkx=U?E+F*Ub;4T3RW>j+zHV}4I125VUv9Zkye4Ikym^q`75NHIkJ;92ALuwK@kW- zvVY$sUpNDYiVHyTE|mqE<;g%W0`505DVAk35L6JwkWNx*FqT1+B-9p?n7eEcc`8&x z$(J(Do~#e8ub6wn*CNWhDCvV6L&?5mNv4ylTuPJVklhxOo1&`>J{ORyqK6Ew4dkj8 z+;rCLdUDUC0XgI-xyqx78CbKq8 z9gSm0d~NxQzJ|(S)pU~N_Q9BFji8kiHji2gK%q=m9ivO98Cs}Nl)%b?$uM7F5~?bV z@WcwXWUV5fQpVB~I`JKvpdgp(q!_P+6IhYKWW@*zRa=c8i;iWbr_|q>8VI}5`tVH4 z$4Y*mTgf#gG*c{l&&wO!ff~X0qVu;^Y=XGmrwJd!Z>1?AClEy7L=V%-d5^1uVT%P6GXrC9> z2d$f^-xr~_7`0(!)l-`;mJ}KWh`3z4ozy`NT8ZHo?EwnEuWUJEu`CL-8Amdn$c$xF zKF*N+v`?xjn@MGs{7)gPsL^FUR&GR7#G|PF#>m#?CpKuvwmn$|T0^JF^D*t_$hsLh zEfCXe6LE;71f^w>$m%f;WpW=N#Ya+WBso-y-?y^dDSot}Bx$5QO?~s1I8k@zbF`|1 z;c6cm%P9gR37sSXH_oK$Coc*^TGfCiylh2()={fFjZqu@7sZbErII)%fZZ7F^;v#Z zI49LSl*csMNLH-Ify#qw>f02Zotd6XwHYlfWGcT;Ddm@PCt8DY7|8`#>jD*#AHAH% zlA0Z|N7%}?Ye?koo6+9Kri*wLu6W8*Jf-(>lPXY686YV}QMWi_O$_U!*7bF1B0vdNVCWRZ4IuOHSSljD)Hu7}ilCPmz_2CnRt zqA|{-d`H(FZ1QEw63pGA8C|+KS$X2fYn-KBA#a zkFD%4(;ira9IHjxS4g83TPKqu!#+(_)@TWUN4QO;KYH11{9?r{ylZt!%<*tvW34t;D)G(v&8Le66KJf~s_nWR=wUu-`aH z^h%s%JIdIn@S$!oO^FIt*p-C*0fn$y$wl(`6di&vj=hc?Lt8sje6f=f+Ew#c9%CLI zMPzUQ8ytfHS{JI6wa7Sj!V%;AUSEE#CtMmFjwL958f#?lQJ%>}&hG6zs=*g-!UzZ! z?jhq<`(z1`ac-oLOa0Z8V{v;nJ>MbIHpww*!r)0gt>4Rwkd*YqYDhcure=C}tCGLv za+P1q*lNu?iV*TzSpHH>Dq*$soJVw43S;Ep;q-hA@+;EQ@6D&;g++C2oNh>6L!_2M zQpPMPPiBpd){O~F!x9*_UCzJqB1raz{5;yHWS6T*LQPqo)H$xP(x9qFHlXvc{NbLE zqG9AfzZ_$^cSRNfU$P)mtRx1*Lr`kak5kLi^-L*8B;GijRUxNmP`@E?B%AN6@5Y(T_;&!aW3kSaZZG5iZH##+?J)&`n{Djx~A}kQ>%A$u!z$(jUDS z!%sGzivbFc;ZE;#r+50UC*HUdZ`B{YH@~W5W08k%1-1bDfnK-bj7?xFunO1;d<7hJ zn~s@*N?;N2Jn#c>`Z68M2ZF$zKr8S*Z~*9jyN=m_GGGdDJMa|nCXjUp&i(|-fH}ZA z;5FbY;K)05>`b5xxC+<=`~sZbf^$uQDZq`uI$#&@Cy;ZOj$H^`3akd+2L1%jyj#bH z0`s;7Q;e;Af!cBj5>40d4{w1HJ@$ zJ&HI30pMm}GjI^Ft^+Nw0@w~5{}}uOvw@YscHkgjeq6^Y0Gb`|#5%Jqb_6?;;bcji zl5-6E2hPYjmL12AN0B`NCh#QIjh)O+Vcl5|){~vePJ@X(ot?qXWO~+{oyE?^9-qG0 z&)!eog>oKtwfD!a_JKGbhhqkuP-J8#X2!{nR_xocVW*FXz3|vi&m`t%d2A5&#uVVh zp&>X|vXB+w%$N&t`p|HB|4=a-g_@%TyNJf%?9p+ojE!d#*hSd!GZB03D_A9?bGfRq zzlQd`&{=|h?EaaIy(;zCYeVOrO~GCqIyt8SdswF7{IVvT@pvir>R*O^`ZHNGn}z+h zS72A~Ty`b9ip^tJvukiR_k6YhXA)hH^MV$!8!)23nB9av+7h;u-NJ5Vx3OjHc6JB5 zleMtB*xhV7Tfy#OE7`ql6}wN~>okxW-_-X_bj30cp2j*mG>w-=AUEUx0uS_9lBl&k zI88XQ&*|JV(W^YQ^F(Qa5_7f3O8qTa3ayW}Ip@rcc2Ar|#^FCzUinNcf3yj` z6g10~DM@q}X`Gom6pbQV()@0!S2T8Ua0Ob~+Bs1oN}m)(G~;BDrp7<10cX9a^Qhzp zJztC?qth27l}GU+)qcOyq#EsuD1B1pRgQlVyeVSFhyBt$6k#SKp{+sk+;#gwB>70@ zuSzl2kNrQfN#azksIs(0o6PaA#4eeZj_c75S0}WgWFeaKjm@5?ikOi=k!xf_G}J&H z1#IMrt4*60$m2v5mu?fly26==FS}&=l1Bc?{P^ofdaE@_qXOcdJi6K*_k4@xb z7(AW}<;W#}??9I8kcW5%N~g}0DblHu6Iz?dhoVi*6bbsYG}kz#rg_3CbCSx5Vn|7? zxF=Hw4S8N3Ss_i{(s;~Z1v8Or4QIQi_E4TX6ka9+oX%LKDoL8GLoUrkip3!5_Bov} z)eNUokcsy-M%5ylP9PULrAwKZKT@TVryjAfp4Jmcl1W=YGjM9d?59)4$6wkOD_$Nm z)(V+eVq6FlJedlT8k?j%l`&gnq@;m9tOkl=jfcNF(zeLMQ43>8p=|;sGo=ocr^h9& zNM;l(lfg~rrRoD}j6}oO9~^Bb21?0oI|3;sJEK?~$lg$9_2eP6p{$*th^91*EwSy= zw7Enpqily(eQCHU-xIB_Z97mJwJE_a?Dl9xQo-L3QNyA`A?8toOc`=lDm7K%n4_1YP|yYi#2*x+pxOC$S!5>A zaLDX?s3JhRBl%PuE3BDX6P7`4Sjh@&l2uke#toVrQ|;FdG%q?p9&cQv(yA6f+cr(5 zX}e+3K4ogNLZwc#U~z}kCWY#dVp`&#+iBp%Xog_wNi#D_b6!Y(l+&vyGPphzZPFB*%<+^*RA@0ONtNzND?kcqVhwSJb6z5xwmi2JUWW47 zp(thW*JdcOB}plTv?x(T+aNeZ5sfct?y#m%embzanUhyHCss@+vrmiVzsFQzqZzWm zXoj4{QkR4$hu%)wbjW`u=_!xW=7)}kB(HNoiPI!cX0epsRXXcbAu=%3k|=DjRy?-6 zNTW2>B4WbQon&dqz@j~+5m7GJv3i4S4ZLJBkCZ`T&MA8cI;tKDnzj>U*oKhILK{cf z3aB1&AVK8cFk)i@;r4VSHGSoEy>dm4OaL9bl`JJ1&3r+%sI$CamC4v`Q%zV-d-IOZ;-1SJgTu^Go39)w3U{B zoUEy$T3+dxT*X2Hxni$Hx4nYSk*KJn-8F7CD#_h=T7D}{##up`j4NL>2#zCy`N6t| zdaUKd_`0@}&lf7rwAw~l^O~8YPFX_SW{*Y|H%6r9yhCVA7CYvpt!|E%ZKlqQ>|XC_ ztiS@N>IV7zW?5fY-ldGGXBabx`#}?;LO!wT5MGqE(h>#Jgv6TkS3Cu1gdinx}TplC+URugNZl^xA*}w>lbb@gZyoq!X%N;jD4;V5=$XzU zz>*-WZlK?{q#xl_eh26%+-X03m)QO2*qvl2H~Q@&)s6U)U%DR;5MPQAeZ#UctdCGY z-+Ke}-3-usUhF+T_FjxT`57JiUJ|>H!=3n#2PkYDdnog%$6XJE04yWJS_VaaiU-j* z10?gT*nKwc6qhRia-Rc`Jd1#HfjeUFci~R*tpF&zdjX>RCqVMys2$n;9o)&i2b4nk zQgz05DQQY~oemD_C8xCdqTDGQElIMg5)RQEz7A`kqZ&xfFLaKHdNosl_>aD_+q@L9 z^=)4N(b4L#aBUx6uCQqP^yv-<@gGmvW)_H9&^EJx{y#oye?`Fm$FoBA3#k7(Wp!DB z21n)WrrEt?abNk7@^IHZ%6-?1%cK4pUFKV0r<#)+GMxlW;>b;BK)3b{AE_shnr+;(Dhr52o*@~Ad zlF|7?`Ji&(cV`5^1aLrqAP49J^a8p8T>%E{E5UEp0K0&lzz$$LunpJ>Yyma_t-uCg zJ+KZ~3#?v2c!6S|5O4$ifh=HevC_^`483~ zpbLcE@-JO>{Z7^)q()T@N4=}=>brVx>w8=7f0bV4quy2j|C{%L2%NADx?la_p)oUd zZ3q2Y(6SWT8GF_2=}!Odx)>baKa^ zw;Yjp{;f;=*}bf5{JHq~Bo|4{a)FKqg);Ol$0|Mbh(A73#2rq>4h zw!XONxRnpJ^!#-BkYjz_yEe?avSI2=g~Q7R?Y{R$n`mDD$hRfK@BM6|^M#4xwRhYw z;o!uTd+*Y>mfkbp>UsT-YbRX0qwmD4e|>+_{WtCZso%!Cw@mz?IWX*{+m`6B=`^}> z6aD%FW3Oy|Wvg=iE=_SB^Um@R{o5~1@QNReT(Bf?;uZfTJ^yBZU(Zj`iLX!>VwE#CO{7t(Wo{PC)1&I!}DKCoNL z9d^;j!#6#%_@>Wal5W^kA~qDf((RdB*GL~udUCOC@PlVO{Murv&)J(l+3=)j@LW4x z@{Ae(?Bx%a%sBC>3hABiau*!=%nfr-{v8W{q|A_XpaIQ+mB|_WS&IMGGg`R$lc?>$vysnZ5Gv$M{cbA35RP(RUV% z|7UjpzD2tSSWF{J9(r|h-|NR`t!Vx5xyydvv-ylWzL+;*+#<)u;w#STG2%jB)gM<} zzvjrrmz}VCz=wCf`o@;54_59_dpFJ5C`qw$)6BT|GpYaIzEF&C>EtmJl$mDv75~)l z)bB!2Y2T@CrL&gHFlsOXLhV*OFbDl?L48$SlfJROE)a2^g&)eaN2+Um^`6K8{B~(L z7zx%y2jGY@yC+gVaH`=fJ$7RHYp~^ZES*dh3^>m+4CKyo9ea#k@4%0$M&w`4?jSd# z;txI}m?XelQj^Swn$`~bc>sh$=WJlPY8|%tN8*lJ=fU#)0t6Z6o9e5>PlVvV^DH_E zZfX!Kch1r`_?5K?&a-Oh1hcbTj@&r!WY2N_8j7^g9l1%eI&$NYhIdD@|nY>&%(0g(ro732zGT3!e$U2nU6uZT)Qq+Ynp1&10Kp zn`^tqcBgHH?Frknwtv}Ac*z*!i;a4d;8#fa@mL3fJ?lS6yGb&XvYVbEIpf z7HNgFN?I+gm5_<`I3pUj!O+Ar+ySn?!EJ~dt~1=C{Z_6qxi{lWokj>@uiv30d&+q&6$*m~LYwmvqS{X+YAd$m1ezs~-L zT`yY25^TIO{aa?b%KPPgdxOvhGc1M%RvTV6Y&U#oIGXRnkKq^axAANEXZTn6UwN}}it$0?C#J6Elgy%d znE7IJ)I8I?(0sdjxp}jBhk390cXJPm!6I4;En_Sm%X-UJ%O4h-b+~nw^-k-f)@Q6+ ztUIkeg|R}Vuvlmn-V#o-jkis*U17V+_JD1j?QPpG+n2U;?1H`6ezE;B`vUtC`wIKR z_NVQ?*-sa9M29$5Y!r8kBOFzZxsLgcn;knHlbkc1H##41{^>m4mE$UKmAfu+t#v)= z`p%`3PKWI`OM|3Bsad*Fx>I^sdR^KfeJTAc9Uy(UmGU5Qqq!N}1Kd;G%iQPOelFW^ zuE7X>3^$B7OgG$a*kssaIF9empU?aF`TXPjPCm=n!&q;eYMgDn&-kuUXFAJdH%&IJ zLFxF)^sDJ8bAfq;d8&DyxyAg1`FZm;^9SZH&Bs{!LNk??$(B1UuUg)*{KJ}Oy}&x% zdW&_R^`P}c;as6us1lwv+Y{%bDXG;;e9noztCjp`8uRP0n|n zUpjTJ9+k@?Vrx->VCK}#1d}h$`-S~cd zAz#lo^LOy;`4{+;jOQB*jHSjp;}yoMjYCbfrnRQ$OedL7GyBa`%=epLH2-GqWVy+* z((;hyb4$MUCF>sRu|ib1S!fZ~3vUR0ZMn8WTaE2j+xzy9?LXO177N4+#PQ-%$6Jn% z9a+xa&QZ<@&UMbuot<6VU8hP`X_54h#3~uv0QqvbAzU>#i@Sr{%;^nb!;^+?{OQQ0 zm-9a%f1Yn_GR`+Xh0?mu_$$)o1k-7z-X^oD$TZ7zrD-9`?oQKg)3>H`%oEI&<{I;* z<_FC$nLjq0kXK)`yk&VGR_qJQx0ZdD-%*;6wq{$qThFkbV;yL(S}U!7 zYt-6oool_xdaJd?y3)GA`n>fOVY@KSR$+_UX4)p%4)w*5AP zU9@}bwf5QetL^LT255P#c)R!*Y|4A$C*mIQXYo9T)iKO*nd4T+=Z_7x1I_O1_S7;%|p_c$$9$rJ|G3 zjGQqXHloG&gz*!kL1$AJ)3K%#Q9eeQ#+fQme>`CN3}xg8)6b?qOr6Zx$T8E+&E_ta z^DP#O!!pb=3fA-zOUN?a(rmfLve0s?WjXTEqm~Vp&6d|KU6B@UYj0SBf#PV?1ec1< zq8Bmv!Qn!#nd!XUxx%^H*~``2b)L%xOW<+UxGr;j=sH2R1e|1%ZNVti2bEGCEai0A zh56DAunhM}YosTn_ocmL7Z&1ouV5!n;l^_1s3+%hH*l-CR@jD0!xe@FNWoVOJ^6F_ zTwdh!poek%L}+3tfHgpJG4F-W!(nM*AB3JNC21T+xNR>J|OsBJm-y6D;a(#{oxoXTZ7Nb()kT znIs3+-xo_w(k$reZRu0RcD5+Ky5; zLLL6SQ*hnu+Uydgq0$7T)>YE=(h^vL7a_qn(vQ;b5?iatz_{Z%3s=E~xH;T5?o7iZ z!&8RK`PFuCcyheb@RUwA58N zS;#?2n~xfs*^aS|MayK8ZNBXW+Y;E}Ldac#8fg(~q_yI8j@upU9dA)yX~kIrxb-lE z`A7H2gsn9wMmZH>JhSoqOG%y*K;xX&j*8j3zCR{HJhV2X5ZniDAt+G9CI|i1$ z)P51_{#tt->i=8p8|@$1ciZ>azp?MN@3Zf>AHY`X3&divR4fzA#phsA_K4q$`^5d? z0r7OlP)C!a*)hj454GV!$707)$1;@WZyb9a`yBfnZ#h49e&e!9652o4NQ+6{Z4CRP zF(1cu;kt1b!j}HX9bq`#;4~~WtT()F_||YLKa?L0YkwWTjK7cH!iS6>8VgJdU^9O< zhb%W*`dhn;=Zc~@T&xi1ic7@%#HS$BN8%4+XQXLAhs|-JW1_?4w4ts!3-$2=*W0e| zCALeM?_7=6)#?0Auo>(5&-rioANXJRF2?&!51Y<6*P=~zjrmdYXXaxq+pJ!}F9c9; zGzymsvxRv`mm5%r+$P*5+#@_7tPvg)o)9()&kF|ISGG>}qwE34b&fY2-#JjT?^VVC zMsrKK{pKeuVPURNVvE}A#mB|b&evVk_i2U>&=7_t8_buRsAe96mdeZ41J-UREoUPq z^cOf`yf9O^U05Nk5>^Xqg>|UEHlWpVOuX$j+qM9yxCSkk^|lSR4{S%-ZD_R?*bD8$ z(1Izom)XnhEA6Z8Yhi)c+e412t~D-RqDC0?qt4+5avyQ6hBE$Q{vdyZ@g(CK<7RB5 zzrr*Ptt!rPf}B5#(OU8%M|QW3vTe65a;$RfllCiRP_M&Ydt6)=QnM?UjTG&{_2Ts0 z0PcIPyP=<#h2onm#>8_ z3-L3M1G<@en0uM^=00YJ*=??KMO`yob6oS$dRT_G^=j8T*9O-n*H+ZhJ6*e7-?;X< z4!E+Uu2MH?3tFAq(5Ao{7~q+zkxIKamfNFf-OsQ$+vnKl+2`9A+85iGqJ7hXHs7ka z);8E%?VIdd>|5>I?Az@-(DvDtRz9-CE@D?PTkM8DLN8G-_CXENAFU&kD4@;gM%`B^ z4vUweN?5yEu}%z$QM4v!pbnWM&J*X03&q9aQgNBsBCZfuiL1r6;yQ7?xIt_c5s6Bj zydEH~`w-F)bws-E`*1mEU2~j?6F3LwMqjIt8^#r*pFx_glIY=+I6 z$1O%qUB_QJlk2I}B z-Mb9+$Odz(d8c_7j&IOg+-RdVTjp6-SXwQcEZZ&Lpf%LR+RfSvwaPHqvpTeXmRVO= z*IPGPx1z7pRp=)4LRl$5`?U<^bRk;yR9afm@7aqUPmYbVnQX&s#kM+I$ku3Uw#|c8 zU5s+G$+pGDT5(nf^r-45$}Qy9aqBsb7kI%Yz&if-=bnUJ{qM{-`%$O$aO5}yN4cZc zQRfJuUTbvBNVCo@jvdaO&Rx#k&OOd=oO_-7oco;zoLyX9UD>W~Xr1?R>0N!$lj-l` zTqakgE99DoGPlsx0=sqiI;?@i8aS+h!x}iOfx{X&tbxNCIIMxg8aS+hj%nck0P!`K A$p8QV literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript new file mode 100644 index 0000000..40f5317 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript @@ -0,0 +1,39 @@ +import Options +from os import unlink, symlink, popen +from os.path import exists + +srcdir = "." +blddir = "build" +VERSION = "0.1.0" + +def set_options(opt): + opt.tool_options("compiler_cxx") + opt.add_option( '--debug' + , action='store_true' + , default=False + , help='Build debug variant [Default: False]' + , dest='debug' + ) + +def configure(conf): + conf.check_tool("compiler_cxx") + conf.check_tool("node_addon") + conf.env.append_value('CXXFLAGS', ['-O3', '-funroll-loops']) + + # conf.env.append_value('CXXFLAGS', ['-DDEBUG', '-g', '-O0', '-Wall', '-Wextra']) + # conf.check(lib='node', libpath=['/usr/lib', '/usr/local/lib'], uselib_store='NODE') + +def build(bld): + obj = bld.new_task_gen("cxx", "shlib", "node_addon") + obj.target = "bson" + obj.source = ["bson.cc"] + # obj.uselib = "NODE" + +def shutdown(): + # HACK to get compress.node out of build directory. + # better way to do this? + if Options.commands['clean']: + if exists('bson.node'): unlink('bson.node') + else: + if exists('build/default/bson.node') and not exists('bson.node'): + symlink('build/default/bson.node', 'bson.node') diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js new file mode 100644 index 0000000..82d4d04 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js @@ -0,0 +1,339 @@ +/** + * Module dependencies. + */ +if(typeof window === 'undefined') { + var Buffer = require('buffer').Buffer; // TODO just use global Buffer +} + +// Binary default subtype +var BSON_BINARY_SUBTYPE_DEFAULT = 0; + +/** + * @ignore + * @api private + */ +var writeStringToArray = function(data) { + // Create a buffer + var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(data.length)) : new Array(data.length); + // Write the content to the buffer + for(var i = 0; i < data.length; i++) { + buffer[i] = data.charCodeAt(i); + } + // Write the string to the buffer + return buffer; +} + +/** + * Convert Array ot Uint8Array to Binary String + * + * @ignore + * @api private + */ +var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { + var result = ""; + for(var i = startIndex; i < endIndex; i++) { + result = result + String.fromCharCode(byteArray[i]); + } + return result; +}; + +/** + * A class representation of the BSON Binary type. + * + * Sub types + * - **BSON.BSON_BINARY_SUBTYPE_DEFAULT**, default BSON type. + * - **BSON.BSON_BINARY_SUBTYPE_FUNCTION**, BSON function type. + * - **BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY**, BSON byte array type. + * - **BSON.BSON_BINARY_SUBTYPE_UUID**, BSON uuid type. + * - **BSON.BSON_BINARY_SUBTYPE_MD5**, BSON md5 type. + * - **BSON.BSON_BINARY_SUBTYPE_USER_DEFINED**, BSON user defined type. + * + * @class Represents the Binary BSON type. + * @param {Buffer} buffer a buffer object containing the binary data. + * @param {Number} [subType] the option binary type. + * @return {Grid} + */ +function Binary(buffer, subType) { + if(!(this instanceof Binary)) return new Binary(buffer, subType); + + this._bsontype = 'Binary'; + + if(buffer instanceof Number) { + this.sub_type = buffer; + this.position = 0; + } else { + this.sub_type = subType == null ? BSON_BINARY_SUBTYPE_DEFAULT : subType; + this.position = 0; + } + + if(buffer != null && !(buffer instanceof Number)) { + // Only accept Buffer, Uint8Array or Arrays + if(typeof buffer == 'string') { + // Different ways of writing the length of the string for the different types + if(typeof Buffer != 'undefined') { + this.buffer = new Buffer(buffer); + } else if(typeof Uint8Array != 'undefined' || (Object.prototype.toString.call(buffer) == '[object Array]')) { + this.buffer = writeStringToArray(buffer); + } else { + throw new Error("only String, Buffer, Uint8Array or Array accepted"); + } + } else { + this.buffer = buffer; + } + this.position = buffer.length; + } else { + if(typeof Buffer != 'undefined') { + this.buffer = new Buffer(Binary.BUFFER_SIZE); + } else if(typeof Uint8Array != 'undefined'){ + this.buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE)); + } else { + this.buffer = new Array(Binary.BUFFER_SIZE); + } + // Set position to start of buffer + this.position = 0; + } +}; + +/** + * Updates this binary with byte_value. + * + * @param {Character} byte_value a single byte we wish to write. + * @api public + */ +Binary.prototype.put = function put(byte_value) { + // If it's a string and a has more than one character throw an error + if(byte_value['length'] != null && typeof byte_value != 'number' && byte_value.length != 1) throw new Error("only accepts single character String, Uint8Array or Array"); + if(typeof byte_value != 'number' && byte_value < 0 || byte_value > 255) throw new Error("only accepts number in a valid unsigned byte range 0-255"); + + // Decode the byte value once + var decoded_byte = null; + if(typeof byte_value == 'string') { + decoded_byte = byte_value.charCodeAt(0); + } else if(byte_value['length'] != null) { + decoded_byte = byte_value[0]; + } else { + decoded_byte = byte_value; + } + + if(this.buffer.length > this.position) { + this.buffer[this.position++] = decoded_byte; + } else { + if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { + // Create additional overflow buffer + var buffer = new Buffer(Binary.BUFFER_SIZE + this.buffer.length); + // Combine the two buffers together + this.buffer.copy(buffer, 0, 0, this.buffer.length); + this.buffer = buffer; + this.buffer[this.position++] = decoded_byte; + } else { + var buffer = null; + // Create a new buffer (typed or normal array) + if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { + buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE + this.buffer.length)); + } else { + buffer = new Array(Binary.BUFFER_SIZE + this.buffer.length); + } + + // We need to copy all the content to the new array + for(var i = 0; i < this.buffer.length; i++) { + buffer[i] = this.buffer[i]; + } + + // Reassign the buffer + this.buffer = buffer; + // Write the byte + this.buffer[this.position++] = decoded_byte; + } + } +}; + +/** + * Writes a buffer or string to the binary. + * + * @param {Buffer|String} string a string or buffer to be written to the Binary BSON object. + * @param {Number} offset specify the binary of where to write the content. + * @api public + */ +Binary.prototype.write = function write(string, offset) { + offset = typeof offset == 'number' ? offset : this.position; + + // If the buffer is to small let's extend the buffer + if(this.buffer.length < offset + string.length) { + var buffer = null; + // If we are in node.js + if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { + buffer = new Buffer(this.buffer.length + string.length); + this.buffer.copy(buffer, 0, 0, this.buffer.length); + } else if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { + // Create a new buffer + buffer = new Uint8Array(new ArrayBuffer(this.buffer.length + string.length)) + // Copy the content + for(var i = 0; i < this.position; i++) { + buffer[i] = this.buffer[i]; + } + } + + // Assign the new buffer + this.buffer = buffer; + } + + if(typeof Buffer != 'undefined' && Buffer.isBuffer(string) && Buffer.isBuffer(this.buffer)) { + string.copy(this.buffer, offset, 0, string.length); + this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; + // offset = string.length + } else if(typeof Buffer != 'undefined' && typeof string == 'string' && Buffer.isBuffer(this.buffer)) { + this.buffer.write(string, 'binary', offset); + this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; + // offset = string.length; + } else if(Object.prototype.toString.call(string) == '[object Uint8Array]' + || Object.prototype.toString.call(string) == '[object Array]' && typeof string != 'string') { + for(var i = 0; i < string.length; i++) { + this.buffer[offset++] = string[i]; + } + + this.position = offset > this.position ? offset : this.position; + } else if(typeof string == 'string') { + for(var i = 0; i < string.length; i++) { + this.buffer[offset++] = string.charCodeAt(i); + } + + this.position = offset > this.position ? offset : this.position; + } +}; + +/** + * Reads **length** bytes starting at **position**. + * + * @param {Number} position read from the given position in the Binary. + * @param {Number} length the number of bytes to read. + * @return {Buffer} + * @api public + */ +Binary.prototype.read = function read(position, length) { + length = length && length > 0 + ? length + : this.position; + + // Let's return the data based on the type we have + if(this.buffer['slice']) { + return this.buffer.slice(position, position + length); + } else { + // Create a buffer to keep the result + var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(length)) : new Array(length); + for(var i = 0; i < length; i++) { + buffer[i] = this.buffer[position++]; + } + } + // Return the buffer + return buffer; +}; + +/** + * Returns the value of this binary as a string. + * + * @return {String} + * @api public + */ +Binary.prototype.value = function value(asRaw) { + asRaw = asRaw == null ? false : asRaw; + + // If it's a node.js buffer object + if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { + return asRaw ? this.buffer.slice(0, this.position) : this.buffer.toString('binary', 0, this.position); + } else { + if(asRaw) { + // we support the slice command use it + if(this.buffer['slice'] != null) { + return this.buffer.slice(0, this.position); + } else { + // Create a new buffer to copy content to + var newBuffer = Object.prototype.toString.call(this.buffer) == '[object Uint8Array]' ? new Uint8Array(new ArrayBuffer(this.position)) : new Array(this.position); + // Copy content + for(var i = 0; i < this.position; i++) { + newBuffer[i] = this.buffer[i]; + } + // Return the buffer + return newBuffer; + } + } else { + return convertArraytoUtf8BinaryString(this.buffer, 0, this.position); + } + } +}; + +/** + * Length. + * + * @return {Number} the length of the binary. + * @api public + */ +Binary.prototype.length = function length() { + return this.position; +}; + +/** + * @ignore + * @api private + */ +Binary.prototype.toJSON = function() { + return this.buffer != null ? this.buffer.toString('base64') : ''; +} + +/** + * @ignore + * @api private + */ +Binary.prototype.toString = function(format) { + return this.buffer != null ? this.buffer.slice(0, this.position).toString(format) : ''; +} + +Binary.BUFFER_SIZE = 256; + +/** + * Default BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_DEFAULT = 0; +/** + * Function BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_FUNCTION = 1; +/** + * Byte Array BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_BYTE_ARRAY = 2; +/** + * OLD UUID BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_UUID_OLD = 3; +/** + * UUID BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_UUID = 4; +/** + * MD5 BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_MD5 = 5; +/** + * User BSON type + * + * @classconstant SUBTYPE_DEFAULT + **/ +Binary.SUBTYPE_USER_DEFINED = 128; + +/** + * Expose. + */ +exports.Binary = Binary; + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js new file mode 100644 index 0000000..d2fc811 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js @@ -0,0 +1,385 @@ +/** + * Binary Parser. + * Jonas Raoni Soares Silva + * http://jsfromhell.com/classes/binary-parser [v1.0] + */ +var chr = String.fromCharCode; + +var maxBits = []; +for (var i = 0; i < 64; i++) { + maxBits[i] = Math.pow(2, i); +} + +function BinaryParser (bigEndian, allowExceptions) { + if(!(this instanceof BinaryParser)) return new BinaryParser(bigEndian, allowExceptions); + + this.bigEndian = bigEndian; + this.allowExceptions = allowExceptions; +}; + +BinaryParser.warn = function warn (msg) { + if (this.allowExceptions) { + throw new Error(msg); + } + + return 1; +}; + +BinaryParser.decodeFloat = function decodeFloat (data, precisionBits, exponentBits) { + var b = new this.Buffer(this.bigEndian, data); + + b.checkBuffer(precisionBits + exponentBits + 1); + + var bias = maxBits[exponentBits - 1] - 1 + , signal = b.readBits(precisionBits + exponentBits, 1) + , exponent = b.readBits(precisionBits, exponentBits) + , significand = 0 + , divisor = 2 + , curByte = b.buffer.length + (-precisionBits >> 3) - 1; + + do { + for (var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 ); + } while (precisionBits -= startBit); + + return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 ); +}; + +BinaryParser.decodeInt = function decodeInt (data, bits, signed, forceBigEndian) { + var b = new this.Buffer(this.bigEndian || forceBigEndian, data) + , x = b.readBits(0, bits) + , max = maxBits[bits]; //max = Math.pow( 2, bits ); + + return signed && x >= max / 2 + ? x - max + : x; +}; + +BinaryParser.encodeFloat = function encodeFloat (data, precisionBits, exponentBits) { + var bias = maxBits[exponentBits - 1] - 1 + , minExp = -bias + 1 + , maxExp = bias + , minUnnormExp = minExp - precisionBits + , n = parseFloat(data) + , status = isNaN(n) || n == -Infinity || n == +Infinity ? n : 0 + , exp = 0 + , len = 2 * bias + 1 + precisionBits + 3 + , bin = new Array(len) + , signal = (n = status !== 0 ? 0 : n) < 0 + , intPart = Math.floor(n = Math.abs(n)) + , floatPart = n - intPart + , lastBit + , rounded + , result + , i + , j; + + for (i = len; i; bin[--i] = 0); + + for (i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor(intPart / 2)); + + for (i = bias + 1; floatPart > 0 && i; (bin[++i] = ((floatPart *= 2) >= 1) - 0 ) && --floatPart); + + for (i = -1; ++i < len && !bin[i];); + + if (bin[(lastBit = precisionBits - 1 + (i = (exp = bias + 1 - i) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - (exp = minExp - 1))) + 1]) { + if (!(rounded = bin[lastBit])) { + for (j = lastBit + 2; !rounded && j < len; rounded = bin[j++]); + } + + for (j = lastBit + 1; rounded && --j >= 0; (bin[j] = !bin[j] - 0) && (rounded = 0)); + } + + for (i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i];); + + if ((exp = bias + 1 - i) >= minExp && exp <= maxExp) { + ++i; + } else if (exp < minExp) { + exp != bias + 1 - len && exp < minUnnormExp && this.warn("encodeFloat::float underflow"); + i = bias + 1 - (exp = minExp - 1); + } + + if (intPart || status !== 0) { + this.warn(intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status); + exp = maxExp + 1; + i = bias + 2; + + if (status == -Infinity) { + signal = 1; + } else if (isNaN(status)) { + bin[i] = 1; + } + } + + for (n = Math.abs(exp + bias), j = exponentBits + 1, result = ""; --j; result = (n % 2) + result, n = n >>= 1); + + for (n = 0, j = 0, i = (result = (signal ? "1" : "0") + result + bin.slice(i, i + precisionBits).join("")).length, r = []; i; j = (j + 1) % 8) { + n += (1 << j) * result.charAt(--i); + if (j == 7) { + r[r.length] = String.fromCharCode(n); + n = 0; + } + } + + r[r.length] = n + ? String.fromCharCode(n) + : ""; + + return (this.bigEndian ? r.reverse() : r).join(""); +}; + +BinaryParser.encodeInt = function encodeInt (data, bits, signed, forceBigEndian) { + var max = maxBits[bits]; + + if (data >= max || data < -(max / 2)) { + this.warn("encodeInt::overflow"); + data = 0; + } + + if (data < 0) { + data += max; + } + + for (var r = []; data; r[r.length] = String.fromCharCode(data % 256), data = Math.floor(data / 256)); + + for (bits = -(-bits >> 3) - r.length; bits--; r[r.length] = "\0"); + + return ((this.bigEndian || forceBigEndian) ? r.reverse() : r).join(""); +}; + +BinaryParser.toSmall = function( data ){ return this.decodeInt( data, 8, true ); }; +BinaryParser.fromSmall = function( data ){ return this.encodeInt( data, 8, true ); }; +BinaryParser.toByte = function( data ){ return this.decodeInt( data, 8, false ); }; +BinaryParser.fromByte = function( data ){ return this.encodeInt( data, 8, false ); }; +BinaryParser.toShort = function( data ){ return this.decodeInt( data, 16, true ); }; +BinaryParser.fromShort = function( data ){ return this.encodeInt( data, 16, true ); }; +BinaryParser.toWord = function( data ){ return this.decodeInt( data, 16, false ); }; +BinaryParser.fromWord = function( data ){ return this.encodeInt( data, 16, false ); }; +BinaryParser.toInt = function( data ){ return this.decodeInt( data, 32, true ); }; +BinaryParser.fromInt = function( data ){ return this.encodeInt( data, 32, true ); }; +BinaryParser.toLong = function( data ){ return this.decodeInt( data, 64, true ); }; +BinaryParser.fromLong = function( data ){ return this.encodeInt( data, 64, true ); }; +BinaryParser.toDWord = function( data ){ return this.decodeInt( data, 32, false ); }; +BinaryParser.fromDWord = function( data ){ return this.encodeInt( data, 32, false ); }; +BinaryParser.toQWord = function( data ){ return this.decodeInt( data, 64, true ); }; +BinaryParser.fromQWord = function( data ){ return this.encodeInt( data, 64, true ); }; +BinaryParser.toFloat = function( data ){ return this.decodeFloat( data, 23, 8 ); }; +BinaryParser.fromFloat = function( data ){ return this.encodeFloat( data, 23, 8 ); }; +BinaryParser.toDouble = function( data ){ return this.decodeFloat( data, 52, 11 ); }; +BinaryParser.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11 ); }; + +// Factor out the encode so it can be shared by add_header and push_int32 +BinaryParser.encode_int32 = function encode_int32 (number, asArray) { + var a, b, c, d, unsigned; + unsigned = (number < 0) ? (number + 0x100000000) : number; + a = Math.floor(unsigned / 0xffffff); + unsigned &= 0xffffff; + b = Math.floor(unsigned / 0xffff); + unsigned &= 0xffff; + c = Math.floor(unsigned / 0xff); + unsigned &= 0xff; + d = Math.floor(unsigned); + return asArray ? [chr(a), chr(b), chr(c), chr(d)] : chr(a) + chr(b) + chr(c) + chr(d); +}; + +BinaryParser.encode_int64 = function encode_int64 (number) { + var a, b, c, d, e, f, g, h, unsigned; + unsigned = (number < 0) ? (number + 0x10000000000000000) : number; + a = Math.floor(unsigned / 0xffffffffffffff); + unsigned &= 0xffffffffffffff; + b = Math.floor(unsigned / 0xffffffffffff); + unsigned &= 0xffffffffffff; + c = Math.floor(unsigned / 0xffffffffff); + unsigned &= 0xffffffffff; + d = Math.floor(unsigned / 0xffffffff); + unsigned &= 0xffffffff; + e = Math.floor(unsigned / 0xffffff); + unsigned &= 0xffffff; + f = Math.floor(unsigned / 0xffff); + unsigned &= 0xffff; + g = Math.floor(unsigned / 0xff); + unsigned &= 0xff; + h = Math.floor(unsigned); + return chr(a) + chr(b) + chr(c) + chr(d) + chr(e) + chr(f) + chr(g) + chr(h); +}; + +/** + * UTF8 methods + */ + +// Take a raw binary string and return a utf8 string +BinaryParser.decode_utf8 = function decode_utf8 (binaryStr) { + var len = binaryStr.length + , decoded = '' + , i = 0 + , c = 0 + , c1 = 0 + , c2 = 0 + , c3; + + while (i < len) { + c = binaryStr.charCodeAt(i); + if (c < 128) { + decoded += String.fromCharCode(c); + i++; + } else if ((c > 191) && (c < 224)) { + c2 = binaryStr.charCodeAt(i+1); + decoded += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = binaryStr.charCodeAt(i+1); + c3 = binaryStr.charCodeAt(i+2); + decoded += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + + return decoded; +}; + +// Encode a cstring +BinaryParser.encode_cstring = function encode_cstring (s) { + return unescape(encodeURIComponent(s)) + BinaryParser.fromByte(0); +}; + +// Take a utf8 string and return a binary string +BinaryParser.encode_utf8 = function encode_utf8 (s) { + var a = "" + , c; + + for (var n = 0, len = s.length; n < len; n++) { + c = s.charCodeAt(n); + + if (c < 128) { + a += String.fromCharCode(c); + } else if ((c > 127) && (c < 2048)) { + a += String.fromCharCode((c>>6) | 192) ; + a += String.fromCharCode((c&63) | 128); + } else { + a += String.fromCharCode((c>>12) | 224); + a += String.fromCharCode(((c>>6) & 63) | 128); + a += String.fromCharCode((c&63) | 128); + } + } + + return a; +}; + +BinaryParser.hprint = function hprint (s) { + var number; + + for (var i = 0, len = s.length; i < len; i++) { + if (s.charCodeAt(i) < 32) { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + process.stdout.write(number + " ") + } else { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + process.stdout.write(number + " ") + } + } + + process.stdout.write("\n\n"); +}; + +BinaryParser.ilprint = function hprint (s) { + var number; + + for (var i = 0, len = s.length; i < len; i++) { + if (s.charCodeAt(i) < 32) { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(10) + : s.charCodeAt(i).toString(10); + + require('util').debug(number+' : '); + } else { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(10) + : s.charCodeAt(i).toString(10); + require('util').debug(number+' : '+ s.charAt(i)); + } + } +}; + +BinaryParser.hlprint = function hprint (s) { + var number; + + for (var i = 0, len = s.length; i < len; i++) { + if (s.charCodeAt(i) < 32) { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + require('util').debug(number+' : '); + } else { + number = s.charCodeAt(i) <= 15 + ? "0" + s.charCodeAt(i).toString(16) + : s.charCodeAt(i).toString(16); + require('util').debug(number+' : '+ s.charAt(i)); + } + } +}; + +/** + * BinaryParser buffer constructor. + */ +function BinaryParserBuffer (bigEndian, buffer) { + this.bigEndian = bigEndian || 0; + this.buffer = []; + this.setBuffer(buffer); +}; + +BinaryParserBuffer.prototype.setBuffer = function setBuffer (data) { + var l, i, b; + + if (data) { + i = l = data.length; + b = this.buffer = new Array(l); + for (; i; b[l - i] = data.charCodeAt(--i)); + this.bigEndian && b.reverse(); + } +}; + +BinaryParserBuffer.prototype.hasNeededBits = function hasNeededBits (neededBits) { + return this.buffer.length >= -(-neededBits >> 3); +}; + +BinaryParserBuffer.prototype.checkBuffer = function checkBuffer (neededBits) { + if (!this.hasNeededBits(neededBits)) { + throw new Error("checkBuffer::missing bytes"); + } +}; + +BinaryParserBuffer.prototype.readBits = function readBits (start, length) { + //shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni) + + function shl (a, b) { + for (; b--; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1); + return a; + } + + if (start < 0 || length <= 0) { + return 0; + } + + this.checkBuffer(start + length); + + var offsetLeft + , offsetRight = start % 8 + , curByte = this.buffer.length - ( start >> 3 ) - 1 + , lastByte = this.buffer.length + ( -( start + length ) >> 3 ) + , diff = curByte - lastByte + , sum = ((this.buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + (diff && (offsetLeft = (start + length) % 8) ? (this.buffer[lastByte++] & ((1 << offsetLeft) - 1)) << (diff-- << 3) - offsetRight : 0); + + for(; diff; sum += shl(this.buffer[lastByte++], (diff-- << 3) - offsetRight)); + + return sum; +}; + +/** + * Expose. + */ +BinaryParser.Buffer = BinaryParserBuffer; + +exports.BinaryParser = BinaryParser; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js new file mode 100644 index 0000000..57fdd79 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js @@ -0,0 +1,1519 @@ +var Long = require('./long').Long + , Double = require('./double').Double + , Timestamp = require('./timestamp').Timestamp + , ObjectID = require('./objectid').ObjectID + , Symbol = require('./symbol').Symbol + , Code = require('./code').Code + , MinKey = require('./min_key').MinKey + , MaxKey = require('./max_key').MaxKey + , DBRef = require('./db_ref').DBRef + , Binary = require('./binary').Binary + , BinaryParser = require('./binary_parser').BinaryParser + , writeIEEE754 = require('./float_parser').writeIEEE754 + , readIEEE754 = require('./float_parser').readIEEE754 + +// To ensure that 0.4 of node works correctly +var isDate = function isDate(d) { + return typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]'; +} + +/** + * Create a new BSON instance + * + * @class Represents the BSON Parser + * @return {BSON} instance of BSON Parser. + */ +function BSON () {}; + +/** + * @ignore + * @api private + */ +// BSON MAX VALUES +BSON.BSON_INT32_MAX = 0x7FFFFFFF; +BSON.BSON_INT32_MIN = -0x80000000; + +BSON.BSON_INT64_MAX = Math.pow(2, 63) - 1; +BSON.BSON_INT64_MIN = -Math.pow(2, 63); + +// JS MAX PRECISE VALUES +BSON.JS_INT_MAX = 0x20000000000000; // Any integer up to 2^53 can be precisely represented by a double. +BSON.JS_INT_MIN = -0x20000000000000; // Any integer down to -2^53 can be precisely represented by a double. + +// Internal long versions +var JS_INT_MAX_LONG = Long.fromNumber(0x20000000000000); // Any integer up to 2^53 can be precisely represented by a double. +var JS_INT_MIN_LONG = Long.fromNumber(-0x20000000000000); // Any integer down to -2^53 can be precisely represented by a double. + +/** + * Number BSON Type + * + * @classconstant BSON_DATA_NUMBER + **/ +BSON.BSON_DATA_NUMBER = 1; +/** + * String BSON Type + * + * @classconstant BSON_DATA_STRING + **/ +BSON.BSON_DATA_STRING = 2; +/** + * Object BSON Type + * + * @classconstant BSON_DATA_OBJECT + **/ +BSON.BSON_DATA_OBJECT = 3; +/** + * Array BSON Type + * + * @classconstant BSON_DATA_ARRAY + **/ +BSON.BSON_DATA_ARRAY = 4; +/** + * Binary BSON Type + * + * @classconstant BSON_DATA_BINARY + **/ +BSON.BSON_DATA_BINARY = 5; +/** + * ObjectID BSON Type + * + * @classconstant BSON_DATA_OID + **/ +BSON.BSON_DATA_OID = 7; +/** + * Boolean BSON Type + * + * @classconstant BSON_DATA_BOOLEAN + **/ +BSON.BSON_DATA_BOOLEAN = 8; +/** + * Date BSON Type + * + * @classconstant BSON_DATA_DATE + **/ +BSON.BSON_DATA_DATE = 9; +/** + * null BSON Type + * + * @classconstant BSON_DATA_NULL + **/ +BSON.BSON_DATA_NULL = 10; +/** + * RegExp BSON Type + * + * @classconstant BSON_DATA_REGEXP + **/ +BSON.BSON_DATA_REGEXP = 11; +/** + * Code BSON Type + * + * @classconstant BSON_DATA_CODE + **/ +BSON.BSON_DATA_CODE = 13; +/** + * Symbol BSON Type + * + * @classconstant BSON_DATA_SYMBOL + **/ +BSON.BSON_DATA_SYMBOL = 14; +/** + * Code with Scope BSON Type + * + * @classconstant BSON_DATA_CODE_W_SCOPE + **/ +BSON.BSON_DATA_CODE_W_SCOPE = 15; +/** + * 32 bit Integer BSON Type + * + * @classconstant BSON_DATA_INT + **/ +BSON.BSON_DATA_INT = 16; +/** + * Timestamp BSON Type + * + * @classconstant BSON_DATA_TIMESTAMP + **/ +BSON.BSON_DATA_TIMESTAMP = 17; +/** + * Long BSON Type + * + * @classconstant BSON_DATA_LONG + **/ +BSON.BSON_DATA_LONG = 18; +/** + * MinKey BSON Type + * + * @classconstant BSON_DATA_MIN_KEY + **/ +BSON.BSON_DATA_MIN_KEY = 0xff; +/** + * MaxKey BSON Type + * + * @classconstant BSON_DATA_MAX_KEY + **/ +BSON.BSON_DATA_MAX_KEY = 0x7f; + +/** + * Binary Default Type + * + * @classconstant BSON_BINARY_SUBTYPE_DEFAULT + **/ +BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0; +/** + * Binary Function Type + * + * @classconstant BSON_BINARY_SUBTYPE_FUNCTION + **/ +BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1; +/** + * Binary Byte Array Type + * + * @classconstant BSON_BINARY_SUBTYPE_BYTE_ARRAY + **/ +BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +/** + * Binary UUID Type + * + * @classconstant BSON_BINARY_SUBTYPE_UUID + **/ +BSON.BSON_BINARY_SUBTYPE_UUID = 3; +/** + * Binary MD5 Type + * + * @classconstant BSON_BINARY_SUBTYPE_MD5 + **/ +BSON.BSON_BINARY_SUBTYPE_MD5 = 4; +/** + * Binary User Defined Type + * + * @classconstant BSON_BINARY_SUBTYPE_USER_DEFINED + **/ +BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +/** + * Calculate the bson size for a passed in Javascript object. + * + * @param {Object} object the Javascript object to calculate the BSON byte size for. + * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. + * @return {Number} returns the number of bytes the BSON object will take up. + * @api public + */ +BSON.calculateObjectSize = function calculateObjectSize(object, serializeFunctions) { + var totalLength = (4 + 1); + + if(Array.isArray(object)) { + for(var i = 0; i < object.length; i++) { + totalLength += calculateElement(i.toString(), object[i], serializeFunctions) + } + } else { + // If we have toBSON defined, override the current object + if(object.toBSON) { + object = object.toBSON(); + } + + // Calculate size + for(var key in object) { + totalLength += calculateElement(key, object[key], serializeFunctions) + } + } + + return totalLength; +} + +/** + * @ignore + * @api private + */ +function calculateElement(name, value, serializeFunctions) { + var isBuffer = typeof Buffer !== 'undefined'; + + switch(typeof value) { + case 'string': + return 1 + (!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1 + 4 + (!isBuffer ? numberOfBytes(value) : Buffer.byteLength(value, 'utf8')) + 1; + case 'number': + if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { + if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { // 32 bit + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (4 + 1); + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } + } else { // 64 bit + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } + case 'undefined': + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); + case 'boolean': + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 1); + case 'object': + if(value == null || value instanceof MinKey || value instanceof MaxKey || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); + } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (12 + 1); + } else if(value instanceof Date || isDate(value)) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 4 + 1) + value.length; + } else if(value instanceof Long || value instanceof Double || value instanceof Timestamp + || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Double' || value['_bsontype'] == 'Timestamp') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); + } else if(value instanceof Code || value['_bsontype'] == 'Code') { + // Calculate size depending on the availability of a scope + if(value.scope != null && Object.keys(value.scope).length > 0) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1; + } + } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { + // Check what kind of subtype we have + if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1 + 4); + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1); + } + } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + ((!isBuffer ? numberOfBytes(value.value) : Buffer.byteLength(value.value, 'utf8')) + 4 + 1 + 1); + } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { + // Set up correct object for serialization + var ordered_values = { + '$ref': value.namespace + , '$id' : value.oid + }; + + // Add db reference if it exists + if(null != value.db) { + ordered_values['$db'] = value.db; + } + + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + BSON.calculateObjectSize(ordered_values, serializeFunctions); + } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 + + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 + } else { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + BSON.calculateObjectSize(value, serializeFunctions) + 1; + } + case 'function': + // WTF for 0.4.X where typeof /someregexp/ === 'function' + if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 + + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 + } else { + if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); + } else if(serializeFunctions) { + return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1; + } + } + } + + return 0; +} + +/** + * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. + * @param {Number} index the index in the buffer where we wish to start serializing into. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Number} returns the new write index in the Buffer. + * @api public + */ +BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, checkKeys, buffer, index, serializeFunctions) { + // Default setting false + serializeFunctions = serializeFunctions == null ? false : serializeFunctions; + // Write end information (length of the object) + var size = buffer.length; + // Write the size of the object + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + return serializeObject(object, checkKeys, buffer, index, serializeFunctions) - 1; +} + +/** + * @ignore + * @api private + */ +var serializeObject = function(object, checkKeys, buffer, index, serializeFunctions) { + // Process the object + if(Array.isArray(object)) { + for(var i = 0; i < object.length; i++) { + index = packElement(i.toString(), object[i], checkKeys, buffer, index, serializeFunctions); + } + } else { + // If we have toBSON defined, override the current object + if(object.toBSON) { + object = object.toBSON(); + } + + // Serialize the object + for(var key in object) { + // Check the key and throw error if it's illegal + if(checkKeys == true && (key != '$db' && key != '$ref' && key != '$id')) { + BSON.checkKey(key); + } + + // Pack the element + index = packElement(key, object[key], checkKeys, buffer, index, serializeFunctions); + } + } + + // Write zero + buffer[index++] = 0; + return index; +} + +var stringToBytes = function(str) { + var ch, st, re = []; + for (var i = 0; i < str.length; i++ ) { + ch = str.charCodeAt(i); // get char + st = []; // set up "stack" + do { + st.push( ch & 0xFF ); // push byte to stack + ch = ch >> 8; // shift value down by 1 byte + } + while ( ch ); + // add stack contents to result + // done because chars have "wrong" endianness + re = re.concat( st.reverse() ); + } + // return an array of bytes + return re; +} + +var numberOfBytes = function(str) { + var ch, st, re = 0; + for (var i = 0; i < str.length; i++ ) { + ch = str.charCodeAt(i); // get char + st = []; // set up "stack" + do { + st.push( ch & 0xFF ); // push byte to stack + ch = ch >> 8; // shift value down by 1 byte + } + while ( ch ); + // add stack contents to result + // done because chars have "wrong" endianness + re = re + st.length; + } + // return an array of bytes + return re; +} + +/** + * @ignore + * @api private + */ +var writeToTypedArray = function(buffer, string, index) { + var bytes = stringToBytes(string); + for(var i = 0; i < bytes.length; i++) { + buffer[index + i] = bytes[i]; + } + return bytes.length; +} + +/** + * @ignore + * @api private + */ +var supportsBuffer = typeof Buffer != 'undefined'; + +/** + * @ignore + * @api private + */ +var packElement = function(name, value, checkKeys, buffer, index, serializeFunctions) { + var startIndex = index; + + switch(typeof value) { + case 'string': + // Encode String type + buffer[index++] = BSON.BSON_DATA_STRING; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Calculate size + var size = supportsBuffer ? Buffer.byteLength(value) + 1 : numberOfBytes(value) + 1; + // Write the size of the string to buffer + buffer[index + 3] = (size >> 24) & 0xff; + buffer[index + 2] = (size >> 16) & 0xff; + buffer[index + 1] = (size >> 8) & 0xff; + buffer[index] = size & 0xff; + // Ajust the index + index = index + 4; + // Write the string + supportsBuffer ? buffer.write(value, index, 'utf8') : writeToTypedArray(buffer, value, index); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0; + // Return index + return index; + case 'number': + // We have an integer value + if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { + // If the value fits in 32 bits encode as int, if it fits in a double + // encode it as a double, otherwise long + if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { + // Set int type 32 bits or less + buffer[index++] = BSON.BSON_DATA_INT; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write the int value + buffer[index++] = value & 0xff; + buffer[index++] = (value >> 8) & 0xff; + buffer[index++] = (value >> 16) & 0xff; + buffer[index++] = (value >> 24) & 0xff; + } else if(value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { + // Encode as double + buffer[index++] = BSON.BSON_DATA_NUMBER; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write float + writeIEEE754(buffer, value, index, 'little', 52, 8); + // Ajust index + index = index + 8; + } else { + // Set long type + buffer[index++] = BSON.BSON_DATA_LONG; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + var longVal = Long.fromNumber(value); + var lowBits = longVal.getLowBits(); + var highBits = longVal.getHighBits(); + // Encode low bits + buffer[index++] = lowBits & 0xff; + buffer[index++] = (lowBits >> 8) & 0xff; + buffer[index++] = (lowBits >> 16) & 0xff; + buffer[index++] = (lowBits >> 24) & 0xff; + // Encode high bits + buffer[index++] = highBits & 0xff; + buffer[index++] = (highBits >> 8) & 0xff; + buffer[index++] = (highBits >> 16) & 0xff; + buffer[index++] = (highBits >> 24) & 0xff; + } + } else { + // Encode as double + buffer[index++] = BSON.BSON_DATA_NUMBER; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write float + writeIEEE754(buffer, value, index, 'little', 52, 8); + // Ajust index + index = index + 8; + } + + return index; + case 'undefined': + // Set long type + buffer[index++] = BSON.BSON_DATA_NULL; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + return index; + case 'boolean': + // Write the type + buffer[index++] = BSON.BSON_DATA_BOOLEAN; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Encode the boolean value + buffer[index++] = value ? 1 : 0; + return index; + case 'object': + if(value === null || value instanceof MinKey || value instanceof MaxKey + || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { + // Write the type of either min or max key + if(value === null) { + buffer[index++] = BSON.BSON_DATA_NULL; + } else if(value instanceof MinKey) { + buffer[index++] = BSON.BSON_DATA_MIN_KEY; + } else { + buffer[index++] = BSON.BSON_DATA_MAX_KEY; + } + + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + return index; + } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { + // Write the type + buffer[index++] = BSON.BSON_DATA_OID; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write objectid + supportsBuffer ? buffer.write(value.id, index, 'binary') : writeToTypedArray(buffer, value.id, index); + // Ajust index + index = index + 12; + return index; + } else if(value instanceof Date || isDate(value)) { + // Write the type + buffer[index++] = BSON.BSON_DATA_DATE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write the date + var dateInMilis = Long.fromNumber(value.getTime()); + var lowBits = dateInMilis.getLowBits(); + var highBits = dateInMilis.getHighBits(); + // Encode low bits + buffer[index++] = lowBits & 0xff; + buffer[index++] = (lowBits >> 8) & 0xff; + buffer[index++] = (lowBits >> 16) & 0xff; + buffer[index++] = (lowBits >> 24) & 0xff; + // Encode high bits + buffer[index++] = highBits & 0xff; + buffer[index++] = (highBits >> 8) & 0xff; + buffer[index++] = (highBits >> 16) & 0xff; + buffer[index++] = (highBits >> 24) & 0xff; + return index; + } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { + // Write the type + buffer[index++] = BSON.BSON_DATA_BINARY; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Get size of the buffer (current write point) + var size = value.length; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the default subtype + buffer[index++] = BSON.BSON_BINARY_SUBTYPE_DEFAULT; + // Copy the content form the binary field to the buffer + value.copy(buffer, index, 0, size); + // Adjust the index + index = index + size; + return index; + } else if(value instanceof Long || value instanceof Timestamp || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { + // Write the type + buffer[index++] = value instanceof Long ? BSON.BSON_DATA_LONG : BSON.BSON_DATA_TIMESTAMP; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write the date + var lowBits = value.getLowBits(); + var highBits = value.getHighBits(); + // Encode low bits + buffer[index++] = lowBits & 0xff; + buffer[index++] = (lowBits >> 8) & 0xff; + buffer[index++] = (lowBits >> 16) & 0xff; + buffer[index++] = (lowBits >> 24) & 0xff; + // Encode high bits + buffer[index++] = highBits & 0xff; + buffer[index++] = (highBits >> 8) & 0xff; + buffer[index++] = (highBits >> 16) & 0xff; + buffer[index++] = (highBits >> 24) & 0xff; + return index; + } else if(value instanceof Double || value['_bsontype'] == 'Double') { + // Encode as double + buffer[index++] = BSON.BSON_DATA_NUMBER; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Write float + writeIEEE754(buffer, value, index, 'little', 52, 8); + // Ajust index + index = index + 8; + return index; + } else if(value instanceof Code || value['_bsontype'] == 'Code') { + if(value.scope != null && Object.keys(value.scope).length > 0) { + // Write the type + buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Calculate the scope size + var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); + // Function string + var functionString = value.code.toString(); + // Function Size + var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + + // Calculate full size of the object + var totalSize = 4 + codeSize + scopeSize + 4; + + // Write the total size of the object + buffer[index++] = totalSize & 0xff; + buffer[index++] = (totalSize >> 8) & 0xff; + buffer[index++] = (totalSize >> 16) & 0xff; + buffer[index++] = (totalSize >> 24) & 0xff; + + // Write the size of the string to buffer + buffer[index++] = codeSize & 0xff; + buffer[index++] = (codeSize >> 8) & 0xff; + buffer[index++] = (codeSize >> 16) & 0xff; + buffer[index++] = (codeSize >> 24) & 0xff; + + // Write the string + supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index); + // Update index + index = index + codeSize - 1; + // Write zero + buffer[index++] = 0; + // Serialize the scope object + var scopeObjectBuffer = supportsBuffer ? new Buffer(scopeSize) : new Uint8Array(new ArrayBuffer(scopeSize)); + // Execute the serialization into a seperate buffer + serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); + + // Adjusted scope Size (removing the header) + var scopeDocSize = scopeSize; + // Write scope object size + buffer[index++] = scopeDocSize & 0xff; + buffer[index++] = (scopeDocSize >> 8) & 0xff; + buffer[index++] = (scopeDocSize >> 16) & 0xff; + buffer[index++] = (scopeDocSize >> 24) & 0xff; + + // Write the scopeObject into the buffer + supportsBuffer ? scopeObjectBuffer.copy(buffer, index, 0, scopeSize) : buffer.set(scopeObjectBuffer, index); + // Adjust index, removing the empty size of the doc (5 bytes 0000000005) + index = index + scopeDocSize - 5; + // Write trailing zero + buffer[index++] = 0; + return index + } else { + buffer[index++] = BSON.BSON_DATA_CODE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Function string + var functionString = value.code.toString(); + // Function Size + var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the string + buffer.write(functionString, index, 'utf8'); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0; + return index; + } + } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { + // Write the type + buffer[index++] = BSON.BSON_DATA_BINARY; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Extract the buffer + var data = value.value(true); + // Calculate size + var size = value.position; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the subtype to the buffer + buffer[index++] = value.sub_type; + + // If we have binary type 2 the 4 first bytes are the size + if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + } + + // Write the data to the object + supportsBuffer ? data.copy(buffer, index, 0, value.position) : buffer.set(data, index); + // Ajust index + index = index + value.position; + return index; + } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { + // Write the type + buffer[index++] = BSON.BSON_DATA_SYMBOL; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Calculate size + var size = supportsBuffer ? Buffer.byteLength(value.value) + 1 : numberOfBytes(value.value) + 1; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the string + buffer.write(value.value, index, 'utf8'); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0x00; + return index; + } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { + // Write the type + buffer[index++] = BSON.BSON_DATA_OBJECT; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Set up correct object for serialization + var ordered_values = { + '$ref': value.namespace + , '$id' : value.oid + }; + + // Add db reference if it exists + if(null != value.db) { + ordered_values['$db'] = value.db; + } + + // Message size + var size = BSON.calculateObjectSize(ordered_values, serializeFunctions); + // Serialize the object + var endIndex = BSON.serializeWithBufferAndIndex(ordered_values, checkKeys, buffer, index, serializeFunctions); + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write zero for object + buffer[endIndex++] = 0x00; + // Return the end index + return endIndex; + } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { + // Write the type + buffer[index++] = BSON.BSON_DATA_REGEXP; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write the regular expression string + supportsBuffer ? buffer.write(value.source, index, 'utf8') : writeToTypedArray(buffer, value.source, index); + // Adjust the index + index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); + // Write zero + buffer[index++] = 0x00; + // Write the parameters + if(value.global) buffer[index++] = 0x73; // s + if(value.ignoreCase) buffer[index++] = 0x69; // i + if(value.multiline) buffer[index++] = 0x6d; // m + // Add ending zero + buffer[index++] = 0x00; + return index; + } else { + // Write the type + buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Adjust the index + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + var endIndex = serializeObject(value, checkKeys, buffer, index + 4, serializeFunctions); + // Write size + var size = endIndex - index; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + return endIndex; + } + case 'function': + // WTF for 0.4.X where typeof /someregexp/ === 'function' + if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { + // Write the type + buffer[index++] = BSON.BSON_DATA_REGEXP; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + + // Write the regular expression string + buffer.write(value.source, index, 'utf8'); + // Adjust the index + index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); + // Write zero + buffer[index++] = 0x00; + // Write the parameters + if(value.global) buffer[index++] = 0x73; // s + if(value.ignoreCase) buffer[index++] = 0x69; // i + if(value.multiline) buffer[index++] = 0x6d; // m + // Add ending zero + buffer[index++] = 0x00; + return index; + } else { + if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { + // Write the type + buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Calculate the scope size + var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); + // Function string + var functionString = value.toString(); + // Function Size + var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + + // Calculate full size of the object + var totalSize = 4 + codeSize + scopeSize; + + // Write the total size of the object + buffer[index++] = totalSize & 0xff; + buffer[index++] = (totalSize >> 8) & 0xff; + buffer[index++] = (totalSize >> 16) & 0xff; + buffer[index++] = (totalSize >> 24) & 0xff; + + // Write the size of the string to buffer + buffer[index++] = codeSize & 0xff; + buffer[index++] = (codeSize >> 8) & 0xff; + buffer[index++] = (codeSize >> 16) & 0xff; + buffer[index++] = (codeSize >> 24) & 0xff; + + // Write the string + buffer.write(functionString, index, 'utf8'); + // Update index + index = index + codeSize - 1; + // Write zero + buffer[index++] = 0; + // Serialize the scope object + var scopeObjectBuffer = new Buffer(scopeSize); + // Execute the serialization into a seperate buffer + serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); + + // Adjusted scope Size (removing the header) + var scopeDocSize = scopeSize - 4; + // Write scope object size + buffer[index++] = scopeDocSize & 0xff; + buffer[index++] = (scopeDocSize >> 8) & 0xff; + buffer[index++] = (scopeDocSize >> 16) & 0xff; + buffer[index++] = (scopeDocSize >> 24) & 0xff; + + // Write the scopeObject into the buffer + scopeObjectBuffer.copy(buffer, index, 0, scopeSize); + + // Adjust index, removing the empty size of the doc (5 bytes 0000000005) + index = index + scopeDocSize - 5; + // Write trailing zero + buffer[index++] = 0; + return index + } else if(serializeFunctions) { + buffer[index++] = BSON.BSON_DATA_CODE; + // Number of written bytes + var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); + // Encode the name + index = index + numberOfWrittenBytes + 1; + buffer[index - 1] = 0; + // Function string + var functionString = value.toString(); + // Function Size + var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; + // Write the size of the string to buffer + buffer[index++] = size & 0xff; + buffer[index++] = (size >> 8) & 0xff; + buffer[index++] = (size >> 16) & 0xff; + buffer[index++] = (size >> 24) & 0xff; + // Write the string + buffer.write(functionString, index, 'utf8'); + // Update index + index = index + size - 1; + // Write zero + buffer[index++] = 0; + return index; + } + } + } + + // If no value to serialize + return index; +} + +/** + * Serialize a Javascript object. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Buffer} returns the Buffer object containing the serialized object. + * @api public + */ +BSON.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { + var buffer = null; + // Calculate the size of the object + var size = BSON.calculateObjectSize(object, serializeFunctions); + // Fetch the best available type for storing the binary data + if(buffer = typeof Buffer != 'undefined') { + buffer = new Buffer(size); + asBuffer = true; + } else if(typeof Uint8Array != 'undefined') { + buffer = new Uint8Array(new ArrayBuffer(size)); + } else { + buffer = new Array(size); + } + + // If asBuffer is false use typed arrays + BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, 0, serializeFunctions); + return buffer; +} + +/** + * Contains the function cache if we have that enable to allow for avoiding the eval step on each deserialization, comparison is by md5 + * + * @ignore + * @api private + */ +var functionCache = BSON.functionCache = {}; + +/** + * Crc state variables shared by function + * + * @ignore + * @api private + */ +var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D]; + +/** + * CRC32 hash method, Fast and enough versitility for our usage + * + * @ignore + * @api private + */ +var crc32 = function(string, start, end) { + var crc = 0 + var x = 0; + var y = 0; + crc = crc ^ (-1); + + for(var i = start, iTop = end; i < iTop;i++) { + y = (crc ^ string[i]) & 0xFF; + x = table[y]; + crc = (crc >>> 8) ^ x; + } + + return crc ^ (-1); +} + +/** + * Deserialize stream data as BSON documents. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} data the buffer containing the serialized set of BSON documents. + * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. + * @param {Number} numberOfDocuments number of documents to deserialize. + * @param {Array} documents an array where to store the deserialized documents. + * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. + * @param {Object} [options] additional options used for the deserialization. + * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. + * @api public + */ +BSON.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { + // if(numberOfDocuments !== documents.length) throw new Error("Number of expected results back is less than the number of documents"); + options = options != null ? options : {}; + var index = startIndex; + // Loop over all documents + for(var i = 0; i < numberOfDocuments; i++) { + // Find size of the document + var size = data[index] | data[index + 1] << 8 | data[index + 2] << 16 | data[index + 3] << 24; + // Update options with index + options['index'] = index; + // Parse the document at this point + documents[docStartIndex + i] = BSON.deserialize(data, options); + // Adjust index by the document size + index = index + size; + } + + // Return object containing end index of parsing and list of documents + return index; +} + +/** + * Ensure eval is isolated. + * + * @ignore + * @api private + */ +var isolateEvalWithHash = function(functionCache, hash, functionString, object) { + // Contains the value we are going to set + var value = null; + + // Check for cache hit, eval if missing and return cached function + if(functionCache[hash] == null) { + eval("value = " + functionString); + functionCache[hash] = value; + } + // Set the object + return functionCache[hash].bind(object); +} + +/** + * Ensure eval is isolated. + * + * @ignore + * @api private + */ +var isolateEval = function(functionString) { + // Contains the value we are going to set + var value = null; + // Eval the function + eval("value = " + functionString); + return value; +} + +/** + * Convert Uint8Array to String + * + * @ignore + * @api private + */ +var convertUint8ArrayToUtf8String = function(byteArray, startIndex, endIndex) { + return BinaryParser.decode_utf8(convertArraytoUtf8BinaryString(byteArray, startIndex, endIndex)); +} + +var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { + var result = ""; + for(var i = startIndex; i < endIndex; i++) { + result = result + String.fromCharCode(byteArray[i]); + } + + return result; +}; + +/** + * Deserialize data as BSON. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. + * @param {Object} [options] additional options used for the deserialization. + * @param {Boolean} [isArray] ignore used for recursive parsing. + * @return {Object} returns the deserialized Javascript Object. + * @api public + */ +BSON.deserialize = function(buffer, options, isArray) { + // Options + options = options == null ? {} : options; + var evalFunctions = options['evalFunctions'] == null ? false : options['evalFunctions']; + var cacheFunctions = options['cacheFunctions'] == null ? false : options['cacheFunctions']; + var cacheFunctionsCrc32 = options['cacheFunctionsCrc32'] == null ? false : options['cacheFunctionsCrc32']; + + // Validate that we have at least 4 bytes of buffer + if(buffer.length < 5) throw new Error("corrupt bson message < 5 bytes long"); + + // Set up index + var index = typeof options['index'] == 'number' ? options['index'] : 0; + // Reads in a C style string + var readCStyleString = function() { + // Get the start search index + var i = index; + // Locate the end of the c string + while(buffer[i] !== 0x00) { i++ } + // Grab utf8 encoded string + var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, i) : convertUint8ArrayToUtf8String(buffer, index, i); + // Update index position + index = i + 1; + // Return string + return string; + } + + // Create holding object + var object = isArray ? [] : {}; + + // Read the document size + var size = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + + // Ensure buffer is valid size + if(size < 5 || size > buffer.length) throw new Error("corrupt bson message"); + + // While we have more left data left keep parsing + while(true) { + // Read the type + var elementType = buffer[index++]; + // If we get a zero it's the last byte, exit + if(elementType == 0) break; + // Read the name of the field + var name = readCStyleString(); + // Switch on the type + switch(elementType) { + case BSON.BSON_DATA_OID: + var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('binary', index, index + 12) : convertArraytoUtf8BinaryString(buffer, index, index + 12); + // Decode the oid + object[name] = new ObjectID(string); + // Update index + index = index + 12; + break; + case BSON.BSON_DATA_STRING: + // Read the content of the field + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Add string to object + object[name] = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); + // Update parse index position + index = index + stringSize; + break; + case BSON.BSON_DATA_INT: + // Decode the 32bit value + object[name] = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + break; + case BSON.BSON_DATA_NUMBER: + // Decode the double value + object[name] = readIEEE754(buffer, index, 'little', 52, 8); + // Update the index + index = index + 8; + break; + case BSON.BSON_DATA_DATE: + // Unpack the low and high bits + var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Set date object + object[name] = new Date(new Long(lowBits, highBits).toNumber()); + break; + case BSON.BSON_DATA_BOOLEAN: + // Parse the boolean value + object[name] = buffer[index++] == 1; + break; + case BSON.BSON_DATA_NULL: + // Parse the boolean value + object[name] = null; + break; + case BSON.BSON_DATA_BINARY: + // Decode the size of the binary blob + var binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Decode the subtype + var subType = buffer[index++]; + // Decode as raw Buffer object if options specifies it + if(buffer['slice'] != null) { + // If we have subtype 2 skip the 4 bytes for the size + if(subType == Binary.SUBTYPE_BYTE_ARRAY) { + binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + } + // Slice the data + object[name] = new Binary(buffer.slice(index, index + binarySize), subType); + } else { + var _buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(binarySize)) : new Array(binarySize); + // If we have subtype 2 skip the 4 bytes for the size + if(subType == Binary.SUBTYPE_BYTE_ARRAY) { + binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + } + // Copy the data + for(var i = 0; i < binarySize; i++) { + _buffer[i] = buffer[index + i]; + } + // Create the binary object + object[name] = new Binary(_buffer, subType); + } + // Update the index + index = index + binarySize; + break; + case BSON.BSON_DATA_ARRAY: + options['index'] = index; + // Decode the size of the array document + var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; + // Set the array to the object + object[name] = BSON.deserialize(buffer, options, true); + // Adjust the index + index = index + objectSize; + break; + case BSON.BSON_DATA_OBJECT: + options['index'] = index; + // Decode the size of the object document + var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; + // Set the array to the object + object[name] = BSON.deserialize(buffer, options, false); + // Adjust the index + index = index + objectSize; + break; + case BSON.BSON_DATA_REGEXP: + // Create the regexp + var source = readCStyleString(); + var regExpOptions = readCStyleString(); + // For each option add the corresponding one for javascript + var optionsArray = new Array(regExpOptions.length); + + // Parse options + for(var i = 0; i < regExpOptions.length; i++) { + switch(regExpOptions[i]) { + case 'm': + optionsArray[i] = 'm'; + break; + case 's': + optionsArray[i] = 'g'; + break; + case 'i': + optionsArray[i] = 'i'; + break; + } + } + + object[name] = new RegExp(source, optionsArray.join('')); + break; + case BSON.BSON_DATA_LONG: + // Unpack the low and high bits + var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Create long object + var long = new Long(lowBits, highBits); + // Set the object + object[name] = long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG) ? long.toNumber() : long; + break; + case BSON.BSON_DATA_SYMBOL: + // Read the content of the field + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Add string to object + object[name] = new Symbol(buffer.toString('utf8', index, index + stringSize - 1)); + // Update parse index position + index = index + stringSize; + break; + case BSON.BSON_DATA_TIMESTAMP: + // Unpack the low and high bits + var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Set the object + object[name] = new Timestamp(lowBits, highBits); + break; + case BSON.BSON_DATA_MIN_KEY: + // Parse the object + object[name] = new MinKey(); + break; + case BSON.BSON_DATA_MAX_KEY: + // Parse the object + object[name] = new MaxKey(); + break; + case BSON.BSON_DATA_CODE: + // Read the content of the field + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Function string + var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); + + // If we are evaluating the functions + if(evalFunctions) { + // Contains the value we are going to set + var value = null; + // If we have cache enabled let's look for the md5 of the function in the cache + if(cacheFunctions) { + var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; + // Got to do this to avoid V8 deoptimizing the call due to finding eval + object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); + } else { + // Set directly + object[name] = isolateEval(functionString); + } + } else { + object[name] = new Code(functionString, {}); + } + + // Update parse index position + index = index + stringSize; + break; + case BSON.BSON_DATA_CODE_W_SCOPE: + // Read the content of the field + var totalSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; + // Javascript function + var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); + // Update parse index position + index = index + stringSize; + // Parse the element + options['index'] = index; + // Decode the size of the object document + var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; + // Decode the scope object + var scopeObject = BSON.deserialize(buffer, options, false); + // Adjust the index + index = index + objectSize; + + // If we are evaluating the functions + if(evalFunctions) { + // Contains the value we are going to set + var value = null; + // If we have cache enabled let's look for the md5 of the function in the cache + if(cacheFunctions) { + var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; + // Got to do this to avoid V8 deoptimizing the call due to finding eval + object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); + } else { + // Set directly + object[name] = isolateEval(functionString); + } + + // Set the scope on the object + object[name].scope = scopeObject; + } else { + object[name] = new Code(functionString, scopeObject); + } + + // Add string to object + break; + } + } + + // Check if we have a db ref object + if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']); + + // Return the final objects + return object; +} + +/** + * Check if key name is valid. + * + * @ignore + * @api private + */ +BSON.checkKey = function checkKey (key) { + if (!key.length) return; + // Check if we have a legal key for the object + if('$' == key[0]) { + throw Error("key " + key + " must not start with '$'"); + } else if (!!~key.indexOf('.')) { + throw Error("key " + key + " must not contain '.'"); + } +}; + +/** + * Deserialize data as BSON. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. + * @param {Object} [options] additional options used for the deserialization. + * @param {Boolean} [isArray] ignore used for recursive parsing. + * @return {Object} returns the deserialized Javascript Object. + * @api public + */ +BSON.prototype.deserialize = function(data, options) { + return BSON.deserialize(data, options); +} + +/** + * Deserialize stream data as BSON documents. + * + * Options + * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. + * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. + * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. + * + * @param {Buffer} data the buffer containing the serialized set of BSON documents. + * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. + * @param {Number} numberOfDocuments number of documents to deserialize. + * @param {Array} documents an array where to store the deserialized documents. + * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. + * @param {Object} [options] additional options used for the deserialization. + * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. + * @api public + */ +BSON.prototype.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { + return BSON.deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options); +} + +/** + * Serialize a Javascript object. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Buffer} returns the Buffer object containing the serialized object. + * @api public + */ +BSON.prototype.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { + return BSON.serialize(object, checkKeys, asBuffer, serializeFunctions); +} + +/** + * Calculate the bson size for a passed in Javascript object. + * + * @param {Object} object the Javascript object to calculate the BSON byte size for. + * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. + * @return {Number} returns the number of bytes the BSON object will take up. + * @api public + */ +BSON.prototype.calculateObjectSize = function(object, serializeFunctions) { + return BSON.calculateObjectSize(object, serializeFunctions); +} + +/** + * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. + * + * @param {Object} object the Javascript object to serialize. + * @param {Boolean} checkKeys the serializer will check if keys are valid. + * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. + * @param {Number} index the index in the buffer where we wish to start serializing into. + * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. + * @return {Number} returns the new write index in the Buffer. + * @api public + */ +BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, buffer, startIndex, serializeFunctions) { + return BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, startIndex, serializeFunctions); +} + +/** + * @ignore + * @api private + */ +exports.Code = Code; +exports.Symbol = Symbol; +exports.BSON = BSON; +exports.DBRef = DBRef; +exports.Binary = Binary; +exports.ObjectID = ObjectID; +exports.Long = Long; +exports.Timestamp = Timestamp; +exports.Double = Double; +exports.MinKey = MinKey; +exports.MaxKey = MaxKey; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js new file mode 100644 index 0000000..69b56a3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js @@ -0,0 +1,25 @@ +/** + * A class representation of the BSON Code type. + * + * @class Represents the BSON Code type. + * @param {String|Function} code a string or function. + * @param {Object} [scope] an optional scope for the function. + * @return {Code} + */ +function Code(code, scope) { + if(!(this instanceof Code)) return new Code(code, scope); + + this._bsontype = 'Code'; + this.code = code; + this.scope = scope == null ? {} : scope; +}; + +/** + * @ignore + * @api private + */ +Code.prototype.toJSON = function() { + return {scope:this.scope, code:this.code}; +} + +exports.Code = Code; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js new file mode 100644 index 0000000..56b6510 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js @@ -0,0 +1,31 @@ +/** + * A class representation of the BSON DBRef type. + * + * @class Represents the BSON DBRef type. + * @param {String} namespace the collection name. + * @param {ObjectID} oid the reference ObjectID. + * @param {String} [db] optional db name, if omitted the reference is local to the current db. + * @return {DBRef} + */ +function DBRef(namespace, oid, db) { + if(!(this instanceof DBRef)) return new DBRef(namespace, oid, db); + + this._bsontype = 'DBRef'; + this.namespace = namespace; + this.oid = oid; + this.db = db; +}; + +/** + * @ignore + * @api private + */ +DBRef.prototype.toJSON = function() { + return { + '$ref':this.namespace, + '$id':this.oid, + '$db':this.db == null ? '' : this.db + }; +} + +exports.DBRef = DBRef; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js new file mode 100644 index 0000000..ae51463 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js @@ -0,0 +1,33 @@ +/** + * A class representation of the BSON Double type. + * + * @class Represents the BSON Double type. + * @param {Number} value the number we want to represent as a double. + * @return {Double} + */ +function Double(value) { + if(!(this instanceof Double)) return new Double(value); + + this._bsontype = 'Double'; + this.value = value; +} + +/** + * Access the number value. + * + * @return {Number} returns the wrapped double number. + * @api public + */ +Double.prototype.valueOf = function() { + return this.value; +}; + +/** + * @ignore + * @api private + */ +Double.prototype.toJSON = function() { + return this.value; +} + +exports.Double = Double; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js new file mode 100644 index 0000000..6fca392 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js @@ -0,0 +1,121 @@ +// Copyright (c) 2008, Fair Oaks Labs, Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// +// Modifications to writeIEEE754 to support negative zeroes made by Brian White + +var readIEEE754 = function(buffer, offset, endian, mLen, nBytes) { + var e, m, + bBE = (endian === 'big'), + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + nBits = -7, + i = bBE ? 0 : (nBytes - 1), + d = bBE ? 1 : -1, + s = buffer[offset + i]; + + i += d; + + e = s & ((1 << (-nBits)) - 1); + s >>= (-nBits); + nBits += eLen; + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); + + m = e & ((1 << (-nBits)) - 1); + e >>= (-nBits); + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); + + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity); + } else { + m = m + Math.pow(2, mLen); + e = e - eBias; + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen); +}; + +var writeIEEE754 = function(buffer, value, offset, endian, mLen, nBytes) { + var e, m, c, + bBE = (endian === 'big'), + eLen = nBytes * 8 - mLen - 1, + eMax = (1 << eLen) - 1, + eBias = eMax >> 1, + rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), + i = bBE ? (nBytes-1) : 0, + d = bBE ? -1 : 1, + s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; + + value = Math.abs(value); + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0; + e = eMax; + } else { + e = Math.floor(Math.log(value) / Math.LN2); + if (value * (c = Math.pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e+eBias >= 1) { + value += rt / c; + } else { + value += rt * Math.pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen); + e = e + eBias; + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); + e = 0; + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); + + e = (e << mLen) | m; + eLen += mLen; + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); + + buffer[offset + i - d] |= s * 128; +}; + +exports.readIEEE754 = readIEEE754; +exports.writeIEEE754 = writeIEEE754; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js new file mode 100644 index 0000000..950fcad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js @@ -0,0 +1,74 @@ +try { + exports.BSONPure = require('./bson'); + exports.BSONNative = require('../../ext'); +} catch(err) { + // do nothing +} + +[ './binary_parser' + , './binary' + , './code' + , './db_ref' + , './double' + , './max_key' + , './min_key' + , './objectid' + , './symbol' + , './timestamp' + , './long'].forEach(function (path) { + var module = require('./' + path); + for (var i in module) { + exports[i] = module[i]; + } +}); + +// Exports all the classes for the NATIVE JS BSON Parser +exports.native = function() { + var classes = {}; + // Map all the classes + [ './binary_parser' + , './binary' + , './code' + , './db_ref' + , './double' + , './max_key' + , './min_key' + , './objectid' + , './symbol' + , './timestamp' + , './long' + , '../../ext' +].forEach(function (path) { + var module = require('./' + path); + for (var i in module) { + classes[i] = module[i]; + } + }); + // Return classes list + return classes; +} + +// Exports all the classes for the PURE JS BSON Parser +exports.pure = function() { + var classes = {}; + // Map all the classes + [ './binary_parser' + , './binary' + , './code' + , './db_ref' + , './double' + , './max_key' + , './min_key' + , './objectid' + , './symbol' + , './timestamp' + , './long' + , '././bson'].forEach(function (path) { + var module = require('./' + path); + for (var i in module) { + classes[i] = module[i]; + } + }); + // Return classes list + return classes; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js new file mode 100644 index 0000000..f8f37a6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js @@ -0,0 +1,854 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright 2009 Google Inc. All Rights Reserved + +/** + * Defines a Long class for representing a 64-bit two's-complement + * integer value, which faithfully simulates the behavior of a Java "Long". This + * implementation is derived from LongLib in GWT. + * + * Constructs a 64-bit two's-complement integer, given its low and high 32-bit + * values as *signed* integers. See the from* functions below for more + * convenient ways of constructing Longs. + * + * The internal representation of a Long is the two given signed, 32-bit values. + * We use 32-bit pieces because these are the size of integers on which + * Javascript performs bit-operations. For operations like addition and + * multiplication, we split each number into 16-bit pieces, which can easily be + * multiplied within Javascript's floating-point representation without overflow + * or change in sign. + * + * In the algorithms below, we frequently reduce the negative case to the + * positive case by negating the input(s) and then post-processing the result. + * Note that we must ALWAYS check specially whether those values are MIN_VALUE + * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as + * a positive number, it overflows back into a negative). Not handling this + * case would often result in infinite recursion. + * + * @class Represents the BSON Long type. + * @param {Number} low the low (signed) 32 bits of the Long. + * @param {Number} high the high (signed) 32 bits of the Long. + */ +function Long(low, high) { + if(!(this instanceof Long)) return new Long(low, high); + + this._bsontype = 'Long'; + /** + * @type {number} + * @api private + */ + this.low_ = low | 0; // force into 32 signed bits. + + /** + * @type {number} + * @api private + */ + this.high_ = high | 0; // force into 32 signed bits. +}; + +/** + * Return the int value. + * + * @return {Number} the value, assuming it is a 32-bit integer. + * @api public + */ +Long.prototype.toInt = function() { + return this.low_; +}; + +/** + * Return the Number value. + * + * @return {Number} the closest floating-point representation to this value. + * @api public + */ +Long.prototype.toNumber = function() { + return this.high_ * Long.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); +}; + +/** + * Return the JSON value. + * + * @return {String} the JSON representation. + * @api public + */ +Long.prototype.toJSON = function() { + return this.toString(); +} + +/** + * Return the String value. + * + * @param {Number} [opt_radix] the radix in which the text should be written. + * @return {String} the textual representation of this value. + * @api public + */ +Long.prototype.toString = function(opt_radix) { + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (this.isZero()) { + return '0'; + } + + if (this.isNegative()) { + if (this.equals(Long.MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = Long.fromNumber(radix); + var div = this.div(radixLong); + var rem = div.multiply(radixLong).subtract(this); + return div.toString(radix) + rem.toInt().toString(radix); + } else { + return '-' + this.negate().toString(radix); + } + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Long.fromNumber(Math.pow(radix, 6)); + + var rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower); + var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); + var digits = intval.toString(radix); + + rem = remDiv; + if (rem.isZero()) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } +}; + +/** + * Return the high 32-bits value. + * + * @return {Number} the high 32-bits as a signed value. + * @api public + */ +Long.prototype.getHighBits = function() { + return this.high_; +}; + +/** + * Return the low 32-bits value. + * + * @return {Number} the low 32-bits as a signed value. + * @api public + */ +Long.prototype.getLowBits = function() { + return this.low_; +}; + +/** + * Return the low unsigned 32-bits value. + * + * @return {Number} the low 32-bits as an unsigned value. + * @api public + */ +Long.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : Long.TWO_PWR_32_DBL_ + this.low_; +}; + +/** + * Returns the number of bits needed to represent the absolute value of this Long. + * + * @return {Number} Returns the number of bits needed to represent the absolute value of this Long. + * @api public + */ +Long.prototype.getNumBitsAbs = function() { + if (this.isNegative()) { + if (this.equals(Long.MIN_VALUE)) { + return 64; + } else { + return this.negate().getNumBitsAbs(); + } + } else { + var val = this.high_ != 0 ? this.high_ : this.low_; + for (var bit = 31; bit > 0; bit--) { + if ((val & (1 << bit)) != 0) { + break; + } + } + return this.high_ != 0 ? bit + 33 : bit + 1; + } +}; + +/** + * Return whether this value is zero. + * + * @return {Boolean} whether this value is zero. + * @api public + */ +Long.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; +}; + +/** + * Return whether this value is negative. + * + * @return {Boolean} whether this value is negative. + * @api public + */ +Long.prototype.isNegative = function() { + return this.high_ < 0; +}; + +/** + * Return whether this value is odd. + * + * @return {Boolean} whether this value is odd. + * @api public + */ +Long.prototype.isOdd = function() { + return (this.low_ & 1) == 1; +}; + +/** + * Return whether this Long equals the other + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long equals the other + * @api public + */ +Long.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); +}; + +/** + * Return whether this Long does not equal the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long does not equal the other. + * @api public + */ +Long.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); +}; + +/** + * Return whether this Long is less than the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is less than the other. + * @api public + */ +Long.prototype.lessThan = function(other) { + return this.compare(other) < 0; +}; + +/** + * Return whether this Long is less than or equal to the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is less than or equal to the other. + * @api public + */ +Long.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; +}; + +/** + * Return whether this Long is greater than the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is greater than the other. + * @api public + */ +Long.prototype.greaterThan = function(other) { + return this.compare(other) > 0; +}; + +/** + * Return whether this Long is greater than or equal to the other. + * + * @param {Long} other Long to compare against. + * @return {Boolean} whether this Long is greater than or equal to the other. + * @api public + */ +Long.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; +}; + +/** + * Compares this Long with the given one. + * + * @param {Long} other Long to compare against. + * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. + * @api public + */ +Long.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + // at this point, the signs are the same, so subtraction will not overflow + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } +}; + +/** + * The negation of this value. + * + * @return {Long} the negation of this value. + * @api public + */ +Long.prototype.negate = function() { + if (this.equals(Long.MIN_VALUE)) { + return Long.MIN_VALUE; + } else { + return this.not().add(Long.ONE); + } +}; + +/** + * Returns the sum of this and the given Long. + * + * @param {Long} other Long to add to this one. + * @return {Long} the sum of this and the given Long. + * @api public + */ +Long.prototype.add = function(other) { + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns the difference of this and the given Long. + * + * @param {Long} other Long to subtract from this. + * @return {Long} the difference of this and the given Long. + * @api public + */ +Long.prototype.subtract = function(other) { + return this.add(other.negate()); +}; + +/** + * Returns the product of this and the given Long. + * + * @param {Long} other Long to multiply with this. + * @return {Long} the product of this and the other. + * @api public + */ +Long.prototype.multiply = function(other) { + if (this.isZero()) { + return Long.ZERO; + } else if (other.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + return other.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } else if (other.equals(Long.MIN_VALUE)) { + return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + // If both Longs are small, use float multiplication + if (this.lessThan(Long.TWO_PWR_24_) && + other.lessThan(Long.TWO_PWR_24_)) { + return Long.fromNumber(this.toNumber() * other.toNumber()); + } + + // Divide each Long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns this Long divided by the given one. + * + * @param {Long} other Long by which to divide. + * @return {Long} this Long divided by the given one. + * @api public + */ +Long.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return Long.ZERO; + } + + if (this.equals(Long.MIN_VALUE)) { + if (other.equals(Long.ONE) || + other.equals(Long.NEG_ONE)) { + return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ONE; + } else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(Long.ZERO)) { + return other.isNegative() ? Long.ONE : Long.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(Long.MIN_VALUE)) { + return Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + var res = Long.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + var approxRes = Long.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = Long.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) { + approxRes = Long.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; +}; + +/** + * Returns this Long modulo the given one. + * + * @param {Long} other Long by which to mod. + * @return {Long} this Long modulo the given one. + * @api public + */ +Long.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); +}; + +/** + * The bitwise-NOT of this value. + * + * @return {Long} the bitwise-NOT of this value. + * @api public + */ +Long.prototype.not = function() { + return Long.fromBits(~this.low_, ~this.high_); +}; + +/** + * Returns the bitwise-AND of this Long and the given one. + * + * @param {Long} other the Long with which to AND. + * @return {Long} the bitwise-AND of this and the other. + * @api public + */ +Long.prototype.and = function(other) { + return Long.fromBits(this.low_ & other.low_, this.high_ & other.high_); +}; + +/** + * Returns the bitwise-OR of this Long and the given one. + * + * @param {Long} other the Long with which to OR. + * @return {Long} the bitwise-OR of this and the other. + * @api public + */ +Long.prototype.or = function(other) { + return Long.fromBits(this.low_ | other.low_, this.high_ | other.high_); +}; + +/** + * Returns the bitwise-XOR of this Long and the given one. + * + * @param {Long} other the Long with which to XOR. + * @return {Long} the bitwise-XOR of this and the other. + * @api public + */ +Long.prototype.xor = function(other) { + return Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Long} this shifted to the left by the given amount. + * @api public + */ +Long.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return Long.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return Long.fromBits(0, low << (numBits - 32)); + } + } +}; + +/** + * Returns this Long with bits shifted to the right by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Long} this shifted to the right by the given amount. + * @api public + */ +Long.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return Long.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } +}; + +/** + * Returns this Long with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Long} this shifted to the right by the given amount, with zeros placed into the new leading bits. + * @api public + */ +Long.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return Long.fromBits(high, 0); + } else { + return Long.fromBits(high >>> (numBits - 32), 0); + } + } +}; + +/** + * Returns a Long representing the given (32-bit) integer value. + * + * @param {Number} value the 32-bit integer in question. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Long.INT_CACHE_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Long(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Long.INT_CACHE_[value] = obj; + } + return obj; +}; + +/** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * + * @param {Number} value the number in question. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Long.ZERO; + } else if (value <= -Long.TWO_PWR_63_DBL_) { + return Long.MIN_VALUE; + } else if (value + 1 >= Long.TWO_PWR_63_DBL_) { + return Long.MAX_VALUE; + } else if (value < 0) { + return Long.fromNumber(-value).negate(); + } else { + return new Long( + (value % Long.TWO_PWR_32_DBL_) | 0, + (value / Long.TWO_PWR_32_DBL_) | 0); + } +}; + +/** + * Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. + * + * @param {Number} lowBits the low 32-bits. + * @param {Number} highBits the high 32-bits. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromBits = function(lowBits, highBits) { + return new Long(lowBits, highBits); +}; + +/** + * Returns a Long representation of the given string, written using the given radix. + * + * @param {String} str the textual representation of the Long. + * @param {Number} opt_radix the radix in which the text is written. + * @return {Long} the corresponding Long value. + * @api public + */ +Long.fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return Long.fromString(str.substring(1), radix).negate(); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character: ' + str); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Long.fromNumber(Math.pow(radix, 8)); + + var result = Long.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = Long.fromNumber(Math.pow(radix, size)); + result = result.multiply(power).add(Long.fromNumber(value)); + } else { + result = result.multiply(radixToPower); + result = result.add(Long.fromNumber(value)); + } + } + return result; +}; + +// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the +// from* methods on which they depend. + + +/** + * A cache of the Long representations of small integer values. + * @type {Object} + * @api private + */ +Long.INT_CACHE_ = {}; + +// NOTE: the compiler should inline these constant values below and then remove +// these variables, so there should be no runtime penalty for these. + +/** + * Number used repeated below in calculations. This must appear before the + * first call to any from* function below. + * @type {number} + * @api private + */ +Long.TWO_PWR_16_DBL_ = 1 << 16; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_24_DBL_ = 1 << 24; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_32_DBL_ = Long.TWO_PWR_16_DBL_ * Long.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_31_DBL_ = Long.TWO_PWR_32_DBL_ / 2; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_48_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_64_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_32_DBL_; + +/** + * @type {number} + * @api private + */ +Long.TWO_PWR_63_DBL_ = Long.TWO_PWR_64_DBL_ / 2; + +/** @type {Long} */ +Long.ZERO = Long.fromInt(0); + +/** @type {Long} */ +Long.ONE = Long.fromInt(1); + +/** @type {Long} */ +Long.NEG_ONE = Long.fromInt(-1); + +/** @type {Long} */ +Long.MAX_VALUE = + Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); + +/** @type {Long} */ +Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0); + +/** + * @type {Long} + * @api private + */ +Long.TWO_PWR_24_ = Long.fromInt(1 << 24); + +/** + * Expose. + */ +exports.Long = Long; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js new file mode 100644 index 0000000..0825408 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js @@ -0,0 +1,13 @@ +/** + * A class representation of the BSON MaxKey type. + * + * @class Represents the BSON MaxKey type. + * @return {MaxKey} + */ +function MaxKey() { + if(!(this instanceof MaxKey)) return new MaxKey(); + + this._bsontype = 'MaxKey'; +} + +exports.MaxKey = MaxKey; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js new file mode 100644 index 0000000..230c2e6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js @@ -0,0 +1,13 @@ +/** + * A class representation of the BSON MinKey type. + * + * @class Represents the BSON MinKey type. + * @return {MinKey} + */ +function MinKey() { + if(!(this instanceof MinKey)) return new MinKey(); + + this._bsontype = 'MinKey'; +} + +exports.MinKey = MinKey; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js new file mode 100644 index 0000000..1ff9a83 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js @@ -0,0 +1,253 @@ +/** + * Module dependencies. + */ +var BinaryParser = require('./binary_parser').BinaryParser; + +/** + * Machine id. + * + * Create a random 3-byte value (i.e. unique for this + * process). Other drivers use a md5 of the machine id here, but + * that would mean an asyc call to gethostname, so we don't bother. + */ +var MACHINE_ID = parseInt(Math.random() * 0xFFFFFF, 10); + +// Regular expression that checks for hex value +var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$"); + +/** +* Create a new ObjectID instance +* +* @class Represents the BSON ObjectID type +* @param {String|Number} id Can be a 24 byte hex string, 12 byte binary string or a Number. +* @return {Object} instance of ObjectID. +*/ +var ObjectID = function ObjectID(id, _hex) { + if(!(this instanceof ObjectID)) return new ObjectID(id, _hex); + + this._bsontype = 'ObjectID'; + var __id = null; + + // Throw an error if it's not a valid setup + if(id != null && 'number' != typeof id && (id.length != 12 && id.length != 24)) + throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); + + // Generate id based on the input + if(id == null || typeof id == 'number') { + // convert to 12 byte binary string + this.id = this.generate(id); + } else if(id != null && id.length === 12) { + // assume 12 byte string + this.id = id; + } else if(checkForHexRegExp.test(id)) { + return ObjectID.createFromHexString(id); + } else if(!checkForHexRegExp.test(id)) { + throw new Error("Value passed in is not a valid 24 character hex string"); + } + + if(ObjectID.cacheHexString) this.__id = this.toHexString(); +}; + +// Allow usage of ObjectId aswell as ObjectID +var ObjectId = ObjectID; + +/** +* Return the ObjectID id as a 24 byte hex string representation +* +* @return {String} return the 24 byte hex string representation. +* @api public +*/ +ObjectID.prototype.toHexString = function() { + if(ObjectID.cacheHexString && this.__id) return this.__id; + + var hexString = '' + , number + , value; + + for (var index = 0, len = this.id.length; index < len; index++) { + value = BinaryParser.toByte(this.id[index]); + number = value <= 15 + ? '0' + value.toString(16) + : value.toString(16); + hexString = hexString + number; + } + + if(ObjectID.cacheHexString) this.__id = hexString; + return hexString; +}; + +/** +* Update the ObjectID index used in generating new ObjectID's on the driver +* +* @return {Number} returns next index value. +* @api private +*/ +ObjectID.prototype.get_inc = function() { + return ObjectID.index = (ObjectID.index + 1) % 0xFFFFFF; +}; + +/** +* Update the ObjectID index used in generating new ObjectID's on the driver +* +* @return {Number} returns next index value. +* @api private +*/ +ObjectID.prototype.getInc = function() { + return this.get_inc(); +}; + +/** +* Generate a 12 byte id string used in ObjectID's +* +* @param {Number} [time] optional parameter allowing to pass in a second based timestamp. +* @return {String} return the 12 byte id binary string. +* @api private +*/ +ObjectID.prototype.generate = function(time) { + if ('number' == typeof time) { + var time4Bytes = BinaryParser.encodeInt(time, 32, true, true); + /* for time-based ObjectID the bytes following the time will be zeroed */ + var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); + var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); + var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); + } else { + var unixTime = parseInt(Date.now()/1000,10); + var time4Bytes = BinaryParser.encodeInt(unixTime, 32, true, true); + var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); + var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); + var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); + } + + return time4Bytes + machine3Bytes + pid2Bytes + index3Bytes; +}; + +/** +* Converts the id into a 24 byte hex string for printing +* +* @return {String} return the 24 byte hex string representation. +* @api private +*/ +ObjectID.prototype.toString = function() { + return this.toHexString(); +}; + +/** +* Converts to a string representation of this Id. +* +* @return {String} return the 24 byte hex string representation. +* @api private +*/ +ObjectID.prototype.inspect = ObjectID.prototype.toString; + +/** +* Converts to its JSON representation. +* +* @return {String} return the 24 byte hex string representation. +* @api private +*/ +ObjectID.prototype.toJSON = function() { + return this.toHexString(); +}; + +/** +* Compares the equality of this ObjectID with `otherID`. +* +* @param {Object} otherID ObjectID instance to compare against. +* @return {Bool} the result of comparing two ObjectID's +* @api public +*/ +ObjectID.prototype.equals = function equals (otherID) { + var id = (otherID instanceof ObjectID || otherID.toHexString) + ? otherID.id + : ObjectID.createFromHexString(otherID).id; + + return this.id === id; +} + +/** +* Returns the generation time in seconds that this ID was generated. +* +* @return {Number} return number of seconds in the timestamp part of the 12 byte id. +* @api public +*/ +ObjectID.prototype.getTimestamp = function() { + var timestamp = new Date(); + timestamp.setTime(Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)) * 1000); + return timestamp; +} + +/** +* @ignore +* @api private +*/ +ObjectID.index = 0; + +ObjectID.createPk = function createPk () { + return new ObjectID(); +}; + +/** +* Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID. +* +* @param {Number} time an integer number representing a number of seconds. +* @return {ObjectID} return the created ObjectID +* @api public +*/ +ObjectID.createFromTime = function createFromTime (time) { + var id = BinaryParser.encodeInt(time, 32, true, true) + + BinaryParser.encodeInt(0, 64, true, true); + return new ObjectID(id); +}; + +/** +* Creates an ObjectID from a hex string representation of an ObjectID. +* +* @param {String} hexString create a ObjectID from a passed in 24 byte hexstring. +* @return {ObjectID} return the created ObjectID +* @api public +*/ +ObjectID.createFromHexString = function createFromHexString (hexString) { + // Throw an error if it's not a valid setup + if(typeof hexString === 'undefined' || hexString != null && hexString.length != 24) + throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); + + var len = hexString.length; + + if(len > 12*2) { + throw new Error('Id cannot be longer than 12 bytes'); + } + + var result = '' + , string + , number; + + for (var index = 0; index < len; index += 2) { + string = hexString.substr(index, 2); + number = parseInt(string, 16); + result += BinaryParser.fromByte(number); + } + + return new ObjectID(result, hexString); +}; + +/** +* @ignore +*/ +Object.defineProperty(ObjectID.prototype, "generationTime", { + enumerable: true + , get: function () { + return Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)); + } + , set: function (value) { + var value = BinaryParser.encodeInt(value, 32, true, true); + this.id = value + this.id.substr(4); + // delete this.__id; + this.toHexString(); + } +}); + +/** + * Expose. + */ +exports.ObjectID = ObjectID; +exports.ObjectId = ObjectID; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js new file mode 100644 index 0000000..8e2838d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js @@ -0,0 +1,48 @@ +/** + * A class representation of the BSON Symbol type. + * + * @class Represents the BSON Symbol type. + * @param {String} value the string representing the symbol. + * @return {Symbol} + */ +function Symbol(value) { + if(!(this instanceof Symbol)) return new Symbol(value); + this._bsontype = 'Symbol'; + this.value = value; +} + +/** + * Access the wrapped string value. + * + * @return {String} returns the wrapped string. + * @api public + */ +Symbol.prototype.valueOf = function() { + return this.value; +}; + +/** + * @ignore + * @api private + */ +Symbol.prototype.toString = function() { + return this.value; +} + +/** + * @ignore + * @api private + */ +Symbol.prototype.inspect = function() { + return this.value; +} + +/** + * @ignore + * @api private + */ +Symbol.prototype.toJSON = function() { + return this.value; +} + +exports.Symbol = Symbol; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js new file mode 100644 index 0000000..c650d15 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js @@ -0,0 +1,853 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Copyright 2009 Google Inc. All Rights Reserved + +/** + * Defines a Timestamp class for representing a 64-bit two's-complement + * integer value, which faithfully simulates the behavior of a Java "Timestamp". This + * implementation is derived from TimestampLib in GWT. + * + * Constructs a 64-bit two's-complement integer, given its low and high 32-bit + * values as *signed* integers. See the from* functions below for more + * convenient ways of constructing Timestamps. + * + * The internal representation of a Timestamp is the two given signed, 32-bit values. + * We use 32-bit pieces because these are the size of integers on which + * Javascript performs bit-operations. For operations like addition and + * multiplication, we split each number into 16-bit pieces, which can easily be + * multiplied within Javascript's floating-point representation without overflow + * or change in sign. + * + * In the algorithms below, we frequently reduce the negative case to the + * positive case by negating the input(s) and then post-processing the result. + * Note that we must ALWAYS check specially whether those values are MIN_VALUE + * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as + * a positive number, it overflows back into a negative). Not handling this + * case would often result in infinite recursion. + * + * @class Represents the BSON Timestamp type. + * @param {Number} low the low (signed) 32 bits of the Timestamp. + * @param {Number} high the high (signed) 32 bits of the Timestamp. + */ +function Timestamp(low, high) { + if(!(this instanceof Timestamp)) return new Timestamp(low, high); + this._bsontype = 'Timestamp'; + /** + * @type {number} + * @api private + */ + this.low_ = low | 0; // force into 32 signed bits. + + /** + * @type {number} + * @api private + */ + this.high_ = high | 0; // force into 32 signed bits. +}; + +/** + * Return the int value. + * + * @return {Number} the value, assuming it is a 32-bit integer. + * @api public + */ +Timestamp.prototype.toInt = function() { + return this.low_; +}; + +/** + * Return the Number value. + * + * @return {Number} the closest floating-point representation to this value. + * @api public + */ +Timestamp.prototype.toNumber = function() { + return this.high_ * Timestamp.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); +}; + +/** + * Return the JSON value. + * + * @return {String} the JSON representation. + * @api public + */ +Timestamp.prototype.toJSON = function() { + return this.toString(); +} + +/** + * Return the String value. + * + * @param {Number} [opt_radix] the radix in which the text should be written. + * @return {String} the textual representation of this value. + * @api public + */ +Timestamp.prototype.toString = function(opt_radix) { + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (this.isZero()) { + return '0'; + } + + if (this.isNegative()) { + if (this.equals(Timestamp.MIN_VALUE)) { + // We need to change the Timestamp value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixTimestamp = Timestamp.fromNumber(radix); + var div = this.div(radixTimestamp); + var rem = div.multiply(radixTimestamp).subtract(this); + return div.toString(radix) + rem.toInt().toString(radix); + } else { + return '-' + this.negate().toString(radix); + } + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Timestamp.fromNumber(Math.pow(radix, 6)); + + var rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower); + var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); + var digits = intval.toString(radix); + + rem = remDiv; + if (rem.isZero()) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } +}; + +/** + * Return the high 32-bits value. + * + * @return {Number} the high 32-bits as a signed value. + * @api public + */ +Timestamp.prototype.getHighBits = function() { + return this.high_; +}; + +/** + * Return the low 32-bits value. + * + * @return {Number} the low 32-bits as a signed value. + * @api public + */ +Timestamp.prototype.getLowBits = function() { + return this.low_; +}; + +/** + * Return the low unsigned 32-bits value. + * + * @return {Number} the low 32-bits as an unsigned value. + * @api public + */ +Timestamp.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : Timestamp.TWO_PWR_32_DBL_ + this.low_; +}; + +/** + * Returns the number of bits needed to represent the absolute value of this Timestamp. + * + * @return {Number} Returns the number of bits needed to represent the absolute value of this Timestamp. + * @api public + */ +Timestamp.prototype.getNumBitsAbs = function() { + if (this.isNegative()) { + if (this.equals(Timestamp.MIN_VALUE)) { + return 64; + } else { + return this.negate().getNumBitsAbs(); + } + } else { + var val = this.high_ != 0 ? this.high_ : this.low_; + for (var bit = 31; bit > 0; bit--) { + if ((val & (1 << bit)) != 0) { + break; + } + } + return this.high_ != 0 ? bit + 33 : bit + 1; + } +}; + +/** + * Return whether this value is zero. + * + * @return {Boolean} whether this value is zero. + * @api public + */ +Timestamp.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; +}; + +/** + * Return whether this value is negative. + * + * @return {Boolean} whether this value is negative. + * @api public + */ +Timestamp.prototype.isNegative = function() { + return this.high_ < 0; +}; + +/** + * Return whether this value is odd. + * + * @return {Boolean} whether this value is odd. + * @api public + */ +Timestamp.prototype.isOdd = function() { + return (this.low_ & 1) == 1; +}; + +/** + * Return whether this Timestamp equals the other + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp equals the other + * @api public + */ +Timestamp.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); +}; + +/** + * Return whether this Timestamp does not equal the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp does not equal the other. + * @api public + */ +Timestamp.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); +}; + +/** + * Return whether this Timestamp is less than the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is less than the other. + * @api public + */ +Timestamp.prototype.lessThan = function(other) { + return this.compare(other) < 0; +}; + +/** + * Return whether this Timestamp is less than or equal to the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is less than or equal to the other. + * @api public + */ +Timestamp.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; +}; + +/** + * Return whether this Timestamp is greater than the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is greater than the other. + * @api public + */ +Timestamp.prototype.greaterThan = function(other) { + return this.compare(other) > 0; +}; + +/** + * Return whether this Timestamp is greater than or equal to the other. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} whether this Timestamp is greater than or equal to the other. + * @api public + */ +Timestamp.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; +}; + +/** + * Compares this Timestamp with the given one. + * + * @param {Timestamp} other Timestamp to compare against. + * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. + * @api public + */ +Timestamp.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + // at this point, the signs are the same, so subtraction will not overflow + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } +}; + +/** + * The negation of this value. + * + * @return {Timestamp} the negation of this value. + * @api public + */ +Timestamp.prototype.negate = function() { + if (this.equals(Timestamp.MIN_VALUE)) { + return Timestamp.MIN_VALUE; + } else { + return this.not().add(Timestamp.ONE); + } +}; + +/** + * Returns the sum of this and the given Timestamp. + * + * @param {Timestamp} other Timestamp to add to this one. + * @return {Timestamp} the sum of this and the given Timestamp. + * @api public + */ +Timestamp.prototype.add = function(other) { + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns the difference of this and the given Timestamp. + * + * @param {Timestamp} other Timestamp to subtract from this. + * @return {Timestamp} the difference of this and the given Timestamp. + * @api public + */ +Timestamp.prototype.subtract = function(other) { + return this.add(other.negate()); +}; + +/** + * Returns the product of this and the given Timestamp. + * + * @param {Timestamp} other Timestamp to multiply with this. + * @return {Timestamp} the product of this and the other. + * @api public + */ +Timestamp.prototype.multiply = function(other) { + if (this.isZero()) { + return Timestamp.ZERO; + } else if (other.isZero()) { + return Timestamp.ZERO; + } + + if (this.equals(Timestamp.MIN_VALUE)) { + return other.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; + } else if (other.equals(Timestamp.MIN_VALUE)) { + return this.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + // If both Timestamps are small, use float multiplication + if (this.lessThan(Timestamp.TWO_PWR_24_) && + other.lessThan(Timestamp.TWO_PWR_24_)) { + return Timestamp.fromNumber(this.toNumber() * other.toNumber()); + } + + // Divide each Timestamp into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); +}; + +/** + * Returns this Timestamp divided by the given one. + * + * @param {Timestamp} other Timestamp by which to divide. + * @return {Timestamp} this Timestamp divided by the given one. + * @api public + */ +Timestamp.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return Timestamp.ZERO; + } + + if (this.equals(Timestamp.MIN_VALUE)) { + if (other.equals(Timestamp.ONE) || + other.equals(Timestamp.NEG_ONE)) { + return Timestamp.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + } else if (other.equals(Timestamp.MIN_VALUE)) { + return Timestamp.ONE; + } else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(Timestamp.ZERO)) { + return other.isNegative() ? Timestamp.ONE : Timestamp.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(Timestamp.MIN_VALUE)) { + return Timestamp.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + var res = Timestamp.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + var approxRes = Timestamp.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = Timestamp.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) { + approxRes = Timestamp.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; +}; + +/** + * Returns this Timestamp modulo the given one. + * + * @param {Timestamp} other Timestamp by which to mod. + * @return {Timestamp} this Timestamp modulo the given one. + * @api public + */ +Timestamp.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); +}; + +/** + * The bitwise-NOT of this value. + * + * @return {Timestamp} the bitwise-NOT of this value. + * @api public + */ +Timestamp.prototype.not = function() { + return Timestamp.fromBits(~this.low_, ~this.high_); +}; + +/** + * Returns the bitwise-AND of this Timestamp and the given one. + * + * @param {Timestamp} other the Timestamp with which to AND. + * @return {Timestamp} the bitwise-AND of this and the other. + * @api public + */ +Timestamp.prototype.and = function(other) { + return Timestamp.fromBits(this.low_ & other.low_, this.high_ & other.high_); +}; + +/** + * Returns the bitwise-OR of this Timestamp and the given one. + * + * @param {Timestamp} other the Timestamp with which to OR. + * @return {Timestamp} the bitwise-OR of this and the other. + * @api public + */ +Timestamp.prototype.or = function(other) { + return Timestamp.fromBits(this.low_ | other.low_, this.high_ | other.high_); +}; + +/** + * Returns the bitwise-XOR of this Timestamp and the given one. + * + * @param {Timestamp} other the Timestamp with which to XOR. + * @return {Timestamp} the bitwise-XOR of this and the other. + * @api public + */ +Timestamp.prototype.xor = function(other) { + return Timestamp.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); +}; + +/** + * Returns this Timestamp with bits shifted to the left by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Timestamp} this shifted to the left by the given amount. + * @api public + */ +Timestamp.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return Timestamp.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return Timestamp.fromBits(0, low << (numBits - 32)); + } + } +}; + +/** + * Returns this Timestamp with bits shifted to the right by the given amount. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Timestamp} this shifted to the right by the given amount. + * @api public + */ +Timestamp.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Timestamp.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return Timestamp.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } +}; + +/** + * Returns this Timestamp with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. + * + * @param {Number} numBits the number of bits by which to shift. + * @return {Timestamp} this shifted to the right by the given amount, with zeros placed into the new leading bits. + * @api public + */ +Timestamp.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return Timestamp.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return Timestamp.fromBits(high, 0); + } else { + return Timestamp.fromBits(high >>> (numBits - 32), 0); + } + } +}; + +/** + * Returns a Timestamp representing the given (32-bit) integer value. + * + * @param {Number} value the 32-bit integer in question. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = Timestamp.INT_CACHE_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new Timestamp(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + Timestamp.INT_CACHE_[value] = obj; + } + return obj; +}; + +/** + * Returns a Timestamp representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * + * @param {Number} value the number in question. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return Timestamp.ZERO; + } else if (value <= -Timestamp.TWO_PWR_63_DBL_) { + return Timestamp.MIN_VALUE; + } else if (value + 1 >= Timestamp.TWO_PWR_63_DBL_) { + return Timestamp.MAX_VALUE; + } else if (value < 0) { + return Timestamp.fromNumber(-value).negate(); + } else { + return new Timestamp( + (value % Timestamp.TWO_PWR_32_DBL_) | 0, + (value / Timestamp.TWO_PWR_32_DBL_) | 0); + } +}; + +/** + * Returns a Timestamp representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. + * + * @param {Number} lowBits the low 32-bits. + * @param {Number} highBits the high 32-bits. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromBits = function(lowBits, highBits) { + return new Timestamp(lowBits, highBits); +}; + +/** + * Returns a Timestamp representation of the given string, written using the given radix. + * + * @param {String} str the textual representation of the Timestamp. + * @param {Number} opt_radix the radix in which the text is written. + * @return {Timestamp} the corresponding Timestamp value. + * @api public + */ +Timestamp.fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return Timestamp.fromString(str.substring(1), radix).negate(); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character: ' + str); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = Timestamp.fromNumber(Math.pow(radix, 8)); + + var result = Timestamp.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = Timestamp.fromNumber(Math.pow(radix, size)); + result = result.multiply(power).add(Timestamp.fromNumber(value)); + } else { + result = result.multiply(radixToPower); + result = result.add(Timestamp.fromNumber(value)); + } + } + return result; +}; + +// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the +// from* methods on which they depend. + + +/** + * A cache of the Timestamp representations of small integer values. + * @type {Object} + * @api private + */ +Timestamp.INT_CACHE_ = {}; + +// NOTE: the compiler should inline these constant values below and then remove +// these variables, so there should be no runtime penalty for these. + +/** + * Number used repeated below in calculations. This must appear before the + * first call to any from* function below. + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_16_DBL_ = 1 << 16; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_24_DBL_ = 1 << 24; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_32_DBL_ = Timestamp.TWO_PWR_16_DBL_ * Timestamp.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_31_DBL_ = Timestamp.TWO_PWR_32_DBL_ / 2; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_48_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_16_DBL_; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_64_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_32_DBL_; + +/** + * @type {number} + * @api private + */ +Timestamp.TWO_PWR_63_DBL_ = Timestamp.TWO_PWR_64_DBL_ / 2; + +/** @type {Timestamp} */ +Timestamp.ZERO = Timestamp.fromInt(0); + +/** @type {Timestamp} */ +Timestamp.ONE = Timestamp.fromInt(1); + +/** @type {Timestamp} */ +Timestamp.NEG_ONE = Timestamp.fromInt(-1); + +/** @type {Timestamp} */ +Timestamp.MAX_VALUE = + Timestamp.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); + +/** @type {Timestamp} */ +Timestamp.MIN_VALUE = Timestamp.fromBits(0, 0x80000000 | 0); + +/** + * @type {Timestamp} + * @api private + */ +Timestamp.TWO_PWR_24_ = Timestamp.fromInt(1 << 24); + +/** + * Expose. + */ +exports.Timestamp = Timestamp; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json new file mode 100644 index 0000000..602a592 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json @@ -0,0 +1,55 @@ +{ + "name": "bson", + "description": "A bson parser for node.js and the browser", + "keywords": [ + "mongodb", + "bson", + "parser" + ], + "version": "0.1.8", + "author": { + "name": "Christian Amor Kvalheim", + "email": "christkv@gmail.com" + }, + "contributors": [], + "repository": { + "type": "git", + "url": "git://github.com/mongodb/js-bson.git" + }, + "bugs": { + "url": "https://github.com/mongodb/js-bson/issues" + }, + "devDependencies": { + "nodeunit": "0.7.3", + "gleak": "0.2.3", + "one": "latest" + }, + "config": { + "native": false + }, + "main": "./lib/bson/index", + "directories": { + "lib": "./lib/bson" + }, + "engines": { + "node": ">=0.6.19" + }, + "scripts": { + "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)", + "test": "nodeunit ./test/node && TEST_NATIVE=TRUE nodeunit ./test/node" + }, + "licenses": [ + { + "type": "Apache License, Version 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + } + ], + "readme": "A JS/C++ Bson parser for node, used in the MongoDB Native driver", + "readmeFilename": "README.md", + "_id": "bson@0.1.8", + "dist": { + "shasum": "4ab351f3b9717724526733f0f74d54727d4d5fbf" + }, + "_from": "bson@0.1.8", + "_resolved": "https://registry.npmjs.org/bson/-/bson-0.1.8.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm new file mode 100644 index 0000000..4ee148b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js new file mode 100644 index 0000000..84d8ffc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js @@ -0,0 +1,260 @@ +this.bson_test = { + 'Full document serialization and deserialization': function (test) { + var motherOfAllDocuments = { + 'string': "客家话", + 'array': [1,2,3], + 'hash': {'a':1, 'b':2}, + 'date': new Date(), + 'oid': new ObjectID(), + 'binary': new Binary('hello world'), + 'int': 42, + 'float': 33.3333, + 'regexp': /regexp/, + 'boolean': true, + 'long': Long.fromNumber(100), + 'where': new Code('this.a > i', {i:1}), + 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), + 'minkey': new MinKey(), + 'maxkey': new MaxKey() + } + + // Let's serialize it + var data = BSON.serialize(motherOfAllDocuments, true, true, false); + // Deserialize the object + var object = BSON.deserialize(data); + + // Asserts + test.equal(Utf8.decode(motherOfAllDocuments.string), object.string); + test.deepEqual(motherOfAllDocuments.array, object.array); + test.deepEqual(motherOfAllDocuments.date, object.date); + test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); + test.ok(assertArrayEqual(motherOfAllDocuments.binary.value(true), object.binary.value(true))); + test.deepEqual(motherOfAllDocuments.int, object.int); + test.deepEqual(motherOfAllDocuments.float, object.float); + test.deepEqual(motherOfAllDocuments.regexp, object.regexp); + test.deepEqual(motherOfAllDocuments.boolean, object.boolean); + test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); + test.deepEqual(motherOfAllDocuments.where, object.where); + test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); + test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); + test.deepEqual(motherOfAllDocuments.minkey, object.minkey); + test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); + test.done(); + }, + + 'exercise all the binary object constructor methods': function (test) { + // Construct using array + var string = 'hello world'; + // String to array + var array = stringToArrayBuffer(string); + + // Binary from array buffer + var binary = new Binary(stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + test.ok(assertArrayEqual(array, binary.buffer)); + + // Construct using number of chars + binary = new Binary(5); + test.ok(5, binary.buffer.length); + + // Construct using an Array + var binary = new Binary(stringToArray(string)); + test.ok(string.length, binary.buffer.length); + test.ok(assertArrayEqual(array, binary.buffer)); + + // Construct using a string + var binary = new Binary(string); + test.ok(string.length, binary.buffer.length); + test.ok(assertArrayEqual(array, binary.buffer)); + test.done(); + }, + + 'exercise the put binary object method for an instance when using Uint8Array': function (test) { + // Construct using array + var string = 'hello world'; + // String to array + var array = stringToArrayBuffer(string + 'a'); + + // Binary from array buffer + var binary = new Binary(stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + + // Write a byte to the array + binary.put('a') + + // Verify that the data was writtencorrectly + test.equal(string.length + 1, binary.position); + test.ok(assertArrayEqual(array, binary.value(true))); + test.equal('hello worlda', binary.value()); + + // Exercise a binary with lots of space in the buffer + var binary = new Binary(); + test.ok(Binary.BUFFER_SIZE, binary.buffer.length); + + // Write a byte to the array + binary.put('a') + + // Verify that the data was writtencorrectly + test.equal(1, binary.position); + test.ok(assertArrayEqual(['a'.charCodeAt(0)], binary.value(true))); + test.equal('a', binary.value()); + test.done(); + }, + + 'exercise the write binary object method for an instance when using Uint8Array': function (test) { + // Construct using array + var string = 'hello world'; + // Array + var writeArrayBuffer = new Uint8Array(new ArrayBuffer(1)); + writeArrayBuffer[0] = 'a'.charCodeAt(0); + var arrayBuffer = ['a'.charCodeAt(0)]; + + // Binary from array buffer + var binary = new Binary(stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + + // Write a string starting at end of buffer + binary.write('a'); + test.equal('hello worlda', binary.value()); + // Write a string starting at index 0 + binary.write('a', 0); + test.equal('aello worlda', binary.value()); + // Write a arraybuffer starting at end of buffer + binary.write(writeArrayBuffer); + test.equal('aello worldaa', binary.value()); + // Write a arraybuffer starting at position 5 + binary.write(writeArrayBuffer, 5); + test.equal('aelloaworldaa', binary.value()); + // Write a array starting at end of buffer + binary.write(arrayBuffer); + test.equal('aelloaworldaaa', binary.value()); + // Write a array starting at position 6 + binary.write(arrayBuffer, 6); + test.equal('aelloaaorldaaa', binary.value()); + test.done(); + }, + + 'exercise the read binary object method for an instance when using Uint8Array': function (test) { + // Construct using array + var string = 'hello world'; + var array = stringToArrayBuffer(string); + + // Binary from array buffer + var binary = new Binary(stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + + // Read the first 2 bytes + var data = binary.read(0, 2); + test.ok(assertArrayEqual(stringToArrayBuffer('he'), data)); + + // Read the entire field + var data = binary.read(0); + test.ok(assertArrayEqual(stringToArrayBuffer(string), data)); + + // Read 3 bytes + var data = binary.read(6, 5); + test.ok(assertArrayEqual(stringToArrayBuffer('world'), data)); + test.done(); + }, + + 'Should correctly handle toBson function for an object': function(test) { + // Test object + var doc = { + hello: new ObjectID(), + a:1 + }; + // Add a toBson method to the object + doc.toBSON = function() { + return {b:1}; + } + + // Serialize the data + var serialized_data = BSON.serialize(doc, false, true); + var deserialized_doc = BSON.deserialize(serialized_data); + test.equal(1, deserialized_doc.b); + test.done(); + } +}; + +var assertArrayEqual = function(array1, array2) { + if(array1.length != array2.length) return false; + for(var i = 0; i < array1.length; i++) { + if(array1[i] != array2[i]) return false; + } + + return true; +} + +// String to arraybuffer +var stringToArrayBuffer = function(string) { + var dataBuffer = new Uint8Array(new ArrayBuffer(string.length)); + // Return the strings + for(var i = 0; i < string.length; i++) { + dataBuffer[i] = string.charCodeAt(i); + } + // Return the data buffer + return dataBuffer; +} + +// String to arraybuffer +var stringToArray = function(string) { + var dataBuffer = new Array(string.length); + // Return the strings + for(var i = 0; i < string.length; i++) { + dataBuffer[i] = string.charCodeAt(i); + } + // Return the data buffer + return dataBuffer; +} + +var Utf8 = { + // public method for url encoding + encode : function (string) { + string = string.replace(/\r\n/g,"\n"); + var utftext = ""; + + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c); + } else if((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + + } + + return utftext; + }, + + // public method for url decoding + decode : function (utftext) { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while ( i < utftext.length ) { + c = utftext.charCodeAt(i); + if(c < 128) { + string += String.fromCharCode(c); + i++; + } else if((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i+1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = utftext.charCodeAt(i+1); + c3 = utftext.charCodeAt(i+2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + return string; + } +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js new file mode 100644 index 0000000..af7fd0b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js @@ -0,0 +1,2034 @@ +/*! + * Nodeunit + * https://github.com/caolan/nodeunit + * Copyright (c) 2010 Caolan McMahon + * MIT Licensed + * + * json2.js + * http://www.JSON.org/json2.js + * Public Domain. + * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + */ +nodeunit = (function(){ +/* + http://www.JSON.org/json2.js + 2010-11-17 + + Public Domain. + + NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. + + See http://www.JSON.org/js.html + + + This code should be minified before deployment. + See http://javascript.crockford.com/jsmin.html + + USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO + NOT CONTROL. + + + This file creates a global JSON object containing two methods: stringify + and parse. + + JSON.stringify(value, replacer, space) + value any JavaScript value, usually an object or array. + + replacer an optional parameter that determines how object + values are stringified for objects. It can be a + function or an array of strings. + + space an optional parameter that specifies the indentation + of nested structures. If it is omitted, the text will + be packed without extra whitespace. If it is a number, + it will specify the number of spaces to indent at each + level. If it is a string (such as '\t' or ' '), + it contains the characters used to indent at each level. + + This method produces a JSON text from a JavaScript value. + + When an object value is found, if the object contains a toJSON + method, its toJSON method will be called and the result will be + stringified. A toJSON method does not serialize: it returns the + value represented by the name/value pair that should be serialized, + or undefined if nothing should be serialized. The toJSON method + will be passed the key associated with the value, and this will be + bound to the value + + For example, this would serialize Dates as ISO strings. + + Date.prototype.toJSON = function (key) { + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + return this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z'; + }; + + You can provide an optional replacer method. It will be passed the + key and value of each member, with this bound to the containing + object. The value that is returned from your method will be + serialized. If your method returns undefined, then the member will + be excluded from the serialization. + + If the replacer parameter is an array of strings, then it will be + used to select the members to be serialized. It filters the results + such that only members with keys listed in the replacer array are + stringified. + + Values that do not have JSON representations, such as undefined or + functions, will not be serialized. Such values in objects will be + dropped; in arrays they will be replaced with null. You can use + a replacer function to replace those with JSON values. + JSON.stringify(undefined) returns undefined. + + The optional space parameter produces a stringification of the + value that is filled with line breaks and indentation to make it + easier to read. + + If the space parameter is a non-empty string, then that string will + be used for indentation. If the space parameter is a number, then + the indentation will be that many spaces. + + Example: + + text = JSON.stringify(['e', {pluribus: 'unum'}]); + // text is '["e",{"pluribus":"unum"}]' + + + text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); + // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' + + text = JSON.stringify([new Date()], function (key, value) { + return this[key] instanceof Date ? + 'Date(' + this[key] + ')' : value; + }); + // text is '["Date(---current time---)"]' + + + JSON.parse(text, reviver) + This method parses a JSON text to produce an object or array. + It can throw a SyntaxError exception. + + The optional reviver parameter is a function that can filter and + transform the results. It receives each of the keys and values, + and its return value is used instead of the original value. + If it returns what it received, then the structure is not modified. + If it returns undefined then the member is deleted. + + Example: + + // Parse the text. Values that look like ISO date strings will + // be converted to Date objects. + + myData = JSON.parse(text, function (key, value) { + var a; + if (typeof value === 'string') { + a = +/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); + if (a) { + return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], + +a[5], +a[6])); + } + } + return value; + }); + + myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { + var d; + if (typeof value === 'string' && + value.slice(0, 5) === 'Date(' && + value.slice(-1) === ')') { + d = new Date(value.slice(5, -1)); + if (d) { + return d; + } + } + return value; + }); + + + This is a reference implementation. You are free to copy, modify, or + redistribute. +*/ + +/*jslint evil: true, strict: false, regexp: false */ + +/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, + call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, + getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, + lastIndex, length, parse, prototype, push, replace, slice, stringify, + test, toJSON, toString, valueOf +*/ + + +// Create a JSON object only if one does not already exist. We create the +// methods in a closure to avoid creating global variables. + +var JSON = {}; + +(function () { + "use strict"; + + function f(n) { + // Format integers to have at least two digits. + return n < 10 ? '0' + n : n; + } + + if (typeof Date.prototype.toJSON !== 'function') { + + Date.prototype.toJSON = function (key) { + + return isFinite(this.valueOf()) ? + this.getUTCFullYear() + '-' + + f(this.getUTCMonth() + 1) + '-' + + f(this.getUTCDate()) + 'T' + + f(this.getUTCHours()) + ':' + + f(this.getUTCMinutes()) + ':' + + f(this.getUTCSeconds()) + 'Z' : null; + }; + + String.prototype.toJSON = + Number.prototype.toJSON = + Boolean.prototype.toJSON = function (key) { + return this.valueOf(); + }; + } + + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + gap, + indent, + meta = { // table of character substitutions + '\b': '\\b', + '\t': '\\t', + '\n': '\\n', + '\f': '\\f', + '\r': '\\r', + '"' : '\\"', + '\\': '\\\\' + }, + rep; + + + function quote(string) { + +// If the string contains no control characters, no quote characters, and no +// backslash characters, then we can safely slap some quotes around it. +// Otherwise we must also replace the offending characters with safe escape +// sequences. + + escapable.lastIndex = 0; + return escapable.test(string) ? + '"' + string.replace(escapable, function (a) { + var c = meta[a]; + return typeof c === 'string' ? c : + '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }) + '"' : + '"' + string + '"'; + } + + + function str(key, holder) { + +// Produce a string from holder[key]. + + var i, // The loop counter. + k, // The member key. + v, // The member value. + length, + mind = gap, + partial, + value = holder[key]; + +// If the value has a toJSON method, call it to obtain a replacement value. + + if (value && typeof value === 'object' && + typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + +// If we were called with a replacer function, then call the replacer to +// obtain a replacement value. + + if (typeof rep === 'function') { + value = rep.call(holder, key, value); + } + +// What happens next depends on the value's type. + + switch (typeof value) { + case 'string': + return quote(value); + + case 'number': + +// JSON numbers must be finite. Encode non-finite numbers as null. + + return isFinite(value) ? String(value) : 'null'; + + case 'boolean': + case 'null': + +// If the value is a boolean or null, convert it to a string. Note: +// typeof null does not produce 'null'. The case is included here in +// the remote chance that this gets fixed someday. + + return String(value); + +// If the type is 'object', we might be dealing with an object or an array or +// null. + + case 'object': + +// Due to a specification blunder in ECMAScript, typeof null is 'object', +// so watch out for that case. + + if (!value) { + return 'null'; + } + +// Make an array to hold the partial results of stringifying this object value. + + gap += indent; + partial = []; + +// Is the value an array? + + if (Object.prototype.toString.apply(value) === '[object Array]') { + +// The value is an array. Stringify every element. Use null as a placeholder +// for non-JSON values. + + length = value.length; + for (i = 0; i < length; i += 1) { + partial[i] = str(i, value) || 'null'; + } + +// Join all of the elements together, separated with commas, and wrap them in +// brackets. + + v = partial.length === 0 ? '[]' : + gap ? '[\n' + gap + + partial.join(',\n' + gap) + '\n' + + mind + ']' : + '[' + partial.join(',') + ']'; + gap = mind; + return v; + } + +// If the replacer is an array, use it to select the members to be stringified. + + if (rep && typeof rep === 'object') { + length = rep.length; + for (i = 0; i < length; i += 1) { + k = rep[i]; + if (typeof k === 'string') { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } else { + +// Otherwise, iterate through all of the keys in the object. + + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = str(k, value); + if (v) { + partial.push(quote(k) + (gap ? ': ' : ':') + v); + } + } + } + } + +// Join all of the member texts together, separated with commas, +// and wrap them in braces. + + v = partial.length === 0 ? '{}' : + gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + + mind + '}' : '{' + partial.join(',') + '}'; + gap = mind; + return v; + } + } + +// If the JSON object does not yet have a stringify method, give it one. + + if (typeof JSON.stringify !== 'function') { + JSON.stringify = function (value, replacer, space) { + +// The stringify method takes a value and an optional replacer, and an optional +// space parameter, and returns a JSON text. The replacer can be a function +// that can replace values, or an array of strings that will select the keys. +// A default replacer method can be provided. Use of the space parameter can +// produce text that is more easily readable. + + var i; + gap = ''; + indent = ''; + +// If the space parameter is a number, make an indent string containing that +// many spaces. + + if (typeof space === 'number') { + for (i = 0; i < space; i += 1) { + indent += ' '; + } + +// If the space parameter is a string, it will be used as the indent string. + + } else if (typeof space === 'string') { + indent = space; + } + +// If there is a replacer, it must be a function or an array. +// Otherwise, throw an error. + + rep = replacer; + if (replacer && typeof replacer !== 'function' && + (typeof replacer !== 'object' || + typeof replacer.length !== 'number')) { + throw new Error('JSON.stringify'); + } + +// Make a fake root object containing our value under the key of ''. +// Return the result of stringifying the value. + + return str('', {'': value}); + }; + } + + +// If the JSON object does not yet have a parse method, give it one. + + if (typeof JSON.parse !== 'function') { + JSON.parse = function (text, reviver) { + +// The parse method takes a text and an optional reviver function, and returns +// a JavaScript value if the text is a valid JSON text. + + var j; + + function walk(holder, key) { + +// The walk method is used to recursively walk the resulting structure so +// that modifications can be made. + + var k, v, value = holder[key]; + if (value && typeof value === 'object') { + for (k in value) { + if (Object.hasOwnProperty.call(value, k)) { + v = walk(value, k); + if (v !== undefined) { + value[k] = v; + } else { + delete value[k]; + } + } + } + } + return reviver.call(holder, key, value); + } + + +// Parsing happens in four stages. In the first stage, we replace certain +// Unicode characters with escape sequences. JavaScript handles many characters +// incorrectly, either silently deleting them, or treating them as line endings. + + text = String(text); + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + +// In the second stage, we run the text against regular expressions that look +// for non-JSON patterns. We are especially concerned with '()' and 'new' +// because they can cause invocation, and '=' because it can cause mutation. +// But just to be safe, we want to reject all unexpected forms. + +// We split the second stage into 4 regexp operations in order to work around +// crippling inefficiencies in IE's and Safari's regexp engines. First we +// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we +// replace all simple value tokens with ']' characters. Third, we delete all +// open brackets that follow a colon or comma or that begin the text. Finally, +// we look to see that the remaining characters are only whitespace or ']' or +// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. + + if (/^[\],:{}\s]*$/ +.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') +.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') +.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + +// In the third stage we use the eval function to compile the text into a +// JavaScript structure. The '{' operator is subject to a syntactic ambiguity +// in JavaScript: it can begin a block or an object literal. We wrap the text +// in parens to eliminate the ambiguity. + + j = eval('(' + text + ')'); + +// In the optional fourth stage, we recursively walk the new structure, passing +// each name/value pair to a reviver function for possible transformation. + + return typeof reviver === 'function' ? + walk({'': j}, '') : j; + } + +// If the text is not JSON parseable, then a SyntaxError is thrown. + + throw new SyntaxError('JSON.parse'); + }; + } +}()); +var assert = this.assert = {}; +var types = {}; +var core = {}; +var nodeunit = {}; +var reporter = {}; +/*global setTimeout: false, console: false */ +(function () { + + var async = {}; + + // global on the server, window in the browser + var root = this, + previous_async = root.async; + + if (typeof module !== 'undefined' && module.exports) { + module.exports = async; + } + else { + root.async = async; + } + + async.noConflict = function () { + root.async = previous_async; + return async; + }; + + //// cross-browser compatiblity functions //// + + var _forEach = function (arr, iterator) { + if (arr.forEach) { + return arr.forEach(iterator); + } + for (var i = 0; i < arr.length; i += 1) { + iterator(arr[i], i, arr); + } + }; + + var _map = function (arr, iterator) { + if (arr.map) { + return arr.map(iterator); + } + var results = []; + _forEach(arr, function (x, i, a) { + results.push(iterator(x, i, a)); + }); + return results; + }; + + var _reduce = function (arr, iterator, memo) { + if (arr.reduce) { + return arr.reduce(iterator, memo); + } + _forEach(arr, function (x, i, a) { + memo = iterator(memo, x, i, a); + }); + return memo; + }; + + var _keys = function (obj) { + if (Object.keys) { + return Object.keys(obj); + } + var keys = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + keys.push(k); + } + } + return keys; + }; + + var _indexOf = function (arr, item) { + if (arr.indexOf) { + return arr.indexOf(item); + } + for (var i = 0; i < arr.length; i += 1) { + if (arr[i] === item) { + return i; + } + } + return -1; + }; + + //// exported async module functions //// + + //// nextTick implementation with browser-compatible fallback //// + if (typeof process === 'undefined' || !(process.nextTick)) { + async.nextTick = function (fn) { + setTimeout(fn, 0); + }; + } + else { + async.nextTick = process.nextTick; + } + + async.forEach = function (arr, iterator, callback) { + if (!arr.length) { + return callback(); + } + var completed = 0; + _forEach(arr, function (x) { + iterator(x, function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed === arr.length) { + callback(); + } + } + }); + }); + }; + + async.forEachSeries = function (arr, iterator, callback) { + if (!arr.length) { + return callback(); + } + var completed = 0; + var iterate = function () { + iterator(arr[completed], function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + completed += 1; + if (completed === arr.length) { + callback(); + } + else { + iterate(); + } + } + }); + }; + iterate(); + }; + + + var doParallel = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.forEach].concat(args)); + }; + }; + var doSeries = function (fn) { + return function () { + var args = Array.prototype.slice.call(arguments); + return fn.apply(null, [async.forEachSeries].concat(args)); + }; + }; + + + var _asyncMap = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (err, v) { + results[x.index] = v; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + }; + async.map = doParallel(_asyncMap); + async.mapSeries = doSeries(_asyncMap); + + + // reduce only has a series version, as doing reduce in parallel won't + // work in many situations. + async.reduce = function (arr, memo, iterator, callback) { + async.forEachSeries(arr, function (x, callback) { + iterator(memo, x, function (err, v) { + memo = v; + callback(err); + }); + }, function (err) { + callback(err, memo); + }); + }; + // inject alias + async.inject = async.reduce; + // foldl alias + async.foldl = async.reduce; + + async.reduceRight = function (arr, memo, iterator, callback) { + var reversed = _map(arr, function (x) { + return x; + }).reverse(); + async.reduce(reversed, memo, iterator, callback); + }; + // foldr alias + async.foldr = async.reduceRight; + + var _filter = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.filter = doParallel(_filter); + async.filterSeries = doSeries(_filter); + // select alias + async.select = async.filter; + async.selectSeries = async.filterSeries; + + var _reject = function (eachfn, arr, iterator, callback) { + var results = []; + arr = _map(arr, function (x, i) { + return {index: i, value: x}; + }); + eachfn(arr, function (x, callback) { + iterator(x.value, function (v) { + if (!v) { + results.push(x); + } + callback(); + }); + }, function (err) { + callback(_map(results.sort(function (a, b) { + return a.index - b.index; + }), function (x) { + return x.value; + })); + }); + }; + async.reject = doParallel(_reject); + async.rejectSeries = doSeries(_reject); + + var _detect = function (eachfn, arr, iterator, main_callback) { + eachfn(arr, function (x, callback) { + iterator(x, function (result) { + if (result) { + main_callback(x); + } + else { + callback(); + } + }); + }, function (err) { + main_callback(); + }); + }; + async.detect = doParallel(_detect); + async.detectSeries = doSeries(_detect); + + async.some = function (arr, iterator, main_callback) { + async.forEach(arr, function (x, callback) { + iterator(x, function (v) { + if (v) { + main_callback(true); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(false); + }); + }; + // any alias + async.any = async.some; + + async.every = function (arr, iterator, main_callback) { + async.forEach(arr, function (x, callback) { + iterator(x, function (v) { + if (!v) { + main_callback(false); + main_callback = function () {}; + } + callback(); + }); + }, function (err) { + main_callback(true); + }); + }; + // all alias + async.all = async.every; + + async.sortBy = function (arr, iterator, callback) { + async.map(arr, function (x, callback) { + iterator(x, function (err, criteria) { + if (err) { + callback(err); + } + else { + callback(null, {value: x, criteria: criteria}); + } + }); + }, function (err, results) { + if (err) { + return callback(err); + } + else { + var fn = function (left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }; + callback(null, _map(results.sort(fn), function (x) { + return x.value; + })); + } + }); + }; + + async.auto = function (tasks, callback) { + callback = callback || function () {}; + var keys = _keys(tasks); + if (!keys.length) { + return callback(null); + } + + var completed = []; + + var listeners = []; + var addListener = function (fn) { + listeners.unshift(fn); + }; + var removeListener = function (fn) { + for (var i = 0; i < listeners.length; i += 1) { + if (listeners[i] === fn) { + listeners.splice(i, 1); + return; + } + } + }; + var taskComplete = function () { + _forEach(listeners, function (fn) { + fn(); + }); + }; + + addListener(function () { + if (completed.length === keys.length) { + callback(null); + } + }); + + _forEach(keys, function (k) { + var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; + var taskCallback = function (err) { + if (err) { + callback(err); + // stop subsequent errors hitting callback multiple times + callback = function () {}; + } + else { + completed.push(k); + taskComplete(); + } + }; + var requires = task.slice(0, Math.abs(task.length - 1)) || []; + var ready = function () { + return _reduce(requires, function (a, x) { + return (a && _indexOf(completed, x) !== -1); + }, true); + }; + if (ready()) { + task[task.length - 1](taskCallback); + } + else { + var listener = function () { + if (ready()) { + removeListener(listener); + task[task.length - 1](taskCallback); + } + }; + addListener(listener); + } + }); + }; + + async.waterfall = function (tasks, callback) { + if (!tasks.length) { + return callback(); + } + callback = callback || function () {}; + var wrapIterator = function (iterator) { + return function (err) { + if (err) { + callback(err); + callback = function () {}; + } + else { + var args = Array.prototype.slice.call(arguments, 1); + var next = iterator.next(); + if (next) { + args.push(wrapIterator(next)); + } + else { + args.push(callback); + } + async.nextTick(function () { + iterator.apply(null, args); + }); + } + }; + }; + wrapIterator(async.iterator(tasks))(); + }; + + async.parallel = function (tasks, callback) { + callback = callback || function () {}; + if (tasks.constructor === Array) { + async.map(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args || null); + }); + } + }, callback); + } + else { + var results = {}; + async.forEach(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.series = function (tasks, callback) { + callback = callback || function () {}; + if (tasks.constructor === Array) { + async.mapSeries(tasks, function (fn, callback) { + if (fn) { + fn(function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + callback.call(null, err, args || null); + }); + } + }, callback); + } + else { + var results = {}; + async.forEachSeries(_keys(tasks), function (k, callback) { + tasks[k](function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (args.length <= 1) { + args = args[0]; + } + results[k] = args; + callback(err); + }); + }, function (err) { + callback(err, results); + }); + } + }; + + async.iterator = function (tasks) { + var makeCallback = function (index) { + var fn = function () { + if (tasks.length) { + tasks[index].apply(null, arguments); + } + return fn.next(); + }; + fn.next = function () { + return (index < tasks.length - 1) ? makeCallback(index + 1): null; + }; + return fn; + }; + return makeCallback(0); + }; + + async.apply = function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return fn.apply( + null, args.concat(Array.prototype.slice.call(arguments)) + ); + }; + }; + + var _concat = function (eachfn, arr, fn, callback) { + var r = []; + eachfn(arr, function (x, cb) { + fn(x, function (err, y) { + r = r.concat(y || []); + cb(err); + }); + }, function (err) { + callback(err, r); + }); + }; + async.concat = doParallel(_concat); + async.concatSeries = doSeries(_concat); + + async.whilst = function (test, iterator, callback) { + if (test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.whilst(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.until = function (test, iterator, callback) { + if (!test()) { + iterator(function (err) { + if (err) { + return callback(err); + } + async.until(test, iterator, callback); + }); + } + else { + callback(); + } + }; + + async.queue = function (worker, concurrency) { + var workers = 0; + var tasks = []; + var q = { + concurrency: concurrency, + push: function (data, callback) { + tasks.push({data: data, callback: callback}); + async.nextTick(q.process); + }, + process: function () { + if (workers < q.concurrency && tasks.length) { + var task = tasks.splice(0, 1)[0]; + workers += 1; + worker(task.data, function () { + workers -= 1; + if (task.callback) { + task.callback.apply(task, arguments); + } + q.process(); + }); + } + }, + length: function () { + return tasks.length; + } + }; + return q; + }; + + var _console_fn = function (name) { + return function (fn) { + var args = Array.prototype.slice.call(arguments, 1); + fn.apply(null, args.concat([function (err) { + var args = Array.prototype.slice.call(arguments, 1); + if (typeof console !== 'undefined') { + if (err) { + if (console.error) { + console.error(err); + } + } + else if (console[name]) { + _forEach(args, function (x) { + console[name](x); + }); + } + } + }])); + }; + }; + async.log = _console_fn('log'); + async.dir = _console_fn('dir'); + /*async.info = _console_fn('info'); + async.warn = _console_fn('warn'); + async.error = _console_fn('error');*/ + + async.memoize = function (fn, hasher) { + var memo = {}; + hasher = hasher || function (x) { + return x; + }; + return function () { + var args = Array.prototype.slice.call(arguments); + var callback = args.pop(); + var key = hasher.apply(null, args); + if (key in memo) { + callback.apply(null, memo[key]); + } + else { + fn.apply(null, args.concat([function () { + memo[key] = arguments; + callback.apply(null, arguments); + }])); + } + }; + }; + +}()); +(function(exports){ +/** + * This file is based on the node.js assert module, but with some small + * changes for browser-compatibility + * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! + */ + + +/** + * Added for browser compatibility + */ + +var _keys = function(obj){ + if(Object.keys) return Object.keys(obj); + if (typeof obj != 'object' && typeof obj != 'function') { + throw new TypeError('-'); + } + var keys = []; + for(var k in obj){ + if(obj.hasOwnProperty(k)) keys.push(k); + } + return keys; +}; + + + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +var pSlice = Array.prototype.slice; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = exports; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({message: message, actual: actual, expected: expected}) + +assert.AssertionError = function AssertionError (options) { + this.name = "AssertionError"; + this.message = options.message; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } +}; +// code from util.inherits in node +assert.AssertionError.super_ = Error; + + +// EDITED FOR BROWSER COMPATIBILITY: replaced Object.create call +// TODO: test what effect this may have +var ctor = function () { this.constructor = assert.AssertionError; }; +ctor.prototype = Error.prototype; +assert.AssertionError.prototype = new ctor(); + + +assert.AssertionError.prototype.toString = function() { + if (this.message) { + return [this.name+":", this.message].join(' '); + } else { + return [ this.name+":" + , JSON.stringify(this.expected ) + , this.operator + , JSON.stringify(this.actual) + ].join(" "); + } +}; + +// assert.AssertionError instanceof Error + +assert.AssertionError.__proto__ = Error.prototype; + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +assert.ok = function ok(value, message) { + if (!!!value) fail(value, true, message, "==", assert.ok); +}; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, "==", assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, "!=", assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, "deepEqual", assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (actual instanceof Date && expected instanceof Date) { + return actual.getTime() === expected.getTime(); + + // 7.3. Other pairs that do not both pass typeof value == "object", + // equivalence is determined by ==. + } else if (typeof actual != 'object' && typeof expected != 'object') { + return actual == expected; + + // 7.4. For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical "prototype" property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isUndefinedOrNull (value) { + return value === null || value === undefined; +} + +function isArguments (object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv (a, b) { + if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) + return false; + // an identical "prototype" property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + try{ + var ka = _keys(a), + kb = _keys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key] )) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, "notDeepEqual", assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, "===", assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as determined by !==. +// assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, "!==", assert.notStrictEqual); + } +}; + +function _throws (shouldThrow, block, err, message) { + var exception = null, + threw = false, + typematters = true; + + message = message || ""; + + //handle optional arguments + if (arguments.length == 3) { + if (typeof(err) == "string") { + message = err; + typematters = false; + } + } else if (arguments.length == 2) { + typematters = false; + } + + try { + block(); + } catch (e) { + threw = true; + exception = e; + } + + if (shouldThrow && !threw) { + fail( "Missing expected exception" + + (err && err.name ? " ("+err.name+")." : '.') + + (message ? " " + message : "") + ); + } + if (!shouldThrow && threw && typematters && exception instanceof err) { + fail( "Got unwanted exception" + + (err && err.name ? " ("+err.name+")." : '.') + + (message ? " " + message : "") + ); + } + if ((shouldThrow && threw && typematters && !(exception instanceof err)) || + (!shouldThrow && threw)) { + throw exception; + } +}; + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function (err) { if (err) {throw err;}}; +})(assert); +(function(exports){ +/*! + * Nodeunit + * Copyright (c) 2010 Caolan McMahon + * MIT Licensed + * + * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! + * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. + * Only code on that line will be removed, its mostly to avoid requiring code + * that is node specific + */ + +/** + * Module dependencies + */ + +//var assert = require('./assert'), //@REMOVE_LINE_FOR_BROWSER +// async = require('../deps/async'); //@REMOVE_LINE_FOR_BROWSER + + +/** + * Creates assertion objects representing the result of an assert call. + * Accepts an object or AssertionError as its argument. + * + * @param {object} obj + * @api public + */ + +exports.assertion = function (obj) { + return { + method: obj.method || '', + message: obj.message || (obj.error && obj.error.message) || '', + error: obj.error, + passed: function () { + return !this.error; + }, + failed: function () { + return Boolean(this.error); + } + }; +}; + +/** + * Creates an assertion list object representing a group of assertions. + * Accepts an array of assertion objects. + * + * @param {Array} arr + * @param {Number} duration + * @api public + */ + +exports.assertionList = function (arr, duration) { + var that = arr || []; + that.failures = function () { + var failures = 0; + for (var i = 0; i < this.length; i += 1) { + if (this[i].failed()) { + failures += 1; + } + } + return failures; + }; + that.passes = function () { + return that.length - that.failures(); + }; + that.duration = duration || 0; + return that; +}; + +/** + * Create a wrapper function for assert module methods. Executes a callback + * after the it's complete with an assertion object representing the result. + * + * @param {Function} callback + * @api private + */ + +var assertWrapper = function (callback) { + return function (new_method, assert_method, arity) { + return function () { + var message = arguments[arity - 1]; + var a = exports.assertion({method: new_method, message: message}); + try { + assert[assert_method].apply(null, arguments); + } + catch (e) { + a.error = e; + } + callback(a); + }; + }; +}; + +/** + * Creates the 'test' object that gets passed to every test function. + * Accepts the name of the test function as its first argument, followed by + * the start time in ms, the options object and a callback function. + * + * @param {String} name + * @param {Number} start + * @param {Object} options + * @param {Function} callback + * @api public + */ + +exports.test = function (name, start, options, callback) { + var expecting; + var a_list = []; + + var wrapAssert = assertWrapper(function (a) { + a_list.push(a); + if (options.log) { + async.nextTick(function () { + options.log(a); + }); + } + }); + + var test = { + done: function (err) { + if (expecting !== undefined && expecting !== a_list.length) { + var e = new Error( + 'Expected ' + expecting + ' assertions, ' + + a_list.length + ' ran' + ); + var a1 = exports.assertion({method: 'expect', error: e}); + a_list.push(a1); + if (options.log) { + async.nextTick(function () { + options.log(a1); + }); + } + } + if (err) { + var a2 = exports.assertion({error: err}); + a_list.push(a2); + if (options.log) { + async.nextTick(function () { + options.log(a2); + }); + } + } + var end = new Date().getTime(); + async.nextTick(function () { + var assertion_list = exports.assertionList(a_list, end - start); + options.testDone(name, assertion_list); + callback(null, a_list); + }); + }, + ok: wrapAssert('ok', 'ok', 2), + same: wrapAssert('same', 'deepEqual', 3), + equals: wrapAssert('equals', 'equal', 3), + expect: function (num) { + expecting = num; + }, + _assertion_list: a_list + }; + // add all functions from the assert module + for (var k in assert) { + if (assert.hasOwnProperty(k)) { + test[k] = wrapAssert(k, k, assert[k].length); + } + } + return test; +}; + +/** + * Ensures an options object has all callbacks, adding empty callback functions + * if any are missing. + * + * @param {Object} opt + * @return {Object} + * @api public + */ + +exports.options = function (opt) { + var optionalCallback = function (name) { + opt[name] = opt[name] || function () {}; + }; + + optionalCallback('moduleStart'); + optionalCallback('moduleDone'); + optionalCallback('testStart'); + optionalCallback('testDone'); + //optionalCallback('log'); + + // 'done' callback is not optional. + + return opt; +}; +})(types); +(function(exports){ +/*! + * Nodeunit + * Copyright (c) 2010 Caolan McMahon + * MIT Licensed + * + * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! + * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. + * Only code on that line will be removed, its mostly to avoid requiring code + * that is node specific + */ + +/** + * Module dependencies + */ + +//var async = require('../deps/async'), //@REMOVE_LINE_FOR_BROWSER +// types = require('./types'); //@REMOVE_LINE_FOR_BROWSER + + +/** + * Added for browser compatibility + */ + +var _keys = function (obj) { + if (Object.keys) { + return Object.keys(obj); + } + var keys = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + keys.push(k); + } + } + return keys; +}; + + +var _copy = function (obj) { + var nobj = {}; + var keys = _keys(obj); + for (var i = 0; i < keys.length; i += 1) { + nobj[keys[i]] = obj[keys[i]]; + } + return nobj; +}; + + +/** + * Runs a test function (fn) from a loaded module. After the test function + * calls test.done(), the callback is executed with an assertionList as its + * second argument. + * + * @param {String} name + * @param {Function} fn + * @param {Object} opt + * @param {Function} callback + * @api public + */ + +exports.runTest = function (name, fn, opt, callback) { + var options = types.options(opt); + + options.testStart(name); + var start = new Date().getTime(); + var test = types.test(name, start, options, callback); + + try { + fn(test); + } + catch (e) { + test.done(e); + } +}; + +/** + * Takes an object containing test functions or other test suites as properties + * and runs each in series. After all tests have completed, the callback is + * called with a list of all assertions as the second argument. + * + * If a name is passed to this function it is prepended to all test and suite + * names that run within it. + * + * @param {String} name + * @param {Object} suite + * @param {Object} opt + * @param {Function} callback + * @api public + */ + +exports.runSuite = function (name, suite, opt, callback) { + var keys = _keys(suite); + + async.concatSeries(keys, function (k, cb) { + var prop = suite[k], _name; + + _name = name ? [].concat(name, k) : [k]; + + _name.toString = function () { + // fallback for old one + return this.join(' - '); + }; + + if (typeof prop === 'function') { + var in_name = false; + for (var i = 0; i < _name.length; i += 1) { + if (_name[i] === opt.testspec) { + in_name = true; + } + } + if (!opt.testspec || in_name) { + if (opt.moduleStart) { + opt.moduleStart(); + } + exports.runTest(_name, suite[k], opt, cb); + } + else { + return cb(); + } + } + else { + exports.runSuite(_name, suite[k], opt, cb); + } + }, callback); +}; + +/** + * Run each exported test function or test suite from a loaded module. + * + * @param {String} name + * @param {Object} mod + * @param {Object} opt + * @param {Function} callback + * @api public + */ + +exports.runModule = function (name, mod, opt, callback) { + var options = _copy(types.options(opt)); + + var _run = false; + var _moduleStart = options.moduleStart; + function run_once() { + if (!_run) { + _run = true; + _moduleStart(name); + } + } + options.moduleStart = run_once; + + var start = new Date().getTime(); + + exports.runSuite(null, mod, options, function (err, a_list) { + var end = new Date().getTime(); + var assertion_list = types.assertionList(a_list, end - start); + options.moduleDone(name, assertion_list); + callback(null, a_list); + }); +}; + +/** + * Treats an object literal as a list of modules keyed by name. Runs each + * module and finished with calling 'done'. You can think of this as a browser + * safe alternative to runFiles in the nodeunit module. + * + * @param {Object} modules + * @param {Object} opt + * @api public + */ + +// TODO: add proper unit tests for this function +exports.runModules = function (modules, opt) { + var all_assertions = []; + var options = types.options(opt); + var start = new Date().getTime(); + + async.concatSeries(_keys(modules), function (k, cb) { + exports.runModule(k, modules[k], options, cb); + }, + function (err, all_assertions) { + var end = new Date().getTime(); + options.done(types.assertionList(all_assertions, end - start)); + }); +}; + + +/** + * Wraps a test function with setUp and tearDown functions. + * Used by testCase. + * + * @param {Function} setUp + * @param {Function} tearDown + * @param {Function} fn + * @api private + */ + +var wrapTest = function (setUp, tearDown, fn) { + return function (test) { + var context = {}; + if (tearDown) { + var done = test.done; + test.done = function (err) { + try { + tearDown.call(context, function (err2) { + if (err && err2) { + test._assertion_list.push( + types.assertion({error: err}) + ); + return done(err2); + } + done(err || err2); + }); + } + catch (e) { + done(e); + } + }; + } + if (setUp) { + setUp.call(context, function (err) { + if (err) { + return test.done(err); + } + fn.call(context, test); + }); + } + else { + fn.call(context, test); + } + }; +}; + + +/** + * Wraps a group of tests with setUp and tearDown functions. + * Used by testCase. + * + * @param {Function} setUp + * @param {Function} tearDown + * @param {Object} group + * @api private + */ + +var wrapGroup = function (setUp, tearDown, group) { + var tests = {}; + var keys = _keys(group); + for (var i = 0; i < keys.length; i += 1) { + var k = keys[i]; + if (typeof group[k] === 'function') { + tests[k] = wrapTest(setUp, tearDown, group[k]); + } + else if (typeof group[k] === 'object') { + tests[k] = wrapGroup(setUp, tearDown, group[k]); + } + } + return tests; +}; + + +/** + * Utility for wrapping a suite of test functions with setUp and tearDown + * functions. + * + * @param {Object} suite + * @return {Object} + * @api public + */ + +exports.testCase = function (suite) { + var setUp = suite.setUp; + var tearDown = suite.tearDown; + delete suite.setUp; + delete suite.tearDown; + return wrapGroup(setUp, tearDown, suite); +}; +})(core); +(function(exports){ +/*! + * Nodeunit + * Copyright (c) 2010 Caolan McMahon + * MIT Licensed + * + * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! + * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. + * Only code on that line will be removed, its mostly to avoid requiring code + * that is node specific + */ + + +/** + * NOTE: this test runner is not listed in index.js because it cannot be + * used with the command-line tool, only inside the browser. + */ + + +/** + * Reporter info string + */ + +exports.info = "Browser-based test reporter"; + + +/** + * Run all tests within each module, reporting the results + * + * @param {Array} files + * @api public + */ + +exports.run = function (modules, options) { + var start = new Date().getTime(); + + function setText(el, txt) { + if ('innerText' in el) { + el.innerText = txt; + } + else if ('textContent' in el){ + el.textContent = txt; + } + } + + function getOrCreate(tag, id) { + var el = document.getElementById(id); + if (!el) { + el = document.createElement(tag); + el.id = id; + document.body.appendChild(el); + } + return el; + }; + + var header = getOrCreate('h1', 'nodeunit-header'); + var banner = getOrCreate('h2', 'nodeunit-banner'); + var userAgent = getOrCreate('h2', 'nodeunit-userAgent'); + var tests = getOrCreate('ol', 'nodeunit-tests'); + var result = getOrCreate('p', 'nodeunit-testresult'); + + setText(userAgent, navigator.userAgent); + + nodeunit.runModules(modules, { + moduleStart: function (name) { + /*var mheading = document.createElement('h2'); + mheading.innerText = name; + results.appendChild(mheading); + module = document.createElement('ol'); + results.appendChild(module);*/ + }, + testDone: function (name, assertions) { + var test = document.createElement('li'); + var strong = document.createElement('strong'); + strong.innerHTML = name + ' (' + + '' + assertions.failures() + ', ' + + '' + assertions.passes() + ', ' + + assertions.length + + ')'; + test.className = assertions.failures() ? 'fail': 'pass'; + test.appendChild(strong); + + var aList = document.createElement('ol'); + aList.style.display = 'none'; + test.onclick = function () { + var d = aList.style.display; + aList.style.display = (d == 'none') ? 'block': 'none'; + }; + for (var i=0; i' + (a.error.stack || a.error) + ''; + li.className = 'fail'; + } + else { + li.innerHTML = a.message || a.method || 'no message'; + li.className = 'pass'; + } + aList.appendChild(li); + } + test.appendChild(aList); + tests.appendChild(test); + }, + done: function (assertions) { + var end = new Date().getTime(); + var duration = end - start; + + var failures = assertions.failures(); + banner.className = failures ? 'fail': 'pass'; + + result.innerHTML = 'Tests completed in ' + duration + + ' milliseconds.
    ' + + assertions.passes() + ' assertions of ' + + '' + assertions.length + ' passed, ' + + assertions.failures() + ' failed.'; + } + }); +}; +})(reporter); +nodeunit = core; +nodeunit.assert = assert; +nodeunit.reporter = reporter; +nodeunit.run = reporter.run; +return nodeunit; })(); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js new file mode 100644 index 0000000..c7288e8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js @@ -0,0 +1,13 @@ +this.suite2 = { + 'another test': function (test) { + setTimeout(function () { + // lots of assertions + test.ok(true, 'everythings ok'); + test.ok(true, 'everythings ok'); + test.ok(true, 'everythings ok'); + test.ok(true, 'everythings ok'); + test.ok(true, 'everythings ok'); + test.done(); + }, 10); + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js new file mode 100644 index 0000000..8929741 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js @@ -0,0 +1,7 @@ +this.suite3 = { + 'test for ie6,7,8': function (test) { + test.deepEqual(["test"], ["test"]); + test.notDeepEqual(["a"], ["b"]); + test.done(); + } +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html new file mode 100644 index 0000000..56d4d96 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html @@ -0,0 +1,30 @@ + + + Example tests + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js new file mode 100644 index 0000000..5304bef --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js @@ -0,0 +1,240 @@ +var mongodb = require('../../lib/bson').pure(); + +var testCase = require('nodeunit').testCase, + mongoO = require('../../lib/bson').pure(), + debug = require('util').debug, + inspect = require('util').inspect, + Buffer = require('buffer').Buffer, + gleak = require('../../tools/gleak'), + fs = require('fs'), + BSON = mongoO.BSON, + Code = mongoO.Code, + Binary = mongoO.Binary, + Timestamp = mongoO.Timestamp, + Long = mongoO.Long, + MongoReply = mongoO.MongoReply, + ObjectID = mongoO.ObjectID, + Symbol = mongoO.Symbol, + DBRef = mongoO.DBRef, + Double = mongoO.Double, + MinKey = mongoO.MinKey, + MaxKey = mongoO.MaxKey, + BinaryParser = mongoO.BinaryParser, + utils = require('./tools/utils'); + +var BSONSE = mongodb, + BSONDE = mongodb; + +// for tests +BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +var hexStringToBinary = function(string) { + var numberofValues = string.length / 2; + var array = ""; + + for(var i = 0; i < numberofValues; i++) { + array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); + } + return array; +} + +var assertBuffersEqual = function(test, buffer1, buffer2) { + if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); + + for(var i = 0; i < buffer1.length; i++) { + test.equal(buffer1[i], buffer2[i]); + } +} + +/** + * Module for parsing an ISO 8601 formatted string into a Date object. + */ +var ISODate = function (string) { + var match; + + if (typeof string.getTime === "function") + return string; + else if (match = string.match(/^(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|((\+|-)(\d{2}):(\d{2}))))?)?)?$/)) { + var date = new Date(); + date.setUTCFullYear(Number(match[1])); + date.setUTCMonth(Number(match[3]) - 1 || 0); + date.setUTCDate(Number(match[5]) || 0); + date.setUTCHours(Number(match[7]) || 0); + date.setUTCMinutes(Number(match[8]) || 0); + date.setUTCSeconds(Number(match[10]) || 0); + date.setUTCMilliseconds(Number("." + match[12]) * 1000 || 0); + + if (match[13] && match[13] !== "Z") { + var h = Number(match[16]) || 0, + m = Number(match[17]) || 0; + + h *= 3600000; + m *= 60000; + + var offset = h + m; + if (match[15] == "+") + offset = -offset; + + date = new Date(date.valueOf() + offset); + } + + return date; + } else + throw new Error("Invalid ISO 8601 date given.", __filename); +}; + +var _Uint8Array = null; + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.setUp = function(callback) { + _Uint8Array = global.Uint8Array; + delete global['Uint8Array']; + callback(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.tearDown = function(callback) { + global['Uint8Array'] = _Uint8Array; + callback(); +} + +// /** +// * @ignore +// */ +// exports.shouldCorrectlyDeserializeUsingTypedArray = function(test) { +// var motherOfAllDocuments = { +// 'string': '客家话', +// 'array': [1,2,3], +// 'hash': {'a':1, 'b':2}, +// 'date': new Date(), +// 'oid': new ObjectID(), +// 'binary': new Binary(new Buffer("hello")), +// 'int': 42, +// 'float': 33.3333, +// 'regexp': /regexp/, +// 'boolean': true, +// 'long': Long.fromNumber(100), +// 'where': new Code('this.a > i', {i:1}), +// 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), +// 'minkey': new MinKey(), +// 'maxkey': new MaxKey() +// } +// +// // Let's serialize it +// var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, true, false); +// // Build a typed array +// var arr = new Uint8Array(new ArrayBuffer(data.length)); +// // Iterate over all the fields and copy +// for(var i = 0; i < data.length; i++) { +// arr[i] = data[i] +// } +// +// // Deserialize the object +// var object = BSONDE.BSON.deserialize(arr); +// // Asserts +// test.equal(motherOfAllDocuments.string, object.string); +// test.deepEqual(motherOfAllDocuments.array, object.array); +// test.deepEqual(motherOfAllDocuments.date, object.date); +// test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); +// test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); +// // Assert the values of the binary +// for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { +// test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); +// } +// test.deepEqual(motherOfAllDocuments.int, object.int); +// test.deepEqual(motherOfAllDocuments.float, object.float); +// test.deepEqual(motherOfAllDocuments.regexp, object.regexp); +// test.deepEqual(motherOfAllDocuments.boolean, object.boolean); +// test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); +// test.deepEqual(motherOfAllDocuments.where, object.where); +// test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); +// test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); +// test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); +// test.deepEqual(motherOfAllDocuments.minkey, object.minkey); +// test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); +// test.done(); +// } + +/** + * @ignore + */ +exports.shouldCorrectlySerializeUsingTypedArray = function(test) { + var motherOfAllDocuments = { + 'string': 'hello', + 'array': [1,2,3], + 'hash': {'a':1, 'b':2}, + 'date': new Date(), + 'oid': new ObjectID(), + 'binary': new Binary(new Buffer("hello")), + 'int': 42, + 'float': 33.3333, + 'regexp': /regexp/, + 'boolean': true, + 'long': Long.fromNumber(100), + 'where': new Code('this.a > i', {i:1}), + 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), + 'minkey': new MinKey(), + 'maxkey': new MaxKey() + } + + // Let's serialize it + var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, false, false); + // And deserialize it again + var object = BSONSE.BSON.deserialize(data); + // Asserts + test.equal(motherOfAllDocuments.string, object.string); + test.deepEqual(motherOfAllDocuments.array, object.array); + test.deepEqual(motherOfAllDocuments.date, object.date); + test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); + // Assert the values of the binary + for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { + test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); + } + test.deepEqual(motherOfAllDocuments.int, object.int); + test.deepEqual(motherOfAllDocuments.float, object.float); + test.deepEqual(motherOfAllDocuments.regexp, object.regexp); + test.deepEqual(motherOfAllDocuments.boolean, object.boolean); + test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); + test.deepEqual(motherOfAllDocuments.where, object.where); + test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); + test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); + test.deepEqual(motherOfAllDocuments.minkey, object.minkey); + test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); + test.done(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.noGlobalsLeaked = function(test) { + var leaks = gleak.detectNew(); + test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); + test.done(); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js new file mode 100644 index 0000000..7481540 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js @@ -0,0 +1,493 @@ +var sys = require('util'), + debug = require('util').debug, + inspect = require('util').inspect, + Buffer = require('buffer').Buffer, + BSON = require('../../ext').BSON, + Buffer = require('buffer').Buffer, + BSONJS = require('../../lib/bson/bson').BSON, + BinaryParser = require('../../lib/bson/binary_parser').BinaryParser, + Long = require('../../lib/bson/long').Long, + ObjectID = require('../../lib/bson/bson').ObjectID, + Binary = require('../../lib/bson/bson').Binary, + Code = require('../../lib/bson/bson').Code, + DBRef = require('../../lib/bson/bson').DBRef, + Symbol = require('../../lib/bson/bson').Symbol, + Double = require('../../lib/bson/bson').Double, + MaxKey = require('../../lib/bson/bson').MaxKey, + MinKey = require('../../lib/bson/bson').MinKey, + Timestamp = require('../../lib/bson/bson').Timestamp, + gleak = require('../../tools/gleak'), + assert = require('assert'); + +// Long/ObjectID/Binary/Code/DbRef/Symbol/Double/Timestamp/MinKey/MaxKey +var bsonC = new BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); +var bsonJS = new BSONJS([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.setUp = function(callback) { + callback(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.tearDown = function(callback) { + callback(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize simple edge value'] = function(test) { + // Simple serialization and deserialization of edge value + var doc = {doc:0x1ffffffffffffe}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + + var doc = {doc:-0x1ffffffffffffe}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly execute toJSON'] = function(test) { + var a = Long.fromNumber(10); + assert.equal(10, a); + + var a = Long.fromNumber(9223372036854775807); + assert.equal(9223372036854775807, a); + + // Simple serialization and deserialization test for a Single String value + var doc = {doc:'Serialize'}; + var simple_string_serialized = bsonC.serialize(doc, true, false); + + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Serialize and Deserialize nested document'] = function(test) { + // Nested doc + var doc = {a:{b:{c:1}}}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Simple integer serialization/deserialization test, including testing boundary conditions'] = function(test) { + var doc = {doc:-1}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + + var doc = {doc:2147483648}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + + var doc = {doc:-2147483648}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization test for a Long value'] = function(test) { + var doc = {doc:Long.fromNumber(9223372036854775807)}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:Long.fromNumber(9223372036854775807)}, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + + var doc = {doc:Long.fromNumber(-9223372036854775807)}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:Long.fromNumber(-9223372036854775807)}, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a Float value'] = function(test) { + var doc = {doc:2222.3333}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + + var doc = {doc:-2222.3333}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a null value'] = function(test) { + var doc = {doc:null}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a boolean value'] = function(test) { + var doc = {doc:true}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a date value'] = function(test) { + var date = new Date(); + var doc = {doc:date}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a boolean value'] = function(test) { + var doc = {doc:/abcd/mi}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.equal(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.toString(), bsonC.deserialize(simple_string_serialized).doc.toString()); + + var doc = {doc:/abcd/}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); + assert.equal(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.toString(), bsonC.deserialize(simple_string_serialized).doc.toString()); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a objectId value'] = function(test) { + var doc = {doc:new ObjectID()}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + var doc2 = {doc:ObjectID.createFromHexString(doc.doc.toHexString())}; + + assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc2, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.toString(), bsonC.deserialize(simple_string_serialized).doc.toString()); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a Binary value'] = function(test) { + var binary = new Binary(); + var string = 'binstring' + for(var index = 0; index < string.length; index++) { binary.put(string.charAt(index)); } + + var simple_string_serialized = bsonC.serialize({doc:binary}, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:binary}, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.value(), bsonC.deserialize(simple_string_serialized).doc.value()); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a Binary value of type 2'] = function(test) { + var binary = new Binary(new Buffer('binstring'), Binary.SUBTYPE_BYTE_ARRAY); + var simple_string_serialized = bsonC.serialize({doc:binary}, false, true); + assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:binary}, false, true)); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.value(), bsonC.deserialize(simple_string_serialized).doc.value()); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a Code value'] = function(test) { + var code = new Code('this.a > i', {'i': 1}); + var simple_string_serialized_2 = bsonJS.serialize({doc:code}, false, true); + var simple_string_serialized = bsonC.serialize({doc:code}, false, true); + + assert.deepEqual(simple_string_serialized, simple_string_serialized_2); + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')).doc.scope, bsonC.deserialize(simple_string_serialized).doc.scope); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for an Object'] = function(test) { + var simple_string_serialized = bsonC.serialize({doc:{a:1, b:{c:2}}}, false, true); + var simple_string_serialized_2 = bsonJS.serialize({doc:{a:1, b:{c:2}}}, false, true); + assert.deepEqual(simple_string_serialized, simple_string_serialized_2) + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')).doc, bsonC.deserialize(simple_string_serialized).doc); + + // Simple serialization and deserialization for an Array + var simple_string_serialized = bsonC.serialize({doc:[9, 9, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1]}, false, true); + var simple_string_serialized_2 = bsonJS.serialize({doc:[9, 9, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1]}, false, true); + + assert.deepEqual(simple_string_serialized, simple_string_serialized_2) + assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')).doc, bsonC.deserialize(simple_string_serialized).doc); + test.done(); +} + +/** + * @ignore + */ +exports['Simple serialization and deserialization for a DBRef'] = function(test) { + var oid = new ObjectID() + var oid2 = new ObjectID.createFromHexString(oid.toHexString()) + var simple_string_serialized = bsonJS.serialize({doc:new DBRef('namespace', oid2, 'integration_tests_')}, false, true); + var simple_string_serialized_2 = bsonC.serialize({doc:new DBRef('namespace', oid, 'integration_tests_')}, false, true); + + assert.deepEqual(simple_string_serialized, simple_string_serialized_2) + // Ensure we have the same values for the dbref + var object_js = bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')); + var object_c = bsonC.deserialize(simple_string_serialized); + + assert.equal(object_js.doc.namespace, object_c.doc.namespace); + assert.equal(object_js.doc.oid.toHexString(), object_c.doc.oid.toHexString()); + assert.equal(object_js.doc.db, object_c.doc.db); + test.done(); +} + +/** + * @ignore + */ +exports['Should correctly deserialize bytes array'] = function(test) { + // Serialized document + var bytes = [47,0,0,0,2,110,97,109,101,0,6,0,0,0,80,97,116,116,121,0,16,97,103,101,0,34,0,0,0,7,95,105,100,0,76,100,12,23,11,30,39,8,89,0,0,1,0]; + var serialized_data = ''; + // Convert to chars + for(var i = 0; i < bytes.length; i++) { + serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); + } + var object = bsonC.deserialize(new Buffer(serialized_data, 'binary')); + assert.equal('Patty', object.name) + assert.equal(34, object.age) + assert.equal('4c640c170b1e270859000001', object._id.toHexString()) + test.done(); +} + +/** + * @ignore + */ +exports['Serialize utf8'] = function(test) { + var doc = { "name" : "本荘由利地域に洪水警報", "name1" : "öüóőúéáűíÖÜÓŐÚÉÁŰÍ", "name2" : "abcdedede"}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + var simple_string_serialized2 = bsonJS.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, simple_string_serialized2) + + var object = bsonC.deserialize(simple_string_serialized); + assert.equal(doc.name, object.name) + assert.equal(doc.name1, object.name1) + assert.equal(doc.name2, object.name2) + test.done(); +} + +/** + * @ignore + */ +exports['Serialize object with array'] = function(test) { + var doc = {b:[1, 2, 3]}; + var simple_string_serialized = bsonC.serialize(doc, false, true); + var simple_string_serialized_2 = bsonJS.serialize(doc, false, true); + assert.deepEqual(simple_string_serialized, simple_string_serialized_2) + + var object = bsonC.deserialize(simple_string_serialized); + assert.deepEqual(doc, object) + test.done(); +} + +/** + * @ignore + */ +exports['Test equality of an object ID'] = function(test) { + var object_id = new ObjectID(); + var object_id_2 = new ObjectID(); + assert.ok(object_id.equals(object_id)); + assert.ok(!(object_id.equals(object_id_2))) + test.done(); +} + +/** + * @ignore + */ +exports['Test same serialization for Object ID'] = function(test) { + var object_id = new ObjectID(); + var object_id2 = ObjectID.createFromHexString(object_id.toString()) + var simple_string_serialized = bsonJS.serialize({doc:object_id}, false, true); + var simple_string_serialized_2 = bsonC.serialize({doc:object_id2}, false, true); + + assert.equal(simple_string_serialized_2.length, simple_string_serialized.length); + assert.deepEqual(simple_string_serialized, simple_string_serialized_2) + var object = bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')); + var object2 = bsonC.deserialize(simple_string_serialized); + assert.equal(object.doc.id, object2.doc.id) + test.done(); +} + +/** + * @ignore + */ +exports['Complex object serialization'] = function(test) { + // JS Object + var c1 = { _id: new ObjectID, comments: [], title: 'number 1' }; + var c2 = { _id: new ObjectID, comments: [], title: 'number 2' }; + var doc = { + numbers: [] + , owners: [] + , comments: [c1, c2] + , _id: new ObjectID + }; + + var simple_string_serialized = bsonJS.serialize(doc, false, true); + + // C++ Object + var c1 = { _id: ObjectID.createFromHexString(c1._id.toHexString()), comments: [], title: 'number 1' }; + var c2 = { _id: ObjectID.createFromHexString(c2._id.toHexString()), comments: [], title: 'number 2' }; + var doc = { + numbers: [] + , owners: [] + , comments: [c1, c2] + , _id: ObjectID.createFromHexString(doc._id.toHexString()) + }; + + var simple_string_serialized_2 = bsonC.serialize(doc, false, true); + + for(var i = 0; i < simple_string_serialized_2.length; i++) { + // debug(i + "[" + simple_string_serialized_2[i] + "] = [" + simple_string_serialized[i] + "]") + assert.equal(simple_string_serialized_2[i], simple_string_serialized[i]); + } + + var doc1 = bsonJS.deserialize(new Buffer(simple_string_serialized_2)); + var doc2 = bsonC.deserialize(new Buffer(simple_string_serialized_2)); + assert.equal(doc._id.id, doc1._id.id) + assert.equal(doc._id.id, doc2._id.id) + assert.equal(doc1._id.id, doc2._id.id) + + var doc = { + _id: 'testid', + key1: { code: 'test1', time: {start:1309323402727,end:1309323402727}, x:10, y:5 }, + key2: { code: 'test1', time: {start:1309323402727,end:1309323402727}, x:10, y:5 } + }; + + var simple_string_serialized = bsonJS.serialize(doc, false, true); + var simple_string_serialized_2 = bsonC.serialize(doc, false, true); + test.done(); +} + +/** + * @ignore + */ +exports['Serialize function'] = function(test) { + var doc = { + _id: 'testid', + key1: function() {} + } + + var simple_string_serialized = bsonJS.serialize(doc, false, true, true); + var simple_string_serialized_2 = bsonC.serialize(doc, false, true, true); + + // Deserialize the string + var doc1 = bsonJS.deserialize(new Buffer(simple_string_serialized_2)); + var doc2 = bsonC.deserialize(new Buffer(simple_string_serialized_2)); + assert.equal(doc1.key1.code.toString(), doc2.key1.code.toString()) + test.done(); +} + +/** + * @ignore + */ +exports['Serialize document with special operators'] = function(test) { + var doc = {"user_id":"4e9fc8d55883d90100000003","lc_status":{"$ne":"deleted"},"owner_rating":{"$exists":false}}; + var simple_string_serialized = bsonJS.serialize(doc, false, true, true); + var simple_string_serialized_2 = bsonC.serialize(doc, false, true, true); + + // Should serialize to the same value + assert.equal(simple_string_serialized_2.toString('base64'), simple_string_serialized.toString('base64')) + var doc1 = bsonJS.deserialize(simple_string_serialized_2); + var doc2 = bsonC.deserialize(simple_string_serialized); + assert.deepEqual(doc1, doc2) + test.done(); +} + +/** + * @ignore + */ +exports['Create ObjectID from hex string'] = function(test) { + // Hex Id + var hexId = new ObjectID().toString(); + var docJS = {_id: ObjectID.createFromHexString(hexId), 'funds.remaining': {$gte: 1.222}, 'transactions.id': {$ne: ObjectID.createFromHexString(hexId)}}; + var docC = {_id: ObjectID.createFromHexString(hexId), 'funds.remaining': {$gte: 1.222}, 'transactions.id': {$ne: ObjectID.createFromHexString(hexId)}}; + var docJSBin = bsonJS.serialize(docJS, false, true, true); + var docCBin = bsonC.serialize(docC, false, true, true); + assert.equal(docCBin.toString('base64'), docJSBin.toString('base64')); + test.done(); +} + +/** + * @ignore + */ +exports['Serialize big complex document'] = function(test) { + // Complex document serialization + var doc = {"DateTime": "Tue Nov 40 2011 17:27:55 GMT+0000 (WEST)","isActive": true,"Media": {"URL": "http://videos.sapo.pt/Tc85NsjaKjj8o5aV7Ubb"},"Title": "Lisboa fecha a ganhar 0.19%","SetPosition": 60,"Type": "videos","Thumbnail": [{"URL": "http://rd3.videos.sapo.pt/Tc85NsjaKjj8o5aV7Ubb/pic/320x240","Dimensions": {"Height": 240,"Width": 320}}],"Source": {"URL": "http://videos.sapo.pt","SetID": "1288","SourceID": "http://videos.sapo.pt/tvnet/rss2","SetURL": "http://noticias.sapo.pt/videos/tv-net_1288/","ItemID": "Tc85NsjaKjj8o5aV7Ubb","Name": "SAPO Vídeos"},"Category": "Tec_ciencia","Description": "Lisboa fecha a ganhar 0.19%","GalleryID": new ObjectID("4eea2a634ce8573200000000"),"InternalRefs": {"RegisterDate": "Thu Dec 15 2011 17:12:51 GMT+0000 (WEST)","ChangeDate": "Thu Dec 15 2011 17:12:51 GMT+0000 (WEST)","Hash": 332279244514},"_id": new ObjectID("4eea2a96e52778160000003a")} + var docJSBin = bsonJS.serialize(doc, false, true, true); + var docCBin = bsonC.serialize(doc, false, true, true); + assert.equal(docCBin.toString('base64'), docJSBin.toString('base64')); + test.done(); +} + +/** + * @ignore + */ +exports['Should error out due to 24 characters but not valid hexstring for ObjectID'] = function(test) { + try { + var oid = new ObjectID("tttttttttttttttttttttttt"); + test.ok(false); + } catch(err) {} + + test.done(); +} + + +/** + * @ignore + */ +exports.noGlobalsLeaked = function(test) { + var leaks = gleak.detectNew(); + test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); + test.done(); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js new file mode 100644 index 0000000..9eb5756 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js @@ -0,0 +1,1694 @@ +var mongodb = process.env['TEST_NATIVE'] != null ? require('../../lib/bson').native() : require('../../lib/bson').pure(); + +var testCase = require('nodeunit').testCase, + mongoO = require('../../lib/bson').pure(), + Buffer = require('buffer').Buffer, + gleak = require('../../tools/gleak'), + fs = require('fs'), + BSON = mongoO.BSON, + Code = mongoO.Code, + Binary = mongoO.Binary, + Timestamp = mongoO.Timestamp, + Long = mongoO.Long, + MongoReply = mongoO.MongoReply, + ObjectID = mongoO.ObjectID, + ObjectId = mongoO.ObjectId, + Symbol = mongoO.Symbol, + DBRef = mongoO.DBRef, + Double = mongoO.Double, + MinKey = mongoO.MinKey, + MaxKey = mongoO.MaxKey, + BinaryParser = mongoO.BinaryParser, + vm = require('vm'); + +var BSONSE = mongodb, + BSONDE = mongodb; + +// for tests +BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +var hexStringToBinary = function(string) { + var numberofValues = string.length / 2; + var array = ""; + + for(var i = 0; i < numberofValues; i++) { + array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); + } + return array; +} + +var assertBuffersEqual = function(test, buffer1, buffer2) { + if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); + + for(var i = 0; i < buffer1.length; i++) { + test.equal(buffer1[i], buffer2[i]); + } +} + +/** + * Module for parsing an ISO 8601 formatted string into a Date object. + */ +var ISODate = function (string) { + var match; + + if (typeof string.getTime === "function") + return string; + else if (match = string.match(/^(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|((\+|-)(\d{2}):(\d{2}))))?)?)?$/)) { + var date = new Date(); + date.setUTCFullYear(Number(match[1])); + date.setUTCMonth(Number(match[3]) - 1 || 0); + date.setUTCDate(Number(match[5]) || 0); + date.setUTCHours(Number(match[7]) || 0); + date.setUTCMinutes(Number(match[8]) || 0); + date.setUTCSeconds(Number(match[10]) || 0); + date.setUTCMilliseconds(Number("." + match[12]) * 1000 || 0); + + if (match[13] && match[13] !== "Z") { + var h = Number(match[16]) || 0, + m = Number(match[17]) || 0; + + h *= 3600000; + m *= 60000; + + var offset = h + m; + if (match[15] == "+") + offset = -offset; + + date = new Date(date.valueOf() + offset); + } + + return date; + } else + throw new Error("Invalid ISO 8601 date given.", __filename); +}; + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.setUp = function(callback) { + callback(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.tearDown = function(callback) { + callback(); +} + +/** + * @ignore + */ +exports['Should Correctly create ObjectID and do deep equals'] = function(test) { + var test_string = {hello: new ObjectID()}; + test_string.hello.toHexString(); + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_string, false, true); + test.deepEqual(test_string, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly get BSON types from require'] = function(test) { + var _mongodb = require('../../lib/bson'); + test.ok(_mongodb.ObjectID === ObjectID); + test.ok(_mongodb.Binary === Binary); + test.ok(_mongodb.Long === Long); + test.ok(_mongodb.Timestamp === Timestamp); + test.ok(_mongodb.Code === Code); + test.ok(_mongodb.DBRef === DBRef); + test.ok(_mongodb.Symbol === Symbol); + test.ok(_mongodb.MinKey === MinKey); + test.ok(_mongodb.MaxKey === MaxKey); + test.ok(_mongodb.Double === Double); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Deserialize object'] = function(test) { + var bytes = [95,0,0,0,2,110,115,0,42,0,0,0,105,110,116,101,103,114,97,116,105,111,110,95,116,101,115,116,115,95,46,116,101,115,116,95,105,110,100,101,120,95,105,110,102,111,114,109,97,116,105,111,110,0,8,117,110,105,113,117,101,0,0,3,107,101,121,0,12,0,0,0,16,97,0,1,0,0,0,0,2,110,97,109,101,0,4,0,0,0,97,95,49,0,0]; + var serialized_data = ''; + // Convert to chars + for(var i = 0; i < bytes.length; i++) { + serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); + } + + var object = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(new Buffer(serialized_data, 'binary')); + test.equal("a_1", object.name); + test.equal(false, object.unique); + test.equal(1, object.key.a); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Deserialize object with all types'] = function(test) { + var bytes = [26,1,0,0,7,95,105,100,0,161,190,98,75,118,169,3,0,0,3,0,0,4,97,114,114,97,121,0,26,0,0,0,16,48,0,1,0,0,0,16,49,0,2,0,0,0,16,50,0,3,0,0,0,0,2,115,116,114,105,110,103,0,6,0,0,0,104,101,108,108,111,0,3,104,97,115,104,0,19,0,0,0,16,97,0,1,0,0,0,16,98,0,2,0,0,0,0,9,100,97,116,101,0,161,190,98,75,0,0,0,0,7,111,105,100,0,161,190,98,75,90,217,18,0,0,1,0,0,5,98,105,110,97,114,121,0,7,0,0,0,2,3,0,0,0,49,50,51,16,105,110,116,0,42,0,0,0,1,102,108,111,97,116,0,223,224,11,147,169,170,64,64,11,114,101,103,101,120,112,0,102,111,111,98,97,114,0,105,0,8,98,111,111,108,101,97,110,0,1,15,119,104,101,114,101,0,25,0,0,0,12,0,0,0,116,104,105,115,46,120,32,61,61,32,51,0,5,0,0,0,0,3,100,98,114,101,102,0,37,0,0,0,2,36,114,101,102,0,5,0,0,0,116,101,115,116,0,7,36,105,100,0,161,190,98,75,2,180,1,0,0,2,0,0,0,10,110,117,108,108,0,0]; + var serialized_data = ''; + // Convert to chars + for(var i = 0; i < bytes.length; i++) { + serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); + } + + var object = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(new Buffer(serialized_data, 'binary'));//, false, true); + // Perform tests + test.equal("hello", object.string); + test.deepEqual([1,2,3], object.array); + test.equal(1, object.hash.a); + test.equal(2, object.hash.b); + test.ok(object.date != null); + test.ok(object.oid != null); + test.ok(object.binary != null); + test.equal(42, object.int); + test.equal(33.3333, object.float); + test.ok(object.regexp != null); + test.equal(true, object.boolean); + test.ok(object.where != null); + test.ok(object.dbref != null); + test.ok(object[null] == null); + test.done(); +} + +/** + * @ignore + */ +exports['Should Serialize and Deserialize String'] = function(test) { + var test_string = {hello: 'world'}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_string, false, true); + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_string)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_string, false, serialized_data2, 0); + + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + test.deepEqual(test_string, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Serialize and Deserialize Empty String'] = function(test) { + var test_string = {hello: ''}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_string, false, true); + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_string)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_string, false, serialized_data2, 0); + + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + test.deepEqual(test_string, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { + var test_number = {doc: 5}; + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_number, false, true); + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_number)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_number, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + test.deepEqual(test_number, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); + test.deepEqual(test_number, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data2)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize null value'] = function(test) { + var test_null = {doc:null}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_null, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_null)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_null, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var object = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.equal(null, object.doc); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Number'] = function(test) { + var test_number = {doc: 5.5}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_number, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_number)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_number, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.deepEqual(test_number, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { + var test_int = {doc: 42}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); + + test_int = {doc: -5600}; + serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); + + test_int = {doc: 2147483647}; + serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); + + test_int = {doc: -2147483648}; + serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Object'] = function(test) { + var doc = {doc: {age: 42, name: 'Spongebob', shoe_size: 9.5}}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.deepEqual(doc.doc.age, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.age); + test.deepEqual(doc.doc.name, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.name); + test.deepEqual(doc.doc.shoe_size, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.shoe_size); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Array'] = function(test) { + var doc = {doc: [1, 2, 'a', 'b']}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.equal(doc.doc[0], deserialized.doc[0]) + test.equal(doc.doc[1], deserialized.doc[1]) + test.equal(doc.doc[2], deserialized.doc[2]) + test.equal(doc.doc[3], deserialized.doc[3]) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Array with added on functions'] = function(test) { + Array.prototype.toXml = function() {}; + var doc = {doc: [1, 2, 'a', 'b']}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.equal(doc.doc[0], deserialized.doc[0]) + test.equal(doc.doc[1], deserialized.doc[1]) + test.equal(doc.doc[2], deserialized.doc[2]) + test.equal(doc.doc[3], deserialized.doc[3]) + test.done(); +} + +/** + * @ignore + */ +exports['Should correctly deserialize a nested object'] = function(test) { + var doc = {doc: {doc:1}}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.deepEqual(doc.doc.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.doc); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize A Boolean'] = function(test) { + var doc = {doc: true}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.equal(doc.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a Date'] = function(test) { + var date = new Date(); + //(2009, 11, 12, 12, 00, 30) + date.setUTCDate(12); + date.setUTCFullYear(2009); + date.setUTCMonth(11 - 1); + date.setUTCHours(12); + date.setUTCMinutes(0); + date.setUTCSeconds(30); + var doc = {doc: date}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.equal(doc.date, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.date); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a Date from another VM'] = function(test) { + var script = "date1 = new Date();", + ctx = vm.createContext({ + date1 : null + }); + vm.runInContext(script, ctx, 'myfile.vm'); + + var date = ctx.date1; + //(2009, 11, 12, 12, 00, 30) + date.setUTCDate(12); + date.setUTCFullYear(2009); + date.setUTCMonth(11 - 1); + date.setUTCHours(12); + date.setUTCMinutes(0); + date.setUTCSeconds(30); + var doc = {doc: date}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.equal(doc.date, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.date); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize nested doc'] = function(test) { + var doc = { + string: "Strings are great", + decimal: 3.14159265, + bool: true, + integer: 5, + + subObject: { + moreText: "Bacon ipsum dolor.", + longKeylongKeylongKeylongKeylongKeylongKey: "Pork belly." + }, + + subArray: [1,2,3,4,5,6,7,8,9,10], + anotherString: "another string" + } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Oid'] = function(test) { + var doc = {doc: new ObjectID()}; + var doc2 = {doc: ObjectID.createFromHexString(doc.doc.toHexString())}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.deepEqual(doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly encode Empty Hash'] = function(test) { + var doc = {}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + test.deepEqual(doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Ordered Hash'] = function(test) { + var doc = {doc: {b:1, a:2, c:3, d:4}}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var decoded_hash = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc; + var keys = []; + + for(var name in decoded_hash) keys.push(name); + test.deepEqual(['b', 'a', 'c', 'd'], keys); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Regular Expression'] = function(test) { + // Serialize the regular expression + var doc = {doc: /foobar/mi}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(doc.doc.toString(), doc2.doc.toString()); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a Binary object'] = function(test) { + var bin = new Binary(); + var string = 'binstring'; + for(var index = 0; index < string.length; index++) { + bin.put(string.charAt(index)); + } + + var doc = {doc: bin}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a Type 2 Binary object'] = function(test) { + var bin = new Binary(new Buffer('binstring'), Binary.SUBTYPE_BYTE_ARRAY); + var string = 'binstring'; + for(var index = 0; index < string.length; index++) { + bin.put(string.charAt(index)); + } + + var doc = {doc: bin}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a big Binary object'] = function(test) { + var data = fs.readFileSync("test/node/data/test_gs_weird_bug.png", 'binary'); + var bin = new Binary(); + bin.write(data); + var doc = {doc: bin}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); + test.done(); +} + +/** + * @ignore + */ +exports["Should Correctly Serialize and Deserialize DBRef"] = function(test) { + var oid = new ObjectID(); + var doc = {dbref: new DBRef('namespace', oid, null)}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.equal("namespace", doc2.dbref.namespace); + test.deepEqual(doc2.dbref.oid.toHexString(), oid.toHexString()); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize partial DBRef'] = function(test) { + var id = new ObjectID(); + var doc = {'name':'something', 'user':{'$ref':'username', '$id': id}}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.equal('something', doc2.name); + test.equal('username', doc2.user.namespace); + test.equal(id.toString(), doc2.user.oid.toString()); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize simple Int'] = function(test) { + var doc = {doc:2147483648}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.doc, doc2.doc) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Long Integer'] = function(test) { + var doc = {doc: Long.fromNumber(9223372036854775807)}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.doc, deserialized_data.doc); + + doc = {doc: Long.fromNumber(-9223372036854775)}; + serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.doc, deserialized_data.doc); + + doc = {doc: Long.fromNumber(-9223372036854775809)}; + serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.doc, deserialized_data.doc); + test.done(); +} + +/** + * @ignore + */ +exports['Should Deserialize Large Integers as Number not Long'] = function(test) { + function roundTrip(val) { + var doc = {doc: val}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.doc, deserialized_data.doc); + }; + + roundTrip(Math.pow(2,52)); + roundTrip(Math.pow(2,53) - 1); + roundTrip(Math.pow(2,53)); + roundTrip(-Math.pow(2,52)); + roundTrip(-Math.pow(2,53) + 1); + roundTrip(-Math.pow(2,53)); + roundTrip(Math.pow(2,65)); // Too big for Long. + roundTrip(-Math.pow(2,65)); + roundTrip(9223372036854775807); + roundTrip(1234567890123456800); // Bigger than 2^53, stays a double. + roundTrip(-1234567890123456800); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Long Integer and Timestamp as different types'] = function(test) { + var long = Long.fromNumber(9223372036854775807); + var timestamp = Timestamp.fromNumber(9223372036854775807); + test.ok(long instanceof Long); + test.ok(!(long instanceof Timestamp)); + test.ok(timestamp instanceof Timestamp); + test.ok(!(timestamp instanceof Long)); + + var test_int = {doc: long, doc2: timestamp}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(test_int.doc, deserialized_data.doc); + test.done(); +} + +/** + * @ignore + */ +exports['Should Always put the id as the first item in a hash'] = function(test) { + var hash = {doc: {not_id:1, '_id':2}}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(hash, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(hash)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(hash, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + var keys = []; + + for(var name in deserialized_data.doc) { + keys.push(name); + } + + test.deepEqual(['not_id', '_id'], keys); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a User defined Binary object'] = function(test) { + var bin = new Binary(); + bin.sub_type = BSON.BSON_BINARY_SUBTYPE_USER_DEFINED; + var string = 'binstring'; + for(var index = 0; index < string.length; index++) { + bin.put(string.charAt(index)); + } + + var doc = {doc: bin}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(deserialized_data.doc.sub_type, BSON.BSON_BINARY_SUBTYPE_USER_DEFINED); + test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correclty Serialize and Deserialize a Code object'] = function(test) { + var doc = {'doc': {'doc2': new Code('this.a > i', {i:1})}}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.doc.doc2.code, deserialized_data.doc.doc2.code); + test.deepEqual(doc.doc.doc2.scope.i, deserialized_data.doc.doc2.scope.i); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly serialize and deserialize and embedded array'] = function(test) { + var doc = {'a':0, + 'b':['tmp1', 'tmp2', 'tmp3', 'tmp4', 'tmp5', 'tmp6', 'tmp7', 'tmp8', 'tmp9', 'tmp10', 'tmp11', 'tmp12', 'tmp13', 'tmp14', 'tmp15', 'tmp16'] + }; + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.a, deserialized_data.a); + test.deepEqual(doc.b, deserialized_data.b); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize UTF8'] = function(test) { + // Serialize utf8 + var doc = { "name" : "本荘由利地域に洪水警報", "name1" : "öüóőúéáűíÖÜÓŐÚÉÁŰÍ", "name2" : "abcdedede"}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc, deserialized_data); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize query object'] = function(test) { + var doc = { count: 'remove_with_no_callback_bug_test', query: {}, fields: null}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc, deserialized_data); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize empty query object'] = function(test) { + var doc = {}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc, deserialized_data); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize array based doc'] = function(test) { + var doc = { b: [ 1, 2, 3 ], _id: new ObjectID() }; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.b, deserialized_data.b) + test.deepEqual(doc, deserialized_data); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Symbol'] = function(test) { + if(Symbol != null) { + var doc = { b: [ new Symbol('test') ]}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc.b, deserialized_data.b) + test.deepEqual(doc, deserialized_data); + test.ok(deserialized_data.b[0] instanceof Symbol); + } + + test.done(); +} + +/** + * @ignore + */ +exports['Should handle Deeply nested document'] = function(test) { + var doc = {a:{b:{c:{d:2}}}}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc, deserialized_data); + test.done(); +} + +/** + * @ignore + */ +exports['Should handle complicated all typed object'] = function(test) { + // First doc + var date = new Date(); + var oid = new ObjectID(); + var string = 'binstring' + var bin = new Binary() + for(var index = 0; index < string.length; index++) { + bin.put(string.charAt(index)) + } + + var doc = { + 'string': 'hello', + 'array': [1,2,3], + 'hash': {'a':1, 'b':2}, + 'date': date, + 'oid': oid, + 'binary': bin, + 'int': 42, + 'float': 33.3333, + 'regexp': /regexp/, + 'boolean': true, + 'long': date.getTime(), + 'where': new Code('this.a > i', {i:1}), + 'dbref': new DBRef('namespace', oid, 'integration_tests_') + } + + // Second doc + var oid = new ObjectID.createFromHexString(oid.toHexString()); + var string = 'binstring' + var bin = new Binary() + for(var index = 0; index < string.length; index++) { + bin.put(string.charAt(index)) + } + + var doc2 = { + 'string': 'hello', + 'array': [1,2,3], + 'hash': {'a':1, 'b':2}, + 'date': date, + 'oid': oid, + 'binary': bin, + 'int': 42, + 'float': 33.3333, + 'regexp': /regexp/, + 'boolean': true, + 'long': date.getTime(), + 'where': new Code('this.a > i', {i:1}), + 'dbref': new DBRef('namespace', oid, 'integration_tests_') + } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); + + for(var i = 0; i < serialized_data2.length; i++) { + require('assert').equal(serialized_data2[i], serialized_data[i]) + } + + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize Complex Nested Object'] = function(test) { + var doc = { email: 'email@email.com', + encrypted_password: 'password', + friends: [ '4db96b973d01205364000006', + '4dc77b24c5ba38be14000002' ], + location: [ 72.4930088, 23.0431957 ], + name: 'Amit Kumar', + password_salt: 'salty', + profile_fields: [], + username: 'amit', + _id: new ObjectID() } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = doc; + doc2._id = ObjectID.createFromHexString(doc2._id.toHexString()); + var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); + + for(var i = 0; i < serialized_data2.length; i++) { + require('assert').equal(serialized_data2[i], serialized_data[i]) + } + + test.done(); +} + +/** + * @ignore + */ +exports['Should correctly massive doc'] = function(test) { + var oid1 = new ObjectID(); + var oid2 = new ObjectID(); + + // JS doc + var doc = { dbref2: new DBRef('namespace', oid1, 'integration_tests_'), + _id: oid2 }; + + var doc2 = { dbref2: new DBRef('namespace', ObjectID.createFromHexString(oid1.toHexString()), 'integration_tests_'), + _id: new ObjectID.createFromHexString(oid2.toHexString()) }; + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize/Deserialize regexp object'] = function(test) { + var doc = {'b':/foobaré/}; + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + for(var i = 0; i < serialized_data2.length; i++) { + require('assert').equal(serialized_data2[i], serialized_data[i]) + } + + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize/Deserialize complicated object'] = function(test) { + var doc = {a:{b:{c:[new ObjectID(), new ObjectID()]}}, d:{f:1332.3323}}; + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(doc, doc2) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize/Deserialize nested object'] = function(test) { + var doc = { "_id" : { "date" : new Date(), "gid" : "6f35f74d2bea814e21000000" }, + "value" : { + "b" : { "countries" : { "--" : 386 }, "total" : 1599 }, + "bc" : { "countries" : { "--" : 3 }, "total" : 10 }, + "gp" : { "countries" : { "--" : 2 }, "total" : 13 }, + "mgc" : { "countries" : { "--" : 2 }, "total" : 14 } + } + } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(doc, doc2) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize/Deserialize nested object with even more nesting'] = function(test) { + var doc = { "_id" : { "date" : {a:1, b:2, c:new Date()}, "gid" : "6f35f74d2bea814e21000000" }, + "value" : { + "b" : { "countries" : { "--" : 386 }, "total" : 1599 }, + "bc" : { "countries" : { "--" : 3 }, "total" : 10 }, + "gp" : { "countries" : { "--" : 2 }, "total" : 13 }, + "mgc" : { "countries" : { "--" : 2 }, "total" : 14 } + } + } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual(doc, doc2) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize empty name object'] = function(test) { + var doc = {'':'test', + 'bbbb':1}; + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.equal(doc2[''], 'test'); + test.equal(doc2['bbbb'], 1); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly handle Forced Doubles to ensure we allocate enough space for cap collections'] = function(test) { + if(Double != null) { + var doubleValue = new Double(100); + var doc = {value:doubleValue}; + + // Serialize + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual({value:100}, doc2); + } + + test.done(); +} + +/** + * @ignore + */ +exports['Should deserialize correctly'] = function(test) { + var doc = { + "_id" : new ObjectID("4e886e687ff7ef5e00000162"), + "str" : "foreign", + "type" : 2, + "timestamp" : ISODate("2011-10-02T14:00:08.383Z"), + "links" : [ + "http://www.reddit.com/r/worldnews/comments/kybm0/uk_home_secretary_calls_for_the_scrapping_of_the/" + ] + } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(doc, doc2) + test.done(); +} + +/** + * @ignore + */ +exports['Should correctly serialize and deserialize MinKey and MaxKey values'] = function(test) { + var doc = { + _id : new ObjectID("4e886e687ff7ef5e00000162"), + minKey : new MinKey(), + maxKey : new MaxKey() + } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.deepEqual(doc, doc2) + test.ok(doc2.minKey instanceof MinKey); + test.ok(doc2.maxKey instanceof MaxKey); + test.done(); +} + +/** + * @ignore + */ +exports['Should correctly serialize Double value'] = function(test) { + var doc = { + value : new Double(34343.2222) + } + + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); + new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); + assertBuffersEqual(test, serialized_data, serialized_data2, 0); + var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + + test.ok(doc.value.valueOf(), doc2.value); + test.ok(doc.value.value, doc2.value); + test.done(); +} + +/** + * @ignore + */ +exports['ObjectID should correctly create objects'] = function(test) { + try { + var object1 = ObjectID.createFromHexString('000000000000000000000001') + var object2 = ObjectID.createFromHexString('00000000000000000000001') + test.ok(false); + } catch(err) { + test.ok(err != null); + } + + test.done(); +} + +/** + * @ignore + */ +exports['ObjectID should correctly retrieve timestamp'] = function(test) { + var testDate = new Date(); + var object1 = new ObjectID(); + test.equal(Math.floor(testDate.getTime()/1000), Math.floor(object1.getTimestamp().getTime()/1000)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly throw error on bsonparser errors'] = function(test) { + var data = new Buffer(3); + var parser = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); + + // Catch to small buffer error + try { + parser.deserialize(data); + test.ok(false); + } catch(err) {} + + data = new Buffer(5); + data[0] = 0xff; + data[1] = 0xff; + // Catch illegal size + try { + parser.deserialize(data); + test.ok(false); + } catch(err) {} + + // Finish up + test.done(); +} + +/** + * A simple example showing the usage of BSON.calculateObjectSize function returning the number of BSON bytes a javascript object needs. + * + * @_class bson + * @_function BSON.calculateObjectSize + * @ignore + */ +exports['Should correctly calculate the size of a given javascript object'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){}} + // Calculate the size of the object without serializing the function + var size = BSON.calculateObjectSize(doc, false); + test.equal(12, size); + // Calculate the size of the object serializing the function + size = BSON.calculateObjectSize(doc, true); + // Validate the correctness + test.equal(36, size); + test.done(); +} + +/** + * A simple example showing the usage of BSON.calculateObjectSize function returning the number of BSON bytes a javascript object needs. + * + * @_class bson + * @_function calculateObjectSize + * @ignore + */ +exports['Should correctly calculate the size of a given javascript object using instance method'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){}} + // Create a BSON parser instance + var bson = new BSON(); + // Calculate the size of the object without serializing the function + var size = bson.calculateObjectSize(doc, false); + test.equal(12, size); + // Calculate the size of the object serializing the function + size = bson.calculateObjectSize(doc, true); + // Validate the correctness + test.equal(36, size); + test.done(); +} + +/** + * A simple example showing the usage of BSON.serializeWithBufferAndIndex function. + * + * @_class bson + * @_function BSON.serializeWithBufferAndIndex + * @ignore + */ +exports['Should correctly serializeWithBufferAndIndex a given javascript object'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){}} + // Calculate the size of the document, no function serialization + var size = BSON.calculateObjectSize(doc, false); + // Allocate a buffer + var buffer = new Buffer(size); + // Serialize the object to the buffer, checking keys and not serializing functions + var index = BSON.serializeWithBufferAndIndex(doc, true, buffer, 0, false); + // Validate the correctness + test.equal(12, size); + test.equal(11, index); + + // Serialize with functions + // Calculate the size of the document, no function serialization + var size = BSON.calculateObjectSize(doc, true); + // Allocate a buffer + var buffer = new Buffer(size); + // Serialize the object to the buffer, checking keys and not serializing functions + var index = BSON.serializeWithBufferAndIndex(doc, true, buffer, 0, true); + // Validate the correctness + test.equal(36, size); + test.equal(35, index); + test.done(); +} + +/** + * A simple example showing the usage of BSON.serializeWithBufferAndIndex function. + * + * @_class bson + * @_function serializeWithBufferAndIndex + * @ignore + */ +exports['Should correctly serializeWithBufferAndIndex a given javascript object using a BSON instance'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){}} + // Create a BSON parser instance + var bson = new BSON(); + // Calculate the size of the document, no function serialization + var size = bson.calculateObjectSize(doc, false); + // Allocate a buffer + var buffer = new Buffer(size); + // Serialize the object to the buffer, checking keys and not serializing functions + var index = bson.serializeWithBufferAndIndex(doc, true, buffer, 0, false); + // Validate the correctness + test.equal(12, size); + test.equal(11, index); + + // Serialize with functions + // Calculate the size of the document, no function serialization + var size = bson.calculateObjectSize(doc, true); + // Allocate a buffer + var buffer = new Buffer(size); + // Serialize the object to the buffer, checking keys and not serializing functions + var index = bson.serializeWithBufferAndIndex(doc, true, buffer, 0, true); + // Validate the correctness + test.equal(36, size); + test.equal(35, index); + test.done(); +} + +/** + * A simple example showing the usage of BSON.serialize function returning serialized BSON Buffer object. + * + * @_class bson + * @_function BSON.serialize + * @ignore + */ +exports['Should correctly serialize a given javascript object'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){}} + // Serialize the object to a buffer, checking keys and not serializing functions + var buffer = BSON.serialize(doc, true, true, false); + // Validate the correctness + test.equal(12, buffer.length); + + // Serialize the object to a buffer, checking keys and serializing functions + var buffer = BSON.serialize(doc, true, true, true); + // Validate the correctness + test.equal(36, buffer.length); + test.done(); +} + +/** + * A simple example showing the usage of BSON.serialize function returning serialized BSON Buffer object. + * + * @_class bson + * @_function serialize + * @ignore + */ +exports['Should correctly serialize a given javascript object using a bson instance'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){}} + // Create a BSON parser instance + var bson = new BSON(); + // Serialize the object to a buffer, checking keys and not serializing functions + var buffer = bson.serialize(doc, true, true, false); + // Validate the correctness + test.equal(12, buffer.length); + + // Serialize the object to a buffer, checking keys and serializing functions + var buffer = bson.serialize(doc, true, true, true); + // Validate the correctness + test.equal(36, buffer.length); + test.done(); +} + +/** + * A simple example showing the usage of BSON.deserialize function returning a deserialized Javascript function. + * + * @_class bson + * @_function BSON.deserialize + * @ignore + */ + exports['Should correctly deserialize a buffer using the BSON class level parser'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){ console.log('hello world'); }} + // Serialize the object to a buffer, checking keys and serializing functions + var buffer = BSON.serialize(doc, true, true, true); + // Validate the correctness + test.equal(65, buffer.length); + + // Deserialize the object with no eval for the functions + var deserializedDoc = BSON.deserialize(buffer); + // Validate the correctness + test.equal('object', typeof deserializedDoc.func); + test.equal(1, deserializedDoc.a); + + // Deserialize the object with eval for the functions caching the functions + deserializedDoc = BSON.deserialize(buffer, {evalFunctions:true, cacheFunctions:true}); + // Validate the correctness + test.equal('function', typeof deserializedDoc.func); + test.equal(1, deserializedDoc.a); + test.done(); +} + +/** + * A simple example showing the usage of BSON instance deserialize function returning a deserialized Javascript function. + * + * @_class bson + * @_function deserialize + * @ignore + */ +exports['Should correctly deserialize a buffer using the BSON instance parser'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){ console.log('hello world'); }} + // Create a BSON parser instance + var bson = new BSON(); + // Serialize the object to a buffer, checking keys and serializing functions + var buffer = bson.serialize(doc, true, true, true); + // Validate the correctness + test.equal(65, buffer.length); + + // Deserialize the object with no eval for the functions + var deserializedDoc = bson.deserialize(buffer); + // Validate the correctness + test.equal('object', typeof deserializedDoc.func); + test.equal(1, deserializedDoc.a); + + // Deserialize the object with eval for the functions caching the functions + deserializedDoc = bson.deserialize(buffer, {evalFunctions:true, cacheFunctions:true}); + // Validate the correctness + test.equal('function', typeof deserializedDoc.func); + test.equal(1, deserializedDoc.a); + test.done(); +} + +/** + * A simple example showing the usage of BSON.deserializeStream function returning deserialized Javascript objects. + * + * @_class bson + * @_function BSON.deserializeStream + * @ignore + */ +exports['Should correctly deserializeStream a buffer object'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){ console.log('hello world'); }} + // Serialize the object to a buffer, checking keys and serializing functions + var buffer = BSON.serialize(doc, true, true, true); + // Validate the correctness + test.equal(65, buffer.length); + + // The array holding the number of retuned documents + var documents = new Array(1); + // Deserialize the object with no eval for the functions + var index = BSON.deserializeStream(buffer, 0, 1, documents, 0); + // Validate the correctness + test.equal(65, index); + test.equal(1, documents.length); + test.equal(1, documents[0].a); + test.equal('object', typeof documents[0].func); + + // Deserialize the object with eval for the functions caching the functions + // The array holding the number of retuned documents + var documents = new Array(1); + // Deserialize the object with no eval for the functions + var index = BSON.deserializeStream(buffer, 0, 1, documents, 0, {evalFunctions:true, cacheFunctions:true}); + // Validate the correctness + test.equal(65, index); + test.equal(1, documents.length); + test.equal(1, documents[0].a); + test.equal('function', typeof documents[0].func); + test.done(); +} + +/** + * A simple example showing the usage of BSON instance deserializeStream function returning deserialized Javascript objects. + * + * @_class bson + * @_function deserializeStream + * @ignore + */ +exports['Should correctly deserializeStream a buffer object'] = function(test) { + // Create a simple object + var doc = {a: 1, func:function(){ console.log('hello world'); }} + // Create a BSON parser instance + var bson = new BSON(); + // Serialize the object to a buffer, checking keys and serializing functions + var buffer = bson.serialize(doc, true, true, true); + // Validate the correctness + test.equal(65, buffer.length); + + // The array holding the number of retuned documents + var documents = new Array(1); + // Deserialize the object with no eval for the functions + var index = bson.deserializeStream(buffer, 0, 1, documents, 0); + // Validate the correctness + test.equal(65, index); + test.equal(1, documents.length); + test.equal(1, documents[0].a); + test.equal('object', typeof documents[0].func); + + // Deserialize the object with eval for the functions caching the functions + // The array holding the number of retuned documents + var documents = new Array(1); + // Deserialize the object with no eval for the functions + var index = bson.deserializeStream(buffer, 0, 1, documents, 0, {evalFunctions:true, cacheFunctions:true}); + // Validate the correctness + test.equal(65, index); + test.equal(1, documents.length); + test.equal(1, documents[0].a); + test.equal('function', typeof documents[0].func); + test.done(); +} + +/** + * @ignore + */ +exports['ObjectID should have a correct cached representation of the hexString'] = function (test) { + ObjectID.cacheHexString = true; + var a = new ObjectID; + var __id = a.__id; + test.equal(__id, a.toHexString()); + + // hexString + a = new ObjectID(__id); + test.equal(__id, a.toHexString()); + + // fromHexString + a = ObjectID.createFromHexString(__id); + test.equal(a.__id, a.toHexString()); + test.equal(__id, a.toHexString()); + + // number + var genTime = a.generationTime; + a = new ObjectID(genTime); + __id = a.__id; + test.equal(__id, a.toHexString()); + + // generationTime + delete a.__id; + a.generationTime = genTime; + test.equal(__id, a.toHexString()); + + // createFromTime + a = ObjectId.createFromTime(genTime); + __id = a.__id; + test.equal(__id, a.toHexString()); + ObjectId.cacheHexString = false; + + test.done(); +} + +/** + * @ignore + */ +// 'Should Correctly Function' = function(test) { +// var doc = {b:1, func:function() { +// this.b = 2; +// }}; +// +// var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); +// +// debug("----------------------------------------------------------------------") +// debug(inspect(serialized_data)) +// +// // var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); +// // new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); +// // assertBuffersEqual(test, serialized_data, serialized_data2, 0); +// var COUNT = 100000; +// +// // var b = null; +// // eval("b = function(x) { return x+x; }"); +// // var b = new Function("x", "return x+x;"); +// +// console.log(COUNT + "x (objectBSON = BSON.serialize(object))") +// start = new Date +// +// for (i=COUNT; --i>=0; ) { +// var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data, {evalFunctions: true, cacheFunctions:true}); +// } +// +// end = new Date +// console.log("time = ", end - start, "ms -", COUNT * 1000 / (end - start), " ops/sec") +// +// // debug(inspect(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).functionCache)) +// // +// // var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data, {evalFunctions: true, cacheFunctions:true}); +// // // test.deepEqual(doc, doc2) +// // // +// // debug(inspect(doc2)) +// // doc2.func() +// // debug(inspect(doc2)) +// // +// // var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); +// // var doc3 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data, {evalFunctions: true, cacheFunctions:true}); +// // +// // debug("-----------------------------------------------") +// // debug(inspect(doc3)) +// +// // var key = "0" +// // for(var i = 1; i < 10000; i++) { +// // key = key + " " + i +// // } +// +// test.done(); +// +// +// // var car = { +// // model : "Volvo", +// // country : "Sweden", +// // +// // isSwedish : function() { +// // return this.country == "Sweden"; +// // } +// // } +// +// }, + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.noGlobalsLeaked = function(test) { + var leaks = gleak.detectNew(); + test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); + test.done(); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js new file mode 100644 index 0000000..cde83f8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js @@ -0,0 +1,392 @@ +var mongodb = require('../../lib/bson').pure(); + +var testCase = require('nodeunit').testCase, + mongoO = require('../../lib/bson').pure(), + debug = require('util').debug, + inspect = require('util').inspect, + Buffer = require('buffer').Buffer, + gleak = require('../../tools/gleak'), + fs = require('fs'), + BSON = mongoO.BSON, + Code = mongoO.Code, + Binary = mongoO.Binary, + Timestamp = mongoO.Timestamp, + Long = mongoO.Long, + MongoReply = mongoO.MongoReply, + ObjectID = mongoO.ObjectID, + Symbol = mongoO.Symbol, + DBRef = mongoO.DBRef, + Double = mongoO.Double, + MinKey = mongoO.MinKey, + MaxKey = mongoO.MaxKey, + BinaryParser = mongoO.BinaryParser, + utils = require('./tools/utils'); + +var BSONSE = mongodb, + BSONDE = mongodb; + +// for tests +BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +var hexStringToBinary = function(string) { + var numberofValues = string.length / 2; + var array = ""; + + for(var i = 0; i < numberofValues; i++) { + array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); + } + return array; +} + +var assertBuffersEqual = function(test, buffer1, buffer2) { + if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); + + for(var i = 0; i < buffer1.length; i++) { + test.equal(buffer1[i], buffer2[i]); + } +} + +/** + * Module for parsing an ISO 8601 formatted string into a Date object. + */ +var ISODate = function (string) { + var match; + + if (typeof string.getTime === "function") + return string; + else if (match = string.match(/^(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|((\+|-)(\d{2}):(\d{2}))))?)?)?$/)) { + var date = new Date(); + date.setUTCFullYear(Number(match[1])); + date.setUTCMonth(Number(match[3]) - 1 || 0); + date.setUTCDate(Number(match[5]) || 0); + date.setUTCHours(Number(match[7]) || 0); + date.setUTCMinutes(Number(match[8]) || 0); + date.setUTCSeconds(Number(match[10]) || 0); + date.setUTCMilliseconds(Number("." + match[12]) * 1000 || 0); + + if (match[13] && match[13] !== "Z") { + var h = Number(match[16]) || 0, + m = Number(match[17]) || 0; + + h *= 3600000; + m *= 60000; + + var offset = h + m; + if (match[15] == "+") + offset = -offset; + + date = new Date(date.valueOf() + offset); + } + + return date; + } else + throw new Error("Invalid ISO 8601 date given.", __filename); +}; + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.setUp = function(callback) { + callback(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.tearDown = function(callback) { + callback(); +} + +/** + * @ignore + */ +exports.shouldCorrectlyDeserializeUsingTypedArray = function(test) { + if(typeof ArrayBuffer == 'undefined') { + test.done(); + return; + } + + var motherOfAllDocuments = { + 'string': '客家话', + 'array': [1,2,3], + 'hash': {'a':1, 'b':2}, + 'date': new Date(), + 'oid': new ObjectID(), + 'binary': new Binary(new Buffer("hello")), + 'int': 42, + 'float': 33.3333, + 'regexp': /regexp/, + 'boolean': true, + 'long': Long.fromNumber(100), + 'where': new Code('this.a > i', {i:1}), + 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), + 'minkey': new MinKey(), + 'maxkey': new MaxKey() + } + + // Let's serialize it + var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, true, false); + // Build a typed array + var arr = new Uint8Array(new ArrayBuffer(data.length)); + // Iterate over all the fields and copy + for(var i = 0; i < data.length; i++) { + arr[i] = data[i] + } + + // Deserialize the object + var object = BSONDE.BSON.deserialize(arr); + // Asserts + test.equal(motherOfAllDocuments.string, object.string); + test.deepEqual(motherOfAllDocuments.array, object.array); + test.deepEqual(motherOfAllDocuments.date, object.date); + test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); + // Assert the values of the binary + for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { + test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); + } + test.deepEqual(motherOfAllDocuments.int, object.int); + test.deepEqual(motherOfAllDocuments.float, object.float); + test.deepEqual(motherOfAllDocuments.regexp, object.regexp); + test.deepEqual(motherOfAllDocuments.boolean, object.boolean); + test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); + test.deepEqual(motherOfAllDocuments.where, object.where); + test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); + test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); + test.deepEqual(motherOfAllDocuments.minkey, object.minkey); + test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); + test.done(); +} + +/** + * @ignore + */ +exports.shouldCorrectlySerializeUsingTypedArray = function(test) { + if(typeof ArrayBuffer == 'undefined') { + test.done(); + return; + } + + var motherOfAllDocuments = { + 'string': 'hello', + 'array': [1,2,3], + 'hash': {'a':1, 'b':2}, + 'date': new Date(), + 'oid': new ObjectID(), + 'binary': new Binary(new Buffer("hello")), + 'int': 42, + 'float': 33.3333, + 'regexp': /regexp/, + 'boolean': true, + 'long': Long.fromNumber(100), + 'where': new Code('this.a > i', {i:1}), + 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), + 'minkey': new MinKey(), + 'maxkey': new MaxKey() + } + + // Let's serialize it + var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, false, false); + // And deserialize it again + var object = BSONSE.BSON.deserialize(data); + // Asserts + test.equal(motherOfAllDocuments.string, object.string); + test.deepEqual(motherOfAllDocuments.array, object.array); + test.deepEqual(motherOfAllDocuments.date, object.date); + test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); + // Assert the values of the binary + for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { + test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); + } + test.deepEqual(motherOfAllDocuments.int, object.int); + test.deepEqual(motherOfAllDocuments.float, object.float); + test.deepEqual(motherOfAllDocuments.regexp, object.regexp); + test.deepEqual(motherOfAllDocuments.boolean, object.boolean); + test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); + test.deepEqual(motherOfAllDocuments.where, object.where); + test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); + test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); + test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); + test.deepEqual(motherOfAllDocuments.minkey, object.minkey); + test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); + test.done(); +} + +/** + * @ignore + */ +exports['exercise all the binary object constructor methods'] = function (test) { + if(typeof ArrayBuffer == 'undefined') { + test.done(); + return; + } + + // Construct using array + var string = 'hello world'; + // String to array + var array = utils.stringToArrayBuffer(string); + + // Binary from array buffer + var binary = new Binary(utils.stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + test.ok(utils.assertArrayEqual(array, binary.buffer)); + + // Construct using number of chars + binary = new Binary(5); + test.ok(5, binary.buffer.length); + + // Construct using an Array + var binary = new Binary(utils.stringToArray(string)); + test.ok(string.length, binary.buffer.length); + test.ok(utils.assertArrayEqual(array, binary.buffer)); + + // Construct using a string + var binary = new Binary(string); + test.ok(string.length, binary.buffer.length); + test.ok(utils.assertArrayEqual(array, binary.buffer)); + test.done(); +}; + +/** + * @ignore + */ +exports['exercise the put binary object method for an instance when using Uint8Array'] = function (test) { + if(typeof ArrayBuffer == 'undefined') { + test.done(); + return; + } + + // Construct using array + var string = 'hello world'; + // String to array + var array = utils.stringToArrayBuffer(string + 'a'); + + // Binary from array buffer + var binary = new Binary(utils.stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + + // Write a byte to the array + binary.put('a') + + // Verify that the data was writtencorrectly + test.equal(string.length + 1, binary.position); + test.ok(utils.assertArrayEqual(array, binary.value(true))); + test.equal('hello worlda', binary.value()); + + // Exercise a binary with lots of space in the buffer + var binary = new Binary(); + test.ok(Binary.BUFFER_SIZE, binary.buffer.length); + + // Write a byte to the array + binary.put('a') + + // Verify that the data was writtencorrectly + test.equal(1, binary.position); + test.ok(utils.assertArrayEqual(['a'.charCodeAt(0)], binary.value(true))); + test.equal('a', binary.value()); + test.done(); +}, + +/** + * @ignore + */ +exports['exercise the write binary object method for an instance when using Uint8Array'] = function (test) { + if(typeof ArrayBuffer == 'undefined') { + test.done(); + return; + } + + // Construct using array + var string = 'hello world'; + // Array + var writeArrayBuffer = new Uint8Array(new ArrayBuffer(1)); + writeArrayBuffer[0] = 'a'.charCodeAt(0); + var arrayBuffer = ['a'.charCodeAt(0)]; + + // Binary from array buffer + var binary = new Binary(utils.stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + + // Write a string starting at end of buffer + binary.write('a'); + test.equal('hello worlda', binary.value()); + // Write a string starting at index 0 + binary.write('a', 0); + test.equal('aello worlda', binary.value()); + // Write a arraybuffer starting at end of buffer + binary.write(writeArrayBuffer); + test.equal('aello worldaa', binary.value()); + // Write a arraybuffer starting at position 5 + binary.write(writeArrayBuffer, 5); + test.equal('aelloaworldaa', binary.value()); + // Write a array starting at end of buffer + binary.write(arrayBuffer); + test.equal('aelloaworldaaa', binary.value()); + // Write a array starting at position 6 + binary.write(arrayBuffer, 6); + test.equal('aelloaaorldaaa', binary.value()); + test.done(); +}, + +/** + * @ignore + */ +exports['exercise the read binary object method for an instance when using Uint8Array'] = function (test) { + if(typeof ArrayBuffer == 'undefined') { + test.done(); + return; + } + + // Construct using array + var string = 'hello world'; + var array = utils.stringToArrayBuffer(string); + + // Binary from array buffer + var binary = new Binary(utils.stringToArrayBuffer(string)); + test.ok(string.length, binary.buffer.length); + + // Read the first 2 bytes + var data = binary.read(0, 2); + test.ok(utils.assertArrayEqual(utils.stringToArrayBuffer('he'), data)); + + // Read the entire field + var data = binary.read(0); + test.ok(utils.assertArrayEqual(utils.stringToArrayBuffer(string), data)); + + // Read 3 bytes + var data = binary.read(6, 5); + test.ok(utils.assertArrayEqual(utils.stringToArrayBuffer('world'), data)); + test.done(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.noGlobalsLeaked = function(test) { + var leaks = gleak.detectNew(); + test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); + test.done(); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/data/test_gs_weird_bug.png b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/data/test_gs_weird_bug.png new file mode 100644 index 0000000000000000000000000000000000000000..1554dc3238dc94f4c8375b17b4b8d34a337d9c1b GIT binary patch literal 52184 zcmZs?by%BU6egJ9?waDzBE^ckYbmY;inO#)DDED-xE9*tR@~hK6e|+kC1`MW%QCw= zJ2U&^ujI?~B>8ghx#yMhCR{^J5f=-D1pokWm6hbQ005Myr^o;dw5NyWW>Q=L0L$a6 ztgMEztSp^|ll_;k-#!BX9>A$&OC6E{vc8fQW^}YKq4Y`=P6|#*RAKCt?{Ii6DEjCN ze-gYm4j`46OQ;4%qM+)(><1Abqmcnohp?+z3ZXq<%%m9z@G9-rj|NtuIvJ`)^Jm{?GC0GO5;0M3c5=HN;mRP?kv zYF1X>gEvxq9`5hx3BP&a+!U|!rfKo#OOtD|b5$2}c%y|mgZtTiH=P5bCr z27}W1uR&a5+jXDv8aM+sG2B_eK9&dtm3+J=;;l@TSAVpp+78mEegHu19nG$+#rSSQrz;^VsX>7sBwT~aQXYsaa$@2%dFg$LXzcC`q1~u&*RFK|VUtSbYrND!f51u);glB4lGv8uLsFHp&*tJr(l&d=j$hI}XpTJ# zybMNO<#)ho1*(PBz}g(%7^BjL8NpPJIXnO~p{8Bh7*hQh*qSou1lWHuPvpDet>l8g zDLTb5??c|sK+o0vh6kL!87Ztq;(LY!Y&Bl?Q2@^ayV(^XcSvC zHzqDeo(X%=qq=(HLD`D8jCK?WU(-IGyC%AKyqEWp^us}fOTA(tioz%lb_fK=DYGz4 z5_1yVVnQ(|^iQ7FrB;ll2+I}gQK3$;$W#VMO*Q*4 ze_E4EJ5xh4{LSC<9-)suRn#9pf8_Z1@Uh~n+;7luKz(wu+UuP3KTChwh?pZvB1OZU zdm18B!ZS%}i82$+lqlX_zhzS1P@Ys-jH4)6-`RB`7sJVRp&Q{BkGZRYGS%D$^hnR0XewAXy}``>n-hjan7jd(*s) ze5$;hyh|niw-+kDNhYssxu{>JGcGZS(>=(Ca;!5X($$#$(cP+ISI{$Z%imX+W31Ny zY|8P8v&N*?D7j{TvKrl~GOa$XW09=My2-AI)f3fI&@ zaRiRMQIAlMOiyG4*KEQ!bT@{UpS~gDMN9=7G8}pbafT`Limtd91Q$!YWxMO3aS&CsOEg-v;%^;Q z(P7-*y1(7)91O_}F%84&yz0ztwGRvqcn%gsDr0`BrHz=UOMECT&o7s1c(=hZ;p^z|80Dk^!bI;sINJ6TOMlY;m<|sO%YBLdLcCSHMYy%OB}?`WTQX8C zaxd9HMRAZi8O|he?7(I}Q`AcMuPBwf$AJ}$#p#>d{kFws?Ql^yrK6kkh~uGSb_+^V zQnQ$&u3NODtwXvCuj|6v^lFUjmCMSJ#NT-Mv5;$;GQM-HEseeyYX&eQKSRB(woT6D zV7am(>|Jo z`efz@>!usdn#>w8Gd$jfHN#@*N9a-MyR!#n8$y<`5^*E3ZLs^o(8Fee)ytgTyE;tG zT2D;Pm7vd9mCn^}^%~CAh1)_V%lb}d(xt%q&tsfO z!k1LN&@zq>s{=0=bN4P`US#le=KAl#4m`t z7w-4Zze!$A)@(_vI&WZxQ^0R7hwdgwd|3;kC0P4jZpZf}WH@}pnW zU6p0*Nk)SBiqo~Qpfj#hq?6^Tho_)F&wbH#!Cc#zxA*DrY3zRY0rCEeMf--1dZ`?` zHnVf^RY0^Svx3L1k(dvM#cmeLHG`@Q(Pq7S7n z)aJpaV)EC_)YRYXTEZSy5FTK9%H6l=e>iW^LxXDZ096#;%yH zWAjPW{IAn53eIZSlhsY1tNH6)8#zkLj!OIHM%?x;w^q*mMcvePjORQD&Thz+$g4Sr zOx|?}P0{arxUz1ITfv)0!ct_pR@$mh-$HevB{LOGCM}Dbqpl~-!xzqirFLm;Uma^M zlIO~j?IsSlR#g4%58v#4ZL;-iDVwQoXtS4J3Gr)rRB=x`GHw}c^0t9kX4!LF9WRgW zX0LkRd#_&+A9Z-fU7FpR_cHG1ruD7GMrQPj7v0M4#r`p`Sv_MMVO&y2&XAzmjBdZ@ zy@CF!Dz%)nl!uaL&P2b6&P;Vk-}bHA?U_|s9o*5MLnK`5-`EV#SUy%GO1ybooc5!) zhxZp+-Fc2;+5|mUgf|5*He|=cc4CDyEhMJ=>aQ0sUTzGY?L_ll|5~dsG+pTM^z-IR zZGh3cD7)vg$+&8T+O1{H#?5ozrVJ)rc>aE7|h|6{wJz?76v} z>AATI{=#WbfK*=?Dy{^a!;cE!O^Zy9UtsgTb|6G)<<1{DVs`sA%#$t{0H6aX%Sr2a z0QcK0<37MW;WvwEM+XbQ=tH#8XeuQXA~PiUhyfy76`K@s-j?;czKqjZqdL*erS!St zvL*H6`Qn?6U%!j%1~*x~KijY`B$Qgke~S2sf~-V9Nyjs~oz^{kbBI7tr70kzC|6RB z;)+)+HeO{Mw;$b5-*zLyGhT(xaw91~FereGW++i$!vA$~XpOYoqb|s+o%nV$=o0MJ z#yYhd-RH>>>)eZ$f|A)Kq)Y4NG@N7=;Yw+ZKk)w4Z_v&(Qm4OX`;l+Z zuLAU+vL?N=Hd_{XO#89Kzo<@=kDoc?Gz6W=*J&=dy@1vE7y8=M_+3GYwB;$ON|i(o zh%07t@oVfpDE0Oh-}>5>bDG|~)#8$LE2Uds*L~l>$J7`!?A z9NyEKpybiBPB>Rd&oq#y&S_fSzuN7oobOZZ;9>d!(|_lm0!Fs=NhX4^ypVh- zaQu9M?mxQ9P^aXxs=?V3Y7Km9s|^GCM3FA<)%ZjhFZ#MwKUkqnL^wLgCO1_f$=^fv4C zEA+B7i&9fZ`+=qWtT%6^e3t((Wqn}Xx2a=D+p@`$w&4*q(r*(LH419KR5nUgpDwpG zi{>3&zZ!IJ=jFIsBG)Y&h9BRFH=0^NGrqSX{FE1Ee2s!2ye)RQdWWbl8NDK(T0?#=5elSJqc^K7@kH&Z*7;0gWSIo7xG0^;NoDq&?~`Ua?5I6eKmBc$sw}XMtw-FI zukDeKX>`>WCPmgfSux|pY5f_5t5LxJCV(|Q>unb&yvn%nC}*dv3++fa@rt4UfysEis#^+c7i z6Y8Ha_8kBs+HNZd2_6Fm&rA@HM&CWC@+%SKphup*)U0);3AG)ymgzP3@NK21KOGL&)1ndDTpgf0k?cWe9{_M97^6V9V8{TJPOa24(t;ZMdmi)J2x>o zqkWW(m3ZB;@V`3I|6E*(fK7Fy4g0D7It7KeQ)zYJBQKxFj%3~_%sq9wwvv9&HOANxg}e(oe3{z3$?GaRX2ns(5Q{$O5nr&Z^slv*oY~uxXO3G%Ju192y`$h?qhZFi#mBL! zj_@tl*3b^mj+PAXjK1siAm<4R$Vyt+G>+H(lFiaXW9G;Ql8X_PMbQ~I^a^K0qat3r zhhSg#hZOIu&VbbyeBYky)&W1{!E0%(%ag8?0p)(KnOzUV&Lp!g4$d0nTJF^@U}$_a zcJowvm{CO}l)EI#?6kwb&A{Up2K(4$d0cXTdEBLj5YM6Z>;8{e3rdWZ({dyJ=}} zoMeyK*s!(54!AyLu6QVVH$1#Jec=}W%sGF8O9x8~D?*4qeymCj50|>cDV^JxoOx@M z&Z}OF+sQYWIyU2%=My}ljt15t(qDJxxe`M-J&%T>^jLA|96J-C1CvF>TJSn`Khz#< zxn)s)E>e==y@ME-U@=|qgOg_^%hk7-y~NP?K1uN~PULR+9jU+4MDPk6Qj3}CygVZ8 zI?N*+QlqJ7fIABEK|zWU5M%l?MVGql)@lwZf(&KN>F}uI<)ime%8j<==7#$t7v&4u zWP=4e;mce9qz>Q5RwhPV&oiYC6b3)ahl0%h{^LR%)pzu+S*+yfSVXvYwScak5>y?5 zZ~Z%w!aE1y{Ut|3{XaSbBM{xp@RwvKtKRasxVZkkG+P1Fo4f)wpI21sdi2w*}-f^Y<7~2W_W}2CNbK`k)n%o#gCBYtl zNVC)KUx8!lp{zoTM$}^ABEcf*vy<>`Zj?UV2KsO0-0hd&s=V@&bL=;-`#}r@v>(;u zu|x?t>uvwG{#;?Iaa7Vc&RgK6g-0t>$j1*M2!i&b<>XN%aCTL~x1GpN2e2Q8!2j3b z{tp%w0F8p+egNdXpOFYL5n#HHb3B((^Sd3#ylFFCVU_e*4Za^clDG|c9hon3dJ{>6 z=k@tvzR>GZ(t!|f^bAT9v7czw{ak^739s)lJR&x4WpX=hI56re=u-07O@%xU+)+aw zO(Z-hyOtQQY;996FKbQK-+GuF^~gy`76Y@S&8a79)K|-Thxe9tL84#&L+<|Xp6%m> zl#!THBRJqp0z9|=3Lrg z8UGHkM(?m%rjK252%n}v2EUh09;-P~>LdNX%hjR**Gwdo;*cb8&$?b8S!To0GgVUQ zgxNT@`Fa(zP%rhn2Ruvfp|!8<{KT?tYuILS`_a^3n6XtxWFgC*QU zXBXuZ^S#5ELT=1t;9d`^XQ^S?TL2;2bGr>YWaQ=*e_3aEAdB72mBRc-0ynfP;cZ>v zH5XZA^AY|6?aQjYWw*_$ySwhg_daQ^XAEPrNaVNwutShsYCeGtd^kE*T6@mdA{UmV7Okb_Y0e z3^34@S&hTN!|8WNTpFD!A`THGZWOTY5r$z{pX7b{eWd@5C{gbp1BWaVOY%S?$;vx| z%dgLD;b10M#8-t<`ES-$@(s-7EW|TDxfTcCUAos&j~{OY0uWr$!M~jHXcP@<)U(&*{}!v_WL-Uv zUiPv(R9r!n4-LKRG>lL2zoHS`s|!AZ&V;op`YFC6#g(XTUa?r z`JLwa$Bm3kolf#Xi)U%6DU-=fJ=AakrgwGzuhL8OQwhO{x@Qo%)C`FvCp|rVd@R|7 zP`%UTs%h?hQS#R3iC)~(%LVk$Gvy!H{(aCKwhFbbV@Tn;8eDGk&c~wnf9ygP>UyXK z872p|=I6`vA1p4Wi41viMFY=!&mMgwxNMreKU;Yi^eTq&Yqj$eCQEU%q;P&npcZx8 z{vGwxG7Wf?8G!8T=Vx+xun<9Ad}+ab<%GF__seh4}m(@!oTPP<=q%|J?TmF9$$D>Tt8>xdaJ0v&?I# zP+t~x(WpOa)MxvV@ae#Tyz*HsQ-z|Z6)YIyR-}`p!-HAHE(1gy*!vsll^MR=bb7Bn z%X*k7Bq=0R__4j9Kv6ACC_7LRk6JZAy&KST8_%f76tAR&vnG}@So8*bHhPDc)K>2{ zt9;8NOYG4=v-8d7$45ffD^8Q()zv4b&o=e^>Pl9y;Hf=NPrrhXq-(Et-JHSm>*{n( zJTG)H!@8T*L3G<$1&;J2SlM8Io%Y9z3KbPL){u|VVr2&&e{Rtk0R~HwG?9ac)2;h< zI-fHw-#HBsunW>tX8cSX-V-d`1S3$12*~Fu9TU?;ok6I`CBLbpA~6n7YRx8rS;6Q< zFp7!-d5g2;g9JOSfD3C9 z&zn!O>(!um>=w7fq@@=3lC5EjE&7f1@#W=L>+8f$h=;3O(F{{miM{!kbdQ4smr)o> zvS|}aQb5G{gu3jC3~_F^32M)UrMb?N7HK!x=@0=7Q;ltd!^2tMPfT#&OWs$O_X)SO zv|Qj5fe5eU=c27pKqSr0%^Ul3HK*H;54YYvACY=dJ4jAZp9n=F^@97h$n>&)c-1IE*edfR`vAMACZgA;JrRJ+wy_*mlu0dpii#uB1cWsXsUdUPVo9%7*|IQ>I2+i^~Rv%0g zByXVp?1(|c?a}6DW=9sn@qS$2Uw68Ej~^KlapzCEQ28GM2U9>ge-tbc{%Zdj3lg~B zdXn?`+~%XTUSJhp*Quh#M;|#GK;yzEYEclzPaEjkrJ4nD=a{kLG`5d9=)ecs^V5xL)&=9ddBsLc|r137w=gSb?2dk zrM(NOzvy&B>HJnYX1Cz8g|^4UvSNMF$X$I9rWKV#6zPcZ)4e}#c<<1H#yZR(%q61Z zM7XF-!J`2a`U)G5-iPlCgSQvk&;2Puog~1SgsSsj`)bem7#S!!@tn}I2c*M)yl=e4 zQNhrPRix{*U(kNo_Rk@@d)i(M<(K15D=}r(Kd#>iHR;iXVm;G%pJ;jII}C0R%#JFf z26@g%0wjLMhsKSQJ#>%au}AsG{#iN%SyBQ=q_AQS6sj|B9MxN%zk}*a7*26{?A~nC z`tB^D^=0%uL!7L2S{jU7`P})F)>ypd}4(_FzQpH&^|t*c@?wA3ID( z+P+&0Ga86BE$3q*y<*7e>>B~ENgE;gWNp(1BmD0Vvq=7VC}lw2WMuV#S0uSTx|*h% zwvowa{||!s|6Uk;McKXBl6e$up7M2I9}g_1l=KL3M!CvKrE%J|Zv`x^Yub+lIkU-2 zYB_6_JH>=_HWlih4Cr}b|8`joOl@bM-&3_r%M^n0cM&`w4l^r$#3Z-8mhtmyXG{E5 zUE2wfUc@E@@ZU4&)6&`PhbuKL#>ova6Fch;kXm<Uy7?Y*4bQXX5PMGmK2UXTX;PMI)5FbeO2ARvbOhIb)Rxj zm%DFx{d9AXC|cpOkB_n2(X#K^&Sylby4>NR0XN_npgvlZ8FTk}JsE=y;k}78jx?_g z9Ds!|X<)vgfMJtT_NtgPu;Cy}%P))ls;UL16#9bxvpsq&K&)O>2aKz7yuo9+_inaP z%7o?{u0p|#^cCl^$vPgAcN!(eAXa58wRP{?obOEbg~>xQLlt(o3_k6w=xQVD-by*< znW3{232_567Pg8?xHv6u+_NV&R-rb(uW4N^ZN|A|4eo}dq~TA3jGGK)H66cLK=q@l zV&?5<=%2=j8>c$@H$$D@FEt<~XWA7eRGe72czni5$5h5)F$WBnD#*P%k9%K_BSWh1 zZtfTmK!nQ-pKZT|t-b)$Lh9z&mS;SRf7QBFPlV-e;G1I6{lyhGd;;Xa{~Q3%+yE#6=go z9!l8-@k?bN;wdCL(?odE6l|56(||~Y3VA8RO#&1%y|eWF_nHe$@R!O7ku~KQxY+{C zA0pvf?Ua~O%=~cp5s}|n;;q{UOC_5XN7L4ny-^Q{3;OPy zM!@wuaxRmk=of+?GqW5H>|I=R>TMTZmFQQP`0Q0*ON4*`6NNyjX!TxfG_Z2o^?C>G zUlkXc;EL^e(NQWqj!K6KMxo?Pn;vpI5lhME4*w=$R;4R?hgM~aY{wel?4F#~9m@5X zXExnbt`6TwU(Z2p8*q-?f_mKjHC zvX}Q)h>vA|xY#qC^Zg4(GBXqjrSfz&I=KFRsqIQd)IHep2xHqnmJuWC-PSBTK65(| zj72GMS0i!}<~wzmS$1dDuj)S}iw>(;_nOiip~*rM^l4QDz)Gadp89Xkh$ICV?@I_C z>V7=Ad<2-B(|MX7W(ET0q6_gwzzmZDod1SvImEW~*|kqcn;G~#o;|jE42NKVq28LQ zE6+et6vT-+YX^hP2Wy#U}d7G!p{+qp^x=KHfQ$9xJr6k z_!{iYpEqUNY!GiT{@V7y&p1c~3$>R1ulT$4tav(bSFq`%Lo}H&6bE2R;%f99`sv{S zr%@>y4dcVE`Zlk}a+tJDJa>9Z$wc?J!AYT^mYUseJ{>-oAI^KNomL(Qg-=a1FJaDK znqSq_SlP^OrHsWFyL5rMMGSvI%qm(LbR@5<3gehBNcTIP0SHkkeW3}#m%VR*p)J@QGPCpD6sQ{B@j zJakO|d`v1?F9d=U-vnR53AWUMD>bjOvhRL4X|q{{P^f#Xu0F|x`4W>ymwB#V?>=a; z(i);ozYI8&4!((voyq$|%69yTBXo@%+sgm@x~(nCkUP4|WgrmTg>dM|;^?|qL#?w$ zeNo0JNzY=EStIT99lIsQ#@>A*5*uI0!2W(FT~U+(rh5AMnBr)iHlS$?3Dn?1K9>cvh01m|X@8N4k5O))D6DTi z#X|*s9?@BY@B1BpZh@Hy^Iss44$HoSoW^?^DQnw43xjUPec{FOZlds`2??&no$Scq z5w4Hp%Y1MAi-U9uY<|G(EjS2&*=mwWD>F`DL&%}TL+#hl?O$4(ly3VrPWz6_w0+NG zOy#;-<&{6w{Q($RS<*^xdyr%px~!#Fk@bo{lPF>!>nN8SH`8&Hl`zG>UHi>a&aq~U zk&VxU&#iy*Z``-#D)rEc zj1&i^SI)e|)fda?FG<4JG9pF>Zc2V&v9n_|Kuqo*>9BZUg41jK!2L3->QxI3^JFB9B&*rONFLwNyd`_sW3n7-s!>kp?EXrup8EvslcHG9>ApjZPOTx>2T|nW)6aS>>S> z;@qa!ed0#BFNtrESnat$({%i(Iali&YXP^k@UsJ%6CLop5nwt<7v~XJsw0iE%!!JR% zb7_ZhUK$l`96(SpI2Bp&k|Q%Q)bn-_)PPkisKc6GgdYMST;UKF7%XjOxA z>tp~chOkwtV&8lJ{k|KXt-Ri*?hT z_O~@jc2txFQsvwIjC&Bxu6q_17APYyEI+|4Y(}q#^YdD<)BbL)VB|YC224Yd=E*AW zvy8y+0HI?q1rs0o64ZOYiw>2KoFV~)0dclgRtTzy`#02JYT%{+jv-#>Ffm8&3N1Il z*!i1^GEzd=bp<1HmbY!iJ2hDtl2F^aB3?d~^vwUv0<^R5)T@0z_#LtJsA4&~oTWW& zJNt@PJJ$&nsg;<^!t0})NXv950XIEkPzvm`I~GnL2djc6cxTD3%;Z7<6Z2YZSfrk%w29;j))<$Hfp04gID277jx@p?S<3Y}w9^8^I2)Cwdud z0F^Ge8BOL2-+P?^4uD`^`30i^g?uEfE43uG0qy6TKkpmh)lRn-$^y1{4D)TQpK|%b zdt2uZV=n-1E98z5sLSt}5sKn5?2`Z%I_t-6T?5|A_o18KuL=6bno%@y%|AA?^nhqy z)q!M03zqMu#C@#+g-P!_D~rvq=WgC(z)8f`oZ0@JHQ|)fU#F+17_et&Ur!|F5?q%! zs(+B>dwbkIQ5a|aRTo(bmy1a>mIa96bQrX<({x4uEi-l9o>t~|r%t`0Vmhp3ruesC z++Qj_DywbuzrxX&n?&P8U7F03nVHwaafrA1fLutDv5ZbI@ z3aisVZoR`<>F-*|lru+XPU_C(N}JB`DaS)I;YT{I2}RJ&!pEMIls;%EbQOh?mgupA zL82`$e@RUWp1Lp)*ep%ejLM0u{$gqKhb2aRhY^DVVH7TA-4X0uS4rc#REutI`ucm zVaw(HW7vwdrfVE})R(ij_5ttphr6)KW?2KmEOD(PpWx`BMX0??zGt?9&>ku%ZQmMiwh;q}NcZv?tT60a@|@`s*eD zHAGs-qiIMK9s4_<)j!5N!c*vk5cH0cqjK?LO} z`6xTT@L<&glQr!N1>uN@+*|*&vb|8Yw^zcW8QK9kJM$aAh`ZPeIt`*78hA>|)P67A zJ1aHZ>^q605{gSyq>VN&+gzDANoAG$yG#ah*HiIB0F=0p z7>93|KZgZI-;TaMyH1x06S6jLNQR(W8ks02Cm|8U-fgb+BuMNxwDWVs(xI<$J$`&k z<0r()hbNS?98hVkOWN@;&lxbft$TEc_fOqlq(Coe<+e<(?q{hHc`$?vVnsmawXV%t z;Redm&rk?{%0d0MmwqGpMiUwKr}fH&=3^V1QGM{n-|!p-5EGHaTs;T-Qv{12REf(3 z&oa-c#t;H_Z2RV-wo6Hk~{Wss~{}>ieAnn znC9AbPsZuc7&AvA%lsT?u%Mtr$66|i(GqEelCaX*Qtm1HW%aU0sO;65D{D&XQ;bVL zR-6(0C*J57p++w7=mmAzt|{B5K9?jE3KirNlLTGtKBR?dqL-o#c!!1-TMNP5uLK#9 zWaulXMD->MkwI*;BlI|fBR^h~K6wD8-xetncrD+8raOIC{QY&Jfme&fV-azg!HFMi zo)L<#BOyK+tgz9V<9pt!CDQBrjm!mc$b<2rdS4*o&_D|da@2~an;2`^@Ih%R5skR9aV64{Q5iXB)jMs{M_kT0S#*s+%v0GRR$Di$9|SuBL6TQ z)PKCCJVQHy8+!h376jo^c$z)u(;V6%MQQ`SRP#TXOS=%0aCOy#l{u^jpEB*v1f3_9 z4YYrtkaOnhI@LbT3ZwfiJH8@`VNQ*jhURpzM{pH|gwg*;^?ciXmp@p5hbOoYEIn6e z!>on$#X+6;jFd2E1ueiN3HJrkF@zj87E9;S;T>?+-%r7S&%-UY81x-%&X2~FsJwAw z+T;5&_`V_MQ3|DRk6WS=Oxu0utuyJIU|kpGg+fkHR*5?UuT&tLxjkkkxOJrfU^PmX z^;gcrw zy!_hcZe}J`p{zCb9ksA0ujR@bfh5uLU=2g zqY11sco&VDtwE9_Q9PqH>fOf2N%H23Dhea_DJpjLSDXjQ+{#KP8tHzRzrmIl8B%@2 zH6!rxKNWY4gvo8S7{=!+xa(W>b4!52cI4ALdAI|#C39qK^Xw==3s61hNjmd1i0`?X zE;G{AnAzheJ^Fza;!D+ZZn-KQn=|fLQd?Uq4H3Nzm7x#2b8dW<&5GR0MPZTum;fT} zTCMatrF^8tQ*>2h7_|7Jlh^l=HTXLAtBZ8L)_a2E*4SPYEKd*$1qTEJ2m%OM*A>50 zRn1{pW#gAP7G%U%Q0yaQ9rfi1$qKLnfP@T0A+aoAvbLGWX96byEt%j{Bm#Lhp_(N{ z#WbX+SwQ8k`8Z%oj zBl*bK2LO=zW)C52Tl{0!IUFEKX^Fw6ME3q9?ANH(5M8b2)kU(!onFN;N?4u|AicV;PO z_=s>GQL%4R$-!Jmj{AF6rG@byROIjT`#z24ni{|8e3=iRl1S5zMD1~UinT5rot!}e zsMwC~rgo(V6|+bG9=$p}j65CURrXvBiOR^OI6`fdf<#jJchqZM52%09-H?3rFvdPi zmo!yq09V&vi@FvweIvhqg1LTV{J(%^pt?jZ8Wkhb%)c*tLgb442%a3m-R}Yfq*wTo zREhA+%o*~|i?bV%uE*5h3CD*mo)k!dr-L172@T8t212m+KN1AT=e#m~u*TXO-W|Li zUU_H349-=2`lFTqY=Ez+ph;;ZBH6a(8G_~T0!72$gj1@p!iYT1*-~Y9O45_cb~oD` zo$kI!@jZJ6D^fg5d#8H>JKJ_R-Y{Xu9d6w7}mAt1$hxs1b-vEp8Z6VtpxY^MykY!yg=$S>TsM(JNz|OvYtMVkPdye(tP{E z`%+Fr7R-v1bAaqDT+i&%Ow5fGZ~$EK@5mbi`q(|ks2r|{tg?)ZLAShsY}&TzdcTEB z0zPx?>Cy{j(y@)n*syH#oh8Lr!sEkp;do_Rt9cS`wS}5ntKSvpS6QH0Kg6lwlU3im zD+~ptk0f(nvkNc)JrGG+}nUl`8CmrU4iYiUI2KQyDjEbpFPT=CQIlV{FJ| z#h{s_WGPaVNWa{1553c_tU;xV#*1Pw3x?1lPK2;-L&l1-a*8n0Z1$!r4b80hvgpC| zk2n_vV-RKBV|vuACub^MpAq?JHSPIu&MOE3;>o6@Kc&W18tz}+b$#5*Ox%Mm`oYCM z-FdR&0`Voge!JbfwwYz2DcZZ1!n|9jA;{@8z{6=LFiC}`I1Hf& z$xF>_ym4cNMXtHSMPd!zf3884(4OCMLI)c_B?jG(`*WQShMK7{w@EjMli;&9jY1VX z*Nt%@{lFlx_+Y_I9?~m~H(KhaG$PIEGGLNMvFYI6R^G*A5@4KC6yrB@D*Q2Q&5U4o z$>IaR9BA|iAEFI41mJxBzG^Jje!nT;+iY0Iz^rZ(;NF4$Q4~l0p1bS#?0PBGCVlr| z9|d-C3+p`UydSx&o<+dqtPRxXA0kRpYcKs z$WZPbxM?Nzg4JBGmL{Z!3eOa2BfrvjI9vW3543Xm6V6NYK)CV1`x$m1c=p?EL?ia0?69RMO-E4UI(2xE&Z!+aXuxDwO{jHby~s=wLw(lFrR} ztOq0~rSwn22KE#0tBw>>Jb>hp^&S^TrDf7h$o2CD=0`;4xNvG zDs5+vk7+Ud>99k7^Dhx>J8n$(@wsFKdSC2LVXUj~I)?J}A&BUqxjaehI zBtDhdVTWlMRjo^9TW7H@t`3}wK?K5F(f)g?9^>KRW!b&D%G;(WGEA$B6t%n60Qpdst9UszvP&XhIQzNXJ<-V*hjM}}t+;`izA>$xYs5uV< zP~X$ykc~2Sn0PgMb{wy`cG~;m{e#cVW>mz!6eJwW%&4QBvqS7y>Yd+Z4GtF4tBsDw znXfJw7|Q_>GE|q)nkla~w0P6eKtHh& zJwG2TGE5f{yh;&9M$E>BX1~*Bjlux$>u?5CL0mT)vkOG*i`E$L7TqxLLi+mpbmiGI z8}byxZzKe;3RPuF3cWr`8<2kOl_$QLB18p6Cbp8qw*hG16=@V1-N<*W+X!t;-6Otb zmv^<~zNBNEVBw2(Hff_UZO@YK?(TTpRQuXT^YdS29tPOMhYHCD$LKJmQEior4GuL8 zAeTU~N7SBQTrkXZ0FM0idYlx|Uo*RX-D^`~%AqG&b&xALz{gD|*W1PqF{E2-`;Jsd zcO+Sulc9U}eopeo+s;B*SUg~tI#=)0LdR>28`Ip6epXgWxELWwUfem(Qf!+#=T~07 z^ZbBIvNn4^KedsJwg?fVg)uw_ym&16uQoQayPZM|SX)(y%G!p8y>=@XGr=dbN^j@U zSahIByCCjMrAag@F){J2&mwa)L6fnXC`scInv3S$v(sB9;2!|WC=z$X_NA{8aY8`h zku`Sl_Lb}hxQZ)l4!;=%>+w#oX?fI-JdM)9(8KS+8qk=SU0n`o%FHq=K43I9JKnW? zbZUxW0x-+?i>3svoHL&MT`0jv1lVgC9W7M1)wGERa3UFb4ptL$kd?n3NIb$8-{1ob z4Gr}_B?ELyy~QL*5GDPagZhMBnew(^lV2G$T4R#j+*yG>W@bti1;<<@SYGTj>Z`x? zD5(B$S3of0r8+y5?=!}18U;&YEh)6L9>cmcM#N)eHxmV7TB=@bE@jy#xhP-MJ2lg1I>11S`>oeyD zc191$IwuPDQ)J7+#$muRa}xw#7v#mhL6tB{M2bSfl*89?Xrqls=AA1Bp`UW& zoKM91q4y<30Jfao0s9LTGfa-lj2ems+jQ893)&6Xi{$^pKM}U0$$5}4v|`!&QN{z_ zc>Gggi(~C&{mly5i7rTyj8`f&vm^n;Y8z`8+Rs%}1};|VYs`wWqWeV)!9cAUK|8=~ zf?U*`#@;s)4tP&isWQebTMn__o-fY0mB3!3M4?)bYUa$$D^Wm^=oh8e#PEcl;4QVfXT=a{yQCUCgoNDn#S|qU+7$p?ur-@v%>K z5wb_6g+?K}QG~LmkTgVvlzlg5Y$0NZDBD!B6j`!lAF>u1OO`A%_OXwBjF~aN`~7@A z&-eTEeEa?9^_rJ^=Dx4%I?v-gj`KY3u3GLZth}V&PZKNqf%i1H%l4%r_r#A$Z{Z%yvv5 ztpl~iUPe7_AJQ8~?qi?6<;=iXv?~>EU$kUd_Ol~&Ojs6Qkf^a=nYgFXK`aRm<6g@w zfx!s{2d2le;zE9fwaAA`A73wl&l&dq)_mlo0j*wHS>gB*&ZHJa8>Fm1QxPlk=2|=I zx%Y%``rvxd{HvhP6Ug}+*HN9bFz{0wU1^EWtM+o2lWv+@xZQAe21%oHLV5K3bU6e$ zxvi2glEaVbPjqXXd9?PxtvdBkLGg*I^AQt=b->u?Gm`z>bd1wR-$?(LGP(Ky1F1eO z7rxi&;u_Lhd64$G(ej8a_1oXHlz%CJAB(n@mw%#8;(xjrwE&cJOIOP}qo4BSvQsBU zpaCUOE)gOxge4}e+1sUH!DnSKl=`Pzlf*~9@?RWPA^>)L%6!Bs>h9O*a(6qT&z-+Z zuuw+NVI#8;LtW}|Ep0XJ)7k<}&RiPEsSMKoSoL=7OH_M`faA%8< z;XbE~;7hL#`zYG+{EEN7+;U5Ne*Zda7;~Jcd02%w9#8#Qxr&!e_dxjEVA%l*Y;zhE zRQ@xL9s#GF)5A!f*z9^9W)b#2o1_r)9)l?!asPcZtuh#BOyTJO9UsbOW*LFmJ|cQKAzG$JtRlg&3_c{K-Np1>|J*04TWF1@fJ z^A&TFve&-x1#Wn@@LQp|wbK=&c%JRc<^Cp#k`R}oZz044hs5Xxs<&Xs=8rnRE5ZU9 zqoqz^4n{2iNfE06UWUIh=3`}&EY^B)VdE2DWXL}xIT2$&K=AM&t%&`8!ZcB0z`DpZ z4*g5&D_aFCz|pz4&UMo%1;~87iU*Fx!g+3vIlan?!)ft>zla#eg>^O!x*iQ zJr}O}>FN8&=*B0U?=|Eapq6)wT}i7I*vD}VriW_O3RU4264wi}x(*GZfH|n_-TU65hMQ@PFF1VOz(JcQnZrY?h#teJ4G*q56xH}vZlme; zyZp3-7MXM2Ia_r&#_3&U6tF&k9WE;yl3%jPe(t!N8^yg={}{-U+a&06I{)w z?9d};zQkgjI+IQffmDMoMV9R!l{lS{5Uk7z#P`BykwY7;(}mGoZXNO~( z-;Tb#rL%L$f5zsXXis|KS*3zL$!(de2t-e=l#Za_oGo+P)rj!0OmuwCZu-A_0k9KC z1T1x8K-{(}s@4_H)1NtpX;(h-+)`wwJSiM%KRaV^p4&$$%a*0&cGNRY-FLA#gIp%m zHj4Bm_T7kR8$wvQ*)JnF%V$HyO`y+nnp;~I_)wou1a#Sh`y<1*#t!Yjw6+0Y@gFL{ z)Bci(4g+-VP*>n)&2|bfIL%mSNzRPSK?d&yX$r6}DQkAP?RSP0o}HXP_O{O|v6rn( z5Y+M&AAY=2?=APehZlv??Ma+w2;NM(4n71+)NrE?jzzTv=&tsy^iv< z{|Gr1`yg&RKQ2&Pjsv`~t#*uFYbVjqKw?bfmqt?e&vHFmTwM)sxexBtuZvKV+i`0&rAq$ z_{GuMXBY6A2H}{%KJXN`Kc=4F={hUOs>|bYC^)3+gfG%?Z+)`pYE51q*S7{nJ}nkA z)%g7(2dP-s8ib~VP7MMRt=A|0(zJl@CG7F-VGc z`0A1G4>*_u#g~|!mEjSj+eLn{v=7xB4+^ibUlUjiMQ3)ub--U^Ax7CM1cy~Iu=*l> ze0Rx(*CI}zkhllgWlGg~Xat_QOWnzZ1TcxMec&8<5fMRB_ zv%g;>K@bCGw}|hOr?!>2<<7E5#jwY`F&3QBJ_lgZFMcal$FQ8}0)-MQH_(i=8B$54 zwW=bpD=u2ge03Y8BP`LvMrhqiA$@r-4OKhScSKPF#pq&{z-;=OIevd$NxgZqucF!E z$uyUuiInhMLt+x4+e=p|5K6$#dmngLM#u~=yd5QU+cwtmM{`D9pHi{swl@w4P`Rqc zsM_HhnbF%){xM}u}6_qEWVTF6e%jP5CW+yft3BB|>@lU#vNUGOowr1%F^t?^hKS&1@zj;ks z8|)*C3cF7d>uX@Ml0wo6uJqO6L@{&9!4$Qi9KAA6l2oy zm{Qz@tasYnl{@Tot_hlGKxJa_y&n3f%luBI2)8z{Jv}vKLzo_Pv;;VLc#-e8Ld8 zbLRZTFQQj;FS~QDX!7$HkDf6+(p*K=qAqZ)Rt zxVKMkNHP}b93<=Wz6`*9FIsdS*YUqTRrka~RqNg$_YuGWg3&5BiBkC2CJ8iC_}$~6 znx44_{B`|IpGhs(jPe+F-dgscL@bQH%h$b7p4T^sN#^d0^z|uy+@2%Rc~(=^rqipS zkNWlMMGQHcCH4P{;8($u!FBmNioO6iV}GI-0J@WFc|uK2{u+I1Gv% z+Sgi4u<4%(eUb@S4XPchR05T)NnE>>zy!!4Hv#zZBUy$;kBj;C8OskoIg*E--0ifh zygw2d!roDp6o9sZSDlh(Z^v~kxFs*VJ$=Rag54PgIZM#;8TPJ3mMc%0R8?*IcU>x7 zTsJ>m3F}}LIq#A;EqRGG37>phS4VZVW$gAO2NxSwOGTE1myGo5C?&YAI)v!L265|y zdq^eb4V!=f5S=d&z?h738V`eJo~zn0Kbz!(A=HXUs}sjt?3Awl@-lQ@Y zqH|tjEJ;1R_x|Hw{IUbFFAE|=VB$?roXt8fi!TA-l<(A(b+(#FyR8h zYaIHDI?v*CU5fhpuOzPy&AxfzBR@VrT?sR2$uZpj71_HH6xu zcRzjIA753^{5WJ6qY$8Y+3I$-F-?CKguOUJ`EhJ{{w+>d_M-9`!jv-5I(XCvw(Ppx z4Vd73@(D@|_QmEb7F+@eShPtF-06Jz7?h>{D*TN6iB%}qiEc!+>3vM_qY7Kijp-Z0X)RftID(+aTtmZYbirmb&z1Gc$Az~< z!f>~AnThjnEu0*`l}~w^h)Al|SReKuv|=(*wU|jCsxNVRV(waZ@67Cal_qwB?=Z%v zsE)b!@m}fQ%0fYA_g9R~zU%4sy@fGo3*0X^fqgN7ZDXeb{?`Wyy|BjyIR)->jU|?u zrVb*Y#f^E*Ukxuj3A?|de8GU@hY!_6_F&LV7Wzt%`s*yHe^E7RUs$37Q8RC0@9m$hlz6x_6p;E{H$F+Qkktz0kQ&~^4^># zJw}9AJrp5vpO|^eQ|2~`WOdWIuUUbnomj%*UzW3p#eBkx7T9|!FeehpVwY?al zufF0~eNlH2-;D3#%|gXXVXl(`d&X<|G8q=D#-3kM*-ick-ysQ?JwR`s@g8h33l_+OmNy+aGs-*&i=@?C=K4e!;_d>5F@`ReuZ9DTGa(qtaHDe zKRzvbET{5ONsJ(PR*u@qMU2VaKVBUD3!w-+PaO6?_Ic1pw}rE82X zfr{^qGhIQ4-Hy0V<22#<2y(ur8%I!f8+Iww(pqVEJR*8GX8SgHrzXyKy$l#9zot!* zUdLl3b4Zt@1b>a&U$ADtzRBdde#LAP+mFMQxLtZWg$p4L`IICP`~~o^{ zS4VBQ1hc2)Nu5Gn>EDIAOPJR^bv13uHy5Ns8)Ak<1>rysXh`W_rt@AjZ%KO=iGY4Z ztXdgp8HRS+g)SSa7f)`$<3eGbSx9{*)q@njc^eS!<08=ot6o`YR@#2n#SQX)YDGa< zAtKBVn3Qi;@{>Il<{KzkIxown@vC1)N2aYa!R#K>)MCHbuxDGShljb3Sa680i+$2F zHvC6BtTY%7UeM0cAVd)=b|*ck`tepP&e}{W8ftfLyRn`q=ViQ7!-KUuVtX|Qe(Bxk z9h)U|`-Y3n6cay4_rz=K7ON=Djx-KaK2}L-=5KW>R-4Z2Z775i1aL~b`tDwhx&DKz z=ATs?atPVyUhsj*Aej3V4RG1AGUL#;DxZYYWq3cj0Nig`bX+Bey z=AB!i-!FLmDl4WU=`@R{Ec7m!i@ss!i~RF8&~NT*ki(X31=&70y%A?sB?1_5X@!!C z+sw2kx-Og&tlI-4!#{yv9dzLljSnS5VzTm zvT9!V%I7Rw`%&*{3LdTdK*z9EMYy9ygjwK_N0WC*Gl@oV@?O5>HGNz%_)LDI7?MaD z+mO5hS^|Tg|FvQ{{}QCN?Q1)jY%Hr>b++n^C6h1?>*5(rQZzt!FvbNf-&fB#eyqvW z(y-L8h-ztl$u`WVoE4P7yt8O#I&3b4^|C@r+*tx5NEs$n8+$J1y#yk-`|Hzqod%(Y zE5qR4A>{|*3NDRPx_Y^Y&>ASE;>gb+2WE!PGR5wOEm+SZhZk=}yhoE3yl+?K@Ct^r z^+hI6^IKZ_9T)jjSd%{#rO!|@JLeSWptbp!=bF`RP5)w$8QdHPS1g#J1I?J{#*X9& z9*ef}^<|z5!DrrPzz_19w?<$ILqg3fF17EP1Bx#y>8B1AUXfwo(D3XVYb88rV`{y+ z|K)dQGCrvHZynsl#*CcZ1pCvow|1Q^;BkT6%X-T;k1gX4($bRjzitZ;G6|nDlL1vh za+zLBm^OBK0bX)LHJS!7Y6&1;)4_046Y3q*KWt8@dL)~(dx)*P*iH>$TVNPo2)-;b zr~nT>3|jAb6BJ0ka|eBUH@gcY5rEl#XOj)|CVZQItF3Cr!@Y2#Z-saHtc^`vhI7ks z*!KsVI$0}Ox1w0r1IAACKKOVmiZ4teL~`BB8#1b&bnVFR7AXO5W;J^$V!+-&pWoTh zMi}gFrwD`CwxfjIv!FMT7Nr%cOy?o$TH-+v(sGkdZK}=WLo*SNUR0)k$u*IJOf4GIgf4S?yJy zUl){&l!xfJxt)K(0X7KhilIiwAdZgg-}hY%S3!r|aDZG9!@OVd_4{nqZyMga7rrV` z=D(&s(LLQ#@v~)L0p!+mLHJU%C)bJqvoGe=4Ho@4g`D%xgWinLf8TxREBe>*Dmf0u z7h=xrY8<<3IPq&r4Q4Xfk5894*H<`PX)1)Tv$z6ly!=Mzt-$KU+XLv*8AF#P0X-qklV z+2n&LJ&zzW?Bm_{9%Ge!BOJ_d{!W>$1p8dlV7wWR#x`Xsf#Ai>PEAV_-~^e@x7x_% zvohtgPXypYRo9ELZb9_1D!0wgiG|@-Anul6z}uEFXI5)M7NZD`7!wf2oEPVXY+lm9oT79GJdXA%e?Pk|;0gv$Wd z-u?p6*wMzUMbUop`UFX=SO1PUS^^%eF2KGTx+q2@mP((L4*LaSh<$0*?%`V77!$c} zb!EMGzBph7dB-mq#Q$7M8e|hYJv%bhJ=OGvgjDpja&Nf3j`-M?zBn|2SdXG#1bWy8 zgnD>+njTn%JlKyOcTW=M82-!=k&tq!ImG4247GUwul8N*n&EecKyQ2VMsgx;6Kzpw zUx^A&O&P`sX_A}+7FcbEPLRaxuH1TOT6hE7*JaIy^h9sLih@LHac4mZgXgLZcZm08 z9Tf}_-qCg$Zam}%WTysb=-mLUD8CoXJiMcjxxwWg_KUfhQ9bK_qEo#Of~W#i8v zeEg$JJEEHN0lIyth&Fa9>9%04^Lm2T@v{fD7uZIESIcYsS>AdQIGnq$F1P}QpQZ$7 zr~$6kok`&E3B&$R57Y0G)GHb{xz3FZZ#)xPp5h-M?|&iILq0*$LxPBnpQw8tUr%H- z-x)kq{>#~zzZMpelS6r>owmdLJW7&<`^K0Ak$C8?4-9e0;O~nts$YOKriL42zS}dc zLM~{PiGn!96n2n=-dHgxEJ~;JF_>9vYTo-=;}W6w*nQ)|Pgfke(~{VqveVEsx!i9D z2G9)4P2}Da3yxELsyfN0MD_D)$occvxmw;@L{Q#4XLm3ooa3W!oGJ*RZK9lax3}hB zQU@S;zm~7+HUmQyrQ6;_PVC#lf+?t{6kBAp^*Fh_eL9-!gj%3NfxPJAG@()Hk^nnb zg7jOyuw<5obgLYI4bVIcyn0vY%QGobr(o0zu!HCoe)@SDJ>d!czl)KHr_77F@~Lh& zuQD9G(p>huTJLoIEC^4*iJjXSk#b-<*R<4Lu;^TfG>8$x?MKIj#(A*Qy=#xOWb1H; znrIPr-kO=*R_1j4nekSiq0B&fTiONW@DB{SCoi{Cr>KM`RacR3EBLJGeJe_45$IO} znH&1Z2QLr0LJ#BwmB+%;L|{y6D$grO5Nbh@>1?x5kjJLuX4jx-^XnJ1Q()q}c;OHO#B6T&P0MKOV#DI>8 zW&keoGlb~(SgZ!p{x>CKs+ZT(67;@s-)w1BKNkOH5`J)7NFyu#!N1ac5>5Ks*xeH| z3@my#@-BHxuy3SR%)`LA^{t2i%1pa-oBy$#brEI-t#wXK&#_bHU>{xXTkS<^d~#)- zPE{F}4W++7SiFnID}kBIF2s}hSl2F@h|aXUzQx6EUy7kI>KJclY}uJ-D?!p>0b65=lnhfUqy={aAeU5%01UHApruaQ21 zmD-GeViP%Xacs&Re99}Q>o1$U_z9zmD9CDWaH56+^lR%$&u)05t|XP}zH2;r=(tgc zYTibNlMq@BB$sv{B_@CFw_o<8;-=2&h4SZ+w1uTv z6}}3!@7eOc>qEIPN3Rz6Wd}Frcd!<$gs~BBZ0zw&*`4P+E^o*rY&|Uj-XAhd>Ym?$ zRjYpp4-;pxDusp0SWq7RKl2Cx$ZZ`-!E}>m+nxgRVI=Py7kGx3eg3D+ z1VZH5=7NRH+hfTLr}P+$EuD0XjKI&f@}<7W9%C8b?AJAO0*&u%62sXfnw3+|^~s(- zEp?#CyP!PRk7{YwA;OvEg--K6HIHJOEOMLMzV?Bw_-2dgm7E)SezY5T|JbvwNC1Xc zWq7%$P&>jLduA)~40)gg=BFdb{dSheg zt97U2O?Ss%{)Ivk4rgHmP)HY{;#_{~^qIB;=D6Lb{rKNcSZlZM?~al7N(RkC^x66< zpjuja{h$PWE*SaBTz_dyOW5ZFN8aCe=5{)7Eq2a+fA(|J=wqsN_}Vthi5{bKR8g+d zIM3)UA1(GEc5e}8RpA9<^uge$j)ztPLjzz++XUAxz#o65!xW|A0(NnAtrh%Y-x(Yv zESGO#r|?{>!wbbm65N&O{f)z|;~xLjKI+?%iJxad06;J{{&k`zl(%i<hy*^Q_~(P+bqs5XK`bG@3-|k5?(W+4JjfW$P3gwczG&Sy z=-kDGWZljb<>4P9MtzQ6{zT2EjR`pfvF6?=I7Z;)rmxy^hP zzf~Jk-T6B`C8dy9rLefTCKY^->$OlTy7S#8yOKmPa#$ABeqfmdbd!hc6rcEozI+}>g_~%tHW262jlTG~*%0$;p159rJRjPtq7AbO4+1KZV!{YJ6&M-3 zeFn3s&#ljhT6gxXjH`n4)&O?Oq(>EgPsO{iCYe{yr9xnGD;M>4+%m8FgWtwxXZZpR zs+8tdp3b>i!osa5U%#^Lkk9nqStKs@GY%Ymyy(jt=|FNV2gsbjL^r!8<6Hy&=)^dG zUI&dffKQqYTJhd`VDY=B=U3HTQ2h~2nlIxn`?)%gY8m*}cV;N)2U2j2vQu@uuav+Wc%BLR*Nf(6uVDVZ*{Hs89aMm5~@m^QgXoL+HmjX%dk0KVX7PYGS138n0SN#FKwKC!StWP;uiAynWIVH0Zf`NV%r$ z3+PQSl%???sF@(E!tT2DcFLL3)@url^0m^CEz3KRz*Jx==sl|b?_PjcfTl1UE3nM9 zxkS58lv;q-Z6}z5 z`ptFvu_WI`a~KyR9U2lK=r-cF@H})fXl`E9@V#N&OJ$?#A0_7s$8InCPngPxzbz7> z^u}%ZV96}~$8VO4iKB?D(~=2Kl!|k6L-SxtAIGb?(m>J|%wqGQ?)H*!j9DPwow^yZ0?qY%HG8b@v(~FCi2hU0~4Khj+MihxxECmBNF$udT+%ho&5F+ zeBTi>Ljyw`HTp;KK3GpROQ}8C-mBmdu;&bp&Fi#Y)S2>0)pjVXbI%FwWbafmW0rND z7awoL==j{>{-bcFtu=xckrx@dGO26_vY^Pd#Gy>}}x7Zs(w1gh{_m&3sc3)bvRTEn?8#^db5}Ia~3q@yc z>5_pF5$%`S$(ikLwO$fkT(c#YLgM2q$gz~7+KYDB72~-D1$PnQfCJRZR=}LTLShpn zRbO3Xa9>fmN*?(Y0=?*@Ko%(L6&p(Ea|;x6c?Z1L=a(;{ME&fvh{Hb z`^rmiP~7BkvCqa-%g%riWL}1nLXM?=-)ZAFoAX+zC(rK^7D`@`B!U;;!RM$qN-#F- z3zBA_SXyiWOWP#P+IqHwGnd?(r54cGB6+T*xysGwl)0+U zg7FdNnZgie?(S}{$-^eNeoOm6VW;X$KfFH*v+L4y2xt9PGSEkG8V=$-|1f*hy|}*i zxIrzYdtas}Hd>4E`M#!h$Yy)GQ5heKU#u$z3vAN-@Y#__RDE~NOe|8#s4$7009SvwmVGs0xl5!oa{y zwG8CJ&eFgW~{2)I*{*=hBQ)lA5BJ27E{PE+*&)(OAe+{{O#jd0;^yEEe?#)Kk zPf$fgpIORgP!yPtv29P? z7}{y}9}yTh`F9=8qZu~B8N+bC*S1BCvU=&JMoRPLrb=WLNWX%CF6~NM;qmd1uTK$4 z8ItV*+CAC`fmw@`f8zK53FJ87BL9SsqhS)iLzJhzqNv$vJY!UY&jCeb({ZvYo}xh6 z_evbE{?Es#SS%veq`bDOuuh)uRBj zorg?1py+RN?GJBN0d|amA1J{N4ho;=4Hgs3+MH81YROnT9FRyJu`!s0j>0qhwkIv=ER>lZ%P&=r-mC5@W!QwGX|%?uhES!hqn*-*zGcF zZ!w0olC&};4kkS2Nwaq|mkjXP^1Ahx2d}3?iu1x-nkt<}95T>%&Cs-O59(%1rgwfK zRkAN{QZIlr z9c|FzVccb?Js|1KR4nH)r}GY~LOv_5uKDsp&Rr7@HPGl~<=0=wzoS-Gv=N@(<2rYc zTBSABNAEX>*t>f=Il=xT-vG-ME-&Xfdoe7&c9Z`5`%1wO!Ny@{hcwXsDs{b14ViY_IWtDKm0CI%$q(eDy3alOQ1{Ar;%s~+u~d_@{G!S5xFM} zjt^TuP9<}O1!ABk_6|FgLqe{TjHEwH{`~Y|09Zk zdH2m3&BS`0TM4*;^HA0eeNb5{>OFlfVci5Yt4^8jh1=R^Uf|l>4{U-VLly8xJumIr zd-Ud(qgGa(p1ZAul+KcH$)wEE7KqAXH~u+V1(WC(!WDwJlR*nC{n}R7m`7^F5gXT1 zNwYtxjku8ck<8_trdiqljAdZnnmbbNx+HQ)oeIMQkj)Zw*K)~2G`12bs{)bw$bFA; zGb<5|DkNZXc~DTvpIiO64_!Kn&i!$bCoJKrv6^YbLui^LOU+O^5D&zz;Z*==0fV+7 zSH=;tf1WaCZ3{+qs@X5!<8psohj-tB@itRfE!-Kw@#hCpeL2kuMj#xqPd)qRjtWvS zlUq#qhL4XZc?lHidKv!=px~x`_f~Dk(txnNzu}pYwQ6Pt)k@!66TLyemga>J#jnen zmE>!MunxXaELz&^>>NmzAq&O}{;?*&QIQdFL{VKuk+Odz~4NmQqGX$3gcSrp>PA%}oZM|9Y}uY6kPc2x#VAxSQL`M<`UY92!8fD2G6;q(o@7wN;hn<;hHu$(2pG??kQztcs5? zuQOBI9i~uMhpF_|Fw=q*HwPei}? zxQ4Uj#pe}N!H`^;iNYgt9E1m92I7LN8@*=&pb{dmrMkCI3Gd|j)fld!rxup**F1j2x zLgX)8Sm$v++hC>&)xRm~J8{C%j%r?y24%@n3`0}$H+l~!ugdw*_c z)-GYJGFAcT_`xNvprABuK`nz~l%C(+`vQd`@ZJvy66e|jM(A$%&;ToWZM@P3+;uK@ zI*|yGlS@4S9Bh9&1I$b}M{g=oe^A1JE+ZBzvc0|ia1zWvQ(jFd(zubkQ z(k9z)F-uEJJHYD)UhO&>^BJ~bZ7$rayHzbT8>`4JtruG+%@|p~URSj093^tGWb_d; ztJlI+_@1e=LhAefPN0&J%}?zac?-HallNhfqR`n!)k_j5bd>1*v7Ok~7@qWK>Vn@) zY)ICYB$uC<7HVVa$E)+?qY+hG2(e9+%!=2XHe-ZphJ;bEr1Gprzpnwmq~8oB9b$iB zd|i3H98t`V!T$XDYU2cMCHp{9dFBklBU?Ctcr$!79eix2_?Zy!`Z96Nz_Mb|70ltm z%0tb~J5iv`e-@8(Q`T;VGZJ{28NO+nf4u6Cq|z*_>u}zl(Q}-k*+BWB*8`}?flKqO z88b^`(sb_F!rE{G@04}I*$y!$%x(_r*Lv}lKi0FkQ>N?{Qy7o$k!FL7T#fl^iEX6B zUr2#*vVt=5_O_(o>=xsHMKl)+ozAhDVqyM216`rqhLJN!Zb5Xrw79d8TyI27W^2Ts z_qeO}XPnw7XV=4PWTB0rn>e!wx=rUDr&$%ouvexxu-T@r%JkLv0&)KZOM8Ot^0P1no*U1U8lw6wjn5z3QJ+M1^=C0HYq{nyo!P8ay+ z&vwF$N!t51>W4od-W5%0{;Ol@dpIxa=7weurg5t*9UNVRh>u{R75Z;}Oa1L=o25q-FVOyQOYmJ-MQ zq#-v^^h`1C344*l-$m(zzg6tbNSYg-!P5m$!}#ryfoB!6gO>Cu%#BWa#N}-DLr3+4 z=3F&_{UDL!nTA5W4atd(ed!&t0ds!NgHHB==S-NL6{r(+{nr#QadU=z&3`ateQJlkfbNZ5^?t+;{I)US(y?KR{gX_+SEUC*sfB zhQ~42#dLa%O{;#weUIs8gB@6@hkBhhDWN_Le!N9D%oUX#IB2ehk0I=Xcb>}*R)3r% zgXz8*08_8B0V(Jf!saU$z>G>8Hd2&co1tSZcSw_7XH4A3lZQ1jA5I1u;K^4?6(m=wDM5J{qrDRfl>gl&dnkb~f9dbOm^58lABti-u zhdiB-m_X2{IgT}w61ONgrhvT3kiA!yTe;KrwprcxTlVZ`9f6c9S8#|jGk&!Ici*$k zcs-FLxb=nss8MeEc%8s}ed>G!ASvjg*)q&{sAnbe~BnpQTR{?B|L9v~DO0%}VDnZay&8)x-J zB)@CT)t4SVr_QA_hM}`+BtUbbl3A1@`q{Nbxcr({@R@t#dyt#>CTLdzNymMlex(h! z2TK>F+{3)Fw{t^N4n>WW*5`9T5fO^sK1BC zCJZ7Rn@QhY?z9PB0bUU*x+(NWG~lhdKDBL7jR1MhN`L@Bc~9eJoFc<}vIK1snXEpN zW6Tr~dTQ-Gp5eeb~|e#0j8qv&!btjbS9Cj&WatB1pTx;^D@BVW3 zT>1J(90&IC-Fs62v+6^B1V4X1(-nc3?ZD2%D;jHh5q?!6nNj;%CH<&fcjr4jsMWhL zoUswPAJJ&5g2Y&tlC~GHxV7ESes$xchS^l#h|!q4={EF*(AwSYOr(9ciUb_f9r9Te zwpr6ks%XIP;>_e%{`mUlVWAo?o-k5EJZcm+gaL^mDFv!I7BA-Ty8R#*VO-S4;&>)Ka3$H$VmY|eI?1gI7=jiJn+!zGj zezUzqLLv?Rg*CCE?wTehTpxsBHaF0;)j-!#dt~S-S}U?ft8wdx_wlX0H6}HMQA1sF zIT8!Sq)G%mkV`<3(rqn#yu1`?iv}D^Xj;X+rJgrczH4K_2g6?<4N4wPukR4)v?op1 z9qj7}ImtU6qUV>^>thBT1l5AP<+XNyJx~vD|IEy6L1 zXI28pA)&6HRJBPHj$ZLej`#0tWvf@&E*p4m&Pqb^A;_RlHcj~23W-1V7d)87T>})$ z8jNph8R(HvSF+0(h-8cD=4V*1_xPYR3Z+h8b$>C^ZL#Bmz>t5sogEI^Y@Z+4(f1MK z@={vC)7IgxxZK(VR=A&EuF`ja4NuM2Y~mjupRhB=YJE)=ooU$tMrhMVXtdD0`xwu6 z{~&UuYnHUtig?$Nl9r>44F}8K2j7HFd-G#*auC56u5D{;PFP38fO#J|*SEBw>15;M zx?*JHW_#XNFuVbBuVM6hfmvzVW|mfc2FXu;ZS-Q&dsmc>gKuSNLn2;=Giay3T+F*T zoft~c;HWh{N8z32OtD$VAS;=9&~&Qa!B@Kf39Y?Ro09sMk#VX;jxr-lX3+hXt4E|} zG+J9H6=c4}f_WT&fAuKL65nhj{wzRlnfa%YsMr1_Km42FU`D+92ch+8Nn`91Z*}(X ztEx*FU;)I4o#^f!8`IBty$Ipj2TZ8uCpLH%{0_SN>4DIU?LdfW3`&NwsVK4r=6_$C zc!1TcND`&EGf8lTWQj2=O}>S@jDW6sCyYQN;HaHW|` zU674k>qy?Vfh5+LnR2HpNFz{yLh!BJX|tj8*5gjq_aE_%Aqr3N+BU=Z>d#PdXw%IO z5$B6-e6-PY;n{E|-P$XXKb%$|v$erhmfyl$h9UQC&-=|9KUZ|N>b9Vb04-2{d#lIg z(lzz6Yj#fbrp9`8yx}ix_;T}Vc;PYsa=lnS92*b!vDvMB%>Q{B|5KNQfG74WK{I0% zm($rB@@H%=dQdIigb0Y$TH!(q6?R88lS`z4&FO|!7sL3=nttw%G|)=Jd|as8p6=^ zb+_A~9YS#X#j}vRn(ob%h4sM#b8^1w-g7SQ%ho=Y^~q+X=FKfiZqUS&YTIAd8Ib!McK7bjpG1B4n%UIDP53?f&EHm0 zjQyOQlug(ZS)8a?508iORrjOM7ul-1%7;4KOI+FQK4rfu&99Zy@ zjq74AA1Yr{glt-1S$#}7_YKNV=GN=X%=5be>l1HK(fE|k%PFEHnp)H%wqTuTj6d8X zbyqvmDC_kQ^cU#M&Mz5}&zGp=bhhp}*FL?Rv%&%&!8I7Ie0W{Xa-NAg)ZRoAnr@pDk$nsxB$>=%8uc80suh~YKJz@aO zr6X4jwLqg?;5)6?D!~x>?7wiL4Fd_Z4~p;#JzSIXI!X6WA3wt3{wr9qV)6g=4}t=`peHTYtBn3k`cqa649%aV|C>&_Ypw$-W04)Y z!1pJJxXZ!}`Wm;N{pXK(MY~P_O^xx&i#zhV= zNPFQ(Sp6jxMMCi@ecmh7L| zQ|v8+=kEsPy_?t}kVevOio7v&y?^>%&$u{667$A?Rc#}Y>2UaK)2oVzpF49YX88aG z^tCFdQzNy+uJ&bT-D`=!sc--|RB0x*Y*9u>ZSElb{FKF^2u&hhcL{i9kSpLH_p#K( z=?=rcdjU!z#M$bd2_NjdS4n=zdTqh47sS=kav6CDq~O`JXE)DRD`o{e_VukSuCJ_2 zJ$?H00AQqy>wR>HdnD5JroCCmzRve!O2Xv;ZV|im0bt=Aj)0|AV|S%} z_X%{kS@6M9tr&Nk-RFnt?%80brk%WxzW7i;4>L#nZ#5wKF$^>%Gk-hlpA)S8LPy&s z2QjPCaRdDSwRiRLOs{``gmOxz&N)dK$Eln{Bs3CRPdMb^u5(T#<8aRLkT9xYvylqF zb7n~%%ENTTI_H#;Vji~XM-=9%2Rdfc=6SJZG@Cu#-=f!@{`~!S-}m?5?`C^l?_JmX z^L~G>_jQ4~3G?&e$BVw`J+0)spSR1|>3t`U)!HY&bZLR@N5Nf8GNX&yJRIYaUk`e0 z)Nb<#H8_WtJuL@%xZk+d^1D(v_ez+wy-qnYlnU=L&`mij+w#qf^9|Mhf*(;>M`HA- zHM4V%z5Nea{V_mW@e%o5=c+=*u8)uCDRGX7i@Rs|1d;G2Sh~Oavji~<{&YGZVZtLwsM`|I3_PZu<`8cJAYgT^*QEO^;F>>gALoVdIh5RE*1+B7;$RaDM>I?% zvic{5Y{x5yE~ZcwvUsB;W1bw=-dp|G%{XXC-fIPduknQ zn-4B?o;*oYHphI1J+V)jR2OynJ*=us>lUslv$EL>o0ru@5Iuq1@-qEOp?tz4D{rn>${_$ZR4SI(ajz;pqQU-GqwR~%pJy?5}2}DV>4*-gXz?)ay{=yVlWCRV|eniN{onX?JOoyAJnaVJ_>M=}I4qxyY_@Qzbx-<4`8rBu$NX?XJIk~NFHDtq5) zre|@0AbwyB_K}BOhoaI=|f>xzN_T|nz5Z)Z_6Lx4$)~Ac;T-JbQLP2hfk-80@?c3Npp+zc*Qw( zI8}mTR}+Fut+|hwOSX8@_UOO1Jm5zws^>YvVL$8XM_3!iEHcIbi!){9!8Zx0)OO+~ zK7Cfe(UFEU+GKHrqJ4ROh&=t6C^O^hgV>ORf94>5n`sm1V{l&z9L19Q2vf8Mjk6&Je6lt!tsmY^w4ew;}FxB7jwkV#AZ56_s&qGqnLHxBJ)d% z6|=*(9C@Q+8NAQ24E{#`>u{cY*ynk+C=jUe&7jD}=NH*Cu+9(L3H)IcFI*D~h-CmvRC*f%YFzrF| z`5A+wq0$H~u~d{WByJFyGs??Z@&+c`2r>Ii#arJgT|nM=EO6sDnvu*5L{puD`d71B z>zBl3(7G5{7dhq@%%#T9fafGM=+L#9+&fxUuT5qR74(pfu=CmteS9;h&OO*xUs*UkxeS3byMhx5WS~oes;$ep`Cw)x*`QSYT*h(`NZrbgCM)n@v@isTVL1(e{&uHJ>u?lozSofWZovQA`falnKriU1% zp#{V|W;~_Yc#*Q6?cN?Lvl<(hU>LMrfrb0BTP`|BL^#43^`@#qW{JhkgNDz80$&~l z5?tBx@K&>?424rkd+#v!!Tkc5Xp7qr-&~dn|1n;SC@K`>o>GN0OiU(Ey~%zxp99;K zdnHs-k{aiFNN&5yO=%VmoSgDOs1lX?2c#VY#;&zS+onb{p9B2`t6K_3jf^vwLoNGm z^^ChgQ5~jjFy%n9qn~3olW^NXXQFDPb(_U6hCPTn|LIo#S{OFUF5S{%3b+=SPW!>Krw2srlqIOV|~2xs&jQ@EAo38;$3(^Dn5TZE`Tn05td59!U8L*;s;U-xB2GUw(z{3nR)s>)F_UNt*8+&u8H z+QFjjP*#%N{l3!Kmrg|+ImveL`^i&N1HX1+(Xyl>?bxw6is3oJLT>I^ZkTJF@9u(a zqr@iS!u;!=JP%t#xBEV1l!cc9poGyHt-WzAZ09&8jaFiuI2wCWFh3@l@SKGHbihtt zjQg5k$;_&7xsX;Yy_4pL>ip@EQjs?1u9S+0%jWdVTQ|9J_^&VYWoNP%VcvS~r&tdU zyp~M52HE^eL2CXPs84nZiqG9Kg`YLoSt*Nj@n9b7_RE;j8EX#x*&&jeU!%**NPb2x z>e7^H^=Fq!DrzY3xvlEMicC+)S9VhmC07pkck&yQ{%lVZ#uo1NPKpeZzvqH{PY{zVIE>UA7-;tkIa};4$soM; ztTb*s_SV^jXsgB>b{KYfK`N73NG&hii&UDlu>*K?zq%awwosyI%tG&;KZdwy`GRC~ z_-;aRXa3A1gUyb?nY&HjI(HkGlk;uP2lAHa+pU}?rEN*oGlSkywt0)rFShpBw+yXl zil#s$ zMc4&z>6G@Tu}vqs6GG`ZYf}2ymN6B%&vV%(F`bfaeqBV#Nd~pKo88KM9!Z@j)M-uD zmBsU*RL>mMi}qoiA7o1k8hf@P`Yml(c#{0y>P4MP6}0Qt%A)^4EDLz0Ms&0XmkSTM zi?4fkAm(1m<;&qGe%|!Vq5*a!R%cwnqWSTf0MP)^ z03`${A^sza3ffZ8mV%Lz_cgR?MuzX%!9T^juz4{?rdmRL0jfQ?0(ekSxuo@t+ yssCSRY)I8p5(ENy`rY9J-~Z1V{J%g8T9BH%o%x4fUj&8+`R<7K;mU)-7ycXKj|-Xr literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js new file mode 100644 index 0000000..7a78347 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js @@ -0,0 +1,315 @@ +var sys = require('util'), + fs = require('fs'), + BSON = require('../../ext').BSON, + Buffer = require('buffer').Buffer, + BSONJS = require('../../lib/bson/bson').BSON, + BinaryParser = require('../../lib/bson/binary_parser').BinaryParser, + Long = require('../../lib/bson/long').Long, + ObjectID = require('../../lib/bson/bson').ObjectID, + Binary = require('../../lib/bson/bson').Binary, + Code = require('../../lib/bson/bson').Code, + DBRef = require('../../lib/bson/bson').DBRef, + Symbol = require('../../lib/bson/bson').Symbol, + Double = require('../../lib/bson/bson').Double, + MaxKey = require('../../lib/bson/bson').MaxKey, + MinKey = require('../../lib/bson/bson').MinKey, + Timestamp = require('../../lib/bson/bson').Timestamp, + gleak = require('../../tools/gleak'), + assert = require('assert'); + +// Parsers +var bsonC = new BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); +var bsonJS = new BSONJS([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.setUp = function(callback) { + callback(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.tearDown = function(callback) { + callback(); +} + +/** + * @ignore + */ +exports['Should Correctly Deserialize object'] = function(test) { + var bytes = [95,0,0,0,2,110,115,0,42,0,0,0,105,110,116,101,103,114,97,116,105,111,110,95,116,101,115,116,115,95,46,116,101,115,116,95,105,110,100,101,120,95,105,110,102,111,114,109,97,116,105,111,110,0,8,117,110,105,113,117,101,0,0,3,107,101,121,0,12,0,0,0,16,97,0,1,0,0,0,0,2,110,97,109,101,0,4,0,0,0,97,95,49,0,0]; + var serialized_data = ''; + // Convert to chars + for(var i = 0; i < bytes.length; i++) { + serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); + } + + var object = bsonC.deserialize(serialized_data); + assert.equal("a_1", object.name); + assert.equal(false, object.unique); + assert.equal(1, object.key.a); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Deserialize object with all types'] = function(test) { + var bytes = [26,1,0,0,7,95,105,100,0,161,190,98,75,118,169,3,0,0,3,0,0,4,97,114,114,97,121,0,26,0,0,0,16,48,0,1,0,0,0,16,49,0,2,0,0,0,16,50,0,3,0,0,0,0,2,115,116,114,105,110,103,0,6,0,0,0,104,101,108,108,111,0,3,104,97,115,104,0,19,0,0,0,16,97,0,1,0,0,0,16,98,0,2,0,0,0,0,9,100,97,116,101,0,161,190,98,75,0,0,0,0,7,111,105,100,0,161,190,98,75,90,217,18,0,0,1,0,0,5,98,105,110,97,114,121,0,7,0,0,0,2,3,0,0,0,49,50,51,16,105,110,116,0,42,0,0,0,1,102,108,111,97,116,0,223,224,11,147,169,170,64,64,11,114,101,103,101,120,112,0,102,111,111,98,97,114,0,105,0,8,98,111,111,108,101,97,110,0,1,15,119,104,101,114,101,0,25,0,0,0,12,0,0,0,116,104,105,115,46,120,32,61,61,32,51,0,5,0,0,0,0,3,100,98,114,101,102,0,37,0,0,0,2,36,114,101,102,0,5,0,0,0,116,101,115,116,0,7,36,105,100,0,161,190,98,75,2,180,1,0,0,2,0,0,0,10,110,117,108,108,0,0]; + var serialized_data = ''; + // Convert to chars + for(var i = 0; i < bytes.length; i++) { + serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); + } + + var object = bsonJS.deserialize(new Buffer(serialized_data, 'binary')); + assert.equal("hello", object.string); + assert.deepEqual([1, 2, 3], object.array); + assert.equal(1, object.hash.a); + assert.equal(2, object.hash.b); + assert.ok(object.date != null); + assert.ok(object.oid != null); + assert.ok(object.binary != null); + assert.equal(42, object.int); + assert.equal(33.3333, object.float); + assert.ok(object.regexp != null); + assert.equal(true, object.boolean); + assert.ok(object.where != null); + assert.ok(object.dbref != null); + assert.ok(object['null'] == null); + test.done(); +} + +/** + * @ignore + */ +exports['Should Serialize and Deserialize String'] = function(test) { + var test_string = {hello: 'world'} + var serialized_data = bsonC.serialize(test_string) + assert.deepEqual(test_string, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { + var test_number = {doc: 5} + var serialized_data = bsonC.serialize(test_number) + assert.deepEqual(test_number, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize null value'] = function(test) { + var test_null = {doc:null} + var serialized_data = bsonC.serialize(test_null) + var object = bsonC.deserialize(serialized_data); + assert.deepEqual(test_null, object); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize undefined value'] = function(test) { + var test_undefined = {doc:undefined} + var serialized_data = bsonC.serialize(test_undefined) + var object = bsonJS.deserialize(new Buffer(serialized_data, 'binary')); + assert.equal(null, object.doc) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Number'] = function(test) { + var test_number = {doc: 5.5} + var serialized_data = bsonC.serialize(test_number) + assert.deepEqual(test_number, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { + var test_int = {doc: 42} + var serialized_data = bsonC.serialize(test_int) + assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); + + test_int = {doc: -5600} + serialized_data = bsonC.serialize(test_int) + assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); + + test_int = {doc: 2147483647} + serialized_data = bsonC.serialize(test_int) + assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); + + test_int = {doc: -2147483648} + serialized_data = bsonC.serialize(test_int) + assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Object'] = function(test) { + var doc = {doc: {age: 42, name: 'Spongebob', shoe_size: 9.5}} + var serialized_data = bsonC.serialize(doc) + assert.deepEqual(doc, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Array'] = function(test) { + var doc = {doc: [1, 2, 'a', 'b']} + var serialized_data = bsonC.serialize(doc) + assert.deepEqual(doc, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Array with added on functions'] = function(test) { + var doc = {doc: [1, 2, 'a', 'b']} + var serialized_data = bsonC.serialize(doc) + assert.deepEqual(doc, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize A Boolean'] = function(test) { + var doc = {doc: true} + var serialized_data = bsonC.serialize(doc) + assert.deepEqual(doc, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a Date'] = function(test) { + var date = new Date() + //(2009, 11, 12, 12, 00, 30) + date.setUTCDate(12) + date.setUTCFullYear(2009) + date.setUTCMonth(11 - 1) + date.setUTCHours(12) + date.setUTCMinutes(0) + date.setUTCSeconds(30) + var doc = {doc: date} + var serialized_data = bsonC.serialize(doc) + assert.deepEqual(doc, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Oid'] = function(test) { + var doc = {doc: new ObjectID()} + var serialized_data = bsonC.serialize(doc) + assert.deepEqual(doc.doc.toHexString(), bsonC.deserialize(serialized_data).doc.toHexString()) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Buffer'] = function(test) { + var doc = {doc: new Buffer("123451234512345")} + var serialized_data = bsonC.serialize(doc) + + assert.equal("123451234512345", bsonC.deserialize(serialized_data).doc.buffer.toString('ascii')); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly encode Empty Hash'] = function(test) { + var test_code = {} + var serialized_data = bsonC.serialize(test_code) + assert.deepEqual(test_code, bsonC.deserialize(serialized_data)); + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Ordered Hash'] = function(test) { + var doc = {doc: {b:1, a:2, c:3, d:4}} + var serialized_data = bsonC.serialize(doc) + var decoded_hash = bsonC.deserialize(serialized_data).doc + var keys = [] + for(var name in decoded_hash) keys.push(name) + assert.deepEqual(['b', 'a', 'c', 'd'], keys) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize Regular Expression'] = function(test) { + var doc = {doc: /foobar/mi} + var serialized_data = bsonC.serialize(doc) + var doc2 = bsonC.deserialize(serialized_data); + assert.equal(doc.doc.toString(), doc2.doc.toString()) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a Binary object'] = function(test) { + var bin = new Binary() + var string = 'binstring' + for(var index = 0; index < string.length; index++) { + bin.put(string.charAt(index)) + } + var doc = {doc: bin} + var serialized_data = bsonC.serialize(doc) + var deserialized_data = bsonC.deserialize(serialized_data); + assert.equal(doc.doc.value(), deserialized_data.doc.value()) + test.done(); +} + +/** + * @ignore + */ +exports['Should Correctly Serialize and Deserialize a big Binary object'] = function(test) { + var data = fs.readFileSync("test/node/data/test_gs_weird_bug.png", 'binary'); + var bin = new Binary() + bin.write(data) + var doc = {doc: bin} + var serialized_data = bsonC.serialize(doc) + var deserialized_data = bsonC.deserialize(serialized_data); + assert.equal(doc.doc.value(), deserialized_data.doc.value()) + test.done(); +} + +/** + * @ignore + */ +exports.noGlobalsLeaked = function(test) { + var leaks = gleak.detectNew(); + test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); + test.done(); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js new file mode 100644 index 0000000..e9282e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js @@ -0,0 +1,109 @@ +var mongodb = process.env['TEST_NATIVE'] != null ? require('../../lib/bson').native() : require('../../lib/bson').pure(); + +var testCase = require('nodeunit').testCase, + mongoO = require('../../lib/bson').pure(), + Buffer = require('buffer').Buffer, + gleak = require('../../tools/gleak'), + fs = require('fs'), + BSON = mongoO.BSON, + Code = mongoO.Code, + Binary = mongoO.Binary, + Timestamp = mongoO.Timestamp, + Long = mongoO.Long, + MongoReply = mongoO.MongoReply, + ObjectID = mongoO.ObjectID, + Symbol = mongoO.Symbol, + DBRef = mongoO.DBRef, + Double = mongoO.Double, + MinKey = mongoO.MinKey, + MaxKey = mongoO.MaxKey, + BinaryParser = mongoO.BinaryParser; + +var BSONSE = mongodb, + BSONDE = mongodb; + +// for tests +BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; +BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; +BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; +BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; +BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; +BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; + +var hexStringToBinary = function(string) { + var numberofValues = string.length / 2; + var array = ""; + + for(var i = 0; i < numberofValues; i++) { + array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); + } + return array; +} + +var assertBuffersEqual = function(test, buffer1, buffer2) { + if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); + + for(var i = 0; i < buffer1.length; i++) { + test.equal(buffer1[i], buffer2[i]); + } +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.setUp = function(callback) { + callback(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.tearDown = function(callback) { + callback(); +} + +/** + * @ignore + */ +exports['Should correctly handle toBson function for an object'] = function(test) { + // Test object + var doc = { + hello: new ObjectID(), + a:1 + }; + // Add a toBson method to the object + doc.toBSON = function() { + return {b:1}; + } + + // Serialize the data + var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); + var deserialized_doc = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); + test.deepEqual({b:1}, deserialized_doc); + test.done(); +} + +/** + * Retrieve the server information for the current + * instance of the db client + * + * @ignore + */ +exports.noGlobalsLeaked = function(test) { + var leaks = gleak.detectNew(); + test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); + test.done(); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js new file mode 100644 index 0000000..9d7cbe7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js @@ -0,0 +1,80 @@ +exports.assertArrayEqual = function(array1, array2) { + if(array1.length != array2.length) return false; + for(var i = 0; i < array1.length; i++) { + if(array1[i] != array2[i]) return false; + } + + return true; +} + +// String to arraybuffer +exports.stringToArrayBuffer = function(string) { + var dataBuffer = new Uint8Array(new ArrayBuffer(string.length)); + // Return the strings + for(var i = 0; i < string.length; i++) { + dataBuffer[i] = string.charCodeAt(i); + } + // Return the data buffer + return dataBuffer; +} + +// String to arraybuffer +exports.stringToArray = function(string) { + var dataBuffer = new Array(string.length); + // Return the strings + for(var i = 0; i < string.length; i++) { + dataBuffer[i] = string.charCodeAt(i); + } + // Return the data buffer + return dataBuffer; +} + +exports.Utf8 = { + // public method for url encoding + encode : function (string) { + string = string.replace(/\r\n/g,"\n"); + var utftext = ""; + + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c); + } else if((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + + } + + return utftext; + }, + + // public method for url decoding + decode : function (utftext) { + var string = ""; + var i = 0; + var c = c1 = c2 = 0; + + while ( i < utftext.length ) { + c = utftext.charCodeAt(i); + if(c < 128) { + string += String.fromCharCode(c); + i++; + } else if((c > 191) && (c < 224)) { + c2 = utftext.charCodeAt(i+1); + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); + i += 2; + } else { + c2 = utftext.charCodeAt(i+1); + c3 = utftext.charCodeAt(i+2); + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); + i += 3; + } + } + return string; + } +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js new file mode 100644 index 0000000..c707cfc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js @@ -0,0 +1,21 @@ + +var gleak = require('gleak')(); +gleak.ignore('AssertionError'); +gleak.ignore('testFullSpec_param_found'); +gleak.ignore('events'); +gleak.ignore('Uint8Array'); +gleak.ignore('Uint8ClampedArray'); +gleak.ignore('TAP_Global_Harness'); +gleak.ignore('setImmediate'); +gleak.ignore('clearImmediate'); + +gleak.ignore('DTRACE_NET_SERVER_CONNECTION'); +gleak.ignore('DTRACE_NET_STREAM_END'); +gleak.ignore('DTRACE_NET_SOCKET_READ'); +gleak.ignore('DTRACE_NET_SOCKET_WRITE'); +gleak.ignore('DTRACE_HTTP_SERVER_REQUEST'); +gleak.ignore('DTRACE_HTTP_SERVER_RESPONSE'); +gleak.ignore('DTRACE_HTTP_CLIENT_REQUEST'); +gleak.ignore('DTRACE_HTTP_CLIENT_RESPONSE'); + +module.exports = gleak; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE new file mode 100644 index 0000000..7c435ba --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2008-2011 Pivotal Labs + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js new file mode 100644 index 0000000..7383401 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js @@ -0,0 +1,190 @@ +jasmine.TrivialReporter = function(doc) { + this.document = doc || document; + this.suiteDivs = {}; + this.logRunningSpecs = false; +}; + +jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) { + var el = document.createElement(type); + + for (var i = 2; i < arguments.length; i++) { + var child = arguments[i]; + + if (typeof child === 'string') { + el.appendChild(document.createTextNode(child)); + } else { + if (child) { el.appendChild(child); } + } + } + + for (var attr in attrs) { + if (attr == "className") { + el[attr] = attrs[attr]; + } else { + el.setAttribute(attr, attrs[attr]); + } + } + + return el; +}; + +jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) { + var showPassed, showSkipped; + + this.outerDiv = this.createDom('div', { className: 'jasmine_reporter' }, + this.createDom('div', { className: 'banner' }, + this.createDom('div', { className: 'logo' }, + this.createDom('span', { className: 'title' }, "Jasmine"), + this.createDom('span', { className: 'version' }, runner.env.versionString())), + this.createDom('div', { className: 'options' }, + "Show ", + showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }), + this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "), + showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }), + this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped") + ) + ), + + this.runnerDiv = this.createDom('div', { className: 'runner running' }, + this.createDom('a', { className: 'run_spec', href: '?' }, "run all"), + this.runnerMessageSpan = this.createDom('span', {}, "Running..."), + this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, "")) + ); + + this.document.body.appendChild(this.outerDiv); + + var suites = runner.suites(); + for (var i = 0; i < suites.length; i++) { + var suite = suites[i]; + var suiteDiv = this.createDom('div', { className: 'suite' }, + this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"), + this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description)); + this.suiteDivs[suite.id] = suiteDiv; + var parentDiv = this.outerDiv; + if (suite.parentSuite) { + parentDiv = this.suiteDivs[suite.parentSuite.id]; + } + parentDiv.appendChild(suiteDiv); + } + + this.startedAt = new Date(); + + var self = this; + showPassed.onclick = function(evt) { + if (showPassed.checked) { + self.outerDiv.className += ' show-passed'; + } else { + self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, ''); + } + }; + + showSkipped.onclick = function(evt) { + if (showSkipped.checked) { + self.outerDiv.className += ' show-skipped'; + } else { + self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, ''); + } + }; +}; + +jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) { + var results = runner.results(); + var className = (results.failedCount > 0) ? "runner failed" : "runner passed"; + this.runnerDiv.setAttribute("class", className); + //do it twice for IE + this.runnerDiv.setAttribute("className", className); + var specs = runner.specs(); + var specCount = 0; + for (var i = 0; i < specs.length; i++) { + if (this.specFilter(specs[i])) { + specCount++; + } + } + var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s"); + message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s"; + this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild); + + this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString())); +}; + +jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) { + var results = suite.results(); + var status = results.passed() ? 'passed' : 'failed'; + if (results.totalCount === 0) { // todo: change this to check results.skipped + status = 'skipped'; + } + this.suiteDivs[suite.id].className += " " + status; +}; + +jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) { + if (this.logRunningSpecs) { + this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...'); + } +}; + +jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) { + var results = spec.results(); + var status = results.passed() ? 'passed' : 'failed'; + if (results.skipped) { + status = 'skipped'; + } + var specDiv = this.createDom('div', { className: 'spec ' + status }, + this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"), + this.createDom('a', { + className: 'description', + href: '?spec=' + encodeURIComponent(spec.getFullName()), + title: spec.getFullName() + }, spec.description)); + + + var resultItems = results.getItems(); + var messagesDiv = this.createDom('div', { className: 'messages' }); + for (var i = 0; i < resultItems.length; i++) { + var result = resultItems[i]; + + if (result.type == 'log') { + messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString())); + } else if (result.type == 'expect' && result.passed && !result.passed()) { + messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message)); + + if (result.trace.stack) { + messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack)); + } + } + } + + if (messagesDiv.childNodes.length > 0) { + specDiv.appendChild(messagesDiv); + } + + this.suiteDivs[spec.suite.id].appendChild(specDiv); +}; + +jasmine.TrivialReporter.prototype.log = function() { + var console = jasmine.getGlobal().console; + if (console && console.log) { + if (console.log.apply) { + console.log.apply(console, arguments); + } else { + console.log(arguments); // ie fix: console.log.apply doesn't exist on ie + } + } +}; + +jasmine.TrivialReporter.prototype.getLocation = function() { + return this.document.location; +}; + +jasmine.TrivialReporter.prototype.specFilter = function(spec) { + var paramMap = {}; + var params = this.getLocation().search.substring(1).split('&'); + for (var i = 0; i < params.length; i++) { + var p = params[i].split('='); + paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]); + } + + if (!paramMap.spec) { + return true; + } + return spec.getFullName().indexOf(paramMap.spec) === 0; +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css new file mode 100644 index 0000000..6583fe7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css @@ -0,0 +1,166 @@ +body { + font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; +} + + +.jasmine_reporter a:visited, .jasmine_reporter a { + color: #303; +} + +.jasmine_reporter a:hover, .jasmine_reporter a:active { + color: blue; +} + +.run_spec { + float:right; + padding-right: 5px; + font-size: .8em; + text-decoration: none; +} + +.jasmine_reporter { + margin: 0 5px; +} + +.banner { + color: #303; + background-color: #fef; + padding: 5px; +} + +.logo { + float: left; + font-size: 1.1em; + padding-left: 5px; +} + +.logo .version { + font-size: .6em; + padding-left: 1em; +} + +.runner.running { + background-color: yellow; +} + + +.options { + text-align: right; + font-size: .8em; +} + + + + +.suite { + border: 1px outset gray; + margin: 5px 0; + padding-left: 1em; +} + +.suite .suite { + margin: 5px; +} + +.suite.passed { + background-color: #dfd; +} + +.suite.failed { + background-color: #fdd; +} + +.spec { + margin: 5px; + padding-left: 1em; + clear: both; +} + +.spec.failed, .spec.passed, .spec.skipped { + padding-bottom: 5px; + border: 1px solid gray; +} + +.spec.failed { + background-color: #fbb; + border-color: red; +} + +.spec.passed { + background-color: #bfb; + border-color: green; +} + +.spec.skipped { + background-color: #bbb; +} + +.messages { + border-left: 1px dashed gray; + padding-left: 1em; + padding-right: 1em; +} + +.passed { + background-color: #cfc; + display: none; +} + +.failed { + background-color: #fbb; +} + +.skipped { + color: #777; + background-color: #eee; + display: none; +} + + +/*.resultMessage {*/ + /*white-space: pre;*/ +/*}*/ + +.resultMessage span.result { + display: block; + line-height: 2em; + color: black; +} + +.resultMessage .mismatch { + color: black; +} + +.stackTrace { + white-space: pre; + font-size: .8em; + margin-left: 10px; + max-height: 5em; + overflow: auto; + border: 1px inset red; + padding: 1em; + background: #eef; +} + +.finished-at { + padding-left: 1em; + font-size: .6em; +} + +.show-passed .passed, +.show-skipped .skipped { + display: block; +} + + +#jasmine_content { + position:fixed; + right: 100%; +} + +.runner { + border: 1px solid gray; + display: block; + margin: 5px 0; + padding: 2px 0 2px 10px; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js new file mode 100644 index 0000000..c3d2dc7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js @@ -0,0 +1,2476 @@ +var isCommonJS = typeof window == "undefined"; + +/** + * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework. + * + * @namespace + */ +var jasmine = {}; +if (isCommonJS) exports.jasmine = jasmine; +/** + * @private + */ +jasmine.unimplementedMethod_ = function() { + throw new Error("unimplemented method"); +}; + +/** + * Use jasmine.undefined instead of undefined, since undefined is just + * a plain old variable and may be redefined by somebody else. + * + * @private + */ +jasmine.undefined = jasmine.___undefined___; + +/** + * Show diagnostic messages in the console if set to true + * + */ +jasmine.VERBOSE = false; + +/** + * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed. + * + */ +jasmine.DEFAULT_UPDATE_INTERVAL = 250; + +/** + * Default timeout interval in milliseconds for waitsFor() blocks. + */ +jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000; + +jasmine.getGlobal = function() { + function getGlobal() { + return this; + } + + return getGlobal(); +}; + +/** + * Allows for bound functions to be compared. Internal use only. + * + * @ignore + * @private + * @param base {Object} bound 'this' for the function + * @param name {Function} function to find + */ +jasmine.bindOriginal_ = function(base, name) { + var original = base[name]; + if (original.apply) { + return function() { + return original.apply(base, arguments); + }; + } else { + // IE support + return jasmine.getGlobal()[name]; + } +}; + +jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout'); +jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout'); +jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval'); +jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval'); + +jasmine.MessageResult = function(values) { + this.type = 'log'; + this.values = values; + this.trace = new Error(); // todo: test better +}; + +jasmine.MessageResult.prototype.toString = function() { + var text = ""; + for (var i = 0; i < this.values.length; i++) { + if (i > 0) text += " "; + if (jasmine.isString_(this.values[i])) { + text += this.values[i]; + } else { + text += jasmine.pp(this.values[i]); + } + } + return text; +}; + +jasmine.ExpectationResult = function(params) { + this.type = 'expect'; + this.matcherName = params.matcherName; + this.passed_ = params.passed; + this.expected = params.expected; + this.actual = params.actual; + this.message = this.passed_ ? 'Passed.' : params.message; + + var trace = (params.trace || new Error(this.message)); + this.trace = this.passed_ ? '' : trace; +}; + +jasmine.ExpectationResult.prototype.toString = function () { + return this.message; +}; + +jasmine.ExpectationResult.prototype.passed = function () { + return this.passed_; +}; + +/** + * Getter for the Jasmine environment. Ensures one gets created + */ +jasmine.getEnv = function() { + var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env(); + return env; +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isArray_ = function(value) { + return jasmine.isA_("Array", value); +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isString_ = function(value) { + return jasmine.isA_("String", value); +}; + +/** + * @ignore + * @private + * @param value + * @returns {Boolean} + */ +jasmine.isNumber_ = function(value) { + return jasmine.isA_("Number", value); +}; + +/** + * @ignore + * @private + * @param {String} typeName + * @param value + * @returns {Boolean} + */ +jasmine.isA_ = function(typeName, value) { + return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; +}; + +/** + * Pretty printer for expecations. Takes any object and turns it into a human-readable string. + * + * @param value {Object} an object to be outputted + * @returns {String} + */ +jasmine.pp = function(value) { + var stringPrettyPrinter = new jasmine.StringPrettyPrinter(); + stringPrettyPrinter.format(value); + return stringPrettyPrinter.string; +}; + +/** + * Returns true if the object is a DOM Node. + * + * @param {Object} obj object to check + * @returns {Boolean} + */ +jasmine.isDomNode = function(obj) { + return obj.nodeType > 0; +}; + +/** + * Returns a matchable 'generic' object of the class type. For use in expecations of type when values don't matter. + * + * @example + * // don't care about which function is passed in, as long as it's a function + * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function)); + * + * @param {Class} clazz + * @returns matchable object of the type clazz + */ +jasmine.any = function(clazz) { + return new jasmine.Matchers.Any(clazz); +}; + +/** + * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks. + * + * Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine + * expectation syntax. Spies can be checked if they were called or not and what the calling params were. + * + * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs). + * + * Spies are torn down at the end of every spec. + * + * Note: Do not call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj. + * + * @example + * // a stub + * var myStub = jasmine.createSpy('myStub'); // can be used anywhere + * + * // spy example + * var foo = { + * not: function(bool) { return !bool; } + * } + * + * // actual foo.not will not be called, execution stops + * spyOn(foo, 'not'); + + // foo.not spied upon, execution will continue to implementation + * spyOn(foo, 'not').andCallThrough(); + * + * // fake example + * var foo = { + * not: function(bool) { return !bool; } + * } + * + * // foo.not(val) will return val + * spyOn(foo, 'not').andCallFake(function(value) {return value;}); + * + * // mock example + * foo.not(7 == 7); + * expect(foo.not).toHaveBeenCalled(); + * expect(foo.not).toHaveBeenCalledWith(true); + * + * @constructor + * @see spyOn, jasmine.createSpy, jasmine.createSpyObj + * @param {String} name + */ +jasmine.Spy = function(name) { + /** + * The name of the spy, if provided. + */ + this.identity = name || 'unknown'; + /** + * Is this Object a spy? + */ + this.isSpy = true; + /** + * The actual function this spy stubs. + */ + this.plan = function() { + }; + /** + * Tracking of the most recent call to the spy. + * @example + * var mySpy = jasmine.createSpy('foo'); + * mySpy(1, 2); + * mySpy.mostRecentCall.args = [1, 2]; + */ + this.mostRecentCall = {}; + + /** + * Holds arguments for each call to the spy, indexed by call count + * @example + * var mySpy = jasmine.createSpy('foo'); + * mySpy(1, 2); + * mySpy(7, 8); + * mySpy.mostRecentCall.args = [7, 8]; + * mySpy.argsForCall[0] = [1, 2]; + * mySpy.argsForCall[1] = [7, 8]; + */ + this.argsForCall = []; + this.calls = []; +}; + +/** + * Tells a spy to call through to the actual implemenatation. + * + * @example + * var foo = { + * bar: function() { // do some stuff } + * } + * + * // defining a spy on an existing property: foo.bar + * spyOn(foo, 'bar').andCallThrough(); + */ +jasmine.Spy.prototype.andCallThrough = function() { + this.plan = this.originalValue; + return this; +}; + +/** + * For setting the return value of a spy. + * + * @example + * // defining a spy from scratch: foo() returns 'baz' + * var foo = jasmine.createSpy('spy on foo').andReturn('baz'); + * + * // defining a spy on an existing property: foo.bar() returns 'baz' + * spyOn(foo, 'bar').andReturn('baz'); + * + * @param {Object} value + */ +jasmine.Spy.prototype.andReturn = function(value) { + this.plan = function() { + return value; + }; + return this; +}; + +/** + * For throwing an exception when a spy is called. + * + * @example + * // defining a spy from scratch: foo() throws an exception w/ message 'ouch' + * var foo = jasmine.createSpy('spy on foo').andThrow('baz'); + * + * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch' + * spyOn(foo, 'bar').andThrow('baz'); + * + * @param {String} exceptionMsg + */ +jasmine.Spy.prototype.andThrow = function(exceptionMsg) { + this.plan = function() { + throw exceptionMsg; + }; + return this; +}; + +/** + * Calls an alternate implementation when a spy is called. + * + * @example + * var baz = function() { + * // do some stuff, return something + * } + * // defining a spy from scratch: foo() calls the function baz + * var foo = jasmine.createSpy('spy on foo').andCall(baz); + * + * // defining a spy on an existing property: foo.bar() calls an anonymnous function + * spyOn(foo, 'bar').andCall(function() { return 'baz';} ); + * + * @param {Function} fakeFunc + */ +jasmine.Spy.prototype.andCallFake = function(fakeFunc) { + this.plan = fakeFunc; + return this; +}; + +/** + * Resets all of a spy's the tracking variables so that it can be used again. + * + * @example + * spyOn(foo, 'bar'); + * + * foo.bar(); + * + * expect(foo.bar.callCount).toEqual(1); + * + * foo.bar.reset(); + * + * expect(foo.bar.callCount).toEqual(0); + */ +jasmine.Spy.prototype.reset = function() { + this.wasCalled = false; + this.callCount = 0; + this.argsForCall = []; + this.calls = []; + this.mostRecentCall = {}; +}; + +jasmine.createSpy = function(name) { + + var spyObj = function() { + spyObj.wasCalled = true; + spyObj.callCount++; + var args = jasmine.util.argsToArray(arguments); + spyObj.mostRecentCall.object = this; + spyObj.mostRecentCall.args = args; + spyObj.argsForCall.push(args); + spyObj.calls.push({object: this, args: args}); + return spyObj.plan.apply(this, arguments); + }; + + var spy = new jasmine.Spy(name); + + for (var prop in spy) { + spyObj[prop] = spy[prop]; + } + + spyObj.reset(); + + return spyObj; +}; + +/** + * Determines whether an object is a spy. + * + * @param {jasmine.Spy|Object} putativeSpy + * @returns {Boolean} + */ +jasmine.isSpy = function(putativeSpy) { + return putativeSpy && putativeSpy.isSpy; +}; + +/** + * Creates a more complicated spy: an Object that has every property a function that is a spy. Used for stubbing something + * large in one call. + * + * @param {String} baseName name of spy class + * @param {Array} methodNames array of names of methods to make spies + */ +jasmine.createSpyObj = function(baseName, methodNames) { + if (!jasmine.isArray_(methodNames) || methodNames.length === 0) { + throw new Error('createSpyObj requires a non-empty array of method names to create spies for'); + } + var obj = {}; + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]); + } + return obj; +}; + +/** + * All parameters are pretty-printed and concatenated together, then written to the current spec's output. + * + * Be careful not to leave calls to jasmine.log in production code. + */ +jasmine.log = function() { + var spec = jasmine.getEnv().currentSpec; + spec.log.apply(spec, arguments); +}; + +/** + * Function that installs a spy on an existing object's method name. Used within a Spec to create a spy. + * + * @example + * // spy example + * var foo = { + * not: function(bool) { return !bool; } + * } + * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops + * + * @see jasmine.createSpy + * @param obj + * @param methodName + * @returns a Jasmine spy that can be chained with all spy methods + */ +var spyOn = function(obj, methodName) { + return jasmine.getEnv().currentSpec.spyOn(obj, methodName); +}; +if (isCommonJS) exports.spyOn = spyOn; + +/** + * Creates a Jasmine spec that will be added to the current suite. + * + * // TODO: pending tests + * + * @example + * it('should be true', function() { + * expect(true).toEqual(true); + * }); + * + * @param {String} desc description of this specification + * @param {Function} func defines the preconditions and expectations of the spec + */ +var it = function(desc, func) { + return jasmine.getEnv().it(desc, func); +}; +if (isCommonJS) exports.it = it; + +/** + * Creates a disabled Jasmine spec. + * + * A convenience method that allows existing specs to be disabled temporarily during development. + * + * @param {String} desc description of this specification + * @param {Function} func defines the preconditions and expectations of the spec + */ +var xit = function(desc, func) { + return jasmine.getEnv().xit(desc, func); +}; +if (isCommonJS) exports.xit = xit; + +/** + * Starts a chain for a Jasmine expectation. + * + * It is passed an Object that is the actual value and should chain to one of the many + * jasmine.Matchers functions. + * + * @param {Object} actual Actual value to test against and expected value + */ +var expect = function(actual) { + return jasmine.getEnv().currentSpec.expect(actual); +}; +if (isCommonJS) exports.expect = expect; + +/** + * Defines part of a jasmine spec. Used in cominbination with waits or waitsFor in asynchrnous specs. + * + * @param {Function} func Function that defines part of a jasmine spec. + */ +var runs = function(func) { + jasmine.getEnv().currentSpec.runs(func); +}; +if (isCommonJS) exports.runs = runs; + +/** + * Waits a fixed time period before moving to the next block. + * + * @deprecated Use waitsFor() instead + * @param {Number} timeout milliseconds to wait + */ +var waits = function(timeout) { + jasmine.getEnv().currentSpec.waits(timeout); +}; +if (isCommonJS) exports.waits = waits; + +/** + * Waits for the latchFunction to return true before proceeding to the next block. + * + * @param {Function} latchFunction + * @param {String} optional_timeoutMessage + * @param {Number} optional_timeout + */ +var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { + jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments); +}; +if (isCommonJS) exports.waitsFor = waitsFor; + +/** + * A function that is called before each spec in a suite. + * + * Used for spec setup, including validating assumptions. + * + * @param {Function} beforeEachFunction + */ +var beforeEach = function(beforeEachFunction) { + jasmine.getEnv().beforeEach(beforeEachFunction); +}; +if (isCommonJS) exports.beforeEach = beforeEach; + +/** + * A function that is called after each spec in a suite. + * + * Used for restoring any state that is hijacked during spec execution. + * + * @param {Function} afterEachFunction + */ +var afterEach = function(afterEachFunction) { + jasmine.getEnv().afterEach(afterEachFunction); +}; +if (isCommonJS) exports.afterEach = afterEach; + +/** + * Defines a suite of specifications. + * + * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared + * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization + * of setup in some tests. + * + * @example + * // TODO: a simple suite + * + * // TODO: a simple suite with a nested describe block + * + * @param {String} description A string, usually the class under test. + * @param {Function} specDefinitions function that defines several specs. + */ +var describe = function(description, specDefinitions) { + return jasmine.getEnv().describe(description, specDefinitions); +}; +if (isCommonJS) exports.describe = describe; + +/** + * Disables a suite of specifications. Used to disable some suites in a file, or files, temporarily during development. + * + * @param {String} description A string, usually the class under test. + * @param {Function} specDefinitions function that defines several specs. + */ +var xdescribe = function(description, specDefinitions) { + return jasmine.getEnv().xdescribe(description, specDefinitions); +}; +if (isCommonJS) exports.xdescribe = xdescribe; + + +// Provide the XMLHttpRequest class for IE 5.x-6.x: +jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() { + function tryIt(f) { + try { + return f(); + } catch(e) { + } + return null; + } + + var xhr = tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP.6.0"); + }) || + tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP.3.0"); + }) || + tryIt(function() { + return new ActiveXObject("Msxml2.XMLHTTP"); + }) || + tryIt(function() { + return new ActiveXObject("Microsoft.XMLHTTP"); + }); + + if (!xhr) throw new Error("This browser does not support XMLHttpRequest."); + + return xhr; +} : XMLHttpRequest; +/** + * @namespace + */ +jasmine.util = {}; + +/** + * Declare that a child class inherit it's prototype from the parent class. + * + * @private + * @param {Function} childClass + * @param {Function} parentClass + */ +jasmine.util.inherit = function(childClass, parentClass) { + /** + * @private + */ + var subclass = function() { + }; + subclass.prototype = parentClass.prototype; + childClass.prototype = new subclass(); +}; + +jasmine.util.formatException = function(e) { + var lineNumber; + if (e.line) { + lineNumber = e.line; + } + else if (e.lineNumber) { + lineNumber = e.lineNumber; + } + + var file; + + if (e.sourceURL) { + file = e.sourceURL; + } + else if (e.fileName) { + file = e.fileName; + } + + var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString(); + + if (file && lineNumber) { + message += ' in ' + file + ' (line ' + lineNumber + ')'; + } + + return message; +}; + +jasmine.util.htmlEscape = function(str) { + if (!str) return str; + return str.replace(/&/g, '&') + .replace(//g, '>'); +}; + +jasmine.util.argsToArray = function(args) { + var arrayOfArgs = []; + for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]); + return arrayOfArgs; +}; + +jasmine.util.extend = function(destination, source) { + for (var property in source) destination[property] = source[property]; + return destination; +}; + +/** + * Environment for Jasmine + * + * @constructor + */ +jasmine.Env = function() { + this.currentSpec = null; + this.currentSuite = null; + this.currentRunner_ = new jasmine.Runner(this); + + this.reporter = new jasmine.MultiReporter(); + + this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL; + this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL; + this.lastUpdate = 0; + this.specFilter = function() { + return true; + }; + + this.nextSpecId_ = 0; + this.nextSuiteId_ = 0; + this.equalityTesters_ = []; + + // wrap matchers + this.matchersClass = function() { + jasmine.Matchers.apply(this, arguments); + }; + jasmine.util.inherit(this.matchersClass, jasmine.Matchers); + + jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass); +}; + + +jasmine.Env.prototype.setTimeout = jasmine.setTimeout; +jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout; +jasmine.Env.prototype.setInterval = jasmine.setInterval; +jasmine.Env.prototype.clearInterval = jasmine.clearInterval; + +/** + * @returns an object containing jasmine version build info, if set. + */ +jasmine.Env.prototype.version = function () { + if (jasmine.version_) { + return jasmine.version_; + } else { + throw new Error('Version not set'); + } +}; + +/** + * @returns string containing jasmine version build info, if set. + */ +jasmine.Env.prototype.versionString = function() { + if (!jasmine.version_) { + return "version unknown"; + } + + var version = this.version(); + var versionString = version.major + "." + version.minor + "." + version.build; + if (version.release_candidate) { + versionString += ".rc" + version.release_candidate; + } + versionString += " revision " + version.revision; + return versionString; +}; + +/** + * @returns a sequential integer starting at 0 + */ +jasmine.Env.prototype.nextSpecId = function () { + return this.nextSpecId_++; +}; + +/** + * @returns a sequential integer starting at 0 + */ +jasmine.Env.prototype.nextSuiteId = function () { + return this.nextSuiteId_++; +}; + +/** + * Register a reporter to receive status updates from Jasmine. + * @param {jasmine.Reporter} reporter An object which will receive status updates. + */ +jasmine.Env.prototype.addReporter = function(reporter) { + this.reporter.addReporter(reporter); +}; + +jasmine.Env.prototype.execute = function() { + this.currentRunner_.execute(); +}; + +jasmine.Env.prototype.describe = function(description, specDefinitions) { + var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite); + + var parentSuite = this.currentSuite; + if (parentSuite) { + parentSuite.add(suite); + } else { + this.currentRunner_.add(suite); + } + + this.currentSuite = suite; + + var declarationError = null; + try { + specDefinitions.call(suite); + } catch(e) { + declarationError = e; + } + + if (declarationError) { + this.it("encountered a declaration exception", function() { + throw declarationError; + }); + } + + this.currentSuite = parentSuite; + + return suite; +}; + +jasmine.Env.prototype.beforeEach = function(beforeEachFunction) { + if (this.currentSuite) { + this.currentSuite.beforeEach(beforeEachFunction); + } else { + this.currentRunner_.beforeEach(beforeEachFunction); + } +}; + +jasmine.Env.prototype.currentRunner = function () { + return this.currentRunner_; +}; + +jasmine.Env.prototype.afterEach = function(afterEachFunction) { + if (this.currentSuite) { + this.currentSuite.afterEach(afterEachFunction); + } else { + this.currentRunner_.afterEach(afterEachFunction); + } + +}; + +jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) { + return { + execute: function() { + } + }; +}; + +jasmine.Env.prototype.it = function(description, func) { + var spec = new jasmine.Spec(this, this.currentSuite, description); + this.currentSuite.add(spec); + this.currentSpec = spec; + + if (func) { + spec.runs(func); + } + + return spec; +}; + +jasmine.Env.prototype.xit = function(desc, func) { + return { + id: this.nextSpecId(), + runs: function() { + } + }; +}; + +jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) { + if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) { + return true; + } + + a.__Jasmine_been_here_before__ = b; + b.__Jasmine_been_here_before__ = a; + + var hasKey = function(obj, keyName) { + return obj !== null && obj[keyName] !== jasmine.undefined; + }; + + for (var property in b) { + if (!hasKey(a, property) && hasKey(b, property)) { + mismatchKeys.push("expected has key '" + property + "', but missing from actual."); + } + } + for (property in a) { + if (!hasKey(b, property) && hasKey(a, property)) { + mismatchKeys.push("expected missing key '" + property + "', but present in actual."); + } + } + for (property in b) { + if (property == '__Jasmine_been_here_before__') continue; + if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) { + mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual."); + } + } + + if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) { + mismatchValues.push("arrays were not the same length"); + } + + delete a.__Jasmine_been_here_before__; + delete b.__Jasmine_been_here_before__; + return (mismatchKeys.length === 0 && mismatchValues.length === 0); +}; + +jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) { + mismatchKeys = mismatchKeys || []; + mismatchValues = mismatchValues || []; + + for (var i = 0; i < this.equalityTesters_.length; i++) { + var equalityTester = this.equalityTesters_[i]; + var result = equalityTester(a, b, this, mismatchKeys, mismatchValues); + if (result !== jasmine.undefined) return result; + } + + if (a === b) return true; + + if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) { + return (a == jasmine.undefined && b == jasmine.undefined); + } + + if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) { + return a === b; + } + + if (a instanceof Date && b instanceof Date) { + return a.getTime() == b.getTime(); + } + + if (a instanceof jasmine.Matchers.Any) { + return a.matches(b); + } + + if (b instanceof jasmine.Matchers.Any) { + return b.matches(a); + } + + if (jasmine.isString_(a) && jasmine.isString_(b)) { + return (a == b); + } + + if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) { + return (a == b); + } + + if (typeof a === "object" && typeof b === "object") { + return this.compareObjects_(a, b, mismatchKeys, mismatchValues); + } + + //Straight check + return (a === b); +}; + +jasmine.Env.prototype.contains_ = function(haystack, needle) { + if (jasmine.isArray_(haystack)) { + for (var i = 0; i < haystack.length; i++) { + if (this.equals_(haystack[i], needle)) return true; + } + return false; + } + return haystack.indexOf(needle) >= 0; +}; + +jasmine.Env.prototype.addEqualityTester = function(equalityTester) { + this.equalityTesters_.push(equalityTester); +}; +/** No-op base class for Jasmine reporters. + * + * @constructor + */ +jasmine.Reporter = function() { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportRunnerStarting = function(runner) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportRunnerResults = function(runner) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSuiteResults = function(suite) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSpecStarting = function(spec) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.reportSpecResults = function(spec) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.Reporter.prototype.log = function(str) { +}; + +/** + * Blocks are functions with executable code that make up a spec. + * + * @constructor + * @param {jasmine.Env} env + * @param {Function} func + * @param {jasmine.Spec} spec + */ +jasmine.Block = function(env, func, spec) { + this.env = env; + this.func = func; + this.spec = spec; +}; + +jasmine.Block.prototype.execute = function(onComplete) { + try { + this.func.apply(this.spec); + } catch (e) { + this.spec.fail(e); + } + onComplete(); +}; +/** JavaScript API reporter. + * + * @constructor + */ +jasmine.JsApiReporter = function() { + this.started = false; + this.finished = false; + this.suites_ = []; + this.results_ = {}; +}; + +jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) { + this.started = true; + var suites = runner.topLevelSuites(); + for (var i = 0; i < suites.length; i++) { + var suite = suites[i]; + this.suites_.push(this.summarize_(suite)); + } +}; + +jasmine.JsApiReporter.prototype.suites = function() { + return this.suites_; +}; + +jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) { + var isSuite = suiteOrSpec instanceof jasmine.Suite; + var summary = { + id: suiteOrSpec.id, + name: suiteOrSpec.description, + type: isSuite ? 'suite' : 'spec', + children: [] + }; + + if (isSuite) { + var children = suiteOrSpec.children(); + for (var i = 0; i < children.length; i++) { + summary.children.push(this.summarize_(children[i])); + } + } + return summary; +}; + +jasmine.JsApiReporter.prototype.results = function() { + return this.results_; +}; + +jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) { + return this.results_[specId]; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) { + this.finished = true; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) { +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) { + this.results_[spec.id] = { + messages: spec.results().getItems(), + result: spec.results().failedCount > 0 ? "failed" : "passed" + }; +}; + +//noinspection JSUnusedLocalSymbols +jasmine.JsApiReporter.prototype.log = function(str) { +}; + +jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){ + var results = {}; + for (var i = 0; i < specIds.length; i++) { + var specId = specIds[i]; + results[specId] = this.summarizeResult_(this.results_[specId]); + } + return results; +}; + +jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){ + var summaryMessages = []; + var messagesLength = result.messages.length; + for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) { + var resultMessage = result.messages[messageIndex]; + summaryMessages.push({ + text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined, + passed: resultMessage.passed ? resultMessage.passed() : true, + type: resultMessage.type, + message: resultMessage.message, + trace: { + stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined + } + }); + } + + return { + result : result.result, + messages : summaryMessages + }; +}; + +/** + * @constructor + * @param {jasmine.Env} env + * @param actual + * @param {jasmine.Spec} spec + */ +jasmine.Matchers = function(env, actual, spec, opt_isNot) { + this.env = env; + this.actual = actual; + this.spec = spec; + this.isNot = opt_isNot || false; + this.reportWasCalled_ = false; +}; + +// todo: @deprecated as of Jasmine 0.11, remove soon [xw] +jasmine.Matchers.pp = function(str) { + throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!"); +}; + +// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw] +jasmine.Matchers.prototype.report = function(result, failing_message, details) { + throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs"); +}; + +jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) { + for (var methodName in prototype) { + if (methodName == 'report') continue; + var orig = prototype[methodName]; + matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig); + } +}; + +jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) { + return function() { + var matcherArgs = jasmine.util.argsToArray(arguments); + var result = matcherFunction.apply(this, arguments); + + if (this.isNot) { + result = !result; + } + + if (this.reportWasCalled_) return result; + + var message; + if (!result) { + if (this.message) { + message = this.message.apply(this, arguments); + if (jasmine.isArray_(message)) { + message = message[this.isNot ? 1 : 0]; + } + } else { + var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); + message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate; + if (matcherArgs.length > 0) { + for (var i = 0; i < matcherArgs.length; i++) { + if (i > 0) message += ","; + message += " " + jasmine.pp(matcherArgs[i]); + } + } + message += "."; + } + } + var expectationResult = new jasmine.ExpectationResult({ + matcherName: matcherName, + passed: result, + expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0], + actual: this.actual, + message: message + }); + this.spec.addMatcherResult(expectationResult); + return jasmine.undefined; + }; +}; + + + + +/** + * toBe: compares the actual to the expected using === + * @param expected + */ +jasmine.Matchers.prototype.toBe = function(expected) { + return this.actual === expected; +}; + +/** + * toNotBe: compares the actual to the expected using !== + * @param expected + * @deprecated as of 1.0. Use not.toBe() instead. + */ +jasmine.Matchers.prototype.toNotBe = function(expected) { + return this.actual !== expected; +}; + +/** + * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc. + * + * @param expected + */ +jasmine.Matchers.prototype.toEqual = function(expected) { + return this.env.equals_(this.actual, expected); +}; + +/** + * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual + * @param expected + * @deprecated as of 1.0. Use not.toNotEqual() instead. + */ +jasmine.Matchers.prototype.toNotEqual = function(expected) { + return !this.env.equals_(this.actual, expected); +}; + +/** + * Matcher that compares the actual to the expected using a regular expression. Constructs a RegExp, so takes + * a pattern or a String. + * + * @param expected + */ +jasmine.Matchers.prototype.toMatch = function(expected) { + return new RegExp(expected).test(this.actual); +}; + +/** + * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch + * @param expected + * @deprecated as of 1.0. Use not.toMatch() instead. + */ +jasmine.Matchers.prototype.toNotMatch = function(expected) { + return !(new RegExp(expected).test(this.actual)); +}; + +/** + * Matcher that compares the actual to jasmine.undefined. + */ +jasmine.Matchers.prototype.toBeDefined = function() { + return (this.actual !== jasmine.undefined); +}; + +/** + * Matcher that compares the actual to jasmine.undefined. + */ +jasmine.Matchers.prototype.toBeUndefined = function() { + return (this.actual === jasmine.undefined); +}; + +/** + * Matcher that compares the actual to null. + */ +jasmine.Matchers.prototype.toBeNull = function() { + return (this.actual === null); +}; + +/** + * Matcher that boolean not-nots the actual. + */ +jasmine.Matchers.prototype.toBeTruthy = function() { + return !!this.actual; +}; + + +/** + * Matcher that boolean nots the actual. + */ +jasmine.Matchers.prototype.toBeFalsy = function() { + return !this.actual; +}; + + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was called. + */ +jasmine.Matchers.prototype.toHaveBeenCalled = function() { + if (arguments.length > 0) { + throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); + } + + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy " + this.actual.identity + " to have been called.", + "Expected spy " + this.actual.identity + " not to have been called." + ]; + }; + + return this.actual.wasCalled; +}; + +/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */ +jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled; + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was not called. + * + * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead + */ +jasmine.Matchers.prototype.wasNotCalled = function() { + if (arguments.length > 0) { + throw new Error('wasNotCalled does not take arguments'); + } + + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy " + this.actual.identity + " to not have been called.", + "Expected spy " + this.actual.identity + " to have been called." + ]; + }; + + return !this.actual.wasCalled; +}; + +/** + * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters. + * + * @example + * + */ +jasmine.Matchers.prototype.toHaveBeenCalledWith = function() { + var expectedArgs = jasmine.util.argsToArray(arguments); + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + this.message = function() { + if (this.actual.callCount === 0) { + // todo: what should the failure message for .not.toHaveBeenCalledWith() be? is this right? test better. [xw] + return [ + "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called.", + "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was." + ]; + } else { + return [ + "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall), + "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall) + ]; + } + }; + + return this.env.contains_(this.actual.argsForCall, expectedArgs); +}; + +/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */ +jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith; + +/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */ +jasmine.Matchers.prototype.wasNotCalledWith = function() { + var expectedArgs = jasmine.util.argsToArray(arguments); + if (!jasmine.isSpy(this.actual)) { + throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); + } + + this.message = function() { + return [ + "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was", + "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was" + ]; + }; + + return !this.env.contains_(this.actual.argsForCall, expectedArgs); +}; + +/** + * Matcher that checks that the expected item is an element in the actual Array. + * + * @param {Object} expected + */ +jasmine.Matchers.prototype.toContain = function(expected) { + return this.env.contains_(this.actual, expected); +}; + +/** + * Matcher that checks that the expected item is NOT an element in the actual Array. + * + * @param {Object} expected + * @deprecated as of 1.0. Use not.toNotContain() instead. + */ +jasmine.Matchers.prototype.toNotContain = function(expected) { + return !this.env.contains_(this.actual, expected); +}; + +jasmine.Matchers.prototype.toBeLessThan = function(expected) { + return this.actual < expected; +}; + +jasmine.Matchers.prototype.toBeGreaterThan = function(expected) { + return this.actual > expected; +}; + +/** + * Matcher that checks that the expected item is equal to the actual item + * up to a given level of decimal precision (default 2). + * + * @param {Number} expected + * @param {Number} precision + */ +jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) { + if (!(precision === 0)) { + precision = precision || 2; + } + var multiplier = Math.pow(10, precision); + var actual = Math.round(this.actual * multiplier); + expected = Math.round(expected * multiplier); + return expected == actual; +}; + +/** + * Matcher that checks that the expected exception was thrown by the actual. + * + * @param {String} expected + */ +jasmine.Matchers.prototype.toThrow = function(expected) { + var result = false; + var exception; + if (typeof this.actual != 'function') { + throw new Error('Actual is not a function'); + } + try { + this.actual(); + } catch (e) { + exception = e; + } + if (exception) { + result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected)); + } + + var not = this.isNot ? "not " : ""; + + this.message = function() { + if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) { + return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' '); + } else { + return "Expected function to throw an exception."; + } + }; + + return result; +}; + +jasmine.Matchers.Any = function(expectedClass) { + this.expectedClass = expectedClass; +}; + +jasmine.Matchers.Any.prototype.matches = function(other) { + if (this.expectedClass == String) { + return typeof other == 'string' || other instanceof String; + } + + if (this.expectedClass == Number) { + return typeof other == 'number' || other instanceof Number; + } + + if (this.expectedClass == Function) { + return typeof other == 'function' || other instanceof Function; + } + + if (this.expectedClass == Object) { + return typeof other == 'object'; + } + + return other instanceof this.expectedClass; +}; + +jasmine.Matchers.Any.prototype.toString = function() { + return ''; +}; + +/** + * @constructor + */ +jasmine.MultiReporter = function() { + this.subReporters_ = []; +}; +jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter); + +jasmine.MultiReporter.prototype.addReporter = function(reporter) { + this.subReporters_.push(reporter); +}; + +(function() { + var functionNames = [ + "reportRunnerStarting", + "reportRunnerResults", + "reportSuiteResults", + "reportSpecStarting", + "reportSpecResults", + "log" + ]; + for (var i = 0; i < functionNames.length; i++) { + var functionName = functionNames[i]; + jasmine.MultiReporter.prototype[functionName] = (function(functionName) { + return function() { + for (var j = 0; j < this.subReporters_.length; j++) { + var subReporter = this.subReporters_[j]; + if (subReporter[functionName]) { + subReporter[functionName].apply(subReporter, arguments); + } + } + }; + })(functionName); + } +})(); +/** + * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults + * + * @constructor + */ +jasmine.NestedResults = function() { + /** + * The total count of results + */ + this.totalCount = 0; + /** + * Number of passed results + */ + this.passedCount = 0; + /** + * Number of failed results + */ + this.failedCount = 0; + /** + * Was this suite/spec skipped? + */ + this.skipped = false; + /** + * @ignore + */ + this.items_ = []; +}; + +/** + * Roll up the result counts. + * + * @param result + */ +jasmine.NestedResults.prototype.rollupCounts = function(result) { + this.totalCount += result.totalCount; + this.passedCount += result.passedCount; + this.failedCount += result.failedCount; +}; + +/** + * Adds a log message. + * @param values Array of message parts which will be concatenated later. + */ +jasmine.NestedResults.prototype.log = function(values) { + this.items_.push(new jasmine.MessageResult(values)); +}; + +/** + * Getter for the results: message & results. + */ +jasmine.NestedResults.prototype.getItems = function() { + return this.items_; +}; + +/** + * Adds a result, tracking counts (total, passed, & failed) + * @param {jasmine.ExpectationResult|jasmine.NestedResults} result + */ +jasmine.NestedResults.prototype.addResult = function(result) { + if (result.type != 'log') { + if (result.items_) { + this.rollupCounts(result); + } else { + this.totalCount++; + if (result.passed()) { + this.passedCount++; + } else { + this.failedCount++; + } + } + } + this.items_.push(result); +}; + +/** + * @returns {Boolean} True if everything below passed + */ +jasmine.NestedResults.prototype.passed = function() { + return this.passedCount === this.totalCount; +}; +/** + * Base class for pretty printing for expectation results. + */ +jasmine.PrettyPrinter = function() { + this.ppNestLevel_ = 0; +}; + +/** + * Formats a value in a nice, human-readable string. + * + * @param value + */ +jasmine.PrettyPrinter.prototype.format = function(value) { + if (this.ppNestLevel_ > 40) { + throw new Error('jasmine.PrettyPrinter: format() nested too deeply!'); + } + + this.ppNestLevel_++; + try { + if (value === jasmine.undefined) { + this.emitScalar('undefined'); + } else if (value === null) { + this.emitScalar('null'); + } else if (value === jasmine.getGlobal()) { + this.emitScalar(''); + } else if (value instanceof jasmine.Matchers.Any) { + this.emitScalar(value.toString()); + } else if (typeof value === 'string') { + this.emitString(value); + } else if (jasmine.isSpy(value)) { + this.emitScalar("spy on " + value.identity); + } else if (value instanceof RegExp) { + this.emitScalar(value.toString()); + } else if (typeof value === 'function') { + this.emitScalar('Function'); + } else if (typeof value.nodeType === 'number') { + this.emitScalar('HTMLNode'); + } else if (value instanceof Date) { + this.emitScalar('Date(' + value + ')'); + } else if (value.__Jasmine_been_here_before__) { + this.emitScalar(''); + } else if (jasmine.isArray_(value) || typeof value == 'object') { + value.__Jasmine_been_here_before__ = true; + if (jasmine.isArray_(value)) { + this.emitArray(value); + } else { + this.emitObject(value); + } + delete value.__Jasmine_been_here_before__; + } else { + this.emitScalar(value.toString()); + } + } finally { + this.ppNestLevel_--; + } +}; + +jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) { + for (var property in obj) { + if (property == '__Jasmine_been_here_before__') continue; + fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && + obj.__lookupGetter__(property) !== null) : false); + } +}; + +jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_; +jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_; + +jasmine.StringPrettyPrinter = function() { + jasmine.PrettyPrinter.call(this); + + this.string = ''; +}; +jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter); + +jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) { + this.append(value); +}; + +jasmine.StringPrettyPrinter.prototype.emitString = function(value) { + this.append("'" + value + "'"); +}; + +jasmine.StringPrettyPrinter.prototype.emitArray = function(array) { + this.append('[ '); + for (var i = 0; i < array.length; i++) { + if (i > 0) { + this.append(', '); + } + this.format(array[i]); + } + this.append(' ]'); +}; + +jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) { + var self = this; + this.append('{ '); + var first = true; + + this.iterateObject(obj, function(property, isGetter) { + if (first) { + first = false; + } else { + self.append(', '); + } + + self.append(property); + self.append(' : '); + if (isGetter) { + self.append(''); + } else { + self.format(obj[property]); + } + }); + + this.append(' }'); +}; + +jasmine.StringPrettyPrinter.prototype.append = function(value) { + this.string += value; +}; +jasmine.Queue = function(env) { + this.env = env; + this.blocks = []; + this.running = false; + this.index = 0; + this.offset = 0; + this.abort = false; +}; + +jasmine.Queue.prototype.addBefore = function(block) { + this.blocks.unshift(block); +}; + +jasmine.Queue.prototype.add = function(block) { + this.blocks.push(block); +}; + +jasmine.Queue.prototype.insertNext = function(block) { + this.blocks.splice((this.index + this.offset + 1), 0, block); + this.offset++; +}; + +jasmine.Queue.prototype.start = function(onComplete) { + this.running = true; + this.onComplete = onComplete; + this.next_(); +}; + +jasmine.Queue.prototype.isRunning = function() { + return this.running; +}; + +jasmine.Queue.LOOP_DONT_RECURSE = true; + +jasmine.Queue.prototype.next_ = function() { + var self = this; + var goAgain = true; + + while (goAgain) { + goAgain = false; + + if (self.index < self.blocks.length && !this.abort) { + var calledSynchronously = true; + var completedSynchronously = false; + + var onComplete = function () { + if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) { + completedSynchronously = true; + return; + } + + if (self.blocks[self.index].abort) { + self.abort = true; + } + + self.offset = 0; + self.index++; + + var now = new Date().getTime(); + if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) { + self.env.lastUpdate = now; + self.env.setTimeout(function() { + self.next_(); + }, 0); + } else { + if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) { + goAgain = true; + } else { + self.next_(); + } + } + }; + self.blocks[self.index].execute(onComplete); + + calledSynchronously = false; + if (completedSynchronously) { + onComplete(); + } + + } else { + self.running = false; + if (self.onComplete) { + self.onComplete(); + } + } + } +}; + +jasmine.Queue.prototype.results = function() { + var results = new jasmine.NestedResults(); + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].results) { + results.addResult(this.blocks[i].results()); + } + } + return results; +}; + + +/** + * Runner + * + * @constructor + * @param {jasmine.Env} env + */ +jasmine.Runner = function(env) { + var self = this; + self.env = env; + self.queue = new jasmine.Queue(env); + self.before_ = []; + self.after_ = []; + self.suites_ = []; +}; + +jasmine.Runner.prototype.execute = function() { + var self = this; + if (self.env.reporter.reportRunnerStarting) { + self.env.reporter.reportRunnerStarting(this); + } + self.queue.start(function () { + self.finishCallback(); + }); +}; + +jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) { + beforeEachFunction.typeName = 'beforeEach'; + this.before_.splice(0,0,beforeEachFunction); +}; + +jasmine.Runner.prototype.afterEach = function(afterEachFunction) { + afterEachFunction.typeName = 'afterEach'; + this.after_.splice(0,0,afterEachFunction); +}; + + +jasmine.Runner.prototype.finishCallback = function() { + this.env.reporter.reportRunnerResults(this); +}; + +jasmine.Runner.prototype.addSuite = function(suite) { + this.suites_.push(suite); +}; + +jasmine.Runner.prototype.add = function(block) { + if (block instanceof jasmine.Suite) { + this.addSuite(block); + } + this.queue.add(block); +}; + +jasmine.Runner.prototype.specs = function () { + var suites = this.suites(); + var specs = []; + for (var i = 0; i < suites.length; i++) { + specs = specs.concat(suites[i].specs()); + } + return specs; +}; + +jasmine.Runner.prototype.suites = function() { + return this.suites_; +}; + +jasmine.Runner.prototype.topLevelSuites = function() { + var topLevelSuites = []; + for (var i = 0; i < this.suites_.length; i++) { + if (!this.suites_[i].parentSuite) { + topLevelSuites.push(this.suites_[i]); + } + } + return topLevelSuites; +}; + +jasmine.Runner.prototype.results = function() { + return this.queue.results(); +}; +/** + * Internal representation of a Jasmine specification, or test. + * + * @constructor + * @param {jasmine.Env} env + * @param {jasmine.Suite} suite + * @param {String} description + */ +jasmine.Spec = function(env, suite, description) { + if (!env) { + throw new Error('jasmine.Env() required'); + } + if (!suite) { + throw new Error('jasmine.Suite() required'); + } + var spec = this; + spec.id = env.nextSpecId ? env.nextSpecId() : null; + spec.env = env; + spec.suite = suite; + spec.description = description; + spec.queue = new jasmine.Queue(env); + + spec.afterCallbacks = []; + spec.spies_ = []; + + spec.results_ = new jasmine.NestedResults(); + spec.results_.description = description; + spec.matchersClass = null; +}; + +jasmine.Spec.prototype.getFullName = function() { + return this.suite.getFullName() + ' ' + this.description + '.'; +}; + + +jasmine.Spec.prototype.results = function() { + return this.results_; +}; + +/** + * All parameters are pretty-printed and concatenated together, then written to the spec's output. + * + * Be careful not to leave calls to jasmine.log in production code. + */ +jasmine.Spec.prototype.log = function() { + return this.results_.log(arguments); +}; + +jasmine.Spec.prototype.runs = function (func) { + var block = new jasmine.Block(this.env, func, this); + this.addToQueue(block); + return this; +}; + +jasmine.Spec.prototype.addToQueue = function (block) { + if (this.queue.isRunning()) { + this.queue.insertNext(block); + } else { + this.queue.add(block); + } +}; + +/** + * @param {jasmine.ExpectationResult} result + */ +jasmine.Spec.prototype.addMatcherResult = function(result) { + this.results_.addResult(result); +}; + +jasmine.Spec.prototype.expect = function(actual) { + var positive = new (this.getMatchersClass_())(this.env, actual, this); + positive.not = new (this.getMatchersClass_())(this.env, actual, this, true); + return positive; +}; + +/** + * Waits a fixed time period before moving to the next block. + * + * @deprecated Use waitsFor() instead + * @param {Number} timeout milliseconds to wait + */ +jasmine.Spec.prototype.waits = function(timeout) { + var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this); + this.addToQueue(waitsFunc); + return this; +}; + +/** + * Waits for the latchFunction to return true before proceeding to the next block. + * + * @param {Function} latchFunction + * @param {String} optional_timeoutMessage + * @param {Number} optional_timeout + */ +jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { + var latchFunction_ = null; + var optional_timeoutMessage_ = null; + var optional_timeout_ = null; + + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + switch (typeof arg) { + case 'function': + latchFunction_ = arg; + break; + case 'string': + optional_timeoutMessage_ = arg; + break; + case 'number': + optional_timeout_ = arg; + break; + } + } + + var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this); + this.addToQueue(waitsForFunc); + return this; +}; + +jasmine.Spec.prototype.fail = function (e) { + var expectationResult = new jasmine.ExpectationResult({ + passed: false, + message: e ? jasmine.util.formatException(e) : 'Exception', + trace: { stack: e.stack } + }); + this.results_.addResult(expectationResult); +}; + +jasmine.Spec.prototype.getMatchersClass_ = function() { + return this.matchersClass || this.env.matchersClass; +}; + +jasmine.Spec.prototype.addMatchers = function(matchersPrototype) { + var parent = this.getMatchersClass_(); + var newMatchersClass = function() { + parent.apply(this, arguments); + }; + jasmine.util.inherit(newMatchersClass, parent); + jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass); + this.matchersClass = newMatchersClass; +}; + +jasmine.Spec.prototype.finishCallback = function() { + this.env.reporter.reportSpecResults(this); +}; + +jasmine.Spec.prototype.finish = function(onComplete) { + this.removeAllSpies(); + this.finishCallback(); + if (onComplete) { + onComplete(); + } +}; + +jasmine.Spec.prototype.after = function(doAfter) { + if (this.queue.isRunning()) { + this.queue.add(new jasmine.Block(this.env, doAfter, this)); + } else { + this.afterCallbacks.unshift(doAfter); + } +}; + +jasmine.Spec.prototype.execute = function(onComplete) { + var spec = this; + if (!spec.env.specFilter(spec)) { + spec.results_.skipped = true; + spec.finish(onComplete); + return; + } + + this.env.reporter.reportSpecStarting(this); + + spec.env.currentSpec = spec; + + spec.addBeforesAndAftersToQueue(); + + spec.queue.start(function () { + spec.finish(onComplete); + }); +}; + +jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() { + var runner = this.env.currentRunner(); + var i; + + for (var suite = this.suite; suite; suite = suite.parentSuite) { + for (i = 0; i < suite.before_.length; i++) { + this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this)); + } + } + for (i = 0; i < runner.before_.length; i++) { + this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this)); + } + for (i = 0; i < this.afterCallbacks.length; i++) { + this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this)); + } + for (suite = this.suite; suite; suite = suite.parentSuite) { + for (i = 0; i < suite.after_.length; i++) { + this.queue.add(new jasmine.Block(this.env, suite.after_[i], this)); + } + } + for (i = 0; i < runner.after_.length; i++) { + this.queue.add(new jasmine.Block(this.env, runner.after_[i], this)); + } +}; + +jasmine.Spec.prototype.explodes = function() { + throw 'explodes function should not have been called'; +}; + +jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) { + if (obj == jasmine.undefined) { + throw "spyOn could not find an object to spy upon for " + methodName + "()"; + } + + if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) { + throw methodName + '() method does not exist'; + } + + if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) { + throw new Error(methodName + ' has already been spied upon'); + } + + var spyObj = jasmine.createSpy(methodName); + + this.spies_.push(spyObj); + spyObj.baseObj = obj; + spyObj.methodName = methodName; + spyObj.originalValue = obj[methodName]; + + obj[methodName] = spyObj; + + return spyObj; +}; + +jasmine.Spec.prototype.removeAllSpies = function() { + for (var i = 0; i < this.spies_.length; i++) { + var spy = this.spies_[i]; + spy.baseObj[spy.methodName] = spy.originalValue; + } + this.spies_ = []; +}; + +/** + * Internal representation of a Jasmine suite. + * + * @constructor + * @param {jasmine.Env} env + * @param {String} description + * @param {Function} specDefinitions + * @param {jasmine.Suite} parentSuite + */ +jasmine.Suite = function(env, description, specDefinitions, parentSuite) { + var self = this; + self.id = env.nextSuiteId ? env.nextSuiteId() : null; + self.description = description; + self.queue = new jasmine.Queue(env); + self.parentSuite = parentSuite; + self.env = env; + self.before_ = []; + self.after_ = []; + self.children_ = []; + self.suites_ = []; + self.specs_ = []; +}; + +jasmine.Suite.prototype.getFullName = function() { + var fullName = this.description; + for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { + fullName = parentSuite.description + ' ' + fullName; + } + return fullName; +}; + +jasmine.Suite.prototype.finish = function(onComplete) { + this.env.reporter.reportSuiteResults(this); + this.finished = true; + if (typeof(onComplete) == 'function') { + onComplete(); + } +}; + +jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) { + beforeEachFunction.typeName = 'beforeEach'; + this.before_.unshift(beforeEachFunction); +}; + +jasmine.Suite.prototype.afterEach = function(afterEachFunction) { + afterEachFunction.typeName = 'afterEach'; + this.after_.unshift(afterEachFunction); +}; + +jasmine.Suite.prototype.results = function() { + return this.queue.results(); +}; + +jasmine.Suite.prototype.add = function(suiteOrSpec) { + this.children_.push(suiteOrSpec); + if (suiteOrSpec instanceof jasmine.Suite) { + this.suites_.push(suiteOrSpec); + this.env.currentRunner().addSuite(suiteOrSpec); + } else { + this.specs_.push(suiteOrSpec); + } + this.queue.add(suiteOrSpec); +}; + +jasmine.Suite.prototype.specs = function() { + return this.specs_; +}; + +jasmine.Suite.prototype.suites = function() { + return this.suites_; +}; + +jasmine.Suite.prototype.children = function() { + return this.children_; +}; + +jasmine.Suite.prototype.execute = function(onComplete) { + var self = this; + this.queue.start(function () { + self.finish(onComplete); + }); +}; +jasmine.WaitsBlock = function(env, timeout, spec) { + this.timeout = timeout; + jasmine.Block.call(this, env, null, spec); +}; + +jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block); + +jasmine.WaitsBlock.prototype.execute = function (onComplete) { + if (jasmine.VERBOSE) { + this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...'); + } + this.env.setTimeout(function () { + onComplete(); + }, this.timeout); +}; +/** + * A block which waits for some condition to become true, with timeout. + * + * @constructor + * @extends jasmine.Block + * @param {jasmine.Env} env The Jasmine environment. + * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true. + * @param {Function} latchFunction A function which returns true when the desired condition has been met. + * @param {String} message The message to display if the desired condition hasn't been met within the given time period. + * @param {jasmine.Spec} spec The Jasmine spec. + */ +jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) { + this.timeout = timeout || env.defaultTimeoutInterval; + this.latchFunction = latchFunction; + this.message = message; + this.totalTimeSpentWaitingForLatch = 0; + jasmine.Block.call(this, env, null, spec); +}; +jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block); + +jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10; + +jasmine.WaitsForBlock.prototype.execute = function(onComplete) { + if (jasmine.VERBOSE) { + this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen')); + } + var latchFunctionResult; + try { + latchFunctionResult = this.latchFunction.apply(this.spec); + } catch (e) { + this.spec.fail(e); + onComplete(); + return; + } + + if (latchFunctionResult) { + onComplete(); + } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) { + var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen'); + this.spec.fail({ + name: 'timeout', + message: message + }); + + this.abort = true; + onComplete(); + } else { + this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT; + var self = this; + this.env.setTimeout(function() { + self.execute(onComplete); + }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT); + } +}; +// Mock setTimeout, clearTimeout +// Contributed by Pivotal Computer Systems, www.pivotalsf.com + +jasmine.FakeTimer = function() { + this.reset(); + + var self = this; + self.setTimeout = function(funcToCall, millis) { + self.timeoutsMade++; + self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false); + return self.timeoutsMade; + }; + + self.setInterval = function(funcToCall, millis) { + self.timeoutsMade++; + self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true); + return self.timeoutsMade; + }; + + self.clearTimeout = function(timeoutKey) { + self.scheduledFunctions[timeoutKey] = jasmine.undefined; + }; + + self.clearInterval = function(timeoutKey) { + self.scheduledFunctions[timeoutKey] = jasmine.undefined; + }; + +}; + +jasmine.FakeTimer.prototype.reset = function() { + this.timeoutsMade = 0; + this.scheduledFunctions = {}; + this.nowMillis = 0; +}; + +jasmine.FakeTimer.prototype.tick = function(millis) { + var oldMillis = this.nowMillis; + var newMillis = oldMillis + millis; + this.runFunctionsWithinRange(oldMillis, newMillis); + this.nowMillis = newMillis; +}; + +jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) { + var scheduledFunc; + var funcsToRun = []; + for (var timeoutKey in this.scheduledFunctions) { + scheduledFunc = this.scheduledFunctions[timeoutKey]; + if (scheduledFunc != jasmine.undefined && + scheduledFunc.runAtMillis >= oldMillis && + scheduledFunc.runAtMillis <= nowMillis) { + funcsToRun.push(scheduledFunc); + this.scheduledFunctions[timeoutKey] = jasmine.undefined; + } + } + + if (funcsToRun.length > 0) { + funcsToRun.sort(function(a, b) { + return a.runAtMillis - b.runAtMillis; + }); + for (var i = 0; i < funcsToRun.length; ++i) { + try { + var funcToRun = funcsToRun[i]; + this.nowMillis = funcToRun.runAtMillis; + funcToRun.funcToCall(); + if (funcToRun.recurring) { + this.scheduleFunction(funcToRun.timeoutKey, + funcToRun.funcToCall, + funcToRun.millis, + true); + } + } catch(e) { + } + } + this.runFunctionsWithinRange(oldMillis, nowMillis); + } +}; + +jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) { + this.scheduledFunctions[timeoutKey] = { + runAtMillis: this.nowMillis + millis, + funcToCall: funcToCall, + recurring: recurring, + timeoutKey: timeoutKey, + millis: millis + }; +}; + +/** + * @namespace + */ +jasmine.Clock = { + defaultFakeTimer: new jasmine.FakeTimer(), + + reset: function() { + jasmine.Clock.assertInstalled(); + jasmine.Clock.defaultFakeTimer.reset(); + }, + + tick: function(millis) { + jasmine.Clock.assertInstalled(); + jasmine.Clock.defaultFakeTimer.tick(millis); + }, + + runFunctionsWithinRange: function(oldMillis, nowMillis) { + jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis); + }, + + scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) { + jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring); + }, + + useMock: function() { + if (!jasmine.Clock.isInstalled()) { + var spec = jasmine.getEnv().currentSpec; + spec.after(jasmine.Clock.uninstallMock); + + jasmine.Clock.installMock(); + } + }, + + installMock: function() { + jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer; + }, + + uninstallMock: function() { + jasmine.Clock.assertInstalled(); + jasmine.Clock.installed = jasmine.Clock.real; + }, + + real: { + setTimeout: jasmine.getGlobal().setTimeout, + clearTimeout: jasmine.getGlobal().clearTimeout, + setInterval: jasmine.getGlobal().setInterval, + clearInterval: jasmine.getGlobal().clearInterval + }, + + assertInstalled: function() { + if (!jasmine.Clock.isInstalled()) { + throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()"); + } + }, + + isInstalled: function() { + return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer; + }, + + installed: null +}; +jasmine.Clock.installed = jasmine.Clock.real; + +//else for IE support +jasmine.getGlobal().setTimeout = function(funcToCall, millis) { + if (jasmine.Clock.installed.setTimeout.apply) { + return jasmine.Clock.installed.setTimeout.apply(this, arguments); + } else { + return jasmine.Clock.installed.setTimeout(funcToCall, millis); + } +}; + +jasmine.getGlobal().setInterval = function(funcToCall, millis) { + if (jasmine.Clock.installed.setInterval.apply) { + return jasmine.Clock.installed.setInterval.apply(this, arguments); + } else { + return jasmine.Clock.installed.setInterval(funcToCall, millis); + } +}; + +jasmine.getGlobal().clearTimeout = function(timeoutKey) { + if (jasmine.Clock.installed.clearTimeout.apply) { + return jasmine.Clock.installed.clearTimeout.apply(this, arguments); + } else { + return jasmine.Clock.installed.clearTimeout(timeoutKey); + } +}; + +jasmine.getGlobal().clearInterval = function(timeoutKey) { + if (jasmine.Clock.installed.clearTimeout.apply) { + return jasmine.Clock.installed.clearInterval.apply(this, arguments); + } else { + return jasmine.Clock.installed.clearInterval(timeoutKey); + } +}; + +jasmine.version_= { + "major": 1, + "minor": 1, + "build": 0, + "revision": 1315677058 +}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..218f3b43713598fa5a3e78b57aceb909c33f46df GIT binary patch literal 905 zcmV;419tq0P)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_0008u zNkl3{fod28|PjmA)7fYg4w8-(2my9xtBGOs}K`n&t1VzxMO^X)M zrW+Ln1udc?q6TP)z5gAjt)P&D!M$+HJK#x<`xnD030zwD?KrxxY!2tlA zGc-58?0D7SsT)7Km=v+tNVNUk`?s@;^OxCF)y6P}_mL;~7;S<@b|MzmKq)m8l@yky zT1~ECpxZw@64!nkI34QLiUsA%i%N>-$&zGYR7WJyi9ERMyS(%kf z7A_r)X>!90&m(FwDQZ>q;+nOa*KR2+E6Fz)QwU=W1Oyo*4>_qlm|~joa|{4_A_3W8 z#FFZzRp-xMIx5a7D_Fj3&#r^TbIY@cND1d0f*^qDIs{!pw!IWGQ_%l4#ASm_D5Vet z0%ek7^)@xPihX_G0&hIc9*14ca=D!8oG}vW?H%~w^F?f_s>zU|fKrNJXJ_d6{v!t( zpEoqMws_yQws>3o?VW8Txq~#->dJG^ELW5irR!s`(_JvD^6;r+ho~eIK@ia8_lH(h zt*-p?CFC1_h2MV=?jP){uW!7WjLjCaO&c1D+tf582!XEaoB#xWAYcN5f$sLtf$koW zQs{{>)ZTq?FC6|J_%n}AWbiFK(Bo-%^-{H`*)E(ucjo-r%SYm)W5f6tN=xz=S646E fNXW#U{x?4WXWJ +#include + +// base64 tables +static char basis_64[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +static signed char index_64[128] = +{ + -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, + -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, + -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63, + 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, + 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1, + -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, + 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1 +}; +#define CHAR64(c) (((c) < 0 || (c) > 127) ? -1 : index_64[(c)]) + +// base64_encode : base64 encode +// +// value : data to encode +// vlen : length of data +// (result) : new char[] - c-str of result +char *base64_encode(const unsigned char *value, int vlen) +{ + char *result = (char *)malloc((vlen * 4) / 3 + 5); + char *out = result; + while (vlen >= 3) + { + *out++ = basis_64[value[0] >> 2]; + *out++ = basis_64[((value[0] << 4) & 0x30) | (value[1] >> 4)]; + *out++ = basis_64[((value[1] << 2) & 0x3C) | (value[2] >> 6)]; + *out++ = basis_64[value[2] & 0x3F]; + value += 3; + vlen -= 3; + } + if (vlen > 0) + { + *out++ = basis_64[value[0] >> 2]; + unsigned char oval = (value[0] << 4) & 0x30; + if (vlen > 1) oval |= value[1] >> 4; + *out++ = basis_64[oval]; + *out++ = (vlen < 2) ? '=' : basis_64[(value[1] << 2) & 0x3C]; + *out++ = '='; + } + *out = '\0'; + + return result; +} + +// base64_decode : base64 decode +// +// value : c-str to decode +// rlen : length of decoded result +// (result) : new unsigned char[] - decoded result +unsigned char *base64_decode(const char *value, int *rlen) +{ + *rlen = 0; + int c1, c2, c3, c4; + + int vlen = strlen(value); + unsigned char *result =(unsigned char *)malloc((vlen * 3) / 4 + 1); + unsigned char *out = result; + + while (1) + { + if (value[0]==0) + return result; + c1 = value[0]; + if (CHAR64(c1) == -1) + goto base64_decode_error;; + c2 = value[1]; + if (CHAR64(c2) == -1) + goto base64_decode_error;; + c3 = value[2]; + if ((c3 != '=') && (CHAR64(c3) == -1)) + goto base64_decode_error;; + c4 = value[3]; + if ((c4 != '=') && (CHAR64(c4) == -1)) + goto base64_decode_error;; + + value += 4; + *out++ = (CHAR64(c1) << 2) | (CHAR64(c2) >> 4); + *rlen += 1; + if (c3 != '=') + { + *out++ = ((CHAR64(c2) << 4) & 0xf0) | (CHAR64(c3) >> 2); + *rlen += 1; + if (c4 != '=') + { + *out++ = ((CHAR64(c3) << 6) & 0xc0) | CHAR64(c4); + *rlen += 1; + } + } + } + +base64_decode_error: + *result = 0; + *rlen = 0; + return result; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h new file mode 100644 index 0000000..f0e1f06 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2006-2008 Apple Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +char *base64_encode(const unsigned char *value, int vlen); +unsigned char *base64_decode(const char *value, int *rlen); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc new file mode 100644 index 0000000..08eda82 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc @@ -0,0 +1,563 @@ +#include "kerberos.h" +#include +#include "worker.h" +#include "kerberos_context.h" + +#ifndef ARRAY_SIZE +# define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0])) +#endif + +Persistent Kerberos::constructor_template; + +// Call structs +typedef struct AuthGSSClientCall { + uint32_t flags; + char *uri; +} AuthGSSClientCall; + +typedef struct AuthGSSClientStepCall { + KerberosContext *context; + char *challenge; +} AuthGSSClientStepCall; + +typedef struct AuthGSSClientUnwrapCall { + KerberosContext *context; + char *challenge; +} AuthGSSClientUnwrapCall; + +typedef struct AuthGSSClientWrapCall { + KerberosContext *context; + char *challenge; + char *user_name; +} AuthGSSClientWrapCall; + +typedef struct AuthGSSClientCleanCall { + KerberosContext *context; +} AuthGSSClientCleanCall; + +// VException object (causes throw in calling code) +static Handle VException(const char *msg) { + HandleScope scope; + return ThrowException(Exception::Error(String::New(msg))); +} + +Kerberos::Kerberos() : ObjectWrap() { +} + +void Kerberos::Initialize(v8::Handle target) { + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(Kerberos::New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("Kerberos")); + + // Set up method for the Kerberos instance + NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientInit", AuthGSSClientInit); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientStep", AuthGSSClientStep); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientUnwrap", AuthGSSClientUnwrap); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientWrap", AuthGSSClientWrap); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientClean", AuthGSSClientClean); + + // Set the symbol + target->ForceSet(String::NewSymbol("Kerberos"), constructor_template->GetFunction()); +} + +Handle Kerberos::New(const Arguments &args) { + // Create a Kerberos instance + Kerberos *kerberos = new Kerberos(); + // Return the kerberos object + kerberos->Wrap(args.This()); + return args.This(); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// authGSSClientInit +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +static void _authGSSClientInit(Worker *worker) { + gss_client_state *state; + gss_client_response *response; + + // Allocate state + state = (gss_client_state *)malloc(sizeof(gss_client_state)); + + // Unpack the parameter data struct + AuthGSSClientCall *call = (AuthGSSClientCall *)worker->parameters; + // Start the kerberos client + response = authenticate_gss_client_init(call->uri, call->flags, state); + + // Release the parameter struct memory + free(call->uri); + free(call); + + // If we have an error mark worker as having had an error + if(response->return_code == AUTH_GSS_ERROR) { + worker->error = TRUE; + worker->error_code = response->return_code; + worker->error_message = response->message; + } else { + worker->return_value = state; + } + + // Free structure + free(response); +} + +static Handle _map_authGSSClientInit(Worker *worker) { + HandleScope scope; + + KerberosContext *context = KerberosContext::New(); + context->state = (gss_client_state *)worker->return_value; + // Persistent _context = Persistent::New(context->handle_); + return scope.Close(context->handle_); +} + +// Initialize method +Handle Kerberos::AuthGSSClientInit(const Arguments &args) { + HandleScope scope; + + // Ensure valid call + if(args.Length() != 3) return VException("Requires a service string uri, integer flags and a callback function"); + if(args.Length() == 3 && !args[0]->IsString() && !args[1]->IsInt32() && !args[2]->IsFunction()) + return VException("Requires a service string uri, integer flags and a callback function"); + + Local service = args[0]->ToString(); + // Convert uri string to c-string + char *service_str = (char *)calloc(service->Utf8Length() + 1, sizeof(char)); + // Write v8 string to c-string + service->WriteUtf8(service_str); + + // Allocate a structure + AuthGSSClientCall *call = (AuthGSSClientCall *)calloc(1, sizeof(AuthGSSClientCall)); + call->flags =args[1]->ToInt32()->Uint32Value(); + call->uri = service_str; + + // Unpack the callback + Local callback = Local::Cast(args[2]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _authGSSClientInit; + worker->mapper = _map_authGSSClientInit; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); + // Return no value as it's callback based + return scope.Close(Undefined()); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// authGSSClientStep +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +static void _authGSSClientStep(Worker *worker) { + gss_client_state *state; + gss_client_response *response; + char *challenge; + + // Unpack the parameter data struct + AuthGSSClientStepCall *call = (AuthGSSClientStepCall *)worker->parameters; + // Get the state + state = call->context->state; + challenge = call->challenge; + + // Check what kind of challenge we have + if(call->challenge == NULL) { + challenge = (char *)""; + } + + // Perform authentication step + response = authenticate_gss_client_step(state, challenge); + + // If we have an error mark worker as having had an error + if(response->return_code == AUTH_GSS_ERROR) { + worker->error = TRUE; + worker->error_code = response->return_code; + worker->error_message = response->message; + } else { + worker->return_code = response->return_code; + } + + // Free up structure + if(call->challenge != NULL) free(call->challenge); + free(call); + free(response); +} + +static Handle _map_authGSSClientStep(Worker *worker) { + HandleScope scope; + // Return the return code + return scope.Close(Int32::New(worker->return_code)); +} + +// Initialize method +Handle Kerberos::AuthGSSClientStep(const Arguments &args) { + HandleScope scope; + + // Ensure valid call + if(args.Length() != 2 && args.Length() != 3) return VException("Requires a GSS context, optional challenge string and callback function"); + if(args.Length() == 2 && !KerberosContext::HasInstance(args[0])) return VException("Requires a GSS context, optional challenge string and callback function"); + if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString()) return VException("Requires a GSS context, optional challenge string and callback function"); + + // Challenge string + char *challenge_str = NULL; + // Let's unpack the parameters + Local object = args[0]->ToObject(); + KerberosContext *kerberos_context = KerberosContext::Unwrap(object); + + // If we have a challenge string + if(args.Length() == 3) { + // Unpack the challenge string + Local challenge = args[1]->ToString(); + // Convert uri string to c-string + challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char)); + // Write v8 string to c-string + challenge->WriteUtf8(challenge_str); + } + + // Allocate a structure + AuthGSSClientStepCall *call = (AuthGSSClientStepCall *)calloc(1, sizeof(AuthGSSClientCall)); + call->context = kerberos_context; + call->challenge = challenge_str; + + // Unpack the callback + Local callback = Local::Cast(args[2]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _authGSSClientStep; + worker->mapper = _map_authGSSClientStep; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); + + // Return no value as it's callback based + return scope.Close(Undefined()); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// authGSSClientUnwrap +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +static void _authGSSClientUnwrap(Worker *worker) { + gss_client_response *response; + char *challenge; + + // Unpack the parameter data struct + AuthGSSClientUnwrapCall *call = (AuthGSSClientUnwrapCall *)worker->parameters; + challenge = call->challenge; + + // Check what kind of challenge we have + if(call->challenge == NULL) { + challenge = (char *)""; + } + + // Perform authentication step + response = authenticate_gss_client_unwrap(call->context->state, challenge); + + // If we have an error mark worker as having had an error + if(response->return_code == AUTH_GSS_ERROR) { + worker->error = TRUE; + worker->error_code = response->return_code; + worker->error_message = response->message; + } else { + worker->return_code = response->return_code; + } + + // Free up structure + if(call->challenge != NULL) free(call->challenge); + free(call); + free(response); +} + +static Handle _map_authGSSClientUnwrap(Worker *worker) { + HandleScope scope; + // Return the return code + return scope.Close(Int32::New(worker->return_code)); +} + +// Initialize method +Handle Kerberos::AuthGSSClientUnwrap(const Arguments &args) { + HandleScope scope; + + // Ensure valid call + if(args.Length() != 2 && args.Length() != 3) return VException("Requires a GSS context, optional challenge string and callback function"); + if(args.Length() == 2 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsFunction()) return VException("Requires a GSS context, optional challenge string and callback function"); + if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, optional challenge string and callback function"); + + // Challenge string + char *challenge_str = NULL; + // Let's unpack the parameters + Local object = args[0]->ToObject(); + KerberosContext *kerberos_context = KerberosContext::Unwrap(object); + + // If we have a challenge string + if(args.Length() == 3) { + // Unpack the challenge string + Local challenge = args[1]->ToString(); + // Convert uri string to c-string + challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char)); + // Write v8 string to c-string + challenge->WriteUtf8(challenge_str); + } + + // Allocate a structure + AuthGSSClientUnwrapCall *call = (AuthGSSClientUnwrapCall *)calloc(1, sizeof(AuthGSSClientUnwrapCall)); + call->context = kerberos_context; + call->challenge = challenge_str; + + // Unpack the callback + Local callback = args.Length() == 3 ? Local::Cast(args[2]) : Local::Cast(args[1]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _authGSSClientUnwrap; + worker->mapper = _map_authGSSClientUnwrap; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); + + // Return no value as it's callback based + return scope.Close(Undefined()); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// authGSSClientWrap +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +static void _authGSSClientWrap(Worker *worker) { + gss_client_response *response; + char *user_name = NULL; + + // Unpack the parameter data struct + AuthGSSClientWrapCall *call = (AuthGSSClientWrapCall *)worker->parameters; + user_name = call->user_name; + + // Check what kind of challenge we have + if(call->user_name == NULL) { + user_name = (char *)""; + } + + // Perform authentication step + response = authenticate_gss_client_wrap(call->context->state, call->challenge, user_name); + + // If we have an error mark worker as having had an error + if(response->return_code == AUTH_GSS_ERROR) { + worker->error = TRUE; + worker->error_code = response->return_code; + worker->error_message = response->message; + } else { + worker->return_code = response->return_code; + } + + // Free up structure + if(call->challenge != NULL) free(call->challenge); + if(call->user_name != NULL) free(call->user_name); + free(call); + free(response); +} + +static Handle _map_authGSSClientWrap(Worker *worker) { + HandleScope scope; + // Return the return code + return scope.Close(Int32::New(worker->return_code)); +} + +// Initialize method +Handle Kerberos::AuthGSSClientWrap(const Arguments &args) { + HandleScope scope; + + // Ensure valid call + if(args.Length() != 3 && args.Length() != 4) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function"); + if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function"); + if(args.Length() == 4 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function"); + + // Challenge string + char *challenge_str = NULL; + char *user_name_str = NULL; + + // Let's unpack the kerberos context + Local object = args[0]->ToObject(); + KerberosContext *kerberos_context = KerberosContext::Unwrap(object); + + // Unpack the challenge string + Local challenge = args[1]->ToString(); + // Convert uri string to c-string + challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char)); + // Write v8 string to c-string + challenge->WriteUtf8(challenge_str); + + // If we have a user string + if(args.Length() == 4) { + // Unpack user name + Local user_name = args[2]->ToString(); + // Convert uri string to c-string + user_name_str = (char *)calloc(user_name->Utf8Length() + 1, sizeof(char)); + // Write v8 string to c-string + user_name->WriteUtf8(user_name_str); + } + + // Allocate a structure + AuthGSSClientWrapCall *call = (AuthGSSClientWrapCall *)calloc(1, sizeof(AuthGSSClientWrapCall)); + call->context = kerberos_context; + call->challenge = challenge_str; + call->user_name = user_name_str; + + // Unpack the callback + Local callback = args.Length() == 4 ? Local::Cast(args[3]) : Local::Cast(args[2]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _authGSSClientWrap; + worker->mapper = _map_authGSSClientWrap; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); + + // Return no value as it's callback based + return scope.Close(Undefined()); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// authGSSClientWrap +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +static void _authGSSClientClean(Worker *worker) { + gss_client_response *response; + + // Unpack the parameter data struct + AuthGSSClientCleanCall *call = (AuthGSSClientCleanCall *)worker->parameters; + + // Perform authentication step + response = authenticate_gss_client_clean(call->context->state); + + // If we have an error mark worker as having had an error + if(response->return_code == AUTH_GSS_ERROR) { + worker->error = TRUE; + worker->error_code = response->return_code; + worker->error_message = response->message; + } else { + worker->return_code = response->return_code; + } + + // Free up structure + free(call); + free(response); +} + +static Handle _map_authGSSClientClean(Worker *worker) { + HandleScope scope; + // Return the return code + return scope.Close(Int32::New(worker->return_code)); +} + +// Initialize method +Handle Kerberos::AuthGSSClientClean(const Arguments &args) { + HandleScope scope; + + // // Ensure valid call + if(args.Length() != 2) return VException("Requires a GSS context and callback function"); + if(!KerberosContext::HasInstance(args[0]) && !args[1]->IsFunction()) return VException("Requires a GSS context and callback function"); + + // Let's unpack the kerberos context + Local object = args[0]->ToObject(); + KerberosContext *kerberos_context = KerberosContext::Unwrap(object); + + // Allocate a structure + AuthGSSClientCleanCall *call = (AuthGSSClientCleanCall *)calloc(1, sizeof(AuthGSSClientCleanCall)); + call->context = kerberos_context; + + // Unpack the callback + Local callback = Local::Cast(args[1]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _authGSSClientClean; + worker->mapper = _map_authGSSClientClean; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); + + // Return no value as it's callback based + return scope.Close(Undefined()); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// UV Lib callbacks +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +void Kerberos::Process(uv_work_t* work_req) { + // Grab the worker + Worker *worker = static_cast(work_req->data); + // Execute the worker code + worker->execute(worker); +} + +void Kerberos::After(uv_work_t* work_req) { + // Grab the scope of the call from Node + v8::HandleScope scope; + + // Get the worker reference + Worker *worker = static_cast(work_req->data); + + // If we have an error + if(worker->error) { + v8::Local err = v8::Exception::Error(v8::String::New(worker->error_message)); + Local obj = err->ToObject(); + obj->Set(NODE_PSYMBOL("code"), Int32::New(worker->error_code)); + v8::Local args[2] = { err, v8::Local::New(v8::Null()) }; + // Execute the error + v8::TryCatch try_catch; + // Call the callback + worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); + // If we have an exception handle it as a fatalexception + if (try_catch.HasCaught()) { + node::FatalException(try_catch); + } + } else { + // // Map the data + v8::Handle result = worker->mapper(worker); + // Set up the callback with a null first + v8::Handle args[2] = { v8::Local::New(v8::Null()), result}; + // Wrap the callback function call in a TryCatch so that we can call + // node's FatalException afterwards. This makes it possible to catch + // the exception from JavaScript land using the + // process.on('uncaughtException') event. + v8::TryCatch try_catch; + // Call the callback + worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); + // If we have an exception handle it as a fatalexception + if (try_catch.HasCaught()) { + node::FatalException(try_catch); + } + } + + // Clean up the memory + worker->callback.Dispose(); + delete worker; +} + +// Exporting function +extern "C" void init(Handle target) { + HandleScope scope; + Kerberos::Initialize(target); + KerberosContext::Initialize(target); +} + +NODE_MODULE(kerberos, init); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h new file mode 100644 index 0000000..f0fbcdc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h @@ -0,0 +1,47 @@ +#ifndef KERBEROS_H +#define KERBEROS_H + +#include +#include +#include + +#include +#include +#include + +extern "C" { + #include "kerberosgss.h" +} + +using namespace v8; +using namespace node; + +class Kerberos : public ObjectWrap { + +public: + Kerberos(); + ~Kerberos() {}; + + // Constructor used for creating new Kerberos objects from C++ + static Persistent constructor_template; + + // Initialize function for the object + static void Initialize(Handle target); + + // Method available + static Handle AuthGSSClientInit(const Arguments &args); + static Handle AuthGSSClientStep(const Arguments &args); + static Handle AuthGSSClientUnwrap(const Arguments &args); + static Handle AuthGSSClientWrap(const Arguments &args); + static Handle AuthGSSClientClean(const Arguments &args); + +private: + static Handle New(const Arguments &args); + + // Handles the uv calls + static void Process(uv_work_t* work_req); + // Called after work is done + static void After(uv_work_t* work_req); +}; + +#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js new file mode 100644 index 0000000..b1a701b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js @@ -0,0 +1,91 @@ +var kerberos = require('../build/Release/kerberos') + , KerberosNative = kerberos.Kerberos; + +var Kerberos = function() { + this._native_kerberos = new KerberosNative(); +} + +Kerberos.prototype.authGSSClientInit = function(uri, flags, callback) { + return this._native_kerberos.authGSSClientInit(uri, flags, callback); +} + +Kerberos.prototype.authGSSClientStep = function(context, challenge, callback) { + if(typeof challenge == 'function') { + callback = challenge; + challenge = ''; + } + + return this._native_kerberos.authGSSClientStep(context, challenge, callback); +} + +Kerberos.prototype.authGSSClientUnwrap = function(context, challenge, callback) { + if(typeof challenge == 'function') { + callback = challenge; + challenge = ''; + } + + return this._native_kerberos.authGSSClientUnwrap(context, challenge, callback); +} + +Kerberos.prototype.authGSSClientWrap = function(context, challenge, user_name, callback) { + if(typeof user_name == 'function') { + callback = user_name; + user_name = ''; + } + + return this._native_kerberos.authGSSClientWrap(context, challenge, user_name, callback); +} + +Kerberos.prototype.authGSSClientClean = function(context, callback) { + return this._native_kerberos.authGSSClientClean(context, callback); +} + +Kerberos.prototype.acquireAlternateCredentials = function(user_name, password, domain) { + return this._native_kerberos.acquireAlternateCredentials(user_name, password, domain); +} + +Kerberos.prototype.prepareOutboundPackage = function(principal, inputdata) { + return this._native_kerberos.prepareOutboundPackage(principal, inputdata); +} + +Kerberos.prototype.decryptMessage = function(challenge) { + return this._native_kerberos.decryptMessage(challenge); +} + +Kerberos.prototype.encryptMessage = function(challenge) { + return this._native_kerberos.encryptMessage(challenge); +} + +Kerberos.prototype.queryContextAttribute = function(attribute) { + if(typeof attribute != 'number' && attribute != 0x00) throw new Error("Attribute not supported"); + return this._native_kerberos.queryContextAttribute(attribute); +} + +// Some useful result codes +Kerberos.AUTH_GSS_CONTINUE = 0; +Kerberos.AUTH_GSS_COMPLETE = 1; + +// Some useful gss flags +Kerberos.GSS_C_DELEG_FLAG = 1; +Kerberos.GSS_C_MUTUAL_FLAG = 2; +Kerberos.GSS_C_REPLAY_FLAG = 4; +Kerberos.GSS_C_SEQUENCE_FLAG = 8; +Kerberos.GSS_C_CONF_FLAG = 16; +Kerberos.GSS_C_INTEG_FLAG = 32; +Kerberos.GSS_C_ANON_FLAG = 64; +Kerberos.GSS_C_PROT_READY_FLAG = 128; +Kerberos.GSS_C_TRANS_FLAG = 256; + +// Export Kerberos class +exports.Kerberos = Kerberos; + +// If we have SSPI (windows) +if(kerberos.SecurityCredentials) { + // Put all SSPI classes in it's own namespace + exports.SSIP = { + SecurityCredentials: require('./win32/wrappers/security_credentials').SecurityCredentials + , SecurityContext: require('./win32/wrappers/security_context').SecurityContext + , SecurityBuffer: require('./win32/wrappers/security_buffer').SecurityBuffer + , SecurityBufferDescriptor: require('./win32/wrappers/security_buffer_descriptor').SecurityBufferDescriptor + } +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc new file mode 100644 index 0000000..7a5f4eb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc @@ -0,0 +1,74 @@ +#include "kerberos_context.h" + +Persistent KerberosContext::constructor_template; + +KerberosContext::KerberosContext() : ObjectWrap() { +} + +KerberosContext::~KerberosContext() { +} + +KerberosContext* KerberosContext::New() { + HandleScope scope; + + Local obj = constructor_template->GetFunction()->NewInstance(); + KerberosContext *kerberos_context = ObjectWrap::Unwrap(obj); + + return kerberos_context; +} + +Handle KerberosContext::New(const Arguments &args) { + HandleScope scope; + // Create code object + KerberosContext *kerberos_context = new KerberosContext(); + // Wrap it + kerberos_context->Wrap(args.This()); + // Return the object + return args.This(); +} + +static Persistent response_symbol; + +void KerberosContext::Initialize(Handle target) { + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("KerberosContext")); + + // Property symbols + response_symbol = NODE_PSYMBOL("response"); + + // Getter for the response + constructor_template->InstanceTemplate()->SetAccessor(response_symbol, ResponseGetter); + + // Set up the Symbol for the Class on the Module + target->Set(String::NewSymbol("KerberosContext"), constructor_template->GetFunction()); +} + +// +// Response Setter / Getter +Handle KerberosContext::ResponseGetter(Local property, const AccessorInfo& info) { + HandleScope scope; + gss_client_state *state; + + // Unpack the object + KerberosContext *context = ObjectWrap::Unwrap(info.Holder()); + // Let's grab the response + state = context->state; + // No state no response + if(state == NULL || state->response == NULL) return scope.Close(Null()); + // Return the response + return scope.Close(String::New(state->response)); +} + + + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h new file mode 100644 index 0000000..1b62cba --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h @@ -0,0 +1,48 @@ +#ifndef KERBEROS_CONTEXT_H +#define KERBEROS_CONTEXT_H + +#include +#include +#include + +#include +#include +#include + +extern "C" { + #include "kerberosgss.h" +} + +using namespace v8; +using namespace node; + +class KerberosContext : public ObjectWrap { + +public: + KerberosContext(); + ~KerberosContext(); + + static inline bool HasInstance(Handle val) { + if (!val->IsObject()) return false; + Local obj = val->ToObject(); + return constructor_template->HasInstance(obj); + }; + + // Constructor used for creating new Kerberos objects from C++ + static Persistent constructor_template; + + // Initialize function for the object + static void Initialize(Handle target); + + // Public constructor + static KerberosContext* New(); + + // Handle to the kerberos context + gss_client_state *state; + +private: + static Handle New(const Arguments &args); + + static Handle ResponseGetter(Local property, const AccessorInfo& info); +}; +#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c new file mode 100644 index 0000000..ddf8c4a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c @@ -0,0 +1,668 @@ +/** + * Copyright (c) 2006-2010 Apple Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +#include "kerberosgss.h" + +#include "base64.h" + +#include +#include +#include +#include + +static void set_gss_error(OM_uint32 err_maj, OM_uint32 err_min); + +/*extern PyObject *GssException_class; +extern PyObject *KrbException_class; + +char* server_principal_details(const char* service, const char* hostname) +{ + char match[1024]; + int match_len = 0; + char* result = NULL; + + int code; + krb5_context kcontext; + krb5_keytab kt = NULL; + krb5_kt_cursor cursor = NULL; + krb5_keytab_entry entry; + char* pname = NULL; + + // Generate the principal prefix we want to match + snprintf(match, 1024, "%s/%s@", service, hostname); + match_len = strlen(match); + + code = krb5_init_context(&kcontext); + if (code) + { + PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", + "Cannot initialize Kerberos5 context", code)); + return NULL; + } + + if ((code = krb5_kt_default(kcontext, &kt))) + { + PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", + "Cannot get default keytab", code)); + goto end; + } + + if ((code = krb5_kt_start_seq_get(kcontext, kt, &cursor))) + { + PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", + "Cannot get sequence cursor from keytab", code)); + goto end; + } + + while ((code = krb5_kt_next_entry(kcontext, kt, &entry, &cursor)) == 0) + { + if ((code = krb5_unparse_name(kcontext, entry.principal, &pname))) + { + PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", + "Cannot parse principal name from keytab", code)); + goto end; + } + + if (strncmp(pname, match, match_len) == 0) + { + result = malloc(strlen(pname) + 1); + strcpy(result, pname); + krb5_free_unparsed_name(kcontext, pname); + krb5_free_keytab_entry_contents(kcontext, &entry); + break; + } + + krb5_free_unparsed_name(kcontext, pname); + krb5_free_keytab_entry_contents(kcontext, &entry); + } + + if (result == NULL) + { + PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", + "Principal not found in keytab", -1)); + } + +end: + if (cursor) + krb5_kt_end_seq_get(kcontext, kt, &cursor); + if (kt) + krb5_kt_close(kcontext, kt); + krb5_free_context(kcontext); + + return result; +} +*/ +gss_client_response *authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state) { + OM_uint32 maj_stat; + OM_uint32 min_stat; + gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER; + gss_client_response *response = NULL; + int ret = AUTH_GSS_COMPLETE; + + state->server_name = GSS_C_NO_NAME; + state->context = GSS_C_NO_CONTEXT; + state->gss_flags = gss_flags; + state->username = NULL; + state->response = NULL; + + // Import server name first + name_token.length = strlen(service); + name_token.value = (char *)service; + + maj_stat = gss_import_name(&min_stat, &name_token, gss_krb5_nt_service_name, &state->server_name); + + if (GSS_ERROR(maj_stat)) { + response = gss_error(maj_stat, min_stat); + response->return_code = AUTH_GSS_ERROR; + goto end; + } + +end: + if(response == NULL) { + response = calloc(1, sizeof(gss_client_response)); + response->return_code = ret; + } + + return response; +} + +gss_client_response *authenticate_gss_client_clean(gss_client_state *state) { + OM_uint32 maj_stat; + OM_uint32 min_stat; + int ret = AUTH_GSS_COMPLETE; + gss_client_response *response = NULL; + + if(state->context != GSS_C_NO_CONTEXT) + maj_stat = gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER); + + if(state->server_name != GSS_C_NO_NAME) + maj_stat = gss_release_name(&min_stat, &state->server_name); + + if(state->username != NULL) { + free(state->username); + state->username = NULL; + } + + if (state->response != NULL) { + free(state->response); + state->response = NULL; + } + + if(response == NULL) { + response = calloc(1, sizeof(gss_client_response)); + response->return_code = ret; + } + + return response; +} + +gss_client_response *authenticate_gss_client_step(gss_client_state* state, const char* challenge) { + OM_uint32 maj_stat; + OM_uint32 min_stat; + gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; + gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; + int ret = AUTH_GSS_CONTINUE; + gss_client_response *response = NULL; + + // Always clear out the old response + if (state->response != NULL) { + free(state->response); + state->response = NULL; + } + + // If there is a challenge (data from the server) we need to give it to GSS + if (challenge && *challenge) { + int len; + input_token.value = base64_decode(challenge, &len); + input_token.length = len; + } + + // Do GSSAPI step + maj_stat = gss_init_sec_context(&min_stat, + GSS_C_NO_CREDENTIAL, + &state->context, + state->server_name, + GSS_C_NO_OID, + (OM_uint32)state->gss_flags, + 0, + GSS_C_NO_CHANNEL_BINDINGS, + &input_token, + NULL, + &output_token, + NULL, + NULL); + + if ((maj_stat != GSS_S_COMPLETE) && (maj_stat != GSS_S_CONTINUE_NEEDED)) { + response = gss_error(maj_stat, min_stat); + response->return_code = AUTH_GSS_ERROR; + goto end; + } + + ret = (maj_stat == GSS_S_COMPLETE) ? AUTH_GSS_COMPLETE : AUTH_GSS_CONTINUE; + // Grab the client response to send back to the server + if(output_token.length) { + state->response = base64_encode((const unsigned char *)output_token.value, output_token.length); + maj_stat = gss_release_buffer(&min_stat, &output_token); + } + + // Try to get the user name if we have completed all GSS operations + if (ret == AUTH_GSS_COMPLETE) { + gss_name_t gssuser = GSS_C_NO_NAME; + maj_stat = gss_inquire_context(&min_stat, state->context, &gssuser, NULL, NULL, NULL, NULL, NULL, NULL); + + if(GSS_ERROR(maj_stat)) { + response = gss_error(maj_stat, min_stat); + response->return_code = AUTH_GSS_ERROR; + goto end; + } + + gss_buffer_desc name_token; + name_token.length = 0; + maj_stat = gss_display_name(&min_stat, gssuser, &name_token, NULL); + + if(GSS_ERROR(maj_stat)) { + if(name_token.value) + gss_release_buffer(&min_stat, &name_token); + gss_release_name(&min_stat, &gssuser); + + response = gss_error(maj_stat, min_stat); + response->return_code = AUTH_GSS_ERROR; + goto end; + } else { + state->username = (char *)malloc(name_token.length + 1); + strncpy(state->username, (char*) name_token.value, name_token.length); + state->username[name_token.length] = 0; + gss_release_buffer(&min_stat, &name_token); + gss_release_name(&min_stat, &gssuser); + } + } + +end: + if(output_token.value) + gss_release_buffer(&min_stat, &output_token); + if(input_token.value) + free(input_token.value); + + if(response == NULL) { + response = calloc(1, sizeof(gss_client_response)); + response->return_code = ret; + } + + // Return the response + return response; +} + +gss_client_response *authenticate_gss_client_unwrap(gss_client_state *state, const char *challenge) { + OM_uint32 maj_stat; + OM_uint32 min_stat; + gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; + gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; + gss_client_response *response = NULL; + int ret = AUTH_GSS_CONTINUE; + + // Always clear out the old response + if(state->response != NULL) { + free(state->response); + state->response = NULL; + } + + // If there is a challenge (data from the server) we need to give it to GSS + if(challenge && *challenge) { + int len; + input_token.value = base64_decode(challenge, &len); + input_token.length = len; + } + + // Do GSSAPI step + maj_stat = gss_unwrap(&min_stat, + state->context, + &input_token, + &output_token, + NULL, + NULL); + + if(maj_stat != GSS_S_COMPLETE) { + response = gss_error(maj_stat, min_stat); + response->return_code = AUTH_GSS_ERROR; + goto end; + } else { + ret = AUTH_GSS_COMPLETE; + } + + // Grab the client response + if(output_token.length) { + state->response = base64_encode((const unsigned char *)output_token.value, output_token.length); + maj_stat = gss_release_buffer(&min_stat, &output_token); + } +end: + if(output_token.value) + gss_release_buffer(&min_stat, &output_token); + if(input_token.value) + free(input_token.value); + + if(response == NULL) { + response = calloc(1, sizeof(gss_client_response)); + response->return_code = ret; + } + + // Return the response + return response; +} + +gss_client_response *authenticate_gss_client_wrap(gss_client_state* state, const char* challenge, const char* user) { + OM_uint32 maj_stat; + OM_uint32 min_stat; + gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; + gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; + int ret = AUTH_GSS_CONTINUE; + gss_client_response *response = NULL; + char buf[4096], server_conf_flags; + unsigned long buf_size; + + // Always clear out the old response + if(state->response != NULL) { + free(state->response); + state->response = NULL; + } + + if(challenge && *challenge) { + int len; + input_token.value = base64_decode(challenge, &len); + input_token.length = len; + } + + if(user) { + // get bufsize + server_conf_flags = ((char*) input_token.value)[0]; + ((char*) input_token.value)[0] = 0; + buf_size = ntohl(*((long *) input_token.value)); + free(input_token.value); +#ifdef PRINTFS + printf("User: %s, %c%c%c\n", user, + server_conf_flags & GSS_AUTH_P_NONE ? 'N' : '-', + server_conf_flags & GSS_AUTH_P_INTEGRITY ? 'I' : '-', + server_conf_flags & GSS_AUTH_P_PRIVACY ? 'P' : '-'); + printf("Maximum GSS token size is %ld\n", buf_size); +#endif + + // agree to terms (hack!) + buf_size = htonl(buf_size); // not relevant without integrity/privacy + memcpy(buf, &buf_size, 4); + buf[0] = GSS_AUTH_P_NONE; + // server decides if principal can log in as user + strncpy(buf + 4, user, sizeof(buf) - 4); + input_token.value = buf; + input_token.length = 4 + strlen(user); + } + + // Do GSSAPI wrap + maj_stat = gss_wrap(&min_stat, + state->context, + 0, + GSS_C_QOP_DEFAULT, + &input_token, + NULL, + &output_token); + + if (maj_stat != GSS_S_COMPLETE) { + response = gss_error(maj_stat, min_stat); + response->return_code = AUTH_GSS_ERROR; + goto end; + } else + ret = AUTH_GSS_COMPLETE; + // Grab the client response to send back to the server + if (output_token.length) { + state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);; + maj_stat = gss_release_buffer(&min_stat, &output_token); + } +end: + if (output_token.value) + gss_release_buffer(&min_stat, &output_token); + + if(response == NULL) { + response = calloc(1, sizeof(gss_client_response)); + response->return_code = ret; + } + + // Return the response + return response; +} + +int authenticate_gss_server_init(const char *service, gss_server_state *state) +{ + OM_uint32 maj_stat; + OM_uint32 min_stat; + gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER; + int ret = AUTH_GSS_COMPLETE; + + state->context = GSS_C_NO_CONTEXT; + state->server_name = GSS_C_NO_NAME; + state->client_name = GSS_C_NO_NAME; + state->server_creds = GSS_C_NO_CREDENTIAL; + state->client_creds = GSS_C_NO_CREDENTIAL; + state->username = NULL; + state->targetname = NULL; + state->response = NULL; + + // Server name may be empty which means we aren't going to create our own creds + size_t service_len = strlen(service); + if (service_len != 0) + { + // Import server name first + name_token.length = strlen(service); + name_token.value = (char *)service; + + maj_stat = gss_import_name(&min_stat, &name_token, GSS_C_NT_HOSTBASED_SERVICE, &state->server_name); + + if (GSS_ERROR(maj_stat)) + { + set_gss_error(maj_stat, min_stat); + ret = AUTH_GSS_ERROR; + goto end; + } + + // Get credentials + maj_stat = gss_acquire_cred(&min_stat, state->server_name, GSS_C_INDEFINITE, + GSS_C_NO_OID_SET, GSS_C_ACCEPT, &state->server_creds, NULL, NULL); + + if (GSS_ERROR(maj_stat)) + { + set_gss_error(maj_stat, min_stat); + ret = AUTH_GSS_ERROR; + goto end; + } + } + +end: + return ret; +} + +int authenticate_gss_server_clean(gss_server_state *state) +{ + OM_uint32 maj_stat; + OM_uint32 min_stat; + int ret = AUTH_GSS_COMPLETE; + + if (state->context != GSS_C_NO_CONTEXT) + maj_stat = gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER); + if (state->server_name != GSS_C_NO_NAME) + maj_stat = gss_release_name(&min_stat, &state->server_name); + if (state->client_name != GSS_C_NO_NAME) + maj_stat = gss_release_name(&min_stat, &state->client_name); + if (state->server_creds != GSS_C_NO_CREDENTIAL) + maj_stat = gss_release_cred(&min_stat, &state->server_creds); + if (state->client_creds != GSS_C_NO_CREDENTIAL) + maj_stat = gss_release_cred(&min_stat, &state->client_creds); + if (state->username != NULL) + { + free(state->username); + state->username = NULL; + } + if (state->targetname != NULL) + { + free(state->targetname); + state->targetname = NULL; + } + if (state->response != NULL) + { + free(state->response); + state->response = NULL; + } + + return ret; +} + +/*int authenticate_gss_server_step(gss_server_state *state, const char *challenge) +{ + OM_uint32 maj_stat; + OM_uint32 min_stat; + gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; + gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; + int ret = AUTH_GSS_CONTINUE; + + // Always clear out the old response + if (state->response != NULL) + { + free(state->response); + state->response = NULL; + } + + // If there is a challenge (data from the server) we need to give it to GSS + if (challenge && *challenge) + { + int len; + input_token.value = base64_decode(challenge, &len); + input_token.length = len; + } + else + { + PyErr_SetString(KrbException_class, "No challenge parameter in request from client"); + ret = AUTH_GSS_ERROR; + goto end; + } + + maj_stat = gss_accept_sec_context(&min_stat, + &state->context, + state->server_creds, + &input_token, + GSS_C_NO_CHANNEL_BINDINGS, + &state->client_name, + NULL, + &output_token, + NULL, + NULL, + &state->client_creds); + + if (GSS_ERROR(maj_stat)) + { + set_gss_error(maj_stat, min_stat); + ret = AUTH_GSS_ERROR; + goto end; + } + + // Grab the server response to send back to the client + if (output_token.length) + { + state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);; + maj_stat = gss_release_buffer(&min_stat, &output_token); + } + + // Get the user name + maj_stat = gss_display_name(&min_stat, state->client_name, &output_token, NULL); + if (GSS_ERROR(maj_stat)) + { + set_gss_error(maj_stat, min_stat); + ret = AUTH_GSS_ERROR; + goto end; + } + state->username = (char *)malloc(output_token.length + 1); + strncpy(state->username, (char*) output_token.value, output_token.length); + state->username[output_token.length] = 0; + + // Get the target name if no server creds were supplied + if (state->server_creds == GSS_C_NO_CREDENTIAL) + { + gss_name_t target_name = GSS_C_NO_NAME; + maj_stat = gss_inquire_context(&min_stat, state->context, NULL, &target_name, NULL, NULL, NULL, NULL, NULL); + if (GSS_ERROR(maj_stat)) + { + set_gss_error(maj_stat, min_stat); + ret = AUTH_GSS_ERROR; + goto end; + } + maj_stat = gss_display_name(&min_stat, target_name, &output_token, NULL); + if (GSS_ERROR(maj_stat)) + { + set_gss_error(maj_stat, min_stat); + ret = AUTH_GSS_ERROR; + goto end; + } + state->targetname = (char *)malloc(output_token.length + 1); + strncpy(state->targetname, (char*) output_token.value, output_token.length); + state->targetname[output_token.length] = 0; + } + + ret = AUTH_GSS_COMPLETE; + +end: + if (output_token.length) + gss_release_buffer(&min_stat, &output_token); + if (input_token.value) + free(input_token.value); + return ret; +} +*/ + +static void set_gss_error(OM_uint32 err_maj, OM_uint32 err_min) { + OM_uint32 maj_stat, min_stat; + OM_uint32 msg_ctx = 0; + gss_buffer_desc status_string; + char buf_maj[512]; + char buf_min[512]; + + do { + maj_stat = gss_display_status (&min_stat, + err_maj, + GSS_C_GSS_CODE, + GSS_C_NO_OID, + &msg_ctx, + &status_string); + if(GSS_ERROR(maj_stat)) + break; + + strncpy(buf_maj, (char*) status_string.value, sizeof(buf_maj)); + gss_release_buffer(&min_stat, &status_string); + + maj_stat = gss_display_status (&min_stat, + err_min, + GSS_C_MECH_CODE, + GSS_C_NULL_OID, + &msg_ctx, + &status_string); + if (!GSS_ERROR(maj_stat)) { + + strncpy(buf_min, (char*) status_string.value , sizeof(buf_min)); + gss_release_buffer(&min_stat, &status_string); + } + } while (!GSS_ERROR(maj_stat) && msg_ctx != 0); +} + +gss_client_response *gss_error(OM_uint32 err_maj, OM_uint32 err_min) { + OM_uint32 maj_stat, min_stat; + OM_uint32 msg_ctx = 0; + gss_buffer_desc status_string; + char *buf_maj = calloc(512, sizeof(char)); + char *buf_min = calloc(512, sizeof(char)); + char *message = NULL; + gss_client_response *response = calloc(1, sizeof(gss_client_response)); + + do { + maj_stat = gss_display_status (&min_stat, + err_maj, + GSS_C_GSS_CODE, + GSS_C_NO_OID, + &msg_ctx, + &status_string); + if(GSS_ERROR(maj_stat)) + break; + + strncpy(buf_maj, (char*) status_string.value, 512); + gss_release_buffer(&min_stat, &status_string); + + maj_stat = gss_display_status (&min_stat, + err_min, + GSS_C_MECH_CODE, + GSS_C_NULL_OID, + &msg_ctx, + &status_string); + if(!GSS_ERROR(maj_stat)) { + strncpy(buf_min, (char*) status_string.value , 512); + gss_release_buffer(&min_stat, &status_string); + } + } while (!GSS_ERROR(maj_stat) && msg_ctx != 0); + + // Join the strings + message = calloc(1024, sizeof(1)); + // Join the two messages + sprintf(message, "%s, %s", buf_maj, buf_min); + // Free data + free(buf_min); + free(buf_maj); + // Set the message + response->message = message; + // Return the message + return response; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h new file mode 100644 index 0000000..58ac0b7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2006-2009 Apple Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ +#ifndef KERBEROS_GSS_H +#define KERBEROS_GSS_H + +#include +#include +#include + +#define krb5_get_err_text(context,code) error_message(code) + +#define AUTH_GSS_ERROR -1 +#define AUTH_GSS_COMPLETE 1 +#define AUTH_GSS_CONTINUE 0 + +#define GSS_AUTH_P_NONE 1 +#define GSS_AUTH_P_INTEGRITY 2 +#define GSS_AUTH_P_PRIVACY 4 + +typedef struct { + int return_code; + char *message; +} gss_client_response; + +typedef struct { + gss_ctx_id_t context; + gss_name_t server_name; + long int gss_flags; + char* username; + char* response; +} gss_client_state; + +typedef struct { + gss_ctx_id_t context; + gss_name_t server_name; + gss_name_t client_name; + gss_cred_id_t server_creds; + gss_cred_id_t client_creds; + char* username; + char* targetname; + char* response; +} gss_server_state; + +// char* server_principal_details(const char* service, const char* hostname); + +gss_client_response *authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state); +gss_client_response *authenticate_gss_client_clean(gss_client_state *state); +gss_client_response *authenticate_gss_client_step(gss_client_state *state, const char *challenge); +gss_client_response *authenticate_gss_client_unwrap(gss_client_state* state, const char* challenge); +gss_client_response *authenticate_gss_client_wrap(gss_client_state* state, const char* challenge, const char* user); + +int authenticate_gss_server_init(const char* service, gss_server_state* state); +int authenticate_gss_server_clean(gss_server_state *state); +// int authenticate_gss_server_step(gss_server_state *state, const char *challenge); + +gss_client_response *gss_error(OM_uint32 err_maj, OM_uint32 err_min); +#endif diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js new file mode 100644 index 0000000..d9120fb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js @@ -0,0 +1,15 @@ +// Load the native SSPI classes +var kerberos = require('../build/Release/kerberos') + , Kerberos = kerberos.Kerberos + , SecurityBuffer = require('./win32/wrappers/security_buffer').SecurityBuffer + , SecurityBufferDescriptor = require('./win32/wrappers/security_buffer_descriptor').SecurityBufferDescriptor + , SecurityCredentials = require('./win32/wrappers/security_credentials').SecurityCredentials + , SecurityContext = require('./win32/wrappers/security_context').SecurityContext; +var SSPI = function() { +} + +exports.SSPI = SSPI; +exports.SecurityBuffer = SecurityBuffer; +exports.SecurityBufferDescriptor = SecurityBufferDescriptor; +exports.SecurityCredentials = SecurityCredentials; +exports.SecurityContext = SecurityContext; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c new file mode 100644 index 0000000..502a021 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c @@ -0,0 +1,121 @@ +/** + * Copyright (c) 2006-2008 Apple Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +#include "base64.h" + +#include +#include + +// base64 tables +static char basis_64[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +static signed char index_64[128] = +{ + -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, + -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, + -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63, + 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1, + -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, + 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1, + -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, + 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1 +}; +#define CHAR64(c) (((c) < 0 || (c) > 127) ? -1 : index_64[(c)]) + +// base64_encode : base64 encode +// +// value : data to encode +// vlen : length of data +// (result) : new char[] - c-str of result +char *base64_encode(const unsigned char *value, int vlen) +{ + char *result = (char *)malloc((vlen * 4) / 3 + 5); + char *out = result; + unsigned char oval; + + while (vlen >= 3) + { + *out++ = basis_64[value[0] >> 2]; + *out++ = basis_64[((value[0] << 4) & 0x30) | (value[1] >> 4)]; + *out++ = basis_64[((value[1] << 2) & 0x3C) | (value[2] >> 6)]; + *out++ = basis_64[value[2] & 0x3F]; + value += 3; + vlen -= 3; + } + if (vlen > 0) + { + *out++ = basis_64[value[0] >> 2]; + oval = (value[0] << 4) & 0x30; + if (vlen > 1) oval |= value[1] >> 4; + *out++ = basis_64[oval]; + *out++ = (vlen < 2) ? '=' : basis_64[(value[1] << 2) & 0x3C]; + *out++ = '='; + } + *out = '\0'; + + return result; +} + +// base64_decode : base64 decode +// +// value : c-str to decode +// rlen : length of decoded result +// (result) : new unsigned char[] - decoded result +unsigned char *base64_decode(const char *value, int *rlen) +{ + int c1, c2, c3, c4; + int vlen = (int)strlen(value); + unsigned char *result =(unsigned char *)malloc((vlen * 3) / 4 + 1); + unsigned char *out = result; + *rlen = 0; + + while (1) + { + if (value[0]==0) + return result; + c1 = value[0]; + if (CHAR64(c1) == -1) + goto base64_decode_error;; + c2 = value[1]; + if (CHAR64(c2) == -1) + goto base64_decode_error;; + c3 = value[2]; + if ((c3 != '=') && (CHAR64(c3) == -1)) + goto base64_decode_error;; + c4 = value[3]; + if ((c4 != '=') && (CHAR64(c4) == -1)) + goto base64_decode_error;; + + value += 4; + *out++ = (CHAR64(c1) << 2) | (CHAR64(c2) >> 4); + *rlen += 1; + if (c3 != '=') + { + *out++ = ((CHAR64(c2) << 4) & 0xf0) | (CHAR64(c3) >> 2); + *rlen += 1; + if (c4 != '=') + { + *out++ = ((CHAR64(c3) << 6) & 0xc0) | CHAR64(c4); + *rlen += 1; + } + } + } + +base64_decode_error: + *result = 0; + *rlen = 0; + return result; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h new file mode 100644 index 0000000..f0e1f06 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2006-2008 Apple Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +char *base64_encode(const unsigned char *value, int vlen); +unsigned char *base64_decode(const char *value, int *rlen); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc new file mode 100644 index 0000000..7fd521b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc @@ -0,0 +1,53 @@ +#include "kerberos.h" +#include +#include +#include "base64.h" +#include "wrappers/security_buffer.h" +#include "wrappers/security_buffer_descriptor.h" +#include "wrappers/security_context.h" +#include "wrappers/security_credentials.h" + +Persistent Kerberos::constructor_template; + +// VException object (causes throw in calling code) +static Handle VException(const char *msg) { + HandleScope scope; + return ThrowException(Exception::Error(String::New(msg))); +} + +Kerberos::Kerberos() : ObjectWrap() { +} + +void Kerberos::Initialize(v8::Handle target) { + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(Kerberos::New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("Kerberos")); + // Set the symbol + target->ForceSet(String::NewSymbol("Kerberos"), constructor_template->GetFunction()); +} + +Handle Kerberos::New(const Arguments &args) { + // Load the security.dll library + load_library(); + // Create a Kerberos instance + Kerberos *kerberos = new Kerberos(); + // Return the kerberos object + kerberos->Wrap(args.This()); + return args.This(); +} + +// Exporting function +extern "C" void init(Handle target) { + HandleScope scope; + Kerberos::Initialize(target); + SecurityContext::Initialize(target); + SecurityBuffer::Initialize(target); + SecurityBufferDescriptor::Initialize(target); + SecurityCredentials::Initialize(target); +} + +NODE_MODULE(kerberos, init); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h new file mode 100644 index 0000000..8443e78 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h @@ -0,0 +1,59 @@ +#ifndef KERBEROS_H +#define KERBEROS_H + +#include +#include +#include + +extern "C" { + #include "kerberos_sspi.h" + #include "base64.h" +} + +using namespace v8; +using namespace node; + +class Kerberos : public ObjectWrap { + +public: + Kerberos(); + ~Kerberos() {}; + + // Constructor used for creating new Kerberos objects from C++ + static Persistent constructor_template; + + // Initialize function for the object + static void Initialize(Handle target); + + // Method available + static Handle AcquireAlternateCredentials(const Arguments &args); + static Handle PrepareOutboundPackage(const Arguments &args); + static Handle DecryptMessage(const Arguments &args); + static Handle EncryptMessage(const Arguments &args); + static Handle QueryContextAttributes(const Arguments &args); + +private: + static Handle New(const Arguments &args); + + // Pointer to context object + SEC_WINNT_AUTH_IDENTITY m_Identity; + // credentials + CredHandle m_Credentials; + // Expiry time for ticket + TimeStamp Expiration; + // package info + SecPkgInfo m_PkgInfo; + // context + CtxtHandle m_Context; + // Do we have a context + bool m_HaveContext; + // Attributes + DWORD CtxtAttr; + + // Handles the uv calls + static void Process(uv_work_t* work_req); + // Called after work is done + static void After(uv_work_t* work_req); +}; + +#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c new file mode 100644 index 0000000..d75c9ab --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c @@ -0,0 +1,244 @@ +#include "kerberos_sspi.h" +#include +#include + +static HINSTANCE _sspi_security_dll = NULL; +static HINSTANCE _sspi_secur32_dll = NULL; + +/** + * Encrypt A Message + */ +SECURITY_STATUS SEC_ENTRY _sspi_EncryptMessage(PCtxtHandle phContext, unsigned long fQOP, PSecBufferDesc pMessage, unsigned long MessageSeqNo) { + // Create function pointer instance + encryptMessage_fn pfn_encryptMessage = NULL; + + // Return error if library not loaded + if(_sspi_security_dll == NULL) return -1; + + // Map function to library method + pfn_encryptMessage = (encryptMessage_fn)GetProcAddress(_sspi_security_dll, "EncryptMessage"); + // Check if the we managed to map function pointer + if(!pfn_encryptMessage) { + printf("GetProcAddress failed.\n"); + return -2; + } + + // Call the function + return (*pfn_encryptMessage)(phContext, fQOP, pMessage, MessageSeqNo); +} + +/** + * Acquire Credentials + */ +SECURITY_STATUS SEC_ENTRY _sspi_AcquireCredentialsHandle( + LPSTR pszPrincipal, LPSTR pszPackage, unsigned long fCredentialUse, + void * pvLogonId, void * pAuthData, SEC_GET_KEY_FN pGetKeyFn, void * pvGetKeyArgument, + PCredHandle phCredential, PTimeStamp ptsExpiry +) { + SECURITY_STATUS status; + // Create function pointer instance + acquireCredentialsHandle_fn pfn_acquireCredentialsHandle = NULL; + + // Return error if library not loaded + if(_sspi_security_dll == NULL) return -1; + + // Map function + #ifdef _UNICODE + pfn_acquireCredentialsHandle = (acquireCredentialsHandle_fn)GetProcAddress(_sspi_security_dll, "AcquireCredentialsHandleW"); + #else + pfn_acquireCredentialsHandle = (acquireCredentialsHandle_fn)GetProcAddress(_sspi_security_dll, "AcquireCredentialsHandleA"); + #endif + + // Check if the we managed to map function pointer + if(!pfn_acquireCredentialsHandle) { + printf("GetProcAddress failed.\n"); + return -2; + } + + // Status + status = (*pfn_acquireCredentialsHandle)(pszPrincipal, pszPackage, fCredentialUse, + pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, phCredential, ptsExpiry + ); + + // Call the function + return status; +} + +/** + * Delete Security Context + */ +SECURITY_STATUS SEC_ENTRY _sspi_DeleteSecurityContext(PCtxtHandle phContext) { + // Create function pointer instance + deleteSecurityContext_fn pfn_deleteSecurityContext = NULL; + + // Return error if library not loaded + if(_sspi_security_dll == NULL) return -1; + // Map function + pfn_deleteSecurityContext = (deleteSecurityContext_fn)GetProcAddress(_sspi_security_dll, "DeleteSecurityContext"); + + // Check if the we managed to map function pointer + if(!pfn_deleteSecurityContext) { + printf("GetProcAddress failed.\n"); + return -2; + } + + // Call the function + return (*pfn_deleteSecurityContext)(phContext); +} + +/** + * Decrypt Message + */ +SECURITY_STATUS SEC_ENTRY _sspi_DecryptMessage(PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned long MessageSeqNo, unsigned long pfQOP) { + // Create function pointer instance + decryptMessage_fn pfn_decryptMessage = NULL; + + // Return error if library not loaded + if(_sspi_security_dll == NULL) return -1; + // Map function + pfn_decryptMessage = (decryptMessage_fn)GetProcAddress(_sspi_security_dll, "DecryptMessage"); + + // Check if the we managed to map function pointer + if(!pfn_decryptMessage) { + printf("GetProcAddress failed.\n"); + return -2; + } + + // Call the function + return (*pfn_decryptMessage)(phContext, pMessage, MessageSeqNo, pfQOP); +} + +/** + * Initialize Security Context + */ +SECURITY_STATUS SEC_ENTRY _sspi_initializeSecurityContext( + PCredHandle phCredential, PCtxtHandle phContext, + LPSTR pszTargetName, unsigned long fContextReq, + unsigned long Reserved1, unsigned long TargetDataRep, + PSecBufferDesc pInput, unsigned long Reserved2, + PCtxtHandle phNewContext, PSecBufferDesc pOutput, + unsigned long * pfContextAttr, PTimeStamp ptsExpiry +) { + SECURITY_STATUS status; + // Create function pointer instance + initializeSecurityContext_fn pfn_initializeSecurityContext = NULL; + + // Return error if library not loaded + if(_sspi_security_dll == NULL) return -1; + + // Map function + #ifdef _UNICODE + pfn_initializeSecurityContext = (initializeSecurityContext_fn)GetProcAddress(_sspi_security_dll, "InitializeSecurityContextW"); + #else + pfn_initializeSecurityContext = (initializeSecurityContext_fn)GetProcAddress(_sspi_security_dll, "InitializeSecurityContextA"); + #endif + + // Check if the we managed to map function pointer + if(!pfn_initializeSecurityContext) { + printf("GetProcAddress failed.\n"); + return -2; + } + + // Execute intialize context + status = (*pfn_initializeSecurityContext)( + phCredential, phContext, pszTargetName, fContextReq, + Reserved1, TargetDataRep, pInput, Reserved2, + phNewContext, pOutput, pfContextAttr, ptsExpiry + ); + + // Call the function + return status; +} +/** + * Query Context Attributes + */ +SECURITY_STATUS SEC_ENTRY _sspi_QueryContextAttributes( + PCtxtHandle phContext, unsigned long ulAttribute, void * pBuffer +) { + // Create function pointer instance + queryContextAttributes_fn pfn_queryContextAttributes = NULL; + + // Return error if library not loaded + if(_sspi_security_dll == NULL) return -1; + + #ifdef _UNICODE + pfn_queryContextAttributes = (queryContextAttributes_fn)GetProcAddress(_sspi_security_dll, "QueryContextAttributesW"); + #else + pfn_queryContextAttributes = (queryContextAttributes_fn)GetProcAddress(_sspi_security_dll, "QueryContextAttributesA"); + #endif + + // Check if the we managed to map function pointer + if(!pfn_queryContextAttributes) { + printf("GetProcAddress failed.\n"); + return -2; + } + + // Call the function + return (*pfn_queryContextAttributes)( + phContext, ulAttribute, pBuffer + ); +} + +/** + * InitSecurityInterface + */ +PSecurityFunctionTable _ssip_InitSecurityInterface() { + INIT_SECURITY_INTERFACE InitSecurityInterface; + PSecurityFunctionTable pSecurityInterface = NULL; + + // Return error if library not loaded + if(_sspi_security_dll == NULL) return NULL; + + #ifdef _UNICODE + // Get the address of the InitSecurityInterface function. + InitSecurityInterface = (INIT_SECURITY_INTERFACE) GetProcAddress ( + _sspi_secur32_dll, + TEXT("InitSecurityInterfaceW")); + #else + // Get the address of the InitSecurityInterface function. + InitSecurityInterface = (INIT_SECURITY_INTERFACE) GetProcAddress ( + _sspi_secur32_dll, + TEXT("InitSecurityInterfaceA")); + #endif + + if(!InitSecurityInterface) { + printf (TEXT("Failed in getting the function address, Error: %x"), GetLastError ()); + return NULL; + } + + // Use InitSecurityInterface to get the function table. + pSecurityInterface = (*InitSecurityInterface)(); + + if(!pSecurityInterface) { + printf (TEXT("Failed in getting the function table, Error: %x"), GetLastError ()); + return NULL; + } + + return pSecurityInterface; +} + +/** + * Load security.dll dynamically + */ +int load_library() { + DWORD err; + // Load the library + _sspi_security_dll = LoadLibrary("security.dll"); + + // Check if the library loaded + if(_sspi_security_dll == NULL) { + err = GetLastError(); + return err; + } + + // Load the library + _sspi_secur32_dll = LoadLibrary("secur32.dll"); + + // Check if the library loaded + if(_sspi_secur32_dll == NULL) { + err = GetLastError(); + return err; + } + + return 0; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h new file mode 100644 index 0000000..a3008dc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h @@ -0,0 +1,106 @@ +#ifndef SSPI_C_H +#define SSPI_C_H + +#define SECURITY_WIN32 1 + +#include +#include + +/** + * Encrypt A Message + */ +SECURITY_STATUS SEC_ENTRY _sspi_EncryptMessage(PCtxtHandle phContext, unsigned long fQOP, PSecBufferDesc pMessage, unsigned long MessageSeqNo); + +typedef DWORD (WINAPI *encryptMessage_fn)(PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo); + +/** + * Acquire Credentials + */ +SECURITY_STATUS SEC_ENTRY _sspi_AcquireCredentialsHandle( + LPSTR pszPrincipal, // Name of principal + LPSTR pszPackage, // Name of package + unsigned long fCredentialUse, // Flags indicating use + void * pvLogonId, // Pointer to logon ID + void * pAuthData, // Package specific data + SEC_GET_KEY_FN pGetKeyFn, // Pointer to GetKey() func + void * pvGetKeyArgument, // Value to pass to GetKey() + PCredHandle phCredential, // (out) Cred Handle + PTimeStamp ptsExpiry // (out) Lifetime (optional) +); + +typedef DWORD (WINAPI *acquireCredentialsHandle_fn)( + LPSTR pszPrincipal, LPSTR pszPackage, unsigned long fCredentialUse, + void * pvLogonId, void * pAuthData, SEC_GET_KEY_FN pGetKeyFn, void * pvGetKeyArgument, + PCredHandle phCredential, PTimeStamp ptsExpiry + ); + +/** + * Delete Security Context + */ +SECURITY_STATUS SEC_ENTRY _sspi_DeleteSecurityContext( + PCtxtHandle phContext // Context to delete +); + +typedef DWORD (WINAPI *deleteSecurityContext_fn)(PCtxtHandle phContext); + +/** + * Decrypt Message + */ +SECURITY_STATUS SEC_ENTRY _sspi_DecryptMessage( + PCtxtHandle phContext, + PSecBufferDesc pMessage, + unsigned long MessageSeqNo, + unsigned long pfQOP +); + +typedef DWORD (WINAPI *decryptMessage_fn)( + PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned long MessageSeqNo, unsigned long pfQOP); + +/** + * Initialize Security Context + */ +SECURITY_STATUS SEC_ENTRY _sspi_initializeSecurityContext( + PCredHandle phCredential, // Cred to base context + PCtxtHandle phContext, // Existing context (OPT) + LPSTR pszTargetName, // Name of target + unsigned long fContextReq, // Context Requirements + unsigned long Reserved1, // Reserved, MBZ + unsigned long TargetDataRep, // Data rep of target + PSecBufferDesc pInput, // Input Buffers + unsigned long Reserved2, // Reserved, MBZ + PCtxtHandle phNewContext, // (out) New Context handle + PSecBufferDesc pOutput, // (inout) Output Buffers + unsigned long * pfContextAttr, // (out) Context attrs + PTimeStamp ptsExpiry // (out) Life span (OPT) +); + +typedef DWORD (WINAPI *initializeSecurityContext_fn)( + PCredHandle phCredential, PCtxtHandle phContext, LPSTR pszTargetName, unsigned long fContextReq, + unsigned long Reserved1, unsigned long TargetDataRep, PSecBufferDesc pInput, unsigned long Reserved2, + PCtxtHandle phNewContext, PSecBufferDesc pOutput, unsigned long * pfContextAttr, PTimeStamp ptsExpiry); + +/** + * Query Context Attributes + */ +SECURITY_STATUS SEC_ENTRY _sspi_QueryContextAttributes( + PCtxtHandle phContext, // Context to query + unsigned long ulAttribute, // Attribute to query + void * pBuffer // Buffer for attributes +); + +typedef DWORD (WINAPI *queryContextAttributes_fn)( + PCtxtHandle phContext, unsigned long ulAttribute, void * pBuffer); + +/** + * InitSecurityInterface + */ +PSecurityFunctionTable _ssip_InitSecurityInterface(); + +typedef DWORD (WINAPI *initSecurityInterface_fn) (); + +/** + * Load security.dll dynamically + */ +int load_library(); + +#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc new file mode 100644 index 0000000..e7a472f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc @@ -0,0 +1,7 @@ +#include "worker.h" + +Worker::Worker() { +} + +Worker::~Worker() { +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h new file mode 100644 index 0000000..f73a4a7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h @@ -0,0 +1,37 @@ +#ifndef WORKER_H_ +#define WORKER_H_ + +#include +#include +#include + +using namespace node; +using namespace v8; + +class Worker { + public: + Worker(); + virtual ~Worker(); + + // libuv's request struct. + uv_work_t request; + // Callback + v8::Persistent callback; + // Parameters + void *parameters; + // Results + void *return_value; + // Did we raise an error + bool error; + // The error message + char *error_message; + // Error code if not message + int error_code; + // Any return code + int return_code; + // Method we are going to fire + void (*execute)(Worker *worker); + Handle (*mapper)(Worker *worker); +}; + +#endif // WORKER_H_ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc new file mode 100644 index 0000000..e583336 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc @@ -0,0 +1,110 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "security_buffer.h" + +using namespace node; + +static Handle VException(const char *msg) { + HandleScope scope; + return ThrowException(Exception::Error(String::New(msg))); +}; + +Persistent SecurityBuffer::constructor_template; + +SecurityBuffer::SecurityBuffer(uint32_t security_type, size_t size) : ObjectWrap() { + this->size = size; + this->data = calloc(size, sizeof(char)); + this->security_type = security_type; + // Set up the data in the sec_buffer + this->sec_buffer.BufferType = security_type; + this->sec_buffer.cbBuffer = (unsigned long)size; + this->sec_buffer.pvBuffer = this->data; +} + +SecurityBuffer::SecurityBuffer(uint32_t security_type, size_t size, void *data) : ObjectWrap() { + this->size = size; + this->data = data; + this->security_type = security_type; + // Set up the data in the sec_buffer + this->sec_buffer.BufferType = security_type; + this->sec_buffer.cbBuffer = (unsigned long)size; + this->sec_buffer.pvBuffer = this->data; +} + +SecurityBuffer::~SecurityBuffer() { + free(this->data); +} + +Handle SecurityBuffer::New(const Arguments &args) { + HandleScope scope; + SecurityBuffer *security_obj; + + if(args.Length() != 2) + return VException("Two parameters needed integer buffer type and [32 bit integer/Buffer] required"); + + if(!args[0]->IsInt32()) + return VException("Two parameters needed integer buffer type and [32 bit integer/Buffer] required"); + + if(!args[1]->IsInt32() && !Buffer::HasInstance(args[1])) + return VException("Two parameters needed integer buffer type and [32 bit integer/Buffer] required"); + + // Unpack buffer type + uint32_t buffer_type = args[0]->ToUint32()->Value(); + + // If we have an integer + if(args[1]->IsInt32()) { + security_obj = new SecurityBuffer(buffer_type, args[1]->ToUint32()->Value()); + } else { + // Get the length of the Buffer + size_t length = Buffer::Length(args[1]->ToObject()); + // Allocate space for the internal void data pointer + void *data = calloc(length, sizeof(char)); + // Write the data to out of V8 heap space + memcpy(data, Buffer::Data(args[1]->ToObject()), length); + // Create new SecurityBuffer + security_obj = new SecurityBuffer(buffer_type, length, data); + } + + // Wrap it + security_obj->Wrap(args.This()); + // Return the object + return args.This(); +} + +Handle SecurityBuffer::ToBuffer(const Arguments &args) { + HandleScope scope; + + // Unpack the Security Buffer object + SecurityBuffer *security_obj = ObjectWrap::Unwrap(args.This()); + // Create a Buffer + Buffer *buffer = Buffer::New((char *)security_obj->data, (size_t)security_obj->size); + + // Return the buffer + return scope.Close(buffer->handle_); +} + +void SecurityBuffer::Initialize(Handle target) { + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("SecurityBuffer")); + + // Set up method for the Kerberos instance + NODE_SET_PROTOTYPE_METHOD(constructor_template, "toBuffer", ToBuffer); + + // Set up class + target->Set(String::NewSymbol("SecurityBuffer"), constructor_template->GetFunction()); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h new file mode 100644 index 0000000..d6a5675 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h @@ -0,0 +1,46 @@ +#ifndef SECURITY_BUFFER_H +#define SECURITY_BUFFER_H + +#include +#include +#include + +#define SECURITY_WIN32 1 + +#include +#include + +using namespace v8; +using namespace node; + +class SecurityBuffer : public ObjectWrap { + public: + SecurityBuffer(uint32_t security_type, size_t size); + SecurityBuffer(uint32_t security_type, size_t size, void *data); + ~SecurityBuffer(); + + // Internal values + void *data; + size_t size; + uint32_t security_type; + SecBuffer sec_buffer; + + // Has instance check + static inline bool HasInstance(Handle val) { + if (!val->IsObject()) return false; + Local obj = val->ToObject(); + return constructor_template->HasInstance(obj); + }; + + // Functions available from V8 + static void Initialize(Handle target); + static Handle ToBuffer(const Arguments &args); + + // Constructor used for creating new Long objects from C++ + static Persistent constructor_template; + + private: + static Handle New(const Arguments &args); +}; + +#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js new file mode 100644 index 0000000..4996163 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js @@ -0,0 +1,12 @@ +var SecurityBufferNative = require('../../../build/Release/kerberos').SecurityBuffer; + +// Add some attributes +SecurityBufferNative.VERSION = 0; +SecurityBufferNative.EMPTY = 0; +SecurityBufferNative.DATA = 1; +SecurityBufferNative.TOKEN = 2; +SecurityBufferNative.PADDING = 9; +SecurityBufferNative.STREAM = 10; + +// Export the modified class +exports.SecurityBuffer = SecurityBufferNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc new file mode 100644 index 0000000..3bda0b7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc @@ -0,0 +1,177 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SECURITY_WIN32 1 + +#include "security_buffer_descriptor.h" +#include "security_buffer.h" + +static Handle VException(const char *msg) { + HandleScope scope; + return ThrowException(Exception::Error(String::New(msg))); +}; + +Persistent SecurityBufferDescriptor::constructor_template; + +SecurityBufferDescriptor::SecurityBufferDescriptor() : ObjectWrap() { +} + +SecurityBufferDescriptor::SecurityBufferDescriptor(Persistent arrayObject) : ObjectWrap() { + SecurityBuffer *security_obj = NULL; + // Safe reference to array + this->arrayObject = arrayObject; + + // Unpack the array and ensure we have a valid descriptor + this->secBufferDesc.cBuffers = arrayObject->Length(); + this->secBufferDesc.ulVersion = SECBUFFER_VERSION; + + if(arrayObject->Length() == 1) { + // Unwrap the buffer + security_obj = ObjectWrap::Unwrap(arrayObject->Get(0)->ToObject()); + // Assign the buffer + this->secBufferDesc.pBuffers = &security_obj->sec_buffer; + } else { + this->secBufferDesc.pBuffers = new SecBuffer[arrayObject->Length()]; + this->secBufferDesc.cBuffers = arrayObject->Length(); + + // Assign the buffers + for(uint32_t i = 0; i < arrayObject->Length(); i++) { + security_obj = ObjectWrap::Unwrap(arrayObject->Get(i)->ToObject()); + this->secBufferDesc.pBuffers[i].BufferType = security_obj->sec_buffer.BufferType; + this->secBufferDesc.pBuffers[i].pvBuffer = security_obj->sec_buffer.pvBuffer; + this->secBufferDesc.pBuffers[i].cbBuffer = security_obj->sec_buffer.cbBuffer; + } + } +} + +SecurityBufferDescriptor::~SecurityBufferDescriptor() { +} + +size_t SecurityBufferDescriptor::bufferSize() { + SecurityBuffer *security_obj = NULL; + + if(this->secBufferDesc.cBuffers == 1) { + security_obj = ObjectWrap::Unwrap(arrayObject->Get(0)->ToObject()); + return security_obj->size; + } else { + int bytesToAllocate = 0; + + for(unsigned int i = 0; i < this->secBufferDesc.cBuffers; i++) { + bytesToAllocate += this->secBufferDesc.pBuffers[i].cbBuffer; + } + + // Return total size + return bytesToAllocate; + } +} + +char *SecurityBufferDescriptor::toBuffer() { + SecurityBuffer *security_obj = NULL; + char *data = NULL; + + if(this->secBufferDesc.cBuffers == 1) { + security_obj = ObjectWrap::Unwrap(arrayObject->Get(0)->ToObject()); + data = (char *)malloc(security_obj->size * sizeof(char)); + memcpy(data, security_obj->data, security_obj->size); + } else { + size_t bytesToAllocate = this->bufferSize(); + char *data = (char *)calloc(bytesToAllocate, sizeof(char)); + int offset = 0; + + for(unsigned int i = 0; i < this->secBufferDesc.cBuffers; i++) { + memcpy((data + offset), this->secBufferDesc.pBuffers[i].pvBuffer, this->secBufferDesc.pBuffers[i].cbBuffer); + offset +=this->secBufferDesc.pBuffers[i].cbBuffer; + } + + // Return the data + return data; + } + + return data; +} + +Handle SecurityBufferDescriptor::New(const Arguments &args) { + HandleScope scope; + SecurityBufferDescriptor *security_obj; + Persistent arrayObject; + + if(args.Length() != 1) + return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]"); + + if(!args[0]->IsInt32() && !args[0]->IsArray()) + return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]"); + + if(args[0]->IsArray()) { + Handle array = Handle::Cast(args[0]); + // Iterate over all items and ensure we the right type + for(uint32_t i = 0; i < array->Length(); i++) { + if(!SecurityBuffer::HasInstance(array->Get(i))) { + return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]"); + } + } + } + + // We have a single integer + if(args[0]->IsInt32()) { + // Create new SecurityBuffer instance + Local argv[] = {Int32::New(0x02), args[0]}; + Handle security_buffer = SecurityBuffer::constructor_template->GetFunction()->NewInstance(2, argv); + // Create a new array + Local array = Array::New(1); + // Set the first value + array->Set(0, security_buffer); + // Create persistent handle + arrayObject = Persistent::New(array); + // Create descriptor + security_obj = new SecurityBufferDescriptor(arrayObject); + } else { + arrayObject = Persistent::New(Handle::Cast(args[0])); + security_obj = new SecurityBufferDescriptor(arrayObject); + } + + // Wrap it + security_obj->Wrap(args.This()); + // Return the object + return args.This(); +} + +Handle SecurityBufferDescriptor::ToBuffer(const Arguments &args) { + HandleScope scope; + + // Unpack the Security Buffer object + SecurityBufferDescriptor *security_obj = ObjectWrap::Unwrap(args.This()); + + // Get the buffer + char *buffer_data = security_obj->toBuffer(); + size_t buffer_size = security_obj->bufferSize(); + + // Create a Buffer + Buffer *buffer = Buffer::New(buffer_data, buffer_size); + + // Return the buffer + return scope.Close(buffer->handle_); +} + +void SecurityBufferDescriptor::Initialize(Handle target) { + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("SecurityBufferDescriptor")); + + // Set up method for the Kerberos instance + NODE_SET_PROTOTYPE_METHOD(constructor_template, "toBuffer", ToBuffer); + + target->Set(String::NewSymbol("SecurityBufferDescriptor"), constructor_template->GetFunction()); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h new file mode 100644 index 0000000..8588632 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h @@ -0,0 +1,44 @@ +#ifndef SECURITY_BUFFER_DESCRIPTOR_H +#define SECURITY_BUFFER_DESCRIPTOR_H + +#include +#include +#include + +#include +#include + +using namespace v8; +using namespace node; + +class SecurityBufferDescriptor : public ObjectWrap { + public: + Persistent arrayObject; + SecBufferDesc secBufferDesc; + + SecurityBufferDescriptor(); + SecurityBufferDescriptor(Persistent arrayObject); + ~SecurityBufferDescriptor(); + + // Has instance check + static inline bool HasInstance(Handle val) { + if (!val->IsObject()) return false; + Local obj = val->ToObject(); + return constructor_template->HasInstance(obj); + }; + + char *toBuffer(); + size_t bufferSize(); + + // Functions available from V8 + static void Initialize(Handle target); + static Handle ToBuffer(const Arguments &args); + + // Constructor used for creating new Long objects from C++ + static Persistent constructor_template; + + private: + static Handle New(const Arguments &args); +}; + +#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js new file mode 100644 index 0000000..9421392 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js @@ -0,0 +1,3 @@ +var SecurityBufferDescriptorNative = require('../../../build/Release/kerberos').SecurityBufferDescriptor; +// Export the modified class +exports.SecurityBufferDescriptor = SecurityBufferDescriptorNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc new file mode 100644 index 0000000..8c3691a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc @@ -0,0 +1,1211 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "security_context.h" +#include "security_buffer_descriptor.h" + +#ifndef ARRAY_SIZE +# define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0])) +#endif + +static LPSTR DisplaySECError(DWORD ErrCode); + +static Handle VException(const char *msg) { + HandleScope scope; + return ThrowException(Exception::Error(String::New(msg))); +}; + +static Handle VExceptionErrNo(const char *msg, const int errorNumber) { + HandleScope scope; + + Local err = Exception::Error(String::New(msg)); + Local obj = err->ToObject(); + obj->Set(NODE_PSYMBOL("code"), Int32::New(errorNumber)); + return ThrowException(err); +}; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// UV Lib callbacks +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +static void Process(uv_work_t* work_req) { + // Grab the worker + Worker *worker = static_cast(work_req->data); + // Execute the worker code + worker->execute(worker); +} + +static void After(uv_work_t* work_req) { + // Grab the scope of the call from Node + v8::HandleScope scope; + + // Get the worker reference + Worker *worker = static_cast(work_req->data); + + // If we have an error + if(worker->error) { + v8::Local err = v8::Exception::Error(v8::String::New(worker->error_message)); + Local obj = err->ToObject(); + obj->Set(NODE_PSYMBOL("code"), Int32::New(worker->error_code)); + v8::Local args[2] = { err, v8::Local::New(v8::Null()) }; + // Execute the error + v8::TryCatch try_catch; + // Call the callback + worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); + // If we have an exception handle it as a fatalexception + if (try_catch.HasCaught()) { + node::FatalException(try_catch); + } + } else { + // // Map the data + v8::Handle result = worker->mapper(worker); + // Set up the callback with a null first + v8::Handle args[2] = { v8::Local::New(v8::Null()), result}; + // Wrap the callback function call in a TryCatch so that we can call + // node's FatalException afterwards. This makes it possible to catch + // the exception from JavaScript land using the + // process.on('uncaughtException') event. + v8::TryCatch try_catch; + // Call the callback + worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); + // If we have an exception handle it as a fatalexception + if (try_catch.HasCaught()) { + node::FatalException(try_catch); + } + } + + // Clean up the memory + worker->callback.Dispose(); + free(worker->parameters); + delete worker; +} + +Persistent SecurityContext::constructor_template; + +SecurityContext::SecurityContext() : ObjectWrap() { +} + +SecurityContext::~SecurityContext() { + if(this->hasContext) { + _sspi_DeleteSecurityContext(&this->m_Context); + } +} + +Handle SecurityContext::New(const Arguments &args) { + HandleScope scope; + + PSecurityFunctionTable pSecurityInterface = NULL; + DWORD dwNumOfPkgs; + SECURITY_STATUS status; + + // Create code object + SecurityContext *security_obj = new SecurityContext(); + // Get security table interface + pSecurityInterface = _ssip_InitSecurityInterface(); + // Call the security interface + status = (*pSecurityInterface->EnumerateSecurityPackages)( + &dwNumOfPkgs, + &security_obj->m_PkgInfo); + if(status != SEC_E_OK) { + printf(TEXT("Failed in retrieving security packages, Error: %x"), GetLastError()); + return VException("Failed in retrieving security packages"); + } + + // Wrap it + security_obj->Wrap(args.This()); + // Return the object + return args.This(); +} + +Handle SecurityContext::InitializeContextSync(const Arguments &args) { + HandleScope scope; + char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; + BYTE *out_bound_data_str = NULL; + int decoded_input_str_length = NULL; + // Store reference to security credentials + SecurityCredentials *security_credentials = NULL; + // Status of operation + SECURITY_STATUS status; + + // We need 3 parameters + if(args.Length() != 3) + return VException("Initialize must be called with either [credential:SecurityCredential, servicePrincipalName:string, input:string]"); + + // First parameter must be an instance of SecurityCredentials + if(!SecurityCredentials::HasInstance(args[0])) + return VException("First parameter for Initialize must be an instance of SecurityCredentials"); + + // Second parameter must be a string + if(!args[1]->IsString()) + return VException("Second parameter for Initialize must be a string"); + + // Third parameter must be a base64 encoded string + if(!args[2]->IsString()) + return VException("Second parameter for Initialize must be a string"); + + // Let's unpack the values + Local service_principal_name = args[1]->ToString(); + service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); + service_principal_name->WriteUtf8(service_principal_name_str); + + // Unpack the user name + Local input = args[2]->ToString(); + + if(input->Utf8Length() > 0) { + input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); + input->WriteUtf8(input_str); + + // Now let's get the base64 decoded string + decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); + } + + // Unpack the Security credentials + security_credentials = ObjectWrap::Unwrap(args[0]->ToObject()); + + // Create Security context instance + Local security_context_value = constructor_template->GetFunction()->NewInstance(); + // Unwrap the security context + SecurityContext *security_context = ObjectWrap::Unwrap(security_context_value); + // Add a reference to the security_credentials + security_context->security_credentials = security_credentials; + + // Structures used for c calls + SecBufferDesc ibd, obd; + SecBuffer ib, ob; + + // + // Prepare data structure for returned data from SSPI + ob.BufferType = SECBUFFER_TOKEN; + ob.cbBuffer = security_context->m_PkgInfo->cbMaxToken; + // Allocate space for return data + out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; + ob.pvBuffer = out_bound_data_str; + // prepare buffer description + obd.cBuffers = 1; + obd.ulVersion = SECBUFFER_VERSION; + obd.pBuffers = &ob; + + // + // Prepare the data we are passing to the SSPI method + if(input->Utf8Length() > 0) { + ib.BufferType = SECBUFFER_TOKEN; + ib.cbBuffer = decoded_input_str_length; + ib.pvBuffer = decoded_input_str; + // prepare buffer description + ibd.cBuffers = 1; + ibd.ulVersion = SECBUFFER_VERSION; + ibd.pBuffers = &ib; + } + + // Perform initialization step + status = _sspi_initializeSecurityContext( + &security_credentials->m_Credentials + , NULL + , const_cast(service_principal_name_str) + , 0x02 // MUTUAL + , 0 + , 0 // Network + , input->Utf8Length() > 0 ? &ibd : NULL + , 0 + , &security_context->m_Context + , &obd + , &security_context->CtxtAttr + , &security_context->Expiration + ); + + // If we have a ok or continue let's prepare the result + if(status == SEC_E_OK + || status == SEC_I_COMPLETE_NEEDED + || status == SEC_I_CONTINUE_NEEDED + || status == SEC_I_COMPLETE_AND_CONTINUE + ) { + security_context->hasContext = true; + security_context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); + } else { + LPSTR err_message = DisplaySECError(status); + + if(err_message != NULL) { + return VExceptionErrNo(err_message, status); + } else { + return VExceptionErrNo("Unknown error", status); + } + } + + // Return security context + return scope.Close(security_context_value); +} + +// +// Async InitializeContext +// +typedef struct SecurityContextStaticInitializeCall { + char *service_principal_name_str; + char *decoded_input_str; + int decoded_input_str_length; + SecurityContext *context; +} SecurityContextStaticInitializeCall; + +static void _initializeContext(Worker *worker) { + // Status of operation + SECURITY_STATUS status; + BYTE *out_bound_data_str = NULL; + SecurityContextStaticInitializeCall *call = (SecurityContextStaticInitializeCall *)worker->parameters; + + // Structures used for c calls + SecBufferDesc ibd, obd; + SecBuffer ib, ob; + + // + // Prepare data structure for returned data from SSPI + ob.BufferType = SECBUFFER_TOKEN; + ob.cbBuffer = call->context->m_PkgInfo->cbMaxToken; + // Allocate space for return data + out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; + ob.pvBuffer = out_bound_data_str; + // prepare buffer description + obd.cBuffers = 1; + obd.ulVersion = SECBUFFER_VERSION; + obd.pBuffers = &ob; + + // + // Prepare the data we are passing to the SSPI method + if(call->decoded_input_str_length > 0) { + ib.BufferType = SECBUFFER_TOKEN; + ib.cbBuffer = call->decoded_input_str_length; + ib.pvBuffer = call->decoded_input_str; + // prepare buffer description + ibd.cBuffers = 1; + ibd.ulVersion = SECBUFFER_VERSION; + ibd.pBuffers = &ib; + } + + // Perform initialization step + status = _sspi_initializeSecurityContext( + &call->context->security_credentials->m_Credentials + , NULL + , const_cast(call->service_principal_name_str) + , 0x02 // MUTUAL + , 0 + , 0 // Network + , call->decoded_input_str_length > 0 ? &ibd : NULL + , 0 + , &call->context->m_Context + , &obd + , &call->context->CtxtAttr + , &call->context->Expiration + ); + + // If we have a ok or continue let's prepare the result + if(status == SEC_E_OK + || status == SEC_I_COMPLETE_NEEDED + || status == SEC_I_CONTINUE_NEEDED + || status == SEC_I_COMPLETE_AND_CONTINUE + ) { + call->context->hasContext = true; + call->context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); + + // Set the context + worker->return_code = status; + worker->return_value = call->context; + } else { + worker->error = TRUE; + worker->error_code = status; + worker->error_message = DisplaySECError(status); + } + + // Clean up data + if(call->decoded_input_str != NULL) free(call->decoded_input_str); + if(call->service_principal_name_str != NULL) free(call->service_principal_name_str); +} + +static Handle _map_initializeContext(Worker *worker) { + HandleScope scope; + + // Unwrap the security context + SecurityContext *context = (SecurityContext *)worker->return_value; + // Return the value + return scope.Close(context->handle_); +} + +Handle SecurityContext::InitializeContext(const Arguments &args) { + HandleScope scope; + char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; + int decoded_input_str_length = NULL; + // Store reference to security credentials + SecurityCredentials *security_credentials = NULL; + + // We need 3 parameters + if(args.Length() != 4) + return VException("Initialize must be called with [credential:SecurityCredential, servicePrincipalName:string, input:string, callback:function]"); + + // First parameter must be an instance of SecurityCredentials + if(!SecurityCredentials::HasInstance(args[0])) + return VException("First parameter for Initialize must be an instance of SecurityCredentials"); + + // Second parameter must be a string + if(!args[1]->IsString()) + return VException("Second parameter for Initialize must be a string"); + + // Third parameter must be a base64 encoded string + if(!args[2]->IsString()) + return VException("Second parameter for Initialize must be a string"); + + // Third parameter must be a callback + if(!args[3]->IsFunction()) + return VException("Third parameter for Initialize must be a callback function"); + + // Let's unpack the values + Local service_principal_name = args[1]->ToString(); + service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); + service_principal_name->WriteUtf8(service_principal_name_str); + + // Unpack the user name + Local input = args[2]->ToString(); + + if(input->Utf8Length() > 0) { + input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); + input->WriteUtf8(input_str); + + // Now let's get the base64 decoded string + decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); + // Free original allocation + free(input_str); + } + + // Unpack the Security credentials + security_credentials = ObjectWrap::Unwrap(args[0]->ToObject()); + // Create Security context instance + Local security_context_value = constructor_template->GetFunction()->NewInstance(); + // Unwrap the security context + SecurityContext *security_context = ObjectWrap::Unwrap(security_context_value); + // Add a reference to the security_credentials + security_context->security_credentials = security_credentials; + + // Build the call function + SecurityContextStaticInitializeCall *call = (SecurityContextStaticInitializeCall *)calloc(1, sizeof(SecurityContextStaticInitializeCall)); + call->context = security_context; + call->decoded_input_str = decoded_input_str; + call->decoded_input_str_length = decoded_input_str_length; + call->service_principal_name_str = service_principal_name_str; + + // Callback + Local callback = Local::Cast(args[3]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _initializeContext; + worker->mapper = _map_initializeContext; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); + + // Return no value + return scope.Close(Undefined()); +} + +Handle SecurityContext::PayloadGetter(Local property, const AccessorInfo& info) { + HandleScope scope; + // Unpack the context object + SecurityContext *context = ObjectWrap::Unwrap(info.Holder()); + // Return the low bits + return scope.Close(String::New(context->payload)); +} + +Handle SecurityContext::HasContextGetter(Local property, const AccessorInfo& info) { + HandleScope scope; + // Unpack the context object + SecurityContext *context = ObjectWrap::Unwrap(info.Holder()); + // Return the low bits + return scope.Close(Boolean::New(context->hasContext)); +} + +// +// Async InitializeContextStep +// +typedef struct SecurityContextStepStaticInitializeCall { + char *service_principal_name_str; + char *decoded_input_str; + int decoded_input_str_length; + SecurityContext *context; +} SecurityContextStepStaticInitializeCall; + +static void _initializeContextStep(Worker *worker) { + // Outbound data array + BYTE *out_bound_data_str = NULL; + // Status of operation + SECURITY_STATUS status; + // Unpack data + SecurityContextStepStaticInitializeCall *call = (SecurityContextStepStaticInitializeCall *)worker->parameters; + SecurityContext *context = call->context; + // Structures used for c calls + SecBufferDesc ibd, obd; + SecBuffer ib, ob; + + // + // Prepare data structure for returned data from SSPI + ob.BufferType = SECBUFFER_TOKEN; + ob.cbBuffer = context->m_PkgInfo->cbMaxToken; + // Allocate space for return data + out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; + ob.pvBuffer = out_bound_data_str; + // prepare buffer description + obd.cBuffers = 1; + obd.ulVersion = SECBUFFER_VERSION; + obd.pBuffers = &ob; + + // + // Prepare the data we are passing to the SSPI method + if(call->decoded_input_str_length > 0) { + ib.BufferType = SECBUFFER_TOKEN; + ib.cbBuffer = call->decoded_input_str_length; + ib.pvBuffer = call->decoded_input_str; + // prepare buffer description + ibd.cBuffers = 1; + ibd.ulVersion = SECBUFFER_VERSION; + ibd.pBuffers = &ib; + } + + // Perform initialization step + status = _sspi_initializeSecurityContext( + &context->security_credentials->m_Credentials + , context->hasContext == true ? &context->m_Context : NULL + , const_cast(call->service_principal_name_str) + , 0x02 // MUTUAL + , 0 + , 0 // Network + , call->decoded_input_str_length ? &ibd : NULL + , 0 + , &context->m_Context + , &obd + , &context->CtxtAttr + , &context->Expiration + ); + + // If we have a ok or continue let's prepare the result + if(status == SEC_E_OK + || status == SEC_I_COMPLETE_NEEDED + || status == SEC_I_CONTINUE_NEEDED + || status == SEC_I_COMPLETE_AND_CONTINUE + ) { + // Set the new payload + if(context->payload != NULL) free(context->payload); + context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); + worker->return_code = status; + worker->return_value = context; + } else { + worker->error = TRUE; + worker->error_code = status; + worker->error_message = DisplaySECError(status); + } + + // Clean up data + if(call->decoded_input_str != NULL) free(call->decoded_input_str); + if(call->service_principal_name_str != NULL) free(call->service_principal_name_str); +} + +static Handle _map_initializeContextStep(Worker *worker) { + HandleScope scope; + // Unwrap the security context + SecurityContext *context = (SecurityContext *)worker->return_value; + // Return the value + return scope.Close(context->handle_); +} + +Handle SecurityContext::InitalizeStep(const Arguments &args) { + HandleScope scope; + + char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; + int decoded_input_str_length = NULL; + + // We need 3 parameters + if(args.Length() != 3) + return VException("Initialize must be called with [servicePrincipalName:string, input:string, callback:function]"); + + // Second parameter must be a string + if(!args[0]->IsString()) + return VException("First parameter for Initialize must be a string"); + + // Third parameter must be a base64 encoded string + if(!args[1]->IsString()) + return VException("Second parameter for Initialize must be a string"); + + // Third parameter must be a base64 encoded string + if(!args[2]->IsFunction()) + return VException("Third parameter for Initialize must be a callback function"); + + // Let's unpack the values + Local service_principal_name = args[0]->ToString(); + service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); + service_principal_name->WriteUtf8(service_principal_name_str); + + // Unpack the user name + Local input = args[1]->ToString(); + + if(input->Utf8Length() > 0) { + input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); + input->WriteUtf8(input_str); + // Now let's get the base64 decoded string + decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); + // Free input string + free(input_str); + } + + // Unwrap the security context + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + + // Create call structure + SecurityContextStepStaticInitializeCall *call = (SecurityContextStepStaticInitializeCall *)calloc(1, sizeof(SecurityContextStepStaticInitializeCall)); + call->context = security_context; + call->decoded_input_str = decoded_input_str; + call->decoded_input_str_length = decoded_input_str_length; + call->service_principal_name_str = service_principal_name_str; + + // Callback + Local callback = Local::Cast(args[2]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _initializeContextStep; + worker->mapper = _map_initializeContextStep; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); + + // Return undefined + return scope.Close(Undefined()); +} + +Handle SecurityContext::InitalizeStepSync(const Arguments &args) { + HandleScope scope; + + char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; + BYTE *out_bound_data_str = NULL; + int decoded_input_str_length = NULL; + // Status of operation + SECURITY_STATUS status; + + // We need 3 parameters + if(args.Length() != 2) + return VException("Initialize must be called with [servicePrincipalName:string, input:string]"); + + // Second parameter must be a string + if(!args[0]->IsString()) + return VException("First parameter for Initialize must be a string"); + + // Third parameter must be a base64 encoded string + if(!args[1]->IsString()) + return VException("Second parameter for Initialize must be a string"); + + // Let's unpack the values + Local service_principal_name = args[0]->ToString(); + service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); + service_principal_name->WriteUtf8(service_principal_name_str); + + // Unpack the user name + Local input = args[1]->ToString(); + + if(input->Utf8Length() > 0) { + input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); + input->WriteUtf8(input_str); + // Now let's get the base64 decoded string + decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); + } + + // Unpack the long object + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + SecurityCredentials *security_credentials = security_context->security_credentials; + + // Structures used for c calls + SecBufferDesc ibd, obd; + SecBuffer ib, ob; + + // + // Prepare data structure for returned data from SSPI + ob.BufferType = SECBUFFER_TOKEN; + ob.cbBuffer = security_context->m_PkgInfo->cbMaxToken; + // Allocate space for return data + out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; + ob.pvBuffer = out_bound_data_str; + // prepare buffer description + obd.cBuffers = 1; + obd.ulVersion = SECBUFFER_VERSION; + obd.pBuffers = &ob; + + // + // Prepare the data we are passing to the SSPI method + if(input->Utf8Length() > 0) { + ib.BufferType = SECBUFFER_TOKEN; + ib.cbBuffer = decoded_input_str_length; + ib.pvBuffer = decoded_input_str; + // prepare buffer description + ibd.cBuffers = 1; + ibd.ulVersion = SECBUFFER_VERSION; + ibd.pBuffers = &ib; + } + + // Perform initialization step + status = _sspi_initializeSecurityContext( + &security_credentials->m_Credentials + , security_context->hasContext == true ? &security_context->m_Context : NULL + , const_cast(service_principal_name_str) + , 0x02 // MUTUAL + , 0 + , 0 // Network + , input->Utf8Length() > 0 ? &ibd : NULL + , 0 + , &security_context->m_Context + , &obd + , &security_context->CtxtAttr + , &security_context->Expiration + ); + + // If we have a ok or continue let's prepare the result + if(status == SEC_E_OK + || status == SEC_I_COMPLETE_NEEDED + || status == SEC_I_CONTINUE_NEEDED + || status == SEC_I_COMPLETE_AND_CONTINUE + ) { + // Set the new payload + if(security_context->payload != NULL) free(security_context->payload); + security_context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); + } else { + LPSTR err_message = DisplaySECError(status); + + if(err_message != NULL) { + return VExceptionErrNo(err_message, status); + } else { + return VExceptionErrNo("Unknown error", status); + } + } + + return scope.Close(Null()); +} + +// +// Async EncryptMessage +// +typedef struct SecurityContextEncryptMessageCall { + SecurityContext *context; + SecurityBufferDescriptor *descriptor; + unsigned long flags; +} SecurityContextEncryptMessageCall; + +static void _encryptMessage(Worker *worker) { + SECURITY_STATUS status; + // Unpack call + SecurityContextEncryptMessageCall *call = (SecurityContextEncryptMessageCall *)worker->parameters; + // Unpack the security context + SecurityContext *context = call->context; + SecurityBufferDescriptor *descriptor = call->descriptor; + + // Let's execute encryption + status = _sspi_EncryptMessage( + &context->m_Context + , call->flags + , &descriptor->secBufferDesc + , 0 + ); + + // We've got ok + if(status == SEC_E_OK) { + int bytesToAllocate = (int)descriptor->bufferSize(); + // Free up existing payload + if(context->payload != NULL) free(context->payload); + // Save the payload + context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); + // Set result + worker->return_code = status; + worker->return_value = context; + } else { + worker->error = TRUE; + worker->error_code = status; + worker->error_message = DisplaySECError(status); + } +} + +static Handle _map_encryptMessage(Worker *worker) { + HandleScope scope; + // Unwrap the security context + SecurityContext *context = (SecurityContext *)worker->return_value; + // Return the value + return scope.Close(context->handle_); +} + +Handle SecurityContext::EncryptMessage(const Arguments &args) { + HandleScope scope; + + if(args.Length() != 3) + return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); + if(!SecurityBufferDescriptor::HasInstance(args[0])) + return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); + if(!args[1]->IsUint32()) + return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); + if(!args[2]->IsFunction()) + return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); + + // Unpack the security context + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + + // Unpack the descriptor + SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); + + // Create call structure + SecurityContextEncryptMessageCall *call = (SecurityContextEncryptMessageCall *)calloc(1, sizeof(SecurityContextEncryptMessageCall)); + call->context = security_context; + call->descriptor = descriptor; + call->flags = (unsigned long)args[1]->ToInteger()->Value(); + + // Callback + Local callback = Local::Cast(args[2]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _encryptMessage; + worker->mapper = _map_encryptMessage; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); + + // Return undefined + return scope.Close(Undefined()); +} + +Handle SecurityContext::EncryptMessageSync(const Arguments &args) { + HandleScope scope; + SECURITY_STATUS status; + + if(args.Length() != 2) + return VException("EncryptMessageSync takes an instance of SecurityBufferDescriptor and an integer flag"); + if(!SecurityBufferDescriptor::HasInstance(args[0])) + return VException("EncryptMessageSync takes an instance of SecurityBufferDescriptor and an integer flag"); + if(!args[1]->IsUint32()) + return VException("EncryptMessageSync takes an instance of SecurityBufferDescriptor and an integer flag"); + + // Unpack the security context + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + + // Unpack the descriptor + SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); + + // Let's execute encryption + status = _sspi_EncryptMessage( + &security_context->m_Context + , (unsigned long)args[1]->ToInteger()->Value() + , &descriptor->secBufferDesc + , 0 + ); + + // We've got ok + if(status == SEC_E_OK) { + int bytesToAllocate = (int)descriptor->bufferSize(); + // Free up existing payload + if(security_context->payload != NULL) free(security_context->payload); + // Save the payload + security_context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); + } else { + LPSTR err_message = DisplaySECError(status); + + if(err_message != NULL) { + return VExceptionErrNo(err_message, status); + } else { + return VExceptionErrNo("Unknown error", status); + } + } + + return scope.Close(Null()); +} + +// +// Async DecryptMessage +// +typedef struct SecurityContextDecryptMessageCall { + SecurityContext *context; + SecurityBufferDescriptor *descriptor; +} SecurityContextDecryptMessageCall; + +static void _decryptMessage(Worker *worker) { + unsigned long quality = 0; + SECURITY_STATUS status; + + // Unpack parameters + SecurityContextDecryptMessageCall *call = (SecurityContextDecryptMessageCall *)worker->parameters; + SecurityContext *context = call->context; + SecurityBufferDescriptor *descriptor = call->descriptor; + + // Let's execute encryption + status = _sspi_DecryptMessage( + &context->m_Context + , &descriptor->secBufferDesc + , 0 + , (unsigned long)&quality + ); + + // We've got ok + if(status == SEC_E_OK) { + int bytesToAllocate = (int)descriptor->bufferSize(); + // Free up existing payload + if(context->payload != NULL) free(context->payload); + // Save the payload + context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); + // Set return values + worker->return_code = status; + worker->return_value = context; + } else { + worker->error = TRUE; + worker->error_code = status; + worker->error_message = DisplaySECError(status); + } +} + +static Handle _map_decryptMessage(Worker *worker) { + HandleScope scope; + // Unwrap the security context + SecurityContext *context = (SecurityContext *)worker->return_value; + // Return the value + return scope.Close(context->handle_); +} + +Handle SecurityContext::DecryptMessage(const Arguments &args) { + HandleScope scope; + + if(args.Length() != 2) + return VException("DecryptMessage takes an instance of SecurityBufferDescriptor and a callback function"); + if(!SecurityBufferDescriptor::HasInstance(args[0])) + return VException("DecryptMessage takes an instance of SecurityBufferDescriptor and a callback function"); + if(!args[1]->IsFunction()) + return VException("DecryptMessage takes an instance of SecurityBufferDescriptor and a callback function"); + + // Unpack the security context + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + // Unpack the descriptor + SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); + // Create call structure + SecurityContextDecryptMessageCall *call = (SecurityContextDecryptMessageCall *)calloc(1, sizeof(SecurityContextDecryptMessageCall)); + call->context = security_context; + call->descriptor = descriptor; + + // Callback + Local callback = Local::Cast(args[1]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _decryptMessage; + worker->mapper = _map_decryptMessage; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); + + // Return undefined + return scope.Close(Undefined()); +} + +Handle SecurityContext::DecryptMessageSync(const Arguments &args) { + HandleScope scope; + unsigned long quality = 0; + SECURITY_STATUS status; + + if(args.Length() != 1) + return VException("DecryptMessageSync takes an instance of SecurityBufferDescriptor"); + if(!SecurityBufferDescriptor::HasInstance(args[0])) + return VException("DecryptMessageSync takes an instance of SecurityBufferDescriptor"); + + // Unpack the security context + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + + // Unpack the descriptor + SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); + + // Let's execute encryption + status = _sspi_DecryptMessage( + &security_context->m_Context + , &descriptor->secBufferDesc + , 0 + , (unsigned long)&quality + ); + + // We've got ok + if(status == SEC_E_OK) { + int bytesToAllocate = (int)descriptor->bufferSize(); + // Free up existing payload + if(security_context->payload != NULL) free(security_context->payload); + // Save the payload + security_context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); + } else { + LPSTR err_message = DisplaySECError(status); + + if(err_message != NULL) { + return VExceptionErrNo(err_message, status); + } else { + return VExceptionErrNo("Unknown error", status); + } + } + + return scope.Close(Null()); +} + +// +// Async QueryContextAttributes +// +typedef struct SecurityContextQueryContextAttributesCall { + SecurityContext *context; + uint32_t attribute; +} SecurityContextQueryContextAttributesCall; + +static void _queryContextAttributes(Worker *worker) { + SECURITY_STATUS status; + + // Cast to data structure + SecurityContextQueryContextAttributesCall *call = (SecurityContextQueryContextAttributesCall *)worker->parameters; + + // Allocate some space + SecPkgContext_Sizes *sizes = (SecPkgContext_Sizes *)calloc(1, sizeof(SecPkgContext_Sizes)); + // Let's grab the query context attribute + status = _sspi_QueryContextAttributes( + &call->context->m_Context, + call->attribute, + sizes + ); + + if(status == SEC_E_OK) { + worker->return_code = status; + worker->return_value = sizes; + } else { + worker->error = TRUE; + worker->error_code = status; + worker->error_message = DisplaySECError(status); + } +} + +static Handle _map_queryContextAttributes(Worker *worker) { + HandleScope scope; + + // Cast to data structure + SecurityContextQueryContextAttributesCall *call = (SecurityContextQueryContextAttributesCall *)worker->parameters; + // Unpack the attribute + uint32_t attribute = call->attribute; + + // Convert data + if(attribute == SECPKG_ATTR_SIZES) { + SecPkgContext_Sizes *sizes = (SecPkgContext_Sizes *)worker->return_value; + // Create object + Local value = Object::New(); + value->Set(String::New("maxToken"), Integer::New(sizes->cbMaxToken)); + value->Set(String::New("maxSignature"), Integer::New(sizes->cbMaxSignature)); + value->Set(String::New("blockSize"), Integer::New(sizes->cbBlockSize)); + value->Set(String::New("securityTrailer"), Integer::New(sizes->cbSecurityTrailer)); + return scope.Close(value); + } + + // Return the value + return scope.Close(Null()); +} + +Handle SecurityContext::QueryContextAttributes(const Arguments &args) { + HandleScope scope; + + if(args.Length() != 2) + return VException("QueryContextAttributesSync method takes a an integer Attribute specifier and a callback function"); + if(!args[0]->IsInt32()) + return VException("QueryContextAttributes method takes a an integer Attribute specifier and a callback function"); + if(!args[1]->IsFunction()) + return VException("QueryContextAttributes method takes a an integer Attribute specifier and a callback function"); + + // Unpack the security context + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + + // Unpack the int value + uint32_t attribute = args[0]->ToInt32()->Value(); + + // Check that we have a supported attribute + if(attribute != SECPKG_ATTR_SIZES) + return VException("QueryContextAttributes only supports the SECPKG_ATTR_SIZES attribute"); + + // Create call structure + SecurityContextQueryContextAttributesCall *call = (SecurityContextQueryContextAttributesCall *)calloc(1, sizeof(SecurityContextQueryContextAttributesCall)); + call->attribute = attribute; + call->context = security_context; + + // Callback + Local callback = Local::Cast(args[1]); + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _queryContextAttributes; + worker->mapper = _map_queryContextAttributes; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); + + // Return undefined + return scope.Close(Undefined()); +} + +Handle SecurityContext::QueryContextAttributesSync(const Arguments &args) { + HandleScope scope; + SECURITY_STATUS status; + + if(args.Length() != 1) + return VException("QueryContextAttributesSync method takes a an integer Attribute specifier"); + if(!args[0]->IsInt32()) + return VException("QueryContextAttributesSync method takes a an integer Attribute specifier"); + + // Unpack the security context + SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); + uint32_t attribute = args[0]->ToInt32()->Value(); + + if(attribute != SECPKG_ATTR_SIZES) + return VException("QueryContextAttributes only supports the SECPKG_ATTR_SIZES attribute"); + + // Check what attribute we are asking for + if(attribute == SECPKG_ATTR_SIZES) { + SecPkgContext_Sizes sizes; + + // Let's grab the query context attribute + status = _sspi_QueryContextAttributes( + &security_context->m_Context, + attribute, + &sizes + ); + + if(status == SEC_E_OK) { + Local value = Object::New(); + value->Set(String::New("maxToken"), Integer::New(sizes.cbMaxToken)); + value->Set(String::New("maxSignature"), Integer::New(sizes.cbMaxSignature)); + value->Set(String::New("blockSize"), Integer::New(sizes.cbBlockSize)); + value->Set(String::New("securityTrailer"), Integer::New(sizes.cbSecurityTrailer)); + return scope.Close(value); + } else { + LPSTR err_message = DisplaySECError(status); + + if(err_message != NULL) { + return VExceptionErrNo(err_message, status); + } else { + return VExceptionErrNo("Unknown error", status); + } + } + } + + return scope.Close(Null()); +} + +void SecurityContext::Initialize(Handle target) { + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("SecurityContext")); + + // Class methods + NODE_SET_METHOD(constructor_template, "initializeSync", InitializeContextSync); + NODE_SET_METHOD(constructor_template, "initialize", InitializeContext); + + // Set up method for the instance + NODE_SET_PROTOTYPE_METHOD(constructor_template, "initializeSync", InitalizeStepSync); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "initialize", InitalizeStep); + + NODE_SET_PROTOTYPE_METHOD(constructor_template, "decryptMessageSync", DecryptMessageSync); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "decryptMessage", DecryptMessage); + + NODE_SET_PROTOTYPE_METHOD(constructor_template, "queryContextAttributesSync", QueryContextAttributesSync); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "queryContextAttributes", QueryContextAttributes); + + NODE_SET_PROTOTYPE_METHOD(constructor_template, "encryptMessageSync", EncryptMessageSync); + NODE_SET_PROTOTYPE_METHOD(constructor_template, "encryptMessage", EncryptMessage); + + // Getters for correct serialization of the object + constructor_template->InstanceTemplate()->SetAccessor(String::NewSymbol("payload"), PayloadGetter); + // Getters for correct serialization of the object + constructor_template->InstanceTemplate()->SetAccessor(String::NewSymbol("hasContext"), HasContextGetter); + + // Set template class name + target->Set(String::NewSymbol("SecurityContext"), constructor_template->GetFunction()); +} + +static LPSTR DisplaySECError(DWORD ErrCode) { + LPSTR pszName = NULL; // WinError.h + + switch(ErrCode) { + case SEC_E_BUFFER_TOO_SMALL: + pszName = "SEC_E_BUFFER_TOO_SMALL - The message buffer is too small. Used with the Digest SSP."; + break; + + case SEC_E_CRYPTO_SYSTEM_INVALID: + pszName = "SEC_E_CRYPTO_SYSTEM_INVALID - The cipher chosen for the security context is not supported. Used with the Digest SSP."; + break; + case SEC_E_INCOMPLETE_MESSAGE: + pszName = "SEC_E_INCOMPLETE_MESSAGE - The data in the input buffer is incomplete. The application needs to read more data from the server and call DecryptMessageSync (General) again."; + break; + + case SEC_E_INVALID_HANDLE: + pszName = "SEC_E_INVALID_HANDLE - A context handle that is not valid was specified in the phContext parameter. Used with the Digest and Schannel SSPs."; + break; + + case SEC_E_INVALID_TOKEN: + pszName = "SEC_E_INVALID_TOKEN - The buffers are of the wrong type or no buffer of type SECBUFFER_DATA was found. Used with the Schannel SSP."; + break; + + case SEC_E_MESSAGE_ALTERED: + pszName = "SEC_E_MESSAGE_ALTERED - The message has been altered. Used with the Digest and Schannel SSPs."; + break; + + case SEC_E_OUT_OF_SEQUENCE: + pszName = "SEC_E_OUT_OF_SEQUENCE - The message was not received in the correct sequence."; + break; + + case SEC_E_QOP_NOT_SUPPORTED: + pszName = "SEC_E_QOP_NOT_SUPPORTED - Neither confidentiality nor integrity are supported by the security context. Used with the Digest SSP."; + break; + + case SEC_I_CONTEXT_EXPIRED: + pszName = "SEC_I_CONTEXT_EXPIRED - The message sender has finished using the connection and has initiated a shutdown."; + break; + + case SEC_I_RENEGOTIATE: + pszName = "SEC_I_RENEGOTIATE - The remote party requires a new handshake sequence or the application has just initiated a shutdown."; + break; + + case SEC_E_ENCRYPT_FAILURE: + pszName = "SEC_E_ENCRYPT_FAILURE - The specified data could not be encrypted."; + break; + + case SEC_E_DECRYPT_FAILURE: + pszName = "SEC_E_DECRYPT_FAILURE - The specified data could not be decrypted."; + break; + case -1: + pszName = "Failed to load security.dll library"; + break; + } + + return pszName; +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h new file mode 100644 index 0000000..b0059e3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h @@ -0,0 +1,85 @@ +#ifndef SECURITY_CONTEXT_H +#define SECURITY_CONTEXT_H + +#include +#include +#include + +#define SECURITY_WIN32 1 + +#include +#include +#include "security_credentials.h" +#include "../worker.h" + +extern "C" { + #include "../kerberos_sspi.h" + #include "../base64.h" +} + +using namespace v8; +using namespace node; + +class SecurityContext : public ObjectWrap { + public: + SecurityContext(); + ~SecurityContext(); + + // Security info package + PSecPkgInfo m_PkgInfo; + // Do we have a context + bool hasContext; + // Reference to security credentials + SecurityCredentials *security_credentials; + // Security context + CtxtHandle m_Context; + // Attributes + DWORD CtxtAttr; + // Expiry time for ticket + TimeStamp Expiration; + // Payload + char *payload; + + // Has instance check + static inline bool HasInstance(Handle val) { + if (!val->IsObject()) return false; + Local obj = val->ToObject(); + return constructor_template->HasInstance(obj); + }; + + // Functions available from V8 + static void Initialize(Handle target); + + static Handle InitializeContext(const Arguments &args); + static Handle InitializeContextSync(const Arguments &args); + + static Handle InitalizeStep(const Arguments &args); + static Handle InitalizeStepSync(const Arguments &args); + + static Handle DecryptMessage(const Arguments &args); + static Handle DecryptMessageSync(const Arguments &args); + + static Handle QueryContextAttributesSync(const Arguments &args); + static Handle QueryContextAttributes(const Arguments &args); + + static Handle EncryptMessageSync(const Arguments &args); + static Handle EncryptMessage(const Arguments &args); + + // Payload getter + static Handle PayloadGetter(Local property, const AccessorInfo& info); + // hasContext getter + static Handle HasContextGetter(Local property, const AccessorInfo& info); + + // Constructor used for creating new Long objects from C++ + static Persistent constructor_template; + + private: + // Create a new instance + static Handle New(const Arguments &args); + // // Handles the uv calls + // static void Process(uv_work_t* work_req); + // // Called after work is done + // static void After(uv_work_t* work_req); +}; + +#endif diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js new file mode 100644 index 0000000..ef04e92 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js @@ -0,0 +1,3 @@ +var SecurityContextNative = require('../../../build/Release/kerberos').SecurityContext; +// Export the modified class +exports.SecurityContext = SecurityContextNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc new file mode 100644 index 0000000..14c1cdc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc @@ -0,0 +1,468 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "security_credentials.h" + +#ifndef ARRAY_SIZE +# define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0])) +#endif + +static LPSTR DisplaySECError(DWORD ErrCode); + +static Handle VException(const char *msg) { + HandleScope scope; + return ThrowException(Exception::Error(String::New(msg))); +}; + +static Handle VExceptionErrNo(const char *msg, const int errorNumber) { + HandleScope scope; + + Local err = Exception::Error(String::New(msg)); + Local obj = err->ToObject(); + obj->Set(NODE_PSYMBOL("code"), Int32::New(errorNumber)); + return ThrowException(err); +}; + +Persistent SecurityCredentials::constructor_template; + +SecurityCredentials::SecurityCredentials() : ObjectWrap() { +} + +SecurityCredentials::~SecurityCredentials() { +} + +Handle SecurityCredentials::New(const Arguments &args) { + HandleScope scope; + + // Create security credentials instance + SecurityCredentials *security_credentials = new SecurityCredentials(); + // Wrap it + security_credentials->Wrap(args.This()); + // Return the object + return args.This(); +} + +Handle SecurityCredentials::AquireSync(const Arguments &args) { + HandleScope scope; + char *package_str = NULL, *username_str = NULL, *password_str = NULL, *domain_str = NULL; + // Status of operation + SECURITY_STATUS status; + + // Unpack the variables + if(args.Length() != 2 && args.Length() != 3 && args.Length() != 4) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); + + if(!args[0]->IsString()) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); + + if(!args[1]->IsString()) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); + + if(args.Length() == 3 && !args[2]->IsString()) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); + + if(args.Length() == 4 && (!args[3]->IsString() && !args[3]->IsUndefined() && !args[3]->IsNull())) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); + + // Unpack the package + Local package = args[0]->ToString(); + package_str = (char *)calloc(package->Utf8Length() + 1, sizeof(char)); + package->WriteUtf8(package_str); + + // Unpack the user name + Local username = args[1]->ToString(); + username_str = (char *)calloc(username->Utf8Length() + 1, sizeof(char)); + username->WriteUtf8(username_str); + + // If we have a password + if(args.Length() == 3 || args.Length() == 4) { + Local password = args[2]->ToString(); + password_str = (char *)calloc(password->Utf8Length() + 1, sizeof(char)); + password->WriteUtf8(password_str); + } + + // If we have a domain + if(args.Length() == 4 && args[3]->IsString()) { + Local domain = args[3]->ToString(); + domain_str = (char *)calloc(domain->Utf8Length() + 1, sizeof(char)); + domain->WriteUtf8(domain_str); + } + + // Create Security instance + Local security_credentials_value = constructor_template->GetFunction()->NewInstance(); + + // Unwrap the credentials + SecurityCredentials *security_credentials = ObjectWrap::Unwrap(security_credentials_value); + + // If we have domain string + if(domain_str != NULL) { + security_credentials->m_Identity.Domain = USTR(_tcsdup(domain_str)); + security_credentials->m_Identity.DomainLength = (unsigned long)_tcslen(domain_str); + } else { + security_credentials->m_Identity.Domain = NULL; + security_credentials->m_Identity.DomainLength = 0; + } + + // Set up the user + security_credentials->m_Identity.User = USTR(_tcsdup(username_str)); + security_credentials->m_Identity.UserLength = (unsigned long)_tcslen(username_str); + + // If we have a password string + if(password_str != NULL) { + // Set up the password + security_credentials->m_Identity.Password = USTR(_tcsdup(password_str)); + security_credentials->m_Identity.PasswordLength = (unsigned long)_tcslen(password_str); + } + + #ifdef _UNICODE + security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE; + #else + security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_ANSI; + #endif + + // Attempt to acquire credentials + status = _sspi_AcquireCredentialsHandle( + NULL, + package_str, + SECPKG_CRED_OUTBOUND, + NULL, + password_str != NULL ? &security_credentials->m_Identity : NULL, + NULL, NULL, + &security_credentials->m_Credentials, + &security_credentials->Expiration + ); + + // We have an error + if(status != SEC_E_OK) { + LPSTR err_message = DisplaySECError(status); + + if(err_message != NULL) { + return VExceptionErrNo(err_message, status); + } else { + return VExceptionErrNo("Unknown error", status); + } + } + + // Make object persistent + Persistent persistent = Persistent::New(security_credentials_value); + // Return the object + return scope.Close(persistent); +} + +// Call structs +typedef struct SecurityCredentialCall { + char *package_str; + char *username_str; + char *password_str; + char *domain_str; + SecurityCredentials *credentials; +} SecurityCredentialCall; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// authGSSClientInit +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +static void _authSSPIAquire(Worker *worker) { + // Status of operation + SECURITY_STATUS status; + + // Unpack data + SecurityCredentialCall *call = (SecurityCredentialCall *)worker->parameters; + + // Unwrap the credentials + SecurityCredentials *security_credentials = (SecurityCredentials *)call->credentials; + + // If we have domain string + if(call->domain_str != NULL) { + security_credentials->m_Identity.Domain = USTR(_tcsdup(call->domain_str)); + security_credentials->m_Identity.DomainLength = (unsigned long)_tcslen(call->domain_str); + } else { + security_credentials->m_Identity.Domain = NULL; + security_credentials->m_Identity.DomainLength = 0; + } + + // Set up the user + security_credentials->m_Identity.User = USTR(_tcsdup(call->username_str)); + security_credentials->m_Identity.UserLength = (unsigned long)_tcslen(call->username_str); + + // If we have a password string + if(call->password_str != NULL) { + // Set up the password + security_credentials->m_Identity.Password = USTR(_tcsdup(call->password_str)); + security_credentials->m_Identity.PasswordLength = (unsigned long)_tcslen(call->password_str); + } + + #ifdef _UNICODE + security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE; + #else + security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_ANSI; + #endif + + // Attempt to acquire credentials + status = _sspi_AcquireCredentialsHandle( + NULL, + call->package_str, + SECPKG_CRED_OUTBOUND, + NULL, + call->password_str != NULL ? &security_credentials->m_Identity : NULL, + NULL, NULL, + &security_credentials->m_Credentials, + &security_credentials->Expiration + ); + + // We have an error + if(status != SEC_E_OK) { + worker->error = TRUE; + worker->error_code = status; + worker->error_message = DisplaySECError(status); + } else { + worker->return_code = status; + worker->return_value = security_credentials; + } + + // Free up parameter structure + if(call->package_str != NULL) free(call->package_str); + if(call->domain_str != NULL) free(call->domain_str); + if(call->password_str != NULL) free(call->password_str); + if(call->username_str != NULL) free(call->username_str); + free(call); +} + +static Handle _map_authSSPIAquire(Worker *worker) { + HandleScope scope; + + // Unpack the credentials + SecurityCredentials *security_credentials = (SecurityCredentials *)worker->return_value; + // Make object persistent + Persistent persistent = Persistent::New(security_credentials->handle_); + // Return the object + return scope.Close(persistent); +} + +Handle SecurityCredentials::Aquire(const Arguments &args) { + HandleScope scope; + char *package_str = NULL, *username_str = NULL, *password_str = NULL, *domain_str = NULL; + // Unpack the variables + if(args.Length() != 2 && args.Length() != 3 && args.Length() != 4 && args.Length() != 5) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); + + if(!args[0]->IsString()) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); + + if(!args[1]->IsString()) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); + + if(args.Length() == 3 && (!args[2]->IsString() && !args[2]->IsFunction())) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); + + if(args.Length() == 4 && (!args[3]->IsString() && !args[3]->IsUndefined() && !args[3]->IsNull()) && !args[3]->IsFunction()) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); + + if(args.Length() == 5 && !args[4]->IsFunction()) + return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); + + Local callback; + + // Figure out which parameter is the callback + if(args.Length() == 5) { + callback = Local::Cast(args[4]); + } else if(args.Length() == 4) { + callback = Local::Cast(args[3]); + } else if(args.Length() == 3) { + callback = Local::Cast(args[2]); + } + + // Unpack the package + Local package = args[0]->ToString(); + package_str = (char *)calloc(package->Utf8Length() + 1, sizeof(char)); + package->WriteUtf8(package_str); + + // Unpack the user name + Local username = args[1]->ToString(); + username_str = (char *)calloc(username->Utf8Length() + 1, sizeof(char)); + username->WriteUtf8(username_str); + + // If we have a password + if(args.Length() == 3 || args.Length() == 4 || args.Length() == 5) { + Local password = args[2]->ToString(); + password_str = (char *)calloc(password->Utf8Length() + 1, sizeof(char)); + password->WriteUtf8(password_str); + } + + // If we have a domain + if((args.Length() == 4 || args.Length() == 5) && args[3]->IsString()) { + Local domain = args[3]->ToString(); + domain_str = (char *)calloc(domain->Utf8Length() + 1, sizeof(char)); + domain->WriteUtf8(domain_str); + } + + // Create reference object + Local security_credentials_value = constructor_template->GetFunction()->NewInstance(); + // Unwrap object + SecurityCredentials *security_credentials = ObjectWrap::Unwrap(security_credentials_value); + + // Allocate call structure + SecurityCredentialCall *call = (SecurityCredentialCall *)calloc(1, sizeof(SecurityCredentialCall)); + call->domain_str = domain_str; + call->package_str = package_str; + call->password_str = password_str; + call->username_str = username_str; + call->credentials = security_credentials; + + // Let's allocate some space + Worker *worker = new Worker(); + worker->error = false; + worker->request.data = worker; + worker->callback = Persistent::New(callback); + worker->parameters = call; + worker->execute = _authSSPIAquire; + worker->mapper = _map_authSSPIAquire; + + // Schedule the worker with lib_uv + uv_queue_work(uv_default_loop(), &worker->request, SecurityCredentials::Process, (uv_after_work_cb)SecurityCredentials::After); + + // Return the undefined value + return scope.Close(Undefined()); +} + +void SecurityCredentials::Initialize(Handle target) { + // Grab the scope of the call from Node + HandleScope scope; + // Define a new function template + Local t = FunctionTemplate::New(New); + constructor_template = Persistent::New(t); + constructor_template->InstanceTemplate()->SetInternalFieldCount(1); + constructor_template->SetClassName(String::NewSymbol("SecurityCredentials")); + + // Class methods + NODE_SET_METHOD(constructor_template, "aquireSync", AquireSync); + NODE_SET_METHOD(constructor_template, "aquire", Aquire); + + // Set the class on the target module + target->Set(String::NewSymbol("SecurityCredentials"), constructor_template->GetFunction()); + + // Attempt to load the security.dll library + load_library(); +} + +static LPSTR DisplaySECError(DWORD ErrCode) { + LPSTR pszName = NULL; // WinError.h + + switch(ErrCode) { + case SEC_E_BUFFER_TOO_SMALL: + pszName = "SEC_E_BUFFER_TOO_SMALL - The message buffer is too small. Used with the Digest SSP."; + break; + + case SEC_E_CRYPTO_SYSTEM_INVALID: + pszName = "SEC_E_CRYPTO_SYSTEM_INVALID - The cipher chosen for the security context is not supported. Used with the Digest SSP."; + break; + case SEC_E_INCOMPLETE_MESSAGE: + pszName = "SEC_E_INCOMPLETE_MESSAGE - The data in the input buffer is incomplete. The application needs to read more data from the server and call DecryptMessage (General) again."; + break; + + case SEC_E_INVALID_HANDLE: + pszName = "SEC_E_INVALID_HANDLE - A context handle that is not valid was specified in the phContext parameter. Used with the Digest and Schannel SSPs."; + break; + + case SEC_E_INVALID_TOKEN: + pszName = "SEC_E_INVALID_TOKEN - The buffers are of the wrong type or no buffer of type SECBUFFER_DATA was found. Used with the Schannel SSP."; + break; + + case SEC_E_MESSAGE_ALTERED: + pszName = "SEC_E_MESSAGE_ALTERED - The message has been altered. Used with the Digest and Schannel SSPs."; + break; + + case SEC_E_OUT_OF_SEQUENCE: + pszName = "SEC_E_OUT_OF_SEQUENCE - The message was not received in the correct sequence."; + break; + + case SEC_E_QOP_NOT_SUPPORTED: + pszName = "SEC_E_QOP_NOT_SUPPORTED - Neither confidentiality nor integrity are supported by the security context. Used with the Digest SSP."; + break; + + case SEC_I_CONTEXT_EXPIRED: + pszName = "SEC_I_CONTEXT_EXPIRED - The message sender has finished using the connection and has initiated a shutdown."; + break; + + case SEC_I_RENEGOTIATE: + pszName = "SEC_I_RENEGOTIATE - The remote party requires a new handshake sequence or the application has just initiated a shutdown."; + break; + + case SEC_E_ENCRYPT_FAILURE: + pszName = "SEC_E_ENCRYPT_FAILURE - The specified data could not be encrypted."; + break; + + case SEC_E_DECRYPT_FAILURE: + pszName = "SEC_E_DECRYPT_FAILURE - The specified data could not be decrypted."; + break; + case -1: + pszName = "Failed to load security.dll library"; + break; + + } + + return pszName; +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// UV Lib callbacks +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +void SecurityCredentials::Process(uv_work_t* work_req) { + // Grab the worker + Worker *worker = static_cast(work_req->data); + // Execute the worker code + worker->execute(worker); +} + +void SecurityCredentials::After(uv_work_t* work_req) { + // Grab the scope of the call from Node + v8::HandleScope scope; + + // Get the worker reference + Worker *worker = static_cast(work_req->data); + + // If we have an error + if(worker->error) { + v8::Local err = v8::Exception::Error(v8::String::New(worker->error_message)); + Local obj = err->ToObject(); + obj->Set(NODE_PSYMBOL("code"), Int32::New(worker->error_code)); + v8::Local args[2] = { err, v8::Local::New(v8::Null()) }; + // Execute the error + v8::TryCatch try_catch; + // Call the callback + worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); + // If we have an exception handle it as a fatalexception + if (try_catch.HasCaught()) { + node::FatalException(try_catch); + } + } else { + // // Map the data + v8::Handle result = worker->mapper(worker); + // Set up the callback with a null first + v8::Handle args[2] = { v8::Local::New(v8::Null()), result}; + // Wrap the callback function call in a TryCatch so that we can call + // node's FatalException afterwards. This makes it possible to catch + // the exception from JavaScript land using the + // process.on('uncaughtException') event. + v8::TryCatch try_catch; + // Call the callback + worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); + // If we have an exception handle it as a fatalexception + if (try_catch.HasCaught()) { + node::FatalException(try_catch); + } + } + + // Clean up the memory + worker->callback.Dispose(); + delete worker; +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h new file mode 100644 index 0000000..10b3eda --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h @@ -0,0 +1,67 @@ +#ifndef SECURITY_CREDENTIALS_H +#define SECURITY_CREDENTIALS_H + +#include +#include +#include + +#define SECURITY_WIN32 1 + +#include +#include +#include +#include "../worker.h" +#include + +extern "C" { + #include "../kerberos_sspi.h" +} + +// SEC_WINNT_AUTH_IDENTITY makes it unusually hard +// to compile for both Unicode and ansi, so I use this macro: +#ifdef _UNICODE +#define USTR(str) (str) +#else +#define USTR(str) ((unsigned char*)(str)) +#endif + +using namespace v8; +using namespace node; + +class SecurityCredentials : public ObjectWrap { + public: + SecurityCredentials(); + ~SecurityCredentials(); + + // Pointer to context object + SEC_WINNT_AUTH_IDENTITY m_Identity; + // credentials + CredHandle m_Credentials; + // Expiry time for ticket + TimeStamp Expiration; + + // Has instance check + static inline bool HasInstance(Handle val) { + if (!val->IsObject()) return false; + Local obj = val->ToObject(); + return constructor_template->HasInstance(obj); + }; + + // Functions available from V8 + static void Initialize(Handle target); + static Handle AquireSync(const Arguments &args); + static Handle Aquire(const Arguments &args); + + // Constructor used for creating new Long objects from C++ + static Persistent constructor_template; + + private: + // Create a new instance + static Handle New(const Arguments &args); + // Handles the uv calls + static void Process(uv_work_t* work_req); + // Called after work is done + static void After(uv_work_t* work_req); +}; + +#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js new file mode 100644 index 0000000..4215c92 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js @@ -0,0 +1,22 @@ +var SecurityCredentialsNative = require('../../../build/Release/kerberos').SecurityCredentials; + +// Add simple kebros helper +SecurityCredentialsNative.aquire_kerberos = function(username, password, domain, callback) { + if(typeof password == 'function') { + callback = password; + password = null; + } else if(typeof domain == 'function') { + callback = domain; + domain = null; + } + + // We are going to use the async version + if(typeof callback == 'function') { + return SecurityCredentialsNative.aquire('Kerberos', username, password, domain, callback); + } else { + return SecurityCredentialsNative.aquireSync('Kerberos', username, password, domain); + } +} + +// Export the modified class +exports.SecurityCredentials = SecurityCredentialsNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc new file mode 100644 index 0000000..e7a472f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc @@ -0,0 +1,7 @@ +#include "worker.h" + +Worker::Worker() { +} + +Worker::~Worker() { +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h new file mode 100644 index 0000000..c5f86f5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h @@ -0,0 +1,39 @@ +#ifndef WORKER_H_ +#define WORKER_H_ + +#include +#include +#include + +using namespace node; +using namespace v8; + +class Worker { + public: + Worker(); + virtual ~Worker(); + + // libuv's request struct. + uv_work_t request; + // Callback + v8::Persistent callback; + // // Arguments + // v8::Persistent arguments; + // Parameters + void *parameters; + // Results + void *return_value; + // Did we raise an error + bool error; + // The error message + char *error_message; + // Error code if not message + int error_code; + // Any return code + int return_code; + // Method we are going to fire + void (*execute)(Worker *worker); + Handle (*mapper)(Worker *worker); +}; + +#endif // WORKER_H_ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json new file mode 100644 index 0000000..46e144b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json @@ -0,0 +1,34 @@ +{ + "name": "kerberos", + "version": "0.0.2", + "description": "Kerberos library for Node.js", + "main": "index.js", + "scripts": { + "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)", + "test": "nodeunit ./test" + }, + "repository": { + "type": "git", + "url": "https://github.com/christkv/kerberos.git" + }, + "keywords": [ + "kerberos", + "security", + "authentication" + ], + "devDependencies": { + "nodeunit": "latest" + }, + "author": { + "name": "Christian Amor Kvalheim" + }, + "license": "Apache 2.0", + "readmeFilename": "README.md", + "gitHead": "bb01d4fe322e022999aca19da564e7d9db59a8ed", + "readme": "kerberos\n========\n\nKerberos library for node.js", + "bugs": { + "url": "https://github.com/christkv/kerberos/issues" + }, + "_id": "kerberos@0.0.2", + "_from": "kerberos@latest" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js new file mode 100644 index 0000000..a06c5fd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js @@ -0,0 +1,34 @@ +exports.setUp = function(callback) { + callback(); +} + +exports.tearDown = function(callback) { + callback(); +} + +exports['Simple initialize of Kerberos object'] = function(test) { + var Kerberos = require('../lib/kerberos.js').Kerberos; + var kerberos = new Kerberos(); + // console.dir(kerberos) + + // Initiate kerberos client + kerberos.authGSSClientInit('mongodb@kdc.10gen.me', Kerberos.GSS_C_MUTUAL_FLAG, function(err, context) { + console.log("===================================== authGSSClientInit") + test.equal(null, err); + test.ok(context != null && typeof context == 'object'); + // console.log("===================================== authGSSClientInit") + console.dir(err) + console.dir(context) + // console.dir(typeof result) + + // Perform the first step + kerberos.authGSSClientStep(context, function(err, result) { + console.log("===================================== authGSSClientStep") + console.dir(err) + console.dir(result) + console.dir(context) + + test.done(); + }); + }); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js new file mode 100644 index 0000000..d2f7046 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js @@ -0,0 +1,19 @@ +exports.setUp = function(callback) { + callback(); +} + +exports.tearDown = function(callback) { + callback(); +} + +exports['Simple initialize of Kerberos win32 object'] = function(test) { + var KerberosNative = require('../build/Release/kerberos').Kerberos; + // console.dir(KerberosNative) + var kerberos = new KerberosNative(); + console.log("=========================================== 0") + console.dir(kerberos.acquireAlternateCredentials("dev1@10GEN.ME", "a")); + console.log("=========================================== 1") + console.dir(kerberos.prepareOutboundPackage("mongodb/kdc.10gen.com")); + console.log("=========================================== 2") + test.done(); +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js new file mode 100644 index 0000000..3531b6b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js @@ -0,0 +1,41 @@ +exports.setUp = function(callback) { + callback(); +} + +exports.tearDown = function(callback) { + callback(); +} + +exports['Initialize a security Buffer Descriptor'] = function(test) { + var SecurityBufferDescriptor = require('../../lib/sspi.js').SecurityBufferDescriptor + SecurityBuffer = require('../../lib/sspi.js').SecurityBuffer; + + // Create descriptor with single Buffer + var securityDescriptor = new SecurityBufferDescriptor(100); + try { + // Fail to work due to no valid Security Buffer + securityDescriptor = new SecurityBufferDescriptor(["hello"]); + test.ok(false); + } catch(err){} + + // Should Correctly construct SecurityBuffer + var buffer = new SecurityBuffer(SecurityBuffer.DATA, 100); + securityDescriptor = new SecurityBufferDescriptor([buffer]); + // Should correctly return a buffer + var result = securityDescriptor.toBuffer(); + test.equal(100, result.length); + + // Should Correctly construct SecurityBuffer + var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); + securityDescriptor = new SecurityBufferDescriptor([buffer]); + var result = securityDescriptor.toBuffer(); + test.equal("hello world", result.toString()); + + // Test passing in more than one Buffer + var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); + var buffer2 = new SecurityBuffer(SecurityBuffer.STREAM, new Buffer("adam and eve")); + securityDescriptor = new SecurityBufferDescriptor([buffer, buffer2]); + var result = securityDescriptor.toBuffer(); + test.equal("hello worldadam and eve", result.toString()); + test.done(); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js new file mode 100644 index 0000000..b52b959 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js @@ -0,0 +1,22 @@ +exports.setUp = function(callback) { + callback(); +} + +exports.tearDown = function(callback) { + callback(); +} + +exports['Initialize a security Buffer'] = function(test) { + var SecurityBuffer = require('../../lib/sspi.js').SecurityBuffer; + // Create empty buffer + var securityBuffer = new SecurityBuffer(SecurityBuffer.DATA, 100); + var buffer = securityBuffer.toBuffer(); + test.equal(100, buffer.length); + + // Access data passed in + var allocated_buffer = new Buffer(256); + securityBuffer = new SecurityBuffer(SecurityBuffer.DATA, allocated_buffer); + buffer = securityBuffer.toBuffer(); + test.deepEqual(allocated_buffer, buffer); + test.done(); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js new file mode 100644 index 0000000..7758180 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js @@ -0,0 +1,55 @@ +exports.setUp = function(callback) { + callback(); +} + +exports.tearDown = function(callback) { + callback(); +} + +exports['Initialize a set of security credentials'] = function(test) { + var SecurityCredentials = require('../../lib/sspi.js').SecurityCredentials; + + // Aquire some credentials + try { + var credentials = SecurityCredentials.aquire('Kerberos', 'dev1@10GEN.ME', 'a'); + } catch(err) { + console.dir(err) + test.ok(false); + } + + + + // console.dir(SecurityCredentials); + + // var SecurityBufferDescriptor = require('../../lib/sspi.js').SecurityBufferDescriptor + // SecurityBuffer = require('../../lib/sspi.js').SecurityBuffer; + + // // Create descriptor with single Buffer + // var securityDescriptor = new SecurityBufferDescriptor(100); + // try { + // // Fail to work due to no valid Security Buffer + // securityDescriptor = new SecurityBufferDescriptor(["hello"]); + // test.ok(false); + // } catch(err){} + + // // Should Correctly construct SecurityBuffer + // var buffer = new SecurityBuffer(SecurityBuffer.DATA, 100); + // securityDescriptor = new SecurityBufferDescriptor([buffer]); + // // Should correctly return a buffer + // var result = securityDescriptor.toBuffer(); + // test.equal(100, result.length); + + // // Should Correctly construct SecurityBuffer + // var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); + // securityDescriptor = new SecurityBufferDescriptor([buffer]); + // var result = securityDescriptor.toBuffer(); + // test.equal("hello world", result.toString()); + + // // Test passing in more than one Buffer + // var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); + // var buffer2 = new SecurityBuffer(SecurityBuffer.STREAM, new Buffer("adam and eve")); + // securityDescriptor = new SecurityBufferDescriptor([buffer, buffer2]); + // var result = securityDescriptor.toBuffer(); + // test.equal("hello worldadam and eve", result.toString()); + test.done(); +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json new file mode 100644 index 0000000..afee553 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json @@ -0,0 +1,228 @@ +{ + "name": "mongodb", + "description": "A node.js driver for MongoDB", + "keywords": [ + "mongodb", + "mongo", + "driver", + "db" + ], + "version": "1.3.5", + "author": { + "name": "Christian Amor Kvalheim", + "email": "christkv@gmail.com" + }, + "contributors": [ + { + "name": "Aaron Heckmann" + }, + { + "name": "Christoph Pojer" + }, + { + "name": "Pau Ramon Revilla" + }, + { + "name": "Nathan White" + }, + { + "name": "Emmerman" + }, + { + "name": "Seth LaForge" + }, + { + "name": "Boris Filipov" + }, + { + "name": "Stefan Schärmeli" + }, + { + "name": "Tedde Lundgren" + }, + { + "name": "renctan" + }, + { + "name": "Sergey Ukustov" + }, + { + "name": "Ciaran Jessup" + }, + { + "name": "kuno" + }, + { + "name": "srimonti" + }, + { + "name": "Erik Abele" + }, + { + "name": "Pratik Daga" + }, + { + "name": "Slobodan Utvic" + }, + { + "name": "Kristina Chodorow" + }, + { + "name": "Yonathan Randolph" + }, + { + "name": "Brian Noguchi" + }, + { + "name": "Sam Epstein" + }, + { + "name": "James Harrison Fisher" + }, + { + "name": "Vladimir Dronnikov" + }, + { + "name": "Ben Hockey" + }, + { + "name": "Henrik Johansson" + }, + { + "name": "Simon Weare" + }, + { + "name": "Alex Gorbatchev" + }, + { + "name": "Shimon Doodkin" + }, + { + "name": "Kyle Mueller" + }, + { + "name": "Eran Hammer-Lahav" + }, + { + "name": "Marcin Ciszak" + }, + { + "name": "François de Metz" + }, + { + "name": "Vinay Pulim" + }, + { + "name": "nstielau" + }, + { + "name": "Adam Wiggins" + }, + { + "name": "entrinzikyl" + }, + { + "name": "Jeremy Selier" + }, + { + "name": "Ian Millington" + }, + { + "name": "Public Keating" + }, + { + "name": "andrewjstone" + }, + { + "name": "Christopher Stott" + }, + { + "name": "Corey Jewett" + }, + { + "name": "brettkiefer" + }, + { + "name": "Rob Holland" + }, + { + "name": "Senmiao Liu" + }, + { + "name": "heroic" + }, + { + "name": "gitfy" + }, + { + "name": "Andrew Stone" + }, + { + "name": "John Le Drew" + }, + { + "name": "Lucasfilm Singapore" + }, + { + "name": "Roman Shtylman" + }, + { + "name": "Matt Self" + } + ], + "repository": { + "type": "git", + "url": "http://github.com/mongodb/node-mongodb-native.git" + }, + "bugs": { + "url": "http://github.com/mongodb/node-mongodb-native/issues" + }, + "dependencies": { + "bson": "0.1.8", + "kerberos": "latest" + }, + "devDependencies": { + "dox": "0.2.0", + "uglify-js": "1.2.5", + "ejs": "0.6.1", + "request": "2.12.0", + "nodeunit": "0.7.4", + "markdown": "0.3.1", + "gleak": "0.2.3", + "step": "0.0.5", + "async": "0.1.22", + "integra": "latest", + "optimist": "latest" + }, + "optionalDependencies": { + "kerberos": "latest" + }, + "config": { + "native": false + }, + "main": "./lib/mongodb/index", + "homepage": "http://mongodb.github.com/node-mongodb-native/", + "directories": { + "lib": "./lib/mongodb" + }, + "engines": { + "node": ">=0.6.19" + }, + "scripts": { + "test": "make test_functional" + }, + "licenses": [ + { + "type": "Apache License, Version 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + } + ], + "readme": "Up to date documentation\n========================\n\n[Documentation](http://mongodb.github.com/node-mongodb-native/)\n\nInstall\n=======\n\nTo install the most recent release from npm, run:\n\n npm install mongodb\n\nThat may give you a warning telling you that bugs['web'] should be bugs['url'], it would be safe to ignore it (this has been fixed in the development version)\n\nTo install the latest from the repository, run::\n\n npm install path/to/node-mongodb-native\n\nCommunity\n=========\nCheck out the google group [node-mongodb-native](http://groups.google.com/group/node-mongodb-native) for questions/answers from users of the driver.\n\nLive Examples\n============\n\n\nIntroduction\n============\n\nThis is a node.js driver for MongoDB. It's a port (or close to a port) of the library for ruby at http://github.com/mongodb/mongo-ruby-driver/.\n\nA simple example of inserting a document.\n\n```javascript\n var client = new Db('test', new Server(\"127.0.0.1\", 27017, {}), {w: 1}),\n test = function (err, collection) {\n collection.insert({a:2}, function(err, docs) {\n\n collection.count(function(err, count) {\n test.assertEquals(1, count);\n });\n\n // Locate all the entries using find\n collection.find().toArray(function(err, results) {\n test.assertEquals(1, results.length);\n test.assertTrue(results[0].a === 2);\n\n // Let's close the db\n client.close();\n });\n });\n };\n\n client.open(function(err, p_client) {\n client.collection('test_insert', test);\n });\n```\n\nData types\n==========\n\nTo store and retrieve the non-JSON MongoDb primitives ([ObjectID](http://www.mongodb.org/display/DOCS/Object+IDs), Long, Binary, [Timestamp](http://www.mongodb.org/display/DOCS/Timestamp+data+type), [DBRef](http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef), Code).\n\nIn particular, every document has a unique `_id` which can be almost any type, and by default a 12-byte ObjectID is created. ObjectIDs can be represented as 24-digit hexadecimal strings, but you must convert the string back into an ObjectID before you can use it in the database. For example:\n\n```javascript\n // Get the objectID type\n var ObjectID = require('mongodb').ObjectID;\n\n var idString = '4e4e1638c85e808431000003';\n collection.findOne({_id: new ObjectID(idString)}, console.log) // ok\n collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined\n```\n\nHere are the constructors the non-Javascript BSON primitive types:\n\n```javascript\n // Fetch the library\n var mongo = require('mongodb');\n // Create new instances of BSON types\n new mongo.Long(numberString)\n new mongo.ObjectID(hexString)\n new mongo.Timestamp() // the actual unique number is generated on insert.\n new mongo.DBRef(collectionName, id, dbName)\n new mongo.Binary(buffer) // takes a string or Buffer\n new mongo.Code(code, [context])\n new mongo.Symbol(string)\n new mongo.MinKey()\n new mongo.MaxKey()\n new mongo.Double(number)\t// Force double storage\n```\n\nThe C/C++ bson parser/serializer\n--------------------------------\n\nIf you are running a version of this library has the C/C++ parser compiled, to enable the driver to use the C/C++ bson parser pass it the option native_parser:true like below\n\n```javascript\n // using native_parser:\n var client = new Db('integration_tests_20',\n new Server(\"127.0.0.1\", 27017),\n {native_parser:true});\n```\n\nThe C++ parser uses the js objects both for serialization and deserialization.\n\nGitHub information\n==================\n\nThe source code is available at http://github.com/mongodb/node-mongodb-native.\nYou can either clone the repository or download a tarball of the latest release.\n\nOnce you have the source you can test the driver by running\n\n $ make test\n\nin the main directory. You will need to have a mongo instance running on localhost for the integration tests to pass.\n\nExamples\n========\n\nFor examples look in the examples/ directory. You can execute the examples using node.\n\n $ cd examples\n $ node queries.js\n\nGridStore\n=========\n\nThe GridStore class allows for storage of binary files in mongoDB using the mongoDB defined files and chunks collection definition.\n\nFor more information have a look at [Gridstore](https://github.com/mongodb/node-mongodb-native/blob/master/docs/gridfs.md)\n\nReplicasets\n===========\nFor more information about how to connect to a replicaset have a look at [Replicasets](https://github.com/mongodb/node-mongodb-native/blob/master/docs/replicaset.md)\n\nPrimary Key Factories\n---------------------\n\nDefining your own primary key factory allows you to generate your own series of id's\n(this could f.ex be to use something like ISBN numbers). The generated the id needs to be a 12 byte long \"string\".\n\nSimple example below\n\n```javascript\n // Custom factory (need to provide a 12 byte array);\n CustomPKFactory = function() {}\n CustomPKFactory.prototype = new Object();\n CustomPKFactory.createPk = function() {\n return new ObjectID(\"aaaaaaaaaaaa\");\n }\n\n var p_client = new Db('integration_tests_20', new Server(\"127.0.0.1\", 27017, {}), {'pk':CustomPKFactory});\n p_client.open(function(err, p_client) {\n p_client.dropDatabase(function(err, done) {\n p_client.createCollection('test_custom_key', function(err, collection) {\n collection.insert({'a':1}, function(err, docs) {\n collection.find({'_id':new ObjectID(\"aaaaaaaaaaaa\")}, function(err, cursor) {\n cursor.toArray(function(err, items) {\n test.assertEquals(1, items.length);\n\n // Let's close the db\n p_client.close();\n });\n });\n });\n });\n });\n });\n```\n\nStrict mode\n-----------\n\nEach database has an optional strict mode. If it is set then asking for a collection\nthat does not exist will return an Error object in the callback. Similarly if you\nattempt to create a collection that already exists. Strict is provided for convenience.\n\n```javascript\n var error_client = new Db('integration_tests_', new Server(\"127.0.0.1\", 27017, {auto_reconnect: false}), {strict:true});\n test.assertEquals(true, error_client.strict);\n\n error_client.open(function(err, error_client) {\n error_client.collection('does-not-exist', function(err, collection) {\n test.assertTrue(err instanceof Error);\n test.assertEquals(\"Collection does-not-exist does not exist. Currently in strict mode.\", err.message);\n });\n\n error_client.createCollection('test_strict_access_collection', function(err, collection) {\n error_client.collection('test_strict_access_collection', function(err, collection) {\n test.assertTrue(collection instanceof Collection);\n // Let's close the db\n error_client.close();\n });\n });\n });\n```\n\nDocumentation\n=============\n\nIf this document doesn't answer your questions, see the source of\n[Collection](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js)\nor [Cursor](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/cursor.js),\nor the documentation at MongoDB for query and update formats.\n\nFind\n----\n\nThe find method is actually a factory method to create\nCursor objects. A Cursor lazily uses the connection the first time\nyou call `nextObject`, `each`, or `toArray`.\n\nThe basic operation on a cursor is the `nextObject` method\nthat fetches the next matching document from the database. The convenience\nmethods `each` and `toArray` call `nextObject` until the cursor is exhausted.\n\nSignatures:\n\n```javascript\n var cursor = collection.find(query, [fields], options);\n cursor.sort(fields).limit(n).skip(m).\n\n cursor.nextObject(function(err, doc) {});\n cursor.each(function(err, doc) {});\n cursor.toArray(function(err, docs) {});\n\n cursor.rewind() // reset the cursor to its initial state.\n```\n\nUseful chainable methods of cursor. These can optionally be options of `find` instead of method calls:\n\n* `.limit(n).skip(m)` to control paging.\n* `.sort(fields)` Order by the given fields. There are several equivalent syntaxes:\n * `.sort({field1: -1, field2: 1})` descending by field1, then ascending by field2.\n * `.sort([['field1', 'desc'], ['field2', 'asc']])` same as above\n * `.sort([['field1', 'desc'], 'field2'])` same as above\n * `.sort('field1')` ascending by field1\n\nOther options of `find`:\n\n* `fields` the fields to fetch (to avoid transferring the entire document)\n* `tailable` if true, makes the cursor [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors).\n* `batchSize` The number of the subset of results to request the database\nto return for every request. This should initially be greater than 1 otherwise\nthe database will automatically close the cursor. The batch size can be set to 1\nwith `batchSize(n, function(err){})` after performing the initial query to the database.\n* `hint` See [Optimization: hint](http://www.mongodb.org/display/DOCS/Optimization#Optimization-Hint).\n* `explain` turns this into an explain query. You can also call\n`explain()` on any cursor to fetch the explanation.\n* `snapshot` prevents documents that are updated while the query is active\nfrom being returned multiple times. See more\n[details about query snapshots](http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database).\n* `timeout` if false, asks MongoDb not to time out this cursor after an\ninactivity period.\n\n\nFor information on how to create queries, see the\n[MongoDB section on querying](http://www.mongodb.org/display/DOCS/Querying).\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.find({}, {limit:10}).toArray(function(err, docs) {\n console.dir(docs);\n });\n });\n```\n\nInsert\n------\n\nSignature:\n\n```javascript\n collection.insert(docs, options, [callback]);\n```\n\nwhere `docs` can be a single document or an array of documents.\n\nUseful options:\n\n* `safe:true` Should always set if you have a callback.\n\nSee also: [MongoDB docs for insert](http://www.mongodb.org/display/DOCS/Inserting).\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {w: 1}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.insert({hello: 'world'}, {safe:true},\n function(err, objects) {\n if (err) console.warn(err.message);\n if (err && err.message.indexOf('E11000 ') !== -1) {\n // this _id was already inserted in the database\n }\n });\n });\n```\n\nNote that there's no reason to pass a callback to the insert or update commands\nunless you use the `safe:true` option. If you don't specify `safe:true`, then\nyour callback will be called immediately.\n\nUpdate; update and insert (upsert)\n----------------------------------\n\nThe update operation will update the first document that matches your query\n(or all documents that match if you use `multi:true`).\nIf `safe:true`, `upsert` is not set, and no documents match, your callback will return 0 documents updated.\n\nSee the [MongoDB docs](http://www.mongodb.org/display/DOCS/Updating) for\nthe modifier (`$inc`, `$set`, `$push`, etc.) formats.\n\nSignature:\n\n```javascript\n collection.update(criteria, objNew, options, [callback]);\n```\n\nUseful options:\n\n* `safe:true` Should always set if you have a callback.\n* `multi:true` If set, all matching documents are updated, not just the first.\n* `upsert:true` Atomically inserts the document if no documents matched.\n\nExample for `update`:\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {w: 1}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.update({hi: 'here'}, {$set: {hi: 'there'}}, {safe:true},\n function(err) {\n if (err) console.warn(err.message);\n else console.log('successfully updated');\n });\n });\n```\n\nFind and modify\n---------------\n\n`findAndModify` is like `update`, but it also gives the updated document to\nyour callback. But there are a few key differences between findAndModify and\nupdate:\n\n 1. The signatures differ.\n 2. You can only findAndModify a single item, not multiple items.\n\nSignature:\n\n```javascript\n collection.findAndModify(query, sort, update, options, callback)\n```\n\nThe sort parameter is used to specify which object to operate on, if more than\none document matches. It takes the same format as the cursor sort (see\nConnection.find above).\n\nSee the\n[MongoDB docs for findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command)\nfor more details.\n\nUseful options:\n\n* `remove:true` set to a true to remove the object before returning\n* `new:true` set to true if you want to return the modified object rather than the original. Ignored for remove.\n* `upsert:true` Atomically inserts the document if no documents matched.\n\nExample for `findAndModify`:\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {w: 1}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.findAndModify({hello: 'world'}, [['_id','asc']], {$set: {hi: 'there'}}, {},\n function(err, object) {\n if (err) console.warn(err.message);\n else console.dir(object); // undefined if no matching object exists.\n });\n });\n```\n\nSave\n----\n\nThe `save` method is a shorthand for upsert if the document contains an\n`_id`, or an insert if there is no `_id`.\n\nSponsors\n========\nJust as Felix Geisendörfer I'm also working on the driver for my own startup and this driver is a big project that also benefits other companies who are using MongoDB.\n\nIf your company could benefit from a even better-engineered node.js mongodb driver I would appreciate any type of sponsorship you may be able to provide. All the sponsors will get a lifetime display in this readme, priority support and help on problems and votes on the roadmap decisions for the driver. If you are interested contact me on [christkv AT g m a i l.com](mailto:christkv@gmail.com) for details.\n\nAnd I'm very thankful for code contributions. If you are interested in working on features please contact me so we can discuss API design and testing.\n\nRelease Notes\n=============\n\nSee HISTORY\n\nCredits\n=======\n\n1. [10gen](http://github.com/mongodb/mongo-ruby-driver/)\n2. [Google Closure Library](http://code.google.com/closure/library/)\n3. [Jonas Raoni Soares Silva](http://jsfromhell.com/classes/binary-parser)\n\nContributors\n============\n\nAaron Heckmann, Christoph Pojer, Pau Ramon Revilla, Nathan White, Emmerman, Seth LaForge, Boris Filipov, Stefan Schärmeli, Tedde Lundgren, renctan, Sergey Ukustov, Ciaran Jessup, kuno, srimonti, Erik Abele, Pratik Daga, Slobodan Utvic, Kristina Chodorow, Yonathan Randolph, Brian Noguchi, Sam Epstein, James Harrison Fisher, Vladimir Dronnikov, Ben Hockey, Henrik Johansson, Simon Weare, Alex Gorbatchev, Shimon Doodkin, Kyle Mueller, Eran Hammer-Lahav, Marcin Ciszak, François de Metz, Vinay Pulim, nstielau, Adam Wiggins, entrinzikyl, Jeremy Selier, Ian Millington, Public Keating, andrewjstone, Christopher Stott, Corey Jewett, brettkiefer, Rob Holland, Senmiao Liu, heroic, gitfy\n\nLicense\n=======\n\n Copyright 2009 - 2012 Christian Amor Kvalheim.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n", + "readmeFilename": "Readme.md", + "_id": "mongodb@1.3.5", + "dist": { + "shasum": "5d592ae4e12301769a065d6693d56fa21564d5aa" + }, + "_from": "mongodb@1.3.5", + "_resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.3.5.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore new file mode 100644 index 0000000..be106ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore @@ -0,0 +1,2 @@ +*.sw* +node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml new file mode 100644 index 0000000..09c230f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md new file mode 100644 index 0000000..4fbf338 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md @@ -0,0 +1,16 @@ + +0.1.1 / 2012-12-21 +================== + + * added; map support + +0.1.0 / 2012-12-13 +================== + + * added; set('array.property', val, object) support + * added; get('array.property', object) support + +0.0.1 / 2012-11-03 +================== + + * initial release diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE new file mode 100644 index 0000000..38c529d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2012 [Aaron Heckmann](aaron.heckmann+github@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile new file mode 100644 index 0000000..b0bb081 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile @@ -0,0 +1,5 @@ + +test: + @node_modules/mocha/bin/mocha -A $(T) + +.PHONY: test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md new file mode 100644 index 0000000..9831dd0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md @@ -0,0 +1,278 @@ +#mpath + +{G,S}et javascript object values using MongoDB-like path notation. + +###Getting + +```js +var mpath = require('mpath'); + +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.get('comments.1.title', obj) // 'exciting!' +``` + +`mpath.get` supports array property notation as well. + +```js +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.get('comments.title', obj) // ['funny', 'exciting!'] +``` + +Array property and indexing syntax, when used together, are very powerful. + +```js +var obj = { + array: [ + { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} + , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }} + , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} + , { o: { array: [{x: null }] }} + , { o: { array: [{y: 3 }] }} + , { o: { array: [3, 0, null] }} + , { o: { name: 'ha' }} + ]; +} + +var found = mpath.get('array.o.array.x.b.1', obj); + +console.log(found); // prints.. + + [ [6, undefined] + , [2, undefined, undefined] + , [null, 1] + , [null] + , [undefined] + , [undefined, undefined, undefined] + , undefined + ] + +``` + +#####Field selection rules: + +The following rules are iteratively applied to each `segment` in the passed `path`. For example: + +```js +var path = 'one.two.14'; // path +'one' // segment 0 +'two' // segment 1 +14 // segment 2 +``` + +- 1) when value of the segment parent is not an array, return the value of `parent.segment` +- 2) when value of the segment parent is an array + - a) if the segment is an integer, replace the parent array with the value at `parent[segment]` + - b) if not an integer, keep the array but replace each array `item` with the value returned from calling `get(remainingSegments, item)` or undefined if falsey. + +#####Maps + +`mpath.get` also accepts an optional `map` argument which receives each individual found value. The value returned from the `map` function will be used in the original found values place. + +```js +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.get('comments.title', obj, function (val) { + return 'funny' == val + ? 'amusing' + : val; +}); +// ['amusing', 'exciting!'] +``` + +###Setting + +```js +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.set('comments.1.title', 'hilarious', obj) +console.log(obj.comments[1].title) // 'hilarious' +``` + +`mpath.set` supports the same array property notation as `mpath.get`. + +```js +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.set('comments.title', ['hilarious', 'fruity'], obj); + +console.log(obj); // prints.. + + { comments: [ + { title: 'hilarious' }, + { title: 'fruity' } + ]} +``` + +Array property and indexing syntax can be used together also when setting. + +```js +var obj = { + array: [ + { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} + , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }} + , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} + , { o: { array: [{x: null }] }} + , { o: { array: [{y: 3 }] }} + , { o: { array: [3, 0, null] }} + , { o: { name: 'ha' }} + ] +} + +mpath.set('array.1.o', 'this was changed', obj); + +console.log(require('util').inspect(obj, false, 1000)); // prints.. + +{ + array: [ + { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} + , { o: 'this was changed' } + , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} + , { o: { array: [{x: null }] }} + , { o: { array: [{y: 3 }] }} + , { o: { array: [3, 0, null] }} + , { o: { name: 'ha' }} + ]; +} + +mpath.set('array.o.array.x', 'this was changed too', obj); + +console.log(require('util').inspect(obj, false, 1000)); // prints.. + +{ + array: [ + { o: { array: [{x: 'this was changed too'}, { y: 10, x: 'this was changed too'} ] }} + , { o: 'this was changed' } + , { o: { array: [{x: 'this was changed too'}, { x: 'this was changed too'}] }} + , { o: { array: [{x: 'this was changed too'}] }} + , { o: { array: [{x: 'this was changed too', y: 3 }] }} + , { o: { array: [3, 0, null] }} + , { o: { name: 'ha' }} + ]; +} +``` + +####Setting arrays + +By default, setting a property within an array to another array results in each element of the new array being set to the item in the destination array at the matching index. An example is helpful. + +```js +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.set('comments.title', ['hilarious', 'fruity'], obj); + +console.log(obj); // prints.. + + { comments: [ + { title: 'hilarious' }, + { title: 'fruity' } + ]} +``` + +If we do not desire this destructuring-like assignment behavior we may instead specify the `$` operator in the path being set to force the array to be copied directly. + +```js +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.set('comments.$.title', ['hilarious', 'fruity'], obj); + +console.log(obj); // prints.. + + { comments: [ + { title: ['hilarious', 'fruity'] }, + { title: ['hilarious', 'fruity'] } + ]} +``` + +####Field assignment rules + +The rules utilized mirror those used on `mpath.get`, meaning we can take values returned from `mpath.get`, update them, and reassign them using `mpath.set`. Note that setting nested arrays of arrays can get unweildy quickly. Check out the [tests](https://github.com/aheckmann/mpath/blob/master/test/index.js) for more extreme examples. + +#####Maps + +`mpath.set` also accepts an optional `map` argument which receives each individual value being set. The value returned from the `map` function will be used in the original values place. + +```js +var obj = { + comments: [ + { title: 'funny' }, + { title: 'exciting!' } + ] +} + +mpath.set('comments.title', ['hilarious', 'fruity'], obj, function (val) { + return val.length; +}); + +console.log(obj); // prints.. + + { comments: [ + { title: 9 }, + { title: 6 } + ]} +``` + +### Custom object types + +Sometimes you may want to enact the same functionality on custom object types that store all their real data internally, say for an ODM type object. No fear, `mpath` has you covered. Simply pass the name of the property being used to store the internal data and it will be traversed instead: + +```js +var mpath = require('mpath'); + +var obj = { + comments: [ + { title: 'exciting!', _doc: { title: 'great!' }} + ] +} + +mpath.get('comments.0.title', obj, '_doc') // 'great!' +mpath.set('comments.0.title', 'nov 3rd', obj, '_doc') +mpath.get('comments.0.title', obj, '_doc') // 'nov 3rd' +mpath.get('comments.0.title', obj) // 'exciting' +``` + +When used with a `map`, the `map` argument comes last. + +```js +mpath.get(path, obj, '_doc', map); +mpath.set(path, val, obj, '_doc', map); +``` + +[LICENSE](https://github.com/aheckmann/mpath/blob/master/LICENSE) + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js new file mode 100644 index 0000000..f7b65dd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js @@ -0,0 +1 @@ +module.exports = exports = require('./lib'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js new file mode 100644 index 0000000..24e1e83 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js @@ -0,0 +1,183 @@ + +/** + * Returns the value of object `o` at the given `path`. + * + * ####Example: + * + * var obj = { + * comments: [ + * { title: 'exciting!', _doc: { title: 'great!' }} + * , { title: 'number dos' } + * ] + * } + * + * mpath.get('comments.0.title', o) // 'exciting!' + * mpath.get('comments.0.title', o, '_doc') // 'great!' + * mpath.get('comments.title', o) // ['exciting!', 'number dos'] + * + * // summary + * mpath.get(path, o) + * mpath.get(path, o, special) + * mpath.get(path, o, map) + * mpath.get(path, o, special, map) + * + * @param {String} path + * @param {Object} o + * @param {String} [special] When this property name is present on any object in the path, walking will continue on the value of this property. + * @param {Function} [map] Optional function which receives each individual found value. The value returned from `map` is used in the original values place. + */ + +exports.get = function (path, o, special, map) { + if ('function' == typeof special) { + map = special; + special = undefined; + } + + map || (map = K); + + var parts = 'string' == typeof path + ? path.split('.') + : path + + if (!Array.isArray(parts)) { + throw new TypeError('Invalid `path`. Must be either string or array'); + } + + var obj = o + , part; + + for (var i = 0; i < parts.length; ++i) { + part = parts[i]; + + if (Array.isArray(obj) && !/^\d+$/.test(part)) { + // reading a property from the array items + var paths = parts.slice(i); + + return obj.map(function (item) { + return item + ? exports.get(paths, item, special, map) + : map(undefined); + }); + } + + obj = special && obj[special] + ? obj[special][part] + : obj[part]; + + if (!obj) return map(obj); + } + + return map(obj); +} + +/** + * Sets the `val` at the given `path` of object `o`. + * + * @param {String} path + * @param {Anything} val + * @param {Object} o + * @param {String} [special] When this property name is present on any object in the path, walking will continue on the value of this property. + * @param {Function} [map] Optional function which is passed each individual value before setting it. The value returned from `map` is used in the original values place. + + */ + +exports.set = function (path, val, o, special, map, _copying) { + if ('function' == typeof special) { + map = special; + special = undefined; + } + + map || (map = K); + + var parts = 'string' == typeof path + ? path.split('.') + : path + + if (!Array.isArray(parts)) { + throw new TypeError('Invalid `path`. Must be either string or array'); + } + + if (null == o) return; + + // the existance of $ in a path tells us if the user desires + // the copying of an array instead of setting each value of + // the array to the one by one to matching positions of the + // current array. + var copy = _copying || /\$/.test(path) + , obj = o + , part + + for (var i = 0, len = parts.length - 1; i < len; ++i) { + part = parts[i]; + + if ('$' == part) { + if (i == len - 1) { + break; + } else { + continue; + } + } + + if (Array.isArray(obj) && !/^\d+$/.test(part)) { + var paths = parts.slice(i); + if (!copy && Array.isArray(val)) { + for (var j = 0; j < obj.length && j < val.length; ++j) { + // assignment of single values of array + exports.set(paths, val[j], obj[j], special, map, copy); + } + } else { + for (var j = 0; j < obj.length; ++j) { + // assignment of entire value + exports.set(paths, val, obj[j], special, map, copy); + } + } + return; + } + + obj = special && obj[special] + ? obj[special][part] + : obj[part]; + + if (!obj) return; + } + + // process the last property of the path + + part = parts[len]; + + // use the special property if exists + if (special && obj[special]) { + obj = obj[special]; + } + + // set the value on the last branch + if (Array.isArray(obj) && !/^\d+$/.test(part)) { + if (!copy && Array.isArray(val)) { + for (var item, j = 0; j < obj.length && j < val.length; ++j) { + item = obj[j]; + if (item) { + if (item[special]) item = item[special]; + item[part] = map(val[j]); + } + } + } else { + for (var j = 0; j < obj.length; ++j) { + item = obj[j]; + if (item) { + if (item[special]) item = item[special]; + item[part] = map(val); + } + } + } + } else { + obj[part] = map(val); + } +} + +/*! + * Returns the value passed to it. + */ + +function K (v) { + return v; +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json new file mode 100644 index 0000000..2e88fbd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json @@ -0,0 +1,38 @@ +{ + "name": "mpath", + "version": "0.1.1", + "description": "{G,S}et object values using MongoDB path notation", + "main": "index.js", + "scripts": { + "test": "make test" + }, + "repository": { + "type": "git", + "url": "git://github.com/aheckmann/mpath.git" + }, + "keywords": [ + "mongodb", + "path", + "get", + "set" + ], + "author": { + "name": "Aaron Heckmann", + "email": "aaron.heckmann+github@gmail.com" + }, + "license": "MIT", + "devDependencies": { + "mocha": "1.6.0" + }, + "readme": "#mpath\n\n{G,S}et javascript object values using MongoDB-like path notation.\n\n###Getting\n\n```js\nvar mpath = require('mpath');\n\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.get('comments.1.title', obj) // 'exciting!'\n```\n\n`mpath.get` supports array property notation as well.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.get('comments.title', obj) // ['funny', 'exciting!']\n```\n\nArray property and indexing syntax, when used together, are very powerful.\n\n```js\nvar obj = {\n array: [\n { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }}\n , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }}\n , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }}\n , { o: { array: [{x: null }] }}\n , { o: { array: [{y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ];\n}\n\nvar found = mpath.get('array.o.array.x.b.1', obj);\n\nconsole.log(found); // prints..\n\n [ [6, undefined]\n , [2, undefined, undefined]\n , [null, 1]\n , [null]\n , [undefined]\n , [undefined, undefined, undefined]\n , undefined\n ]\n\n```\n\n#####Field selection rules:\n\nThe following rules are iteratively applied to each `segment` in the passed `path`. For example:\n\n```js\nvar path = 'one.two.14'; // path\n'one' // segment 0\n'two' // segment 1\n14 // segment 2\n```\n\n- 1) when value of the segment parent is not an array, return the value of `parent.segment`\n- 2) when value of the segment parent is an array\n - a) if the segment is an integer, replace the parent array with the value at `parent[segment]`\n - b) if not an integer, keep the array but replace each array `item` with the value returned from calling `get(remainingSegments, item)` or undefined if falsey.\n\n#####Maps\n\n`mpath.get` also accepts an optional `map` argument which receives each individual found value. The value returned from the `map` function will be used in the original found values place.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.get('comments.title', obj, function (val) {\n return 'funny' == val\n ? 'amusing'\n : val;\n});\n// ['amusing', 'exciting!']\n```\n\n###Setting\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.1.title', 'hilarious', obj)\nconsole.log(obj.comments[1].title) // 'hilarious'\n```\n\n`mpath.set` supports the same array property notation as `mpath.get`.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.title', ['hilarious', 'fruity'], obj);\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: 'hilarious' },\n { title: 'fruity' }\n ]}\n```\n\nArray property and indexing syntax can be used together also when setting.\n\n```js\nvar obj = {\n array: [\n { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }}\n , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }}\n , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }}\n , { o: { array: [{x: null }] }}\n , { o: { array: [{y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ]\n}\n\nmpath.set('array.1.o', 'this was changed', obj);\n\nconsole.log(require('util').inspect(obj, false, 1000)); // prints..\n\n{\n array: [\n { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }}\n , { o: 'this was changed' }\n , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }}\n , { o: { array: [{x: null }] }}\n , { o: { array: [{y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ];\n}\n\nmpath.set('array.o.array.x', 'this was changed too', obj);\n\nconsole.log(require('util').inspect(obj, false, 1000)); // prints..\n\n{\n array: [\n { o: { array: [{x: 'this was changed too'}, { y: 10, x: 'this was changed too'} ] }}\n , { o: 'this was changed' }\n , { o: { array: [{x: 'this was changed too'}, { x: 'this was changed too'}] }}\n , { o: { array: [{x: 'this was changed too'}] }}\n , { o: { array: [{x: 'this was changed too', y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ];\n}\n```\n\n####Setting arrays\n\nBy default, setting a property within an array to another array results in each element of the new array being set to the item in the destination array at the matching index. An example is helpful.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.title', ['hilarious', 'fruity'], obj);\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: 'hilarious' },\n { title: 'fruity' }\n ]}\n```\n\nIf we do not desire this destructuring-like assignment behavior we may instead specify the `$` operator in the path being set to force the array to be copied directly.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.$.title', ['hilarious', 'fruity'], obj);\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: ['hilarious', 'fruity'] },\n { title: ['hilarious', 'fruity'] }\n ]}\n```\n\n####Field assignment rules\n\nThe rules utilized mirror those used on `mpath.get`, meaning we can take values returned from `mpath.get`, update them, and reassign them using `mpath.set`. Note that setting nested arrays of arrays can get unweildy quickly. Check out the [tests](https://github.com/aheckmann/mpath/blob/master/test/index.js) for more extreme examples.\n\n#####Maps\n\n`mpath.set` also accepts an optional `map` argument which receives each individual value being set. The value returned from the `map` function will be used in the original values place.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.title', ['hilarious', 'fruity'], obj, function (val) {\n return val.length;\n});\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: 9 },\n { title: 6 }\n ]}\n```\n\n### Custom object types\n\nSometimes you may want to enact the same functionality on custom object types that store all their real data internally, say for an ODM type object. No fear, `mpath` has you covered. Simply pass the name of the property being used to store the internal data and it will be traversed instead:\n\n```js\nvar mpath = require('mpath');\n\nvar obj = {\n comments: [\n { title: 'exciting!', _doc: { title: 'great!' }}\n ]\n}\n\nmpath.get('comments.0.title', obj, '_doc') // 'great!'\nmpath.set('comments.0.title', 'nov 3rd', obj, '_doc')\nmpath.get('comments.0.title', obj, '_doc') // 'nov 3rd'\nmpath.get('comments.0.title', obj) // 'exciting'\n```\n\nWhen used with a `map`, the `map` argument comes last.\n\n```js\nmpath.get(path, obj, '_doc', map);\nmpath.set(path, val, obj, '_doc', map);\n```\n\n[LICENSE](https://github.com/aheckmann/mpath/blob/master/LICENSE)\n\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/aheckmann/mpath/issues" + }, + "_id": "mpath@0.1.1", + "dist": { + "shasum": "7ab5054e3b040997ab8aa88fddc1ee3925ee8f64" + }, + "_from": "mpath@0.1.1", + "_resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js new file mode 100644 index 0000000..98e119a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js @@ -0,0 +1,1630 @@ + +/** + * Test dependencies. + */ + +var mpath = require('../') +var assert = require('assert') + +/** + * logging helper + */ + +function log (o) { + console.log(); + console.log(require('util').inspect(o, false, 1000)); +} + +/** + * special path for override tests + */ + +var special = '_doc'; + +/** + * Tests + */ + +describe('mpath', function(){ + + /** + * test doc creator + */ + + function doc () { + var o = { first: { second: { third: [3,{ name: 'aaron' }, 9] }}}; + o.comments = [ + { name: 'one' } + , { name: 'two', _doc: { name: '2' }} + , { name: 'three' + , comments: [{},{ comments: [{val: 'twoo'}]}] + , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}] }} + ]; + o.name = 'jiro'; + o.array = [ + { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} + , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: {b: 'hi'}}] }} + , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} + , { o: { array: [{x: null }] }} + , { o: { array: [{y: 3 }] }} + , { o: { array: [3, 0, null] }} + , { o: { name: 'ha' }} + ]; + o.arr = [ + { arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true } + ] + return o; + } + + describe('get', function(){ + var o = doc(); + + it('`path` must be a string or array', function(done){ + assert.throws(function () { + mpath.get({}, o); + }, /Must be either string or array/); + assert.throws(function () { + mpath.get(4, o); + }, /Must be either string or array/); + assert.throws(function () { + mpath.get(function(){}, o); + }, /Must be either string or array/); + assert.throws(function () { + mpath.get(/asdf/, o); + }, /Must be either string or array/); + assert.throws(function () { + mpath.get(Math, o); + }, /Must be either string or array/); + assert.throws(function () { + mpath.get(Buffer, o); + }, /Must be either string or array/); + assert.doesNotThrow(function () { + mpath.get('string', o); + }); + assert.doesNotThrow(function () { + mpath.get([], o); + }); + done(); + }) + + describe('without `special`', function(){ + it('works', function(done){ + assert.equal('jiro', mpath.get('name', o)); + + assert.deepEqual( + { second: { third: [3,{ name: 'aaron' }, 9] }} + , mpath.get('first', o) + ); + + assert.deepEqual( + { third: [3,{ name: 'aaron' }, 9] } + , mpath.get('first.second', o) + ); + + assert.deepEqual( + [3,{ name: 'aaron' }, 9] + , mpath.get('first.second.third', o) + ); + + assert.deepEqual( + 3 + , mpath.get('first.second.third.0', o) + ); + + assert.deepEqual( + 9 + , mpath.get('first.second.third.2', o) + ); + + assert.deepEqual( + { name: 'aaron' } + , mpath.get('first.second.third.1', o) + ); + + assert.deepEqual( + 'aaron' + , mpath.get('first.second.third.1.name', o) + ); + + assert.deepEqual([ + { name: 'one' } + , { name: 'two', _doc: { name: '2' }} + , { name: 'three' + , comments: [{},{ comments: [{val: 'twoo'}]}] + , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}]}}], + mpath.get('comments', o)); + + assert.deepEqual({ name: 'one' }, mpath.get('comments.0', o)); + assert.deepEqual('one', mpath.get('comments.0.name', o)); + assert.deepEqual('two', mpath.get('comments.1.name', o)); + assert.deepEqual('three', mpath.get('comments.2.name', o)); + + assert.deepEqual([{},{ comments: [{val: 'twoo'}]}] + , mpath.get('comments.2.comments', o)); + + assert.deepEqual({ comments: [{val: 'twoo'}]} + , mpath.get('comments.2.comments.1', o)); + + assert.deepEqual('twoo', mpath.get('comments.2.comments.1.comments.0.val', o)); + + done(); + }) + + it('handles array.property dot-notation', function(done){ + assert.deepEqual( + ['one', 'two', 'three'] + , mpath.get('comments.name', o) + ); + done(); + }) + + it('handles array.array notation', function(done){ + assert.deepEqual( + [undefined, undefined, [{}, {comments:[{val:'twoo'}]}]] + , mpath.get('comments.comments', o) + ); + done(); + }) + + it('handles prop.prop.prop.arrayProperty notation', function(done){ + assert.deepEqual( + [undefined, 'aaron', undefined] + , mpath.get('first.second.third.name', o) + ); + assert.deepEqual( + [1, 'aaron', 1] + , mpath.get('first.second.third.name', o, function (v) { + return undefined === v ? 1 : v; + }) + ); + done(); + }) + + it('handles array.prop.array', function(done){ + assert.deepEqual( + [ [{x: {b: [4,6,8]}}, { y: 10} ] + , [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: {b: 'hi'}}] + , [{x: {b: null }}, { x: { b: [null, 1]}}] + , [{x: null }] + , [{y: 3 }] + , [3, 0, null] + , undefined + ] + , mpath.get('array.o.array', o) + ); + done(); + }) + + it('handles array.prop.array.index', function(done){ + assert.deepEqual( + [ {x: {b: [4,6,8]}} + , {x: {b: [1,2,3]}} + , {x: {b: null }} + , {x: null } + , {y: 3 } + , 3 + , undefined + ] + , mpath.get('array.o.array.0', o) + ); + done(); + }) + + it('handles array.prop.array.index.prop', function(done){ + assert.deepEqual( + [ {b: [4,6,8]} + , {b: [1,2,3]} + , {b: null } + , null + , undefined + , undefined + , undefined + ] + , mpath.get('array.o.array.0.x', o) + ); + done(); + }) + + it('handles array.prop.array.prop', function(done){ + assert.deepEqual( + [ [undefined, 10 ] + , [undefined, undefined, undefined] + , [undefined, undefined] + , [undefined] + , [3] + , [undefined, undefined, undefined] + , undefined + ] + , mpath.get('array.o.array.y', o) + ); + assert.deepEqual( + [ [{b: [4,6,8]}, undefined] + , [{b: [1,2,3]}, {z: 10 }, {b: 'hi'}] + , [{b: null }, { b: [null, 1]}] + , [null] + , [undefined] + , [undefined, undefined, undefined] + , undefined + ] + , mpath.get('array.o.array.x', o) + ); + done(); + }) + + it('handles array.prop.array.prop.prop', function(done){ + assert.deepEqual( + [ [[4,6,8], undefined] + , [[1,2,3], undefined, 'hi'] + , [null, [null, 1]] + , [null] + , [undefined] + , [undefined, undefined, undefined] + , undefined + ] + , mpath.get('array.o.array.x.b', o) + ); + done(); + }) + + it('handles array.prop.array.prop.prop.index', function(done){ + assert.deepEqual( + [ [6, undefined] + , [2, undefined, 'i'] // undocumented feature (string indexing) + , [null, 1] + , [null] + , [undefined] + , [undefined, undefined, undefined] + , undefined + ] + , mpath.get('array.o.array.x.b.1', o) + ); + assert.deepEqual( + [ [6, 0] + , [2, 0, 'i'] // undocumented feature (string indexing) + , [null, 1] + , [null] + , [0] + , [0, 0, 0] + , 0 + ] + , mpath.get('array.o.array.x.b.1', o, function (v) { + return undefined === v ? 0 : v; + }) + ); + done(); + }) + + it('handles array.index.prop.prop', function(done){ + assert.deepEqual( + [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: {b: 'hi'}}] + , mpath.get('array.1.o.array', o) + ); + assert.deepEqual( + ['hi','hi','hi'] + , mpath.get('array.1.o.array', o, function (v) { + if (Array.isArray(v)) { + return v.map(function (val) { + return 'hi'; + }) + } + return v; + }) + ); + done(); + }) + + it('handles array.array.index', function(done){ + assert.deepEqual( + [{ a: { c: 48 }}, undefined] + , mpath.get('arr.arr.1', o) + ); + assert.deepEqual( + ['woot', undefined] + , mpath.get('arr.arr.1', o, function (v) { + if (v && v.a && v.a.c) return 'woot'; + return v; + }) + ); + done(); + }) + + it('handles array.array.index.prop', function(done){ + assert.deepEqual( + [{ c: 48 }, 'woot'] + , mpath.get('arr.arr.1.a', o, function (v) { + if (undefined === v) return 'woot'; + return v; + }) + ); + assert.deepEqual( + [{ c: 48 }, undefined] + , mpath.get('arr.arr.1.a', o) + ); + mpath.set('arr.arr.1.a', [{c:49},undefined], o) + assert.deepEqual( + [{ c: 49 }, undefined] + , mpath.get('arr.arr.1.a', o) + ); + mpath.set('arr.arr.1.a', [{c:48},undefined], o) + done(); + }) + + it('handles array.array.index.prop.prop', function(done){ + assert.deepEqual( + [48, undefined] + , mpath.get('arr.arr.1.a.c', o) + ); + assert.deepEqual( + [48, 'woot'] + , mpath.get('arr.arr.1.a.c', o, function (v) { + if (undefined === v) return 'woot'; + return v; + }) + ); + done(); + }) + + }) + + describe('with `special`', function(){ + it('works', function(done){ + assert.equal('jiro', mpath.get('name', o, special)); + + assert.deepEqual( + { second: { third: [3,{ name: 'aaron' }, 9] }} + , mpath.get('first', o, special) + ); + + assert.deepEqual( + { third: [3,{ name: 'aaron' }, 9] } + , mpath.get('first.second', o, special) + ); + + assert.deepEqual( + [3,{ name: 'aaron' }, 9] + , mpath.get('first.second.third', o, special) + ); + + assert.deepEqual( + 3 + , mpath.get('first.second.third.0', o, special) + ); + + assert.deepEqual( + 4 + , mpath.get('first.second.third.0', o, special, function (v) { + return 3 === v ? 4 : v; + }) + ); + + assert.deepEqual( + 9 + , mpath.get('first.second.third.2', o, special) + ); + + assert.deepEqual( + { name: 'aaron' } + , mpath.get('first.second.third.1', o, special) + ); + + assert.deepEqual( + 'aaron' + , mpath.get('first.second.third.1.name', o, special) + ); + + assert.deepEqual([ + { name: 'one' } + , { name: 'two', _doc: { name: '2' }} + , { name: 'three' + , comments: [{},{ comments: [{val: 'twoo'}]}] + , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}]}}], + mpath.get('comments', o, special)); + + assert.deepEqual({ name: 'one' }, mpath.get('comments.0', o, special)); + assert.deepEqual('one', mpath.get('comments.0.name', o, special)); + assert.deepEqual('2', mpath.get('comments.1.name', o, special)); + assert.deepEqual('3', mpath.get('comments.2.name', o, special)); + assert.deepEqual('nice', mpath.get('comments.2.name', o, special, function (v) { + return '3' === v ? 'nice' : v; + })); + + assert.deepEqual([{},{ _doc: { comments: [{ val: 2 }] }}] + , mpath.get('comments.2.comments', o, special)); + + assert.deepEqual({ _doc: { comments: [{val: 2}]}} + , mpath.get('comments.2.comments.1', o, special)); + + assert.deepEqual(2, mpath.get('comments.2.comments.1.comments.0.val', o, special)); + done(); + }) + + it('handles array.property dot-notation', function(done){ + assert.deepEqual( + ['one', '2', '3'] + , mpath.get('comments.name', o, special) + ); + assert.deepEqual( + ['one', 2, '3'] + , mpath.get('comments.name', o, special, function (v) { + return '2' === v ? 2 : v + }) + ); + done(); + }) + + it('handles array.array notation', function(done){ + assert.deepEqual( + [undefined, undefined, [{}, {_doc: { comments:[{val:2}]}}]] + , mpath.get('comments.comments', o, special) + ); + done(); + }) + + it('handles array.array.index.array', function(done){ + assert.deepEqual( + [undefined, undefined, [{val:2}]] + , mpath.get('comments.comments.1.comments', o, special) + ); + done(); + }) + + it('handles array.array.index.array.prop', function(done){ + assert.deepEqual( + [undefined, undefined, [2]] + , mpath.get('comments.comments.1.comments.val', o, special) + ); + assert.deepEqual( + ['nil', 'nil', [2]] + , mpath.get('comments.comments.1.comments.val', o, special, function (v) { + return undefined === v ? 'nil' : v; + }) + ); + done(); + }) + }) + + }) + + describe('set', function(){ + describe('without `special`', function(){ + var o = doc(); + + it('works', function(done){ + mpath.set('name', 'a new val', o, function (v) { + return 'a new val' === v ? 'changed' : v; + }); + assert.deepEqual('changed', o.name); + + mpath.set('name', 'changed', o); + assert.deepEqual('changed', o.name); + + mpath.set('first.second.third', [1,{name:'x'},9], o); + assert.deepEqual([1,{name:'x'},9], o.first.second.third); + + mpath.set('first.second.third.1.name', 'y', o) + assert.deepEqual([1,{name:'y'},9], o.first.second.third); + + mpath.set('comments.1.name', 'ttwwoo', o); + assert.deepEqual({ name: 'ttwwoo', _doc: { name: '2' }}, o.comments[1]); + + mpath.set('comments.2.comments.1.comments.0.expand', 'added', o); + assert.deepEqual( + { val: 'twoo', expand: 'added'} + , o.comments[2].comments[1].comments[0]); + + mpath.set('comments.2.comments.1.comments.2', 'added', o); + assert.equal(3, o.comments[2].comments[1].comments.length); + assert.deepEqual( + { val: 'twoo', expand: 'added'} + , o.comments[2].comments[1].comments[0]); + assert.deepEqual( + undefined + , o.comments[2].comments[1].comments[1]); + assert.deepEqual( + 'added' + , o.comments[2].comments[1].comments[2]); + + done(); + }) + + describe('array.path', function(){ + describe('with single non-array value', function(){ + it('works', function(done){ + mpath.set('arr.yep', false, o, function (v) { + return false === v ? true: v; + }); + assert.deepEqual([ + { yep: true, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true } + ], o.arr); + + mpath.set('arr.yep', false, o); + + assert.deepEqual([ + { yep: false, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: false } + ], o.arr); + + done(); + }) + }) + describe('with array of values', function(){ + it('that are equal in length', function(done){ + mpath.set('arr.yep', ['one',2], o, function (v) { + return 'one' === v ? 1 : v; + }); + assert.deepEqual([ + { yep: 1, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 2 } + ], o.arr); + mpath.set('arr.yep', ['one',2], o); + + assert.deepEqual([ + { yep: 'one', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 2 } + ], o.arr); + + done(); + }) + + it('that is less than length', function(done){ + mpath.set('arr.yep', [47], o, function (v) { + return 47 === v ? 4 : v; + }); + assert.deepEqual([ + { yep: 4, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 2 } + ], o.arr); + + mpath.set('arr.yep', [47], o); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 2 } + ], o.arr); + + done(); + }) + + it('that is greater than length', function(done){ + mpath.set('arr.yep', [5,6,7], o, function (v) { + return 5 === v ? 'five' : v; + }); + assert.deepEqual([ + { yep: 'five', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 6 } + ], o.arr); + + mpath.set('arr.yep', [5,6,7], o); + assert.deepEqual([ + { yep: 5, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 6 } + ], o.arr); + + done(); + }) + }) + }) + + describe('array.$.path', function(){ + describe('with single non-array value', function(){ + it('copies the value to each item in array', function(done){ + mpath.set('arr.$.yep', {xtra: 'double good'}, o, function (v) { + return v && v.xtra ? 'hi' : v; + }); + assert.deepEqual([ + { yep: 'hi', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 'hi'} + ], o.arr); + + mpath.set('arr.$.yep', {xtra: 'double good'}, o); + assert.deepEqual([ + { yep: {xtra:'double good'}, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: {xtra:'double good'}} + ], o.arr); + + done(); + }) + }) + describe('with array of values', function(){ + it('copies the value to each item in array', function(done){ + mpath.set('arr.$.yep', [15], o, function (v) { + return v.length === 1 ? [] : v; + }); + assert.deepEqual([ + { yep: [], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: []} + ], o.arr); + + mpath.set('arr.$.yep', [15], o); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: [15]} + ], o.arr); + + done(); + }) + }) + }) + + describe('array.index.path', function(){ + it('works', function(done){ + mpath.set('arr.1.yep', 0, o, function (v) { + return 0 === v ? 'zero' : v; + }); + assert.deepEqual([ + { yep: [15] , arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 'zero' } + ], o.arr); + + mpath.set('arr.1.yep', 0, o); + assert.deepEqual([ + { yep: [15] , arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + }) + + describe('array.index.array.path', function(){ + it('with single value', function(done){ + mpath.set('arr.0.arr.e', 35, o, function (v) { + return 35 === v ? 3 : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 47 }, e: 3}, { a: { c: 48 }, e: 3}, { d: 'yep', e: 3 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.0.arr.e', 35, o); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 47 }, e: 35}, { a: { c: 48 }, e: 35}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.0.arr.e', ['a','b'], o, function (v) { + return 'a' === v ? 'x' : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 47 }, e: 'x'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.0.arr.e', ['a','b'], o); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 47 }, e: 'a'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + }) + + describe('array.index.array.path.path', function(){ + it('with single value', function(done){ + mpath.set('arr.0.arr.a.b', 36, o, function (v) { + return 36 === v ? 3 : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 3 }, e: 'a'}, { a: { c: 48, b: 3 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.0.arr.a.b', 36, o); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 36 }, e: 'a'}, { a: { c: 48, b: 36 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.0.arr.a.b', [1,2,3,4], o, function (v) { + return 2 === v ? 'two' : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 1 }, e: 'a'}, { a: { c: 48, b: 'two' }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.0.arr.a.b', [1,2,3,4], o); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 1 }, e: 'a'}, { a: { c: 48, b: 2 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + }) + + describe('array.index.array.$.path.path', function(){ + it('with single value', function(done){ + mpath.set('arr.0.arr.$.a.b', '$', o, function (v) { + return '$' === v ? 'dolla billz' : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: 'dolla billz' }, e: 'a'}, { a: { c: 48, b: 'dolla billz' }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.0.arr.$.a.b', '$', o); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: '$' }, e: 'a'}, { a: { c: 48, b: '$' }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.0.arr.$.a.b', [1], o, function (v) { + return Array.isArray(v) ? {} : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: {} }, e: 'a'}, { a: { c: 48, b: {} }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.0.arr.$.a.b', [1], o); + assert.deepEqual([ + { yep: [15], arr: [{ a: { b: [1] }, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + }) + + describe('array.array.index.path', function(){ + it('with single value', function(done){ + mpath.set('arr.arr.0.a', 'single', o, function (v) { + return 'single' === v ? 'double' : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: 'double', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.arr.0.a', 'single', o); + assert.deepEqual([ + { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o, function (v) { + return 4 === v ? 3 : v; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: 3, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: false } + ], o.arr); + + mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o); + assert.deepEqual([ + { yep: [15], arr: [{ a: 4, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: false } + ], o.arr); + + done(); + }) + }) + + describe('array.array.$.index.path', function(){ + it('with single value', function(done){ + mpath.set('arr.arr.$.0.a', 'singles', o, function (v) { + return 0; + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: 0, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('arr.arr.$.0.a', 'singles', o); + assert.deepEqual([ + { yep: [15], arr: [{ a: 'singles', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + mpath.set('$.arr.arr.0.a', 'single', o); + assert.deepEqual([ + { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0 } + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o, function (v) { + return 'nope' + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: 'nope', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0} + ], o.arr); + + mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o); + assert.deepEqual([ + { yep: [15], arr: [{ a: [4,8,15,16,23,42], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0} + ], o.arr); + + mpath.set('arr.$.arr.0.a', [4,8,15,16,23,42,108], o); + assert.deepEqual([ + { yep: [15], arr: [{ a: [4,8,15,16,23,42,108], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0} + ], o.arr); + + done(); + }) + }) + + describe('array.array.path.index', function(){ + it('with single value', function(done){ + mpath.set('arr.arr.a.7', 47, o, function (v) { + return 1 + }); + assert.deepEqual([ + { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,1], e: 'a'}, { a: { c: 48, b: [1], '7': 1 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0} + ], o.arr); + + mpath.set('arr.arr.a.7', 47, o); + assert.deepEqual([ + { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,47], e: 'a'}, { a: { c: 48, b: [1], '7': 47 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0} + ], o.arr); + + done(); + }) + it('with array', function(done){ + o.arr[1].arr = [{ a: [] }, { a: [] }, { a: null }]; + mpath.set('arr.arr.a.7', [[null,46], [undefined, 'woot']], o); + + var a1 = []; + var a2 = []; + a1[7] = undefined; + a2[7] = 'woot'; + + assert.deepEqual([ + { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,null], e: 'a'}, { a: { c: 48, b: [1], '7': 46 }, e: 'b'}, { d: 'yep', e: 35 }] } + , { yep: 0, arr: [{a:a1},{a:a2},{a:null}] } + ], o.arr); + + done(); + }) + }) + + describe('handles array.array.path', function(){ + it('with single', function(done){ + o.arr[1].arr = [{},{}]; + assert.deepEqual([{},{}], o.arr[1].arr); + o.arr.push({ arr: 'something else' }); + o.arr.push({ arr: ['something else'] }); + o.arr.push({ arr: [[]] }); + o.arr.push({ arr: [5] }); + + var weird = []; + weird.e = 'xmas'; + + // test + mpath.set('arr.arr.e', 47, o, function (v) { + return 'xmas' + }); + assert.deepEqual([ + { yep: [15], arr: [ + { a: [4,8,15,16,23,42,108,null], e: 'xmas'} + , { a: { c: 48, b: [1], '7': 46 }, e: 'xmas'} + , { d: 'yep', e: 'xmas' } + ] + } + , { yep: 0, arr: [{e: 'xmas'}, {e:'xmas'}] } + , { arr: 'something else' } + , { arr: ['something else'] } + , { arr: [weird] } + , { arr: [5] } + ] + , o.arr); + + weird.e = 47; + + mpath.set('arr.arr.e', 47, o); + assert.deepEqual([ + { yep: [15], arr: [ + { a: [4,8,15,16,23,42,108,null], e: 47} + , { a: { c: 48, b: [1], '7': 46 }, e: 47} + , { d: 'yep', e: 47 } + ] + } + , { yep: 0, arr: [{e: 47}, {e:47}] } + , { arr: 'something else' } + , { arr: ['something else'] } + , { arr: [weird] } + , { arr: [5] } + ] + , o.arr); + + done(); + }) + it('with arrays', function(done){ + mpath.set('arr.arr.e', [[1,2,3],[4,5],null,[],[6], [7,8,9]], o, function (v) { + return 10; + }); + + var weird = []; + weird.e = 10; + + assert.deepEqual([ + { yep: [15], arr: [ + { a: [4,8,15,16,23,42,108,null], e: 10} + , { a: { c: 48, b: [1], '7': 46 }, e: 10} + , { d: 'yep', e: 10 } + ] + } + , { yep: 0, arr: [{e: 10}, {e:10}] } + , { arr: 'something else' } + , { arr: ['something else'] } + , { arr: [weird] } + , { arr: [5] } + ] + , o.arr); + + mpath.set('arr.arr.e', [[1,2,3],[4,5],null,[],[6], [7,8,9]], o); + + weird.e = 6; + + assert.deepEqual([ + { yep: [15], arr: [ + { a: [4,8,15,16,23,42,108,null], e: 1} + , { a: { c: 48, b: [1], '7': 46 }, e: 2} + , { d: 'yep', e: 3 } + ] + } + , { yep: 0, arr: [{e: 4}, {e:5}] } + , { arr: 'something else' } + , { arr: ['something else'] } + , { arr: [weird] } + , { arr: [5] } + ] + , o.arr); + + done(); + }) + }) + }) + + describe('with `special`', function(){ + var o = doc(); + + it('works', function(done){ + mpath.set('name', 'chan', o, special, function (v) { + return 'hi'; + }); + assert.deepEqual('hi', o.name); + + mpath.set('name', 'changer', o, special); + assert.deepEqual('changer', o.name); + + mpath.set('first.second.third', [1,{name:'y'},9], o, special); + assert.deepEqual([1,{name:'y'},9], o.first.second.third); + + mpath.set('first.second.third.1.name', 'z', o, special) + assert.deepEqual([1,{name:'z'},9], o.first.second.third); + + mpath.set('comments.1.name', 'ttwwoo', o, special); + assert.deepEqual({ name: 'two', _doc: { name: 'ttwwoo' }}, o.comments[1]); + + mpath.set('comments.2.comments.1.comments.0.expander', 'adder', o, special, function (v) { + return 'super' + }); + assert.deepEqual( + { val: 2, expander: 'super'} + , o.comments[2]._doc.comments[1]._doc.comments[0]); + + mpath.set('comments.2.comments.1.comments.0.expander', 'adder', o, special); + assert.deepEqual( + { val: 2, expander: 'adder'} + , o.comments[2]._doc.comments[1]._doc.comments[0]); + + mpath.set('comments.2.comments.1.comments.2', 'set', o, special); + assert.equal(3, o.comments[2]._doc.comments[1]._doc.comments.length); + assert.deepEqual( + { val: 2, expander: 'adder'} + , o.comments[2]._doc.comments[1]._doc.comments[0]); + assert.deepEqual( + undefined + , o.comments[2]._doc.comments[1]._doc.comments[1]); + assert.deepEqual( + 'set' + , o.comments[2]._doc.comments[1]._doc.comments[2]); + done(); + }) + + describe('array.path', function(){ + describe('with single non-array value', function(){ + it('works', function(done){ + o.arr[1]._doc = { special: true } + + mpath.set('arr.yep', false, o, special, function (v) { + return 'yes'; + }); + assert.deepEqual([ + { yep: 'yes', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true, _doc: { special: true, yep: 'yes'}} + ], o.arr); + + mpath.set('arr.yep', false, o, special); + assert.deepEqual([ + { yep: false, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true, _doc: { special: true, yep: false }} + ], o.arr); + + done(); + }) + }) + describe('with array of values', function(){ + it('that are equal in length', function(done){ + mpath.set('arr.yep', ['one',2], o, special, function (v) { + return 2 === v ? 20 : v; + }); + assert.deepEqual([ + { yep: 'one', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true, _doc: { special: true, yep: 20}} + ], o.arr); + + mpath.set('arr.yep', ['one',2], o, special); + assert.deepEqual([ + { yep: 'one', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true, _doc: { special: true, yep: 2}} + ], o.arr); + + done(); + }) + + it('that is less than length', function(done){ + mpath.set('arr.yep', [47], o, special, function (v) { + return 80; + }); + assert.deepEqual([ + { yep: 80, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true, _doc: { special: true, yep: 2}} + ], o.arr); + + mpath.set('arr.yep', [47], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + , { yep: true, _doc: { special: true, yep: 2}} + ], o.arr); + + // add _doc to first element + o.arr[0]._doc = { yep: 46, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } + + mpath.set('arr.yep', [20], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }], _doc: { yep: 20, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: 2}} + ], o.arr); + + done(); + }) + + it('that is greater than length', function(done){ + mpath.set('arr.yep', [5,6,7], o, special, function () { + return 'x'; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }], _doc: { yep: 'x', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: 'x'}} + ], o.arr); + + mpath.set('arr.yep', [5,6,7], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }], _doc: { yep: 5, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: 6}} + ], o.arr); + + done(); + }) + }) + }) + + describe('array.$.path', function(){ + describe('with single non-array value', function(){ + it('copies the value to each item in array', function(done){ + mpath.set('arr.$.yep', {xtra: 'double good'}, o, special, function (v) { + return 9; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: 9, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: 9}} + ], o.arr); + + mpath.set('arr.$.yep', {xtra: 'double good'}, o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: {xtra:'double good'}, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: {xtra:'double good'}}} + ], o.arr); + + done(); + }) + }) + describe('with array of values', function(){ + it('copies the value to each item in array', function(done){ + mpath.set('arr.$.yep', [15], o, special, function (v) { + return 'array' + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: 'array', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: 'array'}} + ], o.arr); + + mpath.set('arr.$.yep', [15], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: [15]}} + ], o.arr); + + done(); + }) + }) + }) + + describe('array.index.path', function(){ + it('works', function(done){ + mpath.set('arr.1.yep', 0, o, special, function (v) { + return 1; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: 1}} + ], o.arr); + + mpath.set('arr.1.yep', 0, o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + }) + + describe('array.index.array.path', function(){ + it('with single value', function(done){ + mpath.set('arr.0.arr.e', 35, o, special, function (v) { + return 30 + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 30}, { a: { c: 48 }, e: 30}, { d: 'yep', e: 30 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.0.arr.e', 35, o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 35}, { a: { c: 48 }, e: 35}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.0.arr.e', ['a','b'], o, special, function (v) { + return 'a' === v ? 'A' : v; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 'A'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.0.arr.e', ['a','b'], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 'a'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + }) + + describe('array.index.array.path.path', function(){ + it('with single value', function(done){ + mpath.set('arr.0.arr.a.b', 36, o, special, function (v) { + return 20 + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 20 }, e: 'a'}, { a: { c: 48, b: 20 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.0.arr.a.b', 36, o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 36 }, e: 'a'}, { a: { c: 48, b: 36 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.0.arr.a.b', [1,2,3,4], o, special, function (v) { + return v*2; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 2 }, e: 'a'}, { a: { c: 48, b: 4 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.0.arr.a.b', [1,2,3,4], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 1 }, e: 'a'}, { a: { c: 48, b: 2 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + }) + + describe('array.index.array.$.path.path', function(){ + it('with single value', function(done){ + mpath.set('arr.0.arr.$.a.b', '$', o, special, function (v) { + return 'dollaz' + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: 'dollaz' }, e: 'a'}, { a: { c: 48, b: 'dollaz' }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.0.arr.$.a.b', '$', o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: '$' }, e: 'a'}, { a: { c: 48, b: '$' }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.0.arr.$.a.b', [1], o, special, function (v) { + return {}; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: {} }, e: 'a'}, { a: { c: 48, b: {} }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.0.arr.$.a.b', [1], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: { b: [1] }, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + }) + + describe('array.array.index.path', function(){ + it('with single value', function(done){ + mpath.set('arr.arr.0.a', 'single', o, special, function (v) { + return 88; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: 88, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.arr.0.a', 'single', o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o, special, function (v) { + return v*2; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: 8, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: 4, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + }) + + describe('array.array.$.index.path', function(){ + it('with single value', function(done){ + mpath.set('arr.arr.$.0.a', 'singles', o, special, function (v) { + return v.toUpperCase(); + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: 'SINGLES', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.arr.$.0.a', 'singles', o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: 'singles', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('$.arr.arr.0.a', 'single', o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + it('with array', function(done){ + mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o, special, function (v) { + return Array + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: Array, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.$.arr.0.a', [4,8,15,16,23,42,108], o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + }) + + describe('array.array.path.index', function(){ + it('with single value', function(done){ + mpath.set('arr.arr.a.7', 47, o, special, function (v) { + return Object; + }); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,Object], e: 'a'}, { a: { c: 48, b: [1], '7': Object }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.arr.a.7', 47, o, special); + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,47], e: 'a'}, { a: { c: 48, b: [1], '7': 47 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { special: true, yep: 0}} + ], o.arr); + + done(); + }) + it('with array', function(done){ + o.arr[1]._doc.arr = [{ a: [] }, { a: [] }, { a: null }]; + mpath.set('arr.arr.a.7', [[null,46], [undefined, 'woot']], o, special, function (v) { + return undefined === v ? 'nope' : v; + }); + + var a1 = []; + var a2 = []; + a1[7] = 'nope'; + a2[7] = 'woot'; + + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,null], e: 'a'}, { a: { c: 48, b: [1], '7': 46 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { arr: [{a:a1},{a:a2},{a:null}], special: true, yep: 0}} + ], o.arr); + + mpath.set('arr.arr.a.7', [[null,46], [undefined, 'woot']], o, special); + + a1[7] = undefined; + + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,null], e: 'a'}, { a: { c: 48, b: [1], '7': 46 }, e: 'b'}, { d: 'yep', e: 35 }] } } + , { yep: true, _doc: { arr: [{a:a1},{a:a2},{a:null}], special: true, yep: 0}} + ], o.arr); + + done(); + }) + }) + + describe('handles array.array.path', function(){ + it('with single', function(done){ + o.arr[1]._doc.arr = [{},{}]; + assert.deepEqual([{},{}], o.arr[1]._doc.arr); + o.arr.push({ _doc: { arr: 'something else' }}); + o.arr.push({ _doc: { arr: ['something else'] }}); + o.arr.push({ _doc: { arr: [[]] }}); + o.arr.push({ _doc: { arr: [5] }}); + + // test + mpath.set('arr.arr.e', 47, o, special); + + var weird = []; + weird.e = 47; + + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { + yep: [15] + , arr: [ + { a: [4,8,15,16,23,42,108,null], e: 47} + , { a: { c: 48, b: [1], '7': 46 }, e: 47} + , { d: 'yep', e: 47 } + ] + } + } + , { yep: true + , _doc: { + arr: [ + {e:47} + , {e:47} + ] + , special: true + , yep: 0 + } + } + , { _doc: { arr: 'something else' }} + , { _doc: { arr: ['something else'] }} + , { _doc: { arr: [weird] }} + , { _doc: { arr: [5] }} + ] + , o.arr); + + done(); + }) + it('with arrays', function(done){ + mpath.set('arr.arr.e', [[1,2,3],[4,5],null,[],[6], [7,8,9]], o, special); + + var weird = []; + weird.e = 6; + + assert.deepEqual([ + { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] + , _doc: { + yep: [15] + , arr: [ + { a: [4,8,15,16,23,42,108,null], e: 1} + , { a: { c: 48, b: [1], '7': 46 }, e: 2} + , { d: 'yep', e: 3 } + ] + } + } + , { yep: true + , _doc: { + arr: [ + {e:4} + , {e:5} + ] + , special: true + , yep: 0 + } + } + , { _doc: { arr: 'something else' }} + , { _doc: { arr: ['something else'] }} + , { _doc: { arr: [weird] }} + , { _doc: { arr: [5] }} + ] + , o.arr); + + done(); + }) + }) + + }) + + describe('get/set integration', function(){ + var o = doc(); + + it('works', function(done){ + var vals = mpath.get('array.o.array.x.b', o); + + vals[0][0][2] = 10; + vals[1][0][1] = 0; + vals[1][1] = 'Rambaldi'; + vals[1][2] = [12,14]; + vals[2] = [{changed:true}, [null, ['changed','to','array']]]; + + mpath.set('array.o.array.x.b', vals, o); + + var t = [ + { o: { array: [{x: {b: [4,6,10]}}, { y: 10} ] }} + , { o: { array: [{x: {b: [1,0,3]}}, { x: {b:'Rambaldi',z: 10 }}, { x: {b: [12,14]}}] }} + , { o: { array: [{x: {b: {changed:true}}}, { x: { b: [null, ['changed','to','array']]}}]}} + , { o: { array: [{x: null }] }} + , { o: { array: [{y: 3 }] }} + , { o: { array: [3, 0, null] }} + , { o: { name: 'ha' }} + ]; + assert.deepEqual(t, o.array); + done(); + }) + + it('array.prop', function(done){ + mpath.set('comments.name', ['this', 'was', 'changed'], o); + + assert.deepEqual([ + { name: 'this' } + , { name: 'was', _doc: { name: '2' }} + , { name: 'changed' + , comments: [{},{ comments: [{val: 'twoo'}]}] + , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}] }} + ], o.comments); + + mpath.set('comments.name', ['also', 'changed', 'this'], o, special); + + assert.deepEqual([ + { name: 'also' } + , { name: 'was', _doc: { name: 'changed' }} + , { name: 'changed' + , comments: [{},{ comments: [{val: 'twoo'}]}] + , _doc: { name: 'this', comments: [{},{ _doc: { comments: [{ val: 2 }] }}] }} + ], o.comments); + + done(); + }) + + }) + + describe('multiple $ use', function(){ + var o = doc(); + it('is ok', function(done){ + assert.doesNotThrow(function () { + mpath.set('arr.$.arr.$.a', 35, o); + }); + done(); + }) + }) + + it('ignores setting a nested path that doesnt exist', function(done){ + var o = doc(); + assert.doesNotThrow(function(){ + mpath.set('thing.that.is.new', 10, o); + }) + done(); + }) + }) + +}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore new file mode 100644 index 0000000..be106ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore @@ -0,0 +1,2 @@ +*.sw* +node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml new file mode 100644 index 0000000..09c230f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md new file mode 100644 index 0000000..f157b69 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md @@ -0,0 +1,24 @@ + +0.2.1 / 2013-02-09 +================== + + * fixed; conformancy with A+ 1.2 + +0.2.0 / 2013-01-09 +================== + + * added; .end() + * fixed; only catch handler executions + +0.1.0 / 2013-01-08 +================== + + * cleaned up API + * customizable event names + * docs + +0.0.1 / 2013-01-07 +================== + + * original release + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE new file mode 100644 index 0000000..38c529d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2012 [Aaron Heckmann](aaron.heckmann+github@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile new file mode 100644 index 0000000..717a796 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile @@ -0,0 +1,12 @@ +TESTS = $(shell find test/ -name '*.test.js') + +test: + @make test-unit && echo "testing promises-A+ implementation ..." && make test-promises-A + +test-unit: + @./node_modules/.bin/mocha $(T) --async-only $(TESTS) + +test-promises-A: + @node test/promises-A.js + +.PHONY: test test-unit test-promises-A diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md new file mode 100644 index 0000000..7da2725 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md @@ -0,0 +1,200 @@ +#mpromise +========== + +A [promises/A+](https://github.com/promises-aplus/promises-spec) conformant implementation, written for [mongoose](http://mongoosejs.com). + +## installation + +``` +$ npm install mpromise +``` + +## docs + +An `mpromise` can be in any of three states, pending, fulfilled (success), or rejected (error). Once it is either fulfilled or rejected it's state can no longer be changed. + +The exports object is the Promise constructor. + +```js +var Promise = require('mpromise'); +``` + +The constructor accepts an optional function which is executed when the promise is first resolved (either fulfilled or rejected). + +```js +var promise = new Promise(fn); +``` + +This is the same as passing the `fn` to `onResolve` directly. + +```js +var promise = new Promise; +promise.onResolve(function (err, args..) { + ... +}); +``` + +### Methods + +####fulfill + +Fulfilling a promise with values: + +```js +var promise = new Promise; +promise.fulfill(args...); +``` + +If the promise has already been fulfilled or rejected, no action is taken. + +####reject + +Rejecting a promise with a reason: + +```js +var promise = new Promise; +promise.reject(reason); +``` + +If the promise has already been fulfilled or rejected, no action is taken. + +####resolve + +Node.js callback style promise resolution `(err, args...)`: + +```js +var promise = new Promise; +promise.resolve([reason], [arg1, arg2, ...]); +``` + +If the promise has already been fulfilled or rejected, no action is taken. + +####onFulfill + +To register a function for execution when the promise is fulfilled, pass it to `onFulfill`. When executed it will receive the arguments passed to `fulfill()`. + +```js +var promise = new Promise; +promise.onFulfill(function (a, b) { + assert.equal(3, a + b); +}); +promise.fulfill(1, 2); +``` + +The function will only be called once when the promise is fulfilled, never when rejected. + +Registering a function with `onFulfill` after the promise has already been fulfilled results in the immediate execution of the function with the original arguments used to fulfill the promise. + +```js +var promise = new Promise; +promise.fulfill(" :D "); +promise.onFulfill(function (arg) { + console.log(arg); // logs " :D " +}) +``` + +####onReject + +To register a function for execution when the promise is rejected, pass it to `onReject`. When executed it will receive the argument passed to `reject()`. + +```js +var promise = new Promise; +promise.onReject(function (reason) { + assert.equal('sad', reason); +}); +promise.reject('sad'); +``` + +The function will only be called once when the promise is rejected, never when fulfilled. + +Registering a function with `onReject` after the promise has already been rejected results in the immediate execution of the function with the original argument used to reject the promise. + +```js +var promise = new Promise; +promise.reject(" :( "); +promise.onReject(function (reason) { + console.log(reason); // logs " :( " +}) +``` + +####onResolve + +Allows registration of node.js style callbacks `(err, args..)` to handle either promise resolution type (fulfill or reject). + +```js +// fulfillment +var promise = new Promise; +promise.onResolve(function (err, a, b) { + console.log(a + b); // logs 3 +}); +promise.fulfill(1, 2); + +// rejection +var promise = new Promise; +promise.onResolve(function (err) { + if (err) { + console.log(err.message); // logs "failed" + } +}); +promise.reject(new Error('failed')); +``` + +####then + +Creates a new promise and returns it. If `onFulfill` or `onReject` are passed, they are added as SUCCESS/ERROR callbacks to this promise after the nextTick. + +Conforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification and passes its [tests](https://github.com/promises-aplus/promises-tests). + +```js +// promise.then(onFulfill, onReject); + +var p = new Promise; + +p.then(function (arg) { + return arg + 1; +}).then(function (arg) { + throw new Error(arg + ' is an error!'); +}).then(null, function (err) { + assert.ok(err instanceof Error); + assert.equal('2 is an error', err.message); +}); +p.complete(1); +``` + +####end + +Signifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught. + +```js +var p = new Promise; +p.then(function(){ throw new Error('shucks') }); +setTimeout(function () { + p.fulfill(); + // error was caught and swallowed by the promise returned from + // p.then(). we either have to always register handlers on + // the returned promises or we can do the following... +}, 10); + +// this time we use .end() which prevents catching thrown errors +var p = new Promise; +var p2 = p.then(function(){ throw new Error('shucks') }).end(); // <-- +setTimeout(function () { + p.fulfill(); // throws "shucks" +}, 10); +``` + +###Event names + +If you'd like to alter this implementations event names used to signify success and failure you may do so by setting `Promise.SUCCESS` or `Promise.FAILURE` respectively. + +```js +Promise.SUCCESS = 'complete'; +Promise.FAILURE = 'err'; +``` + +###Luke, use the Source +For more ideas read the [source](https://github.com/aheckmann/mpromise/blob/master/lib), [tests](https://github.com/aheckmann/mpromise/blob/master/test), or the [mongoose implementation](https://github.com/LearnBoost/mongoose/blob/3.6x/lib/promise.js). + +## license + +[MIT](https://github.com/aheckmann/mpromise/blob/master/LICENSE) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js new file mode 100644 index 0000000..0b3669d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js @@ -0,0 +1 @@ +module.exports = exports = require('./lib/promise'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js new file mode 100644 index 0000000..be992c3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js @@ -0,0 +1,268 @@ + +/*! + * Module dependencies. + */ + +var slice = require('sliced'); +var EventEmitter = require('events').EventEmitter; + +/** + * Promise constructor. + * + * _NOTE: The success and failure event names can be overridden by setting `Promise.SUCCESS` and `Promise.FAILURE` respectively._ + * + * @param {Function} back a function that accepts `fn(err, ...){}` as signature + * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter + * @event `reject`: Emits when the promise is rejected (event name may be overridden) + * @event `fulfill`: Emits when the promise is fulfilled (event name may be overridden) + * @api public + */ + +function Promise (back) { + this.emitted = {}; + this.ended = false; + if ('function' == typeof back) + this.onResolve(back); +} + +/*! + * event names + */ + +Promise.SUCCESS = 'fulfill'; +Promise.FAILURE = 'reject'; + +/*! + * Inherits from EventEmitter. + */ + +Promise.prototype.__proto__ = EventEmitter.prototype; + +/** + * Adds `listener` to the `event`. + * + * If `event` is either the success or failure event and the event has already been emitted, the`listener` is called immediately and passed the results of the original emitted event. + * + * @param {String} event + * @param {Function} callback + * @return {Promise} this + * @api public + */ + +Promise.prototype.on = function (event, callback) { + if (this.emitted[event]) + callback.apply(this, this.emitted[event]); + else + EventEmitter.prototype.on.call(this, event, callback); + + return this; +} + +/** + * Keeps track of emitted events to run them on `on`. + * + * @api private + */ + +Promise.prototype.emit = function (event) { + // ensures a promise can't be fulfill() or reject() more than once + var success = this.constructor.SUCCESS; + var failure = this.constructor.FAILURE; + + if (event == success || event == failure) { + if (this.emitted[success] || this.emitted[failure]) { + return this; + } + this.emitted[event] = slice(arguments, 1); + } + + return EventEmitter.prototype.emit.apply(this, arguments); +} + +/** + * Fulfills this promise with passed arguments. + * + * If this promise has already been fulfilled or rejected, no action is taken. + * + * @api public + */ + +Promise.prototype.fulfill = function () { + var args = slice(arguments); + return this.emit.apply(this, [this.constructor.SUCCESS].concat(args)); +} + +/** + * Rejects this promise with `reason`. + * + * If this promise has already been fulfilled or rejected, no action is taken. + * + * @api public + * @param {Object|String} reason + * @return {Promise} this + */ + +Promise.prototype.reject = function (reason) { + return this.emit(this.constructor.FAILURE, reason); +} + +/** + * Resolves this promise to a rejected state if `err` is passed or + * fulfilled state if no `err` is passed. + * + * @param {Error} [err] error or null + * @param {Object} [val] value to fulfill the promise with + * @api public + */ + +Promise.prototype.resolve = function (err, val) { + if (err) return this.reject(err); + return this.fulfill(val); +} + +/** + * Adds a listener to the SUCCESS event. + * + * @return {Promise} this + * @api public + */ + +Promise.prototype.onFulfill = function (fn) { + return this.on(this.constructor.SUCCESS, fn); +} + +/** + * Adds a listener to the FAILURE event. + * + * @return {Promise} this + * @api public + */ + +Promise.prototype.onReject = function (fn) { + return this.on(this.constructor.FAILURE, fn); +} + +/** + * Adds a single function as a listener to both SUCCESS and FAILURE. + * + * It will be executed with traditional node.js argument position: + * function (err, args...) {} + * + * @param {Function} fn + * @return {Promise} this + */ + +Promise.prototype.onResolve = function (fn) { + this.on(this.constructor.FAILURE, function(err){ + fn.call(this, err); + }); + + this.on(this.constructor.SUCCESS, function(){ + var args = slice(arguments); + fn.apply(this, [null].concat(args)); + }); + + return this; +} + +/** + * Creates a new promise and returns it. If `onFulfill` or + * `onReject` are passed, they are added as SUCCESS/ERROR callbacks + * to this promise after the nextTick. + * + * Conforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification. Read for more detail how to use this method. + * + * ####Example: + * + * var p = new Promise; + * p.then(function (arg) { + * return arg + 1; + * }).then(function (arg) { + * throw new Error(arg + ' is an error!'); + * }).then(null, function (err) { + * assert.ok(err instanceof Error); + * assert.equal('2 is an error', err.message); + * }); + * p.complete(1); + * + * @see promises-A+ https://github.com/promises-aplus/promises-spec + * @param {Function} onFulFill + * @param {Function} onReject + * @return {Promise} newPromise + */ + +Promise.prototype.then = function (onFulfill, onReject) { + var self = this + , retPromise = new Promise; + + function handler (fn) { + return function handle (arg) { + var val; + + try { + val = fn(arg); + } catch (err) { + if (retPromise.ended) throw err; + return retPromise.reject(err); + } + + if (val && 'function' == typeof val.then) { + val.then( + retPromise.fulfill.bind(retPromise) + , retPromise.reject.bind(retPromise)) + } else { + retPromise.fulfill(val); + } + } + } + + process.nextTick(function () { + if ('function' == typeof onReject) { + self.onReject(handler(onReject)); + } else { + self.onReject(retPromise.reject.bind(retPromise)); + } + + if ('function' == typeof onFulfill) { + self.onFulfill(handler(onFulfill)); + } else { + self.onFulfill(retPromise.fulfill.bind(retPromise)); + } + }) + + return retPromise; +} + +/** + * Signifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught. + * + * ####Example: + * + * var p = new Promise; + * p.then(function(){ throw new Error('shucks') }); + * setTimeout(function () { + * p.fulfill(); + * // error was caught and swallowed by the promise returned from + * // p.then(). we either have to always register handlers on + * // the returned promises or we can do the following... + * }, 10); + * + * // this time we use .end() which prevents catching thrown errors + * var p = new Promise; + * var p2 = p.then(function(){ throw new Error('shucks') }).end(); // <-- + * setTimeout(function () { + * p.fulfill(); // throws "shucks" + * }, 10); + * + * @api public + */ + +Promise.prototype.end = function () { + this.ended = true; +} + +/*! + * Module exports. + */ + +module.exports = Promise; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore new file mode 100644 index 0000000..be106ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore @@ -0,0 +1,2 @@ +*.sw* +node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md new file mode 100644 index 0000000..8132c95 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md @@ -0,0 +1,23 @@ + +0.0.4 / 2013-01-07 +================== + + * added component.json #1 [jkroso](https://github.com/jkroso) + * reversed array loop #1 [jkroso](https://github.com/jkroso) + * remove fn params + +0.0.3 / 2012-09-29 +================== + + * faster with negative start args + +0.0.2 / 2012-09-29 +================== + + * support full [].slice semantics + +0.0.1 / 2012-09-29 +=================== + + * initial release + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE new file mode 100644 index 0000000..38c529d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2012 [Aaron Heckmann](aaron.heckmann+github@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile new file mode 100644 index 0000000..3dd8a2d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile @@ -0,0 +1,5 @@ + +test: + @time ./node_modules/.bin/mocha $(T) $(TESTS) + +.PHONY: test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md new file mode 100644 index 0000000..6605c39 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md @@ -0,0 +1,62 @@ +#sliced +========== + +A faster alternative to `[].slice.call(arguments)`. + +[![Build Status](https://secure.travis-ci.org/aheckmann/sliced.png)](http://travis-ci.org/aheckmann/sliced) + +Example output from [benchmark.js](https://github.com/bestiejs/benchmark.js) + + Array.prototype.slice.call x 1,320,205 ops/sec ±2.35% (92 runs sampled) + [].slice.call x 1,314,605 ops/sec ±1.60% (95 runs sampled) + cached slice.call x 10,468,380 ops/sec ±1.45% (95 runs sampled) + sliced x 16,608,237 ops/sec ±1.40% (92 runs sampled) + fastest is sliced + + Array.prototype.slice.call(arguments, 1) x 1,383,584 ops/sec ±1.73% (97 runs sampled) + [].slice.call(arguments, 1) x 1,494,735 ops/sec ±1.33% (95 runs sampled) + cached slice.call(arguments, 1) x 10,085,270 ops/sec ±1.51% (97 runs sampled) + sliced(arguments, 1) x 16,620,480 ops/sec ±1.29% (95 runs sampled) + fastest is sliced(arguments, 1) + + Array.prototype.slice.call(arguments, -1) x 1,303,262 ops/sec ±1.62% (94 runs sampled) + [].slice.call(arguments, -1) x 1,325,615 ops/sec ±1.36% (97 runs sampled) + cached slice.call(arguments, -1) x 9,673,603 ops/sec ±1.70% (96 runs sampled) + sliced(arguments, -1) x 16,384,575 ops/sec ±1.06% (91 runs sampled) + fastest is sliced(arguments, -1) + + Array.prototype.slice.call(arguments, -2, -10) x 1,404,390 ops/sec ±1.61% (95 runs sampled) + [].slice.call(arguments, -2, -10) x 1,514,367 ops/sec ±1.21% (96 runs sampled) + cached slice.call(arguments, -2, -10) x 9,836,017 ops/sec ±1.21% (95 runs sampled) + sliced(arguments, -2, -10) x 18,544,882 ops/sec ±1.30% (91 runs sampled) + fastest is sliced(arguments, -2, -10) + + Array.prototype.slice.call(arguments, -2, -1) x 1,458,604 ops/sec ±1.41% (97 runs sampled) + [].slice.call(arguments, -2, -1) x 1,536,547 ops/sec ±1.63% (99 runs sampled) + cached slice.call(arguments, -2, -1) x 10,060,633 ops/sec ±1.37% (96 runs sampled) + sliced(arguments, -2, -1) x 18,608,712 ops/sec ±1.08% (93 runs sampled) + fastest is sliced(arguments, -2, -1) + +_Benchmark [source](https://github.com/aheckmann/sliced/blob/master/bench.js)._ + +##Usage + +`sliced` accepts the same arguments as `Array#slice` so you can easily swap it out. + +```js +function zing () { + var slow = [].slice.call(arguments, 1, 8); + var args = slice(arguments, 1, 8); + + var slow = Array.prototype.slice.call(arguments); + var args = slice(arguments); + // etc +} +``` + +## install + + npm install sliced + + +[LICENSE](https://github.com/aheckmann/sliced/blob/master/LICENSE) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js new file mode 100644 index 0000000..f201d16 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js @@ -0,0 +1,95 @@ + +var sliced = require('./') +var Bench = require('benchmark'); +var s = new Bench.Suite; +var slice = [].slice; + +s.add('Array.prototype.slice.call', function () { + Array.prototype.slice.call(arguments); +}).add('[].slice.call', function () { + [].slice.call(arguments); +}).add('cached slice.call', function () { + slice.call(arguments) +}).add('sliced', function () { + sliced(arguments) +}).on('cycle', function (evt) { + console.log(String(evt.target)); +}).on('complete', function () { + console.log('fastest is %s', this.filter('fastest').pluck('name')); +}) +.run(); + +var s = new Bench.Suite; +s.add('Array.prototype.slice.call(arguments, 1)', function () { + Array.prototype.slice.call(arguments, 1); +}).add('[].slice.call(arguments, 1)', function () { + [].slice.call(arguments, 1); +}).add('cached slice.call(arguments, 1)', function () { + slice.call(arguments, 1) +}).add('sliced(arguments, 1)', function () { + sliced(arguments, 1) +}).on('cycle', function (evt) { + console.log(String(evt.target)); +}).on('complete', function () { + console.log('fastest is %s', this.filter('fastest').pluck('name')); +}) +.run(); + +var s = new Bench.Suite; +s.add('Array.prototype.slice.call(arguments, -1)', function () { + Array.prototype.slice.call(arguments, -1); +}).add('[].slice.call(arguments, -1)', function () { + [].slice.call(arguments, -1); +}).add('cached slice.call(arguments, -1)', function () { + slice.call(arguments, -1) +}).add('sliced(arguments, -1)', function () { + sliced(arguments, -1) +}).on('cycle', function (evt) { + console.log(String(evt.target)); +}).on('complete', function () { + console.log('fastest is %s', this.filter('fastest').pluck('name')); +}) +.run(); + +var s = new Bench.Suite; +s.add('Array.prototype.slice.call(arguments, -2, -10)', function () { + Array.prototype.slice.call(arguments, -2, -10); +}).add('[].slice.call(arguments, -2, -10)', function () { + [].slice.call(arguments, -2, -10); +}).add('cached slice.call(arguments, -2, -10)', function () { + slice.call(arguments, -2, -10) +}).add('sliced(arguments, -2, -10)', function () { + sliced(arguments, -2, -10) +}).on('cycle', function (evt) { + console.log(String(evt.target)); +}).on('complete', function () { + console.log('fastest is %s', this.filter('fastest').pluck('name')); +}) +.run(); + +var s = new Bench.Suite; +s.add('Array.prototype.slice.call(arguments, -2, -1)', function () { + Array.prototype.slice.call(arguments, -2, -1); +}).add('[].slice.call(arguments, -2, -1)', function () { + [].slice.call(arguments, -2, -1); +}).add('cached slice.call(arguments, -2, -1)', function () { + slice.call(arguments, -2, -1) +}).add('sliced(arguments, -2, -1)', function () { + sliced(arguments, -2, -1) +}).on('cycle', function (evt) { + console.log(String(evt.target)); +}).on('complete', function () { + console.log('fastest is %s', this.filter('fastest').pluck('name')); +}) +.run(); + +/** + * Output: + * + * Array.prototype.slice.call x 1,289,592 ops/sec ±2.88% (87 runs sampled) + * [].slice.call x 1,345,451 ops/sec ±1.68% (97 runs sampled) + * cached slice.call x 10,719,886 ops/sec ±1.04% (99 runs sampled) + * sliced x 15,809,545 ops/sec ±1.46% (93 runs sampled) + * fastest is sliced + * + */ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json new file mode 100644 index 0000000..a7ac7f2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json @@ -0,0 +1,13 @@ +{ + "name": "sliced", + "version": "0.0.3", + "description": "A faster Node.js alternative to Array.prototype.slice.call(arguments)", + "repo" : "aheckmann/sliced", + "keywords": [ + "arguments", + "slice", + "array" + ], + "author": "Aaron Heckmann ", + "license": "MIT" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js new file mode 100644 index 0000000..3b90ae7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js @@ -0,0 +1 @@ +module.exports = exports = require('./lib/sliced'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js new file mode 100644 index 0000000..d8c15bc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js @@ -0,0 +1,37 @@ + +/** + * An Array.prototype.slice.call(arguments) alternative + * + * @param {Object} args something with a length + * @param {Number} slice + * @param {Number} sliceEnd + * @api public + */ + +module.exports = function () { + var args = arguments[0]; + var slice = arguments[1]; + var sliceEnd = arguments[2]; + + var ret = []; + var len = args.length; + + if (0 === len) return ret; + + var start = slice < 0 + ? Math.max(0, slice + len) + : slice || 0; + + var end = 3 === arguments.length + ? sliceEnd < 0 + ? sliceEnd + len + : sliceEnd + : len; + + while (end-- > start) { + ret[end - start] = args[end]; + } + + return ret; +} + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json new file mode 100644 index 0000000..8033e42 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json @@ -0,0 +1,38 @@ +{ + "name": "sliced", + "version": "0.0.4", + "description": "A faster Node.js alternative to Array.prototype.slice.call(arguments)", + "main": "index.js", + "scripts": { + "test": "make test" + }, + "repository": { + "type": "git", + "url": "git://github.com/aheckmann/sliced" + }, + "keywords": [ + "arguments", + "slice", + "array" + ], + "author": { + "name": "Aaron Heckmann", + "email": "aaron.heckmann+github@gmail.com" + }, + "license": "MIT", + "devDependencies": { + "mocha": "1.5.0", + "benchmark": "~1.0.0" + }, + "readme": "#sliced\n==========\n\nA faster alternative to `[].slice.call(arguments)`.\n\n[![Build Status](https://secure.travis-ci.org/aheckmann/sliced.png)](http://travis-ci.org/aheckmann/sliced)\n\nExample output from [benchmark.js](https://github.com/bestiejs/benchmark.js)\n\n Array.prototype.slice.call x 1,320,205 ops/sec ±2.35% (92 runs sampled)\n [].slice.call x 1,314,605 ops/sec ±1.60% (95 runs sampled)\n cached slice.call x 10,468,380 ops/sec ±1.45% (95 runs sampled)\n sliced x 16,608,237 ops/sec ±1.40% (92 runs sampled)\n fastest is sliced\n\n Array.prototype.slice.call(arguments, 1) x 1,383,584 ops/sec ±1.73% (97 runs sampled)\n [].slice.call(arguments, 1) x 1,494,735 ops/sec ±1.33% (95 runs sampled)\n cached slice.call(arguments, 1) x 10,085,270 ops/sec ±1.51% (97 runs sampled)\n sliced(arguments, 1) x 16,620,480 ops/sec ±1.29% (95 runs sampled)\n fastest is sliced(arguments, 1)\n\n Array.prototype.slice.call(arguments, -1) x 1,303,262 ops/sec ±1.62% (94 runs sampled)\n [].slice.call(arguments, -1) x 1,325,615 ops/sec ±1.36% (97 runs sampled)\n cached slice.call(arguments, -1) x 9,673,603 ops/sec ±1.70% (96 runs sampled)\n sliced(arguments, -1) x 16,384,575 ops/sec ±1.06% (91 runs sampled)\n fastest is sliced(arguments, -1)\n\n Array.prototype.slice.call(arguments, -2, -10) x 1,404,390 ops/sec ±1.61% (95 runs sampled)\n [].slice.call(arguments, -2, -10) x 1,514,367 ops/sec ±1.21% (96 runs sampled)\n cached slice.call(arguments, -2, -10) x 9,836,017 ops/sec ±1.21% (95 runs sampled)\n sliced(arguments, -2, -10) x 18,544,882 ops/sec ±1.30% (91 runs sampled)\n fastest is sliced(arguments, -2, -10)\n\n Array.prototype.slice.call(arguments, -2, -1) x 1,458,604 ops/sec ±1.41% (97 runs sampled)\n [].slice.call(arguments, -2, -1) x 1,536,547 ops/sec ±1.63% (99 runs sampled)\n cached slice.call(arguments, -2, -1) x 10,060,633 ops/sec ±1.37% (96 runs sampled)\n sliced(arguments, -2, -1) x 18,608,712 ops/sec ±1.08% (93 runs sampled)\n fastest is sliced(arguments, -2, -1)\n\n_Benchmark [source](https://github.com/aheckmann/sliced/blob/master/bench.js)._\n\n##Usage\n\n`sliced` accepts the same arguments as `Array#slice` so you can easily swap it out.\n\n```js\nfunction zing () {\n var slow = [].slice.call(arguments, 1, 8);\n var args = slice(arguments, 1, 8);\n\n var slow = Array.prototype.slice.call(arguments);\n var args = slice(arguments);\n // etc\n}\n```\n\n## install\n\n npm install sliced\n\n\n[LICENSE](https://github.com/aheckmann/sliced/blob/master/LICENSE)\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/aheckmann/sliced/issues" + }, + "_id": "sliced@0.0.4", + "dist": { + "shasum": "3b876b7ce844ff8dda91e324c0e085fe00a7715a" + }, + "_from": "sliced@0.0.4", + "_resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.4.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js new file mode 100644 index 0000000..33d36a1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js @@ -0,0 +1,80 @@ + +var sliced = require('../') +var assert = require('assert') + +describe('sliced', function(){ + it('exports a function', function(){ + assert.equal('function', typeof sliced); + }) + describe('with 1 arg', function(){ + it('returns an array of the arg', function(){ + var o = [3, "4", {}]; + var r = sliced(o); + assert.equal(3, r.length); + assert.equal(o[0], r[0]); + assert.equal(o[1], r[1]); + assert.equal(o[1], r[1]); + }) + }) + describe('with 2 args', function(){ + it('returns an array of the arg starting at the 2nd arg', function(){ + var o = [3, "4", 5, null]; + var r = sliced(o, 2); + assert.equal(2, r.length); + assert.equal(o[2], r[0]); + assert.equal(o[3], r[1]); + }) + }) + describe('with 3 args', function(){ + it('returns an array of the arg from the 2nd to the 3rd arg', function(){ + var o = [3, "4", 5, null]; + var r = sliced(o, 1, 2); + assert.equal(1, r.length); + assert.equal(o[1], r[0]); + }) + }) + describe('with negative start and no end', function(){ + it('begins at an offset from the end and includes all following elements', function(){ + var o = [3, "4", 5, null]; + var r = sliced(o, -2); + assert.equal(2, r.length); + assert.equal(o[2], r[0]); + assert.equal(o[3], r[1]); + + var r = sliced(o, -12); + assert.equal(4, r.length); + assert.equal(o[0], r[0]); + assert.equal(o[1], r[1]); + }) + }) + describe('with negative start and positive end', function(){ + it('begins at an offset from the end and includes `end` elements', function(){ + var o = [3, "4", {x:1}, null]; + + var r = sliced(o, -2, 1); + assert.equal(0, r.length); + + var r = sliced(o, -2, 2); + assert.equal(0, r.length); + + var r = sliced(o, -2, 3); + assert.equal(1, r.length); + assert.equal(o[2], r[0]); + }) + }) + describe('with negative start and negative end', function(){ + it('begins at `start` offset from the end and includes all elements up to `end` offset from the end', function(){ + var o = [3, "4", {x:1}, null]; + var r = sliced(o, -3, -1); + assert.equal(2, r.length); + assert.equal(o[1], r[0]); + assert.equal(o[2], r[1]); + + var r = sliced(o, -3, -3); + assert.equal(0, r.length); + + var r = sliced(o, -3, -4); + assert.equal(0, r.length); + }) + }) +}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json new file mode 100644 index 0000000..f3db8fe --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json @@ -0,0 +1,43 @@ +{ + "name": "mpromise", + "version": "0.2.1", + "description": "Promises A+ conformant implementation", + "main": "index.js", + "scripts": { + "test": "make test" + }, + "dependencies": { + "sliced": "0.0.4" + }, + "devDependencies": { + "mocha": "1.7.4", + "promises-aplus-tests": ">= 1.2" + }, + "repository": { + "type": "git", + "url": "git://github.com/aheckmann/mpromise" + }, + "keywords": [ + "promise", + "mongoose", + "aplus", + "a+", + "plus" + ], + "author": { + "name": "Aaron Heckmann", + "email": "aaron.heckmann+github@gmail.com" + }, + "license": "MIT", + "readme": "#mpromise\n==========\n\nA [promises/A+](https://github.com/promises-aplus/promises-spec) conformant implementation, written for [mongoose](http://mongoosejs.com).\n\n## installation\n\n```\n$ npm install mpromise\n```\n\n## docs\n\nAn `mpromise` can be in any of three states, pending, fulfilled (success), or rejected (error). Once it is either fulfilled or rejected it's state can no longer be changed.\n\nThe exports object is the Promise constructor.\n\n```js\nvar Promise = require('mpromise');\n```\n\nThe constructor accepts an optional function which is executed when the promise is first resolved (either fulfilled or rejected).\n\n```js\nvar promise = new Promise(fn);\n```\n\nThis is the same as passing the `fn` to `onResolve` directly.\n\n```js\nvar promise = new Promise;\npromise.onResolve(function (err, args..) {\n ...\n});\n```\n\n### Methods\n\n####fulfill\n\nFulfilling a promise with values:\n\n```js\nvar promise = new Promise;\npromise.fulfill(args...);\n```\n\nIf the promise has already been fulfilled or rejected, no action is taken.\n\n####reject\n\nRejecting a promise with a reason:\n\n```js\nvar promise = new Promise;\npromise.reject(reason);\n```\n\nIf the promise has already been fulfilled or rejected, no action is taken.\n\n####resolve\n\nNode.js callback style promise resolution `(err, args...)`:\n\n```js\nvar promise = new Promise;\npromise.resolve([reason], [arg1, arg2, ...]);\n```\n\nIf the promise has already been fulfilled or rejected, no action is taken.\n\n####onFulfill\n\nTo register a function for execution when the promise is fulfilled, pass it to `onFulfill`. When executed it will receive the arguments passed to `fulfill()`.\n\n```js\nvar promise = new Promise;\npromise.onFulfill(function (a, b) {\n assert.equal(3, a + b);\n});\npromise.fulfill(1, 2);\n```\n\nThe function will only be called once when the promise is fulfilled, never when rejected.\n\nRegistering a function with `onFulfill` after the promise has already been fulfilled results in the immediate execution of the function with the original arguments used to fulfill the promise.\n\n```js\nvar promise = new Promise;\npromise.fulfill(\" :D \");\npromise.onFulfill(function (arg) {\n console.log(arg); // logs \" :D \"\n})\n```\n\n####onReject\n\nTo register a function for execution when the promise is rejected, pass it to `onReject`. When executed it will receive the argument passed to `reject()`.\n\n```js\nvar promise = new Promise;\npromise.onReject(function (reason) {\n assert.equal('sad', reason);\n});\npromise.reject('sad');\n```\n\nThe function will only be called once when the promise is rejected, never when fulfilled.\n\nRegistering a function with `onReject` after the promise has already been rejected results in the immediate execution of the function with the original argument used to reject the promise.\n\n```js\nvar promise = new Promise;\npromise.reject(\" :( \");\npromise.onReject(function (reason) {\n console.log(reason); // logs \" :( \"\n})\n```\n\n####onResolve\n\nAllows registration of node.js style callbacks `(err, args..)` to handle either promise resolution type (fulfill or reject).\n\n```js\n// fulfillment\nvar promise = new Promise;\npromise.onResolve(function (err, a, b) {\n console.log(a + b); // logs 3\n});\npromise.fulfill(1, 2);\n\n// rejection\nvar promise = new Promise;\npromise.onResolve(function (err) {\n if (err) {\n console.log(err.message); // logs \"failed\"\n }\n});\npromise.reject(new Error('failed'));\n```\n\n####then\n\nCreates a new promise and returns it. If `onFulfill` or `onReject` are passed, they are added as SUCCESS/ERROR callbacks to this promise after the nextTick.\n\nConforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification and passes its [tests](https://github.com/promises-aplus/promises-tests).\n\n```js\n// promise.then(onFulfill, onReject);\n\nvar p = new Promise;\n\np.then(function (arg) {\n return arg + 1;\n}).then(function (arg) {\n throw new Error(arg + ' is an error!');\n}).then(null, function (err) {\n assert.ok(err instanceof Error);\n assert.equal('2 is an error', err.message);\n});\np.complete(1);\n```\n\n####end\n\nSignifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught.\n\n```js\nvar p = new Promise;\np.then(function(){ throw new Error('shucks') });\nsetTimeout(function () {\n p.fulfill();\n // error was caught and swallowed by the promise returned from\n // p.then(). we either have to always register handlers on\n // the returned promises or we can do the following...\n}, 10);\n\n// this time we use .end() which prevents catching thrown errors\nvar p = new Promise;\nvar p2 = p.then(function(){ throw new Error('shucks') }).end(); // <--\nsetTimeout(function () {\n p.fulfill(); // throws \"shucks\"\n}, 10);\n```\n\n###Event names\n\nIf you'd like to alter this implementations event names used to signify success and failure you may do so by setting `Promise.SUCCESS` or `Promise.FAILURE` respectively.\n\n```js\nPromise.SUCCESS = 'complete';\nPromise.FAILURE = 'err';\n```\n\n###Luke, use the Source\nFor more ideas read the [source](https://github.com/aheckmann/mpromise/blob/master/lib), [tests](https://github.com/aheckmann/mpromise/blob/master/test), or the [mongoose implementation](https://github.com/LearnBoost/mongoose/blob/3.6x/lib/promise.js).\n\n## license\n\n[MIT](https://github.com/aheckmann/mpromise/blob/master/LICENSE)\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/aheckmann/mpromise/issues" + }, + "_id": "mpromise@0.2.1", + "dist": { + "shasum": "2d34d1e9ffad0946e085574eb7c793816b840bcd" + }, + "_from": "mpromise@0.2.1", + "_resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.2.1.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js new file mode 100644 index 0000000..45f6e29 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js @@ -0,0 +1,201 @@ + +/** + * Module dependencies. + */ + +var assert = require('assert') +var Promise = require('../lib/promise'); + +/** + * Test. + */ + +describe('promise', function(){ + it('events fire right after fulfill()', function(done){ + var promise = new Promise() + , called = 0; + + promise.on('fulfill', function (a, b) { + assert.equal(a, '1'); + assert.equal(b, '2'); + called++; + }); + + promise.fulfill('1', '2'); + + promise.on('fulfill', function (a, b) { + assert.equal(a, '1'); + assert.equal(b, '2'); + called++; + }); + + assert.equal(2, called); + done(); + }); + + it('events fire right after reject()', function(done){ + var promise = new Promise() + , called = 0; + + promise.on('reject', function (err) { + assert.ok(err instanceof Error); + called++; + }); + + promise.reject(new Error('booyah')); + + promise.on('reject', function (err) { + assert.ok(err instanceof Error); + called++; + }); + + assert.equal(2, called); + done() + }); + + describe('onResolve()', function(){ + it('from constructor works', function(done){ + var called = 0; + + var promise = new Promise(function (err) { + assert.ok(err instanceof Error); + called++; + }) + + promise.reject(new Error('dawg')); + + assert.equal(1, called); + done(); + }); + + it('after fulfill()', function(done){ + var promise = new Promise() + , called = 0; + + promise.fulfill('woot'); + + promise.onResolve(function (err, data){ + assert.equal(data,'woot'); + called++; + }); + + promise.onResolve(function (err, data){ + assert.strictEqual(err, null); + called++; + }); + + assert.equal(2, called); + done(); + }) + }); + + describe('onFulfill shortcut', function(){ + it('works', function(done){ + var promise = new Promise() + , called = 0; + + promise.onFulfill(function (woot) { + assert.strictEqual(woot, undefined); + called++; + }); + + promise.fulfill(); + + assert.equal(1, called); + done(); + }) + }) + + describe('onReject shortcut', function(){ + it('works', function(done){ + var promise = new Promise() + , called = 0; + + promise.onReject(function (err) { + assert.ok(err instanceof Error); + called++; + }); + + promise.reject(new Error); + assert.equal(1, called); + done(); + }) + }); + + describe('return values', function(){ + it('on()', function(done){ + var promise = new Promise() + assert.ok(promise.on('jump', function(){}) instanceof Promise); + done() + }); + + it('onFulfill()', function(done){ + var promise = new Promise() + assert.ok(promise.onFulfill(function(){}) instanceof Promise); + done(); + }) + it('onReject()', function(done){ + var promise = new Promise() + assert.ok(promise.onReject(function(){}) instanceof Promise); + done(); + }) + it('onResolve()', function(done){ + var promise = new Promise() + assert.ok(promise.onResolve(function(){}) instanceof Promise); + done(); + }) + }) + + describe('casting errors', function(){ + describe('reject()', function(){ + it('does not cast arguments to Error', function(done){ + var p = new Promise(function (err, arg) { + assert.equal(3, err); + done(); + }); + + p.reject(3); + }) + }) + }) + + describe('then catching', function(){ + it('should not catch returned promise fulfillments', function(done){ + var p1 = new Promise; + + var p2 = p1.then(function () { return 'step 1' }) + + p2.onFulfill(function () { throw new Error('fulfill threw me') }) + p2.reject = assert.ifError.bind(assert, new Error('reject should not have been called')); + + setTimeout(function () { + assert.throws(function () { + p1.fulfill(); + }, /fulfill threw me/) + done(); + }, 10); + + }) + + it('can be disabled using .end()', function(done){ + var p = new Promise; + + var p2 = p.then(function () { throw new Error('shucks') }) + p2.end(); + + setTimeout(function () { + try { + p.fulfill(); + } catch (err) { + assert.ok(/shucks/.test(err)) + done(); + } + + setTimeout(function () { + done(new Error('error was swallowed')); + }, 10); + + }, 10); + }) + }) +}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js new file mode 100644 index 0000000..ebb4626 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js @@ -0,0 +1,35 @@ + +/** + * Module dependencies. + */ + +var assert = require('assert') +var Promise = require('../lib/promise'); +var aplus = require('promises-aplus-tests'); + +// tests + +var adapter = {}; +adapter.fulfilled = function (value) { + var p = new Promise; + p.fulfill(value); + return p; +}; +adapter.rejected = function (reason) { + var p = new Promise; + p.reject(reason); + return p; +} +adapter.pending = function () { + var p = new Promise; + return { + promise: p + , fulfill: p.fulfill.bind(p) + , reject: p.reject.bind(p) + } +} + +aplus(adapter, function (err) { + assert.ifError(err); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile new file mode 100644 index 0000000..dded504 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile @@ -0,0 +1,8 @@ + +test: + ./node_modules/.bin/mocha test/test.js + +test-browser: + ./node_modules/.bin/serve test/ + +.PHONY: test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md new file mode 100644 index 0000000..c93d43f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md @@ -0,0 +1,65 @@ + +# ms.js + +Ever find yourself doing math in your head or writing `1000 * 60 * 60 …`? +Don't want to add obstrusive `Number` prototype extensions to your reusable +/ distributable modules and projects? + +`ms` is a tiny utility that you can leverage when your application needs to +accept a number of miliseconds as a parameter. + +If a number is supplied to `ms`, it returns it immediately (e.g: +If a string that contains the number is supplied, it returns it immediately as +a number (e.g: it returns `100` for `'100'`). + +However, if you pass a string with a number and a valid unit, hte number of +equivalent ms is returned. + +```js +ms('1d') // 86400000 +ms('10h') // 36000000 +ms('2h') // 7200000 +ms('1m') // 60000 +ms('5ms') // 5000 +ms('100') // '100' +ms(100) // 100 +``` + +## How to use + +### Node + +```js +require('ms') +``` + +### Browser + +```html + +``` + +## Credits + +(The MIT License) + +Copyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js new file mode 100644 index 0000000..b4621bc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js @@ -0,0 +1,35 @@ +/** + +# ms.js + +No more painful `setTimeout(fn, 60 * 4 * 3 * 2 * 1 * Infinity * NaN * '☃')`. + + ms('2d') // 172800000 + ms('1.5h') // 5400000 + ms('1h') // 3600000 + ms('1m') // 60000 + ms('5s') // 5000 + ms('500ms') // 500 + ms('100') // '100' + ms(100) // 100 + +**/ + +(function (g) { + var r = /(\d*.?\d+)([mshd]+)/ + , _ = {} + + _.ms = 1; + _.s = 1000; + _.m = _.s * 60; + _.h = _.m * 60; + _.d = _.h * 24; + + function ms (s) { + if (s == Number(s)) return Number(s); + r.exec(s.toLowerCase()); + return RegExp.$1 * _[RegExp.$2]; + } + + g.top ? g.ms = ms : module.exports = ms; +})(this); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json new file mode 100644 index 0000000..7433303 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json @@ -0,0 +1,19 @@ +{ + "name": "ms", + "version": "0.1.0", + "description": "Tiny ms conversion utility", + "main": "./ms", + "devDependencies": { + "mocha": "*", + "expect.js": "*", + "serve": "*" + }, + "readme": "\n# ms.js\n\nEver find yourself doing math in your head or writing `1000 * 60 * 60 …`?\nDon't want to add obstrusive `Number` prototype extensions to your reusable\n/ distributable modules and projects?\n\n`ms` is a tiny utility that you can leverage when your application needs to\naccept a number of miliseconds as a parameter.\n\nIf a number is supplied to `ms`, it returns it immediately (e.g:\nIf a string that contains the number is supplied, it returns it immediately as\na number (e.g: it returns `100` for `'100'`).\n\nHowever, if you pass a string with a number and a valid unit, hte number of\nequivalent ms is returned.\n\n```js\nms('1d') // 86400000\nms('10h') // 36000000\nms('2h') // 7200000\nms('1m') // 60000\nms('5ms') // 5000\nms('100') // '100'\nms(100) // 100\n```\n\n## How to use\n\n### Node\n\n```js\nrequire('ms')\n```\n\n### Browser\n\n```html\n\n```\n\n## Credits\n\n(The MIT License)\n\nCopyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", + "readmeFilename": "README.md", + "_id": "ms@0.1.0", + "dist": { + "shasum": "0096a17f4f0ea67a9d013fddc474326bfa64e134" + }, + "_from": "ms@0.1.0", + "_resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html new file mode 100644 index 0000000..79edc40 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html @@ -0,0 +1,19 @@ + + + + ms.js tests + + + + + + + + + + + + +
    + + diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js new file mode 100644 index 0000000..8ccd0ea --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js @@ -0,0 +1,9266 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
    a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
    " + + "" + + "
    "; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
    t
    "; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
    "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

    "; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
    "; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
    ", "
    " ], + thead: [ 1, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + col: [ 2, "", "
    " ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + +or as a CommonJS, [Node.js](http://nodejs.org) or AMD module using `require`. + +For Node, put the *bignumber.js* file into the same directory as the file that is requiring it and use + + var BigNumber = require('./bignumber'); + +or put it in a *node_modules* directory within the directory and use `require('bignumber')`. + +The library is also available from the [npm](https://npmjs.org/) registry, so + + $ npm install bignumber.js + +will install this entire directory in a *node_modules* directory within the current directory. +It can then be loaded with `require('bignumber.js')`. + +To load with AMD loader libraries such as [requireJS](http://requirejs.org/): + + require(['bignumber'], function(BigNumber) { + // Use BigNumber here in local scope. No global BigNumber. + }); + +## Use + +*In all examples below, `var`, semicolons and `toString` calls are not shown. +If a commented-out value is in quotes it means `toString` has been called on the preceding expression.* + +The library exports a single function: BigNumber, the constructor of BigNumber instances. +It accepts a value of type Number, String or BigNumber Object, + + x = new BigNumber(123.4567) + y = BigNumber('123456.7e-3') // 'new' is optional + z = new BigNumber(x) + x.equals(y) && y.equals(z) && x.equals(z) // true + +and a base from 2 to 36 inclusive can be specified. + + x = new BigNumber(1011, 2) // "11" + y = new BigNumber('zz.9', 36) // "1295.25" + z = x.plus(y) // "1306.25" + +A BigNumber is immutable in the sense that it is not changed by its methods. + + 0.3 - 0.1 // 0.19999999999999998 + x = new BigNumber(0.3) + x.minus(0.1) // "0.2" + x // "0.3" + +The methods that return a BigNumber can be chained. + + x.dividedBy(y).plus(z).times(9).floor() + x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').ceil() + +Method names over 5 letters in length have a shorter alias. + + x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)) // true + x.cmp(y.mod(z).neg()) == 1 && x.comparedTo(y.modulo(z).negated()) == 1 // true + +Like Javascript's Number type, there are `toExponential`, `toFixed` and `toPrecision` methods + + x = new BigNumber(255.5) + x.toExponential(5) // "2.55500e+2" + x.toFixed(5) // "255.50000" + x.toPrecision(5) // "255.50" + + and a base can be specified for `toString`. + + x.toString(16) // "ff.8" + +The maximum number of decimal places and the rounding mode for division, square root, base conversion, and negative power operations is set by a configuration object passed to the `config` method of the `BigNumber` constructor. +The other arithmetic operations always give the exact result. + + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }) + // Alternatively, BigNumber.config( 10, 4 ); + + x = new BigNumber(2); + y = new BigNumber(3); + z = x.div(y) // "0.6666666667" + z.sqrt() // "0.8164965809" + z.pow(-3) // "3.3749999995" + z.toString(2) // "0.1010101011" + z.times(z) // "0.44444444448888888889" + z.times(z).round(10) // "0.4444444445" + +There is a `toFraction` method with an optional *maximum denominator* argument + + y = new BigNumber(355) + pi = y.dividedBy(113) // "3.1415929204" + pi.toFraction() // [ "7853982301", "2500000000" ] + pi.toFraction(1000) // [ "355", "113" ] + +and `isNaN` and `isFinite` methods, as `NaN` and `Infinity` are valid `BigNumber` values. + + x = new BigNumber(NaN) // "NaN" + y = new BigNumber(Infinity) // "Infinity" + x.isNaN() && !y.isNaN() && !x.isFinite() && !y.isFinite() // true + +The value of a BigNumber is stored in a decimal floating point format in terms of a coefficient, exponent and sign. + + x = new BigNumber(-123.456); + x.c // "1,2,3,4,5,6" coefficient (i.e. significand) + x.e // 2 exponent + x.s // -1 sign + +For futher information see the API reference in the *doc* folder. + +## Test + +The *test* directory contains the test scripts for each method. + +The tests can be run with Node or a browser. + +For a quick test of all the methods, from a command-line shell at the *test/* directory + + $ node quick-test + +To test a single method in more depth, e.g. + + $ node toFraction + +To test all the methods in more depth + + $ node every-test + +For the browser, see *quick-test.html*, *single-test.html* and *every-test.html* in the *test/browser* directory. + +*bignumber-vs-number.html* enables some of the methods of bignumber.js to be compared with those of Javascript's Number type. + +## Performance + +The *perf* directory contains two applications and a *lib* directory containing the BigDecimal libraries used by both. + +*bignumber-vs-bigdecimal.html* tests the performance of bignumber.js against the Javascript translations of two versions of BigDecimal, its use should be more or less self-explanatory. +(The GWT version doesn't work in IE 6.) + +* GWT: java.math.BigDecimal + +* ICU4J: com.ibm.icu.math.BigDecimal + + +The BigDecimal in Node's npm registry is the GWT version. Despite its seeming popularity I have found it to have some serious bugs, see the Node script *perf/lib/bigdecimal_GWT/bugs.js* for examples of flaws in its *remainder*, *divide* and *compareTo* methods. + +*bigtime.js* is a Node command-line application which tests the performance of bignumber.js against the GWT version of BigDecimal from the npm registry. + +For example, to compare the time taken by the bignumber.js `plus` method and the BigDecimal `add` method: + + $ node bigtime plus 10000 40 + +This will time 10000 calls to each, using operands of up to 40 random digits and will check that the results match. + +For help: + + $ node bigtime -h + +See the README in the directory for more information. + +## Build + +I.e. minify. + +For Node, if uglify-js is installed globally ( `npm install uglify-js -g` ) then + + uglifyjs -o ./bignumber.min.js ./bignumber.js + +will create *bignumber.min.js*. + +## Feedback + +Bugs: surely not! Open an issue, please. +Other feedback to: + +Michael Mclaughlin +M8ch88l@gmail.com + +Bitcoin donation to: +**1KdnpLRSkWJs4FXPzj7pQ39H4Ur6Urydti** +Thank you + +## Licence + +See LICENCE. + +## Change Log + +####1.0.1 +* Bugfix: error messages with incorrect method name +* Corrected a couple of spelling mistakes in comments +* Very minor regex tweaks + +####1.0.0 +* 8/11/2012 Initial release + +[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/50b85fd919b406ef9312551092a95fb7 "githalytics.com")](http://githalytics.com/MikeMcl/bignumber.js) diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js new file mode 100644 index 0000000..c79e611 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js @@ -0,0 +1,1909 @@ +/* bignumber.js v1.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */ +;(function ( global ) { + 'use strict'; + + /* + bignumber.js v1.0.1 + A Javascript library for arbitrary-precision arithmetic. + https://github.com/MikeMcl/bignumber.js + Copyright (c) 2012 Michael Mclaughlin + MIT Expat Licence + */ + + /*********************************** DEFAULTS ************************************/ + + /* + * The default values below must be integers within the stated ranges (inclusive). + * Most of these values can be changed programmatically using BigNumber.config(). + */ + + /* + * The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, + * MAX_EXP, and the argument to toFixed, toPrecision and toExponential, beyond + * which an exception is thrown (if ERRORS is true). + */ + var MAX = 1E9, // 0 to 1e+9 + + // Limit of magnitude of exponent argument to toPower. + MAX_POWER = 1E6, // 1 to 1e+6 + + // The maximum number of decimal places for operations involving division. + DECIMAL_PLACES = 20, // 0 to MAX + + /* + * The rounding mode used when rounding to the above decimal places, and when + * using toFixed, toPrecision and toExponential, and round (default value). + * UP 0 Away from zero. + * DOWN 1 Towards zero. + * CEIL 2 Towards +Infinity. + * FLOOR 3 Towards -Infinity. + * HALF_UP 4 Towards nearest neighbour. If equidistant, up. + * HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + * HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + * HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + * HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + */ + ROUNDING_MODE = 4, // 0 to 8 + + // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] + + // The exponent value at and beneath which toString returns exponential notation. + // Number type: -7 + TO_EXP_NEG = -7, // 0 to -MAX + + // The exponent value at and above which toString returns exponential notation. + // Number type: 21 + TO_EXP_POS = 21, // 0 to MAX + + // RANGE : [MIN_EXP, MAX_EXP] + + // The minimum exponent value, beneath which underflow to zero occurs. + // Number type: -324 (5e-324) + MIN_EXP = -MAX, // -1 to -MAX + + // The maximum exponent value, above which overflow to Infinity occurs. + // Number type: 308 (1.7976931348623157e+308) + MAX_EXP = MAX, // 1 to MAX + + // Whether BigNumber Errors are ever thrown. + // CHANGE parseInt to parseFloat if changing ERRORS to false. + ERRORS = true, // true or false + parse = parseInt, // parseInt or parseFloat + + /***********************************************************************************/ + + P = BigNumber.prototype, + DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz', + outOfRange, + id = 0, + isValid = /^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i, + trim = String.prototype.trim || function () {return this.replace(/^\s+|\s+$/g, '')}, + ONE = BigNumber(1); + + + // CONSTRUCTOR + + + /* + * The exported function. + * Create and return a new instance of a BigNumber object. + * + * n {number|string|BigNumber} A numeric value. + * [b] {number} The base of n. Integer, 2 to 36 inclusive. + */ + function BigNumber( n, b ) { + var isNum, i, j, + x = this; + + // Enable constructor usage without new. + if ( !(x instanceof BigNumber) ) { + return new BigNumber( n, b ) + } + + // Duplicate. + if ( n instanceof BigNumber ) { + id = 0; + + // i is undefined. + if ( b !== i) { + n = n['toS']() + } else { + x['s'] = n['s']; + x['e'] = n['e']; + x['c'] = ( n = n['c'] ) ? n.slice() : n; + return + } + } + + // Check if number and if minus zero. Convert to string. + if ( typeof n != 'string' ) { + n = ( isNum = Object.prototype.toString.call(n) == '[object Number]' ) && + n === 0 && 1 / n < 0 ? '-0' : n + '' + } + + if ( b === i && isValid.test(n) ) { + + // Determine sign. + x['s'] = n.charAt(0) == '-' ? ( n = n.slice(1), -1 ) : 1 + + // Either n is not a valid BigNumber or a base has been specified. + } else { + + // Enable exponential notation to be used with base 10 argument. + // Ensure return value is rounded to DECIMAL_PLACES as with other bases. + if ( b == 10 ) { + return new BigNumber(n)['div'](ONE) + } + + /* + * Follow Javascript numbers in allowing numbers with fraction digits + * to omit a leading zero and allowing a leading plus sign e.g. '+.5' for '0.5'. + */ + n = trim.call(n).replace( /^\+(?!-)/, '' ).replace( /^(-?)\./, '$10.' ); + + x['s'] = n.charAt(0) == '-' ? ( n = n.replace( /^-(?!-)/, '' ), -1 ) : 1; + + if ( b != null ) { + + if ( ( b == (b | 0) || !ERRORS ) && + !( outOfRange = !( b >= 2 && b <= 36 ) ) ) { + + i = '[' + DIGITS.slice( 0, b = b | 0 ) + ']+'; + + // Test non-decimal number validity. + // Any number in exponential form will fail due to the e+/-. + if ( j = new RegExp( '^' + i + '(?:\\.' + i + ')?$', 'i' ).test(n) ) { + + if ( isNum ) { + if ( n.replace('.', '').length > 15 ) { + + // 'new BigNumber() number type has more than 15 significant digits: {n}' + ifExceptionsThrow( n, 0 ) + } + + // Prevent later check for length on converted number. + isNum = !isNum + } + n = convert( n, 10, b, x['s'] ) + } else if ( n != 'Infinity' && n != 'NaN' ) { + + // 'new BigNumber() not a base {b} number: {n}' + ifExceptionsThrow( n, 1, b ); + n = 'NaN' + } + } else { + + // 'new BigNumber() base not an integer: {b}' + // 'new BigNumber() base out of range: {b}' + ifExceptionsThrow( b, 2 ); + + // Ignore base. + j = isValid.test(n) + } + } else { + j = isValid.test(n) + } + + if ( !j ) { + + // Infinity/NaN + x['c'] = x['e'] = null; + + // NaN + if ( n != 'Infinity' ) { + + // No exception on NaN. + if ( n != 'NaN' ) { + + // 'new BigNumber() not a number: {n}' + ifExceptionsThrow( n, 3 ) + } + x['s'] = null + } + id = 0; + + return + } + } + + // Decimal point? + if ( ( i = n.indexOf('.') ) > -1 ) { + n = n.replace( '.', '' ) + } + + // Exponential form? + if ( ( j = n.search(/e/i) ) > 0 ) { + + // Determine exponent. + if ( i < 0 ) { + i = j + } + i += +n.slice( j + 1 ); + n = n.substring( 0, j ) + + } else if ( i < 0 ) { + + // Integer. + i = n.length + } + + // Disallow numbers over 15 digits if number type. + if ( b = n.length, isNum && b > 15 ) { + + // 'new BigNumber() number type has more than 15 significant digits: {n}' + ifExceptionsThrow( n, 0 ) + } + + // Determine leading zeros. + for ( id = j = 0; n.charAt(j) == '0'; j++ ) { + } + + // Overflow? + if ( ( i -= j + 1 ) > MAX_EXP ) { + + // Infinity. + x['c'] = x['e'] = null + + // Zero or underflow? + } else if ( j == b || i < MIN_EXP ) { + + // Zero. + x['c'] = [ x['e'] = 0 ] + } else { + + // Determine trailing zeros. + for ( ; n.charAt(--b) == '0'; ) { + } + + x['e'] = i; + x['c'] = []; + + // Convert string to array of digits (without leading and trailing zeros). + for ( i = 0; j <= b; x['c'][i++] = +n.charAt(j++) ) { + } + } + } + + + // CONSTRUCTOR PROPERTIES/METHODS + + + BigNumber['ROUND_UP'] = 0; + BigNumber['ROUND_DOWN'] = 1; + BigNumber['ROUND_CEIL'] = 2; + BigNumber['ROUND_FLOOR'] = 3; + BigNumber['ROUND_HALF_UP'] = 4; + BigNumber['ROUND_HALF_DOWN'] = 5; + BigNumber['ROUND_HALF_EVEN'] = 6; + BigNumber['ROUND_HALF_CEIL'] = 7; + BigNumber['ROUND_HALF_FLOOR'] = 8; + + + /* + * Configure infrequently-changing library-wide settings. + * + * Accept an object or an argument list, with one or many of the following + * properties or parameters respectively: + * [ DECIMAL_PLACES [, ROUNDING_MODE [, EXPONENTIAL_AT [, RANGE [, ERRORS ]]]]] + * + * E.g. + * BigNumber.config(20, 4) is equivalent to + * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) + * Ignore properties/parameters set to null or undefined. + * + * Return an object with the properties current values. + */ + BigNumber['config'] = function () { + var v, p, + i = 0, + r = {}, + a = arguments, + o = a[0], + c = 'config', + inRange = function ( n, lo, hi ) { + return !( ( outOfRange = n < lo || n > hi ) || + parse(n) != n && n !== 0 ) + }, + has = o && typeof o == 'object' + ? function () {if ( o.hasOwnProperty(p) ) return ( v = o[p] ) != null} + : function () {if ( a.length > i ) return ( v = a[i++] ) != null}; + + // [DECIMAL_PLACES] {number} Integer, 0 to MAX inclusive. + if ( has( p = 'DECIMAL_PLACES' ) ) { + + if ( inRange( v, 0, MAX ) ) { + DECIMAL_PLACES = v | 0 + } else { + + // 'config() DECIMAL_PLACES not an integer: {v}' + // 'config() DECIMAL_PLACES out of range: {v}' + ifExceptionsThrow( v, p, c ) + } + } + r[p] = DECIMAL_PLACES; + + // [ROUNDING_MODE] {number} Integer, 0 to 8 inclusive. + if ( has( p = 'ROUNDING_MODE' ) ) { + + if ( inRange( v, 0, 8 ) ) { + ROUNDING_MODE = v | 0 + } else { + + // 'config() ROUNDING_MODE not an integer: {v}' + // 'config() ROUNDING_MODE out of range: {v}' + ifExceptionsThrow( v, p, c ) + } + } + r[p] = ROUNDING_MODE; + + /* + * [EXPONENTIAL_AT] {number|number[]} Integer, -MAX to MAX inclusive or + * [ integer -MAX to 0 inclusive, 0 to MAX inclusive ]. + */ + if ( has( p = 'EXPONENTIAL_AT' ) ) { + + if ( inRange( v, -MAX, MAX ) ) { + TO_EXP_NEG = -( TO_EXP_POS = ~~( v < 0 ? -v : +v ) ) + } else if ( !outOfRange && v && inRange( v[0], -MAX, 0 ) && + inRange( v[1], 0, MAX ) ) { + TO_EXP_NEG = ~~v[0], TO_EXP_POS = ~~v[1] + } else { + + // 'config() EXPONENTIAL_AT not an integer or not [integer, integer]: {v}' + // 'config() EXPONENTIAL_AT out of range or not [negative, positive: {v}' + ifExceptionsThrow( v, p, c, 1 ) + } + } + r[p] = [ TO_EXP_NEG, TO_EXP_POS ]; + + /* + * [RANGE][ {number|number[]} Non-zero integer, -MAX to MAX inclusive or + * [ integer -MAX to -1 inclusive, integer 1 to MAX inclusive ]. + */ + if ( has( p = 'RANGE' ) ) { + + if ( inRange( v, -MAX, MAX ) && ~~v ) { + MIN_EXP = -( MAX_EXP = ~~( v < 0 ? -v : +v ) ) + } else if ( !outOfRange && v && inRange( v[0], -MAX, -1 ) && + inRange( v[1], 1, MAX ) ) { + MIN_EXP = ~~v[0], MAX_EXP = ~~v[1] + } else { + + // 'config() RANGE not a non-zero integer or not [integer, integer]: {v}' + // 'config() RANGE out of range or not [negative, positive: {v}' + ifExceptionsThrow( v, p, c, 1, 1 ) + } + } + r[p] = [ MIN_EXP, MAX_EXP ]; + + // [ERRORS] {boolean|number} true, false, 1 or 0. + if ( has( p = 'ERRORS' ) ) { + + if ( v === !!v || v === 1 || v === 0 ) { + parse = ( outOfRange = id = 0, ERRORS = !!v ) + ? parseInt + : parseFloat + } else { + + // 'config() ERRORS not a boolean or binary digit: {v}' + ifExceptionsThrow( v, p, c, 0, 0, 1 ) + } + } + r[p] = ERRORS; + + return r + }; + + + // PRIVATE FUNCTIONS + + + // Assemble error messages. Throw BigNumber Errors. + function ifExceptionsThrow( arg, i, j, isArray, isRange, isErrors) { + if ( ERRORS ) { + var method = ['new BigNumber', 'cmp', 'div', 'eq', 'gt', 'gte', 'lt', + 'lte', 'minus', 'mod', 'plus', 'times', 'toFr' + ][ id ? id < 0 ? -id : id : 1 / id < 0 ? 1 : 0 ] + '()', + error = outOfRange ? ' out of range' : ' not a' + + ( isRange ? ' non-zero' : 'n' ) + ' integer'; + + error = ( [ + method + ' number type has more than 15 significant digits', + method + ' not a base ' + j + ' number', + method + ' base' + error, + method + ' not a number' ][i] || + j + '() ' + i + ( isErrors + ? ' not a boolean or binary digit' + : error + ( isArray + ? ' or not [' + ( outOfRange + ? ' negative, positive' + : ' integer, integer' ) + ' ]' + : '' ) ) ) + ': ' + arg; + + outOfRange = id = 0; + throw { + name : 'BigNumber Error', + message : error, + toString : function () {return this.name + ': ' + this.message} + } + } + } + + + /* + * Convert a numeric string of baseIn to a numeric string of baseOut. + */ + function convert( nStr, baseOut, baseIn, sign ) { + var e, dvs, dvd, nArr, fracArr, fracBN; + + // Convert string of base bIn to an array of numbers of baseOut. + // Eg. strToArr('255', 10) where baseOut is 16, returns [15, 15]. + // Eg. strToArr('ff', 16) where baseOut is 10, returns [2, 5, 5]. + function strToArr( str, bIn ) { + var j, + i = 0, + strL = str.length, + arrL, + arr = [0]; + + for ( bIn = bIn || baseIn; i < strL; i++ ) { + + for ( arrL = arr.length, j = 0; j < arrL; arr[j] *= bIn, j++ ) { + } + + for ( arr[0] += DIGITS.indexOf( str.charAt(i) ), j = 0; + j < arr.length; + j++ ) { + + if ( arr[j] > baseOut - 1 ) { + + if ( arr[j + 1] == null ) { + arr[j + 1] = 0 + } + arr[j + 1] += arr[j] / baseOut ^ 0; + arr[j] %= baseOut + } + } + } + + return arr.reverse() + } + + // Convert array to string. + // E.g. arrToStr( [9, 10, 11] ) becomes '9ab' (in bases above 11). + function arrToStr( arr ) { + var i = 0, + arrL = arr.length, + str = ''; + + for ( ; i < arrL; str += DIGITS.charAt( arr[i++] ) ) { + } + + return str + } + + nStr = nStr.toLowerCase(); + + /* + * If non-integer convert integer part and fraction part separately. + * Convert the fraction part as if it is an integer than use division to + * reduce it down again to a value less than one. + */ + if ( ( e = nStr.indexOf( '.' ) ) > -1 ) { + + /* + * Calculate the power to which to raise the base to get the number + * to divide the fraction part by after it has been converted as an + * integer to the required base. + */ + e = nStr.length - e - 1; + + // Use toFixed to avoid possible exponential notation. + dvs = strToArr( new BigNumber(baseIn)['pow'](e)['toF'](), 10 ); + + nArr = nStr.split('.'); + + // Convert the base of the fraction part (as integer). + dvd = strToArr( nArr[1] ); + + // Convert the base of the integer part. + nArr = strToArr( nArr[0] ); + + // Result will be a BigNumber with a value less than 1. + fracBN = divide( dvd, dvs, dvd.length - dvs.length, sign, baseOut, + + // Is least significant digit of integer part an odd number? + nArr[nArr.length - 1] & 1 ); + + fracArr = fracBN['c']; + + // e can be <= 0 ( if e == 0, fracArr is [0] or [1] ). + if ( e = fracBN['e'] ) { + + // Append zeros according to the exponent of the result. + for ( ; ++e; fracArr.unshift(0) ) { + } + + // Append the fraction part to the converted integer part. + nStr = arrToStr(nArr) + '.' + arrToStr(fracArr) + + // fracArr is [1]. + // Fraction digits rounded up, so increment last digit of integer part. + } else if ( fracArr[0] ) { + + if ( nArr[ e = nArr.length - 1 ] < baseOut - 1 ) { + ++nArr[e]; + nStr = arrToStr(nArr) + } else { + nStr = new BigNumber( arrToStr(nArr), + baseOut )['plus'](ONE)['toS'](baseOut) + } + + // fracArr is [0]. No fraction digits. + } else { + nStr = arrToStr(nArr) + } + } else { + + // Simple integer. Convert base. + nStr = arrToStr( strToArr(nStr) ) + } + + return nStr + } + + + // Perform division in the specified base. Called by div and convert. + function divide( dvd, dvs, exp, s, base, isOdd ) { + var dvsL, dvsT, next, cmp, remI, + dvsZ = dvs.slice(), + dvdI = dvsL = dvs.length, + dvdL = dvd.length, + rem = dvd.slice( 0, dvsL ), + remL = rem.length, + quo = new BigNumber(ONE), + qc = quo['c'] = [], + qi = 0, + dig = DECIMAL_PLACES + ( quo['e'] = exp ) + 1; + + quo['s'] = s; + s = dig < 0 ? 0 : dig; + + // Add zeros to make remainder as long as divisor. + for ( ; remL++ < dvsL; rem.push(0) ) { + } + + // Create version of divisor with leading zero. + dvsZ.unshift(0); + + do { + + // 'next' is how many times the divisor goes into the current remainder. + for ( next = 0; next < base; next++ ) { + + // Compare divisor and remainder. + if ( dvsL != ( remL = rem.length ) ) { + cmp = dvsL > remL ? 1 : -1 + } else { + for ( remI = -1, cmp = 0; ++remI < dvsL; ) { + + if ( dvs[remI] != rem[remI] ) { + cmp = dvs[remI] > rem[remI] ? 1 : -1; + break + } + } + } + + // Subtract divisor from remainder (if divisor < remainder). + if ( cmp < 0 ) { + + // Remainder cannot be more than one digit longer than divisor. + // Equalise lengths using divisor with extra leading zero? + for ( dvsT = remL == dvsL ? dvs : dvsZ; remL; ) { + + if ( rem[--remL] < dvsT[remL] ) { + + for ( remI = remL; + remI && !rem[--remI]; + rem[remI] = base - 1 ) { + } + --rem[remI]; + rem[remL] += base + } + rem[remL] -= dvsT[remL] + } + for ( ; !rem[0]; rem.shift() ) { + } + } else { + break + } + } + + // Add the 'next' digit to the result array. + qc[qi++] = cmp ? next : ++next; + + // Update the remainder. + rem[0] && cmp + ? ( rem[remL] = dvd[dvdI] || 0 ) + : ( rem = [ dvd[dvdI] ] ) + + } while ( ( dvdI++ < dvdL || rem[0] != null ) && s-- ); + + // Leading zero? Do not remove if result is simply zero (qi == 1). + if ( !qc[0] && qi != 1) { + + // There can't be more than one zero. + --quo['e']; + qc.shift() + } + + // Round? + if ( qi > dig ) { + rnd( quo, DECIMAL_PLACES, base, isOdd, rem[0] != null ) + } + + // Overflow? + if ( quo['e'] > MAX_EXP ) { + + // Infinity. + quo['c'] = quo['e'] = null + + // Underflow? + } else if ( quo['e'] < MIN_EXP ) { + + // Zero. + quo['c'] = [quo['e'] = 0] + } + + return quo + } + + + /* + * Return a string representing the value of BigNumber n in normal or + * exponential notation rounded to the specified decimal places or + * significant digits. + * Called by toString, toExponential (exp 1), toFixed, and toPrecision (exp 2). + * d is the index (with the value in normal notation) of the digit that may be + * rounded up. + */ + function format( n, d, exp ) { + + // Initially, i is the number of decimal places required. + var i = d - (n = new BigNumber(n))['e'], + c = n['c']; + + // +-Infinity or NaN? + if ( !c ) { + return n['toS']() + } + + // Round? + if ( c.length > ++d ) { + rnd( n, i, 10 ) + } + + // Recalculate d if toFixed as n['e'] may have changed if value rounded up. + i = c[0] == 0 ? i + 1 : exp ? d : n['e'] + i + 1; + + // Append zeros? + for ( ; c.length < i; c.push(0) ) { + } + i = n['e']; + + /* + * toPrecision returns exponential notation if the number of significant + * digits specified is less than the number of digits necessary to + * represent the integer part of the value in normal notation. + */ + return exp == 1 || exp == 2 && ( --d < i || i <= TO_EXP_NEG ) + + // Exponential notation. + ? ( n['s'] < 0 && c[0] ? '-' : '' ) + ( c.length > 1 + ? ( c.splice( 1, 0, '.' ), c.join('') ) + : c[0] ) + ( i < 0 ? 'e' : 'e+' ) + i + + // Normal notation. + : n['toS']() + } + + + // Round if necessary. + // Called by divide, format, setMode and sqrt. + function rnd( x, dp, base, isOdd, r) { + var xc = x['c'], + isNeg = x['s'] < 0, + half = base / 2, + i = x['e'] + dp + 1, + + // 'next' is the digit after the digit that may be rounded up. + next = xc[i], + + /* + * 'more' is whether there are digits after 'next'. + * E.g. + * 0.005 (e = -3) to be rounded to 0 decimal places (dp = 0) gives i = -2 + * The 'next' digit is zero, and there ARE 'more' digits after it. + * 0.5 (e = -1) dp = 0 gives i = 0 + * The 'next' digit is 5 and there are no 'more' digits after it. + */ + more = r || i < 0 || xc[i + 1] != null; + + r = ROUNDING_MODE < 4 + ? ( next != null || more ) && + ( ROUNDING_MODE == 0 || + ROUNDING_MODE == 2 && !isNeg || + ROUNDING_MODE == 3 && isNeg ) + : next > half || next == half && + ( ROUNDING_MODE == 4 || more || + + /* + * isOdd is used in base conversion and refers to the least significant + * digit of the integer part of the value to be converted. The fraction + * part is rounded by this method separately from the integer part. + */ + ROUNDING_MODE == 6 && ( xc[i - 1] & 1 || !dp && isOdd ) || + ROUNDING_MODE == 7 && !isNeg || + ROUNDING_MODE == 8 && isNeg ); + + if ( i < 1 || !xc[0] ) { + xc.length = 0; + xc.push(0); + + if ( r ) { + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xc[0] = 1; + x['e'] = -dp + } else { + + // Zero. + x['e'] = 0 + } + + return x + } + + // Remove any digits after the required decimal places. + xc.length = i--; + + // Round up? + if ( r ) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for ( --base; ++xc[i] > base; ) { + xc[i] = 0; + + if ( !i-- ) { + ++x['e']; + xc.unshift(1) + } + } + } + + // Remove trailing zeros. + for ( i = xc.length; !xc[--i]; xc.pop() ) { + } + + return x + } + + + // Round after setting the appropriate rounding mode. + // Handles ceil, floor and round. + function setMode( x, dp, rm ) { + var r = ROUNDING_MODE; + + ROUNDING_MODE = rm; + x = new BigNumber(x); + x['c'] && rnd( x, dp, 10 ); + ROUNDING_MODE = r; + + return x + } + + + // PROTOTYPE/INSTANCE METHODS + + + /* + * Return a new BigNumber whose value is the absolute value of this BigNumber. + */ + P['abs'] = P['absoluteValue'] = function () { + var x = new BigNumber(this); + + if ( x['s'] < 0 ) { + x['s'] = 1 + } + + return x + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * rounded to a whole number in the direction of Infinity. + */ + P['ceil'] = function () { + return setMode( this, 0, 2 ) + }; + + + /* + * Return + * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), + * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), + * 0 if they have the same value, + * or null if the value of either is NaN. + */ + P['comparedTo'] = P['cmp'] = function ( y, b ) { + var a, + x = this, + xc = x['c'], + yc = ( id = -id, y = new BigNumber( y, b ) )['c'], + i = x['s'], + j = y['s'], + k = x['e'], + l = y['e']; + + // Either NaN? + if ( !i || !j ) { + return null + } + + a = xc && !xc[0], b = yc && !yc[0]; + + // Either zero? + if ( a || b ) { + return a ? b ? 0 : -j : i + } + + // Signs differ? + if ( i != j ) { + return i + } + + // Either Infinity? + if ( a = i < 0, b = k == l, !xc || !yc ) { + return b ? 0 : !xc ^ a ? 1 : -1 + } + + // Compare exponents. + if ( !b ) { + return k > l ^ a ? 1 : -1 + } + + // Compare digit by digit. + for ( i = -1, + j = ( k = xc.length ) < ( l = yc.length ) ? k : l; + ++i < j; ) { + + if ( xc[i] != yc[i] ) { + return xc[i] > yc[i] ^ a ? 1 : -1 + } + } + // Compare lengths. + return k == l ? 0 : k > l ^ a ? 1 : -1 + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new BigNumber whose value is the value of this BigNumber + * divided by the value of BigNumber(y, b), rounded according to + * DECIMAL_PLACES and ROUNDING_MODE. + */ + P['dividedBy'] = P['div'] = function ( y, b ) { + var xc = this['c'], + xe = this['e'], + xs = this['s'], + yc = ( id = 2, y = new BigNumber( y, b ) )['c'], + ye = y['e'], + ys = y['s'], + s = xs == ys ? 1 : -1; + + // Either NaN/Infinity/0? + return !xe && ( !xc || !xc[0] ) || !ye && ( !yc || !yc[0] ) + + // Either NaN? + ? new BigNumber( !xs || !ys || + + // Both 0 or both Infinity? + ( xc ? yc && xc[0] == yc[0] : !yc ) + + // Return NaN. + ? NaN + + // x is 0 or y is Infinity? + : xc && xc[0] == 0 || !yc + + // Return +-0. + ? s * 0 + + // y is 0. Return +-Infinity. + : s / 0 ) + + : divide( xc, yc, xe - ye, s, 10 ) + }; + + + /* + * Return true if the value of this BigNumber is equal to the value of + * BigNumber(n, b), otherwise returns false. + */ + P['equals'] = P['eq'] = function ( n, b ) { + id = 3; + return this['cmp']( n, b ) === 0 + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * rounded to a whole number in the direction of -Infinity. + */ + P['floor'] = function () { + return setMode( this, 0, 3 ) + }; + + + /* + * Return true if the value of this BigNumber is greater than the value of + * BigNumber(n, b), otherwise returns false. + */ + P['greaterThan'] = P['gt'] = function ( n, b ) { + id = 4; + return this['cmp']( n, b ) > 0 + }; + + + /* + * Return true if the value of this BigNumber is greater than or equal to + * the value of BigNumber(n, b), otherwise returns false. + */ + P['greaterThanOrEqualTo'] = P['gte'] = function ( n, b ) { + id = 5; + return ( b = this['cmp']( n, b ) ) == 1 || b === 0 + }; + + + /* + * Return true if the value of this BigNumber is a finite number, otherwise + * returns false. + */ + P['isFinite'] = P['isF'] = function () { + return !!this['c'] + }; + + + /* + * Return true if the value of this BigNumber is NaN, otherwise returns + * false. + */ + P['isNaN'] = function () { + return !this['s'] + }; + + + /* + * Return true if the value of this BigNumber is negative, otherwise + * returns false. + */ + P['isNegative'] = P['isNeg'] = function () { + return this['s'] < 0 + }; + + + /* + * Return true if the value of this BigNumber is 0 or -0, otherwise returns + * false. + */ + P['isZero'] = P['isZ'] = function () { + return !!this['c'] && this['c'][0] == 0 + }; + + + /* + * Return true if the value of this BigNumber is less than the value of + * BigNumber(n, b), otherwise returns false. + */ + P['lessThan'] = P['lt'] = function ( n, b ) { + id = 6; + return this['cmp']( n, b ) < 0 + }; + + + /* + * Return true if the value of this BigNumber is less than or equal to the + * value of BigNumber(n, b), otherwise returns false. + */ + P['lessThanOrEqualTo'] = P['lte'] = function ( n, b ) { + id = 7; + return ( b = this['cmp']( n, b ) ) == -1 || b === 0 + }; + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new BigNumber whose value is the value of this BigNumber minus + * the value of BigNumber(y, b). + */ + P['minus'] = function ( y, b ) { + var d, i, j, xLTy, + x = this, + a = x['s']; + + b = ( id = 8, y = new BigNumber( y, b ) )['s']; + + // Either NaN? + if ( !a || !b ) { + return new BigNumber(NaN) + } + + // Signs differ? + if ( a != b ) { + return y['s'] = -b, x['plus'](y) + } + + var xc = x['c'], + xe = x['e'], + yc = y['c'], + ye = y['e']; + + if ( !xe || !ye ) { + + // Either Infinity? + if ( !xc || !yc ) { + return xc ? ( y['s'] = -b, y ) : new BigNumber( yc ? x : NaN ) + } + + // Either zero? + if ( !xc[0] || !yc[0] ) { + + // y is non-zero? + return yc[0] + ? ( y['s'] = -b, y ) + + // x is non-zero? + : new BigNumber( xc[0] + ? x + + // Both are zero. + : 0 ) + } + } + + // Determine which is the bigger number. + // Prepend zeros to equalise exponents. + if ( xc = xc.slice(), a = xe - ye ) { + d = ( xLTy = a < 0 ) ? ( a = -a, xc ) : ( ye = xe, yc ); + + for ( d.reverse(), b = a; b--; d.push(0) ) { + } + d.reverse() + } else { + + // Exponents equal. Check digit by digit. + j = ( ( xLTy = xc.length < yc.length ) ? xc : yc ).length; + + for ( a = b = 0; b < j; b++ ) { + + if ( xc[b] != yc[b] ) { + xLTy = xc[b] < yc[b]; + break + } + } + } + + // x < y? Point xc to the array of the bigger number. + if ( xLTy ) { + d = xc, xc = yc, yc = d; + y['s'] = -y['s'] + } + + /* + * Append zeros to xc if shorter. No need to add zeros to yc if shorter + * as subtraction only needs to start at yc.length. + */ + if ( ( b = -( ( j = xc.length ) - yc.length ) ) > 0 ) { + + for ( ; b--; xc[j++] = 0 ) { + } + } + + // Subtract yc from xc. + for ( b = yc.length; b > a; ){ + + if ( xc[--b] < yc[b] ) { + + for ( i = b; i && !xc[--i]; xc[i] = 9 ) { + } + --xc[i]; + xc[b] += 10 + } + xc[b] -= yc[b] + } + + // Remove trailing zeros. + for ( ; xc[--j] == 0; xc.pop() ) { + } + + // Remove leading zeros and adjust exponent accordingly. + for ( ; xc[0] == 0; xc.shift(), --ye ) { + } + + /* + * No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity + * when neither x or y are Infinity. + */ + + // Underflow? + if ( ye < MIN_EXP || !xc[0] ) { + + // Result must be zero. + xc = [ye = 0] + } + + return y['c'] = xc, y['e'] = ye, y + }; + + + /* + * n % 0 = N + * n % N = N + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * N % n = N + * N % 0 = N + * N % N = N + * + * Return a new BigNumber whose value is the value of this BigNumber modulo + * the value of BigNumber(y, b). + */ + P['modulo'] = P['mod'] = function ( y, b ) { + var x = this, + xc = x['c'], + yc = ( id = 9, y = new BigNumber( y, b ) )['c'], + i = x['s'], + j = y['s']; + + // Is x or y NaN, or y zero? + b = !i || !j || yc && !yc[0]; + + if ( b || xc && !xc[0] ) { + return new BigNumber( b ? NaN : x ) + } + + x['s'] = y['s'] = 1; + b = y['cmp'](x) == 1; + x['s'] = i, y['s'] = j; + + return b + ? new BigNumber(x) + : ( i = DECIMAL_PLACES, j = ROUNDING_MODE, + DECIMAL_PLACES = 0, ROUNDING_MODE = 1, + x = x['div'](y), + DECIMAL_PLACES = i, ROUNDING_MODE = j, + this['minus']( x['times'](y) ) ) + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * negated, i.e. multiplied by -1. + */ + P['negated'] = P['neg'] = function () { + var x = new BigNumber(this); + + return x['s'] = -x['s'] || null, x + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new BigNumber whose value is the value of this BigNumber plus + * the value of BigNumber(y, b). + */ + P['plus'] = function ( y, b ) { + var d, + x = this, + a = x['s']; + + b = ( id = 10, y = new BigNumber( y, b ) )['s']; + + // Either NaN? + if ( !a || !b ) { + return new BigNumber(NaN) + } + + // Signs differ? + if ( a != b ) { + return y['s'] = -b, x['minus'](y) + } + + var xe = x['e'], + xc = x['c'], + ye = y['e'], + yc = y['c']; + + if ( !xe || !ye ) { + + // Either Infinity? + if ( !xc || !yc ) { + + // Return +-Infinity. + return new BigNumber( a / 0 ) + } + + // Either zero? + if ( !xc[0] || !yc[0] ) { + + // y is non-zero? + return yc[0] + ? y + : new BigNumber( xc[0] + + // x is non-zero? + ? x + + // Both are zero. Return zero. + : a * 0 ) + } + } + + // Prepend zeros to equalise exponents. + // Note: Faster to use reverse then do unshifts. + if ( xc = xc.slice(), a = xe - ye ) { + d = a > 0 ? ( ye = xe, yc ) : ( a = -a, xc ); + + for ( d.reverse(); a--; d.push(0) ) { + } + d.reverse() + } + + // Point xc to the longer array. + if ( xc.length - yc.length < 0 ) { + d = yc, yc = xc, xc = d + } + + /* + * Only start adding at yc.length - 1 as the + * further digits of xc can be left as they are. + */ + for ( a = yc.length, b = 0; a; + b = ( xc[--a] = xc[a] + yc[a] + b ) / 10 ^ 0, xc[a] %= 10 ) { + } + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + + if ( b ) { + xc.unshift(b); + + // Overflow? (MAX_EXP + 1 possible) + if ( ++ye > MAX_EXP ) { + + // Infinity. + xc = ye = null + } + } + + // Remove trailing zeros. + for ( a = xc.length; xc[--a] == 0; xc.pop() ) { + } + + return y['c'] = xc, y['e'] = ye, y + }; + + + /* + * Return a BigNumber whose value is the value of this BigNumber raised to + * the power e. If e is negative round according to DECIMAL_PLACES and + * ROUNDING_MODE. + * + * e {number} Integer, -MAX_POWER to MAX_POWER inclusive. + */ + P['toPower'] = P['pow'] = function ( e ) { + + // e to integer, avoiding NaN or Infinity becoming 0. + var i = e * 0 == 0 ? e | 0 : e, + x = new BigNumber(this), + y = new BigNumber(ONE); + + // Use Math.pow? + // Pass +-Infinity for out of range exponents. + if ( ( ( ( outOfRange = e < -MAX_POWER || e > MAX_POWER ) && + (i = e * 1 / 0) ) || + + /* + * Any exponent that fails the parse becomes NaN. + * + * Include 'e !== 0' because on Opera -0 == parseFloat(-0) is false, + * despite -0 === parseFloat(-0) && -0 == parseFloat('-0') is true. + */ + parse(e) != e && e !== 0 && !(i = NaN) ) && + + // 'pow() exponent not an integer: {e}' + // 'pow() exponent out of range: {e}' + !ifExceptionsThrow( e, 'exponent', 'pow' ) || + + // Pass zero to Math.pow, as any value to the power zero is 1. + !i ) { + + // i is +-Infinity, NaN or 0. + return new BigNumber( Math.pow( x['toS'](), i ) ) + } + + for ( i = i < 0 ? -i : i; ; ) { + + if ( i & 1 ) { + y = y['times'](x) + } + i >>= 1; + + if ( !i ) { + break + } + x = x['times'](x) + } + + return e < 0 ? ONE['div'](y) : y + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber + * rounded to a maximum of dp decimal places using rounding mode rm, or to + * DECIMAL_PLACES and ROUNDING_MODE respectively if omitted. + * + * [dp] {number} Integer, 0 to MAX inclusive. + * [rm] {number} Integer, 0 to 8 inclusive. + */ + P['round'] = function ( dp, rm ) { + + dp = dp == null || ( ( ( outOfRange = dp < 0 || dp > MAX ) || + parse(dp) != dp ) && + + // 'round() decimal places out of range: {dp}' + // 'round() decimal places not an integer: {dp}' + !ifExceptionsThrow( dp, 'decimal places', 'round' ) ) + ? 0 + : dp | 0; + + rm = rm == null || ( ( ( outOfRange = rm < 0 || rm > 8 ) || + + // Include '&& rm !== 0' because with Opera -0 == parseFloat(-0) is false. + parse(rm) != rm && rm !== 0 ) && + + // 'round() mode not an integer: {rm}' + // 'round() mode out of range: {rm}' + !ifExceptionsThrow( rm, 'mode', 'round' ) ) + ? ROUNDING_MODE + : rm | 0; + + return setMode( this, dp, rm ) + }; + + + /* + * sqrt(-n) = N + * sqrt( N) = N + * sqrt(-I) = N + * sqrt( I) = I + * sqrt( 0) = 0 + * sqrt(-0) = -0 + * + * Return a new BigNumber whose value is the square root of the value of + * this BigNumber, rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P['squareRoot'] = P['sqrt'] = function () { + var estimate, r, approx, + x = this, + xc = x['c'], + i = x['s'], + e = x['e'], + half = new BigNumber('0.5'); + + // Negative/NaN/Infinity/zero? + if ( i !== 1 || !xc || !xc[0] ) { + return new BigNumber( !i || i < 0 && ( !xc || xc[0] ) + ? NaN + : xc ? x : 1 / 0 ) + } + + // Estimate. + i = Math.sqrt( x['toS']() ); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if ( i == 0 || i == 1 / 0 ) { + estimate = xc.join(''); + + if ( !( estimate.length + e & 1 ) ) { + estimate += '0' + } + + r = new BigNumber( Math.sqrt(estimate).toString() ); + r['e'] = ( ( ( e + 1 ) / 2 ) | 0 ) - ( e < 0 || e & 1 ) + } else { + r = new BigNumber( i.toString() ) + } + + i = r['e'] + ( DECIMAL_PLACES += 4 ); + + // Newton-Raphson loop. + do { + approx = r; + r = half['times']( approx['plus']( x['div'](approx) ) ) + } while ( approx['c'].slice( 0, i ).join('') !== + r['c'].slice( 0, i ).join('') ); + + rnd( r, DECIMAL_PLACES -= 4, 10 ); + + return r + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new BigNumber whose value is the value of this BigNumber times + * the value of BigNumber(y, b). + */ + P['times'] = function ( y, b ) { + var c, + x = this, + xc = x['c'], + yc = ( id = 11, y = new BigNumber( y, b ) )['c'], + i = x['e'], + j = y['e'], + a = x['s']; + + y['s'] = a == ( b = y['s'] ) ? 1 : -1; + + // Either NaN/Infinity/0? + if ( !i && ( !xc || !xc[0] ) || !j && ( !yc || !yc[0] ) ) { + + // Either NaN? + return new BigNumber( !a || !b || + + // x is 0 and y is Infinity or y is 0 and x is Infinity? + xc && !xc[0] && !yc || yc && !yc[0] && !xc + + // Return NaN. + ? NaN + + // Either Infinity? + : !xc || !yc + + // Return +-Infinity. + ? y['s'] / 0 + + // x or y is 0. Return +-0. + : y['s'] * 0 ) + } + y['e'] = i + j; + + if ( ( a = xc.length ) < ( b = yc.length ) ) { + c = xc, xc = yc, yc = c, j = a, a = b, b = j + } + + for ( j = a + b, c = []; j--; c.push(0) ) { + } + + // Multiply! + for ( i = b - 1; i > -1; i-- ) { + + for ( b = 0, j = a + i; + j > i; + b = c[j] + yc[i] * xc[j - i - 1] + b, + c[j--] = b % 10 | 0, + b = b / 10 | 0 ) { + } + + if ( b ) { + c[j] = ( c[j] + b ) % 10 + } + } + + b && ++y['e']; + + // Remove any leading zero. + !c[0] && c.shift(); + + // Remove trailing zeros. + for ( j = c.length; !c[--j]; c.pop() ) { + } + + // No zero check needed as only x * 0 == 0 etc. + + // Overflow? + y['c'] = y['e'] > MAX_EXP + + // Infinity. + ? ( y['e'] = null ) + + // Underflow? + : y['e'] < MIN_EXP + + // Zero. + ? [ y['e'] = 0 ] + + // Neither. + : c; + + return y + }; + + + /* + * Return a string representing the value of this BigNumber in exponential + * notation to dp fixed decimal places and rounded using ROUNDING_MODE if + * necessary. + * + * [dp] {number} Integer, 0 to MAX inclusive. + */ + P['toExponential'] = P['toE'] = function ( dp ) { + + return format( this, + ( dp == null || ( ( outOfRange = dp < 0 || dp > MAX ) || + + /* + * Include '&& dp !== 0' because with Opera -0 == parseFloat(-0) is + * false, despite -0 == parseFloat('-0') && 0 == -0 being true. + */ + parse(dp) != dp && dp !== 0 ) && + + // 'toE() decimal places not an integer: {dp}' + // 'toE() decimal places out of range: {dp}' + !ifExceptionsThrow( dp, 'decimal places', 'toE' ) ) && this['c'] + ? this['c'].length - 1 + : dp | 0, 1 ) + }; + + + /* + * Return a string representing the value of this BigNumber in normal + * notation to dp fixed decimal places and rounded using ROUNDING_MODE if + * necessary. + * + * Note: as with Javascript's number type, (-0).toFixed(0) is '0', + * but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Integer, 0 to MAX inclusive. + */ + P['toFixed'] = P['toF'] = function ( dp ) { + var n, str, d, + x = this; + + if ( !( dp == null || ( ( outOfRange = dp < 0 || dp > MAX ) || + parse(dp) != dp && dp !== 0 ) && + + // 'toF() decimal places not an integer: {dp}' + // 'toF() decimal places out of range: {dp}' + !ifExceptionsThrow( dp, 'decimal places', 'toF' ) ) ) { + d = x['e'] + ( dp | 0 ) + } + + n = TO_EXP_NEG, dp = TO_EXP_POS; + TO_EXP_NEG = -( TO_EXP_POS = 1 / 0 ); + + // Note: str is initially undefined. + if ( d == str ) { + str = x['toS']() + } else { + str = format( x, d ); + + // (-0).toFixed() is '0', but (-0.1).toFixed() is '-0'. + // (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. + if ( x['s'] < 0 && x['c'] ) { + + // As e.g. -0 toFixed(3), will wrongly be returned as -0.000 from toString. + if ( !x['c'][0] ) { + str = str.replace(/^-/, '') + + // As e.g. -0.5 if rounded to -0 will cause toString to omit the minus sign. + } else if ( str.indexOf('-') < 0 ) { + str = '-' + str + } + } + } + TO_EXP_NEG = n, TO_EXP_POS = dp; + + return str + }; + + + /* + * Return a string array representing the value of this BigNumber as a + * simple fraction with an integer numerator and an integer denominator. + * The denominator will be a positive non-zero value less than or equal to + * the specified maximum denominator. If a maximum denominator is not + * specified, the denominator will be the lowest value necessary to + * represent the number exactly. + * + * [maxD] {number|string|BigNumber} Integer >= 1 and < Infinity. + */ + P['toFraction'] = P['toFr'] = function ( maxD ) { + var q, frac, n0, d0, d2, n, e, + n1 = d0 = new BigNumber(ONE), + d1 = n0 = new BigNumber('0'), + x = this, + xc = x['c'], + exp = MAX_EXP, + dp = DECIMAL_PLACES, + rm = ROUNDING_MODE, + d = new BigNumber(ONE); + + // NaN, Infinity. + if ( !xc ) { + return x['toS']() + } + + e = d['e'] = xc.length - x['e'] - 1; + + // If max denominator is undefined or null... + if ( maxD == null || + + // or NaN... + ( !( id = 12, n = new BigNumber(maxD) )['s'] || + + // or less than 1, or Infinity... + ( outOfRange = n['cmp'](n1) < 0 || !n['c'] ) || + + // or not an integer... + ( ERRORS && n['e'] < n['c'].length - 1 ) ) && + + // 'toFr() max denominator not an integer: {maxD}' + // 'toFr() max denominator out of range: {maxD}' + !ifExceptionsThrow( maxD, 'max denominator', 'toFr' ) || + + // or greater than the maxD needed to specify the value exactly... + ( maxD = n )['cmp'](d) > 0 ) { + + // d is e.g. 10, 100, 1000, 10000... , n1 is 1. + maxD = e > 0 ? d : n1 + } + + MAX_EXP = 1 / 0; + n = new BigNumber( xc.join('') ); + + for ( DECIMAL_PLACES = 0, ROUNDING_MODE = 1; ; ) { + q = n['div'](d); + d2 = d0['plus']( q['times'](d1) ); + + if ( d2['cmp'](maxD) == 1 ) { + break + } + + d0 = d1, d1 = d2; + + n1 = n0['plus']( q['times']( d2 = n1 ) ); + n0 = d2; + + d = n['minus']( q['times']( d2 = d ) ); + n = d2 + } + + d2 = maxD['minus'](d0)['div'](d1); + n0 = n0['plus']( d2['times'](n1) ); + d0 = d0['plus']( d2['times'](d1) ); + + n0['s'] = n1['s'] = x['s']; + + DECIMAL_PLACES = e * 2; + ROUNDING_MODE = rm; + + // Determine which fraction is closer to x, n0 / d0 or n1 / d1? + frac = n1['div'](d1)['minus'](x)['abs']()['cmp']( + n0['div'](d0)['minus'](x)['abs']() ) < 1 + ? [ n1['toS'](), d1['toS']() ] + : [ n0['toS'](), d0['toS']() ]; + + return MAX_EXP = exp, DECIMAL_PLACES = dp, frac + }; + + + /* + * Return a string representing the value of this BigNumber to sd significant + * digits and rounded using ROUNDING_MODE if necessary. + * If sd is less than the number of digits necessary to represent the integer + * part of the value in normal notation, then use exponential notation. + * + * sd {number} Integer, 1 to MAX inclusive. + */ + P['toPrecision'] = P['toP'] = function ( sd ) { + + /* + * ERRORS true: Throw if sd not undefined, null or an integer in range. + * ERRORS false: Ignore sd if not a number or not in range. + * Truncate non-integers. + */ + return sd == null || ( ( ( outOfRange = sd < 1 || sd > MAX ) || + parse(sd) != sd ) && + + // 'toP() precision not an integer: {sd}' + // 'toP() precision out of range: {sd}' + !ifExceptionsThrow( sd, 'precision', 'toP' ) ) + ? this['toS']() + : format( this, --sd | 0, 2 ) + }; + + + /* + * Return a string representing the value of this BigNumber in base b, or + * base 10 if b is omitted. If a base is specified, including base 10, + * round according to DECIMAL_PLACES and ROUNDING_MODE. + * If a base is not specified, and this BigNumber has a positive exponent + * that is equal to or greater than TO_EXP_POS, or a negative exponent equal + * to or less than TO_EXP_NEG, return exponential notation. + * + * [b] {number} Integer, 2 to 36 inclusive. + */ + P['toString'] = P['toS'] = function ( b ) { + var u, str, strL, + x = this, + xe = x['e']; + + // Infinity or NaN? + if ( xe === null ) { + str = x['s'] ? 'Infinity' : 'NaN' + + // Exponential format? + } else if ( b === u && ( xe <= TO_EXP_NEG || xe >= TO_EXP_POS ) ) { + return format( x, x['c'].length - 1, 1 ) + } else { + str = x['c'].join(''); + + // Negative exponent? + if ( xe < 0 ) { + + // Prepend zeros. + for ( ; ++xe; str = '0' + str ) { + } + str = '0.' + str + + // Positive exponent? + } else if ( strL = str.length, xe > 0 ) { + + if ( ++xe > strL ) { + + // Append zeros. + for ( xe -= strL; xe-- ; str += '0' ) { + } + } else if ( xe < strL ) { + str = str.slice( 0, xe ) + '.' + str.slice(xe) + } + + // Exponent zero. + } else { + if ( u = str.charAt(0), strL > 1 ) { + str = u + '.' + str.slice(1) + + // Avoid '-0' + } else if ( u == '0' ) { + return u + } + } + + if ( b != null ) { + + if ( !( outOfRange = !( b >= 2 && b <= 36) ) && + ( b == (b | 0) || !ERRORS ) ) { + str = convert( str, b | 0, 10, x['s'] ); + + // Avoid '-0' + if ( str == '0') { + return str + } + } else { + + // 'toS() base not an integer: {b}' + // 'toS() base out of range: {b}' + ifExceptionsThrow( b, 'base', 'toS' ) + } + } + + } + + return x['s'] < 0 ? '-' + str : str + }; + + + /* + * Return as toString, but do not accept a base argument. + */ + P['valueOf'] = function () { + return this['toS']() + }; + + + // Add aliases for BigDecimal methods. + //P['add'] = P['plus']; + //P['subtract'] = P['minus']; + //P['multiply'] = P['times']; + //P['divide'] = P['div']; + //P['remainder'] = P['mod']; + //P['compareTo'] = P['cmp']; + //P['negate'] = P['neg']; + + + // EXPORT + + + // Node and other CommonJS-like environments that support module.exports. + if ( typeof module !== 'undefined' && module.exports ) { + module.exports = BigNumber + + //AMD. + } else if ( typeof define == 'function' && define.amd ) { + define( function () { + return BigNumber + }) + + //Browser. + } else { + global['BigNumber'] = BigNumber + } + +})( this ); + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js new file mode 100644 index 0000000..21ad8ba --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js @@ -0,0 +1 @@ +/* bignumber.js v1.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */(function(e){"use strict";function y(e,t){var n,r,i,s=this;if(!(s instanceof y))return new y(e,t);if(e instanceof y){d=0;if(t===r){s.s=e.s,s.e=e.e,s.c=(e=e.c)?e.slice():e;return}e=e.toS()}typeof e!="string"&&(e=(n=Object.prototype.toString.call(e)=="[object Number]")&&e===0&&1/e<0?"-0":e+"");if(t===r&&v.test(e))s.s=e.charAt(0)=="-"?(e=e.slice(1),-1):1;else{if(t==10)return(new y(e)).div(g);e=m.call(e).replace(/^\+(?!-)/,"").replace(/^(-?)\./,"$10."),s.s=e.charAt(0)=="-"?(e=e.replace(/^-(?!-)/,""),-1):1,t!=null?t!=(t|0)&&!!f||(p=!(t>=2&&t<=36))?(b(t,2),i=v.test(e)):(r="["+h.slice(0,t|=0)+"]+",(i=(new RegExp("^"+r+"(?:\\."+r+")?$","i")).test(e))?(n&&(e.replace(".","").length>15&&b(e,0),n=!n),e=w(e,10,t,s.s)):e!="Infinity"&&e!="NaN"&&(b(e,1,t),e="NaN")):i=v.test(e);if(!i){s.c=s.e=null,e!="Infinity"&&(e!="NaN"&&b(e,3),s.s=null),d=0;return}}(r=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(r<0&&(r=i),r+=+e.slice(i+1),e=e.substring(0,i)):r<0&&(r=e.length),(t=e.length,n&&t>15)&&b(e,0);for(d=i=0;e.charAt(i)=="0";i++);if((r-=i+1)>a)s.c=s.e=null;else if(i==t||rt-1&&(a[i+1]==null&&(a[i+1]=0),a[i+1]+=a[i]/t^0,a[i]%=t)}return a.reverse()}function c(e){var t=0,n=e.length,r="";for(;t-1){i=e.length-i-1,s=l((new y(n)).pow(i).toF(),10),u=e.split("."),o=l(u[1]),u=l(u[0]),f=E(o,s,o.length-s.length,r,t,u[u.length-1]&1),a=f.c;if(i=f.e){for(;++i;a.unshift(0));e=c(u)+"."+c(a)}else a[0]?u[i=u.length-1]w?1:-1;else for(p=-1,h=0;++pb[p]?1:-1;break}if(!(h<0))break;for(l=w==f?t:d;w;){if(b[--w]N&&x(E,r,s,o,b[0]!=null),E.e>a?E.c=E.e=null:E.e++t&&x(e,r,10),r=i[0]==0?r+1:n?t:e.e+r+1;for(;i.length1?(i.splice(1,0,"."),i.join("")):i[0])+(r<0?"e":"e+")+r:e.toS()}function x(e,t,n,r,s){var o=e.c,u=e.s<0,a=n/2,f=e.e+t+1,l=o[f],c=s||f<0||o[f+1]!=null;s=i<4?(l!=null||c)&&(i==0||i==2&&!u||i==3&&u):l>a||l==a&&(i==4||c||i==6&&(o[f-1]&1||!t&&r)||i==7&&!u||i==8&&u);if(f<1||!o[0])return o.length=0,o.push(0),s?(o[0]=1,e.e=-t):e.e=0,e;o.length=f--;if(s)for(--n;++o[f]>n;)o[f]=0,f--||(++e.e,o.unshift(1));for(f=o.length;!o[--f];o.pop());return e}function T(e,t,n){var r=i;return i=n,e=new y(e),e.c&&x(e,t,10),i=r,e}var t=1e9,n=1e6,r=20,i=4,s=-7,o=21,u=-t,a=t,f=!0,l=parseInt,c=y.prototype,h="0123456789abcdefghijklmnopqrstuvwxyz",p,d=0,v=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,m=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")},g=y(1);y.ROUND_UP=0,y.ROUND_DOWN=1,y.ROUND_CEIL=2,y.ROUND_FLOOR=3,y.ROUND_HALF_UP=4,y.ROUND_HALF_DOWN=5,y.ROUND_HALF_EVEN=6,y.ROUND_HALF_CEIL=7,y.ROUND_HALF_FLOOR=8,y.config=function(){var e,n,c=0,h={},v=arguments,m=v[0],g="config",y=function(e,t,n){return!((p=en)||l(e)!=e&&e!==0)},w=m&&typeof m=="object"?function(){if(m.hasOwnProperty(n))return(e=m[n])!=null}:function(){if(v.length>c)return(e=v[c++])!=null};return w(n="DECIMAL_PLACES")&&(y(e,0,t)?r=e|0:b(e,n,g)),h[n]=r,w(n="ROUNDING_MODE")&&(y(e,0,8)?i=e|0:b(e,n,g)),h[n]=i,w(n="EXPONENTIAL_AT")&&(y(e,-t,t)?s=-(o=~~(e<0?-e:+e)):!p&&e&&y(e[0],-t,0)&&y(e[1],0,t)?(s=~~e[0],o=~~e[1]):b(e,n,g,1)),h[n]=[s,o],w(n="RANGE")&&(y(e,-t,t)&&~~e?u=-(a=~~(e<0?-e:+e)):!p&&e&&y(e[0],-t,-1)&&y(e[1],1,t)?(u=~~e[0],a=~~e[1]):b(e,n,g,1,1)),h[n]=[u,a],w(n="ERRORS")&&(e===!!e||e===1||e===0?l=(p=d=0,f=!!e)?parseInt:parseFloat:b(e,n,g,0,0,1)),h[n]=f,h},c.abs=c.absoluteValue=function(){var e=new y(this);return e.s<0&&(e.s=1),e},c.ceil=function(){return T(this,0,2)},c.comparedTo=c.cmp=function(e,t){var n,r=this,i=r.c,s=(d=-d,e=new y(e,t)).c,o=r.s,u=e.s,a=r.e,f=e.e;if(!o||!u)return null;n=i&&!i[0],t=s&&!s[0];if(n||t)return n?t?0:-u:o;if(o!=u)return o;if(n=o<0,t=a==f,!i||!s)return t?0:!i^n?1:-1;if(!t)return a>f^n?1:-1;for(o=-1,u=(a=i.length)<(f=s.length)?a:f;++os[o]^n?1:-1;return a==f?0:a>f^n?1:-1},c.dividedBy=c.div=function(e,t){var n=this.c,r=this.e,i=this.s,s=(d=2,e=new y(e,t)).c,o=e.e,u=e.s,a=i==u?1:-1;return!r&&(!n||!n[0])||!o&&(!s||!s[0])?new y(!i||!u||(n?s&&n[0]==s[0]:!s)?NaN:n&&n[0]==0||!s?a*0:a/0):E(n,s,r-o,a,10)},c.equals=c.eq=function(e,t){return d=3,this.cmp(e,t)===0},c.floor=function(){return T(this,0,3)},c.greaterThan=c.gt=function(e,t){return d=4,this.cmp(e,t)>0},c.greaterThanOrEqualTo=c.gte=function(e,t){return d=5,(t=this.cmp(e,t))==1||t===0},c.isFinite=c.isF=function(){return!!this.c},c.isNaN=function(){return!this.s},c.isNegative=c.isNeg=function(){return this.s<0},c.isZero=c.isZ=function(){return!!this.c&&this.c[0]==0},c.lessThan=c.lt=function(e,t){return d=6,this.cmp(e,t)<0},c.lessThanOrEqualTo=c.lte=function(e,t){return d=7,(t=this.cmp(e,t))==-1||t===0},c.minus=function(e,t){var n,r,i,s,o=this,a=o.s;t=(d=8,e=new y(e,t)).s;if(!a||!t)return new y(NaN);if(a!=t)return e.s=-t,o.plus(e);var f=o.c,l=o.e,c=e.c,h=e.e;if(!l||!h){if(!f||!c)return f?(e.s=-t,e):new y(c?o:NaN);if(!f[0]||!c[0])return c[0]?(e.s=-t,e):new y(f[0]?o:0)}if(f=f.slice(),a=l-h){n=(s=a<0)?(a=-a,f):(h=l,c);for(n.reverse(),t=a;t--;n.push(0));n.reverse()}else{i=((s=f.length0)for(;t--;f[i++]=0);for(t=c.length;t>a;){if(f[--t]0?(u=s,f):(i=-i,o);for(n.reverse();i--;n.push(0));n.reverse()}o.length-f.length<0&&(n=f,f=o,o=n);for(i=f.length,t=0;i;t=(o[--i]=o[i]+f[i]+t)/10^0,o[i]%=10);t&&(o.unshift(t),++u>a&&(o=u=null));for(i=o.length;o[--i]==0;o.pop());return e.c=o,e.e=u,e},c.toPower=c.pow=function(e){var t=e*0==0?e|0:e,r=new y(this),i=new y(g);if(((p=e<-n||e>n)&&(t=e*1/0)||l(e)!=e&&e!==0&&!(t=NaN))&&!b(e,"exponent","pow")||!t)return new y(Math.pow(r.toS(),t));for(t=t<0?-t:t;;){t&1&&(i=i.times(r)),t>>=1;if(!t)break;r=r.times(r)}return e<0?g.div(i):i},c.round=function(e,n){return e=e==null||((p=e<0||e>t)||l(e)!=e)&&!b(e,"decimal places","round")?0:e|0,n=n==null||((p=n<0||n>8)||l(n)!=n&&n!==0)&&!b(n,"mode","round")?i:n|0,T(this,e,n)},c.squareRoot=c.sqrt=function(){var e,t,n,i=this,s=i.c,o=i.s,u=i.e,a=new y("0.5");if(o!==1||!s||!s[0])return new y(!o||o<0&&(!s||s[0])?NaN:s?i:1/0);o=Math.sqrt(i.toS()),o==0||o==1/0?(e=s.join(""),e.length+u&1||(e+="0"),t=new y(Math.sqrt(e).toString()),t.e=((u+1)/2|0)-(u<0||u&1)):t=new y(o.toString()),o=t.e+(r+=4);do n=t,t=a.times(n.plus(i.div(n)));while(n.c.slice(0,o).join("")!==t.c.slice(0,o).join(""));return x(t,r-=4,10),t},c.times=function(e,t){var n,r=this,i=r.c,s=(d=11,e=new y(e,t)).c,o=r.e,f=e.e,l=r.s;e.s=l==(t=e.s)?1:-1;if(!o&&(!i||!i[0])||!f&&(!s||!s[0]))return new y(!l||!t||i&&!i[0]&&!s||s&&!s[0]&&!i?NaN:!i||!s?e.s/0:e.s*0);e.e=o+f,(l=i.length)<(t=s.length)&&(n=i,i=s,s=n,f=l,l=t,t=f);for(f=l+t,n=[];f--;n.push(0));for(o=t-1;o>-1;o--){for(t=0,f=l+o;f>o;t=n[f]+s[o]*i[f-o-1]+t,n[f--]=t%10|0,t=t/10|0);t&&(n[f]=(n[f]+t)%10)}t&&++e.e,!n[0]&&n.shift();for(f=n.length;!n[--f];n.pop());return e.c=e.e>a?e.e=null:e.et)||l(e)!=e&&e!==0)&&!b(e,"decimal places","toE"))&&this.c?this.c.length-1:e|0,1)},c.toFixed=c.toF=function(e){var n,r,i,u=this;return e==null||((p=e<0||e>t)||l(e)!=e&&e!==0)&&!b(e,"decimal places","toF")||(i=u.e+(e|0)),n=s,e=o,s=-(o=1/0),i==r?r=u.toS():(r=S(u,i),u.s<0&&u.c&&(u.c[0]?r.indexOf("-")<0&&(r="-"+r):r=r.replace(/^-/,""))),s=n,o=e,r},c.toFraction=c.toFr=function(e){var t,n,s,o,u,l,c,h=o=new y(g),v=s=new y("0"),m=this,w=m.c,E=a,S=r,x=i,T=new y(g);if(!w)return m.toS();c=T.e=w.length-m.e-1;if(e==null||(!(d=12,l=new y(e)).s||(p=l.cmp(h)<0||!l.c)||f&&l.e0)e=c>0?T:h;a=1/0,l=new y(w.join(""));for(r=0,i=1;;){t=l.div(T),u=o.plus(t.times(v));if(u.cmp(e)==1)break;o=v,v=u,h=s.plus(t.times(u=h)),s=u,T=l.minus(t.times(u=T)),l=u}return u=e.minus(o).div(v),s=s.plus(u.times(h)),o=o.plus(u.times(v)),s.s=h.s=m.s,r=c*2,i=x,n=h.div(v).minus(m).abs().cmp(s.div(o).minus(m).abs())<1?[h.toS(),v.toS()]:[s.toS(),o.toS()],a=E,r=S,n},c.toPrecision=c.toP=function(e){return e==null||((p=e<1||e>t)||l(e)!=e)&&!b(e,"precision","toP")?this.toS():S(this,--e|0,2)},c.toString=c.toS=function(e){var t,n,r,i=this,u=i.e;if(u===null)n=i.s?"Infinity":"NaN";else{if(e===t&&(u<=s||u>=o))return S(i,i.c.length-1,1);n=i.c.join("");if(u<0){for(;++u;n="0"+n);n="0."+n}else if(r=n.length,u>0)if(++u>r)for(u-=r;u--;n+="0");else u1)n=t+"."+n.slice(1);else if(t=="0")return t;if(e!=null)if((p=!(e>=2&&e<=36))||e!=(e|0)&&!!f)b(e,"base","toS");else{n=w(n,e|0,10,i.s);if(n=="0")return n}}return i.s<0?"-"+n:n},c.valueOf=function(){return this.toS()},typeof module!="undefined"&&module.exports?module.exports=y:typeof define=="function"&&define.amd?define(function(){return y}):e.BigNumber=y})(this); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html new file mode 100644 index 0000000..189e5e2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html @@ -0,0 +1,1704 @@ + + + + + + + bignumber.js API + + + + + + +
    + +

    bignumber.js

    + +

    A Javascript library for arbitrary-precision arithmetic.

    + +

    + Hosted on GitHub. +

    + + +

    API

    + +

    + In all examples below, var and semicolons are not shown, and + if a commented-out value is in quotes it means toString has + been called on the preceding expression. +

    + + + +

    CONSTRUCTOR

    + +
    + BigNumberBigNumber(value [, base]) ⇒ + BigNumber + +
    +
    +
    value
    +
    + number|string|BigNumber : See RANGE for + range. +
    +
    + A numeric value. +
    +
    + Legitimate values include ±0, + ±Infinity and NaN. +
    +
    + Values of type number with more than 15 significant digits are + considered invalid as calling toString or + valueOf on such numbers may not result in the intended + value. +
    +
    + There is no limit to the number of digits of a value of type + string (other than that of Javascript's maximum array size). +
    +
    + Decimal string values may be in exponential, as well as normal + (non-exponential) notation. Non-decimal values must be in normal + notation. +
    +
    + String values in hexadecimal literal form, e.g. '0xff', are invalid, and + string values in octal literal form will be interpreted as decimals, + e.g. '011' is 11, not 9. +
    +
    Values in any base may have fraction digits.
    +
    + In bases above 10, numerals above 9 are represented by lower-case + letters. +
    +
    +
    +
    base
    +
    + number : integer, 2 to 36 inclusive +
    +
    The base of value.
    +
    If base is omitted, or is null or undefined, + base 10 is assumed.
    +
    +

    Returns a new instance of a BigNumber object.

    +

    + If a base is specified, the value is rounded according to + the current DECIMAL_PLACES and + ROUNDING_MODE settings. + Usefully, this means the decimal places of a decimal value + passed to the constructor can be limited by explicitly specifying base 10. +

    +

    + See Errors for the treatment of an invalid + value or base. +

    +
    +x = new BigNumber(9)                       // '9'
    +y = new BigNumber(x)                       // '9'
    +BigNumber(435.345)                         // 'new' is optional
    +new BigNumber('5032485723458348569331745.33434346346912144534543')
    +new BigNumber('4.321e+4')                  // '43210'
    +new BigNumber('-735.0918e-430')            // '-7.350918e-428'
    +new BigNumber(Infinity)                    // 'Infinity'
    +new BigNumber(NaN)                         // 'NaN'
    +new BigNumber('.5')                        // '0.5'
    +new BigNumber('+2')                        // '2'
    +new BigNumber(-10110100.1, 2)              // '-180.5'
    +new BigNumber('123412421.234324', 5)       // '607236.557696'
    +new BigNumber('ff.8', 16)                  // '255.5'
    +
    +new BigNumber(9, 2)
    +// Throws 'not a base 2 number' if ERRORS is true, otherwise 'NaN'
    +
    +new BigNumber(96517860459076817.4395)
    +// Throws 'number type has more than 15 significant digits'
    +// if ERRORS is true, otherwise '96517860459076820'
    +
    +new BigNumber('blurgh')
    +// Throws 'not a number' if ERRORS is true, otherwise 'NaN'
    +
    +BigNumber.config({DECIMAL_PLACES : 5})
    +new BigNumber(1.23456789)                  // '1.23456789'
    +new BigNumber(1.23456789, 10)              // '1.23457'
    + + +

    Methods

    +

    + The BigNumber constructor has one added method, + config, which configures the library-wide settings for + arithmetic, formatting and errors. +

    + +
    + configconfig([settings]) ⇒ object +
    + + Note: the settings can also be supplied as an argument list, + see below. + +
    +
    settings
    +
    object
    + +
    + An object that contains some or all of the following properties: +
    + + + +
    DECIMAL_PLACES
    +
    + number : integer, 0 to 1e+9 + inclusive
    + Default value: 20 +
    +
    + The maximum number of decimal places of the results of + division, square root and base conversion operations, and power + operations with negative exponents.
    + I.e. aside from the base conversion which may be involved with any + method that accepts a base argument, the value is only relevant to + the dividedBy, squareRoot and + toPower methods. +
    +
    +
    BigNumber.config({ DECIMAL_PLACES : 5 })
    +BigNumber.config(5)    // equivalent
    +
    + + + +
    ROUNDING_MODE
    +
    + number : integer, 0 to 8 + inclusive
    + Default value: 4 + (ROUND_HALF_UP) +
    +
    + The rounding mode used in the above operations and by + round, + toExponential, + toFixed and + toPrecision. +
    +
    + The modes are available as enumerated properties of the BigNumber + constructor. +
    +
    +
    BigNumber.config({ ROUNDING_MODE : 0 })
    +BigNumber.config(null, BigNumber.ROUND_UP)    // equivalent
    +
    + + + +
    EXPONENTIAL_AT
    +
    + number : integer, magnitude 0 to + 1e+9 inclusive, or
    + number[] : [ integer -1e+9 to 0 inclusive, integer 0 to 1e+9 + inclusive ]
    + Default value: [-7, 20] +
    +
    + The exponent value(s) at which toString returns + exponential notation. +
    +
    + If a single number is assigned, the value is the exponent magnitude. +
    + If an array of two numbers is assigned then the first number is the + negative exponent value at and beneath which exponential notation is + used, and the second number is the positive exponent value at and + above which the same. +
    +
    + For example, to emulate Javascript numbers in terms of the exponent + values at which they begin to use exponential notation, use + [-7, 20]. +
    +
    +
    BigNumber.config({ EXPONENTIAL_AT : 2 })
    +new BigNumber(12.3)         // '12.3'        e is only 1
    +new BigNumber(123)          // '1.23e+2'
    +new BigNumber(0.123)        // '0.123'       e is only -1
    +new BigNumber(0.0123)       // '1.23e-2'
    +
    +BigNumber.config({ EXPONENTIAL_AT : [-7, 20] })
    +new BigNumber(123456789)    // '123456789'   e is only 8
    +new BigNumber(0.000000123)  // '1.23e-7'
    +
    +// Almost never return exponential notation:
    +BigNumber.config({ EXPONENTIAL_AT : 1e+9 })
    +
    +// Always return exponential notation:
    +BigNumber.config({ EXPONENTIAL_AT : 0 })
    +
    +
    + Regardless of the value of EXPONENTIAL_AT, the + toFixed method will always return a value in + normal notation and the toExponential method will + always return a value in exponential form. +
    +
    + Calling toString with a base argument, e.g. + toString(10), will also always return normal notation. +
    + + + +
    RANGE
    +
    + number : integer, magnitude 1 to + 1e+9 inclusive, or
    + number[] : [ integer -1e+9 to -1 inclusive, integer 1 to 1e+9 + inclusive ]
    + Default value: [-1e+9, 1e+9] +
    +
    + The exponent value(s) beyond which overflow to Infinity and + underflow to zero occurs. +
    +
    + If a single number is assigned, it is the maximum exponent + magnitude: values wth a positive exponent of greater magnitude + become Infinity and those with a negative exponent of + greater magnitude become zero. +
    + If an array of two numbers is assigned then the first number is the + negative exponent limit and the second number is the positive + exponent limit. +
    +
    + For example, to emulate Javascript numbers in terms of the exponent + values at which they become zero and Infinity, use + [-324, 308]. +
    +
    +
    BigNumber.config({ RANGE : 500 })
    +BigNumber.config().RANGE     // [ -500, 500 ]
    +new BigNumber('9.999e499')   // '9.999e+499'
    +new BigNumber('1e500')       // 'Infinity'
    +new BigNumber('1e-499')      // '1e-499'
    +new BigNumber('1e-500')      // '0'
    +
    +BigNumber.config({ RANGE : [-3, 4] })
    +new BigNumber(99999)         // '99999'      e is only 4
    +new BigNumber(100000)        // 'Infinity'   e is 5
    +new BigNumber(0.001)         // '0.01'       e is only -3
    +new BigNumber(0.0001)        // '0'          e is -4
    +
    +
    + The largest possible magnitude of a finite BigNumber is
    + 9.999...e+1000000000
    + The smallest possible magnitude of a non-zero BigNumber is
    + 1e-1000000000 +
    + + + +
    ERRORS
    +
    + boolean/number : true, false, 1 or 0
    + Default value: true +
    +
    + The value that determines whether BigNumber Errors are thrown.
    + If ERRORS is false, this library will not throw errors. +
    +
    + See Errors. +
    +
    +
    BigNumber.config({ ERRORS : false })
    +
    +
    +
    +
    +

    +
    Returns an object with the above properties and their current + values. +

    +

    + If the value to be assigned to any of the above properties is + null or undefined it is ignored. See + Errors for the treatment of invalid values. +

    +
    +BigNumber.config({
    +    DECIMAL_PLACES : 40,
    +    ROUNDING_MODE : BigNumber.ROUND_HALF_CEIL,
    +    EXPONENTIAL_AT : [-10, 20],
    +    RANGE : [-500, 500],
    +    ERRORS : true
    +});
    +
    +// Alternatively but equivalently:
    +BigNumber.config( 40, 7, [-10, 20], 500, 1 )
    +
    +obj = BigNumber.config();
    +obj.ERRORS       // true
    +obj.RANGE        // [-500, 500]
    + + + +

    Properties

    +

    + The library's enumerated rounding modes are stored as properties of the + constructor.
    + They are not referenced internally by the library itself. +

    +

    + Rounding modes 0 to 6 (inclusive) are the same as those of Java's + BigDecimal class. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValueDescription
    ROUND_UP0Rounds away from zero
    ROUND_DOWN1Rounds towards zero
    ROUND_CEIL2Rounds towards Infinity
    ROUND_FLOOR3Rounds towards -Infinity
    ROUND_HALF_UP4 + Rounds towards nearest neighbour.
    + If equidistant, rounds away from zero +
    ROUND_HALF_DOWN5 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards zero +
    ROUND_HALF_EVEN6 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards even neighbour +
    ROUND_HALF_CEIL7 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards Infinity +
    ROUND_HALF_FLOOR8 + Rounds towards nearest neighbour.
    + If equidistant, rounds towards -Infinity +
    +
    +BigNumber.config({ ROUNDING_MODE : BigNumber.ROUND_CEIL })
    +BigNumber.config({ ROUNDING_MODE : 2 })     // equivalent
    + + +

    INSTANCE

    + +

    Methods

    +

    + The methods inherited by a BigNumber instance from its constructor's + prototype object. +

    +

    + A BigNumber is immutable in the sense that it is not changed by its + methods. +

    +

    + The treatment of ±0, ±Infinity and + NaN is consistent with how Javascript treats these values. +

    +

    + Method names over 5 letters in length have a shorter alias (except + valueOf).
    + Internally, the library always uses the shorter method names. +

    + + + +
    + absoluteValue.abs() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the absolute value, i.e. the magnitude, + of this BigNumber. +

    +
    +x = new BigNumber(-0.8)
    +y = x.absoluteValue()         // '0.8'
    +z = y.abs()                   // '0.8'
    + + + +
    + ceil.ceil() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the value of this BigNumber rounded to + a whole number in the direction of Infinity. +

    +
    +x = new BigNumber(1.3)
    +x.ceil()                      // '2'
    +y = new BigNumber(-1.8)
    +y.ceil()                      // '-1'
    + + + +
    + floor.floor() ⇒ + BigNumber +
    +

    + Returns a BigNumber whose value is the value of this BigNumber rounded to + a whole number in the direction of -Infinity. +

    +
    +x = new BigNumber(1.8)
    +x.floor()                     // '1'
    +y = new BigNumber(-1.3)
    +y.floor()                     // '-2'
    + + + +
    + negated.neg() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the value of this BigNumber negated, + i.e. multiplied by -1. +

    +
    +x = new BigNumber(1.8)
    +x.negated()                   // '-1.8'
    +y = new BigNumber(-1.3)
    +y.neg()                       // '1.3'
    + + + +
    + squareRoot.sqrt() ⇒ BigNumber +
    +

    + Returns a BigNumber whose value is the square root of this BigNumber, + rounded according to the current + DECIMAL_PLACES and + ROUNDING_MODE settings. +

    +
    +x = new BigNumber(16)
    +x.squareRoot()                // '4'
    +y = new BigNumber(3)
    +y.sqrt()                      // '1.73205080756887729353'
    + + + +
    + isFinite.isF() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is a finite + number, otherwise returns false.
    + The only possible non-finite values of a BigNumber are NaN, Infinity and + -Infinity. +

    +
    +x = new BigNumber(1)
    +x.isFinite()                  // true
    +y = new BigNumber(Infinity)
    +y.isF()                       // false
    +

    + Note: The native method isFinite() can be used if + n <= Number.MAX_VALUE. +

    + + + +
    + isNaN.isNaN() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is NaN, otherwise + returns false.
    +

    +
    +x = new BigNumber(NaN)
    +x.isNaN()                     // true
    +y = new BigNumber('Infinity')
    +y.isNaN()                     // false
    +

    + Note: The native method isNaN() can also be used. +

    + + + +
    + isNegative.isNeg() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is negative, + otherwise returns false.
    +

    +
    +x = new BigNumber(-0)
    +x.isNegative()                // true
    +y = new BigNumber(2)
    +y.isNeg                       // false
    +

    + Note: n < 0 can be used if + n <= -Number.MIN_VALUE. +

    + + + +
    + isZero.isZ() ⇒ boolean +
    +

    + Returns true if the value of this BigNumber is zero or minus + zero, otherwise returns false.
    +

    +
    +x = new BigNumber(-0)
    +x.isZero() && x.isNeg()        // true
    +y = new BigNumber(Infinity)
    +y.isZ()                        // false
    +

    + Note: n == 0 can be used if + n >= Number.MIN_VALUE. +

    + + + +
    + comparedTo.cmp(n [, base]) ⇒ number +
    +

    + n : number|string|BigNumber
    + base : number
    + + See constructor for further parameter details. + +

    + + + + + + + + + + + + + + + + + + + + + +
    Returns 
    1 + If the value of this BigNumber is greater than the value of n +
    -1 + If the value of this BigNumber is less than the value of n +
    0If this BigNumber and n have the same value
    null + if the value of either this BigNumber or n is + NaN +
    +
    +x = new BigNumber(Infinity)
    +y = new BigNumber(5)
    +x.comparedTo(y)                // 1
    +x.comparedTo(x.minus(1))       // 0
    +y.cmp(NaN)                     // null
    +y.cmp('110', 2)                // -1
    + + + +
    + dividedBy.div(n [, base]) ⇒ + BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber divided by + n, rounded according to the current + DECIMAL_PLACES and + ROUNDING_MODE settings. +

    +
    +x = new BigNumber(355)
    +y = new BigNumber(113)
    +x.dividedBy(y)             // '3.14159292035398230088'
    +x.div(5)                   // '71'
    +x.div(47, 16)              // '5'
    + + + +
    + minus.minus(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber minus + n. +

    +
    +0.3 - 0.1                  // 0.19999999999999998
    +x = new BigNumber(0.3)
    +x.minus(0.1)               // '0.2'
    +x.minus(0.6, 20)           // '0'
    + + + +
    + modulo.mod(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber modulo + n, i.e. the integer remainder of dividing this BigNumber by + n. +

    +

    + The result will have the same sign as this BigNumber, and it will match + that of Javascript's % operator (within the limits of its precision) and + BigDecimal's remainder method. +

    +
    +1 % 0.9                    // 0.09999999999999998
    +x = new BigNumber(1)
    +x.modulo(0.9)              // '0.1'
    +y = new BigNumber(33)
    +y.mod('a', 33)             // '3'
    + + + +
    + plus.plus(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber plus + n. +

    +
    +0.1 + 0.2                       // 0.30000000000000004
    +x = new BigNumber(0.1)
    +y = x.plus(0.2)                 // '0.3'
    +BigNumber(0.7).plus(x).plus(y)  // '1'
    +x.plus('0.1', 8)                // '0.225'
    + + + +
    + times.times(n [, base]) ⇒ BigNumber +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns a BigNumber whose value is the value of this BigNumber times + n. +

    +
    +0.6 * 3                         // 1.7999999999999998
    +x = new BigNumber(0.6)
    +y = x.times(3)                  // '1.8'
    +BigNumber('7e+500').times(y)    // '1.26e+501'
    +x.times('-a', 16)               // '-6'
    + + + +
    + toPower.pow(exp) ⇒ BigNumber +
    +

    + exp : number : integer, -1e+6 to 1e+6 inclusive +

    +

    + Returns a BigNumber whose value is the value of this BigNumber raised to + the power exp. +

    +

    + If exp is negative the result is rounded according to the + current DECIMAL_PLACES and + ROUNDING_MODE settings. +

    +

    + If exp is not an integer or is out of range: +

    +

    + If ERRORS is true a BigNumber + Error is thrown,
    + else if exp is greater than 1e+6, it is interpreted as + Infinity;
    + else if exp is less than -1e+6, it is interpreted as + -Infinity;
    + else if exp is otherwise a number, it is truncated to an + integer;
    + else it is interpreted as NaN. +

    +

    + Note: High value exponents may cause this method to be slow to return. +

    +
    +Math.pow(0.7, 2)             // 0.48999999999999994
    +x = new BigNumber(0.7)
    +x.toPower(2)                 // '0.49'
    +BigNumber(3).pow(-2)         // '0.11111111111111111111'
    +
    +new BigNumber(123.456).toPower(1000).toString().length     // 5099
    +new BigNumber(2).pow(1e+6)   // Time taken (Node.js): 9 minutes 34 secs.
    + + + +
    + equals.eq(n [, base]) ⇒ boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber equals the value + of n, otherwise returns false.
    + As with Javascript, NaN does not equal NaN. +
    Note : This method uses the comparedTo method + internally. +

    +
    +0 === 1e-324                    // true
    +x = new BigNumber(0)
    +x.equals('1e-324')              // false
    +BigNumber(-0).eq(x)             // true  ( -0 === 0 )
    +BigNumber(255).eq('ff', 16)     // true
    +
    +y = new BigNumber(NaN)
    +y.equals(NaN)                   // false
    + + + +
    + greaterThan.gt(n [, base]) ⇒ + boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is greater than + the value of n, otherwise returns false.
    + Note : This method uses the comparedTo method internally. +

    +
    +0.1 > (0.3 - 0.2)                           // true
    +x = new BigNumber(0.1)
    +x.greaterThan(BigNumber(0.3).minus(0.2))    // false
    +BigNumber(0).gt(x)                          // false
    +BigNumber(11, 3).gt(11.1, 2)                // true
    + + + +
    + greaterThanOrEqualTo.gte(n [, base]) ⇒ + boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is greater than + or equal to the value of n, otherwise returns + false.
    + Note : This method uses the comparedTo method internally. +

    +
    +(0.3 - 0.2) >= 0.1                   // false
    +x = new BigNumber(0.3).minus(0.2)
    +x.greaterThanOrEqualTo(0.1)          // true
    +BigNumber(1).gte(x)                  // true
    +BigNumber(10, 18).gte('i', 36)       // true
    + + + +
    + lessThan.lt(n [, base]) ⇒ boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is less than the + value of n, otherwise returns false.
    + Note : This method uses the comparedTo method internally. +

    +
    +(0.3 - 0.2) < 0.1                    // true
    +x = new BigNumber(0.3).minus(0.2)
    +x.lessThan(0.1)                      // false
    +BigNumber(0).lt(x)                   // true
    +BigNumber(11.1, 2).lt(11, 3)         // true
    + + + +
    + lessThanOrEqualTo.lte(n [, base]) ⇒ + boolean +
    +

    + n : number|string|BigNumber
    + base : number
    + See constructor for further parameter details. + +

    +

    + Returns true if the value of this BigNumber is less than or + equal to the value of n, otherwise returns + false.
    + Note : This method uses the comparedTo method internally. +

    +
    +0.1 <= (0.3 - 0.2)                                // false
    +x = new BigNumber(0.1)
    +x.lessThanOrEqualTo(BigNumber(0.3).minus(0.2))    // true
    +BigNumber(-1).lte(x)                              // true
    +BigNumber(10, 18).lte('i', 36)                    // true
    + + + +
    + toExponential.toE([decimal_places]) ⇒ + string +
    +

    + decimal_places : number : integer, 0 to 1e+9 inclusive +

    +

    + Returns a string representing the value of this BigNumber in exponential + notation to the specified decimal places, i.e with one digit before the + decimal point and decimal_places digits after it. If rounding + is necessary, the current + ROUNDING_MODE is used. +

    +

    + If the value of this BigNumber in exponential notation has fewer fraction + digits then is specified by decimal_places, the return value + will be appended with zeros accordingly. +

    +

    + If decimal_places is omitted, or is null or + undefined, the number of digits after the decimal point defaults to the + minimum number of digits necessary to represent the value exactly. +

    +

    + See Errors for the treatment of other + non-integer or out of range decimal_places values. +

    +
    +x = 45.6
    +y = new BigNumber(x)
    +x.toExponential()         // '4.56e+1'
    +y.toExponential()         // '4.56e+1'
    +x.toExponential(0)        // '5e+1'
    +y.toE(0)                  // '5e+1'
    +x.toExponential(1)        // '4.6e+1'
    +y.toE(1)                  // '4.6e+1'
    +x.toExponential(3)        // '4.560e+1'
    +y.toE(3)                  // '4.560e+1'
    + + + +
    + toFixed.toF([decimal_places]) ⇒ + string +
    +

    + decimal_places : number : integer, 0 to 1e+9 inclusive +

    +

    + Returns a string representing the value of this BigNumber in normal + notation to the specified fixed number of decimal places, i.e. with + decimal_places digits after the decimal point. If rounding is + necessary, the current + ROUNDING_MODE setting is used. +

    +

    + If the value of this BigNumber in normal notation has fewer fraction + digits then is specified by decimal_places, the return value + will be appended with zeros accordingly. +

    +

    + Unlike Number.prototype.toFixed, which returns + exponential notation if a number is greater or equal to 1021, + this method will always return normal notation. +

    +

    + If decimal_places is omitted, or is null or + undefined, then the return value is the same as n.toString(). + This is also unlike Number.prototype.toFixed, which returns + the value to zero decimal places. +

    +

    + See Errors for the treatment of other + non-integer or out of range decimal_places values. +

    +
    +x = 45.6
    +y = new BigNumber(x)
    +x.toFixed()              // '46'
    +y.toFixed()              // '45.6'
    +y.toF(0)                 // '46'
    +x.toFixed(3)             // '45.600'
    +y.toF(3)                 // '45.600'
    + + + +
    + toPrecision.toP([significant_figures]) ⇒ + string +
    +

    + significant_figures : number : integer, 1 to 1e+9 + inclusive +

    +

    + Returns a string representing the value of this BigNumber to the + specified number of significant digits. If rounding is necessary, the + current ROUNDING_MODE setting is + used. +

    +

    + If significant_figures is less than the number of digits + necessary to represent the integer part of the value in normal notation, + then exponential notation is used. +

    +

    + If significant_figures is omitted, or is null or + undefined, then the return value is the same as n.toString(). +

    +

    + See Errors for the treatment of other + non-integer or out of range significant_figures values. +

    +
    +x = 45.6
    +y = new BigNumber(x)
    +x.toPrecision()           // '45.6'
    +y.toPrecision()           // '45.6'
    +x.toPrecision(1)          // '5e+1'
    +y.toP(1)                  // '5e+1'
    +x.toPrecision(5)          // '45.600'
    +y.toP(5)                  // '45.600'
    + + + +
    + toString.toS([base]) ⇒ string +
    +

    + base : number : integer, 2 to 36 inclusive +

    +

    + Returns a string representing the value of this BigNumber in the specified + base, or base 10 if base is omitted. Like + Number.toString, in bases above 10, numerals above 9 are + represented by lower-case letters. +

    +

    + If a base is specified the value is rounded according to the current + DECIMAL_PLACES + and ROUNDING_MODE settings. +

    +

    + If a base is not specified, and this BigNumber has a positive + exponent that is equal to or greater than the positive component of the + current EXPONENTIAL_AT setting, + or a negative exponent equal to or less than the negative component of the + setting, then exponential notation is returned. +

    +

    + If base is null or undefined it is ignored. +
    + See Errors for the treatment of other non-integer or + out of range base values. +

    +
    +x = new BigNumber(750000)
    +x.toString()                    // '750000'
    +BigNumber.config({ EXPONENTIAL_AT : 5 })
    +x.toString()                    // '7.5e+5'
    +
    +y = new BigNumber(362.875)
    +y.toString(2)                   // '101101010.111'
    +y.toString(9)                   // '442.77777777777777777778'
    +y.toString(32)                  // 'ba.s'
    +
    +BigNumber.config({ DECIMAL_PLACES : 4 });
    +z = new BigNumber('1.23456789')
    +z.toString()                    // '1.23456789'
    +z.toString(10)                  // '1.2346'
    + + + +
    + valueOf.valueOf() ⇒ string +
    +

    + As toString, but does not accept a base argument. +

    +
    +x = new BigNumber('1.777e+457')
    +x.valueOf()                      // '1.777e+457'
    + + + +
    + toFraction.toFr([max_denominator]) ⇒ + [string, string] +
    +

    + max_denominator : number|string|BigNumber : + integer >= 1 and < Infinity +

    +

    + Returns a string array representing the value of this BigNumber as a + simple fraction with an integer numerator and an integer denominator. The + denominator will be a positive non-zero value less than or equal to + max_denominator. +

    +

    + If a maximum denominator is not specified, or is null or + undefined, the denominator will be the lowest value necessary to represent + the number exactly. +

    +

    + See Errors for the treatment of other non-integer or + out of range max_denominator values. +

    +
    +x = new BigNumber(1.75)
    +x.toFraction()            // '7, 4'
    +
    +pi = new BigNumber('3.14159265358')
    +pi.toFr()                 // '157079632679,50000000000'
    +pi.toFr(100000)           // '312689, 99532'
    +pi.toFr(10000)            // '355, 113'
    +pi.toFr(100)              // '311, 99'
    +pi.toFr(10)               // '22, 7'
    +pi.toFr(1)                // '3, 1'
    + + + +
    + round.round([decimal_places [, rounding_mode]]) + ⇒ BigNumber +
    +

    + decimal_places : number : integer, 0 to 1e+9 inclusive +
    + rounding_mode : number : integer, 0 to 8 inclusive +

    +

    + Returns a BigNumber whose value is the value of this BigNumber rounded by + the specified rounding_mode to a maximum of + decimal_places digits after the decimal point. +

    +

    + if decimal_places is omitted, or is null or + undefined, the return value is n rounded to a whole number. +

    +

    + if rounding_mode is omitted, or is null or + undefined, the current + ROUNDING_MODE setting is used. +

    +

    + See Errors for the treatment of other + non-integer or out of range decimal_places or + rounding_mode values. +

    +
    +x = 1234.56
    +Math.round(x)                             // 1235
    +
    +y = new BigNumber(x)
    +y.round()                                 // '1235'
    +y.round(1)                                // '1234.6'
    +y.round(2)                                // '1234.56'
    +y.round(10)                               // '1234.56'
    +y.round(0, 1)                             // '1234'
    +y.round(0, 6)                             // '1235'
    +y.round(1, 1)                             // '1234.5'
    +y.round(1, BigNumber.ROUND_HALF_EVEN)     // '1234.6'
    +y                                         // '1234.56'
    + + + +

    Properties

    +

    + A BigNumber is an object with three properties: +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyDescriptionTypeValue
    ccoefficient*number[] Array of single digits
    eexponentnumberInteger, -1e+9 to 1e+9 inclusive
    ssignnumber-1 or 1
    +

    *significand

    +

    + The value of any of the three properties may also be null. +

    +

    + The value of a BigNumber is stored in a normalised decimal floating point + format which corresponds to the value's toExponential form, + with the decimal point to be positioned after the most significant + (left-most) digit of the coefficient. +

    +

    + Note that, as with Javascript numbers, the original exponent and + fractional trailing zeros are not preserved. +

    +
    x = new BigNumber(0.123)              // '0.123'
    +x.toExponential()                     // '1.23e-1'
    +x.c                                   // '1,2,3'
    +x.e                                   // -1
    +x.s                                   // 1
    +
    +y = new Number(-123.4567000e+2)       // '-12345.67'
    +y.toExponential()                     // '-1.234567e+4'
    +z = new BigNumber('-123.4567000e+2')  // '-12345.67'
    +z.toExponential()                     // '-1.234567e+4'
    +z.c                                   // '1,2,3,4,5,6,7'
    +z.e                                   // 4
    +z.s                                   // -1
    + + +

    + A BigNumber is mutable in the sense that the value of its properties can + be changed.
    + For example, to rapidly shift a value by a power of 10: +

    +
    +x = new BigNumber('1234.000')      // '1234'
    +x.toExponential()                  // '1.234e+3'
    +x.c                                // '1,2,3,4'
    +x.e                                // 3
    +
    +x.e = -5
    +x                                  // '0.00001234'
    +

    + If changing the coefficient array directly, which is not recommended, be + careful to avoid leading or trailing zeros (unless zero itself is being + represented). +

    + + + +

    Zero, NaN and Infinity

    +

    + The table below shows how ±0, NaN and ±Infinity are stored. +

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    ces
    ±0[0]0±1
    NaNnullnullnull
    ±Infinitynullnull±1
    +
    +x = new Number(-0)      // 0
    +1 / x == -Infinity     // true
    +
    +y = new BigNumber(-0)   // '0'
    +y.c                     // '0' ( [0].toString() )
    +y.e                     // 0
    +y.s                     // -1
    + + + +

    Errors

    +

    + The table below shows the BigNumber Errors that may be thrown if + ERRORS is true, and what happens if + ERRORS is false. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method(s)ERRORS : true
    Throw BigNumber Error
    ERRORS : false
    Action on invalid argument
    + BigNumber
    + comparedTo
    + dividedBy
    + equals
    + greaterThan
    + greaterThanOrEqualTo
    + lessThan
    + lessThanOrEqualTo
    + minus
    + mod
    + plus
    + times
    number type has more than
    15 significant digits
    Accept.
    not a base... numberSubstitute NaN.
    base not an integerTruncate to integer.
    Ignore if not a number.
    base out of rangeIgnore.
    not a number*Substitute NaN.
    configDECIMAL_PLACES not an integerTruncate to integer.
    Ignore if not a number.
    DECIMAL_PLACES out of rangeIgnore.
    ROUNDING_MODE not an integerTruncate to integer.
    Ignore if not a number.
    ROUNDING_MODE out of rangeIgnore.
    + EXPONENTIAL_AT not an integer
    + or not [integer, integer] +
    Truncate to integer(s).
    Ignore if not number(s).
    + EXPONENTIAL_AT out of range
    + or not [negative, positive] +
    Ignore.
    + RANGE not a non-zero integer
    + or not [integer, integer] +
    Truncate to integer(s).
    Ignore if zero or not number(s).
    + RANGE out of range
    + or not [negative, positive] +
    Ignore.
    + ERRORS not a boolean
    + or binary digit +
    Ignore.
    toPowerexponent not an integerTruncate to integer.
    Substitute NaN if not a number.
    exponent out of rangeSubstitute ±Infinity. +
    rounddecimal places not an integerTruncate to integer.
    Ignore if not a number.
    decimal places out of rangeIgnore.
    mode not an integerTruncate to integer.
    Ignore if not a number.
    mode out of rangeIgnore.
    toExponentialdecimal places not an integerTruncate to integer.
    Ignore if not a number.
    decimal places out of rangeIgnore.
    toFixeddecimal places not an integerTruncate to integer.
    Ignore if not a number.
    decimal places out of rangeIgnore.
    toFractionmax denominator not an integerTruncate to integer.
    Ignore if not a number.
    max denominator out of rangeIgnore.
    toPrecisionprecision not an integerTruncate to integer.
    Ignore if not a number.
    precision out of rangeIgnore.
    toStringbase not an integerTruncate to integer.
    Ignore if not a number.
    base out of rangeIgnore.
    +

    + *No error is thrown if the value is NaN or 'NaN' +

    +

    + The message of a BigNumber Error will also contain the name of the + method from which the error originated. +

    +

    + To determine if an exception is a BigNumber Error: +

    +
    +try {
    +    // do something with BigNumbers
    +} catch (e) {
    +    if (e.name == 'BigNumber Error') {
    +        // do something
    +    }
    +}
    + +

    FAQ

    +
    Why are trailing fractional zeros removed from BigNumbers?
    +

    + Many arbitrary-precision libraries retain trailing fractional zeros as + they can indicate the precision of a value. This can be useful but the + results of arithmetic operations can be misleading. +

    +
    +x = new BigDecimal("1.0")
    +y = new BigDecimal("1.1000")
    +z = x.add(y)                      // 2.1000   
    +    
    +x = new BigDecimal("1.20")
    +y = new BigDecimal("3.45000")
    +z = x.multiply(y)                 // 4.1400000
    +

    + To specify the precision of a value is to specify that the value lies + within a certain range. +

    +

    + In the first example, x has a value of 1.0. The trailing zero + shows the precision of the value, implying that it is in the range 0.95 to + 1.05. Similarly, the precision indicated by the trailing zeros of + y indicates that the value is in the range 1.09995 to + 1.10005. If we add the two lowest values in the ranges we get 0.95 + + 1.09995 = 2.04995 and if we add the two highest values we get 1.05 + + 1.10005 = 2.15005, so the range of the result of the addition implied by + the precision of its operands is 2.04995 to 2.15005. The result given by + BigDecimal of 2.1000 however, indicates that the value is in the range + 2.09995 to 2.10005 and therefore the precision implied by its trailing + zeros is misleading. +

    +

    + In the second example, the true range is 4.122744 to 4.157256 yet the + BigDecimal answer of 4.1400000 indicates a range of 4.13999995 to + 4.14000005. Again, the precision implied by the trailing zeros is + misleading. +

    +

    + This library, like Javascript and most calculators, does not + retain trailing fractional zeros. Instead, the toExponential, + toFixed and toPrecision methods enable trailing + zeros to be added if and when required. +

    +
    + +
    + + + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json new file mode 100644 index 0000000..464fe53 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json @@ -0,0 +1,47 @@ +{ + "name": "bignumber.js", + "description": "A library for arbitrary-precision decimal and non-decimal arithmetic", + "version": "1.0.1", + "keywords": [ + "arbitrary", + "precision", + "arithmetic", + "big", + "number", + "decimal", + "float", + "biginteger", + "bigdecimal", + "bignumber", + "bigint", + "bignum" + ], + "repository": { + "type": "git", + "url": "https://github.com/MikeMcl/bignumber.js.git" + }, + "main": "bignumber", + "author": { + "name": "Michael Mclaughlin", + "email": "M8ch88l@gmail.com" + }, + "engines": { + "node": "*" + }, + "license": "MIT", + "scripts": { + "test": "node ./test/every-test.js", + "build": "uglifyjs -o ./bignumber.min.js ./bignumber.js" + }, + "readme": "\r\n# bignumber.js #\r\n\r\nA Javascript library for arbitrary-precision decimal and non-decimal arithmetic. \r\n \r\n## Features\r\n\r\n - Faster, smaller, and perhaps easier to use than Javascript versions of Java's BigDecimal\r\n - 5 KB minified and gzipped\r\n - Simple API but full-featured\r\n - Works with numbers with or without fraction digits in bases from 2 to 36 inclusive\r\n - Replicates the `toExponential`, `toFixed`, `toPrecision` and `toString` methods of Javascript's Number type\r\n - Includes a `toFraction` and a `squareRoot` method\r\n - Stores values in an accessible decimal floating point format\r\n - No dependencies\r\n - Comprehensive documentation and test set \r\n\r\nIf an even smaller and simpler library is required see [big.js](https://github.com/MikeMcl/big.js/). \r\nIt's half the size but only works with decimal numbers and only has half the methods. \r\nIt also does not allow `NaN` or `Infinity`, or have the configuration options of this library. \r\n\r\n## Load\r\n\r\nThe library is the single Javascript file *bignumber.js* \r\n(or *bignumber.min.js*, which is *bignumber.js* minified using uglify-js). \r\n\r\nIt can be loaded via a script tag in an HTML document for the browser\r\n\r\n \r\n \r\nor as a CommonJS, [Node.js](http://nodejs.org) or AMD module using `require`. \r\n\r\nFor Node, put the *bignumber.js* file into the same directory as the file that is requiring it and use\r\n\r\n var BigNumber = require('./bignumber'); \r\n\r\nor put it in a *node_modules* directory within the directory and use `require('bignumber')`. \r\n\r\nThe library is also available from the [npm](https://npmjs.org/) registry, so\r\n\r\n $ npm install bignumber.js\r\n\r\nwill install this entire directory in a *node_modules* directory within the current directory. \r\nIt can then be loaded with `require('bignumber.js')`. \r\n \r\nTo load with AMD loader libraries such as [requireJS](http://requirejs.org/):\r\n\r\n require(['bignumber'], function(BigNumber) { \r\n // Use BigNumber here in local scope. No global BigNumber. \r\n });\r\n\r\n## Use\r\n\r\n*In all examples below, `var`, semicolons and `toString` calls are not shown. \r\nIf a commented-out value is in quotes it means `toString` has been called on the preceding expression.*\r\n\r\nThe library exports a single function: BigNumber, the constructor of BigNumber instances. \r\nIt accepts a value of type Number, String or BigNumber Object, \r\n\r\n x = new BigNumber(123.4567)\r\n y = BigNumber('123456.7e-3') // 'new' is optional\r\n z = new BigNumber(x)\r\n x.equals(y) && y.equals(z) && x.equals(z) // true\r\n\r\nand a base from 2 to 36 inclusive can be specified.\r\n\r\n x = new BigNumber(1011, 2) // \"11\" \r\n y = new BigNumber('zz.9', 36) // \"1295.25\"\r\n z = x.plus(y) // \"1306.25\"\r\n\r\nA BigNumber is immutable in the sense that it is not changed by its methods. \r\n\r\n 0.3 - 0.1 // 0.19999999999999998 \r\n x = new BigNumber(0.3) \r\n x.minus(0.1) // \"0.2\"\r\n x // \"0.3\"\r\n\r\nThe methods that return a BigNumber can be chained.\r\n\r\n x.dividedBy(y).plus(z).times(9).floor()\r\n x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').ceil()\r\n\r\nMethod names over 5 letters in length have a shorter alias.\r\n\r\n x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)) // true\r\n x.cmp(y.mod(z).neg()) == 1 && x.comparedTo(y.modulo(z).negated()) == 1 // true\r\n\r\nLike Javascript's Number type, there are `toExponential`, `toFixed` and `toPrecision` methods\r\n\r\n x = new BigNumber(255.5) \r\n x.toExponential(5) // \"2.55500e+2\"\r\n x.toFixed(5) // \"255.50000\"\r\n x.toPrecision(5) // \"255.50\"\r\n\r\n and a base can be specified for `toString`.\r\n\r\n x.toString(16) // \"ff.8\"\r\n\r\nThe maximum number of decimal places and the rounding mode for division, square root, base conversion, and negative power operations is set by a configuration object passed to the `config` method of the `BigNumber` constructor. \r\nThe other arithmetic operations always give the exact result.\r\n\r\n BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 })\r\n // Alternatively, BigNumber.config( 10, 4 );\r\n\r\n x = new BigNumber(2);\r\n y = new BigNumber(3); \r\n z = x.div(y) // \"0.6666666667\"\r\n z.sqrt() // \"0.8164965809\"\r\n z.pow(-3) // \"3.3749999995\"\r\n z.toString(2) // \"0.1010101011\"\r\n z.times(z) // \"0.44444444448888888889\"\r\n z.times(z).round(10) // \"0.4444444445\"\r\n\r\nThere is a `toFraction` method with an optional *maximum denominator* argument\r\n\r\n y = new BigNumber(355)\r\n pi = y.dividedBy(113) // \"3.1415929204\"\r\n pi.toFraction() // [ \"7853982301\", \"2500000000\" ]\r\n pi.toFraction(1000) // [ \"355\", \"113\" ]\r\n\r\nand `isNaN` and `isFinite` methods, as `NaN` and `Infinity` are valid `BigNumber` values.\r\n\r\n x = new BigNumber(NaN) // \"NaN\"\r\n y = new BigNumber(Infinity) // \"Infinity\"\r\n x.isNaN() && !y.isNaN() && !x.isFinite() && !y.isFinite() // true\r\n\r\nThe value of a BigNumber is stored in a decimal floating point format in terms of a coefficient, exponent and sign.\r\n\r\n x = new BigNumber(-123.456); \r\n x.c // \"1,2,3,4,5,6\" coefficient (i.e. significand)\r\n x.e // 2 exponent \r\n x.s // -1 sign\r\n\r\nFor futher information see the API reference in the *doc* folder.\r\n\r\n## Test\r\n\r\nThe *test* directory contains the test scripts for each method. \r\n\r\nThe tests can be run with Node or a browser. \r\n\r\nFor a quick test of all the methods, from a command-line shell at the *test/* directory\r\n\r\n $ node quick-test\r\n\r\nTo test a single method in more depth, e.g.\r\n\r\n $ node toFraction\r\n\r\nTo test all the methods in more depth\r\n\r\n $ node every-test\r\n\r\nFor the browser, see *quick-test.html*, *single-test.html* and *every-test.html* in the *test/browser* directory. \r\n \r\n*bignumber-vs-number.html* enables some of the methods of bignumber.js to be compared with those of Javascript's Number type. \r\n\r\n## Performance\r\n\r\nThe *perf* directory contains two applications and a *lib* directory containing the BigDecimal libraries used by both. \r\n \r\n*bignumber-vs-bigdecimal.html* tests the performance of bignumber.js against the Javascript translations of two versions of BigDecimal, its use should be more or less self-explanatory.\r\n(The GWT version doesn't work in IE 6.) \r\n\r\n* GWT: java.math.BigDecimal \r\n\r\n* ICU4J: com.ibm.icu.math.BigDecimal \r\n \r\n\r\nThe BigDecimal in Node's npm registry is the GWT version. Despite its seeming popularity I have found it to have some serious bugs, see the Node script *perf/lib/bigdecimal_GWT/bugs.js* for examples of flaws in its *remainder*, *divide* and *compareTo* methods. \r\n\r\n*bigtime.js* is a Node command-line application which tests the performance of bignumber.js against the GWT version of BigDecimal from the npm registry. \r\n\r\nFor example, to compare the time taken by the bignumber.js `plus` method and the BigDecimal `add` method: \r\n \r\n $ node bigtime plus 10000 40 \r\n \r\nThis will time 10000 calls to each, using operands of up to 40 random digits and will check that the results match. \r\n \r\nFor help:\r\n\r\n $ node bigtime -h\r\n\r\nSee the README in the directory for more information.\r\n\r\n## Build\r\n\r\nI.e. minify.\r\n\r\nFor Node, if uglify-js is installed globally ( `npm install uglify-js -g` ) then \r\n\r\n uglifyjs -o ./bignumber.min.js ./bignumber.js\r\n\r\nwill create *bignumber.min.js*. \r\n\r\n## Feedback\r\n\r\nBugs: surely not! Open an issue, please. \r\nOther feedback to:\r\n\r\nMichael Mclaughlin \r\nM8ch88l@gmail.com\r\n\r\nBitcoin donation to: \r\n**1KdnpLRSkWJs4FXPzj7pQ39H4Ur6Urydti** \r\nThank you\r\n\r\n## Licence\r\n\r\nSee LICENCE.\r\n\r\n## Change Log\r\n\r\n####1.0.1\r\n* Bugfix: error messages with incorrect method name \r\n* Corrected a couple of spelling mistakes in comments\r\n* Very minor regex tweaks\r\n\r\n####1.0.0\r\n* 8/11/2012 Initial release \r\n\r\n[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/50b85fd919b406ef9312551092a95fb7 \"githalytics.com\")](http://githalytics.com/MikeMcl/bignumber.js)\r\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/MikeMcl/bignumber.js/issues" + }, + "_id": "bignumber.js@1.0.1", + "dist": { + "shasum": "d98754a5308ec6fab9a50d0c36ae8e622d543c31" + }, + "_from": "bignumber.js@1.0.1", + "_resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-1.0.1.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt new file mode 100644 index 0000000..f018010 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt @@ -0,0 +1,45 @@ +bigtime.js +========== + * Creates random numbers and BigNumber and BigDecimal objects in batches. + * UNLIKELY TO RUN OUT OF MEMORY. + * Doesn't show separate times for object creation and method calls. + * Tests methods with one or two operands (i.e. includes abs and negate). + * Doesn't indicate random number creation completion. + * Doesn't calculate average number of digits of operands. + * Creates random numbers in exponential notation. + +bigtime-OOM.js +============== + * Creates random numbers and BigNumber and BigDecimal objects all in one go. + * MAY RUN OUT OF MEMORY, e.g. if iterations > 500000 and random digits > 40. + * SHOWS SEPARATE TIMES FOR OBJECT CREATION AND METHOD CALLS. + * Only tests methods with two operands (i.e. no abs or negate). + * Indicates random number creation completion. + * Calculates average number of digits of operands. + * Creates random numbers in normal notation. + + +In general, bigtime.js is recommended over bigtime-OOM.js, which is included as +separate timings for object creation and method calls may be preferred. + + +Usage +===== + +For help: + + $ node bigtime -h + +Examples: + +Compare the time taken by the BigNumber plus method and the BigDecimal add method. +Time 10000 calls to each. +Use operands of up to 40 random digits (each unique for each iteration). +Check that the BigNumber results match the BigDecimal results. + + $ node bigtime plus 10000 40 + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html new file mode 100644 index 0000000..266f84f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html @@ -0,0 +1,699 @@ + + + + + + Testing BigNumber + + + + + +

    Testing BigNumber against BigDecimal

    + +
    + +
    + + + +
    + + + +
    + + + +
    + +
    + BigDecimal: + + + BigInteger + add +
    + +
    + Random number digits: + + + +
    + +
    + Decimal places: + Rounding: +
    + +
    + Iterations: + +
    + +
    + + Click a method to stop + Press space bar to pause/unpause +
    + +
    + +
    0
    +
    +
    + + + + + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js new file mode 100644 index 0000000..2dc7f71 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js @@ -0,0 +1,366 @@ + +var arg, i, max, method, methodIndex, decimalPlaces, + reps, rounding, start, timesEqual, Xs, Ys, + bdM, bdMT, bdOT, bdRs, bdXs, bdYs, + bnM, bnMT, bnOT, bnRs, bnXs, bnYs, + memoryUsage, showMemory, bnR, bdR, + prevRss, prevHeapUsed, prevHeapTotal, + args = process.argv.splice(2), + BigDecimal = require('./lib/bigdecimal_GWT/bigdecimal').BigDecimal, + BigNumber = require('../bignumber'), + bdMs = ['add', 'subtract', 'multiply', 'divide', 'remainder', 'compareTo', 'pow'], + bnMs1 = ['plus', 'minus', 'times', 'dividedBy', 'modulo', 'comparedTo', 'toPower'], + bnMs2 = ['', '', '', 'div', 'mod', 'cmp', ''], + Ms = [bdMs, bnMs1, bnMs2], + allMs = [].concat.apply([], Ms), + expTotal = 0, + total = 0, + + ALWAYS_SHOW_MEMORY = false, + DEFAULT_MAX_DIGITS = 20, + DEFAULT_POW_MAX_DIGITS = 20, + DEFAULT_REPS = 1e4, + DEFAULT_POW_REPS = 1e2, + DEFAULT_PLACES = 20, + MAX_POWER = 50, + + getRandom = function (maxDigits) { + var i = 0, z, + // number of digits - 1 + n = Math.random() * ( maxDigits || 1 ) | 0, + r = ( Math.random() * 10 | 0 ) + ''; + + if ( n ) { + if ( z = r === '0' ) { + r += '.'; + } + + for ( ; i++ < n; r += Math.random() * 10 | 0 ){} + + // 20% chance of integer + if ( !z && Math.random() > 0.2 ) + r = r.slice( 0, i = ( Math.random() * n | 0 ) + 1 ) + '.' + r.slice(i); + } + + // Avoid 'division by zero' error with division and modulo. + if ((bdM == 'divide' || bdM == 'remainder') && parseFloat(r) === 0) + r = ( ( Math.random() * 9 | 0 ) + 1 ) + ''; + + total += n + 1; + + // 50% chance of negative + return Math.random() > 0.5 ? r : '-' + r; + }, + + pad = function (str) { + str += '... '; + while (str.length < 26) str += ' '; + return str; + }, + + getFastest = function (bn, bd) { + var r; + if (Math.abs(bn - bd) > 2) { + r = 'Big' + ((bn < bd) + ? 'Number ' + (bn ? parseFloat((bd / bn).toFixed(1)) : bd) + : 'Decimal ' + (bd ? parseFloat((bn / bd).toFixed(1)) : bn)) + + ' times faster'; + } else { + timesEqual = 1; + r = 'Times approximately equal'; + } + return r; + }, + + showMemoryChange = function () { + if (showMemory) { + memoryUsage = process.memoryUsage(); + + var rss = memoryUsage.rss, + heapUsed = memoryUsage.heapUsed, + heapTotal = memoryUsage.heapTotal; + + console.log(' Change in memory usage: ' + + ' rss: ' + toKB(rss - prevRss) + + ', hU: ' + toKB(heapUsed - prevHeapUsed) + + ', hT: ' + toKB(heapTotal - prevHeapTotal)); + prevRss = rss; prevHeapUsed = heapUsed; prevHeapTotal = heapTotal; + } + }, + + toKB = function (m) { + return parseFloat((m / 1024).toFixed(1)) + ' KB'; + }; + + +// PARSE COMMAND LINE AND SHOW HELP + +if (arg = args[0], typeof arg != 'undefined' && !isFinite(arg) && + allMs.indexOf(arg) == -1 && !/^-*m$/i.test(arg)) { + console.log( + '\n node bigtime-OOM [METHOD] [METHOD CALLS [MAX DIGITS [DECIMAL PLACES]]]\n' + + '\n METHOD: The method to be timed and compared with the automatically' + + '\n chosen corresponding method from BigDecimal or BigNumber\n' + + '\n BigDecimal: add subtract multiply divide remainder compareTo pow' + + '\n BigNumber: plus minus times dividedBy modulo comparedTo toPower' + + '\n (div mod cmp pow)' + + '\n\n METHOD CALLS: The number of method calls to be timed' + + '\n\n MAX DIGITS: The maximum number of digits of the random ' + + '\n numbers used in the method calls' + + '\n\n DECIMAL PLACES: The number of decimal places used in division' + + '\n (The rounding mode is randomly chosen)' + + '\n\n Default values: METHOD: randomly chosen' + + '\n METHOD CALLS: ' + DEFAULT_REPS + + ' (pow: ' + DEFAULT_POW_REPS + ')' + + '\n MAX DIGITS: ' + DEFAULT_MAX_DIGITS + + ' (pow: ' + DEFAULT_POW_MAX_DIGITS + ')' + + '\n DECIMAL PLACES: ' + DEFAULT_PLACES + '\n' + + '\n E.g.s node bigtime-OOM\n node bigtime-OOM minus' + + '\n node bigtime-OOM add 100000' + + '\n node bigtime-OOM times 20000 100' + + '\n node bigtime-OOM div 100000 50 20' + + '\n node bigtime-OOM 9000' + + '\n node bigtime-OOM 1000000 20\n' + + '\n To show memory usage include an argument m or -m' + + '\n E.g. node bigtime-OOM m add'); +} else { + BigNumber.config({EXPONENTIAL_AT : 1E9, RANGE : 1E9}); + Number.prototype.toPlainString = Number.prototype.toString; + + for (i = 0; i < args.length; i++) { + arg = args[i]; + + if (isFinite(arg)) { + arg = Math.abs(parseInt(arg)); + if (reps == null) { + reps = arg <= 1e10 ? arg : 0; + } else if (max == null) { + max = arg <= 1e6 ? arg : 0; + } else if (decimalPlaces == null) { + decimalPlaces = arg <= 1e6 ? arg : DEFAULT_PLACES; + } + } else if (/^-*m$/i.test(arg)) { + showMemory = true; + } else if (method == null) { + method = arg; + } + } + + for (i = 0; + i < Ms.length && (methodIndex = Ms[i].indexOf(method)) == -1; + i++) {} + + bnM = methodIndex == -1 + ? bnMs1[methodIndex = Math.floor(Math.random() * bdMs.length)] + : (Ms[i][0] == 'add' ? bnMs1 : Ms[i])[methodIndex]; + + bdM = bdMs[methodIndex]; + + if (!reps) + reps = bdM == 'pow' ? DEFAULT_POW_REPS : DEFAULT_REPS; + if (!max) + max = bdM == 'pow' ? DEFAULT_POW_MAX_DIGITS : DEFAULT_MAX_DIGITS; + if (decimalPlaces == null) + decimalPlaces = DEFAULT_PLACES; + + Xs = [reps], Ys = [reps]; + bdXs = [reps], bdYs = [reps], bdRs = [reps]; + bnXs = [reps], bnYs = [reps], bnRs = [reps]; + showMemory = showMemory || ALWAYS_SHOW_MEMORY; + + console.log('\n BigNumber %s vs BigDecimal %s', bnM, bdM); + console.log('\n Method calls: %d', reps); + + if (bdM == 'divide') { + rounding = Math.floor(Math.random() * 7); + console.log('\n Decimal places: %d\n Rounding mode: %d', decimalPlaces, rounding); + BigNumber.config(decimalPlaces, rounding); + } + + if (showMemory) { + memoryUsage = process.memoryUsage(); + console.log(' Memory usage: rss: ' + + toKB(prevRss = memoryUsage.rss) + ', hU: ' + + toKB(prevHeapUsed = memoryUsage.heapUsed) + ', hT: ' + + toKB(prevHeapTotal = memoryUsage.heapTotal)); + } + + + // CREATE RANDOM NUMBERS + + // POW: BigDecimal requires JS Number type for exponent argument + if (bdM == 'pow') { + + process.stdout.write('\n Creating ' + reps + + ' random numbers (max. digits: ' + max + ')... '); + + for (i = 0; i < reps; i++) { + Xs[i] = getRandom(max); + } + console.log('done\n Average number of digits: %d', + ((total / reps) | 0)); + + process.stdout.write(' Creating ' + reps + + ' random integer exponents (max. value: ' + MAX_POWER + ')... '); + + for (i = 0; i < reps; i++) { + bdYs[i] = bnYs[i] = Math.floor(Math.random() * (MAX_POWER + 1)); + expTotal += bdYs[i]; + } + console.log('done\n Average value: %d', ((expTotal / reps) | 0)); + + showMemoryChange(); + + + // POW: TIME CREATION OF BIGDECIMALS + + process.stdout.write('\n Creating BigDecimals... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bdXs[i] = new BigDecimal(Xs[i]); + } + bdOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bdOT || '<1'); + + showMemoryChange(); + + + // POW: TIME CREATION OF BIGNUMBERS + + process.stdout.write(' Creating BigNumbers... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bnXs[i] = new BigNumber(Xs[i]); + } + bnOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bnOT || '<1'); + + + // NOT POW + } else { + + process.stdout.write('\n Creating ' + (reps * 2) + + ' random numbers (max. digits: ' + max + ')... '); + + + for (i = 0; i < reps; i++) { + Xs[i] = getRandom(max); + Ys[i] = getRandom(max); + } + console.log('done\n Average number of digits: %d', + ( total / (reps * 2) ) | 0); + + showMemoryChange(); + + + // TIME CREATION OF BIGDECIMALS + + process.stdout.write('\n Creating BigDecimals... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bdXs[i] = new BigDecimal(Xs[i]); + bdYs[i] = new BigDecimal(Ys[i]); + } + bdOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bdOT || '<1'); + + showMemoryChange(); + + + // TIME CREATION OF BIGNUMBERS + + process.stdout.write(' Creating BigNumbers... '); + + start = +new Date(); + for (i = 0; i < reps; i++) { + bnXs[i] = new BigNumber(Xs[i]); + bnYs[i] = new BigNumber(Ys[i]); + } + bnOT = +new Date() - start; + + console.log('done. Time taken: %s ms', bnOT || '<1'); + } + + showMemoryChange(); + + console.log('\n Object creation: %s\n', getFastest(bnOT, bdOT)); + + + // TIME BIGDECIMAL METHOD CALLS + + process.stdout.write(pad(' BigDecimal ' + bdM)); + + if (bdM == 'divide') { + start = +new Date(); + while (i--) bdRs[i] = bdXs[i][bdM](bdYs[i], decimalPlaces, rounding); + bdMT = +new Date() - start; + } else { + start = +new Date(); + while (i--) bdRs[i] = bdXs[i][bdM](bdYs[i]); + bdMT = +new Date() - start; + } + + console.log('done. Time taken: %s ms', bdMT || '<1'); + + + // TIME BIGNUMBER METHOD CALLS + + i = reps; + process.stdout.write(pad(' BigNumber ' + bnM)); + + start = +new Date(); + while (i--) bnRs[i] = bnXs[i][bnM](bnYs[i]); + bnMT = +new Date() - start; + + console.log('done. Time taken: %s ms', bnMT || '<1'); + + + // TIMINGS SUMMARY + + console.log('\n Method calls: %s', getFastest(bnMT, bdMT)); + + if (!timesEqual) { + console.log('\n Overall: ' + + getFastest((bnOT || 1) + (bnMT || 1), (bdOT || 1) + (bdMT || 1))); + } + + + + // CHECK FOR MISMATCHES + + process.stdout.write('\n Checking for mismatches... '); + + for (i = 0; i < reps; i++) { + + bnR = bnRs[i].toString(); + bdR = bdRs[i].toPlainString(); + + // Strip any trailing zeros from non-integer BigDecimals + if (bdR.indexOf('.') != -1) { + bdR = bdR.replace(/\.?0+$/, ''); + } + + if (bdR !== bnR) { + console.log('breaking on first mismatch (result number %d):' + + '\n\n BigDecimal: %s\n BigNumber: %s', i, bdR, bnR); + console.log('\n x: %s\n y: %s', Xs[i], Ys[i]); + + if (bdM == 'divide') { + console.log('\n dp: %d\n r: %d',decimalPlaces, rounding); + } + break; + } + } + if (i == reps) { + console.log('done. None found.\n'); + } +} + + + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js new file mode 100644 index 0000000..8398df8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js @@ -0,0 +1,335 @@ + +var arg, i, j, max, method, methodIndex, decimalPlaces, rounding, reps, start, + timesEqual, xs, ys, prevRss, prevHeapUsed, prevHeapTotal, showMemory, + bdM, bdT, bdR, bdRs, + bnM, bnT, bnR, bnRs, + args = process.argv.splice(2), + BigDecimal = require('./lib/bigdecimal_GWT/bigdecimal').BigDecimal, + BigNumber = require('../bignumber'), + bdMs = ['add', 'subtract', 'multiply', 'divide', 'remainder', + 'compareTo', 'pow', 'negate', 'abs'], + bnMs1 = ['plus', 'minus', 'times', 'dividedBy', 'modulo', + 'comparedTo', 'toPower', 'negated', 'abs'], + bnMs2 = ['', '', '', 'div', 'mod', 'cmp', '', 'neg', ''], + Ms = [bdMs, bnMs1, bnMs2], + allMs = [].concat.apply([], Ms), + bdTotal = 0, + bnTotal = 0, + BD = {}, + BN = {}, + + ALWAYS_SHOW_MEMORY = false, + DEFAULT_MAX_DIGITS = 20, + DEFAULT_POW_MAX_DIGITS = 20, + DEFAULT_REPS = 1e4, + DEFAULT_POW_REPS = 1e2, + DEFAULT_PLACES = 20, + MAX_POWER = 50, + MAX_RANDOM_EXPONENT = 100, + + getRandom = function (maxDigits) { + var i = 0, z, + // number of digits - 1 + n = Math.random() * ( maxDigits || 1 ) | 0, + r = ( Math.random() * 10 | 0 ) + ''; + + if ( n ) { + if ( z = r === '0' ) { + r += '.'; + } + + for ( ; i++ < n; r += Math.random() * 10 | 0 ){} + + // 20% chance of integer + if ( !z && Math.random() > 0.2 ) + r = r.slice( 0, i = ( Math.random() * n | 0 ) + 1 ) + '.' + r.slice(i); + } + + // Avoid 'division by zero' error with division and modulo. + if ((bdM == 'divide' || bdM == 'remainder') && parseFloat(r) === 0) + r = ( ( Math.random() * 9 | 0 ) + 1 ) + ''; + + // 50% chance of negative + return Math.random() > 0.5 ? r : '-' + r; + }, + + // Returns exponential notation. + //getRandom = function (maxDigits) { + // var i = 0, + // // n is the number of significant digits - 1 + // n = Math.random() * (maxDigits || 1) | 0, + // r = ( ( Math.random() * 9 | 0 ) + 1 ) + ( n ? '.' : '' ); + // + // for (; i++ < n; r += Math.random() * 10 | 0 ){} + // + // // Add exponent. + // r += 'e' + ( Math.random() > 0.5 ? '+' : '-' ) + + // ( Math.random() * MAX_RANDOM_EXPONENT | 0 ); + // + // // 50% chance of being negative. + // return Math.random() > 0.5 ? r : '-' + r + //}, + + getFastest = function (bn, bd) { + var r; + if (Math.abs(bn - bd) > 2) { + r = 'Big' + ((bn < bd) + ? 'Number was ' + (bn ? parseFloat((bd / bn).toFixed(1)) : bd) + : 'Decimal was ' + (bd ? parseFloat((bn / bd).toFixed(1)) : bn)) + + ' times faster'; + } else { + timesEqual = 1; + r = 'Times approximately equal'; + } + return r; + }, + + getMemory = function (obj) { + if (showMemory) { + var mem = process.memoryUsage(), + rss = mem.rss, + heapUsed = mem.heapUsed, + heapTotal = mem.heapTotal; + + if (obj) { + obj.rss += (rss - prevRss); + obj.hU += (heapUsed - prevHeapUsed); + obj.hT += (heapTotal - prevHeapTotal); + } + prevRss = rss; + prevHeapUsed = heapUsed; + prevHeapTotal = heapTotal; + } + }, + + getMemoryTotals = function (obj) { + function toKB(m) {return parseFloat((m / 1024).toFixed(1))} + return '\trss: ' + toKB(obj.rss) + + '\thU: ' + toKB(obj.hU) + + '\thT: ' + toKB(obj.hT); + }; + + +if (arg = args[0], typeof arg != 'undefined' && !isFinite(arg) && + allMs.indexOf(arg) == -1 && !/^-*m$/i.test(arg)) { + console.log( + '\n node bigtime [METHOD] [METHOD CALLS [MAX DIGITS [DECIMAL PLACES]]]\n' + + '\n METHOD: The method to be timed and compared with the' + + '\n \t corresponding method from BigDecimal or BigNumber\n' + + '\n BigDecimal: add subtract multiply divide remainder' + + ' compareTo pow\n\t\tnegate abs\n\n BigNumber: plus minus times' + + ' dividedBy modulo comparedTo toPower\n\t\tnegated abs' + + ' (div mod cmp pow neg)' + + '\n\n METHOD CALLS: The number of method calls to be timed' + + '\n\n MAX DIGITS: The maximum number of digits of the random ' + + '\n\t\tnumbers used in the method calls\n\n ' + + 'DECIMAL PLACES: The number of decimal places used in division' + + '\n\t\t(The rounding mode is randomly chosen)' + + '\n\n Default values: METHOD: randomly chosen' + + '\n\t\t METHOD CALLS: ' + DEFAULT_REPS + + ' (pow: ' + DEFAULT_POW_REPS + ')' + + '\n\t\t MAX DIGITS: ' + DEFAULT_MAX_DIGITS + + ' (pow: ' + DEFAULT_POW_MAX_DIGITS + ')' + + '\n\t\t DECIMAL PLACES: ' + DEFAULT_PLACES + '\n' + + '\n E.g. node bigtime\n\tnode bigtime minus\n\tnode bigtime add 100000' + + '\n\tnode bigtime times 20000 100\n\tnode bigtime div 100000 50 20' + + '\n\tnode bigtime 9000\n\tnode bigtime 1000000 20\n' + + '\n To show memory usage, include an argument m or -m' + + '\n E.g. node bigtime m add'); +} else { + + BigNumber.config({EXPONENTIAL_AT : 1E9, RANGE : 1E9}); + Number.prototype.toPlainString = Number.prototype.toString; + + for (i = 0; i < args.length; i++) { + arg = args[i]; + if (isFinite(arg)) { + arg = Math.abs(parseInt(arg)); + if (reps == null) + reps = arg <= 1e10 ? arg : 0; + else if (max == null) + max = arg <= 1e6 ? arg : 0; + else if (decimalPlaces == null) + decimalPlaces = arg <= 1e6 ? arg : DEFAULT_PLACES; + } else if (/^-*m$/i.test(arg)) + showMemory = true; + else if (method == null) + method = arg; + } + + for (i = 0; + i < Ms.length && (methodIndex = Ms[i].indexOf(method)) == -1; + i++) {} + + bnM = methodIndex == -1 + ? bnMs1[methodIndex = Math.floor(Math.random() * bdMs.length)] + : (Ms[i][0] == 'add' ? bnMs1 : Ms[i])[methodIndex]; + + bdM = bdMs[methodIndex]; + + if (!reps) + reps = bdM == 'pow' ? DEFAULT_POW_REPS : DEFAULT_REPS; + if (!max) + max = bdM == 'pow' ? DEFAULT_POW_MAX_DIGITS : DEFAULT_MAX_DIGITS; + if (decimalPlaces == null) + decimalPlaces = DEFAULT_PLACES; + + xs = [reps], ys = [reps], bdRs = [reps], bnRs = [reps]; + BD.rss = BD.hU = BD.hT = BN.rss = BN.hU = BN.hT = 0; + showMemory = showMemory || ALWAYS_SHOW_MEMORY; + + console.log('\n BigNumber %s vs BigDecimal %s\n' + + '\n Method calls: %d\n\n Random operands: %d', bnM, bdM, reps, + bdM == 'abs' || bdM == 'negate' || bdM == 'abs' ? reps : reps * 2); + + console.log(' Max. digits of operands: %d', max); + + if (bdM == 'divide') { + rounding = Math.floor(Math.random() * 7); + console.log('\n Decimal places: %d\n Rounding mode: %d', decimalPlaces, rounding); + BigNumber.config(decimalPlaces, rounding); + } + + process.stdout.write('\n Testing started'); + + outer: + for (; reps > 0; reps -= 1e4) { + + j = Math.min(reps, 1e4); + + + // GENERATE RANDOM OPERANDS + + for (i = 0; i < j; i++) { + xs[i] = getRandom(max); + } + + if (bdM == 'pow') { + for (i = 0; i < j; i++) { + ys[i] = Math.floor(Math.random() * (MAX_POWER + 1)); + } + } else if (bdM != 'abs' && bdM != 'negate') { + for (i = 0; i < j; i++) { + ys[i] = getRandom(max); + } + } + + getMemory(); + + + // BIGDECIMAL + + if (bdM == 'divide') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](new BigDecimal(ys[i]), + decimalPlaces, rounding); + } + bdT = +new Date() - start; + + } else if (bdM == 'pow') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](ys[i]); + } + bdT = +new Date() - start; + + } else if (bdM == 'abs' || bdM == 'negate') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](); + } + bdT = +new Date() - start; + + } else { + + start = +new Date(); + for (i = 0; i < j; i++) { + bdRs[i] = new BigDecimal(xs[i])[bdM](new BigDecimal(ys[i])); + } + bdT = +new Date() - start; + + } + + getMemory(BD); + + + // BIGNUMBER + + if (bdM == 'pow') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bnRs[i] = new BigNumber(xs[i])[bnM](ys[i]); + } + bnT = +new Date() - start; + + } else if (bdM == 'abs' || bdM == 'negate') { + + start = +new Date(); + for (i = 0; i < j; i++) { + bnRs[i] = new BigNumber(xs[i])[bnM](); + } + bnT = +new Date() - start; + + } else { + + start = +new Date(); + for (i = 0; i < j; i++) { + bnRs[i] = new BigNumber(xs[i])[bnM](new BigNumber(ys[i])); + } + bnT = +new Date() - start; + + } + + getMemory(BN); + + + // CHECK FOR MISMATCHES + + for (i = 0; i < j; i++) { + bnR = bnRs[i].toString(); + bdR = bdRs[i].toPlainString(); + + // Strip any trailing zeros from non-integer BigDecimals + if (bdR.indexOf('.') != -1) { + bdR = bdR.replace(/\.?0+$/, ''); + } + + if (bdR !== bnR) { + console.log('\n breaking on first mismatch (result number %d):' + + '\n\n BigDecimal: %s\n BigNumber: %s', i, bdR, bnR); + console.log('\n x: %s\n y: %s', xs[i], ys[i]); + + if (bdM == 'divide') + console.log('\n dp: %d\n r: %d',decimalPlaces, rounding); + break outer; + } + } + + bdTotal += bdT; + bnTotal += bnT; + + process.stdout.write(' .'); + } + + + // TIMINGS SUMMARY + + + if (i == j) { + console.log(' done\n\n No mismatches.'); + if (showMemory) { + console.log('\n Change in memory usage (KB):' + + '\n\tBigDecimal' + getMemoryTotals(BD) + + '\n\tBigNumber ' + getMemoryTotals(BN)); + } + console.log('\n Time taken:' + + '\n\tBigDecimal ' + (bdTotal || '<1') + ' ms' + + '\n\tBigNumber ' + (bnTotal || '<1') + ' ms\n\n ' + + getFastest(bnTotal, bdTotal) + '\n'); + } +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class new file mode 100644 index 0000000000000000000000000000000000000000..455ed364b2fff589b676467bdebad676d1003505 GIT binary patch literal 1275 zcmai!%TE(g6vn>`eN0QS(|hi@zjN-H@0|AQ?}N_(6f8v1kD)Mz1>A_D1vdqZ z@O3nTBvRZOi{ci>1*8Rte4h~@36Qy&6`%-E1!w|v?l3rO3a|uBgfSV$6hmmrt+?JD zhSp?il_4-&-EbJ<1-IfX?v~e`+KRniB2S=fyA_7sxn2M^IrflTWrb5RiWm8E7 zNt9@5qs6ckx>Bc@hj_#*DKHEhqG=kcrP2H7mTB;ZOm1nWu3EXYEKzz@%xbD8ky|2{ zPU0QwMb#ba`*?lJDS8Y&$$yI;sX4qY8%~WuJY-JEJDF;Po_3$OXZhuh=agv%s=NHQ zMuc0b?a:b} +function xe(a,b){return !we(a,b)} +function ye(a,b){return !ve(a,b)} +function ir(a,b){return new b(a)} +function Oj(a){this.b=new Yn(a)} +function Nj(){this.b=(Un(),Rn)} +function ak(){this.b=(Qo(),Fo)} +function Wo(){Qo();return zo} +function mr(a,b){lr();_q(kr,a,b)} +function br(a,b){a[b]||(a[b]={})} +function kq(a){return a.b=b)&&hq(a,b)} +function xc(a,b){return a!=null&&tc(a,b)} +function db(a){return yc(a)?Db(wc(a)):Lr} +function Z(a){return yc(a)?$(wc(a)):a+Lr} +function Fl(a){return lc(Vd,{6:1},1,a,0)} +function vq(){this.b=lc(Td,{6:1},0,0,0)} +function Pl(){Pl=rr;Ml={};Ol={}} +function Yo(){Yo=rr;Xo=Jk((Qo(),zo))} +function ik(){if(!hk){hk=true;jk()}} +function Gj(){if(!Fj){Fj=true;Hj()}} +function Wj(){if(!Vj){Vj=true;new kk;Xj()}} +function gr(){this.b=new Fq;new Fq;new Fq} +function X(a){Cb();this.c=a;Bb(new Tb,this)} +function Pi(a){Oh();oi.call(this,Hm(a,0))} +function gg(a){hg.call(this,a,0,a.length)} +function fg(a,b){cg.call(this,a);If(this,b)} +function ze(a,b){ee(a,b,true);return ae} +function tq(a,b){dq(b,a.c);return a.b[b]} +function rq(a,b){nc(a.b,a.c++,b);return true} +function _l(a,b,c){dc(a.b,Ll(b,0,c));return a} +function kb(a,b,c){return a.apply(b,c);var d} +function em(a,b,c){return ec(a.b,b,b,c),a} +function Af(a,b,c){return yf(a,b,Bc(a.f),c)} +function xf(a,b,c){return yf(a,b,Bc(a.f),Uo(c))} +function Bl(c,a,b){return c.substr(a,b-a)} +function Al(b,a){return b.substr(a,b.length-a)} +function fl(a){return Math.log(a)*Math.LOG10E} +function cb(a){return a==null?null:a.name} +function $(a){return a==null?null:a.message} +function yc(a){return a!=null&&a.tM!=rr&&!tc(a,1)} +function ec(a,b,c,d){a.b=Bl(a.b,0,b)+d+Al(a.b,c)} +function eg(a,b,c){dg.call(this,a,b);If(this,c)} +function pg(a,b){this.g=a;this.f=b;this.b=sg(a)} +function si(a,b,c){Oh();this.f=a;this.e=b;this.b=c} +function sl(a){this.b='Unknown';this.d=a;this.c=-1} +function yk(a,b){var c;c=new wk;c.d=a+b;return c} +function dr(a,b){var c;c=mp(a.b,b);return wc(c)} +function fb(a){var b;return b=a,zc(b)?b.hC():ob(b)} +function To(a){Qo();return Ok((Yo(),Xo),a)} +function qe(a,b){return de(a.l&b.l,a.m&b.m,a.h&b.h)} +function De(a,b){return de(a.l|b.l,a.m|b.m,a.h|b.h)} +function Le(a,b){return de(a.l^b.l,a.m^b.m,a.h^b.h)} +function Bm(a,b){return (a.b[~~b>>5]&1<<(b&31))!=0} +function Cq(a,b){var c;for(c=0;c=b&&a.splice(0,b);return a} +function wb(a,b){!a&&(a=[]);a[a.length]=b;return a} +function Ph(a,b){if(mi(a,b)){return tm(a,b)}return a} +function ii(a,b){if(!mi(a,b)){return tm(a,b)}return a} +function _d(a){if(xc(a,15)){return a}return new X(a)} +function Eb(){try{null.a()}catch(a){return a}} +function Ak(a){var b;b=new wk;b.d=Lr+a;b.c=1;return b} +function eb(a,b){var c;return c=a,zc(c)?c.eQ(b):c===b} +function se(a,b){return a.l==b.l&&a.m==b.m&&a.h==b.h} +function Ce(a,b){return a.l!=b.l||a.m!=b.m||a.h!=b.h} +function de(a,b,c){return _=new Se,_.l=a,_.m=b,_.h=c,_} +function rp(a,b,c){return !b?tp(a,c):sp(a,b,c,~~ob(b))} +function Eq(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)} +function Xq(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)} +function hq(a,b){throw new Wk('Index: '+a+', Size: '+b)} +function Xh(a,b){if(b<0){throw new nk(ts)}return tm(a,b)} +function dg(a,b){if(!a){throw new jl}this.f=b;Tf(this,a)} +function og(a,b){if(!a){throw new jl}this.f=b;Tf(this,a)} +function ig(a,b,c,d){hg.call(this,a,b,c);If(this,d)} +function jg(a,b){hg.call(this,a,0,a.length);If(this,b)} +function ng(a,b){hg.call(this,Cl(a),0,a.length);If(this,b)} +function lm(a){V.call(this,'String index out of range: '+a)} +function Zl(a,b){dc(a.b,String.fromCharCode(b));return a} +function pn(a,b){tn(a.b,a.b,a.e,b.b,b.e);Sh(a);a.c=-2} +function Tf(a,b){a.d=b;a.b=b.ab();a.b<54&&(a.g=Ie(ai(b)))} +function qc(){qc=rr;oc=[];pc=[];rc(new ic,oc,pc)} +function Ch(){if(!Bh){Bh=true;new Yj;new Ij;Dh()}} +function Sl(){if(Nl==256){Ml=Ol;Ol={};Nl=0}++Nl} +function cr(a){var b;b=a[Ls];if(!b){b=[];a[Ls]=b}return b} +function zk(a,b,c){var d;d=new wk;d.d=a+b;d.c=c?8:0;return d} +function xk(a,b,c){var d;d=new wk;d.d=a+b;d.c=4;d.b=c;return d} +function lc(a,b,c,d,e){var f;f=jc(e,d);mc(a,b,c,f);return f} +function Ll(a,b,c){var d;d=b+c;El(a.length,b,d);return Gl(a,b,d)} +function mo(a,b){go();return b=a.c.c){throw new Oq}return tq(a.c,a.b++)} +function wl(a,b){if(!xc(b,1)){return false}return String(a)==b} +function lb(){if(ib++==0){sb((rb(),qb));return true}return false} +function fi(a){if(a.f<0){throw new nk('start < 0: '+a)}return xo(a)} +function pm(){V.call(this,'Add not supported on this collection')} +function Fq(){this.b=[];this.f={};this.d=false;this.c=null;this.e=0} +function qi(a,b){Oh();this.f=a;this.e=1;this.b=mc(Od,{6:1},-1,[b])} +function sc(a,b,c){qc();for(var d=0,e=b.length;d=0&&a.b[c]==b[c];--c){}return c<0} +function tp(a,b){var c;c=a.c;a.c=b;if(!a.d){a.d=true;++a.e}return c} +function $l(a,b){dc(a.b,String.fromCharCode.apply(null,b));return a} +function am(a,b,c,d){b==null&&(b=Mr);bc(a.b,b.substr(c,d-c));return a} +function sn(a,b,c,d){var e;e=lc(Od,{6:1},-1,b,1);tn(e,a,b,c,d);return e} +function mc(a,b,c,d){qc();sc(d,oc,pc);d.aC=a;d.cM=b;d.qI=c;return d} +function uq(a,b,c){for(;ca.c)&&hq(b,a.c);Aq(a.b,b,0,c);++a.c} +function nn(a,b){var c;c=on(a.b,a.e,b);if(c==1){a.b[a.e]=1;++a.e}a.c=-2} +function Sh(a){while(a.e>0&&a.b[--a.e]==0){}a.b[a.e++]==0&&(a.f=0)} +function Gg(a){if(we(a,ur)&&xe(a,xr)){return df[Je(a)]}return new qg(a,0)} +function ji(a,b){if(b==0||a.f==0){return a}return b>0?wm(a,b):zm(a,-b)} +function li(a,b){if(b==0||a.f==0){return a}return b>0?zm(a,b):wm(a,-b)} +function $h(a){var b;if(a.f==0){return -1}b=Zh(a);return (b<<5)+_k(a.b[b])} +function bl(a){var b;b=Je(a);return b!=0?_k(b):_k(Je(Fe(a,32)))+32} +function Sb(a,b){var c;c=Mb(a,b);return c.length==0?(new Fb).o(b):zb(c,1)} +function Gl(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} +function rc(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} +function up(e,a,b){var c,d=e.f;a=Qr+a;a in d?(c=d[a]):++e.e;d[a]=b;return c} +function gn(a,b,c,d){var e;e=lc(Od,{6:1},-1,b+1,1);hn(e,a,b,c,d);return e} +function Cl(a){var b,c;c=a.length;b=lc(Md,{6:1},-1,c,1);xl(a,c,b,0);return b} +function _e(a){var b;b=bf(a);if(isNaN(b)){throw new pl(Zr+a+$r)}return b} +function Fg(a){if(!isFinite(a)||isNaN(a)){throw new pl(hs)}return new mg(Lr+a)} +function wc(a){if(a!=null&&(a.tM==rr||tc(a,1))){throw new Ek}return a} +function Qf(a,b){var c;c=new og((!a.d&&(a.d=Li(a.g)),a.d),a.f);If(c,b);return c} +function bg(a,b){var c;c=new Pi(Zf(a));if(sm(c)0?1:0}return (!a.d&&(a.d=Li(a.g)),a.d).r()} +function Mf(a){if(a.b<54){return new pg(-a.g,a.f)}return new og((!a.d&&(a.d=Li(a.g)),a.d).cb(),a.f)} +function El(a,b,c){if(b<0){throw new lm(b)}if(ca){throw new lm(c)}} +function lg(a,b){if(!isFinite(a)||isNaN(a)){throw new pl(hs)}Hf(this,a.toPrecision(20));If(this,b)} +function Gk(a,b){if(isNaN(a)){return isNaN(b)?0:1}else if(isNaN(b)){return -1}return ab?1:0} +function uk(a,b){if(b<2||b>36){return 0}if(a<0||a>=b){return 0}return a<10?48+a&65535:97+a-10&65535} +function er(a,b){var c;if(!b){return null}c=b[Ls];if(c){return c}c=ir(b,dr(a,b.gC()));b[Ls]=c;return c} +function ke(a){var b,c;c=$k(a.h);if(c==32){b=$k(a.m);return b==32?$k(a.l)+32:b+20-10}else{return c-12}} +function be(a){var b,c,d;b=a&4194303;c=~~a>>22&4194303;d=a<0?1048575:0;return de(b,c,d)} +function Qe(){Qe=rr;Me=de(4194303,4194303,524287);Ne=de(0,0,524288);Oe=ue(1);ue(2);Pe=ue(0)} +function mn(a,b){hn(a.b,a.b,a.e,b.b,b.e);a.e=hl(gl(a.e,b.e)+1,a.b.length);Sh(a);a.c=-2} +function um(a,b){var c;c=~~b>>5;a.e+=c+($k(a.b[a.e-1])-(b&31)>=0?0:1);xm(a.b,a.b,c,b&31);Sh(a);a.c=-2} +function Tm(a,b){var c,d;c=~~b>>5;if(a.e>>d:0;Sh(a)} +function ai(a){var b;b=a.e>1?De(Ee(ue(a.b[1]),32),qe(ue(a.b[0]),yr)):qe(ue(a.b[0]),yr);return Ae(ue(a.f),b)} +function jn(a,b,c){var d;for(d=c-1;d>=0&&a[d]==b[d];--d){}return d<0?0:xe(qe(ue(a[d]),yr),qe(ue(b[d]),yr))?-1:1} +function ym(a,b,c){var d,e,f;d=0;for(e=0;e>>31}d!=0&&(a[c]=d)} +function ge(a,b,c,d,e){var f;f=Fe(a,b);c&&je(f);if(e){a=ie(a,b);d?(ae=Be(a)):(ae=de(a.l,a.m,a.h))}return f} +function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{Jr($d)()}catch(a){b(c)}else{Jr($d)()}} +function fr(a,b){var c,d,e;if(b==null){return null}d=cr(b);e=d;for(c=0;c>5==a.e-1&&a.b[a.e-1]==1<<(b&31);if(d){for(c=0;d&&c=0&&b=0){return new qg(ur,2147483647)}return new qg(ur,-2147483648)} +function Li(a){Oh();if(a<0){if(a!=-1){return new ui(-1,-a)}return Ih}else return a<=10?Kh[Bc(a)]:new ui(1,a)} +function zg(a){var b=qf;!b&&(b=qf=/^[+-]?\d*$/i);if(b.test(a)){return parseInt(a,10)}else{return Number.NaN}} +function kp(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=new Yp(e,c.substring(1));a.Kb(d)}}} +function Rl(a){Pl();var b=Qr+a;var c=Ol[b];if(c!=null){return c}c=Ml[b];c==null&&(c=Ql(a));Sl();return Ol[b]=c} +function Be(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;return de(b,c,d)} +function je(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;a.l=b;a.m=c;a.h=d} +function Q(a){var b,c,d;c=lc(Ud,{6:1},13,a.length,0);for(d=0,b=a.length;d>=1){}return b}} +function sm(a){var b,c,d;if(a.f==0){return 0}b=a.e<<5;c=a.b[a.e-1];if(a.f<0){d=Zh(a);d==a.e-1&&(c=~~(c-1))}b-=$k(c);return b} +function io(a,b,c,d,e){go();if(b==0||d==0){return}b==1?(e[d]=ko(e,c,d,a[0])):d==1?(e[b]=ko(e,a,b,c[0])):jo(a,c,e,b,d)} +function en(a,b,c,d,e){var f,g;g=a;for(f=c.ab()-1;f>=0;--f){g=Ym(g,g,d,e);(c.b[~~f>>5]&1<<(f&31))!=0&&(g=Ym(g,b,d,e))}return g} +function on(a,b,c){var d,e;d=qe(ue(c),yr);for(e=0;Ce(d,ur)&&e2147483647){throw new nk('Underflow')}else{return Bc(a)}} +function Xn(a,b){Un();if(a<0){throw new Sk('Digits < 0')}if(!b){throw new kl('null RoundingMode')}this.b=a;this.c=b} +function Ki(a){Oh();if(xe(a,ur)){if(Ce(a,wr)){return new ti(-1,Be(a))}return Ih}else return ye(a,tr)?Kh[Je(a)]:new ti(1,a)} +function tg(a){var b;xe(a,ur)&&(a=de(~a.l&4194303,~a.m&4194303,~a.h&1048575));return 64-(b=Je(Fe(a,32)),b!=0?$k(b):$k(Je(a))+32)} +function pe(a,b){var c,d,e;c=a.l+b.l;d=a.m+b.m+(~~c>>22);e=a.h+b.h+(~~d>>22);return de(c&4194303,d&4194303,e&1048575)} +function He(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(~~c>>22);e=a.h-b.h+(~~d>>22);return de(c&4194303,d&4194303,e&1048575)} +function Sm(a,b){var c;c=b-1;if(a.f>0){while(!a.gb(c)){--c}return b-1-c}else{while(a.gb(c)){--c}return b-1-gl(c,a.bb())}} +function fe(a,b){if(a.h==524288&&a.m==0&&a.l==0){b&&(ae=de(0,0,0));return ce((Qe(),Oe))}b&&(ae=de(a.l,a.m,a.h));return de(0,0,0)} +function Ff(a,b){var c;if(a===b){return true}if(xc(b,16)){c=vc(b,16);return c.f==a.f&&(a.b<54?c.g==a.g:a.d.eQ(c.d))}return false} +function cn(a,b,c){var d,e,f,g;f=ur;for(d=b-1;d>=0;--d){g=pe(Ee(f,32),qe(ue(a[d]),yr));e=Nm(g,c);f=ue(Je(Fe(e,32)))}return Je(f)} +function wm(a,b){var c,d,e,f;c=~~b>>5;b&=31;e=a.e+c+(b==0?0:1);d=lc(Od,{6:1},-1,e,1);xm(d,a.b,c,b);f=new si(a.f,e,d);Sh(f);return f} +function ue(a){var b,c;if(a>-129&&a<128){b=a+128;oe==null&&(oe=lc(Pd,{6:1},2,256,0));c=oe[b];!c&&(c=oe[b]=be(a));return c}return be(a)} +function Ai(a){Oh();var b,c,d;if(a>5;b=a&31;d=lc(Od,{6:1},-1,c+1,1);d[c]=1<ys&&c[c.length-1]>ys){return c}var a=c.replace(/^(\s*)/,Lr);var b=a.replace(/\s*$/,Lr);return b} +function Yk(a){a-=~~a>>1&1431655765;a=(~~a>>2&858993459)+(a&858993459);a=(~~a>>4)+a&252645135;a+=~~a>>8;a+=~~a>>16;return a&63} +function nc(a,b,c){if(c!=null){if(a.qI>0&&!uc(c,a.qI)){throw new qk}if(a.qI<0&&(c.tM==rr||tc(c,1))){throw new qk}}return a[b]=c} +function Qh(a,b){if(a.f>b.f){return 1}if(a.fb.e){return a.f}if(a.e>1);f=a[e];if(fb){c=e-1}else{return e}}return -d-1} +function Pk(a){var b;b=_e(a);if(b>3.4028234663852886E38){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b} +function Ie(a){if(se(a,(Qe(),Ne))){return -9223372036854775808}if(!we(a,Pe)){return -me(Be(a))}return a.l+a.m*4194304+a.h*17592186044416} +function Bb(a,b){var c,d,e,f;e=Sb(a,yc(b.c)?wc(b.c):null);f=lc(Ud,{6:1},13,e.length,0);for(c=0,d=f.length;c0?d:Pr} +function ie(a,b){var c,d,e;if(b<=22){c=a.l&(1<>5]|=1<<(c&31))}return d} +function Jm(a){var b,c,d;b=qe(ue(a.b[0]),yr);c=sr;d=vr;do{Ce(qe(Ae(b,c),d),ur)&&(c=De(c,d));d=Ee(d,1)}while(xe(d,Fr));c=Be(c);return Je(qe(c,yr))} +function Gm(a){var b,c,d;if(we(a,ur)){c=re(a,Ar);d=ze(a,Ar)}else{b=Ge(a,1);c=re(b,Br);d=ze(b,Br);d=pe(Ee(d,1),qe(a,sr))}return De(Ee(d,32),qe(c,yr))} +function ko(a,b,c,d){go();var e,f;e=ur;for(f=0;f36){throw new pl('Radix out of range')}if(a.length==0){throw new pl('Zero length BigInteger')}Ei(this,a,b)} +function Vq(){Uq();var a,b,c;c=Tq+++(new Date).getTime();a=Bc(Math.floor(c*5.9604644775390625E-8))&16777215;b=Bc(c-a*16777216);this.b=a^1502;this.c=b^15525485} +function un(a,b,c,d){var e;if(c>d){return 1}else if(c=0&&a[e]==b[e];--e){}return e<0?0:xe(qe(ue(a[e]),yr),qe(ue(b[e]),yr))?-1:1}} +function In(a,b){var c,d,e,f;e=a.e;d=lc(Od,{6:1},-1,e,1);hl(Zh(a),Zh(b));for(c=0;c=e){return Oh(),Nh}d=lc(Od,{6:1},-1,e,1);for(;c999999999){throw new nk(bs)}c=a.f*b;return a.b==0&&a.g!=-1?Ig(c):new dg((!a.d&&(a.d=Li(a.g)),a.d).db(b),Dg(c))} +function tk(a,b){if(b<2||b>36){return -1}if(a>=48&&a<48+(b<10?b:10)){return a-48}if(a>=97&&a=65&&a=0;--a){Sq[a]=c;c*=0.5}b=1;for(a=24;a>=0;--a){Rq[a]=b;b*=0.5}} +function oo(a,b){go();var c,d;d=(Oh(),Jh);c=a;for(;b>1;b>>=1){(b&1)!=0&&(d=ei(d,c));c.e==1?(c=ei(c,c)):(c=new ri(qo(c.b,c.e,lc(Od,{6:1},-1,c.e<<1,1))))}d=ei(d,c);return d} +function nl(){nl=rr;ml=mc(Md,{6:1},-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} +function rm(a){var b,c;b=0;if(a.f==0){return 0}c=Zh(a);if(a.f>0){for(;c>22);e+=~~d>>22;if(e<0){return false}a.l=c&4194303;a.m=d&4194303;a.h=e&1048575;return true} +function al(a){var b,c,d;b=lc(Md,{6:1},-1,8,1);c=(nl(),ml);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return Gl(b,d,8)} +function vn(a,b){if(b.f==0||a.f==0){return Oh(),Nh}if(Vh(b,(Oh(),Ih))){return a}if(Vh(a,Ih)){return b}return a.f>0?b.f>0?Dn(a,b):wn(a,b):b.f>0?wn(b,a):a.e>b.e?xn(a,b):xn(b,a)} +function yn(a,b){if(b.f==0){return a}if(a.f==0){return Oh(),Nh}if(Vh(a,(Oh(),Ih))){return new Pi(En(b))}if(Vh(b,Ih)){return Nh}return a.f>0?b.f>0?Bn(a,b):Cn(a,b):b.f>0?An(a,b):zn(a,b)} +function Gf(a){var b;if(a.c!=0){return a.c}if(a.b<54){b=te(a.g);a.c=Je(qe(b,wr));a.c=33*a.c+Je(qe(Fe(b,32),wr));a.c=17*a.c+Bc(a.f);return a.c}a.c=17*a.d.hC()+Bc(a.f);return a.c} +function vg(a,b,c,d){var e,f,g,i,j;f=(j=a/b,j>0?Math.floor(j):Math.ceil(j));g=a%b;i=Gk(a*b,0);if(g!=0){e=Gk((g<=0?0-g:g)*2,b<=0?0-b:b);f+=Bg(Bc(f)&1,i*(5+e),d)}return new pg(f,c)} +function jc(a,b){var c=new Array(b);if(a==3){for(var d=0;d0){var e=[null,0,false][a];for(var d=0;dc;--e){a[e]|=~~b[e-c-1]>>>f;a[e-1]=b[e-c-1]<>5;a.e-=d;if(!Am(a.b,a.e,a.b,d,b&31)&&e<0){for(c=0;c>19;d=~~b.h>>19;return c==0?d!=0||a.h>b.h||a.h==b.h&&a.m>b.m||a.h==b.h&&a.m==b.m&&a.l>b.l:!(d==0||a.h>19;d=~~b.h>>19;return c==0?d!=0||a.h>b.h||a.h==b.h&&a.m>b.m||a.h==b.h&&a.m==b.m&&a.l>=b.l:!(d==0||a.h0?b.f>0?a.e>b.e?In(a,b):In(b,a):Gn(a,b):b.f>0?Gn(b,a):Zh(b)>Zh(a)?Hn(b,a):Hn(a,b)} +function sg(a){var b,c;if(a>-140737488355328&&a<140737488355328){if(a==0){return 0}b=a<0;b&&(a=-a);c=Bc(el(Math.log(a)/0.6931471805599453));(!b||a!=Math.pow(2,c))&&++c;return c}return tg(te(a))} +function Yh(a,b){var c,d;c=a._();d=b._();if(c.r()==0){return d}else if(d.r()==0){return c}if((c.e==1||c.e==2&&c.b[1]>0)&&(d.e==1||d.e==2&&d.b[1]>0)){return Ki(Rm(ai(c),ai(d)))}return Qm(Rh(c),Rh(d))} +function ci(a,b){var c;if(b.f<=0){throw new nk(us)}if(!(a.gb(0)||b.gb(0))){throw new nk(vs)}if(b.e==1&&b.b[0]==1){return Nh}c=Wm(bi(a._(),b),b);if(c.f==0){throw new nk(vs)}c=a.f<0?rn(b,c):c;return c} +function Am(a,b,c,d,e){var f,g,i;f=true;for(g=0;g>>e|c[g+d+1]<>>e;++g}return f} +function Ql(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c=0;--d){if(a[d]!=e[d]){c=a[d]!=0&&ve(qe(ue(a[d]),yr),qe(ue(e[d]),yr));break}}}g=new si(1,f+1,a);c&&pn(g,b);Sh(g);return g} +function Kf(a,b){var c;c=a.f+b.f;if(a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return Ig(c)}if(a.b+b.b<54){return new pg(a.g*b.g,Dg(c))}return new dg(ei((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),Dg(c))} +function sp(k,a,b,c){var d=k.b[c];if(d){for(var e=0,f=d.length;e=0;--f){i=Rh(g);Tm(i,c);g=ei(g,i);if((e.b[~~f>>5]&1<<(f&31))!=0){g=ei(g,d);Tm(g,c)}}Tm(g,c);return g} +function ar(a,b){var c,d,e,f,g,i,j;j=zl(a,Ks,0);i=$wnd;for(g=0;g>22-b;e=a.h<>22-b}else if(b<44){c=0;d=a.l<>44-b}else{c=0;d=0;e=a.l<>>b;e=~~a.m>>b|c<<22-b;d=~~a.l>>b|a.m<<22-b}else if(b<44){f=0;e=~~c>>>b-22;d=~~a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=~~c>>>b-44}return de(d&4194303,e&4194303,f&1048575)} +function Uo(a){Qo();switch(a){case 2:return Ao;case 1:return Bo;case 3:return Co;case 5:return Do;case 6:return Eo;case 4:return Fo;case 7:return Go;case 0:return Ho;default:throw new Sk('Invalid rounding mode');}} +function mi(a,b){var c,d,e;if(b==0){return (a.b[0]&1)!=0}if(b<0){throw new nk(ts)}e=~~b>>5;if(e>=a.e){return a.f<0}c=a.b[e];b=1<<(b&31);if(a.f<0){d=Zh(a);if(e0){return a.e}b=1;c=1;if(a.b<54){a.b>=1&&(c=a.g);b+=Math.log(c<=0?0-c:c)*Math.LOG10E}else{b+=(a.b-1)*0.3010299956639812;Th((!a.d&&(a.d=Li(a.g)),a.d),po(b)).r()!=0&&++b}a.e=Bc(b);return a.e} +function zh(a){rf();var b,c;c=Lj(a);if(c==ks)b=Fg(a[0]);else if(c==ks)b=Gg(ue(a[0]));else if(c==ns)b=Hg(ue(a[0]),a[1]);else throw new V('Unknown call signature for bd = java.math.BigDecimal.valueOf: '+c);return new Kg(b)} +function Qi(a){Oh();var b,c;c=Lj(a);if(c==ms)b=new oi(a[0].toString());else if(c=='string number')b=new pi(a[0].toString(),a[1]);else throw new V('Unknown call signature for obj = new java.math.BigInteger: '+c);return new Pi(b)} +function Un(){Un=rr;On=new Xn(34,(Qo(),Eo));Pn=new Xn(7,Eo);Qn=new Xn(16,Eo);Rn=new Xn(0,Fo);Sn=mc(Md,{6:1},-1,[112,114,101,99,105,115,105,111,110,61]);Tn=mc(Md,{6:1},-1,[114,111,117,110,100,105,110,103,77,111,100,101,61])} +function Jn(a,b){if(b.f==0){return a}if(a.f==0){return b}if(Vh(b,(Oh(),Ih))){return new Pi(En(a))}if(Vh(a,Ih)){return new Pi(En(b))}return a.f>0?b.f>0?a.e>b.e?Mn(a,b):Mn(b,a):Kn(a,b):b.f>0?Kn(b,a):Zh(b)>Zh(a)?Ln(b,a):Ln(a,b)} +function Cn(a,b){var c,d,e,f,g,i;d=Zh(b);e=Zh(a);if(d>=a.e){return a}g=hl(a.e,b.e);f=lc(Od,{6:1},-1,g,1);c=e;for(;cc?1:-1:jn(a.b,b.b,g))==-1){return a}e=lc(Od,{6:1},-1,c,1);if(c==1){e[0]=cn(a.b,g,b.b[0])}else{d=g-c+1;e=Km(null,d,a.b,g,b.b,c)}f=new si(a.f,c,e);Sh(f);return f} +function $k(a){var b,c,d;if(a<0){return 0}else if(a==0){return 32}else{d=-(~~a>>16);b=~~d>>16&16;c=16-b;a=~~a>>b;d=a-256;b=~~d>>16&8;c+=b;a<<=b;d=a-4096;b=~~d>>16&4;c+=b;a<<=b;d=a-16384;b=~~d>>16&2;c+=b;a<<=b;d=~~a>>14;b=d&~(~~d>>1);return c+2-b}} +function kn(a,b){var c;if(a.f==0){nm(b.b,0,a.b,0,b.e)}else if(b.f==0){return}else if(a.f==b.f){hn(a.b,a.b,a.e,b.b,b.e)}else{c=un(a.b,b.b,a.e,b.e);if(c>0){tn(a.b,a.b,a.e,b.b,b.e)}else{qn(a.b,a.b,a.e,b.b,b.e);a.f=-a.f}}a.e=gl(a.e,b.e)+1;Sh(a);a.c=-2} +function ln(a,b){var c,d;c=Qh(a,b);if(a.f==0){nm(b.b,0,a.b,0,b.e);a.f=-b.f}else if(a.f!=b.f){hn(a.b,a.b,a.e,b.b,b.e);a.f=c}else{d=un(a.b,b.b,a.e,b.e);if(d>0){tn(a.b,a.b,a.e,b.b,b.e)}else{qn(a.b,a.b,a.e,b.b,b.e);a.f=-a.f}}a.e=gl(a.e,b.e)+1;Sh(a);a.c=-2} +function di(a,b,c){var d,e;if(c.f<=0){throw new nk(us)}d=a;if((c.e==1&&c.b[0]==1)|b.f>0&d.f==0){return Nh}if(d.f==0&&b.f==0){return Jh}if(b.f<0){d=ci(a,c);b=b.cb()}e=c.gb(0)?_m(d._(),b,c):Om(d._(),b,c);d.f<0&&b.gb(0)&&(e=bi(ei(rn(c,Jh),e),c));return e} +function $m(a,b,c,d,e){var f,g,i;f=ur;g=ur;for(i=0;ia.e){i=a;a=b;b=i}if(b.e<63){return no(a,b)}g=(a.e&-2)<<4;k=a.fb(g);n=b.fb(g);d=rn(a,k.eb(g));e=rn(b,n.eb(g));j=ho(k,n);c=ho(d,e);f=ho(rn(k,d),rn(e,n));f=fn(fn(f,j),c);f=f.eb(g);j=j.eb(g<<1);return fn(fn(j,f),c)} +function le(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return _k(c)}if(b==0&&d!=0&&c==0){return _k(d)+22}if(b!=0&&d==0&&c==0){return _k(b)+44}return -1} +function wn(a,b){var c,d,e,f,g,i,j;e=Zh(a);d=Zh(b);if(d>=a.e){return Oh(),Nh}i=a.e;g=lc(Od,{6:1},-1,i,1);c=e>d?e:d;if(c==d){g[c]=-b.b[c]&a.b[c];++c}f=hl(b.e,a.e);for(;c=b.e){for(;c0?b:0)}if(b>=0){if(a.b<54){return new pg(a.g,Dg(b))}return new dg((!a.d&&(a.d=Li(a.g)),a.d),Dg(b))}if(-b>b;f=~~a.m>>b|c<<22-b;e=~~a.l>>b|a.m<<22-b}else if(b<44){g=d?1048575:0;f=~~c>>b-22;e=~~a.m>>b-22|c<<44-b}else{g=d?1048575:0;f=d?4194303:0;e=~~c>>b-44}return de(e&4194303,f&4194303,g&1048575)} +function Oh(){Oh=rr;var a;Jh=new qi(1,1);Lh=new qi(1,10);Nh=new qi(0,0);Ih=new qi(-1,1);Kh=mc(Xd,{6:1},17,[Nh,Jh,new qi(1,2),new qi(1,3),new qi(1,4),new qi(1,5),new qi(1,6),new qi(1,7),new qi(1,8),new qi(1,9),Lh]);Mh=lc(Xd,{6:1},17,32,0);for(a=0;a=b.e){return b}else if(d>=a.e){return a}g=hl(a.e,b.e);f=lc(Od,{6:1},-1,g,1);if(d==e){f[e]=-(-a.b[e]|-b.b[e]);c=e}else{for(c=d;c>5;b&=31;if(d>=a.e){return a.f<0?(Oh(),Ih):(Oh(),Nh)}f=a.e-d;e=lc(Od,{6:1},-1,f+1,1);Am(e,f,a.b,d,b);if(a.f<0){for(c=0;c0&&a.b[c]<<32-b!=0){for(c=0;c=0}for(d=1;d>1)?d:1+(~~(b-1)>>1);return wo(a,b)} +function Qm(a,b){var c,d,e,f;c=a.bb();d=b.bb();e=c0){b=Ki(Rm(ai(a),ai(b)));break}if(b.e>a.e*1.2){b=hi(b,a);b.r()!=0&&vm(b,b.bb())}else{do{pn(b,a);vm(b,b.bb())}while(Qh(b,a)>=0)}f=b;b=a;a=f}while(f.f!=0);return b.eb(e)} +function Sf(a,b,c){var d;if(!c){throw new jl}d=b-a.f;if(d==0){return a}if(d>0){if(d36){return Lr+Ke(a)}c=lc(Md,{6:1},-1,65,1);d=(nl(),ml);e=64;f=ue(b);if(we(a,ur)){while(we(a,f)){c[e--]=d[Je(ze(a,f))];a=ee(a,f,false)}c[e]=d[Je(a)]}else{while(ye(a,Be(f))){c[e--]=d[Je(Be(ze(a,f)))];a=ee(a,f,false)}c[e--]=d[Je(Be(a))];c[e]=45}return Gl(c,e,65)} +function Of(a,b,c){var d,e,f,g,i,j;f=b<0?-b:b;g=c.b;e=Bc(fl(f))+1;i=c;if(b==0||a.b==0&&a.g!=-1&&b>0){return Nf(a,b)}if(f>999999999||g==0&&b<0||g>0&&e>g){throw new nk(bs)}g>0&&(i=new Xn(g+e+1,c.c));d=Qf(a,i);j=~~Zk(f)>>1;while(j>0){d=Lf(d,d,i);(f&j)==j&&(d=Lf(d,a,i));j>>=1}b<0&&(d=zf(lf,d,i));If(d,c);return d} +function tf(a,b){var c;c=a.f-b.f;if(a.b==0&&a.g!=-1){if(c<=0){return b}if(b.b==0&&b.g!=-1){return a}}else if(b.b==0&&b.g!=-1){if(c>=0){return a}}if(c==0){if(gl(a.b,b.b)+1<54){return new pg(a.g+b.g,a.f)}return new og(fn((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),a.f)}else return c>0?rg(a,b,c):rg(b,a,-c)} +function Nm(a,b){var c,d,e,f,g;d=qe(ue(b),yr);if(we(a,ur)){f=ee(a,d,false);g=ze(a,d)}else{c=Ge(a,1);e=ue(~~b>>>1);f=ee(c,e,false);g=ze(c,e);g=pe(Ee(g,1),qe(a,sr));if((b&1)!=0){if(!ve(f,g)){g=He(g,f)}else{if(ye(He(f,g),d)){g=pe(g,He(d,f));f=He(f,sr)}else{g=pe(g,He(Ee(d,1),f));f=He(f,vr)}}}}return De(Ee(g,32),qe(f,yr))} +function Ei(a,b,c){var d,e,f,g,i,j,k,n,o,q,r,s,t,u;r=b.length;k=r;if(b.charCodeAt(0)==45){o=-1;q=1;--r}else{o=1;q=0}g=(Em(),Dm)[c];f=~~(r/g);u=r%g;u!=0&&++f;j=lc(Od,{6:1},-1,f,1);d=Cm[c-2];i=0;s=q+(u==0?g:u);for(t=q;t=9223372036854775807){return Qe(),Me}e=false;if(a<0){e=true;a=-a}d=0;if(a>=17592186044416){d=Bc(a/17592186044416);a-=d*17592186044416}c=0;if(a>=4194304){c=Bc(a/4194304);a-=c*4194304}b=Bc(a);f=de(b,c,d);e&&je(f);return f} +function Ke(a){var b,c,d,e,f;if(a.l==0&&a.m==0&&a.h==0){return Tr}if(a.h==524288&&a.m==0&&a.l==0){return '-9223372036854775808'}if(~~a.h>>19!=0){return Ur+Ke(Be(a))}c=a;d=Lr;while(!(c.l==0&&c.m==0&&c.h==0)){e=ue(1000000000);c=ee(c,e,true);b=Lr+Je(ae);if(!(c.l==0&&c.m==0&&c.h==0)){f=9-b.length;for(;f>0;--f){b=Tr+b}}d=b+d}return d} +function Uh(a,b){var c,d,e,f,g,i,j,k,n,o,q,r,s;f=b.f;if(f==0){throw new nk(ss)}e=b.e;d=b.b;if(e==1){return Lm(a,d[0],f)}q=a.b;r=a.e;c=r!=e?r>e?1:-1:jn(q,d,r);if(c<0){return mc(Xd,{6:1},17,[Nh,a])}s=a.f;i=r-e+1;j=s==f?1:-1;g=lc(Od,{6:1},-1,i,1);k=Km(g,i,q,r,d,e);n=new si(j,i,g);o=new si(s,e,k);Sh(n);Sh(o);return mc(Xd,{6:1},17,[n,o])} +function Zf(a){var b;if(a.f==0||a.b==0&&a.g!=-1){return !a.d&&(a.d=Li(a.g)),a.d}else if(a.f<0){return ei((!a.d&&(a.d=Li(a.g)),a.d),po(-a.f))}else{if(a.f>(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)||a.f>(!a.d&&(a.d=Li(a.g)),a.d).bb()){throw new nk(cs)}b=Uh((!a.d&&(a.d=Li(a.g)),a.d),po(a.f));if(b[1].r()!=0){throw new nk(cs)}return b[0]}} +function qn(a,b,c,d,e){var f,g;f=ur;if(c36){throw new pl('radix '+b+' out of range')}d=a.length;e=d>0&&a.charCodeAt(0)==45?1:0;for(c=e;c2147483647){throw new pl(Zr+a+$r)}return f} +function En(a){var b,c;if(a.f==0){return Oh(),Ih}if(Vh(a,(Oh(),Ih))){return Nh}c=lc(Od,{6:1},-1,a.e+1,1);if(a.f>0){if(a.b[a.e-1]!=-1){for(b=0;a.b[b]==-1;++b){}}else{for(b=0;b0?b==0?0:b<0?-1:1:0;break;case 3:d=(b==0?0:b<0?-1:1)<0?b==0?0:b<0?-1:1:0;break;case 4:(b<0?-b:b)>=5&&(d=b==0?0:b<0?-1:1);break;case 5:(b<0?-b:b)>5&&(d=b==0?0:b<0?-1:1);break;case 6:(b<0?-b:b)+a>5&&(d=b==0?0:b<0?-1:1);}return d} +function Vf(a,b,c){var d,e,f,g,i,j;i=te(hf[c]);g=He(te(a.f),ue(c));j=te(a.g);f=ee(j,i,false);e=ze(j,i);if(Ce(e,ur)){d=se(He(Ee(xe(e,ur)?Be(e):e,1),i),ur)?0:xe(He(Ee(xe(e,ur)?Be(e):e,1),i),ur)?-1:1;f=pe(f,ue(Bg(Je(f)&1,(se(e,ur)?0:xe(e,ur)?-1:1)*(5+d),b.c)));if(fl(Ie(xe(f,ur)?Be(f):f))>=b.b){f=re(f,tr);g=He(g,sr)}}a.f=Dg(Ie(g));a.e=b.b;a.g=Ie(f);a.b=tg(f);a.d=null} +function tm(a,b){var c,d,e,f,g,i,j,k,n;k=a.f==0?1:a.f;g=~~b>>5;c=b&31;j=gl(g+1,a.e)+1;i=lc(Od,{6:1},-1,j,1);d=1<=a.e){i[g]=d}else{e=Zh(a);if(g>e){i[g]^=d}else if(g=0||k.f==0||k.e==1&&k.b[0]==1)}n=di(k,i,a);if(n.e==1&&n.b[0]==1||n.eQ(g)){continue}for(e=1;e=0;--i){n=De(Ee(k,32),qe(ue(b[i]),yr));if(we(n,ur)){j=ee(n,f,false);k=ze(n,f)}else{e=Ge(n,1);g=ue(~~d>>>1);j=ee(e,g,false);k=ze(e,g);k=pe(Ee(k,1),qe(n,sr));if((d&1)!=0){if(!ve(j,k)){k=He(k,j)}else{if(ye(He(j,k),f)){k=pe(k,He(f,j));j=He(j,sr)}else{k=pe(k,He(Ee(f,1),j));j=He(j,vr)}}}}a[i]=Je(qe(j,yr))}return Je(k)} +function he(a,b,c,d,e,f){var g,i,j,k,n,o,q;k=ke(b)-ke(a);g=Ee(b,k);j=de(0,0,0);while(k>=0){i=ne(a,g);if(i){k<22?(j.l|=1<>>1;g.m=~~o>>>1|(q&1)<<21;g.l=~~n>>>1|(o&1)<<21;--k}c&&je(j);if(f){if(d){ae=Be(a);e&&(ae=He(ae,(Qe(),Oe)))}else{ae=de(a.l,a.m,a.h)}}return j} +function dn(a,b,c,d,e){var f,g,i,j,k,n,o;k=lc(Xd,{6:1},17,8,0);n=a;nc(k,0,b);o=Ym(b,b,d,e);for(g=1;g<=7;++g){nc(k,g,Ym(k[g-1],o,d,e))}for(g=c.ab()-1;g>=0;--g){if((c.b[~~g>>5]&1<<(g&31))!=0){j=1;f=g;for(i=g-3>0?g-3:0;i<=g-1;++i){if((c.b[~~i>>5]&1<<(i&31))!=0){if(i>1],n,d,e);g=f}else{n=Ym(n,n,d,e)}}return n} +function Ln(a,b){var c,d,e,f,g,i,j;i=gl(a.e,b.e);g=lc(Od,{6:1},-1,i,1);e=Zh(a);d=Zh(b);c=d;if(e==d){g[d]=-a.b[d]^-b.b[d]}else{g[d]=-b.b[d];f=hl(b.e,e);for(++c;cb.g?1:0}d=a.f-b.f;c=(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)-(b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1);if(c>d+1){return e}else if(c0&&(g=ei(g,po(d)));return Qh(f,g)}}else return e0?a.e:el((a.b-1)*0.3010299956639812)+1)-f<0||f==0){return}d=a.q()-f;if(d<=0){return}if(a.b<54){Vf(a,b,d);return}i=po(d);e=Uh((!a.d&&(a.d=Li(a.g)),a.d),i);g=a.f-d;if(e[1].r()!=0){c=Qh(ki(e[1]._()),i);c=Bg(e[0].gb(0)?1:0,e[1].r()*(5+c),b.c);c!=0&&nc(e,0,fn(e[0],Ki(ue(c))));j=new cg(e[0]);if(j.q()>f){nc(e,0,Th(e[0],(Oh(),Lh)));--g}}a.f=Dg(g);a.e=f;Tf(a,e[0])} +function Yf(a,b,c){var d,e,f,g;d=b.f-a.f;if(b.b==0&&b.g!=-1||a.b==0&&a.g!=-1||c.b==0){return Qf(Xf(a,b),c)}if((b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1)0?a.e:el((a.b-1)*0.3010299956639812)+1)){g=Uf(a);if(g!=b.r()){f=fn(lo((!a.d&&(a.d=Li(a.g)),a.d),10),Ki(ue(g)))}else{f=rn((!a.d&&(a.d=Li(a.g)),a.d),Ki(ue(g)));f=fn(lo(f,10),Ki(ue(g*9)))}e=new og(f,a.f+1);return Qf(e,c)}}return Qf(Xf(a,b),c)} +function rn(a,b){var c,d,e,f,g,i,j,k,n,o;g=a.f;j=b.f;if(j==0){return a}if(g==0){return b.cb()}f=a.e;i=b.e;if(f+i==2){c=qe(ue(a.b[0]),yr);d=qe(ue(b.b[0]),yr);g<0&&(c=Be(c));j<0&&(d=Be(d));return Ki(He(c,d))}e=f!=i?f>i?1:-1:jn(a.b,b.b,f);if(e==-1){o=-j;n=g==j?sn(b.b,i,a.b,f):gn(b.b,i,a.b,f)}else{o=g;if(g==j){if(e==0){return Oh(),Nh}n=sn(a.b,f,b.b,i)}else{n=gn(a.b,f,b.b,i)}}k=new si(o,n.length,n);Sh(k);return k} +function zn(a,b){var c,d,e,f,g,i,j;e=Zh(a);d=Zh(b);if(e>=b.e){return Oh(),Nh}i=b.e;g=lc(Od,{6:1},-1,i,1);c=e;if(e0?a:a.cb()}n=a.f;k=a.e;d=b.e;if(k+d==2){o=re(qe(ue(a.b[0]),yr),qe(ue(b.b[0]),yr));n!=e&&(o=Be(o));return Ki(o)}c=k!=d?k>d?1:-1:jn(a.b,b.b,k);if(c==0){return n==e?Jh:Ih}if(c==-1){return Nh}g=k-d+1;f=lc(Od,{6:1},-1,g,1);i=n==e?1:-1;d==1?Mm(f,a.b,k,b.b[0]):Km(f,g,a.b,k,b.b,d);j=new si(i,g,f);Sh(j);return j} +function hn(a,b,c,d,e){var f,g;f=pe(qe(ue(b[0]),yr),qe(ue(d[0]),yr));a[0]=Je(f);f=Fe(f,32);if(c>=e){for(g=1;g0){if(e0?(g=mo(g,Bc(e))):e<0&&(f=mo(f,Bc(-e)));return ug(f,g,c,d)} +function Gn(a,b){var c,d,e,f,g,i,j;d=Zh(b);e=Zh(a);if(e>=b.e){return b}i=b.e;g=lc(Od,{6:1},-1,i,1);if(d0){c-=d.length-b;if(c>=0){e.b.b+=es;for(;c>ef.length;c-=ef.length){$l(e,ef)}_l(e,ef,Bc(c));dm(e,Al(d,b))}else{c=b-c;dm(e,Bl(d,b,Bc(c)));e.b.b+=ds;dm(e,Al(d,Bc(c)))}}else{dm(e,Al(d,b));for(;c<-ef.length;c+=ef.length){$l(e,ef)}_l(e,ef,Bc(-c))}return e.b.b} +function ug(a,b,c,d){var e,f,g,i,j,k,n;g=Uh(a,b);i=g[0];k=g[1];if(k.r()==0){return new dg(i,c)}n=a.r()*b.r();if(b.ab()<54){j=ai(k);f=ai(b);e=se(He(Ee(xe(j,ur)?Be(j):j,1),xe(f,ur)?Be(f):f),ur)?0:xe(He(Ee(xe(j,ur)?Be(j):j,1),xe(f,ur)?Be(f):f),ur)?-1:1;e=Bg(i.gb(0)?1:0,n*(5+e),d)}else{e=Qh(ki(k._()),b._());e=Bg(i.gb(0)?1:0,n*(5+e),d)}if(e!=0){if(i.ab()<54){return Hg(pe(ai(i),ue(e)),c)}i=fn(i,Ki(ue(e)));return new dg(i,c)}return new dg(i,c)} +function ag(a){var b,c,d,e,f;if(a.i!=null){return a.i}if(a.b<32){a.i=Im(te(a.g),Bc(a.f));return a.i}e=Hm((!a.d&&(a.d=Li(a.g)),a.d),0);if(a.f==0){return e}b=(!a.d&&(a.d=Li(a.g)),a.d).r()<0?2:1;c=e.length;d=-a.f+c-b;f=new fm;cc(f.b,e);if(a.f>0&&d>=-6){if(d>=0){em(f,c-Bc(a.f),ds)}else{ec(f.b,b-1,b-1,es);em(f,b+1,Ll(ef,0,-Bc(d)-1))}}else{if(c-b>=1){ec(f.b,b,b,ds);++c}ec(f.b,c,c,fs);d>0&&em(f,++c,gs);em(f,++c,Lr+Ke(te(d)))}a.i=f.b.b;return a.i} +function xn(a,b){var c,d,e,f,g,i,j;e=Zh(a);f=Zh(b);if(e>=b.e){return a}d=f>e?f:e;f>e?(c=-b.b[d]&~a.b[d]):f0){d[e]=f;break}else{d[e]=f.substring(0,i.index);f=f.substring(i.index+i[0].length,f.length);c.lastIndex=0;if(g==f){d[e]=f.substring(0,1);f=f.substring(1)}g=f;e++}}if(b==0&&o.length>0){var j=d.length;while(j>0&&d[j-1]==Lr){--j}j1000000){throw new nk('power of ten too big')}if(a<=2147483647){return bo[1].db(b).eb(b)}d=bo[1].db(2147483647);e=d;c=te(a-2147483647);b=Bc(a%2147483647);while(ve(c,Ir)){e=ei(e,d);c=He(c,Ir)}e=ei(e,bo[1].db(b));e=e.eb(2147483647);c=te(a-2147483647);while(ve(c,Ir)){e=e.eb(2147483647);c=He(c,Ir)}e=e.eb(b);return e} +function $d(){var a;!!$stats&&Ue('com.iriscouch.gwtapp.client.BigDecimalApp');ik(new kk);Wj(new Yj);Gj(new Ij);Ch(new Eh);!!$stats&&Ue('com.google.gwt.user.client.UserAgentAsserter');a=We();wl(Sr,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (safari) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&Ue('com.google.gwt.user.client.DocumentModeAsserter');Ve()} +function Vo(a){Qo();var b,c,d,e,f;if(a==null){throw new jl}d=Cl(a);c=d.length;if(cOo.length){throw new Rk}f=null;e=null;if(d[0]==67){e=Ao;f=Io}else if(d[0]==68){e=Bo;f=Jo}else if(d[0]==70){e=Co;f=Ko}else if(d[0]==72){if(c>6){if(d[5]==68){e=Do;f=Lo}else if(d[5]==69){e=Eo;f=Mo}else if(d[5]==85){e=Fo;f=No}}}else if(d[0]==85){if(d[1]==80){e=Ho;f=Po}else if(d[1]==78){e=Go;f=Oo}}if(!!e&&c==f.length){for(b=1;b>5;this.b=lc(Od,{6:1},-1,this.e,1);for(c=0;c=2147483648&&(e-=4294967296),e))}this.b[this.e-1]>>>=-a&31;Sh(this)}} +function fn(a,b){var c,d,e,f,g,i,j,k,n,o,q,r;g=a.f;j=b.f;if(g==0){return b}if(j==0){return a}f=a.e;i=b.e;if(f+i==2){c=qe(ue(a.b[0]),yr);d=qe(ue(b.b[0]),yr);if(g==j){k=pe(c,d);r=Je(k);q=Je(Ge(k,32));return q==0?new qi(g,r):new si(g,2,mc(Od,{6:1},-1,[r,q]))}return Ki(g<0?He(d,c):He(c,d))}else if(g==j){o=g;n=f>=i?gn(a.b,f,b.b,i):gn(b.b,i,a.b,f)}else{e=f!=i?f>i?1:-1:jn(a.b,b.b,f);if(e==0){return Oh(),Nh}if(e==1){o=g;n=sn(a.b,f,b.b,i)}else{o=j;n=sn(b.b,i,a.b,f)}}k=new si(o,n.length,n);Sh(k);return k} +function Yn(a){Un();var b,c,d,e;if(a==null){throw new kl('null string')}b=Cl(a);if(b.length<27||b.length>45){throw new Sk(Hs)}for(d=0;d0?a.e:el((a.b-1)*0.3010299956639812)+1)0?b.e:el((b.b-1)*0.3010299956639812)+1)<-d-1){e=a;g=b}else{return Qf(tf(a,b),c)}if(c.b>=(e.e>0?e.e:el((e.b-1)*0.3010299956639812)+1)){return Qf(tf(a,b),c)}f=e.r();if(f==g.r()){i=fn(lo((!e.d&&(e.d=Li(e.g)),e.d),10),Ki(ue(f)))}else{i=rn((!e.d&&(e.d=Li(e.g)),e.d),Ki(ue(f)));i=fn(lo(i,10),Ki(ue(f*9)))}e=new og(i,e.f+1);return Qf(e,c)} +function $f(a){var b,c,d,e,f,g,i,j;g=Hm((!a.d&&(a.d=Li(a.g)),a.d),0);if(a.f==0){return g}b=(!a.d&&(a.d=Li(a.g)),a.d).r()<0?2:1;d=g.length;e=-a.f+d-b;j=new hm(g);if(a.f>0&&e>=-6){if(e>=0){em(j,d-Bc(a.f),ds)}else{ec(j.b,b-1,b-1,es);em(j,b+1,Ll(ef,0,-Bc(e)-1))}}else{c=d-b;i=Bc(e%3);if(i!=0){if((!a.d&&(a.d=Li(a.g)),a.d).r()==0){i=i<0?-i:3-i;e+=i}else{i=i<0?i+3:i;e-=i;b+=i}if(c<3){for(f=i-c;f>0;--f){em(j,d++,Tr)}}}if(d-b>=1){ec(j.b,b,b,ds);++d}if(e!=0){ec(j.b,d,d,fs);e>0&&em(j,++d,gs);em(j,++d,Lr+Ke(te(e)))}}return j.b.b} +function nm(a,b,c,d,e){var f,g,i,j,k,n,o,q,r;if(a==null||c==null){throw new jl}q=a.gC();j=c.gC();if((q.c&4)==0||(j.c&4)==0){throw new rk('Must be array types')}o=q.b;g=j.b;if(!((o.c&1)!=0?o==g:(g.c&1)==0)){throw new rk('Array types must match')}r=a.length;k=c.length;if(b<0||d<0||e<0||b+e>r||d+e>k){throw new Vk}if(((o.c&1)==0||(o.c&4)!=0)&&q!=j){n=vc(a,11);f=vc(c,11);if(Ac(a)===Ac(c)&&bd;){nc(f,i,n[--b])}}else{for(i=d+e;d=0&&a.b[0]=to[c];++c){}return so[c]}i=new si(1,a.e,lc(Od,{6:1},-1,a.e+1,1));nm(a.b,0,i.b,0,a.e);mi(a,0)?nn(i,2):(i.b[0]|=1);e=i.ab();for(b=2;eg?f:g));e=f-g;k=e>0?(go(),e>19!=0){b=Be(b);j=true}g=le(b);f=false;e=false;d=false;if(a.h==524288&&a.m==0&&a.l==0){e=true;f=true;if(g==-1){a=ce((Qe(),Me));d=true;j=!j}else{i=Fe(a,g);j&&je(i);c&&(ae=de(0,0,0));return i}}else if(~~a.h>>19!=0){f=true;a=Be(a);d=true;j=!j}if(g!=-1){return ge(a,g,j,f,c)}if(!we(a,b)){c&&(f?(ae=Be(a)):(ae=de(a.l,a.m,a.h)));return de(0,0,0)}return he(d?a:de(a.l,a.m,a.h),b,j,f,e,c)} +function An(a,b){var c,d,e,f,g,i,j,k;e=Zh(a);f=Zh(b);if(e>=b.e){return a}j=gl(a.e,b.e);d=e;if(f>e){i=lc(Od,{6:1},-1,j,1);g=hl(a.e,f);for(;d>13|(a.m&15)<<9;e=~~a.m>>4&8191;f=~~a.m>>17|(a.h&255)<<5;g=~~(a.h&1048320)>>8;i=b.l&8191;j=~~b.l>>13|(b.m&15)<<9;k=~~b.m>>4&8191;n=~~b.m>>17|(b.h&255)<<5;o=~~(b.h&1048320)>>8;C=c*i;D=d*i;E=e*i;F=f*i;G=g*i;if(j!=0){D+=c*j;E+=d*j;F+=e*j;G+=f*j}if(k!=0){E+=c*k;F+=d*k;G+=e*k}if(n!=0){F+=c*n;G+=d*n}o!=0&&(G+=c*o);r=C&4194303;s=(D&511)<<13;q=r+s;u=~~C>>22;v=~~D>>9;w=(E&262143)<<4;x=(F&31)<<17;t=u+v+w+x;z=~~E>>18;A=~~F>>5;B=(G&4095)<<8;y=z+A+B;t+=~~q>>22;q&=4194303;y+=~~t>>22;t&=4194303;y&=1048575;return de(q,t,y)} +function zf(a,b,c){var d,e,f,g,i,j,k,n;n=Ie(pe(ue(c.b),vr))+(b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1)-(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1);e=a.f-b.f;j=e;f=1;i=nf.length-1;k=mc(Xd,{6:1},17,[(!a.d&&(a.d=Li(a.g)),a.d)]);if(c.b==0||a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return wf(a,b)}if(n>0){nc(k,0,ei((!a.d&&(a.d=Li(a.g)),a.d),po(n)));j+=n}k=Uh(k[0],(!b.d&&(b.d=Li(b.g)),b.d));g=k[0];if(k[1].r()!=0){d=Qh(ki(k[1]),(!b.d&&(b.d=Li(b.g)),b.d));g=fn(ei(g,(Oh(),Lh)),Ki(ue(k[0].r()*(5+d))));++j}else{while(!g.gb(0)){k=Uh(g,nf[f]);if(k[1].r()==0&&j-f>=e){j-=f;fe){vm(o,d);vm(q,e);um(j,e);c+=d-e}else{vm(o,d);vm(q,e);um(k,d);c+=e-d}j.f=1;while(q.r()>0){while(Qh(o,q)>0){pn(o,q);n=o.bb();vm(o,n);mn(j,k);um(k,n);c+=n}while(Qh(o,q)<=0){pn(q,o);if(q.r()==0){break}n=q.bb();vm(q,n);mn(k,j);um(j,n);c+=n}}if(!(o.e==1&&o.b[0]==1)){throw new nk(vs)}Qh(j,b)>=0&&pn(j,b);j=rn(b,j);i=Jm(b);if(c>f){j=Ym(j,(Oh(),Jh),b,i);c=c-f}j=Ym(j,Ai(f-c),b,i);return j} +function Xf(a,b){var c;c=a.f-b.f;if(a.b==0&&a.g!=-1){if(c<=0){return Mf(b)}if(b.b==0&&b.g!=-1){return a}}else if(b.b==0&&b.g!=-1){if(c>=0){return a}}if(c==0){if(gl(a.b,b.b)+1<54){return new pg(a.g-b.g,a.f)}return new og(rn((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),a.f)}else if(c>0){if(c0?b.e:el((b.b-1)*0.3010299956639812)+1)+f>(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)+1||a.b==0&&a.g!=-1){d=(Oh(),Nh)}else if(f==0){d=Th((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d))}else if(f>0){g=po(f);d=Th((!a.d&&(a.d=Li(a.g)),a.d),ei((!b.d&&(b.d=Li(b.g)),b.d),g));d=ei(d,g)}else{g=po(-f);d=Th(ei((!a.d&&(a.d=Li(a.g)),a.d),g),(!b.d&&(b.d=Li(b.g)),b.d));while(!d.gb(0)){i=Uh(d,nf[c]);if(i[1].r()==0&&j-c>=f){j-=c;c36){return Hm(a,0)}d=Math.log(b)/Math.log(2);s=Bc(sm(new Pi(a.f<0?new si(1,a.e,a.b):a))/d+(u<0?1:0))+1;t=lc(Md,{6:1},-1,s,1);f=s;if(b!=16){v=lc(Od,{6:1},-1,o,1);nm(i,0,v,0,o);w=o;e=Dm[b];c=Cm[b-2];while(true){r=Mm(v,v,w,c);q=f;do{t[--f]=uk(r%b,b)}while((r=~~(r/b))!=0&&f!=0);g=e-q+f;for(k=0;k0;++k){t[--f]=48}for(k=w-1;k>0&&v[k]==0;--k){}w=k+1;if(w==1&&v[0]==0){break}}}else{for(k=0;k0;++n){r=~~i[k]>>(n<<2)&15;t[--f]=uk(r,16)}}}while(t[f]==48){++f}u==-1&&(t[--f]=45);return Ll(t,f,s-f)} +function Km(a,b,c,d,e,f){var g,i,j,k,n,o,q,r,s,t,u,v,w,x,y,z,A;u=lc(Od,{6:1},-1,d+1,1);v=lc(Od,{6:1},-1,f+1,1);j=$k(e[f-1]);if(j!=0){xm(v,e,0,j);xm(u,c,0,j)}else{nm(c,0,u,0,d);nm(e,0,v,0,f)}k=v[f-1];o=b-1;q=d;while(o>=0){if(u[q]==k){n=-1}else{w=pe(Ee(qe(ue(u[q]),yr),32),qe(ue(u[q-1]),yr));z=Nm(w,k);n=Je(z);y=Je(Fe(z,32));if(n!=0){x=false;++n;do{--n;if(x){break}s=Ae(qe(ue(n),yr),qe(ue(v[f-2]),yr));A=pe(Ee(ue(y),32),qe(ue(u[q-2]),yr));t=pe(qe(ue(y),yr),qe(ue(k),yr));$k(Je(Ge(t,32)))<32?(x=true):(y=Je(t))}while(ve(Le(s,Gr),Le(A,Gr)))}}if(n!=0){g=$m(u,q-f,v,f,n);if(g!=0){--n;i=ur;for(r=0;r=d){um(i,e)}else{vm(j,d-c0&&um(i,e-d+c)}c+=e}e=Sm(o,g);if(e!=0){um(o,e);if(d>=c){um(j,e)}else{vm(i,c-d0&&um(j,e-c+d)}d+=e}if(k.r()==o.r()){if(c<=d){ln(k,o);ln(i,j)}else{ln(o,k);ln(j,i)}}else{if(c<=d){kn(k,o);kn(i,j)}else{kn(o,k);kn(j,i)}}if(o.r()==0||k.r()==0){throw new nk(vs)}}if(Um(o,d)){i=j;o.r()!=k.r()&&(k=k.cb())}k.gb(g)&&(i.r()<0?(i=i.cb()):(i=rn(b,i)));i.r()<0&&(i=fn(i,b));return i} +function We(){var c=navigator.userAgent.toLowerCase();var d=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return c.indexOf(Wr)!=-1}())return Wr;if(function(){return c.indexOf('webkit')!=-1||function(){if(c.indexOf('chromeframe')!=-1){return true}if(typeof window['ActiveXObject']!=Xr){try{var b=new ActiveXObject('ChromeTab.ChromeFrame');if(b){b.registerBhoIfNeeded();return true}}catch(a){}}return false}()}())return Sr;if(function(){return c.indexOf(Yr)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return c.indexOf(Yr)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(a&&a.length==3)return d(a)>=6000}())return 'ie6';if(function(){return c.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'} +function Kn(a,b){var c,d,e,f,g,i,j,k;j=gl(b.e,a.e);e=Zh(b);f=Zh(a);if(e0&&we(d,Er)){if(we(d,ur)){e=c+Je(d);for(f=17;f>=e;--f){j[f+1]=j[f]}j[++e]=46;g&&(j[--c]=45);return Ll(j,c,18-c+1)}for(f=2;xe(ue(f),pe(Be(d),sr));++f){j[--c]=48}j[--c]=46;j[--c]=48;g&&(j[--c]=45);return Ll(j,c,18-c)}n=c+1;k=new gm;g&&(k.b.b+=Ur,k);if(18-n>=1){Zl(k,j[c]);k.b.b+=ds;dc(k.b,Ll(j,c+1,18-c-1))}else{dc(k.b,Ll(j,c,18-c))}k.b.b+=fs;ve(d,ur)&&(k.b.b+=gs,k);cc(k.b,Lr+Ke(d));return k.b.b} +function Ef(a,b,c){var d,e,f,g,i,j,k,n,o,q,r,s,t;n=c.b;e=Pf(a)-b.q();k=nf.length-1;f=a.f-b.f;o=f;r=e-f+1;q=lc(Xd,{6:1},17,2,0);if(n==0||a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return Df(a,b)}if(r<=0){nc(q,0,(Oh(),Nh))}else if(f==0){nc(q,0,Th((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)))}else if(f>0){nc(q,0,Th((!a.d&&(a.d=Li(a.g)),a.d),ei((!b.d&&(b.d=Li(b.g)),b.d),po(f))));o=f<(n-r+1>0?n-r+1:0)?f:n-r+1>0?n-r+1:0;nc(q,0,ei(q[0],po(o)))}else{g=-f<(n-e>0?n-e:0)?-f:n-e>0?n-e:0;q=Uh(ei((!a.d&&(a.d=Li(a.g)),a.d),po(g)),(!b.d&&(b.d=Li(b.g)),b.d));o+=g;g=-o;if(q[1].r()!=0&&g>0){d=(new cg(q[1])).q()+g-b.q();if(d==0){nc(q,1,Th(ei(q[1],po(g)),(!b.d&&(b.d=Li(b.g)),b.d)));d=dl(q[1].r())}if(d>0){throw new nk(as)}}}if(q[0].r()==0){return Ig(f)}t=q[0];j=new cg(q[0]);s=j.q();i=1;while(!t.gb(0)){q=Uh(t,nf[i]);if(q[1].r()==0&&(s-i>=n||o-i>=f)){s-=i;o-=i;in){throw new nk(as)}j.f=Dg(o);Tf(j,t);return j} +function Ve(){var a,b,c;b=$doc.compatMode;a=mc(Vd,{6:1},1,[Vr]);for(c=0;cMake sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,
    e.g. by using <!doctype html> at the start of your application's HTML page.

    To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding
    the following line to your*.gwt.xml module file:
      <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').
    Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} +function Lg(a){rf();var b,c;c=Lj(a);if(c==is)b=new cg(new oi(a[0].toString()));else if(c=='BigInteger number')b=new dg(new oi(a[0].toString()),a[1]);else if(c=='BigInteger number MathContext')b=new eg(new oi(a[0].toString()),a[1],new Yn(a[2].toString()));else if(c=='BigInteger MathContext')b=new fg(new oi(a[0].toString()),new Yn(a[1].toString()));else if(c==js)b=new gg(Cl(a[0].toString()));else if(c=='array number number')b=new hg(Cl(a[0].toString()),a[1],a[2]);else if(c=='array number number MathContext')b=new ig(Cl(a[0].toString()),a[1],a[2],new Yn(a[3].toString()));else if(c=='array MathContext')b=new jg(Cl(a[0].toString()),new Yn(a[1].toString()));else if(c==ks)b=new kg(a[0]);else if(c==ls)b=new lg(a[0],new Yn(a[1].toString()));else if(c==ms)b=new mg(a[0].toString());else if(c=='string MathContext')b=new ng(a[0].toString(),new Yn(a[1].toString()));else throw new V('Unknown call signature for obj = new java.math.BigDecimal: '+c);return new Kg(b)} +function uo(){uo=rr;var a;ro=mc(Od,{6:1},-1,[0,0,1854,1233,927,747,627,543,480,431,393,361,335,314,295,279,265,253,242,232,223,216,181,169,158,150,145,140,136,132,127,123,119,114,110,105,101,96,92,87,83,78,73,69,64,59,54,49,44,38,32,26,1]);to=mc(Od,{6:1},-1,[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021]);so=lc(Xd,{6:1},17,to.length,0);for(a=0;a=0;--j){C=pe(Ee(y,32),qe(ue(B[j]),yr));t=Gm(C);B[j]=Je(t);y=ue(Je(Fe(t,32)))}u=Je(y);s=c;do{w[--c]=48+u%10&65535}while((u=~~(u/10))!=0&&c!=0);d=9-s+c;for(i=0;i0;++i){w[--c]=48}n=D-1;for(;B[n]==0;--n){if(n==0){break F}}D=n+1}while(w[c]==48){++c}}o=z<0;f=v-c-b-1;if(b==0){o&&(w[--c]=45);return Ll(w,c,v-c)}if(b>0&&f>=-6){if(f>=0){k=c+f;for(n=v-1;n>=k;--n){w[n+1]=w[n]}w[++k]=46;o&&(w[--c]=45);return Ll(w,c,v-c+1)}for(n=2;n<-f+1;++n){w[--c]=48}w[--c]=46;w[--c]=48;o&&(w[--c]=45);return Ll(w,c,v-c)}A=c+1;x=new gm;o&&(x.b.b+=Ur,x);if(v-A>=1){Zl(x,w[c]);x.b.b+=ds;dc(x.b,Ll(w,c+1,v-c-1))}else{dc(x.b,Ll(w,c,v-c))}x.b.b+=fs;f>0&&(x.b.b+=gs,x);cc(x.b,Lr+f);return x.b.b} +function jk(){nr(rs,Lr);if($wnd.bigdecimal.RoundingMode){var c=$wnd.bigdecimal.RoundingMode}$wnd.bigdecimal.RoundingMode=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Wc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new ak;or(this.__gwt_instance,this)}});var d=$wnd.bigdecimal.RoundingMode.prototype=new Object;if(c){for(p in c){$wnd.bigdecimal.RoundingMode[p]=c[p]}}$wnd.bigdecimal.RoundingMode.valueOf=Jr(function(a){var b=new bk((Qo(),Ok((Yo(),Xo),a)));return pr(b)});$wnd.bigdecimal.RoundingMode.values=Jr(function(){var a=fk();return qr(a)});d.name=Jr(function(){var a=this.__gwt_instance.Jb();return a});d.toString=Jr(function(){var a=this.__gwt_instance.tS();return a});$wnd.bigdecimal.RoundingMode.CEILING=Jr(function(){var a=new bk((Qo(),Ao));return pr(a)});$wnd.bigdecimal.RoundingMode.DOWN=Jr(function(){var a=new bk((Qo(),Bo));return pr(a)});$wnd.bigdecimal.RoundingMode.FLOOR=Jr(function(){var a=new bk((Qo(),Co));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_DOWN=Jr(function(){var a=new bk((Qo(),Do));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_EVEN=Jr(function(){var a=new bk((Qo(),Eo));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_UP=Jr(function(){var a=new bk((Qo(),Fo));return pr(a)});$wnd.bigdecimal.RoundingMode.UNNECESSARY=Jr(function(){var a=new bk((Qo(),Go));return pr(a)});$wnd.bigdecimal.RoundingMode.UP=Jr(function(){var a=new bk((Qo(),Ho));return pr(a)});mr(Wc,$wnd.bigdecimal.RoundingMode)} +function Hj(){nr(rs,Lr);if($wnd.bigdecimal.BigInteger){var d=$wnd.bigdecimal.BigInteger}$wnd.bigdecimal.BigInteger=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Sc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new Ni;or(this.__gwt_instance,this)}else if(arguments.length==1){this.__gwt_instance=Jj(arguments[0]);or(this.__gwt_instance,this)}});var e=$wnd.bigdecimal.BigInteger.prototype=new Object;if(d){for(p in d){$wnd.bigdecimal.BigInteger[p]=d[p]}}$wnd.bigdecimal.BigInteger.__init__=Jr(function(a){var b=Qi(a);return pr(b)});e.abs=Jr(function(){var a=this.__gwt_instance._();return pr(a)});e.add=Jr(function(a){var b=this.__gwt_instance.hb(a.__gwt_instance);return pr(b)});e.and=Jr(function(a){var b=this.__gwt_instance.ib(a.__gwt_instance);return pr(b)});e.andNot=Jr(function(a){var b=this.__gwt_instance.jb(a.__gwt_instance);return pr(b)});e.bitCount=jr(Number,Jr(function(){var a=this.__gwt_instance.kb();return a}));e.bitLength=jr(Number,Jr(function(){var a=this.__gwt_instance.ab();return a}));e.clearBit=Jr(function(a){var b=this.__gwt_instance.lb(a);return pr(b)});e.compareTo=jr(Number,Jr(function(a){var b=this.__gwt_instance.mb(a.__gwt_instance);return b}));e.divide=Jr(function(a){var b=this.__gwt_instance.nb(a.__gwt_instance);return pr(b)});e.doubleValue=jr(Number,Jr(function(){var a=this.__gwt_instance.z();return a}));e.equals=jr(Number,Jr(function(a){var b=this.__gwt_instance.eQ(a);return b}));e.flipBit=Jr(function(a){var b=this.__gwt_instance.pb(a);return pr(b)});e.floatValue=jr(Number,Jr(function(){var a=this.__gwt_instance.A();return a}));e.gcd=Jr(function(a){var b=this.__gwt_instance.qb(a.__gwt_instance);return pr(b)});e.getLowestSetBit=jr(Number,Jr(function(){var a=this.__gwt_instance.bb();return a}));e.hashCode=jr(Number,Jr(function(){var a=this.__gwt_instance.hC();return a}));e.intValue=jr(Number,Jr(function(){var a=this.__gwt_instance.B();return a}));e.isProbablePrime=jr(Number,Jr(function(a){var b=this.__gwt_instance.rb(a);return b}));e.max=Jr(function(a){var b=this.__gwt_instance.tb(a.__gwt_instance);return pr(b)});e.min=Jr(function(a){var b=this.__gwt_instance.ub(a.__gwt_instance);return pr(b)});e.mod=Jr(function(a){var b=this.__gwt_instance.vb(a.__gwt_instance);return pr(b)});e.modInverse=Jr(function(a){var b=this.__gwt_instance.wb(a.__gwt_instance);return pr(b)});e.modPow=Jr(function(a,b){var c=this.__gwt_instance.xb(a.__gwt_instance,b.__gwt_instance);return pr(c)});e.multiply=Jr(function(a){var b=this.__gwt_instance.yb(a.__gwt_instance);return pr(b)});e.negate=Jr(function(){var a=this.__gwt_instance.cb();return pr(a)});e.nextProbablePrime=Jr(function(){var a=this.__gwt_instance.zb();return pr(a)});e.not=Jr(function(){var a=this.__gwt_instance.Ab();return pr(a)});e.or=Jr(function(a){var b=this.__gwt_instance.Bb(a.__gwt_instance);return pr(b)});e.pow=Jr(function(a){var b=this.__gwt_instance.db(a);return pr(b)});e.remainder=Jr(function(a){var b=this.__gwt_instance.Cb(a.__gwt_instance);return pr(b)});e.setBit=Jr(function(a){var b=this.__gwt_instance.Db(a);return pr(b)});e.shiftLeft=Jr(function(a){var b=this.__gwt_instance.eb(a);return pr(b)});e.shiftRight=Jr(function(a){var b=this.__gwt_instance.fb(a);return pr(b)});e.signum=jr(Number,Jr(function(){var a=this.__gwt_instance.r();return a}));e.subtract=Jr(function(a){var b=this.__gwt_instance.Eb(a.__gwt_instance);return pr(b)});e.testBit=jr(Number,Jr(function(a){var b=this.__gwt_instance.gb(a);return b}));e.toString_va=Jr(function(a){var b=this.__gwt_instance.Fb(a);return b});e.xor=Jr(function(a){var b=this.__gwt_instance.Gb(a.__gwt_instance);return pr(b)});e.divideAndRemainder=Jr(function(a){var b=this.__gwt_instance.ob(a.__gwt_instance);return qr(b)});e.longValue=jr(Number,Jr(function(){var a=this.__gwt_instance.sb();return a}));$wnd.bigdecimal.BigInteger.valueOf=Jr(function(a){var b=(Oh(),new Pi(Ki(te(a))));return pr(b)});$wnd.bigdecimal.BigInteger.ONE=Jr(function(){var a=(Oh(),new Pi(Jh));return pr(a)});$wnd.bigdecimal.BigInteger.TEN=Jr(function(){var a=(Oh(),new Pi(Lh));return pr(a)});$wnd.bigdecimal.BigInteger.ZERO=Jr(function(){var a=(Oh(),new Pi(Nh));return pr(a)});mr(Sc,$wnd.bigdecimal.BigInteger)} +function Dh(){nr(rs,Lr);if($wnd.bigdecimal.BigDecimal){var c=$wnd.bigdecimal.BigDecimal}$wnd.bigdecimal.BigDecimal=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Qc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new Jg;or(this.__gwt_instance,this)}});var d=$wnd.bigdecimal.BigDecimal.prototype=new Object;if(c){for(p in c){$wnd.bigdecimal.BigDecimal[p]=c[p]}}$wnd.bigdecimal.BigDecimal.ROUND_CEILING=2;$wnd.bigdecimal.BigDecimal.ROUND_DOWN=1;$wnd.bigdecimal.BigDecimal.ROUND_FLOOR=3;$wnd.bigdecimal.BigDecimal.ROUND_HALF_DOWN=5;$wnd.bigdecimal.BigDecimal.ROUND_HALF_EVEN=6;$wnd.bigdecimal.BigDecimal.ROUND_HALF_UP=4;$wnd.bigdecimal.BigDecimal.ROUND_UNNECESSARY=7;$wnd.bigdecimal.BigDecimal.ROUND_UP=0;$wnd.bigdecimal.BigDecimal.__init__=Jr(function(a){var b=Lg(a);return pr(b)});d.abs_va=Jr(function(a){var b=this.__gwt_instance.s(a);return pr(b)});d.add_va=Jr(function(a){var b=this.__gwt_instance.t(a);return pr(b)});d.byteValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.u();return a}));d.compareTo=jr(Number,Jr(function(a){var b=this.__gwt_instance.v(a.__gwt_instance);return b}));d.divide_va=Jr(function(a){var b=this.__gwt_instance.y(a);return pr(b)});d.divideToIntegralValue_va=Jr(function(a){var b=this.__gwt_instance.x(a);return pr(b)});d.doubleValue=jr(Number,Jr(function(){var a=this.__gwt_instance.z();return a}));d.equals=jr(Number,Jr(function(a){var b=this.__gwt_instance.eQ(a);return b}));d.floatValue=jr(Number,Jr(function(){var a=this.__gwt_instance.A();return a}));d.hashCode=jr(Number,Jr(function(){var a=this.__gwt_instance.hC();return a}));d.intValue=jr(Number,Jr(function(){var a=this.__gwt_instance.B();return a}));d.intValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.C();return a}));d.max=Jr(function(a){var b=this.__gwt_instance.F(a.__gwt_instance);return pr(b)});d.min=Jr(function(a){var b=this.__gwt_instance.G(a.__gwt_instance);return pr(b)});d.movePointLeft=Jr(function(a){var b=this.__gwt_instance.H(a);return pr(b)});d.movePointRight=Jr(function(a){var b=this.__gwt_instance.I(a);return pr(b)});d.multiply_va=Jr(function(a){var b=this.__gwt_instance.J(a);return pr(b)});d.negate_va=Jr(function(a){var b=this.__gwt_instance.K(a);return pr(b)});d.plus_va=Jr(function(a){var b=this.__gwt_instance.L(a);return pr(b)});d.pow_va=Jr(function(a){var b=this.__gwt_instance.M(a);return pr(b)});d.precision=jr(Number,Jr(function(){var a=this.__gwt_instance.q();return a}));d.remainder_va=Jr(function(a){var b=this.__gwt_instance.N(a);return pr(b)});d.round=Jr(function(a){var b=this.__gwt_instance.O(a.__gwt_instance);return pr(b)});d.scale=jr(Number,Jr(function(){var a=this.__gwt_instance.P();return a}));d.scaleByPowerOfTen=Jr(function(a){var b=this.__gwt_instance.Q(a);return pr(b)});d.setScale_va=Jr(function(a){var b=this.__gwt_instance.R(a);return pr(b)});d.shortValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.S();return a}));d.signum=jr(Number,Jr(function(){var a=this.__gwt_instance.r();return a}));d.stripTrailingZeros=Jr(function(){var a=this.__gwt_instance.T();return pr(a)});d.subtract_va=Jr(function(a){var b=this.__gwt_instance.U(a);return pr(b)});d.toBigInteger=Jr(function(){var a=this.__gwt_instance.V();return pr(a)});d.toBigIntegerExact=Jr(function(){var a=this.__gwt_instance.W();return pr(a)});d.toEngineeringString=Jr(function(){var a=this.__gwt_instance.X();return a});d.toPlainString=Jr(function(){var a=this.__gwt_instance.Y();return a});d.toString=Jr(function(){var a=this.__gwt_instance.tS();return a});d.ulp=Jr(function(){var a=this.__gwt_instance.Z();return pr(a)});d.unscaledValue=Jr(function(){var a=this.__gwt_instance.$();return pr(a)});d.divideAndRemainder_va=Jr(function(a){var b=this.__gwt_instance.w(a);return qr(b)});d.longValue=jr(Number,Jr(function(){var a=this.__gwt_instance.E();return a}));d.longValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.D();return a}));$wnd.bigdecimal.BigDecimal.valueOf_va=Jr(function(a){var b=zh(a);return pr(b)});$wnd.bigdecimal.BigDecimal.log=jr(Number,Jr(function(a){rf();typeof console!==Xr&&console.log&&console.log(a)}));$wnd.bigdecimal.BigDecimal.logObj=jr(Number,Jr(function(a){rf();typeof console!==Xr&&console.log&&typeof JSON!==Xr&&JSON.stringify&&console.log('object: '+JSON.stringify(a))}));$wnd.bigdecimal.BigDecimal.ONE=Jr(function(){var a=(rf(),new Kg(lf));return pr(a)});$wnd.bigdecimal.BigDecimal.TEN=Jr(function(){var a=(rf(),new Kg(mf));return pr(a)});$wnd.bigdecimal.BigDecimal.ZERO=Jr(function(){var a=(rf(),new Kg(of));return pr(a)});mr(Qc,$wnd.bigdecimal.BigDecimal)} +var Lr='',ys=' ',$r='"',Or='(',gs='+',Is=', ',Ur='-',ds='.',Tr='0',es='0.',zs='0.0',As='0.00',Bs='0.000',Cs='0.0000',Ds='0.00000',Es='0.000000',Gs='0E',Fs='0E+',Qr=':',Kr=': ',Js='=',ps='BigDecimal',qs='BigDecimal MathContext',Ts='BigDecimal;',is='BigInteger',ss='BigInteger divide by zero',vs='BigInteger not invertible.',us='BigInteger: modulus not positive',Us='BigInteger;',Vr='CSS1Compat',_r='Division by zero',as='Division impossible',fs='E',Zr='For input string: "',hs='Infinite or NaN',bs='Invalid Operation',os='MathContext',ts='Negative bit address',cs='Rounding necessary',xs='RoundingMode',Vs='RoundingMode;',Nr='String',Rr='[',Ss='[Lcom.iriscouch.gwtapp.client.',Os='[Ljava.lang.',Ws='[Ljava.math.',Ks='\\.',Ls='__gwtex_wrap',Pr='anonymous',js='array',Hs='bad string format',rs='bigdecimal',Ns='com.google.gwt.core.client.',Ps='com.google.gwt.core.client.impl.',Rs='com.iriscouch.gwtapp.client.',Ms='java.lang.',Qs='java.math.',Xs='java.util.',Yr='msie',Mr='null',ks='number',ls='number MathContext',ns='number number',ws='object',Wr='opera',Ys='org.timepedia.exporter.client.',Sr='safari',ms='string',Xr='undefined';var _,Gr={l:0,m:0,h:524288},zr={l:0,m:4193280,h:1048575},Er={l:4194298,m:4194303,h:1048575},wr={l:4194303,m:4194303,h:1048575},ur={l:0,m:0,h:0},sr={l:1,m:0,h:0},vr={l:2,m:0,h:0},Hr={l:5,m:0,h:0},tr={l:10,m:0,h:0},xr={l:11,m:0,h:0},Dr={l:18,m:0,h:0},Cr={l:48,m:0,h:0},Br={l:877824,m:119,h:0},Ar={l:1755648,m:238,h:0},Ir={l:4194303,m:511,h:0},yr={l:4194303,m:1023,h:0},Fr={l:0,m:1024,h:0};_=H.prototype={};_.eQ=function I(a){return this===a};_.gC=function J(){return gd};_.hC=function K(){return ob(this)};_.tS=function L(){return this.gC().d+'@'+al(this.hC())};_.toString=function(){return this.tS()};_.tM=rr;_.cM={};_=P.prototype=new H;_.gC=function R(){return nd};_.j=function S(){return this.f};_.tS=function T(){var a,b;a=this.gC().d;b=this.j();return b!=null?a+Kr+b:a};_.cM={6:1,15:1};_.f=null;_=O.prototype=new P;_.gC=function U(){return ad};_.cM={6:1,15:1};_=V.prototype=N.prototype=new O;_.gC=function W(){return hd};_.cM={6:1,12:1,15:1};_=X.prototype=M.prototype=new N;_.gC=function Y(){return Fc};_.j=function ab(){this.d==null&&(this.e=bb(this.c),this.b=Z(this.c),this.d=Or+this.e+'): '+this.b+db(this.c),undefined);return this.d};_.cM={6:1,12:1,15:1};_.b=null;_.c=null;_.d=null;_.e=null;_=gb.prototype=new H;_.gC=function hb(){return Hc};var ib=0,jb=0;_=ub.prototype=pb.prototype=new gb;_.gC=function vb(){return Ic};_.b=null;_.c=null;var qb;_=Fb.prototype=Ab.prototype=new H;_.k=function Gb(){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=this.n(c.toString());b.push(d);var e=Qr+d;var f=a[e];if(f){var g,i;for(g=0,i=f.length;g0?c:Pr};_.gC=function Wb(){return Jc};_.o=function Xb(a){return Sb(this,a)};_.p=function Yb(){return 3};_=Zb.prototype=new H;_.gC=function $b(){return Nc};_=fc.prototype=_b.prototype=new Zb;_.gC=function gc(){return Mc};_.b=Lr;_=ic.prototype=hc.prototype=new H;_.gC=function kc(){return this.aC};_.aC=null;_.qI=0;var oc,pc;var ae=null;var oe=null;var Me,Ne,Oe,Pe;_=Se.prototype=Re.prototype=new H;_.gC=function Te(){return Oc};_.cM={2:1};_=Ze.prototype=new H;_.gC=function cf(){return fd};_.cM={6:1,10:1};var $e=null;_=qg.prototype=pg.prototype=og.prototype=ng.prototype=mg.prototype=lg.prototype=kg.prototype=jg.prototype=ig.prototype=hg.prototype=gg.prototype=fg.prototype=eg.prototype=dg.prototype=cg.prototype=Ye.prototype=new Ze;_.eQ=function wg(a){return Ff(this,a)};_.gC=function xg(){return pd};_.hC=function yg(){return Gf(this)};_.q=function Ag(){return Pf(this)};_.r=function Cg(){return Uf(this)};_.tS=function Eg(){return ag(this)};_.cM={6:1,8:1,10:1,16:1};_.b=0;_.c=0;_.d=null;_.e=0;_.f=0;_.g=0;_.i=null;var df,ef,ff,gf,hf,jf,kf=null,lf,mf,nf=null,of,pf,qf=null;_=Kg.prototype=Jg.prototype=Xe.prototype=new Ye;_.s=function Mg(a){var b,c,d;d=Lj(a);if(d==Lr)b=Uf(this)<0?Mf(this):this;else if(d==os)b=sf(Qf(this,new Yn(a[0].toString())));else throw new V('Unknown call signature for interim = super.abs: '+d);c=new Kg(b);return c};_.t=function Ng(a){var b,c,d;d=Lj(a);if(d==ps)b=tf(this,new mg(a[0].toString()));else if(d==qs)b=uf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.add: '+d);c=new Kg(b);return c};_.u=function Og(){return ~~(Je(bg(this,8))<<24)>>24};_.v=function Pg(a){return vf(this,a)};_.w=function Qg(a){var b,c,d,e;e=Lj(a);if(e==ps)c=Bf(this,new mg(a[0].toString()));else if(e==qs)c=Cf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.divideAndRemainder: '+e);d=lc(Qd,{6:1},3,c.length,0);for(b=0;b129?(a*=Infinity):(a=_e(ag(this))),a};_.gC=function Wg(){return Qc};_.hC=function Xg(){return Gf(this)};_.B=function Yg(){return this.f<=-32||this.f>(this.e>0?this.e:el((this.b-1)*0.3010299956639812)+1)?0:Mi(new Pi(this.f==0||this.b==0&&this.g!=-1?(!this.d&&(this.d=Li(this.g)),this.d):this.f<0?ei((!this.d&&(this.d=Li(this.g)),this.d),po(-this.f)):Th((!this.d&&(this.d=Li(this.g)),this.d),po(this.f))))};_.C=function Zg(){return Je(bg(this,32))};_.D=function $g(){return Je(bg(this,32))};_.E=function _g(){return _e(ag(this))};_.F=function ah(a){return new Kg(vf(this,a)>=0?this:a)};_.G=function bh(a){return new Kg(vf(this,a)<=0?this:a)};_.H=function ch(a){return new Kg(Jf(this,this.f+a))};_.I=function dh(a){return new Kg(Jf(this,this.f-a))};_.J=function eh(a){var b,c,d;d=Lj(a);if(d==ps)b=Kf(this,new mg(a[0].toString()));else if(d==qs)b=Lf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.multiply: '+d);c=new Kg(b);return c};_.K=function fh(a){var b,c,d;d=Lj(a);if(d==Lr)b=Mf(this);else if(d==os)b=Mf(Qf(this,new Yn(a[0].toString())));else throw new V('Unknown call signature for interim = super.negate: '+d);c=new Kg(b);return c};_.L=function gh(a){var b,c,d;d=Lj(a);if(d==Lr)b=this;else if(d==os)b=Qf(this,new Yn(a[0].toString()));else throw new V('Unknown call signature for interim = super.plus: '+d);c=new Kg(b);return c};_.M=function hh(a){var b,c,d;d=Lj(a);if(d==ks)b=Nf(this,a[0]);else if(d==ls)b=Of(this,a[0],new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.pow: '+d);c=new Kg(b);return c};_.q=function ih(){return Pf(this)};_.N=function jh(a){var b,c,d;d=Lj(a);if(d==ps)b=Bf(this,new mg(a[0].toString()))[1];else if(d==qs)b=Cf(this,new mg(a[0].toString()),new Yn(a[1].toString()))[1];else throw new V('Unknown call signature for interim = super.remainder: '+d);c=new Kg(b);return c};_.O=function kh(a){return new Kg(Qf(this,new Yn(Wn(a.b))))};_.P=function lh(){return Bc(this.f)};_.Q=function mh(a){return new Kg(Rf(this,a))};_.R=function nh(a){var b,c,d;d=Lj(a);if(d==ks)b=Sf(this,a[0],(Qo(),Go));else if(d==ns)b=Sf(this,a[0],Uo(a[1]));else if(d=='number RoundingMode')b=Sf(this,a[0],To(a[1].toString()));else throw new V('Unknown call signature for interim = super.setScale: '+d);c=new Kg(b);return c};_.S=function oh(){return ~~(Je(bg(this,16))<<16)>>16};_.r=function ph(){return Uf(this)};_.T=function qh(){return new Kg(Wf(this))};_.U=function rh(a){var b,c,d;d=Lj(a);if(d==ps)b=Xf(this,new mg(a[0].toString()));else if(d==qs)b=Yf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.subtract: '+d);c=new Kg(b);return c};_.V=function sh(){return new Pi(this.f==0||this.b==0&&this.g!=-1?(!this.d&&(this.d=Li(this.g)),this.d):this.f<0?ei((!this.d&&(this.d=Li(this.g)),this.d),po(-this.f)):Th((!this.d&&(this.d=Li(this.g)),this.d),po(this.f)))};_.W=function th(){return new Pi(Zf(this))};_.X=function uh(){return $f(this)};_.Y=function vh(){return _f(this)};_.tS=function wh(){return ag(this)};_.Z=function xh(){return new Kg(new pg(1,this.f))};_.$=function yh(){return new Pi((!this.d&&(this.d=Li(this.g)),this.d))};_.cM={3:1,6:1,8:1,10:1,16:1,24:1};_=Eh.prototype=Ah.prototype=new H;_.gC=function Fh(){return Pc};var Bh=false;_=ui.prototype=ti.prototype=si.prototype=ri.prototype=qi.prototype=pi.prototype=oi.prototype=ni.prototype=Hh.prototype=new Ze;_._=function vi(){return this.f<0?new si(1,this.e,this.b):this};_.ab=function wi(){return sm(this)};_.eQ=function xi(a){return Vh(this,a)};_.gC=function yi(){return qd};_.bb=function zi(){return $h(this)};_.hC=function Bi(){return _h(this)};_.cb=function Ci(){return this.f==0?this:new si(-this.f,this.e,this.b)};_.db=function Di(a){return gi(this,a)};_.eb=function Fi(a){return ji(this,a)};_.fb=function Gi(a){return li(this,a)};_.r=function Hi(){return this.f};_.gb=function Ii(a){return mi(this,a)};_.tS=function Ji(){return Hm(this,0)};_.cM={6:1,8:1,10:1,17:1};_.b=null;_.c=-2;_.d=0;_.e=0;_.f=0;var Ih,Jh,Kh,Lh,Mh=null,Nh;_=Pi.prototype=Oi.prototype=Ni.prototype=Gh.prototype=new Hh;_._=function Ri(){return new Pi(this.f<0?new si(1,this.e,this.b):this)};_.hb=function Si(a){return new Pi(fn(this,a))};_.ib=function Ti(a){return new Pi(vn(this,a))};_.jb=function Ui(a){return new Pi(yn(this,a))};_.kb=function Vi(){return rm(this)};_.ab=function Wi(){return sm(this)};_.lb=function Xi(a){return new Pi(Ph(this,a))};_.mb=function Yi(a){return Qh(this,a)};_.nb=function Zi(a){return new Pi(Th(this,a))};_.ob=function $i(a){var b,c,d;c=Uh(this,a);d=lc(Rd,{6:1},4,c.length,0);for(b=0;b=0?Qr+this.c:Lr)+')'};_.cM={6:1,13:1};_.b=null;_.c=0;_.d=null;_=String.prototype;_.eQ=function Hl(a){return wl(this,a)};_.gC=function Il(){return md};_.hC=function Jl(){return Rl(this)};_.tS=function Kl(){return this};_.cM={1:1,6:1,7:1,8:1};var Ml,Nl=0,Ol;_=Ul.prototype=Tl.prototype=new H;_.gC=function Vl(){return jd};_.tS=function Wl(){return this.b.b};_.cM={7:1};_=hm.prototype=gm.prototype=fm.prototype=Xl.prototype=new H;_.gC=function im(){return kd};_.tS=function jm(){return this.b.b};_.cM={7:1};_=lm.prototype=km.prototype=new Uk;_.gC=function mm(){return ld};_.cM={6:1,12:1,14:1,15:1};_=pm.prototype=om.prototype=new N;_.gC=function qm(){return od};_.cM={6:1,12:1,15:1};var Cm,Dm;_=Yn.prototype=Xn.prototype=Nn.prototype=new H;_.eQ=function Zn(a){return xc(a,18)&&vc(a,18).b==this.b&&vc(a,18).c==this.c};_.gC=function $n(){return rd};_.hC=function _n(){return Vn(this)};_.tS=function ao(){return Wn(this)};_.cM={6:1,18:1};_.b=0;_.c=null;var On,Pn,Qn,Rn,Sn,Tn;var bo,co,eo,fo;var ro,so,to;_=Ro.prototype=yo.prototype=new Ik;_.gC=function So(){return sd};_.cM={6:1,8:1,9:1,19:1};var zo,Ao,Bo,Co,Do,Eo,Fo,Go,Ho,Io,Jo,Ko,Lo,Mo,No,Oo,Po;var Xo;_=Zo.prototype=new H;_.Kb=function _o(a){throw new pm};_.Lb=function ap(a){var b;b=$o(this.Mb(),a);return !!b};_.gC=function bp(){return td};_.tS=function cp(){var a,b,c,d;c=new Ul;a=null;c.b.b+=Rr;b=this.Mb();while(b.Pb()){a!=null?(cc(c.b,a),c):(a=Is);d=b.Qb();cc(c.b,d===this?'(this Collection)':Lr+d)}c.b.b+=']';return c.b.b};_=ep.prototype=new H;_.eQ=function fp(a){var b,c,d,e,f;if(a===this){return true}if(!xc(a,21)){return false}e=vc(a,21);if(this.e!=e.e){return false}for(c=new Ip((new Cp(e)).b);kq(c.b);){b=vc(lq(c.b),22);d=b.Rb();f=b.Sb();if(!(d==null?this.d:xc(d,1)?Qr+vc(d,1) in this.f:pp(this,d,~~fb(d)))){return false}if(!Xq(f,d==null?this.c:xc(d,1)?op(this,vc(d,1)):np(this,d,~~fb(d)))){return false}}return true};_.gC=function gp(){return Cd};_.hC=function hp(){var a,b,c;c=0;for(b=new Ip((new Cp(this)).b);kq(b.b);){a=vc(lq(b.b),22);c+=a.hC();c=~~c}return c};_.tS=function ip(){var a,b,c,d;d='{';a=false;for(c=new Ip((new Cp(this)).b);kq(c.b);){b=vc(lq(c.b),22);a?(d+=Is):(a=true);d+=Lr+b.Rb();d+=Js;d+=Lr+b.Sb()}return d+'}'};_.cM={21:1};_=dp.prototype=new ep;_.Ob=function vp(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)};_.gC=function wp(){return yd};_.cM={21:1};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;_=yp.prototype=new Zo;_.eQ=function zp(a){var b,c,d;if(a===this){return true}if(!xc(a,23)){return false}c=vc(a,23);if(c.b.e!=this.Nb()){return false}for(b=new Ip(c.b);kq(b.b);){d=vc(lq(b.b),22);if(!this.Lb(d)){return false}}return true};_.gC=function Ap(){return Dd};_.hC=function Bp(){var a,b,c;a=0;for(b=this.Mb();b.Pb();){c=b.Qb();if(c!=null){a+=fb(c);a=~~a}}return a};_.cM={23:1};_=Cp.prototype=xp.prototype=new yp;_.Lb=function Dp(a){var b,c,d;if(xc(a,22)){b=vc(a,22);c=b.Rb();if(lp(this.b,c)){d=mp(this.b,c);return Eq(b.Sb(),d)}}return false};_.gC=function Ep(){return vd};_.Mb=function Fp(){return new Ip(this.b)};_.Nb=function Gp(){return this.b.e};_.cM={23:1};_.b=null;_=Ip.prototype=Hp.prototype=new H;_.gC=function Jp(){return ud};_.Pb=function Kp(){return kq(this.b)};_.Qb=function Lp(){return vc(lq(this.b),22)};_.b=null;_=Np.prototype=new H;_.eQ=function Op(a){var b;if(xc(a,22)){b=vc(a,22);if(Xq(this.Rb(),b.Rb())&&Xq(this.Sb(),b.Sb())){return true}}return false};_.gC=function Pp(){return Bd};_.hC=function Qp(){var a,b;a=0;b=0;this.Rb()!=null&&(a=fb(this.Rb()));this.Sb()!=null&&(b=fb(this.Sb()));return a^b};_.tS=function Rp(){return this.Rb()+Js+this.Sb()};_.cM={22:1};_=Sp.prototype=Mp.prototype=new Np;_.gC=function Tp(){return wd};_.Rb=function Up(){return null};_.Sb=function Vp(){return this.b.c};_.Tb=function Wp(a){return tp(this.b,a)};_.cM={22:1};_.b=null;_=Yp.prototype=Xp.prototype=new Np;_.gC=function Zp(){return xd};_.Rb=function $p(){return this.b};_.Sb=function _p(){return op(this.c,this.b)};_.Tb=function aq(a){return up(this.c,this.b,a)};_.cM={22:1};_.b=null;_.c=null;_=bq.prototype=new Zo;_.Kb=function cq(a){sq(this,this.Nb(),a);return true};_.eQ=function eq(a){var b,c,d,e,f;if(a===this){return true}if(!xc(a,20)){return false}f=vc(a,20);if(this.Nb()!=f.c){return false}d=new mq(this);e=new mq(f);while(d.bMathContext immutable class encapsulates the + * settings understood by the operator methods of the {@link BigDecimal} + * class (and potentially other classes). Operator methods are those + * that effect an operation on a number or a pair of numbers. + *

    + * The settings, which are not base-dependent, comprise: + *

      + *
    1. digits: + * the number of digits (precision) to be used for an operation + *
    2. form: + * the form of any exponent that results from the operation + *
    3. lostDigits: + * whether checking for lost digits is enabled + *
    4. roundingMode: + * the algorithm to be used for rounding. + *
    + *

    + * When provided, a MathContext object supplies the + * settings for an operation directly. + *

    + * When MathContext.DEFAULT is provided for a + * MathContext parameter then the default settings are used + * (9, SCIENTIFIC, false, ROUND_HALF_UP). + *

    + * In the BigDecimal class, all methods which accept a + * MathContext object defaults) also have a version of the + * method which does not accept a MathContext parameter. These versions + * carry out unlimited precision fixed point arithmetic (as though the + * settings were (0, PLAIN, false, ROUND_HALF_UP). + *

    + * The instance variables are shared with default access (so they are + * directly accessible to the BigDecimal class), but must + * never be changed. + *

    + * The rounding mode constants have the same names and values as the + * constants of the same name in java.math.BigDecimal, to + * maintain compatibility with earlier versions of + * BigDecimal. + * + * @see BigDecimal + * @author Mike Cowlishaw + * @stable ICU 2.0 + */ + +//--public final class MathContext implements java.io.Serializable{ + //--private static final java.lang.String $0="MathContext.nrx"; + + //-- methods + MathContext.prototype.getDigits = getDigits; + MathContext.prototype.getForm = getForm; + MathContext.prototype.getLostDigits = getLostDigits; + MathContext.prototype.getRoundingMode = getRoundingMode; + MathContext.prototype.toString = toString; + MathContext.prototype.isValidRound = isValidRound; + + + /* ----- Properties ----- */ + /* properties public constant */ + /** + * Plain (fixed point) notation, without any exponent. + * Used as a setting to control the form of the result of a + * BigDecimal operation. + * A zero result in plain form may have a decimal part of one or + * more zeros. + * + * @see #ENGINEERING + * @see #SCIENTIFIC + * @stable ICU 2.0 + */ + //--public static final int PLAIN=0; // [no exponent] + MathContext.PLAIN = MathContext.prototype.PLAIN = 0; // [no exponent] + + /** + * Standard floating point notation (with scientific exponential + * format, where there is one digit before any decimal point). + * Used as a setting to control the form of the result of a + * BigDecimal operation. + * A zero result in plain form may have a decimal part of one or + * more zeros. + * + * @see #ENGINEERING + * @see #PLAIN + * @stable ICU 2.0 + */ + //--public static final int SCIENTIFIC=1; // 1 digit before . + MathContext.SCIENTIFIC = MathContext.prototype.SCIENTIFIC = 1; // 1 digit before . + + /** + * Standard floating point notation (with engineering exponential + * format, where the power of ten is a multiple of 3). + * Used as a setting to control the form of the result of a + * BigDecimal operation. + * A zero result in plain form may have a decimal part of one or + * more zeros. + * + * @see #PLAIN + * @see #SCIENTIFIC + * @stable ICU 2.0 + */ + //--public static final int ENGINEERING=2; // 1-3 digits before . + MathContext.ENGINEERING = MathContext.prototype.ENGINEERING = 2; // 1-3 digits before . + + // The rounding modes match the original BigDecimal class values + /** + * Rounding mode to round to a more positive number. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If any of the discarded digits are non-zero then the result + * should be rounded towards the next more positive digit. + * @stable ICU 2.0 + */ + //--public static final int ROUND_CEILING=2; + MathContext.ROUND_CEILING = MathContext.prototype.ROUND_CEILING = 2; + + /** + * Rounding mode to round towards zero. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * All discarded digits are ignored (truncated). The result is + * neither incremented nor decremented. + * @stable ICU 2.0 + */ + //--public static final int ROUND_DOWN=1; + MathContext.ROUND_DOWN = MathContext.prototype.ROUND_DOWN = 1; + + /** + * Rounding mode to round to a more negative number. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If any of the discarded digits are non-zero then the result + * should be rounded towards the next more negative digit. + * @stable ICU 2.0 + */ + //--public static final int ROUND_FLOOR=3; + MathContext.ROUND_FLOOR = MathContext.prototype.ROUND_FLOOR = 3; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded down. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If the discarded digits represent greater than half (0.5 times) + * the value of a one in the next position then the result should be + * rounded up (away from zero). Otherwise the discarded digits are + * ignored. + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_DOWN=5; + MathContext.ROUND_HALF_DOWN = MathContext.prototype.ROUND_HALF_DOWN = 5; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded to the nearest even neighbor. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If the discarded digits represent greater than half (0.5 times) + * the value of a one in the next position then the result should be + * rounded up (away from zero). If they represent less than half, + * then the result should be rounded down. + *

    + * Otherwise (they represent exactly half) the result is rounded + * down if its rightmost digit is even, or rounded up if its + * rightmost digit is odd (to make an even digit). + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_EVEN=6; + MathContext.ROUND_HALF_EVEN = MathContext.prototype.ROUND_HALF_EVEN = 6; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded up. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If the discarded digits represent greater than or equal to half + * (0.5 times) the value of a one in the next position then the result + * should be rounded up (away from zero). Otherwise the discarded + * digits are ignored. + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_UP=4; + MathContext.ROUND_HALF_UP = MathContext.prototype.ROUND_HALF_UP = 4; + + /** + * Rounding mode to assert that no rounding is necessary. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * Rounding (potential loss of information) is not permitted. + * If any of the discarded digits are non-zero then an + * ArithmeticException should be thrown. + * @stable ICU 2.0 + */ + //--public static final int ROUND_UNNECESSARY=7; + MathContext.ROUND_UNNECESSARY = MathContext.prototype.ROUND_UNNECESSARY = 7; + + /** + * Rounding mode to round away from zero. + * Used as a setting to control the rounding mode used during a + * BigDecimal operation. + *

    + * If any of the discarded digits are non-zero then the result will + * be rounded up (away from zero). + * @stable ICU 2.0 + */ + //--public static final int ROUND_UP=0; + MathContext.ROUND_UP = MathContext.prototype.ROUND_UP = 0; + + + /* properties shared */ + /** + * The number of digits (precision) to be used for an operation. + * A value of 0 indicates that unlimited precision (as many digits + * as are required) will be used. + *

    + * The {@link BigDecimal} operator methods use this value to + * determine the precision of results. + * Note that leading zeros (in the integer part of a number) are + * never significant. + *

    + * digits will always be non-negative. + * + * @serial + */ + //--int digits; + + /** + * The form of results from an operation. + *

    + * The {@link BigDecimal} operator methods use this value to + * determine the form of results, in particular whether and how + * exponential notation should be used. + * + * @see #ENGINEERING + * @see #PLAIN + * @see #SCIENTIFIC + * @serial + */ + //--int form; // values for this must fit in a byte + + /** + * Controls whether lost digits checking is enabled for an + * operation. + * Set to true to enable checking, or + * to false to disable checking. + *

    + * When enabled, the {@link BigDecimal} operator methods check + * the precision of their operand or operands, and throw an + * ArithmeticException if an operand is more precise + * than the digits setting (that is, digits would be lost). + * When disabled, operands are rounded to the specified digits. + * + * @serial + */ + //--boolean lostDigits; + + /** + * The rounding algorithm to be used for an operation. + *

    + * The {@link BigDecimal} operator methods use this value to + * determine the algorithm to be used when non-zero digits have to + * be discarded in order to reduce the precision of a result. + * The value must be one of the public constants whose name starts + * with ROUND_. + * + * @see #ROUND_CEILING + * @see #ROUND_DOWN + * @see #ROUND_FLOOR + * @see #ROUND_HALF_DOWN + * @see #ROUND_HALF_EVEN + * @see #ROUND_HALF_UP + * @see #ROUND_UNNECESSARY + * @see #ROUND_UP + * @serial + */ + //--int roundingMode; + + /* properties private constant */ + // default settings + //--private static final int DEFAULT_FORM=SCIENTIFIC; + //--private static final int DEFAULT_DIGITS=9; + //--private static final boolean DEFAULT_LOSTDIGITS=false; + //--private static final int DEFAULT_ROUNDINGMODE=ROUND_HALF_UP; + MathContext.prototype.DEFAULT_FORM=MathContext.prototype.SCIENTIFIC; + MathContext.prototype.DEFAULT_DIGITS=9; + MathContext.prototype.DEFAULT_LOSTDIGITS=false; + MathContext.prototype.DEFAULT_ROUNDINGMODE=MathContext.prototype.ROUND_HALF_UP; + + /* properties private constant */ + + //--private static final int MIN_DIGITS=0; // smallest value for DIGITS. + //--private static final int MAX_DIGITS=999999999; // largest value for DIGITS. If increased, + MathContext.prototype.MIN_DIGITS=0; // smallest value for DIGITS. + MathContext.prototype.MAX_DIGITS=999999999; // largest value for DIGITS. If increased, + // the BigDecimal class may need update. + // list of valid rounding mode values, most common two first + //--private static final int ROUNDS[]=new int[]{ROUND_HALF_UP,ROUND_UNNECESSARY,ROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UP}; + MathContext.prototype.ROUNDS=new Array(MathContext.prototype.ROUND_HALF_UP,MathContext.prototype.ROUND_UNNECESSARY,MathContext.prototype.ROUND_CEILING,MathContext.prototype.ROUND_DOWN,MathContext.prototype.ROUND_FLOOR,MathContext.prototype.ROUND_HALF_DOWN,MathContext.prototype.ROUND_HALF_EVEN,MathContext.prototype.ROUND_UP); + + + //--private static final java.lang.String ROUNDWORDS[]=new java.lang.String[]{"ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"}; // matching names of the ROUNDS values + MathContext.prototype.ROUNDWORDS=new Array("ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"); // matching names of the ROUNDS values + + + + + /* properties private constant unused */ + + // Serialization version + //--private static final long serialVersionUID=7163376998892515376L; + + /* properties public constant */ + /** + * A MathContext object initialized to the default + * settings for general-purpose arithmetic. That is, + * digits=9 form=SCIENTIFIC lostDigits=false + * roundingMode=ROUND_HALF_UP. + * + * @see #SCIENTIFIC + * @see #ROUND_HALF_UP + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.MathContext DEFAULT=new com.ibm.icu.math.MathContext(DEFAULT_DIGITS,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); + MathContext.prototype.DEFAULT=new MathContext(MathContext.prototype.DEFAULT_DIGITS,MathContext.prototype.DEFAULT_FORM,MathContext.prototype.DEFAULT_LOSTDIGITS,MathContext.prototype.DEFAULT_ROUNDINGMODE); + + + + + /* ----- Constructors ----- */ + + /** + * Constructs a new MathContext with a specified + * precision. + * The other settings are set to the default values + * (see {@link #DEFAULT}). + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999). + * + * @param setdigits The int digits setting + * for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits){ + //-- this(setdigits,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); + //-- return;} + + + /** + * Constructs a new MathContext with a specified + * precision and form. + * The other settings are set to the default values + * (see {@link #DEFAULT}). + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999), or if the value given for the + * setform parameter is not one of the appropriate + * constants. + * + * @param setdigits The int digits setting + * for this MathContext. + * @param setform The int form setting + * for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits,int setform){ + //-- this(setdigits,setform,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); + //-- return;} + + /** + * Constructs a new MathContext with a specified + * precision, form, and lostDigits setting. + * The roundingMode setting is set to its default value + * (see {@link #DEFAULT}). + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999), or if the value given for the + * setform parameter is not one of the appropriate + * constants. + * + * @param setdigits The int digits setting + * for this MathContext. + * @param setform The int form setting + * for this MathContext. + * @param setlostdigits The boolean lostDigits + * setting for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits,int setform,boolean setlostdigits){ + //-- this(setdigits,setform,setlostdigits,DEFAULT_ROUNDINGMODE); + //-- return;} + + /** + * Constructs a new MathContext with a specified + * precision, form, lostDigits, and roundingMode setting. + * + * An IllegalArgumentException is thrown if the + * setdigits parameter is out of range + * (<0 or >999999999), or if the value given for the + * setform or setroundingmode parameters is + * not one of the appropriate constants. + * + * @param setdigits The int digits setting + * for this MathContext. + * @param setform The int form setting + * for this MathContext. + * @param setlostdigits The boolean lostDigits + * setting for this MathContext. + * @param setroundingmode The int roundingMode setting + * for this MathContext. + * @throws IllegalArgumentException parameter out of range. + * @stable ICU 2.0 + */ + + //--public MathContext(int setdigits,int setform,boolean setlostdigits,int setroundingmode){super(); + function MathContext() { + //-- members + this.digits = 0; + this.form = 0; // values for this must fit in a byte + this.lostDigits = false; + this.roundingMode = 0; + + //-- overloaded ctor + var setform = this.DEFAULT_FORM; + var setlostdigits = this.DEFAULT_LOSTDIGITS; + var setroundingmode = this.DEFAULT_ROUNDINGMODE; + if (MathContext.arguments.length == 4) + { + setform = MathContext.arguments[1]; + setlostdigits = MathContext.arguments[2]; + setroundingmode = MathContext.arguments[3]; + } + else if (MathContext.arguments.length == 3) + { + setform = MathContext.arguments[1]; + setlostdigits = MathContext.arguments[2]; + } + else if (MathContext.arguments.length == 2) + { + setform = MathContext.arguments[1]; + } + else if (MathContext.arguments.length != 1) + { + throw "MathContext(): " + MathContext.arguments.length + " arguments given; expected 1 to 4"; + } + var setdigits = MathContext.arguments[0]; + + + // set values, after checking + if (setdigits!=this.DEFAULT_DIGITS) + { + if (setdigitsthis.MAX_DIGITS) + throw "MathContext(): Digits too large: "+setdigits; + } + {/*select*/ + if (setform==this.SCIENTIFIC) + {} // [most common] + else if (setform==this.ENGINEERING) + {} + else if (setform==this.PLAIN) + {} + else{ + throw "MathContext() Bad form value: "+setform; + } + } + if ((!(this.isValidRound(setroundingmode)))) + throw "MathContext(): Bad roundingMode value: "+setroundingmode; + this.digits=setdigits; + this.form=setform; + this.lostDigits=setlostdigits; // [no bad value possible] + this.roundingMode=setroundingmode; + return;} + + /** + * Returns the digits setting. + * This value is always non-negative. + * + * @return an int which is the value of the digits + * setting + * @stable ICU 2.0 + */ + + //--public int getDigits(){ + function getDigits() { + return this.digits; + } + + /** + * Returns the form setting. + * This will be one of + * {@link #ENGINEERING}, + * {@link #PLAIN}, or + * {@link #SCIENTIFIC}. + * + * @return an int which is the value of the form setting + * @stable ICU 2.0 + */ + + //--public int getForm(){ + function getForm() { + return this.form; + } + + /** + * Returns the lostDigits setting. + * This will be either true (enabled) or + * false (disabled). + * + * @return a boolean which is the value of the lostDigits + * setting + * @stable ICU 2.0 + */ + + //--public boolean getLostDigits(){ + function getLostDigits() { + return this.lostDigits; + } + + /** + * Returns the roundingMode setting. + * This will be one of + * {@link #ROUND_CEILING}, + * {@link #ROUND_DOWN}, + * {@link #ROUND_FLOOR}, + * {@link #ROUND_HALF_DOWN}, + * {@link #ROUND_HALF_EVEN}, + * {@link #ROUND_HALF_UP}, + * {@link #ROUND_UNNECESSARY}, or + * {@link #ROUND_UP}. + * + * @return an int which is the value of the roundingMode + * setting + * @stable ICU 2.0 + */ + + //--public int getRoundingMode(){ + function getRoundingMode() { + return this.roundingMode; + } + + /** Returns the MathContext as a readable string. + * The String returned represents the settings of the + * MathContext object as four blank-delimited words + * separated by a single blank and with no leading or trailing blanks, + * as follows: + *

      + *
    1. + * digits=, immediately followed by + * the value of the digits setting as a numeric word. + *
    2. + * form=, immediately followed by + * the value of the form setting as an uppercase word + * (one of SCIENTIFIC, PLAIN, or + * ENGINEERING). + *
    3. + * lostDigits=, immediately followed by + * the value of the lostDigits setting + * (1 if enabled, 0 if disabled). + *
    4. + * roundingMode=, immediately followed by + * the value of the roundingMode setting as a word. + * This word will be the same as the name of the corresponding public + * constant. + *
    + *

    + * For example: + *
    + * digits=9 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP + * + *

    + * Additional words may be appended to the result of + * toString in the future if more properties are added + * to the class. + * + * @return a String representing the context settings. + * @stable ICU 2.0 + */ + + //--public java.lang.String toString(){ + function toString() { + //--java.lang.String formstr=null; + var formstr=null; + //--int r=0; + var r=0; + //--java.lang.String roundword=null; + var roundword=null; + {/*select*/ + if (this.form==this.SCIENTIFIC) + formstr="SCIENTIFIC"; + else if (this.form==this.ENGINEERING) + formstr="ENGINEERING"; + else{ + formstr="PLAIN";/* form=PLAIN */ + } + } + {var $1=this.ROUNDS.length;r=0;r:for(;$1>0;$1--,r++){ + if (this.roundingMode==this.ROUNDS[r]) + { + roundword=this.ROUNDWORDS[r]; + break r; + } + } + }/*r*/ + return "digits="+this.digits+" "+"form="+formstr+" "+"lostDigits="+(this.lostDigits?"1":"0")+" "+"roundingMode="+roundword; + } + + + /* Test whether round is valid. */ + // This could be made shared for use by BigDecimal for setScale. + + //--private static boolean isValidRound(int testround){ + function isValidRound(testround) { + //--int r=0; + var r=0; + {var $2=this.ROUNDS.length;r=0;r:for(;$2>0;$2--,r++){ + if (testround==this.ROUNDS[r]) + return true; + } + }/*r*/ + return false; + } +return MathContext; +})(); + +var BigDecimal = (function (MathContext) { +/* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */ +/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */ +//--package com.ibm.icu.math; +//--import java.math.BigInteger; +//--import com.ibm.icu.impl.Utility; + +/* ------------------------------------------------------------------ */ +/* BigDecimal -- Decimal arithmetic for Java */ +/* ------------------------------------------------------------------ */ +/* Copyright IBM Corporation, 1996, 2000. All Rights Reserved. */ +/* */ +/* The BigDecimal class provides immutable arbitrary-precision */ +/* floating point (including integer) decimal numbers. */ +/* */ +/* As the numbers are decimal, there is an exact correspondence */ +/* between an instance of a BigDecimal object and its String */ +/* representation; the BigDecimal class provides direct conversions */ +/* to and from String and character array objects, and well as */ +/* conversions to and from the Java primitive types (which may not */ +/* be exact). */ +/* ------------------------------------------------------------------ */ +/* Notes: */ +/* */ +/* 1. A BigDecimal object is never changed in value once constructed; */ +/* this avoids the need for locking. Note in particular that the */ +/* mantissa array may be shared between many BigDecimal objects, */ +/* so that once exposed it must not be altered. */ +/* */ +/* 2. This class looks at MathContext class fields directly (for */ +/* performance). It must not and does not change them. */ +/* */ +/* 3. Exponent checking is delayed until finish(), as we know */ +/* intermediate calculations cannot cause 31-bit overflow. */ +/* [This assertion depends on MAX_DIGITS in MathContext.] */ +/* */ +/* 4. Comments for the public API now follow the javadoc conventions. */ +/* The NetRexx -comments option is used to pass these comments */ +/* through to the generated Java code (with -format, if desired). */ +/* */ +/* 5. System.arraycopy is faster than explicit loop as follows */ +/* Mean length 4: equal */ +/* Mean length 8: x2 */ +/* Mean length 16: x3 */ +/* Mean length 24: x4 */ +/* From prior experience, we expect mean length a little below 8, */ +/* but arraycopy is still the one to use, in general, until later */ +/* measurements suggest otherwise. */ +/* */ +/* 6. 'DMSRCN' referred to below is the original (1981) IBM S/370 */ +/* assembler code implementation of the algorithms below; it is */ +/* now called IXXRCN and is available with the OS/390 and VM/ESA */ +/* operating systems. */ +/* ------------------------------------------------------------------ */ +/* Change History: */ +/* 1997.09.02 Initial version (derived from netrexx.lang classes) */ +/* 1997.09.12 Add lostDigits checking */ +/* 1997.10.06 Change mantissa to a byte array */ +/* 1997.11.22 Rework power [did not prepare arguments, etc.] */ +/* 1997.12.13 multiply did not prepare arguments */ +/* 1997.12.14 add did not prepare and align arguments correctly */ +/* 1998.05.02 0.07 packaging changes suggested by Sun and Oracle */ +/* 1998.05.21 adjust remainder operator finalization */ +/* 1998.06.04 rework to pass MathContext to finish() and round() */ +/* 1998.06.06 change format to use round(); support rounding modes */ +/* 1998.06.25 rename to BigDecimal and begin merge */ +/* zero can now have trailing zeros (i.e., exp\=0) */ +/* 1998.06.28 new methods: movePointXxxx, scale, toBigInteger */ +/* unscaledValue, valueof */ +/* 1998.07.01 improve byteaddsub to allow array reuse, etc. */ +/* 1998.07.01 make null testing explicit to avoid JIT bug [Win32] */ +/* 1998.07.07 scaled division [divide(BigDecimal, int, int)] */ +/* 1998.07.08 setScale, faster equals */ +/* 1998.07.11 allow 1E6 (no sign) ; new double/float conversion */ +/* 1998.10.12 change package to com.ibm.icu.math */ +/* 1998.12.14 power operator no longer rounds RHS [to match ANSI] */ +/* add toBigDecimal() and BigDecimal(java.math.BigDecimal) */ +/* 1998.12.29 improve byteaddsub by using table lookup */ +/* 1999.02.04 lostdigits=0 behaviour rounds instead of digits+1 guard */ +/* 1999.02.05 cleaner code for BigDecimal(char[]) */ +/* 1999.02.06 add javadoc comments */ +/* 1999.02.11 format() changed from 7 to 2 method form */ +/* 1999.03.05 null pointer checking is no longer explicit */ +/* 1999.03.05 simplify; changes from discussion with J. Bloch: */ +/* null no longer permitted for MathContext; drop boolean, */ +/* byte, char, float, short constructor, deprecate double */ +/* constructor, no blanks in string constructor, add */ +/* offset and length version of char[] constructor; */ +/* add valueOf(double); drop booleanValue, charValue; */ +/* add ...Exact versions of remaining convertors */ +/* 1999.03.13 add toBigIntegerExact */ +/* 1999.03.13 1.00 release to IBM Centre for Java Technology */ +/* 1999.05.27 1.01 correct 0-0.2 bug under scaled arithmetic */ +/* 1999.06.29 1.02 constructors should not allow exponent > 9 digits */ +/* 1999.07.03 1.03 lost digits should not be checked if digits=0 */ +/* 1999.07.06 lost digits Exception message changed */ +/* 1999.07.10 1.04 more work on 0-0.2 (scaled arithmetic) */ +/* 1999.07.17 improve messages from pow method */ +/* 1999.08.08 performance tweaks */ +/* 1999.08.15 fastpath in multiply */ +/* 1999.11.05 1.05 fix problem in intValueExact [e.g., 5555555555] */ +/* 1999.12.22 1.06 remove multiply fastpath, and improve performance */ +/* 2000.01.01 copyright update [Y2K has arrived] */ +/* 2000.06.18 1.08 no longer deprecate BigDecimal(double) */ +/* ------------------------------------------------------------------ */ + + +/* JavaScript conversion (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany */ + + + +function div(a, b) { + return (a-(a%b))/b; +} + +BigDecimal.prototype.div = div; + +function arraycopy(src, srcindex, dest, destindex, length) { + var i; + if (destindex > srcindex) { + // in case src and dest are equals, but also doesn't hurt + // if they are different + for (i = length-1; i >= 0; --i) { + dest[i+destindex] = src[i+srcindex]; + } + } else { + for (i = 0; i < length; ++i) { + dest[i+destindex] = src[i+srcindex]; + } + } +} + +BigDecimal.prototype.arraycopy = arraycopy; + +function createArrayWithZeros(length) { + var retVal = new Array(length); + var i; + for (i = 0; i < length; ++i) { + retVal[i] = 0; + } + return retVal; +} + +BigDecimal.prototype.createArrayWithZeros = createArrayWithZeros; + + +/** + * The BigDecimal class implements immutable + * arbitrary-precision decimal numbers. The methods of the + * BigDecimal class provide operations for fixed and + * floating point arithmetic, comparison, format conversions, and + * hashing. + *

    + * As the numbers are decimal, there is an exact correspondence between + * an instance of a BigDecimal object and its + * String representation; the BigDecimal class + * provides direct conversions to and from String and + * character array (char[]) objects, as well as conversions + * to and from the Java primitive types (which may not be exact) and + * BigInteger. + *

    + * In the descriptions of constructors and methods in this documentation, + * the value of a BigDecimal number object is shown as the + * result of invoking the toString() method on the object. + * The internal representation of a decimal number is neither defined + * nor exposed, and is not permitted to affect the result of any + * operation. + *

    + * The floating point arithmetic provided by this class is defined by + * the ANSI X3.274-1996 standard, and is also documented at + * http://www2.hursley.ibm.com/decimal + *
    [This URL will change.] + * + *

    Operator methods

    + *

    + * Operations on BigDecimal numbers are controlled by a + * {@link MathContext} object, which provides the context (precision and + * other information) for the operation. Methods that can take a + * MathContext parameter implement the standard arithmetic + * operators for BigDecimal objects and are known as + * operator methods. The default settings provided by the + * constant {@link MathContext#DEFAULT} (digits=9, + * form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP) + * perform general-purpose floating point arithmetic to nine digits of + * precision. The MathContext parameter must not be + * null. + *

    + * Each operator method also has a version provided which does + * not take a MathContext parameter. For this version of + * each method, the context settings used are digits=0, + * form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP; + * these settings perform fixed point arithmetic with unlimited + * precision, as defined for the original BigDecimal class in Java 1.1 + * and Java 1.2. + *

    + * For monadic operators, only the optional MathContext + * parameter is present; the operation acts upon the current object. + *

    + * For dyadic operators, a BigDecimal parameter is always + * present; it must not be null. + * The operation acts with the current object being the left-hand operand + * and the BigDecimal parameter being the right-hand operand. + *

    + * For example, adding two BigDecimal objects referred to + * by the names award and extra could be + * written as any of: + *

    + * award.add(extra) + *
    award.add(extra, MathContext.DEFAULT) + *
    award.add(extra, acontext) + *
    + *

    + * (where acontext is a MathContext object), + * which would return a BigDecimal object whose value is + * the result of adding award and extra under + * the appropriate context settings. + *

    + * When a BigDecimal operator method is used, a set of + * rules define what the result will be (and, by implication, how the + * result would be represented as a character string). + * These rules are defined in the BigDecimal arithmetic documentation + * (see the URL above), but in summary: + *

      + *
    • Results are normally calculated with up to some maximum number of + * significant digits. + * For example, if the MathContext parameter for an operation + * were MathContext.DEFAULT then the result would be + * rounded to 9 digits; the division of 2 by 3 would then result in + * 0.666666667. + *
      + * You can change the default of 9 significant digits by providing the + * method with a suitable MathContext object. This lets you + * calculate using as many digits as you need -- thousands, if necessary. + * Fixed point (scaled) arithmetic is indicated by using a + * digits setting of 0 (or omitting the + * MathContext parameter). + *
      + * Similarly, you can change the algorithm used for rounding from the + * default "classic" algorithm. + *
    • + * In standard arithmetic (that is, when the form setting + * is not PLAIN), a zero result is always expressed as the + * single digit '0' (that is, with no sign, decimal point, + * or exponent part). + *
    • + * Except for the division and power operators in standard arithmetic, + * trailing zeros are preserved (this is in contrast to binary floating + * point operations and most electronic calculators, which lose the + * information about trailing zeros in the fractional part of results). + *
      + * So, for example: + *

      + * new BigDecimal("2.40").add( new BigDecimal("2")) => "4.40" + *
      new BigDecimal("2.40").subtract(new BigDecimal("2")) => "0.40" + *
      new BigDecimal("2.40").multiply(new BigDecimal("2")) => "4.80" + *
      new BigDecimal("2.40").divide( new BigDecimal("2"), def) => "1.2" + *
      + *

      where the value on the right of the => would be the + * result of the operation, expressed as a String, and + * def (in this and following examples) refers to + * MathContext.DEFAULT). + * This preservation of trailing zeros is desirable for most + * calculations (including financial calculations). + * If necessary, trailing zeros may be easily removed using division by 1. + *

    • + * In standard arithmetic, exponential form is used for a result + * depending on its value and the current setting of digits + * (the default is 9 digits). + * If the number of places needed before the decimal point exceeds the + * digits setting, or the absolute value of the number is + * less than 0.000001, then the number will be expressed in + * exponential notation; thus + *

      + * new BigDecimal("1e+6").multiply(new BigDecimal("1e+6"), def) + * + *

      results in 1E+12 instead of + * 1000000000000, and + *

      + * new BigDecimal("1").divide(new BigDecimal("3E+10"), def) + * + *

      results in 3.33333333E-11 instead of + * 0.0000000000333333333. + *

      + * The form of the exponential notation (scientific or engineering) is + * determined by the form setting. + * + *

      + * The names of methods in this class follow the conventions established + * by java.lang.Number, java.math.BigInteger, + * and java.math.BigDecimal in Java 1.1 and Java 1.2. + * + * @see MathContext + * @author Mike Cowlishaw + * @stable ICU 2.0 + */ + +//--public class BigDecimal extends java.lang.Number implements java.io.Serializable,java.lang.Comparable{ +//-- private static final java.lang.String $0="BigDecimal.nrx"; + + //-- methods + BigDecimal.prototype.abs = abs; + BigDecimal.prototype.add = add; + BigDecimal.prototype.compareTo = compareTo; + BigDecimal.prototype.divide = divide; + BigDecimal.prototype.divideInteger = divideInteger; + BigDecimal.prototype.max = max; + BigDecimal.prototype.min = min; + BigDecimal.prototype.multiply = multiply; + BigDecimal.prototype.negate = negate; + BigDecimal.prototype.plus = plus; + BigDecimal.prototype.pow = pow; + BigDecimal.prototype.remainder = remainder; + BigDecimal.prototype.subtract = subtract; + BigDecimal.prototype.equals = equals; + BigDecimal.prototype.format = format; + BigDecimal.prototype.intValueExact = intValueExact; + BigDecimal.prototype.movePointLeft = movePointLeft; + BigDecimal.prototype.movePointRight = movePointRight; + BigDecimal.prototype.scale = scale; + BigDecimal.prototype.setScale = setScale; + BigDecimal.prototype.signum = signum; + BigDecimal.prototype.toString = toString; + BigDecimal.prototype.layout = layout; + BigDecimal.prototype.intcheck = intcheck; + BigDecimal.prototype.dodivide = dodivide; + BigDecimal.prototype.bad = bad; + BigDecimal.prototype.badarg = badarg; + BigDecimal.prototype.extend = extend; + BigDecimal.prototype.byteaddsub = byteaddsub; + BigDecimal.prototype.diginit = diginit; + BigDecimal.prototype.clone = clone; + BigDecimal.prototype.checkdigits = checkdigits; + BigDecimal.prototype.round = round; + BigDecimal.prototype.allzero = allzero; + BigDecimal.prototype.finish = finish; + + // Convenience methods + BigDecimal.prototype.isGreaterThan = isGreaterThan; + BigDecimal.prototype.isLessThan = isLessThan; + BigDecimal.prototype.isGreaterThanOrEqualTo = isGreaterThanOrEqualTo; + BigDecimal.prototype.isLessThanOrEqualTo = isLessThanOrEqualTo; + BigDecimal.prototype.isPositive = isPositive; + BigDecimal.prototype.isNegative = isNegative; + BigDecimal.prototype.isZero = isZero; + + + /* ----- Constants ----- */ + /* properties constant public */ // useful to others + // the rounding modes (copied here for upwards compatibility) + /** + * Rounding mode to round to a more positive number. + * @see MathContext#ROUND_CEILING + * @stable ICU 2.0 + */ + //--public static final int ROUND_CEILING=com.ibm.icu.math.MathContext.ROUND_CEILING; + BigDecimal.ROUND_CEILING = BigDecimal.prototype.ROUND_CEILING = MathContext.prototype.ROUND_CEILING; + + /** + * Rounding mode to round towards zero. + * @see MathContext#ROUND_DOWN + * @stable ICU 2.0 + */ + //--public static final int ROUND_DOWN=com.ibm.icu.math.MathContext.ROUND_DOWN; + BigDecimal.ROUND_DOWN = BigDecimal.prototype.ROUND_DOWN = MathContext.prototype.ROUND_DOWN; + + /** + * Rounding mode to round to a more negative number. + * @see MathContext#ROUND_FLOOR + * @stable ICU 2.0 + */ + //--public static final int ROUND_FLOOR=com.ibm.icu.math.MathContext.ROUND_FLOOR; + BigDecimal.ROUND_FLOOR = BigDecimal.prototype.ROUND_FLOOR = MathContext.prototype.ROUND_FLOOR; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded down. + * @see MathContext#ROUND_HALF_DOWN + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_DOWN=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN; + BigDecimal.ROUND_HALF_DOWN = BigDecimal.prototype.ROUND_HALF_DOWN = MathContext.prototype.ROUND_HALF_DOWN; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded to the nearest even neighbor. + * @see MathContext#ROUND_HALF_EVEN + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_EVEN=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN; + BigDecimal.ROUND_HALF_EVEN = BigDecimal.prototype.ROUND_HALF_EVEN = MathContext.prototype.ROUND_HALF_EVEN; + + /** + * Rounding mode to round to nearest neighbor, where an equidistant + * value is rounded up. + * @see MathContext#ROUND_HALF_UP + * @stable ICU 2.0 + */ + //--public static final int ROUND_HALF_UP=com.ibm.icu.math.MathContext.ROUND_HALF_UP; + BigDecimal.ROUND_HALF_UP = BigDecimal.prototype.ROUND_HALF_UP = MathContext.prototype.ROUND_HALF_UP; + + /** + * Rounding mode to assert that no rounding is necessary. + * @see MathContext#ROUND_UNNECESSARY + * @stable ICU 2.0 + */ + //--public static final int ROUND_UNNECESSARY=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; + BigDecimal.ROUND_UNNECESSARY = BigDecimal.prototype.ROUND_UNNECESSARY = MathContext.prototype.ROUND_UNNECESSARY; + + /** + * Rounding mode to round away from zero. + * @see MathContext#ROUND_UP + * @stable ICU 2.0 + */ + //--public static final int ROUND_UP=com.ibm.icu.math.MathContext.ROUND_UP; + BigDecimal.ROUND_UP = BigDecimal.prototype.ROUND_UP = MathContext.prototype.ROUND_UP; + + /* properties constant private */ // locals + //--private static final byte ispos=1; // ind: indicates positive (must be 1) + //--private static final byte iszero=0; // ind: indicates zero (must be 0) + //--private static final byte isneg=-1; // ind: indicates negative (must be -1) + BigDecimal.prototype.ispos = 1; + BigDecimal.prototype.iszero = 0; + BigDecimal.prototype.isneg = -1; + // [later could add NaN, +/- infinity, here] + + //--private static final int MinExp=-999999999; // minimum exponent allowed + //--private static final int MaxExp=999999999; // maximum exponent allowed + //--private static final int MinArg=-999999999; // minimum argument integer + //--private static final int MaxArg=999999999; // maximum argument integer + BigDecimal.prototype.MinExp=-999999999; // minimum exponent allowed + BigDecimal.prototype.MaxExp=999999999; // maximum exponent allowed + BigDecimal.prototype.MinArg=-999999999; // minimum argument integer + BigDecimal.prototype.MaxArg=999999999; // maximum argument integer + + //--private static final com.ibm.icu.math.MathContext plainMC=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN); // context for plain unlimited math + BigDecimal.prototype.plainMC=new MathContext(0, MathContext.prototype.PLAIN); + + /* properties constant private unused */ // present but not referenced + + // Serialization version + //--private static final long serialVersionUID=8245355804974198832L; + + //--private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000. All rights reserved. "; + + /* properties static private */ + // Precalculated constant arrays (used by byteaddsub) + //--private static byte bytecar[]=new byte[(90+99)+1]; // carry/borrow array + //--private static byte bytedig[]=diginit(); // next digit array + BigDecimal.prototype.bytecar = new Array((90+99)+1); + BigDecimal.prototype.bytedig = diginit(); + + /** + * The BigDecimal constant "0". + * + * @see #ONE + * @see #TEN + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.BigDecimal ZERO=new com.ibm.icu.math.BigDecimal((long)0); // use long as we want the int constructor + // .. to be able to use this, for speed +BigDecimal.ZERO = BigDecimal.prototype.ZERO = new BigDecimal("0"); + + /** + * The BigDecimal constant "1". + * + * @see #TEN + * @see #ZERO + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.BigDecimal ONE=new com.ibm.icu.math.BigDecimal((long)1); // use long as we want the int constructor + // .. to be able to use this, for speed +BigDecimal.ONE = BigDecimal.prototype.ONE = new BigDecimal("1"); + + /** + * The BigDecimal constant "10". + * + * @see #ONE + * @see #ZERO + * @stable ICU 2.0 + */ + //--public static final com.ibm.icu.math.BigDecimal TEN=new com.ibm.icu.math.BigDecimal(10); + BigDecimal.TEN = BigDecimal.prototype.TEN = new BigDecimal("10"); + + /* ----- Instance properties [all private and immutable] ----- */ + /* properties private */ + + /** + * The indicator. This may take the values: + *

        + *
      • ispos -- the number is positive + *
      • iszero -- the number is zero + *
      • isneg -- the number is negative + *
      + * + * @serial + */ + //--private byte ind; // assumed undefined + // Note: some code below assumes IND = Sign [-1, 0, 1], at present. + // We only need two bits for this, but use a byte [also permits + // smooth future extension]. + + /** + * The formatting style. This may take the values: + *
        + *
      • MathContext.PLAIN -- no exponent needed + *
      • MathContext.SCIENTIFIC -- scientific notation required + *
      • MathContext.ENGINEERING -- engineering notation required + *
      + *

      + * This property is an optimization; it allows us to defer number + * layout until it is actually needed as a string, hence avoiding + * unnecessary formatting. + * + * @serial + */ + //--private byte form=(byte)com.ibm.icu.math.MathContext.PLAIN; // assumed PLAIN + // We only need two bits for this, at present, but use a byte + // [again, to allow for smooth future extension] + + /** + * The value of the mantissa. + *

      + * Once constructed, this may become shared between several BigDecimal + * objects, so must not be altered. + *

      + * For efficiency (speed), this is a byte array, with each byte + * taking a value of 0 -> 9. + *

      + * If the first byte is 0 then the value of the number is zero (and + * mant.length=1, except when constructed from a plain number, for + * example, 0.000). + * + * @serial + */ + //--private byte mant[]; // assumed null + + /** + * The exponent. + *

      + * For fixed point arithmetic, scale is -exp, and can + * apply to zero. + * + * Note that this property can have a value less than MinExp when + * the mantissa has more than one digit. + * + * @serial + */ + //--private int exp; + // assumed 0 + + /* ---------------------------------------------------------------- */ + /* Constructors */ + /* ---------------------------------------------------------------- */ + + /** + * Constructs a BigDecimal object from a + * java.math.BigDecimal. + *

      + * Constructs a BigDecimal as though the parameter had + * been represented as a String (using its + * toString method) and the + * {@link #BigDecimal(java.lang.String)} constructor had then been + * used. + * The parameter must not be null. + *

      + * (Note: this constructor is provided only in the + * com.ibm.icu.math version of the BigDecimal class. + * It would not be present in a java.math version.) + * + * @param bd The BigDecimal to be translated. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.math.BigDecimal bd){ + //-- this(bd.toString()); + //-- return;} + + /** + * Constructs a BigDecimal object from a + * BigInteger, with scale 0. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the BigInteger, with a scale of + * zero. + * The value of the BigDecimal is identical to the value + * of the BigInteger. + * The parameter must not be null. + *

      + * The BigDecimal will contain only decimal digits, + * prefixed with a leading minus sign (hyphen) if the + * BigInteger is negative. A leading zero will be + * present only if the BigInteger is zero. + * + * @param bi The BigInteger to be converted. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.math.BigInteger bi){ + //-- this(bi.toString(10)); + //-- return;} + // exp remains 0 + + /** + * Constructs a BigDecimal object from a + * BigInteger and a scale. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the BigInteger, scaled by the + * second parameter, which may not be negative. + * The value of the BigDecimal is the + * BigInteger divided by ten to the power of the scale. + * The BigInteger parameter must not be + * null. + *

      + * The BigDecimal will contain only decimal digits, (with + * an embedded decimal point followed by scale decimal + * digits if the scale is positive), prefixed with a leading minus + * sign (hyphen) if the BigInteger is negative. A + * leading zero will be present only if the BigInteger is + * zero. + * + * @param bi The BigInteger to be converted. + * @param scale The int specifying the scale. + * @throws NumberFormatException if the scale is negative. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.math.BigInteger bi,int scale){ + //-- this(bi.toString(10)); + //-- if (scale<0) + //-- throw new java.lang.NumberFormatException("Negative scale:"+" "+scale); + //-- exp=(int)-scale; // exponent is -scale + //-- return;} + + /** + * Constructs a BigDecimal object from an array of characters. + *

      + * Constructs a BigDecimal as though a + * String had been constructed from the character array + * and the {@link #BigDecimal(java.lang.String)} constructor had then + * been used. The parameter must not be null. + *

      + * Using this constructor is faster than using the + * BigDecimal(String) constructor if the string is + * already available in character array form. + * + * @param inchars The char[] array containing the number + * to be converted. + * @throws NumberFormatException if the parameter is not a valid + * number. + * @stable ICU 2.0 + */ + + //--public BigDecimal(char inchars[]){ + //-- this(inchars,0,inchars.length); + //-- return;} + + /** + * Constructs a BigDecimal object from an array of characters. + *

      + * Constructs a BigDecimal as though a + * String had been constructed from the character array + * (or a subarray of that array) and the + * {@link #BigDecimal(java.lang.String)} constructor had then been + * used. The first parameter must not be null, and the + * subarray must be wholly contained within it. + *

      + * Using this constructor is faster than using the + * BigDecimal(String) constructor if the string is + * already available within a character array. + * + * @param inchars The char[] array containing the number + * to be converted. + * @param offset The int offset into the array of the + * start of the number to be converted. + * @param length The int length of the number. + * @throws NumberFormatException if the parameter is not a valid + * number for any reason. + * @stable ICU 2.0 + */ + + //--public BigDecimal(char inchars[],int offset,int length){super(); + function BigDecimal() { + //-- members + this.ind = 0; + this.form = MathContext.prototype.PLAIN; + this.mant = null; + this.exp = 0; + + //-- overloaded ctor + if (BigDecimal.arguments.length == 0) + return; + var inchars; + var offset; + var length; + if (BigDecimal.arguments.length == 1) + { + inchars = BigDecimal.arguments[0]; + offset = 0; + length = inchars.length; + } + else + { + inchars = BigDecimal.arguments[0]; + offset = BigDecimal.arguments[1]; + length = BigDecimal.arguments[2]; + } + if (typeof inchars == "string") + { + inchars = inchars.split(""); + } + + //--boolean exotic; + var exotic; + //--boolean hadexp; + var hadexp; + //--int d; + var d; + //--int dotoff; + var dotoff; + //--int last; + var last; + //--int i=0; + var i=0; + //--char si=0; + var si=0; + //--boolean eneg=false; + var eneg=false; + //--int k=0; + var k=0; + //--int elen=0; + var elen=0; + //--int j=0; + var j=0; + //--char sj=0; + var sj=0; + //--int dvalue=0; + var dvalue=0; + //--int mag=0; + var mag=0; + // This is the primary constructor; all incoming strings end up + // here; it uses explicit (inline) parsing for speed and to avoid + // generating intermediate (temporary) objects of any kind. + // 1998.06.25: exponent form built only if E/e in string + // 1998.06.25: trailing zeros not removed for zero + // 1999.03.06: no embedded blanks; allow offset and length + if (length<=0) + this.bad("BigDecimal(): ", inchars); // bad conversion (empty string) + // [bad offset will raise array bounds exception] + + /* Handle and step past sign */ + this.ind=this.ispos; // assume positive + if (inchars[0]==('-')) + { + length--; + if (length==0) + this.bad("BigDecimal(): ", inchars); // nothing after sign + this.ind=this.isneg; + offset++; + } + else + if (inchars[0]==('+')) + { + length--; + if (length==0) + this.bad("BigDecimal(): ", inchars); // nothing after sign + offset++; + } + + /* We're at the start of the number */ + exotic=false; // have extra digits + hadexp=false; // had explicit exponent + d=0; // count of digits found + dotoff=-1; // offset where dot was found + last=-1; // last character of mantissa + {var $1=length;i=offset;i:for(;$1>0;$1--,i++){ + si=inchars[i]; + if (si>='0') // test for Arabic digit + if (si<='9') + { + last=i; + d++; // still in mantissa + continue i; + } + if (si=='.') + { // record and ignore + if (dotoff>=0) + this.bad("BigDecimal(): ", inchars); // two dots + dotoff=i-offset; // offset into mantissa + continue i; + } + if (si!='e') + if (si!='E') + { // expect an extra digit + if (si<'0' || si>'9') + this.bad("BigDecimal(): ", inchars); // not a number + // defer the base 10 check until later to avoid extra method call + exotic=true; // will need conversion later + last=i; + d++; // still in mantissa + continue i; + } + /* Found 'e' or 'E' -- now process explicit exponent */ + // 1998.07.11: sign no longer required + if ((i-offset)>(length-2)) + this.bad("BigDecimal(): ", inchars); // no room for even one digit + eneg=false; + if ((inchars[i+1])==('-')) + { + eneg=true; + k=i+2; + } + else + if ((inchars[i+1])==('+')) + k=i+2; + else + k=i+1; + // k is offset of first expected digit + elen=length-((k-offset)); // possible number of digits + if ((elen==0)||(elen>9)) + this.bad("BigDecimal(): ", inchars); // 0 or more than 9 digits + {var $2=elen;j=k;j:for(;$2>0;$2--,j++){ + sj=inchars[j]; + if (sj<'0') + this.bad("BigDecimal(): ", inchars); // always bad + if (sj>'9') + { // maybe an exotic digit + /*if (si<'0' || si>'9') + this.bad(inchars); // not a number + dvalue=java.lang.Character.digit(sj,10); // check base + if (dvalue<0) + bad(inchars); // not base 10*/ + this.bad("BigDecimal(): ", inchars); + } + else + dvalue=sj-'0'; + this.exp=(this.exp*10)+dvalue; + } + }/*j*/ + if (eneg) + this.exp=-this.exp; // was negative + hadexp=true; // remember we had one + break i; // we are done + } + }/*i*/ + + /* Here when all inspected */ + if (d==0) + this.bad("BigDecimal(): ", inchars); // no mantissa digits + if (dotoff>=0) + this.exp=(this.exp+dotoff)-d; // adjust exponent if had dot + + /* strip leading zeros/dot (leave final if all 0's) */ + {var $3=last-1;i=offset;i:for(;i<=$3;i++){ + si=inchars[i]; + if (si=='0') + { + offset++; + dotoff--; + d--; + } + else + if (si=='.') + { + offset++; // step past dot + dotoff--; + } + else + if (si<='9') + break i;/* non-0 */ + else + {/* exotic */ + //if ((java.lang.Character.digit(si,10))!=0) + break i; // non-0 or bad + // is 0 .. strip like '0' + //offset++; + //dotoff--; + //d--; + } + } + }/*i*/ + + /* Create the mantissa array */ + this.mant=new Array(d); // we know the length + j=offset; // input offset + if (exotic) + {exotica:do{ // slow: check for exotica + {var $4=d;i=0;i:for(;$4>0;$4--,i++){ + if (i==dotoff) + j++; // at dot + sj=inchars[j]; + if (sj<='9') + this.mant[i]=sj-'0';/* easy */ + else + { + //dvalue=java.lang.Character.digit(sj,10); + //if (dvalue<0) + this.bad("BigDecimal(): ", inchars); // not a number after all + //mant[i]=(byte)dvalue; + } + j++; + } + }/*i*/ + }while(false);}/*exotica*/ + else + {simple:do{ + {var $5=d;i=0;i:for(;$5>0;$5--,i++){ + if (i==dotoff) + j++; + this.mant[i]=inchars[j]-'0'; + j++; + } + }/*i*/ + }while(false);}/*simple*/ + + /* Looks good. Set the sign indicator and form, as needed. */ + // Trailing zeros are preserved + // The rule here for form is: + // If no E-notation, then request plain notation + // Otherwise act as though add(0,DEFAULT) and request scientific notation + // [form is already PLAIN] + if (this.mant[0]==0) + { + this.ind=this.iszero; // force to show zero + // negative exponent is significant (e.g., -3 for 0.000) if plain + if (this.exp>0) + this.exp=0; // positive exponent can be ignored + if (hadexp) + { // zero becomes single digit from add + this.mant=this.ZERO.mant; + this.exp=0; + } + } + else + { // non-zero + // [ind was set earlier] + // now determine form + if (hadexp) + { + this.form=MathContext.prototype.SCIENTIFIC; + // 1999.06.29 check for overflow + mag=(this.exp+this.mant.length)-1; // true exponent in scientific notation + if ((magthis.MaxExp)) + this.bad("BigDecimal(): ", inchars); + } + } + // say 'BD(c[]): mant[0] mantlen exp ind form:' mant[0] mant.length exp ind form + return; + } + + /** + * Constructs a BigDecimal object directly from a + * double. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the 64-bit signed binary floating point + * parameter. + *

      + * Note that this constructor it an exact conversion; it does not give + * the same result as converting num to a + * String using the Double.toString() method + * and then using the {@link #BigDecimal(java.lang.String)} + * constructor. + * To get that result, use the static {@link #valueOf(double)} + * method to construct a BigDecimal from a + * double. + * + * @param num The double to be converted. + * @throws NumberFormatException if the parameter is infinite or + * not a number. + * @stable ICU 2.0 + */ + + //--public BigDecimal(double num){ + //-- // 1999.03.06: use exactly the old algorithm + //-- // 2000.01.01: note that this constructor does give an exact result, + //-- // so perhaps it should not be deprecated + //-- // 2000.06.18: no longer deprecated + //-- this((new java.math.BigDecimal(num)).toString()); + //-- return;} + + /** + * Constructs a BigDecimal object directly from a + * int. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the 32-bit signed binary integer parameter. + * The BigDecimal will contain only decimal digits, + * prefixed with a leading minus sign (hyphen) if the parameter is + * negative. + * A leading zero will be present only if the parameter is zero. + * + * @param num The int to be converted. + * @stable ICU 2.0 + */ + + //--public BigDecimal(int num){super(); + //-- int mun; + //-- int i=0; + //-- // We fastpath commoners + //-- if (num<=9) + //-- if (num>=(-9)) + //-- {singledigit:do{ + //-- // very common single digit case + //-- {/*select*/ + //-- if (num==0) + //-- { + //-- mant=ZERO.mant; + //-- ind=iszero; + //-- } + //-- else if (num==1) + //-- { + //-- mant=ONE.mant; + //-- ind=ispos; + //-- } + //-- else if (num==(-1)) + //-- { + //-- mant=ONE.mant; + //-- ind=isneg; + //-- } + //-- else{ + //-- { + //-- mant=new byte[1]; + //-- if (num>0) + //-- { + //-- mant[0]=(byte)num; + //-- ind=ispos; + //-- } + //-- else + //-- { // num<-1 + //-- mant[0]=(byte)((int)-num); + //-- ind=isneg; + //-- } + //-- } + //-- } + //-- } + //-- return; + //-- }while(false);}/*singledigit*/ + //-- + //-- /* We work on negative numbers so we handle the most negative number */ + //-- if (num>0) + //-- { + //-- ind=ispos; + //-- num=(int)-num; + //-- } + //-- else + //-- ind=isneg;/* negative */ // [0 case already handled] + //-- // [it is quicker, here, to pre-calculate the length with + //-- // one loop, then allocate exactly the right length of byte array, + //-- // then re-fill it with another loop] + //-- mun=num; // working copy + //-- {i=9;i:for(;;i--){ + //-- mun=mun/10; + //-- if (mun==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- // i is the position of the leftmost digit placed + //-- mant=new byte[10-i]; + //-- {i=(10-i)-1;i:for(;;i--){ + //-- mant[i]=(byte)-(((byte)(num%10))); + //-- num=num/10; + //-- if (num==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- return; + //-- } + + /** + * Constructs a BigDecimal object directly from a + * long. + *

      + * Constructs a BigDecimal which is the exact decimal + * representation of the 64-bit signed binary integer parameter. + * The BigDecimal will contain only decimal digits, + * prefixed with a leading minus sign (hyphen) if the parameter is + * negative. + * A leading zero will be present only if the parameter is zero. + * + * @param num The long to be converted. + * @stable ICU 2.0 + */ + + //--public BigDecimal(long num){super(); + //-- long mun; + //-- int i=0; + //-- // Not really worth fastpathing commoners in this constructor [also, + //-- // we use this to construct the static constants]. + //-- // This is much faster than: this(String.valueOf(num).toCharArray()) + //-- /* We work on negative num so we handle the most negative number */ + //-- if (num>0) + //-- { + //-- ind=ispos; + //-- num=(long)-num; + //-- } + //-- else + //-- if (num==0) + //-- ind=iszero; + //-- else + //-- ind=isneg;/* negative */ + //-- mun=num; + //-- {i=18;i:for(;;i--){ + //-- mun=mun/10; + //-- if (mun==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- // i is the position of the leftmost digit placed + //-- mant=new byte[19-i]; + //-- {i=(19-i)-1;i:for(;;i--){ + //-- mant[i]=(byte)-(((byte)(num%10))); + //-- num=num/10; + //-- if (num==0) + //-- break i; + //-- } + //-- }/*i*/ + //-- return; + //-- } + + /** + * Constructs a BigDecimal object from a String. + *

      + * Constructs a BigDecimal from the parameter, which must + * not be null and must represent a valid number, + * as described formally in the documentation referred to + * {@link BigDecimal above}. + *

      + * In summary, numbers in String form must have at least + * one digit, may have a leading sign, may have a decimal point, and + * exponential notation may be used. They follow conventional syntax, + * and may not contain blanks. + *

      + * Some valid strings from which a BigDecimal might + * be constructed are: + *

      +  *       "0"         -- Zero
      +  *      "12"         -- A whole number
      +  *     "-76"         -- A signed whole number
      +  *      "12.70"      -- Some decimal places
      +  *     "+0.003"      -- Plus sign is allowed
      +  *      "17."        -- The same as 17
      +  *        ".5"       -- The same as 0.5
      +  *      "4E+9"       -- Exponential notation
      +  *       "0.73e-7"   -- Exponential notation
      +  * 
      + *

      + * (Exponential notation means that the number includes an optional + * sign and a power of ten following an 'E' that + * indicates how the decimal point will be shifted. Thus the + * "4E+9" above is just a short way of writing + * 4000000000, and the "0.73e-7" is short + * for 0.000000073.) + *

      + * The BigDecimal constructed from the String is in a + * standard form, with no blanks, as though the + * {@link #add(BigDecimal)} method had been used to add zero to the + * number with unlimited precision. + * If the string uses exponential notation (that is, includes an + * e or an E), then the + * BigDecimal number will be expressed in scientific + * notation (where the power of ten is adjusted so there is a single + * non-zero digit to the left of the decimal point); in this case if + * the number is zero then it will be expressed as the single digit 0, + * and if non-zero it will have an exponent unless that exponent would + * be 0. The exponent must fit in nine digits both before and after it + * is expressed in scientific notation. + *

      + * Any digits in the parameter must be decimal; that is, + * Character.digit(c, 10) (where c is the + * character in question) would not return -1. + * + * @param string The String to be converted. + * @throws NumberFormatException if the parameter is not a valid + * number. + * @stable ICU 2.0 + */ + + //--public BigDecimal(java.lang.String string){ + //-- this(string.toCharArray(),0,string.length()); + //-- return;} + + /* Make a default BigDecimal object for local use. */ + + //--private BigDecimal(){super(); + //-- return; + //-- } + + /* ---------------------------------------------------------------- */ + /* Operator methods [methods which take a context parameter] */ + /* ---------------------------------------------------------------- */ + + /** + * Returns a plain BigDecimal whose value is the absolute + * value of this BigDecimal. + *

      + * The same as {@link #abs(MathContext)}, where the context is + * new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will + * be this.scale() + * + * @return A BigDecimal whose value is the absolute + * value of this BigDecimal. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal abs(){ + //- return this.abs(plainMC); + //- } + + /** + * Returns a BigDecimal whose value is the absolute value + * of this BigDecimal. + *

      + * If the current object is zero or positive, then the same result as + * invoking the {@link #plus(MathContext)} method with the same + * parameter is returned. + * Otherwise, the same result as invoking the + * {@link #negate(MathContext)} method with the same parameter is + * returned. + * + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is the absolute + * value of this BigDecimal. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal abs(com.ibm.icu.math.MathContext set){ + function abs() { + var set; + if (abs.arguments.length == 1) + { + set = abs.arguments[0]; + } + else if (abs.arguments.length == 0) + { + set = this.plainMC; + } + else + { + throw "abs(): " + abs.arguments.length + " arguments given; expected 0 or 1"; + } + if (this.ind==this.isneg) + return this.negate(set); + return this.plus(set); + } + + /** + * Returns a plain BigDecimal whose value is + * this+rhs, using fixed point arithmetic. + *

      + * The same as {@link #add(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * the maximum of the scales of the two operands. + * + * @param rhs The BigDecimal for the right hand side of + * the addition. + * @return A BigDecimal whose value is + * this+rhs, using fixed point arithmetic. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.add(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is this+rhs. + *

      + * Implements the addition (+) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the addition. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this+rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function add() { + var set; + if (add.arguments.length == 2) + { + set = add.arguments[1]; + } + else if (add.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "add(): " + add.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = add.arguments[0]; + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int reqdig; + var reqdig; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--byte usel[]; + var usel; + //--int usellen; + var usellen; + //--byte user[]; + var user; + //--int userlen; + var userlen; + //--int newlen=0; + var newlen=0; + //--int tlen=0; + var tlen=0; + //--int mult=0; + var mult=0; + //--byte t[]=null; + var t=null; + //--int ia=0; + var ia=0; + //--int ib=0; + var ib=0; + //--int ea=0; + var ea=0; + //int eb=0; + var eb=0; + //byte ca=0; + var ca=0; + //--byte cb=0; + var cb=0; + /* determine requested digits and form */ + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + lhs=this; // name for clarity and proxy + + /* Quick exit for add floating 0 */ + // plus() will optimize to return same object if possible + if (lhs.ind==0) + if (set.form!=MathContext.prototype.PLAIN) + return rhs.plus(set); + if (rhs.ind==0) + if (set.form!=MathContext.prototype.PLAIN) + return lhs.plus(set); + + /* Prepare numbers (round, unless unlimited precision) */ + reqdig=set.digits; // local copy (heavily used) + if (reqdig>0) + { + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + if (rhs.mant.length>reqdig) + rhs=this.clone(rhs).round(set); + // [we could reuse the new LHS for result in this case] + } + + res=new BigDecimal(); // build result here + + /* Now see how much we have to pad or truncate lhs or rhs in order + to align the numbers. If one number is much larger than the + other, then the smaller cannot affect the answer [but we may + still need to pad with up to DIGITS trailing zeros]. */ + // Note sign may be 0 if digits (reqdig) is 0 + // usel and user will be the byte arrays passed to the adder; we'll + // use them on all paths except quick exits + usel=lhs.mant; + usellen=lhs.mant.length; + user=rhs.mant; + userlen=rhs.mant.length; + {padder:do{/*select*/ + if (lhs.exp==rhs.exp) + {/* no padding needed */ + // This is the most common, and fastest, path + res.exp=lhs.exp; + } + else if (lhs.exp>rhs.exp) + { // need to pad lhs and/or truncate rhs + newlen=(usellen+lhs.exp)-rhs.exp; + /* If, after pad, lhs would be longer than rhs by digits+1 or + more (and digits>0) then rhs cannot affect answer, so we only + need to pad up to a length of DIGITS+1. */ + if (newlen>=((userlen+reqdig)+1)) + if (reqdig>0) + { + // LHS is sufficient + res.mant=usel; + res.exp=lhs.exp; + res.ind=lhs.ind; + if (usellen(reqdig+1)) + if (reqdig>0) + { + // LHS will be max; RHS truncated + tlen=(newlen-reqdig)-1; // truncation length + userlen=userlen-tlen; + res.exp=res.exp+tlen; + newlen=reqdig+1; + } + if (newlen>usellen) + usellen=newlen; // need to pad LHS + } + else{ // need to pad rhs and/or truncate lhs + newlen=(userlen+rhs.exp)-lhs.exp; + if (newlen>=((usellen+reqdig)+1)) + if (reqdig>0) + { + // RHS is sufficient + res.mant=user; + res.exp=rhs.exp; + res.ind=rhs.ind; + if (userlen(reqdig+1)) + if (reqdig>0) + { + // RHS will be max; LHS truncated + tlen=(newlen-reqdig)-1; // truncation length + usellen=usellen-tlen; + res.exp=res.exp+tlen; + newlen=reqdig+1; + } + if (newlen>userlen) + userlen=newlen; // need to pad RHS + } + }while(false);}/*padder*/ + + /* OK, we have aligned mantissas. Now add or subtract. */ + // 1998.06.27 Sign may now be 0 [e.g., 0.000] .. treat as positive + // 1999.05.27 Allow for 00 on lhs [is not larger than 2 on rhs] + // 1999.07.10 Allow for 00 on rhs [is not larger than 2 on rhs] + if (lhs.ind==this.iszero) + res.ind=this.ispos; + else + res.ind=lhs.ind; // likely sign, all paths + if (((lhs.ind==this.isneg)?1:0)==((rhs.ind==this.isneg)?1:0)) // same sign, 0 non-negative + mult=1; + else + {signdiff:do{ // different signs, so subtraction is needed + mult=-1; // will cause subtract + /* Before we can subtract we must determine which is the larger, + as our add/subtract routine only handles non-negative results + so we may need to swap the operands. */ + {swaptest:do{/*select*/ + if (rhs.ind==this.iszero) + {} // original A bigger + else if ((usellenuserlen) + {} // original A bigger + else{ + {/* logical lengths the same */ // need compare + /* may still need to swap: compare the strings */ + ia=0; + ib=0; + ea=usel.length-1; + eb=user.length-1; + {compare:for(;;){ + if (ia<=ea) + ca=usel[ia]; + else + { + if (ib>eb) + {/* identical */ + if (set.form!=MathContext.prototype.PLAIN) + return this.ZERO; + // [if PLAIN we must do the subtract, in case of 0.000 results] + break compare; + } + ca=0; + } + if (ib<=eb) + cb=user[ib]; + else + cb=0; + if (ca!=cb) + { + if (ca B if subtracting */ + // add [A+B*1] or subtract [A+(B*-1)] + res.mant=this.byteaddsub(usel,usellen,user,userlen,mult,false); + // [reuse possible only after chop; accounting makes not worthwhile] + + // Finish() rounds before stripping leading 0's, then sets form, etc. + return res.finish(set,false); + } + + /** + * Compares this BigDecimal to another, using unlimited + * precision. + *

      + * The same as {@link #compareTo(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @return An int whose value is -1, 0, or 1 as + * this is numerically less than, equal to, + * or greater than rhs. + * @see #compareTo(Object) + * @stable ICU 2.0 + */ + + //--public int compareTo(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.compareTo(rhs,plainMC); + //-- } + + /** + * Compares this BigDecimal to another. + *

      + * Implements numeric comparison, + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns a result of type int. + *

      + * The result will be: + * + * + * + * + * + * + * + * + * + *
      -1if the current object is less than the first parameter
      0if the current object is equal to the first parameter
      1if the current object is greater than the first parameter.
      + *

      + * A {@link #compareTo(Object)} method is also provided. + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @param set The MathContext arithmetic settings. + * @return An int whose value is -1, 0, or 1 as + * this is numerically less than, equal to, + * or greater than rhs. + * @see #compareTo(Object) + * @stable ICU 2.0 + */ + + //public int compareTo(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function compareTo() { + var set; + if (compareTo.arguments.length == 2) + { + set = compareTo.arguments[1]; + } + else if (compareTo.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "compareTo(): " + compareTo.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = compareTo.arguments[0]; + //--int thislength=0; + var thislength=0; + //--int i=0; + var i=0; + //--com.ibm.icu.math.BigDecimal newrhs; + var newrhs; + // rhs=null will raise NullPointerException, as per Comparable interface + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + // [add will recheck in slowpath cases .. but would report -rhs] + if ((this.ind==rhs.ind)&&(this.exp==rhs.exp)) + { + /* sign & exponent the same [very common] */ + thislength=this.mant.length; + if (thislengthrhs.mant.length) + return this.ind; + /* lengths are the same; we can do a straight mantissa compare + unless maybe rounding [rounding is very unusual] */ + if ((thislength<=set.digits)||(set.digits==0)) + { + {var $6=thislength;i=0;i:for(;$6>0;$6--,i++){ + if (this.mant[i]rhs.mant[i]) + return this.ind; + } + }/*i*/ + return 0; // identical + } + /* drop through for full comparison */ + } + else + { + /* More fastpaths possible */ + if (this.indrhs.ind) + return 1; + } + /* carry out a subtract to make the comparison */ + newrhs=this.clone(rhs); // safe copy + newrhs.ind=-newrhs.ind; // prepare to subtract + return this.add(newrhs,set).ind; // add, and return sign of result + } + + /** + * Returns a plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic. + *

      + * The same as {@link #divide(BigDecimal, int)}, + * where the BigDecimal is rhs, + * and the rounding mode is {@link MathContext#ROUND_HALF_UP}. + * + * The length of the decimal part (the scale) of the result will be + * the same as the scale of the current object, if the latter were + * formatted without exponential notation. + * + * @param rhs The BigDecimal for the right hand side of + * the division. + * @return A plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.dodivide('D',rhs,plainMC,-1); + //-- } + + /** + * Returns a plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic and a + * rounding mode. + *

      + * The same as {@link #divide(BigDecimal, int, int)}, + * where the BigDecimal is rhs, + * and the second parameter is this.scale(), and + * the third is round. + *

      + * The length of the decimal part (the scale) of the result will + * therefore be the same as the scale of the current object, if the + * latter were formatted without exponential notation. + *

      + * @param rhs The BigDecimal for the right hand side of + * the division. + * @param round The int rounding mode to be used for + * the division (see the {@link MathContext} class). + * @return A plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic + * and the specified rounding mode. + * @throws IllegalArgumentException if round is not a + * valid rounding mode. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if round is {@link + * MathContext#ROUND_UNNECESSARY} and + * this.scale() is insufficient to + * represent the result exactly. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int round){ + //-- com.ibm.icu.math.MathContext set; + //-- set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round, too] + //-- return this.dodivide('D',rhs,set,-1); // take scale from LHS + //-- } + + /** + * Returns a plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic and a + * given scale and rounding mode. + *

      + * The same as {@link #divide(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * new MathContext(0, MathContext.PLAIN, false, round), + * except that the length of the decimal part (the scale) to be used + * for the result is explicit rather than being taken from + * this. + *

      + * The length of the decimal part (the scale) of the result will be + * the same as the scale of the current object, if the latter were + * formatted without exponential notation. + *

      + * @param rhs The BigDecimal for the right hand side of + * the division. + * @param scale The int scale to be used for the result. + * @param round The int rounding mode to be used for + * the division (see the {@link MathContext} class). + * @return A plain BigDecimal whose value is + * this/rhs, using fixed point arithmetic + * and the specified rounding mode. + * @throws IllegalArgumentException if round is not a + * valid rounding mode. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if scale is negative. + * @throws ArithmeticException if round is {@link + * MathContext#ROUND_UNNECESSARY} and scale + * is insufficient to represent the result exactly. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int scale,int round){ + //-- com.ibm.icu.math.MathContext set; + //-- if (scale<0) + //-- throw new java.lang.ArithmeticException("Negative scale:"+" "+scale); + //-- set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round] + //-- return this.dodivide('D',rhs,set,scale); + //-- } + + /** + * Returns a BigDecimal whose value is this/rhs. + *

      + * Implements the division (/) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the division. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this/rhs. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function divide() { + var set; + var scale = -1; + if (divide.arguments.length == 2) + { + if (typeof divide.arguments[1] == 'number') + { + set=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[1]); // [checks round, too] + } + else + { + set = divide.arguments[1]; + } + } + else if (divide.arguments.length == 3) + { + scale = divide.arguments[1]; + if (scale<0) + throw "divide(): Negative scale: "+scale; + set=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[2]); // [checks round] + } + else if (divide.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "divide(): " + divide.arguments.length + " arguments given; expected between 1 and 3"; + } + var rhs = divide.arguments[0]; + return this.dodivide('D',rhs,set,scale); + } + + /** + * Returns a plain BigDecimal whose value is the integer + * part of this/rhs. + *

      + * The same as {@link #divideInteger(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the integer division. + * @return A BigDecimal whose value is the integer + * part of this/rhs. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs){ + //-- // scale 0 to drop .000 when plain + //-- return this.dodivide('I',rhs,plainMC,0); + //-- } + + /** + * Returns a BigDecimal whose value is the integer + * part of this/rhs. + *

      + * Implements the integer division operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the integer division. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is the integer + * part of this/rhs. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if the result will not fit in the + * number of digits specified for the context. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function divideInteger() { + var set; + if (divideInteger.arguments.length == 2) + { + set = divideInteger.arguments[1]; + } + else if (divideInteger.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "divideInteger(): " + divideInteger.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = divideInteger.arguments[0]; + // scale 0 to drop .000 when plain + return this.dodivide('I',rhs,set,0); + } + + /** + * Returns a plain BigDecimal whose value is + * the maximum of this and rhs. + *

      + * The same as {@link #max(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @return A BigDecimal whose value is + * the maximum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.max(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is + * the maximum of this and rhs. + *

      + * Returns the larger of the current object and the first parameter. + *

      + * If calling the {@link #compareTo(BigDecimal, MathContext)} method + * with the same parameters would return 1 or + * 0, then the result of calling the + * {@link #plus(MathContext)} method on the current object (using the + * same MathContext parameter) is returned. + * Otherwise, the result of calling the {@link #plus(MathContext)} + * method on the first parameter object (using the same + * MathContext parameter) is returned. + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * the maximum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function max() { + var set; + if (max.arguments.length == 2) + { + set = max.arguments[1]; + } + else if (max.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "max(): " + max.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = max.arguments[0]; + if ((this.compareTo(rhs,set))>=0) + return this.plus(set); + else + return rhs.plus(set); + } + + /** + * Returns a plain BigDecimal whose value is + * the minimum of this and rhs. + *

      + * The same as {@link #min(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @return A BigDecimal whose value is + * the minimum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.min(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is + * the minimum of this and rhs. + *

      + * Returns the smaller of the current object and the first parameter. + *

      + * If calling the {@link #compareTo(BigDecimal, MathContext)} method + * with the same parameters would return -1 or + * 0, then the result of calling the + * {@link #plus(MathContext)} method on the current object (using the + * same MathContext parameter) is returned. + * Otherwise, the result of calling the {@link #plus(MathContext)} + * method on the first parameter object (using the same + * MathContext parameter) is returned. + * + * @param rhs The BigDecimal for the right hand side of + * the comparison. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * the minimum of this and rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function min() { + var set; + if (min.arguments.length == 2) + { + set = min.arguments[1]; + } + else if (min.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "min(): " + min.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = min.arguments[0]; + if ((this.compareTo(rhs,set))<=0) + return this.plus(set); + else + return rhs.plus(set); + } + + /** + * Returns a plain BigDecimal whose value is + * this*rhs, using fixed point arithmetic. + *

      + * The same as {@link #add(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * the sum of the scales of the operands, if they were formatted + * without exponential notation. + * + * @param rhs The BigDecimal for the right hand side of + * the multiplication. + * @return A BigDecimal whose value is + * this*rhs, using fixed point arithmetic. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.multiply(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is this*rhs. + *

      + * Implements the multiplication (*) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the multiplication. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this*rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function multiply() { + var set; + if (multiply.arguments.length == 2) + { + set = multiply.arguments[1]; + } + else if (multiply.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "multiply(): " + multiply.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = multiply.arguments[0]; + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int padding; + var padding; + //--int reqdig; + var reqdig; + //--byte multer[]=null; + var multer=null; + //--byte multand[]=null; + var multand=null; + //--int multandlen; + var multandlen; + //--int acclen=0; + var acclen=0; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--byte acc[]; + var acc; + //--int n=0; + var n=0; + //--byte mult=0; + var mult=0; + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + lhs=this; // name for clarity and proxy + + /* Prepare numbers (truncate, unless unlimited precision) */ + padding=0; // trailing 0's to add + reqdig=set.digits; // local copy + if (reqdig>0) + { + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + if (rhs.mant.length>reqdig) + rhs=this.clone(rhs).round(set); + // [we could reuse the new LHS for result in this case] + } + else + {/* unlimited */ + // fixed point arithmetic will want every trailing 0; we add these + // after the calculation rather than before, for speed. + if (lhs.exp>0) + padding=padding+lhs.exp; + if (rhs.exp>0) + padding=padding+rhs.exp; + } + + // For best speed, as in DMSRCN, we use the shorter number as the + // multiplier and the longer as the multiplicand. + // 1999.12.22: We used to special case when the result would fit in + // a long, but with Java 1.3 this gave no advantage. + if (lhs.mant.length9) + acclen=multandlen+1; + else + acclen=multandlen; + + /* Now the main long multiplication loop */ + res=new BigDecimal(); // where we'll build result + acc=this.createArrayWithZeros(acclen); // accumulator, all zeros + // 1998.07.01: calculate from left to right so that accumulator goes + // to likely final length on first addition; this avoids a one-digit + // extension (and object allocation) each time around the loop. + // Initial number therefore has virtual zeros added to right. + {var $7=multer.length;n=0;n:for(;$7>0;$7--,n++){ + mult=multer[n]; + if (mult!=0) + { // [optimization] + // accumulate [accumulator is reusable array] + acc=this.byteaddsub(acc,acc.length,multand,multandlen,mult,true); + } + // divide multiplicand by 10 for next digit to right + multandlen--; // 'virtual length' + } + }/*n*/ + + res.ind=lhs.ind*rhs.ind; // final sign + res.exp=(lhs.exp+rhs.exp)-padding; // final exponent + // [overflow is checked by finish] + + /* add trailing zeros to the result, if necessary */ + if (padding==0) + res.mant=acc; + else + res.mant=this.extend(acc,acc.length+padding); // add trailing 0s + return res.finish(set,false); + } + + /** + * Returns a plain BigDecimal whose value is + * -this. + *

      + * The same as {@link #negate(MathContext)}, where the context is + * new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * be this.scale() + * + * + * @return A BigDecimal whose value is + * -this. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal negate(){ + //-- return this.negate(plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is -this. + *

      + * Implements the negation (Prefix -) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * -this. + * @stable ICU 2.0 + */ + + //public com.ibm.icu.math.BigDecimal negate(com.ibm.icu.math.MathContext set){ + function negate() { + var set; + if (negate.arguments.length == 1) + { + set = negate.arguments[0]; + } + else if (negate.arguments.length == 0) + { + set = this.plainMC; + } + else + { + throw "negate(): " + negate.arguments.length + " arguments given; expected 0 or 1"; + } + //--com.ibm.icu.math.BigDecimal res; + var res; + // Originally called minus(), changed to matched Java precedents + // This simply clones, flips the sign, and possibly rounds + if (set.lostDigits) + this.checkdigits(null,set.digits); + res=this.clone(this); // safe copy + res.ind=-res.ind; + return res.finish(set,false); + } + + /** + * Returns a plain BigDecimal whose value is + * +this. + * Note that this is not necessarily a + * plain BigDecimal, but the result will always be. + *

      + * The same as {@link #plus(MathContext)}, where the context is + * new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * be this.scale() + * + * @return A BigDecimal whose value is + * +this. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal plus(){ + //-- return this.plus(plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is + * +this. + *

      + * Implements the plus (Prefix +) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + *

      + * This method is useful for rounding or otherwise applying a context + * to a decimal value. + * + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * +this. + * @stable ICU 2.0 + */ + + //public com.ibm.icu.math.BigDecimal plus(com.ibm.icu.math.MathContext set){ + function plus() { + var set; + if (plus.arguments.length == 1) + { + set = plus.arguments[0]; + } + else if (plus.arguments.length == 0) + { + set = this.plainMC; + } + else + { + throw "plus(): " + plus.arguments.length + " arguments given; expected 0 or 1"; + } + // This clones and forces the result to the new settings + // May return same object + if (set.lostDigits) + this.checkdigits(null,set.digits); + // Optimization: returns same object for some common cases + if (set.form==MathContext.prototype.PLAIN) + if (this.form==MathContext.prototype.PLAIN) + { + if (this.mant.length<=set.digits) + return this; + if (set.digits==0) + return this; + } + return this.clone(this).finish(set,false); + } + + /** + * Returns a plain BigDecimal whose value is + * this**rhs, using fixed point arithmetic. + *

      + * The same as {@link #pow(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The parameter is the power to which the this will be + * raised; it must be in the range 0 through 999999999, and must + * have a decimal part of zero. Note that these restrictions may be + * removed in the future, so they should not be used as a test for a + * whole number. + *

      + * In addition, the power must not be negative, as no + * MathContext is used and so the result would then + * always be 0. + * + * @param rhs The BigDecimal for the right hand side of + * the operation (the power). + * @return A BigDecimal whose value is + * this**rhs, using fixed point arithmetic. + * @throws ArithmeticException if rhs is out of range or + * is not a whole number. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.pow(rhs,plainMC); + //-- } + // The name for this method is inherited from the precedent set by the + // BigInteger and Math classes. + + /** + * Returns a BigDecimal whose value is this**rhs. + *

      + * Implements the power (**) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + *

      + * The first parameter is the power to which the this + * will be raised; it must be in the range -999999999 through + * 999999999, and must have a decimal part of zero. Note that these + * restrictions may be removed in the future, so they should not be + * used as a test for a whole number. + *

      + * If the digits setting of the MathContext + * parameter is 0, the power must be zero or positive. + * + * @param rhs The BigDecimal for the right hand side of + * the operation (the power). + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this**rhs. + * @throws ArithmeticException if rhs is out of range or + * is not a whole number. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function pow() { + var set; + if (pow.arguments.length == 2) + { + set = pow.arguments[1]; + } + else if (pow.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "pow(): " + pow.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = pow.arguments[0]; + //--int n; + var n; + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int reqdig; + var reqdig; + //-- int workdigits=0; + var workdigits=0; + //--int L=0; + var L=0; + //--com.ibm.icu.math.MathContext workset; + var workset; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--boolean seenbit; + var seenbit; + //--int i=0; + var i=0; + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + n=rhs.intcheck(this.MinArg,this.MaxArg); // check RHS by the rules + lhs=this; // clarified name + + reqdig=set.digits; // local copy (heavily used) + if (reqdig==0) + { + if (rhs.ind==this.isneg) + //--throw new java.lang.ArithmeticException("Negative power:"+" "+rhs.toString()); + throw "pow(): Negative power: " + rhs.toString(); + workdigits=0; + } + else + {/* non-0 digits */ + if ((rhs.mant.length+rhs.exp)>reqdig) + //--throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString()); + throw "pow(): Too many digits: " + rhs.toString(); + + /* Round the lhs to DIGITS if need be */ + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + + /* L for precision calculation [see ANSI X3.274-1996] */ + L=rhs.mant.length+rhs.exp; // length without decimal zeros/exp + workdigits=(reqdig+L)+1; // calculate the working DIGITS + } + + /* Create a copy of set for working settings */ + // Note: no need to check for lostDigits again. + // 1999.07.17 Note: this construction must follow RHS check + workset=new MathContext(workdigits,set.form,false,set.roundingMode); + + res=this.ONE; // accumulator + if (n==0) + return res; // x**0 == 1 + if (n<0) + n=-n; // [rhs.ind records the sign] + seenbit=false; // set once we've seen a 1-bit + {i=1;i:for(;;i++){ // for each bit [top bit ignored] + //n=n+n; // shift left 1 bit + n<<=1; + if (n<0) + { // top bit is set + seenbit=true; // OK, we're off + res=res.multiply(lhs,workset); // acc=acc*x + } + if (i==31) + break i; // that was the last bit + if ((!seenbit)) + continue i; // we don't have to square 1 + res=res.multiply(res,workset); // acc=acc*acc [square] + } + }/*i*/ // 32 bits + if (rhs.ind<0) // was a **-n [hence digits>0] + res=this.ONE.divide(res,workset); // .. so acc=1/acc + return res.finish(set,true); // round and strip [original digits] + } + + /** + * Returns a plain BigDecimal whose value is + * the remainder of this/rhs, using fixed point arithmetic. + *

      + * The same as {@link #remainder(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * This is not the modulo operator -- the result may be negative. + * + * @param rhs The BigDecimal for the right hand side of + * the remainder operation. + * @return A BigDecimal whose value is the remainder + * of this/rhs, using fixed point arithmetic. + * @throws ArithmeticException if rhs is zero. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.dodivide('R',rhs,plainMC,-1); + //-- } + + /** + * Returns a BigDecimal whose value is the remainder of + * this/rhs. + *

      + * Implements the remainder operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + *

      + * This is not the modulo operator -- the result may be negative. + * + * @param rhs The BigDecimal for the right hand side of + * the remainder operation. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is the remainder + * of this+rhs. + * @throws ArithmeticException if rhs is zero. + * @throws ArithmeticException if the integer part of the result will + * not fit in the number of digits specified for the + * context. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function remainder() { + var set; + if (remainder.arguments.length == 2) + { + set = remainder.arguments[1]; + } + else if (remainder.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "remainder(): " + remainder.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = remainder.arguments[0]; + return this.dodivide('R',rhs,set,-1); + } + + /** + * Returns a plain BigDecimal whose value is + * this-rhs, using fixed point arithmetic. + *

      + * The same as {@link #subtract(BigDecimal, MathContext)}, + * where the BigDecimal is rhs, + * and the context is new MathContext(0, MathContext.PLAIN). + *

      + * The length of the decimal part (the scale) of the result will be + * the maximum of the scales of the two operands. + * + * @param rhs The BigDecimal for the right hand side of + * the subtraction. + * @return A BigDecimal whose value is + * this-rhs, using fixed point arithmetic. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs){ + //-- return this.subtract(rhs,plainMC); + //-- } + + /** + * Returns a BigDecimal whose value is this-rhs. + *

      + * Implements the subtraction (-) operator + * (as defined in the decimal documentation, see {@link BigDecimal + * class header}), + * and returns the result as a BigDecimal object. + * + * @param rhs The BigDecimal for the right hand side of + * the subtraction. + * @param set The MathContext arithmetic settings. + * @return A BigDecimal whose value is + * this-rhs. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ + function subtract() { + var set; + if (subtract.arguments.length == 2) + { + set = subtract.arguments[1]; + } + else if (subtract.arguments.length == 1) + { + set = this.plainMC; + } + else + { + throw "subtract(): " + subtract.arguments.length + " arguments given; expected 1 or 2"; + } + var rhs = subtract.arguments[0]; + //--com.ibm.icu.math.BigDecimal newrhs; + var newrhs; + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + // [add will recheck .. but would report -rhs] + /* carry out the subtraction */ + // we could fastpath -0, but it is too rare. + newrhs=this.clone(rhs); // safe copy + newrhs.ind=-newrhs.ind; // prepare to subtract + return this.add(newrhs,set); // arithmetic + } + + /* ---------------------------------------------------------------- */ + /* Other methods */ + /* ---------------------------------------------------------------- */ + + /** + * Converts this BigDecimal to a byte. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for a byte (8-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return A byte equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in a byte. + * @stable ICU 2.0 + */ + + //--public byte byteValueExact(){ + //-- int num; + //-- num=this.intValueExact(); // will check decimal part too + //-- if ((num>127)|(num<(-128))) + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- return (byte)num; + //-- } + + /** + * Compares this BigDecimal with the value of the parameter. + *

      + * If the parameter is null, or is not an instance of the + * BigDecimal type, an exception is thrown. + * Otherwise, the parameter is cast to type BigDecimal + * and the result of the {@link #compareTo(BigDecimal)} method, + * using the cast parameter, is returned. + *

      + * The {@link #compareTo(BigDecimal, MathContext)} method should be + * used when a MathContext is needed for the comparison. + * + * @param rhs The Object for the right hand side of + * the comparison. + * @return An int whose value is -1, 0, or 1 as + * this is numerically less than, equal to, + * or greater than rhs. + * @throws ClassCastException if rhs cannot be cast to + * a BigDecimal object. + * @see #compareTo(BigDecimal) + * @stable ICU 2.0 + */ + + //--public int compareTo(java.lang.Object rhsobj){ + //-- // the cast in the next line will raise ClassCastException if necessary + //-- return compareTo((com.ibm.icu.math.BigDecimal)rhsobj,plainMC); + //-- } + + /** + * Converts this BigDecimal to a double. + * If the BigDecimal is out of the possible range for a + * double (64-bit signed floating point) result then an + * ArithmeticException is thrown. + *

      + * The double produced is identical to result of expressing the + * BigDecimal as a String and then + * converting it using the Double(String) constructor; + * this can result in values of Double.NEGATIVE_INFINITY + * or Double.POSITIVE_INFINITY. + * + * @return A double corresponding to this. + * @stable ICU 2.0 + */ + + //--public double doubleValue(){ + //-- // We go via a String [as does BigDecimal in JDK 1.2] + //-- // Next line could possibly raise NumberFormatException + //-- return java.lang.Double.valueOf(this.toString()).doubleValue(); + //-- } + + /** + * Compares this BigDecimal with rhs for + * equality. + *

      + * If the parameter is null, or is not an instance of the + * BigDecimal type, or is not exactly equal to the current + * BigDecimal object, then false is returned. + * Otherwise, true is returned. + *

      + * "Exactly equal", here, means that the String + * representations of the BigDecimal numbers are + * identical (they have the same characters in the same sequence). + *

      + * The {@link #compareTo(BigDecimal, MathContext)} method should be + * used for more general comparisons. + * @param rhs The Object for the right hand side of + * the comparison. + * @return A boolean whose value true if and + * only if the operands have identical string representations. + * @throws ClassCastException if rhs cannot be cast to + * a BigDecimal object. + * @stable ICU 2.0 + * @see #compareTo(Object) + * @see #compareTo(BigDecimal) + * @see #compareTo(BigDecimal, MathContext) + */ + + //--public boolean equals(java.lang.Object obj){ + function equals(obj) { + //--com.ibm.icu.math.BigDecimal rhs; + var rhs; + //--int i=0; + var i=0; + //--char lca[]=null; + var lca=null; + //--char rca[]=null; + var rca=null; + // We are equal iff toString of both are exactly the same + if (obj==null) + return false; // not equal + if ((!(((obj instanceof BigDecimal))))) + return false; // not a decimal + rhs=obj; // cast; we know it will work + if (this.ind!=rhs.ind) + return false; // different signs never match + if (((this.mant.length==rhs.mant.length)&&(this.exp==rhs.exp))&&(this.form==rhs.form)) + + { // mantissas say all + // here with equal-length byte arrays to compare + {var $8=this.mant.length;i=0;i:for(;$8>0;$8--,i++){ + if (this.mant[i]!=rhs.mant[i]) + return false; + } + }/*i*/ + } + else + { // need proper layout + lca=this.layout(); // layout to character array + rca=rhs.layout(); + if (lca.length!=rca.length) + return false; // mismatch + // here with equal-length character arrays to compare + {var $9=lca.length;i=0;i:for(;$9>0;$9--,i++){ + if (lca[i]!=rca[i]) + return false; + } + }/*i*/ + } + return true; // arrays have identical content + } + + /** + * Converts this BigDecimal to a float. + * If the BigDecimal is out of the possible range for a + * float (32-bit signed floating point) result then an + * ArithmeticException is thrown. + *

      + * The float produced is identical to result of expressing the + * BigDecimal as a String and then + * converting it using the Float(String) constructor; + * this can result in values of Float.NEGATIVE_INFINITY + * or Float.POSITIVE_INFINITY. + * + * @return A float corresponding to this. + * @stable ICU 2.0 + */ + + //--public float floatValue(){ + //-- return java.lang.Float.valueOf(this.toString()).floatValue(); + //-- } + + /** + * Returns the String representation of this + * BigDecimal, modified by layout parameters. + *

      + * This method is provided as a primitive for use by more + * sophisticated classes, such as DecimalFormat, that + * can apply locale-sensitive editing of the result. The level of + * formatting that it provides is a necessary part of the BigDecimal + * class as it is sensitive to and must follow the calculation and + * rounding rules for BigDecimal arithmetic. + * However, if the function is provided elsewhere, it may be removed + * from this class. + *

      + * The parameters, for both forms of the format method + * are all of type int. + * A value of -1 for any parameter indicates that the default action + * or value for that parameter should be used. + *

      + * The parameters, before and after, + * specify the number of characters to be used for the integer part + * and decimal part of the result respectively. Exponential notation + * is not used. If either parameter is -1 (which indicates the default + * action), the number of characters used will be exactly as many as + * are needed for that part. + *

      + * before must be a positive number; if it is larger than + * is needed to contain the integer part, that part is padded on the + * left with blanks to the requested length. If before is + * not large enough to contain the integer part of the number + * (including the sign, for negative numbers) an exception is thrown. + *

      + * after must be a non-negative number; if it is not the + * same size as the decimal part of the number, the number will be + * rounded (or extended with zeros) to fit. Specifying 0 for + * after will cause the number to be rounded to an + * integer (that is, it will have no decimal part or decimal point). + * The rounding method will be the default, + * MathContext.ROUND_HALF_UP. + *

      + * Other rounding methods, and the use of exponential notation, can + * be selected by using {@link #format(int,int,int,int,int,int)}. + * Using the two-parameter form of the method has exactly the same + * effect as using the six-parameter form with the final four + * parameters all being -1. + * + * @param before The int specifying the number of places + * before the decimal point. Use -1 for 'as many as + * are needed'. + * @param after The int specifying the number of places + * after the decimal point. Use -1 for 'as many as are + * needed'. + * @return A String representing this + * BigDecimal, laid out according to the + * specified parameters + * @throws ArithmeticException if the number cannot be laid out as + * requested. + * @throws IllegalArgumentException if a parameter is out of range. + * @stable ICU 2.0 + * @see #toString + * @see #toCharArray + */ + + //--public java.lang.String format(int before,int after){ + //-- return format(before,after,-1,-1,com.ibm.icu.math.MathContext.SCIENTIFIC,ROUND_HALF_UP); + //-- } + + /** + * Returns the String representation of this + * BigDecimal, modified by layout parameters and allowing + * exponential notation. + *

      + * This method is provided as a primitive for use by more + * sophisticated classes, such as DecimalFormat, that + * can apply locale-sensitive editing of the result. The level of + * formatting that it provides is a necessary part of the BigDecimal + * class as it is sensitive to and must follow the calculation and + * rounding rules for BigDecimal arithmetic. + * However, if the function is provided elsewhere, it may be removed + * from this class. + *

      + * The parameters are all of type int. + * A value of -1 for any parameter indicates that the default action + * or value for that parameter should be used. + *

      + * The first two parameters (before and + * after) specify the number of characters to be used for + * the integer part and decimal part of the result respectively, as + * defined for {@link #format(int,int)}. + * If either of these is -1 (which indicates the default action), the + * number of characters used will be exactly as many as are needed for + * that part. + *

      + * The remaining parameters control the use of exponential notation + * and rounding. Three (explaces, exdigits, + * and exform) control the exponent part of the result. + * As before, the default action for any of these parameters may be + * selected by using the value -1. + *

      + * explaces must be a positive number; it sets the number + * of places (digits after the sign of the exponent) to be used for + * any exponent part, the default (when explaces is -1) + * being to use as many as are needed. + * If explaces is not -1, space is always reserved for + * an exponent; if one is not needed (for example, if the exponent + * will be 0) then explaces+2 blanks are appended to the + * result. + * + * If explaces is not -1 and is not large enough to + * contain the exponent, an exception is thrown. + *

      + * exdigits sets the trigger point for use of exponential + * notation. If, before any rounding, the number of places needed + * before the decimal point exceeds exdigits, or if the + * absolute value of the result is less than 0.000001, + * then exponential form will be used, provided that + * exdigits was specified. + * When exdigits is -1, exponential notation will never + * be used. If 0 is specified for exdigits, exponential + * notation is always used unless the exponent would be 0. + *

      + * exform sets the form for exponential notation (if + * needed). + * It may be either {@link MathContext#SCIENTIFIC} or + * {@link MathContext#ENGINEERING}. + * If the latter, engineering, form is requested, up to three digits + * (plus sign, if negative) may be needed for the integer part of the + * result (before). Otherwise, only one digit (plus + * sign, if negative) is needed. + *

      + * Finally, the sixth argument, exround, selects the + * rounding algorithm to be used, and must be one of the values + * indicated by a public constant in the {@link MathContext} class + * whose name starts with ROUND_. + * The default (ROUND_HALF_UP) may also be selected by + * using the value -1, as before. + *

      + * The special value MathContext.ROUND_UNNECESSARY may be + * used to detect whether non-zero digits are discarded -- if + * exround has this value than if non-zero digits would + * be discarded (rounded) during formatting then an + * ArithmeticException is thrown. + * + * @param before The int specifying the number of places + * before the decimal point. + * Use -1 for 'as many as are needed'. + * @param after The int specifying the number of places + * after the decimal point. + * Use -1 for 'as many as are needed'. + * @param explaces The int specifying the number of places + * to be used for any exponent. + * Use -1 for 'as many as are needed'. + * @param exdigits The int specifying the trigger + * (digits before the decimal point) which if + * exceeded causes exponential notation to be used. + * Use 0 to force exponential notation. + * Use -1 to force plain notation (no exponential + * notation). + * @param exform The int specifying the form of + * exponential notation to be used + * ({@link MathContext#SCIENTIFIC} or + * {@link MathContext#ENGINEERING}). + * @param exround The int specifying the rounding mode + * to use. + * Use -1 for the default, {@link MathContext#ROUND_HALF_UP}. + * @return A String representing this + * BigDecimal, laid out according to the + * specified parameters + * @throws ArithmeticException if the number cannot be laid out as + * requested. + * @throws IllegalArgumentException if a parameter is out of range. + * @see #toString + * @see #toCharArray + * @stable ICU 2.0 + */ + + //--public java.lang.String format(int before,int after,int explaces,int exdigits,int exformint,int exround){ + function format() { + var explaces; + var exdigits; + var exformint; + var exround; + if (format.arguments.length == 6) + { + explaces = format.arguments[2]; + exdigits = format.arguments[3]; + exformint = format.arguments[4]; + exround = format.arguments[5]; + } + else if (format.arguments.length == 2) + { + explaces = -1; + exdigits = -1; + exformint = MathContext.prototype.SCIENTIFIC; + exround = this.ROUND_HALF_UP; + } + else + { + throw "format(): " + format.arguments.length + " arguments given; expected 2 or 6"; + } + var before = format.arguments[0]; + var after = format.arguments[1]; + //--com.ibm.icu.math.BigDecimal num; + var num; + //--int mag=0; + var mag=0; + //--int thisafter=0; + var thisafter=0; + //--int lead=0; + var lead=0; + //--byte newmant[]=null; + var newmant=null; + //--int chop=0; + var chop=0; + //--int need=0; + var need=0; + //--int oldexp=0; + var oldexp=0; + //--char a[]; + var a; + //--int p=0; + var p=0; + //--char newa[]=null; + var newa=null; + //--int i=0; + var i=0; + //--int places=0; + var places=0; + + + /* Check arguments */ + if ((before<(-1))||(before==0)) + this.badarg("format",1,before); + if (after<(-1)) + this.badarg("format",2,after); + if ((explaces<(-1))||(explaces==0)) + this.badarg("format",3,explaces); + if (exdigits<(-1)) + this.badarg("format",4,exdigits); + {/*select*/ + if (exformint==MathContext.prototype.SCIENTIFIC) + {} + else if (exformint==MathContext.prototype.ENGINEERING) + {} + else if (exformint==(-1)) + exformint=MathContext.prototype.SCIENTIFIC; + // note PLAIN isn't allowed + else{ + this.badarg("format",5,exformint); + } + } + // checking the rounding mode is done by trying to construct a + // MathContext object with that mode; it will fail if bad + if (exround!=this.ROUND_HALF_UP) + {try{ // if non-default... + if (exround==(-1)) + exround=this.ROUND_HALF_UP; + else + new MathContext(9,MathContext.prototype.SCIENTIFIC,false,exround); + } + catch ($10){ + this.badarg("format",6,exround); + }} + + num=this.clone(this); // make private copy + + /* Here: + num is BigDecimal to format + before is places before point [>0] + after is places after point [>=0] + explaces is exponent places [>0] + exdigits is exponent digits [>=0] + exformint is exponent form [one of two] + exround is rounding mode [one of eight] + 'before' through 'exdigits' are -1 if not specified + */ + + /* determine form */ + {setform:do{/*select*/ + if (exdigits==(-1)) + num.form=MathContext.prototype.PLAIN; + else if (num.ind==this.iszero) + num.form=MathContext.prototype.PLAIN; + else{ + // determine whether triggers + mag=num.exp+num.mant.length; + if (mag>exdigits) + num.form=exformint; + else + if (mag<(-5)) + num.form=exformint; + else + num.form=MathContext.prototype.PLAIN; + } + }while(false);}/*setform*/ + + /* If 'after' was specified then we may need to adjust the + mantissa. This is a little tricky, as we must conform to the + rules of exponential layout if necessary (e.g., we cannot end up + with 10.0 if scientific). */ + if (after>=0) + {setafter:for(;;){ + // calculate the current after-length + {/*select*/ + if (num.form==MathContext.prototype.PLAIN) + thisafter=-num.exp; // has decimal part + else if (num.form==MathContext.prototype.SCIENTIFIC) + thisafter=num.mant.length-1; + else{ // engineering + lead=(((num.exp+num.mant.length)-1))%3; // exponent to use + if (lead<0) + lead=3+lead; // negative exponent case + lead++; // number of leading digits + if (lead>=num.mant.length) + thisafter=0; + else + thisafter=num.mant.length-lead; + } + } + if (thisafter==after) + break setafter; // we're in luck + if (thisafter0] + if (chop>num.mant.length) + { // all digits go, no chance of carry + // carry on with zero + num.mant=this.ZERO.mant; + num.ind=this.iszero; + num.exp=0; + continue setafter; // recheck: we may need trailing zeros + } + // we have a digit to inspect from existing mantissa + // round the number as required + need=num.mant.length-chop; // digits to end up with [may be 0] + oldexp=num.exp; // save old exponent + num.round(need,exround); + // if the exponent grew by more than the digits we chopped, then + // we must have had a carry, so will need to recheck the layout + if ((num.exp-oldexp)==chop) + break setafter; // number did not have carry + // mantissa got extended .. so go around and check again + } + }/*setafter*/ + + a=num.layout(); // lay out, with exponent if required, etc. + + /* Here we have laid-out number in 'a' */ + // now apply 'before' and 'explaces' as needed + if (before>0) + { + // look for '.' or 'E' + {var $11=a.length;p=0;p:for(;$11>0;$11--,p++){ + if (a[p]=='.') + break p; + if (a[p]=='E') + break p; + } + }/*p*/ + // p is now offset of '.', 'E', or character after end of array + // that is, the current length of before part + if (p>before) + this.badarg("format",1,before); // won't fit + if (p0;$12--,i++){ + newa[i]=' '; + } + }/*i*/ + //--java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,i,a.length); + this.arraycopy(a,0,newa,i,a.length); + a=newa; + } + // [if p=before then it's just the right length] + } + + if (explaces>0) + { + // look for 'E' [cannot be at offset 0] + {var $13=a.length-1;p=a.length-1;p:for(;$13>0;$13--,p--){ + if (a[p]=='E') + break p; + } + }/*p*/ + // p is now offset of 'E', or 0 + if (p==0) + { // no E part; add trailing blanks + newa=new Array((a.length+explaces)+2); + //--java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,a.length); + this.arraycopy(a,0,newa,0,a.length); + {var $14=explaces+2;i=a.length;i:for(;$14>0;$14--,i++){ + newa[i]=' '; + } + }/*i*/ + a=newa; + } + else + {/* found E */ // may need to insert zeros + places=(a.length-p)-2; // number so far + if (places>explaces) + this.badarg("format",3,explaces); + if (places0;$15--,i++){ + newa[i]='0'; + } + }/*i*/ + //--java.lang.System.arraycopy((java.lang.Object)a,p+2,(java.lang.Object)newa,i,places); // remainder of exponent + this.arraycopy(a,p+2,newa,i,places); + a=newa; + } + // [if places=explaces then it's just the right length] + } + } + return a.join(""); + } + + /** + * Returns the hashcode for this BigDecimal. + * This hashcode is suitable for use by the + * java.util.Hashtable class. + *

      + * Note that two BigDecimal objects are only guaranteed + * to produce the same hashcode if they are exactly equal (that is, + * the String representations of the + * BigDecimal numbers are identical -- they have the same + * characters in the same sequence). + * + * @return An int that is the hashcode for this. + * @stable ICU 2.0 + */ + + //--public int hashCode(){ + //-- // Maybe calculate ourselves, later. If so, note that there can be + //-- // more than one internal representation for a given toString() result. + //-- return this.toString().hashCode(); + //-- } + + /** + * Converts this BigDecimal to an int. + * If the BigDecimal has a non-zero decimal part it is + * discarded. If the BigDecimal is out of the possible + * range for an int (32-bit signed integer) result then + * only the low-order 32 bits are used. (That is, the number may be + * decapitated.) To avoid unexpected errors when these + * conditions occur, use the {@link #intValueExact} method. + * + * @return An int converted from this, + * truncated and decapitated if necessary. + * @stable ICU 2.0 + */ + + //--public int intValue(){ + //-- return toBigInteger().intValue(); + //-- } + + /** + * Converts this BigDecimal to an int. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for an int (32-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return An int equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in an + * int. + * @stable ICU 2.0 + */ + + //--public int intValueExact(){ + function intValueExact() { + //--int lodigit; + var lodigit; + //--int useexp=0; + var useexp=0; + //--int result; + var result; + //--int i=0; + var i=0; + //--int topdig=0; + var topdig=0; + // This does not use longValueExact() as the latter can be much + // slower. + // intcheck (from pow) relies on this to check decimal part + if (this.ind==this.iszero) + return 0; // easy, and quite common + /* test and drop any trailing decimal part */ + lodigit=this.mant.length-1; + if (this.exp<0) + { + lodigit=lodigit+this.exp; // reduces by -(-exp) + /* all decimal places must be 0 */ + if ((!(this.allzero(this.mant,lodigit+1)))) + throw "intValueExact(): Decimal part non-zero: " + this.toString(); + if (lodigit<0) + return 0; // -1=0 */ + if ((this.exp+lodigit)>9) // early exit + throw "intValueExact(): Conversion overflow: "+this.toString(); + useexp=this.exp; + } + /* convert the mantissa to binary, inline for speed */ + result=0; + {var $16=lodigit+useexp;i=0;i:for(;i<=$16;i++){ + result=result*10; + if (i<=lodigit) + result=result+this.mant[i]; + } + }/*i*/ + + /* Now, if the risky length, check for overflow */ + if ((lodigit+useexp)==9) + { + // note we cannot just test for -ve result, as overflow can move a + // zero into the top bit [consider 5555555555] + topdig=div(result,1000000000); // get top digit, preserving sign + if (topdig!=this.mant[0]) + { // digit must match and be positive + // except in the special case ... + if (result==-2147483648) // looks like the special + if (this.ind==this.isneg) // really was negative + if (this.mant[0]==2) + return result; // really had top digit 2 + throw "intValueExact(): Conversion overflow: "+this.toString(); + } + } + + /* Looks good */ + if (this.ind==this.ispos) + return result; + return -result; + } + + /** + * Converts this BigDecimal to a long. + * If the BigDecimal has a non-zero decimal part it is + * discarded. If the BigDecimal is out of the possible + * range for a long (64-bit signed integer) result then + * only the low-order 64 bits are used. (That is, the number may be + * decapitated.) To avoid unexpected errors when these + * conditions occur, use the {@link #longValueExact} method. + * + * @return A long converted from this, + * truncated and decapitated if necessary. + * @stable ICU 2.0 + */ + + //--public long longValue(){ + //-- return toBigInteger().longValue(); + //-- } + + /** + * Converts this BigDecimal to a long. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for a long (64-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return A long equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in a + * long. + * @stable ICU 2.0 + */ + + //--public long longValueExact(){ + //-- int lodigit; + //-- int cstart=0; + //-- int useexp=0; + //-- long result; + //-- int i=0; + //-- long topdig=0; + //-- // Identical to intValueExact except for result=long, and exp>=20 test + //-- if (ind==0) + //-- return 0; // easy, and quite common + //-- lodigit=mant.length-1; // last included digit + //-- if (exp<0) + //-- { + //-- lodigit=lodigit+exp; // -(-exp) + //-- /* all decimal places must be 0 */ + //-- if (lodigit<0) + //-- cstart=0; + //-- else + //-- cstart=lodigit+1; + //-- if ((!(allzero(mant,cstart)))) + //-- throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString()); + //-- if (lodigit<0) + //-- return 0; // -1=0 */ + //-- if ((exp+mant.length)>18) // early exit + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- useexp=exp; + //-- } + //-- + //-- /* convert the mantissa to binary, inline for speed */ + //-- // note that we could safely use the 'test for wrap to negative' + //-- // algorithm here, but instead we parallel the intValueExact + //-- // algorithm for ease of checking and maintenance. + //-- result=(long)0; + //-- {int $17=lodigit+useexp;i=0;i:for(;i<=$17;i++){ + //-- result=result*10; + //-- if (i<=lodigit) + //-- result=result+mant[i]; + //-- } + //-- }/*i*/ + //-- + //-- /* Now, if the risky length, check for overflow */ + //-- if ((lodigit+useexp)==18) + //-- { + //-- topdig=result/1000000000000000000L; // get top digit, preserving sign + //-- if (topdig!=mant[0]) + //-- { // digit must match and be positive + //-- // except in the special case ... + //-- if (result==java.lang.Long.MIN_VALUE) // looks like the special + //-- if (ind==isneg) // really was negative + //-- if (mant[0]==9) + //-- return result; // really had top digit 9 + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- } + //-- } + //-- + //-- /* Looks good */ + //-- if (ind==ispos) + //-- return result; + //-- return (long)-result; + //-- } + + /** + * Returns a plain BigDecimal whose decimal point has + * been moved to the left by a specified number of positions. + * The parameter, n, specifies the number of positions to + * move the decimal point. + * That is, if n is 0 or positive, the number returned is + * given by: + *

      + * this.multiply(TEN.pow(new BigDecimal(-n))) + * + *

      + * n may be negative, in which case the method returns + * the same result as movePointRight(-n). + * + * @param n The int specifying the number of places to + * move the decimal point leftwards. + * @return A BigDecimal derived from + * this, with the decimal point moved + * n places to the left. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal movePointLeft(int n){ + function movePointLeft(n) { + //--com.ibm.icu.math.BigDecimal res; + var res; + // very little point in optimizing for shift of 0 + res=this.clone(this); + res.exp=res.exp-n; + return res.finish(this.plainMC,false); // finish sets form and checks exponent + } + + /** + * Returns a plain BigDecimal whose decimal point has + * been moved to the right by a specified number of positions. + * The parameter, n, specifies the number of positions to + * move the decimal point. + * That is, if n is 0 or positive, the number returned is + * given by: + *

      + * this.multiply(TEN.pow(new BigDecimal(n))) + * + *

      + * n may be negative, in which case the method returns + * the same result as movePointLeft(-n). + * + * @param n The int specifying the number of places to + * move the decimal point rightwards. + * @return A BigDecimal derived from + * this, with the decimal point moved + * n places to the right. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal movePointRight(int n){ + function movePointRight(n) { + //--com.ibm.icu.math.BigDecimal res; + var res; + res=this.clone(this); + res.exp=res.exp+n; + return res.finish(this.plainMC,false); + } + + /** + * Returns the scale of this BigDecimal. + * Returns a non-negative int which is the scale of the + * number. The scale is the number of digits in the decimal part of + * the number if the number were formatted without exponential + * notation. + * + * @return An int whose value is the scale of this + * BigDecimal. + * @stable ICU 2.0 + */ + + //--public int scale(){ + function scale() { + if (this.exp>=0) + return 0; // scale can never be negative + return -this.exp; + } + + /** + * Returns a plain BigDecimal with a given scale. + *

      + * If the given scale (which must be zero or positive) is the same as + * or greater than the length of the decimal part (the scale) of this + * BigDecimal then trailing zeros will be added to the + * decimal part as necessary. + *

      + * If the given scale is less than the length of the decimal part (the + * scale) of this BigDecimal then trailing digits + * will be removed, and in this case an + * ArithmeticException is thrown if any discarded digits + * are non-zero. + *

      + * The same as {@link #setScale(int, int)}, where the first parameter + * is the scale, and the second is + * MathContext.ROUND_UNNECESSARY. + * + * @param scale The int specifying the scale of the + * resulting BigDecimal. + * @return A plain BigDecimal with the given scale. + * @throws ArithmeticException if scale is negative. + * @throws ArithmeticException if reducing scale would discard + * non-zero digits. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal setScale(int scale){ + //-- return setScale(scale,ROUND_UNNECESSARY); + //-- } + + /** + * Returns a plain BigDecimal with a given scale. + *

      + * If the given scale (which must be zero or positive) is the same as + * or greater than the length of the decimal part (the scale) of this + * BigDecimal then trailing zeros will be added to the + * decimal part as necessary. + *

      + * If the given scale is less than the length of the decimal part (the + * scale) of this BigDecimal then trailing digits + * will be removed, and the rounding mode given by the second + * parameter is used to determine if the remaining digits are + * affected by a carry. + * In this case, an IllegalArgumentException is thrown if + * round is not a valid rounding mode. + *

      + * If round is MathContext.ROUND_UNNECESSARY, + * an ArithmeticException is thrown if any discarded + * digits are non-zero. + * + * @param scale The int specifying the scale of the + * resulting BigDecimal. + * @param round The int rounding mode to be used for + * the division (see the {@link MathContext} class). + * @return A plain BigDecimal with the given scale. + * @throws IllegalArgumentException if round is not a + * valid rounding mode. + * @throws ArithmeticException if scale is negative. + * @throws ArithmeticException if round is + * MathContext.ROUND_UNNECESSARY, and + * reducing scale would discard non-zero digits. + * @stable ICU 2.0 + */ + + //--public com.ibm.icu.math.BigDecimal setScale(int scale,int round){ + function setScale() { + var round; + if (setScale.arguments.length == 2) + { + round = setScale.arguments[1]; + } + else if (setScale.arguments.length == 1) + { + round = this.ROUND_UNNECESSARY; + } + else + { + throw "setScale(): " + setScale.arguments.length + " given; expected 1 or 2"; + } + var scale = setScale.arguments[0]; + //--int ourscale; + var ourscale; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--int padding=0; + var padding=0; + //--int newlen=0; + var newlen=0; + // at present this naughtily only checks the round value if it is + // needed (used), for speed + ourscale=this.scale(); + if (ourscale==scale) // already correct scale + if (this.form==MathContext.prototype.PLAIN) // .. and form + return this; + res=this.clone(this); // need copy + if (ourscale<=scale) + { // simply zero-padding/changing form + // if ourscale is 0 we may have lots of 0s to add + if (ourscale==0) + padding=res.exp+scale; + else + padding=scale-ourscale; + res.mant=this.extend(res.mant,res.mant.length+padding); + res.exp=-scale; // as requested + } + else + {/* ourscale>scale: shortening, probably */ + if (scale<0) + //--throw new java.lang.ArithmeticException("Negative scale:"+" "+scale); + throw "setScale(): Negative scale: " + scale; + // [round() will raise exception if invalid round] + newlen=res.mant.length-((ourscale-scale)); // [<=0 is OK] + res=res.round(newlen,round); // round to required length + // This could have shifted left if round (say) 0.9->1[.0] + // Repair if so by adding a zero and reducing exponent + if (res.exp!=(-scale)) + { + res.mant=this.extend(res.mant,res.mant.length+1); + res.exp=res.exp-1; + } + } + res.form=MathContext.prototype.PLAIN; // by definition + return res; + } + + /** + * Converts this BigDecimal to a short. + * If the BigDecimal has a non-zero decimal part or is + * out of the possible range for a short (16-bit signed + * integer) result then an ArithmeticException is thrown. + * + * @return A short equal in value to this. + * @throws ArithmeticException if this has a non-zero + * decimal part, or will not fit in a + * short. + * @stable ICU 2.0 + */ + + //--public short shortValueExact(){ + //-- int num; + //-- num=this.intValueExact(); // will check decimal part too + //-- if ((num>32767)|(num<(-32768))) + //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); + //-- return (short)num; + //-- } + + /** + * Returns the sign of this BigDecimal, as an + * int. + * This returns the signum function value that represents the + * sign of this BigDecimal. + * That is, -1 if the BigDecimal is negative, 0 if it is + * numerically equal to zero, or 1 if it is positive. + * + * @return An int which is -1 if the + * BigDecimal is negative, 0 if it is + * numerically equal to zero, or 1 if it is positive. + * @stable ICU 2.0 + */ + + //--public int signum(){ + function signum() { + return this.ind; // [note this assumes values for ind.] + } + + /** + * Converts this BigDecimal to a + * java.math.BigDecimal. + *

      + * This is an exact conversion; the result is the same as if the + * BigDecimal were formatted as a plain number without + * any rounding or exponent and then the + * java.math.BigDecimal(java.lang.String) constructor + * were used to construct the result. + *

      + * (Note: this method is provided only in the + * com.ibm.icu.math version of the BigDecimal class. + * It would not be present in a java.math version.) + * + * @return The java.math.BigDecimal equal in value + * to this BigDecimal. + * @stable ICU 2.0 + */ + + //--public java.math.BigDecimal toBigDecimal(){ + //-- return new java.math.BigDecimal(this.unscaledValue(),this.scale()); + //-- } + + /** + * Converts this BigDecimal to a + * java.math.BigInteger. + *

      + * Any decimal part is truncated (discarded). + * If an exception is desired should the decimal part be non-zero, + * use {@link #toBigIntegerExact()}. + * + * @return The java.math.BigInteger equal in value + * to the integer part of this BigDecimal. + * @stable ICU 2.0 + */ + + //--public java.math.BigInteger toBigInteger(){ + //-- com.ibm.icu.math.BigDecimal res=null; + //-- int newlen=0; + //-- byte newmant[]=null; + //-- {/*select*/ + //-- if ((exp>=0)&(form==com.ibm.icu.math.MathContext.PLAIN)) + //-- res=this; // can layout simply + //-- else if (exp>=0) + //-- { + //-- res=clone(this); // safe copy + //-- res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // .. and request PLAIN + //-- } + //-- else{ + //-- { // exp<0; scale to be truncated + //-- // we could use divideInteger, but we may as well be quicker + //-- if (((int)-this.exp)>=this.mant.length) + //-- res=ZERO; // all blows away + //-- else + //-- { + //-- res=clone(this); // safe copy + //-- newlen=res.mant.length+res.exp; + //-- newmant=new byte[newlen]; // [shorter] + //-- java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,newlen); + //-- res.mant=newmant; + //-- res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; + //-- res.exp=0; + //-- } + //-- } + //-- } + //-- } + //-- return new BigInteger(new java.lang.String(res.layout())); + //-- } + + /** + * Converts this BigDecimal to a + * java.math.BigInteger. + *

      + * An exception is thrown if the decimal part (if any) is non-zero. + * + * @return The java.math.BigInteger equal in value + * to the integer part of this BigDecimal. + * @throws ArithmeticException if this has a non-zero + * decimal part. + * @stable ICU 2.0 + */ + + //--public java.math.BigInteger toBigIntegerExact(){ + //-- /* test any trailing decimal part */ + //-- if (exp<0) + //-- { // possible decimal part + //-- /* all decimal places must be 0; note exp<0 */ + //-- if ((!(allzero(mant,mant.length+exp)))) + //-- throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString()); + //-- } + //-- return toBigInteger(); + //-- } + + /** + * Returns the BigDecimal as a character array. + * The result of this method is the same as using the + * sequence toString().toCharArray(), but avoids creating + * the intermediate String and char[] + * objects. + * + * @return The char[] array corresponding to this + * BigDecimal. + * @stable ICU 2.0 + */ + + //--public char[] toCharArray(){ + //-- return layout(); + //-- } + + /** + * Returns the BigDecimal as a String. + * This returns a String that exactly represents this + * BigDecimal, as defined in the decimal documentation + * (see {@link BigDecimal class header}). + *

      + * By definition, using the {@link #BigDecimal(String)} constructor + * on the result String will create a + * BigDecimal that is exactly equal to the original + * BigDecimal. + * + * @return The String exactly corresponding to this + * BigDecimal. + * @see #format(int, int) + * @see #format(int, int, int, int, int, int) + * @see #toCharArray() + * @stable ICU 2.0 + */ + + //--public java.lang.String toString(){ + function toString() { + return this.layout().join(""); + } + + /** + * Returns the number as a BigInteger after removing the + * scale. + * That is, the number is expressed as a plain number, any decimal + * point is then removed (retaining the digits of any decimal part), + * and the result is then converted to a BigInteger. + * + * @return The java.math.BigInteger equal in value to + * this BigDecimal multiplied by ten to the + * power of this.scale(). + * @stable ICU 2.0 + */ + + //--public java.math.BigInteger unscaledValue(){ + //-- com.ibm.icu.math.BigDecimal res=null; + //-- if (exp>=0) + //-- res=this; + //-- else + //-- { + //-- res=clone(this); // safe copy + //-- res.exp=0; // drop scale + //-- } + //-- return res.toBigInteger(); + //-- } + + /** + * Translates a double to a BigDecimal. + *

      + * Returns a BigDecimal which is the decimal + * representation of the 64-bit signed binary floating point + * parameter. If the parameter is infinite, or is not a number (NaN), + * a NumberFormatException is thrown. + *

      + * The number is constructed as though num had been + * converted to a String using the + * Double.toString() method and the + * {@link #BigDecimal(java.lang.String)} constructor had then been used. + * This is typically not an exact conversion. + * + * @param dub The double to be translated. + * @return The BigDecimal equal in value to + * dub. + * @throws NumberFormatException if the parameter is infinite or + * not a number. + * @stable ICU 2.0 + */ + + //--public static com.ibm.icu.math.BigDecimal valueOf(double dub){ + //-- // Reminder: a zero double returns '0.0', so we cannot fastpath to + //-- // use the constant ZERO. This might be important enough to justify + //-- // a factory approach, a cache, or a few private constants, later. + //-- return new com.ibm.icu.math.BigDecimal((new java.lang.Double(dub)).toString()); + //-- } + + /** + * Translates a long to a BigDecimal. + * That is, returns a plain BigDecimal whose value is + * equal to the given long. + * + * @param lint The long to be translated. + * @return The BigDecimal equal in value to + * lint. + * @stable ICU 2.0 + */ + + //--public static com.ibm.icu.math.BigDecimal valueOf(long lint){ + //-- return valueOf(lint,0); + //-- } + + /** + * Translates a long to a BigDecimal with a + * given scale. + * That is, returns a plain BigDecimal whose unscaled + * value is equal to the given long, adjusted by the + * second parameter, scale. + *

      + * The result is given by: + *

      + * (new BigDecimal(lint)).divide(TEN.pow(new BigDecimal(scale))) + * + *

      + * A NumberFormatException is thrown if scale + * is negative. + * + * @param lint The long to be translated. + * @param scale The int scale to be applied. + * @return The BigDecimal equal in value to + * lint. + * @throws NumberFormatException if the scale is negative. + * @stable ICU 2.0 + */ + + //--public static com.ibm.icu.math.BigDecimal valueOf(long lint,int scale){ + //-- com.ibm.icu.math.BigDecimal res=null; + //-- {/*select*/ + //-- if (lint==0) + //-- res=ZERO; + //-- else if (lint==1) + //-- res=ONE; + //-- else if (lint==10) + //-- res=TEN; + //-- else{ + //-- res=new com.ibm.icu.math.BigDecimal(lint); + //-- } + //-- } + //-- if (scale==0) + //-- return res; + //-- if (scale<0) + //-- throw new java.lang.NumberFormatException("Negative scale:"+" "+scale); + //-- res=clone(res); // safe copy [do not mutate] + //-- res.exp=(int)-scale; // exponent is -scale + //-- return res; + //-- } + + /* ---------------------------------------------------------------- */ + /* Private methods */ + /* ---------------------------------------------------------------- */ + + /* Return char array value of a BigDecimal (conversion from + BigDecimal to laid-out canonical char array). +

      The mantissa will either already have been rounded (following an + operation) or will be of length appropriate (in the case of + construction from an int, for example). +

      We must not alter the mantissa, here. +

      'form' describes whether we are to use exponential notation (and + if so, which), or if we are to lay out as a plain/pure numeric. + */ + + //--private char[] layout(){ + function layout() { + //--char cmant[]; + var cmant; + //--int i=0; + var i=0; + //--java.lang.StringBuffer sb=null; + var sb=null; + //--int euse=0; + var euse=0; + //--int sig=0; + var sig=0; + //--char csign=0; + var csign=0; + //--char rec[]=null; + var rec=null; + //--int needsign; + var needsign; + //--int mag; + var mag; + //--int len=0; + var len=0; + cmant=new Array(this.mant.length); // copy byte[] to a char[] + {var $18=this.mant.length;i=0;i:for(;$18>0;$18--,i++){ + cmant[i]=this.mant[i]+''; + } + }/*i*/ + + if (this.form!=MathContext.prototype.PLAIN) + {/* exponential notation needed */ + //--sb=new java.lang.StringBuffer(cmant.length+15); // -x.xxxE+999999999 + sb=""; + if (this.ind==this.isneg) + sb += '-'; + euse=(this.exp+cmant.length)-1; // exponent to use + /* setup sig=significant digits and copy to result */ + if (this.form==MathContext.prototype.SCIENTIFIC) + { // [default] + sb += cmant[0]; // significant character + if (cmant.length>1) // have decimal part + //--sb.append('.').append(cmant,1,cmant.length-1); + sb += '.'; + sb += cmant.slice(1).join(""); + } + else + {engineering:do{ + sig=euse%3; // common + if (sig<0) + sig=3+sig; // negative exponent + euse=euse-sig; + sig++; + if (sig>=cmant.length) + { // zero padding may be needed + //--sb.append(cmant,0,cmant.length); + sb += cmant.join(""); + {var $19=sig-cmant.length;for(;$19>0;$19--){ + sb += '0'; + } + } + } + else + { // decimal point needed + //--sb.append(cmant,0,sig).append('.').append(cmant,sig,cmant.length-sig); + sb += cmant.slice(0,sig).join(""); + sb += '.'; + sb += cmant.slice(sig).join(""); + } + }while(false);}/*engineering*/ + if (euse!=0) + { + if (euse<0) + { + csign='-'; + euse=-euse; + } + else + csign='+'; + //--sb.append('E').append(csign).append(euse); + sb += 'E'; + sb += csign; + sb += euse; + } + //--rec=new Array(sb.length); + //--Utility.getChars(sb, 0,sb.length(),rec,0); + //--return rec; + return sb.split(""); + } + + /* Here for non-exponential (plain) notation */ + if (this.exp==0) + {/* easy */ + if (this.ind>=0) + return cmant; // non-negative integer + rec=new Array(cmant.length+1); + rec[0]='-'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,1,cmant.length); + this.arraycopy(cmant,0,rec,1,cmant.length); + return rec; + } + + /* Need a '.' and/or some zeros */ + needsign=((this.ind==this.isneg)?1:0); // space for sign? 0 or 1 + + /* MAG is the position of the point in the mantissa (index of the + character it follows) */ + mag=this.exp+cmant.length; + + if (mag<1) + {/* 0.00xxxx form */ + len=(needsign+2)-this.exp; // needsign+2+(-mag)+cmant.length + rec=new Array(len); + if (needsign!=0) + rec[0]='-'; + rec[needsign]='0'; + rec[needsign+1]='.'; + {var $20=-mag;i=needsign+2;i:for(;$20>0;$20--,i++){ // maybe none + rec[i]='0'; + } + }/*i*/ + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,(needsign+2)-mag,cmant.length); + this.arraycopy(cmant,0,rec,(needsign+2)-mag,cmant.length); + return rec; + } + + if (mag>cmant.length) + {/* xxxx0000 form */ + len=needsign+mag; + rec=new Array(len); + if (needsign!=0) + rec[0]='-'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,cmant.length); + this.arraycopy(cmant,0,rec,needsign,cmant.length); + {var $21=mag-cmant.length;i=needsign+cmant.length;i:for(;$21>0;$21--,i++){ // never 0 + rec[i]='0'; + } + }/*i*/ + return rec; + } + + /* decimal point is in the middle of the mantissa */ + len=(needsign+1)+cmant.length; + rec=new Array(len); + if (needsign!=0) + rec[0]='-'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,mag); + this.arraycopy(cmant,0,rec,needsign,mag); + rec[needsign+mag]='.'; + //--java.lang.System.arraycopy((java.lang.Object)cmant,mag,(java.lang.Object)rec,(needsign+mag)+1,cmant.length-mag); + this.arraycopy(cmant,mag,rec,(needsign+mag)+1,cmant.length-mag); + return rec; + } + + /* Checks a BigDecimal argument to ensure it's a true integer + in a given range. +

      If OK, returns it as an int. */ + // [currently only used by pow] + + //--private int intcheck(int min,int max){ + function intcheck(min, max) { + //--int i; + var i; + i=this.intValueExact(); // [checks for non-0 decimal part] + // Use same message as though intValueExact failed due to size + if ((imax)) + throw "intcheck(): Conversion overflow: "+i; + return i; + } + + /* Carry out division operations. */ + /* + Arg1 is operation code: D=divide, I=integer divide, R=remainder + Arg2 is the rhs. + Arg3 is the context. + Arg4 is explicit scale iff code='D' or 'I' (-1 if none). + + Underlying algorithm (complications for Remainder function and + scaled division are omitted for clarity): + + Test for x/0 and then 0/x + Exp =Exp1 - Exp2 + Exp =Exp +len(var1) -len(var2) + Sign=Sign1 * Sign2 + Pad accumulator (Var1) to double-length with 0's (pad1) + Pad Var2 to same length as Var1 + B2B=1st two digits of var2, +1 to allow for roundup + have=0 + Do until (have=digits+1 OR residue=0) + if exp<0 then if integer divide/residue then leave + this_digit=0 + Do forever + compare numbers + if <0 then leave inner_loop + if =0 then (- quick exit without subtract -) do + this_digit=this_digit+1; output this_digit + leave outer_loop; end + Compare lengths of numbers (mantissae): + If same then CA=first_digit_of_Var1 + else CA=first_two_digits_of_Var1 + mult=ca*10/b2b -- Good and safe guess at divisor + if mult=0 then mult=1 + this_digit=this_digit+mult + subtract + end inner_loop + if have\=0 | this_digit\=0 then do + output this_digit + have=have+1; end + var2=var2/10 + exp=exp-1 + end outer_loop + exp=exp+1 -- set the proper exponent + if have=0 then generate answer=0 + Return to FINISHED + Result defined by MATHV1 + + For extended commentary, see DMSRCN. + */ + + //--private com.ibm.icu.math.BigDecimal dodivide(char code,com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set,int scale){ + function dodivide(code, rhs, set, scale) { + //--com.ibm.icu.math.BigDecimal lhs; + var lhs; + //--int reqdig; + var reqdig; + //--int newexp; + var newexp; + //--com.ibm.icu.math.BigDecimal res; + var res; + //--int newlen; + var newlen; + //--byte var1[]; + var var1; + //--int var1len; + var var1len; + //--byte var2[]; + var var2; + //--int var2len; + var var2len; + //--int b2b; + var b2b; + //--int have; + var have; + //--int thisdigit=0; + var thisdigit=0; + //--int i=0; + var i=0; + //--byte v2=0; + var v2=0; + //--int ba=0; + var ba=0; + //--int mult=0; + var mult=0; + //--int start=0; + var start=0; + //--int padding=0; + var padding=0; + //--int d=0; + var d=0; + //--byte newvar1[]=null; + var newvar1=null; + //--byte lasthave=0; + var lasthave=0; + //--int actdig=0; + var actdig=0; + //--byte newmant[]=null; + var newmant=null; + + if (set.lostDigits) + this.checkdigits(rhs,set.digits); + lhs=this; // name for clarity + + // [note we must have checked lostDigits before the following checks] + if (rhs.ind==0) + throw "dodivide(): Divide by 0"; // includes 0/0 + if (lhs.ind==0) + { // 0/x => 0 [possibly with .0s] + if (set.form!=MathContext.prototype.PLAIN) + return this.ZERO; + if (scale==(-1)) + return lhs; + return lhs.setScale(scale); + } + + /* Prepare numbers according to BigDecimal rules */ + reqdig=set.digits; // local copy (heavily used) + if (reqdig>0) + { + if (lhs.mant.length>reqdig) + lhs=this.clone(lhs).round(set); + if (rhs.mant.length>reqdig) + rhs=this.clone(rhs).round(set); + } + else + {/* scaled divide */ + if (scale==(-1)) + scale=lhs.scale(); + // set reqdig to be at least large enough for the computation + reqdig=lhs.mant.length; // base length + // next line handles both positive lhs.exp and also scale mismatch + if (scale!=(-lhs.exp)) + reqdig=(reqdig+scale)+lhs.exp; + reqdig=(reqdig-((rhs.mant.length-1)))-rhs.exp; // reduce by RHS effect + if (reqdig1) + b2b=b2b+var2[1]; + + /* start the long-division loops */ + have=0; + {outer:for(;;){ + thisdigit=0; + /* find the next digit */ + {inner:for(;;){ + if (var1len0;$22--,i++){ + // var1len is always <= var1.length + if (iv2) + break compare; // OK to subtract + } + }/*i*/ + /* reach here if lhs and rhs are identical; subtraction will + increase digit by one, and the residue will be 0 so we + are done; leave the loop with residue set to 0 (in case + code is 'R' or ROUND_UNNECESSARY or a ROUND_HALF_xxxx is + being checked) */ + thisdigit++; + res.mant[have]=thisdigit; + have++; + var1[0]=0; // residue to 0 [this is all we'll test] + // var1len=1 -- [optimized out] + break outer; + }while(false);}/*compare*/ + /* prepare for subtraction. Estimate BA (lengths the same) */ + ba=var1[0]; // use only first digit + } // lengths the same + else + {/* lhs longer than rhs */ + /* use first two digits for estimate */ + ba=var1[0]*10; + if (var1len>1) + ba=ba+var1[1]; + } + /* subtraction needed; V1>=V2 */ + mult=div((ba*10),b2b); + if (mult==0) + mult=1; + thisdigit=thisdigit+mult; + // subtract; var1 reusable + var1=this.byteaddsub(var1,var1len,var2,var2len,-mult,true); + if (var1[0]!=0) + continue inner; // maybe another subtract needed + /* V1 now probably has leading zeros, remove leading 0's and try + again. (It could be longer than V2) */ + {var $23=var1len-2;start=0;start:for(;start<=$23;start++){ + if (var1[start]!=0) + break start; + var1len--; + } + }/*start*/ + if (start==0) + continue inner; + // shift left + //--java.lang.System.arraycopy((java.lang.Object)var1,start,(java.lang.Object)var1,0,var1len); + this.arraycopy(var1,start,var1,0,var1len); + } + }/*inner*/ + + /* We have the next digit */ + if ((have!=0)||(thisdigit!=0)) + { // put the digit we got + res.mant[have]=thisdigit; + have++; + if (have==(reqdig+1)) + break outer; // we have all we need + if (var1[0]==0) + break outer; // residue now 0 + } + /* can leave now if a scaled divide and exponent is small enough */ + if (scale>=0) + if ((-res.exp)>scale) + break outer; + /* can leave now if not Divide and no integer part left */ + if (code!='D') + if (res.exp<=0) + break outer; + res.exp=res.exp-1; // reduce the exponent + /* to get here, V1 is less than V2, so divide V2 by 10 and go for + the next digit */ + var2len--; + } + }/*outer*/ + + /* here when we have finished dividing, for some reason */ + // have is the number of digits we collected in res.mant + if (have==0) + have=1; // res.mant[0] is 0; we always want a digit + + if ((code=='I')||(code=='R')) + {/* check for integer overflow needed */ + if ((have+res.exp)>reqdig) + throw "dodivide(): Integer overflow"; + + if (code=='R') + {remainder:do{ + /* We were doing Remainder -- return the residue */ + if (res.mant[0]==0) // no integer part was found + return this.clone(lhs).finish(set,false); // .. so return lhs, canonical + if (var1[0]==0) + return this.ZERO; // simple 0 residue + res.ind=lhs.ind; // sign is always as LHS + /* Calculate the exponent by subtracting the number of padding zeros + we added and adding the original exponent */ + padding=((reqdig+reqdig)+1)-lhs.mant.length; + res.exp=(res.exp-padding)+lhs.exp; + + /* strip insignificant padding zeros from residue, and create/copy + the resulting mantissa if need be */ + d=var1len; + {i=d-1;i:for(;i>=1;i--){if(!((res.exp=0) + {scaled:do{ + // say 'scale have res.exp len' scale have res.exp res.mant.length + if (have!=res.mant.length) + // already padded with 0's, so just adjust exponent + res.exp=res.exp-((res.mant.length-have)); + // calculate number of digits we really want [may be 0] + actdig=res.mant.length-(((-res.exp)-scale)); + res.round(actdig,set.roundingMode); // round to desired length + // This could have shifted left if round (say) 0.9->1[.0] + // Repair if so by adding a zero and reducing exponent + if (res.exp!=(-scale)) + { + res.mant=this.extend(res.mant,res.mant.length+1); + res.exp=res.exp-1; + } + return res.finish(set,true); // [strip if not PLAIN] + }while(false);}/*scaled*/ + + // reach here only if a non-scaled + if (have==res.mant.length) + { // got digits+1 digits + res.round(set); + have=reqdig; + } + else + {/* have<=reqdig */ + if (res.mant[0]==0) + return this.ZERO; // fastpath + // make the mantissa truly just 'have' long + // [we could let finish do this, during strip, if we adjusted + // the exponent; however, truncation avoids the strip loop] + newmant=new Array(have); // shorten + //--java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,have); + this.arraycopy(res.mant,0,newmant,0,have); + res.mant=newmant; + } + return res.finish(set,true); + } + + /* Report a conversion exception. */ + + //--private void bad(char s[]){ + function bad(prefix, s) { + throw prefix + "Not a number: "+s; + } + + /* Report a bad argument to a method. + Arg1 is method name + Arg2 is argument position + Arg3 is what was found */ + + //--private void badarg(java.lang.String name,int pos,java.lang.String value){ + function badarg(name, pos, value) { + throw "Bad argument "+pos+" to "+name+": "+value; + } + + /* Extend byte array to given length, padding with 0s. If no + extension is required then return the same array. + + Arg1 is the source byte array + Arg2 is the new length (longer) + */ + + //--private static final byte[] extend(byte inarr[],int newlen){ + function extend(inarr, newlen) { + //--byte newarr[]; + var newarr; + if (inarr.length==newlen) + return inarr; + newarr=createArrayWithZeros(newlen); + //--java.lang.System.arraycopy((java.lang.Object)inarr,0,(java.lang.Object)newarr,0,inarr.length); + this.arraycopy(inarr,0,newarr,0,inarr.length); + // 0 padding is carried out by the JVM on allocation initialization + return newarr; + } + + /* Add or subtract two >=0 integers in byte arrays +

      This routine performs the calculation: +

      +    C=A+(B*M)
      +    
      + Where M is in the range -9 through +9 +

      + If M<0 then A>=B must be true, so the result is always + non-negative. + + Leading zeros are not removed after a subtraction. The result is + either the same length as the longer of A and B, or 1 longer than + that (if a carry occurred). + + A is not altered unless Arg6 is 1. + B is never altered. + + Arg1 is A + Arg2 is A length to use (if longer than A, pad with 0's) + Arg3 is B + Arg4 is B length to use (if longer than B, pad with 0's) + Arg5 is M, the multiplier + Arg6 is 1 if A can be used to build the result (if it fits) + + This routine is severely performance-critical; *any* change here + must be measured (timed) to assure no performance degradation. + */ + // 1996.02.20 -- enhanced version of DMSRCN algorithm (1981) + // 1997.10.05 -- changed to byte arrays (from char arrays) + // 1998.07.01 -- changed to allow destructive reuse of LHS + // 1998.07.01 -- changed to allow virtual lengths for the arrays + // 1998.12.29 -- use lookaside for digit/carry calculation + // 1999.08.07 -- avoid multiply when mult=1, and make db an int + // 1999.12.22 -- special case m=-1, also drop 0 special case + + //--private static final byte[] byteaddsub(byte a[],int avlen,byte b[],int bvlen,int m,boolean reuse){ + function byteaddsub(a, avlen, b, bvlen, m, reuse) { + //--int alength; + var alength; + //--int blength; + var blength; + //--int ap; + var ap; + //--int bp; + var bp; + //--int maxarr; + var maxarr; + //--byte reb[]; + var reb; + //--boolean quickm; + var quickm; + //--int digit; + var digit; + //--int op=0; + var op=0; + //--int dp90=0; + var dp90=0; + //--byte newarr[]; + var newarr; + //--int i=0; + var i=0; + + + + + // We'll usually be right if we assume no carry + alength=a.length; // physical lengths + blength=b.length; // .. + ap=avlen-1; // -> final (rightmost) digit + bp=bvlen-1; // .. + maxarr=bp; + if (maxarr=0;op--){ + if (ap>=0) + { + if (ap=0) + { + if (bp0) + digit=digit+b[bp]; // most common + else + digit=digit-b[bp]; // also common + } + else + digit=digit+(b[bp]*m); + } + bp--; + } + /* result so far (digit) could be -90 through 99 */ + if (digit<10) + if (digit>=0) + {quick:do{ // 0-9 + reb[op]=digit; + digit=0; // no carry + continue op; + }while(false);}/*quick*/ + dp90=digit+90; + reb[op]=this.bytedig[dp90]; // this digit + digit=this.bytecar[dp90]; // carry or borrow + } + }/*op*/ + + if (digit==0) + return reb; // no carry + // following line will become an Assert, later + // if digit<0 then signal ArithmeticException("internal.error ["digit"]") + + /* We have carry -- need to make space for the extra digit */ + newarr=null; + if (reuse) + if ((maxarr+2)==a.length) + newarr=a; // OK to reuse A + if (newarr==null) + newarr=new Array(maxarr+2); + newarr[0]=digit; // the carried digit .. + // .. and all the rest [use local loop for short numbers] + //--if (maxarr<10) + {var $24=maxarr+1;i=0;i:for(;$24>0;$24--,i++){ + newarr[i+1]=reb[i]; + } + }/*i*/ + //--else + //--java.lang.System.arraycopy((java.lang.Object)reb,0,(java.lang.Object)newarr,1,maxarr+1); + return newarr; + } + + /* Initializer for digit array properties (lookaside). + Returns the digit array, and initializes the carry array. */ + + //--private static final byte[] diginit(){ + function diginit() { + //--byte work[]; + var work; + //--int op=0; + var op=0; + //--int digit=0; + var digit=0; + work=new Array((90+99)+1); + {op=0;op:for(;op<=(90+99);op++){ + digit=op-90; + if (digit>=0) + { + work[op]=(digit%10); + BigDecimal.prototype.bytecar[op]=(div(digit,10)); // calculate carry + continue op; + } + // borrowing... + digit=digit+100; // yes, this is right [consider -50] + work[op]=(digit%10); + BigDecimal.prototype.bytecar[op]=((div(digit,10))-10); // calculate borrow [NB: - after %] + } + }/*op*/ + return work; + } + + /* Create a copy of BigDecimal object for local use. +

      This does NOT make a copy of the mantissa array. + + Arg1 is the BigDecimal to clone (non-null) + */ + + //--private static final com.ibm.icu.math.BigDecimal clone(com.ibm.icu.math.BigDecimal dec){ + function clone(dec) { + //--com.ibm.icu.math.BigDecimal copy; + var copy; + copy=new BigDecimal(); + copy.ind=dec.ind; + copy.exp=dec.exp; + copy.form=dec.form; + copy.mant=dec.mant; + return copy; + } + + /* Check one or two numbers for lost digits. + Arg1 is RHS (or null, if none) + Arg2 is current DIGITS setting + returns quietly or throws an exception */ + + //--private void checkdigits(com.ibm.icu.math.BigDecimal rhs,int dig){ + function checkdigits(rhs, dig) { + if (dig==0) + return; // don't check if digits=0 + // first check lhs... + if (this.mant.length>dig) + if ((!(this.allzero(this.mant,dig)))) + throw "Too many digits: "+this.toString(); + if (rhs==null) + return; // monadic + if (rhs.mant.length>dig) + if ((!(this.allzero(rhs.mant,dig)))) + throw "Too many digits: "+rhs.toString(); + return; + } + + /* Round to specified digits, if necessary. + Arg1 is requested MathContext [with length and rounding mode] + returns this, for convenience */ + + //--private com.ibm.icu.math.BigDecimal round(com.ibm.icu.math.MathContext set){ + //-- return round(set.digits,set.roundingMode); + //-- } + + /* Round to specified digits, if necessary. + Arg1 is requested length (digits to round to) + [may be <=0 when called from format, dodivide, etc.] + Arg2 is rounding mode + returns this, for convenience + + ind and exp are adjusted, but not cleared for a mantissa of zero + + The length of the mantissa returned will be Arg1, except when Arg1 + is 0, in which case the returned mantissa length will be 1. + + */ + + //private com.ibm.icu.math.BigDecimal round(int len,int mode){ + function round() { + var len; + var mode; + if (round.arguments.length == 2) + { + len = round.arguments[0]; + mode = round.arguments[1]; + } + else if (round.arguments.length == 1) + { + var set = round.arguments[0]; + len = set.digits; + mode = set.roundingMode; + } + else + { + throw "round(): " + round.arguments.length + " arguments given; expected 1 or 2"; + } + //int adjust; + var adjust; + //int sign; + var sign; + //byte oldmant[]; + var oldmant; + //boolean reuse=false; + var reuse=false; + //--byte first=0; + var first=0; + //--int increment; + var increment; + //--byte newmant[]=null; + var newmant=null; + adjust=this.mant.length-len; + if (adjust<=0) + return this; // nowt to do + + this.exp=this.exp+adjust; // exponent of result + sign=this.ind; // save [assumes -1, 0, 1] + oldmant=this.mant; // save + if (len>0) + { + // remove the unwanted digits + this.mant=new Array(len); + //--java.lang.System.arraycopy((java.lang.Object)oldmant,0,(java.lang.Object)mant,0,len); + this.arraycopy(oldmant,0,this.mant,0,len); + reuse=true; // can reuse mantissa + first=oldmant[len]; // first of discarded digits + } + else + {/* len<=0 */ + this.mant=this.ZERO.mant; + this.ind=this.iszero; + reuse=false; // cannot reuse mantissa + if (len==0) + first=oldmant[0]; + else + first=0; // [virtual digit] + } + + // decide rounding adjustment depending on mode, sign, and discarded digits + increment=0; // bumper + {modes:do{/*select*/ + if (mode==this.ROUND_HALF_UP) + { // default first [most common] + if (first>=5) + increment=sign; + } + else if (mode==this.ROUND_UNNECESSARY) + { // default for setScale() + // discarding any non-zero digits is an error + if ((!(this.allzero(oldmant,len)))) + throw "round(): Rounding necessary"; + } + else if (mode==this.ROUND_HALF_DOWN) + { // 0.5000 goes down + if (first>5) + increment=sign; + else + if (first==5) + if ((!(this.allzero(oldmant,len+1)))) + increment=sign; + } + else if (mode==this.ROUND_HALF_EVEN) + { // 0.5000 goes down if left digit even + if (first>5) + increment=sign; + else + if (first==5) + { + if ((!(this.allzero(oldmant,len+1)))) + increment=sign; + else /* 0.5000 */ + if ((((this.mant[this.mant.length-1])%2))==1) + increment=sign; + } + } + else if (mode==this.ROUND_DOWN) + {} // never increment + else if (mode==this.ROUND_UP) + { // increment if discarded non-zero + if ((!(this.allzero(oldmant,len)))) + increment=sign; + } + else if (mode==this.ROUND_CEILING) + { // more positive + if (sign>0) + if ((!(this.allzero(oldmant,len)))) + increment=sign; + } + else if (mode==this.ROUND_FLOOR) + { // more negative + if (sign<0) + if ((!(this.allzero(oldmant,len)))) + increment=sign; + } + else{ + throw "round(): Bad round value: "+mode; + } + }while(false);}/*modes*/ + + if (increment!=0) + {bump:do{ + if (this.ind==this.iszero) + { + // we must not subtract from 0, but result is trivial anyway + this.mant=this.ONE.mant; + this.ind=increment; + } + else + { + // mantissa is non-0; we can safely add or subtract 1 + if (this.ind==this.isneg) + increment=-increment; + newmant=this.byteaddsub(this.mant,this.mant.length,this.ONE.mant,1,increment,reuse); + if (newmant.length>this.mant.length) + { // had a carry + // drop rightmost digit and raise exponent + this.exp++; + // mant is already the correct length + //java.lang.System.arraycopy((java.lang.Object)newmant,0,(java.lang.Object)mant,0,mant.length); + this.arraycopy(newmant,0,this.mant,0,this.mant.length); + } + else + this.mant=newmant; + } + }while(false);}/*bump*/ + // rounding can increase exponent significantly + if (this.exp>this.MaxExp) + throw "round(): Exponent Overflow: "+this.exp; + return this; + } + + /* Test if rightmost digits are all 0. + Arg1 is a mantissa array to test + Arg2 is the offset of first digit to check + [may be negative; if so, digits to left are 0's] + returns 1 if all the digits starting at Arg2 are 0 + + Arg2 may be beyond array bounds, in which case 1 is returned + */ + + //--private static final boolean allzero(byte array[],int start){ + function allzero(array, start) { + //--int i=0; + var i=0; + if (start<0) + start=0; + {var $25=array.length-1;i=start;i:for(;i<=$25;i++){ + if (array[i]!=0) + return false; + } + }/*i*/ + return true; + } + + /* Carry out final checks and canonicalization +

      + This finishes off the current number by: + 1. Rounding if necessary (NB: length includes leading zeros) + 2. Stripping trailing zeros (if requested and \PLAIN) + 3. Stripping leading zeros (always) + 4. Selecting exponential notation (if required) + 5. Converting a zero result to just '0' (if \PLAIN) + In practice, these operations overlap and share code. + It always sets form. + + Arg1 is requested MathContext (length to round to, trigger, and FORM) + Arg2 is 1 if trailing insignificant zeros should be removed after + round (for division, etc.), provided that set.form isn't PLAIN. + returns this, for convenience + */ + + //--private com.ibm.icu.math.BigDecimal finish(com.ibm.icu.math.MathContext set,boolean strip){ + function finish(set, strip) { + //--int d=0; + var d=0; + //--int i=0; + var i=0; + //--byte newmant[]=null; + var newmant=null; + //--int mag=0; + var mag=0; + //--int sig=0; + var sig=0; + /* Round if mantissa too long and digits requested */ + if (set.digits!=0) + if (this.mant.length>set.digits) + this.round(set); + + /* If strip requested (and standard formatting), remove + insignificant trailing zeros. */ + if (strip) + if (set.form!=MathContext.prototype.PLAIN) + { + d=this.mant.length; + /* see if we need to drop any trailing zeros */ + {i=d-1;i:for(;i>=1;i--){ + if (this.mant[i]!=0) + break i; + d--; + this.exp++; + } + }/*i*/ + if (d0;$26--,i++){ + if (this.mant[i]!=0) + { + // non-0 result; ind will be correct + // remove leading zeros [e.g., after subtract] + if (i>0) + {delead:do{ + newmant=new Array(this.mant.length-i); + //--java.lang.System.arraycopy((java.lang.Object)this.mant,i,(java.lang.Object)newmant,0,this.mant.length-i); + this.arraycopy(this.mant,i,newmant,0,this.mant.length-i); + this.mant=newmant; + }while(false);}/*delead*/ + // now determine form if not PLAIN + mag=this.exp+this.mant.length; + if (mag>0) + { // most common path + if (mag>set.digits) + if (set.digits!=0) + this.form=set.form; + if ((mag-1)<=this.MaxExp) + return this; // no overflow; quick return + } + else + if (mag<(-5)) + this.form=set.form; + /* check for overflow */ + mag--; + if ((magthis.MaxExp)) + {overflow:do{ + // possible reprieve if form is engineering + if (this.form==MathContext.prototype.ENGINEERING) + { + sig=mag%3; // leftover + if (sig<0) + sig=3+sig; // negative exponent + mag=mag-sig; // exponent to use + // 1999.06.29: second test here must be MaxExp + if (mag>=this.MinExp) + if (mag<=this.MaxExp) + break overflow; + } + throw "finish(): Exponent Overflow: "+mag; + }while(false);}/*overflow*/ + return this; + } + } + }/*i*/ + + // Drop through to here only if mantissa is all zeros + this.ind=this.iszero; + {/*select*/ + if (set.form!=MathContext.prototype.PLAIN) + this.exp=0; // standard result; go to '0' + else if (this.exp>0) + this.exp=0; // +ve exponent also goes to '0' + else{ + // a plain number with -ve exponent; preserve and check exponent + if (this.exp 0; + }; + function isLessThan(other) { + return this.compareTo(other) < 0; + }; + function isGreaterThanOrEqualTo(other) { + return this.compareTo(other) >= 0; + }; + function isLessThanOrEqualTo(other) { + return this.compareTo(other) <= 0; + }; + function isPositive() { + return this.compareTo(BigDecimal.prototype.ZERO) > 0; + }; + function isNegative() { + return this.compareTo(BigDecimal.prototype.ZERO) < 0; + }; + function isZero() { + return this.equals(BigDecimal.prototype.ZERO); + }; +return BigDecimal; +})(MathContext); // BigDecimal depends on MathContext + +if (typeof define === "function" && define.amd != null) { + // AMD-loader compatible resource declaration + // require('bigdecimal') will return JS Object: + // {'BigDecimal':BigDecimalPointer, 'MathContext':MathContextPointer} + define({'BigDecimal':BigDecimal, 'MathContext':MathContext}); +} else if (typeof this === "object"){ + // global-polluting outcome. + this.BigDecimal = BigDecimal; + this.MathContext = MathContext; +} + +}).call(this); // in browser 'this' will be 'window' or simulated window object in AMD-loading scenarios. diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js new file mode 100644 index 0000000..78bbf7e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js @@ -0,0 +1,61 @@ +/* + Copyright (c) 2012 Daniel Trebbien and other contributors +Portions Copyright (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany +Portions Copyright (c) 1995-2001 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. +*/ +(function(){var m,k=function(){this.form=this.digits=0;this.lostDigits=!1;this.roundingMode=0;var a=this.DEFAULT_FORM,b=this.DEFAULT_LOSTDIGITS,c=this.DEFAULT_ROUNDINGMODE;if(4==k.arguments.length)a=k.arguments[1],b=k.arguments[2],c=k.arguments[3];else if(3==k.arguments.length)a=k.arguments[1],b=k.arguments[2];else if(2==k.arguments.length)a=k.arguments[1];else if(1!=k.arguments.length)throw"MathContext(): "+k.arguments.length+" arguments given; expected 1 to 4";var d=k.arguments[0];if(d!=this.DEFAULT_DIGITS){if(d< +this.MIN_DIGITS)throw"MathContext(): Digits too small: "+d;if(d>this.MAX_DIGITS)throw"MathContext(): Digits too large: "+d;}if(a!=this.SCIENTIFIC&&a!=this.ENGINEERING&&a!=this.PLAIN)throw"MathContext() Bad form value: "+a;if(!this.isValidRound(c))throw"MathContext(): Bad roundingMode value: "+c;this.digits=d;this.form=a;this.lostDigits=b;this.roundingMode=c};k.prototype.getDigits=function(){return this.digits};k.prototype.getForm=function(){return this.form};k.prototype.getLostDigits=function(){return this.lostDigits}; +k.prototype.getRoundingMode=function(){return this.roundingMode};k.prototype.toString=function(){var a=null,b=0,c=null,a=this.form==this.SCIENTIFIC?"SCIENTIFIC":this.form==this.ENGINEERING?"ENGINEERING":"PLAIN",d=this.ROUNDS.length,b=0;a:for(;0=c&&this.bad("BigDecimal(): ",a);this.ind=this.ispos;"-"==a[0]?(c--,0==c&&this.bad("BigDecimal(): ",a),this.ind=this.isneg,b++):"+"==a[0]&&(c--,0==c&&this.bad("BigDecimal(): ",a),b++);e=d=!1;i=0;g=f=-1;k=c;j=b;a:for(;0=l){g=j;i++;continue a}if("."==l){0<=f&&this.bad("BigDecimal(): ",a);f=j-b;continue a}if("e"!=l&&"E"!=l){("0">l||"9"c-2&&this.bad("BigDecimal(): ", +a);e=!1;"-"==a[j+1]?(e=!0,j+=2):j="+"==a[j+1]?j+2:j+1;l=c-(j-b);(0==l||9k&&this.bad("BigDecimal(): ",a),"9"=k?this.mant[j]=k-0:this.bad("BigDecimal(): ",a),l++}else{b=i;j=0;for(;0this.MaxExp)&&this.bad("BigDecimal(): ",a))}},H=function(){var a;if(1==H.arguments.length)a=H.arguments[0];else if(0==H.arguments.length)a=this.plainMC;else throw"abs(): "+H.arguments.length+ +" arguments given; expected 0 or 1";return this.ind==this.isneg?this.negate(a):this.plus(a)},w=function(){var a;if(2==w.arguments.length)a=w.arguments[1];else if(1==w.arguments.length)a=this.plainMC;else throw"add(): "+w.arguments.length+" arguments given; expected 1 or 2";var b=w.arguments[0],c,d,e,i,f,g,j,l=0;d=l=0;var l=null,k=l=0,q=0,t=0,s=0,n=0;a.lostDigits&&this.checkdigits(b,a.digits);c=this;if(0==c.ind&&a.form!=m.prototype.PLAIN)return b.plus(a);if(0==b.ind&&a.form!=m.prototype.PLAIN)return c.plus(a); +d=a.digits;0d&&(c=this.clone(c).round(a)),b.mant.length>d&&(b=this.clone(b).round(a)));e=new h;i=c.mant;f=c.mant.length;g=b.mant;j=b.mant.length;if(c.exp==b.exp)e.exp=c.exp;else if(c.exp>b.exp){l=f+c.exp-b.exp;if(l>=j+d+1&&0d+1&&0f&&(f=l)}else{l=j+b.exp-c.exp;if(l>=f+d+1&&0d+1&&0j&&(j=l)}e.ind=c.ind==this.iszero?this.ispos:c.ind;if((c.ind==this.isneg?1:0)==(b.ind==this.isneg?1:0))d=1;else{do{d=-1;do if(b.ind!=this.iszero)if(fj)){k=l=0;q=i.length-1;t=g.length-1;c:for(;;){if(l<=q)s=i[l];else{if(k>t){if(a.form!=m.prototype.PLAIN)return this.ZERO;break c}s=0}n=k<=t?g[k]:0;if(s!=n){sb.mant.length)return this.ind; +if(c<=a.digits||0==a.digits){a=c;c=0;for(;0b.mant[c])return this.ind}return 0}}else{if(this.indb.ind)return 1}b=this.clone(b);b.ind=-b.ind;return this.add(b,a).ind},p=function(){var a,b=-1;if(2==p.arguments.length)a="number"==typeof p.arguments[1]?new m(0,m.prototype.PLAIN,!1,p.arguments[1]):p.arguments[1];else if(3==p.arguments.length){b=p.arguments[1];if(0>b)throw"divide(): Negative scale: "+b;a=new m(0, +m.prototype.PLAIN,!1,p.arguments[2])}else if(1==p.arguments.length)a=this.plainMC;else throw"divide(): "+p.arguments.length+" arguments given; expected between 1 and 3";return this.dodivide("D",p.arguments[0],a,b)},y=function(){var a;if(2==y.arguments.length)a=y.arguments[1];else if(1==y.arguments.length)a=this.plainMC;else throw"divideInteger(): "+y.arguments.length+" arguments given; expected 1 or 2";return this.dodivide("I",y.arguments[0],a,0)},z=function(){var a;if(2==z.arguments.length)a=z.arguments[1]; +else if(1==z.arguments.length)a=this.plainMC;else throw"max(): "+z.arguments.length+" arguments given; expected 1 or 2";var b=z.arguments[0];return 0<=this.compareTo(b,a)?this.plus(a):b.plus(a)},A=function(){var a;if(2==A.arguments.length)a=A.arguments[1];else if(1==A.arguments.length)a=this.plainMC;else throw"min(): "+A.arguments.length+" arguments given; expected 1 or 2";var b=A.arguments[0];return 0>=this.compareTo(b,a)?this.plus(a):b.plus(a)},B=function(){var a;if(2==B.arguments.length)a=B.arguments[1]; +else if(1==B.arguments.length)a=this.plainMC;else throw"multiply(): "+B.arguments.length+" arguments given; expected 1 or 2";var b=B.arguments[0],c,d,e,i=e=null,f,g=0,j,l=0,k=0;a.lostDigits&&this.checkdigits(b,a.digits);c=this;d=0;e=a.digits;0e&&(c=this.clone(c).round(a)),b.mant.length>e&&(b=this.clone(b).round(a))):(0e)throw"pow(): Too many digits: "+b.toString();d.mant.length>e&&(d=this.clone(d).round(a));i=b.mant.length+b.exp;e=e+i+1}e=new m(e,a.form,!1,a.roundingMode);i=this.ONE;if(0==c)return i;0>c&&(c=-c);f=!1; +g=1;a:for(;;g++){c<<=1;0>c&&(f=!0,i=i.multiply(d,e));if(31==g)break a;if(!f)continue a;i=i.multiply(i,e)}0>b.ind&&(i=this.ONE.divide(i,e));return i.finish(a,!0)},D=function(){var a;if(2==D.arguments.length)a=D.arguments[1];else if(1==D.arguments.length)a=this.plainMC;else throw"remainder(): "+D.arguments.length+" arguments given; expected 1 or 2";return this.dodivide("R",D.arguments[0],a,-1)},E=function(){var a;if(2==E.arguments.length)a=E.arguments[1];else if(1==E.arguments.length)a=this.plainMC; +else throw"subtract(): "+E.arguments.length+" arguments given; expected 1 or 2";var b=E.arguments[0];a.lostDigits&&this.checkdigits(b,a.digits);b=this.clone(b);b.ind=-b.ind;return this.add(b,a)},r=function(){var a,b,c,d;if(6==r.arguments.length)a=r.arguments[2],b=r.arguments[3],c=r.arguments[4],d=r.arguments[5];else if(2==r.arguments.length)b=a=-1,c=m.prototype.SCIENTIFIC,d=this.ROUND_HALF_UP;else throw"format(): "+r.arguments.length+" arguments given; expected 2 or 6";var e=r.arguments[0],i=r.arguments[1], +f,g=0,g=g=0,j=null,l=j=g=0;f=0;g=null;l=j=0;(-1>e||0==e)&&this.badarg("format",1,e);-1>i&&this.badarg("format",2,i);(-1>a||0==a)&&this.badarg("format",3,a);-1>b&&this.badarg("format",4,b);c!=m.prototype.SCIENTIFIC&&c!=m.prototype.ENGINEERING&&(-1==c?c=m.prototype.SCIENTIFIC:this.badarg("format",5,c));if(d!=this.ROUND_HALF_UP)try{-1==d?d=this.ROUND_HALF_UP:new m(9,m.prototype.SCIENTIFIC,!1,d)}catch(h){this.badarg("format",6,d)}f=this.clone(this);-1==b?f.form=m.prototype.PLAIN:f.ind==this.iszero?f.form= +m.prototype.PLAIN:(g=f.exp+f.mant.length,f.form=g>b?c:-5>g?c:m.prototype.PLAIN);if(0<=i)a:for(;;){f.form==m.prototype.PLAIN?g=-f.exp:f.form==m.prototype.SCIENTIFIC?g=f.mant.length-1:(g=(f.exp+f.mant.length-1)%3,0>g&&(g=3+g),g++,g=g>=f.mant.length?0:f.mant.length-g);if(g==i)break a;if(gf.mant.length){f.mant=this.ZERO.mant;f.ind=this.iszero;f.exp=0;continue a}j= +f.mant.length-g;l=f.exp;f.round(j,d);if(f.exp-l==g)break a}b=f.layout();if(0e&&this.badarg("format",1,e);if(fa&& +this.badarg("format",3,a),lb)throw"setScale(): Negative scale: "+b;c=d.mant.length-(c-b);d=d.round(c,a);d.exp!=-b&&(d.mant=this.extend(d.mant,d.mant.length+1),d.exp-=1)}d.form=m.prototype.PLAIN;return d};v=function(){var a,b=0,c=0;a=Array(190);b=0;a:for(;189>=b;b++){c=b-90;if(0<=c){a[b]=c%10;h.prototype.bytecar[b]=G(c,10);continue a}c+=100;a[b]=c%10;h.prototype.bytecar[b]=G(c,10)-10}return a};var u=function(){var a,b;if(2==u.arguments.length)a=u.arguments[0],b=u.arguments[1]; +else if(1==u.arguments.length)b=u.arguments[0],a=b.digits,b=b.roundingMode;else throw"round(): "+u.arguments.length+" arguments given; expected 1 or 2";var c,d,e=!1,i=0,f;c=null;c=this.mant.length-a;if(0>=c)return this;this.exp+=c;c=this.ind;d=this.mant;0c&&(this.allzero(d,a)||(f=c));else throw"round(): Bad round value: "+b;0!=f&&(this.ind==this.iszero?(this.mant=this.ONE.mant,this.ind=f):(this.ind== +this.isneg&&(f=-f),c=this.byteaddsub(this.mant,this.mant.length,this.ONE.mant,1,f,e),c.length>this.mant.length?(this.exp++,this.arraycopy(c,0,this.mant,0,this.mant.length)):this.mant=c));if(this.exp>this.MaxExp)throw"round(): Exponent Overflow: "+this.exp;return this};h.prototype.div=G;h.prototype.arraycopy=function(a,b,c,d,e){var i;if(d>b)for(i=e-1;0<=i;--i)c[i+d]=a[i+b];else for(i=0;ithis.exp){a+=this.exp;if(!this.allzero(this.mant,a+1))throw"intValueExact(): Decimal part non-zero: "+this.toString();if(0>a)return 0;b=0}else{if(9d&&(d=3+d), +c-=d,d++,d>=a.length){b+=a.join("");for(a=d-a.length;0c?(a="-",c=-c):a="+",b+="E",b+=a,b+=c);return b.split("")}if(0==this.exp){if(0<=this.ind)return a;d=Array(a.length+1);d[0]="-";this.arraycopy(a,0,d,1,a.length);return d}c=this.ind==this.isneg?1:0;e=this.exp+a.length;if(1>e){b=c+2-this.exp;d=Array(b);0!=c&&(d[0]="-");d[c]="0";d[c+1]=".";var i=-e,b=c+2;for(;0 +a.length){d=Array(c+e);0!=c&&(d[0]="-");this.arraycopy(a,0,d,c,a.length);e-=a.length;b=c+a.length;for(;0b)throw"intcheck(): Conversion overflow: "+c;return c};h.prototype.dodivide=function(a,b,c,d){var e,i,f,g,j,l,k,q,t,s=0,n=0,p=0;i=i=n=n=n=0;e=null;e=e=0;e=null;c.lostDigits&& +this.checkdigits(b,c.digits);e=this;if(0==b.ind)throw"dodivide(): Divide by 0";if(0==e.ind)return c.form!=m.prototype.PLAIN?this.ZERO:-1==d?e:e.setScale(d);i=c.digits;0i&&(e=this.clone(e).round(c)),b.mant.length>i&&(b=this.clone(b).round(c))):(-1==d&&(d=e.scale()),i=e.mant.length,d!=-e.exp&&(i=i+d+e.exp),i=i-(b.mant.length-1)-b.exp,if&&"D"!=a)return"I"==a?this.ZERO: +this.clone(e).finish(c,!1);g=new h;g.ind=e.ind*b.ind;g.exp=f;g.mant=this.createArrayWithZeros(i+1);j=i+i+1;f=this.extend(e.mant,j);l=j;k=b.mant;q=j;t=10*k[0]+1;1p)break c}s++;g.mant[j]=s;j++;f[0]=0;break a}while(0);n=f[0]}else n=10*f[0],1d)break a;if("D"!=a&&0>=g.exp)break a;g.exp-=1;q--}0==j&&(j=1);if("I"==a||"R"==a){if(j+g.exp>i)throw"dodivide(): Integer overflow";if("R"==a){do{if(0==g.mant[0])return this.clone(e).finish(c,!1);if(0==f[0])return this.ZERO;g.ind=e.ind;i=i+i+1-e.mant.length;g.exp=g.exp-i+e.exp;i=l;n=i-1;b:for(;1<=n&&g.expm&&0<=m){do{d[p]=m;m=0;continue a}while(0)}m+=90;d[p]=this.bytedig[m];m=this.bytecar[m]}if(0==m)return d;c=null;i&&h+2==a.length&&(c=a);null==c&&(c=Array(h+2));c[0]=m;a=h+1;f=0;for(;0b&&!this.allzero(this.mant,b))throw"Too many digits: "+ +this.toString();if(null!=a&&a.mant.length>b&&!this.allzero(a.mant,b))throw"Too many digits: "+a.toString();}};h.prototype.round=u;h.prototype.allzero=function(a,b){var c=0;0>b&&(b=0);var d=a.length-1,c=b;for(;c<=d;c++)if(0!=a[c])return!1;return!0};h.prototype.finish=function(a,b){var c=0,d=0,e=null,c=d=0;0!=a.digits&&this.mant.length>a.digits&&this.round(a);if(b&&a.form!=m.prototype.PLAIN){c=this.mant.length;d=c-1;a:for(;1<=d;d--){if(0!=this.mant[d])break a;c--;this.exp++}ca.digits&&0!=a.digits&&(this.form=a.form),d-1<=this.MaxExp)return this}else-5>d&&(this.form=a.form);d--;if(dthis.MaxExp){b:do{if(this.form==m.prototype.ENGINEERING&&(c=d%3,0>c&&(c=3+c),d-=c,d>=this.MinExp&&d<=this.MaxExp))break b; +throw"finish(): Exponent Overflow: "+d;}while(0)}return this}this.ind=this.iszero;if(a.form!=m.prototype.PLAIN)this.exp=0;else if(0this.compareTo(a)};h.prototype.isGreaterThanOrEqualTo=function(a){return 0<=this.compareTo(a)};h.prototype.isLessThanOrEqualTo= +function(a){return 0>=this.compareTo(a)};h.prototype.isPositive=function(){return 0this.compareTo(h.prototype.ZERO)};h.prototype.isZero=function(){return this.equals(h.prototype.ZERO)};h.ROUND_CEILING=h.prototype.ROUND_CEILING=m.prototype.ROUND_CEILING;h.ROUND_DOWN=h.prototype.ROUND_DOWN=m.prototype.ROUND_DOWN;h.ROUND_FLOOR=h.prototype.ROUND_FLOOR=m.prototype.ROUND_FLOOR;h.ROUND_HALF_DOWN=h.prototype.ROUND_HALF_DOWN=m.prototype.ROUND_HALF_DOWN; +h.ROUND_HALF_EVEN=h.prototype.ROUND_HALF_EVEN=m.prototype.ROUND_HALF_EVEN;h.ROUND_HALF_UP=h.prototype.ROUND_HALF_UP=m.prototype.ROUND_HALF_UP;h.ROUND_UNNECESSARY=h.prototype.ROUND_UNNECESSARY=m.prototype.ROUND_UNNECESSARY;h.ROUND_UP=h.prototype.ROUND_UP=m.prototype.ROUND_UP;h.prototype.ispos=1;h.prototype.iszero=0;h.prototype.isneg=-1;h.prototype.MinExp=-999999999;h.prototype.MaxExp=999999999;h.prototype.MinArg=-999999999;h.prototype.MaxArg=999999999;h.prototype.plainMC=new m(0,m.prototype.PLAIN); +h.prototype.bytecar=Array(190);h.prototype.bytedig=v();h.ZERO=h.prototype.ZERO=new h("0");h.ONE=h.prototype.ONE=new h("1");h.TEN=h.prototype.TEN=new h("10");v=h;"function"===typeof define&&null!=define.amd?define({BigDecimal:v,MathContext:m}):"object"===typeof this&&(this.BigDecimal=v,this.MathContext=m)}).call(this); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt new file mode 100644 index 0000000..ca1ad2e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt @@ -0,0 +1,30 @@ +Copyright (c) 2012 Daniel Trebbien and other contributors +Portions Copyright (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany +Portions Copyright (c) 1995-2001 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + + +ICU4J license - ICU4J 1.3.1 and later +COPYRIGHT AND PERMISSION NOTICE + +Copyright (c) 1995-2001 International Business Machines Corporation and others + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. + + +-------------------------------------------------------------------------------- +All trademarks and registered trademarks mentioned herein are the property of their respective owners. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js new file mode 100644 index 0000000..8b7cdf5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js @@ -0,0 +1,1080 @@ +var count = (function abs(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '

      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value){ + assert(String(expected), new BigNumber(String(value)).abs().toString()); + } + + log('\n Testing abs...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 1); + T(1, -1); + T(0.5, '0.5'); + T(0.5, '-0.5'); + T(0.1, 0.1); + T(0.1, -0.1); + T(1.1, 1.1); + T(1.1, -1.1); + T(1.5, '1.5'); + T(1.5, '-1.5'); + + T(0.00001, '-1e-5'); + T(9000000000, '-9e9'); + T(123456.7891011, -123456.7891011); + T(999.999, '-999.999'); + T(99, 99); + T(1, new BigNumber(-1)); + T(0.001, new BigNumber(0.001)); + T(0.001, new BigNumber('-0.001')); + + T('Infinity', Infinity); + T('Infinity', -Infinity); + T(NaN, NaN); + T(NaN, -NaN); + T(0, 0); + T(0, -0); + + var minusZero = 1 / (-1 / 0); + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + T(0, 0); + T(0, -0); + T(0, minusZero); + + assert(true, isMinusZero(new BigNumber('-0'))); + assert(true, isMinusZero(new BigNumber(minusZero))); + assert(false, isMinusZero(new BigNumber(-0).abs())); + assert(false, isMinusZero(new BigNumber(minusZero).abs())); + assert(true, !isMinusZero(new BigNumber('-0').abs())); + assert(true, !isMinusZero(new BigNumber(minusZero).abs())); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(Number.MIN_VALUE, Number.MIN_VALUE); + T(Number.MIN_VALUE, -Number.MIN_VALUE); + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(Number.MAX_VALUE, -Number.MAX_VALUE); + + var two_30 = 1 << 30; + + T(two_30, two_30); + T(two_30, -two_30); + + T(two_30 + 1, two_30 + 1); + T(two_30 + 1, -two_30 - 1); + + T(two_30 - 1, two_30 - 1); + T(two_30 - 1, -two_30 + 1); + + var two_31 = 2 * two_30; + + T(two_31, two_31); + T(two_31, -two_31); + + T(two_31 + 1, two_31 + 1); + T(two_31 + 1, -two_31 - 1); + + T(two_31 - 1, two_31 - 1); + T(two_31 - 1, -two_31 + 1); + + BigNumber.config({ EXPONENTIAL_AT : [-7, 21] }); + + T(NaN, 'NaN'); + T('0', '0'); + T('1', '-1'); + T('11.121', '11.121'); + T('0.023842', '-0.023842'); + T('1.19', '-1.19'); + T('9.622e-11', '-0.00000000009622'); + T('5.09e-10', '-0.000000000509'); + T('3838.2', '3838.2'); + T('127', '127.0'); + T('4.23073', '4.23073'); + T('2.5469', '-2.5469'); + T('29949', '-29949'); + T('277.1', '-277.10'); + T('4.97898e-15', '-0.00000000000000497898'); + T('53.456', '53.456'); + T('100564', '-100564'); + T('12431.9', '-12431.9'); + T('97633.7', '-97633.7'); + T('220', '220'); + T('188.67', '-188.67'); + T('35', '-35'); + T('2.6', '-2.6'); + T('2.2e-19', '-0.000000000000000000220'); + T('1.469', '-1.469'); + T('150.7', '-150.7'); + T('74', '-74'); + T('3.52e-9', '-0.00000000352'); + T('2221.7', '-2221.7'); + T('0.000004211', '-0.000004211'); + T('1', '-1'); + T('5.886', '-5.886'); + T('16', '16'); + T('4.4493e-9', '0.0000000044493'); + T('47.6', '47.6'); + T('1.6', '-1.60'); + T('1', '-1'); + T('1.5', '-1.5'); + T('5', '-5'); + T('1', '-1'); + T('8027', '8027'); + T('6.36e-16', '-0.000000000000000636'); + T('3.87766', '3.87766'); + T('7.4', '-7.4'); + T('4.449', '-4.449'); + T('5.2218e-19', '-0.000000000000000000522180'); + T('1.3769e-11', '-0.000000000013769'); + T('7.898e-13', '-0.0000000000007898'); + T('522.9', '-522.9'); + T('16.1', '-16.1'); + T('2.15', '2.15'); + T('4.3', '4.3'); + T('3', '-3'); + T('2.8', '-2.8'); + T('1', '-1'); + T('0.0000128696', '-0.0000128696'); + T('13.33', '-13.33'); + T('0.00000132177', '-0.00000132177'); + T('1.41516', '-1.41516'); + T('180.4', '-180.4'); + T('115079', '-115079'); + T('959', '959'); + T('714.4', '714.4'); + T('1.4544', '1.4544'); + T('53.691', '53.691'); + T('2.03832e-12', '-0.00000000000203832'); + T('1', '-1'); + T('10.8', '10.8'); + T('6189.2', '-6189.2'); + T('6.30866', '6.30866'); + T('62306', '62306'); + T('4', '-4.0'); + T('997.1', '-997.1'); + T('27.4', '-27.40'); + T('9242', '9242'); + T('31.1', '-31.1'); + T('23.4', '23.4'); + T('451818', '-451818'); + T('7', '-7'); + T('1.9', '-1.9'); + T('2', '-2'); + T('112.983', '-112.983'); + T('9.36e-8', '-0.0000000936'); + T('12.8515', '12.8515'); + T('73.1', '-73.1'); + T('18.15', '18.150'); + T('11997.8', '11997.8'); + T('23.1', '-23.1'); + T('82.022', '-82.022'); + T('3.916e-20', '-0.00000000000000000003916'); + T('3.3', '-3.3'); + T('892.1', '-892.1'); + T('24.4', '24.4'); + T('72', '72.0'); + T('0.0013346', '0.0013346'); + T('10.4', '-10.4'); + T('367.5', '367.5'); + T('7', '-7'); + T('127.195', '127.195'); + T('7.89e-13', '-0.000000000000789'); + T('63', '-63'); + T('85821.2', '-85821.2'); + T('95.6', '95.6'); + T('8.9e-14', '-0.000000000000089'); + T('112.1', '-112.1'); + T('3.68', '-3.68'); + T('9', '-9'); + T('0.0000975', '-0.0000975'); + T('393.6', '-393.6'); + T('7.4', '-7.4'); + T('69.62', '-69.62'); + T('5201.3', '5201.3'); + T('163', '163'); + T('4.30732', '4.30732'); + T('224.49', '-224.49'); + T('319.8', '-319.8'); + T('88.1', '-88.1'); + T('2.7762e-8', '0.000000027762'); + T('2.043e-7', '-0.0000002043'); + T('75459.3', '-75459.3'); + T('0.178', '0.178'); + T('0.00001633', '0.00001633'); + T('955', '955'); + T('373898', '-373898'); + T('9780.1', '9780.1'); + T('503.47', '503.47'); + T('3.44562', '-3.44562'); + T('1.6', '-1.6'); + T('1.22442', '-1.22442'); + T('1.4', '1.4'); + T('1219.1', '-1219.1'); + T('2.7', '-2.7'); + T('1057', '-1057'); + T('1938', '1938'); + T('1.1983', '1.1983'); + T('0.0012', '-0.0012'); + T('95.713', '-95.713'); + T('2', '-2'); + T('17.24', '-17.24'); + T('10.3', '-10.3'); + T('1', '-1'); + T('65.8', '-65.8'); + T('2.9', '2.9'); + T('54149', '54149'); + T('8', '-8'); + T('1', '1.0'); + T('4', '-4'); + T('6.3', '-6.3'); + T('5.25e-9', '0.00000000525'); + T('52.3', '-52.3'); + T('75290', '-75290'); + T('5.9', '-5.9'); + T('13.7', '13.7'); + T('2.3982e-9', '0.0000000023982'); + T('91.5', '-91.50'); + T('2072.39', '2072.39'); + T('385.6', '385.6'); + T('4.77', '4.77'); + T('18.72', '18.720'); + T('2817', '-2817'); + T('44535', '-44535'); + T('655', '655'); + T('2e-15', '-0.0000000000000020'); + T('0.625', '0.6250'); + T('2', '-2'); + T('5.315', '5.315'); + T('70.9', '70.90'); + T('6.4', '6.4'); + T('1824', '1824'); + T('52.595', '52.595'); + T('3662', '3662.0'); + T('3.1', '3.1'); + T('1.05032e-7', '0.000000105032'); + T('997.063', '-997.063'); + T('41746', '-41746'); + T('24.0402', '24.0402'); + T('0.009135', '0.009135'); + T('2.34e-9', '-0.00000000234'); + T('13.1', '13.1'); + T('228.8', '228.8'); + T('565.85', '565.85'); + T('4e-20', '0.000000000000000000040'); + T('1.73', '1.73'); + T('38.9', '38.9'); + T('1.02e-14', '-0.0000000000000102'); + T('302.8', '-302.8'); + T('7', '-7'); + T('1', '-1'); + T('0.00247', '0.00247'); + T('2', '-2'); + T('3.26', '-3.26'); + T('8.8', '8.8'); + T('90.6', '90.6'); + T('8.3053e-17', '-0.000000000000000083053'); + T('2.5', '-2.5'); + T('376.2', '-376.2'); + T('1.29', '1.29'); + T('1.379', '-1.379'); + T('40921.5', '-40921.5'); + T('1', '-1'); + T('12.5', '12.5'); + T('10.1', '10.1'); + T('1', '-1'); + T('226636', '226636'); + T('1', '-1'); + T('1.7', '-1.7'); + T('31.31', '31.31'); + T('79.9', '-79.9'); + T('4.027e-13', '0.0000000000004027'); + T('43.838', '43.838'); + T('6.47', '-6.47'); + T('5.292e-19', '0.0000000000000000005292'); + T('4.6', '-4.6'); + T('15918', '-15918.0'); + T('239.45', '239.45'); + T('1.02', '-1.02'); + T('14101', '-14101'); + T('7', '-7'); + T('367.34', '367.34'); + T('5', '-5'); + T('19.9', '-19.9'); + T('269.45', '-269.45'); + T('10.34', '-10.34'); + T('3.32882e-12', '-0.00000000000332882'); + T('5.9', '5.9'); + T('9', '-9.0'); + T('1.3597', '-1.3597'); + T('8', '8.0'); + T('1', '1.0'); + T('312.5', '312.5'); + T('1.554', '-1.554'); + T('210.985', '-210.985'); + T('1', '-1'); + T('1.24', '-1.24'); + T('513865', '-513865'); + T('6748', '-6748'); + T('591.51', '-591.51'); + T('2.2', '-2.2'); + T('19.5495', '19.5495'); + T('3.3', '3.3'); + T('30', '-30'); + T('94', '-94'); + T('217.55', '217.55'); + T('2', '-2'); + T('99', '99'); + T('4.067', '-4.067'); + T('702.57', '702.57'); + T('3.7', '-3.70'); + T('4', '4.0'); + T('192944', '192944'); + T('0.000022', '0.000022'); + T('47.6', '47.60'); + T('0.391', '0.3910'); + T('35', '-35'); + T('100', '-100'); + T('3.3', '-3.3'); + T('32.432', '32.432'); + T('1.07849e-18', '0.00000000000000000107849'); + T('2', '-2.0'); + T('23.27', '23.27'); + T('4.054e-15', '-0.000000000000004054'); + T('7.6', '-7.6'); + T('1305', '1305'); + T('1.501', '-1.501'); + T('3.4', '3.4'); + T('22.5', '-22.5'); + T('1.0916', '1.0916'); + T('2', '-2'); + T('58.271', '58.271'); + T('1.73e-12', '0.00000000000173'); + T('1.3458e-15', '0.0000000000000013458'); + T('309.87', '-309.87'); + T('5.318', '-5.318'); + T('1.5302e-8', '0.000000015302'); + T('596765', '596765'); + T('54.42', '-54.42'); + T('6.549e-20', '0.00000000000000000006549'); + T('29', '29'); + T('46.025', '46.025'); + T('2556.78', '-2556.78'); + T('0.00287721', '0.00287721'); + T('1.63', '-1.63'); + T('0.00041', '0.00041'); + T('698', '698'); + T('134.4', '134.4'); + T('2.1', '2.1'); + T('2.07', '-2.07'); + T('122.869', '122.869'); + T('0.00017', '-0.00017'); + T('18.6', '18.6'); + T('7', '-7'); + T('0.0180557', '0.0180557'); + T('5', '-5'); + T('6.2', '-6.2'); + T('8', '-8'); + T('450.96', '-450.96'); + T('20.2', '-20.2'); + T('176.52', '176.52'); + T('0.00017', '-0.000170'); + T('5', '-5'); + T('1', '-1'); + T('1.37856e-14', '0.0000000000000137856'); + T('76.3048', '76.3048'); + T('1803.7', '-1803.7'); + T('74', '74'); + T('1.7e-12', '0.0000000000017'); + T('48.7', '-48.7'); + T('4.48', '-4.48'); + T('1.4', '-1.4'); + T('7.69', '-7.69'); + T('23.5987', '23.5987'); + T('3074', '3074.0'); + T('8.06e-15', '-0.00000000000000806'); + T('21.3757', '-21.3757'); + T('35', '35'); + T('11.056', '11.0560'); + T('3.36e-14', '-0.0000000000000336'); + T('49139.4', '-49139.4'); + T('32.654', '-32.654'); + T('34035.4', '34035.4'); + T('15.22', '15.22'); + T('62', '62.0'); + T('8.89156', '-8.89156'); + T('14', '14'); + T('0.006', '-0.0060'); + T('1.5', '1.5'); + T('7', '-7'); + T('1.6e-11', '0.000000000016'); + T('26.6427', '26.6427'); + T('1.5e-18', '-0.0000000000000000015'); + T('1.52838e-15', '0.00000000000000152838'); + T('119.1', '119.1'); + T('0.004283', '0.004283'); + T('818', '-818'); + T('194', '194'); + T('104.788', '-104.788'); + T('3.74e-11', '0.0000000000374'); + T('6.162', '-6.162'); + T('5.19214e-18', '-0.00000000000000000519214'); + T('1.4', '-1.4'); + T('1.27', '-1.27'); + T('7.83822e-12', '-0.00000000000783822'); + T('1', '-1'); + T('4.4', '4.4'); + T('7.37382e-12', '0.00000000000737382'); + T('13.618', '13.618'); + T('1.03', '-1.03'); + T('3.7457e-13', '0.00000000000037457'); + T('5.2', '-5.2'); + T('3.5', '3.5'); + T('364', '-364'); + T('7.336', '7.336'); + T('1.1447e-16', '-0.00000000000000011447'); + T('510.63', '-510.63'); + T('5.8', '5.8'); + T('7.8', '7.8'); + T('2.96', '-2.96'); + T('15.64', '-15.64'); + T('187863', '-187863'); + T('2.73', '-2.73'); + T('2.671', '-2.671'); + T('18.179', '-18.179'); + T('855885', '855885'); + T('4.16', '4.16'); + T('5.722e-18', '0.000000000000000005722'); + T('67.62', '67.62'); + T('813.31', '813.31'); + T('40.2', '40.20'); + T('0.00002515', '0.00002515'); + T('0.0196', '0.01960'); + T('13.165', '13.165'); + T('6.743', '-6.743'); + T('1', '-1'); + T('200.56', '-200.56'); + T('1.932', '1.932'); + T('92.9', '92.90'); + T('16.74', '16.74'); + T('4.5554e-7', '-0.00000045554'); + T('2.1296e-15', '-0.0000000000000021296'); + T('2.088', '2.088'); + T('2577', '2577'); + T('45.4', '-45.4'); + T('41.3', '-41.3'); + T('3.63', '-3.63'); + T('1.09', '-1.09'); + T('1', '-1'); + T('3.7', '-3.7'); + T('204.54', '204.54'); + T('235.6', '235.6'); + T('384', '-384'); + T('0.0207', '0.02070'); + T('680', '680'); + T('1.09', '1.09'); + T('109.2', '109.2'); + T('0.00010117', '0.00010117'); + T('13.81', '13.81'); + T('192.3', '192.3'); + T('1', '-1'); + T('1.2', '1.2'); + T('4.1', '-4.1'); + T('2.5', '2.5'); + T('8.4076', '-8.4076'); + T('0.0517', '0.0517'); + T('6.3923', '-6.3923'); + T('506.179', '-506.179'); + T('375886', '375886'); + T('618858', '-618858'); + T('8.5e-11', '0.000000000085'); + T('6', '-6.0'); + T('2.4', '2.40'); + T('0.0000013', '-0.0000013'); + T('1.064', '-1.064'); + T('1', '-1'); + T('4', '-4'); + T('4.5', '-4.5'); + T('93.6206', '93.6206'); + T('3.07e-18', '0.00000000000000000307'); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('5.2452468128e+1', '-5.2452468128e+1'); + T('1.41525905257189365008396e+16', '1.41525905257189365008396e+16'); + T('2.743068083928e+11', '2.743068083928e+11'); + T('1.52993064722314247378724599e+26', '-1.52993064722314247378724599e+26'); + T('3.7205576746e+10', '3.7205576746e+10'); + T('8.680996444609343472665e+17', '8.680996444609343472665e+17'); + T('1.254549e+3', '1.254549e+3'); + T('6.23417196172381875892300762819e-18', '6.23417196172381875892300762819e-18'); + T('1.31179940821919284431e+19', '1.31179940821919284431e+19'); + T('9.7697726168e+7', '9.7697726168e+7'); + T('2.663e-10', '-2.663e-10'); + T('1.26574209965030360615518e+17', '-1.26574209965030360615518e+17'); + T('1.052e+3', '1.052e+3'); + T('4.452945872502e+6', '-4.452945872502e+6'); + T('2.95732460816619226e+13', '2.95732460816619226e+13'); + T('1.1923100194288654481424e+18', '-1.1923100194288654481424e+18'); + T('8.99315449050893705e+6', '8.99315449050893705e+6'); + T('5.200726538434486963e+8', '5.200726538434486963e+8'); + T('1.182618278949368566264898065e+18', '1.182618278949368566264898065e+18'); + T('3.815873266712e-20', '-3.815873266712e-20'); + T('1.316675370382742615e+6', '-1.316675370382742615e+6'); + T('2.1032502e+6', '-2.1032502e+6'); + T('1.8e+1', '1.8e+1'); + T('1.033525906631680944018544811261e-13', '1.033525906631680944018544811261e-13'); + T('1.102361746443461856816e+14', '-1.102361746443461856816e+14'); + T('8.595358491143959e+1', '8.595358491143959e+1'); + T('3.6908859412618413e+9', '-3.6908859412618413e+9'); + T('2.25907048615912944e+5', '-2.25907048615912944e+5'); + T('1.7441871813329475518e+19', '-1.7441871813329475518e+19'); + T('3.805493087068952925e-11', '-3.805493087068952925e-11'); + T('3.58049465451e+9', '-3.58049465451e+9'); + T('8.0688614291e+10', '-8.0688614291e+10'); + T('3.337855e+4', '-3.337855e+4'); + T('2.59977855e+8', '2.59977855e+8'); + T('4.96353e+4', '-4.96353e+4'); + T('7.47233581107861762e-13', '7.47233581107861762e-13'); + T('1.73948e-2', '1.73948e-2'); + T('5.784e-15', '5.784e-15'); + T('4.448338479762497e-8', '4.448338479762497e-8'); + T('3.9008023052e+8', '3.9008023052e+8'); + T('3e+0', '3e+0'); + T('8.61435e-9', '8.61435e-9'); + T('4.37e+1', '-4.37e+1'); + T('8.4034159379836e-18', '-8.4034159379836e-18'); + T('2.002857355721079885824481e+7', '2.002857355721079885824481e+7'); + T('7.000871862e+6', '-7.000871862e+6'); + T('2.2902057767e+9', '2.2902057767e+9'); + T('5.9896443375617e+8', '5.9896443375617e+8'); + T('1.53503650707e-11', '-1.53503650707e-11'); + T('2.0508347e+6', '2.0508347e+6'); + T('4.789433e+2', '-4.789433e+2'); + T('8.28161975302168665599e+11', '8.28161975302168665599e+11'); + T('1.2518396296278445e-5', '1.2518396296278445e-5'); + T('1.44290332e+8', '-1.44290332e+8'); + T('4.6570237501625609051773e-12', '4.6570237501625609051773e-12'); + T('7.8514960198282212436e+19', '7.8514960198282212436e+19'); + T('1.6197e-20', '1.6197e-20'); + T('6.51635176e+0', '-6.51635176e+0'); + T('4.49618e+3', '-4.49618e+3'); + T('1.32052259561417e-1', '-1.32052259561417e-1'); + T('2.09089580968e-18', '2.09089580968e-18'); + T('1.4064735615678257623873854709e-1', '1.4064735615678257623873854709e-1'); + T('3.14172e+0', '-3.14172e+0'); + T('1.7458792e+1', '1.7458792e+1'); + T('9.97831655282e+11', '9.97831655282e+11'); + T('1.94594e+1', '-1.94594e+1'); + T('1.2174602334491e+5', '-1.2174602334491e+5'); + T('1.12135222651239e+6', '-1.12135222651239e+6'); + T('6.3160490484343918e-20', '6.3160490484343918e-20'); + T('1.9238315686509393329629520842e+24', '1.9238315686509393329629520842e+24'); + T('9.915274405618026e+11', '-9.915274405618026e+11'); + T('2.3564687894712721487205001557e+28', '2.3564687894712721487205001557e+28'); + T('8.127315365677288172165e+2', '8.127315365677288172165e+2'); + T('4.93e+0', '-4.93e+0'); + T('1.41530382e+0', '-1.41530382e+0'); + T('4.86451432707435321820779e+19', '-4.86451432707435321820779e+19'); + T('1.4162540859e+0', '-1.4162540859e+0'); + T('4.646e+2', '-4.646e+2'); + T('2.1172e-14', '-2.1172e-14'); + T('8.69000536011392432707132752e-11', '8.69000536011392432707132752e-11'); + T('2.52776394053478133209e+20', '2.52776394053478133209e+20'); + T('8.500211152e+9', '8.500211152e+9'); + T('1.36178922026634255436879e+23', '1.36178922026634255436879e+23'); + T('4.6398705910903109e+3', '-4.6398705910903109e+3'); + T('2.15872185740218265392874524e+18', '2.15872185740218265392874524e+18'); + T('2.4663508855569609277266393e-3', '-2.4663508855569609277266393e-3'); + T('5.247072789229625795e+11', '-5.247072789229625795e+11'); + T('1.142743622516581e-15', '-1.142743622516581e-15'); + T('3.70055552960951165e-4', '-3.70055552960951165e-4'); + T('1.01218e+3', '1.01218e+3'); + T('3.622286100282e+2', '3.622286100282e+2'); + T('9.5526239814e+3', '9.5526239814e+3'); + T('2.7619598176203983624994361644e+28', '2.7619598176203983624994361644e+28'); + T('6.8696488497688008067537526e-6', '6.8696488497688008067537526e-6'); + T('2.48936e+1', '2.48936e+1'); + T('3.27658301230616e+14', '3.27658301230616e+14'); + T('2.1887387e+0', '-2.1887387e+0'); + T('1.4779696309033248e+16', '1.4779696309033248e+16'); + T('1.471782313713309789663e+4', '1.471782313713309789663e+4'); + T('2.0674554e+2', '-2.0674554e+2'); + T('1.763392540310312024e+9', '1.763392540310312024e+9'); + T('2.66209467493293140387227569744e+26', '-2.66209467493293140387227569744e+26'); + T('1.4522423854706487171671160683e-16', '1.4522423854706487171671160683e-16'); + T('5.5534571375626084341933639e-18', '-5.5534571375626084341933639e-18'); + T('3.670610508911e-18', '-3.670610508911e-18'); + T('1.8e+1', '1.8e+1'); + T('4.21466540619392e+14', '-4.21466540619392e+14'); + T('4.57881788773078611890575215e-13', '-4.57881788773078611890575215e-13'); + T('1.14912007700989046355e+20', '1.14912007700989046355e+20'); + T('1.10572e+0', '1.10572e+0'); + T('5.45027073427600086838788178e+8', '5.45027073427600086838788178e+8'); + T('5.3607527344097728e-14', '-5.3607527344097728e-14'); + T('1.20985e+0', '1.20985e+0'); + T('2.173758396975e+4', '-2.173758396975e+4'); + T('1.443459545123362e+10', '1.443459545123362e+10'); + T('8.26154936079048787963e-19', '8.26154936079048787963e-19'); + T('1.24e+0', '-1.24e+0'); + T('6.61e+1', '6.61e+1'); + T('8.37241281e-15', '-8.37241281e-15'); + T('1.4673863119972e+5', '1.4673863119972e+5'); + T('1.052445707646628e+15', '1.052445707646628e+15'); + T('2.770216401480935105227985046e+0', '2.770216401480935105227985046e+0'); + T('1e-2', '-1e-2'); + T('2.0530189404000503380382112e+7', '-2.0530189404000503380382112e+7'); + T('7.73428930734513129e+5', '7.73428930734513129e+5'); + T('2.969e-2', '2.969e-2'); + T('3.355869237729311e-19', '3.355869237729311e-19'); + T('7.585426017526e+3', '7.585426017526e+3'); + T('1.6544419963706446557685646278e+23', '-1.6544419963706446557685646278e+23'); + T('2.92136474375552641396809118574e-18', '2.92136474375552641396809118574e-18'); + T('3.38424409165604660854e+4', '-3.38424409165604660854e+4'); + T('1.173591570196350093112e+11', '-1.173591570196350093112e+11'); + T('7.8375092064291352e+1', '-7.8375092064291352e+1'); + T('1.88191e+3', '1.88191e+3'); + T('4.6761e-2', '-4.6761e-2'); + T('5.988129995539574e+10', '5.988129995539574e+10'); + T('2.5390529009345115e+2', '2.5390529009345115e+2'); + T('2.132229656150917182e+5', '-2.132229656150917182e+5'); + T('1.0719725506854825717e-19', '-1.0719725506854825717e-19'); + T('4.3681500769125575941008112847e+28', '-4.3681500769125575941008112847e+28'); + T('1.35927075893264893848008382e-13', '-1.35927075893264893848008382e-13'); + T('1.9240692976139e-18', '-1.9240692976139e-18'); + T('4.49668506275546883445e+20', '4.49668506275546883445e+20'); + T('5.19198662387790072e+9', '5.19198662387790072e+9'); + T('1.51188431866457089e+16', '-1.51188431866457089e+16'); + T('1.4463331863500941e+12', '1.4463331863500941e+12'); + T('1e+0', '-1e+0'); + T('2.50029927958615945e+1', '-2.50029927958615945e+1'); + T('1.001415164502846757e+3', '-1.001415164502846757e+3'); + T('1.45526428e+8', '-1.45526428e+8'); + T('5.813181844e-3', '-5.813181844e-3'); + T('2.4481022856740302965057941113e+10', '2.4481022856740302965057941113e+10'); + T('5.55e+1', '-5.55e+1'); + T('3.36356932710712e+11', '-3.36356932710712e+11'); + T('5.28080163e+8', '5.28080163e+8'); + T('5.3879740593083469994135e+13', '-5.3879740593083469994135e+13'); + T('6.6759148438881472902e+19', '-6.6759148438881472902e+19'); + T('1.26e-20', '1.26e-20'); + T('1.005680289388988e+10', '-1.005680289388988e+10'); + T('1.4855958598e+0', '-1.4855958598e+0'); + T('2.94014963598446075495453768e+24', '-2.94014963598446075495453768e+24'); + T('5.219896118644e+12', '-5.219896118644e+12'); + T('6.8e+0', '-6.8e+0'); + T('5.492e-9', '-5.492e-9'); + T('1.0038e+4', '-1.0038e+4'); + T('2.781382585e+5', '2.781382585e+5'); + T('3.30150670653876784e+17', '-3.30150670653876784e+17'); + T('1.87927e+5', '-1.87927e+5'); + T('1.4774557974305197453804758396e+16', '-1.4774557974305197453804758396e+16'); + T('6.05644990832733182152086098e+18', '-6.05644990832733182152086098e+18'); + T('2.78459055955765755e-14', '-2.78459055955765755e-14'); + T('2.66385931106395122e+6', '2.66385931106395122e+6'); + T('3.3683073647556597682246e-9', '-3.3683073647556597682246e-9'); + T('7.081e+2', '7.081e+2'); + T('2.73122035866217320954404e+6', '2.73122035866217320954404e+6'); + T('1.2434001e-7', '1.2434001e-7'); + T('1.135877627944001e+14', '1.135877627944001e+14'); + T('5.59534951548380080886141393126e+21', '5.59534951548380080886141393126e+21'); + T('5.7723782191795798882571e+9', '-5.7723782191795798882571e+9'); + T('1.5162957113185485632499369443e-12', '-1.5162957113185485632499369443e-12'); + T('4.29309951955288963780116e+6', '4.29309951955288963780116e+6'); + T('3.9722643229317825409e+13', '3.9722643229317825409e+13'); + T('1.011489199242414759e-17', '1.011489199242414759e-17'); + T('1.253643670639200989056241e-19', '-1.253643670639200989056241e-19'); + T('4.4836025129185e+8', '4.4836025129185e+8'); + T('6.3777231879677253018091496e-20', '6.3777231879677253018091496e-20'); + T('4.76278478201471177044e+11', '4.76278478201471177044e+11'); + T('1.05e+2', '-1.05e+2'); + T('8.2407974521826916377252018422e+18', '8.2407974521826916377252018422e+18'); + T('2.00932156087e+4', '2.00932156087e+4'); + T('1.965992456941204354956867603e-17', '-1.965992456941204354956867603e-17'); + T('5.333218599567659131313e+2', '-5.333218599567659131313e+2'); + T('1.286162439284e+10', '-1.286162439284e+10'); + T('8.1336617205815143346477183e+16', '-8.1336617205815143346477183e+16'); + T('1.762845949430042e+13', '-1.762845949430042e+13'); + T('7.837280986421e+12', '7.837280986421e+12'); + T('2.84048190010833793e+13', '2.84048190010833793e+13'); + T('3.25755301782427035301e+20', '-3.25755301782427035301e+20'); + T('2.58959421885729898387238225e+13', '2.58959421885729898387238225e+13'); + T('1.8851093513683294449e+10', '-1.8851093513683294449e+10'); + T('1.21916240456196024666e+20', '-1.21916240456196024666e+20'); + T('5.840503333749926899855535241e-6', '5.840503333749926899855535241e-6'); + T('2.998914116e+4', '2.998914116e+4'); + T('5.97277308650934e+10', '5.97277308650934e+10'); + T('6.56e+2', '6.56e+2'); + T('1.56235984592541e+12', '-1.56235984592541e+12'); + T('3.71e+1', '3.71e+1'); + T('5.41937441824138694e+16', '-5.41937441824138694e+16'); + T('6.116633e-5', '-6.116633e-5'); + T('5.45e+2', '-5.45e+2'); + T('2.9449785444e+3', '-2.9449785444e+3'); + T('6.6706550091070638245894e+7', '-6.6706550091070638245894e+7'); + T('1.39231027e-9', '1.39231027e-9'); + T('7.45311483e+8', '7.45311483e+8'); + T('7.6856950378651228179663e+18', '7.6856950378651228179663e+18'); + T('3.094636736003620629e+8', '-3.094636736003620629e+8'); + T('5.876896131624540495694931644e+7', '-5.876896131624540495694931644e+7'); + T('1.10975974e+8', '-1.10975974e+8'); + T('1.741e+0', '1.741e+0'); + T('2.351595813466272408066e-4', '-2.351595813466272408066e-4'); + T('1.519156959043394168562e+20', '1.519156959043394168562e+20'); + T('1.620081571051799e+7', '1.620081571051799e+7'); + T('7.316815038867932520586761e+23', '7.316815038867932520586761e+23'); + T('3.094134522833396822e+0', '3.094134522833396822e+0'); + T('1.168234556e+2', '-1.168234556e+2'); + T('1.503324779432e+4', '1.503324779432e+4'); + T('5.6710777e-9', '5.6710777e-9'); + T('2.1463873346182e-6', '2.1463873346182e-6'); + T('1.2934324795526700185311026007e+28', '-1.2934324795526700185311026007e+28'); + T('1.237009087265757433674283664e+11', '1.237009087265757433674283664e+11'); + T('1.226806049797304683867e-18', '1.226806049797304683867e-18'); + T('5e+0', '-5e+0'); + T('1.091168788407093537887970016e+15', '-1.091168788407093537887970016e+15'); + T('3.87166413612272027e+12', '3.87166413612272027e+12'); + T('1.411514e+5', '1.411514e+5'); + T('1.0053454672509859631996e+22', '1.0053454672509859631996e+22'); + T('6.9265714e+0', '6.9265714e+0'); + T('1.04627709e+4', '1.04627709e+4'); + T('1.74378341199e+9', '1.74378341199e+9'); + T('8.427721739784805398864e+21', '-8.427721739784805398864e+21'); + T('3.0433401636913618083715e-20', '3.0433401636913618083715e-20'); + T('8.596751182989204e-17', '8.596751182989204e-17'); + T('2.83012114501087201358049280895e-3', '2.83012114501087201358049280895e-3'); + T('6.0621417107465763e-13', '6.0621417107465763e-13'); + T('7.927e+0', '7.927e+0'); + T('1.95309091153617e+6', '-1.95309091153617e+6'); + T('3.479245772e-4', '3.479245772e-4'); + T('9.1256366370332e-20', '-9.1256366370332e-20'); + T('6.357737394e-19', '-6.357737394e-19'); + T('4.016038725869e-1', '4.016038725869e-1'); + T('2.3600611340992838105408e-2', '-2.3600611340992838105408e-2'); + T('1.1982e+3', '1.1982e+3'); + T('1.895744317788222501065084139e+17', '1.895744317788222501065084139e+17'); + T('3.2450271098259184465439822499e+5', '3.2450271098259184465439822499e+5'); + T('1.1699868235212007000965506e+25', '-1.1699868235212007000965506e+25'); + T('7.988985662262809183538221216e+27', '-7.988985662262809183538221216e+27'); + T('1.476540158366695285164548325e+7', '-1.476540158366695285164548325e+7'); + T('8.8357361253e+1', '-8.8357361253e+1'); + T('2.6019583787920961e+15', '-2.6019583787920961e+15'); + T('2.617913486220978003463345e+24', '2.617913486220978003463345e+24'); + T('8.22380392476331112656616e+14', '-8.22380392476331112656616e+14'); + T('5.738943e+2', '-5.738943e+2'); + T('1.04315155601043625824403526143e+24', '-1.04315155601043625824403526143e+24'); + T('5.1800101324564241e-1', '-5.1800101324564241e-1'); + T('3.5101750876959537987e-8', '3.5101750876959537987e-8'); + T('2.1857385393e+3', '-2.1857385393e+3'); + T('2.29674272702302434336e+13', '2.29674272702302434336e+13'); + T('2.64606405319747e+14', '2.64606405319747e+14'); + T('2.1888980498865372455451e+1', '-2.1888980498865372455451e+1'); + T('1.51602e+0', '-1.51602e+0'); + T('5.8047548e+7', '5.8047548e+7'); + T('1.17525103769842428108679e+6', '-1.17525103769842428108679e+6'); + T('8.47642371517851e-1', '-8.47642371517851e-1'); + T('6.0574e+0', '-6.0574e+0'); + T('2.59202859815854485362744156646e-3', '2.59202859815854485362744156646e-3'); + T('1.040746238422014004691755e+15', '1.040746238422014004691755e+15'); + T('1.7064734811115159257936e+22', '-1.7064734811115159257936e+22'); + T('7.26051238227573319908663048e+26', '7.26051238227573319908663048e+26'); + T('7.4795685183599759424050861e+6', '-7.4795685183599759424050861e+6'); + T('2.9817e-16', '-2.9817e-16'); + T('2.298907884272330951e+6', '2.298907884272330951e+6'); + T('4.0531847e-8', '4.0531847e-8'); + T('2.6189e+4', '-2.6189e+4'); + T('3.911906e+3', '-3.911906e+3'); + T('9.408498865993245868145865993e+2', '-9.408498865993245868145865993e+2'); + T('4.05451047373376774e-7', '4.05451047373376774e-7'); + T('2.08836709959016517e+6', '-2.08836709959016517e+6'); + T('6.3417891663e+10', '6.3417891663e+10'); + T('8.08596745e+9', '8.08596745e+9'); + T('2.5865615419545921e+13', '2.5865615419545921e+13'); + T('1.5731674925482283378868e+22', '-1.5731674925482283378868e+22'); + T('1.19068602e+1', '-1.19068602e+1'); + T('5.3687670881355020502668e-3', '-5.3687670881355020502668e-3'); + T('1.2488884456407e+10', '-1.2488884456407e+10'); + T('2.51800212e+3', '-2.51800212e+3'); + T('3.738131519976930832896022e+24', '-3.738131519976930832896022e+24'); + T('6e+0', '6e+0'); + T('1.24131e+5', '-1.24131e+5'); + T('9.22635e+3', '-9.22635e+3'); + T('4e+0', '4e+0'); + T('1.83e+1', '1.83e+1'); + T('1.846025e+6', '-1.846025e+6'); + T('1.27e+1', '1.27e+1'); + T('2.24e+1', '2.24e+1'); + T('2.476323257183413822109348e-18', '-2.476323257183413822109348e-18'); + T('1.926752842e-7', '1.926752842e-7'); + T('8.80612762892681839383e-19', '8.80612762892681839383e-19'); + T('1.101085e+3', '-1.101085e+3'); + T('3.4906077350467600648759e+22', '3.4906077350467600648759e+22'); + T('1.04494855994965735236868e+23', '1.04494855994965735236868e+23'); + T('1.58387879923230822739579e+19', '1.58387879923230822739579e+19'); + T('4.213902971419525700930675e+19', '-4.213902971419525700930675e+19'); + T('9.13804011600009749427632034e+0', '9.13804011600009749427632034e+0'); + T('1.84491548817806624708211e+23', '-1.84491548817806624708211e+23'); + T('1.948625124086563483825890385e+22', '1.948625124086563483825890385e+22'); + T('1.3e+0', '1.3e+0'); + T('1.32939216745e+12', '1.32939216745e+12'); + T('7.078251628e+6', '7.078251628e+6'); + T('1.7313022e+2', '1.7313022e+2'); + T('3.415584872774897359156e+0', '3.415584872774897359156e+0'); + T('5.51297107980065895009041695e+23', '5.51297107980065895009041695e+23'); + T('2.5113503918614988744859e-15', '2.5113503918614988744859e-15'); + T('1.630239450859331215249576367e+27', '1.630239450859331215249576367e+27'); + T('5.4721390329589760404415744136e+18', '-5.4721390329589760404415744136e+18'); + T('2.945751278429364126367812e-17', '2.945751278429364126367812e-17'); + T('4.2782880893227686126997e+4', '4.2782880893227686126997e+4'); + T('1.9847055931e+1', '-1.9847055931e+1'); + T('2.261026e+3', '-2.261026e+3'); + T('1.52615708575e+9', '1.52615708575e+9'); + T('4.55553743697189921932e+5', '-4.55553743697189921932e+5'); + T('4.222829719336993778496867e+12', '4.222829719336993778496867e+12'); + T('4.485e+3', '4.485e+3'); + T('5.2e+0', '-5.2e+0'); + T('1.845091473820299081635836e+6', '1.845091473820299081635836e+6'); + T('5.46863948617381450255744e-14', '-5.46863948617381450255744e-14'); + T('3.0245e+4', '3.0245e+4'); + T('1.53486267119215101935302e-6', '-1.53486267119215101935302e-6'); + T('6.4843132478784299210571e+16', '6.4843132478784299210571e+16'); + T('4.386363241636966071e+13', '-4.386363241636966071e+13'); + T('7.581683508504e+6', '7.581683508504e+6'); + T('1.09730944345409824e+16', '1.09730944345409824e+16'); + T('3.594503e+6', '-3.594503e+6'); + T('4.443273220375505949638436659e+1', '4.443273220375505949638436659e+1'); + T('1.70867026016477719112e+20', '-1.70867026016477719112e+20'); + T('1.29553439888e+11', '-1.29553439888e+11'); + T('1.1130502308247230952431e-11', '1.1130502308247230952431e-11'); + T('6.058565749e+10', '-6.058565749e+10'); + T('3.87180284987679e-10', '-3.87180284987679e-10'); + T('3.49184930268913133535e+19', '3.49184930268913133535e+19'); + T('9e+0', '9e+0'); + T('1.28461567447442016927071963077e-8', '-1.28461567447442016927071963077e-8'); + T('2.72815445800161137e-19', '2.72815445800161137e-19'); + T('5.849268583211e-4', '5.849268583211e-4'); + T('3.19417089569942412006e+3', '-3.19417089569942412006e+3'); + T('1.9e+1', '-1.9e+1'); + T('3.3872886317814608310483125577e+6', '3.3872886317814608310483125577e+6'); + T('3.99977971703789643632671956e+9', '-3.99977971703789643632671956e+9'); + T('1.998549e-5', '1.998549e-5'); + T('7.18512424913e-15', '7.18512424913e-15'); + T('9.365052273317995234261e+21', '9.365052273317995234261e+21'); + T('2.569e+3', '-2.569e+3'); + T('9.460553674215355e+3', '-9.460553674215355e+3'); + T('1.22541e+2', '-1.22541e+2'); + T('2.180882957e-2', '-2.180882957e-2'); + T('3.963983308804e-5', '3.963983308804e-5'); + T('4.9059909584804e+11', '4.9059909584804e+11'); + T('3.89345544e+8', '-3.89345544e+8'); + T('3.13811755993550161609599737307e+9', '3.13811755993550161609599737307e+9'); + T('2.1684124657298e+7', '2.1684124657298e+7'); + T('4e+0', '4e+0'); + T('1.89e+1', '-1.89e+1'); + T('1.0500428125617165569673e+6', '1.0500428125617165569673e+6'); + T('3.45971690973815432646e+9', '-3.45971690973815432646e+9'); + T('4e+0', '-4e+0'); + T('1.2826728638181755448600624e+4', '-1.2826728638181755448600624e+4'); + T('5.2490288314345e+5', '5.2490288314345e+5'); + T('8.46401e+0', '8.46401e+0'); + T('2.15070506987596858e-9', '2.15070506987596858e-9'); + T('1.4569180505e+5', '-1.4569180505e+5'); + T('1.75535288191468954993283e+8', '-1.75535288191468954993283e+8'); + T('1.83e-19', '1.83e-19'); + T('3.77847393193912874449578e+6', '3.77847393193912874449578e+6'); + T('2.823610210086368e+0', '2.823610210086368e+0'); + T('3.2326e+4', '-3.2326e+4'); + T('7.21208310236919171558e+7', '-7.21208310236919171558e+7'); + T('2.537182162994085967e+11', '2.537182162994085967e+11'); + T('2.4881474405e-15', '2.4881474405e-15'); + T('6.8484737e+6', '6.8484737e+6'); + T('8.09636762896763e+1', '8.09636762896763e+1'); + T('1.387805e+1', '-1.387805e+1'); + T('1.949086825141843503e-3', '-1.949086825141843503e-3'); + T('8.22006002683570972726913386e+26', '-8.22006002683570972726913386e+26'); + T('8.82e+1', '-8.82e+1'); + T('9.8e+0', '-9.8e+0'); + T('5.73018e+5', '-5.73018e+5'); + T('2.039854296e-18', '2.039854296e-18'); + T('3.85806698884e+2', '3.85806698884e+2'); + T('7.761351239715879e-15', '-7.761351239715879e-15'); + T('2.37976961448611739e-13', '2.37976961448611739e-13'); + T('1.625694436559179391897024e-12', '-1.625694436559179391897024e-12'); + T('2.612e+1', '-2.612e+1'); + T('8.317023570754122191146041e+24', '8.317023570754122191146041e+24'); + T('8.128823e-9', '8.128823e-9'); + T('3.316888938212137e-7', '3.316888938212137e-7'); + T('4.590734e+2', '4.590734e+2'); + T('9.95284154681380079083087718e-7', '9.95284154681380079083087718e-7'); + T('1.379051e-15', '1.379051e-15'); + T('2.543347781939297185736e+21', '-2.543347781939297185736e+21'); + T('1.41496183748704601485699e-10', '-1.41496183748704601485699e-10'); + T('3.11665e+5', '-3.11665e+5'); + T('6.4377728353162694052697e+1', '6.4377728353162694052697e+1'); + T('1.36920115218557491e+17', '1.36920115218557491e+17'); + T('1.27e+1', '-1.27e+1'); + T('5.1e-4', '5.1e-4'); + T('4.124e+3', '4.124e+3'); + T('7.96e+0', '7.96e+0'); + T('1.0109019145999979839008159507e-20', '1.0109019145999979839008159507e-20'); + T('1.507784067070212e+12', '1.507784067070212e+12'); + T('5.03530585620864526983697e+10', '5.03530585620864526983697e+10'); + T('5.87771648701709094e-3', '-5.87771648701709094e-3'); + T('2.6641175511284360931e+19', '2.6641175511284360931e+19'); + T('3.5430949752e+3', '-3.5430949752e+3'); + T('1.434481e+6', '1.434481e+6'); + T('6.95e+0', '6.95e+0'); + T('2.7922814988487634078255e+17', '2.7922814988487634078255e+17'); + T('1e+0', '-1e+0'); + T('1.34094272275111823704509269719e+9', '-1.34094272275111823704509269719e+9'); + T('5.2e+0', '5.2e+0'); + T('5.961731008805248930549e+0', '5.961731008805248930549e+0'); + T('1.95863217313239788358925850999e+27', '1.95863217313239788358925850999e+27'); + T('1.115927378282807678794111117e+18', '-1.115927378282807678794111117e+18'); + T('6.6448e-6', '-6.6448e-6'); + T('1.210298078691983e-7', '1.210298078691983e-7'); + T('1.55022703113469956595e+8', '-1.55022703113469956595e+8'); + T('2.519409262126392490249e+9', '-2.519409262126392490249e+9'); + T('8.3744112435155841906e+19', '8.3744112435155841906e+19'); + T('5.56052914013431e-4', '5.56052914013431e-4'); + T('1.847716075495989e+13', '-1.847716075495989e+13'); + T('5.78580529835020695846e+19', '-5.78580529835020695846e+19'); + T('7.3177e-15', '-7.3177e-15'); + T('5.8018949e+6', '-5.8018949e+6'); + T('1.234850494854913982840923624126e+30', '1.234850494854913982840923624126e+30'); + T('3.1e+0', '3.1e+0'); + T('3.085340434810406103e+4', '3.085340434810406103e+4'); + T('1.461332e+6', '1.461332e+6'); + T('2.042933164181166e-9', '2.042933164181166e-9'); + T('1.14852656434391849784404293276e-6', '1.14852656434391849784404293276e-6'); + T('8.56930722573e-11', '8.56930722573e-11'); + T('7.753629727831898e+11', '7.753629727831898e+11'); + T('2.5807119689e+5', '-2.5807119689e+5'); + T('6.5889872564e+7', '6.5889872564e+7'); + T('6.2e+0', '6.2e+0'); + T('7.16926024589772e+14', '-7.16926024589772e+14'); + T('2.444762609546357e-12', '2.444762609546357e-12'); + T('1.58017211706879e+2', '-1.58017211706879e+2'); + T('2.74612804105217564273009e+23', '-2.74612804105217564273009e+23'); + T('8.2105e+3', '-8.2105e+3'); + T('6.2289747e+7', '-6.2289747e+7'); + T('4.47847136680063365276e+21', '-4.47847136680063365276e+21'); + T('7.599263848474204e+15', '-7.599263848474204e+15'); + T('9.534064037670226206e-11', '-9.534064037670226206e-11'); + T('5.3511395608925655035624181e+7', '-5.3511395608925655035624181e+7'); + T('2.536656469414e+8', '2.536656469414e+8'); + T('4.454301005499233196018257e+16', '-4.454301005499233196018257e+16'); + T('2.3289800995961777747097e+10', '-2.3289800995961777747097e+10'); + T('2.7363696755334e+6', '-2.7363696755334e+6'); + T('2.56e+2', '2.56e+2'); + T('7.3430201092837e+2', '7.3430201092837e+2'); + T('1.114804e+5', '1.114804e+5'); + T('3.1845809556698336607622e+4', '-3.1845809556698336607622e+4'); + T('1.7780378655260403138e+19', '-1.7780378655260403138e+19'); + T('3.608970926e-15', '3.608970926e-15'); + T('1.949e+3', '-1.949e+3'); + T('1.9021837e+4', '-1.9021837e+4'); + T('1.5e+0', '1.5e+0'); + T('3.1155266673e+10', '-3.1155266673e+10'); + T('4e+0', '-4e+0'); + T('9.09316542545977506e+14', '9.09316542545977506e+14'); + T('2.15531740334146749845e+8', '2.15531740334146749845e+8'); + T('1.5605317646e+8', '1.5605317646e+8'); + T('3.8806066633613066e+13', '-3.8806066633613066e+13'); + T('1.653298e+6', '1.653298e+6'); + T('7.920024310736e-20', '7.920024310736e-20'); + T('2.27611872e+8', '2.27611872e+8'); + T('2.76569307109179036145271e-15', '-2.76569307109179036145271e-15'); + T('1.425171314e+8', '1.425171314e+8'); + T('1.3702555167748408653e+11', '-1.3702555167748408653e+11'); + T('5.146936435e+9', '5.146936435e+9'); + T('4.183285814905222880076696e+19', '-4.183285814905222880076696e+19'); + T('2.270923702039578057376e-16', '2.270923702039578057376e-16'); + T('9.4963549e-12', '9.4963549e-12'); + T('1.453060439e-3', '1.453060439e-3'); + T('2.97303365e+2', '2.97303365e+2'); + T('1.16485757109e+2', '-1.16485757109e+2'); + T('7.7984946334626919799413338378e+5', '-7.7984946334626919799413338378e+5'); + T('1.905453e+5', '1.905453e+5'); + T('5.36989497616503e-20', '5.36989497616503e-20'); + T('4.3e+0', '4.3e+0'); + T('2.70434008699476809368089518776e+25', '-2.70434008699476809368089518776e+25'); + T('2.8813069851e+10', '2.8813069851e+10'); + T('7e+0', '7e+0'); + T('1.0577487e-18', '-1.0577487e-18'); + T('6.8e+1', '6.8e+1'); + T('1e+0', '-1e+0'); + T('8.446803887694575079e+6', '-8.446803887694575079e+6'); + T('2.3384835e-6', '-2.3384835e-6'); + T('1.072e-13', '1.072e-13'); + T('7.13295350162e-5', '7.13295350162e-5'); + T('4.59897478609e+3', '4.59897478609e+3'); + T('4.11875744698515118e+11', '4.11875744698515118e+11'); + T('3.12339620225171e+5', '3.12339620225171e+5'); + T('3.79932554e+1', '3.79932554e+1'); + T('2.457332691061964e+4', '-2.457332691061964e+4'); + T('3.944602320705902e+6', '-3.944602320705902e+6'); + T('3.164305812145e+4', '-3.164305812145e+4'); + T('7.22239735515689399e+1', '-7.22239735515689399e+1'); + T('5.261981e+3', '-5.261981e+3'); + T('2.3642968462845e+7', '2.3642968462845e+7'); + T('3.9326785e+3', '-3.9326785e+3'); + T('8.5853e-11', '-8.5853e-11'); + T('2.60532943946e+0', '2.60532943946e+0'); + T('3.64630216318427246476533e+18', '-3.64630216318427246476533e+18'); + T('3.031732127749e-3', '3.031732127749e-3'); + T('2.49298080885329502254338e-12', '-2.49298080885329502254338e-12'); + T('8.81838341457179780743504843e+2', '-8.81838341457179780743504843e+2'); + T('2.285650225267766689304972e+5', '2.285650225267766689304972e+5'); + T('4.5790517211306242e+7', '4.5790517211306242e+7'); + T('3.0033340092338313923473428e+16', '-3.0033340092338313923473428e+16'); + T('2.83879929283797623e+1', '-2.83879929283797623e+1'); + T('4.5266377717178121183759377414e-5', '4.5266377717178121183759377414e-5'); + T('5.3781e+4', '-5.3781e+4'); + T('6.722035208213298413522819127e-18', '-6.722035208213298413522819127e-18'); + T('3.02865707828281230987116e+23', '-3.02865707828281230987116e+23'); + T('5.5879983320336874473209567979e+28', '-5.5879983320336874473209567979e+28'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js new file mode 100644 index 0000000..6a08514 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js @@ -0,0 +1,456 @@ +var count = (function baseIn(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, base) { + assert(expected, new BigNumber(value, base).toString()) + } + + log('\n Testing base-in...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // Test integers of all bases against Number.toString(base). + for (var i = 2; i < 37; i++) { + for (var j = -100; j < 101; j++) { + T(j.toString(), j.toString(i), i); + var k = Math.floor(Math.random() * Math.pow(2, Math.floor(Math.random() * 52) + 1)); + T(k.toString(), k.toString(i), i); + } + } + + T('0', 0, 2); + T('0', 0, 10); + T('0', -0, 36); + T('-5', -101, 2); + T('-101', -101, 10); + + // TEST NUMBERS WITH FRACTION DIGITS. + + // Test rounding. + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('1', '0.1', 2); + T('-1', '-0.1', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 1}); + T('0', '0.1', 2); + T('0', '-0.1', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 2}); + T('1', '0.1', 2); + T('0', '-0.1', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 3}); + T('0', '0.1', 2); + T('-1', '-0.1', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 4}); + T('1', '0.1', 2); + T('-1', '-0.1', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 5}); + T('0', '0.1', 2); + T('0', '-0.1', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 6}); + T('0', '0.1', 2); + T('0', '-0.1', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + T('999', '999.4', 10); + T('-999', '-999.4', 10); + T('1000', '999.500001', 10); + T('-1000', '-999.500001', 10); + + BigNumber.config({ROUNDING_MODE : 7}); + T('1', '0.1', 2); + T('0', '-0.1', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 8}); + T('0', '0.1', 2); + T('-1', '-0.1', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 3}); + T('546141272243.39871532041499605905', '111111100101000100011100111100010110011.011001100001001000110101000011011001100010111000110000101011000010100010110111100010010000011010100100001111010010100', 2); + T('-761392382117509615082995635394.835132598876953125', '-1001100111000011000100000100010111000100100100101110010100101000000110101101100101101101010011000010.110101011100101101000', 2); + T('18181', '100011100000101.00', 2); + T('-12.5', '-1100.10', 2); + T('43058907596428432974475252.68192645050244227178', '10001110011110000101000000111011011100000010011100000001111011111011101110111111110100.10101110100100101011101101011011001011110111001101', 2); + T('-50063197524405820261198.16624174237994681863', '-1010100110011110111001101110101001100100001000111000001111110000001101001110.001010101000111011010001100111101100000001111110011001111100001101111001', 2); + T('12659149135078325508.50965366452082459802', '1010111110101110010101010001000100111011000010010111110100000100.100000100111100010101001100111010110011101001011100101110', 2); + T('-6387062313767439324325.28595431079156696797', '-1010110100011111001001011101001100100001111011000110000100101010010100101.0100100100110100010011010011110100', 2); + T('1396.09066858848154879524', '10101110100.0001011100110110000011100111111001001101100', 2); + T('-13243297892469.48301514260489275543', '-11000000101101110010000100010000100001110101.0111101110100110111000010110000011110101111101100110', 2); + T('343872.5', '1010011111101000000.10', 2); + T('-27858197522682350277663998.90234375', '-1011100001011001100111110100111101101100011110100111111111001110111101001110011111110.111001110', 2); + T('11350269087477005972403595905463622183936313327592261705214528.375', '11100010000001100111100001010001011000011110001001101101000011011111011100111010110101011100111001110110111111001001000111101000100100011110011011110011001011101010001100001001111010111110010101001000000.011', 2); + T('-4582111067006609431937422134.8848765093534893822', '-11101100111000111011110000101010101111000001100010100011111001000111010110000001001100110110.11100010100001110100010001010100101011', 2); + T('517236958880385002164572266126922644', '11000111001110111000000001111111110000110111101111101110011100111000000111101011000000001100011110010000101001110010100', 2); + T('-21553306071707458208211095787817816237164981584743591.29723221556402690258', '-111001100110110101111011010110011000011000100110010000110101110110101011101011100001010010101000000110111100101000110100111001000111001101111100100110111001010100110010100111.01001100000101110110100100010101001010100100010100101', 2); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 6}); + T('90182851032808914967166718343839124510737262515334936.05372908711433410645', '11110001000010011001110001010101001001001000011011110000101001011001110011010100000001001000011000010101101101000111110111101000001101000101100000101011100110000010111100011000.0000110111000001001100001', 2); + T('-328.28125', '-101001000.010010', 2); + T('606266547022938105478897519250152.63383591632958904971', '1110111100100001010001101110110111100101000011011110001111001011010010100111110100011000101110100101011101000.1010001001000011000100100001001110101010011100000110001', 2); + T('-1236693955.36249679178679391345', '-1001001101101100111001111000011.010111001100110010010110111110011010000100010011010101010111111100000101001010101', 2); + T('6881574.93937801730607199391', '11010010000000100100110.1111000001111011000100111110011011101001001100001101001011001010111', 2); + T('-341919.144535064697265625', '-1010011011110011111.0010010100000000010', 2); + T('97.10482025146484375', '1100001.000110101101010110000', 2); + T('-120914.40625', '-11101100001010010.01101', 2); + T('8080777260861123367657', '1101101100000111101001111111010001111010111011001010100101001001011101001', 2); + T('-284229731050264281.85682739554010822758', '-1111110001110010010110111100111001110110110001011011011001.11011011010110010000101001001010001010010110', 2); + T('1243984453515709828041525111137171813652.844970703125', '1110100111110111101011000011100001010011001110000000111100101100010010000100010000101010011101011011001000001111100011010100010100.110110000101', 2); + T('-4208558618976524911747722597.24609066132409893216', '-11011001100100111100111100111110001011100111101001010011111110000111001100101110110101100101.00111110111111111100110000101110001111001110111010101110000111110100111001110011010001101111001101011000001011100101111011110000001101001111000', 2); + T('1268683183361093666211101090.703125', '1000001100101101110000111010010111000000111000111110001110111001010100000111111100110100010.10110100', 2); + T('-105641.26311671037711231997', '-11001110010101001.010000110101101110011101111000100001100111001110000111000011001001001000110101110001101111001101000000111000011100001001011101111100001011101010111101100010010001110111001110101010110001101110010011', 2); + T('473340007892909227396827894000137.5', '1011101010110011001000000110110101100101110011110011001100111100110101100011010101000010000000010101000001001.1000', 2); + T('-32746.47657717438337214735', '-111111111101010.011110100000000011110110001100011111111100100101111010110001110100001011010010001011101111001100110011001010010110001000111100011100', 2); + T('192.49070453643798828125', '11000000.01111101100111101101000', 2); + T('-1379984360196.47138547711438150145', '-10100000101001101011110100100001100000100.01111000101011001011011111111000000001', 2); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); + T('-729.0001524157902758725803993293705227861606', '-1000000.00000001', 3); + T('-4096.0000152587890625', '-1000000.00000001', 4); + T('-15625.00000256', '-1000000.00000001', 5); + T('-46656.0000005953741807651272671848803536046334', '-1000000.00000001', 6); + T('-117649.0000001734665255574303432156634721649541', '-1000000.00000001', 7); + T('-262144.000000059604644775390625', '-1000000.00000001', 8); + T('-531441.0000000232305731254187746379102835730507', '-1000000.00000001', 9); + T('-1000000.00000001', '-1000000.00000001', 10); + T('-1771561.0000000046650738020973341431092840981941', '-1000000.00000001', 11); + T('-2985984.000000002325680393613778387440938881268', '-1000000.00000001', 12); + T('-4826809.0000000012258947398402566721524761600832', '-1000000.00000001', 13); + T('-7529536.0000000006776036154587122781861854381443', '-1000000.00000001', 14); + T('-11390625.0000000003901844231062338058222831885383', '-1000000.00000001', 15); + T('-16777216.00000000023283064365386962890625', '-1000000.00000001', 16); + T('-24137569.0000000001433536083296850401481727781882', '-1000000.00000001', 17); + T('-34012224.0000000000907444262711670884293370452072', '-1000000.00000001', 18); + T('-47045881.0000000000588804597472215429921222500439', '-1000000.00000001', 19); + T('-64000000.0000000000390625', '-1000000.00000001', 20); + T('-85766121.0000000000264390375792455941496210138949', '-1000000.00000001', 21); + T('-113379904.0000000000182229445394427114965206410085', '-1000000.00000001', 22); + T('-148035889.0000000000127696005408659110598172017909', '-1000000.00000001', 23); + T('-191102976.0000000000090846890375538218259411675049', '-1000000.00000001', 24); + T('-244140625.0000000000065536', '-1000000.00000001', 25); + T('-308915776.0000000000047886513275010026255956100003', '-1000000.00000001', 26); + T('-387420489.0000000000035407061614721497695336509027', '-1000000.00000001', 27); + T('-481890304.0000000000026468891228855948366647868677', '-1000000.00000001', 28); + T('-594823321.000000000001999014833671504164315094574', '-1000000.00000001', 29); + T('-729000000.0000000000015241579027587258039932937052', '-1000000.00000001', 30); + T('-887503681.0000000000011724827159637921277158030113', '-1000000.00000001', 31); + T('-1073741824.0000000000009094947017729282379150390625', '-1000000.00000001', 32); + T('-1291467969.0000000000007110309102419347878538765581', '-1000000.00000001', 33); + T('-1544804416.0000000000005599750325378321880787999147', '-1000000.00000001', 34); + T('-1838265625.0000000000004440743054270216786320984887', '-1000000.00000001', 35); + T('-2176782336.0000000000003544704151217464391770978328', '-1000000.00000001', 36); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); + T('1072424547177.982891327541533302850175278158817253467459228776101', 'donxvwix.zdts', 36); + + BigNumber.config({DECIMAL_PLACES : 86}); + T('824178538787196749922434027872451367594239056.93473392033316110609748881918323116875731371037529199959272159196515804304815690839727', '402kfhkd37bt5n8scr1ir9ndlrnipig.s17oe7rkhi91bh', 30); + + BigNumber.config({DECIMAL_PLACES : 84}); + T('9560389177469634483515162.499335215204179931606951906984830542647805834768203380512715304247460734647288652625', '195qdkkqsa8shmhp9e.edr89', 29); + + BigNumber.config({DECIMAL_PLACES : 65}); + T('5955289028666603391738616069969.70235175643053599414353772852590894151261634747374296179598348968', '8qp28dk3js2iqksmqaqnq.lntnif5qh', 31); + + BigNumber.config({DECIMAL_PLACES : 49}); + T('27603501710202437282037.4945845176631161140013607910579053986520224457133', '42545302442500101544532043113.254455200225412543300022520330204033', 6); + + BigNumber.config({DECIMAL_PLACES : 39}); + T('9464300204295306111422098057.77248824166891668678144149703717008528', '25473f3dbce5cf3hg8318d7.dg52d120b14ea966a7ag06a2gh03', 18); + + BigNumber.config({DECIMAL_PLACES : 15}); + T('133262758349237628352120716402.993431117739119', '3bkobquqthhfbndsmv3i.vp8o0sc4ldtji02mmgqr7blpdjgk', 32); + + BigNumber.config({DECIMAL_PLACES : 65}); + T('171510920999634527633.53051379043557196404057602235264411208736518600450525086556631034', '1fqecn4264r1is.ijur8yj41twl9', 35); + + BigNumber.config({DECIMAL_PLACES : 48}); + T('325927753012307620476767402981591827744994693483231017778102969592507', 'c16de7aa5bf90c3755ef4dea45e982b351b6e00cd25a82dcfe0646abb', 16); + + BigNumber.config({DECIMAL_PLACES : 48}); + T('72783.559378210242248003991012349918599484318629885897', '11c4f.8f33690f15e13146d99092446da', 16); + + BigNumber.config({DECIMAL_PLACES : 81}); + T('8535432796511493691316991730196733707212461.36382685871580896850891461623808', '9l0ah4mf8a0kcgn44oji4kh7l6fbenb.929jlggo43612jfn', 25); + + BigNumber.config({DECIMAL_PLACES : 7}); + T('0', '0', 2); + T('3', '3', 24); + T('0.037037', '0.1', 27); + T('101412023101671912143604060399016691636944374947585694881897391246499475847835837224977373985157443438754012038820105175407623679155088073411120684342336808325631625647896282357928709212286943830565579566232670291284084535962556769836340401310575784301282705195128879424575312893.9', '999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991999999999999999999999999999999999999', 11); + T('15398955012055570438.9425184', 'ST87ST87ST87S.S87TS87TS87TS', 30); + T('2126934655697951.030303', '11111111111.1111111111111', 34); + T('-288494149172542947905560340081675757349.9789739', '-P98IJYP96JHYP95DPHJWPH09Y.Y98HO8WH58HW', 35); + + BigNumber.config({DECIMAL_PLACES : 31}); + T('4060090888512781039564383580983002345701981946441239.3428571428571428571428571428571', '4hv6vl92gvkmumr0a6ley0dhkwmwfe35oo.c', 35); + + BigNumber.config({DECIMAL_PLACES : 90}); + T('20398136837.975941624007641435905199481124700109083958314345873245346912136478926756110974638825468924', '5MI4K5MF.MA66B0L4HK8DK35LI3D0G9JFF7LBB27LAKH3E4FCEJM', 23); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('42689628837110945219.60963984922125154547359100149049425936', 'D37AFB2193DJ265.CGHI7F1BK1I9GJ', 21); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('893835640746065892983175797034880314945754459977061255725623898879842611', '4231231434203102220114420330232412332321132204022241104411014023324140104333412232222433424401214430421', 5); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('175', '67', 28); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('683674717563732788139425742102304147', '23BXVQVK5NK29XCNPM7JWQQC', 35); + + BigNumber.config({DECIMAL_PLACES : 63}); + T('21872738004815869.777777777777777777777777777777777777777777777777777777777777778', 'E8NB0D88AN2D.IG', 24); + + BigNumber.config({DECIMAL_PLACES : 2}); + T('4839094569478687835499021764036676797809986482983355.46', '9G041CFCPN92FSECBIHHL1F1I74FJMGAKTR.EAJ7JQ', 31); + + BigNumber.config({DECIMAL_PLACES : 2}); + T('198496092814270915085258754228681831655498041942', '24310400201333231203024322334002413400114320223240014320424444320232', 5); + + BigNumber.config({DECIMAL_PLACES : 5}); + T('7371249.07083', '93089.23M993NGABNLEP', 30); + + BigNumber.config({DECIMAL_PLACES : 47}); + T('799580158552527670.51524163982781306375625835799992154433181428013', '1C5C994CD5A7E49A.7ADE19484CE921B8EE7', 15); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('16165422251964685360633312857381850497426314130782805.0722805578590765752365085976081394656988159695365026477063128458', '184254BE3B14F86L7HPKEOIIJKHCQ3DDBCPG5.20IJJ', 28); + + BigNumber.config({DECIMAL_PLACES : 66}); + T('321903599394345741344181790866033344020400577177.313819548430693134687858394581066124770210878514089611637812764975', 'GKE2D93H4K55C41EA627I1867CEFFCHBHE8I.6C85JF7D0BFDJFK4K', 21); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('66906978329149775053912152738679.85034153550858840284188803538614532877', '2011110022202010100200021000121022200222101110012102220102212010111.21122122002110012111112102002110221102120102', 3); + + BigNumber.config({DECIMAL_PLACES : 49}); + T('1334535467.5658391510074236740492770511046811319813437111801', '45033235646.365040260503443445435151335014', 7); + + BigNumber.config({DECIMAL_PLACES : 62}); + T('26234523211578269977959969', 'LMDG5KNKLAUCSCNH1.0', 32); + + BigNumber.config({DECIMAL_PLACES : 21}); + T('572315667420.390625', '10250053005734.31', 8); + + BigNumber.config({DECIMAL_PLACES : 0}); + T('135378457250661080667637636173904073793598540954140', '1002012000221022001212121111002202200112011211012200211202012002222102020101100001022121022011000222110010.012011121', 3); + T('19121180169114878494408529193061279888621355', '30130433145052134410320001411315120554033203511455405455', 6); + T('121756633', '1I0JBBC.F628AF202451951181911H3HGID95I855056I', 20); + T('3943269', '7370130.225184', 9); + T('491578', '1700072.2013436326', 8); + T('7793119763346', '6A06CF7K7G.58CD39A32GE', 22); + T('7529497809730458840', '4BI52A83H0F7720.6G912C3J4I6H7HI1I41', 20); + T('46865454464741700656', 'BF6CDEA9FDBKKB.6G9A74QO718PHAK', 27); + T('304', 'F4.18180D', 20); + T('744', '453.61845741C18C5B7AC08A', 13); + T('246', '77.MS', 34); + T('191110529149', '2617704640174.75763527113244751520622', 8); + T('6', '6.8E2FCGH', 18); + T('11952558583', '49E4EDC8C.C86', 15); + T('1486467157880871503427980640713668', 'C0776B7908614278DD33549496D36.539A196725', 14); + T('13069', '5C43.B25BB7338', 13); + T('811', 'R1.6', 30); + T('1092443496', '1443DA51.G5FHF0121H2F', 19); + T('995982886869648407459143', '1HJAHK0FKDN4LN29FI.3DDG4GCBBFJGOM648JBCCCBE5', 25); + T('2563', '42D.9MBNBD3CHC961K4', 25); + T('5165465768912078514086932864', '5165465768912078514086932864.15061794310893065985169641395', 10); + T('5471', 'B6F.18F0HFAK', 22); + T('10463269570005574', '2V0X3OKD7B9.VOFRSL', 36); + T('303213556691515289188893743415846', '5AMIB6B7CEFJKJEL5H6CD1K5.H7996', 24); + T('73885536580075722710224913630', '111011101011110010101110111100111100010011001101110011011001010001110110111100101100010011011101.1111100101011011100000101001010110110010001000000010100000111100001010100111110101', 2); + T('72678037004728932464472011232185435761', '1J6F1EG58J959DDJ54HKBIHG6625B', 22); + T('7', '111.01010000111000100001000010011011000100101010011111100110111011100011000000010110001010111000011000010110011101001010', 2); + T('281006', '1000100100110101101.110001110000001100011001010100001110101111001100101111110011010100011110111010101000110000100010110010001011101010011000010000100001010100010100000000011010001011110101111110101101110100000000001', 2); + T('8573576497511403672686', '1110100001100011001000110011111111011101101000100111100001101010001101101.11100010000011111000001110011100111', 2); + T('40455365809845824222189300824558751', '1111100101010011010100000001111111110100101001001000000110111101001100011110001000011011101100010100100110010011110.10111100000011011111100110100101101111110001110100011100000000001111111001111100011011100011010', 2); + T('46275491328393338072', '101000001000110011100100100010111101100011100011011101110011010111.10011001111111100010011010101101010001010001001000111100010101011101100011', 2); + T('1433628110429482851535358742130957026457687710451052766168752', '11100100011000111101111111011100111100111011101101110010101011100111000110111010010011111010101010111010101011110111101010101000011010110011101111010011110011110111001010101001011010100000011010101111.10', 2); + T('888', '1101111000.01110001001100110110011001000100101110001110101011110000100001101001000011010011111110111001001110100110001101011001011100101000000010010111111111111101101010110010101011010000101110000101100101100000101110011011000101110101', 2); + T('1901556394517909524025875', '110010010101010111001010000100101110100000111100010000110000001011001001000010011.0010111010110101000001000001101010001100111101111100111010011011001000100000111010011011101110010000', 2); + T('260195957172449000', '1110011100011001101101100000101111010000011010111011101000.000100000111110001011101010011011010100011100110111010101001010101000011110101100010100111100100110000110101', 2); + T('654853', '10011111111000000101.000100010010100101001111011111101101010010001000100110110101110110010111010110000110010001001101010010110010110100101011100011101001110111000111000010001001100', 2); + T('186', '10111001.11001111010', 2); + T('45580573', '10101101111000000100011100.1010101100100100101110001110001111101010110011101110001000000100111011011101011011', 2); + T('74504933', '100011100001101101011100100.1110010001101110101110100000110010010100000111101100100011011001011011111', 2); + T('2', '10.001010111110111010100000011010000001011010110111001010001110100110111001100100001000011110101100101', 2); + T('10653067', '101000101000110110001011.0001110000101000100000101011010100000001011100001111110001101001110110111011010000011011000000100011', 2); + T('3103819016502701158728118887794', '100111001011001111101011101010010100101011001111011000001000110100100001001011110010001110010101110001.111111100111100100100111001000101011110011110011000000000001101010111101100010100010100001100000101110100111010000010011001', 2); + T('70726621184417493343184041374', '111001001000011110110000100110010000100100000101010100001010011100110000100100110011010110011110.0101000011101101100111001110000111010111010111101101101100000101011010001011010111010', 2); + T('4639750624206524979284798532410213523141234414', '11010000000011011011100110011110101101001101111100011101110100111010111000110000010010000001101010101110011101110011101101000111011101010000111011101101.11111111000111101101010110010011', 2); + T('2377749182359', '100010100110011100111001010011011110010110.11010', 2); + T('26', '11001.100111001011111001010011010101011000110110111100011100101101101111000001101001000011101', 2); + T('389501027984', '101101010110000000100100000011010010000.01010001000000010100011101101100001111011001', 2); + T('5169', '1010000110001.0010001010100001011111010000111010001110110111011111110001010000100100010110000110111001110101100011110100110100111001011100100111101000100011110001011011000011011000100001100000000100001010010001010110001010010010101011', 2); + T('2072974714841016', '111010111010101110000001001100000011010011110110111.10011111010001011000011011010001100', 2); + T('3', '10.11', 2); + T('6569814675686107322725113', '10101101111001101100101111000000001011111101000101100011110001110110011001011111001.00100011110010001110011001100001000011000010100101011100101000100101111011011101000001110100101001001001100010100001001100011010011011', 2); + T('984456092178345483540429', '11010000011101110111100011000000110111000100100101100011101001111001011111001100.10110000010110000110100110110001100010111001', 2); + T('6729551587237203748588625739672573822682543614592964521541035860', '100000101101111001111011010110111111110111000100001010001101001110111111101100011101010001101011100011010110010100001100111110101010111110001111100010000111000010100001010011000111100000000000101001110011101010100', 2); + T('329347347', '10011101000010111000100010011.0001101000000100000000011101110101011001000011111100110110000100100011110001110110010011001000011010001100010010000101010001111000110', 2); + + /* + BigNumber.config({DECIMAL_PLACES : 5000}); + T('6022239845523628300792137851333617197616053606580805361460444571405159915948416057193556599026984420186847535714193186506779546.45562364433149048376909884425264838196627845956471301832353037216028002220557941081995561235866533298815815922678466806108234749212464649692584770778636508682771855319769124974649405509297732509500507702362168384314107653609786430967640203107454687605887412794096157913528626853706056446855881531545195000734665133919578058463901659136523244159808597378906266443321758454939816465192126295342280568880123960605134416002321981988529228618898697072789772080291342478304351440847738944612720456898241717924298967008171252854355869450188166408302699162551054528159131912895298938197347616702659802404073209181609536327921587288300421033874114565425368107966522446454855931005917304136935908432754883056828263061549088965135169569684456008477541982066123091033968877584432281431379815341125413388350665252537980749041131051878291040173564632382596634048981529497244126378198699352829834835751033446902713765443032376617851981166182096456938914400530557912226087362980440980578460246231055456778104006415527727260144095903127275419414807349147304707405254543427544838982731455334927521421806120799785694323203756123916853431908716090161389876298981034132804663437564753354768639621168658600102486177710685317251506858936381061516323456154147708084807303368146788089168077930658523442473995088742325773226839695051398002486616767897842485900547744342133455226785895506239035265653618936400640974168752824304125514038750444312714907633618171991355429431759439952307076477817217105979944570733869770158307019913889590797598165139754807215433076623400151503800862360578168290788982250598565524133502841168163050960633073023086590377971028607254136702588526777419958903274032568187324150715013909702207304519885442684246154424782763896029535730853643906929626045280406345718447643848365642454794436200184559384104514455046474916698853542487141393373504315472859932883938412782930021292976807483126232761531618262529099148770786402625394165285080740814372385937680961636708062338551092904431743317072664203085901678724391714803254679215220462002284827189814215842974479924985602985736840346662287388320297983891277984351215430795679480190118537345626368022990139894769505155754558312126932952671414774316202379066527423168541384888466209214314154656662254580694814197800298638656821314275995533216305058772309199532434503635943016121377240397454883296750491850460737680808149474215115525147893924328495593024234124241923099439564731922184295950348564035465169266840591302330909689592731054406376096204521212856678638595326253266853596009793769540552472576546585623610514603873467842223218383413469519311698301974531524237384072650293621563877939654382136609518592602998975525783497411981332278754077646791148254910680215716571959847794999990247155904843380251881145330210230503708687521912940355094829433297671479621259952291050451507069861516277689852652120824074226408244695466776128994445706937283501626742574832399257358784925070613374733443923318045672485243752481960132066316477982467772782652564401225093039509921674057244503251628994886108332809253787838807087045292349084813153418737514141651084390353861740493248726168058140952618277156388955744920898401233144729995305891815236381631092752549773465825925187270747564816278320933350674627641648384663562427197990911234109442852754919229966716090476391048342193483833862003532792898637819146892137188859066257902207068814887904172213161571698554092509870791904603500154815868135120390375352892915790562057269104998986616170310087063962096170912045311169499205938470776723319613174250097225084425676690856982407000880056724620818824503061125725461684399498255127313452269964097609152404362732856503883361007911375417900940044634592803539714125533402906835228146503351037643506565226937040944039386627046902360157120659188931448110133381205133170527455488802527077001776856346493147507947490287029277744578775527372923256995419864299678429507426389922953403127483507515479327442988251888961453922972301510643563216583092771781978061366034284974632235631032912241967179283080214267387399797724014498036440569206078211810225217786455419707373248180986740603131905953623973926533609693886155905704306604100315482559358455550018630679789876126218887092040393676456180793809957296390894821682732929521075917502388856575712596709103037671223414578669707747332478371632108168893761388532592606235363056704156483680099201459584177626289636906715420355110405019316492710052426228518585155223882424429151702414484321844004913577523588611847871639322325737509992577988369672218344719659244872142799432036756062631109614278597717292745716623038732618863518899700937188424653264323754203446589769545236970901181775744966400800101730416875793459251675109469665985644198416152029852905095989068691042302222376893958470550095432860142880876451168971479312433163514921818509750264250472945722655641064950528004153004188190549429918759335822341644887168398385954219498973215722761336436971169084930492144143419812959401754073906781284401436962270645729138821367459312144327', '58LURTSHGLIURSHG8O7YH8OG754YOG8O7YGYG75EOY5EYGO87EYOG87YG407Y87Y1IUHJROLIGKHGERGRE.GEHKRGUERYG0908Y76981YIUGHFIJVRBKOFUHEWO8T9343097', 36); + */ + + BigNumber.config({DECIMAL_PLACES : 20}); + + assertException(function () {new BigNumber('2', 0).toString()}, "('2', 0)"); + assertException(function () {new BigNumber('2', 2).toString()}, "('2', 2)"); + assertException(function () {new BigNumber('2', '-2').toString()}, "('2', '-2')"); + assertException(function () {new BigNumber('0.000g', 16).toString()}, "('0.000g', 16)"); + assertException(function () {new BigNumber('453.43', 4).toString()}, "('453.43', 4)"); + assertException(function () {new BigNumber('1', 1).toString()}, "('1', 1)"); + assertException(function () {new BigNumber('1.23', 36.01).toString()}, "('1.23', 36.01)"); + assertException(function () {new BigNumber('1.23', 37).toString()}, "('1.23', 37)"); + + assertException(function () {new BigNumber(12.345, NaN).toString()}, "(12.345, NaN)"); + assertException(function () {new BigNumber(12.345, 'NaN').toString()}, "(12.345, 'NaN')"); + assertException(function () {new BigNumber(12.345, []).toString()}, "(12.345, [])"); + assertException(function () {new BigNumber(12.345, {}).toString()}, "(12.345, {})"); + assertException(function () {new BigNumber(12.345, '').toString()}, "(12.345, '')"); + assertException(function () {new BigNumber(12.345, ' ').toString()}, "(12.345, ' ')"); + assertException(function () {new BigNumber(12.345, 'hello').toString()}, "(12.345, 'hello')"); + assertException(function () {new BigNumber(12.345, '\t').toString()}, "(12.345, '\t')"); + assertException(function () {new BigNumber(12.345, new Date).toString()}, "(12.345, new Date)"); + assertException(function () {new BigNumber(12.345, new RegExp).toString()}, "(12.345, new RegExp)"); + assertException(function () {new BigNumber(101, 2.02).toString()}, "(101, 2.02)"); + assertException(function () {new BigNumber(12.345, 10.5).toString()}, "(12.345, 10.5)"); + + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, '1e1'); + T('12.345', 12.345, undefined); + T('Infinity', 'Infinity', 2); + T('Infinity', 'Infinity', 10); + T('-Infinity', '-Infinity', 2); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + BigNumber.config({ERRORS : false}); + + T('2', '2', 0); + T('NaN', '2', 2); + T('2', '2', '-2'); + T('NaN', '0.000g', 16); + T('NaN', '453.43', 4); + T('1', '1', 1); + T('1.23', '1.23', 36.01); + T('1.23', '1.23', 37); + + T('NaN', 'NaN', 'NaN'); + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, undefined); + T('12.345', 12.345, NaN); + T('12.345', 12.345, 'NaN'); + T('12.345', 12.345, []); + T('12.345', 12.345, {}); + T('12.345', 12.345, ''); + T('12.345', 12.345, ' '); + T('12.345', 12.345, 'hello'); + T('12.345', 12.345, '\t'); + T('12.345', 12.345, new Date); + T('12.345', 12.345, new RegExp); + T('5', 101, 2.02); + T('12.345', 12.345, 10.5); + T('12.345', 12.345, '1e1'); + T('Infinity', 'Infinity', 2); + T('Infinity', Infinity, 10); + T('-Infinity', -Infinity, 2); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js new file mode 100644 index 0000000..500a5f1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js @@ -0,0 +1,10818 @@ +var count = (function baseOut(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, base) { + assert(expected, new BigNumber(value).toString(base)) + } + + log('\n Testing base-out...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // ---------------------------------------------------------------- v8 start + + T('NaN', NaN, 16); + T('Infinity', 1/0, 16); + T('-Infinity', -1/0, 16); + T('0', 0, 16); + T('9', 9, 16); + T('5a', 90, 16); + + T('0', -0, 16); + T('-9', -9, 16); + T('-5a', -90, 16); + T('4294967296', Math.pow(2,32), undefined); + T('ffffffff', Math.pow(2,32)-1, 16); + T('11111111111111111111111111111111', Math.pow(2,32)-1, 2); + T('100000000000000000000000000000000', Math.pow(2,32), 2); + T('100000000000000000000000000000001', Math.pow(2,32) + 1, 2); + T('-11111111111111111111111111111111', -(Math.pow(2,32)-1), 2); + T('-100000000000000000000000000000000', -Math.pow(2,32), 2); + T('-100000000000000000000000000000001', -(Math.pow(2,32) + 1), 2); + + T('5yc1z', 10000007, 36); + T('0', 0, 36); + T('0', 0, 16); + T('0', 0, 10); + T('0', 0, 8); + T('0', 0, 2); + + T('-5yc1z', -10000007, 36); + T('1000', 1000, undefined); + T('0.00001', 0.00001, undefined); + T('1000000000000000128', '1000000000000000128', undefined); + T('0.000001', 0.000001, undefined); + T('8.8', 8.5, 16); + T('-8.8', -8.5, 16); + + // ------------------------------------------------------------------ v8 end + + // 10000 integer base conversions generated from java BigInteger.toString(radix) with random values. + T('440155688144172', '101725686101180', 9); + T('101012012002102211212101002012121211210112201112022122012110220101', '11665560554201545341275846801989', 3); + T('16g621gjdfj387g8f', '878682490721226942575', 20); + T('23296228463551556aa7a803294013169936813630895547', '20254039346778828988686906345231844106054371456414', 11); + T('86', '294', 36); + T('j6angf77m93m', '29321388122089630', 24); + T('171634571716400543513334300705612071133717535572246575453160', '364584667335183828987221775272570428237696628507956848', 8); + T('79ih09ddbmoj6chgi', '5317189538963113735021341', 31); + T('17140110747560', '1043696177008', 8); + T('5mf9glgacka1oj', '8798568215457188744', 25); + T('14i0i1bijh5bb66318hjbe39el8ed7', '1038225938103094195672715196371622399149', 22); + T('3779577535435531065475', '3779577535435531065475', 10); + T('1101000100001000000110100100011100000101001', '7182272837673', 2); + T('v1r0gswws8mg7rg877gua', '132336254343195067504822207481070', 34); + T('1caiusm1ngmh8', '1101263079273875608', 31); + T('bcd583cc3014846', '132516316064365582', 14); + T('1656', '942', 8); + T('2iq2q6a', '1046997262', 27); + T('s0tb0wwdorr1don43twqe', '65743744003104369805298454218408', 33); + T('4', '4', 17); + T('13eb7d6c25678', '2652301005605213', 19); + T('63595846315682339605641914681670020', '63595846315682339605641914681670020', 10); + T('3192', '53640', 26); + T('18jd4fccghe', '86689784393126', 24); + T('ahn8jmcronn1imiwqqf6894boecrwtt', '92552461943195873402655551990866403102200950223', 34); + T('732a68649252780573256384a0762a874827823929485545', '64359755261128349657756381355778457151559256253657', 11); + T('o0502ci441waab54sxss84sdbiq3', '5373042738281691949642803579987183092210407', 34); + T('1021112001100000210210', '13373890500', 3); + T('40202343000', '39887250', 5); + T('8720081b5e09269094e56202843449cb', '24377982076224740260643696757107121341', 15); + T('1iomc2mqsn5qpt8h1f569gs852', '13789591701124129450628724568456423352', 30); + T('1eom414n8l1d9nfel48f1bmqmm0nmle0j3', '266719145838127409543902693002813822731463432657', 27); + T('13k56oq3m631lo954n2ohok7', '2181841744266177308465040173350263', 28); + T('454023134354435330523150501153110052125254133003305331', '863587285752958267795174798408995811866775', 6); + T('1d6ekejh1ik9hk6k718', '2338861492105483120978650', 22); + T('2', '2', 29); + T('1e6c', '15573', 21); + T('g57c69', '52060929', 20); + T('12020002010112222111002201112002020022001101201021102000', '303840883816576562846336400', 3); + T('117e081886a2b7dhh6b7ddc9g9dah881', '4703193157526229832838915604553828591088', 19); + T('120', '48', 6); + T('r3ph9dgk57p', '74774633365798895', 35); + T('8a0a2kj0d87f3m42i17h31kl60k28e4de70', '167827516964906460076306119782216338842769448945', 23); + T('2l055f3b4noi9po87stgqmchln5387', '18531519454051111130681336099858607562067947', 30); + T('421062013993955192a2221428707a96575292bb', '115579778299459540087492544347756755742382977', 13); + T('1bibgea4if', '526155599692', 19); + T('1497d29d3476a2a9780b34d03dd8d7b', '32297467668609167750315214037242897', 14); + T('1100', '12', 2); + T('3', '3', 10); + T('aj768i29h4hiaa4c21ehiad1ejcia8ig', '235542570596088783891401514707500777363576', 20); + T('0', '0', 26); + T('1057782', '1057782', 10); + T('10110000100', '67806', 3); + T('130301232102', '7543698', 4); + T('3iuna', '5311190', 35); + T('12120101010001002202210212202210210222212101010111220211201121001202001', '4647047674765599509161881404042506', 3); + T('19c1p4e5sc', '77422104704616', 34); + T('20jd875f0sb7eob641f2j2rogg5i22f', '150648633114646195779853741265975908572439118', 29); + T('fe5pdnmr6agww3hvvh1m5y6084tkm4qi', '11317796537927193164907314114830625186030646924078', 35); + T('115gekg30bl34558', '144730350757318919194', 22); + T('3fagc3b8m35ahj6346g1mbkh885b5159g2', '3176675255123809025734896069538375765072180396', 23); + T('5686he7d5bb824gci8i3e78c7j0ih', '14283076803292405590664992623911672377', 20); + T('1jmnldb1lfkrjoe75k7o3rednhb1f8h0', '1242551650400204544842102196394576048943170972', 28); + T('60bf8d3f1cb70827109c', '456880688358819786854556', 16); + T('340432530435433213034435253441422121', '6339719167942344530566282177', 6); + T('i38g07j7ie95b2g3533dfi075', '982752454390853323739173663368665', 21); + T('1h6t', '42509', 30); + T('642677755550042022420042650122720673705371422153432', '9341223088519577080757976073309527669316572954', 8); + T('4ddho197n710a2m273kka0e23l4g0h85b', '2462195801283263655162466534079464545810817636', 25); + T('1243240323034002400230042343332120411442100332', '45148599779050957102730921831342', 5); + T('88scnc9d', '228014337833', 31); + T('1170484020308451032231073707375108400760815', '14346468379928007582608703547513785950258', 9); + T('4823304938154542868234529244227621001', '4823304938154542868234529244227621001', 10); + T('1651372117475740354637456547', '4427164671782016593583463', 8); + T('7i2233ggjhb94938eb1bjeh9ah01c', '21220547440397899830782173177438536032', 20); + T('38e2f51l5226upuurq', '212488028484539189554322396', 33); + T('2302012223231313010303032233111031210011020131110321321303332231113103032', '62060333685205067717083070636012166725334222', 4); + T('978074cbc72b612330461c399a6cd9a5246e', '1383648770009475636965471306920429322557754', 15); + T('ttla4bfhg8ogcqe72ur1432jjo76ghc', '42713337532562165277151943846110614488089838124', 32); + T('61482faj92i2287770b', '1588859334544847514778811', 20); + T('3053066362454436563436414156651113001465631', '970611871710418073313798574789753891', 7); + T('28b74a2sl5cr8s1ki0sro011', '9881987714990620033551204066568469', 29); + T('9alod3a4n9ncieiqihlpehs8cqd1sd10dj2mb', '415054010142313409024004868502578691674339253356722226', 29); + T('120131131131201001210300133101113223032122100210332221130303031030', '2080853698331650615760995253176321127244', 4); + T('ihk308048gi1', '6604552742887513', 21); + T('a', '10', 28); + T('41179', '2854566', 29); + T('h0qpo1102o4h2k', '69043303761626479331', 27); + T('9g4baafceihhgf518g7bm7h20nkhed8b07m64', '471227319810157894343865948670273836507237979925524', 24); + T('dho5eqfqowsqv1meq8bquhml', '4406294486817687943635096558491220991', 35); + T('29bb5fdpe1kes', '1813313296055953458', 31); + T('8ff84083f', '62334898476', 17); + T('70a2g249a1da182if3bhf4db31b', '167580219569043944485242667799058497', 21); + T('5fl2a1id1b2jolhmhjlk7na7g', '51071422881267420196649258348708342', 26); + T('100022', '251', 3); + T('432', '282', 8); + T('3wr3swm6ubjrkvt', '16294970748730625951364', 35); + T('17168', '11807', 9); + T('35584293177335052090482862003912891468038390', '35584293177335052090482862003912891468038390', 10); + T('7998aldd', '33899695237', 24); + T('4kij6bl8043lpba7', '8045734455699535180463', 26); + T('4gla1701h5602l588', '29045123944032022935020', 23); + T('4krb3', '3804633', 30); + T('3211002241324002022113342004130434213023003244232433', '1531292744433422364552476748786320993', 5); + T('27', '39', 16); + T('3o6qpgd0', '104034477683', 31); + T('5dg2c119a0892cb61353d9b1', '116223645530706451323585167475', 17); + T('1156036607174723020034543345673164620146641', '103357460209213083948351046056291650977', 8); + T('41ib89ghdgeidg0039be199c3a4', '27490663465965934673955627614337404', 20); + T('e7k93m5', '6879430493', 28); + T('120223324040024130101444123240111221103312343230410102202103302323', '3849970071333132024959950921403659216898884713', 5); + T('jg36bjg950j6i9m8oi8glle21kh3j1kfc', '10649691942461568427422892625442894260778934762', 25); + T('4w4a6teferq6r5ik5ut62fual', '13835986798310811924322665391394254965', 33); + T('312490955c70', '5539379829789', 13); + T('emtaesbe76h7dk71h4bt3h8kg3bn69', '101339233480279275559007163118630302631547889', 30); + T('3p619b5fmg0l1632dd7dlo2kh', '88631790446416440440286264005548442', 27); + T('1341', '2757', 13); + T('f43426ggb18h6510e7fe84fh310b', '511382471492848290663092376073298210', 19); + T('6j41em7raogenfrjhgjkfkfh3eu', '3945233626117535310773506175958783010154', 31); + T('111641556162423641100614510003', '3807645289032672695383142', 7); + T('2696427c2f1cad979g08685g71f0h7h4hbh48289f4f', '124382154384973091480024194947893719797603463814945307', 18); + T('11845026586657305823549960872429', '11845026586657305823549960872429', 10); + T('1h64s71x4rusnjlx5s7', '9260237785040115157604241362', 35); + T('10311042615', '300721440', 7); + T('2451143b5ba7ca6943a', '262895985819802223782', 13); + T('jo11nn24j791mg1i8j1mhc47p255', '3189124189951034463858246698569851705767', 26); + T('10011232230103110332', '281029981502', 4); + T('iaa7a6e611gih', '41068316481138638', 19); + T('1912f60k5nd203ej1', '58775002826689939438559', 26); + T('2459b78a913708732', '438882964276198934', 12); + T('308258662', '133548968', 9); + T('347175', '118397', 8); + T('2l383movaqq6vge0t51d1asb5', '3534985310385748495852148058236481893', 32); + T('1002011011221201220110020010111000021211000120100020001121', '1695352250587759269039520513', 3); + T('121', '25', 4); + T('a0480880954109d', '292517771808862273', 15); + T('3g5c6881d68a6g3g7ded8f00ddc3', '6605800905697912313930823429368376', 17); + T('g9bnclea0di628jg02k69b75iaf6mld17akh', '33275613302454138474042464061355756382668628304497', 24); + T('3410345247354238502664518577282', '146560013392255863392167155830', 9); + T('21121101020212000010110210100', '58005313126803', 3); + T('2331003220030000131011220331231', '3405742490204409709', 4); + T('kepi6h75hclp6o', '210478662369536496313', 29); + T('14320202403220110112112043411443103144334124004312122302230433132031244204244', '256316960412695093498974392340639287985576426301944324', 5); + T('21oh0', '812300', 25); + T('637302200571726036177', '78099699617401957027', 9); + T('3h8nrbxu09bl9y59qd0x76mh', '2169701554867548714090537334110301769', 36); + T('5ei5i1ji6hf23g10036fbcgh9kg7b2c8cace9e', '265177220460106545362048683909814340097671193815436', 22); + T('2il', '1605', 24); + T('md18bbl3ikih980m8ijjm5hk37aboh7i26c4', '190769957856763978202455746822271950952451735582179', 25); + T('49a947b15', '11910266120', 15); + T('5563068134037605066000072214445077281483844846461', '35846490510257461400361080273583563758784437804', 9); + T('2326og3ij7pqp6nrqmbkkh6d4', '5822237723786017480562091732598915027', 33); + T('120133110323003200013220212133103302121120320212', '30316511656490491221060718118', 4); + T('16mdhr19sd5c5d5c0jjav97fu9o1', '267673848646358103096813679060486949796693', 34); + T('jga1bjl82k4ah11179fk5', '33833463661666075552032677215', 23); + T('c20kujdb', '514029069323', 33); + T('11226540043034355', '39624784159854', 7); + T('v', '31', 34); + T('14502011231234', '23602310374', 6); + T('kgl06leab96536b72hh13b4gd12', '5267876931068834999207837763071495773', 23); + T('jl7of6l89i2iabafma', '22471829516120804540402146', 26); + T('1450007a44290518221a532', '114367864225072949311955', 11); + T('298fe1gbg9c72', '1491696784725786', 17); + T('250711224523642463565466455623', '408358568053857594342267795', 8); + T('9flo2bq373qjcgkp3e6k71qnonehh', '316990433419229469352412547876129922440461', 28); + T('1203662265620020640221323330644160123013', '1179984859885559189864263643508373', 7); + T('16x9ld', '72095953', 36); + T('67d8i74a4e8gg43', '73378543709714711958', 23); + T('58398378841218155357', '58398378841218155357', 10); + T('dy3hf3dta7', '1101392127345132', 35); + T('ko6nkrons9d0fc0bil4i3qi63e8ff816f302', '31822762789078625728496093591661767305613028321798487', 29); + T('198g4ec36ah639', '31806677232541503', 18); + T('45243354620633', '461990081612', 7); + T('775823b0c15', '4319863197095', 15); + T('g28he7j4icef0bcbjgj8', '1201572315079967980347229812', 23); + T('g4d4dqb4', '169104269893', 27); + T('18jc9hh8c8im15d8a09i8', '5496196321990395030043538936', 24); + T('4g9282g604cbh7da78c99ca7', '365574202021938047866967922307', 18); + T('e5rf3kpheo', '206076021040648', 29); + T('713414314586b73', '27941755511268212', 13); + T('619739902555681054508877700190814647189340192531531', '619739902555681054508877700190814647189340192531531', 10); + T('20111011002200122', '93082868', 3); + T('100230221211233101331231031001203331331003102231102112012330112112330000132301133133021', '6247333955182528679256744382669521818617928418195401', 4); + T('31464741215652662410302172736', '61905218854453628692395486', 8); + T('708nesooj9eefjp', '3352746100369361432095', 30); + T('8fidd470c39jbio0fqbmo4r8ad', '12923744867491474626257779584052881637', 28); + T('1151171074647051031165674252760067', '764101851531641191689328779319', 8); + T('11043032215231230545441315401541344541210241405152211', '34556143670121676351099193602542355133167', 6); + T('7451b5a50511996bac9b28b0', '306395754266354995755659445', 13); + T('13ir12f', '2389675047', 36); + T('2e', '72', 29); + T('112551341310022250543503544424133243522435', '100211013146144877918564374426903', 6); + T('15g4rioci4g3qfn9da47hln', '177378797438603886266961020628820', 29); + T('313qoor3rl62hs', '111971617480570505788', 32); + T('11be338996c3222d74125b207e1c94c74384dc344', '123816432746013151845557555294618280342247674364', 15); + T('510151', '1885261', 13); + T('al5ra6h4', '293932103440', 31); + T('7p7gq6ao', '171498767724', 30); + T('4aip7ke83a0mnoa31e9hc64c', '3668246283124124964717547932816798', 27); + T('26ffmuj7qfj5urc', '2600404271332517411692', 32); + T('1228jnkc879102l6klfmhgeh7b3k9kjem3chmk', '1271226839086861348134838781391638338414049937252452', 24); + T('3m1dkpcjl6se25ees', '941019906537302808213671', 29); + T('nvk4t2ijr0pt6a', '885016896759055316170', 32); + T('353463695235911', '353463695235911', 10); + T('2592c02eb41095d60c7b3ae4c19254bcb7e451', '77783442256833108339948757455065770782318226', 15); + T('101001110010100101010011101100111001101001100111101111111000101011011111000010011111', '12630360807685587318206623', 2); + T('10a94b226bd2a3cb347d8239a354494baa876d3c', '7719527647026016534723119044578909360854733857', 15); + T('10112100000101212222210120202020120022212020022002012220222222110100101012200010201221221112010100', '22465908588350531170561340022119338184319644550', 3); + T('3526', '1294', 7); + T('trqchmprtris8jhmt53mgfph2bqlk1rdlj', '166379098618921452590839536518689519047997516551349', 30); + T('amqtg5blk7b3', '540363976066013685', 33); + T('5bb8f0da136651ih36if43c9', '1446604699008863640297362261438', 19); + T('169095c1igm9lagle03', '18254265908591826520258753', 25); + T('5ca72lphe8b1g6na87l028nk7', '49874912506100858512179674721524459', 26); + T('db2hm3or5qm99cejggihbqj24o', '20227071482916596230414576969129951720', 28); + T('3e06d7bed9cl3hmcdh4rk6d', '518456522736295870554795311386837', 29); + T('3783552669408621336694762820722', '3783552669408621336694762820722', 10); + T('8plkxhiid9r48fmxut8j', '1097250217160493743377273093271', 34); + T('114c00b88e376egfab533', '4369484999824057755698184', 17); + T('14983603362604292572455838465420099066461810', '14983603362604292572455838465420099066461810', 10); + T('509d164ce8562017ac87ed954c322aabb3eee76', '2478749182617286136760963476865027709609349886', 15); + T('3fkhedjllk072h2jdi0722fndca0nm2jh9d', '309586105474608741121591603678170578618026772773', 24); + T('1iq6sj905ic2n1b75s3bhc97qjj82iclshg7', '2522966691781107980265563729308641205273869137106927', 29); + T('2a6cba18b56b3', '155884237022909', 14); + T('8bddeba1aaa3c4d55a4b1496ae4556aa273d', '1280685511801156504844254243757080956139633', 15); + T('2cd', '2733', 34); + T('8n6fnlac07f83b3hl5a2cdnjen9fig989', '1316884479548601245836236435764995581418738953', 24); + T('6fj39908aajh0f7eici5g653270g2', '18248065317134624862612052897609976322', 20); + T('100442024203540041', '17296877228281', 6); + T('864lljmcga', '14895956013429', 23); + T('ida78k0lnm720jk42co06325dndfincdcf', '251216020257140411511559806773250633017763086565', 25); + T('2202302331132212020233000022322031121', '12012243725278503478105', 4); + T('6i6jabi6j', '532166217509', 23); + T('6cmh6r7doponp2ajcjoo2pn87eakbgg', '167803056903383062748024010526394587708233856', 28); + T('2360598122619478480207180074620237', '2360598122619478480207180074620237', 10); + T('4fdgfae5ai1dfggc57jb56gfdhh', '32108887594999276898768884821885557', 20); + T('30316cbc668127583b5c359b17195c7680c', '225869808340726521462856371477325948274', 13); + T('b0a4c9igh1d34258f', '33188485929923604704131', 22); + T('9b81ii', '75424770', 24); + T('150j0jm2n63ana812', '27968036853522567739402', 25); + T('2rxjdeshl7hv031gh8x8tal1', '913145329049266795302812350123389486', 35); + T('11ba64655696c81c01230a5c4', '622476147856099856056476548', 13); + T('2if7c15b64menb5f381mbffsq5552gb4d22pn', '116879749441690585814553354811233856559766636508284681', 29); + T('a89d1e8ba7d4b79c033a15d0d12e', '600946350698036566145005181087894', 15); + T('65kkch4kkab51720gk72de14i4m1i65j1h5j', '2863074376250121461194200964351550106115034432936', 23); + T('hq9iq11x71vufsis5', '141103623069429330755986709', 36); + T('31352441130112145', '9239969893601', 6); + T('1e6g5c3c8', '63619126397', 21); + T('32bcbi7d25g42l', '880900685973582625', 22); + T('111627132417321114752432320745434507337525667340540534056666', '220880699124044497678574383774865426395965086166441398', 8); + T('31ajm2h13k3kcceeb9', '432180494217866849859531', 23); + T('30hj3', '848956', 23); + T('h2eaee905c464gh13c1g3a24bffbd7b157a7d8243', '2788179404237205827575664664460917404793610485107907', 18); + T('6l5fmeo4r8q9ksh0e16dqs2a', '29054682041642997983411270167870486', 29); + T('9bgeg983a9gb072ia', '2776374479824499829805', 19); + T('427303573032681547102347847', '27865476405856977419599954', 9); + T('58186560531623536388240774584465008', '1644634101768983314712700937410068', 9); + T('gud5evq5j', '23798093687167', 33); + T('273989b4c4b2b65507308785c9601b1991866b1', '5472576971132404535367740776182484421987974', 13); + T('52e226', '3945861', 15); + T('c4bg1f73', '5037578485', 17); + T('0', '0', 7); + T('2ga84ck3k8lf1b6g81e4d1o10adildo4fb73d3', '14063518582163403576381156810721420380483851225111578', 25); + T('18398a17693a99a73829311597a8009a998', '449495260282451489496065134468852961', 11); + T('0', '0', 10); + T('2322cb943a7c0e49c0adecc89ae8c8', '28247920028932853396658049010936738', 15); + T('4a7lmeeehee0m0e2f88h3fhi9jae36', '13754660732035427506299787750012455330113', 23); + T('66om3l', '61326346', 25); + T('1jaxmqc44xcgutokt3', '440143628927856861597987927', 36); + T('43402144002311022321023', '11357849767776388', 5); + T('f1q', '15418', 32); + T('94bm3khgmeh6h666e51h4hkb1ba70lb0', '15037888711417055917959334087989947554028156', 23); + T('468836dc5e0921dc805d0ca944655824a80', '43081374214668891982097847922924570176495', 15); + T('7aia5ft68j2ah9tdnij8hbf2436', '1869214551753119688855382398317532507696', 30); + T('14a3b3', '1352627', 16); + T('upklpfh648l1', '1555511519818102177', 33); + T('3642604410156200265653560662320144226060043062566313031', '17044221773211127840838069782217144740567292173', 7); + T('11111001010110010000011011010110111010011011110010100101011010010000111011110110011011011100001110000001110010101000001101', '5178750376444939350710857550952606221', 2); + T('25914', '69645', 13); + T('22201121210', '171768', 3); + T('1299ea6145a33955gg494827fgfb4', '160233176579923489744786615302245782', 18); + T('2404400303345455302', '273021872765366', 6); + T('2780589741896838784693', '2780589741896838784693', 10); + T('120051666651454430105', '102765715947351287', 7); + T('go', '488', 29); + T('7hdkmh4echjjf94fc851b7cm9a6309he06fhk', '81727387424011034101131466677491869453894982060018', 23); + T('33313031310333101301210101232121100102032301201220123220033121130222032003202122', '1448964781656315513831338629339319660846289270938', 4); + T('1f4ejan70ggb73lk5bia4djdjelig6', '17342687637043286986515244372299021023238', 24); + T('9', '9', 22); + T('100110', '38', 2); + T('101010011010001001110001110111110010010100011100110100001101101110100100001101001', '1602153026925525548353641', 2); + T('dce94', '701914', 15); + T('1ecgdk4ch2ki2gal6geikc9fmgm6gc8a8mb', '135755121543031059870445637631947092289577070619', 24); + T('hviu8xaubwr6cba0mkh6xhcmkgrudf98np4', '563888921489815885331467969078334098692735774824158929', 35); + T('16b72', '32774', 12); + T('3fkd07k', '2106600098', 29); + T('121344424133143434114024144', '2193410290272017424', 5); + T('ej561m9bckcn7i03ja6mj2a1m1alm85ej9mhc', '720924047901203102542178589784759717033703825426724', 24); + T('6dkib54b13fncbkcefo7lafkdkae78m59l', '88812159262476475867698690215386920230540581496', 25); + T('5947916744591013134669825015156762693936309', '5947916744591013134669825015156762693936309', 10); + T('97fj791568miadhqtj6dci02', '87089150165580623669373687837670202', 30); + T('3ocb5459mcgps', '2026781564861859178', 30); + T('828g6fdkbfje1kaji14fk361', '20909317220805593816802833365225', 21); + T('q5', '941', 36); + T('8alo9sgaa', '4187460686272', 29); + T('5j6nf244ahl3k83f24l5imff20a0ik2ij45', '490788188097844322838594090172370516724231182117', 24); + T('4kfem4ifgc376m7fhfiab7ji51n', '78208441448030014437846328864355857976', 27); + T('22ga1if26hi9', '5021678125886084', 25); + T('6h8110747bb4ec5', '5526770097051812790', 19); + T('3kmiao', '64421584', 28); + T('35b2ef5i09feda6bf2dfg56cfhc54123h74573h', '90100642513830363534883950760191394857528151082877', 20); + T('4j10knam', '29062827147', 25); + T('9dj8geg', '620710696', 20); + T('100100101111011101011001111110000010001001100010101110000010010011111100100011110010001010000110100000010111011111110', '95386528077312833528510117745536766', 2); + T('37odmlq4t1cphe42', '46784748191707671321722', 30); + T('3cg8jhkdc1b1dd644hf6g3ff4fhbc', '37974153903814605133910844090810871839', 21); + T('2d90a4719837dbaca346e54796196aa4c39a29d7028', '72320014326190529207268511298086237053386258031788', 15); + T('221112010143201440041132340304141040211331000103002002341243330240031303', '103772284529022914388035430657679022322741387814578', 5); + T('234', '123', 7); + T('1gbj8j3f3g4fc7afcg', '23985271553951719606256', 20); + T('16dhfi679ge8cdahc0f5c3de64', '126062950519944159766121561159030', 19); + T('2110001020000212001221110002112102201001012101102121211212111212200211202111112122101002222112', '576441067410056461483703142176818271029941704', 3); + T('1400010200522020432130022505551242315132004422311315214250500552', '17595958038682732910920374172787533846127463600692', 6); + T('1100', '36', 3); + T('132133002330203222133230301300333012000022322212301213111003301031330013313211', '43509780485649606280607371868487166230944316901', 4); + T('111111220020010200200211011122002020002221111000112101211122021112110021011010120000011110110011', '3184810401058738852989667333232201616049894969', 3); + T('p2190d2m471f14c7m5jinn', '128683057515715021320115217552355', 29); + T('66607051535464671602731746325356021372265', '9099202145653789818834446363266512053', 8); + T('rxxwxwhb9cp2sndulf513ch', '137941140090442856448979588513676333', 34); + T('5v1as3h7gkt', '9098519834770439', 33); + T('23323330311211123313232', '52498284264942', 4); + T('1j6l4lj3lda2ah', '927009955843875697', 23); + T('10u4an3sxhdjqbpdd1', '111253813312875559803626727', 34); + T('n65aacems59afhei0i128qcjobg', '5898638281362823389060707803600314054946', 30); + T('1c69', '16597', 22); + T('472035076601272777773466260770745221025541771310455547267433', '940021031620376267748547570264155096359926520862306075', 8); + T('72', '79', 11); + T('19398c170gfcg64f843af17bgaa1a241947c', '129947852827238055712040360831603626896491442', 18); + T('101418606067268463402226345262270255081', '1857887598344404806997185438936620857', 9); + T('81mgdn230a75egkmiald7995gagm911', '2059707806285597627503761733243610129021017', 24); + T('2gllk780bm04e8lfmcekjgcfh07d27', '286479826696535775464273610901096241568391', 26); + T('122120012022201210200121222211001112112110221211212120212010011011001', '542747711299361252116322470317832', 3); + T('36bjnnofqm2f7ibl0n8hel8re350b7ff', '2349614933088599651464732173196752378742407779', 28); + T('2', '2', 17); + T('1901f2f75eddf8bif1dai18d2d', '486612954588567587212842937829253', 20); + T('fpr72ngapr11bdjarrjra8m3q0idnhcg7', '324494898071507461877053978943272748028566739783', 28); + T('mriospvubhhkbhhknl2', '84091461121613338404016434744', 34); + T('1gbxzhqfotpmsr', '247967926192484011179', 36); + T('171c43', '1119888', 15); + T('719d9ae0j06dc5k', '148475592775622801804', 24); + T('bfacgjw4l', '16123175442252', 33); + T('27nc9ja3ildcbpu92tmf', '48762307359506883152233969612', 31); + T('35100215607256233370100157131103657413347736114726441', '332554887108209374458014391052845453182019808545', 8); + T('2d', '43', 15); + T('61g7883dd3a55cfamm4307l26gd5qn', '1958734810273792705789246918934822143371545', 27); + T('jaa6397qhgfh47nj48ad3f4pg', '436699483716932159117919657451490464', 27); + T('7a9e8u030c2mlmislh2iq', '4925854031564503132850322969410', 31); + T('8dc', '3147', 19); + T('165130926947488295413682234912291953857277202438', '165130926947488295413682234912291953857277202438', 10); + T('2', '2', 35); + T('g7n4l', '15007121', 31); + T('2000201212021200110122', '21205710026', 3); + T('256e27c683g7e28444fe68dfg37', '227373590164376719118580707971549', 17); + T('3589ma16bn', '8514389402783', 24); + T('peqek92fb83fml55k4f7qa567ja', '1079505469268043886172306636663444862734', 28); + T('i6okun8rle5lgo2klrg7r24l1o48r9', '812263483616430907150828319601346058339361641', 32); + T('ffjb', '167409', 22); + T('16899758c5637027cc4509197a0806151b1b', '1472124298781451615642290787701974764196', 13); + T('dk50dq28hq0b9', '7265988549586872339', 30); + T('79f', '2191', 17); + T('69', '99', 15); + T('72da992618353861841c01d4687073a8d516', '93886242244818385595059361163892476186560', 14); + T('aki9bbh89fh87m8l1aa4a9l5g7bffm0h88385', '114763233555248086785759194797816098143926938310370', 23); + T('184b51amh5', '3542898368285', 24); + T('10034412103112330433111411132332013242104321130404032331313343', '4474599918067555064654041662068659458463598', 5); + T('rj5hgcjcce4heh0bafh', '5821635304368037800119927690', 29); + T('i237h1j32f357', '232647752169124233', 22); + T('23127102426b', '4010576357201', 13); + T('111111101111110011111000011001110101001101110000000011000', '143545575800234008', 2); + T('676884', '405319', 9); + T('42k68dbf4fcc250l5k282505m4imcfc', '293284630414438750039663958568928524711326', 23); + T('g31j84ai', '20678305818', 20); + T('0', '0', 3); + T('1ar451i41igd3prsian71prim0lseslbh', '86238754807491960819075362998411526539819962332', 29); + T('111011100110001111100001101100100100', '63992372004', 2); + T('bc053tka9gjboqptfug8764vteewhtn', '40826388795618571128129367769621369352492615884', 33); + T('bb972', '248486', 12); + T('i1qamkq1pfuin9eo', '3989956977379744422840672', 36); + T('361524917', '361524917', 10); + T('57b08jkec82938i3khak1b6c', '13806151720864861977227556530364', 21); + T('6ech2h1890', '94263489226286', 29); + T('1j5o5jmn9jafbdn4nn', '6738409255222242873889819', 28); + T('15cmpsn09too2c', '43116122218866434124', 32); + T('811', '980', 11); + T('4', '4', 9); + T('3492n', '2546183', 30); + T('c503f', '1026883', 17); + T('c8841d8a3e0c3184a1d13f24b7c8abcbf36', '1091713357762058306584556087055815769112374', 16); + T('101111111110', '3070', 2); + T('crsczl5y5f6wtp9lh3gh798ir8lusu', '17339136471721411584933213471118181624608588590', 36); + T('1fq5bta3pagdp8okhgs53f7clioamk37ko8', '255008927803374998828799238728878199583965626637728', 30); + T('210873084153651612242427773566076226832', '3874424403685633658520167970745713578', 9); + T('3db0523a24e245743553', '86803771432248580685703', 15); + T('40324414', '323734', 5); + T('5d6ka3abcc68880h', '767243912601976420529', 22); + T('c38lqjl46kabetl5qlj1r9oitjij', '92343694633170266121595556492720749580659', 30); + T('40552355236034366411121260630', '1894076705177959214150189', 7); + T('f8o42sl1bgh8oefa73djm5nbcqj2pfkiqd', '250697214887739481273552937511044544495638076630497', 31); + T('ldb4lgkib', '30103008932711', 33); + T('2', '2', 19); + T('pk06i2ceg0', '272020641434528', 28); + T('1010001000100010110011010000100001000001111010001100001000000001011001110100101110101000001010001110101011100111111100100001010010110010000011001000110101100011100000110001', '3791391092894496185657389426598978260806574313715761', 2); + T('2930', '4788', 12); + T('11011011001101101111100101010011000101000100', '15064322355524', 2); + T('4nz549mpd2ekdoe', '28653665664075364608062', 36); + T('k1b3b27gf1', '15943538449567', 21); + T('1fl9ian76dblfa44hgkle1j2la', '145148177867836192856283849258501785', 25); + T('5sr', '6759', 34); + T('0', '0', 10); + T('f9h', '12029', 28); + T('30ijdbbc1fb48dqb5h0a54ij3', '163061899281675414544508578695564599', 28); + T('11499i6bb7j9jcl22gfc691jkaijl9g70644hjf5', '23854750315423368837146215349983736231413256524952211', 22); + T('1os4p3n5ytmn', '164971754456015943', 35); + T('gbek5ifl9uvccwl', '29691120613113956443083', 33); + T('244668499127028e83bb4181', '2565913383528918683684970721', 15); + T('4t3cdnbdu3hi', '125493059871385556', 31); + T('33444410431312132044442214340', '141551939616015585595', 5); + T('f0e18mang1ckb83o6d02lm5p7mo4a2j4', '1098667950936590953496178062298824527159019274', 26); + T('10000010110111110100000101001001001011110100001100011111011011000110110011100000000101101', '316429297174908011263148077', 2); + T('10010111000101010011011101101001010010011100110100111100001', '340208393737103841', 2); + T('4455190b50557152a56aa689', '28956950424301470445177161', 12); + T('30178a990619211a65284', '2027761131843662253152', 11); + T('32adibdic3507e964', '904264457185802878114', 19); + T('1402203332505114241034521554031304', '80106131292450875184746488', 6); + T('1b7e6bfdgaf8h618hh396d94gf99660f2ah3', '140638185851643426335154839361249634663210461', 18); + T('4n02qr0qcjn', '1428131533975659', 28); + T('722062570016143', '32030085618787', 8); + T('12h1wrii6xf1isrxgxotoxf0k4rs', '240306175962933523255986233934776980691330', 34); + T('271132ed2156b56ba2264090d5', '624075202158401303369210786825', 15); + T('cbbe0ifb0ecg0eefifca0861754ad2gi2e5acc9af', '17820079854097348669358676176262454365377640065197275', 19); + T('d488h34b78i092jn5ki28d4hd0a2def3', '80631173055200461094000840558382509399473899', 24); + T('kai', '14868', 27); + T('74663674130162363012065031725670307006351247702', '2650448086139415170144453379569169365028802', 8); + T('410ek648686h', '3853830909449054', 23); + T('112122110102210020020200021022102221202202200122111210110112201002', '16764033406503354998216612366594', 3); + T('5a9ag0c99d9faad76g1eg9egegg3b6bc98d4140', '2801521663446241132823944236302962625699717089212', 18); + T('bfbi5a6afj45iah666dk760bd509af6', '219330264685128598444241632527479365312816', 22); + T('oi3j09e1m2dd9498c12fd1', '5622045359644445263576289494076', 25); + T('1403606123334625332112530636430620636042', '1439558915530889901212705116835520', 7); + T('111111100100110000000000001000101001001001101101011000001011100001010001100110111110010111111101000100000010001001111000111011111000100101000100000100000001111100011011101011101000', '1522300117779563676992926268294212750701795813499189992', 2); + T('32f9e995', '1301412242', 17); + T('2l900ee2', '9976339380', 23); + T('v998ik9huu', '1451808320253717', 33); + T('20460428a2a42366480a4650481749aa', '391102418677365044663717119852919', 11); + T('111111000111011011001001111100100111', '67770294055', 2); + T('50ce3', '4629574', 31); + T('54ig18iqae2tph', '606662590569600162167', 35); + T('4f4jav5ke8j9w', '10607946018036371326', 34); + T('435gmb5r5s9bbkbqo8pn8nis', '17742072943258762084938672774179567', 29); + T('210010022141321034344014413321311333243103213404021224344141321142101100141', '11655341046605487362673272556680098862550253021893796', 5); + T('11703652371245327270875136818411753701245105114621364', '50015363250812413592978674160611932885342581878621', 9); + T('100110111011000001111100110000100110011010001010000000100000011101101011110100000100010110011101001000010000100101010101010011111010110100011101', '13562459849657731179062132755251654390951197', 2); + T('f55ch081bgiqjfoi580i5027j5ibnm4g', '93717655210173870936123983046544755878321950936', 30); + T('14c7bd9g8fgegf4598ig78db559egei', '286902761703352399115713383654173395387', 19); + T('if9644b9hjb53je550iggh2095h', '125985325474900384130099682358723717', 20); + T('436j48e17g8hhbad8l02', '309158322644714941880361057', 23); + T('19395107722a624381360a3a37388491485545493', '837334765628822776393052128437254413732612', 11); + T('2f2ebnnd84moej1fh5g', '284114881218993578999222252', 28); + T('2266ce3388fee3c292256', '2599310186932964178862678', 16); + T('12f09b', '2839808', 19); + T('3v1lrp1nu0', '139695817285568', 32); + T('26234', '26234', 10); + T('8546683557740281816235016708082647838436361741010513', '39956203753802223948047814344332292828203738992921', 9); + T('224130321113431331234124334203030021101242314334043412423133', '446347968128646822230071497717582810279793', 5); + T('122784354735470573734278130737225806820754754778367', '648246815949675714466794273511802263245293730952', 9); + T('522bb0cac72011727319b7ab67075037aba2', '5030349684335489902148585919042821411528', 13); + T('784afb326df4e14f44919e903da2daab2c6a8c2b7', '10988016479801545098971638340838655979698598232759', 16); + T('1', '1', 6); + T('1a', '40', 30); + T('1140625615021215040452466121535636111', '3254092286706201839308923015042', 7); + T('15oonil2fhic899aaec4im0hpda0ghi', '3458063037512129270731260341461940831158412', 26); + T('5qf0e4a8gcpyoh', '680672672565382003132', 35); + T('r6t5mdbk2bhbksd79sk267f7kj6etr76ch2', '13843573438903736667979936265567288587972581206329575', 31); + T('5i5a32b13if5hd6b27ie1abd4d7831fb83335fh', '23338871699861348992667980731442144357549336414583', 19); + T('965h512b2a26efd4hihi4h7ch5deb10ig', '776421006283852166648096674359365276607441', 19); + T('23cc00a57842c825b2b73', '190753980657808903079377', 14); + T('84fgd0b838027260hghf3b1i', '6911861868573500849174840828438', 20); + T('32024343310', '33434205', 5); + T('2g25ae07b9bd0d8953dgg9c9', '215312595589787196108811324581', 18); + T('2c7516b990ec844c7a113d5gc84977g6', '380417281882594767106673659584705172801', 17); + T('3937e11053978eaa8b', '356239468690396944881', 15); + T('423540545131050354211054225420050220141241010244114235255451', '36191168862496053559216924657081367445614940343', 6); + T('1mq', '1349', 27); + T('41336630208066014426507600014561516256045788602138888685', '126394964103942872413285726629499765226015930689454252', 9); + T('23812465082116078023663065846540105844417', '359745322984251038213859961958548558564', 9); + T('32731602b73c56641e0a549720ac684047dc186d2e', '5250067280281468268057767492160429729760400843844', 15); + T('207', '457', 15); + T('221016156567502', '9966232203074', 8); + T('3', '3', 4); + T('149390610a9a', '5397912566784', 14); + T('1', '1', 31); + T('1100210011201102102100222212220201010222002011211211201', '79222020471668857707359281', 3); + T('oumnfcjqawvoiu2umob4hel', '63683659777115454000636977806709805', 33); + T('121a8gdf0bg5ee492017d', '4565149191282994738546034', 17); + T('101100010010', '2834', 2); + T('sfb31qelcjas', '348085994301840276', 29); + T('761570133215525640271', '8966391655604633785', 8); + T('k6ljbii1b950a29q', '290193032454717352772096', 30); + T('14444133312304020024142413311244142024204432230212103022143102', '8669102161750148059985951449842543267771652', 5); + T('4fg703204ae6653c6b3j4a9jf2ej1j', '257208195071681839222502187276784439639', 20); + T('1c0f6se081r4nf9rfr9te43d1e5c13', '24646533503075931130110785406893472989210500', 31); + T('5855387560621204', '1226716470634171', 9); + T('256907', '3289405', 17); + T('99igokmb20gb41jlqag2731bjn641pa8m11', '149265576178669580878869535449967114241115964835709', 28); + T('17g40f10cl36712efi6bc47g777e801bm77421fi', '170939473992155811269351752741318276877107096372302484', 23); + T('64647672689', '64647672689', 10); + T('1643632561314231340041002365410010553', '5171467731134228257724052634904', 7); + T('47d', '1149', 16); + T('393ba729770d6505a3118287502dcc939639a85a1803', '70352045253191285526358196586767060137043932511707', 14); + T('1khg50kik085caak5a', '59864078118328974774637', 21); + T('5tcqa', '4844590', 30); + T('4bn43k601jd9rsbjtjelutf1u5krrthabjc', '2226709914233178306419196997863309807078435719529623', 31); + T('j21c171a63p', '21463980112681081', 32); + T('735f0a94g0', '853457045557', 17); + T('31', '58', 19); + T('11303315150321412253104251022353441041322125054241231155444320242', '79348974866336815279783368738596691903140624659106', 6); + T('emtnivvcvpbofbjwx00q5r', '7042313029555078022883072758212719', 36); + T('1111111011110011111100001011100110001010100001111100110011010001101011000001000000001100000011101000111101100011000110111111110111111111111111010101011', '2842819740151363791267849959009928040708832939', 2); + T('11124', '789', 5); + T('263460', '160029', 9); + T('132020230022232233001012312110000320', '2223628314707328843832', 4); + T('qmatp6x7x0i7kwww9ru3g74fg31u', '13041558211114994891605591496874198058411615', 35); + T('1212432456235400016312330136544614313425566221424415544351423', '667449638793600765524787631521077125935234478926704', 7); + T('613b8b5', '101955765', 16); + T('1nbehnbn3k7io1e9h6', '2156225812589011334673092', 26); + T('101530101442425775517477023774', '158785455373148008304355324', 8); + T('8393265877750', '8393265877750', 10); + T('gejki8ped057na8', '1068784882324809922800', 26); + T('35524gbcgd415cg72e5385a3a687bbfa', '2698475481148714592199279711100304788108', 18); + T('1li6168emf0glp8b74bcgnf49', '16707705100794731252094321598976869', 26); + T('4ujg9feb5lsbwn83p1ftqv85a966nujwd', '19276486249671857007076018238589272537818685313529', 33); + T('7k', '167', 21); + T('bbwtg5482u5u125jwaw4grahxsl2wv6', '99870770755356292494097529732122977160595962180', 34); + T('12102302311130033133311221232311233111030032222222300300020200302332222313211130221', '36792782803022052519563878572962189298755425949481', 4); + T('39fd0kdiglo6f1', '13594585461735594178', 27); + T('30214311524250615152333025534506', '480518635808621857675890962', 7); + T('33736082402621341865465256743878261', '952533655583805522673631866039924', 9); + T('15536323540072537510214740648724651474', '328944392163793117310283327346967335', 9); + T('baajk2e9jcgcbk4a', '783476238643207986019', 21); + T('78s0h42a7', '3656391077499', 29); + T('5jipugkahalhjqpash1', '3937423681465917065890170274', 31); + T('aba12217aa326a16084a45', '505448814884269683427541', 12); + T('g8db2dff76', '5311016260900', 19); + T('fblgab2', '4774316536', 26); + T('cw0b3rp0nqac6rkqjm1a', '2807837344213103415524527607870', 35); + T('2220221212200221020001120101000021222', '438934738823378954', 3); + T('853iy2c2t9n5skt9ncntdinxj9hw', '8528601144540421131583349837423197612512212', 36); + T('enld1pqd72iiaah331p4c31sjricj', '8459371819370199255275975857354512812858013', 31); + T('374160464102717737077444644401061474361141636', '21456498302081433312710883059235111093150', 8); + T('5bnlih4kc679j7c1g4k3hak8eanfk2cd75', '74243343685087721564583592254567964316602539555', 25); + T('i291e', '2362778', 19); + T('ff4e0b01g44379g699bgc30c8gb2a1e393a01b', '53454133794642577998107664307448664264718891224', 17); + T('h6g', '19872', 34); + T('hff', '6437', 19); + T('201301132320130302211011203213010', '38937807697351162308', 4); + T('el2i1c1kvnf4n9a', '17306001852428266396970', 32); + T('llor', '586647', 30); + T('18f0l3un7hx6v3l6xu6whg0c854kolmeb', '12695193933193179158621509296985565216876568630503', 34); + T('2ehm00rlkmf', '1053398216187932', 29); + T('60lb29l4bkkbb6bnlccd5557h43h78', '209357188819429378059650212593873946932683', 25); + T('r4b', '33226', 35); + T('31222304042332433414413402401331030144230123012203422141033420300', '1789049338874374103059075210410623287931935700', 5); + T('13abbda6aa99c3c209c60266c69080c', '30726786430113013257219600561452028', 14); + T('262643168493430786031', '262643168493430786031', 10); + T('1100122100212202211210011021210022012211112201000122102110221222202200012220101210', '601798443643669936350054442563165420687', 3); + T('14otqenu046jhlxo4ptmng1u', '190810415328770416971685556952127736', 34); + T('da4h7jm2gf386iojnaq5ce1d25gl', '15818738612601844466551284963021649225125', 28); + T('100110100000100110110110010101000101011000001100010101011110100101000010101001100000001110111010100101010010', '195266285040805814110355923380562', 2); + T('488342231251751346242311', '44247487379947531811290', 9); + T('2h8bfc33dhb130bgd6d37', '37877193351326116690267633', 18); + T('3r2q2kd0md', '135336655487693', 32); + T('23332231413342023', '7332327145311', 6); + T('265735ecgdd4b353h3472743a3', '56608285630040709994361807982867', 18); + T('36gq75xn8dkj1vgvsz00l', '42502936499191450526350062396117', 36); + T('eh7dtarl9r36qaa4mhmk7', '9778676538945889058686790375871', 31); + T('14803558684458a2993a0a32099467a0614194730', '647203408320127342024090091627696455000077', 11); + T('1451431412002040323331043104330', '400960425098607615886590', 6); + T('297p13lh5gepa3ecdhhco', '99373684147185210906053364513', 27); + T('1301432143220', '394412310', 5); + T('33', '87', 28); + T('432231350515154632', '1041384299764405', 7); + T('313121410300242022022133', '39718036029485918', 5); + T('6b63', '27491', 16); + T('682b3', '189426', 13); + T('7219653551a624979495a91a8', '70891355956396038181400257', 11); + T('33002231111131', '252368221', 4); + T('4d88ggej8i58d', '59239205589626625', 22); + T('34451601353532653611436161142566545211336115564531652', '323278188886248967529158547940775990624674072', 7); + T('1is5noptlnirtdb3fvp5n', '2015588554685716212306054997175', 32); + T('bha5cgdkjk0d', '4144765439844616', 21); + T('27a25d8j516cdi4d7b', '70786447958357042929196', 21); + T('1586', '2030', 11); + T('31342760667031767334646421766116726252335314714', '1108212082493888677367272229520408961194444', 8); + T('28546553', '14143782', 9); + T('257jd0p4o', '460207294324', 26); + T('2lafklt78vxkn9xllik', '9683449653483437263505971556', 34); + T('2d3777760a984a21c97a0d20c628c419cab2bfc67f', '66084232243819558824679961490043082487366953191039', 16); + T('2eqb5xje', '127870218160', 34); + T('272343723733570133550665013', '880462300728651545799179', 8); + T('3kji6mhdk8no7jc8a9emhqr', '552688352219570858171515412726536', 29); + T('45472185506624743014572972163525387956841', '45472185506624743014572972163525387956841', 10); + T('27330316426437424646561612652414263301414200342717', '522342837272716004737400194551917026620851663', 8); + T('2b32df51f67de8g8834c19eec0c3c9320bbc943a4c6', '12688544036802134995824223195793070866654304069676611', 17); + T('101214044003251242303202220534005133043421420054520404513042300402350', '85236281669632536888419124917731749716268802441235130', 6); + T('33', '27', 8); + T('22014g67ff8bf1c644c2081d17bed81171c6526e75', '594721012934655345095358079862004270167442813594302', 17); + T('2uejffgbg594', '75792588512668236', 31); + T('6hedef5cg89aehbg029334ehibff5b', '84126707114035006726317668787251510718', 19); + T('12c9942167ae93c737fc5ff39d', '1488492491002839592133151683485', 16); + T('c2c44', '797764', 16); + T('22112301432130424314234114214121144302343011224233033111040443413213434424', '2596351663106652674437417994841482826828643522405614', 5); + T('447886b857b4442ae33e07b9c620', '244322955053028014376497119444380', 15); + T('fe787f84cf0ae7655d44db4e793b2a98ae8f', '22167524012235587957931446373184044722073231', 16); + T('ce00gfa61b35502ddea6ae08fa9e3c', '32311970180252432302213442175559249026', 18); + T('6410235531675374505654365627', '15755268886904815024728983', 8); + T('10421g292f1g86520b7g99743ffg', '1691511665188307722429188808830042', 17); + T('hfhae73', '608398905', 18); + T('1b02pnbb9fk2kt7hgejkfghaarsm03', '9380211704840395733125589366849221945645803', 30); + T('1cmfc4mbkho', '303773375379894', 27); + T('1011201211112002120002000021221000200212210122022200221211100002211020111201222', '19303102056479652797750726699461962392', 3); + T('fmf7k2vvfli7js7qddj08lrrsvjjkqhlqp', '734369787776964304691750078309244157228282267883353', 32); + T('b9r33ab', '10045230494', 31); + T('2144b7bc8951804726196a6a744886dcc1ba41ad002cb', '563023243497677865341196187925034677481508487973787', 14); + T('ab7', '1579', 12); + T('11111101111011111000010011100001100110110110000101100', '8934565388446764', 2); + T('121201210112011002210112122011102121100111200121201121221210210101', '19152206217272003533575256015003', 3); + T('87ike7hc4c4e4csrtrunnah4', '165014231640248173568866466973234731', 31); + T('6f40aa9gd3529589f6d6e8', '4857078092896960066845279294', 19); + T('1000112300233023320333000013301220131002213013133010032002130232121200112', '22424670700759204990548756345478151954602006', 4); + T('12010020202022011121200110122022012210210002011121220002010110220200022221212120022', '2270509037526981909994030317330177692336', 3); + T('jtcrk8briibmd1', '734874456187380029857', 32); + T('323ab6b303a0kh2cg', '4439310393102239451589', 21); + T('132213311303211212102223130230213013330011030112320113113131211020222200130222310101', '179019401287519987440897017633826802507494397750545', 4); + T('10421aa279', '10865826370', 13); + T('28cbajpejjf18u', '264768966115047556535', 35); + T('1u7nolh6bd6v0', '4507977116539696462', 34); + T('54wmga17c', '7244724152205', 33); + T('13uviq1i1r00087sqj8qncs9lo8', '1529924306777719202810742088266389182216', 32); + T('5ds4b7nu00morbk', '6415012024329735794036', 32); + T('34410186233', '12187121115', 9); + T('47a1c4hbmma0gjf3b5kn914n4n', '381569904666915560937256750088358248', 25); + T('54ttopkk9fmtu6764m54', '111825156831061493422412579685', 31); + T('mgn', '18989', 29); + T('10505055444011541442103154442231040330004242', '3299912455302280343771981626079042', 6); + T('7g38gcdfb0972cd176561eff', '587323076724641878770901613469', 18); + T('49106l58aqblku24m2mc62shsm30p9q5j3', '1474965748795651704391869363110766509836712354573853', 34); + T('50258', '192550', 14); + T('5025aa24a', '4090471668', 13); + T('17515037027696b9a135497bab85868', '384282956567691349139467954115216', 12); + T('573j1fe75j8a9f29ii7d34cb3jbbf', '14387834859916761337851572818723836635', 20); + T('186b6b31486165c0bc8c778fd49af12ea08f7dad332', '571028668500605890623232664155788301681845784466226', 16); + T('2313123220321101131302220130003331201011233103120', '227077642865109202959441786072', 4); + T('7eejonl537c40faim9b', '222874151472317796433717213', 26); + T('8k0oy5j231dhtdv5t8q7w5', '2283030198732051810335111155170075', 35); + T('435045040612115113266114321225361030034215', '202006427408006640757853847254122093', 7); + T('2akkgn3g1jsabehm6kgnnrpl26s2t4b', '3329280104777703639665143207138900680219128971', 32); + T('20', '40', 20); + T('111101011111010111100011011101010001111100010010110111101111010111011010000', '36297363457553334775504', 2); + T('3222123012301022200330013311022', '4222998842413448522', 4); + T('a2587983019413965124039', '832724865093143284531509', 11); + T('akej63bg59kj4okd4oh5il012j8j0p', '1167589559975024794478346165128293255822901', 26); + T('23c2he446d2g0a6gdi0fdee2gb6e5c', '26583275300599088108871698596507139368', 19); + T('1jkeh637ms7gofnk8ood5i5kk1j22d', '4312562387308133742326791929397236729866296', 29); + T('78837f5f773015da983e', '1792798252228672996730116', 17); + T('1416c69100c21b05a22264796b', '9291730109537657404686437398', 13); + T('93d8a93d28', '191813134864', 14); + T('394a2167461768638586b2914b0b80667386548658', '667335229599904318812161808924349330646817188', 12); + T('1wdsuoqsut7um45fo7d4', '140917464962232105605575506580', 33); + T('4icn278aa75564g6j2olk7kl7fl5ga1n', '102797064941780765797751135934146317345959423', 25); + T('9i002055a4hi6jaaadg3', '51904577968178133729685523', 20); + T('1cvfqsut', '72490601641', 34); + T('fj2je594k1j0bhf93b2de72373', '18079705921653558686576826974593824', 21); + T('4240320213321034004', '17415886111754', 5); + T('711966f187geaeb5bc7d207e32a43da8265e186864g5', '573279130756576280449162350505323079502754368266400507', 17); + T('49271274804b36c488411958c67c8bb9c1486455', '130788357055261430585631300892818257979129537', 13); + T('2dj4ib63771dfig859hcc0ab17hc03j', '2897080031583056937886505492750169216079', 20); + T('2aef3ee6f864b26772c23cf6', '13287600730756091106849602806', 16); + T('frcnn9hib7eog6f34l23', '628128512915374991101180138563', 32); + T('1010111000111110100011011011100101010011110000101011000000010000010011101001010001111101111001110000010100010000111100100110001011001011110010100010111010010010100', '7958075089772384277251993017934409136873707500692', 2); + T('46h51n7bh5n7n86njh37fhihc3d79cj8h', '628335332219766512635376856539379172420010897', 24); + T('pciq4mdi1q9q22q9n3g', '2848254632326814305960656020', 28); + T('1', '1', 29); + T('2f826f687ie3h5h39', '1815538753739148366869', 20); + T('85224600844450714154447', '8452979833566085087057', 9); + T('2ncrhr4rasjjeqaajq4341jr09r', '1642784213600589272925380877043975840644', 31); + T('a00', '1210', 11); + T('56c717da4g7863c4127229b838b42dgbbf7g1132', '5242908799066029717292077136248328396959421188623', 17); + T('293684b63150b4456438340064cbc788c4b01', '34310245908660290962930216560562702368986', 13); + T('40cc56abcc240', '94978404251094', 13); + T('218903cf27a47178b456e4cea5e470f7ae51670db5', '586417501992499293536891609375926193432812131092364', 17); + T('d15wq1nleg7u549dadd0718e', '2183292000236241138234881147030692666', 34); + T('1113023440200122202434101414400101', '147253000878996390387526', 5); + T('193c4c1a69add29d9a5101ced0568697d923', '2198325248780085112365807036920470754023715', 16); + T('11a507516c68d662f15d9', '1333191524844399246644697', 16); + T('138246022172800612014535', '12723226204164688321097', 9); + T('2f', '67', 26); + T('n9bbffps4ij483m9p4lfeon74jmdernad', '4319880888388973123665036793081840398907295990013', 30); + T('9nrr20re0e90il9hi49fijfrk3el', '11668527008401372147103143919940731784397', 28); + T('110200020222202010012012000002001020120022212111121202111121101021', '14508751609178069453862292358287', 3); + T('401014110441023423013340310213213401002003324434144220111030', '701341637605553414959898651614073338832015', 5); + T('16d1438563c3dab89cac1b8a2b02c9ab92652cd016087', '402145454893768368538070238910742261904151734958103', 14); + T('16c430ih94bdgcd', '1078369041154387027', 19); + T('6rrmvjny73f40mqhlbav2u92ly8xhs0yl', '174704136528249902816525420461236150502024477152961', 35); + T('6h0g8ijlelligfeh699i4lfm4', '8948723159164161623690376517243348', 24); + T('909697005b', '186948429217', 14); + T('205ftjhgh6bthp9i71h51r9mrade01sii1jkr', '301112010317868572084712100360200322156165974734024727', 30); + T('20ij24h4d1j9jj50', '1890604943011908121375', 25); + T('221011001021222000210020222201200120101000', '101921456153063705544', 3); + T('m2nhkcpq0r16jd3jgm', '160361482760888867774119965', 29); + T('14065304637358947988886', '14065304637358947988886', 10); + T('jg2ii78j380j', '6924453033870937', 21); + T('mi0m64bfip6rsb53ol2oscllcoe', '2381613436643734921316429121959549049180', 29); + T('11101000111010011101011001100100101001110111101110110100011001011111101111100100111011111100010011101111001010001100', '75584728662217792152893436906631820', 2); + T('90169650', '90169650', 10); + T('0', '0', 23); + T('9m7fl', '4504599', 26); + T('462207311743', '41106117603', 8); + T('apjbn7lln0l9xau8pxi', '39637920958143725832613021304', 34); + T('127dc0ab6f59gd8955b', '16097431569685397455342', 17); + T('273h4fd', '81667075', 18); + T('1isgbdtssth73e6es382gs5k13rci6ob9u', '74377241800512845181909478165136810275516650892606', 32); + T('3', '3', 25); + T('ad4684a', '124002745', 15); + T('4aa54680539bb5a81c6a665694717a30a525a0045', '1744843150071734423605691580172448713985937039', 13); + T('5c8n1tpje68ud2mu125nttg62entnlc', '7683611140873419478117143666838299771020435116', 32); + T('fa7f', '187971', 23); + T('22215', '3107', 6); + T('52a326814a947496353844318285bb39b066903', '534626397264431225021347981842706300601235', 12); + T('322011015154252234042', '12393630663355754', 6); + T('a2669c148f4ea9e', '731388268367899294', 16); + T('5d10e2dd05007', '12587319228711547', 19); + T('ed2a498f218583395d57871', '4587441849070983049702111345', 16); + T('16bdq35kl27kdjj71no6sf4k0', '152793950271880209148219854505487346', 29); + T('10431071513a9ck3iaa47hdgecchf9he29', '43381023423292724420039310610763756891127936', 21); + T('5dbf71b1', '7269656621', 20); + T('10011010111100000001000010101000111000100111', '10647241395751', 2); + T('jpkpcjbvt1kvasvw0o3', '42599410634040128543688914739', 33); + T('128308731332831865326', '16111972802247011835', 9); + T('35434021473746', '2030987278310', 8); + T('127cc6cdaf7qa1kc', '3203387745871429565940', 27); + T('10766710063735420744724674434722341532775011206477', '200309946175742618027595387139557376886377791', 8); + T('32112213201233103231130113312210200302012032213313131032', '4657944669466625109696536299665230', 4); + T('1bn51ig3p6da10fi41e', '83689955139542057791275209', 27); + T('14j0emmo11eae3de0agnk4ff', '169171441207698617319338544456015', 25); + T('1102002220022000112001222221211021202000220200', '4169673548357936837733', 3); + T('7', '7', 14); + T('340204213', '6175089', 6); + T('1e', '32', 18); + T('18c7c1610d38c2a024785', '136841031302109468114513', 14); + T('31ueglor3822uu3gf35hm7gje1qj9jt6pe', '50259653982330318278094715762420803895196428266256', 31); + T('236321451394c64', '8928832987449509', 13); + T('5cslpmcp2rs872s2fr8rc2d2squils2w2', '21087793377200031159635076834353655172712568202115', 33); + T('10gf', '7178', 19); + T('7d0i834f9lbf8dl7977c1066d', '3633925888734055009195256007865654', 23); + T('7iswwap4lp8p8j6i3pu2qnd04', '21064442780596247994135825814304247484', 33); + T('1101001000000100000001010101100110000010101111011111001011110100000010011011101011110011000111101001111001101110110011000101001101100111011111111111011001111010000000000', '613876598207563084074184752663166261629198587982848', 2); + T('r38bdsmlfkj5o5fgpn2sr37fh', '3394192241536374888033574057729932943', 29); + T('pen', '24482', 31); + T('1000100010101010011110010010110101110000011100110', '300531517677798', 2); + T('374680', '1894648', 14); + T('8a814d4d17641016e7', '857434943927347654942', 15); + T('995aia8i7i534cd5a', '407923137231020478898464', 26); + T('2', '2', 10); + T('ei0k088eed6b8baak8863593jk5jg2f3bj0ce', '5914160321016074730951144567079146927255110936222', 21); + T('605d40ca01bba94b5807', '36039226245164182578223', 14); + T('2691817922ahd8h70hgfg450i6c', '15587210948018755081634733837607332', 20); + T('22i4', '22664', 22); + T('292529d755fcad39c17', '35683399481751866213677', 17); + T('37a1997195385c7547', '31127908670407785724', 13); + T('3cfh6q7qs3e8jee6tkjlpqq9a5i8itae', '21107782523772991850229603406241369125689392414', 30); + T('7258001566030', '2060303030955', 9); + T('1003141020014213142400041342114334000420', '1868009637795830437567875110', 5); + T('2610ijgk2', '86541700184', 21); + T('1msi', '47658', 30); + T('3411241353543406436103214661', '236290896186624501227090', 7); + T('kqqku6nh', '886989350792', 33); + T('9dg966gcfea13ibihfhbi5ab3dh91189652h', '33298588133944531766622520550241012455771090057', 20); + T('126d4x7', '1644209985', 34); + T('b38kcknna398q', '12799947735241434394', 32); + T('119597325350', '333730723810', 11); + T('44toq1pb0t6sg08i2s76clauklu2ma', '73890216568631498105831170089909975464059440', 31); + T('10100001111011110000000110100110101010010101001001111011110000101000110111000010000000100010111011', '200464110595405607835630307515', 2); + T('qpkff9xbvnrd1n8t', '3872892307770646972701359', 35); + T('15c07e8c84e0c2bi', '19681700319754445162', 19); + T('13575006b4598b303a5410114ab2769b9578a58a237', '2728161815957558299608324450916107759586273483', 12); + T('17l9ag', '18489184', 27); + T('5m05rwmt4y', '443630110370824', 35); + T('3ci69diccggg440b5', '2389318437192755872225', 20); + T('1idml3gk', '80950718952', 34); + T('127928787d5515718a438393d750a759455ca565b34', '1621680550245507449770648650226492957703885128306', 14); + T('6t0gwhcj9gtqhtqv1e8vwinisj5r83mng', '26914594023358001953145365010867100117166476629602', 33); + T('66rfq', '10393190', 36); + T('l666idhbjuae0g3068871ejrtsokejq', '30248459681883725436709460504274517072248715898', 32); + T('150620403643664355463463322516301634404212612006326044340316311', '43130882606292506635424332740606360103280488114152080', 7); + T('41862475647386600025768161687222', '1609441597409751564405007398428', 9); + T('265bb6js6mfj0thebap9qw3poall', '2273949182220992377824887028606074878128297', 36); + T('2e80b229c', '145582396026', 22); + T('448hp32fj2m6dg3fm759hf7mljjpn67n1h6fmo', '94146978337401409225278981432841045277813022960667856', 26); + T('c530a0916607a5c2671239577c4a97', '2499620725800614133816439595702949', 13); + T('97k68ef0g5jaj5d423nm3823', '518314667420525656062603410445363', 24); + T('1252', '320', 6); + T('754125931534429694233291', '754125931534429694233291', 10); + T('3fg8dg94585b3940c4cb6e07f41bfcf61aea', '334073125271035216894226588458437368734495030', 18); + T('1010662343214312332313544054462240410550513026053443303634422611', '178309037555490506292600092100168566672657290807577202', 7); + T('30wc', '129757', 35); + T('4320aaac', '266240883', 13); + T('1539a246a76a609648858', '26736559541986486658071', 13); + T('4', '4', 33); + T('29gefgf8fg2bbc0j2gae2dfdg5aab081g7523edbad', '547963388106591613005337267146277208966777017739948613', 20); + T('92d6a085a2c34a7428ed', '203795832889664860683148', 15); + T('264652754111247167745300734100146216146065', '30046186741840723600384513771105209397', 8); + T('23b62849704471426559815', '1286298360248279428215377', 12); + T('222h1338d29055hgif', '11581651006107396744198', 19); + T('8b7e0', '4473522', 27); + T('1717051362601647', '67007056380839', 8); + T('420547635403', '36601543427', 8); + T('4n11affqj', '1822050938139', 28); + T('101001100001010001110111111101100110001101100111011011101110000011111111011100', '196072603810916493443036', 2); + T('kjj3ich1hi8927', '3235928371344402790', 21); + T('1026cbcceedf14b4084c26ddb8d60', '28586225584974591487797016899842612', 17); + T('5100303210200143452311', '113393272692833971', 6); + T('31c', '3312', 33); + T('b8a04fb11aadbgcd194aebfcaa140fg85aha', '986969674191993486338612160880717878632568844', 18); + T('qx25up2', '41667188532', 34); + T('2042243400202111330011234030111430404114414112200340102313410330022024', '3694289161066978099428391349384630089650597110889', 5); + T('7e4cib6408d', '128053581918877', 21); + T('3dkla1bq60rov4', '400737723756673959989', 35); + T('1112001210', '29937', 3); + T('11000022220202112001012222221012122202100012010210220211221201112011000021', '90389162760212801316792406240633498', 3); + T('104402113303233132403332320314443334301340343223200420040204122102', '3232890541201633751697810007380727413369989027', 5); + T('31347902', '31347902', 10); + T('du', '472', 34); + T('111000100110111111111101111111100010111000011111110101000111011000110010110000100100010110010100101000101000111100010011110101010011101110011011100', '157803884622143105853315584471057717069995228', 2); + T('2la86sdx095fp9olfp3cd', '34638184595229945075220814528557', 36); + T('mbppcgg', '16326236296', 30); + T('ik3heeah89k44040852hcbjdad1bd0dgj26356d', '3328101869145288095897995482276848932558602785015740', 21); + T('248lhk5e9bh6', '2087440191630642', 23); + T('48b381a9cc6bd2259838e067176d166b03de75b48b52', '1710407976429394820093761786315250202911786143975802', 15); + T('11120241101421342112022021114234', '5852950522529808769944', 5); + T('10a86b3888445869a814001084b9b71a27b8854486', '189496275017394315065342874001655116260299430', 12); + T('113650166605747526017701737745742053073656134564465203303', '443294363845688739540957905727674168806539626088131', 8); + T('1403535540244734200354', '13901404808061976812', 8); + T('oi2e0u6dv564iip091kv1svcs', '279954224614775983979370462509946073923', 35); + T('3m81k0kg3dk87dhgk8e605k9c', '1907459221327034327466909784285991', 23); + T('122463220110011161460202464352', '4317537278759647032243456', 7); + T('12a2112333a', '32837849428', 11); + T('343e', '55524', 26); + T('7', '7', 9); + T('5340a04h093ha55', '8454246524189420105', 20); + T('1t6597dtoc6a60r96asbjt2kkdkmdhgdg', '365699081636314950725064929820331423361435603806', 30); + T('70accd12646c3668ad5a94bcb5a46a9594d615dbb4', '691498804549708730481403267581768571471127086226', 14); + T('14231502342125123444', '1058783927560948', 6); + T('h16uh99gks0oke4jm1', '1112042758022780182454147425', 33); + T('180235996184901794802', '180235996184901794802', 10); + T('199eqcuo494p', '33035755412380307', 31); + T('15vcnwm360nhtrsdcg170j95ic9', '16344915028963724309159916980885883220604', 35); + T('1fbbac5129573', '558254565528947', 16); + T('74712131706533505237435313', '287567912644119793384139', 8); + T('2120102201101112121220222000121120121200212022010202121020200001022', '79471474421937214637587196749697', 3); + T('6k56ciqjbp09cecihitc2s9ci401s1o', '1373800350782015189643171446697543684559252254', 30); + T('483911671045098021', '483911671045098021', 10); + T('6ls4rklq68eg57k39771ongp5', '1901116087770507341357362812137376155', 30); + T('62534342550506655221142232301622406', '346261030417237040471354955721', 7); + T('3d3gi2aec6h4iaj274341ij04b8adb5i6424', '12574335526418428815722193942856616209362929644', 20); + T('9dhgbffi73bm8ig6j6gmb465bgfg', '56087289901202292671877462355609399160', 23); + T('jo0mgo65i01d2', '1189795222467969702', 25); + T('2fmgko7cif2id3n4', '7641584157166496651380', 27); + T('11ers038dn31h4q0jwwitaigbls', '6861444888213865174920042415409636982706', 34); + T('38204aa633aa43727a069aba97ab5495546', '18117724934806126020578044715213143494', 12); + T('4383536346071054764058653730600', '188091218363927447542822724322', 9); + T('16195113650897769995630', '16195113650897769995630', 10); + T('b07264b2abe1878a5340ceead0', '2785665573207221854518665183445', 15); + T('2sfd3nd98gbq14g7j1q57csr07p3eenjlcr', '492057936249730728996372928617044050859159675362287', 30); + T('5b5192543b4a303561a88b728', '473197943789271561906525776', 12); + T('1b91780b06a70cf46e5fa0fa8e63407e80030f027a', '40291024919626546988689644749021723762456102109818', 16); + T('1hvatyxzin2h7omp4c2vx1ngdnegv7pzju', '3412107642788556261980502714401988369603559696843578', 36); + T('4bjd23t2r9gpt2dbrjpwtuw', '11115017221742953718461821513987449', 33); + T('8302a02', '14659515', 11); + T('p5rfvi61d3hfog2h9tabq5lbaa8h9lr', '35942528587984060838184369332151588523281524411', 32); + T('4g34hp2kfaa79kk3dgfo0emn528609', '499893475952157966556029154241504867485217', 26); + T('9k8kf4kea69420f4b85h42gf9if75', '104943512895974446884235378529723561312', 21); + T('3gdjkct3qhipsqae8uz', '35635251197434521507651851867', 36); + T('66kk1e4bk592m8dk', '1679888991376791562911', 23); + T('3', '3', 20); + T('10h6pig', '316807208', 26); + T('iq49obnbtrfnr97tl', '22747999482124841946226613', 32); + T('5136777371700436', '182450142019870', 8); + T('23gddce4e', '15588339003', 17); + T('53', '93', 18); + T('366abb213203b8f4cd9e1788f81deegc664cb', '5191961241144177945785597152999737524951590787', 18); + T('5c171421', '2343354801', 17); + T('5', '5', 36); + T('110113511313646244303100', '31375848110336055984', 7); + T('d62116b5b5eba94c98e1', '297260523753065332755511', 15); + T('25a90a2b75d596836e10d26ec831', '763841862190387816235893777156145', 16); + T('25142514424542535314551544304432', '3822616861518711367435556', 6); + T('1', '1', 22); + T('60gcc66e9d5h7i96g84', '629571193297266217720396', 19); + T('557', '2537', 22); + T('57b890a83c6a982606918', '106570504349447291847546', 13); + T('1ko1l0ioi13ml70237k46e', '418030558143625054474397580789', 25); + T('gjq69grls56a81maharg3k1h9ne80k3gb8', '92627603492627444203230902129810925855579328295738', 30); + T('198e45c5b8957ca80347ee693c5', '6210993456975719701341596528735', 15); + T('1c622c6a62cbcb908073c', '37242012395034880960188', 13); + T('8067bcggh07c550c58312f4gf730feajdgg0', '27542586791389756078137842819468361236131150720', 20); + T('1339017669669006742006795785006474', '1339017669669006742006795785006474', 10); + T('110110010011000000100001111100110101001101010111100100111001000111000001011100011001111011010100100000010100101101110000110010', '72173098483072489213930426080106306610', 2); + T('1akbifk7n24n', '11471452525560295', 28); + T('11010011001001100111100101011100111011011110100100', '928648793405348', 2); + T('692a2496995', '419167655681', 12); + T('374e3f2798d3b581c2335f3cc', '4554993763503222341647341469656', 18); + T('5rsbkqfkfcoj29ajdi', '630903110773372341792602744', 34); + T('33300232000244330423420200441024144200431020022134234241320011403', '2017080979900182548533705442612218309222032103', 5); + T('d8e68i33ekfb03hli', '40331655796578387904428', 22); + T('9ckk1o6p70dhgk60a3kjkekfjn05mef3g8oh7h', '214478514683523014526073551129543814424042054284209707', 26); + T('du9ofj3b04aecjm6i8uk222wnj67mumte', '54453279705597662566198782922581780169626751344881', 33); + T('a985nf1qf87n8f938gfp3gr4k81g9gjca1o', '165026316421448486404656724055483635522214133933780', 28); + T('44554275695', '114358237746', 11); + T('6c70a1aa65089aab372c819690a90c6898', '40090597115431771839762779123955361890', 13); + T('86044b053d0daaa6b', '18360481564891608503', 14); + T('b9g0kjlh7ic1gd503k4he', '8071692227413319882891853540', 22); + T('6b6lgm8glf152jl0ki91aldk2lo5n9c', '475619065001030234952948540234894886223466110', 29); + T('87a7a8', '1405170', 11); + T('1a7a31c5863d7402', '272823800502213130', 14); + T('jcjj6h518h1472jaj', '12877770189538637943819', 20); + T('1cfxr1lh5ox', '4919839455772689', 36); + T('310288811367762633415531745156071681653', '5684663159794685190217985404311834111', 9); + T('14037', '9511', 9); + T('21304440200313123441220313012000130041114333011322430023430432130', '1261979446859029545623380849346186459988139665', 5); + T('fbd45cc9e2', '1081599642082', 16); + T('519c09d40a70404490053c29b986', '45172525747251864110145361563666', 14); + T('19', '45', 36); + T('j58dfca6dnhf0ncbn49gkgbm69a2nlb0j9ch0', '936333578326698695534344960444912288238423306547864', 24); + T('1120000152232022252110140241032312245311023234334032342030250', '59734827155605610430522117739886928577205767446', 6); + T('18kakpghglhn6hnp7', '58343831352748592126197', 26); + T('3204102231020302334334000041132202', '399742489157707275724052', 5); + T('76r7khersf2irrlc07pm', '44183444942343119517736482557', 29); + T('10110011010100010000101111100010111', '24067464983', 2); + T('9049021262545393024579091866492398542902', '9049021262545393024579091866492398542902', 10); + T('3', '3', 26); + T('3veoda0voe2luvu4k', '12515452726305126989433740', 34); + T('1s8uc49044sv7fuccu7', '18407131120081731496593356287', 36); + T('5dbb78e8bkl9', '8462954128212225', 24); + T('31k43g71i6l49knimql', '342583482343807445741585613', 28); + T('kik9bjahj6ego855e4p747mcnj46ej11h49763', '468224983002703595759182810826586464545958811319348899', 26); + T('13442134313121140343404', '4281453440168604', 5); + T('7j3l8g4pm64k892n3dpbfpl1', '2709736655099210675851690721591311', 26); + T('24cg6b802a04fcdg5ae11fe7fg6ffdbg4cf0c7', '7666093592391929958225523158661060374109385283', 17); + T('29752369384011377360244601230116502477113293803222359', '29752369384011377360244601230116502477113293803222359', 10); + T('5c7ch4dcfjl3m5ca7c4dd180ac5', '4235317763416835730488450279827445669', 24); + T('2035677377165', '141448576629', 8); + T('1014', '6882', 19); + T('50amqhdu1dahb479ah6hefe0p18abc1', '2759244699893958338366015509269119092121474036', 31); + T('31solno38be6ms7z0l32lezy', '1902149044738223750663383610950532398', 36); + T('51vaai09fb1a015ap7ic8e2dkdid0d13', '599793397183230055183156703483234422199767481181', 33); + T('ef9g06g61ga899g028ahi376hfb5ad', '179724417572923541328982412809644535193', 19); + T('30461305635630120110', '35333469582885698', 7); + T('304320404024431014001134123224020123023411323323310331123', '4423498436624887900904435210623464152038', 5); + T('5tchpra8cb7gljnqmln', '12687862955738067803782907150', 33); + T('1a9c03j1ifa7bccc9gj407lj3ma0d46akbp', '21869065306730387940320360093107271014796230532621', 28); + T('90ag62b53a29861ge4h90', '115163310974925364653762918', 18); + T('621e835f12ad64e909cf7', '7413676543182627283180791', 16); + T('2', '2', 7); + T('7630b7863d3f7j2dgd5bhc200d0f68gb5i', '313413466559810937691188229453692824598698991', 21); + T('73g65db', '460210271', 20); + T('89a53768777804667091962684a82141855084708827488a283', '104534620147629781560246588908903729115824398664090794', 11); + T('4nehl018cm4eha03ch2nhc7qr0o4sk', '12351795250155371862634726792610964318320229', 29); + T('36472233456', '12991747029', 9); + T('32d0113076633053bg7b3709g318g996c6f7', '36792759299975206676907084433244583181437716', 17); + T('13mkp5t2fulgpft1', '66633458682354245995171', 33); + T('ait1ia1bl303ms1spcn2nr2iiboj9ent', '65672776682779904820651918660598404908077846319', 30); + T('3abhdcj86', '90360583766', 20); + T('6225d58f7849kc20437131', '35642008659327399615108918817', 21); + T('53pl04gjp4hag07ahf6gqqml', '22162199821100339000975528379110427', 29); + T('g06', '5190', 18); + T('20p98o15if0p78l6720837', '1055700859046956086847060755701', 26); + T('53i8', '48014', 21); + T('epk6lkjbak073be', '1636219455447096840209', 27); + T('222bbibi7c8gfg30664781e67i953j', '113089149702236219736580991019929354079', 20); + T('216qomeeo9db41m6k03bbb1j9e', '1244900192918777003082880510514807396', 27); + T('11b93e', '849209', 15); + T('7mifim9aek5b', '12095932884795779', 24); + T('b4b46h7bae18d8bg7deb', '7972552227341225059016915', 18); + T('207551b6c0195', '115523483441287', 14); + T('3p', '103', 26); + T('197f9idk9iig0l3bke9d1k62cgc8j5a79h', '284292035870134579813298295972717503315861875', 22); + T('155963d4d8h4f8i1hbgcb', '132504736945942923398014651', 20); + T('304801222557410412641765610074071503', '7660601613972756521838449165642178', 9); + T('a5f39b2250eff541ech35162ea4', '4476738604960162450815500774841664', 18); + T('54a88663121c64617d71b4a122209cd2c0390', '11605880739459970698798281924031905080986435', 15); + T('4ab695565b5', '666873944885', 13); + T('5ca1md', '78319993', 27); + T('3qslq250dvz741jhl8', '1072784063532716370614632652', 36); + T('185230488c4261398a2544cb00c34742bcb23288', '45731671516320241574807720089017159625203497', 13); + T('24141422340244200340140401', '856829699562036976', 5); + T('17de6483675cb29063c', '7044803064789933295164', 16); + T('429850987a9175209439859143545288466071015673385618', '4548955205287866147144947183033535389148611528651380', 11); + T('83gc50deckf7g2i95i3fk2f8jjjb7hlc5dg36', '17356768087450686226472673111107289905971168186576', 22); + T('7344c055395b32a41819c', '137912936874177212298706', 13); + T('1011010001011000101010000000000110111101010000111101010101000011001110001001011101011100001101101110011011110101101010011000100110101111', '61368670450547755504412274420309228620207', 2); + T('1000011111100010111001111100000100000000111001111111100100011100110101001010011010100111110100101001000100101000100010100000001100111001001101001110011111100000000111001010010111', '203364476148734435560803274724374642023080004086166167', 2); + T('ah3g35d548ea4bfh9d1fc292h94e193feg2e75dfb', '1780619835592323113116024582457203219155826657157669', 18); + T('855mqlyozhw069jiod', '2333132714739048924227135053', 36); + T('102022201201110020112212212022121021200011000220200', '903223172393847799242732', 3); + T('9bhy9w1e41l55fw61', '74170005765265656927173017', 36); + T('h592d8637d2dd0k5163gj', '4801712957170939177303758961', 21); + T('5', '5', 22); + T('2', '2', 29); + T('12000150142656341264053255555626', '202870200111145673769893502', 7); + T('257e51f', '107482369', 19); + T('2ecc612', '49071634', 16); + T('15355035253621352061261230366305602135543424420434543365', '54172534486662629705202470905166502672672269648', 7); + T('249h996cke9b0be5nc3l70fnc93h20ibg', '320569955418628440453489001255451094189328792', 24); + T('f3adom1ngq3u4irb01s2j4', '314624319053987691295478037262950', 31); + T('27a12175892a7a0160424168a35996613950b421869823b5', '1397433081866498613503527062681137551712252447761337', 12); + T('340632544630522633415662322031104260443650626022261224', '2214784384390370140259383269354114041805894388', 7); + T('6q6nce5eecdqkdkmjnje4mpchc', '4241070534916309906119738425533045869', 27); + T('113235054406626436112', '96665647902597209', 7); + T('12101301021001012300301111100123103322132000323213300011001223332331322131313', '8959721927373131398259946028619287042425595767', 4); + T('16kr4', '762808', 28); + T('2854737432023865746217633237845436746', '66621795309306392625749774020755759', 9); + T('19cb300183bb', '3169302143434', 13); + T('1012555568138a1b741846165585aa7b35a3b49475a', '2134175130500831128858578786794170081433983030', 12); + T('271106223317652510470133141417013436324344447232', '8063865882119118770028661617297344888458906', 8); + T('1j1', '1317', 28); + T('14bb4a5d83f3d4bf43b66adada6b0e993784', '1805977369681030296729705669300424034301828', 16); + T('1c83c397a04ac034190703b42b8a86c20119ac58', '54795371938228469135901266442543827602116802', 13); + T('49i16f5i7j2d76egccdde1c66ji93i82276731bd', '2471244346578176698373748682028711809826870228344633', 20); + T('131132', '5167', 5); + T('3e72bc538', '139294601405', 21); + T('111342330121004', '7759223254', 5); + T('g35', '4680', 17); + T('jj0h5371ddah0iahf6bh1', '5538389688853463873501657539', 21); + T('22pirudfu9e7mgq5ki34m731h9fngq6', '1151434291285406691472999364496269523410514631', 31); + T('79jcqqap3nbjkdb74jdc80qi1rl', '310580897107477820585107874712335706009', 28); + T('1p', '59', 34); + T('l84m984fde6354hgf936ug56kb8ntuo4q6', '348786713144351173808729528284372110071543438511290', 31); + T('5e0jot7ec7fa', '521409833288888610', 35); + T('20120222120202001200221101201011011000002122021022201010120111010122121222221222021100212021210202', '41942954018106129338036588729324918948010233105', 3); + T('93809gd4ghg1e170a', '1116205695833217173038', 18); + T('446230341604256064105154511213003600435153634235', '24648873732798551638045236958735680691288', 7); + T('1e1f', '15471', 21); + T('12520004233203303235', '902764818264263', 6); + T('13434033002003004402141124302242203344214233214324410224001421242', '970702797270984391835801113220919489871123322', 5); + T('5522220135303151503503131051350101251', '60854636647067381415610435615', 6); + T('r3178ou9caakpsh7bhbe', '587232889506503339619803819571', 31); + T('11344b48925c928590a9b65965790a531ab71ac0181456', '147070368225022849438278483344224755447603064318709', 13); + T('11132233130311012310113133213321303', '404377318206700682867', 4); + T('21243103211203011430314411440423000341224401022424403242114230442442334232', '2453393003559216570036598154088578511990647212855567', 5); + T('77138783429395', '77138783429395', 10); + T('e0hi', '378528', 30); + T('1sfro', '2720469', 35); + T('10a803a13b3aacb313d20ad45d79895db83072', '2688774325186814939420907831934492554488940', 14); + T('28c33418ca402312012c065c', '604690168281921446532949930', 14); + T('184', '349', 15); + T('2571c597721b', '20456544556601', 15); + T('kk6sqj7rr4hme2lhds', '150208264567193002800858826', 29); + T('566bdhgd6gf6f3i325i3eid7i6adf4h1h7382h', '1098869380632307597689024002479488625096341992121', 19); + T('48cvcjovvcps6w5ih0vvgg1ebtfsrm', '463163236652429988640359361211359679555574220', 33); + T('958baz1ki4nyqglpbas5lh1qksb7zikeivp', '750728967818084621222424385256922764057494617052439317', 36); + T('86151740892663982775089', '86151740892663982775089', 10); + T('213b', '4613', 13); + T('r7k5rw7lm1vngtxhj', '86816834093372879138789857', 34); + T('217025023377545890216047915201', '217025023377545890216047915201', 10); + T('28216429043406a128001999103968938669743', '10267451898484492247566507299193901416802', 11); + T('ikn5rh010c', '198281469065244', 28); + T('cdn3t8', '302754578', 30); + T('4a2681940051031157a53278652494885604968a144380017571', '636699130425199233901707564276961890453203238857370317', 11); + T('214001300333', '115259468', 5); + T('1bdec674867daeb454bedc3125b72e1582686e0c', '13235662457450871047945698439432593046607531537', 15); + T('1461101624363430103541030526563133043332334410035661345255', '2513783613053608388287524826007109061198917911061', 7); + T('1fdc0qd1nfs2j', '3466820238745915791', 34); + T('1ec2fd96j50ll', '21357449083341579', 22); + T('1021722', '271314', 8); + T('cj9ea1c3dd12880g3hei6c13fc1gk5e1gj192d', '108044509832522390985019647621567967006917730046839', 21); + T('22022a15a1242a4050a4a5802758aa2', '514622640579936481914636293866778', 12); + T('1d8d052c67dd79a1a2754', '165172435194406497470358', 14); + T('5f', '185', 34); + T('68771d2b5d82g', '3784863040815843', 17); + T('35116201514255324122021325201040', '590116123779691041518146077', 7); + T('7036036165443146', '248356246275686', 8); + T('b5ik3rusjxloun0e7nwk22bd0afic50jnwn', '351480021513874030859064287892370214007546506744437693', 35); + T('4457450hil348', '53898766295660932', 22); + T('hd1oj4rtqlkdf98x4vmxj0h3xx', '6943386874692972087645952788769858758738', 35); + T('3mao2pk4o2', '29204186262374', 27); + T('2n4cnm9w7j2g7s6kw5h5u1tz36knpqdbj', '167360655322446028749706425278701718029623161912047', 36); + T('264026a0ac626cd3b644714478899c', '4233598300815455570056021723238862', 14); + T('1132004131214141022204432310342112034223000012120', '4747410412074476042164830201172785', 5); + T('14c69b7', '6669566', 13); + T('6i8jh5495mljld5imn', '1967338742655672740382887', 24); + T('11011010100100111010010', '7162322', 2); + T('2sacrn05cl5dn81476l6pg3g0jkldgltrtn', '491130187805084132256352213258420044325768153618193', 30); + T('7629eg25216062g0bhccc54f310g475gf2d851h02', '1193072249536776238087255066419340494300241692433118', 18); + T('5110242554012351311222', '113996815429002782', 6); + T('3pih350290ji1ba39npfee1b67nadop', '11222243968353715216614952364432075435971389', 26); + T('g351f93h270h7b7hki', '4691673247887821898764850', 24); + T('6470565', '1732981', 8); + T('5335763184182038172006046108484131152678603', '64393019391265736471397626369582559266481', 9); + T('10000100100110110001000101100111011100111010011011001101110010111100101111001001100001', '40077624010777577544413793', 2); + T('d37d676ed324d97e91', '28833401401805729291779', 18); + T('2111db1644e3db18d1ef1e0d61gdgaee5c6', '1411526454880979898913723256921011458189878', 17); + T('35bacc513809d', '193736987400347', 14); + T('14l0ii8ci49k14i991el2j18997ai', '47432159257624618593218965255177560530', 22); + T('4kfshu6linig20uv100p44ds0emo3npg0a0u', '222236758510407484956912068045177884120458517136025630', 32); + T('3h66nirrqm0i7uf35145j8', '74031708866092624643936753260340', 31); + T('1kcnj2glh16sc9cl5b5db31o61oirjc', '126951344107855183929498621767034725464772792', 29); + T('1', '1', 27); + T('40h0kg91a5ldc', '88364370457256098', 23); + T('2kgb8kg39ajji17bhagd9mc1f578mbk7o', '5312546317931594372611431312678286944856393334', 26); + T('106454014536a137614909484877aa42a8318', '32549768237359567248289108586482266373', 11); + T('102020022121120220010200010122201201000102120101212112102021202121021101', '9373515480802386787336379528216869', 3); + T('113jamevd0ea', '52240096897795498', 33); + T('4dbb076838d50e5b00b29235081314e9ec', '3183265672012968496848943540783648620747', 15); + T('2236k2ihi51', '35074324315654', 21); + T('2044', '460', 6); + T('8i787d5ge3dopd9p48f1', '13622774573376163046429858386', 27); + T('111', '7', 2); + T('1012645216266112554320010312', '67619419391382234277050', 7); + T('3103801', '1656208', 9); + T('25a3g8b0ggja0bc0g', '1491257047471328092816', 20); + T('100100011011111000010110101011000000011101100010001110110111', '656366019324289975', 2); + T('2hy6l5cg1dt4ggq62', '19885494590425537842223226', 36); + T('gm0nqp0hpr4200fnkk9n', '102288227674562835100668366757', 29); + T('t9q0hhsxm67aglisrrvnl', '124812001386691713133980119986343', 34); + T('1757193', '1757193', 10); + T('8b63e2dca39c336b18', '2571294983995377543960', 16); + T('pjai3cvvbrto2t7s7vv5', '1014281637785517689396544143333', 32); + T('2l', '91', 35); + T('27a', '565', 15); + T('164qesjrk8v565v75ffd6wnf909to5h767k', '13879928000835241925467631555592155788584903540287490', 34); + T('9b8d19742d4', '2843752747826', 14); + T('b30f159f05chc4h', '4186384634788528049', 18); + T('2dbq', '102086', 35); + T('12f67hg2a8i64jbfhlhfk5', '17420544768736569554233288737', 22); + T('1100', '12', 2); + T('hari895bivb6v7ur8uhti8b5mnaq0j55to', '2237261580805951883828359760940720036427289454035019', 33); + T('1731mf3', '604246471', 28); + T('377e2roj', '137186257447', 33); + T('161d6be75eb7926a271576e8e6a07e67513bea4c6', '155734848943868815828395124475901609082268815461', 15); + T('200212032120020222230330311120311003232310222230102113323103000322230302220301231111032', '12196082923051903043941661056550160063059733091112270', 4); + T('31bl50i5hfnj2g92205knjn8m26aoni1i4n969', '16193982856683928575461552404913450912093921320287034', 25); + T('66h', '3053', 22); + T('3uqesuhcjwdakwf4g', '7780167401827423762290433', 33); + T('2eop91d5nt5193i92xfin7oiam1f9w3uvc4', '28605886795171609313172129799075303081247927522208376', 34); + T('129828a42a1a983', '479396571777467', 11); + T('qo5fjm47e83j', '149519533662546148', 27); + T('120930d30a1c6cca9c9c85d68a9d', '10109362297846202081439662847219', 14); + T('433434112303022113322421334420042341432322243420342410412010213', '103176224496584812657695985895438714073938183', 5); + T('2aa745d38106c55880246', '231591415358075620700166', 14); + T('10a23548709447811b5468951600', '147092018792966563018352675616', 12); + T('1muuqpq6h', '2989050560877', 34); + T('105h58mn7cho3e6ao1e8n8lnj3cj9k3539f', '341896959260587485518394721610662378353223908365', 25); + T('121a5813986070394bb7144864aa7329b9301ba', '120406122800356790683822388154769546350622', 12); + T('11100010020210011200001011221110201100212001011121020120012011211000002002101100102120012222', '37860101293024691849726322460894592104690511', 3); + T('2uaofdemihchuxnsi22cl3i60goox', '22006538653225073786749125118104638524377073', 34); + T('d329q', '8058230', 28); + T('26686dhpl7e1p9lb1qrlpn3fbmj8e4f96q', '1267711441005450956992875908126805624422712405650', 28); + T('2pjkq', '3291644', 33); + T('5ne50bnhcg8jh63h4b8gak89', '332489330535230011694478313343433', 24); + T('42d', '4173', 32); + T('7ncf8namfjbg1kk97p70j8j524ioddmg5fo6m', '6868243522317166196967869805047542008508489290755130', 26); + T('3c1440de515e09b31f73cdd0da6e2', '19496787444412678571409607909811938', 16); + T('4ml9dlae0ci8kbladibmmd62mi7bk79mack8', '2286569324205503763236162887597617701852950700129', 23); + T('i5g1c1039jc3bfbj3jg6250g15g51h8e398g', '62844649752973800818784289497153800322395867776', 20); + T('7427745', '3975116', 9); + T('54153260107451562218510277555707018420', '54153260107451562218510277555707018420', 10); + T('5aee981853bc993326395be', '428950049262896681474864804', 15); + T('add56j4b9hcai87c357j8ga5i', '576203698240315171997261396983665', 21); + T('25ea2g068b67dh1f1h9bch38f0g8h', '326308845239382288473188087950535697', 18); + T('1a12f68igh7e1ha195db27g5i9247g7a59', '2417780901753180332851584091382890457838743', 19); + T('dqgoc94ej889u5pcvhcnvmhlt5ohscn', '19737221570425505289342027022964526059214139799', 32); + T('2246d7744eb3e897', '942853654698726067', 15); + T('2', '2', 28); + T('2dclih6geh7hib9f1i8mjib5lf8i0ibicmh01ij', '14418043617625234175059607245813179917796405933128627', 23); + T('4w5q', '210901', 35); + T('112112113201334001133324303214103244132203441240131112102002404130442240443', '6830926531027276927950105054067971781356898029258873', 5); + T('156d6c3431108a479a72d969727', '877359658879832942505464566647', 14); + T('206143367232576283626041763949358536', '206143367232576283626041763949358536', 10); + T('3ntm', '145508', 34); + T('61216176216205012773031', '454507717401133184537', 8); + T('de94dkh6425m06qhqe2attru6bceaq', '599730557272586153217330707522770691809491290', 32); + T('8k77renk7g72pf3j5o45qorep14aj6b', '226691682861596196794798492778633822748918883', 28); + T('2jhf51dde7d0i38cfc9bh0c64c060i3', '3215219793828568936375294331195174448363', 20); + T('22h8460gcde', '13203582611224', 19); + T('91464b7740a664b76346b166b0b6', '1252108265251775177482532735178', 12); + T('lak3bifhtb6', '12610316079035436', 30); + T('1470998178', '7132969964', 12); + T('16hi0mjk1lpe1j0hd37c', '963405816410883410946327686', 26); + T('913b33b1474ba887bb9810409b9', '104295075607044617523054107037', 12); + T('161100013125365301651212042603023364211204566300621264341445', '136474139311752213668130631029378317696922594692639', 7); + T('7tc1le9kf', '6778801564928', 31); + T('8i837bdb2cc5951', '7167109876485719255', 19); + T('168a3egd44528f5861bfa0d474', '7979073806747005263453716304209', 17); + T('23bd94833', '3357993565', 14); + T('jfhcvjdllusom', '32474670588429458224', 33); + T('t5qb0g', '709461916', 30); + T('d39570c80caa28598ea432085259', '4291428326751199011126676862554713', 16); + T('807a81976166987b1', '17509808255778732167', 14); + T('48631823380828816', '9204637946118855', 9); + T('1223466603257252468314540667812301184', '28199983454052965359351624334678314', 9); + T('380h5kb7e3hurkfa4', '2370411015159854211757261', 31); + T('1440141506864757812308430315687726770760773493695949582', '1440141506864757812308430315687726770760773493695949582', 10); + T('1rls0b2jrpx9', '127252119185280215', 34); + T('7856f7b676ee2', '4363430111213756', 17); + T('2sq3johrljsw10qzoq8zdjf7u8', '2261502733792759669833591306474349874288', 36); + T('3002513066606060620347136440362562046653642', '255651532540391785253392875614499461026', 8); + T('3k9bk96jfj', '7002080842657', 23); + T('2ra', '3405', 35); + T('8oe8d7', '127827592', 27); + T('155504503336160624601362', '50117236696639403363', 7); + T('1201221010100002', '24940793', 3); + T('4313403103333003042400241154454214031542', '10125479020346114991096697847126', 6); + T('1ec3298g37f1a5di954cd42527cdh10246', '2798816910510266638276958183897932081056861', 19); + T('1en6ggipmk2fpmgndjp39q6md2dg', '1810736445109522104704252771239936966748', 28); + T('8', '8', 23); + T('37634546500bb245b039a5b1735089983763', '214232450284525132996750864907535178875', 12); + T('100001010110000111111010000011000100111100000100011111011011010010110110010010100101001100001101', '41279952929416973510169481997', 2); + T('122423221304033404101141043320442014321432131110421342', '16834509131210666326342619688068842097', 5); + T('1020131', '4637', 4); + T('klx3aeefvxnyodkn34o2d', '275488914248612801544646762918357', 36); + T('112211002222011102200100100', '4185291549411', 3); + T('4to0ahwqd18wpl114oxxmbkoq7', '1937666241171363939533759101938045719692', 35); + T('1135', '418', 7); + T('249', '249', 10); + T('121312302423213040021142110333333331102401', '66685945228939713462829550351', 5); + T('1625356215252', '26494122069', 7); + T('anwdkfr2m3dg48rdwbw0modm', '904249144970472511877809144186597204', 33); + T('113ki80ilh', '1271990411687', 22); + T('1530304232122121415550005004031544233425532424030304403', '2010294933256617576397318672085330157825939', 6); + T('104072459a38346d3ee7dad37496a609076921c', '500243084593242089330407721774970862086353352', 15); + T('18gbeee10bd80613e1b25ba0989dda3af21429', '5138521665544916194033529092059378256571453963', 17); + T('10101010101111010010000111011111110100001010110000111101100', '384469593819013612', 2); + T('b8a63049983a0654ba6778a469072297596926489102', '298161575681388874506973967749374933332233147730', 12); + T('1d54a95161a44ae4d216da350d20954f13992a85', '167448744619550277927636746527062265701749828229', 16); + T('1b8i6bff3538', '322005234426068', 20); + T('7gf7d819f8cc8f51bd98b226a8d4067ccc0', '5470961222003556575284943473483752741364570', 17); + T('2003040245545114430003204351', '2061732724911322435435', 6); + T('206740', '123075', 9); + T('b71g35500e8185fcfcf9gb3ded4339c567320dd', '652632768758471633033004484042049552510007932968', 17); + T('8d4dae81737a49469edbf0ag44119c95fef5c2fd715', '41919359081724970340005698065286668228554601347266486', 17); + T('5264349b37283231740', '138729190626813625824', 12); + T('456', '302', 8); + T('a1dafd83a744eaf49gfbf592bg05ffcg9b166', '1998673178276656072855040019793637333390949546', 17); + T('17004753588212207815125616470722317780142872376105688', '74245187234283454851664056978383868771198848737133', 9); + T('2211211011212001222020111010111010120012011220212111112010010110110122010102120001201001', '919746263988110720330734195365089255014915', 3); + T('2ai04fj3i27690f5c81j35b7c2hcgcf4d5bf', '8744656450668874412129805378468279112496746235', 20); + T('101100000001000100101100001000111011100010100111001101110011001101100111001001001011010010110010111010011111110100110100110101100001001101110100011100000100011', '502582666714640400473511879468920658557790730275', 2); + T('458b14g5ff2ki11ak43o64bl0mie6d', '146185391432846819540888318943706307712038', 25); + T('8453nb9ien1n12689c3a7i42aieg2g', '86825542084489172944843999109269881698368', 24); + T('101221012', '72262', 4); + T('17065041017173527170644622577111123272557633404173157515', '88295987850015910722625103099562923405439709011789', 8); + T('1010134331130134001334443233314112431111111043141002214131242344311202', '1766678229765066235739620315143368730448384369552', 5); + T('l8g1mja9aeehcme5m46109', '843832827267550590415898815954', 23); + T('16d687ff52f', '13653016922055', 20); + T('2jad9ic7hh8gj96ci73eh9g0bjbd2jb6524', '511390944414014194229800955887738666430610044', 20); + T('6614048801073688628406604411830070546726', '109782278237026239880293845889313820712', 9); + T('1jcej88b218fbd7412', '58088627120868089575496', 21); + T('17nkctjba7jdw43auam4', '450272045225207253826494727996', 36); + T('2000325253334254251300', '43932904281041364', 6); + T('acaqvr4', '13397132632', 33); + T('32200130031020032023121203230330001013022030331131222333123012201210033201313132212000010', '347370908365053402115400890112019448640793233522843652', 4); + T('2t7e5vi3n0b2q59gwn0mf1h25j5jgx17', '855292840092541663219061040782700655334518789309', 34); + T('223c6bgi7i80b024g8b3f7152d53a7jh882cd', '144932207807299978358573285607434907402231745053', 20); + T('21bk2h3iq62gon0deskjk6rb', '8842310846155518916223348697373797', 29); + T('43812c330990036289588b377110b0001c3a', '4162225291349057804333124544154752098422', 13); + T('kd', '673', 33); + T('153111155020052013155231500442433215421053021', '33301389716284423546912957799031589', 6); + T('1fk00c2842k0', '1610232270940190', 23); + T('15cd3', '734191', 28); + T('1210002122002102222011201021112122110012122122012121012110021110001020210220022010111020', '575848262380687269510769585003227729853005', 3); + T('23aa3133417', '61292676947', 11); + T('q3kt6q79an40st27dc3w5r', '3782702939054610713945575733531133', 34); + T('89gpanae', '112571410966', 28); + T('3odl2odo173g9oioe961n5m18a1fpgegif76d0', '89103898368780329843843213967906565582206158676623346', 26); + T('57l5tc9s9vp02t2l19j3j77fw2iw5hq0', '620246157108817541536543733311579693819651519455', 33); + T('1fl41tuf27cii', '4885706799284972973', 35); + T('3h62g4eh760f73c8h', '481320829720357766009', 18); + T('1000101011', '555', 2); + T('q57bwbthwkspaj2ucs6jlwcvq07k4', '86297743847844103494926974103414975911710346', 33); + T('21ce07f1b511gg0f0f57599c95713b', '1013676859489927884538566004602431047', 17); + T('3oskac9r2i9tf65', '2879424166264572649417', 31); + T('121101240224333112303121202113413123400342034344023', '128652690811737711862977258490543638', 5); + T('1422424401304142', '58085572422', 5); + T('6085281a33b1389aa68', '161299549199109190256', 12); + T('c', '12', 27); + T('54523528783185940853887445327908196165978268324', '54523528783185940853887445327908196165978268324', 10); + T('111110100201102211220100110220011100210121101110202212020100011201021202110', '303182193417511432321441108708547007', 3); + T('1536gd20h0fhhg5d55436c0ha63e29c60ahg', '726145947704576858453585758674557404546198173', 19); + T('22022010221000100202211222102202021002220222001201001111111011202212011122101022220212', '99392017799768645924361603871458701456597', 3); + T('53adce4b028fgcd7hf548e', '1193207787087913909236098534', 18); + T('a4', '144', 14); + T('ho2er', '14420247', 30); + T('e3ffcc64277a78a8256d7e1d7c05eaa9bf', '77584111689906087598180624752236124875199', 16); + T('1g7n7lo5io37ce9mp2b', '328524151751122058961202483', 29); + T('2030102214012423403324030304243103001403324042420010414232', '14722655319890169268088222422460420013692', 5); + T('613563354021145663036162612061303', '6871051676078235862437063776', 7); + T('gjhlfm5lknn95bkn84b1con012o8jd6g7', '31867442134261188923108513411199647167070822199', 26); + T('llhf1m42ch6mg6kc6e45ppc9', '18191151044159190019737039426392154', 27); + T('5e8dipbabapt0nodg85kmnoms0o2', '41758231678994811795607253224155508776722', 30); + T('621anm95ho73m0', '15082986714813289376', 26); + T('1e702hldk8l734b5f12e8dle', '33866826604275005079924066683978', 23); + T('22f4736', '36652854', 16); + T('15448784483296', '15448784483296', 10); + T('1jnoq4673ll4', '20540068473952319', 29); + T('4421014224404214202301000', '291383814569181375', 5); + T('1332402323133230', '53179114815', 5); + T('22455201354420531414254341553042333144110314033330011503431000114', '156559057575824331523615397895706894115565285344494', 6); + T('b07b1426d', '16292352313', 14); + T('16caa4d1d594aab6b98ab0b1b14264a9', '506098807791173960954389695213967701', 14); + T('220220321220320011330201211001230333102010121303332222311323021110121213033021', '58002021669943215882437485089516366950604108745', 4); + T('460175', '460175', 10); + T('rm92t4nmi39j', '704301162993180277', 31); + T('2c35e4d05c0', '3038123984320', 16); + T('3ahdutj9mbmtr086foui53gu0hx', '21785718654104569515056333343275862936563', 34); + T('14087634143410782327333780148640301877', '295332466513866374270920611186627388', 9); + T('43b171h0e87eg945ic7563b5cg64fd', '50806559075581748348880564861624437804', 19); + T('16ckpwbk9b3i275h5d8338a058ck1alg', '141489416893679296818740151228347362930888733302', 33); + T('k78iostc2pua', '1950965634957774935', 35); + T('4aa54j21df8hkcgkgp20mh9d931b', '5173226992447654665422544156091087390231', 28); + T('4eb942t', '8105266499', 35); + T('101011100101101001010111111110010111011010010100010100110101000001001101111111111111010111000110111010001010101100101101111001110111001101000010101110001010111011010', '31852131995136650015824448712052459356282756208090', 2); + T('171860g48cahf92064', '7521304142338550340336', 19); + T('1024', '361', 7); + T('e', '14', 32); + T('f', '15', 31); + T('cji2g2ynilowjpau9sxl2525vz9v7iy', '612959941037504203320865072390685049444312906970', 36); + T('6j92bc252e1pa6n5foeo4dphrr7', '282842955335866464220455210371442191467', 28); + T('754721358689534984612281', '754721358689534984612281', 10); + T('106nh39bc8a1dbd9efibf', '4068759645359915205371605911', 24); + T('8dfg4ha5g8e79i4k7e0', '5460155756354332817482965', 21); + T('4312506613443045610152261106065301405562361602421616', '56109700415530612765613834518456450896421741', 7); + T('42230004031210204341024234214114343400044000', '5120515292918450620552927346750', 5); + T('11010011110000101001111110011100100101011000110001000000110001110011011010110001010101010110100001010110111011010001100100001110001101111011', '1152932454441681553686105050801467624055675', 2); + T('gc35a15gh0e6hbfa344ci6h60d1756d3i', '7133162389260283421788216763773968727253278', 20); + T('ped56s09o4os2e', '261629936007586831748', 29); + T('b00', '5819', 23); + T('204a8kjg27l7kgelna', '1168264197453743365857460', 25); + T('1284b58363a24248816a', '391391876041895186146', 12); + T('1a6glmf9i6ld6', '31721821241462604', 23); + T('1100000001001001000111010001111010010111001011100111101110000101111110001011111', '454021537654527488097375', 2); + T('ktuv02o8h0dh8memwvf', '129541724909808086439236801675', 35); + T('3400040104213424322133232220302111041324', '6914515487235712203520018339', 5); + T('6e5jf09', '429758009', 20); + T('dppb2e9nnjn96jfbd293bc7d', '4903303064412360643152733423833467', 26); + T('2bdhki1c4cdjg8d92hh48e5930945b95b3g9', '48428996090391084590565126593313973435696979409', 21); + T('5nsrllolb0ncn3', '59794172529212348462', 29); + T('4j47', '58818', 23); + T('1101001101000111001011011000010111000111110010011011101101011101011101010011001100100111000010011100111001101111100010011001011111111100001110010001001', '2355828849861155012884780223410671381544574089', 2); + T('5h18fkuqeobprbtgdphncwcnb9nqi14p74e', '23502944357360874074985050551823304242402482605470882', 33); + T('430e68bd9ad4952', '301994663360678226', 16); + T('83mybdyfk', '18250265709570', 35); + T('345632h7po7bfnl419273c3h', '1107369755793636209889847907168631', 26); + T('155hmdm10qao8rfp5f29fnn06691nm24rfclp5', '415761194832301392698634884108004928012396592720849681', 28); + T('75376b8a021b20131b48b637182292202a', '3052560053832658763100020747136367522', 12); + T('252bf74645b4k1eb2f1cidb6k8gac4jg', '218675971817632327166089471412035111563445', 21); + T('1041630262513110000365330', '208292689407845958902', 7); + T('8ipcnej3bm5e1lj03k3d76d9kkp273', '944588256140958917841550791402929957368041', 26); + T('21122220112200101011011220112111022022210110201011001002112100120100211222120001220', '3398109006511352612217149313338598854505', 3); + T('11221211111111102230023113113121303102202013003202300031132232223', '480626689266491150511095172309208918955', 4); + T('3baaa8682ijg9hg6jiiegkk2e77', '84652263531904780964938488704665624', 21); + T('7027910070685774862975771344292902196641813764924732', '7027910070685774862975771344292902196641813764924732', 10); + T('14nmi4940e3cdr', '7628443576261703047', 28); + T('29714113449495030180067704', '29714113449495030180067704', 10); + T('16027026131232476667231251', '66325667775824613159593', 8); + T('0', '0', 22); + T('166452ac011c2116a421ac5bc3c023b6bc4990', '246444225807161486770221362501829463826523', 13); + T('10312410044054404422165523342606411123616622336034061556043', '11043975746401930269143716067439560851383524557870', 7); + T('1iea4l97c0i553k3b64e9k9jhb9bkj7k5566', '178448019454450986199237722696936967229476033686', 22); + T('1478139520', '1478139520', 10); + T('1d854cf1f48c4529d864b686f2d', '37421939842938093643010520149805', 16); + T('1a7129b0cb220c0c496b03233', '983122173959444998093229449', 13); + T('61637976999142621145200538', '665607201960195049612272036', 11); + T('b437bb812dc0198d5a011a2aa866151bc83add0d20b', '15509757582610193893018549990835987906527184363915', 14); + T('m23o33o2ml072aamjic75jgg68aa016544an4o', '116924132032633647730209472607114957774639320109155124', 25); + T('62c4hnh0i1hgaa6ki4cccb3g0f9pr01t', '103732044580983310247443658362576131853311657763', 31); + T('2mkv65', '105113750', 33); + T('222678eca86eddc939b60848b7b8316828608e2', '1053714680554554231365359188076002075988224512', 15); + T('2g7db1dd4f496b8503cccdc3089bd', '84151059017237335236726835977283846', 17); + T('11356664335110632222416260423353223124562262661224650210151051611', '1490024421959891167700411423106906579208279293688323560', 7); + T('8lfgf', '11533971', 34); + T('8gf0h', '2051693', 22); + T('21h9mlbfh1cfaml7ahfnn513925k46j26', '304178596755743063799400356490104291373592310', 24); + T('222020120014433', '15156798118', 5); + T('a737gcfagg0ee030af20537e209h57d13f', '2760612480391619308046997847062410963259009', 18); + T('bf475f0e5ed9ggg433b1a7', '822034344011337163185436487', 17); + T('11010122002222211221222010200112111201222220111011221010122022000121000111022210200012', '49501356081468652681886134573393140563711', 3); + T('0', '0', 22); + T('1j221dh95aj9ed83b5e4kaf22ej9', '956853653611900643236190963151594750', 21); + T('48d1', '40846', 21); + T('266359b8b969632b6ac86695403a8be8c3a2c2', '79536364099052136307674191123580292528001882', 15); + T('7bc4edj25jg8fb3dhmb63in40f', '662536092600660719641563026403877515', 25); + T('2123b9378a3e', '17962722130559', 15); + T('1vb1rg21fp9tf', '6402729056965380805', 35); + T('90507i0f54gk4b2g0gc108520j8m3m8k9', '338836712441591160747477280351050302149052875', 23); + T('23h48496g', '447052385744', 26); + T('3322002', '16002', 4); + T('2ej6jk0i', '84396331026', 32); + T('35gkbg9', '281020980', 21); + T('477ba0g4qq4himbr2delgbibcpjnr', '141181564767286604205256660712659301710991', 28); + T('16625630637244103026266171376764352575040', '2457838121719672737744590760418408992', 8); + T('12772', '8651', 9); + T('3334e2ff48e42igd0a18e49fee8i7g1cdf9d2f', '652404784229042811789503804111388997324151029358', 19); + T('390312a922213a8a64714a01061249a60a7a57903894', '2301485456077975760943477454917012552590331798', 11); + T('4kfc692l3', '534994898043', 24); + T('f6ei0o93q62gtjc3o9eefdad31c6aa3p', '259600317350324790376664305311377927792105345844', 31); + T('77jeli', '47252368', 23); + T('1818a46', '3086518', 11); + T('jlul2c5fu75ctck2', '462484928590385125215962', 31); + T('2kdbs53vman', '2970189100472663', 32); + T('18ba40257c006787249025dc132901035373', '21233179223979726392280273913614195304377', 14); + T('12tq8', '890888', 30); + T('mcgnpml3i3', '171328946260377', 27); + T('5su0gr41uohmu73i9c', '133822801190393847297321403', 31); + T('10042553121242502132252422', '29022304271575587422', 6); + T('68e3f619263', '13143928745961', 17); + T('cdteiu0u3iffuohsbsiqupa1uscjpcm7p', '18173795688393997715594261305551967041493744900345', 32); + T('10ee5sidfeljo8clrcp6nk4d0j0mkam32k48j', '45055395262449121673024204762282471724687471901724826', 29); + T('1561736223610', '118371198856', 8); + T('4hion', '7535831', 36); + T('3bdh6671139d1288bdb9d8e06b7bc9bg', '2993926724680335312809084195839710840298', 18); + T('49b4a2104b545b2439baa986099927bbb251419703', '851737504589717022185417748267818774777893299', 12); + T('3f2ac50eehakjh4a05cdjlh5b67m9fa', '259979250004821542868763765100327385014666', 23); + T('32021113132120213020101103112220220223032312122', '17512340678477455793664617882', 4); + T('34iihadc', '2916834773', 19); + T('tgcaenh22', '41483651434205', 33); + T('h8', '484', 28); + T('1345013', '179399', 7); + T('1hfi5', '302365', 20); + T('1837046a2692d423b', '3461408270213809773', 14); + T('2423b8895916', '19692665799546', 15); + T('37l2grtlcaek6h1i3407', '37852085679981001127651964607', 30); + T('5306200451262252', '25859506488363', 7); + T('cijg0', '2071920', 20); + T('3223131302032121211300021332322023033313232022211002002202101001320002202320221112211303', '88098060436515295647388763871409380266783398231894387', 4); + T('7mgg6lii29f52l7f82d22kl25no6m4elbhf', '2678874370559434952680139408552413555034712835440', 25); + T('blrmrcir7mk12fbckpetiwg', '29790101256737754545389640825091289', 33); + T('73m028wm4wdf0', '33643976305588152300', 36); + T('46h49d5e', '5559117314', 20); + T('2h94b5961k6k33f4j62b3d2', '347276697125022380759656573571', 21); + T('iir6o954dn6d', '472825548883025356', 31); + T('15056662412721204036161014', '61822867030969079620108', 8); + T('e8g6s2ier6', '501934442756966', 32); + T('hmrire23hk12dot2906e1ttgf6hkj3npdb', '98751340425225592010077526066776177092708434773901', 30); + T('18gflnnl7gcreqms0u3', '4606469246867644935544977535', 34); + T('14232313010113323034040302131444113021324402231301144403120243324', '1034471412400084913926462730158583111529852964', 5); + T('339188b1b51529b83204', '1058597104025846215012', 12); + T('5b6igfike9', '4399870445952', 21); + T('68476024a7', '15953876374', 11); + T('1llad2', '18303452', 25); + T('10111111022112002220002220200220', '720566895785271', 3); + T('82082726527757034455488080404806838654330250467537202641', '250570007137020818998373455622683381347427919884630129', 9); + T('lj1lc7m', '4165081534', 24); + T('4dg8p9ia1160g5ppg9t', '1724578545171269121406439699', 30); + T('kimpiadg8qpdf3amf65h61n52h52', '9178107846544020627692598732858329684582', 27); + T('12443301242243', '19142651475', 6); + T('506s2b6', '2979045190', 29); + T('21211101111122222000011002210222210011101210020200102110210210111210222202002210', '128580978328817621464532250583984291620', 3); + T('349e7g5d20b4e0a765721dacbbd737cgfgfee', '646586583890294574021104159470580456873235673', 17); + T('79c', '2710', 19); + T('1231300233324230142304044004233200', '178445501100086472727300', 5); + T('5db3324efd09a682cd', '1728459668785308533453', 16); + T('62bbe37605981730a0651b', '30853873199744823817849526', 15); + T('2db62d70d086egffd30a5e464hjklfl750', '521541774356940252445618700157719013899814514', 22); + T('m96', '22822', 32); + T('187708h7k8', '1110072620903', 21); + T('17ce9ldjd8934gc2b9a3chc1d744i703jkd935', '62826943015042400290867266302428296777642741341475', 22); + T('11443312400322012223000', '3332757738398500', 5); + T('1hqjh7ttioeg3', '848328945650941083', 30); + T('2be94375a', '66205466910', 20); + T('221330320311200333302212213320111201', '3095465187976224408929', 4); + T('1059486961', '1059486961', 10); + T('1f74g8g613iggbic54d5c1666b3354853ci55', '19620313041727143313210925539501308523593302666', 19); + T('2b80691b78400b3b875986849c456785a6', '16656663317340963020300085481646403927', 13); + T('105503321454253531533345552515052013033050251424524110022331215545011', '95428095959296366124948006431032808833093168473760031', 6); + T('63c22g38f64bd23576d563c98a', '35884274494603924587117723372126', 17); + T('100000443142103030421444', '11924694146732749', 5); + T('ggb57935h39jrjohipp0rmqdi', '894389162868447514060089400627116702', 28); + T('2q2dn6b09n80d9k2g93ap6npnea', '48717964930141503475483909108219387417', 27); + T('43614541525400501036656560325626334530352123112304543351', '137711359489426689304557831808873617418940236797', 7); + T('13323bh1bebi114agffj24c1h711bhdcif0e60dd3', '89008124624321806307999787004805853614563072139070876', 21); + T('1', '1', 4); + T('7fb2ajiw2hgrnoeb0vhsa', '99256366762497264660825409804234', 36); + T('149a672ab00124427a47b2636aba00a80b724a159b66', '35605955455380818029558322811688734791059784766', 12); + T('3ad', '2645', 28); + T('2222', '312', 5); + T('102124304003114232', '833650441817', 5); + T('7w092wmu58es1prcdq0498nb6q', '1537695760778926711856163192898098505322', 34); + T('27f', '2025', 30); + T('2fib6i3', '308401327', 22); + T('5241360402442352621410122040100421346264560451615162662345006', '2729029317009007107739107745937257680991457741019081', 7); + T('2c1a7b4270fgc467ed689a6g', '54141458195409785751855946358', 17); + T('1010101011001011000110110010001011101011111101100', '375578620712940', 2); + T('5', '5', 22); + T('790ul96r', '309988654893', 33); + T('1022653165254525421460266331000356', '8113458137413116173799745960', 7); + T('3114306040302713076119191937545', '3114306040302713076119191937545', 10); + T('1633654452405530', '9162556072418', 7); + T('gabapnjpf1tf80bs2b7qd38981gr', '710991831783491714221384954071153594598939', 32); + T('2', '2', 25); + T('18c5', '23301', 26); + T('1213330331231123', '1744034651', 4); + T('1b60d2a23a53bc5a', '1972808230993378394', 16); + T('4pavtk4kwc2g0r3sz', '37428329950762094839639043', 36); + T('g1bbecabg532781dd572bcc45f85a1a835f17a', '54127394101584857904914717532946479324272494182', 17); + T('101021210012022200121', '3985912249', 3); + T('13iqmcb60d3l6qn9af41o3jldo5cqoqelb6kf', '14166929345174532589732691260929644735007809841979615', 28); + T('2518135184834132752870818455702810', '79701961075331499851002499212929', 9); + T('210110010012000122202102122011011122201012201120000202211201012021100021112200020120121020112', '187204475327792704723082910911246163138644555', 3); + T('ha1gnkhng', '3630888091418', 26); + T('12g655b423e00675ag9g7b6b28hhfbf4b22e3h1bfch', '61163427224627665999001017285634740702868701629011309', 18); + T('3b', '50', 13); + T('18', '22', 14); + T('ab15c03638359ad93da63a0ac', '34690700872343342065779519544', 14); + T('1g085f52a1g721f56949c1679ag376ec102e40', '6532133482571135978509596041353302889104298965', 17); + T('1t6bar8271g65th5hr89nk3mqrlq6i4tff', '10972219189140165833792184350100087874831084514565', 30); + T('64y', '7954', 36); + T('101110201221010200', '150258663', 3); + T('c', '12', 13); + T('iaec11ceic9320cbb8h8', '245219574798540725794780433', 21); + T('c4gf859id03c5g676a13e5dbhe', '1140847745113516444764873661865817', 19); + T('1beik1nyofl440ag7gkcjl6hc', '15143452013784185315179545005102573332', 35); + T('76689e9e8754', '64261061415529', 15); + T('236oh8q7m88m1vmbwbwtl', '4919241811255159457064943728087', 33); + T('212303367410485756685340683385777821', '212303367410485756685340683385777821', 10); + T('ia8d2l548mr69jp', '3344051649396076528445', 28); + T('5b46jc6n0sxni8xvpercfiqt', '892299334153828813360735264583249649', 34); + T('6wjkpdrd1l1eq6ev75lw2dqt7k', '2769821915598289015754184942663874264915', 35); + T('2dk43cneaa38bde9il6lk6', '248598248682430883472103621926', 24); + T('2dt2ep3auv4', '4969992251611066', 34); + T('h5eg38u5ob9g1lwao', '33951757895785755222148470', 33); + T('c64b2aaa24b8c1cbc1a6a116a687a520893c9010b801b47', '21775469720607548784649620095270581236726101794248269', 13); + T('5fh1274cjdf3h55020a74c5', '705854882662235548477311540560', 21); + T('lb69k81d', '73171113401', 23); + T('epmjfo2h3g2g2e36b6c8n34kpe29gp6dp79lg1', '338817707971967615907480318364523251504671071025089101', 26); + T('240440323120014132430403102121201024012100040001003200142014230300142', '961763898207535652839231078700423730480243212547', 5); + T('m2jhe8i', '6828900850', 26); + T('11101111110110011011001010101101010000001100111010010010100101', '4320760375549338789', 2); + T('1045205104430132440520024411321142422540353410133210445340142121120', '2590167532599341334614211172458659924849693395596552', 6); + T('g36jd1oe92jn86aai3jkklcoeq3obp92e4p4', '253854072983617271692860022272463002824013138562756141', 31); + T('8dkooqd4zn', '850775103673475', 36); + T('15120343551355124445525435232555231033521151050423243335402', '2539878326431426452775761994842902860886262746', 6); + T('298lgil5k5kcgili6lg3kihb23gc203l7cb63c', '113456079349387858220556248154469725980796810803534', 22); + T('1lei632qmoefkm31p6imh065fa7j', '797240105544041247670463126344319732926', 27); + T('5j5lid3cq1t97vkphbce1pdsc0ad50', '249736734398750751548236560945594271892059296', 32); + T('3477263035715376447112210', '17112580757759444423816', 8); + T('156448734843a1a32b376aa2654087b6', '4161327287906171047830726268271226', 12); + T('34433515140021245052211514423', '23302817098029688581807', 6); + T('1j', '51', 32); + T('51471b55a0724a95b6a5c7338993303081ac', '4964947861806473401365128050047846101681', 13); + T('c24h0hghhe534338cfd8135c', '901568719507789440497671591386', 18); + T('bir31dee2n4q3kiqncidbhqksllce8', '206194968967125424489569046312454402749360697', 31); + T('120022100000120120111100022111120222122011001200120022202222022101021200110122211222', '6788270345480080438329192354621823378457', 3); + T('174fa72d10hf8f8h2e3g99cag8h', '608727676666149236358796734219473', 18); + T('a1h8432ih885f9', '424773876852211679', 19); + T('nojm2d4ns71v37ugm0qf06gbcmpnw', '78337300498913437512813545723950687423977167', 33); + T('161037100117541', '7769478438753', 8); + T('3', '3', 9); + T('1b7b2cc91769682ad42af60ef67c77c99ac81d227197', '10281919698706053870205728976619722313496732052386199', 16); + T('afh25f80e4ph82gp1fr67hmrgpn7i3nq89h', '168629703795331360132747588030374114678927773055501', 28); + T('3323341402104', '905809654', 5); + T('1wd9i2gb5x51qwn0i3uf1s1ve27wjpvj', '584082364118340230826335224432353183683007501197', 34); + T('32577073350883554', '6105022583908099', 9); + T('a9bee35057d1i71ffe8a0ja643h54bhfa58ii', '720134659347610141900482413183484695157617643578', 20); + T('121210122100221002202202210000201121202001210111011200111002110210', '19230462838832172623888006401599', 3); + T('2hfgf7f293d9bacc79ef', '2120195472437110473202983', 18); + T('5ihjghqni4g96j554pe5fc5okg71de', '14486130945303122393368850677450427863143234', 29); + T('1', '1', 5); + T('8iw9sg6afo8s0k8uf01e8vsbdiagnfiaqh', '2958988238033921612788754062346621852633413272634125', 34); + T('4beubn95hjpt4r9e0ci7usc7', '366449081183766477979316652536458765', 33); + T('d48a2d77b1b60940c800003621010101a61763d28549b', '3584857812230806937337786075261982505145054504278321', 14); + T('0', '0', 12); + T('g7a3', '112464', 19); + T('10111111200110221021121120', '988574822682', 3); + T('1r4y316lix1qw2umka60k5rhzz9lww', '2380985708564990921650705038323328729070310960', 36); + T('10110512330112515662324231', '1372761603510037086403', 7); + T('16a9c4841a0c959526650301a7b5caa2a65597', '3783858424048742348429335229654291816630417', 14); + T('fgrg85nfo4947li3dqj', '33409143920842372353926257681', 33); + T('78a9c9d91cb45ec86599f1b402f6635265b69a0317', '176349517282896190364726424897935661923732528169751', 16); + T('1408fdc9f191a9be2efbc3846be66cd47ea391b', '70707899311965473818711332151924460200296539144', 17); + T('11', '6', 5); + T('32183b04e5e72ed8c76582a5e', '52862848155929840288075992214', 15); + T('1140302201413440103242033313203', '1271212993476215135428', 5); + T('30xh2uypo0ito62vbqbntsiq', '987701737110790082032413714393048956', 35); + T('1c6b943a8603ab486e082d6a4a6762', '23395026406105011370375736268800042', 15); + T('12ff86h', '790162397', 30); + T('1s7lqds33eengipiipxqqa', '858343047434452825500670693844626', 36); + T('4f6e67b1114hcac24d7i79c995', '447528954470338933744428432073566', 19); + T('5636664', '698688', 7); + T('mafk7830dc', '121664093929910', 26); + T('768gsjk4gsm7pl1ot75grodpfj0t', '133120656483903774436059010594997642935901', 31); + T('4313442301430144333034333224310301432040323222210030044222211411421331344304', '123662770604980307050783935056941063117742366185028079', 5); + T('f977ljj', '1748806177', 22); + T('eg38ke7fk1', '79381095454493', 26); + T('2i7p4t8fpceetf4dnlq', '1010667644618526459089112356', 30); + T('12c4g4', '2171092', 18); + T('2', '2', 31); + T('gn2r2eopa9ssql', '267366244724756072001', 30); + T('b28ana08k94f596m0h9hi7n', '25697606312564649510807036677951', 24); + T('16ps4ug6m2ba2r', '29801816306000563900', 31); + T('5926b', '284051', 15); + T('51263426046122444503052060226', '2393161862759116724273865', 7); + T('8247054749346666208174a1', '7360587857824675562554214', 11); + T('ka4jnb62g8cmlf', '17902323632911891335', 24); + T('4de9276993hgb8a6echc3ef224b38cg5dh', '1265428646069784687854510709176092917599183', 18); + T('42gd1k2jj', '322506363396', 23); + T('1hn5kpf05fb4o0a6hr301', '143595453719112771974614666609', 28); + T('4e603fcjm32086ng194n', '7107200633977689504284025944', 27); + T('qfjhf7t644i8rcprlhja28br', '249684275564201049491161041832861557', 30); + T('10o3mixxqcq', '2812826818986546', 35); + T('1202111021110211021102202120202012101001201111021200210001112201202200110221121122101', '21059093384477202862416737568527737310314', 3); + T('2ji33jfcje7ci63a7j74658cf4eic4', '160814309330846460265100741771056759444', 20); + T('1kjf2ige0j', '2353894887979', 22); + T('47534897688907458', '215057061551555682', 11); + T('4175', '7145', 12); + T('52', '57', 11); + T('2061405345251056213423263560600313464103414350261551220366453223', '370646419200904248631530204999374005994255272808697624', 7); + T('1a7fhdtcdpl', '3563463934771321', 35); + T('33dj', '111526', 33); + T('39894', '79024', 12); + T('7e1d1ed059a1e146138', '11736928073492751232403', 15); + T('159197a68aa2525674259a8995014b69b43267906', '21755721404512460507158581208182125061497430', 12); + T('lgfi9r5hunkcmir8tclqh6tb1pqf33q', '11856112170670785902649247238864725820665462048', 31); + T('221a2ac80c43003a864a93561a33', '2581136407529861197214154837507', 13); + T('15k97k6h2k5k8ejkh4jf35fh6c014ed', '10587821536977531443888357135531651418988564', 27); + T('1rcd8', '1739821', 31); + T('3c2aqh', '152433373', 34); + T('13dp547hbmkbq39', '123667923481065503379', 27); + T('77425744122551307334650320055405680842741484675143', '448423853223269792174799411068423443678773482313', 9); + T('4sockf2l157f8hb17ddr2hn9', '21560188551982844171137848011861038', 29); + T('3juflq4b8kdr8f21p00c0t357l2t5j8bs', '1928545001966571247157174149144121166575881998307', 31); + T('ghp116oj9ld85dm24m3fhp', '19072941993100916686445846260174', 27); + T('2hi0977bg554', '998426859590521', 21); + T('dmq1t205zcsi', '1794163292538515586', 36); + T('kjck7akab8f6lg35g3i7h7g', '7132544457923014075211392976822', 22); + T('2d3ceebhei36e', '5963519500590381', 19); + T('a4q63wkuhu5ew942ns1ep76i4', '28222639869071829322012344499963435954', 33); + T('6o0jiguur7dnbl1usfp1d87u6fdu0ltisl4', '28664748020226432037191687849395173254239302974652396', 33); + T('t0l2snlanhd02t33k0nj9c0sc88tis1', '5975669526488595725702933777554273527309680041', 30); + T('2fmjlnb9ol7', '368530312010049', 26); + T('qhhvd3umkjbqw9tv7', '52479183082258753819239127', 33); + T('2500403606135212325430122365142624450522464122104', '99685783804159217515113789269706714123131', 7); + T('67qam7pealp2tbtr7c7', '2426267332304775510672525667', 30); + T('32556410147661251456104752223004', '33072622383942794561666491908', 8); + T('1c4ba716175b6355c7a', '219526637401960896784', 13); + T('5f1biddjbgdb988d7i73dgg0j9iid3411', '2471320652055149744926174715249139131705621', 20); + T('1388d574ca446bab251b87412c45352', '30454263653289721532545707133349100', 14); + T('7gj62q9ggf07fng3jebko3heolfp8hhd', '5526886878277522528388980899464600768775115001', 28); + T('357609f72f993e', '32878913632422200', 17); + T('292357a4a7ca0a4648512acaa416', '3226641593686507554429950032194', 13); + T('13hog', '1313053', 33); + T('aks3be893ugctq81jr25n8', '823004494027615294747011449706584', 33); + T('1901201228993448243', '1901201228993448243', 10); + T('10pe57shgkj0salrufuot8', '21377178212418820499882165050214', 31); + T('1h056a5d68', '385881101936', 18); + T('s1q88msiur9c5', '46791653096466186782', 33); + T('214256605b5b68173072b55a286678a78809b8a1b9123', '643841400834614066547345702859283739566239655019', 12); + T('225934566430252988213108187132502829348539', '225934566430252988213108187132502829348539', 10); + T('d46c910d58ac7136d30353803945d705d2c686b94a4b88c', '702141078557834674338031856012906248646954470735486212', 14); + T('60561454833387506208577187677017606400252625684525728', '253403574031753766760677099922706298646581738014040', 9); + T('5855c280622b208', '22237016075348836', 13); + T('551243031044335040041414252402143313230452031', '101760249517059532483322747468911891', 6); + T('43fia', '1164224', 23); + T('5ffn', '163858', 31); + T('150c7d4ab18bef2ef5f6732d9c2e43', '624946142089881488416245393484485342', 17); + T('1622555136441511413165355262403631420051', '1733785303380199232372666440606372', 7); + T('35gdh2332d44c44fe61beib', '44909929802583956335572418047', 19); + T('1a2', '553', 19); + T('6l23gp1o0d5lllh0h0cdg8phhooc8le', '19160300206063055542614858497172997898567024', 26); + T('356555', '861329', 12); + T('121121', '448', 3); + T('cn81glehb1bj731', '272882629276550119945', 24); + T('310f7e944db1e20ca7d4db559be74aafcd', '16694431636419175813863637436681440374733', 16); + T('1c50o3fo032p9dlma2984c2m1n5', '9043264155154723194686490722280250127', 26); + T('2r4je4q2dgrcwof3ha10riwtv2i', '38819957816824364031051480668637630210813', 35); + T('1bsa21se9qifdeljkhl8t', '487505004229099904116267378169', 30); + T('6hra982l6rcia40f233gc6623kndbhi7', '4832827139354482206384048706613262325658834511', 28); + T('54c1te5y52hryxhw8dqfw', '38992453646077977693451503497907', 35); + T('111001110101100110110110001001100011101011000110110110001110111111010110110101110010100100001101101100111011011100110000110111100000011100011', '2519183162360903506191281057447758087831779', 2); + T('7je5fa763i628f2261ed4527cb', '2679563654580342682033196365619051', 20); + T('3dn6l79c9i41', '5450807136767713', 24); + T('f9766807', '52451515394', 23); + T('88ed0197de', '1684047406892', 18); + T('52h1b8218gdc40ad5i310cgag863ag', '276096404325838933546263152968372529416', 20); + T('52t9r2u77vbvf40efm68bawfi2h', '33471177559078492055448775316984931198101', 34); + T('200hd', '210271', 18); + T('1f1v242ndsl7lvirbmm58el7', '122766495427277981800542186078046723', 33); + T('5h', '192', 35); + T('a7538d005092a0', '8355305185328108', 14); + T('1211474324420476530235671057512302', '804188130270400499435404432578', 8); + T('36007574066667272553066076615170250031017703', '2553404178224213798051876650192088604611', 8); + T('5e358', '487347', 17); + T('1303322003313332132023030213123123210311132201113000000201300133220032030023213310031203', '43366030506223289335027745955530792181104257171145571', 4); + T('13579e8b8g5c1ii6c63102', '581965839975794432039894464766', 26); + T('een2b8gn5a0akreg', '74066109426399607206216', 28); + T('373734g9481fe1bd3808ebg66f', '19756375071243592050789033494286', 17); + T('1122000020200011200202100120112021222202012201021212012120002222112122210212112201', '722771278211345591971149292885640595157', 3); + T('22rod', '1295069', 28); + T('q5odfp9f43b1c50qjqpl6r75', '50477571992047059200316127648900857', 28); + T('3acw01ki1tllmf', '268187445649566046567', 34); + T('179h9bpefc02l4', '3184639878779111822', 26); + T('603076927928855a459', '33500247475513964715', 11); + T('b7937246a973707756360997bbc4a1add265359b332a', '221810527222776063188868345414589959484754657616362', 14); + T('11a4ae80f151dad1752e32c310a41dae552c37b7b4', '25785693883194456949802584063055012266517133244340', 16); + T('1q0s0ct3a', '1993804772458', 32); + T('305b07aac599939a5c2a7', '253475774098192811736459', 14); + T('3e7c04g60291a4g4c9f8h6fce634ccba', '3114555919530851258064228685168186383232', 18); + T('94nl1m3ak53p4it388jf6l3mq', '5679054267841124072813695563380516908', 31); + T('1e9e77gdcg8999dh501deb4b1a8', '783953025310755506835756788250680', 18); + T('lomhb6bfinkeke7jghdjnhibdi', '1953665391422082290906397636706147843', 25); + T('2116596779495229974441934380827118544653435', '2116596779495229974441934380827118544653435', 10); + T('368d9', '174129', 15); + T('1agh7h9ae43hi1af8k8kghdhfkc08dbhff66dg', '12657253320720905806182288358437536765226473490475', 21); + T('320abd803f00618b853f0f4ad06d76e5ead8eb20d', '4571024861681675091071130733403917525672421929485', 16); + T('13s8nnc8bsk2d', '1862804681403965620', 33); + T('1d1f67lnfl0l2d54e8pd4fdld2q1f2i00m2', '6881652679580574557491455550605507870404485512536', 27); + T('200e0d886dg8dc3b3b2bae2b5fe030egfe843', '396106131924337983787092625578393234401506110', 17); + T('nnik4kneo3', '252246525060547', 28); + T('opgbb9o1gvdiijz8jg721c39untg', '25881420507156207174185940935514686366771476', 36); + T('1837bbb0c0b3aa5', '17663579102091025', 14); + T('9jief28l04mka1lle8', '2856790240918270335561368', 24); + T('7tp3jdgcfd32', '141621578705936792', 30); + T('4', '4', 30); + T('222300022013300210200', '2937927436576', 4); + T('11100000111001110001000011110101010101100011', '15455189161315', 2); + T('1ha43j30df6io8438bq9slk1', '31199374101388173422454285941010092', 31); + T('10jbjaf26fgjiffg64fded9e9i5', '24920507465295692091626238401086277', 21); + T('87h9ij5dlhhcjh1hk60galgb7c', '92091778011039547451374958750302842', 23); + T('2784592431917088379783455384035660971125128970527148', '2784592431917088379783455384035660971125128970527148', 10); + T('3f440273754699dfg5bb4e74', '77813808595431029263623003362', 17); + T('1533i', '947808', 30); + T('c681cb1744269d1db3976001b16d3818c2b64839dd4', '17109878266190272366632308176425149995679950565718', 14); + T('60v', '6565', 33); + T('shn5ajab50en3smbga0d5s076', '3582012633407680801468180717971425010', 29); + T('e3j6q9ic5', '3992855661140', 27); + T('irhcdao47803hhdpeu9e89ed', '378032942792617127943658071456183506', 31); + T('g256ch64c0b74idagf1ab1ifhi4i737e6627', '9199059457373375499891835079838688223060102043', 19); + T('10111010101101', '11949', 2); + T('117005335301204024246205442614352033070314715177', '846676850563380044165463437005588987127070916', 9); + T('4f4a32024611g26g2264f6', '338430706762087113025482959', 17); + T('5ksu', '169073', 31); + T('11mrnnlfebrg7raer', '152018401101654203204227', 28); + T('83ioaci', '3152456595', 27); + T('9e6142b038a', '34978108072150', 18); + T('1emawv26mw212hnqtpcwl4j99s', '566817147004008119440688047613652334743', 35); + T('29sh6pr5181di802j6t', '14165634085464252520185940514', 35); + T('7462320173122283772726810', '599983522402508738369613', 9); + T('3wrotodvd4dgo8sn2epehwf8vdoh9685c', '15630856736175398255351237559386715772597049203092', 33); + T('2095151352baa52614a53a0421205491386524a32b20b', '629494720198763535790368010310014455139220124011', 12); + T('909848', '909848', 10); + T('1e1b700ag1gf8eea9b3488gf6a8g', '3050765026582250489151628861107884', 17); + T('17f27d4daa32a', '421284028261162', 16); + T('3fd14203387143ed10002039a6fed', '20709934734392064809458286974365677', 16); + T('111010040102014022442422222032420002341024101300144343101412134', '26924030592936765055391026801687634225029044', 5); + T('4wiojwnbrlkl8pg9foo23uu9a1qpbmlac', '126760787317043868804119267318859978950162615116837', 35); + T('210320022332330111223223020320012020', '2721092611678604067208', 4); + T('n7ku5i7ckrca9k83bvdh', '920599639906328717359960161713', 32); + T('17b220gb2623f405b0', '18058612030620400642220', 20); + T('606mb55', '3573729571', 29); + T('9d59e66704633dg70ag8gfbf7998831ge1', '2585365443584252475016853533056335340761269', 18); + T('11111120331110311113221201203001223223111320230121232310100232011333011220123123130', '31183875195251062246636964788521888205106734806748', 4); + T('11012202012112221210020112000110210121122201111011121222010', '6614437174755192747904170297', 3); + T('4566b69a3b1567574178164a4394616b309890b373a', '9444463089320211225317858853703681134950130526', 12); + T('pkiga3j55qn', '5305045276825646', 27); + T('hb78bcc8ced66de45f14c04ae8d6hfeg42a', '84259895898473468702361264132957044004367294', 18); + T('30436028074514706633323564703107103255261676805352', '174908702299661723007314223174052884313545177020', 9); + T('6klbn2j2eln', '5464796003103282', 31); + T('7j3pcw6nfmhr9fxocg1wxkenrnkt7we5m49', '88904461013157334884357042737148269672311351079065265', 34); + T('r82v5q', '914455738', 32); + T('34ad769763ec2b7', '96777760100981122', 15); + T('gmposxc78rakn', '39780003905171575839', 34); + T('a73268168a75548674124697', '9548080180583883175964866', 11); + T('1237051', '343593', 8); + T('q6u777k1', '1376248631213', 34); + T('10010111010010010011111011111011000101100010011010101110111000010', '21802627242312687042', 2); + T('14dmjh7bjlc4d47dmfae09kcj524505mjd', '1038322928472978173076737040174508852100751669', 23); + T('11317560a17393ab6a99a582195a678aa749193a39b9a0', '4041658781234719016719043489530302116978697137352', 12); + T('3120122333011103321221103210310332213020023023220112001000', '70232841201518207453336540043894848', 4); + T('119bb65631559198409a47456871003ca715548c33', '5332093690285257080851788740211348309400491181', 13); + T('1m2rec', '36143234', 29); + T('366237621254212707310212730126632527636236606', '20953914213183846148388529652331213045126', 8); + T('5tt1f2duo4glotq8vsfkr1os', '246514271200574513800096210368694044', 32); + T('34e1bcb5gb53cibjmb6b3', '5492559329232323890310212939', 23); + T('3hb44ahgj6d304fic32bjc8heh7lhk', '3232709760711829349820278323781274358774', 22); + T('346ffj4208je', '7559300332817989', 25); + T('1d73nf4c2ic64', '223833191887270462', 27); + T('225024242331044121344', '9046573709095648', 6); + T('1049hebe2f', '201147941571', 18); + T('230kc5cc2bbffi6h6003fie16aafdd8bd67dj', '4542385341584792754115882088702313332812815292781', 22); + T('1f9b1tk7v7qsb5um73klta', '59949796791943622919687088265130', 32); + T('4184b1l3d96gbngkgi0bg50mk2m1', '74780513187896152341086440607818686097', 24); + T('okmg182dn4q7r', '8745053305431694017', 29); + T('53ae7173b79042ed481ba175e034e38e1d0', '50951535169205935843174191126575047980795', 15); + T('222i8fc3cjb789c995511jde1g9', '14141883645422057031570049406992729', 20); + T('aeiaou79juj3tkj5ga2k5qchh3ahce', '185979506581766660458072557764185061403967977', 31); + T('eacae9856ijgj3242678egf9', '12189771867978125139049367798709', 20); + T('2433113434303102021443032400412244243442443342242', '10466909999621086883955370845684072', 5); + T('2ae0fggc6c6g', '878502187845025', 21); + T('180845968a3226a8a253479619663', '250001325233535979152109394821', 11); + T('hj3tdd8slhdf', '2307423515301123891', 36); + T('ddf93c33cbe97520fb19a19', '4293593374816726677147720217', 16); + T('10013104402044003311220402002301031430001044', '1151854194727926643451204922024', 5); + T('1124210334', '2569469', 5); + T('7451704923b3ba8647a8c6b375402115658417212a4963', '984073049999829873728964883865033372424530670574289', 13); + T('1ij8n0u5', '54333768645', 32); + T('463cojq1oo', '44627322572360', 28); + T('1g2509ced735611b3bf0dd25egd1383ia5i', '55515377175716442946588772750863162331336647', 19); + T('10a099149225276aa0308163405854426a4546969042', '652590329197497894293981277355838911625689415', 11); + T('37bc13d810602438ce47db31c0e7a87e6b7831', '1242924848237600517379561065653635852461111345', 16); + T('676337572246445153657', '8042293848523986863', 8); + T('1g68836b967fgf9421011', '24334561727939858364932923', 18); + T('6b6620b97ac6a6b6', '352387246281540515', 13); + T('12776426', '6309843', 9); + T('24b0c6885ab8b8a892', '228166923738350465687', 15); + T('2', '2', 35); + T('15a', '346', 16); + T('300134022400134213344140000102213323042404311040243310312000343103042342', '127652641370367962998095582336792086908935738721597', 5); + T('3lfs4fgwbvj2wghyh740xh4oirg', '104622608267093965118263270976335121345788', 36); + T('157423050242731427202356723', '526719833217016133180883', 8); + T('1b15hp8lt9ju2rh8dqp', '2874344460549394391885632870', 33); + T('533921', '5454113', 16); + T('7732111706233511415326631451', '19164044677656856523125545', 8); + T('3dd0h9f7637i95fac3heh40c', '959218007315210960375525274067', 19); + T('881w1kydu9j4phfb2c07u94ghigb', '4029435105852318664830504263789530818302121', 35); + T('51', '181', 36); + T('2eh', '917', 18); + T('ca16b71428aig5i579j5jfb0ie2de4j95e5a52aj', '6873773388658232174414133826827672181606125713641019', 20); + T('20486090530289807472885277534944595036578390a', '13514447539625782711007863489274523595153330080', 11); + T('ioq5s4bdalj52flkt', '22698271406125036937402013', 32); + T('7a', '150', 20); + T('hfhrlg3rrnnwks8kws5qksp1la', '1603852442098792332083147036848732541416', 33); + T('5700507927296a1058a55a90235789278085068346', '28062460682476336947447786622579009202128233', 11); + T('959787104', '4077788116', 12); + T('2a7dda271d5i2j31eh72387daf31c639hchb84h74', '27699000410590034444165195331712291767536579684518944', 20); + T('111100101010101010000101011000001001110000100110111000010111110010111101101000110111011111101011000001001101111111110111011100010011100011111', '2642399810851701674212632837439227993925407', 2); + T('fbcim4p3nsgtjo1r03vfr2j3iqe4s0s0', '701339888089764999500469781844563368651453760384', 32); + T('64lzp05nduwcdnr0noygfcm85az', '178315640220328504562173918873277402530523', 36); + T('35lqm90bgico0a4bm5pm76qr8q6iibfph', '65327914287307331894331060275333284488697055741', 28); + T('83a2c22', '62241790', 14); + T('89ebae1173d48a4', '252977067390654829', 15); + T('770d01b680082f7c23db6444c14f885dacb63824', '679659960629478197799609320106784570818809968676', 16); + T('44', '60', 14); + T('133574562456214335435', '1652705792533576477', 8); + T('hjc4g2j5l13o8j194g4cak2fg4448d5lo0606b', '94123874693313956619727979886115180204328649160250161', 25); + T('153301155', '3242879', 6); + T('20db9n21fq5ibaapk90chaof', '1684131408222169123186744163051184', 27); + T('8908560898716681919534923549712841926366', '8908560898716681919534923549712841926366', 10); + T('110101010010011100111000100001100100101101000111000001000111101010100010010111001000001100001100100100101111100', '2161630318713979730472184517642620', 2); + T('164r7nnhmtvtn5dqm9vwb3sjam16', '118591147821330046156032931950921969681024', 33); + T('jm78unrb447ll9146j29fbu2njvmfgbl', '899490746363646305757921797948267020154887979381', 32); + T('2419413757519055953413373253672626060250908979623', '2419413757519055953413373253672626060250908979623', 10); + T('78i', '4593', 25); + T('dc1', '12866', 31); + T('2jci759g3516', '610774111386026', 20); + T('8824059425840339a993058b86957230870716058427784746', '658484467757378126049963737243666805178029770173426470', 12); + T('20', '30', 15); + T('12fnrrcj2g3dnbj0uvd3lqwfrs215hlt6', '4206028108501355290972496973094116936076368376680', 33); + T('11682eaa9a50b5bcc234b90342bb9d82e10da8cd55e87', '6133831849997371600782799052395677700841654445348277', 15); + T('224', '224', 10); + T('1kplfagn', '18578948909', 27); + T('167110ac751f4fe', '2158807311824281914', 20); + T('1d35', '7477', 16); + T('aa906c1dabfebe6da', '196647076124632540890', 16); + T('a9692a0a76714aa83b9088424a3955232971b8a618aab2b58', '68234402305157694365438746604458604774416341282072308', 12); + T('57g5', '156183', 31); + T('1ghp8v317z7', '5331055013092771', 36); + T('3b4ho477oeopclmi', '5753023344951280573362', 26); + T('640a34c4d5bca61b85d8255ba0', '1583171296199874175043612916375', 15); + T('655', '1621', 16); + T('4713001873693116544881662', '4713001873693116544881662', 10); + T('6gl3bca0', '30744845808', 24); + T('60644mi3d', '917033167588', 25); + T('21151054205203166605404660561', '1001991791616520586906319', 7); + T('129qr11chmnjfbix', '235017795197032514991897', 36); + T('244bd93174aa753ba6c202185776cb', '3994077758483075041207284320967331', 14); + T('10b4cdbc67791d914b4835190', '3400360668240333886096375178', 14); + T('1gjm2b566fl5e52133930k7088b82ijgb90c0', '18243047800946255257397415707493803164371776970538', 23); + T('3c3031a86910bc6256', '118078665313660741892', 14); + T('5k0u43zh6', '15674653708890', 36); + T('80137052', '38347634', 9); + T('5783jfdm426d5lh4h', '64288507756051477652657', 24); + T('1debef5dc8c2g4ccg2b1effc389', '178108250891112116916624674314670', 17); + T('rn4b', '1289675', 36); + T('96bghh4a66fk3g7ehh13c', '2590902696974891660626840167', 21); + T('556423035126405021416221205151', '18834557073762345117422046', 7); + T('1ed6e1bi4b9c13', '74595097394557912', 19); + T('3d8e3ijff6f8g1656f92hc2dcha67ik9363hg', '1448249031707035880952506340806153721615337546525', 21); + T('9ok43ekhol', '75619493880060', 27); + T('11af668734ef7a60033c5f518c530', '5739161962048683655238213338449200', 16); + T('hro9lido58n6', '149244549072792522', 28); + T('2yelbnsxotdubg6p2j', '846844061507274550621896811', 36); + T('3f8a', '86024', 29); + T('fcxqpdu0', '988921967600', 35); + T('kohlm', '8198672', 25); + T('cc57148', '62535637', 13); + T('12151', '5225', 8); + T('3375365cdde3db711375ae895d85d271d3cb25', '105909922550502800264613611713682806644035510', 15); + T('21031424', '1772495', 7); + T('4j3nl0517f9m0m301ganfm233l', '153601615041435840934780931557446429', 24); + T('4310255062420466600245524221213133235464365030', '476197169299254422116266555387455712335', 7); + T('4244423244041424242212043102240041314210000322', '130719114900175165281529950078212', 5); + T('nkoba1m6iajaofd2e18qgr7irlcrao6h8', '483767596088912028670249928507167976393694305348', 28); + T('2bf51ahb70i08dd7dc', '76858429135673573387403', 21); + T('9035964bc6d843d71d2ef9124632b039ca9ad9d6062cd', '863281823741412484448091339719676346358410323679011533', 16); + T('30lln67g83icilejifnfc257chemea', '105297837315708788148863073871950075232860', 25); + T('34rlrbnqcogal48', '578637984758229207624', 28); + T('210', '105', 7); + T('4g', '84', 17); + T('b384950cd1e16f', '16589581301885375790', 25); + T('8d9bhgdf3930', '562480785855234', 18); + T('570b40885', '5738449608965', 32); + T('1o97ac9d17j9b20ojeg5lnn4b2afddlen8i46j', '10454900498332552068488800154275426413110941145987044', 25); + T('9ldj9cic03oom4', '14695585287355078054', 25); + T('53287c', '1947997', 13); + T('134kd7hi96jd', '404274808381030', 21); + T('5fm21mdph4behl0a478jki5', '1733653126898384929528694793111545', 30); + T('11001101011011110101111100000111110011011001101110110010101100110101100101001111100101100110110010010001110001100000010011100110010101000011001111001001000111101000010', '150121826439470624887536282475629271619430756159298', 2); + T('4', '4', 13); + T('4d1631d4942f63e89279', '1140237935084465937312261', 17); + T('1372066706', '199781830', 8); + T('11hhc23551e866ib6812h7g23ad', '7346411878504474781966365272977413', 20); + T('101111000010001110110001111111100110010111000100010100010111111100100011010110101011110000010000100001110011100101111010011100111000100010000000011100110111000111', '4296345185753731570217826010182320032993209601479', 2); + T('b84d8a8i32', '3689641436737', 19); + T('821ro50fcuctkgot33m90ob09tucvv1f', '368313190889612097541983506195312358021535890479', 32); + T('1742eikl8lom1h71ad2', '37595040685294737585118388', 26); + T('37324076026320245555326737570636206', '19911177604481197795113399696518', 8); + T('320023020321233320302211200320322222033103201322110011320211', '1166689340508182807089736390989078053', 4); + T('vikd2pt8101fd9eil04sq7cvi6l', '441068211140868982000952250746004390824531', 35); + T('442123', '15288', 5); + T('711i3khj96m9511mfn20c5bjemc13kfn93', '24821870043582444752692478195243347378957786779', 24); + T('51lmp8tqwo2ihznbv47n39v8wk05', '5284244405211887591129226457353248485630277', 36); + T('28ia', '25574', 22); + T('1bcr3flr9a26qiocbai0g3na4p3a7kd', '36624769937531720777599142004807101241462829', 28); + T('14460a28a41383802814154aca2c71c5cc4391791c33aca', '2325888630013449576179969978508312620979962590691472', 13); + T('e708234759a6db8944ee0a6e1b6', '1413966030986819590654632803896888', 17); + T('q4iad60645grlf0coh7ajunj', '2203400666051301621545431516042922668', 33); + T('1220112101122000120220201222121201222002112000212001', '4110612146620826410819909', 3); + T('3', '3', 15); + T('65f8bc89d60a7011dcdb80539f104c2cf2894', '1255404535660022776668629518669612407348698590', 17); + T('17d0c2897b9hk96aj', '1949684990803549976380', 21); + T('2g5fed38ik06ii4e1c3bhdc0b513fe01753ddf6c', '10228352956451115239173172361471341616481366320264027', 21); + T('6bohd4bgt0eeonfjajubo4sojmfnms2mcv', '297805807713638700732162989593992480395200752081311', 32); + T('5df5a6eg3h2b2', '12674703290992823', 19); + T('30331120101023202223220032313030032223212233022223222202220', '269148936607402430897888550064138408', 4); + T('2a3nlbjoo40fbldn07d9n39p34p8alin9gqq', '297524222430407948715826730547173299573877425424600', 27); + T('1h5cg9gld4h07i7bgh', '499570659694781114823761', 24); + T('1framh4l', '41608063497', 31); + T('131', '1405', 36); + T('74m9lo2h16651b4bb922capfn', '386718113062216498663314663422184395', 28); + T('10101211101010001110020002220011101002010120100211', '271290657968780557694368', 3); + T('10201210211111010000110211011102121', '20755601360118862', 3); + T('o8m10fgn2jiu48go9sm6og1mlhooht9', '13369563582584175800565573934107108011510398039', 31); + T('11101000101000110001101001011101110010011110011101011011011001001010011111100101110101110011000100111001101111110101100110000000000111001001001101', '81062205635532331055236284929003822323364429', 2); + T('11010111', '215', 2); + T('6b792a454071b65717222968a031a81782b1b9856636', '177037493461561410531659133074253146230898913546', 12); + T('6311c13b75126da75ba7ba4485863726', '2107483404556464441066229583431654982', 14); + T('cpnpj5hmoj5a1nigpfld', '9961795419078247375796458163', 26); + T('10121452100213303532013451014132100303230445', '2998363768314347289377629629426269', 6); + T('20', '8', 4); + T('1ccp559ip8j1s70q8ab2c0227rgs', '25883719710063102259022735893679879209136', 31); + T('h780bg2q', '591900557402', 32); + T('a84850aknhp9hrp29rjfpmflaa03ckann00', '164376078844886204368282401541329974440232267281584', 28); + T('2c6c138b6024', '172705552710088', 18); + T('2b7h335ca7917803hfe890', '604800599026530009611628162', 18); + T('413kgak', '459596960', 22); + T('5570634a7653209a864697327a77aa7a167654aa214aa46688', '5883232483921140121005021114807539284596199567869393', 11); + T('fa3d98dfd239530c9a9556', '302522339292227790310118742', 16); + T('110030202222212020231013312023111312012023330132313132201212111231202', '109957282949036883749941648777035608841058', 4); + T('3oep1jk36mmc8pbj6pq06qdgg2c0', '1733516732758228053675351796432011366126', 27); + T('1af9', '8067', 17); + T('e92g', '224441', 25); + T('1466104572263031', '68894276814035271', 13); + T('10011000011011101000011000001101011000000110000101101000011101011110001010011100100011', '46069664430530648537081635', 2); + T('11mm8ml58rari0e', '193855100598485237870', 28); + T('1pfi7291d10t2bme00', '41101471466544183228950720', 31); + T('6', '6', 12); + T('f8b5889f095d', '1800044447610490', 19); + T('62373d', '8703010', 17); + T('10fdb7f', '17816447', 16); + T('15073c8576a045', '420372672828997', 13); + T('7f', '260', 35); + T('1333433', '27368', 5); + T('2244130132243425132044145124224415024451554010223151134204', '557550459764737171250298964345492919336144380', 6); + T('8d68f68g2h8b9n7hdf', '4965201398478292577464090', 25); + T('354313665111045406', '885233290237456', 7); + T('d0jb1kf9idebf73gi0f61ek47563dkbdhkc', '11772703237518049717164718112135708535788508390', 21); + T('1g0fw', '1761440', 33); + T('1111101001110000110010000000001001000111100111000100101111101110001100001000100001010001010011101000111101000100000100110001010111110000001011010011011', '2792505467580338130476655688091490969863067291', 2); + T('4kem1b33od5mfgmg', '109359135408139845817891', 31); + T('252401220241235031123451', '2296208767961087095', 6); + T('610k89dn', '63160332926', 27); + T('16agb99g4d805j75831909a4ggd218b5ij6ci5', '1823913478028636622491544197209852539611260693165', 20); + T('261a033075aaa9629248385a388', '3052545960208975734532191842', 11); + T('t7a1tf2e7tgnb8imbdeedmtigi9gso', '39644969218663723727102891143612359344002477896', 36); + T('7dl', '4023', 23); + T('25533oih57blao7g4pkl08bn13ol8piaa4kg', '73530387775765582430116303708968126882088830298200', 26); + T('519deeadj7la6fh80do', '148946600253514084380503194', 26); + T('4pcj', '97300', 27); + T('1ge2d9amf61k4l9e', '459233734124780611459', 23); + T('1052fmo6cnm59p37149o3l597k13', '161266754400204723877757541169558797813', 26); + T('2de4638', '33376778', 15); + T('210010202222212210201102001021122', '4352520348668609', 3); + T('5d24fc', '14090127', 19); + T('18d260c9d8f110eea9d29', '1875481379014053338979625', 16); + T('5joajar33labh4', '58322924858252306043', 29); + T('4iaqqiwyaom1ce66e', '22936244757184115769387199', 35); + T('69rr344rlel67mi7nflp87pmhgrp03', '43449918504438809554215800177138569914811503', 30); + T('6dc6205912265fe68cb44ae5c', '543574178265693146271925448284', 16); + T('43d54494ad5b05321084667b75d163d973a9d5a', '152956351019871496094981073356920240750506556', 14); + T('ah12a9bhec53547ch1gffbd4ce', '1014336400315441401789662738444945', 19); + T('2bd', '2699', 34); + T('3aec56e9h2g', '12856803598240', 18); + T('rq9uu', '25719242', 31); + T('d4n0x51toa6qdt318fp', '81581464565230142757839048850', 35); + T('jadsk62rh6ij31eo1ch3o0bhmhgj9jtnc4', '107561372102244760144971481381587972564573705894064', 30); + T('2043276441110982538543', '2043276441110982538543', 10); + T('20201210311332011322', '585807421818', 4); + T('727kcili23kg3l5i828m7cf0lf', '78445700911564313828749219623193471', 23); + T('36009102725393959984512648753051', '36009102725393959984512648753051', 10); + T('8ukdkn', '349394354', 33); + T('5ki8ke06mag1alck15hdfcbec6h3cga1e', '11023064368084528790974090237767391150220405232', 26); + T('3000113322000200111111113300212023213010111013202003200322021133133330031120110302003011', '71975485293215942293184497039364273438587712328376517', 4); + T('5a1a7b653b1a8a3171138a68', '38731186957000914147920624', 12); + T('12112311232132232202132212302112123231131121', '122959685741398740635146073', 4); + T('224224200440342044342040012141212202224032', '117352577650533752666371914267', 5); + T('gslgybo3qge', '46391977465963549', 35); + T('2uboe91cml1u7nj0', '69926702089025500890856', 31); + T('1b12egkmfpk6ek4ci', '62129465622057070801946', 26); + T('nnhs6', '31660330', 34); + T('67pqqk6c0547', '52109078987080647', 28); + T('1d1w7qp5k49pkew524aqk', '10447930959289958589155414670305', 35); + T('9alklpr1npcnqi', '61021505045351897946', 28); + T('a34jlmfhgco1mhe7i464e0a13p2fohm3g', '64375134650196903816516350557832247480646609606', 27); + T('4abw', '155033', 33); + T('2142033204210223322323142100114402142302', '4324065003615716467353162202', 5); + T('60532043272968a94888952a68053751a363283518447b7', '264927210929454220225095471298215643100178078897019', 12); + T('blqachpkchipk', '1773214262533625366', 27); + T('6a8', '4992', 28); + T('pcgo435a8', '7192807940789', 27); + T('qp0pr0mqbbjk7d', '174868044459225160273', 28); + T('5828156996331', '5828156996331', 10); + T('26fkfcd083b8lpgch1b', '66450659287855347635773641', 26); + T('8mmf63f0ia1ah5kdbjh99e9h9c977', '1209459278082656851165067356679983218550', 23); + T('52i148', '104410274', 29); + T('qk0tfb59r2qbln6o2sp8ugfboi31bt', '473285949705108395655138274449579397276795076', 31); + T('205532300043402003003254103', '369253734666995461719', 6); + T('879ab0', '235775925', 31); + T('241624188370143088778102727584606422', '6171271817077031180028886241834420', 9); + T('3255046123035', '47096682099', 7); + T('1i0c4vdgr', '2174016088986', 33); + T('146jkgfke909glk3ob6mdm58f8ilho', '40622675473823760328962580924562649904199', 25); + T('jj8y8', '32810768', 36); + T('1e4hkj6aa05cxq7m', '132784276644103297330004', 34); + T('978564821b048', '223388964080485', 13); + T('2436', '1310', 8); + T('hhfmf3j0f5i', '736122101988364', 23); + T('17267', '17267', 10); + T('4664330262460243362665332443326246035423001202', '534251783398075165083933973334281628283', 7); + T('b38gklnok0110c17n8mhoo010o5ag57j', '241427482360734538990839716374778906058847069', 25); + T('f3e7pulssj', '916859590578979', 34); + T('27d7555288d30272d', '5595200654400679125', 14); + T('819q61r30e', '282911846534158', 32); + T('480c9b46b994a5ba', '236539854099919419', 13); + T('fwprhkg', '20654989624', 33); + T('qpvqsoagbcxe1m9p4njcr3s1u5o8rilv', '8005304852449403198353189427839491405562792406601', 34); + T('3otz8vcq51hb4x2049', '1057170856381011920131894809', 36); + T('5c0d3086', '991652751', 15); + T('77he9mc', '1399298652', 24); + T('235325244120503340533314220240120541543313532314023214045251354045', '1009019759786137757734399255898805702011348236556717', 6); + T('pen16ld2', '267263406983', 27); + T('38da605fff560480g774a571914821fg4ce1b', '695692475188289760917741559372738544759806604', 17); + T('2as88bci0t3u4peh32h43sbiol8msq', '41775863368398953273228305076503096642379144', 31); + T('434b69658123b20626071b159419805b829bb', '3036841224924436585369140335673525677855', 12); + T('1639ce13gg5jn8n799h2egb', '7079325759472298465468600431036', 25); + T('223462807300306567156031813152503638585503736', '2197225859272539628269139500011586036340695', 9); + T('103e8i5je409cfjij2gjj2', '5891431329615183110981153276', 21); + T('27ehfd3mm1amb2', '2031041578695417482', 24); + T('294a9a0194301a1347905a9a23', '309810801471710455254108235', 11); + T('13410234243444343010', '33738914059130', 5); + T('m96d02hpr8iq', '802992036207501914', 32); + T('122101003320023331230132013130330312331033133310', '32516440874028879538684229620', 4); + T('72gd3be26bald2', '6233639407268330618', 24); + T('2d544bi4di8iee4bif6626hc7gbh6e6cig4dif81db', '72451765332560287083369602461296345124271516517829805', 19); + T('3eg4d95c4af8g6901ee4h5ai', '975073009049557106375679720761', 19); + T('382658c9903142c73aca3ab7cb65a9b03d1', '3332092804303405540969753019109086440851', 14); + T('jmt3oqow11l3pmdn80', '1285457439759406193536144680', 33); + T('224qna7', '1001249039', 28); + T('436m9407fh314jmifj3i1deeg69m5nad', '971010955553278162770513965655919904558476747', 27); + T('2satkskboq0b52lhqkmi4c5esc2l3', '673846076795500227422362618917964848206433', 30); + T('1111101100001101110000001101101111010010011111111101100000010111010101110110101100110010110010101000010100000010011110100100100111101010011', '683433243524982240677777243476582452055891', 2); + T('2914ian070b8148i4gj', '16589998566194339193968275', 24); + T('3a749k6112hhak447jj781mmeac', '876069885826400018389776921704533226', 23); + T('255872662234441388265248510244', '12384677052693094655070972427', 9); + T('560090c1c7219aac49bc98723', '17449270853995006816160134795', 14); + T('331hkjh2h222gd8j7f87053h0ekkg', '33116649224902344081270523395559561873', 21); + T('19d6ad933a8e5', '454557212846309', 16); + T('15576357436114241002422756773501074050', '4461159021738482150619844582864936', 8); + T('4ctu84vr3pf0r07ccpln', '1617599669168190267768549135515', 36); + T('45', '33', 7); + T('trcrs9kqi8j1indmkpce9nhggn966', '17122684227038407228619197596494484876338236', 31); + T('2buoook3nvs3kx7rsaxm5r4t0', '52296535133778210239758710339648429588', 36); + T('14226054c26c7552445020a886b7760b5b5135', '217115666892653625414446286763519219185314', 13); + T('204100', '6775', 5); + T('25163361', '5564145', 8); + T('3a7i5', '3481157', 32); + T('409cddb354a247c953ba', '89645162802357578226475', 15); + T('82701069295659144047712581742043369852863', '82701069295659144047712581742043369852863', 10); + T('1m1cdch85eede', '42940540919670056', 23); + T('8510a148870865416551266375119a8744402a37237554973a33', '1092891470413014298604369531468860344380942265185284043', 11); + T('2o8q93w6wqfxlcyj', '591019503162075661873627', 36); + T('1010101110101110001000111100111001110011001010011111001111101100', '12370864596035695596', 2); + T('11000111110001100111001010011110011010110101010010111100011010111100101101101101101010', '60378345252763661786864490', 2); + T('103334131441234433031414320224222030200141024110030322323443121443', '3117589328891536907605724784500236990408176498', 5); + T('3osq24ebjht8b4ofmqo4h3rihibobeebp0n', '639082398725178107711437881596434023161974350859523', 30); + T('4hwpetajtnef42hf6i7gk4ft1c56284h0', '284870293967456034800024507342384514579618737697444', 36); + T('47nk79pdq08jkr03j68h48j14fhob24jnl', '7753840463194256229084069256136460485337725952889', 29); + T('3e1ddad6b81e605', '279748388776437253', 16); + T('14213123322410322220113041', '564245997485316646', 5); + T('10101100111000000110001100101100001101101011010000111101100001111110100100011001000001010110001001110011111111101111111000000000000010000110110100111011100010001000100', '126329653589454952926638707222811823179996994585668', 2); + T('1121013121130033133101030331223301230313330233123323132', '451869705599733348535930921533150', 4); + T('2832526509886158185210a67196980527236826366270922', '267178313423247125602360439007441778151867246111079', 11); + T('301112020122222002200213300023011011021302010030010310320221102023120230', '17194503433563229118380499993437205254682156', 4); + T('69282098413186766083358437581101', '69282098413186766083358437581101', 10); + T('4415457670585382436475220327776155226816666075213', '28405304143473153865445009451075313957752794595', 9); + T('u55k6lj5rgfl57wgi31hvuqn4tf6hb1b4', '117985718169999606760995918723069839695453898058769', 33); + T('b7x2jn', '589663013', 35); + T('10126', '6666', 9); + T('b5879a2a1b80a2901235433a292338bb37', '4707604586763280840085306433760750747', 12); + T('n8jcfhcgkd97m599hckkej75midmgd696di93', '4944810674354559044783104703290657564535755949823978', 25); + T('3m', '91', 23); + T('2223210010100034424104121024440210422141112', '570144644155456680754503708907', 5); + T('13124122112412134233312432', '495575953944432242', 5); + T('e073b0188f2d6667b75f11f65a82fda', '18646734802776877837813543784990388186', 16); + T('mbtf7g37f4vmntj5ucgkv14ibgs52c', '2434353097193477091898655577704481736864297392', 33); + T('15d694d721', '29460575985', 14); + T('260163345975', '9836790910595', 14); + T('6uljaaspif4qcgv0w3r4s1d49i4gstwe', '821480362679083726187114504615763265574310553397', 33); + T('5gab21g70h002da99d2c84b5h', '7924712928864678423214354832759', 18); + T('39a6485c82b213cc4bc44409a44bb599a470a67a3a76b2', '503487028064289493492980947734948505492983138659732', 13); + T('20002201222000101110020000222120101200112221201021100001111111002', '6983493499156781197462869089813', 3); + T('10002412413200341022442444310143', '4677943423343013666298', 5); + T('111001000110000010011110111001000111011101011111100111110111111101100100110010001000011001100001000111010000010010110010110100111101000011110000111', '159155836031631574967766651303670498797193095', 2); + T('81f531048349c33f91627d55e1b6bdd8a78', '707557451293532648521737780488438655322744', 16); + T('3lielemoqkwe6hy7x49h7e2wa1xx537h', '2655961913531425670206416089623348076947591148312', 35); + T('563305225055677232242325342', '1753817655195311740136162', 8); + T('7212497884a67328a', '330466724397412118', 11); + T('0', '0', 25); + T('32012123102210300020113012111210131102113212120100320013103', '292854113268474190487876694062629331', 4); + T('56005640531166633533552031326403615010402', '37307044943970381141955666758261394', 7); + T('11000110000110100101011010000011010110100101011000011101010000011010110001010100011110011100010100111111010110000101110110110110100000', '16852729444979725339524623444714796314016', 2); + T('789g13febje5iejfa1ig8jf8c2aca4e83g', '63776033229698957310821624134744128800755276', 20); + T('9i15l0njmgm82jkd85m9nklm7fb17pql', '59304813258620243353054039369424204841493322301', 30); + T('13e4770aa6479a189h4ijhe7h', '19890160409189373966588476781757', 20); + T('391', '1021', 17); + T('2fu0b0cwrqnhk3g2', '148774633410591042263180', 33); + T('5bga0ahccc26ha', '117904089797019172', 18); + T('4aa8130208329129a05788a58233099034432a05816279a53258', '645369877978597708954154480649585042163183610604351956', 11); + T('2422033234133422320321444021300', '2698216128927171860825', 5); + T('4tpp5vh5bt6hek4g', '457274415287522823498216', 34); + T('k17w5vb34d3138wefz5fattm5dg8j5', '27198023106008199799064230217875560645484318769', 36); + T('2102013312101313322013123023202313023333130222031133013220323102212033032102100', '208553181918156893475157564867315522998449792144', 4); + T('51332502222305150244505511341050032244223', '70394344811157929465865596540343', 6); + T('12412251054223304020131354003520010333204354435', '904941860581497811835960794805811575', 6); + T('3479681145ba9586574471', '16462881831354787246025131', 15); + T('4ja2ighlhlc1', '2854140987850373', 22); + T('2202221002000121120210101202121020220112100111202222000100000100011222111101', '1688023704896041845224562059363977918', 3); + T('210000122110212221020111022121011222120000002200', '62111394465978849346782', 3); + T('6pimx7e60eft5feqa8u4b4bw90', '1307284040175844778008871938774231576106', 34); + T('1i16rl7r4oam1b5tean7rcu95tlt', '154612291629528044654847293969784668743598', 33); + T('15110303', '7506030', 9); + T('2016414121621263631244402455154', '45972634857804622561848566', 7); + T('44432212443', '289844523', 6); + T('58a4100974641092373572734330a556a85a3649335a64760887', '750631221647335681998791040547190909433022379938062625', 11); + T('743b060c9e1ec97aaccb57a0b82b7273', '20948613103678762990462558732773459183', 15); + T('1ajb3mdkf30l3ggp6n1a1', '59220428702663606276074957201', 27); + T('19cg5o96p252mmgrrjrl4ilod', '165904775415412969849796184365702337', 29); + T('3g74s6dirr87mm9foqlo7bfi582', '374825061004185779220292067103421684849', 29); + T('a6giogfn4fh', '3031737957822773', 28); + T('78b8be03f14', '8295928577812', 16); + T('26n4banle87jn35feal1m6', '220963128547176781029291070038', 24); + T('3h85d6b45gb6109f41d1728k9caacm7b1aji', '1718109577201049817604488911453241934701038840497', 23); + T('bd09e98b82e633', '116544317962963279', 17); + T('2110441420453022322540033154112020554313145001155131552512040', '107428364649645482426810419589588006553616123320', 6); + T('6d01menkb1m6op', '16127757406621275713', 26); + T('1730611463642631260026156435013323236764317226', '83774860480485487711819613225974439714454', 8); + T('2100667557474081635521', '231108395393156176477', 9); + T('eajmn8hsd1pjfm', '350223684312837767216', 31); + T('c', '12', 35); + T('3hh6bccn4457ag7adn', '1087094043870481997468111', 24); + T('2cmfuigao1lx7crntyo1ugf9i8lfn4xintk', '74377881431362654774128391002848996423791130882315335', 35); + T('ky425gzem0n0ly4at', '166714666329050622675578693', 36); + T('1sg1pw6tb7354mkeo50qw9hw2kampcodl', '18686700577780102002056839220792859826440700702559', 34); + T('3zk6unwmvk1cbbvs88gq87ir7zajx737', '7016346383200454479387022948900734227527567863075', 36); + T('10322140422033432323113304140103031433203324313120022144', '316354577067079212853499387473063048424', 5); + T('1aedc38e246a0a149337e0c21ce94312ab2a731', '851651713725780036567549303250491168513333496', 15); + T('g28dhe5ec7gca2da009c0676b', '79014378046420572184971870226746', 19); + T('sb63me5fg1ia384si46ls96olgbri43dbmh6', '141956865342110649337804593119630908073755164359747316', 30); + T('2e0b0c44dbc73ff4e6cg89g20a', '16306506209387027589159612217900', 17); + T('12dci8290ifa027fb7ejd6gh0195hga', '1217746749869313260112097211823364687130', 20); + T('100593ba5a865981d02bdbc05ebcd1d0eeaca4bc4', '110757343351711672327388218706433958588903853659', 15); + T('27519372626617950348722900682739422090', '27519372626617950348722900682739422090', 10); + T('3uupshi4aagt21d7itr5', '157172315431494653918152587109', 32); + T('2ep4', '50251', 27); + T('m9h3', '664581', 31); + T('110100000100110000001100110011111010100011011111011101010011110100011001010101001001100111', '1007262826627701209829823079', 2); + T('4fdcaeffedcef169c7g9efdea3', '117447089342770251162409579295367', 18); + T('6fh5eab56am5f61bl48l7c9b8me6icae840i2g92', '855997003648548335026652493309865049009850682381985715', 23); + T('7c0n5d8jn3lpa8hp99', '8461593530418792315440287', 26); + T('1tu322cusnnvoic90utms2kb8kpsffaopr', '90526131960565018083687339860055870929107749790523', 32); + T('110122010001', '248671', 3); + T('3fhh08ego0g82aj5dnk2q2kbn7idq3pm6', '22776756121219843287237037542642788102057852286', 27); + T('17bj8da6fm3f', '1264125153712738', 23); + T('f7543ch846', '7865867659286', 20); + T('2ag041225dg8e40b86f5d563065721a22e80', '224048255295439918093318523708092978352301432', 18); + T('152dgc8jh390j5b495gc', '6588878765500952675914332', 20); + T('noi', '18722', 28); + T('odb2603j2', '26846840229474', 32); + T('1062em', '9860997', 25); + T('24676', '16593', 9); + T('1255403606425333320235315622513526506526044146610025', '17675708274550040406518050433158199000096421', 7); + T('mc8cnmgceje46l2740j8ip1omjdk77o3', '5291886225857373516516815562816611072132097222', 27); + T('143141023331223043333', '184512629893593', 5); + T('1d1o6ko66e4ao2868mnibkee4dn2jf157c', '20642579270952330510501003581022184589302753312', 25); + T('28advfy', '4112308409', 35); + T('570310266815233921772669264379360250406802529', '570310266815233921772669264379360250406802529', 10); + T('3m8k49hbc2', '14854779179052', 25); + T('112265015661422606235430001553122514516430634002244346', '735500185117893335759658114968030927435658591', 7); + T('1bx', '1563', 34); + T('154198526b2676bb06962353abb66578266264812615421', '63438474644380821718834297112295766181334517357849', 12); + T('1100210202021100110022010112', '10394984607800', 3); + T('705373640815a38b6625734317272751745938838b66957931', '533650458267011464715178902445187808113331072099472757', 12); + T('5mu0', '242375', 35); + T('f412647bb', '106305216589', 17); + T('8', '8', 16); + T('rm9hate55nk5xr', '4711198898839826781711', 36); + T('td0hcbh0ndskf9md', '422345416603914184013773', 30); + T('343702712358238358', '58222225743441794', 9); + T('6bee0', '1820611', 23); + T('232530', '41769', 7); + T('540444340443225024252235511251333122111303332222444045405203402', '10009287342414262691465339202517966834792921923866', 6); + T('60535639204665261809056323', '60535639204665261809056323', 10); + T('498g0', '1708525', 25); + T('19j25i98e1ihd07224ka82eg', '78254066225000382046873246127584', 24); + T('330330100323133221011332232003003211033310230111011301111102233112323133133132', '86978805378934327315465572304260470254359934942', 4); + T('e32gfkiacklp3qeb8dahd973n', '317981536760764840843373569644467543', 27); + T('1ibs79baql74', '19946951806298397', 29); + T('gc2bafd1bfcfg8f8e6797cd872g40bbca786d', '3305765433031391380598054150042785559743311339', 17); + T('jablfdo', '14103490914', 30); + T('5dce26263c419372a4ebb00d424ba', '5048759171413629413482567787816575', 15); + T('9pj1utgw6indocmuk3', '638053591604508936554605548', 33); + T('39mm42fghqmj6rai4ms44a8jmaes', '10189567831237705666598526955508127749423', 29); + T('e2c9ij3dl7d3idek5hamdke4b64bh', '1896357467030637609113345980127736335781', 23); + T('s4n5pasy6ew75l2a1t', '4993163715460998736843408064', 35); + T('658334577577241364255153', '5841024053232128589867558', 11); + T('1404132402322011330243102041021123140304', '3337373674316685552024036954', 5); + T('3lm', '3352', 30); + T('18h9i9figeb0d243b8e097309b75fg8a0id', '44138855572089599578572255789371956709642686', 19); + T('2241012304021323300241123210431301', '299011414865892653217701', 5); + T('12022120121120000011112110210122210222102001000', '15710188707765121460544', 3); + T('4e7kf6ccdp4il17', '495576709967367899179', 27); + T('35i4', '50454', 25); + T('hi1d7dg97k5b0ailflh1gagbfakjhf33f36kf8', '832882004590031466088018493593950259022003331850434', 22); + T('6821545810481312184878830548787014204', '155801745935514050378370617627291164', 9); + T('10300033231231031023033122220332', '5480800290149870142', 4); + T('1011010110011101110010000110111110100010011000001', '399378554504385', 2); + T('efc1ltd227dle8flfrqcwtcvkvs', '43822708871975185309034493996620102899735', 33); + T('12832300405', '12832300405', 10); + T('650595570247321885101265507780200498020021110989312', '650595570247321885101265507780200498020021110989312', 10); + T('3124144616475210442326726176753', '3917395568817125518374141419', 8); + T('19b1kgb252i8d05fdi2', '917130084420731730796550', 21); + T('10110001001001000101010101010000101101000110100110000110001000001000010110100111000110101000010010100111010100011000100011101100111001110001010100000', '493799621713705665209661337050845053741490848', 2); + T('65ajh2mc90inhcmd846g8i5ac3l3inc', '1587173922359823128666098525120017654586548', 24); + T('keoej5b6', '125728425281', 25); + T('7aqjhe8ne805qgosdh01fosn193nege651', '13396367124183589399343540124147227754242301295318', 29); + T('200111111010212211010011210012210021121011120111200101001110011111110210220001111220201210122221011011112', '85808090717084077750326522417981797898295448342990', 3); + T('28f06cc7ea7a819gf781e895a2b', '1080002582657621357238123894492239', 18); + T('13da1526049c632g88525c75dgfg2dcfab7c2f5', '69930158209361480953961939859540779534596389301', 17); + T('e9e51rloqsmtrleng4s7pq0jarfl', '109166094703871534700120128616442419684771', 30); + T('34216063', '2979343', 7); + T('6c063c35cb81dadc43adb1', '8034831935878348183255023', 14); + T('989164hdf9b51geg8624chhc7g47h5377ab71', '14664682513456963530829234223873975820816166603', 18); + T('145241986', '145241986', 10); + T('122551245377370372510600247650271544', '52420971115555265131642802500452', 8); + T('bba7aa6155a3014', '46889782002517822', 13); + T('3deb3tkkhlamh89ljpprd2', '36080909083483453648852421649692', 30); + T('4120104313404000512310', '92641744056051474', 6); + T('4fg', '2477', 23); + T('1eghg93c74j179gg56dd045id2ii86i', '1870702929919246989271587432599881427338', 20); + T('51123225122335422566204631400', '2378354862895607406604402', 7); + T('13577', '13577', 10); + T('5kjbqd5ilhk6rsthb7aok056d3rm', '104710675709925942718275325006590464848210', 31); + T('1l', '47', 26); + T('g996104g1ef15e13cg4', '232909810115697952226467', 17); + T('5dpcd6micqpf7c3rf', '2351027610634734415497525', 30); + T('1q3r03saf7da72ogme3qsgol0ka', '1098670850837387299606462566653196917356', 31); + T('6mabf7a4mdjk56265l8kka7i2j46', '40764485063999108303947012898651625672', 23); + T('711265667352525777055750103304054072', '289883291844318827546712512419898', 8); + T('181ah327cbh09bbdbi05gihdja3a6766cf1c89', '1929446677883376438181941961611633360059304812969', 20); + T('683ao9qhn91f6ifj5ggnm48i20diinqama9', '330737041385586113625862339185409951588553481122988', 29); + T('4z82fjb9rvrg0sfjrxoz330j2j4wym', '6758750673748428599831923455366157745143999198', 36); + T('19218eb109', '1706298801557', 22); + T('1xteget9vm7rmvt1qeleb', '8506448668267622326601389463723', 34); + T('3i33kbg9cqg54jm2dfa', '213466100023939044330506035', 27); + T('215h8f51db257ael57', '289767309771867327604947', 23); + T('10110101110101110100000111010001011000111011010000101001110101111110110001011000000', '6869753008454091059192512', 2); + T('58e', '3602', 26); + T('659874ecb742089cd0f2fc72a2e912d48334f2d', '36250497918673919606249316600592246963107483437', 16); + T('fecne', '6086214', 25); + T('5kbn62hdf7wmwhk67dqk', '701711736487352936694557071892', 34); + T('193418768773292279686a8766bb', '2041543002021168521235526438842', 13); + T('b5f7p0qqnmk2h8qfjhgmb', '475042274550491463639138392813', 27); + T('1okma06a16bp4ingkgf7o', '38938334164376358043955589354', 26); + T('km3', '11089', 23); + T('201', '51', 5); + T('2e4yc5cjy2hj9jy', '9951741372023452880724', 35); + T('13001304414442041212340', '3820949701507220', 5); + T('2ie2bm03mioejrh1nd8ihi53hjj3bac', '196391064504813821616820420047441343526039222', 29); + T('38a179006b409b755426146692007b083661', '220736472532747947341118345018618875881', 12); + T('52eofqqb0rg4dijj7oir56gr', '9803633243543859078443703279727611', 28); + T('10542528849006a4209977a245a6670844a65893a8', '5200046241474102735966912429570012726348257', 11); + T('301222300033320033', '53330640399', 4); + T('14k461i83b0kc', '71064921466188012', 25); + T('11101001010111011000000010011000001110011111110011111000110011110011001111011111101111000100010110001110100101', '1183302363719122225851040665789349', 2); + T('6aim7vpcb6nw0rtr9x74xowefjtnonisji8', '198480536455893007753383205691175236273156270478363788', 35); + T('44957146989902980426789317', '44957146989902980426789317', 10); + T('110205b4b61454d4b3b7803c', '246154487751049576297182022', 14); + T('14ogjsp73do5', '14239859065452217', 29); + T('1bd0nkar7jlf3bdp1', '349044193281529358817564', 29); + T('5eo6ed6nmmcoc6qdh', '442845139356014267015909', 27); + T('311000312203102002211302220033201323322001122212020301110332333131233222302032', '75663136060016606687972617399235327868190764174', 4); + T('e0ji5u', '401391626', 31); + T('1424357303022501420341156201', '3723432687881212284689537', 8); + T('1ot26r1r25y6jshe21wni', '13008118169902415707339281796648', 35); + T('1i2', '1685', 33); + T('2fjhc5hif69dg6605d171eb7cjc7k729', '1122293919180819662380020426292955339311361', 22); + T('386587ngd3dnln', '33687830964706424608', 29); + T('6535', '4811', 9); + T('595b11426b9c0704b17689d3b6', '255251373547377701279623680212', 14); + T('6237m485ddjcnieokb4nc7oij2fbao558l', '82471258057252969989346717428147198122909847096', 25); + T('43440d004a624a9aa5215926d127d0cd34000071555', '5812346158873879973339574652454563446486067283271', 14); + T('3ml01ehme4niee4', '83156933475485244628', 24); + T('3dd0foql9qr434', '22633155441925307864', 28); + T('100011010000101111111110101011111111100111011111111000011101110010100000110001111000111100010111011110000101010100000101011100', '46870857086354303302378526158318027100', 2); + T('5dd677042ad15hda283e0e3h0ci920c91', '475991049360626890704302602104214715388328', 19); + T('2484222523', '987550482', 9); + T('1o54o241he2d16m6fa2pl4n3c65gi4', '208907464043630568560284375825261087372160', 26); + T('1014120211123113242013134132412222314312433034232212101102023124331133233', '227485273039510873413178482785035220246188554161693', 5); + T('dm5lgtvb1p', '481781008542777', 32); + T('8gq1c', '6070379', 29); + T('2cj7llc4eg8f4k0higp57i4kgce48k3n5a6a', '83230479743519414484378889869266300543737457886886', 26); + T('20', '36', 18); + T('ext2p1il80v9lpv9ebwfhw3pufedgesl0k', '5185280930874834437412210154592858661728459849547240', 34); + T('268732c65576481b112', '282507652502544897001', 13); + T('2b38484aa35e0d64507ca723c15933b9b43', '26686868200702243883872800111367217352288', 15); + T('43e48jkmxot2oy2fo017sfk72hnevbl1oo', '3687542753129712107602138468735370587663145861696839', 35); + T('ojudi704tha6', '626181160658812467', 31); + T('j5', '385', 20); + T('103533241255410240323255355232043144540505', '88966569636637417158897456537305', 6); + T('q0l7j2j7r0p6ae1baf6s', '563916309957339378866464786934', 31); + T('5a7c53b2', '364964095', 13); + T('1fjne9il8lkg3bh', '103626865036283572091', 26); + T('30d7de9e033c54b451c6d3b51ec197329a6e0542', '22557901127642576391477860038224820219603000562', 15); + T('20360161522501151310214311356463136125245245560521232311426', '21552877623292541132456573250632857116774507721475', 7); + T('512350542042531015303442430241435053151310231500225235203315045314', '1991453522210060656872676051735126305923083736859310', 6); + T('21121310020023020001103220', '2646808142550248', 4); + T('9gf55f6rj8pd80r431be60rolg54oeqe', '20665197735276350815418661624870881870158116448', 29); + T('6di7fnk1ka03ho5bmc43kld2de9', '106858530460627601101778247911433225126', 27); + T('14d26a4b3a267', '8975609863073539', 21); + T('28e98e7jc72', '98390517534444', 23); + T('95', '158', 17); + T('148b9f744h78h2b8h99b', '884510597649896304807737', 18); + T('1136025406614a982932a2414233036646a259314a9690', '81653801636548512093768636534022656649699507364', 11); + T('18b51h64hd398a', '30802810305582406', 18); + T('1043243232004324343', '4534554761223', 5); + T('5k6khbk8qmq1bd2nr5j7162d3dhmogs76pa', '2874134176824005398775676217605241490607568199781842', 31); + T('e5b9vh77mseismvci6a', '30505084481497262094146130166', 33); + T('544622661023252114032553653430635012455640216226', '29737930867189529595998234535940410116741', 7); + T('c5g4m06c48d4530a409d4', '49190458509627322489392813436', 24); + T('2jb0b2bnji', '10595811514868', 25); + T('1001011100111010011100011010100000000100011101001101110110110010110100011001101000011110010000101110110101111110000000111100000101110100010100110100110001000000010110100011', '3536326453156193038031587123790239903142359400187299', 2); + T('52bf9ld84dbblg', '1446598246008687106', 22); + T('d3c5daj8ae7il', '169193485055337357', 22); + T('101010100101101101010110000001111101000100001110000011010001', '767218737556283601', 2); + T('1437', '16207', 24); + T('114133340123233432103120012420300414231232242043303433332031141324311011321', '7273916554967523346010893023640093442791484794235211', 5); + T('cdemrp1q1dfo5oaa9o552', '29104534648610198033358963191135', 33); + T('hn4i0bh3lnh22dbpiie6nbnh', '34333773871855985124318946939651717', 28); + T('10110110001111010100100101100010111000001010000111100100011110001011101000101100111001111011100111001111', '14438492881715694934558943721935', 2); + T('588', '3333', 25); + T('51adke15g1', '6117745845773', 22); + T('v1cb8mieshuc6gua3nbswk', '2402909063962783729496267888203295', 33); + T('154ad6bida8ch6350198e231f0i5hi7f94', '2016744827456637173074923253636234179984684', 19); + T('4041103013000012302004', '1988313720822129', 5); + T('343231343104143200023110332242214210120241412004213422100041430211002422', '166923575124772514544128066112153498600774395406612', 5); + T('b8nkae4j', '52169931763', 24); + T('102400633554632', '713852464334', 7); + T('15230012004363225000152043112', '811351549236281156826172', 7); + T('32221779b4b37b37513082406424450aa579a2a8834a', '80810046681505916793845914766512942540525426666', 12); + T('2kmcp3r6qs1g5p245fqb0g8qa', '340045012651728420163296954517156597', 29); + T('11110110001010000001011100110100101010001101010100100101000010101010001111101101110101100110100000111100101011001000010000000001101111', '20940687968317900181954981756671243649135', 2); + T('10b9821c0db4bcb045262d98b761d2117a', '70367656624653783927494922061307165096', 14); + T('231032232010133020300013323031302133220331310111301123312001312131321103331330', '64554409692052210685332500753625976302230388604', 4); + T('1dk701j6d4baf96bf4iib1', '25341540144182484368121637707', 22); + T('4edea9ba4', '12802842379', 15); + T('ciffbbda77', '4192099035923', 19); + T('3bcb854a520', '1113967604288', 14); + T('1768433009ba79273507849b37b1949a0aa91', '1155230524818144260160287806949250060685', 12); + T('21', '7', 3); + T('12', '15', 13); + T('a3dd53124a00bbc3a902c2b7c02', '6479682616939747273872424224938', 14); + T('1rn0d8s4ror38g0bsimk', '11952637171366777777073055104', 29); + T('2eg5ag969k30e', '34322046314733994', 22); + T('df6i05bcl', '2837296447201', 26); + T('d6hbff561gk039bm', '67475093532951335800346', 28); + T('736135d12de0dc5197046', '2403172999591697203426191', 15); + T('1917700k7b0798hlh7fj1a3l158il8c9k78fgkki', '31935326566626088190275112296683968556264917574568138', 22); + T('110442', '19434', 7); + T('a4f9451ce43j', '2096875845233679', 20); + T('10pc0lrrod1ng7813ho6f1735ni4856nk9og13', '362001328932031510264970316722642804830244524894241823', 28); + T('340', '95', 5); + T('2', '2', 12); + T('jfb98e91hdhd146', '730834824992077156981', 25); + T('2u715wji0ksv', '276409078243593011', 35); + T('p538go6b3sgsk2q05dh8499n5lg3', '76866731395524797035264473788165190998742', 29); + T('10210322121301121330021', '20128796614409', 4); + T('czprbjnb6c5va57wfojodh2s1b2phqt', '634971610203428324104731270997646500012871287829', 36); + T('163351146232500134562615331', '18110985379078188834196', 7); + T('6e4129jca7943b106ib8cfjb1421', '900619828463523710649738973182569641', 20); + T('23230100001012100222023301223332133121311333112211232131113120312132203001122302001022200', '279953661912858509028227026934672011374168514476118688', 4); + T('5jgr1tjenanafmgy02av80a4ju8nsh', '3332563710063599538714906051740573308676056547', 35); + T('2a03a8a82cd13dc18b5', '12400430345351117674677', 16); + T('11000001011111101100110101100110', '3246312806', 2); + T('29a449404373294192348416192a795a064a9', '89775465256863804086218230386927370554', 11); + T('68e76kcjm1afgdkmkm', '1848940629085999196683126', 24); + T('2kbe3faaf7iegaa4e9b4f08a933fhciljk', '2501181635047310570015074845876633642933551437', 23); + T('12344hbfe6', '359536823591', 19); + T('143442112', '765282', 5); + T('4a081317336a309149661ab942', '4615291648867282664377427330', 12); + T('3jkk8128c64j9i', '1104902507111910404', 22); + T('amo9tdefgwuecrqta7jpqfo6kg6jaw4', '223524633732333732706172640317287185870223150499', 35); + T('21a58a0047a1884514880231963587a9aa5266571076574502', '2324252250359662008081886857169837234726499778719045', 11); + T('2eg7g43878ag755id005efg87bhi1ihk0iggf9h', '474575893810580165151415734655919630427242773838537', 21); + T('1253981930', '1253981930', 10); + T('84f646c', '281267112', 18); + T('699224148127737506438432736786719976879926194098083936', '699224148127737506438432736786719976879926194098083936', 10); + T('130587969810795743976151248055472770225248488', '130587969810795743976151248055472770225248488', 10); + T('7287697267041921400', '7287697267041921400', 10); + T('12l', '749', 26); + T('2blo1glbdeillcf0on2mk14h', '351738590084565988788756864375742', 25); + T('49mfphl', '3828465983', 31); + T('51147130442424172652616112', '194568628606971297864778', 8); + T('602', '296', 7); + T('g0fk7lla0ii5i7i2g288eegi2ke45nme', '347493304922004024159457621489970110001655564', 25); + T('3427410030517411126776423004072314', '2247499600567123820908846806220', 8); + T('11c0b422813e46a0704286bcc78e9ae64a4aac5', '550518894687870908612059469029958777652379310', 15); + T('4mgrao8bnjmlfprj1g5k7o', '11809356002610908689865424701148', 28); + T('16602427320624026652410144225431222411', '4788262207154170686928960302163209', 8); + T('1133922820054976072a26336240128a97', '25979311751316593865740595613096134', 11); + T('111130535130440515255305101002545525104205242311405241', '209770118829200105874769377203607523817689', 6); + T('33410044421301', '4599998326', 5); + T('g85cualojockutoj8l9i05fer', '10090207313826743038498352382093951180', 31); + T('33ed24501e0ba9a810d3', '72404567612236270674198', 15); + T('577nlao2jqemfps13laqti6av4o66', '7284410453812369054568448091009770033668294', 32); + T('51380825345112415250165068281324', '1968364002188078831430803112511', 9); + T('837101b3a0a907711987672759a2317b079', '40850603036144384752073171952853482909', 12); + T('1irpsmnr2', '1070073795512', 30); + T('bd7f3576f5875', '13588639558671227', 18); + T('dd9h4', '7171636', 27); + T('26w41a77diqu8', '5260279707492571244', 34); + T('46144610334425521434631035561707752201423', '6346533567879985413095577825858618131', 8); + T('5ba89cc62ab54', '137675765649465', 13); + T('131534626543730752048834', '11992216206430875347086', 9); + T('dl6dc8768f1ig42kh', '168255534771745044094577', 24); + T('2eb9b59115mdikbhmc551dchgbf5', '143119111508435191417807312784059632255', 25); + T('cssbedntprq7i', '21473268174365747109', 33); + T('392s9qmrdqggnh7m1', '1421950054322530991895961', 30); + T('3d235be4948269469821ee4ee8c659e073caa436488', '96444901326379451008420429583243171799035293288778', 15); + T('c', '12', 18); + T('161162230b89b81068276b63888013a3a715a35b2b47', '38295121533792138694595448876904917585402510055', 12); + T('112012102101010200120', '5501676750', 3); + T('ojk7jec5b56ijsr3fao8', '286565314487033509494400944728', 30); + T('2a60j25ki993i6cc960ccadj92g11fgc5', '5095635099989024533935083494179547954150889', 21); + T('nahoipcvslh8suq2qgtvitg4', '969084134162426052646973641814799876', 32); + T('c7222hli0l3l6244945dcpqh', '10231322180811816357229624809826769', 27); + T('3244223102234410102002134323340331322021444210142314143403233432', '389884100489780930202190481841298604587555492', 5); + T('7327ef47l94j3e8', '2114488657647112742209', 29); + T('cf9g1dahcdaf2026h91gh8c73d76g5ca54d', '61466270199599757540795294611578425158922457', 18); + T('7f4h786d247ebca9', '52952122599419205189', 18); + T('4302014423242240001311214131403014', '537446950702717645184759', 5); + T('8ch8ff6ik', '325689693419', 21); + T('50gg86980m5gom1qg', '2160248255368559193835696', 30); + T('20122021021102112201221221211122110111121101202', '19615481787418378846121', 3); + T('6214216998763', '6214216998763', 10); + T('k5edi4w6y8rpf4jbd01k8i8na6v6k8db', '14807562688860562973809761754715067179928180924641', 35); + T('g4h', '10937', 26); + T('0', '0', 30); + T('ac7a273b', '1851111506', 15); + T('2200123440245032334125041530555505552', '24078438391794160644374978732', 6); + T('1130215551', '157358953', 8); + T('100144143000316540003233550024603', '1109765702355719674747590391', 7); + T('30441204442400', '3899296600', 5); + T('113695d064b657b6e38', '1599024751435436052203', 15); + T('6dehkk21l55bjnoghjefaqsprdf59cj4fjdi', '9875112479907817915333605507323858110862750123273684', 29); + T('141606qhkh847fg0', '5833789314492474260464', 28); + T('2chgdbf1b3dg46dk4ebc70b0g9j3f8c8lh5aei', '120675412358469616349928651160190450670575079622934', 22); + T('59agmj6uku8bv289o4d8koni8aqc3vqmc40', '165870499545712369328916058056499539367750790670918090', 35); + T('2rbcn8lum', '6261797865422', 35); + T('22m3v3fuu9emp5jna', '4116024592593979746814825', 33); + T('366121646421620330410', '317849044022280631', 7); + T('2116b48', '6253544', 12); + T('25140718474428175265303486', '1847517948365808950428587', 9); + T('4598i4c662g8ca070ijfd54cdb6', '28679737685086326785443322448741426', 20); + T('1ao6m4o89llpgdc82kd9h9nrje9kph', '3527082557153952794613151020059372427454804', 29); + T('32jnm0mmb3pssdd66an', '650845857248237485135874915', 29); + T('111100012000222102122202200200101222011012212012101112001210212020000011200112121122202110', '4312338675736411168834113479404731768937986', 3); + T('6112004b71a2b5434b77703651a347642a93b69b8771', '154708197486329491948970688330686826353013326149', 12); + T('1042032441303342344224002110103322213421224333342', '4182077882904105022063063694371097', 5); + T('29c68h1c7ede0jd09dffg0', '5202625875782390263071006320', 20); + T('1e634adab5f805f52f70cac738dd261d7d6', '165447251922571882378062853693168471365590', 16); + T('3jgalil961', '6947464731518', 23); + T('1214401', '334081', 8); + T('54860130871146444', '10286973227136298', 9); + T('1030533234260', '14720402858', 7); + T('100aa3e40361hfha8e248bfbb09h20h7a6c79h26ac', '2930615985226137047162398456800365754016041083603160', 18); + T('43591767393031052388336018446089607834282371433', '43591767393031052388336018446089607834282371433', 10); + T('1a42634db3a398440b0d143640b', '1093389394637381321001671261403', 14); + T('1k92', '22956', 23); + T('7ovd36cvh0mkqjfvfnuvbsq391cn9', '10844675681652928114870191782873626527707881', 32); + T('15g1', '15181', 23); + T('67b69b71b1717', '59413996339651', 12); + T('30j57pimocqtilogto2d', '35115475354624111874465964673', 30); + T('2d0b0ae2b685425d29b0ecb3b5edfa717cb1417', '16071927572096392119675195392748578598193665047', 16); + T('11', '18', 17); + T('112001000110021202210110201211122221220112122100101010011002100102020001020201000120001011', '4537785058981363374616512422509774739280043', 3); + T('50ab6141b78600b83b78b88348b5a05131a91a', '43175432477484073434743334087258618678694', 12); + T('eo9qocnoj90bor40al4p5479b7g4c1r1cb31', '6650244100026164587107322943956581111894985709587461', 28); + T('2ad3kx1qktnu3vpnmo2ao6x1dv4x7xg', '20282628012647095397816411972962059191966263670', 34); + T('222116623333265530440631564017304', '180929743300409204225159995076', 8); + T('dbbg6mlmj33n0', '492243480903801576', 24); + T('2b2ec06g3877d2791928b9ffd1746b', '1280577379796462921259686563546353143', 17); + T('102101102211102021013144443014440303124104', '49494259261254501284171145529', 5); + T('7a87c66768a00656e6143d364', '606741009919509661621760021348', 16); + T('47767235803614822752211551670476', '1859353386668959678249738581726', 9); + T('1', '1', 14); + T('4hecd739h5679e7gd9029m08f', '2289177364521402481927372413403470', 23); + T('6l3bh7f6o9gknn00f', '159385341670896444890640', 25); + T('5e5kjlkvo5unf3dtwmmqrvik257j4w5w84', '700990942006311373479452989797165256937719202881105', 33); + T('201', '33', 4); + T('233203422520520454251431153344153122212110131402224331', '452721388389843317258206375087014173893951', 6); + T('14n29lgjdc4rim3ornkjna8klilg59bdka', '668735111660092455694876539400574336368551464522', 28); + T('b', '11', 20); + T('oq', '722', 29); + T('1', '1', 36); + T('22421402200021542042515102115130343415021040433015141', '71435842509809622557607232355007569617093', 6); + T('82a46ca7f2c27bifi76b123gg87f9ef0i3h6d', '88188580584290016425414330488192929012692460292', 19); + T('cwvsjk3p2hdtr4bpc6bjsc0d2br4l00a', '3879212286333054912615124824551633983865683141266', 34); + T('15g8jceb9g0402a30g48a8612', '21661444885578056193556763266422', 20); + T('25r', '2509', 34); + T('2288', '7328', 15); + T('15005456104534360056661132626255212535602123', '3748858381866343201840235184540881558', 7); + T('7lld', '96774', 23); + T('112a8a77b453749a7996396a419b826b48a67', '782118792606829649781720121593080718319', 12); + T('574b3345395446ab3a11a95127716a973b22b3', '47781483264575360443895323857628984548903', 12); + T('10ae515da0e8b84e1e20004268c3d939357e3', '2290518350084555998421706774896373302739288', 15); + T('a8g9b05eb591d3fg16eeb9940', '14045662689555135928086001793700', 18); + T('1fi8bk0164hkb0b5bi61c', '2894983804002405037438210044', 23); + T('4gg7ww428kg970rxm51xcpiergn2utyn', '7841808545231879066984143936817455941346408116527', 36); + T('10054403136531256244562420403101530', '55009081778931754371153954089', 7); + T('312202102122120111132101013111300030323012301121312222012320000011', '4639388111541284305176062560415061344261', 4); + T('oo6wsed7h44idu7atc3eo5tebrp2bhdp6ok', '105381163294233046110304801048710957853696204404133202', 33); + T('3skbj1l78pv7i', '4490496804454726898', 32); + T('7975t25qbm14rr76', '275342913943535946165478', 32); + T('8jdml6mamk5l02a0b5nh4c9l14jhd07f3', '16642540390807604641675529615883877432380047157', 26); + T('100000110100001011111111101000110001111011011011101111101001100001001000011010001111001111001110000100110001011000010111101001110111', '2791627903658830465325077767573756541559', 2); + T('4cuiv1vijcw8byyvt91x1yn2bk3', '126777211099543650145997525057934330115587', 36); + T('1pb0kr2su503t7vfb5r0gare3o3k', '78053133845809892830118124009511471669364', 32); + T('11011110001000000010111111000000000100001001000010010101111100110101100100011011011001010100011101000101100001110000001001010011000100101010101010011', '619196159474080554644191332764720245730596179', 2); + T('1oj50', '891774', 26); + T('6636451124501446361531', '3875098321019619443', 7); + T('h6n02q8h3m', '250019766843768', 29); + T('451ede25d199cae895e992118130', '246702729069387709295316838306020', 15); + T('gc2c4lrbids9dvjt', '618717800012065820573309', 32); + T('o0n5g9lnkc32u4', '1948944931869490633248', 34); + T('ug5duads9tjl9t', '1125447236183519778109', 32); + T('6dn54ifdh0j8p9468dkoc33h3hc3c5cl5g11d1', '594648027170439572811905861146439260035602841911119099', 27); + T('gm5aek', '134776292', 24); + T('1', '1', 30); + T('0', '0', 27); + T('43', '143', 35); + T('lm98d', '9989473', 26); + T('24ca595ac7a9bgbcc7f4g861afc1chf7814a11ae0', '367456433495521438883185813377166029060518959081788', 18); + T('14660314530440163216346260243553125625015065133254552566', '51735077687650277604403201198662868237459984412', 7); + T('510a75b6953b2128b51', '571468653948337229839', 13); + T('2j8', '1394', 22); + T('11111111100100100000010101000110100110011111111000001001001010000111010110011011100001101011011', '39547602794153772246742451035', 2); + T('13d11h1lm539', '1746352709861265', 24); + T('2j3h0n5lj1ldlgm2jhd3o28nl7mofb35q', '17234505762002327507626042985478124525535819504', 27); + T('84158ebbagfd4fc814e8bb2l53gf2ag', '153343999117336060540862649308280733262460', 22); + T('7g909e76cdeb0321bhi9c21dcgfeacd2i6e3f7806', '11116275700830490343102710037586110243685725571804348', 19); + T('ib264o56m1n', '3790551468077834', 27); + T('3qe', '4366', 34); + T('5p', '200', 35); + T('3130233402005135513010143100020201', '155289768167720086146598249', 6); + T('1001001001110110001', '299953', 2); + T('16fomoru8scj8qi6', '45444374663984422611526', 32); + T('1002212012012122202112020220212002111111020202102122110010021100022', '34175452783248538685342138607785', 3); + T('27a50c6be781d23639d548c74668abe9e94be3ce22', '4167412892319939194840854425277338372039201983057', 15); + T('88a3780da4dbdd289baa01a811bc6517a', '40906542215241584358490557843916640488', 14); + T('gqbold9ds9didvt57hbb8jf', '21838794139140707774087244457288303', 32); + T('10b', '452', 21); + T('ihk', '13601', 27); + T('26252453157610233727260203', '1937319065301154692119358', 9); + T('aa9895782cb87a165276477c', '452046848974584515631452537', 13); + T('798233d41bd4d8570a55253c47760375b8ad22', '19604340805420393759398902048029147177522210', 14); + T('2fiq2gfu', '129071446540', 34); + T('1400512', '185131', 7); + T('1b244a9ba6227462680836922985195', '43502077484194496821773474699946943', 14); + T('412011433400334101043320401431213340122122234301220044344341432211331132312', '22669905856359456126837986263860586893462278431114707', 5); + T('99jlbgcbm8l', '895669350576471', 25); + T('2160778865276', '617500413969', 9); + T('4619a48750a8a1388433820', '371293698754379801044722', 11); + T('23b2a23b8ab1171549b81a523924944bba2b9451b979750a1', '14712614649874115297808648378077142784658853979174201', 12); + T('1c9aa', '56586', 13); + T('5accejj99akk1ah', '34098874640361347185', 22); + T('20013312310323123', '8721747675', 4); + T('7f841c807c4a4e9eb32eeg4963ai78888ff', '234637522959956493197663705686912406112573938', 19); + T('32f102da079f77cac41', '15035262184397547023425', 16); + T('1o', '56', 32); + T('15567437201441347355454544146426241554605511544026607651', '80286234176563111847045853769570753921004267573161', 8); + T('hjn18i8mqcbprs06jgfr5q3oo9bck', '1565631049924090657943692422085174312230242', 29); + T('6j62l6sn11', '305449793742193', 33); + T('1a92b1371017319959b372ab60ba2294679b45215', '27889304114434174647327312538513856310180593', 12); + T('5839272560037068796091105463956029620211063950', '419776982872392388414731107567819482106312014038', 11); + T('6', '6', 20); + T('2c880d56k3a7li582622b5imekd0b', '341027304272170248894809973045388788348', 23); + T('10100100101101011011010101000101001101001100101010110111110000100000101010011110010110001001001101000010001110110011110000111100010001001001101011010010', '3673151219411926241066396539539895097311402706', 2); + T('111011100011111111000011011010110010010000111010100111001111001101110000', '4394919723391067681648', 2); + T('4aa5', '13081', 14); + T('2opifo52o8q32g8maod8l58md725mbrbd23', '46158568616582718889447630456685730068082636613195', 28); + T('418j32fja719d73155', '53377690823861098744505', 20); + T('20144632610464350', '67599832991439', 7); + T('2kh493991i0g7khbf2f7kck4i96e9fh933', '587461139271908422337268964350415471317511729', 22); + T('4a2n9f06i8b3tbik3ge2hl5jb39mom1hrcp', '723192498587288435855105790107635409475143071893685', 30); + T('12113303030120222311111003', '1793522922116419', 4); + T('24077', '16108', 9); + T('4pjpv', '6350789', 34); + T('322311323221313230132232233002003010013223213212310021203233123120002312231230', '83983092135187210616217933394923456110667721580', 4); + T('29f4d7g5ch1mjb7h51f7jcfeg45hibg', '612063586663379541382996507678741140541336', 24); + T('10pek1pldlia8p6oseke4p57cgqckj4g', '46807350154418933094997050205656695831893003408', 32); + T('e3cc8jmq4qfi72', '91829383300393248806', 28); + T('13c11i9545i088bddgk90lfe', '8722694663106063748286842646172', 22); + T('22a42a6856d282i', '24416804218738314558', 23); + T('5j5dvvf', '7207343895', 33); + T('21423087479741957663258638136686693560b0717', '4470867495087534207987102294285398093469949699', 12); + T('a440f8912c06198b', '11835733123122207115', 16); + T('7124732', '3795770', 9); + T('1mi6dae6p6n18p51j94pe7ac6dcngk94', '433566629754475119418916772536421104644424677', 27); + T('1f4792hbih0e5', '3987607350745668', 19); + T('1110011001100111011111001110111110', '15462167486', 2); + T('1eb01360e00290e5366a042b85', '500540389147064575524034196225', 15); + T('600196957607397725519151670801466183229598842', '39767779963727744076832805419657145468053323910', 11); + T('1pfswthxe5tqbubhjjshgvdkiwf4ryitg', '44414159361977485248499214227052721453325811694581', 35); + T('3a338ah6', '3159952098', 19); + T('1a41af5dge63cdb70149eagb60df978adc19d', '316909217417428222992238303166579153231020418', 17); + T('c008c78c61addc8e085ca3ff6e76fa13', '255257360887256236558111057213476239891', 16); + T('aigg730gb9gg5b1i9ggch147b34daf4222d', '330203157939216599297841920141628505752777778', 19); + T('21035126413112020231313', '8420857150186478861', 7); + T('21011110201101001010201', '74954636299', 3); + T('1043686460506176163', '1043686460506176163', 10); + T('33ob8s2ob4abipqpbu7oq2338r2ic6kq4s', '1075138754438632694426396913632774320113838381374220', 34); + T('2254120142306727111645063565', '5648689955684980442294133', 8); + T('4c65b28hg', '51641173186', 18); + T('189425b6', '62046426', 12); + T('202222000', '15282', 3); + T('2ix2460e7mc4yrfsyx16urp79', '29019140380746084875089897645108901004', 35); + T('10001001101001101101010110001101011101100100001010101100000010000100001100000010101001101100101101011100101101111000110110010010001001001101100100110110111101011000111000110100', '51501613866007552548575243188268697652335512286236212', 2); + T('72bai2lh5a5ige2c6h8j1pi7do6ph8po', '518863311245070128162706172824537578926308538', 26); + T('1gg4e12gmdd9g34kldbkff6g', '36045469172509506032689305574493', 23); + T('1d849l7924g24ge5k6k9nbgik8b6625j4', '228420120550953130629950010012173053917911308', 24); + T('7f2n5pcj', '317806874668', 33); + T('203252000343611312345016732574324517652170570536340103164002', '393097177469022242668976094291182082270851391919286274', 8); + T('10c509a15ej1c8h2ceei3dh46d3h2agd85j6j7d2', '566593718328820186671679871086974063112535421915062', 20); + T('0', '0', 35); + T('96463a781475552277b', '253758635463416758223', 12); + T('20101011102211012212200010200011010012111102122002', '508627374341025984624677', 3); + T('3n', '122', 33); + T('1332321215012153105302330', '7558638818512137102', 6); + T('d78e53g7ao', '260656990368624', 30); + T('10433235012112521331423540541', '6924859979187917170861', 6); + T('jregrnbedbqvdh2kqlmuqwtt7o18ua7m', '2351190601646006071521498616875161108543841169408', 33); + T('c6ae909740k7fbdhc61b4mied7bhia', '37961155295368021280681243879680158633940', 23); + T('1b04754391', '9903375901', 12); + T('448ccx0p3cjbx6hwiqa370ktmd3645', '1067333585305947578398968392489544974864772877', 34); + T('id', '535', 29); + T('3de2', '21962', 18); + T('1i87e93lld2hmb5of61481a1p', '37803177566866222246047503937156379', 27); + T('1d50bl1bg', '123317230093', 23); + T('ed4fbpym9a02o', '48576469025418884469', 35); + T('850ahc19dfc6cag09c3fe1a7', '615573849475122469837759021759', 18); + T('2924844413578201a144433a54311938093312874', '1284588798112331415097636284287592444342524', 11); + T('268spn0x9rkgrdn9mq', '386669665422099248737174821', 35); + T('5hk231k5bacd3b8f1', '8376132966290213466637', 21); + T('1p8og16j01fia6lc9r6k74336b', '2875139523028270878045249857146557219', 28); + T('esmq', '488154', 32); + T('5b9gb9b4', '56701257988', 27); + T('c9o3l82q12ep0gpa9', '986427541756225676608461', 27); + T('55388688a120a6849aa3', '1738783465109452015323', 12); + T('11649c762', '4668901218', 16); + T('1', '1', 25); + T('183c9j7k2e6bcdej9h', '41731318811749061211776', 21); + T('1101010000000101100111011110011110010', '113828412658', 2); + T('1103200032222010132222130123311033221023310310113', '103372423190590343441776856343', 4); + T('343', '938', 17); + T('340033799252741465289305518413058425050058', '340033799252741465289305518413058425050058', 10); + T('4503240112405112435055530202225400044402200153042', '108877380126556039702448219236071909458', 6); + T('22410502071700760126344737773405044556536263663106274741', '108249648375668138579864767958324372334698552719841', 8); + T('60471', '39754', 9); + T('jqvj', '712159', 33); + T('12b987ca3bc8c94588c3', '1788415352163649686935', 13); + T('1f4h9ih4568', '44931985848560', 22); + T('118g069313', '214821890121', 18); + T('2vlc0hrwcjqk5qh', '17671005276271615582217', 36); + T('1eaccg8b2', '12979996198', 17); + T('21629b2b0b4a2366b9163b76b5aa3799049393531705a11', '93332007302941381029153257858901257592873163524973', 12); + T('100202010011101022120020200002121112102200011001112000', '20987916954361515072077661', 3); + T('lf81l1k4di2h8', '2060202423101314474', 26); + T('11000010110111101110', '798190', 2); + T('35464780031172685830831886', '2594420148586517707211619', 9); + T('mjmbe1m', '13491665179', 29); + T('e1q8siod631g8jl8e96q3ndsua89fepgeaf', '7149422266506896025400459577722689166265236529840392', 31); + T('an8h5ufehm74gww4pwj33cwlq9nq1niww3k', '45609180326934639552795902886424593721591572949928264', 33); + T('1174957d27585ca327c392a177a2', '9779753057084979308662475538114', 14); + T('5qsfwtg879agqymabikny', '43877513087409382241114364600839', 35); + T('2202944b4c47910367ca8013', '89983147789156215799431229', 13); + T('448cniclj7j66205dnabj7jb2gc2m', '1850318014395914995109265267767209237318', 24); + T('444240441312131031044040211011202221', '14501598914208195910256561', 5); + T('1qe2prgrs1k', '2056183230623796', 32); + T('12311306121012324000412325560306516', '73082607480360333686565698116', 7); + T('39c4641c46b27b205a771ac', '12093715273566107607445694', 13); + T('1dhkkglpcr7ffd7wbebr9w6d30tegw', '153518783138820389818290476576072446336105598', 33); + T('9ao457cql7l2pajdjvbb', '1167566332972029419259805429445', 34); + T('bne906ag9f7ibi0o2icoochhqi49linbfe4ko3', '1083840512907384568109778905809324323571508451103168731', 27); + T('27gkfmsss', '1131180526362', 29); + T('1kl14jp0ck6e6b874a9', '53073824937278508675447573', 26); + T('1qblmfnmbc', '15092289265620', 27); + T('291145005283226378a15', '1902201869880961210864', 11); + T('98a3165430386919708314a69668019301122aaa08a8a333a0', '10471562781280726876191243734075742375342072600357397', 11); + T('101001001111101100100111111000110000111010000', '22674826617296', 2); + T('11100101111101100010000001111110011001100101111111111100000001101001011000100101000011110010111100001111', '18219421810715473011424793407247', 2); + T('5012045354154511564663311145062010640462551253626443', '63280196142241745046302922172418725133921298', 7); + T('d5ce0d6e6egj51ac8c4', '8369782607667375206621824', 21); + T('6051440330403356333004250540', '401296487305318979784424', 7); + T('100110101000101100100110100100100100111110100000100010110001111100111100000011111001100110011111111010100100001100011000110110011111001100001011000111100001000', '441143871171700310794467845617284706136179969800', 2); + T('7b57878058a56a65', '122576051834583917', 12); + T('6497912562474778656b110a8103302a371071056', '94070129616506972086443616132039643483737602', 12); + T('gdjdxk185ppgrwkdfct', '101796127731034217658663835574', 35); + T('1178977c0a6405a2163234a6cb718024c74312422b4a', '890596335029491966141847230958764595731490655195', 13); + T('37088663068aa806731063a736661', '525351225612561927340747775978', 11); + T('5171612706118415272715060137148', '220427209875590734018941429974', 9); + T('3hml8b7kc1p4gm2hn74hhd6o7d1ll62', '31952120714648933153539685420949059951111594', 27); + T('9je255g', '852236590', 21); + T('2044434433132300230220130303341220144143144304323233423021', '15263322484434834405567371553028493264136', 5); + T('9eeeg985656bcfgb5133b5eh5e4a1', '1380061401736935644143449342352895269', 18); + T('15pn91facaj7o', '117436627306186186', 26); + T('6h45h4b', '584858264', 21); + T('b5b5aa526c4894a5b93355d135eg', '18900713795310413451403180379983325', 17); + T('5572f75ca5f099eda', '98516089885791198938', 16); + T('323603301632153011406266531651206501610', '437183320525590537223414014997897', 7); + T('1a2d35e82eadaid548h6b7c1db', '142758553123601399605862815621287', 19); + T('871', '1444', 13); + T('7dabco9lff9ngn317m0', '109673961094915000469942425', 25); + T('43092b9541b0079386931b2b36', '4059444959588416633123556058', 12); + T('1boc7bh0olho8m4n02h6d78ih4a9k1', '465799410987253426014508176316492036379788', 27); + T('6mg8915i', '116919428053', 29); + T('822d188gc6c2d8bge4932b3bb7fb3672b5', '327157616726198043612671071851924507757009', 17); + T('101jomm7el07sqf4rhm', '388135427144045277146082832', 30); + T('1ajadffaqbk4nkho11fflbkdml27', '619452202075986493017080634500652444361', 27); + T('159b420c8d4a7477ad5dd8a54cb565e0', '3959681364275325746089585349463518460', 15); + T('7f243fd29c8ib9d39ebad', '293037388819465175740976997', 19); + T('2859938585818baa4ba73924b97823a353b8a653739761', '9900376965008691067376961107831442209219200169977', 12); + T('12464266411210', '134354404534', 7); + T('fru1j0vpcftehqooiiv56bi27', '21098962974195274149815095570253334599', 32); + T('daai9e9i2b18agdb4210fj6038h7', '78621573343485599235200018571738231605', 23); + T('ffin61o2298eh', '931637737813427242', 25); + T('116210618', '51143498', 9); + T('m0iggpdj6lrcdl6o892l1ojt1d', '936545650234778704563539555026320618541', 32); + T('bld30f5', '2895750380', 25); + T('43516380211c6510c36c6ca2ba201cb6b78c', '4145070522657789681367338903946033748528', 13); + T('2frhlapipo1jm9', '26165355055652545639', 29); + T('eebihhhh8ic074d20c11', '29221406700141396291294443', 19); + T('702464247710160725611573536407615231642232', '74869132891027108059075932498363368602', 8); + T('6cddfjh43c091ck', '418124197863421976856', 26); + T('14dqq6n4bhh5dehlh6i7jok7j', '709417662539059692087600073605499945', 31); + T('1mc4o514q6g3icsfedhsm1cd20m', '1026878606225608766969967252663359647001', 31); + T('af', '175', 16); + T('2', '2', 9); + T('7b84b19108bb07591b3753a3311b03', '157757817132486011855402897961459', 12); + T('5g92l47cjl0n7ob932c9b9kokpi54p3', '15835098073858662949103316680483193845978405', 26); + T('111100111101101111000010110010101', '8182531477', 2); + T('c41a62e8bd1c7123c92220df', '60690961081480451125474894047', 16); + T('3111330202313102310311201221301101332333333333132102113330213203322221313023020', '305353951579153096643759644208233327052754219720', 4); + T('1e993o3ukos', '2194385828754565', 33); + T('5231203324201232502321202321', '5550302446432876259113', 6); + T('c531016e18898347ce', '1216498610182453367144', 15); + T('vrd88', '42502932', 34); + T('167233640813776470607127062215056', '6030750934980643551934540195509', 9); + T('80911866', '80911866', 10); + T('38', '92', 28); + T('56966em0jce2e135odie7c488o', '18942697033508769047921405112915875394', 29); + T('1ufv6t7m2qwda3im46wrvi63e4ee8eqe8', '19283761638158770938814497486670870733658376776828', 34); + T('7j0nqi4dr3odrdrrif730bq2ijhskf', '19658598320579357039141641643837077460209654', 29); + T('4f632ga542fd4c0ai8065fg2407b08d16b024g', '990186552886364408955753851129882315763213446878', 19); + T('22211001121012112202021220001202200100222', '35731418813631116117', 3); + T('5723918bdb28978d197bb99c96b78bc', '133387033950880025293297852372942078', 14); + T('f', '15', 21); + T('24k170e', '191770628', 21); + T('113380473156115346053712477828402262444530753651827', '594483726000523306774625214331012707298970579092', 9); + T('0', '0', 35); + T('5nljfrvan0nc8g9ia22uc8b', '7450754896579357424627414612259083', 32); + T('chgj01cdbafh5fj55bj83ia', '540745421736410580973158305570', 20); + T('14301524', '7087036', 9); + T('15i804kd9fjh42if69i0dlag2fied3245fh92fl', '1300847036023294222835276240403460067139304231007087', 22); + T('3f', '75', 20); + T('1cruxw1necvlj49oqtnxu7k9', '445548487845292717307860766038288034', 35); + T('moke3taeim7qnhjto11o', '4935873699081075292509565948409', 35); + T('765e3e05ca0c4b853679e80667d71bb51ec118c87c1', '2767923543808337676781898227256098432891809077954497', 16); + T('fga', '6330', 20); + T('7a172', '634187', 17); + T('dfwq2av9tp2g61n9pvjyo9mmvg6q', '14080845047776418964900559740542764294594994', 36); + T('23103303120101130120', '777177339672', 4); + T('4p4eq0464bo6ocqh', '14571181667815526352455', 27); + T('15m58b273dl', '79058625110541', 24); + T('e7d2kg93kg66eh5ic6fc0h93', '107753610293001126855936969374669', 22); + T('4544550314555030245131500001423553314', '51236655573337292293249788910', 6); + T('44123343424431144042133134403210100301', '353761873626317393756721951', 5); + T('14554315330320440350550251242124214503531444', '5290305465869465535101508124318804', 6); + T('3j3015puqer2', '180865604805106619', 33); + T('76706d53152137383626628b70d4ccc6c122344', '266602455093722056456430772081609665962697976', 14); + T('13pif992g4658ch6j8ahgogpi60lp', '4800018957123587648437240307149790316011', 26); + T('234a67c65a94c47', '8895403611426989', 13); + T('gcikbqs4jjkr5q0aorqboa2c9obfk4s20e', '766678025667202009433846434100440635178484404979726', 32); + T('643b91b0289fe98c02b3f790ed41085ba228ba4c', '572227512274253374435718937361849836268824345164', 16); + T('3k20g', '3803152', 32); + T('1312c4085', '1801106837', 14); + T('8emmcmbp542l8l', '21269151478085207497', 26); + T('1ic7ll37iije93k6b7m982dmdk8', '458805542302884920114146210861237128', 23); + T('tmpt2qp4v10vic65b', '58727236794092214086891669', 33); + T('6khk8ll2h7b40553', '1840683580393299686805', 23); + T('63', '147', 24); + T('202110021331103212003022032301', '618162844202738609', 4); + T('721b60be132a6819c03d84861d836c15e0758a62e', '789621417226946084682961249654900691281833580769', 15); + T('14', '16', 12); + T('1jn', '2003', 36); + T('20321034124130112312321020314230234', '1244390864496847188820694', 5); + T('i32gde23mq7nfbl6cgfoqlf9n5kqfi', '16807844582918365513594352707748847318383958', 28); + T('8da1c90b5b00bc0b805b125d953776d42876b25', '320741753186531118132849958969232281983489485', 14); + T('111101', '61', 2); + T('2gjmehabca7mmbjef0i30kcf', '5000975177520593103948512648993183', 28); + T('148534683843', '409063381147', 11); + T('10425635163828754608715', '1036960431474820128377', 9); + T('98e015d5a8d7ad', '18674876444372488', 15); + T('3489180081680194594039', '3489180081680194594039', 10); + T('e68c', '152164', 22); + T('hn1d16jak', '1977064226756', 24); + T('cfeed95dfij9afgf8g5j7h4b8be3i8d19', '5491903449965714818143888948680411788549229', 20); + T('1403243122140432204', '6975903061554', 5); + T('4121443420114', '1048810659', 5); + T('4o86g3', '99219965', 29); + T('11101010000101100100100000011100101111100011001011010011001011011100110100011100000010011111010110010000001001111011', '75965586951977951466854946826683003', 2); + T('418b1a918265a8452c7897c64966', '4924364715692255096187414788005', 13); + T('8ln1hgc9n8045k', '7813942802430495116', 24); + T('pr2lln', '867260087', 32); + T('1fcn793f1gsn7isrq2bs', '32443969807482433165938998580', 31); + T('71215302120100471557063', '528279067564974726707', 8); + T('279dr', '2633658', 33); + T('1k', '41', 21); + T('g3c', '7822', 22); + T('52unr90smo2unpsfaro4', '110445292972077630039222055408', 31); + T('120212330303033103100222', '108229740540970', 4); + T('5a42729b56b5327b5695', '1872989024756192416913', 12); + T('3443452305237156410051107403', '8630515683508240645394179', 8); + T('6d0e24f917cia4376dih37450h', '622334481357904649813944940629175', 19); + T('70r16fpnf8fpach4bni1nhb9frlo1', '233162017149374796044403481642635719993649', 28); + T('9g5b4c6fa8i5i1ba54chdad2h2b7diigeg', '84300792214158192051555299617411649772630696', 20); + T('27kgj0c34g3p97i2jjfp1oaool62jnh9', '168212362913311220690364503904168199040526871', 26); + T('10045661289', '10045661289', 10); + T('568101442316503108', '96174458293818842', 9); + T('12', '18', 16); + T('10lg1mffqbgb6n', '4172603685173290148', 27); + T('22h08f1j2aib4a56fghcija206753id7c3gbh0b3d', '23557638256623360938264238120003382902511416101924473', 20); + T('6', '6', 9); + T('3e1fhfh10', '138834297903', 21); + T('540', '3484', 26); + T('1122030011212013021130', '6197731684956', 4); + T('3d6rdvev3i8smk56mqkf176sjqoru', '4756953400164035672859471330837978142303102', 32); + T('28ea59cbb990457243147551fc12145', '3399121160718415003848736585359106373', 16); + T('1750617616706657707114034617432306132573321272245040042711', '5850571219466548068012306893496891664635414265742793', 8); + T('bk0ppwbbjolo9ukpeepe', '1452584125569882865183540835864', 34); + T('a2i1kcki8i6afl0318gbi0c', '3458077475262704937982766014556', 22); + T('105431041122515350205233534011145020140402052220000', '937497849037121623452661458994336348896', 6); + T('17000472', '17000472', 10); + T('500502757838694ab1678942205536b80267164a6b403ca17', '1473835956263371576873030907640706150910262129499406441', 13); + T('316eee54be4c00b9a96a0c19e19a40a046db2508d55', '77069585133800346034958196432644102010796362311255', 15); + T('cao9u61rkkfk0h45aoofof39ig18q4', '219321826067019903637853646593680142271461817', 31); + T('1b21ce892bcdaecb887bbdd4b51', '6601064768543115590908820764801', 15); + T('1c0bkk3ideb7id68ak', '47247687823294270861205', 21); + T('bf7mgo6n4', '32224267177888', 36); + T('4delmbr5pglab2c4rpnike', '11012871448891715561043207133854', 28); + T('747373012741076272574334113131066623327', '158199639324663999178714767706236631', 8); + T('1casd7p3p3a9d2jksh7b7p427', '867620324388850207003677149313386558', 31); + T('73c4c569b6b25573bc331aa883a4745a6db34b', '18565516288910449123169494151650103860788871', 14); + T('84444108680656169877651363', '84444108680656169877651363', 10); + T('1bi8n3f3if4k6ncf420he5a9n3b7c95hah8fad', '1742086738914014097772398313856731491439635861267133', 24); + T('ld12m8430bm8bfl35bbhjn', '2078522121514721270837067229727', 24); + T('1aij577mdjag5b', '741129866732072277', 23); + T('e06e5by0huf6wr78l2s77qqlrtgjt3qyi2g', '441167684426814513681312893751351585030041477675499261', 35); + T('nc25kj9f3', '3583308896628', 25); + T('2774470632043051240455350472340', '121680175780473175097234491455', 9); + T('150115341123121222041335341030534511303335504141455340005003403044', '699070363336208570930399209135482486908535252991204', 6); + T('10320123211204231240044311303042001210140422412120222012442011240122', '77011705597734437930150474763682977663080180662', 5); + T('2ep2nubk6u7u95', '60499856765543229904', 31); + T('27101471413489956474516936', '27101471413489956474516936', 10); + T('205512131', '3633175', 6); + T('1b5b00b1026b90354cc9b9905c931bc93c8b508b45515', '19401633096691683512551170208360848886053437418114', 13); + T('3045540', '146436', 6); + T('63ckmgig4kid768l9dj7fgdqd1nnp902dp3oc', '20723302228019764418200643552099428622221940273775183', 27); + T('d8bb2364a8db15b1412576b6c124a1b49583', '177430658346563064062252894201653646474719', 14); + T('8f0bbcioj1fe8mdk7ki8l4aonjk377g0gig83f', '45531903854689224866634237825158981669263098308067590', 25); + T('2748709529c232f08g85dbac64f8d4665g03d', '480051529652914850587360519926185710690595373', 17); + T('ak4tcr8j80noaam9sg', '240165757095163574519326269', 31); + T('332167b6ee686ch36ga', '4577445810401469572747674', 22); + T('93', '210', 23); + T('1101012110122111102121002100221121122220112000122001210201100111212221000220201121202102110222221000021', '6391116759661421858380546864255293273592806783454', 3); + T('3rx8d41dc8nzpg3buihq9k1005', '3051780930874321900947488047344884444741', 36); + T('16bl61jc5cdhm9947ga', '4163579690872185402607781', 23); + T('39mi77', '110840039', 32); + T('8149468040947619516457530899555331641620787260864253', '8149468040947619516457530899555331641620787260864253', 10); + T('3if6j38s2cgak3qg4', '910596518615709492487577', 29); + T('240646541755015151746375314736543447343444475552143', '3586530035933343022858608741776409267984061539', 8); + T('2lqj09278ea7ag2q54m', '579985127245834611445154934', 29); + T('b2rggmqii5jb0odp7', '1585296695989924711356563', 28); + T('2', '2', 21); + T('2bdie', '592342', 22); + T('thj2denh', '647086684307', 30); + T('10hg5iimal1m', '984702139840031', 23); + T('11111010111100001001110010100011011111111011001010000110011000010101110010100101110100110110011010000011110011101110011100011101010000011001001010000001011100100', '2865227033411954606371792440103294708104730837732', 2); + T('12f6rr7mgeop2rtanem1', '12594149153851802918636434261', 30); + T('6204661505100123631344312032141634623322531530342234621245631', '3200663074421335398837744308850619093123113632613932', 7); + T('d02e51b2006c9aba507ee8078944483', '2495283013998564778170214002942629523', 15); + T('6c8461h11c67j84', '10847089588583423764', 20); + T('5jmek310gbmfldaemli', '19039589015004936268391471', 23); + T('2bfgmh1', '371275868', 23); + T('i1kicf7408ja', '43089829171489860', 25); + T('kmg9vehm5uc5j', '49306200853105671213', 34); + T('3', '3', 21); + T('122222101101011012330310012021100322300021121331', '33004057764112427046850827901', 4); + T('f54kak7e4cbomlcj74q1gjj8ima', '249496516505770436608106844531244644676', 27); + T('6c0906a1a0571698c729481b4214', '8260906699678257716913660927911', 13); + T('47565283104081157633720612', '3480763053212520433373009', 9); + T('123301111223321011010131302322013313330310033133', '34378733037297577486842020831', 4); + T('emi9p2agp5of4o6qj050q5embro4fkk7c8f', '236538829295639541371770226117340564376039956754927', 28); + T('a6617a383d3630869c8c5b94', '2401408811388914735909033670', 14); + T('h9hi3hfbf11ml9bl44ajk8c1eedc7hi20b559', '847811630497490086928088517877737870085926386752961', 24); + T('6t2fmrdufe6cj0ttsf6cm', '4660945383740971389474445619601', 31); + T('1c149ecb87796c6a9116eaa5', '8690508679745247747029527205', 16); + T('50511214103014512415251153355121045141321231325212202024140', '6984297965964263483810433193107562554690235452', 6); + T('713410438960822980645a5993', '771298716488835296229308646', 11); + T('21111003233203000222133110131110220102003011312023311323112200111033333', '3250695581456803692625152484104902348461055', 4); + T('3', '3', 18); + T('11g2el2cd7ijmimdmj2', '3484028926865476565217908', 23); + T('w1jn1pjy', '2061728269824', 35); + T('fl9eiljddneo', '58071616717298104', 26); + T('1012210331013523255213150253013335240310251413254533540213', '235028416077302984568423163498848184230924465', 6); + T('21345516652054242646357330536124', '21600249893595093431386029140', 8); + T('3516566ad8390f97fcah6167f6h3fcbhib', '5164130207340834274229128435944714360103739', 19); + T('1celd6bb2d65i05m2gjn1bi9b7b82of', '1304319448692751655608515138766232006376865', 25); + T('3d24cfd5a3d86612', '4405874851959039506', 16); + T('437hoia6g4', '190186408481293', 33); + T('4kt50of2od', '123618635333176', 31); + T('fss67o7io263', '572949178706823363', 32); + T('jecjjk7f97a3ej77hb2cf73kihe935ji', '8105008394473920878854794247558553077032448', 22); + T('1bnorre7hl4tb7q9qpjfm25ksob', '4105331027918683625727596478007911896039', 33); + T('du5i8vtbhj5dtwskns1gtgjx09uqdrx1', '10184138846438586443859407370042237810094945982856', 35); + T('1210020000002100011101212222100120101112102000011112211211002222221121212110010112110212011100', '420882836067947584715454206106333480694711890', 3); + T('35194576c4c38370b', '2258945736842956744', 13); + T('c75b132g', '5101050905', 17); + T('c921ss00d3csg', '58052666456572596352', 36); + T('2jgajk9kj56c4bdh3j6', '1856193611885092871748090', 21); + T('112020', '1416', 4); + T('620i04ijh105p36ph5m', '179174918213489533732778468', 26); + T('1kxvl05dwu06qqr79fhiseddrvm', '10649257859457410016272202703683336103832', 34); + T('152445052135131354510404240340301115311014543', '33109388948224325760981254841111039', 6); + T('55', '85', 16); + T('1ghckb1ch96ad55h8ik0b21e0lgmad2gaaf', '143513343624647251275600679456062100442672338815', 24); + T('3ii52g', '9899396', 19); + T('2b6ul', '2464725', 32); + T('7btk3xhm7s16wgi2e', '23436808404419636027088410', 34); + T('8b656c', '3298632', 13); + T('1201110111012211112100011211101011010001200020110211010110200221021211012212012022210220112110122', '10949138520677755464489045550877099321077567229', 3); + T('1100', '12', 2); + T('3052066107', '413690951', 8); + T('e7fbo4m38pc', '2017574092397070', 26); + T('40wsrr8g88ltx2qa7', '12846856175435338795665091', 34); + T('4a13cb301dcad5701812', '28213021023084856900552', 14); + T('33f50po', '4009779435', 33); + T('433b40b7', '266911483', 13); + T('8a555026628970838a79424521', '970195127281423746562878756', 11); + T('4e01f7de0hcgjl8g6', '13962247025122105118382', 22); + T('1jeo2h254hk0b9mldg', '1038391416567657581997841', 25); + T('e46ch8078971g1hhf9f1b97531df2b929fgd3c938', '2314731369176522523922328092957556423672080265360978', 18); + T('242717160430', '1747072738404', 12); + T('121211122110102210121020011202002211101012121011221122211112212212221221022112021110222020012', '146968138778253529694918992051477705186343198', 3); + T('2f2ajhrj3l7q46177onqegts', '409232179316426518796201876801844902', 34); + T('3fkkeg', '61306072', 28); + T('22343414021421424023041441331434124003402212320222104332421301224130332311232', '338574476822007917824757676170869262799211929767072692', 5); + T('15058101388443184451253136358', '818332960438094029477243766', 9); + T('114c1i96cjm8k9k0k63c5jil41bjfh4789dh', '481396998104028267082829096262079902077941433867', 23); + T('92dac144110424d4c77d2b0c84cd321c67', '611833115355492218664994981758095135811', 14); + T('5a6e26e2de56di3a08', '72309336910701228508008', 20); + T('123791225460336062189914aa9098058a41a4989a27944', '972171175105408063075115872561973013135356652374', 11); + T('1kj04p42grlk3ke6gehp1727plbfijfm4h', '991737689151806718971626022815597324840056300833', 28); + T('2nkf524l41ld8plr6h', '11380730654120331785946409', 28); + T('23335225', '728225', 6); + T('k26ddnn863h2b98l3ai3d85h65m7d493fp', '993176059355328275357598675656866581607010932371', 26); + T('4i', '122', 26); + T('3n', '98', 25); + T('848h21d7869hfg9g8f16', '16292644969781732195571684', 19); + T('c05b090d0d716f41de31bh', '8581554053841462934818166374', 19); + T('2324501355', '25979975', 6); + T('116', '78', 8); + T('a55096037a79274691', '5305434806751713910', 11); + T('a8309vwwidpnc', '17087840760045903288', 33); + T('bi403hqq3bhholr5k666knagopj', '1223933313842546154543619577505005775473', 29); + T('2c6', '2876', 35); + T('e5jb479g3h7b4c8idd244b3al86g1', '552313164311562243318741691899753694921', 22); + T('388ehbf9a4ibk1d70nm6l3kg3e4hi5gn57', '11797601925594328234833479927518591099616355391', 24); + T('8udnnwc', '16302304807', 35); + T('29ul982l0le66', '1829153838816649769', 31); + T('0', '0', 18); + T('1000000110001111010010110000101010101011101111101011011101000000000101010100011100', '2447314272063451666863388', 2); + T('19escb3098ff1ibb', '11460919535170071665494', 29); + T('144142131212402102322221414212012024144131342412100', '175428218095062761572388134603091525', 5); + T('12b9a0eiko', '5938407034584', 26); + T('26n3f9pfb18b0l7f4eebh59po5', '536292074201521875899112083004836625', 26); + T('p6i0aesfjm18oo5', '7506892679720214826271', 29); + T('29674bcptat7dm06j7f5o5psi90', '1369393655999563288033729621327624087757', 31); + T('14ekpb14sjd5kjacq3qsgpndjkf89rd4s6khi', '172557940720326178657618843389705196986384318987060528', 30); + T('jhh95ebg93j58f2aedg2h8337gjiaa99d34d7189', '10936655689667291351153903966134856902763255246936569', 20); + T('149819381691633a23a48', '971554154257673586069', 11); + T('2o8g1jammj87cep0', '8569512661345976338857', 27); + T('odoq', '877463', 33); + T('rm4rnpim570475dkvnu2nn', '2141999355713822778715273015702793', 33); + T('1ac69832157b88926', '1226565762593354124', 13); + T('dl6nilan5q', '199215636869702', 29); + T('243104323302040443431304423423442241042131', '133218548417027778287104627791', 5); + T('ibgad688n1tt1no901c2kan51np67bk3or08', '289608891570140335427409811203476440142828467327116217', 31); + T('244311300143314014024304440302004302233424031234444422441312430300100102', '126466804626308277778897937260691523506062725784402', 5); + T('213248823315264041320', '26159069159933260464', 9); + T('1aebpqb5gfrar0', '72444883332647710566', 33); + T('0', '0', 2); + T('c45', '5901', 22); + T('2b1dc5d2236fc61848eb80e4032e842131c7ea1edd0', '1008232683040405259975519873135905613349630326730192', 16); + T('1101000010010001111110110001011000000001101111000111011111000110', '15029069503449036742', 2); + T('206dj8sanq7es6sb491g9pjc19c57o1fpi1g', '3066391464081196310306031655376750037586720973723086', 29); + T('92', '209', 23); + T('12478802aa0a687639b08595396b', '164695396078375004356316605091', 12); + T('23eh13lemi', '16251531039963', 27); + T('c50d1e2', '577020863', 19); + T('coc4ouoeqjjltmun2t95q8d3emx', '177591866017908630546079893678723856610953', 35); + T('20000011000210202100201102121111212201202102200222111121011100202102120120010211121221100111201010110120021', '752112721711477552473490297488694750786078293851581', 3); + T('4e1ae4430cbaa1e317a76a2247d6', '280724852947932121003515360229026', 15); + T('31341304005033501220015003320215500333312434105521550120133031533', '207103120854860196428042222092939291401063326967057', 6); + T('0', '0', 5); + T('2194', '3712', 12); + T('aac7bc27dg81559gdbgbgd472938b54031g2bce9', '10329879133439956684984427194752281557369149598185', 17); + T('1yu1qd5butqh93n5t9f268wi', '651203452267786771549026926235644438', 35); + T('6ed6h1hbb5k9i5ai5h8387f694193', '70471388027526307133742046232328939096', 21); + T('5em6875eptkhs', '12960542504353252646', 34); + T('9', '9', 18); + T('da', '205', 15); + T('elle1baj3dg432c7icc775560h2eji272k87jb8', '15421675663335715158214679544236080147103750752169230', 22); + T('1001012012202221220211011202222102222221111212', '3084861462391318124129', 3); + T('3173', '4194', 11); + T('1c232a352526b255a0', '16750443967049089622', 13); + T('1h3s1irr2s6', '669313434447102', 29); + T('4bcfgl', '125047759', 31); + T('a132a469136450985a5397a768261a9304a71924a1', '50372232119853962785587827398768698622013630', 11); + T('3a887gffeh1h50g3408d1fbhbgh4f5c7he5ag', '5544963555766448467377477277242334965699182968', 18); + T('11012331313202110222120203021021211010131232210', '6324455456594725514532477860', 4); + T('1279423', '2208638', 11); + T('788ckp2qh', '2063972254859', 27); + T('5775521126167057826022666', '468376935266933192169177', 9); + T('snf3hoep3bqgon6dipu50vt5h', '38193381830725709155237943160568018097', 32); + T('giflcil6n936fo', '405257343426048644637', 31); + T('9hml5pj8b0pfdjgdob06748', '130505791364330545697626575212348', 26); + T('81ebe6m2cd6lgi9j0ci98', '13850919497461336125687141375', 23); + T('nn70fao', '5842587774', 25); + T('2041331', '33966', 5); + T('6te5to0lfrkbabtrd41c8ed0ee92e5p', '3826937530476055398947144233230431055942456846', 31); + T('3050340627050765676451357427033162550', '999186955807785473462332939887976', 8); + T('22', '14', 6); + T('21a1g99c3ecd1ef4a25i5j390m9', '523989361127969369779528855785778858', 23); + T('bpk', '11366', 31); + T('1000100101100110011011000000101101001110011', '4721031010931', 2); + T('ff7d64fc8fjaahccid9d5', '4376819508586761049622784008', 21); + T('14h', '638', 23); + T('3591a1d0aaaa14514d8a0a8826ee', '1086505871907198290436180679337710', 16); + T('a0i75f', '605510835', 36); + T('3001102543', '30288159', 6); + T('1233', '111', 4); + T('172013616177746634055145614015', '295033519224308286956705805', 8); + T('24431111223333024222441130311332234341', '217260336465598947913555596', 5); + T('61871645566813861858843771', '4465139885288479008513037', 9); + T('2j99a2o6ig6kaenpr8ccc213o21ih', '236072821902099878272860191254755048167320', 29); + T('20c82rj842r3sl5pngg1m30s1ns9lenblg2q2', '302235546226118472645257056192337633007044068331744582', 30); + T('3bsnls', '113139388', 32); + T('5ge5b00f1', '219154999267', 21); + T('67542hgdflha6i6kgebk306l8je3i29j71ifad', '295779061503259490861711170029814187601403466252005', 22); + T('2ci8om31pwctteuy619olu06813', '68305183746720942432677368181624371607079', 36); + T('uj1f', '1201133', 34); + T('70dd4ece07c4cadh88eg571ee00671fh299ff', '10902617491709320295309665615607760573150022665', 18); + T('211133412100341030430344024122400212340404224043414124314044343', '48876580902143767369888221969372524247409348', 5); + T('g8eg08ah1', '279586301292', 19); + T('11830geefc83b4b495f02', '40418107783678577959278312', 19); + T('g637b29bf9a', '32991498472403', 17); + T('4f', '127', 28); + T('60ahgkhg', '20498279068', 23); + T('807dj3ia477k6540b2', '531044090253007204514148', 22); + T('glo1dnold5a6fm1nnnbdfb0mrnjh2obi0nr', '2789545609120026862639750879216157236162178740596717', 30); + T('20551660343300260022603032344543556365661', '13481349525083560101951990618981076', 7); + T('11111000100111111001100001100100010001100110001101000110101001111111011011101010110110110101000100100101001100010011010110100100000101010010011100111000011100111010000000110011', '93021064714003304999209676659750808550526701882548275', 2); + T('5ed', '1696', 17); + T('21231203102002032200322312100032102333310033312230121202021202211020', '52875735012335675083325403253481232804168', 4); + T('4a9g6d3285a0f71', '14592320917794115609', 21); + T('2rkjar7bcgfjapl95hikel9bhpd1q', '261692392820668064199561442410427511575031', 29); + T('v', '31', 36); + T('870l0talhqlbocuut87rmnht', '164639756154616554672312658123494939', 31); + T('166gg5cd', '829405561', 18); + T('111111011110010111011101011101101101000100110001011011111001', '1143454535228004089', 2); + T('7g335jhjiaeef11cdg9cigbd6cl7g8mk14', '6661914066616801000688433796989649066873498685', 23); + T('729c210a63g9a0b87hb236e1e9i7095h3fi5a', '77328303793071910139493127832503020470265247731', 19); + T('111110101010110100000011111001001010111110', '4306578150078', 2); + T('270fl2fj7g06jh4bfebb7ad', '792003659981720720802552797405', 22); + T('123240341121241110', '1176945883905', 5); + T('609af0552gf9977067f10321ggb5067705e0gfa9c', '99658853369916214404971432082520573489936957319371', 17); + T('3di3edkai068i8g0850d5dbj7b3', '914473354161724934676796320329532991', 23); + T('60072304104', '20955430219', 9); + T('9a3lpoi5h902hn8bodq', '3617529642401747033698699016', 30); + T('283k0224f93f440chhidef1g7a66g875', '232905975079915676784494113568223597432899', 21); + T('43010013142634444066025411', '5942944657464057117855', 7); + T('7b1504d695414bc4b3367a537', '2597305124184055465506755532584', 17); + T('a03d', '58387', 18); + T('75746114788229445253810814861417162069', '75746114788229445253810814861417162069', 10); + T('1517a25680a7a55381b18994b3204a13035644130417cd4', '71951788846356115851868854226027470196598485964814850', 14); + T('ldxw2kod', '1675994868013', 36); + T('cb7427fibhh580al3cbjh31d28960i', '10658187116944300172792431427417942701250', 22); + T('g7dew', '19240946', 33); + T('8480d1184c0264903c99019ba79a520', '201522207278301179690568435464536016', 14); + T('13233020022320110000133221210031013222033313331121202132', '2510595482396899974505895592040606', 4); + T('32mfbd43s65247pmjh4rc2okq8d5klii65l', '163041687824253430655263510014482606677780918948782', 29); + T('100026126125431453044406321032314335211606643345035545012516', '72661785003425012140588523563139272506535099051702', 7); + T('1f27p24anjbgrc', '15595560185780589258', 29); + T('1ks2s86798bq3049a0ssd4n03m5l3dihqg', '3129227003843513763551368915590401778246667625712', 29); + T('3', '3', 5); + T('3ba953957', '1716304531', 12); + T('124014322013143030122204204203124343100110121402423233030012244', '33894391020518795695192912235400479381094699', 5); + T('110000100010000111110110110111100110111001001001111000110', '109286979318617030', 2); + T('58166441445415768526440246567887125401', '1198377845109548748098572871264323582', 9); + T('cb5bgbickjp7a3nadiw', '26576898192662296489123461908', 33); + T('3b0ba610991', '530965728385', 13); + T('404413nqd9fiqpnkfj', '16007373449287050500285495', 28); + T('2121350320201502103345551021045003450201550321400113412420214551', '23539590020554430797855801628642485899381919626499', 6); + T('53mlbddfag758gptf8', '66187385842518934543061558', 30); + T('69gmek9m38ie3', '380697603731777228', 25); + T('2i2g0ifgij0i6hfi3g90', '37935881359797264481717506', 21); + T('ii0054mb', '195260028392', 27); + T('1fjfei7b2g5dee5agcg51246d8ah9ib', '1932164313553377614588544011374939339971', 20); + T('2e1aqjfd3fhk90mj491b49jed', '134908996318227926701481577799370629', 28); + T('5pr4od8gcehj7qkd2mdalo834k3ffmg2', '12728449099802910729307024798552491911885534266', 29); + T('2ekdpk4jcpq', '748235759126742', 28); + T('d50ccg6jc38jae', '2045130355749296249', 21); + T('3603gj7d46ngf8h94kl2020egbn8fmm31d', '11452231113764962902532730057716103944191773413', 24); + T('2e', '44', 15); + T('161654155547445343476406063530377171044513302703466', '2538635569062190223060841428161267358214358838', 8); + T('1cba2a2f26dfe80b4c05d5f5496b9', '9322511400054499645799889634629305', 16); + T('10000211001200211120211222122100112200000112110102100102002212002120220100000121020111111111', '26448038821401714118351547701564166386304908', 3); + T('100001011110001110101100101110001101010010011110010010101101110110001000110101011101101000101101111110110111001111100101001000000001101010100000011111100011001000101000', '195679510499172126937950972652289628431931810918952', 2); + T('22g547', '59586936', 31); + T('87fggklhhg', '10081601679330', 22); + T('14loc9q0brmnf2l3pjns', '13453999087631333376321422818', 30); + T('16b120336097820377102ba1a6530694', '4492294931008813292353818571952848', 12); + T('39gbh606nqc', '989997953401812', 28); + T('1dig5', '226295', 19); + T('1b3ka4g0c31if', '32556633457068098', 23); + T('36173', '15483', 8); + T('25mnkqg', '1597959796', 30); + T('396ddbf310babd9b0124f477cif5j', '36237589250638277361694592995401437908', 21); + T('101113023002', '51298502', 5); + T('110', '56', 7); + T('110001011001101100010101001101000111101010000010111101011011011011011101100', '29161467826175673743084', 2); + T('132b5284b7468b042763b92848288906579115b7195a6a4a', '669106877176619840691504688183033278062755763332186', 12); + T('2jbk', '78202', 31); + T('36547444550627731264507057423205012330760602245415526634143', '91896719045463903069060584567797070657705215769917539', 8); + T('2121342000144101', '70013678026', 5); + T('how', '20500', 34); + T('6', '6', 24); + T('2r5mv', '3740439', 34); + T('4cej5c3cj6j6h6a9h44g1ee0', '11865811719145171527617979234903', 21); + T('1a', '25', 15); + T('322311222203133013020010112003012001310321220002231100213132013232132123101011010', '5374536559442579875501675621431604976446648160580', 4); + T('eehubjvg4wb05956wfr89p64b8llt5', '19553077057948292475181539283795939051996984745', 36); + T('66', '138', 22); + T('21e5', '25190', 23); + T('5824gg', '7778723', 17); + T('qhcic05m', '1392438529792', 34); + T('70748', '103386', 11); + T('dd2f83', '14495619', 16); + T('269a83d0c1e15243ge7', '33557569767693937959458', 17); + T('217a8j', '35197139', 28); + T('2nqr8sm3l6dor7l06btp44g3q4opsp7hhto', '466388495687397034337875211314470597167886175645194', 30); + T('919ha621d52e19dgefh8669', '37530506019880420547749751997', 18); + T('1pije311bgqvpb5ekr73gsqm3emdg575o9', '229124521801149764060037079145996433176668172334504', 33); + T('1515502220244213520322244000232533532', '19475372332703870864203147616', 6); + T('3qep1fh4qwndwwwe5awp06cpsgoffdu69cu', '118279202173747931820139636011582054710456162076665600', 35); + T('1ada80a134bd3cb309', '54410775990170265437', 14); + T('8a97823751309916828', '49979715688154191266', 11); + T('5gb6k8igf7gemfcm', '2870749420792582219510', 24); + T('9n3b1mjinci0ni8l6gin2f724nmpbf3', '86027429526935179638753640862837929481681397', 27); + T('a9698129d564ca424d1289a5cd3b641a1a4aa763d8', '1046398402135353288360947832509612205229878640394', 14); + T('9', '9', 27); + T('15f7', '23740', 27); + T('e64g', '422980', 31); + T('9ca76d75d5559', '1277567401473084', 15); + T('78ed606o1j8fqhiidi6fkoi83j0n4c3iiqp', '33935317423077288563227681620299054243465830701883', 27); + T('31cfej', '36322539', 26); + T('1d5hn9ibgty', '3795546581559774', 35); + T('22210011201122011202', '3403203221', 3); + T('39c9ef36fd8d6d173e0dcef1548f', '5958639927430509319986930239964875', 17); + T('1', '1', 20); + T('1006602851715538236745820258681874447601432823308065764', '3412333354307507489911392031280207794163602060048483', 9); + T('amhodl4nfajj525j0qm5px41bsa4os', '2758944573212546785156336043340023815551190796', 34); + T('1200', '45', 3); + T('2120040430001210430112021023230112121300222320220130', '1013117983252189204902772113159538790', 5); + T('11111111110110000000100111111010011010000000001001', '1125213381697545', 2); + T('14c0jb', '4973567', 21); + T('16530fa17cif', '454442982820233', 21); + T('a3a0adf4f85', '20585721319165', 17); + T('203203033120031120201213113232300022323332032233', '44009547630098010676449502127', 4); + T('bl1i9', '3334710', 23); + T('8pc7240lvue8vuq37ywvx34j6ltmfl', '5232403222434712533947020919591570328338399621', 35); + T('111011110101010010011000011101001010111001100000000110110111101110101110111000101011101000000001000110000111010000111101100101000011000000110', '2606077838126325794622812111329148470986246', 2); + T('222022012110', '517737', 3); + T('405934gifigga12739441giih0796c14b5c997ih0', '44130496382894991152875168789677354953126176798303540', 20); + T('557ad083j4', '9422716142562', 23); + T('304bdb166ac5edgab3d61e97b606250d5', '7142197345479876851613804398524943471095', 17); + T('23020170177167056322724056253016211772161010110040067', '217303698775390775219268953665006962201726042167', 8); + T('5fch', '60781', 22); + T('rfeemi554rimeo2bt6lwrbe', '70166644768206913891123105929597662', 33); + T('335a4441544334925626015a5261a88000604774798564', '242132208927109792755852728923466600488607984570', 11); + T('1110110100000000001111001111001010000000000111000001000100000111101001001000011010100101100111', '18337058785747772841230707047', 2); + T('j1l6qkgfntjef9vc32oc2g', '772839569513479974919512085246032', 32); + T('gbi8', '114065', 19); + T('i3da2hi80eb0ag8d9g912d7a', '1008543268485443569575877596092914', 24); + T('1011001010011111110101100010010100111110101100001000111101111010011011101110001110000000101101010110111100001110000111111010110001000111011', '486261763761604150405408746183250518303291', 2); + T('jijd51jhj1j95f4je54493jae2jmf81biaee', '9069209033129880269632627501828625587610894134746', 23); + T('2hikdk67o4g7lmh1k9j', '39437368888777361305497119', 25); + T('15c6f07', '22834951', 16); + T('6581d19cb883a36', '1064511493807102328', 17); + T('52', '107', 21); + T('1p0qemoadmtnlgmecm6kbmn74i', '15541937980818601123360827036285747438', 30); + T('1', '1', 4); + T('21590025143', '21590025143', 10); + T('d6sy36', '693030386', 35); + T('11322122', '24218', 4); + T('1110011010011010101000111100111010101111000001101010001110110001111110000100001001100011001100101100000010110110111000010000110001010', '9808812004949753301944141481962869891466', 2); + T('2011346064205340121321043166651212640460403562264030', '25491520237430529777628523147054536052862839', 7); + T('ucqqp06', '26993470385', 31); + T('360364043226375763434734203', '1135619094464764138731651', 8); + T('16a22ab29g6gag27d902i028h5a5h28ij26aa', '91071572231094736409429316734882921398332658610', 20); + T('16bcdc134bd0175b6ba3c8b645b3a8acaa8653926', '10426556992801999163605089672879387047740400062', 14); + T('101010110001010111100100111111100000100011001010110100111000011010101000100011110110111000111000010011000101101100101101101100001000', '3638586720469021421571505782203805260552', 2); + T('140c5a387bc44a4b10aa460b7c7b206a12260722a190', '1042190142619938105857559249577611044384867548601', 13); + T('796246846337819935321375455889727088', '796246846337819935321375455889727088', 10); + T('4748365707045', '1366592978372', 9); + T('18dqnic9l9d8lof0an83jhl8p', '161791385498298856077148137049891879', 29); + T('e4enc1ry5e2fev5tn0puixpkat5hs3u', '690214300653731249034075248278056601286873317770', 36); + T('12103332000040255055033214532003', '1809113997459018487166787', 6); + T('4ov5o3bldn8i98vgsc68wq3ce0j6hgec', '563851485207171383268487747899059744066460463002', 33); + T('122100200021100200201002001202112012200002120122212121020102212102010020001111020011121001201012211121102012201', '58695548546092379485949598870251325789565837785276340', 3); + T('10011001012102121210111220101212021010211021100201001221211112200010100222110012211010', '37710977865302705162890164637672855056666', 3); + T('168f56983', '14994285015', 18); + T('lmil2egd65k87f', '54272692008795037013', 26); + T('2335440145154021142020', '57257388878637468', 6); + T('40101301132322244002210301221323411221140331223132341', '8976324511590349126560140575129895971', 5); + T('mlg51b99bfc3fbg6jch8kaea93d3gbi31cbmi0', '5553841642984415591090623182299846227471263243529165', 23); + T('1245412455512', '3201760196', 6); + T('4503a22bbbeccbec347352979ce46918', '12466951961005062711489205571650902923', 15); + T('10bfa7f775', '1236461192499', 22); + T('382377804843587793924059644948380229143271542188852331', '382377804843587793924059644948380229143271542188852331', 10); + T('f1o3nlnekf8h69cem6ep', '11553871160155818431289732717', 26); + T('bkd7bkpi1415qbfghl9ifckcsf8sab1pkd9', '616479730153122276188583638809339600885956993018944', 29); + T('297le48dg0ah3ab203cgge3l2a', '26579580179095250157256986137526036', 23); + T('87530521065105884', '16387573292942836', 9); + T('1201111202112221120110012120211222102002021212012011011220010212010222022222022', '28290291045491254023506261936179023326', 3); + T('3b08l8bia9d618', '3031752476775111584', 24); + T('902250c032b7g0f89bdaf178b', '3057545841520061381930994706945', 17); + T('40047350077123034467287624460405518424571', '592212941919593143318170237785813532640', 9); + T('f6ddad188bhgckedi58jf734191ifc9j7igi', '290294718982610863234917060711053043029223349512', 21); + T('9kf6g5tphosttsn2i6bmjnmr4g4ra39io', '5112058191839606068411315609839936325831521670438', 31); + T('17hc4ge9fhi71', '3136930029314922', 19); + T('e', '14', 33); + T('1', '1', 28); + T('19385916362038001511974974352326061606', '19385916362038001511974974352326061606', 10); + T('994hg2d2dhbh0gah', '64197081894248845109', 18); + T('acbg60n772m1ea9irebfnqrao', '1305370225928181620545110631536852533', 29); + T('14233136655362371400640556051237407411322356356326214052664', '36825078122035846824139359498863387810994115321025972', 8); + T('92392b490301a664', '4006460987264335819', 15); + T('167a115b4jif', '270081361799975', 20); + T('1640200513276356713203217', '8561606752326371837583', 8); + T('6fa8crom2v', '227951526041695', 32); + T('4umsdr5ai26d8fmvbkvlb2mn2u6sqw1ipv', '636523307570103041146492708259627994295321250393266', 33); + T('38u9003eaqm6mpnr467a62t', '8353799196317598820195931099074052', 33); + T('skj4', '1028647', 33); + T('63u6q9h8p6ahh6bmkb9mj82mgp0rjo46d3o', '9163926831552473156333325816156658696482771840480376', 32); + T('374181045005367453', '63869760985078506', 9); + T('gi77gs7t4c86svd44', '20031375747586205082956932', 32); + T('idgcgg3iif306812456h377f56942aha1h1bi8de3', '26466184663410551722103090587444979074925601227697522', 19); + T('1n8s7', '1811335', 32); + T('1101111001100', '7116', 2); + T('32032002233210222021330301320', '256154294077082744', 4); + T('21d05e087118154801e38de0d0c9e836ee62', '309359469371419698329028550109463239304242', 15); + T('7bnkba8727mao', '711734299233608012', 26); + T('23122113350351205124402523114241022314241152131452310154403', '3446603390947454372499645215833941706110137379', 6); + T('8fid35se7iqd8qp9jad33p88c4eshmrsn', '1578863152062103440946991148225491469855580789163', 30); + T('866416783373441066298147461690874873461', '866416783373441066298147461690874873461', 10); + T('6eq5an5rab06h', '1517176822531587577', 28); + T('ud2svcuaqq4sr7jrqe2bre2hsa2e', '1324502565529099628698041478533401102133326', 32); + T('6hm5pp81ik2pf1ii6hhl5jioc', '60893965774839245281672395269677740', 26); + T('ee7744r3ad7', '6096626264406298', 29); + T('1q6af87', '2316479689', 33); + T('11111010111011101001100100100011100010110011000101011100', '70631085671395676', 2); + T('6bgai2ib8jigfejj7akee7gkhcc', '1653728637039272131322974404967196079', 23); + T('774k16nrl0naamuri4r0r70cnc6', '4311028221216091060938421206338050133954', 31); + T('15464kh3m', '184142510722', 25); + T('a3d7iil0k055ea2e5', '236120447734071099376605', 25); + T('174svburisi05', '1410646341741070341', 32); + T('6103526361624161311443517175371632412741737', '521666973443756820065064110478867547103', 8); + T('103807464250446522257054681023194524538600', '103807464250446522257054681023194524538600', 10); + T('3j35qafo5is9b46bon3r50k2lcgp', '797208106619573886168214719184124083800753', 34); + T('kb5tm5ueho', '538338180669237', 31); + T('gffi08e4l931g4fa4670c066me3pka4h1cgm', '554854175062937340737429653211079158274027725303326', 26); + T('imsyw1tlimmvc1a84d82mb5v8gi3x', '702689747548001434279373592171391347865465773', 36); + T('3cbj9ceddch0ca260b877', '1001161473757765639302563398', 21); + T('0', '0', 35); + T('247a679c84b4d', '298529370955423', 15); + T('500313532362550151405060156664016331505660206001614462450', '1059924439122427863447760659387416953643785787762', 7); + T('21104675576566636070802230712528334778338134', '228886256147665679004281010479547505677553', 9); + T('nde6d3h4h7n9ndc', '877038302183182967837', 25); + T('2f8f19d0d3ff', '52291659944959', 16); + T('9po6he7l23n7b4', '40360148730545473327', 27); + T('4vrcnav64my', '13539089772110454', 35); + T('wt3f', '1407645', 35); + T('2fff4h9i3026gh1397i10d5i8ae6c4f', '652969455080964332999891591145708320863', 19); + T('1101001100111000100111000111101111110101101110011', '464480193997683', 2); + T('6203', '95003', 25); + T('lntorhe8qgtf', '1097991413515091385', 33); + T('1dd4hhc', '80963249', 19); + T('41076a3c610cd64', '45272036908151372', 14); + T('33101330321210100311220302230010000011013000121332133011131113201013230301021222121', '89329862369401356626441467590629208479429264972441', 4); + T('ow7tdn8yg3', '1964139743090213', 35); + T('1q60sn55rc57k46jch376dbi18u', '1100010206904531923980306975025572612130', 31); + T('al1cclajlg', '113737896778508', 28); + T('5', '5', 12); + T('36341540646206345106351653034450633650542255', '8584090170028289590539679646753255116', 7); + T('1102033632151056', '5454472967691', 7); + T('4c5nb2a31', '496481252041', 24); + T('396rc6g1r9hf9aabkj42', '10434942490263324352574492834', 28); + T('1c1', '406', 15); + T('57rggzfac60l9nrn661pfq10u', '117102687392726624510030956959605426862', 36); + T('38', '41', 11); + T('1u2qm', '2034518', 32); + T('1232053250', '14377278', 6); + T('59', '119', 22); + T('66877666510', '7045749564688', 16); + T('101262042073', '34406946350220', 17); + T('174406316667406655013647151755454742463', '40406618960600991640852771818947891', 8); + T('381367303', '381367303', 10); + T('fdd6hifi49ehhfagi', '4534655080747979804851', 19); + T('293bo9drjuh', '8235734635761209', 36); + T('4865260ac23b750a96', '40252545837442207366', 13); + T('3m5gh8f9eiuii2i29da13dmhe3shrt8', '2045787934668186695600969415825357209406033909', 31); + T('191803aa3382219136708a9508218', '264262054527282503748967555048', 11); + T('1444052445552541441142310', '8514868572634010370', 6); + T('15011400422413113112434241014421043155342445031005101', '53518774664077147625027648928085924722973', 6); + T('1ddx5zi5bavp1', '6500361914360643061', 36); + T('1di6j7cc6cc5e9afj9b42d5475hjba4k9f60e', '660940889065923867470806531240107647134213385615', 21); + T('f6g4828730j', '157087239737219', 20); + T('cgbck18cj6d30g231d3873had68b2c8gb', '115631796673116218055162703588567020964949739', 22); + T('1b8g1adag10f', '57508815430230', 17); + T('43236337121823529354644', '43236337121823529354644', 10); + T('h59b7989d6c1280ia899ggibf2f', '115923326177989136223953138998174055', 20); + T('55b585', '1367669', 12); + T('855elbci61icfb', '12232290116758492261', 25); + T('qf9s38bt2pqt8g', '1456565460716253297547', 33); + T('4791940b5c8', '633114739642', 13); + T('3nb1mukrb', '10289748946583', 36); + T('2roq', '86299', 31); + T('2j4m3ja8hj3bbjc13', '17388834727775714756395', 23); + T('21210210200221000100011011021121122020110102', '854293782429088571072', 3); + T('121886200777336076581247707653381174765200168442101338', '468460499850199466928527287592120617883229696652094', 9); + T('63kwnf77bwut56ca', '572752155516297110798450', 34); + T('ideh4if', '4527221715', 25); + T('428427', '255499', 9); + T('ce65d3144a87631c5d8d5e', '64651681400824332635469389', 15); + T('1tirisssmcieq9jjem2ld4fpd001afe968gl', '9944720592415733461822502465141583653366986082659701', 30); + T('27564631602344315060464577541', '1490731602885528882512419711', 9); + T('1112222200201011020301023333113211313222223333203311000', '439439643250765496890620832005440', 4); + T('ni5m4p3nkb8e7', '2261758525856544683', 26); + T('bb5ha55hc1j5786c6gi3b0jf', '9701164395793552878907962168395', 20); + T('1d8e03j1fcgggf93f5ef1c4e4ba8', '224378652645875278576698754063076608', 20); + T('h1hvj0hqkglm', '1196363266840296960', 34); + T('345ismnc7lr43jja1e2ff24', '985236942305240622053932671238564', 30); + T('1e3iebb0', '5501850470', 23); + T('coa782d6j67noe6koclci6ogoanlbkd9bkb', '4396598624432652113517535536299626773660112648011', 25); + T('41002112043331422302240214202440223000312140422212', '74671149805376831258756652992904682', 5); + T('djxmkk7v3s248gexm1gp', '1703151246313896607474774348861', 34); + T('8646077885b0c2a21a112c29675749c57ab', '635151353519033987553420797933447242705', 13); + T('bu441qf2akw2gtvd8qe7t7uu', '3869618174244179076226832622786813655', 35); + T('7iur81phdrrfcnn97u4kkk79tj', '146414973454877334021181536955701659607', 31); + T('a0', '120', 12); + T('48ee59e90ac14e8e7c231ce875e6589419a0', '669783568562143349960735984002758784886175', 15); + T('ge623etu1ob2q6buudk474je8sbe', '1642513449767667629299872543927786786403661', 33); + T('43c3917a388969c28c304b4497c0a', '66716252264599355808678868874746', 13); + T('2859b5a', '12788474', 13); + T('7641714202176443731750235267341521674705251706234', '174307282119711580494340594082900153247173788', 8); + T('jaf', '14136', 27); + T('283k299hb26llbgchgb6l9', '36807839785608217611584893207', 22); + T('33ol8dmma43g9e7kd5a', '45980645590797982073367635', 25); + T('1i4e6ifai9ej', '1068011337586619', 22); + T('133300022331010012301000210032002111201200121310122003302323031001133131103020023202', '185626342194041733951899580551736160422093201900258', 4); + T('a3j87g1mqj0b0h9nj68odofglpm', '166491782431993148839670675364949059340', 27); + T('7481370241361', '2130975455815', 9); + T('502e75ea0c6d0c039', '32928634294384428054', 15); + T('11011100010001001111010010110101001000001111000100101001001010111111001100011101011010101101110001001011101011100011100010101110100101010100111110101110011011010110011000', '1287696114982305806708561003677255537140522028742040', 2); + T('1bqfb3dfpepng0kb445532e46i2k2plnerbl1', '17866045281194629714550510066941232047098126404456765', 28); + T('1228541550535432070748521080570353154383164027640630', '5838445704235480390616223077573968603488172323015', 9); + T('202120202', '15005', 3); + T('2b15ses6j', '4151154643167', 34); + T('1oletrcgbcq9b0ol6abg654', '572355626082756700069900296347554', 30); + T('4d0l4fjnvdebtl12cyjt3', '33268500416963035715332927486418', 35); + T('21684428648370560244556270286321625', '611004158938408181845575483482792', 9); + T('22516578301431031712115715', '22516578301431031712115715', 10); + T('ia8c746a5k698gb0ea0h25', '4186764807821527418737933604430', 25); + T('552d4b5c5', '7928248585', 14); + T('9962395855075', '9962395855075', 10); + T('94o', '9368', 32); + T('8l5p1gbpln7feh87180q30id4mh', '370245596672569805456573812561788398457', 28); + T('c9s863pkoa6nm9k271s6agd5936622fij3', '22417592566417395601808617316485913816273476937652', 29); + T('69jl39227g9jchi7fbh7k', '4550255795481192857394992106', 22); + T('i3llek5pmb', '98532878244435', 26); + T('27sr5g2k6lamc0jckdb9mf3l856gei9gc6n', '119857086374419767386831815250826945200461652035528', 29); + T('5hq2j9i5nw6ohs3hvdoxhd', '800197957325309307636499187015299', 34); + T('c5d885ldc2hd49jeg9gafaa6a6ke6i6e423', '53787528350697204358419391960520601829238505391', 22); + T('5llrhq0bim40jagd8j27c7hi44aerb272a7pd', '72355247952723729282010000522046316637619366408542137', 28); + T('ha1668kgjcf', '463661948026435', 22); + T('h74bo7h93481mki8i9lj4fe', '98266163081048910410819920612264', 25); + T('ak75ffj7d38bka4jh3h7gb', '64086606059975639770545476537', 21); + T('1544451212224143030151322131521234453150350121040114141', '2060205073108919819474425853323987884294925', 6); + T('740202262443263067454211712735764360631542423775344744', '5483538014645444559676878691527370323481540807140', 8); + T('6a7de5g426252fdc28', '5472421497078469371086', 17); + T('5473907070054b040932430b873', '61634926370145594667567575831', 12); + T('4115450564572527160830368830000012742181361444838505', '19161272032820073281912521629778352968829319565898', 9); + T('1', '1', 17); + T('1440410431423404203', '7502669747428', 5); + T('1', '1', 19); + T('251460508961154488826737846', '251460508961154488826737846', 10); + T('5n19ftqpc2ik5ia4shol4qfedbab3erk', '261244167379311148761203476835802681174819715956', 32); + T('72ia1k5b8d5', '451134854378813', 24); + T('176cefd755l41g0g4ik1ingdb1bcnhc7c7ii42', '115776909918913879948624420561685892929802962695482263', 27); + T('122021102223121130311101313331131210010021212203020033200302031213222', '142347927402828237530224283047207824316906', 4); + T('1195am2d29gld35edldn', '177161953608480500227591823', 24); + T('12202112022120110102022212212202210000211102022200220200100011122201212222220201122101022122', '50276392565959796508087003591344035380000890', 3); + T('195196760bb10d797632bc9ab92032ad43540604d99a608', '87971157221742030648612012232857353870163597460159360', 14); + T('100110001011101010111011011011101100111001111011000', '1343422207521752', 2); + T('5i0n32cm7gihpgomken4k', '113463368288089227639632223336', 26); + T('m1iken16m494defec2jim8', '2129732956718515846300095237272', 24); + T('352754440661731162345175142131150650044732105622163', '5239828571223832230977981455751540869256651891', 8); + T('2h21g76gf6c4gcb1771hf25c3h37h560fa9d49', '82232560865623068409274522061107609432063075661', 18); + T('18336631326266747387301843477103751556526163', '208077150063548931141427603913143139920977', 9); + T('373127070001223103537740007213', '607292123862578721351274123', 8); + T('a', '10', 32); + T('2d54e7df', '3408755075', 20); + T('4116705626b180469537aa157a4659', '80986654674608879103776539438245', 12); + T('340021440031401103111001314240223132411342323331400412101243322420111334431', '20137295347910978050137678754715001634222372529793116', 5); + T('153d9792e5b2bd96679de7bbee9f34cd131', '115644794069417523805676707579411471061297', 16); + T('3kbean5c2', '790686787750', 26); + T('190e6jhg36c0d', '5946547059732813', 20); + T('pa4b5ocijnpckmbkio', '54653058302977747314709557', 27); + T('5191999d6121cd2bdc01a33e38252b0e26', '3305144539726123107189696653194983953811', 15); + T('630415b975cc33bb4c363b7be33517ea703195a3', '45712578593779552927926495716849553528442516653', 15); + T('35115035', '1083263', 6); + T('ik8ecg4647i4j', '139555487244430570', 21); + T('413gfiabjgci37ggbhj167il2a6lj87k69a0', '1853468167532157988104259516068589250397587101519', 23); + T('b45grd33e3rgagm', '46026603618605840281332', 35); + T('3i', '90', 24); + T('24032', '6197', 7); + T('14643', '14643', 10); + T('9mb0', '347754', 33); + T('13120234334110400213502255541105350', '440476073103983155758151266', 6); + T('15462416000664444652033602350030142433164413645004054633552531', '6452632018511786950986114433943476403580602805020808', 7); + T('37572601640375442622771540474365322704464564070', '1382461219874045756706531331920884785145912', 8); + T('1f6ce9be57023fe14fa060be4c01e7a', '2610723550735662335298250928784678522', 16); + T('267g342l2c4fqdl4ajeb16073kn', '36667153627913303191726714912695388556', 27); + T('c7a494d6c', '210541427015', 19); + T('cs7tw02ho930capsvbscsc8rq8crl90', '46186547958524001279903376963371423125825316690', 33); + T('1110101110100000101011000101111100101001110011100100001000110010001101110011101000011111101000110100011100101110000101100000010000100110001001', '5131515373500601241098729740846521305336201', 2); + T('3no9lh6jcq6hj7fnm1tj9f7dql4g8hpk', '23432634258735773139507989470200385544339392070', 30); + T('77202ccbd3bdb106c70a3c843815d', '927344578178019254002795633520519', 14); + T('c9g73jc183o36oe5r', '1761650416053970767908743', 28); + T('21001120111101010111201220221001200110010222102121001221010102020220220011100222010000121001000020', '44909696191691954741895603189242516933740673358', 3); + T('af8301s', '19182618063', 35); + T('afb3ej2cjdfg56ce8bea719b59eh8hd6920b6ej', '296262541658682380384776698481582878196565062490699', 20); + T('1b29xn8g00941kgw', '289012521433739258455520', 36); + T('2xtp', '117767', 34); + T('1020112012122220201022201002120000010120100100110211220001222110211110121012100001121012121', '10837637600823066480493206482425734822338083', 3); + T('22315001431055114221302441100', '14892771054125887454268', 6); + T('bl31de', '455503007', 33); + T('1442414261073074545327716347556337315543405616452064022', '9163205510581199876674535919032970590548216277010', 8); + T('212202324042155400', '37777131521784', 6); + T('12349640aaa944688139259530937033044', '309196066606488820168555372722983338', 11); + T('fpgqcforjadl4m41hefa91o5k2', '24029402257540793970931286440247548034', 28); + T('24102100001234302042410140240312000000202423233343230421014423', '12331802937444045464002527321771813605251238', 5); + T('11a47138b132881731', '2563461905444852437', 12); + T('85cb3b8659ac21af1a8', '117256916843717402630003', 17); + T('530510315641333222253215315131453602302126013654335', '9790111583735606376490411560153169670670337', 7); + T('10011101000011001000111010000101011111110111011101101001010010011000111101100010110010100011010100001000000001100000000011000010100010100001011100', '54723606892902481536500944335964133487421532', 2); + T('1637342435475173653242473', '8554147181574260344123', 8); + T('70b85a374348bb964492a19b784087048003', '418269954707700454074594450672126945795', 12); + T('fe1d346amod6lrm9ljngm', '5393449861419496363652864244202', 30); + T('1734425698429208702123875', '1734425698429208702123875', 10); + T('1mh1lrj86jhfco6ce7', '12909789186113871807459532', 29); + T('2h45bd450c7a32dfa2aa97f48caebfc1', '12727768324370554279947630389647616613795', 19); + T('40vodsfi176dd7whnoe', '8678884792879959684067074146', 33); + T('2n', '79', 28); + T('3a506d', '2011449', 14); + T('kugenh9ait4003ra6', '25331317463136730892856646', 32); + T('3b01db', '5178823', 17); + T('dmbepcheuoekosb36', '9981424586270997624379758', 31); + T('3p0qqad0rbd3a0d1edi9qj', '9565860082877068038671133862651', 28); + T('8xrc11wnvgd', '32677858720142077', 36); + T('hb9pb74jv', '48841995735499', 36); + T('2h4d0i45baf58', '60216197692422312', 23); + T('102003023330021103223132320323203023202122311', '349133714394419821353510581', 4); + T('9l41ldpj39nnj71m7l51he9idhqk2m8l', '2305496927225468830003959459450437448260834721', 27); + T('15b74943a22560828b568aa6288a66b7a75', '7370244945567598717283130690155534393', 12); + T('9e63632c0dca5485e48bee9ad1b5a28049aa157e307', '3703754566336033126591165191492065433661004773319431', 16); + T('3ja1', '31801', 20); + T('g42g1w4hpfd1uc3c9d8a20rouq1al7pma0i', '68696270202616562976167194676008006702228230750870258', 33); + T('21230013102330032330322002201103203321120011301323120113033012202', '824272888453390045291865751777634480546', 4); + T('9hilehjdf6lb36j5lecb67b10igid65i4f62am', '2366158544165559387606813664930337805770821698614502', 23); + T('1nkhq7l94h4', '547299336104672', 28); + T('12d', '973', 30); + T('8371b0d9c54b9de08c7', '38795452173112617863367', 16); + T('22g68fg8d03219h4dabfg83b1ee44', '303673527388065638076672857780213284', 18); + T('97c0c3840dgee5g86fch6585d31a4ca2437c67ac', '85105391259450946493116320690718103848694691007404', 18); + T('1101001110111010100010011100001', '1776108769', 2); + T('d5j', '5319', 20); + T('1a690', '51662', 13); + T('343432441403012032', '3019525047767', 5); + T('5kcjujtof3vggbr3pearj3csbgta81w8d1', '725293002341316327093764860114945003565348827512163', 33); + T('384707362343836408736872363284', '18595584801040647198239186170', 9); + T('23cdltgf5iop3i', '115711808465236512492', 33); + T('a34fdfjgchh3c2g', '117542990081505966008', 23); + T('2631935a01935aa659a8', '14608971021561178647344', 14); + T('322002310130020410230120043200023330430400213012024320211340432412204203', '147419546263656400907418587687857873288933335663053', 5); + T('282', '2042', 30); + T('43ejf7c72d8f8088fbj3bih90f', '1405082153027789457088306150219615', 20); + T('537377662473314366627013423', '1659910424702725658515219', 8); + T('8ma60g4d77ogd7gl6l8d8j96i2b5o6bd', '648142815659880474199092122299949894688142195', 26); + T('d3b35e07218e7b0c20bfc', '15995649127931990167915516', 16); + T('3002232001101221323200221231313101100103031012231101330120230321', '258826027845063265069952010556344994617', 4); + T('1qridbfjg80nkda01gp', '219762364301785223184857833', 28); + T('1hdei9i3rgciqki4kk', '6491983373329676555100676', 28); + T('3d166bc11', '26294890438', 17); + T('1325694580866459008894526620', '1325694580866459008894526620', 10); + T('d6d6bf6dljje', '20197332467018390', 24); + T('p1ph4npc5ifhk1m4j2f', '1457942038136981020113858924', 27); + T('4igf', '45333', 21); + T('0', '0', 14); + T('35a7757c09cd7a6a3099b0074b1bd0229dd7', '44396742597558682737158855425055583198089', 14); + T('110540301053', '432804633', 6); + T('fc1ar8b57hdr1mgek51b1ejaqc3l2j', '14320513748631668139007866084261399565403611', 28); + T('9bg5mp1g6jbrbimdb3opeq1c3gbajbaia', '191782744327193344704269800684620420221378415330', 28); + T('17m0rs', '30564838', 30); + T('2024420615', '82897232', 7); + T('92ja514', '1350637008', 23); + T('11000011103131232110013', '21995927823623', 4); + T('665ca2e5cce0h0763c794b14fg141fbc89b7b092', '57340876399944844035247195611985145713742306546252', 18); + T('94cpak8nov5n5jsja3gk089n8asf', '913033666774297494496300127790730852112223', 33); + T('242010412444', '140716624', 5); + T('12010002200', '1589408', 4); + T('8228i4a7kke940f9575620j95eiji0elkke37', '85158690741068950560220168929739588599306465964428', 23); + T('1e9dk7d31g5ab', '12420927280751063', 21); + T('100000001100000110111101111110000001100110101101000100111111001110011100010111101101011000101010101011111100000001010101111111', '42786787446528052699594039883348317567', 2); + T('3k486j3c08fhj8iml41g3ga2', '3126146499527434483823713052690285', 27); + T('bi6iisjvvlnkpsvkdwp8', '1445838597034929554695290655842', 34); + T('126270344754', '126270344754', 10); + T('334la43805b6j5k95f0a65', '123931244832514383361412135938', 23); + T('184920bc8b1a070d606bbd', '1868511579146852493161699', 14); + T('143031224020013310032213240120330021140214004304320142440', '2671868346315276990910773927582919302870', 5); + T('4', '4', 5); + T('1252554a990bb57b4787920719', '1147434430259691058685198853', 12); + T('8kcn44n4n2k6akh6515m1ad6', '1253494409726106013840668026194081', 25); + T('358aa040343b6b00c031674257b166cc38b', '257178834697945123965109260345022568295', 13); + T('c6b6dfbdc40011198bd286c0', '61499113032079803212142642880', 16); + T('13fufa8rfm7c9', '2629801716449273661', 34); + T('3nfc8nf3ag9i19b1', '3673872814701266818401', 25); + T('3166512513354164277266524513220176106234611', '274925189339848199032955327991581849993', 8); + T('e7mr7pkubteges7ak7qma2o', '18485960290768871891830807896729688', 32); + T('97mhfmoedpl16b81r313lslfb0d3ahrk55b', '488123867222855086416788166437659651327293157909633', 29); + T('6', '6', 13); + T('22bo080907cpgmo24h45oltclc20l4rs9734', '10405451217668484228774583686702481362996408865029394', 30); + T('86b8cha148k0a1l718kj9hg9dhd0eh74fa', '1655125180972045181280611035879161485328995804', 22); + T('31h16jd', '455317098', 23); + T('3575735559093705164576928117947264010533599186', '3575735559093705164576928117947264010533599186', 10); + T('3fo34cr8cmj0mbfcqf35b5gpdjm9222t4e', '19605601676847494221950277140066486701282651300234', 30); + T('32', '98', 32); + T('1ifq9j', '28624111', 28); + T('11941375807', '30304915736', 11); + T('64246753172171466452551711206021704632', '16980787914168592911515222526101914', 8); + T('33220020032212223313011322312310220032221030112000101110003102020333222112100', '22303612305914145667368014737273431444860872080', 4); + T('223', '63', 5); + T('954', '11204', 35); + T('c', '12', 36); + T('j24mdeul5i0smbejpbg2mrwscb54wwmwkup', '600423386348711943943690378212372893459687681945626950', 35); + T('bcd6jjlaab9jiofb6f6h6ha00g8', '25537871091880597881403599806322266033', 25); + T('37s7tn0f6ig9tnk7c8c7rffc4q6m', '24895596590360112154229623928710499351602', 30); + T('19751b6963975970b57bb7b746997b245983192a2', '26479394819881134034901962063085314419077978', 12); + T('3', '3', 4); + T('1043010421003143134023441324323114202400040000334203121104331321132402344242', '31350194075596081385648272410035836892718252280903072', 5); + T('o4sglc4m9rcnj310m9nqm7611lrmqe9eo', '4477835046237745517249653886244954948658609046544', 30); + T('ncdq', '918332', 34); + T('114840453324568213742188', '10388126375431293821606', 9); + T('1325642', '371618', 8); + T('443111423431241321342101131402240', '114790435587670217450320', 5); + T('7lpgsaosisg8arkmbcbd', '304282863628138208061599101293', 32); + T('7ib76c6p3li2cj43t1dk5au5jlfcd', '57375933993952595073463711388407424935224025', 34); + T('191e2a6lkeb8bjf5adi691', '132925541528054151438002596441', 24); + T('l1aqdbjq69jatffbg8l587cb92climt', '30031891651603255389418074895566086243934194397', 32); + T('40852838842682255543932763748781364902234498', '40852838842682255543932763748781364902234498', 10); + T('10fh318cdcc5d4f0b418c8b6d8cdca9', '47758452381716675478875781477650034453', 18); + T('f34a', '74640', 17); + T('4511565631241654652431163010554550101105031254624', '173977603700328524810402269464951078727230', 7); + T('5e7545h2668b5ail52a137fa1f', '20545488673771633172442655662596037', 22); + T('b', '11', 33); + T('327be62d5', '8119207775', 15); + T('4ejfrjo1u91wnrwq7w30ft3wrmbnukwab9', '573523620056731492643942313246303569824330571405259', 33); + T('127009363602697407785107082524162100683', '127009363602697407785107082524162100683', 10); + T('1011', '31', 3); + T('7cf9a45c21858e891798ad503930df741b93f61f127', '2922422513262668930583564242609727203228735133315367', 16); + T('458436820017127712311344837258866175737864032873011734', '1750953219563250455758063124003504566473420077405224', 9); + T('211112111201200021012000221110120020011101001002200202100002110020112012010202220202112002211102211110111202022', '76207615872454986906354894113586871317110730853497314', 3); + T('1b77l3r4ano12a6cr7m', '1672233795439662833861029110', 32); + T('pbc7jaab8ch0k0lcm3i9', '79612608910395590545180311985', 28); + T('2', '2', 14); + T('112321002011100100132031220333103333032113032102102330', '116071835591031872355033264235708', 4); + T('2', '2', 18); + T('48dfh22ibd8g686d6c7hg729gi2ii82g', '19527034789263406799378911097575104041422', 19); + T('15p529opb1me5asxv0kvb92dhhmvyvxn00jn', '1282638969189853870845839507929770245008746776925221313', 35); + T('dmo3cl', '237786773', 28); + T('46304360250101432053612230414', '2263254868286362202605959', 7); + T('324513a78b039aa624999b846c771339217883b781b56a3', '5543689730975453400411089215322289389594932504349843', 13); + T('cr9q5isidqrtldskqr9o9c', '135053305512535595499609893934882', 30); + T('panmd5okjtjqanieaj3o2', '8842387608432478043445480816422', 30); + T('2klgjkhff6', '29004353292634', 28); + T('865jbnbhee9h2kd9glj60', '33205472956554208933300869456', 24); + T('203141101240402110133321', '25448656205552336', 5); + T('67h54b429cjd8h', '984366776515330274', 21); + T('678049c017727c47ff4cc7ba35a849365fd111', '2308152223994224783375970725248611287908208913', 16); + T('3943a96100921', '12096243472017', 11); + T('19587422557', '936904834207', 15); + T('18ldm6jmneaao08l', '1261466197653666390846', 25); + T('31332131332322011120122300003333100230310112203022023133333110332120213', '4869949642092297086513535782457768257250855', 4); + T('6ds2g5facl671psmi9kopocsn3bfg0e2', '13996683735002911099235125659493455754164705769', 29); + T('ep72dck6alenjbtdan08q36', '4657326369780155877897242059139496', 30); + T('3ehpcnv1qmye2c61vyls1mjif', '76394919330212421657759781891604966727', 36); + T('bkelggb44g84m', '260736168381814061', 23); + T('9fijq01aj0ggkb31l3kp5lei6', '515503505760431112899810816546231966', 28); + T('20iie0e1hede3c4g0c9590g6g82', '3629916012028800240382232462917311', 19); + T('iobij7ij7j4jag8a', '17675386214341843525835', 25); + T('lkua2se8mgeqhq', '529292255664993899534', 31); + T('8d9840', '6765360', 15); + T('1s5mm61fb3g6dq3oqfnh7dmd', '18261245306493429843745215527871373', 30); + T('43034020201421421322412203422111122221223143323', '658038361800557817887307737318588', 5); + T('1n6vgb45qtdf4ikjtj25fi', '131855452845673101428220026231241', 33); + T('9a9717c775c2b36c6822a', '816836093782779632836942', 14); + T('kai2rgecm5n316ete0tj61qa', '191613767525038384468665535800253690', 30); + T('14401013144312402141400421441400330221110202204310', '34846925086734636841681380918788080', 5); + T('2a9h20f471ai95h651faf460ah4i7', '6777022823748317540045163909505737967', 20); + T('32j270nhc4bgekbd52k4gmjg7fm', '2394183168081128341140646193748287806', 24); + T('12mhifvg4v4bye7begu5wl17gkpaaojn8', '27656181148017299182041086613371692124335836981213', 35); + T('1c499a6b08497', '236220851334292', 15); + T('59pbjsqeb', '3495838469831', 30); + T('5fslkh97b6gr4ed830n0hbmbmdghh6poid', '10081808095888046930034956127945486656376182179651', 29); + T('72b397d', '120273277', 16); + T('11c4', '28264', 30); + T('316015042241513211046541', '89387023411491791840', 7); + T('19lcp7345b4r3qqd8m41l1ljeacij', '118276727933259686532854210784405707429767', 29); + T('3460ba73227a7b12a3', '28923607142014134891', 13); + T('1a0uln', '44071607', 32); + T('2240', '812', 7); + T('306cbr5cn81802r730gpmj', '31455598097537036058527866355179', 30); + T('133h', '8016', 19); + T('11000011111111011101011000111101101110010000101101000010101110101011', '225962873073433848747', 2); + T('4352590526188669238249982a05a', '622402855647499439865384142241', 11); + T('1313b872e4f69acbe969be1d71f982', '569050198457789316514154161677419564', 17); + T('6c6b4gg9675b92af602cb2', '464915643818894184675253282', 17); + T('j540fcg0b23', '197223400964443', 20); + T('i3ajkm8f0nbn9ge88', '790683382405880428525952', 26); + T('e66jfbkldf51lj3ff4cha92bh4i3h76eil', '2850287987851619314988966826056234683936420921', 22); + T('2ggcrh6e6mb4hbfh', '13215306058649270742309', 28); + T('89554664174942265124111587a6a7120', '18714353879248606802890337384240043', 11); + T('g414b2dj', '40369454881', 22); + T('b58368gh0g80lgi1gg2didl2ckfg04944gl0ab0', '11560775941796264717421207380163035997465478257097258', 22); + T('f9445c1a', '4182006810', 16); + T('5', '5', 24); + T('1526560366610442265035362226254443423206210', '553765118614712852621627633491154163', 7); + T('22202222011100002002200020112201101212020011020120012222002220211002000210220222210202122020200222', '55842912623697180438441630010534694569956648734', 3); + T('44a492308724488a0854505895041a0205631753753', '243693813005521214827257950133961142324762188', 11); + T('elkgaxe0nj7qcd52xc1fwh', '2120609821063037588735605933326453', 34); + T('1gl23enhegdlhljb5ipq6f', '3926268391749797408627184401943', 28); + T('2hg7egbhehahcc1f581d1a9', '39898359687999673183300054247', 19); + T('172347572204054163707174', '1129426023321529454204', 8); + T('6fbjh157eeid2ej4hidjg', '11454637245507530619115659086', 23); + T('46a22ebd2d0308431234d1d7a5e799e27394583254b86c', '373239676623123985927471130783407252534116489001507152', 15); + T('9fa2b1e', '3707379842', 27); + T('34343034', '309144', 5); + T('347687508325242200786366857', '22875086492752810114104388', 9); + T('2e59b1caf7e91g4c9ffdb398cbe2', '4740961834842729902995635598127720', 17); + T('d', '13', 21); + T('1d05afafg0562g7e997c26g5142718c', '78434399249593842169745603723971856568', 18); + T('4aff51f382c09c710fc5302d96b22', '24338029676537462451324711222209314', 16); + T('2i545e8etdhk8d4l110gan6iibd61n8', '1423893027311604030720414601275162449842291280', 31); + T('22001443021151101235211245245025454', '668923687080866304933463114', 6); + T('111111100111001101011011100101111010010110100110011000000000010110100111100011', '300402265535819852900835', 2); + T('100011111010111011011011111', '75331295', 2); + T('1opgblfs8839mofi', '16032906358388861446368', 29); + T('721b540a442b29b6b9a949371705b78076236394', '8794420240219128094357849185522299772425632', 12); + T('1707337005035225145674', '17427769821173697468', 8); + T('c169da5309db2363726965508991008', '292974756595688509640864085984168496', 14); + T('2874nt95970r9', '2602121717242626921', 32); + T('11850495657', '30108462611', 11); + T('895990ln1nlaa0o96q623qd', '257752897790289617728328339560450', 27); + T('8glm797oggo3g88jjgkdn57id06cii', '300975455472025404063790549176072636820468', 25); + T('374180043761116258361480038233844323506212452340241234', '1438877121553870492092518259559470761109318218910430', 9); + T('117j8g2g7kakh7e7bcbl0c9k4b65ag0', '19892904511763002652899252931188965080000', 22); + T('3167272', '847546', 8); + T('2na2aqadr6ftc6hhofi63m1lrnqn', '21182882506854980579454759175462290060503', 30); + T('29qu9npnpxs7cadd12', '248079850896649443598509984', 34); + T('4amr', '106631', 29); + T('28007349a873a53156493531a8a7104523525a3774188182a39', '32021550905735198309451788837892104007319202888697839', 11); + T('463511040000003430154003656024', '15885165020452488943863244', 7); + T('173486', '399846', 12); + T('133231001202043243140', '166046488649795', 5); + T('4016115014064440351', '6576217459168862', 7); + T('9c12flhfo75i23ia4q7pre8bp469dgq', '701074624625567608345494904482202635893993684', 29); + T('1091hic4fh383ia8bg3034h12df80diab7', '1620628900580902524870029713957325210730956', 19); + T('o8ioef0lde0bk138gc6agc57i5', '466926356481357301921407566566243000411', 31); + T('156166233517641635777855368480178700372231307125', '1153782478383987344932810256184711436759925846', 9); + T('i1hc0f8gdc8d613g31c', '4743234800984285827809232', 20); + T('353f272adf56cd1', '556923195492411264', 17); + T('63aj808b1j9i2l3752h2c8f', '2102800826252539448210723171375', 22); + T('hjl1da7gi3rdangpujtt50pp93in4h', '10531702766622824424209314777731567825942451957', 35); + T('3w', '131', 33); + T('95bmloc', '2250748112', 25); + T('k22vpihhfj99hk6e4iagot4tnf3td', '152675756450524691112514516843247633696893691', 34); + T('mdg36', '20720220', 31); + T('10459598a086ea0f535900e70abab1e2ce7377', '362873575854611890806983645493404163992613751', 16); + T('2376477566636626564635', '23033650866571372957', 8); + T('13914986769550370259286637241021842091', '13914986769550370259286637241021842091', 10); + T('11000100111000000111011111010101000010111001', '13529272635577', 2); + T('5ch4711k39hj9m10h3cc6lm19218k47eh9l663', '1344478086630991461378463072455217839508892798663492', 23); + T('63459562', '63459562', 10); + T('h4lbal07', '42968523451', 22); + T('35417144376113077', '1038983257167423', 8); + T('2isi9763jab3835ab', '1898862177205082054043291', 31); + T('1e97ga2aj3h09be', '2823746625228323834', 20); + T('2gmewjc0nsk4jug3dgwscu7', '6400228217909621185741059682632718', 33); + T('6', '6', 35); + T('3121331021101301211', '234027818085', 4); + T('3712ehigg25d5fcfh191d8f8de5a6f4j672f', '11520281194133048656485798164515576584655890855', 20); + T('434111433421313440000042101330304314030013001221322421003', '6620016156139174966816882667786009185753', 5); + T('2uaw', '113660', 34); + T('406', '1302', 18); + T('690tmau1brdkfyixuh7h4q0jg', '140340864443150170969873647334684597564', 36); + T('7hajj8r1e6e2g', '4027528437578814676', 30); + T('1fk83h78ei', '2081221039806', 22); + T('97', '205', 22); + T('21', '55', 27); + T('13j1oidkd2q', '335135749046306', 28); + T('0', '0', 5); + T('2een4crrde9s32jkqb6knn4m0r', '21038850143660963827557680221477657827', 30); + T('12loaj2940nebcem7l0', '16227765522388241333942400', 25); + T('2111100212300112320221331022013012032132213112003011213202121110311110231113030323', '13633934239202886688012669467423495607469030601531', 4); + T('d4d6hny4if4ascj159owdnfl8oblrxlvpty', '413441877376397794445086151818809162820265897964345799', 35); + T('8', '8', 33); + T('2220022133231011332120002011022211103321210113011101123030223230113', '14305810169077546460171468395578819525399', 4); + T('fid80b9icb16gdh3c1ici19eb879f6c619609', '173312570072706487103248993376364065928773435527', 19); + T('u5p39lqrcw82l0y9dpd', '311064991681509310112389324705', 36); + T('5788ebbbd', '59674095031', 18); + T('22322022211100011011323110102123130120132030331132000001021012322', '928020921651814319185701793477052109242', 4); + T('1020002001020111220102010211121212201202111', '134041409755206311668', 3); + T('61kgqe6qh7j6h5dmbhcpagg', '187437974023295879369323694043814', 27); + T('1525f4c59842083h36cch3a6acc92dh', '58487425566031862638196589521131679819', 18); + T('1323310230013310310020130332222000133132321203003331033322310230122133132213033030221300', '46327786194880935021662331012705260961479696272116336', 4); + T('1222112121002201101211021101112011002201122202201012001110220211212222021012201021210102002121', '467300445568875369947037784070967420441399325', 3); + T('8qonvegdmnu0aw5hw', '69568665577613648606318036', 36); + T('220020120220012211201202201211221022020002021', '2652757109859326311312', 3); + T('106327541747664237656046756411744551632275412233636062531656', '210781807562814008194311763577265460650228437440181166', 8); + T('19id0d164f6a26b01a8787cd386i66c3djf63bii3', '16455610792247832827316755327263321154889574099775563', 20); + T('3763572416255254335772542046235033', '2520123204503077543365320456731', 8); + T('14304746133086816270030', '1459645652707714950813', 9); + T('1001101100100010000010100000000111000110011111111000111010110101001000011101100011011101000100011110111100000110101010011010101110010011000011100011001', '1729790364338742795479957074258010329122965273', 2); + T('13640c20a010754124', '357697310375837778212', 16); + T('707506qs04orhsrerdppi1', '35973675807994335426304181530113', 29); + T('ce2a8529a4dchf72i9560j1687i9d', '133351074897666171754903799213958249001', 21); + T('24e51ifi4b152e', '94621388214723936', 19); + T('kf2792h1ei6ha1ehfhcb478671l50j', '17617644517562941018851095704171110933039', 22); + T('1kqn50ronep3ik2as71c', '10506891875702197951637673937', 29); + T('8fcgm2cc191v2k5m94q3d2jr0t53g6k8m', '12394963354787525293292048856772126140028495810838', 32); + T('1221203303301202', '1770994786', 4); + T('11024430224454000050552153331515000154434145', '3405930454233930313833095643386321', 6); + T('1ae3o0iklelbnlb7a5afldgoog94', '78973134539990265721524279153730463354', 25); + T('2dce3eb5f', '30433782453', 18); + T('12201db5b511f9fc661a8225f4f6ea3bc71e884g', '1092702138296823636859142055508527236195490782052', 17); + T('10222101', '2899', 3); + T('1a8j0feg5iefjah96dd0765a6adb96aeig', '13077143928228900070839845463145745373845976', 20); + T('r9354', '40906604', 35); + T('121024024241140131404411041240331403404323421413014', '128298909408254408631675074392372884', 5); + T('n', '23', 26); + T('okpcf7kj6gkaibogc87l755jk9', '5873631648722461721096776636076218101', 26); + T('120221112021201112010200202021111012202111101122002002', '34341775954281462267693056', 3); + T('351fbdagg58d05f37dg95b0', '3876964600282154058560351240', 17); + T('ab606kkfrbm0b43vt', '20450089454749253433872162', 33); + T('cg01k4h6e8edhf7j4jk3kgg4', '95601159367307880683256564463092', 22); + T('2313170567182781514845334162722086585', '52943234894452629237397323708821327', 9); + T('210012402421430434433211224202', '410248229704577054927', 5); + T('110001101', '397', 2); + T('230101001110120222121210110222233301023222023101213120123102130', '58839535885482273625594904155393209500', 4); + T('55e23b1cbcgehhe4def6685041h908g4h13ff5g', '2669182359503479925557363322521478498996957386414', 18); + T('1fc9hc27fm7f0b9gi05m2k7jaa1hbke0cm7', '33337457252900489495176823888495821992491880369', 23); + T('1699dd9a1d1861703c0557d', '107958390441765319600724368', 15); + T('14147e01ca6501f252ca', '94825344299726024102602', 16); + T('11c34b4ebfcggcfhae2953e13geg0b14fb8bggh45d35', '1036090998997567837002071965020056914329981363019169015', 18); + T('14a0291a2b388628531aa718388b5209', '3996214153071564773412011127782889', 12); + T('75362616525327077427633563743155774', '38963888713731612415310433147900', 8); + T('1a23264b6a079082734834885a08532421930329a553b62', '81150864498278616239579438837878483217874994006970', 12); + T('452', '371', 9); + T('144ma40bogqkpeo', '209181900230345710384', 28); + T('183252c3b36ab7abaa032914698b66740344135b3989', '1296812461469385668481395148233683766030915189997', 13); + T('n2c24d82a117md8mf', '1841858623472597640997953', 27); + T('1', '1', 34); + T('54a73437b957356ac721c801463275c6b763c2c5abac761', '9362287370778203876248441483257901259174776145134802', 13); + T('3dlfl87mc821m8pjbmts6fpo0u7kpfdpeo6l', '54254596415880694426461637870882068424348153030146597', 31); + T('4e7f9a6gd97b30798f976c761d2bgd412', '70818459574521833397436206841144875444908', 18); + T('14', '31', 27); + T('ai1hkchj', '19562256754', 21); + T('7968575b87c588b7c80ebb7cab7955a046255', '16663308132245987253286598155041222107098280', 15); + T('6g2626t1rdjf', '165622971742904452', 31); + T('3100548104371332670708', '340507102097498147585', 9); + T('13ec29c517d286454bde140c8c9', '4794553784351603034387761189364', 15); + T('20031330213232323031021000030101132211210133', '158957787606405250851428639', 4); + T('213131110022331020201132203013123012110013330010', '48846699476025920364315967236', 4); + T('2twkozg6fu4c249o5f5zyeec9czwqepc7', '179296745079015573585380066754316589663143881114055', 36); + T('26a7a2cc7339074', '9938939755610350', 13); + T('1401406016234566024656', '13862291742387612078', 8); + T('1a628b5613bb840750538548c20', '1099860000407698314785972483372', 14); + T('466', '1126', 16); + T('11021320220101031233302313012032302', '380331316042715128754', 4); + T('389hf883', '2127638811', 18); + T('29ie3ff4am2gmk8c3g5m6e21konfgj4m457aaob', '316274860130420327338945579781478121794869214895475611', 25); + T('202002310133032023', '36554535819', 4); + T('2d6g', '86245', 33); + T('3335430431155012310211122333325135535301201033251432425000540', '176432506934097595361072713115592833769129404172', 6); + T('28hh02ahb827dehd2e8425gb6469ff5', '113785157165293467441651522676088088311', 18); + T('lbe799x', '46401410229', 36); + T('542042344044043434516560152013305605', '2126711221789406518733117742978', 7); + T('14cc2eih1qbp7m1lcl1jgk9fr46383sm3vjp', '54455663158870289665155251942993016244412111864856185', 32); + T('301120302123222001', '53029223041', 4); + T('21002212001122001102111', '74328205351', 3); + T('6c3b796a99801633c', '4622054283778099219', 13); + T('527298604', '7643923564', 14); + T('ffaada51296f61e1e68gcf903', '5403735448335965376083431828872', 17); + T('470', '1577', 19); + T('rnail5l1bn85jq8bh7g8ln0kohp9fqlkepb', '1464423638887609511501651149716898849286416176934312', 29); + T('1eaicc6ocfph097440gjrr', '15465211311476430886891003649937', 30); + T('456655fiend21i0e618m4mm07bbg', '4955855013263935561852905206907470889780', 28); + T('10c69ba2fbc7250aba4', '14665823570079359829194', 17); + T('69971c', '5043852', 15); + T('1id9l4k6i8hke4n2d74e1d9baaij7llg8gbed', '368762199829326281974893275218436743619213050257238', 25); + T('5061106542532243626312166650455043365554255346431466040', '22133959010696779781390318938330831551505973337', 7); + T('5', '5', 34); + T('42224339b0580a7b7067022a', '27704115985298623082217538', 12); + T('74c698493dd81930c415', '551457940709438745789461', 16); + T('1cbi34hg3521e104i1hc729', '22589935080941762817906922306', 19); + T('13b0q6gqemo3dcj5l06f7', '197625953235284830356426908706', 29); + T('230e5471ql17ronr6cl', '235869451232670303532443141', 28); + T('3ea2ijlp8cjmp1', '14315135597535072655', 27); + T('242172304552', '21775354218', 8); + T('23705742311920354491610', '23705742311920354491610', 10); + T('40325421556234466622163363452036405', '220223274809854189346586380853', 7); + T('ecflnj2', '2776273802', 24); + T('33509', '506009', 20); + T('1d01a5hgjl7cbgkah3eilbhi', '11951010251677826156024965580908', 22); + T('kbbmei7l403b22c80jke192789k1jfldih', '17733393536564264087317496003121331121456941743', 23); + T('21b45224568eg22ebdgdcb', '144938388338383501238036430', 17); + T('8d6gezyo1r7kgunyh6gyo3vwlrv7n', '315495151231056477198722506140404177883380675', 36); + T('22221001143240330002123400003234100102313423234421344304343302', '10831690462680924247665518681482540721949827', 5); + T('2u62foj1jxdqq58n3dj8ksqkst', '1143893514844433004546634072814737767134', 35); + T('10325355', '2206445', 8); + T('12520777811783201841298519685547286', '12520777811783201841298519685547286', 10); + T('17e8083a944a58d2135204de1d42a2e4', '4404340011548131300800772375526798164', 15); + T('1118a2416aa6553752761a', '8183802068176534960841', 11); + T('fj0bbckn6mh7', '24031145125734175', 24); + T('4mdje', '3846284', 30); + T('dj0k7665ccfg4fh5ld73kej2gh73f0feb74i3j', '648001720001923293019461828150893010954852476585805', 22); + T('14443534015344414233131041354', '11049599345097890843494', 6); + T('35c274a509b72011851c279b1205', '4122336741698498861081854592794', 13); + T('e0e56b076bdba54babbb651486838bcd107826b1c9', '23326277500217281890367493168426531936362798766289', 15); + T('2achhbd88bfcc090f339c6dd4gffbe9bc245h3', '72332440899007196422573251018352913217544180617', 18); + T('aud0e484rtppi5k', '12927724743456282429620', 32); + T('1893b577b113ca2', '6577012154487127', 13); + T('150414855', '2005058907', 14); + T('323614332751473698986062206774a17305686a63090457150', '37696720390064545358579042379279742922532057398473550', 11); + T('e8', '344', 24); + T('2e5f2b623ba0cfee63689d427bad6eb6be5', '252471852786048400736119714699808445524965', 16); + T('79c6i0j6k19ml660j1c0', '553239859980946859861014156', 23); + T('0', '0', 13); + T('50030224252340154430425145221531101235', '310311840929542538031369361751', 6); + T('d0ae9ed728d186863961d16b1222c198687', '126669789677015144972609639930049865196602', 15); + T('c48dweo2roi3gkg1dc0hum03a6lji3jj', '3626814969878210822526263491353744863308498468613', 34); + T('34', '100', 32); + T('118b8a7ac2ea6941525103d16a8bbc5ee845d3d00db635', '92837971948140306642985790446832742660953864264056025', 15); + T('10011100001001100111110000111', '327470983', 2); + T('75c76616828b228bd7455c2c999219c236c4a7797917ca', '27940171295879883706960540178285471388494888097624886', 14); + T('kg179j06cnn1jh6glmrk3s141h7f', '156589475611419217431593938280129049582525', 30); + T('a5b4480b333', '649859623959', 12); + T('2991ermf1od46m', '36829745558819094802', 30); + T('16d5jf82kec707f9fec5df91i9k2b7', '3974871017260808935849561835122343397100', 23); + T('7287daf9101b1baa352ge5g50a15a2735eaa2ceefh', '20878363680987496322793600785003364424501723901933639', 18); + T('553423232610330161355053636604102414210315', '257966622392557728002609223143145240', 7); + T('1geeiakd63', '2121886850779', 22); + T('151oid', '60097918', 35); + T('1554db786111ab83632c0c3569728d55', '469086419082028176209975038936729727', 14); + T('6d2cce94ec843ac0', '218122797689114268240', 20); + T('ehkhjkfaf33r5n8r5srmth', '303423269013943738843820005454771', 31); + T('17', '17', 10); + T('1f0f5867d98ch1aeba8hc69dced97a413f', '487366045647121584986060742937193428723689', 18); + T('10200011000220120222', '1422685484', 3); + T('0', '0', 35); + T('2dfq4gemi4r9llwr0tujr', '5649561877814315213511808712184', 33); + T('1205ndan1', '224960838103', 26); + T('2afjnmenha35', '8837961904857363', 26); + T('1d51ii94186ifc1d5a5ih301h2', '557924059465873457492743606880742', 20); + T('r5n4g0no6ps5gs', '279088576244954004402', 29); + T('3j12unn6frsvwwb', '21668993189574689558603', 36); + T('37knjjig9rjji', '760884044919918742', 28); + T('1foo8qbpu42m7vim', '317396884789932427278670', 36); + T('2bh', '1893', 28); + T('112041514360454142431252232315620204503134442616', '6215681033732759258603480209777352275820', 7); + T('10100101011', '1323', 2); + T('22013130002200100013310001333230', '11663208147409969132', 4); + T('15c19888b148407823b9c1828b344b8c4a4b9478c846078', '2539097207098298474524756002937168478008339494491634', 13); + T('38100741b0ba7', '32754548919727', 12); + T('pqhp4un27wniedjg342ce4ssn18kj', '441373172882700032180399107069795794985758394', 35); + T('1gagg188890fjbc94jhh1k4g0e52', '895153322821681750246160888581105058', 21); + T('4h319bckj0xomusrreu4e', '19188647657289503363275186769038', 34); + T('1001100110010000000111010100111101011110101111101000110100', '172896507987163700', 2); + T('1f2rp6t0eftije2', '2646676016339395366328', 33); + T('ef2ahd7bgg654e7hh94bc7f1', '3815003844814091481285089876188', 19); + T('13o6kk4kl8bn846', '125216551882870328787', 27); + T('33210310231123020200311132220320203', '1149259353017133207075', 4); + T('114hda3c9758i3f80', '1514391907433723410974', 21); + T('6f6j846ai9ssd62qsek1a1', '33492652261548954183529841322978', 29); + T('27724823338b9431001b31a7b13237ab48b41188850a3b20', '1386830760394607501538378708339339174927213150934152', 12); + T('6jbln8sfg9bmr1gi3iqtmgi6c3sn6pbhbd', '36947529442995940436549729882382448862333593362643', 30); + T('8764hg81h7h15f7deh', '18379721313637192662857', 18); + T('811gj5gfidgpeb8mb', '2011069496924051490676563', 29); + T('aaxe', '405736', 34); + T('305383c510aaa4228', '6592270467788129132', 14); + T('5503607200750620360575714717560', '6972513910589491335440605040', 8); + T('116645642868217044018', '14517737883366084548', 9); + T('dhahqnlrok4pl2m', '2479775577014041842782', 28); + T('cpf25ffg8l3p1ib1n8ga96j2drl32rf8', '9394972520892725333788219596291929339951668956', 28); + T('6kpvicpldai0n7rnaoe9m9x5', '1107286946452408105661642622788152587', 34); + T('261ifm0bpih8irntbt3enr4isa4bn8l3rtb', '367197720067086066449024042284301785272031948516181', 30); + T('2032022213100210301323023223230232111333113222333230001112', '46135451060314504303355529120366678', 4); + T('cekd17j1k0nai35oaila6f', '6512290589845536947166047665595', 26); + T('1sa9ql0k6vq', '6528811470402518', 36); + T('2788515c1744b', '144221635071147', 14); + T('38a52cc273671b0b8b078ec7f7f17102c9bd8c', '1263230489190036409842245570352830262209527180', 16); + T('66f56', '535030', 17); + T('197c7cb589c999e015eca97a72ad491c9ad586d019ec', '610090894842715166825622127314166839310002841580622', 15); + T('2guc902a8t7jun5pb7pb7ps', '3283701567832717695895623064461116', 32); + T('78655d620287e6db76141a906c5701bdc47', '655497934873142286500331809443840511433799', 16); + T('4640170a8e173a17c97c572dc4ae', '250998262368302692675285521015314', 15); + T('2133433400401001132230143432411300', '273762691502915134653950', 5); + T('147876bd8h', '623895453377', 20); + T('5462cg16c5d87aadca1f734dce9e926', '1204772766075379104025376180982802601691', 19); + T('6eecb9a0d2fdd3b9a541f3', '134099742883823958727410163', 16); + T('gmjc8gd6ld67j1hcg', '205382570774701498109296', 24); + T('1', '1', 33); + T('2523014035132512253315120521134522513331043435134415550024255', '141880014505703112137860189697781827375878410347', 6); + T('11m0cjg02nme2e96a6kdfmoodi83h7p', '3013031187307321824945581807606052286997163', 26); + T('10110101100110011101011011001111000000100011011110001110101100110111011111000010010101100010100110101101101111011', '7366609054351701610086110120336251', 2); + T('1dfgb3f7dbb948e856b4a8c2fcac6203f0b1b54egc', '5181812657853529080935299746837888070235867612047476', 18); + T('54', '159', 31); + T('mc8b5e3gepf1q233', '525523234314787298854260', 31); + T('4sisanoghph8mc4r8ko0tclu1hokowgra8kv', '684135811180224801018880221858811529488221626606104369', 33); + T('d4c232c5h1', '2630171232487', 18); + T('7hc2h7i1e2b1e36cce06745954i7552430hd', '27076706386804313773324111944537138361927064353', 20); + T('149256bc3f1g624487', '1048037012773290717716', 17); + T('102210223032321301303033111130', '334582412443710812', 4); + T('ypasamqyaijh238', '143737877066768893777688', 35); + T('6ltpq9plna', '177369251586825', 31); + T('2f8fa201f5vl6bfy', '352859176463170667696909', 35); + T('1132608609770787564030397938212', '1132608609770787564030397938212', 10); + T('2dnwsieep7q9', '122108426181152211', 33); + T('10729856', '37631874', 12); + T('332b67', '1205900', 13); + T('54bd61680d7ceb5beb37894e46599ef77', '1802215542237292717156325458542562242423', 16); + T('3623770788ce585c3', '22397781910457053308', 15); + T('6', '6', 33); + T('1jepg0je5o6n78eoc4cbhchbk1fmg1i5m7', '86673579277719196099662870496657925074641748567', 26); + T('7', '7', 34); + T('c06k2k4eb0g2el16jled', '896355371037423667067354202', 23); + T('3a847dfcee83cd860720c8c0d8b53c7fda25d77', '20879758636120455697847204680129815020870720887', 16); + T('70', '189', 27); + T('79526679b2739b383954', '168988259175985567289104', 15); + T('4c328a9i09ign', '267323824394683548', 25); + T('eb6n6p2bkhqi2q3d07jef4', '16500933193925506222917225700348', 27); + T('a78345b8a3ceaa785c69b82b86c47d0b8d3', '101958714004435870099940928484001465270373', 15); + T('52a1a7655a049a554107197757', '570549577195104508415580932', 11); + T('8l0nl0fl', '150507080301', 29); + T('1cia018de01h0gffh28622eada3ie5c55fc7a7', '346689972196368767502452114289967602936650680304', 19); + T('bc86c2dh', '7158384323', 18); + T('beb66h1b42h1g6ff', '796506101028725304813', 21); + T('264701463721526107175255711722057442604571730762750705256542', '541396336231392418293871062570279037186171679825812834', 8); + T('34d17g', '6164890', 18); + T('7n5frqj6lbsfoshfh4267b91n45qf8f54', '488443138181884558426267360141962918059414061401', 29); + T('1bfj5h5mzx13z6slkfsw1mwypqlsmgs15', '83453369282181797046231963508586180290313617770473', 36); + T('1b668259809mpno6edljmi34n', '13043612843565239822455698795540027', 26); + T('10', '9', 9); + T('22b658253657', '1669392598243', 12); + T('10312223132113013103211020001011302202', '22924085214109545815202', 4); + T('e8a3gc9b39qkfhn7a877k8', '73337537709170036461394725372187', 29); + T('5ep0b0q81j7mhmg3lklhhd5joil2qq71qfih', '695418668680819693407024988950834157396053624624518', 27); + T('7113127129610017826894813814734722', '7113127129610017826894813814734722', 10); + T('504833417050a175571a00033306070375784003', '207340641858777856714830237467106311988385', 11); + T('78qc24hl01o32nl1b9obkagkl6f8ei7gp', '149119393785412110406988347201245769764862541001', 28); + T('fhh78b21', '14250920874', 19); + T('4b5164fbm0317kei7mh2jldnn12c2ckk', '27325910626851946593723470147559719546669300', 24); + T('5e0ggb1f199fgbg7hd6i68439bhgc99e95g4g1e33', '8109668848249742565130771662601144027802596607563179', 19); + T('3', '3', 36); + T('97a8liq839q2jk1a2ecnpcdnalfp3j6iq', '188719129529654657714378849535242845096426504370', 28); + T('169d38a3a649737433d7c36863d9ed3c981346a8632c', '538850185854491322031700163636042819763278649644717', 15); + T('5rc06oo7', '248431717321', 33); + T('4mjch40iina71khi374n0iln5k75d89', '42256608840244945294489743371747073478088568', 27); + T('12221111112122221210211121102011120110110220000111101120212101121010101212121000210102022000200102001222202', '744470241433567593087124994714749545239291673387755', 3); + T('2db9303w76pg3tf0om982eub', '202678684562832691213375034394009638', 33); + T('8us3ppu', '16323958905', 35); + T('76eb310380a6f577f166b90d28c3b107a', '2529121398079147937688504401561827086458', 16); + T('6zi4pwsxbopeuo0', '42901925859461436709824', 36); + T('4wtm0l6op452g5d0ukfuef6up', '13900763662628056937835621763527325033', 33); + T('1jnih9p6qjf7546jp0q0l8ckc5d4cmd', '44403896952339670058436709191269479548991285', 28); + T('d912314e0j7d945', '22041016952382027685', 20); + T('e6h28', '23816672', 36); + T('b73dda2c', '3074284076', 16); + T('264dhk7f', '4135804884', 21); + T('804274228116773141152427814054250885', '20158575172598902835228115918096347', 9); + T('23ib3bjdijk8k4bb5410a', '607873769279078604965999731', 21); + T('a6hb4dbg6e7gm42nbiem972baal8d', '4549058722674037827068667071194505505805', 24); + T('45d7233ed9d3b02ab1faa0f0d9bf18ac5dfe5dd', '248086945188765744497478402146757696039664616427', 17); + T('3122203153014053123250405454054141255311243322', '336066208633979782737442344609629378', 6); + T('4301669926304aa373740a46326790932a036', '132118669959027389980112041611329718317', 11); + T('adrp', '341881', 32); + T('3233212220212010212210020020122021312100310230101', '296614965335263805059597814545', 4); + T('34j62ge2m30kk97jfj2ade', '126716918529588548517026652077', 23); + T('2dd8', '16118', 18); + T('cbi6cklacc4qmhpeicgk92l4ecna5dio49294', '155480057705826337198133385077759543587893171560517344', 28); + T('1cc9', '38169', 30); + T('421625631535034357267563', '2525290811852796555123', 8); + T('1qj838bk869igobhjoc', '115685339404443983601600810', 27); + T('54cb071386a641e2036589bd90e3d49a6d6b7a37', '39240766526100951032727242882830164365238920302', 15); + T('2ei963c32bcc9f34g2ia66f91eh17h3', '642555509107905840901107486734813888017', 19); + T('57aif0f59', '293069958531', 22); + T('21066a6d790df66edfc', '2982109405734959108902426', 22); + T('240789669949708542904a12267392', '3758762420368146985528482557394', 11); + T('3766050301207656231423150647646364447', '1291785946520991837632125610879271', 8); + T('151310021205105422405525412313052003545043034123332302', '327490019360437760098446140776026159705902', 6); + T('1df4260b790d60490a8gfab1c4cbbgg12', '4303564154827738667782109938928048999136', 17); + T('145066c034296c1', '14572212708973081', 14); + T('2cm4jma6gk9', '727710161344441', 28); + T('270423591a8477593a978265860659850482952a2629a', '17490584572350116403287038674890859126167019559', 11); + T('8brgm', '7742334', 31); + T('136q2', '1301126', 33); + T('be2b9', '1873029', 20); + T('4o23p0d6an', '37303140766586', 27); + T('srf62prb7tl7qk7t73dte986otnittnlkca', '43189112923977571782711948149497678772791160765862282', 32); + T('110110010111101111010001001101010001011101101010001001001101111111011', '501483179338306460667', 2); + T('7agbe97851ffc36f1a99489162b52eafb5', '307786361732642783601055064914331084965166', 17); + T('9401c316a2c5708b', '476467776395576743', 13); + T('48217637502968090', '48217637502968090', 10); + T('3fon0jpk1jo5p9pgr6f4c4pp7so6nhd95pb', '588290809092568702675103575771741647312948810878261', 30); + T('702dk92kdad23k6ljd9i910', '2391852600323744303903407333754', 22); + T('25dfea9dgg42c49che64f7bc8771idih', '10077817429629058832781708059900951083873', 19); + T('5dc14757bb61aec90e3143c2b14ee', '5045511542117661075208474024001999', 15); + T('bo6k19juf873a9ibk5t09fgolpol9q', '209254750018939653487646684289205340364736495', 31); + T('7', '7', 19); + T('eifh4b0dfheg19fbad12jb', '87013738359168431501653737926', 21); + T('mgjdhbaaih094b46ojn80l', '5154851507795871179377927708146', 25); + T('2go8sf6in0img386olmhfbmblrop1e08c', '161607556749841399584405686305215260945437777544', 29); + T('6', '6', 29); + T('7mpkn8g3o0j9pik6fa3ib23n9ia9', '1261958045881925421127437894220522481101', 26); + T('212231022023030131223130221120310223333', '182782071163972676176639', 4); + T('2613203210505455264415513332655241663040344635106556455', '12467081099669883703235113908035091968240448895', 7); + T('1630720467054635751474753253627460422', '583694432446675939525765785084178', 8); + T('94hejakd137n48k', '342285102160921065220', 25); + T('167od46an4pkpsi3hl9erab6fcb7s0ebnb', '2208752247116288312429398287096265138047341117708', 29); + T('1a6kf5n4jb8fdfihm56km4183mmic', '632147076529030884714528591446221784892', 24); + T('1160605164826248954349876602042464161647577454', '1160605164826248954349876602042464161647577454', 10); + T('hc0f09', '33387237', 18); + T('3964660993859239689981872620682101954389246037065', '3964660993859239689981872620682101954389246037065', 10); + T('3fd278b8d795a', '1122771216988506', 16); + T('0', '0', 22); + T('12a572492dadb4c41419e14e5e1d3e93689a410b8c90', '440134561263388299663890810636098917176789570414835', 15); + T('3cat5h5ksknnnq30b2scq', '2283068063004048177101847374756', 31); + T('aa58b190195b8a2b242c856', '34697005906923003886801890', 13); + T('22v0inp', '2247117561', 32); + T('9c2a9e3dc0a71', '1273077348403606', 15); + T('if5', '22580', 35); + T('l9yagt4k1l7sppxkiv0bf', '161971068528812396345997940762650', 35); + T('41opx0v48cr1gj9uvnlpufako9abd80q5w', '1400711475411842935054148452748722383058297214051090', 34); + T('66odf78si3pdk3i63forppb1lgll2b86dgr48', '276206081640004784888361976308196895753527959765633826', 29); + T('6ac7e0cd1808d2e6154b93134ecae5e', '1289018068112858182387369331118635114', 15); + T('310111212000103', '878075923', 4); + T('14555f77ja2h486d', '39752861388169155333', 20); + T('140102440103002143132302400040001223232103134111223143040111130223220401231404', '1197061222107197331414639288099046337494969650509398979', 5); + T('222012020000022211112012200101011012112200120121', '77383589757349523721532', 3); + T('gm3hjn22oors', '204516082482475075', 29); + T('11001000121202110101001012000222012001212201210210110000211222200112001222121212111021000', '1305279370208619893883805792602512582417319', 3); + T('51b6c7a9820878798897', '7521848979002189462794', 13); + T('2584a257', '88684771', 12); + T('9622831859834a72a75a2', '6434216029758043315681', 11); + T('10121110102012010', '51794130', 3); + T('95607761058a3876984a1474768133331', '20067921113189362115162324154987500', 11); + T('1308584667613a4a2a51451862', '138590144081857578198409796', 11); + T('303124303051000610137231406655066133635770174121', '8500626221290107216014710817942733884291153', 8); + T('3b1j1ea29icf93e1h52ac21db04b9g', '190851477248266851912684038197347236596', 20); + T('b7b3c9a57487c1c39c51a44c4884847', '30405998793962949996970230863617614', 13); + T('23956aa67a1c0902a7142c5a42a289a', '5990721395892835344544973452522160', 13); + T('n2dro68c276c1ao36m29', '500136698154468954862520957409', 31); + T('mgh9n462o2da6iikmh3b2b2gme8mgoci', '491530325873995573329061908191309647059640318', 25); + T('4l38xf6', '8460907706', 35); + T('d5f1ab1c85421854', '201983925762344371011', 19); + T('6272990055345011144532205391668424858014', '6272990055345011144532205391668424858014', 10); + T('127il6blnag6mhokrg42585i6feb9pj6h53lq0', '379103572560507898585828059072007254689097272767096168', 28); + T('3b62hnjnf2ag543c5eokdgllejg8kkf59hicc', '730518050516683388784082123629631983409244437386562', 25); + T('8nnheh9l0906mgjb00cjgggg4inh2k3b9d', '31709631306533183931103075528584558673938676645', 24); + T('132', '132', 10); + T('3h3e4c00eiih1i5eebifh2h4k4b43', '40175422326439172482436371700536055298', 21); + T('2121434132', '4483667', 5); + T('3gse47h8l2j25172', '30940800974512039283108', 29); + T('341000443044511215010354204103', '136127973237647033674695', 6); + T('778da0c24f47774967183e20f8b1827299f', '650909720313013143267150228395755917748639', 16); + T('qb564jneaor2otdhc68gqs123cfuk92s3', '13948377585746116315226679137884300625553492956545', 31); + T('25ld', '48425', 28); + T('gkec3qp6mrsi5jhjmef7no', '174506635997402423118687087352014', 30); + T('3j', '109', 30); + T('11211102100101100011220020122000121211112020210220222100102212220202011112102000210012111', '1561458763443428746693446798877497187904716', 3); + T('145454052052432542224044220140403512204050112451433414045020354033532', '150096937333395628734778900213563908439843747504734720', 6); + T('10101110110111001100101001110000100100101001011100101010111010101110010000000100001110', '52848936898297944277057806', 2); + T('5736c9b7f9a', '32971047415618', 19); + T('1674507585', '1674507585', 10); + T('24hb0b4gbjf7cgj8', '73527411112945222788', 20); + T('1al5bea9j3kd3i3fb871eljb13kkk043gc', '1275824033146566143960476806758461477943738798', 23); + T('8b2', '10766', 36); + T('ba6bbb26802b2a8a95420b97781a2058791572601506226', '521464466313915762537835346317353826045525484287422', 12); + T('110100101110001101101000000010100010010010000010110011110111100110111001010010111000101100100101111001111000011011100100011110101100111110001101011011111100', '75247462135135296147483304900271494532907456252', 2); + T('1113562110102132653505161654522056473771101354321312031', '6710609582342689120085581704302230873683253367833', 8); + T('23400502', '44933836', 11); + T('228vicgd', '71168504333', 32); + T('3003414434123423022213024230441220102414322224430411', '1346050865149295997081509487231483231', 5); + T('m30phl4khx84xsj34wcdqne5itfnjjtk4ep', '259691039455794091563131654919327983964194791661478421', 34); + T('22461a6cifde', '432283541270274', 20); + T('1464600512311275', '56401597141693', 8); + T('2121122202120101111210020220210', '538808295256851', 3); + T('3330012300031114401330014013441', '3464973034967461079246', 5); + T('550', '660', 11); + T('33020323332302311', '16256068789', 4); + T('1dlol893q3853m48g92636r414dg7', '49459728783752884863701490260561300521367', 28); + T('6bmb2mip8fhq6bghjd78', '10108171592176668723712485818', 27); + T('959m42ii3jc', '878888942861737', 25); + T('1063bg6bn14mfk3e3o1', '29746944359805875726720509', 26); + T('35261605356', '3938913006', 8); + T('4bf373d19052eb5b393b58', '1068860929333821354151303382', 18); + T('752a4gp58hf3pog9mngpebo2', '13831046927668991950153094727269842', 28); + T('4211', '556', 5); + T('433500525', '7737317', 6); + T('4gb9ad76g2d4af481022d256929dg4dc87675', '985133603874828141261886573157932023568227394', 17); + T('1dpn0de8fbj6l2ckd567ge8maj45p2jmfo', '76060515087749557754895067969401915547233012014', 26); + T('6500d', '413709', 16); + T('1000100111100011101111100111010111110011101110011001100111111000011001010010101011', '2604661372805165686559915', 2); + T('759oe0fl', '156973518471', 30); + T('4h2op13e963hnhn1l', '369608946272770491801516', 27); + T('et76apcban3', '54151698158762655', 36); + T('85a47b903a7', '50835737401094', 19); + T('70b49g9382g', '25117276340860', 18); + T('6816593j79822edi3h7jjbaj5i7', '152330705063267926722130069067111965', 21); + T('8h50j6cji851dcf3c90h6b', '51537232193150669639514304916', 21); + T('b1uvn6m8cvfd6of', '67867262563984521850383', 36); + T('122221233120313213321122322320210031031', '125861429895573339784013', 4); + T('2595gh6a7628705i332884f51c9ec', '300353510882507195422219641808364360941', 23); + T('200212120111110221202222101', '5330324508112', 3); + T('15iji6dk13d61ah4a91m4eecej67l2lac', '47125646686754897581267667193187325517140225', 23); + T('12ho', '26588', 29); + T('4j', '115', 24); + T('110000000011011011111101100001100000010100011110111001010101010000111000010000101110010100000111000000010110111011111001011011110111111100111101111010000', '8573066822280330509997029656969204484303387600', 2); + T('3e58agf9190dc826cb8gige5hc', '1246066562583123755485476924274352', 20); + T('3706961c2b', '5952582721395', 23); + T('106502144', '6555497', 7); + T('3451a499a56354705154686763a3a37138', '79114710272261003126294782198609671', 11); + T('9p169c8ehho986chmfpe0', '420843323139258346157240672220', 27); + T('14eg266a', '776416222', 18); + T('116502640400620343322', '102138755603486562', 7); + T('28355677004068874128443313', '2106070737272795731626021', 9); + T('nqel8nnfk2e99k3id1m1kf299h5k', '10634808758829298719295188434620358556776', 27); + T('i', '18', 27); + T('501514303011045351151043045025413430140043211223124', '4083661748572002344042581553196268202332', 6); + T('51jc67gtmj92p0rqg51w', '1096729190801416843188189049067', 35); + T('5a1bf29425c38c8f22a81fc3f105169ce4907acbb7', '131694699796400245476746024523885969905255483886519', 16); + T('c2a33e', '22944128', 18); + T('7f5a8b16ad9c9b6gbfg608186agf38b91', '115776634518774027784211063476397070420703', 18); + T('1e946da5ed27825dff2', '9025563349429600509938', 16); + T('8856957692761177368973855070651649a103aa', '360994117177708368729629428077578463699360', 11); + T('2010211102200001110000', '22404845025', 3); + T('5379a6cc3748', '9456611769938', 13); + T('3a4b04cb4b528e10c566a180c9477c5e10d277318008', '1376197964280137220342614148681543675554523110918258', 15); + T('8vs5renyzluyc8rl34fib3ui5wppiggae80', '729183516825929850436740277863751712823686402504398464', 36); + T('5827701587706499416955', '5827701587706499416955', 10); + T('42591fk220i9', '2396927578798245', 22); + T('oajpedj1e17q5dkge', '1946120213098978975238603', 27); + T('1111000010000101010011110111001010001110101010010110011011010110110001101100011001101001101', '2326173895977887311754310477', 2); + T('7cj1ah4n4mdde4f', '483161982916646045703', 26); + T('10hcg8f0c722giai9cb70fci7f6ag', '669672956840092248394431297216875488', 19); + T('20212212102', '135497', 3); + T('52d16bjjk5b2gkghibk4', '164105040092908202550049352', 22); + T('5a5c32b3b39ca1c272c0aca32025182b0', '2570064118523150975450771620831844886', 13); + T('23d288aea4', '153856028324', 16); + T('116050533116030', '859603851575', 7); + T('66ci8if75644500i0f23chdag341fb59j49', '1087881863946554468036969878132901480676079689', 20); + T('6384llfdke9fh5419hlg93b', '34862705286427416058205496740086', 25); + T('d0frhs4ruangmm5jhp', '293524371757655532307398620', 31); + T('1ba588dd51c1235d25d2bb97ddc97300050bb38da27', '2522944524206913556204355519010579773376112207235', 14); + T('ae5ffic9a021fa', '452195817972105538', 19); + T('26444016101', '833900621', 7); + T('33233113022222331113010', '69225388168644', 4); + T('4bdc3b2b93e8cb0967b92', '5731840537208636428417938', 16); + T('102jd5j8ejebfd265k0mg833g8gbhb', '3107718466423767292009122732909038798627', 23); + T('74difk793cb96h7c3d6fl7kjc', '3457816970788290910213733483049600', 23); + T('30221001210002312311001220210', '227720131173947940', 4); + T('b6ba0a739c89b435660e8134449e3060de60', '1667517158964041521729990635459641284368990', 15); + T('df86plbcntpfs51eje4nwg4ihv', '1235835514259777075839888411102059589165', 33); + T('506132050005635323464330614633642404063404361136411512640', '1084754468050903323226297755149960657030618207525', 7); + T('12202000222102211212200220', '1621734114201', 3); + T('51j2c9b1085a5b98679e65i0gg1', '406702206426087714623273688096310561', 22); + T('22g1e05fd98e04', '21526429538375015', 17); + T('152305713596150626771408a7766a35065348310122012', '1181335871352138289886257270048037267074936415136', 11); + T('10717758873411', '2768061987676', 9); + T('85b83816a07b493083721288', '56296106638600534110367304', 12); + T('5j2bbmeba3gfeja', '121922415384534240082', 24); + T('8', '8', 31); + T('10277607558022478675857166831738961', '10277607558022478675857166831738961', 10); + T('101010110000111000011000100111111000000100110110', '188077030998326', 2); + T('5kpm5tc', '7270492758', 33); + T('2506a714784', '63800374554', 11); + T('34043042242013301344041302332230031124003430303014131313322004244', '2080090103990504899666426994140445994059953699', 5); + T('2263011b5698730859524510806838b7aa365bb83863b92', '96993840751786125665886676025172179431233429573854', 12); + T('m6m84kdc', '75938273001', 23); + T('38758513458382788045178062860185381467215842186888002', '166292428083754702524723009147547249346798940043838', 9); + T('4bhnimqepln5fa16g', '630260532539082351528008', 28); + T('1555100535210245322041304141135342035015443', '960612721329969379046956918521267', 6); + T('18b984126ba54378a409197b61b33228772b5b4', '178481932192815614023496736965622010377112', 12); + T('85c3ec713a41b3a91', '55094814325358219386', 15); + T('e45', '12725', 30); + T('460844611766389887ba8ba4a2b211079714', '266086624761556754577648371384666605504', 12); + T('225624015211256062001324334062320', '2657607429475613454644488243', 7); + T('686i87fbad4c59a8a6f7da1abhg', '510102928348460205068613539295917522', 22); + T('120354645453413557275444611571627313424176417756144520333753', '240836899455748097083887093250256470467559683019356139', 8); + T('3dqg99g70qop9ie', '384933516113618232755', 27); + T('h92ioci8loamk', '2602196299100018423', 27); + T('3', '3', 12); + T('1473631257945483', '5949114354201252', 11); + T('8aqne3kd8mhhr0k8b418473ei', '1048637133019307092199604836008301958', 29); + T('20213', '2673', 6); + T('1gi3ib2hi775h58918', '24189219409084535267628', 20); + T('29dc54fe38ig3f5669fbde1ij0', '833503078428796826688762347855580', 20); + T('1325d509c65da973839227b8c5143d6c43d993cbba7b5', '329881289130026584178299136878593170302229089677819', 14); + T('14g49i7j7fe3cc7j2c17jg7bhgje4b3g2fh70i3097', '272802468690487870109445646857507298063115670210904187', 20); + T('1c57b1', '1857457', 16); + T('100hd142c72ef166a6h9h445h', '4911395571502197789470629148686', 19); + T('8piopdl60m7c7p3hmlpsb5kho5amsh', '156766692402888022009790158482742306168035518', 31); + T('124b6bb98c1280c5c053155cb58ca9a7b', '523703265361788077644933507150951633', 13); + T('15dgfi8756e5647c3h73be76', '335597289586138002689108049036', 19); + T('123c', '21234', 27); + T('264453362706666107438146787', '17589366337294688071335514', 9); + T('1000001000110100001000111000111110101100101010100100110111000001000011110011010001100001101010001101111111010100001100011110010100101110000100001', '22684678246378182819785716745165465876847649', 2); + T('1fcgaha8g23db586i49ifd5chc063', '1165185085777837851964737766554067371', 19); + T('7pxo', '331929', 35); + T('f68dg44m5kp8gpn', '1666876518883127367662', 27); + T('a09281016407aa888667282461b42b069599a9a', '1027211842920428183779353394595382499256278', 12); + T('on2hn9rpaemeadihgljn6m54agjhb045hdah', '11102396046178622275186103353743351877958935735136185', 28); + T('11k180j1fekgi8sfcf63gfdhnfghq8c6hbkng', '46875230493473105664159872712226948600083973055131500', 29); + T('1a369a2616a711306a6434287723024', '33835620048560993311538138158584', 11); + T('415043345230010025122031405052354214145335205523543225245522', '35100339098704592825154927338841645808437394490', 6); + T('1re38adrm94', '587148820026528', 28); + T('7m2g6oc0lhenclidom2kagg5kfjg4oina5', '106851402006098786130154554561772902036425686505', 25); + T('332728', '332728', 10); + T('1101100111111101001001001100011001000011101001001100000001000111110000101001100010011011011100101100000010001000100110010111111010011111000000001000001001011010101111110101', '5097456801022432585476312678303126165684672742665205', 2); + T('6g98kb47i93am', '147121554856091277', 23); + T('6lml', '218837', 32); + T('3fe26f336209d592efh3d10bb394', '30258541260323091988380754480565626', 18); + T('110100102002202221', '177188389', 3); + T('b6dab6e4caceab483d2085d9d1766a088a19', '15928860703021466826033711809396661962705433', 16); + T('1c671a9cmkljh4739491kg32eh09f8k337', '1326625039330667581969787383813804136095791793', 23); + T('160b6959844a8ab23b27a69001', '1437328315622303205888330433', 12); + T('407280517b355977843723144a93686a45298640701', '8572038042461765480971133069199082943420256241', 12); + T('h975age91371hhbe43chiia2d', '85698406450142962437373788380907', 19); + T('0', '0', 7); + T('20013045354031552445055', '264171391963599131', 6); + T('38a2de70alnb0', '122375305409282760', 24); + T('3c9e2c9d', '1016999069', 16); + T('0', '0', 8); + T('eb6j293', '932312983', 20); + T('10101011211221111220222000', '953771059485', 3); + T('14ly', '48544', 35); + T('4a52p0016af1', '16120814872832879', 26); + T('160daa1h41jj04i628', '17061519740979136786448', 20); + T('32fqepsd95teekq70pbo', '667470048911505020976383369784', 35); + T('410jnn8bjoeomk74fn4ja6d', '124788397270763513083091234145493', 27); + T('3ef3fa7740eb1252gg5fd99', '4552875972769088346240367764', 17); + T('7775561', '4183462', 9); + T('3jou26ds5l3kfobk967jve6hbduuq8b8kkr', '15332447576016846623868933715298495290279226254477197', 33); + T('3akfed5xjcd7ixqmjbjlo', '25129890463803560823611370723159', 35); + T('66cbhh9b922gg5jfg47h6j', '13278090021200453785331902939', 20); + T('27eedlhdg8d', '1836671735070828', 31); + T('1020102102110112', '17762423', 3); + T('3fqsn2n', '3116816190', 31); + T('827a806c27934197c39516c1a260a581b689a5882a', '38503176957765921865456861356760222362428149559', 13); + T('2iok0f136a', '51715272179890', 30); + T('fe41l5eaqnchh1ebi346j0e4980i6oipe', '969883696027169474847827349317450953078655187235', 29); + T('14a2b930036b0644a86880ab148250891604977aa', '20642983383491072302934026303675112606383282', 12); + T('457513c7', '745963612', 15); + T('10027766104635746057', '1356176112501203917', 9); + T('152545504843833807110608416814641251026576331823857', '818321316273512555089438042552450294648569716128', 9); + T('100022102012211220200122111101200201', '51764207569214860', 3); + T('3bdf42r16fkgn6qn3ja1g70bl25knl', '3164854049998441022423696324674875839621785', 28); + T('5d569k4de58i504i2hjfbk52l4eee2gi4h574i41', '126711396842379940031754324715276160248231187472784721', 22); + T('2elrjoj7fttds1kj1eqe05924mkeg17jr', '9563118598851333187355892107063110561421940440136', 33); + T('76320618nf9en4355818i', '29166440299227823085424378642', 24); + T('274hoc18', '13962101283', 25); + T('3', '3', 33); + T('a085993656a6731351278a0261496b9', '2387749458635635883908416654291117', 12); + T('18bp', '57445', 36); + T('44605ba', '13064542', 12); + T('6j47fh3', '445502343', 20); + T('3140021040032442034032142420324101102421103121431111202023134014422311022111', '88957367186178880784956669030745448554566774878220281', 5); + T('6775333741557561774067363222030024220313353605226', '155993258459571709305776966445938258645813910', 8); + T('7b410ha9adh2d4dbbfgb15145ddf7', '1071007184595736715355171202846231105', 18); + T('4bl486be', '27306379039', 25); + T('2d047117ed235996e16cb8', '54422637554743220665150648', 16); + T('2g178gi7h371bdgabc4h9i024jkd00di1j80', '52404222604294956540188715269674775463381424101', 21); + T('327okdlg', '24807760006', 26); + T('148', '445', 19); + T('67886851384', '411369168340', 12); + T('1a7882a8178a98298920a653aa0', '2352073067567029324464577191', 11); + T('6bkkd7o2f4ipbmtt6lfss01l97sblpi', '1315571448647629811709487168066391442124096668', 30); + T('52104143220101400504102332405300', '7115605410380560227795492', 6); + T('p6hhicpff2ch097ai', '3602154508749776816617050', 28); + T('ddefh9mmog050', '3130965055875579020', 28); + T('1eb8d81a8cd02825b628918358307e2c5dbc77de937', '49381329097323571281085427147300803948474329819952', 15); + T('5g6j8of586ebi9en6am60ica64dj76acgl446', '1196611703139037684394056082836814593197976197986981', 25); + T('145301455322303124543303144112202100010', '675682273892366920630205240550', 6); + T('1332', '126', 4); + T('d2hqmv4pkhpis4kwil17sh', '1894404209949516584414030849488509', 34); + T('9c1', '6886', 27); + T('114dda1g9f4377h6', '72084475607353599207', 21); + T('1111000101001100001000111101001001110001110000011100100101000000111001000010100010000110110100010001011010101001000011000110010101000010001111001110110000100110110000111011', '5642505228059227244247414269863757684704851232189499', 2); + T('508fh1aaf1c0e9f4h52c', '9940527316953908325812962', 19); + T('707582405746100557868862537622284066', '17758735160295117568970479831136394', 9); + T('24774bk74l8im54cd3j6n5mge5d2a27m86aj1', '106152337767157132554701435127389724414365801045065', 24); + T('lha7bbb0g693i7f2hb7c28ib61l8l3', '18560795418562899773775421028146824268153', 22); + T('anoq', '457791', 35); + T('ig04h50me1', '33674426643383', 23); + T('4521045140035435334320', '107362640409615336', 6); + T('14ci84egi8905e0i507015e72783hecb042c588', '4878804467161002434134901366333118155781387556615', 19); + T('8qcg4bli', '120689031950', 28); + T('bd827aa941c4', '102957760172659', 15); + T('fch0db7685f8e5a47jjgi30b1g9e80291gf', '2687375605960327268686364570667231480832392735', 20); + T('1cbc96', '2479779', 17); + T('4123860810563631873', '621577956977422779', 9); + T('9cca75000ac59287564b4900', '2277995890851753018758808052', 14); + T('9ggj7xjgjsi3q9qry0m3h6e4qjn', '132479614685652095506805037318263627015913', 35); + T('4vgp', '227401', 36); + T('x3y740258u2xqas0', '7319695651559802393895440', 36); + T('13100833188435435125150061085463661600516', '198924198766645592728442581078146274410', 9); + T('f7bc4b91d86c645df413c359e5751fgb2g', '622025592428355872931685309924438488611961', 17); + T('11100011100111110000110111101111011111110001101101110101000110101100011100', '16795487938751986166556', 2); + T('g1ehkkl5ld', '28947072317388', 23); + T('132003011111302133121322221302000112', '2217164258386481979414', 4); + T('10120021102122', '1894985', 3); + T('1325505836763333045651420073434683647446736780', '11919401481124430210661735944237867636702382', 9); + T('49791378b016636074608922783ab261aab07ab308b63', '1464088016751655045075255651768104776706515226747', 12); + T('3m76k2jbo5719da6487kmap51', '35123523959570521061791470079350967', 26); + T('4fh5a15sv', '12497226572191', 36); + T('336765172584422549579974190155368820349813775', '336765172584422549579974190155368820349813775', 10); + T('c0587a820625', '21565963607297', 13); + T('1k93o', '708849', 25); + T('f5fm9dh2cp4l2oeas9jcdqk', '4764950243508633926985496746426500', 30); + T('d9soeeuqk2ofds3a', '502812647839703693193322', 32); + T('6b825n1gjjhbdn4ih1f2o8h4i4ld', '358210303755108885399620686031173721788', 25); + T('283xtndhybuwkml6di3d897khpv641rc', '3915242572217002753616152125461650495415068480488', 36); + T('6soqo98im8ie11i3ar5', '2696831302220222960747970815', 30); + T('11li3j9pe1bb1ojcmj55ml81ic6fb8b642m5n', '3607150919906347032136744566385373723352731718670814', 27); + T('q4gm28vepfmd', '1320994706837332870', 33); + T('fj1cj5fh2he05j36a', '47781006865064491040978', 22); + T('24febc915dfc243g620d6chc6f17d', '319045853086479420376719648609675175', 18); + T('axjeq4oscj230g0e9nrlxc7ukt0', '153295229065424111605138505063212510938015', 35); + T('1310113002212031201323001312121331212323233311132233111320223', '2416702837718654938336064508044074539', 4); + T('eg5h8tkm0ou', '16331639907615518', 32); + T('612b5fcgfg251857213eej2f01', '2032194356980031603784734383862001', 20); + T('11111001101101111001100110000101001000001111100100001011001100101100100001110100100110010110011010100111100010100111111110101000100110001011011001011000101011101000001011011', '11678786451764002081049400473764762680882990476021851', 2); + T('1a85ffkq5jtqqabjrfr11g9nn', '825825047012895137626767704923066737', 31); + T('e3c7i8hf6o5d1e90b1a4o0p88a9', '232026393767377308312827755103218776666', 27); + T('316c6ec7195e44b347955', '1029840967122771047178230', 15); + T('8legb275511j26', '2541054341067686758', 22); + T('83821342401386120262277735280270866873166', '1246775385198205735853522756093577523023', 9); + T('1333a1570743a16175a20a62266554a517766', '40200921314714807799085888577859275397', 11); + T('47j24pkin8', '23333085707030', 26); + T('26319444a9a30142989750291785a9a8088727505830635', '2061929969794917702400557105886923348678232898726', 11); + T('7q3p1', '4234708', 27); + T('1kej3a62l3d23g6525he408c930hh81631l9ghehi', '965311996501533239723956354548870830282992813453656632', 22); + T('30223103202020302120133313230101102', '935371222603691639890', 4); + T('88i2899dh1igc3fc3ge9ba2828ghg7e700id', '4834199907401772810967464568465313588983170258', 19); + T('hmbf7jk276f7fojedr1p6gl5q976geajbb3', '284317650265820333891656626427162630405435211338279', 28); + T('1676422201112714661607652471073', '2317596989962208644778586683', 8); + T('32200020323332100330223231033', '261248084065041231', 4); + T('9n6pnuwemvcmb6smt0v2b', '41262690485679650990706863602139', 34); + T('dc2b0efhb9722i67g57163a2ee073a0689g533', '2809681747620610587259840399694397347937589951716', 19); + T('8ngc8lewylbsnsatjhndyi7vyjbqkom3', '6370199031623917343971300162836561169065317503923', 35); + T('2mk52j2b8a5587d84dhpn1udvmmhlj', '689449600810762543106689709493580073372350929', 34); + T('5208d0737609053ab026ca28186d02941625c3947dbc11', '19374960955601935508953122309385766256870298527229847', 14); + T('51af', '34861', 19); + T('dda0ed04ef2e2b22a78e6455b862865ce', '4713519390205494839540473117533526320590', 16); + T('2c25mufgyjnptg0prr6a801gnt2u5aso', '1722590891706429392707864779225562562261184133879', 35); + T('2ks2sb6abmm1226bemg', '573090129852773147595705184', 29); + T('1851849181066300127651593990', '1851849181066300127651593990', 10); + T('7c4243ba2c42626d5', '17158768285212739043', 14); + T('3', '3', 27); + T('2kn', '3335', 36); + T('fqlr27m00m19rfp17c', '63771501247128679770543776', 28); + T('irqod2oc1pbe0s4dnhch9q7q3soc8rhd5aj', '998706528151123858219009078845461735670084733546613', 29); + T('4z26tntpn3q2er9pwri1ovygbmsc', '5210334327381751818125703692230802722918428', 36); + T('38rcbbetbf5f36uj084ps51fqbka4p', '355736129774653976136192164359376778173186929', 33); + T('1q3iwgn8occfg446ds', '191677272763836654973524750', 34); + T('1683', '1290', 9); + T('1ed170582a62cb2ac6c31c4c843913ed3568801ce6378', '11148226317787355356748077765017756339753205698186038', 15); + T('9019bj0j23id037a71d2f818a', '151057014706796380851381320864570', 20); + T('2e6nm', '2562806', 32); + T('5d4jin3sdcerj9j25ibg3', '3643909555936028919787218032171', 31); + T('5pc8hlj06m086i24njhggeli04aoa51dlb2e', '744260236987988475505418299871418940910369537440256', 27); + T('20130132323123223323201321021202031222113', '2552360031161222970268311', 4); + T('5da2y6ut99g', '14840050365248481', 35); + T('1083802151385314311018533036227557457058382761215181306', '3733408597840360399737721104598784068927221985247670', 9); + T('1453174752703234014531654704472633215271161761475347123730', '4742538088234854254854687216429269914428692374530008', 8); + T('3514356630112412504223242652361506044035016524224453444224', '5551155566932115229579274888281173021908256673491', 7); + T('9we3kreite6hf59jaxdtohv202y', '138846389291496608664050011275340367383354', 35); + T('b15ai5h94960g978431c984', '150193634897414415974425816748', 19); + T('30341416404222', '297793923408', 7); + T('ea944gi43hf7c8kih76a6gi7gd457', '152552752071312514741382931890385578071', 21); + T('k3cac62899efcgkde', '28856302935223233143555', 21); + T('1o7gg6w1c75ct1rc91g5tt0dnfcz63c6gnl', '137287343769800626880929715047781191933283098618048977', 36); + T('25e', '2091', 31); + T('g3592kdhll95dnbfg0ob', '5867544395796906365592047486', 25); + T('36ljlm6k7hlbhj24g34iljjbkca6kj', '34917605806636558754409253491187290532723', 24); + T('2013331213110201030220232320001301111010031211331331132312003112313330', '740251484693542342168090012177869705145852', 4); + T('71l3xyfox', '15866279172623', 35); + T('3g', '112', 32); + T('3f9f8a0d243e0fb51b2cb5ac85181c892287d599e5c0', '317847259344191067119088327577099421993210660703648585', 17); + T('a', '10', 16); + T('g7bhf3k0tkqjj56iisl', '6294112241758545358107863061', 30); + T('uudfufj6tp2', '34847370150901538', 32); + T('77fk260mc7demfo25il8c2n81717a682c9', '99005083348240474978989079910691552284523954684', 25); + T('393b', '6527', 12); + T('17', '16', 9); + T('7172b7g1d6cb1503520590483f1g', '11813382188355814044195049379459867', 17); + T('2prc6kn3266c6n7g28el5a', '7192303509446282093103429808486', 28); + T('95ogfxje7ls', '25276108149452713', 35); + T('4bfu5onl45ilrx9alz34jimt75t1', '4523010860648796756968176777170199400173093', 36); + T('7j5j65f6e8b0h97i30b0096h0e1agaj', '8552261610768542589195104260783405046619', 20); + T('79533920b86a94445760532769035154b330018205', '1373349827844291882840401376619651400305985573', 12); + T('1a245455c83151a3184a64938389322a55a6', '1734548256184785741768296183872320983247', 13); + T('984e5039808eb14e793dd95', '2946024784801310608062668181', 16); + T('53154012227153364107323333356132334', '27388210321734783241567604356316', 8); + T('o0qu28952r6jprsxdo6cput', '118349942107141459621585048529740925', 34); + T('3462ede96a29390b3', '21637787906719251168', 15); + T('18b', '395', 16); + T('673308785538823746262395', '673308785538823746262395', 10); + T('35225503612770774201320011176174535217542332620333552', '334458377978261177426569028332297268603291547498', 8); + T('376695373779076933422509ab99ab365a9246a8b08b2', '1105994899549067482501897563124358078250931847174', 12); + T('3869261a7405a666a4433a416748710960', '87879253530807463519018010147091126', 11); + T('7d9539285610896be3di4aajcc', '2574680758226813621572702606487852', 20); + T('eom9', '630429', 35); + T('ctnpgfics204j7lifau74', '30261420041988892749003398105371', 33); + T('1e30c76d4c3babeded1eb9d54', '149496328017603561036003908948', 16); + T('2g49l8ejj322oko8o1237li', '15046627139453716262719493020543', 25); + T('lac1ai4002i9m', '3210059280216614719', 27); + T('1002102222011110100112211002202021202110211010220021211102012002001010121212021102102001', '352510346325299817822890694447040983131473', 3); + T('1tf6fn7i5di6ge5u', '175030739395576483074272', 34); + T('282wcq3vpdit7gl8er4ww81jp4lagquja', '22759143758885240102880787824974474168226886339160', 34); + T('1e', '47', 33); + T('168009a43e598232cdg9cdg1a063587c35ac', '16061623027950486410325718902752796011029361', 17); + T('1a007541183e0822315a57de1158e0', '21307529572089996579521941688891385', 15); + T('3djeag7eibcdc6d87', '2424384796123691573367', 20); + T('230301023011114232204234331140040120224432024241342400200433404001440223', '111145690113580800793934548266340600396757527374438', 5); + T('10520860a57581009a8126046695028a524810847a01481461', '1112948582926775947692302960456787691406066035576488', 11); + T('82de71e9ebi78529h6', '2357479348054666852291038', 24); + T('318669479760997a65444728', '2831351356374386128515581', 11); + T('3270247822563079013554888236298a158711461511477', '2597684729342955847047035976952888032696181844728', 11); + T('551232202', '33100972', 7); + T('hlsoqgnnhlol86302lmbpc1o1v7cn39f', '2094068282660026545502003357264798290330943200753', 33); + T('17ag7ck44ei4cc0', '4404516346410619761', 21); + T('944dpkcbk68i6agk0d', '10386492460212205943074365', 26); + T('2sfgvqs01wmc0hpi3honfnq078b5', '635009624927118482002742877780185972981715', 34); + T('414365504624046053220263710402064311', '170169261032326095162398418168009', 8); + T('13hgdibii4e17k553j9gkhce0if5bc5ceai94hi4', '4361265005863822570682081694079725185789054191122793', 21); + T('lgg1jccj55ls9rm2ajrrq5cs', '430943296004749884742945946753353589', 31); + T('11101001011010111111100100000111101100010100011100001111011010010011111011011101000101001010111001100010001100000110000011000011010001111110010001101100000100010000111', '170573148533121700284914386034471572584747624695943', 2); + T('13413125266103565462344013350460103615501162', '3307282268566056426163788875674325818', 7); + T('3j', '106', 29); + T('b349008315969b8ccc7052a43c57b5b29142939c7704a801', '255164047256623112253163706181586265330065889629470557', 13); + T('94dc8b4cab1b6b3dec5gd6beceega62', '76058492450972753054531985019222386368', 17); + T('1ab27cfd2a77eh0b50ab24g2f', '7628045918745194687434147924866', 19); + T('34rkmn6on56piqq4345crmroc4m08', '105344564607152675293550922255989496280680', 28); + T('6420543526040821082041501606040060756238112101624', '41166399030228549347833032744913546219462846120', 9); + T('759075c552136629a36146a', '23890078166204400503313568', 13); + T('7ak705g0lje0d29h6l1hdfgijba35fba79d17h', '350347689943364175900597066972947125277514426393207', 22); + T('4d1fb3fde8905', '1356776945387781', 16); + T('c6e46gkiem1eiahck493g9k4c', '43565766401935427989245632115778237', 25); + T('63721g686be16e1e526', '87206911321780393529297', 17); + T('25045cc77b4debh4h916h8', '1616816419392758474839845354', 19); + T('5eaok0n30e0e1m6gd29e4a9f0m56j', '7740457295545283166939800698000390972044', 25); + T('1c6ad164b71af7cf0a92d7c2cf97ac3539cf4a190a6', '664509895940083432745213666480332815238360970924198', 16); + T('9605629834738021029786a867a158511013a52a8405a72462', '10191274996495287729155135548072159517142616697156216', 11); + T('3352cmj', '1500429243', 28); + T('10001100111100111110001010', '36949898', 2); + T('h3hh0g2c85bh7396gg', '94303598818479768768188', 19); + T('20141443402241032211400201334013114442204204132042', '36862688956020216748269194930536522', 5); + T('6mkq', '261962', 34); + T('457ggif1m1bl2ee98303l59b', '88366118125435849323789834859634', 23); + T('5147bf2lga7f7069', '2549101427903154350745', 24); + T('1c32affbg6cj1e15ce', '21073984633002181450254', 20); + T('p8cra2eidd65ph9fo8n397k', '7933449586075462280012611659119330', 30); + T('4c129h0fhb58211aic7ai6e6a927dabd5236fc', '954786819466789784055108938545862635435383874674', 19); + T('82033830', '82033830', 10); + T('1010010100010010011110001110011111100001', '708979517409', 2); + T('42478377375073344992', '42478377375073344992', 10); + T('24292893d565157b8dc04379c076919d0a67d0080dda1', '618333628399653605854827547452825613797180483032025', 14); + T('12021032452513221510441200345501434243555230315414240', '39091544699662086629498022647413959018000', 6); + T('lahi07', '254389623', 26); + T('dmrf4tjrc668037', '6583228333332288876097', 30); + T('18d32b6bdd20482a56', '49972933524301416292', 14); + T('31b2hd51f35d1d8966fbad2d17fe07112eg', '14764753272450920274778007595847767027142732', 18); + T('474370686', '1001518425', 11); + T('4cbb8nr0ga4e20m32ak0jn1rhl2ef69', '329672291129572906563643430219747967931125305', 29); + T('tads6deu8nl7wsluarmb', '2083847353511862075875525723903', 33); + T('3i9360ehd0f2941h', '60311321989193348951', 19); + T('11101000001111110011000101110101110011011011110110011110000000111111111011110011101111110001110101100100101111111100010101010011110011001110001010010011011001000001000101000101001', '695150897721330668961198822938644201466146242961639977', 2); + T('1012111122021000000112111200100010100200012011210021220100002201002022121210010010200002112211012212122010', '150771843971952583323861645995496523521380113647165', 3); + T('7jb1ijfii2cf4j3b3ef3', '41826352819841414347389903', 20); + T('5t1n3', '4834593', 30); + T('12', '33', 31); + T('27ejhdlpeek1acpp57jif5kh56ikpliedhi', '2945305406573061366174441740050992970724142349520', 26); + T('17bb10407140593873565730389587876a2438811b26', '42315982694007165665825252379784192339494272526', 12); + T('n0gq7e71hoa7jibe3kcjljid537', '973294813025943583919577094627375341675', 28); + T('57f1a732hje05bd5g8ef', '28247010766435335146531495', 20); + T('2fkb331cc1f4enclm0hbn', '10695289997958612784724248415', 24); + T('940jymc', '16755335182', 35); + T('23b5a42785b', '144253937159', 12); + T('332332', '4030', 4); + T('133336431314111040125445650165', '4830459607356940965265100', 7); + T('6ec41', '882361', 19); + T('22', '22', 10); + T('0', '0', 26); + T('373pbof59iq41ja80np3h1hb66c0a', '39086275552205397897730850178810132407635', 27); + T('1cee21f1ce8gf26g6e0b8105cg5he4415db2hff2', '15459905127505680786167890226971872272009384340116', 18); + T('87dgdwg1renuvkoeavwbim8lpxgv4vb', '401000049256626858774368667583141736311922306663', 36); + T('3isj14grpphjnc1nfpi', '1407040022579438811290045268', 30); + T('lotrwre8ar', '1711090616092927', 35); + T('1gsqeka2jl1b976qi8ehc6', '16374903938406169822980318273666', 30); + T('4dnqe3', '148629955', 32); + T('d3dkdfd7nj9qigq12i6cffd34q', '7986534045217039049966056077355386629', 27); + T('30015015540350210153424450312551312411', '186187559266853112245008019767', 6); + T('jul8cg1ela0e4edfg0', '3527382384060143413865828810', 35); + T('110122101100221202120201211212122200220201020120122120222111202001122120010221202110210011210122020', '80448857968083617554152347697248793494050049616', 3); + T('9vemie00f9u3rnk4o4mrf1v254vu9ns3b5', '466890651064760271528412966235388536094543461616997', 32); + T('111121313111310122021311332010123110123202033302202330211020113121332102232231313031', '125128719044623689856157423015050011081778094857677', 4); + T('240451003255052453254351310432552514340023252', '46587982443617743794995947075156496', 6); + T('k5o510ef', '272684166231', 28); + T('bf10gnal8c8l50fgbk', '46108402152178609412805768', 28); + T('42324441444331403351355513', '125935341458202497061', 6); + T('75gdpii', '4277974110', 29); + T('10153514333', '63726609', 6); + T('1h1g', '29110', 26); + T('393b41a3143a454943', '8380580329886369091', 12); + T('59304176726473587130612', '59304176726473587130612', 10); + T('137d5j42h356jed8caa21jahh9ie44b28c', '10043027274116397234553163118775038349528972', 20); + T('49u64', '5733968', 34); + T('165a8273521956a4', '6662096633605824', 11); + T('65ggfd2h200', '6949479788349440', 32); + T('9', '9', 28); + T('1j', '42', 23); + T('an11', '290731', 30); + T('32504342124451030441114503214444040214143430154453032220413050500002', '47554002877149413362434118805244987488297716371458402', 6); + T('430200', '14425', 5); + T('3094a85981a027626759a77870223658270a055', '11513511128194690284501911822638050206045', 11); + T('8jj7ad301acg769fjghhbc9ccdi2aa53c7f', '1545920497099530665176555768420891600032828955', 20); + T('23142012635205', '238490986074', 7); + T('3p23slu2or2lkqci8', '4573755691405244852154952', 32); + T('560c11b6845a072c0c22ba28144472650a753ab9', '151894844910815511057842865133583436415605129', 13); + T('5688884955', '5688884955', 10); + T('9v1bex484u9g', '954561932219597956', 35); + T('13699363090125374585452111316030', '13699363090125374585452111316030', 10); + T('10300233111311300112121130110032132331231030013122231000013222', '6329196093597682159006452132074488298', 4); + T('g3', '275', 17); + T('a9362a295020575', '4119405967597805', 11); + T('4cke3ggbhkg3kkcd8c2j3e23j3h3c', '177610512943070772233329421133901768714', 22); + T('aejfebhda5647d8hicfgg92fd62c3jbhhlk6d', '22681378063543267593175360612666532727335364021641', 22); + T('26bk', '24462', 22); + T('40el80h7h5998lghk0gckh9a45i20gkia1817hd', '22426986371581060650291320125302165512055992788579187', 23); + T('0', '0', 34); + T('3cvdf0ffw8arpgd', '9324689059447121647753', 34); + T('7456545364015236001000', '70016530198021276160', 8); + T('9jllkk12hej0', '35833846973541838', 26); + T('2ksbm90w2g', '122159535406606', 33); + T('5233', '3837', 9); + T('25cc173935aa89717957cc690287c8ac5897114004974', '25388874872205695306782055570702284695041270251885', 13); + T('1221222002102000210101012122211220200222100110200212021020100112111120', '1636824719836500158668182780963606', 3); + T('1111232131122000111300020210302202321011223131010022232111131311120203011211', '1911752105791956460258073810226603098202321253', 4); + T('8988550feh2fb19l0i6l04gjj7', '30634356015861131671092023444404629', 22); + T('oeancnlo9ijbac77dglo1ask6ofnl4k', '1824014149455616255108864549225566262750135574', 29); + T('11002012221102210200101112000211221121210000000111220212101', '6409268570990190943079463412', 3); + T('36qdh85pljsmb8g98m0s', '37533975292710168814998325828', 30); + T('170gj', '999499', 30); + T('3932581210798432862405499987164457', '3932581210798432862405499987164457', 10); + T('3ch7258m07q7rl16r0bg0', '7927276440553837446719503793985', 33); + T('20257774520426157193756088561635', '20257774520426157193756088561635', 10); + T('951ge58337f90b1fe68h7bd2d95', '4025392988076931185675982866053147', 18); + T('1l6k7cm15ufsup', '189871394492066962875', 35); + T('321b959d5b325b728b0326e73eaaa41', '602332697103765494715420483143314186', 15); + T('10568796b24113372942513671b638ab2210a1b7b107011', '45581696081476450286298571130938321064311891651405', 12); + T('3b98k8120ccc74n6ef9bd1beac3hcfa', '885608666388200390191758079174867768107634', 24); + T('43433b2bb4b422', '1289017868139471', 13); + T('360l0j8h2j1j45bf0k9adajhec647', '126767233401225735441881274095914648023', 22); + T('b80kmr23044g0fh5l5faksiprorems', '28955063766509964293677139808717178701084446', 29); + T('1da98c5a3d4h821a9k1af', '1137471209110481204473484095', 22); + T('618450432807535130378045834820211332', '15559949571019773458768163619429673', 9); + T('5tko940pe0jrm6', '218650082993546849990', 32); + T('a8eq7cifdb9mhiigh5b', '599921281419889941644672261', 27); + T('qxk39a7dx68egvn5s0h01w8', '251307205109451556038643316790309853', 35); + T('118hndcbh9313e', '926322242353869974', 24); + T('24440334411431203422412133041402214043204340402320114020044014', '12980997135625297861036354210265432195471759', 5); + T('2gtre5qjheeuh5uodo4hik5005w0v37', '9025673405212440662562000938329712048049568180', 33); + T('ghj9h0d', '4079838763', 25); + T('3083300286348713118154344655632051', '95902949580067304421978859746787', 9); + T('2204342431201401113411321022041242024', '35481463480601705590180889', 5); + T('542093a55a0269031073108234aa3', '8815351536757882311286614273051', 12); + T('7745a7c782', '5832395843129', 21); + T('7a934244281251a48524aa43', '7150917669356406106144382', 11); + T('2xnwqdgwrh5uecw5q8y4dbasw0', '2372398626016802230522523263083931807680', 36); + T('45oggh72', '267833757697', 35); + T('9d937f7', '331639225', 18); + T('2', '2', 10); + T('61k1g5ekbid4461', '127823767005507989905', 24); + T('1e4a5ec1282e03ecb924350g96a9', '58781744149373563800579530600867870', 19); + T('1b8e5095', '688404805', 17); + T('0', '0', 10); + T('5m5i8ff349l8bf5al1k686cgmb7mdejhjijmnm2', '166279352831336816425981143513635237161255195203340754', 24); + T('1804736634422744877', '284505311624250607', 9); + T('mtca98yofgyh4l8guo3u7me8qyt', '319476383658716451190075727542821418162944', 35); + T('214', '670', 18); + T('0', '0', 8); + T('8e0n4lpe4qgji4aem9pk657a14ff0a4', '74359597134400809115329522029847080723202805', 27); + T('6b', '191', 30); + T('23e9f2fa8h8k', '1265749744976616', 22); + T('2khe6hm38gkfb935jagneag3n', '3819659602086817228674066252275807', 24); + T('l7fcfbh1mmg58f8lfach85k', '121103810194801760541361186598895', 25); + T('585d36c89594115ab2da6003336c', '49406265527885526964870839515652', 14); + T('i7hc8e6g51bh499k3d20cg6', '2254290174662249778124399696926', 21); + T('29d730cd9c087e9', '188433258449504233', 16); + T('4bbffc982422401d23e107db16617c0c0', '1611023225678920504550274579287300882624', 16); + T('399eiccfdg776g8ie7ed51199aicj3c1i26', '3114217897390306876666438603763020155894866697', 21); + T('a0408a39c0347', '233539456688506', 13); + T('1244321202100034242200131421310423344110212023', '45404554130117615171994334460263', 5); + T('100011011001101111', '145007', 2); + T('m0id8e0lii79i0hamjm6j3lo0njgb8k3p1cfd', '19142712657104634174482218734811759840268764171688795', 26); + T('2fi15dh0gj44', '4042101164149540', 24); + T('15frc89bucts2fbt3tggm', '1485349439418814854186055680534', 32); + T('c5fc', '169140', 24); + T('816746485234485786017137575711607104112550441248', '5793937697453244801258576864771947865560248340', 9); + T('131002122121310201002130312', '8173384848647990', 4); + T('92', '92', 10); + T('4c66j3i793d79fcl6eem85ggibmin6ff03ii0i', '5273269349565326953768769699813092661952318735852690', 24); + T('2100112202101220211022012101010100', '13083662499139368', 3); + T('8i6rwohm7plthofwaflkou7075t6w', '64957478046184050549268164669753853232592056', 34); + T('3ge52j30h118a90aq1li8bqhgde42l', '9162992827240438154336690317061119953413480', 29); + T('3pgekc3n1f5q4n7d58f', '229611421142039521550129532', 27); + T('cqq5mc0alqf89', '14801280699144682761', 32); + T('2i8jqk9ecjl3j7pokbi', '553717099454231407510522435', 29); + T('d', '13', 28); + T('3iflgoq8fkd', '1084961028184109', 28); + T('318836651153123015848312384230506810010032857747444671', '1210321032121068276111676497142116640496938793305774', 9); + T('110410143222242232313', '117657104649083', 5); + T('2f1qe2qpoc09khcfaq9dfk54', '4888325003381937548488277795720464', 28); + T('ugfkv6ssxm8bprvcbcmeld', '8115207037438171760870129030349898', 35); + T('3p7hk8j1n1h0n69em6p863dimcr', '164991699304116139976836789916894063947', 28); + T('b4194d586dad9d52398', '4821265933637921163698', 14); + T('2320m01gm0j0ebo6cjq4nl82iclc2', '25308651911329509101643504949204196120222', 27); + T('32d470005nmgog06cg', '3510779211405082452397344', 26); + T('1biia047d46e', '190055020053562', 19); + T('453554hf345l715n01', '1225398359686044688634305', 24); + T('6mocq54g41kgnpb67r12lf70jb8076578e9pe', '85364451999663221329010408002474800688521919163853530', 28); + T('26fcl84k3d2e8flkg9fbbb13db51gefj1il', '10116499145802283445045451241317675314169646973', 22); + T('dmld1d719ge074f45', '16572445824579028888206469', 32); + T('6dn3kga760j5d3mcng390jg1j977', '1045864553213695887738689074624417178057', 26); + T('7c822a', '59831482', 24); + T('3', '3', 13); + T('7hsfag1ohnswxi6thw9sxqf0sfl1fhbcq', '76526067136899944638578262007377029250134038384950', 34); + T('34fa796a05fee3b566107aef6fea5327c9f794ce6f2', '1238848647360391370812154035309938766206217768199922', 16); + T('62aff0j6g27cbb62fbi6ehc8ei9707ie7', '2631513170276940677418579291672958038463487', 20); + T('160006380611399874532975360', '160006380611399874532975360', 10); + T('321113214233340303122034034341', '642745280323070611846', 5); + T('0', '0', 11); + T('939fc0e1ed37f3gfg712', '48100541569978054645730822', 20); + T('a0778l44fno863j1kj8845kanonbjic606o', '3392085958211408076013624279917504691844418843924', 25); + T('6h5a', '130636', 27); + T('l9b0it50qmnedap8johl8iloks', '905661954380795627228973456176408355484', 32); + T('bfeb5lec3g0g188i488e', '4228466062971689766442645839', 25); + T('1b', '43', 32); + T('3', '3', 13); + T('7a3p2m', '440231854', 36); + T('617748df2i664962id56755f28id9e', '73665342183530469462696099210511390428', 19); + T('768505531614045785056572382071602027184721164318550231', '2920164631077979800661618205224712844072060341452933', 9); + T('hm7rb8citq72i762a162cbqef', '23520916221723656411579473355413514703', 32); + T('16ik63anb3hed098h0p70g02k6l4oi5mgfb9c', '1093730280055464079356271243419045177402000893676762', 26); + T('1a7o19hhppbr670tea3', '1634167009538284294723516739', 32); + T('c83i7i445c57c239d3lblijk9dggbj8gj9', '10687139874282278734927122410769711076904192751', 23); + T('h6h905643ldje0ell031b6a7g0l', '1384376087764757994009208722127705501', 22); + T('5463p83imndnib6bhgl8e62k5mq725', '1666904828897862368867031608875610218601012', 27); + T('17al0j92go770fd7ccb300', '294982324454146101460571267500', 25); + T('5030794a3a16181221353142', '4499832616666426071863261', 11); + T('13013306320776254', '387810637118636', 8); + T('2aba034153b7624807b6c8cc6658a84941204061a47703', '380713175788771350162354052927260664309723900025732', 13); + T('15enpfxat367y28nww9sx', '8787844721197737785481977672788', 35); + T('2907465cdd296accc8ab4bd', '793605010131443253911401661', 16); + T('btd90hija', '33333612923926', 36); + T('1100001010011011100011011010100011111100110100001111', '3423573638106383', 2); + T('41022452241053505514431155445534332343153435032144521344023203', '1225194524811083036078094796606648972619116520691', 6); + T('e1qmlkug6atzc2szmrgbaj', '6760472143725608443176424992006187', 36); + T('37scnff6r4bke6blfcli', '19989390915717056236744855873', 29); + T('334222400013230015435445313223214033', '6226915450088276574887871237', 6); + T('7vea3c0', '10270438893', 33); + T('1c1d81680a2af9', '16957483031426736', 17); + T('m96mg3', '638353398', 31); + T('ld1n9', '7148145', 24); + T('21', '17', 8); + T('1b1c1bsf7n72urusb', '986592048657092288475155', 31); + T('22002021201021222120211011222121200201102111121010', '644884299955469783555760', 3); + T('38hya9w03adpnml1wt1', '20146753328658169736251561841', 35); + T('678900492958281937296424307391310688109544200506572255', '678900492958281937296424307391310688109544200506572255', 10); + T('1d4353ff5f56571144g1844', '2089805731314765099203371537', 17); + T('ir6039m4ogo6rekmap628lipn6g3i81d9j6', '303029496939924707734813747542699909042016864377194', 28); + T('1015155663263325215616644031243334242363653236243', '38015525426091545614476127416406246189660', 7); + T('7m8bcspos3p9n', '12799934209662533825', 33); + T('t10i9jj6rf8d4igqh2fol97p37ue', '536606270683321487460519767895396158935512', 31); + T('14afo4gl6', '179599291781', 25); + T('71eg1137a13bf3hh8ab3195g31163460d7', '1885141378228919225779975457128661363992129', 18); + T('9pfjef8fl22jchcnot331qs7j', '2782134740188232381925166871891437429', 30); + T('372196b06930740a29ba60a7', '806032988961165618240479843', 14); + T('7c', '152', 20); + T('4mkcw59u2s8c6jncek076', '10990686957535604207639130208131', 33); + T('a8gdb61okldrl0aik758e53g38aq2552hlica', '129065494496127233059548754102332462801434930608863802', 28); + T('a1nnrn99ivdm', '705391832310469964', 34); + T('2042221145454461340562431', '400103241982606737303', 7); + T('11000011010212021211022010', '1131323251782', 3); + T('4n21rlmmp3', '125431688294070', 31); + T('m6i70g5a', '102194648194', 24); + T('3q41d63orgmotlhgfslqc20hb82kfe4rh', '717334587965790065732270364786517943405016532427', 30); + T('1101110000000101010111111111010', '1845669882', 2); + T('47ol1hogcnk5', '52105694239787194', 29); + T('1021322332210220132113300001221111002122210023222212121131012010300', '6288547997581842904727500905920033218864', 4); + T('o23ot4tfpccbofo7nf6gboa5q3a5q', '13790372660580043232353319429756002887354620', 31); + T('1kb6g3ibfffaf1f4a3h8d96e631h', '991195679687488764520434246680302343', 21); + T('2158696h99hhdn1s21kt7jehj', '1264237421480805368218573017622222919', 31); + T('x6o5jx9cv74m8', '112160215850835853303', 35); + T('2', '2', 7); + T('57176028a440a918503', '31415193562039976560', 11); + T('40b80ab60400181118c', '457553993478347736554', 13); + T('223320033212201002110210032011333011012113002031320310112331022000102', '238898959948440949613215671638042952900626', 4); + T('11a8g8kj0fab1d1kilhh9hf', '364282053955268028963745481233', 22); + T('11240455044265520645036360110314304240205125566156', '307183470929453944085729413338106398817956', 7); + T('523ik6ij13kk5880ci6m59ef', '106368852856173920584075434741551', 23); + T('1714', '1309', 9); + T('2dcbed61b0454448ee4g201fa7gef68e59eb358184', '788683087187581292214395140742054830008036513743616', 17); + T('101111100111001010111111110111111000111100111111110001110011', '857702623840828531', 2); + T('5347712744236105712406353', '25750698989482171567339', 8); + T('37g34g40d04974eccbg', '48767935869856137341083', 17); + T('vthbi9q8o55jnbxvv3ti', '11814978679218404459790901458966', 36); + T('8d69r3qf2ottj4c0rl72g05o1mn12uww', '2508962139336692901577954469144032904191497935832', 34); + T('5g9fg3c9dcg1a023b712321470216gf31adee74', '341537217285112703078107777185027563591020784046', 17); + T('ccd721fgmr5e4', '14282288858953258436', 32); + T('a80ae46dhaea67', '438302256218022495', 19); + T('12916146057', '166501275246', 13); + T('6tiy2k8iyrsp6qf7xmqe9', '52080446267291461713344751743099', 35); + T('df3f6l', '70550413', 22); + T('6je482j', '1302612547', 24); + T('184397303', '377967098', 11); + T('611985c74c0c61193988409b7ac8080b859c3b9cb173', '4830410812954644160553068441629408675970314449453', 13); + T('7r6jrt', '354387775', 34); + T('3008fcuib88j392ucbg5869juji', '1788819762374982410062695434989906399169', 31); + T('163437548162880523537684124013727543874884361', '1658096721479270315378604205589291844831901', 9); + T('b9', '229', 20); + T('b3j5bb58153c37g6e0279j', '65358334895093431573877660737', 21); + T('11202213003212013202011130120200230100100123213301210211002', '115077606360628968095680622787709250', 4); + T('160003100bc818c7c2475a649b', '10313273121890479048668535784', 13); + T('659a832355510920755202a222a0813216a0599645415257580', '76738460570358936081428047041239658092598283361190466', 11); + T('8aa7eb5be50', '9528363302480', 16); + T('1a2a38', '311374', 11); + T('15', '26', 21); + T('a8qjvrqf7anvqln9b9kh', '407074332757747109859008292497', 32); + T('qh5oal7t', '911800095997', 32); + T('140005430425315', '130664921807', 6); + T('41430355414103404513450514422151345210212415430454523', '124894395792287452864745586425404037844339', 6); + T('1', '1', 4); + T('8l1x5am4a32igljg2tls4wjxl0wrm4', '5158839313249239164751957239861646046595412099', 35); + T('72a', '1219', 13); + T('2h6ii2g3hb2caeaj3fjka04a3803a80fhfibdfa9', '10413494305628146258331381259290048979757145255897373', 21); + T('2483bb318b5c', '4223782433155', 13); + T('30472a755209b73aab2237b3b4b6ba6b4a051b066b59391b64', '229935298182638819911567178597930454480466069384927804', 12); + T('2j0k3iq4f297gn6n38ugm398bj6', '7804799583798677561149968484488848426376', 33); + T('10bsq5up56iew5ew2frmjp', '146381119737686760083072120059007', 34); + T('322', '87', 5); + T('421345344324', '1588619644', 6); + T('55rq7fpd9510d22kgga9qt2cqdo5ju5a', '88593570103139158692015868786912788737196709657', 31); + T('13d29b67', '3933280722', 23); + T('1krw15t4oraf7onn0tiqqmdvon', '149796236898283951228532905796770497668', 33); + T('3j96a36ie056hg3d9a6kg4kbhb4', '93677997263967875177503265523746296', 21); + T('15c14f12e032624a1206', '102735615609474072056326', 16); + T('kd250h4kcdnhmk9921m91j8b', '7181407883202320763157477055926079', 26); + T('180a70hf7fb865533heg09', '21177926122372456937157622281', 22); + T('2d2650f939302bf9306f3db1fd19a7666712ff8', '16109941674613560268665251639244419228113121272', 16); + T('14042210021400013331223212044400010400022334204000342123141440202040122310414', '242980031176762892729926943688121630090892651895119484', 5); + T('16140eamh8k8c0i', '14642806436348304641', 23); + T('4201033713624', '292199307156', 8); + T('2306577543183936183865665a22384343a10249a928654a561', '26737226623626911856928473582008646056500695263735591', 11); + T('9ifb', '79511', 20); + T('21002000210000101111101212220100202201002210221202111222122011010010000221020022211102100020112111201', '1215456332160362004993935235255673868488941612481', 3); + T('gh4j1c8ccj0ha09a', '2297228448562517781904', 22); + T('110602312535653306453056163441062133026363', '51720570582674121452566926758640555', 7); + T('25hj29dkcjk21i84g5mi06ikibgj38a91gfm8a', '544909359244447938678618718321934826921483716508566', 23); + T('1555215136316402505015533551631166', '14161948712279262986113894899', 7); + T('2egb72aqslj7f3coqcncq2ctmrdaso5bpo', '40494263521822533022866511308330148471304529398018', 31); + T('174d0ii9c8c', '8469481708812', 19); + T('11eznfre', '81447352970', 36); + T('6147402214224431303026413646714237211640331341', '270142041873110958246056630570783242040033', 8); + T('26217103620571', '26217103620571', 10); + T('1740c8293545021042b730c704a025b203944b24201', '95380799134993785564663731354331010215990332043', 13); + T('hfa', '10162', 24); + T('32312554053142020121', '2086206758458321', 6); + T('bb', '231', 20); + T('a652scv2d2cetnml8q07rin1bmmtnn', '2634349543405059211976189682479993087452778569', 34); + T('28', '58', 25); + T('4hf703dcjj8c2jdc82', '64072923883505417548962', 20); + T('11ba86915a5600811428ca244ccc5a5788c802c91259', '910070795625285317118605406708822896222785514764', 13); + T('23llqkf9drl9kq8', '633595908841101403781', 29); + T('1b2gj1h2c2aekjbid916665h1jc', '36512492798947082162412228775679670', 21); + T('10100100001000010111000101101101000100001', '1409871436321', 2); + T('23h023952c59969gabbhe14c3ef18026b5h454icg', '24106941776124250340342392848281591922711841101639456', 20); + T('4301240430452331524422321005351031101230421411052040101430514215', '47575980866556413314221304862772696911550410330915', 6); + T('5028926799', '103581232435', 14); + T('qk52htpg5s77qeeekaw2k', '62421682061116668942703365250451', 33); + T('hx1wjtw4tu5ri84krqr3p', '239520584446386005614208719787701', 36); + T('e8d05b12f4d1d9h5c6134h0e86fd', '113048495116012205309732881337506579', 18); + T('22212211020210102211200022022010201211220202220112220100000200222122000120', '200105700798705299655405516905014140', 3); + T('1k9mn0qj86h3pe0594eicn1rqigcbj1', '126683083370995227384223569141871955819814409', 29); + T('3to5kkghh', '6917888883859', 34); + T('c4jsebf02dii38m62j820hhlhg4mm', '1076807142156967950235640680591835512378940', 29); + T('56420594375697116243914157706969195542878987', '56420594375697116243914157706969195542878987', 10); + T('240343101031431344', '2160207295849', 5); + T('2950239ba8c6665809b903936a215', '42198574579570963238277599179178', 13); + T('472caea81c1eadce316', '6619962484583137949196', 15); + T('1iff68050gbdi14', '3177537542453071224', 20); + T('4nsujphp4e4oeh', '553600630574258719532', 35); + T('403130431322252150212401000303143211423223', '328068405789131208325952848031295', 6); + T('1101300303030', '21433548', 4); + T('25303', '3783', 6); + T('2071022121', '808867882', 9); + T('6c4c0acc549735bb09904', '2268273210775487799698029', 15); + T('32033203021201120321313110002230020201320222201010200020020', '295814627854058541670739255760126472', 4); + T('aed9b9ri5m95mm', '845724641799698178142', 34); + T('5o2mlgf3ak4nkcf63e3hn', '249802225714608272506459114448', 27); + T('2i1f3', '464703', 20); + T('ers5t39623laf5pi6e8nchq9adel1is3468', '63245054851996044208467781885652929644411675671796077', 33); + T('41k2o04q', '54799568010', 28); + T('2jog4c4b1ck2facnjolid4d648', '248639818689269111187343577521300733', 25); + T('315335405243353303023000323013353153411', '1233705100662924822920998240783', 6); + T('c0b42d10550ce0f4ea97567ede6bae89e93b', '16786869625005321512335207434991310677338427', 16); + T('1i3sc73cm6h', '683826880532477', 29); + T('7u506tlhc5aj1dbb', '187087416521171722983827', 31); + T('5fh04di9lh854bg4957ed2c0ji2788', '4868812415572782947735163151740587465316', 22); + T('13030030412302400343203111232', '60506277551461769567', 5); + T('18423115785830864674513a49890a6a369653577', '797488530648724604221696847400592018064367', 11); + T('mib33aik0oe', '2168445661641239', 25); + T('4f373b2cdchh4ic9ba63aic625h989b383a48hhd', '356883101285661886815711288455781633251556555968023', 19); + T('49645837a599899700a60', '3277077666371488259808', 11); + T('30467e8e', '515946284', 15); + T('f88gnqjdhnqce53g03rpde1km46qc9sb9r4', '805058822427589583306256678962040241179999133462129', 29); + T('1mpqq', '1265644', 29); + T('dd5d03lda1r2bjmfofid4dg4ln5j27d', '1001880008568720793424449251386638391786461149', 29); + T('481kjai1h5e226gikj2i08g85ki810e80hj5c1ga', '16164773357903179257478471364779107060390719020084606', 21); + T('cc312enkg34of9i', '1362114899632793344734', 27); + T('a523a89a13', '53831004783', 12); + T('bcb3750ecd418048f3c9a907a1', '14950433883660044294408311998369', 16); + T('404902a03666449471524a9193353311260037114433a54294', '305850369678697383399472296340395515919908283719915920', 12); + T('122202012113', '6955415', 4); + T('1ush8wqys6nym91b', '410160199735843616675135', 36); + T('am3230j9', '66436375484', 25); + T('402524530030233354500101105335132042113514123333551524544415115012', '1550904369864527359367977424097726543505044596334704', 6); + T('75khfam4kcnghm715bdaa6kde15ilb6jd', '1063550394889085802339598789900636157058462037', 24); + T('15ckebn4a8bmv1jrov3jmj', '90034910889272889928459408320145', 33); + T('74a57mj3b7oqfkjdi7qt4c', '148686083061828528921843173717108', 31); + T('2a1cgmci7leh2e1g6h212il487aj', '1051977661293043554453465596384040119404', 27); + T('177a7a3a9b4414a79617934', '904337669156803925941624', 12); + T('1334504451254233444333525101252522240052410203505301300545545325', '16952109548779766921097840692944523012508999766805', 6); + T('81jaht3g0q8ebuauk', '5857490476197292433536452', 31); + T('a3664d6c2801a1d385947d711b40c94537786632c75cb', '2755747140622424147994575137709870068882656069074383', 14); + T('kbk7bgdb07g5g49b8jkflig1hjaae3', '17494482520856869278705339934437230552543', 22); + T('21cc019d87d6a38d7240d0a', '35045098625804789921638718', 14); + T('b7677de626a96290c23c7b34d2a3d48b9d993ee5', '84740181377896568043867047475707714193154444115', 15); + T('g72bbf12e0', '3252509311068', 18); + T('4b63k3', '35585187', 24); + T('441345035204314004532312424335512520451', '1749684973421935188191842585519', 6); + T('2kecacmfnzc19d33', '567413050870791669672831', 36); + T('6a065551905199780109695521766', '997063787222699268458056520053', 11); + T('82a8dc8782612a', '15920695955540515', 15); + T('14231143130424222102345535', '49386499907903489507', 6); + T('20200331130223100331230312230310123302011310332130213210', '2763276123199138513786811130169828', 4); + T('l8sjd62j21qtfk0bkk', '275049147514425322241710520', 30); + T('8b5r027799go6wmw0nasgk3fm', '23196991346952529463855897995513260706', 33); + T('514c5po1af8i0g2g508', '148726327273315469093588700', 26); + T('db1cdc3', '103874095', 14); + T('497a45', '2518269', 14); + T('3rqbk84od6a', '5884908609656152', 33); + T('1b3fu94ovmgk087q', '50894505143084876046586', 32); + T('bf4g4g44i2bg3gafdh', '352245026857755092633435', 21); + T('1bhb8os3jig8a0jjg509', '8544492060848011899078076234', 29); + T('9bb889jb0boh9004ghi4ifji999', '21001275121677892617892428312654193359', 25); + T('1', '1', 25); + T('175cec17gd755f6cebd6d71caab7', '2387636247630379533351295291428493', 17); + T('1q3q4d1m332m2bkaid5', '114462382134814329996673745', 27); + T('1435cb611aagd2e35026fb46a2b9', '40981399468733686494173008403141599', 19); + T('15qocnklsa4osrk0490', '463533209002652420364303870', 30); + T('15240705643046435', '468452863921437', 8); + T('73c49d6e96842ccc53a2c8b211', '1831900048463710636442691320716', 15); + T('4a8d8f3oodsg4fy1ua4mzpsseul7o', '161563492183061675654277113651271343378498788', 36); + T('jx0e9', '29927249', 35); + T('l7q9fhvql7jsu1rai6g51vm8036882eun', '31048769411271240430732754144531195600735144328151', 32); + T('12144', '924', 5); + T('148930a291006200a1468a260360162', '25069985375355798281506802929220', 11); + T('6646091881a040835', '1207532109684779177', 12); + T('3e4i0f1chhb7c', '27052411261074351', 21); + T('1312221302201230200', '127402646304', 4); + T('f663flb3h1cm2fm7cia24hb1lh265', '2052532182599394731797271980461818317874', 23); + T('29knujohjz5r2x38fcil', '841388446955060573107520827677', 36); + T('1000101011', '555', 2); + T('11ah5iab16d64e51kg0k7khkb233250fifk', '967644642858844521497590773738918042685372937', 21); + T('17108461113891045589910352983286918980713352258990', '17108461113891045589910352983286918980713352258990', 10); + T('1012000210011211001012102011001112011210021021220211221011222220022102122111102200001002210', '10353644175713994607088273235575881655299917', 3); + T('1hb3083fe2j735', '283424846911969208', 21); + T('13340672a7748b5cb36', '1794939665419760555526', 15); + T('1321012003221112321200303121230000110100012002320330123012230210303221', '659301932561021877769528555071668952911081', 4); + T('47013a004030970099911357a0750aa569aa72509508244576a3', '598824846543948874720639846647786926677632860889870751', 11); + T('k59bb2gfie5g1', '149027214830542483', 21); + T('93', '228', 25); + T('2244514405433141213351312', '11689824549798354428', 6); + T('3391990050', '3391990050', 10); + T('322240420551002415103245414443533220432233513', '58925535053757685361596112546437173', 6); + T('1448918iehd5cd705a94g4b2987603hcge1heag364a', '623766172807410187823974273716557093465964345387560462', 19); + T('vhh8f2apoddkcbte8qd2cv6eo07qf8l', '45026967317927008054648848145141282924620758293', 32); + T('4gcghhbpm5s', '1921232692885665', 29); + T('a2tv2d23w5ax3vro', '2228115152562528794000532', 36); + T('23fbge2h54fb39', '46123055007002883', 18); + T('1211013220130122010000203133130013313230032100013112323100', '32815072429253845963147847323709136', 4); + T('63665b4143847051bd8112a28125339', '151192052168606148985101333943415831', 14); + T('121230151444000352035', '5018902103174711', 6); + T('17o6rjepo7o', '379407511108636', 28); + T('3e0jd35h9fj984ji0c952ha6a0619ei433f64b4g', '2035447414961080260067064298213540337611882480996496', 20); + T('9qoj95o', '3872991264', 27); + T('2ehjmmpq26', '48937594118466', 30); + T('20203010100313111', '318125401031', 5); + T('16624342084015440626027666617826745786663', '257801163001691389520291595409112640129', 9); + T('99ja4077kkr89mhi7kn2lin', '642847989448256643908613736023263', 28); + T('1200022320121322202111310132001213031202322103211003223112', '31208956033081947189359407770385110', 4); + T('ch3n6m933c1i68nfdld7n8beni82ni', '135036167864868994578206007145405022688954', 24); + T('850dgbj1bina77q967n3icd', '562583517839371187906929749349565', 28); + T('1c1b6hf2b6adcf19jaf423gdf6985djb7f9b', '5511020452322809692026505861258306260094622191', 20); + T('368h14b3a9iceii0h6837ag1g1', '310916278043275877944347017914923', 19); + T('1498c6d696hd218ag5a38gbd23255a3056758dd', '4840693541321204605632050758615059700032223696728', 19); + T('1vbb', '64875', 32); + T('3337pb61glb100lncp21', '2391589725484953912041378217', 26); + T('262523728', '116165285', 9); + T('5dd205e2db781f491bff', '443054323304979904404479', 16); + T('bfa04g4ghebgkae5j56ic11j', '30241293639507272594473537217404', 21); + T('9bg1a88d', '32375211230', 23); + T('3164e8k31407jd14algmcl79', '169629850617492399214780875675633', 24); + T('724887434828033700521303', '64556976680043023374716', 9); + T('1030310123113122032223011230', '21622677210575212', 4); + T('h94dk4e', '1974926286', 22); + T('620022671924219242429260867884371762289253', '620022671924219242429260867884371762289253', 10); + T('637151001154473265053799092722218122', '637151001154473265053799092722218122', 10); + T('140388a179a26299bcb19c75', '54670958388535719430386529', 13); + T('c0q2e8ilnral78q2a1pl', '37703922421575356885249800545', 28); + T('15e88026c3393905e6b3db31ccca6b7', '268084119743214063479478076068474022', 15); + T('5660c7b6977c29ca6', '3658116372348412435', 13); + T('1l', '45', 24); + T('2meqp7a6g3d510aq97l0kd1gel3', '46566148499279171126893633952988857703', 27); + T('10010011010001101011011101011000110001101001001001000000111111101101010000001110000111011001101110100011001010001000100001010101000100010000110100010010', '3284369793875476139142406227062347521500187922', 2); + T('1519a3010603c6051198c8c744', '9843602098699228915851703184', 13); + T('10210220102220222021112112110001202201210200001022000010000002210000010010100121110', '1690033786016843276059524636331001957853', 3); + T('674', '952', 12); + T('3530013143266263651', '66147388776605609', 8); + T('6g9jfk60c173eb5j5a8id7j3ea8kd', '71392844079040287986961370661351593891', 21); + T('1b5qepfq17oceqlrkb0j40l9', '2697119998800124545301978047134805', 28); + T('4f82be1gec8c4c93080174', '1114866884635660480307604358', 18); + T('84lb400kqln0d4ea3c504lnfc1cfnggmrp8', '429932989531641627287877704445651412410140512616235', 29); + T('1213031124022303141133121134110403143023', '2664899547599003947569974763', 5); + T('5972204c293a718d436', '2424395701327022173624', 14); + T('48c05660c35831096571569584b9bb', '944525160078047876860764786207444', 13); + T('1737j8ged2j9335f57579j018i6edde42', '583469808841264533540282982195940270989682', 20); + T('b92a4', '3775348', 24); + T('g0a0g3g3ed3', '57238226797917', 18); + T('c00ile7i0a6e7059d0k8k', '8466411686951123921386451716', 22); + T('1417a983839823752962043864a03', '198707395183668497169407615155', 11); + T('212020002201', '457156', 3); + T('293ge61a0554a3fg74cd4d708fbf2f4', '20837793831755445803430404484447203673', 17); + T('31ksjf53lo5lfcelu4kbm', '2051668901240245477484691606434', 31); + T('18b91bbda46660aa90d0bab167807cb51ddbd521d3', '159834746906390155881812965963138183604335984605', 14); + T('a325a721', '200595880', 11); + T('111220333303003000330232212132302100100322220331201330230213123202330231230133001331', '126510946622282313351146590205348811859694558769277', 4); + T('3nklanafm65ed90g78koh93do226ondn7dg765', '20928977098157474166932241491953431194495934644004530', 25); + T('8d56gggg3gl7fn7d6k273k38aaegg', '3783755977257147057647496235991570373904', 24); + T('jvjs', '783286', 34); + T('3', '3', 16); + T('2dm48dk09h2mf', '57135037288325649', 23); + T('7c58km94ogkeoecfk3oji2b64e806b', '808192629771412919893870560197459472754247', 26); + T('108ba7dc0b83574862fffc703b989d5b578d862', '5903642409059499044928754369694490849414010978', 16); + T('cjqnk4gdjh3vq4ddj', '15256476694176334186952115', 32); + T('228kcgi0di3fi32idcda4hk', '259572623213169656398598069717', 21); + T('3ce10e4g6mc3m', '77759411065315097', 23); + T('2c7323b8', '305067694', 14); + T('10022103330001303212', '285949828326', 4); + T('3t7e2cawj', '6892011752699', 34); + T('22', '28', 13); + T('464a1', '287905', 16); + T('5cc2576599c26', '759539534269986', 15); + T('jbj03hlkdha41fmj4', '236168166638253520612684', 24); + T('0', '0', 25); + T('2sn0577s1dkxc2in2lcg9c01qif5', '1380060804894799857868555382265618092450455', 35); + T('32h3b8bg', '2818270187', 19); + T('255545', '23321', 6); + T('44672701365702351354627010564700332716441663244', '1605697031030267612185423502895189353522852', 8); + T('dg6', '6075', 21); + T('172f', '5935', 16); + T('ff79a62d5304f3d99d59gheb8h486g96g8ahah2191', '46385498914881808944086334290535921747293937913848583', 18); + T('15141', '2437', 6); + T('26460b23b58906', '270831364391958', 12); + T('3', '3', 8); + T('1nelh6fd2nm', '385460235648697', 27); + T('555002132250423043321044154114553040535143212221300403502105', '48649779907252203719145936253957752216789784697', 6); + T('502c614709d225ddf70geg70ad7', '491428972626763333617324944411991', 17); + T('2a809', '43569', 11); + T('231025152544454503423105544545133222512424413141345', '2044955716085193393522162227889590083649', 6); + T('6127516', '1617742', 8); + T('3001212', '12390', 4); + T('61k8t4r', '5372388005', 31); + T('558hhgfj0i392d5149cdhaj4c81b3f45c01f', '10601211512457181022617948775789014879554131318823', 24); + T('5ai55am1f3fg3368080ag', '9386067417807853412865332671', 23); + T('375335072413', '1049997224103', 11); + T('3ulp5k2gfak4vwhs5xp3fp2vt91q1vvgf', '99640256815388464443077052932078228628581826390175', 35); + T('3cb5204i8gdhk31k1ca1jl12hji103', '3039225421760116368864520168279113397031', 22); + T('95g0pdi85jlch9', '146430211203929468319', 30); + T('1ga94k3', '253927869', 23); + T('17eae76fe4agb44b', '9674350126680300347', 18); + T('731352357080453082167066163008066544870856880624501815', '2761694377915234883111996820445810369791439662349049', 9); + T('28b42eg3fch6h17ec1f6bah7a46gg0ba8e8ge3728', '402898479377320666571762561009961282566338625627456', 18); + T('47763aa67667199503a', '26126027821437042586', 11); + T('1a1513a229241db1a', '3748786654473436012', 14); + T('4j3wlppbfgjvx12bhfdraxhj8as', '30035221592107391008826387409658384272600', 34); + T('4a', '66', 14); + T('11dmgo0pm5844ph95n0es4r1js8oh53s531m', '1605008834095669751131228638721128071723402662779373', 29); + T('78ac3g919991730dabf', '4671636511491254279401113', 21); + T('3uen8v', '132603167', 32); + T('18n1jhh534ed9kijd36h9eh926ajj98', '1176935676756916434242879253348138978824608', 25); + T('c6lida42bb7dibkb2ai9038j1bff2i7425', '2457445295804537407775390175826401409277343241', 22); + T('520451821452737', '119611394254600', 9); + T('111010010000011101100011000010100001011001011101111110001001100000101101100111111110110101111100011111000010101110101001010001011010', '4955975645658396849750021048094688973914', 2); + T('2j535maaee8', '177566375337176', 24); + T('87doh4mu9m4upmt8jjj8ppswm8h1ntc7c4', '18709453669151556448621559262750940609280449675917604', 36); + T('ki6g9a9c2194hjk1', '1421884784853472743133', 21); + T('1uu682edcgoe605vg08aul', '149927190638896493897053359305001', 33); + T('33611430560050523326063140530063215636236565634401651316012153', '12640761518619389588311599773840813250762104347169015', 7); + T('2e7mc3jal7908e06fm', '5447254724723092802070793', 27); + T('7i2ab92gccil8e5141e75fnpkb', '11544586496253437449398718886123580939', 28); + T('3ch6i46h3c9hj4d4', '245970537455421763324', 21); + T('341950453278908a8a0005', '153920651144564889561605', 12); + T('157396461156129428907782692155506630549', '157396461156129428907782692155506630549', 10); + T('4e8phiqe', '77509233466', 29); + T('h61b8f3aif1921abecg1fg82', '14515588347289719209260339486562', 20); + T('49eb10560b24720dc8d64d9a3869c21b64c7', '679348185541738001210448180139429111150087', 15); + T('1141752865644301566854274762894601647406769493', '1141752865644301566854274762894601647406769493', 10); + T('519569635591341326218616477948', '519569635591341326218616477948', 10); + T('64coenh4m7nclcdok6c9', '2248552578979295785537035309', 25); + T('57fdf4f5g0f9d84iib58b0f1edi4f1626i808', '58679471173751985874228442168831694410618065700', 19); + T('7638a5255', '3236027681', 12); + T('796623821741144', '2989556390158705', 11); + T('g21m964mkm4mfjb5nn86fe0cj7k8edbha9i', '1360344415859629714125407839865176137228200369514', 24); + T('323322023301122022303233132013010213321220101022220011321203', '1244263825928288441278865283502595683', 4); + T('3c4gd68dhibg23f5ie91e0226c', '1212014021547517721660786028816932', 20); + T('il2204ha0bc7mkimno87f', '171379074171212894108622645815', 25); + T('3078kt6ygmvmjoyl', '435509192168873571302736', 35); + T('a38', '2010', 14); + T('665354580258', '665354580258', 10); + T('b6iljh', '89840921', 24); + T('12', '8', 6); + T('1100100010101100010011010111010011011110001010011', '441284718869587', 2); + T('103425a844c64b54a799c19a8b80b8360', '451483347908514778430800009719438373', 13); + T('13jg1cd', '133462793', 22); + T('15r36doe4lc5pu9bt7ajk', '799090626108561656879167065895', 31); + T('9e6d58bifcddh8f7e8d566551gf', '17251970079387384841395849025324832', 19); + T('1111122112221020121000000102010022221121002021122212002221002101011012121', '33917854345218936391135563425595112', 3); + T('4990l153jqalbca5518d', '93177576163241292629115944053', 31); + T('1010110010000010', '44162', 2); + T('28b6338a', '98418778', 12); + T('36503hg2d8i', '309754322695843', 25); + T('1n96e8nk86i8', '44503394396446494', 31); + T('sll', '33103', 34); + T('33033011220200223', '16359262251', 4); + T('99d3129gc76egbef4fd3gbg4g11f1d70', '1333694013824598235831401355357401336069', 17); + T('97df0ig25e8c8bgicbda68g287ad2213be3d9h5', '36818894414378796947469929289289701562088950063034', 19); + T('4h2d93ahb9560361i7cieif04c99da16eiad747gh', '6926899048124838337587570688835924691980039686118308', 19); + T('1efa78a04b9cfae15i608', '66906711299008903988241970', 19); + T('6dajh82l2h39k17l89jj06b6ij1d38l2ah4a', '638587640933730076874373620811221314023256400630', 22); + T('29fikcgql9j9j', '1231539340753070389', 30); + T('3da62e0cd7d5edc8b6731fc', '1192467796933113553619464700', 16); + T('167i437dik6224', '642946919459203965', 23); + T('2212030030033111020121122', '730913496663642', 4); + T('0', '0', 3); + T('a934gbe3eb6gd0686eg7ceacf3g', '1034060133939988465057499206465869', 17); + T('b06bk9d6g0a42af4a', '15757568799670003822267', 21); + T('11813a068978a723528a6811a04418872a25a97', '4331585506586356267499594006764356259902', 11); + T('o3emg54n6mk8fn292gdfne0', '137241894959729632465723306108475', 25); + T('26f70gdg0a75ge56f63g2gbda6e', '236057761685701334850732917197770', 17); + T('8ujdov2cs356b', '14889117743117384096', 33); + T('p0p', '28925', 34); + T('331331554260223242', '804688549652157', 7); + T('9m0508egpmhni5gm7aicn07dm66g911j1863f', '8556964370979913328368960003720919994571132796665125', 26); + T('97659', '273516', 13); + T('30841783490097007741741271081026', '30841783490097007741741271081026', 10); + T('4q4sqdqsadn8rck7bhjsos61kniq4qo', '365053872988495536844847225543861276332385142', 29); + T('3085581349916184a854518229397966', '589317025721598516831908960908549', 11); + T('5r4otco7ld', '116235391074943', 30); + T('h881s7ng42l7ktf', '8262879069644201817885', 30); + T('722935123087', '722935123087', 10); + T('2211424', '271870', 7); + T('169675b23386dc66556b4', '123567084465286023095006', 14); + T('1d1460d5', '725910715', 17); + T('101110100110000101110000101000000100100110110100000101100000011001111010111100011101011100101010001001010011001101001010001', '7741948260639498696423377430502808145', 2); + T('6324dl7i97ejh30h7d2d', '196908817838272957802386245', 22); + T('1e6bdg9840bij4m6mgaif0b3a1fa800i', '2650595719449645853646782554686853038953647', 23); + T('3op280u714f1l5c4e58d3n195wgdadon', '2722922194519046542296617636311541345690187538038', 35); + T('4ul4gph', '10556594837', 36); + T('neepzcrwsljpq56yw5fe1p8slc2q6h', '31768227704262634163351278216775977989668712713', 36); + T('163508485687', '53683805509', 9); + T('kq1f5osda769asejc2', '151662515754458740001154937', 29); + T('2bb5kba8ij1n8kcg9i5f8d46n8425dk6l6iac8', '2896620834535199514593225193367996812104377232901032', 24); + T('13fpo7ebe9ibo45o7f38mgcoh3705kc', '3204372840607139571307714097742381921592280', 26); + T('fl1976f57ha23jae159kdck7e', '2636992324538165186145579853041064', 22); + T('421d5154795bc24eee09c38bc0ebe5b8ee29273a675ab', '23184471520376505532353622062217664262369811465453661', 15); + T('120cc7a219303044926aba2366c8a981b4704098b34', '70792117155249797617821261835217822465201863468', 13); + T('706069779aab536435babab84561', '967362705785425743632483240473', 12); + T('587ci2heb9f6ha5', '8878675397855255005', 20); + T('6', '6', 22); + T('101100000110111000111001010110010000110011', '3031053984819', 2); + T('g402fj8dc41h', '15410872733788423', 23); + T('384cb1e378c31062632840835ca792', '45443550340307284975305780784392962', 15); + T('709120709950241446662286143551107773877', '709120709950241446662286143551107773877', 10); + T('10110011010101011100010110100101111101111101110001011111101011011001101100100010000001010011011110010010010011101010001010011100101000001000000001010100111011111110001011', '1048393860009702438276451118840918885709561673793419', 2); + T('43530143525312435203035354402132515250345350110051254130', '29245051644396815096043409979498563547760486', 6); + T('273874118720265720003330', '25054867528860327211665', 9); + T('75chppa1pfoc8', '5650988903040886596', 31); + T('1o2xzq0y85nh2uz4hrq', '17214140131662303072328011254', 36); + T('7mel09lb2a8a57gbgjajae1231gg63ifi', '300296405223222733629146932689003077500853453', 23); + T('9h797idhg6bf82hbneffie06d7n7n6bj692', '822053978411404614899330556271321295033323274330', 24); + T('2231451202332013234346554405060630261020301565243616052163120', '1194780384819131090196038746300735825418428054448297', 7); + T('651308764720485861752385601247', '30955749937585936729212961915', 9); + T('wisjnua14a5j', '3141478047294715819', 35); + T('1f287eg4d1e96aj275810j2b76hk6', '65295279177191049973439872523750757634', 22); + T('732jlm285a7', '452060572081207', 24); + T('543a6a7205935', '16936274072569', 11); + T('11d84024g1e', '2228646074688', 17); + T('b733f14109d5b25bg0d4bc03ebag43945g86242c1bb1', '927003510624924525673202158389033192698291798479053046', 17); + T('baabja1c5fhfjbgb7a248bkhcgk', '274413406419696811582074157627497260', 21); + T('12rkl64f6r165mb', '201505391341491620163', 28); + T('86nnhl7wdo3yfaupk3gxyn3b9', '93531275000126027219179909918998577069', 35); + T('9fa97a6685f7f068fa0c7c7c', '198055880094540331320903211843', 17); + T('53b5607598a8568405b6038b056b', '732126558636324783191109176867', 12); + T('1d38dki3ecf4hb2c', '110820443100982410906', 21); + T('alicf731m71ekmfb7', '132157470326092217910991', 24); + T('2946f0f6fa', '498579612616', 18); + T('p1m5fba4i9c8', '139351741901234288', 27); + T('491npjfdqp5o0eok5m8k83d272p4bpa', '37843769272881591548066267248820470893488566', 27); + T('3sp139s619h5fnr3g43075g41qrphm1274', '22020285331732361216643228764147906649510745949014', 30); + T('1go8q2j1hfhkp8cnecdgthoma', '440682856002100886822190646729771270', 30); + T('1l69ed12hc2i7d2xo3xp10s585gnj', '27505025872397325904081958842489980594333549', 35); + T('7jam53fgqrsghesc', '178900402668575769571705', 31); + T('1ta11tnjsu4sqnkctllg5r', '146148626279942060305711089820179', 33); + T('38549293', '132726351', 12); + T('erj', '13429', 30); + T('0', '0', 2); + T('aps76', '12788364', 33); + T('i4f689483a05fg79dd459', '1912424668215298964958985709', 20); + T('2l129l', '27751496', 25); + T('2303412343', '25367175', 6); + T('549b8457125278', '578041793560892', 12); + T('120869707199141380905a805187000259a0606312a8878', '952772077272503697711661443135381708565035744224', 11); + T('4s4ie4nc0dg8o', '5625644808984248600', 32); + T('febb3g4036', '1881263605907', 17); + T('24adgbd8nbf0k', '129751809901743770', 25); + T('g27i79d5e55896i4fg7a245', '218847629102163139699173355291', 19); + T('30529c2802a7a6500a48164', '9734582938146405358147470', 13); + T('13a77a7280a338383a965945211402', '2159245188374564306148810546761', 11); + T('4ahj0705e9i38hf4gjj1c4bh27jge090i1h05hi', '124928632984691876439135258471206747484391557922358', 20); + T('440313525', '26407491', 7); + T('kmm8mq0bl9', '1627285397199219', 35); + T('43hqv0r126', '144649097151558', 32); + T('1048b51ab04b2bcc558ccac705672542b3db9', '186529630154587639414052458405508817794479', 14); + T('14423112251502214140350553421432332152103521123', '1116071013468917454980382318315110091', 6); + T('13mn8ak8okaa5', '68944310390553380', 25); + T('38m9915e9g1gd051akdkke5f5a27jd58ej3', '67448136771996483355341359401090802088684251372', 23); + T('kq86qir6d1p29bfceqvf', '824785809235191997125198572527', 32); + T('1112321020311312133310021133020222332223221101322301322220113323000222032', '30277716024835658731702957127157570855504526', 4); + T('208408904304224157224980647150862034543184171614714', '208408904304224157224980647150862034543184171614714', 10); + T('1342414184334047452273', '151665011409098573076', 9); + T('1la8c107nb8105l7h8n2d4nn', '263830603401598394475203594737473', 25); + T('luz2', '1019918', 36); + T('9k9fm7bqw7yyerjs2k764il8lqq', '133997186940027427483405272900623275104661', 35); + T('10x4cf7afl8kevixm3d0yxgqt4jfe', '38674921472624504070368294249321086159708250', 36); + T('11011000100011101011010010001001101010111010000100000110100010011010100100101000110011001000000101100101', '17157448231253463055811180527973', 2); + T('123466063012654210205425010534440020', '515748143498324939176731633807', 7); + T('33044012241110', '4441524530', 5); + T('1158b5a630619185', '17305771835233973', 12); + T('7n0vvguft7mnqbir', '461401544473301116074780', 33); + T('567a95139027a78a', '23440483786358649', 11); + T('10002000442022441044', '19134759968274', 5); + T('4dfc', '63156', 24); + T('312a406aa3450a3a23912402340a01966692', '8754550707437018386514400792052318480', 11); + T('cnddgk98jmb92cga29agigo17ij02oc44ag7k', '2740506289219815903046559261127339765453793253682070', 25); + T('112002022001', '277237', 3); + T('13185359b8b7cc6c', '63496717433440602', 13); + T('rdp8', '670169', 29); + T('a5945524a0ba9', '93456277979313', 12); + T('2csg3gpqajhsck3', '1829362423553209975227', 31); + T('qawko53qgbm', '54339224712711276', 34); + T('53a8981b9513684a', '82035316765523002', 12); + T('161b048i782', '21503214153206', 21); + T('22102400412123042123341032122120332432011302', '2779064502733276433175230344577', 5); + T('idlbb4187e191dd42', '114102484434631244007167', 23); + T('b1gd8d', '88149517', 24); + T('87aa5220276', '536130980730', 12); + T('17813c4bee86cgad8acfa4gd6980122g0e1c2c3f', '1398872946976482742153451223578417416198761226747', 17); + T('542516a818ab733164bb11a0b90448b54385562205002a949', '33811866838197068550203974493168709163294532080937673', 12); + T('34', '31', 9); + T('ulddjl1p7g33c3lfi', '243484528223299178648975166', 36); + T('43685922830053717349636937254384863641936188539078', '43685922830053717349636937254384863641936188539078', 10); + T('1kq', '1526', 30); + T('h3q4', '417894', 29); + T('2sgpnvjvimhdvfte53e', '3579393219704746078446752878', 32); + T('2g0klh8m51d2m737719helbbmhfb13aadf52k6ba', '345403492723336949220351795875996776734586242292103572', 23); + T('34534434531104021501132204125434', '5071162229234026722846814', 6); + T('18728536442631514847167146206666864236812842053', '155482283694964503460685159464849077646366146', 9); + T('1011102210012020002010101120221020201200012022022210100200120211200210212112000', '19121766375891188407348322182261750770', 3); + T('43xd87t9i3wc5dy9urecm', '31297925864315303967241520625217', 35); + T('6tn9585oibr', '5704387543834275', 31); + T('1odaiw750phch8k7ghptsrbd6r', '332539724961043900901068288669103492707', 34); + T('235a2975935301a79', '106684220535281420', 11); + T('42ba', '33030', 20); + T('j', '19', 21); + T('j4rjbgf0d', '12573534055513', 30); + T('32xshoix6xh9ccr30', '9848122710986064368393554', 34); + T('535', '203', 6); + T('16077c0833e289da0b', '406367684695924791819', 16); + T('3m20fi3q3lm17gnmhqpjbpmh3eo4q284o', '235527531251668145423074205329962075938693335711', 29); + T('132db2098c07d5c2f3db90fc9dc5969f4c5ef8', '3988017842540737733695567767722086300600078298', 17); + T('1c85d01', '103725201', 20); + T('1001111101111001100110000011001', '1337773081', 2); + T('vwb7r7k3g5h2c3r97q88rp', '2475548335462435623069755240245930', 33); + T('5qrlb4tcb76enmfllc6l944m16', '49968491826455815316033134152951067836', 30); + T('110020012122031310100', '1383087004944', 4); + T('132102232221032133123312103100322102332222330010331130223031113100023031010332322323113', '11333821350115864348147427574650948754682805810343639', 4); + T('60370776342110666', '60370776342110666', 10); + T('3h4i4ejlfjg0688l', '6140106694915716688693', 26); + T('1dm8lihi1e26ahfa1fk6g43ibfjjmg37', '2628602474297861320421568139067733120965444', 23); + T('aebd6h6e4h0h3g6', '17578668715830537526', 20); + T('3v16buqvxdcu0pl580aduqh59t4p1ytyzw3', '317029270815082851172083917802213165659300395303124787', 36); + T('ef6f9235d0afe2e5cg', '12331072171139724632698', 17); + T('1010000101', '645', 2); + T('687cab97212266004232ddb3d3b9e', '5597607870848036280745860522464624', 15); + T('10212311222220113132220123112023213020301012233202002122122321233112231321220233233101003', '110312191634483651495896170224950641069551786395628611', 4); + T('3832ac25760c6957d0a4c6d213458a5dba00029b3', '25115577925068533589911218721261542504047301873', 14); + T('7chebcgc', '6865651019', 19); + T('4nn', '2879', 24); + T('a321054270b305ba0b66ba3b6b56339', '2436546585202095704641104341508957', 12); + T('1l141elo4mkmm50cok767dgbhnl859ea223a099', '243768152347675786552797555960516182859457306417343984', 25); + T('3gg7mpsa4mef', '43568856039788618', 29); + T('dn', '374', 27); + T('3000445345054', '6538448122', 6); + T('320403212410040111002033343341141234242231423043134214130032422404322010313', '18174722812021434932358160186198714046154568563860083', 5); + T('h7963j9697ilenpfbea65fnh3k', '4092136993515034862901357828279507182', 26); + T('44d', '1693', 20); + T('9lif165fb9am8i5i6df725ah5ke7kakmimc8', '4552222216377737849505813807820250518334913223674', 23); + T('95cc0a9523c654d1d87c6c8c41da3c0', '228044297514817056310395998663259348', 14); + T('1eb5298', '22596218', 15); + T('18d15067c13c7b96546a0bd03811aa0648', '108794139679161970964043442876985805816', 14); + T('10c8c5c2', '3484449218', 23); + T('1130241183031735622176218077807830726640278265535', '7307690599679782626468030026978745315150762698', 9); + T('147hios9h6pc49vabeeijibp7l9el4juv', '1654964473386058879615178865366866020965350002655', 32); + T('2hehe758c84', '18001465765974', 19); + T('27ca95172', '17128511655', 17); + T('11a64b1364976db4501b4641', '1249071479135368641718518661', 15); + T('oalp077scqppkgsithtf2lgmdekuhltt', '415553692412432987092587239826921522135844076896', 31); + T('24512544314343321411051', '370182538802982343', 6); + T('18762343i219897i8bab2a3gii7b7h8f34a', '43289966715277773748038371629470766822398253', 19); + T('2pi', '2286', 28); + T('1cbbe0h4g8jcjf8c1f1e5fkgc', '259324373962987253102359495935860', 22); + T('pt', '904', 35); + T('1pq017hmfclcb9', '7949466399349926747', 27); + T('f7a3a6c5202h31ef64ef1a142e', '371455948373140075962244702804106', 18); + T('5391521717249849338', '5391521717249849338', 10); + T('115048968584225548467a166a8505a22189', '3182768778233114520385989554018322385', 11); + T('784c5768a01120f03ef7a73160baaa0c5f', '40935359210071367599328032328982052080735', 16); + T('a79a1616597a68813', '492505903090120637', 11); + T('104302302000041202003342432402432', '27586639009156197153492', 5); + T('e6', '482', 34); + T('10a9ba011b397214372673b869154', '1772448509226592504876544881552', 12); + T('b529388682ca681a0a211a9c291aa525a569b89', '24365646313226855959855845860118543252986104', 13); + T('60266784078122366807652381741868036523827834044816', '345530321229050938748463990139827078607744866078', 9); + T('nrj2wqd517bt9sf0ji8', '245119446680615904169840513472', 36); + T('i30lg31967233dca599k9khf253', '13925405872348342338134182452445003515', 24); + T('2ryv', '120046', 35); + T('11a28178b2d3749352dd0688d33325000b80c1d7c21a73', '4229526571666583429911018550162020409543001093510565', 14); + T('1hlf33b40v7pqogpco5h', '61489711252104567972030734513', 32); + T('2ooqt4ok6crqcqoprok0e1e', '1807700340428814411931323774855651', 31); + T('5330703347212770743451273354450142023332067068', '46881764614088473306314988288234150109880758', 9); + T('190411146532942276953175', '190411146532942276953175', 10); + T('1032', '78', 4); + T('220311100310133201101213211131102122120103321313021203300230312221332102132', '910589190412628421660420436887035984747160734', 4); + T('53aiqhbd26i4t3gpnfmpo9', '106372792078016060806151089912464', 31); + T('1mcshrkt3vuow', '3957079661421807504', 34); + T('11420140420313400023142434242130143320333001404323014032011441103301014244', '1457518531908973605405978898403083567207549128141824', 5); + T('265210518039651538964229872a244598261186', '106497114458263044665001931751128560884115', 11); + T('b5b39686', '411895686', 12); + T('9693g67fd46443ch29bfad5', '391033997087892318025118684265', 20); + T('6aa1787181528233441a875', '569250946715170907346131', 11); + T('1534821551365858622483716488168', '67797697219511094422985323240', 9); + T('2u5h5ch75t99h7ftpar8epck0uf2l2thgkp', '1512058697304555562850007013279347701338862065083953', 31); + T('364lf34159pfld9decepegn9jnc', '19932987570255245395513434170488890598', 26); + T('cjbxwfida', '28266954157515', 35); + T('234422033140', '136517920', 5); + T('5d27dhru9i0rolnl7k5cc04d', '224657379433425485580575516892987533', 32); + T('15d96d637d18724681c68', '119388782053752864730372', 14); + T('glgmfg19hmbiuw8gejqlushd', '2785871717038208979814744954063843071', 34); + T('fs27q3', '327526525', 29); + T('1aj94', '742369', 27); + T('2rpnbci4jt3cga9b7k7ri2kq951k2l06opu3', '45679643141383333963769732373782633717189382232076574', 31); + T('2fvp005iv45', '6770745914953620', 35); + T('3739cfai4g37d8ehigiiaa5c5e1017hfgif34f34', '251228158449149553590458723730036424872270586078914', 19); + T('100132020020131301313310320', '4636099868065080', 4); + T('1hufs4gy8ux4t98q', '330662166686009999383562', 36); + T('31141410440222032202444232140002403313304013141143142112332414', '14202859109742120451995012678655132660667859', 5); + T('120314021231222320010021120411103223412323023', '8111041563265329020880984104763', 5); + T('5', '5', 15); + T('22356', '5676', 7); + T('23', '45', 21); + T('7lgn37jdpecj6403d0jom4jna', '71329726048559149957340654751993676', 26); + T('113lhxiw79qpwyjdlpgn', '224270117034921406000339777208', 35); + T('e62poemoo3e9cjo1l4', '16140263108781826392138362', 26); + T('326167dc1c29169ddb457e2ea74da9540', '136353349886424397650412714901640659685', 15); + T('a280710ji1he43a427k81fif1fa2g', '106423632510333355935644382252587269768', 21); + T('0', '0', 16); + T('4bo96rt0bo', '263786477496742', 34); + T('111110000001000011100000110010111011001011100110111110011110111011010101010111101100101111101000000000101100011111110111100101001110000011111000010011011', '11064110199645779468713657128408705698455744667', 2); + T('rc7', '26326', 31); + T('9ci9486917f60e45b082chgd4c63djjhcha240d6', '5303028473960156575531077483320594119475139680352266', 20); + T('7f6in4ffhb1flp871ipcpg545o56c5', '7001603956717371881956901400431902260257909', 28); + T('7691c95hhipboj7rg2lj229rkmhac45b8', '147212537247130546499231460140529489308763331468', 28); + T('1rsi5r604m7ioheb6fcl4h2bnlcfj', '173989478506881942888773260671258027309887', 29); + T('b4om1cj2maljon40k9e6a5', '5798208632384734824227289530657', 26); + T('11eol4ua776vdblm882h3qwa6h0', '6860908597449491750120493068938147873066', 34); + T('12121010010220000101211121000222100022201020', '612407733641262215889', 3); + T('5623882688c3a20370c29683af', '30933873734949067206794851517102', 17); + T('7p3014mdoasx', '1013060656191967665', 36); + T('2f4i8d7g63149c81', '90515183521475916961', 20); + T('1037028086382201343445', '114527582053447761554', 9); + T('cmj', '16363', 36); + T('31013032010320201322221203203', '236219413687867619', 4); + T('xrienrjyq3vi44686', '171329229726722909956091011', 35); + T('g98pi5f5i37blbo3e619', '12538983223080485163975508379', 26); + T('6gthi0fijlk13kg3m8recgqcsqi65h0', '1351923881091471085665472649762970950098547010', 30); + T('48920165m2204a', '2200120683667985813', 23); + T('ba575460a', '5104899946', 12); + T('9eq', '6965', 27); + T('298285791a0888b970036ab67875b9361668222', '286515785301458024010310865718090862556474', 12); + T('32b10239083bbb27a8a9b1225534b956487365', '529271448272229707546432985555718969417502', 13); + T('3ba90bcf292a852be', '68783684858858197694', 16); + T('66726644', '14396836', 8); + T('10q71', '833611', 30); + T('hd2353gg4ahh2d5', '14134610453581815173', 19); + T('452202163400753742090780', '452202163400753742090780', 10); + T('3d9j3hecof6ld5a3mk35io5', '20097704011001101800560987589980', 25); + T('1200022202010221001210111012111200222000102211101020211212121012022110012', '37817615564406149218083810637238750', 3); + T('23454344155', '159499655', 6); + T('bk7lb8gl2kl01k554', '72883403283874275717587', 23); + T('112313101022313000012003220003310032321110323332332300', '115932056790344637678217394646960', 4); + T('256ag1pilpennbnalhfgg1b', '67800097110287594251574673904676', 27); + T('5819b9b905cb0970ce6766d5d5367907e589b9365ea713', '465231703686879290288579188172672651019623788286244093', 15); + T('948', '2677', 17); + T('49fgidcf2', '243740232980', 22); + T('ba8e67fg8116agd0ecd06a07746e7b6c', '1618376196981235195559537216353877633919', 17); + T('7p75nir4wc44', '543366534313517148', 34); + T('207526928514479808388641363288479462', '207526928514479808388641363288479462', 10); + T('11110010010110011110011011000110111010', '260222595514', 2); + T('22ow3qaizvi3ml84m', '16512328963582356580908646', 36); + T('dm8d5k9lg4jfk601434n4327ma1', '10702631860631688676459813994309897329', 24); + T('1p4re9g4k7to1mkbxxi982qugvwfubm2wnb', '20450108624302345417065874616002109798595396729996393', 34); + T('50a1d7df74babgeg860cf8f0cbbf', '39266851385410224911159816445537921', 18); + T('11210021110100', '2544543', 3); + T('409b9393847462143', '2700650788976025603', 13); + T('7334', '19842', 14); + T('615264ba2c91bb2d16b27657687d61cb8a68829190d5', '117133480342797205694669610294061082973100299430819', 14); + T('101000100111110011111100111001011100001000101101110011000100111111011001111', '23979030927343490334415', 2); + T('2bcl7chf626gjic', '15721285277159323940', 22); + T('e8jdshpceh511akg3eh96f1n', '61724909151432021746879467844279912', 29); + T('7ioidpi3fac69bd58h75pd2', '527856824728503952184574006672830', 28); + T('2012210212121110221011001201', '16892157195730', 3); + T('7669mmf310dd86flfkbh3l675akb3a4c9i63', '3328050075667048755190343358056273076421320709312', 23); + T('cbe1kfj09id9fijfd2k4bd6if7i48f9j2a7eg', '4997329333935474233928057995322719152450533537259', 21); + T('481df814c99e917079aeb', '5449011495668093676919531', 16); + T('200021121011012220120110212211201112021111020012112021', '39372587067244907527609165', 3); + T('2cuod2x5qskclq2839s0pbquc6w', '15665344596694415117114470797884328339020', 34); + T('61d8', '41770', 19); + T('1132d0e10b1dc7d9d4945b80da4', '4093911128145427008187373761204', 15); + T('6jbkeffkb3c665', '1948081861707426769', 22); + T('7839b37889659a675469b685a4774878965116', '65435909692700209089779026721746853819490', 12); + T('4h3e0o14306am2g2a8m5a1nkkcje', '260108515968753744015241516937732742364', 25); + T('5311555461504533675663441245372657173', '1750444240707415099769307901156987', 8); + T('189060cb8888330b22595a73b453', '1990161334123571052468023603490', 13); + T('d14f6c28f6b1a66f83ec00058d939e6deae057', '4667774422027164788903448529246588503172243543', 16); + T('5757513a925222715971a799023207', '9015463886750727461068645868694', 11); + T('10i', '547', 23); + T('3ldfpp1i4hgel51lhl8coggl2cno09lnj8gm', '127944080850766885182905102175542189745277162709534', 26); + T('esei2e43m92ifq3rhv23i7fvkp4cpi', '664081559838961998097945329675608329857151794', 32); + T('aflab0b8e', '1173646657934', 24); + T('2ag3ce11feg1d147d11', '37187897709081800814449', 17); + T('1288928', '1288928', 10); + T('36j3f8hj7aehd7i742i', '47593949304334976393861943', 25); + T('70eck6mb9ckm13m5k6164hc7a3e2g703d', '264297515812027647476881571249469049684770707', 23); + T('6al0cc485a5g84jio98ifi94aj9jppd4nkc', '8247805371919561622181081071988922761105885432992', 26); + T('4054706260215077404512214064677061152506', '679180789158344428977587279718831430', 8); + T('3123121033311032212223021333221101200333311110232023233201332023201101212233300', '313130279871566800608670339808906134119938157552', 4); + T('186700d42cfi55851jf1j12ddbd90if', '1520284426625971721505976719940709352375', 20); + T('867b3d952dd3236d30777193533ea0acd4eb217', '4144999543089127983532268234731096383836940097', 15); + T('21607142494642a17435480244914366aa7', '546971158677056207712730953612440610', 11); + T('2i4db77e2f9g2eh', '17593540766587374397', 22); + T('eg7b8135ag6j0aff3b4h8455ihfb7241di86i2ce', '8146790374268511095664515210088247752112171418705054', 20); + T('22ib', '88841', 35); + T('1230232302031112000011113212222', '1958723707255224746', 4); + T('3abkckh711b824d7dlc7kc50f5lfc903jh', '694110549193234127943850316292345559419640751', 22); + T('1a6faf864dh9', '101335185654255', 18); + T('csq', '11666', 30); + T('peldf6n7c', '16724317232922', 30); + T('1113212222141410102131431304441', '1180618941657064322496', 5); + T('a79123bd80', '217898466044', 14); + T('7c4729j', '487096999', 20); + T('1cd49d38b6ba7ad56f0h3f69i4', '155274639330332110420080389983927', 19); + T('101000000010010101101101001010', '671701834', 2); + T('62246711201113702465222477417147602750116154310733', '1122306478377713902587095609358921499575161307', 8); + T('crhab338af7bj', '10152189826006295493', 31); + T('14a51a0a2970459f9g006c5g309806d5f', '3009456851013370386519092081927217660807', 17); + T('2k2', '2994', 34); + T('22022111224', '23628939', 5); + T('21bia', '271824', 19); + T('338h', '25377', 20); + T('5222641636635631424', '8687773728715799', 7); + T('7bdld', '1763687', 22); + T('58560588242628367536365131', '4277917636306674590636902', 9); + T('8oeo85rqhb23bn8heg', '198205969424047940045873928', 31); + T('110112020021111122112101120211020200011100220222021000', '26979604883978349681358218', 3); + T('40212411423333423310130132', '1219680442848911292', 5); + T('33573674763b69438683abab62467a22164846297500ab52', '1732108517557715522209626167916098168953157629532654', 12); + T('rhsop', '32662105', 33); + T('2uorbofow27vtcai', '272365401628221575069518', 34); + T('6d8ghigi559d3f7e0a56b66d2a6hc9bch8ac55d4', '498928139884483809004632946022741017481450018749395', 19); + T('3adeb9d5cgb6c476376578c83e5787a96a', '955161261560504360368030415364335026227034', 18); + T('31015bf359cb9', '1782296955174613', 17); + T('10011100000110011001110110011111011101110001101011110111110011000001100001000101110111001110000010011101101001010111010010010101110111110110110000010111110111011010', '14258780956329408244620868751517156468304535191002', 2); + T('a2ebaf', '98663390', 25); + T('7b383jj778s', '6031015850885550', 31); + T('cfkmcgh4e9b19c710bifcedk1', '6095263335022578606276134979387222', 23); + T('4300224402031123300102132244311441413342', '8374896953320607531654247972', 5); + T('23mudc42y3b866', '248890986859579133516', 35); + T('38ge2iga36c4dicei8g', '902238930978105211639376', 20); + T('12003010033220032023213222112', '108949482152819350', 4); + T('8de244ec358hd24g0dgh', '6208260500151952090111781', 18); + T('4os8a0fcvnesa9', '176262234589093130569', 32); + T('9266oe530oj7gq', '59035236811161304202', 28); + T('13501034310034411445543051511', '10069554545357101315747', 6); + T('13gja52a98le74g2kc1ia2ka198484h5k', '10621239938769010401661040302635515509442950', 22); + T('3lnfcs6hndpnr79pms4rl', '664104835931225383450432803211', 29); + T('1x2gvx3bv3dvianrnuc7', '247269945120794324823087129439', 34); + T('1e0m8aao3', '567086770883', 28); + T('40jh43vsm04ag', '4633680786357227856', 32); + T('5044045341615306051311146510', '334711131291030516548281', 7); + T('62577dgab82cc39d', '17565163291072020168', 17); + T('4440adcc7f', '1362287072187', 19); + T('6649', '8765', 11); + T('1056403052652033555205161605402426525', '2973189411870171183261703706762', 7); + T('4l', '129', 27); + T('431pqa0cg9ga1j50ehka8nj1nc', '2502289496753859425052816386077486242', 27); + T('5732613240167571782367688321087552413', '131081400058592141994418041108160236', 9); + T('962d7915a045dd7b469', '4031321067511146526693', 14); + T('296awxtwry1ofvagrxdsne2xl5t3lki', '47488752629003449774538666832367750089164079443', 35); + T('il6dkdf7ch5031gc2edc917jgf823g6b6b6', '83252721133987805751930856697199204387425946104', 22); + T('4215475722134', '293885944924', 8); + T('14235542532634022', '53950625103587', 7); + T('36818425f9ca90bbe7a5b983c074', '1105511449492687971454561936457844', 16); + T('122073687', '53724220', 9); + T('2c977359c619b2a50e368272a2e12faa4', '948358531678320636918207632756786264740', 16); + T('1ut', '2013', 32); + T('2795131101664a797a3a020179003a156600a592623472830a', '2896979920691545032875120949083037703653537561322463', 11); + T('io', '474', 25); + T('529aab41b58281bcc49a806552a08a', '1050423338673734373190153676094415', 13); + T('43g2adf3', '7527485766', 21); + T('2bb390cbeed37eb3cc07g3e0f9eca921051g0c3b', '2609684906236620171804092629180580497183714528610', 17); + T('2gfdk850am77j316jhh1g6dc51i95b', '8423594663327891685667172048428742806616', 23); + T('1rc', '1722', 30); + T('15375392648094006750a890b440ab8163', '591409515137761369963146900003400155', 12); + T('7o5p8m8g0gk6ijm8dmthif4kpq2r', '143800041458103826053584594867124604912372', 31); + T('2b84f927eg76786hl89h7b651a9581a701lc1199', '319331358330810708432381010329034594655582446439863946', 23); + T('3hja70k2eg654af9i60ghcahka4cga2cge8k5fe8g', '298299391287001975026249946197438275847645771779205835', 21); + T('g4o2h7lh4cerm0xshxhlvs', '2338404688421636123000323976076998', 34); + T('53746157770654301215760653406471005756045764305156', '980109855734296770512774083035337723940538990', 8); + T('1boe2lob3mb1mdia7efsfnk4a', '176313634322313784050394291476552120', 29); + T('6102895394796612a85173242a66933', '106319505266114007488585957212707', 11); + T('j002mpkdge8fq0l6l86ic0ac325ko8kqh7', '10838559599010796633261649462182374112236602961027', 28); + T('1222102113020213', '1783198247', 4); + T('4', '4', 24); + T('223f5489h440gf6f45c9a2g5c70h3c71bb6821ebag6', '111787604760465635211456045075716599160139971202176742', 18); + T('24010204351221200301421443', '75953507215165005411', 6); + T('1b97c7449123344a72d6', '39363370326873603896151', 15); + T('10011010111001101001111000001000011000111000010111000100011101110000111010000010101010', '46815908925437602817089706', 2); + T('6786f6aaa24466c66772096948176f023b4ee4267e3', '2420882788095960105392950361690122210695410931099619', 16); + T('f465ic7jijm9da7fd5i0m4d6', '317085199137891998237067454281872', 23); + T('1801d483751a78d3370bb6819bd195', '2717717024003799773996202145806191', 14); + T('223d90d52784663b8a787c45', '496625290357492852632525461', 14); + T('67a153a65674020736842a450841b', '10968126203942490133113632912471', 12); + T('3gc91839', '2404483767', 18); + T('fme77w83b549ckmtrq9xaw0c3jh5e', '119174546513911048622366013545047675421136964', 34); + T('1eon5e2p6hgwvqrmmllbuwvjvbp00o1', '5198336511245033811195969352539905871452815252', 33); + T('999909a7b8807176b3a561590620867616b0b2410887', '249347755823438371204577699931935970503519167975', 12); + T('1', '1', 27); + T('210222101000211020101202011222222022221200020100021110222011201200011012', '18337051074624686676362253945875828', 3); + T('144813', '339855', 12); + T('468dd654d147', '77575000215879', 16); + T('4d8d6b0d09b2e87896571e8', '367073963094640539910552193', 15); + T('9ahg1d933fc3a72g45497a9b2fbbdc95c6h8d8265c', '257081352042987479986034962212194285056550134922156730', 19); + T('m', '22', 23); + T('12dcgcffk0ba841ekmfe7mlh10e1i1abbb', '962384266581672850344681457680540073681275566', 23); + T('466d816c1a1', '4839758545313', 16); + T('6idfak3f1', '533176825117', 23); + T('21qydfvujgdwibqfyef2ce073b8p', '1003962989378222780097553353426096168318655', 35); + T('hid4leab6200ddc9g0hd0778ag2dal0deamlc', '187416244122839612888287458425399312143406757414849', 23); + T('9fgg9988817491665857f5acb06', '975227292551389311524714747927864', 17); + T('13ibo4hcadhj4a5nbfmahje6c26bmfjeh5', '195226174949035947407967016245360627759255669140', 27); + T('67bab', '138227', 12); + T('1403340621202787910a0285502741823a86056950691991282a', '176407038475836628166083068850217042878816946943609943', 11); + T('10t0oduu5hu7xeq3d5tstcm0', '171705160058240681451967384000803748', 34); + T('2312645603023334053206206506114311', '18999669376657025727125561163', 7); + T('352320175446067457668251036773504880876250056665', '2534236716512667558334635281810919815086530038', 9); + T('215b44a990b5064486156753173b6213', '6052053142903698783509806567110831', 12); + T('jh6cl8q', '7608361103', 27); + T('ml0m012enj6ahef', '481225577733348729759', 24); + T('66aa96i4ncuqe15p3', '4513151173544319269517148', 31); + T('4ggc16n1l01dm5978a2', '67904639129257439505583377', 25); + T('bdb10650kdg48ca', '37772529505037088310', 21); + T('1pdko8mej5i32fc1c0ipfl7m19ko4b8p5', '3769138624256537961669330967608079598594202279', 26); + T('d6bcf011b9965', '3777711518226789', 16); + T('7f16e2f8fahf2i4ac7k76ffdj9dkf', '81208999985742760703645792450856237870', 21); + T('597a8749344790975339207177217856893a700aa553207a7', '570862871205184623051159726110304643063426032082261', 11); + T('1g3on4nkha0onef5mnpg53om619q5nkbod89q', '5403365419155920691028033935258064905584695189712495', 27); + T('52028440551854348388', '7059902878123817183', 9); + T('5d630bb7df92gfga8jc18dgih', '925999331010922039840596084374517', 22); + T('1080144b0i1gc9d192hh987', '42782218356170060622665259767', 20); + T('22210300330232332120020121221030032', '780256723337944142606', 4); + T('j0g60g4jj54070gdkj', '571906447450030093189003', 21); + T('1b', '30', 19); + T('452b31479640239b9b639a853476a6bb44a6bbb7', '5434568005375437518663444319858934471487227', 12); + T('1100010000000010001100111000011111100010101000010101100001010100011101111001101000001101111111101101000100', '62117604478929274751724622969668', 2); + T('3jg9g040jnf688ahh6jcok583kdj9j6', '3284019737150995327641899557095386675302981', 25); + T('13022133211310011123230321012030003000', '33830856903016211595456', 4); + T('336f838e47dje06749he1ac0ffg15a45c64', '544073756599977257872783903178913691232684924', 20); + T('46uhr61flrt37on48b1ckijk2cu', '5740347931453676082842828840069448206750', 32); + T('112001100211101', '7467022', 3); + T('pkdd1ik4ok5do8ffh7141bibpd2ii2193n', '1275141665523532165934940150111953342128717752497', 26); + T('25a', '535', 15); + T('2g4b41cb5bcbg9dadf91c08435f69', '83842838314159505886654561772317800', 17); + T('2bs9rbjjd', '1573422884683', 30); + T('klf8ad0', '6434826762', 26); + T('4f85g7c4364de0bh2280', '9521123183996160458149027', 19); + T('j5679d5hjj97', '3945663570879787', 20); + T('3140424', '52614', 5); + T('5461a8382b009b9483b90a440400065186a83788934', '11378348078699777667231184166670745809447683896', 12); + T('33e4g067j05kf0i5', '433325785455399388953', 22); + T('b5d54c2d13cbb24', '126959326916907412', 14); + T('74411760251306275052060', '558193600905071580208', 8); + T('3qobi0x', '8143314945', 36); + T('bqwufrh1qns50r3q9koaqiskfw', '1084917181467100837895352646759177337651', 33); + T('8gog7p67d210op9jd71mmrn', '591719162913780893033433711729131', 28); + T('44ba0aa61oma07l6hj03p35fr7l', '175761910992404861930958631561896387273', 28); + T('e55691a4ae8194023d7e8ae5e8059974432acc', '470387544390600973185133828002346243787354817', 15); + T('200212011122002020102220210201021010110022010122021202020110212121000', '582778073711029575626711438957001', 3); + T('3hk3l521jr4lqaig4qf0', '251179674690390315785498983554', 33); + T('mnt5fg94627qt3qse', '16565095395068373496545234', 31); + T('3bcobialm95oah08a5', '2014430966081121686333380', 25); + T('4641', '4641', 10); + T('2122002121200110101112120201201211000000201101022120010021111020112021', '2197120323515351911893330117447634', 3); + T('13714bdkap72ac8o4e4be9mpknl1f9j', '3167116946002852306408351163567756537094769', 26); + T('1l50bolpgp45pobdlpeh8b91mgfmoa9p214loc', '615842729217762132092179913282546237871597211241972476', 28); + T('100210022201220022112011202221202210222121120001021112210121220221011010012', '220547687111185863624614511757145708', 3); + T('23202303201343231214132000144124220422011033043224303012231042143040012224', '2842011217102887511723449090629059947996251803047814', 5); + T('55963455889939073566595695050105', '55963455889939073566595695050105', 10); + T('986a9a06406031855545a', '6582892192043057625734', 11); + T('66mjdcnicmi516553hefq0j4h8dbic', '110427317002013536940850484529174252675024590', 31); + T('5d6i14h30e2cd14', '4557106641352576163', 19); + T('1c7c554b8b5b11189a66324036092ca89462bb420', '711595302242240761379226114335862270631136990', 13); + T('2kkhh5aofpg8q74596e9drfobmj1p', '90838564499601485405393795175496213959653', 28); + T('3034134553053502555553353040432', '686018049407535850038308', 6); + T('23738', '15911', 9); + T('4212222124151323425', '444042355913513', 6); + T('a7elnbdja8nj5m2hha8gjj6', '23890454338021551829445564632206', 24); + T('32321200100213200022011012333331112', '1099315331975916289878', 4); + T('1eb9ee0017fk30iag8i6f3ed9d4b6e', '5039295759456928282155913550785147389669', 23); + T('27802069423286155041889995717306694770', '27802069423286155041889995717306694770', 10); + T('867960525699c5cb061401a', '27323968410745294080357770', 13); + T('35d7n4q2bxot45uuxm5scro1tvo6', '706987327769754553481308742217767001081194', 34); + T('3e5mt3q30', '4823236902825', 33); + T('cbd3b0dd08123466b52d', '962545403373485503722797', 16); + T('41ea3b163a5614966ae7957bde8126e0a93d4a4', '23519245104289372491020812621093511206089774244', 16); + T('238038k8rcoor', '1658110821340608856', 31); + T('3hg0m706l428n', '1275595457674448025', 29); + T('35bq3c', '54966336', 28); + T('3d42f8df046ed6958fc5b33d9fa992b492f1e', '85386222153107555893245630091838241326575390', 16); + T('m0gmnxts4h8p6an6ku', '2386980155865318111096328630', 34); + T('132cibe94hgc', '236874990279132', 20); + T('lcig0galc', '30069875475102', 33); + T('16bisddgvyhcthdd6mi3', '256735802970771139963215358583', 35); + T('i58a6g', '58468136', 20); + T('3525', '1293', 7); + T('3gkh7gij7ie', '1065634675177142', 28); + T('c6e2421', '1818992997', 23); + T('100200100020222220100002112200122110202011112222212202000221121212001212102101221', '158966224837100078693781454905147589627', 3); + T('f648df4cg04e1b26g221bbcf052c5ad0539cgf8cga', '4315582534924165708877106720565720519480837388903874', 17); + T('2p6aphhakh8mc5plc5j2gp', '1539390179865627184775927891721', 26); + T('11b4', '2513', 13); + T('jl7kjm7n32il1d4nmk0', '584261154838235821573009240', 26); + T('hd9ba149dh6e4gafee8', '698476730595539737056020', 18); + T('3j1g22je8lf5bhg8ilk629ndjila21lhg0', '13370053725951634183200009583712537939441657280', 24); + T('27u50bmqvtha', '156658788335426776', 34); + T('516h17gbh7da3a587f9f37he33', '122298188975115485587298035337289', 18); + T('4b2a649880a0367630759204aa1b75475b', '2024946574268874581365721289039689783', 12); + T('254225026012443321355065156140330663234621542653300', '5040887501845594508322543821207461070163390', 7); + T('202011012221101001100122211001000002022111011121201222', '43410492801425593645350452', 3); + T('7', '7', 26); + T('577115015776462242165511716153070323513627023272', '16688555517189422187103917664151515791369914', 8); + T('506444b16828035a216871011b744a221a2315b', '514848138656395936699051891875368909651735', 12); + T('2ao0kqth4t1pcbh7a4', '30477411673928429295975604', 30); + T('2o35odgjn2jo1a94haaknk48h3dcnnc', '2571886141556160166724302520638175571686837', 25); + T('67', '55', 8); + T('7nbr75', '402672450', 35); + T('370jc1indcji8ijma13k1938f6eg', '60716324784319268778229637859744954592', 24); + T('72967942960049867762435665277391293551369688649986', '72967942960049867762435665277391293551369688649986', 10); + T('6sa', '7898', 34); + T('294174393015', '294174393015', 10); + T('73807c73ea415707344a', '160403961758478608615470', 15); + T('11100010001001100001', '926305', 2); + T('235b15k4n3982ht4kq', '27196458988445840025157226', 30); + T('88ch45e7kmfl732o6qm9dp9k29m4qnh36alc3', '28111637207061985918949614744842625868551463394743253', 27); + T('4aibck298h47jj8c3an0eflejeh2', '82024129949273334698484088931402810138', 24); + T('mb8n96ghp477069ld5hdqncdccpe0q', '7247302454506934271382941736372903791832556', 27); + T('f2baa0ic94g5i1b83fd33g2hce1j', '2030554880143475280397062737673221639', 20); + T('17465535030523', '1072356929875', 8); + T('a3mnq3967n6c16l7cji9', '31760096086178432274519348273', 28); + T('liiqmo', '372897696', 28); + T('1opx6hidp8vdzknr2', '13423618670694897535417406', 36); + T('95m4odhqe7b4h9orpf', '66756845457585399045539197', 29); + T('13317', '5839', 8); + T('102241442', '1794050', 6); + T('239f68talh6mpj24fdo45g5s39e1389', '1159960371112212929883230396521680545356867105', 31); + T('10121234300252110055303232340504321110', '64247287136397682542328003650', 6); + T('6ml5j5lmbg9j90dba1mkbe', '1572054598386072574697608169039', 25); + T('2hi0', '20197', 19); + T('43cdb039b196a4010e938a308889bc6d70126ab41', '470755174678153103704950155870502047761506218161', 15); + T('4442b058b9763', '38899171257339', 12); + T('2b61', '5113', 12); + T('2734162636214', '201356688524', 8); + T('391dawskl', '4604605109961', 33); + T('1110101110110010110010101010010011001111111011011000', '4146450184077016', 2); + T('11132123322121103122101112223320301301100', '1654887842635132747062352', 4); + T('morem8755ban11441j1', '2561728804654073084523891749', 28); + T('219325241c390905b1', '18439460011248535663', 13); + T('111660012024443044042601641430256405054463532100311152514563012', '29454939227794636720645039138734936559113026503970971', 7); + T('2res55qjde5rbj', '30256919008754218863', 29); + T('514235610013374235501066012045440247061144570241', '14474060683475264437751372654279118864707745', 8); + T('2bul9j', '106774265', 34); + T('314k24yu9p730k6hlpswsrg7lje1pyote', '192003039777745220557413924708457255464807291072290', 36); + T('0', '0', 18); + T('26cd5g9af76g717e867e148e28d9fgb881b', '1640454531676645570762870476133782871483910', 17); + T('oqpeub0p', '853405543449', 32); + T('3ebd71a02', '64015510165', 19); + T('1ukrr02c8plk2tbsh41fmftqce1e', '36771157999423113295070824371683506360213', 31); + T('2003430034331000233232444424241404340303121021220313202324234334410424342140', '53769918856434339956161867351165493334635002404137170', 5); + T('544243155105110423', '98014695681615', 6); + T('17fdc28hi', '23980123515', 19); + T('j307ogn7m8', '145736706102857', 27); + T('7fge3sgq9qsrsdd02rq8knk75dajgn198p3f', '11511172676350799991011065866253721863347287895012897', 29); + T('hdeetqc', '15473116595', 31); + T('9a8c07c15362316cb5701668', '410109005226020106060632781', 13); + T('50n', '3668', 27); + T('2945877220049a90093575774827929', '49828341800440814243069556167882', 11); + T('ce45xapw3bm94bol9ughds341c', '2403991013021267385347874576469551271030', 34); + T('423304243332410224213434434222423112', '13229055276162993153326657', 5); + T('0', '0', 9); + T('76f2kc270hcol', '692157402620182845', 26); + T('3', '3', 15); + T('6nl26h4sjjeu2o6m07bl8lafrq', '130087953347892837054523599720072286649', 31); + T('6gh', '2487', 19); + T('34l13l046dp2ginpqjagi9bdi', '4181142245164401129320919247203118514', 32); + T('30413552001353013220353015331', '19152449789569897624327', 6); + T('l3e2o0c0jm3fop5a', '62425993275542993038219', 27); + T('djie7cl09h1fjae6jkf24hddb', '2297349384615200133513075570628245', 22); + T('29c00c467ad2297fgcebb1ggc65623e4f930', '29909191785719748871453419197824524959368206', 17); + T('2324a5233', '5664701748', 15); + T('3ha44k4jux0pu2ibb3381c5r38w68nq2d6', '3144597894719011198697132550928807872754550797197661', 35); + T('11100011100000111011000000111111001001011000011011110001011110010111101001001001000011111101000000011111101001111000010101001011100000010100000000001000000101001100101110110', '10640405756706933069932552513853268918056402456582518', 2); + T('4hkgai2g41gjkkfk28k0b2cbc58j', '2433652428912036105474056297252338648', 21); + T('f78gfdb425bc4dd73422de8d9hi37ahhe3c474e0e', '21750452433737224069756534727541495878338776132463249', 19); + T('23eme2rljlt0dfr12ro8s8msak3ra7nb27hr', '10588615039451549196330996020739733471641788070870837', 30); + T('189397lg7l47n', '79549303381971448', 25); + T('4wo15q0rodat47qheu0i8dfsv1r6wqo', '43653736667927410786469653245862403187138436044', 34); + T('10002120112002010100200200221222120002210222210022102002221020200011101101102', '1882808015430216703112943141384175547', 3); + T('ip', '601', 32); + T('301021404444300333431124040', '4535598742859239270', 5); + T('48d54obq9brm0c9aapjhi5m3i5s6h4', '11019306556204066307913575375918358320537764', 29); + T('50g4ll', '32379007', 23); + T('2247560737886056563088784666', '132701908509217706410444191', 9); + T('83f23b573f02gc6ehc9hf99a27h', '3561270466397699675623785225228503', 18); + T('330977844350743989365961925052001832148516', '330977844350743989365961925052001832148516', 10); + T('lrilmctn2s8x6rx3w07thrhmon', '17591718481915563097535542071461139053591', 36); + T('l6c0458gj9ngja8k7d4', '148452363181722357676361980', 24); + T('3534775621556047145137126527746324006765443367053164', '42036808204933511970427575795842368941701486196', 8); + T('4efid', '623080', 19); + T('1l6iufezrq9zhljcarptf2pvb', '35662422559916045014345714581704950391', 36); + T('2c6d07d3g2c15730284663', '616677193007865389311834215', 18); + T('1xuy7hnx04lukxy', '8147224799381093225064', 35); + T('aa828911672415968', '504404529377026737', 11); + T('423147a7a23756807a665a5', '342517176925712535575988', 11); + T('1371035220605170410066165577113314501175100', '126452315889789497901223436832123189824', 8); + T('10djj7hy0pn', '2789079501903648', 35); + T('bd88a7hb69bjad4c', '382437456673894325292', 20); + T('4rd', '4694', 31); + T('1v7f6ffg924wrk2picsg5ttta0ia', '429364493553457680681114867558750620331758', 34); + T('2k76jdee9', '313272045273', 24); + T('123042434342420343211442034202400443333133410423', '1085245063387282023154479674513238', 5); + T('131333311230232203231112021123001300113120032333023300', '152105319842008098107694289515248', 4); + T('51450362621322470420', '749021597016944912', 8); + T('1743281026180240084', '274931041666976077', 9); + T('1gv5s19r8tko', '55140372098348696', 32); + T('3110342443423203112413', '1547942848488483', 5); + T('2u566xr8ccdaqbh6c80hxj89cpswkcu9t8', '2575249682730886757243709065864952197950034185571423', 35); + T('100000010101', '2069', 2); + T('401574b6g1ak1ak44m8kch', '157978187599619061617502135471', 23); + T('2ks19ota29tyw3r5ov', '738394685619991470364891279', 36); + T('oibk25gf4o23', '1241117724903340848', 33); + T('4a65', '31165', 19); + T('2020211100001120022201021222112000020', '338142311987848269', 3); + T('1110112010011122000221200021001010120001112200122211112122201220120012102211210221', '649092111671534536930325932482290711269', 3); + T('4d6mie8p2alme5am', '13267418111464317128518', 27); + T('42577131133a232032662209b95408096081', '248422206977724611904731225962594664929', 12); + T('1n', '53', 30); + T('132103000344313341', '1288575776096', 5); + T('6jmt943mg0umthea6pn6q9hf', '132823934112197986003728246640958089', 31); + T('111121000010012201001001122', '3838995704177', 3); + T('1677676576173b51b9357', '5953759059536287667635', 12); + T('102jba5ac2cja', '95816830507621688', 26); + T('42waoqh9taak26ebde6k2', '9594733085680997313599473375961', 33); + T('33i3it9kgf0uhpdsrdsnsj', '64884487071552586313401842309055', 31); + T('953158728', '953158728', 10); + T('4gg9sat', '6927952297', 34); + T('722e27159ecfbg10h407345c8aig598ddi654g0', '27840770996812521761625900201217611244514913752965', 19); + T('2t03qjlt7x5twkp8qndne6wgdq0r', '638613689380489298155684957574955359701995', 34); + T('257734a46f7icbh9fj', '29732309036426152299919', 20); + T('c', '12', 22); + T('5', '5', 20); + T('4hqo477259', '49098912593397', 28); + T('178a034d5229384107a', '659300251029847390372', 14); + T('a3b1b80751b', '639453463079', 12); + T('2q422mo9ap647jsdo', '726063595260133145012147', 29); + T('2', '2', 34); + T('24hfch7i3dh6a51k8jeii679gk4955cb55de5', '887846405096017197440980451741450143251200403470', 21); + T('266441154454153132', '696261848866747', 7); + T('2766c9b3d2db9ea5a577a00847a3293d8939823', '1226312698204113502459283231484488118966971583', 15); + T('4', '4', 8); + T('41726045554731777722315562631262755462314641246551410413772', '101522180338987737728899908294640200607836241899165690', 8); + T('ico5im1l6gipi5mncbafaijkp1', '4379692464186729985302450182878794995', 26); + T('10fb906', '35653938', 18); + T('3ef7kik8nh207bh7d5j70bag3epj4mj41g', '176077548195361303192424319318361820663061066322', 26); + T('15b0ac7a6aac2113c2db3ca1850b4387777ac7b', '50486609943116788827252878271742473022089629', 14); + T('p', '25', 28); + T('26jfceina94oa3454j9dhh3e6j7kejjg4234', '75531629983146118263655855521646711760476817989082', 26); + T('31022130220010213222023033003011321112121201330333321013331222', '17496945529151877267572936509934042986', 4); + T('o29mcf83oi4b08k', '4384699236470516280372', 28); + T('6btaxrktbscxnb', '1079469584074493701463', 36); + T('b7jl677jvvi7io7k8o5juejadv', '1030942310965426695181339530150102930538', 33); + T('35ig9la7', '11075108265', 23); + T('4682fcd', '105751964', 17); + T('8d933590baac338cda4d9', '750978790972524648878031', 14); + T('7p221h60dnofi1b', '513797078081391814565', 26); + T('5814844bc69', '1613521666101', 14); + T('2535134113102123350', '298694173861650', 6); + T('1d1ag75228ddg644cc125539e4b5f96f6', '4192146465970754575581869917056003117055', 17); + T('40003033353315404140', '2438896653963996', 6); + T('21xn2vnm91ln4xmsr7lgcwth9dv6q5ukdm', '711811184545142701110316372055176235138545025034656', 34); + T('dhkcpvs3p81dua43mg', '524235584720684984089841360', 32); + T('495fcaa89e8bbbg646', '3763874598256486747577', 17); + T('nahjm1ll5fh41hfjliikkid088bdmi', '249014596602561282054902123492366098035042', 24); + T('40111000144002230310210303210044222130402132411', '575483485884632505627426105114731', 5); + T('3726520073102165257153311', '18508139224259054327497', 8); + T('i', '18', 33); + T('107a5b45606177a04b292a', '48520908714351770811826', 12); + T('32b712a55', '2628417862', 13); + T('19h4282j092he3cj51d61fe87j49aijib625a3b', '257590807854928552405178656994213410865026962322433', 21); + T('1lb4ep0c3a14inkjjmd9q91', '55412392011791736985105645077409', 27); + T('546935971318244194705643405', '546935971318244194705643405', 10); + T('35313224023324540435523050250331155210203', '52453055717382339610852843153371', 6); + T('15193624138', '192278230399', 13); + T('2', '2', 28); + T('3poq733', '4086111331', 32); + T('2atlinu3', '99312069288', 33); + T('fkbskc5fehg9cuqdijcact', '7490176084806938114482789713939053', 36); + T('1d9plprag6q9qcf2t8lr', '16786382574488616380634910857', 30); + T('1ha2nsdonr7p9dyd', '327188362472580029633509', 36); + T('111044424210411044040300133410343042444013312004333103402304423423', '3382637550594455513139626004317778571489529863', 5); + T('acppkmiqg3tpomqk', '149640867231485432618600', 30); + T('tf4', '38128', 36); + T('1dh63h4o13b35ln0li033b99fklhid632c5lb', '327715658396590402208146044366411318465199249019286', 25); + T('48', '76', 17); + T('ae7l6k3q8w6c72qxkg2fb', '79186912232612253291296402267111', 35); + T('e9n5bbn1i7lcbm1g05geb3dk94ep7e', '1555968092781480866983906031197226493462360', 26); + T('7ubmw1pjt3l57oajqgrll5jph8m94g8w', '2360795619253126146184916535662718674178380996704', 34); + T('1r65rt2trb55lq22h19eapnidnq', '484704933472164164552752255631996628416', 30); + T('136848467048258286126300125028474625160260100577417745404', '388690899361213038703438733086886750206857769355496235', 9); + T('g9cc', '152409', 21); + T('1lh1ecc99m7861fik3c44lm0g', '934238414796316634228162970694355', 23); + T('3215000045', '134002244', 7); + T('5h6n2', '8240157', 35); + T('e714krve8kdcbij581xc06a0440si92', '298097214434462329831651763900675946445833904117', 35); + T('1', '1', 28); + T('5f2ikae7i1ch6a10dch', '8289858128215684549179261', 22); + T('110233030106104754146604170637', '174817507453714537420747167', 8); + T('2nun96lb71g85sloh47bpp7r1sgbl9tut', '10662007558514444968621546451733698226110473802612', 33); + T('0', '0', 22); + T('11j09ae5i2cg', '2552089982704691', 25); + T('bkc8e0op1mo87', '1764757861634423806', 27); + T('2423550141325415012042301033404550435232245255441054030230', '620111545601390684890879270195626493023037962', 6); + T('21254414445535530534202215310522321041405310511521521210', '14135465583609025304128608335209973245692774', 6); + T('12604595560023747679439524152220210561427659802303', '12604595560023747679439524152220210561427659802303', 10); + T('25331131324141215022', '1786353731930966', 6); + T('8fhgfr7mfhj5l2tn', '320586536359265220332471', 32); + T('650643875157180170d14d81c9b', '23995660583887604305815556001846', 15); + T('a8di63mkh6j72or7e5f9p821il41q0j8fgd', '1714712023081629097084375038192551872981528239619993', 30); + T('10331300311210202013221033', '1397536800143951', 4); + T('5bckjekkjgc1', '30157465514958847', 27); + T('1307pd9inl8m59809e4e9hc74cf44', '4643603931817311396953878999346150129672', 26); + T('1cuj0rq761f8f3ruagfiku4t8r5csao8ldia', '22368007327103577567192720592619403223865279053466023', 31); + T('3210245134450313253351101435530534', '160603316899608463616006554', 6); + T('127392d2a4caa', '66893400725574', 14); + T('2ikak5bkjajd9gf8h3cd565j199beg3', '13474955681660365951671452544344812602258', 21); + T('3eao5e8450ic', '8529544513359837', 25); + T('e9guf69', '22058758689', 34); + T('15158180900', '7766337557396', 19); + T('2mj44mncbs4hs2198geouq5jq19qjcduq28l', '43028515822351712961957527689171615902026923021969323', 31); + T('30esr4bjaqcjo3p10b3js7kf7415bjsl3abn', '4609195958142232639596012908552014584998492990749496', 29); + T('14ehrjk2', '15672492194', 28); + T('bc2c51eabeb4d', '47540354209876493', 20); + T('1b69d49b7b2391582a7b6a8', '29845378456995755608746436', 14); + T('375099280174972588499969848346581', '375099280174972588499969848346581', 10); + T('1b', '31', 20); + T('185008621588745454705101543580381764687780441351', '1379122328542048273411929412033977767884857859', 9); + T('1ai80571828g1l13b180f49h7b6', '373322096841196369617565471577760841', 23); + T('365562046046280128146688864433503', '12828940182695045910972242404065', 9); + T('1122130130022320301030133301123031201221230031', '1749448690563478934830619405', 4); + T('27421303721506401005734534027062355252748655124456623', '118144497372701082723759261444994330066950112399602', 9); + T('11022211200211001100222020202010111210211000211222020112201201212010222212201110', '71070272534459599139697985336272797397', 3); + T('10a4786b212c23234b78', '1551477993551070203588', 13); + T('6i51o82m5bgnb93011420o75b9nd470729n', '2279577849940632952238972161001397266163154407748', 25); + T('1', '1', 31); + T('1g', '45', 29); + T('17llodh0p9p4omai6e01b4', '674371603170934289782308835302', 26); + T('ld54e21eh02cbkfbaa093fl55bcg8364im7', '429238038060162231685243227854062073708831450765', 23); + T('7mpy6nawcmhw0g2u', '1108330902717012441427200', 35); + T('6ajf4ammhdhb71b6954hhkgmb65bh6ghg957', '2961483371926675845110593572135331590333628729021', 23); + T('fba75c3e2c8a777f', '18133563846735591295', 16); + T('pjcqacl5cdendipkqb70ipo5ba5nn', '307951112168204374490658438192806014671308', 27); + T('6tun5793cse93i199uffmqgrd0kh', '128777919986710631701713272631586482084386', 31); + T('13a5t7mjda9ou6rrbpfa', '23997647707013581885686488193', 31); + T('7201731', '3839509', 9); + T('11641233332213532446', '14562466660945139', 7); + T('99a986165294448a71', '21797994356398731253', 12); + T('2401101411122303434111302420203144', '327094274822059722428549', 5); + T('4144619d2', '6041074356', 14); + T('34321447613754733467632640535662447106103006103436', '633549261053883686239613232774717922594031390', 8); + T('3xaj72k7juuw8wjlpl8ckfb', '67994205225961269732014170337721959', 36); + T('26148k3kima2ag9i6kcoiafn3ogb1k6eo', '1215324793757930007410045265759556424912816624', 25); + T('1025206642353532', '5014780923889', 7); + T('knim5m76a00h2lmkoccol07f04knh3b81daj', '2614651514382553773659324279451802705234366596554065', 27); + T('909a9a268692348781a698093878', '119072460849132927971033373039', 11); + T('5duc4skq2rrunqptmcpc8', '3661917045452129831279130480136', 31); + T('10470ea350e01dd0e75a7366dh77a30b', '830413508341641695220604349217566325431', 18); + T('101000101100101111110110100100001110100101001010010100101010001100001101100011110110001001111110010010110100001011101101111010100110000000110100110101000', '7260976836577029672818019365254002054979938728', 2); + T('q', '26', 27); + T('1077074290508987607466933a10', '13937973055009429267248363869', 11); + T('1lf3eee3d2sbfs9ogated9t', '538748668557436691784615710879999', 30); + T('1h9cb8h485', '620046063560', 19); + T('dk', '358', 26); + T('13241431430411013330310434441310033234333013212', '243729894988914189325871229969807', 5); + T('18917a008279a324a66a3', '1212930867843585167566', 11); + T('gfgfe19f636c1be7', '48492131801646439905', 17); + T('100122221110210110122111222112001022221002012020122012112011012101121100111102122211221002020001101121100021112', '32679709809245815111430154357022862731776016143211796', 3); + T('281689658717189228532b0585c7a77384c774', '431443448247936435069993946707949525906845', 13); + T('12502532345305244100314200520130435541150024035250011323125030', '432380196346644742357025125509064993551796602762', 6); + T('jhf3d6ec', '35740674639', 21); + T('281b8h03e2b4568', '3938599428744194128', 20); + T('rra3eo9ang1nkjbgggoj8be9522j', '33118535163106500657229181745691670041643', 28); + T('16724077876370768542274160467677713', '488519835671298139694841930475413', 9); + T('5paaj8r2vmg77onwoimbb', '13527973399537075043951910147074', 33); + T('12c94030', '127283226', 14); + T('bjt39p1qaevgviriinv', '14387551065792537297755392767', 32); + T('43', '75', 18); + T('7ep4eb7mlkkeh37baaejlo39odlhmjp84dh', '9739053884128074552490865807121378544532459516835', 26); + T('205168664a2c', '17495412563292', 15); + T('qp51qp4bhxk5xpi', '110602057480221626740068', 35); + T('5a4d12b4ii8cme6gk5llj8dj45eii', '731561718476390279418093411754616519803', 23); + T('15gb1d3754', '160300118210', 17); + T('5626616225462155434', '9637056328483581', 7); + T('654a4c9aab6db6aa93cba723a2c6484', '154437158573067708419825110074369876', 14); + T('1010010010100000101011111111110100000011101101000100100000111001100000010101011011000011111010111001000111011110101111010000110', '109413864136821966738078269201594670726', 2); + T('mhl5jj26bffelm04k15l49fcik4j', '133104314563536506366413132367074503679', 23); + T('9fi00bhiic06', '2006016761428806', 20); + T('32097811179437438638590235847063', '9036190162614205241654679982433163', 12); + T('j4r8gmegar04bpj', '9165914535009266218669', 30); + T('fe9nphkmv', '27537217830419', 34); + T('19km8am29a5lgf44lmgmli52jk7am859a778bdm', '7966769005196291051847190165381447220788995817722931', 23); + T('1d98hdila12217', '1365501640827240607', 24); + T('4', '4', 9); + T('103408764722834675342275873a075472522265', '42290766920392525491850559747134754129335', 11); + T('40145342023520434603630305455', '1855754698685829573314702', 7); + T('2330143431434321023412200330441401404220433113243103233304100213', '295242550269530830933574434277185767468034433', 5); + T('52lfpjk6gjpe8h0j5o085705enhh', '2263111846247859246807588383287598329958', 27); + T('6', '6', 35); + T('ckdc1n59j5hm20h2hne7', '9802463620743345899194619415', 26); + T('74vyqpfst45qaxxjdnhre4anybk5mfljczf', '585768757405889601439917672060830645196186705764956539', 36); + T('25333005405423404431150032421232424132311504103', '1829167166770747320900573042647616039', 6); + T('a31a9b0c189b5604675483a87502864845b', '766374537111738699661732942419840514807', 13); + T('p6h4o2o7prsknugn44ahp89eq3bc6quhss', '1178753525703649096388315386598744840163151378859932', 32); + T('49opl92p19df0knm8hp4gn7252gf', '701559229806255576316878885678199202687', 26); + T('11101001010010010000001010101001000010111010011111010011101101000010110', '2151676161178286545430', 2); + T('c44a45536316dc7b0c353aad14b7830d09c2aaa3607c5', '3310452953174251067352010576935718387727695162512521', 14); + T('1546474620083335460588111104874445', '49874778889357532913325826762540', 9); + T('1338003447a222244271a09305208a90b51b1', '904051338548505527200275028870151876053', 12); + T('33260652734712254347', '492610547748526311', 8); + T('10643055642332651415554523356524323', '61444932294731769038022280425', 7); + T('3e21s8lhau56242nlcla6rmjoiue9kf5f', '5026850379275392936691910666263310074025543875759', 32); + T('4792739119043471aab4ca622058650496013c96c827', '3644595850902778704692127204892999955943240641053', 13); + T('110cc5gb37c8', '67978664942084', 18); + T('29615025419685937529', '29615025419685937529', 10); + T('7lmc', '123062', 25); + T('302702', '486664', 11); + T('447', '367', 9); + T('42121511051155513325202314155012551211041663406164645351603', '44712944643337807555851878205053325752326477807548', 7); + T('12rslb2mm9188nl9wr4gc9ty7y4isn4i4vl1', '1190543759247226965370117450905999428839676647370465211', 35); + T('14kkhbjl509ej5bhjm03mmhai72lc3fk3m0', '101720279602301692133681010267630420149945544912', 24); + T('3dbguecegfef5bu08g0ac2', '71460045177172533150728371041297', 31); + T('553d041d97381b8b08049209ba3', '3387541749393070534320306028403', 14); + T('1idb05jl4446g11h344b1eaikhbg', '3248342745065968412361931577840440806', 22); + T('391kdm2ia', '265857054704', 23); + T('d', '13', 19); + T('2foj', '74760', 31); + T('15152500051251431501352430050404005030331044424233', '254129829633425094552392729656769925213', 6); + T('93i242f842aghgi8ed018e1d', '2374115750141125588719021780660', 19); + T('13e7e73ifh5i2g3ameacble1eaek26e2j3jgj', '12182402836527839156286030802586331869647012229654', 23); + T('x7ann37tsvehx3q5vpxaqq1eo', '745474840780903891388495474305666096032', 36); + T('23468822326408', '23468822326408', 10); + T('209087', '513319', 12); + T('ba4c030c1374033d446177d0a2d045851266', '152797075747889508739869970552336948630314', 14); + T('b4ka', '119514', 22); + T('1g6b8h7486qjdwajnef1', '317929058502405198044902984426', 35); + T('1', '1', 2); + T('8icmpii9daod', '31973718431183165', 26); + T('2c8jhn1qg6n5', '13655372424481868', 27); + T('3dr0y9yp1xtkd42c4fw6k3', '903807188407354488131442830742553', 35); + T('6', '6', 29); + T('61829970', '220025892', 12); + T('6a7f74151fcc6ed8ed2b3f19100', '135002082526570912993917396947200', 16); + T('a71qu3m9cxks', '716447809640070456', 34); + T('1332111232033320011301003033232200111310000111011222210002131320330132100', '44022861335477932950560265835710759372572560', 4); + T('12021101120202001100012212010220010100011102010110021000111202010201121222002102102122221002101102220', '905995283475954839283786144849547150961766784239', 3); + T('dd0373aof6fk', '74945293912339265', 27); + T('6795977293774152225212538650395631193808973258378', '6795977293774152225212538650395631193808973258378', 10); + T('pm95ag59im21f', '9117644977445972259', 29); + T('1b56', '3378', 12); + T('4g8ea53b5ehd9694ih3dc838ac11c561dc0hgd5', '19047736684211855674982504436903813834471230419734', 19); + T('11110110100000100001101001110011101100010110000110011101110010101110101010111001001000101011101101100000010000100101', '79996489761592791530139097880724517', 2); + T('11531554acc00836794199184218445c5218c222b61', '67628655578352237505304598601215330350928553080', 13); + T('35291', '1955549', 28); + T('5a0d410c996ff91fce14753b986e36ed02c8038a', '514104745647653703895348991238314574953430123402', 16); + T('98ef2d49bef8f926076d15ea07db47db', '203284532859688206391148792201594226651', 16); + T('1101000110', '838', 2); + T('2b1b51h6a9a23eg4gfg65hccjig37d24ai2a4b4', '70201256484595753224630835840712606388793018001824', 20); + T('3086551513a21531959700a62389709283423440875a1a3534', '3277335942462557850196574034226034230391750988025359', 11); + T('2xagh32n24eno24f2r8cfjn', '14679210071634068950133360692505241', 34); + T('4605666016246640266213126434411416031022605203144100210325560055', '849411127852458866731338127021230286264433815611688357', 7); + T('45nqegp1jrjgmjofhmn83bcr', '18133891299810930196922310944355618', 29); + T('ssrkb0jj', '500219805132', 29); + T('1033032010232122200222020213020010', '91334330474893046276', 4); + T('110353378073354064510546137', '7210867946142586075586503', 9); + T('3406105036448313018', '518252281403001236', 9); + T('flvh3l2mdlamctv7nm9agrm133', '1438094370381119663687960958424282684125', 33); + T('6334358463', '6334358463', 10); + T('35c614c13a10691', '38009608424197159', 14); + T('11010000111111110000100100100110100000110001000101010100111110', '3764941434990646590', 2); + T('498c3d13a1d760', '3721053183465240', 14); + T('e140rellefn9phhmfp2p0did7npg4d2a71ja', '21442464367275264053737247138139660244488577062935044', 29); + T('2200223332021133030213020133', '45229383068316191', 4); + T('92k2c0j8mj00', '21725079534730625', 25); + T('38q2bdu9tnlwkgn34qhgbajcp3fk4', '10775935475547100477756815098145914310211171', 33); + T('13212', '486', 4); + T('1021012', '923', 3); + T('bj3l5080jlklfibj99gl230bf6ikl76kajcjk', '124541870118109694822199814329231541722666270319503', 23); + T('41eojig6v4m011hg3u4hyk7wc', '46139830864306341644172166605630244707', 35); + T('be3203d11fa9ca5b4', '575872105144800539244', 17); + T('1143442324240112302414320334333410111030143112344223421342030211131', '18863137177859377006372116620735071224799069541', 5); + T('c2i6d6kf', '55565364591', 24); + T('1969', '58545', 36); + T('25d', '475', 14); + T('596851a668739904620', '32659692732589912924', 11); + T('lv3', '23895', 33); + T('7a7c175', '183805569', 17); + T('76cpgp9gim624dqmkii8d5qbqib1p5br', '15595823047616363439274756729939503861036829536', 29); + T('dga1fafagg644g0fe', '4000702988803940637805', 19); + T('1acba9489c62b65a4b89b66a2ca29a5a221', '138107096676865488162009424053018420376', 13); + T('2156543644250631306263231223052110364562324313246541265', '9779427167319853821850991345749633818069902582', 7); + T('li04', '846196', 34); + T('h0h887omnj63lhn05cebu7b0gs9', '10146394091043760918958586860739479666458', 31); + T('49b5633djac5d6j82i21i33dd8ac', '601048929950921960604242992843787412', 20); + T('64246041612682857608', '8747501280912207998', 9); + T('30j2mbl97e7eg', '66536342778013341', 23); + T('e', '14', 31); + T('ckqc54g4jn8ppf12', '64984930998994069460686', 28); + T('58a8cbac11b2ab6a129d3399', '1291579933284075416907209643', 14); + T('26vq0dek7', '2439340538503', 32); + T('130023655', '8241595', 7); + T('1102202120121121002222100120012012221110010110020', '114515542030739621547975', 3); + T('1992566752847870721677784', '1992566752847870721677784', 10); + T('1100110001010110001011110100101011101000110000011100010000110010010111010010001101111000000111110101100010111000101101001101', '16975625492382937650444877242569558861', 2); + T('2rbbesin701sp', '1547900614446571765', 30); + T('c5q44p3j2js3kok0asn588980a7hp', '1080508918419483023850317169372101858474032', 29); + T('941egd5hb1f5e12481h9a', '117639049478624610284913400', 18); + T('4655600500', '1834889031', 9); + T('79088597835694330a29', '478556138580736188025', 11); + T('iqlb3ql72', '5363996629763', 27); + T('6h2ej0ckka2ke', '50134882009333016', 21); + T('20653232085716', '20653232085716', 10); + T('3198916b5130ba', '949252404083214', 13); + T('1ed53c612a9ce8f563380bc006af575169', '10491910079311728745430929182060466098537', 16); + T('cb6hcfa270ly1w8h', '1784912231557744137344247', 35); + T('526b56b97804', '176181942855498', 17); + T('26gem7j62i2c4ka2580d8', '9160982641229049777224024384', 24); + T('d6e1e36jj2f4ge85ga001ig2ib', '15132464896763908208949954242501531', 21); + T('5upfq7p41fw', '16214516102201407', 35); + T('ca0148216a132370494579c3811c9528b2579bb', '27291858728033467909120034313500390261718897', 13); + T('123020003', '111107', 4); + T('a50938148a435a83', '531761988603885367', 13); + T('1gj44qmicab', '662398178858335', 29); + T('11102787284451943115992270196016750607834192358', '11102787284451943115992270196016750607834192358', 10); + T('3b062213d4ed1b6d6621c4b02ee73d12a00bd436b0e5c', '20908546194267013369961168110558040107137325813741362', 15); + T('75akcpb3de2s0jsnrh3bcu2g0', '4449836213108688141279407743308365708', 31); + T('2b60892958b2631c6423a326', '120333156700155119670331895', 13); + T('42400114311051151043215013041103042421240541121425125454', '27935245721852777377012293595535900324233642', 6); + T('55qs1hj40j71ig0m3i6hh60pq5qp', '39627138353823040931217142004547884957305', 30); + T('4003040210505622', '19032912241576', 7); + T('223022300313310221001110032310212133130201333210100220222030031000000330332300331203', '252361472917175591010150696208672808420570612567907', 4); + T('2o0hf18glq5mnn0jmafl78op7krr457i8k', '1630303300352983488506028827484775858825533838676', 28); + T('hjgo156lifg', '3649805981664910', 27); + T('2672ck1ak9j3668idig9i', '9094565766877483628951027946', 24); + T('42558a1397719', '236437228306155', 14); + T('50514031666626056320465152246460322326631121443656262634540', '52944692260629312711052610581234760210698420791042', 7); + T('223645618550327621756258550420232724400738370', '2199636652234003810100969121876147258759993', 9); + T('8ac1', '147681', 26); + T('3ga7b38ggh0f88d744c7c9ha', '998035919010781157725464776885', 19); + T('103211011033132223113233320333313313223201302011021123102231012121121003202', '436635316515833678899653582525236295625969890', 4); + T('d5l4dza', '28635977926', 36); + T('2pdtlhmse6eg26s19ucis9hfldid6i', '124654514568801370471033136141160922807350482', 32); + T('52felh5gh4510kh106jeoj7cl5kj11il5', '2767399766384557104422717154012442967715261780', 25); + T('k0lk', '213442', 22); + T('11c25b068603cce9f3bbdca', '343512914478456071211695562', 16); + T('335033424101323340423113234541353340534', '1352227850184145127759798321002', 6); + T('9e44986ad6c5a3421885a4dd03a', '37696781807784302268353865692680', 15); + T('395ibtl4so0egl', '52712097322785853101', 30); + T('dh2cedf2bf587c91dci88f', '9929040065272749223553832140', 19); + T('772a8e4b457995e13897900d8000ad6c1f7c9a1', '42519933036531441133313813110786358673933846945', 16); + T('1d1cd508f519156', '131111610056020310', 16); + T('ekj8dkbj6i3kga95ij22', '198679762579399342902422792', 21); + T('41k911j29kjhdhc13ag902l30dh0a2c', '76586399715825395164280132066877039296656', 22); + T('fpe0tn39dh6qih2sr45jhrijlc', '304283009698601976205960463944913734374', 31); + T('273dcf23ogp2cfakgbn4fl', '1178457683913699770110878339571', 26); + T('5da9a9bf96be6918e50', '27644363394761964490320', 16); + T('93a089d540da7e65fbc745d', '10819104601922865145439435655', 17); + T('1133562034346632011', '1978986750380760', 7); + T('4ba121a43bc41383ebeed9d21e1832', '61080584384845175908009030944254597', 15); + T('55c3008747765cb5a544430393a3400375b2', '5308482319711252523172754195251756876991', 13); + T('5710728926a32bd8578b09d', '90281115589861012459774291', 14); + T('124222134144321323244004220113002310334232043000124314311123034413034133433', '8364205020182315700566879525103608648610325894833618', 5); + T('3ij6fei7ct8bditifj57qidrne', '69250254015520173234889635905422378215', 31); + T('j84l4e35cnah4pm082jo8f23fj119754ef', '955016814986800763460011887048876324258463031587', 26); + T('2l6hm8aomfi120xvkq64', '328810104424271657766987866856', 34); + T('3su7i6', '200878586', 35); + T('468713253255775056138736506054776103258272850367', '3375929477240893115892314179236945437132610304', 9); + T('iiq2dxy', '34073294114', 35); + T('2jh6cd8i91mia', '62648677168244333', 23); + T('2b8f9ai9hd48207a3e05dc0ejah55j156e', '22092750538409534069194105946265366099050134', 20); + T('404b8493a8a43b334aa439', '185609888390849041174509', 12); + T('hjq9kjqgj848r1e98ijc0', '1553934125194558113894610790144', 28); + T('ake308dif9ihnaem7hmm5gh6', '603396346398581702540847365854110', 24); + T('510nddj9k3gf404c2i6gb9n7', '280271867286312020777609932859503', 24); + T('963slghoaue5o6iajlj08do1jhmob6r', '5064387257282298335135751952618725428567377882', 31); + T('60b558db764d03150846989b1c37', '53430936932852060459452718754345', 14); + T('ha08mf8sid8joj6el2cfognrdspcbreh', '37455615024172541953556930974489194890334970044', 29); + T('2341300044110340114203320234412220030412114120300123110413121412240133', '4697326942430825924898237671958542016017650118168', 5); + T('d65a86297a7bf3c', '2251611900925702988', 17); + T('4jh25fkmbd28lhoaod1akam9ina2onm', '4152357643144590426805411364596922347703097', 25); + T('7h13b82d2kj6e8c4bhbjc681bf00f9ih00', '335744283433797761544495039026062289479426677', 21); + T('79nidei4qdbvudiev0sbf9m', '9481488549331803281413309926325558', 32); + T('3fknbt02chqbcn967adb', '75965804098331194115528214530', 31); + T('625229929149012470971842263044', '625229929149012470971842263044', 10); + T('17711i5p7cqf', '31331848805567615', 31); + T('1a4314b9650544b6206b8639', '12341325556611002168638605', 12); + T('55a7a2011dcb9c54941653aa6a35', '47723551702572572040904921974727', 14); + T('7teqfe59j05st6pun69d', '172302167861573369948783075562', 31); + T('33662122623', '1008274536', 7); + T('168e9ecf225e4206e22aabe3d5de7gc1c8', '55695742667189173051412647636327754746841', 17); + T('po0kdjoclplm33elfgn5gfnbbf9i1', '107884700371921309802125903666720535662145', 26); + T('iiaj731mhb7icl795864e4', '742188118991708140904927327409', 23); + T('627c5465', '389098247', 13); + T('1110110111110101110000001100101101010101101101111111011001101011101101000010010010111101010011101111011011011110001111000001100001010010011001111010010110001001111111001', '695557780484633047451419090913265350682286538560505', 2); + T('v1hdrpi72rxl7l', '3671512854030700329616', 35); + T('4925aggfbh8e4gac6ae5c64254d0b415i82bd34', '17535511043608617303142367159976450528283461395046', 19); + T('c', '12', 29); + T('30o3fuug0ga3lqf', '12500070118039641683400', 35); + T('387d80c474c32a591b366c5456c7a871951', '3358240678140338946789670983146684842579', 14); + T('orw6puyc02pj561q', '3592793122578442538624286', 35); + T('i719319aa0g22bi7f6d', '1913082545143094439790472', 19); + T('531d70f5cb9f96h9ab282af2eegb420hgfc19', '8007055515291584323571716917746295137673084963', 18); + T('3790218a', '72314780', 11); + T('7', '7', 35); + T('3652056541643012540022255', '18097097047518748877997', 8); + T('4n39u20hj5qdditk9kdim6469sbqd9', '210607480145416873193807172344770565962590633', 32); + T('3b', '86', 25); + T('18gb9ffn0mcg28', '3304915001872755708', 26); + T('a3aa73', '3822367', 13); + T('33aa32b1a1703484200015460108a02a6b6', '246534305809775961185312195074070771144', 13); + T('76da3o3qmka6jm9bpi1f881p1re94q0d', '5261591201984542081284964078385959485970188205', 28); + T('f76deiaj99kaf5mdndig0m2s8gi2fs', '270557992879867684462992923067573004312715064', 31); + T('10010011101100000110011111100100000000101001100101000101111110001101010110000010011010000001000110010001001011011001110011000010111001011110110', '6432766911463399701129205956556722425393910', 2); + T('14028338200708615102070674515767072214', '293684470306336046607148169275151740', 9); + T('46n11ynilo', '330255553677059', 35); + T('gclfn6mi9d33kii', '1802574648845195012667', 27); + T('10000010011101010000001110000110011101010111100000111010010011100001100100', '9626033841394783172708', 2); + T('26gc07ahg33696b6b35i6875dd4bfdb84h3edaffigi', '1204775186640355894241660800988487731870565763140511756', 19); + T('a424dhjj68k0gdfgb72e6ea7f0d5d1c70bd6a', '4057922578962802051428308232940970109455163045139', 21); + T('7c53d48781c046a2542b2455752ca849b37', '7330016794037776721321455336599394592981', 14); + T('12d140iel5jf', '653197596401981', 22); + T('3j3bj63jaj3kk0iecg', '256450260218708669218880', 22); + T('201002131031010332002230020133020100212211122313012213313001310322321211203312212123', '193142585656707088166778168268938862156435413756315', 4); + T('49a9l40e8ekdh705bf7i66g33f5c45b60', '40178796887510802718501234793652601812654280', 22); + T('1c3b34c3c85359aac868b5a9c15', '178508803284588917440368782394', 13); + T('2266675470606120531031640140307074715050044204', '102669173431008960637137393788268958468228', 8); + T('10h81l22adk0769i06e8d6cm4ca195gii2a52', '10869724195205977220549980987330530624249475503838', 23); + T('3pi1chtc5pc4', '97193250034096933', 31); + T('1101101000011111101101001000111', '1829755463', 2); + T('14a08119381f59538f02a2c549605', '6693834434076143282016415621879301', 16); + T('1', '1', 15); + T('5f4fde7ab29b25bdfa4af', '23976578463856222590090297', 17); + T('1g6h69i35029818e', '28255938241753109175', 19); + T('6hrfeum2khl0zl27y24vi8ddg143duhb', '11424803451794483589056265558023874926815658466959', 36); + T('dmsofbufuxjqg9w', '56513064049768744430947', 35); + T('4dnefgommja0796h683m0mj57n5l', '253005180165119243199661555791691530146', 25); + T('1713eo6', '312946856', 25); + T('3c7b2b515538d22436336b1d3a7d4da13456d32d4a1c68', '14671861619977476398729036327299069334875111680121764', 14); + T('4qwt9maaj3sp1inn', '288790554898254466919258', 33); + T('22311421101332244000124243023442422133310', '23019524981022032107906052330', 5); + T('uyyxj8cvk5a2smp23b', '5501966907140058787121075691', 35); + T('5l9rpehrm6sng53', '1706788842927692648372', 29); + T('d278658d7dc7', '113890822462987', 15); + T('18dk30d14nkf391jn981h3d9m82ibhjmnp9dj', '1154145887404199057068348781766608208776338261114369', 26); + T('18ia9ddae0ddebffjff4c84b5645c0bgil1ehl5k', '31708278802686177414795357361653618380221248289373646', 22); + T('24531010135252224313144452221105444022014', '37699522300506678162787688219866', 6); + T('1435a122c73911356a7046', '1526399338520071390500838', 14); + T('402332314023014143212', '391927271631057', 5); + T('1vew7yl00kagl6w8yf3l1o1pd4j9tbq26', '48803334327251890804125487484681131320572737671676', 35); + T('19228cb3f0a4795bc2dg58288821', '49714879698985993220949182598831692', 19); + T('101013510035221112224414143441513001515500033423435154345', '38806529557660171345438701910920418778114393', 6); + T('144142024401344124331202432034204232321141334041222432422444024414311403324', '10455975472873714399055311680044207748367282684872339', 5); + T('9907qit', '6779912969', 30); + T('7073', '96939', 24); + T('vhkckv2ar9oj8hd', '57275964522373642706212', 33); + T('1233134320020124210004433032220444200021042233114014402022042432422033111444', '40945031687597829579374183757759884584950193578410249', 5); + T('2222101020221111100022001022220200211111121222121002010121200200221010012101002222', '1320095371747740273885112117677015990623', 3); + T('1nsitm4w6l6idtqqsi9t0v6c', '284946527389049829952915614970309188', 34); + T('1bjfh6dmkidlb2a05gkj760gf09afd67d25m', '693461359711438949012962332381951054793856687791', 23); + T('1467124ltbe5885tjf26dnos1ork5mfud7l8q', '554897363491883262342501037868827669091792347235392284', 31); + T('k88unrh77le0', '729898419802592704', 32); + T('210120111201121222002122001212220200200112', '87431386841990129633', 3); + T('926ic79b8762gd9j810d6gi3dj9b', '1223706960610540148323952981562191791', 20); + T('agnai6kk71ebjd1f5a', '22882320064040934814223437', 27); + T('2cd4ghcggg8gg9b8611611li0h0h', '4527014616841415467524507113754343925', 22); + T('2352250503021325401322130335143351', '126559545519634091287010419', 6); + T('0', '0', 29); + T('6h5k9b', '65325236', 25); + T('81b43idjccodfjc4f9lbdhoa95c54i4n', '174727107340902317729886057171151789669995748', 25); + T('argrac', '364408140', 32); + T('10002111001001110100201112021020221212010120101101020220110110120122101000000122022101111021', '26986516589437621598399475479704475782140826', 3); + T('5515030240151510034313345231334334552', '60696827531635769898353913092', 6); + T('ke3fzopiit913', '96622923170020539639', 36); + T('598e03f8e19f4379c5b70b9c15f4fa9156bcdf74116', '2094150575916241308211940593568291573516182910091542', 16); + T('mt9', '22050', 31); + T('9m5peb9g1fea9o8ahe3dn8kos29str8h80e', '1624329574028280261522777174783118066092425064046214', 30); + T('6e7mjlg1m45e570i7bfhmfeg3d86jml664f0i', '69712363311376846821424071636169936838984692925273', 23); + T('7ol', '6181', 28); + T('99b66b61a8ab384d253b', '57978178355149351769929', 14); + T('85jbj3h12fe7hi8i699478g89317a077244', '1425756476686551290364945510303428131201176884', 20); + T('2f2', '1199', 21); + T('1662b5550ad', '422372216993', 14); + T('k7j57pdqehkc2khdli6bmen6epbqbko4j', '413053805045735653604164429634486822891282984963', 28); + T('c7l352qiq0r6f6r9nqfqmq', '30158411446987207313594748241506', 28); + T('36llefmp28687i', '33170031393242299676', 29); + T('3', '3', 4); + T('5331355335541541550413633156555041304', '14569418445448629730411478463671', 7); + T('43i5b5kccajifo8qn6b7idg9qe8i', '4889376657622272141258689718283342404178', 28); + T('b1', '309', 28); + T('4a9vo4kd4hip6il3', '163290295531837842475683', 32); + T('41706e31dj9ahhea1k3bie0i823757e87fbhba', '33963855813517146822738096038997244039390777451035', 21); + T('2d4a3sg', '3096803308', 33); + T('3331103101301', '66401393', 4); + T('4362145245600312216211556654331135', '35234402549674165076345929086', 7); + T('2bx3qg0a15e1dwf2011n8', '10024147880840790550776084418594', 34); + T('hihd6ih05afff641', '273205768456185626265', 19); + T('b255o', '4331399', 25); + T('0', '0', 18); + T('510080h0271hkaaf', '4693884914412126100265', 25); + T('1022022320020331232330321010100110202021202322033330222311301200212213212222230111', '6774969515016529365414708362547391944587048823573', 4); + T('c4p4ohjglla1iqosl2fqs3ps644ko', '1077352974905789650285543140145512793505236', 29); + T('28', '36', 14); + T('5f43e3cbdhc7q', '2925355769036300036', 30); + T('10202211221120121102010212002220111220201021221011200112200201120012000101011121200120200', '1219399490015420262032876008368588084898218', 3); + T('lqmqdeigiyrstjb0ptr62', '290606160250456698859096910550986', 36); + T('140j63g8eabdhe9geig55544ea95fdb1j7g', '206573099734256434789729083818951917803375756', 20); + T('1121333330123010230103232231300011231', '6640763429402799702381', 4); + T('4a9732b446c3496c8b481128862c7b8736788c2', '10313718642811383413495457120072097181651548', 13); + T('177aia9d3dd6d7fd2f400be1f5921i', '16853319484940264292799668730168052007', 19); + T('e996ok2br25wxr812xqwewkxjs0ha7bbqj', '4935251121671834230635165665794644497506649296785915', 34); + T('1829fj43kdnhlebado4q7qk2b', '69493606859298866281274539784122883', 28); + T('1ug4btjsjoljqjl8ru5', '4144140361800145764282627077', 33); + T('59141846746238', '201252640070138', 11); + T('3dn0q439kfh3joh90glm66', '71708810576319538414890222164286', 31); + T('424420433042212434434234410011320342132310014231', '3265300947003957321669335288360566', 5); + T('6983s51hy35qgqnol5kr01wq', '2043620645014439781841299449690331746', 35); + T('33503001354', '11839443619', 9); + T('1ea715638357a4gab8f36837d2913b7b457a087', '106285010031392323780353251260419840504700665981', 17); + T('4423326130032', '63980138511', 7); + T('qe58jl12nirrhapb24', '1725118401903404858826766756', 33); + T('9ctyl8vinmol1', '31654299928017819011', 35); + T('53kkn252hrf7ip73go6kisp', '763327533894184601429521762539764', 29); + T('rr', '864', 31); + T('2n', '73', 25); + T('31de58c8c77182cce2248cbb5082aedbb8e6bca34', '345951087846276854939428074890216991884992827799', 15); + T('26ed2hii1fb68gg77jd09g9ha25fije312', '20071611461553679427803317028838458620753222', 20); + T('b56a74b20161a13971286a946476a56a675816549046266', '503143184803276945768198832235249483823865080806894', 12); + T('3mauq262ifqc6q6uo3k7rhcn28owuigh501', '15665089503001948796936991201084677402815300352038414', 33); + T('8a', '114', 13); + T('7g74hk2i1', '4947834512341', 30); + T('2001301233012895477086277973272385359833', '2001301233012895477086277973272385359833', 10); + T('3', '3', 35); + T('3v3cl34ntssctbo61j8h61awuc', '758000163587568845774810157998497968616', 34); + T('2pj6m6dn0k2f8862ad1l', '2291763978068855450334466547', 26); + T('1275', '2631', 13); + T('111010100011110110011011011111000100011011011111000010110000110001101011001100010110100011110000', '72493971032499161046675712240', 2); + T('1jxwnrx4311dqk790lxyio0a', '969152182386767070760404233313656842', 36); + T('1515213043431201', '886767999121', 6); + T('231546954488138026339363483421', '231546954488138026339363483421', 10); + T('63obkjao56klm71jg9eoe', '56017208321706855359322806239', 25); + T('79cee1c1a710f200ab5d7687154a5f', '3650407151966683309370718278348943140', 17); + T('1b8ga7fa32455ec', '282558612029627531', 17); + T('6jh6oofb7', '1900009409713', 27); + T('12220411', '116981', 5); + T('6hd35cdafbaa1j6745b40614546ca0', '369523428248678589607467253915152693000', 20); + T('31424505144046650031120545413045362312145623206003', '830451645463432810708654518843838981528671', 7); + T('ab7d7252', '13528536902', 20); + T('1767255257', '266164911', 8); + T('355b5738c3cfe719582f351c17af6b629d4', '290502049209306091381681583617785118206420', 16); + T('146984', '343540', 12); + T('d69', '10369', 28); + T('1110132', '5406', 4); + T('x15mjchu7c3yp', '156518775559992462865', 36); + T('1lb759m57kc3gek0k95h', '144338567461065415742555002', 23); + T('6eoirrjmgwb6obmpjo61', '806330884412638477847015065941', 34); + T('3057512050807124036250432', '245051565483871936556723', 9); + T('1a9lrsle898kn30ra700', '15622486673307407101219146300', 30); + T('2dff5q', '94243340', 33); + T('1018b49ca466c70abb8bb400a59ca870252c7224184c01382', '297566178044937671004403039004634049926129648125406845', 13); + T('g2205xofm41', '33155058894377401', 34); + T('15a243c6d249', '23786665988681', 16); + T('ifej8jf196156', '409370272611766206', 23); + T('etkn2y3s9cvl6', '70229835510573528042', 36); + T('29j6gle78lp65m8dm7i09i4k69pkn2jodkfjo7', '53655147107520605107993005320957190736069756575349851', 26); + T('25a8', '38800', 26); + T('1467iplsq5dslc4bj59r8kmpb53ij1', '2940974102374884746297729490325333196270210', 29); + T('4536654164105350431016416626411512', '37076575885240993457676872428', 7); + T('2nm62', '1531793', 27); + T('30120131003344321043400200', '910915490646856300', 5); + T('g5gc3h6cfg0743a72d0', '642497565387831178951530', 18); + T('3a9e2ecf094bcff872507503010fcbac11', '19946638349599244406026473172687735467025', 16); + T('2iifhg6ffdd44e7lbe0cl4kg2ikhi8j8j5', '569950147839903345158898327398158628782163599', 22); + T('111321132220011110203311323001012030033333122210132333132', '7106340429083953157339766519361502', 4); + T('1201221111210100122201012101121022010110011221222200002202020102202002202022221221201201111100', '409732885115794556739316662328279212569754192', 3); + T('b540j', '10311549', 31); + T('6a5641ecbfg1ea', '65437633393280157', 17); + T('60a0k4g', '516550456', 21); + T('6o07a19gn95qqgff1r9gea0', '471673109789461277231531949208824', 28); + T('1mfiu6v72mratrp5prdp51', '437124683387082202034280167355051', 35); + T('200010223200133123211221100132213031', '2366578692023700810189', 4); + T('91o46kk', '4369067940', 28); + T('9788582921928030343347009158567718617002', '9788582921928030343347009158567718617002', 10); + T('10101010100001111110010100000111110011000010111011011111', '48000163788893919', 2); + T('1127455366', '444026184', 9); + T('kc3', '26355', 36); + T('2lp7a3ilb6bfnlk4ogm', '3318777765483669862045868566', 32); + T('2626066314348382334087016144874320851', '60819966203777863003542815738208343', 9); + T('bglhm6dc2lbdk2i', '246210942857687735106', 24); + T('104250563615655123425305223624351100434404606601061642122065', '79076976109191887382437259405911955830291672386105', 7); + T('1421177654711484117133204549051424', '1421177654711484117133204549051424', 10); + T('11acwiup3x7vh', '3504374201215692052', 35); + T('65p82e8jl85ml9heap02a4nld1', '22517218879878010567520679124266724821', 29); + T('lsje', '1016762', 36); + T('21a393696a4', '56451375083', 11); + T('807c981a9b4265463804343a1212a6', '1621821470894150277381748029433515', 13); + T('46121044606131213674', '687399603768989628', 8); + T('1222510546137173360622712725208565646586263870474284165', '4228218347033366281983071723933458237415026632421325', 9); + T('210a273248358a3309b93', '8009667820567421769567', 12); + T('am9m3dbgll5g2gobdl47ecfkl5n265', '1175130187214663893323173490478694625614065', 26); + T('5051886704b13c99002d580d6629aad03', '23841202011560005570250339873422608167', 14); + T('145h7ksh68dngfvid0d2t5sj0sock9d2h13e', '54135831669620078248540205180825147407334169234670702', 32); + T('2', '2', 22); + T('9', '9', 27); + T('404m0929nhj6g3dnmk', '1165673727265105034486756', 24); + T('15254347665284856901682080432226700882304900', '15254347665284856901682080432226700882304900', 10); + T('33242010105400244453142514140511051333355', '47797340239896148848896357884199', 6); + T('38842', '26201', 9); + T('ih', '467', 25); + T('39i07de6570i4045a00a53566h71c6c', '812073321324466799437765816797697010511', 19); + T('1c5275eddd9d16247052052d663a452a63463075e9bae', '10204524473213180795676416372405071534170216958491764', 15); + T('103424333140140020211212040403022', '26931963138899281575387', 5); + T('2', '2', 6); + T('322410403313321422041034123341223413120', '1278336783462605112004904160', 5); + T('324', '905', 17); + T('157016a602978573c19c34c0bbb5b99242570a479462785', '2486227056319163423119585018132170605939378769156255', 13); + T('182803a1797819510a53305902aa92842958036542a3', '1054102736944210758101345700310507040992017617', 11); + T('23212243001042341214134020012203124424420014304114414302140200222344', '182426131021917657349015925899722232349209773474', 5); + T('44615', '18829', 8); + T('0', '0', 9); + T('16320ab4', '92882209', 13); + T('112022211222102000100021111210120012200211012002211122100020221022020221000211210221211112002', '125052658519630718209984060103893048415853566', 3); + T('1340023330b2816a', '19686890504051938', 12); + T('224a38884764730225a9197021a82539496', '567834953854624641093665357593660410', 11); + T('7a376a34653987b669615931454', '89961092718473726960191912000', 12); + T('28750672b1a08159168b61aa4b65402a4a7bb', '1926663722022386252350512493673056478207', 12); + T('51132b066849699663a69c23014a9', '626977183384857905326074634931325', 14); + T('111001110111101101111011001110001110011111000010110101101', '130312977572136365', 2); + T('32036543023423166444215212320333164', '178439557729142493094112540113', 7); + T('2c6o1qrt', '65869267447', 31); + T('11255025561251045231224000464003501561312', '7642441686790045418235602618854503', 7); + T('ef3499db4bh46ed', '47755591093273946707', 21); + T('b2b829fe48e23hc7e0h629gc5', '14916845674629231086360004118853', 18); + T('2h42', '83074', 32); + T('409l0boib2jnp9c3s6t', '1553857676392526343363526409', 30); + T('1484hk4mnpcq8h7coh4s1852n5a263', '2946760199386210436099617232527112169685032', 29); + T('1de4i757jb9efi40', '112491740329665106179', 21); + T('411544125301', '8264748073', 7); + T('2700af68ha3393j4lom6ffg3o49i83d8n', '1236005201183605405737692388333431118098883348', 25); + T('260ba5decd5', '23566738197065', 20); + T('161cbd70d0dd827d45', '43857475434041062169', 14); + T('102102110211002002102001202210020200110020001010002121', '24605931904729883191409011', 3); + T('261285518c13c83b80a6141c98a74515', '84082439719575951296466210805706579', 13); + T('3l8odr3jb0rd4pikg2j9gak', '2380011848157138949995072867010228', 31); + T('6252121061244', '88503004566', 7); + T('4jjchql40icjqfghfun9bd', '187112850943724980990652726355309', 32); + T('1066551671032724130551075541344416006004545251', '48210079462363778492658888113295918811817', 8); + T('2b0142e2bc8feaa4657563be6095f30f9f787e6', '15344670653497010702533663436850880847648622566', 16); + T('202121222120120221221121110100121101022121002112222100202', '1199573832123177666249284048', 3); + T('165', '725', 24); + T('7552109468745084311115076521370466702755126903852723', '7552109468745084311115076521370466702755126903852723', 10); + T('d92409d43a71035dd1607162ac59a36', '330459364479294639582756285439419040', 14); + T('5866087207670384282121402433586', '253132125297513316727613194688', 9); + T('hne5k8mhl3eo7pbd173f881cpo', '4239590379457835998662721763582285498', 26); + T('43', '115', 28); + T('4b56a3e2e6ae07cbb13415ea5e4e6b26e91c7547c7e1', '1775440932456640417914474064580085383417183550152911', 15); + T('52v37tbmm0idhufxl061ordug9j80hbw9', '130694367745642080024891425171303262177267298512229', 35); + T('57b110d1a114200601b064cbc8d3d6d36d426a375', '38897697195561314890830075857936232069438002819', 14); + T('1010114', '16284', 5); + T('3011332032001111112012121233222333112', '14607768040300540243926', 4); + T('12213', '1809', 6); + T('1efko0', '15481850', 25); + T('6146dqjn5em3m8iag3hnhgi9cqh0nh5', '156984890010244096277130750219079284286689617', 28); + T('3853245phar6qkhopu3nhfhmdqp45dqm010', '1659449215436607323768397181970499924333501857945769', 31); + T('1kbg', '23016', 23); + T('349bc1ee612041071202acda5e253ee814767bdb1a58', '1235304033805275134490493701587801892224447248153208', 15); + T('254054435232113145254243412201240513023333', '236517755592988157513186489952873', 6); + T('3123222202033123033333133100112311110212332311000201131220301', '4562255449967943117630410467356039729', 4); + T('20k2g1b61b9bb', '26244500043153689', 22); + T('5301274373619a9abb075331570b44372a320b45b38', '11112964586088228654822104128277512727028281372', 12); + T('41kt3bliuu71', '284086055727071575', 34); + T('26je278jef63f30b4h', '70007399630130868935725', 21); + T('661746213440700265725363254604246460427455151704051', '9677402829255135526689200426680775741960325161', 8); + T('6175', '3197', 8); + T('145092186943011290758112327', '145092186943011290758112327', 10); + T('24012130142220113203333413000132130030341343340', '399568998285969726086954376512345', 5); + T('137jb08gne02cbkl5ee1giga862', '874678313646620526970274269320064658', 24); + T('bj49k5h', '6935833969', 29); + T('401151407274000477346136437000', '621886148896195273543007744', 8); + T('e62ujehl35lkp25kob1e9tvetqh972', '3668880263925499454416380147695985359306937564', 34); + T('1221221010111012010111210000121100021121111210010222012121220002002011111', '44164600435998484951707492971081782', 3); + T('2519ebiggfgg0k7djg2l5f32', '16752300490444701684531024329512', 22); + T('12jrw3z5iqh6vy4hd9umfbce6u7bhmd', '52334612299904782804807790302710417391016520949', 36); + T('m90d8calnmib3n38f82ag12c', '1243484437066565674917884244591228', 24); + T('5o9441e1ehe6', '71232157609716713', 29); + T('mo6ub7vjpqcd41odk309dkb6mesoudc', '32479569784999047522872481329328980918409132460', 32); + T('99a104', '2443540', 12); + T('1001110011011111011001111000011011000100000001110111000110110010001101010010011000100100001100111001101001100110011110001111111111110111101111010', '27331074366810509421853388280769875793670010', 2); + T('140135470caa96563a640912c99695818a', '7530555028125352679628379917810633699', 13); + T('1234320550101200300234201211525525033442525240545402554434330051', '15178212380235027454950908395863207673277874355183', 6); + T('227qji77n49doii2i14mi6anfbi04np4n2', '358193257509349600441790087340361151109806798954', 27); + T('5b1706', '13823418', 19); + T('249c44f17568b404f004d1fab5d14', '11880762815518784994450284839918868', 16); + T('6radrdrbdm7mhpvswkb486v4eens16w', '24529899580687594598518917969085283802959665013', 33); + T('5496b049593863de8ab664bcf192d8aa3046b16', '30182230828157060898612488525177295598317234966', 16); + T('3', '3', 5); + T('dhda22ffaca6je08gg623d3egic495d0j3e301f5', '7632679632132235991964925001252763420525080557280705', 20); + T('36ca696c54211109ac498674444579b926437', '44733871000508032307696312443457357060058', 13); + T('15nn57058h663g02i5', '363480846432405747500597', 24); + T('1420220341042043041130312221022231231044021124324024400213', '13072107582995750416163595291483084215683', 5); + T('g91', '15656', 31); + T('1000001110110010010010110000001010001001011100000010100100100100000001011101001101100100001111000010', '652129268908332354914162721730', 2); + T('3308c774d7a9d93620db30a6dc7c3afb6245cda884b8', '19094196084927690615894155917265930659289199085651128', 16); + T('9910587826577455047017155908954', '9910587826577455047017155908954', 10); + T('1pn69d', '33086633', 28); + T('56e18i5ec9bc9bcfb506', '170001599187441436937591218', 22); + T('8dg63a351777ef27065718ede19a9g', '4251605536447843079014370453494147309', 17); + T('3757440272647170475376331367246161235546703357147547454', '23196351263151106376071114036941254762538586787628', 8); + T('1133102031011211111321020120221222221013303233300222001020131200322121001', '33201783315139109346417949703891666719712833', 4); + T('111177ac156c8061a2cb9c2a11c49c9bcb1b8aa61251a', '11177922941418324255581769628452411069931934894274', 13); + T('f5a25dlig1h8in642i5f6482bbl39ikdf1', '53647895828829728643682410481516014676799977129', 24); + T('142103234113241523135450505', '294644752058281948745', 6); + T('3e8u2lxxicgxl0', '579245446681359249924', 36); + T('e1aebc286f28a4213d5b89774ba1b2c', '18748973437595317918722188262730505004', 16); + T('14i0l6ha6', '94600891963', 23); + T('fyi', '19583', 35); + T('110002121111021002012011', '126535710037', 3); + T('2ede2k53307k0le4g202kb1ka8j608e6fb', '531584620037427546349053144337530803653075325', 22); + T('5941a2ba5123ba48823bb', '108647376527879131217663', 13); + T('1100000101101000011101100101011100010111010011001000100000101101100111000010011000001110011111111111001000101110001', '31382251255391898419590799476887921', 2); + T('2798b48667a9a76', '3403683742605498', 12); + T('f0wpw0tsqxe4vg84s', '47926281420044967329301940', 34); + T('120274183083323227016750865268186648155326604433755556', '460659788402837426091935077340365397293891092234756', 9); + T('5165bg0dibdk', '2955698679780350', 22); + T('4id7h78kfi5m276c856bd0d9jc01a93f0', '700749527198104432526320153790964979274223144', 24); + T('1101111011001011000101110110110111011010111100010110001110100111000010001101101001100011101001101101101110001101110010001110000000001111', '75812640390549515698067392896804260995087', 2); + T('1135', '605', 8); + T('16fceb35ec78f61b7', '26503318076778308023', 16); + T('gsh3zf', '1015286379', 36); + T('1330803169291356585', '1330803169291356585', 10); + T('106eg28dj4ab8gjf893371d4ic', '341198497110116667345130454665972', 20); + T('1031332103011210202123330122302232122332133101220', '96526406143541450009541735528', 4); + T('ak711dka02e97fd29a882gi5d42540', '2423827227910121626584716485263513891048', 21); + T('8841418102', '3463649669', 9); + T('190a8g5f0b22eaa29h0fd75g', '111655360963807509350164170526', 18); + T('1101010000010110111100110000100010111001101110110100011101001010100111100101111011100110000111000011011000101011110010111011101110001011001001101000101', '2364878576296174981737730111388996744591545157', 2); + T('a4f9f563b2hd1d', '1579563483297980704', 21); + T('1e', '30', 16); + T('bmj9i28fqup2rr01quj', '25168455972112565443783764925', 33); + T('2659c2524b681b0611bc0462068277b22c4a090b6c', '11718193492167173003845518942891790726930347344', 13); + T('95dbhv5ghj', '425304350878063', 33); + T('70f0bfb348eelg', '1988449310602969318', 22); + T('5601892416741275270a47a14b258b77b62ac9a', '11674083978692042300298963640315521087970772', 13); + T('18526598951b4925686c191b82c726443', '728861732602079775340902630060883104', 13); + T('c72f1ga78a3b', '4322248291965062', 21); + T('43i7nlns66s', '2432989186691608', 30); + T('umkamr', '1393260527', 34); + T('1144311422131400141044220', '83282084180409310', 5); + T('4336', '1546', 7); + T('47i77', '575935', 19); + T('260391741833138309844242694047', '260391741833138309844242694047', 10); + T('eikcnkechdj036', '21983428280688968831', 25); + T('399j60', '21947290', 23); + T('547573ba0754c7d9cd26bab3c7d4b72ab562ad35b3c78', '1431614009980309658037899654407501069747983045942546', 14); + T('1bf61n8b8gl2inhm1026c0bn93gmlmkh18c9l6m', '41658106305222335140890827573148074573365393774007782', 24); + T('22ba4a4a22063356716285520739b82386a133', '19129802531842066466744883829679615294007', 12); + T('208263', '1098079', 14); + T('802a2fb0ef85471', '577202901428491377', 16); + T('6e950otf9qieb8sqmlkdq84h0fk3fi22', '40005797156134257760904691332287629017123851262', 30); + T('10202220200010012022120012111211001112', '566544668055011303', 3); + T('88ofbogm6hfl2fmabbhli9jb', '2922571833986926750005829529758653', 26); + T('254221216022520612441642424104134100642', '364163231141058677780767508382534', 7); + T('3k6m41606ml1ik41545j853488196ac508j', '77247355295178353514512199583695660421921997280', 23); + T('11320022231321', '98610041', 4); + T('7c25j5c2c2h8m2e', '87247680970474478133', 23); + T('7u79or4r9ca2aq3pq9umq4', '612755209566507170400347312382877', 33); + T('6hae760771j1iaefc20bh5ddc12d537dg336db7j8', '75611167578444251429175163594651767050933149653371188', 20); + T('2032r9kjbnaii717i', '501415814815568679766375', 29); + T('367k9mu6s9hme1ngoe7gnih', '2066867889461958903697381214108212', 31); + T('60j2m', '2001670', 24); + T('71h62c643342', '456889209843566', 18); + T('12312260105254421212115405048517370253420300156574618154', '38374839154335357656678955333874522222907486811128641', 9); + T('47lkf1', '121626548', 31); + T('5', '5', 28); + T('1101111111100100101111001111011100000100000011110011111111010101100100011011', '66081699980324911274267', 2); + T('eaq63c', '650488250', 34); + T('3kh2ikk7k1i37c9h1gk1a7fj9ek', '95237913325164984575779037624604026', 21); + T('chml54eh1dek5', '465563672539918181', 24); + T('19650e6h06cbjihffkc67', '2407869036365245485341891710', 23); + T('1120330254342541015412', '26871303967424288', 6); + T('1db61d64d2aca4f8ddhg7ieb', '442324583985640572989145851962', 19); + T('h5g0nn7g00jbq8dkal27ddppd1i', '282596981311037438532533274321771897012', 27); + T('3cb6a74dbc0782a7c312d88129b86a1c8', '18574170307436528537867610263305518660', 14); + T('9j93cscrm2saln1ns2d0cg', '49614136249868364997959915587716', 29); + T('12nr6ks92puzhecioazklliu3qqhgd902mo', '88154165422723953669323639000490842970444052275022416', 36); + T('2h', '57', 20); + T('3', '3', 27); + T('1aj8uhg09llocde4jsa', '938586685176702437596326906', 31); + T('a67wb8fvo1kas0p2dtvb1pim7u', '935376131947858129999170856037964165345', 33); + T('8cg0wsd5hc1rj2ur5xe', '86081079913939968176696159426', 36); + T('196hca7f9h0d3de53e7dd9cd', '384908563380755640626858713681', 19); + T('24i4f31gc45g4', '5004498340474430', 19); + T('2p82al4l2aofjb0l433n1ma2pdcm1', '12374372390948872370836716034198336907461', 26); + T('aickd5fc9kcijdjk', '91778300438306519322527', 29); + T('bijb6jff785abdg50ch93jci1j07f0', '641502687123029513871412727798918243100', 20); + T('1110000110010101101101001100110011010000100001011100100111001010010101111000000101101111101011101100000001000110000110101111111100100000101111', '4912801682953604186696386732310079951849519', 2); + T('k4713cejo6jmooion0em218l2', '71662757397263121604346927461739902', 25); + T('131p0ch901seflrw7hpck5u9bwvr7', '8293373983427066208235978575638533608956521', 34); + T('11000101100000111011101101001000010010000011100010010110011000111110110101110110100001100110100100000100000000010111010', '512777157413030085980733281858093242', 2); + T('56a0631865658b42a973787149', '38957935569902816546521273555', 13); + T('7339fcb70cai272ic', '4691540493840057977172', 20); + T('3302000230232200221211111131020213222022300333232222303223003331321002232012033210313', '1414797421045846182215653783000271431836488267528503', 4); + T('1cef5g065cd4bcdfgc', '1453833012137887343510', 17); + T('22905c', '2265180', 16); + T('14p1aq38h5h6p3ggog8pef2nq', '146180156816301607543919347943451040', 29); + T('fea1kjp1rk207jvbgolwua1tn6iiw7', '1680226571949963189952641105288040096752983593', 33); + T('18gklif1hf11kk2bf5d65m3cdn16f2ih9knica3', '38229891140881220748747963138698607615755419662309363', 24); + T('31864470241501561251518062508850', '1228037037479082758134146470778', 9); + T('1f8h38h7ecgh286hig9bh5i20b', '594633699552685458820517879344811', 20); + T('1558082832482056078618821', '129891586602840328457452', 9); + T('7b2d96aeee4ce78ce5aee28', '579561875731331284066869188', 15); + T('1210133301012212101130002013110200312222233110232023231111013020312221110011220130212021', '37600153384455208153546802413238636668955012511156617', 4); + T('1021111102001211210012102112012020221210222022011101011110212202200102221110020211220220220220202211201102', '160009247997291013413774126585486451337226598990112', 3); + T('13g', '716', 25); + T('10dj', '17933', 26); + T('jh75i', '32715126', 36); + T('2175424561041415433353531757', '5428551387992052131083247', 8); + T('180ka63', '255086355', 24); + T('48a1615136', '176001170901', 15); + T('110010000000100010010100110100001011001001100010001111011010100000', '57655736925864654496', 2); + T('1310', '1705', 11); + T('1zewmp49ibteo4c', '12181934920523719776924', 36); + T('52520357630643422', '1500865557120786', 8); + T('bbe35djn062d5b761si4ch35amf', '1199785854063018906993506866638229011140', 29); + T('0', '0', 25); + T('e5i7fh471g2a1', '58556310038689001', 20); + T('8108b3', '11444879', 17); + T('12133332000140', '1794406295', 5); + T('233cci793322ed7d9cb8855ed24ffaicg17d', '1237217723084165492642180249762745096032841489', 19); + T('kia626g3jjfhek7fng5d0ihn01i1cbi8mlkj', '175644053681799645945065512508851170704116634341769', 25); + T('307id184633ff2gcecfj', '15832615175405459381237119', 20); + T('102210122003344331140041103001322204034014044', '6239672517153332817129500298024', 5); + T('4325101155', '46150847', 6); + T('12003220425', '80779841', 6); + T('k7khqonlt5b3ce9od1ouu', '25655759396523763765963618575326', 32); + T('1a2e', '5669', 15); + T('24642336001364105631011', '10582257656560822478', 7); + T('4200112121043211', '134340409181', 5); + T('dji6e981g0bmicak6nkmjldmb3', '442482125298832453947547925860696203', 24); + T('1ouvmsmphr12ugwqkp68', '627712599848792393543454824048', 36); + T('537gbj98e49ja89d84j9g44ch0940ga5b', '2220315485025179053502135485282739788932111', 20); + T('714313', '423075', 9); + T('a23c0', '290667', 13); + T('c2g4dhaf324d15b4dfdfh8a37b24af52g3d1', '1045967377308067032554410895079596222351962039', 18); + T('1adb02f0gf53ff9327efegda34df0ge1f5d9', '19026193308545467945661475426458835723094908', 17); + T('236188c20edc4b0a6', '14628716301779930406', 15); + T('16ac59431489a575d977893381e17996', '4165152233272488511477307829446785791', 15); + T('i15f3hhg737gh49f464412', '37883791206577734258893793622', 20); + T('143912408735308919916476067550676143993718804207', '143912408735308919916476067550676143993718804207', 10); + T('2c84hcb3e617i308g011c2g97', '13003562015150612759615402719156', 19); + T('1', '1', 30); + T('24411332303104412232404024412', '110670388179331704982', 5); + T('1933e587c735a0944325aec2059cbfc7447e', '2195466647218532976318479234926892387091582', 16); + T('12bleplh50em72e7co2m5bc', '14743439849575623122276244494446', 26); + T('58xh', '225347', 35); + T('4icfie106h6bhih68cc', '1292892082246312828371452', 20); + T('453', '299', 8); + T('8rhpd0qch5pktpovj1glt91oct0tjlr', '12647022957479689372096487316445682624573132475', 32); + T('2dj00qb3qpxopwossisb2g4otn9f', '2488698509088656658453543066597325211124483', 36); + T('1010310', '4404', 4); + T('hfq3j1a9ndbi30efh052', '27619266965177624232556247447', 27); + T('39069027740350553286', '39069027740350553286', 10); + T('9bi416j01ci4kj733b87334164j0igi5e6h5h', '3806996854533890953144943088476687870626549429877', 21); + T('6ca196aaip90qn9he2g0a4i2mq3mogi', '56367196598633473854629190366616476560879928', 27); + T('16cf7', '492257', 25); + T('bhe1co7jjpkaj18teg3n', '134616320166471331187477282513', 30); + T('11e0kng0kkbl3j', '934367663338406299', 24); + T('1514314554356446416612036633020010445411545120500414631632', '2588550172153450082104301619898179441784748691764', 7); + T('53657', '150482', 13); + T('566a2326039100a019069468b084aa0a8a9966a', '566225725026345410347153259571357126562162', 12); + T('192996', '296676', 11); + T('1gf0p8he3n6f9knc95c85j1lcea3ei', '177191432101748018199118067763850396927258', 26); + T('2j2bq68kmo136', '4299689571441867510', 33); + T('ji1d29aeh6h4gkkc0635jefbbe853aijb', '40645713826960095513453151704998149841545850', 21); + T('37710781838842630361512', '3806832103892449001030', 9); + T('2442143434220532532101123222344253535005050540352', '62605961983133424986426709017621042732', 6); + T('d518g', '6029468', 26); + T('70n78hi8c', '1986022468452', 27); + T('38bh61b21cga0e2ff0a0bcg4e3gea06gb3182e1hh', '565783320821525533704067328716967069896244298888023', 18); + T('1001000100111010111111000011101100000010001110101111111011000110010001010001111001110011001', '1404582351453280869403915161', 2); + T('333924a049a51684529a74ba87412bcbac8', '243398556912996292725156441791879362977', 13); + T('17a55a93a040736775744561a5055a9385', '40020975700910684233413707318255946', 11); + T('6b', '113', 17); + T('100110101110100011110010101100010111011111101000111100001110000101011100010100111101100000011010001100111000011110', '12567788490336688088992466604707358', 2); + T('j', '19', 33); + T('5ea8ajhd4j34fh5hbag04g1', '240168729092027349654498561921', 20); + T('q8mr50da1a05raqf', '226974721325958220743445', 29); + T('e6a3363', '1620616539', 22); + T('75503024732436207824610451700833671010674575810465066', '318007217504658857405619875262949061586268948936365', 9); + T('34ee3cc09kkl9kf6ac60h4afc8', '11677571670551009274952367520363516', 22); + T('1232306211304043222536154143636150212163663301143551245', '5847041463724405635992138544250779787366825652', 7); + T('64214b1895397696b4c93', '120114256331405719997422', 13); + T('110001100021002021111121022001121020001101021112121212002221012112202211122202112222111120', '3895174620732775849452424240420599239140176', 3); + T('a87e916d51599b02107778980ce73', '9006992363531177743062167113009383', 15); + T('e2eb9fg280g68256e53875a7138e16c216e6', '164829342483558859829243147407641086382111803', 17); + T('dh7hef833', '6800973993113', 29); + T('87ecdca16b110', '4930623993377600', 17); + T('242664233613444510003204103241260166', '997238647098049790608059979085', 7); + T('24865', '2524505', 33); + T('8dg8ee', '16577402', 18); + T('dcb0', '56496', 16); + T('100140020240014343012103310244203321413011432220000311343', '1407800314105875865179520542356562510223', 5); + T('8ic4cida70638r6qd24lo1eohnehq0fnq8', '4939135926415967125713934662696787505407553615760', 28); + T('110111110010011110110111001011100010001010100001110011111111111101110001000101111100110011100110000100010110010011', '18104495725933236784651084181816723', 2); + T('2110', '66', 3); + T('9h553ajcj585e0fld63dk1f1fdg38bd7c4c3', '944691391197912510590336782111009994890396317899', 22); + T('d94jspuomfb30nnigc0i9c2', '8583227698431941711284555523051436', 31); + T('540511212211521022015430420425', '209679875672133971720897', 6); + T('93521bc9838bc844374c6', '176011291340468000063614', 13); + T('21111212100011211111122102212120200222', '1127735725992381629', 3); + T('433', '118', 5); + T('b35f3d85b', '78106650410', 17); + T('24ad24572815556edb04e8388a3cb8dbcab', '22472704690990952783138622997610828085611', 15); + T('ej7615a78j777d2d7a6', '3923839018485436650027006', 20); + T('6c', '138', 21); + T('2301032330302133212203322310000123330030112121321023221320323132221132330233000122011322', '66310958980712759741798040630188575295953581006496122', 4); + T('3892bc32082ab81c', '187850563808306190', 13); + T('nepn0i83d', '8890790458465', 28); + T('27m1p4cgajmpd77n5nob5k3ckoo8172n2fl', '2959224102019221153580776647569649027089445494715', 26); + T('2c211bi9a4i4g', '5837125451724486', 19); + T('6finion2cknbcjclfc1maacjl3n', '277329603884172207207342214563875742203', 28); + T('2744a2b1b6da050450ad1dc77c3c444918572d3a95c77c', '9495750905280175430367933734800935871583094331419290', 14); + T('2540b7a2c', '1964842541', 13); + T('29hbanag919j07i2h9fm5n5blde', '1847860763613921662545512809287537286', 24); + T('522636df92e24188g123fb5e646fgf28g1a5e64', '292970008668785630924688679808211955559007788343', 17); + T('165yyau6n6umgpli0rnp', '255752898934275797065342348280', 35); + T('1110', '84', 4); + T('293b01a935a3799a96024719b2b03915938', '13670064701193438658934893988141749244', 12); + T('1v4r1bs1', '82842560296', 33); + T('656babd', '48129143', 14); + T('261351cc2663d63', '70221672594373143', 15); + T('8glmoqrlas9stn2mi', '3683728409489953625513478', 30); + T('c1oce8e32d', '65559511889053', 26); + T('564031351615643266525566325521613406414624250361503461216530430', '147867740046978228024321274080345862741610052024709013', 7); + T('230131444013022131034243004132023043040334422', '14855672849648868100497603839987', 5); + T('12545150406353046425421123355434036032', '26016700480759035883689036134576', 7); + T('2dlta5vhvg9qgl', '132869544199893066807', 33); + T('2312030023204131320203', '1266940535807553', 5); + T('2977597a8b13493692178b15b', '222825050040676849479153431', 12); + T('385bd327542709g6e5271h7ia', '16835126876024648618550765824498', 19); + T('1319267918888', '4042081859901', 11); + T('hr996gwt7sli7tqw6prqc46o1', '49591308422914160460367750680805956892', 33); + T('2m6n7a0q732oq6ax99rs99uvomu2fajwm', '26979653390318370528670832083221165119891832619810', 34); + T('l1973bi5hak3elkl57a4bjh9167d', '37065350900219381074120392127131177415', 22); + T('43llt8lf8l2891ttr9p85b6m', '82442096432449770071926138860460002', 31); + T('506748004476441', '116315255825092', 9); + T('1j73083e1ek8ek8ac12qlg', '17167767622561300310786542488046', 30); + T('7g239db88h4f1b5807599egc321dgedce78', '37727159811971103917360167652947572210206126', 18); + T('3h6', '1412', 19); + T('1875061762750423705', '297528461189732876', 9); + T('adkaja86gj', '8471456689351', 21); + T('7edjg9684771l', '721329267732824707', 26); + T('1655c91427gb5325f4d69a5g98fc', '10534364998017011610805677227288034', 18); + T('1', '1', 11); + T('980817ca67b74b4a12b53b8065a09367b8579846', '267254106995150662257373930152524132970726356', 13); + T('3835160608814336587', '590328195439989373', 9); + T('86aee9b70c52fb93dea1ce85e', '666919169547294519852185479262', 16); + T('b60f869bg5d693e84g6dfe2669cbf75ea96568d6', '11034100614489305854323210870717035173423206179782', 17); + T('13130230301232022132211111011003302312223321', '144073625444367205824948985', 4); + T('i6k473f9cigp', '101452153263413209', 27); + T('56d0g6d5b64f56ba74g2fb768e4g149193220g', '18148997614117285672045460339793419442793046305', 17); + T('450g315d6c609d23dfa01bf1e3ebe', '601353401386687882116399680820562724', 18); + T('4352502133233111221215445543', '4761333221430647953287', 6); + T('396769e718f39e316d00bcdc49721c228ea3', '5000590150769401690668401759809188422389411', 16); + T('ad7b683e1fc7cdea2dd3fda24f96f6ce5022803f0dd', '4056709020997348015695058837718936633645982841827549', 16); + T('331484', '811108', 12); + T('k3i5', '245346', 23); + T('135cng6p', '15032544769', 28); + T('41431552231054351454251041452441434304115015351502140424230300', '1258945994027471345472426069448355009467939191900', 6); + T('31023c896cc216cb8959414', '9885951986278698583058420', 13); + T('6a0d8b333b26dcd0ccaa3d3303d3732932', '446217024491807326078408464241966377488', 14); + T('325bd1', '3300305', 16); + T('4156172b64866980a8', '9144238910518146944', 12); + T('1375bhcg8ddde43f7551f312', '303750588830256802292808765740', 19); + T('1k03jqlfa4klao9jb9a3ho81cn6f2l', '562769643994858107795871822429176159838800', 27); + T('19375332788653716726349605608924050432887719120', '19375332788653716726349605608924050432887719120', 10); + T('24gte619dnxqqntp5kjigqo94hnpkhw1g1e', '67033488159416015091486213127299423889621915101970024', 35); + T('79b5jfflhabec1i', '46242889680463735640', 22); + T('3136523464465430', '15305223556763', 7); + T('24h', '1265', 24); + T('2eeb9a81387chlge6a82i', '1880930934491341165799127406', 22); + T('3h2s642hee7s1mr2qfqjs9bnmi8bkp567q91d', '158997805986072348580445510192627913450430823619387102', 29); + T('175c2ee70201e7837c5c0a0b323969d8a8749ab7', '11002072616623697244801360586654294094591597797', 15); + T('743bg293f6bab3e91089478dfea389ah266c20', '201573045644676256310882487614494362105144963300', 18); + T('1104154030050343015502310415254530311', '12239997207198897956935770115', 6); + T('c', '12', 32); + T('665fcei2a6', '11296107920224', 23); + T('12011220313142422020144234021000241120013443341142414232113123331303104302114', '186661780639150984434609490693985841246731986480931534', 5); + T('143333403021031322023424140200314313', '5675316520546384121885583', 5); + T('22032030123002232430201320123040', '11303442964719339223520', 5); + T('42wnriu9jc1d9pi6m8iiw73e5i1', '12392393408418156448684972868597198547946', 33); + T('65jhb5kj84', '11265751641346', 23); + T('8jboj1180100', '32109820032181892', 26); + T('404013250231232343032', '15035328204976892', 6); + T('f5loqa6a', '159157001341', 27); + T('3bace918a9ac3ab0e2c9d64', '1154290724173228330560822628', 16); + T('j1f02okrpm6braj45g6p79o9fk2ddf8e37m', '1003413309681967687472390428106527031481479140655021', 29); + T('20246731230644474456707331224171', '20210639089554274678470944889', 8); + T('6ada3415177d23a183a37', '567634082013543482865249', 14); + T('80d1jdc7770i8j38jh1718e5a', '3853881204132107057348022178700165', 23); + T('1135320202552420132423303550434554115305', '2842213632774508421222497813913', 6); + T('4556754565', '1792468580', 9); + T('2b3r4b9krhfmae41cjj35pk55og42r11qh', '38693692809223437015464946236160411990614992957508', 31); + T('3d0h89gj', '6521609785', 21); + T('1465101514516303445150635221541651513656043104', '182862618643837207841758558179961577682', 7); + T('15hdb8f1kaghao1midm', '17870640162985488516370972', 25); + T('1111000110100000011101011000111010010101011101010010110110111000010101110110110100010000110000001101101011011001101101101100100110110110111100011001100110010010000100010111011', '45201658205192969951078809960368998187352382503454907', 2); + T('1364beii2hig17k8j693m2h712ag3b8', '81200218931722105270666349240310189486416', 23); + T('40s0c831o9f90omcs700nidi9s9ga7jneal', '672278250813445369021834441413341140309396296123921', 30); + T('b1h4kk729ddg98264250', '146882207557384251944382069', 21); + T('an69hf2fd88ika1f0lm', '76557434096017215994674190', 24); + T('1212102020111221212120121021021010121221210201122120101112021201122202101012122112021110222012101101020210221', '6313978818560826155486650951933487040678832450680226', 3); + T('4ejad5', '65217425', 27); + T('1011504405105011504344000223123003254223051533524', '23268755836632412189291409311287879196', 6); + T('muldc', '21231788', 31); + T('f965kejejhfkde62ca31gjk', '1894746813418880221855401179069', 21); + T('16624bgb4j6b7i9', '2154952615997851169', 20); + T('44778038225350466', '44778038225350466', 10); + T('10is', '30377', 31); + T('7m9tgv6mfbr3i5j', '9087238325403642874035', 32); + T('17ffh3b3i2', '18276892443748', 29); + T('1fioa', '2166650', 35); + T('6j', '169', 25); + T('1uj6q', '1835722', 31); + T('4452315051414642631402123421521430165234323', '1460239514815687621335205309448665546', 7); + T('80c6a65ec4a4e460891678c95ee0083e2aec16be1c2d09', '676377725653122531508231251848624820273960326886392184', 15); + T('37gla290975a', '27131230954665414', 28); + T('560542234405003554201260116626420636032150041612', '30796886684101041402274860246696545791006', 7); + T('12kpl730it31', '39012501237101665', 32); + T('1', '1', 22); + T('51caee3d08a4d8c648526e2', '383313354354011387493852062', 15); + T('120111001020020', '8228391', 3); + T('b333sqsmq8m2q9el311hos', '116146323856091954730364462753048', 30); + T('l', '21', 35); + T('2a549e1fc1c63f027e4af4879d42e41d2c', '14404335589336084186051447276771435879724', 16); + T('68615361864802033401765783131528708623121623624150567', '290764608685445070971126767459580690752903879643392', 9); + T('324ll353j6ip451j07if0', '130593071665433916106882664211', 27); + T('hf22669j3hbgj2cj2263j323207', '119153731039102138994504862665944807', 20); + T('4863693778871642193596385609267335923840802058', '4863693778871642193596385609267335923840802058', 10); + T('12', '5', 3); + T('3022210002012101203131123121', '57016419145864921', 4); + T('17wf', '52585', 35); + T('glrr50o92hn5cmb8djdlrj5', '1154557453433021517715910663974537', 28); + T('a6124c3897a09984bc448189378276c2c', '4635252028861401159639480965708427422', 13); + T('3000523151311', '206247350985', 8); + T('1bj4s6r9', '46813551465', 32); + T('2iwa61pel', '3621674718177', 33); + T('3a6ghnm5bac0ihln2fngbj3o541kehea', '73957115739832950099327264217773316424057860', 25); + T('4bpcunf', '3888410460', 31); + T('114224434001431', '8427640866', 5); + T('19k3pmi2lu8b9s105c47ftfdf60laq82o', '5051715463332295990422738632378276342058129697092', 33); + T('h9b70g8i6j4cqeqsblge0hmsn7idik1m1j', '96241136838849620955570471404790819811825290646849', 30); + T('3646322361204aa63026', '219147633166881177589', 11); + T('1ktnhn6cns1ud', '7479229664002588501', 36); + T('7g2gfa6e25lof62haj9k9ih2h45a1', '10608546611840530886415289384421901237751', 25); + T('188d375f5g640eed5die8f', '1032128844540501662690155999', 19); + T('1g5fhj9cg0aa9j7kk3', '959847532524172458716128', 25); + T('0', '0', 31); + T('5rdfpt9vlkh7h086hqffidpavpaljea9rar', '8765347386525329765560210131623728090268059379756379', 32); + T('39nij3dq0vn75y7nq', '16614188017737901319467156', 35); + T('39c4e9074344eab09eb04b4a7d3e7', '3114724911743451144361477555664767', 15); + T('c5aruh', '408252369', 32); + T('405efc001ed2j67ekd4ch0h96jkfaji6i7hb8', '1597188434640792138193865275315517085324950380772', 21); + T('rdgitjorf5omwcme', '2569695095565227618197066', 34); + T('2841a2bfa959f226e', '120911102842184090589', 17); + T('11681iidhhhf47j49b41ig28487c', '143077731089223004915621937671715352', 20); + T('80a0bc97ab', '85467928206', 13); + T('154319679383470735078149017579697301292976548', '154319679383470735078149017579697301292976548', 10); + T('2l2l8c8djb4d940fbde6di4g47kfea2', '207494593328905984754688447749751909520475', 23); + T('aaa72a6070701947707486871805579a247a25474980920', '8817500977665857282017186690319436997296375867085', 11); + T('18636giec7g5cjj62g2aefai821j4f1g2e0bae1', '38906708030084175037896855329780703075886252892281', 20); + T('lsb8tamndgn1wrnt16v5ba1etppehx5mn', '222046606335808194085660527561222477330915583202991', 34); + T('14c54ca39de6b19610b1c1cc289a0b26e6e53', '2886541874571131971389047650134152171194728', 15); + T('62184', '176037', 13); + T('fch37gj2cehk4712', '1063412649849085727648', 21); + T('13025014420320445053', '922056100333593', 6); + T('ps5obl7uslhpb0rnn0m01b60c1fmsum63pg', '13175053317274004235425460616183284215407700766951276', 31); + T('363701247162828065', '61927839099614975', 9); + T('1465b8abc8413', '168027162035418', 15); + T('k9bdgg8ejllf7', '262667689891801069', 22); + T('123010320313322313012221200321321211020013130132032023220131021332303032', '9434743235284812342744700199923423780531406', 4); + T('14212000224111011410232242220022111442141', '17200423635950346297631359046', 5); + T('219003b4c2hhh8g1h31f9i9', '28192499777611999330166104608', 19); + T('1000222100000000121201212112020001021202', '4198943923002496316', 3); + T('ki1', '16185', 28); + T('5lfjlpk8005pj215', '133603915990551547797011', 31); + T('1a438995227803567077324354096', '280489817685276861500109179409', 11); + T('a10ehgsh91b8r916op1d3p', '208937036874285900087095215604516', 31); + T('6g3irid4iokp16', '104226752458483402536', 30); + T('5sa078vcetk7l609is106', '7459835478504164366375430521862', 32); + T('15a3161b39799106c3', '12501616036457500969', 13); + T('g8p24', '21724780', 34); + T('6f0cfb185fd93b13bfe1', '524422133844304697999329', 16); + T('l1cffc501g6397ncj95', '306466239988961202225980855', 25); + T('2dfhb52jnchd', '9260943760100799', 26); + T('1ed471cbb25831d740fad016d1d3b092756e7', '42970555202513419911347877108629841551775463', 16); + T('12010002112102113121211330123023300021102210310312012230202322331130300003031', '8653507377084930340696211927307966913814134989', 4); + T('m8r5jh99kbea98ncemdddkj', '1535249309958690925403581682727379', 28); + T('16dbe1e64nof2d6ghi71l55', '16848131424242679059584846180243', 26); + T('9k97kh08be10if0bh2k2ecd9ac7cgdd712gfa1', '83361997971403184373688949366445710300829770044324', 21); + T('imqtc', '22166475', 33); + T('7f9d', '118988', 25); + T('f974bd83', '4185177475', 16); + T('1421112043421420020212223332442113204311210441024', '6714842848023828193177289953999514', 5); + T('5118a5bda9c5261d038a', '112475404365415864605805', 15); + T('fnxo4qnb3lw', '32422356295501310', 34); + T('93e5657d9928e3fd12074c643179b35cg8243f1', '527318231363570231110630496178567104982477188975', 17); + T('3i1fl4ahgleh2474j119ej4', '3436931963820318159686038917367', 23); + T('26ihk7ci3f9l735jk930dabd49hdb714', '952831117130053200769266367664413387630926', 22); + T('24nm8lmkc27ibal1njl3g84hgd', '70684225231749335253166543877275597', 24); + T('7b86', '13782', 12); + T('g3', '467', 29); + T('67ett6tur7tgd6', '229969461645745766822', 32); + T('2', '2', 7); + T('42fo2fhmcnn8560o1e967aa6eo5ik21', '3560990677089860840955807820073740226856301', 25); + T('50ge69b9c5065', '11169299770836272', 19); + T('1emroim9bcbjb3jlpah1779kcmb2nbapmap', '24427253992307533768599615831526539311208539755089', 28); + T('11110111101000011110000010001', '519322641', 2); + T('11302241241113033441003123010033313434402233044414234331230110201301300', '11215699606213392429515209493735425261429502759575', 5); + T('1gkdto3jds571f2gl47pdjuilk58', '66203436243049732688831467829307575554216', 32); + T('7f6d06d941b729ee41ec06af76ce5284c2', '43360782010770292902695704345624074945730', 16); + T('95e92k228c29a0f206e6h0f27mjic06gcjg1f', '97294998912929677139041351897383527563262247885142', 23); + T('2226fcb4jb4fg9i7ccf9jb08dd3b61', '113056836222057401495768166170155708521', 20); + T('113134637066412045754477071261275213637470', '12491631272411798853591088807340359480', 8); + T('373b67560324387b3ba12902a68b0846', '10285568089390168608368989457924022', 12); + T('3413502511', '145381489', 7); + T('1322000', '7808', 4); + T('49779304356a81a92899b9ab1232b41781a4', '283704343904838147306674158478269921804', 12); + T('ic70g9dlj', '12077356215349', 30); + T('351979a81875084020960', '2334517700246777830642', 11); + T('1do8npjgkf75l92km9ed3i33hp', '921435866566322324120159754197201155', 27); + T('12150522204302144012304143435', '8504919659789669048783', 6); + T('ikmk', '797040', 35); + T('2h2aa1cag5g0jgi5ehgfhdai410f37', '153347136980338866201795951450764966067', 20); + T('6geppmmpa5f80epk2lnl2q4l165ibgf8jn', '1136083732855390230208808437587722537241518643644', 27); + T('10100000110110110111011011110111110110111001000001001000100101000001110101001101000011111000100011011110110100111101111', '417609385350091179779636810113575407', 2); + T('54632316365542122661224526250554320122025413431325200346', '172403155442202581292345539544844888140672862457', 7); + T('100001010110111010111000000100010101101100010111', '146710581041943', 2); + T('124214202121442431300322140210140142301222201200231014440034434232343414021', '8359229864672618132611974237068932716828001597248011', 5); + T('126052261312470627317166600322300777652073650715', '3749430734838772876224746985432540515357133', 8); + T('54kc632ht19qabr5k1d82fljbc8n', '39317638087117867171096975460673000998063', 30); + T('4cg649834a4gfe0805d451', '1082429577946169111734611427', 18); + T('2dbxaptbqkf9l1g3d3of1sqg472yfyu67g', '2143081075993914961942603741184451795448682536174486', 35); + T('2156754868212718707616125201572327501277016723445525', '10122054780304258510261361631432189947078549013491', 9); + T('a9h99e3ag2c083127d2442a9d53de87eg354754', '5293910916748687218888816990104934714816456671242', 18); + T('5gdn1845mnh18dce', '5273404900500166539689', 25); + T('b', '11', 30); + T('10001111010011100001101011101100110111010100100', '78782810975908', 2); + T('5r4li88rrsefseqtbmp65jliid6dbeh', '3235354455814832733783749566355407213876680098', 31); + T('3d3a4927111cbb104723', '23592314824260135815291', 14); + T('61ix6cz9s69ag9db1yumlsjxc3', '4883940813241885530407328690972629933955', 36); + T('27bg82053fh3f68c2agg71he1bbg3ae8eha90d0h8', '394212306751663957838040335570427410296703664987266', 18); + T('455045100512441541313240', '3929676740978264664', 6); + T('880fh38b5h6aeje263bbd1deaak4ci', '1852428335715416475730972147092577202763', 21); + T('7h', '192', 25); + T('g4ilt52j5h1ds23hqolp', '187753427332679979656205394255', 30); + T('4176a2ba095a941aa340504234063a03174b51880167b', '1260509150099956775877167423441090608940444985983', 12); + T('2504826bh0b3deh44e63bg18', '169404321985280583053906034530', 18); + T('629kcmkm5ik804p97p7foo46i7g64m8lnn', '301188094060622480080121017741192037465487025537', 26); + T('175d4c5f', '13251037524', 27); + T('5a2ca18578b968277b1a60b025949a7c20963048', '160781227675665332719698714323247199958314771', 13); + T('10042463361643553220643436602540351641102252346210022043140655340', '1235358916306184009653528848855128388104787637282935370', 7); + T('aoqdh7d8q05g', '191839424516082166', 30); + T('11bg20d5g85hb21c9e98969cb', '1461738785476516432644631550663', 18); + T('36g71jbo', '43649833020', 28); + T('28926757219098079129718935', '28926757219098079129718935', 10); + T('1aif04ggc10', '9677067550041', 19); + T('5spe84tfqc6eest0f09oj6h85', '7842244574244691095548258935194731781', 32); + T('2j5vlxc3dsnf3ybqzp2l2qefe7aj', '2652680566022137390794201796609346674664299', 36); + T('44316700137250607462031357163634027001772445', '3096914367914270992782060024671299433765', 8); + T('equ6neejg0bt4e', '363092673073628729020', 31); + T('1i4h', '15297', 20); + T('80280654445380371979110490326444540434133731', '80280654445380371979110490326444540434133731', 10); + T('2635fee98dc2adc6d0bb9d3d2gg', '1016175556140463958965806888751984', 18); + T('2433018197317196158128417653316133781757212131523', '2433018197317196158128417653316133781757212131523', 10); + T('13arbcaflcuvjckqr9dlnsbpgfno', '245678666866906453273845830896602877589970', 34); + T('0', '0', 26); + T('1617b43cb4c1267ccb6c9a67', '61421603420165493428425457', 13); + T('11id2614gl6f4ecbk37l', '34754434464457820201082091', 22); + T('52b6d2313c32bd8b492b829f096003bab3ae2af0afb', '1934189728430433084118852318011260708451697369746171', 16); + T('109589b891295cc8f907838a8ff1a1a8d085d9b5e4c', '387803793636734915816188347290438110144007551802956', 16); + T('38h97959h6i9fh8895ja', '45316631296938641648982088', 21); + T('145fal7gh9k16j2d0h7hb09m9ld32cmh0aa', '23568482424313596356642349423973072408497271926', 23); + T('1nd23p72gq7slj6jcdsa0kgq', '16768688186146628617716846505518506', 30); + T('349d0ee9ea0idcha1i67h4e64a2i92e90', '269343193465673541093888647165059275488773', 19); + T('6854lhj1k80klcj54c787e69320k0ab2e', '57805283011680584908800630453906197594651766', 22); + T('804', '1356', 13); + T('5bc8ihgg0j26f98j2ab2g3j0', '4681781173320281184745635649580', 20); + T('q3ot4m3j5ll2u6amf', '19002275427294001435167502', 31); + T('2pqal87pf54lo7kaq02iocpokbbenqe2bp06', '370968670422455186597525315256886862435204203283442', 27); + T('14121204025541551033435113555133500255041104211512', '229652526776877666192899652532215661412', 6); + T('4cb80d', '63995278', 27); + T('3g8ff677jg9g4384ie9chfci6', '64122028661030601402847337245166', 20); + T('1to1rqarpco61sobaq03gj7mpkq', '12335682298221035964378060459101864739750', 34); + T('4b959fg0ok', '46593656068532', 28); + T('265gb83e9g60e9cf167852e334aff1f01d6ce379', '2306333583911925762109580082245431983946279388064', 17); + T('101012120121102120022020112222011001221121222021211202012022201', '432669425053505639748394359655', 3); + T('7jkpqkav978wv24g5qgube4oe49vprj12l', '980570245844506132383809249275091353381128060854310', 33); + T('e03jkjfc1dh51njoahllfld86q65d', '1239960032059488024964338692108578276765671', 29); + T('m783400e4ffe1aa6c6en4ckh', '1239584291259839658707406684316913', 24); + T('fnhd7ke0gao', '1520924761338399', 25); + T('38qgue2niuk4ribm8f', '74092686835055561528594725', 31); + T('ne6b2l9736m6j0kia2', '26699330820578748156911374', 26); + T('196i14lbk', '109958823703', 23); + T('10001110110110100000011010101', '299581653', 2); + T('4059kejh4oa8rh7qmh6a1o0n5lq80hcs250b9', '177450033973248979305599574069360735269525214008062910', 29); + T('pj3g0e84lqw4aiwt42to', '1818225340602370091437090095360', 33); + T('a3m7be8r9553ugsinn40phdcp109v7edh', '14783759765079103513279709123504193591994024704433', 32); + T('1756e5g7692c9h', '111684756948660997', 20); + T('1310214023220313413114434030010043031322341230112322140434', '11406035175438373014369495726669985740119', 5); + T('417c1deb522fc30e36id2be1826b', '136881678478819836067507779602024299', 19); + T('92252179669209632312214876221319317863641946757', '92252179669209632312214876221319317863641946757', 10); + T('46372312a98707a02376aa8a10', '495759640298771450157982756', 11); + T('30435540243430140', '102782589253365', 7); + T('6fhdafecfi5707b46319a8i6dc04', '229779267604296881101047008482286527', 19); + T('bbdjckf7k409d6l12d0gg', '8132684440039836441113393896', 22); + T('7aa1ffmd443dobagk7cj5johagf9', '411676472259993059055019141270748994759', 25); + T('8f4k91t4tjnt0fcn9du7k43s8vv', '25625379512718683322830604232552206610120', 33); + T('93b7504c8b9c69340', '6187855604057469017', 13); + T('1sb35x3s0k1q396aiw08vsmrbplhfn8upj', '633864643448678437738472399825285684192119995266605', 34); + T('agua7ucjsg0iih', '578621718768720599495', 33); + T('1110001011001100001001100110001010000110', '974087676550', 2); + T('143144514240325455532435105401025403335453100232325214143111550101431', '144340707728293600047951401185589484227036000826020443', 6); + T('233044', '8524', 5); + T('582552wok', '11778038097685', 35); + T('149f9d98ffca8gb3a9e4141', '1491232566783461596326244889', 17); + T('22t1321rdu668p4ic3ib9q303b8j8keqfm', '34360852610107045028311793108369775693929421677085', 31); + T('462622265601022655402232133025653611105', '638815298652167365671534920494773', 7); + T('4230756a54234667163044394627859a924', '1074822316475608305169982087744148310', 11); + T('f8g3c', '2015532', 19); + T('f0i2ihgab04g1jda8fc4bjf75jm8i7ic81', '13004707395130797801783447008659194898218637369', 23); + T('179253963a36bcb3055c8b7', '5115853635094224906866873', 13); + T('64ijj66738659b1j31hc0820049h64g291k7egd', '6396071996445462346194349108953750662378937713977069', 22); + T('171215002356221063407', '2184703385532655367', 8); + T('12b92d0b3fb36a8340f2ba7', '4736076939720343041873077671', 18); + T('18533b10492434055a895882a6bb2620a0124211a9879716', '897043158909364946043573806406449154734736512608194', 12); + T('11100011001001011111010000101001001011001001010110110101001110000000111010110100001000011100010011010011100011000010000101101001110100011101110011110111', '5065575398273300616873996741388922355920788727', 2); + T('2766585533096734963797354878145135898641', '2766585533096734963797354878145135898641', 10); + T('23721121', '5218897', 8); + T('ad9a3ee51ae483bc3c92ee9719ed', '3521077463500554185208755094231533', 16); + T('538225767260919961504023', '538225767260919961504023', 10); + T('8bjfla5x1ajj4pcc3pvq076xjshfu', '63473818980036415589889054621162799274007056', 34); + T('1de1640281a9c904e09eb8', '9623171535473259745289948', 15); + T('5b6i14i40f3j53cd20b8ga1ba', '911209787080683607634683777689488', 22); + T('d6g6a01', '455214169', 18); + T('2b72r5rbeigo1e8wa4ky86u1yvrrqxnze', '146380404990650204600521560022975352362017972817322', 36); + T('1', '1', 6); + T('2c3jan9p54e7oq7', '268026783261347839750', 27); + T('26', '20', 7); + T('111', '13', 3); + T('13220232312', '2001846', 4); + T('ggc1dvks0wznulslk6qtto', '7918026888898711931888200605892476', 36); + T('jc9gne01itlg52i5vp6rgr848', '220966959400300968753461444338213486948', 35); + T('b3k2b5pmj4g0g', '1063566102909702304', 26); + T('3b7h43c4g34ig6h033g50e50ib', '12782782886402816341557428904412335', 22); + T('14734353322620206602545731', '61062963683852360010713', 8); + T('2b0binb0g286hblbh56dd9m62gkc97m7', '15043189108277243144346702606154391095130071', 24); + T('403141', '31813', 6); + T('7flc72ih3ffbhg9mk10hb', '30802551855160402027073927075', 24); + T('230451055847842670116857431341321500872417704342', '1654015781734635936691762853372312699223635807', 9); + T('fg5f0', '1333123', 17); + T('3133320121122020231323', '15384999136123', 4); + T('b732he8i04f29k1c8', '16223282627992833931091', 21); + T('4766a43c95b203a143a5bc5a521a00a1517294545b8c79', '613814573577095538322406054851347528901593201139075', 13); + T('475312075530063365616', '5717675808740207502', 8); + T('16162192b5325a09229b66154994a58c0191b83346c', '89746042615495845467561696653563459924799018890', 13); + T('bmk6fjkc882gl', '262863262963325798', 23); + T('83k', '4321', 23); + T('291912ga026f903h805113e1008b7', '351864600431743706976833767888152589', 18); + T('5ij68fj1ci24781hf3bc6bc2g2jdh6b3j20fe', '2348628424621736684950599296511281097502939955369', 21); + T('4m', '138', 29); + T('9iomgxldnucfvk5vc94jrxkxqhg0q86lug', '3302490167238267842315194141274974765989676875973840', 34); + T('102213220130020023311220303121213121312110302212123210023333', '386706650024275360677522460004729599', 4); + T('6c3c7c0c0273106b49', '60090702381311935043', 13); + T('58112gemkb46mjmnlaikgci3', '296486678920377209704264064810163', 24); + T('3wt', '4352', 33); + T('8epdqfehsbh2dcc17afk440pinmgkc', '21858855191422671471340155581640803606008076', 29); + T('49c791b', '23008529', 13); + T('1dhli5mlhe3beji4i863lc1m3c', '50343339607330193689400174698342356', 24); + T('123031003202300213121210210010232313231132223021232113211032101221331', '148112609815368618622505037403177396804221', 4); + T('18ce23d9jf21f2029626', '18676222308756564436417161', 21); + T('597065210033583', '597065210033583', 10); + T('3k26bk0ke1b07p', '9360289351819814615', 26); + T('2955447a895348242a10734120381179706848798a081a24a', '277814985699113393836174322641904828474105999637700', 11); + T('5', '5', 25); + T('1d21e3d1302b26h', '647940567601800701', 18); + T('v780', '1023232', 32); + T('3hjf70me46ace3', '5530384201457585978', 25); + T('mdm50i95kffa', '34359902758185778', 24); + T('27594fe4363354706hb690h55aa751e35bh9gd', '491043964499596096790903212672593094950152072892', 19); + T('4a89803', '35829979', 14); + T('267015546c1d214c872ec08d7370e71', '466173270071093767519019729134792006', 15); + T('360077158271360562586726301234510052565274063276314', '1890330141502524623802729708237946328855224484518', 9); + T('33qw8b27i1jw96v2ng8eqobrtevma', '10278823232880451587462834430209746065248241', 33); + T('2ffj4kk34984e1im4l961976g7mc1lfmjkf309', '3100701785176197033715745123477117444206063832592585', 24); + T('1022341304133421140443420110010243111004132014011020330414342141', '119499096791628035571843616922889895197027796', 5); + T('p2cmh2pk8i0iaj3e1kck', '78607604800260622873133016676', 28); + T('19ac1eg52gah2ajc34he552f07jg', '25687840615874920182000176600011964824', 24); + T('11', '33', 32); + T('4c51d2353763cd99e5gb9996ecb', '463382824850947753162321910886735', 17); + T('b4lb34kh23acelhhb0a9', '359969560591369257338660893', 22); + T('29533b2', '85574108', 18); + T('210230042006603033250136610531101152631005355211234231305', '454901252792917385468584025058887603070565139533', 7); + T('1fbfd085agi2461h64f1095j86cce1', '95533836923505794150091786478042661081', 20); + T('if7cntugmjrbee1eb8ckb3cumn3cov', '824056020452353062283203568047736986646197023', 32); + T('d1c', '4242', 18); + T('pe89dn', '728905472', 31); + T('47ejfjhla3ndcebdjdcg', '723161521468601797654769776', 24); + T('4975a52e86dihh5g2a3g5885', '1158656071841032338859418439765', 19); + T('b2a', '2515', 15); + T('18802049166029703a5145880531512464114a2', '6708572829867641951682044334790673523856', 11); + T('1303', '327', 6); + T('2b9en9mdh0ma6l3gb2mk6a7', '5730992327390802294169442362999', 24); + T('a4om7q5', '9012380858', 31); + T('32315145242005405042351015402414403452431515', '9890393161550519699750282408306759', 6); + T('23d8', '7628', 15); + T('3x65bk', '180647358', 34); + T('11013133142310444', '185143322624', 5); + T('11mfikagfi4937b232g8mfif81d1', '19931061357332966183661805527444530041', 24); + T('1111111000001101100100011000', '266393880', 2); + T('4aghegjc5deepchjn4n5k0d118le6nd981ak', '147378856393139936930504545227123321111306845601900', 26); + T('a053581765919556968948712586810a9015', '28225998746921616615219371069369367892', 11); + T('f20j9hkhjha1959706m391', '595569091584864335710531454901', 23); + T('23ihb64he5a0f5ii443cg280e5hahf18ib9', '377475347206489360974272030507154369136231429', 20); + T('1134221502523554343504155430344022131010005022402143505540202144', '13410812065491845847587964012298459020282685390768', 6); + T('e3doam26jjll', '33718022971403046', 25); + T('a1opuepaio9sq6lj79uv7jdsm3mu70', '448489371933662834507614222400068450749479136', 32); + T('7dia0h6ci727h3jd5l2ih8g90jg78i9gle2h3c92', '172565724572140439608372962298001362724338507747933200', 22); + T('185578g007dg20e80549a07g6ac256f58gcg81', '5006150941846375710425629090586415981041329547', 17); + T('a57aa50714a5a58241591229577a12719502409006', '52377118471664082839971342562274998095676747', 11); + T('32b2cgmbb66g07h0gam0j4', '1602756351859232543197284945538', 26); + T('161a2b46106774', '161867200944328', 12); + T('4hwkgw', '271937696', 36); + T('102313011003221000033031221130002002113001313220002132132330232300021', '102686925972400425528527084594359115639817', 4); + T('3sk4730l9qqkomev', '147136098020632457664991', 32); + T('but6h3hj9q56eg9srihnw9hdon941rp3ots', '50854478902964517143833982141512258828988090776984054', 33); + T('5942a269472a40200841698110c391b0b01240b23c95', '4536812636437232093232481982122462495851953165886', 13); + T('b490gmm', '1656667712', 23); + T('31146334332061140050113651455520142356166650613065', '816409488023628465545576155395605191426552', 7); + T('2131301223123222330', '169410935484', 4); + T('9co4b4k5p151', '657937061645466823', 34); + T('h0fd72f5254f1g26c3c744h4b3f314hg490', '81461749134903178373218607627253657134879874', 18); + T('1002233331133111021130313321223322032032232030203011000132202222132020131311130112311031', '24973910663440836930300964560676670988365943043878221', 4); + T('2ifd83008', '75242904008', 20); + T('7884218894543281858859629374135875813832', '7884218894543281858859629374135875813832', 10); + T('13103023041232143', '251002289673', 5); + T('304e49gd80298d67bfg69g02dac696bc7a8gead681', '847119008557111727693264083647354550664309377534571', 17); + T('77440275263665614314052136204775', '78687457933212079867651754493', 8); + T('12334424101331102324103', '3699927180120528', 5); + T('a4g05c', '14611359', 17); + T('5261257577514510167240362153507501754265746731563', '119228114395905189012428590020540134015611763', 8); + T('3l4dg03eaij22al6le6d551', '1353453954185679560322791661947', 22); + T('2bqfxxthm4', '142468042285068', 34); + T('fiap77iheooadg8q169p6n', '38461005482942559471400836911887', 28); + T('8a8025017961715439905021215027084a5519a3737a', '5406771714928108622296605629432833570349691892', 11); + T('126lhlbc3j7mbbjcf38', '3568853907090242324887631', 23); + T('7aiii2', '24151562', 20); + T('1i7gem1uaffiis0u7et3jb', '724613157606382056196630988579111', 36); + T('503260b17454901', '6448202932655377', 12); + T('4850626593a5713082aa56206712900743aa7201817', '261169229231878869752098014758313048888037312', 11); + T('3d62zhhw', '263758474580', 36); + T('6hz40', '10916352', 36); + T('a134e378efg25b5b709b48f25', '3418312060655617619528647783454', 17); + T('15otpknf32t2botcfgcigfqu6gnkd32', '653730401352621635529986827040115039458290175', 31); + T('4bg6gf9', '217552973', 19); + T('55kd1i5i', '13144826416', 22); + T('i4upwht7sz8semwr0m8xds89ckgj0nvcc', '1148664345372000562399006295243039757410796703394412', 36); + T('123233222120332213211233223210103022130311300113203323200030222020321211321', '618728024794653152611181264645104903381031289', 4); + T('222', '26', 3); + T('17a', '304', 14); + T('bekonj1ck7ko0m', '118074773170177241397', 29); + T('1wbdij09m30', '3032795011029696', 33); + T('16024a6a8524a08ab4d', '610190839032691602657', 14); + T('792hf8bc24k6297dek1g2jfjgddc6h', '1643015926452657057435885816967287278987', 21); + T('40120', '2535', 5); + T('1323334411403144204202403234301133303410340324332211031', '94927992994481212046822848686698710141', 5); + T('2a1d28a129791828054c5a9bd6b79bd9a27c8793b3', '266985353736826850080436241041352235363843789393', 14); + T('1200022202111120001122020012101100012202122120221001021201100', '71161283691673020779124574143', 3); + T('5977', '15589', 14); + T('104340303411210044440320430122', '221766877905265014412', 5); + T('11013120201312031120211130123201013011333313203123220110', '1660030361577179570818698261150228', 4); + T('301j59773', '235204794824', 23); + T('10110101100100101010001010111001000000011100000110110001011100011111111100000110001001010101111111010011000011100011010001110110011101101100101111101101111110', '259149353365748547676531551540644422107339619198', 2); + T('205111503a5610828263990683193', '294498462378684194194060531477', 11); + T('1101011110100010001011001011000010000011001011110000111100001100101100100010001111101111001110100011011000010000', '4373566857843294445861437353637392', 2); + T('336803b72924db88985ac563199312a', '619172222915569013937138339844159765', 15); + T('32405', '406130', 19); + T('80j5ddg1b1dl14kjka5c6', '5671500746690810780935275986', 22); + T('7a1881a31b06bd6451ad1b6d30a1c894c72dcbb2b1', '756847193473448614435521815498749214334384581243', 14); + T('48mshqkulqlpne44ud', '461366817247928145199340217', 34); + T('60779a50d1c0ddh0e446a96gee68c29', '274145136144895069895965328926167326013', 18); + T('58', '178', 34); + T('385g8d44f0eh76c43af5c680', '257444068870885858169187329208', 18); + T('814495845206832393929422614995075089273212205592362', '814495845206832393929422614995075089273212205592362', 10); + T('f3f77b3b2e9b8c8ac86ff', '18433604493853855199299327', 16); + T('bkrtagjfbg1pno3idbmuo0nt7n7702ga2', '6177359692973648095722111400642059003569459901224', 31); + T('1dfcsm42odexo0ktieslb4qafa35f8yy30', '3130691163505477254704987194463689878868046927467788', 36); + T('145203764627604366316134', '933938082134087015516', 8); + T('19h912757478f8crkkhr4og99ni73dn19aca', '600864466904483449441439149901096985867299402717370', 28); + T('39ll9imkk0jkj0flmanno7', '771926574252593113042455452482', 25); + T('228167317827360633087566306336123870011383433267784530', '872924535016160646996267471070001556922344992057865', 9); + T('13340', '1095', 5); + T('pwd8412ejz4a81edyrszibtkdcl3i', '976685155536350163623078908506832125214491342', 36); + T('3re4fusjbcu8j5lv1l82', '272329957684893601942297513205', 33); + T('chg0', '103120', 20); + T('4odi3m7234bk701n297fmcejq584gk5b1oh6', '614617226825809656528595998076194516792828845237451', 27); + T('111594024100d66', '11985349514603310', 14); + T('76560070281357891106470860382421443497991878779506051', '76560070281357891106470860382421443497991878779506051', 10); + T('72b8ekje0dj2l7c3af0hjgjm01bk', '41536239334041308155633538070798114142', 23); + T('6bckt4ppt4heg95ar4di9d8lt3l', '1621907836199076168122557852891843973211', 30); + T('6t2mq5jxqophfjfkv2', '1212339255267290424899164962', 35); + T('e7pmg05bciepi1dofi43mbkodb', '3387641514834198687347692335687382541', 26); + T('27a774bb8504617833802249056310167810008b70191', '809835557745463941303042632876919088150536027133', 12); + T('100011101001110010110011110100110011010000101000100111010100101001000111110100101011010101000001111110100000100110111001001001101010011010000101001000111000110111010', '26053480661633533853821712739093750512044053131706', 2); + T('78267h30e5ede4a049072cc', '30778804593492484652016321540', 18); + T('qjdkoo3766l1dqpgn21ne5p9k91kp8c21cjf6', '90359581173566956884322886148109729184492339838200142', 27); + T('fqdde1sn729mi91m6eemruutf3pr', '689302333458744601010081226005660309098299', 32); + T('421c07ac3832988bb3a09602', '173915305366970601824607453', 13); + T('1110010101111000001010010001101011101010001111011001101000000111111111010000000001011000011001101111010101100001101011001100011100010011010100111000100011100110001111110010', '5365917928263298552573558618072276593881915061068786', 2); + T('242', '72', 5); + T('538ke8j2m83cfi', '7650430109348882893', 25); + T('lmu0mac6l44w0r9', '39403923966776686881276', 33); + T('fh2e6opj1dni5kf749', '17753033290059290065644837', 26); + T('1', '1', 18); + T('26d3525', '40711461', 16); + T('300440712774126174401451236156067007573370014604', '8387356043080138295526316927827140067465604', 8); + T('5t4hfub0osbb99ir50', '228658754079328656695061664', 32); + T('71ic9b6hh204d7i11', '2049179021938589824134', 19); + T('5hddbe15gg556hi26i46d93d2af86h3g426cij', '8087180350965242088908465549595651157432077173179', 20); + T('1300433434104342031413234234331430214242234142011003120034442112001442203422', '42553163117436041210820684828722894387321388431600487', 5); + T('38b954141f26f2a4afe6f7a9b5e34286428e3', '79061632155013935902994702509288944969197795', 16); + T('1332570322632', '98077615514', 8); + T('d35odi2fdjojk7e98gfe6k35b8mf', '2100644003633488135175085159618349120211', 26); + T('3716217572065650441626246', '18430886692014464117926', 8); + T('29490', '41844', 11); + T('38240bedb839f71c66a', '16569841585813541996138', 16); + T('2bbq82tjjlboq6ut42kgo3f9lj9knij2', '40405579441757956010771252427816760128528380148', 31); + T('781c04b2456348', '14676917899295993', 15); + T('53dc391hc7h33dbei', '1498649871829166765405', 19); + T('1g5h3sftq04hfnphf8f8jj1', '982528894566891028570672354176986', 31); + T('5a5', '845', 12); + T('178172ce93h8b664', '92075388339711112816', 21); + T('9sr4id02', '340213183490', 32); + T('2b8', '489', 13); + T('2300300330330001003112022332211030330300132321001003030013210', '3671262870120598176271167818539254244', 4); + T('4pqt2k', '161313876', 32); + T('20jhah3e3594ic7blj5783a220edj9k2', '841249012824513777684222245238901038443798', 22); + T('11131403031142402344414241010142321033102334', '1440321372656516822979172159719', 5); + T('200310102202323332203003033113', '591179016791929815', 4); + T('716521140', '121283168', 8); + T('111010120001120220202202221201010201101101011000121121102022111210100002', '10956952452694016827581915819578357', 3); + T('111202131303133301210221032032111320031321032312301110231', '6989651474722512359041597886371117', 4); + T('0', '0', 2); + T('1h5ah9abadha39h8bgc5eb78229dd6', '4960759047638296451407652673971888460', 18); + T('2012012212100221', '31470469', 3); + T('85g254c289ab3bg8a4273', '33936134064348767438727660', 17); + T('agh25kbib97hb0g', '1161594685951625568670', 27); + T('12glh92lelm40816c', '6862332277154598602249', 23); + T('248ppji8q3gceono93bg', '24909353208658444795454586046', 30); + T('3qpamh8c03327tq2nudhccfpc1j', '2304427318605821370197739524368941219074', 31); + T('elimj5c2tlc2jf15sjs3ehinc1jnfp1s', '90926703087141442632989969922650276777949757558', 30); + T('101101010011001101010001010001010000110000011111', '199232011439135', 2); + T('411222201420220221121003', '50782833370098253', 5); + T('2039114347726530b4b0aa421220', '278325835859819389698795043320', 12); + T('41004131223131231131142234133411213241244344310323342404242112441330432', '35634094054178335947847642423396152869554996042617', 5); + T('100101010000010110110111111000101111000110000101010010001001101001101000', '2748976914400602004072', 2); + T('22230433215142110', '6780166900026', 6); + T('8mk1at9o9r804dudopt3k8wj', '732139600050794539356052387629430435', 33); + T('hf90c267ed759h', '371923695419188175', 18); + T('h3dnd0i7ic0', '2419032644884024', 26); + T('2fd', '931', 18); + T('21k67f3ff8mdg70mc6lhkl0di4hmkl', '6434984278071506771897566744856884038406', 23); + T('19p1httrcm79oj9rgtbcdiraloho', '1329656272867458937798290256287785742722364', 36); + T('3212131401031111334432423124321430000330412430201342140322331330011012330404', '91550385572652543205746270772410011134482321789183229', 5); + T('352m60pl8anklqx', '19288129733595604666905', 36); + T('bh0b4i51g', '202042896689', 19); + T('1119744c426471170b60025b47566cb98dd11657', '540029478576476753822278962275953374371031885', 14); + T('334737324b022c16a12776067cb0e59', '617423186874142070437062374479797609', 15); + T('3ar', '3624', 33); + T('7518019e9f1b02abec44d0b94eb31e2641e59f76b', '10695796466552661793442196497637299434594286303083', 16); + T('180pk6d6kaik7bj', '234289341354887508919', 28); + T('lf41em56', '290649634162', 28); + T('5edqqle17ombhpf05hego2l175f8', '2455572852658581967926750753107310477266', 27); + T('3m63gj51o8k4iioo2n', '4371172906141889814528715', 26); + T('3739a84a4486191653b6344395a88b34a', '123393978207073455312508389622518826', 12); + T('5a92108b809285441b85b256002730b2', '16797817024717861380905046511444934', 12); + T('hnge9ejgn3hocbc3fi2lgf3f3gdk1lhjk', '363506737365826966052915737077950321295612551160', 28); + T('1h0of7r2eq988g6ggrrsreirkb187r7csprjb', '235284507762506989471049564238403899403844842607979881', 30); + T('20253055005124511321504332435202215042331022', '6009050050525852848744537187631030', 6); + T('255h2ie39a2fb1500f973kbeaejac1a120f1a', '896034685417542420338893072410925395756357640783', 21); + T('k242j2c4nnangfl848h26bgnmffkekijlb', '70788268624971959173282983665178195588772935875', 24); + T('2435301544115404035300020040304413033133225434345', '62316354829793498075260144431239712473', 6); + T('2g2i', '62310', 29); + T('4102', '902', 6); + T('otj47dcmaon7keme2w12ld6s5v2eqpto7', '638854684449416351631309299374737671670073661571372', 35); + T('heac707ba3e5de', '1452158473696594274', 20); + T('cmah1lheg94', '1815679606647118', 26); + T('3', '3', 15); + T('36dg4c1fce3g01f', '5463291949613408035', 20); + T('2gp6i28usr3ica94iw3798uwa', '14194117306000686702866639330287897138', 34); + T('6ed', '1573', 15); + T('5i88i38d7ja58gc', '67220527363641484650', 23); + T('jc446gjo4ajf14bbcp7kpac9cnk44ggafg', '3341389528445632882430361472253103750301895578375', 27); + T('5na9jcrd', '196840371053', 32); + T('4snet0', '220080266', 34); + T('3411042340040', '939808770', 5); + T('1in4vg5uunmtttvicldm5195c3ape4t', '5628692971846091847621849643956512531468869964', 33); + T('31ne0m81elc2ni378f12m78', '7137831462888106233070797205040', 24); + T('1k33gi01c68jg90b5g2kh0f6', '5049053173243219517979291311964', 21); + T('rcrrrmn64una', '987268935367949034', 32); + T('1b', '24', 13); + T('1100010100011100010100101000101110001101001001010111100010', '221926845064713698', 2); + T('1r7pkwftlcre0ii', '4967939422698252306902', 34); + T('61226277150121532713772501031623101', '31243593013026976686003389408833', 8); + T('1h5hgf08i21c3bchb5hjc5cdg2dcf8g7269b08', '15235227425880825633838957695898165136395002484154', 21); + T('3b9e252789', '436531204678', 17); + T('k61l82d4naef4', '1206574722460321629', 25); + T('6hcchjif0g9j237k08462f987', '369998501355671383411474631968651', 21); + T('12d12b00ic0', '6998243180208', 19); + T('564041k3kggc5cb91lkigf8a0b882', '708046707322052814836378156934476046910', 23); + T('5918789824383b512946ab03655a5721426090a258275811', '3034504785879651863453500736958310166080471464555853', 12); + T('4a28dda30874514cd66531', '1047116675864538401747740219', 18); + T('340402203510613364531', '285913804988245316', 7); + T('jglhl745', '49319314049', 22); + T('75i9cih98am7fl2gg99gba7n776ifk868b6dh', '352662788590054230998768616200965729446372971897033', 24); + T('2g575jj883c596gag3b753iek59d60fh91j0jhkk', '10225004397589075860213367077653867616378434533721837', 21); + T('egf56c999khgk', '108840444143808488', 21); + T('3fa622c7ed221182e769dd30636092d163', '21658621556399738720046392793916662534499', 16); + T('107380259', '107380259', 10); + T('a00k9ff6e863c4daegfkd99ac5616hg5kg606a4k', '226239231994177458369309950416257385004898669100608548', 22); + T('727134513004332506', '16578205872928070', 8); + T('8a5cb867b3273', '205132338279105', 13); + T('q97mhi3ort3ke5dsl3v', '96850671091881098816986196009', 34); + T('4403412514545', '63419722728', 7); + T('36cb3cc08416821757', '30602499066114507240', 13); + T('7d54g8', '89201328', 26); + T('3oojso3g3392dkbbt84xvbxc0l', '2979009146895467259349827974056406782485', 36); + T('36fbg77a0ggb0ci9hd', '18409004251720729857403', 19); + T('2k4l', '93807', 33); + T('1qlhdvxiwgm6cr7nsem3jalucm', '345303493069524735491170228117585524750', 34); + T('2434042100312310041041102032432412344014', '5372241755138001316636449884', 5); + T('hmo15lnok4fod15g', '16687884040803134578891', 25); + T('gfiid29109b3j8jc8cc3j1eahfdd7732cic8ed', '140059672476506082851982887877581752595147028007486', 21); + T('3c84189bk07j261he9290cjd87i7', '6268314837095821879011320392648968063', 22); + T('1lh0b4c2e9i6kckf92e29jn6ac47dgc2878d3985', '1282419934581887287299945684653043019039515750548801285', 24); + T('fe3', '13923', 30); + T('1319468a4667519180593038183130808286630930', '6412675244028174355879293291613657100674876', 11); + T('4a3', '3189', 27); + T('402majam846193eo9ac96o6a5hg', '8892077274986800146995489100822816066', 25); + T('10d8b3c572250152618107b2259d5608a14a3a45b2ad', '20544745080946531559142719199803291524781420432601', 14); + T('go0sck6gotd462c2bnfafcmqtvlrcbb', '23907635617759730937515657563927387778907484523', 32); + T('111010011101110111001010101110100000001011000', '32142349779032', 2); + T('5d97', '59737', 22); + T('9g9', '4314', 21); + T('fcq1qb34ndqo3900m556lhaehdn1o1', '5004100408428511376913892098705761953181767', 27); + T('43g65e7a8f38', '489624285606273', 19); + T('32113334244320312400104443', '1029375448159769373', 5); + T('310221411043332421244032101422342140', '9370827599951145560355920', 5); + T('69hhp89in0h5jie', '695638255018079621219', 27); + T('fc7k6b4efua79nh18eohd', '205046231015999268860758172036977', 36); + T('684161846238401', '158778455527054', 9); + T('180abggf7782389698', '7796408187235478919696', 19); + T('rff01k5fpsgoa88ewo11igh9jt5dfcfs9a', '3546436014833336229063455228043873170002123415057080', 33); + T('100110011010220120210111121202200110', '52533845531034879', 3); + T('1hkah8eqdo36uid', '1188063720587983164130', 31); + T('789b534735', '518002001717', 16); + T('502233334544512511610366503153406301634260122', '77168872698190232426753092866458114298', 7); + T('1hn', '1283', 28); + T('1eki1s4cghp61aqj9ck5bbcqjkemr5', '3870223673450934834503736739043981885517199', 29); + T('cao', '10406', 29); + T('lcr', '20580', 31); + T('44e50119b604029dbb42911105f0', '7145735262791158676522926629699807', 17); + T('55a72a8845606a6101935b762956212030697197882721b8', '2891443867392734091987458182380459443067274109345180', 12); + T('49', '49', 10); + T('ectrh11nho2471jvmvx4q9trfk9hs81h4', '369444070950732839712792142856641597182627892515449', 35); + T('rqqeq6mqpoqpasrrcuq6jt9fjt4rkq', '494957438299081733206543531712764649663268456', 31); + T('1d35hh64e49c4h3g9954d522a58jcfg308ea93bb4g', '364650097839632030692202970098568691121387743389372496', 20); + T('130322112032010332300220231130333210003101302000113110123311213110220133010231', '41264121145398472876534214952762106425299300653', 4); + T('3a53c2755b1260d232bb8d62729689f9aeb62e35f60e', '21822791108317911324343501911275861646156768606549518', 16); + T('825673232713090477952', '825673232713090477952', 10); + T('i46jcdno2a01mk98004', '2031208929970583000541849348', 28); + T('1205434053320310320', '138125884535976', 6); + T('hge85la4bh0khqbbabe6igki', '14695370412094062868205499164831367', 27); + T('133kt1cswtuwmpd5qhk24k55sa8p04it', '326448646650356344354610046025058475184987458209', 34); + T('3236e2efal6l7h1d115264h1', '23268339383522455310975833089111', 22); + T('804660753567512670080084580036', '37956769767951851794665023592', 9); + T('1015752175345655', '36143524858797', 8); + T('916aa0c1752b7ae8194', '127717282530992844422639', 17); + T('1675967', '1675967', 10); + T('b913', '157275', 24); + T('10011414', '78984', 5); + T('337bd9e8a2153571582283dc2eb03e', '41349713484510984486738119285124059', 15); + T('121120022200112011010', '6418577568', 3); + T('bmy944flvntaqlvlqrswu10d3uk2khti', '8564046232202665530251180136943811879121979161858', 35); + T('c167372796bc509cd1b8363b6082', '106760449584399644261680763206674', 14); + T('3lqb8a2m8isg56fpgrwe1u7e02wusdv', '13151181110013852579067705641818021287165798549', 33); + T('117', '117', 10); + T('3941c283fg135ad1273fg109bb540a607', '8390935227868619653499488684200707583861', 17); + T('498400a895933a9307', '2470275750549750381', 11); + T('75fhhmgajaa5nmkc4j23dmi3c5nlkhe4a53', '611871605189747040922198802979378146489796218619', 24); + T('2e2ljgje2i4oe', '1312494953013310334', 30); + T('2308d687g0cf657c5dc77fdha9145334cf', '575552748356204066006280555783397107050655', 18); + T('15366300702132404747410165', '63663188402072700457077', 8); + T('1211021110112110002201210020210210010022011102002022112112211110111110001212222211120211121000210010012011002201', '166623003788951092841186083176122549763292977336948088', 3); + T('h6272h1dfd84f0e1hdh63bb891f297e49e40c60', '8698065705772214605732543063301832216085264908252', 18); + T('2du59wacc1pv', '169045559446116821', 34); + T('1104144', '19299', 5); + T('7b7b929ib38ha0h3efd37823e2e0ff60i', '632309191486570820267877405266584767267970', 19); + T('2607400245312045520037132356700', '3422470520825634689242488256', 8); + T('anu0', '420648', 34); + T('7zs9sznolivv0b261pz', '82453896793285080027030707255', 36); + T('v0k7bjb64u08q0rj', '1171893246067812904797043', 32); + T('164703aaab2ab8687405bc5c61aca10607055a713aac87b', '2594865872979998742750325942751781337383906323934209', 13); + T('6j7076hgc4cb4171fiifj117c7a5d9e0f', '14163341774568096462942504854512024189875789', 21); + T('335066305135104410516', '281945542299465302', 7); + T('0', '0', 36); + T('13996ae52a6d601db495cdecceab53b9549ac2e1a', '137420483326676517320231475107274395010419164300', 15); + T('1011000111100001011000110110010011101101', '763990598893', 2); + T('1u', '62', 32); + T('1f2e4acgh9e01', '12654640102386115', 21); + T('2052222130', '21667014', 6); + T('8jb7hcm50ej9k9klm09g3a4kc53ckeef116', '176022396062062610788399163891079098715666661582', 23); + T('20509a0235136a791180530831856481092', '521683223673880098116902682825014335', 11); + T('3eb5dh9fehd62ge5624486338g0ggf', '9641340713490442552045610666398445487', 18); + T('1a4bh040f9deb', '1816166780329331', 18); + T('40648755c8337a608c0cbc7b90960072a6c5160cc6', '18958470038164827979052792005696996964594012748', 13); + T('1', '1', 8); + T('16a80aa482', '3853305469', 11); + T('13mb90opa29kf', '1853733788161526583', 33); + T('1116feff891', '2144402836934', 17); + T('1100110021212111102212202', '381334691207', 3); + T('6kmr999ps3rdmfota14e73kk7nct5c1t8w', '855615046083522375775633777751308402456027767363821', 33); + T('fa5m9n4ajdig0ek53p9ak5j3', '306774699778415632661541827410190127', 31); + T('1j', '41', 22); + T('14232370256353054042511271041451307447', '3992139171064784961434159759593255', 8); + T('2988540913', '2988540913', 10); + T('1ae421bc92c6a53434324c74a65972633', '74644101775626481011978862480423290648', 15); + T('1902619a3864973a78193b1', '966910259499607548518389', 12); + T('4gsli', '3697848', 30); + T('2322d2009a', '30550988649651', 29); + T('4424240313181', '1263871046485', 9); + T('h8bdh45okcjf9o0hd3909k6b131', '38499150432406333646220029299270094451', 25); + T('140532020041465345104254054014206235406222630412', '8323153346263714336098983109345737707197', 7); + T('37y978xajd', '254414505320303', 35); + T('63108698628a4146909492', '46485268864599157788725', 11); + T('606362645', '35360540', 7); + T('2933a9b2c5e3c0a260072g14a7', '60459499766662642607270785339795', 18); + T('2766j199g1gf', '822341130472107', 21); + T('14545302124120420504244241454221314', '523836947223749155885762222', 6); + T('6120015562805331441103', '671376316612472574141', 9); + T('2mlb1r41o57o4o1464da0ppr', '12017943535755782808346241199775876', 29); + T('4d4b5f1hd64a0k0adjf86i3283fc79bd0cj2ide', '25463948070963903636723374419580115004912767069913171', 23); + T('b31qm7ci547jbnl9g7aoe618bd9rmd08ae3n', '4968565779272654017559601113501856102648368276823243', 28); + T('b1b5a0541ba01b', '8833755076953433', 14); + T('459037672a349796631496b5aa343b1b0436', '264580482109908454505064970141676910954', 12); + T('12', '13', 11); + T('27acbca85360b462b56c3a6992020a', '524707494029683596995243591366042', 13); + T('cq7md', '10428973', 30); + T('b205a4482e48439b767dc065d6e0d76cd6a964c', '5472159758300289441724757607228631541440203672', 15); + T('5337ac5ca7b7ee1c', '5996450942817922588', 16); + T('14350655634', '465416676', 7); + T('16m3mf6fd47ahb3f3728n', '426985809555038783456824121063', 30); + T('3ba358b358599', '490282471293894', 15); + T('8k535ee64117gi6753e43ea', '3045443598760536171170990533130', 22); + T('18c13ac02bh475', '30853119934409675', 18); + T('5063500066723494917007154667', '66234080067305105030592636313', 11); + T('186chh5mj71bk32nli72', '225231837610389033637644074', 24); + T('117148a5a0a852043b1c50a', '3593926048415359085014726', 13); + T('9', '9', 21); + T('0', '0', 21); + T('111110001111011010110111001010100111111101111001001011010101110110110011010001110010101101000011', '77050543164333814857060526915', 2); + T('25515232513310234351525133004334443', '854103611059645825566911835', 6); + T('53d6c0b8d7bc0c92538c72570292b169', '1790024541721718087301984827108484233', 14); + T('2316578141127154800332364024878378', '72770916299142794014818013970582', 9); + T('24312351554365464465465661533114621266242560401543', '677411054975350956949697408467820078793932', 7); + T('32404015430043', '45027693963', 6); + T('n5d8co3ojm57fc5olmok1nif3ion43m7bchme', '4917311114710343888452797906984336898319878490823689', 25); + T('bqxrro27abrmak0px9ooq2ns5vuh5so0r', '302670621534517112486044629162358286408048774808052', 35); + T('42hfgfolkj60fdoa', '6881729329622147179046', 26); + T('39ci8i1eihc4lec9cm763b8i3d4j0', '459022136565872107778798075253822151324', 23); + T('63c0mqkbp2r8dr7rlr7l', '1325268836989857485637303916216', 35); + T('g5tvq7jp0h1adior91e2fjqslp9io8os6o', '756966247294325777176797359454729091694026239537368', 32); + T('6a8c2f4ea19l831j8', '19490172547544158065526', 22); + T('6462041347652128580521325524', '379213761926885851181407495', 9); + T('gpnbyecz5edn8762pv', '4788313445419794110010788419', 36); + T('48cc6cc6a', '3827488090', 13); + T('64sslivyfuh', '16931440283999692', 35); + T('2102101210121000222001002102121200202210112011102011101021', '3802992314666317441798852519', 3); + T('21c5b3519', '1754309761', 13); + T('110111110010111101111000100111010010001110001111111100001101100010001101000100100100011100100011011011010111010111001001001110100001100', '37973033900975016780110288277302266862860', 2); + T('e9f4921560f07fe8d', '709589094228525375321', 17); + T('123310120101000322131120133331230033133310220323232210330303130311010333100123223300031', '10408108193832826669272437276453612756402294521510925', 4); + T('25731604', '25731604', 10); + T('g2', '514', 32); + T('223105124315354545', '40995871357025', 6); + T('101000111010110010000111111000011000001001011001111000001100001001110001101100001111001000000000010111111101110011100011011001111111110100100010001110000000101101001110100', '1913677948341929506841492066019813618520908835609204', 2); + T('1644024', '229485', 7); + T('98b0862965b3834318436470061301a3', '27754417671206367867044116818436107', 12); + T('1095204a777458309a72aa', '49018069076437376288482', 12); + T('7hke206325ih', '28203781823823961', 26); + T('ffkmcd2rq9563sy1xvqsc', '117533208066219358628225769982592', 35); + T('952', '2688', 17); + T('bm8e8138q57am0kpj8pb8plbm08c', '5244190084268927879196798208000799879232', 27); + T('1415a41cc770527309', '11386080654330629802', 13); + T('1i1eh', '254427', 19); + T('45145317829278248420231253636297540283', '45145317829278248420231253636297540283', 10); + T('2l6j1i594e0d4fijgib3e7fe8700ibdjc5glibigk', '1477333573534925171219612384777712079874272005954068612', 22); + T('282gd2f28', '90293858348', 21); + T('6c1074ha0e', '2140840789109', 19); + T('18134e39226', '887329110861', 15); + T('16471074688235670422', '16471074688235670422', 10); + T('157b2e3d04dc2d3f2c5d24471f4ea6e', '1784586140646675991730453110223858286', 16); + T('a86', '1304', 11); + T('1efcc47a12967085ad8cf3e4bd18a9d6', '41189283705768995637851264202925713878', 16); + T('1g3d785ii67i488315102d815090', '242822867207165195727104515417800180', 20); + T('121202210222010100102010211011201220121101222100020210210201020212120101012002221101', '7436650012220024757800516842466470073650', 3); + T('75lkce7kh36cjmf701', '1023850888444449444662304', 23); + T('cahdf581f8h0f3eh10523f8g4g3732dak', '25614782272742316000546588041656891750618958', 21); + T('c235rkr51obgch00s9hls25o', '52114806185494513712231850125002384', 29); + T('512450325542104132203204311205230152424404424444', '19625794458356109522992578261777179820', 6); + T('2938760b2268721900b061aa78147', '4575799291145190419537441899975', 12); + T('575g1fk6gjk', '141564983017126', 22); + T('1bnrqqhr6axy', '174253590792010726', 36); + T('1889b9fe35e07e831ee8', '115877401735749106343656', 16); + T('11', '4', 3); + T('7', '7', 11); + T('211012220220', '437343', 3); + T('9766o7p4eago037lpdf4317jiqj5b', '306860122389219927555679423284323106653767', 28); + T('22e602h65', '54675222925', 20); + T('232', '46', 4); + T('327', '463', 12); + T('2654', '1452', 8); + T('174kb3627', '50857395421', 21); + T('23330n76466p54202nfg5dnpmo5b', '339324532051327829474356208074218552333', 26); + T('1b', '35', 24); + T('8fk3617863k1ekj3i4nbl54gjih5j8d0mcc', '11064457703744790697464223530688876525906885114476', 26); + T('28d11a69l0c51033hl52d97ka58203cd5985', '230834132211031575077351661596124469754192074433', 22); + T('1hq1lyqrvs', '118773335426438', 35); + T('4h8dra5hbdhh6qoigef555994', '249026258798368156622666692897679952', 28); + T('gm', '502', 30); + T('6nbbg0v2ppw', '13803003606198230', 34); + T('o8995ejolijik9ihd6h88711k5dc3', '33771583190371089624006346925091814539678', 25); + T('4qtin436tr24bq', '78115196524110627956', 30); + T('6ns7a0jdiaoq96ol', '254868647544300369124117', 32); + T('xpawcvygn9kw0sjebn7sc69w3xv', '471734872338124510193818490984195329748111', 35); + T('11g04c02ffi1jei4fhj', '285744497211343343718359', 20); + T('3hfid1e', '557949033', 23); + T('27366', '1203018', 27); + T('410001534025040051252012542022342552143230432315', '15592777075391766081309283367976081239', 6); + T('1111101001100110010101010000001000100000101001101110110100011', '2255400303091572131', 2); + T('c928639b2d13', '429702230763951', 17); + T('1ck', '1505', 33); + T('1rg4slbg29', '37751233721469', 30); + T('113223330300320211033', '1627738310991', 4); + T('7526131ba0fe6e6d338a003af179d', '38016936118707892590533223274977181', 16); + T('7kbia0gi223ojjok8l9ho8', '1777784215960035304259119683108', 25); + T('9g339757c94f3653fb7g0', '126191630648724675191221284', 18); + T('1232330203001200013211200333021302320202121321212333231320120', '2304259321047843514901283244800400920', 4); + T('21647ibj2fg0638c34jji5jbh258h0j', '2217866954079313899427020782581575270819', 20); + T('723532980a7a6160', '30120427896650289', 11); + T('2838da9931dg46976fb7619a664', '1064566675009185862217875437188488', 18); + T('9dqonc1dohg', '7743225898096948', 31); + T('1652b10575aa9464338761', '70682923355125382861113', 12); + T('10ii6eidbd15c683666', '109597980236249948993049', 19); + T('dhdbjfc5f0kehfjl9neo9n70h9agm22', '38466966256495223900208674134248822954556238', 26); + T('7icf1', '1533673', 21); + T('e9b7a48', '166885943', 15); + T('2l1752qdn2mabgmd', '8211555811727424645412', 27); + T('5df602ce4dbge0', '120139111113169572', 18); + T('222232223001210301212101233001323033013211230301222323021321', '887451886358748243322562892954055289', 4); + T('179faejd9kk670fi99ajk0066jkadj', '299524423604818745400343490657227811143', 21); + T('43200420031713445212602476237542777011721017120532156', '402495698817091827248733349983795241261310588014', 8); + T('13csb24qhher85cfdcsl66g7s0ob5305m', '70068000321367559069425429652328969811703105193', 29); + T('bbhlbl3fj6djl87bi16ig1bkb0lbk2h6k', '104622289890616799189358030121475094962525324', 22); + T('lci64j40949l9l3ghjfe60', '2077372440260189074331803122192', 24); + T('3234121002', '6942002', 5); + T('5c3c18143a8d96ddbb3c3597550682d86aa344313d2', '8063490574133991241638155039025343935997707461868', 14); + T('110100010100001101111110100010100001100101110001100011111001010001101001100010011011001110110011000010100001001011101100001011101001011010000011001010001100', '74667765260706149423652281266282011954894090892', 2); + T('e66h2dp', '6853789541', 28); + T('i6ga265f8fhg7ci', '30050327699762851058', 20); + T('kpjn1g235bnqdt0pfqtpcm76p4d6fn1fl', '3864528859465205644913303289493194133427615572371', 30); + T('8rj60u4oi36nelvsax9eqy5iihuv3', '150573930494022755146637799121836756574031088', 35); + T('10020121120100201100102212101100211221', '487049655635708407', 3); + T('9p8cei7opdpi65n57loob4g7nbc8ckoblec2f7', '225365305306981525279174955491083242350460825335359093', 26); + T('10a75b1764057474656bb29', '592793221090149901308561', 12); + T('4anfmab64n5bl8h7lgg1ie0l4ddfg25cg4e1', '9047095202662955427862645312426846850781918243409', 24); + T('ci8i20261ji2a58h12hh08543b44gg7', '59758755425248253813800729972530250941001', 21); + T('244q5nujetw6880uoouz1lr', '36636647742989920257650194763362527', 36); + T('2f959fkeaf3o7o3', '281006925782093444199', 27); + T('2dh9c4ndacn1rl', '39101896643140342731', 30); + T('697949013', '1475458768', 11); + T('im8', '13724', 27); + T('6q6vhmd1iu0b8pqb80kvc', '8644518006985435630419253941228', 32); + T('9gjbn3t7i081aggxoosngzvxjwyvefe', '462313443934060201968693839921231382427024338122', 36); + T('1000000010111101', '32957', 2); + T('a6c29', '300855', 13); + T('9jk5', '120019', 23); + T('2958324266700a89cba7a88aba7b1483a80a845394c', '166375841507718717154199653196499305551542689961', 13); + T('8bga99e87', '146479828376', 19); + T('552c7691213c2b1d86123c1c7caa2938d5c986da9b6c4d4', '283151423101296097641534175091523701505647270269960362', 14); + T('9cbd4aha1ha92b2eg45jeb5eadff0ed4', '206784494673855421123664772006772082405864', 20); + T('1d08aio5dtk7t3ok8imm0rirb5iqsj', '62732185189647697420568057030541027413945235', 32); + T('159g201094dkhfd22bf965eb5je48ea946e84e9', '221200921967109264882569021709960008760497185134222', 21); + T('282810456027348881588a1a6844975597a10279217', '150593766383429712523815468178854618203779472', 11); + T('gkeel6a6k1ke899bc1ioh2pmn9', '10194974937056732227569538058731359834', 27); + T('1h', '42', 25); + T('1111110100011101111101100011', '265412451', 2); + T('1cl6kj1ij107ce544', '65107429951418530980464', 26); + T('570996141450414325391258602192009734881', '570996141450414325391258602192009734881', 10); + T('2011220221021021120202000120200111201121001102100222011201020212020121110102021011', '967713477488275607218048209625740279136', 3); + T('7b807441cd4ddd6b26880719b0', '1961771544630113528190880625565', 15); + T('aka6g7bm5qcpcamgncnak34grnpqn', '355563315866230083340179532894009970687679', 28); + T('3jon8', '1986425', 27); + T('11110010', '242', 2); + T('1ea4cb38dc109662aff507', '37045991477844459182355719', 16); + T('a5202753805b262552a29a36', '69100527198804395338546314', 12); + T('h758blfokoe2h1f6elgpdl6lb3je', '2765358558144112774392012587127708191216', 26); + T('rvracembjfb0j0gdqetvns80gwmfi7ocn', '109408928137522865486039210206106484286615208207327', 33); + T('c655c454468g2f2d191448bc0', '4199457544137003090436194808585', 17); + T('16166f015f2938', '6217115507829048', 16); + T('3a439d31a60970875bb2', '22327746714916052427152', 14); + T('8f2149o2099e21dpbomf89sl2s8', '896954776923762691198643934470088411598', 29); + T('2732ck508j4khfk70b9hbi1i0g51agk3kh', '100584319142432419662581113685907275800401254', 21); + T('2293hbi1c0ibj8b04eb0a8e306363k', '467614135020365754837471336728850191984', 21); + T('1001111110110111001001000000111011110010101101011001000011110110000001000000001101110010100000110111011000101111000100101111111001100001001100011111010100101100100', '7294509680489473516157489095568130945736908974436', 2); + T('3pfr2ip7jnn26sdh0c7o5pp', '577698647900420975141535859962895', 29); + T('a71022623aa8568a56574a648a6393129a75', '29914427537161064808542804258585866020', 11); + T('1txea4tl4ioma4xhclq9hd91tcga9b', '1113049897936374448769342426122784424634168576', 35); + T('12cjj1kh53kg5d31b8l6da', '17344044780654272896096456024', 22); + T('6338438487154824328460106772453870408', '143776716058614716325880611403859603', 9); + T('432001140311342041002012043', '6974394432902375898', 5); + T('4a6', '1332', 17); + T('1659648793588259334905356155006008342186329512002888', '1659648793588259334905356155006008342186329512002888', 10); + T('4ff72', '2101868', 26); + T('5f550f99', '1599410073', 16); + T('111203231301110320313223212301010312302200122013100020102300232030232302031030313233100', '8065823905840410320894641643979945858160602700282832', 4); + T('17cb282a436a703632a81c96c82a23b48bc5327a9857c3301', '475704029530481315157224161906654754528942922274574893', 13); + T('a4c3', '222995', 28); + T('163l03ajcb0ad40c442k90j0nc', '40227429932334134086127053002343476', 24); + T('5710182695a29304279467503339a7a18', '11918193967216532512029301640127416', 11); + T('111101001100101010011001111111100101100011110011110', '2153208033232798', 2); + T('171d86581e06acd30671393', '110366637375726363319446063', 15); + T('4309b', '88247', 12); + T('12g769bj187gg86h8hf973j0a42gjd', '61252434461027682447268959845152662793', 20); + T('1a12b67c34d57d7b7ab7bac0', '8069232682011269556707244736', 16); + T('101111100110101010011111110100000001110001010101110001000001101101101011111010100110011011011', '7366381587271251372942380251', 2); + T('782713006615886387770478158878371218820625', '10540317444948349549974758397221264757353', 9); + T('er7m00fe4h1a98apn47rp7ngqof', '633071733739943048886072406486704224591', 28); + T('5fba', '53161', 21); + T('1', '1', 25); + T('373a2b3ab965aab293', '8009398354430311887', 12); + T('10', '20', 20); + T('1430', '240', 5); + T('74c71', '210835', 13); + T('9xsfamo', '21634167696', 36); + T('188222373080761752602365676404381071', '4983141020490008650128344377943701', 9); + T('jb2e96lje1ha', '18563807355127419', 23); + T('2cahf1g8g954b14e5894eg015bcb7g', '6829065184980377404323550915244107882', 18); + T('11100', '28', 2); + T('113411024302423333024433100040', '252194224967802628145', 5); + T('f180a79f03c93c97fb35ggeb08', '87059322139486573429172839940859', 17); + T('120efdk4bgb0262hkg872i6a', '8204646330520455780142328716598', 22); + T('6256357393600602316105463449174016233346', '6256357393600602316105463449174016233346', 10); + T('3212301333200210131012', '15859158501190', 4); + T('18c1109b859b3213a88455', '1912876166082408380555931', 14); + T('3msgodhb0', '3189281360714', 31); + T('10110022202212111122222212200112022000', '518798912531859027', 3); + T('1980a00544620cdd3422c116ddc9c2cac75ba9675c261', '452854399467234314582837732095548314825458988323821', 14); + T('22120310223131300233301203123010232321121331222211100311121300112121221200320333', '948867252058170771971968589971969532899273084479', 4); + T('8610336237073', '8610336237073', 10); + T('1gn4sel36jcbqf58rhhhgclt8j36nht4q7mok', '752672174999009092630489286382303645479407654345444956', 31); + T('1a6814', '671454', 13); + T('2121004240121331213033020403240303241143321444022223', '1016205781946557654652895245042954688', 5); + T('3krgqepgut6dd9os0', '18224259273870124042615005', 35); + T('25535776478032142616588245811660254', '729334501710489629337454615331293', 9); + T('6k0b066cpgf2p21bb9505ee', '91199647570792812205739943564766', 26); + T('ap7kgeh2dn7i6388b3fcl', '218672926024286079336604110609', 26); + T('ce4', '6120', 22); + T('16a256605b0061a6', '24202414333303182', 12); + T('1212102230320001', '1716178433', 4); + T('4q1vkp65a7al9pk0', '287088200068338986362716', 33); + T('1e', '41', 27); + T('55510210244455351232000220243023431514140253311004235431353500150330', '81776145043668260223503433020247653436287857614658350', 6); + T('130305050324253103313502041022443', '12053790958929773590572219', 6); + T('83hap5gtvwyl7599', '1173538126887991015344699', 35); + T('12881398792329044007438159548', '12881398792329044007438159548', 10); + T('23h7ffhgeajdlfi07ha92fdcde28', '3822210589969585209003310564499412420', 22); + T('1j011g1ocb5pge5n73n340l40m', '1036339108033766409452608824145334557', 27); + T('211286b927780106249b51734e81a10806cb6a37', '15272908194563540988310670174159872284243270052', 15); + T('12665330245536441266321151203103102661414103262235', '366872199782353523541963434688475998858925', 7); + T('505432a457580', '44912120764272', 12); + T('p2pcjfaa9kh1d7', '101755664535230532349', 27); + T('1ca17a18211', '273370087134', 13); + T('1a6eki24el0nmj9gfb', '415305377140894690392947', 24); + T('3311124011032202103222400434004110041', '53121754075159082263738146', 5); + T('757575478216a0369101a9a', '611877203654087245090193', 11); + T('5hk707tas86j7lgepasea3a856lf', '102938253425144386832441058642305902207629', 31); + T('0', '0', 9); + T('23310db646fa85615a6d3a159621607b', '46777680511357499186246331786523140219', 16); + T('330da4bd37ad5178d5d1007da898453212c6742b9407d', '865753046927137144605560690484335314112623722543359', 14); + T('6jhid8iejf0b921d642d', '36673075507149093253329653', 20); + T('3e', '68', 18); + T('df', '223', 16); + T('eca7fb1ac1f4gd0a485', '578348126662152188101397', 18); + T('201222022102021122110002120000202022001010211011001210111020020222102120001202211101111000212202021022', '3431471172203461653218475265244817680631426808448', 3); + T('33cb8694e7a24d9d05805', '1082956090598761200374930', 15); + T('ca', '370', 30); + T('8897a2162a5266', '16689805406089296', 15); + T('2290daiad16472c0fga333889736g5f5j6c6i9', '2917258149546117962537789858395697836179581858769', 20); + T('47451060028002207126815661', '3470450188748283358865308', 9); + T('114r', '28047', 30); + T('57ba054gpg66el', '13115553604473529321', 26); + T('116214463211556364653562325626235034462421545060660', '2287347864835163237256472200746189442885120', 7); + T('1154000440000511455342052110220205054114425', '637191928874193961970691931711985', 6); + T('27', '47', 20); + T('22020101201201202211222101010002200212102011', '901277883406744447207', 3); + T('2798165243533191120056', '2798165243533191120056', 10); + T('9dh1m6jk4486fl7ie', '58857822718096078072226', 23); + T('14ik9ll0dgkee1ck7c0a4f313991adch88eb', '117891995927485506019012046581940014028686934255', 22); + T('28718dncmjreg', '808197342478474568', 29); + T('175acc70bc5338cc6b', '46636214136757771663', 14); + T('46puu0tjk81b5ksa2oht9e1fm135', '78008186942992687166968757565746709077308', 31); + T('26q46ph98mcbflecrd', '8982841934283065478848833', 28); + T('7', '7', 34); + T('sn7to1hmp60mn76nol3cqlcqbr8e20rj95eq', '1375725743077776547871273369745579120905697393330394586', 32); + T('454k6j5ifbe412jc5jah10b488', '4828430285363354503415653711937102', 21); + T('81ptfnrpjslw0v9ghq56q1g', '75036895810433018445880325692861026', 35); + T('10011100111001101100', '642668', 2); + T('377683501888313149', '377683501888313149', 10); + T('vwlugpjwq79g6outhe5ppgq8bmejfod2k', '325037691298489231093571012113559335342031712624284', 34); + T('1f000932fa1ca86508eaafa96ab453c29', '659300071197325571806191735253210840105', 16); + T('68242gcbe2euld2s1apcietj94k', '3732484254314395839062129559607170449956', 31); + T('120001333132124003241232313444414012433343014310022304413224440202344143', '59315978615169369703579038472917980021927481293673', 5); + T('2d31429c9b278c5cg9i8aj4fa9ha8fa7379', '456580926576690928879270905384043456561657349', 20); + T('a9803495569a337879a337a88369ab60aa4a', '638259518594740470682480348997343560026', 12); + T('133534443423300243223404305511241424032531131434023033530', '60692847352782957146725953144004923108889662', 6); + T('85ehgbd', '390694638', 19); + T('3j5', '2029', 23); + T('1012373453302574', '35905333986684', 8); + T('1dhke7dqoqf', '440416062149351', 28); + T('5hkpg', '5144063', 31); + T('35ec5ce3922a7b1370', '994709174014332048240', 16); + T('j3s32kabnnsgbnsmf89bgh92gndas64407', '34754001064750863291622215672807282090764762457400', 29); + T('61dd8092382749b078370bb97dad5821322187', '15671002482405137501514236252535037151239851', 14); + T('4hgwcua9d', '12653415422833', 36); + T('30201301530031554', '8623342543966', 6); + T('54a85400285541985', '250548156011412583', 11); + T('i0o', '11274', 25); + T('11ah4c5odl6', '100812863664906', 25); + T('2b1ebn61', '80579255489', 32); + T('102052273401065267741403121062144257736511671', '5621698349102047273384509211278621447097', 8); + T('12m5m2g24g9ha', '40974227046315490', 24); + T('b0316fi0fi12cc2edfgh666f4cie4h7717', '17401925878966433671042194733848449150168289', 19); + T('1523011035032422014120125032023343524443321', '915746679762856704907142877377473', 6); + T('e77b7374944b', '254517404013643', 16); + T('c1h6s949befmc', '4265231138793771068', 29); + T('8gn5neeg3j9kanelcml', '60767643491277312404351781', 24); + T('1d0f1645dc1656b1174ce08b54fe4e40d8a45a3', '10368573985886829358840965263279576467697714595', 16); + T('31b999', '787653', 12); + T('59lp636iq0uipac40', '16849438009500138420303704', 34); + T('1', '1', 25); + T('20py9t', '106157619', 35); + T('1nbp5hb6mhkcbl0jbej24mp2f7ie6705bn', '94059918813328332413354055079765980054543365401', 26); + T('372828313408429453a89234335705aa93', '84982956234483079772353825488568807', 11); + T('1', '1', 34); + T('597599783196a239116345493271610aa304a', '181780923673444526658447231965398995472', 11); + T('jah2d9f35eecehkhaig50k058f32dh34i17deh8', '3425329058012479254389346018958616073008108535858638', 21); + T('3fkc5ekh02fl5l7504lf4kjch', '615443274731752854770742839505669', 22); + T('c09g66ff3g4a', '66781941358533058', 27); + T('8kjcadt', '7690526901', 31); + T('216307272261', '68706452503', 9); + T('132122213122323312233100211230220310021', '143634905030561828605193', 4); + T('4', '4', 30); + T('2ih8d4', '9419464', 20); + T('5cbru2esldn7bi3r11s3slklg7', '103847118190398120797912171490899906888', 31); + T('2756753281255824113730120138022846228121005758023353', '13214305490430474201156158495454841847969048656749', 9); + T('535g', '25533', 17); + T('cfdjhdbh42', '6545912574882', 20); + T('5bae9d8572781e', '117534573740411384', 18); + T('32a7c1783c7795016594977106', '22697848458351903229013168476', 13); + T('5j72cag18jf7hd2438hdk4d8gebh872b1jh6i', '2356586866027928758507194750053263942297777670070', 21); + T('29a8703347585354205108131051123', '50730942867273729841510907088926', 11); + T('202', '74', 6); + T('1r6n20omm758binpfhhg6o', '4846670585161045993229294323840', 28); + T('302l1h5k25mengegj12ig4j', '6958109965429248922848549113971', 24); + T('1i7ctk2rx8mw', '107795645888833828', 34); + T('dma1', '408736', 31); + T('ii27k020bh', '71425244172167', 25); + T('3bh1h47d78cb647h695', '144161934131410544716151', 18); + T('12l91995c6pb02ka9fojp8qr', '10264759826056914843582409364273007', 30); + T('73kbijcfakakhjge0je9', '95249983769065885922897793', 21); + T('231256124330320211253061220356', '7912150971698220450062992', 7); + T('63ee15b1600gd1e7c1aa076ad2ba7cg338e2g5b', '355952630936226662025856351876918476512022045757', 17); + T('2scs3i0nr8k2j8htv02264fgq22jike5', '131881187118274767764360147174413433678100779461', 32); + T('79g87d5ba26if7f9hfb7495f9beb', '252650784623083713180577012193606464', 19); + T('2446336161312425410360135603630002111211452144', '285926215543115581336289477929436470821', 7); + T('1014', '134', 5); + T('a7eg2ih4eg8fg', '23039629802162005', 19); + T('fjf1fc86n391bb3fad3ja', '143555586534627347785306846110', 25); + T('53ee0k686kk9p0adk24', '151433087203562860042013424', 26); + T('3gde516ce', '43324547990', 18); + T('245a76562671a079a31367a6677264a795a6a253aa3a27196036', '311589292474793017656303618319953525081276226845816579', 11); + T('179aaa005c10bacc03', '13811640779442966125', 13); + T('5', '5', 22); + T('3e0d8607cegf52025ceg72fh2f1e', '29502535901784316100206946117442716', 18); + T('bdc872482aacdb6b3878488d2bb47b4', '290245307604746958781826626029678378', 14); + T('1022imeahr', '60825976875029', 34); + T('231100121114223332230343030211204244131433', '120421321606190578932235536493', 5); + T('cebsni1lh28p1a0nle3a46gnso5', '7431258037694141924732501459014099990268', 31); + T('a90d7361iba901a3jlf9', '333807389054166765483570559', 22); + T('a4725g0b0b2', '20684084949700', 17); + T('p402062lc63b2o0p8ggbl3c', '777160257890411909864572085822448', 27); + T('2303355462020425243403060', '11247570692927310923312', 8); + T('2dbdh7fd0l32j3a82ba3licjb31i4f07f9509', '5554907043046798505631459409749348180767609870309', 22); + T('4hlg2321bc13197g5', '204342990490417640852281', 26); + T('236571440705332620722731730', '749616319651624136717272', 8); + T('55bc38d17d8bb55131574b20616870b', '131116903380881919543215522786677223', 14); + T('1634023045115006652225404137572537300225444451056550315', '10550640276770088084077930237138652035960136192205', 8); + T('7898', '7898', 10); + T('9t', '299', 30); + T('10004226456290899026384452917652101828', '10004226456290899026384452917652101828', 10); + T('10896b75jlghjj5ac303bee41', '168126786589614868323001367557489', 22); + T('a', '10', 20); + T('23456bb', '6811055', 12); + T('ef557cf221b976840f876d6fb8f40', '77668303327151794801661259781214016', 16); + T('74e7kfgi63dkjcf0g709hb342', '390828104573594513794256813228258', 21); + T('5206807007436090535494441589318273345', '5206807007436090535494441589318273345', 10); + T('d50ecdd40a74g6b26d', '10999913536169400117845', 17); + T('aaom96hgek17f1', '568329567265580151340', 33); + T('2h72if30l24m1jbhijh', '8929830333919554320478685', 23); + T('28d312047jhhp9l6ad6bdec81bjgoce990', '115062764810939925699862575664608474748105279006', 26); + T('65360803637634a9a320113a990530426', '13689954501985913625610550156362967', 11); + T('26c2a5eie22a', '477248367792850', 20); + T('11d071e8c8ed7f60c4fce894fa20a754', '23679184030321848843326203235370313556', 16); + T('170101df', '1223323850', 19); + T('5al863jgic19c4adgjrhelrc3k20i5bflhrk', '2408022757613879912229341990414136203114403118805720', 28); + T('72ba45fi27d44i7831a4732di2i271agi047abfd61', '191613909069100350797661478313614413491069036280929215', 19); + T('6304300645', '259937389', 7); + T('9uadt2ms0g6dfj57d0keiomj6', '56331308674978903283699628034003500420', 34); + T('616h5k6dfj11d5hc2iibedfbiga248623eic', '114913060108619059717914037645723081826728710552', 21); + T('151e2dij79o8m161hj57pbpl638jk9jplfc1j', '1038147489563282380151219519342367976127837619996133', 26); + T('805akctjlb4cc8aefu61', '317118938284714353937988712641', 32); + T('343', '178', 7); + T('7cee134a1dab3d5cff44b067e971', '2533881063347006744885016016710001', 16); + T('10100010111000011011100101000111000010110010000101111001111001111011101110110110100101001110100100111010101010111100100001001110110100100100100', '7094500064780213519639611108740313788148004', 2); + T('9j48ed9o4n15benq02k1mnd4jpphcmp57m', '1668040714992898949399742204953861377855573157899', 27); + T('111110111101010100110000011010010100100111110001111001101110110001011110001111011000011001000100110101101100001010000011000001000111010100', '342777004104073921541803082899350493073876', 2); + T('2aps9b7ceb3348dj98d64qdn67l', '250116512555563755653432147366865700291', 29); + T('2fc6363ce8caa6f2f7d7dc022c', '3785067239745545603746923020844', 16); + T('11100011110111111101111100110111111000010011000000101100001100000100000011111110011001110100000111001011111111010110100111111011010101110011011011101000', '5081771157073840975382845753680003415619876584', 2); + T('5bddc1', '35425291', 23); + T('2s9ne5s9i6tk5rl1ep', '111588862691610935453976025', 32); + T('21012001212121112221011011010110122121021212011200201012212011200012100001110220010120111001100210202', '1234802724654414853946459041807906768113064412381', 3); + T('3bf5488fde2e', '65924670414382', 16); + T('u3pd7sn71e2e7c99642dxo', '4362855934107800076687165630732286', 34); + T('242104344320311141301411342043231022024424', '131400847482479502782843939364', 5); + T('141829b5162377b1056773629bb7a64073631', '953369605617258980018209252546165804741', 12); + T('12bedk90926m62hc41076m84meda13mkkbf', '93314399078008522916395011917110262331060012567', 24); + T('54c1fc9g96ageg9aibb005a5904e933ebea', '157502651794975274233660048577504724325147521', 19); + T('133431b367b4a8b8979372b4164197204715a31079a71268369', '1158759359278975321088119115465152282863498420368213505', 12); + T('13b', '765', 26); + T('2ck823dg0eah37k2c8416i78850c901d3jei5k', '21878942278821174795945388165121844819343606060160', 21); + T('8h63bi8906620568a8528f8f', '22734498086376568954341159917064', 21); + T('3011203103330203200111103022312', '3558775854728557238', 4); + T('2114345430422321530520332432005304354143001413014543014', '2321243578574069612613894494714592689697586', 6); + T('313c41070cb56276a', '2062977410540325354', 13); + T('226062710577641', '10314752130977', 8); + T('eq', '404', 27); + T('1rrbem3ecq3n67boi65q5', '175399218720599627675357116077', 28); + T('9005452', '26883134', 12); + T('48lgbngap7dk71io03', '4920463358341388158907427', 26); + T('12b924341033230434a810', '302187810594058435801794', 13); + T('103522531132242513144124530124313441213454020315521503313101452132405', '90987503713365214158548349492616461122244894478035413', 6); + T('477895231156911238285', '477895231156911238285', 10); + T('1000212202022010101222211220102100022002001020110010201210211000120121011201111012121202220002221121111222120', '3491562614859609420313071183474817621330068508271172', 3); + T('28qrfjm8om073jm9jr3', '1598066573075108614197842742', 31); + T('glof4tcf9be30bkk12huv', '21144602101411302851236097771487', 32); + T('12234515554420440450423405522354121252513251541023431322250340003', '89091283215408342578048636526866275587072931600611', 6); + T('293a2ac1719c62b6b4139', '51592970952982353881099', 13); + T('63834852656662556175641051453321158', '1790303853240101318026187599939340', 9); + T('32534135313343133422341503303202021011402445221134014', '101535298750522938072060693442171335418426', 6); + T('2112212120112111200100011112212210202021000111012002022220001202002010000021100000022000001120111', '16230306822675488621342411759833456926468945274', 3); + T('1a2d62jmlkaoj399e', '32690531722536862943364', 25); + T('22065453526323025411333336261643566522', '42796341889415021094527192979898', 7); + T('104167430465731064510563526155446356705', '22143034232047918382504353520541125', 8); + T('5j3d7b3oppg6kc3mn2744ijmndkpe673k', '36321347509392283793093324752977729120040144694', 27); + T('120414231214540521150224323551320', '10769598675773992644375360', 6); + T('1bi9fehbj9e547c49j7a06jg7560g8765e', '5250966747722630510598487707449375086663043078', 24); + T('82twddpskk881uha', '758314750152574060793292', 34); + T('d52llnno6g3gh4gkdim8rms5ak', '111585313532002326992087587176446680820', 30); + T('qkbqpb3i9tuggok45k1auq7', '17209839140980123276676359657614507', 31); + T('2d8d0', '147120', 15); + T('1a549702802504ab20a90371a4a264007b8490821a', '329963588381537567503898209643604670682080054', 12); + T('1110101100001100111010010101011010001101111001100101110110011101111101110111000011101001010011110110000100011010011001001100100010111', '9997939815383461009512050917690963695895', 2); + T('222310200', '175392', 4); + T('amiik9pb3', '5393051815336', 29); + T('5661a43808fca8b4914', '25495292807490092878100', 16); + T('1bf28069b1be09e531b503126', '576881162454758851939576929685', 17); + T('1ab6kaha802h2babna20o2d50fi8lhae', '30748760641046756957353468296768955257370264', 25); + T('r6ngp7gp', '469799289293', 29); + T('17apm6p9a7fbhl9el', '56058811903597689734205', 26); + T('25ad8a6e4382e566', '2714978356557964646', 16); + T('52hmf81bke60a1ke52184jlaafg612kibcb', '101881994750582739020029670929688842788838198590', 23); + T('ehi4b', '4134238', 23); + T('1315442501021345443411512242201232334120442122534143311114044131454', '3544848832557588737143248118483924586575113144263194', 6); + T('12250151105015533254352133311311334000', '87400952959480256128641322608', 6); + T('10202202221201002000012011112100102011112212101120000101', '219194364044464644628553410', 3); + T('3a3', '1403', 20); + T('4m3gia86cajgn0gdgi', '5500811188268590953027430', 26); + T('6w3nih08nq', '323632265894876', 33); + T('132720259751334396422683662607336', '132720259751334396422683662607336', 10); + T('efh6fkbppc', '111175184462268', 27); + T('n3hh8ie5go912kd01ecbooigbnobii22p2d3c', '78229552724209774917834081784752324809901456980962338', 27); + T('1a6060e36b871e4936cabc14e31', '6414250388216682298310005961071', 15); + T('8i4emgkdbf89m293dafa7j3c6d5', '6728193838600532021344689195469391549', 24); + T('2014393794498', '2014393794498', 10); + T('2119tt7n0227mjn5m9q74s8in35rh1', '36121164187835391842857679215651365416073949', 31); + T('i194c24a44i6f4a2fgf3', '35766342361937111855098852', 19); + T('51021d6b3743de66d02c23c15ce023cc49b9c83c8b3eb', '28365584323066293841735710762592894605506406026618021', 15); + T('26uhc4w2e80buav4ek5lr5lrhal2p', '82594494815054016601080486021223708523042353', 36); + T('222014311425534015230513153023430030545215', '191709426580611202017069517126955', 6); + T('6fl2ghallhed', '3929812949532461', 22); + T('7a337a', '1278210', 11); + T('10001010010011111111100001110010110100110011101', '76038037662109', 2); + T('fjk05ee4qc7djqa6hdca4l17bl8ffhe2', '11426461588103614891586213643420335678694578906', 28); + T('1i82b85b56f04bii7f34d60515bee4b38d0e965334', '52886360111107438155328456805662247358206078055736978', 19); + T('163a89480a79713846076141827', '1881124520769713055736991120', 11); + T('8f2g', '331856', 34); + T('33f49h', '7923777', 19); + T('pmeea2d7919bb977n72ei4', '29569453750412076045125686518769', 27); + T('10ik4q8i53n162bregsc29mt9cnnr5l', '561304419042503423943841208615348170365516275', 31); + T('1mslct8ed9fnbton', '101475049402356215994266', 33); + T('30616161545253435002', '35655471572473580', 7); + T('6thgnei47c630i44', '163171243313361202379251', 31); + T('a9i5h2mm08ijmhh7i', '63937387916914384871933', 23); + T('35f3oh1m6c', '12299557451412', 25); + T('43906e3351853cb2ad062c9315091712290', '367854393737791193668837913203410675507856', 16); + T('210320', '2360', 4); + T('1f03jb6375155cde2h3cb0a7c2e08516', '37591642929944359779790325970114732866026', 20); + T('1101000011101001000100110101000110011011110000001000010010000011111000010000111011101001000010011111010011111111011111101101101110110110001011010111000000100001001000', '76330741559420840213970134181579220885370404866120', 2); + T('723bbt5iw69j', '681623175196640934', 35); + T('1111020210221212120011001102022021200002101012202000012212121201012121211021212021112002222221101', '9485666611553640815200275025119640319945611036', 3); + T('e9230432g1a379f7', '41610888623244319513', 17); + T('i4d5e3kpdlpfain4qip0', '28521809758740110400245059650', 27); + T('5ep9dndi8d0s08qk5p7recji9', '690128544843296060408933983940765539', 29); + T('bee89262200de8b67aba', '265978570932745965667300', 15); + T('4276ibbd1hf8h', '9131409870722716', 19); + T('85hp63929kfdcbgrbpl6i2c6bf55ni9nnk6', '130996974800003436075520961172392638886635381034470', 28); + T('474', '2476', 24); + T('2631ab3225463601659691', '116022131993562424814989', 12); + T('10525030898513855313', '10525030898513855313', 10); + T('3h7k4mqi6nd5r605gp7qjbik1', '450084426424182428475145576797678729', 29); + T('33fd9j1dlnk497kdn8c0n4bnp5c', '19319964977974884787425260629106620314', 26); + T('1426c7880438b', '30816340281062', 13); + T('64321023153', '1875330978', 7); + T('25', '23', 9); + T('hm351b6lb7je8mlfd5g68off2', '63540723667510583038007846985931627', 25); + T('klk6ek', '108208208', 22); + T('208d919616a4ifc5h4765ebj38ji100778i', '347322272727940675644219270315862525504058978', 20); + T('cpcunfpgqlk473drd1o4so4a76606', '7345383461143882582651212119039482107238312', 31); + T('1pih4ojmpcnu704kojsv72ab6i', '162908784779725387991102787318550729815', 33); + T('360474703465644142142614426374633517336173745433164557017', '1406659725135506145446652465678360390928078042488335', 8); + T('10snsh0giu9p7h69iri88lfng74bb', '7799390119107220662097119983075788706149993', 34); + T('2d4e3gbg41s2pl85qbpadg6', '365226006635397229971610827736500', 29); + T('16ek4lh6ikh6', '761689572308220', 22); + T('8niepouv', '300193473503', 32); + T('101110101011111101011000011101001100011100000100001000110011101011011101110001101110110011010110010111100', '29591313602933764036329127652540', 2); + T('7m7phem4rh16ri', '283899653498709515122', 32); + T('ecd7559017ec', '260409597630444', 16); + T('baccfh26e6', '2299936728858', 18); + T('812659a6b', '6600640018', 13); + T('3eg', '1365', 19); + T('57i652ea9a5ki2929ajdjigjg', '290822038162647483611639195114581', 21); + T('1mm6spj0adu7lutd63hru3578hqs92gnj94s3', '846779105368022234729976221876987821217467278988194056', 31); + T('1077226367', '150809847', 8); + T('363ci0ha5g0b2cafedh474d717', '309571283776743389617828368758327', 19); + T('j3ki90fhj0am3dibmf513fl', '17403192502310050592752764662905', 23); + T('57', '107', 20); + T('103203234141240404420403444124340102400144443233202011123100014', '24657740989792007884797847294801892590440634', 5); + T('2o81l8eh8bnimmbe3kff0snig', '15449657193898916995922777414678363600', 34); + T('132220114253153453325114041000542535224210310041312131', '273473331059592249838738470025686999579223', 6); + T('3311431340103430231230130014102', '3404424300858526016777', 5); + T('4144044111132405001404032300314542302355012031251140414404341351', '45361153961682006879724274980338129551748231408067', 6); + T('jog1df881f7fj1', '203639325446012074046', 29); + T('14lbk76fofm7o02j2g5cn3f91a', '106080117489697708196077914532661910', 25); + T('13bm05fedmkkj3cmih811g', '45512227946855270778013305435', 23); + T('5g8cgdppge8j49f1695ifanl2oh1l', '23420870779452170989646779263011153019603', 26); + T('6rod3d4k0l0mic61n9', '50510545435421981840252334', 29); + T('0', '0', 31); + T('5fq0nnj67eo9f767cih6', '8778527137266071484312465711', 27); + T('3fhn5bl869423a69717c65m1eif50iho9j0bka', '19210103805642147226446252712767630434515948337507385', 25); + T('269216', '637938', 12); + T('5docn114l0a7bk2', '207097343626957148002', 25); + T('didc6c0k28hk1551k9j6j0a547lk6ab', '259424451571890813907422054130537742940815', 22); + T('7663148312338aa823201a0833aa4111a315026533478147a', '737078060626686169073460661351622551458807003364061', 11); + T('f4k60afkkjh3jj8kici99jcf4l', '168030591422000297543312682719724026', 23); + T('1tuk1gnk98sakdrj', '268546796319568703321264', 35); + T('2fe5ec45gff89', '1708242462795110', 17); + T('17khpqq2cba0034d4711c0n0qlk', '21146626764499735093141819532482917428', 27); + T('54g9ge896014bc067c180', '197583741379071034909670273', 19); + T('9bpp49hg05lgjpjfed6', '549106762305328162669533939', 27); + T('ep0i2ceehf0hycozofuprj7c69mw', '15393314250847454087963951962903836882005576', 36); + T('dkeko5igsti69grhta', '308044223476306846565544919', 31); + T('533412700560147364151506123351553042070455067164', '15136684942816823221295501833940390148075124', 8); + T('2dg4d457f', '100451031759', 21); + T('de6ah1j792i6h94801j2i5667d91ch49h7h82aa4', '50429457718111652003697844375837041689243661530621284', 21); + T('1c2l72df1bi98qi371hk208a31qjq', '125466201932627525943031559221363343701027', 29); + T('977gba19e', '1417885313364', 25); + T('140043111034404144201210434', '2693295130467600744', 5); + T('g0a2', '390516', 29); + T('2200230010311333101333233323021231023133021203102', '198922953943240318378080770258', 4); + T('6353066873101558127578076017130160508', '144165800189980848048554063340548054', 9); + T('21242641202566034126363025555154566411334600010060002214520311', '7811306433748906294071935652319422095601397419580172', 7); + T('2jgbbv6et', '7166652508469', 36); + T('gi1cl', '6532196', 25); + T('5mpmf5l3qnn0d', '13529230278332772833', 34); + T('15', '12', 7); + T('4on8fqz2b7qt38fa2kidf3pd49fmawxwl', '296723553761811447810148760526142314377887578064293', 36); + T('2232314414020324203112114402403134412320', '4622837608422402490924529085', 5); + T('6rhkhhq4g0k6221s46riimbki', '1954313924165907007256835789755584518', 30); + T('tis', '28455', 31); + T('843220348618317110', '141498156522774510', 9); + T('4rdmf54o561n', '41317387029108563', 28); + T('1719c2acb576a7ac38b848daa63bb880', '511177631774649682452485037162895944', 14); + T('11', '10', 9); + T('d31tvva6q2', '460761943317314', 32); + T('110011101001000110010011100', '108301468', 2); + T('1372349637259ca9562', '143180187315524159049', 13); + T('659717282256311982263695312406804638295363772323', '659717282256311982263695312406804638295363772323', 10); + T('66255904a3319526575b98abb5639106a66a7', '4619304232886119691354791167430461349471', 12); + T('fa2d', '124053', 20); + T('18au', '37819', 31); + T('1fe9o', '955188', 28); + T('2d719808e11hia0i3', '1748293226855801360363', 20); + T('34b782264683b4c8c03b489972105c', '680443750818396200684733855097238', 13); + T('313513101344552064046222545523160040', '1219516865836938913640561312952', 7); + T('l861', '227613', 22); + T('1011102020222', '618380', 3); + T('37q70clb5agn865ckd1862352', '74237408841777670888732000080865424', 27); + T('381n0od6glk1nkho2', '77371357752513446808102', 25); + T('393b9b61ad34', '62928172723508', 16); + T('96boudmwjku', '33547764777497886', 36); + T('b772g42e1e937i9e9hfeaa8fj6f2a', '119431034908791666035134911878398548328', 21); + T('23340', '6006', 7); + T('26', '34', 14); + T('ia8i4el', '7121667009', 27); + T('2b', '37', 13); + T('10111010011000101111000011000000111000011100011010000010011000011101011011111000001100000001110001', '230735293932368005478672810097', 2); + T('3eulm73dn0dlbv85fq0a1kww9fevjgg', '12403336167562412385040944567150574800575129761', 33); + T('837812', '1342629', 11); + T('234122624231456421160102414510144', '2776670000065408919554607368', 7); + T('1333430001421122252314350034330122331524', '3566212756079222889777237710956', 6); + T('u6g7vu3quql9i75qo8012b10j83uc8x', '633618464174594585664731042520999309975445212513', 35); + T('927s1xbugpdet7cf0ivndfw71d0eh3d0q', '92198010959092081267985643765193993525052372840374', 34); + T('720661003a44b8782a377b7', '22986456123373619033935096', 13); + T('1ch1g38dhb8a9220c2aekc2k6jc4166b33edi', '640864053337562236398014189720034411222966567738', 21); + T('3d5921bbba07fi6fi95778ig43d98f0fdjd', '629408214644536101232564875177207640880125593', 20); + T('3ad4d290b374idhb579052e1eed452c4b40c65ceda', '95656564169281584571909173688226500498143045385593636', 19); + T('799c83346777193da55152bb3a313d158d99845663719', '2068949030146458959617219570382689988916278523145339', 14); + T('1355453240562410203531031534466', '34872452909171789038452198', 7); + T('1201320221113011020033320121013312322003023301320020000213322012000202003022233201', '8941201919917841907198878463588663584033560374241', 4); + T('9438b8aac2c05d97bd296538aba44737780930467d', '911864476827779974279651792691116485290689311431', 14); + T('14557ca16860c7508', '891547425836696533', 13); + T('2d661398', '494661068', 15); + T('64ea975079b06c4e5832714dd20d', '359755626933367859228607184583713', 15); + T('hd7o', '383596', 28); + T('dfneaok4lo7eltlm3keflhmnj5', '114604998140550560800450290968639685275', 30); + T('2quqi6v5ip', '130702437007387', 33); + T('0', '0', 24); + T('40310301140342410444003411000420304041021141232031002220022040432', '2238323181401796966396578744731682312617377617', 5); + T('31b7ebb7e8b136deb2b30b4593ad1a775e7', '270692937955729861614382230692061625415143', 16); + T('7cf6f4d44ihi7i', '625733239311823358', 20); + T('117295c2222276a10451625946c486941c2312b197c874', '150143930723763569187444310649172754803478411214564', 13); + T('1331022023133202030010033121310211001332', '591046930327775686578302', 4); + T('101110001011101011001000111000101100110110001010110111110010110111000101000010110100000010010011101000111001010010011011010', '7673368527850305306860702856736711898', 2); + T('1qzxuq3h8f4p1nox5tv21vi3k51', '50920381745468843583132978679805532194485', 36); + T('a999b7a41393a14a9a5b312', '5972349927337564992006398', 12); + T('31c49f4d6a14d5a60e3be92b6c7d09a28ef733', '1109864730568327689119301182815368410691467059', 16); + T('bkn4e', '6256400', 27); + T('37llr8al5bkq2885eq0qjl98f6aq56', '3042030791816242326398464933034496584602546', 28); + T('0', '0', 5); + T('98684568311394652b149c525bb2b8b7870c', '125020666101961535355843525380489345420216', 14); + T('7jih', '63977', 20); + T('56dd88a', '341387370', 20); + T('n7p5qd', '400694517', 28); + T('5', '5', 7); + T('5kte56h40thm99oi9ei35', '7166982777711639280635189086309', 32); + T('871b919770510408845b20a20', '683441136014615003034368952', 12); + T('47321211337', '5289349855', 8); + T('33', '27', 8); + T('671dg', '536043', 17); + T('1098970497529a1105663963204529a4366270', '367599383800156596794902828804760154380', 11); + T('j1gk', '418340', 28); + T('60163523202015310203260406350643620424355666514246323', '532226906168395704747817553933051591835925873', 7); + T('28340466027959819372283a24801', '397312781649077687305059417953', 11); + T('1016651ababb278b52735114a43067320725b5a4b213', '25670087069424327116744087567400672087130937199', 12); + T('2ob9erjwdlabfl6hp9isx0pwqd', '2162440175968208142159324732902997284341', 36); + T('58lc411umrhir', '6076908444205303387', 32); + T('d0', '468', 36); + T('6438156633447850200458070558', '377549095913992594176286013', 9); + T('45', '101', 24); + T('33de4f8d6baka5f9058ga23ef', '4199395346525371895901328042038303', 24); + T('16408b6a2837647365594951', '10123990278705144980915533', 12); + T('110ca', '1376058', 34); + T('32510310126061345240566235', '4547372983380291419500', 7); + T('165d4ce740e3046bae79a27abb9c2131020e70d73', '157696374111283237707883383886612883626999191783', 15); + T('1e7490li81e785j9becimk2lb0o11o067ce', '532437839280281697432460793212226489874746192189', 25); + T('1ihh485ai', '196017355842', 24); + T('141g04patj89879', '542884791574809430419', 30); + T('n9khp6f3l67iqfq8eaj8m66iirkk', '71244463346160860580002443985000856641849', 29); + T('hirjvxh5jmno7f7ns', '55978446537763950133687022', 34); + T('1044463624121b4', '1322835039891352', 12); + T('lu4j8tgm', '933910735285', 33); + T('9j1g51fh60kj3hk3b74g0ca3c6c8c9f5g2', '425850397149549655524432709384404177906197591', 21); + T('2539b2b5', '151026660', 13); + T('57a82342c455g9a17ga571f484e1b3fca0gbf7b49', '89990290894968066371722348778575965073382603807535', 17); + T('mdpbsafb7csl4gfibc7q3d', '115378571471053973725066202243548', 29); + T('474a338272a1a1a4a1196907567a1668494', '1194906116055811058177751679883239985', 11); + T('18gingmssvt4ul1139dt05', '51363042207429652823989292561413', 32); + T('2ce42c8496', '192806683798', 16); + T('11000010011011000010100001001011111110000001111000101100100011011100000', '1793230956491923932896', 2); + T('4f', '99', 21); + T('9f2ibccj4bh', '162142189763270', 21); + T('1cy0q86r37684a3f0xe9cuq5hoxk', '1424207968256042080686950649776824750523768', 36); + T('12224530341515005031015313254204553135323542204313144542', '8811492262978145988790902373392289264937486', 6); + T('t5wr4x', '1763445345', 36); + T('434c5c2a2679a15a', '218057423288814210', 13); + T('22234314204204424014101430443102442231430233043103244323130322104', '1361476455979988470036534159812062182545557779', 5); + T('808pani', '3860596982', 28); + T('3114060641760665307', '56720562441120455', 8); + T('20052215130115042121', '1233946618855393', 6); + T('18623146542a444', '675413878461414', 11); + T('3j0ei880glmfdb76g1fgch6d6e5m876', '966695542929174813619268439440759006627502', 24); + T('3abd', '15037', 16); + T('321544500711356560655140', '1934109172007933532768', 8); + T('111lwhz2sdptjhv2xz1g5fd', '17827003136890080321517837629398137', 36); + T('l8ne8mcac9878kag0e61ni982nl7m9', '226995884117043510928077829213939988951001', 24); + T('3tii74kkn5pj2iiomo', '254294093773044532571434347', 33); + T('1', '1', 3); + T('10101110101001011001101100000100111110111010000110100110110', '393269849358142774', 2); + T('4bikp5908romjjci53378', '387494241223681393190475393084', 28); + T('a9gn', '162298', 25); + T('31553466646', '3450760614', 8); + T('77992465873916625993036446511778946620300874171', '77992465873916625993036446511778946620300874171', 10); + T('39d1', '17562', 17); + T('25427707303456416047670142267372377104250171470', '938489360691345858919636520999045373686584', 8); + T('233540237076312188', '39655724759031329', 9); + T('1g10070mb0edm15gmk33870b3ga54l2f', '2775772450662354288239662524197284067896579', 23); + T('1ip9pmsrnqt', '961402113030509', 30); + T('33334404014320301030430142', '1118103322902592547', 5); + T('3de5gih8i9f02ff4j2', '48309612020985608921982', 20); + T('a59vtp', '461426503', 34); + T('3207145150222', '912827599922', 9); + T('17587', '17587', 10); + T('1lci48gsc73l8srm7h14', '10614491499072743532053511413', 29); + T('30unig', '158880696', 35); + T('124405625444044364574470555231', '204335816074449425736587929', 8); + T('5el9kb5ma058hilj', '1506277403735522227245', 23); + T('22022111212012012010202100220000012121200101022021202210022201212102001010120200002010201122201022001121120011020', '759167441024557484181567645428524750251602121011253909', 3); + T('56bo22b2rk25gnekrqt2hcbdb6rb8', '1192593196505593827607689568864200483996638', 30); + T('6on6d5k6miquhqpydf7imhli6jvrj', '114889571277404698459666127207755422175313564', 35); + T('1h', '45', 28); + T('4c3d0cm6f', '354629784409', 23); + T('km18d28ka4063o1cbdo33jah6m680nh', '58649899688819306737372660540249084938234311', 26); + T('aa954cd38c39006a0d5d65a0b2', '13514993771256587973240014872754', 16); + T('6f8a84d', '116959309', 16); + T('21540300431025331403002', '305949724456401866', 6); + T('g1h00', '1690956', 18); + T('21d98926569b658f6028hd2fde42bh', '25351569049858465877817627105822773543', 19); + T('28f4ybfi9bm5kiqhfdexzg6dcj4', '65002375284191780502488464831022727755440', 36); + T('64234204142', '1870771814', 7); + T('g6', '406', 25); + T('11100010011101010', '115946', 2); + T('21f7g31kje0i0c11i0eg3c002hie4a1bh79g00i0', '7675939963269437319032080266122665912099477642009377', 21); + T('4e5de4aae42fhagcd77b1819ii2a71f7fhg8fcb0d2', '127596210502348048047227140390153976968822456518898776', 19); + T('eedogk003clc6gei2g', '105223011043453847437536073', 29); + T('1323314231102664064254536346523603525504340', '461558548190589236267853076121213693', 7); + T('11110001000100001110011001100100', '4044416612', 2); + T('7d633972a0473', '451304675159061', 14); + T('6a83831eb7m4', '6145795507071009', 23); + T('341534666615406346022401654625010604323314603', '55153818937912725941205585783698988590', 7); + T('j97i92i9lld11bcrsi5b', '764101907334236165295715535019', 32); + T('1n94df2m58nc2f292egdhj', '190478845693184355163546148587', 24); + T('193a551506a574158808739708a326409a8232a731616', '12264564257932968384919289414304439064543308258', 11); + T('415301137a97274285', '2089766854598334719', 11); + T('4ldl81fik12cm3da7771d3b70bcbb8ja9692e63i', '632495479818532982131362164200507449663312253671354541', 23); + T('1l4v5wq6v49ucf501e1aeagnbetf7s3480', '211857233605896369351266132026791700842067821353880', 33); + T('313b62cj40gi8g2205j203kn279l7e4a85', '10738451034432329068272471398733940161160040261', 24); + T('1012121020021200221210120121200110122122012001211002202010211102021021100111022121200222', '390318533778659728411429509673944759961196', 3); + T('m27mglbi2lk5f5gih4ac0lgb8aicil0', '1571331400777723523482785976497721521964481', 23); + T('5ab9da880303', '99754281796355', 16); + T('6a1216cc363156993c7619b93bd0614a2', '31876928265786310963486391817306746230', 14); + T('19a13581067b', '1352416871615', 12); + T('1324', '994', 9); + T('1i3f4a292364h6g057822', '519041051879430852117563660', 21); + T('f4bh5e04efd4bbeaf9h7a6ee18d0faab73dc', '1312404820878713008763000090033788596202434090', 18); + T('3nn8515hl7af', '31939448982826071', 28); + T('101211121220201212012002012001202201102021200012112', '864510256165221257456579', 3); + T('2knk20f4a89g98inl80hdf26kl2g7', '3938634393856186288183708257843572595407', 25); + T('3j07djc8b21gde84120d', '51743188098385652943158566', 21); + T('11101111111000111000010010011101000110101000100101100010', '67522678144797026', 2); + T('139052073f74b24', '447711998083326148', 18); + T('gfg157ac3dag139de1ff6486f98', '1661627613676505415512176639620939', 17); + T('180', '209', 11); + T('c0', '276', 23); + T('99v31mgs8h9m0mi8ncqw9', '39597598618192553451515827167745', 34); + T('1012202022110211200111', '12688938049', 3); + T('3hpj4m7gl70rg5s986bn7l7dbjtb', '27415197316826959949133005401311879944981', 30); + T('1g4odyx23p8fxodidmc', '9075451789279991776772493457', 35); + T('55329abc2c3fe0m216ai7f', '206170368324589305893946138226', 23); + T('1340009855286682649574456361871475494115109071462971870', '1340009855286682649574456361871475494115109071462971870', 10); + T('11100000110000100010000100100100000010001111011000011001101101101101001000010011101010011110110010101111010000001100000100100100000', '2390040390567048642966647388057001920800', 2); + T('52223564742465635082247585678534782336', '1064509718181642515244340994372031822', 9); + T('712872119b030a5232a76660ba7', '81302736597615293178940708015', 12); + T('ck82eq63q177e9fob2d4am9', '394072217994880709942370882654321', 27); + T('b', '11', 34); + T('4967a6888a214810953573018257373a97081612156a2', '32295474191633069925047732615369002936277376178', 11); + T('818025300991552057072573', '818025300991552057072573', 10); + T('1010000110010110100110111100111101001001101101011001111001110010000110100010000000000101100011101100010011011000000010111111000110000001', '54985654283950555052147243853162465718657', 2); + T('3i3rcfesgl4e1pnpdl36fjst9ribl5pb1h6', '1822841056993585330595743968680994820026920032451064', 31); + T('518835417113272363020373362806722040762766', '6945921601924648113241636640663267958543', 9); + T('51215114114444441323115130', '148715282153752964766', 6); + T('3gi38d7c1r2agrh', '1063253583022369377084', 29); + T('7b3178a9bb793298669', '211348054902766508721', 12); + T('iaej02e3j5f72623372gja8jb446af208ec0182', '509551507301561858265746542302971839802931758720562', 20); + T('131171878520608025130476470220451332844204786553674', '694806882997751424690876571416772531272782056888', 9); + T('kto7o2', '1094994042', 35); + T('6hdcstaqd1tg3f1739a8plpkbbcl4baph', '1219582161259509474473107342419081037076931846767', 30); + T('1dgf7wbm1iri95orsqjb7', '18364036674616095538201293327427', 36); + T('13aog6neo84l11mjjqa2kk28fms9s1599kgg', '1705016958103088803360933755064603355390629893620766', 29); + T('i76', '14314', 28); + T('15c81512ccd18881b020', '8494230105025646245908', 14); + T('gjebn2c57rnik5n29ojr7aqfldfm4h13', '102838449890987454302661340891009306868629443333', 30); + T('783igc1h3b33869a72', '40730864443858836835650', 19); + T('42a5l8c6cn', '22217784905703', 26); + T('342j', '38682', 23); + T('ba7282d384ii6e1ba498', '22842952907395097528788325', 19); + T('3kob9j10mi6m70cggiba8ca9', '545573043076070981074015736460884', 25); + T('abij88h', '1194911977', 22); + T('7417670326016217030', '135666019698548248', 8); + T('63687610', '123331197', 11); + T('201120021011222022012112110220122212022110020012200210200102110222001122222120010121101100000101021212121', '90752154646385975070999099110350327711936017168706', 3); + T('453560155', '27628396', 7); + T('3el292bhjhjeldin8ccj225261i2fd0k7en', '1217610299685725985627264896485512835404180004748', 25); + T('2313311021213111210010233033003000203221233313020223311311103021310113112023102012133223', '68779145291008920229511359415983281509892813113288683', 4); + T('acbj', '184177', 26); + T('p9c0adfhgl7pjkme65pm3c62cffmge6lf', '48235152154085152675537161376096266286876276537', 26); + T('5gi81hd87ohf1goa0ojlc8e829gk7pmmb3', '278990742516194289085133608565402019725737015193', 26); + T('22c61bc7b60a9c8132c791630604c6bac46c6', '28171352787129023473400908616682244220258', 13); + T('13', '37', 34); + T('21e006f1f9cfc', '2427921901128738', 18); + T('103g5hi8fh49', '353276045114673', 21); + T('4e8295q681bl6hanec562697mf63', '5339163936161554860562933482146186694683', 28); + T('3214387157', '3214387157', 10); + T('39ma9', '1544253', 26); + T('3b728922be05708c343de41', '281706306025336513245142711', 15); + T('112gj40idklam575iu', '111850377682228327449684446', 34); + T('520424544225123253212235432303044355140441225100443352241304023533', '2034756118713909937637031846420814255105822777216881', 6); + T('k0iolo48fl4j4lp0s5u', '24781493827610679219607072958', 32); + T('128ggb4dh8cj8fdc566k91cki3', '1267160922429805851247593339094335', 21); + T('1045451206214364325164', '613386390999810957', 7); + T('1107772788549410a4414822299a234856a6016475154906', '9672542336539708087518829624662668197292765768698', 11); + T('11000011100011000100111110110111001010010101000011001010010011101111010011110001101100110110001111011110100110010011', '63458983779334095341636694071699859', 2); + T('41430002221022141424223400340100430110041020444223024014041003410', '2376588431552008570655123555427072543719078605', 5); + T('8273c422025895e75c', '2406418559385510209372', 16); + T('m2h98f7l05ai4289j5k42ink4c2ia8aab', '3246517122524761841891626370023065146892969851', 24); + T('330112202301211213122103100103022210323100110332313310211202202013311030023331222002023', '22580453758464343463710433259085476023887934191476875', 4); + T('2nb194h6ga8qi', '430322682063490731', 27); + T('jpmi4moew0hzbah40iy0rgbgjkvsf7st', '34681988587068576957716048878356716190719421336893', 36); + T('26lv2swvoi3grja39ctlr', '5165229217881148067867135922963', 33); + T('50gf0c8e292h217h6b1g9gc7ffef4b05e0d768e', '2534050190869413489303341066801668313035183620734', 18); + T('75742', '110035', 11); + T('h3c9f2n', '3276752903', 24); + T('ksmurptv0dnfdahfpv5t2ttv3qn', '28444102905166388726141858508924545634135', 32); + T('k4g49523k4gj1ima6dgf4l9j2bhi5egmba1', '1707736842966246461835311670413679917106063130033', 24); + T('14624322306021144203510134', '60398430088699424182364', 8); + T('45h2d09g9jgf8km8m73d2g6i4m149ieb0', '159828027787837356457234355582069560638186013', 23); + T('293e747', '29816392', 15); + T('2p1h8egsiaapppbd2alcp8r', '426308484322430923493844090113709', 29); + T('43433024234131230143201230', '1427229136114037690', 5); + T('289a4633', '98006151', 12); + T('41608955313b1911a62765333599a23676423', '2924108119384944390066125637461201476059', 12); + T('diqn1r7dg7d6qsprogmqe2r6qdgja2ba', '29481647088004232174662553215167090041336899916', 29); + T('oj', '859', 35); + T('2gdf6532dab77840d6a5114a0gg', '293251122577439820618448012407740', 17); + T('18rpho7m8m09qsqb0gljfei8af80j', '296852593993951607772214947149628004912219', 30); + T('24keb7jdl94mfm', '1930409257079544574', 24); + T('1674442410', '250758408', 8); + T('1g7', '568', 17); + T('4', '4', 33); + T('5c59e4222e6bhi0djb7', '3522719264468518688329651', 21); + T('1220560661202652130166402663055101525606330601606006331303252', '675150095126381288896084826641786137855807876233627', 7); + T('8bdd5jmb776gh24h453cm5j7985e7gk5ma5', '169186553911260540940677935317019936465424663620', 23); + T('527635172', '90126970', 8); + T('277ae', '379014', 20); + T('601248508516016121653034235336305447350802022167218600', '2260213996246938282352523423961800103525210629322720', 9); + T('7141002130726144240353615134174321', '4556862540217805685823766591697', 8); + T('20907952950099a0198619690a4', '2472922861761322996286447619', 11); + T('ea36fd1clfjqe5fm1g2s83nf47g47', '1270443528906376270651074312814971947683121', 29); + T('101111100010001011001011101011100010010111010000111100101000010011100010100001001111001100010000111111', '3766029900593721359372665013311', 2); + T('998b3480cc2535104921e', '3205175075301584736233354', 15); + T('a8lcaq8o84hr8k71i2nq', '62871767920054444800492313760', 29); + T('2cng1gia0kq5mujipjbape898vl', '3263921313975839853748035663784831132661', 32); + T('476bd81afce52', '1256456203521618', 16); + T('5d45102dc724852d2db67b51c9b9a77d74dd3', '1084392974332641207686512234196875228047773', 14); + T('4815230672045132', '1010606396855429', 9); + T('1v9kekq', '2124036762', 32); + T('74a', '3181', 21); + T('328a53a1007307b61942065682aa46', '63859486675999658099313593314134', 12); + T('1a2b71b61a194aa8aa308521795481514ab29a339', '27248586215670941038987160555872821966497373', 12); + T('33310200313011302122011', '69579394459269', 4); + T('12202221120012000022122221021211010122121121202100210120122120102', '6610763645257536623940916016153', 3); + T('231ogcf3kkg4pig5m1haa9nr1k54a7sqq', '131862409594175767861875835443409445020844276370', 29); + T('d6qe4em8u38u', '926445109477491562', 34); + T('3eh2c5b9cnkai44ii8e0feb3jb0h0cf5k', '530433754311027126180546490781321137757629004', 24); + T('315ag8333b315a8458c2e27', '3615724227326593741564426512', 17); + T('34158', '49431', 11); + T('3ils27oe28e7', '91557914807141968', 31); + T('edn2gblf7n0banus753dpjdoe6h504l6a', '7642629969726378331747823898058942648773832841239', 31); + T('708a23436b28a0331221a80a1cc36', '109326184942549365525657861606388', 13); + T('2hk9kj1c8e569dj936kb4', '794579205969206004082283587', 21); + T('122505415330540034050461630624613221516550102513164104620053', '97354517682441334188608404808066903954920393510893', 7); + T('2278502839268387241756', '2278502839268387241756', 10); + T('55t56st8qhj3c46de0e1cocd0o', '99849784143466753187227752067831344089', 31); + T('1293', '1293', 10); + T('8163a159h14c271id682j0419412h28j5gd', '1385631680048601439082465294762283037255834333', 20); + T('33103002234130422102321400', '1086244791478948350', 5); + T('o7c7dlja7qnllqglace1kl5jji', '14766346445976221588816768352790750827', 27); + T('50581gee4ef2g5g9c5b', '522201912074626183642486', 19); + T('132232201331030203102313022030032032030013022021203311111313320331032001132112031132231322', '735766436167284912814914395757285842906978477229337466', 4); + T('a', '10', 23); + T('623150750562117510607143030162837240736', '11425818336940049045139902134722023322', 9); + T('1n9353d6cb5k404', '122447087321171523044', 26); + T('28ldf2lb7d7cc25a33bfl4', '94283647489871424522663101176', 23); + T('339b79a42943835492239b54023b886b38b99', '2352685629298138350299211793902313821093', 12); + T('7703554633327072657443651371706621271374', '1309663585734465506833205292089832188', 8); + T('nbagqkohqn57pj7r8i4i', '506352586652779671862372959634', 31); + T('1f1c9hie6h6', '10999559699306', 19); + T('84c5f2554693b9f5500f5bb85b158fde13e1f', '185058871763639409971122557584749513555394079', 16); + T('21210021110102020012010220021101002010100212022120120220102111211', '8913855519363454596688827191062', 3); + T('1k4g82kbq0i3a', '599743970399950235', 29); + T('232221321002323112330020033132222223231021231332112', '3696354442389518199954992455574', 4); + T('31', '13', 4); + T('2fl289c9g37788lk851g21', '42297178746901523108180433621', 22); + T('gm06jwlv6dqleu1dip653ubs', '10360002803920470539953905454083262792', 36); + T('5975200c0c58b4a4209dc3bd9bd65351c4a686953', '39765261669001283521985826220442639112464102333', 14); + T('1b7eaehgc6na27qdj', '1633286773621121735715251', 32); + T('19c71489d18e3a0980e42cc36293cacbe3', '1071329852165428379062747217653305005688', 15); + T('a66j4br3o', '5109925159442', 29); + T('236k3i37fdkaca9ggce9488a', '16154458171800913743319566344714', 22); + T('547c3cc0b090c099585c166c56caa7b0c', '2370956445374590211607145293779895329', 13); + T('31c6l2fimcm94ehd3mfe3jmf289iamk83m54cd94', '392700371206866291770648353879270744554067295237496903', 23); + T('49a83c6874d02a9b9b81b4', '5501733310687036523031026', 14); + T('1i6aptg1v97t1269a9nfx6', '222397813672483505273091300846188', 34); + T('6430553763248061224028267601063731268', '146036643954511589188331459488427555', 9); + T('22777415000440655526', '342256872923028310', 8); + T('3077216', '818830', 8); + T('g0869g953a5a0689482id9ic', '4131232785565176280208325038394', 19); + T('377805kgi96dgc9mb32fm406m0f6f39c7i2hg', '34922854162614667688896860620347909170055951885512', 23); + T('34', '55', 17); + T('9mo72jfoon', '53654687111919', 26); + T('17em8okm0dmnf', '123219026310591941', 26); + T('ojfgmec3bh5hn8e', '923316247884933873964', 25); + T('300449c1c3e6cg7', '1124713376756150983', 18); + T('148468717751060247811551716501887635', '3879291235122751908691549806834740', 9); + T('2111111022002222200220201001211120011211020211120001122121112210', '2861089797219981690788113774269', 3); + T('ba86k1hjmgc2ka1b188c3ocg8mg7', '633561834955856968092087110467408732907', 25); + T('7', '7', 36); + T('101111011000101011011011001000010010011111001001111010000111011111010010010100111011110010011100010011000111110011110110001010101100010110010110001111011100', '67630990462245519904689419770374213484683027420', 2); + T('lmnopcc579rq1d1kecrck', '1913989049548883118555149674260', 28); + T('101', '26', 5); + T('34243442230362323775450370', '133734900702608268611832', 8); + T('7705c09763f0c8', '33501846960337096', 16); + T('16b68084359212420b42a0b466', '1507498439245168038118909134', 12); + T('3422230204423244344144431342004202323331033340410420130', '216503932187688762113715510289005560665', 5); + T('bxg1asoyef', '1211512806561831', 36); + T('100qrn', '17231531', 28); + T('14376376532381875', '2764823838681551', 9); + T('341b85880261127b4a4501bb59989072003', '16474978878686249530126059882195408003', 12); + T('34m9643moi5645kloff0lc2k8', '11353733191493162765109958504486133', 25); + T('1gjmm4me082gf7bedmn6944a48d6c3abig', '22657993401538002512673217109094636311397819841', 25); + T('1dbfd0l6', '4028639324', 22); + T('443147117026070130387352', '39737724767758401461831', 9); + T('770344133547754604246147776', '2382177288166020121939966', 8); + T('34806170568316', '34806170568316', 10); + T('2000220010020110122110001022122021021002202002101100222000110111011121220211211210122011102220220112121', '9430263244564363699327129166426166870352926916807', 3); + T('0', '0', 34); + T('1408054854833732408165393468129134240219856072', '1408054854833732408165393468129134240219856072', 10); + T('5cb3132a8b90c8cc5c8d10243b', '266140453841238714299979326165', 14); + T('152270', '1847985', 17); + T('14111026000144152', '53012937079839', 7); + T('514fb06b03ae4e191f9375228e62', '1649188801468585902988396540890722', 16); + T('gica0712b8g45ji39dieeihj38b3c9ahdh412e', '23270135840441636506607963274541746417908332352454', 20); + T('1fc020c94aec1d384d6939fc0b55b6275a201238e6', '46403408144166737594428754848567058468276133837030', 16); + T('23340350340466132353555624150', '1150738817150733757069179', 7); + T('10253000316', '298475673', 7); + T('3el911b9jkj3eja4cd', '243839699882594291978053', 22); + T('2l8275h1ile71nccmm511b2bdko2', '1236657450961741770578027094047122672829', 27); + T('1j48ldn30atne4g9pm319ajs5pt', '416383185377779055815558205572990151279', 30); + T('ef3608f1c4e83', '4208245717356163', 16); + T('10ioej21', '6288902551', 25); + T('120111120110220122002210020', '4378424224299', 3); + T('97h2dfg886g4gi6b58fhfh911', '46126311918607212312965582703752', 19); + T('d8gi6', '4433334', 24); + T('dacb2da4o9f7k2n', '1464835209320250160295', 27); + T('1oamd0eekoi64ehfabi4n7m2hfj5n7', '68606278289505370536462171548139088191207', 25); + T('263595cg8acc', '81034230587588', 17); + T('ellacdbn920kpgec5ei217h', '199907295253233852870341333748187', 26); + T('203301330211342344224021133433344413034221', '97522914206952615171825908686', 5); + T('26f92kg780dme5mo5g8b1pa8mlb4i5', '243826089597210290299504496901549601839025', 26); + T('1l4k6gf03', '150535071740', 23); + T('1fc9v2l3l3u161ewt0asv7ptco733c6f', '173787731730491489596204621593808047374649391899', 33); + T('3d', '97', 28); + T('10187086a12014347597a7', '7509462547837819682131', 11); + T('142314040103301030333323', '22732398342042963', 5); + T('51j5e99d3j48ei33dklc148ddm38hj31l7gjenb', '142386292443578000840331039336729798455275663535088563', 24); + T('14e10g9aafbd5aeac1f8784h558ad6d4b636e14', '634827726136703092193623226005666297523516017966', 18); + T('12laj1a9j89aed9k37b8cfh', '1023636874052341758796882576386', 23); + T('5016208620292365704037092632106487328146733', '5016208620292365704037092632106487328146733', 10); + T('56in43q1ql8085cdn7vopa7t3ngoed', '566008935658169643200168161957539183036996844', 33); + T('22s35pn5i1', '96833203005232', 33); + T('21g58a423675gb1gd43hb6ahdb5cechf4', '31056550222828623762491892131048679702550', 18); + T('m2m7o1mk5n5iem1nhg1m60t99k', '187177916478689826036137763116654591390', 30); + T('224bq', '1467049', 29); + T('2i26b4g863ja2f17a857', '37922279694690532644554800', 21); + T('r762346o82jt96r1sphc5jabqgqeajk', '5608490487827560829488032592521356647934247590', 30); + T('ect4olb', '31249474175', 36); + T('1020002020', '24117', 3); + T('1dk9619', '1278426989', 31); + T('1000101000001110001001001111100000001100000100', '37948338602756', 2); + T('daca1a0aab47147cb69b3c70407', '8680663224967641711152705530951', 14); + T('1303113130113203223212212221102033230300310201103302321232332332231220110012132010012302', '43163657603938060665271546922523188912463705523372466', 4); + T('sfrieq23hnbt055don', '368445731443436833015197443', 30); + T('i7c03j43e885j77ce94jdjahc', '308365645364868380135794239036352', 20); + T('6nhf47ej3f2e7m808h', '4044367825426498856375217', 25); + T('27147380099557912676606433547302', '27147380099557912676606433547302', 10); + T('csufgg1smqp3il1ri5pcgugua0fr9kfs1', '18860343033998469134466167856463713999512137252737', 32); + T('5gbg6d513f1cfbfb8f23e26', '7026912409111194787384092222', 17); + T('67beb095466748i6g6f1c16e1e1c0e', '77643205100110837901641527913924838755', 19); + T('dafoc28d4ihd844oj09', '195367712290739827433590009', 25); + T('2kd99n7e3f7hmadjg972ie3', '6614458529250547048035239167443', 24); + T('1110100101100011001000000000001010011000110001010101101010010', '2102165078632082258', 2); + T('50313234404041444204313100205345520142025331140404044', '148127386264832747696142468115120225091068', 6); + T('4frs', '122338', 30); + T('2', '2', 5); + T('2c7fh', '2211743', 31); + T('521627769aa9903ca2777282a9704', '80035204419629686507847889516653', 13); + T('1acb8e8c35bb51f0a97f', '126536489245502589675903', 16); + T('fhgj743d66d2afb82fe3097ech3k02de59c', '69380446582614420752469037047577265610011498022', 22); + T('13ljdao15c9kqq80lrprhomnp8h', '285719325945344921748137856736984663757', 30); + T('aa694h8gdfc5egi29ei9d76d60bcedg95f91ci', '2172203053088265616832262859897091710533691361277', 19); + T('117eacbdcefdf0a6a17f2fff826d4a3757e9a72', '6242361556294202529040777632205572383849749106', 16); + T('nbron6', '784196326', 32); + T('l61ce8p6n9mbm4eh13p2f83p4d', '5027409891709818675841213415466148689', 26); + T('133571757441551116445813870017686612348244840615', '974429239787874369080373672137480024198248529', 9); + T('2de56487c7306e350a2804a1c7a26a750', '126433237955384861849183674345949279775', 15); + T('1t0eskw02w9j0787kjvhllsk0uorv3rp', '554365961922175577358851876276185152369421121763', 34); + T('19a90b5297g', '3156751459983', 17); + T('94af3ka81ai04agjdd1jf9eh02kcb05eh4c19j', '77019278316732820000275934466986562978818961285944', 21); + T('2arg5f1tbbo', '1395878631103254', 30); + T('hfol59rdpaif61d0ffs4ll5l5n', '63700684237192600496984163750362294029', 29); + T('523215407441303043220321763763461205763333647', '28862443771771851434414707295001265420199', 8); + T('1172558', '638333', 9); + T('24547788612b797cca89561c91685305c', '1035822093635901600043042970084595452', 13); + T('297357a6913a0506230864ba0a40806999b5', '165423726645441709448459506175417770841', 12); + T('3nv1t16', '4811349054', 33); + T('11', '3', 2); + T('dcu7kkv', '14393004703', 32); + T('74jd2k05b41hi19cqb0b56c4ogldk61mbnec', '898558171987652192588434184021750232818244947634099', 27); + T('87017232bb16a097aa683d76a', '27322467806827082697027163842', 14); + T('33315524233101', '46920839581', 6); + T('428613775532906a631a669a07b607262', '1861425910744005080289960554061159938', 13); + T('2032312224134213012123140122124', '1994223287446852270289', 5); + T('d9g3jika93bf6687e', '82311084389009274810693', 23); + T('4g3mek2', '696240109', 23); + T('2al', '1993', 29); + T('2790a6bb3ac09c4132a22704d2d547', '1177464169231489879646847630186327109', 17); + T('ac85h2b60g1f1bb9443b2f6140gf3d23531c2', '16553297321499287941274783612999953493375468582', 18); + T('84cbbe378gi408a2g24c7cc701', '767458631826801795787229605068011', 19); + T('1', '1', 24); + T('2545050224042355443043313126144254255442454', '876893815708574640678938176379453669', 7); + T('96mg2bto', '253583237819', 31); + T('103257515380518060751732276470265252833018424', '1009215289986412660969292628675150865766422', 9); + T('9bb', '1675', 13); + T('213061078bbaaa19a59273794a46402467905220517', '4454029219153574030222038736662990993813474531', 12); + T('1404', '1404', 10); + T('4hrlw7ejvwsf5ks8fw1kakn', '11598871980554104486046361604542989', 33); + T('hwohlkmmd0wcxl496krx4kuvu', '204793993426728369555445184850179150990', 35); + T('hxokubeca', '40450292757955', 35); + T('3gp2122gp51e1jmnlmc6jfe69', '81710274994239238611207516341652249', 27); + T('1742', '7006', 17); + T('1222212003002000102423324020100242030', '21822773039447439961337140', 5); + T('542400122414150021231341152142123', '45688850379684810973948803', 6); + T('113142622818152826', '19181680787913279', 9); + T('1725ab', '1516971', 16); + T('cd590583dd0fb4d2bccab06f852', '5523664634945639953514439685775444', 18); + T('fcqdhgpjd', '10123224125083', 30); + T('11000000101111101111010110110101001110011010001011001011', '54253158045164235', 2); + T('5b52e5ka259kcmfeg9bam8m', '4982195858013579020225977318933', 23); + T('37102705430230406225007132550325075', '19731384956592254443851247364669', 8); + T('62187847341581405083883177441', '3269223553709039612339577952', 9); + T('1', '1', 7); + T('34acbca', '16279598', 13); + T('7b1dscibt14j', '186913558166857804', 31); + T('3813872748312506470161272871424048420854', '64160413369317212332708670220456731959', 9); + T('1b509bg3', '2000076723', 20); + T('19', '28', 19); + T('1e49lnh', '382576217', 25); + T('1011101000010110000100000100111001010100101101011011101001001011001111001100101110010100100011101011', '921454163161847327849553938667', 2); + T('26654765110654444621720', '210641979748604126160', 8); + T('4', '4', 20); + T('233j35tjr8i', '1242415162527558', 30); + T('2ihc6g5', '188418725', 20); + T('14514222035543505233324403513154511132', '112236158532531500922346262912', 6); + T('11780822188440823003268608463462043302170765', '130234632675642352830843282842679037904699', 9); + T('ca6g776665362g312a759d0hc289ah', '31803568025214749779356446816303550281', 18); + T('3c2143412ahgl7gkd7dj56g4aa032edl5ab', '15579825921597836295227254929575079744069515235', 22); + T('b688cabb4a880463a00', '1294695345930300972346', 13); + T('7gb84b2e8ai22aeja43fhj', '16417614158933628179168670359', 20); + T('2b29fii0ffb453799099', '5116039768857765569837805', 19); + T('4j0fl44j0jifd0db5m1jk27lmb2j7g0', '1221597028986776804949762637681448487662400', 24); + T('1102200110020020010111210002120102000110001011102010110012', '2249432091384144139655815631', 3); + T('575257272', '99966650', 8); + T('21412332322000110322224410114133331204441322340320331022', '658469531400806135753913612265079464512', 5); + T('lbeexon7mjw0a', '72065470380896239460', 35); + T('11002222122101102201200001002221120110010', '16658525175081901887', 3); + T('2cbm6ghalhaf0jecd510eh8', '14205312878701722696609668368558', 25); + T('i5f89347h0j3gi8h4677fi5a04', '583695524553451988357837938643879044', 24); + T('2jjl4mk2ba6ab4f', '104001036849709538240', 25); + T('11011110010110101000111111000110101111000110111001001011111', '500696147126612575', 2); + T('11201020021211102010000011211021101021120202020210002011110222101120021', '3931899899409076416396361943543530', 3); + T('132', '30', 4); + T('1ah3g6f9d9df1g3ided508ia48448d6hhgbgea38a', '16965212814601045549441068611275594500781000437521370', 20); + T('6237a6ab64112b2494bb05a722886a55a2540', '4388944420159332022712765742793042396800', 12); + T('q72a', '859210', 32); + T('120412252325053420430240504004014444424440120055', '5062770525903140764486411269774590627', 6); + T('295d4bnfaqdpoc1b20aqjr1cnbdbkpe2g', '47436826040024452612254699971551679789734617832', 28); + T('67716235176889702569725884201488570294266282909281', '67716235176889702569725884201488570294266282909281', 10); + T('2053235221113252151103025044', '2205439986612091266100', 6); + T('331', '127', 6); + T('135411345210555202432511042142510325514134213144343430525350045345', '630257158895680511354194148657769220873851791365505', 6); + T('ncgw536u3', '52596306137028', 35); + T('1br4', '37714', 30); + T('ar5cg3h5rj8jpdoe3q4cq3enr9', '16565568581597008816111159366077297901', 28); + T('dgmjoauv', '464615386079', 32); + T('4411066504304310664', '7482831387322120', 7); + T('2ie17917j22aog9aaekd76', '3074217943693005788722019767635', 27); + T('7jhwhw5hwfw6t8u79', '24155077979418001247241407', 34); + T('2b8b00d67a9af7f532ff749683bb', '4464429849532419014043873313196703', 17); + T('333201021222132001303333132200222320010300', '19197132799297047545741616', 4); + T('1o2rba1ab625lqg2ap4tjf6db5chq', '5706946668967398466318375257987680829296303', 33); + T('3ba90478b168103a7864b1c6b0b62960bc316', '49439560619910889109663125468488809074137', 13); + T('uh39vdq366v29506mq74', '1209595543050368363395591923940', 32); + T('17a5881b485a3a3729b621ed24851346eb44e526936', '37635985091401630307879776080822155210816748779826', 15); + T('3', '3', 20); + T('1010101001110010100011100110011111001011001010011010000110001101', '12282035710234042765', 2); + T('3p7o5m2pspogfa4rln8kaa', '19871208148630067099353934028190', 29); + T('444hc35i9e91', '492075654378634', 19); + T('dee149', '14606665', 16); + T('8d6lcpobjgcx8r79vwo91', '35747137599516159959965340852451', 34); + T('1313a30663415072a5378a573a5004618', '2710898421116005898719133773622357', 11); + T('1a2ufr79n7jkg', '2177788338840118042', 33); + T('11123413012404012202014420304221', '5877498546826679463061', 5); + T('321413111412432', '21207529117', 5); + T('d04552edgg3j5i30d1aebcg35319h5ce', '279401733817838264163142101327955396778254', 20); + T('65230302412105526230540564112431212010546410325343324336355', '70128063903609250369648995014131506639349252995600', 7); + T('122135222500433255020341512552123313545535005021145045415', '52664708035958260940426227456273342924406099', 6); + T('2405352063454611542614252613643', '58322141881707592214580663', 7); + T('331', '469', 12); + T('15', '19', 14); + T('4og0nttk27itgb3kqcm6if', '50395967140764173858035932119955', 30); + T('b163a1d14c43827424b12db', '182084380520360792772703409', 14); + T('0', '0', 24); + T('0', '0', 29); + T('10bqg3q7ide7p123982defon7gd6gn4', '8871455511993695280948914558473713435679678', 27); + T('8b5i53jdflg33amn975o4em75rl', '355133268860557842919835043492122626201', 28); + T('iif46p31b95vumvcu7t4', '2324168331442784232456379135370', 34); + T('2bu5a91hcjjf5bvs4llmt3mlv', '3154536200599521483056493747395222207', 32); + T('101776827305203208883833456438314282601147', '1361051538453470393031244031499904314100', 9); + T('a7q6ce8no836pi1dpb1h855ifag0e', '123260072425789697349589714923797010531053', 27); + T('6an46', '4507041', 29); + T('c85100972abcd17099d6436265a7d00037d15669c2a855', '47428482751140063971988445268995152371199255649614715', 14); + T('1001101010011101000101110010011010001010101111001000000101010010100001100000110010100001000001111011011110001100110111101011111011000011001011000100000000011110001011111011', '3615489279593509708772217418002107077942788107657979', 2); + T('472ac263a709338a322', '512265232277236694323', 13); + T('3bwf', '143235', 35); + T('lakj6bpeg7qk1jhp82j5718p7dm00', '708768256027400694345310993664646688588064', 28); + T('3', '3', 31); + T('3l5g1noh9km1e4lnlcmi7hk24lkfn584', '83462512429809308449012708265095091998409579', 25); + T('1602o', '1102353', 31); + T('bba2100668676a123b8969745542cba', '31194377870767966662985925118106525', 13); + T('31536413040', '919850568', 7); + T('200110021212121222001222201201221002001212122212121112101', '1073167764274370737333513450', 3); + T('8d5kj4ppha6o5yywbpaork4lfwln3', '143529562916204167813572705035194801747117283', 35); + T('115200231503212201324113232151432415611206413', '19119837827416003266077275103148717672', 7); + T('h76b5b9dhebcf9bd639fe3342845c', '11099864955326032429942032083370594653', 19); + T('278cbbef4c3b7a5cd3ae71e1', '12240052494575754714578579937', 16); + T('200020121120002102200121210010001112121200112101112222120021001012211022021020201200122220122201211012022112', '2284936355530730650861310432484515232422851367913401', 3); + T('730d9080c5076bbe550c4d', '35932875541587203941802773', 15); + T('7207565613527210030', '130876365269176344', 8); + T('55a3d', '207815', 14); + T('3g0s38r3bt087aqrmi1tn79ia85gmeh', '1936565240398482832728717768927271259807794475', 31); + T('1i28p44i9akoo65c8oo9f3105g8kg30gh5jg', '56680776457726013494388507242577969396880764644890', 26); + T('40hli90fef115b2gbd', '568985677342288643620301', 23); + T('5921161174358003708931086151189129598336753', '5921161174358003708931086151189129598336753', 10); + T('7b9ie9g63131ge5961ckc9eigg2dij6d7jbi', '143022933563074189781666359143199930960782247692', 21); + T('1fjnlg601b60e', '362500102776455854', 28); + T('2570b2cd172507d801138abed2', '2966320491435734983427362569938', 16); + T('16d7r26k9f', '13024515303115', 28); + T('11110012020002022', '63875771', 3); + T('44uu1', '6945049', 36); + T('5roia7h50d72egib8dc0kbgibgc3181l', '4362559620688171285632591021024625499868373361', 28); + T('7a61cd850ab00f4e75b8fdd', '2367212971376424991309139933', 16); + T('2ggm3d7dbdijij6hj8dh0fk1bki55l11de80k8je', '349289245969708219829891150618982716299609391061246124', 23); + T('6f7bissn1u9k2a2nds0jcyqf', '2099343598521464701612621568865662700', 35); + T('1j50dok9ppnfnb712ai17q3aeogebg', '1563779391961982516054733166515013611227172', 28); + T('100', '121', 11); + T('152003747a37c191079b493a', '58307629840901487900667265', 13); + T('12a550842495600aa183242674b9354cc40615469b78', '964513977187218862668336384529626864441099542359', 13); + T('1', '1', 7); + T('1010010111011001111100100000011001101110111101110011101010110000011011001110010010111000000110101001101000001110', '3363864999018073552305148875414030', 2); + T('2a388957a5626004a648219068853a80843148917a', '14639334203511394499271219968495476019919238', 11); + T('178qmhlmomjgu6n907urpggfgm22bad8t0v', '1836865714504113766258732956737909765209405609243679', 32); + T('39qp1ndaj7i2kcors0a2q9g0c3tgco', '22852659824082944134646404893585993114827784', 30); + T('1220243421341234055245501432452205215131515413023', '31231684169839893198944772635028600039', 6); + T('1003331113233012121222210121312333011', '5014483212176774885317', 4); + T('1460300646123356400652060261434153321405542062433', '62217170078805469818735068808101425405148', 7); + T('618c3a055efhb78dfa09e5e064', '146515377058619956051290383262640', 18); + T('3243111303430002444312342434243011132433431232433320413034233', '3110380362244237009969587203947233566143068', 5); + T('34ckfdrm4akdmpf0nmk3g9r97m6635f', '234784623328429291304866563544367892203497462', 29); + T('2fh2b', '446851', 20); + T('2133221031301122232332213', '702121681547175', 4); + T('4dj5f7a9kmdkd6ib7h9h16jl75lgdg1', '39344152861693838773867535837606678058786331', 27); + T('386bicebii369h1kc4k00e7h6j4c85ibe8e68i2', '596047102194584014318473702865419545819037150251222', 21); + T('252c', '34437', 25); + T('1c46b1c9ef8122e5c0809', '2136485514231402911762441', 16); + T('565273142344', '179884362478', 9); + T('fg8ckmivf483', '558741734364254467', 32); + T('3ff3kcevj5hawuhshs34x3oi3vx', '22740752524651070386437452324283746717307', 34); + T('10110111000011100000100001000111101011000010011100010111111001001110011000000111100110101111111111111011110110111010111011010000101010100111011000100110010111001', '2090116485561415533220743961894899901833660878009', 2); + T('agc17', '5638120', 27); + T('eglk3j68dgack4', '12888395715127982308', 24); + T('28gil143c52a', '5595221231831310', 25); + T('66c152b47c14a05b3610620', '20983529061179635723774027', 13); + T('15dokhdbb5', '70366773099039', 34); + T('1a9501016a5512889b2993544451938993b91652b234', '48223308327186227572954772551054429866630121864', 12); + T('159a345bdf44d369a', '24905827046438811290', 16); + T('1461e', '65504', 15); + T('32d7b08f520g228ece8bff5', '3716536139742781837934428348', 17); + T('101001101001001011010001100010111111010000001111110100110010110011101000000011010111111110011100001011100011111101100100010110000001100111000010001111110', '7429426803493479456828449389493437652073153662', 2); + T('6kc6bk6g03', '131487097676403', 30); + T('34hvgrjns4o7', '411305032746097063', 36); + T('45heh87j', '25806520819', 25); + T('2b3foie8kki6eg7kg8e1j2jb83ka43', '2224972752466567394372343513970647975249171', 28); + T('1b51n4bcb5573mk', '53946798171681752445', 25); + T('1neq6n', '31675359', 28); + T('1606', '643', 7); + T('i21d7ef5b658jja4f4ch63a6i7jflah1', '29580131903402267811587112773000293466018906', 23); + T('1crq7057b3lo5bfd1p0bmrf6i5mk0bn6bpme', '2209991301392227713894588972684184312154769557819480', 29); + T('1tk4sj7hb1btm', '2220446801040814006', 32); + T('2582642852065202685367571622548333884509', '2582642852065202685367571622548333884509', 10); + T('ddeh10je03104h2gj9d297e005e25bf702', '117571564833759622294922629069619346065882802', 20); + T('7dd0aa8c145447eb92707ad1d07', '159489590003544512404938984070407', 16); + T('6pdn173bn9eqs25mnf7go8g6p55ii', '609026075406678657195419482812059187779088', 29); + T('c9h8075jkbgce2bhje7ih029', '32124773769478466147508433993026', 21); + T('5e47t7mbkd4cmfkbka1e7', '23078675295563054872571444265175', 34); + T('1102212000221210121011', '15052511263', 3); + T('kqnpjm9mkj41j5gq92a6en1e3p53a', '251372779390673891723478386066935182969151', 27); + T('130c449gf', '19695443734', 19); + T('60127615404142232301236257126373142705430101557417025270', '281610543490460264519467262765660796455848821664440', 8); + T('d5ao0joon475j', '787826660155535769', 25); + T('85099cba', '526401184', 13); + T('orjl0mf2l64mih7famg', '5251853940693847762549796320', 29); + T('24b44822469ba933aa9cc564a0b792345', '780612549310309792407655025164475245381', 16); + T('1', '1', 12); + T('308b94918920047775b056707915397', '726935161157046423838017053561059', 12); + T('10101101101111010111001110101001101001100', '1492415632204', 2); + T('1af515d2006312ae69biha', '1120313283402535131518464857', 19); + T('13', '12', 9); + T('4244', '1502', 7); + T('4724f245n6f154h089', '1249114287744755126982345', 24); + T('13243040401001003123201', '4093805177786051', 5); + T('11020002112000000121010022202010112100222210221102110011021', '6634494201815577732081058297', 3); + T('5b4dgd', '28394225', 22); + T('6272ha', '15166304', 19); + T('100011011100100000101110001000011111111010011010011001101001010010000011110000111011010001101011000010010000110110001', '92021749248802288107686447118623153', 2); + T('2i40qec7pqjm10', '26939109963617553388', 29); + T('402104a166592b6016aab40a2734702872958605', '4916982450386947278439429436768334682151525', 12); + T('77c3922084b82910c3086a43cb03a4', '1533937693030670114672009321321763', 13); + T('37f3ddigh3fa1e31g2j45d62aeg4gcdh56gg9', '232818880109822059294086716237622233513847254729', 20); + T('151a97027746544a0007496525666a962a', '34163769708560970311913160174313395', 11); + T('24n9g1bf55depf641q81qfgj2q3efd', '704762263092344530284533783215679804998393', 27); + T('323079876474415845475805249641768917', '323079876474415845475805249641768917', 10); + T('k9ghe4a66r5kt8euaf4l', '804063141258299683011907894421', 32); + T('1ljejem5hm57gjjpflpe6kml801', '11306564293793981256004374145021939273', 26); + T('2a0a2b05a7', '14649964111', 12); + T('7tr60m', '412336247', 35); + T('11777165574076763721455', '92219848663426376493', 8); + T('4llmg19ke36037l9n', '211068244533390000747325', 26); + T('1k9b669', '218681021', 22); + T('a5c3b8d2b440bc7c99d', '15352022411228212540798', 15); + T('145124424214052201111155025520222', '14423786224168117069403798', 6); + T('78a3h7p', '11190615491', 34); + T('110202011101011000110020211200220101100002000222001122020020221010002001210221112100221211000222100220110211220002', '1163746839236428869432018441230348532163437184859997503', 3); + T('104502', '18426', 7); + T('2ccl1dcoa9ke9n4acjoii97cio4g7hpn', '181430764600829521764547344057062011723425949', 26); + T('1g999gge8f', '234124479585', 17); + T('2102122000222201112100112012201202002102100', '265973195855731931784', 3); + T('17pm3mbe4', '484680719548', 28); + T('3ffd9eb2i9bjbd3kffdhi6', '145319854130204054939620248184', 23); + T('7c6bgjabk7b77cb02365356g71462lf', '141625763379595196233525648980420679263893', 22); + T('7hjd27j7mi072ll5dj6166b0701ffl', '24036455572105994456221585880207038384542', 23); + T('1drm5e6qurifp4c', '2578009544187725538837', 33); + T('hhg1ca1h1e44dehd3cbjd7', '37518475324760931197003615867', 20); + T('1lj47hb7l5mcmbf1cd42h1hh36cjiak0hbkj', '891983220438694620232014357960845056377943934222', 23); + T('1uhkcq0knndgar709ggbgktfq2skchn81s', '32579224663928263100000786859064490006605648315352', 31); + T('1cacd0gjbiqo9gembo48ojrkt', '398669520541557676768031831110377929', 30); + T('1014035244555111523450130114241515', '49986724694411884036240919', 6); + T('k4jn6e9d6glnigblcgf0b', '183644159120719141946254946886', 25); + T('10102311003323010321021122122111321132123020213312213323123211221121001231222322031', '25103947154379810646139325622747166556671557676685', 4); + T('50ahfeachacka3', '776160684509952255', 21); + T('5gf39cg6a6d30f70cdh77', '75670880512894340281508401', 18); + T('3i', '99', 27); + T('5799c79ib6a7119bbbf1362e2f07a3a75', '448835587235333894824032459146597136265394', 19); + T('20199362559584384642', '123276124968958033085', 11); + T('14f6dj7bij792d6273cija5g5j0cb9hi1ggc', '4254894585269962546595403514332354881913294732', 20); + T('9982bc1097968c8c3b610c47a14b74b861406486124', '594597577726034824881214857458527499759845362913', 13); + T('2542204051144325114301201212455', '653347659057319259531891', 6); + T('8bc1fs0q6', '7136460415847', 31); + T('12245232344501421', '3982268425045', 6); + T('435708bc337', '587768670171', 13); + T('9gqc89j93bfm4', '2230491747853233820', 28); + T('a15903691c9001b323a09395906', '927480369551047749189616833196', 13); + T('3g2uaml4gj9rdi0owqv5e3fi', '581742884070494714992134070640198076', 34); + T('179ehi909125bc0b3i9e4a91f522dc2gfi', '2206014001526987616423852615240896648228754', 19); + T('12010211100221020022211100000120201000000120021010221201101101212121210', '4290236792225220853841200359967002', 3); + T('7k', '174', 22); + T('1071610', '578592', 9); + T('22000000001210211002100001211120100222010001111001200111000021111112122102210222212022221020110002120211', '37107607574596122561009019100775525141832001665669', 3); + T('1nkqomm3qifm695cfra0hicrl9k6o1i2ioj', '29519803751298537211113975613679446742819642561363', 28); + T('1158d8cc', '115976908', 14); + T('4836398098bdb7c6cb93bd3ca2bc048a69c614c84', '32124850151621055288011165638934576325866972244', 14); + T('ek5ag0l', '3615400646', 25); + T('d4de8jakhg46gg8ke52hl3hl64af8h1g00', '11417779761519995781476451771964854089342166669', 23); + T('2gbeajig4810aab745afki14', '20666612177047863663274280987634', 22); + T('218k2c080cikh9eakdhbci94j8fgh', '79894697026629332310714396980970566525', 22); + T('46ebc2ha', '2680633108', 18); + T('35576422324763736', '1046634462177246', 8); + T('crfjig2n34dsuqnh0bgco', '16300713892509942649067256791448', 32); + T('3fljnn67qh0he798q', '2550626756903000471191471', 31); + T('10110001100100001110111010111001010011000110010100011010110010010100110100111111101111010110100110100', '1758529900728895870358045306164', 2); + T('105212361216153102535206354065633406325425223013011', '1993490998659291300161155678289157518972908', 7); + T('c4244b59g5c96da003c464332', '4155898790145483848870845049775', 17); + T('h', '17', 18); + T('100102122000000201000211201012010010101212012201120021012102011000202002201002102221012002101001212120022121011012', '861002691662158159012861645549677449067811598994275093', 3); + T('200000220244012526360023', '54738028206812706724', 7); + T('45025334847078362688008185858168724', '1268020314482631821675827535583508', 9); + T('85804d0f7992aef5f63', '862732012489613736899710', 19); + T('5mq', '6197', 33); + T('412165', '70411', 7); + T('3a670f32d8a0d0c5fe1d860669e0fa790a28', '5087581870263472260351886848536796076771880', 16); + T('14423420134', '108229018', 6); + T('3cdhij9b1o', '36452913717412', 28); + T('c38857c477adc786108ddc50913b', '108114098280659403543883930629969', 14); + T('4420623bfbcg0cea952bb74', '17465324511132004366053468166', 18); + T('76ebtvjipk64pcgeom', '469643266496008087961694799', 33); + T('833572012939455360689846300738643973735', '833572012939455360689846300738643973735', 10); + T('532jlutr4mkwmokrkk1spv29jpx2d', '38740672047259297073570474824972320124549357', 34); + T('1e7lwq7lfibag8x9g7', '249581188294471901155422092', 35); + T('16bpm7d7hh9ia9ql6', '175490655969459169683378', 28); + T('22', '22', 10); + T('1da6f2573623f320b0d788ecg77', '176650893165944234984783472578532', 17); + T('b54c', '31232', 14); + T('106d31a9f39dgg5ca5d22882606g1a166g1561937e65', '83055395658429905495429379420525542544257624906202499', 17); + T('87167783686580b6760546286a7005', '170003347235677664923783013736773', 12); + T('1011222012101', '629272', 3); + T('5e4c1kg8kgb9e0j9b', '8121399895030321436429', 21); + T('120310023320132031111031222201110323031303133', '479999663316795249342078175', 4); + T('2581695437092034322608281300193', '2581695437092034322608281300193', 10); + T('10b31379b4421', '9613231649881', 12); + T('fjai0pn268g32oa21ekbl2ee9d06m1idg', '29945640848113871009545458332782939996039036978', 26); + T('2242152541332302355454225214033201', '117239748984429205550000257', 6); + T('515335122443035', '3564199709740', 7); + T('143c0bb001a4313735185c73', '55571846248867914153487159', 13); + T('b81h6f61', '28354183265', 22); + T('b5d3ab57023c', '46265651034958', 14); + T('3', '3', 12); + T('5a1je9034nek74n9586cghc3', '301192022551379992935349177894755', 24); + T('6085chb9dbadgd17ad', '13171586833706983780981', 18); + T('4982a53ea0476cd120c6a38c8c5d964b2c068', '10126556364355015871790928748398484260463723', 15); + T('kc9g3uegiyvlshvrtdvx64ln', '6639598343399941171297097806956821033', 35); + T('4a4acc500818db', '3761155193407385', 14); + T('20pcq1260k', '53578455065104', 31); + T('321r9j1iqm9iqdd421ik', '9631620548977442780416929948', 28); + T('244ga3cb25dbf9f00b9gf272ffg9gd46097e', '26204733276579768210781207022287836057779358', 17); + T('9868dbdh147fceg49', '57400460873969103003533', 23); + T('222604', '39400', 7); + T('1001111000000', '5056', 2); + T('ek064d', '76838973', 22); + T('1a5188n3h1b0jod1671hbb9e9a5l422948', '19083115540402109213773674981974542272012536983', 25); + T('338912e9130a4', '420150545582779', 15); + T('17b6490b7ad35b949236027026ac1c55d10472d8b07', '2138281111827887420594645460315403726459746303107', 14); + T('9xwfs0gwcyv519', '1179101895976769853419', 35); + T('3ah4m2145foj5', '204295666789312355', 25); + T('b02mmltnld2jnx', '1301255465101006358613', 35); + T('bc45885577cgd2a67db35a5d14ca3c17c', '27753918928513171463189805378534573507156', 17); + T('3141201334301213410030010112321334303004321104142122430444023001310200043002', '89237897287660630346174371948143819745060364170706002', 5); + T('11010430110321', '1476410086', 5); + T('dlqp8bdh7i8ldf6ii8', '55089869930926033233979040', 28); + T('366255123122311123125', '4437634644479092309', 8); + T('11b2b2b57830934b307aa1958', '92329386229213427978411540', 12); + T('2a111815915', '175903352801', 12); + T('rrfshm3nx845epw5rqh7ti', '4029249737737517853157864145330896', 34); + T('797ssrfvu21ikjwltpjeiw6rq', '20251792508585042855691553376521064843', 33); + T('1231751346340466252606553475546101570554617315561125473', '7603872826618045742580005490971103946545668860731', 8); + T('1f1h2gqak41d5k0il1pbicdgpddmsr2t1b6c', '23416799607567184928718366393017760124104542135755195', 31); + T('9l1cha2o1do4j9cma', '427797075500712961988110', 26); + T('56322319981030', '56322319981030', 10); + T('76cwfnedn051qhit62lftaek9t934vhhasm', '30649878915096954532359678848211944230048706163888601', 33); + T('3iy04whwds', '279168468016683', 35); + T('1bsjgq108cagj', '1581450458898508307', 32); + T('4', '4', 10); + T('a0aq6pdf859381b42of904', '24599377046503368931010489086420', 28); + T('855c8e9b7922e67e7ba4da908010159', '1602902410787815193041624442766566559', 15); + T('55311312112233002243402130211312155421350340514451512400', '37223961907514345278830328700560172586461424', 6); + T('1022013123223003223300322320201010', '85450081323994286148', 4); + T('908710466301120434499886628231275207086870624675', '908710466301120434499886628231275207086870624675', 10); + T('8e8k8d4chg0b663e0iiikicd084ed7', '7370809038638046077658634722860915413949', 22); + T('2bm2pe4i87cj1k2l15k0nfnnh4', '581467039424523178429739030625165794', 26); + T('1ncooa9r', '38948697297', 30); + T('bipk4coqlx4m5w2ixtt7153oq336', '2585657693309581263603316685828104816727144', 34); + T('1h0aa5a1966b6ad64a4447028d107hgf7a2ah096', '17572273698356237543052229497274331150348443287504', 18); + T('276544434422885080212460407577672', '276544434422885080212460407577672', 10); + T('110000111100010100101000011111110101000011110011111100111010010010001111001101100000001000111111100010010101100', '1985345177021823592895244450907308', 2); + T('1001110000100000000000110110100010010101111110010100011100010101101010', '719999719481543869802', 2); + T('92fal9add', '1002804039109', 24); + T('a4hp5lh4dc2npkd6fa3jjh0dm0mgg687mqa', '47185254555192750689361563819892235471735779772486', 27); + T('15d9f04b1gef9d08fgfh', '934578487538888755916375', 18); + T('832913', '832913', 10); + T('4g1dq064c6ph', '430443150310562742', 35); + T('2413dcab4dd4acf50d555c028f9dfa7', '2997208574424073828351508066743213991', 16); + T('5lb1d', '5942317', 32); + T('12b283c0fa13dcbgbg3b33d95g2a39482424', '13450882559601947456920748168407415837877954', 17); + T('111100100100001100100101001110001101011010010100011010011100101000000101011011', '286012825709225924788571', 2); + T('5312521314325345320414255524522421', '264602503512316272185020237', 6); + T('4h910', '521982', 18); + T('737685bb6532393c7ae4kga8k71g2b8kli2', '31388007356628532619060635382380018033403436610', 22); + T('3fnjmf', '61371367', 28); + T('avvrce29ic6gnaa0a8mwsl3m855im98u6b5', '46733255380075003831663039424046041165133968062385816', 33); + T('14750145321891718544515464840373136519875', '14750145321891718544515464840373136519875', 10); + T('535563217273266762141100234605765502234', '113492301891561204235365568461833372', 8); + T('10403204012512222022021335534244123', '319087493465006318567376147', 6); + T('2b518a84c986454h611221d3f687e2', '6642461774183699172360267164698027418', 18); + T('232111223201301', '777435249', 4); + T('2g73538gn0qj0m89ik6m', '4085811882054081271200217927', 27); + T('j28szlkk5hwfzklssj0f', '7078218218729352925375627288383', 36); + T('14715687608876514226036405014660867608606525724', '120428847967260029520597138950650653087280057', 9); + T('kpp941t7q7udmnai4x57yy3602ntyg8', '435254642075720789924201732136377372350529359343', 35); + T('11010111100100111111110100111001010000011101110110100000001100001100001011011000110100010110110001110101100111100111000110010100011', '2292419381743847793952323533642807872675', 2); + T('1657330721157546300772313767037603015', '597965777884596169919754548479501', 8); + T('o4', '724', 30); + T('413310344421231413322303241330043014343010000443140423313', '6031086358432186950670068161163571029833', 5); + T('2g5k913n7f2dlf1bb0a39fkcaa6b6bn', '682270546676077618064623251305670646415519', 24); + T('21a71aezu3ea0izwvu7e1tluykn', '59233443885800213081870684139782121612167', 36); + T('4e50ci4dmn55ebb3c6kg9', '18459998608205280317028086409', 24); + T('1nb05cm44j2bd8jgcl6fi', '79142228769239865835175770884', 27); + T('2434241221440210204311', '1409805166881831', 5); + T('701711416205015540454465462370167111721657451163343320', '5136876924230800291846439025619119075547100858064', 8); + T('3f8n1of2a38obnl8ep11ecd', '110253233544146089611390491118511', 27); + T('34t', '3036', 31); + T('tskui29ucbiu17gpko7k1a6kpdqsa', '98535358769443740139966556351639343186441328', 33); + T('430210103354454023323444555113024234125300210122242', '3645392594482175303918584334169722751506', 6); + T('140687lbfcib5h5', '13615044335277161621', 23); + T('cexrtmgibat', '45391017618162101', 36); + T('kic4b3ma5nc2plgpgkpogfoai92dng8oj0mm5', '69938518380225983695147679294614413330181200341989838', 27); + T('ahj8kgo5925m5i0054', '12112057029207057322038214', 26); + T('100110100001101001001110101010000101110100000100000010100110001010101111110100110101001001001011011101000111001101100001101100010011000010011010', '13424243929007150060864059623182269932449946', 2); + T('67', '73', 11); + T('23362457004252530156262', '2342754483992148575675', 9); + T('3011202121101030201030100303033210301111220112030200110', '1001633711617655191899956991019028', 4); + T('137a892549638a9837a917a7666a362251', '7350842488951219051870982842648687535', 13); + T('b4ikcmf69e2ol9djiho334o', '63608428236453413618284599267624', 25); + T('3t4ptor60wd4kn0n1', '30316095985110696140429053', 36); + T('5', '5', 7); + T('64uiq0vl3orqb2q80', '19593826409773818947256632', 34); + T('628el9oca6cf5l', '96872666241776197671', 30); + T('11c6027fb07', '1221383944967', 16); + T('0', '0', 31); + T('231302302223322220011101010202122003210', '216254277740074631799012', 4); + T('1ejb7n9hn98fdko2b82omid', '9044494589730121024947833201713', 25); + T('dec57b8559i0da03202fg77e7ihdfe57d24494g3', '1024122312906876955463549547517122427306089572501789', 19); + T('oomkd0b', '6102664386', 25); + T('1lpci5r', '1259890377', 30); + T('f8v1bofvwns0ot46cp03bwel64nvjeut5', '155217583886970469124492270430014237032433826545559', 34); + T('bbgb8b78016ed4cb3d5e354f5af4b0c5312c4079719', '55874981774696748806533238208646256520967064718000675', 17); + T('2a4o3cabjeghak61a44', '35040210811575576369553229', 25); + T('hci0h6iifld5ff5ilbk65b48426nm9lc', '107241447290727904013766223879143355844274756', 24); + T('70nh5l498afi1gke4j26e916iaob15', '761187094370053383900135740007646208708043', 26); + T('3c43d5cv5ddo8wv0rqjw', '727519923745015769780970587047', 35); + T('1je3a5egj4709cdc4gfi9c2', '83275359746814050652469747842', 20); + T('6a74799742895178b887', '2199503576725308160807', 12); + T('7835c68b1', '6228797485', 13); + T('4blcgo2tngsc9', '2333273210661787569', 30); + T('1g0cc21kionpi43ajcn1bpb7i8dn7', '6725433872501710944890249791746813975217', 26); + T('1hpbdn020l6rhf3awq0hpe09q77856', '167486908631010808846811171655656010754677429', 33); + T('5epinj069hpeommq0p0a', '33648845471194696230841845068', 29); + T('32k8ee4kiedel4llelc8e4ie', '23533597718626777596381780445114', 22); + T('2c32db797c', '59370297194', 14); + T('e65a208743664c3ba599a15ad608eab43ba6a9ab52cba7', '1211237383851901761546703849501641437474536862403847507', 15); + T('f', '15', 16); + T('2335738633324401748700117607031714222313587', '28474989317702039795653269668144118345370', 9); + T('480umoz559ibt', '20009609804381113865', 36); + T('g33g47chh933gg', '679936669195392700', 19); + T('f3gcdd5e82542ba316483287377cf1d22f101d5448d', '72724582067825296668190966379135599043646147680532925', 17); + T('4j3na18o4p0ceo', '30452392062677782368', 28); + T('6g8f47d79h9f638b0h', '15118189433563577196653', 18); + T('676j80k4dfcfe18kkh9', '4005482188146748168521174', 21); + T('1001101010110110000', '316848', 2); + T('137147352425256713737330565276377404642163711477430', '2123077029185636827747635674055058793964142360', 8); + T('3132230032110133023222301010323132020003013002232133', '17643398431162255932320877652895', 4); + T('68ugt8', '328443123', 35); + T('89jedji105c7att4gb6atoq5n0da324cpr', '136322375391388103649786958602863047119729868881023', 31); + T('1ect', '43646', 31); + T('263052612663632623450322', '79933753083194935136', 7); + T('kkncd128450dnngb4e0006jn91jke9mcem', '73549583692565773010150654459903537277634564198', 24); + T('mlcnf05opd91', '83782165337060295', 26); + T('fj57gm406jbl3853lg127fm46igifb5knd52bd', '18471318386634651669357017600415819167888436283401109', 24); + T('d7cd254c4b261358f8a5ca', '260887824373193911758792138', 16); + T('2e266h0', '94725594', 18); + T('38d1adb1f0855eba75gac818fae4e3ada61', '2406025984446729980588911310762723226916599', 17); + T('969vlp1nq0cmdg4p', '861520870277679404136873', 34); + T('284357144735', '92362940285', 9); + T('miok6n6e2', '11330609651475', 29); + T('200010001231230121311320032101101102203020', '9690422491199883037714632', 4); + T('86gf50d54d35gf0dc0b41ebab6847d7h2f4c5', '90668674464877887390632519960182768841029658717', 19); + T('2ani4r0nhig1gbjh8l5kh6kk2prmpap38mkrb3', '837057992878003710672168205308141026264831823314103527', 28); + T('i7vbrcx6k9', '1436460800474184', 35); + T('73iah', '5767517', 30); + T('6438038702116a311387638837207a68073a93', '2174370174074028677328289240479077494102', 11); + T('m259bbnj7a', '320249541066343', 29); + T('113130150532102045044452115001025205501441503430320114205434101', '2211604036567285168567876925597855231015638757749', 6); + T('535188052007887974548621926768462151300749858328', '535188052007887974548621926768462151300749858328', 10); + T('3e7a93dkfi27dj1bfh9i35c3abjcg9fg', '1505256982398481387593340874013583945570174', 22); + T('1', '1', 24); + T('gxpupp4', '26250856922', 34); + T('at7tc8ntw2om38gg49r1o9wc', '917677889249261147737339445563028676', 33); + T('93n', '5279', 24); + T('1290c63c030979049c3c076649b408bb37741519bc', '5669935905784594135179408409816347268201188910', 13); + T('258peq2trq01ocru', '129442317021809162827266', 33); + T('254767174882833131', '43620452343308152', 9); + T('aql4oir5djm', '3245007227292090', 28); + T('db343e9a340d3b', '26756154339280481', 15); + T('3220003201211133020201030', '1020589011404876', 4); + T('3o78c', '2072046', 27); + T('2d877kan5ldq31293oilrd82opq81gg5ae', '4464070539173170102196895822272337548717444132915', 29); + T('e126trtmrqpdrleqkk775dcnrita15', '96328326169357847704968608549063554178472035', 30); + T('2232fagd5ogl88h', '134278057960916371337', 26); + T('1202112', '1283', 3); + T('5rm3m', '7768444', 34); + T('16a18ognkkd58hmk6k884imbg8ae3a9mo8jn', '10639470795815794263674183939356306402456151552373', 25); + T('17hk3j53', '10405409225', 26); + T('3', '3', 29); + T('30882179734', '30882179734', 10); + T('6ggg25h82da25ge6bj4bf7a43ijeabg5hhf0a9ecf', '75228743181702840807285203704272617023859657921677855', 20); + T('112001120124433010232210444042123440330342432210210431102401110143313320', '54227490505239760641941694866809573616876524197960', 5); + T('15427672061537656436340433201663652647551672', '1152417987539763660190335375077130818490', 8); + T('10i2p38hnf5i1dfprkdo83i2pg10kmqq3', '63970988722559728762937017576893997855744155811', 29); + T('h1b117o20np01tdi5jaekbg', '5349088060367663935485224075196346', 30); + T('86b34a14a2582b132', '1586003464764431606', 12); + T('74342', '30946', 8); + T('436m5fa847c7m1kjplgh05cd3822mic3', '971009368598280732378011474082406690927211238', 27); + T('8f2zzdeenejdkr209z38mtkvdch2906lz', '533260676773267340578452417326723669642107198382711', 36); + T('1hi9r2c9ronogk6csdqdeh4ruho04djiiqdf', '24708859854809466983372602857862889522307039320807326', 31); + T('947sq', '10825610', 33); + T('885526373854872554336133526465', '42192813046514552728772042462', 9); + T('3faa3h9c205g13aacfc0269bb', '18706722517747698176671987201674', 19); + T('227467610c43e85', '63224810139562775', 15); + T('123031112100212312320002001132001331012220023220231232232010013003013032', '9480799240652897962878990342506933303128526', 4); + T('23345022', '729446', 6); + T('101011111101010101011011110011001000000010110011111100010001101110000000011001110011010011', '850278303532391505837792467', 2); + T('2300003300310202100220321330023', '3171593279030664971', 4); + T('11d138c113205e6bh7359f4a', '280728756129469210482775394960', 19); + T('hadfml2', '26734017388', 34); + T('54k7jf718dd', '87347282076592', 21); + T('1ne8fda3abm60jc04fg2', '332195869682574442832526146', 24); + T('101011100110000111000010001011101100100110001110011000100000001011001101011101100101000010000000001000011010100011110011000110101100110110', '237356300857539012126250205765532327373622', 2); + T('1o271fchb00ol4dkhem17', '38390328656608000668455077433', 26); + T('525314545', '9216929', 6); + T('aa64c64c793e8364a', '70247576439398188420', 15); + T('a8pfj97f0435', '125741271124301512', 29); + T('ggh534c6ggbha518e08d25f05d0012f509', '4497422234177618704742490604901750978647125', 18); + T('22311232113211320312012333000330312102011322032221', '858789346873481805128057463721', 4); + T('1200113112201030310210113101120123', '111101134074076272155', 4); + T('1200121112221000122200012020202121102020111', '184849475168462687158', 3); + T('872983082774482983787518618800', '872983082774482983787518618800', 10); + T('5mlim4nidil98ff5n', '72148072134153551039567', 24); + T('1652585ba300b5380364870b504a1a7', '364646790364235488156172628236431', 12); + T('978h66d8caahcd0', '58089002636112249670', 22); + T('1kkla3a015jnhj', '1638687175226099563', 24); + T('746213261004212350555277277331633603', '308211597500827039469103368058755', 8); + T('4gp292pk42doc', '443983278306821408', 26); + T('180b294564700829387', '44545269922505572567', 12); + T('kk7d84p3dka3nreccq1m609d0gr00p', '19233251736714867892517505234457736796220249', 28); + T('110201102002110220120012121000002001000110221212100202020001102001212122', '10612477178427271665625741528055207', 3); + T('73363c6892d237', '5740049763623441', 14); + T('n4ckfns3mrno2dp0hlasg', '4097962887367983122115091338600', 29); + T('14431533104233134255102', '236018374533878510', 6); + T('34ca18064bb40237671722a6', '141266261546214472896454219', 13); + T('28391e59d70ch7', '102217702033516445', 19); + T('3', '3', 35); + T('9qgi', '241849', 29); + T('113250532', '2121752', 6); + T('7599788542b594096a5b87a5', '49584486067719553446039917', 12); + T('8s3t8ils7jfnndobdlaemqj250g3', '164631635071927317444094845929001081303849', 31); + T('4h2iacf43m', '17869487346347', 25); + T('110201121', '9277', 3); + T('12177711606432104883357', '1226392108651838512159', 9); + T('373256e2e8b17b56chg3a54', '45826692083221550917290789196', 19); + T('0', '0', 19); + T('11n8j', '359059', 24); + T('12202002002000122002221112122012222001112120002110000120001212201210220211221100001211221220111021000', '986705214174978834196213675086407606233888004604', 3); + T('10111110111011011100010100010100101010100010101001001000001101001000', '220125906067706381128', 2); + T('68fdii14l', '700119936693', 24); + T('3egk0140j5c1f5k', '229866340801816690810', 26); + T('e5degigka838d2205ilfi7gil479', '25083920445727826356901122508495429259', 22); + T('13320313301210112230203120320113320132003233132311213212213233333002202111302', '11259010157049734086345735286363460728682849650', 4); + T('5h62g38ge626f81', '2235184586731991197', 18); + T('1011001011101100001110000011', '187614083', 2); + T('xkemny6t', '2630437657301', 36); + T('10b0413250819386b108351290b73226b6a1590b34b05a6366', '81645102709884483913181829243891844511840914769743998', 12); + T('6372c', '315492', 15); + T('dj473h8cah3hid55dj1249a426g8f94bjf9603g', '383754275040977617362152965924589307652725745488076', 20); + T('22210332111320213210032300131133223121', '49951871347577207519961', 4); + T('6be', '7749', 35); + T('1b73282h0bii5031f4d542ee31ea46h635', '2527326396121816469210042873835773485296097', 19); + T('66227115432070273523772053651452513083354117373625624', '279494516756655179230331728401746874479009481968914', 9); + T('166qn1tp23j3vaxo0ojf', '435136933431911116389704144955', 36); + T('a28coq79j', '8591402127987', 31); + T('65irso', '150361164', 30); + T('73e98ddhgj831i1jeg8g329e451b8', '19290253118088978042039590991981480628', 20); + T('526622b5h943db7fa86hab06', '381454244000888974479231073170', 18); + T('43168a72fi0dt3h3ms', '52964818504140944984592388', 30); + T('hmmbmq09oh26', '216989280041265574', 29); + T('3c8k8kehcghg', '5349260598820264', 24); + T('6cj60m6fb50mb', '143719450210177075', 23); + T('146bi1debcfhsf97ci41rgm758201', '101427316663798701296660111279977667209213', 29); + T('1iihdci3d2d0872j6c4c44dagi1', '45334034109911611232603135189813584', 21); + T('8degg41934b83bih61i664a36j2hf', '91051501141223799965271020952208632909', 21); + T('16c786802b79020cb457cb593382714a0c641aa02400b78', '2677894540962015624580557265698048634806854048320936', 13); + T('52oi3aq54pojstedhf89eip6b', '14140583748705894224928943574695025684', 33); + T('61590172645abb69183b233b54b5747962b19', '4340185485693521080055289170225554068933', 12); + T('110682585501136724772506418006240605818072213886', '792229254764182331069673929338255216691773278', 9); + T('43qxp7', '248160283', 36); + T('c9uhlcfbn1c9q5', '300876274501077613973', 31); + T('694t1v4aaosluu3ljg2ijqu', '8159750513846010634274540700127070', 32); + T('21795846019a487881188a37130208', '3419949453251184532031131805419', 11); + T('1001010100111011001111111101000001111111111010110111001001100', '1344157337501134412', 2); + T('2mgd3m04rb98mva', '10936422713010831976670', 35); + T('40210655551020225312633630466450665625251450544442661653456430', '14381574785226902109942073009116714912332534395284510', 7); + T('u7en0vpl65blxi80te38tryfsku', '422618140589562267742993269570998416915030', 35); + T('11000001011001010001100111001000110011000110001011001101111001001101100001', '14270026723513393976161', 2); + T('ebpceco7pxldgb4onagjoht4k7', '5729256960747607579936416329466508315857', 35); + T('b9081qbq5sqxvik2xumnthjash', '4499212750032844054690121752205782394747', 35); + T('32j5g5095nln6naok9e3qaps68rn9o015adk0', '136942195680745271283041728157055292644430490770829675', 29); + T('725497617273767332245236077173508191481447722770385', '725497617273767332245236077173508191481447722770385', 10); + T('4or2dg2hagf0f9s876jn30gbjq59f4hhen141', '215251212904058918759190014904099329610351440654544226', 29); + T('rqo92bmij', '39112462451422', 33); + T('64238346686567353403826531363543727200', '1312747209333613899473709033496633239', 9); + T('62637563245765352276624303141602613364172154133241311371742', '152088100153270232559520172242319908695772301728543714', 8); + T('1333330113211232222022003003', '36012825892135107', 4); + T('3001031311233030312333010130233233313100113031012022130310211203220122223211011120221031', '72290779573970253392304372068058964937709043831900749', 4); + T('10041140324543315', '2876139957791', 6); + T('135561883015772', '32093135289974', 9); + T('715pfikbdn64049b0e329iebmee2p8a8l', '13402036795732724143888377560374564804041015517', 26); + T('7653b61a4a0', '466672013112', 12); + T('110321332122033332003323233102303213230320211320101123133032', '434197763291942311469426951196096462', 4); + T('2tge8uy8p3ve', '274389336133434774', 35); + T('155151710526047560257027505415470777132176305054012751404', '638423785977537057303063374808031230555869057635076', 8); + T('a765fadf402kk307f64imh08ca0a', '60279477718441090640145794037158399941', 23); + T('3hm6lg129la75k37c3jjk51l60c9h0', '11688186075235252346472073838202560002816', 23); + T('19dogfgr62cjraj17fo', '1602752867648709555962027512', 32); + T('kegju4tfeei9b048hsvot7pu4', '56859703342713352624670750416660729636', 33); + T('83034086469954352644240830031237890715772719822', '83034086469954352644240830031237890715772719822', 10); + T('3203202223033322231020001321', '64047325323231353', 4); + T('i2d0', '318058', 26); + T('4n6n4e77px75', '328641670161001487', 34); + T('1vtmkpr6qhospuplepvg09blp', '2655480572001125819849416161655828153', 32); + T('1ihow717r0rgjvmy7l29beg2bzww8pz6u6o', '124254102510606623034672266738595978367467100361745744', 36); + T('2m5gba', '33915216', 26); + T('hf654cg5bb3idigh9c', '232857980165918636614992', 20); + T('35443340144063542115553', '14892674299147846407', 7); + T('2112220110102011210112101020202110011021112200011221000102210102201020022', '57494075722004273256340780908238154', 3); + T('5lci5gb', '4165510991', 30); + T('11', '9', 8); + T('14f90cecc7171ac6437641b5ac089688db33909', '7483364180601064196936956248122321436304161033', 16); + T('o4jfagol6io', '2307070478457349', 25); + T('7b8a012ba0c5381568b3435c3654475cc62009135804b27a', '179001727269993328584512210018248776292093962282697712', 13); + T('a03b513b148787c4cbb10177a873b4182989', '9750173084845230278730830143332448339989', 13); + T('1iairpl57sp8n6033ge2rodf75f6gdori8g', '86022733789177873849337430569285876925456258265210', 29); + T('11kdb6p2md0hdgd8bm18i19k7di080', '344319303571314782580067280084060158221399', 27); + T('ik2jnjkj9m2e1og5gdmt1p72', '3113905142614984871455941391842734124', 34); + T('1d6k39adlb79a9pdfagh', '2340516863066457913428999698', 27); + T('ioqrojfmm7gea8rljr0f4pe5rbtt3', '10772975501661450017818524272575556265371968', 31); + T('21040', '1395', 5); + T('ei4mlt7tmgt7b7m', '6985663203740380489132', 30); + T('bb8cd4', '12291284', 16); + T('20504664240177812000285235681063216130278276', '222234624997451365651218301513111340426529', 9); + T('166432654201456360026451202162050312312114151254', '10448295064112667804382843649392154179282', 7); + T('mgc3ap914ff0379i98klj8d1hgc1pdm60ga8kp', '511401910152592553129845047866126227176299771468553809', 26); + T('15570', '30180', 12); + T('4df0e5fb247bf16f43c6776ccd60df556f502a', '1738142587398168829725897493959473887005593642', 16); + T('974e2c60da2db82a6314561004ee7da6fa4', '823784761827070684801624947985460569468836', 16); + T('7lofr8ub6g11ql13l34', '9507591535540334154075984996', 32); + T('87hjr15kg78kshbwf1ou45pkg8gs91p8uu2g', '1156903500550024753523548410979938002404617165251289196', 33); + T('2211212002220100021221212011011202102022210202101210111000211110122121110102112020021', '34079911752189551791157867491366350579586', 3); + T('43am2o6euumfbant06', '267667501385619931196518341', 33); + T('1d7cj1ceege23', '20652593811671495', 22); + T('4240243333000422254145314244201530204403151510530441', '21564520097455639497199309296429090214969', 6); + T('11869794193a97004899a475670a23182', '2453835010791845353960456267792399', 11); + T('ici00emcdk9p4', '14497585545174247457', 31); + T('313323041432211', '20435889681', 5); + T('4487649166275510951938a48870316aa5872476aa88a9674', '430315194065841472277550412799061686011884707425398', 11); + T('cfgip9i9js6mdsocjjmbqk56', '54118901185544030982279736369588342', 29); + T('78020k4bda5k787af0719j46', '19018189936144091928181332395673', 21); + T('1dnihd7g4pjvg9p2', '304917124976447619715094', 36); + T('5yk7ssas3wgmlx7ahwxjm1yayifvlwa7v7', '13590391589834916615774355195549723338258732720949843', 36); + T('7rsibsdr8eolqbkot9ehpnef1hacb1b', '68787249568298723121694457609989013843031697593', 34); + T('122101012101101001101011122022010011221011220120202110202022121101210101200211110122102201022201101001211112122', '58761003770056410036945132714314493878941158522889874', 3); + T('247oh4fpjh652m53aqpm09pk2g8h', '957358665081700123817860607985546969611', 27); + T('10110110010001101011010101000010011011110110110111101110111001000101101011110011000011011001000011011010001111110001110110001000010010', '15506344473128630453531168072244872569362', 2); + T('1ba4f196d2', '1836378562944', 22); + T('q85m56jde1ijaqvrspbmep65lf', '5080889917612367493209814869041589214701', 34); + T('28k3', '32739', 24); + T('2b24473632', '15134113478', 12); + T('206804748241013587542373', '18480377731997813950830', 9); + T('1429', '22662', 27); + T('12002012011120110010122201110112020120202102122002101222', '295468412871856185863944127', 3); + T('12000310142032111034412433113144010123022231141211420323444332011201', '94937406117061099909537623729787566702636203926', 5); + T('3ca1ab294586c19884478cc5562b0594a11', '298052963486521030604056025307425922825', 13); + T('1321573434316', '96870480078', 8); + T('200468a73553a18804a80927308663a07', '4230083436897722239837342629998453', 11); + T('0', '0', 34); + T('e823de9c24d78d3a4a31709137519b7a', '41830648502807920110953412072000880465', 15); + T('1mioj28ohgl5e57ir43p9h1l18rrf7h86', '36871182090696202519639887715662651503934529590', 28); + T('559t1wf8tqjcf4hsqigapgu931b67', '39236251530838046870605814177749092966502359', 34); + T('8gk8kganb8739cebk6ig8k791c4aami8', '632357147598558623973831444596664388969242660', 26); + T('f5ll4689f0cb7a', '7691005216002972700', 23); + T('67a0a27079b1453', '8542256755875903', 12); + T('33cic9ej8', '1560004667550', 29); + T('11101101000100000111011', '7768123', 2); + T('1469a870266b763900a2151605815894732009c0581', '82262652821492357872492374378244010360002277967', 13); + T('87kt32mchjk5c29d8ba4jp1r4doni392fc', '45899125404340044355369226957575208740733387075262', 30); + T('17ogc78hqfdol3m79f', '2784763002896554190331327', 27); + T('1b354c90c', '7303645452', 16); + T('333414', '11734', 5); + T('2ig1gj5ahfecb49e9h8jb6hb4ac96bd6e0g912a', '507895713729619956403077058830524059107852124474504', 21); + T('43214ba9635', '584965373374', 13); + T('3nncigsq19', '74651509139439', 30); + T('104m0kiom60lgfom9nd', '29690896309147298930418935', 26); + T('6dddo7nuhlpt80n7qr', '693283167208501106539919907', 34); + T('44323004044422212', '753914451557', 5); + T('2kjbagdd936cdihgl3di2iehcf3cha', '8983928381495948321401576478563586947687', 23); + T('15417724275812361346116783338045428115075362702', '126271823583933789437986560482347810218604565', 9); + T('4424434032402310351550243455031032530001231250544545401045032010023', '10818193299861878243790076799343621945293694027382815', 6); + T('3lm0hbfkkf', '10338045823215', 24); + T('lnihn1q', '19313199759', 31); + T('98476750d3abd781768003d843d02ca1c1cbb54', '342681225614809442677626946848997427648271550', 14); + T('57in', '171607', 32); + T('4l0', '4230', 30); + T('13zqljn2h5210jch67r9n', '14850078065778626446235105210315', 36); + T('17pcmfkig62aeakj4bbpp6abe3', '787221900286688152294317969622892409', 27); + T('ca12c1g899b', '128028933827791', 20); + T('1442561330613212634115655230112622234401141505', '177775307843218888019761099117675922373', 7); + T('1322323203230232302322231320313023000300232211112003322223102', '2553168476684154228725217265795967698', 4); + T('95bb', '38331', 16); + T('7knm', '228492', 31); + T('6d80b3e4ai96l315j64fffj4a2b', '528476806561481039995566993561707151', 22); + T('28598oa3', '18598623319', 26); + T('1', '1', 33); + T('57434427908678899a19616398a30a5aa9', '131732495350301681645134300922039080', 11); + T('ugvsalo6lid801bhequ2j3gm69md02dg1', '310169070310248176158440173181169510159391272861573', 34); + T('22021210220020120001110112211201111212022000100020002000222220201210111220', '186744606233199646302344057916276861', 3); + T('1mdbdo81sittch2c9pqmq23', '548604384913200011277372830177463', 30); + T('23160307511727067463554413', '90761577315987134273803', 8); + T('200011211221200112210021201112020211002012110102110112021211', '28542801355511656365238383949', 3); + T('37992', '539782', 20); + T('24kcglcnbq2n412', '238120258337878748231', 27); + T('42ol3e', '99487004', 30); + T('403734699498096870624883', '403734699498096870624883', 10); + T('211321053050604411', '505485346237719', 7); + T('78a27309357a327', '2966574256778513', 11); + T('461020385428b040b79533921bab8', '69259761610665370549777502991976', 13); + T('b1fr2rp41mbx3xncb0xfmra2d6oqw', '84042654646449163888200240417821757512098356', 34); + T('3005013424350503040343321122301430430201', '6735784675050747106650763807609', 6); + T('38pg3n2r', '139184565195', 33); + T('184786kd5415bn82eg8152hkhj0kgcne6n91gk', '1567411026865786158336358856957759587592645854583252', 24); + T('212303112311202220301131213210110230010201122003312032111011323000202002300331130310', '226839378801283979800479091211239181319725606229812', 4); + T('308432779036791936833307501538813', '308432779036791936833307501538813', 10); + T('5000a91de6305', '1407420280496901', 16); + T('be8a37712eafed235251de23df', '15096126834474288185885113328607', 16); + T('11110101000010010000001010101000011110000111000111011111111001111100110001101001111111', '74057344034249031021697663', 2); + T('4agdca9f536a3bg7367905192f0aa7cf28bade5026', '1304733992727463155067887261543758863312332333333468', 17); + T('1595', '2040', 11); + T('mfjh4f16g9qlgi1l6qokhf', '55420676304645035287654438132523', 28); + T('1', '1', 16); + T('28425704a041274a5416a3555399', '36212667591400568262055481715', 11); + T('4866ad25280b1764', '5217047593452509028', 16); + T('388555g50d2d369g7faa273cc55a6e8f35f2gd', '11765155725634973359235955063513317904611001160', 17); + T('212cj736k0c', '34252959577044', 21); + T('1202a1124e4e326e05d05e1de7bdc94fd25', '765196471729486476120236447628523003605404', 17); + T('79c17a306185a475639c20019c', '54786259681378319011782543509', 13); + T('1011000001', '705', 2); + T('11112122011212', '2413850', 3); + T('3413223330301224020104103042124113333023103342330044234', '214721484670156988481537697242134221819', 5); + T('4081922', '4081922', 10); + T('9dcgef01fh13h9066', '1185510195771990049194', 18); + T('7ec1421d879ad37189383a', '39838461593516143724886355', 15); + T('4556620513242533005444500602162053362636156165231420513026553350', '842757530742166745590516121006132571018257988845461487', 7); + T('887583326a0a09533114847045a6', '115229604461058273430446100080', 11); + T('soh3nc0r2a', '2912725556543746', 36); + T('1041143200233250', '525242817246', 6); + T('p8ihzekylx3yw1ndrradu1xvdoq80b8', '1233400406203421024397148451955822220091322400148', 36); + T('7h73garbjseceg8ekhef152cr2699', '672439504915616762220698973393004587395750', 29); + T('ml9je258hk2ie6gfed9igkpn5fi0', '3652887835869131415590854688229822429384', 26); + T('1b7e942f819b', '30230465970587', 16); + T('112341204334112423241230302230433023330333431030430', '116427771469295513780567588074080115', 5); + T('50g66a1fr6k1ck41broj1mcg69g9lik', '130468150434356532266429210273257638981218844', 28); + T('3cfd5e832db0e5g118297bc8f985g58de7gg3210', '3653875188901914332922344609876154431472747363931', 17); + T('263a85b3', '641369523', 16); + T('4842428884713208430441876574523584564054565420170316', '22921456423834362632075410365760509919770550726785', 9); + T('59m4bs422rhhaaml8j07o6ls8so0gn1e80i', '281062888625341158814391292979611212560325630954348', 29); + T('b1bb', '30545', 14); + T('abh35f', '296959741', 31); + T('19aq117k2sk88', '468204151297586117', 29); + T('19lcg0g7k3khl8e4ak109843a5kk1c5', '27236272682373056800446620591828837123057', 22); + T('e8alej65ca3j32e9kh9gh', '24658599960999816341036277260', 23); + T('455919786b458acd526635037dca6075d88804346', '30703490401628056566732211795733293107803742570', 14); + T('7txkbf0ec3obw', '26547103232126519067', 35); + T('38', '56', 16); + T('5dhefbac0e6bj26', '9329618703405855646', 20); + T('101e9b30e17e', '17723638735230', 16); + T('2obir141170utjb3pdqeq1g2ld', '53587818951559954153548512220759128235', 31); + T('1114b1711481a37b40ab782', '603474625470367571048594', 12); + T('10122212212210020011210200001010010102020011201011220002110102200111122002120001110', '1623999922600731648116424421855627143570', 3); + T('a93ac3066111a691314c6b5b3ba516270747a9199a08b7', '1436959793947238532222831766204822671586011493120070', 13); + T('58480962a86729768482180130940604', '1106822665412898914406602330090165', 11); + T('131301223210133302302302221021', '536401454673111625', 4); + T('evfp0fsfkrpfirrmh2jnau895v', '1372783108572463878894831856355242799710', 33); + T('afijc5fbwglvb1', '1235206740707162508111', 35); + T('310011232113023311032211012023002203301013101011212', '4126950927538421833835204120934', 4); + T('6e8ngmahe', '1844460496346', 27); + T('1bpo5h74agrcgoo6b51cshgl', '6086700625232934820042018053764608', 29); + T('24351022035415021620230332665631431152316000314500', '680247907196347864914631461520709331522883', 7); + T('df8661ghcbaahg6h0i5abi257', '67664436903091499279834668430129', 19); + T('5a3282a143771e795d87ee5', '425024233293429042801085115', 15); + T('404244212412030422302034330214300441441432', '190258475138999060530910108992', 5); + T('5on', '4027', 26); + T('6cffj7ihad83nfiiehd63bh', '15113784949593526393490088172505', 24); + T('23k322g0c7h9', '2066164244508171', 23); + T('689hd3303cd606f1f99f5afe0a725890a85bf07', '3247974309774379895380706745511795262908184133739', 18); + T('27358340790499664c9a9c5b910121320b13cb22', '71092424548919054827902632131879373254277531', 13); + T('5hki', '198876', 33); + T('bclp4mbe1djj2b5o', '33899350519431680218890', 27); + T('bpgdh6iee75ooge827a', '353340952670231280445716776', 26); + T('d8bk206fjkj15ie4dhcl3cc', '12138152877944519436661702674041', 23); + T('333ljh5b6m79h6', '1581616916999395997', 23); + T('d2qxawll1gbiiij6e7ln3', '99526840765015723857527315388533', 35); + T('11876187218c934699c6057131c808b5c45c9ca0503b65740', '332245795948615376820642052747656044479282749839696434', 13); + T('5atv', '191563', 33); + T('1', '1', 26); + T('311', '375', 11); + T('ae7b24afb7a1dd2ad59ef565c636f4af', '231925067868680755427379099063532582063', 16); + T('1222000221102020001212001011021122', '10919408154431444', 3); + T('1256216662445441356235433665015445002263033', '438697014198691047518334542836935784', 7); + T('626gmncl3ms71p6opdash', '4078656173551560415187079606707', 31); + T('9ghhakhf1f0bi35d5c4kdh73k433fdk8h2ih23j', '1720533821779021495938138198647013851872290282091672', 21); + T('5ei7ke0hj52j00eki3pr06cqodpifoon9', '1016743133813841084879455508016504611887385220299', 30); + T('21titq3hucthn6f0of2616njf40', '1230037399641719218164443592833669976942', 31); + T('2biej', '1933639', 30); + T('q', '26', 30); + T('67978744699025702245219518654', '67978744699025702245219518654', 10); + T('1253111112541554232', '151023434718764', 6); + T('111011000010100011011110010000000000010110111001001100010010101101000001000010111010110001110010010101', '4677623609407056260314308484245', 2); + T('201211021000021122202201112210212212210200202100', '58567569643036490851386', 3); + T('5a88292b44c720421cb894b3a12', '533915890363656397491382509270', 13); + T('2h3e9hh2ib08c86bi0f0', '5747634541497108642678548', 19); + T('37567a0687g4258ga436c778d3h95h2818c8dh9', '1708150384691444782060059038629023779853876775407', 18); + T('givc5j13vrst', '597831052538408861', 32); + T('4131234010544202445323324233414', '941033209809342819174418', 6); + T('1619m9di82d46o18hnd1m3e1a36576530', '673416020131515842532807516881375904836815700', 25); + T('9m0', '8760', 30); + T('88xp', '353980', 35); + T('rbn8ep3b3rlj980chlm8qq4jleq8', '1191977843977043837841082225345577902324552', 32); + T('d3eahfcacbd146d48496hhah3667h', '1856055109840344885967358014189889063', 18); + T('640ee4mvnfj118ko5o7osb3arkd', '85533992399600604195850584300979623830038', 35); + T('20', '62', 31); + T('4012233002114142114422214001201340442021313142420204432130402210244423', '6878505816170177212464782885897033424143266493738', 5); + T('13e52klc4l', '3037222455669', 24); + T('r10qcmspcqekq3kpvdbqgbbtfa5aj867l2', '9346556545971537223317971555464781544415436716699000', 34); + T('14mjb3el6fba077gln', '350780406639162972508175', 24); + T('hiigh749709hij318ad53c27b64f5eaj7', '36632370970561829556172951184321651113284751', 21); + T('2b207beb5089ejh85kib9', '703442893999669422870353721', 21); + T('2', '2', 18); + T('4g8h9d7qkcst30925i7lrjbcn76qnlr', '16140733323463101968248981740436855171786353768', 33); + T('3602178', '1248395201', 27); + T('26jfj0fch02309bk10k', '1470277628960362858087031', 21); + T('h771za89m9jsnkj3e8', '4927970904269521731241666544', 36); + T('1hafgfbe', '10357681539', 25); + T('4250d1c09bbb3867368b696bd811d490115', '3875741601165944284125909641413718735527', 14); + T('339ef7a5f81e079987fa8c3ae71', '65437348931585993956193860824689', 16); + T('7cco5bfijg64cmcm1kc7hnck83k46', '10409381677342479533995796423788528575106', 25); + T('7cf5td85bcllkqq98pdui1', '154169249902641839102789533784495', 31); + T('20621a550a42279185769998249a3', '295806720939573663643677166305', 11); + T('1mb6d83m4c50sle0oc7pd18ca', '1067940877091749641918965208695920032', 31); + T('54b6ca52773', '741121768884', 13); + T('10225075515717745075', '1388960944958441156', 9); + T('12033e19', '458883185', 17); + T('155430719053377666277386799088760775939080', '155430719053377666277386799088760775939080', 10); + T('206142346532535062330364656312416520634234521450614502', '1312201569241680518802305709945691263438445736', 7); + T('111011121211', '259249', 3); + T('4a0687a7a455a92b8101638727', '212245593684005354604310715375', 14); + T('15fhdb8gcg17ca4daai4b', '49141072391005691770808896', 19); + T('35bmllo0filj87hmoe', '3639448929253283009287022', 26); + T('30cd1039500b4ab6dac54a49c614bd3a851b1b4', '1502423755197224198218677083417578305925869394', 15); + T('19ck0a7476b8146ci0k7b3e6', '10784621227701209583410027023454', 22); + T('jh821e8t4onq', '703971165467730682', 32); + T('2ccih998858bf1f1h4gefdh98a9kf38ljgb', '11288708847794836487628299578289569053830362671', 22); + T('136030', '136030', 10); + T('621301550003036553464635301440623601534020222336132356653', '1336170888382484501976014506902352076175198389248', 7); + T('c7xk9wfj3838o6su0eikx', '93045511580118968344881438576158', 35); + T('npj', '21469', 30); + T('21a58906c334d0208cd37b20b0602', '262325768672641862422584585884490', 14); + T('l8h7nee7wqtpfw0fxhdj', '2663559215161630225508053538953', 34); + T('2', '2', 8); + T('1010001000000011111000000101001100001011100000011111111001101000100001001011010110000010011011111111000011110101010001110011', '13459691377936385656205820498694591603', 2); + T('6aonr', '5152317', 30); + T('141023221242233231310523004', '289378994775032790796', 6); + T('1220120200002120122020021', '539548971703', 3); + T('b24med8f1f2dfge0c', '483364700771293735772052', 26); + T('1840p1', '15608139', 26); + T('ztl1vn37v062ms6t', '7919265633809577167295029', 36); + T('20425420504320415140035236441560246636135235', '4563739435349096802532430020917212365', 7); + T('1m5ccvktskp5', '157659130001415880', 35); + T('8o', '288', 33); + T('240c65a596', '24532236839', 13); + T('983763db8j57bchehcd435bga0e9h0bac', '4040882893213836419463664776313088927524612', 20); + T('2201200102221110020000022201221010', '15170686366681812', 3); + T('456374', '1109896', 12); + T('70m8mn2ba', '1073573407785', 25); + T('451aakninemmhcb6b2h1p227g0n56od8dfs1', '20853955252647719617988537600784407469238338538745341', 30); + T('j14k513fd1elhc79agqssuepkbcr2ju7', '324947526914571293920860403904607004779325895507', 31); + T('22680488', '11036006', 9); + T('5c3bg11jf751fh0jg60i7gfjfdi2kgkl3', '50354032529134077402872376698216146306223649', 22); + T('3c650110b937028a4799a6b1a55b772c718182', '651168490122119567243142061008190429370417', 13); + T('1221032311120020101101033230200302323202011313101001003132221111121303133100023322101132', '39371883765686973625144887114028494953808808960304222', 4); + T('4099gl', '25860025', 23); + T('25e8g63gff11gc17d08ea34826ddbgdfagga', '27273517546344897300623839432182770845480659', 17); + T('12a96edb754d4d6dca', '116318229977030547115', 15); + T('a7r01598mcsok', '3634911087742907341', 29); + T('8lugnnh', '18735214013', 36); + T('462338084841', '462338084841', 10); + T('3203123', '14555', 4); + T('1jhwtj2p4rl', '3250085526472387', 34); + T('23044346313736', '1310562293726', 8); + T('5lpf0fh0l9fn7li', '15558130210796154919424', 34); + T('13do6afq9o84jnaggjan11gq8ihgmqo49ko18', '3821564988333362537058780890229032055458378165509784', 27); + T('18193e4c8dlc5hk7iib', '38609061493103824129546527', 26); + T('1h02g1kj7832642l6d', '117460092015601351103221', 22); + T('72186117768166364743807116578515315415805223867883384053', '220528602283214676716138238392247863019093407607117978', 9); + T('6ik6bc2k96gmi0', '3438006927862011506', 23); + T('762722210536357403530500', '4601638793217664004416', 8); + T('2dh3ha273465c12f', '41472924050752232897', 19); + T('104413305412351302314043503540052212312', '419908180423076828270954660852', 6); + T('6', '6', 13); + T('1g3hh6bfde4f35', '77925319234957436', 19); + T('49ig78819he', '27748810576749', 19); + T('22412142010434432110021004244121', '11975887279273703196786', 5); + T('2bogi', '1703507', 29); + T('101111100101010010010101000010100111111101111011110111100110', '857171914848189926', 2); + T('gtnjivuoj64ki9', '624581256882734387785', 32); + T('9h8f5nh1ph3qe9glh8lft06p1oc5k0', '65721260945294966804233759504775006489069100', 30); + T('151132121055324332334031340133105132441504412305001233331', '70457366252732538353135178251613420869315383', 6); + T('f145aggec1e7jjga4i97279ef', '252676495567805480924286038779895', 20); + T('7de7cag27639158g0b565910d1b0be23c', '18504577862769439979869071005055514681936', 17); + T('475294666089764828847579973438', '475294666089764828847579973438', 10); + T('2301', '834', 7); + T('k8e4b4jkmhrmdp6rp1n7ec38o555275b', '14773238036137641376439746063291883553488634503', 28); + T('fc3f66gd3m6db132bahaji2b0', '7457653487404061820814558204897923', 23); + T('111222200010332331131301121103332210223130202030200012032230321111220103200021113', '1978880662522375880691401912877401491165359768151', 4); + T('75899793636343882742', '75899793636343882742', 10); + T('eo8496ka6glj6c9g4uv7cbnq2q0cd4jpg', '377805709401704966595895997759561079844005820122541', 35); + T('7nacmugtp8k6xm66a543', '963315084681439473869691613071', 34); + T('7', '7', 17); + T('47cle2eajl4d4li7ahg', '6332844204194445871554582', 22); + T('12107170aj5f52ielll1be', '16962840667954795901484794380', 22); + T('55bww8w0t0eghb8ls55dcl6ixlwv15olhaq', '162308148448278373157076294786164277284790340959530326', 35); + T('484ja34e81gf135j3e2ac56e0i7hij', '236890988768063667108553222280578943179', 20); + T('2243232540752434710611323210536463', '1469808842581774120550500842803', 8); + T('p575eb5ca5038d3ok8idllf2e899b5', '2726961239011011355236144568961137638537999', 26); + T('2b1bd606021a1b', '707917646595659841', 22); + T('2ed9f432ejd0f11jcfj1f5al9b2bk5nm27280', '2223214645127163142355016653760898495984516506656464', 26); + T('152bc54129052ac50', '2987450448112457894', 14); + T('46066728688271603364', '6316495850515234477', 9); + T('2g5d0h7g0gbmf78c79243nn9', '148727643469245968217529721296881', 24); + T('15lf11bf87j7jci121kma4nkhn', '39880191485245317293588274721343663', 24); + T('hh577s4nnlha0gi0s', '4402448697185571173522937', 29); + T('ca713dba8442e', '1647538652528819', 15); + T('284dfddhg', '27099949678', 18); + T('1610kf97j8i041bb', '174505901776678878593', 22); + T('8kt18kxjdwg4q3kuvknkwf2m23fnogq', '180423804171461723659383672666400155952750669236', 35); + T('g1abca5091b2cfd77a42559cfa1705882e81', '187251468917148330282582773146445435959176796', 17); + T('3303131212212212001121223303303323000100022312113322022110101221231332303213132', '347481362131991515099107296900808626703171271134', 4); + T('10718a989932057354a4601117981469033274a', '3961930126752739711210993249170997323907', 11); + T('113e4g13546f6i9ej14ii', '111073560433528497263849978', 20); + T('2li2i2lfj3', '5308535621389', 23); + T('54knqyisd3f1qtn5lcsrqimc5', '58593465649571042522289076646796218500', 35); + T('2010022010120011221220010122020200001020022101222000', '4570711546653019923644655', 3); + T('6042532553115031666', '109306485388096438', 8); + T('6ah6ehccca1ed30ch49f3chbb6', '611921790018452815367943572833440', 19); + T('960087e1ab29243087', '926162178026733465877', 15); + T('l2lhfda4f8c2kpecq9e', '4439523739653117128740893076', 29); + T('3a8fq8un9i68qu7nfu8g9m6rne', '64072841936979423961636673759087451780', 31); + T('20865277352048389955531777302333293367153791034484', '20865277352048389955531777302333293367153791034484', 10); + T('74s3lnibf977jg6r2kfq0785hco5qf6ghsjq', '10952987102780656964577606541072916821267549127588375', 29); + T('aqrwo4u14gmsqb80p606l9c', '53151205860039125228759211533105730', 34); + T('212222211102121102002220202102221012012001100010', '70884984454458032820162', 3); + T('2db1hciffk0hm0e6k40', '8389881219953798948711887', 23); + T('2kcgcdj47ii9fo9d63dk', '4330238080712124271959724007', 27); + T('6e7hc7ii81j52091i8', '88076484386866246472768', 20); + T('e7772iik87lc17dmagacj1hi282c7fl', '1017940669032249205173001354895673774197894', 23); + T('e9ee099c86950e5cd055c3', '73154233593336417594233808', 15); + T('114320330134242422200031242123411112401023032042310442412142213311341204321', '7345000213858373240721280688086693345479506507366211', 5); + T('j88o3pi34mb99l', '78248748988488054576', 27); + T('15d1fe6b5dfe7e1a87573a3946b42cb4437be39c6', '1993149199833169001344544884949567309662274861510', 16); + T('1ar5ld7bhpweb', '2214925368227004290', 33); + T('2sa2atrt1bhh1a', '71145664465186679354', 31); + T('18rgp8mhc3g6cvfamnrnkev61i0lpr', '56950731880511586745670579431418877456701243', 32); + T('54750443750225316571406736430512671452166747632', '1958033248391176678532214751521115754712986', 8); + T('10033312210131414322321312324022212541331410155345315450', '6389651250992348768646795839155231300106070', 6); + T('2001', '55', 3); + T('110110001001110001101001101001011100110000000100111101101000111101100100110101001110010001', '1047466460252578697656357777', 2); + T('24dc49e9660gcd', '183011576916166653', 20); + T('42122277123352400676', '615387804455272894', 8); + T('0', '0', 16); + T('1110024243220212030313224420010414040224', '2257245111890157772228268189', 5); + T('5433a', '111070', 12); + T('4dd96b56229865b89a161511122a14600007', '65059146911706674028661393829083246616519', 14); + T('4m9', '4269', 30); + T('1', '1', 32); + T('34233430413121304312422', '9322841380150987', 5); + T('61mp8fo48jlan56in9gmkdhfg9c0alh', '17083001674217793608388954599991083027738235', 26); + T('32hvfwcdfgexkaw0n6ifo45nvnu7j', '52637066972675961314961424822511197998983139', 35); + T('noodmkbwaj9tm528epefa87', '60668696101764660552956150804345518', 33); + T('50d7k398dfikdc954iic8bjbfe3jcb0i98e81c', '42044682017147219899812045714230284465317216035715', 21); + T('57c89kfq15fd3pkco0', '67759519628186541120701520', 30); + T('53176', '77402', 11); + T('101211210202121000001100112010', '82697070088632', 3); + T('12d633', '905898', 15); + T('b2rtvc8g61c437iddjuthv8', '28319832096437414138598301478368955', 33); + T('6ga8d5h5g9f2f1fe4hbc9c5b7', '9262426469570471976898418380753', 18); + T('17110233227503265253014384471688317133280470764448630707', '54520949680778856452144908392364747704157731362612641', 9); + T('36a7c7709df98c98d9bf0d8037e2e374f003c1', '11394536016349300502893187504942759921712585249', 17); + T('211100001220021021121201201002200101', '124166832733905544', 3); + T('1l1qjc84j7pqdb5o8lnp2js1qo', '6267531622610675770077756739540891303', 29); + T('7bi', '4314', 24); + T('1d58555c755829deb105aca86ad2add', '362671265369959944822892451673948583', 15); + T('10000101011010001000100001111111001110010010110100011000111101001010000001001011001000111010010000011010101111001111101101010001', '177330090800059334179372876785623300945', 2); + T('5rmq1hja3i2htok977', '76520833163682115657688317', 30); + T('d2brswannhgj3dlq5n05', '929158307404877629186032129341', 33); + T('4pc21d0595qm6akekaffschk', '45628774689731521025778390467417330', 30); + T('jpa', '19044', 31); + T('1691716c0670488844023aa40c20188381b82cc302', '7115945393660134960643716538173622961377844730', 13); + T('djrpok3d6kkfg', '3184685238921417716', 28); + T('18shakkersigg179aaslnd1', '6207140351700911819450122511814847', 34); + T('16gii99hma3mili3he91m', '11521470163607970255895536922', 25); + T('4uk404fu5r5bdwu1ak9gand07697', '1096743830617243267478450024447881641715561', 34); + T('177a69e65c0d5c23b', '9858342665710869131', 15); + T('20a772797373a501749a', '127724571524906942090', 11); + T('10e5a57g96279ah', '391367132694107585', 18); + T('1h7hhhfe2bd6i11d96326g7d', '494193280655696512736123393974', 19); + T('7672ff747c781c06ec82bf84418073cc9158fdb', '42264090573810039509111928267687533762028343259', 16); + T('33908b093481777ab43bb5271273b0755570243606', '584310085758916620977709600135575563060196262', 12); + T('123231331132230331312022003', '7801961318933123', 4); + T('1', '1', 32); + T('66je9gr0ha23vrljqp2tr', '14542761384658132443821891589168', 33); + T('50tr39qo5m9eja', '594238253683306042450', 35); + T('1010', '10', 2); + T('2c7d4bd1cd6167cbb', '6311101283107439389', 14); + T('23e20bfb8hhed30c2c843a87badi184297f567f', '8599266531496302272627406261206189142556716915261', 19); + T('41526780b9a5a17239720c92a3a0b54135bd39b09', '28686410109773337194021152769532941934256864189', 14); + T('ecml001aqoe9jiq', '4296982938641008844248', 29); + T('9c9294297137cb8c4b01j957', '8072196030039931406649024315707', 20); + T('710b006a61846c1b6485b9a2', '295698290243613321492343567', 13); + T('lof0hf', '448075216', 29); + T('1492380631939476422', '1492380631939476422', 10); + T('18617787217', '6853402807', 9); + T('28', '28', 10); + T('233025524522200322430510512000143324053140010223351404541514313402', '982649847712429965283271312633628451452240511169738', 6); + T('1c1a6cbb', '308835626', 15); + T('3i', '114', 32); + T('1i6chph3robe3ko60b1gd3fleqf6hdcfo9j6', '738415477605791828889810374125732142138172965238442', 28); + T('416d94816d6c7feh0cde02eiaa6iagf01770c', '44142204501594531372888971214564230677789639395', 19); + T('5fdf6andc0cblgci248bob183k', '499314055028383130819138235346114470', 25); + T('b1219a76298532a168636973ab', '10587337000034099908821844595', 12); + T('1rg6o01h5oi0njeqkb7o1r88gafndlan7', '40440720236650984662808240649217148711435143915', 28); + T('kc7k2ddbdg5m4fg777geg1i89fajf1fe', '33580873055276588035833179463849652564714137', 23); + T('4c7', '2807', 25); + T('50d68', '256148', 15); + T('3j8lfa0', '921431500', 25); + T('4d21233cfh9h2he4', '314977287497448880315', 21); + T('22ptrk21dlua2difpbga7nqfoo17nif', '2979844012644061261709624973913718814284176975', 32); + T('18ccbk9mn8', '13768771588524', 28); + T('3akf5a1okjdf9i2', '220305847680983116834', 26); + T('b52', '7002', 25); + T('20f293dah58dhi6591774if90', '10002849645651587260522047835251', 19); + T('nirh2c1rlp2k3', '8368956114944618930', 29); + T('141671751106136325535453330430775232437321543', '8325279825157794222097655945192898667363', 8); + T('58a2b3d05b929508b18', '2400541066384412592866', 14); + T('31023001203013012002021120200330112321120213130122023130020222330', '1120571363755739421100727158868165036732', 4); + T('72e7bed4eb579abe8684d4908b0184cb45ee3b33dd', '11938380317430849854727246010136297539608439111633', 15); + T('66d1', '26321', 16); + T('8j24l7eh5a14576ddaaj9i3dabcifhh', '166156615220176117320330888289725612288371', 22); + T('9i', '207', 21); + T('1110000101111000100101111000000001000100111010100110100101100011001010000101101001100000000100101011101001110000001110011101000001110', '9590478319392434269891419865097211165198', 2); + T('115156027', '481106335', 12); + T('1144850cc6', '41741581011', 15); + T('1487132dabd4006942ea4621e5753f54520400535ef3', '7680300593500415724655977000547063327920546737512179', 16); + T('10546275881470641020601788147547482777581620632', '83907179991104098938515481963287844552882413', 9); + T('334cfdf0g8g0dd78084a1e9c9fcdef78ag8e7', '4924973649792829875901725536375255033046058627', 18); + T('2948fb1b9376', '161562182577000', 18); + T('21042a641728100chad9ef8h6d7b7c3098dbhf0', '1031417459611470715458453074567717343310137625146', 18); + T('15f2bjhmi3jane4l65kn803d0dhjmjhmf3bh48', '1443199917648326594528212198138420579039397582219432', 24); + T('492c38263b15288875198043a58417aa27a2322', '10065688820077810586833059893292051419004944', 13); + T('33233013302021011031220010112', '283479533598179606', 4); + T('4od7gmh2e', '1032178487094', 26); + T('9g08hgf', '463091841', 19); + T('3do7n1lfh7m4m57onajanrnhqn', '5277516132422516396735738514310367807', 28); + T('2322ca44cbeca009cecc2dabc607c253c0ede', '4826418133925788145647532256925808902342109', 15); + T('1101010001110100011011010010011010100010111111101000101011111111111011011100001000010100011100010000111011001011000101100010010001111011101111010100100011000010001', '9703219505953893074023234217532878016916428047889', 2); + T('8ca', '2250', 16); + T('1101000001100011011001110000010011000100110001000011010110000100', '15015958852762088836', 2); + T('dvjl87viis0gkrmcghlrd7q', '240395536768968656611032877948245158', 36); + T('2a', '82', 36); + T('111210120022010000110211002221221220000021220211121211021120001', '584945674767242374610105648344', 3); + T('1ai9132i20a5fgi721037icd8ag64g', '19134774517743882367815280823402029739', 19); + T('11110011111110100111011111001010001010010100010010110', '8584226467555478', 2); + T('g703h2dca60', '272444928079086', 21); + T('10210020120001121102010211101102021200220021222120101121200121202022202101220210110', '1679155601670174046538269979766608832201', 3); + T('2d4c0a43168909a302959c729a7d61dac88c6787673418', '242496727538337888410218936739166557375410421370281048', 15); + T('44182a6d51a945a6a5cbe', '1421060022593917761957254', 15); + T('322125', '55977', 7); + T('7263581986004721570413a2739a67aa83484237817a00a2a', '701827631601858999302922019818257157812697798613760', 11); + T('5c42b9c7003c24696620468954b29cbb3800b450', '165259584116068790832545074144076581971429835', 13); + T('1fako8578e8uy8bvlnj95', '10936625165885490373805378810345', 35); + T('ess', '14350', 31); + T('nqs63sn7ska0afpfj9ob2b5', '3562053305005166648568447677059132', 29); + T('4153913738413582813112676402665839356882390406053', '4153913738413582813112676402665839356882390406053', 10); + T('10', '11', 11); + T('21ni3ig3fdm5ak24qbg9faqpnc648bgofgpa', '923922508138801830427813012811681004567930200769030', 28); + T('c5063b871', '31613731531', 15); + T('133113123230232030111101031013101303211010113000130302330313013222211013123100', '44767247228757594878589756004233521788175546064', 4); + T('ggjfk4cp1', '3475798835003', 26); + T('c25q', '237815', 27); + T('10c362c311ac7a583b35bdc6c2989b90d6abcc84c73b427', '56002849258572207947726688091124294570134439897478763', 14); + T('177c59d0fc389g3340g71f79a2b811444e5f1355f', '23761033881708446864722030370719581689404930279586', 17); + T('122212220012221002101022101210102112212101012222120021111202110222220100022220211102202012122002022020222021', '2239868430693007918519867980663532667540649890303176', 3); + T('v9uwm7cslow8gxma0vyq6hlymtxplqg', '656661129725170073836410425741911682455436847276', 35); + T('7x08xllu24op4byosm9ltihxjewibl', '10747943758603250784828832033535923549465833153', 36); + T('3ajic8h4jji8ahfadkd71', '979685512478696901448807321', 21); + T('39904l73ja8jd608cg076m3anbb7k2dhglcl4i5', '95128101998246343813523478731453034388462265997768885', 24); + T('13d75b964659495122b477d3253b201b8', '6087380592454876448304034029996695910', 14); + T('239bo8qho9dbdf187i8f6h33i', '114276554361298256463392230807709014', 28); + T('r', '27', 31); + T('22439348a809183a88a50', '1492002089284103770835', 11); + T('11502245241132103500255402550454540604341255554516024022114521111', '1519687960622981585676593638948280395813952883484605445', 7); + T('178ac7i56c101dagac80g7', '994276001910959615043844218', 19); + T('ab32097dd97de47c4f76930046f32a1', '14222362164666534040463596276719497889', 16); + T('h70nie89fkng', '41202353353372466', 25); + T('8dodbheltf29ensgfend90tmv1pe', '367182433456718603593958892406561938835246', 32); + T('2ro6d78uogvvqatywvhy', '1028055008673794181515446812022', 36); + T('a0je', '80394', 20); + T('b0a7m1cbobk4rln', '8334455843425820422974', 31); + T('350', '1562', 22); + T('ad5285g52hdica4c1a0', '1113997739784091562392939', 19); + T('1266513240443235025011542435215551161116052', '445444030178987216515247159044782503', 7); + T('i9fhkgc7a8fehb8', '3339213521202402120908', 28); + T('5pkrtcfr8cerqo8ipka8kme49p6ndm13nj', '32557148939358327987280716163959952063457820750409', 30); + T('d881c3d55a3d9a1ab22155bcba6880a32c831', '2480623568212133413145101410008494284467243', 14); + T('1i181nlbf4ihf2n181jlbc7mjl8kf7ki4n', '6174255537646104877910561539949873285987455223', 24); + T('12100211221201110111200012210221200011120011200201111022212012001101022221120021220010211101212', '1264246371202182024824489688458885819892007097', 3); + T('18p04j', '26779257', 29); + T('175smiphiert0icrad6h69j43ktrobas6tscr', '186110422740954237972811643773335017903308645946068587', 30); + T('j31jf849bhd8ge7ik3', '5562425811185304078419043', 24); + T('aa26298a', '4348115833', 17); + T('a', '10', 20); + T('2005de18a020a0de6882170bc1b43298acb4', '291477737292846364616559097414390155525994', 15); + T('889879000997066842936930294683621095', '889879000997066842936930294683621095', 10); + T('bj0bq0nbka9482gnfj6i', '18376271230937994256598748855', 27); + T('11210022002100211112121001', '1352518851547', 3); + T('5cdb', '28265', 17); + T('wgq0sm8v88qipu4jl55wdmfs3', '185048329912249256046507375601716367543', 34); + T('3hhbfa26a6ag0h657jngjne0gm', '119674172072479416223149913309701526', 24); + T('966fak005ekj9e91ke3ilf7h6', '1534617368221003391050212773784944', 22); + T('1d4ih6d3hgaib', '11991106508998187', 21); + T('40gvpk43a0i7x94g8oo501ccbpu', '26430135653734764560098269423411491767516', 34); + T('240ba639a2b64033773588e7b763b5135', '97942534619350353663913105286511742775', 15); + T('683808a457ab1b61b6d60339831515', '11391383242216318199571205789803407', 14); + T('9gg6j4k35je53jaj150', '6181958445081757496538513', 21); + T('321313001000320223101101313301230313301132212222023131032222013000300000331221311103', '338247732186199822617132923037597361245860046216531', 4); + T('12013123311342314233134100', '421194664960052400', 5); + T('12030220120032122033320002313313221213332313221231133300', '2011157666555401095987816028362736', 4); + T('8a3l4gafc0m2a513hciechb1m1ieh782ijcb', '17095480346983415895985102058484502145825487853547', 24); + T('198c811986971ccf4c7ae1d257bd14617', '543363838528230108444050115794098538007', 16); + T('38o49', '2667729', 30); + T('1da10785dba094271a0853133', '6364020275909582230507693161', 14); + T('25625405646456255440253434530105642535166540551600530343', '85992026238312929162701996737786316819479861911', 7); + T('3bgf2ef5afaa7', '127353903362695543', 24); + T('68dex1o32tn0l6t33k', '677341342496752070722244590', 34); + T('c326c455446c1846b028650b142a90', '2467988856215900113554830957527735', 13); + T('27153a0209195a12442144002943717a72417001a1684', '17551046277853328651208735650016780160738798650', 11); + T('1553004033284', '1553004033284', 10); + T('20', '6', 3); + T('10020022210212022100200110222220122202022001200211121202011221102021101022211', '1967321487242019672711309698612514787', 3); + T('daf3b6d57572ab962da81ba7100ea1c01geb5', '2697762624776499737414767670932022089986035272', 17); + T('2a95800', '13635934', 13); + T('1077854802720401556208188660715424', '33911117740835848829495038574110', 9); + T('7335121015337612327750625531460025777262', '1234844453153886969183275916721651378', 8); + T('253272123047374812418881680107', '12229562920471835831260364707', 9); + T('28246143458208570507420470627448606245', '592047740537531029039695756680392592', 9); + T('88g3531ghe47l3bhg8fe', '6385854850376914436410648932', 26); + T('cg91b18d8ffe17fdda67c94gaf1dcbbe84g', '8877530717131611365758781215750878707501327', 17); + T('11423126362025406', '40931493129918', 7); + T('fnnab926fl7h311dh89ael4', '90707709949122827343223226337404', 25); + T('22041030131244423101', '46420979686026', 5); + T('12lg639iclme7a8jjkfb5m3038hm7c6m2m31andm', '754799287626894199405656579173085804877204040517935374', 24); + T('3l2b3qi100mukf', '89853492206992969252', 31); + T('1fh4g40f1530810bbeh343d2gbfe4h3ag1', '500820818178766703373445527247524807984049', 18); + T('9293939', '9293939', 10); + T('1llcfack6ghai5db9mdcci', '77118891790688562859651405532', 23); + T('11432112034140244342124413210203012021241020023114341233', '385139582158041869703117414736354058943', 5); + T('8308a74a959243410a89116259a', '9867615035253851484907098008', 11); + T('4g99', '44298', 21); + T('2jcht42joa2bkcp8a63agkc', '830760916763039680706280898515012', 30); + T('4ln1cj15bihk299i28fgj27hlmm489md', '30066001737656440754502736608642901647230557', 24); + T('3oea68q9bpjs3eknag8', '8056944497162955537298825205', 33); + T('63eh66a67665gad92fa3eg756eh66gc4', '5090244877148186916553478619985250564812', 18); + T('11111001001000111101010101111010100110110100011001001110111101011011100101010101001111001011', '4819067998434611218882057163', 2); + T('32332430464240256001146045200236310562160661444160', '862436561440195610645043053487346040135069', 7); + T('3033310222001233103003', '14281471358147', 4); + T('1talc3of6pgvtfnki60c319qhip45', '2671445363930637285453293589205968592921733', 32); + T('14b88h2a64h9eb7b180h55d2cc0958cfe', '18546971486428099560785204564726497876220', 18); + T('8bb780bee008d95bb46c61a3', '9858567156569511176401293753', 15); + T('1517cc674d47eaa', '218748902058933633', 17); + T('3h59993b1e5', '14144442895085', 18); + T('2iatvo7gf', '2829242342927', 32); + T('11d21cdf4g8hgbc86h', '14191954690468981059337', 20); + T('12vpsc2rqq', '38476342980442', 32); + T('115bgd5b5f988dag', '7239369780823995736', 18); + T('409n59ne8533o12rh9d7cl', '9856837668406974868410246784661', 28); + T('35076930aa392955480a62237a1a6014710a', '9724207798767279949903395457416695518', 11); + T('425500504', '7550680', 6); + T('kkf221beom61jh2gobcj2k00c9be4', '86524752967035174099147414982995233177380', 26); + T('1', '1', 15); + T('1vuhc0b', '2994074691', 34); + T('53235442050545103344550', '733647565874904402', 6); + T('2j47eqcorpexvwt8k84flrvjj74pa359ja06', '1024286329198622500448450238532515199584215260718394422', 34); + T('1hi4mlgwh5', '71093615250905', 33); + T('4dh68l874m1b2g0k7g8cc1jj23o2l0elmefa', '151263649369190377647518450909854496784718245462152', 26); + T('1240', '469', 7); + T('7kbh51nf8nd4b', '466030895657789486', 25); + T('1000', '8', 2); + T('12wxdup8db', '109782501177503', 36); + T('digcef32fc533448e8aif8db8k3de8a', '64480886700586659856294991683281947655160', 21); + T('4o2', '5150', 33); + T('6008876027824378607323267735681760411', '135448018472400810939023044683257641', 9); + T('3hf', '4285', 35); + T('1d5jockj5o28f3', '2278802922177380378', 25); + T('1eh7b4bnak4elc', '3880602947847388294', 26); + T('4m48kr7afep', '7153362074610172', 33); + T('11fe', '6440', 18); + T('4bd2646ba67c1c8601d579', '5684511546512382995795239', 14); + T('jbb3o', '22939908', 33); + T('441432102412423022113230434443230222200444340410212211422241103', '105764167603788002379416021764167189320118278', 5); + T('693ua2pac7t5', '823025751705624713', 36); + T('1d15a1', '1422151', 15); + T('1858534', '1042906', 9); + T('79342dd90631361gcc54c053875ebb2b3e984aeg1e30', '611944223012432862605426228702591634892516011343824314', 17); + T('ohs99', '41140557', 36); + T('blmkda2', '2276931122', 24); + T('102420314023322220', '850994354685', 5); + T('23', '33', 15); + T('3eaa4c7cfgd88b77', '11049592928959128173', 17); + T('7s2r7enh4klqsg', '432126166790924355568', 33); + T('af4', '5639', 23); + T('f01b522dmn9e7kp0b5g4bheln7mnefbc6jl96', '13037461943521682948211857727883424231962156108335356', 26); + T('kqlwbq282j8u9q9ffxgp468ist7ap3rt', '6216832805199435867202542241926072963789701207623', 34); + T('d96fkii7i20d255i9g6k534', '1649490761867743340632538678272', 21); + T('fcg8ue48', '655411007435', 33); + T('24289nd', '414836341', 24); + T('22122002213302203113021210110221302123', '49145148846184613452955', 4); + T('6vph0up640u4', '251974013283337156', 32); + T('f8cikf0681l0hf8e9g5di6g', '5254646220406358219380292021220', 22); + T('kwao6um7be5rs1h', '86611757767034532188852', 35); + T('e1bl972i5k2l', '78122648549972001', 27); + T('9747', '12877', 11); + T('1lksrr7u', '85911461456', 34); + T('1223322120330131002223033013', '30374623384875975', 4); + T('443214453', '7996065', 6); + T('43c', '2587', 25); + T('2fes8aol48bh81ohpabrasajhmscge2', '518146223108772795960839685944410913480618822', 30); + T('20203024323143413012343010', '621374920377074755', 5); + T('1', '1', 12); + T('aa0lg6h9l', '573814360943', 22); + T('bd70012bbdb53b5d2', '573663294778570368519', 17); + T('239ed10cbbhee855g9', '4802380765995946947237', 18); + T('22uis68', '3221309812', 34); + T('ak7mfor2d869gpkhl505f4e5g0ogeat', '5865849748702540844254563979641472462990066379', 31); + T('5724a97a2c28c9239b4c82c24b86892', '14547506169643477096795713397236176', 13); + T('4328b574c61866', '1286203061783399', 13); + T('104431344433103242341404300000304013211223033122340424034413420031101', '405686721914999412775855564051467307713591564526', 5); + T('2c4sg1lkami', '1017993753533358', 29); + T('1960489310a11299202664431547939a38a48745556a085a1125', '241227213092126499005003956230016230527788026414070835', 11); + T('24s7i5i30os0d914bg1f84d885qe7hh', '161698974156390625196048193402829173858804514', 29); + T('b3908e88kfe9c73hj6g646eh', '83789782476702429147335816721501', 22); + T('240k0f8emlca9mbhl7f1im4gh9e', '4799009126114249598188047801242057739', 25); + T('2l2hdimhe9ghhrlp004ilucb72lo', '49535259940385235819597981796368276475008', 31); + T('0', '0', 31); + T('1bdi1h0be', '58823658866', 21); + T('212122120101112200020020222112010102111210100110121102100101100221220222122120111211100002120022202', '150482228156175231923706170828095340312341047317', 3); + T('94839aa9789403917659313531965350768976a1910078477', '915133389834165806424172578480631193246796372988381', 11); + T('2c6c7bbc371b70c910847334aa68044002', '17063007174308160689263160442437073677', 13); + T('lhvd4rd7wrsutd4trqqkto1n', '1816128740873245045862646604444664981', 33); + T('517lkfo86mjk1n7n2', '117639937337022657004952', 25); + T('44440410224320021021102404200343344202100', '45414259359901534405710537775', 5); + T('1377', '5906', 17); + T('432515211531405012421143504541653342665233161034344', '8065571726594635162433197674859531479206439', 7); + T('81em8f45tl24dc6hd0y', '82918246775638900170726875698', 36); + T('1cnwccs22o75v29bqdwio4n', '3539668494095448715446596413354433', 33); + T('54gl2dtvn42594hv23mq0', '12048842304748264619401149083853', 33); + T('1nddnha9cdm1dn3k7881fefn', '110139605060745517578151640980223', 24); + T('1a57a67650755493', '28851425417366895', 12); + T('699813005753897145482303531413094', '699813005753897145482303531413094', 10); + T('ag69c388dj8i408ha8c7cgj7j0c5', '1451725933112051761879128259646072245', 20); + T('13222222210031111130232321233012312', '565698333742480159158', 4); + T('101110001000011100101111000001100011100000100010101011101011110', '6648324064296392542', 2); + T('65ef9iie9cdh76bab6hiahbciaf251g4f2bdea20g5', '169249660939047170839859107567643191800346320651365749', 19); + T('38f1l', '1114605', 24); + T('7dfga9g84e281b', '77453725087312278', 17); + T('2002430262261656351626655', '384633596358941967644', 7); + T('ca5b8a672pf5ippj', '106581144305861002491231', 29); + T('206114a28e5g9aa12bce3gg', '2373768079789299543687455581', 17); + T('hbga737h34ga1daa', '267564050311526319341', 19); + T('c04129c1c5b256985547a2d5b4', '3034717347366835137853819740169', 15); + T('2038b8395145018b1859143', '6493696699375975441988366', 13); + T('g1lj7d5645g04f425gcjc48h08licbefg36', '320008217406229552036847710020507416486827465931', 23); + T('0', '0', 13); + T('3ac7aa3d08329a2154488194b8a4', '33324072746206645734229083957496', 14); + T('4e4b59ed1eh29bacge4fe', '494027070921698549161073914', 20); + T('4w1yb8rmjxi6pyb73n9mllie3m', '3952815466325008300997301039270247882978', 36); + T('36e657d3mn946713ah31', '548520023861409567040008841', 24); + T('16a7ch7e0a912ldfe', '7852157934742461265249', 23); + T('31301312021120333121103330013313023110303031011300311233032200020', '1172174447792103378391730954993204520968', 4); + T('asb258hmcq158giujfa45rmp1oc2c7h', '6009860777245419450358424932959970683463301731', 31); + T('c72aa5983434a402bd4495bda1a2b0b09c43', '162885167490333694639671517686243008655363', 14); + T('191eg78dadib3g89j7jijeddj53e76ghf0jd', '4997116531571833235829685607931752303798040393', 20); + T('30', '24', 8); + T('16on5ubnnlffa686qdtlv84lis', '476230604866451011428299429332274193508', 35); + T('ft9cwj7p33d7', '1113269202350042901', 34); + T('222925790439a6b0311', '58195492412230313149', 12); + T('17', '20', 13); + T('8', '8', 23); + T('10dbaki28p1n', '36498654162609207', 32); + T('100000001011010111010101110111110011000100', '2211226025156', 2); + T('bdh73e61326i8efc123dajd4gh', '13247082642257436461441956203094688', 21); + T('dic', '14763', 33); + T('475ljmi', '638863244', 23); + T('pmwlato5p5kr38kv5ivw2db2', '2166192468219479078300821352145682277', 33); + T('58888742714214050', '11118073401333810', 9); + T('0', '0', 10); + T('4c2593', '1833263', 13); + T('2blc074gcf338l8jlk2c3j67k5ecc1laa19', '11168027403783839957537190770067466250018138023', 22); + T('306', '873', 17); + T('659aalndqj5fq7ak3i21ar8ms261diqc', '13352886232933446314462823844898280803350736370', 29); + T('5lb81ea5k97h88k55k84b5em3', '20812208971366572877903871625478053', 25); + T('28061a7b781b7', '60998561699095', 13); + T('6el', '4441', 26); + T('12104124041124403124230300122242310313212010422204440432', '401595807449332275707879384828100468242', 5); + T('210643566004062304052414653362624656513146316044622', '3888722318739881008495486311537716495435048', 7); + T('7656785', '7656785', 10); + T('3gc5b628c', '291221927885', 23); + T('5d8dl8f9oi7jao90jc3ok85p0d178d6h0e78p', '4790696230811013371387757230147247746151708935785013', 26); + T('45a355325a01', '3334702939489', 12); + T('el2332dj142d8g5e209ic7l1g044', '274326948468708524021808420509292687460', 24); + T('2bb4acc4577310d1dc56ddc5', '652844989883241073588460089', 14); + T('3434042fa72b6bd086b5f583063b090b', '69389940122557978795038540059404601611', 16); + T('10', '12', 12); + T('59lfgd01ajhfgcl50pa7m777oci1fpold8oka', '18134178311410518122324250615259547644252541479219723', 27); + T('22863533366602308470', '3147168928563013941', 9); + T('11101321001230312030213211322212211323102102121300201321020230123221032313033012020', '30864269282351344438300145758376863318773480616328', 4); + T('ka5jkl9jmgi1l20ib7', '2883890885775240798488435', 23); + T('16a', '257', 13); + T('22290a2215173a54a2866671510381', '3498085275681756354531507766449', 11); + T('4ateqc7a602u7gk5nc', '468363582187112718878299310', 34); + T('2jwrhlp1l2vqwimc', '242669198145793186437824', 34); + T('5180a950fe82c6376276a586c25b5c5c5b4bb8a21e0e', '30493736786942864405814520647491453938628818133720590', 16); + T('7gc9dhde97qh7jrkk9m8k', '1339208418660774078243962406520', 29); + T('2', '2', 35); + T('2hqggl57gf4car', '296547907725312545952', 35); + T('1obhfn', '44052773', 30); + T('220b1g837h468i0k8jacj0e99aiacggab3gah6i', '367971859156278151681088478078597463542565116078876', 21); + T('3slhbeqb4fs', '2336752270561078', 30); + T('9fba9dfiic', '5006751007572', 20); + T('b', '11', 12); + T('2110202112212000201220021021210110220212212212112010001001010121202000211210122220021011022122100020', '424779974687314802132686329219551262844631379471', 3); + T('31203310131012230200332011301222023130222203021231301133221212022012002311220', '19353023903212453342031170287295730056309517672', 4); + T('12001011211102022121100010111200221002020222001222102222110', '7918767309016358932950862671', 3); + T('1kn191giko39rmnanmami0d1okcpop', '1618267741799710951160698245596470368688201', 28); + T('g274590g3d339433f5409g57aa', '93153789439900839502721798769381', 17); + T('114355421113441052252531344454145320425502543355542230230341301', '2280710056712985171545633285649256127813531828005', 6); + T('1qljg9b4onpip210ejgjhqnefbi4o5qgqf171h', '181934681040486653100111314188490441438192036830569569', 27); + T('1f3ln0rfhp32cpc2k2beaal9n', '83073842895898744962751209714293987', 28); + T('3044620105315260006022454051154200600403020322442401', '38975248796668312873816449082327954581130266', 7); + T('qarcu5jd9g', '926730400937264', 32); + T('iadt27f', '39809934699', 36); + T('as5j6jwsn2wuwu6dqvfwj9n2h1fso', '35806720670061293860275908093366493122960685', 33); + T('132d1db', '13814306', 15); + T('411012421314204032222021003244034241431110203114102110230332323023140', '1437423683089410133923877953778402432419614657920', 5); + T('102011112011201122022120122011110120022212111021022121002011012101002120201211000012102001', '3610012680809677846077512759850762511638841', 3); + T('sko63peesntu0s4c1', '20855468818550929727982949', 31); + T('h101l8itb07n6mnp5g7kggk8', '340873021541152980574045898573575730', 31); + T('gigfd6gchl594h48', '4483240787334541323255', 23); + T('2', '2', 26); + T('112202120112212021201212101012112122', '82063252134576179', 3); + T('56tlfci3sa3hqhpffc0q', '206645898643826543326651723802', 32); + T('2121101511515344340504024322521', '492478309307736431418289', 6); + T('233422333052445505304550245302554', '20722197983174609053233382', 6); + T('o0o6891a38fja50', '4375044340632128174956', 28); + T('120', '15', 3); + T('21df8f125ccc4e84669f376gb7ge01', '1015491273332046568254634184570102293', 17); + T('35', '23', 6); + T('76106836474581565261076641176', '4019346106874600080591778073', 9); + T('3242036325015165633012605001064', '76034468686471006247354977', 7); + T('13853', '19660', 11); + T('352228197670828676ba38543645b14c8cb97381390186', '455621468378412697751523794288599424284167924062650', 13); + T('310021201233200323033001011', '14678599968550981', 4); + T('37695a9a311a90591393119a455327061a70971a303844', '269193409032346768263122865173174114039542613433', 11); + T('646633456716673131010714325300106141144242503123341513', '4827567010183340607788016828465978158946284585803', 8); + T('22b4ii1ja8al3k7k', '289377107308771432278', 22); + T('ih9d74iag888edgh9353249gjee8de', '4161419813368104831931925475084453352109', 21); + T('162h6a56', '1183359545', 19); + T('2aec2jgh06a44k1e618ufe6f', '46782205842419322443177514531945486', 31); + T('10i0', '7201', 19); + T('6e1b6e52c50', '7566505880656', 16); + T('1303233011232220000220310210110013123101110100121332', '9169532676641029580010283927166', 4); + T('2021221000010221012012111012002211011020001111221121012221010112201220', '1913712624254749235264041459373475', 3); + T('12cb0870cg1d44ceaj86117c6je3bd', '60740372923005851819292324387350353433', 20); + T('fqh3nncclo676i9r13', '63746881387506157315801231', 28); + T('2081ba3de80c6bc3d9a207a9e6e5bdge7', '4802181797263059228848555176663651746850', 17); + T('3ns0n2ko3or9r6mj771nfjtq2fn0k5n3b6lp', '523414838800055605983731383323409728575668144200587581', 33); + T('91mtn4gb7wnu7cfccs83s1itjh13avveqgs', '38564386619239951649280680768419728687062773517031904', 33); + T('2507b59222357', '21588297587059', 12); + T('1106210331', '46860486', 7); + T('1sm2mcchi19gi0cbhlkqdg', '10223546271608775170591367519586', 29); + T('a69782f103d9079c642dab9f5f67ae95g', '24592196044693731193607035015722190314492', 17); + T('dheh2fkd58g6d717k', '19803533608478567457194', 21); + T('977a3cf2b2f06c31b3d', '44708264591227581831997', 16); + T('bd', '332', 29); + T('8f9d8f622523e29d1a5he3gee466b7', '22413217136939225587842352555546632085', 18); + T('34647345400115736740552300416234100512013623645', '1255594995624059221065714883120130755078053', 8); + T('7oil9emi1ohrf04kd6kaedpi7rmd', '23966690311520969626701508915977431159381', 29); + T('95061gh908e', '33129740894198', 18); + T('110323', '110323', 10); + T('111000010011100011011111000001110100100', '483660891044', 2); + T('1122330122230000320332100231301', '1638301738278128497', 4); + T('3031312222103303', '3453658355', 4); + T('b9050a53cb2c53da260601ac128b1473b5', '773309649386529398888490649351437452755', 14); + T('46f36cjc8ig0l46k', '21581257987125141435836', 28); + T('21112102102121201212112112010221211020210222102201', '600976178399514404402164', 3); + T('55031522323232530221104331123', '35916460467127317955419', 6); + T('210111220001111021222122101100100112110120020211111112000111121201101102200211101100012', '257582427859456290317258827836081071349119', 3); + T('cai', '6046', 22); + T('238d459b304a504cc07bde524ffcae', '184595724574603234807440528928406702', 16); + T('2951804f7cc040bcabed937dfc07518ebf0c31156972', '15459035341493840021436449671050677487751991559285106', 16); + T('151441535252450114333525025131221241533434151002030110022341253', '3312988709769295474234430270673909304036864754721', 6); + T('12pf7eg0pst560r56145b38oobrssdgp7p', '17896886417737298981574606954732052710804772615521', 31); + T('102120201012022112102002220002111020022000011', '1267278558139797333142', 3); + T('20723mjbpikg211', '219900549758957593129', 27); + T('1ba7469629c55971709096531a043', '29589979360351359186903406966085', 13); + T('43cd87pke82', '583569798239066', 26); + T('2f3b', '32349', 23); + T('1damenblocm6ab16mkhflkln51l80g0gl3', '20836281970872115708071405659370250984625401153', 25); + T('6460334362676710', '232026545028552', 8); + T('eh5eu5yo4r85a4frk38fd1upg', '325027824752333280420002134397968014004', 36); + T('1312782233174508777', '1312782233174508777', 10); + T('13341105311220530305055542233251', '2125986301582477786880095', 6); + T('28urr93jo6qpp', '7615780104185501875', 35); + T('f3kc6d1oa2', '57803286359002', 25); + T('196d506730f12e3862g428100f99b6351d9683230', '25650422510765543578389928836906473834731647075211', 17); + T('6in', '3911', 24); + T('c662fh1059662042ac1bfa666892d54g4c19', '1062397772598878889201653207165639773092410283', 18); + T('1100110100110100011011000', '26896600', 2); + T('1reie79ejmki9eqggo2e8mom', '8410869246547671114783597667970876', 29); + T('a26h7h373038ek', '25026850135788158392', 26); + T('2003411221003313233000121410241302', '236418010553527903993327', 5); + T('50', '65', 13); + T('jdw2giryepgsnq', '2294207897977458246131', 35); + T('76510257774b970163b3c8c8a', '4066438635725967850597253288', 13); + T('881261b58a1a705b4412aa7', '4789169271296447376594079', 12); + T('8172b1296abb', '32834523435949', 14); + T('m7kj0jj6rfhi3q', '144843484516465224782', 28); + T('16gb3e90d946cg4ba661f59d2ag3eb817ef0', '16410164287267896045565877674991970376204845', 17); + T('30441908a9', '7159171908', 11); + T('1110110001001101110110101111110100001000011011100111000000100111110010011011000010011001111011101010010010111111101000001011011', '157051027737987715731727950696316653659', 2); + T('j7dfe8bgehjc2824', '635190155180670739244', 20); + T('17586g4dc5508hbe66', '3072863740457400701010', 18); + T('mfdhdib7gopble944bpae1cp7ka', '139110764181166732714408251267873085654', 26); + T('4bk1', '54948', 23); + T('4ldem65kinihnm8ca0d920pp4l13cnkh', '1130287125754563991765159720269473592208232147', 27); + T('d', '13', 32); + T('22021020021202211022121010121222010211120', '33506058087887919765', 3); + T('206f4gc65g7egi54j3974j3', '247259714587053476909557142490', 21); + T('4340502440403450033340223225211113442201423010504331313333', '1044228835950034098828612572961883231947980025', 6); + T('2pfsk9mg1br1i1h075eo63s662hr6gf', '214533693113801145357049577189458281793615667', 29); + T('habul6f3kihm3iw1r4', '1130144535004513737852095539', 33); + T('106142331346752221011206', '647409104513791169158', 8); + T('26kb58ddmhgb9tla', '131895300538724358011221', 33); + T('362mijf4bm4mf45jgl0mg37ae6b2h7dfhklhgj', '790707811699113166404310250374840626288935161894479', 23); + T('24aa9ha47hnegimefm9pdj52qko', '35513399551075834816632034861432466181', 27); + T('1a9m96mie3djkfg667h9eje4c0lm50icmc3ikc3', '8093079648301893331997032028152019456512853100012045', 23); + T('cjbdn0gtpput38l6uojrop6umhqebl1dm1p', '6419814410380460676020581102194375113413420245954298', 31); + T('1ueohaa067uco1pdgqrvmhu0vaa8leo', '2785874481951992854286001892766607754475623896', 32); + T('10101101101110101011101100011100010010011011011011000110111000010000001001110111010100111', '420051957077295313153486503', 2); + T('85hcg94l7j', '14860540241390', 23); + T('4a2976868d892ba0b7bd344d', '1085472931427423803725237293', 14); + T('7kkh3nb7lo', '59243621828973', 27); + T('1', '1', 26); + T('1ibd5pfbokd6440j', '2866994109825495814339', 26); + T('86ng8fec', '349615744710', 33); + T('1143620362656535460140621434022160305663163240152242650105202', '627843320628203251128147470398864437340326997590198', 7); + T('11262714046100646006', '168424020893715462', 8); + T('15c8h01dg8f65ed11cdh7c83ig045e9724641af1fc7', '661948366072223304375223910664218120820427365067153516', 19); + T('80a3b23b04454916925a67938b576c75b198719c3a44', '6396600297150246995243740339198009449377618885444', 13); + T('1h8g5ebb0', '21730642290', 18); + T('15121883734821931848157630403646710115517496961539', '15121883734821931848157630403646710115517496961539', 10); + T('157qf44ko15e72hl', '3533762244672772908501', 27); + T('9fe9i2fce0b23165bj', '128270183554062217810239', 20); + T('204d4d06851de5e6c3b5c782368be873d2c2c6772', '223548940289723451071978777163310740220641882557', 15); + T('hk05hcaki071ibakf80d42la0h51le5a19', '15457671916002610271027881255899341664819386332', 23); + T('12758858347410587602318353440470122424758747174736144', '54973361258053823259500795020716385085006902031623', 9); + T('1j0dq', '1489979', 31); + T('24aa49b2669b4253417185039422b', '3970774336620668082561214323011', 12); + T('1j3k0h752f1i35178l4a8892l49hl8g72le7', '3649735432337234577942518835984846875540064046231', 24); + T('u946d', '31756493', 32); + T('11d', '319', 17); + T('a', '10', 20); + T('85857450422153021232718260', '6218664865094656817286525', 9); + T('b3bi9egmaa489d8j912m1j7f', '1582915351549542449793908963699565', 25); + T('8c94c1101a3', '2575764487747', 14); + T('21333351424', '137058856', 6); + T('24ouud1zekrdeh0jduf8dlol67v2rf', '2892087283574736646554249773057595661742288571', 36); + T('6tcd6nql2v4g2eiigj17qoti', '287377925910774326349880592997114802', 32); + T('1ibdb8g6j16hfd23ec0ic3if6e89h483a07c', '6628668718711417889748955044148576508442160152', 20); + T('200221012011220100010', '7335045156', 3); + T('19l7ie1', '425580221', 26); + T('5bjl8kdk9qeo3njnlq745io7offama41ho', '933615638563870486919671786607965571836873833306', 27); + T('10232113020220300130312200101010', '5446860259502720068', 4); + T('2b0a983ec857ac84ef5f', '203257196630153042915167', 16); + T('44eo3qm2rj1egr54tcsdw', '31399246023982509778025476029912', 35); + T('5hl2j3n9lqrf4ht', '15223157365873501989655', 34); + T('1j61dcjc28ng223fdle5pd53a562b', '20497069428386502186259631448700342382939', 27); + T('92m0p9wswvxpbygoscf0iyvma0gw33re', '6667479639141447629959640648792959413993639675134', 35); + T('44ebf64ca6d7048632dc366985bacf6ca72f55bb89cb3', '412586872136786946015831424411703662517991501351918771', 16); + T('2231322212032013010310223312202202203233202032131202213103310320', '231173459396011136566504537253511773496', 4); + T('102222033224112043100201233424410310321401141431030120233342110002', '2981250760563381516328738717816795815564019377', 5); + T('bna8v0dm7nj6ukvl14guf5jd86sdur8fqs9b', '561697417712642337267267807468369856115722296542196011', 32); + T('246765a34371a64810230863090826259630999766341a98', '21334345633150250304537292228376342238910313741910', 11); + T('dd6', '3126', 15); + T('rj1kox5jiucmuo9sln77v', '209599559372534093290729866417476', 35); + T('8pamgcke1q3dcfa43rji8gdg5r5bno', '8266027891125368114649885016554443139962892', 28); + T('15877a7a507508a5380306', '67933623548690544541110', 12); + T('310576032000120564437670443150', '485374511652821184626706024', 8); + T('2k304b20fii7', '1036543616885140', 21); + T('rvv6dkvip7h2', '1413563599986560420', 33); + T('7s2rncsirvsn0zf', '47775999829788212268219', 36); + T('5', '5', 8, 29); + T('2010', '57', 3); + T('3', '3', 35); + T('1', '1', 20); + T('b', '11', 29); + T('a', '10', 13); + T('7996x17', '11234850765', 34); + T('31020102013113030130222221321300302', '968780395378242985010', 4); + T('193629493c71666081307a037a449b05b732ad8a97dc96', '6251429966945048736162286407414968313191335468772060', 14); + T('102', '27', 5); + T('36471522780078332870256412616321566881211129236', '36471522780078332870256412616321566881211129236.0', 10); + T('2u', '100', 35); + + /* + * Base conversion of numbers with fraction digits. + */ + + BigNumber.config({DECIMAL_PLACES : 40}); + + T('111010110111100110100010101.1110000001100101001000101100010001111011', '123456789.87654321', 2); + T('22121022020212200.21220000000000000000102121210212220222', '123456789.87654321', 3); + T('13112330310111.3200121102023010132301212212301102120322', '123456789.87654321', 4); + T('223101104124.4142404432120310240400022100414412423341', '123456789.87654321', 5); + T('20130035113.5132000000001340141333022243243025133004', '123456789.87654321', 6); + T('3026236221.6064403011334606121545601461612144044112', '123456789.87654321', 7); + T('726746425.7006244261075431515424461645053746213677', '123456789.87654321', 8); + T('277266780.7800000000377725827886511007881184436767', '123456789.87654321', 9); + T('123456789.87654321', '123456789.87654321', 10); + T('63762a05.97075184709912960846746215397a86192585a2', '123456789.87654321', 11); + T('35418a99.a628000007789055192b3628390573a7a2093441', '123456789.87654321', 12); + T('1c767471.b519c4868b1097b4ab6aa9a1723b0b21a6834568', '123456789.87654321', 13); + T('12579781.c3b33d92601697558b8c4217cc4256dc8d8251c2', '123456789.87654321', 14); + T('ac89bc9.d23500004b2d0ee1c3a587694b2d0ee1c3a58769', '123456789.87654321', 15); + T('75bcd15.e06522c47b19a6c5263a515f9917be8d99dc09ac', '123456789.87654321', 16); + T('51g2a21.ef57d03a8cgd3agbgc44442b7d2c05fc56078b69', '123456789.87654321', 17); + T('3b60f89.fe00000168e6c74b51df90hacd964c0b952hf19h', '123456789.87654321', 18); + T('2bg64ae.gc83iea83dahi6920iec351gdb575cb1i205e999', '123456789.87654321', 19); + T('1ibc1j9.hac6i58g', '123456789.87654321', 20); + T('194gh7f.i8be0004e152hj60858if8541gfd51d14c1cjh46', '123456789.87654321', 21); + T('11l0805.j659b300hckla2kfh6791k6e489lja79665cd85d', '123456789.87654321', 22); + T('j43jfb.k3fkgh7iaikallm5ld5l47c0lh1b394iiha9mjj5', '123456789.87654321', 23); + T('fc2egl.l0l8000de3dkkk84l18cfhfj5k6ng87104gm68de', '123456789.87654321', 24); + T('cg15le.lmkoh735e402b0lo7mil4jfi1gcend9bka68h736', '123456789.87654321', 25); + T('aa44a1.mke35bnk8b6ae897kbonpl0638c53p7k0ibnicnf', '123456789.87654321', 26); + T('8g86ni.ni000017nbhknqjj30nq3hdckfjimd6cg8362di', '123456789.87654321', 27); + T('74nqb1.of5of5q5no17dm376akr5mnoq4fk7he0jd67r8gq', '123456789.87654321', 28); + T('60fshj.pc50ab4snn27loqe7k2s613d49gjaqrd4946b13h', '123456789.87654321', 29); + T('52ce69.q8qk002l', '123456789.87654321', 30); + T('49l302.r5b31sdanlg0n9b2jbo82q36ktamkp3n44t0m3n8', '123456789.87654321', 31); + T('3lnj8l.s1ii5h3r36jca9hqa5fpi5tuhmcto2dbklfsmr55', '123456789.87654321', 32); + T('353c3r.suib0058kqr7q9iohe4pas21t9v8rffjah1e8oes', '123456789.87654321', 33); + T('2od2i1.tr9m8dl5x4jwgbkmsvo3lb5k6sd50xl474rb0n5w', '123456789.87654321', 34); + T('2c9g1t.unqrmvqxffpa8v182bc5uqn3o6y1hm9yb2kw4hvu', '123456789.87654321', 35); + T('21i3v9.vk00009oa9l2ergih9i3ifctpatt1sllqhw4o9hj', '123456789.87654321', 36); + + T('-0.000000000000000000000010000100100011111', '-0.000000123456789', 2); + T('-0.00000000000000120221110121121000110122', '-0.000000123456789', 3); + T('-0.0000000000020102033202303032333033113213', '-0.000000123456789', 4); + T('-0.0000000001100323001142032114244204230204', '-0.000000123456789', 5); + T('-0.00000000112442331005030241312503143243', '-0.000000123456789', 6); + T('-0.000000004660541461650644523626454412226', '-0.000000123456789', 7); + T('-0.0000000204437054635763657165267673054542', '-0.000000123456789', 8); + T('-0.0000000527417530418033652056622672708124', '-0.000000123456789', 9); + T('-0.000000123456789', '-0.000000123456789', 10); + T('-0.000000245117320941291484571aaa0235019322', '-0.000000123456789', 11); + T('-0.00000045101516b79ab1643486a1288795277265', '-0.000000123456789', 12); + T('-0.000000799274a18803c248320ac075c404ba5975', '-0.000000123456789', 13); + T('-0.000000d02a645405ac4b02291d9cbb648b47158c', '-0.000000123456789', 14); + T('-0.0000016161613d9213b1295d5d28b0123018bd3d', '-0.000000123456789', 15); + T('-0.000002123e2ccefcf5e755beec5961bda3d5a3b9', '-0.000000123456789', 16); + T('-0.000002gb3824a5dgc3c94740391g0b68g0b0d3a6', '-0.000000123456789', 17); + T('-0.0000043a8e79ddh532d9ah5e95b67f4fde164c7f', '-0.000000123456789', 18); + T('-0.000005f6die5i258a658924f283g9hda0546dbbd', '-0.000000123456789', 19); + T('-0.000007i09ha7ehc', '-0.000000123456789', 20); + T('-0.00000ac7a5b9ki452k9b6hc6g5de80gijbgdfhk6', '-0.000000123456789', 21); + T('-0.00000dlkhch59368552ebd4aefei934f6f9gg6ah', '-0.000000123456789', 22); + T('-0.00000i680c15bl2f7jf4eem12mh044d0kf6bbhdf', '-0.000000123456789', 23); + T('-0.00000ne5d1jjel1l33b9mea8f6hc5e688d15bb27', '-0.000000123456789', 24); + T('-0.0000153d06m3b9em4d244h8obma81364m9lf0h6d', '-0.000000123456789', 25); + T('-0.00001c3f328n1m7gim7p3bggi0jca71ij39p0p52', '-0.000000123456789', 26); + T('-0.00001kmaml1ao3b565k28789obc8mnh07mp5jlkq', '-0.000000123456789', 27); + T('-0.000023dm65kb1mq249apf333lel8j10r4bb7apmp', '-0.000000123456789', 28); + T('-0.00002fchnj3o82292e8l6bdfb8oo4jn8cnii16rg', '-0.000000123456789', 29); + T('-0.00002ttttta2se3', '-0.000000123456789', 30); + T('-0.00003ghj5qf0acg3e8d7gu5nejhkdkuijosts68f', '-0.000000123456789', 31); + T('-0.000044hu5j7fptf7amveomb1nmhtb8tpa44tetc7', '-0.000000123456789', 32); + T('-0.00004rehmrkfsfqvq5pm8qifcooiapip4rww68ii', '-0.000000123456789', 33); + T('-0.00005koccwr5vqq0bsl049v1qwqp9h8tshw38asu', '-0.000000123456789', 34); + T('-0.00006gx4anjwlqb0xla3iwgv0548y4t32r88wwxm', '-0.000000123456789', 35); + T('-0.00007gql6532pjh3akr03dh8iwkobdh4sshi00s9', '-0.000000123456789', 36); + + T('1111100111.11111111101111100111011011001000101101', '999.999', 2); + T('1101000.2222220210221200021112101120001001102122', '999.999', 3); + T('33213.3333233213123020231003211120010012021032', '999.999', 4); + T('12444.4444141414141414141414141414141414141414', '999.999', 5); + T('4343.5554412021453552313300510342441202145355', '999.999', 6); + T('2625.6664412312515410253566644123125154102536', '999.999', 7); + T('1747.7773716662132071260101422335136152375747', '999.999', 8); + T('1330.8882385024534603137817105667427164213206', '999.999', 9); + T('999.999', '999.999', 10); + T('829.aa973a4913443083925788751826a12209617036', '999.999', 11); + T('6b3.bba3320237938b1770119a7a5699606ab3b294a9', '999.999', 12); + T('5bb.ccaa5926381c699320b4278283cb62c494684889', '999.999', 13); + T('515.ddb38266d3049bdac14b5d165539a5b770ad942', '999.999', 14); + T('469.eeb9595959595959595959595959595959595959', '999.999', 15); + T('3e7.ffbe76c8b4395810624dd2f1a9fbe76c8b439581', '999.999', 16); + T('37d.ggc18275989641138dge6d54eg08g529aeb6faa1', '999.999', 17); + T('319.hhc307dh7b6deeha40a6b43307dh7b6deeha40a7', '999.999', 18); + T('2eb.iic2ch24i43efhgd61307b0e199g6fb74a55dcac', '999.999', 19); + T('29j.jjc', '999.999', 20); + T('25c.kkbfaii9d8gg7b6ee594cc372aa15087k2j65i0h', '999.999', 21); + T('219.llb7g822a4ceh5a0fag44k937cak18la89ii6f3', '999.999', 22); + T('1ka.mmaj3f2cgc81fe490kebi8f9m173blcfb08mj6j3', '999.999', 23); + T('1hf.nna4590djiena4590djiena4590djiena4590djj', '999.999', 24); + T('1eo.oo99999999999999999999999999999999999999', '999.999', 25); + T('1cb.pp8b0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb1', '999.999', 26); + T('1a0.qq78f2dle09cnjl9h6mblfcj9ij58geni8qkbn0n', '999.999', 27); + T('17j.rr619hjdigg3g9nr2pf067h6qc2j7ar95474jjq6', '999.999', 28); + T('15d.ss4hkojk13n4rnf1dpo9ham09782ifbgg63d28cl', '999.999', 29); + T('139.tt3', '999.999', 30); + T('117.uu16eq9rha657cl1g2ngcbdir7m8tmihjp2dsf4t', '999.999', 31); + T('v7.vuv7di5k75c10oidqboqjuv7di5k75c10oidqbor', '999.999', 32); + T('u9.wvu22k10p1i619fhuaq3d5gsfqkr584weg2bahcu', '999.999', 33); + T('td.xwsnmjjt3i7kw38x68nvs0igtcqmabee4ufqd1up', '999.999', 34); + T('sj.yxr4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4', '999.999', 35); + T('rr.zypcdtnwjl0v3qs82axzf9i56mgpcdtnwjl0v3qs', '999.999', 36); + + T('-11111100001000110000100000101.010000000010101111110001111101011011111', '-528769285.2506705498654986754987694357629487612132293856', 2); + T('-1100211222021002121.0202022012211211020000112211222001122022', '-528769285.2506705498654986754987694357629487612132293856', 3); + T('-133201012010011.100002233301331123320132210223310233313', '-528769285.2506705498654986754987694357629487612132293856', 4); + T('-2040331104120.1111313304243240343040303403011030102242', '-528769285.2506705498654986754987694357629487612132293856', 5); + T('-124245205541.1300511413330341000202421140342015422521', '-528769285.2506705498654986754987694357629487612132293856', 6); + T('-16050315262.151660065566343455213220110101053003165', '-528769285.2506705498654986754987694357629487612132293856', 7); + T('-3741060405.2002576175337036445364576675624305775126', '-528769285.2506705498654986754987694357629487612132293856', 8); + T('-1324867077.2226575420048486156768436757465017711084', '-528769285.2506705498654986754987694357629487612132293856', 9); + T('-528769285.2506705498654986754987694357629487612132', '-528769285.2506705498654986754987694357629487612132293856', 10); + T('-251527210.283708196291157004318811823a797729578835', '-528769285.2506705498654986754987694357629487612132293856', 11); + T('-1291008b1.3011aa3020304260b7471b3b999021bb3a506156', '-528769285.2506705498654986754987694357629487612132293856', 12); + T('-85718b45.334952b34b55677529b07439635a477982384a29', '-528769285.2506705498654986754987694357629487612132293856', 13); + T('-50324269.371ba8d021dbbc4126c65231444dc79c599697d2', '-528769285.2506705498654986754987694357629487612132293856', 14); + T('-3164c5aa.3b602e37331cb4ab53c1d9ea705a303460358648', '-528769285.2506705498654986754987694357629487612132293856', 15); + T('-1f846105.402bf1f5be1e92bd2fdbdca317fa561bb1faaa3c', '-528769285.2506705498654986754987694357629487612132293856', 16); + T('-14f6g98a.447945bd7f0c37e8e036c8fbc7a1d008497609c1', '-528769285.2506705498654986754987694357629487612132293856', 17); + T('-f9f0fh7.493g70g118a7h80g41g45g3gg949bgd4f09b38c', '-528769285.2506705498654986754987694357629487612132293856', 18); + T('-b4a85g7.4e96c1g631eg54cf768317heedhbdda82ahibb33', '-528769285.2506705498654986754987694357629487612132293856', 19); + T('-854g345.50575f3gb2e2b9ieh985jejd269643cd6jej3864', '-528769285.2506705498654986754987694357629487612132293856', 20); + T('-639i76g.55b9dhejadf10886ckb3i4j5k98665g2fha9gg01', '-528769285.2506705498654986754987694357629487612132293856', 21); + T('-4ed50bb.5b731gj7dd9h3glc4l0klc9a045ge23kk7bd6j92', '-528769285.2506705498654986754987694357629487612132293856', 22); + T('-3d3c6jl.5hdkkefmkeehafcj40549634532b5d5h71086igg', '-528769285.2506705498654986754987694357629487612132293856', 23); + T('-2i9i25d.6096b81j2ibkf632ij9im7mn99i4eh131a5e1m2g', '-528769285.2506705498654986754987694357629487612132293856', 24); + T('-243g5la.66gi4ehkjfkfj315f5clhm4245dlc3ej08if7c3l', '-528769285.2506705498654986754987694357629487612132293856', 25); + T('-1id2j25.6dbkb1b61h5bnlbjp2j2427877ij0pg9c1o83n6b', '-528769285.2506705498654986754987694357629487612132293856', 26); + T('-19mq72g.6kjpgb04phiekfpckemff1na38d6ch6h415ooqlj', '-528769285.2506705498654986754987694357629487612132293856', 27); + T('-12k7eh9.70ek4bdb4kl74bh5qkdp80knqo3mrdkk9gg8372j', '-528769285.2506705498654986754987694357629487612132293856', 28); + T('-pmhili.77nhesre540gfoa1jc92cjc1a4m9rsn2pbe50ol2', '-528769285.2506705498654986754987694357629487612132293856', 29); + T('-lmo1cp.7fi34apgmi9bi550j3l1bdrd6kqge8q96omh2p3c', '-528769285.2506705498654986754987694357629487612132293856', 30); + T('-ieh95m.7nrmg0mdld46iuei3r1iqfti50kmeh6qjrjqushs', '-528769285.2506705498654986754987694357629487612132293856', 31); + T('-fo8o85.80lv3tdu3q9bqburrihhfuim3eovlahs5v6issil', '-528769285.2506705498654986754987694357629487612132293856', 32); + T('-dgsptm.88wbffuf1iuge976daspjacn1ukmb6oj3hrd5n1e', '-528769285.2506705498654986754987694357629487612132293856', 33); + T('-blnatr.8hqc2odcp1864oww4beqbp7icwpn958xqlrrjxwp', '-528769285.2506705498654986754987694357629487612132293856', 34); + T('-a2csdu.8r2hha0ljcurhoj7k0mxnog67x20nouvourt0a0h', '-528769285.2506705498654986754987694357629487612132293856', 35); + T('-8qtczp.90va9l3p022q7omcbqhd0lglz0rlmrd2cbt4mg5a', '-528769285.2506705498654986754987694357629487612132293856', 36); + + T('316.6', '696.4', 15); + + BigNumber.config({DECIMAL_PLACES : 18}); + T('50960021014244268687a1886463130.16672a1420499a6247', '88623581339673073949500137313245.1455', 11); + + BigNumber.config({DECIMAL_PLACES : 39}); + T('ma.5i9g6fhdj9d8laa7kel9gjlf93c8f746i7mci28', '516.25221568916508446316309948501759661238267291', 23); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('h9rdl18jd.q051dhn7aspg6k8dmp5l63g18ge2cj8c1n08biondk1ni2ksir9chonjaoqc0fnr8sh3a6o01d470fccm00pjj9kkl8gr886b2ic', '8675779666304.89675881218833', 29); + + BigNumber.config({DECIMAL_PLACES : 16}); + T('1669699d2446c13b6032b4859b851db2c71996094896.03cc46a11973cc47', '28095859731039155813921318494826179694928140368916.02', 14); + + BigNumber.config({DECIMAL_PLACES : 44}); + T('433eejca0g5g2hi3h81hfa8j5b.784a9id7lifghgg1kalc2d99j7jc674bh0a6ka4b6hci', '15065394735668576931388972794395685.335131', 22); + + BigNumber.config({DECIMAL_PLACES : 92}); + T('35076567745235671502.6773342626436061433365155137731076310010275236050103305437451411644055625324564421515511562', '524624822785241922.8738874407101262195488876445', 8); + + BigNumber.config({DECIMAL_PLACES : 23}); + T('11006433654634662212602033613520122341643062434012145010.52425140460600403610425', '34628562545096914224971102777355168736669856771.7679078074649', 7); + + BigNumber.config({DECIMAL_PLACES : 60}); + T('1p66mbi9fn3c1lmpqm9alc3n108lp111949qmoqj.arca8c1fkqqd9nibi2aqg5gm8a86rgfo831godj8q1gcqdjcbh62fih9fbd3', '522521559789778545185676538833457746453383246746454589675.392145039', 28); + + BigNumber.config({DECIMAL_PLACES : 44}); + T('5605470434246053632363152113440650264426323520.33525466364076204553563061761202201336001507', '250925107172835956608925073908081234650960.4323', 8); + + BigNumber.config({DECIMAL_PLACES : 47}); + T('5jljm2eeb7a91jaf55dm6de44.iddl2d32kn3cnlif2ggdemk41h1mibm7gh560403846n52c', '7775100815978012670733930388143588.77357345356039222606783162331270073', 24); + + BigNumber.config({DECIMAL_PLACES : 66}); + T('15jhag4hd9gfb34e9k3h28642al6.g515a6bg2ige2kekcji73f69khefeeg3d0k8gb641g73a3kk75dl3lld08l8047j1b', '2231466155455967642494664913445902444.737720562308164842135964809152', 22); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('922957026721a93.35228440098a1382a5360815162596954a2352084859a278208a1929945', '3495784831845804.315740956312801540001007380273089678135993838516', 11); + + BigNumber.config({DECIMAL_PLACES : 31}); + T('2321136.6635426603020156550074200106655', '631390.850962999306313972719936135603917', 8); + + BigNumber.config({DECIMAL_PLACES : 42}); + T('4122015524443344205255.532130505243523353120213333531354112005131', '92831400808748387.9271017366', 6); + + BigNumber.config({DECIMAL_PLACES : 7}); + T('f.8gkgp2r', '15.28520597106195746386586', 30); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('4.3453j4kjj0gld74h3kf2eh7kiabgdfj91lm47df8knn08mlmg34llmen8b70nfgg', '4.1323175881243', 24); + + BigNumber.config({DECIMAL_PLACES : 16}); + T('11fci0nrj42co0h.p63gsr4rg512kr8a', '502434965914740165617.8401320537228150118206441', 30); + + BigNumber.config({DECIMAL_PLACES : 59}); + T('2jpeg4chfcljgn44g7ljm696j7ecfng2hifi79d5fk9e.naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', '19324647245541042665522682085850732286789183586270685673003472.9', 26); + + BigNumber.config({DECIMAL_PLACES : 72}); + T('4ki4c4d5ha22d8925b4005bh88m7ki.30kg3hdo30h263k596n8ca1bfd4eig7hljakomdo30h263k596n8ca1bfd4eig7hljakomdo', '167542618104881367375225493908762776911143.12132133912', 25); + + BigNumber.config({DECIMAL_PLACES : 78}); + T('4544322.235145104224010425054333530135545110521301445400530023102335504152042532410303', '231674.441212', 6); + + BigNumber.config({DECIMAL_PLACES : 12}); + T('111011.001010010001', '59.160508253119229720226315984803348705', 2); + + BigNumber.config({DECIMAL_PLACES : 28}); + T('454102.5412541254125412541254125413', '80656.8', 7); + + BigNumber.config({DECIMAL_PLACES : 33}); + T('1isk023dlf.55crlo17qlse1p84be9gabpp9h51e244s', '42579766052911.166926038969790620314532268407622', 31); + + BigNumber.config({DECIMAL_PLACES : 54}); + T('429qi6dl4h.ph4ne1d18jgkilepdj3ogaj6dimknhh8n29cph914lcg4bc4moocg8', '31171726864736.9494930209622872734578329709751045672992053779391489601493', 27); + + BigNumber.config({DECIMAL_PLACES : 18}); + T('172299c4276c26163a846222898294acb1.42584081aa022b93ab', '8930913218627080059774919041327808207.322093463032', 13); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('91.6860869813842881163577889544084877062924216598567628502407164', '91.6860869813842881163577889544084877062924216598567628502407164280', 10); + + BigNumber.config({DECIMAL_PLACES : 42}); + T('4521234205002101435221121250354315.053033313232425310135400154551251430143114', '233771706142581818269027271.15323953306272130041055911181', 6); + + BigNumber.config({DECIMAL_PLACES : 74}); + T('1l8itelfm9stl7fmkawlh8km80pd30g1.uv0bkrja2onchcpf3iavufmbsgj6888q93ij858tkgngrwgn09gu8g031v0g7ku6pt57if84m4', '194937846823553447809511256180608590361394349744.9375672', 33); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('14477210981224.2476134315993452402663', '14477210981224.247613431599345240266280695', 10); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('3j51pir33eok5rcga8.ci6c5a89mckjehlco1mngdb09rqhdrdqf9pci83rqri96b1c0sbeaj7979d3adc3', '26569832927198243633766552.435459435', 29); + + BigNumber.config({DECIMAL_PLACES : 51}); + T('1048563153471333165888a4428a560371303035158.922a919092343141a34289759683671530130a320a939a7a275', '56924066996327539534686550864239220405952031.8369533', 11); + + BigNumber.config({DECIMAL_PLACES : 62}); + T('3.5kel2e1gfiac70j7k563b9el2e1gfiac70j7k563b9el2e1gfiac70j7k563ba', '3.27', 22); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('5gfg.df5gbcd10a347d4cg76326', '29460.8178265494875692701718973279612977910871', 17); + + BigNumber.config({DECIMAL_PLACES : 75}); + T('1faem.cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj', '1550806.4', 32); + + BigNumber.config({DECIMAL_PLACES : 93}); + T('1000001001001100110111.101011101111000111000101011111000010001111111011100010001100111111100100011010100001010111111', '2134839.683376639182809009377393376566052153774412236905434', 2); + + BigNumber.config({DECIMAL_PLACES : 70}); + T('68.0418148343760086652557726847074054512880223633116204181483437600866526', '62.052', 9); + + BigNumber.config({DECIMAL_PLACES : 84}); + T('1ameoekdm.p5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gm', '523588890434.9', 28); + + BigNumber.config({DECIMAL_PLACES : 72}); + T('g837j86d57fcia.f5d06i2iaeaad500b87071eggcg', '1344184021329245170.764127158536574868775285152', 20); + + BigNumber.config({DECIMAL_PLACES : 37}); + T('45hjj171bb9ee1gehmgc5l9k5nj.a0hiel28el28el28el28el28el28el28el28f', '9389077895851446839665690077113206844.4011356', 25); + + BigNumber.config({DECIMAL_PLACES : 29}); + T('5afd883.0kb4ikl7aaic00mb6d7j6g9kcm0be', '808903080.0387285', 23); + + BigNumber.config({DECIMAL_PLACES : 30}); + T('uoa.p77777777777777777777777777777', '39754.7', 36); + + BigNumber.config({DECIMAL_PLACES : 57}); + T('314211431344264.161502550605320604600021123244242566302151242210124322565', '2191226569123.270328', 7); + + BigNumber.config({DECIMAL_PLACES : 83}); + T('350np900cjrpa7h7d2rm58e17o89em3qar381c.sb61e7ka19m19dt39t24790llrnb4drfn650aukk22ralqg7145dpgmpkek9itu5ka53sho1mkqndi7a23f', '47902354964172156474611081338049003753298795073166899865.9148752', 31); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('243.4465610031', '163.575626396226555033529183865411120656777021626883', 8); + + BigNumber.config({DECIMAL_PLACES : 13}); + T('2ef7g1b5a7f2gec76ceg9.5b5d811g8fg79', '11692997210770248710254595.333358969', 17); + + BigNumber.config({DECIMAL_PLACES : 26}); + T('21mc1klprud5o4tgld2uo779vi7uo4lwed232a1qla9', '12289022125709080817960517361047704480115521701286675767213581699', 33); + + BigNumber.config({DECIMAL_PLACES : 54}); + T('1biha8e7fg.9ehdffb8dcagd4g9i98hchibbbh22093e1bi069e343ae8c7d8f50d', '526422264921.5150500126270316229746944036', 19); + + BigNumber.config({DECIMAL_PLACES : 87}); + T('6c21ldjdn0e.d7ki8442k6ec8b5njjgm067jj6cac5l46l7gfh7km77bn9iehd7f2l7c934md3b6ecfk8afh15je0jndbk7nf9a', '412350836548046.555321483698953780254564895313985703', 24); + + BigNumber.config({DECIMAL_PLACES : 76}); + T('r39e056mi.tjxo1e4pd49qkvkendhphptkqsp0fyyomdcv5ophw9lfaogq769ommmk1rpc3xlbawek1iy9d95v', '61010933356888.8448673320184616605284885898', 35); + + BigNumber.config({DECIMAL_PLACES : 93}); + T('4q3je2kkc.v0oitmoa0vse0m2sgqid4w2ntjy10b3gqbqsu5u4c84d0m78gmlgqcbhyhbs18r04wxljbi6ypi2mtkvasu60n4gpp3l2', '10686857113462.886286611976383309575531841252170238', 35); + + BigNumber.config({DECIMAL_PLACES : 36}); + T('32.rhf24b66142ioncpkpn6ije1k8s9cka3f9ro', '89.951866586639896895259517645524', 29); + + BigNumber.config({DECIMAL_PLACES : 14}); + T('34a1765329aa0b27358236536.c1082175680a06', '1827925782415763778360259679.929279897145404964833315', 13); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('a6742646212221a88046886505480aa41030547a37a67236.41964a1417296a0a24a93660a5329032846329a7984251058490591662579', '93546552298402617258257881206314223917463535762053.37910302', 11); + + BigNumber.config({DECIMAL_PLACES : 9}); + T('3pt6cise0p638ff8tq9hiomp2.sjof1dciu', '2380426328731894461017956020638721447.923818782906918215432585338', 31); + + BigNumber.config({DECIMAL_PLACES : 34}); + T('7b16db7c13e5g542iefad5hhg6hh43jg83dgdad74c70c0fa8', '2126074738690043302211139064073553459984418855049352822209926208', 20); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('5c38ll2df8cc.ea8k9i40l7d3kibk457clf53bbeldgdlc376aj7a7472855h5iccb7ja0kk9dklch184b0jllda2843hf3je91ia0ba05eg2gfd8', '3244426171205484.6578633915920657537140922935', 22); + + BigNumber.config({DECIMAL_PLACES : 52}); + T('59k16a247.61737g31dc0g774g83dg8dc9fd8fiihda667i040f6b2244682jb', '207044760664.2887550452070736178915046269946', 21); + + BigNumber.config({DECIMAL_PLACES : 82}); + T('110100110001101011110111011000010000110100000011111011110000111111110101000111000110001111011110111110111000010111001110000001101.1101111001111010101101110101011001000011000000101011010000001111011001101010010101', '561214248546542162784739085096665717773.86906', 2); + + BigNumber.config({DECIMAL_PLACES : 11}); + T('36f.deg45023nic', '1887.5671423143628136523074608843', 24); + + BigNumber.config({DECIMAL_PLACES : 2}); + T('2.a7', '2.61389199970000056196530570', 17); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('40212435243045.4130510342441202145355231330051034244120214535523133005103425', '53056804709.709', 6); + + BigNumber.config({DECIMAL_PLACES : 44}); + T('1200.12140430444103413343343041420032110122444122', '175.2946969442501136', 5); + + BigNumber.config({DECIMAL_PLACES : 45}); + T('1a.cma7ce1fa7198f4l4136e24icdfjfem8175em64fele14', '33.564175901106526786865243352786443610109137364324033383', 23); + + BigNumber.config({DECIMAL_PLACES : 24}); + T('83.82j8j7mk5gj08fc90d7dmj96', '187.3532', 23); + + BigNumber.config({DECIMAL_PLACES : 28}); + T('29542da7aj1.aa6f5b4e5gb561gc34', '25221291260381.525845488058258131', 20); + + BigNumber.config({DECIMAL_PLACES : 21}); + T('23310314004100214404201444.42442021424124041211', '813327917597334624.91907050113787247', 5); + + BigNumber.config({DECIMAL_PLACES : 76}); + T('180ka8gcb2e52gg3ml8590.8lkaji90g4cl8dkinef0h0e13hlf1b54bngb9dfm1ehmalmakidmk6l6n0fe4anbf7gn8754j59a', '128782235162920368437352533016.3712710490503878', 24); + + BigNumber.config({DECIMAL_PLACES : 77}); + T('cj55j1abk1.11a00dib00e885bkdhb71ea8hkdjhih7b6cic84710dihedh58efg803i563e6ae2k9270773geih', '10259507050423.0509665801731862583991348047581595376734117515727774395', 21); + + BigNumber.config({DECIMAL_PLACES : 88}); + T('1120201122111211001102121220012202000221001011102210121000011121101210002.2100011212012221101021000112120122211010210001121201222110102100011212012221101021000112', '35651380254013249383472036570828775.78', 3); + + BigNumber.config({DECIMAL_PLACES : 61}); + T('nde8jl8filiabpp1ebiome1gng72ajlc05pcje.58k83pnpnnln1c250flhhe10i0aecl3kemo51i13ckj0ieji243nkh44bbafk', '531463579683815787587099214787456214450843210757585380.2052977699752', 26); + + BigNumber.config({DECIMAL_PLACES : 49}); + T('2423132320143244255320031342044542022.4021501234514001305003110201140332234405515452435', '28233915554941230658978083038.67734567636065289541', 6); + + BigNumber.config({DECIMAL_PLACES : 20}); + T('b8b057c619.881cda90778727315519', '240240367775.61294728461437827', 14); + + BigNumber.config({DECIMAL_PLACES : 57}); + T('3uke1r.qog7jpuls3wumhw9r6ij66xbtr9fxmcxo7pjkdsets6obc03cdkpohtp4', '177198677.78587988442236198004', 34); + + BigNumber.config({DECIMAL_PLACES : 53}); + T('rxp7iouofqsa.5xr0ytex5w3u84ss4bmqr4d2r58uk0w6vou7okvti3sqaf8xdt7m4', '2699846669670878465.17042631933406076262750289627556', 35); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('71.4dadah84a6', '127.26419', 18); + + BigNumber.config({DECIMAL_PLACES : 62}); + T('pho3b9iei6hp0dcf72fih.ph9881jc7d7c0c0mgpgd1ji1k02ola0l976leng417ng4dma8k5jj95gommail', '511945071604551808598197283361.9872166378092262156654881169655510', 26); + + BigNumber.config({DECIMAL_PLACES : 16}); + T('98.1902712204800298', '107.16547', 11); + + BigNumber.config({DECIMAL_PLACES : 70}); + T('12042214055152101441031134141544140013031204153503340.0001441130201520422300253055330454111450024335001352533025215001340303', '39389800555908783850258185920663768281644.00137621307644652979797336', 6); + + BigNumber.config({DECIMAL_PLACES : 85}); + T('10110111000101011010101011100011110110000011100101000100101000111000001101110001010010110011101100101000001100011111010111011100.000110111100110011011100001111010100110111000100110000100000010010100101100011001101', '243361227524012342673912659288240813532.10859467026399996528383947490', 2); + + BigNumber.config({DECIMAL_PLACES : 43}); + T('20320a9e1c.e13d8f38akka6fadl8ihb6l130aja4facgc892b7ik1', '2422250714258.6387686759191563066716078918648006468135734011652', 22); + + BigNumber.config({DECIMAL_PLACES : 6}); + T('fk3tfaumol70.nbu11t', '397624194336432136.7543900599912174983420474207', 31); + + BigNumber.config({DECIMAL_PLACES : 93}); + T('bndw.ia76eoij11afbtfap0nweobn9p3ukq3ykdaqhg9p3eh2kj95e8c82jarbuo6ng1v0uqvxgmx0oephdvyf26oxydy1cg2a', '500287.522616523131590467026372561556', 35); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('12.00222221021111110122211020211211122011', '5.110848610746726114', 3); + + BigNumber.config({DECIMAL_PLACES : 39}); + T('2781hhhb8a83ai.1ia3900g8i4534743692hfa4d2idid3hbie71b4', '100543014641347157.1039776690679366009661209140071615314125301', 19); + + BigNumber.config({DECIMAL_PLACES : 4}); + T('idrt.8pi8', '788649.2494047472', 35); + + BigNumber.config({DECIMAL_PLACES : 32}); + T('101553444.31404145323333511432344434343404', '1772452.5468497396', 6); + + BigNumber.config({DECIMAL_PLACES : 26}); + T('11913e.k48gaghi0bda65ca2fad6g3fe3', '4362449.9624', 21); + + BigNumber.config({DECIMAL_PLACES : 95}); + T('b.1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h2', '11.1', 19); + + BigNumber.config({DECIMAL_PLACES : 41}); + T('504.30415304153041530415304153041530415304153', '184.52', 6); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('1040tqefd1.kagvh6rc13', '79074558629081.5799860', 35); + + BigNumber.config({DECIMAL_PLACES : 66}); + T('88k7o8ik5jj36le.hi5i7pd4bnbijdamio535d2ch6dbd8fa810ha390f3nnm50k35598nk6j8d608p206', '537866727524277202000.680797912718430834', 26); + + BigNumber.config({DECIMAL_PLACES : 52}); + T('99a841081466974763476a2a94.8685193793416832964036250573858a28991099751a42161366', '1073406972360901510248908534.783223009295755306594680823047214404631', 11); + + BigNumber.config({DECIMAL_PLACES : 23}); + T('2824bb685415692c3454de3ba6ecdee2e64731e30386.251d7e62e78419d5bbd2e91', '949248114155968376205888968663100056112678439830801.156119125437472', 15); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('1.pm8mgslg4329n9f3afrstm', '1.803', 32); + + BigNumber.config({DECIMAL_PLACES : 64}); + T('1lpcq5lrlgmpeong4rhi33osk7e7.19rmrhsmn87lo1pr6fa0r87ae562legcl56ocse5ikm0icck2hjhob5cjl174idm', '5356399442861089801562327577317285912011.0463238125', 29); + + BigNumber.config({DECIMAL_PLACES : 75}); + T('82m1.1a4md6p9e92i4ghlb2gj6kqbihjpjjo7a0cagdb8c4l0o1eep3infb6qlo5ohffh2c943edckm2', '159517.051', 27); + + BigNumber.config({DECIMAL_PLACES : 33}); + T('2a.0ad1489a72438d6051a3cdb85a945c279', '38.055792640673814942897183865707181090111098818987279667501', 14); + + BigNumber.config({DECIMAL_PLACES : 85}); + T('110001011001101010010100100001011011001101010101111001010011100010110001001010010110100000111000000000001101000000110000100011100001101001100011010100110101111010110001.1011100011010100100011101101101100101011000110000110111110001100000110011000111100001', '288798319290142875873517012221913212736305288666801.721993378169914151', 2); + + BigNumber.config({DECIMAL_PLACES : 38}); + T('g578.d61b0da144ckf2jkcl10949664b9ea332i2l3a', '172950.603446775338659784933', 22); + + BigNumber.config({DECIMAL_PLACES : 60}); + T('gded9gk7jid6iknja1a5f2lajbj3nfoa.e2k009337h0ebkh40nl0685da83m99d7dok0nhob24fn21mnf3d0m4hji27l', '358724698418163432084126450455461239444900610.564480037377194308738297', 25); + + BigNumber.config({DECIMAL_PLACES : 21}); + T('1fml4uksb7ix1y.sso3bn1tfwq3hlccisodr', '171143420517125729119.8234191307649657940877', 35); + + BigNumber.config({DECIMAL_PLACES : 36}); + T('14c760d6m2.1nananananananananananananananananan', '4500058801177.0775', 25); + + BigNumber.config({DECIMAL_PLACES : 17}); + T('9fljfli8208i7bh3c7dde.4gk2g45kjjhk7i0jf', '6861754532912253293306011016.216766', 22); + + BigNumber.config({DECIMAL_PLACES : 88}); + T('3001121003203231320200201312003303213331113131100133213110032113.31330121313330323023210010122131021011200033322313113211233321203033223010323212313121', '257061387534308407753785204466907956119.8714885597106', 4); + + BigNumber.config({DECIMAL_PLACES : 53}); + T('1011222022.1122002202122110002010210020010111221010102200200022', '23309.54447401648241096074553786074233187398795698903', 3); + + BigNumber.config({DECIMAL_PLACES : 22}); + T('5.9194l4cb9fa8bah8b2m654', '5.393952', 23); + + BigNumber.config({DECIMAL_PLACES : 27}); + T('33010330211130.020232012002043243340030201', '4405710165.084291592965', 5); + + BigNumber.config({DECIMAL_PLACES : 92}); + T('13jdf.chee8klh511i494ffk6799ec193bj23lefd62576edd4ah8dhe956lg0jlg6k3081fh7b90kkc2jch552h2c92j018i', '275697.58195481441', 22); + + BigNumber.config({DECIMAL_PLACES : 73}); + T('479nerl5qc9.9gg9mhjlia0lpqpfmbo61gkfk3m8nang7qra73jkm205ffji6djibilkpg7beb94ddgk755q4', '1262554037978809.342581555046588836259033201946517724', 28); + + BigNumber.config({DECIMAL_PLACES : 77}); + T('2abe54cdahg4cfg73.a32gh72hhedf8b362afced335ff3a2934a3g88h1807c480g2623738bbhdb29da52fhae3bbf49d', '314766023685470770233.56531937360626278654', 18); + + BigNumber.config({DECIMAL_PLACES : 53}); + T('44fk73cgelq38ai1jl6mef2johb8aqigpghe6.41pe15mojjjf3nnhpfponasg5cgikcfick4ip43bp8e6l7m13mna4', '184105112778080215283996929747816484069365074433262524.140165', 29); + + BigNumber.config({DECIMAL_PLACES : 32}); + T('a.d6rkjt25eclbttos5e86st98ui7pplg2', '10.4002177231432347386440520809', 33); + + BigNumber.config({DECIMAL_PLACES : 89}); + T('1.2b072cjjl73700ahilibdmjn9hikf536njnmd3bdnbbg161m7bma9bjkap2p03h71debo18h91obc8iilpamae4fd', '1.093210794', 26); + + BigNumber.config({DECIMAL_PLACES : 25}); + T('429130757970568370597933312039338574250814304378587454538.54123403', '429130757970568370597933312039338574250814304378587454538.54123403', 10); + + BigNumber.config({DECIMAL_PLACES : 90}); + T('4egk9mo5.nq9mpjg1mdgkn9a91fbo96klk0h7chndjbekikrg28g34n0boclh3jl8che73a1opaef0op0bi470embme8jn16423', '61006052805.855039107767', 28); + + BigNumber.config({DECIMAL_PLACES : 41}); + T('fl8n7g92l609nr89o0c.pdebbgbbmcg2ie112887jb22kh16fc3mcjd20ao0l', '1763744254574742835397196108.9100951', 28); + + BigNumber.config({DECIMAL_PLACES : 71}); + T('69761d43jbifb3.5hjgbjff0b193hgae658f84hgdgja17a37i8f74', '529879890174710223.294978746680768846329827392297854102963', 20); + T('4e8ba596e760723db17586b2141fce3b37f803587c2c09a7f054e80000000000000000000000', '9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999', 16); + + // Test rounding. + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('1', '0.5', 2); + T('-1', '-0.5', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 1}); + T('0', '0.5', 2); + T('0', '-0.5', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 2}); + T('1', '0.5', 2); + T('0', '-0.5', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 3}); + T('0', '0.5', 2); + T('-1', '-0.5', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 4}); + T('1', '0.5', 2); + T('-1', '-0.5', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 5}); + T('0', '0.5', 2); + T('0', '-0.5', 2); + T('999', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 6}); + T('0', '0.5', 2); + T('0', '-0.5', 2); + T('1000', '999.5', 10); + T('-1000', '-999.5', 10); + T('10101110010111011110001100000', '365673567.5', 2); + T('10', '1.5', 2); + T('-10', '-1.5', 2); + T('-1110', '-14.5', 2); + T('11011001000000111', '111111.11111101', 2); + + BigNumber.config({ROUNDING_MODE : 7}); + T('1', '0.5', 2); + T('0', '-0.5', 2); + T('1000', '999.5', 10); + T('-999', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 8}); + T('0', '0.5', 2); + T('-1', '-0.5', 2); + T('999', '999.5', 10); + T('-1000', '-999.5', 10); + + BigNumber.config({ROUNDING_MODE : 4}); + T('0', '0', 2); + T('0', '0', 10); + T('1', '0.5', 10); + T('10', '9.9', 10); + T('100', '9.414403549937069229622318379677', 3); + T('2e', '85.724', 36); + T('1049a8925138111404333bb594303b3', '245329273960717287023167550190902.7196', 12); + T('10024012', '79882.1397169', 5); + T('bf8pijdqj7eaee8plp', '24913576091923713226797784', 27); + T('92ede36', '221315101.4486109701151', 17); + T('2tphhgbu3tfp', '201793843613197922.7289680244023879849892761206083518171246', 34); + T('334304414323442111042', '361019216753897.578090634736893396795045144615285524664717189351698468', 5); + T('101111111100000110101111100000101000111011101010001100001110', '863594881689232141.62881568577668460977625904', 2); + T('113aa38477', '2650149344.4439337077845022587667990', 11); + T('16234a9a69395843a26073599', '15410678383317464407550663.2765', 11); + T('1h744d4aeb313h3bcf327e3b6ff77f452', '29005210991102584193184888994590829162676.36864180128775308524399848', 18); + T('7fd', '3414.796182310782697496', 21); + T('1h61i9i6j802dh7e3c7hia36', '1564677221233470232427033268065.9552132872311604979708', 20); + T('298a2036a57a567510698a8209', '313334205044060726367000938.043033074655734794248199', 11); + T('1cc6e75ll568fh0kd56dje1af49489aooadc', '12702280403687491014084375085832810818379990225336.732151263602252539155', 25); + T('b359476583b5', '8388678747448.862', 12); + T('8781fe7e4176fc66a66ca5730090c7', '703596669768604729463688604501971142.9176994711280241981325903319', 16); + T('101110011110011', '23794.501525', 2); + T('1001201202222202101000012002121220021201110220122020110022211', '45111254165346649183259916415.393038562469348926338378', 3); + T('221', '25.3631', 3); + T('121201', '450.79905', 3); + T('202001221001121011021210021222001', '4132525698405883.4635374792891809964908659831439118', 3); + T('1000', '7.792303494645702446763290630498884400068339335428470929289382355', 2); + T('10110001101000000001011000001011111010111100011101101011011001001001011011010111110000111101001001110101110101011011011100010', '29513071238598351326634077220532565729.753116233815194468461197227952', 2); + T('110010', '50.3', 2); + + /* + + BigNumber.config({DECIMAL_PLACES : 1000}); + T('0.9tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn3', '0.3', 33); + T('-755788719654700625.3724b27a98ab8461015aa3993106b7425561a7947a368a886a729ba36b9b21b3401602995ab641085846038360478a6a4a4b138161a926592b703882799057b605a209854367054112a0a805489089a2b81929842754b24477344a744498b65462136aa293a42922b87343b4473317594350832086048739518722163986b5aab086006b0b3264730478069bb598131768954235054677799442a1a645a56702707497428a71984310838281214a110605a4996316582806434651aa2413a4a35477a48b9076b7752598932ab2a0437237887a86633a04a10817a64a5a8bb4906786542a7a31891230045250203b18986684b7582a8b5130322b399145b9b6a97143ab27b1768b3a698057060ba2b3373a7292653a64b314947862b78142a6ba28321513a350b833950438b137737a5a21861a2944132837498282314b91930079a7881464a2b0b9180b47aaba43581348189636298868b0364532b7777a2446a916666159b8b430b73345246b481937638714a820046765214436a192052813a993944190b7717b76ba0a82853bba355255173747ab49a904191b6660a08820098bb900192429401b010016224a7201a1a847a6151b636509738288245a83261829041354787a89b02211247204a98648346a695053b91856537472426160045438425446599a19a7208b913449438743351393', '-16541654165416351613.3000065165841541556784990494619761', 12); + T('-0.000000000000000000000000000000000000f4j4ftgo2kfkig1lu51ni9cfe9d119suj2gl2ujs6ks78mesor2qpihm6m2g4oo7t1jd44b7gf0hrdhjd9p0th4jc9idjm9jm9qulcqo0p43atotsgmqaeiqfo6q6ipc0dgje0jjpho9ugphegqbto5se29hksk22dq5q5i97be5cgsuj13c85c4tb7inc1a1i153rfpcbp65103n13466sslre6263di7rbmcsd9q1esffdtmu7mdt77ra9gf1rhknleod4id6jbhqq90hppj08bkqa5b3ob0a688iop5n66kspaa4dlqolfl9us0dng6ou0a2t9kpjnngoblo1sain3rg7ulaadd6s78n0s2tr6rbdel0627p5imf7q3plnud3prlldun19e198jikr2f39gb2p7qmd25hi6npbt3okgpfp299n9048bugt4d6g6c4063di2oltdu5i4j7ogph0mnq0o0n7g33ekbf64k7ui31ocjr93i1jojbja5b6j4593qnlh8q5b949n7pbjpsh8mdcs8uslfpnjj1pgk6jihp2848a01agg1nu4be04j2saiqfa77toh8cd17e3ecq9i4mot7e82m2mpbmbbm980i5aqlgce92ofkbchbshprhmp0c33m1tjuf73jp17molqmn51m1n86dc0hc5hgtf6en3glecgr8nsttn3ta4i0j6iionu70utapfuik1sm37hdu0h4cpl60lqmr2n5q8k9jo5866pehctkringti5eeqoi1i7ar3j4tars7q1kciok8itki5jeruq636tmal83ii9fd2kh83aota9hei3jn72777up8kpoo3g60rd1ujj3f7seic20c0jkpdpamh4bpidupl35ccnljfr6b29sl16cclgtkankajrfgki8c5u3qddal0lgp0rhhdl0bctc5rcqlpqf289iknm8ua0m', '-0.000000000000000000000000000000000000000000000000000001', 31); + T('0.000000000000hpwlejv37aqn2neqd4iy0sm7unmppfy1apey9u9p927prbdsbgd1b45t3p7vyifb6l4dut1s5vei3atsmdfap8nv6tirtwdjf220klsbwsc00lrraupr876e51kdbmsq137te8jbjs06j97obx9ftyncxbcneopuyolubo9r1ue2o84jpl1bkl4rlnun434yav93cxyne0infiidgt1ef1kn544ces10yn4ii2o0l8dxs5e5km9odb0yim3qbte11085r0csniyxr3qv20q6fefqr7stu78yewk04r12kwbncdljuyfulbtyuv9myvkv6f51lcnrdde2iyx72idqv38ntmg5pweqahxa6rax0w76bwqrlmju9nlsngdd39pjr5ypv0wjiipyq72biby5r2yecd1a1xible9do3ilv80hqrtsrllndbbfvcevlxs1s7r8l045400pdp49eghd3dmxaej7sajpclialpo46tqmlxundvl9w9xvjje8kxsc9khjqa8j4r89gj40pvxdu09anqyxyxiwj4p0ynrewrfkwftbfhiovjj5n2be09qg695obvaqkudlyo1khnc81wsghfdilwfx5xtjrwsj412cn8prwedxb5286v6ctvmdi8qmcsarh9grx4vxopnuo6afqeovo7ar83vw1hrgpklwtck2tm7061i460y54tg4ajadt18lsyhrbvp5c3xbqpp8foy36s3epjw2pdo7rg4bfrc675wug8vskgopu37ni5qxpk49l0gk5yg5es5l9l2tkb634osunbu1tkir9mjihi2300lj6r8bf8d50mw1636c2ewpscd6fd4xwsao7rd958avhwh51epte3b574wiyjos8681clhmpayclij79biitko0g07l52qkv4dkl9lh5gdibg37tsjfdw1bjx8cvwabvmrbxqorfoidmp46rusj22d3ixyta3b19qeaf2ril0dy', '1.5e-19', 35); + + BigNumber.config({DECIMAL_PLACES : 8000}); + T('3221311113213312301200121312331120223133103222310312200003.10133120021030102300130322112333011231122301021302213211200122102011112233031000222132211020000222030131132332123112032011231212023103002033233331010100311003202212321120132003300212303030201300012330123122330011010023120011231133131303033221010022110332233211122331110100033103213302033302020221302320001301133313100221130221110131313232030210310233030230201333031103331101332213032210010121132231001111300311120000210222020003220013031331132302223232211202000331120203120223002210103102123033103022323122102020231133012110000113330301003121100102101202202232102133333103113312030101330301302113232310200111011321101012102020322322011321031233202033213210030201210230303023302301220122030220120322011211011100022123210023332223110102130033003120330021302022232222322102021002331133033202210011201331101022101021302331003321111310101133200012320210131131120122333303103103330203000020230111101312103232123002323102110012331121022103300032132101102103320030200001120033320130221133320000331310233101121023130032302213030223101131033310231010131233311202122331223233132210233023201113213330330102303103130222321020110211100311231310123332211301331000320233100223202313100101331122003112132130213011201211301323000002121223132122002222312231332022010323332211130132213331031010202301331120113332201302330020311301100203132020000121122232000131231313113320133322320023011123023010232031130201203313013031131330022010102113231021020120130032110122131213203120023133323223312031122123111323103013302011120122210331110021201303311023203333121113231121322013322233001321103310301003132213320200123011300132232131101313210100120202023133310332112122303233203030001002103331232311130232210000231100122302131223110332003331230110120303211200102032230000122120131120020320022101011012103212313313022112302311320030310021313213230200001231232101120023230000301313230221100101123312210121131001221121013022123110300020300201231231323321302300132211232323233120113130332103333013122303210021002301122021201010312231001300212310202123103311011023331333230203303103212233020310032212330330220330221022010021221113000330133200222130321300010000201200303021321332230023110110013213000002213012131333100002130030202111001023101233230330020032312023113210022000200301310223113233321220021111201110022133203030312232102102210103302220310230132031213123133201112010220120333131023110020231131300122130221310000200111220302221213001230221021203330003331231222102113103221002301233213322000120321022201200230130122030011133201210311201201322331201111300133321213221013323322313031112003133322123110033323023020122123232300123330213213122203013313331030032312303220202321220213202100113320210213201220012321310333122313223031110022230332030123323221320002313331211003333220132010323301022130321122211213211332213001021010310101111123313030222123301101133313212013311210312222000133012130232232010330330110310021302100012101021022230011021231231201003303212003312203332213002132332113333132030122100101323121031000321033132100330022202133012300313031130300333231002000002222131031320203120111210023113300033012202101003200103100131010300231022202332221121132221222211313202002013031001011110210102123121113122213110103310310122032201023312110131121201131201012222020113300212211301202022321210311330113322013330010323131001331201212202033120020112212302020010320221023130233000030211332203222121023200323130010032021323113330132323300032003123103021131131111010033321333332003023113011331101131003233213002332201000212322122033020012323200113113201112021333333032111232112110323323232322022231322211322003012002023201200112103010132230033000202121311320020013200122212031312013001010002230123120123001021030313222223300223233330301132033033130230101231223122311313301332022231030331111010211120120321211113133312313021113002213313131110013312123320201321002231203030002120031201130332031101213220030320112103133110223121123101210303000131333333000322232301013210112100111333301223102233302220201321320121201200313312203123231221332032310101032232113122003233332202031302020000023333232123100112101321110110332220313323022231210130210111230301222133010222221101220223103312100112111100010032101332301102303300103200121020100321002203132330112132023311112003011010130021311030000023102011312101311220012230121333311222103213311212202001331020301121122202212110132033031123311330020132102001102112232232303323122313002330111123010313130000033021003110332132303223132303202300131122210210133000230332103021123130132232222230313021131300013222003333322211231332000000230102223122302201002010313113103211230001312110210013001100013302130313221312010231123013103020110332300323110201002120333312223121233122010022310201120030313023021020010103232330212122033111201323011210233012310232022323131220320212302130031120000333200013032002312120322213020210031023312201320121012222320230020230202230311320323302220121312133003030230110210031232233322121020222121020022023202300320100203232321233313323123133103323011003023213313230233331301032131100030030103232313032310000130332320321112101020111000012310320033023021202322102321113111211030131313303210023003213233232232031223102131000002231303331301312232032323310122133102323110311022320113222232301331100110211023132013211203123203211232202322033202213130101312210200022201123333302331022212311212320023102312022221323211002000020002003130301012122201302221112033331022220312131031300133332333033112310131321121210201132122021120112200210311313223100222322212101202111103102322301323302113220013000202133031132113000003130302130110011200302012303000302020132120232302021111122212222230330201003333000031012030021003230131232010302320011020033300203333112000331200212302001113120312210300330100322200200130000310003102023103033222233202101220122202012301311213301032001010103132022312323232220003010320113003303230301112112211102311032100131131211311333120200223202001210103220210211000210023323110210121020321022001103013003012321320112022300332203031202112000323133300130130022100001333111230311001032331331333023000110112211110023013310023212112121003000000103131202211330332333330110130222202332332313313211030302000102323333012333331210332220002033030120232332032123130011321201320001213123213210233122331031202233201001012131002312210110300120030113220200200220011322010301122020023023102332321000003300322323223321210022110221101030133123020013132121233320100321320033131101023330201233212232312001220302313002001101312201021122220020221321211201210012203003120232232302211201103110303210320001033330120103220001223220003130113212110323012002323311320130033333302122101032110313110131003120013303231121213111110322323332230021332122203320313102010002312133220012323022320332211303331313032110131310113130223201121103110320330132100020133122133312133222013301200132023232220203102131300113011321322231022130101021212313331313312211130203333203123331011310021212311331001201000033123022332000231221322320010113323120132002122231033132120333203320303323110021203021232233102020021322301001121233312100003202222100020113113012200022311210133022301031333003131020211221302322002213311130131302101032233231103213132013102300311233133303323033130321230231100220031131100202111221130100133111002320222202230030102003133102022111200103010113332233031323232003020312002002102330220231320100323032021000333110231010303032032131331021310200120130221022121220002102203020220101210110303232330100323312121333232330303311032322233102223003103101300331132011232012120320123203002022031213220322200323101333332132001112100120000220000313330323131013111013311122302122110211010300213302330233300312130131130013321002110003012123223213013002321132320300331121121010221113121301220111133332323320212323022203200030320123223011203203330131131303100332331232003013200020132210303320022310221123212031133331223112221123322111333111133122001221300212121230130021122112001000313112223110231102032031303223110233103010203120320131203320133302310301233012112201123313233203310102001003211311211320123010311', '75883436516535445385952265101338627.28064184', 4); + T('c77g12a7326d2dgf821eegb03bfac9c0d.c22b2ab88c8g70e53e332a15841b1ae088gd4a118c1946563c14ga7g2d18c4g9gd0340db9db44fc91d3e889d95522d53213741066ced0d4ef5g31df250915fe97143410dfd80gg5d1a70gc5c26185d3e3b5651da5d95c3405bdc36g501f9g2127gddff2a5gfgb6816cbg870a219563e5f0e4c1fc743ce02fgd355c62243e34df7g9b32c0gb4f37gfe5570cc13a9ab067596ddg6cc4fcacb650eg7f67adgf2cd0a1e2239g988eeafg654c9eb2f1c4626gb60g80g8b37732008765b3e09g4ag66fg964423011a55d5g254d16d9ddae1c897cfc408c9790c32g4ae60f5df6a77b02a9c78868c6fd4e09617df91a3gb5858c58e78c12883gg2678cc09f15483ge491213e84d99b49a7fa983f47eg100fa601g96b5de3ab582ag7e80ba63ac5f253geb58bd08ba38a813e069fe513089e6148371b574737fa57dd64d3f5ccb699gg02017915b746f39ae3g3a07f742cdcg829fe591011283b7ea0689ag63bcfagc34f0eg128a30302f08fb9a2a35ad6f366babgc7gdc414bdcf131bce71f886b8ea8gde7e9eb3512969b2g3ac8e10e60749582b6140ca08bg25c315fbf0cg8643e6c368b98e64aeg20c0bd7cc92192620892800b3422d32a8a59a6g3aaeb805bd5e3d69d07244ecfeea325a2d2bf3cdcd525c3f0859709g5098bbf3a8d1a8e83ccb9bce35e30aeg6c46130b2ecd4beeag2ff7fe13a8b5ade5bad19c495cbag08d084c8e7f7ac67aa8g60475beaca83f5f5b3a1d17a041dcb9c1508816e053b6df4e4g0909ba8cbgb23552f7589fe2637fdd595f43e8e8048e704a6645149bec39ab154d218b87geb33b715agd2a0752e43dd87ddge5936fce1562ec8cd281338b9f48854de8c3ea37620a465577g659be796g4egcbb060eg4121bgdc291a195b47601e85ee52dc8bg6caa53e82g8g4ce28g387f207f4309fb54bf5f3c2gb522708fa75a9352ffc394d3cfc8a2742d2ce43c916b185097b5f5258a44eacf4fc2g8cdga1bbg6558ab0433d561608e60cg3711g10bfb08gf1ac05954d1cd0b483g799ac43e9b394g61ea702990ege7fd7652ee17d0gg2dfg31fa55072f4g33ee424ddc74124e7894bb2460602d1c9442b55eae226g7g43e1age5geg587fe8419c0e2c2e56658a304eeg6ae3e77db856g5gfb0236bff6f280203782a248249ce57e9406b2781e22475b96e7837g6d14ed2g95b6815gb6984bde25a0fa768fe02ecb22g874770agg1gff7f047a54a122e35g8e11dd1465b93b0f48272173df09ag76a24e91107g99dedbebb221a62610c91feg7997ga7de89fbe44008603d3a955fe9784e64ee07b741a1b1133f578c31263e314bfb11c2ggab358bf88c211572ec82f0824d3da0726d67565b8cdfgf5c30927efd9353b9dc5g39be86e720049420ab46gfgb7afeag93716f6a5bg1ffg44e5aed7bdd6c7b0ac0320627a4745eb5789e6dfg68g4c05agf34f7588g70bb56cc5389a04cb6g17d1f06d7869ca8edga349b04dff6079bd3b74d8343647bf0g521466813779a8gb0dg3c769b05329884g8d8926767a8e8df62f58caed0912aeg4c17b2c73f92f0f0ae48344gd93g0d8bg422bb9f3a26d356e5b6d0c6169a38d942199gc96a6be7b6b41gc9c2278151660145eefffgg6b014c1g9bf69b855e8b598f916487ga100158a549b99c1dde06bf9b5eagb07087c71e2385392ab5a683dc937929f65b5fd0677002342ad65b04716ee40ea0e91a536eb91ca98agda0e42f70688a6f0g9ea838g759319e37e0bfddde50g14574dbed699125b242c98bagaa6272agfabce194ad5a96dd7e81a87d66b958f72e3f5d2b6cfg73f72e1ed05d5cab08543c8ag05gb17ffa23c7eg700143ad6g7ea7a5192af96b4ag0e43b87114148g39de262d852572886ebcbbb8cd9fa593d6c06c0ccgc18abcadde1010eg2c615d52ff4d76826bfc622640825d3e12eg74918e7f4d2d3bgacf89daeb1c609d1gcfc55807aef8314109b93a2e9cf8cafded0c583355bgac3gcg40fdef4d9da1f96d09d7d67bg8d37fge4e2g3cf498fc1gcafef89a29bd4f7gc5f0aa6fd0c8614gbf16b2d428f438ec27ceg9952ggeccg18be48cd9e5612d1525bg912ee043f3d022d7eg96b06f39e5g864080f54621fag75c894a5d51e02cba7bb4a1e33f43g779259f0b9c65cf6a375c0a9cd4e7c925gece5d1c9c7faa7ebf92d30dbdgbgc7bc0158c20097d7aaa7g938baf81da201dd3fee2e4eeb42a9269c3g30f00aa8eed4c1c33722ge6ae9e362258fa071ca204d45945dcd1f872ddc29bdbg7b5d59g13874b627a4f5ec6b0g95993c78ce55e70246d1c7g75335b73cba41c2ca8d572efcgd694c1d54a255cg416d738d295a95e6934eb7f28c3922c2cgb77b58c98a27f9g44ff0f934e692bfbffc2f8973126dg8cad3cece7f4b8b8f2d4a71c1580727d4b8bc69edc56b92528bd251ecc79f69e81db90d01a6d023c4119g1c63gb6387b9b326ad3787241b846372eg899949e55daab1gb231a8bfcb9e062gf9ag501a9859cf17bb28518d85ea8678294c8417dbc4318da1c3a8e1e4d730208a2cg687227a333c9c7a0274a1cb441g24dg2f20df26gb885b0g7aec3f650ee8f2a750fd5541g57f53b6g33gadce6c64bg8ad2dg442dfa472be93363d871cgeg782e9fc1b104g7583b3e676c973c5d1252b49gd01g9b79e52699081414941c69281abdeee153af0406246423d1f75a720ad287f1aeeca47226eg0029f030498fb100f19d7fd9gg8b9dfe5113gee2gc001da6f78c42bea5f5eag5490gcegg4865fag331gde13d744e0657e95060441ea1fff181da6f8d090e26b0c731b689a11g89gg298g22c9226ae2d4a46e4f41e5b5b68d6fe06436de85b89fb901c0e49ced50c47ab630243dd7ebef32604dabbe1d4d44c25cdb1g4eg211ef0a150e20gdbcd832eebg4gfg33b14g4d9f1fb1a9974bfbbf0e7d511612841bb4gf87f4e013f799cd2727gg6b4158024f21028b14b72634ff5fb1b4a32g6c49411g42596820b6288e454734782b973a6d0bc56300fc29955aff5621c4567gg312197a69a5e7gf5cc82684g2cd8g4e0198cc6d21a71gca0caa7ggaf198590b010g5fdg8468fb0g511ea29a3g947b1f6f676e82acg0f155e3e67e9e698g0dcggdfe5e34ff9abcf86gcba066d0bf9937fe1bbd930747835ebc0b47ag1aadf582b89671430861dg5783f257312g95c83gd41a956c399d904825cbb3b88c86g70d43ce7dbg7255245a04e5725fc310447a7961b983aebcaec1424fd7f7ag2b27gbec5g31f4031daba6cfe55a761g4f8ab5d3a32a31a5g2b0286a31gbb74449ab1b99fgb8dga858b5gf0e446921aagad35ae92e93b8b650g0cd2960ffb90gg93bg382dc30571e37d7b10e9egd22849egg3gbg64b09d8ege7g8c7c53a3e89a6346e4f3ebd29186b4d652321ae226bc06g8f0beg00f82568d0geeb2da85g29f5a5b7c847ad90041dgf2bb4a0667062a26d756dfc5be6agf737ca25270ed362e8f6af4477fe2d21a581e363c0g91d9615fgb517bff84b4a1fg8ae7bab4845f8g321dd9f49c8862fgd78c8437933fad41086cbdg24cba4b4a2dg820e395f183baa080eg703ag4a8978590fc3ec6b34b4039016b27aegg36e7g10a486a9eg3e9da858b3f61b2598507f8905e560b17f2d6e260576g3611d13dd63cfg15gb94gggg7132a81ddg7f1076295b318dc6a5b714ff61728756db8be0f9c8b8a31792622a5g24c7fa764g9g9b8909e2abe41723e39bbbgaf9edd7019f3c89d27e5f4a6d8a7ab4c4ebef48409aa05066072d1633fbd4dbb582d795ee358c8efe4fffec9e4e0db38g765b8418ecae1023cg595ged32ae268c5cbd122f039c79bf0a0aafa414c13bfgf220c4a75daad6dgc207426fe008c48810a5bg9ba76df01bfad40dce31aebdagg6a9670g6f429d25gef650833690599bd27dd0646b8732cg528dadb86b2f8bb873b93bbdb85faab89b8d018270061dbg3g7gc0gd3b5d8e386ag49072df87fe4c45gbeg3af32gbfc14803e05g0eg1685g60f686f30cfd424dc3d056g011eacac67g7c2fe749e055e496ae96e5e8fafe4fcae23g5cc1gf2g8b857g9g05ab38dfd746a404gd91949dbg05c3a9abgbfb063348d8bfd4250dee307d06a57c98g8gd724b5777d2f1176egfd1499164cb9aa7b0g2f851g7ddac4a00db093dbaf387d7e5992a217e2ff7f184c7cbb3a77640c2e33a4638723c4f57721fee1b075ab7d370geccf0388669e80431a84791aba3613d0f9g04e3g3g363f41d31d1c51be0f1d9be014f2f83ebc7a2fc87a633b1b5bbgde8d3gcce3g0252c1800a0g0dfa8g550a2069bga56237d7bf36cg5d73f1cbcf2de6fgbbgg697ecgfc4dd4fb39dg44008925e89504e7gcf7030a208bfb7e00dd88d388ac72ae211d4aad14g66g74eeacdee7350b36ag5gc26cfbfc3680f588gd3fgd9b57724bde85cg4g59692c7fb0749d939e23d4g8ga181dff0ged465g57525cfe9996ded3b1a5d3319f2d14ded68b9d958ec13e26dbcfecc91363b3355a717ceea7055a6de7462f2fdd056418f34gg1f3f7fa7923efc7bgddf1b4f1465c1bace758b6g03cefa6d46804e52309g792162485c0dddbc1cdcga8g300gb26bfgcg4e88g54dgaa6e1149c32339ad96bc3b3993ab6gbg5d6638bgeb52aedad4g4b56b5c8095f406d31cc35960b4dd966d13dfdd4e3bbae781b72fa435038262ga48begfddbef73cdg4gfb0fb0fcg73f91e796d470c15543e253c5c4c8abb59g64cb4fg5e45e01g8fedf6bd5daedf9g57235e8457dd5b3866965fdb265d3a070b1a84b713g227gg6966db142637488g96067g7gfg9g6607f522caf2f9c3f1187007469f6d1dccgb67f56676g9g074c32ag41c88g79g849f554g807g511621bc3g13a57a862a39de2a54e9d549623bdgg3ebeff5a7d7cad9fb868ddeggceec6g05688f11fdg586b5dg3bd752b32c1509bdg8d351ce740dc26dfdg8g45818g5de2gcd041df00b23f809d4db010e4e03ag691151c52627185e7c399d1e5e2ec6013508d803f77057eb38440e5f161f6ee0200f81b54a33g62580002ba5b51cg16279b806740cb4455baab1f15gd83495222604fb59bd1865d569b320baba9g890cf40c90e937d492aga8aeg8ca492b0f4c85adab229874fd788d3c7d6f2f53d80830d28degd7f5ddf333eabc15b42c4f3g79d71b801d02eb7c7ec74ae4d114g66c94333ee0354445f5d35075606bb678afeeb836gg369b21fbfae95388ag831606faef32236255dbg7b515de3faebg2c9c69d71e1878529eb52ge27194ba4b91dca49e98b65ef8544g98f7652e80a62ab2494g5ebd4667g47e8c4711c0e3780ec123a65g6666c83bbad5737598810c3e208b7c991492g1e2889f78f20g7f2c3905bd0e4079910f2e88ga399b6g447g03f5c2e387bce1889f0b40e9f9c4850977ec76b6d9g8795cce18ga92bf395c3fd5b20f6edfe07edege906g219ec32d3fe83g3a5aa2ba673304ac5a2ea06d03c68d0553e315c38f9e1g56d49f8efg9743943ba11139cga4g1c8bf35gec63725508741ce16e33gcdbg4ebeece7cf9f47gf019531d5b3ad3225349d11a90f0a42f474bcc069e727189da2821e9fe6ecf82c93616d5g765d981g726f8ff87c76g7d9919184ee524a7f5e3f0d48750g5b5c4f0108914cbc925e865720ebdb79bb4589299g5d729525c', '29455060024714386814004539395764145766251.71334340573066029478166351919', 17); + T('23.23002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331', '11.69', 4); + T('120061a508.249577ab453213141118532579b5aab698b136731a654722605a56b4186564888369ab19408913065b21300b2a52216a4871491852b940695439b35428b808a49869a0b3b95750b4a45ba57738b898520349070074053a62ba67b85174887927179692101a8b3097a8b38741ba2aa0b1901312b01903248830787b488aa435514b1120b4b9985a8861670b0226677a86463a199180861b5881503242a25abb1a2870b02308931382b26550a6b5a71196ba1744b9a0b488419953a81604003636a75920011839ab69514396b4b9aa567989686b6174481659815011b1924a998086506bb827939ba9ab75625005a8716813460829894b1b848bb541bb80894b451596731308104974692350a3b114b91224bb035a5048919001b5a3313a712142214344235a559131b681425277245a068a3178612425b0902134212bb65876588135198ba5b611b9617a3b878b354236731975420144b8b7888781602168a430953a00460856317b49b12b87067a4963912601102a5a021489b500130964b9320269391888b33949510454b84a66934ab828972a00540194745660bb89771618603a92a5160444883119105843786965783125a13b02b5aaa88a26b9264b36685303b561b53bb782212948b7148344176985318232a38b41b81a19a421968072909b23255a9566639612b67a59b943ba9a5432b103087b69a8aa51102664731292a0832a65545100152192290738220371a58403611a43a989193311132236423573b86509866762584947b8527b74883594436b5409560b00398111018057b51965878457723ab43682392318a29a539a007417bb2366050a7a76a5b43046524b28b812973333b931196718741b6148742743b11575842b15977109881b187b19887a6959a4428b42a769471a356099486a3170a43b33492a78289019818b013649ab02a7427886ab757248939aa84aa12a76713472aa0880775154447862a6211763b40ba71b735b7b31b257773413a0022018631012403b20199a93a5688077a77142a8409369a64a29820569b769bb1400b4994a855671357b4254121611254b901916a2738899936250b3a09a491695720101ab201aa5b144b495511a00b92089118605214032a615a039a73034915553b88275975037a1852510b00b4380828860465a608ab8365500a1483853596461a7836b1a74993aa41129803a126035701689158795a83429977b20386b4430641140977714351832625811443b4b669206393a5a14731497b8a018b032a79602242413b88607609aa35ab8a780932480023a8b535586384b36422b66340732119b8697a86123a955b964813b3a93a1a6bb987361a489a51343710bb1792a67b19567612731724b7060338a96781270a00457501aa9b0b7309160368135550351a84472882871657207a506a65b77b5779680068b3b2566a72a8a1707b584b541b0424922a7990b28b363a755a84b86724568b56387415900450758812974586682177351088b13b429ab35783171225b62ba33a6672b342204710b678b8b8565224a92a3b4075014b05031300a9321b50ab26248313a42a011a229553a7184227a7977a6a6232298700a3a83b01a96430a153097541734043765151b4b2216a96298059a701b689649973263b35340626694376085787021b0947b24bb5755504678825a487719a8255553309339b3877a245401580aab69aa238b7348837933315018030866b13a302490925a44041520156005b6120b47167a755023078a174b0578857b218511708896a1993b356874393627237bb347a72452ab35158077911492909a535a06444a5439840a525987461aa4448a4b41a40136629908687473a445526b72249ab2873b9808725094161a4552041965273aa69424a18b75529015403a5005904ba9588427ba12a36409b76265925ab369b062a966602b5995365ba4a07235b9986789a14a642226049b160132340b07ab06764bab162446a884792913612130784749a90363b82ba56a0611329778888ba4076a279a15a7539266b511b50132a5b1b6988762a00b4502807a2470859035b63b157ab25a6698455223a5655a5895063a020161a8670484b8211bab5831606a098a30521b67a31407716045a862952b6707a497b555392b32498b94678a797b46a1bb276ba7267753b79b67a947657643885735062762a291422b351a772b9b0513b4b1598419768b5410260142991521890716a87750651a296041887b2901b843013688142329b2b164302097840735a84140158582607b3025093487907326181587aa09a08b034843510b646430518051bbb533504685b85bb985895aa4aa7a655a9a389076a17367259343a7107769146a4505524b1773037507578a5b179916105b718aaa69b305008309211a01a23629934b73573396aa4410644abaa274053720bb077a91b1a0898b9677795246288951221bb47080226052832918548499352b4209b78538a398052a56b03002679075321330a59a900192b2146b944976094109a047a367590972a409167760668279bb16b866671b2798991b61407770b3ba67a8889077b5124b657244b949b36062389702383a117583053102175081866232635ab4824239a53554652920a58ab5b51291a5a42a49b488211a2932ba8320000640b0237810a995647467238544155a8717335829293b232a6664840ba6ba66954b5202abbb135813224708976101210a7042a301a4677101b3367765796287b4a1ab791602a769a62207a84153a16857271a9a4849986243b6a6b1735469492993a52349447b2b850ab793201a112053254a8a34ba01377a12543594045735815272561132577824032932a8172281b20b09703857459186b7aa422165103a2423a826127648976b58a22122ba7091480496291124a66671434b18715295545a43b587955755ab780564a3a5a601614553145aa16357282ba9955b0b84255951a9b62a7423a120b008b8739a76a86599774a4967b6209b193ba013b116881b078903a907379608a48a5958a9657694ab9942299a92b1884040667487108a2556968004612386970b020044a1763216658265586b8901a4259172b992519ba2194ab8bb4a84a7a6b936370842254a32b5801612418b4805ba4512b1aa9b3985358a358a0a0843606827b5941774642b846b46ab3526542ba952374736b54ab608a40b9bb18a896178b26999503b9a63486003684255884907311039200b90a30705515a6b3b5933b87429842720b841004078a07691b3006014ba97217b96439539406840bab24a70b35a264718bb6a0502021a4217345660535a40b638a88170222383524b04a2b1440b40b94413b7b69804169199744383bb9b5255b80a0999a13715770075351a6a7579544b30a8970a64599b3968297632a501413499867a6a457a05781229b8179710440559b57a03338950bb4160463b6a81554b3190329955b069054b17b5218233125186098888279248485b3a01b27359890727435188a28485882708318a593a7036514560b65b8248013a51381403b96bb205883992484b49901078ab7654937516138480a39501a7624946822a4641905500782285807092051265b12a9759391425934053b863a94839137573b000b737a9909b3627297009484220a8543277116973311550588830a59303462b4a5703471773a3407266948561528443a2b95208b96307900356228b177bab91a67281b330829683116b0792b803a031087163374539b50b988b75575a109a312992b66a2919731054333205269390a991586734a327272814ba95b5880ab30a8203415623216801207a4343b30a3469b902b0246b5ba8a7a26a8904aa72a3866611897443295064aa71bb573b7b738b20830382b3012100a865ba199a8bb44763932497477042537162a613810514bbb818323aa9172a773952624651918aa9043b3364512b2400491a3800a1a1239507141228a9324228345414b0a31a8956997a6128a80794047662a46308a7b394b00648797a61221855a0746a29b32a971ba55b52a96b153b2575073bb8045077b75b263b43733619a7b12bbb1a483654ba584b1193146521133995438b122a89b50498939145b77aaa01b76594a6413aa84a3b42842a9200503a5138b27007b95a1a5b140198319606467b40961a89574b34055733b2193918b87a99994297757809287245ab5586986066720bbb5ab922527304349a011831678b29bb623400ab52870ab1a414114754210088996b82a82a43b175427216094363394b71a71997561a63485a13ba06519165a85948a652168a684a23aa8b8428a592249b259a64666a34b8937b36536450b013abb126b56027305191a8b3bb2a6491982a903a7ba733b9a20b702b39553a634438687020a585b0b3316a20b749171b41a09b5817532213521b072bb15871825b0a275636a0b9901328404b1189983852468b3a942551382301669bb248286958131579054a30b47628a9807a3b014842099346845673028634726526809503b7126435830587aaa58a6a0aa712a464676380bb4424b0b74925808bb4a8011a38740a69678855693262850a4903aa98402871a53655a08794b680240110b399455b1152478a55b254908b839378846351320b8994a3092556561a2878b791a09486892a0414510938840b1a2881132353445b5095880488b81502b7b3ba93b5a82b4820187a4a1a517854679983b0821b8066a761368a5a850621025b592b57010718605b42277966a1353349473a46809696808214aa7716b368429471a764634747a86308a9317511a02a80567463a052ba29a77410835403815b979347989475919631324110588119b702593aa590a1682bb8b1773bb7aa244869a4a5633900a876a57892505a359373b208088a9805ba791564055396074116523893494b31a9949b8983701425b3651aa67210611108b59b4a73100508b481467a399b05393208769134496817527a214238169177065015370964830190138425556997798060960894533410274065287a08b9bb004233555115084b2116054034406b912099554306202a0a22b88494879241443a5316792b6a4b9bb603b908a1ab327aa685267b24a87a145643134b2a001b25a6a64917148b27476a4b3814831261127b4ab996b79092405578737a304849369b06667593a47066a74168a713a759399647b350648a452011ba895695a471896b91825b756833794946060b540818bb4a5b0462242a01aa444076a535b2077388860a506ba6477789752a4b8144458a372131399b7294706a053363078105261ab5808737621a19754256a7805206ba5ab72516b72a1085a65b096807508bb05776877331857378439790711a6b608358182834361b90169786b86546088836088346b76a87b097826194a47b8a488a60bab29bb708379b086280592a5710601908b0980ba9b1a3530b1b26a77815b82b4b4a2401bb9b460000a480873b5322435295837353644693860767589100b307054615a791650840199b8122b0138b2b41007374a441322243367a341335b9335766186b333b9a515877598b42612738a36a4571', '6021275480.19992468556125044489507', 12); + T('3203001330102013.21130321012302133220331003232330122103203301112100203330232322130110130100232123110222112233321113010300311221303100223100220003133232311223111122202300331320123002102212012310230132322003033131231212020000123100033313033011121012110101000120331113033033223012323213003130323010323001322210131131003300101220322331110202100320100121202012332232311330013101003220231301111311112301312012032112222032203301103200110232000133232210330301001122322320123031012132313230322320230311321133313323002012300020201311130101020130002333021133101231212122032222121110213303112203111320130330002333033320233002012133101310320330031300232120023030123103031130130200212222222300321123121021133202122110030202031112003303322003001201202013001103311132101200300133122302112221330320013331223030231200212122313323322320303210012021201132023003103201132300202322130322310010311113332133232223313213011232113232223011211011211201120033112332323010031010231310330012022210311023112312220131323203230111021202221330013333313320132000132301300013330201232332121312333321222023330202312102122333313302123020000123313301022113213000112231331132331221331020200310000031231022121323101100130020011330231200312023311013011100212230013122120303212313331032031200213201230013320203103121100333112300110131211121012113202202332331201311011201120233322230020302222002230211012233033000133120120013000022221101132223212233331222102321103202202110301223303032100312313221223331003322110021022102133103003320231112202331221100011022033113023101203002133013123321031230330013310031112222033132320302102311331103313210031300111222112133302112020020202320002011122331003011321333312212023301333132332331232221313011132033200001322323000211332013103312011332012032131311331122313012211022322312000231333002000311302013312103103211012113200012131332013302030121132321120211011032200102030323211023010120131332101212110103113002011322302112220332032302313300312231310021302030100221111002133331312100233323020221321123021212120311112012313121121033230223310323103023313312012220111331110123310333212030321201011102003012312011301232320123112311011131000111212122232310002303002111301201323030331301000130230010232313301222103321121101311301110012103313121023321013201310023003131100323212013330312031120200123113221100122101203212223001103003011001010301223310320222313032202022200021110223320121331303110013021303303320003313133203132312232121200300232130033320110333222233120312132113321013300020100023203300310232022103300122121002003132100331203013100011121330331221331002222303113300331003022322032223133000200110103200320223022231213012033011022211022220113102320331121101100213220121021233123333123111313021210102130310113012101020132211220001130102112133323203320201110002102133112021000230231103132112010302131201103000301302331223023221121231230210122000231223103022202122223000311200121002100312312302121013002102312100323132332321302222003011203333101232132213233210011222101200330200212221202321212022000133121301300213322231130012230130330200302333231121131332211003232303121201201132220010213310002300233023130133303201012010333011212100011322222031210022310011023132022301210133132112011321300323232321331110200132320320131220120202021303331033030223032121203002000320101133303010111010011221133310000322233032202212123000120211120112222031021012112022112223202332021133002111302002213100332312110120013301220002101131331313311010020231322210223212133231202012023202200130322012301223331020012223131233211001201110303230332100113010100303032121232321303011230001213031221101132213233323211213131032222102231103001231011122002211233013220321213203002101213323022231231331013131333201220030110310201122310122023022202100011233012031102200300021233112223022323022212121221122203120002333232102130101002123203210020223101333103203302023200220002030201031330011331101000323121100333032101112230000013221031213333301000310201101011213031032210211020011132323200232333013130320113212010220332230031302103232012302111302133302331311121333212130103123312301131230320320332002313000022100123102321212000330122202230311030103233002020020123113120120312001032132131123003311321213201120203301210312021022320123020031232003301002221322022010220033301223033131322011121313020321030023121031221222111020000133113022111032102023213113011310212233320232120113303102122233300201102222232201111220130230213230232332010122332130013320123113332113301223231231321331203211033230213031200031001001222001213110310221321010003221123100001222232213311110032311031010031131002131311302112221213000222220010123230120312113121222322221010332321201330311301221032332322011012131102002102331002223021033221110002121221231023212333023133232330330130303100133001300230301100303033133100021021030212323313010332210213013231022003023311303012010000031102222221213220232130010330310013210200231330320031302201330120113123321223202023032112210231030322032001201032231000033322312001331333211230233022223110122212002200230121022213020222230201302102323232112100133011302320032300000003030200212011333203121001322130313003331320203000202200311020313120120031101012023312300230133003110321222100211311331112023031011112130101213032303131312031022010031300222301332200302310331210013213220223231212010011133301033221132210330320010330311013213133121113023000103020030211203021103333231301300013133310022032132133121033023233000203313023000103030121223110012221213213021102312310200301301221301011010202022023010301301131031102000001223011213013020331301013130223310121220212332012201221121223000002301230022110322032032111220300320302332313112331011330313320023321033312112233300122302100100033321210220010123030313232223222303003103230211213220022022123201012320211203300001102311003331021230013203013220230221031202320301320010120110320220301320013332030131030020321302201201321312221111132111202113111322020203223303102103112133122320330012221020131020300302131010323013101311032233111312021131202230010303013023203112023102302100133123011022013220310331120030113122122112032203200222223333223021102123300102111233202311311112121220233011333111023103300322233201100223001103131003321220302320333331320023221103112222103211210032300312320303123133312330322020210323210102230111123302323232020130310000302133022221210000311313103100031301133012123010010332210221033213313001113100121232010001030231110133000221313201002221101321333022203030212010222220021120302001330202310113112101130220202013302113212220220032200023223031331321130030301023111321233030121133321313033323102211310312331013211233120220103231103011312113201102100000102001311003221003032111013103132002010110010330223323211313102310011212331221113310231000230110311022101031201102003021031233233032222200322030102302010301301301230000103020022120112223010000233232233033021231203302100220021121330233021213232130333201113110332310022330102000123303232330111233121120312231102322301312301332233031033122121211120011333020012121231301003200330122103123210110321232122203313130300233230130121031002022112202203223013003110221303320322331031232220302011113201313232122213103013222122110023321321220012032022203000103110010021223311300333231322100133211301013230310213130312131100313101120233012133112231131213101321212212020323101113212101303013111332322120203011300000333112101120312320132222103011113023123103012232231132332012302020331010231300122310123201302113011230232101003120120313210033023212302321130133002331131111210301102212011330222120231233020101201321121330003103112333030203010232231332303312323322311132303322320110010121330132011212221213030302210230300300011202213303210202321102312202310330030030203212210111010123120010210202033220330321311233111102312230223012220100002210111212233222213320013321112332123130230213210230300000330222003000101111220202121023022032133021133020033013000223023111212101333130121300222223110311202032311123113320321110320021112123221210122020030010021011033210002222203132122111221103033313333103023210330321030211023120003002011113120313221020213012022', '3808937095.590715119594237', 4); + T('54653.68070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358304', '36255.76650', 9); + T('11010010101101010001100111001000.0000100001111101011001101100101010010010111001010010000010110101100011111100011011111010100001111111110100010010010011101010010101110011100001010011100110100010010110000101010000100000101110110000001000100000110011010101001100011101110110101000000011001010000100001111011000001000010000011001010001101111111110100101010010100001101000101001010000111011111001011101000011011101101000110000110101000011001100101001001001000011100000101100000110011000101011111001010101010111011010101110110011100011011100101000110011000010011111011000110111101011110011000100010001011000111010011011001101101010010011111001000100110010100100000111001011010000001000100111000111100001010101101100011001000100100010000111110001001101111011001010100100111100100111000010110101001011011101001000110000100000000010101111101111011011101101111000111100101000100100011011001010110101001011101001101000110101011000001111111001001111001000001011011100111110001100100101111101100011001101111101011111110011110101010011101011100010100011010001000100001111101011111101001110110010110111010111100010000000111111010010001101010010000010001110111101010100000010101011101011111001001001111110010000100110000011011110101011111110110010111101101101011111101001011001010001010110100111000000000011100111000100010011100011111011011001001100110001111111000010111001000110011011011010111010001101000110011011100000111110101100100100100101011110111101100101001010011100100110111010111010100001111110100111010010001010100001101110110101011001011001101111000111111000101100001001101000011011111001000000101001000111110101010110100100010011100100100000100110011011110001100001011011111110100001110010000000001000101001100101100110011101101100011011100111010010100000011110010010111010000101000010001000011011111101100101011000100001101101101110011001010010001010010000100111101001010010100000100010010100011111100100011100011111101000100100101110110001110011110100101101011001010110110001001111111110111011100011100011100101111000110111000010001110111111011110010001111001101101100001001110000010011101110100010001111010011101110001010010000101111101001110001110111111000001110100110100001001011001111010001100010111001100010101101111101111010010010000011001000101111101000101000001101011101001100110101101000011101001010111000000011011010110010110100000110011001001110001011001001110001001000100111000011010000101000101011001101010000111001111011011010000110110010111010011011110011011010111001101001101110100010111000110100110111001110110110000111100101100000100100111110111110111011001101101010000100010010010100011011011011011110111010000111010101001000001011011100011111010111110100011111101100110101000111010110110000111001011011101101100100011010101110011001001011001100110100111010111100000011000100011111011010110101111011100001010101001000011100011001111011110111010010100000001011000001000011110100011110001011000100000011111110000000101000011011100001000000010011101011110100101110100101100010101100000011110011001101010101000101111100011011000000001100110110011100011011110101011101111111001010011101110001000010101010001010010101110101111000001111101100110110100000100001001010000110110111000001000011111010101011001010000110001001000001001101001011000101001000111101111010010110110111001001100110101100100001101100110101100010010111110101010111011001011100110100111100011010100101111010001111100001101111101101100000010111010101010010011101110100111001101000010100010010010000111011001101001100010101110100001101010110011111110101100001001100111101110101110111011010011011001000010000010010101111110100000010111010110100101011010111000111011001010010111110100000000100101110111101100110101011000110001101101000010100010000011111111101110111100010000000111110001001110011101010101010000011110011100001100110111001110001010011100000101100011111110111100101001110110010000110101011100110111010011100011110000010110111110111101100110011101011111001100100101011111010001001110110000101011010101100000100010000011000111010001101010011100110111011100111001110010001000010100100100000000111000100001011010000011010000001101101000000011011111011000101110100101101101000000110001100010000101100001000000110000100110000010100001100000110000000110000000100001000000110010001010111010110100111110000101100111001100111000111010010110010100111010100100111100000010010011101000101010101100000010011110110000001000011000001111111010001001000001101111011000110101000011010101000100001000000100000001011101111110111001000011001110100101011001010010110000101110100010111011111001110101111011010011101000010000110110101100101100101101100011101100100011001110100110010010110110101110010110001001010000110111100010100100001100001011010001011000000001010100011000010001011110010000001111001011010111110110110001111011110000110101111111010110101011011001101000100111010111111110010010001101110111010100100110011110110111000100001111101010011010100000001001111011110111011001011110100001001010111011111000000110010111110000110111011101001111010000111011011000010010110110110011110101110010100100001100100101000000011100000001000001110100110110010111110111101110010000111101000101111011100011101001100110101001101000010111110000010101000111111000001110000010011010001110101011000111101101100001010100000000111110010000011000100110001101101001011001100111001000110110111011101110001101101001111100000010111010111100101100101001011110010100000001100000010001111101010111100011110001100110110000011001101010111011110000100101110100100000100111001001101011000010010110100001000100110101111101111001010001011100100010101011000010011111111110100101000101000100000011110010101000010001100110010001010101011000100011011111011010100111010111101111111010111000110101100111111001001100011010111000101110000111100101010011100000111100010010100000000100010001111110000001000011011000010110010001110111101111101101110110000101101010101110110110101110011010110101001001010000010000011001101010111011110011010001110011101010110010111111110000011000010010101101001001011101100000110000111000100101110111110100100100000011000101100100111011111011110001110101010101001010010010010110011111110011011110111001110110010011010101001000011111011010000010000110001010101110100101001101110111010100001001011110101100100110110011100010001101101001001100000000111100001001000101000011001000011111000111100101101010001110010111011011100100011110110111011000001111110100001111010001100111111100010111010000010010101100001110001100011001000110010100100011011110010111010011100010011010000001010010101010000101011101111110110100010010000010100001100101101101110111010110011110010101010111100001101001110111111110110100011110111000100101100111001000001110101001011011010100101001111011110000111110111110011100110110011001111100100100000111010110001000010111101110100011011110010111000010111101100000000111100000000001101101111011110001110001001110010100010011111100100001110101110010001111011111010101011101111010000011000100101100110000100001111101101011001010000110111010010011001111011000010101111011101001011010001101100010001100111110111111101000110000010001001001111110110101010011011100100111100101101011101111010101010001000001101010000110101000100100011011000100011111000001000000000001100001011100011110110110000000100110111000010101011101101110010000110100110111001001010010100100100100000101010000100000010110000001100010111100110010100010010000010100101100011111011000111111100011001000001100001110100100101001111111000010111001101011010100100010010011011000100100010011101011111110000111000101000110011100011001001100000110001101011101111100110101001110010110110100111111001111011001010001101101011000011011110111010101110000010111011010001010110001010001001111101101011111101100101101001000101100111000001010011111110110111011101110010100101110110111110110110111101100111000001000100101111110001110000000011101011011001010110110111000010101000010110011011111111011010001000010010010111011101101101010010010100101111110101000010111100001111111010001000101111100110011100000001', '3535083976.0331634754719698597483934067029600647308860151850713734', 2); + + */ + + BigNumber.config({DECIMAL_PLACES : 20}); + + assertException(function () {new BigNumber('2').toString(0)}, "('2').toString(0)"); + assertException(function () {new BigNumber('2').toString(1)}, "('2').toString(1)"); + assertException(function () {new BigNumber('1').toString('-2')}, "('1').toString('-2')"); + assertException(function () {new BigNumber('1').toString('1.9')}, "('1').toString('1.9')"); + assertException(function () {new BigNumber('1.23').toString(36.01)}, "('1.23').toString(36.01)"); + assertException(function () {new BigNumber('1.23').toString(37)}, "('1.23').toString(37)"); + + assertException(function () {new BigNumber('1.23').toString(NaN)}, "('1.23').toString(NaN)"); + assertException(function () {new BigNumber('1.23').toString('NaN')}, "('1.23').toString('NaN')"); + assertException(function () {new BigNumber('1.23').toString([])}, "('1.23').toString([])"); + assertException(function () {new BigNumber('1.23').toString({})}, "('1.23').toString({})"); + assertException(function () {new BigNumber('1.23').toString('')}, "('1.23').toString('')"); + assertException(function () {new BigNumber('1.23').toString(' ')}, "('1.23').toString(' ')"); + assertException(function () {new BigNumber('1.23').toString('hello')}, "('1.23').toString('hello')"); + assertException(function () {new BigNumber('1.23').toString('\t')}, "('1.23').toString('\t')"); + assertException(function () {new BigNumber('1.23').toString(new Date)}, "('1.23').toString(new Date)"); + assertException(function () {new BigNumber('1.23').toString(new RegExp)}, "('1.23').toString(new RegExp)"); + assertException(function () {new BigNumber('1.23').toString(2.01)}, "('1.23').toString(2.01)"); + assertException(function () {new BigNumber('1.23').toString(10.5)}, "('1.23').toString(10.5)"); + assertException(function () {new BigNumber('1.23').toString(true)}, "('1.23').toString(true)"); + assertException(function () {new BigNumber('1.23').toString(false)}, "('1.23').toString(false)"); + assertException(function () {new BigNumber('1.23').toString(function (){})}, "('1.23').toString(function (){})"); + + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, undefined); + T('12.345', 12.345, '1e1'); + T('Infinity', 'Infinity', 2); + T('Infinity', 'Infinity', 10); + T('-Infinity', '-Infinity', 2); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + BigNumber.config({ERRORS : false}); + + T('2', '2', 0); + T('2', '2', 1); + T('2', '2', '-2'); + T('2', '2', 1.9); + T('1.23', '1.23', 36.01); + T('1.23', '1.23', 37); + + T('NaN', 'NaN', 'NaN'); + T('NaN', 'NaN', undefined); + T('NaN', 'NaN', null); + T('NaN', NaN, 2); + T('NaN', '-NaN', 2); + T('NaN', -NaN, 10); + T('NaN', 'NaN', 10); + T('12.345', 12.345, new BigNumber(10)); + T('12.345', 12.345, null); + T('12.345', 12.345, undefined); + T('12.345', 12.345, NaN); + T('12.345', 12.345, 'NaN'); + T('12.345', 12.345, []); + T('12.345', 12.345, {}); + T('12.345', 12.345, ''); + T('12.345', 12.345, ' '); + T('12.345', 12.345, 'hello'); + T('12.345', 12.345, '\t'); + T('12.345', 12.345, new Date); + T('12.345', 12.345, new RegExp); + T('101', 5, 2.02); + T('12.345', 12.345, 10.5); + T('12.345', 12.345, '1e1'); + T('Infinity', 'Infinity', 2); + T('Infinity', Infinity, 10); + T('-Infinity', -Infinity, 36); + T('-Infinity', '-Infinity', 10); + T('101725686101180', '101725686101180', undefined); + T('101725686101180', '101725686101180', 10); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html new file mode 100644 index 0000000..4820356 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html @@ -0,0 +1,306 @@ + + + + + + Testing BigNumber against Number + + + + +
      +

      Testing BigNumber against Number

      +
        +
      • + + + [ decimal places ] +
      • +
      • + + + [ decimal places ] +
      • +
      • + + + [ significant digits ] +
      • +
      • + + + [ decimal places [ , rounding mode ] ] +
      • +
      • + + + [ maximum denominator ] +
      • +
      • + + +
      • +
      +
        +
      • + + + Rounds away from zero +
      • +
      • + + + Rounds towards zero +
      • +
      • + + + Rounds towards +Infinity +
      • +
      • + + + Rounds towards -Infinity +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds up +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds down +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds towards even neighbour +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds towards +Infinity +
      • +
      • + + + Rounds towards nearest neighbour. If equidistant, rounds towards -Infinity +
      • +
      + +
      +
      + + +
                   BigNumber ERRORS:
      + + + + +
      + + +
      + +
      + + +
      + + +
      +
      +
      +
      + + + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html new file mode 100644 index 0000000..a2b5edb --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html @@ -0,0 +1,477 @@ + + + + + BigNumber Errors + + + + + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html new file mode 100644 index 0000000..4f53d70 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html @@ -0,0 +1,74 @@ + + + + + Testing bignumber.js + + + + + + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html new file mode 100644 index 0000000..3b21f69 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html @@ -0,0 +1,12 @@ + + + + + Testing bignumber.js + + + + + + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html new file mode 100644 index 0000000..23d180c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html @@ -0,0 +1,33 @@ + + + + + Testing bignumber.js + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js new file mode 100644 index 0000000..8ecbeb7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js @@ -0,0 +1,208 @@ +var count = (function ceil(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value) { + assert(String(expected), new BigNumber(String(value)).ceil().toString()); + } + + log('\n Testing ceil...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T('-2075364', '-2075364.364286541923'); + T('60593539780450631', '60593539780450631'); + T('65937898671515', '65937898671515'); + T('-39719494751819198566798', '-39719494751819198566798.578'); + T('92627382695288166557', '92627382695288166556.8683774524284866028260448205069'); + T('-881574', '-881574'); + T('-3633239209', '-3633239209.654526163275621746013315304191073405508491056'); + T('-23970335459820625362', '-23970335459820625362'); + T('131869457416154038', '131869457416154038'); + T('-2685', '-2685'); + T('-4542227860', '-4542227860.9511298545226'); + T('2416872282', '2416872281.963955669484225137349193306323379254936827'); + T('-757684868752087594264588207655', '-757684868752087594264588207655.27838048392835556'); + T('-438798503526', '-438798503526.2317623894721299587561697'); + T('801625782231888715214665', '801625782231888715214665'); + T('-91881984778675238', '-91881984778675238'); + T('327765350218284325239839632047', '327765350218284325239839632046.91682741746683081459605386'); + T('-7469045007691432294', '-7469045007691432294.362757245'); + T('8365540212937142194319515218790', '8365540212937142194319515218789.4106658678537421977827'); + T('-14108', '-14108.495051214515'); + T('49104502', '49104501.10055989379655329194309526150310568683504206945625'); + T('131370407', '131370406.330005158136313262837556068534122953'); + T('3017', '3017'); + T('-689', '-689.6944252229740521128820354989299283'); + T('73441822179', '73441822178.572653'); + T('-2329', '-2329.42655772223486531483602927572548264457'); + T('-834103872107533086', '-834103872107533086'); + T('-1501493189970435', '-1501493189970435.74866616700317'); + T('70592', '70591.2244675522123484658978887'); + T('4446128540401735118', '4446128540401735117.435836700611264749985822486641350492901'); + T('-597273', '-597273'); + T('729117', '729117'); + T('504', '504'); + T('4803729546823170064608098091', '4803729546823170064608098091'); + T('24147026285420507467578', '24147026285420507467578'); + T('-6581532150677269472829', '-6581532150677269472829.38194951340848938896000325718062365494'); + T('-131279182164804751', '-131279182164804751.430589952021038264'); + T('2949426983040960', '2949426983040959.8911208825380208568451907'); + T('25167', '25166.125888418871654557352055849116604612621573251770362'); + T('4560569286496', '4560569286495.98300685103599898554605198'); + T('14', '13.763105480576616251068323541559825687'); + T('176037174185746614410406167888', '176037174185746614410406167887.42317518'); + T('9050999219307', '9050999219306.7846946346757664893036971777'); + T('39900924', '39900924'); + T('115911043168452445', '115911043168452445'); + T('20962819101135667464733349384', '20962819101135667464733349383.8959025798517496777183'); + T('4125789711001606948192', '4125789711001606948191.4707575965791242737346836'); + T('-6935501', '-6935501.294727166142750626019282'); + T('-1', '-1.518418076611593764852321765899'); + T('-35416', '-35416'); + T('6912783515683955988122411164549', '6912783515683955988122411164548.393'); + T('658', '657.0353902852'); + T('1', '0.0009'); + T('1', '0.00000000000000000000000017921822306362413915'); + T('1483059355427939255846407888', '1483059355427939255846407887.011361095342689876'); + T('7722', '7722'); + T('1', '0.00000005'); + T('8551283060956479353', '8551283060956479352.5707396'); + T('1', '0.000000000000000000000000019904267'); + T('321978830777554620127500540', '321978830777554620127500539.339278568133088682532238002577'); + T('2074', '2073.532654804291079327244387978249477171032485250998396'); + T('677676305592', '677676305591.2'); + T('1', '0.0000000000006'); + T('39181479479778357', '39181479479778357'); + T('1', '0.00000000000000000087964700066672916651'); + T('896', '896'); + T('115083055948552475', '115083055948552475'); + T('9105942082143427451223', '9105942082143427451223'); + T('1', '0.0000000000000009'); + T('1', '0.00000000000000000000004'); + T('1', '0.000250427721966583680168028884692015623739'); + T('1', '0.000000000001585613219016120158734661293405081934'); + T('1', '0.00009'); + T('1', '0.000000090358252973411013592234'); + T('276312604693909858428', '276312604693909858427.21965306055697011390137926559'); + T('1', '0.0000252'); + + T(2, new BigNumber('1.000000000000000000000000000000000000001').ceil(NaN)); + + // ---------------------------------------------------------------- v8 start + + T(0, 0); + T(0, '0.000'); + T(0, -0); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + T(NaN, NaN); + T(NaN, 'NaN'); + + T(1, 0.1); + T(1, 0.49999999999999994); + T(1, 0.5); + T(1, 0.7); + T(0, -0.1); + T(0, -0.49999999999999994); + T(0, -0.5); + T(0, -0.7); + T(1, 1); + T(2, 1.1); + T(2, 1.5); + T(2, 1.7); + T(-1, -1); + T(-1, -1.1); + T(-1, -1.5); + T(-1, -1.7); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(0, -1e-308); + T(-1e308, -1e308); + T('2.1e+308', '2.1e308'); + T(0, '-1e-999'); + T(1, '1e-999'); + + T(1, Number.MIN_VALUE); + T(0, -Number.MIN_VALUE); + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(-Number.MAX_VALUE, -Number.MAX_VALUE); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + + var two_30 = 1 << 30; + + T(two_30, two_30); + T(two_30 + 1, two_30 + 0.1); + T(two_30 + 1, two_30 + 0.5); + T(two_30 + 1, two_30 + 0.7); + + T(two_30 - 1, two_30 - 1); + T(two_30, two_30 - 1 + 0.1); + T(two_30, two_30 - 1 + 0.5); + T(two_30, two_30 - 1 + 0.7); + + T(-two_30, -two_30); + T(-two_30 + 1, -two_30 + 0.1); + T(-two_30 + 1, -two_30 + 0.5); + T(-two_30 + 1, -two_30 + 0.7); + + T(-two_30 + 1, -two_30 + 1); + T(-two_30 + 2, -two_30 + 1 + 0.1); + T(-two_30 + 2, -two_30 + 1 + 0.5); + T(-two_30 + 2, -two_30 + 1 + 0.7); + + var two_52 = (1 << 30) * (1 << 22); + + T(two_52, two_52); + T(two_52 + 1, '4503599627370496.1'); + T(two_52 + 1, '4503599627370496.5'); + T(two_52 + 1, '4503599627370496.7'); + + T(-two_52, -two_52); + T(-two_52 + 1, '-4503599627370495.1'); + T(-two_52 + 1, '-4503599627370495.5'); + T(-two_52 + 1, '-4503599627370495.7'); + + // ------------------------------------------------------------------ v8 end + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js new file mode 100644 index 0000000..fc6667d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js @@ -0,0 +1,4127 @@ +var count = (function cmp(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(a, b, expected) { + assert(String(expected), String(new BigNumber(a).cmp(b))); + assert(String(expected), String(new BigNumber(a).cmp(new BigNumber(b)))); + } + + function isMinusZeroJS(n) { + return n === 0 ? 1 / n === -Infinity : null + } + + log('\n Testing cmp...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T(1, 0, 1); + T(1, -0, 1); + T(-1, 0, -1); + T(-1, -0, -1); + T(1, N, n); + T(-1, N, n); + T(1, I, -1); + T(1, -I, 1); + T(-1, I, -1); + T(-1, -I, 1); + T(0, 1, -1); + T(0, -1, 1); + T(-0, 1, -1); + T(-0, -1, 1); + assert(false, isMinusZeroJS(new BigNumber(0).cmp(0))); + assert(false, isMinusZeroJS(new BigNumber(0).cmp(-0))); + assert(false, isMinusZeroJS(new BigNumber(-0).cmp(0))); + assert(false, isMinusZeroJS(new BigNumber(-0).cmp(-0))); + T(0, N, n); + T(-0, N, n); + T(0, I, -1); + T(0, -I, 1); + T(-0, I, -1); + T(-0, -I, 1); + T(N, 1, n); + T(N, -1, n); + T(N, 0, n); + T(N, -0, n); + T(N, N, n); + T(N, I, n); + T(N, -I, n); + T(I, 1, 1); + T(I, -1, 1); + T(-I, 1, -1); + T(-I, -1, -1); + T(I, 0, 1); + T(I, -0, 1); + T(-I, 0, -1); + T(-I, -0, -1); + T(I, N, n); + T(-I, N, n); + assert(false, isMinusZeroJS(new BigNumber(I).cmp(I))); + T(I, -I, 1); + T(-I, I, -1); + assert(false, isMinusZeroJS(new BigNumber(-I).cmp(-I))); + + T(0, '0.1', '-1'); + T(0, '-0.1', '1'); + T(-0, '0.1', '-1'); + T(-0, '-0.1', '1'); + T('0.1', 0, '1'); + T('0.1', -0, '1'); + T('-0.1', 0, '-1'); + T('-0.1', -0, '-1'); + T(0, '0.000000009', '-1'); + T(0, '-0.000000009', '1'); + T(-0, '0.000000009', '-1'); + T(-0, '-0.000000009', '1'); + T('0.000000009', 0, '1'); + T('0.000000009', -0, '1'); + T('-0.000000009', 0, '-1'); + T('-0.000000009', -0, '-1'); + T(0, '5.5', '-1'); + T(0, '-5.5', '1'); + T(-0, '5.5', '-1'); + T(-0, '-5.5', '1'); + T('5.5', 0, '1'); + T('5.5', -0, '1'); + T('-5.5', 0, '-1'); + T('-5.5', -0, '-1'); + + T(1, '0', '1'); + T(1, '1', '0'); + T(1, '-45', '1'); + T(1, '22', '-1'); + T(1, 0144, '-1'); + T(1, '0144', '-1'); + T(1, '6.1915', '-1'); + T(1, '-1.02', '1'); + T(1, '0.09', '1'); + T(1, '-0.0001', '1'); + T(1, '8e5', '-1'); + T(1, '9E12', '-1'); + T(1, '1e-14', '1'); + T(1, '3.345E-9', '1'); + T(1, '-345.43e+4', '1'); + T(1, '-94.12E+0', '1'); + T(1, '', n); + T(1, ' ', n); + T(1, '\t\t', n); + T(1, 'ertgrt546', n); + T(1, 'qweqwdewee', n); + T(1, true, n); + T(1, false, n); + T(1, 'e 4.3', n); + T(1, '4 .3', n); + T(1, '4.0 01e', n); + T(1, ' 4.001', '-1'); + T(1, '4.001 ', '-1'); + T(1, ' 4.001 ', '-1'); + T(1, ' 4.001', '-1'); + T(1, ' 4.0 01', n); + T(1, '4. 001', n); + T(1, '4. 001 ', n); + T(1, ' 4.001e ', n); + T(1, ' 4 .001 e ', n); + T(1, undefined, n); + T(1, null, n); + T(1, Number.POSITIVE_INFINITY, '-1'); + T(1, Number.NEGATIVE_INFINITY, '1'); + T(1, new Date(2012, 11, 4), n); + T(1, new Object(), n); + T(1, function () {}, n); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '1'); + T(9.654, 0, '1'); + T(0, '111.1111111110000', '-1'); + T(N, '0', n); + T(-1, 1, '-1'); + T(-0.01, 0.01, '-1'); + T(54, -54, '1'); + T(9.99, '-9.99', '1'); + T('0.0000023432495704937', '-0.0000023432495704937', '1'); + T(NaN, NaN, n); + T(NaN, N, n); + T(N, NaN, n); + T(N, 4, n); + T(N, '4534534.45435435', n); + T(N, 99999.999, n); + T(Infinity, '354.345341', '1'); + T(3, -I, '1'); + T(-Infinity, -I, '0'); + T(-I, -Infinity, '0'); + T(I, '-999e999', '1'); + T(1.21123e43, -I, '1'); + T('-999.0', I, '-1'); + T('657.342e-45', -I, '1'); + T(I, 123, '1'); + T(-0, I, '-1'); + T(100, 100, '0'); + T(-999.99, '0.01', '-1'); + T('10 ', 4, '1'); + T('03.333', -4, '1'); + T(-1, -0.1, '-1'); + T(43534.5435, '0.054645', '1'); + T('99999', '1', '1'); + T('3e', 8, n); + T('-3..0', 13, n); + T('0 0', -0.4, n); + T(' +3e0', 4, '-1'); + T(9.9806, '+ 1', n); + T(' +2 0', '1e1', n); + T('e3', 4, n); + T(' ', 0, n); + T(323, null, n); + T(undefined, undefined, n); + T('undefined', undefined, n); + T(null, null, n); + + T(0.04, 0.079393068, -1); + T(0.023, 0.04840192819, -1); + T(0.021879, 0.02, 1); + + T('0', '-7502', 1); + T('-1', '-0.000000000000000000295176', -1); + T('2.9', '3.23360', -1); + T('1.14', '4289', -1); + T('-3', '0', -1); + T('0.00000000000000551', '-3958.43', 1); + T('-13', '0', -1); + T('-23.382', '-16.1', -1); + T('-176.85', '0', -1); + T('1.38497', '-0.0000000561', 1); + T('3.90', '18.124', -1); + T('-239.52', '-0.00000000000066862', -1); + T('5.7', '2248.28', -1); + T('-0.00000000012', '0', -1); + T('29', '-5', 1); + T('0', '-54', 1); + T('3', '-1.1', 1); + T('-461.9', '-13803', 1); + T('-1', '0.00054428', -1); + T('-0.000000000000000683', '7', -1); + T('2', '1', 1); + T('118.608', '-4.8', 1); + T('3', '0', 1); + T('83.5', '44.9', 1); + T('-3', '-2.86', -1); + T('1138.06', '47.08', 1); + T('-2.3', '3', -1); + T('-848', '0', -1); + T('5', '2', 1); + T('11.3', '-176.3', 1); + T('-302142', '3.8', -1); + T('-9', '-38', 1); + T('0', '-1', 1); + T('6161', '-3', 1); + T('8', '0', 1); + T('-1334', '-14', -1); + T('3.593', '0.000000000000059975', 1); + T('0.0000000000000000847', '-1186.11', 1); + T('4.62', '14.47', -1); + T('0', '-319', 1); + T('23168', '8.3485', 1); + T('-16', '-1.6', -1); + T('64.3', '2108.4', -1); + T('4', '-1', 1); + T('-0.50346', '-319.6', 1); + T('10910.0', '-0.00000000000000000314208', 1); + T('1', '0', 1); + T('-0.0000000000000552', '0.00000000015', -1); + T('0', '16', -1); + T('38.4', '35.83', 1); + T('-1.1', '-0.000002850', -1); + T('0.000000000000011', '1.2', -1); + T('-50.66', '2.2', -1); + T('-1187', '5', -1); + T('174', '-1.8175', 1); + T('651.1', '-11.332', 1); + T('-1', '-0.000000000000000011', -1); + T('7156', '4.84', 1); + T('1', '3', -1); + T('0', '77487', -1); + T('51.7181', '17', 1); + T('13.132', '0.000000000000029446', 1); + T('5.4', '0.000000000000000006325', 1); + T('4.1', '-2.42', 1); + T('-5.2', '-44.1', 1); + T('-6', '15.018', -1); + T('-27.949', '-1170.9', 1); + T('0', '0.0000000000000000120', -1); + T('-3.7', '-52.1', 1); + T('-17.43', '0', -1); + T('-1.4', '-11737', 1); + T('-7.17', '615.40', -1); + T('-1', '-0.000000000000000389', -1); + T('0', '-11.7', 1); + T('0', '-0.0000039894', 1); + T('-14.15', '-0.0000011139', -1); + T('-16260', '-3.97', -1); + T('-0.00000066', '-1.3', 1); + T('-818', '0', -1); + T('-3', '-30020.5', 1); + T('-3.328', '-28.16', 1); + T('-74', '2', -1); + T('-30332', '-1.61', -1); + T('-0.00000000000000494', '0', -1); + T('-2.1', '11.6037', -1); + T('-0.0000000000000013762', '-5273', 1); + T('-0.00000000000000000002353', '1188', -1); + T('-0.00000000000000033619', '-4', 1); + T('3.2', '-597.81', 1); + T('14265', '0', 1); + T('-18.8703', '1', -1); + T('-4.5', '-146.5', 1); + T('-259.7', '0', -1); + T('-72.57', '4.3', -1); + T('0.0000015', '9.06', -1); + T('490815', '0.0000000000000000000385', 1); + T('0.614', '-0.000000000000000001154', 1); + T('1.2', '0', 1); + T('-1.8', '-436269', 1); + T('0', '-7', 1); + T('-3.18290', '-453.85', 1); + T('5.645', '1', 1); + T('8.426', '1.0', 1); + T('-6702', '-0.000003053', -1); + T('0', '-0.0000000472', 1); + T('-13.789', '0.12167', -1); + T('0', '-22472', 1); + T('769.0', '0.00000019970', 1); + T('0', '-145.1', 1); + T('-307', '-1', -1); + T('1', '-0.000015', 1); + T('3', '-4', 1); + T('7', '3.791', 1); + T('-0.0000000000000021', '0.00000414', -1); + T('203.0', '-14124', 1); + T('-1', '8.4', -1); + T('-0.000301', '-3665.9', 1); + T('2212', '120841', -1); + T('-10.4', '1.90210', -1); + T('-4.709', '-3.2', -1); + T('-0.00000000000062', '-2.20513', 1); + T('3', '-41230', 1); + T('-0.00000000931', '-348.5', 1); + T('4.50', '0', 1); + T('0', '104894', -1); + T('0.00000072', '0', 1); + T('-1', '-73.214', 1); + T('9', '-1.898', 1); + T('1', '-1', 1); + T('0', '3.99', -1); + T('-2', '0.0486', -1); + T('-4', '-0.00268', -1); + T('0.0000000000791', '-4.97', 1); + T('-13795', '3', -1); + T('-13.197', '0', -1); + T('0', '-4.7', 1); + T('0', '0', 0); + T('3.7', '0', 1); + T('10.3925', '7.312', 1); + T('2.263', '7.388', -1); + T('-6.0', '-2', -1); + T('1', '-1', 1); + T('1.987', '32454', -1); + T('-0.361', '-200.6', 1); + T('5.0', '-7', 1); + T('-6.2', '-0.0056', -1); + T('-3.8', '1', -1); + T('-9.3', '-7.64', -1); + T('38364', '-127.311', 1); + T('-1.6', '-3.06', 1); + T('1', '-2', 1); + T('3.952', '5', -1); + T('566', '125.359', 1); + T('1078.97', '496', 1); + T('0.000000000097586', '-0.000000000000000000027457', 1); + T('-37.5', '-28572', 1); + T('412', '-0.0000000000000001572', 1); + T('0.00000024221', '-35.8881', 1); + T('25.8', '0.0000000000000000000242', 1); + T('0.30', '0', 1); + T('-26.440', '-3.64', -1); + T('1.15', '-3229', 1); + T('-137.1', '2', -1); + T('0.00000000077', '53558', -1); + T('0', '2.6', -1); + T('-3', '-6', 1); + T('-0.0000000000000000139', '-0.0005289', 1); + T('-0.00000000000000000697', '-1.309', 1); + T('-0.0000045', '-8.3', 1); + T('-2', '-1.3', -1); + T('-1.42209', '-1.74', 1); + T('-608.88', '25.3', -1); + T('0', '-1', 1); + T('5.6', '-4', 1); + T('7.17', '-4', 1); + T('56.6', '8218.4', -1); + T('68.33', '0', 1); + T('5.0', '1', 1); + T('32.734', '-9', 1); + T('0', '20837.0', -1); + T('-0.0000000000000000013950', '-3364.72', 1); + T('3.66', '-0.0000000000000000536', 1); + T('-1471.14', '6', -1); + T('0', '-0.0000013', 1); + T('1', '-5', 1); + T('-10449.8', '-58.424', -1); + T('0', '0.0000000000000000017122', -1); + T('0.000000000000026585', '4.1', -1); + T('-7', '0.00000000000000000920', -1); + T('0.00000000489', '0.00000000000000000036325', 1); + T('0', '104674', -1); + T('-1.30063', '0.000000004051', -1); + T('0', '2', -1); + T('-3', '0.00150', -1); + T('-407.95', '495.290', -1); + T('24533.8', '-2539', 1); + T('1', '0', 1); + T('-43.4', '0', -1); + T('-1399', '16.89', -1); + T('-232480', '0', -1); + T('3', '-1', 1); + T('6.2', '12.2', -1); + T('-23.38', '0.0853', -1); + T('-18.2', '1', -1); + T('0.002118', '-16.9821', 1); + T('8819.2', '28.744', 1); + T('-2', '-5', 1); + T('-2.10', '9.2620', -1); + T('0', '-5', 1); + T('23963.9', '0', 1); + T('-0.00000045', '0', -1); + T('2', '2', 0); + T('-3.444', '3', -1); + T('0.0000016140', '1.5132', -1); + T('0', '-1', 1); + T('-1', '-7', 1); + T('1', '-869.7', 1); + T('0.000000000000016', '-1609.8', 1); + T('651.3', '2.923', 1); + T('270.901', '5.2', 1); + T('0', '-2.6', 1); + T('0.000000000020617', '0.0000000096018', -1); + T('4.32', '-7', 1); + T('-1.5', '-23.7', 1); + T('1.2497', '-58.42', 1); + T('-6.4', '2.24', -1); + T('0', '1002.3', -1); + T('265.64', '26.7', 1); + T('387.4', '757.85', -1); + T('0', '6.525', -1); + T('1120.24', '-0.000000000000000000232098', 1); + T('67.22', '0', 1); + T('67', '-3.1', 1); + T('0', '0', 0); + T('-1.01', '0.00059917', -1); + T('-0.000000000000091884', '2.7', -1); + T('171', '4', 1); + T('0', '-367347', 1); + T('95.1', '-0.000000114267', 1); + T('0', '0', 0); + T('62.4', '-5', 1); + T('11627.8', '9.844', 1); + T('-1', '2.33', -1); + T('-14', '0', -1); + T('-55', '7', -1); + T('-22.460', '872.15', -1); + T('-0.00000000027029', '2.05', -1); + T('-0.0000000000000004846', '17.73', -1); + T('3.6', '0', 1); + T('-3.233', '0', -1); + T('-3.878', '-383', 1); + T('-0.0000000000174', '20.7', -1); + T('0.0000000000000000000126', '-2.229', 1); + T('-2.307', '14.8000', -1); + T('-563.79', '0.000000000000000069934', -1); + T('-315.71', '-0.00832', -1); + T('7', '0', 1); + T('188.9', '-2.883', 1); + T('0', '14.5720', -1); + T('2', '5389.3', -1); + T('-2413.1', '-28', -1); + T('0', '0', 0); + T('0', '-98.587', 1); + T('3', '0', 1); + T('17930.7', '1880.31', 1); + T('-1', '-0.00000000000000000272', -1); + T('0.00000000000000000002288', '51.0841', -1); + T('-1.004', '-14799', 1); + T('-0.0024973', '-6', 1); + T('-0.00000000000054', '6', -1); + T('0.0009288', '-5.2', 1); + T('-45.4', '-0.000042102', -1); + T('-56.1', '1793.86', -1); + T('-68.425', '0.0000000000000068415', -1); + T('-2.20', '0', -1); + T('136.51', '0', 1); + T('-5.9773', '45', -1); + T('-6996', '60.60', -1); + T('0.00000000773', '-2.6', 1); + T('-3827', '-42.150', -1); + T('-4', '3277', -1); + T('0.0000000000000201', '-0.00000000000000094', 1); + T('7497.2', '-45738', 1); + T('5.20', '2', 1); + T('139673', '0.000013', 1); + T('258285', '0.00000000000338', 1); + T('20.6', '0', 1); + T('5', '45.3', -1); + T('0', '0.00000000000000000010937', -1); + T('2', '-392.465', 1); + T('0', '5.7', -1); + T('-4.3', '-128.0', 1); + T('-9.94', '10.6', -1); + T('10.524', '-4.1', 1); + T('4.3713', '-5.6', 1); + T('-4.1', '6.2', -1); + T('-95', '-0.0000000000000000000622', -1); + T('-2113', '1253.8', -1); + T('406.95', '-2548', 1); + T('978', '771', 1); + T('-4776.4', '-911.1', -1); + T('1.039', '0', 1); + T('-4', '0', -1); + T('-1.06798', '0', -1); + T('-5.2', '-1.0827', -1); + T('1', '2', -1); + T('0.5638', '0.0000000000000000000866', 1); + T('7.3', '-9.5', 1); + T('-2', '61406', -1); + T('1.4', '6.60', -1); + T('-3', '-1.4', -1); + T('0', '9.825', -1); + T('-0.000000000335941', '2912.92', -1); + T('-557.81', '-64.4', -1); + T('3', '0.000013480', 1); + T('-25.4', '-163.15', 1); + T('-151.0', '7', -1); + T('-219.2', '272', -1); + T('0', '-0.00000000000000000020763', 1); + T('-1363.0', '294.3', -1); + T('0.00000000000000000003537', '-3.62', 1); + T('-0.00000017', '436.44', -1); + T('1.6079', '-9.56', 1); + T('76.1', '0.000067', 1); + T('-1.68', '0.0000024', -1); + T('0.0000000000000031', '-2.9629', 1); + T('-1603', '228.1', -1); + T('-51.66', '2.6', -1); + T('0.0000000000000208093', '1', -1); + T('-11215', '23.963', -1); + T('29.34', '-39.5', 1); + T('7', '0.00000000000000718', 1); + T('-44.309', '4', -1); + T('-11871.9', '-6.11', -1); + T('8', '-5.3', 1); + T('-1', '-0.0002202', -1); + T('3416.2', '0', 1); + T('-245.2', '-1.15', -1); + T('-1.70169', '-4.73', 1); + T('0', '1.1', -1); + T('7715.4', '468500', -1); + T('-0.00044', '2', -1); + T('-1.8', '1.1', -1); + T('-13.575', '-2.58', -1); + T('-6', '-0.000000000000000044077', -1); + T('35.2', '2', 1); + T('0', '-5.43', 1); + T('-2', '-629.9', 1); + T('260.5', '-2394.9', 1); + T('-110.50', '0', -1); + T('-97.17', '2.6', -1); + T('4.0764', '-71.47', 1); + T('-0.000000000000016', '0.000000000000000000785', -1); + T('1.5348', '0.018', 1); + T('-2.2', '5229.1', -1); + T('0.000000129738', '60', -1); + T('14550.4', '-5092.49', 1); + T('-134380', '3.51', -1); + T('1.390', '1', 1); + T('-0.000000044', '17.1', -1); + T('34.398', '1', 1); + T('-177.5', '0', -1); + T('-5.3', '3.326', -1); + T('-1.75', '-1938.43', 1); + T('1', '-32.9851', 1); + T('0.01082', '0.0000000000000000001008', 1); + T('197.469', '-143177', 1); + T('-61.5', '-11.6803', -1); + T('7', '0', 1); + T('43.44', '3', 1); + T('-6.8', '-0.0000000000000000015', -1); + T('0.0000005371', '0.000000000002723', 1); + T('943', '49.02', 1); + T('1', '-45.09', 1); + T('0', '-55.76', 1); + T('-760.2', '0.000000103078', -1); + T('1', '-1861', 1); + T('-2531.7', '-185.95', -1); + T('1.2', '0', 1); + T('6.4', '3', 1); + T('0', '9', -1); + T('-122', '43.423', -1); + T('-3.91', '1', -1); + T('1.4', '-1', 1); + T('-8.51', '-3', -1); + T('360.56', '56.278', 1); + T('0', '0', 0); + T('-2', '-0.000000000000007301', -1); + T('-1.4', '6', -1); + T('479.1', '-838', 1); + T('-32.6', '3.8', -1); + T('-0.0086188', '-4.6', 1); + T('-8.2', '-0.0000414', -1); + T('-5', '-0.1236', -1); + T('-107', '-0.000000000000220', -1); + T('-0.000000000000168', '-0.000000000000000089', -1); + T('2', '1', 1); + T('-0.0000000050600', '7', -1); + T('1959.3', '5.1', 1); + T('0.00008180', '16.364', -1); + T('0', '1392.91', -1); + T('-4.6', '1', -1); + T('30.4', '-0.000000000000007179', 1); + T('6.0', '8.90', -1); + T('5', '0', 1); + T('9', '9.05', -1); + T('-0.00000029', '4846', -1); + T('72', '-0.00000001422', 1); + T('1.1613', '7', -1); + T('-0.000000000000000409872', '35.6', -1); + T('0.00000000000444', '-101.737', 1); + T('0', '-2', 1); + T('2.0', '1', 1); + T('-1050', '-0.000000000323', -1); + T('0', '20.06', -1); + T('7.774', '-6.5', 1); + T('71.84', '-6', 1); + T('0.003160', '-1.42658', 1); + T('0', '599.4', -1); + T('-8.9', '127.37', -1); + T('-5', '-16.295', 1); + T('2.76521', '1.28', 1); + T('-31601', '-1', -1); + T('0', '1.69958', -1); + T('76.4', '-0.00000000000000000011', 1); + T('-228.0', '0', -1); + T('4.39', '0.000015545', 1); + T('0.391', '-164.55', 1); + T('4.93', '41.50', -1); + T('572.3', '431.86', 1); + T('-1.21162', '-143876', 1); + T('-0.0000000000002463', '-2', 1); + T('-5', '84.4', -1); + T('-1.3', '-5.06492', 1); + T('-0.0000000000002969', '-1', 1); + T('479.758', '0', 1); + T('39.80', '0.003823', 1); + T('1', '3', -1); + T('0.000000000000670', '0', 1); + T('-16', '-10963', 1); + T('3', '-102.5', 1); + T('-0.0000000000000000033174', '15.945', -1); + T('18.14', '-1829.06', 1); + T('10038', '0', 1); + T('0', '-0.000000000000000000125', 1); + T('353', '0.00000000000000017781', 1); + T('-4.43154', '1165.4', -1); + T('-501.963', '-83511', 1); + T('0', '-7.0', 1); + T('58578', '0.00000000000000000027', 1); + T('135.2', '1', 1); + T('-6.3', '10988', -1); + T('2.6', '6.3', -1); + T('-74', '67.08', -1); + T('1', '-2.59572', 1); + T('30.7', '17.0', 1); + T('5', '-3262.2', 1); + T('1', '-8.5', 1); + T('-1', '-0.000000000000030694', -1); + T('1', '-311', 1); + T('1', '5.76', -1); + T('1.9', '-15.55', 1); + T('-2.5', '102.1', -1); + T('-1', '-290.43', 1); + T('-1.4', '0.00001613', -1); + T('-0.00000114224', '44.99', -1); + T('0.000000000000414', '7.3', -1); + T('0.00000000000000079824', '0', 1); + T('-856', '16.3', -1); + T('0.000000003556', '1', -1); + T('-1267', '-0.0024', -1); + T('-3.30', '-6187', 1); + T('-0.000000000000007860', '4', -1); + T('0.000136', '-1.5', 1); + T('-5', '0.00000035346', -1); + T('0.0000025', '-3', 1); + T('0.00000000000054261', '-12.2', 1); + T('-0.00000039', '5', -1); + T('-0.0000000000000248948', '2.22', -1); + T('-12', '3.199', -1); + T('-1424', '-14', -1); + T('-30.99', '-2', -1); + T('0', '2511', -1); + T('0', '129.1', -1); + T('-2', '-566.76', 1); + T('2.51917', '-54', 1); + T('-3100.0', '-6.4', -1); + T('1358.86', '55.919', 1); + T('0.54071', '4.66', -1); + T('-14298.8', '3.4', -1); + T('0.000000015', '40.9', -1); + T('-1.781', '-580.96', 1); + T('1', '296', -1); + T('20.7', '-68.13', 1); + T('915.0', '3', 1); + T('-4794.2', '-1.5', -1); + T('-2.9', '19401', -1); + T('-1805', '-8.1', -1); + T('0', '2608', -1); + T('9.93', '1908.1', -1); + + T('0', '0', 0); + T('-0.00000000000004475220262613', '390046.9220288808', -1); + T('-52', '-7', -1); + T('-7137400653786386', '-1220454', -1); + T('19.76074721670306', '39433637.5', -1); + T('495810.901671347', '-201199464.42718987', 1); + T('2180987378927.828', '28150984.022786039', 1); + T('364.263', '1334', -1); + T('-4.541827796913', '0.000000000720283699415669', -1); + T('0.000000000000533031300116917190', '-733584.206', 1); + T('-0.0000000000000019761199', '-6724.9979821490', 1); + T('0.00000000012335234299864', '56.021423640836509', -1); + T('17752.992435030', '513735.52129558557', -1); + T('-341665592090.67519', '895755.23903', -1); + T('-0.01174948256069749', '38841.427732372', -1); + T('2067269955.10633', '-215483633', 1); + T('58373', '-0.000000000000000208432238083784077', 1); + T('2821.0921360930698', '-0.0019370832810573843', 1); + T('-1', '-6987341307332550', 1); + T('-0.000000000000000135940520450', '-7', 1); + T('368879186519841.03', '3.86407044811851', 1); + T('54.8552188726690', '-17618.8325331', 1); + T('0.00000000719285162', '3.0', -1); + T('-24541949382.5', '12000388993272705.7', -1); + T('-0.00000000000000016019271145', '-5010014644.83398', 1); + T('0.00000342615147619', '38.8937553143', -1); + T('0.000000000000030', '698637', -1); + T('-940562183996', '-9538.76857523965', -1); + T('0.7992283723', '-301.642', 1); + T('-943394092028892', '0.00000000000249028944', -1); + T('0.0000000065', '19.8', -1); + T('-0.00000024892', '1.081095088', -1); + T('4693767.27', '0', 1); + T('241.51552', '-0.000000000029998424146', 1); + T('4.70', '-3889836.808618', 1); + T('-31', '22.1677904', -1); + T('-8', '0.0000000000000018564862859', -1); + T('-2.82', '-0.1308117625', -1); + T('-0.000000000000000490813322', '9628302045.4', -1); + T('14', '-1', 1); + T('-21665490839.0', '-308.104922674', -1); + T('-5', '-6.6', 1); + T('20.356245251', '-2629.4181', 1); + T('-1.39', '24102492360.03791', -1); + T('26.56', '-81.84491435616642', 1); + T('12733804882', '3.16734', 1); + T('0.0000000000001331522614064615', '-62.298429591', 1); + T('4.5417', '-0.0000000000000000000906964635852953', 1); + T('5.0', '3.99206', 1); + T('28282932454425', '20112043684.32', 1); + T('-119.144720881', '-129.74436439545', 1); + T('740279.3975', '18685368847070828', -1); + T('-194303.7', '0.000000000000006199756267389375', -1); + T('0.000000000000000002405090', '-0.00000000979604845', 1); + T('-0.0001603124275271', '0.000000006060544102736781', -1); + T('-179.52', '-76.6', -1); + T('9736.4996007851800', '99.6', 1); + T('-0.0000000000000000000126060214789203821', '6748323899.81', -1); + T('-0.0000076569074016550', '0.000000000525779058', -1); + T('0.0000000000000000047090003506832525', '0.00000000000000011759', -1); + T('-286334697213252', '8557782748357', -1); + T('-0.000000025274118612780187', '-127000540', 1); + T('0.00000000610055019436568', '-87.3', 1); + T('-1560822.78', '360857.435', -1); + T('243209397988565176', '-2171.0', 1); + T('1089364.8', '-7', 1); + T('5', '-195.43311519499808', 1); + T('0', '-12.6', 1); + T('-8917436.7369', '-2412090', -1); + T('0.0000000000258', '-0.000000000000000001137187844109', 1); + T('65611', '-0.00000000000527362056737', 1); + T('0.0000000000000000000113412508151534071', '-4.9964', 1); + T('20156417.0', '0.0000000000000253800552009', 1); + T('32.967316', '-176195213.7000883', 1); + T('-542212737079077800', '-593.88569405080', -1); + T('-0.000000000000000004199278271388794', '57186245414.80793', -1); + T('0.00000004507194567013278', '1.0', -1); + T('43551631176247', '-2195', 1); + T('-4.6', '0.00008016', -1); + T('-0.000013384535', '3437784.58', -1); + T('0.00000000000000002007911523', '-1.34', 1); + T('2.5', '-39.06', 1); + T('0.0000000000000000051', '2', -1); + T('0.00012813936789257785', '1021.0303931', -1); + T('0.00000000000000000132229', '47.1', -1); + T('-0.00002120044', '0.0000000000000000064902789323', -1); + T('9', '379472788024622.729', -1); + T('20.510820935587124', '0.0000000000028179781', 1); + T('-0.0000000000000000000336381763977', '1.17539', -1); + T('0', '-335.0', 1); + T('2.4', '-0.00000000000023', 1); + T('379.690496326', '-0.000000000000000003740124432080006', 1); + T('9612.15057327', '7', 1); + T('64.55819568', '103', -1); + T('306554.22', '-21168.82471', 1); + T('0', '0.00000000000000378671778', -1); + T('-4869994212.02', '-82.3249644', -1); + T('-28281314', '0.00023', -1); + T('-272266413010184382', '-21443895.1', -1); + T('0', '256.5', -1); + T('-0.0000000000000000059504', '-393', 1); + T('-85483356.741520', '-0.135106007572', -1); + T('1256398743581', '-0.00000000000000113', 1); + T('9265.8054085790753', '1101.60', 1); + T('21755297.7418484298', '-1961304', 1); + T('-4.24', '-20364.5241763', 1); + T('-0.00000163743621', '-15716423.93', 1); + T('0.0000000020933557160', '-8448055.64162653', 1); + T('193', '1919.381696195', -1); + T('-39007.0872890', '58659197064.3566', -1); + T('1.224', '-82293358.63', 1); + T('0.0000000000000001573421585953', '0.00000000159648', -1); + T('0', '-91.479627934421', 1); + T('-186.247902631', '-0.00000000000000008879', -1); + T('34342532998345', '0.000000000000000001681734691290559', 1); + T('-4020.8878086173', '1.08', -1); + T('-0.1630447778870097', '8176.334', -1); + T('-0.0000000000000000582491728505043', '0.00000000000000808314', -1); + T('-0.00000031', '3137213.71057', -1); + T('-28.21073575152', '8530334210.39291', -1); + T('-0.00000041292', '-66921.7723433', 1); + T('-261247.289569419', '-0.0000022547224', -1); + T('-4.07', '-6.1', 1); + T('688.144527235', '45986414948', -1); + T('-1', '-0.0231932902995', -1); + T('0.0000000000000016241364087636498', '3', -1); + T('64634.877977', '-39803483', 1); + T('93.85', '-27.012', 1); + T('-1804.8479', '-2720034', 1); + T('-31207.70845', '-0.05392720639355', -1); + T('-7479301046098815', '37.3', -1); + T('50515.653686861597', '-0.00000000000000204399360', 1); + T('-0.0000000000000000055012280316826870', '149.91618262', -1); + T('2216863.9954067', '0.000000000000000775121457372458', 1); + T('-3.1', '2', -1); + T('-4.67', '0.000000018732162086', -1); + T('-0.00002189591', '-0.000000000255830068339', -1); + T('410611332258005.0', '-2840.2819', 1); + T('-7397921366979', '-0.00000000000053', -1); + T('-0.12413104038561', '-0.00000000000255343979', -1); + T('10521370.1', '-55871447.8', 1); + T('129500.264553199', '-3811409369958.95', 1); + T('0.00000240712277094094', '1354108422.5', -1); + T('-0.000000000000000005719028368733990', '540474.19019760', -1); + T('977162.7422', '-0.000000000001402550', 1); + T('1.54339295432', '-0.000001596789', 1); + T('53798507.25', '-0.00129745384800', 1); + T('-0.00418268966509248', '0.0000324984627', -1); + T('118092.9308827', '-0.0000000000091', 1); + T('0', '-93.6', 1); + T('0', '152.55335', -1); + T('-3405109.0892217', '0', -1); + T('445424.679402140', '85.3554', 1); + T('5036.98', '22371.6657', -1); + T('-1.9', '0.000000102345283335839', -1); + T('-42.2659', '3.721', -1); + T('0.0000016709189598', '6.170585', -1); + T('-3', '0', -1); + T('-0.0000000061', '5497334338493.62', -1); + T('-124932073873228', '0.000000000370', -1); + T('-0.007149648796120', '-0.00000001269559959', -1); + T('1675530.7719', '-1065461.6469931248', 1); + T('1053.3', '10097922.4048112434', -1); + T('-92523142643508', '-4', -1); + T('200.8', '-36.675816237421759', 1); + T('2.0', '34282969.24101', -1); + T('-0.120192312259366', '-99423384.4155', 1); + T('0.00000000000000000746964', '-4.50907217', 1); + T('2521.848164', '-16771705.710', 1); + T('0.00002756245400', '0.0032449553261', -1); + T('-0.00000001332527923', '574.55219962424', -1); + T('-0.000000000000000179221403668', '57235.797', -1); + T('0.000000057866988749115', '0.00000000014', 1); + T('3', '1.2', 1); + T('56.30058910190568', '-1680170716816089', 1); + T('-2', '-24381767.5', 1); + T('11799.81119', '-0.0000092161582', 1); + T('1.13', '-1', 1); + T('1', '-802.5013810814', 1); + T('54624549209148.7', '-0.000002846161', 1); + T('138301402', '-0.00011', 1); + T('5', '-2.4', 1); + T('-4604424', '1.28478944', -1); + T('-146100841048.0', '92.57', -1); + T('-0.0000000000000000020786339367465', '0.0000000517784775175150122', -1); + T('94366206024220.8', '-147.3818299', 1); + T('-3.30342757', '-2.8', -1); + T('1458645603.7314952', '-0.00000000000000071', 1); + T('-22352269.3857581', '1.133', -1); + T('0.00000000000203016463277398240', '11.54042', -1); + T('119.31', '0.0000000000005419744970291', 1); + T('-479.458846', '-61007894', 1); + T('-12.748', '-42.6', 1); + T('-4', '-2102161', 1); + T('-0.0000892951', '-0.00000000700082036664', -1); + T('1440.2349309228', '2068244137965', -1); + T('4.122', '3', 1); + T('0.00000000006657906', '-5.9', 1); + T('-0.817940036224482', '-3055637.756294', 1); + T('-30364497819', '0.000000386', -1); + T('-10441.7700601833655', '1.62504166598260', -1); + T('0.000000000000000000013559973223809', '-0.0000000000000873509044373', 1); + T('-46163.26048', '869724.9', -1); + T('-0.0000000912', '0.0215663057542177284', -1); + T('-7983637956', '1777.3345419909', -1); + T('9901852112330', '0', 1); + T('5', '-0.132564740', 1); + T('-0.000000000001296', '-3398418.84', 1); + T('2479240525029.33616', '-56491017716', 1); + T('0.0000000000000000000125250462975224734', '3113453368428781', -1); + T('18553.70674887', '-2036370511701.586', 1); + T('1987104769376.1', '-3.2', 1); + T('-15.9', '-0.0000000113232545789641887', -1); + T('224.9148', '-18.1', 1); + T('37574545.7', '-6.2', 1); + T('8', '99053.70', -1); + T('-359.3860', '-31.8', -1); + T('1.85', '-41.0', 1); + T('-2450069962976026', '0.000000061710947', -1); + T('-724091.9920619242', '-3301857', 1); + T('-59.1', '-7', -1); + T('-11075495.60081', '8.5630713', -1); + T('-58.7', '-0.00000000015983986', -1); + T('0.00000000040731658521', '18001880087', -1); + T('162453.79', '6668407464.1', -1); + T('-0.00000472188389576600677', '14115', -1); + T('126502', '10.69459', 1); + T('1715058', '94.8763148', 1); + T('-1', '2.2612173', -1); + T('0.5133073103', '-11.97191154', 1); + T('1.74', '-0.1674805636', 1); + T('-7290144.463920', '2527.03', -1); + T('-3', '-4.9427', 1); + T('-926566116.423411', '26.01271418645', -1); + T('-449.272959041948', '68532785212291439', -1); + T('138258577757.4', '-1003304148227.7', 1); + T('-0.000000000000000000010128915955897709', '-3304146563351', 1); + T('-0.0000000051706766331953970', '6', -1); + T('-0.0000000000000000007641943051494263', '-545257.46', 1); + T('-113562.957375112', '-21965305.642892', 1); + T('-11448.06', '210.2157232900', -1); + T('-141.1', '161.66', -1); + T('-29036932102', '37', -1); + T('8', '868324216.74', -1); + T('0.00000000000000472435319983650895', '-154.252', 1); + T('46.1', '2.16', 1); + T('1', '-28907.803', 1); + T('88570165763.081', '3003599203227764', -1); + T('-0.0000000000000000001073793607923634', '49309.7', -1); + T('-1.6', '2392146.237692', -1); + T('-2139.959367', '-0.000010270379848989', -1); + T('-954.845', '21359245.6438920', -1); + T('-0.0765243310465', '3.569', -1); + T('35244', '6.818525', 1); + T('1.0', '0.000000000000002694', 1); + T('0', '0', 0); + T('-16.37618647', '-0.000000000000255699967320', -1); + T('4', '38.09', -1); + T('-512214740.316205024', '0.00000000000000000048545', -1); + T('-0.0000356092', '872.5', -1); + T('0', '266836883083', -1); + T('0.0000030666714898272657', '-5746982.6567787', 1); + T('0.000115493195', '13.9259', -1); + T('-9766.284811588', '-0.00441218036285053563', -1); + T('251093071416.33', '-59740.56', 1); + T('-0.0000000000139253216444', '-0.0000000000000097199551454897', -1); + T('0.000000000000000005459644785124686', '398147250730851493', -1); + T('38.0', '-8781', 1); + T('-827469', '-9', -1); + T('-172850535.5', '-74.381839485246', -1); + T('-404166', '0.000000000000020', -1); + T('-8325567260571.80', '-1308443.50003', -1); + T('0.0000000000000001096141', '-329056750.0', 1); + T('542.65133', '-0.00000000088698', 1); + T('0.000000000000000000133704', '-651984.8', 1); + T('0.000000825879483325', '-381653.3', 1); + T('0', '-22991738843.86', 1); + T('2', '-36.5624759', 1); + T('-1690423000.05', '3376665391', -1); + T('-1695.58', '0', -1); + T('-47561102.1021', '0', -1); + T('201.1', '1716645951967.8', -1); + T('1935050', '0', 1); + T('-5.4755', '157.79589', -1); + T('-4.3', '-7', 1); + T('25090265240.04625', '-607.8', 1); + T('-2926462.61', '154865050635', -1); + T('1503606.9361', '0.000000001129607342663', 1); + T('-0.000000000000000000618066504819', '0.00005276', -1); + T('-95112', '2.67584319409253', -1); + T('45561', '0.00000000344217291134', 1); + T('92088411.754', '-81.226353161780981', 1); + T('107.0', '-0.0000000656279606187', 1); + T('47.9', '-23853019975.85895', 1); + T('-52.6663139391784', '16270104.474', -1); + T('-0.000000000000198761', '-6696522145', 1); + T('-3.7840523387703', '2470.12717031561720', -1); + T('-0.00000000000000022920', '-145705.5690558090', 1); + T('-1.0', '0.00000000000000527026187525810', -1); + T('3.59714', '-2725.47934324', 1); + T('151538195108874.210', '-76712263823045', 1); + T('4673409.1540083779', '71941922241245290', -1); + T('-0.00005452', '4996813423', -1); + T('45.37478482310', '-9.9', 1); + T('0.00000000004284806937', '-805754809.47164', 1); + T('-65142.3', '32395696858721', -1); + T('0', '-8105471469018314', 1); + T('140547537', '1.390913', 1); + T('-4', '-1', -1); + T('-1.7', '-28584565633401.94', 1); + T('-14414.40', '-0.0000000000000000065362929973320', -1); + T('2668644862897', '-65.93', 1); + T('187.5651870279', '0.00000000000004537', 1); + T('-166316028', '304548094.9', -1); + T('21.1', '-3.7459045000441289', 1); + T('83796717308913', '392191976.2', 1); + T('-245830.74', '-0.6276780', -1); + T('0.00000024230706949', '102871132', -1); + T('567804266.88', '0', 1); + T('-127491067191278', '-54422.33919641', -1); + T('-1336839.5677', '4.68601', -1); + T('-32772435.641', '0.0000000000346', -1); + T('0.00000000000000100', '-0.00000000000000000035706589', 1); + T('514103.488', '-3.2441', 1); + T('-80.073950', '128750504.46', -1); + T('-230652915.7', '-3.03863', -1); + T('-18888.4009', '7344873616474480', -1); + T('7', '-8961195435475.363', 1); + T('0.0000000089922', '-274867588598', 1); + T('-556.4765', '-3', -1); + T('1298.69', '2188624222909.504', -1); + T('326246955888254', '0', 1); + T('9924973.51090', '10.913818', 1); + T('-64922057.22328', '0', -1); + T('-0.000015121244906956671', '-13641070311', 1); + T('-0.02954', '-1.951973916', 1); + T('1083.674582984972', '1098', -1); + T('-558.42815252', '-61.1907444466', -1); + T('0.00000000025639686430', '577986', -1); + T('-7035.93', '-0.00027214889', -1); + T('3', '-90736572249838', 1); + T('7.63915', '1232667.0', -1); + T('-0.000135502278681995', '0.0000000000000244953080777', -1); + T('0.00000000000799030040007', '1.68', -1); + T('481721839972013.764', '-47070151004241360', 1); + T('-24.978', '206335.932853155857', -1); + T('-616.2698', '0.0314914227', -1); + T('1207176666.0', '-1301439870', 1); + T('-0.00000000016429476', '9.9', -1); + T('-0.00505710206398253462', '0.0000001380667547928', -1); + T('-1.165016965486953', '-138379.4231296172', 1); + T('-79.6633131', '165.14223157', -1); + T('-73825158.59', '-61', -1); + T('0.000000000934', '-3.82200519751368', 1); + T('0.000000964717', '-0.000000000000005927687371823458', 1); + T('27.727966', '-25.61', 1); + T('2', '-23910', 1); + T('-12', '3883816315.70155728', -1); + T('8.206177344', '153.790', -1); + T('4.9785', '218608289854278.794', -1); + T('21.262085653354', '-0.0000063961966310', 1); + T('0.000000032951144241042674', '14189577.516', -1); + T('7610.88052', '-1307222', 1); + T('0.00000000000000000004157294626', '86', -1); + T('-28.12923', '-177547.975', 1); + T('309.88', '-816', 1); + T('-2278580099.10', '6.352', -1); + T('-19.72742783115382', '-1101.0', 1); + T('-263181.91904236906', '-9.5', -1); + T('31.3', '0.00000001853884573', 1); + T('-167415.77', '-0.0000000000000067', -1); + T('-4.4', '-8608589026778.48', 1); + T('-0.000000000000000100148808054135', '-478.23174', 1); + T('567.51927458', '63184.6562350967', -1); + T('0.0000000000000000031', '0.000000000000000007929', -1); + T('-2', '-28934796077245.37', 1); + T('-49505821', '-1.7522', -1); + T('26.41137', '0.00001060660706229', 1); + T('-0.0000014187070', '2894.13734', -1); + T('0.0000000000000000079', '-23597579.1', 1); + T('-7.595684', '-3303819607.9377', 1); + T('0', '-3.0774669892765', 1); + T('0', '3', -1); + T('-1108203.892', '774.9', -1); + T('0', '213043362334', -1); + T('13304398.0371608', '-42671595698923', 1); + T('-59.334', '-14797425210.4', 1); + T('-1580.918446457', '597.1509', -1); + T('-1954585', '43.7', -1); + T('8', '-0.0000000000031877466746', 1); + T('15.24', '0.0000095965900328103', 1); + T('108.38', '-1', 1); + T('-1333901185', '-327.940', -1); + T('0.0000000000000003002264302838337', '-0.0000000000020925378', 1); + T('0.0026377197741282', '28815020.633', -1); + T('749760.615164', '-216.05', 1); + T('-160307.9', '12.94', -1); + T('-106313763', '309.6', -1); + T('362759', '1.1', 1); + T('3661.3030316', '-16218702.35428', 1); + T('-29.385677982085526', '211.7', -1); + T('-0.0000000000000000023842', '-449178776092589', 1); + T('-6.9471389224004', '-9.14525417', 1); + T('-533061078.7187', '0.0000000000000000010672', -1); + T('-0.0000000000000000000549612286887', '2489771', -1); + T('-0.00000000000000219220742135136', '-438551392682022', 1); + T('-7.39965327', '-11.7759', 1); + T('0.0000000000000003275', '0', 1); + T('3.5', '516.37962208', -1); + T('46.4537129', '75.28061', -1); + T('0.00061329308410045020', '-1895948346907524', 1); + T('211758460425', '2', 1); + T('51956.6527986101', '2568.075045980510', 1); + T('-0.0000027761040', '0', -1); + T('0.00000000000000007928801', '-225.8724', 1); + T('-0.7498337810439', '81437603983.269', -1); + T('-2917265829.6754396', '-40551534', -1); + T('705475472886', '-94431.289335', 1); + T('-0.000000000001041719221', '6.9032947055', -1); + T('-141.60', '4893.455', -1); + T('-0.00000000000000000276', '-2348', 1); + T('-451846573.05392', '994.237', -1); + T('58980583273.66404', '3', 1); + T('3.0', '-24256.552994526', 1); + T('0.000001359135157304725', '-74511.22739626557', 1); + T('-1', '-7.56575', 1); + T('129.886304994', '0.0000024937420', 1); + T('-340542455', '0', -1); + T('50949.95', '116146.9629904', -1); + T('-621306274358.78773', '-460701161', -1); + T('-0.0000000000001649894694', '0', -1); + T('-123393904497', '8243467175', -1); + T('-58.45', '0.0000000000000118', -1); + T('1125.372', '-188514556292761', 1); + T('0.00000000000000087318067062', '-3112845454279', 1); + T('-1357676334012628.9', '0', -1); + T('-0.00000000015751050088824', '-2741149.60746', 1); + T('-1.832', '396956274241425.09', -1); + T('547876802.49698993', '0.00000000000000203534', 1); + T('-0.00000000000000138873470272124956', '2.7', -1); + T('-2122998911772.16', '0', -1); + T('0.00000000000028992', '26193061.4', -1); + T('729909.717271101', '213.5069400843', 1); + T('0.000000000000000831795441', '-3149.30209', 1); + T('871.23', '-39.9', 1); + T('-266.516025843669', '-3', -1); + T('-0.0003377513144795643', '0', -1); + T('5429444.983', '-8.04', 1); + T('-16.86241', '0', -1); + T('-3.81', '397.2', -1); + T('-0.00000102639', '0.00000000003224208', -1); + T('70237963596.634', '-5857585.97', 1); + T('-0.00000000000000003645298330', '-27572.252', 1); + T('-1340.246701091', '1643.0', -1); + T('-0.0000000000000044091801675', '0.000000000000000028992762079', -1); + T('7460313.2', '-16167.854578244', 1); + T('-252.4', '218.3', -1); + T('-1', '-174474956852', 1); + T('2.68344', '-0.0000000000031997142239077', 1); + T('0', '1973.7414', -1); + T('1481958817.6', '53372066', 1); + T('-0.456', '27047501201', -1); + T('0.00008716', '-8953628973228.470', 1); + T('0.00000000000000110677110109', '1022800068.0', -1); + T('-58.061691', '7.580', -1); + T('0.000000000000000000011890', '2.32355850059843026', -1); + T('-0.000002164702426516', '163.9', -1); + T('223.1', '299.35', -1); + T('-129700523752699516', '-0.00000017', -1); + T('-5.27', '-1820.169295', 1); + T('83587.473', '-0.000000015648996536587', 1); + T('-0.0000000000000050132780', '-0.0028014658786123', 1); + T('-1', '169130711.41216', -1); + T('-1097575518.9328', '-10.1053377424', -1); + T('-0.01551135221651', '4', -1); + T('1.06932', '42.19', -1); + T('0', '1.4', -1); + T('-67852.2727000', '-3.311704582173664', -1); + T('-7.042326758390', '-0.0000000019748141455575', -1); + T('-1.003281', '317.6026', -1); + T('-782.20436144498144', '168447196048515', -1); + T('-243917419.22', '-193.49', -1); + T('201.75620', '-199.9', 1); + T('-0.0000000005419064219935', '227564', -1); + T('0', '-208129799136442.8', 1); + T('849606586946.33', '-12.5', 1); + T('32237710821138565', '-6', 1); + T('0.0003909263003590', '-0.00168080', 1); + T('-72141391104', '24.823064699', -1); + T('17.70', '154171341', -1); + T('-0.0000058731658540754', '-28607161539382', 1); + T('0.0000000000778024752', '-1.5315774605115', 1); + T('-0.0264455', '0.00000000000013642701952', -1); + T('-44.04616', '5.10', -1); + T('76789965', '0.000000002292', 1); + T('-0.0001367934293', '0', -1); + T('-9689.56490', '93.264005', -1); + T('-78.8991377137', '20605.8864902063172', -1); + T('0.000000000000000026641956701225', '-2.4', 1); + T('-99702426', '31234686409', -1); + + T('-78249536473266824330849.66777355094653206196949807187125', '-0.0000000000000003657205364898565', -1); + T('-794146002335392753453.706827563775514677616', '-0.000000000000002003697772718678199294529887857336117611280517515976', -1); + T('-415', '392495171560354735.54', -1); + T('-0.00000000003641527559883410541221', '118893973463454526683808886319100407749', -1); + T('-246230199620.751986', '-60621558.218545419613692429476293547415222080017643997', -1); + T('1135.2381823', '-7025657983677893287919132587754823076851573889.74685', 1); + T('-1225393854304.583672953386', '3712805076014395323562.4542406246', -1); + T('0.0000000000002805023524281798', '-1195739.55713460927706968721363067', 1); + T('386896730804748668115534580.29201499', '737595739534741234.44386299', 1); + T('-160941276095561769012497288743700757276588036', '194.232174807028239974132449968549146279604', -1); + T('0.0000000000000009760', '-112424977227983.369213445871607530779963339', 1); + T('-120493.3535480159461699138868088193226718499846079', '-963938726344338862591656029356573.2356831292145', 1); + T('1.731842697869349182975403693663977472678249978539', '-0.0000000000018342058226450839410208095980857226', 1); + T('0.000000000000000000186044372917454007190404393463337172211654339256226', '38603.328332936580263680889352090136846643070031691', -1); + T('2.24833678840107152900324', '-0.000000000000535013632333188', 1); + T('-0.000000000001014445297159531', '-182225871.4', 1); + T('-110739', '39245367522721683497924493692756130948391370303714834', -1); + T('0.000000000000000000011109996302235', '0.00000021747567330836261997878389805423396667433455', -1); + T('913805.7272137617667300113969454560', '12015557861856523.82185', -1); + T('4.44', '17327761911331833939511.3229350', -1); + T('3343815205898708797845323710139050310101815211790183', '0.000002944097410246031171887416698431193651848888', 1); + T('32760398270494573303330410.50750229445655494486793110334706', '-9510914125.45789497493920290055', 1); + T('0.00000031352646', '2982438266661362962075700689156408.44636939397', -1); + T('77053023622996.111620117040477945', '-594', 1); + T('28.651584435', '0.0000000000000517018230', 1); + T('69454425323857571.298955', '0.00000003183', 1); + T('8.585707061691', '27579495297994019790817050261359', -1); + T('0.0000245072088767920273', '597422085664.8946200175189947965015981804000953540032149', -1); + T('6395952035600311.145296483306709937475', '-7839682836938441873082358214760503680131094656590381429', 1); + T('-878403860673101771781740794629505317750999165.91704111', '23574346417573958371843475532943.5863825875041348813273', -1); + T('0.0000767302828677966418632441811470540764577', '-1276636.42385918072718338162162974143519652320393232805716411', 1); + T('-15930445184474597597265919925606183581356435.4578944', '-0.00000000000114252044623272018125497556095987129012517542089248', -1); + T('-48665285374684448074343674590620067.7', '1', -1); + T('105930.422', '11113072169.652252071060557105162', -1); + T('26564763', '-3', 1); + T('4811244033166.822319661770849918367233504118713435759512811', '4.7', 1); + T('-56.8', '4443507757632459.195553180343008573591954189736210531834', -1); + T('612.72379387256827500110', '-452.196955446440438357', 1); + T('-494127587184494770597966464398', '0.000000000000000505582034979983270144354985077988823279257757358354', -1); + T('151593171537726736029059210', '3280207153334176964', 1); + T('-0.0000000727423791233275798', '-33.983207203823', 1); + T('-0.00000000000000000014088202399161', '967411649025173.3', -1); + T('2.4', '-0.000000000001348198764946041705529604570289570284', 1); + T('-1458694234293.393', '-0.0000000277889669157893917', -1); + T('-1', '0', -1); + T('-295498271141109248639464345535.73829013835409617653972', '-239733948637940687.4210093379196529044279897', -1); + T('-114.668973584958627612325023154590', '0.00000000000000000204', -1); + T('11086296933075691303', '61846609604939708809351700530350279982', -1); + T('-199290.9539286389610', '0', -1); + T('-0.00008470578761402', '77227954881772040530.19249809987494428807714982', -1); + T('1675393978448', '-218061932.345257837058901', 1); + T('-148234164778648.90057404374761057399794220096395194121763477', '-1807153054383052.16291022958635252906429', 1); + T('0.00000107324116068524713963632866732786846249794493141690777', '-8697413954500148992019717571067182408306067052176.48379', 1); + T('-3504475807101437909894549201613284414285', '0.00000180507680656754700593791722943439535831913116826463442277', -1); + T('137188855.912293557682373', '-84390113782876.78301756825303169680317158020741023212586877', 1); + T('-8.04', '48917396714819601257978143.0', -1); + T('19441.23908', '-3621875953293954379164.80898', 1); + T('-488683915776821.54128571136', '-2764.655', -1); + T('-497.39163093', '456272554.910083158313064', -1); + T('3888553456.187038805', '1.79351971', 1); + T('-0.09665505758418475963567867363097339048321797943170880174', '42.26560746275599', -1); + T('18902797728391145440494082949463571569467603044', '-160840513303121014911814965287069764.329850142', 1); + T('-0.00000000000363783296932', '-229510691003150718410894.798513190', 1); + T('-0.019578513996', '-0.0000068012586581839285561', -1); + T('-0.00000000000000003337257672564450192788237207780262977502390656214', '-576.230537914969490642', 1); + T('0.0002071041857705517964418488527910814283948842252102023', '4965', -1); + T('-762578569061554379901567768164.24708334695367', '-2902150555266343625933468.2', -1); + T('366547461068.82113690', '473567955790856323671.7615303868255685632986068926885', -1); + T('2212.60505074', '54.4399284220426917738', 1); + T('24229481820388119475112679.2869744056638142529094915709331146', '-39663594276.8672343304', 1); + T('204581808810007220059753337566285703.0558403249497', '0.14724245060761654341919', 1); + T('186.26481926730311740748275435747257', '3169339033932711835137078410077027045.6405', -1); + T('147438798802.4222641736117', '-30953.68649', 1); + T('0.0000000000000000036665066712498278880448755082419497041867983779348', '49969977335002848872793397', -1); + T('-15', '-1610335165763678418286838402407661955', 1); + T('2689653843679875122027095562540366.2198041476017623', '1680374149507467199865152885259.7294203852546004613867', 1); + T('-0.11', '-0.00000000000000000043896646420939540095966', -1); + T('2080671699743.511238240714127', '-0.000036842318404340179848907', 1); + T('568000304', '-90592884500253731464906623327632577358591186.946837858889', 1); + T('-0.000000000000002107518141285', '-3224876873708851754101647.818256157564', 1); + T('2265098771', '0.00303612511166914586857128974318819782', 1); + T('-5664007822465.98050400197979616740857', '4318641.351415884425470426852575673963981647030782942', -1); + T('-2548615100934958409898695557521334.971165846219072', '-554798.735556810907', -1); + T('-0.000008820826897431443', '-1685288868236928715034057139645.0670918901230', 1); + T('0.2773641914039966806939077833931526594995617517107827', '-155510002669979906258854608426737730.80732922', 1); + T('0.00000028631297293946002594331990323448420', '12.530358985140', -1); + T('65.74', '0.000000180226526307592', 1); + T('35366830254177.323', '-195533735162357391160682221146179916675364691505329.522594', 1); + T('623190599276699090316221455590041049805679995441489316.522', '6153742899048073987312064712008701512451.12942', 1); + T('0.001389654081957090114281716350682554539119289983031175', '0.0000000000000000004172245036048453978505043356031', 1); + T('-0.000000000000065125596165975329468700878377195017853327025922232', '5010.27', -1); + T('99858764586308080.815938383', '6906.98277', 1); + T('-0.0000002120213841110365850583078206489619527666932442761000523841', '1560226.624828', -1); + T('-0.00000011209616970611', '437120468783339721.8270432960', -1); + T('39633522.28696180408828', '404609951713', -1); + T('0.00000439899975727851857364404628011452819', '-295058799.554060774457769229721869795967861', 1); + T('-0.00000000000000042342244818730713908050671583102154', '549754666663906751820116493890514432554613796763091771', -1); + T('271354103.271534143867908347243952035', '-3.4348029165', 1); + T('-18391137696458176.709403414422273535748', '-135526005724.36', -1); + T('-16789648705436253610328466585451657189', '87790015500203097.67217621', -1); + T('-0.1934527980285924234435139814', '0.000000044283070912014290453388249787033315196663317475885890', -1); + T('175727618.7', '-4712524302.9633361502507795469472010873256880899968244213838', 1); + T('86148708.7', '0.000000000043067763982519792325233598208451198', 1); + T('-1676718.814', '-126027512979.7359979901775996', 1); + T('204654162545474.954541730442039127578542771572577634608702', '1278262396819307952614391540746000135708145121661', -1); + T('20599411052765018472280152629960269.784440835643761573', '382871.68', 1); + T('9.1', '-0.000009868296529724402614472149967657', 1); + T('-51.7', '-0.00004138549340599259177969843213431710067044689658507', -1); + T('-0.00000000065519676351299476540767970', '-159950069281804382298.104882147944419487737768', 1); + T('132937997125408.196564521', '0.0000000000000416671095818013123525013575750', 1); + T('-1313393782.747301', '135189314585073603701567044403904503', -1); + T('0.26345218007386345905841', '-0.0000000000000000131698402541203188119609481297941368650', 1); + T('24462716218.22576508876165308669350154', '-175901840085494768716509058673018943.44105360844073496986', 1); + T('-639051.389850068275663978184079330600736417788030565545', '-233130008509087611163354733950079542005785536290.28', 1); + T('-2.5', '0', -1); + T('-48', '-1.30483838443', -1); + T('-0.0000007957592304983915492296920988493287302223429001', '222281838853.55743543126434998666514248954378468481403010', -1); + T('-256924767625.92102529834889997062393414595239208331582', '-138645955.7309701679', -1); + T('5825.6936168480383901079880', '-15454778381.1635817748532891601', 1); + T('322234158068890727047790331925494003913674775559', '0.0000000000000001440104086097707578083604', 1); + T('-0.0000000000284163905693832757026', '735321.796040692391355698638806984647971670552494930079886', -1); + T('13.51354661049663', '60174586.03966439546', -1); + T('-0.0000000563225262474012816830760397217', '-19259915510222671.51018', 1); + T('58260242951538386451799849576838755846723438641458498.45', '81583418293233481447477355060230.5984042555029388', 1); + T('15676086441613294586793.0600578779086373855887', '553785093898805279609967970.6227004730416155843290795860965', -1); + T('-529215908', '0.000000000000001261696290245850445593226', -1); + T('0.2765770305056755810402655395163548457323921993', '2485048778003226295.0487979661044', -1); + T('3.106357', '-196188865060.96789451729283131151802962', 1); + T('-3812721623392532238628.52058836531583261604602809206126', '0.000000000129949612553432181149516674241', -1); + T('-725747.78308445614294711222169380088709733492626141', '0', -1); + T('0.00005978057030838911749503353205688236750513118711', '-2301374753039922.5', 1); + T('-21135.6', '0.0000000000000677319833766662844296', -1); + T('-18592472738146.165033667092366', '-0.245177658870876212432221320582908107465202878031116163978799', -1); + T('2.0853471559342294701189635489971894524307297590789015254659', '1820710163171110437504131672398834715.796647407', -1); + T('3017.7628349701943687591214', '-2123676032175089021.800850462329', 1); + T('2245516696370652079582811421413778879168242699149', '-0.000026865223', 1); + T('396591381033578245290535623.59522101830916124323912171677', '-399632909396.27251691705488670319', 1); + T('25071395481877740931640606160951694567581843991.91250540', '0.000000129577260075209456379795979548520957596680350786352443111', 1); + T('-10071840824462229810456841986062182478', '-0.000000000000036', -1); + T('-378.382656390921442297', '2995.111135910', -1); + T('-0.0000000000000011003920232607040692705', '0.00000000000000002355157685511431284976273511723771203290674587231328782173', -1); + T('894.8158182999506884919347710660910', '-0.00000000000000000096323615121853367670285903274497581', 1); + T('2319037.233322076813874258', '-32416.903557641', 1); + T('23396460119.155847859729080972376305599746464844501598782869', '-23349855891702694333726330.5788991', 1); + T('90907619612776583630058641475331.6', '834081.31401857878701092663973283388246447251015444', 1); + T('-0.0000000000000000081501364451042879423837094013790187022253', '-0.00000001399490096609828204621353982853023593', 1); + T('-420605.932784654921007625945921605929', '-0.001003986559391891122940439549512675', -1); + T('29941819100256.1010903984648918366033290553065670117884535', '-1399273749558314.35414647141708136502314', 1); + T('9.87428322502844153862497406397966790245714773688', '282378323960341447353633555973.60816609111820', -1); + T('0.000000011571', '56.055239680', -1); + T('57847056020509197.81010326363252948483107773', '-1.4444', 1); + T('-51735520880178.3819992386025068250767281052153771374742233700', '-0.000000000000000001995850558903648471134005565207297729809954251013177868', -1); + T('-252689605402394270719155.41734356951305987480624879', '-14.7', -1); + T('-0.00000000001151229725364301025243181548204622943024492441630358', '26395005645801030069538169698242312.433651971508113804', -1); + T('-0.00000000000091483130556462719', '2', -1); + T('208.9827699741542594700570327748394160582183088044349', '-0.00000000000052759011609237039384483268124939035873403', 1); + T('12412.9657547118', '4', 1); + T('-2', '91580728825224739577263849484410121433204621.500780779690', -1); + T('459526644.772925035397599290137226147632521530511862018', '-0.000000005846169451429981275734796656', 1); + T('671926163021026323133951152902929830282.91041796493', '548498210972677.51442460018844632588617668956139310271612', 1); + T('2422.5875291768881507425406922241585652688246', '19145241007530705409.9615104357443736565548963', -1); + T('-0.00000078875216605898054012159', '-3150.0', 1); + T('6244534680058004259589682789034535443037697', '-25351939981079.604012', 1); + T('-180.203958489450', '39025034688578315815199.297787915576434930764', -1); + T('-1361080637840651575481575485233.15286726682268248409468726', '-0.0000000000000039297884367828635174097881955958806085', -1); + T('180278536333055.7355327506162313565598247413', '0.000000000005454620478830996984164588529474180472398020083723230733100', 1); + T('-12521213.94690', '213.36136', -1); + T('-0.0000000000000076966493627693824010017610386791', '-2.378265167488246191074961795033182605013037407884326', 1); + T('-253.6948', '126006206', -1); + T('144872743608071550764695060958473194286850377609005.9406', '-4115782212.903943924240904289', 1); + T('646425925574255155103804057996228876', '-3385724693259876271747963.2083760845385', 1); + T('3238426111230801661501493996824.60026008769586', '-1.3137106232306', 1); + T('36812968817.09002256', '-377119042652372085.8701028046507452160688891148413096706', 1); + T('-1057646134026674642687725155011813064632921643903628746215', '-61.1976960', -1); + T('5932283884028162.993577517', '-262866296151760083503.5144635', 1); + T('0.000001968962077757014929052005163485510124163782133996', '0.000000000000116476163076562297013796305385624375676724881414944662', 1); + T('-344797534756.045056309614536498476108', '255603.7453533447251497046857105152628367804406158228236933', -1); + T('-3426067344177324630963454.412', '15385507340701842778819629282390396905481417.2267114635', -1); + T('-6482829869.2939768229599', '-316205.7593667305356109359299', -1); + T('0.000000457660742', '-70087953797661233.02541392030217222494340078655370619', 1); + T('-0.000000000000039160675421718532243743411756', '0.469130640793', -1); + T('646.780847826', '-18577555.4140223083526099991256121668882164928438251290074', 1); + T('-0.00000048407641016681417846220', '5.986261', -1); + T('211851273349866038766', '603496683164932314765.83959539999713388808548959930160200', -1); + T('1102.13614611471685523260263', '-10896812', 1); + T('-1204978038923128204724255296214417.103288933531778085701527', '1716208377705472866612373037267.9534333794', -1); + T('7.39', '71028207488403138793.76246511590301180890', -1); + T('4434283.709', '63814910740714880857390949.18170', -1); + T('-19123084314467.20872238837396740488879369139405423586', '0.0004154673731839293052318786962694250849938501580037', -1); + T('12118.39981', '-26215', 1); + T('1425476489753.2', '0', 1); + T('6771847.279065', '-176720813115222.66664', 1); + T('-915883195.783206257390', '-1162517435079017677181093168848300277', 1); + T('940255279112483580064474520160.01836316454', '-21256974.01257889791261612212', 1); + T('95730426094247272.25144832146486095143107940354301', '-46035913246450150341614859268398866836154116011239252918', 1); + T('182340191187346850984880518.92122432870860784218323791323', '-45046691441.5894152', 1); + T('-0.112180892367092832302160275033223995396405949810852290641240', '-5048973.374988', 1); + T('12547796757213733598419046692214', '3054356083556184826827825111923516899788365822904', -1); + T('-5.1917', '4788005123362165402614828953522.322744', -1); + T('-172.673385473127', '7906028923470497913119471880236309806492091000269715326656', -1); + T('39.36478', '-0.00000000000000000111733659477153687132091026586982038613149571288390834', 1); + T('0.00280064326461873471', '-96485541594534.1717745476897400616', 1); + T('-53804410326123080293766343804563197457587.358960227469', '0.6042327037044788643429', -1); + T('0.783179986173131431415315377310009758807865743500314352155718', '-10150718377702833509077223188001629199784735482233', 1); + T('320.1580863905990337350358843421238167150407', '78483581833243910660574051689573904282.53796879219263412', -1); + T('0.00000000000000005913773611490029218785743338181834029896', '-16301992210.353', 1); + T('-13791710467720660651705727', '9004174340.018826831004190863', -1); + T('-0.0000000000000000052146576165363099836000375759397050145530205395264820', '-4744954283790', 1); + T('0.000000000000000068266442751433', '-21855039931', 1); + T('116.841', '756981691.979269', -1); + T('-7473997292613406', '227497901856345041678511010728961877', -1); + T('-83496362887321946609436668599.7903028365237141516', '1024015979814432311137570785885497044404075269867866.737', -1); + T('-23818785789.2912426283539742079882608148628', '-245331580042569', 1); + T('-0.000000002349831704133945491130166154185575859959455463468', '-185375716299893112855976.016352', 1); + T('129364225959.09296952466', '108542305819621.75909260', -1); + T('171091046088.5982271234876', '0', 1); + T('2370407657610305710129669557444595465119919578698971423945.97', '-821.3', 1); + T('-0.0000000000000000066502835859829587521962052035084744192744097555813815', '29.6874646919', -1); + T('-170.82', '-30241959962614761470726121490564851402310663.74902149607', 1); + T('-0.00000000000006469138000554640183555511490', '0.00000000461742314618775', -1); + T('-0.00000022716576662893621400646809659283', '-0.0000000000000000097981111184009991288395382994924970037037274346', -1); + T('-0.000000068298738368', '0.000000000001713927973365901946623917833165', -1); + T('-0.0000000000000148999', '0.000000684685591706506458136016541069868975745133391', -1); + T('81817616220.930513909829790979437990669', '0.0037959556025699242990945655226111160507570806789539', 1); + T('187587490328.76177037442867202450382678451459221314035', '12011852709039268724852416629919418328793710229665', -1); + T('-2454260049688515674651405402228.478820', '-142484538009893665821574115250696', 1); + T('-188143100145.00617383871359559450074903986323218040691', '39179506.59', -1); + T('8613', '-448853115.602892393', 1); + T('324475356028412945643959548259053230909249689263109070219', '0.0000000000001203', 1); + T('-8591717.842088230805549679866443799042204', '451637831192239', -1); + T('-6070762221984493.7954950487', '0.0000008266057502127693017207185', -1); + T('-0.000000000000000000021548786264742140151119863195875002281801', '0.00000000304649397231813005172496843293480', -1); + T('-40.087', '6007129887259380790745', -1); + T('-1366148121206.5632778067071941207265023330623', '80874576.1341452071', -1); + T('-423812196741.21772334603760090003720411', '-8489477404172873113334318736868836015.8927', 1); + T('-18748128368612368', '1033760369950876702413539809148.635494241886415', -1); + T('-6156774.639', '2141734773.98', -1); + T('482197977761340226097523001111567130628.3114748', '2405937830.20828', 1); + T('1.500824259421505', '198242033184.774', -1); + T('53413278633421327710558227', '-257151492007801487684343487000253.407786', 1); + T('-1594411348210457.2057201773399545926098672210220093884228', '-5.810400317391331894', -1); + T('-42.524', '80197685.59875442876939670048', -1); + T('-60014077957342698615530961389', '-13.78', -1); + T('-1387665403.2451221994775416780152578', '-50.1', -1); + T('-0.000000000283761964988232221224443682313729383881', '-2822338883009.068928', 1); + T('-28385595875309619596283558.250520032588078', '147387993300214796016282545977170456859842677532644', -1); + T('34686252767892826', '-7397737915931657409753002235117.507122010962757', 1); + T('665935851.03885464136023', '-4.27966623847647', 1); + T('3106722949248488343.5712879936594346', '5207020105979502838849125845982284.134451754294609', -1); + T('-0.00000000000000000001162533600824036331509919011567723975', '-0.0000000000004073637073187', 1); + T('980601.882104', '-4736241802290.1', 1); + T('-1.264380690744', '-0.0032883798709792788300566265810', -1); + T('51319085247942607.3131099', '83544328154437955698662922791047991992', -1); + T('-192623899359040.3945129', '10926.94113484257132806109226984967945807602047', -1); + T('962893591125264662170537112845916056.381612', '368.90671614695431830669034995', 1); + T('-3007190292.596872064173502838572330294928926267448', '331482510656348', -1); + T('4.619', '12807796.2864949', -1); + T('233052.5454017603326230828962755508957', '-32914.3881917757', 1); + T('0.000000000005544400247160205560916422655780463306', '-117580.4643568059993825255748662006333620879934324449976194902', 1); + T('-0.0000002279846534365632207677600216066596305', '2322126554056.4607607287069', -1); + T('-87331990126', '743.4', -1); + T('137842568133527537817773506836473835596.037638095', '23.4281795386520220571331254754387057268591122176624659', 1); + T('-0.00000000000081272882678106791203475757923134527272965969323326949974', '-0.000000000000040624141216710146487026358979015670993522638121783791573', -1); + T('1971.17747372189', '-0.0000000010768131828513761981866874629018005', 1); + T('-10275311905140309547900985557569021235914044', '13182550904924724360875252856492836233318627808046410', -1); + T('-9096.750964541599607962155', '13028.7', -1); + T('-0.000000000000000000202605861249781459466292197187493310550840999997429021337', '58400.404430535722017', -1); + T('-258981', '-0.00000000000000000146942477886148939377531194', -1); + T('25.9', '0.00000000000000118094876087922', 1); + T('162.19622926933', '-68764070962981173.301', 1); + T('87010429441884304752446680474543109139856949178.585391743815', '-33889485558163904190.04059458582735001225610494', 1); + T('-3588694.63698027859953463343148736989', '0.20617368370080438', -1); + T('252827102036303.9936197231087853010909954787', '-13509465854837088717675412627', 1); + T('-6887075662100868367.99298907317434', '1438247217765576380817821853526995547277570394769356704993', -1); + T('-2614836293019955922452927776550298690576039936033493782765', '0.00000000000000052031132538502067428026543', -1); + T('-12663020159532609144497566.74', '-42113540319.2', -1); + T('-1080616543853692231052255789606862766.2316765544745171', '622138464929033724077.5684575767378639873400300078414586', -1); + T('91651523225544121200570967593879', '-278740040380.50511089730555', 1); + T('-8.77451376', '21181531848.7359185246892781251068262178642', -1); + T('-0.00000000107896277359728052', '-0.00000000559014447680213165225303053399586003', 1); + T('-0.0000000000000031412406939689928816768809909569850137504174813806298', '267542612', -1); + T('-0.000294657579', '-26086393286300.330271', 1); + T('-271.74195581137236680782195613069', '952766.7883292538644370363183485', -1); + T('-900.09939007562756381827', '-9918431930401851036841237625432853804072200032740725352258', 1); + T('-0.000000000000030671845618853580', '32357.482434378971190374026634088', -1); + T('-139410983097962987.71179096685291702409075212713', '13047.63499478071424425', -1); + T('-62537522199.9961', '-0.00000000004918255915', -1); + T('-58114807161.758057205498543979965130', '-3584702124152.236114809148315', 1); + T('-5632737338122610476176492162', '824643338386766980921.71811030291008509477931405498', -1); + T('-0.01112514633044857786937097571424050679247016367295', '0.386883742497074382567205105882739261935576163102168809328', -1); + T('-775467985328533.575386347563813', '-2875270027971383845747422189517733489695440299684.26529970', 1); + T('-9206.12', '24465276.6921610401', -1); + T('1054.43', '-0.00000000020318289531837407268676153244871958794890914093632739765787', 1); + T('7300988032552205.76041147839581218453548563753012', '-0.007634', 1); + T('-0.000000734659730075211305671182182069971692776321779245044', '-17392730340424661359.57036985935157689014069028076050', 1); + T('3000.6213158910384652830168161716968199806', '196899.54954822827787', -1); + T('-28853.3', '108559143247879763569410860170094.00407203', -1); + T('-10952790675891711060669', '0.0000000000638895380906681108955511361930418302376174544368019503900677', -1); + T('-7687531139650175', '0.004755312112866962666181173910352323', -1); + T('7565776384737032915661040051027778572949', '-160701353.9737519084310852349548363386945597974151833', 1); + T('-11.7', '822380840969.7330218', -1); + T('245133982.2709135080741155484684942868990', '-593165059759410987863660881778696387234.47816', 1); + T('628.75774650481071', '0.0461101478872120341063967140839333563803204295885288367372735', 1); + T('0.0000000063833770468977856889029286', '-3446116885099565994798245412234997574310.71146429262', 1); + T('-2182184538507532.123419582161659811958985', '-16.178', -1); + T('-19295.5', '-111077.6', 1); + T('-1388412775496356558574776724142668543270374', '0.000000000186737893798664765627225688620011182705421230108657158838', -1); + T('-0.000000000000000000173967868179648', '18152994682673.375193707089884990', -1); + T('0.0000863560035782461361163890887831825663', '-1610362290.97396641996627173340421008496869', 1); + T('-11.483483415298114396405743398201182328386755342848', '1655.482227981052539355004148643429722825', -1); + T('6566771449.687708654', '266171391084042797.33757142850317159949', -1); + T('122068558041101739958985067462542912538', '0.000000000000000000268384176192613299035', 1); + T('-4556.5265780925613192416', '4408701630592873935323494393972993090123128329706084', -1); + T('3515021.1', '81864516617484548687.671', -1); + T('-178949.59390232991893024115', '155518413686675002287489205632826353865420.12725', -1); + T('-180770193582924974272749992870971104340648972754', '-1928.19874477272271032797979599489260880606368041405343', -1); + T('625944002374826741962891505936997879124112785.78254', '2.2', 1); + T('-74000022874026102397', '-124816237747723579623236426033.3292987585226390794593838', 1); + T('-7131583.112143898464453392111748674238953953819160850767017', '84543374363987655628953718.746396432167424125377', -1); + T('57930668326368128477331750490208537947030161601033587.572', '5.500178739041619245327', 1); + T('-1.017', '138555579979990641891100613226981', -1); + T('-143314297738305919766.85676159714631636157649174975230082', '29162684.00496065795882', -1); + T('-0.0000000000002178299609737745152878826159216416', '508720821875640011430584245157711563400384026461605542067644', -1); + T('0.0000000037127521912905404', '-7112417145444577.80607898479236664', 1); + T('1.4535281', '-2755278119711443416368353764068870008385673657351.287327', 1); + T('811983.91569425', '-2547.2614436343839512598907421054076705190588578245014517269', 1); + T('-0.000000066783814084373165177389', '153634640417158153571843303.3824378304880', -1); + T('5559062891501876147096510441935756175635', '842776596383.34976492066280841493046933', 1); + T('-4251086773215699216620141628146909108378011971022709', '-1.07986603344764046828530', -1); + T('-2.38', '19960804157.01707538429700', -1); + T('140859852236163731572799808333907582182', '-483673686696369232470123.2999332082319758158129919566', 1); + T('0.000000000000000000029622654937176905639567324602041176', '6.8015236772403026405177389845218159042412678456034', -1); + T('25606.7', '1212600404583', -1); + T('2.426990264', '-505156.72', 1); + T('-3323.26420573', '-0.000021970500979289375257', -1); + T('-255663089355037.16392040629597512015094', '-0.41027975468456748910575155470378618816162355136333', -1); + T('566035648379804767146020274970786348003404586796', '-2605006926602834802308635359877490813262595', 1); + T('-0.0000000289094988182444091497941385745066427', '1.9399', -1); + T('3409063904163491.67712627300938046053186814787275', '-788683478416.8521908', 1); + T('-552.503', '-2.65992687121', -1); + T('0.0000000000000682450781086750734123964535', '3340023490622963858.05775701', -1); + T('-28.423300541592258577722518374987247', '0.00000000018350659919154', -1); + T('-0.0000000000338682164343183039173515869325510437060743440', '1815582615544197484260137.3218056141775424580', -1); + T('3', '84909.6', -1); + T('912649891343940306774308274', '735.6', 1); + T('-26734270259188991826781396067266586047', '185532822.950201471152934184838760', -1); + T('368826381.7105579623244756846366147277999', '5.5', 1); + T('-22848732.37376986942615233017284932480', '-0.00000000000000000001612001293726629147004663156694479784423162610622655555766', -1); + T('2778176016640.434269090024108', '1048566837961106', -1); + T('-0.00000000005687373876856047135405145423769679122686973713754', '0', -1); + T('-22919522347.89673645577646706445', '2', -1); + T('333548957780868457725754851263954857512', '0.0000000002186930669230787434579292', 1); + T('-4020857112014642672533241638057425567305408226516383316', '-610648130878189409.30664242328454522474430938', -1); + T('-575928405847231664243702964453172201881707803819077958636', '17476059949547258392.9269270331051429', -1); + T('-0.00000000000000236', '0.00000000795', -1); + T('2', '8398410026740057242211865329491307671', -1); + T('705216162396.944649', '1147259473068686282007211288799376369558792447024.1997172818', -1); + T('-0.0000000000000192467050834', '6', -1); + T('-949763984221042841274951349558.10112261647', '3', -1); + T('0.00000000000000002489067290965425526486154888600759799385750417414529209', '0.0000000000823737490521166731893020565223077334833777', -1); + T('-0.00000038', '-2632134659727565258235592973628916007.949', 1); + T('-69592.16495307008', '-463465967056256671637919962390996488321070177494218933.43', 1); + T('-6387758166555649.89131479869', '1002182649863740744720129461114521861386424106.91208215022267', -1); + T('431.5946803602483', '0.000000000000000000816082696768067476521004613496804107266986784152470313', 1); + T('-23812703844655313104347040675308650219032315064', '-71724306.2930848005664925', -1); + T('-0.005366575257566691274487675050792258604517208', '-50270812932100741999189180430.012678', 1); + T('-0.0000000000000000078075590970858480352604836633054432965570', '-27324956076689844461004586831.04188455331803393389628', 1); + T('-24102905908901166081092826266887612015', '-459655866683957.36420', -1); + T('18620863003604271884104610', '0.00000029683459505576831', 1); + T('2.21', '11.74', -1); + T('0.000004553511760142', '-0.0000000000000010330082103', 1); + T('-13676169.2900328430847', '-659552074603595567395834543801367207404186168504233', 1); + T('0.0000000000000001438969718407410316532098007489935388', '0.00000000081225083195136102279920779602035', -1); + T('51597', '-3688953.37331140657540657', 1); + T('5.0', '0.00000000000000000044951103341270485292979388', 1); + T('61725.97', '-318781217745116634885912525386954947113588.846293794020809', 1); + T('-504283888.0252594786037412363612838038962476794771680754', '-1144808847766934618876.2356421', 1); + T('9701728689144729082229.639579', '-0.000000049089013163887977', 1); + T('1734710425425226243190199621025858405083851', '-2022478.07568145447065678665660363516370892531', 1); + T('-0.0203968042130858225550603184916550906', '3561783820164476692531301519095829484664197181.88', -1); + T('57745178282004030498957972.6440468982032662924085898763', '0.0000000000000000005401742140193599', 1); + T('-189888759.413694676', '962721078656113954807517895483569422587.81272690880505144016', -1); + T('0', '1089893620428779572280086', -1); + T('0.00000000000000005263900289846965180622155474', '4964254.08251899455', -1); + T('-2429863004900274258713082377.2', '-5', -1); + T('223562834248418274852', '-454450351567026707172759587', 1); + T('-151149364443914860721418508987736982714845.09', '-32162477518638198637106030', -1); + T('-479815101913558893748354066945159343011138914699444', '-8388616248281.177', -1); + T('-896582450010216483769437258211841611193596983', '2151162154931974.5324307514844193735671829753537', -1); + T('-4049.4959556373785645366161076408324898239699112274', '0.013169159788356096', -1); + T('-0.0000000000000000000316327403661051020290330503045336299615133', '-11700.08420553103941618418917556638908321476907300', 1); + T('-91734721044809355559.14146', '12', -1); + T('3', '-291.2', 1); + T('0.000000000208876005726', '1109144943822082911633590', -1); + T('9144991639852325623127064299724.1037', '9195201.269557786877068732018', 1); + T('78715642607677481.98025', '6700913191777637296013511988358756280.5878553149112009', -1); + T('-42024992208847626581242632149881286185298896514143767366037', '2463231358853.71880752761233', -1); + T('1424455191304023789401770179431438298242.5956172095628134529', '-84101775306.4342739228941346432384510922338362929028798837', 1); + T('-2', '8298028707904306800597805656615422.563428', -1); + T('0', '0.0000000000000000061793103234817538282147379532723959171618', -1); + T('-5487921270.538719897462383104213699510', '-1', -1); + T('268682329996669747137239620985539555535419363', '62924806289369.19580487653689872403580775', 1); + T('-0.000387355252629095867081739966073411968600277129031410', '-20830255873882034860249701068781380943483', 1); + T('-1629370894763750572049675488248', '991789483832341479415077040669482846.446', -1); + T('490412212844.567042', '1193114358067372516507866.7675019818106066492829', -1); + T('955981.687631958504371296000429391844', '0.0000000000000000001766202113828052550367604264198057743528417306', 1); + T('6431932.913640551', '-126629077818549423618884827799639161238817.7318896474195', 1); + T('173236', '3919.931871161121317101046368865876703331', 1); + T('-1128657348139042005269644515367191', '7320475389227053819151783370434503694134148', -1); + T('-0.000001531508743186704496242168865663427', '-41287316832998.086030726461470592703928425646406884861688', 1); + T('9833276470.19', '-1340313090673.9396406089183', 1); + T('-0.000000000000071266085262734127620', '-42269405460346073.44093606359227914216172743976226345709', 1); + T('19273064566.607617709592384430851504568825219', '-0.0004352973090210742250757', 1); + T('-0.005788', '699340993798990426136300929857470.932190', -1); + T('-88.750431269011', '-185105834798384460867482551385762166627884659.971162492245', 1); + T('0.000000000338337748871769299443110098647543052118', '1793651380297444523883109428377964622519697401107621959', -1); + T('-0.000004410675006466359214215854792979430946366025336494150', '212402325929778260730054.72532540928129434351789341863557', -1); + T('0.000000000000000001072224833476632886638952280133590418', '-65485.0633', 1); + T('12502158597739959186.705468775503441', '16.66597304878086673769469360979630746', 1); + T('0.000000000000000009677703', '0.0021843733224756870769', -1); + T('-0.0000000000000041999607963521154604945381536827703934336876453', '93664.27886678243967349370590141313752374055497859', -1); + T('-0.0000000000000000234261821391240556018', '-315.990655680030512945994935758', 1); + T('3195453260014685333492830082716203563522.36872', '0.00009325368310030723757358157836689348934835351190017', 1); + T('-33244315391121.22780712', '-1311031062177.74054460725962379', -1); + T('-1707161.9454', '-12005804839001.54244657079130670097736', 1); + T('68352491818706598.773651301473666770317477098618521912', '-0.0021074281045472626934633424986655940198794278022', 1); + T('26.463440708', '-0.000000000000000000161495480948179406780882857906312583977592728907', 1); + T('0.000743978231293810720', '-163654150785', 1); + T('-10.1', '84118013336354653851057751102778.5255011398946', -1); + T('160481384203.203261436811734467630350', '-0.00000112857893416261', 1); + T('-3309055960935586978293.0524313', '21483182429538345732977842.5731059392', -1); + T('-43958548371515045.020150030047077069164032471', '-69176275532496.255925921038380207105737351', -1); + T('-0.04981670073679086136919289630392557877963', '-398950332875156202401821158696058677232947687447245.417278963', 1); + T('0', '-435528753375555685177004', 1); + T('0.0000032297790227357092301516546825411526485804661', '-723817273826.900', 1); + T('-2702619562405304', '0.000021620337383638552928', -1); + T('-0.000000000454', '1', -1); + T('-3144143431608222864766150912095006063169199318202', '58.53291045364400226122849818452051713592021060811', -1); + T('1115', '17.357031896358227163528', 1); + T('626983028701766087311204001', '-2615488710736467295.69042919296588', 1); + T('40365698821085373.12608667821372228818', '-49815765062.89597274348089400519601', 1); + T('0.00022', '-3607024557794704402629081642923', 1); + T('1364091171276057.97761244863798921737454557501095284', '0.000000000000000177865197456638064216228393652693903199280', 1); + T('-2753914199438393', '1.968442310668164769128495107357994123999170779', -1); + T('-775719502.7731', '-0.0000000000000000048612190810399950650839071400159174695292975458830', -1); + T('-16116938624203335.4', '-0.000000000000000006412977', -1); + T('272612865514273474320712548718.9402594608941366', '-0.0015869340307275449870331257080282841124099817091326', 1); + T('606324260201754.1434994221817869056714199', '28395472736102159748126258009090', -1); + T('-425.804232', '-180233.62994', 1); + T('-0.0000000000000001323505962', '-4818224435323036527507513', 1); + T('-0.00000000004875768812254650206225254505968862675405582488', '-0.00000000000250181', -1); + T('0', '589543599579236108105278188597394.7', -1); + T('6194660387650555532806365.67785490665673624067515', '-5562299925991551211.449094280', 1); + T('21071748634936165958428873502220200671957884564', '-21877247994257440926313.112083', 1); + T('29.6', '-1284653117475257.81055939276439345', 1); + T('-0.000001070241', '9392743602622997628985533350323669657', -1); + T('-770440255222043537495200.6997075447934779176467373', '0.00000000000000002163072792311046458436044183497750', -1); + T('72924117389.35377926', '29103179425746323066349616562734447341721864', -1); + T('-44.7154563464707697425999713876377', '6316419259432079567188243897453099488.27986', -1); + T('231.36754477031773', '10395139401326885805822908081481', -1); + T('-0.00000118333338184521046036822', '-320975156502906817', 1); + T('-168714.6721140026', '30811271631788712886661929275491543882895', -1); + T('658.039394580451534505618643867554797997792535540581487878067', '13102965065445154782', -1); + T('-1765398404359286937871993026008756479663.1249', '-1893.842801467346249656722764607268566624', -1); + T('-271426086204740642209831748805289909458935193844', '0.0000002849584520073597479884182004863626528356168604', -1); + T('-1377816279284.24202090550539206', '-4482020235202103266487160771495221696.9569187528465', 1); + T('-5.153338782077', '111841437759.8516773', -1); + T('1935875317534881538626219754702496578459939396459924407.445', '-2.69502254630160152110', 1); + T('170729241284179053792255', '-4451787575715904462656351072032905153914666075264.15', 1); + T('1889745529039666589.126273', '60497049.8677', 1); + T('-5033600800189.350388143929701198516318', '0.0000000000000000000560155992523696741221395', -1); + T('10.5406982381', '0.000000000000000021', 1); + T('-632940973989610.559', '1453966800.2947369036854268970989152864530', -1); + T('6001088411976.9726351889534473754', '-1', 1); + T('-0.0147896392703218629529334742030182', '446.69797286906823912856467855870955584367815853', -1); + T('3.83283725770115471046394373426687880', '-0.000000048688749586070845947492557870516966863282338273', 1); + T('311.472046824904240126119060726132453603437309216724993936', '141057050127502107523.987453975865', -1); + T('8207155.53', '0.0000000000000000542558038634643663795', 1); + T('-52.153', '4992402747992764459141957946.173249', -1); + T('0.00000000000037087971513311066134109646107', '0.00000000000000011416409371', 1); + T('-1.53294577434854835684', '116405244945444933601158446.489942', -1); + T('-148112201957000169.55322721393', '-21184576168032173628662.173748989258024885915978002126587635', 1); + T('142.834', '-183660432602724204651884604531246', 1); + T('8893.1', '22902411.442310886381060', -1); + T('-0.000000000000000000049301490', '-4268821956373353475835160', 1); + T('-35267430686890946642526643.40527', '9442.78', -1); + T('-388257.7548252', '-22789237273726383', 1); + T('-0.00000000001035915929141861402608660878800813727', '-13364427.71449240284234717270638783796', 1); + T('-657250878405514264850.36740512444031797888135499', '-194007658128943.2702175990', -1); + T('40622.00027155142785667332283724715562664685', '0.00000001135895', 1); + T('761530675604.544', '495276273239198618829474956470.233178493', -1); + T('0.00000000000000012', '73036710782920745627417158215393112044826285848.66', -1); + T('-2759374668072424884167545392056988395284630542193729', '0.000000000000000068039371483156100726644177048338315397952004369910331937248', -1); + T('15.9120', '450286871.1411907943653435378050516223461628482', -1); + T('-463242.889', '732474228336471210605174200838.347164418188057', -1); + T('-37054664518639837.961401170232480179055753', '-0.213597333719034786247662894812723740483671041535079', -1); + T('0.00000000000000000001373037051536737485136263054', '0.000000000000214231995904201121132614658821157329422560178904553441143', -1); + T('50637443782578.4742028134098808129659944726779514644', '-23026666.00721461124457795917', 1); + T('-6.49', '2475361689.75199634250718942163511668171643880656258831085', -1); + T('-1002990.83923290495185295078283', '-88091991857.058', 1); + + T('47343984238976282156612318707707241507', '7014.1380688580943680749895193484951393023851901068954289', 1); + T('-0.0684650131341203263401401552553627094627677222266117828967840329153916004', '75230922521264678531581542609391910658509316112860752792749246167142277738299159084963011895369670394282283243922357698845', -1); + T('-295862313165400124619550237.656069', '-0.05242949757418000580437043689552606133616192399732961267572280016078297875290996591091471487276864075033912589320229097078489273', -1); + T('-0.0000000002314229728313932834817367208574480091285711473641947850686', '0.000001669738346220713984568468088', -1); + T('279047626684188128091435590947041377415469191572169057666439886858786324321493442931662682903818854501531', '1014941974886877047600692.608173634828307821277211443446841120485731400366934581079981241944892978588711090656843039207957131', 1); + T('48308709872782035593925640996821550.5973961768548380479859429302524753667536555613596780627951424760211059088558463346485', '-0.00000078577667662550261964917332375091682757798693072266793892607597426884314985327535125926665884881508153537106316323804', 1); + T('-40215116723353583608457914214243065135175415923039250335730569657501143689052902444197762903775444.171803001', '-0.000747392053570593271109057105058728438851585178963059266112875660536041822237424884', -1); + T('2819145676011742129640869014892511895199224936983927037212297.32661697202141330300178285210', '-0.000075196819438137495966275363285091739887328834587350620047101366951164331460643462218485807470864914189909573221028130571976946299969026068777239788983', 1); + T('0.0000000000000000010446946709023771', '14509.94652999103448344', -1); + T('-169686607281341840589884752740664499041142720600502268735857463345287043', '9240364668978345118.8252917399138216489359074021558811', -1); + T('-0.00648413653267434764253188982546409464526518238337229133733999', '2948.7980089962735491284253586450260337878935566878447899493407398914786100293772145150075', -1); + T('1001973818132969045188552394268298635939543267204272678642391489560726393924', '-2059855354.02655908060090748170485280847537851682099516287881930015016266786206643', 1); + T('3328359199438677474383438883220437819298385482514329045164155052810372940115672255269', '-17822566.777845868041139594', 1); + T('-6542320880710197522834989015966.376007802981186176649420394764512', '-46908061275717031191255178167927.915776432317777604650368349154202614657273310196199200481525517060796473584147643855326183999949752634506182391510540', 1); + T('604836.583993358823509315213191546460434278961276333727065449874496855101461036551875374733492090745310221170534047576583343077626', '-4618.54322501862329794473469782199104028963878464891188614915521', 1); + T('-2986655693343577190483562333.92412719013779269947465010977392088784157099123429955850534813434978228194474081909354332', '-103384861271501400520575481696310128926061538534263361845524022957997389715640479561046089692194108884343449310.3422536845368577965862523217', 1); + T('765724.8058196984567185549755236387342642542128601094827801684110', '-2871511540480306286230716009167755118386587513101483870025917810.88436946780861454715514628104283462503253', 1); + T('24448714061097007787870390934284762281809018607186508400198524858281434628378799796164614395462', '136860921422568786599033843935978450.6', 1); + T('31976050073630733902118874888120198698694428091108060659949876943761489391517922167985154033832205584536458188056791991838367292725618452216501378', '-0.000000000000008724016496', 1); + T('227751527822451319233980036203061200794979589033503610838256022189246563024105758517686476756678884039664356839803154355514768438.25760233796425193', '12930579982912105586374957109272.9584159836524371', 1); + T('1514317730700056941559141895152952074535483501882733867310806012120694202376730571677339176140545799', '-1160800067156081508973855089834407714656861906.51850431230507', 1); + T('-0.000000000000000004528520707580758615957670805419571717242606879228', '3281046363579593520467268296573492611708885559390440995276756319312503600477686071166829762632', -1); + T('-15142766.9262153859827204', '0.0000266963695358775794073681141921441505602549064236507947', -1); + T('-1170502802005482729655202039369546711769196.3826548809416965101170', '-2.7922318280801312629836579611849652427387594471800', -1); + T('915561706486714241282431129.3095438633737782096437500430272652', '0.00000002743295589722432883027847254714940643024630751707638612336', 1); + T('281768416547033993113190996753004903757335724486313955505402513939651088167932178912956960256084911825899718067523864582.316462439983238790646058945', '-149073711831044726451905735929139231365157160963186101095501511510907692030494797397977970495144468856267403314717745696.2972152852646707723456012113066', 1); + T('-0.0000000000019747673020255994583864712477644533161788381792300799696139839', '-31965855724497611653259696447953582263.2864030194503056', 1); + T('-1174060959246006.755952234360360526196000440620268', '10622998243184628451912141.109071876810564703814335906300181', -1); + T('0.000000000033846382113152238688078094044310425164545900148933', '-1111767780033233092141350626922156977507571423642452179209671272723.16734621884468521854782887743133173', 1); + T('-165250590789141636082920277183.08120431640165768', '20582.14148', -1); + T('-468339329.835642768092', '738514159142.27', -1); + T('-0.000088399519151094279453456909123490568956224146530747517787318847682582696828096135575460415155822773423264653037725174685656', '50694235979171725.10284160699574514405961006184943457644973589154', -1); + T('43870463394510215993877357948126367526973038358203', '-9722007431984300534876108771208960300602249500573036985', 1); + T('472964469449264925748432818777986783251555850837785.155421757016608709428994296960752', '-9311662.297602125194', 1); + T('149990356612051183091016.9779087859113196930497144865038810481689032713686587351635927000452', '0.00000058376621752446454994221296235106373116337068588954258416259841704699029370833659808532069056542382277544874169614425448766346261208', 1); + T('-0.0004607678264613885284392068473867065453534101118751415631835372760188817535650199460853741749428132718940014704174405734985617847478329957027082025', '70752058498943698615424955949868075492906532507.0176757020599642777622407991179893486322582944963580901150580300804716044265973436522', -1); + T('76888778535419856741284623506934651449268144461453.4100936081838029065930113909', '-0.00000000000000012226026014905656393255160074154788749706679568415031254318647732324163664724545113944076277226550929098290192398236321899151452', 1); + T('3203156318209811351127849964590315886954164800424606142343745.1683686381578999431682489662239045', '-8269184657749537294840577216855405317480047874381981', 1); + T('20111727365475687172481528350050313287788545571058937993235075289638298425.086714092681300133339985321', '-1.09', 1); + T('8792.394469303535648526', '556845927626235935416153911457755895037951239.9178326008028011116088523904503228', -1); + T('48136562376.5855982', '-4664620002491508667225096233.3353226241084544027216354820339730176405177528341220528660597322792739250720990838180005107732410742208527592663761347', 1); + T('89763855544387950417149466000861904435721204626431782465991561650.90098406420', '-0.00000009765299607531302464539006851217800595264295701520065262877011318715659812090110386884067798529550037236942', 1); + T('-30868393537038718005', '-0.00000307', -1); + T('-5185223470716576655809195163610321.9031646', '-2615549017350666281371362184052090206474489835519628225335567276034298501607305275085823412253', 1); + T('-6570190451631686560241.38001587541890402432848708439444609643933707639935590896259', '324626622468660389631964181439480620661269389440074118784879141638091676591242082.35149172529026676393528466386409586', -1); + T('102286341466180974423299.520959571961131384673275163806585575115835', '2745527309114708070695269441663991101771080484480716171439709632411018440.9471846829949932144642406654855468308', -1); + T('-0.00000000003977653756347008076395413408629675698295885109193277602695303170782568202351152991936286417399933347874102607', '597355470921919715241658157756484780639935506634657853524178238394469802448173406793521622383466470180001778292727.40733108770130813735753', -1); + T('197887959303.601932', '0.000000000000000000103458894529722050736055678304440744297638258502459562179105262236341233794829198584326110727749506382519131830616987451966701', 1); + T('-13307726476516464006118797585863798440642787931380742817511702537361080004023468421495571836042024747.479074717', '0.0000000376335065425310597483666155345223642007352033783310467188460822186122860392955355838387349761629994780', -1); + T('-936013007953467845983397438772135456939667638978675074252173994774974753052079960592.47977338457210574236644512980713', '13576615292952511187779127518363704883999332503672973.3702971759282614976225115585', -1); + T('9.23', '-12798427797276', 1); + T('0.000167142048', '49719109889269472002178986135088991291890225419981596673500350553633201288202635.772926153589574093304933356854028686159563673920076130779451', -1); + T('-41507234.121353293309393741599055024405018684', '-615662226549782365482025752065081146308129562731747780117504154.7257', 1); + T('0.000000000341762255281442429237209572068507698445580331776282387508674913040101434213455495104', '-41949136443982932485075657535585958912363078315441820291608', 1); + T('-265613151330300009209671564.4222473758380149118266958', '877381701435580606449.2823863360946489509927889990897436462984330011', -1); + T('-7775.7801922935180522039801358877017608615817227', '-245677467624819356918999869496669189293253534311463142326275828.8385050566807262539312986315538671411353195745005372884107987569771605', 1); + T('-56671611310047491548245067647344781122049835409812386627.47184833607976624521197067809553483420845430755397', '927756335187625067734782189305518713116277817764247.57605072238432753688349923151908068643686860012798840863564716094325436269552536311256667911776199', -1); + T('740145597581078317830455002008118144162252296932312159216520649062910882', '203.1774262154445', 1); + T('0', '0.0000000000000000009031734111110941301911861337773289644877967835', -1); + T('-109614283766506080410697376197915899265557750362042034638637253839764519329034984', '0.0002771704787349519193621964400949845983482306593453116923699372132126053949806228372333859881841496151153670277673003333721', -1); + T('5539849710.1733866507907276', '-3181810546381672360262045367009456644564406098.706843157492761', 1); + T('7919.8414971201383271371184303738534957144878404477288669', '23.71850', 1); + T('-75173119692055.941978185535165359347403243', '-1777369117489847081.5793755856264212166727373899851099330121210857826856', 1); + T('853843518069945548394273175137114345101444889.9227331700075815923961371745037613601267987181194', '-128714814686121222464195889406689437357524546230.015234400775', 1); + T('-12254994213398422679769049305686.002801989668924092053922987716790500288719964943524816679018713', '-103.138354211842234506715721756147981015254031181706983900640592115628103240710219474933960256729509150933435108751279275932464534793849351884639432456', -1); + T('-59175298043142026219772.6138367', '0.000000000000000000070447947045776431902102876458194', -1); + T('18408853293470113069702150408569784461075475098255264356830984000273938318454913474968562276768901135468209464837', '1547252236967174250.6109363062455217002510723246', 1); + T('0.000109934251781192379417653296979431190196397725358849059626366415903680138562279946229803244271813742725286468939793394672457421', '201592.88634560', -1); + T('4295549848243131726044253553835945417165130579767473284081170673527181.25870512635225264560732576630', '102151540455604787176154202447753962845.44365218', 1); + T('-70018315186783814804204234064836070201850.45111825112808417052739', '328359595989649160.27671859944', -1); + T('-187481575498617809778922382731003340929808335610196169', '191210658629716423428208663327712.22840812936979919141196164775880201034911336765', -1); + T('3935126925246231555928598126054809026090453369989273776664805163851.40944096517984980', '867141118109779658944.2878631198762910032', 1); + T('-3.3112', '70293088157175047259886071558256457067098.48990741414498249210048163949091759610703775633271629309548', -1); + T('-425672404160144333420994274930650792419390010238350069166384976005003337185319653781910705867425126832871403392819177542518702296572117055960061', '839737903411111958962035888468571596712972008129364688.4039', -1); + T('-1112579726844536917102467847.17653', '2663046929443819301686222.8815254170857930', -1); + T('-8252839102489352083135451792859801342710108.002349758', '0.00000000000000000754813631507054088229552535842607509562669628676682863560861982957068071893164866381925307374227108742169408306216812315857923', -1); + T('648977871365662014097820749365461557763157639862997561.9226938534796467778911346445390320354152128870864719689734', '4175599249314851119719173611802268614966549291562107396112171800916368481888650992052892917907331', -1); + T('7.978771111691608901034895922046997520765316732991829020429708671577870', '-141461002304237680013302819529217200685047249677913497940481241136261081366014448461680075.314895392687287547792476133', 1); + T('7645457264770121264.11519238056423560881225944703024802644929136702643335901338244883352676085052049326756123902513', '12248781443620567711948542737349180298557346901690131050556844819693354875119397097.3069688913965372036867997744', -1); + T('-31463526490509734316426714529666961013007041330904474383539907327397930.69855820', '0.000000000000001084414212469851737741900907708478145214018350492547421106994594378', -1); + T('162421846200240075972.621793667847764426048313662775180616649900013446891164416772769820233651942815777530072677881008330637209917194592673406865011676', '1636.3384899943980', 1); + T('-9388.77817056401956890804476948', '46543968580057.279028606835157899512662680123283044326771', -1); + T('0.000000000000000143303812564681790621876402521018890314183355148990', '-7628794548804927.34', 1); + T('-1542550905995342000761716058753926543294062017039230714986137143389838208183333', '-53800959573.4262787634955806006145772222341066088520813', -1); + T('0.000000000000001152730387533585619339997779185607646939273677780916', '81948301807320885956271993225479133739996835479108177281833065098631486001558755667729745414069819258092', -1); + T('0.0000000000000001788799320895331948748150602283438995686077438726117754118635774342676674835559', '0.000000077520063644569438264401511693512958609441535842475827179071085391862921498640290404605863569208836853054800018312203', -1); + T('2562546890284566201144784661620724384611158674150768124964079346239943289319722480037060276111920.222136554767961523266727357926098927614671062311740560', '138605604122306326.2813293437333129599840', 1); + T('0.000000116108838430759441302782521474416259839111834957042904031702308600565811558707520', '-32773081443699450674814232178208000165745.1531323897041933349725844322275', 1); + T('0.00000016962435025541763496758773163192785686185', '-489746511467818443870465628849334514883582042615007726260255295320662714496913671884730698683.29565342494', 1); + T('2595681723.354258055254516439280643724110163289153337969294375601861106415452385', '-115227875945154401241354604360157180225326718208937244144045426579478908666999062245014983584623561102791559344419.3439990067153', 1); + T('13988.2256045374464162730896958695884374', '888586900556332788670112482.37398292826916221274855412326388860996499123880558724209443328949082009286758571156655913796044564457627209', -1); + T('-0.0000000000000470209539970879477', '-864491095896332104056.032991', 1); + T('17234844171529654006262682431556684956259672.501251903404554782171218613148856041151461738989660504903649745731468011585476495243619320849285372', '77.057212', 1); + T('132143152930296638008029506374047631241235811666497989329', '-1574290622065771830275216174898081456821450631640123172766526472178.36621512168173889629852301981351392061034796955081897041667393', 1); + T('0', '-1316574314525845529636399894653083761113210297566939806282601610613495358962733006.0', 1); + T('-109413572345091592273384912644432788116678901530150032030387206946515405272708194880210199360', '0.0000000000000000001151002167821514439222568523527362216245718047502081296141262348073695099576990022126977579292159436086696206194791236098302610981584', -1); + T('1710704295541545612797844331135458249843431195009010270413420412760951540267443630154282121567740496794165882981618621038738605039191086840775989345074', '218797555950100963168190026470661147747154206564462260', 1); + T('-0.01986463638088003519038677632588937621107015695', '-1028.291246864751944153983531204139834559', 1); + T('-6129329794341331550700126780841411.10681976024490695157405556642104977194512590697213', '-102763039780830034728404554703096.812100908361472984162806', -1); + T('-226.626', '0.00000000000000000023420336780091', -1); + T('-0.000000010129241772248087133563483455888815190018826890577292551683993175479005119579601450564910', '-1790565914576279812291386964788431643050956024856703305009441744724322410099442946374063091238355862765866', 1); + T('0.0068398345678559403526205622981764242038537974473365', '-0.000000000001407581522035574500483500', 1); + T('13412104116279855792666084150933562672654470809264824', '-42.260038186873416278616781586145', 1); + T('0.00000000000000001437216', '21380203762019351547345259799258194003013715652251954478030855132881874773077307627834740214867166409662357639227437420816938973889', -1); + T('0.35484739402549358280548938093488455603603260', '114404993135858248063275522978544019274645376783367486741696148.0603461877153775553115699756', -1); + T('-1392486513299304175902425517444632375062450839823901184672697507427515176395766963801250797985239359712769304501547503238', '3454044166627774642387359622402929225788813383864157201212.2114062265086063540445467889326266', -1); + T('0.0000000004235328175528436975135029779349501289306568759092284453523973254966515714043412430621851', '395056597915705386266389285222273.34', -1); + T('-204238872345600290518420', '-7070509208.5', -1); + T('72981605063519176291637366098161261831841026794183175316952260221206391640795191543.8421968648832009685372935897352204397516972141864015416063525745', '-36262462150667.754518420039671271875550396516537776640666003', 1); + T('-1141023.82684352', '3434872367397371325216431040190149263337567687305458524226443036', -1); + T('-40333484548205874986507170870398476011.93898153865902627865880451768925350561994301059418337827757770353', '0.00000000000000049632092624546818538381130693253691731101933347881923687', -1); + T('-230663466750273009979493177203432440.865302323651699785239168668412433309395152855727', '1670998446668363695655787373943065972222.36760305066767262349052811349705705205447571695947815663365442810397158464959419047231577852334892259862', -1); + T('1495920643058959437383621501654941246766508238559437227184395050508514977010891589414393139195', '2', 1); + T('0.000000000000000039324000814212786891918567188197481938283669634275484732259078', '-2299270960425972615800224709593358786239089449465769176018404837987624610630628831153594469455213474024413922975.3876555670185953786804983807034', 1); + T('-8082406101601203880115291043102466270919070095098281953735730788166344088077537197510058.919123451989584674149285735070236244024421371', '-0.02226327405613293121833686639574431245399059620617834149317063960558350928186286512729307426425266342626060275759668774073177785043824298828768556', -1); + T('-1260845046.64883107384', '-0.000000000000000000032951467370811927086119928603400891551133309876860179950981702630344524252699073518428054', -1); + T('-41702237.44707624355', '-403554966566407328040246233531173350056173185174578248744654858876543716393251428956136570123.045148101168981528401974150078770666865217717450803901233', 1); + T('24411533732401288279000256393511093097142208723735552385390279631903938583581112236833308264597448368803308517021849284586376379400244500274869616', '-540499000648432033602513088454810109729675397905099895623746885562670714393437069416769033407782176', 1); + T('-12796310936083799962806258894032181490930481696661675693244680395898.81995123483878975', '-2414014872118737871549315707.978848004363088', -1); + T('-314497255487.428261813176560336175', '-6306491139786796925149337414394236828901640814689977446346353525569212758359614726940791393359277514543960143.6', 1); + T('-651088466302570543016523906430706603794205652090045214990130588847786.8819083644743982693765724621734749239800740209128895951504965', '147959.682405388376182159454226557702317868363038056542259510762433258825701331105581616424866472646181109750953466531685333313177399667105119076833', -1); + T('-6703.994577459788708', '7536793319.4553806370980150922073737014018531259247', -1); + T('0.0370921742946192583396225808399487629915725931871147443686211585371265633482', '0.0000000000000000062212476744078005281537', 1); + T('453699458249145242', '-14728948.0513745626843613222', 1); + T('-1.28905599285812487351350473737291244745697', '-563389218829763133702542103957052040974515855646', 1); + T('-308', '516984036404958828482096090056459410969858910697997243496259251361079985076443709267317847242129290643438742396', -1); + T('179805847183633847438194.99249873787321719770175', '-1044247574021452596915714111909132257910423096527567', 1); + T('123554101588320649544216.106518', '0.00000000000000000004397994853294475245700390814883392112100677236773424756659144675174327699038110126243806258189173504', 1); + T('-312827142310757997835070900727109666586292473761969938151984196401897529.7967077459640049698', '14093333248931096650.70140994553674013659186980319834246516116032507700519477099803787321480988634011220877', -1); + T('9288004658713735991395448766.471082786309347191997997975323232039392966794167278477200470135442690910', '-0.000000000000000000036236', 1); + T('-5003663162392390422998559930744815950712475533778862767546033634736239106865398.34200465736653393272456', '0.005995077716475462', -1); + T('0.016952849058784222777545704550635491760401113492836107817192230098750165112382036526736941511441770759965884476270435716500782779545192104844146397', '-214821059260215160489474.303370805896558958575540934636712555791219049338778586728609565132509837009652696', 1); + T('-29821131523003664342065669422390700671001522069654500533110790', '287183970895010462611112222181497807816953448196337091051099725372640836865215266901010504439100294010735018', -1); + T('-128872.71209378812', '0.053283411554461586465632620143914891566173223703579219869905435200516553382946461331422076259227430115354178', -1); + T('0.08775752449855547001537690223228539966158257927867747229093074060191733122415129411764', '1333896222140748443545958875369018385387665379713651837509817389114355723402401.0775181114677961790564570079869', -1); + T('15629811629486124784855833358618453024981468519010609184558364167.768915691712343011342006201865733766347105695', '-3559856665.9588532621138851367041381438359281318430119518966199303131949113094567635577699151940255', 1); + T('-76654490432007487677111411474359324103728780911984821055308809497501614199876134', '9830309069585260103024961490220561448272871874066193433860218963579073519151392.1834947306646', -1); + T('-31109911419411460374391974256048150041603191.62921550390052930006782191882078004773451449319', '0.00001106636466858', -1); + T('59412.47533', '-39255066756843933387643056770701779729.0077716008957107251561', 1); + T('2662712418298080979.1948976333080', '20186609635162532310360175381112691215793931769846124087001563989679.289555957816471233930494954952811347559621424189186664143132', -1); + T('-3.389322169362240007054202653154909275703397214107362913016717989765940692515391', '-0.000000000000000001020953040526246078334443', -1); + T('-0.00000000000000000007374487372528988414726674382189607121675122700289699190268421814598374167900942667245468200111960006664208395924855208365497808516088', '-0.0000131144124959397624156431920723496903533632256118147633612272158310284', 1); + T('877109316442565059709146872571994508553392', '-108721.3420464648885227659186804342432278945435989574916950', 1); + T('-310820553664742286349911323220568418134747887975679788573390691884700762375565019784272806.28132846056923331782638419840233371336', '-0.000129907852986510765050318657102730436310787353175435003200188740238798817208048019233959261195408801763064829045531860468977152903483168', -1); + T('-0.000000000000000941506813198339645372998762911530208153055218698117008973604076971894165172184740572845955636588', '0.0000000000000000035524983724808596360636883393862678354781', -1); + T('-5.708582962403979536402415075748013664386587264597389537125177279692027025', '-5444494016350641630074.4592669873553751386488228125095493679780365124590363918476034336529', 1); + T('1065934250.01120693', '0.0000000001118603899195807698300785911351272000758786456989627596648367020369673309737349439920244363853300300', 1); + T('-5767260025207073188444945197413274423501738050189735884547730160156', '-330580305165737252114656677623101326542624691273133923639274155802687902056877140616096326912578282576033.707651495772456980156560968135871591663460', 1); + T('-0.00846559920865320709178796883143043054766377718918477778902455012013929978343738333', '-0.00000000000000277568352085571198453362669761349413107250675031694958277194', -1); + T('-6918667114.993', '-46052052220603902657877827218788263055315560133469865149768526595441710407900.57985786910904527268305318771593273453522505547552', 1); + T('802546912863329952116633224748510353570844472458722557014878400044036716183048576512202373334873328024319243274271269741459325940236721', '25.780661731282395351556152740', 1); + T('2184816382096491338787830715753.096367163048963598057691886397682046882303288589909079888897521056426702007482', '172169492388519739357027405423396243714.9004204282430309366098112447812547986135720071346255130203678718947804', -1); + T('0.008529045730082055582061059599446072673840302070786925367152757187979559845183911839396122993813579990676569522462800526002564', '29369561465233302592528037897817257355792654406799947375029638', -1); + T('-0.0000000000109017743105447531682', '263922392004884246723806322057980218525495312.37380641189784114661235018695096998668551216502665339669331921962931477127511', -1); + T('18149660819867833.776611203308917195146919391529441', '722175581734659614727875382644495.420521458331848034289', -1); + T('-0.0632388130646494', '-8022179644458769940432045379644096328530320362627149758199672304055490229348414207285963636896546168', 1); + T('-240884.4266125433562152474546222714299798660415870584341961026', '4565819105565625429351609469953039462154313440532798419344406123', -1); + T('-620288745832328944104633174104780618530.142289821594467', '-0.00000000042763677901729875137065795271947506429102070293254358849747074726025655222531640583579591035602665241003765385226723638432242517705', -1); + T('-0.0005997232813686082699072690646851437237510751191877857078487507971064518280118066752636224982626066803761438054710648081819170217128106038864606666', '448789772975807181453965791618344036709371894261789527483851520640967.564734687953462805464508292237645', -1); + T('-5944.46084192814621653509427362663260065275976732261237211575829369239376100996606356674502186726973297493942586399515155362001241057364039180', '-0.00000000000497735100370463438660391749047107856740436707685228398464338395009618984454240220388539', -1); + T('14161446516382225835.7766', '3542370132472105378163771457970216052165648.7425781268389210107209726519645230419709021897835457608593367579978930689174492450922488019354946229559', -1); + T('-82802195741411961169504411985695677333323242354.11983177229539369704405186974555282', '-0.000000000000002144832189233807282719629172', -1); + T('-0.000006784625484274469162301558877626829276531242437512334202379799727636918702695926121552306634079565967137748099137484258', '7394871143261456851628981304387021212671141137347474914493372160821.849982460588305432064962', -1); + T('-2', '-9577480957257851728668158925285617815497407658006869447421603583582482671861877265553874067890434541077880355621667743910295.7200699525124188760662', 1); + T('-197708341652218617334936385971802975665.2650590102', '53802911630665345933342409174160976109848064320688374526798452717190686158796876613968866779882767043999203016678122719894918187.874065', -1); + T('-38072823817863136627991695274477704.5643520430804929832270354210126212790225020895173826266131214755461222609225019501', '306508739886223696721899282220346649.830346314255', -1); + T('0.000000000316191129355863756434416730315412182337261365809876435613199367647273178078857089451964614692088016490008532807028204058', '-157162422306489095125228614960816215001360390504615263163200492537376167.697035893421723100121710027972326561445029491994146118409598263141950351594406', 1); + T('233976544105397.53972383', '1125648.85', 1); + T('-4130737000.0498428402668398062658352051845468818656034782938669910130276648346395651', '-0.000000000006241094763704769356703784', -1); + T('0.0000000000027889130336186175616581318491830441190499146641708159643961020619163561667', '45180.36604064032026790448358284110671357633387319964786520709792147034725656798271314354746304777783951768808251243116293584625182020126910111', -1); + T('-0.001763577869', '9278.2276', -1); + T('-5950168542955097743177295383964350692.905100936503492816358409770353723347472035487019625013276257808231', '-0.0000000000000000029645447547400994864011386152017637251837470928190914231982054201322347159873722936132649422634877469019375233796913', -1); + T('0.0290875288731746531591535288830511501906464467111328224293851702688888742097645060905370035803256633571014353548442220', '-294026438922793701124734905079413788211.878160013300244423789767770679', 1); + T('-0.0000000014982823513781007328958069947012871143374337994272660148270374805416396160092178212524736096877823992919501659712353985693297357433585031', '-9868101235517540617583414816531196163394846626.691831830894', 1); + T('6182476112765412972256430874006641281681083766558867329491.954829670374057358958585899534', '880396637045385811179717244187902683321740830158884405014171018661178832737243379.99039995084170785275378504376555296739303042003359925', -1); + T('-160751704157218639705860194646066334461390616893.68299259975682214519324547685814966600492784129638821897523841634', '105578911150318367.008309279644258340186264525150749881652252235290292605', -1); + T('-143158723385187700800431662230078385359.73820852144937977467', '0.0000000000000000000124340639699407338232687471046541468558241476495226668073022571684081347728341350550106103160149578245741', -1); + T('28458452063254242139803200671296001714734755842622926787079731950.0992735055675190876673437043110150852937949483', '-35838408218375548738650416610', 1); + T('1405901407.569822238040634590968038695131224115356886126732238', '-157848156800682193772.423092237390517494814302283186221330', 1); + T('1343.2952', '0.000000000000000127921933329444723698800231745313808252600125', 1); + T('28853632715587493558858323118072822236165839078014960997892188442420732661028174535.246119951253066921883027355182179886399617487552776484774687', '58109.968599810577067693043679467231728516554760366582163143608751563852471056960486315505049057948977813649161', 1); + T('3.0', '-5100498997359905798.17245204', 1); + T('-0.004911663588685959180762975105547432899694263', '-195.4862', 1); + T('0.0016800213659346405237529123816285', '8.54847928757376802233', -1); + T('-279764958968647619773787889.6654810407333727462942344', '-32911490485080881220995744901356698586892447851187378752704802609678707535904977.2349682793537012076792399816515725811842024374', 1); + T('-5785273759.646965191309783081376893326464784097386953277756864344482261946184327330852', '-7829585551142601892881228597972545207045593119', 1); + T('1749468477458267264460735919943750511749548119353526653455735024376363076831020428466683780580.382746467817800979', '117808811280451.15173068945839587501615962470947002537366415063962231776', 1); + T('0.000000000020999785770461916630781325078925976998406955207235955893836098174359617198083615378801786560', '0.000000016082556089324398313999563719442315635940079534503288230557353323864912025891052353', -1); + T('480604730995226700516.8211623950807854777785418843', '5121637414014031413488780740025020869010447826688359.63388', -1); + T('0.0000000000000000000414327897716676413497790718766565633611669986458582853310823990011501385441729741967983', '317915031341372776103058145461905010362702388394603209158188747796318349497254.0341816356079223623851060840433597178761519084935102204279867720861768', -1); + T('-0.000000000000000412840046822276949148', '-8495.635054982676808368418113257375475710111078926720024154221406272685887058370083', 1); + T('-2197955143857705392850268630353264994616393635646.698149405979940304022731', '-709379519152508448101054642505472310149794092278935824702792668825161997157315768209798490103622850132151927880856147597945372566812892535', 1); + T('-0.00000000261844554473808606144849883800858347445837640490072295304861523742613457798612213017468212453275', '-4257455569092781990677425261987768564734341578600573323744310843721093.038484343063938561039832375679139', 1); + T('0.001067310532886835735948587831914288689553303108', '0.000000000031462310921375409599725025289890661282700997505119039922194159851961328187903443704235399598322794989000459030891087074757277073644206020955', 1); + T('-4063265657389255020751373462844579518406276172065432701779826406527190899149755.03517774122841922794975102464204365891', '-177420797464172487220237833839895154679.55011483488839278508767009813747588375752975369464460567647899844', -1); + T('-0.000000000000000001869682149225241953308274214537693115192334192086388308300459785925708765364103340884259103064347330742062108169', '-26575432925732543046433777343805635906835756.77068203591990998282191321647366170089253841793502621205827556969126543988080649772889793884', 1); + T('0.000000000033068235057345162857793510724468755088654739039376687590493852515005413160754215391838260423538076895754633488993574', '0.017513325024275361448809543357388556724448571616284966015444430', -1); + T('-2026236793445834948507161660525890822744664756812527.8835718009664526661197600010011007494858846013632636703661400114', '-0.000000000000000002859595745866245904331020489118494794587721260255748716684271140711216699026430746445835646820788772706657822185638176542620892759210718', -1); + T('277022415667279674349.93159166888354112279521767856918625662786507898346558797736030', '-735938929386893441493788058350316673108625777978459161969923997224585208026818400417362773709666810793480', 1); + T('74232319.567499431', '-56621962153013901078899971001172502878975414000348449901.28271290391851422', 1); + T('-3941963925114761115410393553297553624.53962931133021347646967837208017011194854908672954262275111689570', '0.0000000000000008697032', -1); + T('884371959410985393786970216012521351503422236180303629436107407710398002848795.2898794903243646', '279245072377995673569.57825740047951807305399484447809098617257475260300', 1); + T('100631006795618153033034251352672.397743863352629831700458457767', '44099488689948413571101738537602860137703950300410932440087945678445341219014875737401922780.17252689064335904983389027581416', -1); + T('-1', '26868582.3096831844134023012215433466422117521756773917584228132667216484693295101611945772014129671', -1); + T('-502223330837595.44379400944709999644635357228899069929988', '-244003493276454121687882461126734836.07592128039798251908581902930717022441921782407196457234418354328582', 1); + T('33870893120776524224787.26155584027957777911183884255850768', '7332984218265663155549396746597908086330161269696624389865650149280363963921535236843118406711207250294131459763.292451119914782794', -1); + T('-0.0002696984347940490398828397266594740044041722095889055402876873310427883943924936554247676452751022', '-0.0000000000198505049352941803865970937898774479162157842482374962457965176036173890229130068136812989525256546479161037', -1); + T('11790148948260649482767435943377652438601227088883805365070340866280933972152574199547632878971', '233346516936414547946433708151846303258806202438283735709824656199864024559', 1); + T('38681768069179772995891498403722822330048951280500540942361519429848268851021582215739737468318', '2282982623239', 1); + T('-8718.002', '-2162383841139137785874392020678.222654167998464572757082745022919124895302054425608160992223227660036361141753054047144372425', 1); + T('-488786545287184792041400596.429764766800072062963773425995630557595146308866924025002119736839163', '150349397895989857.625350343999955836341802520548691205621597531311186198090511440272682715306143508070716574615641968162130759726933914', -1); + T('-931924244656227219809405990301731461381455026788834465108077474984655183700894292742532304542719883873737017900061725370877671670134030687081330954', '-22590847661040395922870788012795560463738.6042785284312011175278095893489415781880229608749971180', -1); + T('150034078673021523537829708913856916052846430.677559', '2166077460871.389181941661', 1); + T('-15221173714267229029000823.870941799216310763467302217336309', '-1673674035036687535894', -1); + T('28462245616076323814547543516628503117353984931675274738003002529627.050280772564006057379343', '1684755069944063046468856794520.544285696374626', 1); + T('0.000000000000000002149636302695318031277254419779385264', '294828031937806482188347305646408178392144292715768037206520083084', -1); + T('-496433201256500626575612612181413775390243576650772463544387954585218643129869625320303924670', '-442160689638185654.4551347636803891464498055343558799035256967658204045507964302065922246141137529665782679', -1); + T('-129579775113494026315929537570278930664181731133208782701.45426943069540180187934763841772148976875003178126761049589822456645625031071378426', '-50960835972632028101013868729008914820797471866095853076604833015003479026669241141140168832519272084406271817729840163461909', 1); + T('-16747439551932269968419783516292565073527286.5978912153712873353897', '-188574355884266969.5316894208093252428', -1); + T('-0.000000010491592994513761160780', '-1050932951471917437885324587810501317003548260421160.74485123595296963899543431', 1); + T('1010839134920617276236285760745178410456.2249870989035696035968471032980500261', '-120594328581364716298488828.9424349293373529319017263005601621047414886', 1); + T('-6745237811374494493983732995517490423110771468604331647114513524140869041111924.07143145225484722086621945039491878138053819409423194', '-78096848334747442570326820068097176668363000702119878505808158486202624573888559517499059469543996762065.34515372475365048555320336061286656', 1); + T('31641216104195523119323298187454596691469623', '-0.000000000000000000258260225806808436156489946400669652403071801164964794360836676150308291521494089553214811075584197298817277602', 1); + T('0.000136955496160497638501494207878559539838907773928113609973212720681874384188247121736519967860967190729707', '1131456362979085.096849571030916258593458603291865925658158837160864', -1); + T('0.032374350209810222548593899', '983665612534486391903069992076771767376905372098300464420498293252673383701.36', -1); + T('0.00000000000000697749637212917655601734843952168313079723929644561400713832738344957256670570318423980784737919478703314324358395035811505647250409924651706', '-502882856311579316783157003.0536395389', 1); + T('-651635600158790804410143491638919845677600042415920405606770304907492557295578675862061924691925913075254252734942878', '-60351457742518762435343004631135543741539510674840042991014451995652190.6417249701705696670', -1); + T('345509817388294075020401571707985302468577790452097230.67244674898512863573831730550161447995018107519203024', '0.0000000000000001056679949312910174815404770839634025694', 1); + T('-0.0000005133332646768106615086635756288330738260842203558000626286730150325018694693726708199958605568678693224332247500950661171742', '422219598091.2132010626485059381682644362524778822675322', -1); + T('6209045587577773276464516075468480344927865681108539547852034571272194268785056443405885354613045847441750653814344012192541949', '15400142567569326379407593600878161357.3158267836117765', 1); + T('-0.0000000000005128844809243836111542045', '49208450703085595317554090353487521994302.58448330950634435909161638725929613848207952792171018392294484488157376401528860', -1); + T('956820321617083079596327657581942071127140318928050899898356414048159721950191.8612258', '17278138380102047215838955529410627.32350998142532', 1); + T('8582364', '774.20922956184858799', 1); + T('23221742968467826352973222392797444267945245449112426217441284967014691005809044233558034646290606716623338692881049684653084513', '-716575979020985.279557138936348127028057421241051031841307264455042608637743866536141586489408312326413837112549345', 1); + T('-64239880442', '-0.0005757706836762797690172810781616112054771449962376286638181876626306753967493356164897064584864421775', -1); + T('99890913975286305568325542267993806860755562436873534002883032609372302026293419920260643846174424961790', '398563986970697552164623501292881320978723925743958528075037214399734729923685025233165645512491551109', 1); + T('13099934563976711709606830808259471671138463230508665866920870667879022883291570961467719262054', '-109826842662920.8298299283611', 1); + T('47185659575228280475715212180191382741276156908324186745372219490089540417870210622287493079401094749070195008965690189496257.6344290361', '-191311112886267605129186105214676155987804385676502850167374976.81421158641221691', 1); + T('-97492338884677999782.8', '46090.6038891563729837049651434308627371886782595339529134134103138942512716921751', -1); + T('7375598828163292955262802188069890697127023128.355980866541558240712761760425090656158086966127126201418096188025050710292147394218656199519', '-33736162847546417083662199915.96497427321380545945697607572725317230293032258054213443', 1); + T('-218160598947993698294987185974447249912.89115498', '0.0000050015875427779244596032970734068655494267635032', -1); + T('-0.0000000000000000020', '0.00000000000000000001471670935923077384861565636336852413366332241046663589863103491999420020658770322413837060604', -1); + T('33129180170998410129893543070459417633301197982910425.64606409078111879170213981476306214296822988445339041520791973076369873', '948494610332137187926756645888688419826755038831255074436327001443802251577207818445858623129.161046', -1); + T('-225952021109392177218450439017431752400942775732240194661463892287355070596511103556052608754481002242937280547960.167872771176417481374193116703938', '0.0000000062277239670560908419969666371220135218008079705746207056768105428331985213283124653402345973621907360434147807551859292787803296246381222933824613', -1); + T('-183573578911405697023556086514609883893306795215626297396579687619875304342323017839805206126604229488822003279.59233204484561014983371', '2633566858032007647133550571239916327299194373140075907964398383480304297038434790716388124909149725536956762553458755051740197984938091354917', -1); + T('0.0000004460397545970448393886895088191903634042039815', '-0.0000000000000000095347818761825827527731028387911543955632717901933911587359863970181690577102483822386465350730573340050175224061', 1); + T('76836306086273960905931260788344443215614886.50168135779713336', '337185798150132901588999178764118776.92309780859993696138620', 1); + T('-0.0000000000000006793099207949304687582058497331137904457143594', '289472321951375436507478434341358.5306354511464450479041413522186381', -1); + T('511444049261329873.821317987544416845423877441515588846906090911', '9490010.05', 1); + T('591713007334383637715463717.1291808137387981846811658128330485888980625856216328030564698865533394807126005192249912613', '4823684942063255528803421209.107961034983048341611839235146', -1); + T('296954671497441320436.6897774425834586892939399251192320626790853969384028690679126272812703387657033030897290641153152475784706776362266597698', '13766678990.5234817', 1); + T('-133060567480374920488783510341269926348673610429669534346754755488082205036746.875386348007223776953779852911928', '5927', -1); + T('73932844006251372722325798853706639310834528653981099571578123750133433908285265618.76202624654621129232002', '-0.00000000000000186827495500328964616880687615273132151323886740951058615687142482475027687476', 1); + T('-146141982259082027635792785584353187175763401213207391', '102024036100851932865259629376529498649159346459236183997.282137015883624412337321294996984015309550913896592804940099660111659498774210', -1); + T('0.0000002414815', '-0.000029758446843941651956375917491305831593454765385140091979237320013919577077698799164529328687158159830988324', 1); + T('-210151030793502383014434760169391310.18854098497872', '-43132900782065', -1); + T('0.000000001881697195168801041002308195919736876762525914212692483270', '37220503866578932861716463156502243937410265932050985593845402005265927199299255.98344413682304736845548607869635917563352646023138638403944588', -1); + T('31521072328186955772400060885593.59297383310829219344810143967971187389', '8299359200986653935603999653552082057380926282505088802016107969552627375549163347904875168992450289735997709999832779519890573966176799923577873', -1); + T('-12805934102.27948320410636171184694060430874642071534941054923893481501134168009876861420438715119150275015992454925505523986465864594', '180018001880206592982896205731793655606255072617295111549612026292885879170444460136951078426.390401726986399145583973049833043477421044648', -1); + T('0.0000000002936016400407713831598517736778340369883558829401128461721111534068980221676584362479994606', '-238280848623349322403710808897808837396452119.946711492325936626002256793789239512952', 1); + T('-46459704414418529966558677894175211345197518419628.95858240822563998829696554747145974856949749820184367731693913940235039725731', '0.00000000047722733462292648206074425', -1); + T('-541280.2703925225439019884062953901365125819982181630864435007257550343992637766901456996336131019366630269083091648294919635719143947548766', '-228034281', 1); + T('-11760472974851709104383782.662777303052700', '-8856003943296025750571072176230995254098814451714178705187395377177217251293203.902574261722648560357498315885671879950820620988638695483994173', 1); + T('0', '-23189877550335243259085364.53351434706336084256915879121464887999578773388400557820325828544547283691169421254622757350946740952577282739', 1); + T('10223905995799236594685978417380096525435726347166557843.918727523', '-0.00000020607225637494236034677211524295904660928630761211510648083699692056857979868128566729857282938350504504013801371138876743028895', 1); + T('-144846563553578036105235976816', '0.0000011270723657297532847257698465013496541743158648293535010828229786356244296523407610311043996299040', -1); + T('113032464106654125041288367328368585073827742426563069634695010033138913322259705750701638755775233614410737200187834799536563007432367297372', '-144536245354049112745081024.13189635154492291842667978940', 1); + T('7986309849142964591151981507150767', '3715212599762263522511060701411.354291876313760173927039871847384807384499566193464909380', 1); + T('-0.262033701867790308', '1000', -1); + T('0', '-1298585670825508993270154522126013719917570633453070690396116462598092540996979333.640039196743651565307879856426743091916875212069013890994736009036', 1); + T('-58083440833403163271255364703914434694411113794265074103509.6210028470686978950076079624502733808613037706942237117077742320080970570', '26461831023083173643510121917518549069675457904421183614.08670353705231338613403357536480', -1); + T('-87806.0709005423990183741480799', '187889864.61083754173871187582049463612826040389116069100443073768518896580280063099139409857625583395994', -1); + T('4275109636212975292229007218589106.56555396510879605313848016743912486618038576223178889446864', '3214123466827664829603412.20512221377304305308306990229', 1); + T('-288739473055433343953882.44471863361121224088386588796752', '459693332791964431347.9722370509420311935824189749201056454335904860013482391961613262946036613056710507279548844104287', -1); + T('-0.01654798720757644256839268748011987903667764384686077', '100.2947610454173899008060779309430287884089908', -1); + T('-0.000000077812076712634332162149408492721454465', '0.15399229905779332095662380969505220763061741414245660138302708596471155210747491437383447979118915119014137110102148592', -1); + T('-0.00061444759912181780360634369163380074336309374788470888402669388105603516553991054356526066819440108624500372932833891457915', '-2586282129839.81183', 1); + T('1498895191248177551510700.45606050', '74541212431266542382401488034545718935193952273089972827104963785323484723329', -1); + T('-0.000000000150375415489340749507967', '-74471913380513166596942427426446874506626967565471102018090995766517502.392226389302441356759681527055387117306583255386245975', 1); + T('4379864196478185231971341731472.903266369426998276391', '42212498773976611477583491576270132689125437393337911684067430376578.9984194168847407989', -1); + T('0.000000000188630716195256390543790417086046414407832502506161382231731603289140796649753995735957193705662041873992884429720334656191370246778667100', '4277485611862341', -1); + T('-46750737.49359475454665387075362911038', '-0.00000000000002083952762905039971040265943804257794973540394987926928714383260058014', -1); + T('0.002544681009249525059932074042166748733358476604959321449600882225721113427484661673735862906019211485741647391857669673771533945502723', '-5', 1); + T('-39295905377158687425.03568106089356864942579967692030891846534', '3835978607575268175581954653485493945307702695323573026257952124899312857138636697340444576247772132369597023211', -1); + T('151889800427285114033292898375825876633959450.898086899995', '9713506827047238971234405766285157635347795138873922.72495033960', -1); + T('355429208933168784293936130635740185914092143011019726030386568363136704968340935328170476421910883336592097125452.6140400243618816', '760.68473869704185430726326613766', 1); + T('4349545620740369674416209302329779414513372709527226', '-512153241030873003118738632455693535388671982041905647243253860149370383998111505079497094180417460533664786733236996564989680995504.330957321847087', 1); + T('-0.0012688202113', '0.0048010468030358831203945427786584092648853082093217561611591674776303185468226054026588077464821415670427004307009969250474179998', -1); + T('0.00000000000000000002201374424729105772', '-0.000000000000000107033257309977239769384301947', 1); + T('-668028580968216191486131.21', '-154531512790783399365338471682080.44013066134495453500823018524005204200450971051972740809812246188229676956238', 1); + T('192599466.2', '-20366857500742765296701334.6', 1); + T('58248290.75313561203877075178536778204022054792568075594303791595851558245836135032032800460252186270586976386928888004344135939', '-99168518734510294278378406838157005789369254297707094', 1); + T('59335044381412481489178159118129258391790720120452482882085288454894585878242302678696', '-85648601004388619627800968402621796697943181866275450369784227.575017140', 1); + T('827495050694857970699868331857360105273936056958', '-1304049.1408', 1); + T('29433574477411346954729176312712201982215509.28557096414206818026607603358233255484946894686133047229727976564507069176749268741739111176858008', '-4633956465133.314261800679223973287025496806457718', 1); + T('12686266978287967082649588107077967578421597532.105327951152521392921904301941867789915864450059477632284', '0.00000000000000000001680216625099082611964698924207784733377923277771980687646000893625476714140746', 1); + T('-3567385737540210557638345348915.22162', '-0.41824899246496739428149857672095872056590112993464366988860723481961972054071505307907398495301014281825421217207829254327015496033753800645844684', -1); + T('-20371368.63017582940071081998', '-6610141547540851.2618872155', 1); + T('-2180877.248385369504597407913625892', '-0.0000613947546197329952823061843887350018748897219554852015448742989981', -1); + T('-25661548932398513068206775462417323701105944198759768081271555328689916551910650501573584882621966781961436302774002', '-0.00000003995848665017188509548766348670502483977228426250447700812058736871198968592250144174490260078313382961664', -1); + T('700915978647576932038.9889078885976161070216182950', '0.00000000000021269845796478757183434520508745974681450900418628307878284', 1); + T('-1303382398497.931396748821703576829828779945840056689872555876833881376022696155060976', '-0.00000000606644551523073444005306613754631773003870840662806994136979597086670031977138946305205049690099933090', -1); + T('405906568852917813232248628119090577947475734689.8857756127121', '-0.0000000000000000017866056928126257148339056150658060966796161201920608159514292519569333482177040033662644', 1); + T('-0.00038993118656334050327105429584540674169988490158156132652011044524474264534283653197157270482671918112238649334367', '76860558547603845673402706122114999956168146955310350.1139970001390673843778536118055735735229745139379062', -1); + T('-1291.525514189182260086081242332267177585013147', '7647914106851593261.11793036077055947', -1); + T('-12612.41363549722', '400197529.089873841323983042909768373129595576', -1); + T('-865231120.42305', '-6101.373', -1); + T('2135123.616487587', '29874778328.687203196134017891857809472541023600394892', -1); + T('-240496804491219672098', '-0.0000000000000025537337241596083729560310417637018287262621849603524145688120537226170023073025335809179309534705621002788486050424760426340206294822698773287401900', -1); + T('0.0000000000000017704907457081494438152952475686979995935351712219723883521', '219880763814382422594281439908041083191286156495561036270640605626481755929973044677878194029641135689892298021934326005001841305991645975944158141', -1); + T('5562146843300977194583992103.3541447154572529507300968518031922002848845481', '-5385385490941349985.1728987920292488505551505952939981174051495333139609581998031404277776446303204611433649401136931468794308049', 1); + T('1752290198851473333381.229247979245303911113358', '0.0534488804706934281687362', 1); + T('-92147522191432001037455421266530384324844131821397435747892093212737588941410897009039880039.78536641975123525885676036525963399053493', '-94653495796270236528544459336546136861980560329213238551234844', -1); + T('815487408558261730721844283383258480879914323551992615511114634084667366.601583324800070891427050782659806100748059136244157137697115166387443377852094', '-0.00022352674800133403772480060128350715370257398919546352741164890695654568500835062253326191042712002', 1); + T('5749689998455617772483267', '1840103850357796786136102.71620', 1); + T('672157900280788714930056355200674066483401.81631034866806625951256911099862832274306021451656220978012049245', '-114154619396981089.1320525887956211286048722734182840690494935795064338674221730292522680013566926250582468937966455149652051562981', 1); + T('-5494699992405395277727109066553255922407802868013721980441109672.2745818896946274305742059294626478254', '-0.00000000000014929679588889355091556', -1); + T('-385449726074149547840530583797934937181715165939491867569145644860713885605.5264721791956556383239054663012165553', '116230758861245831282.35469658891878592281877915896', -1); + T('-0.0000000010121528251165650737286665285385390272407652360958821083299180952068082201020218158477438177846198635084848930173', '0.014883196009565080385727336397121811890988734916589439190153212627665118520225526554901248590753739002351947839892439723714675499975034', -1); + T('576494346991115932783888314153281740149238819119894206393647915824014580263476342693398091833799159.523480555625532', '-61995543200977083040575763967439592100731063156984228486.38535435929903297792354585158311732314673482333', 1); + T('428873250.560664', '129875284926470970222879379103280436892522797190190796664400470658620567525600201123074551979893854516815261154373333287236970841329590591717797034121', -1); + T('0.0000000000000026870297704737006603169618821643992478682185038681614', '7820302396851385.87642732170367565885193676356664350349738707893636875852', -1); + T('-44.520760710306309879865713891315672271920022787764083922278701523625034485320733717004859', '0.01439428796926164016128066457640262141108921179147399710995842215316044506980299877008384374011689600039480155501049825404811115221757434056043236', -1); + T('-0.00001201118968847844', '-70923798469593760582530476230041738134921398772057910273281889901965679.42358', 1); + T('5843135287113736528157843820316744502939564526886546.0047195639475992647092375381054267129062468983623992352021878814209422214992623', '0.00000060757624666484634102563211416190889408777041958621929849193644313556211406046557886739314619795644390894145644323254283691165', 1); + T('33939864110426158794412428792.47956843115029434531711836467014982826884747667863328480197253623707011712168926394003290273416608578508', '1064677018243359674559461311315576643719466298112018077397283377331298.0670918844184768217715685', -1); + T('-18912', '-0.000000000000000096633006285663483174785933757971320277192376117523241919936331742434935280501727980661135723065936406743562787980', -1); + T('-2804344532565505375601200736426512335574579247149602614364873466432310221288307433080611694637316033618692401292292895996797408039558038455193698965', '-893720293743137.926655354747113007920084052973512410160846993', -1); + T('6764.231463798271135956814698363174738947427445137382091391208755942353390328768698827660861776845954371737556198135', '-0.000017597904259456024333678008', 1); + T('1.76481649511603874803028298380964499606482173', '118286517946791234440962575129866748867383839052261404590790296018753.3551', -1); + T('-0.151932239357399305076147843155550323032938508228686222300958284775879980694971306303640', '829380294.1737767149859532540', -1); + T('0.0000000000001950221826994411075608100769821184304540479623634687640815964857394877326312992673017060046339509291259090179143500537', '-0.544207807833617254080709456086651220078670208155499221226255166753832289251475987493675', 1); + T('725592788412654390.288037792170665708343668934945817652577358075211667306339285606349503938607834479670176', '0.00000000015727681596554688195', 1); + T('-0.0000000000000000025828037795917808174174022628073029870391944907806479693726568881606935015683570702939052853748656921760835', '21479058581519114842906568693885000707.948701', -1); + T('-52318803831972225224657668090895711041816508172.8', '-925177002627943141448550433420188042136738.349349239422830476016023577725025812189', -1); + T('-11595020947248091113626696070928546894526698503484940942.1', '-41743727850266539324572111803709486.560814158883502040355649548872806865758563538962184415', -1); + T('-7945674732961469879932607763620399739445214326825952225210024765118220584355530.0066649877944415388056', '119923.63269933110039577637236168360031988884136', -1); + T('-667465135.521', '3600732041889309108089077145627379409284885679028550049780473370754192258840745952520332031.3349195', -1); + T('-0.00155960825045823734495157128817221951179945771390542271382698231', '-0.00000000000000000001547806123481913844128531558529', -1); + T('0.000003897178488116939077117755504046954668782', '16500182036173066151975330357363436305432978597893641854622839540840890764939718449396748745670289759248', -1); + T('0.1066389596341454370563866669022345823619309097241060909463123947382090196267402259296965465474236522387304285231', '0.10554272066931320067690515900139997226174735430579374207101626812245423053687680829616012414687316642', 1); + T('6311170580654312262766895923050966572616839302483216469449041222764.049350942968378224002193794621061821564299153542544', '-0.00000000000000077721943836572688797512479214783933404468328060', 1); + T('-6473241763588535091671209.6136', '7109946613265111655504066906893421227308129623587629974790367852537008848978739884385313982886613060794958166034914293662450242266370.8', -1); + T('-0.00000000000000000008039492192574383888482371', '6604383032.684474135999128100', -1); + T('0.00000000481203569548875502622555282569420051010869127282373043112622263', '0.000079591821964258103100046810525409740211300100386397203145583898461821616', -1); + T('85823943902986661.3551017490436085790271996332709765818729748512879602777843718155761693739465208300732899', '-353619674248164726117917.76326235745255122675778', 1); + T('5705133585416934331.96', '-692026459205441284419325590512301015920380275971289655588744582196610452918836386452075288', 1); + T('765287548279977385673120140382320109443772413316008156351512085669539136561234228', '3378412883764.772985170', 1); + T('0.0000004444949779299910287084862350709993', '-34895239912483248998398456782819190020892134145899514996827417890581872655651586615097978930.28086971201242063913206088020792', 1); + T('-1808406236.0007411517153424954283974901033587835316874236876462017822855632147931437015468125518156654752077876232166', '2013566681929922981330.04601046976892202943272046385', -1); + T('-4048492393774402282450581898756603285777654317041291261832380799275797348666467089872455453070620263470013031356830428683981574', '40099412654259527050657495952587386178575394648007643060458676.1111791491498057728067622099748', -1); + T('18628915136749176154223386824673062457919.8848077693485186034', '1513881720435328747255261588664662813128641748401.955878978503857272440117644', -1); + T('-1102715066055607391570121246263589329875629472981.9918971388267193266893066174800566737394182297234831718246217036454304180215728533097249', '-507466746731417668276962401930968304387149385.36733202', -1); + T('-0.00000000000000118867735895355706324644741565687516380934012845606449840941596028463353814792777039303066705142312804268503326549993460075345403972111834209', '0.000000003436556517', -1); + T('-0.0000000000000003371984563895388548767205601272951518208249335621347968700193296778014696768556195', '-10274945223018984756966657952438916138616218197724933584616138553807445939342840685241904451258371', 1); + T('-117433402658185448482194314232639429126502459349575210459884357.7406396969270334883393802839875697129920877876569071877681298097932152998', '139976394189242376947006070215378416965', -1); + T('-0.00000000000410999246686291289919439285398573971906473918801526723286816999153997225640711464165501375618395618072', '16857754744323811301.760491652997818191680489759', -1); + T('33433452292.54424975454908357494747405074701508', '8269909530911601430300956762711.49', -1); + T('-283803212239.5587338007666372129716405064', '62180632632.44', -1); + T('10816304647050009681046881227640567650727092915763836975846424094420491356952792053535937227598578243148.70549318016888506158632243072', '23601245638793.9051238958897803858851422315671924508733072717037856936727939646826421249728398919007381394104232', 1); + T('42294808022511884510489816637065479125.12', '-363076851403252016896121227284974203057689376244997308943536424206680183580753707981871249845116125872661250598932697938367496845913845', 1); + T('-68057065545315263763372804.6037879238251', '1849186991871166819', -1); + T('-0.000035422370812676577438081958090968761523064683396142544733667226170582703', '-4886104.52695396941765119019781209957215550071392339312212', 1); + T('-0.00000000101152922410408185', '-154628891267599656838.7544', 1); + T('65053724814685425792643437308.22975034850682336796195307601162523736', '-53422542502015829097671319941538573640235158728608612260590736.22285239457330945763643215406922589852086651975032077423269936', 1); + T('-679014.049691213095078512348789233953999083752383', '225334567529.305999982841966497994072752683700827916742714614297486', -1); + T('161888828328851641417083878458443592052215516899370606619738.36510326324072641758387263980815868443516315712557912616842124441627523', '0.000000000000794258834390076366776294050001062371476872317912962468519864454127907974470307426421865511092144225939633222374776858411435618947559', 1); + T('6162233670505318', '2.46634168', 1); + T('-17546683536111282316342996627368376599858018325962648.6584700382630574850314398607683745', '-80802643256926373101335717601', -1); + T('-2352353228663372948015045466172105999.8803110610547393595549', '-0.00413964594253429181906299898033064114461684408903594038085686221908651158875526470347', -1); + T('-0.00000000000000000004356348734944267973648639107', '-229367364784425681697726599493823156989608369042481979275254.0884841218159995757788959686561159388268846646565860174004081151385', 1); + T('0.03415457575710915160220105512218140806602929852687968668616994967273160715684956613423796070943115985374314105903537233', '-3196749067837621585326283843306992801307.802760498691831198070', 1); + T('0.00000000000000247413037298398028929363025202778579193861821082044594455801367855787265239661476744458519065142081672257010', '44289.8', -1); + T('58.3127511093589129668', '-2611133014902015509360439.7129643377015936731377925522222539911964440440574400407593', 1); + T('2406843722253168117192934590291028781069300073383984975.8180911819738336792993187445407442782766628930100725', '89425216383828', 1); + T('-1099207.26554285655755079330147354518979139456850179395304634417125044240102198026939759672286', '-57693881703804010298386947171610472014880394287849824344777180903601511889954253540830976322899406814539377606313895495643102769.83016248376', 1); + T('-103994242142241963043476374672302180239375906114700919981156677510520442173528213340300295792463789876630187002413998412270858178265773895879435145193', '-0.000000000000031367951905170647781165822641814409694938292', -1); + T('13601721526443719522926093787.934046503185812863872716', '336408896287174621976247324108743253861832261859751110841.29596909381766540334693808958727478573401402102365', -1); + T('-0.00000000000000001469446157409381008342426261966534408211838683793750555946023', '1522608331828812962719302028703469509396748384370489182706462020400287150465785830318500446746747.6460778058447560089208164112108681301784', -1); + T('-0.000000000000000000292119887858775237140722034722696650983806428229978415180240', '509639.198703', -1); + T('-581568431970891620674020761220785883553826553712684204299194.373663495926444491785700217246', '-0.00000799487760788026644276369061232209772149143590654545891959237728077188021480038402000022139388923280596639559887', -1); + T('10576907282617366683945326959370318422762465935099101961150731963334451359367980479.1711956', '93657934108538335658469446550891.33274514', 1); + T('-50779400127432260917442015730665305.693827342498804536', '-278.45484183476521400133060414619839700534856688357221666606163711034752645600781353452713349748727451466275731553', -1); + T('3582739', '1784.034', 1); + T('0.000007142491492373590519731802287885445743376047761637981513279821695831401679304444193667604938367015426898382592976966546278775', '-857115157826.2112333616148328187721853506794021', 1); + T('-77650157.77865724663131558543954559605879484270600244615464493178445559943273821677209941465159610044188242984064', '2', -1); + T('13061793010825779761489046240048151130041423831782034351150825980261340689146749636490271350788971', '736646718813268852209165758615425625665840070879918346', 1); + T('-0.00000000000000000027818072125795253670533401340761483641172537202336362918391508577676998124879659850611085', '-757589742121920450871623430335991255479320533949980775000891583727233254637570819240641737.1122814951925898', 1); + T('-44805268190729632531865.6419780191402046529767672', '521251239499704005781275449094278641042506.3156115052302463420952777340591939364886084763948408205859384130509381650790892060575', -1); + T('-9.16848439809259319052148', '31804088022084780543225640840236725226743771098722292010442082451771.032053418236761910351105445438902994094212892937018928', -1); + T('-0.000000000000000000015946937934151918888138620979468427775546067982434246390130160312768937674401605951766202953', '-4384.37908930790756', 1); + T('-92.0', '-259.1103140486780473992', 1); + T('1829937784973143537783010100739888095502819577009050487909478.998339486027387102532064478083066161408101089244606741999372262029117753', '-0.003466165765516931483921623859725455065870694872586558033998887390346792964596358533056448297144859327570003882840488520157483345744424112', 1); + T('-0.00805730350870332416474130775431753596509549127714076482362747443329333536910223003521268991503827851593840825424710029978467616431589134837782', '42859237293.971714652490950575144555590003616042479874429975572476902289269556706761', -1); + T('14687687102617235468391945141416714260880851700178866765733538453531920743076697994482038.87810993130926761650695883946148734827', '0.0000000000043032139506511692634953935', 1); + T('74855288934335940624584700729.917818635680622422883644107796356783278951273', '-0.0000000024412467395238501084489165324313850210206104', 1); + T('31534804.882', '-107747802197986688050315269264964249408206715357274490951874', 1); + T('0.00000000000005436941845644294932431141904956702081385801461562015917', '0.00000000000004007409174643597984346027883186426344264183588051770037027544931312637485537674353258405773358832901037004', 1); + T('-0.00011401428096591141304086733093089782287404551974129345249206250034253148833654960406327854197854792917730041450409869184707008198528552235035954269', '-0.00000000000459090078596662894002343875075543959122946654955353856571293852319559157327916251', -1); + T('0.00273909582639870092043322082487911991953970891824257601379839286759468486558682979434046468763206507018460313471628142789574554733', '-12174288565178653649738825844.058129335942051261437792772494997783050076234522869196457', 1); + T('-9262163133525541289611786411236936499015108574335221070224302067951107010106083554045354391502928018000897936875310.50063711574683', '-3415896484698655068520389216070918253', -1); + T('0.000000000000775402434179186062776610592070356150419892', '-10567486649730728013576719047602414874836411929687810999158959874142512326985312695510176030747379728213278021', 1); + T('-0.000000000000000029154845261288138429108167871851762042605685339365274521502654014100103052239316462201294992571376102', '0.00000000007215519703698252394014310761077946308103265208763107160443064766528615271128170860242303974651987945813780869799910158572025', -1); + T('-0.000000000000000000038919174519392355544992733520', '-88873239905390283257526586315278488079494343890098540.14371840801969124535809059283682022956915824484887795', 1); + T('-2956006733486.050322519495910617171990967860491609473626923225257235851006044563856964764255650517769695833', '-63580.7607041571683406051338311837270934135009599731889857981100051635443210692920253491149463594177586818089', -1); + T('32693297930914576641605085.456147160027786641825068409422582642333463646578713263684862420', '2046994.563394388211', 1); + T('11585457218048617716818642470310899619712965.757545839437764987354930195688915926362652526394444871037', '-24619892752559156706974656.033638967580349721627125116986752963277069337398575115657062385861834385940136798596681542333424665238168009963257109112', 1); + T('-376741557864930127185019858384127899674528918618.823922265376740844074653162948916457933603707043182097866', '-27589133853961983218044564074996941310096508288788452470863.709706352', 1); + T('-0.00000000000000159347', '0.000000000537720125529707861865661334298939870145', -1); + T('43035909785686641666336021702781351129892247747464104619212766477817619033880081924506', '2814152544538521977901831034701910821444771265677717331726406832990136388071257847595368675837635869488930703285050684920041246854650190323367418', -1); + T('-11985135.8193427509854988143005112183287545730', '0.0000000000001803274435994955450298871518541291278942016627972113349919772137870618374138716105', -1); + T('-0.00000000000000000231213881820372179648211424074545784084490603786969584496054481785651900550127851716747246826568016229452975976262745772409454', '0.00000000002542356646873251984661531567832365397400169898925001739523492396893368004710859653', -1); + T('160250738049532782162433853489598402471976041469770348690123392.0031', '-294498471596460898486795650003243213547297862171486734029240994267080719706597441329.5505160068626877140129559069410890749408503304245', 1); + T('-311499170316724006235994246932956222855452383.9355679763714275758718700623828461', '74109.22858001236432975439589074625834100371918658550933564518627770467991656925437210524238209898744184416226015049386723272030', -1); + T('72262463926314177087592711082448174767989257408928002756189090888827037903900202019977026018923895141350914091904436927', '-0.000000000225167954917337837957771388', 1); + T('783592959000310229426414265767534.3977599563867860198103276131050069803106200343268513507092805929256', '2213775192313849109306210671344446709142941975379549548840760877161562324284900199839612761050250.310478020973421299217241488', -1); + T('-6547449797725.304570', '119824690766003830384751081.0046122063442368459687414526624230150574044341335791064835698117488656542711155304626640574856112236102910475124479214', -1); + T('0.000000000000010204', '-149665073272.5623297479580213', 1); + T('-0.000000000000000001372054475', '3261320307772433532065115421441455427066494965386813158814003180399968053382332347948302205942486750609906989182229631672314317782917588042', -1); + T('16267269269026527605638552384753020375945217358682470573450643637648938800818442471696326897638.960256727665082740611435176610395516518637', '9397452437953662194.6', 1); + T('0.0016003186542702358062119951504575476400770454525551608330060208480446269746952107326275127054026286275145379', '-10177150935819421368111549722330892202837757641685140152152703141782.0731751745579486199764500876128838', 1); + T('-259.796667804953618306869', '5.152172124853561796', -1); + T('11221563347439640500149258879687347315134035785708472989483023267.2300609027733075', '-26207420100355721202593.170521021779774357040235570161585294593', 1); + T('-4086883920877948704292008316195463523825565880525701686248.2367', '19607520206368681093521348463825573467158671987138840203949280288889694329944104400821735075790097995474419621575623', -1); + T('59250037050672269038935756873853022223815088087754056875033986973202160304564921006.3856374891863577365895067682971644381098324', '-1150048048247576308790181384139171657779505.0762328070146919', 1); + T('-101.9883', '2427396663212685327845905010715508779301812460773274950351804533445926036597008', -1); + T('-253869543570783673956384102166918285311284645640813929674091406323420328870905030279906889614764088874316164218.650577522882100114108252753', '1065.486621351936129492744089151898837668657292086320399673336494155243434093656438111857434011880854788399689183448380554', -1); + T('417208985560.7855205554', '100923345912048408289435217840834510246434298689324763023522249789499602478530171790094650567004608931483845354824898446196430525102018126501735', -1); + T('173069663315189207453082599256935631042012490932166775088288608134998421563.501634405769076052916216890728266291846276235969642472697992', '0.0047456362403909994510629032945180910020103403215993419', 1); + T('2053482495939016050925647064247292586.8564263585178084561055184838104344', '-169017380666548364.127029030132409556736680020944511137856136807303318576835588339730940135466516396606957131997990393897794390319423272450917805926', 1); + T('0.000000000000000000010910521060181975906059602362732892055045562230211476996524041744413599254422619291991952288398365621', '0.00000030305366252407729760726252843133109114557519273943871397042650558626022634485938707736986954106451995454302535124160648045134106263888189201243', -1); + T('30640237540440782514115131028848069755044326052924.009093719671904737413172221325840495532222917009786084408779725171808758879846845062707492564014763', '-3587259353440149470021751420228565.933221993721894266387366123546111212496288309568577', 1); + T('-3609844484927222015828.334942620349534873041743', '-0.0000000000156030127736053462961395524', -1); + T('-0.000000000000001658158309268354898123357112970860020', '0.00000870156656843154695875521710025973209056456466507288725866658654130737892621348779455441496534083249326857675543779156635545016633454520', -1); + T('7793690039.8772263749770060309947594436823579276762079330052673201071', '0.00000612582504229588881039048444365709157972604156531064474583010238471462911044732', 1); + T('259361929252303788251189384988868.553981647414752277660626862473682638041582155222042965461036805740', '2581973829978432652835452792244347835027216577276451292110130046577998322535113805747137', -1); + T('129390414845041424.1539', '-481050029407533910303222535233605013660232501391088458212583477453819542398563643833919611592686861686523', 1); + T('-6536842573987360158150696168225611012842820808740490760317604719877598626292023302792453130948717075', '1808166007895107209370145108642559246571611053591602829484725216424576199434411727976513436930373936671801214293.1577146813', -1); + T('-0.00000000000000001874341518823681577662776773255511371168611049285', '114237294927073342220706673330602767506662522210660715163883162244.823645258897119432630', -1); + T('209836878319152205282576333546502150812644732572885749428543679539', '100955482773558958290888650903921036366095.20510847158797748', 1); + T('0.034860367', '-2.9421730845742362', 1); + T('2007681510503796232234969506243559879895607457288542877357020897246614400065889179294420464808957608804208.88977640850467103386663519609600376930', '131278041586300435030378871514179235174947880618231459980968177904236853202540068220693506990312468.7907728564640266180384190626761258847873972319', 1); + T('-0.00003161209326226016404711305', '-1063414207851209583249490599634018820893.87666259230007659491410887957198569', 1); + T('0.000000000009292700053546152515763409646834318801540357443458254443063793407983703255255220501557870090370022700786856368829747621804624', '15968290595293544207165427138659653635885728378308439140692.8375150', -1); + T('23176176.07056103153928107006846727836935989686711695293078954554503341971026457151918796526632004382422212027532033604', '1393760072065023828023446698382962763', -1); + T('231996316054324226009622737751152542708306575853606699680576.2979473704180673568018174937666939555099251408550275412841449934741053120999250311960', '-0.00000000002440470984493188283681881091476406696345434062764274153736555369694432713235258794821778157833124213579089653780125672309835719004532812124933848285', 1); + T('-20648.33905752688067', '364742683268206384344442772254773451200307358841591165850201389171780849730182355714994995466053456220045', -1); + T('-13296891.2', '0.0000006969337082421569919274143628120', -1); + T('37172409606574175943929198111868146041321294172740261.9143767823011700625959830227158253292122411741', '-9229020573653817070250688951097965429045889891091810375887510258483.86432451', 1); + T('1453535362884489285626691516310680832482298497424339784442566191993586458847756138332543022653963954995058698.15580', '-33143622616240901719883077121499909963666515277776.03911638745682103192726777541334139680165450417038099168410422389791894570097008374', 1); + T('-553544731407.954683875078093295639829399072864963186386576846602046', '192999508939696196504970050808433364133176232370021073489176763241408536439.77594027675417445364740098352288673457747531121812928831142123844168252470', -1); + T('53331368736012231282471303455408074592413207200872818.19673290825616228139358150102045346527811025445464013057081041192769618884910913', '29864250451413880308678527443574263718752000952673380.023619969863', 1); + T('0.0000000000000553335708975466510638842756141122700181892189479338073653078191086392759442569036578848626338971871999378', '-2433.862079043560961248651748450179913978912939709492727668652481303092796187', 1); + T('-131087743.6305459391', '1366119444020000948783203513489615222.675978339215788988998559226759468849819166123527857680522', -1); + T('0.0000010414667170852575270156859553928180613463762435534732908049457814385044451504107590913084220195837233515638824516134017851098411421001695264', '-66115584400599354704187997780889126098693373365.7243', 1); + T('-82580207676754903853225612109619332832646591973947655468920313639308916718.1330927060723276446644406371829999060475633907079169', '5123330295520469513903522349127462754600115573.1373461391379131781873', -1); + T('-22881636298670205035641935440359796471601928206681810441710383670980611628185637243569.2507827277681252065670282330799224', '736623256360.52046053521393940948105264615756015326648432', -1); + T('10.6557893608099767579084904', '-1549097478049581073829995395668214851867184047164638481948954196550730492470162977527257584557330.12691586584734276203352320', 1); + T('-990750595009217072591203410182612405197518047760914771032204784294635251950209321008567583494561257290737', '305183437080190842418299140880536765514850999.697345630592391581619258378412681359059795654', -1); + T('-1666770629345794574416820151105.98918396166031507208776276918495816721257656112225182497801163182679207902596802205860048306600841687864861095511', '-0.00000001067708997946', -1); + T('-14840.8160635780542830749790687168810848087921446934163740720565540416857197820946', '34080400103214533424.02376392426614849386411125899538938586694', -1); + T('0.0000000000000016877563085857940725171784798859373742', '0', 1); + T('-33190786246688543666606637359744.217563683075', '1411442489270647265365237504971682227816451192966004619718073064881.0785117653978579470036133709733772486485584681564117735482334823573897932', -1); + T('22250091784709109592.36289103127751407973011885', '-0.0000382591424878799273145128194620542054246216992721442791349175343470175713780048283294641587173331569078106987388529', 1); + T('-366783961078432297345344407263954100597261322478589032766.73282236301460555020', '-96792806400556284879273453156295184.53428387344080543516219317', -1); + T('-4428412434012469201409972157335263140259080336552387999530773415365566408064446887607002402436823395664644162540941981862539131750982436.53', '75696312592552260444421580586326708012624152846535337194315378288808695.3800482862544568581804928901090851775492837416229', -1); + T('-5875606174326455206892.166531322577891655817791602124272', '-35009191320796020285350597114063011014625404863861820815440146042482080541906069341', 1); + T('0.00000053938374247898490593751341139618225706260032227451912740608995112652267024567', '175852452557353643.3590476179170', -1); + T('0.000085430888367277502429220363288215723771185373', '8256298205292814781230409657307281433998721428415657164206.36639', -1); + T('-52206181136131234784399813236.07148184351942727', '187209867307553393739457212014673840096167129608946393051576008336453819741553745147502544430776215770796121630485677673.9724596115587907243111403', -1); + T('-116404659080562114.92071212768286143841500510345567940661701355074747251796041', '-0.0000000000049745937887893457305924521492823436496769064269458995595186839321054906563207671851820946083323716587936229045653732369629477947990064968', -1); + T('28632132796102343.642479895418482981865379537641435463355793', '3947054586925956430852945631879967537015686007064533778477126086105171929289441372934106340502853676944.8775856144613230825303', -1); + T('-857090508200151475054556597610222124661175080017618336676970123774256255824922667023873121804008646192330290129442806', '-972101984776814063384288921892937781463259806047634752997185.4385721825546355179576429', -1); + T('524360242934236610220749675664188585635590483292908774530668032546940050829944754444786102305373006086287153988223497918735', '-894112.62957', 1); + T('-4210359748516193705490258816796808454697789142688778195029295009029687568303590578372169555384509849436838285', '31544435847506925886.4380471855572374745797509775141400719180063314074764017605405542023671969250480247374160173575823024192641879318726', -1); + T('0.00000000000000000039648316584476924066746927696080890012966606658194662052', '93186692411262534487106225917322323273998860.702889752659967', -1); + T('-355809833.80952792320528641233', '80686526919845500998309999431837058.761633435885737503460027358262242', -1); + T('135973290.168739239202104579143727871073186846998465022695079917761494935246543420262539585973598640481769703017097113004230499019752720843814876125395', '-5247621701130676973811017481409509202617774437873284817094169357757993693424454590200078960274872983976142587199662655362147649', 1); + T('1722959380210301975884294773508', '9285857700957558240758114686802782724351979408646270147.79', -1); + T('-2.108499091120865886897591323930243793006036956873698734554284782307034333654312298978700143514443242015114382393092579020064541038144909798932', '0.6600963818550654763059005580259719939747091', -1); + T('239620618436021.91', '-4353302761316014755083307438727860990450226754399292536680958540457321480743198864', 1); + T('-247311515425879756100312067126621077462386243210235600848467077095397086040795417.16091213583', '-260.0692816252127916277315158672499008107826181646194964038208702225413806272325838419818326501439852500060857812695956426279373392731287', -1); + T('0.00000000000000092678002317773819293673427756278593549636636017011488156614', '17608242495263943038945700454791334002001731748793496370046578764838341632679102710921093941418183970826750981020832871212156842541461372', -1); + T('-33395325628320096104732838558355526.34337764550949233422721', '205332050719085679752333364390801841584322469575410029598277675558008298194.4403120686536479725405590603499717318334866527066993402595695782', -1); + T('1704446749770125249947219847049678079826076962438747770032889527765979216824', '-81884993441.044414114132150', 1); + T('4721008.67935983797016512145416126232413', '-0.03498350297025037393206835110018120336910941973578256042733733228736114655699947857927341334', 1); + T('181391051825403456208156.71244213486959497601037', '-776380379297651015893862651994364337679290452023660979418305268365.4639038680782187382', 1); + T('0.0000000847', '22156497747243948647802199255699537070266422639.5633433463683691278073207255994132556519453723419', -1); + T('-6.21217206985247294651387216860807591050001764817572516334758', '886061238651128.7', -1); + T('-1161719026145675243574235610276988347246026816878990032451997176103072809623554165635479395356340140107166377591092789264418175', '-0.000000018735947478220650520638945854023532902579986523026188004265750964790', -1); + T('-0.00000000867192138', '2502507910601152855229403992937540857964041297324987261262589402205840', -1); + T('932600538480920158326929132563.6421982462761565925070778172257671442090601464460086', '-20519384614533168439297510042006580413691480074684.20874560931252451163046908065695481258407657', 1); + T('-423970839089252202458.4142517215652507527660399945359115489273265486900307489264302540041681142598257029618492805741704283129188858300', '-0.0000000000000000020864723406154143161822628597022504762643109363924577177440002989153679290543872240996459231393135479147340630', -1); + T('49491330651043321769388801332639.740296423762', '0.5171693040591007989301158138415776204505193432948807746575263122468776152077', 1); + T('0.001245962897188796973717486355827294945060225829760809691400850708544510', '2093451351363855302147446056836441599578148902408761562976800394573.65341921067439897924178668210176520923190465610921336906740229984', -1); + T('2593248239529730040425963884470681420571770726127.898763080708', '7187960966847715724350587626703224781728201547468602127890467264952177647476374.8350740675946710455460463413291', -1); + T('10876110728592679732.62028952680014147540924866973673791348307668059733003935578406', '14807.3566503507754041309056234009138430821972145065785727273499408126157754376928813995906375584967247205063511345989398044710766229497805904317', 1); + T('930802811312871985657541282630.11555878286243010124609615', '-55898805297735194055894340167715838876998587195058346456322370995879163257917874310396332.8301127894058724494250937495', 1); + T('4373687004743801710.4295871291', '-2399.751203123176895978605217344914876835764318218494324419569769709590467191', 1); + T('19885418415499907740390897118745282009388.522241490773186707378554377', '-0.000000000000000000016311844734', 1); + + T('0.091650', '0', 1); + T('-31.95', '-0.0000004826766', -1); + T('8.66569234', '-5157749157', 1); + T('131.57910', '-0.00000000143732', 1); + T('-0.00000000000000069913178493', '-36.2938', 1); + T('-71.52874', '-12.621', -1); + T('0', '85409.76884', -1); + T('-0.0000000000362430662837', '-801785981.0', 1); + T('23.2', '-102599', 1); + T('35.5', '-0.000000000000000012', 1); + T('0.00000306', '-2.632', 1); + T('0', '-0.0000000000000000007729361018', 1); + T('314012.71462', '-53575.055', 1); + T('-101465', '-6', -1); + T('62740.249', '0.00000000000000000007443159314', 1); + T('6.28898', '30', -1); + T('-14.1', '20523313.15', -1); + T('-121.9', '1.9', -1); + T('9.68', '-1872.932', 1); + T('-2553.3', '413.6', -1); + T('13675.5', '-5', 1); + T('-0.000000000000000001038840261', '2.08', -1); + T('-3252618.447', '3.410', -1); + T('-7530437220', '-66.6578547', -1); + T('51.32', '-0.0002497237', 1); + T('-0.00147259804905', '-15.0', 1); + T('4517.34411456', '19.1775057', 1); + T('-14.006', '0.0000000000000748001', -1); + T('-1029.3', '2', -1); + T('1473.3', '-1.01336820638', 1); + T('5258.8', '2311.6', 1); + T('4.9', '4', 1); + T('8614797251', '5.47', 1); + T('73.173', '-1.4031382', 1); + T('502.36012', '-39996872', 1); + T('-493652528', '2187946548', -1); + T('-600552370.92', '0.011235396004', -1); + T('35.61040429', '-54899.96', 1); + T('1.447', '3.951143', -1); + T('-2814441.354', '-0.030752704', -1); + T('-0.00000000000000001062528419', '14428385.05', -1); + T('-0.00000902457', '-906093.03', 1); + T('-4.49514906109', '15640376291', -1); + T('-14.005', '55.971', -1); + T('-5.58', '5257.64', -1); + T('0.00000000013353112755', '0.1701', -1); + T('-2647318.81', '-115.6', -1); + T('-22.4', '0.00000000000000000002689757418', -1); + T('-1621301570', '-1.074', -1); + T('-7', '-21400', 1); + T('0.00000000000002041639', '1.3', -1); + T('287938.5', '0.00000027218', 1); + T('-0.00000055410455610', '2355408.35784', -1); + T('-18.363786016', '-24.12699692', 1); + T('368728547', '12', 1); + T('0', '-16302264', 1); + T('-6.7', '-127.83676', 1); + T('-0.00000000000038760', '77458475215', -1); + T('-0.0000000004193858594', '-0.000000000000000000874962299872', -1); + T('-64715.0554', '-5106.6', -1); + T('-2', '174636', -1); + T('3.6', '-9.29', 1); + T('0.0000000000000001025', '-1', 1); + T('57.19', '4728633003.0', -1); + T('-0.00000000001896809493', '27551629.4916', -1); + T('-24936.227933', '-17253964', 1); + T('0.0000000016330870', '162322.24', -1); + T('780.4', '-0.00000000000000788606669264', 1); + T('2.008', '-82.793645719', 1); + T('0.000023', '-0.0151128375', 1); + T('1.60', '-4935.4', 1); + T('10320469', '-844.9', 1); + T('4013.16757', '-4.73', 1); + T('-22955362593.9', '-3800487406', -1); + T('-0.000000000000000030708244506', '29', -1); + T('1', '0.00000000006442170', 1); + T('-13923', '0.0000000000000000019', -1); + T('-839013', '-3.11884562268', -1); + T('12.22605', '2.4', 1); + T('-2', '-751739624.9', 1); + T('-0.000000014', '-1.1', 1); + T('-0.0000000000096284906554', '-0.0000000000000000000531', -1); + T('-0.00000000000000477', '-0.000000000000010180391', 1); + T('-2919850130', '1.5', -1); + T('0', '-22.424', 1); + T('-3.8812', '-450574', 1); + T('-81939.3196', '-1.528956', -1); + T('0.0000000000000000000662', '-0.00000005609645255', 1); + T('4.43', '-0.00955682817', 1); + T('-1', '3.68', -1); + T('-2.2337', '-18398007347', 1); + T('17.31058', '-742739604', 1); + T('10', '63510.06483', -1); + T('-1679', '0', -1); + T('1', '0.00000191916669633', 1); + T('677.105', '60922901809', -1); + T('0.000000000000000014238616', '6311.5471', -1); + T('-3', '-193.6', 1); + T('-3.17', '0', -1); + T('1896.17', '0.000000420065102', 1); + T('-21.59982', '1.635168485', -1); + T('-1.1865349', '-1', -1); + T('1.2', '-0.000000000000061', 1); + T('0', '1.52', -1); + T('5.49', '20.789347414', -1); + T('-0.000000000000000023', '0', -1); + T('-4.3', '0.0000000000000001390542834', -1); + T('-50.261594', '-0.000000006027', -1); + T('98987.24', '-2', 1); + T('0.00000000000000005238041903', '-0.000000000021', 1); + T('66.97', '0.0000012729936969', 1); + T('-1471', '83268824096', -1); + T('76195', '-0.000000000000000000022355488306', 1); + T('4.00', '-1.2', 1); + T('2', '0.00000000124844398', 1); + T('-56365405', '-1.4293', -1); + T('-0.000000012648228056', '1016.22', -1); + T('-902947', '-1415195', 1); + T('90004.642', '48.208940', 1); + T('20', '-1.9', 1); + T('0.000000000001587', '-0.000000000000000000062640220', 1); + T('-400040.6', '0.00000009705375', -1); + T('6804221.367', '0', 1); + T('5', '0.00000432', 1); + T('0.00000000086378', '85674151.6', -1); + T('498.115979', '15.68', 1); + T('-7.168163', '-1079.98097073', 1); + T('-920.494', '0.000000015113372', -1); + T('-2.9', '-0.0000000000000013597214164', -1); + T('0.00000278', '0.000000000000000004069', 1); + T('452953568', '5', 1); + T('6.3', '0.00000000000000000108', 1); + T('-6.8363624', '-71489', 1); + T('0.0011232588', '-303.3', 1); + T('-14.0845', '-13.736', -1); + T('-17.02168645', '-224637', 1); + T('-4212280773', '-0.000187770', -1); + T('0.00000003418', '-0.000039', 1); + T('-43.737419409', '8835.871', -1); + T('-97593198', '-0.000000000000000000318554271', -1); + T('0.000000000000000000011383807583', '-6821.9588', 1); + T('0.00000000002148347559', '7307610.12', -1); + T('-192642.694', '0', -1); + T('0.000000000007138411375', '-0.0001386', 1); + T('-85.57', '-0.0000000000000000015380232', -1); + T('553283624.5', '-0.0002938', 1); + T('-0.08812', '4.83', -1); + T('4.9', '-436', 1); + T('-0.00024787', '0.0000000000000000804553', -1); + T('505.177864', '-1058821.702', 1); + T('0', '-9.2', 1); + T('0.000000000139878568', '20.792', -1); + T('194.1635', '26817.14', -1); + T('123', '-0.0000000557024116689', 1); + T('-21597132.5743', '74698648', -1); + T('2.0', '-22574256851.6', 1); + T('-99', '148.3755', -1); + T('-3', '-0.0000000004324672314', -1); + T('25.5594537708', '0.0000001987683', 1); + T('12.204523', '127', -1); + T('-16.1', '-0.00000000003079945018', -1); + T('5', '-231057.18', 1); + T('-0.00000000000566786', '-227438', 1); + T('0.00000000004188', '-4437894.422', 1); + T('3716202', '4.050', 1); + T('878941437', '0.0000067945', 1); + T('0.0000000000006517981381', '487.06', -1); + T('-464400975604', '0.000223', -1); + T('-0.000000000000000463803912', '-0.000000033', 1); + T('-44', '875958', -1); + T('173.04', '259.4491902', -1); + T('-1.66', '35146200.24', -1); + T('0.0000103750', '6.221887', -1); + T('-6034.59820', '0.0068365419', -1); + T('524.34546782', '44.572583393', 1); + T('8711891602', '0.000000000000000000080236', 1); + T('-1', '-0.00000000001045149282985', -1); + T('1009', '2742992.1087', -1); + T('-0.000000000443', '-26.86321244', 1); + T('3089348.2545', '-1', 1); + T('0.00000102676', '-908.53218525', 1); + T('-3.48848', '5330516.1', -1); + T('6.4616', '-1', 1); + T('1', '-9.781657', 1); + T('-3.4', '-521472970', 1); + T('-586.97', '-113.11324', -1); + T('10.2837600', '-2', 1); + T('3.74102080', '-11175.7', 1); + T('0.000000000042971203966', '-2084.4542', 1); + T('-0.000000064891438', '-2043792860.5', 1); + T('-33.47', '-1323.71284738', 1); + T('422.5186', '0.00000000073882404523', 1); + T('-218.3', '-121.56', -1); + T('0', '-1754.876', 1); + T('-248.5', '-1.1', -1); + T('22.04', '135695140693', -1); + T('-0.000000000000181', '-49.2', 1); + T('-896738.71440', '-779277.279830', -1); + T('1635.632', '-1.87', 1); + T('-0.0000000000000000003432937', '-0.0000000000000000128', 1); + T('8185.04579', '28.304207', 1); + T('-57.80410102', '-0.000000000065900351', -1); + T('1', '-0.000000000000014', 1); + T('26.13562', '0.00000000000004472101', 1); + T('-26', '-46846563.0', 1); + T('0.0000008802852', '-38865.86', 1); + T('6590981.4', '25733', 1); + T('3.10', '-0.000095648629463', 1); + T('2', '0.3926', 1); + T('1071.137629', '8717.37', -1); + T('188711', '0.00000000000000000003923', 1); + T('2.64', '1912.289', -1); + T('962.2', '37.5', 1); + T('0', '-14.3056421', 1); + T('6.434877', '41.7051341210', -1); + T('1', '-4', 1); + T('-573.491', '-7850309', 1); + T('-8506.2', '-6', -1); + T('-2436719080.97', '-487.145', -1); + T('1', '-0.000000000000013193', 1); + T('67.3', '331.473345666', -1); + T('-0.00000000000000116355724', '0.000000001349568973', -1); + T('-4380819.68', '-171', -1); + T('-263582.40400', '0.0000000000001840687158', -1); + T('31', '-0.0000000000000000073', 1); + T('-3.234555', '1', -1); + T('-0.0000009745557', '-12583.24883', 1); + T('0.000000004423159', '21297.3', -1); + T('-11954925140', '-244009.66219', -1); + T('4122.60', '-0.000000000080630710245', 1); + T('24458437758', '-29.81012', 1); + T('-3', '5826.7', -1); + T('0', '-40662', 1); + T('-242.79', '-404.29025', 1); + T('-4446.1504587', '3.763848', -1); + T('6', '0', 1); + T('6.3', '0.00000000121', 1); + T('-1.0', '-0.00000000000000000006445409', -1); + T('-9374.2957170', '58340751', -1); + T('20347413.9', '-779599.59', 1); + T('3051.205905', '17883.635', -1); + T('-1345.0889662', '420448113', -1); + T('-48.9', '0', -1); + T('-0.0006551466', '-576096.0', 1); + T('47.80', '1421535456.7', -1); + T('22280251557', '1', 1); + T('73.35790', '1788057733', -1); + T('-80114.1', '0', -1); + T('-0.000000000000707301', '9582641.8231', -1); + T('-40590618', '0.0005028', -1); + T('-26.1551', '-59129881', 1); + T('126.31', '0', 1); + T('-1', '-3.330', 1); + T('-7', '-0.0000200526', -1); + T('-3761.76241528', '-26.8', -1); + T('-0.0000003162744266', '0.0000000000000000394784057113', -1); + T('-130448.713110', '-169586.15212', 1); + T('-40.8968', '0.00000000591143', -1); + T('50781.5422696', '0', 1); + T('-0.00000000000000120', '-0.0000000859583', 1); + T('-26886.528', '-97.8', -1); + T('6.812', '-74976701.51', 1); + T('0', '-958435', 1); + T('-78.09589', '-28195701701', 1); + T('0.000000000000000042071654504', '-26576.9776', 1); + T('6.1', '0.00000000000000000089253676', 1); + T('-2744493.46', '-110.8907926', -1); + T('3.82237319650', '24.69679', -1); + T('642337.78548', '-0.0000000000000000000372333883166', 1); + T('2017548', '-21455.8709783', 1); + T('-115732.814', '-0.00000000029824235', -1); + T('5309.7', '0', 1); + T('16741188415.6', '-0.110485391', 1); + T('-1', '-3', 1); + T('-4', '6.970303371', -1); + T('-186.5987098', '37519.7898', -1); + T('-217.59', '-90791.13282', 1); + T('0', '-264309561.7', 1); + T('3303.44786015', '224832', -1); + T('-1', '8628993', -1); + T('-13840', '31.895590', -1); + T('-422.075562', '0.0000000000003673', -1); + T('-5.4', '-2.988', -1); + T('-12.28195', '-8.1', -1); + T('42.1', '8452.3', -1); + T('40.4', '1', 1); + T('-611.849', '-20937.2313506', 1); + T('-8.530', '-88795904.7', 1); + T('-5235577626', '0.778127928170', -1); + T('370711545091', '0.000000000000000210166457', 1); + T('-7.48128', '-43.9398904797', 1); + T('0.002625414898', '6', -1); + T('1', '-2', 1); + T('-6.731', '26328856', -1); + T('0.0000000000000000000284154564', '-1059603.41', 1); + T('0.000000000443838495', '0.0000000000000017', 1); + T('-3', '-18008.5115', 1); + T('-5.44111', '-0.000000000000002315', -1); + T('-0.00000000000005224', '2615.7', -1); + T('-165.123', '715.4', -1); + T('0.00000000000000000002503685', '103.89909', -1); + T('-843660', '-61054040.1', 1); + T('-0.000000000188978', '1.5162', -1); + T('-13262813', '-3.8259288422', -1); + T('-260760', '22527192335', -1); + T('-0.0000000012743953613', '3', -1); + T('-3.1', '0.0002826855', -1); + T('-0.00000034032373868', '4', -1); + T('-34.4487739299', '-3226659.36', 1); + T('-613804.983', '-0.00000000000000000162', -1); + T('1.64349914689', '-35.11364419', 1); + T('0.00000000007506', '1.5', -1); + T('-15402.36', '-25.57717', -1); + T('-0.02114629039', '-29.30', 1); + T('741.6', '272.88495', 1); + T('268', '-3.19964', 1); + T('-71.4', '21611474', -1); + T('0.000000000000007218501', '937651.654', -1); + T('199.3', '106.687430', 1); + T('-347089643', '-1.23588', -1); + T('1.1', '142.884', -1); + T('-0.00000397691', '3080.547000', -1); + T('862056251', '-0.00000000053632884', 1); + T('1', '-51972744.2', 1); + T('-0.0000000003410179', '-100.6', 1); + T('-2.888005719', '530.1', -1); + T('1', '7572161.50', -1); + T('-347802.7', '-9442843753', 1); + T('0.0023038', '780500', -1); + T('8', '0.0000000086715315930', 1); + T('25.2514', '-5.6679', 1); + T('-273.01392594', '744.7', -1); + T('1', '-0.000000000000000013732783740', 1); + T('-12110.11', '404.59869', -1); + T('-12.2', '1.409', -1); + T('-21399326578', '3', -1); + T('0.0000000000000011173', '-641.0', 1); + T('-32312.03841', '-858381873.058', 1); + T('2.914778', '-4083717632.78', 1); + T('-1', '-145434.3590', 1); + T('-0.000000000000029', '10.5027826', -1); + T('-83110.21', '-159304.18856', 1); + T('0.00000017124', '234078.4', -1); + T('-3.3135862481', '-0.0252', -1); + T('50816417030', '-0.0000000000000000000677050476', 1); + T('-0.000000121283558', '0.0000014', -1); + T('-2.6', '-51', 1); + T('-0.00000000000006649625', '0.000000000000000000158653960', -1); + T('0.10516268852', '65.301', -1); + T('-1.275', '-47740', 1); + T('-1.351', '403525711', -1); + T('2', '-4297959683', 1); + T('-164689.3', '-39864948.9721', 1); + T('9.9', '-69.2411393', 1); + T('8', '0.00000000000103945809296', 1); + T('305178.471', '3', 1); + T('0.000000000000032', '-20930.0799164', 1); + T('-77.49', '395.9622', -1); + T('-152.757430953', '-1398.02', 1); + T('-2307.747', '0.00000000000019805243698', -1); + T('-0.01218', '-7.812', 1); + T('0.0000000000000000003810', '0.0000000000000000029679541', -1); + T('10.688', '0.000000000008058682358', 1); + T('-1', '2578212', -1); + T('-3', '-56.08', 1); + T('-1093', '251.7', -1); + T('-4256.966707', '1.5', -1); + T('0.05564369', '-359117.57', 1); + T('-0.0000016653675', '21.04559509', -1); + T('0.00000000000000000560706598', '0.00000035617423088', -1); + T('-1613281026.0', '-12.8755773', -1); + T('-10117916.33', '-43368489.9992', 1); + T('0.0000000000000000023', '-0.00000000000000000072941926625', 1); + T('0.000000000000000000114', '-39574.34967', 1); + T('688605.3502', '790.091519', 1); + T('93.997217', '-1193.847608', 1); + T('70.4', '0', 1); + T('-1', '-1', 0); + T('2799.9505', '-879350400', 1); + T('26.3519', '2.7329', 1); + T('0.000000001075249872', '1', -1); + T('-1576477620.9', '0', -1); + T('-0.0000000000001887095', '0', -1); + T('-8.5', '-1699611.01', 1); + T('43.9', '269.320', -1); + T('6.861', '-13208', 1); + T('-0.00000000018976769', '4969.1', -1); + T('-0.104', '63006.503', -1); + T('4.699718', '0', 1); + T('-2398.0397', '0.000000000000912', -1); + T('-4898751.931', '1', -1); + T('157885566', '-68580.02', 1); + T('-11645818', '-3', -1); + T('-16294097.923', '-1.2097447985', -1); + T('-0.000000748731', '-454.222', 1); + T('0.00000000000010244980', '134106823.540', -1); + T('0.0000000000000015', '-170.73985', 1); + T('53.927', '6', 1); + T('1859944924', '2923512', 1); + T('-8', '2.06', -1); + T('-1173', '-2', -1); + T('2530717.95510', '-161.959593549', 1); + T('28.7750', '28975251191', -1); + T('14.6', '9.60848', 1); + T('-26625.8', '-181290682.303', 1); + T('-3216.90', '-13439', 1); + T('0.00000469235', '-1', 1); + T('-1767948', '0.000000000000000000030839', -1); + T('-0.0000732020', '133715', -1); + T('1790223107', '0.0000000064', 1); + T('-3', '-2', -1); + T('-63662276937', '3719.7312891', -1); + T('-0.0012587205', '-4217797.73', 1); + T('63388492', '-2816203811.9', 1); + T('0.000000000000030042105', '0', 1); + T('-305040732.4', '0.00070', -1); + T('13331390', '-0.00000016537084927', 1); + T('-0.0000022895', '-16976.1986920', 1); + T('876.4955249', '-243.2', 1); + T('-197.5688', '-4.29794', -1); + T('0.0000000000000000011', '6282.72', -1); + T('0.0000000000050984036283', '7.7881', -1); + T('-10495794506.9', '0', -1); + T('124856173.18', '0.00522', 1); + T('53.3', '-199', 1); + T('-1199.8', '-727.8', -1); + T('-43307.7', '-28360017461.6', 1); + T('-1', '2756856880', -1); + T('-689646263237', '464047', -1); + T('47187.7', '0', 1); + T('-0.00000000000000001510', '-3563.630', 1); + T('-4.858', '15', -1); + T('6199564.0', '4', 1); + T('0.00000008126595122', '94923.9', -1); + T('-4.55', '-0.00000050900013', -1); + T('1', '2296100.7', -1); + T('0', '1.503', -1); + T('0.000000000110946', '0', 1); + T('615423.7235', '184.8711374', 1); + T('1.05514', '0.00000000000000164', 1); + T('496.80639073', '-37990.30', 1); + T('836.9842', '7.8', 1); + T('-5860278130.33', '-0.0000000000000000150199', -1); + T('-0.007816', '-1.811145', 1); + T('0.00000000000000000006492937', '1.6', -1); + T('0', '-4.8', 1); + T('0', '3.8982', -1); + T('23', '34.3741', -1); + T('-3.0', '-0.00000000000104944', -1); + T('-0.1919', '5', -1); + T('99770.2091', '-5.7', 1); + T('51124300393', '-0.00000000017998', 1); + T('-70787232160', '-0.000133', -1); + T('1.13', '-3424775', 1); + T('-0.0000068139312402', '-0.0000000350208', -1); + T('1572.7', '-205.1', 1); + T('-0.000007355799843', '585', -1); + T('0.00000000000153614', '-20.5512', 1); + T('-0.00026', '2029254', -1); + T('2227.1', '372.5', 1); + T('6.7923522322', '7', -1); + T('1.3', '5', -1); + T('-8.54164', '-8', -1); + T('29980.875417', '0.441135960', 1); + T('299010.3', '0', 1); + T('9.27543816', '-0.00078113', 1); + T('-13.507', '5.73', -1); + T('-2724', '79823.9184', -1); + T('665153', '0.00000139621298365', 1); + T('-221507.830', '-42.2728486', -1); + T('-25748575.099', '-184839.8', -1); + T('91089', '11.053483070', 1); + T('-1.954', '-3.146', 1); + T('-118', '-0.0000000000000000253942787', -1); + T('5', '0.0000000000000000008808', 1); + T('-0.113849830', '-13.23', 1); + T('3419823', '9382356.3920', -1); + T('-209675697.9', '-1718.23', -1); + T('-0.000000000001298', '0.1258203689', -1); + T('0.00000122345524', '0', 1); + T('1227261.8715', '4', 1); + T('-0.0022031', '2.041487544', -1); + T('542.9563883', '-5854511410', 1); + T('-11659798', '-2.444', -1); + T('0.0000000000000000010320422', '633.8', -1); + T('0', '-2.8', 1); + T('-242.35223', '-2352762', 1); + T('-189681.68721', '0.0000000000009222784269', -1); + T('0.000000000000000007316', '575', -1); + T('32152.149300', '-0.00000000003464314292', 1); + T('1.02326029645', '-4', 1); + T('3', '0.00000000007128', 1); + T('-6654.74794838', '3880.34', -1); + T('0.0002021', '-52.79057', 1); + T('-0.04040990', '-0.16497', 1); + T('291339', '-8', 1); + T('-1.3669473', '0', -1); + T('0', '-8.9', 1); + T('-223743', '0', -1); + T('0.00000000000270179', '2084', -1); + + T('-5.5239e+3', '-2.2807805e+1', -1); + T('8.554e+2', '0e+0', 1); + T('-2.1176736939e+5', '2.13526332e+2', -1); + T('2.528e-2', '-1.5e-1', 1); + T('-2.1536554e-2', '-3.93e-6', -1); + T('4.853430802e-5', '-4.9e-11', 1); + T('-6.9e-3', '1.9596e+1', -1); + T('-9.93182949e+1', '-7.9983535342e-20', -1); + T('1.629795e+5', '1.58117535423e+5', 1); + T('-2.934333546e-15', '-2.093237829e-14', 1); + T('2.2916931e+1', '7.88e+2', -1); + T('7.656115e+0', '5.5885422e-10', 1); + T('0e+0', '-3.3e+0', 1); + T('-2.4327703616e+3', '1.1e+1', -1); + T('1.61903621e+6', '-2.3444006423e+2', 1); + T('4.5332e+4', '3.281123867e+1', 1); + T('-7.9e-4', '0e+0', -1); + T('-2.6e-19', '-5.4489933e+6', 1); + T('5.877152e+1', '1.5125e-2', 1); + T('6.293000381e-1', '7.2e+1', -1); + T('1.072062222225e+10', '7.521052067e+0', 1); + T('-2.9744557e+7', '0e+0', -1); + T('-1.0235e-13', '-3.671886e+0', 1); + T('-2.06364e-4', '6.2113337e-3', -1); + T('-7.02e+0', '-1.1348644434e+3', 1); + T('-3.57688146e+3', '3.81547e+2', -1); + T('2.9527098536e+3', '1.32080504447e-4', 1); + T('-2.6286e+1', '3.8e+0', -1); + T('-3.45054603e+2', '-9.88229e-15', -1); + T('-2.469e+0', '-3e+0', 1); + T('-8.369800004e-4', '1.4e-17', -1); + T('-1e+0', '4e+0', -1); + T('-3.0829216081e+2', '-3.08e+1', -1); + T('-1e+0', '-5.756e+1', 1); + T('-8.511e+0', '3.126324e+6', -1); + T('2.4474011949e+4', '1.12649e+2', 1); + T('-2.57868e+4', '-1.03178e+1', -1); + T('1e+0', '9.5177e+1', -1); + T('-9.8069663157e-6', '1.4532689e+5', -1); + T('3.721e+1', '-2e+0', 1); + T('-9.7657879751e+10', '-5.67e+2', -1); + T('-4.8657905e+6', '-2.17381281e+1', -1); + T('-4.20131e+0', '-1.3179640655e-8', -1); + T('1.6e+0', '0e+0', 1); + T('5.16068325659e-4', '1.269e+1', -1); + T('9.91969e+5', '0e+0', 1); + T('2.32e+0', '3.69e+1', -1); + T('5.685149e+2', '3.694e-13', 1); + T('-9.0148e-5', '0e+0', -1); + T('-3e+0', '-8.7855e-7', -1); + T('1.3669489e+3', '1.33866e-4', 1); + T('-2.6e+1', '1.36976797894e+3', -1); + T('4.6e+0', '0e+0', 1); + T('-7.2e-8', '1.971355e+2', -1); + T('1.19755e-5', '7e+0', -1); + T('-3.46e+0', '-3.7715361e-11', -1); + T('3.25762245146e+6', '-4.02e+0', 1); + T('1.3174225699e+7', '9.6222695655e+10', -1); + T('6.6e-13', '-5.23193346205e+4', 1); + T('-3.873e+3', '-1.23681175e+3', -1); + T('-1.19869e+5', '-8e+2', -1); + T('2.027381656e+3', '1.47629351439e+11', -1); + T('-1.467418e-17', '9.0073930856e+5', -1); + T('7.1e+0', '6.116301582e+2', -1); + T('-1.7883916e+5', '3.533e-17', -1); + T('8.8e-11', '-5.9707897e-1', 1); + T('-5.337e+3', '4.6614e-13', -1); + T('1e+0', '-3.1e+0', 1); + T('-3.05920196e-6', '-4e+0', 1); + T('-1.692375e-10', '2.29981330096e+6', -1); + T('5.19341813e-1', '6.1e+0', -1); + T('5.796e+3', '-9.386773281e-8', 1); + T('9.117497e+0', '0e+0', 1); + T('6.962934e-8', '1.413982e+2', -1); + T('2e+0', '1.4e+1', -1); + T('-2.04e+0', '-1.30300025e+9', 1); + T('1.57647e+1', '3.0862783894e+0', 1); + T('-4e+0', '7.1e+1', -1); + T('1.21e-6', '-2.109584154e+10', 1); + T('6.55669245e+3', '-8.15e-8', 1); + T('-8.3307e+2', '-9.1476874e+7', 1); + T('0e+0', '-3.64676e+5', 1); + T('-1.2803e+2', '7.2908749e+3', -1); + T('3.2263e+3', '-1.43355e+1', 1); + T('4.92751482244e-18', '1.3747248256e+3', -1); + T('8.20054755e-10', '6.2348e+2', -1); + T('-1.06e+1', '-7.2569084631e+4', 1); + T('1.86e+2', '3.76613527e-5', 1); + T('3.33652e+3', '5.1e+1', 1); + T('3.665307673e+8', '3.31344e+5', 1); + T('-7.341261161e+2', '-2.98910916e+7', 1); + T('6.24638573245e+5', '4.47893448327e+2', 1); + T('1.23e-8', '-5e+0', 1); + T('4.469176e+5', '-2.09863e+3', 1); + T('-2.72624816161e+3', '0e+0', -1); + T('-6.78251e-20', '-6.837e-1', 1); + T('6.2456922e-6', '0e+0', 1); + T('6.2e-4', '4.40516e+4', -1); + T('-7.624e+2', '-3e+0', -1); + T('-5.22549619458e+0', '-4.0866914233e+9', 1); + T('-9.51999532e+7', '-2e+0', -1); + T('-1.07321e+2', '-1.3e+0', -1); + T('-5.405555671e-6', '8.0306e+1', -1); + T('2.2e+0', '6.49e-17', 1); + T('3e+0', '2.2e+0', 1); + T('-1.12e+2', '3.4165375e+1', -1); + T('-2.36978379e+4', '-4.2e+0', -1); + T('-8e+0', '-6.42e+0', -1); + T('-3.2e+1', '6.17231707e-19', -1); + T('-4.8454741051e+1', '4.3339e-10', -1); + T('4.29e+0', '3.28376306e+4', -1); + T('-6.33089e+1', '-5.7065758354e-19', -1); + T('0e+0', '-3.31e-7', 1); + T('-2.18973e+2', '1.88333703659e+4', -1); + T('-1.67e+2', '3e+0', -1); + T('0e+0', '9.7605e-12', -1); + T('1.294433816e+0', '-1.1e+1', 1); + T('-1.4246177e+3', '-1.043532436e+8', 1); + T('-1.0531e+1', '2.2268899e-6', -1); + T('-1.5611e+3', '1.59757e+0', -1); + T('3.3638160556e+11', '6.29136402e+6', 1); + T('-7.7326244542e+2', '-9.6e+0', -1); + T('-3.593606997e+8', '-4e+0', -1); + T('9.4433e+2', '-1e+0', 1); + T('-1.0131e-9', '-4.551632556e+9', 1); + T('1.61735e+5', '-6.550194286e+9', 1); + T('3e+0', '-8.14e+3', 1); + T('-3.492e+0', '8.85393125e+2', -1); + T('-9.3678169131e-19', '-1.98802069e+4', 1); + T('-4.39338019e+7', '1.07850051e-15', -1); + T('-1.1677e+0', '2.22825374e+8', -1); + T('-3.476e+0', '6e+0', -1); + T('1.453e+0', '-6.34599e-7', 1); + T('1.789e-9', '0e+0', 1); + T('-2.92933e+4', '5.802095e+4', -1); + T('9e+0', '2.63702e-7', 1); + T('-6.0696e+4', '9.46475e+5', -1); + T('-1.508052e+6', '2.45600810354e+0', -1); + T('6.83354e+1', '1.93e-12', 1); + T('-1.6e+0', '-2e+0', 1); + T('-7.4275644e+5', '-6.1587e-14', -1); + T('0e+0', '3.540869872e-9', -1); + T('-7.86e+0', '8.041734e+6', -1); + T('-8e+0', '1.569e+1', -1); + T('2.0839e-18', '1.2848955034e-14', -1); + T('6.84909e+3', '2.19e+1', 1); + T('5.556062e+3', '1.037e-12', 1); + T('-1.011918e-9', '3.52315476249e+0', -1); + T('-1.2e+2', '-5.8677085e+1', -1); + T('1.5e+0', '-8.2951e-8', 1); + T('5.254e+0', '-2.08338e+3', 1); + T('8.272e+0', '0e+0', 1); + T('-2.3496e+3', '-1.74217696625e-1', -1); + T('2.33e+0', '-6e+0', 1); + T('8.138135061e-6', '1.52e+1', -1); + T('-2.691357e+5', '1e+0', -1); + T('4.277011e-13', '2.1978e+4', -1); + T('-4.164225e+0', '3.94601989492e-6', -1); + T('-1.32e-18', '-3.94e-3', 1); + T('-2.443211e-11', '2.02e-8', -1); + T('-1.2e+0', '-3.2e+1', 1); + T('4.7652754554e+7', '-2.1e-11', 1); + T('2.02136500541e+9', '-2.77170882e+2', 1); + T('-1.65e-2', '-2.4039e+3', 1); + T('1.8172e+1', '-6.3e-5', 1); + T('1.8703827209e-10', '-1.46184e+4', 1); + T('-1.11606903e+6', '-2.8e-6', -1); + T('-7.84180535e+0', '-6.9715e+2', 1); + T('-1.6095371e-5', '-4.007e+2', 1); + T('2e+0', '2.7730114619e+0', -1); + T('1.3694403e+7', '-3.14014263471e-3', 1); + T('3e+0', '2.4553237278e+3', -1); + T('-3e+0', '-2.78756184842e+11', 1); + T('-1.2522e+2', '-7.7e+1', -1); + T('4.491e-18', '-1.196e+3', 1); + T('-3e+0', '-2.78811358e+4', 1); + T('-3.5481789e+3', '1.6004994927e+5', -1); + T('1.9963146e+6', '-6.923e-1', 1); + T('-1.37573e-12', '2.072e+2', -1); + T('6.570067306e-1', '3.73554490286e-16', 1); + T('3.0659071736e-15', '6.946525e+1', -1); + T('-5.346e+0', '1e+0', -1); + T('8.55e-9', '7.9e-11', 1); + T('-7.5096624e+2', '3.40622424e+5', -1); + T('2.219404561e-14', '5.47749e+0', -1); + T('3.000476e+2', '-1.754092582e+1', 1); + T('0e+0', '-1.69774e+3', 1); + T('2.993e+0', '-1e+0', 1); + T('2.7528038851e+1', '-3.945799123e+4', 1); + T('-6.6266e+2', '-4.5e-19', -1); + T('9.204609e-14', '1.25862e+5', -1); + T('-7.0237408e+5', '-4.56413483775e+3', -1); + T('4.8481576e+2', '-6.53713e+3', 1); + T('1e+0', '1.103e+2', -1); + T('6.57977e+2', '-3.852e-16', 1); + T('3.861e+2', '-6.2072117462e+5', 1); + T('-6e+0', '1.3494901111e+6', -1); + T('-5.870696e-1', '-3.801808e+1', 1); + T('-3.83761721e+8', '8.081107501e-5', -1); + T('6.50057174e+5', '2.0206519e-12', 1); + T('5.5207e+4', '-2.48e+2', 1); + T('0e+0', '1.05116516384e+11', -1); + T('-1.75279284e+4', '3.899762267e-1', -1); + T('-1.6197e+0', '4.3274e+4', -1); + T('1.256294e+6', '-5.58921e-15', 1); + T('3e+0', '2.0586937916e-17', 1); + T('-3.28553e-13', '-1.18e+1', 1); + T('-2.81418e+5', '1.72529458e-12', -1); + T('7.8666421e+3', '5.9153e+0', 1); + T('4.84347589e-8', '2e+0', -1); + T('3e+0', '-2.6655512e+2', 1); + T('6.2696e-10', '-2.054382974e+1', 1); + T('6.1413274e-2', '0e+0', 1); + T('-2.9095e-18', '-6.9975956783e+8', 1); + T('4.01e-20', '-7.5588e-6', 1); + T('9.490622e-18', '-2.77e+0', 1); + T('-1.0267e-14', '-8.790091e-9', 1); + T('-4.077591e-14', '-3.0259558246e+0', 1); + T('-2.8261e+2', '-4.99857e+0', -1); + T('9.899113e+1', '1e+0', 1); + T('5.5e+0', '-7.0265e+0', 1); + T('5.286e-7', '-4.3972682e+2', 1); + T('1.5520187e+6', '1.150018e+2', 1); + T('-2.04e-10', '-4.0474e+2', 1); + T('-2.32245517e+7', '-4.96976e+4', -1); + T('-3.6487688611e-10', '-1.1763503e+2', 1); + T('8.3414625e+0', '0e+0', 1); + T('9.905071e+6', '-5.9541e-4', 1); + T('1.984307e+4', '-2.4291e-7', 1); + T('-1e+0', '-1e+0', 0); + T('2.060415969e+9', '-2.03455e+2', 1); + T('3.1982e-19', '-1.993945e+3', 1); + T('3.093739e+1', '-1.99128676855e+0', 1); + T('1.881e+1', '-1.09028754e+5', 1); + T('0e+0', '-4.7092316e-14', 1); + T('-9.455374693e-10', '-9.45812534991e+6', 1); + T('-1.67881e+4', '-2.1683630866e+3', -1); + T('6.3514013642e-17', '-4.5e+0', 1); + T('1.20179765e-20', '4.9098e+3', -1); + T('0e+0', '-7.476983768e+1', 1); + T('-8.5797e+2', '2.1e+0', -1); + T('-2.75e+1', '-1.749e-18', -1); + T('-1e+0', '8.4e+1', -1); + T('7.110682e+4', '8.5646556e+2', 1); + T('-3.1875423048e+6', '7.216e+1', -1); + T('-1.41969e+0', '0e+0', -1); + T('-3.707432e+6', '1.5048071e+2', -1); + T('-2.65447780189e+11', '2e+0', -1); + T('3.808865e+6', '-7.22140745e-10', 1); + T('2.972544e+3', '0e+0', 1); + T('1.142002886e-2', '-3.063e+0', 1); + T('-3.292e-15', '-2.2e-1', 1); + T('-9.29480350675e-6', '9.4830355594e+4', -1); + T('-2.49267401e-19', '3.3296905e+4', -1); + T('3.5057e+4', '1.2204e+3', 1); + T('2e+0', '9.51e+1', -1); + T('3.87279e+5', '-3.916681548e-13', 1); + T('7.775e+2', '1.814199961e+2', 1); + T('2.35095e-7', '9e+1', -1); + T('-8.077537e+2', '1.477341929e-7', -1); + T('-4.05364541e+3', '-5.1772081e+8', 1); + T('-8.0808881e+2', '-9.006e+1', -1); + T('-1.408092e+5', '-3.86832e+2', -1); + T('5e+0', '2e+0', 1); + T('-2.7424908566e+0', '-1.5471519e+0', -1); + T('7.31598e+0', '6.617089e+2', -1); + T('4.634e-7', '-2.8214e+3', 1); + T('-3.67e+2', '1.2e-18', -1); + T('2.5658e-5', '6.99742e+3', -1); + T('3.7635921e+2', '-2.01901e-17', 1); + T('-4.8483140421e+9', '-3.02562e+1', -1); + T('0e+0', '-2.9395143209e+8', 1); + T('-2.8599503512e+7', '5.35e-1', -1); + T('-1.7e+1', '-9.66381e+0', -1); + T('1.72e+1', '1.0349e-1', 1); + T('1.28429e+3', '2.0794611e+0', 1); + T('1.01e+0', '-5.7758e-11', 1); + T('2.227909e+5', '5.70358533e-7', 1); + T('-1.46175e+2', '-1.17142e+3', 1); + T('-9.231e+3', '1e+0', -1); + T('-1.959219085e+3', '3.71e+1', -1); + T('5.1e+0', '2.93e+2', -1); + T('-1.72022209707e+1', '0e+0', -1); + T('1.1e+0', '1e+0', 1); + T('1.71906029185e+5', '-2.14019e+0', 1); + T('2.3e+0', '-1.5055635614e+9', 1); + T('2.7786e+1', '1.061015128e+9', -1); + T('-1.56275984e+4', '1.09e+0', -1); + T('2.19791673e+1', '-3.104e+2', 1); + T('-4.3337886e+7', '4e+0', -1); + T('1e+0', '-4.22059e-7', 1); + T('3.365e+3', '-1.554e+2', 1); + T('1.1204042327e+10', '-1.3423178346e+10', 1); + T('2e+0', '-4.226459262e+1', 1); + T('-2.15204e+5', '5.958e+0', -1); + T('-9.99386226e+4', '0e+0', -1); + T('-1e+0', '-1.66246413e+7', 1); + T('4.9173e+2', '5.850707e-18', 1); + T('4.9e+0', '-4.7875e-8', 1); + T('-3e+0', '0e+0', -1); + T('1e+0', '-8.0083e-2', 1); + T('-7.83025222e+8', '-5e+0', -1); + T('-4.974944e+4', '3.1477230359e+10', -1); + T('7.180136071e+3', '-1.0544157071e-9', 1); + T('1.6665814118e-3', '1.73898e+3', -1); + T('-2.525921789e+1', '-3.93e+0', -1); + T('-1.734618e-16', '-1.6371419e-20', -1); + T('1.6444334e+6', '-2e+1', 1); + T('-1e+0', '2.072822964e+9', -1); + T('-6.473e-9', '-9.162534e-5', 1); + T('-3.1e+0', '-3.24e+0', 1); + T('1.6655834e+7', '-3.0374218803e+6', 1); + T('2.391e+0', '-3.907e+1', 1); + T('-1.7022720963e+3', '2e+0', -1); + T('4.454083713e+9', '2.0091e+4', 1); + T('-1.0366217734e-15', '-6.721993e+5', 1); + T('-5.7809e+4', '3.784169e+1', -1); + T('1.24172537e+5', '6.3e-9', 1); + T('4.2774283e-9', '2.4637e+1', -1); + T('1.6237405102e+10', '1.6962e-1', 1); + T('1.918662e+2', '1.544681756e+8', -1); + T('1.0276881e+4', '1.788601e+0', 1); + T('1.029335e-8', '1.18168265e+6', -1); + T('-2.55327e+2', '2.5825834e+6', -1); + T('0e+0', '1e+0', -1); + T('-8.909e+2', '-1.73e+2', -1); + T('5.67e+2', '2.56525383318e+5', -1); + T('-8.96e-20', '-8.32900609e+3', 1); + T('1.592758866e+9', '-3.872e+0', 1); + T('-5.639641852e+7', '8.2009e+4', -1); + T('2.9e+0', '4.5e+0', -1); + T('1.1865649388e+5', '1.78418807471e+3', 1); + T('2.07011921e-13', '2.63e+0', -1); + T('3e+0', '-2.21e+0', 1); + T('-9.34727321093e+11', '-6.86793197512e+11', -1); + T('3.9e+0', '4.2973482815e+4', -1); + T('1.227147e+5', '-1.359464668e-2', 1); + T('-5e+0', '-3.3986e+4', 1); + T('6.31103133e+7', '1.94315936e+6', 1); + T('-3.96418e+4', '-8.7168221121e+4', 1); + T('-1.64e+1', '-3.33576978e+6', 1); + T('4.952370705e-11', '-6.63267265e+2', 1); + T('1.253e+1', '-6.14622e+2', 1); + T('0e+0', '-1.442321328e+9', 1); + T('-1.180943e-6', '-9.42e-1', 1); + T('-1.037276289e+7', '-1.5944116485e-8', -1); + T('1.55813448081e+11', '1.1285443e+3', 1); + T('-2.28254e+1', '-4.9e+0', -1); + T('-1e+0', '4.594e+0', -1); + T('-1.07058028623e+0', '2.845e+3', -1); + T('7.011e+1', '0e+0', 1); + T('-4.5094e+2', '1.1459094e+3', -1); + T('2.85e+0', '-1.45112e+4', 1); + T('-1.09547404e+5', '-1.36411488349e+2', -1); + T('-3.0552725e+2', '-2.837293625e+9', 1); + T('-1.31e-5', '1.13782957e+2', -1); + T('-2.8209016e-20', '1.18e+0', -1); + T('-1.07667044e-19', '1e+0', -1); + T('1.3162128667e-10', '1.2689615338e+9', -1); + T('1.66716908e+6', '-1.2430993e-4', 1); + T('1.11122e-2', '-3.77323705304e+7', 1); + T('-7e+0', '5.5865954e+4', -1); + T('-3.15283960233e-16', '-3.2047044e-8', 1); + T('2.0846621548e+1', '3.92e-6', 1); + T('-2.8674e+1', '-1.31313084e-17', -1); + T('1.8332852e-17', '1.341e+1', -1); + T('9e+0', '-9.3e-12', 1); + T('-4.02592028644e+5', '-1.99028e+3', -1); + T('-1.541408372e+6', '-9.28e+0', -1); + T('1.5e+1', '9.783799e+2', -1); + T('-8e+0', '2.047e-7', -1); + T('1.81e+2', '1.43604e-20', 1); + T('0e+0', '-4.9101e+4', 1); + T('-1.78049643e+0', '-4.45673358e+0', 1); + T('1.722535667e+1', '-8.19890866e-9', 1); + T('-6.356e+3', '-2.77223e+2', -1); + T('-8.13e+0', '-1.3129112e+7', 1); + T('-6.2012143e-7', '-4.08330939e+4', 1); + T('-2.11991e+0', '4.592978e+2', -1); + T('-4.773043e+3', '-1.0842355e+2', -1); + T('-9.894928e+0', '6.1e-4', -1); + T('-8.7990384e-10', '-7.1295894e+6', 1); + T('-9.44946188e-18', '2e+1', -1); + T('7.76614e+0', '1.065670038e-20', 1); + T('-4.9149e+2', '1.347155498e+9', -1); + T('-2.869032e+1', '-5.892838e+4', 1); + T('-5.6497e+4', '2.2954968e+8', -1); + T('-7.75e+2', '-3.45480796e+0', -1); + T('-3.3e+0', '-6.836e+1', 1); + T('-4.6e+0', '-6.92355437e-8', -1); + T('0e+0', '-9.3e-10', 1); + T('-2.5751542e-13', '-7.26665e+5', 1); + T('-9.1e-19', '-2.22e-1', 1); + T('-3.0422594e+4', '-1.83546441e+8', 1); + T('-2.15991727483e-12', '3.70254e+2', -1); + T('-1.310483e+2', '-1.00310363e+0', -1); + T('1.272382447e+3', '1.54639612e+8', -1); + T('-8.6e-16', '1.800458e+6', -1); + T('3.7121867683e-11', '1.041097e-12', 1); + T('2.1025817638e+1', '1.7e+0', 1); + T('-3.282377e-1', '0e+0', -1); + T('1.6002692836e+7', '5.2967e+3', 1); + T('-6.59716e+5', '-1.499e+1', -1); + T('-1.489486e+3', '-2.496418887e+5', 1); + T('1.191e-18', '1.12654e+1', -1); + T('-1.28e+2', '1.3e+0', -1); + T('3.319e+3', '-7.45877113531e+11', 1); + T('-2.28982321e+8', '2.01314e-19', -1); + T('-5.569624e+5', '-3.737525683e-9', -1); + T('2.510676e-10', '2.3795e-11', 1); + T('-1.26058e-7', '6.52e+1', -1); + T('0e+0', '-1.21538e-11', 1); + T('3.75822101026e+8', '-4.6e+1', 1); + T('0e+0', '5.18418122608e+11', -1); + T('-5.2e+0', '-1.522025e+1', 1); + T('3.91627e+0', '-1e+0', 1); + T('8.625694625e+0', '4.003945628e+5', -1); + T('-1.5e+1', '1.0794745045e+8', -1); + T('-6.683982e-9', '1.3286e-5', -1); + T('2.148885316e+8', '-6.403e+3', 1); + T('-3.393964981e+1', '1.17e+1', -1); + T('-2.171e+0', '2.44e-19', -1); + T('4.974e+2', '4.441821841e+1', 1); + T('3.9772342e+7', '-1.2177e+1', 1); + T('-5.6487205452e+10', '1.616928e+0', -1); + T('2e+0', '-2.4219201896e+8', 1); + T('4.1809266e+0', '3e+0', 1); + T('3.5648124786e-6', '6.165789278e+0', -1); + T('-6.0454e+4', '-3.3e+0', -1); + T('-1.01e-7', '1.01747e-2', -1); + T('-1e+0', '4.6e-9', -1); + T('7.181192e-6', '4.81e+2', -1); + T('-2.14830776492e+11', '1.56e+2', -1); + T('-1.60213948e-3', '5.539e+3', -1); + T('1.678951271e-7', '5.34118751e+7', -1); + T('7.293818e+5', '2.373e-10', 1); + T('9.65991e+0', '5.66e+0', 1); + T('2.315503e-6', '-6.93e+0', 1); + T('2.19017494955e-3', '-7.4e+1', 1); + T('5.43469e+6', '0e+0', 1); + T('-2.330431561e+3', '1.52623e+1', -1); + T('8.463333e+6', '-2.4e+1', 1); + T('-2.12e+2', '1.5278e+3', -1); + T('-9.61324414111e+11', '1e+0', -1); + T('5.1e+0', '-4.03e+1', 1); + T('0e+0', '8.77053e+1', -1); + T('2.7e+0', '-4.654243671e+4', 1); + T('-2.61595754e+2', '3.4371351e-3', -1); + T('1.9236e+4', '0e+0', 1); + T('1.28744e+5', '1.588e+3', 1); + T('-7.12124e+3', '2.63043e+5', -1); + T('-2.87e+2', '-8.99490089e+8', 1); + T('-9.1451e+1', '-5.621833e+6', 1); + T('-1.458423128e+3', '2.45879369e+4', -1); + T('-2.2e+0', '5e+0', -1); + T('6.7158e+2', '2e+0', 1); + T('-1.861834055e+1', '3.46e+0', -1); + T('-1.42e-19', '-4.4399e+2', 1); + T('-7.7995e-19', '-3.37524763e+8', 1); + T('6.245562401e+3', '-1.9e+0', 1); + T('-7.4396248258e+8', '1.3184e+1', -1); + T('4.2194232e+0', '-9.5e+0', 1); + T('-2.09763179071e+0', '-2.9462e+3', 1); + T('8.7009653053e-4', '5.89164955e+7', -1); + T('-7.256717176e+1', '1.1256e+3', -1); + T('-2e+0', '1.74987486218e+6', -1); + T('-2.8e-2', '-9.439e+0', 1); + T('4.3e-18', '8.421e-3', -1); + T('-3.635286e-8', '1.27536e+2', -1); + T('9e+0', '-8.95518866e+6', 1); + T('7.7059164e+7', '-1.8e+0', 1); + T('1.75973e-16', '4.9e-4', -1); + T('-5.956e+3', '1.1918794e+1', -1); + T('2.07e+1', '0e+0', 1); + T('4.152e+0', '1.850529e-20', 1); + T('4.74e+0', '-5.322106e-18', 1); + T('1.46e+0', '-4.00403e+1', 1); + T('2.36505254e-2', '1.22e-13', 1); + T('5.4446e+3', '-6.5681622266e+1', 1); + T('-5.298322e+4', '-2.662708719e+8', 1); + T('-1.7590457129e-9', '-3.93970854954e+8', 1); + T('5.65218e+0', '-2.996191168e+7', 1); + T('2.9632e-6', '2.19966262214e-20', 1); + T('-4.416e+0', '-1.813776e+4', 1); + T('-1.974e+0', '-6.8e+0', 1); + T('-1.287908e+5', '-9.04795615e-3', -1); + T('-1.2376068058e+2', '1e+0', -1); + T('-2.8599877887e+0', '0e+0', -1); + T('1.4818911e-14', '3.170254e+4', -1); + T('2e-13', '-1.7343311e+6', 1); + T('-1e+0', '2.697691e+3', -1); + T('-1.69563735921e+7', '-1.18e+0', -1); + T('-1.221141e-16', '1.56460805e+8', -1); + T('3e+0', '3.23926451e+3', -1); + T('1.3233e+1', '3.15e+0', 1); + T('-1.78284e+6', '0e+0', -1); + T('1.9075e-5', '-6.4991913129e+1', 1); + T('5.55554e+5', '-6.18098e+6', 1); + T('6.271294e+6', '0e+0', 1); + T('2.6978874e+4', '1.3646501e-2', 1); + + T('24920', '2492', 1); + T('52923623235884.48110534', '52923623235884.4811053', 1); + T('-1018638522.07495421826817980', '-1018638522.0749542182681798', 0); + T('0.00000364136900', '0.0000036413690', 0); + T('-135859105.5', '-785094047.8293510', 1); + T('-4.1657902332676', '-4.165790233267', -1); + T('-19727509864588.3074', '-19727509864588.307', -1); + T('-0.0000000004020750915', '-0.000000000402075091', -1); + T('-1387043910095766779', '-138704391009576677', -1); + T('7.140', '7.14', 0); + T('-0.0000000083734544824491024997299767812', '-0.000000008373454482449102499729976781', -1); + T('-0.000000000000000000739', '-0.00000000000000000073', -1); + T('0.000000000000000673058992451447407822', '0.00000000000000067305899245144740782', 1); + T('107795751025937925', '10779575102593792', 1); + T('-0.000000140098925302534364687090608708', '-0.00000014009892530253436468709060870', -1); + T('-96807628344097344020361511087', '-9680762834409734402036151108', -1); + T('5236305598733477493821144', '523630559873347749382114', 1); + T('0.000012299669952207', '0.00001229966995220', 1); + T('-0.000000000026183583081', '-0.00000000002618358308', -1); + T('18157090114632.3949228869562', '18157090114632.394922886956', 1); + T('-8659730.88830', '-8659730.8883', 0); + T('92367.0595855628821', '92367.059585562882', 1); + T('-1191', '-119', -1); + T('0.809', '0.80', 1); + T('0.000000000000000000518579249419024975384099', '0.00000000000000000051857924941902497538409', 1); + T('196.516', '196.51', 1); + T('1902.90', '1902.9', 0); + T('0.012', '0.01', 1); + T('2521110', '252111', 1); + T('-24795', '-2479', -1); + T('3134.367349', '3134.36734', 1); + T('69006142577114620504.8', '36.0', 1); + T('-437609971173626.98792503', '-437609971173626.9879250', -1); + T('-36.11385408453080506', '-36.1138540845308050', -1); + T('1686.321277', '1686.32127', 1); + T('-84595.85616391029195941', '-84595.8561639102919594', -1); + T('-0.00000000000308289301068', '-0.0000000000030828930106', -1); + T('5', '273372254047642077337', -1); + T('52666073577.1290781606630097094', '52666073577.129078160663009709', 1); + T('0.000000000000000043918', '0.00000000000000004391', 1); + T('-139225776437585184717785093.38', '-139225776437585184717785093.3', -1); + T('-5584.1138579', '-5584.113857', -1); + T('-129253519658715.0', '112386803', -1); + T('-2290.5184387881314043589', '-2290.518438788131404358', -1); + T('-74094153218599401.874188', '-74094153218599401.87418', -1); + T('15.351267988724923583838', '15.35126798872492358383', 1); + T('135.603302', '135.60330', 1); + T('-50.57278382', '-50.5727838', -1); + T('216.98487', '216.9848', 1); + T('-21134.0', '-1', -1); + T('36667803450713332911.35544', '36667803450713332911.3554', 1); + T('-9554701478470869.90', '-9554701478470869.9', 0); + T('-5', '-0.000000022007149864827', -1); + T('-156737758.9503928528394581', '-156737758.950392852839458', -1); + T('1364938.01055262931', '1364938.0105526293', 1); + T('-439149.168324', '-439149.16832', -1); + T('15.521233412177260268175125', '15.52123341217726026817512', 1); + T('229652.78244076556531565167292', '229652.7824407655653156516729', 1); + T('-3121052385.065', '-3121052385.06', -1); + T('-717120317616.005596758', '-717120317616.00559675', -1); + T('50773299385872514328347782', '5077329938587251432834778', 1); + T('0.000000000000000000130149421115895602435542', '0.00000000000000000013014942111589560243554', 1); + T('0.00000000000000002742431130831653697264', '0.0000000000000000274243113083165369726', 1); + T('19079804604.0447062', '19079804604.044706', 1); + T('-269212379960084901007498.0473', '-269212379960084901007498.047', -1); + T('-0.358400680', '-0.35840068', 0); + T('-21574492412094843183898085', '-2157449241209484318389808', -1); + T('-71845410882550730027450926946', '-7184541088255073002745092694', -1); + T('1544.607426323', '1544.60742632', 1); + T('127.8549399242576867890', '127.854939924257686789', 0); + T('-95462566651371.86749077', '-95462566651371.8674907', -1); + T('1854469.010632854371428790793', '1854469.01063285437142879079', 1); + T('-0.0000000000511087722639524', '-0.000000000051108772263952', -1); + T('0', '-312658443822318131.65429523', 1); + T('-2343445339.96760', '-2343445339.9676', 0); + T('0.00000000000000147', '0.0000000000000014', 1); + T('1844372.33', '1844372.3', 1); + T('22982.419674718', '22982.41967471', 1); + T('108594857698581658410.0737', '108594857698581658410.073', 1); + T('-3.033420', '-3.03342', 0); + T('55810550.26594153069059591', '55810550.2659415306905959', 1); + T('628859628.7558', '628859628.755', 1); + T('-547.10', '-547.1', 0); + T('-0.0000000000000000009984305906072622822830075391', '-0.000000000000000000998430590607262282283007539', -1); + T('-41958933743619342422791223708', '-4195893374361934242279122370', -1); + T('-2167382.31949', '-2167382.3194', -1); + T('-0.000000242769356', '-0.00000024276935', -1); + T('175535', '17553', 1); + T('13196567561552073746181107', '1319656756155207374618110', 1); + T('-836.283', '-836.28', -1); + T('-151.6480011', '-151.648001', -1); + T('0.00000000000002112201668247567119900', '0.0000000000000211220166824756711990', 0); + T('-291644372.8176', '-291644372.817', -1); + T('2281', '228', 1); + T('0.000000324729973', '0.00000032472997', 1); + T('-76.8', '0.0001732215889415949412350821', -1); + T('0.0000001164790050629621890224', '0.000000116479005062962189022', 1); + T('-14.262813961', '-14.26281396', -1); + T('-4785353721725589457.76', '-4785353721725589457.7', -1); + T('-0.000000000048', '-0.00000000004', -1); + T('-5324145565493', '-532414556549', -1); + T('46', '-0.000000000566010149624486839', 1); + T('-5225949604210842406679429.93784', '-5225949604210842406679429.9378', -1); + T('-1.222170392', '-1.22217039', -1); + T('-0.00000000000000010679843092306603352830', '-0.0000000000000001067984309230660335283', 0); + T('-844323207816052268597', '-84432320781605226859', -1); + T('-273294.449058068769224', '-273294.44905806876922', -1); + T('-0.000061510623375', '-0.00006151062337', -1); + T('-12', '-1', -1); + T('-1146774191544920686.21847', '-1146774191544920686.2184', -1); + T('7308692', '730869', 1); + T('14463865367.0965', '14463865367.096', 1); + T('0.1790976', '0.179097', 1); + T('-0.00000088251244578915638133974523907', '-0.0000008825124457891563813397452390', -1); + T('611.7', '0', 1); + T('-309574907706487960682.9', '0.67178678369791512733235574', -1); + T('-2889196478.141321900', '-2889196478.14132190', 0); + T('163.97', '163.9', 1); + T('-2194652189.27', '-2194652189.2', -1); + T('-1259.4915400', '-1259.491540', 0); + T('-30128337', '-3012833', -1); + T('-403904222820946941.150781058', '-403904222820946941.15078105', -1); + T('-58.2030', '-58.203', 0); + T('126.5713124708539037', '126.571312470853903', 1); + T('-4', '220065464', -1); + T('1450774048.18357046', '1450774048.1835704', 1); + T('13694997566335', '1369499756633', 1); + T('-24.57850991168163044469', '-24.5785099116816304446', -1); + T('-3319659536.191', '-3319659536.19', -1); + T('10865.96', '10865.9', 1); + T('-188510157872663341831', '-18851015787266334183', -1); + T('62342691016946', '6234269101694', 1); + T('-20478.3157551016331897', '-20478.315755101633189', -1); + T('-2575595857296977614.9440249', '-2575595857296977614.944024', -1); + T('0.00026567201697160', '0.0002656720169716', 0); + T('-0.000000010270578723943120849114', '-0.00000001027057872394312084911', -1); + T('0.00000022383', '0.0000002238', 1); + T('2376696496129402852542.91945204', '2376696496129402852542.9194520', 1); + T('0.0000000000000000001100974033101769024', '0.000000000000000000110097403310176902', 1); + T('24448082823953.92815', '24448082823953.9281', 1); + T('49.832437916691637221', '49.83243791669163722', 1); + T('-10536487297762435987902669715', '-1053648729776243598790266971', -1); + T('-296549547862779403135.41', '-296549547862779403135.4', -1); + T('-9.5', '2.21', -1); + T('1.98179', '1.9817', 1); + T('-1199981732936688041', '-119998173293668804', -1); + T('0', '-0.0000000000000000000109460230704099637262', 1); + T('-50936625.15944921283142', '-50936625.1594492128314', -1); + T('-0.000000000003616130540960851987251', '-0.00000000000361613054096085198725', -1); + T('-0.000000000980270326383637798406174532', '-0.00000000098027032638363779840617453', -1); + T('-0.0000000000000000000300003812042071861', '-0.000000000000000000030000381204207186', -1); + T('83049889282.1', '0.00000000000001025185302485201018151409355123', 1); + T('233131790953874220450317498.14', '233131790953874220450317498.1', 1); + T('-3.7412702321747291', '-3.741270232174729', -1); + T('-0.0000009922266', '-0.000000992226', -1); + T('-1', '0.0000002780803', -1); + T('0.0000000000002146830950262', '0.000000000000214683095026', 1); + T('1', '-1.5071', 1); + T('-0.000000000465117016507026272818023', '-0.00000000046511701650702627281802', -1); + T('35.39382', '35.3938', 1); + T('-209.660', '-209.66', 0); + T('-90', '-9', -1); + T('0', '-0.00692', 1); + T('-180091979.9605073632174693529', '-180091979.960507363217469352', -1); + T('-122272534374617365', '-12227253437461736', -1); + T('-8572377', '-857237', -1); + T('-0.08864728209412867534496', '-0.0886472820941286753449', -1); + T('0.00000000000000000006218601802455410039603451124', '0.0000000000000000000621860180245541003960345112', 1); + T('8920721679663873214715343.144', '8920721679663873214715343.14', 1); + T('0.274427890206313529182339245', '0.27442789020631352918233924', 1); + T('-2011471992.5', '0', -1); + T('1599651.4112339122', '1599651.411233912', 1); + T('8257580447850.449229990', '8257580447850.44922999', 0); + T('-834308419.89', '-834308419.8', -1); + T('196710676681449226960408', '19671067668144922696040', 1); + T('-41631749783269189618702.063072', '-41631749783269189618702.06307', -1); + T('0.00000054256828175879255377', '0.0000005425682817587925537', 1); + T('10420033248908625.057365906', '10420033248908625.05736590', 1); + T('33958751985671992.081663881', '33958751985671992.08166388', 1); + T('38573.3', '-73', 1); + T('-220.99', '-220.9', -1); + T('0.00000000000000000006632', '0.0000000000000000000663', 1); + T('136.8915', '136.891', 1); + T('-42909979.8482', '-42909979.848', -1); + T('316479242.2412', '316479242.241', 1); + T('-36.2228569144', '-36.222856914', -1); + T('-0.000000000000000145887', '-0.00000000000000014588', -1); + T('-0.034420', '-0.03442', 0); + T('-7487.2940835', '-7487.294083', -1); + T('0.0000000001322905', '0.000000000132290', 1); + T('4540208843067942284033465362', '454020884306794228403346536', 1); + T('-0.00001872', '-0.0000187', -1); + T('1.679', '1.67', 1); + T('-0.003693', '-0.00369', -1); + T('-73534521830291117736646922', '-7353452183029111773664692', -1); + T('-439971017251.505', '-439971017251.50', -1); + T('-0.00000000070562052512643', '-0.0000000007056205251264', -1); + T('0.00000000000036078093367389488954734882', '0.0000000000003607809336738948895473488', 1); + T('183.3930', '183.393', 0); + T('0.000000000000000000045738234226758', '0.00000000000000000004573823422675', 1); + T('5184478988.786158717', '5184478988.78615871', 1); + T('1228655406.4', '-0.000000000001861', 1); + T('5.4', '29713477480117786223897387069', -1); + T('-31065857257211', '-3106585725721', -1); + T('-0.0000000080362523', '-0.000000008036252', -1); + T('52', '-4818398178.32313312', 1); + T('44618406226893376866220.0165600', '44618406226893376866220.016560', 0); + T('60575775575555146660699.8158363', '60575775575555146660699.815836', 1); + T('0.000000000000000000010650670229091', '0.00000000000000000001065067022909', 1); + T('-1.27', '-1.2', -1); + T('-110508.5720888844', '-110508.572088884', -1); + T('584649.40290077882', '584649.4029007788', 1); + T('-991707393.8949', '-991707393.894', -1); + T('-0.000000000000000005615887181289922', '-0.00000000000000000561588718128992', -1); + T('277763471701101937737505118889', '27776347170110193773750511888', 1); + T('0.000000000006833349812829515208501351867', '0.00000000000683334981282951520850135186', 1); + T('0.0000000000000000000825119426382375328', '0.000000000000000000082511942638237532', 1); + T('164214635502117894.45016275', '164214635502117894.4501627', 1); + T('156755613767148.4684291', '156755613767148.468429', 1); + T('337131.847212007602363066', '337131.84721200760236306', 1); + T('-743114207120.9575', '-743114207120.957', -1); + T('0.00097637', '0.0009763', 1); + T('0.000000000000000016965784141152262443', '0.00000000000000001696578414115226244', 1); + T('-0.679736199868', '-0.67973619986', -1); + T('31059776.87593', '31059776.8759', 1); + T('-0.00000000000315991373636284335', '-0.0000000000031599137363628433', -1); + T('-4717725826066274081763.901', '-4717725826066274081763.90', -1); + T('-0.00000000000000000010531404316238', '-0.0000000000000000001053140431623', -1); + T('-0.0000000000000092308522050', '-0.000000000000009230852205', 0); + T('-31939210155282393', '-3193921015528239', -1); + T('234.1354842403', '234.135484240', 1); + T('0', '25500772861644.63741880315', -1); + T('-2820.544', '-2820.54', -1); + T('-0.0000000000000000000171940410392', '-0.000000000000000000017194041039', -1); + T('-3953375698956251412.549803593', '-3953375698956251412.54980359', -1); + T('-198189130.0782001207250', '-198189130.078200120725', 0); + T('-61352644292414307', '-6135264429241430', -1); + T('92629.915756020804289', '92629.91575602080428', 1); + T('2.2482', '2.248', 1); + T('72.5680804939448786575044940949', '72.568080493944878657504494094', 1); + T('29840260084837.110', '29840260084837.11', 0); + T('-154554841.4372781448', '-154554841.437278144', -1); + T('-4715870743255944543754826804', '-471587074325594454375482680', -1); + T('0', '-673196116754.92594558368787', 1); + T('122070161359937463835761732151', '12207016135993746383576173215', 1); + T('0.00000000000000001992532704', '0.0000000000000000199253270', 1); + T('186651.580960498548', '186651.58096049854', 1); + T('2493953119584326.98694', '2493953119584326.9869', 1); + T('0.0000000000248988460997106039259', '0.000000000024898846099710603925', 1); + T('0.00000000126179033507144813915', '0.0000000012617903350714481391', 1); + T('8.5210960565733', '8.521096056573', 1); + T('-0.115997983788', '-0.11599798378', -1); + T('116478460414160856', '11647846041416085', 1); + T('-0.0000000000410758577068834165', '-0.000000000041075857706883416', -1); + T('-3.877785932990082724610869253', '-3.87778593299008272461086925', -1); + T('-1104.347468121953607708416', '-1104.34746812195360770841', -1); + T('1788566441339035', '178856644133903', 1); + T('-30944694030711', '-3094469403071', -1); + T('-1', '-59318.35091346', 1); + T('22.928', '22.92', 1); + T('-20.365598091573148941340533554', '-20.36559809157314894134053355', -1); + T('164432', '16443', 1); + T('-1505.1453', '-1505.145', -1); + T('14849.5', '-1035048221058', 1); + T('-21813.7768933', '-21813.776893', -1); + T('-3', '-133', 1); + T('-0.0000000000000011616', '-0.000000000000001161', -1); + T('289100821.7784', '289100821.778', 1); + T('6019702.0', '-354753899721763221.19223', 1); + T('37105.701735589966456', '37105.70173558996645', 1); + T('15977.362', '15977.36', 1); + T('-24795509226542636447908722', '-2479550922654263644790872', -1); + T('-13.2', '0', -1); + T('-0.000000000000000037701155411491341477', '-0.00000000000000003770115541149134147', -1); + T('2513229.7', '-0.0000000000000011002329726788604366137233', 1); + T('10760725997292.38254893708', '10760725997292.3825489370', 1); + T('504177973263.4841942', '504177973263.484194', 1); + T('3200.062372584607515', '3200.06237258460751', 1); + T('-10354064661931765.3820', '-10354064661931765.382', 0); + T('13619513905.82', '13619513905.8', 1); + T('2', '-20.2867031651859982183', 1); + T('-0.000000001042392150476', '-0.00000000104239215047', -1); + T('-15943439249924914', '-1594343924992491', -1); + T('-1012088906865956056745.1886775', '-1012088906865956056745.188677', -1); + T('0.0000206', '0.000020', 1); + T('-186827747346939858.7304', '-186827747346939858.730', -1); + T('-30132095587981544870.6', '1489083.55535518931', -1); + T('7012', '701', 1); + T('40130924927125476099322.48103', '40130924927125476099322.4810', 1); + T('0.0000000000000000000981', '0.000000000000000000098', 1); + T('-19372.3055662', '-19372.305566', -1); + T('-19.83638584167', '-19.8363858416', -1); + T('42.6', '5178793.40712651', -1); + T('498949500082608940888', '49894950008260894088', 1); + T('2790925312621021.3331276', '2790925312621021.333127', 1); + T('0.00000000000844831740749858241', '0.0000000000084483174074985824', 1); + T('6.50', '6.5', 0); + T('0.000003462780', '0.00000346278', 0); + T('-751629020.898865', '-751629020.89886', -1); + T('0.00000007309247977705', '0.0000000730924797770', 1); + T('-0.00220406121000', '-0.0022040612100', 0); + T('1120182731416530221572473', '112018273141653022157247', 1); + T('-0.8347609918057479', '-0.834760991805747', -1); + T('-5807.666472', '-5807.66647', -1); + T('-4167388.899763015', '-4167388.89976301', -1); + T('-401150740402834660825.50243454', '-401150740402834660825.5024345', -1); + T('-35794.29921122403049778953976', '-35794.2992112240304977895397', -1); + T('84431862959.2121997678178446917', '84431862959.212199767817844691', 1); + T('-2539996.17345032025783026803138', '-2539996.1734503202578302680313', -1); + T('0.00000000000000099705053162571348', '0.0000000000000009970505316257134', 1); + T('23401.12855330127', '23401.1285533012', 1); + T('8164385.3895774781453', '8164385.389577478145', 1); + T('-0.000000000000000005992633459836508190', '-0.00000000000000000599263345983650819', 0); + T('0.00000001336378654', '0.0000000133637865', 1); + T('0.50994808508176183', '0.5099480850817618', 1); + T('-1600777113482754136', '-160077711348275413', -1); + T('-4525072.832', '-4525072.83', -1); + T('-21', '-2', -1); + T('268678.963124964', '268678.96312496', 1); + T('0.0002563283407958355682202564483', '0.000256328340795835568220256448', 1); + T('-0.001692254617913891380920881908', '-0.00169225461791389138092088190', -1); + T('-1322598467.8998', '-1322598467.899', -1); + T('-12041123394.9989604', '-12041123394.998960', -1); + T('0.0000000000000195012', '0.000000000000019501', 1); + T('-4342560023646872240660', '-434256002364687224066', -1); + T('-35117', '-3511', -1); + T('0.00000000000000000069551761107698717501', '0.0000000000000000006955176110769871750', 1); + T('1185010344.148941', '1185010344.14894', 1); + T('-0.000000000030952985207690202030601829098', '-0.00000000003095298520769020203060182909', -1); + T('0.000000000000000582651473217774254164326212239', '0.00000000000000058265147321777425416432621223', 1); + T('504359.80087', '504359.8008', 1); + T('-1023', '-102', -1); + T('-0.00000000000044602178960376487', '-0.0000000000004460217896037648', -1); + T('-27163960789.700', '-27163960789.70', 0); + T('9.75', '9.7', 1); + T('15749.6', '-64114895', 1); + T('-1.78646', '-1.7864', -1); + T('0', '-0.0000293962545673136560132940521', 1); + T('1568482319330379083.46066570', '1568482319330379083.4606657', 0); + T('1.5', '0.24059486639369', 1); + T('72631883478316528107390894.761', '72631883478316528107390894.76', 1); + T('34.435342', '34.43534', 1); + T('-21658874', '-2165887', -1); + T('4.39', '4.3', 1); + T('0.0001793758139490056488536388', '0.000179375813949005648853638', 1); + T('0.000014078039388936962', '0.00001407803938893696', 1); + T('0.00000000000003559010620', '0.0000000000000355901062', 0); + T('1114593033649166', '111459303364916', 1); + T('-839727705223987847927.8', '0.0000000000000000009297088124606271555053', -1); + T('0.000000001093460554010662', '0.00000000109346055401066', 1); + T('-103.512', '-103.51', -1); + T('67798048.163', '67798048.16', 1); + T('52308232397211107247556311601', '5230823239721110724755631160', 1); + T('0.000000000000000001692', '0.00000000000000000169', 1); + T('0.001001742891829562912794', '0.00100174289182956291279', 1); + T('44854731', '4485473', 1); + T('-142442148181118926872.0291262', '-142442148181118926872.029126', -1); + T('-212.25', '-212.2', -1); + T('0.00064262226396649288736045009', '0.0006426222639664928873604500', 1); + T('-1963634914900782.3083054837942', '-1963634914900782.308305483794', -1); + T('-29235219.36', '-29235219.3', -1); + T('13157328.110', '13157328.11', 0); + T('-0.00000024923670350319764405595266619', '-0.0000002492367035031976440559526661', -1); + T('211241733874.26', '211241733874.2', 1); + T('-0.0000000000001031601613971119366688714', '-0.000000000000103160161397111936668871', -1); + T('-41.38924804686835819982429', '-41.3892480468683581998242', -1); + T('-6', '-0.00000000000947293362099347980476194676305', -1); + T('0', '2025.61', -1); + T('4509184573.49', '4509184573.4', 1); + T('0.00000000000000001080', '0.0000000000000000108', 0); + T('0.000000000000000025970809826510597', '0.00000000000000002597080982651059', 1); + T('-10487551.18', '-10487551.1', -1); + T('-1', '-232678585.74', 1); + T('2144754227667106756.251334', '2144754227667106756.25133', 1); + T('11696039.4573616732', '11696039.457361673', 1); + T('1.8', '-1197.974427959', 1); + T('15.0', '0.14094197085256646250149695458', 1); + T('-9911214476849.9868926', '-9911214476849.986892', -1); + T('746601322434.3', '-2026225456262211.028', 1); + T('33327.320', '33327.32', 0); + T('37.45616', '37.4561', 1); + T('1613310.79', '1613310.7', 1); + T('-324.19116', '-324.1911', -1); + T('-8205973490351098524', '-820597349035109852', -1); + T('-38010778199', '-3801077819', -1); + T('465062636441606050103294707247', '46506263644160605010329470724', 1); + T('-234531342243689027509422607.087', '-234531342243689027509422607.08', -1); + T('-6519.701031489886865549', '-6519.70103148988686554', -1); + T('-27758350575381', '-2775835057538', -1); + T('11205680254917.29959', '11205680254917.2995', 1); + T('2037540', '203754', 1); + T('-0.000000000143432822908384760', '-0.00000000014343282290838476', 0); + T('-1080471500378115463.91037', '-1080471500378115463.9103', -1); + T('11310.5806', '11310.580', 1); + T('268.4', '4405497532754453.71', -1); + T('-0.03269186675484629883', '-0.0326918667548462988', -1); + T('3.0', '-1246100744', 1); + T('-0.000009472607806448155830419', '-0.00000947260780644815583041', -1); + T('-68623184.5', '-1870260073', 1); + T('0.00000000115796390522683677275464134000', '0.0000000011579639052268367727546413400', 0); + T('-0.000000001712702962512851', '-0.00000000171270296251285', -1); + T('6963.3801375810328365724139570', '6963.380137581032836572413957', 0); + T('0.000000000000000136327583962505', '0.00000000000000013632758396250', 1); + T('-179275.62567103827058669819082', '-179275.6256710382705866981908', -1); + T('0.00000218570795745319276132718732', '0.0000021857079574531927613271873', 1); + T('68.31423316364099583801307', '68.3142331636409958380130', 1); + T('19.5833307957304445294855674', '19.583330795730444529485567', 1); + T('4.02', '4.0', 1); + T('-862843', '-86284', -1); + T('-56544409662235409.368186', '-56544409662235409.36818', -1); + T('-0.00000000000003660585469627', '-0.0000000000000366058546962', -1); + T('-1.863', '-1.86', -1); + T('52501888926', '5250188892', 1); + T('-1', '-0.00000000000000000978061879517092', -1); + T('-0.00000000140842797026112010675644120', '-0.0000000014084279702611201067564412', 0); + T('-8681.34675166', '-8681.3467516', -1); + T('70986248658313756946.175', '70986248658313756946.17', 1); + T('9087.12275147312492852', '9087.1227514731249285', 1); + T('-1946391549304989528206958429.3', '0.00000000000000000001852761384', -1); + T('-24991110196476816.5973432', '-24991110196476816.597343', -1); + T('0.000000000000000012941178189261090807423', '0.00000000000000001294117818926109080742', 1); + T('12016926398.4701744866213809', '12016926398.470174486621380', 1); + T('3012709140.5485148192204195', '3012709140.548514819220419', 1); + T('-0.000000000000014627930', '-0.00000000000001462793', 0); + T('332348006.1892716773566', '332348006.189271677356', 1); + T('-0.000000019', '-0.00000001', -1); + T('-0.0000024642005864', '-0.000002464200586', -1); + T('-15853920353685720', '-1585392035368572', -1); + T('-3', '0.00334', -1); + T('-4368864535997.00731830', '-4368864535997.0073183', 0); + T('0.0000000000000000010', '0.000000000000000001', 0); + T('-307303170292.614', '-307303170292.61', -1); + T('25.45464373426403840448612', '25.4546437342640384044861', 1); + T('942241618172218308593287', '94224161817221830859328', 1); + T('0.00000000000000005357021085236752029646', '0.0000000000000000535702108523675202964', 1); + T('0.000000000357348983', '0.00000000035734898', 1); + T('-1578782291785511380364', '-157878229178551138036', -1); + T('-76812604459187.94', '-76812604459187.9', -1); + T('0.000000000000000000024', '0.00000000000000000002', 1); + T('80910090177', '8091009017', 1); + T('26196262061157.296', '26196262061157.29', 1); + T('-2.5419448086543270', '-2.541944808654327', 0); + T('5510.149', '5510.14', 1); + T('240282.7241338', '240282.724133', 1); + T('361596169011252', '36159616901125', 1); + T('-203941370720480263273.3', '7313.9912', -1); + T('-6425057953.0172', '-6425057953.017', -1); + T('3529900444.00198687592090253454', '3529900444.0019868759209025345', 1); + T('-1913233401877.8263043645', '-1913233401877.826304364', -1); + T('0.00000000231115060509654299602960266', '0.0000000023111506050965429960296026', 1); + T('-18819022481403295095312', '-1881902248140329509531', -1); + T('-13790408.0512', '-13790408.051', -1); + T('2996.67', '2996.6', 1); + T('5', '-2364783035602699164.1934942679', 1); + T('-794688606062', '-79468860606', -1); + T('-15183315947.8764211541', '-15183315947.876421154', -1); + T('15976.600931534513375', '15976.60093153451337', 1); + T('62985782290', '6298578229', 1); + T('-0.000000000000000136844163154210', '-0.00000000000000013684416315421', 0); + T('9311325062667667325773987', '931132506266766732577398', 1); + T('-251.776', '-251.77', -1); + T('69.947', '69.94', 1); + T('494.518135609425364940472684', '494.51813560942536494047268', 1); + T('-0.000000000000000000770311595488584', '-0.00000000000000000077031159548858', -1); + T('-31883468122.462112645954460826', '-31883468122.46211264595446082', -1); + T('45164896297917952.745283345624', '45164896297917952.74528334562', 1); + T('9.9', '6607070556969953716001823', -1); + T('0.00000000000015847318576697', '0.0000000000001584731857669', 1); + T('8453134914884811', '845313491488481', 1); + T('4363007389023360.0947505417', '4363007389023360.094750541', 1); + T('0.00000651', '0.0000065', 1); + T('63980', '6398', 1); + T('184865087582523954342727244.41', '184865087582523954342727244.4', 1); + T('210', '21', 1); + T('160857383504.45305139461', '160857383504.4530513946', 1); + T('-68212.03884', '-68212.0388', -1); + T('0.000000000000000000027320749051653154055', '0.00000000000000000002732074905165315405', 1); + T('0.0000000018738126472074437195860615988', '0.000000001873812647207443719586061598', 1); + T('-1119289980974198379.09520', '-1119289980974198379.0952', 0); + T('0.00000000000020615568', '0.0000000000002061556', 1); + T('24740673.0', '-19.6', 1); + T('-0.00000000000000000008590177716950083750561846', '-0.0000000000000000000859017771695008375056184', -1); + T('3', '381552602624', -1); + T('-194022.047372437749', '-194022.04737243774', -1); + T('-19.840941985', '-19.84094198', -1); + T('786400.65729', '786400.6572', 1); + T('-0.0000037430397514518105', '-0.000003743039751451810', -1); + T('279955180857166858.67063', '279955180857166858.6706', 1); + T('7.74', '7.7', 1); + T('0.21829393131', '0.2182939313', 1); + T('124841568240942.234680', '124841568240942.23468', 0); + T('0.000000000000000471099502548165170284259', '0.00000000000000047109950254816517028425', 1); + T('-99.86772739', '-99.8677273', -1); + T('10', '41950771951.66109', -1); + T('-0.00000000000000209702', '-0.0000000000000020970', -1); + T('-0.000002340625428766004404187457', '-0.00000234062542876600440418745', -1); + T('-4763.9', '2.034660667930931', -1); + T('4038', '403', 1); + T('9602830359170510968473768.362', '9602830359170510968473768.36', 1); + T('1673967.68004214151', '1673967.6800421415', 1); + T('-40724652990901152.3', '-1', -1); + T('5.3613955', '5.361395', 1); + T('-50544224094691571.5806233861187', '-50544224094691571.580623386118', -1); + T('971836.46599301', '971836.4659930', 1); + T('0.0000000000000000492654484203', '0.000000000000000049265448420', 1); + T('0.0000000000000273350022839', '0.000000000000027335002283', 1); + T('-0.0000000000000111187728980548441', '-0.000000000000011118772898054844', -1); + T('240.32166914346', '240.3216691434', 1); + T('-301.469168', '-301.46916', -1); + T('0', '361314256851430.8380', -1); + T('4095.137770623652511', '4095.13777062365251', 1); + T('0.0015377038155762591158011773', '0.001537703815576259115801177', 1); + T('-122.105313489953435', '-122.10531348995343', -1); + T('-12529067051281794', '-1252906705128179', -1); + T('-0.0000064280', '-0.000006428', 0); + T('728173692003587479', '72817369200358747', 1); + T('0.00000000005148126849474197', '0.0000000000514812684947419', 1); + T('155032124343881936061774467.7', '71403.71', 1); + T('5336736899935835.270053', '5336736899935835.27005', 1); + T('174556.818526489', '174556.81852648', 1); + T('-0.00000000529718819', '-0.0000000052971881', -1); + T('39710699.39476764508186780', '39710699.3947676450818678', 0); + T('-504505.226304998729', '-504505.22630499872', -1); + T('121.845727307', '121.84572730', 1); + T('-0.0000000000014085632', '-0.000000000001408563', -1); + T('-53304292.806841332223', '-53304292.80684133222', -1); + T('0.00000000000000000029', '0.0000000000000000002', 1); + T('0.000000000000162235692', '0.00000000000016223569', 1); + T('1124.8204793587524', '1124.820479358752', 1); + T('1676932756858', '167693275685', 1); + T('-138785033434702745562559175', '-13878503343470274556255917', -1); + T('-26787241126112270.786851', '-26787241126112270.78685', -1); + T('3.01', '3.0', 1); + T('0.00000000000000165985383', '0.0000000000000016598538', 1); + T('0.000000002121', '0.00000000212', 1); + T('100065.900759', '100065.90075', 1); + T('3.0786', '3.078', 1); + T('1829645.4450108032076981336', '1829645.445010803207698133', 1); + T('-31.80223', '-31.8022', -1); + T('530006.60', '530006.6', 0); + T('0.001298918', '0.00129891', 1); + T('0.36635660', '0.3663566', 0); + T('77511746654159493674.79419', '77511746654159493674.7941', 1); + T('339255.7', '-1473225.1695489201158451', 1); + T('1.11', '1.1', 1); + T('-0.000000000025234359435300648563442278', '-0.00000000002523435943530064856344227', -1); + T('-527785722956482.1568788276023', '-527785722956482.156878827602', -1); + T('15.829063161229710883887068159', '15.82906316122971088388706815', 1); + T('0', '9.020934402455', -1); + T('5.50898793', '5.5089879', 1); + T('176437906524318811079.64601', '176437906524318811079.6460', 1); + T('-397.5475158726300', '-397.547515872630', 0); + T('-0.00000000001556055515635481323709942', '-0.0000000000155605551563548132370994', -1); + T('22.4958236487616739001889', '22.495823648761673900188', 1); + T('225949901218559.6254904852', '225949901218559.625490485', 1); + T('34352062918', '3435206291', 1); + T('0.00000000000127995729371224', '0.0000000000012799572937122', 1); + T('-18289597669354.148272509794', '-18289597669354.14827250979', -1); + T('62072.9263', '62072.926', 1); + T('-0.00000000038775267220204260640135935', '-0.0000000003877526722020426064013593', -1); + T('15', '49854', -1); + T('-622727179956664623.584677020', '-622727179956664623.58467702', 0); + T('124612619885534601636883847056', '12461261988553460163688384705', 1); + T('-44704302', '-4470430', -1); + T('-0.0000000000007320382329813686', '-0.000000000000732038232981368', -1); + T('57035102.20300582807941489', '57035102.2030058280794148', 1); + T('-0.00000000001794738068861544419872319', '-0.0000000000179473806886154441987231', -1); + T('-1.2228', '-1.222', -1); + T('43666858484365456517278', '4366685848436545651727', 1); + T('-0.0000000000314085', '-0.000000000031408', -1); + T('0', '0.00000000000063486', -1); + T('63.6991829', '63.699182', 1); + T('-0.0000000000199308483511083746', '-0.000000000019930848351108374', -1); + T('3.1', '-3709905843220.155177257', 1); + T('-39631940063', '-3963194006', -1); + T('7073142.8', '3', 1); + T('-1999449463', '-199944946', -1); + T('290002.761327072634018931', '290002.76132707263401893', 1); + T('12860083520871521.6822227', '12860083520871521.682222', 1); + T('183820.026930161', '183820.02693016', 1); + T('0.000000781790', '0.00000078179', 0); + T('1.446', '1.44', 1); + T('0.0000008551572300216445253650', '0.000000855157230021644525365', 0); + T('0.4780426111531057579684661647', '0.478042611153105757968466164', 1); + T('-1711959015605354291', '-171195901560535429', -1); + T('863248002669318.08600609171', '863248002669318.0860060917', 1); + T('-1028946422414.8414841087619794', '-1028946422414.841484108761979', -1); + T('0.0000000000000000000419470', '0.000000000000000000041947', 0); + T('-2914967412378208104.4188038431', '-2914967412378208104.418803843', -1); + T('-0.002008', '-0.00200', -1); + T('-0.00000000000002626730784814031567584', '-0.0000000000000262673078481403156758', -1); + T('-19391200616386965', '-1939120061638696', -1); + T('15805.555288168078384', '15805.55528816807838', 1); + T('0.000000000000000065791655', '0.00000000000000006579165', 1); + T('-0.00000000000028926319996', '-0.0000000000002892631999', -1); + T('-10555951879654.4116', '-10555951879654.411', -1); + T('77254637873210650.73', '77254637873210650.7', 1); + T('1154.7950888803119206706', '1154.795088880311920670', 1); + T('-0.00000002121424546283688', '-0.0000000212142454628368', -1); + T('-6884545854992086.64462961512340', '-6884545854992086.6446296151234', 0); + T('-0.0000002787346373194072109221861494', '-0.000000278734637319407210922186149', -1); + T('1589425692.0903352784430490711', '1589425692.090335278443049071', 1); + T('-0.000000069284383167241482592797', '-0.00000006928438316724148259279', -1); + T('-1297741', '-129774', -1); + T('-82630489346849562513.319012060', '-82630489346849562513.31901206', 0); + T('-2788.926', '-2788.92', -1); + T('0', '-4383482151.279035955215656', 1); + T('20802679.3368961001940047753', '20802679.336896100194004775', 1); + T('88377599.6874', '88377599.687', 1); + T('-15439.11', '-15439.1', -1); + T('644', '64', 1); + T('289240770089054460230094', '28924077008905446023009', 1); + T('2374.044', '2374.04', 1); + T('206285132736.429455540', '206285132736.42945554', 0); + T('-2.655584158995322', '-2.65558415899532', -1); + T('6.66', '6.6', 1); + T('-0.00147702317521839535481784', '-0.0014770231752183953548178', -1); + T('0.00025983386631037', '0.0002598338663103', 1); + T('125878687977.170727149556144', '125878687977.17072714955614', 1); + T('0.00000000014242990543328642932285580466', '0.0000000001424299054332864293228558046', 1); + T('531497192.9', '-2.8789608913347', 1); + T('128572050211770604885888', '12857205021177060488588', 1); + T('0.00000000000049823251747441545405900232', '0.0000000000004982325174744154540590023', 1); + T('-3554', '-355', -1); + T('0', '-131462.704889581898753', 1); + T('-110360.109', '-110360.10', -1); + T('46243539.17811357252990972', '46243539.1781135725299097', 1); + T('-394476311386474662807.561867', '-394476311386474662807.56186', -1); + T('52032.8849384149084108910', '52032.884938414908410891', 0); + T('-3670157142977774795911.8817', '-3670157142977774795911.881', -1); + T('-1268380.68072308126212968448547', '-1268380.6807230812621296844854', -1); + T('-143400922253476294484942', '-14340092225347629448494', -1); + T('1.4797498644139485849619679', '1.479749864413948584961967', 1); + T('3220359.45542896240415069', '3220359.4554289624041506', 1); + T('-34.67710018368', '-34.6771001836', -1); + T('18.565971', '18.56597', 1); + T('-0.0000000107587', '-0.000000010758', -1); + T('-16558604266', '-1655860426', -1); + T('6289.6556', '6289.655', 1); + T('1061140593553797', '106114059355379', 1); + T('-6946576.61799943', '-6946576.6179994', -1); + T('-3549420020.8', '-0.000000000197268526037141123595658758051', -1); + T('-0.00000000000000045', '-0.0000000000000004', -1); + T('3.95', '3.9', 1); + T('0.00000000017950293191', '0.0000000001795029319', 1); + T('-0.0000000000000002653486566279708933590491', '-0.000000000000000265348656627970893359049', -1); + T('5834654233963853186742787.19252', '5834654233963853186742787.1925', 1); + T('0.00000000000000146193758453924734921291', '0.0000000000000014619375845392473492129', 1); + T('21.2', '-5466882.34678998616', 1); + T('-226.313', '-226.31', -1); + T('-0.00060919', '-0.0006091', -1); + T('2862921800133731.00223602', '2862921800133731.0022360', 1); + T('0.000001450407700996599075301', '0.00000145040770099659907530', 1); + T('272534713642655203877194515', '27253471364265520387719451', 1); + T('400533357.2054', '400533357.205', 1); + T('-52301.7548455317094', '-52301.754845531709', -1); + T('-60434', '-6043', -1); + T('-4713231.0582649012375636764', '-4713231.058264901237563676', -1); + T('442933.48162982928258413695403', '442933.4816298292825841369540', 1); + T('-143913.618851426974774247273449', '-143913.61885142697477424727344', -1); + T('257.994941295', '257.99494129', 1); + T('-567639505016552', '-56763950501655', -1); + T('0.000000107', '0.00000010', 1); + T('-70142602142.0685215078078', '-70142602142.068521507807', -1); + T('9937222087105.4475', '9937222087105.447', 1); + T('-502191309583350641', '-50219130958335064', -1); + T('30437.61407', '30437.6140', 1); + T('-104085888962140304973.61065995', '-104085888962140304973.6106599', -1); + T('74681549.65066', '74681549.6506', 1); + T('0', '34.0', -1); + T('1283299494621733760436152524.7', '191981915098.416203175', 1); + T('-2079057190454275.24388611959130', '-2079057190454275.2438861195913', 0); + T('-71969837200476.48650', '-71969837200476.4865', 0); + T('-130332745336076.430672680', '-130332745336076.43067268', 0); + T('-262322534.7873', '-262322534.787', -1); + T('-4622120040.36051', '-4622120040.3605', -1); + T('393.81', '393.8', 1); + T('-8778932.1977656', '-8778932.197765', -1); + T('-0.000000004319221300856935220146173063', '-0.00000000431922130085693522014617306', -1); + T('1.3', '-2901258187734.962', 1); + T('-16.56973', '-16.5697', -1); + T('-30104811614630.4940925402114444', '-30104811614630.494092540211444', -1); + T('-0.238917470430091754', '-0.23891747043009175', -1); + T('40.82242337', '40.8224233', 1); + T('-30694613567562.20297241', '-30694613567562.2029724', -1); + T('-0.000000001679207115467275', '-0.00000000167920711546727', -1); + T('-1', '10591891.719', -1); + T('1.85299397', '1.8529939', 1); + T('3.1', '-0.0000000010927840471796860', 1); + T('-0.5778526120297929752108974', '-0.577852612029792975210897', -1); + T('-0.00000002031283434', '-0.0000000203128343', -1); + T('-1609260013071237241578458.130', '-1609260013071237241578458.13', 0); + T('142924542265794697.6840281240', '142924542265794697.684028124', 0); + T('445463969.1', '-0.0000000000003547121196389709462', 1); + T('0.0000000000000000000126560009292128566', '0.000000000000000000012656000929212856', 1); + T('41537.281211574', '41537.28121157', 1); + T('0.000008600441757756', '0.00000860044175775', 1); + T('-4.0918630496265', '-4.091863049626', -1); + T('515782766783.866833275741', '515782766783.86683327574', 1); + T('0.00000392', '0.0000039', 1); + T('7482300.41', '7482300.4', 1); + T('70457460459564179796739', '7045746045956417979673', 1); + T('-13615229017824905947.22', '-13615229017824905947.2', -1); + T('8459428653.6932870235609249397', '8459428653.693287023560924939', 1); + T('-27.974019', '-27.97401', -1); + T('10877384546812', '1087738454681', 1); + T('17.146861043222', '17.14686104322', 1); + T('-0.0000000000012741539', '-0.000000000001274153', -1); + T('-18976303359654085296749.6386', '-18976303359654085296749.638', -1); + T('-14105745484762.813773506', '-14105745484762.81377350', -1); + T('-1674391.840', '-1674391.84', 0); + T('-84922688.1007771598494556708', '-84922688.100777159849455670', -1); + T('-12.57', '-12.5', -1); + T('-0.00000000048', '-0.0000000004', -1); + T('-0.00000032914110816', '-0.0000003291411081', -1); + T('0.000000000027615548', '0.00000000002761554', 1); + T('0.000000000460044976036', '0.00000000046004497603', 1); + T('0.000000000000000469322464666856288338391046819', '0.00000000000000046932246466685628833839104681', 1); + T('112.86854732363', '112.8685473236', 1); + T('118566.37', '118566.3', 1); + T('5014945347.21114863', '5014945347.2111486', 1); + T('655824.126216661', '655824.12621666', 1); + T('-53.0', '-2828707252974182.26', 1); + T('-107852322318138.23', '-107852322318138.2', -1); + T('817.381', '817.38', 1); + T('-8.10721735', '-8.1072173', -1); + T('2', '109155.92', -1); + T('-0.09059', '-0.0905', -1); + T('0.000000038', '0.00000003', 1); + T('135803.4375', '135803.437', 1); + T('-0.104981688246294', '-0.10498168824629', -1); + T('-319117053919238717943917700', '-31911705391923871794391770', -1); + T('-0.00000004966732670', '-0.0000000496673267', 0); + T('0.00000000000000017556177582070698', '0.0000000000000001755617758207069', 1); + T('-6039943363.364348624747813', '-6039943363.36434862474781', -1); + T('-0.0768825', '-0.076882', -1); + T('-0.00000157341483784912166430698733808', '-0.0000015734148378491216643069873380', -1); + T('-588017', '-58801', -1); + T('-2129041.040892', '-2129041.04089', -1); + T('-4859858157015921288139272.0', '-281.9', -1); + T('0.000000000000028619814741904', '0.00000000000002861981474190', 1); + T('398.5406', '398.540', 1); + T('-117104803640', '-11710480364', -1); + T('-78601667654180532972556760.3008', '-78601667654180532972556760.300', -1); + T('2228270436870143.19', '2228270436870143.1', 1); + T('-161233', '-16123', -1); + T('136330282209580168399263.62462', '136330282209580168399263.6246', 1); + T('-86.44928389', '-86.4492838', -1); + T('338.24', '338.2', 1); + T('-14549618702.664447503248196729', '-14549618702.66444750324819672', -1); + T('-30.6085886720119612', '-30.608588672011961', -1); + T('-1990373027501001721683307.30225', '-1990373027501001721683307.3022', -1); + T('1876002848.466', '1876002848.46', 1); + T('-810.41963070149375272', '-810.4196307014937527', -1); + T('2414021.80458', '2414021.8045', 1); + T('-1.3248', '-1.324', -1); + T('0.00000000000000000003281908871647629993048189', '0.0000000000000000000328190887164762999304818', 1); + T('8190932122089709410211260.1941', '8190932122089709410211260.194', 1); + T('18558359008664.901', '18558359008664.90', 1); + T('-1.836260852084759052811977', '-1.83626085208475905281197', -1); + T('52848.0661641241616642195', '52848.066164124161664219', 1); + T('1.795', '1.79', 1); + T('3563.84130546918276031', '3563.8413054691827603', 1); + T('33450019.5', '2459854832688517296246058802', -1); + T('5536285180182881.87923167404513', '5536285180182881.8792316740451', 1); + T('0', '0.000000000000000043296465733471525299', -1); + T('70086.68252172', '70086.6825217', 1); + T('292760.4240', '292760.424', 0); + T('2028140262335.9131026003356', '2028140262335.913102600335', 1); + T('0.0000000000087', '0.000000000008', 1); + T('4', '-3470098.6074792982', 1); + T('13358558600177683796925578', '1335855860017768379692557', 1); + T('-83.8', '21363730.46561184451', -1); + T('365324.84504266484131556038', '365324.8450426648413155603', 1); + T('-3185507140.95393405534321', '-3185507140.9539340553432', -1); + T('-0.0000000000000065472358345', '-0.000000000000006547235834', -1); + T('-1.1306', '-1.130', -1); + T('0.0000000000000000012657157731644007947139831', '0.000000000000000001265715773164400794713983', 1); + T('-4595761438.2546337711', '-4595761438.254633771', -1); + T('8.102560', '8.10256', 0); + T('-4732877234851.04517', '-4732877234851.0451', -1); + T('22849746934084811', '2284974693408481', 1); + T('-21570598205187056339788.8827687', '-21570598205187056339788.882768', -1); + T('-0.00411486610', '-0.0041148661', 0); + T('0.0000000017473355067071', '0.000000001747335506707', 1); + T('1672207932406612', '167220793240661', 1); + T('-2170952508398772659.3116947863', '-2170952508398772659.311694786', -1); + T('104296691.3651', '104296691.365', 1); + T('6413348457044198.6357', '6413348457044198.635', 1); + T('867588124512790019695847208.17', '867588124512790019695847208.1', 1); + T('0.000000000000000006377653', '0.00000000000000000637765', 1); + T('0.0000000000000005421562844800408', '0.000000000000000542156284480040', 1); + T('0.0000000000001734898208084', '0.000000000000173489820808', 1); + T('719191761181325213', '71919176118132521', 1); + T('0.02250426125915164019127', '0.0225042612591516401912', 1); + T('0.000000000000015950471472766126156', '0.00000000000001595047147276612615', 1); + T('-8.165141564', '-8.16514156', -1); + T('0.000016048771130', '0.00001604877113', 0); + T('-2', '-88807525195548174559556063', 1); + T('58675.118464', '58675.11846', 1); + T('0.000000627412133283', '0.00000062741213328', 1); + T('-1292498491535.25344', '-1292498491535.2534', -1); + T('-820304961.0323010898698', '-820304961.032301089869', -1); + T('-0.000611', '-0.00061', -1); + T('-11144524535537715', '-1114452453553771', -1); + T('-55716774643252100979.5446623', '-55716774643252100979.544662', -1); + T('-0.000044176893810056', '-0.00004417689381005', -1); + T('292752046.323027', '292752046.32302', 1); + T('7380730', '738073', 1); + T('86355898012532849.7700967309940', '86355898012532849.770096730994', 0); + T('0.00000004315310515126045613636', '0.0000000431531051512604561363', 1); + T('0.00000000000000000001737', '0.0000000000000000000173', 1); + T('813314317.05965', '813314317.0596', 1); + T('0.0000000000288347370619778500827429666573', '0.000000000028834737061977850082742966657', 1); + T('1.227', '1.22', 1); + T('-1.2630735', '-1.263073', -1); + T('91944402440.06945779449085371', '91944402440.0694577944908537', 1); + T('-4449792517039894', '-444979251703989', -1); + T('9', '-2448498702.514138316389405792', 1); + T('15', '-230.83', 1); + T('31.144613239645410083514841201', '31.14461323964541008351484120', 1); + T('-19284', '-1928', -1); + T('0', '5426339861896942660314675307', -1); + T('1129076194', '112907619', 1); + T('1044840688537574338326', '104484068853757433832', 1); + T('0.00000000000000043539078118147011', '0.0000000000000004353907811814701', 1); + T('-5', '4', -1); + T('-1377061.5292411334', '-1377061.529241133', -1); + T('-4.0', '332202357', -1); + T('-0.00000000000000000227', '-0.0000000000000000022', -1); + T('1826995888603.5824430107', '1826995888603.582443010', 1); + T('10390673669.135717884263351', '10390673669.13571788426335', 1); + T('10', '-735770.95921507778597', 1); + T('104.5944497667', '104.594449766', 1); + T('75938579086.43324', '75938579086.4332', 1); + T('133431773944', '13343177394', 1); + T('-0.029773', '-0.02977', -1); + T('-2.3', '0.000000000000004812124955862392552', -1); + T('-0.000000000000000440816280', '-0.00000000000000044081628', 0); + T('18420.11634', '18420.1163', 1); + T('-9284054922651501226860235.867', '-9284054922651501226860235.86', -1); + T('12396946801121416014189.43309695', '12396946801121416014189.4330969', 1); + T('0.007718643213656733483266', '0.00771864321365673348326', 1); + T('-0.000000037595591491984459', '-0.00000003759559149198445', -1); + T('-715072321926440135536.7648', '-715072321926440135536.764', -1); + T('103992420.52458', '103992420.5245', 1); + T('0.000000991070083580408202601308047', '0.00000099107008358040820260130804', 1); + T('1.86853500870534570128', '1.8685350087053457012', 1); + T('58616551.73241771152', '58616551.7324177115', 1); + T('-1.6', '18525081582051265136724.3660', -1); + T('1993238064975', '199323806497', 1); + T('-1784581450011.6549586151626', '-1784581450011.654958615162', -1); + T('-4555209568014421116848941.3959', '-4555209568014421116848941.395', -1); + T('-7048913007.5566', '-7048913007.556', -1); + T('-0.000000000871843054424826674157106', '-0.00000000087184305442482667415710', -1); + T('-14840053.072', '-14840053.07', -1); + T('-501405456751853073076', '-50140545675185307307', -1); + T('-199545.60412498', '-199545.6041249', -1); + T('0.00000009216303215937061205', '0.0000000921630321593706120', 1); + T('4.71041834808516', '4.7104183480851', 1); + T('361.419249298421346667', '361.41924929842134666', 1); + T('409136581.554547189131', '409136581.55454718913', 1); + T('55122849429299788341942', '5512284942929978834194', 1); + T('13003440939757220210.6', '-131681614', 1); + T('-1609638422403038.78', '-1609638422403038.7', -1); + T('28363.187944820474154448061814', '-28363.187944820474154448061814', 1); + T('-2916651.5496', '311663.7', -1); + T('-0.000000000000028', '-1.0051639273', 1); + T('-15087.357', '-1.94820806', -1); + T('-0.00000000000000003599985370238339034191676', '175367726221406968.13920', -1); + T('313569.577740085324', '-313569.577740085324', 1); + T('4.14321707846', '-4.14321707846', 1); + T('2.025069', '-2.025069', 1); + T('-204173696764981798', '-348359047110101', -1); + T('-12752947190480205615461', '15.198090402942077', -1); + T('-74.2', '4628073528657420.923843246681', -1); + T('719.1719040512', '-719.1719040512', 1); + T('393.313192', '-393.313192', 1); + T('-494455879492.541426667665550', '-13002235405592907201044204', 1); + T('0', '0', 0); + T('-233021.97', '-7.4', -1); + T('-240459748', '0.000000006517712156', -1); + T('81179.0', '-81179.0', 1); + T('-0.0000192016725715', '-1.21890405451046803716074614', 1); + T('-178252184222.7107', '-35038911.288687', -1); + T('36405716.36527673752', '-36405716.36527673752', 1); + T('-8.776', '7.7701605830015406834539038', -1); + T('6.1', '-6.1', 1); + T('4820089993.340', '-4820089993.340', 1); + T('-131045153934', '-141414703667118909', 1); + T('-0.000000000000001331938110449733777894', '-308053367.910427914340992681501', 1); + T('-0.004193089770215420540599206921', '-30.0', 1); + T('1694294619094634.85763668135', '-1694294619094634.85763668135', 1); + T('40.541819234520934594813', '-40.541819234520934594813', 1); + T('-0.10021507', '-2049541544645617700923988306', 1); + T('6609143733354158875894', '-6609143733354158875894', 1); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js new file mode 100644 index 0000000..390d92e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js @@ -0,0 +1,557 @@ +var count = (function config(BigNumber) { + var start = +new Date(), + log, + error, + obj, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + log('\n Testing config...'); + + obj = BigNumber.config({ + DECIMAL_PLACES : 100, + ROUNDING_MODE : 0, + EXPONENTIAL_AT : 50, + RANGE : 500, + ERRORS : false + }); + + assert(true, obj.DECIMAL_PLACES === 100 && + obj.ROUNDING_MODE === 0 && + obj.EXPONENTIAL_AT[0] === -50 && + obj.EXPONENTIAL_AT[1] === 50 && + obj.RANGE[0] === -500 && + obj.RANGE[1] === 500 && + obj.ERRORS === false + ); + + obj = BigNumber.config( 99, 8, 32, 333, 1 ); + + assert(true, obj.DECIMAL_PLACES === 99 && + obj.ROUNDING_MODE === 8 && + obj.EXPONENTIAL_AT[0] === -32 && + obj.EXPONENTIAL_AT[1] === 32 && + obj.RANGE[0] === -333 && + obj.RANGE[1] === 333 && + obj.ERRORS === true + ); + + obj = BigNumber.config({ + DECIMAL_PLACES : 40, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : 1E9, + RANGE : 1E9, + ERRORS : true + }); + + obj = BigNumber.config( null, null, null, null, null ); + obj = BigNumber.config( undefined, undefined, undefined, undefined, undefined ); + + assert(true, typeof obj === 'object'); + assert(true, obj.DECIMAL_PLACES === 40); + assert(true, obj.ROUNDING_MODE === 4); + assert(true, typeof obj.EXPONENTIAL_AT === 'object'); + assert(true, obj.EXPONENTIAL_AT.length === 2); + assert(true, obj.EXPONENTIAL_AT[0] === -1e9); + assert(true, obj.EXPONENTIAL_AT[1] === 1e9); + assert(true, typeof obj.RANGE === 'object'); + assert(true, obj.RANGE.length === 2); + assert(true, obj.RANGE[0] === -1e9); + assert(true, obj.RANGE[1] === 1e9); + assert(true, obj.ERRORS === true); + + obj = BigNumber.config({EXPONENTIAL_AT : [-7, 21], RANGE : [-324, 308]}); + + // DECIMAL_PLACES + + assert(0, BigNumber.config(0).DECIMAL_PLACES); + assert(1, BigNumber.config(1).DECIMAL_PLACES); + assert(20, BigNumber.config(20).DECIMAL_PLACES); + assert(300000, BigNumber.config(300000).DECIMAL_PLACES); + assert(4e+8, BigNumber.config(4e8).DECIMAL_PLACES); + assert(123456789, BigNumber.config('123456789').DECIMAL_PLACES); + assert(1e9, BigNumber.config(1e9).DECIMAL_PLACES); + + assert(0, BigNumber.config({DECIMAL_PLACES : 0}).DECIMAL_PLACES); + assert(1, BigNumber.config({DECIMAL_PLACES : 1}).DECIMAL_PLACES); + assert(20, BigNumber.config({DECIMAL_PLACES : 20}).DECIMAL_PLACES); + assert(300000, BigNumber.config({DECIMAL_PLACES : 300000}).DECIMAL_PLACES); + assert(4e+8, BigNumber.config({DECIMAL_PLACES : 4e8}).DECIMAL_PLACES); + assert(123456789, BigNumber.config({DECIMAL_PLACES : '123456789'}).DECIMAL_PLACES); + assert(1e9, BigNumber.config({DECIMAL_PLACES : 1e9}).DECIMAL_PLACES); + + assert(1e9, BigNumber.config(null).DECIMAL_PLACES); + assert(1e9, BigNumber.config(undefined).DECIMAL_PLACES); + assert(1e9, BigNumber.config({DECIMAL_PLACES : null}).DECIMAL_PLACES); + assert(1e9, BigNumber.config({DECIMAL_PLACES : undefined}).DECIMAL_PLACES); + + assertException(function () {BigNumber.config({DECIMAL_PLACES : -1})}, "DECIMAL_PLACES : -1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 0.1})}, "DECIMAL_PLACES : 0.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 1.1})}, "DECIMAL_PLACES : 1.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : -1.1})}, "DECIMAL_PLACES : -1.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 8.1})}, "DECIMAL_PLACES : 8.1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 1e+9 + 1})}, "DECIMAL_PLACES : 1e9 + 1"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : []})}, "DECIMAL_PLACES : []"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : {}})}, "DECIMAL_PLACES : {}"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : ''})}, "DECIMAL_PLACES : ''"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : ' '})}, "DECIMAL_PLACES : ' '"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : 'hi'})}, "DECIMAL_PLACES : 'hi'"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : '1e+9'})}, "DECIMAL_PLACES : '1e+9'"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : NaN})}, "DECIMAL_PLACES : NaN"); + assertException(function () {BigNumber.config({DECIMAL_PLACES : Infinity})}, "DECIMAL_PLACES : Infinity"); + + BigNumber.config({ ERRORS : false }); + + assert(1e9, BigNumber.config(-1).DECIMAL_PLACES); + assert(0, BigNumber.config(0.1).DECIMAL_PLACES); + assert(1, BigNumber.config(1.99).DECIMAL_PLACES); + assert(1, BigNumber.config(-1.1).DECIMAL_PLACES); + assert(8, BigNumber.config(8.7654321).DECIMAL_PLACES); + assert(8, BigNumber.config(1e9 + 1).DECIMAL_PLACES); + assert(8, BigNumber.config([]).DECIMAL_PLACES); + assert(8, BigNumber.config({}).DECIMAL_PLACES); + assert(8, BigNumber.config('').DECIMAL_PLACES); + assert(8, BigNumber.config(' ').DECIMAL_PLACES); + assert(8, BigNumber.config('hi').DECIMAL_PLACES); + assert(1e9, BigNumber.config('1e+9').DECIMAL_PLACES); + assert(1e9, BigNumber.config(NaN).DECIMAL_PLACES); + assert(1e9, BigNumber.config(Infinity).DECIMAL_PLACES); + assert(1e9, BigNumber.config(new Date).DECIMAL_PLACES); + assert(1e9, BigNumber.config(null).DECIMAL_PLACES); + assert(1e9, BigNumber.config(undefined).DECIMAL_PLACES); + + BigNumber.config({ ERRORS : 1 }); + + // ROUNDING_MODE + + assert(0, BigNumber.config(null, 0).ROUNDING_MODE); + assert(1, BigNumber.config(null, 1).ROUNDING_MODE); + assert(2, BigNumber.config(null, 2).ROUNDING_MODE); + assert(3, BigNumber.config(null, 3).ROUNDING_MODE); + assert(4, BigNumber.config(null, 4).ROUNDING_MODE); + assert(5, BigNumber.config(null, 5).ROUNDING_MODE); + assert(6, BigNumber.config(null, 6).ROUNDING_MODE); + assert(7, BigNumber.config(null, 7).ROUNDING_MODE); + assert(8, BigNumber.config(null, 8).ROUNDING_MODE); + + assert(0, BigNumber.config({ROUNDING_MODE : 0}).ROUNDING_MODE); + assert(1, BigNumber.config({ROUNDING_MODE : 1}).ROUNDING_MODE); + assert(2, BigNumber.config({ROUNDING_MODE : 2}).ROUNDING_MODE); + assert(3, BigNumber.config({ROUNDING_MODE : 3}).ROUNDING_MODE); + assert(4, BigNumber.config({ROUNDING_MODE : 4}).ROUNDING_MODE); + assert(5, BigNumber.config({ROUNDING_MODE : 5}).ROUNDING_MODE); + assert(6, BigNumber.config({ROUNDING_MODE : 6}).ROUNDING_MODE); + assert(7, BigNumber.config({ROUNDING_MODE : 7}).ROUNDING_MODE); + assert(8, BigNumber.config({ROUNDING_MODE : 8}).ROUNDING_MODE); + + assert(8, BigNumber.config(null, null).ROUNDING_MODE); + assert(8, BigNumber.config(null, undefined).ROUNDING_MODE); + assert(8, BigNumber.config({ROUNDING_MODE : null}).ROUNDING_MODE); + assert(8, BigNumber.config({ROUNDING_MODE : undefined}).ROUNDING_MODE); + + assertException(function () {BigNumber.config({ROUNDING_MODE : -1})}, "ROUNDING_MODE : -1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 0.1})}, "ROUNDING_MODE : 0.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 1.1})}, "ROUNDING_MODE : 1.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : -1.1})}, "ROUNDING_MODE : -1.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 8.1})}, "ROUNDING_MODE : 8.1"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 9})}, "ROUNDING_MODE : 9"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 11})}, "ROUNDING_MODE : 11"); + assertException(function () {BigNumber.config({ROUNDING_MODE : []})}, "ROUNDING_MODE : []"); + assertException(function () {BigNumber.config({ROUNDING_MODE : {}})}, "ROUNDING_MODE : {}"); + assertException(function () {BigNumber.config({ROUNDING_MODE : ''})}, "ROUNDING_MODE : ''"); + assertException(function () {BigNumber.config({ROUNDING_MODE : ' '})}, "ROUNDING_MODE : ' '"); + assertException(function () {BigNumber.config({ROUNDING_MODE : 'hi'})}, "ROUNDING_MODE : 'hi'"); + assertException(function () {BigNumber.config({ROUNDING_MODE : NaN})}, "ROUNDING_MODE : NaN"); + assertException(function () {BigNumber.config({ROUNDING_MODE : Infinity})}, "ROUNDING_MODE : Infinity"); + + BigNumber.config({ ERRORS : 0 }); + + assert(8, BigNumber.config(0, -1).ROUNDING_MODE); + assert(0, BigNumber.config(0, 0.1).ROUNDING_MODE); + assert(1, BigNumber.config(0, 1.99).ROUNDING_MODE); + assert(1, BigNumber.config(0, -1.1).ROUNDING_MODE); + assert(1, BigNumber.config(0, 8.01).ROUNDING_MODE); + assert(7, BigNumber.config(0, 7.99).ROUNDING_MODE); + assert(7, BigNumber.config(0, 1e9 + 1).ROUNDING_MODE); + assert(7, BigNumber.config(0, []).ROUNDING_MODE); + assert(7, BigNumber.config(0, {}).ROUNDING_MODE); + assert(7, BigNumber.config(0, '').ROUNDING_MODE); + assert(7, BigNumber.config(0, ' ').ROUNDING_MODE); + assert(7, BigNumber.config(0, 'hi').ROUNDING_MODE); + assert(1, BigNumber.config(0, '1e+0').ROUNDING_MODE); + assert(1, BigNumber.config(0, NaN).ROUNDING_MODE); + assert(1, BigNumber.config(0, Infinity).ROUNDING_MODE); + assert(1, BigNumber.config(0, new Date).ROUNDING_MODE); + assert(1, BigNumber.config(0, null).ROUNDING_MODE); + assert(1, BigNumber.config(0, undefined).ROUNDING_MODE); + + BigNumber.config({ ERRORS : true }); + + // EXPONENTIAL_AT + + assert(true, obj.EXPONENTIAL_AT[0] === -7); + assert(true, obj.EXPONENTIAL_AT[1] === 21); + + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [0.1, 1]})}, "EXPONENTIAL_AT : [0.1, 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1, -0.1]})}, "EXPONENTIAL_AT : [-1, -0.1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [1, 1]})}, "EXPONENTIAL_AT : [1, 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1, -1]})}, "EXPONENTIAL_AT : [-1, -1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : 1e9 + 1})}, "EXPONENTIAL_AT : 1e9 + 1"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : -1e9 - 1})}, "EXPONENTIAL_AT : -1e9 - 1"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1e9 - 1, 1e9]})}, "EXPONENTIAL_AT : [-1e9 - 1, 1e9]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1e9, 1e9 + 1]})}, "EXPONENTIAL_AT : [-1e9, 1e9 + 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [1e9 + 1, -1e9 - 1]})}, "EXPONENTIAL_AT : [1e9 + 1, -1e9 - 1]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-Infinity, Infinity]})}, "EXPONENTIAL_AT : [Infinity, -Infinity]"); + assertException(function () {BigNumber.config({EXPONENTIAL_AT : [Infinity, -Infinity]})}, "EXPONENTIAL_AT : [Infinity, -Infinity]"); + + obj = BigNumber.config(); + + assert(true, obj.EXPONENTIAL_AT[0] === -7); + assert(true, obj.EXPONENTIAL_AT[1] === 21); + + assert(1, BigNumber.config({EXPONENTIAL_AT : 1}).EXPONENTIAL_AT[1]); + assert(-1, BigNumber.config({EXPONENTIAL_AT : 1}).EXPONENTIAL_AT[0]); + + obj = BigNumber.config({EXPONENTIAL_AT : 0}); + assert(true, obj.EXPONENTIAL_AT[0] === 0 && obj.EXPONENTIAL_AT[1] === 0); + + obj = BigNumber.config({EXPONENTIAL_AT : -1}); + assert(true, obj.EXPONENTIAL_AT[0] === -1 && obj.EXPONENTIAL_AT[1] === 1); + + BigNumber.config({ ERRORS : false }); + + assert(1, BigNumber.config(0, 0, -1).EXPONENTIAL_AT[1]); + assert(0, BigNumber.config(0, 0, 0.1).EXPONENTIAL_AT[0]); + assert(1, BigNumber.config(0, 0, 1.99).EXPONENTIAL_AT[1]); + assert(-2, BigNumber.config(0, 0, -2.1).EXPONENTIAL_AT[0]); + assert(8, BigNumber.config(0, 0, 8.01).EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, -7.99).EXPONENTIAL_AT[0]); + assert(7, BigNumber.config(0, 0, 1e9 + 1).EXPONENTIAL_AT[1]); + assert(7, BigNumber.config(0, 0, -1e9 - 1).EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, []).EXPONENTIAL_AT[0]); + assert(7, BigNumber.config(0, 0, {}).EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, '').EXPONENTIAL_AT[0]); + assert(7, BigNumber.config(0, 0, ' ').EXPONENTIAL_AT[1]); + assert(-7, BigNumber.config(0, 0, 'hi').EXPONENTIAL_AT[0]); + assert(13000, BigNumber.config(0, 0, '1.3e+4').EXPONENTIAL_AT[1]); + assert(-13000, BigNumber.config(0, 0, NaN).EXPONENTIAL_AT[0]); + assert(13000, BigNumber.config(0, 0, Infinity).EXPONENTIAL_AT[1]); + assert(-13000, BigNumber.config(0, 0, new Date).EXPONENTIAL_AT[0]); + assert(13000, BigNumber.config(0, 0, null).EXPONENTIAL_AT[1]); + assert(-13000, BigNumber.config(0, 0, undefined).EXPONENTIAL_AT[0]); + assert(-98765, BigNumber.config(0, 0, 98765.4321).EXPONENTIAL_AT[0]); + assert(98765, BigNumber.config(0, 0, -98765.4321).EXPONENTIAL_AT[1]); + assert(1, BigNumber.config(0, 0, [-98765.4321, 1]).EXPONENTIAL_AT[1]); + assert(-1, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[0]); + assert(98765, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[1]); + assert(98765, BigNumber.config(0, 0, [-1, null]).EXPONENTIAL_AT[1]); + assert(98765, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[1]); + assert(-1, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[0]); + + BigNumber.config({ ERRORS : true }); + + // RANGE + + assert(true, obj.RANGE[0] === -324); + assert(true, obj.RANGE[1] === 308); + + assertException(function () {BigNumber.config({RANGE : [-0.9, 1]})}, "RANGE : [-0.9, 1]"); + assertException(function () {BigNumber.config({RANGE : [-1, 0.9]})}, "RANGE : [-1, 0.9]"); + assertException(function () {BigNumber.config({RANGE : [0, 1]})}, "RANGE : [0, 1]"); + assertException(function () {BigNumber.config({RANGE : [-1, 0]})}, "RANGE : [-1, 0]"); + assertException(function () {BigNumber.config({RANGE : 0})}, "RANGE : 0"); + assertException(function () {BigNumber.config({RANGE : 1e9 + 1})}, "RANGE : 1e9 + 1"); + assertException(function () {BigNumber.config({RANGE : -1e9 - 1})}, "RANGE : -1e9 - 1"); + assertException(function () {BigNumber.config({RANGE : [-1e9 - 1, 1e9 + 1]})}, "RANGE : [-1e9 - 1, 1e9 + 1]"); + assertException(function () {BigNumber.config({RANGE : [1e9 + 1, -1e9 - 1]})}, "RANGE : [1e9 + 1, -1e9 - 1]"); + assertException(function () {BigNumber.config({RANGE : Infinity})}, "RANGE : Infinity"); + assertException(function () {BigNumber.config({RANGE : "-Infinity"})}, "RANGE : '-Infinity'"); + assertException(function () {BigNumber.config({RANGE : [-Infinity, Infinity]})}, "RANGE : [-Infinity, Infinity]"); + assertException(function () {BigNumber.config({RANGE : [Infinity, -Infinity]})}, "RANGE : [Infinity, -Infinity]"); + + obj = BigNumber.config(); + + assert(true, obj.RANGE[0] === -324); + assert(true, obj.RANGE[1] === 308); + + assert(1, BigNumber.config({RANGE : 1}).RANGE[1]); + assert(-1, BigNumber.config({RANGE : 1}).RANGE[0]); + + obj = BigNumber.config({RANGE : 1}); + assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1); + + obj = BigNumber.config({RANGE : -1}); + assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1); + + BigNumber.config({ ERRORS : 0 }); + + assert(1, BigNumber.config(0, 0, 0, -1).RANGE[1]); + assert(-1, BigNumber.config(0, 0, 0, 0.1).RANGE[0]); + assert(1, BigNumber.config(0, 0, 0, 1.99).RANGE[1]); + assert(-2, BigNumber.config(0, 0, 0, -2.1).RANGE[0]); + assert(8, BigNumber.config(0, 0, 0, 8.01).RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, -7.99).RANGE[0]); + assert(7, BigNumber.config(0, 0, 0, 1e9 + 1).RANGE[1]); + assert(7, BigNumber.config(0, 0, 0, -1e9 - 1).RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, []).RANGE[0]); + assert(7, BigNumber.config(0, 0, 0, {}).RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, '').RANGE[0]); + assert(7, BigNumber.config(0, 0, 0, ' ').RANGE[1]); + assert(-7, BigNumber.config(0, 0, 0, 'hi').RANGE[0]); + assert(13000, BigNumber.config(0, 0, 0, '1.3e+4').RANGE[1]); + assert(-13000, BigNumber.config(0, 0, 0, NaN).RANGE[0]); + assert(13000, BigNumber.config(0, 0, 0, Infinity).RANGE[1]); + assert(-13000, BigNumber.config(0, 0, 0, new Date).RANGE[0]); + assert(13000, BigNumber.config(0, 0, 0, null).RANGE[1]); + assert(-13000, BigNumber.config(0, 0, 0, undefined).RANGE[0]); + assert(-98765, BigNumber.config(0, 0, 0, 98765.4321).RANGE[0]); + assert(98765, BigNumber.config(0, 0, 0, -98765.4321).RANGE[1]); + assert(1, BigNumber.config(0, 0, 0, [-98765.4321, 1]).RANGE[1]); + assert(-1, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[0]); + assert(98765, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[1]); + assert(98765, BigNumber.config(0, 0, 0, [-1, null]).RANGE[1]); + assert(98765, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[1]); + assert(-1, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[0]); + + BigNumber.config({ ERRORS : true }); + + // ERRORS + + assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); + assert(true, BigNumber.config(null, null, null, null, 1).ERRORS); + assert(false, BigNumber.config(null, null, null, null, false).ERRORS); + assert(true, BigNumber.config(null, null, null, null, true).ERRORS); + + assert(false, BigNumber.config({ERRORS : 0}).ERRORS); + assert(true, BigNumber.config({ERRORS : 1}).ERRORS); + assert(false, BigNumber.config({ERRORS : false}).ERRORS); + assert(true, BigNumber.config({ERRORS : true}).ERRORS); + + assert(true, BigNumber.config(null, null, null, null, null).ERRORS); + assert(true, BigNumber.config(null, null, null, null, undefined).ERRORS); + assert(true, BigNumber.config({ERRORS : null}).ERRORS); + assert(true, BigNumber.config({ERRORS : undefined}).ERRORS); + + assertException(function () {BigNumber.config({ERRORS : 'hiya'})}, "ERRORS : 'hiya'"); + assertException(function () {BigNumber.config({ERRORS : 'true'})}, "ERRORS : 'true'"); + assertException(function () {BigNumber.config({ERRORS : 'false'})}, "ERRORS : 'false'"); + assertException(function () {BigNumber.config({ERRORS : '0'})}, "ERRORS : '0'"); + assertException(function () {BigNumber.config({ERRORS : '1'})}, "ERRORS : '1'"); + assertException(function () {BigNumber.config({ERRORS : -1})}, "ERRORS : -1"); + assertException(function () {BigNumber.config({ERRORS : 0.1})}, "ERRORS : 0.1"); + assertException(function () {BigNumber.config({ERRORS : 1.1})}, "ERRORS : 1.1"); + assertException(function () {BigNumber.config({ERRORS : []})}, "ERRORS : []"); + assertException(function () {BigNumber.config({ERRORS : {}})}, "ERRORS : {}"); + assertException(function () {BigNumber.config({ERRORS : ''})}, "ERRORS : ''"); + assertException(function () {BigNumber.config({ERRORS : ' '})}, "ERRORS : ' '"); + assertException(function () {BigNumber.config({ERRORS : NaN})}, "ERRORS : NaN"); + assertException(function () {BigNumber.config({ERRORS : Infinity})}, "ERRORS : Infinity"); + + assert(true, BigNumber.config().ERRORS); + + BigNumber.config({ ERRORS : false }); + + assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); + assert(false, BigNumber.config(null, null, null, null, 1.1).ERRORS); + assert(false, BigNumber.config(null, null, null, null, false).ERRORS); + assert(true, BigNumber.config(null, null, null, null, 1).ERRORS); + assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); + assert(false, BigNumber.config(null, null, null, null, '1').ERRORS); + assert(false, BigNumber.config(null, null, null, null, 'true').ERRORS); + assert(false, BigNumber.config(null, null, null, null, false).ERRORS); + assert(false, BigNumber.config({ERRORS : null}).ERRORS); + assert(false, BigNumber.config({ERRORS : undefined}).ERRORS); + assert(false, BigNumber.config({ERRORS : NaN}).ERRORS); + assert(false, BigNumber.config({ERRORS : 'd'}).ERRORS); + assert(false, BigNumber.config({ERRORS : []}).ERRORS); + assert(false, BigNumber.config({ERRORS : {}}).ERRORS); + assert(false, BigNumber.config({ERRORS : new Date}).ERRORS); + assert(true, BigNumber.config({ERRORS : Boolean(1)}).ERRORS); + assert(true, BigNumber.config({ERRORS : Boolean(true)}).ERRORS); + assert(false, BigNumber.config({ERRORS : Boolean(0)}).ERRORS); + assert(false, BigNumber.config({ERRORS : Boolean(false)}).ERRORS); + assert(true, BigNumber.config({ERRORS : Boolean('false')}).ERRORS); + + // Test constructor parsing. + + BigNumber.config({ + DECIMAL_PLACES : 40, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : 1E9, + RANGE : 1E9, + ERRORS : true + }); + + assert('NaN', new BigNumber(NaN).toS()); + assert('NaN', new BigNumber('NaN').toS()); + assert('NaN', new BigNumber(' NaN').toS()); + assert('NaN', new BigNumber('NaN ').toS()); + assert('NaN', new BigNumber(' NaN ').toS()); + assert('NaN', new BigNumber('+NaN').toS()); + assert('NaN', new BigNumber(' +NaN').toS()); + assert('NaN', new BigNumber('+NaN ').toS()); + assert('NaN', new BigNumber(' +NaN ').toS()); + assert('NaN', new BigNumber('-NaN').toS()); + assert('NaN', new BigNumber(' -NaN').toS()); + assert('NaN', new BigNumber('-NaN ').toS()); + assert('NaN', new BigNumber(' -NaN ').toS()); + + assertException(function () {new BigNumber('+ NaN')}, "+ NaN"); + assertException(function () {new BigNumber('- NaN')}, "- NaN"); + assertException(function () {new BigNumber(' + NaN')}, " + NaN"); + assertException(function () {new BigNumber(' - NaN')}, " - NaN"); + assertException(function () {new BigNumber('. NaN')}, ". NaN"); + assertException(function () {new BigNumber('.-NaN')}, ".-NaN"); + assertException(function () {new BigNumber('.+NaN')}, ".+NaN"); + assertException(function () {new BigNumber('-.NaN')}, "-.NaN"); + assertException(function () {new BigNumber('+.NaN')}, "+.NaN"); + + assert('Infinity', new BigNumber(Infinity).toS()); + assert('Infinity', new BigNumber('Infinity').toS()); + assert('Infinity', new BigNumber(' Infinity').toS()); + assert('Infinity', new BigNumber('Infinity ').toS()); + assert('Infinity', new BigNumber(' Infinity ').toS()); + assert('Infinity', new BigNumber('+Infinity').toS()); + assert('Infinity', new BigNumber(' +Infinity').toS()); + assert('Infinity', new BigNumber('+Infinity ').toS()); + assert('Infinity', new BigNumber(' +Infinity ').toS()); + assert('-Infinity', new BigNumber('-Infinity').toS()); + assert('-Infinity', new BigNumber(' -Infinity').toS()); + assert('-Infinity', new BigNumber('-Infinity ').toS()); + assert('-Infinity', new BigNumber(' -Infinity ').toS()); + + assertException(function () {new BigNumber('+ Infinity')}, "+ Infinity"); + assertException(function () {new BigNumber(' + Infinity')}, " + Infinity"); + assertException(function () {new BigNumber('- Infinity')}, "- Infinity"); + assertException(function () {new BigNumber(' - Infinity')}, " - Infinity"); + assertException(function () {new BigNumber('.Infinity')}, ".Infinity"); + assertException(function () {new BigNumber('. Infinity')}, ". Infinity"); + assertException(function () {new BigNumber('.-Infinity')}, ".-Infinity"); + assertException(function () {new BigNumber('.+Infinity')}, ".+Infinity"); + assertException(function () {new BigNumber('-.Infinity')}, "-.Infinity"); + assertException(function () {new BigNumber('+.Infinity')}, "+.Infinity"); + + assert('0', new BigNumber(0).toS()); + assert('0', new BigNumber(-0).toS()); + assert('0', new BigNumber('+0').toS()); + assert('0', new BigNumber('-0').toS()); + assert('0', new BigNumber(' +0').toS()); + assert('0', new BigNumber(' -0').toS()); + assert('0', new BigNumber(' +0 ').toS()); + assert('0', new BigNumber(' -0 ').toS()); + assert('0', new BigNumber('+.0').toS()); + assert('0', new BigNumber('-.0').toS()); + assert('0', new BigNumber(' +.0').toS()); + assert('0', new BigNumber(' -.0').toS()); + assert('0', new BigNumber(' +.0 ').toS()); + assert('0', new BigNumber(' -.0 ').toS()); + + assertException(function () {new BigNumber('+-0')}, "+-0"); + assertException(function () {new BigNumber('-+0')}, "-+0"); + assertException(function () {new BigNumber('--0')}, "--0"); + assertException(function () {new BigNumber('++0')}, "++0"); + assertException(function () {new BigNumber('.-0')}, ".-0"); + assertException(function () {new BigNumber('.+0')}, ".+0"); + assertException(function () {new BigNumber('. 0')}, ". 0"); + assertException(function () {new BigNumber('..0')}, "..0"); + assertException(function () {new BigNumber('+.-0')}, "+.-0"); + assertException(function () {new BigNumber('-.+0')}, "-.+0"); + assertException(function () {new BigNumber('+. 0')}, "+. 0"); + assertException(function () {new BigNumber('-. 0')}, "-. 0"); + + assert('2', new BigNumber('+2').toS()); + assert('-2', new BigNumber('-2').toS()); + assert('2', new BigNumber(' +2').toS()); + assert('-2', new BigNumber(' -2').toS()); + assert('2', new BigNumber(' +2 ').toS()); + assert('-2', new BigNumber(' -2 ').toS()); + assert('0.2', new BigNumber('+.2').toS()); + assert('-0.2', new BigNumber('-.2').toS()); + assert('0.2', new BigNumber(' +.2').toS()); + assert('-0.2', new BigNumber(' -.2').toS()); + assert('0.2', new BigNumber(' +.2 ').toS()); + assert('-0.2', new BigNumber(' -.2 ').toS()); + + assertException(function () {new BigNumber('+-2')}, "+-2"); + assertException(function () {new BigNumber('-+2')}, "-+2"); + assertException(function () {new BigNumber('--2')}, "--2"); + assertException(function () {new BigNumber('++2')}, "++2"); + assertException(function () {new BigNumber('.-2')}, ".-2"); + assertException(function () {new BigNumber('.+2')}, ".+2"); + assertException(function () {new BigNumber('. 2')}, ". 2"); + assertException(function () {new BigNumber('..2')}, "..2"); + assertException(function () {new BigNumber('+.-2')}, "+.-2"); + assertException(function () {new BigNumber('-.+2')}, "-.+2"); + assertException(function () {new BigNumber('+. 2')}, "+. 2"); + assertException(function () {new BigNumber('-. 2')}, "-. 2"); + + assertException(function () {new BigNumber('+2..')}, "+2.."); + assertException(function () {new BigNumber('-2..')}, "-2.."); + assertException(function () {new BigNumber('-.2.')}, "-.2."); + assertException(function () {new BigNumber('+.2.')}, "+.2."); + assertException(function () {new BigNumber('.-20.')}, ".-20."); + assertException(function () {new BigNumber('.+20.')}, ".+20."); + assertException(function () {new BigNumber('. 20.')}, ". 20."); + + assertException(function () {new BigNumber(undefined)}, "undefined"); + assertException(function () {new BigNumber([])}, "[]"); + assertException(function () {new BigNumber('')}, "''"); + assertException(function () {new BigNumber(null)}, "null"); + assertException(function () {new BigNumber(' ')}, "' '"); + assertException(function () {new BigNumber('nan')}, "nan"); + assertException(function () {new BigNumber('23er')}, "23er"); + assertException(function () {new BigNumber('e4')}, "e4"); + assertException(function () {new BigNumber('0x434')}, "0x434"); + assertException(function () {new BigNumber('--45')}, "--45"); + assertException(function () {new BigNumber('+-2')}, "+-2"); + assertException(function () {new BigNumber('0 0')}, "0 0"); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js new file mode 100644 index 0000000..b41cd99 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js @@ -0,0 +1,19930 @@ +var count = (function div(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(dividend, divisor, expected) { + assert(String(expected), String(new BigNumber(dividend).div(divisor))); + //assert(String(expected), String(new BigNumber(dividend).div(new BigNumber(divisor)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing div...'); + + BigNumber.config({ + DECIMAL_PLACES : 40, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : [-7, 21], + RANGE : 1E9, + ERRORS : false + }); + + T(1, 0, I); + T(1, -0, -I); + T(-1, 0, -I); + T(-1, -0, I); + T(1, N, N); + T(-1, N, N); + assert(false, isMinusZero(new BigNumber(1).div(I))); + assert(true, isMinusZero(new BigNumber(1).div(-I))); + assert(true, isMinusZero(new BigNumber(-1).div(I))); + assert(false, isMinusZero(new BigNumber(-1).div(-I))); + assert(false, isMinusZero(new BigNumber(0).div(1))); + assert(true, isMinusZero(new BigNumber(0).div(-1))); + assert(true, isMinusZero(new BigNumber(-0).div(1))); + assert(false, isMinusZero(new BigNumber(-0).div(-1))); + T(0, 0, N); + T(0, -0, N); + T(-0, 0, N); + T(-0, -0, N); + T(0, N, N); + T(-0, N, N); + assert(false, isMinusZero(new BigNumber(0).div(I))); + assert(true, isMinusZero(new BigNumber(0).div(-I))); + assert(true, isMinusZero(new BigNumber(-0).div(I))); + assert(false, isMinusZero(new BigNumber(-0).div(-I))); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, -I); + T(-I, 1, -I); + T(-I, -1, I); + T(I, 0, I); + T(I, -0, -I); + T(-I, 0, -I); + T(-I, -0, I); + T(I, N, N); + T(-I, N, N); + T(I, I, N); + T(I, -I, N); + T(-I, I, N); + T(-I, -I, N); + + T(1, '1', '1'); + T(1, '-45', '-0.0222222222222222222222222222222222222222'); + T(1, '22', '0.0454545454545454545454545454545454545455'); + T(1, 0144, '0.01'); + T(1, '0144', '0.0069444444444444444444444444444444444444'); + T(1, '6.1915', '0.1615117499798110312525236210934345473633'); + T(1, '-1.02', '-0.9803921568627450980392156862745098039216'); + T(1, '0.09', '11.1111111111111111111111111111111111111111'); + T(1, '-0.0001', '-10000'); + T(1, '8e5', '0.00000125'); + T(1, '9E12', '1.111111111111111111111111111e-13'); + T(1, '1e-14', '100000000000000'); + T(1, '3.345E-9', '298953662.1823617339312406576980568011958146487294'); + T(1, '-345.43e+4', '-2.894942535390672495150971253220624e-7'); + T(1, '-94.12E+0', '-0.0106247343816404589885252868678283042924'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '0.2499375156210947263184203949012746813297'); + T(1, '4.001 ', '0.2499375156210947263184203949012746813297'); + T(1, ' 4.001 ', '0.2499375156210947263184203949012746813297'); + T(1, ' 4.001', '0.2499375156210947263184203949012746813297'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, I, '0'); + T(1, -I, '0'); + T(1, Number.POSITIVE_INFINITY, '0'); + T(1, Number.NEGATIVE_INFINITY, '0'); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, N); + T(0, '+0', N); + T('0', '0', N); + T(3, -0, -I); + T(9.654, 0, I); + T(0, '0.001', '0'); + T(0, '111.1111111110000', '0'); + T(N, 0, N); + T(0, N, N); + T(N, '0', N); + T(-1, 1, '-1'); + T(-0.01, 0.01, '-1'); + T(54, -54, '-1'); + T(9.99, '-9.99', '-1'); + T('0.0000023432495704937', '-0.0000023432495704937', '-1'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, '0'); // 78 + T(-Infinity, -I, N); + T(-I, -Infinity, N); + T(I, '-999e999', -I); + T(1.21123e43, -I, '0'); + T('-999.0', I, '0'); + T('657.342e-45', -I, '0'); + T(I, 123, I); + T(-0, I, '0'); + T(100, 100, '1'); + T(-999.99, '0.01', '-99999'); + T('10 ', 4, '2.5'); + T('03.333', -4, '-0.83325'); + T(-1, -0.1, '10'); + T(43534.5435, '0.054645', '796679.3576722481471314850398023606917375789185'); + T('99999', '1', '99999'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '0.75'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 1}); + T('999.5', 1, '999'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 2}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 3}); + T('999.5', 1, '999'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 4}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 5}); + T('999.5', 1, '999'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 6}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-1000'); + T('999.4', 1, '999'); + T('-999.4', 1, '-999'); + T('999.500001', 1, '1000'); + T('-999.500001', 1, '-1000'); + + BigNumber.config({ROUNDING_MODE : 7}); + T('999.5', 1, '1000'); + T('-999.5', 1, '-999'); + + BigNumber.config({ROUNDING_MODE : 8}); + T('999.5', 1, '999'); + T('-999.5', 1, '-1000'); + + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-2.8', '3', '-1'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-3', '-0.0047', '638.297872341'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('15', '-3', '-5'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('3', '0.38', '7.894736842106'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-2.9', '-2.2', '1.3181818181818182'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-1.20', '0.00035', '-3428.571428571'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-6', '-1.0', '6'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('1.1', '-1.5', '-0.7333333'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-1.05', '-2', '0.525'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-2', '-1', '2'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-5', '1', '-5'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('0.000033', '-1', '-0.000033'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('6', '-3', '-2'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-1.20', '1', '-1.2'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-1', '0.0019', '-526.315'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-7', '3', '-2.333333333333'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('2', '4', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('33', '-2', '-16.5'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-2', '-1', '2'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-10.2', '12', '-0.85'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-1.0', '10', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('1.3', '-3.0', '-0.434'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('1.4', '6', '0.233333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('55', '2', '27.5'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('1', '7', '0.14285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-1.4', '2', '-0.7'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-5', '3', '-2'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-1', '2', '-0.5'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-8', '-3', '2.67'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-16', '7', '-2.285714285714'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('1', '1', '1'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0.000019', '1', '0.000019'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('26', '-7.7', '-3.376623'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-5.7', '-9.1', '1'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('1', '6.9', '0.144927536232'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('33', '-5.5', '-6'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1.9', '1', '1.9'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-5', '0.00014', '-35714.2857142857142858'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('3.0', '3', '1'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-2', '3', '-0.666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('5', '3', '1.66666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-0.000059', '-4', '0.00001475'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('1.0', '3', '0.333'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('2', '4', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-6.3', '5.2', '-1.211538'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('3.5', '-1.7', '-2.0588235294117647058'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('3', '3', '1'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('3.5', '-6', '-0.5833333333'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('1', '-5.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-3.0', '-1.5', '2'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-3', '-3', '1'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('11', '1', '11'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-3.0', '-1.1', '2.7272727272727272'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-1.2', '-7', '0.2'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('3', '7', '0.42857142858'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('1', '2', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-2', '-0.51', '3.92156862745098'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('8', '4', '2'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('1.2', '0.000016', '75000'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('37', '-2.5', '-14.8'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('0.015', '26', '0.00058'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('6', '-91', '-0.06593406'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-3', '2', '-1.5'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('1', '-19', '-0.0526315789473684211'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('1.8', '3', '0.6'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-1', '-8.7', '0.114943'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-0.0056', '1', '-0.0056'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('7', '0.00119', '5882.35294117647059'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('1.2', '-1.0', '-1.2'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.000013', '-0.38', '0.0000342105263157895'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('1', '-3', '-0.333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('5.8', '-2.1', '-2.761904761904762'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-9', '-6.3', '1.429'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-12', '-0.00027', '44444.444444444444'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-9', '-2', '4.5'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('1', '3', '0.3333333333333'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-1', '2', '-0.5'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('1', '-0.014', '-71.42857142857143'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-4', '-7', '1'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('1.1', '1.2', '0.9166666666666'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-1', '-6.1', '0.16393442622951'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('5', '2.8', '1.785714285714286'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-1', '7', '-0.142857142857'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-1', '0.000016', '-62500'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-3', '-1.4', '2.14285715'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('6', '1', '6'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-0.60', '-7', '0.0857142857'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('1', '3', '0.3333'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-1', '-0.0061', '163.93442622950819672131'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('1.9', '-5', '-0.38'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-9.5', '-3.1', '3.06451612903'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-9', '-3', '3'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-0.00090', '-5', '0.00018'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('6', '-2', '-3'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('4', '10.7', '0.373831775701'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-20', '5.2', '-3.8461538461538462'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-2', '1.22', '-1.639344262295082'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-2.3', '2.5', '-0.92'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('0.000123', '-1.5', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-8', '1', '-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-1.4', '-2.2', '0.6363636363636'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('7', '-3', '-2.33333333333333'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('7', '-0.076', '-92.105'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-2.9', '8.0', '-0.3625'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('2', '6.6', '0.30303030303'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-8', '10.0', '-0.8'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('8', '-1.1', '-7.27272727272728'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('4', '1', '4'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-6', '9', '-0.67'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('1', '0.000033', '30303.03030303030303030304'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('2.0', '3', '0.66666666667'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-2', '-30', '0.06666666667'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('1.8', '-1', '-1.8'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('2.6', '-0.00010', '-26000'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-6.4', '-3', '2'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-1', '8', '-0.125'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-1.00', '3', '-0.33333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('-4.0', '4', '-1'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('1', '2', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-0.00012', '8', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-2.9', '5.3', '-0.5471698113207548'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-2', '3', '-0.66666666667'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-5', '-6', '0.833333333333'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('97', '0.032', '3031.25'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-8', '1.7', '-4'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-1.1', '-5.5', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-15', '-3', '5'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-6.1', '4', '-1.53'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-2.7', '-6.7', '0.4029850746268656716'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-4.8', '-4', '1.2'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-8', '5', '-1.6'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('2', '6.1', '0.3278688524590163'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('5.6', '-15', '-0.373333333334'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-3', '-4', '0.75'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('1.0', '0.00018', '5555.5555'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-14', '-0.00012', '116666.6666667'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-0.0000113', '-6', '0.00000188333'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-2.0', '-7.7', '0.26'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-3', '0.0073', '-410.958904109589041096'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('4.4', '-1', '-4'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-3', '-1.4', '2.14285714285714'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-2.2', '-7.6', '0.2895'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('3.8', '9.4', '0.40425531914893617'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-1', '7', '-0.14285714285714'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-5', '-4.3', '1.1627906977'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('3', '2', '2'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('2.7', '1', '2.7'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('4', '2', '2'); + + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('4', '-0.0025', '-1600'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('205783.0120', '-6.58', '-31274.01398176291793313069908814'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('2.6', '0.0000014140003', '1838754.9139841059439662070793054287187916438207262049378631673557637'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-43506731.7020', '0.0000000000000020852', '-2.0864536592173412622290427776712065988e+22'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('85374685.72', '-4602612.194', '-18.54918079591738899390748887413215766'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-11.889579111', '-7', '1.698511301571428572'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('21.6', '-3', '-7.2'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-180.72', '0.0000000001581', '-1143074003795.0664136622390891840607210626185958254269449715370018976'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-0.00119467686529', '20885766', '-5.72005290727665913713674662447142230742219366050543705220100617e-11'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-0.000000015740712', '-0.0000000000000000000266', '591756090225.56'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-10', '1197', '-0.00835'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('-0.0000000000000000000759363178177', '3.916', '-1.939129668480592441266598569969356486210418794688457609806e-20'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-52073715', '157.5445101', '-330533.351920334544'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-325.0', '-90', '3.6111111111111111111111111111111111'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-0.00000000000000031', '-0.0000000000000032', '0.096875'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-0.00000000879', '-5.6', '1.5696428571428571428571428571428571428571428571428571428571428571428571428571429e-9'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-0.00000251681', '127.91', '-1.96764131029630208740520678602142131185990149323743256977562348526307560003127198811664e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('2961036591.4', '0.000013043', '227021129448746.45403664801042704899179636586674844744307291267'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('4', '3.38', '1.1834319526627218934911242603550295857988165680473372781065088757396449704142011835'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-0.0000000000001136', '0.00000000000000144185989652', '-78.7871278438211'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('11.8853', '-3', '-3.961766666666666667'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('-1.20', '-9568301.017', '1.25414114571433324713095196302601858245865008826571702745166676229370972349291e-7'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0', '-6988.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('5', '-3936814629.28', '-1.2700623399468e-9'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('2102712', '0.00000000000000304964', '689495153526317860468.77664248894951535263178604687766424889495153526317860468776642488949515352631786046877665'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('0.00000000000000000006318187', '89048', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-18.472', '-2304.31', '0.00801628253143023'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('0.933711', '-41.4', '-0.022553405797101'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-0.00000000159747', '-54.285323180', '2.9427290958609339534561098287634805235030747771261587614997044952657496548775267e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('36.0', '0.15278', '235.6329362482000261814373609111140202'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('3273788', '2.0', '1636894'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-144.7', '0.000484419582', '-298707.99071042'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-0.000136434', '5.30860461610', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('0.00000000000027963249176', '690.93615', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('0.000000000000000041166', '-954146.63778', '-4.31443117546170598004200620115714474e-23'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('80606.45399', '29030.6863', '2.7765948471566102796543256368003948980014296113970960445396015319141'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-307761.1715', '3', '-102587.057166666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-1.09', '-1.1', '0.990909090909090909090909090909090909090909'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-0.000000122', '1489.273', '-8.1919164585673681051090028490411093197822024e-11'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('1663.22977564', '10487', '0.158599196685420043863831410317535996948603032325736626299227615142557452083'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-98', '-4242.281285', '0.023100778429405819091036534132130279051027'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('0.00880312', '32.53937', '0.000270537505796823970470233443364146263434110740312427683756630813688157'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('5.82', '805.9', '0.0072217396699342350167514579972701327708152'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('5', '20.1', '0.2487562189054726368159203980099502487563'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-0.000000190702099115', '-0.00000000000005357223', '3559719.2634131526725693516958319636871565734709942072599927238421846542509057'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('35.8812641704', '2402312', '0.00001493613825781164145206784131286860324554'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-1425073364', '-10284292.72', '138.5679504462801793918600169910371'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('138823.37071', '-25036.2', '-5.5449058047946573361772153921122215032632747781212803860010704499884167725135'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-1.0', '2.7', '-0.37037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037038'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('29638493.73', '41.59351', '712574.96013200136271259626802354501940326748091228655624399094954958117263967383373031032966441159'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-1392357420', '65060.9365', '-21400.8204447'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-1.11047040', '0.000000226215484', '-4908905.35150104932693289907599782161684387616897170487233314232371468'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('-220.431900', '1674.3721017', '-0.1316504854423901203011'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('5.6685641929', '-924503127242', '-6.131471085241861e-12'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-760.5', '-5.9896920', '126.968131249486618009740734582011896438080623'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-0.00000065', '-32268321', '2e-14'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-1.11', '104938.6447517', '-0.0000105776094462285121510625524763430267264835898746917817157441798492755443580876965212689285842'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('0.0000000000000000000389', '0.000000004345746504', '8.95128143443131675128191048301422047234994450564482e-12'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-30614604.60', '-178450189969', '0.000171558262870542789273504424217640996351681502199029'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('5.09', '-261.708521', '-0.019449118357135952787719892391276018101069'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-17657942.918', '0.000000000000120', '-147149524316666666666.66666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-5228', '799347.8', '-0.006540332005667620527635154559754840133418769651'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('949309450.95', '-1', '-949309450.95'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-122597442444', '-0.0000000000088102620620', '1.391530031470702919937729316547088199429316816614801e+22'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-429572333.64', '-153.40', '2800341.158'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-6', '0.0023', '-2608.6956521739130434782608695652173913043478260869565217391304347826086956522'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('13023138.990', '0.0000912303', '142750149785.7619672411468558143511530708547489156563115543848919'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-1', '-356.9405623', '0.002801586890423296674455874806582608445675102249369656467312'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-0.1761', '-1', '0.1761'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-0.00000000000000001080427993', '0.00000000000000000542', '-1.993409581180811808118081180811808118081180811808118081180811808118081180811808118081180811808118081'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-3', '-0.00000000000028491', '10529640939243.9717805622828261556280930820259029167105401705801832157523428'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-2.11', '-1', '2.11'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-125.8754715', '54.73', '-2.29993552896035081308240453133564772519641878311712040928193'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-0.00000138983610179', '65323.63269', '-2.127616062605718506314134992421224454104988018234477033e-11'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.0000000627720', '2089419.6460', '3.0042792083520018744956320756256543784790276639334327384801473241244712599969494113e-14'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-217', '13400814874', '-1.6193045127503341107643153014427650841973716232087e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-209172.068', '-95.8169', '2183.03940119123035706645'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('722260.251', '312846', '2.309'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('0.000000000000000000043026447166', '999.3474', '4.30545445617810182925377101096e-23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('0.000001001769', '0.0000000000000545377150533', '18368371.300868872296239200828462479512442900146931227723210727885333446839709498'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-21639.9', '1', '-21639.9'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-4064.98760', '-1050752806.1', '0.00000386864310654349629150136228220537701973975247040741640708905074224574083676101638345175007951'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-0.00000000000000612', '-38134.257', '1.60485623202256176120069679081462108990349543194194133636850457057548020405904329e-19'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-265049816341', '-2', '132524908170.5'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('18', '1', '18'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-0.0000000922', '-282.900786', '3.259093101283e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-260074626.109', '-8.200', '31716417.8181707317073170731707317073170731707317073170731708'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-0.0000000000000003606626', '121920.32', '-2.9581828525384447809848268114781851e-21'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('0.051829', '-21845698', '-2.372503731e-9'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('0', '-108765478', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('4.06', '-81.9529', '-0.049540650788440677511106989502506927759725403249915500244652721258186104457560379193414754085'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('11', '8.168', '1.34671890303623898139079333986287952987267384916748285994123408423114593535749265426053'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('3.0', '-187113.5', '-0.00001603304945928540699'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('0', '29.1292', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-539', '1.63309627', '-330.0479034221295478190027339906911'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('4.6', '9576522.7', '4.8034136649621265973712984567978938743600534670063487e-7'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('888.495', '2', '444.2475'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('0.0000000660515321', '0.000000000000000000157532', '419289617982.37818348'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('1194135', '19.3', '61872.2797927461139896373056994818652849740932642487046632124352331606217616580310880829015544041450777202'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-199941187483', '1605', '-124573948.587538940809968847'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('0', '-0.000000000013210', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-15579.9582254', '1.82', '-8560.41660736263736263736263736263736263736263736263736263736263736263736'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('0.00021763543', '0.000000000000000006304245', '34522045066459.1874205'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-9.6', '-6245', '0.001537229783827061649319455564451561248999199359487590072057646'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-1558.3541291', '-0.0000000000905501700', '17209842114045.72735755217245864916653386735773108'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2196.0533764', '-6.3', '348.5799'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('134631.169', '-0.0051', '-26398268.43137254901960784313725490196078431373'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('0', '3', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-81.21601', '0.000000000000000331', '-245365589123867069.4864048338368580060422960725076'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-0.18606', '-2.1', '0.0886'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-0.000000000000000000461', '-19253159', '2.394412262424052073740210632447381751742662e-26'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-929', '-424621853.40', '0.000002187828988454978092279223234156793'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('2.0', '-1186150187', '-1.68612712110123370068650505553560225506249488118151769932655e-9'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0.000000000000000000522', '128362.3152', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-6.08', '-930214.3174', '0.0000065361281655972929233694893030249977100599720354293484668310696547444906054936625511027637511'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-13468.73594', '-17.44', '772.28990481651376146788990826'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-4.94229', '-2', '2.471145'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-24.40246', '35.4837273223', '-0.687708474883474291'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('1', '29.98403894', '0.0333510772848536061833169430909230269296068356826913859390818947489000292767095'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-430', '1689585.07', '-0.00025450035493033801488314524464873'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('3083081101.8', '-1', '-3083081101.8'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('2.4', '4.3', '0.558139534883720930232558139534883720930232558139534883720930232'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('467216723', '1.1', '424742475.45454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('0', '-16208070.9330', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-14.01', '264360777.70', '-5.2995758757748578e-8'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('1', '-1', '-1'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('510', '1087.241548591', '0.46907699642359095636184954255459240447481123022295185773956042018'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-522.4', '-0.0000000430', '12148837209.302325581395348837209'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-0.0001750931579', '-1641610', '1.0665941234519770225571237991971296471147e-10'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-61755625405', '-5.209793', '11853757990.9'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('0.0000052665303263', '0.00000029854211122', '17.64082897644887901654'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-17926303.14', '11.395', '-1573172.7'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('0', '-3.40233', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('-0.0000000965828945324', '1.2', '-8.04857454436666666666666666666666666666666666666666666666666666666666666666666666666666666667e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-22442925.654', '20806718.15', '-1.07863842304222302353'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('0', '0.0000000000005381', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-95.4860600', '92963', '-0.00102714047524283854866990092832632337596678248335359228940546238826199'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-25.24782827', '96008.9585', '-0.00026297'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('38', '14576527.63', '0.000002606930879875127022964384831341344632706602978531177'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('546214273620', '-2', '-273107136810'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('13', '3015907', '0.0000043104777435113218'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-1.271', '-6.28', '0.202388535031847133757961783439490445859872611464968152867'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-6', '6964.78469', '-0.00086147673863'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-142.72', '-26745.79', '0.005336166925710551081123421667484863972984159376111156185702497477173042934982'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-28.0', '2363923123', '-1.1845e-8'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-91504451.175', '-18397.6177841', '4973.71193645'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('-1151830', '5.2289', '-220281.5123639771271204268584214653177532559429325479546367304786857656486067815410506989997896307062670925'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.0000000129422662', '-776', '-1.6678178092783505154639175257731958762886597938144329896907216494845360824742268041237e-11'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('30323', '-0.00000000000000071420145253', '-42457208526506439363.7659352409214288776209918638766283439'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-0.000000000000000000036513', '62054611', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-0.000000000000302978047', '-0.00000000000030', '1'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('36.98', '-0.61069704476', '-60.5537562647497361045'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-2209843.27987', '30200516.420', '-0.07317236729126104129049856823607256713261196611021395'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-11.0', '-2.17', '5.069124423963133640552995391705069124423963133640552995391705069124423963133640552995391705069124424'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-0.000000470683', '0.000029822775', '-0.01578266945312768513325805529498848'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('-198.608', '-3.933769477', '50.4879610158203482344016367484769113225797699685593447396612662'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-38294.7981', '34.2598', '-1117.77646396067694499092230544253031249452711340988563856181297030338764382745958821'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('0', '27.783', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-7', '-251.5', '0.02783300198807157057654076'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('54335.16', '-0.000000411', '-132202335766.42335766423357664233576642335766423357664233576642335766423357664233576642'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-40946555.55', '2.60', '-15748675.211538461538461538461538'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-198237302872', '7', '-28319614696'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('0.00000000000000000005371334', '8', '6.7141675e-21'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('1.5258', '-1190852944', '-1.2812665137938307855415605371337940782720187e-9'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('1', '-0.00000000000000000005562070', '-17978917920846015961.6833301270929707824604868331394606684202104612131815'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('-5.2', '-23421458', '2.2201862924161254179820914650146886671188446082220842101290192950413249252032047e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-1416968', '195116', '-7.2622'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-2235863915', '4049', '-552201.510249444307236354655470486539886391701654729562855025932328970116'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('0.000000026', '-135677754', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('0.000000000000000000040315579', '-2031.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('19.54706', '26', '0.75181'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-7', '777276.6629', '-0.000009005802353415800720292'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-116803.539531', '6', '-19467.2565885'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('1920.573', '-2543.47', '-0.75509952938308688523945633328'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-1', '29009.081658', '-0.000034472'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('0.339269187032', '124035.423', '0.00000273526045081492566845198730043432834505671819251182785098414990691812'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('537169.20', '-4.69236435329', '-114477.299620471646505593344002922087290682432367736916573868681887835934263932376920317895'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-131935099', '99727829.3', '-1.322951676839515848160549504710817966234426'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('0.0000000000000000242440379', '161792.78', '1.49846228614156948165424934289404014196430767800639806e-22'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-1212.57', '8355.383', '-0.1451244066250463922479675677344'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-9.5', '-2058275.01670', '0.0000046155153820169283114828179899366894939001277535158647490181'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-7.632', '2211501.37', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('-0.000000000000000042828921', '-95402.2642', '4.489298169088947052474672818090202098159427121856506210677544904e-22'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-0.00001354439488', '-136.072', '9.953844200129343288847080958e-8'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-146339.03', '-225012.7', '0.6503589797375881450247030500945057767850436886451298082286022077864938290149844875422587258408081'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('0.000000000000632992', '0.000048002', '1.3186783884004833131952835298529227948835465188950460397483438190075413524436481813258e-8'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-5', '1657832.833', '-0.0000030159856292338251693920939494386283517404556072029489115565127669'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('37.5', '-119757494', '-3.1313280486647457736548829253224019534009287e-7'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-318.60', '-0.00000000000001136', '28045774647887323.943661971830985915'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('811.332688', '-34.233242365', '-23.7001414984139788186'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-133201997.7', '-16558085765', '0.0080445287933921992220095255679'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('0.0000000000000033574327', '-25435.385', '-1.31e-19'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-340.749462705', '0.000000000000004888', '-69711428540302782.32405891980360065466448445171849427168576104746317512274959083469721767594108019639934533552'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-11047200.46', '0.27', '-40915557.2592592592592592592592592592592593'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('0.00000462644', '-26293112', '-1.75956349328295e-13'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-4432656.421', '308.63692', '-14362.04204279902741383'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('7', '0.000000000000000000157', '44585987261146496815.28662420382165605095541401273885350318471337579617834'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-562908.8975', '-41412.2282', '13.59281840091859630967647377158034688894136828889588703657341480601616'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('51.0770', '-0.00000000049300', '-103604462474.645030425963488843813387423935091277890466531'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-46603.49', '-7', '6657.64142857142857142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('82292411.5750', '0.00000000000000000001936', '4.25064109375e+27'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('0', '435', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-1.25603776', '35257646', '-3.562454963669440665437505385356696814075e-8'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('0.0000137705283114', '2102089', '6.55087787025192558450189311679952656619201185106815e-12'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-1.452', '-0.00000000000003591683', '40426730309996.7342'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('2', '-136175936.0', '-1.4686882710319685263628369699621524907308145838630402364188633151748632004996829983235804599e-8'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('9.219390', '650720', '0.0000141679831571182689'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-999.439', '0.000000323', '-3094238390.0928792569659442724458204334365325077399380804953560371517027863777089783281733746130030959752322'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('732035039.9', '-0.000000000000000035', '-2.09152868542857142857142857142857142857142857142857142857142857142e+25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('239310308', '3.1', '77196873.5483870967741935483870967741935483870967741935483870967742'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-2746.62', '0.00000053794792', '-5105735886.1058520311780367140372993727719962185186997284049355558433'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('27804.01396', '-9810.75291', '-2.8340346775689002649644755959917453471'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('27.71', '0.0000000000011523', '24047557059793.456565130608348520350603141543'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-283504594', '78447408821.3', '-0.0036139446574432038958112757577688127075463618032118161382991188901351'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('2774774', '-79.4027727', '-34945.5554969555867914924839897939735295918702849025321253044857462515285691'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('2.50', '29.54', '0.0846310088016249153689911983750846310088016249153689912'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-26269.730773', '-1.551888', '16927.5944997319394183085377295268730733145690926149309744002144484653531698163785016'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-7339052664.8', '-14235', '515563.94'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0.00000000000000233553653', '-0.108', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-0.0000000000000000008666', '47471219.4', '-1.82552715298482515913632e-26'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-1069.7', '-1004', '1.06543824701195219123505976095617529880478087649402390438247011952191235059760956175298804780876494'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-370.147', '0.0000000000000000017022491', '-217445848554127595074.069946637069744962708454'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('5720.76', '-1091.4373472', '-5.24149188652576099056178'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('1.82075', '-1.83', '-0.99494535519125683061'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-0.0000202', '-120999', '1.6694352845891288357755022768783213084405656245092934652352498780981661005462855e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-2.383099', '0.000007206', '-330710.38023868998057174576742'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('3.507', '-4', '-0.87675'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('-5.4058497', '0.0000252', '-214517.84523809523809523809523809523809523809523809523809523809523809523809523809523809523'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('53.7606', '1.5', '35.8404'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-472.386625', '-2133245.7', '0.0002214403268221752421673696564816701611'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-21.439', '-0.000118', '181686.4406779661016949152542372881355932203389830508474576271'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('0', '7.07557', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('3.282', '-1.4', '-2.344285714285714285714285714285714285714285714285714285714285714285714285714285714285714285715'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('0.0000000000000000001520', '-393665.3', '-3.8611480361616835418310935711123129216621327813246430407e-25'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-1.49', '-50637.5', '0.000029424833374475438'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-27957', '-0.00000000000000088964279', '31424972263305815135.0835991151010171172184737202220230436532847076746'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-47', '-0.0000000000027870669', '16863606682710.05622434108058188341298875889918537656918102683505731419651246979396152996'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('0.0000000000013548773', '-40894', '-3.31314447107155083875385142e-17'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('-18409.7', '0.000000000000000003349', '-5.49707375335921170498656315318005374738727978501045088086e+21'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-0.000000576194', '6781238.273', '-8.496884739976751440717293314904877992922281732659595045025e-14'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-1175147973.37', '-227632.0', '5162.49021829092570464609545230898994868911225135306108105'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('2.634685', '-21.564121', '-0.1221791048195286976918743870895549139239202'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-10.499', '6', '-1.749833333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('10164.877', '1', '10164.877'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-12826.3', '0.00000000003228296', '-397308673058480.38718'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-6', '-0.00000000018569207', '32311557515.6225034273138319800086239547009196461647500617554643017335096754535613717914825334221327'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-0.0000000000000025251098436', '-1196.32', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-38919054533', '2048.5', '-18998806.21576763485477178423236514522821577'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-53882', '-0.00047938018', '112399306.95507686613159517775641037140918091357051933185890163'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('6.743484', '-35154451448', '-1.9e-10'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('135.562', '9.5', '14.2696842105263157894736842105263157894736842105263157894736842105263157894736843'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-0.000000000000027', '-3', '9e-15'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('440895409.37', '-4.244', '-103886759.983506126295947219604147031102733270499528746465598492'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-56.521', '1468243.7', '-0.000038495653003653276360048403408781'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-1', '-9.113', '0.1097333479644464'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-8.3', '-2599.30', '0.003193167391'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('522007.492', '0.00000000000003658', '14270297758337889557.135046473482'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-199.8732', '15499', '-0.012895877153364733208594102845344860958771533647332085941028453448609588'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-6', '20461.253171', '-0.000293237171245399473680164650751928277384589524758585960805127657740372523930782655776'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-4.031987', '-718944.2373', '0.00000560820546408738840864202306333723776827329748735159657979777508955909117765453713'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-13.301223979', '-1088989.879', '0.00001221427695105327971555922972'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-120.71282', '-1.6332383817', '73.91010482765707587215956253570819447023775512830883651036597482626990604723675408589'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('32618.98', '-0.05105766719', '-638865.4592975343494145252'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-0.3666', '0.0000000099345', '-36901706.175449192208968745281595'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-27', '277.0', '-0.097472924187725631768953068592057761732852'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('39.944', '-1', '-39.944'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('960310', '-1.3', '-738700'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('1083.46', '5.7', '190.080701754385964912280701754385964912280701754385964912280701754385964912280702'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0.0000000011317252', '-0.0000000000242784677', '-46.6143586153915306607261709518842492683341790964839185464740017344669573195511016537505783366'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('0.00000000000000000003202048434', '-37461279.158', '-8.54762172026950196221059857488382671526926186870065554209444969428504959e-28'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-105350.008', '8302.589', '-12.6888140555'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('7205.714', '1068.943458', '6.74096'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('0.0000000000000001024647', '2.42438', '4.2264290252e-17'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-3323840.9', '117167158', '-0.02836836667148656110614204707431753188'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-1289.2', '-1324714.0', '0.000973191194476694592'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('1.703004195', '-1', '-1.703004195'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('4.735795', '-115.173571', '-0.041118764998612398672608666444839154982873631659818900639974078775416280182'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('0.00000053', '-50426083392', '-1.05104335762091621934229636709676268327383326911704322753205032418314690276868053e-17'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('2.5', '-0.000000000007057964178', '-354209788679.9447567272705418369721853241176935'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-1', '-6.8', '0.147058823529411764705882352941176470588235294117647058823529411764705882352941177'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-5', '-0.0007996', '6253.1265632816408204102051025512756'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('0.000000000000013077699', '-2.3', '-5.6859560869565217391304347826086956521739130434782608695652173913043478260869565217e-15'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('72500883354', '0.0749', '967969070146.8624833110814419225634178905206942590120160213618157543391188251001335113484646194926568758344'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-0.754', '-1024768.17707', '7.35776165645408862461994055098044302504855104243406011526606548002844102407955e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('0.0000097840146', '1.7', '0.0000057553027058823529411764706'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('147.9', '2', '73.95'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('87333.5', '-3756', '-23.251730564430245'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('-1508.641', '-0.0000000000000000145261483022', '103856918476559596968.42478791638561659073463014971310830350197937413978111299417764800135'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-0.000000007182', '2.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-6', '-1.1', '5.454545454545454545454545454545454545454545454545454545454545454545455'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('2', '6577.20806', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-0.00000000021318134', '4229870.2971', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('69960189968', '-598702452', '-116.8530206186628412204999621414612145266443639018201315133414552977311006569921313768061868569063'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('1', '3', '0.33333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('144.0', '-3.2702', '-44.034004036450370007950584062136872362546633233441379732126475444926915784967'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('3', '1542.4268', '0.001944986951730869821504657465754614740874575052767496000458498257421357045922697919928'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-434863226.9', '0.00000000000000042892', '-1.01385625967546395598246759302434020330131493052317448475240138021076191365e+24'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-9', '5.6297132122', '-1.5986604753677935495031822750866200864270021687056053835551719260986336749084605528602738'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-8.408363', '-4.6268', '1.81731715224345119737183366473588657387395176'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-1.061', '-199699007.68', '5.3129958547423464092398037898953269350567060364072811601063635290268259e-9'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('-10.70', '14.8787', '-0.719148850369992001989421118780538622325875244477004039331393199674703'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-316352', '-77.54', '4079.855558421459891668816094918751612071189063709053391797781790043848336342533'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('984.409', '138.1693670', '7.12465448292891144243282232016015532589072366525'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('20.7946994', '-4.1047432', '-5.06601713841684420111835498016051284280098204438221616397342469560581'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('1', '-5760.0', '-0.0001736111111111111111111111111111111111111111112'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('658.3', '-5.3', '-124.20754716981132075'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('2.2', '0.000000000000017779128', '123740601901285.59735888059301896020997205262260331327835650882315488138675867567858221168'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('37440.0', '-0.00000307068092966', '-12192735376.17128134113831086'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-1.5488', '1', '-1.5488'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-7.4', '3', '-2.4667'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-46.88587390', '6.0', '-7.8'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-0.0000000056373', '42', '-1.34221428571428e-10'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('7.8', '-42', '-0.18571428'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('4.067698401', '-4.73189072461', '-0.8596348981273775315827220919851782113743168705'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('-0.00000323175293', '-7279', '4.439830924577551861519439483445528231899986261849155103723038878966891056463799972e-10'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-1.043726', '-0.0000000000000029332638', '355824116467124.43660880415869858005952277459667964401974346800993487186525807873127538'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-535379', '-9.279', '57697.9200344864748356503933613535941372992779394331285698889966'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-623.1', '0.0012', '-519250'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('14228125', '-2', '-7114062.5'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-1', '-1456807028', '6.8643271262417330952085439829440471370378369701275219273585217767085072025065e-10'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('890.53', '-177.9', '-5.0057897695334458'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-3', '13.036', '-0.2'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-2.42526431019', '124099556443', '-1.9542892655736000808165273709623777756599439032855593040517987695705627269145163e-11'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('0.01089604198', '-1.19', '-0.0091563378'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('1', '-32436.94', '-0.00003082904860939411'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-25350502.180', '-0.0011028', '22987397696.771853463910047152702212549873050417120058034095030830612985128763148349655422560754443'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-7.31', '-10.6390251', '0.68709303073267493278120003683420203604933688895987283646882269316198906232489290771576429498225359'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-117.1', '-0.000000000050050339264', '2339644480376.7234659598410509587549955833202481606'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-0.0000000000000000057347087', '-78280.17115', '7.33e-23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('9752917.6', '0.00000021079938541', '46266347413825.697642957848128386533325804158946764929280160750920284194011'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('94.919967', '-7', '-13.559995285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-4.2', '26059052', '-1.61172401820296455911e-7'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('43.2', '99230.61840', '0.000435349498940540715203282457826545198674283380259575203856635443481222928668153'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.0515', '2437300.243', '-2.1129936760113801047e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0', '1851.051', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('1.5', '254.258', '0.005899519385820701806826137230686940037284962518386835419141187297941'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-0.00000000000000021226', '1971.308560', '-1.0767467067661898652740593e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('237.83', '0.00015086', '1576494.7633567546069203234787219939016306509346413893676256131512660745061646559724247646824'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-1.1', '-49.9', '0.02204408817635270541083'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-0.0000036459608843', '-35.02', '1.041108190833809251856e-7'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-6', '7759857', '-7.732101248773012183085332629196646278404357193695708567825412247e-7'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-82.15846', '-8468.52', '0.009701631453902216680128286878935162224331996618063132637107782705832896422'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-6.3', '-0.00000000000000059361951', '10612858731681510.939557899638440117980623648976766279127180304434401086312'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('314.53458', '-2.69', '-116.9274'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-0.0000000000000000065388', '-0.0000029308929', '2.23099247331760229109702e-12'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-128.87', '-5770447', '0.00002233275862337874344916433683560389689048352753261575749677624627693487177'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('2.76200', '203486645550', '1.357337230919820428481184916756322243083927037589322529377161871e-11'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('862.947141', '38.87', '22.20085261126833033187548237715461795729354257782351427836377669153589'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-476024', '699486.3', '-0.680533700231155349289900316846806006064736364386264605897213426481690920895'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('0.00002744058', '8354.10383', '3.284682661168217729e-9'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('0', '-528.932', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('2.4', '5', '0.48'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-87.9458', '242.4', '-0.36281270627'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-2.1', '17429886.8', '-1.2048271019178392e-7'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-610022032', '-186142.5270', '3277.1771278252819679406200389661627404'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('61.0', '1', '61'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-2.68', '-2.30906614401', '1.16064236918992025908292941365354439403337618554579882928834021816012412931'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('6', '20.04948435', '0.299259566742922243783292112447769760223284744976496116220565044107979764577'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-562.5474', '-2', '281.2737'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-708276.119', '-437.0985', '1620.4039112465496907447634800851524313169686008988820597645610771942708565689426982705271'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('3.1', '40741823.67', '7.6088886572906813623740765652378564722211e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('0.478356', '-3484.06', '-0.00013729843917728167712381531890954805600362795'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-0.000000000005449', '-2196.4', '2.48087780003642323802586049899836095428883627754507375706e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1599645.6', '0.0000048', '-333259500000'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('124.7', '-0.00000006670188426', '-1869512404.08631898519623619400283490582159455175786963'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('1.5', '154', '0.00974'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('1.5188', '6', '0.2531333333333333'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('71100982.8', '2.2', '32318628.5454545454545454545454545454545454545454545454545454545454545454545455'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('6579.42', '0.00000000000000001643', '400451612903225806451.6129032258064516'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('0', '-1788.49', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('1.764', '1412.9430637', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('3226472.9', '-6.057428', '-532647.338111158729414530391446666803138229624850679199158454710481'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('451001810', '-1.2637722', '-356869545.001860303621174765515494010708575485360415429299679166862508923681024159259081660444817507459018'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-7', '-0.0000000000000000008861615', '7899237328635920201.9045061199341203606791765'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-350', '-0.00000000000056801180312', '616184378700415.622447814038304873596796394684045733884009646070539211086666969611545138343920264274384397408505739'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('0', '161224.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-18239292.2', '9.50', '-1919925.4947368421052631578947368421052631578948'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('4556.782', '8.837', '515.648070612198709969446644789'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('11.7', '-637.470651', '-0.018353786141599168304298922147554680129109190942188176126715518390194876595189321116'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-0.10117999', '9.6714', '-0.010461772856049796306636060963252476373637736005128523274810265318361354095580784581342929'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('366.6', '-422196.5149', '-0.00086831602597864078'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('0.0000000000000447155', '-0.00000000000000033', '-135.50151515151515151515151515151515151515151515151515151515151515151515151516'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-66.96560', '-2.5010587', '26.774901364770047180420035723271908812056270410607'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-203481271278', '-5.0', '40696254255.6'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('0.00000000000025348951382', '-30.8628936590', '-8.213407226839189622080277407859891430797869373561451e-15'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-9599430918.0', '3', '-3199810306'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-0.0000000051', '63575.8', '-8.02192e-14'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-0.000000000000000204846', '-0.0085956665', '2.38313108122563852378404862496701099327201e-14'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-4194153144.00', '0.000000000000000106309', '-3.9452474804579104309136573573262846983792529324892530265546661148162432155320810091337516e+25'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('4.5', '-0.00000000000000000610', '-737704918032786885.2459017'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-0.000654724', '0.458008516280', '-0.001429501803411313633838267283495849148405708330642484532798740211232999739364585'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-2.59275', '2565235.42598', '-0.00000101072594497227815802799752975209378'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-33.5', '1115627188.1', '-3.0027952309994443026249155643000593882711955395379629687244621929450089564377837e-8'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-44943.972', '-4', '11235.993'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('1', '-3.2', '-0.3125'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-667305176.87', '-33285.052326', '20048.193715734283625893795748272305119524'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-30', '1215.69862', '-0.024677168754209822167931719787590118346930425897826551781394635456606835664582724'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-68.0', '-19.9', '3.41708542713567839195979899497487437185929648241206030150753768844221105527638190954773869346733668'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-83', '48.2', '-1.7219917012448132780082'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('476', '-0.00000000000000000329', '-144680851063829787234.04255319149'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-613857939.8', '-1.122', '547110463.279857397504456327985'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-17.46689', '-310.8342', '0.05619359131009393432254237146362916307150242798250642947268994209774857'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-1', '36.33648', '-0.027520552348493855211071628292008471926834960348388176290053411887997956875'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-9', '-577.05236390', '0.01559650486339511900230169042376571746'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-918904792', '-53.804758', '17078504.321123421835667395809121565048206331492095922074400929375056384418641934975341771818767403432982'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-356269745137', '-1.24', '287314310594.35483870967741935483870967741935483870967741935483870967741935483870967741935483870967742'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('0.0000000000178448365', '1.1664', '1.5299071073388203017832647462277091906721536351165980796e-11'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-3659760', '13', '-281520'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-44616.5788', '0.00000003071474', '-1452611313004.76578997'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('989.3', '-138.07', '-7.165206054899688563771999710291880929963'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('353786', '-1', '-353786'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('49133.4', '695.8696375', '70.60719041646647501558795917432164153016375858186512700088886979208084790163013830302374703'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('102819', '18022', '5.70519365220286316724003995117079125513261569193208300965486627455332371546'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-0.000000000000000161022', '-49.609553207', '3.24578613574934387939124984589180398179351e-18'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('5', '1.5252870117', '3.27807157711733106472895038289271495800805683868395586364'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('2508047', '1', '2508047'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-6', '1.25901', '-4.765649200562346605666356899468630114137298353468201205709247742273691234'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-412715.83', '0.003302680365', '-124963903.3718602072471521173076038800987633570165364761236'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-0.000089', '1294.94310595', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('19.32290', '-0.002176792', '-8876.77830495518175369994009533294866941811620035354778959128846486021631832531541828525646915'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('0.00000000000034', '-3.7', '-9.18918918918918918918918918918918918918918918918918918918918918918919e-14'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('16.8', '-94145.0351', '-0.000178448071979103229417140022926179778969565650520427709734849310178864652629993018081098999983272'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.0000000000000059', '1.1', '5.36363636363636363636363636363636363636363636363636363636e-15'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1', '32148056', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('9231.60239', '-0.00000000002086', '-442550450143815.915627996165'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-7', '2', '-3.5'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-123714.68', '8.55', '-14469.55321637426900584795321637426900584795321637426900584795321637426900584795321637426900584795322'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('562244347.5', '-5.1529', '-109112217.877311805003008014904228686758912457063013060606649'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-5655445.0353', '-0.00000000000000068487962242', '8.257575273325650774295087253736487071929080450563889329391036373477855825500529424848002911618005152327977771285257e+21'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-2065.04620', '2876.71929082', '-0.71784765603993461664702558251675610043142582662148826560355133649661309292113'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('0.118710', '69.35180', '0.001711707554814727231304739026240126427864885987097667255932794822917357588411548078059978255'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-4949594439.5', '24.7', '-200388438.84615384615384615384615384615384615384615384615384615384615384615384615384615384615384615385'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('-2', '9749.6070256', '-0.000205136473167431906425945496'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-366.794', '-6.9', '53.15855072463768115942'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('15.6072462699', '-1042705.4842', '-0.0000149680293298489970673542564647422'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-2398.175827', '2703681898.73', '-8.87003692308068744785119619980849787608401428534425524e-7'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('2.873749', '-215659509.56', '-1.3325398939574589283880035176316664530951277750834e-8'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('12090808.8357', '0.0000002724963', '44370543143888.55922080409899143584701884025581264773136'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-0.0120', '0.00000006131063428', '-195724.6102722915754509790075523583377940548684860221282969248707633'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('13133', '-7.63333495', '-1720.479984963845979272794782836039443022214032413185274936743081082797237922855723761997'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-16.79', '48320.907', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-3', '-1437919.8', '0.000002086347235777683845788895875833965148821234675257966403967731719112568030567490620827'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('4', '-0.42', '-9.5238095238095238095238095238095238095'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('-6.3', '-16188.078180', '0.00038917528874943943469390879850569142729455239139449226455366674044565307381039594163857689'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('0.000000000000000007370776507', '93.3983', '7.8917673094692301680009165049042648527863997524580211846e-20'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-5653.9964743', '820039.02', '-0.006'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('154710952.627', '-0.000594907', '-260059055662.4816988201517211933966149330903821941916971896447680057555215'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-1.522', '-1.7', '0.895294117647058823529411764705882352941176470588235'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('0.00000000000000000125', '2.5', '5e-19'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('0', '-128.316591', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-1', '4512938.19', '-2.2158513099422e-7'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-0.0000000024299067', '1.8', '-1.34994816666666666666666666666666666667e-9'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('12082101.169', '-0.0000000005771', '-20935888353838156.2987350545832611332524692427655518974181251083002'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-2665958.79092', '745824', '-3.5745146186231604239069807354013815591882267130046767065688419788046509632299309220405886643'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-306944.315', '-4781.65', '64.19213346857256386393818033523992764004057176915918145410057197829201217153074'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('119308.0', '-4.129', '-28895.131993218697021070477113102446112860256720755630903366432550254299'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-53856.0273', '748.12415', '-71.9880882070175117325112416167824551580108729279759248515102740634692784613355951682618453100331'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-8085542.2278', '2.51254505002', '-3218068.558705301076621847627555001669501965732558690115964'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('-0.00000000488258276861', '-380.24', '1.284079204873237954975804754891647380601725226172943404165790027351146645e-11'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-61.48', '-0.000000930247', '66089973.9531543772782927545049863100875358910052921428394824'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-1.8', '-2.64409', '0.7'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-1179.4999', '69.50', '-16.971221582733'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('1240.137064', '-1419.8', '-0.8734589829553458233554021693196'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-1445877051', '294.7427', '-4905556.782'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('4.5', '-0.000000001750598', '-2570550177.7107022857332180203564724739774637009753238607607229072'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('131619545056', '-3141.2', '-41901039.429518'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('8170', '-2571', '-3.1777518475301439128743679502139245429793854531310774017891870867366783352781019'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-67705880.846', '-0.00000000614547821', '11017186707427931.796376835579081810787186'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('6.359090', '-5.6', '-1.1355517857142858'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-9744080.9', '6', '-1624013.4833333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-1671665.19505', '-2', '835832.597525'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('2240.3', '240', '9.334583333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('5586', '64.7872', '86.220734959992097204386051565741381013533537488886693667'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-804808.4', '-3.995009183', '201453.4543311461519611731015137443802967098211048092101469394795130812594179711551366414'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1.2', '505814736781', '2.372410119240076265539049927193109705807743251996028e-12'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('0', '14', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-199014.0', '-103205852.14', '0.00192832088368433871641497'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('528', '7536.724615', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('89.62', '-0.0000000000000509219417901', '-1759948596803578.52'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-0.00000000308815', '74280356099', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('319', '3.5833458', '89.022946096913113995305727959606912623392361'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('5.067968', '-72', '-0.070388444444445'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('458459056', '55.4', '8275434.223826714801444043321299638989169675090252707581227436823104693140794223826714801445'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('32.7', '34.79', '0.9399252658810002874389192296636964645012934751365334866340902558207'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-861.001', '12043.6083098', '-0.071490285789134739566918624565712377017111948520635871601517334161816780874067081'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('2695651.6', '-0.334', '-8070813.17365'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('5', '-117770.96972', '-0.000042455284285146667297051784859838547315648272646319516099506224'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('0.000000000000000000016437417353', '32.45148', '5.065228874923424139669438805256339618408775192995820221e-22'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('0.0000000053734', '-94.1', '-5.7103081827843e-11'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-1186721.11639', '82957.90', '-14.3051007365181616217382551872696873956549044756436698614598489113'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-21133261.89', '20730.04723', '-1019.4507352311517140716133332224926146490019357278618221459787769137658641021823'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-2.1', '-0.000000000000041693733659', '50367281020578.36383801033672737310656882469053909202456729781931857090054905317636523351783614846255139023361'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0', '14298618731', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('126540726', '3211409575.2', '0.039403484057968315420622216'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('9.06', '0.00000000000000000045431', '19942330127005788998.70132728753494310052607250555787898131231978164689309062094164777354669718915'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('1197886', '-1.33', '-900666.165413533834586466165413533834586466165413533835'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-4', '-1', '4'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('535', '236221.2', '0.0022648263576681517154260498210998843456895486095'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-0.0000058900204967', '7', '-8.414314995285714285714285714285714285714285714285714e-7'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-0.059141575', '1002077673', '-5.901895291504014978687186058081148366230488801640030153630615817542518982e-11'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-16440', '1478098', '-0.011122401897573773863438012905774853900079697016030060253'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-3.729', '76.0564', '-0.049029404494559300729458664885532315492187376736211'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('1296.760949', '308.368135', '4.2052365397611526884903331532617661678953955472733913'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-0.00000000000000023', '-2.7651', '8.31796318397164659505985316986727424e-17'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('52121221723', '2.2157', '23523591516.45078304824660378210046486437694633750056415579726497269485941237532156'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('148.848', '-11638', '-0.012789826430658188692215157243512631036260526'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('0.000000000000000035252', '1.49244280', '2.3620335734140028683176333458139e-17'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-12.3048', '-74515.7391134', '0.00016513021472247941673732625'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('0.00000000019260', '-187496.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-60916544144', '-208.0', '292868000.69230769230769230769230769230769230769230769230769230769230769230769230769230769230769231'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('0.000000000000000000407', '6', '6.78333333333333333333333e-20'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-701.8', '-647126995.96', '0.0000010844857414098351564619217435003698559038553759178271323991'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-156.7', '35526492', '-0.000004410792937281845896859166393349503801275960486050804002826960793089281091980598591045803228'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('6.38848', '0.0575', '111.104'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('113.51390', '2', '56.75695'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-1.4', '-1.04962451', '1.33381031660550685882897303913'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-0.00000000000000000914', '-24', '3.808333333333333333333333e-19'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('6089.85229', '-1', '-6089.85229'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('15588.7', '-1.9450218850', '-8014.6656036212158096102862102243132343983882731478879992139522892823388462798710360012221661969'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('0', '-6', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('4', '-2', '-2'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('1.048670', '-2', '-0.524335'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('5199', '-254400.9', '-0.02043624845666819574930749065746229671357294726551674935112257857578334'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('24786509', '-1425028.34387', '-17.3936954'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('22279280.31', '-149.356', '-149168.967500468678861244275422480516350196845121722595677'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('3231', '-918986.0554', '-0.00351583136764101110646732888391115841952088884764594655458794897400790310185592'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('0.00024718', '-4', '-0.000061795'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-899.2063', '10.4', '-86.4621442307692307692307692307692307692307692'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-0.000000000551809177986', '-4', '1.379522944965e-10'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('0', '452738786', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('4.5584794351', '24609.412535', '0.000185233167537698802691065538676012933926787049977826705565'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('0', '0.000000000000000055428089', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('1133', '8082.63993', '0.140176973094482510245882003554746994649308843'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-29.8847017', '523280.841023', '-0.000057110253915614816403990719053878399996228405389080061266854519886506500326103761351'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('15361.8', '-1', '-15361.8'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-544.88204', '-167354266.6', '0.000003255859865839835'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('2.1586213', '-9', '-0.2398468111111111111111111111111111'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('19.7', '-98.9', '-0.1991911021233569261880687563195146612740141557128412537917087967644084934278'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-2', '2', '-1'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-1836', '751541.921', '-0.0024429774955960174575544402665463554361061383826651500921397'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-132.571758', '6265.4', '-0.0211593446547706'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-9.0', '0.18807851', '-47.85235697581823675655448355051302777760202375061350709'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-300.347779', '285.54536', '-1.051839115858860392618531780730038828156759402'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('1', '46872.2687', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('6.05281', '1', '6.05281'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('237492.20101', '13.91', '17073.4867728253'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('348.349', '0.00000000000241', '144543153526970.95435684647302904564315352697095435684647302904564315352697095435684647302904564'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('0.0000000000000199530424', '-129346.4', '-0.01'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('11730.2668', '305.6706', '38.375515342332563223286766866031603955368949450814046231466159977439766'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-0.000000000062959532237', '5', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('6', '0.009295308411', '645.486920358623483224627779378368384941154589948548615188062531946902606113001192381845758210637'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-0.00000000000043868779', '310573.82060', '-1.412507303907636573022858321368765104472556e-18'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('3.84887407', '3.8156', '1.00872053412307369745256316175699758884579096341335569766'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('0.0073521', '-18.0', '-0.00040845'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('0', '-747006.3486', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-4.64129872300', '3', '-1.547099574333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-0.000251830', '-350.0261672', '7.194604963808546e-7'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('0.939', '-113.4826537', '-0.0082743923356103189187229942262092166778436905728'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-0.0000000000000000002287625269', '-2572865.5574', '8.891351755323552375523747216843208381160942e-26'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-5.2', '-1.1', '4.72727273'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('1.20', '11524063.4', '1.0412993736219812883014857415657744472318678843783521704e-7'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('4.65133898', '7915.0870', '0.00058765481415428535403337954465945857575538967543881703384940683532600462888153'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-3610.654', '-7.6', '475.08605263157894736842105263157894736842105263157894736842105263157894736842105263157894737'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('88.4', '-11.7', '-7.55555555555555555555555555555555555555555555555555555555555555556'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('0.000000000340016366031', '-6', '-5.66693943385e-11'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-3.100003841', '-492', '0.0063008208150406504065040650406504065040650406504065040650406504'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-791.9', '-0.012153', '65160.865629886'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-9', '5', '-1.8'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('553.7', '22399299.800', '0.000024719522705794580239512665480730786057874898393029232102'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-0.0000002749949', '30.759829', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('3624426532', '-289449190.4', '-12.52180573381904335773882337312628392827593136014520357076113625225741864780147611012285'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-0.00000000000006713', '-6617623375', '1e-23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('0', '-14.1532', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-48768176.4', '999478.49486', '-48.7936225249459791063262817624562091721081695550589547579092771436841158'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('278.7307', '6.329298290', '44.038167776099552419735932527837931936053530509145904071460661083805547739479347559711868154029'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('488540.330', '-9732', '-50.199376284422523633374434854089601315248664201'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('1064.6514', '0.244140', '4360.8232981076431555664782501843204718604079626443843696239862374047677562'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('0.82', '5.96631903', '0.1374381751758252860306734217663851609356531509512658427184'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('7518.490', '7841504214', '9.5880711083170757574243139978244995431433941457293974234928594530498329207e-7'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('34.8855774', '-1.6026335', '-21.7676576709522170851913428740881804854322588414631292806496307483900717163343958553218'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('88.6', '30', '2.9533333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('0.0000000000000000000779', '1654403.81', '4.708644862223812214262248344314439169479e-26'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-0.00000000000000000022908', '27985.1293', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-0.000000000261917837552', '116.30006027', '-3e-12'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-60.00570', '-2.342', '25.621562766865926558497011101622544833475661827497865072587532023911187'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('3932', '-127472', '-0.0308459897075436174218651939249403'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-1110229465.54', '-0.4365', '2543481020.71019473081328751432'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-2', '0.671', '-2.98062593'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('7', '108.5443', '0.06448979817457019852723726625902972334797865940450120365601878679949108336411953460476'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('0.00028', '1', '0.00028'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('0.00000006557969267', '1.5680', '4.18237835905612244897959183673469388e-8'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('5006041.51764', '16388224716', '0.0003054657599826873157454'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('30.9', '0.000000000000000000181748', '170015626031648216211.4576226423399432180821797213724497656'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-1320.44658751', '0.00000000000131', '-1007974494282442.74809160305343511450381679389312977099236641221374045801526718'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('15.2', '110597411', '1.374354052465116023375990239048181697490188084059219071592914594e-7'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('23.02209072', '12.7', '1.812763048819'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-1606170.4', '4000198.6443', '-0.40152265995306987110066'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('399.1459', '57.99276455', '6.88268447102337700160562530037206167299365279181194'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('1.45', '-9.142', '-0.158608619558083570334718879894990155328'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-0.000000000000712649', '-66196.4', '1.07656760790617012405508456653231897807131506e-17'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('2167.8637', '3693.62', '0.586921150524417779847412565450696065106859937'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('1.2', '2.3', '0.521739'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('4194384.4', '-123.91', '-33850.249374546041481720603663949640868372205633120813493664756678234202243563877'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-2', '12477.22', '-0.000160292116352841418200528643399731670997225343465932315050948849'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-266654.50', '208840.1304', '-1.27683553677765755695007936080085879892746898'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-1.52428704063', '282318.753228', '-0.00000539917034629'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-413.229833', '9394258', '-0.0000439874903371825640726494843978098110569243467658648506353561931128568110436'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-6.19', '180017.0', '-0.0000343856413560941466639261847492181293'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-6', '-37.31569', '0.1607902734747769637919063000041001519736068125766936106501045538753269737207056870715777'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-2878081', '-0.00000000000000000001927', '1.49355526725480020757654385054488842760768033212247016087182148417228853139595225739491437467566165023352361183186299948105864e+26'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('0.00002684173572', '486.39', '5.51856241287855424659224079442422747178190341084315055819404181829396164e-8'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-11800.21', '-0.0000000000000286822600', '411411443868091287.0882559463584808170625327292898'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1', '-4.5', '-0.222222'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('0.000008990064003', '0.000000000000963602', '9329644.39986633485609203799909091097777'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('43641.85475', '3089.54530', '14.12565620902208490032497662358276475182286532584584534170772637643474591552355616860513422476763'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-14.451799345', '2167.1652870', '-0.006668526591714461'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-46.697270', '0.0000000000014693303913', '-31781327247089.9309302267203'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('0.000000000000000000219884', '-335817.508212', '-6.54772293352817905519097009170681577613920908334084735788028e-25'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-103885.126', '7124.95', '-14.6'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('1.10', '166668008', '6.5999468836274805661e-9'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-1091.8', '-1.8585', '587.46300780199085283831046542910949690610707559860102232983588915792305622814097390368576809255'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('39.33', '4192569.2612', '0.000009380882592442358576342080442670970561090942'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-4.730032885', '-22.21', '0.2129686125619090499774876181900045024763619990995'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('0.00000000000398', '-13253058.2889', '-3.003080431128428129341704642e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('2084.0452', '19846.7649', '0.1050067963469451890368288687694385899638484658021015807971807032389444992115566401454'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('0.000000000000000000598111', '16442.86', '3.637511965679936e-23'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-0.0000000000000000000124802906', '4649.0', '-2.684510776511077651107765110776511077651107765110777e-24'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('0.003816', '0.000000058238', '65524.2281671760706068202891582815343933514200350286754352828050413819156'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('382.2', '194.1072', '1.96901505971957763545092608620391206508568461138999480699324909122381859096417'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-1.919', '-1', '1.919'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-284013947424', '13.19061586', '-21531515316.52594119286254463'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('228766.33934', '-0.1852617', '-1234828.026192137932449070692971078209905231356508117975815'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('1', '0.0000000392', '25510204.081632653061224489795918367346938775510204'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('0.0000011513', '25070.6', '4.59223153813630308010179253787304651663701706381179548953754597018021108389907e-11'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-0.00000000000002764193', '-3.1', '8.916751612903225806451612903225806451612903225806451612903225806451e-15'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-0.000000000000010416', '7274678.41', '-1.4318158704695236143091581693712286039e-21'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-2', '-30146.8', '0.000066342032985258800270675494579855905104356017885812092825772553'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('173618', '1.882', '92251.8597236981934112646121147715196599362380446333687566418703506907545164718384697130712'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('0.00000000010005555', '38138588465', '2.62348e-21'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-169823368', '0.0000000000000000000871132', '-1.949456201815568708301382568887378721020465325576376484849597994333809342326995220012581330957880091650864e+27'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('0', '-31042328.715', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-0.000000000000018273631043', '-911.9377622', '2.003824361754234635640796145550819696059297587008070933e-17'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-409295.290', '-1011.729490', '404.550123373393020302294440384454939630158'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-452668878', '-3235.300506', '139915.5587434634425887855995037513217017992825671693570958814667832898982027359162'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('2082.12', '163146746', '0.0000127622527'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-8.14', '-32.560', '0.25'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('0', '1.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('0', '-3', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('9.18', '0.0037', '2481.081081081081081081081081081081081081081081081081081081081081081081081081081081081081081'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('0.00000000000000095721408982', '73.85199', '1.296124978e-17'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('48086750', '6', '8014458.33333334'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('28.094', '-10.8', '-2.601296296296296296296296296296296296296296'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-28.17324441', '-2', '14.086622205'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-2227168', '2500.06', '-890.84581970032719214738846'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('519.344', '0.0578325140597', '8980.138741052925991755093307758001485580365939320088236568632175956463851725330634'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-0.00000000000000000101887', '-28.546850', '3.569115331463891812932074817361635346807090799e-20'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-0.000000000000000000078301', '-1441708004.6', '5.43113e-29'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-14.74038220', '-842882140.2', '1.748807039202703467129413023953879714676626149730346368538e-8'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-2415313', '-0.000000015', '161020866666666.66666666666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-0.0000000000000000002200', '26498.8187', '-8.30225688513427958960298860416747558637396919131e-24'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-85.27', '16086959.782', '-0.00000530056649332897548982011870364480780673092379587823849263354'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('1.31592063', '5629293355', '2.3376302264140931415360569710441036342118290618023760817133680893416505915954348056888e-10'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.000000000001025528', '3.7', '-2.771697297297297297297297297297297297297297297297297297297297297e-13'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('0', '-4.919962890', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('28372.374', '968909.546', '0.02928278921096'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-0.000006032019416', '2079.86', '-2.9002045406902387660707932264671660592539882492090813804775321415864529e-9'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-978638556.295', '0.0000000121699875730', '-80414096598272672.697987150196081798414832284397765'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('3.18', '1.5436526', '2.060049003253712'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-227.3', '-5', '45.46'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-194', '735', '-0.26394557823129251700680272108843537414965986394557823129251700680272109'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('32.421', '-17148246.867', '-0.0000018906305846570712306272748271836504346727398906415568574051366320349346531249700838588'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('6.11', '343.74', '0.01777506254727410252'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('34882581', '3', '11627527'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('2591.34', '-0.0016', '-1619587.5'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('0.0000000000000000111931173', '-543.829', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('51757672566', '114261.91', '452973.9837711447323085'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('1.177', '19.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('1', '6', '0.1666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-7396187255', '0.0000001129387', '-65488510625675698.4098453408796099122798473862369586333117'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('354.973', '341214610.926', '0.0000010403218052025'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('0.0000000000001788646', '-0.0000000000008673', '-0.20623152311772166493716130520004612014297244321457396517929205580537299665629'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-3405900332', '0.0000002821190', '-12072566300036509.41623924655907613453897114338275692172452050375905203123504620390686199795121916638014454893147'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('0.000000146660215100', '6', '2.44433691833333333333333333333333333333333333333333333333333333333333333333333333333334e-8'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('42.6946', '-147', '-0.2904394557823129251700680272108843537414965986394557823129251700681'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-33383.045130', '-3771.65', '8.85104533294446727559556162422282'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-0.00000002620221', '-0.0194', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-40998905.3742', '21.0', '-1952328.827342857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('759.18436065', '169.2597', '4.48532261755160856364509685412'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-7.910517857', '5.48', '-1.443525156386861313868613138686131386861313868613138686131386861313868613138686131'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('315514.15', '0.0000000000000000001821015', '1.732627957485248611351361740567760287531953333717734340463972015606680889503930500297910780526244978761844356e+24'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-102.1', '-20933481932.7', '4.87735391217982360935950019733431654039206201664805567083460586e-9'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('1.3', '353424', '0.00000367830141699488433156774865317578885418081398'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-6', '0.0000007385', '-8124576.844955991875423155'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-882563.951', '-3391251493.78', '0.0002602472723178266294366199720356264423507358482323050873711187871051023068603836514842931325595'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-0.000000000000063741', '2062.9', '-3.0898734790828446e-17'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-0.00000000000022392247', '-2', '1.11961235e-13'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-20368.0', '-0.00000093', '21901075268.817204301075268817204301075268817204301075268817204301075268817204301075268817204'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('676.6', '-1', '-676.6'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-151.10', '152.2171096', '-0.992661077306384485440262229233657712286503698004787235823324292054485312602467'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('5.4', '1', '5.4'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-664.94103', '-508795.875286', '0.001306891549830723405'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('4160277.46', '51.3855092', '80962.0752'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('0.068041425273', '1.0', '0.068041425273'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('0', '20.9954635648', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-597760.09', '-296891', '2.013399159961'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.000000000000466465', '-1', '4.66465e-13'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-0.012274783756', '1777103227', '-6.9071866898365606310386830443811917066537407171114207874882e-12'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('43.3085', '-5812.536', '-0.00745087858380576051485960689103688992205811714542499177639501932'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('0.00000000000000000006065480716', '-0.0000000000000005628236', '-0.00010776877011'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('15316689.77', '-4.476', '-3421959.28731009830205540661304736371760500446827524'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-4782', '7903.4519', '-0.605052078573414231824451288'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('334.247', '-12.37', '-27.02077607113985448666127728375101050929668552950687147'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-0.000000000010968817327', '1577.163203', '-6.95477634e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('181.28266', '-0.000000000015', '-12085510666666.666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-12944.4', '25199', '-0.51368705107345529584'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-0.233040', '0.00000000000048', '-485500000000'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('2499418471.4', '0.0000000000212061576116', '117862864040621426727.904325767922700957'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('2.051', '-0.210803', '-9.7294630531823550898231998595845410169684492156183735525585'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('-3', '-0.00000000000035117', '8542870974172.05342141982515590739527863997494091180909530996383517954267164051598940683999202665375743941680667'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-29.5', '170.1809179', '-0.1733449341090902648139965168209966506473990524880110544990778898602'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-920.3951776', '0.0000000000000003848321529', '-2391679517067712249.36283124174471753189103134'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('1.67', '-704.1', '-0.00237182218434'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-4019.527', '-0.000000000000001282423', '3134322294593905443.0558403896374285239737590483015354528108120331591059'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('0.004972447', '-313000.2188', '-1.5886401035320937609517095966962947e-8'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-240823248', '-53004225588', '0.0045434726'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-0.004435905718', '3114765775', '-1.424153865309503087756253517971186774068107898097088857e-12'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('7', '310.0', '0.02258064516129032258064516129'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('485.18', '-2499.59190', '-0.1941036854856186723920812833486938407825693466201422720244852769766136624142525025785209'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-1803189.79', '-95.9631755078', '18790.434774'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('3', '3.13', '0.9584664536741214057507987220447'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('2705932.0278', '-240850308.662', '-0.011234912019969217738265785640050126'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-48.6894', '-0.0000000000000056217500046', '8660897400304152.96991166386595034397058361146178954725410558680679758094698823811870931732181920937779724'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.00000000967966715067', '0.00000490602307318', '0.00197301704584030946968780069075231515440216586853537004220763341534383076987989340045682642632728'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('1', '16.30642', '0.06132553926612953671008106009780197002162338514523727464'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-313225923', '-14.5', '21601787.7931034482758620689655172413793103'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('164.1993451', '22.23', '7.386385294646873594242015294646873594242015294646873594242015294646873594242015294646873594242'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-2', '-2.1', '0.952380952380952380952380952380952380952380952380952'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('0.0082502485', '-20143.76', '-4.09568447002942846817078837317362796220765140172440497702514327017398936444834529402653725025e-7'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-5.25629381', '3', '-1.75209793666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('1455.634', '0.0000000001833490847', '7939139714723.6481404698280449065148782823457421928433548378657381974920761630614'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('0.0000456078822', '-19467.42', '-2.34277999858224664593459225721744329757102e-9'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-5', '-0.00000000000000410202', '1218911658158663.29271919688348667241992969317555740830127595672376048873481845529763384868918240281617349501'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-17274806.55', '-32647573.58', '0.529129875691055874174401661613469284966077408561889211002124342252573614'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('6562.207011', '109008.582', '0.0601989943415647769824214390753197761989051467525740312813169150296808741168654042'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-3', '-2.5615783', '1.171152956753264188723022833227467613'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('14.4897748', '-0.0000000091438787', '-1584642062.2355806185399200450898369856984213931009386640266783066577644'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-200.932', '243005.6', '-0.0008268616031893915201954193648212222269774852925200077693682779326896170294017915637'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-3.4', '-4950', '0.000686868687'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-3915.2', '-4.4033', '889.15131832943474212522426362046646833057025412758612858537914745758862671178434356051'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-3.5', '70451.876', '-0.000049679301655501693098988591872273'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('32.99649107', '-0.0000000000000252114', '-1308792493475173.929254226262722419223049890129068595952624606328882965642527'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000000002421731', '2.6696132', '-9.071467731729825129722912667647882e-11'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2361092', '0.000224', '-10540589285.71428'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('3.3', '48.72', '0.067733990147783252'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0.00000000086515675836', '-1.04', '-8.31881498423076923076923076923076923076923076923076923076923076923076923076923077e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('9.36', '0.000000000000000187263', '49983178737924736.86740039409814004902196'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-0.00000000000000000254409418513', '-207.4', '1.226660648567984570877531340405014464802314368370298939247e-20'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('3', '-0.00000000000000001866618', '-160718475874549586.47136157478391400918666808098925436270302761464852476510994750934577937210505845330967557'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('4.8', '3', '1.6'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-3.017', '-52.7192', '0.0572277272796248804989453557717112551025053'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('88891546', '1.23', '72269549.59349593495934959349593495934959349593495934959349593495934959349593495935'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.00014', '-2.13121465', '0.00006569023913194290401485368918611740961897010233108147975615689391024034111252003640271523095'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('0', '-0.0000000011147297', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-108', '-158517876.371', '6.8e-7'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('0.0174163902', '-0.003287849617', '-5.2971979345'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('3447053', '-26.180', '-131667.4178762414056531703590527119938884644766997708174178762414'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('0.0000000000000004912253', '996.32', '4.930396860446442909908463144371286333708045607836839569616e-19'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-5.8942', '-1696.19', '0.003474964479215182261421185'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('4.35', '-7.700', '-0.564935064935064936'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-1.951064679', '12.39', '-0.1574709184019370460048426150121065375302663438256658595641646489104116222760290556900726392251815981'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('79287223.425', '-115.6806', '-685397.7540313587585126633160616386844466574343494069014164864290122976541'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.00000000000179581623', '82.118', '2.1868728293431403589955917094912199517767115614116271706568596410044083e-14'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('1.5', '7', '0.21428571428571'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.00000000096155', '-0.000614553582', '-0.00000157'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('0', '-64986', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('0.1502692', '110.97', '0.00135414256105253672163647832747589438587005497'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-24676310', '-1132905', '21.7814468115155286630388249676716052978846416954643151897114056341882152519408070403078811'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-0.0000000000000000036333', '1162397966', '-3.125693700671874713173749651932890598330589301805436916946566646006e-27'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-36.3', '80465', '-0.000451127819548872180451127819548872180451127819548872180451127819548872180451'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('55895210725', '-7357125995.55', '-7.5974246952965791117'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-13.757', '2', '-6.8785'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-3486.72', '-699656', '0.004983477594703682952765358976'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('954.556', '-0.00035661', '-2676750.51176355121841787947617845825972350747314993971004739071'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('-1.94', '2.0', '-0.97'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('4', '-1945.59', '-0.002055931619714328301440694082514815557234566378322257001732122389609321593963784764518732107'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-0.00000000027649996', '36.4', '-7.5961e-12'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-0.000195337037', '10.9367', '-0.000017860692622088929933160825477520641509779000978357274132050801430047454899558367697751606975'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('35.30643', '504.6056', '0.069968367374440553176579887341717967'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-0.00001921615', '8.9', '-0.00000215911797752808988764044943820224719101123596'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('1.14982', '-38016.754', '-0.0000302450861533312391689201029630251967329982985922469866838184'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-78517.1', '5.896466904', '-13315.9570431466632717659022071227757034486019392741'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('569.7', '-5625972.0812', '-0.000101262500378154205050056870161348499938944204657'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-6', '4057.45596', '-0.0014787591188050750894656660672664454502175299026535829608856678754930959250633493012700500142951645'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('19.5', '-1.15066407', '-17'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-5.4', '-307.105', '0.0175835626251607756304846876475472'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('1', '-40.4', '-0.024752'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-12687.3498', '0.000000000000000001143', '-1.11000435695538057742782152230971128608923884514435695538057742782152230971128608924e+22'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1.0', '371.3', '-0.0027'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('1.95110622', '3211.707', '0.0006074981995555634433651637587114889371913440422803200914653796'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-2.54012', '157.29832', '-0.0161484242171181484964365798693844918369121806259596415'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-7', '10.922426', '-0.6408832616'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-0.000000000000010173970450', '-1979.1', '5.140705598504370673538477085543934111464807235612146935e-18'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-31.3', '0.000000004292064', '-7292528722.777665943471485979705801218248376538653664065'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-1.3', '-41.81181', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-56.8', '-237.603', '0.23905422069586663468053854538873667420024157944133702015546941747'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('6828531.173', '2.6', '2626358.14346153846153846153846153846'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('408927964.6', '-0.00000000000000106192518', '-3.8508171037059315233489425309606e+23'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('0.00000000000000000009999762926', '-0.022865151', '-4.37336404469841463106891356195286005327495978487087183461e-18'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-174424', '-424', '411.37735849056603773584905660377358490566037735849056603773584905660377358490566'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-3.015', '-0.0000077', '391558.4415584416'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-7707.041590', '-1016', '7.5856708562992125984251968503937007874015748031496062992125984251968504'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('1', '-9.89309', '-0.1010806532640459148759386602163732463770166853834342960591685711946419167317794541442562435'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-818075.66703', '-641.16', '1275.93060551188470896500093580385551188470896500093580385551188470896500093580385551188470896500093581'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-3.3', '0.05674113', '-58.15886994143401796897594390524122448743'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-16182136', '0.00000484', '-3343416528925.6198347107438016528925619834711'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-195748.38639', '1', '-195748.38639'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('83', '-30943580134', '-2.682301131303218581e-9'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('485298.09014', '-791982.15', '-0.6127639242121807922059859556'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-0.0000000000000000006453151', '8.7', '-7.41741494252873563218e-20'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1.5', '10.67319', '0.14053905158626427525'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-6.853998', '198.445', '-0.0345385270477966187104739348434074932601'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-4', '0.000000000002985501551', '-1339808381161.3467823651450516'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1972.820043', '-2978.3', '0.6624'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('17.5470679', '-1.2', '-14.62255658333333333333333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('1.68', '-0.0000000000000773997', '-21705510486474.75377811541905201182950321512874080907290338334644707925224516374094473234392381365819247361423881'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('3877.04631', '-5317.71941', '-0.7290806474'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('120233739', '40.99694', '2932749.10273791165877258156340448823741479242109289132310850517136156991229101489037962345482370147626'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-22.151457', '2918.4174', '-0.007590229211215640367275770765346999370275136106301997788253318390988211624560626591659'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-37.28', '199844', '-0.000186545505494285542723324192870439'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-1.24', '28', '-0.044285714285714285714285714285714285714285714285714285714285714285714285'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('127814', '3.31', '38614.5015105740181269'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-6.0817', '61.6', '-0.0987288961038961038961038961039'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-83950', '2899.1', '-28.957262599'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('-2', '1.3', '-1.53846153846153846153846153846154'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('63317.4', '-44382', '-1.426645937542246856833851561443828579153710963904'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-12376.1101', '-0.0000000000000000000476577', '2.596875237369826911495938746519450162303258445120096018062138961804703122475486647488233800624e+23'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('0', '255407', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-3243324.741', '447', '-7255.7600469798657718120805369127516778523489932885906040268456375838926174496644295302013422818791'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-20.5351', '1', '-20.5351'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('24373177.7', '-0.03429773005', '-710635300.48397474047994614'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('0', '-1.9528', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('2.5715743812', '333604.7', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('7258484263', '878748.686', '8260.02289236993521945363'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-1.55', '4028.651', '-0.0003847441736701'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('39876720.9679', '-0.000000000000000095693', '-4.16715130342867294368449102860188310534730858056e+23'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('328.9', '-1.747153', '-188.2491115546262977541176989078804203180831901957'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-8430.0', '6.36', '-1325.4716981132075471698'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-0.0000000000000000124', '0.0000000000022', '-0.00000563636364'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-204018', '-0.29422194903', '693415.29642031411160079894872824743451805690052191956958432904987815891500214089245237027923579'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('0.000000009608', '1107603', '8.674588277568767870798472015695154310705189494791906487e-15'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('0.00000000000000000324', '0.0000000000353302327762', '9.170616057142444364532751561033571427601773401756984940156302665962620077892902e-8'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-0.000000000000000000161', '-307', '5.24429967e-22'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-2113052.7', '55.1505', '-38314.298147795577555960508064296787880436260777327494764326706013544755'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('0.06681', '3.1', '0.021551612903225806451612903225806451612903225806451612903225806451612903225806451612903'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-593781.5', '-5.5', '107960.27272727272727272727272727272727272727272727272727272727273'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('264.178', '163429.93', '0.00161646'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-1444588.448', '8.56410', '-168679.53993998201795868801158323700096916196681496012423955815555633399890239488095655118459616'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('0.0750627414', '-503.1171', '-0.00014'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-684826102', '-242.1', '2828691.045022717885171416769929781082197439074762494836844279223461379595208591'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('9.9723088', '-7.28030', '-1.3697661909536694916418279466505501146930758347870280070876200156586953834320014286'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('-10.8542689947', '-362382465', '2.99525226605542296313923467572e-8'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('83184510942', '995417544', '83.567455128156752680260174317361639750243341099883206398459860779789511123987'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-5.2584', '4.3', '-1.22288372093023255813953488372093023255814'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('171.7711052', '21.73462', '7.903110576582429322435818983722742794675039177128470615083217'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('97.3120746', '297', '0.328'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('17', '5.175316085', '3.2848235201077578240325006158536884805558692749874812718806140320992'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('0.0000000075223031425', '-0.0000000000000000003063', '-24558612936.6634'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('0.000000000284782805877571308685061', '1.24044', '2.2958208851501991929078472155041759375705394859888426687304504853116636032375608655e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-84292190777045518365167.53', '349338169.15546007599011690336', '-241291099054035.477498848257293223533254'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-53.485123', '-0.00000000000000085526923975258', '62536006808186693.121901065461235'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-6856519792.8354', '-134.87', '50837990.60454808333951212278490398161192259212575072291836583376584859494327871283458144880255'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-3437325217.6304210', '-0.0058928082634501029868', '583308511656.536837957106657941719405129449764251342894994497244'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('86694.653049907973', '276.86811', '314'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0', '7.096', '0'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-840920065282020550638.16675056', '-544817290763.11054598', '1543490046.184413528395333281622062666508477839510087529697756635981129506986226793475391075218794203'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-0.0000000001115427500598203903347530296', '0.0000000000000095', '-11741.3421115600410878687399578947368421052631578947'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-0.0000000000000000213', '7771.784441655282162', '-2.74068332181680990957923803724e-21'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-5219548154409821711366036884', '-6403861732570.160', '815062593850692.094058492748177219666225497517519616292585346465537888171756816076114357577457239'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('15551916902370673557.1333290108', '-0.06428889318052242422', '-241906745208710958468.15960770779005223663662075254467552461782847066116561447264673'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-54.39064538374', '0.326659783', '-166.50548434283384067514671679066167750438994199662466560813211585339233510726'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-10447694007.1229', '1058379152566659776344755.133', '-9.87140948665357e-15'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('0.0000000000020938452', '3240378916002', '6.4617294899060738552899e-25'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('967351926269', '-22.0795261933451129685', '-43812168694.11649935062312079317354092546372626572951823800772019323767497831806178'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('101006.8704166269166570296717065', '13094210020176391', '7.7138575187804e-12'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-292.3', '515823027211.36173935', '-5.66667218367954385822955695056628604396993663929021069625557355703596272535737e-10'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-627958027100087658205.09', '-8', '78494753387510957275.63625'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.000000000000000039913330066487843180', '0.0000000000030114338098911573487587', '0.00001325392905379196627854118842244752137640431316713004600325949087886'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-200.842293509', '-5.0712235735', '39.6043066526418054796494962696'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-1848.560227815723699279797', '0.0000000000000174', '-106239093552627798.8091837356321839080459770114942528735632183908045977011494252873'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('0', '0.0000000000000001799287214643564056307642336', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-0.00000000109284603', '-605755688.5436', '1.80410361911333678248513635920011348723615833110992485011324e-18'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-17.51', '0.0000000000000001106572088912592375729', '-158236414739203737'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-257713780238786025994484911880', '160744975929777785647.053', '-1603246252.3206'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-0.000000000000000031476825065154718639426657718', '-1479127042283890059221502.51', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-0.001011298', '406.176', '-0.000002489802450169384700228472386354683683920271015520365555818167493894272'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('1875610846688.7314242171152', '36953885.844016673120045591563', '50755.44300282071230784749159999461116882607517590500292489'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('2.48', '23018825528599.058245083750', '1.0773790334866552714e-13'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-37644856116561190.7', '11750087617.41953', '-3203793.651781167'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('27225239.0927654530532507312', '-44107483349801146865010.14182', '-6.17247619340498933213826538373174836183684847796124222440343623092216708649906e-16'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-3', '623420854802547.7395328963607', '-4.812158555315207709041269638943960261014145138167945466267018280432446e-15'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('1297926420.969', '1984.469459560495780721378788', '654042.02353230179159722311951514776953828174'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('9.5116', '-0.000000000000927738069901', '-10252462746316.9575566575367529211085824463253401492796438490216152723506753495226'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-104895021573748233134.79927065', '-281760209801594479975768', '0.0003722'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('1801.699799792', '-0.0000645512712544182335729718690', '-27911143.57284918766656202322530814542242474992155368042065229882647438143751747966584995520735334412'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('0.00000000000000000006333905001032218284869562345', '0.000061374114666884348377', '1.03201570164e-15'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-6403029110376.2', '0.0569350772698624979926156', '-112461937656235'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('104.057972667266', '-2385710236.97709671', '-4.361718831332867232565124691108468632809332107733e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('61883558331.753531', '-11.27304021045', '-5489518104.8310345601815283907266673560612625269587707664948134834'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('11229912272987228870975202743', '-0.0000115', '-9.765141106945416409543654559130434782608695652173913e+32'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-0.000000000000000000099738249', '-28909.3', '3e-24'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('0.00000000616807049939585972341098818', '9633721886.43686961447465', '6.40258310558016696529879116138216691930162803193995828e-19'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('1438380887105946.4988', '-92.050294038', '-15626032509055.94351991829755854016819083134714103584295603268760522109653448361970130831359811065984506029851'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('23564842', '-0.0001500845176938138', '-157010478909.453151573339526987486151490294503777115844769550097564216584170372135812878426610459291382975'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('106510201620140041204712613', '174', '6.12127595518046213820187431034482758e+23'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('0.001994938909681532', '0.00000000610636188569105720740544007', '326698.441236547297677127656717647999474522122'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('0', '-992965188415144990460', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('75.042978019471810179662566', '-20828.92196301', '-0.0036028258280836779532074590076790296057591125'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('191.42', '-1125370.65655092338112856', '-0.00017009506946508710923505448696387180328'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('24906102321.8', '-6749284', '-3690.1843694531153230476003084179'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-0.0000000004002', '4.29973341406068', '-9.3075537820855276e-11'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-37140.99', '-136171', '0.272752568461713580718361471972740157595963898333712758223116522608'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('49.43436363755592884987', '2425.3765', '0.02038214010796094084768694674826774317307024'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('0.00000155445336543701798594470695', '-1', '-0.00000155445336543701798594470695'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('0.000000000000000001927823363427027547788', '-0.00084297395450372616', '-2.2869311123164791404649867246710586063142709924183025467353162662660376821183153e-15'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-3538.75692804245271578524253541', '0.0058', '-610130.5048349056406526280233465517241379310344827586206896551724137931034482758620689655172413793103448'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-4761336477329468956921492815', '-0.0000000042', '1.133651542221302132600355432142857142857142857142857142857142857142857143e+36'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-0.0000190146484048071649632', '-0.000000000000000000028002986729751222355', '679022155326218.32213770008814117'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('135.311547037', '1538152658057363639166.70980', '8.7970167543639e-20'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('61273.682559', '4140445022016191223', '1.47988156e-14'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('25719205020.698', '75895083.76', '338.8784061696119537954114249468218783081820002197201606988515694603'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-605282280.963', '-0.0000000000000000026582609673', '2.27698592579413374889379695553866247374289540846165213148596947387453744974529e+26'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('128.674096168', '-485', '-0.26531'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-284.31', '-61299436947911204745164', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-27156117968975435649284.5062362', '-0.2140549424', '1.268651761295441858916148354077901450034446857042063794925951684075667481527864034967501e+23'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-0.0000000000220', '-83511', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-0.0000002831893855', '-0.000000000000000000066075384352033402787278372', '4285853018897.87848847386430278968565272453378873459172661159371765293738317683359'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('0', '358618735187.21952', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-22.5', '26023716139474.0432', '-8.645959662106405118389466343739935401549502009592919388435931e-13'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('2827855856', '-929954533', '-3.04085388656307565952797'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-0.00011271354', '0.00012965', '-0.869367836482838411106826070188970304666409564211338218279984573852680293096799074431161'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-46.929552978589019', '12836.0093', '-0.0036560859284036993491427277167834398499539884253589626177'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('257018142', '-35258.20163', '-7289.59873498800454843278'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('2.276215213739273117992982952', '0.000000000021024983352672653', '108262402664.396178117533515828712401635259526311697113483063175627111769126355709999130060314825174257'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1532964471.105', '0.000000000000000606585', '2.5272047134449417641385790944385370558124582704814659116199708202477806078290758920843739954004797349093696678948539776e+24'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('0.000000000016313152031948', '-448338202', '-3.638581757962262604604012753747002803923454196303352262629629763291953425821e-20'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-1821467900801658117.0', '-237300948.35414499609', '7675771687.533764014843389674196771695447410998228097939296421430055693563019117'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('0.0000000000157495', '-8.2', '-1.920670731707317073170731707317073170731707317073170731707317073170732e-12'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('0.00000000000000001492782607274397', '0.07101109108235816', '2.102182327466392982546211e-16'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-66468973917463.27', '-0.00000000000000000297284353275010458135', '2.235871924815849751854275641050067610508414796931327584614931310634047270900177e+31'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('0', '0.0113746976908751', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-60504544572803.0828', '173.5', '-348729363532.00624092219020172910662824207492795389048991354467'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('0.0000000000186102590', '7154.18', '2.6013126591726794685065234590127729523159886947211280677869441e-15'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('18949862124.7312829930', '-0.00000000065813745923580420948429601', '-28793167534841278323.131970933871205340608343780765524418553425987'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('146263360394541.66340850', '-0.0000000000000000000291369755255564556', '-5.019853905778655370286501102407539701468694254631132201471781980780954741005684575459066532134590172341544956728846419833634251e+33'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('1509441.774', '-0.000000003373555732147098593804', '-447433477863226.58699906317'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('30331911230457034530206902', '-2957.122237268398', '-1.025723957169783101652769031300142e+22'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-1.6', '-19.96058946599105182772', '0.0801579533874030967'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-2.29043873913', '2.96790', '-0.7717371674012'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('11772568498.701289348100', '-7504.3638391070401237093495', '-1568763.0225698294210989777699927096257870906945103707762203285405938572993792606917235071621002759'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-0.0000000000148347123', '-3335.62734', '4.447353012761911227169639399825761111551508029071377020191949859722639160284613808208e-15'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('416489358120.40', '-0.00000007008686246187412466064277', '-5942474002841288879.77683608851079051337076828663883240711678573463442'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('0.000000246512839458083', '677119453035840597070.5162050', '3.64061080143e-28'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.00000000000067665303968572', '110049103753289780506640.8', '-6.148646527850457868998800682412162492283509753692942914693977e-36'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-259.30262051760', '-0.00000000014084763600931', '1841015070359.151428675425551331452862418678960652787235110730227954405294936895404'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-3.151376403158403871974624', '-139.0275', '0.02266728814916763857491952311593030155904407401413389437341533149916383449'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-0.00000000000000001080911612', '-1556.8799', '6.9428066480914809164149399064115350194963657761912142357e-21'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-283.731555', '0.030718518473446161287514838', '-9236.4986692071265067750541533842080035308332697354'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('4.55747', '-6093895748449378.261959467', '-7.4787462538388036117112195183416415665502531749799195367174376685e-16'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-6209057913039233089.554638932', '0.00077770788', '-7.983791951599144256522949120690406274397013953362540186e+21'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-65413356684972913334784193', '-10749246466905288418818944221', '0.0060853899746709817665388011109517624593413536255210794771752430033562011174757753794349810049054864'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('4.48141', '11142539383020069527.9939', '4.0218928970797681683108653744109241673829e-19'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-157010536651.8385557386023265', '31176833.11', '-5036.1284642947673571006367843369451195679829586129506660466580019486783595256574153050659224'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0.0000000000000311954391035431138869624', '24096242.8724', '1.29461838796763546050032301e-21'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-12073.3603645', '0.000000000000000003231096498355190416486576184', '-3.736613985576109687026022157020994949604856807112675513970122687511460575831414034729237467633748036752626463635751e+21'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-11229937324', '6', '-1871656220.666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-36173.069316352495643', '-3847.08178', '9.4027294934064270510516675317466217211530138046610488223101927404309039669024140162676'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-2502682902.58827454', '-150084564633685530705.4', '1.6675151829880867049650894318382222851766631493251569e-11'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.07688246602306', '-6403753', '1.2005845013550647565575998949366098286426725078247084170797968004075110329833146281563327e-8'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-33960220.713826767270362074', '0.16733662760657090', '-202945530.8115294687'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('2.8', '51255410606449547593.80', '5.4628379070046346857585963850812976524e-20'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('9', '-40332245.1457930390012', '-2.231465163287288183909357572411828628922732061041e-7'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('28.20588', '-0.000000196910070', '-143242445.6504433724491591516878745713715911024763741133198520522591861350717'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('0.00000000000007527724346240', '-2548.46', '-2.9e-17'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('182357.1162144822274482841', '-96.6', '-1887.754826236876060541243271221532091097308488612836438923395445134575569358'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1131000923219021023017192.4', '-0.000000014817218356012837761464311', '-7.633017858308472878065579194067412216888064519989e+31'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('4453786.636962392155535677', '-250963.38370093135464105', '-17.7467587951790260682885114754120226687355539896097812099137476157310503575581592474'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('0.02105880647636941373891522', '-3', '-0.007019602158789804579638406666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-7615.1336008111570321673', '0.00335325681', '-2270966.4163214379730633574706734137669581'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-7620249639404', '-0.0000000000000002537522482549', '3.003027437908366061360597250587446069936925235724720585e+28'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('4036527.94508226109659', '273093013735095.5684', '1.4780780694001038799691151063431e-8'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('3581132452.090', '7363910', '486.30855783001150204171425234691896017197385628015551520863237'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('1772.045', '6242.573', '0.28386452188865072142528409359409974060375425325422706310362730239598319475'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-171.1', '25.4098814519375642105786397119', '-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('0.00000000120698418896873172829603934', '21.2635246123591424034', '6e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-0.001184391777561431496802559296412', '46745128538963675598448912367.2', '-2.53e-32'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('382477039554', '24271.0171155624320604387966', '15758591.316255880898891009542620046581391'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('0', '-3179701885690718286932', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('22521535008035260.265331029', '-2540337', '-8865569807.484306320512211175'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('2170680047.145934907', '-16635439470', '-0.130485284206677763650328138881443088199941615368698161600175627942097282026298040444855166787'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('0.0000000000000000766292', '-1.957255933', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('0', '4882483440602156078', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('7.8', '-187381241311437016433382.48235', '-4.16263652936102018237350522975003750680024e-23'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-27718.0722643084293', '0.289733680', '-95667.41520802286189165167128654148872164257879857115679475026859148718920078604599921'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('11440284945540031728.983', '-5825677608914.4676', '-1963768.97479429291268951429185159439402414197554120618367860332859433241104754409651622089284'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('78.672496610303544707', '-1480.9216470187259083', '-0.053124010151840767416622387121575177625203747374376939509920643'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-0.9359034339029049964', '-9.050', '0.103414744077669060375690607734806629834254143646408839779005524861878453'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('11675.6028651', '278671', '0.0418974448905698834826731163271384535886403680325545176929066892500475471075210552945947012785686'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-718522471082238904716566210', '159968809108512620.67494', '-4491641058.56935624444165047282107830437431356909913096346865381177604838282981'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-0.0000000000000007240115', '6894090690193', '-1.05019143573194176430303605992882e-28'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('0.01403241861365534490176', '98.781', '0.0001420558469103911167305453477895546714'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-100163956276268.45400638712953', '-0.000003822500209599644154', '26203780453620770552.762045992882479543453412936816289906209431'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-108012944.1175122414', '-0.0000000000000052661', '2.051099373682843876872828089098194109492793528417614553464613281175822715102257837868631435027819448928049220486e+22'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-0.0000000095661227651529585795', '439.658', '-2.175810008041013373917908920115180435702295875430448212019342306974966906095e-11'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-2294287466562757501742320.27601', '-832584777918371.546177', '2755620241.219080420608405722438221977774013'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-0.0000002759', '-183126.762211952', '1.5066066623330111887480084015381767263333164079000147488698351688626521e-12'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('1653901506.2955747033592190', '-322190268156088.641', '-0.0000051333068368605218558546015330570362016912647522618795650532856646842031492231821113536'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('248330241832030242304149.24', '3330.8', '74555734908139258527.72584364'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-18342746626779219566723384.683', '-3', '6.114248875593073188907794894333333333333333333333333333333333333333333333333333333333333333333333e+24'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('0.0002199161', '14860579112610491.754079911', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-0.000000000568242490987', '348596.86613', '-1.6300849095272387267e-15'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000002049503091568392', '2.22227599162281', '9.2225407613378789315422863796067e-10'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('26041624909507628.488792197140', '-246901903760748416.0953516', '-0.1054735687042022440675400298081862682581'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-320580.6238', '0.0009850386145294971077', '-325449803.76543418'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-58275174168.25149350192684', '16653.838', '-3499203.857288121422937273678295657733670761058201719027169592979107878916'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('46770480873406.409882', '0.0000070956746212439754972487', '6591407212131559214.2696047445573145755811032180453546396659194926912322518859416'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('3.754240463072038', '-115117.4885688923668289', '-0.000032612251272536256054753760718128290585012986196327512602851762942681368'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('4', '0.0056705434513331', '705.39976182699589005149617'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-9050', '-1110617973.258696', '0.000008148616552140008896135150388571481487341383070838106781751554751750807288566249'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.000000000000000014', '-4770178679', '-2.934900544005387350396984993106586313e-27'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-2.1611115285091044', '1', '-2.1611115285091044'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-1.486211747365416', '-1386302473893.3388076342', '1.07206888493208023054074800312104610361989162636431378141145313364812e-12'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-0.00000000000000000014428', '-3', '4.80933333333333333333334e-20'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-32608018749047.9996725803', '332.159913589', '-98169638824.61663098063583714993775277959765'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-0.000000000000000000661438157030', '-33292.064829009268', '1.9867742070886854266568898631488887980727035276739897454831283052178e-23'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('178992107258447203.67', '7', '25570301036921029.0957142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('122641090582555142454291285', '-19338960887519151968841287700.2', '-0.0063416587528084004561775821574233856070818007325775576443265439169'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-7', '-4906.459444175730287072723974', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-7691.6200805', '0.00000005979', '-128643921734.40374644589396220103696270279310921558789095166415788593410269275798628533199532'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-3547231646.3828711', '7.78154', '-455852138.05787428966502774515070281718014686039010273030788250140718'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('127.6570', '-0.000251316107215474764266674', '-507953.9127611456689859414656378008562846463183737483733030129'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('0.0000000000000000751948126794197435', '-9.471515838720393536', '-0.01'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('1.4', '1771.9512519134307055', '0.000790089455614661281192204203464890374305788190624271762375083'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('10.10', '80325048.161', '1.25739109172471374349282788225230454835680854762207952658609299828415947260000796901359e-7'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('3857345278902280', '-2452638478359688.015970', '-1.572732921275'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-0.021', '0.00000002882977', '-728413.7195683489670573161006834'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-36206966.8939129954925798651759', '-22.7013433495627012494', '1594926.18284241116152432797478154892604082831306502511561248383742079121'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('5.5110610412115985840905338', '-4901879566436940738.477642', '-1.1242750798990880390037343298118832909837831e-18'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-292125.918633265', '-2390686440.2576276060503', '0.00012219332226679824515550937357789383313825356191649299186874000273523091107167169375245388194'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('0', '-102275090.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('2.666778067490', '216.21210', '0.0123340833722534492750405735849196229073210981254055624083943'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('2363.828945', '-0.41511719893859553946529868', '-5694.365232382625093743741062342'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-16329.50', '21363731.3167546173519', '-0.000764'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('1.1396176388245', '-5485.281', '-0.0002077592084752813939705185568433048370721572878399484000910801105722751487116156'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('0', '-33143947602683866.435849148873', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-0.000000000000000000055196335', '-72.89889049', '7.571628954705645205218266690247949204418680309602e-22'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-12.471836599', '0.000000000000000027069', '-460742421182902951.71598'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('0.000000000004406', '-3.8', '-1.15947368421052631578947368421e-12'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-47.9653', '16753400954657', '-2.863e-12'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-48292622.6', '894.910689010519453168902686', '-53963.6225078459557881137025384011498164613577179194959550666717656710800958124435690706757022'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('104.4', '16728461156682781', '6.2408609508169669877e-15'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('0.00000000000242526901875700822786120839', '-0.000020180224165103702340737812', '-1.2018047960789563562387101610719677162023172609323952542918769865608172696005280649776e-7'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('-1816974287.73852', '-2748150389.1808717035915', '0.66116261136643872080726488469'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('-7.6', '5009220859436611651783', '-1.5172020186897437e-21'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-0.00000000000000000498398533825394', '25882849761072773.5995635665', '-1.9255937364940943765693045003752394728474718216467301581e-34'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-82059240599', '377376698042.4017333228', '-0.2174464958347266361200674350905444260783111107023398'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('90627979', '174273716385155737169698170.541', '5.200324000648872237330439812746e-19'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('1803768.648947634', '12779000526.591068884', '0.000141151'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000017977320993875685730', '0.000000002321196536', '-774.48508625017548837148531743285351861304001188'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('21', '96592.00', '0.0002174093092595660096074209044228'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-9084159902.2773', '-0.0000000000000000003819750', '2.37820797232208914195955232672295307284508148439034e+28'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-475115003.43806', '-0.000000000000000001181287678509513467781749', '4.0220093046050820583944191642895006512408869334056873162428415838264772935e+26'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('214.229235', '-96718.991049', '-0.00222'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-18918149257957412463884', '-12933208565390138378746.1679', '1.46275761055792844404673151942791058773622292664668166595152619195819218153'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('1159.3', '-0.000973', '-1191469.6813977389517'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-15.0171621', '0.01112357298508184819314643', '-1350'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('1257949.03', '0.000000000000022102066080572533260', '56915449687562150843.321252993243314644749883359919608357053897347202786399238773645987'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-12509289.1748544943125636400748', '0.00000000019570', '-63920741823477232.051934798542667347981604496678589678078691875319366377107818088911599386816555952989269289729177312'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('5103106614703706.7', '-0.000006855059817629', '-744429188142190173489.2713016971254171088888271678386913354383444543485128480265142256148634497157227198749636248722828'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('38002724.5614025131', '-1.71', '-22223815.532983925789473684210526315789473684210526315789473684210526315789473684210527'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-12309000072530.8782101', '0.000000000000000005004668128957057438', '-2.459503758363294183324008531673735403936497133985113056082719930636152213430809622794608640259961200476256210907e+30'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('365159985032.3763673086467605', '0.0002248991250864720416537834309', '1623661207627975.73236893711916990791838169197927385941853797750513823629941899829442490537'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.000132733440397044287025245800804', '35.06', '-0.00000378589390750268930477027383924700513405590416428978893325727324586423274386765544780376498'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-9', '-15069582487318433', '5.97229552150751792890065332726072e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-688440865278.1976957', '-191734448.78467510638', '3590.595584893261972185203469698709886249651463039636148228569063563654046627'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-6.884105', '198.528', '-0.03467573843'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('98494481', '0.000000000090907', '1083464210676845567.448'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('4.1', '0.42104952', '9.73757196065678925367258464040049255964'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('18686.30172522661238', '-22626731230.8', '-8.258506955609394854491e-7'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-217561642539525707', '4687.6', '-46412160282346.127442614557556105469749978667'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-3', '0.00000000072', '-4166666666.66666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('10.3369964842', '421357.91', '0.00002453257964043'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-966.95', '166.35184', '-5.8126799198614214306255946'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('88.312171688114496097823009', '-1', '-88.312171688114496097823009'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-0.08100046091599871990126157625', '836052437639404688.1260', '-9.6884426465765284782792330904408446819277826640674697982217950846e-20'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('1307029672025726.8946196', '3588333885571316791', '0.000364244162808062686280269617983867361116163528210105586323320774998223691317505'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-306094430745053063639434225', '-12.142338824106155973001689520', '2.5208852691325375368534545536856115462837e+25'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('0.000000000000000162919', '0.002409301029588780599', '6.76208568373903066167611260640812687570871901190402134288403285417264259e-14'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('1428742', '241634.827979485972105568060292', '5.913'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('0.000000000000000002510050622', '1523.2', '1.6478798726365546218487394957983193277310924369747899159663865546218487394958e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-0.000000000000000000035749559428282832870653983656', '-24286992018217719702.563900', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-138402.4665046532', '0.000000000347385397352979926188763', '-398411872114537.407536113851520690910631203'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('36438.4910796968134561', '-1', '-36438.4910796968134561'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('-50687824864.112', '19163378634568526756727650.450', '-2.645036e-15'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('488334449.2020317740855741', '78.13', '6250280.931806371100544913605529247'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('0.000667304', '0.00000000000004928708049', '13539126143.52'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('507.3946759', '120.660', '4.20516058262887452345433449361843195756671639'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000000000000209691683203167478229886865505', '1076.27788', '-1.948304309693398866748862901e-17'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-113.257633861192413018879', '0.0000000000023303326777400552', '-48601487222429.156054866043674'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-2077566313336500634596', '-38810801724.61887469', '53530620884.304922435225040116'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('13917443811993', '-1164251924.0598120192232144558', '-11953.97965370079'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-1439867048.03', '-6', '239977841.3383333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-14.1843451280640557', '9395.3328084', '-0.00150972247788629551108132302742026195917932779804177309147038474588667770603633192'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-3831836247.8565953325900323625', '3169.1996790786465189454871796', '-1209086.405363574724665960371338376916663187706990416314468'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-0.000000206244605375083882357269', '1445859182.857448', '-1.4264501537936e-16'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('0', '1.21', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('83335008717067160822.171945907', '0.000000000000000000120693306315870', '6.90469183924489231374137123999663300649220373696042103284760306718607591350537867610533460388107985601192585e+38'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('10846307850991.30628627477717', '-1.310684754730377', '-8275298703098.531994827629365416255194325218938141649862829575721253963'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-678310684269746238023205.639', '0.00000000000000087620', '-7.741505184544010933841653035836566993837023510614e+38'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('273969047512527019958734', '250143298211591.665974', '1095248401.501372969143862693'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('-37913913.68389085010', '4349730843058434231425100.95', '-8.71638155367617422094891802420120647e-18'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('0.00098741424750804361', '73915637811812314022106790436', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('0.000000024440295818881073037', '-4', '-6.110073955e-9'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-99.1590286313793831503558794957', '16787996379118410.56015892', '-5.906543365396325479029718112268663527602296600354973223720357251e-15'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('14723174275120', '265178680875168135247.4552', '5.55217117248233043623251282398647489648930220277513034207786907942086015047e-8'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-1.9457690461029591399869', '-0.099', '19.6542327889187791917868686868686869'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('0.000250', '1395491087969', '1.7914840313588129521412774522257497935e-16'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('503.15', '0.000055143785802', '9124328.202757369327995707928780047309382227895227961374562427617199890268'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('0.000000000000025660757724442223488803162730', '-3790245.532665333', '-6.7702098724979855589219544271270126505188e-21'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('14.463', '-0.000000002111666808880372710015801068', '-6849091882.8564768623016676014845618727081781903335062812202548971724'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-0.049977764242150', '-3554330936225373958.9794672159', '1.406108917230575984432591142761469848719374481586786332741084e-20'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('5999976195382498.2106', '1645742458.4628816934', '3645756.45753616711261372450729345569328619981313857117469084254846554829522'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-0.0000000000000000234', '92.7', '-2.524271844660194174757281553398058252427184466e-19'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-261323770210', '-330138315587204.04966262', '0.00079155844042274'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-266747620889317710970', '16715859169459882384', '-15.957757132619870995789063025'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('3.1999829102086268', '0.002585180334233347790', '1237.818061600566349853496904836550436749744609638869515041'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-171766371.918350352954', '216943045727495078.512735', '-7.917579074376427781751348437342336e-10'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('15.52', '0.00000000000025530580488751', '60789843798648.64227787529457012617431943426961714858379045883500607718007'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-0.5622727159023', '-817.5', '0.000687795371134311926605504587155963302752293577981651376146788990825688073394495412844037'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('38.73768595163933', '9365314625538049210738174', '4.1362930665464750235406947353030673158822890826879e-24'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('0.0000009208543785903092638599', '-34569.1445969401454', '-2.66380435306408421772788564135897283463549176971345853940568337909378e-11'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-30396165240.0206', '-225.46', '134818438.92495609'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('1940492058391889114.99304514', '95.6', '20298034083597166.4748226479079497907949790794979079497907949790794979079497907949790794979079497907949790795'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-1040764761.50', '15098783841.213396', '-0.06893037031626'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-63112243829712286.712176382', '4.53086863642258227476029', '-13929391667277191.1049048030718148987048324130822940316106043476213962789837629470215414269675882887'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('112250343.6965919520', '-0.000007472612227381', '-15021566793642.3131422877563285057056713294011180360286844613050561843696715073443827925933925429718296877346761445'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-858308', '-797915.1043309205', '1.075688372536475592165307888197163680941989658239175669621943724756050703'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('7702738480378783', '-27211551328852834116.7', '-0.0002830687007620711698741765472408358310483607997205237758794286665'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-10364330957928.845576', '-18586324921402.274691', '0.55763207636568597276102172540430891397353156072928592967369650601783246460086442630704'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-418215482375364', '12.1', '-34563263006228.429752066115702479338842975206611570248'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-0.00000000032235960011619131724', '-0.0000000001199449855652686582449445704134', '2.68756212356020288555782622224'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('1731992042675229309286.24145774', '-0.00000000543884846850764546877', '-3.184482988823674786228835511596539162161550426544230885758694842325199901058255160684745968156272681580975692287458054e+29'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('0.000000000004136224738967149777156268381', '-147.937118080566990703203', '-2.795934375789684904194318639235567496e-14'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-0.00000000000000000811468340227542368342231', '32479961852.044142528631352', '-2.49836605081010033691506373017657135694584426440346612866842162464e-28'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-1788.32930998675528964704109632', '-4402.9030009101454', '0.406'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-534035137285426204832193876', '-0.000000000006958343802621144', '7.67474491680419827675194262635906350252120322866880525282383045e+37'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('43433765.655395', '52829486770946303169.008082', '8.2215005880544534379454896415484632e-13'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-256531.89844052843379160703785', '-43565278723435678939.0029', '5.8885e-15'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('1382.605599', '496725559.747272963', '0.00000278343961140926681'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('0.000000000000000009124024133', '-85809.060510899400', '-1.0632937918998744386039106970980125782e-22'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-28158922704444951.3318876655', '-3', '9386307568148317.110629221833333333333'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-31357452346869.9832', '-685465.0410716072806884188251', '45746245.932320593614463966989994270901457798084302915769968731'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.00006296856775186224879239176', '8361.092', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('0.0000000000000000001083906851243582424', '-176733018789786191849', '-6.133018372377985414924780432053129391963905924345013316934e-40'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('34646285.1404977758582763', '318004872839520750922158.9481', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('102.519957707', '-25322.3195', '-0.0040486005915453361213612362801124912747428212490565882007767890299306901960541173963151361391'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('239446310.05585430497014', '-1062112156216.1340241041011', '-0.00022544352651880230281011078789940688440856622557785580563571076003266177694135980618363'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('0.00000000000000032758850033', '-0.00000000102209384660285940028552883', '-3.2050726204722612547170391904987164753223354245592595297271256917659439684641850986207697359e-7'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0.000000000000000001751216', '0.000003645903', '4.8032435311636102222138109543781060549334417289763331608109157045593368775856e-13'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('0.7321592', '-18.3014143396156', '-0.0400056075674519784435921655940016725753412040906758225360442708922820561490546102'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('0.0000002141074381007', '624724950524740', '3.427e-22'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('41477386487845172040', '32686.589605629763268149', '1268942003074598.1820532054446071416406551993937513639812513532'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('73524957186494', '-0.00000000000092742192013327752873', '-7.92788649808146747219837992301661356413777463599126495012475971409076175396083145685072884002449e+25'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('6.51927747', '3.248487618329', '2.0068654204547875474372132567239346142207846063341103567'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-248.8', '76427387571599.004618', '-3.255377527681660051014924449347117991757530529525972422912e-12'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-136982892001549.59241931', '-0.0000000061294841700339234293707', '2.23481924745376192219348229128691204934976563208655459056668279537751074405701910375123806e+22'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-566673274360829.4823', '-1616580392609110718613', '3.50538257764116733275e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-7399.84843', '571', '-12.95945434325744308231173380035026269702276707530647985989492119089316987740805604203152364274'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-14347857328982549.68152091943', '0.000000000000000002193037540912918441895905604', '-6.54245860424706572344549418130099037034313425103219343931227823220414273319099409854830572833303708795e+33'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('447725486095370.54', '-261084333206951673012381772353', '-1.71486921714477400876618519816379556942618938130370368557234921262e-15'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1778.78635', '4.6', '386.6926847826086956521739130434782608695652173913043478260869565217391304347826086956521739131'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('6', '-0.00000000000000000008656623', '-69311092789878916986.4507210259705199129037'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('8660818485', '-3639713019.9791331', '-2.3795333416285807841757890660196384859105526936081479610725605676155'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('0.000000000000028486886133242758360857', '-90759541920385101577876.2228', '-3.13872079238033749299151843632992877736e-37'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-264065747359816523.15595967100', '-7', '37723678194259503.30799423871428571428571428571428571428571428571428571428571428571428572'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('733652736.1234', '9128591006429.34', '0.00008'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-912789', '-27424659551921110017.6547018', '3.328351253629541266789534424994247149545228473927555683575e-14'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('40880374.90874231446467', '-168.2', '-243046.224189906744736'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('61496.883952847393249', '0.00000000000528222910', '11642222021920138.4599164773069'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-1719909488824413777944662563', '-246077321', '6989305157562300419.97516123397653536710926725344185618795809305807583950412073935086443825516127103805718040956728'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-293612812289214043747.58', '0.0000000000000000001354445823693525495644225', '-2.167770811892220004074067777411843143084716317536069982839371579007784821146737197752377313721918329436356512944e+39'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-252024.7609680', '8093.410735', '-31.139499676955416497838225678534032784387038772967945756926'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('13815446674716621.06', '-128.60', '-107429600892042.1544324'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('0.00522362886930946079174276', '3510421.9', '1e-7'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('0.0000000000017192602049124017803', '9145.69189439399893224784', '2e-16'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('1411430645669589892', '1.425722', '989976058214427421.3345939811548113867921'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('-42753742073377897547.969800322', '0.00000000000000004474405195762283308535569936', '-9.55517889034056160615372279164249929677188173410104884054706502204169530968066421766387e+35'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('260.52011203584432', '-3676.612144', '-0.0708587421876949335344413745699687815642486764304176219899903589068926276168009088749830338'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-7.55456238', '-0.000000000003719260', '2031200394702.171937428413178965708232282765926555282502433279738'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-21222.41838531276', '-289985647', '0.000073184375'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('5525891.1', '-10.91656063', '-506193.41450953'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('32312.39417353723751', '-0.0021138482494108150925', '-15286051.9588118724318989155766929639454507451602078022076670388352'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('2446253233428.940231', '-31.3104706187216162148542', '-78128919338.767159502811844194454831716599966285174816279870865962312'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('146.08985841078', '-712729739', '-2.049723063552143991567047548159064539890063433988405526600314905619505796993269562447709229e-7'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-254679551.3351240205748', '-963077196919.166915969572427', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-4015380412427088083628.66', '2039551492.85975991919183', '-1968756575396.3470364088815587613164748499818'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-19505548357651893634645.49', '0.0000259205709359478093574', '-7.52512296347636581817777703374439950046132124649587214448460528e+26'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('751007.690', '-1728265.8743523486981728681294', '-0.434544071687715892515560844698898014769657263304930643624836329871222288884130814653288174932'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('0.000000000000000390405721683', '-53757', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('0.0000015791374698', '3467564978984453', '4.554024162115290937032043e-22'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-0.0000000000000291746896274500185363981690735', '14754.92402', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('11384156820601', '-0.0000000000000062413', '-1.82400410501033438546456667681412526236521238e+27'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('432.391547', '0.0018473682', '234058.130371628135636415090397247284'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('13.68132091', '74.24170', '0.1842808140169204099582849'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('8873.080150772034073915', '-42784423325262745958341254', '-2.0739043467562135419772762901090863875e-22'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-425055.3393', '-5158.9808434788878162409044364', '82.3913389477464651275793694820442509540900451341'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-17740546137492505779638198852', '-1499.49537', '1.18310109470311374016701357684085413348091898409796357023763267771877148243545426885846269735397715832893836e+25'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-120967541287515870777090.3056', '-36031769380240000848665141166', '0.0000033572467677331178762017280440971752536610800072303035796168388021794690621689726518441'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-380753599.97235919717688693', '341731.9117', '-1114.1880138680627559807927940725589544056619632342051'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('3973.86864569059095517125776255', '3790.450615450233881655060', '1.04838950532496793358231611052252426985338442899310394506730907098751686558696776453'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('819', '-0.000000000000001868873556286311654157', '-438231894953587272'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('0', '-2.70218161827305518', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('2.7', '1525317024104608.786', '1.7701238216920533733865373e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('0.0000000013774085200391251247', '-427044616459807710', '-3.225444056543359111984888087221769479019208413821296679755113045e-27'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0', '381052750392378', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-0.012', '14229.9130446715011177656231', '-8.432939795435707899418891005245670460221309831396126407817938984e-7'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-618727765534332776069474843103', '0.00000000000106194', '-5.826390996989780741562374927990281936832589411831176902649867224136956e+41'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('1343044.4', '4.8', '279800.9166667'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-29698.6587975512709624472801340', '1.09369018', '-27154.54462391833029208260801427329264307740241390848'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-206050982842545845299.0294', '-10252.57709396842301448856240', '20097481926155459.46507056716149702202267712679553829986963187484665742387256996692'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('450787174.91797094382', '34776465.949216', '12.962420494'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-8912.5034568999175', '0.000000000001027649820', '-8672704732143014.9231184607223499538004103382220219724263660163926268191'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-291963929613551.38551581848913', '5127.96119843765', '-56935674494.28143813'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('353517668823.2', '-809912559.8', '-436.488685779237374903591413597436101891650155886371278'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-0.0000000000345575618967481574', '-8651.8104189', '3.994257874774588630231688258982315644045347356149059273049115794e-15'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('0.00002262033686410', '0.00000000000000000016918722881770681', '133700025836303.5440032071856005751361649815034573256386641'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-9', '-0.00000000000000000309370135915883', '2909136647387024607.211131551769362614690719452830247'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('-72.68302213970591', '24447071019007557295898.538296', '-3e-21'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('145.61599228290', '214774372.717934495176385', '6.77995193e-7'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-0.0000000000127239336', '0.390324864377574104115012', '-3.259832e-11'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-393350.90682', '0.0000000000009567676207', '-411124810570212056.9264787202'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-0.0000000003668467144', '-0.0000000290881995629295142832857', '0.01261153044575215164761048554983138702158579139495482'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('4.787447258776', '-0.0082432922249843941', '-580.76883945298487'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('2696690009318863222773086253', '-0.000000001462', '-1.844521210204420809010318914500683994528043775649794801641586867305061559507523939808481532147742818057455540355677e+36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('76881164209637856397179639', '33.7', '2.28134018426225093166705160237388724035608308605341246290801186943e+24'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('597716745962233128726', '-39.60', '-15093857221268513351.6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-91356.9', '4.8', '-19032.6875'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('6', '0.0000000000000052', '1153846153846153.84615384615384615384615384615384615384615384615384615384615384615384615384615'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-6595759.2090163406115', '0.000000000000107279', '-61482295780314326303.3771754024552801573467314199423931990417509484614882689063097157878056283149544645270742643014942347'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-8366642360683555547365541560', '-39.620862', '2.111676005606227231342301830788032829775384493149088982465853468811456e+26'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('10769162802333.3620', '32525723925789', '0.3310967905558193239276674624674343930721042133996441026370693086124554971148047279865860532'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-722856872353934530.245543', '28233', '-25603261160837.83268676878121348'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-1', '-504284034426003', '1.98300943859593228789356646092126130439e-15'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-161.18599049116514632266705', '-10286701.34', '0.0000156693564987'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-9.497250', '95.217589970243492', '-0.09974260011168095598895157145158668001901445580253863'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('98023548.73', '-3247574706953067067089963.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('0', '-150978667633376', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('13.945', '-0.000333489074233133', '-41815.462866562865851280031427636914'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-23264894.70087300543163', '2129233469499.5357015', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-17520127173088.05', '-32144915.483903564124', '545035.720559327104969763059381957684855487085216377818567655'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-2507754348349292581124766.52', '9', '-2.78639372038810286791640724444444444444444444444444444444444444444444444444444444e+23'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('10132.85840', '-0.00000000415470652290632786510493', '-2438886680475.2783550885887106154489894064656314634276650796020629292987020657942917264533220964319659'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-2408133581684757559117', '-143220715840651400750035', '0.016814142895110702260709558133521323305519171571563617498137562792145'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('0.000000000000000003198370', '-542480.91706', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-0.000000000008512648221547079532', '47947101838.0139888013', '-1.775424977782073370220761947962681790318209412034329729757695848925e-22'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0.00000000000000000011093', '22917.451210427999', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-5452.9', '-117854011174594916759393320.1', '4.626825973637670289155725075691610989628825159024940840150731975804822e-23'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-2163', '-5618.908218854533', '0.38495022'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('0.000000000336304373477542493153710230', '-4186031524', '-8.03396657548779828906300969366517365e-20'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('11553.4617260458525853', '-402113198056590396003', '-2.8731864017106707904343853526999954587484204677438247997511e-17'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-181.366', '-26923110833809265.90276', '6.736442943742065990244083064716388108845247447476821880350726856024e-15'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('176664198.97382887749', '-6.703640', '-26353473.4821423700392622515528876849'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-0.00000000000000001081719221524', '13557.51', '-7.978745518343707657232043347e-22'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('-279668700083542629396.8738', '-8989194394.50111', '31111653370.6982896042912274454917770704503039799571441076351113468002914069592993132748827192761700465839897'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-10962559713.5256', '90423573495954484891232.735334', '-1.212356390008857658041919479438436425645429346797893680515762015192882468075426906336431e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('8417526.02327013', '2777508574.8209', '0.0030306030734'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('123573743499355386610.311970', '-6801791452477806600081', '-0.01816782304525656027864123540300829519018882095471454248744787831024859664366597147763'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('445.696', '4617891890.5', '9.6515035554836794202772382984178914701251e-8'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-11900.9568454100155485', '-3476642741.8436463943548629222', '0.0000034231175674665373261181070448471272'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('11348547.8754874465167814538', '0.00004569466684935670458', '248356069930.44994350575754262658581065466587206841915638415295657073357911004031792129581118795515446'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('11.57', '-17254134620', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-0.000000000000000492', '7', '-7.02857142857142e-17'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('244775175978.4297', '58.3', '4198545042.51166'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('16084427.989905', '13774842831298.8', '0.00000116766689732084835945526952707448756700157'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-0.00000000000000000072736713853935309030799267119', '-164.42446530', '4.423716003650906142298962800336988536948582675427438352144058941330794767072902e-21'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-437.5396', '-1.77', '247.19751412429378531'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('0.03983775', '3560454489296722751770', '1.11889507701217477177168362112653150044898592883858932108625090095410893684e-23'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('109362613295.86670', '29.64', '3689696804.85380229419703103913'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-0.0000032765290989360868917898696', '23134769823577489.12274739', '-1.416279100212553826140199909818514674618878864071375130080526341123427e-22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-370', '1895716488790', '-1.9517686436127588143580679436793115682e-10'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-0.119463366506755', '249.81', '-0.000478217'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-7086162368075.3800108071', '-0.00000004820534953852057358915222439', '146999501837713569169.304265988413248513013633283530691155318444527059289806808714865906466809802032523276035908798809'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('0', '0.00000000000000000014803456360474978130174416', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1', '0.00000000000000019619313938607223639', '-5097018188960128.66621016506236792382745133518116907519744902661'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-0.0084827970779245676518357807346', '-1.5', '0.005655198051949711767890520489733333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-0.000000000000000000050067235497272278048443611', '292.7081119936176', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0', '4466725625238.749354', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-16824641.958', '1.96', '-8584000.9989795918367346938775510204081'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-0.0000000000000106859863094897', '-2729188667932820575989818.84774', '1e-28'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-2.38', '-1873114498229', '1.2706110610164259521028e-12'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-4.68', '1082905.925', '-0.00000433'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-8113', '-5949.882', '1.363556453724628488430526857507426197696021534544718701984341874343054198'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-21706.47947', '310050075109339875387268468833', '-7.0009592683844e-26'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('0.0000000000000000000208693317205862612', '-766835343696143996876', '-2.72148798202e-41'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('0.0000000000000000001002743971335117', '0.0000250220203710886', '4.0074460673596356044798592209348131568198528485765879099969546704184e-15'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-1.33127239316243150282262', '-758441.1309619468855071', '0.00000175527452140412090223529987373882800883'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-0.457998904018211230990', '106823865246041', '-4.28742119528562117351521105182951354172417051826989560351852664958994121e-15'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('827.7662', '0.00000000000058611', '1412305198682841.1049120472266298135162341539983962054904369486956373377011141253'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('0.00000000000766056111585', '-4326', '-1.771e-15'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-0.00000000015729606511275867583378', '-47360157670.0547277528812936', '3.32127410150526447699433470761724988139876005238577631e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-0.00000000091092387', '-0.00000016666487527350474711378008', '0.005465601966251928706607718464'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('0.000000007557770', '-0.00075816935781574087888658416', '-0.0000099684456013543837066710559181684089709649944'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('0.0000020087', '-35211882697672804165890828224', '-5.7046083483992675229381e-35'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('1', '-3979309282849145379656834.598', '-2.513e-25'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('288.417899033564961844', '-0.00083', '-347491.4446187529660771084337349398'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-354425.55865449782', '0.000000000002663912762955191297607172533', '-133046983964038871.4593608883168'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('34662.291247', '50631846734.64123571', '6.84594647093620534765634464165957567554562755943960923814340077924e-7'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('166199629396.7152205', '340428867.221111275338763271634', '488.20662816695633016681543159573660494212645642258549253064269'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('31.12250528447262923010751', '0.00000000087826137', '35436495726.17844871180832'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('3210014362437665134887.25538', '-10.7036', '-299900441200873083344.5995160506745394073022160768339624051720916327217011099069471953361485856'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-0.2186034305808468153', '-0.00002470', '8850.3413190626241012145748987854'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('12478396.1599469824217', '-0.00005802658288439887441', '-215046200201.1485876879095422103548422559818198858685'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-1695.7431718249008647067456', '-1894577221.3806', '8.950509658240235260983971505096809376850495951e-7'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-241284189093.86476', '7121957475722720030', '-3.38789145984587319969970007799531782077092e-8'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('229.159577781024488884284523270', '15827811.765113481403465788789', '0.0000144782855129804781782160081696446522432203755884279917332806673499'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-2', '-36690762702.360403462057', '5.451e-11'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('28914.0854970944316513046232987', '588918251974184326.432567676575', '4.9096942402732497225323883923686358553855e-14'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('985.3', '110692260427.6595868463953548', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-11584428432173903', '5836', '-1984994590845.4254626456477039067854694996'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-285.080308', '0.000000000000001579060969526758', '-180537872508772162.1425399144383005516174655559047556185290795696279787560640447736969020751579144736'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-7314926838', '-4.59806', '1590872419.672644550092865251867091773487079333458023601257921819202011283019360338925546861068'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-11150536667.220697', '-0.0000148263718447037736405151712457', '752074532057811.16038727959854897547701'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('0.000034439', '-43.80', '-7.86278538812785388127853881278538813e-7'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-3325765.67', '-975143369337176063355701369091', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-11714479722402747456', '13985398070045191101720', '-0.00083762218735078839171923'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('-17.66', '-2011513929495288742', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-364544.23838', '-86661350.88886', '0.00420653768538'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-8212024.05936522', '-0.00000000031142169355553117630542302718', '26369466961687087.73998920742887087815127142165724721398021346806585408574886791929503494691927452789154395683'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('355562161525907.6', '0.000000000000000000176', '2.020239554124475e+33'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('45053830577655388757.9', '-28567382886349292167417518095', '-1.577107387011780519755115682384135459e-9'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('450487189350.5587956', '-4158900812972.723005705813121', '-0.10831882'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('0.000000000013200962', '982953804', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-77306', '-0.000000000000000839093964', '92130325466147674493.341963785119'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('1278794.9358822362652680550', '-516402.818101142', '-2.477'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('0.00000000000000525450', '-4.00247921699212', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('0.0000000000000731186280459695', '-0.00000000000025477319298719825567', '-0.2869949824338211924404096'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('0.00000000000000303133058001014485268638', '382508.56435663', '7.92486982640184371531271251696217534903553010456e-21'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-234982095594308.19612', '458878.61539585853455391812', '-512078984.9655498972330178178'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('17317538.5', '29.5966544', '585118.11051184217632382124920173409870272364298040389321841728165059088570497346483864743847535'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('1.13183693', '-10708432517497979855.1615193', '-1.05695854939603537631931016638241905193e-19'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('6.8787514260155610450174866', '-0.214871', '-32.01340071957388872866737065495111021'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('9', '-54745011062627.6303', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('244.7949772420', '212561.689969', '0.0011516420352025847324194690336955993342194615565994197'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('0.000000031041', '-0.00000000000010832', '-286567.577548005908419497784342688330871491875923190546528803545051698670605612998522895125553914327917283'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-5', '-1', '5'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-3647714057342.344419212889', '66.08', '-55201483918.61901360794323547215496368038740920096852300242130750605326877'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-296586646905.87', '10.62697', '-27908862724.3579308118871136363422499545966536086956112607827066'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('0.00000104208542089884', '-466141.347', '-2.2355567203070702929941977449170583874422965530238620947735837730781689e-12'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-51285337112', '2983965.1', '-17186.97618547884491008289607676711768512305991782544641691687345807094057500873586'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('71220.93', '-0.01857651073264191243878809311', '-3833923.9820131231147816074654911721048995993360368248376218174400380729521529188040354'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-6', '28767.1596', '-0.000209'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-820.65708906', '-1070782820906061.717912385913', '7.6640853125154414557334549413445715745754921798313010156e-13'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('116589557442731987886', '-5381447.7', '-21665091615167.4183'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-967636609359503330.8', '-0.0000000000000053167817155', '1.819966779035811877125764991357580589392545656786236e+32'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('1378098.0860848883965', '3829.144881526811', '359.89708635297016136624615649284086100158'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('0', '4353.34549', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-35.0', '714.58398198933532', '-0.05'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-188.0', '4324', '-0.04347826086956521739130434782608695652173913'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-112.292782', '1353.2574746268109064176431', '-0.0829796133444354975314836744657495573860198495844430986'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-335.4292', '2', '-167.7146'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-3.01549', '-2884.17173068256673060268', '0.00104553066931501876'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-0.000000000000303585323552205201200045', '-521.9394865', '5.81648508e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-0.0005968274879156986', '-114765522638442814.5', '5.20040752827783749460320576045391710563725197474603e-21'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-10104', '921.19008301', '-10.96842029278588727172841387099769273274951557709344646106993048837381014'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('0.0000000000000000273049586458', '253618203.43011359797', '1.07661667327140760880141928555493830956376043549264221372598231047482040857e-25'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('92922740.3', '2.31571', '40127105.855223667903148494414240125058837246460048969862374822408678115998980874116'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('98.0', '9012340616560.8575896792', '1.08739787109152962034444607422571496238389650882032713766511857928951409622559135329911e-11'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-9.22766448843', '30584691562.115512085', '-3.017086005163470678943551372474647314661738810411606251930458348221431623446733989e-10'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-0.00000321', '0.0000000000029905245023738090', '-1073390.302420855083982977706400817540115916694852349782290443838748321172953000874847743245801381481218'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('1', '-478284675.8535330846', '-2.09080501735797565380343933829251104375905448306653e-9'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-24889740.944', '-797087273.4207924200426425', '0.031225866694851106957198464945590008419112817133210984653981131991133256272684495'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('13.1614510', '799327655434', '1.646565198955e-11'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-0.02997028136511', '164423.0141282', '-1.822754650498152611447305273290121442270888131882025599486482581e-7'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-83.962', '-0.0000093242194811805', '9004721.539370062771492551878267567604243603287981636648318973068259'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-2', '-9831.560685', '0.00020342650206608575696341745155998088618826442202853574717064364'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-2408978781037.3510487', '-2.0209735274300618771100862158', '1191989280582.358613546376064132210477642527787115330582198045845612173066304486493037517120331381'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('156581443947360795736793.8', '153828658191028.8630776013', '1017895142.4832260054950889143026772449424156367352661475671925661398188827146377323678301'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('-106669940.5101239779778850', '287.16715', '-371455.929099564410406569833'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-0.000000000005329131775399', '-2016075515213211958295433.2776', '2.643319526072123676104268301908366260560799e-36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('20917.248494281423675636484', '0.000000000000879328552700456560582', '23787750812871521.03901071061542842588654768064339450389481'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('8.14215847559786034216', '53135.171299627387188786', '0.00015323482123892122654505696856'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('120005559', '8', '15000694.875'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('0.00082521538', '2962689307305357254627', '2.785359159886241279024189699621126135113985187557e-25'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-0.0000000018', '-959.7', '1.875586120662707095967489840575179743669896842763363551109722e-12'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-0.000001066091437051389158134313065', '-54550697597988.2164086050344167', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-881450466.662', '-12.73', '69241984.8124116260801256873527101335428122545168892380204241948153967007069913589945011784'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('0.0031693408972666078125263', '-1', '-0.0031693408972666078125263'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-4.535', '506.69530', '-0.008950152093378407101861809256963701853954437706448036916861080021859291'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('1834.4', '-0.000296642697475565684977543', '-6183870.412488743761227431114731471038972851587971972838707653417369269946548018381567775282756274'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('26.460334800691560145438110', '55', '0.48109699637621018446251109090909090909090909090909090909090909090909090909090909090909'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('0.00013879', '-1859.266086', '-7.46477338800875648306748063816402016596563683031649725901578134e-8'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-8860443753.946', '791167.32', '-11199.20341748443300211136122255403572533809915202260882059688714139507'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('1659086344364514178134748909.31', '-0.00000000000019569851052023168146429', '-8.47776684632964899225070525498158826632514866528309592706027956562821436539535748195784066e+39'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-5840566934230352003627', '12181689.4', '-479454593073958.362756072240686090715791850677131859888005353346145896643859594712700522474329381604492394954676811'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-115.78', '-0.00029632151', '390724.250831470182505481967880090783824636962736859703502455829143149277283312979877836070692269'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-17678362127870710507151.66721', '2.8', '-6.313700759953825181125595432142857142857142857142857142857142857142857142857142857142857143e+21'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-1', '49.4', '-0.02024291497975708502024291497975708502024291497975708502024291497975'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('0.000000000000002295093364019182289319365862', '3', '7.65031121339727429773121954e-16'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('356272.49131846480991666', '-0.00000000000152684414', '-233339135269212750.1086391175460777549'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('0.00000000000034718503647815561', '7634618013.74749176089', '4.547510246786244e-23'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('4419292534230334167380586901', '-98750790116226', '-44751971392117.384988619855226602933570788116660146013546402'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('-0.000000002640314227681740808806945', '-0.00000001727726621556096', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('224239562441972', '208159', '1077251343.64582842922957931196825503581396912936745468608131284258667653092107475535528129939133'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('5.07573926', '-0.0000006299941666685128408282015638', '-8056803.5841365606359821934824012'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-333956334181076018958.8736898', '216131081.6161449', '-1545156447114.7754744584147365985158699131343315862971072549909074858'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-351329370559483', '0.0000249515526800', '-14080461246850270161.2234898401521039130780056930709612256482629440918624227275943614744'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('563922094480019', '-0.00000003973759974770161962', '-1.41911463717089669561746511053964737252150859296e+22'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-169945484449570746983136.2', '-1257007944836', '135198417120.3812776146603667877407888246796159806670569777738337'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('30369.73135366606', '7670136648490.82036957156012', '3.95947722256573126000846098351557e-9'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('1.4444343508', '-0.000000000000000030201076', '-47827247969575653.52969543204354705772734719'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-1301765052865.662576', '-8034253087206065409336236.5863', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('-43294281189.9655444155109481', '-5416370820072684.408611244392', '0.0000079932269462644659624737902334378948915704774581638949755139014111418431575371608'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('2.513163425', '-41516.26124951', '-0.0000605344351673686'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('0', '-63301017633243.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('792995397863538032966206.36', '2000057.03848', '396486391441214770.533170799574005957026350136'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-0.00000000001223160894758355959512224993', '-259896322713293214', '1'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-1976.5', '5864021.5672288', '-0.0003370553769866245326081455571391585055073452007206643'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1158971.274333232717401185', '-926364306311.6293418018796388', '0.000001251096643552406361650562'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-218013221', '-727851107224011227.52723485', '2.995299709462445366963421695946644e-10'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-986608546070844210107181.936', '672917810.5511805859535416', '-1466165006485297.99312049307790578350867921850442274'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-2.30', '-3574.267', '0.0006434885810153522386548067058224805253776'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-0.00096359384288029908705847', '-13117636.77133', '7.345788419651446874734e-11'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('3268.604363654077832', '-34', '-96.13542246041405388235294117647058823529411764'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-26.01868784433545', '44235870867281485', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('74.5', '882526.6667', '0.0000844167126173933662961121716323543699668242557366793730222815033720498907163504071'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('2346320493.483661205767414081', '18891988723810961.6890741589393', '1e-7'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-6643382332752.800366', '708198923.142517034076', '-9380.6727399045969877466366411125785225'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('358420023453.511025368037013', '-0.0000000088425110441501727725645', '-40533737720421213147.897212111279513473931'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-13903.808110199', '-196395', '0.07079512263651824129942208304692074645484864685964510298123679319738282542834'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('0.000000000000000010395', '-14.28', '-7.2794117647058823529411764705882352941176e-19'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-9218614451113493670', '-0.00000000000000016185263657703762427', '5.69568383072071498871273113548441534234149560125375183394529211322856118223136764911798578479761381095302917255374908882905519623669e+34'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('2523532.104758902674236', '1425317605896', '0.0000017705051101031829994014197506080252923384113662616153652501841038691'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-141.4', '119718482665189185033519.71586', '-1.1811041775015e-21'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('12804.1563', '-719.1', '-17.80580767626199415936587400917813934'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('582037664817572050755.6736884', '-0.0000117163', '-4.967759999467170102811243211594103940663861457968812679770917439806082124902913035685327279089815044e+25'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-2199756650967975683604832991', '0.000000000000001016247473465', '-2.16458757183196701804046535386679737451306727219918382855096114932607863474941e+42'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-23276.4098074440', '19.9177283480510', '-1168.62773709440893442'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('2694302819292998.54846048', '148762428626556504299', '0.0000181114468496383624671273269368124102810066837334214790130527562697435433035728'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('0', '0.0000000000000000250169442196', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-15110061623729716511396098221', '1847662722830329', '-8177932821301.647568672180256'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('134.34076196', '-163212229.78', '-8.2310475226692904997820562218410493429630295196130001674191942407270750051019859303585087e-7'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('2', '0.000044476120196283495', '44967.9511426251522555540285522370682163173896901934503803808051'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('138578679.416762928716', '-1580628094199.05509158679944901', '-0.0000876731724087090263704240893373141841606'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-117845035.56', '-11550621722901664817131.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('1', '793231057244556757901601', '1.2606667261286e-24'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-421328249052153697.5361', '1050100.2774141333085293229950', '-401226681026.76099441905787096642316278349483887468600450047044679974507'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('-3.94', '-144029804399824449190817665', '2.735544921704276279115462111554858005441023992356721225944181878910114911e-26'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-14.478', '-19.64', '0.7371690427698574338085539714867617107942973523421588594704684318'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-1984442538', '155.66814357', '-12747903.92234392340804093524399959'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-803229', '-138327801322951487005370', '5.80670691153917331e-18'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('0.00000000000000772350713715705705', '248.94', '3.10255769950873987707881417208966015907447577729573391178597252349e-17'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-87.75566506588633454483790799', '-628869755.12856397361489120', '1.3954505579290558769803e-7'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('1', '0.000000000000049923605672579949133019843826', '20030604491158.381896360582775803425921567'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('1384139740647242862.472516', '0.0000000000000020621146911147203403326', '6.7122345163983892089985173449973034403706234889005061761009869711932945762e+32'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('0.0000000209', '683423294485412305.7719468', '3.05813398060081945804588598305083677e-26'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-0.274823236543517396592093', '-1', '0.274823236543517396592093'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-195781256144.5', '-0.0000000117909502309315138914787608320', '16604366256326128362.6867641014711305994021480467714341195589509594749613047046221518632201'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-845550065.67484199282', '-0.000000000000011583020213752768186815111', '7.299910127678981990504260833115313467866001228054e+22'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-1892049706.8', '-0.0000000026', '727711425692307692.30769230769230769230769230769230769230769230769230769230769230769230769230769230769231'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-3196321897906842652526.8238', '0.011866359391009549', '-2.6935994373544003968420629837142065656629591155372486394808649203789817375905652024750602543824104e+23'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-0.0000000000000072978357474268980751421', '2705850830.813896301', '-2.69705767380819467082224402367733736475401295543613580526331e-24'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('0.493510204780969111410170', '-31.4747', '-0.0156795840716819893886254674389271'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-0.00000000000000000001149', '-1.3', '8.83846153846153846153846153846153846153846153846154e-21'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('3.975', '2722413048.230589336001894463', '1.4601017294504665890474e-9'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-1', '-1164067380456083.3133', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-0.00406774079216508895885', '-1191447019986923326048554451.230', '3.414118063100895806e-30'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('133014612766098', '-4136121831945', '-32.159258883229810827917034044352936476180523568820718624394026197132984123578474447315752109'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('2880602052.52426903109739740980', '-750.32658', '-3839131.03'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('35212520694460536686618361133', '0.00000000000000007896', '4.459539095043127746532213922619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619048e+44'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-5828.32331837104557852500935', '-0.00000000000000020286', '28730766629059674546.6085445627526372867987774820072956718919'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('59023.32246338', '-2.3', '-25662.314114513'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-26.91186149360', '7.514915', '-3.581126532182998743166090368287598728661601628228662599643508941884239542296885593516360464489618312'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('4', '-1548.43', '-0.0025832617554555259198026388018831978197270783955361236865728512105'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('0.00000000000045058186273986975043', '-0.000552882519115919330', '-8.149685460491094720267563440652111891472395108327682983855341550524023695063e-10'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('20370364868298257638938931', '693.4', '2.9377509184162471356992978079030862417075281222959330833573694837034900490337467551197000288433804441881e+22'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('35404', '-27851923.45390315508813', '-0.001271150987420888540308934579814363714714944137046733052073548329971'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('1133.287750112481', '-0.000000000000009504538918', '-119236478475165627.1770341968733890348198793076897367910803897872997272733141119639529261802324075664329'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('49.33107184109863469290973', '-284326074250012.86', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-0.000003132745516946287732321013676', '-4020613067.0389', '7.79e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000624856143521758410959879', '-6127645959575.9138624', '1.019732777715838962191676539977427242664581e-32'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('7045', '-49228682.23', '-0.000143107629147683565772343445480848087'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0.001656631748068514997575', '1111754928456906141389839', '1.490105153271402275923753726417383852409982894833468785852753708390198627e-27'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-4921879.72798194704141569501', '-2', '2460939.863990973520707847505'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-3842875.81600287154215788709256', '1.074', '-3578096.66294495'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.000000050117920097154940536079551056', '-1397910398799177', '3.58520260956688483527691792989860753545766e-23'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('0', '0.0080931215100', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('0', '-23751811450190359074914845183.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-13915159.169438739755867165361', '32.9', '-422953.16624433859440325730580547112462006079027355623100303951367781155'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('995743797116.35115542864', '-14201957555.706732240338', '-70.113137094698206269394712623561325492522134'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('65802.5484', '249400', '0.26384341780272654370489174017642341619887730553'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('170', '-10981.3', '-0.0154808629215120249879340333111744511123455328604081483977306876235054137'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('201942537975663838827', '84508089664.467591327407', '2389623748.18150606'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('23137876052.8', '-486750238185.362429540889', '-0.047535'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-0.00000000413170142764279266714159', '4.41397', '-9.36051089527747734384599351604111491469130963735594034395340249254072864110993052e-10'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('2571974844.0088', '-2.56205', '-1003873790.13243301262660759938330633672'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-2288.26338054', '-9', '254.25148672666667'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('1943.0954931552832430914361473', '10715986.655209780472398', '0.00018132679291930719773879837496526569531146097023540738852483'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('0.0000005591951101822447394', '327861916054130937525016856.154', '1e-31'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('0.0000000000778429607078534448233979411', '0.00000000000750103048859169', '10.377636'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-24266547.905', '-1170740261.1', '0.02072752489283978550278627639143040657833578966852189004299375589313625254294246'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('301.0', '-1089916139863550590', '-2.7616803622862486062850164540557338539790749327672777897590219388059732611421e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-18403001013809.814080', '-282780.004832288', '65078862.364134692779334796303606'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-62444881822127582837603.59424', '-27.3651008519838850', '2.2819167435153275687231640005567034402782244595814686e+21'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-1', '2.040593173', '-0.49005358502196655148762472116728972316325592254639969826067824446259675886899578488396717'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('55642.6031364', '-0.000000000000000862582262902', '-64507010553637696390.073458125613230811714588454907783871949338725796446379199'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-111.0747736416', '-25663.8', '0.0043280719784911042012484511257101442498772590185397330091412807144694082715731886938021649171'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('0.000000000891240067824482', '-2', '-4.45620033912241e-10'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-1.1771580965', '-384394400500325112421125611', '3.06237056254674652913427814e-27'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-105012166625.1026618687564906', '-0.0000000000000003275', '3.206478370232142347137602766412213740458015267175572519083969465648854961832061068702290076e+26'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('50808964142001.14', '-219110914192.4', '-231.88696158415042981934463247576107829874493853519991170237890107319026305334199'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('6572664354129149393.4019651217', '9.026', '728192372493812252.7589148151672944826058054509195656990915135'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('33.31', '-4.40618812712408', '-7.5598224676215640005099392658811743777115996670683109744'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('18.4', '0.000000000000000009063796984004646283347', '2030054295398654285.716267915678865377862968128412680743328636'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-826206.5', '0.00000000001348675401954832170', '-61260589375505647.34524063429409961187895088582'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('163649.52737', '90914229.30812336259', '0.0018000430583353974223210959'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('361495398.724177091515', '9621300075383.51524', '0.0000375724066281933838311981786550364827931583670196281658447763588'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-4830845132049.060', '-0.000000000134', '3.605108307499298507462686567164179104477611940298507462686567164179104477612e+22'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('2', '-55', '-0.0363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('62932082345602320.61003434', '-0.0000000000000000000128306583754', '-4.904820976783304950188966278975096902493124109775290494872199712982469624424632235618240214096005335685792340778902786715996472419024e+36'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('0', '-20042656659491873502.8780627967', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('422300.832', '0.0000000000000000058894360480', '7.17047996715083780123593932265753673398237739044042337141615566788136044634744287489035316883705e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-23732871163291602553.19952', '-234088.2', '101384312251927.2'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('0.00000000000016146202', '4151.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('0.0000000000000000042', '-0.0000000000000051003065', '-0.00082347992223604601017605511'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('21099.156363620443872', '0.013005585', '1622315.05646385332701297173483545722856757308494773591499344320151688678363949026514378246'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-39719382.4097', '0.00000001206', '-3293481128499170.812603648424543946932006633499170812603648424543946932'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-25684646695530101.09663290', '1986420121012', '-12930.11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-1', '-467714', '0.00000213805872819714611920960244936007902265059416652056'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('0.000000000000000000033286877570123', '-916.5099', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('-1.043852662559036', '42240709131514578739126498.6', '-1e-7'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-7.1', '0.0000000000000096810955853', '-733388069298768.68674779946344013503105681395776477666217263849082719375430604653757358662'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('0', '-178045896984030995126538.3213', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-377840682286.889417008650', '10024.5862044', '-37691399.38375184600838106190987946490963690396'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-4.526', '0.000000000100219845842383081', '-45160716043.3881820432324'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-154', '-0.000000000000000000357470393647111044759003621989', '430804907866093922870.601661067205523043745373628598982920969630143060439226956593292728945988714384628'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('45.2153662086445686333586366039', '2.0', '22.60768310432228431667931830195'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-4859389835978.26', '-1108.719806029077', '4382883582.9878'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-1692359.9586057645036945384', '0.0000001662465868', '-10179817770585.137232390616515201742476'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-15.899462279', '308886629788805392480384693745', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('0.00000000000005787864', '-7.80284811', '-7.417629971013238139272199673767582796123401663908590423657497031555058682284153804962e-15'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-124433586765045.99829685196779', '4.3', '-28938043433731.627510895806462790697674418604651162790697674418604651162790697674418604651162790697674'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('0.001131144301861439425560554607', '-50.0404909', '-0.000022604581'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('9664584701747956.26', '-220.524899', '-43825367319397.14553502640987492301266171308846172513154625682426908174'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-70.094740430880', '0.000073254285972', '-956868.796150334825353555082222759529759627536786988423176163041831198316113183505074'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-10.183', '11933032273454430', '-8.53345550958790588136189212586e-16'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('-29736253', '8700.333', '-3417.829294579874126656991174935488101432439425019709015735374726461619342615966538292269962540514'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.00000000048212885', '29110460.881250', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-18982193.25771004623685', '0.000000000918', '-20677770433235344.484586056644880174291938997821351'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-46898.939287762958868723', '-154.84896130729768720', '302.8689304198304373897050660480649147739932698320575588'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-736.040064754', '6785462.05675008', '-0.0001084730942'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('0.14750193785287', '0.00000000000000000019221833596519455301', '767366636029866259.8568751222788549790355404'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('97.7', '3', '32.566666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('25725.8309417978', '-802068.425741749136043585041290', '-0.032075'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('246905186178997605977402', '755699748736449.29666038698706', '326723922.5523494590494444506845130782237605736040767460536008488'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('1761946694.171', '-15994035825084456785', '-1.101627327486429467069944745236433100004619177818181e-10'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-0.0000000000034592824941049711', '155800958967233410222261.80', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-165628.0818075039162', '-1660.013', '99.775171524261506506274348453897650199124946611863882993687398833623593'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('6.1', '0.0000000115108583928302174187348', '529934414.2570213992514206144659067334355751837511402020097748572764397262506'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('79.6765487483545', '-64638113.02', '-0.00000123265585930241160991119539337072064793391457825078693796312186961'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-1325.4526431089831', '0.00000000000000000316328834358410214940938364', '-419011009792172419912.147033054074431563097584718398200111548374447345258856'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-0.15736742596443911', '-0.000000000006199441964683651494199', '25384127613.568093276217026453299470655'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-7703543907102', '3.007202183901463022383421', '-2561698028932.537507540384252365699669732703188900300993841196283805'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('15404621.4720', '0.0000000000000000038004912839753', '4.05332372079191356879942794920756510024545207139489987e+24'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-0.397391835935851010817', '-133797678838627077699', '2.97009514204759817547e-21'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-110', '-0.0000162146328953462154', '6783995.709922686856592619329903740238927539692022340187216'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('81535305762924867262.3842', '4209656.737600', '19368635222597.648614128703679984342103855817243962262202288120357645000969449115304037325'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('0.0000000000000866345606234415543799', '7747124882046092', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('0.0000000000000000137029072682227285152819136219', '0.000000881683373', '1.55417553374035652992652200348344325644893385e-11'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('-24.2536052715', '-0.000000000000000000210129343932237', '115422267150471659440.946101553035975211241209548721277513006464856778199802926435411352'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('1669686.51135304', '0.00000000000000287487030352847584', '580786726032039799848.79613536481530428690282575927510569109'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-22067077.00922301', '-911395.20440', '24.2124129057168539123816350859877313614'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-6653', '-2008644586121049283021.103530', '3.312183771071116973243223e-18'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-93244887.6182', '48608417700077241.66115982087', '-1.918286832407050936334e-9'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-860835344594.186', '15989403620777', '-0.0538378644389'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-1.7825', '-2847048972405282.254', '6.26086877070500246829279599429901e-16'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('13980.0140745', '422163', '0.0331152044932881375203416689762011355803327150887216549058065249678441'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('27453298.7243917949', '-3967376.02404', '-6.919762220178'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('3177824.7003906950471237', '-10425515321.383134386331312240', '-0.00030481224212225307571'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('18582522299066378696330.2034149', '1343770.7', '13828640778569125.444043543600779507991951305382681732828376150782272600526265381437472925998460898127932'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 6 }); + T('5845735489', '-0.000394103143', '-14833009055702.96352597218439336323689253094842738'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('0.13188581154124472618789', '-0.6528213060657947', '-0.20202436764211950142170611086000503933889563714424658073703470623916956321490786383609'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('86791429156.659202979', '1491123.2804929570339922361', '58205.4015'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('0.0000000000000000127782', '2113.149485585', '6.046992930300200288847233555284598510151547499992100517443810274167788460839e-21'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-2617586.6', '111536', '-23'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('37030054236.0757694124', '-0.00000000000000000003975', '-9.315736914736042619471698113207547169811320754716981132075471698113e+29'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.000000000000000000541322608970996545', '0.000000000000000000052998971144844978', '-10.21383240613434202029666132622942'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('0.0000000000000000000126149038', '-1.610067534458280489205530', '-7.835015320797944458056437926214003215e-21'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('794375853290', '124881.67103676996495', '6361028.3774638570420370064288497'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('1.145363030413104437791030', '-659980800709.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('10.534261958', '0.000000000000000047061071046', '223842375956621359.2120633522395843009390738718377786577670997275586'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-2.9049167569', '-34.0141849962616', '0.08540309747887'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-444.536278', '-737781.991', '0.000602530670879441403985150946846573271805437712290269226698974819514129343935151705268446976'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-336.064', '36023.656491885578', '-0.00932898080670127'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-6.1', '58264633665667035361818.929', '-1.0469472846e-22'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-1.41464728421911929360176', '-5.825', '0.24285790287023507186296309012875536480686695278969957081545'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-0.0000000000000000002694415597171509704', '0.152740958144576121156786735', '-1.76404261e-18'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-0.000342706198824227354729023378107', '-42567218609718459777456.2648', '8.050941781429538853063759206e-27'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('12107227564675.217', '-4.648', '-2604825207546.30314113597246127366609294320137693631669535283993116'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('0', '31.84853', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0.084673856129762004577481829345', '-389.2532447720', '-0.000217528966725399062481477362098232061131300035630881916280084131121011417375828435705626251981234'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-15487575914223598308.2456153', '-7066', '2191844878888140.15118109472120011321822813473'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-218422676784436096400', '5056.70078975', '-43194700629149697.33799247084471021622601829'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-807346069698272071.114596', '4066662191536774681.039', '-0.198527940525391748518053704773212430736489129165543508955173628964823411161850001256383681063525766'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-1028.70188', '5', '-205.740376'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('5952962.53716704950370407994371', '-2479', '-2401.3564086998989526841790817708753529649052037111738'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('0.000000000000000019365709603030', '-6244211876.5', '-3.10138572906415e-27'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('9.102028098037924220', '5930265240759.7093', '1.53484333811549539763766345e-12'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-2.09', '175217506055601', '-1.19280318904709755363024245374548870321951211092053728421809180676381661004e-14'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('6530.35228348105626633386855', '4250507986361021.989', '1.5363698420131360200509150201873482089117026298378797097e-12'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-2001.714686985807', '1.6278003', '-1229.7053188808277034965529862600468'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-3999125495.505055323146302', '-1650754579.289701310', '2.4226045141282165250267914990506233922905'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-0.0000000003546152003', '87098.1809880', '-4.071442093e-15'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('7686.41', '-0.12', '-64053.4166666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('17008982.901597', '12852.5038922', '1323.39838557991080691469809971694660818521000751025938677832443348808714084164407050402246911'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('0.0000000006190975331411008971', '-1599829.22', '-3.8697726319881874460325208961991580576331766211896042e-16'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-163115836589544710.033', '29.71879', '-5488643265406993.69096117304910462370776199165578410157344898631471873518403676596523613511855631'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('5257289988298610268609597984', '-816870426253', '-6435892179882063.140206566873'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('306.600916918', '1151648641074631.3993', '2.662278285084443950868295801066532613014293687419597e-13'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-2045214.233517', '413457455140479.7471701', '-4.94661351026334979189093049432828253867506308947112481537775099643873515231581237375e-9'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-1', '-3661602.26438', '2.73104484813e-7'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-24275661716096386654.29800073', '245.785', '-98767873206649659.88281628549342'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-5552632008878974768445187975', '1', '-5.552632008878974768445187975e+27'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('818159648.6768', '244115702596473698.05040388596', '3.35152405181090749628008186404258507666653773605447977668859045018011860933977e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-15796333282922929455499903149', '-0.0000020', '7.8981666414614647277499515745e+33'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('0.000000002082360', '19', '1.09597894e-10'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-99', '78208258243999', '-1.26585097562374586835550833861e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-87591825036885332284936.419874', '-32.76607', '2.673247815099135547379848113429532440112592080771358908773618563349221e+21'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-13.99194714219043', '-175351498463913.6829', '7.9793712997952459641116235509868042e-14'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('1384130089.28691', '526.0', '2631426.0252602851711026615969581749049429657794676806083650190114068441064638783269961977186311787'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-0.00000000000212499939513233', '0.00000000007240682698871396301175', '-0.029348052988'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('0.000000000000555321932980958774807', '-1090.914228795737465940464197624', '-5.09042707779125620188873691494753470313655439031236863103412e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-424555921771720.35307', '-228881328.337904694108', '1854917.2396663790355361642607437525602863521420340515962001637218134916730345661451066457'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('909122084896', '40615.8', '22383458.7745655631552253064078511318255457235854027250478877678144958365956105751948749'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-275033147844970356791032348', '18663383.93413520', '-14736510207130049635.24362147911622458165648356299629041443063427770606019649246'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('0.000000000000000000912924219932977059801557750', '-31362811384.8107', '-2.9108494411796090256457433013559775679e-29'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('19195717211692613843523452327.2', '-0.00000000000009529771716949034797917020320', '-2.014289301133242718243099752615590254660068282237752019352055064398393473285901006691203161e+41'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('22839435968756335976825925.7886', '-1400.9085784802758', '-1.63033022422725535268845225997557667897899183e+22'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-1', '480.136', '-0.002082743222753553159938017561690854257960244597364080177283103120782444973924054'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-3.1', '0.00000000003102547924589', '-99917876382.5433082369631082122258715714197495324277761342970442563578079746707084557250348277224401986293001'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-64842062381.1794872', '1', '-64842062381.1794872'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-0.00000000000029', '-405.209557011440027214', '7.156790726725446209851753467534831083526943237697522179267126899e-16'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-402440.646366', '-13820.8377666858638', '29.11839739093488649489320061497376'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('-15766532924534.894137', '-44.667', '352979446225.0631145364586831441556406295475406899948507846956365997268677099'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-0.18545932128668082353226624341', '149853395295', '-1.237605066749320753401793941047987517338820934854681298464202408981526840619457317049e-12'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('180176.7022950027042', '572424114259497094664651363', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('1189180.09948269121395358871663', '2396918591.035796963342618', '0.0004961286978748838588079275731640643086904538376747322163'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-162130238.50', '-541003.9284094244115796', '300'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('23880963761.43070', '2036.1', '11728777.4477828692107460340847699032464'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('4102911461', '-3676443725.1', '-1.11600007175096906802915991681528703620194031295278590690374878764'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-1650239242655225', '-0.0000000000000050625712483330699174451284', '3.2596859613552932393129153402861586036955044336911362958043e+29'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-16182.764285316648602695', '5542940763.334796638593552', '-0.000002919526831742762543598887894075115469395923637093427826391782604223422627269491199365903503'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-2407603954205383635721882', '2143107365549', '-1123417329858.612809923082676425885742146282404083703459326'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-12339.440719898219344670280', '98703186807633789228.5882162235', '-1.25015626333798134296491858057012493610869357932089916422218620688080594916e-16'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-0.0002227041381338091297915124768', '178788347', '-1.2456300529128396147178008e-12'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-15846657355.062117827825383', '0.00000000100360520510159352655225199069', '-15789732132226220625.46707498843739636961'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-503475.661298', '-907234523646711946016951524', '5.5495646183e-22'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('0.00000000000000017380472101435825', '807.54409555459', '2.15226291630546689744062968270283888865515459033941399292092451455048343022735791e-19'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-163520122.133733234791861936', '-398865478.903', '0.409963084756'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('1', '27', '0.037037037037037037037037037037037037037037037037037037'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('2.0', '-6', '-0.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-0.0000000000136948538993685388021127209', '-21662.0815699657428', '6.3220396687806380279671599940823081571e-16'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-1261219515900192.23821', '1616867.52132244271879742628786', '-780038871.007'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('144', '939194785.95867158250614059106', '1.53322827333430905374910110906343649177622e-7'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('307988608.8312845502416975', '45749.22883141104530', '6732.10492719435955626955333667896'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('33316333.3281046085467801626', '-871263729.395801928', '-0.038239091338289261517183131434824955795926259835680146638135598'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-1157431127.9', '0.019931884955614253042634360160', '-58069326131.344346791615062099778998406644548'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-2232799206839243.258989787', '-7.404699948336398', '301538107204584.658047021668487234427606847211714'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-0.000000000000000000098180915239949553085671', '-21813.4373', '4.50093737587837901574874675986989e-24'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('4242921222328373135613', '8.2', '517429417357118675074.7560975609756097560975609756097560975609756097561'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('957.39281054', '40494.8188794629', '0.0236423531955972'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-8326808.497519433892', '0.0000000000000000000490705229500531361459202464', '-1.696906410798790393843617961526811289554079132589725760670291352160736862358530128911e+26'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('896679849158361750330.3', '-137738441622013773066', '-6.51001883424134568586497747769574199893376'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-21050443445135200327662101', '-768532967305.3', '27390423496007.17132845013217685972688586659598916714817323805142988800752181030550845753599047354108117059851'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-0.00000000000004529233557356', '467.75', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('275310.274', '11028656591', '0.0000249631740482942017103558936990751025189845808301675860930793941700674'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('541913418635146823954958', '10555.952', '51337237857385750139.34868214633791438233140885824414510410808991931755657850660935176666206894461058557295'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('1977', '0.00000000000101254320724972684330834154', '1952509271549935.9654343768254088247606354930480506393749154718487737952702538576473345627569697789893884941849'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-0.00000000000997082', '-8', '1.2463525e-12'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-0.000013245144369', '-63328467267444968862608997.2325', '2.09149927994686876280205149202082357406793140080026504433216336e-31'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('1709.084890702122', '7.79419809', '219.2765530163888867751371199753533592831741847608084079371916502060573110222298699621579671707'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-6.5', '1.5', '-4.333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-4048995142031910647.396', '0.00012553', '-3.22551990921047609925595475185214689715605831275392336493268542e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-12609.0384427562421280659598750', '-8.75296', '1440.5'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('2.01', '-0.0000000000000595060042074436702083417336851', '-33778104021116.022665217883058809681921245023337809066415008588705222492653348391126863560929443112237651681'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-4445.9329936', '-1265484694121428880022659075467', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-507.372723086674', '97275886.743106276492', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-1.4613460', '-2.61346193', '0.5591610052647677175079416595901972828814078037861450692721588640091650388035306104497186994'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('28.1', '637.1296149', '0.04410405566285033786458824989081511301131640427847894094178606670822954395366311'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('1614056018629639286992.0668255', '0.000000001995043946297100388', '8.090328143524891175220309357127449514597010377716670384132155189530961665299646362389627746812176231253071694777762390848e+29'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-0.00000000000000000336992256387394267526736', '0.00278761238', '-1.20889209276432567546114858336222484418726824566620700687231127881e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('14136588337891570845225315527', '-0.4708849', '-3.0021324399851366746364802793633858295307409517697424572332e+28'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('520122.35441667105', '-0.00106639226761502159262351', '-487740177.9927763757352981916504'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-3.1416022', '6863044.0864', '-4.57756377556350939777055021541818198861453841527227290404602113733e-7'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-73888251352624360026', '1.019027898110', '-72508565751404401485.13531259242827482906938998131567061577668036745404703294988183569388'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-0.0000000001071532', '-34215005684429.9803651097097', '3.13176040327e-24'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.0000000000000165091645065684622887738078', '-0.000000000000004445', '-3.71409775175893414820558105736782902137232845894263217097862767154105736782902137232845894263217098'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-497352.791066', '8.24', '-60358.34843033980582524271844660194174757281553398058252427184466019417475728155339805825242718446602'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-0.000000000000000000411700018405971704865', '3592139.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('10972491284.0775448', '-85621859.211271', '-128.1505842685'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-794448.75096', '27118343480723', '-2.929562240867447206618714738309475429809780153439e-8'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('0.0000000000014196195975477079', '-0.0056327275608126093185', '-2.52030580606122107857192332768599843864183422831534835001654001071604463649295551424182e-10'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('2388.932', '-174847412808.37863028', '-1.3662953e-8'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-904270784525.592260', '-1487101457806.47398128', '0.60807605276604524'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('0.000000000006956553632', '-3809761.043588211608466', '-1.826e-18'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-222097736193251.4', '0.000853', '-260372492606390855.8030480656506447831184056271981243'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-8.020357521213419800', '-7461230.62753277', '0.0000010749376237771567387552680998629257106913482717513873708676896190549587473106921'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('0.000000001487977619', '-14831757.761039625', '-1.003237541344324731681695588913489457056492e-16'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-1.3671417', '-30337609.555293895810840851705', '4.50642525907725825415613547e-8'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-0.00248871', '-5094.80', '4.8848041139985867943785820836931773573054879484965062416581612624636884666e-7'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('-1631801844.1464211', '-5209700932.1295226557917', '0.3132237081178101556075382344313959958552079808832159382810898881498933311621493119008109764054131'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('5220265', '302.896899850306429208090', '17234.4616'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('36129471206013106712004', '71316.2431811639', '506609288352918314.2438496347901928758057680753991964'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-0.04095799045794223557935162', '-0.000000000000000002045837039', '20020162738847664.1903987055539862087715384255490546918385321109635067077304977857525239575056887'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-0.000000450', '-13.2', '3.409090909090909090909090909090909090909090909090909090909e-8'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('2416468777927017', '73368843.3148534680959960', '32935898.51971681121112106262843095746474481157602212900505'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-488930153.09447753670035', '0.0000000000002014703934348232568468356', '-2.426808945765269674922705980722179029088081494676722957929097356899777219475532993398117558416e+21'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('-0.00013449517476975725317177', '-4009.66', '3.3542787859758e-8'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-2370941814.13', '3869939744', '-0.6127'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('151634267.9959408', '-179885280374841901657094', '-8.4294983825228990180837395136e-16'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-5834723.5', '222042932132762145245.30724696', '-2.6277456543905430404066e-14'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-5182977179047885.6995271', '-1', '5182977179047885.6995271'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('-275.960627353502935065449', '7', '-39.4229467647861335807784285714285714285714285714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('435232.77562', '-0.00001546518685876415454550044', '-28142742767.66029'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('17152565.5962872563', '9', '1905840.6'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-3', '-11463015244953733454402.43478205', '2.6171124576674228049372733594758776085978e-22'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('96048852.6731', '-2147476359.33', '-0.045'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('802308719785992.83478970621274', '-0.000000000000023838730872', '-3.365568092084767400824349609025612561141715464054675e+28'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-2469405771867598621970691794', '13208274832082.460244615114', '-186958993756663.37116178820599078371359019473821063140433284377352248576527'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('63.875123211938', '150998.71801786282', '0.000423017652404053601423846679595081615559116'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('5968.9052418179', '12.4', '481.36332595305645161290322580645161290322580645161290322580645161290322581'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-10092373627843.309', '125661719213560584', '-0.00008'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-9.640758704116', '-114294011941961818265', '1e-7'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-874445.630645176011', '121870243724375', '-7.175218526869000257915855129395306454293973034671008927176e-9'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('95.70', '-18563880782489325261705682133', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('1.430642138666652442526502557', '-392019049568.976', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-113338383169.0552034434911870', '0.00003773', '-3003932763558314'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-274727599727.7349315563', '2.473802773', '-111054770706.14268066240056720964796169706613874832130766634887267142698768411478'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('-0.000000000723177006176790642200537', '-0.0000043772648152855214738319769525', '0.00016521207573538569355249974275710762198470322975315'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('0.0000000000000012036205956083601262', '70088335.8944243480092127517', '1.717290873365007784367132876526666300424035651543339613e-23'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0', '2694365.37496980120960923', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-0.0000128808548871', '-113150287338.889039', '1.138384637815e-16'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('64959579', '-2844.3362', '-22838.221093554271116051611620314082421058382620169865995447373626226041773824064820467'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('8.3', '0.0002226690599953', '37275.0484516133167657984570860417'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-20396012735836189340289863', '0.0000000000000038055713585863487623676850269', '-5.3595139373270543140990778099093060551778324027594486634088540722918075417253512422242403145808377511038296551680862e+39'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-6499564679968251157540869.3', '396.03513', '-1.6411586214506402897997632937259e+22'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('3049042776', '1223454.64540264', '2492.15840362971309031446140883774670563743674081366740871606642562100290557804812625322511'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-82746934.447', '-0.000014525734132830', '5696575036436.984038815209622'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('0.000001758411398963638209852', '-1.243591206900', '-0.0000014139786363936843705034081'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-182.6601', '1.1', '-166.0546363636363636363636363636363636'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('32957180677.86684', '-793.4', '-41539174.0331066801109150491555331484749180741114192084698764809679858835391983866901941013360222'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('-2105395842137873185470341604', '914113.92100030522648107434', '-2.303209472878348370484730710269503799585183184090941166581925825770069246561308502688099882363764773e+21'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('384433.68', '-837936819000580187.4041483', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-44924.680363662327413', '1427815449.49888665769', '-0.0000314639265035473042299610791394'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('4.2', '469161809505184788566', '8.952135307922127e-21'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('-2.446', '0.000000000000001926000337', '-1269989393568834.0432517795556335876175913670154253976124823492177820942925411336519407888348671664848'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1798391642460647981.97', '-85.801', '20960031263745737.019032412209647'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('497190320699.5', '513392304.6658800203726', '968.4413190086197216716997847'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-214020470807', '558884.0577', '-382942.52243974859760971134961755055980728147365080941724632772612365035081586654462196158'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('0.0000000000000005509', '-0.0119736313841', '-4.600943375721e-14'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('223526700163168.46486200', '-1', '-223526700163168.464862'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-25286459726182070311791.909', '433.7360740475', '-58299185240038067511.28129774424559013541570090517247178984773028120836638467521748428037638736196547396310559'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-3.84', '-230672031462873433.0153', '1.66470116712786066303352770626517164690855571283072395514036e-17'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('632950152864580.65806833710', '1011836402.79441682522548', '625545.93916224456910414210535241390621121167829557801534106250932338'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('0.0000049339291', '-0.000224984438551534164275604594713', '-0.0219300905065478611457684694214449309434783552017018631671257490485809082'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-338.94738367925637130', '-0.00000000000000108308163937159066800236', '312947215942018297'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('0.000000235260614812120582298055', '-0.0000001110910457371282365718838359', '-2.11772797034255549563416'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-0.0000000000000000107107322284477584466235196', '-2391721641165.67102534484', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-0.0000000000000005398629480878534175959', '-0.000000000000000136008', '3.96934700964541363446194341509322981001117581318745956120229'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('9252954275750', '779920382572.108232331', '11.8639728907129951645131952586665510691059605616223'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('18551323.658736281693135', '0.000000000000000001083710261119958768495433103', '1.71183427197269901846890303728930083400789583517718237462254164308070293413156940798718e+25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('99120792392919606582512779054', '4537894940425.523', '21842901542278753.061995238086054191528706471608646417028260674251502929926905209213308388020971982838402146645258077'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-0.018317364097', '9108893695511350715.938', '-2.01093181118431183740457551868150570844544523605691148485e-21'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('0', '3.99909', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('47249329.6203246', '0.0000000000000000931583884570847', '5.071935056292967267476182009888681080061574005814478713655830342537044378983434440124388626884310855e+23'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-6632917305.13784346', '64275', '-103195.913'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('0', '-1.1479982', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('23.0967232', '384787.39531594', '0.0000600246356329728956379107568015799360998008653288367583039130337974343366992013749911280684891016'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-4415.59578', '-5372410.269367', '0.0008219021926112623725445542'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('19316731927846138142235063', '159905027625861', '120801279450.9664076025188136923298399099407554218077763806134954509770172738601456973870831070721922'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('46.5509916352', '-224.72783911451', '-0.207143858182518974872177506176201666620231893723310558999073'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-0.00000000190', '10283106', '-1.84769076580558442e-16'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('6320896863', '-96.36193239591436266848', '-65595372.6314853240033007239640504363062001768345687037728328017566'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('301.78', '27385431970323599.982109011039', '1.101972758096442823253204778745779442886349569482e-14'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('0', '0.000000006392962922861835147', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('2679177081032425767', '-27531764737796501802392', '-0.000097312217598400597951764759122021435057787'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('-22441668653796507212372.4', '19207705157', '-1168368030973.12908281291981516644435235069659185939366926320421547899336072675222604157553'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('133549443521931581.906855', '146203567577896984.3', '0.9134485959159422766611615024730449619301718162748067575802409439785938547408037424'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-1973.3', '-7209198961380.383', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-4358138915031470322954690950878.886329', '18029764583.0320924329653395024835', '-241719124781747737817.71414364474833657361287091699324842760959752'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-0.0000214327748810414114303341654806744', '-0.000000017085379167844184125664', '1254.45122818107041'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('1540.1', '-1425597386989588797745164.9723', '-1.08031903962184199768125145492905743065463781105236977988615625182125023686e-21'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-0.00000000000000077789825931627563318456329252077008249901827', '-11488403098437.659253590452', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-0.00000000000000615479882', '-1.4311', '4.30074685207183285584515407728320872056460066e-15'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('185.078', '-21444991541014268320202.565818494950093203880961480246', '-8.630360130757435548395346186973954342934428993977502062613538763e-21'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-8403047783.120864544336509023524769', '-0.000000000000000078190', '1.07469596919310200081039890312377145415014707763141066632561708658396214349661081979792812380099757e+26'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('4473003396718403421919082.611713344497', '-38417.45740577489', '-116431531360168154589.5997046763279826'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-277824796039913334543271479781483132162831479540.0755025060', '0.095719943083002968965774929987', '-2.90247556665385023432767761396065649281824544931592998896986675081931625237505184e+48'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('0.00000000000480152428506069103957', '8069769.20434799655998859066255015933021758352308471341', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-5340545366390612877073.2853', '-1040.695', '5131710411206561842.877389917314871311959796097800027865993398642253494059258476306698889'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('128346487385118982217601527756330318.32681', '-79533315369210789756297.5093144498895602545561685358154358', '-1613744966990.3351'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('0.000000006632234145795642791822618250723750481', '183815.968207832561239237830808792285843424648628102963133314', '3.6080837864406153478491135463736e-14'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('119187872518674.60527655439323732477', '988901492413169302830866500425857795341646.4908639', '1.21e-28'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-2106863123095.357296277145943882664823531441361779337', '-0.000001780807017292321314224', '1183094576019133877.30319497876236979272050322057698912933377664141368828772347'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('2', '-12532644992723.506915213853468150635', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-2045474499442314493533914694359611192421769290', '-79.7801143293890064538106805679656', '2.56389015813783140881031622900806078899721203732113311997893479064590200658081902329139876513933329019112731810687326191885e+43'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('167818325272.44229267', '3604.93', '46552450.469896029234964340500370326192186810839600214151176305781249566565786298208286984768081488406154905'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-15043187989467552228909212', '-0.0000001256248795877713296556543872376', '1.197468848434374731008452641095000047995170305648878285566e+32'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('7998870000070061263277', '-26543843297186440621735904979552147897363942278950', '-3.01345585509763575250102538326648638249839863370004343453062e-28'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('186931322330723238889.9', '-8437975.1', '-22153575960507.7809354877096046419952104385802228783538363368718639617696904557113471453595543319391876'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('0.000033260133387301381636134255123645581044625132783663', '0.00000000091', '36549.5971289026172'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('1.7465938', '193', '0.00904970880829015544041450777202072538860103626'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-0.000000022616261038169584', '79255422813879639941760997747.1367068030864', '-2.853591620005704086326498760681941494986556861849305029108030768e-37'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('63925969210016.171616618421', '-0.000000000000000001998952851878522909618298952831777425008911426', '-3.19797283612474997830213615498823898997462341033957771240421614362e+31'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.000000000000000000107951584872217583243487104532878733600748082262', '4.7584', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('287879454865962605748634828463.143352997052678922433', '0.0000011099839415495924789496834394776605568026699033157532725166', '2.593546123415701393690678024535080924566944608085602841986648129658557077697497509144729455581093725286069074168844031180128663e+35'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('421290769878188.44965397506247576163716334347466036131', '-695290179.98023799179742953756', '-605920.79'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-50.588764102894', '-1469737395263449361661861746995530.7961293255083413748731405', '3.4420274170016610853e-32'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('71825729291974748475', '-3487925170402093447966915709296985344.79514361227346', '-2.059268068635043752814904577559487216735436672e-17'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-195599191873495.035306732143', '94922439367019975.93898951447276490022725129864755659', '-0.002060621210093494209086288239396527883002832627329896345270729976350454248118360433421084167526'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-8298636455267829969272001790569', '12441338.5', '-6.670211935209246150863913710384939691175511380869510141533404946742668e+23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('193672718244911748316310.95', '32025627598640491403990244863864935493862070264684993094', '6.04742928607379673691357771393506072163e-33'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('34211916252046207724173639367665.73', '2213017876522886287744383245.8137737', '15459.394438241176844242330642075713842374671533599'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-51102698466952108661987108352168504578549351669673607306504.8', '-426105160328610268743577', '1.1992978077886207989099912552560016492808203461057166111391637632e+35'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-0.000101118126658365675783246638377813', '48187783117573989816933123531631999309', '-2.0984183151079239767283259802182599811803883e-42'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-18339345307912384963.705031044423259760626683581224957714636', '1.25501030272431063608661224912151589098512453059762475047532', '-14612904187401724640.7077'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('11733626597810620260900194913480892214.83238408124932480450', '0.000000000000000000012593148030063312136', '9.31746896788572839054694954351994165865763815272869861443498428106859e+56'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('647049772487082769486131722793669960.55', '0.0000000000000001061070889473924760124131290400487265681320705654955', '6.0980824081215514832347135028491060346583271458502108696485040787360284799746369844016534098242406e+51'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.000000436698220827227894615051167309259870460497230915', '-0.0000000005841497117', '-747.5792799012827016260447592193168764693190396639204572597240913779945977503081938095562360610508541'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-37513654565218568136965757801.924083043009620922', '-15865721697985590918663290533489768.90', '0.000002364446778994083275827835226151'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-0.98347293041966760043529713', '1156.5', '-0.000850387315537974578845911915261565067012537829658452226545611759619541720709035884133'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('125176113754065635.8920', '4', '31294028438516408.973'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('7760475.985296', '613572764342975.528571424937', '1.26480124873307466949099359027788016239202160901478534560952858567398389820628355e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('342098206914085968453220098514855365282100070', '-5165030720317219514520097.3608', '-66233528015313605114.67568754858297559280470661979590349532852678391'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-139498.75765393143263357632022519885624816', '-5831567121073581992795421673.6', '2.3921315618545077972373650801742926030882156512774998442153565319318e-23'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-38429863125.34', '3781400327394870', '-0.000010162865551930489712339099696515327376718924337987713498883079662540061533572931830509691604'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('444068824966018.962300196359416176247976643926867420059834210', '1891413422', '234781.4707249227516057017593777952200535055349033153153939128597343748785134718156821877517584836087729'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('0', '0.000002513915127705055306056640528958850699699738670', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('0.0000838632325862484536350098267314013808462051735760', '337423.030731', '2.4854033349343543578311333157652438e-10'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('0.0004131749462', '0.00313847736137418425513550014648', '0.13164821619713423520927479472893363477634355087719536919245876347954531603582571976295'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('43858700.0293363960939216', '-2599614823572595448893772454340010230040671331440', '-1.687123e-41'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-904125891989.3', '-4990657690680025.468181105292963130180267545', '0.0001811636758172656972061239309710892703790054'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('0.000000093168465371689914647', '-0.0000000000005411225', '-172176.2916376419658155038831318232008463887567048126810472674856432693151735512753581675129015'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('0.000000000000000000028554140680060', '-101.2780662948661400', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-246157.99057958574881562217581994144426', '-5.345', '46053.8803703621606764494248493809998615528531337698783910196445275958841'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-1886816427992533234539229418864549307215.4784746048900326', '122.037427', '-1.546096533150058329678836492402080311981240373582188054980870745496789275965315132381478347621996324127679289731337911606412351e+37'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-53819387.67776846439676506538154669384035465454678811', '5665364.9440479410496592303761', '-9.4997212376073610606159188035294123164780013803617164013005984101222925367506692183964840995107'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.00005686363033975136662906365093969614774037009988694265', '-48200077251340376', '-1.179741477243588224057499806813833527192369820508921489528640410001657395306e-21'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('0.0000000000122869862436239838756718951003949613429845', '7.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-1347317275008.10206071427330257630227482457494766279', '69000.23', '-19526272.23138389626692944795367062218234018854231051113887591389188122996'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-9727252508944082022316065757779070333921212.85', '188085887081717930385302.7678711814739', '-51717078085278505960.5'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-0.0000000014742345745628408588118699794934331774364407395001734612', '-7481382.0977534045', '1.9705377366109144191110042861992342302928651539163664891404646115927920142340563e-16'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-104698165188516.36027213667980567646491', '-2172843537871425077764953721938488541.89', '4.8184862e-23'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('0.0000000000002645228752463466030700107177183293746878390282', '-452775.4895417327493755177358', '-5.842252536993067001665276434092777724611662996157773525922966398679141919241e-19'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('1602367518942292542112439723694.951758582993078837518540', '1638319886465.5249043202490238215560676918', '978055343269503244.018485844692995577857027'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-12949514164.3046335907044971050036463576514259298838238', '-212.231913361', '61015866.837509520363054731'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('733141709040640273329828977521564929309588005225.7', '50303.79', '1.45742837476190218138599293914348189134374965628971494990735290521847359811258754062069677e+43'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('12077750.6291575370577220', '0.000000000000000000252514056706', '4.78300130563407046138669704097973813017484016848774090044181510548497361876603267245915583108702662972e+25'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-1679818566679125024187586427946214017262.883222815', '349473839348.02797698', '-4.806707620269843131722151256967209072971614676290512684832283825e+27'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('0.08029436596716315538113734732561036194186232269297000990', '0.000000000000000006851154249897162642328142839821636418768119346', '11719830416658388.88002685923929076'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-1026768618795574006.2846223162551677285190094', '-27738938919837948725957689635733986', '3.70154252029180503021913367026524596e-17'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.00000031340912183197', '0.00001876658699629442685518077130407260330656', '-0.0167003793440892836404270533895010391668087118954482824834223019831457212942'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-67756988833335965947898002.397023603751040399832629502236', '0.0136674856433809637223379039', '-4.95753137053047104805901743778895648014262824267606598269739554490371038184499242988205724609842894078111956417934304762162392e+27'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('0.000000366237795258926865181761033018233240088862403534465', '199511031389040045529', '1.8356769182590963269880941397590613649631186609371410182487e-27'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-95114948561513352172', '1492872272.5581130', '-63712716961.732447911884465826'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('1.9', '-13680157281285098755672610111559871101171', '-1.388872920780861164025823e-40'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('-23438535109854009568518651705670252727680354016246612', '1', '-2.3438535109854009568518651705670252727680354016246612e+52'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-0.0000000000239', '-10701397.52331632160190', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('21975460381002361.83687232309627337826198946029615', '0.000000056642789', '3.8796571936107104183857053889548726603115288507686300545688172240247562668569e+23'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('16850767091655686029451426.7130603982866', '-30034629512168694102403019.8476595706860421725434916421523', '-0.561044613013405267938804354742942797338932661092870945282555616957947634505421502503'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-0.0000000000000960007504494707406733732011306869108413764', '10.407', '-9.2246325021111502520777554656e-15'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('0.00000000000000000757362633437637', '209261111569596898740570182929.88161793119', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-2612640565385626022001698972052921169.999233419551243289', '560104404385.626664333997', '-4.66455993726992250681589081531779854598501528974818146e+24'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('157481998763563933.576298867885808342438534417952771481891', '-17365225068071338577270941492358476226826704', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('2546388402471796199060769918930023442003.845194', '-162325117491540253127.367180925181780016674989346', '-15686964789072177633.7308021600152706'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-6.7', '107334.87832289565536386490138297725435040159', '-0.000062421461734408280638263949652154880714318776'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-38.5560487133305685938268557071730315816087', '-222170.78', '0.0001735423925'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-7228207240915961811063423227702494933547823017955', '-210608526491.7123296', '3.432058217833074998553556902534721687588631411359151918877469887845134363144530332419641020364369812269208316728796232274038864052587e+37'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('7087077732911514990421.718491155248900', '0.000000000054212903555214315260270041468711838687704671209666463489976', '1.3072676924034378532462856132938590938744655957106487796637555435091072405316658044229e+32'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-288036.80', '-3672.50405', '78.43062827936159798108323393135536501314409714537959461201955652029845957555853478228295'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('2782501838850655112.13235120', '0.00000000000042475914269995684999136', '6.550775625837842096570379023636036657744290078928999172875994347834566697861822510732512112e+30'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('2085966385769.6822146429426148124599816822567195055374861885', '-22668740650478182.1330389830836733875708845803617129', '-0.00009201951'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('455749240058.432717871764', '213.285963473032811', '2136799030.9219583556592241253006390014049940692494738'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('50.3693', '3241719836350468739346937.216525', '1.553783255270628371879735301438597473641575332591253120094778e-23'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('0.0000003390997721026708632209297630764385534425751', '80609843.11345', '4.2066794699677e-15'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2219589450028777558675949700.28245589983487', '1199614667413307000681332845525', '-0.0018502520103516335631572514110011223624779207645650784747900292773'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('69265035793457102886394984752176.561556505', '749235603622.5025904992719110654932593467136994978363', '92447603208610777141'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('986426', '18586275440565367354374527', '5.307281725993803316392399815614888085176102744474073229243384378909257740310466e-20'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('0', '-290816038635.723038753', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-0.00000000000000000132916584702643508382547848857588943508525233140219000', '20155284063.95184432', '-6.5946272094655146379665613405234206222864897459e-29'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('952063481.98599187118379776', '-4232866339274352925.490937701343567028706315', '-2.249216974210448711950095436068575112528955438753532238294e-10'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('285292430610904911895206', '77527243764697.175429459855502609228198', '3679899049.12388672411083524731437191683055664146980717875672125221546893380027765641035958262393785'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('0.0000000049141233322', '-119732610266833732648839394753', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-104156583', '333240.6552807296694373304883172766968807443129', '-312.55665042506915864071589114922215519462865919862581560781657669877652'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('-775.5672039409328626401114303362741', '-0.00000016693416752333222447217245221195848', '4645946455.704058'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-1042543329667310875144385693.47870820', '-133302423882869890929240172948256058069482.13942800', '7.820888e-15'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-0.0000005594168136250496551943633409366356584941233836', '-155333163.57129', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('677741.0', '0.000000000000048545611388960621791794106024302515629563001129689242', '13960911823104977636.4886632915329065906279945487485181517422914'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-14246783475672473094374', '-149283577.5840', '95434365294842.8731861493515746127832964917135851376288115043275931248129565860364757588485313212481351'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0', '0.0000000000000001207848168046516341108', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-11.7', '-74647750.91858573128961021604743782694040686036489112681', '1.6e-7'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-7.34', '9698682311027857455398833030730471.224716275', '-7.568038383579257100616746e-34'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-37882578334427751786191262.1476669652295625176504114442012', '2720147194985163.7780019', '-13926664852.647568168691796876660485205133557051303933672373585206310547581627923'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('1784297', '-60643972817184956177051299.216334', '-2.94224952144687939890351676962907764881403e-20'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('0.0000000000000610073339077686555597847598696588553729496062', '0.0000048710639217445150719', '1.2524437143070704396881275046e-8'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-19575885010043762585.63479', '3734076.4363074380470778410612747870', '-5242497132544.508926971018355016520670701306627656808444557852280137119362113687811956'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('301294982924.2953454775741211743365342540', '-19106697449406581306347.7847967800301', '-1.5769076980577457698713369968322206617602949168949e-11'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('0', '-69919.3263764630460591434529218712320080435258723093898298', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('0.0000000000000230003592864206349802178664690183622903390185298', '2840738519640.265058610', '8.09661259823845717370098303790512562658009194223844875415776022496483e-27'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-44.02944567871767', '1636041557975908022265540917066623362361723537410', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-6', '-18722872007463096014328377948433835478279841645621014', '3.2046365523453607822e-52'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-4593464186153780906583342.5527540561004903434686', '25781719737565225271673922242095', '-1.78167485835356404293325963720725819910427821e-7'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-3363720.8930635', '0.228577321666', '-14715899.4975827498416165644249692124660543400874306751620873636105386668495482448943430783335128'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('38128866863866491251', '-0.00024252108819812315909452383049', '-1.572187686735011354247874527909662003073945e+23'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-33176721817409588820003', '0.00000000000000028786703467057093436292344521684978816952674271926', '-1.152501600448149311646257647082077178772297210692101489433777607983496766321758013882645200002485188315714675666279583461034e+38'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-883', '-12752496287481.24135354', '6.924134538794696151120500756281595757849e-11'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-29.1419953', '1889484740363126046982459976594.076085275754965390', '-1.542324988261055e-29'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-3341584032814423339321004883614949822747200.2985143717692', '0.001227', '-2.7233773698569057370179338904767317218803588414950055168704156479217603911980440097799511002444987775061124694376528117359413202933985330073e+45'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-3874880850169314237450658694725279481210339682732447536', '-2680406.51', '1.44563178596716444978737896541121274966995199647252294429026737440657835143073130351410764183e+48'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0.00000000060223997248190123283043885606751', '786.6994', '7.655e-13'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('-0.00000000001441891961132955720389216634310873951090606763736348', '0.000267', '-5.4003444237189352823566166079058949479048942462035505618e-8'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('1313524088747.8', '5535335650070248.726249801889459975', '0.00024'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('30060859029542.3848692854', '-55375941130.729183', '-542.850530676778540030474685565763103760275544100911084559401425971353455'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-0.000827100719268175671086830191340355899274', '154.278743238288983774258', '-0.000005361080223415414479471738'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('0.4765257815828847644182356988704735378797', '0.0000016095806197307715196711016292844', '296055.864329797556126269465789748940552603559236172'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('2383839881.66464', '1.676805832', '1421655290.1783084924289552447119589932342267759956121144979414646978637178308668955058835'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('0.000000000000000050606645897867672442972574275031289410912', '2693549667313129709978520437039434348086562053.82187', '1e-53'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-0.7258504577695793943509193554861614365708806', '2.524314960434057069225409849542066825947300924443437', '-0.287543539196380268036218735171571647050319839346168576535269068687'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-0.000000000000028885584156185150', '77.5', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-0.06711879785767251358135011891', '2385212433376839016587.586621319136168265', '-2.813e-23'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('0.000000000000000000083432058951516992373882110712631865853005711342023601', '955440228312237.9699983760968458', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('-159860539866213251269608', '476291877008672', '-335635662.8843002896752642873393704929807001077300996436388197649030326733847717933186739168519148601668'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('3.4055961543833163031955623902412873943633179220658580', '-5638173.314118741444977300', '-6.040247372061527821806277144762792364021425249203651092590971694125336372532672131595112108e-7'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-3493556180375848730.848130393358438160491', '718685222018.797305232950026805146', '-4861038.00849334051793473'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('23.485', '-0.000000000000066598986405042017256663698275584502078182', '-352632994399776.9064690649941293302469561880937591761458806724536981375061501064450685308282170615944879'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-822.90', '76092.60', '-0.01081446'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('0.000000000015084', '-0.000001912385433146559342084020', '-0.0000078875313200756892604204464311476238462'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('9483186004328519.899267358722553159293541088', '-320.45595501616058746075866630772838', '-29592790696775.42118699025'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('0.0000000534', '-38740477182.330224274977499027165728234634799426529061021', '-1.3784032589138080220562463869113934987094771722083508684729812045379072e-18'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-0.0001954657197300273066647138944844914845862509008372575236777', '168060.67886884789467094219584088427984858277529', '-1.163066e-9'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('1150344439.958156697', '-0.0001115798448123750060997401563155120021006060102', '-10309607813960.45854166944088515213012733315983456349573700908178034971170409565162'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('0.0059295', '-6327267465345.7543737378793777186620446106878506104333', '-9.371344000353526516217144486032579896762423824055952274964299224467874251e-16'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('609963081962334114.937377417886308919172152824323657593', '-0.0000000034870603144043430699562858194', '-1.7492186167319779613825396256986094509717728289296461637619523489196444381147883e+26'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-0.0000031852353441801206076222381975926616222634740191', '2.9856013', '-0.0000010668656073334777177455804959'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-1488864252921831.25831536732717807799329136', '6474156.733', '-229970375.18922099569679468'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('625084489642715799565494363.417748488859', '0.000230873', '2.707481990716609562683788764462490151983991198624351916421582428434680538651119879760734256495995633963261186886296795207754913e+30'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('256770123819.9', '22412746815438521661854347587580733.8915585015437419311582674', '1.14564326244487630922539542203993e-23'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-0.049911992', '-62810718780308357014459144405688282702', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('443180719833539342827985492522430618.63430974702278297928', '-0.00000000000000525611979007928380995849101', '-8.431708894268834058898041333257166278406932019074937028707916277144897108740020410537475905778879362684282621457193747163618998932277384997601111814e+49'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-0.00000000000000003450293376086498436791378576700539008489930', '2033.857978436912', '-1.69642787877360271584343942176475323384052341883641062769887571758013322426814447e-20'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('10723887443064792481210151761395366824', '-226.3479643498394316073', '-4.737788331283660546772318293399771486485754243656984350212254100827492754718091434214376133324e+34'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('0.000000000000000372899189091300451367945878036123625876735470022169309329', '23254426481409060097', '1.60356218e-35'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('57446960.7020586268901672397015', '13924561060097769201834626.56987437985184', '4.12558503310231250724824967455819889067e-18'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('0.00000000000000545056475271835430103855248600970440971406246221470171825', '0.00000004298708852646016198291685535720397', '1.268e-7'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('22261699938052229573323683185837366581633512', '0.000000000000014887331841', '1.4953451817835535257028387472374987937661241254520108738671058685914865810775e+57'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-12758219415.0261496467012388529078170409549623267451973', '6.0183243288', '-2119895625.095037773880704794379976991736989807066377406164093'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('3298265783586490569932640', '-5219021966096084567874.4', '-631.9700903756970309117387678067401491846779965274936773895436458197783981034864011295595793733798'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-3.1', '-4507.08745151922', '0.0006878056024750688990088'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-42971.695', '0.000000000000000000017659192036373461', '-2.4333896427135056197903261465912904582316910976355800931381818188432390339e+24'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('179160.757624028179', '-7163360.4386559665142872334563278482982880917873', '-0.02501071377858007321212'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('1677504.411824', '-14646872.6189014099162', '-0.114529869650072875358731469381513318575548167143459977572541'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-0.00000000000000782882328973611235818109', '-4788.62', '1.6348808821197155669443576646298933722032652413430174e-18'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-398596073931934968473113250377', '-1127648875665298404515191860194593', '0.000353475343729464002040920603210655494527390322158152328576373824293514'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('0.0000000000000000001826692980', '-1085386369186475721916.07909005', '-1e-10'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('9.94377259201165', '-0.00000000000000000003785930736782844700997577207618252837298333870663517930597', '-262650673859435951327.9002827234361612178385404817872748226720771470032061529620073091462587522075'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('0.00031338426831763587995996978365091836671439981903', '-1.9710177424701826837705881355', '-0.00015899616810393918561267830219250011019280978988464367850746121454599170133872951957'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('365.622', '0.000030469303056299', '11999683.72510620954999349701386067517253866452'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('15.5497', '3270.25410', '0.004754890453313704277597266830121855057073393776955'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-870200101503721383.51965', '-884576667833211780595521295660709623938837953807417017', '9.8374751804758078968275622511295837083002249e-37'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-8627201481634031472775639.02', '-35.88954583151', '2.40382018823419996015933836240912383462062392472807889733222073668766587140736811419758426482048485e+23'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('27166159113573153158218.135032422640', '-0.0000000000000004254856686581243705034381532416', '-6.384741276774007537705363563056955219895020671530279717600122039908e+37'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('1.15', '-22864397113383806966051253809220365902.8247924106561', '-5.0296537201361012708975757086664320480315e-38'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('0.0000002333144399314152774599452', '11886.0084271', '1.96293348908839995365465846851990744875382286779903338135333939066e-11'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-1.4', '-526030357.89775934608923525372', '2.661443353944427117747712072585784816383e-9'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-78185011.374385749', '-1177.93747', '66374.5006552731097008061047586846863781'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('0', '2', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-0.000019691624801077', '789724640172607638117.14615891967744780537294852202576', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-10398074866566369874729479404758795484097', '39097018415729345107193924086732344183', '-265.9556991'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('13471.08', '342569337268989267429289.929240095140092421818', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('504855661348378460.56691121741008042', '2674583057855000818082.15776502', '0.0001887605097421313958154576626856770256389188979522609360577817944863888582115807348244806395'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('1252955516184.1', '9179631108025347.69919', '0.000136493013873803284442700977622413'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('100572331', '21381655.21', '4.7036737807353315749'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-0.680', '0.0001023962933734199876112', '-6640.8653828920167158084148'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('1408586402592570871877536736630', '-71282669808626854262807002933.430075394538', '-19.76057304'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-0.0304672086581822723', '-2304150208926492958299207311692957050618117750642287631', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-3257773.73321142551666', '-136126208859759763315457882399157905817562572941969190802199', '2.4e-53'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-3388911005216920030200707342267.687215707301269933121655158', '-2.24042737441029', '1.51261810310138977469895800853862078119029023683878514951826991960514629682667166245531906432205873462930761431097e+30'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('0.000000138115063695530081270314206', '-2205711745203109613847465751461780.624840399490493415533725', '-6.2617005143984471794719823e-41'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('23898689430389996578244006638947272744264', '92111697653220', '2.5945335977155944600896827812182218409815327692208641481173354255626639178513525332308175610201313823414824115e+26'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('0.00053276620201795190372807960271', '-0.000000000000000794688709486483208304658286', '-670408671544.1295421'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('1026342337656.16111542877485828326751384551678666163', '0.00000004973324483282952402954896455', '20636946998050285431.20023096195027233273768104632097760012933667433149392'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('540050869173895773.424426904326491781543129896', '0.00000000000895989186388639422064025633565887849312514138243985430933', '6.02742619417781935328562300720637989e+28'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-5938.622', '-0.000000000000000441470800918077672', '13451902113684776033.876762578582838722193971530567149367030921794691694'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-643016680179.5574', '-41351.26558819809954910396212183376711', '15550108.83060077939716915940438899056254498339925880611745634521459682866865543956545201310119290772247'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('377183841614474999303.1509', '-0.00000000000001682510837897453705285405430455679857552360', '-2.241791453098881851047931346403699546189986296210130328376566971094795027618e+34'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-0.00000000000000002874771492599091839043765095450703', '-0.0000000000000000000246053412697581', '1168.352619490960748177930651375650333524830229500802060304699'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-75466375201925192885078218', '328284.032518165', '-229881345806087593488.150042339594309939217861167079783424739050426'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-0.0000000000000001458387757541566650923346531455358076529363209321880949', '1039660724', '-1.5e-25'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.00000000000000000007201433211365864812050676168861631569', '21.058', '3.419808724174121384770954586789643636147783e-21'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('35406333.65425365444', '-47699.2054027416103', '-742.2835109160665875778372905140836839307704'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('1.6467243', '3179202137271953.999867', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('12368559.7655645946606078', '-0.0000000000005370318077131559312937260277689894299333665170817913498754', '-23031335552047964835.06745434814525'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('952970053130035362789358', '39364146300133649626004.62', '24.209087271042883694639401133946545862495050075765185744384807962419660137722883439104580538'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-1175.74452217080906238136', '0.000000000000008317103', '-141364670146661531.3506830443'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-281353421116', '-0.0000000000006597704686962552218738218482173745099707', '4.264413678168571358888074134658601474658911119122815649281448043676121e+23'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-7219523920097563556181232937078301106', '215954011203925463555412484', '-33430839648.91100857455429422938'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('0.000000717658856646399090862400533683857748886352', '69542205782774637283441456525902695.499720262', '1.031975975694692007919534912528e-41'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-38203019.354', '0.0048211569639252', '-7924035587.27873807137229096192908092256676321999293319188756273871716857316078129027130891822842835'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('10128234086168280925890886.599484735363522626588600146237', '-4119282794.3125357366762010270654', '-2458737258862698.433468855443166152443838'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('14640184250369871388.37100702916569398015738844', '58551322848286248848067253369539620977', '2.50040196159263685407381621606e-19'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-1083681003608604033643548194.9', '119169682', '-9093596503921224138.565278666263454491722147920139620746827200562639749261057859'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('592117874017678.813255527048431677933', '466.7', '1268733391938.4589956192994395364858217270194'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-23896667170068568476530969283941478707269695211', '-133610708633921647146034.10074', '1.788529333793353026151379363557258505368398116073368544502305595e+23'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('282898292487160910703267277995106619021883676929.924460161023', '-11447661789031355856845201.0', '-2.4712320970053602157884087934365549564e+22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-717.80255046097476806353285702027141354262687', '160415502.003776', '-0.00000447464578856025090122480400689234232245586'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-6430550635897275', '-1177462571585965733785194717063572810797712495968311.99218059', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('225', '-61761439784620984627142813719', '-3.64304978615518802502665622300028500429e-27'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-195.523689600', '-167064836731283986153984192206479814829949537.24391580755046', '1.1703461567708036255855243452084423e-42'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('3.436', '-12508626406010003696850920561737979.2585', '-2.746904327040345120515529643732939778083475753e-34'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('2590425', '0.0000000001145676379294', '22610442589348811.10849144035124033620032882004378247455089405529415837571660141344'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-55461828684169485010301146336919649775052817.0180', '46.0169344557709809833971869110406', '-1.2052482274210689062878457286003185728949114298659930715269275094725859608915e+42'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('0.00017260', '-3404498403684126500.46767062597658852674782', '-5.069762988087276476469338e-23'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('7409154644117.49516751325896622', '-1082845369464899121.7012509556893606955212655145085607', '-0.00000684230163700918514622437948547615875283398408647133872349516'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('6636.7313333', '-12060593132402143291632525325373854980073972080517646055224', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('106818808701039.84547715905', '12221056300516916667535058613.36168150545', '8.7405545048116427685652075086113386323829650372286739937901999493e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('369.557916130845', '-419464295167825002212185870265208.5005939460325871225', '-8.81023534989997714325878006177572415183918733223705657924136e-31'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-0.0000000000645439495204991350846523292148771', '0.00000000000129208540625636', '-49.95331516629876957887408926096711789426284229436361094'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('67393774679548074617110386542143925801365009043.0', '-1092320671375326.10154520928644392601845845626436644', '-6.169779300678571750101964970468279947291743116391085444593294149e+31'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-121027988050756830025641308.712901770', '0.00000000007126382432444039853374141746443519712', '-1.69830891336615348258214639706015061247339987062220111730020833449231165027849749453333526080981186093370789e+36'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-716900765010107.762871173192', '11385355.31333073338140850097242124430921', '-62966920.6872017890686108666849470147304940347940883377290971407447194424453008882402'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('20886435275525736755660378681250732329264655953691.380', '-1.29409561', '-1.613979300611779121610680580336002556199433823416755119044102158726896538965926945691439290177330869702896218000461e+49'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-55753655909319131271843349202.87719779740851081114209443', '-0.595620028839275438430986238238468911051966405926660', '9.360607973168734289980188482140775761596e+28'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-264635918573859707596403359325208407', '0.00000000000000000354626821691974030', '-7.4623774172310156461112574889518111124548438729507108888796896579264628217596211584397426491359004312721032482e+52'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-14325912003785042.56288723129905052462976120195637437110865304', '-9245328333014.38783626694493499457870739360469', '1549.5298260666702253568344292668269177984299048155412204879714419131073'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-1129590318587195938445234016303521870520137985828073222338910', '-3061584375691766.89717249492522249842483359655', '3.689561285835750655025466114301838115877292367779690786e+44'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-0.2515867523530108605600496137267476237074174916179436763', '-33624.2135287940460156', '0.000007482308906275678793492493465395099190398868342150883'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('0.0000865195295746708088866771125640918227', '-350793020221.171183114818319924648199147182195572787046780985', '-2.466398263001960150194250624144808e-16'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('11728121459652509661793201047042821273705', '38.140', '3.0750187361438148038262194669750449065823282642894598846355532249606712113266911379129522811e+38'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-250471697245291579519203881749031751382007763935', '0.0067942570593290', '-3.686520763905687928813971718511538060840167627146529024295604290147707552102703598244620157839912540181483995022963667591995499351069442766e+49'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('0.000000000000000000570863031266464054061282093562606904320', '-3701611.051635016263', '-1.54220155306244720675e-25'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-7646.952831750430', '191750.7388509', '-0.0398796524987'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('0.88174753004373804938093158577997676', '1138199379359199839', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('1577.95001', '-131.311990094895031933441386427065', '-12.016800665801084250425314522453251647826917908228222400546877896536593396343582303'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-1577.76928710083314023631795412877045181025', '-33367026224254432.0', '4.72852832762769686802691755643196033870527710791847216953468737e-14'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-0.0005968434298289396315631121', '69959148634528.0708204079', '-8.5313135090722049543462336e-18'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-2', '-13666674315974256724.2733065', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('800659435665671863047228213619069079180548770985658357864820', '-404584339130828240814444028615465729390.83425', '-1.9789679387633612011626363783680693252755797440294456093699415572840030090901e+21'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('-14164987398.154', '-10823347.03684348814847738', '1308.743713930202596887849021949283595813370541890702664984146957681092855895340482521234041212666913913'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-66639967214576506023448799662784.8120851681881705', '-754.9709298123252579', '8.82682558799214006575456582142314590967082981674293456802399068140421957405080507458976823739558557208552135632511198767926e+28'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('28.538637614', '97', '0.294212758907216494845360824742268041237113402061855670103'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('-3374783162858941545005351458815794090250914130.81', '-31524083082565114', '1.07054126015973420268121365922315423006570122477926323459308e+29'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-555139115732.219118946044638930', '-187131353148221858197483269569454572.4282311604652091469672', '2.966574581932873225848648e-24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-3580670709933895504879211497822.62573263710180580083', '-16595562728719812263924018677556.884214647588798', '0.215'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-7800204268422.6630976051925', '-368074375459785921822.4', '2.1191924210097251919466525090900679934161001895850112367e-8'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-518296340.3117302473040625440596494724', '11318311159193499699635581642435247210015192537544895.6872939', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1642590470351481064495.9285537066231805276894804805113655417', '-0.000001970263561317', '8.336907318397089832301582143621967064206762358861678195376140345756393710412443238500950733156861452806046652283634865e+26'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('1273137748195148939370227531002272006611943859', '1305.704918253306118685731152141683286137', '9.750577870980806367967702943834873454117411899323816774306697929812313456716692452636273616285899185762960612454e+41'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-17.88551460012634842908254237071', '515674786038.35182387039160670', '-3.468370974181422339678383601951010161757125234050160394413900135489260200473e-11'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('356106374867687954731276514387594223575481513688128770487472', '-88625132888658790915827758922430992.3664431409', '-4.0181195024561513310161914962555e+24'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-1173401490784017510110594353623515417366834463178905259508', '-847245245690376328994.832121515569214422', '1.38496084428054043151887091880271091841030165137578406435475089911317967522337044269861929440531213953107883004374787689544e+36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000000000000000073121300058313275464', '-3580.489098392922289651469472184041861461942', '-2.042215408256186679e-23'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-33244142', '738.68547495917336', '-45004.461475078254309842614491013773999662579782180750564018294685172971'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.0000000000000000902384628927888', '0.0000001599435367663604175894053775880663491414991446307487060448', '-5.64189492849628538037347343e-10'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-34177.885715656428595242211188483316451607937004', '-1809517072277078470860', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('0.0000000000001879718896', '4517764177408901714386060344044.0591654085629581', '4.160728232e-44'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('115.5', '6807122973315026560401587219858615', '1e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('376994297172407832139945598036890904929033426', '-10204965.7433858333140800676996804381461', '-3.6942240341840438564156278379508523898040066862017183222916327870947875811464180204029594420804792899910987594442175569245e+37'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('148025607.8094158167800', '-3', '-49341869.26980527226'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('0.00000000001546123044543608773', '-1.817180', '-8.508364854024e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('1074121926068050591788300835971345971788', '-1241.280697206', '-8.65333625573806747854467478207570701695396166666360710889818738200113442939310149245398367179674217040520941323e+35'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('27481425', '-0.0000000000000007927277614420371368617342782703302176992806993667584', '-3.466691383433957558203400370807477727711306952957414523938106880283577564127713146679e+22'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-1.543237126110417', '-2306376.61505288494472138', '6.6911757431e-7'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('-679730843323816689711820822622001556354.34', '0.000000000000001265121816937578415255', '-5.3728489559148505645776337439770904080651370050996160957e+53'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-1530724682451909893676509078079154.73796521841838721716', '-13062681299838756592125432251864.48745668', '117.18303825347135171318882550486022006997620174963871497285797580025764747'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('0.0000000000000000002215783376893165306592038353870192152649', '-42051797263719797554394741006664.19360556448944', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-0.0000000000000000056478638069700252282277439647000544', '30458350475672388144010698070285', '-1e-12'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-14776555475031', '-3007838302135524661203586405082215746332704522551', '1e-11'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('0.000000699367831101856240231002717990963392410922923601341', '337615.7416', '2.071491e-12'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('3708413174148246392059623903.146227235281104189453143244294', '-0.0000000000000008364936396763804174385604833163', '-4.433283169472685579224523369601497080227942160571944829626681007102694489193316457249257447974620118e+42'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('20964219130028366790348745', '-5140671536036869364980193050.55', '-0.004078109053081116657293014769115691847406069818077643317121119583764646360828077134385840930539901'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-35874739427124479026757362234424342.5147902', '12.231229356', '-2.933044453910613024625663166611323784483058302974398087151690232763876560242633389794477172585528940677318455e+33'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('1247354405068407468295934441.96903978322639871', '44455128617130727159614005', '28.0587289671622058453323341248094867383557419293146599023247495460194952166'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-0.000000000000000041', '12641', '-3.24341428684439522189701e-21'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('520036441848903948696.8384700224744368744720010219', '21186194968377.84', '24546004.727375615939845100895692057616489867939937362153778422978015915361795535164155540919289791292695'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('7685267837631132.61807033', '18.95', '405555031009558.44950239208443271767810026385224274406332453825857519788918205805'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('8487131435696960347200653554092310144755975718046565506850', '-20330', '-4.174683441070811779242820243036060081040814421075536402779144121987211018199704869650762420068863748155435317265125430398426e+53'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-48593426924187279257266827298265477.13166189800', '1298.04450401437', '-3.7435871246252220784764543701337077298448e+31'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('25742557689900465549015734223240765339.6081311899470726150', '0.00000035176595320', '7.318092457704194195737682956418866218917553613300365481476619494509964985434525560559565831227807410214138939016e+43'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-80349767.383', '-76465355.365309107874047', '1.0507996333651144806823215162643809043930020540937357346717534770956776631114957608428'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-720918157553221.5534128617682451021902484', '886.1600033145472386747549', '-813530462734.4231341729303684657319385070909227361625790329315655024971349661169585714350764283432901044316'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-425033.0667115', '140765.1648264', '-3.01944779616232565360740871838743735719031853660839525144745445829071485'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-8135821509630428945348107453152546376154.882392', '-3112550578769.74862526932115118119930087124', '2.6138760812832007336319028765302859550106848231577886768202032565043118641039398178e+27'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-531742441771349578541245193675455292168000590280167.44', '-0.00764379118981424237664876316390882401565448382139252376814404', '6.9565275733843255185695016972840382847570250634685453690143785219241992913608419252525424964938194838191792911e+52'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('0.000000000000000000074590513117417027422364725169776', '-46895045444034069521.111915218063471055105338207453369993829', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('0.006792814170816870077685', '-1697052154906429529139107604360', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-523239316422658564260578461873', '2253.4675656873', '-2.32192965361395090311713280107388393931550533255997992805879404589752364696433161106599503406402106e+26'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('0.0000000000000000008950208541030132360488918888049', '-630175132180377.8', '-1.4202732040635768535863976870227615952476933245990586e-33'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-8041797', '-347.1', '23168.530682800345721694036300777873811581676750216076'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('283238368357281391325815972970092712804079971', '15751079791938020080106094367.62', '17982155642577162.80712894052764518565601791527146014173446447120250703284587996'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-0.000013912807863280215627728387074361954', '-4095279098.581868309703264', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('0.003567219', '-81547060553.4545313968434', '-4.37443e-14'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('0.000003592650064486776188', '-102623211740139453848094112274', '-3.51e-35'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('0.000000000000000066660315006768198273280034892', '8134114032937925625529010132696268541', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-2.29306986997868829082421602792545127020056551566', '-189003.758266302914163168893013258129906795171402950623', '0.0000121324035617735911'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('0.0000000000008282395016874', '177001696701294272338204603', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.00000000000000000045143442524680428467594742039178125242589041162296749748826', '48.8838659', '9.23483478e-21'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-3733417243902664198.13023941405535293221232879525416', '-959.079', '3892710865218260.64185561295164981501233196514078001916421900594215909221242462821102328379622533702'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('594177346114900.121022415301944560506449496999111928', '12525605832754558641574079217732126761911651638148', '4.743701454832002187217678631516e-35'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('4992278162383072561186288289113199.716281380410535688', '4.2', '1.18863765771025537171102102121742850387651914536564e+33'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('2822.14', '94329104.5496367223916', '0.000029918019613076763237578118406028698168774402148318896814669'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-0.0000000000000000001110503896009121755680689190900384427', '2328987821070715531750813', '-1e-12'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('153752792737', '2483.2', '61917200.68339239690721649484536'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('11.60161405461718555', '284550672.49642250544934058', '4.07716978942056307283464697962903921909474830617156492e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('189.688', '-24754517032224622831526449966562258743085549225563672714', '-1e-20'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.0007441266572355504', '3.34684614329', '-0.00022233667918300622134004329574327475866716300378990045760849570887894150933041769117684202718'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-13535294945545412124035063763.77', '154.5024977570741433787379018192789895664', '-8.76056707304958572975370146622824195219447623315167572318757036142049924888057525660130840269890650882880343977076154563e+25'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('11983453407535022649614764881696589382224754704463.8684062208', '5802376340', '2.06526648830486280550612559572387015872616678711740859025714281745468443710081721448629786740099660615946879446981889492538500183e+39'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('3178038020148431820455312016467389665739054.4576778458', '21054959864871703366821506201711538207350457986704613695', '1.509401129493816267960052581506929546499e-13'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-903599029877560268530347275265207.87', '-8225110328731212019948660254554280832763', '1.0985859079861698683e-7'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-0.000000176707618136247054976126963225805867552', '-59785395331783158900858443125.5141498726544387028', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-304719819875', '-15834235671935165309709902051659343938622588678', '1'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('851777284247449228622262256799930786281959157570022219812934', '-265201007359497920383609044818696905113.345687881993778', '-3.2118176802126827969944145846417028592839421242620132655414958e+21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('1094076851200232612485495', '45170230412955.87341467888498221131321290', '24221192612.876862966820444934376959326917921982087707316670750434'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-266009630563.5751817996772', '3', '-88669876854.525'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-9854650515088757094838236690274767247758517272568094336', '-0.00000000000000000022781292734166224423171119487999190', '4.32576440243413112255272208081733670067732321142244280276402802126595381401029065133890157642846933655514108837510716979328849339257369661938462709437434111231587e+73'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-6132.53', '9148419661.3', '-6.7033763502805478804013771877489723352e-7'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-1358616615337255527426604965418371026149417529691141', '-411131303075406997.6936', '3.304580811955510499674020126518173701108868436644291184112191274708277758126412610036977470571487191443315381609149755e+33'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-1666.62', '-41.9029412763736208', '39.7733416613334504072586922905645360163057171834688429688965737440585'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-0.45978697415761062736019244197731022477008535480011010689', '-564466415549217929918544.45405143594', '8.14551515363840256607739e-25'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-2929430205196483609917236829698354', '-0.00000012825995', '2.2839789078324789694033381657316676016168726091e+40'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-0.00000000000004940541829384556296990127644311117691929920190835131349', '1.83587', '-2.6911e-14'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('1663533737152073150809636816464535', '-78.59384606968353399', '-2.1166208556292523684841659407900603043163901831451164886205587911132360575237341769309937351851240893561863173992069e+31'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-45109676317097561400.602', '-145051085.8603397643566869612956643715100627722122277', '310991648559.8096681714427995304888806425341985867939466056887318610557801235490219056919231184'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-0.144741146637846045233543788664754684233', '38.70763164', '-0.00373934390985245113367891367752'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-213267319781136840828.81841', '3597329340433289539097389.10090419', '-0.0000592849026593292991850793512666592236518565710292148200766842011917685'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('12555.00260521758264', '259293850', '0.00004841997836'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('0', '-247824935559712858127074692451936153866797521949546499987', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-0.000000000017234737', '6363218480232.8367', '-2.70849367400148788714459129576630236022401201401e-24'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('8780588588869959337251863409776071.80424', '-0.0000000000014222373755692', '-6.1737855717340015690565505752294571901679865271128752812921622101855544823960081829660763501280574499788473773e+45'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('1202044426514841285067064.0', '145353362935017823272770950937196467165.223443222', '8.26980815746403762433534151431755002946643158949517393353190134e-15'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('0.000015383640', '3.18383325016056515707686799850106296', '0.00000483179827311125089585459680057859870112712042013390296318998786813132002765219573826189'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('45364.765582867720679', '2505216730726952225381.591530531927253863209', '1.810812e-17'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('16706416155831105738957243800950347579146352.7664272078404', '-15801636784314764426537155863046169373', '-1057258.58554187599826669137387590751139542741145195067853557546643523667385366401064'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-924707.21688529226667444411037974980141732477682106', '-224402928790739496518320930648809901676927004.4', '4.1207448667e-39'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-0.0000000006242159873954031688369074037997865246112334124', '-10264.3', '6.081427738817095845180941747608570721931679826193700495893533899048157206e-14'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('257245.160', '0.00000000001291022197451592060663879005489083638559539086089039557', '19925696127284877.2140183030202499640385557595126820061218721467'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('-0.001204285809516927', '-16890909222793486497', '7.129786760630979e-23'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-167715187686647891294529344766156.262451454123628', '-2801176082730364487.3454119660', '59873132831825.557950786942831650585385474196'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-9402008294809.218468841889988', '772569013.18863540085189714799950812258588705943569080948', '-12169.797305232540922377133862643439160080727303691466952493558'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-0.0000000000000000000519557604552289148573453', '65086901.35412863036802', '-7.982521e-28'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('71566340268678504341888350.28557064701580670', '-24.1035117', '-2.969125045321860894729640174612840626696179710610383797e+24'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('455763207112884674.0643198', '-0.00000001156426434172901828270543736814', '-3.941134460825907916686687297851e+25'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-216340160216652.167517103015371520320504576122', '27153293.0739938991521690277527954349191', '-7967363.65004111527420646201345855398721703089346456189966028029972695571949603659856337560035292534'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('72929941665984.598885280816971615', '-3288295196863.2055', '-22.17864799229535715800361709629244268816136234234377026368285173191990763390155503877219155599773926'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-208849615990706743659818282970.370397342055437315746876', '-0.00000000000000000005533218', '3.774469323108302323527073810762026678545024564652013999809875555237476636561e+48'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-8601734511522478.1611637791900687131738653313091', '0.000000001308739965094750507087269496807181975342111768527447736197871', '-6.5725313973274495964673955593556821550145738948627060769657084e+24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('4690.08177', '-153.7', '-30.5145202992843201040988939492517891997397527651268705270006506180871828'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('0.000045534097599795625379088782042993008874734445184308', '-221381645', '-2.056814493351317602644464135361945154700356e-13'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-9257746648135675560285366734014321238513113635818328', '0.000000001688971424354875053059621839175', '-5.48129264630501027446190896008315133533114168046699834517239592613977291740331082888161684360902575877236308292547167194915292314747658072690018895e+60'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('-71879677346223956249925412.237057479235032358135', '9592996.68319302', '-7492932575715107271.0488585740293462533529381937739815092394884015917462763001313062945993'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('673013280310051', '2646188524609059034750626867043201451715480110745', '2.54333080977093353608292839140221555847523612798053459934e-34'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-37391146770901318922073915062043253418156240674231966776', '-0.377392359145418812898258331304876547646153600428657770920', '9.90776465521750671579002459833852973105457673647834347457894970963595573594856679877267498369712253e+55'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('0', '-1057817.28862', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-30053.49699', '62926872710082113.39973602372340789682800332318148184', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-0.00000000000701586226100438349070826401693', '0.0000000018882719221498357441465404661', '-0.0037154936101664227048530258989385614409631'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.678525953823435944174324400605592707', '-357.1', '0.001900100682787555150306145059102751'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('0.0000000000000000000182701198320864627982069694892636234489800419636', '0.000006393172701188154407', '2.8577547777946009287133771085218e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-1201914011702159323537662546733.597189', '-467840137859313195848152555257.565526023266744467', '2.56906989041541697746110123591885306583844485308307293725182957185042538622400828'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('139592236802245692289252849780094006877123.13881106202', '2585.280319726769945535609082460957', '5.39950100331861698546584074153230136879729906298113565752375135954626108427452520233190320530079426389174890693149e+37'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-895170083971138589203712544185399054442917192623318', '-0.000003502258111551637847481643025927160261055601386124983284', '2.5559797577984424918470954298386752245726802584457072713106972242e+56'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('-40431597.91947608248641454794200778208342384', '622.71751234426812499766084332865810899688349864558797', '-64927.671244170109105137167388159585218336945661028432501409483756970130666640456046333483019400746287'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-934892.2', '402750149113355843063.43422390460', '-2.32127089725017179438360028145743823591884001301945711774186712e-15'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('0.000000000125664321461616615334255735', '70176889041819143010970.595', '1.7906795695479166985e-33'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('0.0000000203691205662848665373766215358980302867', '1477998213.71936537', '1.3781559664423552161765365475672187634849224776e-17'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('-358.68', '-1021.561810787167533220092752870382468653', '0.35110944459015949765358525681071494213733010418104923396023358754079290260322039254304644'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-4018349366961177732739424469495558461051683311650730286763', '-78811777801.816737857103576753', '5.09866606113857811769781968152402700905594792768193148709782334248e+46'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-205165177654170172389930120190188.2', '-695951097838436.715746744416134608039318216994160606437072', '294798267136003209'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-2850331473521261308881655118.3443917118829', '-10.21794123974453070428905176282599189446170574143919', '2.78953598053038460036427044e+26'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('256298451255.4030365797651583126559', '1585630833.04858776372324316577636838105', '161.638160606800839009380115889267188434054850962509811728493475273761907712360672665'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('88177649804448.285235381356775207514183788131857377525288', '0.000000000000000054700486157782', '1.6120085212789947923120646579744342366e+30'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('0', '-1226962614687715.42416', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-0.000000009887749657448858208654042781460188', '5612199856791342.72760075529307883872859967029721', '-1.7618313513e-24'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-4.56750916876632', '15.1', '-0.302484050911676821192052980132450331125827814569536423841059602649007'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('1437120172642436393061', '-442400520395.57', '-3248459498.5499638861626808'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('55010429541901600090701044137.30499490824202', '7395954439610224303938.810922', '7437908.11464229570123270141116154029911783556110156028784363032923437377057701338835849933'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('2903034043437699745091431259427608784719433889138614787', '111.58823605', '2.601559220039037210940329457271323884073023564152499914887e+52'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-0.000000000000037294965843016026197169517880341', '-0.00000000003048586785128866853988246544783596458432673705774418496903', '0.0012233526047197482089158865473243921886439502680292026576442563596556356293748369172'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('564.485354582604471454113173530455452', '-149680535746472408203037263530852928547.25902816623', '-3.77126759847202086e-36'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-17594.033117785589933523841128115761783130970606611590731742', '-15658681997037879581936246931621466507046570872509317157848', '1.1235960421901293e-54'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('200377596526456574076692.972653', '-134.5', '-1.489796256702279361165003514149e+21'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-5710158133006294602665096578072464239642825934.499206731193', '-9899685915451947007218189521838324652009113852873361284.1', '5.76801949251095073e-10'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('54.87', '0.000000000068307861606255', '803275036134'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-0.000000000000803640804839014385575545425103776', '835249350518300716158.81198', '-1e-7'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-27336772967.54933294246518821832363091371263937122844912', '0.000000000047862010055429464271603859678895514941565034144690478771', '-571158063271691838284.862854228326127036693245640710336784243541044182'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.000000000000000002115895823295045763032853731145322', '-199597862.47', '-1.0600794002055355593272019127677194307781306171219339511396e-26'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-1922125922582145324357704373604380121775097229.4', '-16990531167665931.726252472819341581808', '1.13129242612501366569849895414679665469000630822922545993744661151457530778018934023458067301534794686e+29'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-132.7', '-287895268270367424616830747.09442', '4.6093150747923767680017946568686046974956967041646188609957e-25'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('1416266269343299776.5', '93299724.865279602420587443098855770369720926599948666', '15179747543.6108884643590326209280626064215759779663643277777203988692050799'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-5339406761374017811732.88602378178403752697', '-4469140141720.249671766568242947740083901645002693987054', '1194727977.207442727694694005819478968302727811400860478354037090596908702789500682137'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-6253463320645931839729398669009255185.754728521636100793', '199410057481802.1825874081306302190884190828', '-3.13598190563513181927085047490496e+22'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-441350317401498959949158769', '-53783384178114902570547941319277531964', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-12785562225540639653048.208552733869', '38158938422157746834376495468984.246171889621891362547016', '-3.35060742101684059309e-10'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('0.0000025066276135990015625295257554586577026423831403', '0.00000888935644847151206', '0.281980774213414040251090628974510781472480770773981315600178785347302293772593658066861'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('0.00000000033896123924390456808086427417238299552671988101458027', '-24979399853350728356760719683594094225', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-2503641852531763566974549316971734178103665141733944323232', '169.462750272899828875916', '-1.477399516117815163317850508929472217352089090657168712935496345603131554460603439227889964028002932438517295526484687083036502252141876e+55'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-170847', '39094697925.3308', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('6270077.92756774838684263325366473390232', '206.78349109', '30321.9463725891599988009142072790115709231785753'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('84703267403711289741402809502578155102366055.073857', '-1046146334785502790186313678991043560880897482200177', '-8.0966939889034235764686891744655459841256967972765598470867e-8'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('3545.1407579067497', '0.3459', '10249.033703112893032668401272043943336224342295461115929459381324082104'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-3494.20', '-0.000000000480840756554490261421396556146719241216698163415392140095709', '7266854883596.01476020367444703'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-16650762529824305578738973542416', '0.000000000000000094', '-1.771357715938755912631805696001702127659574468085106382978723e+47'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-135.0', '4225705320433704.8397098115330815', '-3.194732944277910240197793697326411481943087817037607196e-14'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-2995506074584621266599631960111312877166732494844124', '82804233.3084102547261584', '-3.6175760041490220642358349515453623086913834013850308361387469586e+43'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-347688783540526823654.9899', '491590298897394420180889810517081629.2708', '-7.07273484282278380762870567598523e-16'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('68.97874788835555463770500278854830624641240124220', '6732686000571465869842107.60409913862949426908699447', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('1060728314557064738109126481120466266837.162', '0.00000000000000000288998199547', '3.670363054924699191863531381976240623202494002767940365212921691005181091181007474458305920000929354440342526567553585e+56'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('2214963945079.9484628235968014462503635218584005808416855', '0.0000000000000216336715767932185892098107689', '1.02385022219528158743570987586401555916180399907739137473573213383859451514006190585854291485826227631266698113764870495e+26'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-0.00101149645199419076694756', '-10063665763193914407065501.293496469025780457740', '1.0050974225451335469535999549511283458e-28'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-0.000000000000000000019185475868122708030208927', '15879740999105202756056360329717870685504695114554.8046794', '-1.208173097358e-69'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('801572915782.4912832617616401', '-2849.6523834657892042113', '-281287963.55420954745'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('1833387173877945422672', '-0.0000093322172642483', '-1.9645783225618277278491678904374735968217783e+26'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('7350501756971752135823797362779270090656932', '0.00000005112', '1.4378915800022989311079415811383548690643450704225352112676056338028e+50'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-28190035525877869816543636286.9356251154376570729358300191', '-1810804.076774988385639', '1.5567689452126620516791203797362577944674444340957666224e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('1844473405308469535530560487879620652080615603320173696.775', '-0.00078849996389950871004348158085', '-2.3392181227081712107359969447747777792439216175540029824692e+57'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-231693111992827834475921395.7005408572831597652167', '-0.000000004116', '5.6290843535672457355666033940850548417e+34'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-3', '-11931468133051028511674830403083922434836101044', '2.5143594791e-46'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('14659907264763.6879596805197248324', '5122294726480220154273.78922188259848198827666718053671', '2.86198043017279269220526604594116030762403468944452992719931176615831789682673637e-9'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-5', '-5510812943513', '9.07307152547375337530703852788484844697714007432e-13'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-0.000000000004786329685610511015691956495', '-69867798220438028219748793388549983833832.353842034', '1e-23'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-332231721', '-0.000000000000000000011894726310054691678991438851056154637779', '2.7931010124979698348379903328288146229762553558696709423192367676245866471114772369087445551509132881686983022776263e+28'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-0.000000000000002075858352050927127738375993195590601282117912490', '5863967368300060684657653.554829374819243602226788567474', '-3.54002371035142e-40'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-92.0002753297975338659777545', '-110761204179480957979884152503734.5112', '8.3062e-31'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('739235053', '6945061467493074831466926760549620.8163260376607', '1.0644039026292996846558102516170156946325522444e-25'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('233077970564414552492254389124', '-6.515', '-3.577559026314881849459008275118956254796623177283192632386799693e+28'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-97801384199.048951866736152086672526808991949760886076422217', '32622656062133512.2589818437558403820526385273270', '-1'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-232.0155758670362061964340213', '3073.895743315', '-0.0754793250134183938'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('0.000000000000000020232521680689204838655364975887876983246569651572', '0.223057095793266', '9.070557297778650701453174445089199332424409847e-17'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('0.00003846089235782156159638', '-0.0121713956386476574058', '-0.0031599'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-43168211675418986572265954868784979849387435.3022223821157', '0.00000000000000229608704789', '-1.88007731305695129798182639705239036242954603787717035880274202020075225920706589365891377490252735193307793473195819918257532974424203375e+58'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-6342771513789412966690370629471313.3491415', '-553339916.277586362091095605737495125123674158237', '1.1462703714668440334977516e+25'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('1455694.8185707586702590872957830299613527235225093277', '-1444311.07240551629454597', '-1.00788178'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-180415510015366169187018315.93', '422', '-4.275249052496828653720813173696682464454976303317535545023696682464454976303e+23'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('-89238.062538', '-0.000000000000000007569681094769494144933559664120779522', '1.17888800625513545335286163213398750962453703e+22'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('49439.6679315611533062489413231', '-208785626399956', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-624543459250761.7424759511364533556458', '4477531294244125365082.7698', '-1.39483884803577698495727079613753595389155245e-7'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-356908235519.71444083032467453390227880319955148184157', '1.5306788853374988708482675402655598', '-233169895357.2616012348273715319952073899926462999398380558436985'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('44066683550405105669624884328870069022314879447', '-40770501792465902237453034227.3256094462036', '-1080847220736152781.3481128021472592814155077674569111667555300023690897393571703604'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-2786342133225766496.3702338301569', '-165650538939124201836345652088473601.4574844690271527', '1.682060409262981146172971109824e-17'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-27919.220476', '-4179806.6616764499018', '0.00667954829872491564251784270468808686308419116657243607'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('4717013884021421661239642619803336709657446', '-4396945714.850835', '-1.072793295602796604728660784784714449361778834434e+33'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('4857571399.040444595942662244', '235459.415989501', '20630.1853702764679928756592238265024244813146438562020490437565058468946493729797'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('1896453874608071174280167452575.78153057727', '84295814589973288303632462340.69692148823798850938', '22.4976042266474303187971208456534528011604059650531484706610682'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('1349.21861774471', '600801146756400414339331720940860929.19297368', '1e-32'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-380710280449994245527205.803445644072373925', '-6282699867838372405.6862362783503435232742435', '60596.604717484545128564924856036354467001617319065528212815689140862146569868287761955'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-16408382343680930801622921026173292010.95184', '10.28420', '-1.5954942867389715098522900202420501362237062678673e+36'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-572210837.06281547085212132889004786845500563257764747902', '11174933632587.888635200676212120616579965146776824585413', '-0.000051204853279321267251539617856120070847316696999394'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('51359578790378880398.04793830026219449183', '-455536654230074.23174939755093407387209616', '-112745.21669'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-56161288675323037889788006369690.5728858', '-1344804.735014362693770845939698743390913699834', '4.176166785635479476729192379832848688266908371343918271530172573425201796828236768822077194256e+25'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.06647', '2488734728502626956945778696723078815802336866604', '-2.67083507289e-50'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-15709.702083869748710483750', '0.17343238577', '-90581.1334724035302676200393250232343845822654394774978825455616633532285173730041343'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-0.000008986079351526333799928', '57158779759798.7587388', '-1.5721258202657563972830928281622437814997897501794197664807e-19'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-0.00000000001388422828798892162774186257473892', '-69686337968148273523849327314060722575577', '1.99238885164765353309613753258918e-52'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('99883611200513084646975210060.60952323092198205344133', '6184477507904180826.367614', '16150695199.85400049006270290779814055968601439594063052012683068413'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-0.0000000000000000000150207809788679934221011249575790605', '-28817046896.758970', '5.212463661763124150056312253142344531e-31'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-527083357783510.481321402212159156076', '4756796954943078601565972017123.3001236870', '-1.10806360409347708706496e-16'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('-11916867.623189151', '-7.4112922348688463778178290807622357293427', '1607933.845480057142567124343022113195564935260597336976958134855837379'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('960299171557437856346556589204892.36952339465963106510841074', '23606941669264716370', '40678677696217.99646471'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('1047.5896930595555356981255029478888260642', '-103799285857826471881446418054582493405323846656553543983', '-1.009245e-53'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-399488979125776633057389835971328054031.4924', '19142186348378884.30958', '-2.0869558568455196441280685191066041366482575030706546217893406693976412457e+22'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-832487933142277526.9', '-65167.578', '12774572244226.6847311710740577162465666592672816534627080969619585984920292725931904358943645258689834997397018499'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.00000004156549255089827512480694974', '-168623120040090001730204587.75804171', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-0.0000007632302681012970461950055613', '-391242138.5231094072110969254393', '1.9507874867e-15'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-936321317324817171462176644.2', '55757247.767120980969192424103202722050525215437039061', '-16792818060810895262.02308790888001520822277412773933215635853015603'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('65299.6202353082208802901933150582868420', '-0.00000000000000005406664881119624429', '-1.2077615622772948225517086563246e+21'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('2.8', '0.0000898339717307499317300278617758244559235559513474777516251', '31168.609670205279151887942612009240993041965427036466080808192563385626'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-1298869866494.475594214516700374497540945560324132893', '-0.04110811957006315804911437246309620418497699', '31596431071986.395539936717651006392482754034827777746817636445878750215482'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('1.3918628657223935652424680689538914172564804555523212063755', '-934909861878189027772780342196426148', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('31720163278713.406', '385.764105', '82226839842.22276460895707235384173444545857888981143022625186964971766878102875849478011957592581093049079'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('1.7896331', '1387.88263921082', '0.0012894700527543337354754038117822982353769870061886577135541986'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-0.000005151738661445534791677035190155609582464704943', '6124729.17021146886074923028312971419', '-8.41137382286515115853084495840961e-13'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('760605159957971964.526993692017563512354923347040', '-1981158411651079799305483187381.02492550046373', '-3e-13'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('2', '2061430867494832196328135394348457', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('4057584984469066272218033679335984', '-1', '-4.057584984469066272218033679335984e+33'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-214768779586268.327071212443153527207616306729529743416124443', '1587502.626505197089431660056901151238655', '-135287196.380311139858555320270185719711243345481870709141810842'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('34257185.91', '32478274032798474.1', '1.054772364917085061474363969e-9'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-759.891819055675897396308244822485318435449', '0.0000000000000001474661347453780982630566940489', '-5152992043683388943.4636'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-45.5', '-0.0000000000000014249435430510', '31931089636420433.55576127403712595722405163120316926606027532097875260074783441252582'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('325882101178204344924705970016340527784218384', '-0.000000037', '-8.807624356167684997965026216657852102276172540540540540540540540540540540540540540540540540540540540540540540540540540540541e+51'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('0.00000001296293682348577', '4826180903855555093518758503.18506167', '2.685961649951807003241893e-36'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('652938', '40167425703568058483130738057612236723', '1.625541066083306e-32'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-0.2047789134812762376372728712574', '0.00122069219604562311', '-167.7563878467055174827544832568728645393736350593536991176006909249142121508'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-0.0000000000000000000735510585292195036412154236560427242', '806566752154265322458.0530216714607132789553', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('5.96738586777695317673351', '-0.0000000131103553092425065356339650240811875296230', '-455165838.5314759501070905001449000422673614835145139226419992986266304'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('253439307973073.79909502258403781082034844541589896004090', '-0.00000000000000000003330', '-7.6107900292214354082589364575919165269803428197885898168168168168e+33'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('1089680054292535889217177656211145', '0.0000213360854160840823096708397596', '5.1072164037695827703326822383250037106898722602484772580409e+37'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-185936.62007', '20370869194.97455053229846832075003348284556795690420198297', '-0.00000913'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('1.37768166764465755636653', '0.20408', '6.7507'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('0.0000000000000000009669444244397709515925799260593182719648592', '9.2', '1.051026548304098860426717310934041599961803478260869565217391304347826087e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('1.750', '2071244345460032170734902551.6508094475326625249707908886', '8.449027290458661764009243351093569120947924832533049268705e-28'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-3988397945262857491438843500707054899997', '-214129.9', '1.86260673790201998480307677755748024913708921547154320811806291414697340259347246694646567340665642677645672089698823004167096701582e+34'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('295783124913117715560874760916674521', '-0.0000000000002618293341251230605645364205924110442350', '-1.1296790938320486652761249195950932668596773743409194389158746961537211233107766329625433757095606824354e+48'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-50710.475561047970', '132.1', '-383.87945163548803936412'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('8611662468.1272', '949040009695874.96070863580584058121657006', '0.0000090740773625411789903522765473543117649192826'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('2133393570885427035909375926083046680565861276', '70694057333404.94022299835665', '3.017783462086477634294527605965005751852951438132300383829730062196242995632168889854093270927747631448e+31'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('2613005310836623', '-677508480', '-3856786.133269686897498316183437290703726689885859436032446413069250439492654025525997844336944682965444212'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('-71368779920225744729992101649423801013.9826397267764457', '-83273287.6391659199300973471958', '8.57042899872958433994977444944486516265889892525299612767160815191262755920396329859133752045133245e+29'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('211208409622743840484103493394505.246103663548399', '-767386956806589826985766327524128477304930268638194243742361', '-2.75230648305084820188844632852158236744385890645776827212232048e-28'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-100744.08431499', '-0.06551885488328366094728119464062698894646878061872889', '1537634.99826816460387156938259580438652967442179025881429425178830102616497580229'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-0.00000000000000000336004973090925295770216060', '0.00000000000000000001515260842039336040123784515497940557955604703549', '-221.747281899470240379958517263'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-17532870057814109047.600859829217332735092564821487411138', '23019.6449040', '-761648154475550.4212707754733494707749247114459957879434541949961262530168523576109808'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-0.000000000000000026988260097683516148610380', '-45420382420145149189834745476421586567446848185762.708375835', '5.942e-67'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-0.0000000000000000023799691081599249086032764017749602896732817654250', '991105482710213.567', '-1e-19'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('601453', '2041.66764295913', '294.589083621990798160301139631085149923553179452222733024041143164011323620273068508'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-402521315714183175054571726943679054.7675', '3', '-1.34173771904727725018190575647893018255833333333333333333333333333334e+35'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('2206957.4504253', '5483536757267773.0781508858951720347886184285', '4.02469710356229758887237979439122257676387502e-10'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-0.0000000000000005289549144694566634009672940013915898308679385505', '-18.89', '2.9e-17'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2211019241730.118931085998956737464', '1883345', '-1173985.25'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('676660413361215098841.6447', '-0.00000000011016974787223439675745714624897538289345097697566', '-6.141980229871714946783543386659759345952836e+30'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-0.00000000000000000001122585876532469760883703742146468722976677', '-0.0000000000054744422221837600557', '2.05059407145349178334038027799621311225211509668637086903391590926456766746e-9'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-58.2', '-1364461667135886369603850.1784667971192', '4.265418472485667689287105862913268192243368105085866387266e-23'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-47225932306386643219733.96765155309', '-0.08091271579981112281034023212381984889369879198108909359', '5.8366514879107400140856446166707928594799801466940076002029905146259292256804324968441972873664122924704057077e+23'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('0.0000010981334284061199519633859544035268395486390675316144836610', '-8233507251008518719.119447816686546693006964245267741540211', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-12629847025632238433603053865614665972.1494239645227896998674', '-2591992428721377159251056998048.128872', '4872640.40036664294743635414136385753534'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-4252.07', '3415694163747861025', '-1.2448626241567330165894468829708493576e-15'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('67828346273094326856933', '-0.00000000000000000001981766141', '-3.42262110901077943368359324492061750287013305067865724525969686551426453097323353653966782551867203386638141175104474650523358599e+42'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-13.806931363138', '0.0000000000270109174387398904696405526860183322846580991144310044469', '-511161140470.3963666869121585635945898573137993'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('9.63', '1171334609000199324775253397721344579658013052', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('0.0000000001168642599645515450579400931900955126185213013465768', '0.0000000000121793918568216690573762516759087773884128915423497231', '9.59525'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('53506114651950883942285065699033', '65910628177729867715794374064.1138413', '811.79797752298971851967012659297691173513982414824506104066132362'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-0.00000000000000000406627260678849033336293998551088992', '-3303171.983301811542274853533900179067748154', '1.231020554589438136806289366857685e-24'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('0.000001084617', '78817036436563311090367542.130181882621560', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-5744.73419', '122155848887.064230599', '-4.7027909366101111765684860860155074448700724899701e-8'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('426.344', '-127873488954305077741949807322665432845121236', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('40030987601502826523314779745936856', '570996.314388459918349916072985491785987', '7.01072609275529678246947361074571833074130496873796082431e+28'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('470581.007268845392131980979824886', '183334837116430.861534072111318027730101341054073', '2.5667844402643043142954711637004e-9'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('48323137770242813929658748393131737173669293941681.2', '-302.5177156686213980269795794973417845274346400597970242478', '-1.59736555141703139979090089819188708015873544578179904997943129115168986035033030299897874617620575984889131116122934e+47'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('8.7', '0.000000000000000000166761710281741', '52170249305440090476.62082302362'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-3387155.337280447827589', '21.94263', '-154364.14583304'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('1621091487090991767', '-625690863595514294116971833.8982', '-2.5908824651449069100905040391792376372343161e-9'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('0', '0.015395', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('0.00000000000000178239599595974964583290109935985132141544888408370628', '-29516.521811036968024710638888599116696', '-6.0386383171111545590219859100069758779882121614779757e-20'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('74.969990492713749079688', '0.00000000000000052282880601480435829451617959658965518187770782597', '143392999066296488.15598221416532487350857268505818468778132959087203234559315393563482665694193790662836704381101'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('9596615571258.492610962809423', '-167633520.5824796874157222071297', '-57247.5930704'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-2232071124436735511943814137.0522431130665912245715784551', '3564396711.368', '-626212878414444584.725490318710279686312169391968867215929674014486509260688453315113231564206302732269601343632478'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-1382227618.75131191316862730899075392511410652', '754635905531929458984619.180888454231', '-1.831648359982293967304909354245656965e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-71067330303000363858876867.973933654727826106685', '-11661754495838287260.07549715908674', '6094051.313493355982412064832079563681'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-1252371590193744774917140670', '-213356828779653985738.357', '5869845.3541749151279418641211276959015930731289804820486'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('13352367841149988', '-0.000000000142031141374476971294', '-9.401014250772902375534890054877166473120970323e+25'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-10321.73245286387727432273304720136578247', '0.0000000012116081638922756022964368396', '-8519035081197.7404251464625469036910252'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-0.00000000000000039871298374', '-34669636664769580398726661099025.86943584', '1.150035079961372033160736089419637803806556114650312e-47'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-303137413399920257.30569152070980396', '4040056.76913163224875', '-75032958872.27754452352532363389769842427145464424631624396469616635312022963616794108317'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('3158137570873460228072670005805543345755314.88870', '0.0000000000083', '3.8049850251487472627381566335006546334401384201204819277109e+53'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-2432289038390.2', '-318696105128138999338893487.9', '1e-11'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.00000000001159', '-1319597700477306095503339987.9244', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('23648504.6466', '-270134.1', '-87.55'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-346539606072077.2439', '862203.062816695290396772865420408873422969589343', '-401923422.70274641808047258150883287943664547849847021654039885668554386812303515806801631981'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('0.000000000000000000012', '21194406', '5.661871344731246537e-28'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('0.000000000000000000111480007578139775', '40759282340479757739197.929065157327869698454301', '2.73508268980055839501863e-42'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-18128041192.156711945350321873109876', '-33986859592609750.47129863121', '5.333838256741600071709984030510568296793370390855043571400753611875916969218330361484e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('37278526076638974862118765.098259276278986122514405', '422484277198516023929200423121333952607119189697795', '8.82365e-26'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('8768.0457926837864490653237778856176282232936793297952', '2911070376371882980749989481391259968018315772791348.594263', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-15955789117760043118300438387.88821275514711148675', '990985099985142384569.56827257552943577101744765232273140', '-16100937.4590992989250162977644764748579171495897739589653639122908862455819077118275788475438161'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-212339967169681140.0656347177691098032583634264120432109692', '11427913738903003526979637293.05945166976', '-1.85808164133083e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('9531.020434', '-334535567052877548087656305116448', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('3841583091234025971151324407364910092214432429401407480438', '-22416824307585236203987598514653148538792.945067', '-171370531281459881.5845028347181699363'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('3216714522.970', '244060566972964907041409673187177473756.579577073127866342', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('-0.0000149274144207078807596236297196457', '365070321314504.979770', '-4.088914806045830298008984522180321e-20'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('27022766.473594173737137389937884830415185959525864', '-539299052785656617700079811116319917441', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-28599579971171430131634037723710371659862', '-0.00000000000000003644973478672098783210762417899790764846187', '7.8463067395460310450266452407524485868916851065079313125316782921027252528619835701517998070723638e+56'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('0.000000000000000107501465095829712656', '-36.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('3504221306553522426085327256227', '-25730.57184190476446062096107175383931', '-1.361890177989186277274384722436967581e+26'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-5613976985159967030036081584308829303811752101719', '5826360651980204533629650242959093732650762454761251564090', '-9.635477994744361231994675869384292734433202261344614e-10'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('31450598647096365977207660693799877880.7722033791', '107521368334565489758', '292505565491262148.019571293699173528327044279742920906207753129416525762209451256122138367129671204843851546'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1500908.503777', '-1015794940302252137891895242750618498147131.9366486805297', '-1.47757036802172020799761083929871197843150569793966301441245e-36'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('-73296034', '-5', '14659206.8'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('162689268248656604911961.73925878415346621140', '16.8530012184832', '9.6534300413050659945667091905274e+21'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-0.0000000000000000006349044078849485', '309418015201986203793355024.150967286295740', '-2.051930969405536238876578741356000088614244e-45'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('0.00087604094095', '1392643254462374770962.4', '6.290490677658813987746781212472635606387062383544e-25'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('0.01471018444847', '-0.0000000000031444004384214340642523517788169191904279950', '-4678216002.2'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('187743709993796.4707441185609022061433785613916665', '-148037593060997360064291511624701384112069161633.117310780564', '-1.268216444970424611070255845307078487869328514291e-33'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('0.000011258', '0.00000002533815962089606530705098', '444.3100907263867470311330952968235026076982471394'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('757411567322940237009357511826689969429965.236585820277', '732371310539520997815.583055808555097036195690159014046186', '1.0341906576938037911928068192477326e+21'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-568.38271', '-0.00000000000000000009831306318615957356693126102654593877784118926', '5.781354904218022750361120979397811789718111958564428281983974648837588268358968369893867421753377610560567601e+21'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('4961441143214745081236647304879610502095528582', '152849955322703', '3.2459552459403407242938276150370472621615e+31'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('3.07144121980414068036287438221', '-9172805577814.461', '-3.34842071354133190529054610280498225047720875195151670690172482e-13'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('44314348083704254263362409818654768380209.012579280', '-9.417687525064823672162', '-4.705438353710852226448547042633572616984454390342684398583290673e+39'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('2085098969276295556177971788779802383262842.2573', '0.00000000000095273487', '2.18854062649800521752496766364791747704462864605763825984453e+54'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('109753.2295760718524527484177', '-2410159320462121517944570628199834932322126563296852', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('0.000000000069254571', '0.000000199024731561379031663465058346103053493401562136877453001348', '0.00034796967420424309603498770442174869249118067854495112595546767'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('0.05513850425913127663195321149816649956181', '1583707666489.2', '3.4816087227e-14'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('-0.00000000000000000001911867896259825309', '0.0000000000000026470470353798680890064052204548929047195017581076193006', '-0.00000722264421714539010209156219178435935'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-6073252477791750891.3306202701', '0.00000000000000000318941067336920340144282050435242157283523553432927425299128', '-1.904192686285876887623788577946073103761642119860783779636402053198955991467191518914690989817783177670381359194515048092874262743002e+36'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('378672312.587170', '-0.0000000000000000001053', '-3.59612832466448243114909781577e+27'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('609789798178485116999338276095741737992.379075331', '17.0', '3.5869988128146183352902251535043631646610533843e+37'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('-124.716', '5216585338728473.111922771500014302179232803666', '-2.39075931671423873e-14'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('0.00008981163034929156059932182280362293647', '17.15462944126793230', '0.0000052354165187174924421618028002824702737088914242483722088492099572847282013733240288959490404'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('51.131', '0.00000000000000000163392086120629508806283832967421051655309', '31293437285726849899.9548981381946366968329515395443936573946414878412107077307898590483457854490120470465228429287396'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('0.000000000000000224443342970341249514955', '-195.075348122424284622226008810924357674021585884736420502', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-0.0000000000000523354375249977172294108', '-59305406992817199156555859872622215551484.43155864914470', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('6', '0.0030', '2000'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('0.000000000000000000034611171122223173101604291856002430473572402', '-0.00000000000000001306934614', '-0.0026482710574396932379054957'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1588463948.87932840027706', '0.0000000000022448099935370064122298031327392982562438924009101', '707616214046020578248.81130758203250848509051455636434814147439890491'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('331.68', '-33750.2034498218032862327555741660509773034307606364769', '-0.009827496314003737584808993904721204561638977989420994442365465662925539835282246204506787'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('0.327498818868821216689791032955550931752264897623', '21042718581930356317251390092870285676850.926244716344', '1.5563522250877247306423254201e-41'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('3958539212848304459958011955905583053', '-21696668207847236', '-182449174911407951863.4531483205530341836363930866093940294762697819985445794'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('1247355676807195054228866279313', '16.258834134091449785731551775353859635', '7.6718642094499587743177888766100455319156336611325707079731669e+28'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('0.0000000000012350636190251876598396', '-951304829839431745267098098582', '-1.2982837680259132276449985e-42'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-104.734641992', '1733564860345817076999292.62701', '-6.0416e-23'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('0.0000028957367658033897750603780262704357073704233855043345', '6356266743779871175690.8320757525027414064', '4.5557193908470029595714225575995705e-28'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('-18558028455212231571697031', '-8', '2.319753556901528946462128875e+24'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-13821411732239834470835288846455021839518308', '43191343517856916199296009474.4583', '-320004209327860.943280120415530700855745713808556291320032098976026114433405693'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('1105537642062114566378066835007', '-67031135832125199.608799899', '-16492897342972.91956535243888467391305299684032312977820150518076720770163876179182196342933551'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('0.0000000000000000001255914148577465716438366888116166812811129178359847494921', '14253616998215507072480525.5466822973429', '8.811196124707861086162541630740460525710456e-45'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('10307.48645', '-233.40', '-44.16232412167952013710368466152527849185946872322193658954584404455869751'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('51547410618891864439338459879661143474.873695893', '0.000000000000000676829184531107024516', '7.6160147636959276036734477149740626732082461515375015431101882226904527697230136479333303806794331563205180614e+52'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('204708594426498174030950107.254', '4440698384508500810481273876415279950855610099962910', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-6.13262', '23040527189197.48966', '-3e-13'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('84389016596253.6582867036429852020414930676618', '-0.000000000000068476172931286069798457953929796189460178155', '-1.23238512001737718906979098515503064223947711793583508345578763371912048018025047351275887045048034847634525910066e+27'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-38248107466844304398754595001002', '0.0000035010431864427607738252', '-1.092477454004397498727080290040187638747725994106560343172688418173937260394324598159119517021792374783673726682471104291825439097915e+37'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-6.04', '-52596312949208048443865032.445961', '1.148369469516388467461983778327576939930189067065907333733000607931365766262e-25'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-813956145912449846600403054832', '10796.36780196', '-7.539166512692186931160646370173229289e+25'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-2421788107883639375.690813214146289140632086497030390', '1731175528149788838817994796202724767.68013543816827528061235', '-1.3989269536821316086138504672469213952044063942010898714620955200178235e-18'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('6809195547555535.498930321150996302023166384162374', '11654400.3394158857916', '584259622.9105349102'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('7650.2', '167313423904874555768.53143200344236', '4.572376693665353260468390163017986446812909378918e-17'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0.0000000000215178880', '-415105913902008739133981.125527139819700224156205940189343', '-5.1837102964231878130039665575920669505879406859e-35'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('22142223705380302372371177782.1735702866136041227753', '586007244566197651865789605.262', '37.784897560048902907217450655951502520247844259884569454602755728879103478107373423844615729'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-692051984878.44837389610506', '-0.000000000003543', '1.953293776117551154095695907423087778718600056449336720293536550945526390064916737228337567033587355348574654e+23'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-2098291.044481392971917438527834118527', '-5693120152498224716798827599', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('0.0000000146185660337188726116266948236882286', '20.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('10704495556869164920.51', '90619.2588', '118126055086086.898346050034123651'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('0.000000000000002487958710561768110187226959259', '4063693787689666341932152579391331936357.573517570229', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('51618848316969818775925143304056624489535103456.6', '5', '1.032376966339396375518502866081132489790702069132e+46'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('2654107.13441542394', '-6123874494540609.39129700002676534532585907120017117261', '-4.3e-10'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-1714194716329674533705519065.5334413206217103223746696', '5.98522507452367335745', '-2.86404386633045136335500224142654677487187643840811577337806125077173786775401349379930631210035469203499993508952054e+26'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('5702848846892587648420853565547712298213651451', '20315551290068.9958657451780294280', '2.80713467504096443336245665418400813749841454239681391965351719619477522552050607483391155099224061119513736999774116474859166959586e+32'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('5822711428013.7278457962610451325840881631471620796996', '7317134960.07267345871391728', '795.763841966350301550416023965287902186366947585252329405753890743811409560180259233344579873'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('6998999857049233887139.178', '536565672053559187736681540252526377121.4733799', '1.3044069387186968841309942400771742644732909128490501807562862836e-17'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-736427.362', '26561785052330377.2389583235', '-2.7725070455512e-11'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('1706905651154879542863', '88.56507646747069', '19272897616498006457.7522807926014250674708948336033069877118029704230360991538'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('257245103.59464744281', '0.0000000029115137887165463109918224', '88354417070456755.53515'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-0.00731213642756679', '22000291.2308', '-3.3236543784156522957658811e-10'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-1.00153755', '-0.000000000004817370897527122943915648885377070823386522456337944', '207901274638.021808115928034265486'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-18876185760828306319586606769243165085658142.582', '110420998917509223452862481780135937729683.9442', '-170.947427988130159944154589178595087116373885300937'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('10139455414077721510362752985718.349777032029', '-1592.15854283316275020881903273194474638353703333947', '-6.3683704488593777697061166680042965589526026607894963695742224646320751612955e+27'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('64058.2040554083', '0.0005021239538086', '127574483.49063637011849827272068476023898087743836443210535013094588197053638633850291146474453448271'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-1428475428.20735903897201934602', '-0.0000000000242430554', '58923077336504335133.104523863770075780135'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-51554046121.3034', '-0.000018880638', '2730524578740580.694360010503882337026958516973844'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('-2762810286803588.45192428', '-8640345932207758420293371601.59940312431169954302570739', '3.19756906549879589027267406125e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('0', '-0.000000000011202663303958747975051152590316', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.0000000000000000728863062144561648570757530722', '322752261571.8626880286', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-734510557070.068348834319420815381', '-246514712290287800069556.88175493105500884097', '2.97958101667024372312554181557200100600882497777415203837744586470161731601583448849e-12'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('1377663375802999968849430.3093839', '566468290791214461291218484296464177560', '2.432022053482903606051085e-15'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('42.717407896393966477614218353439273979669938970221536036678', '110923.68743842532496727427151897458876838975677629026416375', '0.0003851062'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0', '-32462950625688705502194075615292.71', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-2179016107.7151039', '-8998016829991.427774977530562439090670', '0.000242166262731604582217366864917233636794614427746718291884330094957283'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-20294295265203512774.769698852042811556484427715976', '0.000021624092225657109443305144', '-9.38503917455744803550043940290482273316338e+23'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('0.0000000008493664', '-0.0847262743', '-1.00248288623261226063377e-8'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('-21440281347750189310337', '-0.000000000000000000387132410079674043729097884456491866784968', '5.5382295022361103568950998795402234908365568150385575865160019717068179574792611353491e+40'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('206821560851854169617748462848949473773944', '13211894344505757704466014.438', '15654194278193127.234892190339874212443694'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('87335372170833177344.8303029843663', '37000975631892503811354619634411655865.6169807323644717989', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-153953834712343763790686290606.3999', '32832548130942465220.147', '-4689061418.515142415435868663051072079842174369411856550042224630514916748907728876061295'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('8591618553304102854549436621158504457632.5171957714', '-1542797194645238675645482061085323571995441155624030', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('37700127.5951420458769322687632041', '-57762387264539495550418.0153494', '-6.526760644861067e-16'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('0.010041502557250876166548957814077913236106', '-18220674406719803170800673691038472842823530', '-5.511048786178605911409e-46'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('80.29', '-8524769191419139053935120.494218774674499753866', '-9.4184368e-24'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('109702701616263639000350650001761093468367469818592253226', '-2021844707442628.03807051', '-5.425871789877639160770322751829476922008624495250501167900874909467126706972380441248639983205158035489570536069623734497094883214019663e+40'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-3005.5299969285543736815073486739041595222490', '11869355000843396498.275115952278894077', '-2.53217634548380388605943229997686131910154e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-2.9854066005', '-2.07', '1.4422254108695652173913043478260869565217391304347826086956521739130434782608695652'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('60997727678079129329650246720589441117', '-164345597279206048954528559846381714544641.400997176', '-0.000371155228298877666235893044021252300333269'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('0', '0.000000000104418206', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-272327.1', '694.45577474495', '-392.14462592'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('6237855.72', '0.000000000000000056118290958004531753653601257', '1.111554827047036507995706512423927767064027042762859524443941584662214168498358135819148727524390167927840316489194652889418e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('0.000000000000006937403050062051741264875394222559344579302', '1509646995595711435.959', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-164471871725054325379243876510073498031765815264104734195', '-0.00402430947386126023272568404053794601387820869747399428664192', '4.0869588383630498731416861920107609850137223086980649346785688450001052069390464103e+58'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-133380508526066123553.924166134978708537056649683776', '332452693837394951885538.01', '-0.00040120146715160475560382614621874425251758726814333122'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-1002134.167299', '-251.640', '3982.4120461731044349'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('3091342449638972957936252157062677150123597', '-16288785543666.3129808', '-1.89783482712804340336650119939870960656049694756418219750511012425980687183218750107631468549277698312382362559693096e+29'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-2121799566979', '-20804629779048036144946756642230281', '1.0198689375937973728019325041709023668770063207827995907217465870058272029e-22'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-2.95', '-1', '2.95'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000128531295816420791177802740270342784459', '2133.1090', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-22.4694657270600021059023860420', '-11079.1', '0.0020280948567176036055187141'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-0.0000000000000000014765999000906441441566319', '13980667685799243617101573702.2033564634481522785621111348', '-1e-25'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-36625617695236881.773942648961', '1311498943574337365145309982488.6557', '-2.792653236564417936966141384470842862580855171690821248973320554198267761643707277475e-14'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-2104684780739', '-45.6', '46155367998.6622807017543859649122807017543859649122807017544'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('14570972898277952428626.0983801671394340', '114423093266432345.2524483', '127342.938233191046005191826845887793763656551737627592531031804176335098511683913206903'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('81260582666910888471517.696291', '157183273101224011686.118', '516.9798354725703896250771557514765169801823622101619483914412'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-2.525060632104990744774590726583480995133091410643517095', '8737246559917825.103222789941919016', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-6908481234802683425254138906190088906940533878.111', '15381.89870114390985717228404934058434081488126127180', '-4.4913058972940177512058867064538945149459323054127e+41'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('417982.58607482343146733674248486', '116386843556506317108.22539086', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-5780608294791.624458881861849817493', '682392959.70758196837', '-8471.084310818098502691272384981'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('40159.97604002006812174866', '-313664.679534078486903276', '-0.12803475'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-4.047', '-1.81', '2.23591160220994475138121546961325966850828729281767955801104973'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('5061613769913356854864601678.89379478', '921818732154416225536544128239745673153253611567047', '5.490899233609274193409593992073909981216429810581822729779521522e-24'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-25506.3998849214929', '0.000000000013985173677629659', '-1823817170445362.78619963707679912302299395613'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('11.4581525319001337207', '0.00000000000000000009416824099681963524706645466971745', '121677461643221226049.4121814719193701493831141147430299424294358706877279967065063044082706631899843825377434102964830059'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-13.1', '71689907220027014271360598291.258402249236137629239531728', '-1.827314402820211048849800495e-28'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-1125106278543860.42641857171081224001205', '0.000000000305408269978069643760450306647132844200436249835', '-3.683941756471265763378768331539492008773195171551609918202663377907462939251038817895e+24'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-0.00000000000000000049608590807042330411', '27990', '-1.772368374672e-23'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-25928884865429476681995775592751670033286619073442', '-219192400010954.9422554036825930132777', '1.182928097148148648508822522228604781132162339640607517123442344178576719677e+35'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-4.46763325', '0.0000000000000179609090310047', '-248742045421410.882061859008635736643114865517174911865521227799944534457085'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-1287033681371878104057667.7055777252542186915675', '195707186672724900856206502221720418737', '-6.57632e-15'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('0.00000000000000193175636808677074413', '1096214462030958100.02309399230397185919335500330064378', '1.7622066e-33'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('4.1855102693159094752', '-1769.223', '-0.002365733584356471442661552557252534021997227031301311366628175193291'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('-0.0000008679493116849', '0.00000000000001377', '-63031903.53557734205'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('619020164695232324.022470822521', '-0.0000000000004062829882447739486123366057322303105417101432919615', '-1.5236182232722239291358561175494240320173964254115460755085158141082760696213303513827725096088371826207242532e+30'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('42561960553952288419610167869608672152477976.7637409739', '264520977464840304990428792028340802894082649682880151.87', '1.609020235818898502867215862305232329970845e-10'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-8432160850933490778.69395', '-903254.8849', '9335306115578.905936669072754216997426392772559'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-68334918980853445275646478865113316249836762.819', '70067642250.1174035246005', '-9.75270706796744613698328349792670077865167e+32'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-125210874454495603116740976.379', '-77140850018624120914', '1623146.159580377099547403143409912506569866772423197071869436970879279367977438726091333988946827384'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-71924.8159', '11792', '-6.09945860753052917232'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('26738605472616.34809488607216342324130569467943599370', '-17848616068000574690442.240120938', '-1.498077238635546584508183889182860823798452319e-9'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('307728725034195445693818971152253110685320114730380.6360569', '-0.04791701101144421929437607982012423', '-6.42211854492967670147798513527529587291182927874576501544632945181254387470070916840287404357386e+51'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('1063469210609337404733995767077620', '157322.98262357845381312530739737044008643142255', '6.759782918391938594011489608657438980256117690815000289918435942612008089111174784431469936177200692245e+27'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('4721242310773063039516988216828059', '171400453736307845213676552.5264455791334235426375810', '27545098.0896263513314335'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-3554846810422675439500939761.48523775084025501057', '3315590942268820.06130581', '-1072160852264.283056864970073195051461622948996967853643073530490983'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-315298.27020265072220508757446517308919757747772180364', '24674904266140137236693349157364359', '-1.2778094974630368249191962362594215e-29'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('0.00000753194455756794779974643789264996726', '5991522948863651', '1.257100176674855652252945e-21'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-3.3', '-776998301627358692703026', '4.24711353047802405395217647701160391118416266e-24'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('10977918093.74255295043893514908080', '4088067972470992.747117265605094792327745422289731492', '0.00000268535605759682552653099970835593'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('6856439', '-17246005.9309043907638765902', '-0.3975667773437002568945641473'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('298153651523492269765657502906019847', '0.000000000000000000583575767236932787472350570065527', '5.109082115166741717506899313404018033667092958887247086907247281013218226491031783e+53'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('112673834429924858801595684285086.239309381981428', '-267459587411.5959056', '-421274240046329341201.64843123511725546164313842329550287026178410911552652826352283112794653674395'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('0.00304013112747436879592085927', '-466567742.705324788338', '-6.515947951837847345154447e-12'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('408039980934080654190.10495', '7740827823125488053793915672307134647697764525', '5.271270596086294571867592375848040651671580781285931860265302318308353e-26'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-14.35994958840514231708055641', '-138375506625046841270057381331164746.7022255338810', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-2.30545415622', '4.1764147639455207766144357157533380499118421354269', '-0.55201752855647971419990305582933793'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('7', '1517830154233.256354618065521871308', '4.611846e-12'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-21565167379464493382078.1', '-0.00000000000000000015054398271503612276516', '1.43248285255512869987845415014282003732353935506369813229992050816e+41'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-131265273607.6', '8527358545951160003249799367499710', '-1.539342727296549809434811171262223366509053565931192709376536462468975683e-23'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-7400030128880533683116353483202129315391542218419503647458', '188653216.4064145408994610', '-3.92255709700633529926085692361021860510356981553906056412282862405749365644716719294480094765319042816975315928831243535386869738152e+49'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('0.000000000000000002980505992129620520127442706896038555653286379104580', '207.911145544', '1.433547963160473961381177693472099296632254e-20'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('54641030767.2', '-0.000000000403625437861745840964628129162180522645168390994640836', '-135375587467101709281.226161911575732696130284100795168990520198665934091307492071006553764178017574533458784'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('851736532738029.60209470571380221276333463072', '-0.00000000000000000114929416269306152351105287227218987361', '-7.410953264934490688278940003920834703403777176356982558393641846764034783e+32'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-219483098', '-0.00000000000000000018804816235407398287255832650176', '1.16716427989728235020019911955583225548719003865002e+27'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('217289940219309246936943195754200410.51455750668', '-63355238534381491744596342895551077252.71', '-0.003429707554512493626949130409168057711026740378896565331657739651625001466882133520579718359906689'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-176541.53078', '5636726158518564799096514888456095728041', '-3.1319870047829032e-35'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('310106593797778297794006050555480612566516210.801605287605694', '-62617459184350755065823836651746823705452786558', '-0.00495239822626465799890522013613597052253609868931450749761349632061009409030943676'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-3.93331852', '0.00000000000000000017547329228603830', '-22415482542997560447.66801836373937215965155736854780121152633001674'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-3', '33.42273262067', '-0.08975926756343902112491292'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-1085841368229.94743889887943410676813741370545796101970', '149610498943278043790373953905696078398598966574.065396393', '-1e-33'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-6855.326', '-6.61', '1037.11437216338880484114977307'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('482589.39032468525307515', '345620881.1', '0.00139629697369197885849365714148108512532809465139691758051015511979146'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('0.00000000000000018873012642883182832958209507253635128', '-316826894495349657610523346282389288091344754546005352412', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-0.003915504234894627513', '-2561178368548558.3', '1.5287901393269916111965312123266261603335417944432306248e-18'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-0.0000012845584111321936644262379417469638861846223574683905234', '951434782049434793413124934712308714591814021.8202740667', '-1.350127654956228395192441e-51'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('8415663741.6', '-1168289085861655174422234758990445457837305401386032655', '-7.21e-45'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('15858062669861942257032429298168.061284122274275', '-0.0000632521476327715811032330323136282408108535316', '-2.507118455792277110934258995900949920340359411372602248666188373364931628696825287100597787416097233309978475814394363763e+35'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0', '-0.00000000000000000159599025962211', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('8012431158360693111.3422024194980884319325209488819277405', '2948627644398253137185410152161559.235676341420', '1'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-16692108859470873479799641256137360063087170548211631950768', '37848415114043098758799686016767986.0657242693524879935887', '-4.410253060577300514678904143e+23'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-4243226161', '-241235.3', '17589.5740009857595'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('5671433914958075722313198736271285623794662361', '-1529262.981377059120344780400627536817216209608491794503', '-3.708606030501768874471207730787071653798986595411035303838097501627810686978706206155e+39'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('15076573039121823.4228488681', '-161804219260400857597665.80520571234560198305156', '-9.317787328436859431009430461085894566148816536724215e-8'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('294.8050', '-1.964', '-150.1043788187372708757637474541751527494908350305498981'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('-84259403135132485171174.02638116507', '-114.25883199713512140486366465931939269178', '737443238849537430255.562897456860924998387708483089712271920400180306835801578116806671059372285530053918368188248465511'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('0.00000000000000000046329876', '17951420713085087388514.79177201848797', '1e-23'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-0.0002610697214141198547803066285872786447209856526772883974', '-178463559138028170694183028.197759979905991059847', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('10467906625915426931.86040412', '-47739824225253084453503246028.8', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('0.00000016666446981689100983647498315835174605580766', '580387622169032702425477961127755252936733664151030131299360', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-224.769', '-24801326309696', '9.062781449398827959722015515861155e-12'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-7', '0.000000012707354813051516957', '-550862087.58493263467522230046127695732435950160199797173188670287711444397512'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-4.3656189571419062523183949678080584000285054747999', '-3293692576993760246104014415046803314.10507195460869', '1.32544821809888565170762281523897677163949595277716403402859734e-36'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('14.1957398777937590270133873552634805598', '-0.000000000000012563918029887170815634048090532307766027871798898663876504', '-1129881605724010.2'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('16935191410004228.460802414832644503742366518153', '1643218550169899824827110750524231685.35', '1.030611016912705990838456e-20'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('2050277235517443724707910505052.4731518708963', '-0.0000000000042732754158552556793926871242449077002300282150840251359349', '-4.79790567186529005222705249614533112509378367129076106364835811006606986e+41'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('72300288767.4686', '-9079012869267363449548957.7441533', '-7.963452614127962619893834937e-15'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-192278.89137554', '683.9', '-281.15059420315835648486620851001608422283959643222693376224594238923819271823365989179704635180582'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-37071737652639279645773001054327733919457032661726466338296', '214460775018254857803.123699146008820945', '-1.72860224204093922691043082274757832113184495522998e+38'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('3508739066826554438413966431669941507968277256138700398.3075', '26272394523500608871817279308.076254831783976099304629', '1.3355231338688956416143598722e+26'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-0.000000000000005888147537781712378940578659229857732339205517', '-0.0000000000357908539645432479549', '0.00016451542462817163'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('8.9', '2351287825342227.207075229251', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-64917.2734106506408', '-79744.96255', '0.8140611185308110825616'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('1471910.39014886', '-0.00000000000000002292836897845593599690424193', '-6.41960355545526809487536529467727428238048655970053407194427902647011729951927080268452364187789104659194714727650982884e+22'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('3358.2557686025', '-13824816.20862637369171939065', '-0.000242915039008404617'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('0', '-176919225043114407825860493712084027468392984564250681392777', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-94.74', '-329651568302571800500603522925.308423', '2.873943554639563322615843605e-28'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('0.0000000000000000110731296084', '0.000000000000000295624180561344759822516282345296563007307492621010', '0.0374567790340216195083300376735558825475464199235127102791290477'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('83646713.06305786000482933881370', '-0.06053394237208041753996944641', '-1381815057.5574862847330003528953448813081937401796458491197415668944330729137829413685834'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-38.86923', '110300320411935711291231863077329191512675361', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-289778228389644.735858', '19872423685993.5061287641581109971172568923761866135070070', '-14.5819268433717224346668613163636009356892'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('2349185036898629126357558810676316514842302299.0', '1207399206492272243854506147853098478', '1945657264.1980319963362423395380699788180442632737552157456700012'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-0.00000000002296696350413542311429801774342', '-214365998434669728.291424303429733970843831227714', '1.0713902238155014381665505340351475808957657678046297897617544e-28'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('1.2', '0.00044989117011003817105772781526543396707216835596267685462', '2667.3117405404820335329558172000325992151689227771625583656817424662783'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('9595745885499426.7169802725', '-0.000000000327743137731955836', '-2.92782511081812216573540637169470332617972314738093221280858903756193467761589986022579484529723405084138308540303e+25'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-688719.8', '0.000000044444185325676', '-15496285846016.33736365698488460633918072624981148372653014620199623652720088517243'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('713224612262773653680241404914834356988249073', '380979.615840832555552739491029492', '1.87208076917361364947269850626183178839836232939369106393408135378988816660528694640277e+39'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-3275063595', '-0.000000000000000072', '4.5486994375e+25'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-2.6', '170162024025946751328594.69323995086202421', '-1.53e-23'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-0.0162866737821637854634366877470516190361196456175', '287.485', '-0.0000566522558817461274968665765067798982072791471468076595'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0.00000000000000685125450752007', '-25463715301672573', '-2.69059500012162339283072238861321781124021695474267719e-31'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-0.00000006417176012350484981296579048552883728704381828848778164396', '0.000000000052422588311249876007', '-1224.124221843002820600268753483592272'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-16621167342820978706536182564384834520748084784088309400267', '25771141077830118867510', '-6.44952712517627078574684074824441580996230842092e+35'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-7888.596835206861517863152770552325131999866', '-0.0000000000069530421297744953074562967729205968985', '1134553291634191.2930516886628897927997661960306833620003034495097750648'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('1.2802', '0.000000000000000320733183354699837542267', '3991479729692399.14388544644270182793510362289414907'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1143167591244810954376007417870910708549794020221806675.867', '-83.1001483252906', '1.375650482319176190320461611356383156139441669005066072939373e+52'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-361334608750433443027647', '0.113122', '-3.194202796542082380329617581018723148459185657962200102544155867116918e+24'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-0.00000000000000000002494217', '4.8', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('0.000000000000004645660102106500861269', '-0.4071388488567123873955', '-2e-14'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-0.0000000000000000140510767340573128875519317863769472177687242606399626', '-956282191.599509427461617089251166031', '1.469344180775238969387615485222865453266870409511e-26'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-2906876362334903297.024', '-19.60375223', '148281631405566040.304111719534827032447144941293'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-914878775966528731607.022587027744', '1671043826055263405', '-547.489396568509031642388212363936459110501972'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('70450801694587804894143.61391892280709936158771890305892', '-108591331528118593575781087160101701786013931909', '-6.487700325909099293397426242451e-25'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-891918043949231447159022241220674070858767357271692794630', '4.0980', '-2.1764715567331172453856082021002295530960648054458096501464128843338213762811127379209370424597364568082e+56'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('0.000000000000000005733565055241296218580315962162371319238205673524041', '-70690401.6714', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('1.5', '-253064781747908408661311723771677219591548.42553453449777', '-5.92733603482697001046428303053562006e-42'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-199265060704729205211360524527945335218.86764046022', '7109171105669220246688089204413433520955053246149', '-2.8029295925347042674352163178171548898777443107245580741e-11'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-0.0000000607986152676359078812147626961003363', '532.239727', '-1.142316369548940263176084988035858e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-9344541484.76898', '-2373.199483667610410542181360631', '3937528.87149952439694531588665'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('48', '-3550719.914288', '-0.000013518385329929660293949126688380820429236008649140673816900638235114992003924'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-1.021086528836383939047778', '-0.000119076372102297630912420193554175995', '8575.0557'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-6705971596222771.022777582265649902', '1537909959592.9', '-4360.444871556660007578271067790611195272808960542501804095769354694463194903891490920167'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('529745345068548744372662151971878714.04526189296', '-409.8616', '-1.2924981141647540154351179812206820888935725936755236401751225291659428450969790778155357808588e+33'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('0.0000000000000000001302317170194506400686998546015573602071', '-24.78978867731652441155280376758014', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-2146274113875.49496314', '9729696205365623186698890257059.75517088857939198406881714', '-2.205900439822460138471e-19'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-351.2', '-3', '117.0666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('-548554848.30501', '-27614851500', '0.019864486626155132501798896148328011107'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('0.0000001111574933510049', '215750993474963291939983019990989913881.71402092789336', '5.1521196524132859469e-46'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-0.0000000001048421705472715553356589700382964723258539804228872585', '-29109', '1e-13'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-49680877924193', '417064263753223072731709638223877170625145.512441832', '-1.19120438363880478031774493e-28'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('0.000000000000000035480345932478838641527', '9562537233485133001.244440733051688169050', '3.7103485263552569e-36'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-279.7217286066255', '-3147.195', '0.09'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('111829376038647492442232803887249585787639546', '-785143155.00968401893972952268461155222573094239818435', '-1.42431829565231553100788064745240767226374600650422274265871991e+35'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-960689828.193588938349683105430160033541668181958553575', '9684405008594.22166376', '-0.000099199674873267376107866212657265407443705080626617764172227837998739700676364'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('50376720', '-0.0000000000000000001570607389244761570', '-3.207467400508285297088827902284001067549518139205000192129304697371527353270951720777532405603810353446983929799951617047558699e+26'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('404', '-6183.77113262816412790095', '-0.06533230149290728824615010987067121839540402798'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('49337215720677521.3443833806616883904146777', '1571453293327845', '31.395916079819832887132998326286413259879389138684913919250570049327770165026557'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('0.00000000000000003218259158136497095066393123', '0.0000000000000008461224058775031', '0.03803538513790897970897588277140181040692134848067786983140446'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('0.00030', '11022951460.37551699698035372674421839175342441352404496550888', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('5719176664843253317578321046372.25184848', '20017755600840139934572319136465973644724390561613964532', '2.85705189876692318995459448300938593640135107e-25'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-53063085311888565757232761359792949.5308110327468742', '0.00006630772089294890911071543105161542606', '-8.00255001940976627814140218779213334551277226050833965949950813384147e+38'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('0.000000214165487233603125515625830085104756776', '0.0000000000000000133131666', '16086742821.47142404990453811981176'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-1.3809', '-104175880995529544230786200013858153463.6469561', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-80.67336', '-2.4', '33.6139'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('0.0000000000007711074021569872054857920506375960354991911113', '-5035148688719256503890304372097300573538350546.1866353673298', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('0.00000000926040147909616485250107541245568393863', '-0.0026523052948041324107443300384238377', '-0.0000034914538297070464119113675'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('-0.00000000000000000007299155404265500', '-14921050856070539136258836028715661812605', '4.8918507648513796522067331050373811e-60'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('4185278545255683361119', '1291.04892', '3241766040326096520.896357669'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('2739.863031800302191994479658708940460984249926450286934595', '0.000000000000000002501528355313917315261103710668929184662215159415032', '1.0952756245917013434979529e+21'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('6.0', '0.000000000000000000446', '13452914798206278026.9058295964125560538116592'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-85532865547198467812607', '-0.0643871', '1.32841618192461638763986885571799321e+24'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-0.00000076', '567905990280637889298798417785362163', '-1.33824966280851596454298604e-42'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('101398028158543389230299115547369007286824902001700116.2553', '-52.2912983373674988296405356', '-1.9390994559812658653832384200571004042037835706815005616110831197380767996466795759350907618753752320858682762688914411513987920202e+51'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('209146073148637058825542155473422546.08331', '-6475219366.0774934458548879804017034412490751', '-3.2299457566536760101397850799376230370553508534555202198732360787918707517850145708654685805035127577e+25'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('114628368289852.820180317085131197751245220', '0.0000000000438542841932421628941970348155178396469330199902031464', '2.613846523745490051969847204505399588223338833211389607553540441069773718251499138e+24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('517935605107341851096345074856072992.7156008827474683881', '127863800225.0482905517', '4.050682086687105904243568694437970615324e+24'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-27286.7821863357398984', '-248871877396', '1.096418867083063497845949282782980272286610399834378561244933632043150788431238808799716e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('0.00000000000000013', '10860.2671042', '1.197023965918158619058617241555118620007835884254365096244425387638340255e-20'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-34576748.1602107548', '-0.00000000000000000008931227430020711652680604102', '3.87144414708187212666840381667854701596189258690906315001487272148181857244354283721918201250906497585496589e+26'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('0.000000000000115930341935456194307', '0.0000000981174908550652891749896427792341965557406130630062531', '0.000001181546133366814704555871801'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('0.00000000000000504719252613475311161395980979664810884', '-0.000043082057015271834248968602242413955837904', '-1.17153006977953996190998594253150683389023987586146099e-10'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('26641.49783545436873820701305448661911594248101355910145979', '-135.010709152353975219390385818328987', '-197.4'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('0.0000000032140124045405954', '-0.005727093', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-0.000000099134380264803867304756248610297405939983585', '-0.00000011736539996855192079409890', '0.844664443621092260838038656775263676785023896530963481'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('4.108835145', '2.16307342640344721563818985739931434776831645', '1.899535676803991'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('4656898732572132613.4410483143447805', '-0.0000000009501781415852752916737394036430371199560948203715', '-4.901079627871224417824715320394975940766906006571005665754e+27'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-73.263441606903292174252398', '41834794533354231988607405203742026051715713499', '-1.751256159474895662739518935572654737e-45'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('5904.9925', '-0.000000000000001969995137425189849707027492804513926489', '-2997465520507783916.33831653542548149707564847473062713070397506965140542636523575676815465298609254'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('880022438074316975848739277453909252022061607980.53194460', '5242501764328018092315439.6288940', '1.678630695105007602278206462360343332224278913580415169255108606490213582659658913697707617099644772083987778310417840744e+23'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-709221917884584205726767929753430.745157457926918049', '2.076632660276337510040', '-3.415249752405454532590867318577044409344398629076630420528864457538549690273648046774419e+32'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('146127526244109040849597787', '2.8374023987494239474733725457373001365241', '5.15004591201143277102110410621545875865437570800644910341093887982827771307526737146399470946988638685e+25'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('904680341646808206060972295', '0.31148361458275280949052429518', '2.90442353720169443586293613e+27'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('2203.4076345788', '724154063664.87046', '3.04273323196941940848187357605107963583858770536700794093631e-9'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1695969273341.94745291649760098', '15417764236218795258.43748711', '1.10000986353e-7'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-73659.540208377', '-7102156144000910331.562', '1.037143350763924834327534486604821120969035141662779199421366204045278117756e-14'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-2784953382351286.3086364024258778406', '4107211058684934182', '-0.000678'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('0.000000000000000000019553789848042961164455254267', '33692178941832704881943898861492602275813376012710964549', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('0.0483051225529222178571395836923582375668787163795829', '-564324922583504501767854.4731149680171842712', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-858453249829127994094226059212202311366908614011', '29034593154.1283532140920733437', '-2.95665672073337373881597003673065506153688282989555301421030066565454579780325802308201e+37'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('257334687865074235664067782848438082936550966405972.9', '176273197.015992281231', '1.45986282782247206172160069403941119085726865919459578203280519328395117540850944210193286328940285732489888274735976297331e+42'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('0.00000000000000000133217566057607597276199009470313325350804245', '-0.0000000000000101200408354784046322638106120605309413493311442431555996402', '-0.0001316373799506610430010703195442828939530157166299880802038865535054498692020690474160903264'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-1867285.33115732', '19603126380430.651403412416051145200210569', '-9.5254465788752341381720655515657815792150430965485531082566262974e-8'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('2359244379735388.679109363378009469', '-32.80437753596009375903638080174562243194634612123402', '-71918583949632.626233'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('0', '25.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('-0.000034397239481491218241448049401692260200746', '6242147450743749254584513236399823155746667146550', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('0.00000000008090115235821457237042557042', '0.000002260746735132616032831452512375486215969231', '0.000035785146164755552882292240073664970094847240235802197408557921086'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('0.000000000000000000753854880082021663', '-0.0000000847084338839566150950878853790084567', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('316033663553049202534769174666', '-36485934550866303347893992823469.719631', '-0.00866179439949539297322773053625108376549649093'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('10350911', '-1554504392304.57922084867', '-0.00000665865664403469343653105181196'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-0.000000000001772239', '-35562461.9776179842035639740470021156474995631481053688188', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.0049554685787730540321344924794239555857558650835', '240110', '-2.06383265119031028784077817642911814824699724438798883845e-8'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-166.74225666994937800532899', '6131671721.783', '-2.7193604653946343511577077632404311198418677432590846226466038070643979e-8'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('36259960930.792501556', '-120492187706.163067280', '-0.3009320489658420990850285700429899529669080813568870895438293314'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-570058350623765908', '-3.4747', '164059731954921549.486286585892307249546723458140271102541226580712003914006964630040003453535557026505885'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-2609.47', '-1109610', '0.002351700146898459'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('454946353192200382741.398543517963735540199082579799572681', '-9933180406199232073881.485077659037299291573620027', '-0.04580067355952494109598732785954730693081'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-250668891074943688181903895734299909.55191304408', '-3', '8.3556297024981229393967965244766636517304348026e+34'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('8.89309', '-42069038047408448018408161.5775583', '-2.11392758493269976782067132153016897036258530108627831048883e-25'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('0.0000000000000000000173745082126754244569538931516859447571118122', '0.123310867245083651940795939037593765653669051123530055393', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('0.0000000008775456040', '361131497699701998764610751966.50423036', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-5153091518.7406040817400744299613233833', '418492316246282598198213462451341163504999408.4406', '-1.2313467460912738294189675806054139004135565214069e-35'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('0.0000219673332856121664698', '-254444683189579351762035.301650774', '-8.633441662148995949718645766516727344425906188881263491056e-29'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('0.0000000000000124622659253523913966', '5850.420189065839038762899001934149661715', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-688730416.557', '-0.0000000000003951648906503041270453814', '1.7428937460096442372912826654274612114e+21'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-9931679467.75', '-1502870206.88709372530814748081674179420111', '6.6084745191147023911621614637629767474400210980963073076390839554208942588543709811596179927'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-108428301296313798056110.5721', '-0.00000000000000000204108406597952289572874685216396019', '5.31228983183888130868233422038052762615048646618698180513643611e+40'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-365370146.51147866658932522008385261549678', '125512291743327891715725307.614734016887918162081', '-2.911030795761893012183859646040100496262923971339613128613262618010840457978133e-18'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('55091794759768865373533577657924816002194789011.09983520679', '-73.60810429054803563072034723276752733800453478', '-7.484474065832335746328690987160521918973730100422535780658416323279822817020347204019596161981598133613537277e+44'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-380352779968328863604.7159023137659034062381486362120851020', '-8.31574', '45738897556721213458.419323152691871'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('0.307701303956069746120229064754446779950609104168219710688', '56234631729368940685764364261340863038476403298.3879528464', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-1', '19309036609717.9975597446909', '-5.17892228500262130489913347375e-14'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-44654585420706993.31742542473', '-0.0000000006027289838445011151208026441190957324081397995183071725019', '7.40873371243542049803459654582339018756502925344373225030046922681306937066090383255310952621481032745967895e+25'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('-54925165836485672710857725560837377208296587799017133333', '-2825.605707071196726650040560595682826678276353136983797', '1.943836880674226514803730943918030498268112825893215789880695267023603689423771097277245357710607361173152416757068727241872149202600201e+52'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('13374123411670978.062911770758751538931', '-787.9274745092872469065678639698824', '-16973800056915.43910091242974365104264145175506'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1', '-6449.1757131107317276427416', '-0.0001551'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('15126486128137.793045187069', '-0.0000000000000000022510496179161314088799917337142144133422767760895', '-6.71974798233939632384744366781417676196601258305334434426205837476671258054663726653497745279e+30'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-6783497223986906248522.10842171360686239', '995239063638516604728939933320055232395', '-6.81594751635548551852626892275416128903090281787135e-18'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('12991.8369610336087353450639391088888468', '8032379664056113843191371.0433152382963207479', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('207320924234.5712', '303336074981166.6737735336493520369939370482505115', '0.000683469396930263576853474725388888959253945256305'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-122.45739844454730332010332354973634641363705433251529879062', '9447912296854805543914573195864219175336', '-1.29613182888364839866e-38'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('349590.7', '7207227.0', '0.04850557641656076601999631758511283188388543887961347686148916913537'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-0.0000000000000000001888860109365319078', '-0.000002321644201149817244536824228879826140826', '8.135872449490074464564492664223720373248532002695337135382540057507505e-14'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('500826035582651297779424569682263507887877', '33.50', '1.49500309129149641128186438711123435190411e+40'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-27.315', '-20.342583461', '1.342749806206632625696665932435276540218000583283928648889323'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-4.90239', '-1203284257311414630620587028501239894112650148935741214512974', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1540.7100926644385965642886366140301649420536640800072', '-74261873930837283483541410115094', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('155.7220256964369725', '-0.000000020746714034683094342180099017091', '-7505864564.19606322718679'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('32283641211618963310071449025.8495', '-576447533321496.2747620144597', '-56004474553998.53948365650714366827469487780203947325964417173665506'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-6433147.186', '59931478302051899030586452865719', '-1.0734170703377669987152475363845462e-25'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('0.00000000466577741427532463', '-18573976984136355921', '-2.51199698280032716540277156996073220430913119443365130462967571657e-28'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-228072032680546.770883', '667966.49336024786', '-341442325.24780685952619124738397467667467644134322751996736273482306290614526993858625428910843656185'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('53808201.2', '48235479867479092736228179549920990039221992991677076129.821', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-0.00000000000004030778700864994296078948854865', '-72221323.757995430943875648364307870759083262', '5.5811476322029579127873718839080941865e-22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('746358785365811820360.654028722178793304905563959742', '0.00000000006840313334942773374783021640222512135814698', '1.091117831624968857486483033762341569518050806597252386832902689378185612786696e+31'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-1.9928460955491', '0.000002915414882846452686', '-683554.888628198725265418444707421403141297633390196771552126781196548031150391'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-0.00000000000000002640606620253759119845156292542123235528407885509361011', '2225877810.7054042845879699', '-1.186321462729763623968610113e-26'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('491006992221852923.2372757', '-5771788.05147488482793524714404816081', '-85070170256.3'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('0.0000981386485829161211029033509485910521986286585709653', '-0.00000000035935692266885312474359284336230032101002204910280529', '-273095.1941987513659486714742389901737409321797571382330304242394579590130429502291583079670345125880776264'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-3923683972442238455.688548446964266542022', '19713681370671230635254350180084405861128341616369.4584429555', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('-12019045506661.95195991748896', '-186454790035745012458002110.71958138495746529141878', '6.44609103598668391198203675729393100331753335263482e-14'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-65488790684370436924148606100053700570184631958478581922', '460.84', '-1.42107435735549077606433048563609279945717888982029732492839163267077511e+53'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('23908388557585898.944763203126346515', '-0.00000000000000210805209717029661834691580082360216713215139691', '-1.1341460009303786507920438774534305298096762e+31'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-0.0000000000001369312765059911255372554888849748138390660848424486', '-26311153142729071623.17111628', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('2833029876644.131673912415342', '-45.65379979003026165930', '-62054634875.3822709505913533021000904804'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('19656492438.7641125283751890529465696420484811555300946', '-1005436.06768996539408355729', '-19550.2161404710578624949538334409283518604168677743645083066149816019041732132891539115571943493'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('0.000063991196310882687246812203176', '-764595382.4375863', '-8.36928887889357219598670551030780707299e-14'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-9810.22806', '-55098903081097.965527877279202077917868239272912209454994647', '1.78047610958074809297040708909727550678747899737824375163321547306442698717870558649741e-10'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-257974616398835703621139090661778182291833909045.657', '-0.00000000000510402729238806919217601232779156465287463125660636', '5.054334579745844122489589261660803166075894965367213510821807688904375456262367095936903170827544723e+58'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-479439506286434445997467789.002', '0.0000000000007160566', '-6.695553204682904200554366638084196137567896169101716260977135047704329518085581502914713725144073806456081823699411471104379178964344438694e+38'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('1.1', '-0.0000000000000106915112901957396962988796099221567390946735312', '-102885361119032.33566720201763022927171653367059674347435084890560649723342406596400208115045'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('3', '414020.51', '0.00000724602'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.000000000000000000061882221', '-4050.56', '1.5277448303444462000316005688102385842945173013114236e-23'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('3.493977827604', '-2260.9669858838401134240638110470714575857000205587', '-0.00154534668105211656336476613115631570453524176333962186796661763534818999'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('3726948435765826.84326915', '-0.0000000000000001199875176686771574119495523565369900549966411022', '-3.10611345928256491693925279371396690965e+31'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('0.00000000000000000839371334481157616928404090451838851429883790182523489', '0.000000000000000001174084780027432860197437306718', '7'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('0', '-12107750456.14393218963304300', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('32452469555159529657043699375492918544407971123035001805', '-3477672163570311948206.46815498316391271788119679886142737565', '-9.331664409057631447563529641108012734742022362851228519678586e+33'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-0.0000000025249569', '41860562832054775078467864.9889979', '-6.0318274031e-35'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-57420834404667479679602871688255.649313755187824928', '-526.869920757904877517805158954329176436765', '1.08984840740324172059414548358126843066175829927983359182059463499020186860098749851485099825966999174869239633061771228495e+29'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-555674591960483912078.5951', '0.000000000000461167689042817244270167028412844448806527289735424240146', '-1.20492958453750680639966040339288280102588876934e+33'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-10269864203446021737948535841920170109700177003', '-8868278165.7332530984614728126275155317340', '1.15804488893102754123887900813714712918932223002003560913873793494119808283875232529043328266724198e+36'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('682458542873211261451752430521.50', '-0.0000000000047317422583988520', '-1.44229864097488822202187839202570736463468686e+41'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-26794151020408.4608794932680594008286263653818575932035677696', '-0.000000000000010618255426571737851651013858255943564445', '2.5234042640712168480007125119498330722733482066532969571905761e+27'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('0.00000000000000698022055022659864002062387583190', '1.4', '4.985871821590427600014731339879928571428571428571e-15'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-0.0000003324810418286578', '-153279272.1421553773097635827640004423163164355773643413303', '2.1691193935231230363867783229324e-15'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-9404703133195.13', '-45525021.3371016485784', '206583.16804633'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('0.0000000000000001830187412365033410994083139636', '-2.404', '-7.61309239752509738350284167901830282861896838602329450915141431e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-13.1217336639451305439590042', '-0.0000000004897887830525073032777704194170244636961721242635', '26790596514.208918842869983534986205269964226588243435750012963390544818454757631234642456690595'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-4005965010496578889385402.4457424061322459174', '-495851632.0429975', '8078959010362204.171060091563633796500721355364945604379286889945542443933241987931947409'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('1468007492719556720149.7243', '602653117999682820388399772457357438149080226', '2.43590790269557576647632180273158488611240246727647613867086194e-24'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-3067720546455460115054583624.90563917', '0.0000007922540348', '-3.87214253472358600483404395141067089709695726500072852642542326122085910517851994409306351947909322278910027205834307225922632e+33'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-162209.617275', '1770288709185568423.68896278566909349', '-9.16289057447728252989e-14'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('0.00000000000000276328664329193085095978498036928931806454342774', '-9294328798787592994233339.072', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('6.909024540243', '756611909', '9.13153025753e-9'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-12059873714133.493148039435702897368991609', '-2224844545756841788321221865009881', '5.4205466791528110588556926535e-21'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('104754143837318182.4', '-11549180444', '-9070266.4440349774831174159114211862'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('-334030072820632119710072', '-1.0', '3.34030072820632119710072e+23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('67796811842755861918265.1423594922053348', '0.00000000000000000013716284029732259235206650049087658840821899770489301325723', '4.942797312726634332534530226132606387503176112095456172429358696109437734575169459831901881448319263110745e+41'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('2022854952999872055850234034154.369917295566462391873', '13.75836', '1.47027331237143965985061739491797708251242623567916016153088013396945566186667597010108762963027570146442e+29'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-0.038747', '16439037192115022080201430.915947', '-2.35701151759574969347678116027526521525307302208203579637e-27'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('5835060438169234262736748.328559855177221323', '1140114664918923170677.221356634518134', '5117.959287528489228206379959134811856240476081634542669211680204610408031'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-0.0000000000000267595746177751020908523341076736116122831657874402545134', '4068716223280464463190.66605189736073370652', '-6.5769085749115693384978725140734e-36'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('0.000000013615410894818066521708546825107702688528499647', '3', '4.53847029827268884056951560836924e-9'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('6.2', '78756', '0.000078724160698867387881558230484026613845294'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-148428436744.287221266701376626964', '14647.3443717355154907539131930670153547426932766', '-10133470.81746125599475440250281824581067466'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-1131485176.36', '243.935512969657494', '-4638460.23313851'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-1384271134192800808858028587220494947', '-4', '3.4606778354820020221450714680512373675e+35'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-0.000000262795322', '0.00000000000000260448783427139897456119386569682623768617148230930', '-100900959.69809609139671503315458646839423292725929534450987089464573'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-3100575428627.4279', '0.0006563910304', '-4723671234108667.52148720403964861979'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-60.4901', '-7153802399007784077376399639542532364448308688190006085969', '8e-57'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-1.22360', '-0.00000017357767807793899723685184287804837922756376495441002', '7049293.512559749372859153421040296683'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('1565440', '0.00000000000000000318507005', '4.91493114884553324031287789102158051437518619095991311086e+23'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('0.00000000000000025', '1.64792487', '1.5170594518668803147560968601681458936899228907201333759833359393380597502604e-16'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-1.294', '-0.000000000000012346068350', '104810694653249.672'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-29168.554', '-8', '3646.06925'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('43520', '-485.75606652', '-89.592293333115077284037786596164402751883515478364755925148502250351267522446834227135819652'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('1148978.24', '-15564548', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('74159102.0', '-2754521', '-26.92268528720601512930923380144860031925695974000561259108207924354179910046066085537'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-0.0000000000026876', '-10255741', '2.6205809994616673724502208080332761913546764e-19'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('0', '320295', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('0.0000000000000000000443996740', '7513.561355', '5.909271502847799663705547793453800844087204502504525032922952686795488e-24'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-0.0000000000989', '146556533.88', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('0.00001391471605', '744.27894259', '1.869556594141772197897753236770100087428835180475907168e-8'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-40310.2', '87709217', '-0.0004595890988286898057704'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('1044345208', '-78177.473', '-13358.6462689'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-4682.4005', '-9097023696.17', '5.1471785238631063197511178523858062911980363528445549978499721443800782131606e-7'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('394883813', '-1.18', '-334647299.15254237288135593220338983050847457627118644067796610169491525423728813559322033898305'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('25.579', '2', '12.7895'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.0000000000030', '-30142812', '-9.952621541e-20'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-1.89', '1.5', '-1.26'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1843613.37', '-36', '-51211.4825'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-2', '-6556.35592955', '0.00030504750222388725256420745657319634802955829712150804993051660367510469671127160930692062'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('10', '-0.123889533771', '-80.717068630544761887592'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('0', '3.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('0', '-141.14989', '0'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('342.75', '7034856', '0.00004872167959088288374'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-88980', '79214827', '-0.001123274560708186612589585028065516068096696089483348868514223984860813998874226'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-10.16', '-417.5', '0.02433532934131736526946'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-559.8', '-3.38112', '165.56643952299829642248722316865417376490630323679727'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-1.9', '65.8', '-0.028875379939209726443768996960486322188449848024316109422492'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('0.0000000001462574', '-0.00015154345556', '-9.65118549392539666857785356415690803e-7'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-115.231696', '-2', '57.615848'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('0.000233315045345', '-0.000000000000133029473', '-1753859803.270814'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('0', '-3532615.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-4.2', '1.17', '-3.5897435897435897435897435897435897435897435897435897435897435897435897435897435897435897436'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0', '11.3930229', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-0.0000000000000020730', '0.000000000000000852834', '-2.43071922554682388366317477961713533935091706006092627639141966666432154440371749'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-136440751.770', '-303', '450299.51079207920792079207920792079207920792079207920792079207920792079207920792079207920792'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-85.113', '1', '-85.113'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-10.47', '-0.00000690102', '1517167.03'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-1.4292444', '-1144.70690499', '0.00124857'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-0.0000000000000000000465276721', '714.1', '-6.51556814171684639e-23'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('3.20', '8.38866', '0.3814673618909337128933584148123776622249560716491072471646246241950442621'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-303854.8', '-0.685651', '443162.48353754315'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('0', '3.73', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('21.0', '-0.000000000000000002895581456', '-7252429371822859194.32963795027149807800122891794068735049946'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('27606161012', '1508', '18306472.81962864721485411140583554376657824933687002652519893899204244031830239'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('4.28', '10.7', '0.4'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('0.0000000000000347360853426', '-4.659453482', '-7.45496987506999646015566767278652273494250114e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('-1169747921', '4.12', '-283919398.30097087378640776699029126213592233009708737864077669902912621359223300970873786'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-0.004024373', '-7', '0.00057491042857143'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('1.8735138997', '118.931177', '0.01575292490126453553890246961904698883119604542381683484053975182639'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-2.2', '764.12', '-0.00287912893262838297649583835'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-0.00000000000000000009903285', '-2.0', '4.9516425e-20'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('13.43', '1.49', '9.013422818791946308724832214765100671140939597315'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('0.00000000002818631', '1.2282333', '2.2948661300747993072e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('3080315675', '145441.14', '21179.12218647351086494509050190338167041319945649490921207026'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-275.0', '-16890338.700', '0.00001628149706672252818707537226592146432208609292127457'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('-2.95', '-6976.96721', '0.0004228198171508964279624298248636888749259293136336812452928240148630424765891941177692'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-2267', '-3.5', '647.7142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857143'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('3', '2', '1.5'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('1', '1.5', '0.66666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-0.0000000000000121', '-0.000001452', '8.333333333333333333333333333333333333333e-9'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('2951740.2', '-6528832211.10', '-0.0004521084482737351136335745064281668900369882'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('1.2913929', '-582958', '-0.0000022152417498344649185704630522267470383801234394244525334586711221048514644279690818206458'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0.0000000000126439856', '1.3', '9.72614276923076923076923076923076923076923076923076923076923076923076923076923077e-12'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('2.1612', '-63497969.006', '-3.40357342735763028004650382313363403892805131714420176332151331360017074e-8'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-0.00000000002762629214', '69.16', '-3.99454773568536726431e-13'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-211.50', '-3.98', '53.14070351758793969849246231155778894472361809045226130653266331658291457286432160805'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-17667309622.8', '-0.000000050947899018', '346772093910253341.548302901600133653621272866125786431541286'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-0.000000000000000181', '7', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('0.05964073855', '112.04372', '0.00053229880755476522914448038676330989367364810807781105447052275665249243777339774152446919'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-7.77', '30279', '-0.0002566134945011394'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('2819.841', '3566.03200', '0.790750335386782844349125302296782530274546050063487932805987158836488287'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('651.8', '-48389.208224', '-0.013469945550312'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-164.881', '-496055826492', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('0.0000000000000000015713402282', '-119.9', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-322.159598', '4.16', '-77.44221105769230769230769230769230769230769230769230769230769230769230769230769230769230769230769'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('-2.47', '0.0000000000093', '-265591397849.46236559139784946236559139784946236559139784946237'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-1', '-51334.1413', '0.00001948021286955860699280850734713663165921117687031418211333'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('8.36631', '-0.0000000000146683885', '-570363267921.353460197757920033274275493862192155600460132345144'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-2.7140570863', '0.000000000000000481895', '-5632050729515765.8826092821050228785'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('1.9', '-1620.0524', '-0.0011728015711096752179127045520256011472221515797884068441243011645796148322116000692323285345586'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-4.72', '-1', '4.72'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-730000.67163', '57682668.476', '-0.0126554594459119211293404'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-9854.20', '100.05', '-98.49275362318840579710144927536231884057971014492753623188405797101449275362318840579710144927536231'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('109901.8', '-0.00000001677866616', '-6550091583680.45150974027127314868752356176565110226854886062051549871232434128124997511721158173397974086'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('23253.75', '-0.000000000000000339', '-68595132743362831858.4070796460176991150442477876106194690265486725663716814159292035398230088495575221238938054'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-1', '2051.814989', '-0.00048737337691804921306187026787530695829223226324720059836'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-2485.45799', '-22032614981', '1.12808125233584591726316065650854664658109744508497295743671308155194236133508913333e-7'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('5', '879097.79', '0.00000568764937971235259276445229147942687923262780584'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-1624053653', '-45901.775', '35381.064305247455027610588043708549397054907'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('736', '-31820', '-0.023130106851037083595223130106851037083595223130106851037083595223130106851037'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-33307.60', '-26398.486', '1.2617238731039348241410511193710124133634027345356093527484'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-5', '85111326221', '-5.8746587816256136023628558422155102937812556824e-11'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-1.649825', '-3', '0.5499416'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('0.000000000116045', '-786270', '-1.47589250511910666819285995904714665445712032762282676435e-16'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-32.1', '3.29', '-9.756838905775075987841945288753799392097264437689969604863221884498480243161094225'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('5.004', '0.00000000000000028911148288', '17308202186064620.13937977834220293976031506424543437352660297'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('0.0000000000000000000942', '-2143.2', '-4.3952967525195968645016797e-23'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-2.7', '79.3695', '-0.034018105191540831175703513314308393022509'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('-0.000000000000002036873550', '-215.2', '9.4650257899628252788104089219330855018587360594795539033457249070631971e-18'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('4330632.78', '-0.000000001568875959', '-2760341093352173.67557354481712725384429196929264692748089971847162456264013667635020468817063440003927040863018285'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('427991.031', '1293.75', '330.81432347826'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-8.92547', '-7', '1.275067142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-5.4', '-1.0', '5.4'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('1.383447013', '222.81', '0.00621'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-2209000304', '-16.558357', '133406974.133967518637265762539121484094104264088520376749939622632849382339081105691827'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('5', '-3', '-1.6666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-1511.465', '1829195341.20', '-8.26300486315714874072e-7'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('0', '-716.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('3', '-52345222089.7', '-5.731182102655194878948627237808030249e-11'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('0.00012', '0.0000000000000101949523', '11770530794.930742343934262448682570098930232366070021'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-8374228864', '77.675', '-107811121.51915030576118442227228838107499195365304151915030576119'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('52.243', '7', '7.46328571'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('0', '-241759.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-396.127118241', '-0.0000690786761', '5734434.13518169610665135488895103477525968393595199'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-6844.1', '0.0000224093', '-305413377.481670556420771733164355870107500011156082519311178840927650573645763142980816000499792497'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('1.63871', '7842081035.3', '2.0896366571877829368596501781675487298187215660485e-10'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-371', '-32445244', '0.000011434649713221450885066544729945627778296258151117618348008108676883428585095553604096797669328'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-9', '0.19', '-47.3684210526315789473684210526315789473684210526315789473684'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('352830191.6', '-0.000381293058187', '-925351731494.04473608489781199248613'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('0', '-1.020', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('219.352562291', '21384681', '0.00001025746244664580219831195985574907570517418520294971900679'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('161914.41633', '-695267', '-0.23288091672695525603832772158034'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0', '-1.09', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-0.00000000000000900280', '78.30556', '-1.14970124726775467795645673180806062814e-16'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-32.37', '1.14707749', '-28.21954078'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('21.571', '1', '21.571'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-0.00000000000000776386', '-1.5', '5.17590666666666666666666666666666666666666666666666666666666666667e-15'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('111482', '-1.911', '-58336.996336996336996336996336996336996336996336996336996336996336996336996336996336996336'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-10.7659', '96.707', '-0.1113249299430237728396083013639136773966724229'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('386.5281', '412647.720', '0.00093670237654530115906129325033'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-5.7240', '1.16', '-4.934482758620689655172413793103'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-285', '5', '-57'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('512168', '-7', '-73166.8571'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-0.000000000000000000285654941', '-63506.19980', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-70.1', '4272.202', '-0.0164084001646'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-11.1381428', '-34', '0.32759243529411764705882352'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-2.0946', '-7.7', '0.272025974025974'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('233298875909', '-118661.20', '-1966092.336071099904602346849686333864818491638378846665970005359797473816209510776'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-0.0000000000000002412', '310.1', '-7.778136085133827797484682360528862e-19'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-0.00000001472', '-796413753.5', '1.84828550929840264e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-1041.2', '-0.000000645681', '1612561001.485253553999575642'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('8.37456', '-2808724.72451', '-0.0000029816236268796314943861290758029707760497802718151357226'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('0', '-105271966383', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-29', '30.9036', '-0.93840199847266986'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.00000000000000002126401186', '-67.1', '-3.16900325782414307004470938897168405365126677e-19'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('-7', '-10.381', '0.6743088334457181389076196898179366149696561024949426837491'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('2.5', '2.3', '1.08695'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-0.219855997', '101.7824524', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-5.21850', '-798', '0.00653947368421052631578948'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-494.272', '1866', '-0.2648831725616291532690246516613076098606645230439442658092175777063236870311'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-6.5449', '-26.022998995', '0.251504448094453765320141189'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('0.00000000000000232033499669', '0.000000000000354', '0.006554618634718'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('0.0000000005015', '639650467', '7.8402193990737757094453899617023182756466274e-19'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('0.0000000000103187470', '-0.000000000000000012571', '-820837.403547848222098481'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('6', '0.00000000000000012', '50000000000000000'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('1.090', '15002564.0', '7.265424763393777223679898982600574141860018060912787974108958975279158949097e-8'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); + T('-264.50930', '589878.7702', '-0.00044841298477366358352796335303677284299051045929640408679349348789294671924099023965856909'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-21198985599', '-30720.1', '690068.8994827490795928398670577244214699821940683786836631391173856855934713754186'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-813123', '-0.0000000001663', '4889494888755261.57546603'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-44239.76530', '-0.00000005206822', '849650041810.5324130534902095750536507681653031350025024862'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-316.68', '-8624321.244', '0.000036719411422703725065462090757'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-0.000000000000000007135328753', '41264989.38', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('176180337.2', '5.6', '31460774.5'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('1.6', '-0.00523482', '-305.64565734829468826053235832368639227327778223511028077374198157720800334'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-0.00000000000021866724', '-28126.0189548', '7.77455353178172209997205217413586893583984552e-18'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('2.135', '0.048050825667', '44.432'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-1.362', '-11.2026409', '0.1215784753039794393480915736574221530210791635747246'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-3.2', '-1.4', '2.28571428571428571428571428571428571428571429'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('3', '-8.154', '-0.3679175864606328182487122884473877851361295069904341427520235467255334805003679176'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('4885365', '32646', '149.64666421613673956993199779'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('0.08525779', '-0.0000000000000015', '-56838526666666.66666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-0.0000102', '-17150', '5.94752186588921e-10'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('0', '-1.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-2', '-123843217', '1.61494512856525682791331236170972528919367461198944791623105e-8'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('0.000021', '2', '0.0000105'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('116116.0', '-5', '-23223.2'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('3141195.729', '-0.00000000000000867781', '-361980237986312214717.7686536119136049302761871946954358300078015075232115015193925656357998159'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1.93448', '411691', '0.000005'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-2376.356', '2951222.65', '-0.0008052106810714535550206623685271594130656323066644937819245864083'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.000000000000001025074', '-0.000027628974509', '3.7101413216262778086592935152937492617525944238077548e-11'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.000000478862541855', '653620457.66', '-7.326308964828859515351663358155728873732633102e-16'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('0.00000000000000318051', '5.368931740', '5.92391588126244272e-16'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-11799683', '-54', '218512.648148148148148148148148148148148148148148148148148148148148148148148148148148148'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('325.3661', '1084482292.48', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('0.0000000000000000037', '3.458751534', '1.069750158006001479954818864996851780218104559574298695489931656941044670021678e-18'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('0.0000000000000000066858340', '-1', '-6.685834e-18'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-5', '-2357875.2242', '0.00000212055326282010644149165490858123'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-70.0', '-0.0000000000000000160541', '4360256881419699640.59025420297618676848904641182003351168860291140580910795373144554973495867099370254327555'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('2238692.91', '-304048.2', '-7.36295399874098909317667396156267328666967935'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('48.36165096', '-17.2', '-2.811723893023255813953488372093023255813953488372093'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('0.0000000234101105561', '-0.00000056848429', '-0.041179872457161481102670400970974941101714525831487797138598148420249220959122722634956192'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.000031224', '-71558987.88', '-4.36339318442579403346362701517851596533788202595243302091264849231123585e-13'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('520778', '-14.1', '-36934.6099290780141844'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-1', '-1', '1'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('0', '349262', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-12.1', '-9.25', '1.308108108108108108108108108108'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-0.0767', '-98934421979', '7.7526101094e-13'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('0.000000000000024', '4', '6e-15'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0', '6.94', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-1.2283864', '0.0000000000000084', '-146236476190476.19047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('632.884', '1.4', '452.06'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-18.23', '208221530', '-8e-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-0.000062913', '400.8777994', '-1.569381e-7'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('9768.95198', '5', '1953.790396'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-10', '-0.0000000000000000277023144493', '360980668900489159.96729444430868143982879657940927594970630669325877985206687832887720379010476659480245'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-5892110.9', '1.5', '-3928073.93333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('-5.03', '6044.396507', '-0.00083217571748887915899922281521495823338116425127501980405733829201949805176803236479006191047685'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-0.13389091', '-117.19', '0.0011425113917569758511818414540489802884205136957'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-19.20906', '-0.00001042226563602', '1843079.103032289899499099103753645'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-0.000000006355', '260160366.550', '-2.44272411062222190738222574202473193740201e-17'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-1.10', '-0.00000000000000017597992', '6250713149545698.1682910187'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('-13228586', '-20693329673.3', '0.000639268123'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('1.26', '2.9', '0.44'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-197.26', '-9.309', '21.190245998496079063272102266623697497045869589'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-47.49', '-0.000000045', '1055333333.333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-0.063686480', '18267', '-0.00000348642251053812886626156456998959872995018339081403624021459462418569'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-21.023531339', '541241.4', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('2693.21', '-0.00000000000000000011874', '-2.2681573185110325080007e+22'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('0.0000000000000006163225', '793', '7.7720365699873896595208e-19'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('59804615', '0.000058386725465', '1024284450338.8009961589305922895534'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-1.88', '-6237933.024', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-46.3', '-7840795.2', '0.00000590501330783387889024317329'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('698', '1.6957655', '411.61351613769710493579448337638665251769775950743189432737014640290771336013145685532582'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-119345', '-0.00004408673767', '2707049927.1986617829506548743461'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-24.8', '8989.322', '-0.002759'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('9.726', '2.529', '3.84578884934756820877817319098457888493475682087781731909845788849347568208778173190985'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('0', '-592.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('0.00000000000000005825980', '2.8891214', '2.016523085530431500732367978721835641797537479733458067909503560494204224163096781e-17'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-2424545.2084', '871.2930285', '-2782.69781702953221781689029088794092193290170460717740036'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0.03141', '7784326.563', '4.035031128999154759638261594344677032275733419792809892166390604700020214195630990771e-9'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('0', '7', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-4', '-1', '4'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('1599.3', '63', '25.385714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0', '703.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('2', '0.0000000000000000001711184', '11687813817801007957.063647158926217168930985796968648608215130576255972472860896315066059523698211296973323734'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-4.2', '-30.1', '0.13953488372093023255813953488372093023255813953488372093023255813953488372093023255813953488372'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-0.00000000011', '1', '-1.1e-10'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('69561.2', '10940288', '0.00635826040411'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('9940.98', '43061', '0.2308580850421495088363019901999489'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('30459876832', '228', '133595951.017543859649122807017'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('117805414517', '-0.000000000000000400355774890', '-2.9425181777224944477183434889855598655680977380992961852266e+26'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('36555877196', '0.00000000000012', '3.046323099666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e+23'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-0.000000000000178916341', '47.6', '-3.75874665966386554e-15'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('3.293', '-0.000000234257318', '-14057191.587927255275756209246790744868000238950912944371710086768772790269886040443782422'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0.3088049717', '1229.0', '1'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-1', '76968695', '-1.29922951142669107225996231324956204597206695527317957e-8'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('1079641.41691', '22.7138', '47532.3995504935325661'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('0', '1.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('678740.294', '4.6', '147552.237826086956521739130434782608695652'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('-0.00000000427', '11048.19', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-0.000029833', '-46.65726057', '6.3940745e-7'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.0000000000000016492401761', '53.1', '-3.10591370263653483992467043314500941619585687382297551789077e-17'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-115.81587', '-1.2', '96.513225'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('61515421', '-324783.60', '-189.40433260792724755806635556721460073722934286090800151239163553824762087740883'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('2438034', '-9.7', '-251343.71134020618556701030927835051546391752577319587628865979381443298969072164948453608247422680412'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-215251219372', '-0.000000000000000000347192993', '6.199757014451037610658231227610057211033633965072561e+29'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-39.9', '-0.000000000000045976', '867844092570036.54080389768574908647990255785627283800243605359317904993909'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-0.00000000000000084628779457', '917.5', '-9.22384517242506811989100817438692e-19'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-6294.4404575', '-0.0000000342498', '183780356600.622485386775981173612692628862066347832688074090943596750929932438'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('-146382323610', '6', '-24397053935'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-147.42', '-860.2860220', '0.171361612568430177283526757104510992509'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('29.2', '2566652156', '1.1376687694801133777007218269899444839302953835868361431364913010051058901648845e-8'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('3493', '-5', '-698.6'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('36.33598029', '-0.2664688060', '-136.36110295776984867789740462153757689746243693530116241823817831795290890446666391412434219411033'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-206.53', '0.00000000000003011551082', '-6857927837732091.3064293159480932224811586310658502056250361155255343598'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2185167.14998', '2', '-1092583.57'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('0.00000015544', '22.360', '6.9516994633273703041144901610017889087656529516994633273703041144901610017889087656e-9'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-1', '-243969', '0.000004098881415261775061585693264308171'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('0.0000000000000015909805', '1', '1.5909805e-15'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('3740375.9865', '-9436', '-396.394233414582450190758796100042390843577787198'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('179.506', '312', '0.5753397435897435897435897435897435898'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('74542005.0369', '49234198.2063', '1.51402902357738847367808769587778211275856571'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('52693.3621208', '34', '1549.80476825882352941176470588235294117647058824'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0', '9.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('11.2', '1.31715041933', '8.5032049761614526410948365863433733808854270153846483990095181591608779'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-1.006', '13234.8943280', '-0.000076011184907739446214'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-38581.7829', '-0.0000000000000000056', '6.8896040892857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857e+21'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('0.00000017788', '-1773.0821', '-1.003224836571301464269477425777407601e-10'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('0.0000000000000217830374553', '-0.00000000000000002371157929', '-918.666664454807809640418092961196428177686345918631554802691508'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('2.3', '-0.000000197', '-11675126.90355329949238578680203045685279187817258883248730964467005076142132'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('27.6', '5111.79861782', '0.0053992737319081'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-41484045.3618', '2', '-20742022.6809'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-1.3', '278.24', '-0.0046722254169062679700977573317998849913743530764807'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-3', '14.13', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('3942.3337', '39.4', '100.05923096446700507614213197969543147208121827411167512'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('806322064.23', '11.937959', '67542706.775086093024779193830369161093617426563451926748952647600816856549767'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('122', '-3582', '-0.0340591848129536571747628'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-1.18', '0.00000000000343', '-344023323615.160349854227405247813411078717201166180758'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-6.9', '-1.6822', '4.10177148971584829390084413268339079776483176792295803114968493639282'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('-20047', '22.44', '-893.360071301247771836007130124777183600713012477718360071301247771836007130124778'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-0.000000000000003783719', '11.7', '-3.2339478632478632478632478632478632478632478632478632478632478632478e-16'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('12.30', '-40.5769', '-0.30312813448045562869514428159864356320960940830866823241795208603910106489160088621852'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-6.73', '-0.000000000000034239868273', '196554494495732.9567586213476318416909932952533237101218564025052083178614511371312482735964175243951879674335686'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-0.0000000183', '-13836.03071', '1.322633e-12'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0.000014732663289', '-11907.468', '-1'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('1', '-3.0', '-0.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-2', '-2152240.45', '9.2926420001073764783112407352068863866953155721982643714367509448119516572e-7'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-0.0000488540655', '7.117', '-0.000006864418364479415'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('19.7779357', '15.5318', '1.2733833618769234731325409804401292831481219176141850912321817175085952690608944'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('0', '-7790934', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-5433809', '-24.9847486', '217485.03805237407912121237033379635446882183157128104943189222244165386559062675539589'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('6.4506726', '-0.0000006634', '-9723654.808561953572505275851673198673500150738619234247814290021103406692794694000602954476937'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('0', '2', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('2732.745', '2.9', '942.325862068965517241379310344827586206896551724138'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('102.610852', '0.0000021', '48862310.476190476190476190476190476190476190476190476190476190476190476190476191'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-45983380565.6', '-21990.85', '2091023.337688174854541775329284679764538433030101155707942166855760464011168281353381'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('0.000000000000000067586178898', '-80', '-8.44827236225e-19'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-166379189.9', '0.00000000002611', '-6372240134048257372.654155496'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-20635674995', '0.0000000006175', '-33418097157894736842.105263157894736842105263157894736'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('0.000000000000000002728336', '5540100.5', '4.924704885768768996158102186052401035e-25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('48.99', '-0.000000000000000055715', '-879296419276675940.052050614735708516557480032307278111819079242573813156241586646325047114780579736157228753477519519'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('285265.038', '359018944.70', '0.000794568203743037741707227518347724673'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-3', '26715362', '-1.122949410155849656837889750473903366909271152679870106195828453e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('35', '-5.48580575', '-6.3801'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-194676582', '-0.000000000024805310', '7848181780433302385.65855455948746457915664025162354350741837130840130601068884041'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-256.3169164', '7938.868', '-0.032286330544859'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('3094.61', '468.530210', '6.604931622232000792435561412358020627954812'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('-16.54', '-183.3', '0.091'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-29526831086', '-0.0032601', '9057032326002.269869022422625072850526057482899297567559277322781509769'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('32.4', '0.000001833940816', '17666873.2803861648717457848432552689312085194356675466456274126569196767362'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('-0.0000000000000616896835', '-70.8235095584', '8.710339812958805083264135380603e-16'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('1', '-52.2', '-0.0191570881226053639846743295019157088122605363984674329501915708812260536398467432950191570881'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1', '717', '-0.0013947'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('3068126.8849', '4022', '762.83612255096966683242168075584286424664346096469418199900546991546494281452013923421183490800596'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('0.000855562', '0.00000000000606', '141181848.184818481848184818481848184818481848184818481848184818481848184818481848184818481848'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-1.3', '0.857190837559', '-1.51658177273800091850428574583107013319652621945040908472429380581341'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('16070', '-2228', '-7.2127468581687612208258528'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('2.8', '-0.0056', '-500'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('7', '-3534', '-0.001980758'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('2317042.797', '9', '257449.19966666666666667'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('9.192', '-2575227269', '-3.5693937038688603603785464575243281178535858382136446691998740247884506227632680445960282e-9'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('0.003172163', '-4799.9', '-6.608810600220837934123627575574491135231983999666659722077543e-7'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('0', '174602409.27', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-160.15373', '-1570.58626986', '0.10197066730646759914875956726708577391128728531899124518938954835414'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-4.0', '14.3', '-0.28'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-1621865.6', '-0.000000000000000000021', '7.7231695238095238095238095238095238095238095238095238095238e+25'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-1.1', '-32.701912', '0.0336371769332631070623638153022979206842706934077738329183932731517349811228163050527443166014269'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('1', '2', '0.5'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-3.04', '3059.4705628', '-0.000993635969884220518312221493880228681506044526796517148042029855480066'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-0.00000047745', '0.820', '-5.8225609e-7'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('7871755256', '-15.0', '-524783683.7333333333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-782997903.71', '2', '-391498951.855'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-11', '0.0000000000000022091766', '-4979230723338279.06741362370034156617447423623806263383380033990944861538004702747620991458989743056304326236299'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('0.00000000000000001791715', '2098052450.48', '8.53989612886029129450365274644980714458e-27'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-14.358261', '-46.3', '0.310113628509719222462203023758099352052'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('0.007315', '-118203872186', '-6.188460551012629583e-14'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-105.225331', '57', '-1.8460584385964912280701754385964912280701754'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('3584', '160.004614', '22.39935405862733433424613617704799437846211109887118630216501131648616083033705515517196272852481617'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-1626627.5', '-65167101663', '0.000024961'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-56643985.906', '-22360018221', '0.002533271008375176940782690608166119347278147282866'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('8.80', '8020.1258054', '0.001097239646050802084840822414763065058191412494523012660172454107274570159574968404896488109146'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-23.0', '-1953.512250', '0.011773665611771822777154328057067469118762884645335600019912851839040169827447972236'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-164004', '7.1', '-23099.15492957746478873239437'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('0.000000000000306300993', '1', '3.06300993e-13'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('0.000012616277', '4.9', '0.00000257475040816326530612244897959183673469387755102041'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-1424554.476', '-1', '1424554.476'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('0', '9', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-352', '-1.840340', '191.2690046404468739472054076964039253616179618983448710564352239260136713868089592140582718'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-1.45800767', '-5.2640370', '0.2769751941333239109071611768686276331264388909121'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); + T('0.0000000000000317829012497', '0.0000000000000000000411245727', '772844.53461810680406169910186082006391278565187377618637238752391948865161096251341719108'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-4.3', '8.43', '-0.51008303677342823250296559905100830367734282325029655990510083037'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-3.89', '-2489.03', '0.001562857820114663141866510246963676612977746350988135940506944472344648316814180625'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('8.3', '-955494.70778', '-0.00000868659965609255046166133355661190473328568036540381307940099954742'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-7.20242138', '-1368431.52', '0.0000052632676715894413189196343562738163178235'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('355695.465', '-1', '-355695.465'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-309', '0.0000000000007297626', '-423425371483822.2731611622738682415349868573697802545649777064486450799205111360872700245257841'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-40640.908302', '0.00000000000000290351316', '-13997149681250282330.389024308744651944336288112432733041237533085608608021600977'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.000000158322', '3.09268248', '-5.11924521912123355126970551467669581133333804122044886e-8'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('7978.2', '0.0076056771525', '1048979.57'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-7742.6895', '475.0762115', '-16'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('21578.902630', '32.5630', '662.681651874827257930780333507354973436108466664619353253692841569'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('3.13693', '-24541106.36', '-1.278235e-7'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('63409', '-3.1', '-20454.5161290322580645162'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('0.00002566', '0.0000000001944451620', '131965.227296321'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-0.000000245', '-0.253', '9.68379446640316205533596837944664031620553359683794466403162055335968379446640316205533597e-7'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-0.0000000000000000000171175545', '133490374.369', '-1.2823062772063923029449392375e-28'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-1954781', '0.00049611053', '-3940212678.009475025656077084273941937898395343473157080540096578881323079354917139130265991330601267423209098'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-6.2', '1', '-6.2'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-12286.3140300', '7', '-1755.187718571428571428571428571428571428571428571428571428571428572'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('19.849636679', '519.354', '0.03821985905374754021341897819213869537925961868012954555081890194356835607312160876781540144102096'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('7.6', '-42', '-0.180952380952381'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('433249', '-30893585.3', '-0.0140239145373651403289860306372404111995379183134176'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-8969', '57.600315', '-155.8'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('0.0000108950356', '-81.23', '-1.3412576141819524806106118429151791211e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('17257554596.7', '608', '28384135.84983552631578947368421052631578947368421052631578947368421052631578947368421052631578947368'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('2.9', '-22840.8', '-0.000126965780533081153024412454905257258940142201674197050892'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-13734.55427', '-827538', '0.01659688651155596480162'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-17.55380', '-357081.491', '0.00004915908676991605818068010699552052671360667080893307908810092876'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('9609', '-0.00006559', '-146500991.004726330233267266351577984448848909894801036743'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-1986505519.2', '-1', '1986505519.2'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('2', '-452173479694', '-4.4230811620209633602979431439702536337489266551571568427190599366243954435520300874941211e-12'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('-3', '-1', '3'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-0.000000000000000045', '-52784.4850', '8.52523236704876442386432301082411e-22'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-18291.6313', '-45', '406.480695555555555555555555555555555555555555555555555555555555555555555555556'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-4.207', '-213213497', '1.97313962727228286115e-8'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('1.641', '-1.6', '-1.025625'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('5790881110', '24095.79849', '240327.4210814501213070196122809624309735833950361028272360855056270849482855216224876389228137174715'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('0', '-0.000000000743462591', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('96.5', '-2791122983', '-3.457389752718037075e-8'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('0.000000020126701423', '0.0000000000045', '4472.60031622222222222222222222222222222222222222222222222'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('2.3', '10.69', '0.215154349859681945743685687558465855940131'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('1.66', '-0.0000000000000000391535668164', '-42397159057924873.1803926502001743692152496396540277885915094781888235162703821490195813464452711347436564423093'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('5.5', '8', '0.6875'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-21.2', '-8', '2.65'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('0', '3', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-16289', '60495201941.0', '-2.6e-7'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-13.34453', '1.6800901', '-7.94274664198068901185716170817267478690577368439942595935777491934'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('2.6', '-837.2419', '-0.003105434642'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('53.3', '1', '53.3'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('3315.66598', '-1', '-3315.66598'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-0.00000000232', '-1.4301592', '1.7e-9'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('30.1580564592', '0.0000000000000042', '7180489633142857.14285714285714285714285714285714285714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-3640656264', '0.000614500900', '-5924574339923.668134579'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('8', '206.213627', '0.0387947203897'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('86.96253', '3.52672', '24.65818947917611831957172670356591960802105072135014971'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('193776850', '-211004.2379', '-918.35525166956848121200697457650446555320109994814469079438332930279027348388626842835558043547712'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('9.1', '571.3', '0.015928583931384561526343427271136005601260283563801855417468930509364607036583231227026'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-0.0000001420', '2864706.57', '-4.95687766024846307382888434e-14'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('183.9357', '-14954.475716', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-538.13', '-221752.405754', '0.00242671549907319613376373579869'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-0.020915', '-84.2', '0.000248396674584323040380047505938242280285035629453681710213776723'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-76.09', '0.0212', '-3589.150943396226415094339622641509434'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('5.5438330', '-1029137.3', '-0.000005386874035174898431919628216759804546973469915'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('6', '-22', '-0.2727272727272727272727272727272727272727272727272727272727272727272727272727272727272727'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-24.077', '1951789.43472', '-0.000012335859376887159257283511523895190685203526266580589086262045958945040026054148206461197'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-173648245', '-0.00000077', '225517201298701.2987012987012987012987013'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('0.003909285793', '-5380.4971', '-7.26565913956165871737018499647551152847940388258921280712148325e-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-99509.037', '1.016538634', '-97890.06897695538'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('197708682', '-118627.91', '-1666.6287216895248344171283132274689826365481782491'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('16225844', '0.0000001233', '131596463909164.6390916463909164639091646390916463909164639091646390916463909164639'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-2123.68659', '1893.270', '-1.12170297421920803688855789190131360027888256825492402034575100223422966613319811754266427926286'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('0', '-0.0000000000000000000121761598463', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.10981880570', '-0.00000000000000101', '108731490792079.2079207920792079208'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('1', '-4', '-0.25'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-18179003', '-147331727447', '0.00012338824308253344062211089157949279630698091288089992960061977328564784516043454247492639188'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-4886160', '2', '-2443080'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-2955.153579', '-1.4', '2110.823985'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('2.5', '-0.000000000000054366301', '-45984368147466.9391246610653169138728051408169189218887634087888377765483806'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('-799.2', '-18.646', '42.861739783331545639815510028960634988737530837713182452000429046444277593'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('0', '-7730750.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-17.8487823412', '7', '-2.54982604874285714285714285714285714285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('1843.40', '-5.5', '-335.16363636363636363636363636364'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('93758166.45', '-59380379', '-1.57894186647074111803833384088034'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('0.000000000000000000028', '0.00000370007', '7.567424400078917425886537281727102460223725497085190280183888413e-15'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('1', '-0.00000000000000151725384', '-659085496201479.37803208987100009580466772784704239074458364857392616650091984608191863267915670590756258'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('1.18', '147.003', '0.00802704706706665850356795439548852744501812888172350224145085474446099739461099'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-1', '0.0001050274026', '-9521.324675699444556196'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('151068', '-0.0000000000007817', '-193255724702571318.9203019061020851989254189586798004349494691057951'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('1165746.4', '54210098.36', '0.02150422956731193062531827510965615595315440781649967107715094726863727461423480804029295622181933'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-344.953', '-15.8', '21.8324683544303797468354430379746835443037974683544303797468354430379746835443037'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-247522439806', '2', '-123761219903'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('16.4131', '0.0000000006580318', '24942715534.41642182034363688806528803'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('24.14', '6.521', '3.701886'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('25194.6', '-436989173', '-0.000057654975355647999086695907680989615731280372019651846156838306838325259834297999872870992'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('346.01', '-0.0000000000000000011604272172', '-298174667804577239969.27293028679920556'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-7253986.6', '0.000000000000000001040', '-6.97498711538461538461538461538461538461538461538461538461538461538461538461538461538461538461538462e+24'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('0.0000000000013848905844', '-0.0000000038192393595', '-0.000362609005103389095401366660533338065060857833359370520490154684'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-315.3003', '-1.30', '242.5386923076923076923076923076923076923076923076923'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-0.00000000000097624807', '23974440745.1', '-4.072036884528911513157680911262659441396e-23'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-0.00000972384040183', '-6489.7', '1.4983497545079125383299690278e-9'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-340.6133115', '-0.000000000001381520', '246549678252938.79205512768545'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-2398.15210', '-14', '171.296578571428571429'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-4506.7756', '4067', '-1.10813267764937300221293336611753134988935333169412343250553233341529382837472338332923530858126383'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-0.0000000000002056', '8555298162', '-2.403189182969822016590051370789384301063474729660743e-23'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('-1890.634', '0.00000000000000129874859126', '-1455735169010480840.6735549493465249989787'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-215', '4.3', '-50'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-9045.91', '-93.909595', '96.325726887'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('0', '0.029309783', '0'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('-0.000000000000000072', '-11.4', '6.315789473684210526315789473684210526315789473684210526315789473684210526e-18'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-5', '7930.738', '-0.0006304583507865220109402176695283591514434091757917106831671907456784'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('2.52', '1.4', '1.8'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-2362.497', '7646.45', '-0.3089665138724506143373722446363998979918785841795866055489802457349488978545599591967514336718346'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('1.6', '131684.99', '0.000012150207855883954579789237938203890967376008457759688480820783'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-3', '-0.00000000031029503961', '9668217718.7576214892621950412493092576898122'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-0.0000000000000004155575', '-30.947327569', '1.3427896126845691837127043142521241072142153e-17'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-274.3080', '1', '-274.308'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('2.7', '-8.06', '-0.334987593052109181141439205955334987593052109181141439205955334987593052109181141439205955334987593'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('1355257.02789', '-0.00000000000000037743272', '-3.5907247996146174078389388180229843347974706591415815777709998221669811774665429112770085222076135847e+21'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-1.8560488417', '-79.0', '1'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('0', '-55610.94717', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-1', '0.00000000000000102635', '-974326496809080.7229502606323378964290933891947191503872947824816095873727286013543138305646'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-1048642006.2', '-0.0000000000000000000117799', '8.901960171138974015059550590412482279136495216427983259620200511e+28'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-10.606', '-308371.8482', '0.000034393541634583'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-1563.76', '-1.0', '1563.76'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('3620.41', '-0.00839', '-431514.8986889153754469606674612634088200238379'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-34.639108', '-421919490.29', '8.20988572397812942949457600417220109644629519729125192293329929449180744079249773972322457888e-8'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-8', '67714.5152', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-78539595.81', '-27567.48437', '2848.9939363299256311503623788941319348973299154898550505644124538593145487'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-12631.2256', '-10622.81721', '1.189065513441137334603538753727646980757941517850894094411326126922972818431844220729088493842209'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('1.4621430288', '583933', '0.00000250395683888391305166859896597726108988531218478832331791489'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-17.4045', '663.99681', '-0.02621172231234062705813300518717853478844273363301248390033681'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('889993.2', '-0.0000000090576728', '-98258484232285.36142307988868840570173830965'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-1429240.257', '-490.4', '2914.437718189233278955954323001631321370309951060358890701468189233278955954'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('49.299562', '-7459284.2', '-0.000006609154535230069394594189077820630564'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-9308.8', '-0.000000090', '103431111111.2'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-3180', '112.741', '-28.20624262690592'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-15.5696', '-7.6', '2.048631578947368421052'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-0.00007028933030', '0.000801688', '-0.0876766651116144934188861502230294079492'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-172.12151767', '-0.000000000008024', '21450837197158.52442671984047856430707876370887337986041874376869391824526420737786640079760718'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-167.292', '-31.31291781', '5.34258739524344569535980907682777199484496076095'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-29.5080', '1.2916', '-22.85'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-66.6420', '-18434630213', '3.615044035600151476713540519121667721407198047385101621620469442285526e-9'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-161.612097', '-12126', '0.013327733547748639287481444829292429490351311232063334982681840672934191'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('2', '42059.8', '0.000047551343563212378565756375446388237699656203786037974502969581405522613'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-538162', '422869947.0', '-0.00127264186972360085924952240694465809366206863596291462159641247808986529847'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('36', '3.274', '10.995723885155772755039706780696395846059865608'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-4.7855', '40.6', '-0.11786945812807881773399014778325123152709359605911330049261083743842364532019704433'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('353.14338096', '19.9', '17.74589854070351758793969849246231155778894472361809045226130653266331658291458'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('27145.87391', '-0.00000000000000013462451', '-201641394349364762776.1096400647994930492226118408898944181858'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('1', '-571.2813795', '-0.001750450891424512112949062082987075548468843451950808769533858052168493617075786381376359'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('89', '2.2', '40.4545454545454545454545454545454545454545454545454545454545454545454'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-0.0000000000000000005676736475', '-99940906931', '5.68009301628537769948086484010175807156744441931224083180018186e-30'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-2', '0.000000000000278785654264', '-7173970286527.2681655161538703269695'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-404537.8', '-65334.7', '6.19177558020469979964705'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('16203134.062', '10', '1620313.4062'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('11129875.4', '2037.690514', '5462.0048155163566708344601932028231447123476180642415259337071242802085302341452623555767311189'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-0.00000000000000010', '-41381717', '2.416526119493785141877994090965341046626943971416169126090152325e-24'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('0.000011380', '-939.665917947', '-1.2110687194937580380915434840947927246809264549787460761281687158465110383410384423797682e-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-102081', '15.22005110', '-6707.0077051186773'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('49804.0200', '-7', '-7114.86'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('14.12', '0.224636', '62.8572446090564290674691500917039121066970565715201481507861607222350825335208960273509143681333357076'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('71855082', '-4598.44013', '-15625.96879999'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('8.656024', '4', '2.164006'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-6', '-1812116344', '3.31104568416165667561574622606019605549123616314560429791035536292254753815078442888e-9'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('1515436', '127663', '11.87059680565238166109209402881022692557749700383039721767466'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('-5.5', '-188266070.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-72175.13', '-8', '9021.89125'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('0.00000000718317730486', '0.0000000440347595048', '0.163125162613344106476974134238442341342990115832326674658114845878539402'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('3.1', '2.32', '1.33620689655172413793103448275862068965517241379'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('2575460.6269', '0.0000000000000000066369929', '3.88046313398949093346174892e+23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-102052425223.2', '-5.0', '20410485044.64'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-6.27', '4', '-1.5675'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-1.313021', '2081.6', '-0.000630774884704073789393'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-3.366795', '1777.602', '-0.0018940094577'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-57628.4', '-446564.474', '0.1290483308799884515667943617028523410933042559941747627689702875916636'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-615.29440145', '-84.0341', '7.321960983100907845743573144711492120460622532995533955858395579'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-5582198049', '-471953164.3', '11.8278644392171945863569666080105144026470509671291974003192418049012750310317179920219469116504'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('1023670813', '-46.346047', '-22087553.9'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('-1.489', '-2651742.7', '5.61517525814250379571140141160754397476044715801423720334e-7'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-4.9', '-0.00000000000473', '1035940803382.663'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('16249004.8', '4798211827.3', '0.0033864709155917927600328225718'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('808.0', '8607051.1', '0.0000938765194504305894036112'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-0.0000000000002115738944', '-43.9', '4.81945089749430523917995444191343963553530751708e-15'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('231.525', '-254.160', '-0.910941926346'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('0.004330', '33883.93892', '1.27789157282544174767e-7'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-0.064056046', '0.00000000006905', '-927676263.577118030412744388124547429398986241853729181752'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('3.74', '2.304', '1.623263888888888888888888888888'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-0.00000000000000008849245494', '4748.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-0.00000000000001435592', '-493380', '2.90970854108395151809963922331671328388e-20'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('35.32695347', '-0.00000000000703246216', '-5023411810295.4712521339752221290302683974911000445397348572437963889449495'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-103.47554767', '364.6', '-0.28380567106418'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-54.0643414821', '36523221', '-0.0000014802730975479955615086632145614977386578'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-151.46', '-12485.2', '0.0121311632973440553615480729183353090058629417230000320379329125684810816006151283'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('1703565.3599', '-2025802.6', '-0.8409'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-2534.536', '-2.4', '1056.05666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('0.00096', '3.1', '0.00030967741935483870967741935483870967741935483870967741935'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-2.15', '71252.588329', '-0.0000301743424403425365704233152672395461211624948435212'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('0.00008312', '0.0539653', '0.00154024901186503178894585965425931107582094419932808675204251620949017238855339'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-430', '0.000000000000118546277487', '-3627275432981474.940271820633284192902916707002'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-808820928', '-0.0017', '475777016470.588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('916.17962481', '-282479.3', '-0.0032433513705606039097378108767615892562747075626426431954483036456122626'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('0.0000012273818', '208020665.891', '5.900287813919081346067702e-15'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-511248315191', '-180948.231', '2825384.433799742424671728346435174599745050837219845492714432781605916887908122185510618'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-1', '22081167', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-1.699677', '-85162.06', '0.000019958148029768185504202223384450775380492205097'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-998641097.19', '-16.9172897211', '59030797.11074819395941497103146162421254509397656638'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('212.16740294', '1572.3589', '0.13493573441788639985438439023050017397427521159450301073120138156752888923769248'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-211336.5909', '9.62149', '-21965.058520042114059256934217049542222670293270584909405923614741583684023992126'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('1.36768', '-4526', '-0.000302182942996022978347327'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-4.6661', '8.66', '-1'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('0.0000000352', '2181349.67771', '1.6136798404991751871451949779e-14'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('0', '2.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-5', '0.000000000043501390', '-114938855976.7860291360804792674440977633'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-236277460749', '681.9', '-346498695.92168939727232732072151341838979322481302243730752309722833260008798944126704795'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('311', '2.40', '129.583333333333333333333333333333333333333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-100.925767', '-500.2', '0.201770825669732107157137145141943222710915633746501399440223910435825669732107157137145142'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-273471796', '-308.40', '886743.82619974059662775616083009079118028534370946822308690012970168612191958495460441'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('-206.253', '37617.8137197', '-0.005482854520383457743277778061233467488667495061608281272505660236'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('36648083.4', '-0.6364', '-57586554.6825895663104965430546825895663104965430546825895663104965430546825895663105'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0', '2.50230', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('-159', '0.0000000000000347', '-4582132564841498.5590778097982708933717579250720461095100864553314121037463976945244956772334293948127'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('1', '4.076946653', '0.2452816004507086691085040302586466048615230678614425323460321471123257'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('6.3', '5.7303908215', '1.0994014538001262921365301506250850747492947414494248906788983485042041996785995305782827'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-0.00000000042', '-5', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-0.000000000000000000922546501', '319.02', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('656909.320', '13246.7992', '49.59004134372324448007032521486398012283601309514829816398213'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('2', '-0.0079292', '-252.23225546082833072693336023810724915502194420623'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('17098545635', '-5046745176', '-3.38803427530140071411443897321119666534159877304651135411319606520192570150880944736647824756'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('29', '1969.07179352', '0.0147277514692129710661135122185059778805012273628863880491832723208506691523957308755955'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('0', '-63049974183', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-8.136797', '-268.885', '0.030261252952005504211837774513267753872473362218048608141026833032709150752180300128307640813'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-218.6', '-11670862', '0.000018730407402640867486908850434526601377001972947670874696316347498582366923711376246'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-16720419', '-24.4844', '682900.9083334'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-5', '-1', '5'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('189666', '1148004.40', '0.165213652491227385539637304526010527485783155534943942723564474143'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-4.624690795', '37651159', '-1.2282997171481494102213427215e-7'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-903888809', '1.166952', '-774572398.00780152054240448621708519287854170522866407530044081'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('926476.5835', '0.00563907060931', '164295971.3911729543425435735936'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-1.15128', '-0.00000000026989', '4265737893.21575456667531216421505057616065804587053984956834265811997480455000185260661751083774871243840083'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('0.000004894020116', '-1.1790', '-0.00000415099246480067854113655640373197625106022052586938083121289228159457167090754877014418999'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('7748609', '-123.269089', '-62859.302870324611549615654253760243170126778498379265218711886481127478763147182826994040655236772294148'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('10712886249.5', '-0.000000000000000000275092754', '-3.894281508229038995334642656563756673867171361409250350519956e+28'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('0', '-396.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('0.0000008557', '-6.2', '-1.3801612903225806451612903225806451612903225806451612903225806451612903225806451612903226e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('0.000000000000000944', '7600017284', '1.2421024383554546663580982456092003803395560804095666054014200318231e-25'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('-107898.743', '-2441.7', '44.190008191'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('0', '13879311.683', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-92630.816', '-131044.0', '0.7068680443209914227282439485974176612435517841'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-73.4429', '16619210', '-0.00000441915710794917447941268'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('26097.0', '-0.00001000', '-2609700000'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('10397870028', '-1.9683', '-5282665258'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-0.000011017', '6', '-0.00000183616666666666666'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-0.00009577512', '0.0000000000000000006721', '-142501294450230.62044338640083320934384764171998215'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('0.00000000001915129223', '0.000000000000000368382', '51987.589594497016683768479458822635199331129099684566564055789913730855'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('36.0', '-2.9', '-12.4137931034482758620689655'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-6264.93', '-30.685', '204.16913801531693009613817826299494867198957145184943783'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-1354.9273761', '-1', '1354.9273761'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0.0000000005858', '-3.244', '-1.80579531442663378545006165228113440197287299630086313193588162762022195e-10'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-0.0000000000000000431435', '0.000000033279193', '-1.296411e-9'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-3', '64.431247157', '-0.04656125920843782992862548044748846114594540751456464935737391596490900127246159'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('5.4794', '-384.98124', '-0.0142329013226722'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('0', '-8.386', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('4830.7056843', '-21348.245121', '-0.2262811606724571297843306227793429691152364392040840292167263615709914444915746103'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('2', '1.7', '1.176470588235294117647058823529411764705882352941177'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('0.00000000000023428329582', '1', '2.3428329582e-13'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('5.711', '47494.99695', '0.00012024424395715220695'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('3.34147426764', '0.000000000000361719', '9237762649017.60759'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-19.9', '0.013696', '-1452.9789719626168224299065420560747663551401869158878504672897197'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-1483166687.75', '-1.819', '815374759.6206706981858163826278174821330401319406267179769103903243540406816932380428807036833424'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-5648.6465', '-2803396092', '0.000002014929861720018406874486004669796051067620593658157956795781964013667462870958443213810402'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-2032', '-75185.56', '0.027026466252'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('45.49507152', '-17965.8272947', '-0.0025323115253045570066297003831901140467329'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('3217.36', '528742465142', '6.0849283197557059817291008593275512266174569e-9'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-0.00477', '-103', '0.0000463106796116504854368932038834951456310679611650485436893203883495146'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-1.8', '-1.57443061', '1.1432704550885'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('-35.079', '-3475909.119', '0.000010092036011025523017996950109557798251514066700200167'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('28633605453', '-4499.466765', '-6363777.520423578459302165775637193755336028134880557'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-0.00001962946', '1.17', '-0.0000167773162393162393162393162393162393162394'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('20.9', '-81191', '-0.000257417694079393036173960167998916136'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('13859.720', '0.002234750963', '6201908.055738915907114434030115238393120227061291571753536816800109820559008'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('66862279', '8', '8357784.875'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-0.33207744', '86.5469', '-0.003836965159930627209062369651599306272090623696515993062720906236965159930627'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-0.00000000072', '0.011', '-6.545454545454545454545454545454545454545454545455e-8'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('100.7246', '2', '50.3623'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-290.44553', '0.00000000000000000288851173', '-100551964869465840805.15400918936202485146217495194315863138281249'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('5', '3', '1.6667'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-7', '51.074', '-0.137056036339429063711477464071739045306809727062693346908407408857736'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-0.000125563936', '14842', '-8.46004150384045276916857566365718905807842608812828459776310470287023312e-9'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('-0.00000000000215831568', '1', '-2.15831568e-12'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('83.467991', '-160369', '-0.0005204745992055821262214018918868359845107'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-653.190854', '-1', '653.190854'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0.0000000000000018012391', '-347451712', '-5.184142249959614531989987719502156316904260929357573578454550829786e-24'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-0.0000000000899441471', '79.7', '-1'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('18523658.1', '40.5', '457374.27407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-9.141003204', '-1097.67920', '0.00832757257676013173976513356543514717232502902487356961851878035039745674'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('26.8', '4890416541', '5.480105789622553135397633606196328e-9'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-1.5', '-0.00324588908', '462.1230002104692992158561376348695193244249738811'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-2544699.37', '-229680', '11.0793250174155346569139672587948450017415534656913967258794845001741553465691396725879484500174155'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-47.19', '-0.00000000000000161461381', '29226803157344479.7923536'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-13.76945', '104171642.7', '-1.32180405752591631157986913457783074779140446443204643829620630528849287311e-7'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('225855509.5', '4', '56463877.375'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('0.0000000000000120918545', '34.696', '3.4850860329721005303204980401198985473829836292367996310813926677427e-16'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('5387.3366', '52.3632', '102.884022'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('3.8', '-26369.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('8', '-1', '-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0', '-6.402', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('0', '-3', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-9916091.06', '95.15076964', '-104214.51237354384472638302455668922952917903'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('0.000000000000000000106526', '-0.00000000436617', '-2.439804222006930559277352920293987636761738548888385e-11'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('16.0', '-31.1', '-0.514469453376205787781350482315112540192926045'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-0.001435007', '-0.000000364478', '3937.156700815961457207293718688096400880162863053462760440959399469926854295732527066'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-27334994', '1.8', '-15186107.77777777777777777777777'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('0.000000000000000000449195', '-0.000000056604', '-7.935746590346971945445551551127128824e-12'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-1.01546', '-244.337', '0.004155981288138922881102739249479202904185612494219049918759745760977666092323'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-24376.6', '1', '-24376.6'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-0.00015178729927', '-17287059', '8.7804003717462872082521382034966155897e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('6.847', '-331569.11', '-0.000020650295197884989949757382405134181528550715'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('12', '1', '12'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-41177.8', '0.000000000000001601174', '-25717254964170040232.9790516208731843010191272154056960705082645608784554333257971963072095849670304414136127616361495'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('9.7', '-96483.25', '-0.0001005355851922483954468780850562144206377790963716500014251178313334179766954367727040703956387'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('-1935', '-0.000000000879301578', '2200610175636.46405738623614752571273106483609654115735022597673536757828950467321918078031698926394966619747'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('61.519', '-7', '-8.788428571428571428571428571428572'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('0', '7467389320.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-9417.3', '0.0002750016', '-34244528.0318369056761851567409062347273615862598617608043007749773092229281575089017663897'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-2', '5.2', '-0.38461538461538461538461538461538461538461538461538461538461538461538461538461538461538462'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('228504', '-16257', '-14.05572983945377375899612474626314818232146152426646982838162022513378852'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('0', '4.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-7', '-1.846', '3.79198266522210184182015167930660889'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('89.4', '-0.0000000000000115477', '-7741801397680923.473938533214406331996847857149042666505018315335521359231708478744685088805563012548'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-0.0000374074', '-9751265', '3.836158693256721051063631231435100984333827457258109588858471182969594201368e-12'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('0.000000021799764755', '-1355736924.87', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('29.054', '-12.2428480', '-2.37314062871645551753970971460235396208463912971883666284184856334'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('2', '662578.45207', '0.00000301851'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('45.3', '6.868840', '6.595000029116997921046348437290721577442479370606972938662132'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-204303.3533', '1', '-204303.3533'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('1.04', '-1', '-1.04'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('10911.805832', '-0.00000000014725661492', '-74100615703600.474968734260240185072970846205025612577078788658603235533346049294068615820929261926021734'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('109994.8', '-33.89433', '-3245.22715156192790947630473887520420082'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('0', '-0.0000000000000001972885', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('0.0000000001829998084', '0.0000000000000000927080191434', '1973937.2072758604029349566645268001499078182061383370648849962471476338865469'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-122741857.9', '-9.19018', '13355762.117825766198268151439906508904069343581953781101131860311767560591849'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('-302441205691', '-0.00000000003062798189', '9.87466973100655702392411203035356111084601e+21'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('73905087.2', '-0.00000000212', '-34860890188679245.283018867924528301886792452830188679245283018867925'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('930.90', '-3.49755383', '-266.15744753240867203464885628365010753815903385252543775716526999099825148366622851949'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('0', '697494057', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-2', '4722857.909', '-4.2347240559339046589979e-7'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-93.2', '0.000000000000000000012', '-7.766666666666666666666666666666666666666666666666666666666666666666666666666666e+21'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('0.00779751', '-0.000000000000230916455685', '-33767667084.91669875510630609997966719831173559786573510087001576351'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-79577437', '0.00000000000000000921603', '-8.6346764279196139769510298903106869226771180215342180960782462730698576285016433323242220348675080267750864526265648e+24'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-9', '-4.7', '1.9148936170212765957446808510638297872340425531914893617021276595744680851063829787'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('0', '-93.161757', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('0.00000000000000955711816', '-0.000002757595', '-3.46574393991866100714571936778243360609516625900467617616074876840145126459832e-9'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-4848.3', '3', '-1616.1'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-6.5', '-0.56', '11.60714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('6.76843', '-0.0000000000000000000149', '-454257046979865771812.0805369127'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('791937322.74', '-1.48513147', '-533243917.280939444371211122473891149852208033811309647892655'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('-7.681', '-318681.61501', '0.00002410242586400528860555682546652222703633147375'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-60629466.21', '-6', '10104911.035'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-5', '378.6', '-0.013206550449022715266772319070258'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('169365429578', '0.000000000000003750', '4.5164114554133333333333333333333333333333333333333e+25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-72.26816939', '-99300810870', '7.277701839173309864433335618742666970127229938903e-10'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-615.3', '-237.99', '2.5854027480146224631287028866759107525526282616916677171309718895751922349678557922601789991'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('10000.265176', '6', '1666.7108627'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('15.089279', '-3526', '-0.0042794325014180374'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('11.93', '-476103.58589', '-0.000025057572245961'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('0.00000000000000057027', '11902546551', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-503944526.66', '46.8', '-10768045.441452991453'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('31910346.2914', '-15.345731', '-2079428.2326074919467831151217'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('0', '-0.0000000000007322481773', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('-4.69', '-4', '1.1725'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-16.9850', '28555184.76', '-5.948131711545612846526719514036161327e-7'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-51521013', '-35.308', '1459188.08768551036592273705675767531437634530418035572674747932479891242777840715985045881953098448'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('39364.463651', '-2', '-19682.2318255'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('0.00000029202905324', '-2189.5379715', '-1.333747379772262606773430875848137808831e-10'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('-4.5507392', '-241.78', '0.01882181818181818181818181818181818181818181818181818181818181818181818181818181'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('16.2836', '-57', '-0.285677192982456140350877192982456140350877192982456140350877192982456141'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('3.1', '0.00100', '3100'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('36.9', '0.000000000000000000146420913', '252013180658148197723.640747957909537143782187'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0', '-1.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-178325.79522', '-7.7356', '23052.61327111019184032266404674491959253322302083871968560939035110398676250065'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-0.0000000000468001021084', '59.857', '-7.818651470738593648194864426884073709006465409225320346826603404781395659655e-13'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('0.00000000000059958', '0.00000000000000988455', '60.65830007435846851905246065830007435846851905246065830007'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-0.00000243467', '-6', '4.057783333333333333333333333333333333333333333333333333333333334e-7'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('0.0042', '3', '0.0014'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('-1960.96871613', '939803.491', '-0.0020866'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('102512.0', '-0.000000000000000000016', '-6.407e+24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-270.92449', '-1773880.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('205674.52799', '1.33', '154642.5022481203007518796992481203007518796992481203007518796992481203007518796992481203'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('0.0000441990616', '6.96', '0.0000063504398851'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('0', '-13844.13', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-344.0', '-1375921.3', '0.00025001429950971759794691745814240974392939479896124872839747447765'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('7', '6055.93', '0.00115589182834015584724394106272694697593928596'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('0.0000000086955', '-1.409328', '-6.1699618542e-9'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('-112561144099', '12726026.1', '-8844.9562506397814161327234744552346941988434237141789297446121063668099816328366637563316014258370882958'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-880056994.8', '62', '-14194467.658064516129032258064516129032258064516129032'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('2.4', '14.5', '0.165517241379310344828'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('2.2053382305', '15285423607.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('4.2', '-13879644.5293', '-3.0260140964948912756879101350430288789629484996093098033920986060278064645953483e-7'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('0', '-3.067', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('-0.000198747592', '11443941', '-1.7367058428560580660106514005970495653552e-11'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-7866052296', '5559461.4595', '-1414.8946536104681130041027492799727717943360625252302822'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-2303.7', '-191766.627641', '0.0120130391212421'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('0.000000000097', '40.3996', '2.4010138715e-12'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('2775578.4', '450.4', '6162.47424511545294'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-0.0000000004032838', '0.000000000000214', '-1884.50373831775700934579439252336448598130841121495327102803738317757009345794392523364485981308'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-0.0007736003596', '6.140', '-0.000125'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-8', '718737.77', '-0.0000111306241774381774871800601212316976190078336915562403239223117493'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('20.597', '211523', '0.0000973747535728975099634555107482401440978049668357578135711010150196432539251050713162'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-0.0000000001384248666', '43747263.81', '-3.164194844303795099454015430456700830177017646946637689613255837588348591166438e-18'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('3', '10761.278', '0.0002787772976406705597606529633376258842118937917968479208510364661148982490741342'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-58712', '-6076444.1169', '0.00966222989473536254188076428485783'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('0', '2222570', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-753067', '29', '-25967.8275862068965517241379310344827586206896551725'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('2068746.523', '26663971.323', '0.07758583663100199022067482591'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-170411.0', '-0.000000000000000923174', '184592503688362107251.7206940403434238832549443550186638705162840374620602399980935338300255423137999987'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('0.00000038326528', '5.184', '7.393234567902e-8'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-0.00000000000001092', '-0.00000000000000000227083393', '4808.806'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('-0.00000000000029', '621.83', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('2950.6', '-2657.941', '-1.110107410209632192738665004226956128823025040811665872192046399826030750870692765565526097080409235'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('0.47939552', '-3881.69149183', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('0', '1417.60582117', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-0.000000186729799', '-111357.44676', '1.676850578322293423244072949863671964096673942096e-12'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-26651082640.7', '-4.9', '5438996457.285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('0.0000000000000018629', '-237', '-7.860337552742616033755274261603375527426160337e-18'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-0.0000000017', '0.00000000000177', '-960.451977401129'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-11.7760', '-36788.11', '0.00032010342472065023182762039147974712481831765752576036116016832612493547507605038693209'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('3.2055791071', '-345', '-0.009291533643768115942028985507246376811594202898550724637681'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('0.00000000000000000024877145', '-397.8', '-6.253681498240322e-22'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-4.035', '-17306', '0.00023315613082168034'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('0.24', '5', '0.048'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('7.3', '0.000000000000010341641502', '705884070588622.8853342822055213802943137450095685979813613539047236642452315400325506274738781793056976149665026'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-0.0000000000000000008919436032', '305.8173', '-2.917e-21'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-0.00000000000289', '0.1070651024', '-2.69929223922359971515798036541176464610563899297218623871601e-11'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.00000000000000175906577', '-981337', '-1.79251957e-21'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-2812463.8', '-299.652460965', '9385.7523844214359162388132599663797325'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-473960479', '765598.68', '-619.0717035'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('3674759.55', '50.2', '73202.381474103585657370517928286852589641434262948207171314741'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-0.0000219', '2314833250.79', '-1e-14'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('8.7298024', '-466.52', '-0.018712600531595644345365686358569836234245'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('82.70455184', '6362544', '0.0000129986608878461194138696722568834101579493989'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-10.20008', '-5', '2.040016'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('14643850.501', '2.4', '6101604.3754166666666666'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('0.00000000000000000786002', '0.0000000053443', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('399.150', '0.009672', '41268.6104219'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('3.552', '689368375511', '5.152542713272929982489453159129746031190798066507624e-12'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('0.000000000008575422', '5', '1.7150844e-12'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('0', '-80802828.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('37009.867', '-2368.6', '-15.6252077176391117115595710546314278476737313180781896478932702862450392637000759943'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-44.3025265', '-848426.1538', '0.000052217304124318002607052588010400393199194185425640281576147705973'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('0.0000000000000092', '4.6', '2e-15'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('32161496195.4', '-1134104527', '-28.3584937981646906872808911730937830918295946454678070427982693344809'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('24.54073', '6', '4.09012166666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('0.0000000000001885095', '617379873', '3.05337942236e-22'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('-1.683046172', '-94685.625215', '0.00001777509699258313124716266890417659687626323078718026501653490718834030988871682870474'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-30785853314', '1.526001', '-20174202581.7807458841770090583164755462152383910626533010135642112947501345018777838284509643178477602570378'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-0.0000000000000253748445', '3', '-8.4582815e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('0', '-2631.4486', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('0', '650.53', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('1.7034706', '-183997774.362', '-9.258104376026669843725095916495e-9'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('-4106.133278', '2', '-2053.066639'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-14.82528089', '1236.4941006', '-0.0119897708228499735714792459237067548043908556598575655185782615'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('0', '-24146874.220', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-0.0000000001425', '-58741317.18', '2.425890443745749182398568747926738267941576995464983204518601841812e-18'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('5891398', '0.009468', '622243134.76975073933248838191803971271651880016899028'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('6173', '29807783.1', '0.00020709356275475582080439923759'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-0.00000003589532', '8.8', '-4.07901363636363636363636363636363636363636363636363636363637e-9'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('0', '-0.0000000000000006638389', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('901.626592', '8167935.7', '1'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('9358.84', '2594.09', '3.60775454976504284739542575623821841185155488051686718656638744222444094075379035'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-2', '-1.4', '1.4285715'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('3529307', '233817.80047', '15.09426139885713210259076901665458558831853166649'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('1.31', '0.0000000000835735480', '15674816151.158258830892281849754661606564794879834466283518320892634593'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('172119', '1313.7', '131.018497373829641470655400776432975'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-2.0', '-0.0000000000000000000158', '126582278481012658227.848101265822'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-4.2', '-1408.340483', '0.002982233380846441236611104361756815308418567983463981699658348882384573192'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('702263', '-19', '-36961.21052631578947368421052631578947368421052631578947368421052631578947368421'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('0', '-16.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('1.39', '2479563.189', '5.60582608326502301530981471e-7'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('130384.6', '7738.439', '16.8489536455608166'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-77.37646245', '-15575006446', '4.96798911244572591812845789688349257e-9'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('-0.000000000000105997475333', '1566533913.92', '-6.7663696515677920855567403738e-23'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('-0.078', '-9.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('1459231246.57', '-0.00000000000000000248564', '-5.870645976770570154970148533174554641862860269387361001593151059686841215944384544825477543007032394071546965771390869152412e+26'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-6980419.8336', '40', '-174510.49584'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-817230113.72', '2.9678', '-275365628.991'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('-15.129', '-0.00000000000000000012903362315', '117248509579652146658.3339909882'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-88.78607', '-8.02', '11.07058229426433915211970074812967581047381546134663341646'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('0.0007810', '160509488837', '4.865755947881176168373644971512582227188e-15'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('439.43430', '4', '109.858575'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('6', '-2.062276', '-2.90940688831174876689638050387048096375072977'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('7.22', '67307.673', '0.00010726860219934'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('2.7', '18020.888185', '0.0001498261335558028712112560061'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-1.8', '61', '-0.02950819672131147540983606557377049180327868852459016393442622950819672131147540983606557'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('358020', '99441.0', '3.6003258213412978550095031224545207711105077382568558240564756991582948683138745587836003258213412978'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('0', '-1.22', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('0', '490.85100', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('8206.27628159', '4114304', '0.0019945721758990098932893631583859628'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-0.182715262', '853.02', '-0.000214198098520550514642095144310801622470750978875055685'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-8363.1', '0.00000000000000091', '-9190219780219780219.7802197802197802197802197802197802197802197802197802197'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('1169.5', '-15463.00667', '-0.07563212155039444214376711511823980866'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('908786', '-200681.3', '-4.528503652308411'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-0.0000000000000035169', '15994.995', '-2e-19'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('0.00000000026', '-8587343224', '-3.027711752260573206e-20'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-6703488.435', '11.1', '-603917.8770270270270270270270270270271'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-170483104.5', '-10', '17048310.45'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-13213.36', '0.000000000000002009', '-6577083125933300149.3'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('8.76590183928', '-0.000000000000000131359888', '-66731952750142417.90461940710547'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('0.0000063876', '-1929.4276714', '-3.31061904765009062676e-9'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-0.000022982731', '-1326798.381', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.000000000000000000899452', '-0.00000000000000010457', '0.008601434445825762647030697'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-128.5', '93543.2', '-0.0013736968587775487689110485850387842194836182640747804223075541567960044129343447733239829298'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('38279', '72312.99', '0.52935164207703207957519112402902991564862689262330322670933673189284525505030285707'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-2.28', '2.6', '-0.87692307692308'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('1.55', '-184.292', '-0.0084106'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('1.0', '-1923', '-0.000520020800832033281331253250130005200208008320333'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-0.117024182', '-21025', '0.00000556595395957193816884661117717003567182'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-478713.598', '12517', '-38.24507453862746664536230726212351202364783893904290165375089877766'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('-13.57330521', '-726098987.961', '1.869346388722558733493483109779855307113324826e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('90.9813', '161525.59', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-6', '40925001', '-1.4660964821967872401518084263455e-7'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('0.00000000000000000041', '-4.5', '-9.111111111e-20'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-3', '-0.0000000006696', '4480286738.35125448028673835125448028673835125448028673835125448028673835125448028673835125448028'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('10.2', '-0.00000000675155509', '-1510763055.92286887493944746883491696'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-1033130.9', '-8332.83', '123.983196585073'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-4.03', '3.53', '-1.141643059490084985835694050991501416430594900849858356940509915014164305949008'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('100.9', '0.0000000000000000100', '10090000000000000000'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-16.7', '-495.59', '0.0336972093867915010391654391735103613874371960693315038640811962'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-96.6', '-495003.5298', '0.0001951501235'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('2.1', '-129939161', '-1.6161409569206007109742689503743986772394197619915369470486268569950209236767351453e-8'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('0.000000013437161974', '103.31', '1.30066421198e-10'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-0.007308316', '2784', '-0.00000262511350574712643678160919540229885057471264367816091954022989'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('1', '-0.000000000000017670059', '-56592906679032.5940620798153531915201867747018'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0.00000000000000089362492', '64229.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('0.0000000001502918671', '0.00000000000482694', '31.136054539729103738600438372965066895382996266785996925588468057'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-17086.184193', '-5.4439535869', '3138.5616942280988938605383244950971020189'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('0.0254426530', '-458197.07198', '-5.5527751170593589e-8'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('85008.0462', '-84385.98078', '-1.0073716678321458030223299373021'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('0.000000000000000001936', '1', '1.936e-18'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-0.0000000010049430843', '0.000000000871553', '-1.153049'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('248.283056', '-8249.702', '-0.0300960029828956245934701641344135824542510747660945813557871544935804953924396299405723988575587'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('48518.8', '2042', '23.76043095'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('2192632.42', '-3.847', '-569959.03821159344944112295295035092279698466337405770730439303353262282297894463'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('-45908816104', '12341.507108', '-3719871.139096215476570951062162609905454668559592908350979009135129689867371423467481423906497498'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-2.17011', '-87.7089375', '0.0247421763603053565664274521624435366122181106115896113779738809400125272296224'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('192.7', '-103777225', '-0.000001856862139067603705919097374207105653480327692323628811620276028772209'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-5', '-6389', '0.000782595085302864298012208483330724683049'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('168756033.40', '312791485989', '0.001'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-0.000000000000000999', '27.8637832', '-3.58529921378371907516133702906502660414038823e-17'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-111914.7041', '0.000000831', '-134674734175.691937424789410348977135980746089049338146811070998796630565583634175691937424789410348977135'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-8305.7958', '37623.0', '-0.220763782792440794'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('575781866', '39425376.5337', '14.60434665748426061683343511539359013125051608769944423598665'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('8.5', '104.7', '0.0811843361986628462273161413562559694364851957975167144221585482330468004'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('0.00000143', '-1135.09', '-1.25981199728655877507510417676131408082178505669153987789514487837e-9'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('0.000000000000000000010446', '0.0000000000000000704440', '0.0001482880018170461643'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('-4.5', '-96852.6', '0.0000464623561990075640715891984314308547215046369431486609549'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-1227.44993882', '1.94852', '-629.9396151027446472194280787469464003448771375197585860037361689897973846817071418307228050007184940364'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('81549.77863', '-344.6631181', '-236.6072096125449'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-1', '4.1', '-0.243902439024390243902439024390243902439024390243902439024390243902'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('14.132', '1773988', '0.000007966232015098185557061265352415010699057716286'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-1.3227014', '31.6', '-0.041857639240506'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('1.1978', '0.000000000009367527', '127867258882.73393821015941560670174743024493017207209544205210190480369045106568681360619510357429'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-1023459.1258', '-6', '170576.520966666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-3.53665238783', '140942000.890', '-2.509296281801920713458660761318783062722843965437335008448665709871347e-8'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-4', '0.00000000059523', '-6720091393.24294810409421568133326613241940090385229239117652'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('0.0004846', '-92789.337', '-5.223e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-5296416.381', '3271.11', '-1619.149579500536515127892366812'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('9', '113372725.7', '7.93841723785952867851002015734371639968430255355499493e-8'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-188.1', '-65.559116130', '2.869166198443072267820093931458'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('264105.994294', '4.228', '62465.9399938505203405865657521286660359508041627246925260170293282876064333017975402081362'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-1632935027.5', '5', '-326587005.5'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-0.000000000000000000159617451', '-14742180', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('9420.387558', '-2.7899', '-3376.604020932649915767590236209183124843184343524857521774974013'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-12.7', '-0.0034855', '3643.666618849519437670348587003299384'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-9951.6613', '0.00000248255061', '-4008643876.1463960648117461742300593017920387935213'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-4029471522.6', '-0.0000194', '207704717659793.8144329896907216494845360824742268041237113402061855670103092783505154639175257731958762886597'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('1', '-66871334.88', '-1.49540905949386365831134729099339313204e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('909516', '-1.17640904', '-773129.04701922385771534023573977296196227801853681777215856824765644439454495'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('13196.6012', '-3.68', '-3586'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('2', '-0.0000000000000000021855345112', '-915107947163858997.31383'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-1872907', '7', '-267558.14285714285715'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-2', '-88.0', '0.022727272727272727272727272727272727272727272727272727272727273'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('9.7', '-267.844331', '-0.036215065533718538922520633822935009216230154223424650342888907363135492309523624003824819'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-2749.160035', '-0.000000001363677066', '2015990518241.94864035353660483133768563355746865658588409523050525512027640127519751072795412'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-133043843', '-2161.2339', '61559.206062795887108748386743332130779551440498874277328335447634797880969755286551816534064175099234'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('1.5', '0.00000000000361964685787', '414405067372.423947871882454568264051104256736485079886692'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-1199.8951', '-289851.54', '0.004139688545384302598495767867923006377678724770618779531067'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-932.59698', '-4.168240', '223.738791432355142698117190948697771721398000115156516899218854960366965433852177417807036063183'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('76943694944091384167086915802330', '-3170514344.13111437411632629436402363000882134793762203080559731', '-2.426852131627177782103584719976324063198598249615667667537013034965147477765909459742787670213e+22'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-100106813802380591049673190434.29485007726830983381860757169221843019100', '-78094528555018220969404221099599857932226474465981358723152985003774326996070488958663.442862362122064587341729645', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('2765444538823009380150927888.62817583856680697300833760', '-373748288687906995883.519458069547968158219485', '-7399216.591817636693983101292832142580414091203843524104084009183630806757'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('0.0000172463179744500990608615554398722487', '128351898662310623329971900021427807014001736937674026359996931286121280901491747367836548202.528608641660908590739943216651336106395324584507151', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('1618182994977486168089504.303412002229357379185662538096814339710756228978272205292369429799229740090454', '-1', '-1.618182994977486168089504303412002229357379185662538096814339710756228978272205292369429799229740090454e+24'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('0.0000000000000001522032939763705088667535980533375348092536476465289413241', '1496543943364674787461682993652979296106902960456836.034677750383049103427390868675285804492754316540692799996989618573', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('289251150440844894569227868596141248263971687018908.7582', '969818345137713519457348076418917350.37856042901482781836418515983', '298252917044760.00160068480697641721380359737601457865036690355925562692260445875'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('-2213024.10057343', '-0.00000000000890742736591171593701106620816057819688709922018889419831412741863646672006726805124790913781880723722136288', '248447055436293962.98257200988127959945635068362403073'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-15000278752002677229489373453133974451779691958658411412581239029394262255826590548325824084926.364426980013744537479550093154967968151133218', '19930817564922229.5291352024629512480065750746678111999803194282693935048894', '-7.5261733258764132558180496549931107141952632304821423841286112570949320236190648553080458511753045259342783429114610461572193346219434419429e+77'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('2096800095471614267703827121104.6754238308397', '2.973744016791308902667556831639027', '7.05104435227776125703251584926381124242257216881232643916317132478678635644883e+29'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-576734896916364067204534325671000853418944286761094369396994587390.20170231389237709680027328398585710017952537281946222360187352', '482009602275141687123306632546133845144058354871522511369929211612892', '-0.001196521592503775676990724935172199634474240903524148649627067119770277994733693557'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-75918192392719163505045309838518111893013980009840517848891803953427.331330077457915525677681132397253540608104431728701657413', '-60979444819.8751292844264416314741570622847181849330960883', '1.24498005216300401626112591056125561055479097283160657526274169782872486314816546784862028914263938033873610945100941389665795564937849448482476657e+57'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('294.95', '0.00000000019352898985320522149531968704', '1524061073349.9110789035044962295678018844264382'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('-0.28285407443755989683129372477710347255628834145187398883521459316293173768845235732814560306340433698915', '0.13871292707912833655802036597064044560547677333278215519941645627237614443', '-2.0391327642895655512488938334656344761249691410161901311361129106689190000978968816312793966'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('242992584878322186712025587579252842.56039954525291656310959074824986645465943491015032457106137684405819694', '87473659275731441930066028841855978813198.22321903332667067910515', '0.00000277789436145994'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('2.269347201823999184', '-7.241321231807619199976531960675934417862803419339662663862610722343621731', '-0.3133885556'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('3417885238696572270129533944698388854525514341906650023562052290280297627647749736866679.81692498536029901538050463542979536148441', '3298004280850374294213354990796411195649603604998968859911.9799801664027118', '1.0363495458578626394360904317930653776117e+30'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('-11601794306', '-81767908348879851406690153959787322235864066.27197447304998889596792931520034109538966807267862795165181056608451', '1.4188689108321717760383402370309730605641516497841200518e-34'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-0.00000000006616495227868586', '235258142311710116186006815624097650601046483181302591778203830815439582160063948086684271928090450039326479.93618472866635377602947742', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('0.0000000000000007067996790061306734918199720686295541286585430436464239709795110073573528404300274616929677689236', '-971695691184134545850288955136758986951477249164414605379951990283064015944899942693392909033092608070796379272686752559239639568070', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-4496428489.8107752661458715428395066220930608392696841546473410', '10562602494277713859668354432350036023079132.087319618829217004735542670195303530490537681062066586195417639', '-4.2569324105936144046817190246976033493852315745693034949779e-34'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('35920122558051508748063125686822913942860176999279879579817.4020267319839180494015750914006655283919319821515593314026309161089242741254532628', '-3950.5538090611987650712194288974', '-9.092427111273163634904721539148569267471666846523573342584757998200405808139310245590083081928179492591002169976154857060760636871413767504456e+54'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-243088505742038547731796747307.96086361844657478672072692415024978317837834142', '-8232283011028479.1700368570722455752415600074197665455778628677608248', '29528686685866.1250710377075976261763077799873288950475673'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-1162784776.475576897828', '295.56', '-3934175.0455933715584923534984436325'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('23003353363599076353472193017303616218.849544590304416073580685', '72774733771332685416379.473364778', '316089831889711.742249'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-567752330920072378093754598619213748233796179.54236418430788356845643', '-516520833.596513462515354879978446982223512087368936146936784699018442590224803283390144545006111713728220298', '1.099185732677685220775424804772784445315257767579090407441376702516440306426402195129e+36'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('5129631143957037743474086115152.0138944779473626911495605637223009720022208294444131290756814960940058345929700', '-0.001628420094254817289714854197741233263679962156674346005003765993855502866127511748662568192380989025289687', '-3.1500662280296980938785103011087640202801405120334662125500878292149054795017318453511463392253496963668008164268072237026849994e+33'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-8052237465249088503330516428019461935931483233368828144163108905362304793799154588586652106494205591271530372984422846128124216637054101172159.8198', '-24948480627686294479961182555344635149376544700047', '3.2275462323397798259929627015697611798773642903722190156638697307068475254156318133306212183904140821509558932647674966629e+92'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-12397061088902295.897360560', '634103874676968188199675493521107.0366802278632285774300608544418732486752517833267525055540644', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('0.0000000000000335809635072419405931374425439253273613830562335226929106905186893650025407202550455008965953735437464348179712812728248580871044244477117', '19646313.80579117165029', '1.7092755332729762558466647740958821730919210007978474484e-21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('0.0000000582449227209204919890209314208406523857981092654', '36223019307853521430962039853003183168570769.95', '1.608e-51'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-772946745603673867.340258837457273595019679255997676192580433280245108013129', '-1696902776617312106444048777217345449275764437258316904173651389899152.0177594787711491431721464369846363398155263812514418858122974236900857586', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('0.00000000000000000003116524543476809140307229914816902649111431106585959830341459426429296249727811891222585676328199187921592070560172826', '-3150132884709031864614.11492430581197981118226227987562414450886655921687736229752913126421963646080717789305641758399', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('119359.6666412324178632889818329515821650909368467852407575', '-224637567294185974886852529049358455101868576658680255021071380843.728422713272676496', '-1e-57'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('0.0000000000000000128654230542111067189423898238246405929981191833566220411470745683627400928267331464973925678552845736018633685886179568342056880782221550361374348', '-2887131640135059115551339664820433789010005472214094930355978045276915703595155257443084452714940719251528954510676362728841175644799114073678579', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-0.000774747', '-0.00000000000092798776373720020193054530221803748143507437902179574930854083957227391839348385502561988739064', '834867689.289277159219024232798273768579767988713805739979498226428144'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-827868461536829883533615801499842330245604823727789265080484494296581973230327572709857581087284918649127281', '49303677512716864518400823500434096286826505119302.9743946395242917733813874643090568032061657164233181387246372366819', '-1.679121118953648692303782747314078964567544504528672079427533110600711645262450980541570282263724901434251183336538506148689706453e+58'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('-0.0000000000069385090826146798419962983124409745984969407476180725103074040574177183775134748722769', '50.2643657525834508627402118587581506961727676928022152870922843242765047348968567892276415345576593488544742272811011442', '-1.38040318995929228e-13'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-36465830.99057', '4246.9295268361765684367203054099354321276927054849374739', '-8586.39889363453836551650372642855884118816685562303698224837571'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('1476708674658145763017333981.841951672822642013473098', '1507399190942938621889136186496523930356618676890447430300602059037448422589737696344109263118154130274452931568.00767568326234', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('31151456263.8', '719445144017520697175948798073.23266041169', '4.32992793444184626238433952e-20'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('0.00000000000000001944284988655185994709008040377222083156202951329463977687875625', '36570102195549551310626600317527912852058509458312802954769714868502228113301386469182240406317883836444017.7959365986203099011251100198700', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-3.41', '-180189999778582206969329154333161380.21867908917048900452072652645219508769542874832226452800919404132628121507168368', '1.89244686397148236887940388896859740933131345108857683e-35'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('0.043254', '-33900799706350726803823554324197.2289101658777904906663', '-1.27589910487855286067700916396919354333975443789157114e-33'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('45767308681814684662405180145407351015025789138220579904890513', '11703616727219168124423089130009645431065621809814113.44438980735', '3910526954.91756783366082309176987991868244379431829011307706609785215151070062077'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('0', '409946135037084139112508529443331984520338808007410045687712390.37341052002741668352098872558939749', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('83991645554946550648660501622076948829205475727077980602090363500.3529373353607961673548760361397', '-62417534038612853524431031149788470754766910341134390055001497443989592787068960019605873895837530483.711068197247897385515638370383789971173', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('399.15978890', '0.000000000000000508936472472487791935715900753504990212713895672381439601328142012887053703220389114369591028834', '784301794997759517.3613143903819238439194126203801675984212192753757427861426142820114480649605235'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-1096651136061566062469896114565053904890092964982004245212697461541271120220336327715857955687292684162607855553175728010418531321461909990074196341', '10154.984', '-1.079914193918538977973669002890653402201414561541410843397387392773116255249970189727387020685894418112926475859711574149618090310592227412740577770481962354642803966997880055744056317567807098465147754048652366168179093142835e+143'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('530291710465271519400057929362823808769925622.725711326079625482029469223470276638323050654170531083472274717560', '0.00000000000000010530294239590880893716635789973366225869274314505', '5.0358679292315218085087477235739742436851272590298887703889366505136434193799912706129762097494055328994e+60'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('250890059887771999498847058254721688658828501929057517825850189564527881369512022170292724566387372942161149167967', '-5938359923718710898348182592.6693', '-4.2249049082673318364687888913057932494050497269933317856958173693850003558331497456054093e+85'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-1378616154058662492767568271138278820747355923137795.2894351872685597640513128546176', '-37903646936042996172994267.048159645793972584', '3.637159654808100213648289387294782958927162e+25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-405032149949645531698438.280211765368612513947036412222426700623121403877400357070475693933100669', '176191874946088045557632944491735936258291661871674031465169621', '-2.2988128713289362888558334108185818798e-39'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-2580695182601869673918196714341800309674884455224565088301569943.2288274', '-0.000000000000002540862334586134935858336175389092350190923138909786692053890433753196878414040354336771350453861966', '1.0156769012919477433312399525282475220324945569172607675511111700657141391184536754311230324749217531787797433524338875588150029457904343196733453131e+78'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('1683784432854764760318037677647356479258132056087368331404.7901349274121272631991953907393965668110904782111', '6098763.78830840832873090895083360527456728317690850679', '2.760861858730537673264019978069684088098674051042009367085739711554244066456823360955119091386170307547779216190046166314369772727903423469613814e+50'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-2530637191334289339737358351191006220110627855345270379.24464258326802980441960151480838549544839800106528099664769831900729044019049792251953842', '0.0000000000005630735131653553549064876725', '-4.4943282398565391204427516201011048233046420457279955876277507634918635719590037824058731199609495e+66'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-6016514303387087370402318550.6923153806838045524779637206539897873368973099362667678596187646318534447942829547334688115', '42063250650445111261623586421695502971901833122937548372402100380934529958016372546.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-0.000000026315944617863612115639219149412047957937278455665071240177388414490625437453442371901796371717069144110689088162500312', '-2.72299972943683965188220367', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-0.0000000025474072806440830689586180541261721100964401394173677164038', '836486791609582458507489170248190.24332716383034253743391258375515097987391331247574', '-3.05e-42'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-53013010047301437313195229107041695663054443105621563368715814088060231437445919515771354548001642958971257675436953938693573030623638', '-0.00796582379779070199223958039275317264241408196576173862276559143700498102322472', '6.655056826891456110588198397760479231210742064163853251683197496717259792361971893844369531103744582917298501592030438072823956184780768158137980361044298970332381029403854666621122182e+135'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-0.000021687139718147001344084346966546200647538067256875719646483903526067224', '379125104172643148686301251195225058433045909719144509494703160390891.0170200088661', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('4750140431498572971884.02444080212658169679978723632529229252457007826396773526300081724651204250517439743049309878', '22950611345566180502757288198630366770990837912160599255293.240692976132843', '2.0697228322051e-37'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-0.000000000036570892794447705585614624821983128340381593076828081186793139782426772027967459744045422188551482237816591716314', '2560596797097993138941873567696297135779266794271386064153376725986803756424263745.682976536715541668128630255613888292075729181635435292', '-1e-52'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('3215201509569438794539395241433586240904044490694071836228405661637343', '19209955897019.37898330988372930240098575251229', '1.673716236937488322770450732532987109445543659818411514193939316406168e+56'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('0.00000282494954542178986719684575203456013530718295572798942815487088262092660380952260355573509586164313188435614251378', '-2393493491867465608168880873625388541785217835882244163382042684.14580574857237744565825651728634720874755475134164710774169412', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-138911208177979510918803338057536699138', '47484983457487684526753652269251469092668812125.2717610240593097820889181874231447310274090873968404783764276108027743740', '-2.925371308223026314e-9'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('731241406311509903674243319413234680513560211005222568707790678525996236175934378681980527062623332869973136034551326117781889599187427211146.193394487', '-2687825772761.8689341190319351155213905676762471173107963898510595496404265593416492000662004897007501358729657', '-2.7205684747941253212498747243949969403982533754958137154056312955596826856387360980498258942150169615667959998506179760995692747353769627150318824922188291195e+128'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('206939904334186501184151978408304545220002459073583245265171036400836008.478', '-10084745301004162428994304777972806212660507886355223903181084400320349971431386594095351596008397278869696036276954123347146', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-39897603831431975.898726350018069055698508506479008835931923112170261', '2387737702875316321155641022232111227438399324663798098137222136357169394335629586576077266281484468887573', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('244402366994683.389936331', '46893212566947754952628148221078712047972256.355523427887089555207033604948598651391255670650506432106005809409641579984514266497954', '5.211892161275129331004143444134219900562480265421439944e-30'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('921553120546680443171008695023439170379233255684062899262992193.794917224650781623583', '34776592716492405622044088435.4067262371762', '2.64992355076132660490737878527388874952228235144501129356105179745782042120074057971014066235636686580551171373518e+34'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('0.000000000000001096563555410145551886745', '-13045975821369490557686183610', '-8.4053777994e-44'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-221260119049855126902502314167490585.20799122411762790676886491913916461096538682265', '1593466127202707486930181372092240602166083899835008909740648436940251311560988478236191', '-1.3885461088418119708264230587238319e-52'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('21144017850052012114002430609072631261540111692934004274597.9268271743256176148636873010674646547207', '69525139905449724584797389144221440768597505', '304120464609013.16850543564659082427975287876469553'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('-0.00000000000583266788198021', '0.0000000000000061025691356020273372684847905447', '-955.7725201264448788049473037983438124250855924615229'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-156663038406770648005174622303705622.7579041672395005235498789260', '-0.00000000000000000279640660545545434058450137348238079234837546590841727943835550147521988427900118849', '5.602298253091657872084698931378902499954041862670597788676126142104438506469e+52'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-10566951247364.13067143255962777017389679088649800105253368256681791614050139262091025457535223660042444759101038199584', '1487798968.81452848476368061577537587057227379428626', '-7102.4052770945457887313'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('-4668.1', '119725391676743966273773855042970.28053142529825905284', '-3.899005828775045144018056878422920342348377535725165495259672533200529e-29'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('55145840802614703675780118424602174215345069858293299936255447790771825169501037382715931054297849423823668684444190452788350', '-5109708972121238121337032349.891448492221030161628519862566339', '-1.07923643212348215319627390227472765176959299472361859473063017742967902546478586994945026310016152356068340783023191816582426745086395041456559937e+97'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-197225815302194313889667990513694164420673065787.084932500684', '81738452500743439114379636892702094715301199582161638069266331867043759961814861.28757610773710532695', '-3e-33'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('338100639769773661810919487422094307.5336058', '-880545986717635548339964965154416822474394118319503023985079917', '-3.8396704416323949e-28'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1662797505.65535176968783183655568367434611', '-581.960249598597596154667772484', '2857235.53593609354275465707353881349082806891990385315'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('0.000160610077675684146304552027076418779474569051481519903465057107576282597616429863413312032', '-34060940888951667885141940759531275369588062486617036626790624.473751149557296807287327702821902987273566077309855776874103947410793018863211877420', '-4.715374076110186525798803e-66'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-207405485962595796054501054613781720814263441017518647041343154889940476237161034783864767115064779.34235138081465997406408488906217129281505944644784', '-0.00000000093303413425827094526096475567364786774471842617364847706513764924856542906038903595215249479094234074185548433373674778967214814', '2.2229142359028033154511990611173655293296336332206588038453748114511470584621308854680838501629883581745482679024467353488331250486413881244065e+107'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('1477.22889187002425723777429417396550491538475837092', '1761.3', '0.8387'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('34098317161560739433890908142909751278554.6930022877561086429320566396040491171871835072970338682888', '-37724261420227885.58215329250987023415665188141548153119211386522822083124724793770295346648801201311871412682289433', '-9.038829622593246661590439e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('50623519047580605172184984056336202404.3760583038771349760555077386002334157410700615188634691157835559775', '-0.00000000000000006139710831330702021319614773510605739787476066740813000994936327277523', '-8.24526112683528770106542983732390678768189877193258726520495343940809472671727076e+53'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('10728.59', '5824163674089127623690504744435273553136', '1.84208250323217471512375284637258221177216212e-36'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-1.4', '-3813346210311479709541381781490830445870609120466', '3.6713162739179822524861e-49'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-4799217929592734484537517487908.36992727', '3.3934141944923', '-1.4142741364676708625668237899363022984645293725867854343852978917115114e+30'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('0.000000000003576650362579233331081232620172381206846121159501556354149447107365', '-54512905937178594044728031220880675540771601222564092923', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-8125372282301887408375220913379041960349929890.62455', '-1790460199295669106247191209704778284796248830123278272533504949.777383', '5e-18'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-765746835279349140819409189902608939522965225756855681984520198', '-0.2458823151440970935522013071618517432598781582118744011898171590155937054619264848359000725442111657566195240237628055', '3.1142818662277121288437132157877831416359946632925686448321076827434830094251546601195911606253987567029621850150409881252598708742138280652195860931073145758e+63'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('81965007161658.0547343638301154851084560488552', '-0.000000000000004261559354294540140114492951839225329005337277856986267793697637058674710822403261836354253969282946127380963265117', '-1.923357164533182185195153252080481961629834669817308e+28'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-0.000000000000000000065889933115566879895515836698319434467360644777858211720588117831158517205383027852887070850900716340952465033158953134', '-0.00000000000000007908737871894736179930044739134129252658812997987977029914237397560831585918570996834124936441532405901393160446609993', '0.0008331282966112682229331'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('0.0000000000458887', '-0.00000000000007920739464409770182', '-579.348685892163588470293269827812483800348640005621965767695626614309958240238636967681609128'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-0.0000000037666515796183731842937900251875355', '-3275441302599371054338586817042216323073127784053613466464433018.537786728515034048117509170969225078859247721', '1.1499677e-72'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('83.39662443568', '-0.00000000000000002003152279999036168607346445798938073488008467463259124348624491238949667009462878406718904207439173283600253638482948274209051576357898888377243147402', '-4163269326469784259.074364130103393795783206135919553720762453192372920347086091930230269553807323'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-0.00000330', '109434048584872145809570196046154298805745503330569166951015891452732202220587810005.98717361588303691003203719491658892592695834034237414897181323', '0'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('661510957981362354.675586031673491649623307368815700089', '-6132046439808977110693422347539910465597.524926496445313468843607211615349406925814780881225164808283588825422222481814130200680430', '-1.0787768234872817780707108935091697973540974676747895321936128e-22'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('240645477863953208383256180378821461697005668395222275831882459357397472109203767724881575267577033502461473493422161508786793834549218188', '179.633068890179035550126501837996890817635942524483', '1.339650206672552513732915483211084687492828115679933306207775936177308128834624497824175070285464372582119837653218399512382664275446656108624090174313226738623291795409543341109107394925580009120035261319741987854221053573864750278e+135'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-766365170984667044870484337547371150484988429808969008514795576128048891668669105924989237341486385915120644587680287103858354', '2445751367297732436141052279257892687788556037231498276997324552712597131221011195516437849402580435388649388861322697306622577156219766103731', '-3.13345494244335396303e-16'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('-18058842314368683976478687652768663959807272264111648002186418.202272100393867', '-0.0000000231279891873873831524846024981', '7.8082198015800234109110710756825533282836360892482051132376093488274557258e+68'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-11711339209668773344982626987099295880675887894380080989641832695807303807116201', '0.000000000000604980060637221761498279329982314575639688591904703076944583644618268838055262788114307046405084556659222251998944445759115019204243245798541095876396', '-1.935822347158564545902799821915818258071805920079266430341870600078973567248346441460842317610956938785440088712560444671603373719507540064391699452526437e+91'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-0.000028154022631163645234323579837517742974', '763714225', '-3.68646042060610370775e-14'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('21062233519542444965824728279914.653213795455323072654677744778683570844371223391434996821852872307725640641729538169125085230104549811712864738905143', '0.000000171703083251092985870323746701708482113299956795635958844911266243301132752', '1.2266660051026411667366702282614551559014534199266716754244013766513719984823303199747701978506983918117786457e+38'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-121257486105813564310134681312053320611077676259088875416194.47153110485053263404554085813496448318', '-4084791526573552732873599473516219634802268496638841468581734356', '0.00002968511007648119281280433886543605'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('0.000000164578657788588019000116202176232404908041728145', '63119865.4177618888922134116051365657910248178312341961601', '2.60739874363350103433523981000588299516706471965550343854536e-15'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('0.00000000000000006596271466668487', '-539419239.136', '-1.2228469042435127550630100260688526099356201e-25'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-0.00000000000000199788581510442427115087092276680447460565666179306750837088275882162058969391398191642075728411841395624008869134397568404721265572447381', '-0.002028577018227795', '9.848705753601688878231692808052534233554172889775981022319906806336915094632912895e-13'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-9887034207993526508563691608159867317275531523.01396873087646480937106267730699598450248258523176444512402264482606024599663403761737647463303159', '8772920062368017041328549154681563574802.98973126923491698447317067300819744100491915062397666591201700', '-1126994.6765392940225916166969206228895948211119254973175'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('34648817936384012285095138.9033284237027691083719295724088752091659041134562734817206655068482823303472564684527417382649419001003061975214289', '0.00000000000073129840984615009847770183025645601294694470', '4.7379862269457688865194244036393170482427099288471334761305588440042180924511828827769256776661666757793969933190342816957e+37'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-410236615838101179461003106082923506552161864023253078619.42383715734657498731871501341149044489675184080204634673208', '-16700539039984360840000288381875688192758730134701984438502896.059622768667942635184286', '0.00002456427393486607747670324'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('-0.0000000000008261580047417753196019777820265960458240724510855824773446269060589966697084218488066759878381989061', '1472567393186391365433240354050309702841455502933514845209507757008252424524630725988331270495257462495809930443112514286386727777534106903540357537840', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-0.0000000000010133051516043563571444092178778617007841179', '2841.631237610061318204026527525461909600878371', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('0.000434746683110784676350512124273115131526691635488621245898351568418905144524240538757666', '-72.754939209315378716529155446322462548155056', '-0.0000059754937305359013925521167107'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('0.00000000000000000854651118154424773615696011872928173942382083706149187646457857355809608100811648271879534541972313644107157431654992339085547463379527', '22', '3.88477781e-19'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-0.00000394892074850948987873089825542954517462502155991604329884199934813459956719272328729708509121706336173939287967480', '322144987032878601907718372304451697.01159', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('208859709030919022668026840603676129671468435.33607886149686015823', '0.01889073200221273425874122349502352549427956172837681307889380375053438909209797825161457166530112944290616595', '1.1056199887143314002138931452389730341497907319575118366203107346836990822658147120643404038323533401588660264603730440281486699288371e+46'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-2587030969033635395116299220693238227817249983119048917425686389.9938', '9002647902.166073', '-2.87363339891498524938146402047434581585175314551744655959347825635385293396011197036576520825766337679980778948659204e+53'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('10942687.37267270972749191', '1223028609417510798257150450863710728400112574753822913624040596375380.636103063240116883753619541538711824386875697240375421870207137471575150', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-0.000000000000727175557022683250030094239938027469890979345925006324236384264240507152468370259771726832762008917826728798232836587230180549086738583336336196136', '-99692702089561102666910827430004445013.4633346742701326', '7.29417040346051916273494433969764735713e-51'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('-0.000435854665924446274149989727822707565279192689899987869618794982461629756411792802473', '-21479980655764289345477008567297503725301337815770106747360860697561555706454247768461577', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('0.0003661424946181228662544929843135642461', '-35541723023331275234931465000.3434160778574144692609693947', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('29511043086232682578298902433029441912767122483715484336528860737562383987162415257', '0.00000000000000046991515004893762897688645593294701223251163738620756601403640138', '6.2800790915464974417238635529785551698938085918374781178739742809295933496204542846776626640063091485312691640142866673025483528632260971e+97'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-629.54486', '-3804390832054237197732585520105512857086714514451063674129724348813938242029720919803496627174331383149317667508624916115174380162610.4', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-0.00092138581743579282981369074351185363008543791080560303477', '-0.000230991881481976', '3.98882337995799814468394510251061380533'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-23033476615970509548342', '6667695578819.681810038616467102328949290169', '-3454488337.64061930527858389624314516095365835459827'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-17609583262089829349614527901463987025975160200151.4820645710897030443374385465092892', '16870249287558515727103701322636559681739080746456750537410713485304497780078664815867842085135794504652737821295544703167229966788.07959249777', '-1.04382473e-81'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('1349754860300394469926085895424254955915398031581010550799071969866756394839212719635286006491', '13412861067171333299.84177303429285692571286631558385009295979180821715177980990983167100956466924033094092553925260547177604110713037231783105431476', '1.00631390539337565310018357332892955002994225647946004870372436649442631607699915701e+74'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-6186799896.21170397141881093515171173147157756732289393211637798253167', '893.091', '-6927401.45876702818796607617269876387901297579678094833798165918427'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('214744420800036091723235327386836286091072499.82497486682144788792915901591597911', '-715116823112325737.2466174071298635872411470704596237300360657750552662790180883559706657', '-3.002927827448208186141147717660718139667684913298399093948689796248917476883191412928e+26'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('10784824161.537439230227463899676', '-11262180156432062747048177456745766565363391724436692706657204194840723282194660736622526420015840791431252480525869816968701138773587059519556961', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('1065475535010405771216088743120999368', '78256467309231123490607919376895818.6878352116648506364836670768071490932035482239738554', '13.615175481921126856133686342327097687306334430228791860260596510008956841778876892927993075408915'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-4720967076711694069198987.566', '-26730767756103443137829904940659855284477689929810503207977148998370094841105845647981234', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-4142076414964352827467635184212322570640153530421111422699654544405985173134941479224380826617774348813350115902374014129112579647', '-1123920.836060533', '3.68538092903659423188259410965646827940853170201720041177477321176740140646972165385369647666630547277380365846243405462714106940736106225684761023365016040126731384881104356605229898933571882395330993973105263208971e+123'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-9012546797305778913749072705664218779598777693194018397051301720249575705315186211819737108442078207855.95097311271066311789437126035831079152248451', '-221696431298318943617594310436493479484437358300747895944247886573964283577260576.230554488', '4.0652647155958609721257535779485826311570413278384982152932483257957600446920806933441382642212114e+22'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('0.00000000002538387070543995416405436499183653403597088747366207520144542550245681558184831091988077404423487890839376340304725844427690', '14562891408915478681.421127181921914449589980053944489651677113447812731103604100978570606466', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('0.0000001139087102258881402161089659878951562048252365503155737106113169695', '112999330291096081712666114036319726856888730969', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('0.0017737339683220256362258495322853553726', '344311488386394946670123243419052980555279569441.2581092289564252509313088826893414', '5.151538732078254393229534399097e-51'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-230601295798682631284071108851165376367326185083060912813945409971432014125737.67610944055117004937', '2759980627394.674745824644987752843648703444381939763379508829430416469000302357857891571669', '-8.35517805849101902114638182220772719501729983601164872340485404304496519183873969e+64'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-842570312246603784256854878768113013090390680.4800826', '1835117010332854583781870084893679257611413400275028539694753574598984870187.174117913536', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('-0.00000000000100684943301409650686603204274713', '-31144152.5321601643531272794334628', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-0.026503227279838553113169386052389485374661223774285251294146269277263514377060436706297988370', '-71045451218274393350706888.0027862323455368609062085008505902080395372345116114084151338799957479745433746186733925305567951229335217540', '1e-18'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-110419631346006605487521542409376009922843127021.32729252503643353043', '244333847708274713267176368482599559622993490167843827', '-4.51921141428769337154851414365744921974137172e-7'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('138893.800038647216078219578724974257662781528220275806760809453342527939336259698744105819334031462550443269', '0.000000000000000006348171111337101567342719021981976900938596754527204884080611802666618593', '2.187934093184711195124371794142911460872e+22'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-0.583518556009536368891167105653', '-10441784574938354731049901890211616945183846927326453960214418739234414890916007304010255785348300872046501133.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-7.7538588120693509533017285566489706570750381485420112364801121058765556097495024175321672371025233059644071513855874611523627', '-305644204.4597562604754745015566044566739234835770195994902485', '2.536891e-8'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('31789997685790129513765060203181448380957005660036613335.44368544620228705185948716548766405754804498731108711764', '-52434089730.1286441452387', '-6.06284915966102621783408308497372568922152725e+44'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('569876777333896496210397829911575985990203658453376498274111925946243606155.0604438014870819666635730795627745086491091661201979151197', '199620035528203630659934347139027630264446304681', '2.8548075138148172480690662079981736361263912869268405656928082643654167528071203766793714948500869935874115843576114943669e+27'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('464203469483216305594181907657494380404.0131577756200', '2048.0377607488', '2.266576712499163303328179649892198707410967454841685911989506281906764109714566510065582e+35'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('1047446033974859.93', '-610168529437812151818980787637.081958441810504970300511542324279', '-1.7166503735286706929530210967953340945869136079522966136115448125308e-15'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-118.33066509', '-9606875158.2747354159409455217', '1.2317289768055087728278381056836e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-38916180536707971109723954801032296697.305', '-2761.28', '1.409352928232847487749303033413210420432009792559972186811913315563796500173832425541777727e+34'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('0.000000000000000025459344835883054040696405051913272865874831295085304164847010428416894706100600297496207917376', '-0.000000000000082408868083455992459669242206585971307278856656421299962183', '-0.000308939382714251228962409534148751406407122642268738288023'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('1608.221', '7042457108573780622242600547019826545691513759236748675875889745320169815672519884725638137576300515921692993080878948', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('0.000000000005815702621450130899297250913060333774296826828362981337889656145076977693211768352238805403527766702548620501917360720005422693391397563666452561', '-0.0000410389771294771', '-1.417116e-7'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-11283729679337191958753450479886227801706907034479328160816332391375318739208071063224069992461362595601882', '12969.8423904513102281564841724235620506702074460180022088158788721958927648069337750397204515848010713511642997', '-8.6999744018821135539847925790643947979489690032352266720739413327073294318035168762931945901643780530767800577835469292594593782001806376e+101'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('963562926172000437989222165501001948619777097693976.019152224055600155732251799412248644709320568223', '412176.45445765048731626271608246638', '2.337743739971451343920642558467838059208364280737481450784483438693973819066391311731602887641315626777957478045350411084e+45'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('188017317881037467142744350440647251727837092834115555212.61169097805664040953502697463903428907436616545320956525738548268521889', '0.03430362603533945933717', '5.48097503416527374671169477464124580416386360623089291577202404593e+57'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-77688889373197281303709368144116728208944181866527.194329986257499976867357688522213395034508535505986832056929680', '408619346377674.710100303477364202860289496630069330695596842055267', '-1.901253331784045075849928931814210121717387026383480878918888601880392000146415858910823265784124031638153758876778e+35'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-0.000598131376898130173273368371', '-33834310680426732.864137084262872986652328820914', '1.76782492348558845634046504235670092482442601e-20'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('10.07882789313470526436392', '-0.00000025401734936054768178518709450341982916789030441578045976075113', '-39677714.60692236908709650312064312268828912885512989366573740586526'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-25761367516448895365422437716902', '-7294379443336532687174200876161368710123746577153289824016319241010661.65837654623', '1e-38'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('35771326681716.57241202022647225590857673709935880130954808350655811207', '349118337811509482840869951583553281668788032940835136131494252501238463766250167', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-0.09624422709388953184652715019078120429546513', '5170531470626723240558594459627185589778150939979586184270820777476797.5956769453369948985727876109875514210900', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('0.000057884266097199895462680021752066848854688228217', '-4761853299294789852.955408629409', '-1.215582725023728e-23'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('20728450374669601887839.552320873488315014522133858670895309037684623025097732', '1132688096327184110103004437024774873963.26815201444568485699742053281035020679063787648576003176844763889605228900976272254054879', '1.83002279637995401752873042212819846136694755879267663e-17'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('0.000000000086774370372564903480577294114866314088427466069062376707737298079241239', '0.000338137223353011131111513637077704972150', '2.566247203194589454868423478287602357042300504761582701917771480785000084144e-7'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('2983534726729756.75814502398727035291', '232407189512289916975300.944276368684577331714804764466', '1.2837531975e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-57415411067167602331063928.20050398168346262738205597292826088263171232118273941933890', '6310863991456586.974151639438526476457', '-9097868555.69925941317721185720709058423706826912790945475135548324'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-0.00000015775728458726498306773317209748308498729981829072132370543723712809732386345160025746366490983542448171', '19242719862', '-8.19828411568781289925e-18'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('11552994563085256986187084346.142302277913480048628672763423906524750187841526866411217768', '-20.5', '-5.63560710394402779814004114445965965e+26'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('812144110944150119838381673295335582060267859298353045809434439357', '0.0000000000000000031349423794202464326668987343219568331222224557022625230990', '2.590618941756569628392306103273989328011790305545243608100444916082914443451931168413483853055477086e+83'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('9614489376768900692760895.527073066530251785421855330349', '-32601067987574457100555933941600938282851621206745972.05932516695823657436199460272778', '-2.94913325552198439358718281779388167358864451629725021092083494e-28'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-11583534251297278', '-7883365928383773610465677991775637448155254748377729591041178141612700383829044484308620681465778556959039879269907314046', '1e-95'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('223612641244955642904353401755577586252256232079489239167850500206850757881664490453712619388439.9866968252386670188226025069540843', '-60481932676102623838187954032557013742871278087143283642052995554284640962756152740.025029', '-3697180816665.74394403322603085612547303191221613672256862205285142592077737141641318238108646439426145'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-350.349', '3', '-116.783'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-0.0000000078925715817074841568218505489212637237837850245467046523569515632845796706869299872723194727515353882743977331', '2', '-3.94628579085374207841092527446063186e-9'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('95368714741420394016083342043033.00784372549234384294358546454', '3585012151550330759303021666823107542630331906734992426474705980905403008440453961.7841322904181', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-2485620832769956808425209188746139311251888822574439855533201630539287597598325860653.28414365674', '241.3782617750', '-1.02976167550950407386792492314364679132750326251886020962427722766265976338801806778951983513045579433475477474984812144647817260966767934212413813791538146476073653049654371e+82'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-39833308190442209260.09353105836552704367203454209099943130776671246082562477353686588645', '-4562390593', '8730797457.7095155912474'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('0.00000000000000509749647074186006528231614714908640308021420659866055767456046470814261818879186939103185920091216299799980890886608080876743163190', '923912437853859095256023537649611274', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-0.00000000000000000061303283331263000157056558184702117427444976518223689103457982927186788642884636448192218746034798482034003261983960690948357701483527632814588196145', '1.349016634998595471349205316201900685818511461958790386', '-4.54429409844355448e-19'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-0.000000001125145029887940635965123902335679328124477202368746008308468242235158851466733207', '-149242808842832237.51452433265921089167595693212751981437458634433350017668814156835361282628', '7.5390234116595331363755680397164907341667188430847036e-27'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('-1067698823499635663628797160629920191921919332668840833079974729.4592792194147191454910492415227008133926462', '2986573924530388563776047596678868501.078041067258658328747831898425248466411204698171209735', '-3.574995464636026175354026069188351714579231839156305431953167715148767959230683015424161196084094280821534908951785386901092e+26'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-131558573136380341351526263881272015691105162167477.43641577', '-21028836019557051563771351115247425946031595498611415211335954724493007138746037794.5902422656034786549274717494663973261907892978493002913117916917673', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('484912688854430445901238078539.9327388805215', '7675343013.208368630074287849959404386587228380884784634212253665072295641059597176646', '63177982797635540171.37420635'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-12489030880907701606924229137856109508824645513538011.4866636311446461213479265402263844866290245240119778', '0.000000000012635859212', '-9.8838002793250032983386085687388628280520964651738883956976705389443692924287230705055806133213539416395010717059895016500441837939654942081353731372992445e+62'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('0.0000000000000068486422494524596969719924543', '-0.0000000000000000860530227743174154892543321017696403856276705035877305470475366175730095253824587965', '-79.5'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-7583869705359432525760481762644610763035183738780200118821468808036843413330936716113850064916779065729143081765539679358825051304836745850.6', '-0.0000006055982309374903162654476366299493807077266080677782248313129886619903156891521074690993808095640197564654707619837534400871511071579', '1.2522939001356226686471860751979813853162302842384027385533502758473626983036115201672725792177064268800542320082925102987771543970384192138191248037631285529883852e+145'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-2324158705657062571504768932244003687791982053032086887435609400349623234.8847490173933459569044283100698303779486', '7947361216056610348892930352280110458365416285971299474457628074690297636141245156892456233813439323211882813717047908148127893604121840938', '-2.92444075772144595364474e-67'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('330860553574997611420845241615411032271.580685318332472617576015516495972857272447322507213797761155935319903525405236867', '0.00000000278434864148915656819429165228781824741971614143838388587', '1.18828708677101248141214779984169455306527259694791290514596002265144928984957405e+47'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-0.0000000000000000121020668919213362550711754611616886638', '-0.000000000000000049375156639', '0.24510437466364'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-394802176170946185383623287716098305655356865182282630086828.5964628406385145629597276869513411714693556446431818475220471434691425179044277034838', '-0.00000000026746586998637309623288792', '1.476084317565679106389290357424595824168694787489557585159991218711391385243481240043321664965214926198007610749846626169138875626812596915597784301572627506e+69'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('10.4', '-61109341288178920361559650208577059902457327675126037235513424500323768453228146026659.5878105570337704702103', '-1e-25'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-16361357720439859515991210103353300934432258144405930670633090423823', '385748.287755599110761', '-4.241459583822190406083003028241023712304490745393782567275050213693077008095405973640051052432256215016050136707300274703155e+61'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-86705405.255842516299401932228291720865', '56640479994980166550590540661976482821130455927516362968094944322340974875957471148423417325066529533995371.3462406278132009081978405932425088209056', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-0.000000000000000094914', '-137839741941703276714729.323085324892718177', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('60455124150058896265786012923520033281598.78998030686', '0.0021523827516723502651678484010701159886163599243977186686131893032242096226863503971597799739241221486460582591097338509479887173743585631534', '2.80875342004514303962666735157334054635296243757109157067891469696250405517688687660013099745158145798413670468674921462694333819e+43'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-5919427358277736121036355510363929980734158554498206', '-0.00050337563645548537163555889565612', '1.1759463370057649309214690061769196099262493416877295782378711895907257439993109937747833453695247307759245320841939666397716819524e+55'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('0.0000000729423656823523161763149207076345620182644168427894042787797012912731740507538998522001444213', '-7257094262641984828367782787823231874022685970775.12563012911815916459640884557517', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('41454575815121550945249311651184611690694.79913841331976343412188746472269', '-3200381443148112294922788210421014186475008201856838957.897657078709224585556728313319365060099241381051762595', '-1.29530109305795805322575761019374322e-14'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('0.0038649725946740304936644001354450316452925391', '873644820559845353883954013774352313795619130308608659936964087919658936.3765726', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-39380858140905900403039619284673213946855305695.49283157048331780783', '0.0000025661629', '-1.5346203524688904357178423585140761697885705422478374841473749701482318211365303e+52'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('1819197663957471386300657897690721503401952356057608245592494045176595405462249961528464032031032015078641', '-6657150166644585302700536.2593980027370484802132928884784544640921459772735357204016065961305999', '-2.732697353099373860882510376433695374553785919029713342177411174901743822440081364060822427039104225620224778168e+80'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-437210.0040882405119137212856092357997132509560463755042436533856183328172199610437076429802232051886233820671923098242562931012214927104557786295', '-0.000000078910911692107846719217617946420187723860855364977370954912695662426156352492348548312315002258612', '5540551930183.407030727075237'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('372890080685858653791897049490719597078914761123261687954344045467510', '83858134146406399034530033386323890867261870710050374409850683224382501969089447382261002756360912920886906350.392630718449167908115', '1e-18'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('12012.987358266093130258964056', '0.00000000000001474962686582364625240831800934374536576500883104176098826397051575455266411752404100168850259065089232372355634', '814460424493949790.091156618252295069546'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-41414660318908334595689654490453470.7564694125513827283706590498180415906833323210401065562381722595732070094746258542216964188761695276', '2145398530225886920232708565246589418530838144185820004.68', '-1e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-1130924704242056012035837690878098284338180004218796434072.66974326603183473779429828776647877764258010306835905546', '-265757117331641918530768430756590909287777877780654167947006623461453966259037320614699138149641422190822683223340030806919', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('-4588.1925442043', '863447601549324043065532673831998405845285228974578665227645766290170863.2030322709793216613222988785114827410963651195713781145023', '-5.313e-69'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-0.000004509022482841480424627317183136893777310912377293389091294708900407185726477457642860649845324817864813234873826655348443838', '-89614218054668846271654743413464030769218741689857702835170614842564565478.587308139851769991297516306392988850870848647896160655995714431207976872', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-2410.41', '2892050006077318614173832.836587226318414081034320363', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-0.0000000000000045621481849548325001418900905909585251735259336553615288352493594048801397', '0.00000000000495380040070865399628832449529636589128087028242937324760231897728877786675113319670285338494203209262776532652', '-0.00092093903991412439006804009722438948506568506335922341009'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('1889965641287467460605353585809007676852655515492287271970671.92', '-872540642268987950148.40330774513868729000074986271252895505805', '-2.16604883455368767186597041313318871847793456249174819460223460987219195e+39'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('453168756013294702791780936116383819338712265758', '-0.00000000000000000001703576853626528442876796272592863047189717967103246543141068505181358950127191381821131519024957914097587584926194882458231864219623435762974766946', '-2.660101627047827526234592323586601021537755776148906617805742448861452674889193803229068376798406303532428574864840806318986515350355248e+67'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('0.281191748267215900387851412002796180529424194708369219618787534241641927302840921591590699686487262437912311492191253047679223717038629398067060', '-736823256514559562094254.92461890400692007068515177306', '-3.8162713484011694793905318647490767069533087178909746e-25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('3840619393321571903696669805269490076853531507895686473256344089016810829967129561480080890216396664625065300119841824271269406520025', '102172.78', '3.7589457713899650216982153223877142981266943190698016372426629568235403108020840398784107569710804234014825671963137581959396685888599683790535992071469524466301102896485737199281452457298313699597877242842956803172038580138467e+127'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('1892247491641900606228794628270696213035658424492967998934163234332192991517343447153747403277987998711948422992.8183708552424749795191945092', '-244505466618807008712853320517611846387936179619142959452870395575986399.050340202551610512633848260213360590087334138150506', '-7.7390805114062494814637570263377044612370608350798535119814354463968478114343712347541731534774816203430823292900983341989240167e+39'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('2295381812038943850502.324', '-253779137094126721187776702581.895891744352896517020905474133325281', '-9.0448010751474278262007767239558082785217770867577559e-9'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('-5695943614.77072609944987', '-176532479661877276147.9912373264637178949262666646514566005927690534500079605735234199101141069403355519979895408614', '3.226569765337512e-11'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-27584738609667485013722216661.8421350233359390210635886470920620796816370800366533139814805753573380984948', '4313107568442504734715067084549266805421558688193581510035', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-2555742210398264587305957454082174995014909.3900530099814369606374837', '-0.00001440', '1.77482097944323929674024823200151041320479818753681248710900044269701388888888888888888888888888888888888888888888888888888888888888888888888889e+47'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('0.000000000000314944695132472241453869823257342603122172592363685042887405988618869983581296798806139236459037902793571160951361312344558248775', '-4325.4336', '-7.28122829425638e-17'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('2372983283183260603073328946737270500842645483514847068961453233913956606640900074365120698178842980420863', '4.264390312970053218050821223418104420963791650352392308523490460052', '5.5646484234003674193443140692245726820653101384942591564293156359613261141751452349867413237846987898668588317611130126820465847686933141838e+104'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-4929737321564416946794444595100034584584275413658668225267555783372750233317098821588418499', '28424.5505500279699822525350080435474958567777045000729250347252638401490401918318893925377023852720881450800154637429835312060509335334460', '-1.734323753998483556086516853465012393861506598300167231474336706569606213704384969174734553709154637e+86'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-21761034747572684690940063300423799039711372853154062067483292390919972513.128461864192183766012455023397983865176796343513765704515560', '-0.000000000000000370518717601007734760218875634135874385738169288508545052430993920619674833347596206435018730919635286496687530863892283219235', '5.873126974115787328556301649295695597865740591759543814911655466898584785840651110993004783773323892447812676985881696237e+88'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-0.0000000000529128815853925126111888246377363492558042670403782845160556805724033452691946651390343077935752291223303254497743198268934438129373549547732', '190796845584739495286083824726789854300125556149509941677391175737424747877187365711691200873797144752399737466401564047525537368619366814232389026', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('0.1738288617078757424969996650252925445723904180162162644658038108320637527055349684164347129085119473', '40150435051330116187710586057442183955103686265758761407957348994528421914113', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-2818021876.06049744914273', '-0.000000001255994176045901959662683145025352204805973683344595325551280381851348919327804825422941616667063462747364903546976156151893968477515151694091036435671', '2243658394127385772.2399616417668729072667716977061852452476766052844368573039742148337572714669721107189733096726223487'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-0.0000000000000000000798739998076872124738417560415802504246249107273298126348402299690351215611460652085120914256051181363877348346676552311861855515', '46182994916067780015766084495323699010504604.09567815372129601618556544089749998205672086702635417005840603957254140819968739', '-1.7295110452e-63'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-0.00000000000018278570237602871909777071990589057201', '2533783600.22686301', '-7.213942909712690186846064e-23'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-23635856566188883656725779.261087946565827087612147083445053753', '-0.000015983055409', '1.478807146778682837808197406411678327043900671754661965274912036688916918213256505141106590528994893256707723148455738423073873e+30'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('9675925041663.288671218488108323029451158936618138578', '0.00000000000000019145059354550346438348756476', '5.0540062908520263838834301351259547717147667612660420461717525400109588153798536731552786867471188611602627e+28'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('27530734744572553145811394409155751285114981369827827050606790395212699176195816502875540648483743', '10018638440069269682362497.5296', '2.74795172111053878923517565227297764074667648991325127688577578258955262100838901555647e+72'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('1753543712820093784913450707262591849304835890313674574592777278930623364571260530603857542.4236', '-418723139520592512428', '-4.1878357017187384892049546833395312659786498094293034760966309470263223675167624157719477e+69'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-183691591904659333.339525462569802158358640667215860831779055844371698407987', '5571790194707557578583124091999072068420790617488114407485574879343772879636.5578258978128192695105710627695803', '-3.2968145871526416609414243846e-59'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-1339912.18', '3181724877175664388202135340557380053309.6372658165999319399125323931357918678887932697638825057102937395296864993629927588640544725548279185663', '-4.21127605850511403837900068294021511687794e-34'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('28291.7789788', '164513902542210734619823233869308585615437864478107318378622012226.0637862143099668913711386819475125439510804551009962207503163661950620', '1e-50'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('4352123217.5125039454242550283437', '-8.5571089855709125117416994669008071143304642667730834779287190411862924930833429021927127165224334637039644012852088175', '-508597380.8269942628609'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.00000017280194538643380427938241203330369357202306777699418921781472580047363492702741507862927802298171165219765', '70198248850625050655990271091780809131279636646410342739025918526822476835014657892897365995822005281543632450103200002855646347949575', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('0.000000000000000462366653119210200754101536012131893385', '0.000000000000000060263928158724437406735', '7.67236169'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-18261.2123919216000349573172534364099590430911319328288424188440187724443811421013387223457238536215926225022443140045861926293507393814035703', '-140319509983436944302669669.22959469450941740188', '1.301402235090267903971468121955525131756831209565e-22'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-472475346818122468757665022906424104282086514700546139294778422104033911157201097185232.9356094878445129096993717075115024401337423343569832676', '-0.0000000000000004866153002299724920226970875', '9.709422342347897066545280432474293134156576409161562172783895377093807646331921987845386179891007510935026172502905186314192871935707338193e+101'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-18391179105879192585113220019333608029947244529.44652382528440055358228582356376', '-131856.225044', '1.39479035591547649867005698253422296192664877953007294083780114392748319544889397068851823484029819348329500170913447525741073725321e+41'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('6450896314113636045.47096019696529028907229538', '-431908.8200970344', '-14935782771614.5072603449252406146201767873137666360901845966631813'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('0.12205908631751491295961258226918082044380232821819630409', '256278517003835644401361472618.144928103006342169734856778810127134997704942359589946928195523242347769590471009525560528282944606865058637605240700', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('0.0000000000000000406425098059398281508518444917684297358996203687406103075406950878391785627772387778578061805193849419781', '6197978318930058354121079353391.356270123951020905563904056655371685259878584579853787609139742190928595107285545069512308177337377747424', '6.5573817323316877872201363880688482034050776e-48'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('0.0000000038480677023934917705398182426209', '-6669689628206425960506958408211403952828561513641383982126683688644654333164720823552653985031621158.891769852084720550', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-6', '-6793365827756549193323796860313499.15', '8.83214617338140399504359557075447443839092597350907e-34'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('1408518677090.220167896131480891051094648589004373065909215871954', '1911711346095095923944902803491781359370106605817791906518095.504218912499767051381623040172453209730092773055639822964346295', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('-132797007578088940349926211760241414803647402421376896348997.23792892159645', '-1701611827927775516564614973063779810105086000983882827308815123378.912703618670806447441030040099430523', '7.80418926329451182750361401585051547668455844772811334047553570784185e-8'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-590884861242163293617093.7024642253223740276992787995660007437880', '-0.000001042308695399276450393851409116010874384694561153002962237741039042501567066057521316448629055624780547030086947926312392019625361821', '5.669000593109447774561219009958841393772088394420613441914214578498439067447745711711104172222799598120242237250785925636e+29'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1447472364909393408577030447805951858384942637', '-54508619973776022181790674.1711738879483079027661870', '26554925910906737257.865651374015548'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-1698282253323721125622279589.08132160264778', '-36588616017.336159354547769118704090', '46415591464816625.89950467791588764198225854888984659204128685329179391195181112277308784235988205647130513265'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('-0.0000000001728346681414185953835115837332393528661230771657299247831783196382015218634433005619336173179480399892092671637927785667244664', '1383965881.8', '-1.2488361918e-19'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-4200.655301241575', '-0.000000000003291749081743256944461923783605118923797595707726863855985331722143509605373389325015410154615732', '1276116495190750.09745770589788051603719885202408563'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('877038807529.783172486', '-0.000029209862891093207595413365024177509128219463737317144089467908137420440648512427860174664', '-30025433902232162.7'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-4.6408633251187', '286479092605471083193073918698008180482239006030252783557309183848433607004260792891230391548122.7823829749544423447444227336', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-420332834811837519083151310779822.674520517011425285434915490010798556682722514686372849111363615703534', '-119372093809512401458364321778161263935763724902835.69976360734010871610858783314726459546649469292009', '3.52119847610767522253039707960588498792e-18'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-503265559715361658183921070977047895861177537026026456.109010394162', '0.0000193627364272292518121424322', '-2.5991448140957699129320512332375913453644658627723198493046925506570999856031259401970274657799e+58'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-718740639593637440650569998843587880832228790327991524480269330285905900765.7553786602112662963770525293', '-0.0000000223532388156215347002372187473397195850067720560979370528409860479426378092382492968866513342888989186813893183200510613958831588511668595170632436', '3.215375836683435729143752908778275268383734423571405894740894706182122467630835805745819338225351859e+82'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('15919129.761571574442700544984542588386223768822496273633714907581964890531644168371312042732204', '-11391106082802056.177820844865101395010096479188135272401778080252913008122776891526790', '-1.39751e-9'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('0.0000085600717551026795869429429343722866818966395448334155574126290636650121748943963191466064495151249911159090570604721962959493346606872796618273', '-20281610814854557999097269', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('131977712013758710275585422995136772245460579344.8993481134', '-212818196441274972834262534532930203096181143190471914219945641669731308697988948532275323902939404240614', '-6.20143e-58'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('0.00000000070676459140821697142817934837622264413789864469815713676245717459192837442971756953392484226804353805992171088', '294614725303407521512.865852425148708127118528745039606260252144109322440114', '1'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-19539376265352952757542646.875375665421754785138638245258349740095637', '-4019709446983400741462046003126425681656527577169108611440961983729973333374593190790505052551972072130345000734988733070851.872292165009202108', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('0.0000000000000000007561234954961080050633722714187119744', '199373925591174867153218862608600168609366436830371491017392311675346692689691839738870943992670941223084334019596882033', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-128298154020104176451531500186484300024132654695151917200818949908639571998471784180307267585182706454784622128226532979088995574532696165', '0.000000000443354899283588936652619267294663168843825983520909084201176620380223190447785', '-2.8938025547348048479226089027796572991789582389568685480052735464004698133602112614940908387407001993590568619301937067062832523941619422261651454208578361981242657638225443184931394e+146'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-843919557133465751446790586000226211580634781.8357483272722173434588169966498670918397654653934539459854951483221431386642465994284', '70034415.278623319628438752687950698005396341384886586801532577403985022211340601119987996696748996231070239588849449239144047229936071714710', '-1.205006929487503312130170074289300991689357468539547863091483694640727735272757699346713785308038760543e+37'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('100901.9733615553273', '-201226503873.0056976868225638569100371875796147830855791027270519481558676022991', '-5.014348081365797167297948455069034074781065192103055317568e-7'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('2185509476186193976476236444601120840637672231.456972175916243', '17078841521730582448797416.1348671910989474552473005821932271105320514992112534243771176204', '127965908776975314465.14597896958267934913124'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('15647.411671367548270936100581196549646878636254953620208916953892648092855965022422928937005171', '657859080531868266652575163546476845742007642976608029557287829321150761791174807914502468723877871807128210385430721558259', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('6218218196156610.479944398920633145718283090445629229605963564515717383573301858136594053085442738204555751890652557571914754051153724128880885', '-0.00227638385362701198988915503005665906945025452190948795341724419090807930977738985287537088037219', '-2731621113130365931.381125250298985420736'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('18324964603109953.1163476979058181', '321600514724219251804651628897079178363374739602892807118446489711142934604331244130586732142939.4647', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-0.0000000000276771889943352608976901953339522239882950165675081930010870226838224396', '0.185461366631453934267511690392859410170948689453367173967962195436705541199337', '-1.4923425561365003136538631417892207196116550900382828714295993797e-10'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-2466348.4', '-0.000000058622601163072624633393966377309533289471872220745058713', '42071630242732.9833712403637446802055286788851079998534'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('7500046826932982536787796.8043713713985004174711286749227848244678', '1733234.96442639227196567268762930', '4327195666408158002.8338323040764618434874465533058375322047867728565960041098650697742959068730580953'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('2183260098757326474321869599229.9638303553687602348196802744272160921854211920592502212331209', '1243856652233713967422651273546182917195982.51197260', '1.75523449172107949421864358033410249400625452303716723173804599075162589353e-12'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('12929676.38209541477994771901774848256324688104514698097696', '-138214486183191079184253392392467034619894009052172102200211912574644783047595398295251.512899180092115', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-424059582917507499884433612600401977628239624.18274777', '-5277.72913180397245831', '8.034887208630965636246243719527896316953239535951297778143391326854211891017316e+40'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('426152213.40873786736352916197808', '-2757276145.138176463942019897552966', '-0.15455550731114091362818891934919369745035508020805219'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('0.0000000000000038217663585091307293590381', '74567612397014152796.99581455716974', '5.1252363266792252220034125739415901045092179113e-35'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-305636263804921543022341715022100896164734554367656410607052185540656585843997.765306320759234861824222722689967858185363762', '1623413941844.8092848033119', '-1.88267610574788896420488400269727736260775847848662788465722368125250685169287203525838917354839721585720330490870890824159789959047770663722e+65'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('87942.865445', '104793948401400040302571994912565224194061969756796544296236980540194230254746.80', '8.391979383e-73'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('776840698021740039806762816816872348656324347091831898695969961991462149507117612390142161282.1653768037952714605661541111885036281', '-16172748219127975263940729848368583364374580459090634000636139706780939015861371915.09500704', '-48033932606.639'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('47095012065726011307417335907012751959524942794714112221907715739961716166309275.16497012213523813719418727309317419958331373001', '0.00000000000067248144935870176704051772559991208784645061252866075217397512891140598198919813862137173221677873526377828856026', '7.0031689514464986423359090219717723853721214893756358432888292505514066899200923039123867705876470436047631369105377740265789600367951175515936768289179e+91'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('4710530214890381370276579800620538761177847584623583448617839732450139121804', '-147616758473374826828851587343791481465215900415842328993525561197826639880872', '-0.0319105382316060339224807086317037923016040448952462317561753805309673424747818626928'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('0.000000278200129486982077688649271481571260509854740782714876539836790025938358311', '0.000000000000000252909979128753340269124880782612176600424812163698540567255360265224242218771207153316039138784961398652914905155828749095593663889994006049007679', '1099996648.7892272327941351901883441557717512310930206254292705843067'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-3165462945043449825822697770173873801013', '-0.000000000000000000559089342606676757512810461453126381542470013180847602350714641444372036204185074951205986112031426110205407', '5.6618195050632096057165840473322988023200165281880374735653572833787186852205013065308132e+57'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-262429733692810207972645037144400.18269806103689', '110033413673906528545769691721255999.406368311361429', '-0.002385000382434223681365443460195'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('5213379032418921.8', '0.0000000000000264675185669630528861090418602094343870859301566265134428963592318723379747899679393693690958264490140098', '1.969727165479841778395949688752678132716083506911032610296299084980225536183461145035291112e+29'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-2236796860017822677036286909688240244682842748105504673512925531404527284134033477894225886620573808344252929159403', '-0.000000000136393998351376511719645635269388412449720942729207758590290341887036848011273', '1.639952554404494102088386417346975718433527554531410172228983218567080475972061304927175860610465118785193152751004073154230056e+124'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-353294560586778145181637320.920664427927685483540489865359547', '-11440419371887358998629655429786795668646167348160026994881761059011238817402656120075565.452943242502601569758041', '1e-29'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-0.000000000000001477376383378754834999381638465885543873270974437045233067902339463097874724054585824664003739542997850789686186258897', '-750257596591194896760725709388346524334189578568310794940856716941291827.154063498104', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('22866110851600356915197767841862317221498636583609951091122365228465381622784182673719955.762216878558951', '3244540191694802958857712.162', '7.0475659109206846830966960354624130300913036527250327266345842026204020975929256857716622957477137929033200652171298089486537004211007879488390083991205634127e+63'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('0.0301241657700865517241455145898807840960061286158190134771938997287189891336704261487445150480999772482991', '5214673821583031951476391179363041242596704869859858115848572474453289.7076117703318753', '1e-55'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('-2109247614259596462261104154037710034.8118633945841888040142011292353494685949644320160729063575699923835624', '5564588430118519605437541058812832442564871117702632074340959538752166301566932366470175090929575395276087470139854820', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-12495599787027704660395044587542386281629884014618025485933557.5356936686795029718495623556234410602257435149070394722171923443103572129665', '8.3418405831175531566609189025648844027', '-1.497942769646862329558576775763500083835492309824060671140650026458127671289048e+60'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-6180031466962071416984693901620893946222715098068634438275786.202095455277150189161450660984327458412445725163', '8244204.49927', '-7.496213209545317539468486112883412138142866524178365171000800452704094992e+53'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-137253440641025747708581049786105390865287089352987718766633682921586.811574722902566767075663921435484548776831982025538', '-6523941909150.6993143270831567220247575410360173605953571356142335551628703309802', '2.103842164022176182023934114545642548562175441928005779467112545165684329700005415352595605350561965332552757982929548425958227572e+55'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-4165494587924624849546177349771071835027598328578240377.4240162018756639096756752853356052697859975974337308943842128108922477811014882670', '-172424234368962791956594727', '2.4158405592865049774748458477501160510327372601190215397634596612506304490787184143867728540352248333915351590364e+28'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-2916194358790793748898617610079310564.2186861795', '-115837440673706918264621131113267068002459561', '2.51748859594126e-8'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('193251171594020881589793807041776404775969357399045403556625230079459931.346633134861296746184020663851437287163504617087610577194728060332714220386', '31730278802310092089786310690.457828758669228337957197427153110050322113084658820753290356126127083760756700405541415', '6.0904340865719534107289036145051050895212278e+42'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('0.000000000000000000276239841509500540675216476212', '0.0000000000000000002047828473753414442566556610560196982396419464842721556757755317854235892376563808430565208641170660276', '1.34894032898755103925760363733943868773491371994767801808902220616653851248892194'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('224651620300431636505792537643599012708467099084801373094962622700759738677436409866260582748022310704030786577703815641', '-0.0066805684041666466359904650227745786004054235142965354005566220331912860200763605067655193391533215030524905', '-3.36276206917239592778149757849243713734324410400943767318036544487399178832022185895841600254358259100728250836619547719389983155856391854740459e+121'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('42323448156024821152475613027193905826841455573105120602956661894.72517130154846768153348728741130739577095', '16128690281486824.08571036282540824142003942384354643373591662239551428402612976639671736835787340626002', '2.624109423479067021808258190546466725373963253821247012578250624167785203029270785095406864296817560595583925953580754373213850245877904131849442e+48'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('-17260355744028898102536840251428727.47167067', '584813681248.65268', '-2.951428172332735296210773054759418636496212202657535000383311484056900119295387196738446790702384e+22'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('6351.102', '-722457543832900.8959669257551893317038692505171023051335267221678929', '-8.79096917765587492179148479688691152233917e-12'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('391260775279904506743696126065386641.59', '0.00000000001211721537826195346423931590711810292741787138412158', '3.2289660872234610718256524076193001098974866804053393534890149668394152381149166140221132895885314238326241867228211778809596955e+46'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-216805576094.3459931437568298361', '189836620399483756266459271154782254859777972784322384879244638098502745619017524990605375423805.391793092702277561096789473723751120401', '-1.14206403189285e-84'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-101635158639251759816081198995530080536806974830945335098720636320332879027548146875327300652940771.33881663612345434488400915938302448892654931', '-22870.4438146458357541', '4.44395217963222760435076883637477124931022534160832120922225388368844186768410598943777557078009307922192e+93'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('0.18218115325918652080364187814856610785', '-0.000000000007500258887274874455316113171960391907638358845596334587266282124798879070171140855266399060309474525609221663629927361079959195487451564950409729473', '-24289981985.592469487742089854303512889'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-16512932730081.3826300879467559316857426018', '2998167170026065614480429332151694554768142821397043829992688178659454700940895488489009003609801879265966117001.524753950', '0'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('65474243896431235221407155339193508007673819185311743.4929500841614637675', '1529079623512331186190745074117513973129237085479934070925384733161', '4.28193816003089399970159121184642628971634901538631146521985635e-14'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('0.0000000000151377175539751752889574872158236224600095494349763057043523648238554292274543641471058359', '2302258641188299400222169194354367203323152593379218803549050.6822267840859875402431199757840123770587', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-138012747.387969833778248240153500672517982002657538729811077629341411108511165', '-0.001167923728331321995156', '118169315375.71924426365139520957072649480751778080726907344125768775443144630784'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-2136879710630007092.831760313', '-12298.06630126523380017449215', '173757374393904.78726879348213705478299093879933824375736159'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-5522342293.36236639957030059768955363363752219815573866587', '-149888210623104707936695808130558228', '3.68430730502770973586717827530357582250469108e-26'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('12070.634461810887', '0.0000000000000002170518561169756999134341773912905638576608788683698885269302555876693467937968126587531469', '55611754157521063233.894395304456955302199815766485498922427745701707936648911812149'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-2794613797196490246184890667417633192277951134708479902', '-0.00000000000055205', '5.0622476174196001198893047140976962091802393527913774150892129336110859523593877366180599583371071460918395072910062494339280862240739063e+66'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-128399182252646', '0.00000000000004384918822899140', '-2.928199755537398742704957490883343090005134e+27'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('1664173189394725629403489840805310542525504230268679885491575546', '159061.358657019355995297593905911963566606708503108682009776024201484457881481319453646694970757989247313791259204388464904626025769', '1.046246054633009319037426165868548680330954199316448547207790019679e+58'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-5496103887001714123841940726282631687942749309284260662935217418127390919', '-0.000000007339252011667030488716008717202577100006089170051776558272379465113872814464160200450895', '7.488643090964435337146734997991813537601962498849148092015498704386560923558302953709572716175492692383364303721239607490582899235482e+80'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-0.00000000000000000603190124983089384094465950250297812148627842353213834389603743882587401977996871804237119069462599161650353808957273964000758388009', '66788687461109134007614298445509100076155808825659873241790965563.06996512177773338', '-9.1e-83'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('24097795042803693912303347503674593023831164126744932918807129120748045585536768104874424890756691468811871628918125864', '-15.4057104716018806266376902241538417152751548380294763345892341696102303929964485772895', '-1.5642118607398450762022724835594933407291033309911318100172674173373431537337675741460926956370922433277124703376970506670995965626718654049750834794e+117'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('-23143914572846690460428694056056827835103733729201347085682.308830442829417669669924', '-0.0774311952961774201982867710899774700743693779812149334972367752131408074834460856251764984838809211962487092302927716073627998787103534217040352', '2.988965168924525984775056195638973797379606793876425146799465499304310477199305787549502376231360786464086479911412221475401723286892697363101427429481e+59'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('-5727778678002877810.45076524', '2.583704665523832219756485515353', '-2216885991047123607.997005418357098898392502671610881062456959608308446729212866225064625107778214916480465'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-0.00000013250095007649612402266873643120113209217614680', '0.00015890369', '-0.0008'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('-0.0000000000000004774820408646375541748977713421637649627137243928356160113440521759916440485963369649386109947525', '35468804410', '-1.346202807811636507808913120740186136324051314118810513385850132679991409e-26'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('0.0000000000052518667918689286398325836253575966191256561666116790606153644659683456893044628665340335722703201936579', '0.000000000000000011272257625878610370791190193812022718920399732384785698873', '465910.819835398728447831810232764270036767345693331370229970563773777510712840455109132787683'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-0.00000000003830276111906255993970801935061062576870925900747891436201795529213200339740471374458939163', '-0.3504438911421781941823943397315623033180425382039257701257425602048412142481828164193', '1.09297842215e-10'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-2.31', '0.00000000052946', '-4362935821.40293884334982812677067200543950440071'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('12860033851084408135641782273271604741.8559086833177152223624717900', '9.543', '1.34758816421297371221227939571116050946829180376377608952766130042963428691187257675783296657235670124698732054909357644347e+36'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-0.000000000000008921227585895644291500450248495227316599941600725625147897184043668351138336583927985640057798252088782407315089474562798', '0.0002620485518132748289137743426953465691588558655478950066741046970927911736988499887', '-3.404417816532162819930437617419212728487e-11'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-3056.440815582082124272599611849059840816357258009892', '302.3482139292620457592248865327186477257473960864801952575203547892864175', '-10.109008999461703'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-363289907705301330185166342887.7847', '81582297388203841077960836800056398595444981404938864424325392220121106294894259978964856232971907601192942535015535832951975168528.252', '-1e-74'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('2296516224651979830297464.96956839247', '68045824807116579941624973733395808321854798672516523570524572686043511663861855683892323399666954637758699354872406770699870692899336', '1e-79'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('1109420413960762331029.455835780280393628978489105963', '0.0527574753126000904825740856791060169906867869935640611893325419321672632064534436917408156809749496179791161907245616', '2.102868659630114970998941026066197338658552286853e+22'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('14291471321399196708748924587453402129076677581537443839514.573203083365312707541768208100608749831043311867206549317352', '638388488420920295891589359021608', '2.2386793591390922648023566830716199778412530029e+25'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-57911300960614165692638274958417991410207402319875633999887568371029868356080110249', '-1.4810200486324264339038329783179927289228434911039171470629063157559084909999560995832114991931104344335048303411052183180236470833601835780733623', '3.9102307233510746487570180875868531324897993346810427093406827425659614992815954340589420570161650813e+82'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('0.0000000000000426285056506080950064133048850537137499693259922650165245373450531748781558436899315472239295724725841163665769432778350314366433266150', '-5779195907704654032548969461228542570066713638682962217178649788187658662', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-0.000000000001398031380745122555139341299781437884251788646184279', '0.00000020146216689857977364011615129682178851026745397012075427830879338861', '-0.00000693942392394161282059818741243869455460096745989016115912589356045542051718796348936'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-0.0000000018281405235993306573729847264951062317741802688456526747584219244685755244146239709408859742677', '-0.000039977411760397363452116441068400613873854122773419085299', '0.000045729336720350989782'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('93.874830678659540224', '0.46388617207938526711279072582642076655074168793377847', '202.36608963328756896829965459129398111962414293407503586'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-6067609112729336.5641389158174028843', '0.0000000007132038331186246087595345637228616705970872979896242214523505385786974090998151199635608250797124420975179730066666021352180478401103585117451', '-8.5075385618687962529929035371789625929642334291459295164276298211538189129665534e+24'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('0.00000000000000433771844284352802326548983713676100075889655381535915309063548269887629783063924332916', '0.60476927774613064820958465516606346665521900423', '7.172517855089210536653893878745196319021954130581531446479671815157566119078637208e-15'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('26762355160537621016082743064295.080067862585415820836397592379007572501818714958250145285385957435', '-5871.665530424', '-4.55788140892369243973252976993880089852606673167328454816855114006281555607073627955e+27'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('5400782777118266253220.3604549383146344518474984883630457317782760', '212080883610.0053405387143231717032886408372941339512826', '25465674629.353880655491465646635526501057360762443680100871194655924059751770000081549139011336011'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('20.77041654716778297414458217600899840770494097528715266455063312827520464248564409990015045356357538488', '0.0000000000004484442840189590379525674891037241309254709670584590669581148534191', '46316604508866.17770208200452'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('-92171139886.2', '-592514313065668557458.16374560297863802699287438060780939136308560270752159071394275940584781865057712029', '1.5555934743467478405847657874615348589160126124969369199300225288497841912e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-1.73141', '0.0000000000000065059890886460822933200792819554410184307914670072084454675279458029847045326173763458710374392', '-266125561603164.6481065129861199786500770384274172169619885156974022934989'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('0.001859328353159714363321469660024984845786586153722037720449296018893801641919319381453625004345627219334745099168087651782771195701785834366016', '0.0000000000029762686563045156688993', '624717916.247637951532404712362243884526'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('67162649430668510155429.787732014861061501618925863', '-236.614826553838478207932465774710561701685', '-283848017509530683827.9556713847709'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-0.000000217646930938741115111466517044242535716684253500115893355171981150347876580196232672533925973269540234380973583815450', '-132285417864115507435251390828437786854099674431111764370942550850977334692494917177761883791402633834197328087', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-0.000000000000000000046680932882216251617394884793706741937714919553715649951530456939224676411667594694333115693147475611796139019549919', '-3644474484546523437086163830771009643582875859529700136548813411552777987975614101', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('43.86754082995769124119405561033228740811050643940714559', '-87769101040835904261149660962349618325876095974465061347561.07734541439622400299392053847494492509159707970719758153633707200', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-69097286533891955501666445951695889917944041836679579490274884686479808450601762828719379232555211.464168189127859822639025310124291164355646968878', '-58821105741403076530530664065722948506417551033305709063129798777107826508171796269342.01217334150981725', '1174702271624.51431865906695984974463725771232026205875331837518080884'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('9041636265152378637157327151399645223627585778021483146050449875915960587780957.011514048616324401939780019262', '375428654351101566466264093976.530146667443907343822845172341997674633876621072243523265376455244592144', '2.40835007140840768388739392208756303107845733097464640610139246515054013647374065111574787070276398115296145362274543291398075e+49'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('4360624497214267907387005.48284527700915574059974152280230117285400903188809898048729116969500966813507856427810907', '-8119801838999011.02575801936508385856521986', '-537035827.18858996800046363321799539681458780089399070149208302130584117879861378917309001785362625'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('447538448932939821135533209385574726.999129182629528513369697885680276177980080472433938883828696128997303875333052874470109', '-6368301359731239874931361545116070401531720301695926947100905984400301695842082221435827011552438929050651858585139063', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-2063834.517626562523135232310567316793', '-0.00000000000000070107213975625877203258839288362815899327451913231793067497874753297109809930914797490313679024856727952374866847', '2.9438261779224236904702214889776893449887784437556784352025548527885572862188847200352206246068587691771714286e+21'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('33027008169690105634816068559724706808923415773327.015527858161928614391285425483366275198184587804406704994844593736881', '1955751768.2230', '1.68871166097415889595880934015019445864504426875448780412584825158719987844520908736012871751e+40'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('3374245896870844425548461008173716930805794726086165400744655538619069411443360465712914030117090495412392208057262216', '1438668236215834660636686862218.430303427456916257331950800032119083925643', '2.34539542330218431284055647074890096403960687735631018435380799106468168265649361938388230442569966738108031238185858529671402260720524113238085600314009172748923207492215e+87'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-4397991762183334515646102.4647946033986239732551193534808541946505424403119697025954989227216087600038', '-0.000000000000000001309310777068216172367884926521215644215562451382653727249946321416245076207309362533728642519049131116066668568201', '3.3590128785399858616894844930849641709373058417350705338336537223329422059258815134387660076274443568160804503424980334109854992673514690137e+42'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('3778149113705545526018562196775435279458', '-0.0006964468917648584', '-5.42489191692905607968787881365542888273387455388666683403075199311e+42'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-49586497931839593912557000362055451669722521481472795709900395803665510112669010598789.93256203887798759539', '0.000000007730636239396951030874083637860149480910614389067389278444', '-6.414284205889335880923458303359224556138242167330384329448398345627090947349457268582143476335216106813906433026801672417197666018496833222575399337393674433139347850478041119759e+93'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-30.61', '-1218773636243305682928698105414537557722577755117520364308947828946', '2.51154103516309388992739424407303e-65'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('7837.85425197', '-4924201364768546154091768054816877908044319654750206853683883187450708815915970.26120', '-1e-57'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('328612846507912440195895320949.97880973689', '-74093433362687796234732796000026611813849885047953975898959442905406582392244924227468980782203235995581849287944526627.9467766', '-1e-69'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-0.000000000000000262386736781607554119176572519838669441588659442395142995275179459235189042024362526997735063369741519818929464815095248173849714455', '0.00000000000000103533440318658130846004063466103711293231818809309123094434209882633604277459619235001', '-0.25343187280749706110681147629427095838017850949849764966606755516172'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-0.000000000000322432448564741584339199183214950196731593789971512714485477682494095134481209913223923119930846635502812', '326622415640382004330091150077429.9604314115936583647', '-9.872e-46'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-1522584539163.51961939035517', '-18701310931279048588339319679178119484886874', '8.1415925587168700943027845074751571624847931e-32'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-90558127980337144935926146713051405660023043.709734425117178325791783664294624970951', '227135242088470738342348340673455214034602753816278843099968.5147421782261587205588136', '-3.98696949e-16'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-142360756712.9628518058827179348092374075157599015252566070459583192544507613919918737005236747495977670122253720', '452664.7791873838', '-314494.8828767426713618550484858325223775720701584135560211010457708'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('-332430460212660418334640685435602340486744367646333583929761668829129441741273860735150261087380331642775562434.493628257286898761531415430936915752', '-12773822173744527946945352241777487614384940699496786026430373.94891373254810706379263055687667186587167044988100388564148365146145721007864602228580', '2.60243532195040335686018540229438057542066541716911101476582563056311201664783530252883873795758810590583577899737316941873834280768183214833003e+49'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-1456234373638105442126887571003692582872067748502.83060615310841144160798623533155017503004909109', '-2577402016398059729629852253016480016715321902659900317234011361788515601490353326785.9736500332116358015946986445909693', '5.650008669090764573237722103893029526602580293053061797e-37'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-1', '0.000001505173689176735670136790476340231206410120652137741696393873992345105366801675965982936861911208213462', '-664375.1529745091180083851734560063139843083140854426978539692950873529056'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('9398596543542648604069684434464332961225347551100554373590714483735425042927783468545519.30', '-240475881254266057645992650522163857746548650866202234477713142554822191906958234727013391569735402429880449813542023581766.26252785778572365938', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('23619943335582180681563953221208403530666785379061989956504046069219190202869927837503698514687381277', '6471793226090782771143276213019502359606942573956983356423480330897279844876426842310422683095354515904769089', '3.649675215264804421572736003455667285562991725200480593830141860993925734727e-9'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('15280144164041863971453423592085478238323177732723827062915112531134543514121698538407599390583581.978317', '-7.93', '-1.92687820479720857143170537100699599474441081118837667880392339610776084667360637306527104547081739953556116e+96'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('0.00000000000012183457923138078266692462295149758615914063', '0.0000000002143248855015892192235420872657900272424743646164899393878249562420', '0.001'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-733440663', '1038507994476889827158389690702181172393885088789796311046631163736129461192.247844400116002721704647439830896', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-0.0000000000691051292899636275946254155870639156043778701438855762023283310983413001370155778120594530140708378895345280', '-10027311689094384145668140987547', '6.8916905e-42'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('11359120624522154.53023', '-2550066103468355693910845303600708535551713199276185341634363815744.004717047270320163183448760067867802013667339034541657861414156903356182450297949', '-4.45444163548253378e-51'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-52708994559929466242780826241190188267288957045778695793224196458877.89252001756041056', '-1522917728921740097150220037765480825123518302856603628725087304924959086265252527519267055328761803397973987775137611395540037908247690091091996', '3.4610533162056374751e-77'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-11165328701081.4257112898', '-24959530845518955496605684781380264355964682863741574790385933551049268928275747739569707770147273583424324.041182416708196547861', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-4773610.84', '22', '-216982.310909090909090909090909090909090909090909090909090909090909090909090909091'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-6836773211644461696107713553277748809321479076423818938386143460001184753786637479647627545709037633619234477587974458.12414165847', '-0.00000000000000515154630003858448134268186053972', '1.32713030485492386268968038852626076949228451353445518063130642075005837958980212169859615469571874484247092297182951469771823174308362479399401805152010109664594972766438102187936770325839048e+132'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-2778.0429380436', '-228574120304150509.93633862948886848632880765855966', '1.21537947268352914851929108947295372671956410842896564239e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('-40155867.4692', '0.021958056331393069602794177925507490', '-1828753276.84581176220235398719333810712'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-0.00000000051364856828450921948681529991843102776822771569870399038842327218548974035030728793', '45297873834227276911847741.460307540547555645664226582603209420807095413867035', '-1.133935270702251049987351810993966712e-35'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-34755259101316819628107054698802052991490868848405157436437774467957274927694958294973057545663400', '0.00000000016806976065534297209525672681893628545526073', '-2.067906740974581308588601710681711152047271605697020136705387772142288905538099935023745554546254066549719693916540022e+107'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('483701128655610710462059386841552.23428026777405745634056109804544166892563233022827515', '-0.147748426679463517910246778', '-3.27381576593697406393008840795433400914034e+33'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-1768719208173205132370941848398177.82555203735963819962601112417663490', '-651791921152437137591780698038712686697839014597685.556625352529548108696424', '2.713625546395116826835505296902051157787896068444841552527408183059190079795466e-18'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('0.0000000000000000000116409211334756117796421454726040182728029706782586560372354', '-195750459249224092174322.9524725753284699693145539754539744261301487720930697298545585583', '-5.94681676769642296321783820617365e-44'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-1001663574341113191015107704016663769094751976791065070936063655062457138070317805959215957410832028469518206846767458394047588', '0.000000000000001927638461729248159701611055290267930819901123886819050275079158796663198260911909162569824451599603350160262664574539026827892407612679905597', '-5.1963249033874311854914483288632911031720642484893401316699761274458777624492546940478687383187802093971235833254047331529086538329373017559921977388196364330715192133449754987426594465068690278313031907606982151272535658547549332601211e+140'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('45107984107407546633731040234669943746223757421086812276151175', '6570739.55512198111283137872024497742259916654387981139', '6.8649782462074999939174187484334558889424532842877095510401752511100114530695303139647748256181475528007192674225442277871479186150732365801782e+54'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-1939019173017959289673537548091.42574322', '-28364816051020445350371723077313', '0.06836'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('0.00000000000000000003958711472302434', '-10336921715770888655018287383263237433033131293696708328095462.26581633038219092238605955538842322', '-1e-73'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.00000000360620216751902973550311438153812255550584486477376375794853593093274243571181897148522432', '-0.00000000021361331', '-16.88191699065488819729030172107778562817947'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-790158223.981507618099539817069435823662655715183365767487593453916243957788511546656932240172412405293980469406614365235479450821540090', '-6.390823560', '123639499.129202624723931482951069896797879319826405247759272117022'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('2816568668914919894184461316328112686403162283419526.037898686935349578022761207496388884025302185306760500150819738851518852348581120296091201', '-24359069157465989851999751295699220564079490972064971615148408960511.069800945647793749994706', '-1.156271058925767323491e-16'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-0.0000000000000000024890937874691414832780758414290817480213020179263215656654817118841152359625327670686290364905590966774686272638666774', '895259242907016.0502793593420537333', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('19.8064649721071437008269', '-0.000000610471699350340626524661977449179143416264680806880502799487146825848660614272804299271821502010143241929387462842', '-32444526.082347526'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('-45289296066158223218975737417', '-928257556134713226122051113853071323481509785437.9580004683247946082155141', '4.8789579752783204416317411498894373813729502066779191802429763220593603e-20'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-0.00078535502903380947391345955437624724068791174093701655373526043250494899077637070000824976392144327726121891764125927532007759185560467741', '0.00033304165069526690096299415595923020128400941162386700917975599797630916234477195385920220999258987846764383579764299409515938262', '-2.35812856258152917551026948879551194972598994164'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-0.00000000000000000008825251516501312058940920752063296903840000436871599720760748237461134319724333864621583004595932821349886876529856620', '-1.069022355834988402', '8.2554414959901509e-20'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('772501446257033183307692089313828879302168968892627034487', '-81384567655316761750463795931268411572976483902961095936051873255429098175748058407202432776421996767418992938712067148960006', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-0.00265017197393737674878379337531359823824938425704924996611013433756744890535609162913776080524748014471110688967245', '-7', '0.00037859599627676810696911333933051403403562632243'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-277310922478082.727664976536472274', '154529797348502559260809623214894553999958281920.68284', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.0000009313320140538311704253939589245127674', '3863.515', '2.4105821099538404029113228728878049325549402551821333681893301824892617215152523026311532e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-2568129441898937556137786104568163040208787348887340706590516102430677178523003610340952122154266048038803517.9730399', '2008033988816.448818286257251013236779556387322447708', '-1.2789272772283169601264070833637617968495425557009005099026629460069620253257540859429895418421573577447732149647655339979825739828772894437610209251266094e+96'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-19864358680856516816965874962516514095825848944861003560824471282641009178302723950309966162223203662500825173538382807849542795490864', '-212016590736544138965692245918445194436743.36955', '9.369247289491768092776264587159160494552988464730248092984466747489758038653366618968029715883528381407847681571034553201507075708328995885146302574046779291068619982154e+91'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('1511027826251489127749427412.594728420145970907761608905', '-0.000000000005054254929588544894407021979291751880822369870454217947279389954476649584113736749761735972913677160254565233609609842627', '-2.98961537813546413033570359173078020590873199079297173668655504760939876822597828916836670706313129157434826e+38'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('22285404622935267793795197992056404.53391687803083721925751604043871437161875065851355130686038100493717842376997', '-4433819880661.57', '-5.026231381237359578736427609583397447404830026960320692274017472790674094608582126881777430863932037366e+21'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('123562606073560146296123.7046584273217991', '123660907906476375.21060629614283', '999205.0694550085812041263906'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('78898068989628943401506603.08270675806502466782931937791', '1194290107270593798187109116843401631571498310092606492.3812296137492117', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('169618.404758790672300669003011659982169103226788460655085196350560268581341040077434921194540955861041765539534830329925806180771926', '-33241831203.2932498831181596750871234634196372764398718354398950105612738023294', '-0.000005102558993259874037640634199954927858349496975542935252463143304542819421369658162930206'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('0.0000000000004256523277467355704328266207146459724948242380197393426799174232335053760581798310771934582472', '-3751.6999327899249360004425625782491517752048297958012648165386626140051399995905192389910930599494479093645321707694003235782006873', '-1.13455856111126203084455485321856616400159860094794231149790756129248740961379556119e-16'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('23813599381691561229007340870372803387640938880462859216356795005078604814.9882719216101924236603961', '38308651070420356711.31559427577116814710341917692560657321003533709179197980154442215370094187551437840068447305431970852934823060423749792', '6.2162458651745622955827942872136467555275870267453834906201072823776003e+53'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('123318241287275162822.18921655260382872027152248806374505432037854629660201486592877056393401883557841579361303737894282226111043730914426777', '-456456870233698104500134908313823656919763409036810694906752062765896775554992772273526763414.821049', '-2.702e-73'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-0.00044924439041557164526403710647109171619023074888798', '2896537554.9643121132126596022879137094956679374358705958834082310239566109418666114233785128708983990494959155411325221335148', '-1.550970363376168035694279112e-13'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('17745.2955392961297211454125402462484113848245919170', '-0.000000000099224718451726955927686055622403272238198795216324565595298085034868448575767391976853193092154', '-178839464764309.2591447558517793515299087235428648310893153237708280103884'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-0.0000000000694814101631245596793089297088211135109252430430852936684424089336464000093052558120735468149', '-3798.732284911850396016', '1.829068356280255116529398511883463143917963805234e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('108362353608827313268923', '-7587475', '-14281741107394398.43543774444067361012721623465'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-2437306615589890757396045177852340188890781157666797.758328182028601588889289381762106826', '-0.0000000067236341318004956925274693470194553548248404304579053109249950576333554557142672086384285660967276155604', '3.62498400093226659476203739344917752015130930481260759192617567062207360357352316987495367303747021613308511833497156590706629890507591201133e+59'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('244988517990808930085467508261590051387045702050595134044233866221490340947152783388022914260519574142338054725747610963833396.1981754822453301022423008', '0.00000000000004844724052', '5.056810570865697060045216962577790413790232155220285269701339559834446086778954141927729225815554750244793812783861956144977072022831533714979526398437687530030657770887628668597697047947365733679974720673729716071762759708981666e+138'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('-8661.23764355576609715813061378733799386150386113736711466', '0.00000002746550005875609134264398274317779051', '-315349716008.339'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('0.004084047591682', '0.0000000000032831619542706580584142574696305103978401516228210867372723583222083349', '1243937292.331731969037188'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('277.3055135528460243580', '-12816393.20060667602565', '-0.0000216367826121095837692489281740042365093693285056386368353765783488626148054053296096'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('108943826822403564658955722844387181692.08070', '17956512383891224117968085143785415430720528657689150267073648.4996172245174500838100977991267032167366120333319840181577617438967264566242034311425', '6.06709279025346830003806908834554369487376222264450832057860002548116e-24'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('1218602407652272553917425396824889774408764317377422710850106480274990119689727903314661655850713934024851930707956995544036054851232204314825162118384', '761190693432782933.64337194443708884826858807341264891408761000973550405990790742592204569', '1.6009160623820493873575601067919584360157853271743142286601103008698951935875610296249851613091888583864370374493428467326933214038637700347112962807200988021831e+132'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('0.357993343189568044894696414183551838912685603488527040312180940359257', '-0.00004871334604822953683966094899017750718162', '-7348.9787138647836935789771'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-70384419738273212082980167906205025390385278922361099370019370514471617614918759874825.0968041227010334018165511719334774882361', '-9485535443.3721609', '7.4201841486400220783041528838155943601598191710271697019152285206166947685907647495910649208911100666143546691486096311978840081494730449273473635655991898192730622510614237e+75'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('728833029216775114.848868091419422053', '174273372885738292445587123518930875630273224225600720393234457013207634849211187407006878404245995795992915047839719297487000353613183952930220', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('14288725.298447668461069196056326124584479502434011463528734406498090064700828497758', '-23577164346464368715591356951222880586046465914352944685473402841563781393590871752173710073876024828233931511264641696246181697614580.9306164364', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-1072383742631234330836349556630563550044561408769132023979982507867022584644999221.360492835541094441894060082118312853118651940513', '360947434543926891199091335810194343170924006386178839455975948816.1722627808116794053224391', '-2971024697782486.807471809419726509097566494'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-5868052.81873921557294337625030742481039656', '-58837964.45893536843884565909543056590172465704349797267166369942', '0.099732424000403528902172910358489624611810837087'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('1612040', '0.00000794103475470686100081692084019937802726640263203606721720379054195533340757393430931', '203001252329.805170830142123506823342889353430474297766213449310326943'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('21317146000144010768999844337.09405418305272761083343833305157341739156', '-0.0000000000000000757193290849889312911825751507888440033946174186910125790903709584028592109335626795542286954334597472983510498121', '-2.815284585553737269426231370641010660565418051037612422994606767099732969097097789353525e+44'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-0.014774874400113761275608315008410716240020003723449012821995398453187269704996948301479566757073214153779919007657996441', '-0.0000000000806493262726523159219918774844701743368445047223735259792392263754101924782666797204608953839743505777878942483435511937557', '183198981.10697335278713668584937529398989758670399283382712218949276209266326354897355313149339935535891'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('-5020395207847045587727077822854380739791994932.504221342', '-74.560660543522053645514753840038270581853127300632212275', '6.73330301964877823929748011165377224591701723616789060326824962023526688646477888047535705e+43'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('3609662930524403234872562856716221223809358860565279701563424303123905958311859287738683872033007265471771790.27931527380155673054427138450665409', '-16794861609975881587529093087945512128074521.8600898019055683338112609046', '-2.14926625437646992547969446513122412619322996353514537842439113690086159828370263502283952142780682828700756036392817917120126832820988735967571618352760750529351143e+65'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-209988405242950665631125009649210907924178901.5873429339493463688159064579862138303938474730301184064145339310589283537311', '122569030859976508852246994830123364416.839524872412501134762656285560330488', '-1713225.631055551867872200381862880712944424'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('47420894138604525437802946544789192269386517706561870968888268715.94284369', '144391219557916288080545064326186839709918688878883756325748745387822257762330379166.90133558573313654585654061826370302276458556690373825246863081918', '3.284195138997609633701571208e-19'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-1308.3407640554295633138303751449390044619045210832648462939047683491785368189241638500544435394779', '139897.170891202872445332860351471360991118381599841632343765791145944598307655379', '-0.0093521602740123868377384615892236251'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('22694078.88024570233564612', '-103651966799102889200282761567605028300454815274784159102379155983367521850058760610422.44835166114776390493475081358376300414537311', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('0.0000000016040003695568230879054824', '0.0000000002071223092570452784024285221', '7.8'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-0.00000000000160486518', '2000593113460475653267471363183237276024632954073910660524421220510512507287858956989710464053183389648090530044356759951939404939121570506069293.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('9906428975181302.54887731911260593747588310831803790859593036337074878585870011073458494582', '-397802766783631216105934288942707453764433787034150600083769514863762243976304563720310383139730329806133430388364738219.0637920060892298', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('2372448042620504597371648108873793114912985466259613.353350132438952846988122884875738349', '-1764.80', '-1.344315527323495352091822364502375971732199380246834402396947211555330342318e+48'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-0.0001157332635650475407713018168116431237125041538776377390530686807857574178284175634791546302355710141408674979023683725384881981444027014280402', '0.00000281561515149383689194302008444442670960906950880195369760891106615998656', '-41.1041'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-2278482554690743451116787903639276368232226.66013929334144203016049308412938167233648262684966359705041443467563802410865800730861965740644319', '-0.0000285627859101525846417950839372511981150657031908402772381658512315358472462141610401734401821536946991257108968597050239867948233205', '7.977101960074774858211228278423949748026430860250159654207880264e+46'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('59269537807238301464926245600012460478807876003104742707188939016142085932.461535987165237904369', '-258026813793798647883605234869509408101831192264071908426636279960581099948371251263586124700908939249794338905998034191710232991039.1707483647', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-1223654840276336417110.720248945988622443849428748592681708133806032494842645', '0.000005831237077411969651152036899437660106177539656797108710536978889806840010886384299730740491464098643257049074427503358368686702426868', '-2.098448106348337933778408317445108689803477267456922732635079970475386825568124960925254029599e+26'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('-160773012905405114202302264705.237006267046611946082538479652779007371207354482', '1.00882982', '-1.59365841213342716418020102444272519885511128077164232198898302795382484e+29'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('0.00000000000000000004323777444337428413401949854456498464107873509686060294293240239522287718342572817672581228188853960600088276', '-1720809525311020427781913988340982076898548107102852062.676036648142132007995157885488336157', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('275964569992834158046.85755492921522352968031279303278320854591089076622628406831', '0.0000000000000000011567413250188073652649295282698546264', '2.385706847538686076052372330461031480699214143842428420048025129597251853556690269292568001621528e+38'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-461277.6333138647416813912224020971', '0.0000000000099173109876618658838716685018082208815532263892509632703426084173504611870016955196', '-46512369521107142.338455538950483324289471901187887073378652573449823154471'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('0.0000002108442322507065273331916223534695254104558598616968253642258920245687870102832329146234616963726682601037919994780108', '-122733644498769014232860259898669330756311954767551860271513349667053602485734694104734533969504443767273932914.6142703760252739736307212317412780386', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-0.0000000000000060594249199960178678557214', '19', '-3.18917101052421993045037968421052631578947368421052631579e-16'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-195811421292774532695127684610', '5364891515549654383840359386200881808248648273.38684679459888274463788963963832393300317472688786484183567033543759756562080', '-3.6498673034717063995885765222443344626881916521520475459963682437300164065e-17'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('321599344772386898451916.7627715300945560317184253492986616105408473681672', '5198578201870724452821312525638369209544427519', '6.18629425746944383858562e-23'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-59021937615669339998841043645954574650537447011352862778879088165342870591133705', '-31043943961314907903.917022666104157063875271758', '1.901238376451746005226788041162920350756241738370907016373353852151918648648524831189935921563308495877744181071742471860065257227400576969614987717462942965288e+60'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('74561832673.7829007984960603332233266617918423177170', '0.00000000000000006873561532223891756546085942022131897875653674106575946797061921115929939619806214882799422660', '1.08476271470372583117204400816138572483447652824576914007705772365515600352921907957e+27'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-0.00000000000001181612138264114852893', '-2014138394172789635968869539481440379570926693879119877148890105101899856887', '0'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('0.000000000000000001366669157340155864638406598347121179240648516312903388337468824794236443', '0.09279854219071497335086066371807349978611087519054983041812503112761286510457945850068199743095099213533450370544152422434530999', '1.472726968632163443775e-17'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-78371120871915218416109307836350714728084542.8509580566711220007561197751135664622126109003299', '43007007872.5122600819455753207310134111591735810929769934012081040632613037822382277069049207138502026056395', '-1.8222872212880862983930187423262228886865683284215449750904200136563208402080615970986029585126e+33'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-0.0000000000000517794840657346263669444830486376125575898943952169421632193391568427990119566089652988965287', '-2481869359091334705649978843485179', '2.0863098162706e-47'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-3800753242813048078685520378088479159769007810051420138798.318437359569382034181747551050841109869610287520897097665424309018', '2120739344587363.708696', '-1.7921831141170099205343015684935713366086039e+42'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('0.00000000156378007339816589413849870302278061173107221245900492549184494264768908538501760700913700705661694518521990', '-147905231008539027703441521999592678242939864307282268778051433970041755560991878988691539683117377228346311196265663176368', '-1e-79'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('741656271869496797735790303832261133537103891264692918629895512112118849942429341763013083975.14426416177529688110423', '-0.000000000000000437337826800047678192062342330646339091550872169853273984551870245339880543712828', '-1.695842953480867168862390919936147283150013042613258578865996738907912123224955139261119258615822423702514014472e+108'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-0.0000000000000000003945300955779', '847727675538094603.20881447452191164062072672479536794', '-4.65397210640164923961095649499515968287606288438807723038872665e-37'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('30406270810174239529374782771.278433634', '29987421017195.34213074507456021388181141951276966130667', '1013967516337557.710497632723045632319445155498074564685828152439862518088518960613'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('1321582320879431980643741421114187366478053138649637668992881959.2129046722412557062278480288961369942243087270503235048', '5353687452618.583059658211501436312520038528750985790285597473822087079065473605352932561835681782367558615873020688109276602501572923764050812', '2.46854589957996657645910450288106599408003631101543652425393688899855419319127475552578960011427121170083197322297744165290631533010105e+50'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-71114384870614983561285', '1133992198.158', '-62711529220509.29484829183226353193172706639273290971086'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-39227358344309744601.6190052074465462527776360266851581447664962', '-1444964189776599171579507378211841602075962.41427204488178093029', '2.7147633568949932545095387341963803e-23'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-115837657853606995844720884404547510799589826002075856641765645.884897817702221155047697110251074014', '-0.000000000000000005854147', '1.97872820504177629712272145548356593709706684854473002884563106947771925956456431735822674509324781219193846686801680928066890018306680717105327215e+79'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-0.010373063953923606543561967610595048856094941146349335325081365967597094701818986463775428252905398466576085651939530455129876', '-775977129938895143191026019050875712630.081238325561355555977712789958391927923556', '1.3367744426617883252061067e-41'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('7.07270032357039696248182238248680345100011862565879980707827264424914118160062052198454592559803381016252310534580195317268199231287552134562708919', '-0.0000000042430', '-1666910281.3034166774644879525069063047372421931790713662687420797193356543956211458837'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('46.866633682813410785775987851527123392474653581600', '14744446532935759609287921364976802650424701828423320583228334739180.71031053744910344739840934476919166750128785863253737834003504018235025403581', '3.1785956548537e-66'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('927926535231817963312783236933887609006699734378688849483896193306043550581226971475691162837812939291919734222589466', '69.511710136713279793', '1.33492117142105042044272745057547679402654942069096851346518705353507990873911816934880681475837540541622519330139834175120161949722916325495e+115'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('787903250684746738646483568711405989.8072', '451387626240172731.019210241194149882', '1745513622620931050.6672583063048538001140979597440641826636496534946948935720003329273468561267262176104913662'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-35722157.881486131645169672', '100206671548947719359824357693430577834853556935970147502331389167925089539796326', '-3.56484826102991e-73'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('0.0000000000000000059667', '-4900078900071412352023154638895657134937627488698766471691.9372614175301411259218255283959138249', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-0.00000000008650', '-22396792171036667264820309801315647978357144334162083.12866630502374705743738714172542142604509322806665229821313430180867933237369724', '3.86216023e-63'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('-0.0000000000108218545232858599713247632273393827652613606236609120082718375337518468', '-63988964186730552742407129236660184331567940737451910.3304633376739900323747684284915260758624361563', '1.691e-64'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-611570462009056827.435569946920300837761877488706885146112946472249255617564245022342854093878918337418143372753709154', '-0.00003825691236243693776344', '1.59858813543336415108781383220135731029245763562744870737466231608092674465245313558622952768650754e+22'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('-0.00000000000002350727657', '-915612530549.4986498012664321383', '2.56738e-26'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('0', '2081391145458817054585942415346886612310280066727237054540620444.4205926710227810347374001861892887965917226', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('64396.051084014341723823184970', '86155258221040764790041031697500330477136224068314716800965714827382301059502', '1e-45'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('161926311334485920669832025449.009880427298015253186', '-86582605145623002508536223281526203729561742002210759062959789469031200041674589645110030900182321286311210186122668939505495973', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('42087279734600054895122284961359726', '-1582252444748.4434081621928924796519078616601687577335016738990864202624769180498313201555599178778167228264', '-2.659959848650533084475129893774578626283565245686747443405755946430798508683e+22'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-24393115207688675596870569.60246572272274488061', '688252683.929', '-35442092384495610.853541920910354488'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-1567344498539073681247622389927625227296212807940565689018967154193560163921622741787409136074905827768114983650967330722209873040961151534', '258.33717', '-6.067049888868387314328876444406452340157681559879926256910560544553306688006308739030504731761619234925098016870616530800464652612557269764935491087093661357364873200399307618024924558862e+135'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-0.0129422056645921791719601465787390482811787325920494010286599323572427445323507748474706026834212758691218654442246584732314391687165342190568', '0.00003154136776197801492301730977304527456305458680388423929845888122232881776610108874270552996290271983429445948093446850212726414607906194786215098186', '-410.324807797128661323887265083889695306'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-406970415760561057780064386617119757.263519308742495691905858945535446149666597', '818672923102846493332563572860615696408176367551324730.55063831266', '-4.97109901006748024156434129695480500183959174647946e-19'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-78183.4852518372967216919908152105019548353604155968802880295485344023361930011504010144273262654014301571795708830431176358087718130912170253094607', '10607986437598718347213922016340671665645380719280718296850684653.76305', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('0.000000000000004145660464', '-5669081450251908.97', '-7.31275516215380030908528456273152405e-31'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('8085929460048766432605442731895337580721930731531160363205580.26505446576581110416693140843978', '-1243721289394947316887845245824193097361966.249653947607831559997614092106', '-6501399894812812831.198713198187909917407983439'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-2.9', '-1699646950681199591783028036599109.904466', '1.7062366974727970760023478564214356178487652157693874893e-33'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('32574896572752', '2109.25', '15443829120.659950219272253170558'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('620515750041051508976194269482692426.792374124676375501721806655902069776290778032909930175761860106409778247875', '-0.00000000000000000025502027337128501334086671256562706677428', '-2.433201650355225687343826966938669897350496730043906032795984741439204415735680231346983110085327281725e+54'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('-253.813', '-1869585213725782328284740947349296462812912473332034597003.3796368114407427121179229153285713', '1.3575898982116549522e-55'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-7749.189083081911855387', '-1189424888787048603763869473895462110995036714135783822648383660167677227173.24822876013469206546', '6.51507224721384284654098e-72'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-0.000000238652049254131502728658064452379793668878410887660555167523377063582772456856506170027418975766063658718364642', '3959898526590884727868890244043572810183271778744890639631359016535003209034837033601678211117581133648954265931607133', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-3453361.707350403941292074070462462215003897171541056568419329951886979682783151212845680167855795597', '806968173732110495460370343360332907753082343769580247019418335040085295622247944.113181040401', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-724857600294781667694752928854814757656504767543457037538172015151996311767.09336880355830077089902713137225902023265589', '35576495139923912764190751090614238451172063111222.28063124953341132555160276949186755806110953', '-2.0374620868185159744695260524883428541795538598441228267669481351163e+25'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('90459314193271192639929240904675200094595891741', '-0.000000000019889929160726332308405810144349653373871391299062112473', '-4.5479957953740563425543786103581716954987416312106136180058330915250854154594112110449049208323220551385018515955e+57'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('44600.84022950209680023', '-0.00000000000000000115311776106711337183380070428186718210460174435684789414208726423071388959408295974956801272167126248976268399', '-3.8678478239922152849528900064954332217596446721701658710556060137824772796869614416953897607521919019343e+22'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-10715501213702182653755677059471903986745712416039481030034888018947251957554262751035425774219408354219229431010174855261565', '-2381854567973257344135529417942273596912976138767390831640225026922807713902.0071335774919922551743584084296711', '4.49880582877908634337568444276962272138025492001094392161322382200062887587834825326e+48'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('2777668415334837530456350437716178428331624492107076073.41625457761506567113771425576298699683994847170140889', '184494.12575792230943', '1.5055592712905453936018666314097684118462644696286316455992236418268694912929902592e+49'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-428671235661827622145886760609974763913477446573786520227211838324915172681321030', '-54033836316293132277076121712987415255211481254501215369680720161566364356486560208721024943916240198460611516.16193777087396874626696220631068', '7.93338516911056208275506907306087670605307211111003e-30'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-978985672242747393376284400.086508828304570555143389028101128064378740092651676', '-0.00000000017031419270073073837437059', '5.7481156251198730821256455176555394133620762834287734861999760249384322e+36'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.0000000000000000001378730557', '-1699779642968351661661031.311690625306919991313407575', '8.1112311393040415341897777811568499173559964608262755e-44'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('25035.81', '-15426707.4618102211736741817027124267128929389864672346971215453628022333618070343283714435933840549370440817800415731266379926224', '-0.00162288745423984430491332103031999704602'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-2606249681620290829340667099634910134015377448379297907355930709477129127287931080970.3823', '0.00000000000033908909007639111913931032300995225563862871453348017661978845392733842725731860200639', '-7.68603224902678592253345758414787292010555942627904562046643516437873453392526609764369131977904478093051086927914850258545236259386289331867081963276534886186775e+96'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-18.676019163851617971086645663075862553105101236104859133581502931178', '0.0000000000006375599116277133928718524563585300723831600550472104160406441918422002752', '-29292963411346.031950995103512983839156509002886050570463618693933772717951886862'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('0.0000000000000000002964729033966907', '13895575541.08962049977303092171871262', '1e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('-58980089059039419671272933750401215.5085969954169088', '-0.0000000000125213936688911194374', '4.710345399136598676040815418635405786309422752100955873790600841e+45'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('39690352436779.4736', '-0.248929065534135392063186265360632', '-159444427879944.680634442270293792464789705288807312174022895428661121490808590177215482036142766'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-17123758708.9649564601228520', '5545507646642530171986596252367364902598174165564195515271857107056083463857906774263438570754254091969296', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('23365731929760087456.804640391878252648454186223486144064', '-117757934162037809278172617398911796345898781763536011679981980116.750540814266830722899218955991265238892913561', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('444807234941979522201.4377324457637171347360541790112723107359368409461559006408932036173841116665180019', '10596400391', '41977201552.3096254622677679871528475857812698783110065579944483659655019448236790586952995509611182643258803601'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('0.000000000000000316569832379940145341666909905669974831156007789376490451096259060196030786124754300574665663045', '8171371376785690519385585.66701351562686282609022822813906461874031199730400050192', '3.8741334567083008327580963619961298167968009906262279841008e-41'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-472774357119430324036326668012132089659224779691780449119591400743359784143595980403408625527315308155508917631466423744737135', '-0.000000610999707968028327893541028926736631403178652', '7.73771821743929709056982083941520742372719279283796163835376988970165864888874811606092407408406612567500206742994576505018921387373967309708278272562624909756996817913608228003053914858831348442647458554996e+131'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-0.000000000000000011185187492603045638053', '-0.00000000000000000041164932486862498504970881233015226828321374130173621404210045031592096096', '27.1716405612294404297'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-54591088934771685301979038853788129815502105752730536628129386943849491450034859339399639788058404794249160.9775031630212873970742766620803112572621', '-2192151722.637650', '2.4902970159878517012397056375294605095675718386007277829874517342203381243325672186112045450193551435639746702061290325559872583574490985e+97'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('-3231763423467127269100.18505608', '-3.13326711', '1.0314356580556986949957755296770724408491301592222056037858834193041396971737912252236931054371550212327732250060225474e+21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('1955114107801948058.5092090650976512', '-22524335.791647136092584364897400645950764607967220096', '-86800078185.967077384347495790490734197197'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-30.790', '-213014.6489630208957', '0.0001445440496693028350771572054962468560063314976370719645271743152409028882684'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('34179925021617590935187180066109531776226514967114162257854629299928499', '0.000000003063508106169776354847939', '1.115711917092063862544394218888964553782373466442043171279573403322669964006576523132474048453129637844536324535553852396281087914037409662317072309775853147240349e+79'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('304537523646.1753115318713779438263463839108727690259207871526017494105154110757369332548256496615515146708977376629630738464401627358793118283', '1645972458153509472825876526525124262646183411615223661149854250942320470406467.99248631705447915', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('10730', '600087011262096100947134546613401985681628488732289866802893293.4789959830436760144858111835538414084803511922254436397019080617747577133132694693548', '1.788074029036687096006233786675e-59'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-15944715365282477655012697051418033363146962116842560336620509095388747479936979318196.9150740135476751963209781689565411283717995989206', '-1137392888500286967783149313346277.16933385670644329340911202', '1.401865224100920229505756531471088159424213471155142253519954330647372862437731950075994514683169998514756e+52'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-77616949049052624869493746.7161905624535278878167162906431', '3378695176523.7711316772863751051858448279547509', '-22972462738976.6966249948641494590524792517967393648725860242712522790826048944088891928847068057083265738944'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-616684354616574331148.6921559', '2964745499577529510416017186535082094815367092403859067055344008400002.66303665626590704', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('-1830435241775442899837854942212586718896268738896751218940459076163231291718573878', '260711614318.2277418681340041036233554343169895542755968880936961527552712599392668923941074322045', '-7.020919442204793990907303359587024014267306822240973218186509927227632239199091884881925114776171913063759715175e+69'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-7.139876352757289461542505822558172659517318708717430099678198183806433553136298542230251443427747760829103651954310325030796995376', '-574567782248709473337780865800359181439010460721072288856336.06275720688321566', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('0.00000000132628378738601974691', '0.0000000000002978470409072811377360391343289749273535256379495688261910048831854626823170399869004467475206207549926', '4452.9023466071223660735776959961287235709'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-21847487066.7605217478921936229274321792356598452089386602086133607661585870779419', '2304935.749886714939313409', '-9478.5666228806168427849323830261036170085281053'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-2442312258500177154631833803193441592681917803929450596619096717808766254347447296555677450630527111828582774828661145181840466593999746747.51896', '-61343.55195783684341328877097596738024920167710546025', '3.98136752853640979247682810971631609686625145909735333930926456883544863739349358178072866001923197043975305147205378033628453560140556665797994093620519482465738244274740136379187291999268888231119420014170199550896828313558969806741e+133'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('9275485496', '84678132215204827584759285347242680917856', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('-19794976320208680629831215516378854942', '-52750113072939297803954990926911853555613103143494221215262490371480858.0906154181519291193065190739944573225307343060444', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('18848799841030076029.711579280668537234365244317138', '743933756033367782502360177590134864044887', '2.533666430399838950967086928619016e-23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-594784739002268205667736419524886418.55764520', '540342359808684924587533359548099389095421413554428744755.1538583364878', '-1.100755e-21'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-1726.075138495709002661567448098686057504327383296796313150002411931406077373073513344429353556354725453809', '207446120536', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-0.0003059309163364787587041720955829015320065042366262609333245079352877246189593335615545342001672654994603853127687340113897933341007388519584605192', '19221450817116751204809732739853558613080514439575062008086842670295721483726006065798', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('3080212117568931.9406', '4807128.444773379988516521143439853225061609533551472005759', '640759270.93604856109428814416757191472828207863181401'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('0.000005619525024600401578782145633650268269238119434994207418753350684434625741830141462900912224038939300796144023025797602584566889341737912', '-0.0000069522639073796584507616524', '-0.8083014539530659823420212243849918237162'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('3.864084', '102777249767124272827613.3573725', '3.75966861e-23'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-0.00000000000411953726181119004487833370002571174457065444710109901614680047196797796656796232677318573024328647057612847991371591299583195680200706', '377302087299171244933.05643480446431808131642449619462015572621321620129', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-0.0000003193716624856563111935912371', '-5900693350171710730666551514921044468319047071273346378968698377579186138999581.30001230345108893279944871641', '1e-73'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-179140388919344089254559094470262868418890624293750229460657170016298574966364977731008988659834641373781925948643291802091117038363735399985614', '-2342120530200004205488612809319553814303876.5177054493274516', '7.64864090508811200171925277947156369591644992014204322002567749382687218201510689321037413380175604998297096738437747e+100'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('5122342360245340.2307953867169401811656978279121415427296587169957180771857874129658501373773578101964297176290109172', '-173381699.14828534877', '-29543731.46305618857056463280272225752453363229341936621254410075321'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('174745315127421168141969852.302663004789400219681591352365728', '0.00000000000054859224166677445926266873407403088122175847297895300263721834565064', '3.18534062013886177412996818235873849681823288208176164339043124338500898204261604483e+38'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('0.0000000000000000003438865298049905811857297760239525241590283770344974582124294742221853527597457038851486391', '-0.000001408257562047358432010666435253252367692495164316050607062209445651913855651914611164162643579923894622459642391547666557661182253651721761070', '-2.44192922568113280448908287037936546425898689105833556608787796260451693810871813e-13'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('0.333646134598859999543235659901387624660147', '26910.5148946258', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.00000000000000015741890085344004822612249961739147736218583594913176676336253154215235', '62123145933223032.424807076475104916', '2.5339814732282174972275675581954338603635890679015484811821792961e-33'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-0.00001111772731670302871436022591511635045245989853584437206248415827174517169914210538893490462', '-2989189.6', '3.7193115206553069481976740167690769607e-12'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('6144637543780035324041015542995572258526302.8252871899307509340889062293501037871784543277116702587456051549850203393161254', '-21341451922355.6', '-2.87920314238011329822491105116231108390047570221e+29'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('17595014339836146135415402521949745038609937060624032692727913036850044940221238920872909675776808297288.7193819', '1047196892822332476619839790751710405870401699', '1.6802011599189607148737162149648470300229147254640276162383230992448471244724389879879553601659802830372798231756267150860965026188138336217927443534513e+58'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-861013991813852618661450041364763949463695247908562946826280097460259583454703930312.069436995804002', '-0.00000000660203117661869333391008179789075205463628255825253006598363232603233429020945770285962300076652626', '1.304165292134883401534205906114798959117533361222113075961516083831659756781081432844245620956768431433575470252e+92'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('18964485733678635745669304324510.902018555784104664269930761786760150966793464250656714301947', '-0.000000000000860215048722322553274488581158728716058099505080456408033247509564134988530705172526450476527006322758428608526775577840014111509567748', '-2.2046214794598847316603626888696975599518688754676585469606709377707177e+43'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-0.0000000000000000045434184846937299216855854', '0.000000000000128896028168154367112959974017842928472622282602167727915227416370640935480721242519522231389', '-0.00003524870819732712'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-227.96443', '-3328395901354856091398502.9371246353045885377841478141934677904755836332251199452045365605447632170806766', '6.84907795695833089133170482400915385505896729289772851240872190258238e-23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('114008071806506716387885.38507236728281799424116444188215400334013368403508847006385630841', '-0.092161198210375125931229751981334900000406137583559552739482677605716216810182233366016217607914141', '-1.2370506679639952849967075598921609673812502409262589476568309350924370850875602067261353e+24'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-0.00000000000313461925140003543282334451012255842223674671', '19900672650541044585807033236451300959160004287619.0648430649265053', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('3134463.4599489676245689666482931402073621138180301351868682447', '-336216719580496.76450216809998', '-9.322747137e-9'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('0.088282583111744550504636202154743748642063399', '0.000000000000000000550996644346331159832365099069695862403708163738892236086493022930354750458616053625423159680048909673004643337040164590864054509233', '160223449666336220.64193808051820590117106550792750292994'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('26556317805978922234443810', '624803506430721758008370872058372614424539594328229548210393601746497748101', '4.25034711435690189965542552901251e-50'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('170125016.39083', '-351725053753483997156877582904.929166310992204939591082080976355143002732995877138789215733131507530240637133709062658643626820354805857', '-4.837e-22'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('0.00000000000000060672902231713', '-302299787979.930507332617490784681098721426', '-2.0070441543194544283e-27'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('0.000000000000000000737973423458099877024435030273911792718652674094341316578909012531335052924748', '96417848024254236645960941993928926.52250382680747393523941801', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-242859957233290455808872183680612124624710994232560919295721829.560013320945976377903570349006502732418839412155469', '8645849305546729917012.6166017448611858420073279623841460173130', '-2.80897744860628166749205149100563693174029572744220253953e+40'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('195917418.5428342557982429', '-21867750879399792910325752536547917341411054205106', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('0.000000000067', '29554560673814924103706759848299150511394.639506674963', '2.267e-51'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-445586580996158504033858168624533127598605610225961613540082052766034223414816798644', '-3.745', '1.1898173057307303178474183407864703006638334051427546422966142931002248956336897160053404539385847797063e+83'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('1173951598490.437863081165954920089348336351184472248', '-7591038.2297423708983385790992056156', '-154649.67544107337739455436720295321871040946156129707750914127'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-25848403775018429509421533550444829754070452453812121903169467045390.16089260751648127767043200260198750554242867590127133018718650', '-60764778736329651.1347128739950', '4.2538464407448510615791123884099536854965211831513714291799033426530933441e+50'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('4.17214688', '-251219516428004386511040705610.96384233764396213404273184885321515253613560740334', '-1.66075746793966643415893578323122980582414069211921e-29'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('738385014447825.2744649613568248193081196823091559906213393391515924596507031', '528744046652952500045873047514118006519343831570.6055160188912265483205', '1.4e-33'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-24721813728700698141804102457096980045.40077868084852547588922466', '-47549165347852161039888817749.7398279014650027', '519921086.89700491048524453452992996114180195745096554852'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-2380649854558566804310287486793735744438489385384174596945829539944405989796377753690487014587', '1846210304.96632772276', '-1.2894792365499154261619289250592786417884611467624141065080783828418902110954692888923809688e+84'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('81379907744436270679953689228755.9789616404508106358141594775005145024091926647', '-29729588870688562494924450.87029786825008317879507669951862227147246427970218894287270952528817811236641140349341304337560139234485857703022584735', '-2737337.139050434604615498118226220078861478940583254360625857665497809765444'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-7709844161214836750776020358.1274071795526616454682187697436077137192366756444845181440101779945305669742181078575280047406690188175382988464771965448', '68329325585523340776034875809953930863439150253064542777137685289943715986380923062138742429709226.765893490', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-48889782335266.086377', '0.00000000005213840929633658919173773558172137649863371740047717294985055200995827641435326516992288634783610601433819227055942786241582560435309996523457837', '-9.37692250206437316476205308e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-0.07242273692298414', '-1786429774361846114108686636547373632377616190672350167658470002491036392680741614785076789310542626932592607813720533873534644187068', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('254974601967092218788476192946586504128676814334312654261585473166410687842163972307817871765635884357606460617712028784428411968638179161986126066', '2.6', '9.80671546027277764571062280563794246648756978208894824083021050640041107085246047337761045252445709067717156221969341478570815263992996776869715638461538461538461538461538461538461538461538461538461538461538461538461538461538461e+145'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('10596945659336642172981413532963922636047011774616658548152', '-7', '-1.5138493799052345961402019332805603765781445392309512211645714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714e+57'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('-11448.03560573913408027230411238283731632036730013355696241879027857826220399937671363883127461428783892', '-29804998339189975833666.7', '3.84097844108461125189805266746392343944172935238361545336748001974929e-19'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.00000001118626577241983092169798799781615911598627213942989996546499679308452345843584760', '-479705453526334356888471993672585986608943898326919381025096414969.578', '2.331902981337638528284e-74'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('0.00000000000000000011023215294540131868482738585488798510803328353366743199871644564131839025', '9512617014966774607479593080377169504319326736213932454132662404835550339069903337929.267907379699416441528929275593487733629226173', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('0.922318702393468161912', '-32856722913699753279344300924099688774532365173499801898301087134616100249271607979170323503344120562205518024520829362642880218.77477287729539110', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('990692197960318254345', '0.0000000019958514844476048474683772034868524380391155636316290667434779936180379', '4.963757101568676040392331432075075194536862716171906745009359584710099259584e+29'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('0.00000267577961293328590073330190603567586341977186329292283763326749435838585647273148748215125445518770966989536299055', '-0.000000000534924956459176991809287804932124460735595310705292913481', '-5002.158864759358209231'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-63.951', '-216987286235939383658727229.045550401204225424540632964306866889027056674906447443646897344466142216395389523166083598078', '2.94722336544931916265034e-25'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('11510789089121773842747277991574245143192006347968441716186024266177181695494787551.6929006029617554949340615133422', '-3.3', '-3.48811790579447692204462969441643792217939586302073991399576492914460051378629925808875775847325924088910954949763636363636363636363636363636363636363636363636363636364e+81'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-1076837418780017750394539423290227716329', '26829833853133634906257281252196280791658739654971532905910450901148784990323817887790641264728864411617819849939207835877874123191782272043204768', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-2535671051453184672175486679554799383311689468486426700142900252467439606395321615032170668.747374421788445865648420951070', '-2307678829387103212120719168615890.54676473', '1.09879720659682697294120796567016077464429761317598727017821612650108853106909408362925385398123039506e+57'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-4193824453980527155063464781349417.7109221225817851', '-7205240544019522682059877113650053149717497163473051082147335294423284132906750379765359943362406856556', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('0.00000000000002128789105780', '-0.000000000000000016728489676192358971910290882587685072991599967864946424620907043629', '-1272.553079797543642747971299307201473084777079061726229515761106118100904782849'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('-16578303926910104271772733073671801041619099273970.7007444012126329543881758056281271923657016113802926145816768678539250147490504399773', '2015', '-8.2274461175732527403338625675790575888928532377e+45'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-14487.591832004633901826097169041931482452603200325693594573981988040294642062553194913546730', '-0.00000000066944947318505386532993382047344447', '21641053451094.2445851912759442973222376073188132058'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-8229686739239381708662.33742735636146287063045609345953036', '-2647244213404262439882911637252785489226846626705592856444818166118.7', '3.1087750414444368927e-45'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-29162473874916196402533253712288473659347188759.49669762440', '-342112791962012114732057946746742.191015086162490635163887048014672922771760017567924296835526832702720786302676', '85242278453459.2038768349559818828137934016217733'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('42022948694867103603050802418471699.1269555229356577653143747225594108213237028987180', '-0.000000002589549669491921474956130959610694089747921144409250333417143147530431052981800286455172670362396763146881330017477403135680204127703', '-1.62278983060062911397750404176294133187723113887495920654288635923375022321120285877424175386244553506331367297632269e+43'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('-37576455182.53312629439138776368260835830547508779050377503250764898041507099064344909409375764836587845407908603082292960740372745757708380884582', '15038952368828403397463320963862224104336906303009770585448088037198731970025090722789.7309099945900396936924597893781107548630293', '-2.4986085640127e-75'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-0.0025704619610525559048889484855316342846745707345232655654692885805316949824786950649707239599785246562460', '-0.0000001639379851158592830936587952150943293166731179544000508788937965215435683602082130899079539094330583016631933626587077980930603716999951112886316', '15679.47757340034936962097683761989900805628460355961239705163'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('621373835929896923161801956794.974604713304611881031233924255943294696036229565470839021148054348533973666104715286', '-0.0000221383907720096686562557702482112891193705479203958187839941824986391636718743', '-2.806770565797046570282244463495974404992490502007941326057620478345027487811424868013719227888450907836431924130958601787532e+34'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-43815643032.093360955997667723954809856085692571904587', '-1443751908.07452438952296212150242732791674974781', '30.348457229420098337290930523241306667023389446013778578'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-3648429077136707350006880.75508', '0.0000023813463506255787368356136470956577201394502017369806001746304788424813592215178160715343676417785000441442827533703991799529845172346996453662553', '-1.532086702204518249148905726541046045137e+30'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-0.04102112755155243972860649114120550483844385123706738747864642737382503804224115885148147411378510728916810716421199', '-14345529964500998791249238442530092529872.23503597601326051620033137282158705769490871091028249206709104185199335720933172264039161327827', '2.85951e-42'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('1483258325481.3703925', '5298367435599816838756.10465279563065128', '2.79946293553620614777007967985e-10'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('15515711874492474279222649369110669742122491321521.384973179583240063940459149', '-0.00000000003851323858035178818868749158219136', '-4.0286697370623331350755811339199681973498641888036843097290579232484043908475099653101953714524328611085687323672558113562209907437467488034062014e+59'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('1809441079505642251898574656526689262311176960954786766599586418966862504429126490564103686114541927452962102425362715821995439860.987664807608101612802', '8886507515234135658487361057354722120364139720518634483728476753617706207706378.0739530020162157090529669348095124438355675820458749525', '2.03616671274256873060301686909046894475972477482978706249459495430864061921907781920236e+50'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('0.00011338640403965278766556287752138008589690261166663786562173105522347361014923788385015003240560715164368513988676785124410986436194123266260627', '1194173291180361867938', '9.49497069454448895061719689639e-26'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-3607506.157514134444092621724996152494529158024654713067567207423189505690130453507527458454805514268983007962623628550027832', '-1049845587607603619455497940480584252205596763467473908071260521.99', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-2562573.457663482', '-64955620770904.9955952239222783363137640723336', '3.945114259936860102647311789451947576470640755487579267426703618724419529e-8'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1406524264866972950639758682647075849863477030298985657607215488204258.6812436400728750049833307611664374', '1360927253153346699297527569240275447559659.061092022245761564304848418732594389246', '1.0335043710881499017374911911396637e+27'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('3.8499', '0.00000000000668010879682', '576322948786.80822940219928296661780715815'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('812797217.913702325057604386169507459762507442451919184136830102450280614819341527456349446992755422236', '87740481081428271910312490106725838669473203724.90802817767034615465582676442943074383785527274486301804761', '9.263651257614819909298611813847881172603160519276e-39'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-14.4360070704007068204479133257569394125619', '794798851202363424.12766171785375637418589837', '-1.816309503789803631186015016110470706601e-17'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('19912764824549679482731359446005915742994499830671769692141318634.353931', '2646191434.953476294', '7.5250658593790563887921238049035942881469707461572214800574841389995694907774044341260962759243376018518474121027832608631849532874480500276e+54'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-0.0000024659852564404444572628539348324013952275357810649510888727', '-10040524471155732557131859445425415047777281318160212640055', '2.4560324e-64'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('177136493414989385164933402829.64366090452307132831344136120524494110951165735859018503268061065574916376715783557023', '60187891777818635280359606466814.5298388', '0.002943058614994'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-7393488401877396900086660', '4643522408356425475242044229446831856950172592312146157564105615175310306207', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-24615528727.48934232611976802942607567911562025748187690514666465255067247750309129790993101081569116851641927920873', '420661451213815587302170651860471630012019395170556532739885724741635518501.278606598', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('1.91990063974867928918337381079148017337147001769888528317', '10078919218839044941769446643483607730880380733282185589593952094100268332736334083148.63627', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('237808077297578935819226799575402626259299593170.0910215981753307316735307961018153198874086067557017494183455119371304622833616995466406661936201146266', '63055475889159143979275262398175229543347025173856257439969', '3.771410396070997743720096841561e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-4904079.8300344081', '-2720512536102937838958.994730305103198126564638420242641023343997346756526', '1.802630851706852482478134226173805253512179970696278185071576e-15'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-77889533745496738869229447644691273683680615077311174351663178838229431603707097369489978602526412919913781623378681628510061710888909916512637', '-318540594041982429254619641933716670156719361.47', '2.44519961356106458727374569781174504459604486259603208121953147086565777602048587638350292884194304991881592575e+98'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('14938358488121669556367959655370514636497247545078914567687389702166565327568594244021707269351169822', '20039203490.062718824493588703801945499927733204130', '7.45456699191137131792448342334165752468308824781653798839660824653749117672120923041575637442535087400245776884709209254088706501844782272751475e+89'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('48407.441100399893527', '-49914762867435341373609229012871802878249769536300098081350', '-9.6980208498558584478e-55'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('180759825156221312434054874665347131160072363893777191871968586225.5657480309810428', '99628.17982080675982529333128191115209263398377929', '1.8143443499754743617602178758840533560819368250726775194861051560387e+60'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('124.635963997546839885349003747702526642207986139957268624399953842642619921009173610970240559859680382383501844241469647750263340', '-4901973690204727768135111108893445830.3560228505490541617954169857232989892975669919037', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('0.0000000000014107925075310771591595606797625202818785', '12386394840432336963994.943755767352425361629457315680330718156042295375708947556653121969360110805455673853', '1.138985577083246445675665789069355266675e-34'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('9654625784529107951076400463831.0872923536217679265793513418784115088017810854222268497016908434175871293339894417742419307', '9598314040263728069176699.289649494001504772215073860394143265011510137892369266453693446307858079047419515709091577', '1005866.837032957991474180272580014087774352588529848202663465642879021736593180124870412868019'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('305112099545450647851161993868110882113552656790670653094321170385003482454988168963700802006692063568727922463910455736702339', '-13912342973908647095916614853904635361452200346181547010', '-2.19310363551028792881568403878783264015797115276059035942137691575167395810185293868248322264575508137759030028125512759614112610711722e+70'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('9591317249950356059905450.0654567438881311397254557514865420468428527233233343654118556442146884475779577627527', '167400348511026.156411559469772317845282601856890283690919584627900184214866552631440483460616938973350076', '57295682686.81713587288932313674148715326928262035243294822467450010618535314143'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-1134159886712762259916', '5391492078578729.9905053192078034900355415036138560079058188424664', '-210361.0410963902'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('0.00000000015155872936389446115086395444549864431108799133925534531833041920912063350103994949352660099057234865771387382603864541362945437298342151575604', '-622159863431038059284262654920095960874083417068435366133209240250136536455236664687427878038827741144480740332157803741', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-17179571683888479010516907983936833492365898013', '643476582358418286773845.204359506070957148049161813771020', '-2.66980526640508087899147870788071473464567607445862283728735350208490313645231744512865423954721325399938916370550532299286e+22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0.000000000000491253980431211194628211603829815779547378344214049628399550111067969369495996507232841888591232316180093349726878502552172395323628992306897115057', '-2461317363809255772941739237350560508540968577481675200105985067118684968609180345403471054855329464172680700029391770335329021626461730', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('0.000000000000002727798649835142592267521965189153594719932631321976839730535108261624538480157874684', '558597754.84705249026', '4.88329683777914696940924735055866083084342614872979e-24'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-0.0000024695353690719742170166999884925860383022208953944079760760718103780990393208319641197541882950879886135590160617494388826084', '-19570', '1.2618985023362157470703627943e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('0.00000000102941670501711766403028451056161724837846810205454548884791390579294602029552939970405798284307096', '20.21', '5.0936007175513e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('-0.00000000000000151716614076504814328783108682909811751320774837258276317548888490554882197937101195183442708090549911467547044574', '-0.00000020612950877125844270441932140528002337207503037258962381', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('-19023576472120.882634755212040837', '4969543365948128059514362544.8953383', '-3.8280330950470369916153263106827902688133956281641084095e-15'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('8015238463394289363558971679414816161212655906736576586294568265577767998859345177411864246.36494068479930419778282085399344281', '-29378933132528128568860352313616963906152072539954868687102763084161250224427.95910623401937244440593318573897458404308423', '-272822652450911.46785512'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-0.00000018318044998712501785746962041819300124984449527091314836844439518496634538990915126201633478731094683459903373857950606912', '-50260274422193098.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('0.000000000000000036252201669267818816776342223191339936664870703543979984168233662004415270348005127497058056162419795842866210204395036776840289942792064495234730329', '-0.000000000000000000179357830194059685645082549154616146217418239903075662373840804948063674789835931643935119', '-202.1222136220316981945903839685168646072941300843510375'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-15506570654579796521.6790299986404', '46237357.2351996389438346207980862758109085552721319697903907757349293013499894765305689197502226168047624', '-335368878798.612068489270224488944266921938533586240305257228015010387166812348642052419150264631141293'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('87303051951341802985849174960942.48597277207212', '-9790069486471041695911133718356799467162093870.77074889053617528930', '-8.9175109606715699974377398786681160043722188142272519517213e-15'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('35127196371069787906060832446215347331792852844200192936928233943480174200', '2184057692.451489741162559775349505027286458', '1.608345626238534014016197707074111572037505787153919166460397078040153304043718501523011310281155674900096563938183838e+64'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-1796807569032560044825646.4933720663', '31919477195377684793.4892949188374533179325727172274534682789622643294909528', '-56291.88592389473362473590361682233454869146948381216614543943476730342346322360148922436785128008717351'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-1867145331240446.087650013540', '-0.00047142351608451', '3960653780592759476.70824175988578916982166828788059612408306509163140722302497479905554685933786921'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.000000886198008813381153171572516080682289250189118704', '1676630.001919031433124112364037338782527148402428443521503521055117443828166058373828898575321636896507000025367376195681548902071870055', '-5.2855907850811429311e-13'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-0.00696731522879746863342805456414992288137602555612523782621801699385593834422373877830117876938169998381', '1506871780355070817620232129801244762594678082853.179820986414123157031119020247899457342741288883124549493377298953978878279235', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('0.000000000000026434094823195651047980957065649061963909889572510258818902856974563655611705651078469733111978752', '-5829010583471183110.4852999750745072899', '-4.534919682278928791967808836144339886747533e-33'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('-0.00000000009774366677344691632363185045504747838493202785984732', '303777905886959208857921976715266674582800967574973181037568112324955188454105325264.647926672180', '-1e-58'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('11729879984042237752390640528185467775033789', '-642441140275916528357087522523498004204346.17673939464', '-18.2582951941783683540161358951084876460655385807847498645257448131090813546626822820609780242'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('0.0000000094627011794347618529524997222170576314794185732745500031818009896922860311058011263671330388964339345488041698159291689162802654', '0.00000064402079018526723251400695114040196576445422066519624238599940859942799204247280522505080098899034173142881793573499053489', '0.01469316103399798'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('16189723838.0710', '-10341660196826579284206836275245254', '-1.56548595969522819699492533334627666171180039e-24'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('3277924795654216922713743886215213934558234408140793494048978796379635435165013745039489920249982941', '-0.54336735219777618442798665488056187857763074465503032864685931626951307213110815707731128151986180054979480494732', '-6.03261271108005362564469759900983422465897159205493476850675475134859937498517293647602955946712704041955397379463380294821897465280042707212449897288998004817421217878e+99'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-2738644792905685920749846986139017784488537398665640730199038259627285642508874157110249240094.08654233854806396870983593', '0.07048893791651941015', '-3.88521216782849523903601264082805246827857943249490151440012419399068263560000616742255426701819991440598148799889467166221774e+94'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-1021492542122916481066194044577113755476618195682639369591088612908207031655730855760.261897889905155831270857', '183374554200722282407413873055918925009662.3033597426494437840028349983737706403409956', '-5.5705250195443582915852472906193737439842541509498802273574427448473176103922133808156e+42'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-0.0000000000020947631992437788260334128526352108784946954262421715067727671602313406673460244799969353876741630755', '0.0061599517660707198340969727429459623695874102739196597068259959714844228339373452774105407166290813820782551809253247300937', '-3.400616236610528233193564938520924106947596863e-10'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-0.0000000000000028364', '4339706650281920237449218962507595352433911428075316457722836609039165542220916550034260996', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-0.0000000000000003965078289242872199294090729766510245471592367757563323807071211599581999702793982', '-7', '5.664397556e-17'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-41276579348139205664214817.061117397441511425496021813583663543794498584294575611567172200905096831', '-15546273984390733433793478381454318749597894128472412011914574903190265845285785437910787598246818563648418017.01917873031659900', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('180137628272858932211726828049207473719', '-407.572', '-4.41977437784879560449998596687720142009264620729588882455124493341053850607990735379270411117544875506658946149392e+35'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('20359545447084534827352882996697649022', '810959908914768942946403650700500307542126770380805304862862857933904161563272040920256887.419445309474077045303', '2.51054894616551287888852631e-53'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('28908998.73515783', '-3723.0255452473490444394049082', '-7764.920864446334129042781339351349873376126336'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('11353771731770213109935979314204766077.803429457229492', '14676941568007005489652401648364649.3704053248573450123647291147308307652519058222332972283634934609881798030115404111740716259266007518901366', '773.5788603614337'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('2765022680224928913934.856366328820914512549419399744601258906300255803783271856072003411006086986', '-30143729465582', '-91727955.67257268853455784760512905058366719627007010404874350870901551402319849087'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-27973803353732467597874093314681240300146817936274.7', '2711805085115170134405647647869391029436491912213838402534819182816577170039191806230633438', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('0.000000000000000003186937962056', '-40287888691067864531255656654498186477826119257.83486205924350399940026473132675064210251730473941889097', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-4853119707399881662896013751041882676424871.34255119620658968812561471551918847065999919327264257586536', '0.0000000000000000789787666480410402195930327956520638436124171894371726007897667552693325038787239588213130213', '-6.1448410925777056667540794754946487747565056729325715792347269833451509500111345747271066474343e+58'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('0.00018632202618906250236563803490223248286137802628984042368050529522909420866005529457506429136800674003703919089708163008', '-1060413927490185650862162264.58587819883181633855751353684185941850759798616987753412241670431421648686406805818216488438279040756757650735508', '-1.75706883282883844492e-31'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-296582197552258351073088798547782213145621017034908997551219368985808845357104758012233532715885021.06854', '-514.52972472839968458051708733863739311617381978335602510446807660384466862964082668954528387294081831892060089004743575941830665737716796', '5.7641411817133132081079568811889594648454414358403776418817860520037551325103997146756972692460525581477037712081162821534951403163113421454367610771414410931943153871696e+95'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-8.785756028885638309942', '246947608177624323.263', '-3.5577408883289224383160281388273242173e-17'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('0.000000000000000000063225585970325864485396075291771611465795264', '181237332716316048045378472203695275160865853026681059427519806.128226535863849358551920805', '1e-78'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-11691010859512', '-4034859089160127161470.5773065004370792550445178779530908274730755343554226624691455824126275628788101015', '2.89750164780736690697856634400408978e-9'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('17264790298661.24778339612120219726129732910714646561221181455417055130204095335327479350715774222457892429326697', '-5015531732.061071723293298831498173782290062679330257', '-3442.2651916045'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('1778308318430766333341410656754788654176198566926863100735.785026985865888502589345119640126859619824416787029438709834800499047327', '-0.0000045139150996358534708356166705107677927082820813299926711361781861773080211743798815762556302066561', '-3.9396140139503864622623283819637870320019602693311774326400218864636615597136804e+62'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-2979525352792790601198298192688649786141341801230834442555941134313501985214547248972630509147162876124367050537418867965756714363', '2393739131031912074274211806414.55564866983450529413395930977988062148062512555673551', '-1.24471598185736853893414811397455283846630654230489745594456593361104535938282880638009772610705876945e+99'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('10760437822305315859349467186067685011962223758508.2292898340272957', '1.3', '8.277259863311781430268820912359757701509402891160176376795405612076923076923076923076923076923076923076923076923076923076923076923e+48'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-130518920372713990312225179896', '0.0020846050392103976518667096210508344925578933815526902355', '-6.2610862929771902834996819889289388566333471712217742449678778762921696831584778992829913092129129392e+31'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('1680290348239783460061677586576479477632276448', '1877861105146962.868326502', '8.94789472785998532406201969642850131006e+29'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('98212340272764478744036769743.53998661159918447', '-1.2847611573829504844252349018435944786279389740735941066061131438086743', '-7.644404542305927958394180943795163441854807258471249766705603049665551139607897850853477407663496394813688800957599e+28'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-4431446791145757147387577.2991245746222262915497590341158402040826616731440394107005242509097835958746301836678363344980328789760128354932814748534502', '-6841473917438138930486.423986', '647.73276118915008474176790489779406139826138'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-0.0000002933887640674863470860654803397102517051207073431749289429108077', '5806535990808146428.630716856942036', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-0.00000000000001013', '-80382710505730005224826.82791298310513883887498469801317728041502291077554033850826919518584870075231296208018469022107', '1.26022125109576798417096730794451e-37'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-35322105230793066143717772.4724214458026', '10987517620163601004566319950522202204012434627922114545224282.322402022609687901968441581170778347', '-1e-23'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('4068944423230418685355265614343228850013418408713106622.555979248442241363299377756681660955324620808272691427', '0.0000000000000000000253599045776991074682670099070661463705', '1.604479390197923272303517472845245208647420620622818342987962920172750468047384281772486395946256298141734032492716380712631097003768968808547509013483e+74'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-678745033872819590083932457185.28205218134760913393462346391518927873560028807493242245873888505764916957404997931370614312848474046307949', '-0.00000009109974910356490384074814252070846305493', '7.45056973868503250802841453952887682821722695744750483500736625069335e+36'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-28572733163749836041333377030383051825005531243253823754744624351600443418642018015', '16183335809283440758996327657609', '-1.76556511589899264660470022054852754988618384672249007081146582068834188443575378733749175348905663865558480287081232429e+51'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1598794110', '-51767803619804258370774453270228164567580041461709925160228565195668850468842561401214442136634964740940140592975009300449359120696952748.5023659', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('2571550152173393501524176098.3132351998625568672957719726318367033934862940482388662', '-5237440273565.1207228524099679581472775379477956505205110714835', '-490993694983549.98991681993164368998534323741524989204756100064018596814230660552'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('456912203930126460719485395721.22003648609684663992', '524305770799388126062304932995736997191627321086276395583819883638111833622261358604755.224661770965322643572815974062105794498422593010687236', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-0.000000005648452498863216040118255040511384505604423060351742890041607', '1232794216550095854019195950450', '-4.58182916745836744846893637910381661110173368619e-39'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('4544417.73193287626082515217201228429174646210', '58863320549389442176353896248682433.6871043363476740', '7.720287760728464513638913975135e-29'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('302008786430477451865913173921469918.53981539706766348678537', '-1036387133038666959306417848321396092934291038310964313295788481128308560831899639810737318.04874620326477804842185662604869006953286', '-2.9140538009671497136586147729651e-55'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-211813072139414419237378700885656074457716799267611690735376412291752663699064535170948683056877853428140.0', '5078436005033133716156804205372383900390695294047690451360304263387981919977197326.4265641830646742373766008824737575346807071215634501435369', '-4.17083275105742850356678471870739792069246340665612254152335879755994125516033e+22'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-736668226198969993047756194703946262763078078728962850215087025295', '-311409300431151235535387264151286378806946020073530456668535824508403904628.872991645815365337057086066602882613894892', '2.365594814217304576715789902252463013970450697280445921986656073155597e-9'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-12038519896178.343050583830622798587165301678714', '40340462361494993145172207379228147634247889779962825870865259393574788283.813082482302180257936546709351060751528560844883', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('0.0000000000000000268509610166701800334912706135203400873603368954922062436317253116942166789935714', '-486998463662879616958481229259078824081826501329210169074798.43828397140', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('-64909823269900045761346114378555621.369886684266321123849', '-2715516319.9228794823292737397897142541381156835304385138078896200673726', '2.39033081089136968459642354284372461779770166025252776375238847685969761e+25'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-15480951193336067629393671.418465', '-0.00424708358273824697058394287931995107788656965461947522851981137664770296921298466356688037954760782850606341865212940941984', '3.645078061627161024601523640016341e+27'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('24684896.01518271685680962063108620101646702283705428496221148607065462671230839758975796837001445596441348271619831917', '-0.0000000000000012485922867340065887180882914038664278123625622790446817239268277611161569655245749385870285984733170601212773880677779079333429006', '-1.9770181409459127030130282324344514639776814627422747067000085599690053740763589018259832855036376e+22'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-0.000000000014807613715736006881724155523216287303286101406215339189727852651201006329891411214269372813', '47138481795.674594971801063274107203438644606484339365703302891787822073636', '-3.141300515345563502246717814357829328909e-22'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-408933410930331366351505306747613637.4', '502301608967263078078817020044251410495859611955292180874725849617629549750600278.3033594011017317450703182714619757255669621249363839878', '-1e-27'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-115835252133107207748230083386149347695375947320217160', '-1145645316426674131036122720039891961130160258839262814.833163686', '0.10110917442965964049616495551603037176187'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('324410114528078358164225634288515521712.1960331540300033585581775465', '0.00000000000000000016880505004767778581153232729174744246812547975061933315858340411987958904970545075748755970918513886980214608665646', '1.92180337280461116882324890306010466157811443930093788648147283137848170478431669854800995664511056948150066785236743353315873955132013676480239319e+57'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-7348240073236898148127361553814999208471464251945186075790063614750080486706532516500107114083265070307972262437836405550898.6921976', '-28201182611399638209563658840984116442017737602945387683718986735940565751787618797824404568.7303145140391777544083084880689164015722', '2.60564961919949834024024286204035087946016558710246303922541253929369674984466140038019986841816135896968210977328511278536e+32'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('0.007297026672050746404702116781', '-49010133555716180456644577253738369084643566864099762865278837386925212233307.48376173767127842352706140893647414334624473813072778322', '0'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('4852490500852643734640383257370930860500.926230004246358888434335013807764035654376140471319113288921733192', '41022016177492389242191788983456656934790212440217758123.250284', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('21154142945164.4737436207974497074070105471573040015764205565068333127130276476', '-4290761302747137287019137676906342923979101397205720416062341096.63', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('21404795109738399287315622682393563132970611482057057408015049430283263228.74111310068413183505876746078406010224917', '0.000000000000000000012615672770675627482534560056344943179462367364576860545296973446303598607717168976051891074817048788685311', '1.69668280866420045489481749515215838710659927672039090183748525662324101909299067643564687435794574199998889731079365486197322604330597129209311012e+93'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-3450790382821963036098567395961031863812208976201226121960.15676705645150163038246850982390947156903372055044602536001863326103241130492192695297810072', '-763049.4310', '4.5223680703091475552107021962526460016614690014770827107269761754877076916795218e+51'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('42313230199651672735489325884062025582352.7419585331025893934481865894655211677073719001789932289247216', '95185821534871.759', '4.4453290960093282636970055658666540868060568467528026933472524977781314079115242997821941498675915753e+26'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('1752257597609747491.69', '6539528305.78203897191908488589585858704158645216539398937460932', '267948621.930492772271645037284811611672582511391898595308741494002372333430228827163423'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('790.3855380044418360414190826995162992', '0.00000000001009614138409195528319486359546033', '78285902300240.9089208169716490416659656953882740186474378912910833288707621998'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-221096887211673464233.029434021207971903959700430242372811681549616265238747082824532995430363024140803', '741831053553803245328361052525454080331736054300671.7822498155210741048673906237917851738792555483456802791272418274661789835762', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('-0.000651139662592009486341738951403411968137306774317479717873592038049661141163082842698', '-505300425801028665383762175122150001868137480355285515208663655910011.666858266721037287776934243433208679', '0'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-3671341436129243736752381349616365042217.5945187056827841332382473006446185297629388254060464214310637055889519874', '-227247.573154384146163133510159381', '1.61556904004209596931865096874520063691595870755179037257644188612979896e+34'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.00000000000001540173930826297206570050485142539798943714098329265886679382', '-2811614151582023531974.44462398314990697512312968266966793', '5e-36'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('95284078615312471887522819461623.26477693383735687249490580589167', '0.0000000000001907980575072794816854101364273354819844880911577900320625777457203327253927566347670488701269315396762013441731474428043', '4.99397529829029400445512070483471174259050367099609006118704282973842856741652045471476316647819741755371043523320670978724437e+44'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('37696516976809.67', '-5588437953273115926044870421.35647', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('378929565.44023', '394795362320270792098898494652903896531440802470264311764198716459375.817', '9.598126057337777349449592e-61'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('15352006644304724464768062425561135603919740274357285270804381610637327574316835765230776715422094.5858877396272023484675903979294931153616243148725', '-405339297.6969596', '-3.78744590804077814687449048795712353471016256174527167078862900257992553642086103146670463435e+88'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('12391997349857348619953349.479939998811972166535711907181601637950135', '-0.0000000396579276389002618774584094439147848379360880516760322791085994648217599228277203973654235245715501926', '-3.12472135778020349928209979108857544599794304107991572220480753813907523425877732021587353067795034086798779299951e+32'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('0.0000000000011729289882247307770578706071888573569106820969659193408240506544694', '-1255499908017820757805258295311505070506457152583896428367804075279506733427340869856179', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('17.57024622423931', '-32794563963723474099591095718112355996227112378370191106069881991104995.8038681166412740013882364843563458', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-1306895671944468591070288992511351404563473756459932471509002653.277237767592929758', '-322376962163459308964.9329202915815135482520368155925183149799359954660406', '4.05393630851889150655852349978721479028532515056978951425002051162114902278959544833608646256e+42'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-32077490814252754358984388552327268106030042358073061263106246354805512173487060806485134928542905180083273866767283944301153567', '-2542480028804156750343727594232002464916104443196105627017424.46223250537045772824884122578939553140601', '1.2616614663966602655440794143610549039105196941635092999427352633032831829099547154979022790412911086871644372733806163239451594689228e+67'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('153825947194693152969349223214523690589243544635139206926681835035412', '-23.641', '-6.5067445198888859595342508021878808252292011604897934489523216037989932743961761346812740577809737320756313184721458483e+66'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('37106919766560282593678657.7096099958827461744354258881970168052165335487652453945420045841831351550299435322743323901', '-0.00000000612984026535971794707958117104425939246', '-6.0534888610809068134667815813473264511557573757042390207722922555568709364037060533844141625398223231686451724e+33'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-641144573.3', '-0.000000692650658567215776814444016562883106433269355122817556680783206508598080653325521680878424076700131284', '925639159322018.3806'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-0.000000001391455855279603850130715155412806189081748706188733572987679735751435531762129652831698896587955285725611545928297431036277318359077533', '-5879.778740003149453115553595686947102674472974724003724756870496314835', '2.36651057260508161353e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('18.4467637908568967309576906800818709287266942905204278027881957919506414846183259700', '327100340291470052.018885253570111280696645646468831427010411192851281152509330141749901256', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('0.0000000108233917338259594156939274553', '-0.0000000000000000004565264148381930450416004239178145878360488986541233507680378267783546624295898380997488887836168755720265634033974417939239163234566951897892', '-23708139073.75348961340655697764781672842871945294433941227257145619495165558942758765095741331331454732289173'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-6754599027838025126815716047495508066346043054422120219372348926712625080840725656799.23189671095732920949609178286055102546857205616253000915', '107595207784639024394558987050103336772457004049998529168426054849379721.85220030402155', '-62777879860206.52'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-767567474494048891607.1575508751572148699', '0.000000004875311703403470460827491267679111088375437277', '-1.574396717974376118930413375427055257405913586777089372054019979803905250184355319308435849646064170819910667818190892995390347e+29'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-281313529988951591674.56365585621460813819037925750341565101965593423141074', '694790235093351991667165454140550441260.28362494255687291896654159682', '-4.0488987291416713079187223486286600048369859121398223177830254033691257405204e-19'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-22032516111912199200839884249875193102620746223509928608444522784451947328020683449560083423.3320014349559756171162999598598768265058038942598886', '-297286286479698401818930.7927086368819048356427445406005784385378018400774911418686083165798471', '7.411211722144739301662341736378327510690297157739590972291891536186909176131100719408304758388950100264204e+67'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-504095727490029865108405982465023657063', '0.0001418108435423937783007517785233764245161030889541884080802903629541241457204582638467882030562326189604752419580188697572669326', '-3.554705090935676477791525324089215907953481197167887910898400870765471810521830909e+42'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-70222200877721976565100755417575500277629999832398082509168582124795779398759382301433050650013056058674778167124529942105', '0.0000000000000010124346565650714258010', '-6.9359736376437089721359719899145571672143372111083474721223434403202326101970030123813824892397458056643609341113695530397807616524250937342611151136157870513639717824741934190318511787690333719478482297694861249299259683014e+136'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-0.0016821113685730833060380092942912079806011286446462149294640213475147323465279094621352205833715636184306521853469706773604977393588', '8818078.5109322786143396929032251482432725328678286150251496', '-1'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('68547944749882829549489008458779589815540451393182', '-211789487168159696858830149083691311508860082075074910244285500485575116345894739232630326.13876985196084241793739829236577541073416634745446063670192', '-3.23660752317966262199779983900851713515143928e-40'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-19.21616495486753037639761208089923695156492819521502781212915545358345288921278241726325489623906100082702841188492596712483469308850895965598096581', '7291143776818.0662432529008780776517831079', '-2.635548762042609445001785268618088938599105073054726315027e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('-94427654720186260692998219276328393584213089956492863260951740894504293965.2367915578312852891464633412219127621602825904441021', '-4450034212444858370097948816155700281600827527767526525517795.2803430536196384191292137870675323639390335877446605450463807155101063378', '21219534550119.223474139679249593535623337505741605175031723732'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-81339455827944255393951311490306552895', '-0.000000041862345870128785373777175927993230340289266744242636189306537061752041960893730298132985829504898420874', '1.943021924291745922388131837480037009278159092124366742577117398514961073879058349548510345118513679005293459532526878367e+45'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('0.000000000884045464206287253425139994499348390288621', '-0.0000000036751322066576242171170006304801483172830300278718127470112736591597470668463955371955632851604', '-0.2405479352837455735885044998438611520131695520747394681512821220924441741246997083961404'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-49.3990403355615170766063344213815145105583203699819922', '-39262928148055071996.247714340202110107307994666794816646669962799497898937', '1.2581598639124562447879179724e-18'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('30185936135911346753544000929543531356504696.9321307586198575820635046392369468170677443210', '0.00000000000889546501605943055462900338069432634169148894284443468891730291115009150304068070437440901803462', '3.39340732400331601441220953053085097561845467363670953317010393027311226659246041870152e+54'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('65110764894005495791149102013197168751.46013107633104474', '122849867324792.4401485739882105228893993200368676056606566637252742726987458948922404', '5.300027286302606764232334083567823916748792625109725207432062806860743132346277174305e+23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('175732730964798637504787501648379401015078431281552342604541041523143130739596109605795217820445856365840690677006305370064088804787156156975', '0.000000000000000000044627078377391111797717707506386678729832320747307962147931472220466', '3.937804968514990885003457302559977315967418595600261882422669439995898759557598799552704733122198387306415523922855107365186616672946780150539751697306600548161005852808900873665263768623778598109224110276816147685618926161299826634e+159'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('157404058876.132092550077030439261897362752853871830997192658734129732225056949295101038459', '9913222631494173169793541281586950606405', '1.58781926652248828880468116471553557806107509380640024881172932536875611e-29'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-500496066549058122523524538057773915826826913208646429765183500446544788213209101442562920.4215012300087556197473', '-3469701195497062066968643121', '1.4424759895710792261194716054180048222637307437625373952868356782579138408616912264789487837e+62'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-139994010285559455656361067601490015580658433314557659656116377008140532040106593085759989858103974008161.97612211191350004439596548', '3100374.4', '-4.5153904730202731533443531078533616965956896468554784756355999136149663743871254092976638517626765983e+97'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('50.5825100008643335639002030', '-5113880152155098174745734107355881365.414192017256590724083', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-85897819669896341477399212217868091056217064017.413943752402392352766779573867742413386438726379529922858959655464746614585', '-0.00000000956809058284455081136304901312313622213572227631594575563416175500319040573483454557180486339394375060900551570428', '8.977529939349644138129189595049487029809806737572203060359215020586723120622012130285548298605448267e+54'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-13406027181869131942219323628000052135440457119214139194062030510132615800506.105170187274525350527283076087883835545916891745544', '2432350930516151.718929383717436', '-5.51155140225770596842962683948996664881832225682187833028819954624461026110479445009418193371175496859534625381201886800812973958975e+60'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('21.770063074003', '40284326517215758067539078.04686946078901278456139861931375323993', '5.4041025272445420756576743176730573932148771470344031142746e-25'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-169598834344610711289485636044177213069669025186093189522692330815495446385394933456802329829.89814856505555574078439109464846', '4073519161665461297.0705210797840162689150775433601758807115568150837151937266265880060497431564361229138188944851274622581', '-4.16344756496174436727634644468101079646812205801424950112551927499646520315786067377323933470114041655458820971891011661939688688329899108494027255245390225880835574143e+73'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('6450825612664309385413262471232615420425386423840857373618549230654350482950448030796.355111967920589725979910671875290527521454517933967', '536453462509631523673841120977259976874895472096249453886631000037443998100180512286931180065863.3189583482454504212885227485664083196417293852676554', '1.2024949e-11'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-17520315251457681139169240125154352407.730053852981236520933835994797692974179310', '-2151609422402119268361091388577166717650764365388264909600751367254886131216642181208237', '8.142888e-51'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('-0.0000000001714226329930445076430282571879111331855606207358607692264215328802202739969631292443117775558920847040670700105818', '-47421716329510804539274769917188268913032796877737499941241566424898458543604931480945.6047437099021683973588923557', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('0.009285228717006832804766101423935067607438919314783568187443629529274565217625420900069661204469159210493915283768314424133122124990655979854', '26010741084328545870244893269433803874392121409768666543901152710348.7987991180143214803077412711160363271863', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-38096329876334489238903761051687.505909434494982846476648545901', '16745736743363870967810665450.021', '-2274.9867897828738483201764635987308032940474942543283340120073308886436858862021063712926662'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-1852217789725050122438170820.28325931905146699020306554945621134740056415276362', '-0.0000000000000022219735130576607077241455597715090688027', '8.335913001844071298418070909327002279799405145610418355663896072274220673173691352497252427009443461242778791749718486195e+41'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-5.052912753102736', '107023920349655873.54567', '-4.7212929003109380284034549969485e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-266.97485346716564956157280050094877184640708568130912395456679351152029', '-1753853035.61160', '1.5222190688e-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('954586193559726460107731285168494722.9037565484058748268362752807954096508569225053466442585', '175025134902024857.946659604982714683517822925827863152370160381284460535905875321378737938766', '5453994902469764616.58150337495'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-267237149648929650770841208112045365329816.439542499886044710089179505546406746998352250053357569589659024098206947838778804412901042009', '2865956990464.2419103294110091444804788397357697927936776876529534305', '-9.3245345459856762702231422155008533916528403844303985372147870486165483887045103066371e+28'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('0.000000000000011798785370557154', '-0.000007172072059991226804827454975003309679226745300089619652718388564816837765575110301627043075680798604465594161926', '-1.7e-9'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('84607', '2382032689860148308531395739.145192996759100481488003531576684203267158718171003088620851830764617037937929195251940479071065144531602276588713499264237', '3.551882405315242237e-23'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('0.00000000000000000047538803909839962706', '0.00000000000024039', '0.0000019775699450825725989433836682058321893589583593327509463788011148550272473897'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('19679924297334293397819794933736106194546137901961386201611155750965635026795564258383470442575.260572732334661986776494114890517593816154', '-0.028543668858124904602163953705481332784469412744477052870101191010922069308523653503847377589791', '-6.894672298488509801002555119667337674521780487655722074777233542267155675228661637040428771077684735646741948664238280164160260869674e+95'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('199552146833565065.60343239349268850658366323254334', '0.0000000000000506642066169812124424066588866', '3.9387204529258495649874909100478672979187554902310346669093354173798682952241546650577690501640693752238250721462665745e+30'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-387161866735686167691534321080543.0837014138', '-322.7859891874614323881383732336514774516575971614318648517427391578', '1.1994382646851432963916978216940809600824844920678376351532980676778233546372312577779858407685e+30'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('2760024313.5778704057669856497022953922822386', '5872891.20345055160524909866', '469.9600619123080229602253503600815885043009784997903363248726938530266220060896484204883406'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-4528131.806393258706983', '3168972957516567936169681971345116655042036400321964003489252924457666024659.040760470145109369158157885488664797', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('273292204162.856672176868803568506201360158581697337', '-203923668506156435403094859695837035346323412975048716798801109398063980603468004686', '-1.3401692e-72'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-0.00000010004256187631071099217302483879302028757550203011673627029202998985108084948622165168409499', '117972776380484.93915178837827763865573', '-8.48013965134245625178836063051441323435647271026797907086855220052226306901e-22'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('674605103234322783.3237', '-1547968573115392911964985462870966980028921979919547094140583060509734631.576774388506268665328912809339946759987978943451323455847', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('-15486548575410436752622064418.0181922761103719158776264635687475932616828979736848925661001354060303348716362733980966953827228197', '-26502027044661430625285256551247785723966919.24648766263790801109567144985787101364907', '5.8435336094527334313380874442292552757714007922160676702287943e-16'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('627040165425499495171153029889504.31671937321473687047233822601663676265664744306887293941652655644769', '-299694032178944026.84069784469535597844847667649446020292184', '-2092267773457366.2599983671489917243335863920764461348071'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-5407835010747849549162812758879087690424595044353151941744462471604631573009700167584742.679971019552971807722846633879079646240318162581665', '23785912294.196714', '-2.27354534224329622818940004179260458785011107401324434849239099642317816441985626899544554395e+77'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-3437992854142703284538293514293287579724965437595255626789898452286905464879603.686908794794846726361032049594', '0.0000000000074777328304945359092709244468056835524', '-4.59764066472448901851878980248313723924655316906084357740049123168021045989767328444918153657822331149e+89'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('-33240294219', '-226069762860245268437272123400574797895866315054579499385790733208804786814838316285516673786443254579', '1.47e-91'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('0.000000000000000000559929373520986063303443207', '36933.4273431237036497606164370219728463', '1.516050401494174305838357e-23'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-0.000000035811883955605972145313778465', '5527078033940442210732762483079568725277452988799329891469839611510732047337136057081786294644193232432266432240833609588710665413078739225994547', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-7739007094817715141415534.4', '-0.0010310442772165592938636050348144881712', '7.5059890887617268105018254498699286018459975922907203293975111378837e+27'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('664736881718687667849986931928276145068978792429084590393781571627859660480521515527094764276561967727571596730811078810632063149488381786440881', '62937288793949374018170767795206877739598679449526233914308932715137189098568527056769931656294739322689322329056.946645', '1.056189255140894676319184795924484581774417112174941320662584460123968687363680482001e+31'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('1479520195156023160509166908192716104626988.6', '2567', '5.7636158751695487359141679321882201193104347487339306583560576549e+38'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('4144933797043719944241370197349096775202783978960.7117056182390516050247135310919420201434961226284796322442627509451846774324333806928133', '-0.000001436549536960041433102142293970410560736641737553385170498154902239727624354281411916039988931974674024884950365465641053670732852912317910923743', '-2.88533996942077883558047681601227555314984906258385914674338622914140371267219866e+54'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('41.7256544', '417768338427947272756830602167.8630664876', '9.98774932466464204745666911992458172855e-29'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-0.6477113172989271633442504679000622043976951893186690203208872837111958128235', '-0.00002712595585889323017717655462257053054998647101877672740855721465714609886151470803531089253836693185401695482758345567991720762267657', '23877.916806628414276926998089074622687649042325041355101856950977903586156136500718471'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-21917091964871342451992206772564762844369711509423475', '1879669887488887416581267987281341214.4429304654218', '-11660075054003819.59818915298550278545677359'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-319.941085435931955099871648217609532586578785076603616857456171814802275189049894025923049360257324887671288005110624870117659723756', '-1209259540630640.7050906072352737775129200512204839', '2.645760274664275483725949459220661851854853412747262139035971e-13'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('0.00001042424466361432633821283150526031692563832637225253937116119282386305414197932321951800953816212514', '18954988639424361425607124230156398503821983407305007.278', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('4064061441012260075188848967395.41163501510560019', '-178.0811111', '-2.282140658213952526933020111527938257015460411842634780146539640497559766180052e+28'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-10076.89199988877284010331336055060877115259816336517467218371386440933122838419234529824881687047023444626634100506929123', '100519630764850777276127225937170937041300592.5914818239675539', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('-422609553944352857434436099933780797900138739284126565812881817586613739212989790522.7001416029294745327091', '-0.0000000000000223093898794034569593357582034154446629578960334147394270717104933058850702702132394868082939876147817328216231591836904251475523241182', '1.8943124676597083462180954817109145444459795027300602126169075731888263640006849874136104374769000225600307547924918475955454550867487558013232495157156648486742206063763750307325894278109e+97'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('886675680842288459.5356266771584490143609421165282813737701213', '12759521004999265123255659902105793387283770693576146370411779987827655324263758528791529730160060932010958838163', '1e-79'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-11177657150.65646', '22.5757', '-495118962.0103234894156105901478137997935833661857661113498141807341522079049597576154892207107642287946'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-327878164464081720402874194688.12136244531891652019031713687558058155067131079890467794666951656', '-0.000000000000001665773016162063861285566461795871095629939669512108146362381274207388415', '1.9683243832314684068694981732003714767530521361138727e+44'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-63094305154421569864857062196205834006893528165294358709622717600166658284820486095.20979871251009575334824980244215983875178120163105', '2278599435786497009442063983727216254769084513168684321.9495220026945639870449781267261382539211632677463356802966665042258410858909072740', '-2.76899503104825033690325751380556830457514694175768561291465961820072546587796850359413e+28'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-0.0000000000000000464315768550899871500193684502284909370813260407289530945283911817805543721614906648675621468311473606607374316', '-14657114581570295624445573315579518326047.7216185748486577279127938474270096670527475557629714', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('1415848354602977301022564605988276509146139307061146005729375907494474657847229204078089112651532247961.2498603051', '20795855.976728151580671182795037498', '6.808319677667508066571933391558937430285632750111632425581199108274540329768069465268012060040463006349928435431691118523e+94'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('209217270216491723249057454930875024026196514659170035978197086188701765103863307225136265641715805608441566738879373033369122705449646277801782103367', '93106124.64158412311457273725223321043451262597909109831281377', '2.24708386287027041878070444131306874150351695153291788748025452289178038734621019319316274325504310951050759884886886403662534783223656676396335186772970019e+141'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-0.00000273732923294441935493666908942841033515730542834279103731869694419', '-0.000407328055840682087718999158109736', '0.00672020793484225121288'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('73.16779', '-0.000000090700563689158672612164381048472768963053510275398964035070908', '-806696089.0205102044317056193127811340361540554326111841171123845420023017343855213762056939934454003594181'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-0.0037095970887334179057042966617363226689978735352342006055636068569109547526674', '-1.746', '0.00212462605311192319914335433089136464432867900070687319906'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('588.861433890458300987619308938508241304189748563107484117213', '0.00000000000004293063193126322253506919708910593505519175028839767667711868920297535260471779185028676340081594977910156663986146041705819', '13716579686814109.4801527962530600690169654844007549458818514715312002107436724472149246597821861495065'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('0.00000000001663472681569937736021764468636408343947938441762572896949579084480124706652852698', '-127027.21905243629769199', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('0.000077881388218281005687336778116246367234713307125149611494456661038547296704075668396994096946267492966671812957606989', '15691751660415623132113012675219564855125381001352467351543756776971649081573575472.9720306430671202626044375403', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('5018470142843172752988238446296281104766400309565140338441746808488124.521663', '414014171618758740750133.4674670147070027117433150268900290176025747146917972092888324395268942570587534672207640945924', '1.21214936271901007471005718838156413163402153170883868246954488e+46'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-1832914338931696283253701994430445171212271.95823483324541134507191539703991467075728062389781178462788555134423060709657917771', '-12031.4', '1.52344227515642093459921704409332677095954914493311937548e+38'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-105.5668573855974034', '-0.0000000000000000000505080467178606893826007693521151808014830274', '2.0900997810368061695852459723885371044945030594418173202307869811934383649e+21'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('108718250076038260153655912870515978342.00377869107800089604074247785733113514358982948124392501830228193022809726014441184715572080686', '-15899622644794646191471360921732059006346455.85705357407498455317820', '-0.000006837788'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('0.19980713409898847304465279726012318707675751396900400173162554118780539343821', '-47368350449574490517752260479972114089188459037.897173178741491196402302380732406318', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-174074481522451307041170611922566358145', '15533147612724894801435359564263920589962105182625817145924486476064075469456376251836463637221004382078005938389749352027440867705', '-1e-87'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('532164888257576692409296532357256109132835857046340194756990817306212087277.733837988', '2807856120005059255374873.6034089884', '1.895271215879173418261611419721318714981393843995758414176773287420225360469468444791198118615652714e+50'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('0.00000000000000078936739235676687781048697471069755245617', '0.000226', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-4.757', '-0.00015390799666060423372811043004740375083032283821397005011836280302139314159964357942698276528052695369075098060467955891231827', '30908.0756244918840088857418083632668135191730355459469328351'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('0.0000000000000024086600463806299424374121416890201561074038886878296571892378709973569307557556598815096869720271879070921871793621514095998237208', '-0.00018267383650436296642734825224979356749023139391700542706611803293888182378140451160391086957687806217665', '-1.31855775981532073973356030848385469374644265678625171094991413730337640548e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-0.00000000000000566339', '-96726469543567045686080198731796552602525901758368736232549164989040575593444074453855788545532851.5949763831974132484492570065944329423352571', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('16233126225250017239357792388796845628839602788760722792.453362213405880166713109524605579504406984411465580205725967962502654508133808950000768194', '-784330484460898350357646319220780944579454673767199974320.7460455944153056585632904028918800511788168812967069164912', '-0.020696793694570845174286957594940800138344900939750553472711294668787393104488'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-0.001027227256904838404076883669167087383248041', '-0.0000000147801674790446518333269676210150733391205337179850941245838314675715834402855498818739028333287912525977435496', '69500.380043815001799615692643077023293588724619925816701350653879436495088501077999309'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-0.0000001990043750371168', '2415439288627895583143324072485704.15761799024842376407789705776116715405499594097624', '-8.23884814551320804683528445216952331803735569672513e-41'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-56876.55', '-286884694441389260975558562.68761178612544125809046971858121051871389394063721121229978222388403502505799617452213418492118893453300399160186065', '1.9825578395092777601362722054536146763450825e-22'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('23183117357670318840207286779.242191940176', '2441594243119571302087603432924028052316961487487341075546889771795605508900', '9.495073730207423539895e-48'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('-31031314146924995', '80943698506460330141829058227002559323342352405399480229766085802.73623295758518488008784968699935295906439393184586098019102870553480600201153317', '-3.833691161e-49'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('9554004513125108404454.332182829', '-0.0000000000000428070507696677372446142868295574463706781408788400262', '-2.2318763711455904495917325800934504534278861298096679501991840956753990995597092670470281864283769126772933167094010772479607488715139e+35'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-188318292118020514853926201588010679957912685912520050100632462422877619868161685230958711843756798778233311', '132996437.39', '-1.41596493720951478829628672046649534660826666157452061731976640598400934255402677919024453233706878302895050954417148241176658e+99'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-0.0000000000253046119541707155341319133738179042090207530859028', '183617314322876.3843388', '-1.37811687571437713828216455135235670426253451409492363018493e-25'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-42983.951863855905', '-2813978704145178281459185721082321712134272674268203694186397209647978.65393904624792638717190430063059680799351572965675889514606153', '1.527515179860376253681e-65'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('-0.0000000000000000052576336175273095418683503744328917024741423886898192072968825295608281835403325939628995766411924797296362311459317663462998083', '0.00000000000000000635138682360814339656226767395782178622304745960310840815806579774726400528516117064673477214645140209682965', '-0.8277930101792341563711820383870995947773403726418026909269'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('14.510662', '-6460977193611710.382458732290006019458367086538', '-2.24589277522097021144960364847064895052756482295594419405304216930508553877595513258e-15'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('0.00000305075352127112867790436342132153304812674804825099', '1145593318925749490712370981825229018726.0929629635595122268970069928215193250755895206273738836343252203924372011249888557339544475354757', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('-0.00010409292164615733255094982837667284444963881640472653539261289047143443796793765346308903423063400761614619592811443', '-910008186461205239.127162051', '1.143867969484414533732048839930898965202065938776741991472557932224816704971e-22'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-69224654862065764827457960920931035032846898.270747371880524018589045953231029264548773980415492085057935536963', '27722.7974739183517122996227898377773462139628445426903600322572140365864846885180318665848321733332850952117877469580659938958717', '-2.4970299237366799314615107853411874721389361788061682389441515126234e+39'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('748328219291816002567179573245615631918010310524147605072502032845081519883', '53976076527955807214798385812228741.42671549665780851140356826764262550967043918485146793472932279132292584518392976084673452210', '1.38640721487830756717514342962081532673049970583869580500187134917531707860796097770789341042590001302971710208e+40'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-66096336983025155007.5220511215740675352418119840246737832194293904729678484038594073569399935657025712484320547254202112738396447702225', '-47395071000079000864207822463847460164969086692962555384461096.91095392786373863613723947638365443737557314257197', '1.39458250801892419961095624497744143748492803636e-42'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('258659989403036381662678196509125919573150803197965079', '-0.0024128949479267778078540054019202956570751016107942978992781301281505845332707173003934035748317893220323526695673189852303394867', '-1.0719902647451924184519408522873337172855140546829120811209098609498644614493683652023e+56'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-255669456502609829675.1754570053733971644767575667708240795171306472406606028703384242193104814321565455014432265673237865614999', '-160209080640356763214498353032787518205.81824768012172641778084256321801379237119003770288489188251214191941127578937229900265229222', '1.5958487214376195646051132916531607859987846926501e-18'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('79332245721730794305433305.57125077116744904', '63.16069259007087721', '1.25603824892512581959792292319223137051e+24'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('5646984399916039752736634417752740757912946759288778', '27102250627116511555658883115535676464038667691892505474.49934453626777172121212764261264232359174493', '0.00020835850415559525403700740238114'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-0.000001833204', '-70032493828.0462760607863944502271405984706585431640042645892591362349650922351', '2.6176477514868209438502651278222355064223158661452876524235e-17'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('1643290537424155577796064755302208.463709290498773494124727961655077611185', '0.0000000000000021758574682770342707923991356114108943145438806402313572809257501515087667155834891', '7.55238135485687397818640667440855290096077122043429316369443181871884343547076279457111380079552675248e+47'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('0.00000000000000001669225353724326249448998648071682103917420867656893815385345849552816287588317523521565176863936380610879001200667158874656768007418618', '97251151442885135849001043061692210364802177672125457972893459880', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('2232749647333352791881113926645372.34182416259209', '-1919220460056572909075401113153052783819875527740981924724295791352984029662689499.76611798540319163843370902120280294536', '-1.16336277869168714e-48'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('9191674.4793132900722157785788553450700110648470547649053246813005103102798867779412063404788356', '27987515814537513427.54295693583755847320485566632537666454854542018912274848528', '3.28420519356665172912117731679711366e-13'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('268544456176590551228416255234754012.978423972942', '42755282940.90691715500064', '6.28096547852933553492632311532241190003741515146399629261029875555487046371736315e+24'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('0.00000000022793719926001557870302579145905527347886600946741374898155679045335596131204096937048478565755124577951330735710', '35792534427563863196938393781453935443.7999401092216381109498', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-3442643999906587666844868172078592801320762633923948733756859111208732345488468033455180794679714351516847250384856323399581196946136110965', '0.000000036014507575334065020', '-9.559047816231745969792741298249599865990162294983728442351441090864464819322143517836559818831355892530917986753014028183477511513031345894970186973963363057009372137e+145'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('81741616723017006497822269553968297189299929736044754049602310386728770988752923740377486132998273316651271846247370444225', '81126403311021362988339148734237367331633947754186757315875171456.00', '1.007583393160387577305293909526638721713866926529770426708181568314812209839363396126767228220188033476873315883402864084678038379973e+57'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-0.00000025775621672283396732767630591013281284', '-0.00000000000113112177508646706263827769038192496', '227876.628670799078731022374792437747137208249884441244875762679381641243743018'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-1238055996867338715989439845494196.602994794912408122120948795262806329177848717052374938', '-349378147055192824558611337219704719883737450677311892640541798481423792746924344638864749321302858195330089126865026761152814882033404.742', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-0.00000000058946410475204713', '-0.000011832888717583602387597691727694768559040334127243145271303547', '0.00004981573974207219321950980265928387761714878244676413448555988336825599553422671373'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-513.63491785227008061291411777776338954398572267897385330505688506258027422', '7463219701943872073370450.8', '-6.882216233276485231e-23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-959552258348866338791129314756377976624367468137765850396480512899835638462382059570865324.45799673346664713198692357941260320331283378490142926303', '-2.22', '4.322307470039938463023105021425126020830484090710656983767930238287547921001720989057951911972958258858770864805962069426140555463215247303735419054054054e+89'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-77883119700103963752264584100183435.0736204991947993893718715649695', '2333460567880718719594262823561329375619353258748990.918298159216358793650603321367179889345579967711807431663116', '-3.3376659872525077302924522309136969705216916179e-17'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-23085170097384093274972665451689092687328238951119453595497082490949759588867071346163017183648834094422009033630029341272143696439695402896', '-18086866658375839947851624913063503607', '1.27634988046387741564665512404914275394621578213783045249404842019782171899530433736356246229042901270714260617530954223288074096395550492077535596e+102'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-1449068720600143437592.86874345113339256703842757704', '638423709046022938156322320162140640541195697853560467728060213175.52059634523456808011795512606785071804714042267000908673888494366196867266', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-3', '2.190000177676247587968922', '-1.3698629025607'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-0.000000000000000000212636955011389414839466', '-0.00000000000547133250917031259091402456004843035767087076198801752343779161394408952098079493807626900940806528936571596926583827387986856031746662474220', '3.88638333815383938463911113305e-8'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('4105803267451796098700354366317990626490793344.9427541580688128905741135112842298255240509063197472146451', '0.00000000000000000002415371770318597612543137459331265437239426595378149520249777367302756992574408286672', '1.6998638958632126100530099316755376351587863359383119895961776609478443848995573253450009639527748020320992925483242261075260845703161199802713e+65'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('1536560320642901878970181558216997347019834883976330464476424777280620033456797921497798356588806450402450622059908047462407498', '-6368600156760249976930924897417348481170030471234872668542819714438402228393329736938892817571664495264216294', '-241271281415249111.58830548698631847070138657104720205374313339216470189795216775425226632343021943837'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('6844820358486326194744159322308790843106744280320377008954541441044086', '-6232776150615393168477614896815395922933568579837.418', '-1.098197688009459932217399879700623500892903624890944427014883279240052795368e+21'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('1204688342277055965926379717661660411720688849872516698942674329382163376498291205040236943207092922171959399494914.39011443079158181256672596', '3034517350117681138346738557210062717172939593791401204645.3', '3.969950418079953101894124164568887836138078905589854545003614622505225873033172829206408652910629734844182990422e+56'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('-0.000000000000161196500013731342135880240572358905856843574326480831737185683677379073538753176666026540859531189671616672113637670083', '128440423109099451950325153756824777809528912713046540.743', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('-8021209952320152857.4878831448334373766839169468808096800382793135409190492245466152537276074399945804162378509725564895492004776', '-12294.73904503469', '652409939156827.4442134394077978312360046849763214154626418660528098970087455'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-0.00517388086766833111733245112786346947323639422972973966551869774864327198718901177259417949555417334912135153898206114320954172867814126447584055', '-0.03517476661743945594675386610533927084329952861306622597741716386233453296240601914139672354527111013300704519530092', '0.1470906949842603766410501906977565055631364274063897751633'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('2573184278501499.8946176652926360190865431824560912727401079791346260554669708241862345911576291903764866699897164309950153863449330050713632041175', '0.000000043241501321629753526820632045775520519389477498990882842872887482968503164029794600119774116937359114105067670589634593793488348204314020725411100465', '5.95072835090110994658531253952277104918859305783e+22'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-6940702240308624593019484948231957948843766.184509559555320218721368728491521296608512372180710521266142766421504400057555709716770169544671', '-23375842193663737842275569.6936158276446636235603347421129063536999054607538810111679250798539565263876614', '296917740238252174.47986428376657061330786593813063'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('65648425.01180871514246724305614457967515067023467295347850669937619354644479642108771771127641', '0.00000000000000166331728135031480258375999655996342572341481785346', '3.946837187822276959776576071102153502915106781806411650618747392665080222989322793033450482203813683884929e+22'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('1153.8', '1.032', '1118.02325581395348837209302326'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('599854675229234875531510843632464421316765301', '10692666448967456551.17357142627520572161147276567490382868418740', '5.6099634089601680710080397632397697057201190308769900155756132849191067585240528670316228985292264623266972777421914641e+25'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-91003154193327422318054977979559798038617.24475602943727257350', '-97164.43555398453386646402573925477261096177733241758254990430', '9.36589130317811548377193954259236823396468645893594190648495337e+35'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('0.000000008923846499877102966022022724927927305505623352384958714910299624734808349340038032388088533376134576612671621098639464445', '2323043673890365404072353101065788418599089133008528.48664319918012059564599954103135', '3.84144585836928106349595541556116685e-60'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-46799039556564983375609015238952166942332338.336', '70591564515825593103568139941828658075146291678283188216481741557727018642248891354.59565', '-6.62955126119542587893e-40'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-36.1179461029742312522673847078996883965738928503', '-100569467167841102140550919449278060898188922968819.602233099844893563645024785643324195812', '3.5913430905124e-49'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('0.00000002479295909306169487242742853847942399677274865352201616277394801303697463391770681143478578', '-975102087.940198171467818631687898893644299737144418720321072409833167062645', '-2.542601374737515379702975646189299020480969558649620454043232922284568672e-17'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-22704.6514007298851360157029855944029770', '-0.0000237259788727499103563872516086869904668403642073415041045581124411757882484640913456570', '956953199.802725341519292592452059918169329599946179917320348608125261079184320112813'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('0.000000000006696949688432960159969756123681564135755842', '-2108422300081693781235179093528225050930052974845697.955570499448273929659693052830371912141313813942220496005', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('388544724722977238072599.85105881568', '1119502301548081', '347069161.1671419201048623305561411516977843187446263880418'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('2499833150241992476861383217158', '24842.806938577597611681288280499261519959074131335827532312007098774218994152805597', '1.00626034587101419900384153906414128379e+26'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('0.000000000000000075207971460109815781578029738530719182', '-0.000001252114075716431179907851124948371096085525196590897471', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-2431215342181996772981861978777959489747291159041531887.4260610078297188041001258499984761128614584389853180540573473285885761798543658353', '-0.0000000000000000000602452416497034439753397868859220924283164668346443307865392234488622501612643356251294446058052370612921519704379', '4.035530899383427708420533850950801617603263881782841628213157245563085253796113721165322376257920697853813979429237609632e+73'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-407831746738950597449364836360790405890616752952418.9819287191146342464653389498070582', '-0.0016562936145919801805083922955297251024054241416693402898660748687576109090725423948840534145442012567640833878946340376579461613517664', '2.462315516681007978854774489192771647323890746368098663553118408304656288381857357663609206216e+53'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-3374732972793083645750776092246840863415276871396777646.420558762189352107316007310937411', '-0.000104684541074035590084725187308919085090334423139351523445490833599909272825834065737033457170315371799582109616299652457425059891608379866921', '3.22371664256175704755746904789107482221884721469026471438546648065568416093642164068502446507190361997825460584330769561155220142746e+58'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-2473283609019884187026789617880425.5292', '-0.000000000000000000012629560700156750844742128651038940562337604172', '1.9583290881916322023307410267121451340090794305482720970277e+53'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-1404482098715017500566440471472979845183069261054584897287814242487239267004568787170554993685910209103145003498', '-1617536252667148116081061850408841416455174665207754497642731794305747363754.714903728875245403788805437786097579', '8.682847734628348531930390594592919060197228137041571171563249190604755150351229996013258337462929641275023754412046e+35'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('2168165259874', '0.00000000000075588149586060819104186427987769944909836644183903985432252629601447845760197250954050695394086860163', '2.86839309038176336264134620990047211480103555575604119209136497e+24'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-49999037754203038494748194130135480756653249820.50', '-477838183854181143128032706335056029040474575.159731344891403379', '104.6359195301582024018051689988803119224761424364673522247848762110933344858'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('3384425457979559561425092835866696982506431871523977204902603949.76146368711218894575822938101642716816585813052249478551420475924034476', '30321929004931437310276217291757920766818622486697561816.3163126783639034538589498855266374840067252586426724325300151111694988282999082345719', '111616429.72744676420247993931734393915595006879474992'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-224818432373113057932269131568462251173627386571177801533800760.32409', '-1695376460710.3108459', '1.3260679122495366951431400279524987016153243439210812707665894116283984110338827213610756814616975001334055919534976385903817839190792064322e+50'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-237.578', '84.91553751340315592695506241570789130308896653823', '-2.7978154170254229823460689077145936'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('-103772.11', '-0.00000000000000000012359388598271456139794552736048812520958193178449264362833512730122738103677292334672889946035166832053771059016318012811', '8.396217108548009367707120637040570491415491600095837475920856749568873747971260965596560371476662507942284833617000732e+23'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('22909648747874321834002861748166913834938225445334337582075.91577617352530837700404418138563', '344997348755274633375686780004807427237266721270788600978798421.31667232973698994105219242156804410304', '0.000066405289288542853704464526792983880279517370745526436521714'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('22.7093', '0.000000000000000000031482402641136721681302175040141334303861664544258583558677552712724221091570109031291009573901616627307034449943797019159196295837', '721333128823107034407.245588580283601865156902265694027404835211281464004207920098622691'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-53.3482008111094893315', '-179875603511294433120572352881730127395532524029934609151628237104587157.20139982', '2.966e-70'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-0.0000000000016965884607882112341570473022123635213887877', '-254193932392350141293665499056643496334844702171.0011957979', '0'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-3608818103.6257', '0.00000000066687566458790594', '-5411530657451355102.96900423991961831653534633882826719471593894648307767'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('2318242408326881364050125597979239', '112310944635701210834391077699249659690575868442.76453626831', '2.06e-14'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-0.00000000000000618702564082704832709012756540185267449760034770120968177308119606015', '0.0000000636992736953289541753851889023710808159676823930954566680270109511630825121023467230722909747266089629998915475752295286219924691553386019', '-9.712866853740501579238837122769674331721942058210092878959040848e-8'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-598192155524599.543469895866422907968312515845807798812410543694536906451748175', '5694882.75800932980130397772', '-105040293.3551699886292866504040483598198656759423392804848834787366'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-2049743760490918742562713287128097078960201454.7049014175851231280129287812874', '0.0000000000000005771177413168', '-3.55169077944831902790783522124802412003623956082372578582048268563797255797286310356936e+60'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-0.00000000009884649504038136938680320284773210466871053456420299408286245343032575711592101304225442', '-1098525608842646403217112781968194558531214', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-92318581224219215407076957352744169354858712728142497119299358628912215021294586712890999326827690277362149690350438983927874511888748137479592656043', '-290760936622051110642', '3.1750682294788645045471768037259286560603641852570628867381214349882098982439068147409937961868755790796593059293749776446591995499123894524476912116518548983598710420846017432939463458659085485919e+128'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-9269786200775977340361260306515894998.021', '33193', '-2.79269309817611464476282960459009279005242069110957129515259241406320609767119573404031e+32'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0.0000000000000523838637138708498596608193031525072735103662301710366353432022220335881062938126235613172748770850903840988895888', '-0.000000005390098997912356392648612061230099204506807958291145755415705955992896925483127908', '-0.00000971853461952362777213043286495'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('11958219415768809322523664.23510148866112269670', '-197354727314347918145898028040.448589287170209', '-0.00006059251571269269954205910357'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('1970642653364229432816602515045582440712477643422054228961879708118806395724379583117602361343660652032', '-31644394765386367730800662519558297968988.94299193490', '-6.2274619817339032278732958869917127861770080996927559003305288e+61'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('12.908', '-6090845987261539127416937275863176894837056503709934034705496307351876662575410450246138356839229866026764921029348319480510482423385605152870', '-1e-81'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-3739413063818.436', '-0.000000000112265754744654239729057667928492728400303558521884186145185975438813258745093576284952622933', '3.330858169816469071325141276282506e+22'); + + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-770817.6149120', '1', '-770817.6'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-0.0187466210691', '1', '-0.0187466210691'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 5 }); + T('741750111.2', '1', '741750111.2'); + BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 4 }); + T('-658788.8898', '1', '-658788.8898'); + BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 0 }); + T('9.61', '1', '9.61'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-0.0200812135393285', '1', '-0.0200812135393285'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 4 }); + T('0.019711206', '1', '0.019711206'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-37901147', '1', '-37901147'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('18.9', '1', '18.9'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('15.5', '1', '15.5'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 4 }); + T('-7897.752568795', '1', '-7897.752568795'); + BigNumber.config({ DECIMAL_PLACES : 111, ROUNDING_MODE : 5 }); + T('-1251.5193', '1', '-1251.5193'); + BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 6 }); + T('-322.51', '1', '-322.51'); + BigNumber.config({ DECIMAL_PLACES : 279, ROUNDING_MODE : 0 }); + T('-1', '1', '-1'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-30817.8', '1', '-30817.8'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('5945.68390922', '1', '5945.68390922'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-34433584302.1', '1', '-34433584302.1'); + BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 2 }); + T('674578813.88', '1', '674578813.88'); + BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 0 }); + T('-27788.40581695', '1', '-27788.40581695'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 0 }); + T('-0.00000001312054398836', '1', '-1.312054398836e-8'); + BigNumber.config({ DECIMAL_PLACES : 259, ROUNDING_MODE : 6 }); + T('7285863936.63', '1', '7285863936.63'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 1 }); + T('-160424.958593708', '1', '-160424.958593708'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 0 }); + T('-1', '1', '-1'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); + T('8462674971.041', '1', '8462674971.041'); + BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 4 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 286, ROUNDING_MODE : 0 }); + T('-2', '1', '-2'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('572.2', '1', '572.2'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 2 }); + T('-0.00000078870910606', '1', '-7.8870910606e-7'); + BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 3 }); + T('-1.13508762818546', '1', '-1.13508762818546'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 5 }); + T('-66055.885279477', '1', '-66055.885279477'); + BigNumber.config({ DECIMAL_PLACES : 210, ROUNDING_MODE : 5 }); + T('7', '1', '7'); + + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-3627799291965346540712456501882577638718153439964273.69768754745407377945437075521783565726672078877524231088948196974675990545252844538838313048', '2902582598160223924761958365823830027858536030974673247874848195750710639118580059329', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-36001492.432242546296733753651918782904968060628', '0.0000000268571386752795633902', '-1340481309923749.60424676488025244368284003'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('0.028761002817864251956109170412427462717070528743863157542939339484227653369339502297446', '-0.000000094653664305603408767633117494180308734767461188738807756952982012636', '-303855.1442129602517346583444983127341880783118168865288269447897099302126198776'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-85322335566464', '6469888.5944307193591905163370', '-13187605.060141139610979582454208887767681099267106809857522822603509317013524918783027403'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('16809851622.475024268444162553728588984396380486399687835621352324230348800918507804359930399204804510891779303641052273377163383820147883', '-57215392073691534065404484981855847094198821321.61', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-6811137700468.4120764694970441135733', '0.0000000023059798665870351445075811611361310997931893558813170397607609131', '-2.9536848084234293518878460220105623971538070065410169e+21'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-638779241138332540350253234404280665291777745188393412936839021876823463401783663308918096038128976596374.561', '-68051131834015582432107963260604318921316821583135690566786271984905882370557171397765996', '9386754105668476.6600599'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-14657920224077.8196317636342', '-0.00000000000465223224472437622998002168098960600459077322855753439284117569067355580658376103876790291367613451291596099691519239625284134126680082838843170451', '3.1507283929558497932940390469545446644371974034666360324e+24'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('0.000000000000000799413784708489070154804455019351539040017795947686353303982626226154902676475791766853951996180403160495135659', '0.00015899044548165972', '5.02806179507626533025725613512141576199220345614439279312943689111263e-12'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('112.4', '-247122773803885104678938490543776215767287187710036178178642833042340408207332559624129671164074382472407914940407329096987525835763247', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-6749239072680037611477387165520399718627171261275656871594447516707739157447375453.0850906452508074838041592952394', '-0.0000000000000000000425367400205957', '1.58668460944871412110921030222520659939459453295210959028883529105346640505416908988034240818782790363642220342859700167068855612092040209711e+101'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('-78585520044519312578903851346721582390295041942545224540.4077480063430', '15608189483426918496442359748.328547440633', '-5.03489018556335172543283965718069901158499515404324025173365767509373422432477748944903e+27'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('0.0002433958238870374223584900446577514807866249098', '-974085668642024438754153215750261556218494099322336875511140345748788013.37160781313866594498158089317715605416277197000420491691481779975851730965', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('35355658849855129861180132974521949639236227942273180070920909591997.5412718864453961655409496833643232', '-6829894701612572880956944.30', '-5.17660379764090344784461795557673945820085318e+42'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.0000000000000004863277441095313650020277658', '-1915156649006139193824415428828548.226120476308930617348969557716204059468127709020706212182973396317634270963094', '-2.53936274279134646909595038496863193e-49'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('3110214615781612992890984598602049585353025840029996756.8', '-12363633.735703916761979890620833004650965570622978', '-2.51561529746702304379852124316472359173133213146019874592196121688793016060937069742986516173e+47'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-2492672185265151812046174378926367157329542788.012959590780989023454605', '2952729318474530090870658399786053537408219.3906284777551455998495603485592436', '-844.19258130743328424729732809565777445198353443'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-0.0000000000000000007320310887201006223680530966667619613517348866729624512960684347441584440958295121362771380217317647500564562116357111207761629175246399818', '-138414223976457986589511933703538109754713884281537728200.91943242818721', '5.288698427732450616331e-75'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('10999864907092520920895380713856004127397682.532596580677990930328362005963039243358204558185910', '196343713.6849006266166504', '5.602351458394789894333113940137448028976772623932537000358638579200945e+34'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('221045710673710276492009437067143592662773.856846445724783089474622164404197148759178814745808223790625805135636', '-0.0000000389477677414362297767674108298752973871495647000802842813777875775407282', '-5.6754397874911185057037157523236644823930384830352417175752110746497657133548282615982344419113556016327559255673e+48'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('240678363889896535476608890834256839099354200642282132.3567674776854817276669811640194672649868976944164254551737266436840749954620074', '-0.0000000000003270561052230022070885151941886998875327220508415003856939907938256551789027282736470999947552147075245018856709429461672576524075', '-7.358932001155909554704741657237282173970051372138657023587316029170115689537846892416866064347805401735668699561439620407617493743577191366190959232502857112108757e+65'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('-7.178031909440888369704885323707', '1516020040884738327154002675958432784538802896161509426211008572828005010593393496212499875624324908766875671036834866713', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('54965252469790288.652938530020939781427224341939297915034220301430902042349180160604051708024915967324883143322801228723358372853', '623946023243580345168323881734.4620771717220859', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-2795638.1', '-2161096419.94539189', '0.001293620254144256162867799066739494523291287326399017485930407237805526109189927'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('0.000000000000000003852018722689322934971027565056757680249879397479902038546745253385039422647290', '-17246108988600613193981252482413.01314088520161996158451216439550151353590714427134854025418012751181842007418232652053551313400069601766742100', '0'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('221801304731867898722038636258624536262037365890856604315282884653157', '2094327674927908258391134166024509186528722409321102998398672460295465253591729278.96582716180542732018913846048640937', '1.05905731651806982574099150484324282372652447760899e-13'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('1532838983776695487599528998729549071388657144993487023435228991.9', '990.589', '1.547401580046513223546323448705314788866681484443585607588241936766913422216479287e+60'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('465700444880360273077764592.7986182609', '-2503537671301153955344095007925259354071482854', '-1.860169512202001663e-19'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-737.9477460', '-2208882228473942560046621538408466604050799418518411.359689327180780337087341150988044640763423839783525726874628300323581490779705', '3.34081978879348533408762709794460530393880741912e-49'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-1780.935', '0.0000000063599557312757408886184969827919637733185077905549489709055686000144560690972584654631309913966808095690705362617488552800127402759644403578323745', '-280023175513.9532999919255525243358694199755546'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-3174812496720.2024472161401049345990356687496259647362835882746075189931008133652106507076289350917733050877266685', '-11577402298228661788066668885649046899568558593977323012221669916977009075263.68987879858', '2.74224943985e-64'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('0.000000000000037393089998235', '30.48028567299956', '1.226795917e-15'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-0.000000000000000014361552929811982736615965481580567217525637319317240063009008734218786729641811914528272953', '38894055.24', '-3.6924802109711773877287179688750211220005551983e-25'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('-1106712834746496271590139438978918.284493457211966539186940267648623517601413699972073', '12.651903442803950284122677894500273050579262355162185398259009250085918287743090096911728314267336', '-8.74740184154632998685570715135187099129190523606826573808969334655308536685525947172863935518914297815606e+31'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('1965816920105.701', '193318595333060825523082692725318850724848310012764635800422866840602225944616048379730199886885832561560510098980592365407100269336056728309672617390', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-93640040324023752251529412531185332867956555140665056973180546778724498284012702822548570943019087150145776861957801211909463864512251577824034', '-143231624126283297491786421936221797175607422617226.013004717269172628467439784881071187990876523911857290645231919390', '6.537665190577184298014654831331041237300337917886585974164714424079643658287946824279228245192047128164615398717555388e+92'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('-12131310205530178549986982444919200922452750101913903755227517798481860220928943578277008850211909085315660306919866449158279174719742979917858572', '10099444477949939699307890962009803302145119975370786040785982897958245734502493657340584708838245922196599201528769240812710', '-1.20118589017607848240663555410549241113804583900945574602316648957593596767104398128e+21'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-155911155981121697946504715907032', '0.00007713234002563812643249182407072677029361418001885804605134796432669022', '-2.021346116678142665492634136637705651399478440912868181711281002264263231182256160625624195021327e+36'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-314519720816.294641993510410042', '-73900264788779898482484025551.2789786937107751050093524120030925959202365579923494746768958358324131625416622963', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-0.000000000000000000022056684946133452223154877758058559745782371622496016852274708161609469345202799864210511471961718727568797250983', '2192.4', '-1.00605204096576592880655e-23'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-36718441550169372371365706865920954220515130374010754420775299383130574258014428968818638300100167261047519525107435192917209537633068.6987406', '486669343803413216.6570235994569604541241883174903', '-7.544843746106501830550929477783142021319040138888657861453606554546672602582819541534595959892887319664966162568994848849103211961019778178e+115'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-174897603.6829025255536616965100335620728022186021824024738814468540609170297407222690674769997151788917219289220320647', '-3090631934656302827461849613845387320538781882390263576900269.96203524879585780492687738568481060148212201875530310065841371200747460299396388019057826', '5.7e-53'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-0.0000000000000000000516635551329299730054951454997484763051286676348350719016083089595328539668314795616230172195369791117989547921474840417479838289', '37158674757939157993806627436353261.1693133803498125', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-116211456037739778354514403171070990290045964305800566666581525149565486.32', '691105844361415778213381366158312468', '-1.681529059345744224343857153033090610271694090791790398037247261895639783202993203557556001605441340067039008803140995633541845972971384e+35'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-266123221842708273091923489090.44699490158783091683586819391224186615489948199901610194471068906250718585', '-32022496369765241675524333697024321255620899023355408645576679616065845108442066436105122545172230348409185.3287445324413516115', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('-1797688265425.7165515', '0.00000001738534543188409980783340157189761914309185224423152375400233581685255509123238', '-103402504854969448367.9442019148179289847567704024747005025133086683014233516225496372066135892'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-10984212754657202637672673959837294920049108', '66798422529499247294838021394095462563622966883604447314209247', '-1.64438205854433154292727033196794337117905605306943236068e-19'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-53728320914823485656962471346789246888085720599563024297225728806563759597.08997812964997715166804294389691757990554791437598952982626', '161986897.212190847247930402167370789598105972372356016401292522857077503612014300986685393882', '-3.316831289412461645528953055028515828986318158340012081483263853064100616867908460183631017188747235206664340288823720112312483935290441934775455091087550590435261e+65'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('43499319623237565178359324186732885047347808350193390861109947292568223373928330829578849395492942843044863204487853834423629319010077404', '41.61584639', '1.04525855885728544900944700422643224407931616142707006135481718584285228504584382741371535986902567099380489626244638381422162201060732538906317315441244351440427353999563818555319307059754840660829e+135'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-0.0000000029566841246534331279657636450833574893146205734156302396324472852389800000520273047202036875', '178293878201991423271468500825009131886066263126087140735726743237756163465204105131686', '-1e-12'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-53285984.2730196558626413', '0.00000022251203859045276846118178068673238976534040397169920739300651950103910444091385416803551627124476836809100670767957171883776738529248470267338926312', '-239474612747114.418096957880031470643644150387920667074980777785'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-0.0000000000021241416901713887978056248575347198323545756122975232381823836383371939553270979083264153498307676759237644777281660799420859049004048904361204700', '36679048355616055800277781408267813021767139312403514628691728644295598845421524239970510639806879.6945149256633616388109328661753190177005', '-1e-41'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('137574367839771834643.393381075516790041905084899117844552825342262', '2611019781396503523904141094448721642995445153136976323137569094666196747752629789123.3341477720667223549496535765203833491631689201904030781304366462', '1e-21'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('-46528959.7394442732924916035177731048000767876497850170219980388259', '1037248701397072471510989839316688758413582838330610129126886393101433389394585975632286834135743.787548166373358914448', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-0.00000000056695591361167840304172988714223322951491340767159863538777178312445969763826386935046712059795678046539270261679031967257607760440924899096022660', '-779029210176534831045360217249568.30980168036216148309578587927769139848738105890895104989746513915926410335893309428593918260725239773017045566033087', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-13536625136815780.744306114543699', '2.3', '-5885489189919904.67143744110595608695652173913043478260869565217391304348'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('3828596461558459272689391034.819361202105624858791543660878267672483858601126237474504353490573335717987597176461232833', '3961994280872253514567880', '966.330638093595121842939810134710239620276'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('12599638221152309.759580', '11336877437079.7', '1111.3852373443218654215797135397663113'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-88.37874582921555583012595131704636995244428718407695437048798589292198100811998511949731349', '9771661424624630602696201302125658718468318947410559134582776640149515206573413089145551182999199848.976786489964321075171160128096611871174701344', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-2927120046541815610111604317174084416389151672310745506669425625751707198319307905481195306939915434378276670663938336984100459602882414666739238', '28375670960860533566126717597042623586721711867346949078603553.961690252700453027034899981369000418', '-1.031559764905395713608499094713689979147866827815838375742327221955329968696830466391247813620712877131843983043022446116077328828325714886717168694179208257626570794495812884425806e+83'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-19470574904101509325332331844986037767740399660560019057.7119', '-492073026322248393605882095057847550345748645576816340124093551078296738464192541723849045789', '3.9568466188086958171880465233173766690032026629745e-38'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('211872876026497009829063883393233809481191362190883849253684099737680426913907201054617907234117865033184.403186292426187511', '0.0000000000235411610950606792007241228964067314935178706017234354189703612990579977911087014870100085875178570060549626', '9.000103060802358048215024300287481951213931206246371042229672906316070218904715481032206444135472089495320677006553492015303007635540926239602846226244158732372969514391243502512e+114'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); + T('-5844455100853651376654250475252964203821845263432078985483833480198.51472537564940283680797304546064130915324997343772', '0.000058497152341298204924493051718564688435050872861886324684792417903238087063888341977808292118', '-9.991007881468350499077540958997813363816099982733021160139526414847479777982598244125723450988545976629726106e+70'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-208539893283563850007.12643120990936066514350129267100171', '0.00000000003593389363501178150231050905656637424998749048521394992496271441393538046117383924866658559', '-5.8034315847246614933801374673895793847064415344319377921323484677322966821185e+30'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('8043645587396641021732938502681359817543439337253058801052675740727721571730611228132672600646378605923337', '-1323168.0924182', '-6.0790806802907468246561587887883818559253301923676419145425764182242811472128643594651107453686007508486594959358274782215931402672682865301655132211915388078279766064418822e+99'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('5345077442239697454774886011336423018078704256068877803956836.23670510981228', '0.00000000000000011060002574332742516535915190923257434052767174581226361318129403016189732388821484995223249750300118960318109112292', '4.83279945580136505083168821214294440490791659361794451962055705475361639771415302893151132245139970562331724322926429058741027119693014735827818262705360391630191471509021e+76'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('37380113626925218715479908638517128519818838419387968758726972455361593237513712458449673118747923669546576138252264740929482975939', '-0.0000000000000006801939143670958029711273998707649', '-5.495508389207880808350127256226214657608101009599899937862259967580635635162812932348658262637085316678783747639804163466588837613458273577204072680194370104490392648318243300970515044257684662231363345437817216189655097e+145'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-0.9240980589910997704959111664719986817089775045950366247068688279255379005723485652', '2755.6517853', '-0.0003353464555720329641810317761965302698250818448919198516365858150087574131'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-14735206357348664992865735695185105417857687409468279761627208898647639982660985611846182127951822610594979835', '-1101.435920065550795028', '1.33781785112580264818549467778872109422330749864153338258575618875337349603120233840090224841974504016817513947058883351448908524776104006557258225856439835456989256889447413801105919735883507e+106'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-11526.519029803437218611745', '-1980641645745226278812446291533504566961012681.6852819482283250153725775125045633888369820790039112495797481', '5.8195883412653009499001562175289054617e-42'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-6932745342923694183863.4407712889787388', '34870883.827073144167437289748257172399669498831227487', '-198811861990754.361'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('33243257027', '12751607507856865851589951449477366328020361795144300426079667590.64133288964626', '2.60698e-54'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-1069197506689172.41', '1533236526211500507519256343794194823892728051.876524428551329407055560589140164359', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('28.66476546644904598250037221', '13561.3771956', '0.0021137060825761378236596338190565475019637983'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-10.096692387169004444076101', '-7410.64884007451703882184197', '0.0013624572699449996017890531485487416503'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('44.7', '-0.0000000000000000301026373988561927150', '-1484919723402656472.793582'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('3.56894291995338299991755', '1743568375310759.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('3', '-826.135811839846027331161', '-0.0036313641861364767959206955234182098243004715472601430821909469785'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('-1808754472.784798621211119', '-4.80680493504930', '376290383.576019'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-13719.54124584038123510031', '-82799.7597925792605642', '0.165695423274283022702'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('211', '-3', '-70.33333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('3928.421774', '9', '436.49130822222222222222222222222222222222223'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-2004652978881980253.113402793', '10322816999041770.04392455520279', '-194.196310858563604831647952256897110242003406104346850039990186256351'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-2018773348883.71465054', '-95.6599547821640', '21103641053.153823906720595724139611921871346297547041415'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-4', '3.4', '-1.17647058823529411764705882352941176470588235294'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-0.0000000000028137592443635124', '-13000014', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('2493563679699245721581.10118959', '-2.3', '-1.084158121608367705035261386778260869565217391304347826086956521739130434782608695652173914e+21'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('4263', '-377673230.165946', '-0.0000112875355188051814813466004829001'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('581039154', '126.1997353157348695726852159', '4604123.396505687590451186522030874068448145555'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('36718233569568035.5623632966', '-0.0000000000000000004253531230970461102986', '-8.632411889259977432652492553440731066395804170439188684436466736195285017185879275448308e+34'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('1589.0', '29956064269104627619425204', '5.3044351411638043170732068e-23'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-1', '6430.54347880709805273799', '-0.00015550785144298652946840350151154071856470065693057863326908156052'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('0', '-0.00142730507727', '0'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('-144192.00037156754667924551', '-7.162', '20132.92381619206180944505864283719631387880480312761798380340686958950013962580284836637810667411337616'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('0.0000002125446846991632617065', '30187422146964858.751132393', '7.040835870794392858896523523804956400228144991244039904910599480948e-24'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-0.000000000000766736698720', '56374815559565768750.730069', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('25544518.93', '0.0000000000000000469', '5.446592522388059701492537313432835820895522388059701492537313432835820895522388059701492537313432835820895522388059701492538e+23'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-1', '0.000000000113429652580411765983', '-8816036876.169455829162161705581854144993945032508218'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('0.00000000000000035422355864762072645518', '-1.6', '-2.213897241547629540344875e-16'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('0.00000000000000026', '-0.000000000000260917323134327', '-0.000996484238289326852105214922572476320767735966922488817544716433433861636109648679809'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('0.0000422503149', '-73.0', '-5.787714369863013698630136986301369863013698630136986301369863013698630136986301369863e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-0.000000000648027233537154668482004765', '-134504033.997745367898', '4.8179018448473e-18'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('243894540410762058029407888', '-0.00000000000000002232190341731310376303022675', '-1.092624297539048035018341587483106663186005083e+43'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-30848889531', '-0.000000000276330963520701001', '111637469568946777225.042184589341630228759558909484344277094396913777361082423533527'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('0.0733847676285075658223', '3200754441.76241498', '2.292733446558933402859704013400566526564506089725566867031e-11'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('55459.7094802769', '0.00026', '213306574.924141923076923076923076923076923076923076923'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-3824411944005565', '-1944006272447294.9050169336', '1.967283747079191009528212074542465311767640289'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-49988911.88240', '-0.0000000000000000000602946', '8.290777595738258484176029030792143906751185014910124621442052853821071870449426648489251110381361e+26'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('905.265', '-0.0003762667212876294', '-2405913.0100639133708110280512999354206013620719162208025088154429338195961215800157338592084057296053077'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('491681428.2', '9889159450842871336.20055172', '4.971923353486762549830247141081325652241006265772730475626693624654733935080926456805817e-11'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('11.516921', '-967562944223487787311', '-1.190301992108930994314e-20'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-147.2', '2762717260.3346237541', '-5.328087753075787159592127888919297641410658444033425936501613e-8'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('-463636264923890408.70', '-1523796614007631384233641.36636', '3.042638765973583e-7'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-37055587088693300137.079346', '-929484432460697135181725', '0.0000398668184152295421171433434'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('0.000000015003766126680', '-3126735711697635910537.847162', '-4.7985399183398926661e-30'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('21403298.27', '490950349594', '0.0000435956472741079271932239552'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('12747419090.74910385808', '5609552870700.213864971009786', '0.0022724483367170588812509767026961008324355580443991349489495630841'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-0.00000000031650284413470156532719022', '24884.25268228752104', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-0.0000000000000000025560659549131481713245589909', '-1839.19039965941103767929', '1.3897777823255771365831427167461403931142788015230608260379260680349248504469029e-21'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('0', '0.436', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('1.647', '491019608.868', '3.3542448616196921e-9'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-0.000047732386384257731', '-148.74', '3.20911566386027504370041683474519295414817802877504370041683474519295414817802877504370042e-7'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('0.0000000000000600', '881.6632103841255050511', '6.8053196836759278403754559818100822e-17'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('0.0000000000000000006637245', '13014712642.3817540382848', '5.099801418885075542945e-29'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('143776841518863171', '-0.00000000000034609861', '-4.15421609231147073950975994962822878716560000053164039000329992657294983068553785870448887385014346055882743938208824e+29'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('645.46862418407791010997', '-0.000000000000000167', '-3865081581940586288.083652694610778443114'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-7', '34.6', '-0.2023121387283236994219653179190751445086705202312138728323699422'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-1121235833199899', '-32.8', '34184019304874.96951219512195121951219512195121951219512195121951219512195121951'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('0.0000000000188990009740969592', '3378889801717.569696743', '5.59325757368297407e-24'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-0.0000038752364', '21865.820957', '-1.77228031255757803194199e-10'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('3932331.838871822', '-23243490297748.2880832875437', '-1.69179920420676512721486683805551646729696968236e-7'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('206040930636923340359166692', '538.2', '3.82833390258125864658429379412857673727238e+23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('0.0075', '22087187408224417.09296328', '3.3956337950060989374730469091936150605677e-19'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('4706.821112', '-4484.0913', '-1.04967111441285773998401861264510827422269479660238'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-0.0000000000000003941356879017724141765125', '-2978880330505.199022894078127', '0'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); + T('-3717638164756266179.31373', '-0.0000000000561', '6.6268059977830056672259001782531194295900178253119429590017825e+28'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-166897.9202', '-288870139993051017637902283', '5.7776106663019878573e-22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-109773551.005', '0.000000000000000291', '-3.772286976116838487972509e+23'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-69483831516149064933', '45666797733.7', '-1521539388.886757599986395999920494858843131'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-2615008789.04', '-0.000000448699711223001786', '5827970742197229'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-15.73379275132695121', '6940.2776264951217530', '-0.00226703'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-6.2', '0.0000000000000061493836805438314318105727', '-1008231120724556'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('690', '0.000014578939930754707820', '47328544.0009547235807333066257912877'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-29256.628612', '-755504.1526726314415', '0.03872464301950333628903545496047362726515935622535422'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-322915.4117033386', '9.11', '-35446.2581452621953896816684961581'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-4882625292842289459782.0713', '-13.38', '364919678089857209251.275881913303437967115097159940209267563527653213751868460388639760837070254110612855007473841555'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('0.000000000129351956271', '-1.23277829937087117', '-1.049271846665476808964426796136761445163472822311e-10'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-48182353470928.914851766197711', '2272941918553283127', '-0.00002119823347778141066704688834669339833'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('3196.64592323932531030', '0.0000000003245910077253889108961189213', '9848226990760.5008268589452525184898665826000345443245395549409514626098519146023853166565543551373496'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('406.7745', '-6.090912', '-66.783841237568364146452944977697921'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-1914.2', '-165340.870423515601', '0.01157729480373990431549028002660588664420183544300321207365966680648027280245'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('79689754768065472164971.285', '3449964290146359.9564723427', '23098718.730414668928941553485511848664319501601702219791827719624588756164690478609945244772535870938469521'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('9001.46330089645627336', '-5365000999.299', '-0.00000167781204552852879566574147623862228074948620117785436144852086837922548'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-9587016002791929.4856188', '-3031413369917389888311716631', '3.162556482045597308235495224067632584707461093481480654259077736452205618657579410106e-12'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('4296083.76674', '-194.0', '-22144.7616842268041237113402061855670103092783505154639175257731958762886597938144329896907216494845360824'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('18.755207714630171', '0.0094306822594364919143130833', '1988.7434650725730232507495283304038983882113409878102620841865180583795237557817888781235508759'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('357139.77763854332', '31461893637685', '1.13515029245017195115729683926708304080654495656947213475032038e-8'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('495109692881305.22330433373579', '18890', '26210147849.72499858679'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('725835.2', '-56469.3051', '-12.8536237291150940690431836038301098201401455'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-0.0000000000000008539291084466621', '-66462.10331086', '1.284836118490894791666770536323048e-20'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('-437950623250185.1796', '4525961511', '-96764.107'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('0', '-419919711657396843.359722150078', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('1418494254750712738754757', '4591733826207580942881672', '0.308923449929649'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-0.00000000000000001121505882526814442165', '-0.00000034022765195967647788365', '3.296339601049636215256616888976508295137995323068555837387e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('7633721603085398572526346', '45335909347835.3783', '168381349638.6806344236154879430718880607974785'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('14896648161672846137148209', '4.125', '3.61130864525402330597532339393939393939393939393939394e+24'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-7914781164126.1', '-119014.0', '66502942.20953921387399801704001209941687532559194716587964441158183070899222'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('91019909259953143323', '-5522.06153359199', '-16482958168114892.84740240589841073937417129944138279714524430633829860712832274184766934216152'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('-1137517608314921022353199', '-0.000000000000000000107056140182953206696174', '1.0625430791461044518578148113716784804459024574335198467207328302373884979194708111129803963870744434655116384071360289838829502244352737346538e+43'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-1173767.2326305257', '-233061127762110315635636', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('5.8876889668', '3.1', '1.8992545054193548387096774193549'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-2.14761558914686180054', '-301574070805882062973', '7.1213535812541532012972515757551e-21'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('0.000000053624403845025055012694', '-0.000000006053504014848', '-8.8585'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-504313761620588', '-0.00000000000377', '1.33770228546575066312997347480106100795755968169761273209549071618037135278514588859416445623342175066312997347480106e+26'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('53662399.4035417690', '-65017.90', '-825.34809'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('704021459384072.011987216647', '261808795961066517287.30237', '0.000002689067251540191817460319532140345637081639220151448601586269279206225927743'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-3.00', '6046001143510655285.0', '-4.961957381069941064583069603421034150719179715307203065064584517e-19'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('973187354320146232724757050', '-568184.017437886808358801', '-1.71280311387240648806239296872607262685395385114971208588734369281880271e+21'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-7', '-228023476845.9625107669', '3.0698593394086058293957362e-11'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-0.35128712', '84029956765557847990155625003', '-4.1804986402656983115928354008537100293091431728296533e-30'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1.580', '26596811565693', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('89476761206818481.30255306413', '6431672239.9', '13911896.917217546364625511259955397093741757541639618090079161404687487019778350630314121'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-285.84043874171354004290', '-3.80', '75.22116808992461580076315789473684210526315789473684210526315789473684'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('5023551710351214.645250', '59', '85144944243240.9261906779661016949152542372881355932203389830508474576271186'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('55.8578416393', '-691700380830418738.5565', '-8.0754389020634e-17'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-3911724.737800850440974979', '5777887024710204784553820488', '-6.770164804316e-22'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('50', '-1.7', '-29.41176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('53803800627864394248948141885', '0.0000000000000001263391910050269947733', '4.2586785778708650076551456104714784704241888012e+44'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-4427033.670465245740417', '0.0000236581313971487858', '-187125246544.145067202651826613329029261197764651089163179'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('0.00000487987924778308703036015', '-14382977', '-3.392815859875940168965124535761963604613982209663548791046526737823470064646561000549e-13'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('0.0000000000000000013173879240462', '8815.9760593357349633294', '1.4943188538393812027029e-22'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('34082970570302.46', '-0.15378396401309', '-221628898624315.1965897283937656884389168635185823292768143062677620972948453464654511988959215787053869058463'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-9422972.687', '-4.8', '1963119.3097916666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('17603175301812980820940043.5084', '203586376416168.590708', '86465389343.286908319080296673397986841425082701014310790406348979937008055804195811226'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('1118292325.2750', '118787658708800084.56755', '9.41421303720126381391248975149497111817115e-9'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-0.000000026208118477668289226', '0.0000005384213204675190936272', '-0.04867585565688854465822983'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('31749974', '0.0000000004175827007223264109812', '76032780919993846.10794696063811129544098498574186417516454488089632546613360229415793309'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-0.000000031738815698', '0.0000000001049015889731270620336856856', '-302.55800706823061140814796512005417608408899124716685671684150270243619123677554'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-0.003598212372110673145921', '-50235787946648897670', '7.162647426e-23'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('3715826298925020920', '1321522734797', '2811776.294938892222593957205879302040757927871951336015423'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-0.0000000420723296', '19531.99', '-2.154021663947196368623985574434555823548e-12'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('922.0412414065612641312654', '279432164508408308430442379', '3.3e-24'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-4639753615932249995340108', '76003590732624477.33', '-61046505.45070418182476591842813719'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('0.00492075860196', '14', '0.000351482757282857142857142857142857142857142857143'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('0.0000000016012749138112683', '-34037956761326454044211', '-4.704380245381294320617370852e-32'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-33029000879564897264715723.4560', '1.4', '-2.35921434854034980462255167542857142857142e+25'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-15.036556', '-2069699249431016.1324294', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('-0.000197817958547740627072816814714', '555.517400440320', '-3.560967818306755e-7'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-0.000000000105900350', '1', '-1.0590035e-10'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('5646.1', '2.4', '2352.541666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-8043002.78244', '4.763038409266', '-1688628.5793524502308694794819969125421740476382083'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('75.921737052807005487819999', '1.658', '45.79115624415380306864897406513872'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('2508.200950', '16.71', '150'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-65726540475412104681231', '-2069320713111227459943487969.92', '0.000031762374995315313595244296992084961374019662798752859038'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('5088562922.2405271423822', '-38730', '-131385.564736393677830679060160082623289439710818486961012135295636457526465272398657371546604699199586'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('64320.654498', '-62061861429.158163', '-0.000001036395831785035719284619257911539667175955615207'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('2.204900879951290506663426', '53104454625924734.643', '4.1520073889901010464572015511640417e-17'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-452538835226053697.9513964592', '-1.47441386143616894803945', '306927957653120064.86755228873937747952745849883789748764499494386053150512496291850412'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('525553312.763821648302342614504', '6', '87592218.7939702747'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('397688', '-68.03', '-5845.773923269145965015434367190945171247978832867852418050859914743495517'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-0.000000000059202582311012372084', '0.0000210309', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0.000000466389968406448397778096', '7134.82908265011410', '6.536806460305781678007928e-11'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-252296.9378333427567934319534', '2406.8709161566', '-104.8236264519835084047570650788548743295593201143617169663331272407432390421138849167950000780307334885'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('522.9', '-912873877159409564322', '-5.728064008437927742351620614e-19'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('7093.173057', '614703552193.1495338', '1.1539176944224349223e-8'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('0.0001341235', '-0.234609357848', '-0.00057168861988402299887104885146311779013688748127'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('149.469751611688514266726302', '23047796109300906.73', '6.4852079957167878439324712165596730871967775320908715873906582105380758688019048047119e-15'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('5917.3544', '-8.23', '-718.99810449574726609963547995139732685297691373'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('1.99', '-420666718873240.2935832610537', '-4.7305857837535459160671048752049702182468640700531401206877e-15'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); + T('-0.000000000002700385943990773294175301648', '-242', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('0.00104', '-9205109310.92', '-1.129807332940903148676935060015840240444187292197548894851554458807026366305859299241e-13'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('3044202687.526990830', '-225715777273711234248.5778', '-1.34868848083910365863654079744878054936819021293833286108835021122610654896355e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('43549623346172485962556947.75', '4010974.58356981', '10857616381954945829.173'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('-5500861681629397.60268386296', '-24688659063.6', '222809.2529229201600939986565500250719740754417828'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('0', '0.000000000000000001611281945098345849', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('286037.7278439472555897310', '1766.08071636693189589823', '161.9618657'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('1.30', '22016412865861919.05', '5.904685781105360772902691452716470778294132411902331064455e-17'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('342975419362.63241869', '0.000000000132776429612170725496026', '2.5831046998660533379821777956012147966560751819092431647637200684436601466266722365014710913251120473656227e+21'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('263838.7497999996', '129.28310', '2040.782977821537385783602033057685033852065737903871426350389184665'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-16986431229246565059.38639', '908.214', '-18703115377264130.5456493623749468737544235169244253006450021690923064388'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('6549.3303050232', '-321113733064601735028025274431', '-2.03956717843194959702044897190339858252408113861632671271582153247826949622e-26'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('293406476316171018592023.8', '70.3117518813163', '4.17293650727734053819019473775029265657801285573865240005155183520385557372804241537981968667505121686394e+21'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('-9647374130', '7946137.265686351', '-1214.09608309436924121296'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('67.235726', '-5573105471252449696.7', '-1.206431967721042366696605205e-17'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('202151625', '35175155404.094130', '0.005747000195952824'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('14835331211045.5493152', '0.0000000000526993611934416', '2.81508748400005203302285837296595379515264240755406139468921221479492486503e+23'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('8.069344', '-1033236.93413135539256239', '-0.0000078097711506837641217'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('-862630169598821067434895771.20', '-264324327', '3263529238452656941.54172866275755239130902998572658807904579'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-0.00000000120003533', '-12.69445', '9.453228221782e-11'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('365895428531107702.61163381', '98087842.582662', '3730283171.666'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('713857126359238153466129958.2', '155931649939351528.34', '4578013037.35891749636140441'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('0.00076074305474025948675149820', '-8885880406', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-5.5062225112792408403541', '9514589.0213163653965887', '-5.787136468998470961850846060990378991351091119514e-7'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('0.00000506877891572040497122', '-3.902263937071', '-0.0000012989328752388233797415850039254655020843332436413852802139307588062849466157864782046595'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-684.64', '-163036108473143.9045182524546', '4.1993151481089e-12'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-115.2432253756119374', '0.00000000004559', '-2527818060443.341465233603860495722746216275499012941434525115156832638736565036192147400745777582803'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('-0.000475387045386359848022134', '-1153538800396479.29', '4.12111881475478780474633380955501014884339769086551346373265e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-1.19867', '11243158.062340655763654254507', '-1.066132836836107775099490457235780480587763022452727371256982516966577648609949e-7'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-5360', '0.0000299063979378797693010823945', '-179225863.68086026271'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('1848.7', '-0.00001905117238', '-97038647.4451710357155458167136693558173557401'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('8391182377.4232316885', '-0.000011565465464', '-725537800751953.5219373856408759235044653625191958811075137200375111508784840032271441314815377498930206480792963'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-103265.04277385519', '877.661', '-117.65937278044163976751843821247611549333968354524127197175219133583467876549146'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('-0.000003172790', '0.00000000000734552178620800', '-431935.27871052691777125857143344101398079282329855'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('845.149698634', '134608.469693066', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('1213867.736088558497', '394513337588257389235052561.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('903382849144828905627453.7', '-145214841100.492', '-6221009108288.50653300185138436076207033700018325051347599'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-1851.2013658186151007551518', '902158.47437813188', '-0.002051969158849468552481150467195438558033'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('0.00000000000009286532571046638105826044092', '5.8170675953588773257319281514', '2e-14'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('-1.8', '-14023648062663978059.5676', '1.283546187095389865277054852377378944975885409409388208510620959318e-19'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('30310353.7', '-325658', '-93.074187337636416117522'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); + T('43.01', '-0.000004044336362136732681', '-10634624.85530670587485242332285837151141452123361995240726115365877739982920896502305890948'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-1560062512144707718870.67', '0.00000000000000000109417237569969976616828176251', '-1.4257922670978429728476419788183802901064679946982495391739203862934972237293303746615318547e+39'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('-1704748', '-4.91256432071590973654', '347017.950037052435135205091406149748637297580526596'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-103112743.806', '1448819.007144005', '-71.1702036607469319471'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-22.09025670434107593424', '0.00000000000000000014868299631332127983', '-148572851315089453888.8890409270305198846110678875706559456425503395067262158'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-12.6729146', '0.000000000000000000767442393', '-16513180292869226472.351000291952858017318310952363560661418921641457979765264283491308252500979575153597229023'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-470.0', '8.5221', '-55.15072576009'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('0.0019934', '-3670467', '-5.4309e-10'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('745572843740672989124', '-0.001095304349461769722226', '-6.80699245015365759160157081e+23'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('49048', '-1523712469872472779.163', '-3.218980022136661765426723332882842415809493840139805314497885e-14'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-14698377.2089310141307668788', '21760428853932061359.601', '-6.7546358151278116387319138742166820347476156445131447537598812600522255302845616957e-13'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-877816.2827087289083455', '-39.96', '21967.37444216038309172922922922922922922922922922922922922922922922922922922922922922923'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-0.0000000000000000003890854543', '-0.0032469533', '1.19830936373492036365290501714330169146565797543e-16'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('-8068590451.8882868', '17.046084578176', '-473339810.962716'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-2.90097482360513435000', '0.00000277734770479378', '-1044512.654500540381425199131650498389768221612690731735719'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-19375401136.648943378', '-19.234', '1007351624.0329075271914318394509722366642404076115212644275761672'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('-0.0000000003693', '-3.88', '9.518041237113402061855670103e-11'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('277800', '285535042428019089.423986180', '9.7291035677356825087203059416983111252168571123895407726511593161081e-13'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('348909203.36249206', '-4474831.4', '-77.971474715783048273058958154266996517455383905637204565965'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-27508947.295331', '-4798670.394836815486650664', '5.7326186280536307976693760690453135065084'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('284476418915134.1', '-0.0001080492748979789624084', '-2632839685261554383.430387221295092399884'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('1376238677546543815969.34113', '-3148.1', '-437164854212554815.9109752326800292239763666973730186461675296210412629840221085734252406213271497093484959181728661732'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('264911.6783682', '-6423503007202402040674.17300', '-4.12409985752580403094885811084792477341436221996458658046257e-17'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-721557029276.24813685590673828', '328593538.3318233192391474709', '-2195.8953695175796385889646124916770635080959054'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('5193929913.1695128898908851', '-95.98868603988046371325', '-54109813.6400324141378'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-24621657592.547626830', '-60.67', '405829200.47053942360309873083896489203889896159551672985000824130542277896818856106807318279215'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-1272153012554733.962', '-449', '2833302923284.48543875278396436525612472160356347438752783964365256124721603563474387527839643652561247216036'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('2.715306', '-0.0000000043675376914528829954781', '-621701789.846887398302716883846832678856864'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-1547473749939.752847843', '-3.12', '495985176262.741297385576923076923076923076923076923076923076923076923076923076923076923'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-47438.43', '-6408314287110301.7992', '7.4026378661573712114249169e-12'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('14319188785', '-112.66', '-127100912.3468844310314'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-10415265.16446510215382885', '-306712043709.953782146', '0.000033957796500206664839577'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1020648162585306.6', '-2.1914898184005', '-465732559656720.572478372067308602018356676157574623601966177717104294492460074'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('3', '-41094051.07508828237681', '-7.3e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-1.500', '-46509992746526152636592.9583253', '3.225113381923792099892011542084055429665680469192e-23'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('26.35176', '129.279716', '0.2038352250093123657542688289940240895949'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-327986.31492440227273268', '-4385770.7548116758221', '0.074784190342043070123660027229907124036893230965876429396666'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-0.31396142411336445', '3760338356.14', '-8.34928653696065027314938490119187724335547457472740082316628740223841701645175613491967214e-11'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('29084829.399916', '-441225.25610969', '-65.91832402423812982677791123384997461876705508459707'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('106668039.3316', '16509842', '6.46087584191296318886637437232894173063558088563173408927838316078373130403065'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('33660.9012992698241', '231215262368.74297832866772', '1.4558252320552823585058e-7'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('30183289889874653144216.021691', '-0.0000000000000001850', '-1.63152918323646773752519036167567567567567567567567567567567567568e+38'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('4830163975203099.03869950', '-165327631.1366', '-29215709.0862339470497822764604891788203097047531376913682467957161830239082624908242430677144850454563'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('641.583800', '5.0', '128.31676'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-1', '0.00000059794', '-1672408.60286985316252466802689233033414723885339666187242867177308760076261832291'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('114468080072.82454', '15882189820058955342014753', '7.2073235095234260194407547081109103e-15'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('1205.63063736256589', '-13323156977', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-0.0000000000000000032005131', '-20405770.066', '1.568435344340510908116982e-25'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-46655578', '-17435198', '2.675941965213129'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-1826391.95321290281351', '-21019556', '0.08689012999194192367859720728639558323686761'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('433', '34259436007990415554844288', '1.263885371314e-23'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('-0.00051660223042684501971002', '710667.3449091584106', '-7.26925521662853510559568125138211960288020929323343966226839411644763293707228331684697909e-10'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('6632516058123153544978.8173136', '4798337824752', '1382252834.28557935015374641580975576914925105981861839059550113290901610933603575423857'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-410294', '-487431396', '0.0008417472'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-10467.4881368', '-4862.011612840367', '2.1529130266073011054275331072440845263173777913371721864220333'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('24178718956171512.95123', '4.4', '5495163399129889.307097727272727272727272727272727272727272727272727272727272727272727272727272727273'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('0.000000000000000000053539203975686828042162', '-175327185.4193', '-3.1e-28'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('-0.16317738810100647624', '6260323849071065.14632897136', '-1e-11'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('0', '-0.00000000000000008058624768587745533362074523', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('1786661973243896004484674.8427', '396.91748100', '4.501343626243299685973455129077572675616169195631874928683224e+21'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('699824037892.29566', '10830178822298.096957295230378', '0.06461795778029428029688562942713791286349020898535266704475778004693770130354368139085380837514233'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('27.3', '-24', '-1.1375'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-7743258.888321', '427071695122.89611752', '-0.000018131051476246310744180936426415946345485474108798530074610022052497467343665750650673516727527'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('3415642986.56132818693046', '-503.857', '-6778992.8224899687548857314674600134561988818255973421030173243598878253155'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('1006977044129157.219131', '3684285614569777143694463103', '2.74e-13'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-229620369743438063605.676', '-18871110490850755947707048.164', '0.000012167824985962774368145291902717428271724819608759746787960261966985276'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('0.0000006359069', '0.00003461733', '0.0183696'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-7666.2423', '-10.8758', '704.889966715092223100829364276650913036282388422001'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('2014', '566568.530511420021', '0.0035547332609'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('1164559012.7176849', '-466', '-2499053.675359838841201716738197424892703862660944206009'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('104977760.2379348', '0.0000000000025883', '40558575218457984004.9453309121817409110226789784800834524591430668778735077077618514082602480393'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-378.651', '643.2196', '-0.58868075537499168246738749'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('0.00000000000003804587158049396', '-123.01687', '-3.092736108510479904098e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-227517081435932.55145705', '-8166', '27861508870.430143455431055596375214303208425177565515552289982855743325985794758755816'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-784864.156117905419381933', '21083.34', '-37.226746621640850993340381552448520964894556555080931'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-35583.60392955878258', '0.000000000000002884675637890853264', '-12335391703025555319.5290377003260258830568498949507101804961452297199748848871811'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); + T('-46867057274705.55865435', '-1138818.46884253076', '41154107.135564961256231603510856158997572290958926194322513203845887459961432163465955478890762330211878911'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1.2', '-6', '0.2'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('-8207827251.758670330228', '0.0249', '-329631616536.49278434650602409638554216867469879518'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-204', '0.0000029', '-70344827.586206896551724137931034483'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('0.000505328', '4.108179912269881792084', '0.000123005323717868153287233442170341302966'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('-0.0000000000000001499619618858708257385374', '-460819196825', '3.25424728221164261039327199908041722e-28'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-596982512215274295078785.735', '0.00000000000000061723389213118', '-9.6719010382598740585504450410175347589618746831863556822631733606e+38'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('0.00000000000065119748298572231', '-604761812.462268448884', '-1e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-2', '-2467866762.2323039904896202', '8.10416522726252839662e-10'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-0.0000000000000163504', '3442474120384657.4416341533', '-4.7496072383466540718483367624878967622316129367226e-30'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-1456836486847167.3820074310958', '18.348653631347632487368279', '-79397459678362.7216974369636088610616179608860365968652475007985815597289323599403276228111689'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('-0.0000000000061111053071278970', '-27010.1591677120452845', '2.262521027433675639966055892145185675275e-16'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('1.478', '-1', '-1.478'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-423.50102515043', '-345239290652.31866', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-1619830981494', '0.0000000345300706937655922072', '-46910734584347684213.071410576712370812560889045558568021991524352862470136820101002794892044733275'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-12592503.5826583', '66', '-190795.50882815606060606060607'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-0.001131684507013295031968373268', '-1041308839.16589692192831', '1.086790454904608603556308528336041092853580165784500403e-12'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('2002612.9276540289151', '32.61', '61411.006674456575133394664'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('60179824375164.647', '-2389940381984.057698243', '-25.180470956018216552468050930430455353105359149977'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-0.000000000000000010257504915', '0.13', '-7.8903883961e-17'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('0.00000000000000001106225394185', '0.00000000002142311562290', '5.16369987287242537734434196204470693651936467886e-7'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-38408325908633', '-0.000000000000000000034', '1.12965664437155882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588e+33'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('226', '-11732125147230.8', '-1.926334719105379310085744898952893012241720872e-11'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('0.0346521063872886074127', '1235370579840.8907669333112461', '2.804997e-14'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-0.00024553564076967669613', '-48318029780838', '5.081656720759988483909641930985285304028270561e-18'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-0.000000000000000039307110614795850218136427', '10043496.0989154139669730335', '-3.91368804524557754442045244867e-24'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-789085778', '40255761.13304', '-19.60180992211711531081325177406048749094552564053148240778982120019150023089919500667671'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('0.00000000000000000002198907053365', '0.0000000000000304933802714365', '7.2110964209000519571252202e-7'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('0.00000004737622612955945552644133460', '-0.00000000000000000718366077', '-6594997682.436423779855258198669088880153231400429839618'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('23337903.63240600072819', '0.0000000000000000520391013613738286985', '4.48468613443978996424855994720818598234971037446297964712585838232770537436719897126681773615112190118163077747630026671e+23'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-1.5', '254470968.25381', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-5828.58448682', '-43.8218293651656', '133.00641646542484859664930706784050010755559914955615164289099278883875166'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.0000000003645684417429705143', '1', '3.645684417429705143e-10'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('0.000000000000048179713841546694173307306', '36474207385148', '1.32092e-27'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('507886502424730178045.8', '444000', '1143888518974617.5181211711711711711711711711711711711711711711711711711711711711712'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('21211770845.2670443890', '15.78678731521718919', '1343640756.1417267463530524445250781593586116124781790172841'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('6', '12828787846358101348991', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-677.33593594269800456', '3910.1', '-0.173227266807165546804429554231349581852126544078156568885706247922048029462'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('5057789983', '-2057580884840423118', '-2.4581245e-9'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('61.8', '-1393023442879678', '-4.436393394230764374853836563e-14'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('15130648492041', '-0.0000000000000049033748412962540', '-3.0857621498994085612562086024076826592956600727994442798897726436952885803687419900663e+27'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-10940965618.4208627065777054', '0.0000075', '-1458795415789448.3608770273866666666666666666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-1741.3655', '168841165413015.1911413231958', '-1.03136311321964e-11'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('3.7680', '28080825399761145000104.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-135733.9312513', '-106.1', '1279.30189680772855796418473138548539114043355325164938737040527803958529688972667'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-0.000014995192150239849808540784149', '-0.00004634419097', '0.323561418084667663118357466689853837360018111456526306'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-2727467849220.6430', '0.00000000000047071402182077', '-5.794320378795002290140887837e+24'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('3254886067375040047.294976', '130247729806.1422490', '24989963.911229303180155633881696971'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('0.0001517750011829757', '432077080925300787814407817.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('6043586055628194917.630', '-0.000000000000166204696467716687', '-3.636230614459255444865064142597998778455504280761986176898912590297958063490881820084729136663144758e+31'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-246902424152.817893492257113', '13190015922447327.3986', '-0.0000187188874982803392436242509391433373124566'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('2.79212748799125', '8083944027095884508070529', '3.4539173930850526941492139280556318060780640828790362133181298e-25'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-155493993094499.12419', '7', '-22213427584928.4463128571428'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-0.00000000000000414742783414239816978844774', '2.42728', '-1.708e-15'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-17629052489392655', '434332523231244065392.661', '-0.0000405888381515623389231388156237036804908819597794848'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('384.4654474606', '-1.564602804294462821742184415', '-245.72718801559969519149234022478471772421'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-287.92', '-8593.271084374839516354559324', '0.033505285376546011804383803592571414'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('5562575760.416226299', '4443122744661918354065.75470594', '1.2519518546047928825867310877506335902491501374251192290179e-12'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('26264157570226149.7', '177.88484626156', '147646964439048.44868754299487257196861575311417400679233039774168318512463589000043453173906867748773381582099'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); + T('3124.127', '8774950118672.1981065667', '3.5602789277994602551065899974055122314322157851087771961638791254e-10'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('13361719.6', '66313281.36', '0.20149386858813707782'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('9618552.8', '-99199767586577412901.538436', '-9.696144491069e-14'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); + T('7398643406.2', '-0.000321637234', '-23003068749807.74147560291480432268609796588413641189315786741282572'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('213492069.623808509436', '2873695523.80684948', '0.0742918196639672996323466832204954120547650487609529149428439626218125680802'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-0.0127546845805340602341642508', '0.000027127613126094468205620217590', '-471'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-3', '3544311799306681630.95675230', '-8.46426660483663754346120595708e-19'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-27.59814248907', '-0.0000000000333355', '827890461792.083514571552849065'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('0.00000000000000011151816004735', '141371580601581560607539', '7.8883011403568065e-40'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-0.00000000000007814196915071266536731774', '-1861949.4113867779275', '4.196782612504633540604394141091970482497e-20'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-1773.7', '-680582251640777140', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-253466754.5702558294508004364', '0.0000000016915460330', '-149843249681314365.6556938858074813031115423389722199774151815826'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('3035622320.74860494450562642361', '-171.9', '-17659233.97759514220189427820599185573007562536358347876672484002326934264107038976148923792902850494474'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('7', '323935.73706', '0.0000216092242971742464529918327992952813108183958145713828762453493281146656576304826180452'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('0.00000000005148472716539298157457', '312510049836876.427842', '1.6474582878940024381560607237302547675904884227203911e-25'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('1295.04', '2.7', '479.644444444444444444444444444444444444444444444444444444444444444444444444444444'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('-8.3', '79850188565363554', '-1.039446512165191466917812606438347257466854212445764877244764116930149631716572e-16'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('-2539862220.0207', '-44236.550550726180875', '57415.467264072333635960729236763378'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('16839944980983150.90655868', '44432765.7621', '378998351.6026631957333525953564219350038387962931060748756882525145122694635411377580328146268455715'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-0.0000027046395062488122194', '0.0000000000000013619006519452', '-1985930106.124687565841353954068087337021798551917276386357928512080934434020694783'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-1.1198910236', '-0.0030109339351', '371.9414134414762104887739355035442205574814705936920043848889'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('2009385673', '20.9', '96142855.1674641148325358851674641148325358851674641148325358851674641148325358851674641148325358851674642'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('16.7003690316461037', '93843.32', '0.001'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-1935073101337397', '-0.000000000001658979394', '1.16642383162560064926279608750824544599497297915202435600595530965347240473319586029770783e+27'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-330.366065140860', '1534019.623575', '-0.000215359739'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-0.00000000000000269032', '-25.2161338454486377449', '1.06690423539514e-16'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('3.227', '-1630.742200259200945873', '-0.00197885355483354713384065004992007650246834325039707920127279577862987539580196966597908560236055'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('30126844.5139992367407931165139', '-464.64', '-64839.1109547159881645857362988550275482093663911845730027548209366391'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-7977466949919.20197939320571750', '25201187.5848772923514999213774', '-316551.23089144869109015446556078962824'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('0.00000000000000426441195921089884284213238', '-18690382297316625066', '-2.28160766932153106668e-34'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('962013664.0107040', '9.3', '103442329.4635165591397849462365591397849462365591397849462365591397849462365591397849462365591397849462'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1006973806184.623056', '-1.066971', '-943768674298.1984102660709616287602943285243928841552394582420703093148736'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-25210.15', '-1', '25210.15'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-0.000000000000001376148315', '-0.0000000029456', '4.671877766838674634e-7'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('37242.4', '316145754497658724540554.1', '1.178013605122627241684395290884998159939e-19'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('86328906834.10816309', '-0.00247371887769057820998', '-34898430703938.096391606813152501754497939669327'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('0.00000002765836017', '43.4221', '6e-10'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('910.80105073607989', '4268684621919.65', '2.13368082068917954228345323193625136056867444933e-10'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('980986779253.7448670475747006', '1260.3', '778375608.3898634190649644533841148932793779'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-0.00000000000031260', '1.981416', '-1.57765961312515897721629380200826075897237127e-13'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('0.0000000000000017052396538958004912455', '2649918125.767736006', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-1752732913576622160', '-205825254612177219.70', '8.5156358333149142698669189920154989458330771987368756031356343736501194705'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('6922377660970977.67946', '-4388778700989588504770506415', '-2e-12'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); + T('-0.0008967346570245', '679037.25394626927', '-1.32059714222315208715715586429957141837846338692429127615686697655109811863574e-9'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('10604413834153', '-11598666613031363424932579883', '-9.142787001256421998531972726183529e-16'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-0.000012348', '-0.3832284502169', '0.0000322209898378141479427691532588808859523574928660271955209972049087057765552158694511685'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-2225005.8', '6610854707.4', '-0.000336568552551819466114802969538939'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('-105884473', '-0.0000000000000106268', '9.96390945533933074867316595776715474084390409154213874355403319908156735800052696954868822223058682e+21'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-8.45166', '0.000000000000000003351828', '-2521507666861187387.8969923277686086517565937154293120052699601530866142296084405285712751370297043881726627977330579'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-0.0000000000000102799919001671062777', '-18.142', '5.666404971980545848142431926e-16'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-265.4142', '-569510.1041779800093296', '0.000466039492632169853045073207505280730820703997180116748757530048956809346930242922759289414621'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('882686.635528258', '534854.79223598628', '1.6503294881927558448557149'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-95518761105458384136', '-1.2396', '77056115767552746156.8247821878025169409486931268151016456921587608906098741529525653436592449177154'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('1.69', '35776.574327736085709825', '0.00004723761376700098130499'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('8323545844568', '-150063.7704', '-55466724.7289689583862408404473888922092550594743686382'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('0.0000000000006622282463026677511277066', '20.5189951491', '3.2273912123406992083565695120075562063187485370445576465444e-14'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('43639749.88168014571993635', '0.0001944531891408009166056131595', '224422906482'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-534009631180.1639', '-0.00000000000816145981853309725394', '6.54306512626002613848073235507820758076881810664755420270658726351886723388988603806097401394694319021680507457e+22'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-494.78', '0.0000000000502244061846267416152229571707', '-9851385762156.5648051354480419191043985260796743999792172888696167729874567795594797311767'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('32938895612.90205187310670102', '-266.600409', '-123551556.940417341494426218'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.000000261644056205', '-0.00000000000056', '-467221.5289375'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-770099.9', '-104231373347875873118.705', '7.388369502e-15'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-4.39', '18262248.4620253', '-2.40386611e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-0.0000000000000000001405023348228197256122144708', '-2', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('0.000000029157741696510063602171886', '0.000000000000000000034197750520731428541', '852621627227.61543233059837438165351588654888496179313105145195'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('9896848222760313471057816756', '6329344480963', '1563645058746197.88106164640236766422840046452141444395927046942264430801623765173551797916657179'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('221029107103276915937628459.115', '2579105924.031', '85699895085278482.416445655901680672758226699008'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-0.0006470642268843603568', '-527435284.19454490670', '1.227e-12'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('183.45894620', '-585362564798551263285', '-3.134107939805412881505758209697476944638229116718813831659e-19'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-0.0088', '-4058596', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('0.0228', '67.4', '0.000338278931750741839762611275964391691394658753709198813056379822'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('55.431323569482853085983', '38.1', '1.4548903'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-0.058875222931656', '0.00200804', '-29.31974608656002868468755602478038286089918527519372124061273679808'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('0.0000000000004341979552550051945', '-7', '-6.2028279322143599214285714285714285714285714285714285714285714285714285714285714e-14'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('0', '27317835842.70343824', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-525.27647489', '-619.8870361', '0.8473745'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-0.00006609858451732327857498', '109329.9017282701215411803', '-6.045791999484780576837103178476487168e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-734.32240155005644367008108', '1020431102461134.464', '-7.196197761700671525612683557342740515746394888e-13'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-783284249205713.7722', '4233309885107498641823', '-1.85028800268379933984683953559449871104453089752776e-7'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-0.00013146956713094358376', '1649552.9140934', '-7.97001211708323486024554763937270450633303503661265062490767630606217887777e-11'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('0.00002432214054499571092367773', '-5.252', '-0.0000046310244754371117524138861386138613861386138613861386138613861386138613'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('0.000604917865', '0.00000000000000778053428052857257990576', '77747599739.24371047489910403748467035'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('0.00000002729181865511587518', '3314925238926460', '8.233011814153112751033242807836060726342149614257168374901160828951724e-24'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('0.0000000000000551834247709145', '1273.7053272329239235620', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('923198613722607072044', '6507.0', '141877764518611813.7458122022437375134470570155217458122022437375134470570155217458122022437375134470570155217458'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-140335830907892435742395', '-42744.018650766016', '3283168858185435867.2081298364009743668600863110327906457706897393160602911'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('0.0000000034057477562160254', '-56.23', '-6.0568162123706658367419526942913035746e-11'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('-50863101304', '-1.5', '33908734202.666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('0.0000000000000015', '-0.000000000000000000140806553', '-10652.91329161363676021527208325311393710490164474092338585974759285528422814242175220353558402925'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('98.0949085616362', '20494774', '0.000004786337656694150420980489953194897391891220659471531620695109885085827245'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-3009', '-205469071446121021512734996939', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-10.33', '3', '-3.4433333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-1.0', '-0.0026695218361', '374.598921228880372371343271066191673171757053454131886207424456287256065124'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('0.000000000000000000096299113359374660689872154', '-0.000000041247', '-2.3347e-12'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('8556123431827', '4608076357009950869947910.5', '1.85676685214018981902e-12'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('5279', '-1.3', '-4060.7692307692307692307692307692307692307692307692307692307692307692307692307692307692307692307693'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('-2', '3460.2', '-0.0005780012716027975261545575400265880584937286862031096468412230506907115195653430437546962603317727'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-9840946810698489631.31', '0.000000001340199962655292', '-7.3428944074889845947016437140958301917208345973724709410330506874828356015861442719287e+27'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('0.0000000084', '-4479933315301219812670', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('-0.0000000000005699', '-22418743580046824.54672034', '1e-25'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('-11393.31', '363.1954', '-31.3696428974596043892626393395951600708'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-698013.4', '-4.748519', '146996.02128579458142633524263038644259399614911512410501042535577935'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-75.98013345303526819', '-113870220948852.52747420278', '6.6725200688917185714557430189134938e-13'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('47640719793996101556544272.0', '0.0000001618025948413210981769785058', '2.944373039302434525226651249791802071388e+32'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('144.183772508248322848066195', '13889798338085.6', '1.0380551898503722365962133982817630259181003e-11'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-49.15', '-0.0050647233410506314951440754823', '9704.38002046'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('0.00000000000000002719269323045919967229425', '16885.056050', '1.610459162820439655709301006436398533601551177557388090518064937071973771e-21'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); + T('0.00000000001283006158894564713881', '1490290.79', '8.6090994288072109328475417874656e-18'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-3.9', '27.810820298880595815042028907', '-0.14023318830897546800743113515138209017795825036'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('-94.18025276', '-0.00000000000000058354337', '161393749979543080.062755232743026452344064846456913733764124507146743865841539764216668'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('-539194507864', '2199020327889191', '-0.000245197600506751705168663020061920219134073106013610032805600382847009212741981'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0.0000000000000764476069279609', '-28649374142186508.40', '-2.668386630317029683579821472979771636953091090656555471e-30'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('10985.707500957', '-2.3', '-4776.3945656334782608695652173913043478260869565217391304347826086956521739130434'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-248952580924183', '-54333112891.780', '4581.967932152968478312557734782930587065915921'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-5497496711.36315630050', '-212.837', '25829610.03661561'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('0.0000000006315637381937849956470745', '-633237604453.9132585685602', '-9.9735665372941368623730877601909949270062103558673e-22'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-7209257842336642543480.6172684', '0.00000001186587', '-6.0756251689396921957518641856012243518595770895855086900496971566349538634756659225155846136861435360407622871310742490858235e+29'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-51.2235746', '-2470965700588586130998460', '2.0730184392198767054399446176223631735502262760322125e-23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-5548065325827168241016699205', '19.2', '-2.8896173572016501255295308359375e+26'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('0.608330875132290749638579785', '-0.0000000000000000013969514468857994362', '-435470306780119398.23061608733868406207780517187821743248822329021800536250361694733'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('554050694986108208197843.837', '-2840731954.122951', '-195038005673846.16055268929386425534558903896534424031411869009769261494138091259712787228192'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('41.2600702526', '32422630.698541066068', '0.000001272570095752797619026707957116103877804433827479818600005179141764'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-29508937775900336.96745703', '454.55302087085945968891517', '-64918582477717.06655285685'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('121835792112.031458', '13349.97', '9126297.071231729958943727963433625693540884361537891096384486257272488252782590522675331854679'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-21234198779772116', '789117.741758', '-26908783893.8540070263844982722300123'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('-4989566.19348002', '-0.0000000058782019556554347130250', '848825241310320.11668156337771690850186479657900594611'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('3.0724536', '-0.000000000000000007041585830794818488792', '-436329780510989954.551091499054526001846286342348634'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-1.28569', '-1001851216730.820102348', '1.28331430708382561543184857731880253016036120026369611231e-12'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('-2334384.1', '-38916.4332004820517912', '59.9845337308837529352697890139267681024424027'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-0.000000000000000129624500411481739', '-5960733230894', '2.174640189224513503489449892371786582406678648715e-29'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-177489857688.6', '0.014425006442433703003409982', '-12304317394721.03457'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); + T('0', '1182.8710995356238232492063', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('998432143981659996.993382568', '-434340863870260542987.88', '-0.0022987294704094337996759'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('-3567956347.2603722232', '2.4', '-1486648478.025155093'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-1.726189', '-87.695294132959800168957840', '0.019683941049138'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-0.0000000000000076501231125108051749049281', '1390866687485864.9523', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-3501189.4337841', '-332814638322740159026312', '1.051993822e-17'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('5', '-76468.92634638', '-0.00006538603637968689'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-166180752313186081244', '-0.000000019463969232913111', '8.5378655465699341944431399221283885177159544860608042644e+27'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1.2378513', '-1794652768216408.5', '-6.89744178886605376390792751059537065240428823174398413219990197564881671489e-16'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-0.02515333417248128530602182941', '-9159180545', '2.7462428597078479476e-12'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('24', '5320413068307816737991980355', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('0.00000000000055468552191490367', '5455.5911167119423159', '1.01672854517222302495377290574484970750900740427457643959007255083056105e-16'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('-4.30542', '48312907914855.521', '-8e-14'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-45806055225642.7438221194666', '8301114504507.38', '-5.51806088215874465568385836791718635727978846176910667636148904452549733057'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-0.0000000000000000083149159157', '380096.3712', '-2.18758097833163422739880132799331497537853894e-23'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('233827872456283396852', '0.00000000000126085991008017285690', '1.854511120441724976283342150744787908987129181188673584057999195838106954460750818521245082619954462967485194e+32'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('0.00000000203028823562624013804059359544', '16.11', '1.260265819755580470540405707908131595282433271260086902545003103662321539416511483551e-10'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('-2.83009547324126026828144052', '-1073136930546', '2.6372174814646808617440131982856733797578118336233519974395530395156599824e-12'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-0.00000000000000003964312', '84.4068521', '-4.6966708286944869965124549408471542798e-19'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-0.000000000000243095170', '253804.416083019328507441', '-9.578051231405038351889375026857344e-19'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('67.127246696253374606', '-305571635070725418.59', '-2.1967761072036867437957e-16'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-0.2584532150', '-4405295.213841671', '5.86687616729808034079509881452356786e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-22.4366', '87219275575596656.6', '-2.5724359497291678704993282533069081903125857440676861487e-16'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('3.572518998981', '0.0362382837285606476215341', '98.5841113707428129124708369537235554273561188433169663353586226990901081970303'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('0', '-620.908', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('956649237392.54526837482487285', '-252.26108413', '-3792298129.1063765966810636367576289619904599908134867175717310669911929867515550346334746'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-59667102295.65250210', '19489263897530983028.9', '-3.06153698822927267569035561030547666864105216155187107713349341031e-9'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-1.3356004155738307', '-1072483976.807', '1.24533367814e-9'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-777418.242914108353702', '-36608', '21.2362937858967535429960664335664335664335'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('-1.3', '18589084334848', '-6.9933514560636904777010729e-14'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('8.298506', '-14835308451533207540987920', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-194552786577474447109419.065219', '-30974490016275218', '6281065.046599597'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-1089462.83769175220337676', '-37527420511', '0.0000290311143920059718750105488698559487303846147369966245852958939600377054010303010458357160065347'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-7031172930206.977', '-0.000000944770240264', '7442204073068850183.83921952438557552951943962609032640434583738502675415596593'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('76357519096720', '-0.000000000122402795947736068', '-6.238216905545472540943255902322080472226793380593928735266890562147246785044889660533610115945649499822663700873023421142242e+23'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-0.00000000000000000163631470899168095', '-62696.72', '2.6098888570114687817799719028363844232999748631e-23'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-0.00000000015610167379594', '8307382086265.32', '-1.87907179632467487195e-23'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-41155.97286243387', '-51286550749616883.0453954314', '8.024710623133748231167952577192199879705499807762591984e-13'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('0.00000062', '-83696.33363', '-7.4077318935003867743495564155693590326269588112661512769301935e-12'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-2454', '-57996', '0.042313262983654045106559'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-0.00000005445430299887755', '18702365804889.09828730546915', '0'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-2.82500727732799102592455401', '127386323.4', '-2.2176692143451806584791927592440429911960234814344284623572078068154685434621782953506e-8'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-10414867049350.37506', '-774.5', '13447213749.9682053712072304712717882504841833440929632020658489347966429954809'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('-0.00000000017156347571', '-1', '1.7156347571e-10'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('-146886024132', '60.846634517415', '-2414036952.03486638986274256171950379'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('1597035367262802184.9', '-5100462308.96744', '-313115806.08192221728777946889341283425748564273596394348484989186886406'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('357978994284047', '-1.85390296204564701262050526', '-193094785224919.879005988841865468690729521149775159443'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('0.00000003446220246575602525654', '-0.0000000000000000000436359188998647477', '-789766855714.429404'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('13.341320967', '252', '0.052941749869047619047619047619047619047619047619047619047619047619047619047619047619047619047'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('0.0000000000000001024979524445496413574468', '776847686.16529646052', '1.31940860827562900232013736775142099759115524e-25'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('35539521061792.894', '-589.6', '-60277342370.74778493894165535956580732700135685210312075983717774762550881953867028493894166'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-0.04843032565810874317879', '-0.0000000000000000230470', '2101372224502483.75835423265500932876296264155855425868876643380917256042'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-0.00015760545760472', '0.0000000000000000020881', '-75477926155222.4510320386954647765911594272304966237249173890139361141707772616254010823236435036636176428332'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('3741994818.43', '276730971.190268761', '13.522139579588868'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-0.000000000000000793120', '1', '-7.9312e-16'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('19505793668996.2029018489250', '0.0000000000000000027031057958951928489759383', '7.216067420896647128431761647720817838984379537149604615544851269905951848e+30'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('3', '0.000000000000000002268109065118827699', '1322687716449309311.392732396838212'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('-2822.5667173146', '-0.000000000018395023355040495122590372880', '153441866467713.780883476041'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('1.039074254', '-0.000000000000062746', '-16560007873011.82545500908424441398654894335893921524878079877601759474707551078953240047174321869123131355'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('4251433992377.3033810', '-30360213576311282.08153307', '-0.00014003307261627788209840535004431934847487826'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-83.847', '-52544439413789508586255433619', '1.595734980436304717448092703632869706e-27'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('0.000000000000000000060379', '-0.000000000751974225833533', '-8.029397541261779523413113e-11'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('1011.642321995', '-0.0000000157', '-64435816687.579617834394904'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('2.45111', '-10841006815.8245891', '-2.26096158930748128285706408217049424480420881500218093692115118582618759959848353e-10'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-1.6453946770', '-502189.190381561', '0.000003276443835339898124338106783579765302296772201509039455867238791380277419994145965885115'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('164.71063415565168270', '38688858306.9', '4.25731441463280949903434122419329819182248246e-9'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-253123055870543795901570.532335', '721689950179663019087825751933', '-3.5073656742418181837455443362691936683987e-7'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-3', '4.193811123766', '-0.71533979749331923242174048379644845283890017598329558'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-35764692914053196', '5.0', '-7152938582810639.2'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1', '-7833230747484274.456179967818', '-1.2766e-16'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-130921316754051.5231492', '-13743800862464217321', '0.0000095258450019900660069760935022508907014851641735532551961'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('-0.000122083426444', '0.0000000000000000051793456353047282', '-23571206681366.26271248245922921459993806882663221841053754120075248348191554068065707391940769657618571878843'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-13.013082361464', '-19', '0.684899071656'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('239735.962', '-2117596123151685.940495888490', '-1.132113717903833858667987356e-10'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-11.1939672361', '-6495.3', '0.0017'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('-3.02785696172038664440868369240', '-9759.1722', '0.00031025756075094019187'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('0.00686', '-0.00030702330', '-22.343581089773968294914425061550703155102560619992033177937961060284349754562601601'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-0.00000721285235008372', '-2966404137461530', '2.431513716892279e-21'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-3.6', '-111843172425284814877820055', '3.21879281670495086474816711397358889e-26'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('0.00000014798600456383948117017592', '-806120083076757.711', '-1.8357811406833347103770610957283504911572088180974e-22'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('1378.3718188', '0.0000000014240198803', '967944224563.505905992652453842290645441911'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('0.00000000267701455033', '52.8369968257752', '5.066553e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('-42281.583633647', '301.008944', '-140.46620366751294938266020427618921516165978111268348225559'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('173072565057820.81884340', '-22454475637400280', '-0.00770771'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-148.308309396608', '-1', '148.308309396608'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); + T('-4.5', '-237294.549210115502960438352084', '0.000018963773145987509672643934563265116870186716351801954670293442297143720469368694764456905957'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('0.010105711', '-58.2', '-0.0001736376460481'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('0.00017', '-2042316.522', '-8.323881150093344835605262e-11'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('74771', '-1250.843139741359215801621670', '-59.77648005925078317905100978646789953648061773213365672669249'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-67817.820861392699', '-0.0000000000000000812716176', '834458853706791471565.345095333749084871174017336157955345040406824632957718'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('6120230832613', '1', '6120230832613'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('8941060662864547952.8', '7665854.8236635996797444792', '1166348811519.9542509005070975483058276516898971541382367391466160168477257504036493054809998209085999366077'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-116.953733437', '-178.5', '0.6552029884425770308123249299719888'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('1.7545566', '-1.8', '-0.974753666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('78506.12699118476818330', '29343.15987453266', '2.675'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('0.000000000007170364785', '1217317394.9', '5.8903001099306808237904692739390674092798e-21'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-358.72597358844265031347081211', '-0.00000000006346267365643402622986', '5652550592659.65847839264302852377853927'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-1047517545182138713.714', '-48750265694381704341698147', '2.14874222788669109758607218005930509171320140363946801313938343353364880699695125962791e-8'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-19980949.4', '2166.303', '-9223.5247793129585288853867626089240517139107502505420525198921849805867415592370965649772908'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('-77347.56665998993', '-61011519988736362016915678575', '1.2677534779377639866583728733529e-24'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('1.00725666', '44890598391792.6558241348538145', '2.243803148287184888604262977643616586199053928157e-14'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('-0.00000000000000069917314913823617496', '-0.65465', '1.068010615043513594989689146872374551286947223707324e-15'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-0.0000000000000013275084047200776', '10892.626', '-1.2e-19'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('0', '442484646.9644917', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('13934130015777.759', '-468599827.881745750969665', '-29735.6703666867935099330274301949766831'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); + T('-504805212729013492748392', '1.1', '-4.5891382975364862977126545454545454545454545454545454545454545e+23'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('112.8', '437508', '0.0002579'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('968026520286705', '-0.000000000004158357327526631313450', '-2.3279060553040111015228875482714428199539764540780806e+26'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('4.082', '0.00000000000000002899730037408421', '140771725206813061.411657268233204678443287205'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('7983402611108711956214129.366', '-6304037314790', '-1266395202385.4184544456598352850309175890175536966493489539721043482329295052925801401464962347'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-31319770.3170', '-1767017197.60054', '0.0177246550625141'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('35966943458239770.89', '-86.1354', '-417562854044211.44953178368011293846664669810554081132728239492705670374782029'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-0.1746', '-3', '0.0582'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); + T('3.1737080818', '-154.74071034759696', '-0.02'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-1', '-151793425935557285.74160344', '6.58790058816211312844e-18'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-0.000000000000000000500696640746446603578239852374', '0.0000010519078635126583383791103703', '-4.75989065310776976547223588231620465207273332539646650682e-13'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-337408141555794467703412', '5', '-6.74816283111588935406824e+22'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-2390151555250111.5101748841', '14895139724394489980239711', '-1.604651986805900738738324857172310183686390366703e-10'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-2060873', '-7221697220', '0.00028537239061'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('0.000003306351834', '230229062766143314184', '1.43611401370227903719665743401327961340582045683781850026652503851636e-26'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('1', '-2.00', '-0.5'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-909114859099118221.52', '1036707955444474.3', '-876.925'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('197782531157200.01287194570123', '813.946', '242992202378.53618406128379675064439164268882702292289660493447968292736864607725819649'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('0.00000000008452451909296', '58', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-6137.8543112978414470200306898', '0.00000055601458262650773045979675', '-11039016786.7608409116128147797862018931350388082314771512335152754772845202'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('1615966037605689.47637174016', '22863276.1852274648', '70679548.48263634212893741417946789662468271367679521697865762414'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('0.00000130888943456524437277141723179', '-0.00000000000000000002344964776537404390495', '-55817018987294.2152070206760779214763469358747746513558103351411085850215223'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-72741.239', '-0.011694513184', '6220116.89204146353630721598406639583296740674315'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('-62284855.6062803049', '341872719741819544129', '-1.8218726446882774353698764702650666206826659826324725196666055243467e-13'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-0.000000191763', '5181.004', '-3.7012710277776276567244495468445884234021050746148815943782324815807e-11'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('6554.0872023548', '-38.934724', '-168.335268085'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-0.000000000000000000354411206386009672609701', '1.571', '-2.25595930226613413500764481222151496e-19'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('3729560374040.937001', '-0.0042566551', '-876171615135305.8886542158419177'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('358.8', '-7338649.72444145235', '-0.00004889182798914801941000704346106583259887447309571581025317301009141101768963144'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('232510', '-7811879', '-0.0297636458526815379500885766407800223224143640729714323532148923453627481941284'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('7.6083', '-4.09', '-1.86022004889975550122249388'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-2.0', '9658.6063706', '-0.00020706921094619145074780442983839265230320846056159082541253'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-42502549943849636.0', '1005909889', '-42252840.3474614175902589222880181864878753567955031805040739588553741715924218337215293048979'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('0.000000000003947406983189274583637576', '-4.758472', '-8.2955347497879037296795610019350749568348831e-13'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-0.00000060783743822161435027278947747', '5', '-1.21567e-7'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('55.062', '0.00000000000000092390575762187489545047', '59596987621041665.999708408735627809281012767259065689121245799870507035879298918578047617775711407910273'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('120.5', '-72963.576389705129', '-0.00165150895779009637027322974274505457157008990450575477856221236714119651890204'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('480898006334101303.0441566199', '0.0000003493', '1.3767477994105390868713330085886057829945605496707701116518751789292871457200114514743773260807329e+24'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('0.0000000014271644', '-34.7', '-4.112865706051873198848e-11'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('-908168.55', '-0.000000000168092101', '5402803252485968.98672829367514419966706228509'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-3931.3591709457711', '-0.000600', '6552265.2849096185'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-0.0000000000000000003854837', '203153327235594.07', '-1.897501287551938289621998275022661405168283841714e-33'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('-464.6660989580066682583', '0.0000000025287048776334050', '-183756555803.7'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('0.00000001598491495112256503271480', '15845.41034728929139', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-376478.1141996546346', '-6.04226', '62307.49987581710065439090671371308086709277654387596693952262895'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('-167220290541503805543.7759', '42212184.8388', '-3961422304485.89858655510848710351023338606730785989993238'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-4.1', '-12.32618', '0.3326253551384127118052794945392652062520586264357651762346485286'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('1396.22658466738050270446461434', '-149201.6902', '-0.00935798101747898632521298753'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-0.0000254634', '-16910781436593647508202009', '1.5057494590344083722e-30'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-66473969681.2438255944722', '-0.0004003', '166060378918920.37370590107419435423'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('6', '137056187895.95934', '4.3777665876382445796889579864300748217253498127475115041805154412475968297585454338e-11'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('12868623290.812478961603', '-36.75684007199992660969', '-350101457.731546011544686690663319393081017964364798328515129174553990948059802265406973292412642650085'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('8.0', '-143.2', '-0.05586592178770949720670391061452513966480446927374301675978'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('405.8940851589920143275', '0.0000031595641466437612', '128465214.2891771800155255184936477227590071373152600189283713412231665928420004315342'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-14403263998864', '10940603451138682.0975641', '-0.0013164963032605783027414142495158631633'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-12.2', '-66130.6039611', '0.0001844835'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('0.00000000000033214', '286610831148.287475471847134', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('875086261927331070.4107', '3251.015177076', '269173231825510.45494302877117092'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-32517.76957877', '-14838063424.73286421609961', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-2.1', '-53837150', '3.900652244778930534027154111984011040703306174268140122573353158553155209739e-8'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('1822846523', '6.097110380', '298968922.88'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('0.0000000000000000001738767135828308076615318932', '42', '4.13992175197216209e-21'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-65144.180447124765622379367086', '117535240.5467065104543', '-0.0005543'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('-60595315535', '0.00000786477671092226653', '-7704645378024249.5202802823297289694303782144532071537437'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('7', '105.15540244011511302', '0.066568144266162889689357612294978262491909834788419868590726910520285755'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('0.00000000000000000125943445406265325', '-1.05014763', '-1.199292764258919719696934e-18'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-207260494748141.8', '276513', '-749550635.0447964471833150701775323402516337387392274504272855164133332'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('0.000000000000007406675259867548048659529', '-3.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-3', '-33805144702182391429', '8.874388873141921791142106887133754461004198094372124469735641818469357576e-20'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); + T('4580747.41942959797145', '-199398645845444290963175', '-2.29728110740540187798940427340107312524125e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-11921156770183281402.5719', '0.0000000000000000000138107', '-8.63182660559079655815556054363645579152396330381515781242080415909403578384875495087142577856299825497621409486847154742337e+38'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('-1074776287618563612.8', '0.00000000000000987368099173690', '-1.088526445727813061987063599938594859673165781329712410974746563427097586832555160507624921930388017640329804919138993e+32'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('20.2', '-15.1', '-1.337748344370860927152317880794701986755'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-0.0000000000000000851106468662433872', '144621243746567181134', '-5.88507225227508292021159593e-37'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-3771.4', '-538627092842309059307110304', '7.00187578775234832011214088670320479524277077178383611e-24'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('681048142', '-15.778877', '-43162016.0294043739614676000072755494'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('0.0000000000000000000241220235004242', '-7084', '-3.405141657315669113495200451722191e-24'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-17.771348422082', '-642.401', '0.0276639488762968924394575'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('48142861548200777', '-1854644.538', '-25957999261.7435875466935432777793024185424797557622332910890119042315374397635650869935055986453399837'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('12339.593347848', '-8', '-1542.449168481'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-45173807850681', '473007.8', '-95503304.2809886010336404600516101425811582811107977500582442826'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-0.0000000000000001369861', '-1214.9774052', '1.12747858037286239403392651667725022150889296225078e-19'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('8.30', '69753.3968', '0.0001189906209700170472558262567651759147'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-194205904343783801732.0', '-4.1', '47367293742386293105.365853658536'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('0.0000000000020', '-426481958.84912', '-4.68953013955639869740954138570056513052759933250542067428558653599743312131825e-21'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('3432.29261', '0.0000689627576', '49770234.3909751079907512283122506690480718247844543849853243107552300083777392335598830520083495037037208036'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('-0.000000000000424', '3.34', '-1.269461077844311377245508982035928143712574850299401197604790419161676646706586826347306e-13'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('-2.066599', '-9.6', '0.2152707291666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('425561826519', '-79795578713362.785801', '-0.0053331504499476015817508373855477129269136193267837599742419662810065857350796356860281621'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('-14', '8.0553176', '-1.738'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-140.3861908135416725', '293950969537344578630', '-4.77e-19'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('-267236083264', '0.060922691', '-4386478648226.48756602035192437576337525865362710258481523739652275044777651'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('24989737425588.62175', '1827822896000508', '0.0136718592814813259924746054206314214484193217141450026920820529751326751719870307396634288513608'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('21446276399.799358210142', '-0.0000000210072221265056367', '-1020900158557363445.99546688234348152913192810846078726356781'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1748.969178739', '-2207390888.747795', '7.923241813012793132648873360471548592079799470743165609540929876762878230566521879007e-7'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('1887616762070.549', '0.056', '33707442179831.2321428571428571428571428571428571428571428571428571428571428571428571428571428571'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-0.0005749256442', '687007.3852166546834', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('0.0000000000000000046995089597839284719', '0.00000018312', '2.5663548273175668806793359545653123634775011e-11'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-9959.1697726779267095204465', '6143.24618', '-1.62115752500706828413645739653558861611500648017332100469397109526221200531'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-5289707829.72', '-0.000003040633883722975865559', '1739672723518834.3150238413181745523044517377463696'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('728675880125731956239091835787', '-306184298095375170.5', '-2379860380360.6949390200137058611643432190458095828381998338996234775199077352612506687236762070249610395377'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('0.0000000000007281192369822181091925810616', '-1370285311893397378.91', '-5.31363235570361877202435312121036820107e-31'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('1', '24770215340909710.0476889854', '4.037106606612464094e-17'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('0.000000000000000212873933075169748138', '9858498.115', '2.1592937442598450822749891046664768774467630965307538632115465998e-23'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-1637.6', '-369935221702679655391147.04', '4.426720960666335798413e-21'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('-4468679873.88672609693', '539.53', '-8282541.978920034283413341241450892'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-179.2', '0.0000007655816638410681', '-234070391.78670983961863301569260757607010287281281593333929'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-219680.333923311818378846', '-166364130', '0.00132047896336375'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('-0.0001871978372671329473471531', '-3', '0.0000623992790890443157823843666666666666666666666666666666666666666666666666666666666666666'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); + T('-401320638224', '644367549.141339409', '-622.813235642895395647640582425328355316646002650582340426262307784707012517064871019261165052'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('4873861628995229209.679696263', '11.3', '431315188406657452.18404391707964601769911504424778761061946902654867256637168141592920353982300884955752'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('209442.3', '158149615372619.95680722', '1.32433012566314603912819065693378117517811e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-0.0000047763583896869', '0.000000000000031', '-154076077.086674193548387096774193548'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-0.00000007062563491432162547958465462', '1678294912481632682476209.39', '-4.20817785891337228664197163e-32'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('0.00000000000000002858071968937038', '-2.88', '-9.92386100325360416666666666666666666666666666666666666666666666666666666666666667e-18'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-15537801.13', '9673381.312387317833325771976', '-1.6062430114383020650447665999331371841520357527309569579958513422263988998184828601088618924812317'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('164420550135149389227725890786', '-15391746.8', '-1.0682384025128933983485610014452680575540652734750028502287992419417e+22'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('1609313.77506384424142919639', '0.0000000000053685372834216378966', '299767644351376825.93162778894'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-89.457432402492322024345', '-5.06', '17.67933446689571581508794466403162055335968379'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); + T('-0.000000028628393568561339370307241016', '-0.0000000000000379', '755366.58492246278022'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('111763009.2499833', '-1601833.0823050590361736215681', '-69.77194470797'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-3', '-1152346002.8380362303171', '2.603e-9'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('-0.576489682551979324775037271601', '5459327', '-1.0559720686303995433412163653157248137e-7'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('0.00000344431255', '-283415783536.257346006', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('12276870.853890295703', '-25421.870298715077667', '-482.9255562094'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-1.06344616778', '-908115415.12', '1.1710473691711028996236867667808035039095813383267480812456e-9'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('23.2378944663779563', '-0.0066688655545191427302132980', '-3484.5348547521468539685861979249'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-4633127441615.055', '0.000000000000000000330562768231669865040542542505', '-1.401587803248307270887186423812142740668131751793115327680250246636587862964172169120846474218246693691205e+31'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-388346637546565.620781165398457', '401421569938655130.99', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-0.0000000000020', '100.0680659261421', '-1.99863960744095248390643549023035102721e-14'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('4332077715.94645857919', '-18136684.20002200638019792766', '-238.8572061006169030996048913019246422521488028407800616438387217410426'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-1.033', '149230209.393876280357', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('483.01441958764904654509', '-34.074616461', '-14.1751975444971405850005232726543058124665299369164'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('0.0000000000000403', '0.0096466', '4.1776377169158045321667737855824850206290299e-12'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-2.418', '-252533196343121', '9.574978795e-15'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-184519506518001195547.617786', '7944.825953', '-23225116271845558.395408411787016525470762568887706381199814812356028461886180730534626477046501'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('-2.6', '18838675108065593678670.65917', '0'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); + T('-2741783705391098549.43113406124', '0.000259901002941710438610', '-1.0549338688031207307464801041e+22'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('682.9', '281397927443588576240', '2e-18'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-850018004663.26329901717460497', '-2267827508109509.016187085', '0.000375'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('0.0000000444531854698111342391368331682', '4.344829467704764', '1.0231284288654566289500698235746505516089188728211808317481780953622470478425618084e-8'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-1.4712311051264', '0.000000000017313', '-84978403807.913128862704326228845377'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('0.51697085407', '-1117.24070346677865353580050330', '-0.0004627211060838083923081019471245413295285971182727067902125212404'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('0.0000000000000000000250264', '4160.2267', '6.0156337153453680781387e-24'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('3169656920942359', '-0.0033438053832729141674557', '-947919079500943088.70924699289'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('39', '219292934629915523529759119729', '1.7784430704900464425561021192412728476325490159712828579054247923564e-28'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('134805.132733741256', '96353.06742654718840121401', '1.39907463596327352679301491137258398946955291434938512429695494829240923996386862656333'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-1010315990560397955586700120', '5820.541', '-1.7357767784135494545725219013146716087044142460297075478035460964882817593759755321713222190170982388e+23'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-214138675511540759696445678551', '23110893.120537394364820827', '-9.265703164074059939660599846596097069029593680212763791197148166552525577946368777388857952201748274782919e+21'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('-2.28881', '-0.0119610613466593161348', '191.3550924675473610818148277270442402773776'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-0.0161582566012842558193575308452', '-8.23472647543961990370020', '0.00196220926699591798771447904701588328'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-179000423547519.2023', '-513.817074', '348373833033.6589832746585606845754604098656324526887948453032528070486034490944144841710729137817635075319'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('226948030083297747864723826069', '111940411.24367524', '2.0274003602619475687096e+21'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('556603251322736.618248', '3399677831.62463', '163722.352202046266598735202475258318227942521970482638506688967937552453909908915341059'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-0.000000063249491783918312083725', '0.0000000002279936166021383', '-277.4178186501257928732090476304116713303274593662213996987721312414328162894997658'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-0.000000000001036022', '4609298841620961439.36555', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-99.76442277', '-150.6295233', '0.662316527227567744682625573973385866779809426642'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('9356790068617', '-10.9549716416570764', '-854113581913.541908584220019292914535890315334066826070885177252273694217'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('53359751342466.32896', '-2511127.77', '-21249317.529735386168741226576455725309429396338522432094325491052173'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('-1.2937049565170074827034', '31844.056894911021375', '-0.000040626260679861856889123161868912398713347049981238434464715739281931810450534141335814528867102'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-0.00000000000449280401429153396355299', '-0.00000000000044269813', '10.14868532264081161479717567363567'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('357856299251.255875863839110', '-41.81', '-8559107851.02262319693468332934704616120545324085147093996651519'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('165.2195393', '-3306', '-0.0499756622202056866303690260133091349062310949789'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('0.0000000000004460853243656367992315561', '1774106.9664', '2.5144218066559348e-19'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-55757052.3958980146175417', '88055591318378830858', '-6.3320286152300798105944625052701644533073133076425193458944567692978853725246750721e-13'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-0.00000000000000000017501811482480412', '304243.050989991239479', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('40.5285753', '8.0', '5.0660719125'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('343914072241', '-17.29445983972872982947654', '-19885794377.397243002401340809473068975113518371'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-20930690196036875509134599645', '-0.0000000000000000123346086295836262', '1.69690752455949008439548907337338602597713354108285134991008814289369090897467648957705439201566775045786379691526479255661937282585766e+45'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-3.1249', '8', '-0.3906125'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-6401747968.386', '-0.0000000000000000205542332869117827903841838', '3.1145642257852591903963836968051918026316129813344744834582282680135500872934734806400478973820414088979144e+26'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-59270232988727537945508164.513', '-1744971.2', '33966310153845254262.9403651550237619967596026799754632053526155618'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('0', '-1916860348382691.3', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('0.00000000000359530750316701120586642522', '15933168241950.7994941', '2.2564925246322603057614614761000621705069850864008968471755048e-25'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-286654.36656907', '-4.9195037345256', '58268.960049221874337564835121675287798459768123662033157876089818660624923780569193'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('3967522531561598762', '-2.603298589257357', '-1524036677134839892.498635318772582298767052624610095249311495599985876774458020002005927160414468'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('1285.2887756282824121', '0.00000000002859924093606470276', '44941359755023.62480204313935956776874801357605356836723534864865307'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-525236154.822171572778825', '-22.4', '23448042.62598980235619754464285714286'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-0.0006790321081124', '-37401.9', '1.8155016405915207516195701287e-8'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-674534675.7886', '75.74167566469', '-8905726.865283246111402727'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-2', '616116112.1605491183018635', '-3.24614136933791931945060578786471986907825936137392901089505558e-9'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2491734141496.31813218981475473', '-28413221701601.8197178637', '0.09'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-0.000002215891039369097', '-248.5383893034218', '9e-9'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-43263395762254640.270560', '5.5', '-7866071956773570.9582'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('2670851932.7', '0.000000000000000000067581497161355428580573', '3.9520461145203087972642466099835435695433146040211992748405392726712672155711875985311059242282e+28'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('-30251', '64.59', '-468.354234401610156370955'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-10.9', '-16.01856788583404017289157', '0.680460330641628313590394440806331853148322515656735505804471216653727'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-1440859822060.4', '0.00000000002310', '-6.2374884071878787878787878787879e+22'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-0.0000068536779319811155121801496', '2109618699981048', '-3.25e-21'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-0.0000000000000003024503216376523', '-172121734.50504768238966356', '1.757188437052280407219407663806098e-24'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('-62776449.44174200', '0.000000000076815783306459991438658086918', '-817233734261259262.239270651053433855593374339919643384216403627421848938502260263157818313916'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('0.3182941364219034896875', '-1166370.2', '-2.7289289148669e-7'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-0.0000196301560737', '3.8618108426775101', '-0.00000508314800320199522813287909164458508020625832554720190545073'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('4960786698', '-49940646.8534064974425840165', '-99.33364925291551720975367361333950760050129314565632011714845156519'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('434429870.9218843047071635', '157.49995', '2758285.770388398883346715348163602591619870355514398575999547936364424242674362753765953576493198886729806'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('257045.6411120298008987345', '-0.000000000029005991404382415113743', '-8861811945279472.9262243'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-12237.76553742096579866570204', '1168.658674994713016767363726', '-10.471633676510662234490086039663251446847408070052'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-0.617857977787326595470565960803', '0.0001000334366187952019963329124333', '-6176.51456024492671160985799354725620484043082324296'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-1700.567', '-551439.92', '0.003083866325818413726739261096657637698772334074036569568630432123956496'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-164.3', '-9', '18.255555556'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-0.000000000000000034044058622', '220768334120836848545819009.7', '-1.542071636205131317651186500274991513e-43'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('2', '-0.000000000016652759804630464', '-120100213026'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-0.000000002541892', '-9045137640110758211.42226', '2.81023031504568060023693859241363201800114987035634458167242259869e-28'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('-122704155075.94535066173086314', '297930944.5700352', '-411.85434850692741315153485298486551223024886855233016737260686347412'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-0.000000078354399312162277905', '227793.9800316789', '-3.439704565558127225698153407872459000046222286398594593287353606705099291160152e-13'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('13026606.4', '82714.884182636809176406303', '157.4880570616152199992784118588164179365063681591'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('-1285910115249173', '1617.307272371111698558', '-795093262249.3671622683559000592943810834076119341107228166013329322926295571433128608008075796230056665620344393'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('331.6', '-28353.5364332930309060087', '-0.011695190149565670153895216856810268914825899885062520249777120581'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-105.9185366619230190858937495507', '-59433131284249066.41118418', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-0.00000000000073014656012387866406506', '-41.684601938810999358984', '1.751597775110492449719062255076518e-14'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('0.0000000000000000022300089630621', '-419.1360828229', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('1130760492380.9356450677', '-229824210.05546399356665486097', '-4920.11042747866585496276384081135570263713611480062010574772859033361792653'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-6.2611', '9157537', '-6.83710041247990589609411351545726760372357763883455e-7'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-19.04877', '200438675451598.0641778', '-9.5035401511620432778216303144836011206859589559490268245486790460075227481e-14'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('0.0000000134636658966203491923', '457.245', '2.9445189989218797783026604992946889e-11'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('3952117806001695548132', '105103967647.0759963457', '37601984915.282538236635442731746402464993193389008265715020195723349787877331156219110117874945153473094823'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-555.10', '-0.000000000000000538447959', '1030925998922766833.2567679024297313753955561005292992483977453427397985549798'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-0.00000000000000002066326455046243', '-397327.6', '5.20056108623272835816e-23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-1775.59', '10.507470', '-168.9835897699446203510454943'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('159489624838596149.7403499', '3176277939036815595', '0.0502127420520889'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('0.000036052516423310979994119280567', '-358332155519058774683271', '-1.006120044434400151705042743428452514742291605495317647674204486e-28'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('46758', '-0.000000005103526281844419083580283411', '-9161900501294.49237862035133479136014813799931538266394606991141604284156389978703764576062167309479'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-0.000000000000000001097284289107548509079464', '-161.15853', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('22277707083244.2519652', '-0.000000634651864129688541271613', '-35102247928939971782.61068893072514165936361175429836333320824549127627620588515332608195'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('8435.925', '256954063266056432.856652', '3.28304790855369344579195264342821100926493e-14'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-158618479554019427.7963038', '15884869.8362750', '-9985507038.3891443654601'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('8263779425.6987122562225390', '529225363240624053', '1.5614858999e-8'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-30.102314488', '-2903263.197983', '0.000010368441451989'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('0.017525494377364', '-8', '-0.0021906867971705'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('19.79023', '-2827056513675068250', '-7.001e-18'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-0.00000000000000227368298735978', '0.000000927130760915485605', '-2.45238652756452114275525189681918961497198801e-9'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('17662001639199304074239945', '8.80894832', '2.0050068404986742020345903221282605959e+24'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('7', '1.181856080838791289', '5.922887'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('22.441720084515', '-1381983133.2014379', '-1.6238780015012e-8'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('0.0000000864273040060855342975053506395', '879056.4149', '9.8318267793901897726206275865e-14'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('0.0000000000000001344423906812106089491', '0.0000000002227485960538881686', '6.03561113e-7'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('1411.393', '-1271776.5', '-0.001109780688666601403627131024987487974498663876868301938272959124500256137772635364783042'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-155277765869632648881792.431913', '-1', '1.55277765869632648881792431913e+23'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-152686469974611487615994311687', '-1933.794345', '7.895693271075911002107843669746588280565068e+25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('758726', '14635', '51.84325247693884523402801503245644004099760847283908438674411'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-3.0192872066759212', '6136438.214992262', '-4.9e-7'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('0.0000000000000000000504744446657', '-29.75477709062572163044393565', '-1.696347598638271587024025181442e-21'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-1288750759514799390.105312', '5', '-257750151902959878.0210624'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('439817986945.4458085', '-2407', '-182724547.962378815330286663896967179061071873701703365184877440797673452430411300374'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-0.000000000000000000685343541036523881', '0.150414815775863514565983011', '-4.5563566162110628738965304458260327549194937340930838731e-18'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-297981142584715048.58464547696', '140960611730478162479362', '-0.00000211393196245817856906'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-3612.15791360', '28.5', '-126.742382933333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-0.01222472', '5', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('7536867975772246', '-0.00000000000000114381534851634', '-6.589234866928853684878125702812328913259067484491e+30'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('325.4476805', '74513.6119692044311954954', '0.0043676272280895947550504036961048974'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('235.005', '342491671689116749', '6.8616267029499181999423386276736744860589500446065169360201815384769794878163e-16'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('0.00000000000000000217276284142833543', '-79911278782135', '-2.71896892972019267609882426457309422367294575576129030645265373133756e-32'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-0.000000001945777094292394', '0.064410386141132194563', '-3.02090580551546972718801107566976993411551848363338412612882804877260800482475969e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-192.89072453322062982', '-334338882933096761058.872337286', '5.769317730591904683898446209699667225e-19'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('531.7', '0.0000000001088942', '4882721026464.21939827832887334678981984348110367677984686053'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('1170194087', '1908311.7851705051264004435508', '613.20906577928234653196650443134207034891718661419179868075798779120233331273647204376813041396405'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('0.00000000000000395459875', '-0.167', '-2.3680232035928143712574850299401197604790419e-14'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('0.000003889986089150080', '887.03227284813628', '4.38539409243801241101366379951623694240025e-9'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('0.0000000000000560044015241818176716657397', '176547271136065.503677462929', '3.1722043146744001433625334e-28'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('66952.0131463229', '3777.04679928', '17.726021599490277841310571011654822791285369408112'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('0.0000062074425828486761101', '950092578565480052', '6.533513389001660656215172227181728690216460407720924304900769914841550077e-24'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-5302963245', '48600562889', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('98828421.68031429338289345112', '1.57717162', '62661805.7458542738569525180271757616333471686486471269372701494591'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-22117311927.3540903162740', '-0.000000000000000116033960992561', '1.906106775823333579624070391760766140219141009217898e+26'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('1631.55664890810', '0.58', '2813.028705013965517241379310344827586206896551724137931034482758620689655172414'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('38924.47442500084940314073618', '-248176004575545850537.387772064', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('-1.7', '-49465', '0.00003436773'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-35869043124810001695165403', '-0.000000000000000000294761423155287080103', '1.216883903627828763511390880008878233917053875596703451124430601838e+44'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('38369826032107.3366', '-0.000000148589149580774368496', '-258227644080089183909.2257764243564993353523357572867146099830505925874631318'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('504879645444545886653820', '-0.0000000000655042437033101618837230', '-7.70758682034874828339733688726527971016278336825669005531564758824777324938304919355876842577550332162114596886482492042805561365e+33'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('36.77626', '373337972354453.09678819426', '9.850661524749490301351472673809888625949320411140152909393418231e-14'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('743.0', '0.000000000003863741140306753299573774', '192300667415056.46927480046001044'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-1.8', '40881', '-0.0000440302340940779335143465179423203933367579070962060614955602847288471'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-0.00000076973840830008', '12659447038097991.1750917', '-6.080347790733589194468242112049861504078992e-23'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('163373374216.57858619780', '14434433023287908624.8', '1.13183090706090664437052047265425181009950836e-8'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('-0.0000000000003358622556795248989092', '-25122710746307732252', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('-0.000000142077636052', '-8197817443.0', '1.733115393699308e-17'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-186.2345348677', '1350048231963.03111424433134052', '-1.379465788395623270691451262396792731080110034909682107e-10'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('39.448', '-4940066138770334.89', '-7.9853181904603542759566033849464102633606642198925134507667121e-15'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-5102.02', '-2230117688975780358.4836323519', '2.3e-15'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-0.0000000000000000001012697436141962154', '-13388043549631439', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('106760734619617567333', '0.00028100235731097821648761', '3.799282527066780329996423436016902152808e+23'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('23.7', '-0.0000000049170', '-4820012202.6'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('1.0', '1279292333.18013773', '7.81682164477717970744296838656904509907798355232108387059921801345669686529795e-10'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('597145249532385642.51', '862329.1435747784096027606207', '692479494612.6080072815557484172016013671196692425240831772477297841'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('4112111934612991443958', '10887.997707', '377673842819536464.837905388805754641035579711111708080377170123516816056581485832'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-1469277', '0.000000000000000267227074', '-5.4982340599216380298352553903277030979278693894616381572175579784254944167820360896516046873304461657953115933155785e+21'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-2801233344017', '-219534.01153', '12759905.96853008'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('-87.770012652947444054739333', '-1546591879469182.2196063', '5.675059711491028263467484661270226724199e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('217767204358757.914155177', '3.0', '72589068119585.971385059'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('27421361743819677932126.9024813', '-175867.30094046307966067', '-155920751596129398.148630935136929046113850742976778700859018743825821'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); + T('4.454340437984504303453423', '-441173094358179511112016', '-1.00965822597697e-23'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('19728713.62', '2478819.33120125077', '7.9589155093603964335778685317333'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('-1120416668960295880.350225688934', '38555924.0', '-29059520631.90849427834295162875619321170982700349'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-38743746841.2910335460252', '26858385765897939', '-0.0000014425195608919998313993014674161354104614344377991575109970896012905928399344639'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('15', '285026249585564801389', '5.262673182491216179599354884524479018951326176134286918303336507405554389e-20'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-4.2', '-458.33060', '0.00916369101255731125087436885078151011518759602784540242349081645432358214790808207001670847'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-1.6', '-50437548861791', '3.172239801708685145552089878150280259837211447999607534786786680997266549e-14'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-8.026', '-149937.06210387328634074', '0.000053529126737455704519743771206938187495268193696700988193976327724966217'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('561831.58', '-171.7371143376721672238815790', '-3271.462794555393'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('498543482.202883430', '0.0000000000000000002018825187426992473911723', '2.4694732625080864925739696523432984202460157979090892828512008635943874044826603643324923000564e+27'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-1573662164485796782591', '0.0000000000000012717', '-1.23744764054871178940866556577809231737044900526853817724306047023669104348509868679720059763e+36'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-8.755', '0.00000000000178', '-4918539325842.696629213483146067415730337078651685393258426966292134'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-130.72832', '-5.732694', '22.803994073292591580851864760268034540130695969469153595150901129556191'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('0.00000001382571888', '-2.1', '-6.583675657142857142857142857142857142857142857142e-9'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); + T('0.00000000000000117973743502524272807', '616457987975752652412292723', '1.9137353364486627983539871950537570451010962116434e-42'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-4.989', '-983417176.219033559', '5.073126767198964388356632047378424801286e-9'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('1332207.5', '7022394593146857662165215.6', '1.8970843667772513370874478944195723674667926480514644114408178277993533e-19'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('4575507719802.39', '-0.0000000000041064303129709269964750071922', '-1.114229968873401897618592082481401867013344062753280408e+24'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('149810634239754073748.905583612', '788.0', '190115018070753900.69658069'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('0', '2020', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('2023025', '809029355333.449', '0.000002500558214190128322397542547791559225908993583651'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('270046217678654471111180.3', '25440455374', '10614834275122.29841075722483645822809240726'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('-0.00000030939', '1161284757366711658.286050869', '-2.66420443424713373199316316676927976387246206522913702255534422176284e-25'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('343.67011844890596207778', '399', '0.8613286176664309827'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-122295994', '0.000000000472961570529772', '-258574906758310732.3008002674034180847656531468244458024370134308192069827746196764390903573275736191797922791483525'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-42003654.2804947407997', '60077.942232', '-699'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('0.0000000000000033763310745', '1.4059', '2.40154425954904e-15'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-1.91058737', '-313.1567413782311', '0.00610105776931811347706950267962'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-0.0000000000000000002878187632313', '0.5606618799', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('0.0000000008278370435046068492319062071', '-0.000000880731236552972862445603389339', '-0.00093994286695747890058381231279310103363840897673733064301301511'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('1324.249659895494', '68.98', '19.197588574883937373151638155987242679037402145549434618730066686'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('0.0000506866917672316080', '34045600152707123076.514', '1.48878831742965396924694051950785690106414308555e-24'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-58286144583364.7624865', '78910342.026185396114169682', '-738637.6'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('29036909800547801473341.853', '-401697350838892483423640302.35', '-0.0000722855396977550525555470543751203687329457517323'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-197.12480598', '14.24', '-13.8430341278089887640449438202'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('3217.784', '-313770600087962922083208.5', '-1.02552119258398383800794584022506253132439496e-20'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('179578022483525808217.1316', '-172287187.34609198399320350', '-1042317918411.355406728415577931041850948374861408892749402437587315539028106051384979284470940339961497'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); + T('362284144974', '0.000000000000000101112141394033338', '3.582993495926281620007214082634348044701971116e+27'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-0.00000130075283328887201', '-57041022947403161774214774.001', '2.28038132220784414222844833755234690488e-32'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('-0.00000043703', '142531697127734679769529674.807', '-3.06619516084440181062784091283950942979717606469995903981861e-33'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-0.0000000000000014831859180403', '-3', '4.9439530601343333333333333333333333333333333333333e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-0.0000514396769744008569', '-496256142383.40032', '1.03655497e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('124606777.99164957816372803', '-6874807226141.076', '-0.000018125130478981165436'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('4.0287', '142.27074604365076083956570', '0.02831713555'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-5.4555', '0.031534939666219313459', '-172.99858689262'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-0.0000000000001977206609', '0.00000000000002948016823586864811439', '-6.7069040894899784621012000948675753193250795429905038168295424558941'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-264583289.26', '42103887343.2274512581610', '-0.006284058455295080780351067255229403202650473692031'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('68569.34654', '0.0000009147865', '74956666435.2829867952795543003750055340781701522705024615033'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-528.092', '-0.000000000000000000125934369482525440823101890', '4.1933905904319285294420792769e+21'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('-311464845196635906.8534656', '-3', '103821615065545302.2844885333334'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-20.58', '23209.710350851686266', '-0.00088669783848658893879169353682363382'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-31059942.6', '145937792210.4', '-0.00021283001564954857414407763549064840923979153'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-2135283474988916964055301655', '0.000000959304232728583487099', '-2.22586683362738166737604285328971401078789622426237484217080281616869456824358411923531392778594182e+33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('-0.0000000000202466646687769', '1899.8182002211122701', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-0.0000000505666', '-246613339258.85', '2.050440586546064542650514103517e-19'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('67.455969518524277', '2534684.28', '0.000026613164428717045974656851542867500641933992662786388528'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('-3648288330493924570343774970', '-207495.1591764992289', '1.75825226235308115558193901526476978211787005652587261620298365776e+22'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('17.551331623430330226', '188465.369675', '0.00009312762155560359567156113928652977609691465987357393275439157944601314989567724678594'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000020846722863573693262', '-20892853', '-9.9779206140844877729240713e-16'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-0.43446572', '0.00000000007962205', '-5456600527.1152902996092162912158127051'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-10.50', '-0.00000000000000000094479855715193131038928500611', '11113480138720739387.7707469412891215469747989806676776721515227540795555586299113786558333471180181810564303868092'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1717147608160081', '-23.792', '-72173319105585.11264290517821116342'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-1141498.2', '3971811270', '-0.000287399909613530050736776322204252167298976419'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('1378.889588', '-98690837614052218259080', '-1.3971809555334699911941342306296379042116241440981401e-20'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('68850', '-162944125.01438491229237023858', '-0.0004225374802185831210963669732667209689539038194093814050306540589'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('0.0000000000000072', '-857292014', '-8.3985e-24'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-772283703581214.910284313805', '-200294654', '3855737.9748'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-44166299114510.2130932', '-23.0969', '1912217618576.96111136992410236871614805450082045642488818846'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('0.0000000000000000000545766837772511648200245', '-0.00000000000000000027772664176901089098696', '-0.19651223746349603529169661'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-83817.53770754852873213', '117071840981.59231820166152851', '-7.1594959987626316690706180214222462003215322671048196026166935348927411932497e-7'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-2.1737756225', '0.0000000000000637', '-34125206004709.57613814756671899529042386185243328100470957614'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-16302254329273.597977755', '0.00000000000209097618512853240461589', '-7.7964801537285311721788969888105365429241174122552680570119e+24'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('616.42204378399664939', '-1929', '-0.319555232651112830165889061689994815966822187662001036806635562467599792638672887506480041'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-403164085027123.051770367589', '0.0000000000003676264645331271', '-1.096667742729369337310582813131448517061570772281682780945568912782496495350548845889392e+27'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('25.384878', '-0.00000000000000000641206764727775', '-3958922362707320532.07205374984357008780337161157723099967'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-21801.93921883534110401563753', '4.44054734', '-4909.741423640658925'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-0.00000000024674274151002574', '0.4455045966025422799158726', '-5.538500464231073169371052615661215257e-10'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-6002483.370042742', '-5996990081.0625363', '0.00100091600768151219096018822465890558159258414202434'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-53769698495425729825076', '225204522003660778121526', '-0.23875940863457299763118464040945229796195576137308791494722967469'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('6356.1', '-0.00573345', '-1108599.5343118017947309212'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('-129723.5406013140977863527878', '-451371512', '0.000287398599939364577767931414776571012306155467'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('48743885824779243079.1456440', '3601631418.0153094243302411', '13533835133.9792893416680067539286874712504308991771184819'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('78056881416067084323940741.027', '9.11683376680', '8.561841030854396681916775851133422905837072567209770702561714717783813129336919127996576514259406623537691332e+24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('0', '-1820471614796783779972354', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-36694668.43388024741040778', '-257464458926266337808.85', '1.4252323830214176e-13'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-5954069341347.3962', '9.321320703600117351225', '-638758125664.294759063489088884443'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('2011.94', '-418.99536726455978645', '-4.8018192018090542213510612911452364444253030853395678'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-0.0000000000001898123850490243104322', '3639.666428793560713086', '-5.215103877306178645096249304317762354281760319437790004953610055678e-17'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-0.00000000000000000029503687721065987769', '14649759459802649182', '-2.01394e-38'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('0.000000000000134426715319514646459907', '199.6', '0'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-0.0000000000001398996670272781802', '-6.9293322387574', '2.018948755910217943900181183560966783531346063039409208344261738312692e-14'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('0.0000000000000130179069', '165.633', '7.8594886888482367644128887359403017514625708645e-17'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('0', '0.000000000000344409200387463', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('11233155411010241522566.1234', '-1185238162646.401378534787', '-9477551234.0311730021348245152688760415135368'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('1607.806178595786832002572046', '81678425098925663307', '1.96845883e-17'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-2.28', '43439864.0595907635669862', '-5.248635209521600255931723062834114760379154045021137331630848661939e-8'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('0.0000015905036957290081176524782630', '-5393849809.70', '-2.948735600440217273431432050205608082191239660167210309856618549962366409e-16'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-283183278838066521', '-34.359', '8241895248350258.1856282196804330743036758927791844931459'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-47979841', '-0.0000574301851987706', '835446391717.83652534656824028944749066579445307142293005536063202892'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('4.022', '-32.359458663', '-0.124'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-18266258241.5', '-181823071.895293149780143', '100.4617183677274471413567067213913250422255253290544133838475593806402907232112362916248'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-4.294441', '21734.95878115474436853992', '-0.00019758220124730519805411626206325106564714958801319453077996747414734898894280042955969'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-12379.8035452530841121266264816', '138011169506', '-8.9701461045258915408691417466380150450081644278070624815128287505e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-592.65589', '24019384020037.9', '-2.467406697463946258442231127491047101393072665268840751311919e-11'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('-575677756154979112.503', '-20.15814383824', '28558073638849544.10104929569834078336594902374325305349086770749741446260041417851975'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('-0.0000000000006772983105', '-44689405165769642955.5728273054', '0'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('2807.811361442421600', '0.0000000000000000573930684179517836', '48922482084337832483.7410205786946682942661163644554950857598026661626716747966149113609962540130406020868412662411915439'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-0.00000000001387593307458545093', '-185096365518565959', '7.4965994257697271501624147357388158152423436475615674516065064968428e-29'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('3127683043147299975', '-101931.418089856', '-30684190426843.089340772119585303722769195153224'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-1023.0079400029185485619967750', '-0.0000000000000000937329007351488106', '10914075335121916073.7406371444449996786088778769599699374737'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-0.000060138', '0.00000000000144058408110821802990', '-41745567.501854393272232648642893873814372044515900394040835'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('27193.607425610341', '3', '9064.535808536780333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('0', '-452238074986.839', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('12942446846259465021062948578', '-9.001', '-1.437889884041713700818014507e+27'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('1373987495401708455205346572.2', '-6582407504.891', '-208736316367648027.237933851858801742456479742046562383390919414034304795921282'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('14107739736320519038715652.04', '-0.000000000000000253001022262111130617270', '-5.5761591831454282262758775666003260573525562011504183580173212815054028496304605858204789245425968521880049171744069071933235e+40'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('62810.31', '56.247378876', '1116.6797681091645398363611385289398316246618197348905030246195538293939825150760150418640105024474'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('1', '93986309.331800', '1.0639847517255929198948356316332577484672270623860126340350381035515966186264452830012e-8'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('2542580644573489213065.4916205', '1388716781785.4289741376149311', '1830884942.07189905862450538321660635668802930697912458162051255803533678603266392759258349'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('0.0000000002313', '-3.7701435643206353618246158623', '-6.13504488765215829394803132e-11'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('4534637163.30685505182205', '220860649.8011970337570979', '20.531666312621153730556364204359195'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); + T('61.2684742832754584873427570', '181.5229533', '0.33752466654736527189006877512057314021234580695861783337347233'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('42931293974741.759', '-0.000000000000272131799215399781781137280', '-1.577591964574506138810245117144621230381062283384007772945375013863e+26'); + + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-0.000234165067858386', '1204524.58490781295081290690165872894736', '-1.944045566129375287285413911441354845634213911376682320674485555498202e-10'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 6 }); + T('192611801.989', '-0.0000000000000002454390450845060800610181288641730924556', '-7.847643064398439322927009591803480592172095149169993303836146619219889495421629832014651148041844658332924171063103644643774334479292843063280041167308901704195736109752589168741736653331736624025714424106113942034331698658198125461756386624763e+23'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('-5.7', '0.00000530568171612961', '-1074320.0035297325370775240385470160210725918436357220360533165'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 4 }); + T('0.0000000000000033124526299709013935', '-2763518770598702844.5257', '-1.19863583530256778728299146187175203922171872179799864636802734104900031920120940316532340914091294177225700870458187447011932777568573345799530311017003420260142628e-33'); + BigNumber.config({ DECIMAL_PLACES : 210, ROUNDING_MODE : 6 }); + T('-23.5', '-10.07', '2.333664349553128103277060575968222442899702085402184707050645481628599801390268123138033763654419066534260178748758689175769612711022840119165839126117179741807348560079443892750744786494538232373386295928500497'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('166672266184423.021626904', '18059995237353198700384386643.010', '9.22881008515979e-15'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 0 }); + T('26.913399141', '10383640753575568607140776334109', '2.591903916912039712271834490487152193455348739851838101216180411159779609836189141388848951365988108198314614508052418916462825623970036e-30'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-21926821018666568031129910213716652606395.27', '-997410.64795140439778768906113385719', '2.198374467297132899908106309536727825928127237180292788209481559738646061389e+34'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 0 }); + T('-2290.58025841712192', '1.463986746228', '-1564.6181663316704494784948944605425847639445027283195454407092997271699887795331465099660421350069670598086217307623318096530010165810037792647687934243311210272749999375891207789866701855995076048887346047635382828212525849716636783175226105111233328088230384290571625422181021168714001'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); + T('-30.67', '3.8976', '-7.8689449917898193760262725779967159277504105090311986863711001642036124794745484400656814449917898193760262725779967159277504105090311986863711001642036124794745484400656814449917898193760262725779967159277504105090311987'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 3 }); + T('-0.0000000000000000000119043120923216765732104322725575428058', '87817.89', '-1.35556799330087258680553954012759163375480781877132324632258871170783083036952948880917088761754580985719424595603469862461965323922039119819435424832001771e-25'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 1 }); + T('-8.22', '-0.00000001143117438749799522340376445810527', '719086221.708770306101496099214219738977492479461485245168128419553808427085843089054408753339121243720319996621382861685508200871235175150646512977253811584667001513248313566877602993993156224540490724218018265753103797965261216493574440524368555738508046559954931130391396783024'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 4 }); + T('24241610948142963.9', '0.0157491490160419356128650778565549717', '1539233067351809684.469265815405185606200828852801248741726233365240159848514220693363870435065715331745076363378396080222501942223998796092795555675069522002800429749707005771467749498145281587997018831928051937500760888517569868248519621828163517328159957565866970545184'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-614.6470035284084362635939', '0.0000036178254380789796882746012143141', '-169894046.589151728283103'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 3 }); + T('20836540258977175409149289779', '-0.002237832774886680', '-9.31103543249888363278621802840801374310875222451288112986092076948682617341603960643194423149016034958754457013226135750352832196422712123562772351406879972459706082586592688222073556604034175625285116660183560596895807412079857e+30'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 4 }); + T('-43040.4061516774233', '583988523334470923611250125489227.08', '-7.3700773956865342991994517695288528995346732712900162726204530185819328662358254662731547463004357865451232508161517484991367092169323944728800811313034790353095013941810415043379e-29'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 2 }); + T('21573161.6123', '21061.900868809168951109968897445394809603', '1024.27419759856354869821834876947559421500476427609702906474448069825230498699726433100734001773187870696580093168542369134548786462894687459126274774540068641498275946786115647'); + BigNumber.config({ DECIMAL_PLACES : 211, ROUNDING_MODE : 0 }); + T('94009053862245443881.3603794710', '0.0000000058168420037618034393043154461638', '1.61615278189520968504239946028963612269837658139871704937578383317407342442917699584484230849408630553645512442004196444124893032110071914199393032561462735978793767777348936013401587676832922067808678882273169183313633589728782245039913857e+28'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-6849296.8859053283860081298179335235441015607788', '-500455913.21990038402867', '0.013686114410832721185583633556349194628367603017752125936498725135912'); + BigNumber.config({ DECIMAL_PLACES : 235, ROUNDING_MODE : 1 }); + T('-627035709418.6020324', '-79702921980991091036.6376088482349836675350131382567662', '7.8671608748315171841478877977295258118465768558399546636644915160062461118171015205714945947896483476474086123189393772072219641778063008647052648244130123458715848940820725007425265231724647407032453698683129476970042023470888e-9'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-25608685328.2454', '595441.7535484623298737222706688866955389477378561', '-43007.87638023966370657370588811569991896888010198690960470207207809737643848305517837719294870598091143'); + BigNumber.config({ DECIMAL_PLACES : 228, ROUNDING_MODE : 1 }); + T('-683736.37214134972814430654521', '-18.9632336191967708878780457667913396', '36055.895627905620517070391305008251657031461496549456866381178192783516693312982413358362997877079444763779520250252809587168906447803518489617404000729918769745948542665598545897867746398147465320091110241144601165475200429977742597'); + BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 4 }); + T('-3962705340.46948881671717568477', '-359459657606734649076972256110010591102497758835649899758.172', '1.1024061411656020093273134532564541404009617872358603779079112573776128879166732595386083848338310366653955933515894109785230723539248656433759522919591615796e-47'); + BigNumber.config({ DECIMAL_PLACES : 125, ROUNDING_MODE : 1 }); + T('-0.000164649877064', '3473903189132376093687', '-4.739621920929871763491457616805555400954945279731892757240637238185763574931431523866580835795309872e-26'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 6 }); + T('-0.0003821118213706362653', '2229838191471697765551185863982841615.4264298', '-1.713630266232195448767156601693087011826009303221898043502017963648992395220864692206283954267374802605094974246895338259700194996166477912729483e-40'); + BigNumber.config({ DECIMAL_PLACES : 232, ROUNDING_MODE : 6 }); + T('-7930506936554962418131409569.90680798297410951', '418.0015772', '-1.89724330460133068084782565502406146973124615042720465601152281967992536081751415937001875982395216665704006822106316205545647400490239107164785118901699684782911866965079958554759252233749705574077436758532881440046394159873519252357500434809364159499635496e+25'); + BigNumber.config({ DECIMAL_PLACES : 219, ROUNDING_MODE : 6 }); + T('0.0000000015275164848097027132638842894347279291822', '-652956338855735114488.2661321', '-2.339385336983754852668142390338799091602532252166662910143498682538039863301188586605186506875177560545446242295832730977894808699190822303700804454042246041544737278266538281738754423609008e-30'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 3 }); + T('257220387376405932965.30430665355867', '0.00000000000000000016406907169784924477234238', '1.5677567058470642513917519149329316821430489392115044166519585435434145581978810387812842645969888020679169410610635675706382200059244588674632033474023e+39'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('322.2545022603820384336960780316577835345895449859', '-0.0000000000000000033237160910991028348796084937746467305076764358310342578860', '-96956085726870049767.8376794973510084168478956304'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-2.1739431099861472', '252818880555243846143023971950005151203557565', '0'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 4 }); + T('5241783993808', '319345904842191565498073.25140921', '1.6414126232175382253348783343337209763201724541901095776708522787278387798532468612538750123617125423681161603829617212562814785000109850683358376352827443e-11'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-75142529610880369220698783112207960140876', '-515634485899288431.1771010535585914874354906363733674', '1.457282855700169237368010601807522542876527475981835e+23'); + BigNumber.config({ DECIMAL_PLACES : 136, ROUNDING_MODE : 3 }); + T('1546541001687701840914167.67479827236702697801593033', '0.0000000001441702867692414916431619983873168', '1.07271826694989551668095805578049361509418883192619913013281004675319041509234918086639219718387074160053135894972836600663651145114640578654185091844157644929608981760012e+34'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-7176.753914176182310920719452429', '-0.00000000000000044653379635370284804768093217270703', '16072140502645001232.813062020153734'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 1 }); + T('-0.000000000000218656828763770361', '0.0000000003260312010373939723926058611814', '-0.00067066228038307178521418053555565521880888076076217429181362514336626956172410554898665120314887327156197575503374982855983523561088830701051313845455144492900357205167'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 2 }); + T('-5810648646756939273193272697961097957.80034194', '-24478238498739569.55019', '237380179421658158920.12375796015085031167264933356195283794525855874119979186210326208872542818500442797698902978871939789074410235635635930945876382718777295508207593340943442046354066831575961780380810123164244556920715935805120214654092971463513690234667664284158975269'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 2 }); + T('325211926241915776901459978759404793118112.4035036704774', '-0.0000000008207326278655673580171', '-3.9624588471360755753743696837860669218067054262782956563625649467326707278927167655841657825600770715600933189312282205341981728032955808726356404691354858853082338667465259519594006306790836025348680448013428787196609963069076886410608746960685978631049473357479085992379454902440980594e+50'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('0.000000000000000000266903165631981912924608178082737916582195572131', '1.27177919413428084884872865260', '2.0986596326075840271491140498886753236589280972359263843124503e-19'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 0 }); + T('0.000002733263268624154307668605692883605816623313483253587909081', '1044092973798.6777', '2.617835132708385505912103850840101680172114332932674597664682489428789612314285730426934494539305686765391892449118478781382131128840493296681991122777731498667469525653739242655338266773578352941651318155910710274715154617197229384276812281e-18'); + BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 1 }); + T('908663019348799717744.1808970', '-641881433449989221874535429729541392318072002.28809907382762', '-1.415624400389509311988932092690069441016471703557385986131168587436857409306887868912071520245e-24'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 0 }); + T('-0.0080669144171038870851704121842', '-77365392755933.74653648391376', '1.0427032203601362086966402753152126358803721683264665208330327846582644868438176180575445802662484574780511789429261112199846252621752675842864956825e-16'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 4 }); + T('-210.222', '-84751483590963717829585.44', '2.48045215367078324007984321453334507191907907493971805185853574223617993874805730582776716265291530707193410880613287180874128627434310753e-21'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('30138507635261786122314042933625994584629942727120675.5216192', '0.00000000208', '1.448966713233739717418944371808942047337978015726955553924e+61'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 1 }); + T('-14306357.4100655733182294966533250184311675581143995250456', '-1091634677512190221842949349302602728012476.2', '1.310544425234770452356115506554350533770693679532872980612370322113200883840809144450213582072732311231280550290256551885176241753552994126026377453650238647199215563886223930579543004359572521774702767282897717211825063631069801406693239209860779319628294e-35'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('76684144324315387882960167710055593944236701.8471372220', '2266090205881393', '3.38398463244269590810638171240493548569128865819965019e+28'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 5 }); + T('-0.04843932063182036616659520596475092794485564179', '10.340742542805263737224972424575915219077686422776182', '-0.00468431743961392740753757571807431903633407477744153557783732352088948922422789465931798496333358351351865086588931339688903854612526220276043883912142183126008440495581452352758369339083424842302676893117238965038958934140337300248958747965388'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 2 }); + T('0.00000060307', '152.93098368558551048631549070741954585813298026941772775', '3.94341280927000460134587922109853030326794149496030704765025321005503089676360613394235850297313616216249766082799779335877038117516291147657452783234674856388582374268910957705678321205113483390765273192764274548078401703015070147492892125e-9'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('17080782645769555714704457227966901164193270.29845561', '-30391154887848.2554644606520118486138121046860', '-5.62031377511067124177509277508491860108479228022084079991223459422496469426745707223249134974052e+29'); + BigNumber.config({ DECIMAL_PLACES : 246, ROUNDING_MODE : 1 }); + T('28772803908025649575183335244667919055.42290869956032', '-91299828074098850296945769.926537043678002664491412842', '-315146309855.848472568206087238799259664730242817457910334121842973021426810651869987856447606513193000621752927940568965272478460622274562101627248343964588180029900543217655644308185874787148004793034785861252751127096314210516710913919686482871664537233545'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 4 }); + T('6951759681668432032711749392750783.9175356237927532111656318', '2.7064', '2.56863718654612475344064047914232335114381606294457994591775051729234407330771504581732190363582618977239136860774460537984037836240023647650014779781259237363287023352054389595033993496896245935560153709725e+33'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 0 }); + T('3610.4019733373874707786743105929447', '634750877775355682588872001419455991096038.24825615001121', '5.687903868665688955305694340347322964961954295167397589705336952253660328941e-39'); + BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 5 }); + T('-0.000000000363816408313404776598470', '-0.000000000176054995898169309', '2.06649295271255569435711935566071788588382725518115529717617541560570250053194099172053838652853511065500135841507304305'); + BigNumber.config({ DECIMAL_PLACES : 121, ROUNDING_MODE : 6 }); + T('-0.026120257089245975337460', '-10313527642984828336594593633', '2.532621038448735499393356786871240840301703234531308009570150881137642734676636913392599603e-30'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 1 }); + T('0.000000000000000004410941969151600946547', '-44281616230979038183093822629266520089022454962.502', '-9.961113311997279471841231246847650178644604097067120465778325734554891728411328577767291415744156156277994614481535402329799780287979095306881233592159622160728e-65'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 4 }); + T('7764427107488', '-0.000002674812529667537596160439177377599760935488475327567527', '-2902793007498387014.48044362598228935011502311864234520569237714021083485607508423178277747936902105982430826830844683987813637898007482287809417852492708407047036731916276421684209217493488238977913'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 6 }); + T('-949447181444969388947439985.4511355136104554015685159026817', '-0.0000000087299690851609182780383315644678700719613188423859', '1.08757221495643860477671732382164515257232863364500426357541158900924919270988871484356865061458205925354004879341062811806591159958603279828617300998726180176412434026219829669010640818680113933753274951752231792693043029144284250664616486783003321188472316319944387399318528080581818469403693776006031621264708604e+35'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 5 }); + T('-91.31506127828229385505713468471614752441511702771161', '0.0000000000000000643558902746', '-1418907591654008190.809986241947612339532570656579649628079546598288929018149855306422609225920914256055148103573058048903344507723249545289416009374221439962042209134598392962000545600948882502898132007873295678732638249894727'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 6 }); + T('-31554080359351593984257.861', '-127382663623337.76088376', '247710947.9564264278154194854190110992765619566919008461755829484956933768480404139937995269294075970417035512431438477815271307323909693632471528470640493162729'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('22249838871724078527587945.8699503896079838447', '-1', '-2.22498388717240785275879458699503896e+25'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 4 }); + T('-0.000000000000000002083153505440341144129691078388694364097599389078397', '-0.0000000009199547951874264021633564793246', '2.26440855174403563628185648551914266444661412168807984323558197598569789345264827294479692906361062627706137896503756850114672223307908523118328975263282917110735263650615651466791390217654489925e-9'); + BigNumber.config({ DECIMAL_PLACES : 136, ROUNDING_MODE : 0 }); + T('-56991751624054885329.62124419640377577', '-547769428347', '104043323.1114019970642917136571093031701343357920358152594152664266303349626866612350401719597995898558061592295276156729103132084620854683106856'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-16614759121.808030790648153770665168859226024', '1675576781526404464609628471598.39243996226', '0'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 1 }); + T('140402.4955689790129', '38.703291658309349631849805526276280190792023748255', '3627.662908067807546554546567961344417536160876701687058333923486712232113900805891416673641596804432716825638493586794139628279751075644857258429655105395158227092111389062025685612980085941185691260575152773802143033318615394798093094354365408066689272476511042593884457576686'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 4 }); + T('-986.12927285246', '-51.783879974', '19.0431708351630360976087334231777740293431493500085718393489029370350672132507596484566191420934873496236796294564190702949816782301659055672211805053570858950562266341'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 0 }); + T('149685729436965196651800746', '81423776671944924604623.491184348956444', '1838.35404786057237833730572985586976512927556979841747586628317036871206199519163472936169401588761008566621870655257071544945149431089940802700420277249461116644979830629799'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-37697.828268964546789359723810362357506482061', '-21492050362000369841372301770.5436241360851355099', '1.754035917189e-24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('0.000053833706439646507', '-78551781135060843503.44066130522950432032755093324776531', '-6.853276356278360952234275200210729467471495476e-25'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('224744814544284254509320.087848915106225733819572573252946', '-727138623660756550283107964299965058655317004.4840', '-3.0908111222701050915917924293370185043817249357785579219388e-22'); + BigNumber.config({ DECIMAL_PLACES : 235, ROUNDING_MODE : 2 }); + T('-4444316.9857612757250520327859862653954', '20.2519150375403', '-219451.6902486996137209135371652041269261246412477636376691576432553919629279309682119736861443495210223465620888100387157187112231265470485365204146780421840039271841619606011779503540084673634772777110141905861847623366702934736145288933154'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('3770218975.3218768507381318', '66962532857490959877.3891482868472841860', '5.6303410495920484909689619060175443155610217965552026349425613453086915225114328348006e-11'); + BigNumber.config({ DECIMAL_PLACES : 219, ROUNDING_MODE : 5 }); + T('-351929.5059950121636449931652370344666', '-276462171730092.517889', '1.272975263822342073956025578954950406569335984729242556842303201573247612431654327770275210319881617825675660071574970977428110702557606956220740902965628098423393898616593144593990463991101529498881408398990921e-9'); + BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 1 }); + T('549939013280743366287306914133384653.017995023107953111296495', '19454772164114976.71', '28267563795741877226.86698851440815891895636313236931269723451909766146922098278835311088950918299696100520338231824401344966458227376657628415894512404547218693229974942152291874445664115324897642232541679844539417280713292980188428338762828563214947989'); + BigNumber.config({ DECIMAL_PLACES : 241, ROUNDING_MODE : 5 }); + T('-668745550681598621582583804095646066462058725641678', '264052064036248991010193468628.12521', '-2.5326276207020802750763062481677002457979951538003828919438534461902054246662026822485046205122269607140121802803694532951581193979232264393931985037548447141995015356574024903195198993082048425773154088271988091290194429231627039216720085750865651055700094296303e+21'); + BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 6 }); + T('3.1', '-5', '-0.62'); + BigNumber.config({ DECIMAL_PLACES : 189, ROUNDING_MODE : 0 }); + T('20342930567112406829.97018880374399188', '0.000000006985017039911170320744871420071412777362156740513', '2.912366634308326816045839714298380349234973210350490510671740572530490331524590455483756080914170139344030457945871593218168395195499092382973594397599643614827558651878878102219386989797993508395998223437229245867183e+27'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0.000000000001449391616416383972624544', '-0.000000000299724653755519105602388608', '-0.00483574373430966051216532582069414619370642995455351178141233982286869194424'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 6 }); + T('-337166591187627222959837068482769092090', '1877117704.6', '-1.79619312289995660062156481821491148749564673409665521941185999722097554819472027689275250363540788266879788077408771354039041756103204355233164103629434170965732630168917964612968788680829e+29'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-34702909066749522432986714.2008702247872646843785756642799', '0.000000000000000002476390358299324799927908723567', '-1.401350516102878995475924693766672419938287537375658992107442e+43'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); + T('0.004203823399985374880939201911558602258469876', '-30.354546075933444352361954089987421635', '0'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('57882568444730850.7347', '-0.0000000004105', '-1.4100503884221888120511571254567600487210718635809987819732034104750305e+26'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 4 }); + T('-2147795585616616533438839.9846434489206669901264000913210', '-1360.3', '1.57891317034228959305950156924461436496874963346327377857825479673601411453355877379989708152613394104241711387194001323237521135e+21'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 1 }); + T('103627772268366529324849553.630410311675420', '23163260891816538861.1714438292', '4473798.95051726888675417899776060051418635468232666481643123719508837226240037600651036011666235453789349428245744797512274093342265025892420939793796451741911612407280333125108585633089776466439735159421068'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('5454769299322608063.4712765672977063238418334999673878', '-376136926482592751624136211305629379190205580', '-2e-26'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('-1027724122236.10082713', '143443274247031991054938501287842443698218355835615202.0', '-1e-37'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-850958478098791039473018.18287396540791729793560758', '-0.0000000000294335687278052873765373825673731895145979468189', '2.891115535354393014802897394422773469737491210520764281227329747930525482187006474623770632071954e+34'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 0 }); + T('1270015001392174006045494316793364072', '7244.786910421467967425356095521101366', '1.75300532244127860350274767414151687963769159401375631795501517657512699951316107370467267239694969494659495421930581375096445217375189104254341619304896714346222864122963749845625721311943952192783734751629518718251020941630851902816827880523985175337987749257873289347276073462960933124079628573486117935680973926155860608261302e+32'); + BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 5 }); + T('-71602452.01483867658875', '-204.3604674729832323', '350373.3031159983558332612139533746082803334770360528071683743002604007218606763845430242306823591323787537781369106490198367441111141615859452576939703204194061350807276956509743788893939336535650658526095790076187579422308402846'); + BigNumber.config({ DECIMAL_PLACES : 278, ROUNDING_MODE : 1 }); + T('-0.000000028223094479', '44442.6649632592195277755793855916583481386708090888813', '-6.3504505191873734040293686726261847082563756408010544180415038483180629900335422410917627289350523968843082802464361107894529456257096178315042158275071578510067665554807050790481842872664581598644850687546663501005684722624857486578461689543722634285457239998977454e-13'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 6 }); + T('22.932422979358020304934246680478393429274710574067352', '211528565242.8951314', '1.0841288954532007179914467620847195221131227334939910738942036362608534600140751399402561684032513047400087366354238496242374175366197555523816850138815579616863006415208737415577091287955865463287026132353216274439491147719937e-10'); + BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 3 }); + T('0.000000000000000000808861271796', '0.0000000000000002679641107827668794626832088949645890066167811339902631', '0.0030185433020608031386101726748810352426529971414538892155683393442431073375499473507563602926171081826945329533733266404736778310882502600600685074990615871410736608696660670790575419978126642171769308295379298142227632588981084'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('34684755663550714671859686849007985608014800679606734064', '-0.0000666', '-5.207921270803410611390343370721919760963183285226236345945945945945945945945945946e+59'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 4 }); + T('-29.6097767887', '2094582945535170617847874112711091.58882529775', '-1.41363591505490062792816445132674890986294627193018559601346859488478309774451032472350323078040857248897695981445555510153685791864888680668348296370546210066543024500299864776522416838451494736e-32'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 5 }); + T('1.4444510910796779246174450728118494735671683', '262235276726.38967568', '5.508225701406242704740928579676368041933489827888814179939945412735538638082118086482847357089601920684152776356195423025587276479703111706351683153933834126084099810335412350723212046189771921914664119815965741278637066001067046048595513468695491036725396293e-12'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 3 }); + T('-0.00000000000632108402301087993380876330535946', '-64124.8518411459466328954009498516942', '9.857463746925857474093435057949453930888381653926164585350740530687752923195898813625957483576990128568102184082793484480444615473947850719426160713252372817129639905393786206342314723564266188565326489109034609279197392400942897133904576331705585105516875252553383544e-17'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('1', '430.3690512916', '0.0023235871561834077'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 2 }); + T('51115228', '-0.000000000000020253678863189062141', '-2.52375029471320468452379354492250112591088396867805999149948845707047018620942327709496959652950081376780178518069046553886384629435879895397024244047202682824108000458935202729939953229898730997812379045044925145332609247011673660831835374681867511305919185514152249981476275854909356323300376589593255397705335919512748e+21'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('1.4', '6057838961461570426274062781546871991467.65553959654117451', '2.311055161595e-40'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-9077507600', '-12267607209122962079724648348196154806.524301614311075471843', '7.3995747053666635623000906764e-28'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('0.002073877082125619602089562316586690187407497037509383905990', '10633634779540158412389732344427869352.377', '1.950299333315359996089935757578413452760215224571366603621559706707847050361e-40'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('5367709', '-18586319825801360904165418695477252328221555063372161957', '-2.8879891502504949714183315537275737326779496065e-49'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-91.9734981219', '0.0000002322757882297997924962159870628768', '-395966789'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 3 }); + T('0.000000000126261840434056685735897262', '-0.000000019159544606721739674552784487846678207101863042952993998084', '-0.006590023042080043301119526658635347940335423555323218493451122296099211559573316389866508318190663996710505127584468842873729713209918897576245622076744976802695017280162222731403812710641030237'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('-263887360808456263598577582.8894537172011', '74341394.946129048025057557719190951340586', '-3549669211879603863.213429'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 0 }); + T('-2.7414', '1431230849.8622486', '-1.91541427454826801553292977629351884274023231927529150053285840617989892507770478032104250846459608874453059872143150933108757431721820200060727550071077146667751730240784102503863e-9'); + BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 5 }); + T('1011.92816323719278', '-0.000000000000000000202610738884873374231320069425', '-4.994444859174944148565299552059198843558160599738484673372988382621408239073949798611033087706247696171294424632116435229609045693850516224691123681244991919716534719254809180362698236002868339079180080222210782161265799844738989224004396499668298282412352415373360472001693376e+21'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 2 }); + T('-19.62153319462348612851185393518760625231449464', '-0.000000000000053808916279383213645', '364652079085663.35756008412905828833458471774827626259895868550544676671991313042463137534185715416559846302573541706726315'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 2 }); + T('-165725671739.434332748624577701', '-3251752.1884296', '50965.03735097655993416834368968871730975513286676358343713932623804386456774373231595632668090178649797054969198404729491140832350108315948457960249873278558905497853729497704896387936550997637848807504140642188512669070529724318'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 0 }); + T('198266.613', '-40617536098125762.20194464201317602507808', '-4.8813057621471216655921566922081782639250781079457575845537506873802592773421869580307285814698298630452650551148723605635695891125082696845276826375632529610828652601658572550796048466889731769714167027006e-12'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 4 }); + T('1388.6813321798612', '-185.0005', '-7.506365291876839251785805984308150518512112129426677225196688657598222707506195929200191350834186934629906405658363085505174310339701784589771378996272983045991767589817324818041032321534266123605071337645033391801643779341136915846173388720571025483714908878624652365804416744819608595652444182583'); + BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 4 }); + T('-0.000000000000000000015108', '-0.0000001591494936792421404307498927052532604689860195', '9.49296139794790663286235028441599299498331791538678505083552263244627476095132113673992955756042696507729772777733009467225611013e-14'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 2 }); + T('0.0000000000000000036200351239008445', '-58.5975', '-6.17779789905856819830197534024489099364307350996202909680447118051111395537352276120994922991595204573573957933358931695038184222876402576901744954989547335637185886769913392209565254490379282392593540680063142625538632194206237467468748666751994539016e-20'); + BigNumber.config({ DECIMAL_PLACES : 172, ROUNDING_MODE : 6 }); + T('-2.180767', '0.00000000002569342879705165885431', '-84876449041.7193647198135647191422770030303975642686499653379083777932335591803594382779918172540108479096855867315665842323009409099957124145081698832340654265420377829107561623621977'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 1 }); + T('-0.072124536092138090734611783846252231194', '656.25986', '-0.000109902403740094801371230877729215727431508610019207939976703740496942781172080218345214653232029153817208933058925773701899122704228779130267086577563954620049442000002864718863043063459648438653554096695781454620735145983178066078885275719895469456260817170807917461232'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('-359307131619962159.19811825025530774965183285227', '-0.0000000000001461710786257598150256945960423069796062905997254188', '2.4581273874286185392379195369668629096e+30'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('174118688647237.406843877809', '0.000000000000253643104418361464406558253852', '6.864712094047086981098558601064023441640546559713514386841420553566197892333893859635234323e+26'); + BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 4 }); + T('0', '0.0000000000141457985934319753277947917846270747776464846501195787', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('1642.7', '-0.0000000000000512505158117148284471148131', '-32052360332040055.2414546189691600611749178775355592369343117212752624445003723762071938'); + BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 3 }); + T('4717885893920078056911829865657.431584853092', '-8999339354.992525959914', '-524248026195695818126.4876719700911333320623822306784212821636332903503544468818936571950512506149919440800908526182166256833'); + BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 5 }); + T('0.00000000003503722442064426025864124523736182198139487586594', '19878727.11836870836', '1.76254868895848554713860285725728352086352276476314094436383602828400970732126577837102618562806388756525919699687025446195206648968050747835508082171400742564176769002035263450773264010298662278e-18'); + BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 5 }); + T('0.0242828331634036914409326450055226589635690', '-216677733847469401154997246041713647702619699100', '-1.120688902003083822866660733697253592205440940812115823570898409147251064074265391935700656769274621358593926112214501882485711247978430299245195867597122927731729511323535787638860455222207981013e-49'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('134306821469.9623282648087157129750390912074', '-1', '-134306821469.9623282648087157129750390912074'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 5 }); + T('-30627.725787661675008', '0.000000000000146969708544787524362678564649115319', '-208394818843423010.4089388317777900109671479717897344709633071549566039697169362831836702715659548081646155264976857535498387667060364389605584951367320163312108738468348647085739553366917799839423228387714144006361370178060027375368859643159572049987231037962571765691768080406290835329230605989237887222247'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-313616926697744429484234.420233448292', '3391757405238533705084335628866954577660235820054243.3', '-9.24644333976735419251966122733765e-29'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('90.652813', '-0.0000000109693130108332206625792671951913', '-8264219729.20928448932351032056800298838836060711886882692589807063265689630957023873055'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('0.000000000000000183510738607075753108085477645181498', '-7478880.733323', '-2.453719281675704185e-23'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); + T('208837262.247982980555894', '0.0000000000000015505084559283556922', '1.34689534552033890376137781707228221016449502131156991893142804954373256141407643196422044869155513229468764868109195413956930783902721756601127419319077776546299386731640433061883851593e+23'); + BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 1 }); + T('-46546963780405368862246.0823405754260294675562804325396587', '-0.01390761958249528849584824527107421877663754534627986', '3.34686777304372947272151574726966799973557699630367511193553332579423159137704890041792941264982616096914361988359087220501492414789308720282967059908923617114516684545777751e+24'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 5 }); + T('357.65', '-394589175193614852891.0448229798749997490', '-9.0638573606209612579918310747547404124623960759310836773337953747558837695090056393077211856997603984336916293115109717363645413322567571329624970330425454916284510901420100977148267077559726593551604906469272066046920433882822e-19'); + BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 6 }); + T('0.00000000000009751487004066178233785752307', '-18597314733723089.11864836638609788284', '-5.2434919469225864161384606556852484096160052986071583726466104089126927364263831388690036653122216294440985519930810530252359509972523869092864116e-30'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 6 }); + T('49789784577.55102899631109660455', '-0.000000000000003932', '-1.266271225268337461757657594215412004069175991861648016276703967446592065106815869786368260427263479145473041709053916581892166836215666327568667344862665310274669379450661241098677517802644964394710071210579857578840284842319430315361139369277721261445e+25'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 3 }); + T('1728022199014108007177420958208674215344174555.3825', '-588666929086207208131338005', '-2935483740689377421.0605487526355056260642213116660841854997738884740435033980974641064610189576063972561434384391072350079060311182113390031009286680471380179648798212'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 4 }); + T('423.51', '-30630307383976085980532116610580803970387228670191', '-1.3826501794152894330388744522146084381354593312765345432914921858769e-47'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 2 }); + T('-9515.2288984274918378', '-3033332321591813886435672424588956243', '3.13688969411506724145895334821695451829729415971188096686401420618687400036920673795234513e-33'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-215721828203342422438819162094074636', '-0.005428307259563418376', '3.9740165375364593561423493544693129357510916395057598946136750579119773535795586342835327861e+37'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 4 }); + T('3616875638685577487650003.5374830465863587991', '-266.59599563503209006337010159389892', '-1.35668790901010118453809674370545961440962890333958991555407174854269740988256994561314847256943815969477212950797123255002975369e+22'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 3 }); + T('-2.6702493796552982903459008255862460830023039', '-8038533406414.83615210', '3.3218116348492257975518009761620462080402221973417271560475680951368245899220578500764487688888615787238245471232016170433124298884395893928040595198821754476033715560998841953037888211476285497549032225e-13'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-38009769348878296499599157.865070246477942807', '627421815071283363449416638866574420.74565186959211', '-6.058088583445235673957921677e-11'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('56.09496062544893609582738876482', '0.0000000000000000634844490420434522874046703288434900', '883601598059066000.033433829367837608177832667164620287855200554410027692412318948979964'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-98278', '-8060985.0109042125568186902873446125353045258', '0.01219181028956857122921517322141074034918957099314944442622802827495176316355977065901985959'); + BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 3 }); + T('0.0040', '-154.222', '-0.000025936636796306622920205936896162674585986435138955531636212732295003306921191529094422326256954260741009713270481'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 0 }); + T('8402.2', '-1818108861518275982673035599278649795936059734600', '-4.6213954388756712283555758268247951328207148497733913180451617583745755540637584510929140132081173249011067911403347846981153394476908518195151661691290567476714890894890343823183599e-45'); + BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 4 }); + T('-408924775021936773056316995206607551269142185634427595209.3', '0.00000000000000000700260296561489567997776997176324598358', '-5.839611027926231386989582837238996985766296906694071791989506895457746485581708323860424176115555875775665210011339561184448703037754488691130203280226485597108909122742072007197300406956640722e+73'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); + T('-111.5325', '40166.87967437225410802244092895831848011259', '-0.002776728013332867375725737559862094928478860461768509337125110725217390039627146471599824788448991006398336684462875814604512343528251673437752046881700236158997297107'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('-1226004983408597362607.9556571559', '-0.00118298758972138', '1.036363351620069758835204259e+24'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 6 }); + T('0.00000000000000539066579432940051717895566226191048158412768651483177819', '-0.00000000000000179224', '-3.00778120917366006627402337982742851492217989025734933836428156943266526804445833147346337544078918002053296433513368745257331607374012409052359059054590903004061955988037316430835156005892068026603579877694951568986296478150247734678391286881221265009150560192831317234298977815471142'); + BigNumber.config({ DECIMAL_PLACES : 180, ROUNDING_MODE : 5 }); + T('-229538918875558072593965178904262.8763359718491005', '21934297048510404981876490181210410056561.3643780285489399', '-1.0464840444528695155315795229126238724622668373401064443053985968474899338863925553178309323274657390437605690574384405208483639638747002881705976561240023669909259414276437e-8'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0', '-253886763882308779', '0'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 5 }); + T('11.2384329828122182058323746858865224', '36057265465192473215.6537524877650730204999954521672266563925', '3.1168289768565863696038150015829032837949774431034003830560742387506843565265945568298888006334501600151072193341182563e-19'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); + T('-0.0000000000006121871158656636', '134439.692127', '-4.55361884708389547947153340776111906901971984757667831727672995342666580874652288171852992657664448773630149388835e-18'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 6 }); + T('-0.0009229571213', '-0.3960', '0.00233069980126262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626'); + BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 1 }); + T('236628663455007177', '0.00372369177477415584907958633728378236083725493865108548116016', '63546791132936572895.35864769312006908180499240532216402115163458114234415359785424603118510296859771741453462910174895637657805778025144012'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 6 }); + T('-3740629012216353.578', '501782494616728147584.0', '-0.00000745468216278354512885620411365735420071928485510663217940971231491348794931265999846558280510022104165231832402831258087477102225846141448365685666099359566171953435796867970300879691046608216298552425298'); + BigNumber.config({ DECIMAL_PLACES : 150, ROUNDING_MODE : 3 }); + T('26535222657283.96445', '1120111076064339542.29594363253441930036166374799910424560363', '0.000023689813648231233705608499677191988578459331738405494616918043142138613738659280319351170209913550208565082097018930848396147939716144869294585983'); + BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 6 }); + T('0.0015642085828327875904209897987544583', '-7.514', '-0.00020817255560723816747684186834634792387543252595155709342560553633217993079584775086505190311418685121107266435986159169550173010380622837370242214532871972318339100346020761245674740484429065743944636678200692041522491349480968858131487889273356401384083044982698962'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 0 }); + T('0', '-698581.52817240', '0'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); + T('-0.000000000000027736296540198405443831794791888713237', '0.00000000000000000053738037719305', '-51613.89905056831323805406076687161356090126640792469896970230616347751342461220170936501177825308734004673469683463686798536254076025883897549171419741164939148807267477358513620410703879460253562757461926'); + BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 4 }); + T('0.00000000001256591715812221860282341150225418103068870713584401433953324', '0.000000000000000635189689452025495484496458591971647137024', '19782.93628941421154659632186676990801096388543429251957536315546607636633436282587757025682751349292510444059073957338814318659968182487504414463159517306008647606113126910535053929335226627568743034184637181963127479860158881467353258644'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('0.00000000000000890214462731853', '5317628.7311751812566116393661', '1.674081e-21'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-0.00114839266817553911910525389346394245330', '902529.7777667001809425', '-1.27241526702556441375203e-9'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('0.000000000000000000407204962527802862697923153239393848899994409151857891360', '-0.0000001191500896', '-3.4175799942310984439068617640334015233505490301524531238e-12'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 1 }); + T('-37362125087003278805530189473081575529788929952146846', '4230081926155263381', '-8.8324826183595569660794205584532649024071331692951422675632573137691333777943539759054062063076302925084987573092009924598975701971122524158676342509653258800084339052356902846798606246501695619424375970323767699300199360334578000639039190186257072208813e+33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('0.0000040147100402191120243564352917763128645330978663977', '-317962140098551', '-0.00001'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-35617266375149495309772665893021.1474316444', '13674373073710166384962483365654009.11792822484140944', '-0.0026046727102704187210169652514893325409011597372224434685'); + BigNumber.config({ DECIMAL_PLACES : 172, ROUNDING_MODE : 3 }); + T('0.000040834254840742335668405872659119523637014', '-12669415797020896379525878611452763473.1649', '-3.2230574396606477905551857041559001099754080043936904518767855372922219986808335268076538804406342315504659034253910268714992269742e-42'); + BigNumber.config({ DECIMAL_PLACES : 282, ROUNDING_MODE : 2 }); + T('-16197710652676475185849080361460961665165227', '-0.00000000000000224238120646127106715471207629877612723398685033972', '7.223442029394403679469709530740595006960638772143932059581499840317158761934844117055711250514827250660472839555739186117670761465711862291150354072577990327503978652480421676346254715392495979827657528334703698266989371917338922731478832439915670289827284025503886584662445382171647763463434670541413203731381928585592111851709081866485627e+57'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 3 }); + T('-23.039133115581792071142020710175445576681722593488817081748', '-892889380', '2.58028974603570624517250061930128965994440684169508400713064814367038389458725559038455581138169657701606888862313492853952412335781169219416631430872209500352664066852267858757598841639263309414655598210833238939408149305124448898697843175153455179408674342167671430922383688783486258e-8'); + BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 6 }); + T('0.00786213058750249776096994135', '-317.07072880132791759832851338995981473266016498281462549425', '-0.00002479614128123696585325395906241445937824603248289811541609239430304887170225714156997425675329737020495749956365141248689020227'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 4 }); + T('58179886031811957939020607545684641221498100329125196420816', '1506214361.296040', '3.862656440332329948689207721980092757948961935869703841302528169707711053114656380464518174333941329132088927761681588312403417985998137843691102127762600801611371476420924649595974385171599e+49'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 0 }); + T('-190982887244.79496383078025', '-9145156877491356.62835947986', '0.000020883500392962555571626012683706869719619160005169089488963254088407365949376153129484189510009484187082822557964960011800927780290561133548186059713335625764936293754096685594033019625465109185613222836851485410526665657804685359923926827353032489380616336899649913'); + BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 4 }); + T('278.495345646854930302888849449046998413711515', '0.000018176610655120499302149923445166183617964695613772605', '15321632.3400974935114001539888832876943670232394672292722147482367081153193388912118563920139469452193306693644528085977079956107754057270583892595961216955836048628885546197409000297526833612222358469890190521662564411673'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('-91404371703938.19963216515616591161245916846769800', '-0.000351715025147272371586528668014762', '259881907705435031.534278014758666051655316724669124608520618'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-74.8927185683704965', '-0.000000000400520067811668430938168204312', '186988679437.621507382963746866573'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-0.000000359947253971845113537233653974122267996331498573916546', '-1440950295578699316404463977083798390073028875772.4369693464', '2.497985219e-55'); + BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); + T('3.5', '-0.000000000000000016836234136656116236245888747155935409', '-207884968312465103.92546667003183155349004743814016787619209771690581251838782633379621060886575565127581880243136521306493099115438996244528606756245126860536784058895272857258163668115240455868499988697454936544728911201993827436743165'); + BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 4 }); + T('117556281049621160806398580488777450103025706.9231371026749778', '177418649499828062746944976.623253482097691805631698263957176', '662592581901797675.192119029054356542878625972660828883732257538247146459542105138622765462195773596950267492165848159684757962296110657668557838021479175937246'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-0.000000000000000229584085', '4', '-1'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 1 }); + T('-27482.41873121533', '11274.496907749405091612', '-2.43757384086252069184920908789136606410876439249909171626216444592863484859257872878818492441750312637463955391397020600252512398902369463869453693902640114539746724962640936787663540355005527658071033744852920304697987161866722393963513553644509520778179115083456065'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 5 }); + T('-45.31802249709425519435780217290298', '-3204954485815239802179679775.857745927430308955770167235009', '1.413998941253818555331446628537811274724937711349765542477044901735407723110613295737367282379598586135677189145733895798012063594572507530387122047276011072085198509115883863816026552809059911930382105544260114314246121618356211599622126271146827744578365721e-26'); + BigNumber.config({ DECIMAL_PLACES : 109, ROUNDING_MODE : 1 }); + T('-1518950338708895298633061790684963095021043', '-3', '5.063167795696317662110205968949876983403476666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666e+41'); + BigNumber.config({ DECIMAL_PLACES : 191, ROUNDING_MODE : 2 }); + T('1', '0.0000000042', '238095238.09523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809524'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('-36860680116739.4673', '-714191652805514145.216030', '0.000051611748711906638'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-11.0', '92.08198182812685918733833', '-0.11945876686854713291580457023363018642967812291603764177490126984299571425'); + BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 3 }); + T('7762759.75385296050386473141400459025886087053461265533345', '-909581896823924676194518835256205735470.48970932', '-8.534426400700081650659814565798223953012951504204402488483850831337582374822797477896402516788073305423040074e-33'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 2 }); + T('-1591271411926.40053473052278004', '-3', '530423803975.466844910174260013333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 2 }); + T('23086557378499364903404277889218381.47', '-86.0555991350', '-2.68274901465531059815847482673137529484007583511898815856172936050525354348867842554937549793633192627704781826686889407361744469481462753167316031608964057443721381163096820033545165323541617336506851338883540503282326023398965439089438744e+32'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 4 }); + T('-35624.3903', '-43.77456506898309140400458787880752', '813.81483160050904185495580524836686653849135979858614846344672066639081746900539114730668802472802032712780595218383029863019375886636883378282885915029285478620148862606386024679617164086015472306648498744131867932859587517548250068216147289920361'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 0 }); + T('-294670170227705702811369', '-0.00000000000193374334898340771556343604563781725153836596017', '1.5238328829036044414292208426172989183209184987972877669084679287326238824268223796920096163349419047354678444794286139849932979829555213486830249547979681822716113423777410307342180935614199404906965531176896651795514204856922826004012619646609e+35'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 5 }); + T('-19071465814005.294690235272', '-0.000000080', '238393322675066183627.9409'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 3 }); + T('-0.0000000000000000042840562138379106046743677364876924', '1063687959236630279015.386448', '-4.027549787169180858225888937073650927094456773096715135673350189004623192792278599001027630845979465450698694497072376958248e-39'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 4 }); + T('6', '-0.0431415451895770', '-139.077076948314785281086431901487939280144485671249113584170589951140879837116761189681912503218697276078291273363199562501174135968355116292824981547487890690329'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('-1428.528', '-4016.105413480080402956', '0.3556998268036336236019839154795036575638731219025051906248327348719789958418008313874653788722178165455256345382739'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 2 }); + T('-0.00000000015258178233850394438994250905841879821765', '14755907523277.56634277032360889186640299510604837753256822', '-1.0340386187552674676180995717053737232564985414921072525663046479303516290546819134010340682363818160499550865789495738008179669417921132539131792844147306134743886812917237124265425164077922144534818111568408918206035227258578435157194623225084430640121e-23'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('-57.6369007429645071825179385904840571', '-0.00000000000251998070491786549064370599326540639921481941388128845', '22871961134656.0228874169640075792992353663071336186120390190464849402168612832'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 1 }); + T('4719535908934856.3188423', '-0.00004590396071295404717205573913226', '-102813261331565415043.593555510997302181233867427985290551695275659397593471781285699080638438522606241559627217355231631403584719339196104541714044624882017919670228131612981213086561134510437891197497983156524326011971'); + BigNumber.config({ DECIMAL_PLACES : 178, ROUNDING_MODE : 5 }); + T('90560574.19', '-0.00000000000272020855863261404655577977', '-33291776067171374153.5540943533184444211410447691379595883136496085169692808045011438164893709653683535108332731017664700664245666237236765678686152489938678460963372424576373927997080122723977923108'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 4 }); + T('-0.000000003602759247', '-0.000000719730493542043086033522', '0.005005705995961868568728717106450635438948371755549645411177827166383370746646160424849871824305534599445074248844765752914200145'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('0.000000000000000000063462657467310847324181579614903877724471554', '13969995806267346.9', '0'); + BigNumber.config({ DECIMAL_PLACES : 171, ROUNDING_MODE : 6 }); + T('-1.728745149', '-767317068494361925851361076.142570164977510444085', '2.252973666273530096229549790286979780117970186089063237972420102279503859520303271326548392437033536616731345224561019790666069443796853779977042e-27'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 0 }); + T('0.00000000000000002116383397', '-6823032369.118301639796304692868231186795960115', '-3.101822302029452578625626490579297286885018019779182904580999360172501871148189661358829847714617205201664224490931065093207406815423047393e-27'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 0 }); + T('-0.0004848148333238926', '12904816184995616640289106.83115522218980318074075', '-3.75685190996819515204136529412265340589567474735175608258469795499860194982608552080271642438597220858511e-29'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); + T('-3549697821.51855627492424017', '290982157953066117.4482628012016389965745204297026795936', '-1.2199022257890821446248659415361277198823213590856772993149298379670675001360988681054176609068796708301946e-8'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 6 }); + T('-0.000000000000589896254543183', '-182450.125564367539762047', '3.23319182553848337370053683172914277707287723324418981014560956775014533063194875083593814991638259413198e-18'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-52567567268408975665728670459', '-5528146859.45737855527854987', '9509075754468795731.23067171751344965999816461361464529796218412174775983170160347609903732'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('-7.128160985', '1824386707845419063788460858239964352989420358008454019729', '-1e-24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('133731.9168950012128850281530928', '-0.0000000000002348975210018', '-569320256444836795.120657943689337'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1828885852435', '4577369497510613328213004467.4862523980219630643429073057740', '-3.9954953460270867059316053550429e-16'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 6 }); + T('5384962276924.7562', '-3656385265688062076488.8610159317578440532521443', '-1.47275570970539091925240064198808393503364100875127069126594220364228690441920944089764455848379636537284725160364682917827636874926780902198597199254290630859247756413733602899420346140711393097196957739293275522019177795427051028635910732725397954292579436468259390202220758910177e-9'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 1 }); + T('229522331372685919956947636941213450406738405777', '28721824337908628916041.7882819687632375', '7.9912170157572421163737667451055954332362897022080422205503308822050136342594378736058501894053188522333644111075165510849628129643509065127252231218573547879337330491201718325065774957676354101336339798132463847229472902359804448509748875230689090832696250286968020408608016089190806915943220633e+24'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('6.9', '-149.4151', '-0.04618007149210488096584615611139704086133195373158402330152708795831211169419958'); + BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 1 }); + T('-40840218134364408934771879324224478.145919388', '0.0000000000000000073477184901600845136727313', '-5.55821758673209925541290695401272680473214350128299305493108189726173299818117845506881743385012211620613630018097693973844680507619740667183672017643114514422086357033642080339728200348214695423536813560853343978e+51'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 1 }); + T('12605706179413.7336018312', '591552.451730980920510221774523223995610069098', '21309532.472610568119106423315516425618079661279065633564500459228761336953937661247182038617123827270516078298256526030896984967360669136324756188007889569189524517335240254465978156043649977161219485081250743812542272905731642239618889403866223482333301662567682941922492531309096993515817683719967'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 5 }); + T('-189980552124615498634852.3412680945570', '-98438166259033658191926119099723556988067334644973932', '1.9299481018845270002606424984821256661251127640026552657218981689402118620345772277804362928174596675134369904635534716484532019661569378787224035839752269439438346906126797024189025889242554798404329502307467e-30'); + BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 3 }); + T('63412676281.59012502786', '108437062', '584.78784939405795619822307616560101932676855446341768278450775436907355531266606983505325882030997852007462171927896755446952260657892040638282877859601175841521785236121576219023713497512501768076305866715569995800882174399'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('0.00000001480319643891516212235956154351000246', '-11392872494815218823394014490229.35482719444421230358', '-1.2993383754318278619672346672281872056429558627141365608245e-39'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('141019805.5245794482857879701641156255383520086847', '12037849497473127330444746727219.13742079814695496478118532', '1e-19'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 0 }); + T('119790.91139929349140550187348217236477074350558725377', '-5777.042709591300426608239758121800881756', '-20.73568042008956432783242383568890624173925278021387847056403962568560010280639205565758815896562330713607927801972972502586274862079959488911752046494242134509962944654289991533473427653855862679701399756845804030243780967782611774708498946144916920217987349054568600325416309659037783022980538299553'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 2 }); + T('-74255792.01', '11273332303151865455500762856529058.4269545819', '-6.58685382575293402521065454122389727987534301575856973564632115180134424260238975425414484985574343165915358874653525167997572e-27'); + BigNumber.config({ DECIMAL_PLACES : 189, ROUNDING_MODE : 5 }); + T('-1.99', '2.02957886703023899022226515613921936539173455451807', '-0.980498975588885406473946445648953510849056440161659698597036310751221238034779103703880418567450972306385580730431672961731585138039525359894208853302970439152882195974847086075237842378535'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-0.00000000000662553885261713805709882997529921268', '917951771', '-7.2177417833176532507597612939288208857325686231504639692012751724404048e-21'); + BigNumber.config({ DECIMAL_PLACES : 109, ROUNDING_MODE : 6 }); + T('39727772236789.745415749', '946.014689422', '41994878812.149085517024235034701213624977960411203827202382884903169217672541435709342895975537328996297696138164692102'); + BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 5 }); + T('-1595.683177902580188', '-12423.0973460576230232424592941920350789759736774350170', '0.128444874370155225701375887885074854165362738492227119742210901355065584251862991433857904300091236546058352594909589629238188878940586337336952'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 4 }); + T('-13.493976805206652118496494293', '-0.16348979253970542348276', '82.5371210984287032613093408457949587368693736972544114140604882723926664186467093312229488466679674328566746900163426115646881522747654468512043240548069515232115505054041043654236586559116321308407785941539806699863332216939080583339071637502536225880211523651412461839262830413'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 3 }); + T('4256019223285.117109486383376260331', '6347253705.59130348694460107880', '670.5292431490464315565006956437035888523526622925340056227797990599033414418301666634838939500439366360217087970207352162016381512343803454554519122848066147363635388487'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); + T('325654995408953940788811351545601523220557315848566', '-26677382254056155772637251420324566.4784191382920', '-12207157070646982.62023879621977307694573373293924452223056955621477692382163169310098782785439897905655670638191390612196820236007412'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-3', '941521578462320.6890776751075159534215216358050676', '-3.18633164510106741091267096465494e-15'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-32923697.423', '513696534559174976027235043562.124993789', '-6.4091725772012919164236668786392e-23'); + BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 2 }); + T('15542298519313474911058418.72788768331928021263', '29511759411951889905334398058562085033.084491829576', '5.2664764246549937207087888914081974049031532401831172175740365945958415083991717537075288380475566640317106332244118190767918153345055546048673577292715961083876478499560347073184014288780631047840719212831088296938186648685718914177e-13'); + BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 0 }); + T('-1.12256870617717945', '-0.0000000000000000000445831', '25179242945806358238.8842408894850290805260289212728589981405510159679340377856183172547445108123930368233702905361000020187021539551982701965542997234378049081378369830720609378890208'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('21212965439.09', '0.0000000000076513', '2.772465520772940546050997869643067191196267300981532550024178e+21'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-811.0072717709985104220988105449741680', '-275402309857048314124231166341712916293', '2.94480925810667295583330360825035e-36'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('9182839.0746', '68850679.253189978618736251808', '0.13337325316473972439557570739378753733468691854769053680437'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); + T('-201477774196321216539699345869.44341', '4362213780815994556947.2225104487786233007', '-46187047.2929075102200110122139396261424149917096253084092809755489163075432139180096466543838373814559121092334614709185768932599734974855062988675758217463162111422954427524579668577371494'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 4 }); + T('-0.00000000000000000162497948180306124987727256', '0.0000000127628196175968174', '-1.2732135456671428799684241530363339471843648065021218638078868442224903439326677033461828865260973177741496216477520897956921177038969114744220611220290397197e-10'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 1 }); + T('-1099.1', '-319070272161654401441.760571064317512569242883', '3.44469571719658601001722198091244729270089019499654299748251331969283599923290365473093617892225689845095818732374241666866795197379284694299052066619870651198361853249026931810914958359482224346368e-18'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-0.000000030444457802993411251880', '0.00000000000000538575320059549682', '-5652776.2541416121645468563480292840570102150387'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-2684648478777449095249464885162.42', '13083270901.6469542166649572467997272605933562928', '-205197041241383984713.62344092929525276034444224561252194494442443802861'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 1 }); + T('0.000000000000000008825076533991651133690937331074715', '49838857501697.065449', '1.77072207838856418564359488847778228637386696670666431055887841490967407432774528735148725210571318304572775693241529135473717030777856707077685915816700763523593102371020255623e-31'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-123625272191.482431410149371422742706', '92493676964796850.44125446296170082325486889035749283499', '-0.00000133658079393399275278411266929789218347946479983512353'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 5 }); + T('-0.000000000140212864427137205939125189750693043695025658650', '22155390052.012698318', '-6.328611868171538667033374848667266324532595948449808582737249329451673293319698937110336331587700406339681892563755866630832430750615073901097289112895387181329075364673176178589871483017943891007850650173957270122611531049093316129186590745747e-21'); + BigNumber.config({ DECIMAL_PLACES : 147, ROUNDING_MODE : 1 }); + T('83067463598.29947', '-0.00000000910613126665791940460932', '-9122146514892753007.25307779712104966225214974042686574696869979233280255121577231812223871258155921230428381673406249197882298170312132700634002615364382765094077612'); + BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 0 }); + T('-0.000000180596160502695447667203361330505780887313', '-16170334', '1.11683630345975196101208151501697974134184859756143565123639375661628263213363434546249941405044571126360160526059634884474247719e-14'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('1709.78715732861097348777109', '0.00000000000000002550750771075103328432210', '67030741565078944966.81126156108524563679472368241914097296'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-3.9402', '-19451.16121296143267106101495847', '0.00020256888300192674675476394574738203903804914212881041718398712778080934978'); + BigNumber.config({ DECIMAL_PLACES : 120, ROUNDING_MODE : 3 }); + T('16852085015685868216273178583268706959270537', '-8.279679122', '-2.035354844961088120810049259692639929249487284659532244128916859732381305199088124758369108208055988476989193156802145937075361940578353732003480412172427181653285e+42'); + BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 0 }); + T('-0.00000000000015954089825738435141606491172956616684830243193202812988', '-2282.06392289696374', '6.99107928821096822747817981700541416638571761368588755711656665485343962126901791730019652918881078496090659119106369631946376845226228656646928401876201e-17'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('2658723965607.373643426228569731544749541191', '-0.0000000002228302887', '-1.193160939259409415927498445919997926000618694167674881264918452713023e+22'); + BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 2 }); + T('-0.000001025670161792', '177358.72067465596720082362710534170967140', '-5.78302638793540424118732015688191977938203379499468808076300287671520828824108916250620754932005005147207111576823717875111738860492014468910575747731644732936140664190063060573417083398303296274479988720384527920804785e-12'); + BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 3 }); + T('43.8855', '0.00000000083471640354269637200079292279683344588987529', '52575341533.65326030736186639711903713669724682246138276450276583035004456628921559087539851313965580321243924083223418552540548023654725009934517347488424'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 6 }); + T('69744464973533674437480827', '0.014', '4.9817474981095481741057733571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571e+27'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 0 }); + T('0.0000000000002104555829946104', '260707122664.26821544855529423087', '8.0724907261405961557182695598365682878850140259175437261394871546289916574631753203097799856792251265637259569870329555911204800220026041842496357e-25'); + BigNumber.config({ DECIMAL_PLACES : 150, ROUNDING_MODE : 3 }); + T('-15.52', '-0.0000127', '1222047.244094488188976377952755905511811023622047244094488188976377952755905511811023622047244094488188976377952755905511811023622047244094488188976377952755'); + BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 1 }); + T('-0.000000000006691479923316420761654', '-269215447654129121833832.8', '2.4855482780145693638156447860203068386625148732371475778611069020621957595393031858115547797e-35'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-63493093791273308708650506328518413196107086277044337672', '-0.00000000515043959036041389800', '1.2327703815827152129163943525722905688706355755915449037746266713107010518102485820641123862185325367485568758201131275691695047901385e+64'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 6 }); + T('-3658835.64177782026153128822109198750833783004092227', '20.67945951', '-176930.9125322405615199412057115213988655078752066605632479608264191040261864174805021294292038293219395655278419798506619673252765782755218634822047145467197948057008961932970752000084551532846130948032693529522522806013124856569329166185736543943164209'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('45778051531295128912112577.25515382107', '-590096045233311557913296150095628.1577328331764265837', '-7.7577289156709143373890110544254716492605157877656798994570156268353810414142511002435738518128374969853411e-8'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('0.000000000000450', '-46819520498356100556.89958075119', '-9.611375665750360153824213948502663e-33'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 3 }); + T('-890676667835024208655.8562559384730393609188968820', '1.268724660886831979041593230958513401', '-702025187413355567917.332631378741137017568745342925049809812167772725546547178177177893219778896765841958659135867183861091608513627472034838554880467502383246547224140694972969450233548193240881496406582468655774475300092581790380126614792423729944474799506'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-161583898858161.495243091097703604385260740800056441', '-1031721232402171097737178962857047.50352513377727509247827640', '1.5661585104916705e-19'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 2 }); + T('0.2322852986919915819487', '-4228631479.5', '-5.49315540543290282121875784990594141936269431302662183192026724351967734529560818400940535305401043756288860120330095556154978011485997121163889779438038163996976885296821477252118157770054504462286993197889993620097865990925492754327872141074808455651331486522837346720367e-11'); + BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 4 }); + T('362291709337', '29702.98144911035', '12197149.634884588131898627093259138590396217368507496905900424168440987002718998906655848764209034505964672026155524884794663019047119'); + BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 3 }); + T('19577879840223040854791309921057161620103902883692965226', '1550289603164722', '1.26285306953341181773986800752863568296423539995840489362299595394540800547070720600249950048388235064574185332837590502504535223440086470685375599707071995673476555417932190595002896178753469286888696906345130193195920868416210053e+40'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('128268741773463976359587229966588766.836519219481523298', '55542856042772090089299997891982741248650398071426.0647', '2.30936525256619136991671889449308284783192345378e-15'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('3605366393988004038264', '3270067838210037371504447023', '0.000001102535657474770205907291620216720491894675888320040472677437'); + BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 2 }); + T('-5107900606850205.10509537139331424857469927944862218451497', '-55809910067637089534572329.17839895461', '9.15231829017434966062677255809816064581335039416471635068327168150666664320010207736777585390290146335359173570400936577407214402855687751387455824457146249117195986477464600772097935225607535051864006266253137460012432714456993427219667246709639e-11'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 6 }); + T('-210186755512817759902.0', '0.000000016138846800926505007313555572241590', '-1.302365392679427871669903019652757365968408528609718176805559988224718202378440771561804855738159133160238705609950191832437338600449859316657702468980049332244538412273065424239861439746114841537314e+28'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('713642996381759.0708956605410621006', '-1', '-713642996381759.0708956605410621006'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-0.000000000000000039412155477850300674494759057281', '30930044681711744589506752200428370453855', '-1.2742353230790462361031e-57'); + BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 1 }); + T('-95216722984153646974137871155619004669.012446', '-2346132156412237630839388541.441', '40584552206.028059454314637564440437877814822300903317177937403712045180025504844138332743040154443693994780096100973449653841183227890711'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 1 }); + T('0.00000000000000008010', '-42343973148', '-1.891650547765929260597310257863570851894117585982557595022589777691779486578093e-27'); + BigNumber.config({ DECIMAL_PLACES : 257, ROUNDING_MODE : 1 }); + T('-21110631740213789.150281347', '51709.94', '-408250942472.83576717128944647779517825779724362472669664671821317139412654510912215330360081640009638379004114102627077115154262410669979504907567094450312647819742200435738273917935313790733464397754087511994792490573379122079816762502528527397247028327629078664566232'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 0 }); + T('0.0002422764050174274335948315574423519', '4979.981984', '4.86500565254710434701105853322604911656644258253605762442051436947527720212732400117855526764090397962371423711560158126066023936844828553500244951890171336009395491017904855135315284706861300966505665173908388179421975997252925001746351699251448536967237349748613066468475e-8'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 0 }); + T('-301887867798505974609761388735606565332.4414327917145751', '-7896380.9688057948440634', '3.82311680491476885532705197932070439704243382676893190450305477046319579257737500617147163152464991403311152133971009873364640320793083329818783543984575299786203417030207921221390513866621507110943349218019734e+31'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 4 }); + T('0.000000000000000000012381275648586218116297477279458092864906184', '-0.0000000000000213859794471590528297144209516939621923019859775833', '-5.789435868101409898717886783754238396734477374325409573037359950839440519861636040271589865755404020228728328876906872137186554363041565006866859979057011231414765306037820760800308143412855326198877526021613631788414731e-7'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-7207521886683991503673062482088593645417658022', '-0.000000000141962486386662859416170445937465277624', '5.0770608983649966933902911723650304777078841612539525923425798611557449528040281575583192345073445230041818721694e+55'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-45067323655953518766324676389.4', '0.00000040273759563282512111289380338279407', '-1.1190244999386967411404579059048991017787258853452058206e+35'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 5 }); + T('17.6', '-546940187178.007', '-3.2179021422450182717427400018457412793685338248576080576770120614250788523277884291462520838553103162433514444541441958936748491687531110673675272616804597222438994160480846082855648768279509382083253965434992275261011914009553392394809396736e-11'); + BigNumber.config({ DECIMAL_PLACES : 268, ROUNDING_MODE : 0 }); + T('0.000007779982457407784', '357', '2.17926679479209635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635855e-8'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('350869895535216933723706156739.47656410122441612', '2989537245424772437710940736115509163.95373', '1.173659555746271060991574e-7'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 3 }); + T('853615488696.88430067100370883523771307947112128638114645614', '-0.000000090647064237067795919913773', '-9416912680861208776.14911575047084587656950474329586820268555071383254994632642150718177250303169918724243863525021179264226171033305'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 6 }); + T('0.00000000000000002110520727', '0.000000000013935384205458510350589084388', '0.000001514504871830735709539628947282121885886507186200880530031189059320698236995623419999457743013451838258222218714718141365483666129864032939645058535242913524519694729177005352821077005981412950406068982368997244414662605734003440173775397993730269'); + BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 4 }); + T('-22663.48', '3.4095', '-6647.156474556386566945299897345651855110720046927702009092242264261621938700689250623258542308256342572224666373368529109840152515031529549787358850271300777240064525590262501833113359730165713447719606980495673852471036808916263381727526030209708168353130958'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 0 }); + T('49445708241272432876427619.153', '0.35844660678329552440268060981', '1.379444171197458299554779339312387309149652227797554138577226515755706745694985348801160476588485092723310605933828890399332952726691750149476122976533039661480039631964971124434450544912190676e+26'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('1.25130059225890071404911', '0.0000000000004148665', '3016152406277.442777493747988'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('0.000000000000093697825639163524085163793663571', '-0.000000005371039715417716', '-0.00001744500703843268184158229549330982927869052097542021439702412807851164238'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('2261595855414439074374436065973193026548871932787850', '42337383750944990650990750649638958.0', '53418413114956806.3'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-232621787.9083173', '41087199429196013050768561.69', '-5.661660836952040501e-18'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 0 }); + T('-0.000000018969801236682335996388305979', '-4388885503156541297644054983', '4.32223652748266453959749962375030611685928609409494636023493218408047803036295752118254156706828354897728e-36'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 4 }); + T('-0.00000000000137744075241931218632613106359', '-6238.73931', '2.2078831699401656619727088157334786921878933261598327627509090454366172257965367685799328582620324297538247354656657388045278013067034211435899859710599127438136215375859325655971350404125156497362926356991826286134722304977990817827584464e-16'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('-1959303.438095', '2889888493.3', '-0.0006779858263173492805436058102733579267267571427303416226242946299079615079901325270971139307107050447661644385011'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('7019950897.7372695151921954668851', '117.363477', '59813760.4404585722625804232681782254968468597773394188040287865704592239'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 4 }); + T('-0.003169732053907503197517770280538974', '0.000000156625575435089467216331529236', '-20237.6402774726865103378380596161285582299798137396117670272535823698231077710465739224814741588076876336521261442604209960984835023352253624321967597807523348738924684203'); + BigNumber.config({ DECIMAL_PLACES : 260, ROUNDING_MODE : 4 }); + T('6', '-213225.79784407447', '-0.0000281391841919035388433166093861669087355979782195949132797654870938809751849143076609548504380199123964305059886186790326541139082358130877861248322962685834195203522795019544256462362019380739862086538584735278770959498306389775509049463765306473064864353'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('46018307459476946722640199958866584585936965059580666', '0.7378872289524195128948239', '6.2364959920514225208189707462460938536324054233846307167692004517257770330969118389754942910188566343918487982791386e+52'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 5 }); + T('1758.60', '5.972', '294.47421299397186872069658405894172806430006697923643670462156731413261888814467515070328198258539852645679839249832551908908238446081714668452779638312123241795'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-0.00000000000104472613841765779256', '4699961885244795.304715138650', '-2.22283959726886960255714e-28'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 0 }); + T('-103576.266104809732475504797329445668175432877021848', '-0.000000000010206979249125078053239213828423165049856464708256114966998', '10147592502814981.608099461901707761514115696579082515481026939161327890586126063203439088718117414872208077236983832836370281848415122763503751912788549593221131534121660613801321155326870401610733123666239317202039948139364820112571379118404647511829664746447551824719286929884387248945459656'); + BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 4 }); + T('289089783845176115544983362960027936616906135421', '2415465.4623151454823287905530', '1.19682847200842570746470433564921277740325812369454166392911351181253476839087697641651618533204719976318019498765575980962784562310559707313342747638e+41'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('1.51948206297088', '-1.4', '-1.085344330693485714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 286, ROUNDING_MODE : 6 }); + T('37.3712', '-4214373566286140383918948366963469680.5719727857038101', '-8.8675575176722797637891925549550655305221125311630136117421804284615644799017882302066574474219457327639332866882667489404981625138364495820686617272560027434449611133007468516863756261048278416477879231173260431732040719573195221291332551309519781e-36'); + BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 5 }); + T('3459084916327800755999859853533101658210694050493.50737133', '-55565567173194124106832053381436079030630238926246404', '-0.0000622523100600425159258046767264183477860470024105630063674880415988452828179010818540039192472214229844675029568766226667323791735684640679460007367174703494647807739875934006880143501281'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('9.091718494075587089958936014281964', '846920006.984', '1.073e-8'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 5 }); + T('-108769159009102538970617089802029180606819984591', '19686403949907609184129440659089188476259871920.031864954', '-5.52509027478393313009625967168640316489376795740060113616412036315215161618326216438304078567452621472771603094478601128550466465230325052515519012207085527176440657542811505296'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('22052389027.33485', '-78659853225.0158801821', '-0.28035126081727313025921625863631334821384768286106477652983827115892524426'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('-472289.0051023', '7275138392179136204016786909830406445.9522825', '-6.491821593524825929191994686052177926102470330343403643706673549279e-32'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('-95997', '-1000674930', '0.0000959322524449'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 4 }); + T('18.95', '-328165444377289176426.04865048409', '-5.774526332581603917229492189094958069284594013024686823171718969960332233731097139189242048527869769399128197847178940680014215659273051383909823631914083560903214983109804407646e-20'); + BigNumber.config({ DECIMAL_PLACES : 260, ROUNDING_MODE : 4 }); + T('278994712283340206224.21854159877108206051702828796771', '-34723609863169871132627603777287159670.5040093331', '-8.03472661346941991801387784235950425032188676784988471647100796612576403513593787619302396274728180210718764642331657392208098334098594773199746793142415885916875978151830718150919003516032896586845948873804156021406634084573707035621396568852e-18'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 6 }); + T('0.0000000000000000000972546578', '-0.04988029275454903638282417120256573343325610929278929', '-1.94976116677122881389945277835585419317517470009302289810650076495173549953596809704096966723089562605303942344061695587461758335122678825462932209791291053461267005949334031298444308797612990362103595349927091387693195432735102433011013e-18'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 2 }); + T('26037949.16959376379150517513441005199287', '-44022561370642811786685.69638778683207742981', '-5.914682916873076302365484167189391665819491176490411854183046769038015581635177759387884978205817514539257256691868965751873074552530872030079398462630499081182603118468267592463439706260719969605887188835278192998397668842629934549827921482827639806639590805e-16'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 4 }); + T('-189922524258793.904091812', '1310441193729347545846650.028284831597173783869175037', '-1.4493021523407606074224793842169257897054772924175924798541459480154918742236807615459391201127324439134129605977789832982868697025099901675626974960833269012586261748073729379637811396167574183230904073465042229451672811994714396608371022478535e-10'); + BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 1 }); + T('8.18823120002549907007828445053314159', '-7853110539635870.894', '-1.04267362068803464002038631801823544454457809836451503713389101518939278010752997928683294393382026651645350414376288007203266401450837970127456111551610134339650345871438195850832577378875985585788779170326329630923843857770224283384843698090669406231927e-15'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-2556889.80899338225067103085421627945148868', '15770.7', '-162.1291261005143874825487045100267871108245036681948169707115093179123310950052946286468'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 1 }); + T('-1745765992613285237444622197.3462533377', '-1049854.3567414744989123088', '1.66286493112413518040449334373743340570121736454096698647494370246284541430957134925844230406674233408981395991182808259768546619543734993070487448401867107683629942095510291045207823832848062e+21'); + BigNumber.config({ DECIMAL_PLACES : 261, ROUNDING_MODE : 1 }); + T('-828.4404', '129032823171733082535.60543204126299', '-6.420384981404363260952005499506289257407546631909609921551835770845053825828922137905141803951283209766857148573276449940426634687022015720243534325635824564651246340381756708178115004109063998084902261807711991759470479934810915009703648369846e-18'); + BigNumber.config({ DECIMAL_PLACES : 185, ROUNDING_MODE : 6 }); + T('393.9', '9858.7509519', '0.03995435141041743551907119354848544300207498986431516654326288499739416974570709461761548203289693448818643952786389891480711276734975090754630263539236935412741085899506563434482289004'); + BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 1 }); + T('17100474.6470033624819411751910818628060', '0.0000000000000031066770', '5.504426320149588284183124023218977320783589668317626840511581989373211312279969884220342185557108125498724199522512317823835564495439982978597388785509404421508898414608277590492992995409564624838694206060044220882956290596e+21'); + BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 4 }); + T('-982203639402120441618285.996664949754', '-20977019352046787437373594831539784888.129', '4.682284088689101767496127863114841707206611582376296996723978066403411697098086429648889406596665542722372956980749026535912449937807604140100900200692618562464065367132344503949386896546763327170637e-14'); + BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 6 }); + T('14475227', '2014821260.4', '0.00718437277018123726366055175263327293804051423637637926525028244634458890981831531600608277957001847805198988657644204398032964095677'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 4 }); + T('-0.000611679', '0.00000019686629381171931402681051711051656363000724064965465', '-3107.078353316301284844835873925501830130197672042673768991588542825246014136510602221917172848876502274347'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('783.3', '-0.0000000005479231481682049677376602530177232057364912125123543', '-1429580047162.996541786085197058352270645280499186368943362024219325965984273456045805890262399536136277423288691'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('4166351.5', '41090838718091189.59548631131809378', '1.01393683603875129619526195200979608739624e-10'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 5 }); + T('19714272147134795647.91883239281421031377430579746757360379', '-635974373425873808225388.5850651425906926066', '-0.000030998532285094658451383721442546892740425669010262098538600374999954084527984169185448974920237247721989742975769378809712226625550199548067226462433830592850463056352796665263716825634528691892059632'); + BigNumber.config({ DECIMAL_PLACES : 155, ROUNDING_MODE : 0 }); + T('69997.135118736383214475966956573491502499909514929387803864', '-0.451705085340016826797235994733', '-154962.02586704705107557384663765928929182378524150151127352941380284326205103847435561970612036290081468585836113192038787180418167351061144309357943121176187502'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 5 }); + T('8976014751.65926576931', '6248540232642.7', '0.001436497872698025798120039826215245596852141969997181952349924656646541925181809008585359357286473104214780341982626555041402494577855286942611527876289357791544556345808339453538622944279816398837801705693961969156205097220106525517'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-1371490976879618.65662926741752245918036169608360801964', '1.322', '-1037436442420286.5'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-0.000212269787643082190991110677031539365221739458527649', '-909381108184943052504270363131086.37985713567934087961', '2.3342225358821987633602722399538098288e-37'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); + T('-0.00000000000000025356569319264890', '0.000000000000060551077307488029798101666947384497719375135408730217437', '-0.004187633060680355209107234400451116912062840840606191254582820540976341239421'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 3 }); + T('-234326719750005652006087361103622738', '-0.000000087057668722538597936562221800066176', '2.691626403376686868539418767783174083406922637791778346443262148335713711143713338928015666665436388834450445048717686882619607447483781552818965925727776895165815961573142459598532970305230162733333237131e+42'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-771653694254108901612202.7169160265998376872881527024224', '0.00009482650876205682225149952394752969440939785722762368', '-8.13753141740543233641460452710486198782360762555804867393230406117209772e+27'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-0.0000000000005107219351354923562024664953531892971314085456565', '-1160011124420.9', '4.4027330806026074008571554857874933855773347657789355794864e-25'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-795288174.4574307', '4559973606995642914971163.583580899404618934146736', '-1.74406310869288021106307943769593813236987773488323655344501e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('-8.612007765524090', '-13999047.2997772612301744', '6.15185275190913571054999384993849034181939973779247534538446163828701e-7'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 4 }); + T('-0.263943140297', '-818576.9698306194778893254825339781067264013652', '3.22441444146193485213250194517867773508755669887704297546778241954593923897941567128764511058857435156966098425947158502415542628311464636164385048393986949014766354437552983179699641755306640774665195216900707661690201216911e-7'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('2.6', '0.0000009459053499984248899416364525794793966732224608', '2748689.39054455024311508957013802886653557439848477380287527550187431210128103908253032648530489'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-151768104593154859724315', '57427038317652308564282015276107264', '-2.6427987414859136287080553682292e-12'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 3 }); + T('-1748845231511693.8807361717038370446032862', '-8668024029496691426707575608787356373', '2.0175823527490157757238932212360895953090598140524870419904046329640290655284692542458356585766620622039498458055487423809587665534291306660806433669807164194043536615966112104954334754782472965346545192279899749793487269420823166516542780851508472232406362586693e-22'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 4 }); + T('1325.40659178', '-40.5129', '-32.71566813977770043615737209629525410424827647490058722036684611568167176380856467939841383855512688551054108691305732248246854705538235969283857734203179727938508475078308390660752501055219448620069163155439378568307872307339143828262109105988462934028420577149500529460986500596106'); + BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 1 }); + T('45114781600358843806855927931600798499353304364', '-0.0000778222166466967324794809548809484357520931491', '-5.7971596729471725646029704109835564712187545693754512950562123697550650286074638380281562528931851764274331620751977535152074849768298567008473490045402734891603038534039003641661685902255333334417697847674614072075386588065975968049310942952503e+50'); + BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 3 }); + T('-275976600932.5996732310744343025336725717', '0.0000000000432797771705404369837199068851730938526', '-6.37657166868342122917582832608735580395947180420812733591498732398467102725171253578696241440488943552525652166805676660718134338698555877652415509224466604810004448768781000266131265048575786043629299808147594052402947784923423804084867730031264541605431e+21'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 5 }); + T('3428275288823.249', '140.3316050325250889289455899246820037', '24429815992.118575586294806462671677334499792697128042486383144200096606525878246271367479990010274251652480635740788790729149526282874785275642117284146859843457494411547447745705755294290421399471178817917653228203182220313104343673909563629999692449453215963299511301490117989076030061420640610696662737125'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 1 }); + T('1295598819672725183443768504932620492590695.432383112', '-425.0747990843755672025470763771598348506866', '-3.047931381637974365833015282411567536659164074344897479003051318599919928637194587091627583094890988166328924090519907928606818539850357023098e+39'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('42137242731484001.470769626', '7595072.10456471722', '5547971388.732317753317430808974178330725397279426343292680713202218165708256199015504992004246717'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('-4564746416979756870043297247811.429909038', '9287625891499021342342740.865037869', '-491486.8956078298201183662923566114332423968698292'); + BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 4 }); + T('-65431486230422821154422019104587706263', '-46.34878936', '1.411719424259473713995234742083621626293110150827896403117615324915144666035350356775748155161738187847243481916913654635314944933871299718452883447655168700181988960585010628635759473481099787673073323182049128715365436246207920370155704968773751807009442026125016353609457038901177461089e+36'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('3460528225527697228490059.1020736685', '-139.0869345490386203892337525827663124694441167221', '-2.48803256520661930591177874206866445631948289295546019982373607e+22'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); + T('1061223587948058437603866147389396780.9985084605612479200456', '11.0881388300587107809840', '9.5707999711475415048928367278114126028068354361636129068569091869347895252587393927761992871421130476524401952835495682859834224e+34'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 4 }); + T('2061423998368628681610977.4095730690455769815', '92.43439', '2.23014832290084748934998912155212907834084424638924971539272342252704864499024659545002677033948079280882364236946876589979119243389824934204682910765138386265111935070919e+22'); + BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 2 }); + T('-35478049164259528012602794052310.37262570318745851801', '-120.85844886673814720', '2.935504261135984103745235179540829499263088068471534420022963730663410758278110046039014470700781287136966557724408418099034330481887689712316847393721245457503300049717446123602653438945484136323534105583978950070026638208226878312691121881841762308937589640143646018588468950023035733276209299169429729881009038295261e+29'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('58240249403771631000777.2772383065372126721106', '89334205106617550570827871258178871053.1032269289975124842', '6.519367283143532077186073752825536492973646472801073519547689056279185e-16'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); + T('-40.34225260397', '9.403262543363267274168919218785868626111663185', '-4.29023994788310742889803172788586500220763588388824254800378486089958356487519450173874239261808451223313911041600422256961513576269041505976155113541372841203198304695784985219159552875947806003769828'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 3 }); + T('44.62359264', '0.00000000000000000509', '8766914074656188605.10805500982318271119842829076620825147347740667976424361493123772102161100196463654223968565815324165029469548133595284872298624754420432220039292730844793713163064833005893909626719056974459724950884086444'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('103967584366772472.336595', '2754', '37751483067092.40099368010167029774872912127814089'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 2 }); + T('-462555971046251.271344122602855919308768358217259393', '-3.055', '151409483157529.057723117054944654438222048516287853682487725040916530278232405891980360065466448445171849427168576104746317512274959083469721767594108019639934533551554828150572831423895253682487725040916530278232405891981'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('-32847', '0.0000000000000233491511976819489642385565516074255', '-1406774906800936559.517980211071083426303'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 1 }); + T('415692.3', '-22905092881845710647.21046525047649096618781616152574040', '-1.81484660264998315529359187348996358620192053847002157908168627895250762732773960746130670363611620706796565573076739e-14'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 6 }); + T('-10.8850939943278020', '-1725830767.805', '6.30716185931255721045642445982803498707033528937451147668264872303697189676723246358857957873640888632807115004104149466525392914986234396779693817216752908392502837298203767609009120808394800015314703210220184883152422771161721715449527629763903877627450698e-9'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-5828982166839', '-2530842049129393876126061719481416514738', '2.303179e-27'); + BigNumber.config({ DECIMAL_PLACES : 157, ROUNDING_MODE : 4 }); + T('-0.00000000000000602747842966530319581280', '-23433562408877416818725756759901085206127862081710513393', '2.5721562622428644778013955184819204616672887257338672839068268897700165221686673020444e-70'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); + T('-6686989907764132164847697467.91010577472080555271328404500', '3840104277358797454607051.3716878414419091882', '-1741.3563343033504672028961429350882844099788498086333729167441297917213706486365143891864974783182330623024209824925547467547139517698279795476396133010142739641962484960492840769082977225496839577329137852357621350574915161422221604946375994862780445342531'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 4 }); + T('-0.00000000003902751692084172683', '-12504498346563482', '3.1210781783634981382002718961446159874134497721641183297959243278618714264003419753748418387796581000883888392691538751050780167097508950310957277458852260252274738530204746670572526855414600366124697167159377653841844057360786988812980009007846718984583e-27'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 1 }); + T('-0.00000000000117269146565915247632078746166430393529745', '3463399370659839541.1635820926861206453216907725558034', '-3.385955069443041945170208042711952782299470857991519685678828932435891658115505684e-31'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 4 }); + T('-25.1115098319161', '-0.21967644068496681816745', '114.3113469683713937946156843238326298664685462663520088713697560975106979107142025453921149210455580216758485585857103959170065242500772645572825076570732'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-8830341471500879023580257444305688839812107797', '-0.3491487234', '2.52910604555883048191613621243035277837481785190453885531806587152482196359077393665189039038600133687328269349187028990866990522125e+46'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 6 }); + T('2447151306220717.78975', '6954776525480', '351.8662745316352171322737211569150475104131080897673715140561848136814189424199965803557435860858581762522970607454417682877578803614938896151638650941011141626626838598414794855361782953827742752'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 6 }); + T('-1874079115850446978829432532344776929053658368056654', '2.00440383024', '-9.34980809543779201688576659694128867598036589180297674145198853568919929245724509008260135802084137609884634362142327254027369055183571180242627513210134604876287676435786374273397427191298380962527091443939965956588e+50'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 6 }); + T('3309595721.5135853', '13491569197898308418678348.55', '2.453084346948424629527410734568894106615535492037059503924148577389619227603737359727088369570843711133724043687011703961301416281193013274370117678280467171453393323504579886397986049844383624286946170302440442690164073272185249676868724479000011274218554e-16'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 1 }); + T('12.93876502087889', '-7.774802489', '-1.6641921179586238103855193638990460533099723866181419081448771193343687267526160303465941847156292435559516372429354970331774302131728403833925355939675498552719568642407991079707542651634297998949'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-44075712087.130556208162637063382162593045726984177432243', '1633151753348657756009830986026131168245396', '-2.6988130157994531025295980860007338998e-32'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('9561331527260011.860238515', '-1386801682025745223459.08689118931535066678766543059603871', '-0.0000068945197076004923029241479618753856985112741157916335328234'); + BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 4 }); + T('-14.3282790', '0.00013418549230457843461307881151074', '-106779.6432678223023167340906118022954434575578075726562219369094110425569515987966776429639111600297832547723781765761070520612067703'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 0 }); + T('-51.83165388995427', '1081.8055622', '-0.047912171744197258667043669966443809064748770617848095216606383982225008382379714852606809789612301921292524853686687764748858304585263667818845311535041763533650280209291384617730152765154640096931829215917484954488062623865847229972765248183709144548896459722787696348932676'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-62256519716149385934020127.46542677407975072886294352999', '-11876862.07527449844404034888226684', '5241832339347976398.2986832735128984206762592415015035098746132828160230474698420653742'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 1 }); + T('0.0033839', '-28017723222276377139799.667397599419452154750208110510672208', '-1.2077712286448469378878071879650813615964361612047393615886594278881080903538967517470449657838356210694332140440899117875935163613376532770138091654226936385922666463209896446556186966830358243694049773549284694056e-25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-5689976.92052713959555', '64864418019484087', '-8.77210818235966351469448859911094562992015457063633724875591976612e-11'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 1 }); + T('-3177288176694802395182792477847503', '2956453360037850385644156506897.97722423096145087654803', '-1074.695856745774857261671032523151808160517894399762101835624715235395775564894922080523610727933160178604528470274551769508330315840324674940964333110394947961508283102906770117688266163231'); + BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 3 }); + T('238254.892691038', '18663341053635.134050251621486505241', '1.27659293159962982973145884977739766882945439086402137678794663634541272576595521064591007820498446992630047787544660893348191681967370578130030405334404915890607347802e-8'); + BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 0 }); + T('-21080513784312.5875809194', '-0.0000000283227172569213694679673374964863081339913', '744297010526454094977.8480955755860858865792637780324063888648701283296217928392639696832503837212786584943280257524113256408225953066925598360259112116742113304645585972873071723544226385931422356071529726570296480881324981525597'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-0.0000000000048003708894111750186258056661324741572443755884810290792660', '830770927350206975534871025853.4495416263379', '-1e-14'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 3 }); + T('-11158191.57566175085899924969', '32105907106840146360137208781.566272655424685570053', '-3.47543258582608435436954087928228377351514395561283518785501826162995103831181883939296416823201733488693469657832630324629185907405922890409836229544454883013018681334913e-22'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('1710604.5260170025116371745961647180445765301364', '-560968243.14313759730585446497', '-0.00304937854669345657270558697711139632828290719202219753'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('933033911533067981575740796571.089182214611125476', '10712260.7710', '8.70996264447703839019753822394218844221796554579039009467742913294693542706327009746017692421614033167191650323576686948e+22'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('-4889776737017976', '-26831915.2419617073262596020127958488720039437440396160986', '182237335.38674072242834807428666'); + BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 3 }); + T('2994308611505779749339.98076968508900834542159716', '33729821', '88773332402380.0704231422031467373932504836476054824008701380300832310968979052690496045027929439649264667013797671799088409037213686962643531372431534694477032653093534056999590955433768830258541840468112771781385972964398476944185384203491622442941514572520263300537527311514638633866453071304469715389'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('0.77114010', '0.00000001544745076048635964683715579904552482439054', '49920217.3845104278359801'); + BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 4 }); + T('0.0000001158784769118582451037900', '-92262.50', '-1.25596506610874672921056767375694350359029941742311339926839181682698821297927110147676466603441268120850833220430835930090773607912207018019238585557512532177211759924129521745020999864517003116108928329494648421623086302669015038612654111908955426094025199837420403739330713995393578e-12'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 4 }); + T('-1905164836259094183621458036793', '-0.0000000000002119191328576672846818', '8.990055831998299280754398020999734599969171684819825456306111223717733602469589230875204517145004450211688103882778288906066024055292868261004790511861574774426913037125572776223194050078016846707609200828779293539775168337517365189566633004654346864854167971267818365476168820219291761044886920712480598235932e+42'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-0.00148298079335633960438658541245103786116719422867960710972532', '446099089723666157762121662.2199495195296627803688164969', '-3.3243304627116917320233294e-30'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 0 }); + T('-221661455358.0158412', '-3734926468531111.4012457', '0.00005934827826615602702905532801242019557525866408427474506520094743509070433423637262198575680678092122136081587312962157385925167062213762643400662744666406943535086617458519686154818234078999784450299287576'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 0 }); + T('-487468630455734860583178863', '7233658695240402066159678.1909', '-67.3889453446952294845578835831800685384785750299258689385686510304913401911915485239695068020143233285514706714142721988437466176534558177387249009114319648593327434532847823027143442509783635201'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-3518.2465822386713806003560662862139', '18.20148', '-193.29453331480030088763969008488397097378894463527141748912725778343299555860292679496392601041234'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('28868885283132.483101371744209989312567250440301', '-13.690', '-2108757142668.5524544464385836369110713842542221329437545653761869978086194302410518626734842951059167275383492'); + BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 1 }); + T('0.00008092803856989090972487071983087981392117', '-109847536178733098782550375365898462491167788311', '-7.3673057571553330936236108342591811431042031160239767226738036778704195585923832418358326458431087176636756727400242450961526838248593373264293428948109190011e-52'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-0.0000000569405702003177777853', '-25555828558864548264055.74474282403966840416', '2.2280854666544085352967680979046e-30'); + BigNumber.config({ DECIMAL_PLACES : 171, ROUNDING_MODE : 1 }); + T('-2171288.4486', '0.000000000000000000055717014671377488', '-3.8969935151881305595576794102449712477486632548951171103787538034269665435544950511587092848269699275447965569984148843898094563459433486477738307108383221186281253668872345712957638802519665004894e+25'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 0 }); + T('0.000000000000000154352057679285508080118341', '-0.0000000000000008327490018877', '-0.185352437924747686289112485985623951760899942552857077514319074266339417408404071044403097559384968024157334155667794634813015768092750798345376959880386422359912231069858602543416943135076519388094196872160260251796251598842167155848450205169721666073590494798412515'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('35629224439.64994424509872', '-0.0000000000000011786908400', '-3.02277944568144300205970210135848684460803988262095936878579628225498044932630510643486463337578834497433e+25'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 1 }); + T('0.0000000000000000007265987100666922825305760938534', '0.000000000000000000034968942900303494473927', '20.7784007694549483427480443595448440562265860748106932180244471958482188972338381572078942144109003370023489288836078913802446538237164'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('144741686718969058111442192.47250397516797195', '-614331853673346614569773445.1792365794386243247729132666413', '-0.23560830494707068951348895602100294027267941568697771020733205213594830445630673695773014'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('134003403004982799175417212755213263224008578.3709883475894', '916.9146249', '1.461459980743544132943158738302869262304953102847911043166959087730437180858625434277332574368887678541378667456785158e+41'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 0 }); + T('2792105056657.739435078105978624209057218', '-0.00000120336003392343834112697723524762816062390', '-2320257427491880782.15612128857738532345600925006371338603700713948269590575559319799041893051863149715909235241848095174688236969964928266185980950903272554525880773722420021061334142493253067248417227243971138413723410648558033762820672260856277647823190175199648989'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 1 }); + T('-65091467280.383835790953440271622641702327026', '1.059204789467664671466097697415383492510', '-61453146669.6799179059599829916905758673401606316056158856484846822718684342246349479979097775388085917544272956467886944886402095215559197299864944144469993143872440179419806472866788983700256855861932327075669384997067759262890387990032346483310454561393378504352541577289814067303723408831173194342378'); + BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 6 }); + T('-1023348806.0679074798380775219783213362', '0.000000000000000151659939712375133301696361', '-6.747654047658864798589709976003342586651565147892624899992359136285817115084968004669549101164627826980622915369817502835649704114949268508407291103181337647795705880748e+24'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 2 }); + T('-1165840153287026617.68986944747727783910313076052', '48.267069397', '-24153945285095109.866876541236164370543110368995166943095689601351414735033700724434309702948381803119067042619272864489631073260662749493176982658896024625366794568142982878186280533422210249215309325319136280023609820406267082401708881194372381837276351099779616064681541411214094225'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 3 }); + T('73320748375038600850644682237490423304443305401017.0094577789', '526377526816301.14', '1.392930827015086100907904721231632852979496225797366069222533008934593820631811850533482818459100336136735731831376528463931896753604833420775786254048061308043455372473930830227743505530945705321569362495728707850766809999962086380693139491410802069430186999301674597058811e+35'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 6 }); + T('42748478697.9', '0.0000000000000043253341664', '9.88327769677962239583598245427810190106101486346421495300816811359326838067999869023946311294187639763120430333648313050719483942807161694e+24'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('-0.00000000000011460156257990541054245344333721306657047394882990', '23.805277020198898', '-4.81412430036690624688051063135752691051516271926e-15'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); + T('-48.29732', '-0.4149111638986017876826399134154088042771769402628', '116.4'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 5 }); + T('0.00000122636345318042979192', '-6606.7238', '-1.8562353903464676272981171091184408223634231538482053692028112330047761342770224479491635475967680077680862033312184172130822239004451798030364e-10'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 1 }); + T('-1115707285226495734659592826355369803105.231111', '-214852116.644230', '5.19290804602114593170397252579872000334370327190953074503451950236511285274622730210996844528026444243674676328984645739203339637730319142795859169646826504321814364261404491412481059750592946810333047296490861370812342286084651495988454527203064362372720805917601831781369897755570956391830568537156007489858677001851564e+30'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 4 }); + T('49652987661086037.5296292215171682253960', '-13701319097835764961648176124149.596057367455124052609', '-3.623956737780753655975029546379676183351150587483199178348626935704386772986645056852675041966308897928321370825145e-15'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 0 }); + T('-0.000000398419', '-699111.71950540209040962542', '5.6989317856360350361079966207736852761119124700408731205507402271211303625616929971009028239272785e-13'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-0.000000000000000001464462226612500495907628601', '904089632080463.478000066862013287664215568029871589680703', '0'); + BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); + T('909542526768456176056.9039088317095826561751542295065394056', '-91528715317691713440596947.07188818303821667', '-0.0000099372368945797869024243894885179647849231211363475234353293277400040279390429701016105501304251053981296805430032358138272167911655588694370026737247770001237519502367834244453088763280055671260580303363780639092'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-37675658823045629839327.6939712033', '0.00000020858283046563440689173411', '-1.80626846126018884079357681865934657733425863485985689131722082253812485438e+29'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 4 }); + T('-0.0000000000008051935140777843875', '3781540328791101.78099414160922', '-2.12927390446525247183697072436064047026733682810153455189805242700278780935e-28'); + BigNumber.config({ DECIMAL_PLACES : 180, ROUNDING_MODE : 3 }); + T('-79788532804.3855843186722426', '-6436885066294376933477997093710889.3051043747952', '1.2395519258559436482949012081880847264651623745780336439536272594080277362689298629178733144535860149469047276701410083403243612574394342076604395395337374163e-23'); + BigNumber.config({ DECIMAL_PLACES : 279, ROUNDING_MODE : 3 }); + T('-1.15233980618423550779019539', '0.000000000262317044204810653513315057684632', '-4392927686.713781043665658802704079647291209948732015650288330350130089457081538493345699700649488483211117289494629010243025530170916414954661981597636789845997240316772989193471667398140232270716918902137771289254394804793783830170821128091978572249746936896230647309780857628596586930432'); + BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 5 }); + T('-2635440250307.494374339423692143366', '-1913.20503430950', '1377500164.93065430293729103024316756326271491462644235020506228325736948867543286176349958803432506413914045380299581082326004195021421682941730117321829359502351075893114309049576294052943693535469720518607061902331955886557770604899197645422721759753464884180470235134319880859109216035078495218481223027'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 4 }); + T('-398995078159163783824093908450987512.88678', '13533189345602254479145952362663.97823517257', '-29482.708618779595631311912490468193073725167505217973892316362112984523453004604676166840760827793507582011594563403294849695434675874086880111968025048350658749146438959577844605412802841948673660872923452202435750119123069929560559248884402056973750465608878142689895507'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 2 }); + T('1456841073106834402673058364402', '-9563288512570322533464', '-152336831.74902767953322140533492168547849338573901143359749345511451353409078576515933799850582805558831948128594748'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('6823114855903180582542653610830039629749314007.91457341019', '511573354536314886209121920731', '13337510242470672.728859518840837799500819453683025969114014507637810443154172'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('804308622822673252042594266437331', '-0.00000000000017127916952571956504014122391515152365', '-4.69589282251801747072524056790005013329141098980694882904481522034e+45'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 1 }); + T('1327338845330940369.3440913237592551098484769197269562285216', '-0.0000000000000000100708128148990971925011685823459227033', '-1.31800567613294420729059324226791112791721893312050679794233693856880972324721013740879015943598663127566733985517682047825452546754514951887772127658650332732880593220298636429476216077e+35'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 0 }); + T('12809599723874306328578534769132991.413850364570554', '93552681959241474124530331343.217039412570500660081006', '136923.91768581389650108010225305773276536831542420193410798071091442532952747245381630988656768192039773622397820646305499553838364543606435056776697069887808678855170166253841438302622913791696997798926889833425075460417622104427087'); + BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 5 }); + T('92.05770034059258726828', '-0.00068350633871652052280267911147479669255963603602', '-134684.486633229125217604376615567334207228726022455521171642864029090117603616311471771447213553658424365113991266814885624701388727689877284995661020869247297194037263226378735346047283582271402239274627645712'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('327.83958026464581667019173', '5.8388838271372963836980726', '56.1476456751803340795992076616782297591294867004211964493385476349442238983'); + BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 0 }); + T('10151485093.13558', '32082406615206935762889249564492835490.2958249076343285415727', '3.164190646571948754494164868068685254870663897934497411075459212737349374361508675609394079887555800528727933031717867383389584213738297e-28'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-0.000000001416146620903033732150372087413820928589152648292511191785', '1808541258342889907972831260108293782', '-7.83032521027806036966513935535044237e-46'); + BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 6 }); + T('-3.970180705', '4283020852569477484425.2', '-9.269580610652880975553277102990123209568049596218445401220280846349150800083200622476066571961139462999336769617051143673132898574207458057109884231273064007618382385787e-22'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 0 }); + T('-465403163396251155924610402', '94693648471.277126245632734649418747702413262546442853', '-4914829779078785.745522257726399792574241912533618479616275646498931721538962093999738434326372960554938847878482068857038560126215073679417152411438671356963437181078388352153640620328770501894440910882944774789661871451975337378463498692245540049'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('22784528', '137433232463170293229014656091.94917137260989993751930', '1.6578616097169842596313106206568537878490407196e-22'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 1 }); + T('1508891859829832195943020078113860719740059', '8427264227598.14255930651475752', '1.79048837093349567082839342340165478991791187033570768831222601661950614620881880281108997158442988596564789856390531839862903958538966660995006571221175712128493312928391510525049740705784554667e+29'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('-2', '33052345174297530737690561696525075090819.1454', '-6.051007846654277445481381127100392180493461628111763888819589149854336397471882009909893828920905967409894607022380336644903604617331795364861543784543857896e-41'); + BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 2 }); + T('19166443511349220734772320190057933029658', '-248410421.960797578899574112784500636525110606492113', '-7.7156358256071626421946828089961251848104408035722055184738308436850079786677819889455814428497990568651098248146500104096217189478464864520929840652994007030514882685896702292e+31'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 5 }); + T('869990945706127527941951.6028964', '264809219315230415350762164563884627537914716510461', '3.285349913253908694977615253205313522510309402540499671135205471547719045915829993299043276187394972360009815212407188218163514093845186015359182656134e-27'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 6 }); + T('1.8967364206774576', '39042043197378509277.36490403759503157', '4.858189442310781996978618315371724779315976888728376071753132903265063924033431239723923186120631212722357968803810142584877732858170322358714466660436764688927e-20'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 5 }); + T('-127020205694.320072252', '33175946.51398854664452', '-3828.68370133049110471723677265828691882007244137459849148798319455734349287887603616566424440989978287501021937066058498924323885417711325379379463394850829390147505292381428119749615347236918937394847286266333502899796772910994119263665583146416'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 6 }); + T('995833.0', '-71436513031902123918710.026147240160934246677296', '-1.39401121042299589316481093373783347104285713377297550860450237655536185116559232149990921e-17'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 3 }); + T('9960245080825603121369571764597175075392172082272442.2959690', '3517164318937025947332571456.6808240054', '2.831896430655203379010042620019114749340599702558126540940914590566990412655839023657834467548851544248079962047559911628059257497547087987138327283131471498982466333748683153400156972809168989e+24'); + BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 5 }); + T('-9876731185802258.2041950981685631561679801432694971185775360', '25555073661284826594464196186322357634450162887923799643648', '-3.86488073433543296192731481260672277307051469727164232987761801218915334990305136402773600753633619592459863678436794172026865503508652583376490432776528624447154406e-43'); + BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 1 }); + T('-80104044547726619487150250632400996592.71', '4272.12', '-1.8750420060233939937817816595133328790555976892034867934421317753246631648923719371178712208458563898017845940657097647069838862204245199104894057283035120736308905180566088967538365027199610497832457889759650946134471878130764117112815183094107843412e+34'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-533009288906627970576196.2140677599821354860739', '4323.128068', '-123292504992389221668.5994818110856812432247551681830028080491276345875766'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 5 }); + T('-2.304177311150875227399745240724', '0.7827323864847599213', '-2.9437613045486758856056120647071522765307303317354334273788543602211922467393766378263152630511660086265141043812'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-15757239374307854529803752212135410839205625.5095942', '-153372.40', '1.0273842865018643856263416502666327735111157880814409893827051020913801961761046968033e+38'); + BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 4 }); + T('-22873603522632572608881934832185522999858', '-5.4', '4.23585250419121714979295089484917092589962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962963e+39'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 5 }); + T('1.5', '16.52', '0.0907990314769975786924939467312348668280871670702179176755447941888619854721549636803874092009685230024213075060532687651331719128329297820823244552058111380145278450363196125907990314769975786924939467312348668280871670702179176755447942'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 6 }); + T('1539204014.2471351835803', '151.4109', '10165741.13387566670286155091872513801846498501759120380368916636781103606147245673858354979727351201267544146425389'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-7', '0.23', '-30.4347826087'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('0', '8209230482735460739165186919608149282477470698.2294', '0'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 1 }); + T('-0.000000000000000000366305078080800693730700231992405389522682478', '7573.3', '-4.836796087317294887706815153135428274631699232831130418707828819669100656252888437008965708475829559108974951474258249e-23'); + BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 2 }); + T('-146.828450146824261470512713254756545536706012403919', '-2815589250628612087.6276213220856058132107827928', '5.21483913585915105735562444285912806140058931853713521740460168303513600371076271799398361239235995441791985696356368950454780176530371750911781708107043329536604156147712430154939691939218413269881214834836092467547838854117538071365673144696622106569007601450379007764482806099e-17'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); + T('4512052524672305897.265', '-1.8', '-2506695847040169942.925'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 3 }); + T('-0.00000000000000034362273847356363118876924', '5060658.7069537365150528928', '-6.79007928358020683444648292494539904606294894775127848688501939514515634155387729832273768343261121220907783647236617946983388e-23'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('29584612', '7650501680259620757.82500929209', '3.8670159469850665256e-12'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('646304382575445766656839911090754', '-9148327617.085430116961', '-7.0647271242058138680633500159104055166439e+22'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 1 }); + T('-3518675702504903072849000894068849825144.04550897025314', '0.00011257304003184599779106351', '-3.125682402740032892348602449400727106773155867864740358040696311851215410941600069428017367819515323122665135010254120082918699421870646135274025286054615730592114337431878423493538647715953190243317164292049665233617651339998766154390110154864465465421154558745741279046960497564843584046885985152e+43'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('0.000007627485649576687977948632632860', '-0.000000000000000001070915397423760605917602397873082686921788', '-7122397967127.646311926470197392560654705419469647370537358465793959152137726466118190529871'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('78448720392088325568153240870741230', '-225.683', '-3.476058027945761336394555233258208637779540328691128707080285178768449550918766588533474e+32'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 2 }); + T('-955580.4286602999395381199708647876353752088274639645460', '2308830210418995525528188784616257012374815957.4471484847', '-4.13880771460836762090822812448952247857193141177901649634837191989696162967613192232796316148960798341406162621040048927307855250075780082528848609e-40'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('0.000000000079890549573400209160151699521092756991271729762941451', '0.000000000000000034223621070685574534769411054519363538517252796376247', '2334368.69255868678976612159761060389346642283506161858161083226'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 1 }); + T('392612.0385', '-0.00000771322780807567554574944613911', '-50901133516.2354417708251692552125085477579615119932380144211358906899606110554765569646198387407301584456498931592995249838402498049991140248550128087021278571863547122574930316354407132299952209559089519028557587891244707617693805'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 6 }); + T('-16165760656715270945449.20', '11739360311802910962496.82574517924', '-1.3770563495237468315611292717072871722828542738767818161481929374632943157783094610685524312107471094651457084909686039611424402958382877271680633467400222148604724510781819920959433511985578942327565058522196139259283144564826'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-0.10742409258651041437592142', '740443732.776', '-1.4508069665707939812775376029905143691315099815767611283e-10'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 3 }); + T('18334486488933.71818600193026', '-0.00497779489229612', '-3683254711299790.69472913835749036474152498149832157095610540001503904250210449184057638706664664243096832609376659291993862179095742768407776463164703901128047499470567292802946532746611102'); + BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 4 }); + T('-169.211464771527865854667597189789202157', '-207863104972306339678126461763328401499174.35669', '8.1405242548489765516705633011568534975738448321155198096150599940351703480180572220311973953069989762960067645428582069850004977379662e-40'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-4900478.0062417814076688110824', '-5183481028346496739', '0'); + BigNumber.config({ DECIMAL_PLACES : 241, ROUNDING_MODE : 2 }); + T('-382384972.45206392942023251390', '1.8621126566852593208270898519899470948019288807309513549598', '-205350074.3251196059517081286768166001687724134586187243415322283131112184630210382941333111621921845286064018978475277815759566903427949736669849609499572640981965516051499352769710482818966175458505605208966970468485753842204120505245279253907805798'); + BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 6 }); + T('1.6033950', '157773312887888617232452.615166', '1.01626502648096688808885795466311274662353690805206632535320280038646985382353142458366424079548341188330380007934396600142682064751849155511107926997010556056411335626546575938027322497367274697905331832951906139866418111926931e-23'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 2 }); + T('-0.000000000000024390446132763317501799186808123', '-0.0000000000000024354', '10.014965152649797775231660839337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337686'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 1 }); + T('8.949256091778713416170336309585927', '-43008284888707.48280038127255', '-2.080821431251373754814499907029371730352966993428672863906646674096708362709492363642217924752489432535460090943985374364641805148191609138738073328969757095738599687411085195662649012224e-13'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('18151693389219154844', '-592994940854200428966333872416765666', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('10671521912.60667718', '-3024025622624891.3456608', '-0.00000352'); + BigNumber.config({ DECIMAL_PLACES : 185, ROUNDING_MODE : 2 }); + T('5555656927652001106840363134907735956048033.836016280597', '2685506242203580183806014224551572002073098.48081277379609', '2.06875591661009566816977833083780350234457412157752718904474731856705838607234088404595371810042544568346884729968885236693445088564691418441019321720748173396897313212434579346666991599'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 0 }); + T('2.9', '0.000000010181819887079948514752232854449658976070', '284821380.8692399779070875087772384638067450533772092269132336223510842187598584158556549024889239940050693282697025539090545926350671722284746095741123733162997837478788306693323573641756556850011157543869286195074599971462832'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 1 }); + T('-3668.93876418621891233619783410276079274711495027795209501', '162988.89', '-0.022510361069311036551854533361769386813709296077039067478832452935902563665535730686919826253188177427308082164373289492308340770956842'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-4010277866851.50068', '27234712318840966.38253364350322623014516951710394626', '-0.0001472487691407407145898084930687792129497134339296916237025'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 5 }); + T('8.102188223851484323844340549478', '-0.0000000000000004195', '-19313917100957054.40725706924786174016686531585220500595947556615017878426698450536352800953516090584028605482717520858164481525625744934446'); + BigNumber.config({ DECIMAL_PLACES : 228, ROUNDING_MODE : 5 }); + T('101066361587081.237795041132080784151662054701', '-257312331557433009609776883.75453240003575880303096299495321', '-3.92776984201874030615107607567103526808277180288080272777505065283222319685695700758169673799188082672350927719231465634048337408327667103561182032875072504960716517175222617441892628023599454972201808083721814472225e-13'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('7.0556320038072082229252602780', '-15504182652402646.4413', '-4.55079263e-16'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 2 }); + T('-17971633.8197599429906', '0.00000000000072444175060445516360', '-24807562243292692471.5663234061467186799864528993333315852513700731685270144891208065879125718993132968525127360803805813806975273460804298287743355060498501697470487114941400057032058166324121919574399010655184635124552427006839896177716886467257201446426054622642030940056084459367696125930734507840625793302262'); + BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 6 }); + T('7738.1660360868845160451665257', '-0.00013322685446', '-58082629.567826280089486145822646032920531358164139905641663229583090766308857278112456607796728131203226187766288871667772917859521457923341260878704078652162152083884004657299480010555823791683327265430057050676688325078391'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 2 }); + T('9542252.9492073016487924', '-298.5208', '-31965.11917831957320492374400711776197839480532009829800804500054937545390471953713108098330166608155947592261577752706009095513612451795653770189547930998442989567226136336228497310740156129824119458342601252576034902760544658864641927798665955605103563972761697'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 0 }); + T('0.0000000000000975125214469340841699893980567675388687742530368069', '-0.00000001148768872931098176730951514125236598', '-0.00000848843694712319838366658450360791643626601576660960889784368089967445990540019793195644880675265919312989940350934939057591033945093601894142676408794632249741346584699025031667943615669681250164400946134971022381325666049668573820379043934993559074372461881237'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 1 }); + T('0.162194827931997338728669312400303856617210365987328978465167', '2623516118358157462098460478.3811723452565119574874', '6.18234539506095031216263229216523168638254707932597128419287812998721307505199639410335078779694583526697941729e-29'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 2 }); + T('-2059692816797520379.32842416453296', '-12964127.2753715000848947850354508669649149', '158876318709.891546744316310394864047495425378327410507201874903755769032658054249861925189372821353920699812490827867514735429449171802287289068638336250267160043818229820423'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 1 }); + T('0.1406934802917583885630752629806', '62667.219426460', '0.0000022450889249500247590193479664257778255336779588529003922703526817168222409078658356042819731349161949708289990136671786988264944723086110991979668131760414141394303539478675646256521833168369878149802399309202930970932634782087084011676697387518594564070573519569509169449295645'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 5 }); + T('176248024513059823373194289840565927902352.86', '38.7', '4.55421251971730809749856046099653560471196020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416021e+39'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('76455549372627137533803060035463866722472396559608', '-21131.89651', '-3.61801645850607743364360532898823413376977571425784e+45'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); + T('0.000000000000001135478555683957706303513555462359', '189016966284140000', '6.0072837798964993072829358730209731598369888466198213610171055146478207626503126100359698662414225938118284270540405919797956454070946483927169088392e-33'); + BigNumber.config({ DECIMAL_PLACES : 146, ROUNDING_MODE : 4 }); + T('-142219283571886530729398730594', '-380575073116.33401952748452383263252', '373695739995070573.67226573743700415270692911992196491865319849810652910152625659145875000291338564642791685801818688506705202501418506516688339959731985528258559282'); + BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 4 }); + T('4.64704', '-113.6', '-0.04090704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633802816901408450704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633802816901408450704225352113'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 0 }); + T('21459427321746135387.3702529390027221334446', '67497.732766399482159783161817146867660120927', '317928120578720.9029750133284438224559146706091088705985299404418477748542993137160586137448853914641138705825744759829365714695336888738466247648116155976899562989458218232552756997250792891197249845116756234257939037807888079628140065759592184047139872124822303289269063928647566571092337'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-0.000000000035432725433359029849418222952863128809828867205625722', '-297913391087344615896316467611573', '1.1894e-43'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 4 }); + T('13592077261045786588042900790480874993069896724.51', '-1709631102395704692.8133645882281', '-7.95029830821352022772024744598055088210575090053257820400303479970758903263578867251524731757531943220074711936359339635075091337771287393434924401467755980575e+27'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); + T('829.42257576637751660492485950362157', '111.1326', '7.463359768118243581135732084947365309549133197639576505903758213161574551481743430820479319299647448183521306979230216876056170736579545515897225476592826947268398'); + BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); + T('26411720916340393.207751155', '5506', '4796898095957.20908241030784598619687613512531783508899382491827097711587359244460588448964765710134398837631674536868870323283690519433345441336723574282600799128223755902651652742462767889575009081002542680711950599346167816926989'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 0 }); + T('17261708.85913600793736159161167742', '-85482890.0523260', '-0.2019317415282722382239676088907393151680198761941505716321111416422415339774786450609525768085355498148994356693552607915492401323983601961997705549455663693859472247079026635614949988995600486551357926021378607613820063617400527183345111689652557204457'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); + T('-3', '974600880689632826443562516081582.2139098370', '-3.078183140853703990357711769812026186512353369190086524932148100756279408052597515604293473601517885e-33'); + BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 6 }); + T('45356052342566412697400812327077958846504613', '67538307534082258099.767035610038138495013', '6.715603928878158230041124255214648345667892573779674667803726766009674324475543077018515978647504489470427431412131426703920884145599401841503088786322763717526811984193256171085110801948249806043176350072300046126174e+23'); + BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 3 }); + T('-17762788846003453381', '61568.9541290053055226999', '-288502364499892.554690307576787650187549555673232897435499322188524169949848746784598012446601239035142749036410151753986934077586374498294725785698368832178210337801050546922644148319494585991617779085830056772604231371177970566725288535306174015228066208608076191387185512913492008'); + BigNumber.config({ DECIMAL_PLACES : 202, ROUNDING_MODE : 5 }); + T('-9942592813945809', '-423540485384145468480063747315317576972', '2.34749525890730666281482900648209824556464116660343656918826028894231787562187379971191855418324369430721985739979640780395648777454629061898551719712051609800578424543848324768824e-23'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 1 }); + T('0', '2', '0'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('13302381359621554467656583', '-115022.186', '-115650569878941045927.05778518241689477193556380505583505429117822539036077787636552134385621918192373773873502977938534397181427242219166309358787529911838051834626060749706147994787718605869653703156015483830223849162'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-442471201414302445462006221364668630397900156747.65735', '59674407734815.001544409919396048797575990', '-7.414756479537838582945380691144444660725379430037394146551147261640192140085511469139554468901202598378831488181988845112847410733284e+33'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('29331354.27070268082207289305372553429476135102240044497', '-2091561072639.33038179945969784', '0'); + BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 4 }); + T('9118746645777384605851341529854699343.1078649850526400502', '-2.82374850794705241', '-3.229305520698434858826322493589979206358643902355429919362321390430329801321221282743618003100856587028890918220116872565565700130928168624496828239415123585758428952631806803677318960304632474943280591680787917400210546486620831152662105365273691209124248128660654417236292906866589894609934712513693175215638890610125046436352e+36'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 2 }); + T('-75767603073824579636732878.60830667581364469489586617', '48721890266574824673213498217977935729.303665345246312959', '-1.555103930887595327515969372024528263003147339000537251022806156470608360385103819538945290638404040414859408137918678947e-12'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('0.00001057915609291582521418293339567933198424243088533', '0.000000000000855401471686587510704914879', '12367474.73915025745767491397343145568563578255237433592282196392770624'); + BigNumber.config({ DECIMAL_PLACES : 202, ROUNDING_MODE : 3 }); + T('123.733252579139418919030', '5', '24.746650515827883783806'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 6 }); + T('-5670460450363806561944175150218603462.45', '237623661324161217984833314937787177510', '-0.023863197876697486254202731921090655916785245853713803659660900866816149928948576049275832117606225854444947216651605306499360092208653612924601288005351624694995262147477365095952977164724558'); + BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 6 }); + T('-9062095756784282458668427780.0433054150815749626275435765479', '320.7758098', '-2.825055842719061061401902438605676123861374462853134873933969568300034574489912175416165062706046981975384603954633988114399267272927635829477064264588445285e+25'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-0.00000000000002559582791709', '-5346890.3', '4.78704938402981635886563821965825631395504785276780411971421968391608857208e-21'); + BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 1 }); + T('2.7462028447340143813492102960710151500582482395278967917', '-0.014378813342773459473', '-190.98953295156362687304003245081036038745328333087398801304938176323246884377243513087165388642606975948923130755279418548871199955621738186233643020687'); + BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 0 }); + T('-2388816615532673533361613193322.022886690915', '-1162756.6', '2.05444253383096129780008403592120903608796114337256825719157388571262463700485553038357296789371051516714676141163163468605553389247586296220550371419091493438953603876e+24'); + BigNumber.config({ DECIMAL_PLACES : 156, ROUNDING_MODE : 0 }); + T('-35.72624', '8979760.9461162681647706770485336761911423', '-0.000003978529073811429247606739529684407520439393359792509636952684761754187825079606700025103811740269270519900208997076832992186785427657903645156908362892'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-21102980896734514069.74641484030925718667967756412', '-411366393698.5788509880915837134260203328', '51299720.20076422352733601325135757218760670832863785816145885313612176208358213282099040407670795'); + BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000857942', '-149323510112533679075430064.88220889733813237379723', '5.745525264932728300562215911707874500488713513394074754508420454148407744599533305751093263991520298839e-46'); + BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 1 }); + T('-7.01389529', '-170766268435115632110512762.04', '4.10730723009562063103039027679778113006078206691174918289494074299420055183319828658391882328272297988767506775477811322591274028612459068096262703396918978176993456365120526434366584262544e-26'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 6 }); + T('0.0000000000007340044381532477529768539197482138873581471', '-812619687', '-9.0325702157551562367803417461163956191249289780005046813491733679841305641417471590249572676178592261942086076976867531883952498925859766919479025617059656591854142465539356296692821816904861671164508718086225740184411751766974e-22'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 5 }); + T('-98138866', '887913', '-110.52756970559052519785159131581585132777648260584088756443480386028811381295239511078225006278768302750382075721382612936177'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 6 }); + T('-13199203667167823812', '0.00000000127825968245584296366', '-1.0325917220364012939087160411460057098934786354552912480166665258832928079221415255098438444510364283253921082003837234118142939055265028757705297603474353405718975990306520198513381884861802654771707794753718030606e+28'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-0.000000000000000008252596880488606318233830518207282931220945146961874653', '4.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 2 }); + T('311899.2496', '-142050897187.306379259288918434433252839170431619408248', '-0.00000219568658682059498318020498495863423063649170779155010388237623009321866831668416029300549544555119398839313117715563'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 0 }); + T('-899049538242046286', '-150643546283313.7', '5968.0587746601070631567503432302860175845682515987170518213674868978232776548964484775468845174875611589618604973506607685120748566818825260292673845137842745953223655700670901466411540944578671908652'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 2 }); + T('5533337901390587809.79574358', '-0.000987568800386493303416273452480490900997620823', '-5.60298978585093998357843546467132979777594694510448034823516459881734039680196055554964379985123768492603771418368398642708641373005039917961598281759136751437074739356709192637293670302e+21'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 0 }); + T('26180563908932863610909287', '-0.1208792569233627146774085438', '-2.16584421308374733831690893198998994972717433544296813055264156238894122425665572894196345494556883235730588839206891028754554689708463651823422156975409076397009143309563562332527365030377059675685396472331081714389454799408470116779187957937623517879630605002e+26'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('61310275236913800', '598047502740321547859591108273.6', '1.02517400300115223e-13'); + BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 2 }); + T('25105.51396482290116342046309715665', '-361134266899802217610069225931.63704381274673', '-6.95185039634815410513977245227841130749665095900068916971268869602164190768574e-26'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-1.38681922', '672038', '-0.00000206360238557938687991'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('63348372957199911.551749694548357719036470867702', '16216660366241327772', '0.003906376006312247788587132691339369157766917620803466'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('0.000000000000022955', '0.000000000011585442762125490207390508073223469', '0.00198136579423992824656487415634032754727570950749590359266700942597622350669782021'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 4 }); + T('4275777172005941344244434.707755460', '0.17508305452156496745', '2.442142207131355577414744211434928363843057421874272303084593488123913253022015612207385947732342648771669844650740642167401879736270428229355078054320765846967579336189114009373129535751442277110184503912484523792865823e+25'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); + T('223099698004028435390543346369353999273727237', '-382959025456.6', '-5.825680638758359524882241656616679688711074048025173423375270539418287561447624584491812445785912571858444437206915987869256142844257672677414892247264208487837993645542554066835922754615112335432595452324114613747e+32'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-4222241040740745182174499811156187.24809043324', '5484715337605.72313230', '-769819540458394382268.42922'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 6 }); + T('0.00121766778329132124219386288082477004017618569638774546798129', '135361.52733113069735232', '8.995671128271021856434496019603376799245122550024256524760532534659579046440323549352079964018705774551628860626874092557166887044961719866979025129109063471805771591775924349655343760009892944712072498971022148857971070382146043409244e-9'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('-29.69126406417232764365281867234228725032768317', '-0.0000000061896202523816506893875836995940340025004792330025', '4796944376.797216559723487849079072295274121421'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('16981970476423093128815155412180624.49143555605', '0.00000000000000000003516450712407880988978013520561856111228842804326581136', '4.82929290505958223782860433683966471420124949383441757628300879625365450379079094264641511946049356869951375878799905359816373460129493012e+53'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 3 }); + T('-0.2272017125206851495671211156140', '-0.0000000000000068195452657907516548907', '33316255507593.62331026774988946996619276605420745678721035707677750890846815352758617488360680501124786587700311719102155565520646110616431806127494059385852749809074513884474832308582512490107213'); + BigNumber.config({ DECIMAL_PLACES : 158, ROUNDING_MODE : 6 }); + T('0', '11809720.4495574', '0'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('0.045491129411361787', '-153624838165477244600574548551921312753229.8707110971450178', '-0.01'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 2 }); + T('-212959.320106167939', '-49517387416634629408826935639006310.568', '4.300697819825353398347007512679350383374321186347683671042336937263050642578446259635534707353878947073451327186776365214863326172487360959526166095644263534689156653312455804047960091225651057575472627043851681091986767423888386716331578518e-30'); + BigNumber.config({ DECIMAL_PLACES : 139, ROUNDING_MODE : 3 }); + T('-7847330.58', '-1976985309068564680048827526871576339604.43', '3.9693418782647328939318721495965566120976862338388612226698610218259502332617228403481309333560361728716024e-33'); + BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 3 }); + T('-8988.631590', '-265.707639073', '33.8290296107387444679980452268297137608506276157830154971488789929300144566641870039103932149822056689393826'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 6 }); + T('-0.0156527814519736690639741902408204272252694906865011442255906', '2613062806550695879698624732.9561805737668086821', '-5.9902048327095923403726362953721862498926659612726930178232522041611199327876040095586810456385744447078115676964504010225050395426045739125487229810113754206859335878359908904415693135098956172837513199786294897788649e-30'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('88604695212042184730647326586102405707636303', '-6832948397232988727.732', '-1.29672712365166946691190624889138100466055179316813243528738822617160013588188709677302e+25'); + BigNumber.config({ DECIMAL_PLACES : 300, ROUNDING_MODE : 2 }); + T('-2217970.01266', '0.000000000008384762036013568225075563050647', '-264523906955683444.525670971423292764069156404980999011088710210052361611656674471144119063588436076932903881289342036777451356252228389071183166368113332574070438483896361388600223343284634760876384627261648322397038130563687746642323735843376989210789485976684919139115415174234807221412418170766452318781475369156753'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('21259981664254395017814019985992718901028251171.056085844', '6592974422373310068.8046975352', '3.224641914597526967746077143881926952325076843648906889544999960217260558879222214661907863690354233223885025261e+27'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 6 }); + T('15273355225419786282464482.7182808211399', '0.000024842173179136415806623356255064218549288715', '6.148155845820704202638997820824089665356112091068693661317846905908212891505562283795846722418189816633262704999389780246483678927186170978163171781362373565813962341223100824848911221293702114414020866286404409063735055331318301005689391685528236047365792023239366921e+29'); + BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 5 }); + T('-32942856416160.6254410068065507966469486', '-1354205422219646903.651822968655', '0.00002432633622317413894713635654596975735563706052736384690663246575090719595904671583305943358238878789584488608555306976925080617152899831590614649838624886282040452689515845098062552707681103828133482792775977170516537911266568470328877879031403664710000018016755946949499721274136754969752328'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 6 }); + T('-1985428052909.872403846592', '7977499455506690364301316694951258.25935', '-2.48878494318088056690916663361759515082273322293946509724498616946968178129739307538248941675750348039715194736517231749092346179519771372420746933372593127737956638051461690676543514604131663633247477631561893206451406436721610236366849106872966163e-22'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 5 }); + T('968075567856070217500255506122089297235', '2678374985233514131539878.905540', '361441386360494.4570753280128035034061543732762526017045197148269408890626289361009885035636697730030520657547690656029078221848514432926782873805670352343953416939680931297739843376'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('543731619083314243004', '-0.000003711', '-1.4651889492948376259876044192939908380490433845325e+26'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 6 }); + T('-0.00001915939761660051442926290816554006973466772', '1.091053595368939785', '-0.00001756045504815165740716492578382181542277356497744937711656254334438217521245641404012238398074868749271215691050134687705544734580041'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-5642757788313.97383562537970269152821623817307112843376', '4293762849467357272.622705869809589', '-0.00000131417546477071'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('1597867934.622738380483', '-0.000000000000000128848510530738023395330109858863986420175251', '-1.240113624939072900125261036778809203819840398417e+25'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('-8777898032.8632272', '33308079129708.15211726337829337207051436947767161', '-0.0002635366032'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); + T('-0.0000000000000001379179697978904907960107167726287103359641749409818356817067', '-0.0000000244952749758450602', '5.630390756335343880228632534717399149361840657285468531201614343418043525866901580043283877338401118232788292401929906445770226870986824793803258770822745556155030526484894814792033968209531430925202738087493626476884855566342479e-9'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('-4141679446066006627.9608886985073686154333', '-18961285.58196199793057399601386162829090039', '218428198244.4278419557623014002680683546425619603795075142017856682454017101284558622024703'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); + T('281.2871454231', '269668474827252576513591170.7613857955918559791389', '1.043085016160269564393708548028105270692651627252178204951610873882611202843068009604545879719649886994839396140702961359026379856819456170861045e-24'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 2 }); + T('2.7229559967662288866', '0.00000000000058567854965772063953794886918', '4649232925394.93781860935558322515658671598971733145713767131559798128464232545855209712553601477831957190853267901869606413497736397235584282605970751924251350623748749516399995053411332671306372093280431669198414462385346008200006420521025445267909188893831345342476960129794326198'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('426859069.1', '-984718042022771699.6791573112854062545212199345225', '-4.3348354644052397982223661404408100746970500739115441010077264264405400229e-10'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 3 }); + T('264510322.9', '-2580.779257134023536', '-102492.4243981024847755716572314312118932470242809696371038317717409907354978897931700681246528783691991416483947730164654155062499089173914408547236968126774849733585850175963409178877774006857628821910533643409563410584746192997324020088386891544990186760127044869962464068772918837138'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('820945094966845928402907835763', '0.00000000000000000018795332944109846489672721718082863422', '4.36781352800731763704872593752206560118514222957381423873618379816877840082798224148170963378467986617411826798499503895101943968144438544390648422e+48'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('8428153740583528916.3939030414220235904495005', '-1188827687011.6003982742558364557112236511301', '-7089466.23019'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-410274998.10230531554114', '3', '-136758332.70076843851371333333333333333334'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('285.19260815', '-4501418027858507746954982832272073804456.43697586735', '-6.335617051893239703154004415551094101945459e-38'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('1035567665050591124.44398372571422734755', '0.000000000000000000123091976846972400512913592312045541945831948111786420277', '8.41295827377933765468287219421677194106919450426442791848179371161311178569205798998241174358172210632895585442e+36'); + BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 2 }); + T('-4558141974675690505097770234721323909071', '0.000000000000007409728192119573241614850440140493050609101139', '-6.151564344186586670592542650950104254277652215431759443150476481624188483156733429937657983911624366022455328190289175907728294638844009178183254105443006945083513427844368843307416077579187634715522435004896987702900347493978570633797208996490897547052618208370420565e+53'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('31407764315159662200067885019895402826186256783', '-0.0093371062', '-3.36375785413682691111169807835059248080376945728645562583405123955856901359866721875777743643956839646956141507740374635558927e+48'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 2 }); + T('-15830122567704120.68178392631374', '8945452942567.67418368693312139322725286117', '-1769.62783990234629332620451072118507080025723758839849455597512218550064802710005390298535482592120540954277625242238959857234513106009978151'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-1378523278084878860818889390.35524411345', '0.00000000000000355', '-3.88316416361937707272926588832463130549295774647887323943661971831e+41'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-56899698397757607696096590.382779113568929997430', '0.0000000000000005023618207651734114590528811235569722409458', '-1.132643764828519777755606928628467323773596578184307681163857859565768897002764e+41'); + BigNumber.config({ DECIMAL_PLACES : 263, ROUNDING_MODE : 3 }); + T('-0.0000600118439103493561923673561608022055894287240725267', '-2560824499779271761474401685834016654899.38799768005660', '2.343457894733591838253729742409168473565323412287521265908224954493873196011703741327411823466070576491299928032956081000949633079376137909369156454292574446212432716398088837873294371434838632093502894558754404881169283e-44'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); + T('-0.000000000002187655945906377', '-28717988545296791672168052', '7.617719961325962154170436496366890092278947197761856630651737112401104934775011012406803752742097272794591198670068215068387535565015504650380691e-38'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 1 }); + T('-0.002056280363595356735', '-30.748129838', '0.0000668749733537975290957596352530401332046046891029132384529382641928468104968069050209791168893398374494011072153974686881572937112429790436479423'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('2.827', '-5.316325518146', '-0.53175825866'); + BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 1 }); + T('84354313385837246179388', '-679225881660.52987760535672379030', '-124191842012.2816609448835112993626132706299809213176145910414427985934837386082563483576028725394970339459568493134350028837910841774878107786831'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 0 }); + T('-15.3', '-24166770', '6.33100741224416833528022156043194849787538839489100115571919623516092551880122995336157872980129326343570117148464606565131e-7'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 0 }); + T('-9203391503334882761646016027858074063491.56605', '-264910247', '3.474154589171057154933691948827511403698765208580247935822580694660708990996486443953978118483276337740155442156225840520242314371478427559655705e+31'); + BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); + T('17100448156828327.6070351527899412372645', '86001744566119445049', '0.00019883838686180655106704412234097880540687425980093361120412645135461909586742035306583853047398486905365559795765954559523258329214134967507484126229782499580692999451336753772923203427776524078068'); + BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 6 }); + T('0.0041158504', '-30.8580646417', '-0.0001333800563253099046022016875967065551874350748712852645291112803340252133010036088053347815215066861501473163530436354092693293354978901272291063158428369687628983187295271949420546605154336431231'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 3 }); + T('-359201865759621599231435137737', '1485.9589705589306066149306930020942678', '-2.41730675527676868575525826254677992165271049611384971326913736849832913224704204989878957127813717915721483155415827217687680518964578718293383647603487233966988632478593915232687906285924518504808390308905275083955966027462428384027699310885682065271729258191638124369565506600037108682617e+26'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 5 }); + T('0', '26112552580415548829.454813109202677552874497', '0'); + BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 5 }); + T('-352671804.585', '1696.936620673873342381940242796294603372107765309823463323', '-207828.5071395005367092943298259789255338090919326321297461039650049780577689566616688127047378217065014720325013595202248319085784612036270399131145872774307933536677752594787945158629775706821378690743247333183853076996281060440264'); + BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 5 }); + T('-0.00000000171269930539969704231', '944703678610869243454463118341824', '-1.81294869934043216662712864317188499436091872940027912243236517712674869223869442589695e-42'); + BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 0 }); + T('-0.265047986082328558', '-1.5484184', '0.17117336378999923922371369392148788725321269754996453155038715633965599995453425249919530793485791695577887733702983638014118147911443056992864460923481663612367303307684796305702'); + BigNumber.config({ DECIMAL_PLACES : 111, ROUNDING_MODE : 3 }); + T('56067417504154742805378148469.1607375730360427549902974889', '-181863217772701087328761293012.050295848971748707507832637152', '-0.308294432435643649946833209129017221267704219884703436832735239183109309530322216003726792980686210344360978492'); + BigNumber.config({ DECIMAL_PLACES : 282, ROUNDING_MODE : 4 }); + T('-47.4069', '-0.000000000000002021317102553366582955', '23453469987521845.770524425967851124105220851572124236393028040375453875179222282083506894282959800509051503740098321211966567319530880012655344017265829834672622891855747079730825302100785006564711199823504249095919069992545937605688638351150429254101824529299512127014362783799114227314523917225154'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 2 }); + T('6380562805224216321260.19489976232092622', '1599761301096557306629452702423789588634387419728821325.1779', '3.988446776935193935438503918750269693335791615700466575490296006026433080928697191401948927916667e-33'); + BigNumber.config({ DECIMAL_PLACES : 221, ROUNDING_MODE : 2 }); + T('1759056639967675.7096306059015137317304452971036149514', '82452115158542856489311002394', '2.133428155948792544669300003342644889432951927589651270845053344391334796806087512268873641217314349652757018141990599665445263970630705999453435387813576226832967761787849111410410275753779129580827233445522e-14'); + BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 6 }); + T('10.30', '156821478703373851919657687333409109426.068860537782891113', '6.5679778593864299233319236990231085902197603352945852251007005121305096179541728395065617082388193866937934802418388056490459565984353922398236818e-38'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 3 }); + T('9.39532707', '21865273.0762', '4.29691732513812655458153925363231041630342078407524736843972405580726236290242559271202192789195584681851282956445695359890453395040960673021498369389754440866149e-7'); + BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 6 }); + T('-119958353.7193570616189121', '-1972901787460625926621548.529192315776947', '6.080300321171011333426560365578141445791070323044439490519457009806595686695357112349221523209400827863042675502130313222239789015881844803819730658282899030447646599706459051113e-17'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-3290230424586778368943368053029', '-121499567081947.8450551824040501304428540', '27080182288778163.190297462835528090510910737945317336860651066448862309152531317901947591887703962208030103475078'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-0.0268369550987462340036470753353527368958953020', '-10', '0.0026836955098746234003647075335352736895895302'); + BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 6 }); + T('0.00000008464940', '-10814673.84221270527272783306942794070834532', '-7.8272725775223705402694117848921764898564758899660002174687237921588809219075870706055215191312105090918077053774782323861506209813727823317747835406912771028381852696380348476521778839522350429687391826774400311985425246775291735676477975510714438552767986649934466040459725e-15'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-374583053453.43897699560661370517344768134808858', '7.35168056713086916977461163418913570274616', '-50952030632.04186780174350221868264243105324832475807166296516121504551294423226386'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('-60071719106610.2288352018331254', '0.00501998197978963117195067655466', '-11966520865703906.7310651460580073640208855847319225457998060130294731523775775336527002724567433709940800935076'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-622937646596845153117415.75517279', '3912077.728493156745922613054201249680710895947', '-159234475854033337.13275028604163009953984261467058037081661119902619958495804913257'); + BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 3 }); + T('0.0000000003646020432572001838626', '1091531741592615708576273272712644952873506719196148942.633', '3.34027888850233636794793072976170197689582848190194124033860398017154371786146741274972470232764995941108890323423767978599685699677641512e-64'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-695564016100349916786276554070274602.368205', '0.000021807846099224461245', '-3.18951267784802380689318180163770317827267046257893070426032298566217981904220838148e+40'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); + T('0', '0.000000000002462', '0'); + BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 3 }); + T('-26340743870367645066258596290350402911506188.407', '-0.00000000000000025325800938698501312552543', '1.0400754524654848646413132865851741682776669340730924517775375597395665102029050181283877767316791189917566940367065462948761838783791952694210626983209654782068564314578852174268865774528453410795459e+59'); + BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 3 }); + T('3145971493533908639356752.3428829203594366775324617', '1411910722903870720901.9163857', '2228.1660182193407935460697068090646470927063977363713900785292388938060452858375531142570291937800918940925004936303064851208377159576859064540159853441191146012610331094316843809482006352190151093789826744863843747902949203936046617256816050811055369450531035784306407360714168539332747598487861082'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('0.000000000000000000020540434276369914412', '-3977804531558458498337024128175243085272903773.6939696', '-5.16376159597827354009e-66'); + BigNumber.config({ DECIMAL_PLACES : 104, ROUNDING_MODE : 4 }); + T('-665896129011017549213856625332.23967335800795583', '3171.93522', '-2.0993371012508179445539137628801879294306898103360383255241889839099551345818468512102841747190536886185210301993494053765700801418e+26'); + BigNumber.config({ DECIMAL_PLACES : 294, ROUNDING_MODE : 6 }); + T('-0.0000000000000655182506467117431031071292322137572588320137854730', '10251251.92267799461446643', '-6.391243834498999077819661508396173404757818195532189568588068444498054042602663946225790543528481226915404809942710352071181542389581007911463770200628955475560872909396105253165299462108682255029584836334999045992165198875154529047216283714400212841149964106826775483255024e-21'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); + T('0.0051158414954496467729059421537', '1.28321419910608337278024354164318343138601', '0.00398674009297392440827024119816861452327703025337601844912107644128552645607669198736259'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('56038962776461.2797346', '303129150133459900601496629531', '1.8486827398e-16'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('9915710834500.3465', '-1.4', '-7082650596071.67607142857142857142857142857142857142857142857142857143'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('-1549027644025944', '-91820857571.85991312786431099', '16870.106476773641698142767245423408839744996893810201880487331532805738599959252247675'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('95506379529996131069130935396812546065947494411473342457749', '0.0000000517879477504743912589', '1.844181584297695354141847708676436470728006387574197908007668346681e+66'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 6 }); + T('205.099774774230626478083460675', '-449982301573.440949313602', '-4.557952036270399715512524788833189846107552157086408011532774804177977983307814358260811959717048519937e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('1482.8406', '-0.00000000000000001727790576189820', '-85822935975840795587.8710037491895233420516380216740793652331081211380860179235'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 3 }); + T('-1153104396365529502939216.59', '11765014040911232042408.3495212457965', '-98.01130643412461750008575478537024175105975954383637398481500509465403272137237131402487656724462559539085144272214960543019564189479814618'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 4 }); + T('-1239516.78884240684758533', '-35076195036250765616720646036910081973041049805570', '3.5337834892336049491710352405683891671627283710554955550882848197255904639968340024230631426905185923690614073106304702889741211759104136142842476783745615453130980374313313531532953958197012166387657288379805732159e-44'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 5 }); + T('-57716520093512', '50658.13516443959833837448', '-1139333690.55454618595478461694822547462547264851682943358948704901734187004406684500737817259695270067818913111625866674119051153278375404248580693866944094419491846668226539159657832785469114661591517274015745537698719625277031844413727331306168805098428834321702167581346752235995'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 4 }); + T('0.00000000000002716456899405', '-10728281731479516387166487775598.983320673', '-2.532052165850773880400639191130059263614628758693376705520159268895877829358368744545118549170323002994589211731468097142850172933664457298662526848191847e-45'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 0 }); + T('-7831101069665371600393129611782', '-25672065508112239.00325538415989789', '305043669633469.28379784439441591241205239521437052790596615965381149546130376836417458338289091904946530427438681096175171393085499965068769049271289475149206839907066697133691363829733350317590225385534036095448597226005282307963626985030720444042796'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 2 }); + T('7.6', '-0.00000000000009046796955100059485380894000931938051003242', '-84007633173590.358252556098142690359633565219964153721599855394205571211266955146594640888040812855428767007008199662032445736919870997047434103550137996586138551808154982683578308450810333186258091757582382733560731294254511519080101866036826193549058049570452361379267913665552070415000346145937628259422138795'); + BigNumber.config({ DECIMAL_PLACES : 268, ROUNDING_MODE : 3 }); + T('-9467869039621038835918314441.406', '1467228723133.957919994774520427', '-6452892374815254.2099858564863008178760958711743454969529256224127442518877511404250684709463273791482667167512254302548073670574538231125002297555281578906852307437260675053827291979912207296468148625295990357643458983072701448003847839460219008825856231103598845535310865494523918831'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 3 }); + T('-609475310522475962414302476.222653768416691', '6102081498600.6170', '-99879903384156.078749805777286290461124275708929727063525652393750840270442836941816183295511467034424683326998224561272207931216059004031480454208713078062289324276976736786404530462985315920949889041863275437581382020490704215599274302930558903852377964887825938352121407275370987962'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 1 }); + T('-3172872984318758863943564449.715522', '-142.832719255338450346216', '2.2213908695854861107920603096617560636821821633979800975189910715461273042413884020923206593619040390651566621421138114193338343464631753671317216021303251769200721098511073791840987458297910662981585747266633485119144011505619549897130886041169334765209636819213495504816905e+25'); + BigNumber.config({ DECIMAL_PLACES : 242, ROUNDING_MODE : 3 }); + T('38561261492174617050435836082.0252506143701229390', '-276.7', '-1.3936126307255011583099326375867455950260254043729671123960968558005059631369714492229851825081315504156125767979761474521142031080592699674737983375496928080954101915431875677629201301048066498012287676183592338272497289483194795807734007950849295265630646910010842068e+26'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-371.84945', '123092242548887.962501', '-3.0209007675874807184127880877722661988721990619494e-12'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('2034383814096560337662039352184036335014252691742261', '-886278493811685823107.2319663', '-2.2954227461247874787306595199684477740135912085564852332831337397886e+30'); + BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 3 }); + T('39360061748459633473756799064571.8270', '-81873438148', '-480742749282248371932.103791935798100887150739519472610288065021495327664372558847142357581501964995505736312980420166048209865389'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('10.02', '-608093636084537131486593586398', '-1.64777254774740322306395336991397443614683286042172176527e-29'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 1 }); + T('-48946040302', '31570130776951076660.3805596689047740684203', '-1.5503907997028266569235034714309893247109342272518379694778625499225992447304505898388797230061708147110119482982492827839785651886193230126471131168581350494144100317149913800613717349927008880617904338090309840672640085310916032081385253615935028604127284281387e-9'); + BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 5 }); + T('593265847.78057159818104', '227846838.20312', '2.6037923214527528437658495939903306030021976777145075311627946764405532163733377361604976015997190497024368037288'); + BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 5 }); + T('14455640.6170216014000857868526824', '-3.0', '-4818546.8723405338000285956175608'); + BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 4 }); + T('-72280684225394597729700130040325436.019711091110467647964705', '892308799850790515684.48664808363416260181436208', '-81004114536897.0695875523366475258607915037550630773694304370770483952947994050812890997846162428770238577341236809960785489011487107136201035519062478603136775513495087053730649572659492563462352276930583664314534000410955016670927197175753702974600911581347257782'); + BigNumber.config({ DECIMAL_PLACES : 154, ROUNDING_MODE : 5 }); + T('-29.0335114169077', '-0.00000006868270154', '422719415.0189174402122680394496317012518025655983828384511737131066845335973370042252417783972916217354719969857493173964630279451293697612465812741820696879943957'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-42119671121.1776108129967889823985848062573', '4775069674.08348', '-8.82074482594057643'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 0 }); + T('-354744268750166854753379871353.8578159230421026859633205', '21330178447258444722314.0', '-16631097.092193428262677804869343124778290967185317934376036587888953686313580577100770656549591099652587049117622472847710788834217172096458028810599783892238748655611842406819858733617818766566525908833731016009618661019672856973156580568031733962692115781082387552380191'); + BigNumber.config({ DECIMAL_PLACES : 211, ROUNDING_MODE : 0 }); + T('0.000000000000161569825431083235577513859303754951', '-6.967425061704654826122536362248981082078764528', '-2.31893165696357637139194368501960338724247231287711943486094408762260380439198627140495092670605965201075556177441056927057320135095371632737446304387050194331027521855065799327862604397351977316685e-14'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('-1252668285755520661.251344', '479507', '-2612408756817.983181166'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); + T('-239663672764274843796937619.150383232608198583606227651159', '-27802725.3571717730410166913363023569367610392303781', '8620150351643605395.52'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 1 }); + T('11810621498949943142887410568053.89406631535498', '0.0000004432223087743353888455574417656584470134825242823425701', '2.664717290880605708797551855406387114654984277046050427731725364316623529337486816821739538655867598918228544552795556861760061035132724785526563947790437178735446158489338509514582529224487403400328556591965480924990904542097e+37'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); + T('-0.0000000293030744913025', '2622073217675502577313959320487222758.070095368248839', '-1.11755363251374061113808739620508682574989551743699198867860249309514442792920940949e-44'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('-38053516416360899172842557379.560501', '2465703.94', '-1.543312471503002066535309887186232950578811177144000508025306558093912929384376941864318065696079e+22'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 0 }); + T('0.4659955192654724333695129609052460857753169372712280001', '-0.00000098977383542832026322076402221033475283289', '-470810.1008386576788537804212345438983561475077420796562854251380393044003068091805818723375736620862822143211298571800300907196710719003784495335296847039332269264433496495785177822463973270951061363327575868275367648790901030863136737556998180238017844800164524826761414751293'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('0.00000000000000001289546801370178581628448024', '-23.85306209433699851', '0'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 4 }); + T('-0.000000000000000002981449315396', '-0.000659989143002065720018777061933042049834879220', '4.5174217591434958975361177865700625660514957971505630425658606251053819431850586597294324913083917343441121107264661057253852617524504388307163037076537670913611180462835779571807945491272907838594433069e-15'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 5 }); + T('0', '-0.000000008614810672231220408932800073', '0'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); + T('-6653380272019766445095.580143843499016729419769919610', '-10', '665338027201976644509.558014384349901672941976991961'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); + T('-126024248130053999592229.79522479746216240298328685352', '22.8', '-5.52737930394973682422060505371918693694749926696725964912280701754385964912280701e+21'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 5 }); + T('-6093096693216885521122.4', '-475.1955', '12822294599205770090.6729966929400636159222888263882970272235322093748783395465655714332311648574113180785592456157518326667655733271884939987857629123171410503676907714824740554150870536442369508970518449774882127461223854182120832373202187310275455049553289119951683044136571158607352131912023577664'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('2838066023144006476557.33585253397606', '361913705058687862037.0743800454319040636013160786180375482', '7.84183075543874801608869674'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-8912120527276385707185713.36348174507076527', '-138595676937364.6000272308', '64303019576.1735848210918847974594190139268975695559310464'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 3 }); + T('-2109445934524366389653.11071202109', '-2529937073579670912392529854897594314244244551468701', '8.337938348560025060571399348991344614682842686609826968680827268986333029502247845634619255028765965865798251267883636812043257441345348928881319046703182133850281855508004183784428687514904384878079970429530453118570989563178752643128476337797e-31'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('1362268131522324849421611285979599323015799314.5', '7967841135862648558137', '1.70970794760309580373943195085335961896069021248e+23'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 4 }); + T('-13.3489335', '348247099139.4782260605601614309726108479', '-3.83317866336441481702261735465730886134182858179365305100303003206420508719336454481239879367453567875367648194559801630261667713481982249534527637719337682066528264444311854358819368151219273332995627808679233553687532950443756230818098136019082571670321383622182248022e-11'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 6 }); + T('206326562825.9072634574832909295302847', '-646549993648312966960798586111907542013270814184.525784552816', '-3.191192712904694159865083652735944999235332803105041830307950393726597401971224890197748512657e-37'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 2 }); + T('-36022378902303.6337241308770686270134088130947868622970837556', '13578424515590413.5570445', '-0.00265291299892293269665145659042413245901000619767595833864439662704864041314263874683099349326335620385223661682486177046611234091447'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 2 }); + T('-159540906057017882019.1550648164', '-20510.292270945915884714393270293083', '7778577893939490.00166000414527928622843397522207155300792172899843206724934309088909076517353732381926866850865842811485578741264404699633750435448046231006588094553667853303779375796'); + BigNumber.config({ DECIMAL_PLACES : 157, ROUNDING_MODE : 6 }); + T('1765888808226401695383202231727943.6529280993', '-3802536782039279982453647099788917361939070010171234', '-4.643975612720740191711625263989649703622782486469839070625079507044942445633503314180370572937935425472469260449687041164513716954415440367e-19'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-0.14912820615290798745027', '174530.1', '-8.544555131344563914778596929698659428946640149750673379548857188530803569126471594298060908e-7'); + BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 6 }); + T('-816281363562218723797692080137304200383227228307169.81050063', '0.03151207469555254421234990134028594', '-2.5903764555287264896939010825254815324859859226848271758791787494771312939546830200209642019019899286706064279512978044210399067893552614583934288714466179450822103579918737049557309222940603852366574213774985909043470490904834397325151656349535377679783068638817406000816614631650591652364504e+52'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 6 }); + T('5099800008.979562261560228116', '-2162291.608828653712', '-2358.51630194421444248681651513364657320151778113938948729659099335407633345047756202312930590480452477712257388969222067448002730285256774933100121701317740342703720641534492684476728201301660140548580482107'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 6 }); + T('-0.0000000001805289082291201368261085356193967', '1807', '-9.9905317226961890883291940021802268954067515218594355285002767017155506364139457664637520752628666297731045932484781405644714997232982844493635860542335362479247371333702268954067515218594355285002767017155506364139457664637520752628666297731045932484781405644715e-14'); + BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); + T('1146690180.71200580', '-881154.121319456844861836532060550361', '-1301.35030066582476879693704636411939807452648329356238433857507462952528424966993485504542262823070402510871938773184660967896035487235203047393259421235952996827163565066'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-0.0000000000000000160973160543472055762355765416426874371074728994675404520290', '3761171179921075710630.8843299219413810607706191431294990', '-4.2798679678e-39'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 0 }); + T('7070.6', '-0.000145606236436591691', '-48559733.2438373308995099933333650691937906953404860600972568939987638179704882475133025753274789937095899338360190003809613478061917688446777469738385799535514510315359744526190113615619213651499675465832878218353305796958194748375468606299490210421292097642179698165287732952230364425'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 4 }); + T('-0.000000000000000015480712431709444329812945328920683450802186603602697705421', '100066859395573554117646467521957510143339878235271', '-1.5470369036478656432194424074619716418461957473064336434329800639876360673327549747383799287649079648e-67'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('-2.9861577', '-438001798009735866185210.11251867869200344199670316', '6.817683656937006327592672071029593996285459e-24'); + BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 5 }); + T('-0.00000000244443694283348821783546244046969721403019898324368', '0.81903701867172464464688481587547846220480314400578', '-2.984525591770882357436538810320776975435486474958500771439280366917094188009518155617809588186592103521847816796300149642786943277747340425230201886751388570055323831421137744310284396301360161812729882087890890506501948381563897731711680708058555881568416792177287316e-9'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('131.8', '-0.000000000534986807852076265014443038071361169998361285500', '-246361215016.058248450782765246454499249132660343977423404'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('-0.0243005024640459', '0.000011301133144399209317520417050581', '-2150.27131824290731093'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('5465777.9742678260337809716148771', '-0.00000000305639212263554277266889509047', '-1788310450674325.5673025352058903536003073726626'); + BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 6 }); + T('3951104989166.291629778031837010936028877374918759391862', '-1752.822', '-2254139318.86197892870926530874837035870007046851271370509954804309850058933536890796669599080796566907535391500106685105504152731994463784685495732025271248307016'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 6 }); + T('26079196508929708235932373056884051345409.0707513615317642897', '459154144236437331165949377207476.625424383213', '56798347.213654808277411284969119627071835039723276157988509805667000410099719290968912107666070777543943894835923366076087775942160607756641235888432397328990759503526406626973382249663'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 2 }); + T('1.95999502420771680', '-0.00000000605336322719182915867', '-323786125.2738609501583269241656827051727302857553347826316924634768121285666678574686171284491571944987544448088554099397667480735129838824416'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 6 }); + T('2980869715.15307080894451368776466022955051977675', '-23037896331023947862905398641887126.9402219359747323', '-1.29389839780591735956453314130606673533568424583151819964363580348421330247329455844727287260042067575717494925438886592376866151971696912725349675942014665165807271426618105628903598173279898335462271449907718099133759837480195688910073846907971163203355866588677567e-25'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('96832115342.29552928350903812033911316015', '247856455866026795175321987.833460779941', '0'); + BigNumber.config({ DECIMAL_PLACES : 121, ROUNDING_MODE : 0 }); + T('-293234671779938033307224884628671156430', '5936683153613310921783', '-49393687382737157.4007694093795947121535681324810872175605782301354870877059794646681477642341525539923490233909589184596712731674420686306'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-0.00000001251521953904579466180770859989188568351', '0.000000000000000000124750779055900674998', '-100321774611.4253903299'); + BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 5 }); + T('4888435.07991914', '-289442314988433702829117882547583577.41646005231', '-1.68891514017723529611657483953131704184452585016197836704143088773553864559270182457600103339950763982674068091317404598027038798517586280063864161198278876132234359138189202564039345012690897624232010014002207523787438682e-29'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('1655333198571404541749487.56002', '-1.0384557', '-1.59403352359797778735239987610448861708785459023432583595e+24'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-1.63996', '8668688714241359135882263258276', '-1.891820151883e-31'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('42102134040566.391567837766953194508854271095335485', '-0.0000000000182008621430593045067184956600215229324', '-2.313194490988525515892961664153687458225784253642181046495394201588984584087576800999450251332728124457526e+24'); + BigNumber.config({ DECIMAL_PLACES : 300, ROUNDING_MODE : 0 }); + T('0.0000052581046503077188067948441172793667220173727', '-18466.0514226727708599966583659217', '-2.84744395537195048266342727302582394039417491162540524941848660662305983103035825975666206669623114383321681838821817930551745150733457073504217394906088556217541711535419981350903104910507241192273159293961874700978577956325887384646715132624264086076386282762979144477378516516257388546584e-10'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('-0.02697969836976162668872870309017164744281888345862', '877766362743928431787777072573.8203', '-3.073676494667914073439530205319061128326417250056270330825297287028028004269995453915111595062888238063730432008508979125595815156703686732055688781751144620211857662e-32'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 1 }); + T('2.9', '-0.00000000662501374231809', '-437734941.0576906985378686578582631049615512011028188110951097804347401955836597404580589129829605778905643317198103997115068187817453731726485246356961037075885700663431396317240892923939363561523028738906295809528193483699973'); + BigNumber.config({ DECIMAL_PLACES : 242, ROUNDING_MODE : 4 }); + T('-164232956492021053532271705054.8858957951765769', '6807214753671449360404823', '-24126.30751856954964206020674130573592945546606765066608501697337500424559349604716170982761660557081604606261463337684307963793106317313923735997783983778116076441066361756800392406801168698964254694276713530096866412055141505864825357839012225025'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 3 }); + T('5310118868764049191600032796055051413', '-110.2124649068932461007483586195603358', '-4.818074682614169031627916829261256132086439604079019185680382129008807675013960819276432592715708549843808512887032607973561680202157091046156292681159154721739305455357990563568687516460063308252017001793309695451270697843105205848708474750864740875362894876e+34'); + BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 5 }); + T('0.00000000675823179589774992292722262898462101903831106625531220', '29824576103801692.4843099744864667', '2.265994249969000763758565488858846719254006293524642113354787950891188552955632880608907146948969530378484734927638909309663133941937772963802739592875273798175292161122610492051972886e-25'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 3 }); + T('-0.00000000005290747543146156', '12.018932051814', '-4.402011360358453095032662746904434806012182693211407297582193017073085280237475283974936844315503436464779478161114158775508e-12'); + BigNumber.config({ DECIMAL_PLACES : 287, ROUNDING_MODE : 2 }); + T('-3089521084991426324087477311760754614261.7580240', '272963802600.2220186333174', '-1.131842777526177905839853650756986067625953813516061315307663981827974478132700821765932895424846457981456683202566942779259691021115137392247599854950379631304174725170924742331928722697213540501568226615277435727719614247769485289759238905087747375366474394045523699280642973120153035784222079116713075704595922959e+28'); + BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 2 }); + T('-1676880748951985408708849516627159241705.785761', '-2', '8.384403744759927043544247583135796208528928805e+38'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-3177336591875107162705100.847120305256', '0.0000000000025133263', '-1.2641958156706939177396507755957932147528953960335353193097131876589203717798202326534362052392480833069705275e+36'); + BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 1 }); + T('-0.000000000028334', '10467723615004932174204441002171952.5655837', '-2.706796725066823385651261296727146950436243675379457221318323732288291498753467079627663767184391153905970702346937019552656922753410201723e-45'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('0.000000000717483955208080534', '-61146916817930.97778189208423269418409758344', '-2e-23'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 0 }); + T('60680266058321519153090653083551290588754.97284', '-0.00000000000019690697186270641342992794281170737', '-3.081671790708908795312484307561547787551023984841927203616039477866919070506741735583986941315031987314779607009672873041925980772946272076202447947702805560121737616867817564182423222355223634900044472778215531037802904097886669697273143024852800076605994727968360184301126455973053596379264e+53'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('183.7', '0.00000000000000010925421487', '1681399662416520553.5928080391870011156486'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 1 }); + T('-3058466056978263779557608595631.7068690610921471685', '120492309309793.28082412090519793229370212509169', '-25383081082085959.6417354916668552862210359271410241209138811189333118748259044124179789792621032645719432935165756046530434720657749057413694554301975992351725184329609258318258501695357243024919809615067168614756657141239308339489721727819788192556709280870467874417211'); + BigNumber.config({ DECIMAL_PLACES : 272, ROUNDING_MODE : 5 }); + T('-287702256019.72332990279253507', '-7348.2447750020468486997', '39152513.94434437448778855732509409502324459411348630851253369635814661159847616711741174927298666175199247970493164341671399780310055266066581661702446007562686353640296482784327557295162424104715744113616705513531689030766592807403129905429418351271424761578872795018589442905503'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 1 }); + T('218362821823152', '-427428.03624264072494916498', '-510876225.4874470197093781182823629357731188540503887097132994555167154946227455113711463937144882453930644443764395873393290104639967553243741314244621401408795024377169231224165902697570435'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('3512610977932727821248085135991.64362350458397', '332366415.82934', '1.05684895062813633986114367632097685e+22'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 2 }); + T('283069958448.713202074580489066', '568402223435932952032974548470947451064164701869040395199291', '4.98009942215891470612063116424248091470225902416930202626189832795786381168596298522567155592721763629087408085324803349161372096963753854201220180322843758745618174256723334739417295e-49'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 3 }); + T('53961910955842962056752112393094579054189', '-3659591183283494197617050720675757101158792.981416', '-0.01474533855101998810768228248680932872888735787867356455976031052775672420792166275872334215944750527764992493346321533012907042007431511008951188364546091620237048897806801062113473990435132299317931345'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-10836401636.6401027213286580', '-12146284942380595721816487991.3', '8.92157699909535953776034054822951842765223136204580012685357e-19'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 1 }); + T('-5205546295637226727249281129928401035.18847541281188447830770', '0.00037909736012343271985671174556', '-1.3731423225796982102395904646341192012263484381096307767950618016870969679385968172377981568427009613964671462530338490375132813655989596649751350011381898041088031763635122076528518331936123575593723173041903500861528439546220050075864e+40'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-352.88718641', '979839379932028.28416206014245661982233190862835191074675607', '-3.60147993270570404159701651891818e-13'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 2 }); + T('900872149910557106771437937396420826.617465', '4', '2.2521803747763927669285948434910520665436625e+35'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-2499.000863', '-18072893447405471.93337869618542896592', '1.382734242456762937466021429575825416021539079586e-13'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 2 }); + T('347.1', '-26897607535492', '-1.29044934402434758860570983442323435482693270315891495180319627054565942215468256010821804789288880225446038761569005431e-11'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-36083511723943380014', '-1.42201661721163467413894', '25374887527473368449.9630012068579400539362'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 5 }); + T('177622329032283.44164414146844039903', '3683390520117457700', '0.00004822250805668559323966868140696957593296531306730369174847487069215651974385324941078536744094210123197364773478463773546932690054774981'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 2 }); + T('7.200557', '-12130543987590457647645529695250577', '-5.93588960838538432358509376824068186234657378382856805469754865636042223404958916496830683112332242419180446413047189313389204601249799647342307751189e-34'); + BigNumber.config({ DECIMAL_PLACES : 229, ROUNDING_MODE : 2 }); + T('-142352650018637644982.894545', '0.00000000000000045655250658348006593881690311261446601955508', '-3.11799076701835252108429962046670676621438037589634232718433946791485799432157664185253045470787064599498965009148939997154095590880176775307462661522156750014260841093621873330094880872289151899022849816633125839598690585487048126963803172223460103466105999268155e+35'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 0 }); + T('5943961854622625.00', '0.0000004889328119390981904090835833399747078336', '1.21570115759852276066823247614220899330663707901913765818462968918614524188549702319616698092675696766433467486493760177977470560540641742397966205453294164165166645821166686793422442182258841901003455629128549397991219865773103516795346451201789267868677140359702613151e+22'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 3 }); + T('-9.73', '107877.10', '-0.0000901952314253905601837646729472705513959867293429282025564276384886134313955417785609735523109167747371777698881412273781924059879251481547056789624489349454147358429175422772766416598147336181636325040254141054959764398560955012695001997643614817231831408148717383021975933724582'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('-0.000000000000000019829885358087437960235494', '-693321832339309278041763827865443259651661541834', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 2 }); + T('21861.085854742432297', '-253317995458118756985218875666.991005', '-8.6298984859750088516076665392047692541238104781525392378756311035204201128886977097227227811741417251060215227596413876277433463577059e-26'); + BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 3 }); + T('2076337.9', '-2066457567221557459126548958422023599909897005697', '-1.0047812899404109614716837107338921468544850570684080075956002125448452885533922869419223696394598431e-42'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('0.0000000024715116648600', '314867688681333580.98090570271019221598209985967707509', '7.8493657930119634753316836800963745033454136e-27'); + BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 1 }); + T('85.5032', '2269889931805.8110736637704476113642726571257320719630747075', '3.76684344037677298414636726315641859833435415870284555946496584487885463210335786685911435721149609905482823796034722657831771198820765532056166538523279149766e-11'); + BigNumber.config({ DECIMAL_PLACES : 225, ROUNDING_MODE : 1 }); + T('-878447093953645818260102264832468970551856123619.3364737', '-0.0321801228236', '2.7297816691657166216189614482465370479123012554570903545841244469028148970610382017982696584849836576681548797269208941130786144461619238777602985556306501753659142612521175162964271415211727986351973135481429362433578626572784377717859071869623999815093110967364070505355807e+49'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 4 }); + T('-43217422.314686293151875092274526827', '-172.25', '250899.40385884640436502230638331975036284470246734397677793904208998548621190130624092888243831640058055152394775036284470246734397677793904208998548621190130624092888243831640058055152394775036284470246734397677793904209'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 3 }); + T('934044509803710.031', '2215450.4539256893907883241626781065882032269398778360517', '421604783.8707566688539417234911930291970000816369616751407221284895813210180351175345778163400640903934907977266943577986534521978166078350804914438274219568982438173624979713831494231085341917307110815023899880191'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 6 }); + T('-61673618376150077735105282.32389881289046067', '580126573106122019236717205540651106962845540631806811475137', '-1.06310624672709449526492535531490045106445863633066135113002531869296728604103194642150428828918666609299891321792894844384077308674766977865000804626486307169603956091019855780842725388683208936716701748756130647891699112423470869015773752e-34'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('0.000000000000037953564273421360974525286986557062748316', '9.9', '3.833693360951652623689422927935056843264242e-15'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('78.788494332435194841297369789305379', '2960574779.76224', '2.6612566880936072401085822383242603e-8'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 1 }); + T('-0.00884033479494503875011051054848', '-0.00000000000000000003073745393848120884762218612879977161380590851450682841', '287607907038700391.9386691232917865285000162747620806087721118424095534296139200510822980311737775004980032046267554363164670402076851873775075909'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 0 }); + T('0.000000035825234436874458725815231678670', '248704.09196351538476428010', '1.4404762766078646183528523818329613183633549389722421363506513592489424701455505545820862493707022113496949417051780495219588961668954111458099918576834515526585393756362338712e-13'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); + T('-11890841249720941003340131568.8', '-0.448285132780975547543447565754894854616797795', '2.6525174225509287109008275900581758745656416060405416608376934955450921635126740129313598589973142842709854408731763632284545491223060278476521298576534682156856e+28'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-79999890792516728703785210.293275949583326', '2238618671360933932870184834154524.554', '-3.5736274255178091780838294625533545534e-8'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 2 }); + T('523036262457407.9231574304588', '-42325640367366929726.5204686677863151208112751608435', '-0.000012357432939412037831070223261728288578014924445740262398299293226133962016627218473698110333245943923835660220850424477875443864664548613683004600257116752'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); + T('-0.0000000041286755678770', '0.0000000110564855419579942831310543', '-0.37341662974271410060901686622969775811'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-772545.60868', '-0.000000000001373662387332651048013693114', '562398458168540916.3707047890052467698944553379256207237415983606506907843604729462276116333472410717492'); + BigNumber.config({ DECIMAL_PLACES : 160, ROUNDING_MODE : 0 }); + T('-0.000000000000000234838118662348396', '4.9607142482566858080278966310749', '-4.73395779135789073153550910323880386103124721594233442875440968425335409065931840451191011389183925700687542921313613178360714542362607580156762e-17'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-25470877029136458.461572069402318317869339908911993', '-19788421946214575881837247262846064', '1.28716059817033097143124319946722349767576454963531457795e-18'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('0.0000007608256038883687382330921800098873466555520966152558', '4084024157469937028014547746681770', '0'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); + T('-60593935100716637576.779124226', '-78089154643.3398697105499380823346933482681923', '775958394.958558071500338249096776110501831340377956044864519861717344537495697320556111328429168006012349243247851949387890247027968414427872945899772549980746925825100931899573261430814243662488905947964247134248105608266206245'); + BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 0 }); + T('120200820437', '387689496.8040973', '310.04404666071845082705639677630364379138488716543831502070512009771234254242928775392324345085494793473809688678416009031735847856980861882806602550723464704832108694013222493491135567636091734943087685254045517457022321119851762885508307'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('323590.58', '-30602659640217986546339973043344923648528124099098332011', '0'); + BigNumber.config({ DECIMAL_PLACES : 187, ROUNDING_MODE : 5 }); + T('0.002184407364266776792138989179577074788592902', '-5387393902170.50826166406732599919929902225', '-4.054664284686346322886089921637881011695368077425220160377039462179267548296175538145260381577072330244855092355763020492833402533575231089958704759209007017996657889948755e-16'); + BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 2 }); + T('8338918643868645247408.3883455814124240962297433030931555852', '76390171950015689477386403006816845', '1.0916219234753185484432073685343052849240279711055950892264649053607637247519291785805958502378749491100439233502256082134638e-13'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 1 }); + T('0', '0.0000000000000005262870969944363287966971419746196984506', '0'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); + T('7', '-78156995776919615238622640478166990.50200', '-8.95633197056322356662567988499850763139263072636596503501898741826919037684989877497087801741807791961361135760609928904999023392056920447216103029361565738478484153062680383086255843225584249401410645703684133634095656e-35'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('24.1609503653656174905040', '-845840421154.192190497016066', '-2.856443103e-11'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 4 }); + T('-30.95207787509671936194539304098189430723147200095851336232', '15793254.28652433', '-0.00000195982900759767594730360080846558702051969928995350942287858990053761925209915600655749800868378844445503973346958930972979651023833175022853776353124380982614053588435077849665659187568709860142253037806347168992008085044925388898306393725024773439411064804691234767025408538692'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('0.00000000000018209730481501437353687636820985110', '0.00000000000432086493606712228925346064478750366', '0.04214371601736'); + BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 4 }); + T('-0.0000005553075724698638127187462955079819138174106', '-0.000000000000000010549809475997890291690169102285131785847606678744325', '52636739434.32406123628211128902900923607108654048502037466453196880088243188283204228908191883378835747158786416820534873430061744591062343575877307870373'); + BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 2 }); + T('-8507.4', '-31611118342410651066.287255899282366741756486641109', '2.6912682771448031995832202512770436547187935120037530273296218347166872776298484520115458342061467521532249236513612825317884352187170570573598554583265089794988675565694897744942941536240326667686887829217571385934754800298928378797347681e-16'); + BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 1 }); + T('341868272534512579483294630101041404087', '-227197016940835393812522104129336912.37630313525924548177964', '-1504.721660247585222184545332112527476380821548583435076394533870831527512221217981193086787237823562978794231656548081796489337612493403554821668058781133339890502918373561994949215363926544374519865666144'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('0.00000000000000437742', '0.0000000000000000000200303787355146280915492763', '218539.05299547166371779311558890808831179'); + BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 3 }); + T('-0.0000000000000534322916017120915670331281662644280597428866', '-1424.77749901', '3.75022006164746917868530862083721727820879664749528167101202037111191057368662227467078617673572071075544322088739384828755360735601037e-17'); + BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 0 }); + T('-416904702172153041.26891879162130712422724206693039976', '-1492417792792741636616.85', '0.000279348520357697422876919371806999054778919203273179931069212605569609913461069840673300681928567724197103421784691807186805590754474225075554848274600977306765474318633861'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 2 }); + T('-0.000000000014145159541995954595019', '75286314359.303757785825', '-1.878848720696860524911845987739168912042755878980910896266255578525504559236986971506094819775648678624305752410753284616370908384058077653336364854521389519941929908006483658028987464466470871992271276526386753342138e-22'); + BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 6 }); + T('-856449761377.4106027005835', '-0.12886167223806177710047958961530', '6646272289522.88629595844444803094620478694392834125277536502509139598292167530634061669645708554597441149938198254016521395355218219907515631449168243123908585492915406688068634055285586774476740307585325963085677047571925594'); + BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 5 }); + T('705051.5714748881282046710370536257169', '-3.690', '-191070.88657856046834814933253485791785907859078590785907859078590785907859078590785907859078590785907859078590785907859078590785907859079'); + BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 0 }); + T('-56970701115117049802746696481693.06197826', '52774171.48234231347102140385892929240488248', '-1.079518626534551116776647376170899911322930789996468424200474585922124737338324430900738525116029050886798808473947642585594124786724157692349083285559602854594168836141683492575082185135889484e+24'); + BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 4 }); + T('1536.80', '797537940790.16204370540879609250609816130996198497962', '1.92693027052407417679073838856981865538509524279931557871046258846342061768572781543861899644466156118948850948896470902434251214085617673624065270654935318750683127587751733903011318898363697418632103362914826583288103899538519980902669177e-9'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('4521798398474707211452169719274772724688.209746762423', '113966135.2853091333519386764965477252492237804473584', '3.9676684544532344891518753895135901917807148727042638514740974556455741382836470597753293843833469077660544920113222751422500214591e+31'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-0.00886155497', '5240512159922862756756611815681766274134230', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 3 }); + T('1365098150', '-686632351222425520397133197387897340831713401120.58814562', '-1.9881063680872129581225444091158763443242565499666241150059946886673559494313889443055230582e-39'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 0 }); + T('72992032688.9248118520537008802205359470827881874151611075136', '0.00000000000000001413538780857322913068346761167087807482368455346793', '5.16377998802795794780049007018477492723093188473174173616389588298822876606582489236629797220136073532860057997777048856237946488833747829455507280628526250391295745891897315488435542975037666852668137616e+27'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 0 }); + T('5119117400797949493931501073033165644033469269.6829', '0.00000000012728547938966837104138082411164260684491082384529801120', '4.0217607109185015869038125517519539780970547769657431948364246520268330199307627984799823558533852492133620889509131647176046953722738532406336195842757406761375664746788168745291236250612131142207061713737039356124325227988419646489196356806439935591082014024539e+55'); + BigNumber.config({ DECIMAL_PLACES : 263, ROUNDING_MODE : 4 }); + T('55364515639999012.3694564', '1233', '44902283568531.23468731257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965'); + BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 2 }); + T('36579301894.3272', '0.0024385689135275134684598210661763159636717699186160855486280', '15000315017307.9942798524140248776004846185613110063074971537884183495711084022282941766871430522924575895996373723131958845559105813285344961758901225035253726600468182572254974526'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 5 }); + T('-0.000036644420369185350500335611154538522406078126377916', '0.0000000000000002017077787157820510', '-181670833928.6184015374396921160292901271172156517136818760012274887799007411778794167435492509992280818256731982542776000329722531822320356487724373495232750106901001140927407119588816698128094'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('798375056238124849780744954513979594995284817168617741486027', '-0.0001514303631286191311668941584594', '-5.2722257263559208237590960912449915312558983622840023031622957900413917295457780182206488059586588916929123994128751334544538192256970000413075755939847e+63'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 0 }); + T('1576512259467293381001570881.46563186796470409100093255', '0.000000000000000006105805298664153', '2.5819890781846706075186292775660987821206616709197826912550223225697923588454236189264964942580307240332585725600612198326468255268116335022203770858924348716226099521962235901645060143418731130749531388565300183551675084414656082546566803219484188986559773763e+44'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('511209204698.96020245275211030115894313', '-101356341563180051638269163.05304', '-5.043682e-15'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('315.98', '-8.482063190', '-37.25272883754595089263889343884975230890728603496763150145784282939302177021390476106556805785833'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 2 }); + T('-79.0', '328.1', '-0.2407802499238037183785431270953977445900640048765620237732398658945443462359036879000304785126485827491618409021639743980493751904907040536421822615056385248399878085949405669'); + BigNumber.config({ DECIMAL_PLACES : 293, ROUNDING_MODE : 4 }); + T('-0.0000000007057906', '-1376221693595250111.2', '5.1284658807854441473166477895130637369491854222125750409011651561470023220989378084334186208239948650179912699354694059238918124651341765278796076199179877802082069338161665378524997774363526896411418582170912058143976851253119226686506620098742279341971906586964227e-28'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 2 }); + T('-1', '15739694482176278081652', '-6.35336347304838628156373018103107499116109637719197814569978583183740183607310083351801943904010533454975641981038277571136111425226698902310886537212268029809956782602373467609333206168376476104828e-23'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-98959741326242472136877.58688437409572654592968874916748003', '-1577026721.538198057441472422328913123', '62750833562109.3736755505302911623693757994065497857179220345921'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 6 }); + T('12843568.6', '9756619199498069983585883200769346263965', '1.316395396538663552943843415543396294410996492367201828002765168307733262083670579921516561939775006580978870013773678706424438359288943809644368754937363031859741185605881199640059139818693601860316658007786605275177671201203669231872590548443156892324734882047645e-33'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-3233146837471658213114171357041562518465680315558338981', '829330838922.619', '-3.8985006775725701598387256024613392488467937075873681876754834360265681424e+42'); + BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 0 }); + T('0.0000000000000000000266671546349797639', '0.00000000001970429732630583897435599847653340972347', '1.353367450428100152341066904082325043611411338063074527785432187349727925635936105294561325527648770473547163455437660994400601851671110210333376912032198811485829361425678558987155990920072055290710462818538743685439393924736667429844343424052118413628867012933e-9'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-6397147143474.22067087747735649585', '20202372624037678616281194280.01412209129899031232808211657', '-3.1665325962073441726920788992e-16'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('88351.9303446', '0.000000000000002563399390160317591101025938358994532557855', '34466704909013176013.82323112303980750644625'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('7.0933185579325449012090422569728120757220455', '1437825366756199104371656176529986848721936954126270', '0'); + BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 3 }); + T('0.000000000000000442159492382513128427571751220494405137088137523248', '0.0000000079483115556786646523559916289715061611963', '5.562936093850179323090933512066164062507170496326604025267404120950833681722276043160122632116266606550423105658529701923436061669773008126464992892726071224764309212321494563221354505940260790670840668059225e-8'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-0.0000003504228524237', '-1032952077.446644962044606319803815615152', '3.392440560165293626459680787251958063761e-16'); + BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 6 }); + T('69124597843.50539947142644802980', '90799591642662819371324783.949177998573604217890931479', '7.6128754097861742608339747459251817571899075951761421920492207126528165811658022258066410622469863e-16'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('0.000000000000041132818206403790315863547877080363482551563821657', '-0.000153262430323090275701451205036963970857022878', '-2.6838161263456609097e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('197268470.35', '-678630004230.56963692051966802414265516509321274', '-0.00029068633735648469315'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 2 }); + T('-0.0000000000000000005987629601880069531317839363724947336548709470219', '0.0000000000000002510828614302796337610733655803694598620621022', '-0.0023847225444906389292201702013474109939071651818878048195707052759343733264813941364372150528789500908744837121876621032157353348814714417719166051739440585895734373385936856191700260518114458716265397093970984364925853922267727967826326276508495827664681205912342231881785075023'); + BigNumber.config({ DECIMAL_PLACES : 232, ROUNDING_MODE : 2 }); + T('2.523992393', '19453657223.261', '1.297438504253086301560251588035949755025793954483016531450474641957323549087248074088687167193582901415064933404099183164759832429067452564521491922694390666357880445731784713047835334005695458419690768566620626602376729688e-10'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); + T('19.82961545454921640774848', '-57882836397629549740115286663914824964586260552285469229.384', '0'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('18663245904805999.515390848', '924.89476306', '20178777792036.511777576858539683815344101987394812268773016357'); + BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 5 }); + T('178455.36407390127', '910.12193057856733033415608', '196.0785231935424765559140250745457716018895078438259823853720631173518826313275042638655970214751138140716784965181892650219031806922873638816234955316418168022543663282782427030262850682838162105293927127797470161988166762219845863444679433365144190734011028821264'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('-51385327564861576919746.1470481795793562', '-79771673', '644155069492670.37335102834120301801062'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 1 }); + T('-314642.35022790', '2220006965113139045451.39152376707792515767154608909393216', '-1.41730343720730067259018251625799227007544749801321937053214873543030134393793452012757465529271890036077684965623138686056961571194281081785327910258848569949312260933786604892957768936185278157312741930243467837056757482e-16'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 1 }); + T('0.000000000000122091688910077661372629911120733960', '-5567.25555803168600421124743052956612599167', '-2.1930318742767291732899571027508445096570330070627677977557241821878889510713429017196441788995865311653731842480839745751334050264844723430747930595996833333405737128680094769207398223043558909530003544100598892212886394093958372500696080834031966e-17'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 5 }); + T('-66429.03', '-0.007674499644926302413', '8655812.505498905719889403106838810325574563697689183974559619689046726558122139841154741099420517037842278668055285788526119417809910822865955745617915832596383711322909237615920560595'); + BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 5 }); + T('0.344155038684519819076171328846299372051125570825309', '277282243381178031028.7156205784378126423338721241406472', '1.24117229609763437712196031424136652295152755387397907148470754930983485486550715142800920780286300487413596423059452697216062899090317299652327454237404496631536864973134321241792915621551031151265316639439231118207321e-21'); + BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 4 }); + T('-3807578562266890707.2243009426024368453763', '-354724245395933.67738801081736665507490', '10733.911232983169109269081528401857034010514263051482164787116911884445385237395261145573567863590288009664501760381712136025375241515258819537810357330338287645974373725477248216436776472288370861520609535883234959136868073362545734868170529335354625903818728859211695271094684228650978661486103585658'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 0 }); + T('-0.00000000000000581524533212211', '-1693.31953804599397966807376387113403404969823271727405107526', '3.43422797733298001327084246426134700229059731711546098146484504703195468645128919825421305e-18'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 2 }); + T('-214432650823225826170450832412705161181650881284515.97971505', '-0.00000146953053193119636676554385758', '1.459191532015515782895028709758958994348694755148926568177454618952506950876539033795504849627847196214472843119238304481924692200068596202059000308055938525040311180969611781332383836201777726641568350014e+56'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 2 }); + T('-2.753084133516891534631878384376841322396312328', '2609771981201343037805059322.650202155118081', '-1.054913668070563905743945158180639266096819982869283724949037469462506310335725713526150444663723427081343446746909521762109867317322971611118047687743055211032201759025789187466612778333639241735442192514e-27'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-158020.0971401257134721778352449209026523806838', '70437.9630479793648724466291471181932299458498755680970', '-2.2433939072384744948424953804068249910026085297915822901714893350698697950765239116'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 4 }); + T('-4064938332175191470776362396353171030862288332293', '112463265588208754675369735739438790638684.673570', '-36144587.39851300536972642235921485108381275408420090638480520011678815266627288760786459018500429386107754962590285012391114337432066372865552910100148072969401124337020066914964758781939681400771331388045482062'); + BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 4 }); + T('-0.00000000000000003545434645', '-31652.9344236964062899182621572', '1.120096670198695202773589854997853984349649640076178532531654703870663918982750592689123929465498772432329970391738047419021331869477263529243482236131671611550607722163644504740925005258655827352743085916853442614196493578e-21'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('69707702181652340412996942393807028632.88874469', '-2319.99966623', '-3.004642767683125263317419558980960803605242193242106395869763685108200508001760154e+34'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); + T('-0.00000000859627227', '41942015753.46806653930', '-2.0495610703424998316084339065959867670131919381975808837334780740698806549875476581140075106840980671647283008963679042652012802774122673512749680851401960572257400982091239326932597757908113999250803005938702047873036e-19'); + BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 4 }); + T('-0.27858502', '0.0000000000002148090475579216136227161437208585590658115618410966795', '-1296896118516.0587061143807902704492642316338816051013663356531763378260238060766132300335935915635302703031633801406898207390941630567083211944589375577080764059644075477119482033437243786485414714993379133959193'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 2 }); + T('-3368832017105385575764034400463912956348479905841608480', '-0.1124132611646011282373808347675417388616', '2.996827938451650270815982416204714251537984915988789943325557540012137462382804039504751820181310578964802993861026651536150894386125119136843395074880905121533532153583195770581161738754114736440056201490378798176609279105e+55'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-0.00000000666996073516980102135350690038051557076952452', '362109938.0183', '-1.84197119020597559339722219023682910076778527811614363760012179348670008382700998519e-17'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-785.42455826', '-1865535659575425468295951577.96652336125647929834911411248424', '4.210182497604e-25'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 3 }); + T('-0.0000000000000429749659666943840335226914567618834517', '-35944687155795431922180096044098168655936813506930', '1.19558603418712594262437246257423986551097591657336571183912550475137058755500464357888770059941959411115322700999986775430787279774242827072890744098884609509205395094560840672209834724612412567384353637838751379317020925880218007905708e-63'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 6 }); + T('-223597368931.2372', '-0.000000000000000792399246152032873616480092538675958', '2.82177664879222914780541865004991714011648597296273912762933197172092177661703327060936941778993381399619820041299007909909260249628918e+26'); + BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 2 }); + T('-3456992176960', '-0.00000000000000001242096384225362694977819624176699928353274', '2.7831915629606828069887131870368319417750565165038027057508787543044582832424397575820855800519123910140023283600820223394046375153945318982761556842511255832125581448133500782689354760136916627010446313743375055074044368759730774131e+29'); + BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 6 }); + T('0.0001185260873311176306096326384045841442409', '9673394116406.0731580555833298951718568087', '1.2252792133228338798006852463335050193973440006501469758787125353507436998980871417633705733080188399867544e-17'); + BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 3 }); + T('13065602.0526445508170768742500490102', '-0.000000030962951588303796262963712611048701363279', '-421975340929062.472732364965452838405972812344309392798081291291561825045438860601606538999180636277175652396026866225597783260733520928245547177502820184586765515281541111862479725038012952649729618169588548738219'); + BigNumber.config({ DECIMAL_PLACES : 222, ROUNDING_MODE : 5 }); + T('-2170.57', '60778803956902432353893381', '-3.5712614574303351254417112539184517565776619585813969475331755275054595527580193310627295098058718197435664946123235268400962128066457918239225758638812422508126933055633095771266818804694261696702234e-23'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-452429589240494229.412637104524', '147.78352936', '-3061434458899528.811555222316853185756126131808603599856535460400646098089641672366133563'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-9636006563886901032.38711887811666657', '-526693.61387', '18295278906239.57193108907378770353984660512739776386687253304'); + BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 0 }); + T('0.00000000000000420', '-7485872742485628155874561090121626632152854', '-5.61056825901293822488108761867032420165735067943904954187630777406056144052739126719984089981724398989158903562179426075e-58'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('341.132567141533589477106912356979040174396447986233982362', '-61', '-5.592337166254649007821424792737361314334368'); + BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 5 }); + T('-493844617493728135650648960836996786798471112592932283', '-0.000000000000000018385574974244991697', '2.68604391315212588404336057639413755277716306025746617256821886681466898635115033963694204129871990836176187816418993149942746327143728473556550780208205687573190697173156146919364512267020252829767465238363244705336071431867173484274500627836290330930763405432815086014481888598351708831171681770141270491048670437553755827398e+70'); + BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 2 }); + T('-12385216271220514017.7103345430365388082240060', '0.00000000000000000021502740756141811181388594100149557', '-5.759831461337287569025273529514240303245826030125384486883048647860020416224599306600826339089902902165616372521378830619153978452824992419123313093694089460726105193107025254012289341941649527241310405619815332517834647536669693523177344651834995919667246658028133411515770346e+37'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-0.00000000000000001161983508956321382168280764700467', '1372912056706881822885091176839074542.911487968608916', '-8.4636412309139338e-54'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 2 }); + T('0.00000000348944204828108020921942879627575', '0.1132658385675712878912248', '3.08075417302400046925398397442666845714320923353175280997200834523319465313552222621235722062791879077261021e-8'); + BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 1 }); + T('-1509346.46114520', '-60676.7245830285451006625828', '24.875213214250667696341957055494376699446097123293815250060926516859436333220035817598009189880736821244337291355056465'); + BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 6 }); + T('-60493722634666202618279995741.9152', '1085119925.521', '-55748421176231995910.9248923544771616679302969863062050677343033395229821810787653573479108761381728692632862078482504002597330810828849768'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 5 }); + T('-1494820965424.92404952076160', '-629079919004241555460452085869247341253.439559', '2.376202005924854925988177714967899229584440509335776722433658335411978107928e-27'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('1679737228315247611008680811886881746898.012678826', '7116.46', '2.36035504775583311226182794800628647796518589133642288441164e+35'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); + T('-310.41395933724591435408865483888484178701950363457603514', '-6.733', '46.103365414710517503949005619914576234519456948548349196494875983959601960493093717510767859795039358384078419723748700430714391801574335363136788949948017228575672062973414525471558'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('0.011', '175004523773376368811209423974.89465521581672626', '6.285551803360549546152410813657247213e-32'); + BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 1 }); + T('0.0000000000000189734448733697221505', '-0.000000002402762696384977186572094', '-0.00000789651216989334560220014280453792676801477711345168795812931187815738492650235674220478030381217345352'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 3 }); + T('0.09819456516372840371284202496477253430251499750596070', '-2696.32214084024151668', '-0.0000364179649294904048913413431747308181483800035162818551645670946952058381858182064988560493386164015323213730997'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 3 }); + T('-270.807', '683439897.187302936237800', '-3.9624113417215804144275575950992950014709627620404373386667559311809891153595211180278516684355738319773499668426471866722988661122264735402715385336852396071443395093570732168386956e-7'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 0 }); + T('-36916844011.084', '-77073993.9199556052600758116865746524686101', '478.9792527090733662521624438319174623714130825393066899777619000853534442033025812833031552359261923124281382475123884609762492055180240309019401670245912461813142763'); + BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 6 }); + T('1498756.379094145881908367180112795514279970825151692477439', '-217.5', '-6890.83392686963623865915944879446213462055551793881598822528735632183908045977011494252873563218390804597701149425287356321839080459770114942528735632183908045977011494252873563218390804597701149425287356321839080459770114942528735632183908046'); + BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 0 }); + T('373792319970831180573921.680169489813', '170474937115919273281277227438.552446131', '0.000002192652634426024047352948701031803098142401935326380995080895542582154439299826979728263449580395'); + BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 3 }); + T('143.23406091649624237', '24617124520581100857880326750134851911568955496.04148237887', '5.81847245387029967525642263541659467319235687847010473056511924110965224838250018372170219431500948864714294914447920197966483247687e-45'); + BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); + T('0.1037658134136542454549718806147427342838', '486676241503221568296817.2031384689341793', '2.13213229996902087263184936369002646696477620702908795399290121226287075412860814248158704404807703971834997522375601251700095150779468851319233223570961638018197560337633623108115293122817414343910052981271159838e-25'); + BigNumber.config({ DECIMAL_PLACES : 191, ROUNDING_MODE : 1 }); + T('144940144163730803', '-26.23522648279107856251491553390467018402973730', '-5524638571685435.00665543939781189704858014752697856515035883477991258946267088420595900389279838159220006108715817423857836009982626608845809845438174913951185281785176165492674117315365837527769844691183245'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 1 }); + T('91370390607432135043833484575112704608745763.3', '-24015897771863707460528181375397913677228.5024', '-3804.5794279853612143238701883472721463912414199732655528079740189323889738387848435737394829030319004880988613525749565134322700284372512393081012332153349198627899731479607820794982783321422716733988583734732808320261480884913381630779064668725123215709337854770430981876387321'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('0.00000000000010564283139916068061', '1836702626815765.684621966886341353', '0'); + BigNumber.config({ DECIMAL_PLACES : 222, ROUNDING_MODE : 1 }); + T('8141733263483523950536891097903628428299301008676332271961.3', '-1.015', '-8.021412082249777291169350835373032934285025624311657410799310344827586206896551724137931034482758620689655172413793103448275862068965517241379310344827586206896551724137931034482758620689655172413793103448275862068965517241379310344827586206896551724137931034482758620689655172413e+57'); + BigNumber.config({ DECIMAL_PLACES : 265, ROUNDING_MODE : 3 }); + T('-1251082911783', '0.012295681563529171929962302642510870', '-101749781443096.1505358980581083912974525420001278848062978732211896463100008307393560536117459270801203102481508062216669336487515741129284311489109985245573107351348829887676314472042816413829359097701465060538681506643926046081744702186233208613091445080493800738076378769192381'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 1 }); + T('-143906596499234149655948273212.064434045077725571', '-0.0000000000104067197154650062686077977130122878058268600045415771069823', '1.38282379495029892160047614332417108848571694219143535307535632425803199542551561586361007754466361251719545894912571891484622944160776814047097016711094323933111847523140818794906586065200669369363605090427932192426657927806969973980025632046944224515020659540685734868601555501621760362e+40'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-228394458183785537696136096189', '-2.244', '1.01780061579227066709508064256e+29'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('0.00000000000000001282674960326596381048951594315420029152567073542478', '20579.8285767136017929', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 2 }); + T('-10897409776353933242513', '0.00000000000000000001382960249336675355529178526657', '-7.879770789927461328156899205340301449839013993783128934505656104289643219119885202483761429947276290177636286677085904944040052153999592512022379675143200677517091671777582251257433111303648545390004173378228821151300976000997064967670248517083597646485647288918528344143533902405780804470851619245760208447272146577516e+41'); + BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 2 }); + T('-4190603853.744986', '20.1070309210948423214925405', '-208414851.013558027625631868856773395159405268670565956151152023664877002151704685570394263702919328566846654652418680789360498409925'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 2 }); + T('-0.0529084517767297839967464788640862582172932408507193848376225', '0.0000002487933343362348270682587825797133032803239769917019', '-212660.2463763197241937009051150062082328295144658321609489836639836476243136425836057695327556543013795011583774737176409659351651346841'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-181.2', '-0.000000000000000000412282983010075543837691711983618505', '439503951089758557107.25859278626467307696375771506188111618825926064592928336917933761904577475520450146308114342902'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-0.0000000000000000000148222252872730424', '-4.98250', '2.974857057154649754139489e-21'); + BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 3 }); + T('2551323472554.1407949247678', '-1454676541660860888114084063067825178832856', '-1.7538768238066143389475473183623988849891860145200130558859657751591938208039651149659970128340006320340305355921712194913145154183186376240719320319188734135516716569433817092156290844105414465495860802206887853415e-30'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('0.000001442076145115913636245444747615', '286.0795703792537022764363578', '5.0408218357017360328794508490717342370735704330378958675254417671269217429167997e-9'); + BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 0 }); + T('-2325629707643764.03150674', '-173361218513031.3', '13.414936325386695247355615224999902566550423557876131711027681573627639062248435610113815397726475009793536875751005885500429365084777'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 6 }); + T('2823281046511.85672506534131817966', '54.051936216425770', '52232745839.248838146918831929116815949761867699327300071822785402815143673132676744115735715620971071789737700425397160379308004973120166436381458685919904703812948830374190730479411191287042221375'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 4 }); + T('203984296.54702441665048979322644638399', '-6006528911617744430.311485', '-3.396042865164285413358711220853449332270972842417215264553826694865062113305833977338737944123612446116240859863177249510552536118085818537881371503397909402944e-11'); + BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 0 }); + T('1.038', '0.2658085636849562201592625901942631806928', '3.90506605810588845991225401366484989981460787174802789814564503896347413002089787430061321768750017961097314721138696498955603361222665'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('19270.18206448403351139832033908280583718', '-0.000000027', '-713710446832.7419819036414940401'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 2 }); + T('-7.6779939679598', '-71191372879152203381340303099724876309099.450848310617097356', '1.078500618465841688338539770085180349799362678488625326291561596810540608169996776270300124207553667411820435426633818477791071303140173921988e-40'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('4138.044', '-10681771389609751276841931107483558622710', '0'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 4 }); + T('-4910225019473700.842236835817', '-923727505.7150720', '5315663.96918387568903730268407317577394691311370254471956910489775692131474548087817556054854212181051476633545905402802812861794114273225153253844425919164287166193405540626127738020958449340400662545239483187685866599820573707754975551635472976785420141347957424615209859389812859828622011960797465550372'); + BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 1 }); + T('130.6225882684837762105837888716938451', '-3498131947095444632171564507923323005451449988451726344.69', '-3.73406693183605660494123265970287129905614719489716390528222903937528652266687501483847522231276751584147950432190464551895588792e-53'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 1 }); + T('5.37697763', '-0.0000072152260708899588489795556624888473470', '-745226.494245769223271470655514514117965181356243958711874110194705793912318861490275399506887285810346337695627100796266'); + BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 6 }); + T('-13.683707550705175', '-11460360.05752569262315724123133592260252359874453', '0.0000011940032845407394761132518201266542432139836849185956890963942826533021622328711029282052931723127130615921689401033688458155376710911643283438238818511648846438205068707928523714274858412087737126523654704096199302033643663953660340827960787478592510412953'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-1.1', '532959986098980624647949943202670187587200425318382177358', '0'); + BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 3 }); + T('4483996522799.377840', '0.0000000074492182450048110743959432459968678', '601941891795986956316.72081414644162380311384871056002667826017136893174457937843305960356642660104629457209417035997166310754024901907557126560927736464421711586999620047110960869358028374406'); + BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); + T('0.00000011038111639360927158074252077008120661994335918276975', '0.80261606693665424071169253556846972473303944187454175640', '1.375266717683599561261999012603185478788185745201251377562271624996674163339119665565198908619639639637266939120044609113e-7'); + BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 4 }); + T('-806302.349', '5515170738878548042014545448842819.706566505', '-1.46197169076936519559730078104198629171471867776887285857209891716487487068868878760148367528817718076659326561276837904805583947580014216286433669317201120332142304258671720194906503594277397136095615955723151574689238719577451e-28'); + BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 4 }); + T('18010382767088062671419.75360076164312909114774', '-1914068173845009784501461077482788607', '-9.40947820625872844502799793926282464443414463411276146178726438954482953571793756741062034654357408057011755990911118078603022710812500938514329675051465836241420519016364164e-15'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-47772992246.9696659232869282786313812740', '0.30', '-159243307489.89888641095642759543793758'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('141990.7689498908574158', '-377639', '-0.3759960410600887551757101358705006633319122230489965284305911200908804440219362936561107300887885'); + BigNumber.config({ DECIMAL_PLACES : 153, ROUNDING_MODE : 0 }); + T('-2962.90745', '29.14150128851816098897490329004872', '-101.673123174590680132144567856578947132497869769968043035639134249369219471641079048742094079255916965724333361585440644519985539029984661562087382365966939'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 3 }); + T('905992035566540052337247037401911576333', '-0.00000000000000017615773598476110868610707', '-5.14307265872737361703517709105328056126429592535814861565643256855617080424398169237812353435755784015944348338942480480193692613979709866546803354633153171768590698114532e+54'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 0 }); + T('-11130632183625.6586719502347007698765143795750029439678', '-7932312441403617151965652196197', '1.403201432854314179426490150814308806683187887341950793212225434004755692371191395477402813916847593042422825948110971905311725834610326422454272722727864056450312493649248698e-18'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 1 }); + T('0.00122708758480883764056897977998910400264555969042323', '-9232511657147698271218855271352592', '-1.3290939999613662572392840585486205603105869549607461946562719992654984424663083886079004119808992248343930289938860263003250848081334155772111463e-37'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('34.668564391821', '-7157395069668207214.775700133922', '-4.8437405025664062096058445e-18'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('-0.000000023021840268591836196', '-3208926912036999079.905', '0'); + BigNumber.config({ DECIMAL_PLACES : 139, ROUNDING_MODE : 4 }); + T('-0.0000000000003594223783132442952025609288685373148302380', '-5082879.56678022572', '7.07123538126483908189046777495526485629357335627016313939776228214609650600242427786351650812622416769560164272408780253e-20'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('1149295747227942158446', '3769467847401296005982024834.139786579364386880927', '3.0489602080576882104834481876350470109876192294303918669418259394833046e-7'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-4704704975.2', '0.0569175072995078493129513483846432031377593558', '-82658310218.035'); + BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 2 }); + T('-548866899699491412107930350', '-365026979881703612745468787941335', '0.0000015036337858570505027564615989732516410756650320570810475497884499675250239480775416477157200159419825802384447547761003188184299751313186203165479933567102519507363983828086206400321681365867861082975579317290332328567652136189093027879598714262345816310778106071841442'); + BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 4 }); + T('0.000000001144809503826049447899406852024433393516801693905107475547', '3249798939885326147062423092', '3.52270871214711426418052424059243914521961096129310144716093379919214709302287842002521e-37'); + BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 1 }); + T('-102545071096316233997890553072.95685369403376313925802258663', '-77693492020751755.018198136607646944', '1319866933885.873976796802743514510409781586039525249696653518917366611887321297822332051432830845672200367273749403186523474953'); + BigNumber.config({ DECIMAL_PLACES : 206, ROUNDING_MODE : 3 }); + T('-0.0000000000000000416333200825886392936824140474669186581173', '0.0000000001125116566276869484110591846085902445242457', '-3.7003561524614048127087995487401400938375832841381786997089805566405053873396052004240685182194881152645803810632400749261807330444089587148783604427239587648705861382352196902412428133812908509511231e-7'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-9517.93', '-110225103619777768147537067303713235463261967083072.15596', '0'); + BigNumber.config({ DECIMAL_PLACES : 154, ROUNDING_MODE : 2 }); + T('-0.0000535496438', '-2213229575797455', '2.4195250409440862719692934168326063139110880225518553812818582848188605565149180490706193582192616596004319584620305521467023709177804e-20'); + BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 2 }); + T('6295317089303.6', '26548885.73', '237121.7064748577679760874845574921987507458377990464912818772375649529755236172015419646766470903033262631772229937576366977'); + BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 0 }); + T('-26058953500276139433467299710132.4937626975185', '0.000000000000000017', '-1.53287961766330231961572351236073492721750108823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764706e+48'); + BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 1 }); + T('-0.0000000000000001493042630', '-0.0000000000060778603690351038741771098023753392098433733', '0.0000245652670404639340204435110423919704729217439347602130414403104881091553411817461803275259108437760918366088913847774353441559659397553361889939945317028793802041505764799507565698417575746333387012890730188442902601582761312145371268672096868323951'); + BigNumber.config({ DECIMAL_PLACES : 146, ROUNDING_MODE : 6 }); + T('1276275760477065658755865687302.679006899741223', '0.00000049608790', '2.57268068920259022394189756956918120135512521672066583361537340459221037239569842360597789222434169428442016021757434519164849616368389553544845580793242487873620783736108056656894877e+36'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('-274180362390551633923434746270311581362297550769077', '3094224947392109923347536.0441182400221', '-8.86103522052065710762472972244408604727688902925940984797542112e+25'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('-2109132906322452570373149329314.66441904', '-0.0000000000000365', '5.77844631869165087773465569675250525764383561643835616438356164383561643835616438356164383561643835616438356164383561643835616438e+43'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('-0.010224419800061', '11674132424094070888166', '-8.75818384495876520879386729450740899613e-25'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('29172443.146', '-2824647549173228850820421484511374630826957616507663195', '-1e-32'); + BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 3 }); + T('160145386.2655', '14.02', '11422638.1073823109843081312410841654778887303851640513552068473609129814550641940085592011412268188302425106990014265335235378031383737517831669044222539229671897289586305278174037089871611982881597717546362'); + BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 6 }); + T('112206983448328.283044205651799295998783440522', '4321495', '25964853.239059233678207576729649345604574463698326620764341969619309984160574060597085036544066347409866261559946268594548877182549094699866597091978586114296094291443'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-1395102637561809582728128415381628972549040.522487612357520279', '-0.005947979803', '2.345506682551540571746168747677620472493457998528466687061e+44'); + BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 6 }); + T('764305465.386829531', '9987.696501266061134293236', '76524.698692030197771079661311499247551427600932863153670022851997011077225380964462554209802957379021804709213601565599400164784952002592636960358288312473874027019419109539627949043898364241487061598421744213959406347133377229059465142590105'); + BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 2 }); + T('0', '-2498081878584305986840601569679', '0'); + BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 2 }); + T('-6392133158902638801758509088074.9', '0.00000023893415336553956687861358', '-2.675269763181770542693975529838390691486277107450440976938935090338671840054677748224247380024502105881706235110586189459141031883700546791172938360802988329999673433225803185020918502800316976026322e+37'); + BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 4 }); + T('-20.91563751600587109', '16274679431470471061471.3070452500572021335885716597272097', '-1.2851643317509003697116257448633857545972022161403762220420810226872249333662094734787351227239460231388803379983252654743292676249719009984592083286172992612631001e-21'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 3 }); + T('558214.9', '-323292.3502380298119', '-1.726656691966278300106360497186621523401583735551520397140768277101421141514983724367449904265456491021270326299316965996634190339927522690463460438689627477902327379394648859802812519487662064677332186716106908815347451909679873924622'); + BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 3 }); + T('27157176.93189846816074011563', '-1354864548700246737565542329828863', '-2.0044200697369329952604438421592536928919175630228569875434228577480235389860431168038607438639670478266888755317401383848302553523674535366349981668160582017449653115569024239078642e-26'); + BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); + T('753056872638776281295490967.64', '342983286928292534888056003143.56', '0.0021956080699530346805824124500924919128264331125361508841353994360195836879040252411717333579739246373436225297245297271109222372920775107015804908608690460453343719828189748853867179653658051980406081817157275936107681'); + BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 6 }); + T('165947641587434546530597443157214.02440979731262', '0.0000000000084776073504023745736416985342865847443661560793', '1.9574820433215527079662345632302427589890454112223870897240707386255000941355370633699082046009172856320831019733020255361550112257551779528995161866107885670954059766743190427206733370185273254454686423739695e+43'); + BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 2 }); + T('65901726.1950363691852445503303823209330', '0.00000029925018464626969021489432429922372339', '220222842211228.251646289763843407315781448078421833368729521346170558330005423344201489496766411806119770013243242069591656148627303869840447605487189053222957932126125731408651742404954882326180722923645546036'); + BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 2 }); + T('104.924561736729913573643232', '-0.000000000001849949673542845922045122704279571', '-56717522231720.21281340572308971058766086162714586350749606738382744506142904118902780673267487146647270637795655498837051503220521488172183493098955775372717052891414945139232077'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('-172.31273088769687731506579273432389', '100708959275807032.0689', '-1.7109970367e-15'); + BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 1 }); + T('-10058556026190767060589730526.64796078700077259921675', '69804777861457868983.2976486975459128', '-144095523.74987952817306983501618179681909099617002603624447096288935558942900781376738119675768364699037856250508453396919782599855688460689219693408216568367528231833815116493239714837307790187305682031211729742360057112895504564170000713684208501012318444852554356985080457213263239076941019'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('-16611683.149189235892803591819111039', '-0.000000000000000000010983315399927853839748944417100990369541440601719217', '1.5124470657829195309444364255042433624060649922719269406973855811869720126685414817897108099464709518996694523706279509236997e+27'); + BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 2 }); + T('3644346004620883867470466.2727301188344540368833', '2540411425014666.27901699818191', '1434549525.61467257763734041796695904484305676539521956214321230992602140227923499770842342719291942101857231349528050138026645873324034556053790978686'); + BigNumber.config({ DECIMAL_PLACES : 104, ROUNDING_MODE : 5 }); + T('0.0000000000000001982653514966263222419399330976618570323635507300153', '-1226', '-1.6171725244423027915329521459841913297908935622350350734094616639477977161500815660685e-19'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 1 }); + T('-63167703649949659', '1641317088.16017093448657790', '-38485984.2778809373692306707474006982676284472451432293978403971522954547132372582677310087481074314741937725849727116025579430028038944728538993123682998036106197745502660076979267250518200954219564895474384360723906298667752'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 5 }); + T('-0.00000364847480818972341867989364039317428862446666102014', '-1436716105182889877124376', '2.53945424223199818892202654422472356472617527625186191322012999743681732691797401e-30'); + BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 1 }); + T('0.000000000000000000021734877338056', '-0.000800276175', '-2.7159220800314341483426018524167610012880865783615262568575154695814854165813445589580372050936040923622398e-17'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('0.000000000000000000203218732432793472959845694281035791', '0.00000000000000000075780816783661099212837016664301128224', '0.26816645829107627739963004668854739455312713130408145286865430457617075992'); + BigNumber.config({ DECIMAL_PLACES : 138, ROUNDING_MODE : 3 }); + T('-1663274291319493.298031772433330344931951159103843', '793935642240197129.32786338698642684', '-0.002094973701679822844974267240742764093693942839597131751996013867893673672589450763271640272825195404662888775516034051347719755745420575'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('878.367225', '-0.00000000211472437363267955633057579336354982804469', '-415357781823.42424010899875939160917260359275156346'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-9182162678.3101898431272789380128603186243617246100938', '-2.270088953696', '4044847081.1509104218993330718044882273159266452754765045932842583'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('93061156417143024', '-377797339784428253.941556063527', '-0.24632560004325034077851736382612253537'); + BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 0 }); + T('4.824655', '-2101727370077783665', '-2.2955665271759021829101156105378933340144159777970106381649252093622129699747473730071989269847011584928175270242985e-18'); + BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 0 }); + T('-1.804', '-0.0000000005828558', '3095105170.095244827279749124912199552616616322596429511381717399054791939961822461061552445733575954807346860063844264739237389419475623301681136226147187692050074821250813666090309129633779058216457655564206446946225807481027039621120695719249941409178736833364272947099436944781196309619'); + BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); + T('0.0000000003625830106470833672565200086393389699', '-17646899429096805962.537081', '-2.054655618704576559685514068893117263531485382869965622628220904339657304024186830900647993830889370634202630270200174222581544091468058863449292018247236089323691557945e-29'); + BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 4 }); + T('-0.000117386661795741118697895', '248940.406749455074', '-4.71545231762573537913038909050954222563362547734266377387473449365866139595150894369561912014772699789792409938711777326917468989680791660820530072812553915257300646130745103765254623158578032414094267132835729298942457209687014851948882767121184e-10'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 1 }); + T('1733.56493', '231230767600133011452365586256235212', '7.4971205086247475533294384980690859155154472523121939279301042904155541616316099667792560753007147692462688678172436e-33'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-12.3', '10.39034600', '-1.183791184624650613174960679846465170649755070716605587532888702647630792'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 2 }); + T('-188286696165756264811751388752520241649627066989496464555407', '619895834297989.5186149564685370341262317', '-3.0373925060971639267073115686212846711395175952508892449242277379495102265813837340574363087640964705111705501238947032140717695085946514912854851496123591969114496771387306287483341424067175283891660812525819708757114413318922858870554e+44'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 5 }); + T('-191374651046449138.1865270700004', '177.8260810116768736', '-1076190005187611.3916403971557709523259316673527685172237725658156892342120642917122203782391339719619499573627468421707489340395069218214730845222055870771402141313930225460616763173658853103668469884276961492819'); + BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 2 }); + T('14849749.55973', '1284630673209.47', '0.00001155954771236310153143237388837504477179962164242292948469997256623180189824988279442522469728678834267516'); + BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 1 }); + T('-8.64', '253937.4', '-0.000034024133506919421873264828260823336775126468176802629309428229161990317298672822514525233384290774025409411925931351585075691'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-2503011291082741152558172157128490843.388137', '-2273195645150790262402.931328732531754275', '1101098049533130.39130765867167'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('29189820482592596.193394247499332295676386', '-2480577725438789237.6491735759692832420975', '-0.0117673476558486836715957424177052903123965597755245117764453359'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-20507863612708354363166284190622369882327057', '-227418.38', '9.017680810455317799364450749593049551371818320049593177121391859356311e+37'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-53185250672519396135716275562185131226.791835637645968173632', '9243266711148.428813267855386982276389208217282', '-5.753945259241729660101638834402808716798353128839954724530154790654628e+24'); + BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 2 }); + T('-12475.4358268084948', '0.004391993121604150372445803131974373981469350783', '-2840495.301652911788696729023437904309555144440000089017507813279301024343184158066734106815961671791606628271520526901762721246526896632476472545227751033127109410945061587151932183132124557352971708369795566831334586449910029288658711353422367768139381681174858660496808117645'); + BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 5 }); + T('-1.061527582', '-622588162.2617', '1.7050237160689786670000132171579846728112948140592563132620125578605706184434143949453353930664774310863026918342122051896429503615753617402955500341888199217844842775359427161238632596910587980933211392139798794756098583532542336854669701293056290350100117733010797576441992e-9'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('6624880631726252598700657.239324316174258217', '-1129984311845118795710.814766', '-5862.8076180178785553750906910113577915858495845090446287798885159922583336119886064223451206559829967'); + BigNumber.config({ DECIMAL_PLACES : 278, ROUNDING_MODE : 1 }); + T('4815883643854333118.271024728143949', '-368.5953640', '-13065502483786890.8146957180073050213404203314939142859105520383050721169678086347282436248981145622873325124078337566936951491337802067418297751569116316937724696938944679727442258335077703256191795184922618831418617625369807961013855833520467175490573994305582204772385579977072093614286478112'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('138905623349743953527527850872', '-937327256770725209505921244928173890636644.07819862538', '-1.481933042556565089980827972031156476687840906866e-13'); + BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 6 }); + T('-6208734990323488049779245942519271680436514357', '-16439396720130815609425313400.4307949521370816', '377674138292471499.964770981640030360283531775688780671482014480415358327724618697815506675400673555585863158590221936886906953295141780645924064864511500032807663518140349742846854676656763960131048883933143803130286224213314548290566430706412428395964'); + BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 2 }); + T('-465768500.94', '-10539299777418116356619191.448469210650420896634899676', '4.419349584665694593899304248585182563031829888288443702434463563338375866327380742592479728196546235594324793857865448380122158076819712183926789869614985548696907960359863344897655982112218722308083163102187e-17'); + BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); + T('447824340220482323687837186299424.060306273628090749622', '-2183.3', '-2.051135163378749249703829919385444328797112756335591178491274675949251133605093207529885952457289424266019328539367013236843310584894425869097238e+29'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('3650548744170498310333486374.781438', '-4.0', '-9.12637186042624577583371593695359e+26'); + BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 6 }); + T('800179073426120483927466569281923963429851264472839410285', '-36172.71847', '-2.2121065467881614923797198626247566165569730387831683756916155270649195418350320077560927645701492669704788156608789154131826575985844063104500202082821230659913960290195463432085257926151105778365349382047702095197270364291755150466577581499641157603049235243170265383706451631806261643127205086723469583899371221352388448233e+52'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('2480.68', '148769463685465001071952636.5141386445', '1.66746584853244056105967269762610107872728e-23'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 0 }); + T('-136836811670713700861557.255968878', '545672226612627730.76575558051803334046', '-250767.4112720676216787099439063343102213491148273816922159514641846171462285523100534464265159901686009784034072304069339527969664615007738651985083038458230062620518459038814412990735841955289947464255'); + BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 5 }); + T('624700348787847913238159215333907158566945121.726565926561', '-4218522292899116076446123044757', '-148085112609072.4016515420452922746255736738713614938679829987563348258191683370779348823094566326410828241440291637355496377213361007886462085431647056083445719007212518791140269925353041328118501830930452332270078034989866217395952'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('-8.1', '-0.0000000000027483206266799932973505588', '2947254378316.4427545062316262273642584624'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('0.000000000000000538267468788112414506281808647722', '-1138613423391806952522619221911.785860841391', '-4.72739437046747178862072134755421729043e-46'); + BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 5 }); + T('-3658.24734249109979568369', '0.00000000000174625340797579000321364162105752750100291396', '-2094912070483310.75335991231530233634799208050209554484387062988117102541705537541246030902579328571752900407458511493583359910146212964018086524194340563363589661914259286802101'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 5 }); + T('26031286190.843509157191486212811731', '216370152151930132931260950.669630', '1.20309044163193729626092412633591472338303842514731374950137461050850446462637081939144184493111023863764556752652926336549243371630379458781469205734360078596587871378530950424e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-0.0000000000019753705798340641860323061184641060495537', '-1007149456.35507516', '1.9613480078547927332917949090603337877709348935535037903271296e-21'); + BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 3 }); + T('-60826395622229865.996', '0.00000011073', '-5.4932173414819711005147656461663505824979680303440801950690869683012733676510430777567054998645353562720130046057978867515578434028718504470333243023570848008669737198591167705228935247900299e+23'); + BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 6 }); + T('294125529266567952532432137532929398803755068528125597941', '16091304458640213665627600', '1.82785385748286848025236449527635587440032090861225625821463628382514874670919706551801077754754002543885532667800082947987927574283754966769395404919267704333557768406816890479303221950772152692543194464766785551244078884849432903298600161237226931058203121771921781952764813112246656103933206382842047873432314314425531745039e+31'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-2727182975624451130904.97996', '0.0009962903598090974433055774147700427748', '-2.73733751287828967917445007598257374e+24'); + BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 4 }); + T('0', '-0.00000029096844095313187', '0'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('1385629943584886384592607499734583429872.75198882395129045', '-20.79111798997276760977', '-6.66452830604469719017692131500252360557477420956414e+37'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('0.000000005586736783', '-9.580178941542514980735388155102178556784478357177779312777', '-5.8315578624259741265524521811154589615e-10'); + BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 6 }); + T('0.00000000009647784117027347345734523669', '-0.0000000000000000000266447293802537168409007092750059841002647849697060644164852', '-3620897769.063954017691505798070208352285583632538690026853095546666919752813308027288422488603703891621286222952783069677442730378012011293829775984113264283484850271031889878060266090614051002693447468159102569827893162384124775038203299290498906367958924807153983183056566563986016299839588599649576'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('317038202289417541212964567765364903987531016085223179273', '-3253614702.157886792', '-9.74418397111216279887578917143713190659370054140768229827370563614154e+46'); + BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 3 }); + T('99999838193365385', '4.7790350624023625309480', '20924692304537453.683372489002990060151293910355880670547000901246628551683048842128952943591501443775624009443403368471105133712261831736470815329802887515739969861976357590341100228281201163014575793082962351'); + BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 3 }); + T('539975262.6', '-51743500491228110640475991287815965362340286159281', '-1.043561524585179663937065674823747771678328836848832851642518443609812300249272324084815802333536699276765440047279286778900706986511962876066163639537839032470631639720432142752590570905692572210803956873991915626392483097287417399984563103904205364e-41'); + BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 4 }); + T('-3129.92125878778496383927285147375179008830', '3713020330.9109205540653319036258930280764235978', '-8.42958287281965120221795812350772599183187218134705635779461837437291618438567320682897692969115682540077603626155296742917522602149410044443398577061446405727453002170110406555154189415889592877072547537398629337945163999826e-7'); + BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 6 }); + T('329.3330750644104214067819800555349418510704376856', '-127896552520408653539.510064901452151839574621259561020', '-2.574995717823263656274120210733082917892852202039690494921186419116376300003045895018283005219396742263519695430408375138534997221029447229903615197771230551736264656433524741053000346286856791443143638972244414415861927059375416208888226744e-18'); + BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 6 }); + T('-11767695610896788787', '88327785272916291721729723445817.2605487080468133128', '-1.3322756338265265265606662524451404103327743237596951271769488911447064094549173258808689504947090802500347202647049975690308900463530160556381253432160795271621678635972865913759272687226425139984000551802102926107323695329688050898505477884969965375691707e-13'); + BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 6 }); + T('-0.000000000000001043271755836', '-851025571.2355700326072725160394130658722655085687431', '1.225899421942533890323914559461582076480642272922596206808045672563091055513806721686132216340398767029331144704314687818501199590861207158214604686661e-24'); + BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 0 }); + T('35160830697978950.2871242366438894659870477971538357064720', '0.00000000000000000006936514037650685337060683777351255238292', '5.06894825082592995637765519810874430011226792501991010917350150679320841149502398988161444846830912031726052933196678592175476705511305613291858588974656812474603055732254316905093682494430995263888022230210964204126024473492526645253836465472749999826e+35'); + BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 2 }); + T('-1300438835830775541970072.633280585716480322191841', '-944142789123106139955806320563308', '1.3773751712265761968017329728900678897849146372848010670778310455461064937849396828350433872149406504961930112994541460674065723130152138129788053065023092971876470130764468903689969556928394385913155552747018775263209304263590429372204182e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('11998675429601529255834350330033', '-406525947', '-2.95151527673620529216413099703891717396331408090908401475293777496568995139687848756182837205222720998913262478667813e+22'); + BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); + T('-0.000000000000000000344323374206729909768079920652922404224779234', '-0.04696655233483434196989700881392115040841036148', '7.331246538003828754482176508969694410223032316011882719666774295908985850227829110954641892626569096497842844622279288361783600433814998268453539e-18'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('-734831971955212232788677194706753906200.2558076', '-18497118465537108466490973465864894691374', '0'); + BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 0 }); + T('0.0000028352954360675712879208121277730667926342115935', '-688511687031402866', '-4.1180062582412694604065597324247413854514303759204226585577789046156689505848974302805434359651701192883399553343881656146647562181713191827898475435168915461423531159899671e-24'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 3 }); + T('0.000000000003866856191732', '0.0004488070349547561000327267960685709844701', '8.61585467821781106259586484183453912608265521177893922572083799214947756895250419152331101505023668082705657e-9'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('-955302817.6043676871181547480488557246', '286.3', '-3336719.5864630377'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('22189014794561455089769648037933513282434596774291', '-54353.572508976923255308990248298456876262270090818596171', '-4.0823470786389916591263508386188160659674685742019734703047450100121431290059668081882390992435687039701453805154297371335687e+44'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('0.0000000000000041323330197244607770892681949683581783713684072198', '0.0000000000007920195', '0.005217463736340406741360873305478410794647566640997854219498383562525922657'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 5 }); + T('-9549653.4', '18254902046909643153002806', '-5.2312816444921175048773792896046747126384672381807391811151001827922647106638853674990656532334407099835021469886815460811228368332928817789809408526451705294251195550544743044650092351121391586293777591522816213010935542142727745627247945426515586472910421355776e-19'); + BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 1 }); + T('-1.6806464810246591931073969381119924560504868697938767415', '-1.234278', '1.361643390730985396407775993829584952539449678106453117936153767627714339881290924734946260080792171617'); + BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 5 }); + T('122901866522252.847589', '-961802320671538794244416706794682462075362387666209564393880', '-1.277828758371488324380804809965041815235695373945264430137970281217686827795456754e-46'); + BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); + T('0.000000658578017704', '119656.39033883919', '5.50391011996149602306607993401830156067707920993139295729218351631209953769670307993977306788799198181574e-12'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('0.000000000000000000371917760154464841748872955421', '21618652488', '1.7203558841648782126853574289296841765302536834043215321052e-29'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-7.8857628', '0.0000033562997810340611206175184744460', '-2349540.6591989322696950297541293053454234564465069704371658291409315363667949'); + BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 2 }); + T('626679773.3107457065273063712548652163223224368094679', '-1378.5565', '-454591.286835719614341020024391358073696886878999495414224951969687132881387161135579136582359881513742817214963623181204397498397780577002103'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-0.000000000000000000165150294704311851730419652617482212698453723107527712855', '-2485036222881054761280674830701410760109597.37691499', '6.64579023773e-62'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); + T('33.46621733915314904797268645723063', '-58153553796429316455578929933862745229089297041', '-5.7548017540431048670372762213353215e-46'); + BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 0 }); + T('185228452630679039.88730854297473613625056', '15265837398805580030', '0.01213352715555398009338416726561339180217057267149634525421916812461621667507273841280098266753683602929832513898054650009251311567252147680062278353263185949356192144672944344393088704301387533342848402704311457481699078618245160205376747017176488989130300278391695'); + BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 5 }); + T('-459294172881.35606890392213', '-0.00000000000109680098774575846113893396696142182360400339838198065948502', '4.1875798619158587384827552981696629833846824865087871775054806261259231977424547504399475441382643070260159617658000388755460382250530832966433287329816489320373152683277109644952383136010574428948314472879569942243842664827788187323266358072026595816891023177662575066552293694208276906689818258844247335e+23'); + BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 4 }); + T('-130192.8958673824101799783742885006', '0.0000000013954450877380955676017223303', '-93298473018680.111473911191763226324004772626836696819272569649621824673970921667124937589200178387441270133766857849097381135987389527675883166405539542423570249377982463257703408550018423'); + BigNumber.config({ DECIMAL_PLACES : 229, ROUNDING_MODE : 5 }); + T('0.000000000146285544305667216396289278', '151722681442023752855863477639296327910', '9.64163979408483006240234724842259233538200770009767499900086709597520505828033678895674078149870324908853139975818325606244544454036677095123608834273384216028831378436379824732035e-49'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 1 }); + T('-12654915918708900017274197715494848537532380.65722781232', '1.84', '-6.877671694950489139822933541029808987789337313710767565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608e+42'); + BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 4 }); + T('-2500004574.709941621328256524353022210082736200559801190', '0.00000000000557008928177304730331910699', '-448826661161551564950.508109260877386664969593629737830669037817158737354932983635393546975604152278810791119966496891097246632116981870789107341459882548556739506348548357553738343057455157348191222048005846236301514899655633027390587728597077748870635215254585386548409'); + BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 6 }); + T('-5588684451773363184639793500721501318209', '78003965425478851569600050960349979886133426074298298.8410', '-7.16461582598966353677682706222314718935358855970010244523590641879170747150934778342715175935109150886484154549230095669606747560914292624390288996811188490262415494981096016824770034711534505e-14'); + BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 5 }); + T('975161.36195489989900238553798402773943401', '-5046009123800658038.644666', '-1.932539831042571707870972015882957659552372203880877313753126800493230385545598920483820209110305135482088767859978887e-13'); + BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 6 }); + T('-258503054975054668728908940568162663824448373049618', '-4415333936663665648.596', '5.85466600450125640546808595203486089349979919708492456038570250264710500951237873641099077589881321390730271675776476424184219834742818175641417587358230824551843874312278212726969e+31'); + BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 6 }); + T('0.00000000000000000189', '-40057268377.9932910', '-4.7182448442698364644004684191009381948481636476492450138760702187588916913713784491237983780925694843774008240904790730093658266100558175043197615934957570980410990578497593462032927749992587847355852974580180705940758405859068549892544e-29'); + BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 0 }); + T('582876615664316806926506530515698093.322', '27604699373308594.0711890145', '21115122747104035460.21337532875946214674803273269781389442262848600250343819009917807627269597021112102186520739770446714009558582511713864614690767008819523634354430262123229283774316367842068234116818'); + BigNumber.config({ DECIMAL_PLACES : 265, ROUNDING_MODE : 3 }); + T('0.06265262744921950464499729884', '418.1968377069103', '0.0001498161195879942693163229102072748977977139502261436093345004263680394676108975676909295159359005592165627855144486334867842679720394133268043505391809993987171116761771848835386657427593521903807787893246704584828325920426874665944118323962941719647343196145648'); + + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-2.684589e+0', '-8.298191387835406867663644795762577999681e+33', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('6.977911290006014182648715746194971078277555330014970461399e-7', '4.321829466480785587848132891783076314e+36', '1'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('6.86140621534e+4', '-2.4476846364974384372861666982952981676991222127645053978394e+22', '-2.80322314117984e-18'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('7.357561152451242940317e+11', '-2.648460003354772976631704945839085e+20', '-2.7780525826825805216131501793e-9'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('3.8258392715e+1', '-2.228654383349426575347306076218045986778346e+32', '-1.7166588503284108260451166287229525317827195396729e-31'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('-1.2570687218822116166125857102810153948324213786e+46', '-4.809117934e+8', '2.613927832783756424744367082683016179973808433120450898886190633394435e+37'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('-1.376189857312380383142846382511311919e+28', '-7.694075937671282443624789e-12', '1.7886356574340012413308387752652601567546700392520385799661743200905210552131420895850910722343227343225628604194655722933103953426624479e+39'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('9.626195658e+7', '-2.0085501626269837453288189876105866300475813045157981e+4', '-4792.60903566874026466045202923289181547579680145575014194856793200300036317880008519360363'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); + T('-3.64533907917885729535739841744314937737517731530437841e+23', '-1.7265126331152074647790745439743846377979463548536e+28', '0.0000211138859297046890962298'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('7.39795272246012132e+15', '-8.507649324190330772e-9', '-8.6956483989356028289430730108548466741894629427205910354758526866523678980437464869746571187378462716425111145661225601e+23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('4.3343427747354259351058185933767988216018653e+20', '2.942769405736425339909419857531486875e+9', '147287883525.170761322706812750128616543853659164696768704020314521886872955783231335178457'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('1.042351453472645229718e+14', '-8.1066266385402751519347723e+25', '-1.28580172733887853360689025161397132403478201888896064498766e-12'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('6.38906035177779493e+13', '1.60337080310451456115855e+22', '3.9847678025613446771717106354216247648325819717141849e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('3.1408858250837517594e-13', '-2.5696781557770853056570768387942747953e-5', '-1.2222876308546624206e-8'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('-1.1e+0', '1.65625870433963801924812297552444726205e+38', '-6.641474531e-39'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('2.13111e+0', '-2.113892292836264709191412822070652655316e+39', '-1.008e-39'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-2.16169668759945865460592071150656e+8', '-4.61319410657275351248683519834438786301441e-7', '468590013266411.660197185452972162138337424697682692'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('-6.694576234276447704831254188731081371011543645e+39', '-4.9933816383e-19', '1.340689880967243773995926456869849096431228739194284548342730665421889e+58'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('1.363776449037400581647682806552021277695181e+8', '-3.28729315613180082e-12', '-41486304514507415355.9873445662363079631786908075443085749055713190839053593601250526358412929936002812015659573822941'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-1.8622866502154589395913494293567400069289993e-12', '-3.51901484483879256773e+20', '5.292068184784173628395225e-33'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('8.171e+2', '-1.017285344548424669090869e+21', '-8.032161324045345318349494756349111649247256388570208173061814265805930600586683e-19'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('1.1593291795888842255456406799619572356750950858596669e+24', '4.3939043260187083422239580622172109613895683484967375e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-3.691954879536400550465345429e+6', '-2.3286565939140717663765119466326782700047244284979272e+52', '1e-16'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('3.290995909250644626602403233982e-5', '-3.72804885383603841528932457594039248874217e+13', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('-2.8257790508124e+13', '2.2099490200460778342645851618607e+11', '-127.866255066530086694493637648'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); + T('1.222504367031675454484326842964789696580983337378049696e-15', '5.398989058287691837779392874e+27', '2.26432088273095513074257888426898404438e-43'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('-9.0955497166616772560134361788715705481650282e+32', '1.006178216642177399360607273452622897436513257e-8', '-9.039700488662324513300190438213233647099495171586067259100775488679950796211088995617068393892952904823139558012544535759620278109170568e+40'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('4.061170008482961e+15', '1.2941019701447e+13', '313.821484100581'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-7.112855e+2', '-4.471379399262893594476210623345636203005298072e-16', '1590751838498104940.448'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('1.51658497187542231e+14', '2.0466256499056096481968585948298376e-18', '7.4101727980657683623438886297543422771e+31'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); + T('1.15629093366e+6', '-1.64780587468499e+14', '-7.017155063129310675892792381270633e-9'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('0e+0', '-6.4215255610276741653e+4', '0'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('1.53383929416394591831573929326266805686729e+19', '2.1001119162527479394989376499513738164781e+6', '7303607404412.959609521511410682657466697211721578772169'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('1.566217258556207333735292e+21', '3.972156275361908175025e+19', '39.4299002854188384418021271234531369238709074556162666394708377262437'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('-1.127161561152447628384525481045262e+32', '1.34216e+3', '-8.39811617953483659462750701142383918459796149490373726e+28'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); + T('9.1213795513994124954741359394651099072203888930318348402e+2', '2.58716189598465088e+1', '35.2563152911151557748910665212033545809325810216646'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('7.4324711466962356844069138844597778914115941300760727e-15', '2.4255221e+7', '3.064276819698421088147130831939143284413526526959318449418e-22'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-1.0037454226892777914136301342549839000985270605559e+49', '3.16760019496658784751994509663413740695778340937023e+19', '-3.16878823370531265855597256067959092153148985748326541373252958515953514436808610023215894449091e+29'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); + T('-1.151210688443460005245e-10', '5.64429338006705896765468750322346865809556401e+8', '-2.0396010818803019961856984816441e-19'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-9e+0', '-1.284667267146645202597322557792781234816749051281e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('-8.16383977729e+2', '-9.46731059144910060833938292323238700273303856328331211542121e+18', '8.62318786146469218394225429987826229976305e-17'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('1.60254524932163044190224193987222755331272357e+45', '2.7472017615228386863893214657310884e+32', '5833372967966.1454465819347248524876236156471103524157861685311400539697612517911120233715414376'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('-5.3207722e+0', '2.0155523744116957852262280482788781562e+33', '-2.6398580694550493279366944428184415747e-33'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('1.14102385186386041655018166211663550774271628173e-2', '2.134783493258839951284722193192e+15', '5.34491603231406771987659954273183534569412001579251176615e-18'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('-1.10678182750716064703967111313996867399272652595e+12', '-4.2323571177080288728539704625120218663e+27', '2.6150482974993427927834183820781596307248766831447249228068107036260778292118632e-16'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('1.83395038646692248283155237788079303413997259681334688e+48', '4.62387352556641061495469782346733e-9', '3.966264164291277993799910513458450004611630251694002784599395923e+56'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('3.050638661366832442292808537413012398794503785533928837964e+51', '6.2467837205570484298933781506664116212544674586136547e-16', '4.883534948277024540183845067781496268644589614327240405421609769249613589117449683325989399497795797661786431831935467163707026e+66'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('3.22884712158807e+6', '6.1818784696911941663320793603579e+31', '5.2230841117608e-26'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-1.11959719784431162899359e+13', '2.176211015431916005560267354712736969126888285709700337214e+17', '-0.0000514470880767094831194756095658352065923765293221540580509786301354491514299589'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('1.4184531239263454962400471579847717448e+9', '-9.045173964459562515700703201e-3', '-156818777560.249637705624768350730872146554123192753833226253469477853'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('4.4520521864043734792663602327839683864921433485964e-1', '4.634337525652011919e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('-6.83048398289181666952021562206e+19', '-1.02e+2', '669655292440374183.2862956492215686274509803921568627450980392156862745098039215686274509803921569'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('-3.9019633429186701133666823934994052744540282372224e-12', '5.27507431812331195866605782075928779e+25', '-7.39698269e-38'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-5.1460450210738226230405884328533068570547e-19', '1.29386654181688367984212003546e-17', '-0.0397726106577236466920869775826329733180993146849688031015873756796073348788951'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-3.8685221116675758707293434728747610229950996852e+18', '3.1897344996347148658091457858222594101176637438543004e-7', '-1.212803796714301791688087105099710436914444797749598037229151511772121313364700095469555e+25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('-2.46942e+4', '9.1025584843870185124740143872301900448164885426210358984e-14', '-271288561807718488.5196242238250254929854695158851604707066668853126037797695308780292022829123'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('1.1837939137372343e+7', '-4.551005460308206359577589733803e-18', '-2.6011700580492482744167952339151813112133235715820624347679056853103665846640780415849455706077711975e+24'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('7.941828289678651079241504e+22', '2.62662673407814661752043707378745e+12', '30235846558.02246230241812305216278227485125692337989976810864975434944383939875159725932585769'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('3.983459649952e+4', '-4.43007833195742994603987896254311885354607075295409907017826e+59', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('6.78591935399298e+11', '7.3743935853990604278178275154242145498388e+40', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-9.368271358463985794595010572399063528050211600971117e+6', '3.536365904968796699190024e+22', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1.21788e+5', '-4.6487152e+3', '26.198206334515824'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('6.6731708723476079058886985347462890741983281866952601355082e+58', '9e+0', '7.41463430260845322876522059416254341577592020743917792834244444444e+57'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-1.09506302e+3', '4.869496261415839850481677414e+15', '-2.24882e-13'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('4.279526224252e+5', '1.7846634677365185817579e+23', '2.397945776118623477061832322071525026e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-8.423955049192861030967940476881511700753978237699737e+51', '4.123332e+1', '-2.0429970347264932901274843929330725007721857560098815715057628151213630141836747562408265936e+50'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('-1.3560772953707170567e+16', '1.171639510240212457042280074438448259602e-11', '-1.1574185434329461154443955689815469e+27'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); + T('1.3682373349575334e+13', '7.3600491108875015330874e+4', '185900571.360799840901532589795015622988508772394680944957251367253071994448592590501014753952246546273653151'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('1.3154004825473805973728e-7', '-4.2582470979271932781366124122462035e-4', '-0.000308906564672511419324094397349121405120205734129928276'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('-2.104683784186112035861065543719370616598874094e+1', '2.949462623949027449275e-8', '-713582117.33097219832176840146725375704044380206297228453272535'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('7.264384e+6', '4.1347781511967869682324184706673016934485517898e-12', '1756898129564065538.5648236691867481772804909'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('8.452e+0', '-6.498752841059176815657360373992243370692529926e-6', '-1300557.231012109076220298338725550868419'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-4.993594946835093846057985799914752582216782034739476325e+54', '-9.9800210431303370202060947045843994236750947381671e+39', '500359160091390.0522022025279178501845115180032990838020458013582838577980303243830071241586995547088417'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-8.1e+0', '1.395459695825119273719768559e-18', '-5804538837082330156.779223742084551100646177915819'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('2.29759989e+9', '-6.74056783179189161439e-13', '-3.408614744834061231017348297805381333362918884614317205392744042799e+21'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('3.97091582794225350279171799532e-7', '2.41641837877861e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); + T('3.91755997773439294874762704576067485095445759725e+8', '-1.250019237909e-19', '-3.1339997489059339788321458120106149277099554172394312726319722815414057472452e+27'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('-5.88024471232446948649e+20', '-8.47609867526076e+12', '69374424.928383325316192683904844889709235557779702197243871143943081592370136257760539021736478527'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('4.62653566481581417883704493628225e+7', '2.338441527793468175731223125091471817382739415e-8', '1978469681549561.9830730024638681222283016'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('-3.70841e+0', '2.0212835550025920164236650527972686e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('-1.243519842187341059877996186201005242904186e+24', '3.82960151991082846e+0', '-3.247125936529020862492815416213503335626772746119281932758760079466e+23'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('5.805502676478053e+3', '-4.436490697865052222068353951847332008937e-12', '-1308579927660347.1317553786911547314648452364448033931774319044807345184'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('5.2494545223e+10', '-5.27035784208457683653e+14', '-0.00009960337949697341656415916012814401160294873770325650334566064690145467'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('2.49244061004426376013957150764335770342176989668160077768341e+59', '-1.59257486429992561624341440625009396614856277710345973905e-13', '-1.5650382697330256825184745368958962442962165441841972434001467977532021426696860087596218088678570111739490499980142692727755778391867073416614e+72'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-6.491148513421149560857391627411087984e+6', '9.982586739202018304193114651e+2', '-6502.4714365166987562205089717878495692701415667688831557'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('-8.242562587219826322756135907789392e-5', '9.68887286050664118022635136173134360297e-10', '-85072.4610167793470479405418881672102046151305762553603939826873340437920415615727192625401557768007046'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-1.9168988826688945002797462392e+8', '-5.6803714774636698531824146882277509515920145e-6', '33746012743603.25453300564268832335590229566345157198883904613540264'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-3.0258848821938566680797457e+4', '4.0777429787685523978273163156521728105076e-10', '-74204894667187.951707382924811293760803562598157029520944344469016807'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('3.69927674623251618e+4', '-5.220718872545424800848019614582913381e+7', '-0.000708576124580500336192976887065487350085252556049744741097735562040616366441083'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('9.0360008962766875594763448795524371902981009801e+9', '-2.223480500424439742e+18', '-4.06389932115519213237591244399326869093522905516048989011451996203527973232052e-9'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('7.846135938905626718e-1', '1.1227167968e+8', '6.9885263685988408630887956445331058219721470546364591452062258840875302027012481229852e-9'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('1.70727356485719357771889024622608240016418e+7', '-2.611709352972367924505574729526972189307321059e+23', '-1e-14'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('-8.146425e+5', '-1.9277404692834179214047867012804398030805175180163596757e+44', '4.2258931e-39'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); + T('4.8547000826477016024456452593554872e+26', '1.48551069033736534532935793131415257927835e-7', '3.268034430331282259778757092657146e+33'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('6.03584602176774046327932728e-17', '-1.2586589303123068e+16', '-4.795457988185954652905480897359524202862898328367111641e-33'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('4.4172739030183528644508688032320793125e-4', '-2.3061374143740932698459421e+25', '-1.915442625181657396931840988726152e-29'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); + T('8.195483493646410802532840494364654882888160274e+24', '1.8136267401926565382e-1', '4.518836931559482477970235635572593907994799170688954822187301371053449490854291624484682892916282561496632818332304755422601e+25'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); + T('1.4068028613883262515279256094430309654735814056843454e+53', '-2.07076327391642e+12', '-6.7936440592151796515531889859599302465619955e+40'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-1e+0', '1.40766974210848837512174406460979031888474180076364280389e+41', '-7.10393901414789748275425e-42'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('1.7579655365177340193424e+13', '1.2e+0', '14649712804314.4501611866666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-5.14439925941092475978e+11', '5.17344285354751095733170689026326670354045626959509e-14', '-9.943860220439720235358395841971427324498245807154312225967e+24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-2.37593121448325e+6', '-5.046060106975311967927899320989374191943529e+36', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); + T('3.02711053991410051857924824689543e+26', '-1.075056872845582e+13', '-28157678131963.403137625452169598982'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); + T('1.7031e+1', '-1.1e+0', '-15.48272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272728'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('1.11316380861757648895194104293992512257677e+23', '8.793892933245547e+5', '126583734538003185.4758241204022051444374083708665989607584433419645145130072780879142188536521'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); + T('-1.2445771504873016754168e+6', '-2.1271991905337074249602498312341407038514567859e+48', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-3.2126287105084394430000471990181426501347496904162318481486e+11', '-8.3179486349e+2', '386228486.31561215352847732683444136017055289575412'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('7.690902892945358830667793524605728734978227614373987e-14', '-1.4356798866863650458584021720666350506943e+41', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('1.7895458349982693e+1', '-5.416619312e+7', '-3.303805809342558611769022914121309029516675031195e-7'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('-4.9323788e+7', '-2.50190605470094677463478e+7', '1.9714484445698213940290620650359219518342171516654875835474849479064879154999306'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('2.4736831834e-14', '-7.4969e+0', '-3.2996080825407835238565273646440528751884112099667862716589524e-15'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('1.6917100595076468e+6', '-1.46580165410522403243e+20', '-1.15411935494118749818764893135261277486721803740858622355453e-14'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-5.847430247560464729871452390733940532932e+32', '2.3541096749220802874394138545934615951759723816573e-20', '-2.483924308987010725424240411422860427064539227981711351325205989e+52'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('3.17135563092456572471636397368039837592982433063e+8', '-1.05914712549883732501350758e+18', '-2.9942541074554868997473426603892327061035895442213978e-10'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-2.06351590455020120049e+16', '6.876717e+2', '-30007282611022.108376569807947600577426699397401405350838197936602596849630426844670211090553820958'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-2.58574038568472804398707132394333396261003537509e+34', '-5.21101118437e+1', '4.962070304973522088497308062328913175297198877790786260422926984000792e+32'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('1.0902927014420428768829601430368355906592671e+9', '1.055311509526061274313257267095679915243147902389364e-20', '1.0331477403593291618651997366870712877657798362117890624111285603482011526479e+29'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); + T('5.240416698263987e-10', '-1.333644541451033895111125e+4', '-3.929395378893315244205009777387015604392422371871707395300212485273e-14'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-2.14459463571407661232358156993163236e+3', '9.50710872243e+4', '-0.0225578006766069890476863268275831247472021132902642208034682013658062249109412597'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('-8.76570122913186285413266288e+26', '-2.29060139655641091149799231649e+22', '38268.1213864176952764740852047'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-4.298685082322146249068382224749649229024974889e+28', '1.133736034155732441317831862744713483858036136e+45', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-9.03007143e-4', '-6.527e-20', '13834949333537612.992186303048873908380574'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('-2.1983602077137e+4', '7.618052445037037559598956806049795697231989369872038175438e+19', '-2.8857246961405133513202683415394692463335185692463717333667e-16'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); + T('1.06464442348e+8', '3.3798404104228937656216886e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-1.4834231106114591731402527448376685e-20', '-1.008042281392878891612406531524600516179351763e-2', '1.471588184338572638073105330851883960616731833612321362739486010713142111976394343e-18'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); + T('2.670388961061965347980551054975608950852709569216285620955e-19', '-1.60813026578e+0', '-1.66055512907515135118e-19'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('4.8418752886050656347980335514333887020889131e+43', '1.097542967900589815280405934238056787462980720668271e+49', '0.0000044115587546123474461506361364672762222874748810055883596997210401117'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('3.3224789713227436115862e-2', '1.608e-20', '2066218265747974882.827238805970149253731343283582089552238805970149253731343283582089552'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('2.961317953735582624263692428362719343623646795e+19', '-1.3517568497144e+10', '-2190717919.6918822065726495016909794400572784395953745101039724415568485'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('0e+0', '1.1939703967465696474752689253333379e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.26796190094173770423550237861043095542063898039529199e+43', '1.26298820426297231964005010029776128172101839e+22', '-1.003938038900108198770681530243365490954891052649781926766409539371771486e+21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('1e+0', '1.6170590286500285361572052458334865220135332303348474870906e+44', '6.184066149e-45'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('-4.344226793252287936662575858173495666e+16', '7.4902162293477512160241201542473027963977e+17', '-0.0579986833521705106175436684208656934679279030765860884254386621756617457'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('1.1041615788559476498e-16', '1.19209500912407230760038267262966923373459798900839109e+19', '9.262362231239132586738e-36'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('2.162814956487398129962292148404305956266611109789601012e+41', '-5.915867999480806710898718365e+18', '-3.6559554010961922762856860392852451655514603695899749943344699851e+22'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('1.146291872478340289884233459851149740837841441815228909e-7', '-6.435879737791406e+8', '-1.781095855081518430889798713961693993561465771293013785195918295375263486769e-16'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('1.987825836e-6', '-4.828551591717747253234004666945657377524888791154e+41', '-4.1168159814418283e-48'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-9.1043267860469662982384830806192792e+30', '-3.5735063034496425898824960323416975460847901026255576e-3', '2.5477293204319272438344709139526955621347444053241700169298705609906904001227879397756593003e+33'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-2.367801552425790979304601717059614184406079e+40', '3.211561625490428517091311e+14', '-7.372742075482393033660212776964122499020480714494052624961080189e+25'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('2.298283581516075763910625062672569636598280933354564514e+54', '1.074331e+2', '2.1392695375224914518064032990508229182610209826902179253879856394351461514188830071923829806642459353774e+52'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('1.4e+1', '-6.538600777557645070419198519e+3', '-0.002141130874368721062351217232'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); + T('-2.2306372789925e+5', '6.087280013886758774792105120955348021e-17', '-3.6644236406142041854728332764842849689742925874428248228222464514080225611127156359298422740410250856e+21'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('3.0916302684309718e+6', '9.689969983289990587602334156217453449306148e+20', '3.1905467960812866286700078293262977288858007762091149e-15'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('2.472242340658775423383338e+25', '3.311980964418811592260328e-11', '7.46454272297608447562578490860244017598403328296566586426992265211496907421150480103391314673389860920199e+35'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('2.0667944748628464421657784261580525169470681951620475408e+21', '2.457425640707239072529899e+24', '0.0008411'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('8.15509163387e-13', '7.9253614422701106738777291255370038774222512634924e-3', '1.028986714772984066644091185941599096621795451380458698733367e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('1.651313805562909447176880998846e+30', '-5.76743933174730865525295264418916547952e+38', '-2.863166321443776e-9'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('1.2486688707964869459e+19', '-2.82989576831e+4', '-441242000775945.86715515268447226522295488226649200971467987897582849684'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-8.7828104612557296045754796993179e+5', '-1.03233956355612335e+14', '8.51e-9'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('3.8990844981046752045360026872079350659405084e-20', '-2.695919e+0', '-1.44629141235499850127e-20'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-7.413007254775067343779449915809460599226e+39', '1.43446731218463175502139e-3', '-5.167777049924809717443440027679719253039437453707533757929740275891963119956e+42'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('7.14321472519238312874067225981396629256702165561701687819e-3', '4.35412003983276021716841044396819e+28', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('2.938059200145926264847352563204907755716225111222321484e+52', '7.52004086987658309e-5', '3.90697238350799669357400946469326817124139491115813292967181191497292252623716669133708910816062457199435939612727349101488248441e+56'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('4.305028611073344e+7', '3.18067289646115523384611501e+22', '1.35349617870581940947853280257127346559530606596327e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('1.183179488487125253140530741241348947094489e+11', '-1.7602259917256719183640030137978911305e+22', '-6.72174762813933988509930227027765382885528544070345597819313408109535e-12'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-6.879513926786496523467891202666122435727881787e+17', '1.08824848e-11', '-6.32163890252940810307209544888693291418e+28'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('1.699581450633584e-10', '-6.86399451848e+3', '-2.47608217934583737293043072051494800657019186693446e-14'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-6.85729609129944845047e-19', '-2.1805945313032243123249225273722265276742646081e+21', '3.14469104e-40'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('1.5924784192801458636895321e+3', '-1.392980451078160260176079559000603796462914786945087e+28', '-1.14321663168178356174193185371690503743306393722958174836550309640375e-25'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('-9.754142756698401558073375447273628699528463547911394156267e+57', '1.316719380045008261525774924350086978877743882173251424164e+19', '-7.407913109295151611947872129638459638803771697120658772832578868301402446872433463482099904155815386014734491264040157401580941623795e+38'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-2.33641941613676863516717479468761193381171832015069302e+24', '2.038623000304704384411143701555981259e+36', '-1.1460772373251718812553297256494514042081707043e-12'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('2.12043950679913503026778076469046848467323279203915748e+41', '2.742015618e+0', '7.73314160896633897388610995391663915997882106898764381873772390745004137317791163653393895439147e+40'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-9.2581956946975006840871860062691368464897e+1', '-2.0221539066219726626596127993779216939721353587484287e+52', '4.5783833091930201e-51'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('2.92207461871320315795285390664826e+12', '3.804e+1', '76815841711.70355304818227935458096740273396424815983175604626708727655099894847528916929'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-5.4318679905378e+6', '1.670623735329229880306945005647428416872603e-10', '-32514011836826570.5112007133449'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('-4.9845914245756149501436602e+15', '1.055052431283008884577e+4', '-472449641058.5058867843073548474530078753'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); + T('1.512564e-6', '1.38979796076405906704794232910476562908998439e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-1.2745097050268076893738682530705733701606363302e+46', '2.1262972545124879705009271349773306004576107738758e-2', '-5.99403353563104719691681943818281528974024096973367009496794825248035759629417365855665363754848933205901259074772609866e+47'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-3.1e+0', '5.41984766608571557254330454890699771056e+38', '-5.719717953325541142e-39'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('7.1578423670097998051879745833089835465359027461506408958e+55', '7.7e+1', '9.29589917793480494180256439390777083965701655344239077376623376623376623376623376623376623376623376623376623376623376623e+53'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('1.081131976757387131882134e+8', '2.356e+0', '45888454.021960404579037945670628183361629881154499151103565'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-1.04572607174804778256239183637028817569562863252103637346509e+38', '-7.26634695689060300286803860330126324870796853854e-1', '1.439135893113934467304491273244797042360962147162056611355e+38'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('-2.528e-5', '1.65937627149288527912309114881548774973949532296261907e+54', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-1.3453068243728082336349490882179401367571090051080616e+52', '-5.9543066589039246340936086990658553849983281715533037188135e-19', '2.259384511815610457970772266971641184777064611238632697862697842821299001585747485626147669863057680247040759847771254885692114651779128505571539e+70'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('8.93648433530533885374133849421944025769343458143626e+41', '-4.808128352362641710821e+4', '-1.8586201699283017924626570774401784131853983415447795685562898752827263922814411964420472682079404773088975605058402689189959e+37'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); + T('2.83730151879228871233687537544881353202409174311639660587e+38', '7.5548773007973893e+12', '3.755589145693765340622594121437925064e+25'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('-1.08328010942954610962003e+5', '-2.040051066901515974502652637145748443977930612177768887e+22', '5.3100636891156889573841770459665916841337179378121648906921921000646e-18'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('3.0506760595e-17', '9.18969111944231821275032565546747730264216889349573186898e-8', '3.31967203233391e-10'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('6.007459e+2', '7.54789521172973384e-18', '79591181799452729746.6142908834722197517'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('7.154888199745248648433005334242021014e+26', '-4.534613593168835400628615587441511538464079650158252813358e-19', '-1.5778385639128598718438804267248967706282630702257573609250637842257952225741076744299962525048392523929942603e+45'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('1.0433600681003394759618897771250673963671e+7', '-2.88761046e+5', '-36.132299787428373422705006309094315871369298198206415972049083102434806944147'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-1.1371376612546e-10', '2.97802390130871296219839282020743256149861091470867783838e+1', '-3.818430271009165107465921832538108858341785003462060916588131305350668864346562e-12'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('2.8229065250743404122721833e+6', '-2.248669788684196117661917515512615275098e-19', '-1.25536730171758903810971281840999557514530792223944285245061533757097155965880006409501754538336376178528e+25'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('4.5058886e+7', '-1.1880216334115198639557698579229e+13', '-0.0000037927664558269885175416416655'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-2.7535225428311273e+9', '8.0997202e+3', '-339952.7977313496952647821093869390698212019719'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-2.2385016841e+3', '1.387035768767767521328461678439642947866086257628787949645e+50', '-1.6139e-47'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('3.06121118955298703779956702994536198809690663939713603e+38', '-7.3035050611920762990236825431122148949e-13', '-4.191427491190561180588968793197797570908917939897845615294946488791739226610209705339633360071222740444211762778029523804728712852236034646e+50'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('1.0016255724547355991077369440287252551656932150464723691e+52', '1.80880801397902971407543898709494600103357157e+10', '5.5374896877604605378169307382135633669497777116481941788443299045207113944498045700778e+41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-3.088048360168477331792557775463584165425963572e+45', '-1.4e+0', '2.2057488286917695227089698396168458324471168371428571428571428571428571428571428571428571428571428571428571428571e+45'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('4.0238189014690547e+4', '-6.7564563648585e+5', '-0.05955516744543239956135329596521881650294'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('5.7427903e+5', '-7.352522632005089658008354842188067529307739382751e+32', '-0.0001'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-9.78248e+5', '-3.06960476416271421302008579728334481507254699771089e+16', '3.186885854e-11'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('4.05994259e+4', '7.8907749282655877870860749608e+28', '5.145176014914400317062311e-25'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); + T('5.4762132837699175441102089813175399999764088e-16', '5.7030184815364007560078579249421278145041535217095e-9', '9.602306e-8'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('-7e+0', '-9.2159043738098493e+1', '0.075955649234956245854703504394092356676290067751808275195765802961690703027820671'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('6.195697861269359927881e+20', '-3.57e+0', '-173548959699421846719.355742296918767507002801120448179271708683473389355742296918767507002801120448179272'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('-9.629875273056249651966949225008701e-12', '-1.254336183986894116e+15', '7.67726819e-27'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-6.54890462715559031006242205524360507902981061544216e+1', '-3.69152226209790919921200153737123586568e+0', '17.740390446497857'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); + T('5.275227534804879035e-15', '4.5389442133760502760188809102632635407464777499685005106e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('5.3381728917331921730285926e-15', '-2.76623631914364289572342790678292268542941061193724300445e+15', '-1.9297602503410685e-30'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('0e+0', '2.64994276761338025671828590140655914746143e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-2.33504609e+6', '-7.197364794210316381254761041469863560753414753847e+18', '3.2443069884110238548675488318070708e-13'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('-3e+0', '-6.2e+0', '0.483870967741935'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('3.47891285848114300116174616324957931945042548133742277e+0', '-8.9837096539842887e+7', '-3.872469e-8'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-6.05961122567500478221618603e+18', '-3.14396592411703776787729712449924e+20', '0.0192737814974149470002810582449413874302177975001810351674842984'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('2.774042606910497862365244089177696536349584544727e-10', '-7.8470185309070224431502704762599134501231241948504e+31', '-3.535154907541490638e-42'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('2.19512869386020462054124110517e+5', '1.2e+0', '182927.3911550170517117700920975'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-1.5074753e+6', '-8.1065922619928717661740852111502504e+2', '1859.567190849946738045449007950750897366429832333815584271306035903516452398884120555109'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('1.1766173634e-12', '-5.66747706e+2', '-2.076086680093240642071518150970689592875034945443608024061415433413329069566627e-15'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('2.394892233129659489208910623612984e+9', '5.09296293526679179304573296824e+26', '4.702355512045768507736436114982e-18'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('-1.369216676459106984e+0', '8.6808946526933710996891265108702348956013350311e+26', '-1.5772759965866974614e-27'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-2.29758826020964952364712054599338570980189854396e+17', '-1.78583389337877620342065013e+3', '128656325133500.530995125399088722466690431084706281554571510642156194959865103587355407'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-9.278841048360548236646763714876101874543e+39', '-2.8419331418063233629359036881e+14', '3.2649751367700886051436471065386186012809809832486115945e+25'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-4.3179008758351221823006096364401e+8', '6.20391310364281006813633074984998415870666906e+26', '-6.9599634999718801205399148323869105e-19'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('1.20291914e+1', '-1.4276430588e-12', '-8425909631859.3049149352261047115455635345256931669116451280854292484723142899365736053967777677399'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); + T('7.42609747626423939e+1', '-2.8962192862361266232302219809883181228805332108813895e+5', '-0.0002564066026200336246740255'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-3.2469285014199734903543324848961e-5', '-1.004078367498033204621085824001959694516021e+28', '3.234e-33'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('1.59209390368e+5', '-6.95630800488e+8', '-0.0002288705305404981796324097327769041428367904041851601205088129'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); + T('-1.252328476245750877736007224299768883853171183686e+48', '-1.30554631365833378e-20', '9.59237112574383780974783097258034876588235937984555536341805725079759514423e+67'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); + T('6.52455498462528584548664290811550009703541886619689582768074e+35', '6.36749688940559641122766817131948831574075467073355e+19', '10246655943375499.2411977713873718855658569674377435621'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); + T('-4.605658e+6', '-7.9730560437412644561609620123001921187e+36', '5.7765278140937890371463800327054039308127371991198158794e-31'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('4.986883150805824792798190568349429040756111709e+40', '2.0298859706399905078014298184259267e-17', '2.456730684844105048065068076706295523057029803826305087595843103635674153116076397239321169844654628530516110040741109430504569000041516449001e+57'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('5.24013157067723826392787374436116355e-6', '-1.654298944482872783648579079220818514e-1', '-0.0000316758442490288983418'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('-1.619813418862550524051983626338569083512822621172e-2', '-8.88942851464259536167193821500652163619e+30', '1.82217947553592095418774728729978112733813820443059e-33'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('-4.79701754397011101988904832240955526503250234941047e-9', '-2.589958432808436599476604696865464224958762506342e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('7.54860291310077184e+18', '3.17240732237e-1', '23794557716067373281.978281818398865657135947'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('3.535e+2', '-1.9367798014656460062e+5', '-0.00182519458192'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('5.8477188737827191112395859385879993317325596324590995e-9', '-3.30123674802177005613538455715848177250157274202e+39', '-1.771372161444313426698922036465592759e-48'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('2.90345344463e+3', '1.19811605074978831727706733464399968704243448097028864714581e+59', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('-4.405737649551180734271639844152e+18', '8.665687320429951988638222805387523254162685133e+23', '-0.000005084117954688201318303152477535869'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('2.40590343694868e+11', '9.615067877771284512367958e-9', '25022219994003350627.9907208147493557695'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-3.7122486687302895895381340440591469508298813907336e+28', '-4.450927214657691094976925735032894e+5', '8.34039401162346058201294872580504522393506789379448365081226719977451601479867488629316635573894436e+22'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('1.43485055943535656490484e+13', '4.55427932297883956108947188219e+5', '31505545.83237237415892524503456536177066538115991432839510235143523699740049'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-3.99517658879239500654168590133754036e+24', '-3.14659168130760878023582236908930576652104205186095674372e-9', '1.269683833630471328762619262588320060995414561319236600079474677648533585116772591500561312512797e+33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-1.16907419e+8', '-4.3613030803711816469360781701768e+8', '0.26806'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-7.3838959777365098666394093694508503629546784795816384e+6', '1.52605442e+0', '-4838553.514845499328024887454177977717829144310319967750560297843113615830292605162'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('1.24873948351044501062231345029988704844e+24', '9.229e+0', '1.35306044372136202256183058868770944678730089933903998266334e+23'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('1.723186062490445682405e+2', '-3.3302578457437e+13', '-5.1743322658718354938433050799490674308559067598780664812693150364397716499935884e-12'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('-1.436559000596944990687764508250907638531781e+15', '-3.07390134602623660156369160289134599622169e+25', '4.673406329237098296606236235212285669e-11'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-3.144745270263880221783603e+1', '-4.15786280849205348546792218731336603759e+19', '7.5633694883848173133841758122e-19'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-5.22542287273217114e+18', '-1.33235330154458332258484216e+19', '0.39219498812172362701831820120074302288129160373013333622019'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); + T('6.5349e+2', '-1.147628535686214808696562116052e+31', '-5.694264125362229366793202e-29'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('2.0753974053463172433510910285508920143294659032497383157e-3', '5.269240387230348981975249218e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('1.44793250749e+7', '-2.70305046627007613206961208559485346341480093e+14', '-5.35666102264081580421263052240146214387235273278554754854881e-8'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-9.4990364100082739684520043865097642535811419222444856e-15', '4.48860909443300244717180166047940783260388230136184241e+48', '-2.1162538796e-63'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('4.8845911084046830077123804450630388169077e+34', '2.7499066530881177e+16', '1776275242986643197.4240022742275207738507920882164024707380398166570953158997121318220047727131878501766'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('-1.36505345466529594069441239177958e+32', '5.1314327e-10', '-2.660179981830992230872310557204774409298985836840459780365043080463668557905865159256595141547895580896929623e+41'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-7.134815e+5', '2.7642976646292786728381718816660648208473550792917490401e+9', '-0.00025810588676081863162455451580595031422362669738873679'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('2.121318575924122e+15', '-1.72678319e-2', '-122847997838345994.090896842700906765255225816739622071488893750465569449978256969249277901529722443035827792602035'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('3.78121837554398045598e-4', '3.71652183162e+0', '0.00010174078202296'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('1.951816045919345711008131597619038268e-5', '3.1e+0', '0.000006296180793288211970993972895545284735483871'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('7.0707e+0', '-5.59775213430031025964987552202428545347610850011e-18', '-1263132026992438549.6204657786826165932805405884563682832868987057654093127459227378'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2.9797965817680345689e+6', '2.1535287981875260235578124463099748970367642693459229582334e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('1.220617511695461565339083803604503248165770826e+22', '-1.31707837693732887083846897331882141939e+38', '-9.26761484410538427684253812961024444864e-17'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('9.65524e-13', '-6.733541930559968585474947219434340314e-13', '-1.433902112672677730285870851012268785993865990523762015487'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-5.23614891224023913334429045096038e+32', '1.16214862942169111e+6', '-4.50557594758413453398156953032584890242529737101638370519991322657e+26'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('1.305046934971232772238622520596849096e+31', '6.1911130409682e-11', '2.10793588541413939328238391289209716247369173012111109295732391276104352758914536901884599634380982104308716212134983237749267e+41'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-4.0384878167411940832622379708171e+15', '-1.25e+0', '3230790253392955.2666097903766537'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-3.209378206287e-6', '-1.155723241315695076124847002535e+21', '2.7769435549581827549516876413738411958627193761651279264291588242345841616e-27'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-4.9238e+2', '7e+0', '-70.34'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('1.06218923107336326862449065757631e+25', '-9.27070679993426266917e+20', '-11457.47842096457099817735577281413'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('-2.4861923661e+2', '-2.87714114949179581361591153398074361054813911868006735465e+25', '8.641190115191772566278600014764e-24'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-4.110539439392834e+15', '1.32686540606636889756826311855188e+8', '-30979324.81018522'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-1.66556730495609517675e-18', '3.942946911637040572466680987914378500137e+20', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-6.219642003466062596505709273698035e+10', '-2.8751356987077335126886072e+25', '2.1632516358311575307947598873847304488739254085532924881880571814244e-15'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-5.83359252088139871111308594530597432442434e+31', '-2.4440191908e-1', '2.3868849077948077751702267628961591394490698284741144512947578120138220970306e+32'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-1.40974341572315709438812324253011e+27', '5.04876497541819254052755963051917636882e+39', '-2.792253991990164119e-13'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-3.465828658613736751498191278105137953666195e-6', '-2.0511309617351316211987482158358834466054070670674e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('-6.335696975300406808590074114208022406e+18', '6.6125342998523530242132799140014228764889567314128565065e+29', '-9.581344591954513512145149953e-12'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-5.54961011314309569666969676244309590937e+26', '1.214679172748411540000353356228719e-3', '-4.56878675262554264592593256239126894808866372144128065178186052526e+29'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('1.278852704179e+0', '8.4826e+3', '0.0001507618777472708839270978237804446749817273005917997'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('3.575117845431545025e+0', '5.476995399594260806232321748501480830180247088766737696e+54', '6.52751661192994969056019008145458966e-55'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-6.5012318e+4', '4.8741704405965822407914136256e+15', '-1.33381297991792647768876351387415604119103866830323154408156032218715514e-11'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('-4.09807579e+4', '-3.61411659059939766021001205151016702726189932182035e+26', '1.133908020748256542955115133519209491950635393793469083596721427946e-22'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-5e+0', '-2.868638183513205544227118800631337e+33', '1.7e-33'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('3.3699125275607164851755136009714266648456377456627e+23', '1.577111963768597555370435362007291129229850253285956e+30', '2.13676175501713991111251165365380208752590381097789326986679667e-7'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('4.46912507e+8', '-8.530059420914262687145e+14', '-5.23927e-7'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('-5.65371681117055625627e+12', '9.38730212e-16', '-6.0227280840627256346043755540702678481599780448953953556146971010665628816471925802e+27'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('2.37267190166668668e+17', '3.94479095707125982529572013e+7', '6014696158.77500111662288382093125061302639854428765614486959507662141032799547690193815415709952914118104'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('7.167011325672868426989761788484714e+1', '4.5805211881401763046191823171603105190197732114415e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('-1.619417144199e+7', '-1.499581018667551371759149e-9', '10799130717444854.637232627590516825182310726441'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.159e+2', '-4.45522735426978209786560237858107941e-19', '260143850770992066905.002567332367838963813443738822484878192234025785439'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); + T('-8.0922106885074095066306492835695793499271403905946348e-8', '3.4210144418448656480450458623351284649104497146e+9', '0'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); + T('4.280115130063213216041225264999579901915465248643e+36', '9.14434074536221695564283378284044844953e-4', '4.68061640445100600151138642418812452172407515e+39'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-5.42217602242808471711892847790688e-5', '2.956192069385034236011287645586482391767444681356251521111e-14', '-1834175823.20895680284003'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-1e+0', '4.6881163169731125e+15', '-2.133052877505503338654455407578589665306563537985256483e-16'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); + T('-2.39353705331681242119144874902967528e+11', '-6.3747674748322e+5', '375470.487789017962422613063721855949277981692703049586'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1.06472209507088359394231373287656793e+23', '1.818659018444486012291946386907024e+28', '0.00000585443496704263530432719290118442613833432'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-2.10016973597553035696821462625319e+27', '2.3731805002815762165930705873147156131360283e+24', '-884.9599664780435697036093730518'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-3.4839034973251939262326487e+19', '-2.011163083e-11', '1.732282939545780199781366362719775520064078264507403947808045559674784464010569748510046611670029e+30'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('9.7171641e+4', '1.250644689569399819670508216478401454951922699562e+6', '0.077697240319675803119394574531389969073470358652336381922'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('-7.5710616640825011815104e+5', '9.451242202022377628036082483736650081e+7', '-0.00801065246477594739'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-1.704041340419726610074336154179338564660539258979455014487e+44', '1.2327107844519011346213910428367823027292406408969e-16', '-1.382352910279269335468028458736200971370992477548215948108808e+60'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('3.22817069107305295581377047478101377960503878e+18', '-6.869377673004481992500791135e+2', '-4699364112355082.481054269190618447327181395749044268'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('1.3389414114437867999036179224006456461480240424e-4', '-5.06951067805751602593059793029066675985196631798047e+33', '-2.6411649890376182545323961489807e-38'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-1.92e+0', '2.0865128374378439843993098387219839709312567727985631e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('-2.3249056323512566e+2', '-2.2410663822015267295027165733613383198005705603e+16', '1e-14'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('-7.579516177031886181784e+3', '-1.530062338379817262091e-10', '49537303068696.10628564844293'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('1.084223028866836461935910967916e-7', '-1.949443448012856975086875332182396037512904031574429212e-3', '-0.0000556170547020498022196956081864547429609634163896485100679090071798720271014257871705975'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-9.42916989636453357228161077722910058536297795034844963e-9', '6.76121556121e+5', '-1.394596845937133734676798110881436661545581544789306489853274127422959771130003534e-14'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-1.003962846078115341724e+2', '8.944572452816409298512282425478502093022008723e+32', '-1.122426869896944033804e-31'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('1.078359e-20', '3.1945258e+0', '3.3756465513598293681021452385828281618511266993054e-21'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('3.5886543850497976496752035186416285838e+13', '2.6958457862999644629e+12', '13.31179403245913687051311362691398137025931371052452290722385757745856796265257344882849079488086'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('5.9295e+4', '1.7222385181331812535056690632608228968e+3', '34.42902906635299092292162615052214885263473'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-2.7553764775966268301895794866575747362452482844e+18', '-4.761388925368866766525368325578939e+33', '5.786917474680282868272796870307013291971902968539350696472e-16'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); + T('-1.6225819735425613024232000392866795916741648546374252915466e+44', '-1.376276046947572564e+18', '1.17896549688652064476235580350301390936839264207433125311947168474968081901524663181132107998788966789052601e+26'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-1.5182008699385604e+4', '5.41966045854557363e+9', '-0.000002801284105436351537197311809509521596277834898851020811623908884'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('6.251133026e-17', '-2.11e-16', '-0.296262228720379146919431279620853080568720379146919431279620854'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); + T('8.33847140797473629643e-19', '1.4157326615e+9', '5.889862990898254625334855284046153935539474731543445428944778215812887072e-28'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-9.16970099403e+3', '3.667075394519654453329895912717313926531710666272475e+39', '-1e-22'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-1.906488988420756221515447255765540323355510359099e-11', '4.626554510164239308633e+9', '-4.1207533256818306757392e-21'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-1.99620549320197365464363092987e+16', '5.93386025050179057428821590581205508e+12', '-3364.092528187138654766699104256796006704273260721168624814519'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); + T('1.145940278542701e+1', '-3.529553712156278633e-8', '-324670021.197275383157905823022514540171219669326686309437557989241129145504'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('2.767506761328509952064778147061e+30', '2.545149328519e-13', '1.08736518141310702022249894626439107186593376e+43'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('1.32304870049002944170332839109166967e+35', '1.27749011305606806826e+3', '1.035662575364261814630167368899608837368209150765568399025973111188e+32'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-7.04097514923541657584631837992450960209237016644904541e+7', '-8.32262137286187964e+15', '8.46004501922241539680509874540959237140526624678906958848413241826644373335216384886602781e-9'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-3.2360876160936191817767007555074607182087e+40', '-1.899082929899719771084796853038103784020136825588155546092e+15', '1.704026488334819242519591376726538287134019594357321614384457226714016931383105686227869123190077074512036054207929506e+25'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('-3.98925778357985164908e+8', '-1.86477459975293825151816719437198016879394142476548029e+11', '0.0021392707644711503602774885168556667717915'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('1.6622e-11', '-2.49e-1', '-6.67550200803212851405622489959839357429718875502008032128514056224899598e-11'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); + T('6.0727075918e-12', '9.527958945976325128845631006988156339697e+3', '6.3735660766721877682258299616996331662856791625338972e-16'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); + T('-2.5011e+1', '1.62717969806433753107763604840806956171014130632439119e+21', '-1.537076699626514e-20'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('7.998794e+1', '1.274572014657465478565143988206041118883436681013340113e+55', '6.27567050588e-54'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('3.85623227269198095411527056110936403902666e+39', '-1.28955567899004525747860212e+19', '-299035732657321668958.2181777109595896048'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('1.188e-7', '-1.280490118705664538759364187635398461568401493534167085159e+9', '-9.27769752101519760270724248e-17'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('1.84122454784753600734777618078188571e+34', '-6e+0', '-3.0687075797458933455796269679698095166666666666666666666666666666666666666666666666666667e+33'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('3.6403007332e-18', '3.176e+3', '1.146190407178841309823677581863979848866498740554156171284634760705289673e-21'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-1.9534606819665169330124655827752693e+29', '1.7604909119024995247e+14', '-1109611341222705.82'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); + T('1.0164849870504e+0', '-4.760167723781898502831722485373795957921286238831953119e-4', '-2135.397418817869656664529057011708823947732503465455294676919158552132959681804438'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('5.274925376912008705499893e+3', '4.5400020032617574e+14', '1.1618773236492509799e-11'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-4.02002769478321689692e+6', '3.534477907400024556189638392e+2', '-11373.752503493124'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); + T('1.24789049183043823e+17', '-2.2163021994411734180668742961041637669973203037021229e+52', '-5.63050694144997881996472755363154297885509239801648523858841e-36'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-3.23036877745037309977528085178245549072548178883351333e-8', '-4.72059947393363605943147956087253266046182e-20', '684313252011.3030931889'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('1.612878481975188863232106e+21', '5.6101240182667483241e+14', '2874942.651398798809616051503263192799001909272881791139890364654685253442934643059278'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('3.32428974809080229691671097154212603950764910076e+43', '1.256523080538672685e+5', '2.645625694886301651018870335010366996586139275590193315536930373814279240202582279937361006797e+38'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('2.7756e+4', '-3.11053590271e+11', '-8.92322122879792850806113947861984554267327973271596444983635660367831588249207e-8'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-2.668747180162028268773707450609661585274863864742e-8', '1.345436522358382406643159905e-5', '-0.001983554880377446076965683237923575753825174386339313985832'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('2.0329534947446651840145979496802136802853076e+31', '1.933579201109296126048883616438787293380757272312319161862e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-2.4115746388903301174779005e-16', '8.687351947756104e+5', '-2.78e-22'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); + T('-2.9562370193417282e+5', '2.2152180355275920557579249600578521722366691e+43', '-1.33451288854175918701330304e-38'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-6.594939549799e+3', '-3.810903814979e+10', '1.73054474e-7'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('4.883247406505615721e+18', '-3.4558169941840708218929239074331e+10', '-141305150.55408961765751574170221376128593348136084390073078372552498303278'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); + T('8.902877473602032835230616890019e-13', '8.3309773516931729731523719022189834897938619904095294086323e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('2.56522642387380546072368976200699772192887873825e+23', '4.362896095817453251e-20', '5.8796413380850232420456727050358924892240031665244955012595267367605107437961341787e+42'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-8.31543075575440962794633508905603322451033007461e+38', '-3.08919081344415970799006452408e+6', '2.6917828188422843652800521618988633049018441017498170492411414731188902829583692206897222222464e+32'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('1.57214404378329883686312946334159192177687874549561669207702e-9', '1.327185210837997983928600150377132e+33', '1e-40'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-4.494252620537804490033864785e+21', '1.91928726199001938e+17', '-23416.258261819149027349573106876247114040374019567339595956310880219968591391266693522510078632879831274'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-6.6620088674050788136405712996e+28', '-7.64946935029114474388677022238536e+32', '0.0000870911243948120085293653397612509715'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('1.77173077658982767429148036509164861303e+7', '3.974536637136e-4', '44577039749.3810521951498149973210289628446919914637389941264067650356417333372671900385181'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('3.710600384390821459414e-19', '8.623326824194791837387e+3', '4.30298011433342714640329e-23'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-2.666869188961064e+3', '-2.872924167e+1', '92.827691715437611131348737754552781413530432388889435'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('6.41880055528295371271924691739782381346596299504286649e+18', '-1.4130341800143333726e+14', '-45425.656690185961576847596866629226191369016102199377716476594104540064145879800238780638745'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('-2.73528519722352957e-18', '3e+0', '-9.1176173240784319e-19'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-1.9626404104810382516573594326595578e-16', '-1e+0', '1.9626404104810382516573594326595578e-16'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('-1.5757187747713995884217685649905401120371e+8', '-2.2393e-6', '70366577714973.410816852077211206185506055463760996740052695038628142723172419952663778859'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('1.480835147390577628445960141787666040994191407369e+12', '-3.46539109211483720777346240960284709546959034427e+7', '-42732.1219460647604383219331138800261730200372795762604518684740237983142326932461152963120732682918096066'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('4.484318539845160321753458871389325519098373850294e+15', '5.607814797303005689008492636683631171084199573e+7', '79965524.93141938246441974307891682936389297447137517'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('1.35e+1', '-1.1677973157260636666418264822210582443246705183475e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('8.6536e+2', '8.2442391680978712887805298966243100701121526751523e+42', '1.049654167419863600184768906243125774165e-40'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('1.0692693176355857259806636599484697808433195100395904322479e+58', '7e+0', '1.52752759662226532282951951421209968691902787148512918892557142857142857142857142857142857143e+57'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('1.227655720043460518276302272997417933308176116e+20', '-1.173e+0', '-104659481674634315283.57223128707740266906872259164535379369138959931798'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('4.3907030188404130885653950063068e+14', '-6.569079550992238634552125738045289626717e-11', '-6.6838938161088509290569798040694186429146481086822161e+24'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-6.53644739e+0', '8.7834710029399887709854994562378869966e+37', '-7.5e-38'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-2.7479594724454402030812592683704016311325e+40', '-8.455030151007699241885905293135108270410391822e+38', '32.50088318275161975197034050532552605685223692'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-6.36e+0', '-2.78819398872000965873655678223e+4', '0.0002281046450042637608593310752328550986331416670517'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('-5.41691113602878118999735800399063619632383102e+35', '9.071066033854418764256711460567622402922046577e+25', '-5971636757.81010968204198841428442'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('1.356417944253669913351208760266177416e+25', '-6.132297861490114912344960128e+9', '-2211924428478540.596796143077988742335141463949076780885767486491137334936730453574644'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('4.715556673104617203548659543267341428127e+21', '6.2760400536921382710428327818779843054168e+36', '0'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('1.0317652830960034398453699285e+2', '6.1829675144044260363e+11', '1.6687218244189467765197512712584915393917500945172698826433184102065454534234108477e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-6.268346540757896995955790276886761e+33', '-2.798429531723388124523913358498302e+31', '223.9951540569110243569342604592798330500844357110556973'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('-1.6624621540837732404151147322498204314634349e-1', '1.56328841e+1', '-0.0106343918592'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('7.6161454067479047556223907398161e-17', '-3.8582948370917617886492095694e+4', '-1.9739666687807275116651e-21'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-1.29176772662987536e+16', '-5.09266917896438263429368605119e+18', '0.0025365239351607798'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('1.0073573787565267e-16', '-1.981003983676413545854832845923167276e+32', '-1e-16'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-9.6768142e+4', '-1.79696e+2', '539'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-6.0477677e+6', '-2.19597560417411889123470558904291251120912008389282209e-19', '2.754023172436150861164453543182847206812675939874175005517876663337993546643686205e+25'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('1.261699492172453014018092679981487796178e-13', '1.080225322668030878877958754510767811383389262270059e+32', '1.167996588948870452581485424509281395833013346693792e-45'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-1.159502953021659234017e+9', '3.950033565369688e+5', '-2935.42557001826406810320053'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('5.12335648790260622032484326543911024740555594437e+24', '3.7505305088939940628886453372494086801160748622e+29', '0.000013660351450956332044618895'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-1.46966156284716990527494920594962393853410257522365321e+12', '1.0776860047846269e+17', '-0.0000136371963291931069490657735708'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-4.540048216254137e+0', '-1.133706585235283117781288653149e+24', '4.004606020094626873942359883456765163281122690525449179887628978174889e-24'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-2.29786804039100055196053306926595949048285e+18', '4.083849473294012528739e+10', '-56267207.09021509798296578299598544505'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('-2.907236413510747347827705952106309e+3', '2.780400503429919011079250700040402660132e+35', '-1.0456178561053930125706314941292237e-32'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('4.5010472266359015e+8', '-1.214638285103347199749924616005837201754e+18', '-3.70566882489870719310162768524526599220559747824e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-5.4e+0', '1.5750721066529406e-10', '-34284144688.9381266182603110888925497366606562451655461638197923'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); + T('-1.8497048882001466e+15', '4.794611116582358983931777034e+6', '-385788303.41482053903672236900793707833744334439484623'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('-2.120252067840788888612751008e-4', '6.78642685252057316389423427446814056802841663821467834573448e+59', '-3.12425391729271764050739741e-64'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-3.8194885484056583309853291e+12', '-1.0823626026412643451596105005641681033239927255030360508573e+13', '0.3528843789581281771863113667186679739520698721752024'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('2.68124993e+3', '1.5953866438589370234872568300984755455477714587772e+49', '1.68062703816710292856861045614608661096036890826335974e-46'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-1.219877047369145e+10', '3.66092064335470571432e+16', '-3.33215921952163279487170395646358025012426241393264454645620511358967453602564685649e-7'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); + T('6.66629794570161149222899127983354943e+12', '-6.308953575665103160481420643879e+30', '-1.0566408304880950620052147400293819964166036254808867532571554725224287e-18'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('-3.980852969839127008639786231584131916557247110432e+48', '-5.11841225494101511199035259489828e+18', '7.77751531443416840525931402599024451589046906671966e+29'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('7.453652183365153360502643934817177961790240146e+12', '-2.274473231558113970582844474e+12', '-3.27708942886044631026315833752242902005'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('2.095936172334698877398439562038111769645716801648263e-2', '-9.69039170081322222260979231426382655741383615071657e+19', '-1e-17'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('-5.8207791953766837540943314431e+1', '-1.18357630423732954e+8', '4.917958541868126920200404874333493925171278252e-7'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('4.61056059006e+6', '-2.07440399904612408794893747e+0', '-2222595.30553358'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); + T('5.8071e+1', '7.9784490756857401832455944778399256449687681e+7', '7.278482252518338251899949297854210037001968693656166675394656163e-7'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('6.76442007200488342237237857961359757349795757287783e+32', '-8.55386468355755784254803678496292573850506357383e+37', '-0.000007908027917495132444245091585547753726194690156368086798295478993'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); + T('8.3376305184495642298818671705786770306524469580611554337e+13', '-7.325536870820546190516379149090804798183139509834697152221e+38', '-1.138159655118308299590211929663671760159898393397066434754870309299928894e-25'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-3.4304287413537982527819689877203663e+10', '7.1414492124429393531e+19', '-4.803547066296815176130776598806964147646706679213792447840710563686043360337009e-10'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); + T('1.366510611666465759959233643447011226073187e-13', '1.38300074682646612533946492e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('2.08100787440011305e+13', '-3.976752601936868492051090370650417875518896855e+35', '-1e-17'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('2.61837292523e+3', '-6.3380277624255913e-8', '-41312108803.82665100551479260369901993600029757911806959246895894373816180098452665305'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-1.94133136747401361547356020990483123341103383113e+5', '2.45709e-11', '-7900937155228394.62728'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-2.32272433910860004186167866059586312811267459933702908371e+31', '2.740310768360056819e+3', '-8.4761347724755976636821850258296660146383381333000707945171197229887917703129992089013032957193e+27'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-1.332e+0', '-1.8158039094930935217577782152883430305945135e+28', '7.33559385480035674488228900560161890525182979812285e-29'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-9.84933786751815837e+8', '1.93811065012307635e+10', '-0.050819275292'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); + T('1.925908405e+9', '-9.093382567761151682368945778883426278786e-5', '-21179229958144.94620570154189826156144718562744913925'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('1.4e+0', '-1e+0', '-1.4'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('2.76605963830845290415197828656050351e+3', '-1.99993576433266511439357862515732723814925943234954648616973e+59', '-1.3830742405026326404153e-56'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('0e+0', '3.96672850369802552383282971901872365106370354487e-16', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('2.76857523583049347310212188e-16', '3.1452245783713142824815207978864e+31', '8.80247234130460589e-48'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('4.357274317210552993960992796319346403425583991317217565129e-18', '9.094268885060035e-8', '4.791231018436935e-11'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('1.4039009724006305010974e+5', '3e+0', '46796.6990800210167032466667'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-1.58346432263184003672652745058411498559850087e+39', '6.6773e+4', '-2.37141407849256441484810844290973145672427608464499123897383673041498809399e+34'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('9.73228e+1', '5.115109e-10', '190265349184.15228297188'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-1.8530906860057e+1', '2.5252632238440060837832e+23', '-7.338208027220577702508725091186e-23'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('2.1693806046892803e+16', '2.05017531663766730588144547794985470551554948150675e-19', '1.05814394851222396588324507253150221197882158562e+35'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-3.496196484866649020332764869e-19', '6e+1', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-2.317721799311436579383425494659623010340469386570355945e-4', '1.189911351644474501700532560346e+14', '-1.94781047857751076432509e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('1.19890141474862435e+15', '-2.03047465249265460257713423226394761101e+38', '-5.90453770637730957e-24'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('1.98513293036932958973751311071185721751e+4', '-6.5415646637956200290819953741594589587739407969506172e-20', '-3.034645428724530092307638502769599017628697705e+23'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('3.17526517601104291784905e-9', '5.99109457762345999857913595424635469004e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('4.8941e+3', '1.97859080153533358545e+8', '0.000024735281272925706475601086927797855050790185586656378118996586512708966'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-4.121446962927e-8', '4.582394751714746876631460438e-12', '-8994.0897417987423949251748793151784536659572640866065297971'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); + T('2.85778552174886354404223401424014e-11', '-2.2227100424261236420923264650125244182481642994861203159e+55', '-1e-53'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('7.2251578752014560028324536931212314571228257033e+44', '6e+0', '1.20419297920024266713874228218687190952047095055e+44'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('1.1440132768507606927650220047747784759082981687031e+34', '6.41425089765119244731103668844907368207684369892387103868e+56', '1.7835493109097e-23'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-5.059e+2', '5.31040971619709590484744737604e+4', '-0.009526571903801923461704869044014671299807031287576007757239'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-2.017224591942822302481233322922747368500832e+1', '2.7560493027840594e+5', '-0.000073192616326024951279013805032222874322442564379231223360154025'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('4.5272193500978667342e+1', '-6.9541563214139826062554896e+24', '-1e-17'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('1.2321314743004878464383729e+15', '-3.6605923110953916088711e-7', '-3.36593471653713380059005480533422506815101173728835981994358821477104403275633746584392905916488905707907102e+21'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('5.34497275690245106081709015835e+2', '1.3246422423389318767735090947438326377122544297550315119e-18', '403503118507287522273'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('-8.2066415917795e-11', '-2.032154290376e+10', '4.0383949342060358540682117e-21'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('7.73098532291085467046715330348604232059e+27', '-2.8427828995107482376840795394780097405017813551606561e+52', '-2.7195130955098193552123e-25'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('4.159994522e+9', '1.33219431148459346996777673915179379208e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-7.578382158233609147013992440824152e+33', '-1.194790131876113934368330767351391476226912906694e+17', '63428563360610352.4744837689373958725373895778837'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-3.3523912075112814694561102514002305660335936968214849e+30', '-6e+0', '5.5873186791854691157601837523337176100559894947024748333333333333333333333333333333333333333333333333333333333e+29'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('1.0124221513835964646350754553678196377980104978550149931e+0', '1.06223493251028739351360993865751826931269242483365932432311e+59', '9.531056835e-60'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('3.1412680718672726534259165731384642759801440307320437e+52', '-8.587098552390722698636089693462242e+1', '-3.658125096273311528740779267854560394066057385783271547104152546813775658278133132135780036639716164431696355031263756842057e+50'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-3.3189176972735816006303141742516e+31', '1.0305408464997978941041994403628692087955e+20', '-322055909627.084586851594012420324993263245221123165476447398500637369159544'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-4.41996359037973136e-10', '8.3637252017880817592764771835338336554948916221e+46', '-1e-56'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-6.01286395e+2', '-6.51924117226437854230337805304850611555114e+38', '9.2232574177210648909268616981448831912996e-37'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('6.72130200333126348620242332254e-3', '1.470690629963978878986042713002185082336370207421353846468e+33', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-1.81395651269631437302845197e+8', '8.793397570432077947919559140501e+10', '-0.002062861934954207532616785189028623'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('7.51158709509e+0', '-1.176960625056056068607994268251373585573269e+33', '-6.3821906486737731630815122030718382190115091447644714e-33'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-6.62098070588533082674697128193106090224175785e+12', '1.59464407661588600230339174188328819300530278981e+36', '-4.15201160119455082725930806188158e-24'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('3.0010634710512838227e-10', '2.145072033029717544248145014646271e+7', '1.3990502066322485526895e-17'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('-4.9378581910955998250725892592344946065039e+16', '-2.6639627720482927110444586336746996345597e+40', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('2.1e-14', '-3.721628900729286792960485901133824370672021e+31', '-5.64269e-46'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('1.407290844938339400405941683041650860391613062e+1', '7.4433592e+6', '0.00000189'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('1.7801707015164154744049548117e-11', '8.99547466046138262004826009548369088489571203228e+49', '1.9789624991563e-61'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-9.058549727605376903029621709151e-14', '-6.280609879085796e-6', '1.4423041554881509582304308427717680178832125470306881158085308744291282361143256918814803e-8'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('-2.78687102227925412316e-20', '2.3e+0', '-1.211683053164893097026087e-20'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('1.191210938183934787663432717589372402287600047e+30', '-6.912820209e+4', '-1.72319097295928933895904353555475552552100237473426238214493681763856213723784408060539507082094285666673556618749897535e+25'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-1.93199234441211857e+13', '-1.6817109528340911e+7', '1148825.4513394484247756049518702595762895930362753'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.0093417044490203540433263556808329e+11', '2.372397078319043397865939666128034e+16', '-0.0000084696686014835884446395689999651834142413394797890563578916443'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('6.9760668364517881187250228873617916088087687251726e+12', '-7.537e+2', '-9255760695.8362586157954396807241496733564663993267878466233249303436380522754411569591'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('4.062581289845341763821800622443523733e+36', '8.924702582909586373710978648364914e-9', '4.55206350251380541793211968076115432739938532546232249822039630695343091570546147405720455998001329e+44'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); + T('8.276498449374e+12', '3.0238213900883324916575967405259702994906680958904315216e+55', '2.73709898226899745127e-43'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-4.24478834924531985617064348938904219879237365738e+47', '3.2202748163729775e+7', '-1.31814475201413416323977852842956795110527438813987002340907e+40'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('6.6438573008483046256073583680081275729412891613e+39', '9.413781613906943755332125240718379584663901643127685051e+47', '7.0575859663382880237826726713507760833378822602218647475865524323926144422415e-9'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('8.68e+2', '1.75981415269573306e+12', '4.932339012448405793881746522573096806023333016968009976945e-10'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('-4.7929625941127417273e-2', '8.97459870533419765e+10', '-5.34058708526317396154647313899145291e-13'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); + T('-1.70795881993106042756586177878724829833868739747166913141092e-14', '1.84531726520870367725e+13', '-9.25563778182009186116769542e-28'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-7.05545813882718235954710411910087648623655626112e+12', '3.4139762592085546156e+18', '-0.00000206663948520333724913777739052220687722064980024149927298261781262007032504303'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-3.370537781271e+10', '6.400852200283646126637958453293430097314531484e+27', '-5.2657641136e-18'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('1.596775313e+8', '2.324646725e+0', '68688945.11272460119719911420089002986034361844808914'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('1e+0', '-2.546420372841898e-11', '-39270813674.9614334724923882608553067717769730988684180625966483470844643988287585030186311570341'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); + T('-5.79e+2', '7.948616362585015845441596414074816e+34', '-7.2842866429610906023406328059145e-33'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('-3.85491067016337035196695500968775807776289390957e+47', '3.0606365138716056049809162421420644957973020677149e+34', '-12595127362206.8691288992474211516220852359189436964527445187289'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('2.92332947883191144399509618771587677e-12', '-3.079037e+6', '-9.49429798612e-19'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('5.98930745209766438320126482750923e+29', '-1.04398682e+2', '-5.736956958994620624809482582844513305254179358317952711318711858833620140913273215460708594003131188955e+27'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-1.4111549132238576653650229718141168029e-5', '-2.5895025984e+5', '5.449521132343257915786391712215077431682873726673453798686097506871688799e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('1.764215446e+0', '-8.753889492675622e+11', '-2.0153503736551835545893e-12'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('-1.82322e-14', '1.6565026160004191568565e+6', '-1.1006442020611566951103076886048960121343367627480066626992964e-20'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('7.71929377944460022023385141e+2', '-1.142016304e+6', '-0.0006759355144411843896261792257214569504079514437475141336'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('-1.5307e+3', '-3.80660699168276022599648653015e-19', '4.02116636507131017976277394020437240867131765178294986366952e+21'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-3.4363266002981148152615590279838721144212321937759199013e+8', '-3.4106154434770170030428038029173e+6', '100.7538568111005233330613714095642457'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); + T('-4.87442476478703502691e-4', '1.84748029510706437170263884879782289e+30', '-2.63841772910739190885606381961440742772863176497262592539937844e-34'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-2.43911315019915e+14', '-5.2884732364203727902615629563615777997159613529e+46', '4.612131027536637345459848386605582747706417273054840433e-33'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('1.0404772238708764206189704291172607249144721409e-6', '-4.69125789382596841618827942133258e+19', '-2.3e-26'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('4.158e+0', '3.025752529083598011226611844663e+6', '0.0000013742035939929704'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); + T('-2.4141e+0', '-6.6044858009244630875999014356433050274e+7', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('-2.7825016972932337625439128073513214834322917713882614537e+18', '-4.0407771493161067068838334649444697846337161e+5', '6886055811724.649306904048331675267251307335270480245666'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); + T('7.697296520466808323e-3', '-1.180237649672953028709481636834e+2', '-0.00006521819162945487739308931071078946581100600842546187298922108535740057'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-4.025e+1', '1.27878825880292867350151e+1', '-3.2'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-2.72390433335668e+7', '6.20381758713439149584180989066102367409648990642385301e-12', '-4390690562864985883.00256809620112183450059335880926477452983733342379878430105423'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1.28236196691710055e+17', '2.156e+1', '5947875542287108.30241187384044526901669758812615955473098330242'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('1.20960129969207e-14', '-6.69326167582e-18', '-1807.1926039614762356876760666519295505274590610664394157166311115592776355216072347675369'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('2.3481416018542294138332892663766000932203167287086213848e+47', '-7.4115948809072572618198734e+20', '-3.1682001506898231254540363443293779848080168695629914143106522579361535670335635882686e+26'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-6.42303962230503497057046294766382867786116866644640946e+20', '-2.24482573800323316657580610891710523516078143291621165e+36', '2.86126424584667873522316251738359678416067931369402655724655146601960171802115737224e-16'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); + T('-9.73622563685977827413734127145194929370097821661e+20', '-1.036043917869311488829e+7', '93975028171420.855983780010911369598028765040990272035590282225686082844444262623388'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-4.1825694369758739591184e+21', '4.8777e+4', '-85748804497526989'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-1.4258350426877118575541e+14', '-4.68067882151273667e+16', '0.0030462142288731100346784472756447'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('3.2866136093547541671426738634566486512517819e+22', '-6.24765751093847724557691e+23', '-0.052605534211830750604804929258940471757775632727823306901'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('2.74090288232e-6', '2.68378316668857183407237227311885487724491399373572e+50', '1.1e-56'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); + T('-1.128246200706225140379211e+9', '-1e+0', '1128246200.706225140379211'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('9.097120826606508094444541221181351781e+13', '-1.296180337e+4', '-7018406750.1453758702131439764167258625834253802601851998314953608187624'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('6.7704285424508575314186203667844e+31', '-3.181597e-8', '-2.127996896668829374499228018754229401146656851889161323700016061116477039675358004172118593272498056793490816090158495874870387418645416e+39'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('5.41400511952313147480823297140496844396381940069272753e+27', '2e+0', '2.707002559761565737404116485702484221981909700346363765e+27'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-1.24408749429972863809619380908e-20', '-3.533067086814805141399e+7', '3.521267679695606937961163423669965607838460027870446328185179414e-28'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('-4.0384301052831983636043746466627e+2', '1.10626775e+0', '-365.04997142718825199454423638967148775692'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-4.0092327030210790439107260789766500879979675803077e+47', '2.3573105e+4', '-1.70076564076776438399214956153491450871574515970963519655132406189171939801735918963581590121454089310678419325752801762857e+43'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('2.7789994742319526886402627980116043345055e+40', '1.0542857069062600057110147073543994512700666111e+19', '2.63590737883259820317219262637695297267927111516897869253229851e+21'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('-1.756137e+3', '1.27e+2', '-13.83'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('7.84973e+0', '-9e+0', '-0.87219222222222222222222222222222222222222222'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-3.58952950025445562649220080873664588099e-1', '-1.648948247439151361092372409133906366e+26', '2.17686001111864160870895568515e-27'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('-9.19860057319781399583997445814025009347440189704153213793278e+39', '-7.460513190493e-5', '1.23297155816568685909183290869672418198444561362985814256207486655712180180293186395548140449972821073206e+44'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-5.70890497956252658913450445182657509220065195136326927e+45', '-1.0574e+0', '5.39900225039013295738084400588857111046023449154839159258558728957821070550406657839984868545488935123888783809e+45'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-6.93467884737287245293401929546681485489317419843e+5', '4.899701464986656009905455721773075526e+10', '-0.000014153268106084007222'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-1.537838728915552987945225668860762967364459916916e-5', '-7.3223761094038243037496873e+7', '2.100190847804950109343797055232156071475e-13'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-2.8860519062e+4', '3.7662667274076311047478942078388914335566e+3', '-7.6628983422703732164983015590399822443246960235590574130643013211793'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('4.548244993737432954346493902297390861607648200451e+47', '1.6396854e+2', '2.7738522241750966095974837016280018481640735475543052344065514030923249057410647188783897203695294231442202266361583e+45'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('2.53212862457587e+5', '-4.5793399455653357405665227073500963648123523939e-5', '-5529462006.91652244'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('3.8317786586151327634e+16', '-5.65e+1', '-678190913029227.03777'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('-2.6874555668071096894724565389362326912e+20', '-4.0276557408368436098922400259861e+29', '6.67250564530305491886027140988482261605081043443615800523170422947527713e-10'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('-3.0781281377298395638676590460091776960040664514154731980958e+58', '-9.396800830321372663204393086751253442257502004387405964e+33', '3.275719250957633526759174282124841505911819079656619469e+24'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-1.28453e+2', '2.67101773394488524714201657e+28', '-4.8091406645318269531133520513478006955072385427e-27'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-5.8557674608e+4', '-3.31453697677e+4', '1.766692452623176532479918265962486259259907432805139802048792214898624801018'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-1.406565070446e+6', '3.1361296073e-3', '-448503488.8774764063304087413313583049249891885997246169998874714555232214812425108'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-1.1729470639144622474184298417950072059118692e+13', '2.82334215416350426403808560075134455113609729006025626834e+30', '-4.15446304368299742807349620769381810680774503645157800709486074262114e-18'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('1.529288752124570689332823e+7', '1.336497694044271406144044359810104514792140626321849687801749e-7', '114425094703823.1920006429911594750492036183752795867802277981041097756514217525829215034101818'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-1.13217140733355189e+4', '-2.43020464426027711727243e-9', '4658749253926.186'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); + T('6.19603014832887041236955227961616499300922171010445003056e+41', '9.066774801109484423981723413988153664182940131418e-8', '6.8337752775889765009073761461406737738481654041331871541030998711214761946010243290737268504709392e+48'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('1.11192912299130286126945894945995296018653243192015021206293e+4', '1.018513899703463314540954769524596069618244e+20', '1.0917171806050335253e-16'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('6.067516647622294901506038350906683676478956702605625402e+54', '-2.3630303294542695231841253246479696e+31', '-2.5676846259622738980016481226962788835668185681e+23'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('3.0951457131582254245139997021287234213367529291069533054e+43', '-2.6282888151172e+2', '-1.17762770033330886355993410995035533933532768290415332493192276143289018728334285821263224339273364867033139064507153907147666936322709e+41'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); + T('-2.87902985440875315371655741739416597195e+38', '1.119057478112371e-14', '-2.572727416347825166147664093129796153456303230601316574798939375992685501164512961280298521027327941142303087246693024451601814e+52'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('-1.63353170025199723577955825494176196178798564188624e+27', '1.089884459788696100476e+0', '-1.498811810353458949180604050144250099803509192783102e+27'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2.69323566440032401698637010871641982327627458844676743e+8', '1.9264548643899854257927e-10', '-1398026870073148992.7'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-1.8634612922816308530437581317846e+2', '-2.529904975732811096125039546370980065541412928541e+29', '7.365736302968697564e-28'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('9.23244551e-10', '-1.7118528831334919996734668417450305629137334387299697515413e-13', '-5393.24704883535525'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('7.81547272819026433863496830779339828672637516e+44', '-1.10357391523129640265e+19', '-7.08196580249201624598769584432510507623916059920882432451058839824506424805364402465698446023270819531035e+25'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('-2.548258498100572416462209595860967100773788845311e+23', '1.975782533439574140315369506223306039208754586993e+46', '-1.2897464447488529507042303347637613909999182e-23'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('3.4405972476430995117779134e-6', '4.843624609391849565374784802688470836704544996e+17', '7.10335239640937037128307854209555545433e-24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('1.565867432002e-7', '-6.605908959738623454598681683189e-10', '-237.04'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-3.693337380646948917069e+16', '6.72204963852034976269555950023592455796159e-18', '-5.49436195692824772774147080568112823974070892893025429431859626143445693763907190450600095309189863877999847308245949932346707e+33'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-7.539494148372597699573527507634012955342591509409e-10', '4.36e+1', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); + T('-1.01901897752972523396449024437574896639081e+41', '-4.037297773835272085458e+22', '2524012432607114315.85039996731242324901152075645191282270334461849152436327884479156218624456134496121831'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-7.08272422015363342934299129424984577768542562037114851136e+49', '5.03377532124726538162931234092425704374083969e+9', '-1.40704019709776814213115508262193235718211858919544886060847714e+40'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('4.6851279634162228491261171400013935557449538150627903368e+47', '-4.1572869204291596090787374e+22', '-1.126967672207857581183503761953311694566023237785398197911098636750422864781137154460485148074e+25'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-1.83e-13', '-3.12967214633373665269562581559759220416634828859e-3', '5.8472578e-11'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('-1.39518131260891e+5', '-2.33032982767e-2', '5987055.12002090211824165'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-5.7881445525713712976994123768087097671e+0', '-3.7994872152049425348e+3', '0.001523401507816143955'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-2.338200117677144093098434e-19', '-1.524274417177e+5', '1e-17'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('2.95552542450948844597046245734371586022e+38', '2.2734962637302145896725195861540685987883961753505087533e-4', '1.299991326865099761391527454420983211645095560080468949680285395599101850019362118036e+42'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('-2.726526947959238476e+17', '1.186128475127148467e-2', '-22986775928020488201.735223143140358077523416596681763687638943547207600322109298900606105454422336'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('-7.7289068293980800770010214908792416923879756596156767761e+44', '-5.3221587789089602139713071151e-1', '1.4522127487114358440135238511492841985518141455301077536768599696103822828180495742604365668933303347042612137627105904989771575330500422e+45'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-4.5973242825519885871166968323e+2', '2.633815246687344797353e-3', '-174549.991246889012180206975444515779731913760166971465640593667'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-1.940266013879066065108173037186648638659496537161086e+1', '7.73335937137416658539411297955478785e+35', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); + T('-1.603444957189512597145603919446074601287792617192472424964e+10', '-1.63249274746e+8', '98.220648127491963415084066387995284361469466861264583456197304'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('5.035470550034386772e-3', '-1.095524802737e-13', '-45964003165.0040154795071819757880815954764517180998108372907831373010693625621009717603194745495543306348426'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); + T('7.21e+1', '7.136396941683978515968559158e+6', '0.000010103137562158437532406966667285004325584390767567672769115517'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('1.08e+0', '6.999130880547144469406896e-13', '1543048727666.559854733262845362400084906715556'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('7.611e-19', '-5.809404885238066099596356502627157805047748874432764486778e+48', '0'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('3.46668182209730480619166742195321191262074943e+5', '-7.9490575391189e+3', '-43.611230702974171198609449798801680013980513123863766887946865334298483772964410325'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); + T('4.09949500806835495555781838456207e-2', '-4.966155498071208032908553468734143107604008505e+1', '-0.0008254866384390394043683003676779100411841520228965219126221'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('4.339625310516935597140574204980873082369528334381038e+48', '-1.412937e+3', '-3.0713508886220232021247757012385358174989602044401399354677526315752223913734e+45'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); + T('-1.4204220066094262415419286170580047650222795412403958e-9', '5.616821297520519757303558048192906874640777631705e+0', '-2.5288716364119594964180469499332669634501413872459263661e-10'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('4.874426899280757322e+3', '-9.055052224e+8', '-0.0000053831019178015480896689746137459714776792434764427041'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('9.60246e+5', '3.5473955460328015248177871307351183639e+37', '2.7069042274518347196e-32'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); + T('-3.6017722934896175050441919455093994415e+6', '3.43589538626650294113503280972969e+17', '-1.04827763612539989943998054919962281970987348605219110451629189e-11'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('8.72363436153679675706e-18', '-2.41232835e-3', '-3e-15'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-4.490204886993847143381112332870740868073548287e+15', '-5.24042259641403020428085578674724035900603329e+43', '8.568402269821617663232503656529852386657295058861077074053468590030266e-29'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); + T('-4.3657546292078216e+12', '2.0557935164324119256940389460467713160316139449375913e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-4e+0', '-2.23482e+0', '1.7899'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-6.5425e+0', '1.0715194789859364160630620378345204493633338900016613e+19', '-6.105815272897964410774690445146686997356997829616089871968499214910107701457e-19'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('2.31306634437e-2', '8.404739740233606558e-16', '27520975257536.16252932108204828204804660200470914792206093893429881408669416643920082434098776'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); + T('-4.011045223673719076167483866452819493071929912685313470259e-17', '-5.782923914613783263240653684307126739518299198123419268e-8', '6.936015902850763373701552791611380210273009052491564096623674866356e-10'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-7.948139697679759040542333131187556894208224e+22', '4.64297494246999639516452150375e+29', '-1.711863578021263705941168007703616440090934540959178136467147897925528476321351585924359797e-7'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-1.83e+1', '-1.2681038319e-17', '1443099495455439921.378255082930642471470005184202456158511352574992562010883708299596'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('7e+0', '-4.5616110996888646872531881294809250602156461009214987076e+54', '-1e-49'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('3.464049904e+8', '4.136344776669033265672e-1', '837466432.5708295593313128870267228078342600030744438418688462047945386'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); + T('2.08358388e+8', '2.70688223453756540681554036221375389372736e+41', '7.69735695707483341366731853275675008170718355252871200671e-34'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('-1.9063092e+3', '1.31581803e+8', '-0.0000144876354977443195545815708270846539472'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('-6.0416173441011039711036376681431080691645e+11', '2.24072340581609e+5', '-2696279.8390998629111086696329734788789744326438442121167048625'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('-3.72080938157140125160034247042328863e-1', '6.73082491998278928799684730767e+26', '-5.52801391479503133048963375124638181411438725729279908977744531e-28'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('1.6413242e+0', '3.581047086923e+7', '4.5833639160838319972469e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-2.38e+0', '-6.273600448319043e+8', '3.7936748117864286736009909244204898164e-9'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('1.11202811344e+7', '-2.229368739101654834892963609240144458095010569013e-15', '-4.98808516480814304005515484419405311890787307014025575649177084088281486382e+21'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('1.51018909178486990427701398238591605267044e+39', '-6.51645e+3', '-2.317502768815643339973473259805440159397279193425868379255576272356881430840411574e+35'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('-5.6840752260630399434657445e+16', '7.63394679392410265702525098627698916797478123074495616170749e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('-2.2353942566e+0', '-3.9066748900974504055585337531e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('1e+0', '8.1555003339332679175063879564749099905886e+12', '1.226166340572897661951098266833422518279226833319326786810209173315e-13'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('-8.444889584181819e+12', '-1.9969251561743747528442047776629998335144496163934e-16', '4.2289464670574751901294991658686036615789e+28'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('-6.869830705344451e+5', '-6.95291281610353001069505051e-15', '98805074751309208643.2213'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-1.522492872520561130184184913260458587635409351322187802e+13', '3.44224416019070642319342352136816221133327910209702e+14', '-0.044229659538044283543458804822000661629167942415797913592598362233024'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('6.67994902754442e+15', '5.1676e+1', '129265984742325.644399721340661041876306215651366204815'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('2.44831039315420342e+5', '-6e+0', '-40805.1732192367236666666667'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('-7.08069274392360166378458597857785548798416491766350485091828e+50', '-5.15397141784150480716662606182040045977217183446508e-18', '1.3738323653507982044947364851807746525773453172786528355924399503329e+68'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('4.96642362307840152928108728394520483547167e+0', '-7.0080871600128557237808489795939880935e+5', '-0.00000708670356073210005414906141661983562764188'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-2.9688465513396129050236377614548337749e+20', '2.175415219330661411e+2', '-1364726386465695932.2513406767701964'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('0e+0', '-7e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); + T('1.00789451000879664571252484e+26', '4.334414709156770715962933851444e-8', '2.3253301256096818926892488231052793581699593108456626638550997365594371436816941368776474626807887188e+33'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('1.8665078844953659008903922803e+25', '6.087837853350479213330260562750390527567314e+21', '3065.96188902784548225990405405929866569469996906242295936128427262834'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('2.5e+0', '7.8e-15', '320512820512820.512820512821'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('6.99866e-15', '1.328168165847422176632976077922634e+6', '5.269408e-21'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('2.27906163999347954170012906e+22', '1.238327530024930539125181147411e+20', '184.043525217241717838452802725577638916286107111995624029'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-1.52759589e+6', '8.1057910517214423896e+1', '-18845.734861072955137054334516670719125505'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); + T('3.851006974e+9', '-6.0856405208591330282533119293254916480648829e+40', '-6.32802243379360615332567e-32'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('-1.070241896937e+13', '-1.77660742702e+4', '602407645.41448235603470228703445916319436326252401326629685407403965723'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('-8.785683999714580728410574044073332140938095793765e+24', '4.44050066247888998363011940846043158755e+38', '-1.9785345544369339738260003294455880847626022689030601092776804e-14'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('-2.505920163657374697854096827790561559564e-19', '6.33319943776954360827348124257431e+8', '-3.95679970018427465796001472014469e-28'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-4.51166764628611e+14', '-9.05e-18', '4.98526811744321546961325966850828729281767955801104972375690607734806629834254143646408839779005524861878e+31'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('6.143542592091e+12', '-2.49618654906066461431e-14', '-2.461171259176468703425900272279242213125817058683962e+26'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); + T('8.08731858292774282163e+20', '2.32485890086771530778e-3', '3.47862770506600822608056497832642262149982485632952822623942000698040822e+23'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); + T('7.748326131458517626200690594249956944e+28', '-1.3331115275861422364603342534597474140796093e+33', '-0.00005812211485027340092594'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); + T('-3.1e+0', '-6.91022762484427795921493247895200592490944651404077e-17', '44861040305743307.9490129700806538280507603070878342146974395500397961125318'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-6.5977516578883134750576118101930823839e+15', '2.23065980628145405938229494632846932e-11', '-2.95775789715190685972048540529022005841208857355085392774689324e+26'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('-2.54748538963310009220098284521588508213946408912715276613404e-5', '-7.088308928873998057714864790981099860369379107164992e+11', '3.5939254555568260151148355e-17'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-3.2634e-2', '-2e+0', '0.016317'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('5.5560819440383392953536632e-17', '-6.09534241998421810114152429429413431277110559904942e-8', '-9.115290924136014257418359791499467514e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('6.2700578715825120973120492643501689344228564331142218662e+0', '1.34626104500587786159205556903772257048946723e+45', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('-2.2446338148664091899014232317e+0', '-1.086844065482979296036410733287606764390058e+36', '2.0653e-36'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); + T('-3.03611452256219537408952921770250333871e+38', '8.3691165959566240608615530104910074177113e-7', '-3.62775985703083054904338228852979496389831745388032702826762098576907177782811080330326029182965267362214012417418754127780545415816137460927e+44'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-8.232229995135996119830651161946837453563e+14', '4.936913755118814915498713010628e+3', '-166748507336.196599645556982324303964188989403'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-2.350347579553968338784e-15', '2.379610873089751727163361e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('-7.33121465030218595e+17', '-1.2614257226923759879966717812750999282483234173341e+37', '5.81184806875073529007375103246658747995851957461328e-20'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-2.55861611168242430354910811927393050708976064301e+47', '6.3430885e+0', '-4.03370709975499207294539264157189436516574006969948472262368718330195140742557824946002251111583891664131755374373225282920142136e+46'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); + T('1.6750730105231481847179e+5', '7.42e+1', '2257.51079585329944032061995'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-6.6103914657356e-7', '1.93725443313067447968340532014750924192599805508474587028e+55', '-3.412247432596122e-62'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('1.029292562877562e+15', '-5.921462365505e-12', '-1.73824048747421339961949116148645098472214e+26'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('-1.4706339e+3', '1.284038267879266752576e+18', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-4.968407e+2', '-1.00023067811125655633099176142841937536224253183323960864e+30', '4.9672611615771293397244175907493179370001888e-28'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); + T('7.730239176647193103018171681299527991870070664332424721485e+49', '1.41e+1', '5.48243913237389581774338417113441701551068841442015937693971631205673758865248e+48'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); + T('-3.246923547479570395336092437124077332659159e-17', '-3.0156797e+0', '0.0001'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('1.896295477158868528670495761106092673e-7', '-2.229e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('2.84791386581546032423578146067217e-13', '6.8188949491413359141e+2', '4.176503505416345621675002739098617944517258029804705e-16'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('6.50946783044616961391902967493999099215348394680987872792e-4', '4.33655097574945711613280340134495255123292327e+6', '1.5010702899257818140415e-10'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.671645968325862463083705716295497763e+19', '1.1756892714198320384633484502423269327357e-18', '-2.27240822321991971848862017057495504833709199948381870081361268027872213192518157425459792727461313622153e+37'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('3.133013254030258702149e+21', '-3.367e-4', '-9.30505866952853787392040392040392040392040392040393e+24'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('1.40423998236290959553122866629624906100643905e-4', '-6.39512709134219060964440752021835794164120930752998858e+12', '-2.19579683453670317337043e-17'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-2.080346103510817370572786779979586572358484819450297903e-2', '-1.49033914865e+1', '0.0013958877114616936561359695984388154402646442347083'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); + T('9.5970109965512572316687076235271e+9', '-1.39222827214077707905622091670931345e+10', '-0.6893274034'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-1.66648516480997216702076e-8', '3.488144489288722387704298811113e+19', '-4.777569191664391080723881161039e-28'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('2.803989525133946371375559106331632588894744884422226894601e+4', '1.8917961768014114679e-1', '148218.37360274415354290794753895221692091347152171968764937062563794314'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('0e+0', '7.756552236736901059071744043817454899950588e+29', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('2.9575e+0', '4.96235345010984617928e-2', '59.59873736794248430857325460037754374'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('0e+0', '-1.79838796060736755257725959945252962544239654548361541618092e-11', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('3.564885e+4', '-3.247677120820840326918626850372720140332e+8', '-0.000109767'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-1.132077519097093500210740713827912842e+4', '6.28162223180959658030375297087886468363682e-15', '-1802205668090561025.050162472322029945914398605460083954458684985163402447436616991483658420631618933'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('1.86672638830344305649138912658904730830234715533385445313e+6', '-2.2301061998458015973239766164874568533183565966e+38', '-8.3705717173133545627597055633e-33'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); + T('-1.4610797614967516745070776129444e+4', '6.88614970791009957671e+2', '-21.2176589744834289876'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('3.83422820734976235836937631816350903674898539424423e-13', '-3.61169821904072878674378850359884926668683250679368367e+50', '-1.0616136716893632916042e-63'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('9.362499731532147931201996383794e+30', '-1.10355302665545774979309901474901835177045078291380464642e+5', '-8.48395999592979286790989676885315364960432217807452660032752720761128993039238289233319e+25'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('7.721931310855628406085667291446e-18', '-3.146449075416884215265571808405303967995097946805460171e-7', '-2.45417330005015965363066865532637715776088110759091778302143638062485299898895234445e-11'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('-6.36692047256509831055652306921356672356525959250806e+40', '7.66135802819423952943964457446550934e-15', '-8.310433279758580218105604231913158316033349040694694390399884383918790673485830172788596098643173958696997122539994198365152e+54'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('-3.42087895743757174587773e+3', '1.0657952035801e-8', '-320969633372.953631381771755296063388974320264468291864306640052981846743464120005160563651933003704384'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('-2.585185748871749500787228506e+15', '1.5850738934898982284305427797476803620165e+18', '-0.0016309559822349222519445939123'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('2.51255461580755282902e+13', '1.9672345059751823722109994423825668e+24', '1.2772013749128747426282626825051632930610152e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('-1.2049422480536151523395e+14', '-4.651870271343596184932211687962962e+33', '2.590231837453181149977115147457106921e-20'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); + T('-4.732e+0', '-3.99015144672674056329880910971446617426188829542597675640256e+34', '1.1859198988253499751248284953555804253129661781483e-34'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-1.89725637494748509587754611e+13', '6.7922451559248095038237439332047655602532566994e-10', '-2.7932683985832383868121957688990626386516061490556219650626e+22'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('-1.22854461643867067809375756447603765e+6', '-1.69645086658491372317112521498156e-3', '724185203.731732961556689019966606665969864152795410132189383339630281125298526353896141554762024219053'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('2.64562337593965546453300217077672e+7', '5.832613889825228518271558e+5', '45.359137873927229938659829'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('2.1203751311577938873378167900893673338033566229595e+45', '-1.667616372017153758761e+1', '-1.2715005481704294959212729428651681432960955557707228467070391647971876993100725678860140196759111212e+44'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-6.7869609205009206193578567757022014931462424108280047071e+55', '-3.862917045455992520752875543554336057e+10', '1.75695228259807570348004759800931840163935270401602995388165008128129105383594715309207446428e+45'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('-2.3519445306259e+6', '-8.064018e+0', '291659.1369991857657063761514421222770088062799462997'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('8.671298172705266870915652679858994067669924819162294273972e+43', '9.6298693e-3', '9.0045855271423744774144054892406422044273485821477289146302e+45'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); + T('4.5559264031391881627889052318763808620578103634427e+3', '-7e+0', '-650.84662901988402325555789026805440886540148049181428571429'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); + T('-4.4710343204740606969010668283811540532516487336593e-12', '4.35412761342704043375097150447419131962e-1', '-1.02685e-11'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('6.44428112687596342343198422845844557344581e+36', '-1.45921986806866754033281447454477831415684279456962845127605e+44', '-4.4162509488067842e-8'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-2.8e+0', '4.55414147291278228617859e-17', '-61482499317465178.585701725651626578565353575562931913291561175344969826941957523022253064831290780019107'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('7.02681139273332811e-7', '1.0622e+3', '6.6153374060754359913387309357936358501223874976463942760309e-10'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1.657508332007055578351979651553033226275773578939581631313e+35', '-2.1238685034e+0', '-7.804194701101454162428065750433658539256689741348426794100175646495723629741925952043382988660784713626729702742481001378176000687e+34'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-2.764080129398250969e+17', '1.2949e+2', '-2134589643523245.7865472237238396787396710170669549772183180168352768553556259171'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-7.7991835327300585309075183283025872088199449056190883e-14', '-9.75085458502e+3', '7.99846153455283182e-18'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('6.19924e+5', '8.669421890762855648304872594388691404298768339923843207e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-3.5806677921269913e+4', '-2.31683932948568e+10', '0.00000154549680962204281085163081139390479827365202'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-2.70735777091227212093044793427e+20', '5.7671231282731358385646641249e+8', '-469446847361.301796470831459256421940188934073'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-4.6688193197e+4', '-1.22198213095461e+3', '38.2069361034987285176085830075155604568420086734771236795516829401287299909399'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('4.16674579249361e-7', '1.578127079691912716040002e+2', '2.64031068607418874536e-9'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); + T('-8.75648136915274623057446896380654776897615682431037003543576e-10', '-2.130462725e+4', '4.110131224733230772941342573269639e-14'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-2e+0', '-4.71195270515e+0', '0.424452477592584861982631523612163520528836775'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); + T('-2.154359368986072250524524975615717769998946122e-14', '1.1613061220266980568927812645190389914759491972608250549349e+35', '-1e-36'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('2.7728619091228486269151023001617727436359285e+32', '1.737627941941107e+0', '1.5957742403850159536937839163285397719624522432951211715519130224e+32'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); + T('1.02738716445772650827135e-1', '1.0428801788138772666035e+4', '0.0000099'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('5.94000674598581000492613725424708428430183333e+43', '-7.0220590391338599902657635890572e-3', '-8.45906693874576656506282923432609742012113220674294874225682585668054846626049474911504545805121728205753829189027553174976721051e+45'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('1.80880753196217476902856794e+4', '1.16337936447335295454242481e-17', '1.55478736102646872976635440447892000524992658589318970370823381254359318804447428e+21'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('3.21985390008010603285074504411720036471193e+41', '1.102013956736134154605753149728161710446261682437585e-3', '2.9217904913077854520353826207026204608715334527890507813761403072252920121408341470197636947188686003497546412161090004331927185e+44'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('-7.71e-10', '-9.5885627368524049949226765463166521675581438411961562212626e+14', '8.0408296963710825538150497407533187267104e-25'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-1.409472e-8', '-1.831352054342751515086495319785653e+2', '7.69634651435625362919637016222128087287583795847199617037237679823128369e-11'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-3.645e+2', '-1.732633774241943595520124503144072253e+30', '2.1037e-28'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-7.77177417841e+11', '-2.25172404636199025e-16', '3.45147718743178484050006514325830994557653649901257179121864e+27'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-5.74117749951482071251062836818469191744312e+17', '-1.408312e-19', '4.07663749191572656663482833930598611489721027726810536301614983043e+36'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-5.279448990789888178544628318780147533426825801984934e-2', '-1.40902214982323169815308082237895872760389588325437493029144e+16', '1e-15'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('1.2355215374588488866626452962493545401e+37', '3.27779220192511527453556602644183161760629649e-6', '3.7693711539529610457788797729857804380903931488178453750362318653988405337262587149699441e+42'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('5.9780971906959502237283103144636868040612e-14', '1.79565027213404744776161726006360224734e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('8.21423325589394799686775096044117e-10', '-6.88751728351754662889821451337592958814443289592967445249e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); + T('1.825666996146600553998e+9', '4.27693837003413706723446279e+6', '426.8630590840215219304505187189881604140219426215'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('1.82e+1', '-1.7541960863134087512e+5', '-0.0001037512290786649588152088082441006973270467869939604280386306028425349692662681867595551'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1.104490415030425319e+16', '1.69914977249366414323873934582884595022e+12', '6500.2534379855192339702757806365274316721726691488252441042266361835528817533770996108122145082'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-1.408580331806669728167563191933541604548228165e+17', '-1.41996832852681051909213808e+26', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); + T('3.2763266975e+10', '-3.124286575020841147111664173e-13', '-1.04866394897790214406585056911636756382e+23'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-2.08250712940384206426458910537560911132774029965685412e+50', '2.398562149589760719201380587665851739467548e+10', '-8.682314651550824797666976161897169110231398744107279756157175951161003365124357494857278851523e+39'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('-3.746135011145165193814946e+17', '5.647027994793033435026336116300178305193365502982e-15', '-6.6338169646039855072433662497984545128820132968359241180368566244977655363985198678798525e+31'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-2.3372300514908379021070188579270108379924011652330043e+22', '7.050250968245260561107892616e+11', '-33151019190.917566871308'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('3.83121883922893150162141680532496909653962616493955e+43', '-3.87897206463879503e+17', '-9.87689206157170340875022860878896662730336576330606119264e+25'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('-2.72972657830054702930791633655722327753086e+41', '9.17739e-10', '-2.97440402805214448694881261072834790450319753219597292912255009321822435354714139858935928406660281408984471619926798359882275897613591663860858043518e+50'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('1.2910940973279193941491845957807220524e-6', '-5.56954184027693324073313535369e+18', '-2.318133401909630998669234183656243718886321259e-25'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-3.02413379521989703097012195693086332294060914169449e+15', '1.49e+2', '-20296199967918.772019933704408931968610339658669090536912751677852348'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-1.38556014447707091379298257628e+29', '1.205494506617197711385462735756454702276286e+20', '-1149370765.998067442'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('4.6506366346743e+7', '1.34682883860121e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-5.4686963489725658647405e+0', '2.4128708555273441256317773917829677078797977516229688974e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('6.602535230674085936339555706786686455456202296898766e+30', '7.005e+3', '9.425460714738166932676025277354299008502787004851914346895075e+26'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('1.751728983061290874284724888244372891167281275092905e+22', '-4.4338731e+7', '-395078736705678.58026534969804263746095197926956748153211692053162279272268753023175155824825027130343446229889'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('6.606630194400048814599681033491792515e+14', '-3.902637829625690517074566689660333961576560853712e-10', '-1.6928627463834386584271374488e+24'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('-7.65523401025669581840187531201953250295272495521181741233e-14', '1.41906890626583313624904465052681503208229e-20', '-5394547.0698817823665090628562414321781526878817338066357095269830728319608557339993'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('-1.4190519900533519327205949140097784950472025e+2', '9e-10', '-157672443339.26132585784387933442'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-9.0566604925734026480770982368e-10', '8.4746001657843403107988204088326423e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('0e+0', '-1.115912687166514039689279199420767026e+36', '0'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('9.445312880277e-3', '-6.1031501925724680412635531197189868e-9', '-1547612.721668220282361361478696454973823599345920127948748130318716181830129'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('4.18313063e+2', '6.705221089544031432e+18', '0'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('1.49410591276216401371432070609313e-1', '1.005138841238458297223242122452672412760405e+16', '1.486467193846808649782741551891176427547500733982699932298113671532110915794937e-17'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('-1.1548056897187851378697e+16', '-3.4105531585207980187e+19', '0.0003385977687618390995219003253550233018523790123264658320563592626143143520225032373495425742'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('4.82154e+3', '-2.992762041198346384048383032515754240730616434e+45', '-1.6111e-42'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('3.6417092019e-6', '2.17049466296106562190888661798e+25', '1.677824536519178280456055081015910976527830028759323610629932153e-31'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); + T('-2.00687668861702947957395415839051945560005285949871535155336e+26', '5.60267743868393398275504980009688782219164693e+27', '-0.0358199577002320478092385759002937'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-2.46741766e+8', '-1.074724183719845773315e+21', '2.29586129853312693916876453437821425709e-13'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('-1.6443175265351620398e-6', '-1.5353849740251572e+16', '1.070948038669694566e-22'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('7.4e+1', '-1.779930316777719535384e-16', '-415746612676192958.079826'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('1.7002066502502853710687375428351480702197906916468090526578e+11', '1.57766110073709939648675432038e-18', '1.07767545859876461486373845018582719639233668232002899951262670805151301619980454253878413e+29'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('8.66367820793728970879038066816900273068744428881978e+1', '6.1425167394183459125948362673126494895e-11', '1410444378985.5557555851230772077867308991485987289499111639862795048837363829329147738640028869878965'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-1.8893143777691139104177807719312560829717396691504e-18', '-6.50983331865e-20', '29.0224693212408892560483066'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-8.68667e-20', '-3.49916728e+3', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); + T('-2.0976014878103076514631485173505655581199131e+6', '-6.562871e+0', '319616.4434453012487161714008016560981'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); + T('1.942e+2', '5.5788508128565731234e+19', '3.481003642407182161704399289671504991111660078173245850310444658594948919588e-18'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('8.78552615729479974902850134582154479e+36', '-5.706051581870012102527101097906227664915e+12', '-1.53968572334839791481148918173729689973229221658916383288892274e+24'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-3.65487011414426e+3', '6.57152206489908908779181123e+1', '-55.616797418458997711909034842387432202293038843596326'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-7.8319872388169117345071480952274245812268485607e+15', '-1.49728975520332000920786506239e+7', '523077594.807518757154671231735576700314172203280238437220908089220211425880339141'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('3.8611211970005516219910804564963950732211e+40', '1.5158280794273938e+8', '2.547202581482126662282012464437511646330828415093906692650095619308582265e+32'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); + T('3.90352554912231811402e+4', '7.625306988942964063152817262021753154686755e-11', '511917166716383.30405477979'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('2.769420365598801142529246051199984633496559707179249e+50', '-9.52e+1', '-2.9090550058810936371105525747898998251014282638437489495798319327731092436974789915966386554621e+48'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-1.49031037178321078446506146331174233873315e+39', '2.200531161158487473132179700085e-3', '-6.77250292151566172247414617356965580018109033147230156103916e+41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('-1.2188718572425e+14', '-1.9829182084896327271572302374e+14', '0.6146858967878969963095191083259588893518596057164405673642799079737'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('-1.146099963366700083841099176758806276320897402875077100151e+49', '1.237607632961748090848355e-3', '-9.26060839350142953535595202763017800866076464221503563286263987968529133071607981685413247110886303444901771745012437696101e+51'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-4.282736810686907e-8', '3.502374617358670715949443789741960918526598807e+9', '-1.223e-17'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('1.2077437770326238957404e+18', '1.772883200451728193460437534458469726422365218620429072e+54', '6.812314408105917229372924402094624323716391e-37'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-1.4903311945934642325700339866618805966874471396726106e-2', '5.5640236e+7', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('3.136818222435530139669676251e+23', '-2.38144e+2', '-1.3171938921138177487863125886018543402311206664875033593120129e+21'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-2.272e+1', '5.782626073149888422651103815249733567910503982766974891e-4', '-39290.107491982538875505537241'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-3.1374927485667080692994909582e+26', '-4.37248619683874513285387480072302520941953593423e+38', '7.1755349412768359224286157402511342905690337602982147757758553487e-13'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); + T('1.9553600931736186090088251641098604e+25', '-7.247206916002125962329814556188174805402384204227256e+51', '-2.6980878507223306189033730697e-27'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-9.86242820048558799936513306604288e+10', '2.8547858539618140546368301466573510633918454643e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); + T('8.27822223629209817227584880237823211643344671713763935e+53', '-2.691584532445229033274246900317436e+33', '-307559437071499497822.89415559842286550530427003800856793960762057957360801747373023514521148897678042'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('2.344178183109e+0', '7.349852161919e+8', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('5.9272191459507949664758485526378296029703121598684e+32', '8.3190482970891653823e-19', '7.12487646937297944749828029188710323566047358532804619438852298445374529039819142722243781465127953988108e+50'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('7.745777026e+9', '5.2441830717e+5', '14770.226210827269125368966664787458815747'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('1.869194987648e-15', '9.41146115946258698680094504807e+27', '1.986083729165317751930918e-43'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('1.034899843234176402e-10', '8.25761e+2', '1.25326800761258572637845575172477266424546569770187741973767228e-13'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('5.23538954830709765827771114062808e+23', '8.4473225578915269385670244696706484792087483384728e+49', '6.197691058234982472617880325190227160999044913078773755e-27'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('1.458275801773956600354858280638829041132981e+42', '-2.642556322697490344919141116430960685109596237375e-3', '-5.518428459777787636394063221353851539830905127527117159470217022706596126317340721162122848015421212917058185916325754928009061199817e+44'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('7.54525e-4', '-7.73253966309221010923022098322e-5', '-9.76'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('-4.25242064e+0', '1.070005007001185609564556392974165e+9', '-3.9742063001349003435074951824027056e-9'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); + T('3.2879903813229382344521943763034745e-10', '-1.11983511951248201800842085085494502e+24', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('1.428828895258306070679857955628493395371424114576215046e+7', '1.7248120705718867375055453416442548881636713116549e+44', '8.283968553075796227111008926294527197901175e-38'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('-7.93777531589104535712236987412e-2', '-2.455850507945338486894672505e+0', '0.03232189944058159158158503304091010299743072829843301373'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('9.2640957e+7', '8.804130194266798830366721681406e+26', '1.0522442871225062275510973069099789093859488495293379506986097287816758445e-19'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('-6.9100609787700074098710767e+6', '1.8814215849484481510198e+9', '-0.003672787127590728888767'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('3.046270698105506513465614681229473272073276990162347e+36', '-8.1588310832895245740362611828511307e+29', '-3733709.72754260469792524682290129221624697178632059445146356184074975'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); + T('1.983615568067104389335664255351817831701535416543710586014e+1', '-2.862553e+4', '-0.000692953307088848447290116289672826260929154994350745850300064313219702831703028729948406195'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('3.095782697887500684211541375929666215361183606e+45', '4.96632883632401351892e-2', '6.2335435286619942353033199607991642379346107398740494157066695877620521035420763930846e+46'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-1.7962731981851881042656169490539864389594531312e-1', '2.3826840046056590456797038432578719011482800837295219352e+12', '-7.53886455238312815413992950469965615300198e-14'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('2.19831709261078147926097362293118374626319395e-8', '1.3290439251943e+4', '1.65405902012561233568752601319e-12'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('5.5642011585440936375e+19', '4.701098769102304059553191703e-16', '1.18359588509700740847891832710799397176147545356337256549121792273315787246402431446941759906658445522540969526231235901464650502689e+35'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); + T('-2.4885063216181213847863323237452642090315945418991e+25', '3.158e-15', '-7.8800073515456661962835095748741741894604e+39'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('1.013724171692959789e+15', '-1.437603438056205e-14', '-7.0514868346699579000710312827079561330009836311651055713532352037697974783029967494637975870619665e+28'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-7.03172175383256062325868679726142414e+34', '-1e+0', '7.03172175383256062325868679726142414e+34'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('2.5937492035466413857327974408756455150459189933e+40', '3.6460177398809657715225780116348e-10', '7.113923706886081765807426114419867386211161818637323487974033293119714514577981876141585258061333527397723522219161413967796920422259922286356036e+49'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('1e+0', '-2.931929922718117790896922684995835390028387944326922e+3', '-0.000342'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('2.01826383e+5', '-9.266962672635257272628448810537609739e+36', '-2.177912981089049641918237772414177093043e-32'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-2.5925453328877035992083416179278963e-15', '-1.058641478461206990164504071649170894377510205026484578318e-6', '2.44893609936397858739054637689062606781670939421955862e-9'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('7.02577048337212332643240479004403275534798857919140489e+45', '-3.824804564617150229017697418e-10', '-1.8368965955454978305159939401149329662635046762348908261690521054396772496844081850707160128721750531063611221439e+55'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-6.723744052789397503581135654401116421279192e+34', '1.11557001081777e+5', '-6.027182505435538255560595013800459405361381409023018757149312351060788e+29'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); + T('-1.4752163359987961782648494391086788406e+9', '1.016653743364769773438917184842715314909279845221939607e-6', '-1451050906591209.656146653767895656375750147525429407933282799'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('6.4073325949678131539231848010164338105458648752506253747e+56', '8.727835392825981797743725881634681774976400777757e+48', '73412619.5853149092'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('0e+0', '-5.48093803244039526717757394868869275953542e+41', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); + T('-2.0003404755679534025330772267472197733315e+27', '2.6144605787451498236992490146038156706737647e+14', '-7651063824905.89045901859689851508509516108849602747920710471122586004170086094097776'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); + T('2.57605062602266323032560458173034e+32', '7.69657908815168179205188887394285749242650117009659604312906e+2', '3.3470072827398135404698316264166165411570751087357049639e+29'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('2.666659213871079431280716513882624501827958939336e+27', '-4.733006178507148610026187165086317995501427192816477282518e+58', '-1e-21'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('9.2294312718960378431142461763275917192e+36', '-8.186474258251074299924239467e+2', '-1.1274000235930353635097271400044952500184988717104430662062286348965514915097e+34'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-2.8908098329175346611627e+3', '-8.434346555755024899046820927205094721247472190765539802e+14', '3.42742595861803009269767530774322923037672813595339594293152e-12'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-4.52923252121745441785010052145728903646501e+2', '2.8071676612908918750850535019880864031800720126481749084817e+58', '-1.61345279930115086478e-56'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('-1.5559378099525261442175753261e+14', '-1.5538e+3', '100137585915.33827675489608225640365555412537006049684644098339554640236838717981722229373149698'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-2.75036606139027e-7', '-4.1378504151079897165713373641870722e+17', '6.646847482326136437750056555875867240917491721605531663202859762e-25'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('9.2159666322463679041110651594710322215662582e+43', '-1.6497142444115745e+4', '-5.58640180471591259082079901885132615475073334186568634621566683575259233192905903483395242616801546e+39'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('9.78145388278e+2', '-7.90850606971854525815299e+13', '-1.236827005827677239885414e-11'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); + T('2.49709e+5', '-3.4706586491689235861233383e+7', '-0.0071948591100941251331544388'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('5.02787137968630657192295191438412535407496737985e+14', '-3.56629911261660263982104130335051314730962713e+44', '-1.4098288508384100959841539980852e-30'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('4.1275175407360715228027691e+10', '3.3658831378381879253912124304165511e+14', '0.00012262807030748726332'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-1.161355063107016e-13', '-6.9582814009561566485640791959681e-6', '1.66902572084456227372322380073123582542957e-8'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('-1.08960773085093919932476649213411057843e-16', '2.5710917e-1', '-4.237918588632755491e-16'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-1e+0', '-7e+0', '0.1428571428571428571428571429'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-9.0351815131036896108809339286380587e-2', '-1.90427014798333323387548e+2', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('3.0027531448195e+10', '5.24812136826577331922608412890794e+29', '5.7215771780288518362228280650261082247781032571752856555171464922879527513696005e-20'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('-4.1421379503967152993242826581232468e-11', '-1.08e+1', '3.83531291703399564752248394270671e-12'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-7.399709498047321126129633592818011e+33', '-1.271033757392966857692572205310080825842375545366625958e+49', '5.8218040669706186850160521545272704542439799568664170078484239067747585544887e-16'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('3.874906680973237070281107761625726e+30', '-6.4755908029361756621599018046842706e+13', '-59838658724641293.5209752198866751364011517040571584976629572099489'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-8.187794415119181710497321540822626822505e+26', '-3.8710440362149307711228e+3', '2.115138535888402731140431015146688044486809018527516060128629221568093882063873293669e+23'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('3.18525339838759904528772118448626807e+34', '-1.4868926018266364068914e+11', '-2.142221566288337934210933941319177198790078548667892231356931380676919923187541932499701673755774599959898442562203811054628e+23'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-1.3250532286562e+8', '-2.3800080137743321795426e+1', '5567431.794294113750225205918804723133214108606962563716690330376501531022'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('2.326034274975947617171091547137093840144247899488139177e+55', '-6.8509622933630039720462931556266335279304938337e+18', '-3.39519351497429230412338976003087952121968815716777152642147477860372585955832698904529350644e+36'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-1.116635320136759027139480909e+7', '1.946766987618427e-18', '-5.735844747926367528580321769347251289271984879271734952153582399301553646875736e+24'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('-5.01871382131921e+14', '1.7852397008390922e+10', '-28112.2687276130564351419922642'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-9.4873666972260986685095841229463423784564815568e+46', '3.93564148476860816981511788426581e-3', '-2.4106277804884705453630341485851361387783622025365426451941568215569352772889925075301108629755862645428248103524505923533147039500598729898951e+49'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('3.3873266665748698298238756431459e+24', '5.670714698910682767333127646123797786616e+8', '5973368166847750.45717777623601722796786412'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('6.36010488561041416205623007821e+12', '8.617184176774e+13', '0.073807229312248904255'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-3.040130969610165577583437907007217351403e+39', '2.4508129436592053e+2', '-1.2404581824474431010403377175868746887794728749809450266177754715101165250254401742e+37'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('4.294323713722448450443045842289e+2', '1.0143237516268995023116617864600375143606590409366599358e-15', '423368151128737161.757627861484517557423680671462065165026458724930363424060116546772397467391'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); + T('-1.0429008546339987528314778933903367409219773294029649e-13', '-2.8468669928772769598193574478420967253850675390344e+4', '3.66332834390677918118633276558662561849678897482592497471224e-18'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-2.46280213375540827371535455518186295e+25', '-6.08666009009594076875607923643136977250210982e-4', '4.04622912615543878748565932142274332956686221771036699134655121388e+28'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('6e+0', '-1.30540458380292533394637310113e-17', '-459627618475239672.836962928581323537882402508121637'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-1.164749047223062151164624878024040124e+7', '2.0662066365831166046066883535894513776121424403452e-17', '-5.6371372862745530150219061029747123287955491430704338947161828477777845e+23'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); + T('1.4772928e-14', '-2.218059758938100189075124627058334178444469964e-19', '-66602.9305'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-2.33917833341e+6', '2.29318602584222986969748294097e+21', '-1.02005607353676346693286935953502125288466908515258475340226077314995e-15'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('6.730599841051686320189027713666836604631216571280427e+28', '-3.7344396e+7', '-1.80230518149274293261806342072498283400572781289070172670619709581057355969e+21'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('-2.10021689094677686598160367279176118e+3', '-2.45363745510517702204603627664407806140799815105e+1', '85.5960560341523431486753897051372215608103586383729569548931194278931119712262477577735'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('8.8004486650157457886483e+12', '3.43401123485697245387405513871030327277012801e+30', '2.562731471489285032113514405300769362580194183435505764300624716414e-18'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('-1.2706689385829067364915510269884212864649422693e-15', '8.741859225468531164873440312983e-11', '-0.00001453545'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('7.13e+0', '2.50150327781989399164755091172569420684e+29', '2.8503e-29'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('9e+0', '3.402305654651561322273195e+24', '2.6452649801452693502e-24'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('1.942698433458917496262e+11', '-1.827852868815172883180238663241006577362751e+7', '-10628.30858327338084821374169009018300475712890323782940158454273339681433316588130632807797792360126701'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-1.213063441725300796821602082843332688344820493e+22', '1.4542083210188951483664314598198540068136663e+32', '-8.341744605582812826071467858531326511230556848318526e-11'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); + T('-2.94555946563586007664154490972697153787066e-16', '1e+0', '-2.94555946563586007664154490972697153787066e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('3.3547264298596360578903598598122683916303101119e-1', '-3.4604298263605549855521425801422326092878e+24', '-1e-24'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('1.8385121543310937442100081257135e+4', '1.093914948871867941075931439e-13', '168067193544353117.682304112573690307306039961796085981513645'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-6.70137736243257442821557371292385894234123508751561793546e-2', '-1.336711019757567992050322303418442914115285457337972e+7', '5.013332921911548836482858677493629170561251766882165547697447931875564104591e-9'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); + T('-3.060136077964060665704e+1', '-5.27078644525618821445683449071162332169528922121126448e+32', '1e-27'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('1.0018146402750597245819950058907152e+34', '9.7026827641357968325782224797669231559411e+32', '10.32513032352336037525'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); + T('-7.75646187134977021929405053556527654016342256570143603195974e+28', '-7.856005334316372167922949389391178117995160370815690903482e+57', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('4.26245412917833546496581979557027553619068043136604275e+40', '2.469641373651984014492417932e-18', '1.725940525071147580201630067416878017771790410139192240938902857591876806769708057625944578712153807543864204196e+58'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('-2.7814045143169050206562955218757410738033367884e-10', '-5.4476014936891843412338484072908114992832907525998175059496e+31', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('-1.4684493725478801916262731401857285e+6', '-1.63e-3', '900889185.612196436580535668825600306748466258'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-2.994189172235446630179676777704091036657029209759025504882e-5', '2.5419343971086022114224692e-3', '-0.0117791756374250840978091263'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('-1.99075480630387851875803012927311780348222369063870496681082e+29', '-3.3353292e+4', '5.96869060572455192356433700539400369679317918794555e+24'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); + T('-4.9487415160185613414838169772066576310822672005e+32', '5.994978617472851551363e-4', '-8.2548109539457783939342819030959263493023376697269712046659544149013725282357995498728086057e+35'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('7.2107872988141590611859077930102268167074899805368583602e+7', '-1.10022954631091775e+18', '-6.553893524303188666476686361414797949591433881875842951024873795121646411036135473e-11'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); + T('2.6068784148052e+10', '2.2799021189528113442450894189397849463505549223926e+22', '1.14341681300010068650365543037446925561994677139863760644397326632928639557957027439e-12'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-1.6504902477129444877365745606175485e+18', '2.787708374350602748498901576748428475e+34', '-5.92059866411753538498615e-17'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('-5.501037995828409136862448794197e+28', '1.13798355188919145546e+2', '-4.834022413325759672101846445977835404887623260055061969565752859938600281490833683821849809878012825692456e+26'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('3.6589343211651372438014873028431637954958614467e+5', '2.5479218704612521e-20', '1.43604651444934525143584817300278944990458498912828334651254519708881e+25'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('5.3478e-8', '1.0004897029646339613698191032147494716791404e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-5.07971092663297629068e+8', '1.16237403981231959661531813346716e+31', '-4.370117322521381906128253536059771e-23'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('7.9835459698214929550337673609984399792e+8', '1.1e+0', '725776906.3474084504576152146362218162909090909090909090909091'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('6.13682871981e+3', '-9.251450308245344380227368874447939304042e-9', '-663336938030.19819560782538761292460579133946384434513995678629296'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('2.1693386008e+7', '-1.79307859484733628e+7', '-1.20984022'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); + T('-1e+0', '-7.0984199483591605465679812107634149958020592e+31', '1e-20'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('1.3397598595300528236767970369339320608218016405446877e+18', '3.9476995855160420127093655257994532208718483631e+42', '3.3937735901829e-25'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('-4.39475008052878276209e-18', '-1.4543101778512438736102e+7', '3.0218794776105224e-25'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); + T('-9.2082959956947e-18', '4.68043369415024605014512403316e+2', '-1.9674022959033730894242360899489693e-20'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('1.3994002846456504063e+10', '-2.142e+3', '-6533147.920848041112511671335200746965452847805788982259570494864612511671'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-2.2191274680390552743098177068133655e+34', '-1.060507383912673e+2', '2.09251486760208010032385079153239202535543043272031915753088930031410320659165697117110278255399576990789984787012776708300094921e+32'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('1.73e+1', '2.4015833506007631104191410666e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('4.5292596307898278177697069691336405129953565233673e+27', '8.1621144426923224013081949947848207197e+37', '5.54912536768575908e-11'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('5.753e+2', '7.02437565043295047621369300991772879991886378244139e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('1.7816396231524754234771553020982708831315e-7', '-2.758e+0', '-6.45989711077764838099041081253905323833031182015953589557650471356055112400290065264684555e-8'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('6.710156449444037425158298358e+0', '1.55544518630350073572185212096992925248e-19', '43139780871292894932.1818835522014'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-1.819121018698023627437534967215253e+12', '-3.560787470439322324462442690910909466377906164e+40', '5.108760446e-29'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('9.97e-8', '-2.0070114200885e+13', '-4.96759e-21'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('1.10048090031787533163994e+2', '1.042364733528621461756259145769761007093891993e+27', '1.055754156793580837716686722731834e-25'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('-6.9046079709e-12', '-2.45822e+5', '2.8087835795412941071181586676538308206751226e-17'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-4.84635919968771908426079e+21', '1.4256848e+2', '-33993202422356744522.076618899212504755609374526543314482976882407668230733749844285356763290174658521996'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); + T('-4.500054004849797622975e+21', '2.4443181383316728553783505603678804638845530371301274757832e-4', '-1.84102631088816932455134036158188700296154933651042245521774037030053187171716155118713e+25'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('9.7009340832900580271755789108017722772432797e+24', '1.48e-2', '6.5546851914122013697132289937849812684076214189189189189189189189189189189189189189189189189e+26'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('-5.39424135365454350726001e+11', '-1.51128e+0', '356931961890.2217661359913450849610925837700492297919644275051611878672383674765761473718'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('-1.91233029702277737969977328621811019480638674375340064e-2', '-8.7770377687197060618346643474763451682819e+16', '2.178787818184045781218877465286349616739893726027e-19'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('3.779662927463272934586323531060507929121172953461e-16', '-3.56171478964553431672697202829322933155076389941165059487e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-3.6444617109139556238821800690335845399473341683e+3', '1.75008858e+2', '-20.824441417210754120126765635106'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('1.9628611664963e+4', '-5.774344850927108355436890298e-18', '-3.399279428524519043809823874584482849069449807691824947020600073312428720229753965935156911853332556011213e+21'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); + T('-1.268887e+5', '8.2359578936690515204781390599216938464393601324806256877e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('8.783402278573720372227198045660031e+19', '-1.8909551684795054684598228506022e-18', '-4.64495532468723176692896530126341959063064336779221189629771925915961649137313819457323877154255526665e+37'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('1.62059746047170539600898697113779281e-7', '3.260814605118201614e+3', '4.9699159772162520322552e-11'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('5.731791992628e+0', '4.59405600514119218188957515528894850084014e+16', '1.247653921983879e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-1.813173e-12', '2.50902e-9', '-0.000722661836095367912571442236411029007341511825334194227228160795848579'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('2.2837887327574120752954238801724465348982335577808012e+25', '-3.749686960057121266169527586886083883732226765841887252151e+13', '-609061171528.4685338114256694656829716475853479'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('7.690482972e-2', '2.41e+2', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('3.577085790636323250886309479413241606062581e+18', '-2.27945416247e+11', '-15692729.64348718918280406986232456787'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('1.3598517296981252272564302e-15', '-1.465e-6', '-9.2822643665401039403169e-10'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-1.13828085353488661886608e-5', '3.00138638264359357e+7', '-3.79251688525453791680279289793370147064530908742996199836409753941121077052e-13'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('1.6637801266501468012098566857306014893977371661789873624286e+34', '1.0951788670438385076006540136164785386824321263830374635e+6', '1.51918574829799739482764295497250736738145848e+28'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('1.1420545975010746649563622337711607598701345870788753e-2', '6.6259751872611985104e+4', '1.723602285285851056134497142911351829503893e-7'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); + T('8.87354452761546265242054886287921569100659800881155788061e+34', '1.5281e+3', '5.80691350540898020575914459975081191741809960657781420104050782e+31'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); + T('-5.041026395485259479826984977321225093589111969983e+14', '2.7e+0', '-186704681314268.8696232216658267120405033004433327037037037037037'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); + T('1.4165045629113103371e+3', '9.224797557921583936651987e+0', '153.5539998593160928941774084653949475247422558101897128551926189854361947427108090517083286690349229395'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); + T('0e+0', '1.56577794e+3', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('3.12574391614794188587097657e+21', '-5.425293688082749634464664769151227355774667e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-4.09693686824100340169688521836937552850523616252674144443069e+34', '3.4548884511e+10', '-1.1858376692123249205233609802347391129942337612182773389081737001381358433867e+24'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('9.742017166722599279319061819844403195229e+3', '1.0747173536351651177106932e-7', '90647249100.1548219612122076297677'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('3.02946322290348201780891e-4', '-2.20403668947804e+7', '-1.3745067118737118396783642616396367748331017171006739330905e-11'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('4.78096279080176909292543513107592392066528985848892865058e+36', '-2.4326916688846408247727081726767709873011843490142e+2', '-1.96529747355684481877149599387676812128139524227181708862621441286857260092938487748859994856364367084385196431506079287e+34'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-1.2e+0', '-6.79309567292212524389813e+23', '1.76649948386e-24'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('-4.433149727946876158642e-4', '-9.1010279e+4', '5e-9'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('8.645364308112120452120307271110130766336169e+0', '-1.4273846460183e+1', '-0.60567866778085556455652183768805141470179829796975207980985493726508787'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); + T('-2.93251497583645503515188661611718246439285355639664194574e-13', '-2.8116268555471146e+7', '1.0429957908713376584346e-20'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('8.549915096181065334588233947973779570784051465e+14', '-5.3585248140057447465515e+5', '-1595572548.96606683413408059486087308222327873608287048300451607298921405478645393658562802108'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); + T('1.620650208684937884852013551962e+5', '-1.938574313972575224952465487332302860332699316553926e+17', '-8.360010740902992415530567284669062089154037923369252703397249e-13'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('1.39990788514023359907e-7', '-2.7880297633283168986682e-4', '-0.1'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('1.2147034496129666796337477579e+9', '3.29e-16', '3.69210774958348534843084424893617021276595744681e+24'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-2.3595898093100315950772097e+5', '-1.360224124717153472624963642604e+17', '1.734706631380095057332935379366222616740848786042347725178571896765674681495e-12'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('3.082386028440677875328e+4', '3.0185587469615039583139056269305737e-1', '102114.4952551750987667287'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); + T('4.9359e+0', '7.453e+0', '0.66227022675432711659734335167046826781'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); + T('-1.39e+1', '-2.8361586615351524267835684917894138430761187125799323e+26', '4.900995204716870570923653502e-26'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); + T('-2.57144111056735978258324349384933185182040890598640810825e+17', '-1.0678621825342158315627573687444425805220630056e-5', '2.40802713367459019626709581794527646339142982304436611882353911346885030124848557011784546711280981474942964129428490633e+22'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('1.048596115047377963717631101474909437788760144e-11', '-2.36483913349438347955467527904366220847107e+30', '-4.43411181841332799344141327316e-42'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('7.78105988288549893107541943690031e-3', '-4.0466218248597429333998379517392386817522e+20', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('-1.34723938637846839225393057180903356215187930658e-6', '-1.743938847270424507164548363659837389174e+6', '1e-10'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('4.250402462487980246205857613476692e+5', '2.0247898066011489472317492252151143923781451179086472723e+51', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('8.3484358673122809837222108298527079080406084930504698570578e+26', '-2.273675645e-17', '-3.6717796074700360278179479860913529326389949930833119589746056324581864446192807769641214589339544955190827141925074365653418e+43'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('3.134404401815e+12', '1.3390197837537002332974572e+15', '0.0023408200833510189872011500974677596892464186001159923261'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); + T('-1.72126299819476190891057067053186839902470099154659e+25', '3.03792053256058509683792028965831141329500024266905e+35', '-5.665925029131534227365236837686867175158620766693317443900910393707963202e-11'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('1e+0', '-2.939975046688809188350421673411642007758878368983363390051e-6', '-340138.9413581128647024395877912442822159157246526'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('-2.8799781065335629236299415397922436750515902010787e+37', '-4.391480824237071945484e+10', '6.55810243013846919498768607405789794051382200537963030271725962343633802224860315219376733282257607687290362638e+26'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('3.5787142220840064175857594300169919704377044173726713e+38', '-1.181645294289742037064e+21', '-302858585345197319.6775048248694723253807508179985824'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('-2.8246093714697547091670049283789e+14', '3.82579e-2', '-7383074793623682.191565676444287062279947409554627933055'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-2.84779369663177732365367233318327625247815244e+45', '1.31393066624e+2', '-2.1673850605687932921090388365112614943073789872000970888e+43'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); + T('-5.04878763368633913601e+4', '2.0865689365553309103868029249304809e+12', '-2.41966011533808585432360918408206681865892223474989817900917381215519391312579510055483657309e-8'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); + T('1.957798750128925705685719898545101e+10', '2.43192553161689499005266735715792079650638534141393209227309e-19', '8.0504058396362968346561720628510573352360562767398330508738163709866794082543827688550686533985721686454059730412102e+28'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); + T('-2.0222607e+7', '4.9467082310169266124568153854060414e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('-1.5906369949629e+0', '3.0255416971954995514679934141145066040094784544274052e+52', '-5.258e-53'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('5.5668606928154293573954215929570699990366616565e+28', '-9.7521240191953684684e+16', '-570835715569.042'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('1.032985128326695105895492495350025072e+22', '-1.501808602e+2', '-68782741485901750474.5583082863461366696846233672059'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('2.0832256e+5', '3.95274218483520266894052183558814141e+33', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('3.77e+1', '1.354474e+1', '2.78336830385817667965571875133815783839335417291140324583565280692'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('1.842713436665480361428619195654820738082e+39', '1.7417424681025642057883271791588e+10', '1.057971238809439411092797912785e+29'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('6.675734414283297222357436e+2', '-1.01298476308303988484891747454e+29', '0'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-6.23860945829300190566965469238e+29', '-2.651188337151012662516209e-5', '2.35313703325847439295362267785953812038087057918270178569228127914064966901435889737350150454136127164319450878289848269321e+34'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('-5.9251615681039070371827630552043396555629328351836e-4', '-1.8714936283919442833021814200253567484224938495909672556e+20', '3.16600680772556109819e-24'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('1.1304086972280810511089682558613205176914070591355347e+9', '-3.259389604974e+6', '-346.816071175725023200942897547390635746854575755742744037391415607'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('-4.845812964e+3', '4.7156288461e+0', '-1027.60694748223603203647388936095939113353707330482435781365935859716175468918230137806773647473638055'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-2.9078551054049892353706815690526773071819522646602e+49', '1.43280566584213410255379202195890449e+2', '-2.029483254238733189552538980193555164988301092952962754777325201232539944129617890956431969e+47'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('1.3262460345e-8', '-2.94349159799574781750769838319096186e+24', '-4.5056898936047715586791107749571702134685849600532e-33'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('-1.07535586e+8', '-4.3443989107065164319529887109280234764994620418767443804208e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('2.49514101973155389178e-7', '-1.3320082640039933952325221390629129e+28', '-1.8732173719637473618987414336679458253027603532286856550174466e-35'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('3.5426634793166964286e+4', '-6.837512665748e+6', '-0.00518121669750375726671757317534639700222637833202970293988359028523526317543486'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('-3.980839536433195169114e+21', '-1.946512140488498756862821697491967570855e-16', '2.04511415758966673872832407336553531014273410155707170939e+37'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('1.09413052696967761148757584652e+21', '2e+0', '547065263484838805743.78792326'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('3.8176677194666184158532243175342318388938541e+2', '1.839063964438703033623222e+5', '0.0020758754416852493784'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('5e+0', '-7.3390741926489e+13', '-6.812848417595e-14'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('6.486086634148230094080192508467807093837803449e+9', '-2.535934612087311196295878778221457560221e-20', '-2.557671086325674067420204470169823075573319122951890398364812844590458592073730384e+29'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('8.6885036983e+4', '-1.177721981e+6', '-0.07377380942591068104'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('-4.5065229428343237781413917223156e+26', '1.258375465530366050877860302774614974549027e+6', '-358122282758823875333.56534033521315891176207380857166682271755272697303071912130388957862433901431058775345809305755171'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('7.825409728735081840942926808875e+25', '1.0956735309605483647669272120591478904094337612309545855e+4', '7.142099820440810993596186764322175788148808775229e+21'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('1.838165789921448904010496873514135951164635928e+43', '3.4664505850560548694738584086900914443255569895878005014e+22', '530273184289954189518.5089523282529263271210841900983888557445412827590714085887'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('5.16100856441e+2', '-5.0370519862265e+11', '-1.0246089535154e-9'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); + T('-4.95135753897440300264795475002319809451705381240974e+39', '2.184777681292882753920198900864664008599327e-18', '-2.26629811416067984345562413287852853979930711031611035973468110729161031126981816157094488689497444602047499196599601186590974461319820357390559074842389e+57'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-3.932045005016421154649997128305291e-6', '2.622399076807498727961567794397718405334902381654e-9', '-1499.407561492616791956478262232995884265937625066353358193977246295984075579666859225468475'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); + T('6.30172613952970875248874131909101e+2', '-2.6e+0', '-242.374082289604182788028512272731153846153846153846153846153846153846154'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-8.41861124685200027e+17', '-2.77206721227541e+0', '303694340799973203.752275895377743710946506301582496658266871992188449428054985826591630402898903113153'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('1.21206833215728249e+17', '1.5928896705390474161571665273782341880888055578535512044244e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-1.053225579742766915366615314411e+6', '3.09345240762224853620432797088401649834396e-10', '-3404693012724635.04568575235915201647242873033509164'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('1.2987171417713041713557e+11', '1.68677959286848e+14', '0.0007699388510876812161259955636331'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('1.783032440984945685916979530360287689256507019420087818e+18', '-9.267033171037568411642948e+22', '-0.0000192405962952360009362723308098137279090014853718249549865892138883510646'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); + T('-2.11838581655135078759766768460472012130443850785360184e-11', '1.5897957352314215965665614e+10', '-1.332489306396952929870210540676782805335446e-21'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('3.19094543674759535237082144160273e+32', '-4.08504775370075839495270560808678e+22', '-7811280624.21505138546127214378605110955163023952028672708387664536780640954519661707996845144437'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('2.99107473509347466420766e+9', '-1.53223213095222162608077889209130635080873713238575177e-17', '-1.952102866577168107236205276312689895341796e+26'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-1.74651030764404584218588086228e-19', '-1.14054292582131505368564277890302398907011188260843e+50', '1e-66'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('1.461822833e+0', '3.767444987610520280308812467274535e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('-7.1386062452483209193209013340616e-6', '-6.227610526881786675819e+21', '1.146283348072936881068691385623e-27'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('9.53891801776729633949828081875e-2', '-1.81e+2', '-0.00052701204518051360991703208943370165745856353591160220994475138122'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('9.47965037782022360203486594312501138874278398004194e-16', '1.5520237238526e-9', '6.10792878493430317237482e-7'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); + T('1e+0', '3.8983452533897708872332163772e-16', '2565190959242152.9022261694154694291554926461590575667977171181'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1.7754154987340135666117878e-2', '1.02262900802191664769687352e+24', '0'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); + T('0e+0', '-1.3744668015242127431401259761110934144e-19', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-6.69499773e+7', '-9.86406756649029162033403642978948529e+22', '0'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('6.353273438739760264986e+18', '5.04004625277681544592642510826e+7', '126055855841.3907767113746845185'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); + T('-2.2146491914941334757695450110654981781505636922e+46', '4.523610020347639999248024774017184509519e+39', '-4895756.224635689101122953685763963373709294052880849000519028725600095499408026447159827583816'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-1.95802524913126373e+11', '5.6383983540939670904760951220434e-1', '-347266213943.462735030282614146208821635386985096630007238164542137169952216554436390530508359637605313127'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-4.601299777754390269332725663043751652144004007e+45', '2.8999365e+0', '-1.586689838813501698858828689195005356891091928e+45'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('3.2670288297194920916293403084801795935483101366442e+10', '8.73582400975299173120971217961456619798842466577323211486267e+25', '3.73980614315496998632020238263164481e-16'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('5.587359189048561e+12', '8.920066368442599718685998559023767894000218624048517e+37', '6.263808987806989588543585714052610058e-26'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('4.528512804285449229605412379015082804414179764165833283297e+57', '-4e+0', '-1.13212820107136230740135309475377070110354494104145832082425e+57'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-5.523719227815053e-20', '-1.0303474885220394057724594633675775222e-3', '5.361025565984964481421869561904327597610484463313043345943157537408629749e-17'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('9.7126292505708371633123283239842536332334151671341532997e+21', '3.3194161321735468899448693748821251468748e+2', '29260053165467468544.144218704'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-6.5446955975447e+4', '6e+0', '-10907.82599590783'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-2.464332419375129399886092291737e+10', '-1.378108457819256487655182224112615546948045325296103e+10', '1.788199183738218375499640126965963740277215052109977583049493125687894567654235182444441167545321885'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('-4.24989012e+8', '-7.34892442887926696304402167094178923409659730807589645754857e-17', '5.783009692274276116779773058519352024209510356106677508267661452100083090256e+24'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('-2.0857073684091818634816566588489236193e+25', '-3.25490553963201875e+18', '6407889.08622208485676236464659'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('4.2646249911599555404172e+15', '1.458941841612e-14', '2.923094580965562736826241728893112238815704312811458370230803105343764351e+29'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-8.49153134135389217e-3', '-7e+0', '0.00121307590590769888142857143'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-3.7764235766913070388899863245e+18', '4.877859241741152499859826e-4', '-7.741969149858682976220069342931526810701919058411659028482384960231882401179814940066886011919477e+21'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('1e+0', '-1.7349253324073177725471862738414124194210875972551196e+22', '-5.7639368180326080420481413311031640097262083973593650987292179852881960481e-23'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-1.43534747849737296056572131573194127824e+5', '-1.122018451224995e+15', '1.279254790266855450338427789083699050360013315114591e-10'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-7.1113764119475409664353070527153519223202097714e-18', '-9.902654460258814948673195176633702328901e+39', '7.18128299890378950712010374e-58'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('1.10642414595632939962196e+8', '-1.617925159306929545699359549838e+21', '-6.8385372437763945215e-14'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); + T('-1.624e-18', '1.8923764617463355584e+6', '-8.581801944954068023220089916103881418109861233054e-25'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('6.76125485181390075072526964320536191870725828459902589e+22', '-1.28956e+4', '-5243071165214414800.9594510090304925080703947738756055476286485312819876547039300226433822389031917863457303'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); + T('-2.2355340587990218539463278578398755e-9', '7.97399675440677819488142631644085569e+13', '-2.8035301839865539017155254762313686053697449349347509769654621291e-23'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-3.0865461659e+0', '-5.43800304541790431794361e+1', '0.05675881642804049690144172578785289848769413859170687069097739576995019008'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('1.7491233382556140373726225193151901714895209e+44', '1.8384802581085069249383293540103019e+2', '9.513963125473936686136768626407875007315988543167692537888369522767085885449264362978372422951346621578514055653462813311550886556816e+41'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('9.135051683450092943611092535397008607878286594802e+47', '-9.2992889427112771554525721544543848058942007340102961e+52', '-0.00000982'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('9.807003773559935959e+18', '-1.1564748597058201e+0', '-8480083843806692154.26150147117891786825462590738147'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); + T('4.44195740191428904e+5', '-4.1082266283164660664339031e+7', '-0.010812347525566242766115410520090221259'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('1.4873797061005034026400224628055982535920783118669134359647e-2', '7.33003892209461338754e-12', '2029156627.8279372885425697'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('9.56019018e+7', '7.150574912763037954e+9', '0.0133698203244274073349224559365942317776931757366570773919526123925774798700567246044503408726583176'); + + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('3.3318037506614135742155502048e+28', '4.409578671034652100058731108267997839339882142974068e-20', '7.555832425776061243314759534752255703639735133310792905929045798613459137832579997789500013e+47'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); + T('1.927406136495888507993987941e+24', '1.438030590252297923893913048795149e+29', '0.000013403095522173357874079534560468176113'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('3.24212326974135648418e-15', '7e+0', '4.6316047e-16'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('7.613303622309e+5', '1.078208490228870823391454915626976483e+36', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); + T('3.20416228054285510572085206278236105463442970534e+12', '1.6960413350263732023625025547364237937819838557e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('4.68376751747081772453555e+10', '1.010074941588327094331114419135254620957629904072800679e-7', '463704951447034845.052918206239065548768109656566239271394956911735230251515860184981176945397797111961613517631647983'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('2.8911413131575642260662731490594111942142882166e+35', '-3.461501273823146644845128038782335929483950196744381029515e-16', '-8.35227574527039456158017854200104316835171563747791527325880345e+50'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('8.593191363445046350756152e+0', '-1.570433736289043766632234946600540541686553633176108561786998e+47', '-5.4718586113355372590242787449103e-47'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-2.68758e+4', '-7.0953708292053258e+10', '3.787793569488469121295862362727346329e-7'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-1.531318158077305e-5', '-1.1380617052691314216353652177811558465991399982531118517422e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-3e+0', '1.14435432275196793315720126619108758e+33', '-2.62156566402050665387412562251e-33'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); + T('-2.675005685229929746166160572513230700756e+20', '4.14436597781000061858591078142577363785533e+14', '-645455.9514175622782476040846544677'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); + T('-2.790577035019601748887352496444737377e+3', '4.5815026890742697183857667572120302672207723872343345e+9', '-6.090964524967813080968480884101645435127413600350303568486651236063625995303792e-7'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('1.2943858e+5', '-1.8466054547987821437798758500362545e+25', '-7.0095417331096560421575374461008227452969325188527599e-21'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('2.828495065320869006176625593653816409328638936862545e-9', '1.19269986839413e+3', '2.4e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('1.210243877847039612e+3', '-1.82081562734910535203427760801450474e+20', '-6.646712932758673573125313203777193186183734559614460847922e-18'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); + T('5.8148830377197331282016541541289207399557003956e+7', '1.056229070997461188792e+9', '0.055053237951767283878863413034205894856371908333169733927057002882531331286728'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-5e+0', '-1.96568535828529880853418483305657775840927511e+38', '2.54364208337064997575e-38'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('-3.2710975342156963031791144657528359522602e-9', '2.86112985684284809e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); + T('3.8319e-20', '-2.520431557490889161632506613701323929471352731856219e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('-8.232343400551955e+2', '-5.20932026777726541853187791660407377644637694122e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); + T('-5.3494773221010117237806889955664072547846163248739e+30', '-2.59387637572e+3', '2.062348603879057547215513523296281812201359604151882946e+27'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('4.210650286098887243291899736898e+20', '8.91e+2', '472575789685621464'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('1.7992317374233982019511957167830673053571616653993e-6', '-7.1959332e+4', '-2.5003452469839467130561964038e-11'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('1.3039014922714903415878677282333717236e+29', '-2.0624030550460194576245255510741567877598483e+12', '-63222437975024999.1040068134919151909227671917526718093910435972967388054275054461833464065360630968298387832045'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-1.573715055172521211522215811309672084e+8', '7.55616231614213598442e+5', '-208.269090753994686855749971'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); + T('-6.112373e+0', '8.470579632143570229306087964378037933636252233195e+16', '-7.2160032317094208461e-17'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('1.49502278e+3', '4.6797822e-4', '3194641.79337235'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('4.50192713240673e-10', '-1.83138737441661804498055171563795220495306455282233620356e+25', '-2.4582058363489608126459180746648559401468394e-35'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); + T('3e+0', '1.23022804e+0', '2.4385722829078095147302934177959396861089266'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('6.52170109089127400063480207122874352e-8', '-5.0413201777893220182578778e+22', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-3.4931500754729915735520354536278025e+29', '-7.0803342052231544601687791639049399601321e+40', '4.9335949041729e-12'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('8.4219412111336339e-5', '-7.6558806514206402233358672597608123579466137963472512586e-1', '-0.00011000617165539070906639094386733'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); + T('-4.56922805217674411421595300737838921234147e+20', '-1.932275643042776159425443488200888505533e+18', '236.46874961'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); + T('5.801123356279104329877669712e+13', '-2.350209490371783634e+9', '-24683.4309028401326292537826872846360450510445427584138231002584049526379811646768'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); + T('4.24426294157757637883660684629212538512497004677855e+50', '1.279908447404359376917014937214444446e+31', '33160676063861412641.36535245328359337538382850511175806974077794093137694920622970215651558925266841197'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); + T('-2.0683221e-17', '-1.90516529542282269709801887794794869648767e+20', '0'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); + T('6e+0', '1.46347633775982708214268078973949e+18', '4.09982713433161598924535233481218591703156500235191121565951808598073e-18'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('3.7794660097004378210125529704e+25', '-2.5441044120856885168019828924e+6', '-14855781829339246591.910553049512291377540659463848859247436341904104744613787166122156914870056263571701180487512'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-1.104187257041818439239e-14', '4.40128334891945718931344238589210027216364e-9', '-0.00000250878475550296795217894008810765745975221390594190696'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('5.1877e+1', '1.3103003307286068834323560431766615e+7', '0.000003959168656482993073974772012210824283071061'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('8.941988246622787e+0', '-2.4623932e-10', '-36314217593.7733543123819542711537702427053486015149814416316614259656012695291718641848101'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); + T('-5.2980207337333299991336e+22', '-6.6721054945920543383019e+12', '7940553005.38568809625317549680403879186371719782517992'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('1.97986576327700624189364e+12', '1.2738234105229773295825566509987595447e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-2.36098639281821977630122e-7', '-3.44105053573270000838e+3', '6.86123719573765841605056520283802613476492e-11'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('1.9545095879018890682606501393047079e+25', '5.328035298266656e+11', '36683495481678.58865692194372424944324651254224135546474678950544604295'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-1.336328832747700384e+17', '3.2e+1', '-4176027602336563.7'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('1.2109012176e+10', '-4.505350912330563840959e+8', '-26.876956782343406047377718209584885968315549384970878827735533366228049050624794771125792'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); + T('-1.2949718255003949992593932119645318518873397024460186994812e+58', '2.787410792558460107298e-3', '-4.6457875134787319856702667289116661936914494242107752084293825027756327684635140572075467335758747901525e+60'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('1.9490429982482747197036332363503105451858709648972245708e+54', '6.0215007600329310686543798206422037456738e+40', '32368060321188.360549790441674783101240846666105335140548032799057582305238605457126500639234346'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('-1.026023269024557930061389334680380368568165403325606458453e+57', '1.69886247666782432351187596226043561704587122344198e+15', '-6.0394721945770217058474301798609392842488511074574372123312116821012732133654e+41'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('-3.355801690456180322565474221962100185437e+20', '-9.282519861920478765130512813646516e-18', '3.6151839590698079260797529944210854361538421082172978194176398159611253154831358534675096607851864773998555812639299853185e+37'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('1.49869192273892650013344991844921189991876948426242527860285e+53', '-1.3622712499e-17', '-1.1001420773204607436775135589310596225324989032218621430387202360057675911464598251741e+70'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('3.111382542600966e+7', '1.2278765640929304956960844431124430065711e+22', '2.5339538464922475814714512023890344085230033788141194e-15'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('2.1653520252665943178786e+17', '6.49511426520246649498515816434950910703808001489158217697032e+14', '333.38166764323979143092'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-4.8518265967788457677179e+10', '3.31040075102353608004456225759708591728643e+41', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); + T('1.36837237977959550903776758684897e+32', '-3.684358886866245e+0', '-3.714004041944658064199049240955945948602173333923450572441188770467590771374789961829588e+31'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); + T('2.177699358089344987360951436599809417975282339e-19', '5.2030070964887038064987783057875725501661362e+28', '0.01'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('3.58e+0', '-2.688704424296120359588e-18', '-1331496302698729384.7866855593593000520490969183956809319751423410301220536455204387'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-2.268454219458114757815396922012605631433386092870212e-14', '-1.09474933351269498569799972e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-2.05209700237419166454e-17', '-3.0709248036830196e-18', '6.68234207465149254405509695027088076277612556368445724782615834'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('5.4046420290424507e-13', '-4.179004273853063242933752e+6', '-1.2932846378879969890777046684330924830051367063541337533428572e-19'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); + T('1.58400755581268047025424145151705e-2', '-1.5959696941375685449138454859289511095574256562772715857e-4', '-99.250478353766473924218120396249692137210245799211978619596833861552441248020682855061'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); + T('3.81148895119210187169599028222884283678e-8', '-2.9701146466824373148364263300641847833857e+9', '-1.28328007656184718940443206263025883340647845055074820195999544885356710601702300166e-17'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('4.49008e+3', '8.689657335003219286202e+14', '5.1671542696e-12'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-1.5946734525e+2', '4.52118414866581288924758024e+7', '-0.0000035271145789772422362885582265014191636438330246669572393487356540344090939917071'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('7.610578634455773076134189379865470344862472011249194171555e+4', '-1.1649311077973715753657286470069e+23', '-6.53307185593635905748777479229977e-19'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-5.3575981042571e+3', '8.935729367186173155324128582899234399791777828857851e-3', '-599570.318672731586761585084863571675024043375304115163'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('3.69e+2', '-1.2562490101300234257955e+17', '-2.9373157473119761056698685e-15'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-1.2998177446296097240525082320413196107954665075371741e+11', '-3.4244164821e+10', '3.79573498557776'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); + T('4.94e+1', '4.56838323363482961321624179064445998936302930009827432492286e+52', '1e-30'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('1e+0', '8.64182125633251631363983155369011869087139429701476701641872e+21', '1.15716348480041094982762810567962182e-22'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('3.993975408163954147285094514954904858958e-20', '-2.66722286349412e+10', '-1e-9'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('1.5567622653e-15', '1.5028194e+7', '1.0358944430049279374e-22'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('-7.557578e-19', '-3.2335604174153e+12', '2.337231e-31'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-5.989911278884e+12', '2.51892127512023506793037001994892134251649740742753416e-12', '-2.377966845588727259761014826439802188708564602020039218024669479952070521178878e+24'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-2.57e+1', '4.0234895732828185373607611581807785e+24', '-6.387490145533303555459e-24'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('5.2259107793005831331e-3', '1.091382034498148692899092300032e+11', '4.7883423165414473617416e-14'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); + T('-4.817248e+6', '-1.133686049927568668e+11', '0.00004249190505879272774206394758255254543582190221526241845546'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('3.277097445126e-16', '7.054516371862691529581300334768690678121626769965e-8', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('1.3936248120801381090513747266745290193e-20', '-8.053893160077933179823e+15', '-1e-18'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); + T('2.32064033092970843664954948784087753583041216e+17', '-3.615111227e-15', '-6.419277818058980669502785087726645307531535488216390637764462896842426807024491033730509337935786837133e+31'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); + T('2.12664997462592137369956190807051384300440311477378e+27', '-9.14978474014484923376370646832888975224932507538522e+50', '-2.324262302363470260550894902456257e-24'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('-9.3735010383806623635487882e+25', '-8.665913602716640014724e-10', '1.081651799002727629823101066135855439197703238337573085e+35'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-9.33456e+0', '5.1097037422e+8', '-1.82682998290248703100241356298177282611694034976335657975360730493977013e-8'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('1.38184839557403816707665402179456610830962367723975e+50', '1.808334881264795534220320555362652442384712765415479e-9', '7.641551406714768216514572188140965014291289611616667139389533705973792782997367661e+58'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-1.82639748802688362350005077027638364644443085055233310644497e-4', '3.5662613126352735e-15', '-51213226624'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); + T('-2.542623945989746270879379039368625760071115734461e+31', '1.6272411990956368505573932159726723197192155961194e-2', '-1.56253660944846209653465182532914837433289580415086647e+33'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('1.82031740681354151338308744672598642687118944853e+39', '-3.346967552429e+11', '-5.4387064657752051191720999006371703872851135394439241613473988452882276091367826788182499328834158888173812160391519261e+27'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('3.428418694506e+4', '-1.04e+0', '-32965.56437025'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-1.14710639e+8', '-2.0576450373023254344893212805631573278690023e+3', '55748.5071139341553810716080941416250951289073040366315795875490803975486957051493696543303812938'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); + T('6.06910031912579603075163650077301063386513e+26', '1.756285510243160873757e-17', '3.4556456132724788146966813135468468977660154057678872739735566302820030237952071583e+43'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); + T('-3.90605514022806485720221042500769324323736581269348671e-10', '4.0593180145965868644895e+18', '-9.62244181456733391599132e-29'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); + T('5.528886e+2', '-5.68717521038400004816993491246491187773380607589632983e+25', '-9.721673406342421608577825911319271020373526164887944e-24'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('3.72365020586868229145574e-1', '-8.3108274933427095592958647248003181967722856008189e+18', '-4.4804806848072209593189161771755027874320409513783904661342038898374406693370618e-20'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('3.7509490726672160635263349210882224671051512121008e+15', '1.837647987011687504484463752440466083881e-14', '2.04116843877529842620756656613070857883739e+29'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); + T('3.92836158644157173487527367198e-17', '7.0684264028255533733e+5', '5.55761829092715321182515788486691969921469112592071527097e-23'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('4.525555820719068749213427983578024137194e-9', '-7.68863767700660740960792346381123153785634e+41', '-5.8860308039394943225e-51'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('-8.349555462289792e-20', '1.55856431902488498069349393e-12', '-5.3572094268869746573743511666430217422115702015183538053811118e-8'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); + T('4.2245946745197906917e-8', '-1.79339610040587716162181818575234544017267244514968e-4', '-0.000235'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-5.774793154960727098877246652216e+13', '1.691693e+6', '-34136176.9243043926934570672823969833770075303261289134612485835195865916569969'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('-2.598716034136613005772487787684e-14', '-1.386323758531479015699e+2', '1.8745376165877809319182601233019063485910918364572435866167922192e-16'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('6.15351909311321460413200987189e+4', '-1.77785984015652589984070820009413104693967217257212e-3', '-34611947.2082312629657648446820718231446957271281771'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); + T('1.155922507793e-1', '-3.147279429869929206271673543872831846173426e+22', '-3.672767333025691894852221764744712889587078925e-24'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('5.31733118010839356e+6', '1.935732381107395542585851627989728462646323037201844002e-10', '27469350784256912.0963853112200350731237920925262619759828151961501'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('8.42672444294536299766244e+8', '-2.138586073610043835580070416613103e-9', '-394032512739625979.2024324135574482589490533197844987891038312691855942329828833289849150130808872773028720332'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('7.2670769588897391152727506230883844854371350081800514279088e+8', '-4.75262927699e+10', '-0.0152906455255694242124206820335606100073071102662976726391425999554964711798527610492179627'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1.5404641671662e+9', '-1.67314046776792545248727858299826872766651259168209189e+21', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); + T('-1.28280080412952281488188135011754515997e-8', '-6.46426323073493705765e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('-9.8111488972459283571522783e+13', '-3.07855e+4', '3186938297.979869859886075684981565996979097302301408130451024021048870409770833671696091'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-1.4e-5', '-3.062e+0', '0.00000457'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('1.4419041097349896276732463379735549e+34', '-1.164926376880634535235074260744069971461e-8', '-1.237764152611968817166836687782721198756269914503940580162683458101244387634455273758084293823955197903428019900662056642183151712e+42'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-1.784938664778507938329516604285042177139945071683147e+51', '-1.099701856021749e+10', '1.623111441528027108820050534401675955766726487475507603057000919657548788385756776790779714626195313056373415939e+41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); + T('-1.144858097690765727e+16', '-2.16e+2', '53002689707905.8206944444444444444444444444444444444444444444444444444444444444444'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('-1e+0', '-2.6291698157169478600461175327012358e+0', '0.380348'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('1.15736211783538299961215009168140190677434638e-9', '1.9143055086673123356012111887079535252803523218596770013e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('2.227835284218315528e+1', '2.65905579750147274874085364052e+29', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); + T('2.03421376988479202905e+16', '9.209976974849011632657e+6', '2208706683.45850118768347641813970490676860303802841997904178048982249933515627383015'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('2.685671618673821738918519561777556033330658230560362e+17', '1.08826139e+7', '24678552812.333'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-2.6701826994e+0', '-7.31279571226990573e+15', '3.66e-16'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('1.08552531516619e+4', '-1.07303114356446695384e+20', '-1.0116438107846703008e-16'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-6.31579e+2', '-4.17845218838432029530229954432e+4', '0.015115142439'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); + T('-6.0746933e+4', '-4.57624387176461434406270958623088e+30', '1.32744090354991914814633e-26'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); + T('-7.72448118740403275367246115532129891374121010887153106508855e+42', '4.755600248544829343646447e-18', '-1.6242915265570637734914784332672954511258311352702689435212522270366305386890169933099848068590618456172508157831111829096991345e+60'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('-4.639777571042945259022505e+14', '-8.59e+2', '540137086268.09607206315541327124563445867287543655413271'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('-2.3020750134575195514445347821261626792634199431625859009935e+58', '-3.92222650207898488410757125871461098716339199e-2', '5.8693066609929323780891185838133305560007787678357007816777765392113192e+59'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('5.4667729167235500549e+6', '-8.084528100293215e+11', '-0.000006762018572890206822727228569651954784466579079349434386312363'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('1.2261103981e+10', '-2.44511071816705062e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('-1.42420272298234993917e+2', '6.0701464806431124872984632707962848259421e-9', '-23462411121.773460785160021677053026981460506372375450912428345721009'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('-6.47604807276e+11', '2.2823408847663635566434482346535736e+3', '-283745873.19470175316528549855633658118846607902814'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('3.6686723432538176880683939931e+0', '4.675771298e+4', '0.000078461329894878397623'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-1.969059638497421508330517785466147062462821526996807e+51', '-2.5463463850243090393472840670857777713422673888177093e+31', '77328821015001995292.29367118996203186569121349'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('-2.162750959e-18', '1.346407617425818703334204e+22', '-1.6063122e-40'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-2.11366520256529651274043289583154452957116941974142985549e+56', '3.73536883563683947771e+20', '-5.658518062259679756637010449252428818091256835404879088124450062541982995017890037759846913818031817732015006e+35'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); + T('1.299196051e-8', '-3.36293303690472426888379465586207695111083796846751e+48', '-3.8632825475341384e-57'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); + T('-1.7229451528342311e+0', '-4.2796707751658845459405876253306e-19', '4025882464679652680.838853081395701283716767471150976311912052472173814571991742097595184465006495719087477'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('-6.3704067187468335042574242864413399048957e+23', '6.92328693184629368296786617657109666451713177238227180462e+56', '-9.20141947236611387943835667867777121331701406247027e-34'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); + T('4.0920126568798e+7', '1.230215173840457585562464949514e+22', '3e-15'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('-1.4392495761263320428327632607036e-13', '-8.8105221351484e+7', '0'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('7.311615200292e-18', '1.2980548030409449594783729777807e+7', '5.63274769536935134614744238279605697040141921685398829157345821849e-25'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('9.78202313986295301e+15', '9.495721316e+9', '1030150.6135590292854378035961307270530263316754651058674772085107810255369967093925'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('1.178638053412398017349804491989080300091419784574666653e+41', '3.513321214208652230743796379439210700041087539130623036e+54', '3.354768839939040134522406983e-14'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('-4.8276054039456529e-5', '-1.90531e+3', '2.53376374655339703250389700364e-8'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('2.14848e+1', '2.0459060458810641476956e+0', '10.501361997172077587912215021856201412580479851195420241531589174270660161526'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('3.19625508716517448025423430147865686848240612016195869e+53', '-1.1735022756598883138466143036906865085125e-11', '-2.72368887002613098842940078785932598938717998816810055434831160880098180027836612617295784889970125440482607164750942622976437807108021919913989007909266e+64'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); + T('-3.055638962466851605e-3', '1.5820727935000643428612810032474707340964284621402708323e-18', '-1931414897608330'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('-1.0429888109030004449511599763176612630134143e-5', '-5.266e+1', '1.98060921174136051073e-7'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('5.235397631786837277253237516187732524e+31', '1.88587089515897397697319410528959515274410701341e-7', '2.7761166712027267219109158409030121215419529279133001740936048442288253043150153240018380087223771821e+38'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-5.8461019782159550815368958600341261e-4', '7.2076431807321283281876422e+8', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('-1.072e-3', '-6.2226250670741434772153726938779783680057864158642842154e-9', '172274.5607271579753419743717863649918294033827582277618188632134164'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('-7.73893488393041297e+10', '-6.10866470979295972943143632499e+22', '1.266878319827232390385112091177376865310437875356269518e-12'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('2.4737489791204767259e-12', '-1.143884367193056074400887e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('1.9553328475186660527428982315682e-3', '-6.1316918035249630259e+19', '-3.1888961e-23'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-5.8e+0', '5.71572737e+7', '0'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('-2.6158015369622294637737914312799631e+11', '-4.79524762718944093853339957196916e+25', '5.5e-15'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('1.748205863e-4', '3.709125e+5', '4.7132568005e-10'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); + T('5.27080240759242341930529800890535386287151e-4', '-1.21165044367497757e+15', '-4.350101495944571269652287362406913422019342444300166647938421e-19'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-6.465427426796690642535274540554e+24', '-3.77672269521317591659882076480051580503324712593716e+49', '1.7119147865929700297374476718162274922554875e-25'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('2.8100453117403708438123384663111215155383804364678e+45', '-3.94730870352644146620787352135044335555948561891531562385e+56', '-7.11888915409614721336e-12'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); + T('4.1091099251787326266016993438615107e+14', '-1.9e+1', '-21626894343045.9611926405228624290036843'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); + T('9.95162962414437928450981522639092732e+29', '4.1032732859603383051255272667330592866100735872e+46', '2.42529047679925124426201614222e-17'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-5.662275259502836253952138202643053155538145629955540451e+54', '-3.3185355084674883678993558701e+4', '1.7062572466243386172956620385621631889894058325383320594e+50'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-1.29748e-2', '-4.213764157130912855545319551064177966919710413480493739e-14', '307914717487.04468489533944253009776146027385757'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); + T('-1.81210430800593779617463855797503218374273474184e+10', '-1.5381177430741651185153e+21', '1e-8'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); + T('-4e+0', '3.51907189e+8', '0'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); + T('2.21863744069006666052582901465058740629316730146e+29', '-4.434978186087176856273181524060536005e-2', '-5.00258929716966968574514059093375857855938000892977e+30'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); + T('4.0823393171235391e+8', '-2.70368626550359e+0', '-150991606.134566078089942091981107157749027602664234117257801855530801967355204002288184430484464218207776'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('8.9442747523676788161885e+23', '-3.347090181217279032480999e+20', '-2672.2538886343361648200670897806551533769728165657196755425922348996478640782629610772688435675'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('7e+0', '5.40420500449420503453976209161094304222357223444553e-6', '1295287.649'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); + T('7.028445511182081995541013996e+16', '2.5102253272559340041211147747147949646909125381e+6', '27999261400.4307896431180085870678681760607552765970091244053029051440662128452174301577242980052539945281'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); + T('1.0601310955955936e+16', '-7.2898305260362985312824427257374333612356534e+5', '-14542602764.3473758416740179124382758595781429079155'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('2.6452e+2', '-9.262837255477826144094831326216435505e+31', '-1e-8'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('-3.90089408676e-18', '-1.1110298778e+6', '3.511e-24'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('1.76885047079958774536252123376129099042783874e+19', '2.0249e+4', '873549543582195.5382302934632630208851932632426292656427477900143216948985135068398439429107610252358141142772482591'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('1.205615202635851546016358551966522959e+10', '2.317193323336e-5', '520291160212804.4437597649071351315775402'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-6.93454822e+4', '-4.54e+1', '1527.4335286343612334801762114537445'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('-1.000540476280478315611880144301369064767813323703682e+20', '1.11376484621317482894663758902611128309813223360678264153063e+60', '-8.98340865832081267900200821906540144497392493110197807657652e-41'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.09732713097906379e+4', '1.8738082589245579420186976880043274021077e+22', '-1.1192858826349665590066119362490655013062474034902e-18'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('-7.325490256622605586102477749e-10', '-2.01836618685087474230579595304693534161075899e+44', '3.62941586335831891440877527969515e-54'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); + T('-1.07615286e+0', '-2.5086e+3', '0.000428985434106673044726142071274814637646496053575699593398708442956230566850035876584549150920832'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('2.8801864061246439586279437265e+23', '-3.3994521624931466142002006645121e+7', '-8472501651596488.647098961804323876901'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('-9.01310398074547316210886740036851e+3', '-4.5432397897061668151e-6', '1983849499.0220170568564192178'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); + T('3.05550985358647261837693896034e+26', '-5.135592160467994682089e+21', '-59496.738800770173400470178228695939682394147624700173086171296'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('0e+0', '-4.036945190420874470896353212870113317735715917770409396e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('9.854805535179212555e+18', '-1.842054701412308148e+6', '-5349898419207.3706750299601276764078545373755077227976997140507734858192986995853282700724558629675'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('3.533950028682898427434589041553550780382377037931e+11', '-4.703043653970614710075546551856999e+25', '-7.5e-15'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-2.8893237276749756486832134401e-15', '3.47524817021873e+10', '-8.31400690297499926658314384823351160733821320338308749502169143569793e-26'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-9.2119401062083750377874543076152147065706490670276e+43', '5.1085134426188e+1', '-1.80325259190979384994905409769630200591653398369710089350259831754409469186314303226122099174008e+42'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('9.85435328017809475871047819e+21', '-6.4468990417108467350708881124035910396252834805284361336e+15', '-1528541.585097165470490586829378750375239139730251327009191430390850332646044757932499986836'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('4.8547e+3', '-2.034883593978042e+10', '-2.3857384345555768653693177e-7'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('5.09933664998801e-2', '1.3600202443658585323419450478123982236493e+10', '3.749456429867847888805749393845466979832830382443844946011887e-12'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-2.0626276758825054218624959260323599847854085167218e+42', '3.90493254708352738202395963395851075307503752752600737325e+40', '-52.821083360915359591'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); + T('3.3614492849204607400899018296211328810873509076824651674e-19', '-2.05637675978488e+4', '-1.6346466030242949824683333642856967292377346202240131516e-23'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); + T('-1.327840561633609171e+10', '-1.68337150906924141010847687584268206471e+10', '0.78879828634369008164222932703291468220520738947940911557353509777338380422921516801816530761381176'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('2.264640581420576317136612420218282480151e+32', '-2.277031177344401e+15', '-99455844256894397.14498145176283613575069089711077166526831139989697571258335110077879328814331944158977699'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); + T('-1.097819795140174e-16', '4.623262828779684541770610129425780534989133474553e-1', '-2.3745563161719377695558896468884011275554102797e-16'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('1.950161534442643877e+4', '-1.8647021196871283689033513400747765322e+14', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('4.54103601948189675e-3', '2.7153406046494129061305835593512e-11', '167236331.66706192076722437510852038974559134'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-3.14319239703203891591894401472767482245349e-10', '2.22833373138665984792024877290559690632614914754855546378e+18', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); + T('-8.482182257009733601127348485938999598952298941625177303281e+51', '2.678446652672185206934378e+21', '-3.1668288963483294585736922680211793192544444504919321066041506951852944602150905624323838423181244366766182125854e+30'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('3.03057424645355458935993296939654221010182508767e+15', '-1.27383754710059e+11', '-23790.90060072033596774869684302811705830339493188550321778326199'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-5.189606428216710646374474712844057366247285825e-20', '-6.151584349959e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('6.22128400479128228713648738e+13', '-4.18313671e+2', '-148722942521.074867934127053189232249595782395550730160095580524'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-3.8595315383258477818067515337e+10', '1.971181644930613279741933670615e+6', '-19579.7863086418172148604'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('2.8396398271407e+0', '1.4007844376000654192455329647488e+6', '0.00000202717830875234117001620851700028775551551407730035446218333265226599654'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); + T('-7.7520935694483e-12', '-5.811218295358714775930720760317677065173729725450245e+48', '1.334e-60'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('1.50695374547572420215832303185808273893758272e+12', '6.305892936498348549057922004629926844851005e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-3.593197265003281415677274812670346090799679252631541222e-7', '9.4699129890580005588330029e+13', '-3.794329756941839723008402e-21'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('5.61212e+4', '5.4286597601163741158408129842555370439294730106573068454731e+22', '1.033794757452195355330324303764289237030962656486403993662125e-18'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('5.43324599201528989062433389997237462e+24', '-7.6578845958564448000794923672884e+30', '-7.0949697974753103362057861344478822879106e-7'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); + T('-8.0268001304860409453540737281708342471481415465263912002e+55', '3.76613794e+3', '-2.131308055723004385058204673239035489801560891985382564134121970051898842558060950895494815572262337263196472299153227510301972635659754937175775e+52'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('1.65912563233027009212316750725127535421346362238679e+31', '5.00084767174e+12', '3317688802452549490.5'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); + T('6.29619522511557655893144564090950412200822974489733361793257e+59', '4.83663548471053818776077e+23', '1.301771705769220223964253908610690647447402401224339405695974291376778946059439568904350141363888987527e+36'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-7.59981586158762368120877895474e-14', '-5.79870405622771193021486650702240911193708505587921510736e+56', '0'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('1.23272599279637618024818738552421012527125699145e-12', '1.77359653124e-1', '6.95043078334463567716527141353685705504107361229956213364295596264092e-12'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('7.27406134142945150641791270976329497152745026788316643e+44', '8.28398856173702973902816689427e+8', '8.78086840320816250780937534540864901377022634486000430685076863358228e+35'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); + T('-1.15526910572109520014120828078320325e+12', '-1.87506634901088457571527422878972322588052606480450184412e+13', '0.06161217208823'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); + T('5.779678960222114244851358841240102681019064478928174e-8', '-3.301461021906077298e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('7.890144170165107e+9', '-4.5462749851861763414053e+6', '-1735.518462010056904268322534763888763092'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-4.486939667327684e-12', '-2.414777748926455346445236405126297401829664670083955e+16', '1.85811703347128140755899041612747011e-28'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); + T('1.69813797606256583369528488206381209609e+36', '-1.241184493412634072e-15', '-1.3681591939595854541082341194728109793123233230082324815562626769079159245714700393138326638e+51'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); + T('1.037856939226e+6', '-1.7260192022757165658e-1', '-6013009.228736'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); + T('-6.2916731388585446e+4', '3.409559207090871e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('4e+0', '-3.6143242169244e+5', '-0.0000110670757793936644308858252687780301559813329496312280528851'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-4.0652283761994923639772088e-9', '4.40003313970616097215733317074853572661738e+20', '-9.23908581395587571267698603933113078251391549321e-30'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-1.4532417515294380505352650897484235322033e+32', '-6.36472788019403503294418758859e+0', '2.2832739731916622592109626251683363405458816780749956302804925979964396612102562039198125387287842e+31'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); + T('1.027682523873433086499307183027840763990090057368e+45', '2.1324206985991e+13', '4.8193235253651970231189259886502279111251381373174655529127237852621833725276596154661218376404290590268970230831e+31'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); + T('-2e+0', '-2.5035639762053087275972004063124392679e+35', '7.9886115114639e-36'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('-1.79721496577102199881852495383e-18', '-2.2890351902837533341e-4', '7.851e-15'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('3.57212712587e+2', '6.0561621641945475976110735578765694561760098642903113978e+56', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('-4.4563487830150478121e+18', '1.7964872213975340578e-9', '-2.4805903041984002416305935836523769205637042815086311e+27'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('-3.6908474693475246852869164343969127157121506046453749e+18', '-2.302314698129360813e+14', '16031.02943462226025018387751703775005'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('4.70612309822188583854333927819099e+20', '-7.8e+1', '-6033491151566520305.82479394639870512820512820512820512820512820512820512820512820512820513'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('-3.3404e-7', '2.814e+0', '-1.1870646766169154228855721393034825870646766169154228855721393e-7'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); + T('1.4232379e+0', '1.160447e+0', '1.226456615424918156537954770877084433843165607735639800869837226517023182'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('6.34747778812125612400341e+12', '-1.114613622311774629531806057e-9', '-5.694778586104314307451623003877758027242e+21'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); + T('-1.5333619222084748e+16', '-6.8177e-1', '22490897549151103.744664622966689646068322161432741247048124734147879783504700998870586854804406178036581251741789754'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); + T('2.3798179e+2', '-1.69664275473136514529862e+23', '0'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('1.14555654155595629134970722126157447106857457471520603749077e+59', '-6.92758316413895333566234090597691893454713893688e+18', '-1.653616440847650774320636232067498389455369509931511155041982279141599701e+40'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('7.2332394047727069252432e+15', '-7.443809298201294676811451832760234274114924e+22', '-9.71712078454311e-8'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-6.69432533125189126694700254305655589577926e+29', '1.761844828827825012882e+21', '-379961119.26075240506254660712250901049329503462732131412483909000949311283883066594438175141'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('-2.4130178835595964742558296142893859210087294e+17', '3.452338636132145425323899644612127470638470539166e+9', '-69895167.8234855871611150701480683220184527263906806394812898006382582632511354794025916677'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); + T('2.54963813404581306453e+14', '1.97713211157275048109303526074293e+21', '1.28956386835356736489233961106561299388588390847735105300452516168e-7'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); + T('-1.38746455209878402530134727e-11', '8.591127845937769823840816001868213375681e+4', '-1.6149969794185206e-16'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); + T('1.6639521425931124147154451392666164491148e+42', '1.92920892e+3', '8.625048979107521515686570323687993569482355493152084326875287307e+38'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('2.4973209182169190724188217024082110092149e-9', '-3.0444646040999073994696e+11', '-8.20282461111171054659002141171005e-21'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('-2.73630880347215358546735836781048e+15', '-8.036043764974990414103e+21', '3.4050446755881617093172747681483411e-7'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-6.36544404446311263506812929513680206971497e+24', '2.2525981254462389259878050694e+22', '-282.58232005773867564641848251847016818783380658176288449307102227688676344764727767543689563'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('1.82819051068994851460438950430873895607034685720211e+21', '3e+0', '609396836896649504868.12983476957965203'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('1.9e+0', '1.490741470608424941842587258396915e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); + T('-1.05090161972829793575e+21', '3.0801485282516284311082114134926e+1', '-34118537144856996195.32516231868303177883022873'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); + T('-6.670538194815167235e+16', '-2.121809310490570685732947018575045526339034042864558885e+16', '3.1438'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); + T('1.080569073506090886211002e-3', '1.43592011644804083349241749576879897163092e+24', '7.52527289734638644823125069382789901359916933678021640548942272e-28'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); + T('4.91002487656425188852377e+10', '-2.00440623806984556707345967912764990117408e-15', '-2.449615643429841039437233555809862374219296807179812453696159563073898964604846077002445010021825873988315017006372132032e+25'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); + T('-2.943175455433610227235e+4', '-7.6636558611466733e+7', '0.0003840432697865478087537804611869058628495472052'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); + T('-1.51719645208215782237668048533727734233585519889994141360149e+42', '-2.550879672562988876522596686423987946305852704705e-16', '5.947738219097410944418174596769874078850050143335315073796851720454311263758574e+57'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); + T('2.6110108987009436226076959234686217260439596606e+1', '-8.58789365411570256e+10', '-3.040339114e-10'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); + T('1.389064720277617509178597341196915e+10', '7.026036063398392990615443927690670946276717057e+17', '1.9770247515720077e-8'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-2.05140355659764717008738511843296414524e+22', '6.071199089905871458444031228126412896e+18', '-3378.910041030218229111779009199060737204635943241522624672434450684440479549413131683'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-1.314e-19', '4.2648981383367708469278923711170719537e+11', '-3.0809645561955554862199629702128680637642401845537793412218119e-31'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-4.0597813580991029477169989484145e+26', '9.34538682240575579505385728753057530742998792678602492e+35', '-4.344155501798699457589993145799674244161193e-10'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); + T('1.0018200401275595903339115682344558572633270804e+46', '8.81139267321976617930455357798e+2', '1.13695993049131140037125767625346721458195947241e+43'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-1.2280735669143165475446e+5', '1.10102560960248605863427422923e+27', '-1.115390556045013197867542463885541168664479231181377587454975483215e-22'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); + T('6.7082192809678563962162194594386435875e+25', '-1.71790824342059386152717e+7', '-3904876355684084910.111760388367215781609213982133097404'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); + T('4.1278125780422546665953395041944509872760679487138e+5', '-1e+0', '-412781.257804225'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); + T('8.259835298888e-7', '5.34066490685461e+3', '1.5465930634005343e-10'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); + T('1.8426220886667036290616536083832917e+34', '-7.997381733e-10', '-2.30403168209840362894886164161959192551150415368074315229139006512395523786359692579151e+43'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('5.6424531566839249211071e+19', '5.74748066963653937414895457337104216909762130207398e+46', '9.81726339071053159491586530524973e-28'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); + T('-1.2399471396360879396835759940372784823940663087864749e-5', '4.3878248953086319241675053635098078071996e+9', '-2.8258810896529002e-15'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-6.34300658631121962368858167366881418759032e-2', '-1.28352450068574604586716824026e+29', '4.94186638659593509113113820093381910926216553909442703098435e-31'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-3.9689842428210670859875967578916064e+34', '1.8182473825584777881158730317543760768228627e-7', '-2.182862618636778435339722244875608102637560298183181002104515521142307254849808669727348070645458076424429253554156891803466219779535e+41'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); + T('3.08018795632501172706224e-18', '2.242798713829312142486513346099279818835760163581229e+37', '0'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); + T('4.6669078251e+7', '5.390164254506657335728203599108065232e+19', '8.658192227069981120840641782285236543019935288576784630651117737363166435e-13'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-4.763038967035678667425654945213259439774075261381900617e-7', '9.33901257284945472465207267726e+29', '-5.10015264449142214024921307797244918252984355641012968e-37'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); + T('-2.133605981326826293923435937504e+30', '-1.1177891405212282285363353987352004e+2', '1.9087732238406966521282892577807343845745802496660390850671364235934118591781436272865639003e+28'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('2.76527585809449777563633644930595716244546e-13', '3.0001024020092905128037424559480878163977551122471405142e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-1.7110132882492383935588586899931425895061e+40', '-9.6191187870121269195067e-4', '1.7787630303094637331562594685783036737284333105369588976017725202974330352216606884531691618914227170195381448911471e+43'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-1.08910400379894844349196871748334229714615028018338e+50', '3.985827e-5', '-2.73244173367019803792780950473601161602385221481860602580091910662454742767310272121695196505016399357021767377259474633e+54'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-1.302156069877990534483599036592e+26', '2.166149780191755666818104e+15', '-60113851857.590328633878193952382064059805466930609831940013328243809182135262639138999955674993301153625'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('-1.69865537226e+9', '2.0093306401845017188353741269846253715367437218264014569e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); + T('-6.4287101918646874743716276949902581737092170275369e-3', '1.51741940421415733729533709131599e+15', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('5.4829493429020796197e+0', '-2.137430148e+2', '-0.02565206328745990729658221326819237884165934390104803555900812530319002499631'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-3.0832216252080367540171446752324273e+15', '5.5264698627899400048493474087565807463187e+34', '-5.5790073985e-20'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); + T('-3.787764096073192450495e+20', '8.56080716085581596896635019e-13', '-4.4245408463266134116867309754241741552173633456978878978050073111062033244e+32'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); + T('-4.565118710281652043205587e+18', '-1.0768501357485338531981498736813253355144135945765971e-9', '4.2393259365736840112289457899768571182305950804409789854049842737766244141203174999047786698457641144004241958939814e+27'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); + T('-1.13737377e+4', '2.39672067889640067918676018386712868197543279e+5', '-0.047456'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('1.1581797117048585800437723131800381940670958298323249865e-7', '4.158e+1', '2.7854249920751769601822325954305872873186527893995309920635e-9'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('3.9177480051098793315e+1', '-1.48389811758681607570541737038695e+31', '-2.64017317542062981775247816258745283056e-30'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('3.005923866141121045247898962416705369972140068123506153e+54', '4.15073648236102377881158357015816460485290127834017e+28', '7.241904849693782752130060912698917736290164881044921819594383013999439892969064997721651291785856799979242814754346046e+25'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('-8.3414350613148997769231158985428870355e+37', '7.519139028e+7', '-1.109360397547220319454254929164595709547505390267402833291513917728826439249608193307e+30'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('7.62232420989345792932643399532553660945033205e+9', '3.546254722796595951616967161e+27', '2.1494012150042203378569e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('-6.411e+0', '-5.886802720840736290495173212026142e+33', '1.08904617e-33'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('5.38785591321678035450356e+3', '-2.1313564527232543868839883771873473923722049839892511e-11', '-252789997014936.927663619422'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('-1.8375199248563026289334113517820101864193123453179889673e+21', '2.53353887e-12', '-7.2527796854220066847974246859769322837320918834688688526022101251598322626090200858059067394533402205113987455815114452e+32'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('2.096164878785696688636271502225300969510394288e+22', '1.6599866609911060613934375398052217446e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); + T('5.1914325745708e+9', '1.269735010750339990288837063e-15', '4.0885952821785731935320459964719577351634688215103650028661120240797065846261251178893e+24'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-3.40269969165377186723554713617322268339825908238e+13', '1.579726092989314070406753168803172757e-15', '-2.15398081145500782364551348037118049721898729116518236621306226881029682045148538975457845189807222020592916409565460497028e+28'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('7.07761075858482789939366123427509748239558464675607916e+14', '3.181642412092089782313201e+3', '222451483915.5335226309323248048612287514336059581132215978473999145475064012112175748280353528345419168'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('-7e-12', '-2.52325743368261531046115900833975133351e+32', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('3.6067668496694263013521414450966007916746291382759735758e+31', '6.827723069253867656420030717897241780099868387443e-15', '5.2825324241857002134118874502088063070690230140241721395260396263559625719946470638252066536062470631e+45'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('1.0834953046501370758802165232e-14', '-6.05637425405890190868117498e+26', '-1.7891e-41'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); + T('-1.9506279824752972821372077075674221666452197467521264791e-15', '3e+0', '-6.5020932749176576071240256918914072221507324891737549303333333333333333333333e-16'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('-2.1693759471833175873e-1', '4.5515219138364272458104132184780818337729034e+43', '0'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); + T('6.32881730280121156206410564112642311471e+38', '3.13893166980721585503068134122e+22', '20162328997718861.77345695034924554442906535351410535056602449751700077831229938823869747916979'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('-1.555971152961551330903485377282047252953612416704372252e+37', '3.80693896268786345930625309227624452033520391582734289502e+10', '-4.087197531170734719117825190571527229082e+26'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); + T('5.9183141e+0', '2.648861310195652114486969005543229600661764637647280250443e+27', '2e-27'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); + T('-8.9551915318277681675e+19', '3.917225e+2', '-228610598876188326.3662414081396907249392107933549898206000421216549981172896629629393256705959'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-1.07477279325373337557240127417807692678e+10', '1.2686e-10', '-84721172414766938008.229644819334457416049188081349519154973987072363'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); + T('-1.43445291847104540719480368407138500372646221012377e+48', '4.345e-12', '-3.3013876144327857472837829322701611132945045112169620253164556962025316455696202531645569620253164556963e+59'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('2.0954478e+7', '1.53986464392932017456152151888024146833e-20', '1.3607999951560554864680121615011578541363119443508316052226456031150797726183451e+27'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-1.250091427743948668246622447017843708148283052927731211e+54', '-1e+0', '1.250091427743948668246622447017843708148283052927731211e+54'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); + T('5.6758631618241666964475079252598362892256966910193e+17', '2.94664387659901875615219983882883e+27', '1.926212803284250389998514453682328724096414204311678778978699659759838919429975058e-10'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); + T('-3e+0', '-2.47466544947381642e-15', '1212285079034778.015293785445'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('3.6042333176839534052834899427e+21', '1.5947612506210181108875409483746556795324e+2', '22600457067040123341.262943049601011982052457081051322054435549972434391998'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('3.46928589015151151224242065e-8', '1e+0', '3.46928589015151151224242065e-8'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('-9.019301406909e+11', '-4.85725370439548e+14', '0.00185687261893426599086'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('2.566889e+0', '-6.70721664959455838294e+17', '0'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-3.11084740702514286871485769505580794328691287870845e-10', '1.5910876e+5', '-1.9551704174082827801026529e-15'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); + T('2.4269107472646520956770013e+15', '2.8745856109621794177779499143087112128716443811e+44', '8.442645569537649344235981615816e-30'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); + T('3.97252e+0', '1.548939276078652e+4', '0.0002564671231048494297678054247040105191'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('-6.3e+0', '5.8690364137680785464741614e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); + T('-6.8137941022461812680047719160579275395400712e+43', '-1.046987619470002203934857620914434266806e+2', '6.50799873421178203991729406989443034111151170473151e+41'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); + T('-1.1631433593378409165207684394786246992e+28', '3.689253560366864826581626e-14', '-3.152787793805574648001297861553673866761420561503993546532496159938898627082395001611967385943223374e+41'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); + T('1.53592787782164984169670245168279271588308165405594488014461e-13', '5.74693959298662675002906911949718002057e+23', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); + T('-4.369397449454654500615321054230276043619984268e+29', '5.24801546986518267528660609112448233763402950374793e+26', '-832.580901208147702034817'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); + T('-1.47793635449474418162790025007363128246510397e+13', '-4.0311055974468508565753385738089562823383551139320599977621e-20', '3.66633003965664635938598932039497520941395269631956178044633131060155153584e+32'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('-5.7052072710315394560511337462009242396919549919319e+42', '6.27432931323509935475802813014752386e+5', '-9.0929356528943241420295550584270473994696443062489638568717678348095857514087935769869142236559272e+36'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-2.560785520006531400251699966772e+5', '5.5510232696929483481973994891101258117229e-16', '-461317741899536258818.0608197139803747414543238'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-7.2123486426388541242775563968e+0', '4.619423742444157417018988e+25', '-1.561309168581008e-25'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('4.65760284524911044998976808276645440797000595132e+7', '3.816726465949637918795174164549680432e+36', '1.220313503417451340549963130850565938826291703362578e-29'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); + T('-3.39515064894245702976142489942538572032944293834e+30', '-3.190517451178851693325309076728704044337407e+42', '1.06413793401694017e-12'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); + T('-1.12971175678496761518042827771480583041035379585531292740564e+60', '1.1135019977475364041327134404577288914950353923e-6', '-1.01455745842416210855166092488428629288662495889166320866894809187483852974381597749668860834938486e+66'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); + T('-1.61107062827717139412280581447896440546912751337055027e-6', '-7.9868182e-2', '0.0000201716201362536509735855238883359634'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('-5.9602377452504052024635056322386719132385834997988020543e+55', '-3.498531286473903713e+9', '1.7036399726633869221323030554383704939733658508821406762344e+46'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('8.8678285156182557026067087883515e-20', '-1e+0', '-8.8678285156182557026067087883515e-20'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); + T('-8.172900544549032947357222781512645262126304658655905516e-1', '-4.3773239399897252214957553884619053796e+7', '1.9e-8'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('2.1938141727317212455590510016849823560636555748854812815e-5', '-1.152634318814916200089398e+7', '-1.9033045753724361288571e-12'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); + T('2.8461588296170431285e-1', '1.90071041378103477912558980478768073811314e+4', '0.0000149741844364142347922830912992588913762933317498045262197925557573'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('1.94176577147468478609702628834870198693618436686466286501e+23', '1.366700498587062696311699598145443739386716e-3', '1.4207690518018705483123365071820858279329228470863191808681144222545893e+26'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); + T('-1.147088324271573723219620098977412358417e+35', '-6.8420757220714e+1', '1.67652094315655889153791839384123030768903497908861683049e+33'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-3.4261625872519427236184148705326694e+1', '-3.656977023004e+12', '9.3688381570348061450087e-12'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); + T('3.178982122983257629900089663528174e+4', '7.9e+0', '4024.0280037762754808861894475040177215189873417721518987341773'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('8.80250523729885325662597139757429308244444760554011e+17', '-1.60975301309037181131362e+8', '-5468233428.18286068151959437946271099134'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('4.131471973078503249608785603737670333e+10', '1.57484286892879068139527487680388e+13', '0.00262341853564650143896176778348543403497050301463382759425766301168132358128225'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); + T('1.528585895331763840069115e+24', '3.4197765738180730499249314496468094e+15', '446984141.31340333043353548439883'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('-8.082841639227090469245e+1', '3.1691838e+3', '-0.025504489954880781825418266999850245353393514'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); + T('3.2238563984165e+7', '2.8062784587035137467085680744e-5', '1148801320274.5051606528539252884416106410737944273'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('2.0154408498918e+5', '4.30900269497597338542444160749771097706975486766992786564213e+52', '4.677e-48'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); + T('2.48973808166649107472563e+16', '7.773469e+0', '3202866161383664.197703277648627659028421'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('-1.876233464908725268866091887181294e+16', '-1.9027863e-7', '9.8604528785430359093193591270932211357628547146886647228855915138762560987537066038366998963572525196339704569031214908e+22'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); + T('-1.480302016623546957756720617e-17', '4.48675237307651206e+4', '-3.299272822601800274884019740677e-22'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-3.64371087263156062192935582799e+17', '1.04379068944648426323950949332e-13', '-3.4908443900412619376776296200878493436163771937560780289138565225881051748383290309208423232001e+30'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); + T('-2.79462269634029e+10', '9.171536006562322411712371008882911861507797208491e-10', '-30470607042710299834.7432085676428408'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); + T('-1.29784048438874624021e+20', '-7.81658848499248784763163473043552e+32', '1.66036690671453907699103222539981767269959e-13'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('-6.597295693757315e+3', '-4.16593865309750956562336926008730168740186203511235e+29', '1.584e-26'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-1.733446e+6', '-3.773482388092225554199223240068901e+25', '4.5937566993028558008339111973252023492964259032e-20'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); + T('-8.591446397952e+5', '-2.1338854e+4', '40.3'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('-2.5065059377850069547637824452936029353036204106279362560509e+13', '-3.516138995179143018517006915479090094604954604417150237252e+20', '7.1285746701754135756225199719702995705315196231393683774e-8'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-3.4639682847745124412681859833318897e-19', '1.27938322882835038821277277860055181653355112452e+33', '0'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('-8.242064013153929194308e+16', '-5.88334204864119044962e+12', '14009.15320749964947459873313784078010659724212034788068072600022'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('-9.295527689899477623179726383980164313e+35', '-1.20397940136725175038994132464e-10', '7.7206700374968026863491592880531954750229221325124051573418863e+45'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); + T('-1.2993408634661707140025892e+5', '6.4008213695336018769564880218049e+7', '-0.00203'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-3.439e-3', '5.007165479996500833097779388632839571712066842668444465e+42', '-6.8682e-46'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('-4.1075711824676853850298647179142751957575238106153166179795e-7', '6.736010848029373298409137e+17', '-6.097928395809159715274109761887996027382064202781475036225558005982e-25'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('2.10811e+4', '7.039650080732634e+10', '2.994623277895374761215744974527407745291e-7'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); + T('-2.6922407507855523516498813e+4', '3.385600892832e+12', '-7.9520322566241315483997502301377015966728520910279187923444024083e-9'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); + T('-1.06393575735452126749341238926286918765875015683812157908e+56', '1.976746e+3', '-5.38225830407407561463846335979872572226654388999963363568207549174248993042100502543068254596189899966915324477702243990882e+52'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('8.39028921330038762342800857115e+8', '-2.62116597e+7', '-32.009759432747357174899'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); + T('3.32080026608352761689993530772440349217e+15', '6.3e+1', '52711115334659.168522221195360704817336031746031746031746031746031746031746031746031746031746031'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); + T('-1.7436019457469615070996622e+5', '-1.537142139952287588326813384142393964461884060572341585595088e-14', '11343140627197185333.9914956314439278246782386974657129323437'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('6.3068e-2', '-1.62742639346165873727213806313110423996682365e-8', '-3875321.19752891589575249733699092578021103894375685686374009095324996068474580334243824017'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-2.67459600065252213e+9', '6.800463743262528454476856327536849586501415128073680255e-16', '-3.932961194451398323719174571651676019224406263292113633385902e+24'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-2.617285444417e+5', '-4.47954959e+1', '5842.74242718451521819183611270167900965239677143523'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('3.7579e-7', '8.54683111980676470002e+6', '4.396834273806222532435072949873113510325440312678639576e-14'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); + T('2.8477068028058652584776269115790807261989e+34', '-5.226292045160877578498455975011326654e+30', '-5448.8091713944893715908188010500732055243096161167780571703276924743464242079738811209697'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); + T('-6.8507994711488854651893712090287356346646275780892589e+50', '1.4196276232088019525156065222e+26', '-4.8257721666925149810137958222907344779870874725996e+24'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('-2.510875589771772534352701964086446678893315e-19', '-4.660709492566915161266813973541648e-15', '0.00005387324813477898104552680951936241'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); + T('1.841169315225278628077665447866018253191187289462057e-18', '-6.698588447367633798507872595601290230706e+40', '0'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); + T('-4.6030903641073196122984204022259818458530423963791449143596e+58', '-1.193210663988888018144937457943644434e+37', '3.85773485188210377239318464774846598686982825603335346499529370372641562226279596956021e+21'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); + T('-8.192996939019225245336662e+2', '-5.91452878551692232348205067809337786616592105886513524e+48', '1.385232405848062449e-46'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); + T('-9.564651336313779258350769302394654279056857763720314e+26', '-1.6261e+1', '5.8819576510139470256139040049164591839719929670501900252137014943730397884508947789188856773876145378513006580162e+25'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('9.8274874788841622718851425990539444100847489201314e-6', '-7.62193965807557879783269099915712298531636396e+7', '-1.2893683e-13'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('6.837027364882200392820791e+0', '-7.345570989011759048491415001517951174322659655632854666e+52', '-9.30768673410101e-53'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-1.32462495e-2', '-1.65640786003702080437932348185e+29', '8e-32'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-2.825350191927226947579184950855406476572e-2', '8.5862e+4', '-3.2905711396510993775816833417057679492348186625049498031725326687009387156134261955e-7'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); + T('4.616934e+4', '3.87306e+1', '1192.063639602794689470341280537869281653266409505662189586528481355827175411689981564964136884'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); + T('-2.381057185151378125175009249137791842202222570377464e+19', '7.3884865773725849186751872373034854117109498605406211356575e+58', '-3.22265887637046283780231e-40'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); + T('-1.0255381436149549830635312526039032986110848719e+45', '3.0309856974347856e-14', '-3.383513635458256279767067899326593394103171254321104183121206634014392150695151267856582775195529055027720502797324656777805811e+58'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); + T('-2.739259011988857806059105488724082242303111e-15', '-5e+0', '5.4785180239777156121182109774482e-16'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); + T('-3.32223e+1', '-1.1615523533912084077188609829035381401727064677018345282e+46', '2.860163806048507803780968392110539535051052434589317e-45'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); + T('-9.9958751104048399016235136218418342519215227584053e+14', '-4.174284831598177548656417478e+27', '2.3946317785357e-13'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); + T('-2.27599757196244338071018183231562e+32', '7.391713275268524384498161147662130450883e+29', '-307.912047884427915336373420680933095'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-5.16676622139299374486206443403294147387872878649e+21', '1.04254236544521519508428636588e+29', '-4.95592926737949755093336377307446188075e-8'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('5.99385491814645422256534224820678004143e+0', '-4.21892137854353683477642038221794837752673974e-11', '-142070789672.20913091969810090056421616210883875959308692799992255364155640025073556656333631768328163'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('-1.055898189e-20', '-2e-13', '5.27949e-8'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); + T('-1.82437065579e+11', '-1.0528795499040785286656252424780016895382e+34', '1.732743936337454125516261366910477e-23'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); + T('-1.16341688413351799246810589199e+27', '-1.47959980238064534054851281040415394460426702558145e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); + T('-8.850870779843568233557260439e+27', '1.100898843176644673331602771778e-19', '-8.03967670118025745712004174403591219650847318239363008235259080536190121377456911295622498573057174389026268724112803081717056822402184260674e+46'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('-2.0486838175030549398886e+2', '-5.8397519e+6', '0.00003508169272573129245248586673690709360443891460525917205489500333053532633809323303615005'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('5e+0', '1.03893970491266913107075705230859813676241308906901442e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); + T('2.6645825683538625099506046e+13', '-2.475035960146816312944169309774717e+26', '-1.07658337545762466747712540367293153183665e-13'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('5.101e+3', '2.9362813207424995171954481770316312774011520265112971721437e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); + T('3.09522146247e+3', '-6.322338844352208994e+15', '-4.8956905643154253172146449654e-13'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); + T('2.45456642336136333470644201140274e+21', '-1.7665776756829023068419137351023e+25', '-0.0001389447210359718051750387241676849475724303613868783563044569855208379238649595959961008410614'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); + T('-3.770212335285972630720190882176634746e-12', '-2.5499445673108723e+12', '1.4785467823961262573670322463361037790776919446498014897730298449781287869e-24'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('2.476448373899395757500081721167316e+11', '-1.41441100788459721407617214e+26', '-1.75086899e-15'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-5.123605791097145953620816077425138174533e+39', '-5.161957851055049432560687119883616458e+37', '99.2570249299872775079007193761502534993170993206103026117202574170143402576775679'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); + T('-1.07e+0', '3.166e+2', '-0.003379658875552747946936197094125078963992419456727732154137713202779532'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('4.380624760388172502727543101266542714218799e+8', '2.8539859748769352e+16', '1.534914606781508960228225419e-8'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('1.03185376622492461699185461110221149187354619102758912e+53', '-4.66836554686682e-7', '-2.210310559158022020717995733195170371794879219725235714169537138093590458084859218332274602123716755188973336293895724984370216596797796872773e+59'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('1.132e-3', '-3.5360931010016902090684381186243942579e-7', '-3201.2731782410695014796187705458888870997472249522934834804647189847'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); + T('1.64791690525897130868814615366641349762056564001558815470838e+55', '2.5065703696943209e-2', '6.5743891541330900063925297936228288417226716279853376946771667294962044558207808191203050254224291464422781241518640384073597991915651571326355242e+56'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); + T('3.38184385415090507322657124511095e-13', '-2.98893892749152424348802013045240519e+3', '-1.131452979197914706533597111967529905515408699499510540200224536601681114519213e-16'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('-6.7086552499653551678849527015770387733867008e+7', '-1.125934173e+0', '59583014.805'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-6.1477060605422141925e+10', '-4.0751487010160187e-17', '1.508584474232673805534982137603051061e+27'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-4.92866456197345918527960029e+8', '3.5253054471508670401874085606697278355872e+26', '-1.3980815665084509079703284821353458681071469930662035e-18'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); + T('9.372943232737349682249017198e+25', '-4.76297903763151442984327875778914124315092641313e-7', '-1.9678741305983641625380627038909928e+32'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('3.11995595606361445319764411442410560063419352229631157696933e+33', '1.926611002e+9', '1.6194010896983419454165683802235992840210062925e+24'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('-4.2333e+0', '-1.93228543824537736e+8', '0'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); + T('-2.077988683939533026878799694958868422e-15', '1.2559679525799138506768697356e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); + T('5.472628118790725072160395462e-17', '1.8394216999448616162205991250928342500257585707598767096444e+15', '1e-21'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); + T('1.97183964834324084618715708767e-2', '-1.183563978426472559556348202307999166603220724e-14', '-1666018638861.2188846148118824778364798100387831767130831918354560583075248793369'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-6.7156819595674617902425234439062627646759819327223660222549e+5', '-1.160558974192102038079731367753229776383743281088203e+20', '5.78659258935327965530055724540823528e-15'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); + T('-2.6e+0', '1.14523521140958407390592958802743091726541547863213250616e+7', '-2.2702759870610816491292081733743403311092671441137767872727411929814872668259859876363e-7'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-9.968928e-7', '-3.55431167717573926633549e+11', '2.804742213243753373062551581632669575e-18'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('2.798466628558250019024201982935823835137846503e+26', '-4.36899493141410715286514e-19', '-6.40528696528488259803927528587083864202698192127528510210166236949762009885690496529835355328787796e+44'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); + T('-1.56429950533148611685100071324288826962358389632991125386e-2', '3.0098625788874470832161522560211195790085e-13', '-51972456028.5309501512399451533455117001582657337602595605495152788391995'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); + T('4.6445e+4', '-1.45990335057432948297074977166147e+20', '-3.181374984976123624719804976138747439984032990177319139190081091e-16'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); + T('0e+0', '-7.57155021016208371740392308452529742790199336774116e+30', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); + T('1.9292073856068758133674002207184838e+32', '3.2470573e+7', '5.94140234484582644527831467808863058868717838764348260808332516953119367496224966525844802e+24'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); + T('-4.4795295995040994e+16', '-7e+0', '6399327999291570.571428571428'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1.39559941490777564118e-6', '-2.00265847326725076969527530693283569078724707221943147622657e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); + T('-6.1738668683414668401092427633498363323780007724289657279e+7', '7.46830173074093955134587258638713582663298469146193e-10', '-82667614284097086'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); + T('-2.325747270546053710033134939965e+24', '1.036596847064418906290279664243163e-18', '-2.24363722225514453456879694388701211580798954492266838358381966735507418695200517650609572668956541758719298704712848818e+42'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); + T('-2.434716159901557923356094432e+27', '-1.85155198684344169731137917473241739e+35', '1.31495965395619527634872320165e-8'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-4.3846999123997195596859391184949084199761e+29', '2.1037378011534457793532224037934723483879155585068e+37', '-2.084242584791535688102334572415166823167e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('-4.1012281e+7', '1e+0', '-41012281'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); + T('-3.608701616354768017527895281763e+20', '-8.15472e+3', '44252918755699374.31975463635493309396276021739556968234348'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('8.96088778843661285914373662533075878804804583072488390819e+56', '3.72840970562522716336735003789750605891481473821380208269537e+42', '240340748360270.058243369991733585169'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); + T('1e+0', '4.51726314080705494668678e-2', '22.137297935256874186672219947578865542153'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('3.69177884233796707301171945975002982486751e+33', '-3.1390052719070526030604276539e+26', '-11760983.2496238074'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-7.2911813676489950804782754070153e+1', '1.64038534404438707301917378448255735703029415200439e+50', '-5e-49'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('1.339063201286e-16', '2.58293063641981858147867855140764163e+8', '5.18427859581264555255972411406683090150699649846246e-25'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-2.0997e+0', '5.8e+0', '-0.36201724137931034482758620689655172413793103448275862068965517241379310344827586206896551724'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); + T('-2.6270045091364068731963965317668854758926e+27', '3.34195446e-14', '-7.860683143888223040586844297593706515954738653141e+40'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); + T('-8.62524623e+4', '2.364385282468933993634706874696742382953147792992e+48', '-1e-31'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); + T('1.922984371006168736678235016756651363e-19', '-2.83456675733525280335e-19', '-0.67840504'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('3.563221766144e+6', '1.17682e-11', '302783923297020784.82690640879658741354'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); + T('3.8802320399344e-3', '-1.883103193470263e+3', '-0.0000020605519938520961541989864313495017497'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); + T('-2.227445290806357210625840212359403e+33', '-5.9090748325665548323697e+12', '376953305537829156704.044107421265802945219782803282653266957637612711648862'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); + T('-9.478840250917220454747445718439604350090832164775367e+3', '8.698053848362551e+15', '-1.08976564369070399791134258028484e-12'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('-2.8706196102300752993244664126788576654842903476676826546e-14', '6.4971552856568461156504599568485694629707821694353e+17', '-4.41827151117546800533950454713043927601087421e-32'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-6.319964350152839916299595580927374522444058339e+2', '-2.64689600194851141564550615e-2', '23876.889554785683795430233754863239468065874797458344226457085'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); + T('-6.94086547093359744759775863049089443447844819786157444098e+15', '-6.772506087445494677489870991888473795e+6', '1024859244.320237420714894303442354821008569676223287543'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); + T('-2.33778299518251243651672e+17', '6.52328049745753203e+16', '-3.5837535977391594765534423031263323796886751901795937247777825'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('7.7623006117584625649538850225908879123607072045731908e+47', '2.131454276099432967515442679307846435424345669872741468e+54', '3.641786126401685458135155607358253667303753899779414421751e-7'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('3.1927516331890049645109303512747e+12', '-5.291380601653877878486797997e-17', '-6.03387258174374401655312821986927987582709138330787348064e+28'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); + T('-4.3050953153833046369747450777055925176e+20', '1.1593521248828129299763848370434825328311624159e+0', '-371336302662874126357.3731679805598750101318048489679393050959520469174733958559116746'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); + T('6.472461969778376536035575514e+18', '-7.373e+2', '-8778600257396414.6697891977675301776753017767530177675301776753017767530177675301776753017767530177676'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('2.24386383283259431854801613845e+11', '-1.64591252477114491167023659553694428182567271511443174764e+19', '-1.3632947067734302885180051880234176510177446939229121866972431565e-8'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('7.701421e+5', '-5.328049264e+1', '-14454.485344263138179572207499018349917419232030584317810466851569261316049272925791776'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('2e+0', '1.11619734175923103617821885323e+2', '0.017917978525623556917048553290567159968240292293'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); + T('3.335227693371498724210721095549003172639e+37', '2.519779376380890283541613854411256133e+2', '1.323618934512362296969311570540004089366698452248304997459977762621381392610839983194581974448e+35'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('-8.2034346003860483e+8', '5.97734590961091611644951317196450684971281766e+8', '-1.37242092467759410016133874325904151090224477'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); + T('4.383795456267658003368742480708788050320201697533e+25', '1.27599320141819368527136961645e+7', '3435594681378646313.386029937'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('1.0663693443559747154498197511057191036977786984031126e+9', '2.137690935637784731792281e-8', '49884168313499495.957995301438081176868409594428328729161790097972560815025899'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-2.5954644732393251427556661047954865097196e+6', '8.94316591102e-1', '-2902176.36468213878138607399389519651921820374127414932235114574668578762154'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-2.4460338813368045e-14', '-2.30060100563041292734e+9', '1.063215166537119683850198426446423763056666282668736147249195e-23'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-2.085408775652955533992611775265132764e+27', '-1.03734171017804781196616942456032865e+21', '2010339.26929923508598166281122719665716417682354550312432111861056'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); + T('2.2812e+3', '1.8e-17', '126733333333333333333.333333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-1.1941893090812467237205837102655629290327693093206661722e+27', '-3.007667390443100768153762325942e+23', '3970.4832817478341729541'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); + T('-1.451096475314355e+11', '-2.842651296597428922871581313773483473246203287142540885e+49', '5.104729085312980013504348524670312534735969530969413764945e-39'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); + T('-1.93306769927e+2', '-3.7875274746099150677119085503890525172214364662560238e+0', '51.03772084106374591472101865472280084184498490023'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('2.567668008558950331923618839869163071492e+16', '1.22704393078683969008e+4', '2092564042847.624770025016076774486914902667934494382'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); + T('-7.8290296e+1', '2.060802496254917618480650272974079e+31', '-3.79901985475446692493975191032e-30'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('-7.241388424659274e+7', '3.64340144411138971044915337158194266796511092768186e+46', '-1.98753515e-39'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); + T('-1.252970090094676733024915840585797801524115856879594636151e-3', '-1.96417633845027664170996827332885514436291891e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-4.9165732284210953881992786006735147785863930531931834731e+2', '1.1054041200516669445635945374469136414958513654255611868262e+32', '-4.447760904121918029520179772115058244822904147134477675938243925901035e-30'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-4.771189988e+9', '-6.91299203676923276838686997383079770032024476863302e+18', '0'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); + T('-1.418818101555744076041680063386509463305215e+11', '-2.434204806919664765677473467404091128071896514285407289e+43', '5.8286718419193757177665889023525608566091337694213024542585159e-33'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); + T('6.19772e+2', '6.6554434580304499543493945147e+9', '9.312257010495429288814278909016558152501675794594619663e-8'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); + T('-2.54755724281e+11', '-4.509102422405437459447209951680532146e+36', '5.649810104448622201842984598015224369154494384e-26'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); + T('2.06e+1', '2.3e-17', '895652173913043478.26086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); + T('9.3378534497433169089840956174329076805072e+40', '-1.165305163604261463e-8', '-8.01322584108488442258857292049398253673344741686087923293108609289045442882935216e+48'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); + T('1.03156e+1', '-1.806e+0', '-5.711849390919'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); + T('1.026216765422282122857015285384426588659492743264435122e+38', '-2.9367e+2', '-3.494455563803868705884207734478927328836764883251388027377668811931760138931453672489529063234242517111043007457350086e+35'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('3.4333084480440073e+4', '-1.5007409672816427894791736741559280675121952e+23', '-2.287742203948032294950234097261627090622812e-19'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); + T('7.611290444757686725409555118538913880791248834354694099e-20', '3.05612e+6', '2.4905077172223887561e-26'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); + T('-4.867846147504492163356591296025380497118545e+12', '3.1591106598286187017164466940749639009410821808141774185686e+54', '-1.54089130507652812508139410952477653472655955902198252e-42'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-7.22389890032951929622130657135550558e+35', '-1.790129005921703733489095605888e+14', '4.0354068765061262788700751829235864691220253e+21'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); + T('-2.419660306703718705221304462202646563709e+13', '-2.886954712625003679288945903363117e-17', '8.381358724202531588637527878906073340123629889296798148077133200101643812605387702349267947702885704674220681301140675018662297329e+29'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('8.594037006054988222214634606869e-16', '1.49572043553e+5', '5.7457508782446635869790486e-21'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('-7.61558972778941844313837208e-14', '-6.668304659667249764494426352460214954e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('4.5268069455019779699703165452e-5', '-1.248309125682906023471317531592710811193509e+5', '-3.626350919308966105614e-10'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('-9.63388594189e-9', '-3.44326078074231256136088231e-16', '27978961.0934234454720924071'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); + T('-7.805746370509002754816876016901e+22', '1.46212572783957148655689e+16', '-5338628.6978498958611'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); + T('1.3002187274579276220236551440051201715160580954e+7', '-6.732610466921588678579537665011056061958240950695061575e-8', '-193122524145146.0634961359'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('6.74e+1', '-6.129934015162884178884109223830016118548182299338688637e-15', '-10995224391205628.9733800570760878468256941295607114376650304969159553390392160724523'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); + T('1.3039934895940597038720258637834e-6', '-4e+0', '-3.259983723985149259680064659458e-7'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); + T('-9.93617312617723091329242396241874992e+25', '-1.137770003094008544700705447212e+21', '87330.243363396635485012766500806649145754612598809840164051738672041'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); + T('3.748586386693786355e+7', '9.958946687501428806663908114124313441e+36', '3.76403901368233782564608598328300953e-30'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('-1.37173999625143922621220206e+20', '8.482538739549862861187373e+19', '-1.61713378313935'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('-9.80330108234652944668092642844595838209383072624e+8', '1.2035962e-7', '-8145008336140085.3929922'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('8.82525807878e+11', '-4.01956964028937251798011791712477184451480520373296930176e-7', '-2195572876837795388.518407615585317'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); + T('2.717811832453550934e+11', '6.33109033088671696038824807379475780232282e+29', '4.292802172154288129760309517506757508349e-19'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('3.5435685185374257067408e-12', '-2.406774391297e+12', '-1.4723309884595424894432142396164316553233259819777483178948320252362344869676e-24'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('2.3553e-2', '4.2058837490523369145172742434125536e+34', '0'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('1.197996303657042339814794e+24', '1.8840178058646547298362779e+24', '0.6'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); + T('-1e+0', '-8.518135473048e+12', '0'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); + T('-9.2476258287508948769849911825604e+30', '-3.59179774375776611810787561600558390217353607056e+47', '2.5e-17'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); + T('-1.15838265382926020882486075537597e+18', '-3.035820487300015808291852943955864894470533542614e+47', '3.81571525284585352772029922016620355476139131208055e-30'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); + T('-6.41966728868477146382390929334918998766693410069e+47', '2.037427223666932865191e+6', '-3.1508694956626448508186544515625341736856563329256024107333593788787339757e+41'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); + T('4.3000534139367009431196546172162560687918e-3', '2.4338788407485078493524444811559606216885419006853e+11', '1.7667491667803296748936306144689339926467136514110846e-14'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); + T('3.254769352816791766525e+21', '-1e+0', '-3.254769352816791766525e+21'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('4.11e+0', '2.00145e+3', '0.00205351120437682680056958704938919283519448399910065202728022183916660421194633890429438656973694'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); + T('3.99594657156145209e-14', '5.148241288760777922453255340965742473874108e-20', '776177.01802071281449507678418605475772964908173366724388048774815402612045478942351604235149'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('1.23840811876701293037728869684365282191e+11', '-1.875021965657457379046576706e+27', '-6.60476592515e-17'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('7.4785828075118405417362e-12', '-5.05793e+2', '-1.47858566795345932856646889143e-14'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); + T('-1.2276291520190505515628764326700617100447994041482458897e+57', '1.29e+1', '-9.5165050544112445857587320362020287600372046833197355790697674418604651162790697674418604651162790698e+55'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('-2.48261876e+5', '-1.9587291103900309275815669e+10', '0.00001267464064750459452327777539965371036412259896'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('-8.5405559e+1', '2.362777300800422974614550076641384551314945e+31', '0'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); + T('-2.4030311589271287499127806755807596113804917662488905e+19', '-2.216820899672964064774e+7', '1083998783700.4041715431719535013282249496709578696667143872009229778286930308283359689'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('-8.7556036328932664854e+8', '-3.48774255268939905564981478688654e-15', '2.5103927542306179058032934854881018447871662351646745367082834366e+23'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('6.19473091325856079485580014558544091e+4', '2.29472465104391503795785306551407117665646062694673181e+53', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('4.539272362927260859e+16', '2.60373683872605470938e+1', '1743368337158150.2614291257943325626704246865824'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); + T('-2.5190661882350518604315e+5', '2.9764919777064e+10', '-0.000008463205031636512477643734494'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-3.93143330771236e-10', '8.772022817e+7', '-4.48178645875535460317761277888842044036830963477e-18'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('-1.18566127366e+12', '-1.08843733304579336031580771423856202648296487903935109624441e-10', '1.0893243346790973938793245898039903048599432065740889354914100157570251852e+22'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('-2.55599076618851597975039483709131607328159951532692e+2', '-1.2989572165915307113796613794225e+13', '1.96772513639475107240111480235074502e-11'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-8.725616078967545222621552525254167e-3', '-1.02e+1', '0.000855452556761524041433485541691585'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('1.5195666046173485833072613347969721382357841601293385e+38', '4.6051251677271179984907554502510250626476906157135e+49', '3.299729213152610349460152240524107596156618183660058195820552669914607216218e-12'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); + T('-6.52400628645105164569398974664810171e+34', '-1.35565e+6', '4.8124562287102509096698924845263170508612104894331132666986316527127208350237893261535056983734739792719e+28'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); + T('2.8341010111836986663e+19', '-2.0494623300535500796478588955931843257998422206822974459256e-16', '-1.382850989561563146987853054731684426e+35'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); + T('-1.07291096621168546094216412723781495611010329718735086789e+4', '-6e+0', '1788.18494368614243490360687872969159351683882864558477981666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); + T('2.200160592738870422e-10', '-1.55104286712903207138035554666485613833638793196844989766e+24', '-1.4185040525742206361824038134332655939326592620889107896510832e-34'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('9.43221843161602347089284e+24', '2.03822495757641152508305608519546e+13', '462766310291.459409510667241425206757049151840375346446691394508861532727110987023088301062173273666587212'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); + T('2.54594354301812923875761e+12', '-4.362128518310639171207137240232835e+15', '-0.000583647073288001093147516029271358139773488089544323531387977861027019365915069497919'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); + T('-1.312535887571796e+15', '-2.50694553471368697247940992877537713716e+14', '5.23559793939319862284452444041271965995044450881003999889988936858474788592653648849'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('9.160537898038173611e-19', '-1.749250692921071105580953085943320435133449e+12', '-5.23684e-31'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); + T('8.74304e+2', '1.4958394303332805315e-5', '58449054.24141685323587723706446843667064082'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); + T('1.149690754540849801970244e+9', '5.33424364724494e-15', '2.15530228945325456689319460071246740231652e+23'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('1.52036398023914987678544731738470919315e-7', '2.306213569985097478851e+10', '6.5924682779876900844839345632e-18'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); + T('1.24378069e+8', '4.1673915118468168582295976845979854465864e+40', '2.98455445442131606187163203923e-33'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('-1.6e-20', '-3.16903991336982e+11', '5.0488477385525548378691228e-32'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('-3.681565417829715699e-20', '3.761610697809957544165820956356128399105789e-19', '-0.097872047736709040540219186410191636447173138565591841465010993285099605'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); + T('3.8675649644779855400200074863587720076e+22', '1.99925315757085184622870398543060944556080078370112389e+8', '193450486739617.531334401520336741154357027245584052202806451498498235563011278081404636200650538677763'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); + T('2.654941913274616980869188491528784899593179588052455361023e-20', '9.23775143365037698062e+21', '0'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('0e+0', '-3.28580415207978749946369316279805006e+3', '0'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('-2.871227051513980569774531668338334723925740635186427e-20', '2.5088319275522727744893526485872368581813234104846e+31', '-1.14444774876381475366e-51'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); + T('-1.84257e+1', '-2.56683117883903468757687430620012114253414142173771695171507e+7', '7.1783840526410680753720705367048383099589747041685093e-7'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('-7.794889203370073018e+18', '-3.1769260301e+10', '245359480.501493248097391387860000272406090605'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); + T('2.317341053773726223383054090558480273585529903382267e+44', '4.155777340790218902e+10', '5.576191561151072222997412743341318687918759951904311323282926966690953278318632e+33'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('1.10010154926e-1', '-3.6072763850557643733815756e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('1.350288081958066e+0', '-4.847410911095431834554e+4', '-0.0000278558617522467065325'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); + T('-6.50042358522661157072091988416306306478e+31', '3.8333036059305455577020624e+4', '-1.69577582510546145739230671318464135140175469540459227358356058957486937758932706134205317074837248473868026672e+27'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('1.36e+0', '-2.8327912345373157885262e+22', '-4.80091855488295776794718751080593163920873042987e-23'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); + T('-6.195389792e+4', '3.36473799030872522e-2', '-1841269.605492091714387883371927994768076187706688814118775174048438175199893538725'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('4.625556775717785777112e-10', '-4e+0', '-1.156389193929446444278e-10'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); + T('7.300501550784771100022114775062283197124984e-6', '-1.789830297010992867212295806931569871743997584e+32', '-4.07887918925977e-38'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-3.630177946103978927371470378624973706194e+18', '1.8591318200280351885339835717703760834471130467668e+26', '-1.95261998476753351355327157301832545842513128559393991870081179845678161296140061558e-8'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); + T('2.2815156001968212792834895584154412256126281397520368758312e+24', '-2.1937512878531702705686440267359115e+24', '-1.0400065006592147251571817170169174462321371146353893813957806545260735065113'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); + T('3.4571934059069013019435589203810314871094225e+43', '-9.39763294687833054779228671932e+17', '-3.678791697280854609444242913844209080201512252076146691809061562791421606637866159526232743228536840427e+25'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); + T('1.9461010869164739226626405589006235e+34', '2.5792576e+7', '7.545198614192215320651339978219405072219230836035919793354490842636268668937914537888732013428980494232138736355763768e+26'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); + T('-6.6416115718502371737689145e+6', '3.375e+3', '-1967.88491017784805149'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); + T('1.744750593613404456767141715737693e-16', '1.4317299845179991126146202592924377598413825069454e+49', '1.2186310355e-65'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('-5.80010634931161813529081064738976468762508e+3', '6.6789535858620946e+16', '-8.68415429864521491901927618746e-14'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-1.48433766042292013471718e+6', '1.7261491566234060946272407869824616924844e+30', '-8.59912746e-25'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('-6.2058842273334585415823303391242318e+7', '9.17574511064245210813813e+23', '-6.7633572560070222e-17'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-2.19423732087131489042819354467114757746220503577701405316451e+59', '6.933790312393479218092118224313838277164113700149112282e+7', '-3.164556789306604801927484142650372485751796661611641615170438271529300481232738799146833007689003733995926792449e+51'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); + T('-4.8596654346261470129468786343752035258038945e+18', '-3.989419854e+3', '1218138379131390.1183956153827210595532880943295171'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); + T('3.4657710555410879564e+10', '-2.1345630067049445832400422409103197511309714885e+38', '-1.62364429846045e-28'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); + T('1.074350964760132842392393885269756423775654e-17', '3.8e+0', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); + T('-1.159851247251664059745405009972046978744561e+42', '-4.94451805051793105145116805624176249e+29', '2345731647455.855346481131417078370805922988147116122854145123521569271033584294263583791793312855'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); + T('1.961616996619820680858813761e+16', '-3.1514041869168032547885639497868503814968209264995e+49', '0'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); + T('4.3936700221156577588082649637896333973205815e+43', '1.5106078132527191296858e+14', '2.90854448359761854896552174179015456397898024594434e+29'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('7.135077743563996988982814477474349093994352e+10', '1.7604916959107301173018751802944135e+25', '4.05288917870919507623436342605608693431099049e-15'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('-1.295217838986670615091372685856015513e-20', '-2.918095994529419274843162797351552797775993276731e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); + T('2.22187462704e-4', '7.86941305509437913938e+5', '2.823431190465e-10'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); + T('-3.148073729755592254985341931849309741372764e+40', '-2.4290723320660894611308575913750920007e+35', '129599.83480928061645442210620015337560182637567543129937446862963952123742581301832679'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-7.01854724651270991249345189104908549916164874716164064e+53', '-1.2584514942472849577e-4', '5.5771297333241273281058084105457199649806654778426853661423848744535491362717825111677770601639704295780527058262131220382137e+57'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); + T('5.847271126e-10', '-2.5750707057007324018874e+22', '-2.27072255261e-32'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-9.782927912636599178664895684986235898e-6', '-3.12022627850579506500901013e+3', '3.1353e-9'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); + T('2.928167887475868128827868066289485339e+34', '4.83877541238771516830441e+19', '605146475692896.5855371210420533689019126949293544682368286'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-6.9919462282490640422034163977e-20', '-1.30056067947581180906900911088564748e-3', '5.37610150651882922153766497829221817e-17'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); + T('-6.7567689e+2', '-2e+0', '337.838445'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); + T('2.12e-7', '3.99264548449252e+8', '5.30976268299828737896772492413724556977569206391730725088324617023e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); + T('-5.32496920242441489746306635603059127214728912512168616119671e+26', '-1.08095512087628410462272104218817e+9', '492617047607646283.466007328094459676181866858371136511364260482766574756050547882148881168'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); + T('-4.71159004872816222667823e-17', '2.9301378836492897884560643409947731074169831528192e+25', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); + T('-2.9535897157268262524204891318916154804337780434e+24', '-2.099e-8', '1.407141360517782873949732792706820143131861859647451167222486e+32'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('-6.4833353011341258257553610498107e-4', '2.6961800003581528262033292178497221e+28', '-2.404637413033587572151384322827817243981923150712234205402e-32'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('-2e+0', '-1.4e+0', '1.4285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-2.720194684498461931305631e+4', '-1.960728402820127301397000736296392535626869e+23', '1.3873388485e-19'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('0e+0', '1.3933189499878001906261552006009387127468739620286e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); + T('3.29167037734866404379510390582818275817804169e+32', '-1.4685615144961546168793728623179837038125e+40', '-2.2414249215008168330659302143750615e-8'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-1.25012467890959337e+8', '2.61957520399140798433461843145457812e+31', '-4.772241991773310768424996904454751022445500981091884e-24'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); + T('1.49263050430373352175298534280392168767597579769645626e-9', '-2.043053549532317010690722944980754323290927e+5', '-7.3058804780002811179458878318088809200737776290170762835632616848636699e-15'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('1.179255029471894751e+10', '-8.4202818901272635990166663181340663088525402751041457346e+55', '0'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); + T('-3.7200780014e-1', '-3e+0', '1'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('1.16010205734992858198565515677547e+2', '2.66644688384e+6', '0.000043507412968948547888493129'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.99151e+2', '7.244158484786415e-20', '-2.749125387279150884816957099156235506079390332466748425115372177335552422e+21'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('-2.124112397746040612627101685e+2', '2.0374399781278993725e+8', '-0.00000104253986401983735798313'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('3.4263939461575248036041477751408871e-13', '-2.0377871463601904784953561458383001066141197717593893833106e-16', '-1681.42877546244477509059184282327'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); + T('2.77535711945304662910934e+20', '1.548e+3', '179286635623581823.5858746770025839793281653746770025839793281653746770025839793281653746770025839793'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('2.4582922047426939737395996833756540989840753092e-4', '7.499088769422419467069765488713e+21', '3.2781212228963011382416739307027640435997681965827588575961e-26'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); + T('3.9404778505315565430772478752e+1', '1.22012817194484965451308e+23', '3.22956058317262419952561912775635911e-22'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); + T('-1.885706272633402829872077358804e-8', '-2.3397684361151447e+2', '8.05937136139998531082149391787976591426841084103e-11'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('3.23998602e+1', '-1.96759690448480483187e+17', '-1.65e-16'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); + T('2.5394625074047308129076629659521032218171827525085e+4', '1.486963018731560141565052553769728153865855384388e-20', '1.707818200866216222275005139686826483208741748745e+24'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('1.04e+1', '5.6174581978e+10', '1.851371142213931652018460882261769912409120161730809916094753e-10'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); + T('-2.278216739851811573090234549305900165857725808543254e-16', '-6.17167696950635642700968026421152025437639884e+28', '0'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); + T('-2.600656256062268757599653130269627818785956358e+39', '4.174826974074446906113e+9', '-6.229374947063118665231142334365121752480404402846343520954031862574189964917604453799515078405526478911989499e+29'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-1.4252728700283e+2', '-3.6812771216831823241655821825104974e+34', '3.87168046011332498780205469646774508427940968e-33'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-1.2011385394562689623080701219787926535106034462957977874e+55', '1.484418621396725486414923462648023356077945356450275144e+30', '-8.09164289737950455063845272323937414798239250266548200102709e+24'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-2.93880926075357614753407716e-16', '-1.3791e+3', '2.13097e-19'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); + T('-1.42160165400037360222355577402e+28', '-1.4543062639302850856563883443167927305675194942132e+50', '9.775118826473821468681927e-23'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('2.85461906793193446689501385665585837e+17', '-4.4696221966448e-13', '-6.38671221490443677597572001439233935527910546999530624152713656683821030982340369428e+29'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); + T('1.03198543240961786590361813596555e+16', '2.176179752393469927128827e-20', '4.7421883751771393857836343896161033683171195970822244332027946250906796856e+35'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('3.14762519071979379352084610662679e+19', '5.8884352287892950725129449989034436487279404963e-6', '5.345435703072118750380329048113484942063099851778247821469541821931979113704398843484733870677150619708e+24'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('1.0291050554e+5', '4.086731299779289549386928860705649e+0', '25181.61777495815'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('3.8693794428021087689923855170698458966201975691706399e+44', '-3.70930188348821084200721687483e+0', '-1.0431557107892662833674573194914702357747142747655923e+44'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); + T('9.87581802319693703161109938e+4', '-5.2021670380355478531094701154172344261990003692e+39', '-0.001'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-2.817804158984e+8', '3.084936503603324417755852751488885700233098566271e+48', '-9.13407507e-41'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-5.641066606610146198560673010618169464452985470536036789e+34', '2.3760125293215658408844704320606672774112738e+33', '-23.741737625520294620465709755518390073824686461685402204481871579935'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); + T('-6.679046e+0', '1.845106957279212340082392243007094841333782209e+39', '0'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-5.825921e-20', '-1.08640948057977360856019e+19', '0'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); + T('-4.42375562261132346786e-13', '2.01869003477516067451376981263436819679957126e+34', '-1e-15'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('1.94e+2', '-1.17418924948163522529348163692664e+30', '-1.65220385117e-28'); + BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); + T('-5.86326961013848701029433519755881197676016532174223776e+42', '-9.36010712113617e-3', '6.2641052439438088020441068124196496300925688441e+44'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('6.579537068e+4', '3.1587324304561876881013030138816973044900876e+33', '2.0829675234789595208208366200884704209340477362716667791623891427e-29'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); + T('-5.14323085660282445564529658412430694242126760047e-9', '-4.49408047569390365813647218807966e-9', '1.14444565121159505532245584477706636827450865713267892528524185238'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); + T('-7.96217993335335361547713357267e+29', '-2.140330649878680730191385354270339218534e-10', '3.72007004329198845830956963875400703051886347888092524e+39'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('2.059721431717707761973659e-9', '-2.8585e-12', '-720.56023498957766729881371348609410529998250830855344'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); + T('-1.09934730228746907e+6', '5.481364942566032350401384950650899375860805155719017e+41', '-2.005608664641882790654622324670406476893754032265834e-36'); + BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); + T('4.0936284699e+4', '1.03e+1', '3974.3965727184466019417475728155339805825'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('-2.13849871809837058001616451167138082883528869852e+26', '7.75656516657454818872746775810557e+25', '-2.7570176646150369356243789814970779668441179902219001674396388575493'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-4.118768662320701179933717900613e+13', '-6.2349170094235901589819084845537198250007593988899063598992e+14', '0.0660597190964290942784247690235913512580465933587631145646'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); + T('-4.034852421353510640903454052e-15', '8.51892268936e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); + T('-1.4572002514374007496208725914930149825676539748187990178e+3', '-4.006366399870811657901101783455228e+5', '0.003637211642660514734295607118454112262186510851305420710240982867898231241659230245572061692282'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); + T('6.8966942690317593877e+19', '-1.2038112368632337938726e+2', '-572904958671298709.96464906515014'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('-8.461437355e+3', '-3.891573761e-10', '21742970516960.477573741149499954190897835072539435800764717922045831164704473913221042503'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-1.50532941108627429718843e-2', '-6.3348978698e+10', '2.376248903e-13'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); + T('3.526090095588159e+1', '4.423395682817525543658e+18', '7.971455299115771409943907878373597762273973108373522595538235592994381528e-18'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); + T('5.2556798e+7', '-4.1804308609669802919004377071909151694775457e+27', '-1.2572100758973687783532893770608320867050188431514032311205215076822741e-20'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); + T('-3.24409e+5', '3.1826471914339344874509e+17', '-1.01930556699198021827845323704637655861586721e-12'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-2.070769093876e+12', '1.9236527717904300858266851920321362066341902001832626806e+17', '-0.000010764775869340713405544222410067272568269777366642283883872171552795978650799'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); + T('-1.2229148430910559578484e+13', '-3.101e+1', '394361445692.05287257284746855852950661077071912286359238955175749758142534666237'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('-2.359651921343667745965717771698188e+21', '2.53784e+1', '-92978750486384789662.300136009290893'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('1.646e+1', '-2.4145209e+4', '-0.00068170873981667'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); + T('1.999922587160297158837485889910674907231e+39', '1.042614411234913959613421862825633522199399109557092e+17', '1.91818045636978040252560846179469898304705685512372559740187879e+22'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); + T('-6.33e+1', '-4.7579684118790087075298295215414064690307114979377159909e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('4.21500110663901595e-7', '-1.946030919510743179539e+8', '-2.165947654983159575368935904e-15'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); + T('6.947422981451529252198084061668065785994211907670223e-9', '-1.5993103821004138529969973e-14', '-434401.168103924076311096604656699461539894877857160570581829666267958815429'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); + T('-1.25034047e+2', '-7.924873940601202214696320851303584878597e-1', '157.774177781450718558168102555891953783016311458964491658950739843440454'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); + T('-8.4498406847279762666441234862568898037259764190343267277e+49', '-4.120141456228256185267e+8', '2.0508617906685421282769358786879755733117466124413836514119965414326974436026195e+41'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); + T('3.96728163581235985e+11', '-4.0655871655362802118515147006216756066e-12', '-9.7582009050076456671844243444612881081088865779908045266507866486168759958860802512339e+22'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); + T('8.377935228073938470886902025082439214729937031686449147339e-15', '1.8705596758166772084e+5', '1e-11'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); + T('7.887362755738721033e+1', '4.222385514500917079172510078961227368351950079151224533e+38', '0'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); + T('-4.13697936763e+3', '-2.66192326476939722127533674547323772698922147813872741111e+20', '1.5541317146076286657694636800845922614912948050453986276342221e-17'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('1.78388991432008918449923502557602149e+35', '-6.8880812462399102542899021555788e+31', '-2589.821244187392845937108165933495359047193118764579479697030046497096699971962461956602938622734'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('7.310856231038743738006972578e+1', '3.953772959709131458834635874418352573710153840945305782009e+57', '0'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-5.43694520251045211677860851445256808564505958746497524e+43', '-1.88302420910384378014501617e+21', '2.887347478712430637686468592409563e+22'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('-8.84480314987915e-3', '2.485672907020868917970460002908114977851963191e-10', '-35583133.7457824729393195894031453473771800463059494'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); + T('-1.842664499858708e+7', '8.64280319632410385089217495892155003163e+36', '-2.1320218197753445082639445340341847150845768770852e-30'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-5.69289886131319105470231893741207508333786087939892543991e+12', '-1.157070028959235705673362382e+1', '492009880027.214447044738833785955556424955628517861704093425274445314155512550013741207185367473999'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); + T('9.1529892690338e+7', '3.69795147e+8', '0.247515126774603129121107692632861945048727207877609059050198947'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); + T('2.040936401972e+0', '7.30192e-4', '2795.0681491607686745'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('7.8342829198168303012269813436688776790363358e+41', '-9.97714065170314686896855609984e+0', '-7.8522326118350148371427659878203848146751958700610342561492551104312933241292324148141047829329380382042316261238416338317493e+40'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); + T('-6.224139150302056812162930383444020261998001661480334367e-8', '-2.200474704222804776662164e+10', '2.828543831182275e-18'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('-2.111907316853534443267945413030124e+33', '3.035193089358538579351137066159724155e-8', '-6.9580657792676627345697886401977478627195308884142417393050604155803650358753128456006840173551540452279962038443004363808443626319265e+40'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); + T('7.1019910621668866906001022319396116676509826589415e+37', '-3e-20', '-2.36733035405562889686670074397987055588366088631383333333333333333333333333333333333333333333333333333e+57'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-1.263505371326162877793175510269241e-17', '-2.6295119435e+8', '4.80509462772920421912194866693230899181120224487773e-26'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('1.25753421623835120676356e+5', '-1.24e-4', '-1014140496.966412263519'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); + T('1e+0', '-1.6343267272956510340957355231089781279070615606828115e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); + T('-7.3343350211129444859698483507412686598373e+33', '-4.3843858592183644627006838292043613541538028979866527e+42', '1.672830644157877191339849787941151074468617542989663526075955647378572982443e-9'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); + T('-4.108611403904808302411892431161217780240728657750746689364e+5', '3.6824849477300703610724915340707846252e-1', '-1115717.093816610873677645590956733383'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); + T('1.401581623326732000821603376983279829245646625e+8', '-1.025090770212736e+5', '-1367.27562480721903'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); + T('-2.94568e+2', '4.14192625e-9', '-71118600916.662869117961721312638050955156432'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); + T('1.7759920185337547720817865596e+22', '2.350740762006532104979009412138827927354021658e+9', '7555031363891.4972210913734422163808480420697'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('1.0947348955799084189730995189273274351905325603416797167e+31', '4.153961824757862e+14', '26353995095843748.0493281532'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('-2.4622935887443704835158888971778206584895907358120324532166e-7', '-1.12906730198878908358403856082462293507622394677804e+29', '2.1808209168817285300617361646285948515975483824583722e-36'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); + T('5.7753573152354701280188037711e-3', '7.3622821751819861902677289036283647731671577315e-7', '7845'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); + T('-4.8205540868978450154671132067505596153705757e-2', '8.1183992929751288420984735186669192604024e+9', '-5.937813493688444827723808286658854244188750679714e-12'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('-6.2941336527302448612953596496278502611441e+21', '-3.5568500636662819918590062441096475503230146320989567e+37', '1.7695808201266888847503987500283022806912903932828369207190396972028315644e-16'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('0e+0', '-1.886335671350525947167498146176216809163432865841308760356e+45', '0'); + BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); + T('-9.388865394241840862648843223003751545e+16', '-1.26262312206798400456688656413722861e-7', '7.435999887966816286693931782193008802332593057015175495574569295812959984e+23'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); + T('-8.774972002985035666e-10', '1.0096039769517326876506064168433248399882399907454446e+34', '-8.6914990464667622493530131032429473e-44'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); + T('2.0358122995416e+2', '-1.185788087652726874326e+14', '-1.716843271356773428083586941195529440001003234082441920090862215671473214969501034555e-12'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); + T('-4.81494682083685778756376680383503854821494e+11', '1.88469801436875758448943512e+5', '-2554757.72995363887411108098322566033139836436153539171984892227398'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); + T('8.425989871297069164847509809184e-18', '-3.51926008497875433972381873443330235632674e+3', '-2.3942504014584465119158723882331982396890146771587804121365542995034390598873e-21'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); + T('1.27444579556638727979295885015787844222933e-16', '1.978970526730892637344166773842383457668295e-2', '6.4399e-15'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-9.605849175039525e+0', '-2.0607825364337260302e+9', '4.661262896599883622140312721859695212285726413101438285248661435001991329e-9'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); + T('8.98380237238777847268e+14', '-9.520475603e+7', '-9436295.7766068847859847826974154160856999362240789936300832512096087139145836220888218161846384'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); + T('1.43105051935057310084000077734625910751548015485e+47', '1.435248248460772139723819361148986308530557e+3', '9.97075259200141242877636239157217890998797798886339280131044746055797542831945114292189166994100617973599911868e+43'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); + T('-3.4034802881655461978766888034351860622311e-18', '-1.7981952473022468608e+10', '1.8927200999288802420575647573236761989046149e-28'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); + T('-1.43210402902042035558426e+19', '-2.69701938689138970149793193133529358653757062093087863e+48', '5.30995081452149713406531003230358760718136409882834788473858805e-30'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); + T('-4.842369180095923840828196486950285389348350886702e+13', '-3.6369207448e+6', '13314475.403456209626303860188948'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); + T('-4.595408078199452557501026049538472866e-15', '5e+0', '-9.1908162e-16'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('8.37359957427871905021486159553992619985284e+41', '6.592e+0', '1.2702669257097571374719146837894305521621419902912621359223300970873786407766990291262135922330097087378640776699e+41'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('5.12904053485500369e+11', '-2.356006590714538855034790956761608989302e-4', '-2177006021574603.617700507922417593'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); + T('6.015422454953036042240341552597696910116184712e-14', '1.61889975588901098009509941804921e-8', '0.000003715747335850140925748953013957471'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); + T('0e+0', '-1.46309763225394183731384919396993881995112568685128916575e-4', '0'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('1.480852744475266171384371266e+6', '1.513981551285759949212863278757677622717144544998283946e+54', '0'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); + T('-1.048704844895298764267e+6', '1.93834152691212568826528e-17', '-5.4103202677906697979269528e+22'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); + T('-2.3974993340594324786216049305189901567727128178294281171392e+15', '2.5500221621595942064232332e+4', '-94018764606.696934948388080256864169096744754729362485888099609799069392975272684'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); + T('9.9869279344481835661235709466239341269531092877823e-10', '4.5756874e+6', '2.182607127936271076149907213203405050562044358140003e-16'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('-2.7417e+3', '-2.585883427e+4', '0.1060256611482587146029146966647077706801823282654883576080090635887740658001440526653717557547113665'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); + T('3.815341923454329027881636868507675546064e+0', '-2.964570510035186895077e+10', '-1.287e-10'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); + T('-8.1735549810305097961598075249725560718718368702887e+39', '2.835116912708471284502428249232106162e+23', '-28829692858140619.92748633016109227282199'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); + T('-7.32981605626e+7', '-2.677690427184525475227e+2', '273736.500001868454321579249937084174751100655446811304267461519388794890747782155104943336466202375'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); + T('-9.16315973852115522938999e-19', '9.042919595827616506965819304445732730604125e+6', '-1.0132966e-25'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); + T('6.358523e+6', '4.40132300111923255492109e+20', '1.4446844729148626688667634730302332223061054105797893844168294564761836e-14'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); + T('-5.139211254201668171872995890983365e-18', '-1.5083548976487459847e+20', '1e-29'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); + T('-2.8171189907015895e-16', '9.21897171849502e+14', '-3.055784394098866960992360306205e-31'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('2.99789199300705852204601120743344e+5', '-5.47924104180702447191479787014077480048927716e-2', '-5471363.58873959984079548421500443497199597555'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('9.81875142583037809567952350607452e+15', '-3.4687305453795171406878237005224971585308082903e+37', '-2.8306469174751361585690876350308857981841849345008721637086100419586e-22'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('3.08707183854467667877929107971867e-11', '-2.35196612423659700350835514e+26', '-1.31254944819695515834706234783901960977e-37'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); + T('-2.8213964861859564875572540794222e+15', '-5.168452270204616617876498382023891751570689298634394e+33', '5.4588807996755646055239612145045168073595850093e-19'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-7.0813e-13', '1.56e+0', '-4.539294871794871794871794871794871794871794871794871794871794871e-13'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); + T('8.14110403542517745202706485105022282210091784e+33', '-1.688350089087425048701536063780485447383159723854329977357e+38', '-0.000048219288689264374989622358741134'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); + T('3.25863096999194643003413683826719734e+21', '5.618007636999568e+2', '5800332040367778169.288168104147613832911027025215810963069876871784688'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); + T('-1.4805436682325022741525936347181e+25', '1.1607299682512709163737705286415115336e+2', '-1.2755280803708853363018579801475806040882834110865071562813129287335720726372e+23'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); + T('-5.34258251e+4', '1.781311271905240595172943e+25', '-2.9992413983243498668198433e-21'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); + T('4.64027469376348916497545810919e+23', '-7.6667505925746e+13', '-6052465953.774063335633809580856235190654'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1.035229349852707396403267161937236208909910350243e+48', '1.920776186243e+12', '-5.3896406945652288898449103320672098745016258249914104904084266124e+35'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('6.1e+0', '2.18982168e-2', '278.5614945596848780855982757463612288284587629'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); + T('9.835509353291310001253779704e-11', '-4.2516886120831444413650359047292837460082152440653091592776e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('1.419584e+6', '-2.2456336913636681912199059228777e+4', '-63.2152966647892206941805953519556072'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); + T('-7.48337582900726312264340518579849657238637691523485724e+53', '4.3873595e+2', '-1.70566734479070227152422890939265327411313727886553569179822168664318481309771857081691162987669462691625794512621999633264609385212221610743e+51'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('-3.09214419956268660769745136200171129e-2', '-6.55586e+5', '4.71661109230930283395e-8'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); + T('-7.47e+0', '-8.3129091173899363050150814171607681446853871716922e+11', '8.98602389911055526387557585983734018562027115035296874467136654217e-12'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); + T('1.5422046315165910135380507050728981458652385138161e-1', '-2.49726e-7', '-617558.6969384809805'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); + T('-6.027637019608787827e-12', '-6.168e+1', '9.772433559677023065823605706874189364461738002594033722438391699092088197146562e-14'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('3.637226529475938420584939413779884e-20', '5.66313959899573343471844023e-14', '6.422632650837252791397005531104336453119706157765433798349495132461747790991253275315193204e-7'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); + T('-3.63374636457206226704031388321678018796105838933222e+50', '2.23192771280273673e+10', '-1.628075292818957763041131704226551253202464586433286576776793553341257498175531583626214149783436764e+40'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); + T('1.447686237310682627523628e+17', '-9.27654554283e+6', '-15605876461.5199239744'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('2.71453219554577365344652764796906e+31', '-5.3518882960376187325270737493510349390472656e+43', '-5.07210174314649606349701434887509976007194300223113568e-13'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('-1.393286404513102609558473024204958251590327e+13', '-5.855484674573725995e+17', '0.0000237945530036680115402924601438159362983628669729'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); + T('7.1103309548815651860677898639079346939568246446974791588e+2', '4.8769843784483012350610212859958724322732926813158586488e+29', '1.4579359709050047503906905151014730519791327462580222805885996817122e-27'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('3.075599596358771249670517627321e+12', '-3.996877616428674653242322790899941288312991285277372896e+9', '-769.500568072661712562729357197142813533506324140459'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-1.261205984992223545369223006225826905349496097e+9', '1.620181828427829772e+18', '-7.784348416103738355015056096212753317762213e-10'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); + T('2.00315828570172542523825739959349049373689988751035915e-12', '-8.60950076872653662809989252228863051954124324893e+4', '-2.32668e-17'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); + T('4.732783706338582085066293769921629336210353e-6', '1.30387863763199470335371599109946688305257044e-19', '36297731780726.95627843902'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('-2.618107512e+0', '3.1009576053821111482452309390112e+30', '-8.44290004950708565638811123268641903928980998484442e-31'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('-2.1304372261326862138082080606924013109809844300767e+37', '2.568536980894e+2', '-8.294360727448706480271480075619277212900477871427793413721282178360217236407460947146546402166648002265872258e+34'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); + T('-7.7281100283375912478317107816593e+29', '-4.21076848235299162110478588819217733599092986582e-2', '1.8353205740770381455375610012735730324744466865758076951e+31'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); + T('1.214288115112062302e+1', '1.220191369594032493649996470678162491331918075709845175258e+58', '9.952e-58'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-1.06900256342e+4', '-2.11663631027871906270848975313e-14', '505047824337490243.5542612133960286734567711128278517'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); + T('-7.68253410247759654823769087582989853109e-14', '6.88782057679461630572026058847263346e+25', '-1.115379533601732685983818924e-39'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); + T('-3.127314521519152147318e-13', '1.7562796368659513842290434961976e+5', '0'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); + T('-6.52236449271294278465e+20', '4.2960112422402385396e-4', '-1.518237296164925555810052883406647891702984011317411762992531555858254e+24'); + BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); + T('3.3906898910846761551010975837e+4', '-1.26278246991633428e+14', '-2.685094204158002363589830198713041152886030846980192755e-10'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); + T('-2.57818822600894851e-17', '-4.099305302080100833321083658448116029e+4', '6.28932962055962148397265177133023154e-22'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); + T('-2.762537942145269202456800168866810678263800547e+2', '-5.5794642063741285950032443049e+28', '4.95126026436243150232814545310867295193e-27'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); + T('-2.2220067359042534782306082679695109e+11', '1.6627392333290843252114537311353886966580422528954392603276e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('5.521683785579646113987296059772570849e-4', '-4.2913090938318336417419787109e+28', '-1.2867131369111366966810237114048549533082295727403624926e-32'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('-1.1330391734902077792296703145369409541576832e+9', '-1.62534341919687537646390049102383023e-9', '697107552845706921.539726219737110667961829115633'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); + T('2.473822379563497271686201797064009750024074417793299e+34', '-2.01808576030533418e+6', '-1.225826190453477376997876172521931063596401405891474069853839906134571344e+28'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); + T('2.5303793265608409202121202350210168e+23', '-3.74835746663196393e+3', '-67506350423789200447.46795099178037550119481486011217189107361181727847200917369894322869609769'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); + T('-3.5e+2', '-8.1277456186986807687172477738133e+31', '4.306237134129671395535982088e-30'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); + T('6.26741953491444e+14', '1.46879850802e-10', '4.2670383314612539308017699330233555774687190031177684311329955622322433e+24'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('3.77109858829632667366e+6', '9.04407253151767774269062602081257111546091913879693653e+37', '4.169690783830436600896909869720047189655e-32'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); + T('-5.33759542e+1', '3.9254295722506153140124716999039738854029315340346842450064e+10', '0'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); + T('2.7853980946488063151300371324976142755438e+40', '2.506164302080989e+15', '1.1114187893969904686622434666819892478943674510939079980971476965607620825505000907544e+25'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); + T('1.451043309976216445610153251732462926744256554271133783791e+17', '7.41721005576179e+4', '1956319558253.61343090876133233530811364932433139975554534744'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); + T('-2.072406664008045081e+3', '2.792666557127411860644489740802167608215209346715373797e+42', '-7.42088832166114617933e-40'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('7.384e-9', '6.3032089502188606e+9', '1.171466797042102193664274335794202208750112818022893729166287382032e-18'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); + T('-9.35958558496231459721530506986e+22', '1.5322681929812264284749509548e+13', '-6108320741.65295265223629647386189336663113192202'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); + T('-2.24014624554423389811452741803132e-4', '2.0565175971296507937343506885052795768498421551e+15', '-1.08e-19'); + BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); + T('1.5770237677964810017477151767788e+21', '-8.54123834256875008633168521475344720149263767688138754686e+2', '-1846364314571036958.678647267777970781569480978902586909530172075995984569742629175408491216602985'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('2.79199995197752e+10', '1.71487499012888548514204330386066220510264e+10', '1.62810698625191369851034'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('5.323153894454409490553769852429203328e+28', '-6.030342e+2', '-8.827283584338018458246265058315437711492980000139295582240609239077e+25'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); + T('7.9518637909638206148115e+22', '2.703335682421301079590396752958261171133813554763659e-15', '2.94150069585200821391486581040338326583968580475156088168501517339405393235746268e+37'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('7.545889908678269e-16', '2.768050039756865098086378735666300998213741845102978484e+30', '0'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('-8.7739572453231244975835179927171213809985647391042414e+52', '1.72059865043563691558140227646933386936e-9', '-5.09936308685448154396527818485662863105492320887039977042649830179435005e+61'); + BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); + T('3e+0', '-8.22592249104333739875982e-1', '-3.6470073760924704277112396365477092237792643308701857467008212355984275209879073'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); + T('1.0636690860267415531231769812428010959148138741441452e+52', '1.11600369794194131724e+20', '9.53105341844555065087419949570868503012652317123623801062045754948248088657449086693921681642325647683254809938321207941421253407757e+31'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); + T('1.3289530386979555936177503e+3', '-2.033e-18', '-653690624052117852246.802902115100836202656173143138219380226266601082'); + BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); + T('-1.038385084749453e+3', '-7.98067150071936701490588681029e+29', '1.3011249550314837072393526477353924717272e-27'); + BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); + T('2.14775414921936585323587276274e+29', '-4.91873e+1', '-4.36648108194466021358332895430324494330853695974367367e+27'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); + T('1.2567973e+2', '-7.856923e-7', '-159960495.9855149401362339938930291158510780874395739909885843'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); + T('-3.6622319707770708822522951468817e+30', '3.656425313596689513775283919805799908329e+11', '-10015880694072401484.0955229421703431721941247711210456195812948764079007519435905440229821531467'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); + T('-1.71282745930071396282535980981656663328350069966145739055e-9', '4.3e-5', '-0.000039833196727923580530822321158524'); + BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); + T('1.7119045396419008400413343130033368266876039e+37', '9.7540924600109638962e+3', '1.755062858651615249647388676534433549015738989093280937133672437598343997e+33'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); + T('-1.1757530693902304387459376726656306596014299349464e+8', '-2.36900729151398204933354971996709e+30', '4.963062264949094862684756523944872810528016135331257285976e-23'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('-8.65095140446550937314480735074e+15', '-1.549244905882360406819969208475918262360629753795329e+52', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('1.1955e+1', '-8.3088677e+4', '-0.0001438824209464786639941324375642664282643470180660115'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-4.468624569952628910134461106488333506316952e+41', '1.6984769356286874427603898121908162573708e+38', '-2630.9598183024943520710960422578191'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); + T('1.609438374637232251e-9', '-1.1614e+0', '-1.385774388356494102806957120716376786636817633890132598587911141725503702e-9'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('-2.09472e+0', '-2.1861989602310764423155108389064835971067037971421668638758e+2', '0.0095815615967'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); + T('1.9258712316623456848312022859e+22', '1.7266625389642846412968734570371957657e-4', '1.11537210555199379330974948807628766827486861972553536365e+26'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); + T('-1.1337e+3', '-1.1e+0', '1030.6363636363636363636363636363636363636363636363636363636363636363636363636363636364'); + BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); + T('-2.5591414805373051642382850492440071030443358585e-13', '4.35706627e+3', '-5.873542705002981660497638125765773819741180706209455932833447584904e-17'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); + T('-1.25613398729978160245584922259023879602040016e+2', '-5.13386334045428147107910905292885089491972852226657825592e+56', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); + T('3.234484877844011920715828817817e-12', '-6.019346634481209758868677e+8', '-5.373481665461159981210755854e-21'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); + T('-1.5027e-11', '-3.7e-15', '4061.351351351351351351351351351351351352'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-6.1e+0', '-3.6447856210569630636497103311780875864519602982229700446e-13', '16736238106182.6112278499938760815912762242062491581632413344974496636237303042133510924299460319'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); + T('9.75662282281192e-20', '5.985852528528966395302090457416703826321725395934423e+17', '1.6299470754268025580362743789465e-37'); + BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); + T('5.604825650503286068631433167e+1', '-9.305749535486041558944682995387991e+11', '-6.0229706689720664863014764391915e-11'); + BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); + T('3.7431314e+4', '-2.392568982213598249449011107876184466e-1', '-156448.21227001217'); + BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); + T('7e+0', '-1.1045e+3', '-0.006337709370755998189225894069714803078315980081484834767'); + BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); + T('4.93378864967962446907506937527311536635683791413e+41', '7.525850766108004307875561045756e+19', '6.5557885786129327670937629942817841888955144563221611526126799543788215289326409947589027585070936969510766374326411765874e+21'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('1.63422955175006958166513854885209386483861856935343529352e+35', '-9.66349246523425560648983043983869582551620345e+13', '-1.691137606439323420220329379736035181700003167537521018776107161092670305077229257476923828508392563262361909516126e+21'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); + T('1.495e+1', '-3.07182848020739641490746915491908811922782217304689e+3', '-0.0048668081881286032707593791164998482196454255205826232850685249135503912'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('1.259062985419626e+5', '6.9977635329877923006e-9', '17992362552468.982571654491210293172532864322672755501964483658087290004741310828649074'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('2.232711537863227029e-16', '1.434154444949708573200667470524103058046097898258998725507e+58', '0'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); + T('-1.0751815403564395827663050799878971629329089299025396757e+20', '-6.7886864e+7', '1583784368587.7721244662370616911942830838509934742893348262485655545968362892709258156334928066'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('-1.26823286542697996624791496849e+12', '-1.16793499550969226361833557823609159e-4', '10858762433721897.7307394483624331'); + BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); + T('-5.7713011483807317754531570826e+11', '-4.55900876358621281e+12', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); + T('1.38268797477236323560159318494411944404e+24', '1.42312477553014673043161482450533329e-16', '9.71585906272540399036878915395275312201434618904599449140527428820711950864006e+39'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); + T('9.3815075054718519832476108772926868476360928969089361e+4', '4.857002415350223602938997571365002900982479e+42', '1.93154268892727741077333196519480753687344966025561425e-38'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); + T('-7.749096154328703865887694942014525e+15', '-3.45112372602868218963907841288692e-19', '2.2453834662270527218695605226800210763996175658727845e+34'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); + T('2.06047471323273675e+15', '-1.549028959604836834354557362898635678316479740834989842523e+41', '-1.33017e-26'); + BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); + T('-7.05085729272211009849091807126021118782328859699569811025041e-16', '-4.978374031401085198009429258552458040848568e+42', '1.41629721837869964741050077431131056176e-58'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); + T('-1.08558638711697951122296184010253247220521597866289e+33', '-1.095189258480639988351439864779e+30', '991.231769952727097382931022367907874314569439543907641'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); + T('9.8729e-19', '1.8011865910309926369717116294617624146153936e-12', '5.4813310565e-7'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); + T('-4.85006892273786251519379926157564148194080803e-11', '4.2144285392117088636044457532336606821307e+13', '-1.1508248099622653733336646374169959360771924094604495212554679882303e-24'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); + T('2.8784194884454653011319e-2', '-3.879427369887867496479778593e+6', '0'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); + T('3.4590661358872593115553923594619847654866114989082695893051e+46', '5.4e-1', '6.4056780294208505769544302952999717879381694424227214616761111111111111111111111e+46'); + BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); + T('4.1e+0', '5.4786917624775196956187078223916e+23', '7.4835e-24'); + BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); + T('-3.91495716942234069922659077207497778622749365160426460071e+53', '-4.0102800972250268937783468190379e+14', '9.76230356610590288767648100711089415886501956837749100702679e+38'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); + T('1.19424369580399282513575056508783725247e-9', '-5.371698598032159396495139952175043506e+36', '-2.3e-46'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('5.63636041344363e+14', '5.2173072658597998389260730622052729474722e+36', '1e-22'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('-9.031145452408285626378639096151350422e+27', '-1.731e-15', '5.217299510345630055678012187262478580011554015020219526285384170999422299248989023685730791450028885e+42'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); + T('-7.31972377269774149472754055513497055157319466674421771e-14', '8.546500533655590532217386133188970641018e-14', '-0.8564585872162672868942623705976116327542913560436307588971838437181301932291836031310937755135'); + BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); + T('-3.54679222738451876223205408554904004041520901298e+27', '3.4586346581660271194125550911766413700791897294324995365342e-19', '-1.02548912444693941909583024429178218782025365317128628938450518851820276916612834088689e+46'); + BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); + T('-6.48643644215162929485708075e-1', '7.14984347440457975908726489684000602e+35', '-9.072137684373297046785189769824472850697249143e-37'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); + T('3.552171243977769502671049000867317211343e-20', '-2.15595163566681273217424395359713674128281892118e+40', '-1e-23'); + BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); + T('1.7954544527607735150981985546109e+2', '-2.7258844e+7', '-0.000006586685967903750852744153620787807436001'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); + T('3.3674081394487145799921e+9', '-7.1275409800764541139561409433836095e+2', '-4724501.96899828111377581909732715146907289'); + BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); + T('2.65735472097886935495390169965511921020563011e+25', '2.19349988440193952607880287238101699e+4', '1.21146791019932076607700836983269024923057710126299235619548140485e+21'); + BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); + T('1.0575868668469067477716236166764e+25', '-8.383602155882908531775616123746973325e+29', '-0.00001261494578562248'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); + T('4.6852215e-14', '2.19919753326e-5', '2.13042e-9'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); + T('-6.97048526434790465102435138712502202538705868792308978e+50', '-1.152016479378653648042654041111e+19', '6.0506819035327287840871358846013130018087169719821002176269531e+31'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); + T('-3.37577295170516785222e+8', '-2.37545219078269355805e+1', '14211075.115735653503575269101098904554789070803843368872554096743257129931508392'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('-6.91828885134279364979634143520912856688568e+8', '-4.905271406e+9', '0.1410378402891330993927951768711802155251769977190126551786561838205452'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('6.986514784850857947742579938525217639695e+26', '-1.794839665783077e+7', '-38925564873799947424.6882982473922192210282154361988028278101097559636017307592156'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); + T('-1.77830063090048661263986622e+10', '2.270924196212392806152021613176845793480717971355827611111e+29', '-7.830735318538864287947570037843942222717162247258832e-20'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); + T('-3.61553162775567272024302892183569e+26', '5.2136257994244279369565366891886574752823e-1', '-6.9347739305625250934549596504675255779365775719511346687127674e+26'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('2.72e+1', '8.10677952046480558868896688782129127976e+5', '0.000033552164495575767975227338046013372453730165565364132066649209675865'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); + T('5.00209141376450945561177635215306952e+20', '-4.06407024489331769546669285640221297039518589733394e+50', '0'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); + T('6.4941507325829041e-13', '1.06803844907e-14', '60.80446577777906232995125593732572832159078855174121620164454853430551132022'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); + T('4.59037507825880083772724613e+23', '5.9206491313738816076555721197850369064037338348485286340196e+32', '7.753161817906e-10'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); + T('1.24258229484774e+11', '-1.34608804095258113553965970247594e+19', '-9.23106258316065561528587558e-9'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); + T('-2.312e+0', '1.12229569882029501318267761229489045381220697e+5', '-0.00002'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); + T('5.99386387928871248266583462338374271383421779265e-7', '4.54276178498770507623593493e+26', '0'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); + T('-1.072e+0', '-1.0093621232770885252715439716044e+10', '1.0620568924456423474469510806320102016101382698470840962696843605524920313968902e-10'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); + T('3.1477153130156971113238565625851776140762151077886911e+46', '9.826959778864853474755755753495e-4', '3.2031425627543381746914096126702169849354775990622144170749047897876647147271148203797679834222535856032885497801492664824904454346e+49'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); + T('8.29789132e+6', '1.571815286618497636e+16', '5.2791771340076160975768969825714902024842632232591240172049653e-10'); + BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); + T('1.52164415715764465447303e+25', '2.87924899438469325984e+19', '528486.47689910053985881783677296216257810461518732161341341792834798642202721337736804755992'); + BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); + T('4.208837080395082250914160579456486936330714130498162873255e-11', '2.27010087532800876360273860899e+9', '1.854030860979666324529697068207741338852e-20'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('7.668283651166955701e+0', '-2.59554989752628450796804615643995026173575873939822982e+53', '0'); + BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); + T('-4.269827082310622058516334206139255614554809934590597346781e+26', '-2.86618498009960504659861e+20', '1489724.882363397892828752161863673946377166456932407861354348065593006446060320670620929585694'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('4.34026302347822527e+16', '7.87e+0', '5514946662615279.8856416772554002541296060991105463786531130876747141041931385006353240152477'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); + T('1.2e+0', '1.217453887745260320295322901007862553505569150298797e+45', '9.8566361492542018442563e-46'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); + T('-3.7522310633980853325867082990170673e+31', '-1.0292373198653534141843851980822223e+34', '0.0036456422546832625689136006513990189060244021257648515'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); + T('-1.35790490505570931093648290702810551910772e+17', '4.294449e+5', '-316200030564.0396034360829310182'); + BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); + T('-2.4782632e-3', '-4.05169398973704e-10', '6116610.00627750363922491894728964580229301'); + BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); + T('3.756357804151096896837356423059514649527372376901930416e+33', '-8.35113e+0', '-4.49802338623766711431549553540600451618807559803515262724924650915505e+32'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); + T('2.0910203634740244001484289229808869070511242e+8', '8.02731501357361831201449656310303952281e+20', '3e-13'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); + T('-3.1698436883263758907842835e-5', '1.0802507484344631972264715e+5', '-2.9343591688505869236154844739170466376631961498702362054626834807562627783027501e-10'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); + T('2.721239287933e+11', '-2.2412026024947078257073e+0', '-121418709977.5789096584346573366430238344682252618674469533621057930935379913349656066911664673289481'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); + T('5.407536640878138389743338300626293850572182013779e+29', '9.65717889e-20', '5.59949929733375622468492794030275424521227028215379781579255802726462696809378458143069564697687815121337158951603515340907182884338181707e+48'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); + T('-1.407077764986670621849439170701523150451857671292308216281e-17', '-4.1579607126487320994975506399283957855950459483224663e+51', '0'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); + T('-1.441505586834219591581996149087923330198635935696660167e+1', '-7.3202010555262200157717662443151643404e+27', '0'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); + T('2.441776264479681806716738298456671e-17', '-1.78406279813694314834986307099964805807329806664911767944e-12', '-0.000013686604905553627996'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); + T('5.10140649101411765e+12', '6.1899268048903359299676290735372105234653266354e+46', '8.241464966893896751223180874476897717134549759895885559205e-35'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); + T('-4.3620916548258882483528769576e-2', '1.8047591129224229943228186843920124915612131569287428e+7', '-2.4169938378991808382337249713327963963819305e-9'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); + T('6.42281238744617747935824187719036657371e-2', '4.3350798745859359400910160329315845099386758471658e-9', '14815903.220375266518527'); + BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); + T('2.465991672234244959093928122489457556184e+39', '6.108829166965532317296514733893591376592411635e+10', '4.036766465118206435614185736756057288657773615400609260966944868513631488419017972532456294687997972218413339e+28'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); + T('1.153200244637552713320161158311786084646e-9', '6.56566163383858080832e+9', '1.75641132447964e-19'); + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); + T('-3.7862449918709461215480788954277027542635119e+44', '-2.48191716299e+2', '1.52553237808694803942130939517658504874736536502506697627855143276705142569162793377923720790104080201286331e+42'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); + T('-2.319766197008371429642922e+3', '2.1729e+1', '-106.75899'); + BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); + T('8.03340286495794866966241438602064440121086532273e+1', '9.1251158614e+1', '0.880361738631715546850931996871033657822665519753550643941635289930632'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-5.440572145054479422049668949148854525893474277e+35', '3.9971133726835147752137353945421194492977095308071895950804e+38', '-0.001361125301632832987221653247595128114977341147062273632678950498625345776512047144344783907762334'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('-9.68442049254161857510168781861e-1', '-3.409651e+3', '0.0002840296702665938119503048205992'); + BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); + T('3.555075917103862988684791048517766337536809368296007676036e-18', '8.87175e+0', '4.007186763720644730391175414678914912544e-19'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); + T('2.99103737827925059323239200345428714e+6', '-7.701088877270243283457521248899363219520751505654e+3', '-388.391489300596783892543822601209004355674896370038946'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); + T('1.350223e+1', '2.34761460206965359787881103867751198152920817e-12', '5751467889191.204463481'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); + T('3.15621320335032541976564899638959645896178154788794896170234e+33', '4.296256546955836349e-15', '7.34642628729119495114397413872390174893190414987515592016715245744118873793e+47'); + BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); + T('2.37218509210530059394943507579448892298100229851e+23', '-1.62692615757209788944838e+1', '-1.4580779103369823679061687192778057317094128596e+22'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); + T('4.878005731507031e-11', '-4.44790195666587259994945869672e+28', '-1.09669812397653e-39'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); + T('4.722619473331688768232e+15', '-1.456444723124023567069825767067360659815834669327072e-15', '-3.24256691541429276263697747398781928625546780683841992853487e+30'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); + T('-2.195698971527617777838761335193563e+21', '3.478156933398994769e+19', '-63.1282318070074107023223149962725043506589287831761401'); + BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); + T('-4.81e+2', '-3.6196e+4', '0.013288761189081666482484252403581'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); + T('3.8106e+0', '-1.68631804101229512773985812930393121867791487059807881252267e+38', '-2.2597160839911909013914868780831714865e-38'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('5.1453641376e+10', '3.8161104559268143928699715e+4', '1348326.83619225882232074493879180157392063413273607475207309549030944420276685926954044781995282079'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); + T('-1.766752791482e-9', '-2.2248081755686205693938592247744896299e-9', '0.794114661606927109'); + BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); + T('1.07e+1', '3.5694846551911999114971941017111214723574489411561208839805e-3', '2997.6316005277386752844589722347729748825802678625637341931193548684651965908690269486826380875506585'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); + T('-1.070223299865544e-7', '2.11425777559388482853946385898128854354089e+29', '-5.06193384846331441e-37'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); + T('2.334700147652e+8', '-1.6801514078762469767833014661009025574448734274217e+27', '-1.389577234948794795652139200374723004115301552098936e-19'); + BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); + T('-8.990729953840491347231278733483218542630317243e-12', '1.76794e-3', '-5e-9'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); + T('-1.320555263408879277572868747426701674e+36', '-8.280318696431684320657028912505686208821959e+3', '1.594812122361858593384666275294206775380477386239664128388472280487930519223575938267970753622820899059467907e+32'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); + T('-6.231912384589897854133779639848e+30', '-3.43189565984372085538646069857139e+11', '18158804935443993377.0751933169966139471194602146070091'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); + T('4.4415362952296514295e+19', '1.39643690008178464005185146939344633199e+21', '0.0318062083218334140239237816307785327376606457328643271461090039493434588946'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); + T('1.1742928469887653678489205983104182614756200996e+1', '-6.9906485440108893963e+18', '-1.67980529931635504817020737838900453766e-18'); + BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); + T('2.1566662626629319042256416557181912831932666e+26', '1.42302534466269546467e+8', '1515550141641457440.4655660866942607'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); + T('-4.8146044046046959308e+9', '-8.40724e+1', '57267360.09207178492347072285315989551862442371099195455345'); + BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); + T('-1.18810238e+3', '9.74127342365354222e+17', '-1.21965817848319130241016938997978134735e-15'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); + T('5.87453940985908343285738604241e+20', '2.1589366474822240030123991237675e-20', '2.7210337166262089309442295474582002270327559e+40'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('2.8402399093269e-7', '2.29461160255535856229460480721437111633446121658231e+50', '0'); + BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); + T('7.814632967948295805989727852979009232425599220867683407305e-3', '-2.1855562561097858541591253249940846587604e+40', '-3.57558079143571018411113233263763e-43'); + BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); + T('-2.07484006218997673327834760683047751066112044e+21', '-4.2343e+3', '490007808183165277.20717654'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); + T('-1.174628459863851785055746341650852577960316e+38', '5e+0', '-2.349256919727703570111492683301705155920632e+37'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); + T('-2.18031244388e+2', '4.9707067e+4', '-0.00439'); + BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); + T('-3.5318426831698e-11', '1.744834377768283326385768191171847918793999764775332687433e-5', '-0.00000202417073400810429774305830088179811979022168174920885864'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); + T('4.603247010352344621295928161305282953e-17', '3.85024303536071236681680123e+15', '1.19557310228887580284053475976953609839e-32'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); + T('5.6652585082225360020865725712732622636097569528715411e+30', '7.82248e+5', '7.242279313238942128438260719456313424399623844192047918307237602397193728843026763890735418946421083850645830989660569e+24'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); + T('9.40290220646761003558174981105847485978e+29', '1.540600509715740951214714205008966296603104625856179918032e+44', '6.10340068510204303949264446723367e-15'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); + T('-7e-1', '-4.27888647534096688050483033121609213295359e+32', '1.635939639983600818542538319489686587195e-33'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); + T('1.72082816995428430797615448257083562141770055217331e+23', '-2.7201e+4', '-6326341568156627726.8341402248845102070427578110117642733723'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); + T('-3.153102984e+0', '-4.977851364107271003202629484936797813056878179759195174e+53', '6.334265033977e-54'); + BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); + T('-8.49387714e+0', '-9.45054620259658286223674682547382e+4', '0.00008987710295163962637083185864525273260397410828505470512439124838'); + BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); + T('-9.311975726515998074155346632126152659845407414403728541526e+15', '-1.2724127e+4', '731836119406.5414526399608108380364'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); + T('-3.674297468159500390156502433406753075149461e+20', '2.2070345225046097978222093124224963839784689973e+3', '-166481195952920394.0492995478783782657094670464162402895892210975115096339663670419040478923040241894015329446'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); + T('-1.8150003598665833976021678902349937972e-12', '9.964919276121040376508464825057262783846e-15', '-182.138992757912'); + BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); + T('7.0189459089779438798574e+14', '4.5622493810854e+5', '1538483612.5087212498761814627907062459367285706464986'); + BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); + T('-2.27577059368628490602551877708365e+16', '1.6950572843204e+4', '-1342592144075.361162'); + BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); + T('-1.4545e+1', '-2.39141e+5', '0.0000608218582342634679958685461715055134836769939073600929995274754224495172'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); + T('4.26068e+2', '-1.377737835201116479534815445957191281256100978924e+49', '-3.092518686167926519156871274760772691541984883128957e-47'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); + T('-5.503468462778599482e-7', '8.07665374429389943790757771e+13', '-6.814045317550925423366152559691137529806580817371877453148683e-21'); + BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); + T('-5.848733993080881770424982329e+7', '8.0038810550681e+4', '-730.73724519899409774861163662599175'); + BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); + T('2.265045675363689237e+6', '6.4761121536492474143896152898643018001e+12', '3.4975392976901281938389885246232578839048066422817737012983923710148316563180967182e-7'); + BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); + T('4.8865055959832394053310098256526219164091e+33', '2.54448396839393717534256536740336269817e+26', '19204308.837'); + BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); + T('9.43987760059592237947358314268891767411016698884722628e+53', '6.941736916e+6', '1.359872567172340009705084470632640390618653486989512738255435204971977073986824078021570473472550138e+47'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); + T('-9.4555843664304821120443854458756981429686141898273052e+42', '-4.038426625597324898335671374e-9', '2.341403037137490093910868564806637740922093050737553862998837279287645e+51'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); + T('1.8e+1', '9.8349873842965767449e+7', '1.8302006191426757663302662547213753106960184e-7'); + BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); + T('-5.88308127e-12', '4.919775647326018e+12', '-1.1e-24'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); + T('-4.6308973760853953327001814625712286488346449216105175950755e+6', '-2.00398084061039276564454531752265553652218114992496256702e+47', '2.31084912701803563305144150147e-41'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('1.7e-9', '-2.88503390887047329960178250261e-17', '-58924784.0302012661186747772006608809102301993926263137789045605314160576242574818698805742587572836618084'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-7.405083002074059516648379361320032329944335393726739609376e+9', '1.6556106449874e+13', '-0.00044727200954487797400282081334675084505910663555827687'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('6.0497889983053272189781837e+12', '5.390638402564282362230025698691742435927066249e-14', '1.1222769079498065272537005470398646717816465210380024579583156149207854843321590288839061176865722831193e+26'); + BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); + T('5.448304e+1', '3.1492e-3', '17300.596977010034294423980693509462720690969135018417375841483551378127778483424361742664803759685'); + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); + T('3.220753067202506e+15', '2.057901432381929819e+15', '1.5650667308563106859051583305980599694865953104127288105059337312844551398'); + BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); + T('-1.970004649047161189e+0', '2.34711024152190208946286228795944172922073e+24', '-8.3933196413040237898539117521e-25'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); + T('4.0104094423822081719879215420041100057888945931e+26', '-3.992065465182403164722197282679e+18', '-100459510.931366122894597070623973283456209980720066043246091'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); + T('-1.172548389687914049197781603e+13', '-1.0095165117466329472564e+2', '116149500879.307917288636269435813816567925319756587745662146497'); + BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); + T('-3.366604e+1', '1.52803440896e+0', '-22.03225254784252054229343000461957345895394881671029042427'); + BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); + T('-5.41300062319490880734936806137892720844470175838875618777e-5', '-1.344e-12', '40275302.2559145000546827981'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); + T('1.6457211129964164341500335562263942435807110689675e+25', '2.5188547952729012955393944550555281036337662041694727310645e-17', '6.533608511633610906153210144759391068412945320476292119142177798234135400231219783518480565350860910071560809872203792728829626e+41'); + BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); + T('-2.47754507883181224382061601929648866e+35', '-8.290209128043376039902492705770167581944177405005061e-8', '2.9885193974793650466728879599534492576677747563744203670472386689562240821e+42'); + BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); + T('-4.7227595213519353613092231960779e+5', '3.31814153192981587699392144069268225503584e-9', '-142331467054848.625222034511314674268556658940757539089286751164890009410454133195'); + BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); + T('6.8506679344968447210816003126910712827e+35', '1.993118766568317455759548551867416587357158e+3', '3.4371599171142653031186804218003080226412784028e+32'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); + T('4.8985844145021808176685922e+16', '2.747743862428642455820955475504906462565719e+28', '1e-12'); + BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); + T('-2.6062701234e+0', '2.9288100258328928138617153553825753437922149199012e+5', '-0.000008898733958201439997374634267953034276265544438493683277409168637100200126947586243'); + BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); + T('1.6157537454e+8', '2.356410978611863625721378819626e+23', '0.00001'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); + T('1.3226344263949745e+1', '1.5134622161574201663058e+11', '0'); + BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); + T('7.13378975743669341980657349839e+30', '-1.077355370700932622574621785091799108e+19', '-662157534221.546159797954'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('-1.30668491770024533871382097517e-15', '7.739747536662e-3', '-1.68827847615271530426895209005095818365544497037197615248076378431599198028192806275708e-13'); + BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); + T('-7.310224019e+5', '-1.20187e+4', '60.823749814871824739780508707264512800885287094278083320159418239909474402'); + BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); + T('-1.36594744373998329125183129397035154767615739862e+23', '-1.6221844e-6', '8.420420290935995262017260762527068733222668141920240386974501789069109529101624e+28'); + BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); + T('5.91339512442594930756510267595267112832977719e+0', '1.06379573691046094321632609927607382099371510837970460425e+44', '0'); + BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); + T('3.4600072801140082149120093e+24', '2.419385805087341473032573096507979259036169859796904e-19', '1.430118037742682217185741679309760641844767273252571695335791118413641227665278278846097472044183336943613526599349723904182792265666390902193e+43'); + BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); + T('4.2989936567621962434647067163244712499754286711e+46', '-7.287361590832233591725730628156e-6', '-5.899245705291318197490442137821233191034725732731152e+51'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('5.08255843892386163e-10', '3.6769867553503517317613932366705820276791455e+14', '1.3822618293439e-24'); + BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); + T('6.018e+0', '9.82936025658216212324214864902440546928e+14', '6e-15'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); + T('-4.88694832494423e-16', '2.6685695117656813935805e+14', '-2e-30'); + BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); + T('6.187367411590709211084e-3', '-1.9016490483589853410164513292944135e+5', '-3.253685224899964775762923531318992984544093576167679281165724876e-8'); + BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); + T('-2.698534206828656555645951400586392511e-20', '1.41566409819611657131347812519308548766678285194938434253806e+23', '-1.90619668201461996680522995e-43'); + BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); + T('3.64338680869165730432721264095799056297576253203915505e+12', '2.49734543640219665770981076900260707826855027946e+11', '14.58903824670929929825096'); + BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); + T('1.37750576475437616802e+20', '3.1186519496663986e+12', '44169910.172301452450746870217307380822060649144439661963399'); + BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); + T('-3.7953891171370774966517431e-8', '3.111810168415618559e+17', '-1.2196724452087975157365242667935153943383951245128650341171253148108e-25'); + BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); + T('1.758687497055576219230940728575659698853957728014345e+25', '2.55987906294351248373600134010276392866914703516483e+46', '0'); + BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); + T('4.983521732075865023238944583705028e+3', '-4.60355004431025072736834106351363219067932246888e+19', '-1.0825388415697e-16'); + BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); + T('1.36210873191087156571300625683992927337759078388519616116957e+2', '-4.856011861229238531e+5', '-0.000280499465577102362081282866149858'); + BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); + T('-6.27292639398799941804769052811144481813654523344e+23', '-9.223861100927221622570481401681e+12', '68007598177.7025920604'); + BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); + T('1.451185082463737847802616854453333e+16', '2.67423846293035097281847174648822449142303424568339e+7', '542653582.53563236627592952195668145679814392738365254624328253671248'); + BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); + T('-1.30217e+4', '3.34207562054215771861e-2', '-389629.1250850749937369356768877727892124143497377121'); + BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); + T('6.0774200897757313464657364607565620534e+2', '1e+0', '607.74200897757313464657364607565620534'); + BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); + T('-1.4977805511498677e-5', '2.562493654824974661853706878407e+26', '0'); + BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); + T('2.37738940731e+11', '2.1197520687627033e+16', '0.00001121541260577'); + BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); + T('3.568714642593951821147425302697509378796972e+42', '-5.567444895768511376780232462925349027461438338986e+42', '-0.640996850333682278715341380001557537577078630198953922106208118826563871324885854582'); + BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); + T('-1.092655133385021909286285557050656614359635191341348377e+38', '1.79046e+1', '-6.102650343403493567498215861011453002913414381451405655529863833875093551377858204036951397964768830356444712531975023178401082e+36'); + BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); + T('3.195e+1', '6.3559613761446696e+14', '5.026776927864197611599309013360652084107428630046636070537160730904010007615944523607e-14'); + BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); + T('2.322e+2', '-5.398093488026379244431502845e-13', '-430151868460684.3768540542081462239159342450111793279240742283'); + BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); + T('-6.5565196e+7', '2.711104726376443e+7', '-2.41839407242788026484854848409113719460326005903320644117285296918683756878243'); + BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); + T('1.0645627403778739844e-13', '1.3523634769128119105942e+13', '7.87186846252361e-27'); + BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); + T('1.043904773373277442180173714797789481695e+24', '-3e+0', '-3.47968257791092480726724571599263160565e+23'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); + T('-3.8784966818454064082276654510557840673048257e+11', '1.27615024340009655855691378584236771e+21', '-3.03921634768628603145473809535079982052e-10'); + BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); + T('1e+0', '7.8059434837451907016038344313692e+32', '0'); + BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); + T('4.090963382185467544867391401161e+3', '-4.947353627083592126859423580421306070697601e+42', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); + T('-2.252526e+6', '-2.2751905784830644458152204427279971293971386564923526505e+55', '9.90038e-50'); + BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); + T('3.337179e+3', '-1.124109298808773078000919303240413683125e+18', '-2.9687317803850864155193603510953192628283148654325926932202383719798270184788317e-15'); + BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); + T('5.396459229758622243863307316004851823277030500822e+49', '-7.986950723654444885269354583056275536e-15', '-6.756595121810720018302055529532811905268493757097879742186761291708971892162113550298139220290162637739821309226e+63'); + BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); + T('-3.5448477151290801761877523164961721974368752265e+21', '4.421408100681322564028445047780585001526e-6', '-8.017463293159553200705023268652798425703321341288970441362156197087995291733427882034028035790626803772684855154253844e+26'); + BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); + T('-4.350832932450342098804623837197850016325667240511e-4', '-1.661298881760292928966647592693722368086242162075596e+39', '2.6189344856719883193139326952496e-43'); + BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); + T('3.83705e+0', '3.570563711367172540823838290282453562478e+23', '1e-13'); + BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); + T('1.6901977568389407896942317215665594164649791131e-1', '2.22007914080350807009448350735886427080696147e+31', '0'); + BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); + T('2.840481e+6', '1.3327e+1', '213137.3152247317475801005477601860883919861934418848953252795'); + BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); + T('1.8244693340188831428316255121e+19', '1.00024476176549778435583070853827e+3', '18240228829577420.4741187267696143148954146464874986680767286208183813649772543'); + BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); + T('1.345966506e+1', '1.6817041820786075207825e+1', '0.800358660187410885552441495604885001196139987870917888069245179641377499257626555'); + + // Rounding mode 7 + BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 7 }); + T('1.9640', '2.444', '0.80360065466448445171849427168576104746317512274959083469721767594'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('3607247394853566951317.77076581', '15782819408764618683425.244', '0.2285553234455921540387285974114769405274281136836665305041152998320784526374246178556985'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('1', '0.0000000000000194052811234', '51532363465435.329092388839409191'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('660716722326173271523', '479.97194389', '1376573632557148738.4776939404452905552516668788409085775073968563583659260705043457035'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('0.0000000000015', '5360559278853.1138548', '2.7982154882930862e-25'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('707502522397750932', '1', '707502522397750932'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('43125000853', '0.0000001802317770188696', '239275235290417027.96'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('0.4241762859699751144', '6', '0.070696047661662519066666666666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('33139607696828445002688', '0.000000001792296820835179632717882', '1.8490022027370419145710042278124111872435976327485643069e+31'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('173121.73744340768266', '0.00000000982290101590940367574518', '17624298276345.817480994098505871724687735852356624739604466130187169643522698514888693800981'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('72500577491.827058757', '1384314218.9', '52.372919747539160927851392742780993766761344937594789303944496239'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('0.00000000000016005742', '0.0001072510743316228614932735787327', '1.4923619273509435184608337879188270656177343392e-9'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('64.9247864841747039291', '4.942', '13.137350563370033170598947794415216511533791987049777418049'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('35996.281', '0.00000000000000074542201143965294641517170', '48289801545408412240.6700434620478582483162398124101957'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('7.28147866409558076', '0.03910511255889906305327760', '186.202728687416881931933868388966882657804173481008718667916'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('0.000000000000000823756117121327881', '0.000023106510', '3.5650391042235624549e-11'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('62583.79738', '178959437.41591752', '0.0003497093994241261156338351568369208'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('0.000000000443086974862808087088', '2487.74798091496736961', '1.7810766133145262917354356670998647e-13'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('2815926609336708.7', '0.00000000000000001001094905', '2.81284680930097102032499106565725654152640004e+32'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('0.000739794640371', '137321505041027011039861873710', '5.387318178241451967964081027204864758e-33'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('0.000000000000000000061851613', '24.062', '0'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0.0771696832062', '2.1', '0.0367474681934285714285714285714285714285714285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('2529', '0.08465350119477616', '29874.7241910422103039742193188143373076032334005926511491689125172187743129512536'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('5', '0.126482574333741460', '39.531137204772734573055325355697133859836053208427591310576043239956817198183217645'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('0.00000000000009378684189488673074114501086', '7', '1.3398120270698104e-14'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('0.0000187', '4465054263059521', '4.1880790015721968729e-21'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('3.1864657', '0.0000000000182219', '174870112337.35230683957216316629989188833217172742688742666791059110191582656034771346566494163616307849346116'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('39819077.7207634188', '3393.28', '11734.68671042867632497170878913617502829121086382497170878913617502829121086382497170878913617502829'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('0.00000000000000000493115050264682953202876', '53.5909308156704932657', '0'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.0000000000000310741', '0.00000000008984416638925743537', '0.000345866640526985787017354106989915167446365'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('0', '69563752623', '0'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('63.43260001676', '1086125180.7184756659', '5.840266034049510731491489501810883327466513892469824400126826926582081431415e-8'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('6523672727931649502', '0.000000000000000000434', '1.503150398140933064976958525345622119815668202764976958525345622119815668202764977e+37'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('12870616112352300332.7', '252600421736629380772963.0', '0'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('574191.68966', '0.000000000000034439', '16672716677603879322.8607102412962048839977931995702546531548535091030517727'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('12.1', '0.00000000000309613994708762118732362135', '3908092078131.62469168712555874225899954380960302'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('5.7302793', '50878587876729840772.76', '1.1262653975152556294179452325870732792984423847779921331877432894905264370203e-19'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('5573.086', '26150952594220522.98', '2.131122e-13'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('168186325277194054376873', '1.61', '1.044635560727913381222813664596273291925465839e+23'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('58236248756795.9900527', '252537967.550469224', '230603.9338229709497'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('0.00000000000000000001138047224833670', '566502039.976811672976', '0'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('715846101.8231243141900849', '2658.45445', '269271.531743989186720910301848504494782673443962901075848788757693403398354258054'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('559654492614629609571232', '0.0000000000000035492549047527', '1.5768224814318441564203219886464439859081537559261572461898277455455807566104982592423229234110550476113391222528392e+38'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('0.0000000000000000217172631', '43728.1', '4.96643190534233136129857002705354223028e-22'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('10918850.97505', '0.000000000000000009353517255427747', '1.167352416943894172108361615414923895822878e+24'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('1', '0.000000000024506088608155668091726061802', '40806185596.96214818148515993262878438760674256131327543011945572368751014760958644113863312'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('227794877.826863756631939', '240432470695110862966.411', '9.47438077595298409185055810628228404579316683619935327287797e-13'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('31611287495276783548533221067', '2073240039945.869561', '15247287765145673.1121303'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('0.0000000000000014148163739447713375129068', '28.413089850789', '0'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('29425898489.4727866910401', '0.00000000000160393107113352382657806', '1.83461116372519874093803481296646218449925093785900540751563279136392e+22'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('3737757585710940', '195050171601038626200196.154915', '1.9163057151040397991462588170012e-8'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('17.4433702063910', '0.0000000000000000031', '5626893614964838709.677'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('38750870710122252693', '17644957716082679631219376', '0.000002'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('524474068.7', '0.000002789', '188050938938687.7016851918250268913589100035855145213338114'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.00000464240477182', '3128190452409.2', '1.484054389413731560053972393e-18'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('2', '3418684.78663', '0'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('2.2467656', '7', '0.3209665142857142857142857142857142857142857142857142857142857142857142857'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('120346443.16', '10795.972253', '11147.3464677123'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('30.665927794529695749918529609', '13710005334545760885', '2.23675535101793726041875619585950659615902979082071524893692077e-18'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('6633593816637931424587', '444197881205229005', '14933.8709105032132218253006505943896289155435162360528575521807293744'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('1571.549', '1237.453980', '1.26998581393709687692789997733895526361311634'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('0.000000000000000015794505075839547404564047992', '6.1', '2.589263127186811049928532457704918032787e-18'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('76559.94', '111629.7005405322970563974', '0.6858384428989970505'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('244551812.15724', '56006595.2223526197705987', '4.3664823970523685618310184966997289543047553093959901'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('0.0000000000000000008642890306628732071', '0.0000000000000000065072462188738', '0.1328194756417952939496716723354783765019753'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('0.00000000000000000002071098103220294112', '0.00000000000000000169909', '0.0121894549624816467167719190860990294804866134224790917491127603599573889552643'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('0.0000000000000000150048564643898532465014623', '0.00000000000000062620106822249151915', '0.0239617228807705788219886937261993269368455270569958890204360942043911812763'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('6', '482332800801.1376014798687', '1.24395437963875019892040028789683014676578136731092388876046146e-11'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('1030107435.88667', '22.98709', '44812433.23477090836639174'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('20.38421819966', '1388.8', '0.0146775764686491935483870967741935483870967741935483870968'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('0.000000290', '0.01226', '0.0000236541598694942903752039151712887438825448613376835236541598694942903752039151712887438825449'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('9011546386.3', '600935335126742567574145813', '1.4995867041833020699502671609097127059674764e-17'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('675890990.187954036', '168219.67', '4017.907003312716259638364526574092079'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('111440801838835', '72724921.52233375857078', '1532360.56507275334901916822250664379203332142633090814283424789804076617073030238973326672111201'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('313.58', '2414861916168.724704150652', '1.2985421563875886056403211877459005314470820608369116293430403688704059998594562355e-10'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('81465775764.6721077', '21935100139.4945706812436', '3.71394592441323793557453488321185928621238370485979200381224'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('11792938.18701', '66040043', '0.1786'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('2', '8337344.083', '2.398845e-7'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('283001531705038626', '0.0000000000000000364782', '7.758100227123011168314226030889682056680428310607431287728012895373126963501488560290803823e+33'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('90550804574.460682467', '552.9449449953936', '163760977.3'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('5507.2276', '105395.8', '0.05225281842350454192671814246867522235231384931847379117573945072'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('2.60', '0.277947421041438305408673', '9.3542871894910447489326863886756667775526560092606691887434241614357773209297510953944'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('1.627811963945396061', '1.1', '1.47982905813218'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('16191893456602475', '0.051415', '314925478101769425.265000486239424292521637654381'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('0.00000000000000000016175855761', '0.000000060', '2.695975960166666666666666666666666667e-12'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('0.0000000018311297116910805120217377', '2.3', '7.9614335290916544000945e-10'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('664.1450778', '2815689593.9115356966', '2.35872973795159871701992471952059263967036190631445213618529e-7'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('47797327162.2', '87470295196300621.499466523701', '5.46440675145011867816909510499127013339953114016677191490819e-7'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('83837224395420149', '5.4', '15525411925077805.3704'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('552.696169530231988140', '3279501', '0.000168530568989072419291837386236503663209738310797892728192490259951132809534133394074281422692'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0.00000000000000997268', '0.00000000000000000012240324757473093665387564404', '81473.98208459602353194963615251083215979921534755534180942844561629851421128799181515050003304'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('975027858433.3925', '0.000000000000013521480722321248062', '7.210954764915778782160596306991516802579265488282443328731892e+25'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('15061.884981243', '68354258636780906782812232', '2.203503524378554846533499723090610604e-22'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('0.000000000000000000036671006543330', '2447454417984.5014868313', '1.4983325643927158634340427366961e-32'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('178402158272272733747.98326', '0.0000000000000000125814945508250840107533', '1.417972702301677408463731595182742641977077119785296004418407146971519328221279829833e+37'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('42247173', '0.00000000000000000504442268', '8.3750263766556532887525594901179058214844121666664142426700848946305982432066933772488708261854060176e+24'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('765659229728755695156.9082', '0.0000000002856', '2.68087965591301013710402030812324929971988795518207282913165266106442577030812324929972e+30'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('7', '643470.0303827', '0.00001087851752137825493530528816743596623812029865737703697532239061630286202'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('397.4', '983057.9893', '0'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('5103.92', '0.00018068326073165321903680074', '28247885.16286646527'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('19.61', '373318.166171813', '0.00005252892'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('0.000000000000000001662577895090753263', '2228416234059060691616130', '7.460804986e-43'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('54297525.059590468063632576129', '0.00000050686352239646624582390441', '107124546668637.95578'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('696047.2912663272603657890', '154', '4519.78760562550169068694155844155844155844155844155844155844155844155844156'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('982690266962.637009', '0.000000000871679040793538843583', '1.1273533272843618602522783702763994066094122611943721708491657217737e+21'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('11', '5233148807229.55195904', '0'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('364238.538076974338426991545', '0.000000002247870914170050579975634', '162037124009612.87206351260573'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('204187.458192293', '700873.253124745303', '0.29133292971582493162814663011415070407599267571475859793180279506135196600778935'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('9757567873.2439599', '3.62394191', '2692528775.452683760044045518378632068084115619833432'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('566814769534522178180', '3.587855605105755455', '157981488644054496158.261832756780430094168'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('0.00000001479126040527474770', '29128.1319', '5.0779982925285873550991e-13'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('496', '48738201953', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('6316787574385342587.5140', '27395538971708885508405597', '2.3057723306369805e-7'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('849919316761557510', '2.6', '326892044908291350'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('7.089610589881496', '57235949.3794', '0'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('240375088183.198416', '16.31', '14737896271.1954884120171673819742489270386266094420600858369098712446351931330472103'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('419.98071', '73751832.2', '0.00000569451222392818059372903280903169209673'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('235771.666012878', '552438.5', '0.4267835533057127625971035689945577652535078565306364418844812589998705738286'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.00000000000000000380753434486683321337165292', '2.0', '1.90376717e-18'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('11.5932', '0.0000000000000000262287535', '442003467682899989.890865381765092267918870029412568157308733714699785485422'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('10779351792796719162.3617', '1415090585486344', '7617.4288086949771952766896621959742901751841418823659573004'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('0.027598', '1.4', '0.0197128571428571428571428571428571429'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('0.00000000216460367495974647080', '3.3', '6.559405075635595366061e-10'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('11506516140.64410', '2', '5753258070.32205'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('85.52', '100993785025857123074524', '8.46784779658516429845025154337022e-22'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('6', '814288396.736913', '7.3683967793765940195459398039541052986450373e-9'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('4.4759', '0.0000000000000000281635009877150383490293935', '158925554104668817.1877179147909227857905'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('9844006.4346460', '279.163961', '35262.45436331948306178389552224472126615225953'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('0.00000053552527520459569140536870931', '35565565.400671653136477197', '1.50574092994591430064e-14'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('4333.7690', '0.000000016396479178639435474', '264310950709.8225768837965320956179316644683592293115566421757871173160024351'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('1349.2', '38.2013647053751026', '35.31810997867732026930769809015256179566815137'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('280835487062136497723.25201', '42329.881831', '6634450060204716.797884037305901356037262971115710696253656168161959261293738431839753179111585694235055564902'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('4204.803128135912', '647533787.553192160', '0.00000649356560068381793837735493734519852'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('4108.034', '41502.0203238', '0.098983952297960346169185015823757298470469311018163383187582111036063122867821'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('7117.131844542984516505045', '3', '2372.3772815143282'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('853147827.593', '2958', '288420.49614367816091954022988505747126437'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('409537.9932941849932417', '0.000000000008097424', '50576330607633365.035806449063307046784261266299010648324701781702427833839502538091126264352712665163637225863435'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('64548404726726447985505252', '5169956070701948.577270377', '12485290753.730218041121059766763942628372064639331888'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('23978.3767956833276762', '1941213317', '0.000012352262672883429264152322936078436'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('0', '1', '0'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('0.00000000000000134872', '3649502.8219702176842945945', '3.69562668065531484072725465054914173730388168818847787068078e-22'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('1', '383972970.8', '2.60435e-9'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('64227380.914', '89.343838182', '718878.68509929111520739703427844391194973298578407384499531529203897214320373241562469'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('1803264827', '12772665.85770752', '141.181554977564870796280888146795849121098557274333646474978278173712297'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('11.8685', '3.17951331950', '3.732803988336932645455458046'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('145236800.848226297', '328.64868256807', '441921.14118134255694083304943429217710315248716869087'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('14955841523.44', '0.00000000000000475', '3.1485982154610526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789474e+24'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('0.0000000001055969764713269265345397', '3778.15', '2.7949386993986e-14'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('6.217300712977116456', '7.1299198313676854075269195', '0.87200148950125'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('0.0000000000000000001872784271946', '356711.7224947037', '5.25013380229971635893496600115749563131312693014209454291234e-25'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('5811567928404769055227.6201925', '0.0000000000195380900225', '2.97448108884347784523962938071778453952509420627530021403349791019727603981e+32'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('10.7455', '61581069424.120772697182125341', '1.7449355947350730019666238078620874059537998722e-10'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('1', '42308.6368', '0.000023635835981366338893717322511322321781825880052935196437243754447791615'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.002785488234303046302207428', '1.4', '0.00198963445307360450157673'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('5.947', '105', '0.05663809523809523809523809523809523809523809523809523809523809523809523809523809524'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('2.4', '50665073.8926', '4.7369910188772809337536933684365420599224747453378591e-8'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('19399827615448', '2546.04', '7619608339.0080281535246893'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('263931.904077980', '83624.23', '3.156165432889247530291160827430040312'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('91706.33360594206', '0.000000000000098870608303590', '927538883187109868.41737'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('161998903316171603599847757127', '2139.036952885489870603', '7.573450430467807420229925168400494428730501521425893e+25'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('6.4425', '0.000000230427956814438850748584754', '27958847.0473'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('55162223949.3145005', '0.0000000000000000058055892489191465774844579932', '9.5015719480299621712483104520641446289238145666681103000866792017939064644550265334e+27'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('0.000012351236298682709183561906', '11683472', '1.057154611119255e-12'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('1.352595532125539064', '86151.5768663410948217', '0.0000157001831112622389924463794820232201336822917273663937690415503358498536'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('28.1334107', '6.824', '4.12271551875732708089097303634232121922626025791324736225087924970691676436107855'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('3448561079551.72267260994250', '1208814054325123900771.06', '2.852846612109453563467101964917726728235e-9'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('2913207326.4120702184705769500', '31554.98', '92321.63437948844266326826859025104753671211327023499935667840702164919768607047128535654277074490302'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('0.0000000000188959919227442507209461', '14249.808', '1.32605238770545194159430779698926469746e-15'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0.00000031961836747325457', '628.7', '5.0837977966161057738189915699061555590901860982980753936694766979481469699379672e-10'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('610034101.8572879443330203', '8065.5', '75635.00116016216531312631578947368421'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('9945132982.247494450109274', '2.41', '4126611195.953317199215466390041493775933609959'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('548029693', '708.5664168853676220272309463', '773434.4726764839502815725844759987873023'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('25997.17', '769', '33.80646293888166449935'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('6276464.5293', '378.02091906', '16603.484656106534'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('88300360.6026', '0.50561116620258089675226', '174640843.606727429932941719496777628734582536789836212832540484649057495692476'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('21.16741219283602783922082', '512734027803711870440926', '4.1283416050045097372576229860930386382999411296407709238604204e-23'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('26830021105.84961363460299163', '0.0000000000000001883525711904361599458', '1.424457385225858912736488224182135765865667880373955137231250317096420340613822190801088887299141094418604014554901224e+26'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('0.022730515253373487974270831830', '4.73699344492', '0.004798511021320902177430922'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('32405457534.532895960970708', '0.279953539011802', '115752984044.851739642674664558311418984715205308200769510374414371088058156651553305190395781681'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('1.24', '5318891663089000', '2.3313127593951734836103634998889199312706298537964626227454926e-16'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('32134243034308902.447648', '0.00000000003557211718244444956', '9.0335480650467983160859896413068900640325287143340989454864560338690857917062941638173614489939134650530200965585e+26'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('8947350374237878', '191180492118.8378812163353', '46800.54055241264323648724086136633393610145072949895919461150526'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('0.00000000000000061664380125508017650', '27.1869360236808', '0'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('148050826520.4', '0.000000000000179790', '8.2346530129818121141331553479058902052394460203570832638077757e+23'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('190.070694219797153451730144437', '426.8860821893515882867721', '0.4452492178826493267171157000626186131483155051939161332856002631084414'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('0', '237.460215612402342291', '0'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('127235244.05', '53434071963.16978915', '0.00238116316753'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('428164.011', '44.145', '9699.03751274209989806320081549439347604485219164118246687054'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('1040432', '2982551810.11597277', '0.00034883953950813'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('2304698169507', '0.0004144778913307', '5560485173546078.3675631854'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('1045458150034864935.83781190525', '0.00628845', '166250530740463060982.88320734839268818230247517273732000731499813149504249854892700108929863479871828511'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('23081914285899', '13.959238782420001626566338356', '1653522419500.97747774493812524342713467807159632915607501913202534462073519768222710262075897844837975492270633'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.000000000000000025892454234938166127524', '32.59885548', '0'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('31297232028431', '0.00655086199774837367044865464293', '4777574621353390.2574707866999292562230839279'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('52837979063971.2442597626177436', '587.5840', '89924128403.7197137086146282805522274262062956104999455397016'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('117.859', '10454576726143939267506148', '0'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('478927169.11064814179', '1119296.91529954804', '427.88214866336595130068781569467964999865783818'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('3.35882542084660020962', '31.4098', '0.10693558764610408883915211176129742946469'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('0.0000000000191708721587788884', '2901154135.152313', '6.608015729496013730478085632864760335459208463953329932685522914473784050887e-21'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('273.107661610370201929', '122427274028521.273025430086', '2.2307746682879312379082023740658364002119994404050678835260047063448449081464e-12'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('5946842851467660996.563', '2188055384510599896.03092', '2.71786669275640170258856706306481078824741653645053581726296288451453822022872797714977624025515142'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('82440663254486941', '25621.295162186026145275930', '3217661821255.6061952052808989660077314900348883939461791696025746833421521'); + BigNumber.config({ DECIMAL_PLACES : 25 }); + T('14528448.170821472', '0.0000000000000714841415', '203240157410598153437.9901589781280369716687442'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('2.0', '30.9005', '0.0647238718'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('255829.305796259299396', '126713.955', '2.0189513127915492764470969278798061350069927183631826502455866048849947111192291330501048601948'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('15431192834572000.90470021028', '0.0000000000000256620486562425459818824', '6.0132349686034171420539373578309006898207465e+29'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('4011508326542190985271384', '57100496547046048.45', '70253475.3482755194651509429045610952533282261'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('0.01036658009829337', '918438077.9387792373', '1.12871846e-11'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('0.0000000000000170838967453027186', '174825417059270589.9', '9.7719753985e-32'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('38032598982758946275.324739939', '190.0053', '200165990015851906.6327346655014360125743860829145292262900034893763489755285773607367794477311948666695086926523'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('4664321492627766.879150242', '0.0000000001428', '3.26633157747042498539932913165266106e+25'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('65.2095874987', '1198302437444680054032363.181', '5.4418304979631169022906688292950306147628879222266428749340814636e-23'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('88095913.78353840534589', '3.805535', '23149416.25383511263091523268081885989749141710692451915433703802487692269286710015805924791127'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('11122847708199', '20.20320310764714', '550548724820.21807841343324038758478501374293896644566334692417'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('0.130175140633411', '204070899', '6.37891738955935113511701636596406624346766855768102437770904316935458788761449e-10'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.000066665028671734084958731777399', '141645764535715667823', '4.7064611420078603678792513547827127555138290695677177785892654e-25'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('382.7', '2505476050361988469938456.90', '1.527454233476739551800040769773752108196110003643051660062558299452991821461e-22'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('67759000406154385', '0.02521038485909572693', '2687741610644528548.368391410155399301247432527422941953500610022370114419260848683535578313'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('198.383853', '0.000000000000000026046885269109038', '7616413669056942682.782827482640405300928645768'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('7.21768', '5267650284.16', '1.370189669e-9'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('0.0024940405', '0.00000000000004445742115581387190', '56099531532.85510601457749585122588484865796691686314093436613448'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('0.000000279619307867857', '4.0999', '6.820149463837093587648479231200760994e-8'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('0.0017159651994522573', '0.0000000027883556696', '615403.9881499116270414543818997745552165910821866696915586338656084908803'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.0000000000000000001786270', '2980122255611031775.7565027', '5.99394872689124187142255875398493175825317954487825271077e-38'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('2041261099.9740998108591522609', '79449621696975.89220008170', '0.000025692521328289682278091959382409222930806060726346373969158507394888032587019332899'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('0.00000000485557500', '0.000000000000000000139754896', '34743505515.5420100631036211'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('15732633606153.7198933614', '115169907056898', '0.1366036841410425335596073888079588254908008109030114564670131595'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('0.00161231018861641985218', '0.183341984731657095143027833', '0.00879400422645270526350420722026729302828'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('296746579.8824504809154', '9762616616582589361.5320', '3.03962135907705883681054572915476511880339479e-11'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('71.254220189371167106686', '7751861.939565268745605542997', '0.0000091918845749421547'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('6209.4706014993', '0.000895839658826', '6931453.12369495448238792705641479008'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('47366246100063.2483530828', '1052864669574212.36473815', '0.0449879718342'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('84016573140888713422197.0407', '1.73', '4.8564493145022377700691931040462427745664739884393063583815e+22'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('10.40710', '0.00002815302747971432552', '369661.842141092633726562850098552395700969276516140729940591267260489984119007491579317910120302'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('0', '52635556463940794625.52389612', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('11010.713', '7178387825026528633.499551', '1.5338699e-15'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('1627653770565866.500', '0.0000000000000004231550519086848290022', '3.84647131878531296895166013319158209474615570098230075915383876653657804044e+30'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.063494008345035770490303', '89.32856343726', '0.0007107917770292012652942201'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.000000000000000342711931874642283134641832', '8.238', '4.16013512836419377439477824714736586550133527555231852391357125515901917941248e-17'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('6.6', '7783302567285502979', '0'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('211153932636342.3', '7803357038552252838107406426', '2.7059370933963753050603072567861653549289587314010504955676166520166595e-14'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('102908.73467848', '0.0000000000000170569902', '6033229395798093382.26623358205364976993420562556224016591156862'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('0.0000760729907927999440250446', '0.00000000000015890209022486', '478741284.5554780228497926728465032749646985360069076951315538749220907'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('0.00000000000454090', '82.38851', '5.5115695137586539676467021918468970976656817801414299154e-14'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('301052414934642090.5101536', '21942.79', '13719878599514.559931082309952380713664944157055688907381422325966752632641519150481775562724703649809345119740926'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('-6087246795159.18662980254720369', '13611.20392390104', '-447223245.58'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-0.000000023978513162598438538147', '2.5', '-9.5914052650393754152588e-9'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-10144.9', '355958914523.554621619', '-2.85001992816468390198293884720241046712297231916127035914e-8'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-0.00037208840961776', '0.0000000000000000749073754354443486', '-4967313398110.3'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('15482718217056188596.158306', '-3352455.994914340', '-4618321087746.83378969593299088937142633533167566003637024236'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('377092496691345150.9', '-127498303155909435.136', '-2.957627571170285356160239808471211052581246176070421219189879159085886004136234119014365068954837'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('-1359703.8361769409', '36.38781', '-37367.0148375772243506822751905102285628071598703'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-0.0000000000001733589238387324800538597', '756272628912108.3558869229', '0'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('-10482707013782.55549', '0.000000000000121679703861816792268648', '-8.61500043235397698986559743658466273266437465901472939062822262498192727625876622201508442005841468469206e+25'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-2202688534808213716278667.2726', '1049513399766474713.9683415115', '-2098771.23560149862725671205968894910158582378774463142851564209037830648912689718707'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('-30692572.9', '28971193989065904244207', '-1.0594169129371666894834088126698235712e-15'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-0.00000000000245', '3.388023', '-7.2313559e-13'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('0.004268434057', '-101538473064491718754990.585', '-4.2037603365267495273770001874032686152883780431863e-26'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('0.245497', '-454143995', '-5.405708381104984114124e-10'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('4', '-0.0000000000758767', '-52717105514.6046151'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('246.08092818928387866', '-0.0000000000000000043867188851978938040730233', '-56096808259046366468.33190521818927387440240164527'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('-3', '138871518696208152678486.18', '-2.1602701750261150897669197e-23'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('-24226.54935845659225882121599', '120354.30303635593076853278297', '-0.20129358691'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('-31.8695', '0.00000000000000000002459', '-1.296034973566490443269621797478649857665717771451809678731191541276941846278975193167954453029686864579097194e+21'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('-0.000000000000000692717798321382073178', '517294.198627333564', '-1.33911766294604490628118e-21'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('77735.49995176549986', '-47.2', '-1646.9385583001165224576271186440677966101695'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('0.0000000000000466099043570323031', '87769334196052069911', '0'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('-3.4194', '4837700.127', '-7.0682347194605268264905002450971471717267108730817783489290674672e-7'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('150329968.0', '-0.0219', '-6864382100.456621004566210045662100456621004566210045662100456621005'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('-4349.077116612635', '2852268.76219665', '-0.00152477816054866830067962030945222428732198838066513557565729883663992256833991832181204355314'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('-0.0007857896787500243812', '15429864467', '-1e-13'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-967018952930714.206742', '170408633621.371104262290154', '-5674.70633606112939324782576385375368597464776233194192770922367669970714270241667204912917062429'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-751039058360574034', '3.4269', '-219159899139331183.86880271'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('-37883543940.646067824658736', '213.838736949', '-177159407.510348312652'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('0.521598040129430619', '-541426710309.1', '-9.633770004284620316710314975234305749627823298171e-13'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('-0.26883230588104219', '25.5', '-0.0105424434'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('7565247800163216.93336759826', '-3', '-2521749266721072.3111225327533333333333333333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0', '-85908895673544761.98836', '0'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.000000000000002767512230351828925', '-895895.2195206', '-3.0891025758935790503306645578e-21'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('-1613960445437020555.352446', '52527030079358711.55', '-30.726284029358260767137073087343550502479108754500356263252014494867642749749601'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('-0.000000000013246195', '2265913525391301918', '-5.84585194959e-30'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('0.0000000000000000040299737469408272864', '-11461814490866425552', '-3.5e-37'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('-0.000000000000000000045123419691119489', '378887.2632580407', '-1.190945805438390787770065e-25'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('-2228389446881164.569583386526', '1.7', '-1310817321694802.68799022736823529411764705882352941176470588235294117647058823529411765'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('48936887596017274238', '-161.7', '-302639997501652901.904761904761904761904762'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('40248.1752', '-733206848.884751441879538648', '-0.00005489334321033651263042538779438279572906654102547687346861817'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('6016075881224.5', '-18744.5787627104274450559393335', '-320950177.509061709657958921608109958611955412'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('357148', '-1014734345992278.2839833760', '0'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('-1.28', '134534.543991648127634449', '-0.0000095142850454784467426396195954924017894534202269264679132073917818193408954988'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('-3.1', '38.80056173', '-0.07989575051958919152483105042922789664468087070655922691972841188039161'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('-0.00000000126976154890935660', '0.00000000000000000099376', '-1277734612.893813999355981323458380293028497826436966672'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('-20845.30906', '0.000000000000000000172211024371950066332356', '-1.21045148741332894556456104033622585482017040899045184261921517e+23'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('-23790362294879356527851', '68497245877.7183', '-347318523395.087388040273290084163184839352772220510644863544098138054197759835512134442283185666047651385283'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('8.583931069048565', '-0.0053766853303', '-1596.509846070834137168810241466996'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('0.0000021043997569277', '-142495.10181961243', '-1.47682252235708723609e-11'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-3160482200893344218611', '2.81620627948542224771194', '-1.122248119363908290618108553960186614023265325364715436562859187676683476518e+21'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('861.846', '-0.000000000001368813673879419387625', '-629629887870276.4606141715970185467184132090190814468966283236638652154421410107'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('3129.8183167098383028206492356', '-6.7464917', '-463.917908134362383165853333162775550439052641241669355348054456214627819078173623188478835599842211323'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-2696.17096', '15758867512151197.01504', '0'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('199908738906066598302', '-497355133128.441314925906185', '-401943652.714730154441169259507959263404861416680136981594'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('212836227263', '-1161074202862496094.32493278645', '-1.8330975465502251557078469432276792259632438939752396515808467e-7'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('-8', '699941.1367930', '-0.00001143'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.0000000000000000004346846097188249974', '-0.6468606811307', '-6.7199108308609000589517673316350542100042998513190478019371229217e-19'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-7', '0.0124336761913', '-562.9871561958472313203613033197006802285389994302963507320206916253'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('-592487865647816074208.9', '0.0002325813133042', '-2.5474439766056511020103362077436364184786668630544257881063887332084867340910502792e+24'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('-0.00000000015150248650122631', '31299828314741213.7957670', '-4.840361582107257280684185621263865832363038403166941198514442e-27'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('0.05385251423043878014329410730', '-7009731.9176165631080', '-7.6825354897095149757976838088185670184786821e-9'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-2869296738160182.08', '5275711255483564', '-0.5438691769148360120657047290700255653760152871566722132296398692657076'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-3.086', '300617851.8', '-1.02655247568368127098698e-8'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-2162538670232.82', '76', '-28454456187.27394736842105263157894736842105263157894736842105263157894736842105263158'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('0.000000223', '11392868435907243260020946', '0'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('273.614', '-20.0768056468842', '-13.628363237279395299357053838579'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('21494.42065902', '-161359338353634278541', '-1.3320840850198e-16'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('0.0000000000000002441632932', '-22637271688.276618400030294805', '-1.07858975481770266889298727445471e-26'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('-0.000000000000000050', '159751141000999218.54446', '-3.12986809901328077371135748209199228658137e-34'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-0.000000000000000060253739715834011849757914', '-59185017.11969744078424660', '0'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('0.0828659039180798114893763', '-79044963871022419790863275374', '-1.04833881704711783221790638641876382e-30'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('141101753155.93921', '-61.7259', '-2285940798.85330485258214137015418163202156631171031933110736335962699612318329906894836689298981'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('352177978.04833885867316', '-3850238807.599', '-0.0914691258509121489638716902503655164940606905113607012645994921380742563922979856924531'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('0.000000000019242304009909548', '-1103.02862808630674', '-1.7444972433121590113350537202648637562642369357005293714752956472438159076957305e-14'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('16008715289429670922740', '-70717248310762607343318340768', '0'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('-80796416620772.49', '582234076329.1', '-138.76964593034812260683009705892276744363639278697810729615472539'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('-6', '2284317445897.9', '-2.626605e-12'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('0', '-1', '0'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-90293.2467603640021317080167', '514956.067659497', '-0.175341650348449452779933259704642639008984223699789775314'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('42.99', '-49723990781296484140030', '0'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('346867740262195.5276611', '-284675.8171779896732317330', '-1218465775.2130775565206302399188403995613678817'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('-197013.69860197495737', '1454360428173808638', '-1.354641495914175946154713798295457924435812369729510086473393391e-13'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.00000000000000000082484000183949687657521443975', '-1116673451057963519275795', '-7.386582004416989114355580556503329656812438480990852e-43'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-32692373581030122881584.1431462', '100.884572013739380306464098', '-324057216365826258794.9'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.0000000000000282742789950039935723613063438', '-3.57206025395698724841646772052', '0'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('5.22043785262', '-308402801281.85564', '-1.6927336038847892523762980966128027e-11'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('-21721356.9197', '148671949134', '-0.000146102590611240677675475615050195296647882313355451942116999083373300788758596'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('44960.510157279', '-30424592651942.0875382058813', '-1.4777686811333213974853344785940453236841834732823614913817e-9'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('-0.00000000000000011636910762', '449', '-2.591739590645879732739420935412026726057906458797327394209354120267260579e-19'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('-144539878734454885586679', '0.0000000906421996', '-1.594620158958001341206188028120182555675756129819250326312690232e+30'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('-22081842237071469', '284922994484996039870.1110722', '-0.00007750108859056755506349932481083822895927837291306991972114894458652246264255274407'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('2.14', '-269885643638262984.7870', '0'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('13.353763161', '-0.00000005203262508730', '-256642119.028112516115529004026114729912630471336538563109591'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('-0.00000000000000000063240380034504119331863466949', '7', '-9.03e-20'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('1084295779773917230', '-21463532888.28479949279732', '-50518047.77049291306855488793938320622722483061248617095243'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-6.0029075812975942', '13463169477049170.25', '-4.4588e-16'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-0.0000000000945', '-1295.635726084497405947123504', '0'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('145207619444229.4', '-5641010', '-25741422.09360192589624907596334698928028846'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('8150729348899225.709684485', '-9', '-905636594322136.18996494277777777777777777777777777777777777777777777777777777777777778'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('26.7131833488810748720784483088', '-374128', '-0.000071401187158'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('10298.7', '-7840043630', '-0.000001313602383613265682808451411640932411494755929'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('-1500987398.158', '8385183368233', '-0.00017900471966354879364379251712996007835290064246'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('-942418105884.9762426609', '0.625214732956398862117578921596', '-1507351084688.36812446263084236256657662852815385546645436201131093940206583773952585385929168203507616'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-20468473392546630967438.9133608', '0.00000004046201823988790038541384227', '-5.0586881927626106144306203802293948e+29'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-0.00000000000001075547910728888542191909', '233.822', '-4.59985762985899e-17'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('1177836559.736550390351', '-0.00003760747700316374', '-31319212390596.278110929242370854304284800424'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('213.88961302626348247', '-0.00000000000000077361085634702828288292462', '-276482176111443228.824'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('46697093.4', '-20723907537471492012355.0213', '-2.2532957800340329243884850474515815198739629799399150373623375448972808133929339818853e-15'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-40658898945782219470416.90374', '19405449003411531807950.568095', '-2.09523103220308234863'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('-96200111.213345', '12.685992', '-7583176.09007990861'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('89621369.6424', '-3620221212', '-0.025'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('-1234363566267.41', '12163652.21', '-101479.682660822312347255117712708755588466'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('383468905455.437167186810832818', '-101796.9774', '-3766996.9703387'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('2295041689330090973975', '-0.00000000000617787320497619', '-3.71493815619502705822351101397463883321e+32'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-0.0017097176217824664195662', '0.00000000000000000720119661649', '-237421322154624.8046104500149285855150555985177148448416034369290736104940637453160060704'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('0.00000000000569151899406225575759269', '-0.0000149178498425356740446144', '-3.815240838417525618960024220365413235083149662771580580992606563675918370259e-7'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-8372779', '0.00000000000001464686057743249018718', '-571643251175652254131.4321136213344319088513737753429223932116218317349858742115861062'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-0.0000000000454859144088600', '0.00000000000000032397823887905649', '-140398.1'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('-0.0000000000277', '57961.55509', '0'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('311741.778345224139', '-0.00001931836468259', '-16137068715.04348943826012100910946705383379688484949265737951759265510715242504017557'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('0.000000000000000017333930078997', '-1502877529963110785422463329', '-1.15338274299852455941403316073046645113191957535e-44'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('439329.418790988247209033736745', '-71451006680046026674105824', '-6.148680602336129939194989800776385838981449739616371547331751596e-21'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('32485531877991.2396', '-1174912009878725269619108527183', '-2.764933169875793919833937614169141e-17'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('0', '-1.0626022746419562', '0'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('115148.6131710989310000', '-0.00161', '-71520877.746024180745341614906832298136645962732919254658385093167701863354037267080745341615'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.000000000000036725683560979526299402', '-252.8367493753159247015399810', '-1.4525453143863666557198601432320272195848995490868650390224984029622493e-16'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-4.68415', '428.865838789', '-0.010922180263242137211922097044702043700039562304024750374555298'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('1789034028666225905476933590', '-12.1431059167', '-1.4732919575426154657687418851928163e+26'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('0', '18752004595259004034.232', '0'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('-33094285525423.1', '1153.535673900762509691107259', '-28689433950.067995403484583593162726553039749442560958950377965'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('154924518173.06', '-16072344477308.433', '-0.00963919846241402539226090125981243883973606734009921417279060345236051624015836410289373835'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-526755.99680798148680', '1031144031041433508617', '-5.10846187293514320791149086796475886359358206319575561796437535800006e-16'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.00000000129532365', '-66423.203042185957717085805', '-1.950107177423119163185231356838612799231416661465646416511454368111971e-14'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('49088919081620947576823900', '-89496.29598784', '-548502242911714858575'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('183.6', '-110983133499774', '-1.65430542651216342730485032605941781391214214028246142575983256304636345629264899194e-12'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('-0.0000000000000000004628920720112747389', '0.0000013627927993533014921', '-3.3966430717195977e-13'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('29351', '-40833836436.51245', '-7.1879114385037733803822287841037363472380354594428602889946812795942962026677767562e-7'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('-4306.1915', '3.25', '-1324.982'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('0', '-124478312817954.3812142660817', '0'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('-44426.901196', '383655444836490633023882.198874', '-1.15798959180506911643331401407257423616980032323967173929e-19'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('0.00000000018875376062486570745829037055', '-4', '-4.71884401562164268645725926375e-11'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('0.0003661179207403712', '-356285096184.2311059', '0'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('1475.970509573956', '-170444236', '-0.000008659550737602860327878732138527700050824833994386293004358328667682255913893151541'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('2.91398', '-27457681923.8431588', '-1.061e-10'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('1.5200', '-611647.0045456291518890', '-0.000002485093508'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.000000002795986705820173250725441998', '-15812956587128.3811178703066463', '-1.7682e-22'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('16931675', '-166.933029172849586', '-101427.950381636103707826792452493472486374033343802'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0.000000001827969353', '-0.0000086263', '-0.00021190653617426'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('-15370.000', '43962.05964298935764961', '-0.3496196521459171064989623731323059954874621505738507951156748277043685987999043389124165452484686546'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-118370977214.1226', '2025', '-58454804'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('-231287663424299.8513325014', '1737349688.89407', '-133126.718761799003983325'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('-0.000000000000000000114369682499894100', '346451176725.76308254', '-3.301177487136219883763263254954959553880615562738286765216e-31'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-0.00000006895', '-2334066710432.41962437', '0'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('14814025653103.224687451232', '-340.9364406', '-43450989360.45859771157366860830657712920347769947358'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0', '55384', '0'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.00000602239289726264791395945362007', '-3612.49', '-1.6671029946830712095976607880077176684226e-9'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('0.00000003076765653944140249326946', '-0.000000162953028546', '-0.189'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('3551.6170974', '-0.0000000000000000000403993958947885250', '-8.79126288583477177063322788976061895e+22'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('5117.1807', '-426.74033433604132955959062', '-12'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('0.000000449865656708', '-0.00646', '-0.000069638646549226006191950464396284829721362229'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('-0.000000001509496360', '368453885855070.481278236887039', '-4.096839300519015147813166237174198490790445033523731055e-24'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('10325083760456', '-1', '-10325083760456'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('195201713159.041', '-0.0000000000001678706857378681675919804', '-1.162810006410830522982744130340477246447936427266297453527042507162937872390754988322320136761669503e+24'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('-90.68053083405683', '35295599838.32309719026533760', '-2.56917381343376780493451453883388246130562997049418718691415e-9'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('-2849157.0', '9.52990', '-298970.29349730847123264672242'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.000505068647902848043', '-7.6', '-0.0000664564010398484267105263157894736842105263158'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('83219971646936300794306.13542', '-0.00000000000020', '-4.160998582346815039715306771e+35'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-4154268181473153337', '72414644.088348531147124', '-57367791194.34452029'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('-457067781911.9760754982805', '0.00000000003558631116216360943173283', '-1.28439213558595446764566555636062725371453e+22'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('56767989770720959.22', '-444092006075594509263.2', '-0.0001278293439064016'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-675391228125677423.636683', '0.00001721212', '-3.923928186218068568175698287e+22'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('-1.29524', '6294.488', '-0.000205773686438039122483035951454669545799435950946288244572076394458135435320553'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('3.068', '-0.000092452460368206301035469113', '-33184.62253769356579735779815488922331806200909209429126300172358138439344947294183'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-2.78626', '1746.468083380448', '-0.002'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('-2215841545490634361451248', '0.00000000002340886937065013959436', '-9.465820456364455823068204109973565026106517233e+34'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('-0.0000158270981924009894', '7902019.222874', '0'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-13.29', '1285.2', '-0.01034080298786181139122315592903828197945845004668534080298786181139122315592903828197945845004669'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('-0.0000000000000000000478438', '-526009.834063261613852045748', '0'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('4610403834044306479816316.521', '-3256541.2', '-1415736375159112520.92137403973270782'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('207869.0545', '-72932990693088824862049', '-2.8501375375478438962361314970980939004483672608891163469734e-18'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('40.43714', '-188.50022950304', '-0.214520375421335272478907728712681066018083811'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('2.3', '22336677063984259.08', '0'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('0.00000000000002175927850', '-77224.6', '-2.8e-19'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-23149721658836330807558648', '5814442707701474997.222336', '-3981417.10609'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('1333.866734507903709876', '-7070734811057702133420280651', '-1.88646e-25'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-4560425036005.582776', '80.8', '-56440903910.96018287128712871287128712871287128712871287128712871287128712871287128712871'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('1511765514663409.78', '-0.000000000000000000073638635296164468110533683', '-2.0529515635145826662188281610788133129511185060716564e+34'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('-23543643', '0.000000000000000000041997393778663357', '-5.6059771527921033322615738603183415651793212065528791828636767e+26'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0.0195', '-126764211576876.83826753960421', '-1.538289061039449613471897578165359641323374205047037264562e-16'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('55.446', '-32030345653417401201.609', '-1.731e-18'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('0.52272269961315407', '-429.78662391', '-0.00121623771083814712664355334008235631038952963770007339128592007'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('0.0000002196701418358686', '-508970103971763312488546', '0'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-100004021095.663953962373635416', '0.0000000045534', '-21962494201182403031.223620902182984143716783063205516756709272192208020380375104317652743'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('34540.071022932280763', '-59.59207', '-579.60851205424280047664059999929520823827734126369498491997341256982682427376662700255252083'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('174778773.42377864467671', '-97.4', '-1794443.2589710333129'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-7.0', '0.0000000000000013579093424307028725254050345', '-5154983312413012.2373980900074522160947301027219'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('-1187429217160.895861976740510176', '47.88', '-24800108963.2601474932485486670008354218880534670008'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0', '1.2', '0'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('10.50184615828620532989098', '-15965843628.553989590163718', '-7e-10'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('64006639.058', '-1', '-64006639.058'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('738.4', '-10255.8', '-0.071998283897891924569511885957214454260028471694065796914916437528032917958618537802999278457068'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('-24476236689.079', '4846294.0932902599', '-5050.505854146693584867831531066272355208439244177011183672939584339049504634283845'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('-991408148470363235443.494311', '0.00002033568166712810', '-4.87521473191104750082000907017566350647135636561304848289376836699974824955973934646620653110942892413466703e+25'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('-0.0000000000023797696408774593', '134919162817006', '-1.7638485083880903111144426414213399524592121e-26'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('95453.16345044452', '-12623427274889812306472', '-7.561588574310356139348134041215762100188607179567923e-18'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('0', '-11304.9298719618293220229418', '0'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('-6', '-227222120700146329648915.5090', '0'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('-0.00000000109953701028880385490871706', '14.339249434385664063', '-7.668023457713924e-11'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('0.00029382283548', '-278902025.8720431895413102', '-1.053498390918115072872378281569812193389271328071295862109487360627803249206521e-12'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-2239906038.825625589977060', '0.000000000000013316056741104528065', '-1.6821091126109394436614252485124563576407825107313322043066091580430616518952605429463215316570249e+23'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('41558406932.761', '-0.0259981', '-1598517081354.445132528915574599682'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('-16889244448527724.5317', '16.5982', '-1017534699457032.9633152992493161909122675952814161'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-11527722853992907.0732990057', '215629.1589013135', '-53460871955.952735564767172042406358983030375524391982413602556287204128413064812902395638701593'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('-0.00000000000000006542517463648212668759', '-1160782864', '0'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-13057455871', '1800', '-7254142.2'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('0.000000000000000085892600', '-216414964601081767130693768.7', '0'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-0.000000000468753372916607326', '-25596.5', '0'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('-40713683082797.943619860501', '43214701062054', '-0.94212576003557844138763603612880795852464537338142536263733562676'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('11060731.4', '-10896.67463422902', '-1015.0557'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.0000000000000000444111786699613385010092826924', '-151.7938', '0'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('-438708982319.19364938635', '2514.766771', '-174453149.046796296079398927289229717597537000380541452605347790321983700174'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('-377609912449686010094993846', '0.0271867', '-1.3889508930825955709776980876678670085004800141245535500814736617537251670853763053257659075945223215763590284955511334586397e+28'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('-6930606.43933187535503068986', '18561.133929', '-373.393482631115783218843766148011614'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('599.205953130921538045659', '-1217874296044481', '-4.92009688583686517912820815455259e-13'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('632.22646', '-2408415565179017275087792832', '-2.6250721e-25'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('0.0000000000000072', '-0.00000265139479', '0'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('0.00000000000001580832780', '-0.000000001014640248863', '-0.0000155802293648'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('-28.5', '13.752930224', '-2.072285653734005303857637022502790820528778682182893041048849867268839'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('0.0000000000000056', '-2652.6094296414820878', '-2.11112873890253698896665555492939636611705010925282e-18'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('0.03257', '-5912515099441.78956893084628', '0'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.0000000000029469210063592843221', '-34552.055843', '0'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('2657.36', '-0.5708938602669787524359', '-4654.73564342990916910223309038'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-17.92758963011355837', '424797960970965706886524.5', '-4.22026263712195214473274707686480883537999661452279e-23'); + + // Rounding mode 8 + BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 8 }); + T('98.279720', '2.53957847', '38.6992255450960725777455500321673462604209272572703768432876972689093556538'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('567760561.7785308681773297', '25.70527530', '22087316.9'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.0012191112606041703889162', '0.000032', '38.09722689388032465363125'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('129657255941820913688848', '33081581802.919547384', '3919318511256.26277'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('0.0217584130', '20.190198000585', '0.001077672096101759964106368368502268997284037166777108290738'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('646.5843279', '269072952197356.049', '2.4030075212678825104846927800254704083201459834859925333e-12'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('7864078301796658569643944.23236', '10837904158.13', '725608769652890.8010656231924413617780013056071223314347263'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('78679420542045375.9975', '0.0782661303193792336016', '1005280575658712602.61680378079930506136624703481529194064192962117609952681462485873187679145246510441123971833116'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('7.514', '256.60', '0.02928293063133281'); + BigNumber.config({ DECIMAL_PLACES : 26 }); + T('0.0000605257696842294792', '8033035003.233', '7.53460798563e-15'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('13837937692767479166.65', '275610217.5', '50208362441.3070940182034434191468246274287708509935775512386437560138713'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('2.2565965', '100585389373.34587', '2.243463503058204274951773207641628982021885698427e-11'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('6133264803063744580897553177', '9995746.796702745151086720621', '613587451523571883660.1575705543668700897162744310354121480887959030268229442699890503634942309767'); + BigNumber.config({ DECIMAL_PLACES : 52 }); + T('559642614623878559406', '0.1484896293938559908', '3.7689003394269008645348669826984575696063765927445382806274759040238226477e+21'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('7', '5.583', '1.2538061973849185026'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('0.000019392833638', '912499614.60', '2.12524294013000452175752623052121560863177596349200693678846404194415535920819226174e-14'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('1856578117288670194.164370', '885051.284694629512509739', '2097706821508.3693696462196233117313417739235657909916514451444495705075128837'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('6.7', '9723.09', '0.0006890813517102073518'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('2714014896637441245', '34614182791153137', '78.4075970538614742132440602741198612612885622756238264830395543075257221019743367280142'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0.00020170', '8', '0.0000252125'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('102538367478655695.075405188', '0.00013596981288', '754125973308140181617.974349896009064802649156958963375459489710816464573'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('1128723265306.844245', '26132204626636641662.6', '4.3192806785093551895102839159321771479520060953807911856977757e-8'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('113223838307388069631593537.840', '9304003647533688952924', '12169.36736019031062911900307415852967418356356710503674260874013723509386108779872158719419219'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('12160.3647741798522812607676988', '60689168.916732881', '0.00020037125225531081480095322605'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('42884.218', '5329.5', '8.0465743503142883947837508209025236889013978797260531006661'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('60357614629933.010037051378', '574812381.00740122422567785922', '105004.026747217631156932482582114856103973819981158519761390819080955050829400336586'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('0.000150194537', '0.021', '0.0071521208095238095238095238095238095238095238095238095238095238095238095238095238'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('8804964.1459992689585824461', '40378291.606', '0.218061829656282386663549474688986176717443957923552571809617735'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('0.63909253839264108', '294.940692616505391', '0.002166851012395284369118179744'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('1023243.070', '9.51441130417414270754', '107546.650789743021923557496742565683663'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('7', '2117.74441844', '0.003305403588388'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('41488521062.77986', '0.00002008707', '2065434185412798.38224290551085847761769138057466818206936103672661070032'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('844263691.81902410775', '849374349595.80775419530', '0.000993983032594266994271775568537851134160059362982128423015854142015009634155367884379090417'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('13349918933820', '4.8', '2781233111212.5'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('103760735.6946522860573', '0.0004066794', '255141361216.359338725541545'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('68917515178552754.0', '0.14', '492267965561091100'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('1031321877143445764011877', '33533.28411855', '30755170698384932347.16716890130212497978525108505503021614960729391920145088917232195595937553032431988707255'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.02960', '1016451.52', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('17245127707901932.49', '15580355401258735553027686444', '1.1068507273273560966150042669129924380128661863167389006956883625215153093650921e-12'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('1', '209.18012626629520667', '0.0047805688707107740463542216'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('7.79', '153378108750701532.05407442', '5.079e-17'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('0.004200', '1635366313', '2.56823194082755940931504316733470588494383398736427316881e-12'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('0.0228701', '5645801207898376084612044', '4.050815669528912e-27'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('0.0033960799', '6.75182164', '0.00050298720568690851851353111276796109205278118099103103677365505762975'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('7.08285516742655064343921', '41358.75514', '0.000171254070473131524'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('0.261974324049215172124', '1038017550335', '2.523794746675218045305497922287208145983452082381019041925022001e-13'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('112905012578123386.8', '290487062922.09', '388674.8395690345891611134670102067513236044112423072681893863179188640425926943863878606519681'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('1.5087535', '187.4054956619681', '0.0080507430941161297879756641335428652573953779583996227223557'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('588.42740761976096', '9.5', '61.9397271178695747368421052631578947368421052631578947368421052631579'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('68296130005806947526.81816792', '0.039530792374', '1.727669138520136144003571951269382364645034069207549854209254257434025e+21'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('566421798102744783494667', '5195.650', '109018467006581425518.398467949149769518732016205864521282226477919'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('11359422564.37423411195876', '0.00006551526', '173385903747832.70511265253316555562780335452'); + BigNumber.config({ DECIMAL_PLACES : 10 }); + T('5.80', '407750993888797', '0'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('7687825.6738488', '1057505129', '0.00726977625263962194929458351591597812477370972637618'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('0.00078563973970489', '202107544290040667654103220.376', '3.887236087423997640951095666504554463e-30'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('7.957', '9332.9282488444250412050295', '0.00085257271756966648521864328811305903793546656282144671796441534561142844065'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('1363993.640215242473', '11322181003651970211710339', '0'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('70051191.07525111147', '180874508835.433332', '0.00038729167269770674'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('19.967022398', '911742389938', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('811691978843777618265931961', '1.39233479313', '5.829718418650414913702990162380156278182283191594640546408220604573322130150537811835339292897642824273878813315265443e+26'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('785907', '7600844.0115014771025450', '0.10339733308705953458'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('5417495622857086103130303', '42514587331142358.59392', '127426748.3925150700035933258199706194577051286199226663494412517'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('3580181223966485629383762', '86567.2', '41357248749716816870.40544224602389819700764261752719275'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.0000943', '0.001990995881', '0.047363232088976883222391759433278305210115098'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('8.91022368966896404786448', '0.03976933558288092342', '224.0475873955624205613672819256304872438280858760387773354384'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('381700.72', '2.2105', '172676.19090703460755485184347432707532232526577697353539923094323'); + BigNumber.config({ DECIMAL_PLACES : 47 }); + T('0.166', '3418904.547797444446176113', '4.855356377437969759910445352291295989815e-8'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('65903.58933744566987', '56.2615595533', '1171.3786439746873377398855234090000936127676128572206789737162868850253237119769182038338319'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('1364.6', '1', '1364.6'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('1', '5897.1660228538858402716968', '0.0001695729772783398899888240918068539485885533810472934733226537712262559577239337'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('1569245.6135066', '7114895275448.255083650', '0'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('0.00009130', '44.7', '0.0000020425055928411633109619686800894854586129753914988814317673378076062639821029082774049217'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('147753814958.677594', '1306.6440741771799803', '113078854.355744229099762226676784700240199575836518150301745721'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('921277167355764.87', '0.006283411187', '146620544149940711.17758921225920400679326097396147'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('68535077.68961895546', '0.00020476107110133807', '334707556084.72246032'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('1872307.169908427', '633.45', '2955.730002223422527429157786723498302944194490488594206'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('9107.60078475', '36542593.211876613610568939', '0'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('3.72394', '0.0193816788', '192.1371228172453255184478653108212690017337404229400396419736354314157760163'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('1.07', '0.55756802460172206', '1.9190483542601185304611221787'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('6.17', '389593.210', '0'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('38780128.7122', '3549568036202326830.2', '1.0925309309943740094679096249984072870308e-11'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('2', '22.81806926', '0.1'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('0.0000100', '1139564681325', '0'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('46.50319', '3416231842748933380.74230902081', '0'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('1', '7379791076831238.56', '1.355051910804748180507625617404703505832609199543246e-16'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('0.000022443054742391293104475', '0.008064051238131175', '0.002783099223907265067377410989707648496147253672561285876033737240647636187236'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('625145862686.997263120154', '2107779905203297.038208159865', '0.0002965897251149196483307959749934321300112818055438759362685105274'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('184386.9682167', '84432536994766383635239875.1', '0'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('3.5448928900685867111376203095', '163550.93004066', '0.00002167455048520543104468539239259044'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('318867142782283.0363615', '676591310394863109686.52422', '4.71284714839435475918651247413746523e-7'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('428.1', '777.391', '0.55068813505687614083517817932031628871443070475475018362702938418376338290512753556447141786'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.6926940356', '0.00039099680', '1771.6104980910329700908038122051126761139733112905271859002426618325265066107957916791134863507834'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('0.002130211805', '140.19660134762083', '0.000015194461096229350255974061693960641852324192167557092840177376'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('49981882492075177635482718', '145796595747510229984200694096', '0.0003428192697903148316427330346057289022069783388696851477455'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('152.8586609630441', '107410163', '0.000001423130332304254114203327295946846296099559964358307509504477709432393'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('2.933829723', '1491.3817233720637', '0.001967189001328589019839007543945424526885'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('156217760732890.34181906', '0.062726236685805602', '2490469203746142.36826638502513312167296'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('0.0000547574887966090149', '24563584.6437', '2.229214082e-12'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('27591022.7711878347573089269', '935.18100071', '29503.403886777445219371373877619759754411146691782752054238'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('11.076', '456170163920614807291064343', '2.42804130476352356723599286207859050694e-26'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('1', '912586039339459022586.3891', '1.0957870895371271241e-21'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('30521310.73994', '13399401100577405739962147', '2.27781156119169971932669239543326815443551088771527744274e-18'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('0.003060360361', '40814243495.1557', '7.498e-14'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('393562142372.6699944163', '2709111978097.9730553380', '0.1452734864983263187522827746799'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('159837823.83396', '14505.28645341', '11019.28075307911293485694830191635452262752322811523282893369238174101063535102774433337684219419086'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('277723.92715223712984194709', '909319009144881.8606790641124', '3.054196869956639796826219565e-10'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('5154325576234', '238231.85', '21635753.473912073469605344541462445092879058782442398025285032207070549131025091733116289866363377'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('24812964145333591', '1878494699477.89929200135933136', '13208.96149040505631773529079144196060102935838240800320787494878988367434179429'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('5.4', '2417740018257723686.948179', '2.2334907637800353956807877701697903215360962459590518620256780423842788e-18'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('3716641856955803178.210', '3562351870.3701495053437060', '1043311270.8121171722993'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('922353440.1222198038485563827', '1171478560221579954809', '0'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('1616227508.5386179952261148005', '125752725147536.893701', '0.000012852425318357205'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('0.00002995', '269908512252198465961060', '1.109635251963271509119907392064404912967049003603986598448525389918281476e-28'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('0.26', '6792618697591', '3.8276843081477385884074285311309311873334525946946333526154459025428012291e-14'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('1084.902723556411673448636981', '13.27757', '81.7094335451751844237038088294770805200047900331159993884423129'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('207389914022.22221', '1053192.0136883', '196915.577906766007469497356564880225194'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('131.669219908878655', '0.0005307509', '248081.01108990800580837451241250839141299619086844694940696285206487638551'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('2', '53569022282027512', '0'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('0.03738172891910893041812276477', '52', '0.0007188794022905563541946685532692307692307692307692307692307692307692307692307692307692307692'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('412264171442951057.7361095', '50867725637.06220391', '8104631.498259390479455821393714832842253133346477938618046134121269'); + BigNumber.config({ DECIMAL_PLACES : 49 }); + T('0.000014599', '0.000244239824', '0.0597732170000253521309448699897523673289250323076'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('2985804868.615', '482745099093247954326254', '6.18505475088884599340849357229221901935477717691061428e-15'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('1116399', '84553466081700776.9557', '1.3203468192791368128410881062598342805009693925396921044310838e-11'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('56.47', '517123748551.41', '1.09200168e-10'); + BigNumber.config({ DECIMAL_PLACES : 87 }); + T('91890006292.8931376', '1571814055.6', '58.461117563817984221873629617643177410965506065169201175579562618589933927551016614029062'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('22630058916.8929', '158399.84399', '142866.67427729011363655699772258342613788075612864118452847978717254796'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('0.00257381701', '2728.0', '9.4348130865102639296187683284457478005865103e-7'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('2613.2484185', '2009900023138286.18110', '1.30018826230950390436120395966100721290467931993643111597e-12'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('0.0000561357186557576060078609217', '34430.01836170882655364741890', '1.6304295300111912206696516226345647077432147176729656846977674487871225e-9'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('19341833369042334971814.3', '792', '24421506779093857287.644318181818181818181818181818181818181818181818182'); + BigNumber.config({ DECIMAL_PLACES : 25 }); + T('8', '5878749.616759672569203', '0.0000013608335992390072977'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('0.0013157737110166924023882', '0.00002450730617641171810659288', '53.689038752171162045564690319695207836437329411996357070555570567750137'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('19810.5', '2877531874906.917236', '6.88454580564492706183282039699170937193096e-9'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('2445412586541380912833.924775', '0.012371088804317191', '1.976715732319369476938170286069551427398460449463285166e+23'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('13488954.69149290270474', '0.0002040', '66122326919.082856395784314'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('141.84130518408', '0.260237160284', '545.0463147895052597399253290108960863272'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('10641673.3330931452141539307931', '26227452783350405180887260', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('255357.87552', '294742078902132776442', '8.663773984059804047707640588294408274426684397902483873876159418581450563171e-16'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('211.47519696522740215766', '173739178.714', '0.00000121719924389274560754650074499488231764083760776421969750741617978476246522634980941596394612'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('6808350866.212', '4670611887821094.6', '0.000001457699982301074980352460135688'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('1724257.37586183654376', '0.016567742613356095142153', '104073162.89859702904495573149679115062463446876792498334187044473069739'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('0.2218267497479178849103995260', '1', '0.221826749747917884910399526'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('3056.9914315', '107136957848669820324475752', '0'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('4056795545010022719', '390912.7712', '10377751365238.64666972538143568331696398667058949237010755406089940506911737346687127115278038785139593822511'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('1442.5062', '276.5', '5.21702061'); + BigNumber.config({ DECIMAL_PLACES : 25 }); + T('0.0103820', '1359753057.55', '7.6352098951748e-12'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('0.000081938669733472684', '0.0003843206754115', '0.21320390750702984183938899483638612110791882628768645606333050734244129912757206051692144092244537'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('8060854277465.20', '34816969.58', '231520.84672227237532026473396482198954203181976069038458803168474951460723883023250755874659'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('46373882311.61444695839575', '0.00008180466', '566885582210285.4159945869831865324053666380374907737529866880444219192402975576208006'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('970857716.251238514376609', '2916245920577737.689506786', '3.32913527422578210495339372249610679e-7'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('4.63829341424348180', '5', '0.92765868284869636'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('3', '7785988.0942216998', '3.853075503963874149149e-7'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('1935.3968306', '2818173.183324', '0.000686755818291203686779830523099309085475682725743217320530154795724'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('0.0001212706832382449165409924', '50.62429', '0.000002'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('0.3383', '3', '0.1127666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('894753589335624184.1', '0.0007282180', '1.2286891965532631493591204831520231579005188006888047260573070152069847216081e+21'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('4935', '42444950178982881491.461877618', '0'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('0.000101227', '643454825446.7392', '1.573179592362523674372385137884108898258340821485311619323561798503395263196654097412e-16'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('447076.3579728966752', '1.1182', '399817.8840752071858343766768020032194598461813629046682167769629762117689143265963155070649257735646574852'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('32560.2485', '32.214236', '1010.74098109916373618173033810269472168'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('0.000089141364072600114211582982', '0.058894052315174', '0.0015135885640124804477286342832647245668598876396635397587634744519103678'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('39794.415496636', '0.23223897147290588944', '171351.153'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('13222.3699543614940085382082', '0.0000963257281071901769', '137267272.349582354600071093875354367370306911268702940649616770695129108517948339716901186'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('0.02110', '0.000014144469652', '1491.749108954148859309949615635118618161110251572972868364424979572927998813595955672527325098749'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('4183.27039', '1576756721946563.77771220262471', '0'); + BigNumber.config({ DECIMAL_PLACES : 11 }); + T('83913736210587', '10', '8391373621058.7'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('0.011284', '0.032590668', '0.346234081486148'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('51.6272963878555410936484', '23.642305', '2.1836828679714410711497208076792850781681397'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('583912624137558', '1124434060671107001432.3098', '5.19294678595075379865586684385004327138783407390491e-7'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('104', '3', '34.666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('2668382615715798173123151', '6.1137556071482670562425858300', '4.3645555811813892029201940395212164303426674241111771904485973967696192232876186631794064681353e+23'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('76.37127174', '4863221747.602433', '1.57038431935889035317222305715014276666744557610406465375819928e-8'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.000353856712310493111557783', '457025665893058678922', '0'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('62.65', '432183501730946.484920337305229', '1.44961572454939338754482668113673893912501326e-13'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('9484925.5725276', '643230.450929164', '14.74576578087428'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('29219153059082304711205', '2020940', '14458199184083795.02172503884331053866022741892386711134422595425890922046176531713'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('1.6167291799635', '319507008492609390.1421', '5.06007422995510608489707654880904e-18'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('7067930442222519996104.1426296', '11.105', '636463794887214767771.64724264745610085547050877982891'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('6296.23', '0.30350', '20745.403624382207578253706754530477759473'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('25220031721402951.1439', '97910318600212525993977680.5', '2.575829808539526912014591264828608640845044624118941024688322346629446658315e-10'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('1577.11816313025207154072242023', '17136.39555258', '0.092033249249595332110361240079175693431967185826632290859281004959240393304597814636353771505'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('3', '8', '0.375'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('15.1', '61290622253851.77', '2.463672164635439012310274841034978278027626024273909715584303482e-13'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('9.4', '1505720715559061196199752696', '6.2428575916283788173290365578659968143965835269092137878498321540696e-27'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.00044042684', '14883.434400120415248', '0'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('279581221438.3', '0.00013', '2150624780294615.384615384615384615384615384615384615384615384615384615384615'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('17.18', '174172032024380424.5303862336', '9.86381096914294541321544968454441351189152416981008744412356486973897e-17'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('1959.3331629', '33684517964766.44422', '5.8167172377216034752746539569641866632289466116513576163464801987e-11'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('3730145731260474.616558254', '2.491', '1497449109297661.42776'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.000070641941766584644730804', '0.3291958', '0.0002145894381598569748787925'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('184143180271115578469693.832', '5200058984134.449881234802669', '35411748373.03623806483776476169862920772983365204009241171274640979941377637'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('8.55', '18404481135049739859', '4.645607739365857875138332905785370282093050454145e-19'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('0.00052803317487995302294196', '28450974995.9125428563861', '1.8559405256087490728777491003348741e-14'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('0.000020', '372.226399', '5.37307403605191366343685902836784018642374690893431e-8'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('51.6144314750083', '2116334.32611183720', '0.00002438860006104760749'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('0.886692079005', '0.0002023', '4383.055259540286702916460701927829955511616411270390509144834404349975284231339594661393969352447'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.000949241051757155928548909473', '1165.73771369', '8.1428355676376772961269868393392014082124415480186282108101846530386484883357e-7'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('7321043.1701028857', '282.6', '25906.0267873421291578202406227883934890304317055909'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('7241749441.16774', '36082305498514055363620060', '2.00700851597910514724420850539022854346971126250568644267e-16'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('8540688406508771321', '224808745884484358105', '0.0379909081068283502508138011'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('564642157256018408', '2777587712980782.312', '203.28508605406733283559863484081688471149884747330661700082973938'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('3.8941', '0.03998275372309104208', '97.3944923095944659689339456020563758559352376616897052140538837623754354532'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('0.0000224', '199364221', '1.12357171651176065338223351521033455646988935e-13'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('0.0113', '17986834990.49682032535002', '0'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('128069584', '2475631.33113017', '51.7320904730729608717817979026539325079383306631134518864200470760420758595220747694463604796175'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('20278323832.0661423731861', '0.1495850174401728398628807', '135563869825.241981350361154937815718661'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('0.0003733162232627504541358', '1.7403268061162433011674', '0.000214509265'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('102.399781', '130071', '0.0007873'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.00332336560167', '660.1', '0.000005034639602590516588395697621572489016815633994849265262838963793364641720951371'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('56360', '28807118343416832832349805.843', '1.956460876375012671343578134305688e-21'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('27.357711909', '15558609318940.3897751906530', '1.7583648607781342108682741145181217107739262681e-12'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('5607917719.914091', '558327282741703577153', '1.004414058431111378001554170714674335379190033812125138541554850258693e-11'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('249808497289.8181921809718673', '0.0185459992', '13469670444600.158948619596'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('14336586303.42721833248000902', '21024.41925362603752626', '681901.6559020824006332647891439414806430356895809583512778821951970093031262272765580418'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('0.000034395345862687832644534811', '0.00001652814271194670', '2.081016993992104564925455017653318454262928188686141716832059463736505324616969324593'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('198.90330036522219270371510277', '1602784673888', '1.24098578933080834752366839927909796117707260510767283002611201469656961896181433e-10'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('0.03632017', '0.004017299637232151671383679', '9.04094124903860896103579352915717852236321040917032615566004912686786771493640555764773'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('0.01946', '4884', '0.000003984438984438984439'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('0.62463407084918258318382', '384926970', '1.622733971717239203020303e-9'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('1419000.37801892862', '6', '236500.06300315477'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('26344538006.17038043', '858.734', '30678345.10590052'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('189.722', '3455486245440338422', '0'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('167.217780', '126.20', '1.3250220285261489698890649762282091917591125198098256735340729001584786053882725832012678288431'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('0.00619980711742262658', '229.697222529847591027153095', '0.000026991214996589712065220243812489790598294903467466834316087386609129340267'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('1156127509047391571768106258', '1.353087336', '8.54436722809880449408112898042820792463613745624473127135970770773661279762358222233779002717678232707958771406e+26'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('18172196068.7813163195', '10605003.16917', '1713.5493293967174045549366342886814437849532107534024589004742410546015537'); + BigNumber.config({ DECIMAL_PLACES : 71 }); + T('149392168942196308754', '312.0', '478821054301911246.00641025641025641025641025641025641025641025641025641025641025641025641'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('391.572', '1.1', '355.9745454545454545454545454545454545455'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('0.96673694498', '13.7085477932', '0.07052074074976351886801546756852722061967680487745042354'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('214.4', '0.43055301443328664879070028', '497.964229288239863242612600332265970541721257966295542048'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('1095055008744.285325925138264', '88037833184697750.54782767', '0.000012438459343347647651984097273610566773214136862127891887384360629551'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('51602.4330', '135619076866053720687181462499', '0'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('0.00007028184408115', '20584916.77374118', '3.4142399e-12'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('103137069484639350621490975', '1254266677515076835', '82228979.95581932205041681001816617588816534716840801393930375'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('0.002352949776316576468515703', '15560944737919350', '1.512086711922343598163709834465958193941995575535050264193470963524169e-19'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('0.244246874443097643161156343', '17778708631589260712350', '1.3738167349743225615398361622673e-23'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('0.6638', '45060680816.33729984155', '1.47312465762685771e-11'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('0.015524617474958', '7', '0.0022178024964225714285714285714285714285714285714285714285714285714285714285714'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('0.0568396955226606', '659939362592299.9955462923198', '8.6128663850856334865e-17'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('0.0000230828799', '2.8', '0.0000082438856785714285714285714285714285714285714285714285714285714285714285714285714285714285714286'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('0.000040414341256', '0.0031768054343264', '0.01272169230740734109146649233'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('635959831206068.69', '1.555168', '408933202847582.18404699685178707380810304738780633346'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('0.0001571614099710879491050', '0.020578821462237', '0.00763704618651197903855922286'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('0.00014754453938996367291684948', '3075050.41', '4.79811774500189975477018212524197286248715512927e-11'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('0.0005313750', '0.000212', '2.50648584905660377358490566037735849056603773584905660377358490566037735849057'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('9364.18179191', '227835766622922.486875056765', '4.110057841536401041396709790606128539e-11'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('20148', '-0.000078632271431590126', '-256230675.1818648429115557343222536936245425718992431835224697391595895970615625701044674216738452373694001932'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-921.894009989260573959', '514388534758565851', '-1.7922133712057989e-15'); + BigNumber.config({ DECIMAL_PLACES : 30 }); + T('66521405510.01629', '-48902', '-1360300.304895838411516911373767944051'); + BigNumber.config({ DECIMAL_PLACES : 15 }); + T('581889.32710174', '-7866.565450148299', '-73.96993399333763'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-1475163898997127.72721', '1019385.134794294248591', '-1447111448.505482547670647264759973332601952136970965778734713259'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('-8', '0.00011624833430977163873508', '-68818.1903637610530937591533135243434320182013488787353488961419444528111'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('536833.51', '-235457808072736', '-2.27995628768515971005273362321288732621679476197e-9'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('-2.3', '0.09407820945226943370888360925', '-24.4477442054943092371310781031607983444036170357'); + BigNumber.config({ DECIMAL_PLACES : 96 }); + T('-62317227.2341800257128681155841', '10958052412530104671312.48329509', '-5.686888955095954081346146355051544269878892254825073471383095423168233097501145949e-15'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('-556640152383073368164.53313', '0.000036604270357539413472661607', '-1.52069730374620542263449302129499854522590056374565936140432611122454001940873820956241744673058327e+25'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-0.0157407207825538370645121', '12113643566876.76704861240', '-1.29942083037632508281427631131689432652032967665067885586284056e-15'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('511525.2279', '-66.8090889', '-7656.5215350511987000020292149201873040361129666595408398092972646420867445777'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('42.6846067', '-2.6', '-16.4171564230769230769230769230769230769230769230769230769230769230769230769230769230769'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('8.6', '-272458852453044.97821', '-3.156439925725e-14'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('208981138996906208725066.8939', '-18118433119346450.488842597', '-11534172.829424245585058743171248845553244466959846113220726474'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('-0.0227615913414513748477922836804', '4665626429468076679413', '0'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('-38044814.7', '2.379', '-15991935.5611601513240857503152585119798234552332912988650693568726355611601513240857503'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('-397.86', '0.002298920179844344917742', '-173063.859932247960585408862090972883740283911074216314411808372382313692635340707'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('51685561963424.5451381577385', '-16.83', '-3071037549817.2635257372393642305407011289364231'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('-0.000010668555882111627116088370650', '0.00008416476499059', '-0.12675798338300379903303284217452325857337407005384557301629'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('1123285937.04813', '-0.003447230110409', '-325851742144.030134809623043952486298'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-79.82495610066', '72101302094', '-1.10712225413891288829905163848343745557544687855855908698424677301223774484474152747746908e-9'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-0.000214517', '27679709518.14784249281694', '-7.7499729489341176647519227192100772644516641115525250883e-15'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-0.00001152511440495596', '0.0001319', '-0.08737766796782380591357088703563305534495830174374526156178923426838514025777103866565579985'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('2169.2587337822315790258986', '-967685.439747003687897785981', '-0.002241698226181198885348'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('186.799820', '-0.000014402200396', '-12970227.802959949870704465373417374576573000491389635292504230198742195032570771625305469746221687'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('1.2892420009404443435665766393', '-0.3549225038004799177988', '-3.632460571'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('494914737356784.284014520479', '-159011.43', '-3112447560.25893411570803733417151207306292384138674810986857988762191497806163997141589129787714002697793486'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-1.4', '0.00026216587619', '-5340.130532416717722793273189639974708105813151136021612836279'); + BigNumber.config({ DECIMAL_PLACES : 75 }); + T('358220529470.25669', '-0.0001091248704941257826247', '-3282666250582535.950193708009260499191050428762268451195035619392124715369404416631197948429'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('-189.4', '0.0091973594204', '-20592.86707659869327683189776759504315347958672453491714366274414255030846048852972'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-48672140160157', '73.93144', '-658341568352.476294253162118849571981825323570053552318201836728731376'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('8.32405', '-94.009538', '-0.0885447389391489191235042554937351144093485493'); + BigNumber.config({ DECIMAL_PLACES : 28 }); + T('485413125626845550010577', '-2.308405649336', '-2.102806869176013003277237098330653207893315340846251e+23'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('0.000030303062182398585532', '5615.142553715980101902489', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('-857454.7301', '0.00023612289361770881', '-3631391759.4464562046024198049188'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('195751.967', '-0.556542205447711769391', '-351728.88'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('0.0000489069392369', '-12046171705155914.063', '-4.06e-21'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('0.2006220821824234006', '-0.10', '-2.006220821824234006'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('2725870.084133', '-1.4342768250', '-1900518.8096328614945026389867241980989269627221369905352824758916396770198110117271120239'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('8210.08944865', '-82149482779765878059', '-9.99408538050128e-17'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('-0.01103011313368660', '1904.73990484135024047844', '-0.00000579087627956'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('-0.01018899241', '519599.967788720311293853', '-1.960930146582119710493071968453528963385076138400602109515536753485239657e-8'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-0.0412806625501653280343817407', '-6605974526412685975.82396189', '0'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('17688345680490875581110', '-0.000053541', '-3.3037010292095544687454474141312265366728301675352e+26'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('3642.900398786', '-17360896174256765.61091', '-2.09833660786923955709071436508473787176746608118033281259e-13'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('-22932124070.2182506600', '1945397643327886193100751', '-1.1787885191e-14'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('8307.080533', '-554720398.058517268977552335525', '-0.00001497525701610072910493703505165604011477203373720175'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('32.0164', '-15.61', '-2.0510185778347213324791800128123'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-2594.3661', '41737', '-0.06215986055538251431583487073819392864844143086470038574885593118815439538059755133334930637'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('2349542666.701711', '-0.0000363407350993121243', '-64653140897697.03983099125531067397124393085200528039966849015826920469849170827505958383252138462577507'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-22.7688843435139888868', '28472491.8500712528', '-7.99680072380352949070690389446558254500609937798743067872e-7'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('84897.39612374648963', '-64682.54868086172022', '-1.3125239783395539073033'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('-18.25404855094631466', '0.00585719349482019802578300255', '-3116.51793082971569759381063168299494472507903312005730635833'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('0.047433711910272230', '-0.000939', '-50.5151351547095101171458998935037273695420660276890308839190628328008519701810436634717784878'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('72098642345.315284481354999', '-0.02286207682868543757654306', '-3153634855029.96336309143018862141102770585463125873835803889089856907868038067'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('21950225.634589', '-0.035893469', '-611538150.1461728316090038553'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('-0.00045544597', '997635453811223890.29820722842', '-4.565254455022416410451577490449652559439570114735212605e-22'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('5090.164399792547140', '-0.000058909143485014942373', '-86407034.60723990212092751348007526730020692283178466934693483189785230728745656609720439573572'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('0.0025806746195240439454625754', '-32525.2', '-7.934385090711337502805748773258888492614957017943010342749621831687430054234870193e-8'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('44.296730067753045949640234748', '-0.00388', '-11416.683007152846894237173904124'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-201.25', '130131483168273.77839327424547', '-1.546512766167142301018891364819322533432990971012615965157257548118180769e-12'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-128.809982', '6405732799.895341', '-2.010854745644472408656259411541105094760193637504284772213346291930109324817156487049543931e-8'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('0.000052269102258', '-1664673323.2698522476451193', '-3.13990147660502308004722290350897703879064922995e-14'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('16766992795.1', '-493622972826.8', '-0.033967205170945558759'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('24.6995489', '-2935.512397900845181145712', '-0.0084'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('12416633304.1422', '-1713218269217.34511', '-0.0072475489709869423950617796012900409105793045430019523626605343732315676491255089889707304101753'); + BigNumber.config({ DECIMAL_PLACES : 82 }); + T('0.00058429560901413259189', '-223.4996587257249708151', '-0.0000026143020188284508944253752010197755692093993239021273378437427671345515998827'); + BigNumber.config({ DECIMAL_PLACES : 85 }); + T('-73.65632625', '10187412457998218929168.33825', '-7.2301309634490973876075189782676617424067705035020624821980420091e-21'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('-40288474081489912.5287798740', '0.003118', '-12921255317989067520.4553797305965362411802437459910198845413726747915330339962'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-0.00045913242914239307922', '71011.272331227915', '-6.465627414768697446502917699164923127824062512717097745876946532967035899862e-9'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('-0.0003492615907872644', '0.0342800946423312172564154', '-0.010188466351431078529400939265177739224038984282194427364946440046029426'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('-8828047.90240', '13.188', '-669400.05326053988474370639975735517'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('-10.8', '455674708458725423', '-2e-17'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-0.000409604124009511702', '-233228', '0'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('1932.63', '-32667209106279586542404373', '0'); + BigNumber.config({ DECIMAL_PLACES : 42 }); + T('2130052265525219972.646', '-12513193', '-170224519475.182710971212543433158906763445588987558971'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-0.7132711510741836008474325281', '88.40865828670340', '-0.008067887974966124783904418815296776144146903241469775'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('-0.00001126277262603942000625', '161562264702', '-6.97116535647324130330820695281689491007961966368648434e-17'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('-586.75296754911055535831', '35.195', '-16.67148650516012374934820286972581332575649950277027986929961642278732774541838329308140360846711'); + BigNumber.config({ DECIMAL_PLACES : 80 }); + T('0.776086383646642515', '-6.392', '-0.12141526652794782775344180225281602002503128911138923654568210262828535669586984'); + BigNumber.config({ DECIMAL_PLACES : 97 }); + T('42.29', '-0.05034030', '-840.0823991911053370758616853693760267618587890815112345377361676430215950242648534077071451699731627'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('227256304817.9320085444', '-0.1003890', '-2263757033319.70642744125352379244737969299425235832611142655071770811543097351303429658627937323810377631'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('3783.18', '-11739586517.66048634354', '-3.222583686664569046852339469987709053243224756983323597748964868092567456e-7'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('5.78', '-0.0000502832', '-114948.929264645050434339898813122474305533458491106373500493206478505743468992'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('-5.00156433', '92565353837836618405405052', '-5.4032790051903652329871560144e-26'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('863593873627265.70537', '-43735915.713064287918', '-19745645.1876530142368056074182029418922563'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('-0.15354410563827', '3288929397499.5962685', '-4.668513278363520974873296477282762059746136002437712528338780851356245937322918569646e-14'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('229890114416782030.08056591', '-37.807530838638400245497', '-6080537642036114.7456835225140765268376383310067514380539508252872141717409309944'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('9941870929.06806', '-3358772.97', '-2959.9711019075099916622230052065710175'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('-46.7', '4.605293411075756683738631435', '-10.14050481293683395755655889723066595780577435812636700075876312'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('2266752438236610.699', '-0.0979611376308566842921676', '-23139302922127443.056470612908108268132877406361862'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('133513037222052.14291163693983', '-0.000397277193', '-336070228985060672.5154669017961974978009875336588979574269192946094944846229821201943500442'); + BigNumber.config({ DECIMAL_PLACES : 67 }); + T('-356.8', '0.0683875261872944786039', '-5217.3257301751740172634542361525223377363378689532453249412045026797997'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('-58300936033', '0.04918400305331317406', '-1185363785249.535183066963261429880422864'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('298.01', '-10198157.91', '-0.00002922194406381769783754995807865461851826'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('1.2', '-5.3', '-0.22641509433962264150943396226415094339622641509433962264150943396226'); + BigNumber.config({ DECIMAL_PLACES : 23 }); + T('-0.002821', '-106305045395449711716048782', '0'); + BigNumber.config({ DECIMAL_PLACES : 93 }); + T('58495053224579838612300.5', '-1112637769', '-52573312585957.918000804896278871511146769277072779290130317336009829448814980861934051422624320422471655283'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-0.1229626', '2399515556875488807430756821', '-5.1244760488285738687261901227172107e-29'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('935083164002341.847', '-957.2', '-976894237361.4102037191809444212285833681571249477643125783535311324697033'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('1.524', '268049304.4019691396', '0'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('7696891453746597242', '-22509568.6', '-341938647982.2006558579714406432471566780715646411810842078954813909672174'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('24.4', '-0.000026530682908636828510866', '-919689.85811732710477113134993548660065552262575537647019098108562321'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('-2052451793', '117100687.57193624502', '-17.52723946850573534907177080966239301943331726617324'); + BigNumber.config({ DECIMAL_PLACES : 51 }); + T('-17.9', '2217096756690125948619632', '-8.073621480878746239396291441e-24'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('-34240510142429402130267', '0.055604689530495437', '-6.1578457557344659572813945e+23'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('313323156491867399786815977', '-0.00430783529772936694706', '-7.273331843884980391058095975851323643350714805610473847548110502947546366230915577073503055648810462653546019573783392309e+28'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('311358691277787.6', '-1.43', '-217733350543907.412587412587412587412587412587412587412587412587412587412587412587412587412587413'); + BigNumber.config({ DECIMAL_PLACES : 40 }); + T('1151.8', '-192975068238228458627.3', '-5.9686466781195719116452e-18'); + BigNumber.config({ DECIMAL_PLACES : 4 }); + T('-8', '74.597', '-0.1072'); + BigNumber.config({ DECIMAL_PLACES : 70 }); + T('1267199204.4131652693519', '-0.014679847', '-86322371371.6611126363851067385102855636029449080770392225477554364156520159917198'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('-4.481', '1915687744390066835523146', '-2.3391077241696816180526e-24'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('2405959.7', '-209509722348.24156491788952530', '-0.00001148376157933557325071647713617424522679150317564409169946439'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('1151.591068010863010128504511', '-54.6604', '-21.06810539276812848293288214136742504628579373733086475766734235387959107507446'); + BigNumber.config({ DECIMAL_PLACES : 27 }); + T('5916.3017', '-231', '-25.611695670995670995670995671'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('-0.0002384700118', '183118409490327229.213476559749', '-1.30227218805434513331503149314365575886990740421695023876621902e-21'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('0.0002014219970979045132', '-4.93', '-0.000040856388863672315050709939148073'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('-767014140860703097372522.5151', '16434171188416.6591634', '-46671908918.736329'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('-203.2', '4.63', '-43.8876889848812095032'); + BigNumber.config({ DECIMAL_PLACES : 21 }); + T('-31265.76', '10191402.68664719863169430224', '-0.003067856404198852548'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('0.268267682840', '885918105753', '0'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('-12588995.82179458699277817', '0.701527163626506085215990966', '-17945129.532428175045194547436271083018244231294058685535385380400228937'); + BigNumber.config({ DECIMAL_PLACES : 45 }); + T('-992018780823565.13392', '3', '-330672926941188.377973333333333333333333333333333333333333333'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-26173330.992', '8.48', '-3086477.711'); + BigNumber.config({ DECIMAL_PLACES : 8 }); + T('-170493257676246735617262.04499', '10.80358710', '-1.57811712071305220112736486375e+22'); + BigNumber.config({ DECIMAL_PLACES : 100 }); + T('-6906959.60', '9407767.3262708374245244592', '-0.7341762780115292987122079744142850443703895983541102275303996090477391895430144134326597802504634055'); + BigNumber.config({ DECIMAL_PLACES : 95 }); + T('-5.08', '61381677.31966371', '-8.276085343097352243225246041319390553129239542408643843258804626586400089724278985965211e-8'); + BigNumber.config({ DECIMAL_PLACES : 62 }); + T('-1.3', '2822.2', '-0.00046063354829565587130607327616752887818014315073347034228616'); + BigNumber.config({ DECIMAL_PLACES : 99 }); + T('22327.549256913788111', '-525.825053590610', '-42.461935018975493108432937323791650694124331089152628898105328287752793817472067926483567457443949944'); + BigNumber.config({ DECIMAL_PLACES : 37 }); + T('-68.4', '40178233.28429', '-0.0000017024143275793296039791592349212'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('13.5571783196468071', '-3906674804125031980.70004110534', '-3.470260259526048e-18'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-1.6947927370', '0.00093478551693440552256955205', '-1813.0284501604282491'); + BigNumber.config({ DECIMAL_PLACES : 54 }); + T('0.04167449018510273942113', '-66629122872660245.6882676', '-6.25469590298372730782974685843316163e-19'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('164.82798000560455', '-990819314730939', '-1.66355235061565443847751252090922147232097109306367609847291456437869387e-13'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('3214359.501680985909534274', '-84607147686054399607.60367516', '-3.7991583330622092924397e-14'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('-85071812507959907092.31582411', '107966170', '-787948785327.4771819016625681'); + BigNumber.config({ DECIMAL_PLACES : 32 }); + T('-1.570465', '2.9971073668330609537184', '-0.52399357373021164358447515821695'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('-0.0073642667970623825219304', '0.01145344098479565973859084', '-0.64297417752781724691846166835'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('1.7', '-16824578707.379760733', '-1.010426489463495110844841573599091411397272950299365084137154944465467224715526e-10'); + BigNumber.config({ DECIMAL_PLACES : 89 }); + T('798812270.702847936644301526', '-79.51', '-10046689.35609166062940889857879512011067790215067287133693874984278707080870330776003018488240473'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('-1.299454', '8004.841479908', '-0.00016233350819770820530404671484987'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('-0.0190239', '522.83', '-0.00003638639710804659258267505690186102557236577855134556165484000535546927299504619092248'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('-62442043252142283090506208', '14.233061', '-4.3871127406917094706828143292577752600090732e+24'); + BigNumber.config({ DECIMAL_PLACES : 84 }); + T('0.0004399996445417911980250678961', '-134.0023017', '-0.000003283523036244915470918869269691059343945582391440370311191453213672672310523454'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('0.0323', '1146967189758157470962250323742', '0'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-5.210261', '-76013934512.0464022', '0'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('9.34197271543', '-4428', '-0.00210974993573396567299006323396567299006323396567299006323396567299006323397'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('-5', '54679951', '-9.144119386646853432622863909e-8'); + BigNumber.config({ DECIMAL_PLACES : 98 }); + T('5809538458876614.65173', '-0.000065820880934770434742', '-88262848755153579674.22639768635508218962245506631750284731877517298470762606225560442252609045684756213856434233196746'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-1', '340.75965832813459886631469', '-0.0029346196815265'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-277371521.153', '-44777557615232.883346568', '0'); + BigNumber.config({ DECIMAL_PLACES : 90 }); + T('321329699077890420.0', '-0.054959132', '-5846702583983502869.004554147616450711048347706801482963741130409410396073940905762485477390727349915206084405'); + BigNumber.config({ DECIMAL_PLACES : 50 }); + T('-50991', '0.6868044740532371346008', '-74243.83784088085426709823312616743717983754249425435513'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('-0.000120441290310', '216649.584839239456162501679', '-5.559267071726496950311021531757707301526387557448470701670857855917810195e-10'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('6843756132777408.964571060', '-8337642.50506151526', '-820826286.162159650207137340791514170662502085774'); + BigNumber.config({ DECIMAL_PLACES : 65 }); + T('419163526950485.7943704', '-0.00004917483172934', '-8523944306664363599.90363875467675955335875353294710251836676874912657819834747285288'); + BigNumber.config({ DECIMAL_PLACES : 5 }); + T('-0.236843005402557395874861', '1.5', '-0.1579'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('532342857.5297788244197492', '-5761939038.69009760542392', '-0.0923895330990520328482967530989797578264603259772912967910090079486341090208488768974404'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('1307.7244266043028', '-0.28818143037500155679559881990', '-4537.8511200482333836543898407548020438761113521971507335877340969854020619281359552'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('0.0000477960642104884', '-181041361906850269152236.4', '0'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-323.955112704', '0.0078813362', '-41104.0849524982832225835004983038282264877876926503909324411259095888'); + BigNumber.config({ DECIMAL_PLACES : 44 }); + T('-262292.1', '1072575.00138', '-0.24454429728692993006926014171915344328141925'); + BigNumber.config({ DECIMAL_PLACES : 2 }); + T('2956132595.01', '-50401.6690247370435220430826', '-58651.48'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('5676617544463.3291058011', '-0.0001294173039', '-43862894476998366.103353'); + BigNumber.config({ DECIMAL_PLACES : 33 }); + T('-14034.485361', '3.521143', '-3985.775460127577891610763891156933984'); + BigNumber.config({ DECIMAL_PLACES : 19 }); + T('3.1953583224280239152771324254', '-0.3351', '-9.5355366231812113258'); + BigNumber.config({ DECIMAL_PLACES : 60 }); + T('0.02319087713874832466428452737', '-195.3568569238968712292022', '-0.000118710330949798973613611638758921415235452210491777756996'); + BigNumber.config({ DECIMAL_PLACES : 56 }); + T('0.0026885961270378768563633126516', '-697113.7', '-3.85675410917598787165323626777095328925539693166e-9'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('15229113.27979008967', '-7.220290962276', '-2109210.46802101817857824425202331681137611'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('-5152440', '64766249729636196474.030479846', '-7.95543978771139227186201962908190820450102455e-14'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('-938421.8866', '21450245005076368.89923', '-4.374877239760735098462950720592702096669156439208982521048129333147411481372e-11'); + BigNumber.config({ DECIMAL_PLACES : 77 }); + T('0.0009073724874207837136702749', '-3766012560572162617.7', '-2.4093719094843604552288933058486328450937613206964330785e-22'); + BigNumber.config({ DECIMAL_PLACES : 34 }); + T('15538845682.3562388159948296', '-0.0687444989815613827651', '-226037659922.7824863191382303245520144874104122'); + BigNumber.config({ DECIMAL_PLACES : 88 }); + T('-29138031.30817025752757358', '88266411236982977530910.82142', '-3.301146030502896052982289441461966780420841536448081827698849216028729898e-16'); + BigNumber.config({ DECIMAL_PLACES : 64 }); + T('-61372427699455', '1415.732442905657136447632', '-43350301115.8618984499232990588091165800884950710863885496745660589008360746'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('2', '-569050683079', '-3.514625427e-12'); + BigNumber.config({ DECIMAL_PLACES : 18 }); + T('363526582301.4518084891186', '-3268269711487.576009648501', '-0.111229064426261846'); + BigNumber.config({ DECIMAL_PLACES : 63 }); + T('0.4791194988641835627', '-0.810931185385530719294', '-0.590826333354539647435050491743172784471281849259579128368022963'); + BigNumber.config({ DECIMAL_PLACES : 59 }); + T('983952965426.54981648062537958', '-63475.224', '-15501370.50995755157131269642435606056309466509326536602690838869667'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('-37.81', '56942576133869218533854637.10', '0'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-48.7', '-14582137.8', '0'); + BigNumber.config({ DECIMAL_PLACES : 38 }); + T('-0.000146667280629921690732909814', '3021878494996', '-4.853513497408698137375e-17'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('3039292077236123159.32', '-27593984685063.73481', '-110143.28347008369726777856530040110856206001197'); + BigNumber.config({ DECIMAL_PLACES : 14 }); + T('182', '-134648744.10665', '-0.00000135166504'); + BigNumber.config({ DECIMAL_PLACES : 92 }); + T('-635676476389495916.7944722', '172.3491', '-3688307489795397.34640025506370500339137251079349993704637854215658799494746418751243841714288035156551441232'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('-1.5', '31879693713', '-4.705189496184919008478304573226876409670479571586466201505e-11'); + BigNumber.config({ DECIMAL_PLACES : 76 }); + T('0.0000279', '-2192', '-1.27281021897810218978102189781021897810218978102189781021897810218978e-8'); + BigNumber.config({ DECIMAL_PLACES : 12 }); + T('-2971343589643858485678.2686401', '230688638031.2', '-12880320483.065977816413'); + BigNumber.config({ DECIMAL_PLACES : 78 }); + T('1768622670603951253243859', '-126201.388', '-14014288579805090996.652580397927160674334263264996736802926446419115453785658839188044429432107355'); + BigNumber.config({ DECIMAL_PLACES : 48 }); + T('-38915187693075336.56', '719.89522079786089', '-54056738493062.336315315478163590351331437145382472291184377176'); + BigNumber.config({ DECIMAL_PLACES : 1 }); + T('-92775359551607483477579131291', '71883182752.8601208379452', '-1290640675588562405.3'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-0.02344', '911.263859460822351518', '-0.0000257225168722'); + BigNumber.config({ DECIMAL_PLACES : 20 }); + T('0.0038', '-245.9', '-0.00001545343635624237'); + BigNumber.config({ DECIMAL_PLACES : 13 }); + T('-16946311980', '0.001764987656345615401023347913', '-9601377051603.3661257139879'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-1123.03073661398124', '41522.0652587', '-0.027'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-14940430.01347909815', '1.22', '-12246254.1094090968442623'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('1', '-0.0000942', '-10615.7112526539278132'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('-1.0692667768653', '62962.669144861425', '-0.00001698255158791288496424646020355623304'); + BigNumber.config({ DECIMAL_PLACES : 24 }); + T('-32.6891915228641', '0.00645059910152821', '-5067.621008274985016344309035'); + BigNumber.config({ DECIMAL_PLACES : 72 }); + T('-0.0013343635561', '6168816912.26', '-2.16307855311456187633247331366957530777271193228421996285794e-13'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('6055431494598202868.2', '-1372350306661543044580.7', '-0.0044124531944973932536452240547'); + BigNumber.config({ DECIMAL_PLACES : 3 }); + T('-1.7', '0.0000305385095034731250877616028890', '-55667.419'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('-0.000246', '991486783059686310384', '-2.48112233267350671516856213469539e-25'); + BigNumber.config({ DECIMAL_PLACES : 43 }); + T('-4035659139.056', '18400905983022904453.709', '-2.193185021856745079114923818102201e-10'); + BigNumber.config({ DECIMAL_PLACES : 74 }); + T('1', '-0.0079', '-126.58227848101265822784810126582278481012658227848101265822784810126582278481'); + BigNumber.config({ DECIMAL_PLACES : 68 }); + T('1187259254676723679659', '-1', '-1.187259254676723679659e+21'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('304966065.08925', '-49232723.397167191', '-6.194377317481435280794506427738104875162245303157523171976148694209'); + BigNumber.config({ DECIMAL_PLACES : 94 }); + T('887049196', '-314364426.212411921301306', '-2.8217225679365911713093571314453907929521830667507799224920733788905780674766769010524330814454'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('-0.0000892413612', '58958', '-1.51364295261033277926659656026323823738932799620068523355609077648495539197e-9'); + BigNumber.config({ DECIMAL_PLACES : 35 }); + T('-99670.4851312832433', '127786924586760420866637090', '-7.7997405019018e-22'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('-0.00022589', '0.00860040', '-0.026265057439188874936049486070415329519557229896283893772382679875'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('47889.1', '-0.56208168562317', '-85199.5381185675954388235075661437977471302406124847280115841028426698063138873788413419'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('0.036061200587496281920624', '-1.83528043527', '-0.0196488775745005340153963205170020751953417079'); + BigNumber.config({ DECIMAL_PLACES : 61 }); + T('94417.0748138538586463487384', '-4', '-23604.2687034634646615871846'); + BigNumber.config({ DECIMAL_PLACES : 16 }); + T('-290', '0.0000148041', '-19589167.8656588377544059'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-36613111.97691', '2825805128774708465819.62849170', '-1.2956700943063875e-14'); + BigNumber.config({ DECIMAL_PLACES : 17 }); + T('61907365438.484557677', '-0.0000158111294483955947393', '-3915429675061353.29538835233699148'); + BigNumber.config({ DECIMAL_PLACES : 22 }); + T('192467.0837', '-0.5266083578447951', '-365484.2936555233201376118898'); + BigNumber.config({ DECIMAL_PLACES : 46 }); + T('-0.03838066877467', '7803864928460491941572351309', '-4.9181615938400858e-30'); + BigNumber.config({ DECIMAL_PLACES : 66 }); + T('-15293.66207', '97816906864055.513989', '-1.56349884292036597088070243434902399271543658673655501057e-10'); + BigNumber.config({ DECIMAL_PLACES : 6 }); + T('-181493926373969274.99', '4200.352646286398907588', '-43209211620465.022256'); + BigNumber.config({ DECIMAL_PLACES : 7 }); + T('-90.151120033248945250', '504332994175285143641.325202', '0'); + BigNumber.config({ DECIMAL_PLACES : 31 }); + T('-10934976.5157072837', '0.000807897039077844593', '-13535111513.9483119865563461117840534199074'); + BigNumber.config({ DECIMAL_PLACES : 86 }); + T('-7.078782346245', '562452681113034087.09605119', '-1.258556067727660567103258087527221857023473940131851320747440790411871e-17'); + BigNumber.config({ DECIMAL_PLACES : 39 }); + T('-41611910.9', '0.000056591459260165894', '-735303726816.780753985870216515746868307585972099723'); + BigNumber.config({ DECIMAL_PLACES : 41 }); + T('17.69243871905722', '-3320064.89', '-0.00000532894365177820967228143543905251804'); + BigNumber.config({ DECIMAL_PLACES : 79 }); + T('620024868943.9286103', '-27603607791950584.7404191', '-0.0000224617330320398345510739288525017312277972099335278166887587999495426915462'); + BigNumber.config({ DECIMAL_PLACES : 36 }); + T('-4.955174', '60392501515.881', '-8.2049490841126559991095403e-11'); + BigNumber.config({ DECIMAL_PLACES : 29 }); + T('1', '-30985.719547', '-0.00003227293135740069634988361'); + BigNumber.config({ DECIMAL_PLACES : 53 }); + T('0.8852094231267525926', '-19584914890083.56240806066', '-4.519853305949065037457201893338562051197e-14'); + BigNumber.config({ DECIMAL_PLACES : 9 }); + T('1565548130', '-1935.3', '-808943.383454762'); + BigNumber.config({ DECIMAL_PLACES : 69 }); + T('61790270543532479714380229341', '-4063.563', '-1.5205933941108450813825263528829256492393498021317745042958605539030648718870606903350581743165e+25'); + BigNumber.config({ DECIMAL_PLACES : 0 }); + T('-0.0000435052334368463012371', '219188662526371.256', '0'); + BigNumber.config({ DECIMAL_PLACES : 91 }); + T('-0.00006521496311421916', '1.4735162', '-0.0000442580564192094800179326158748712772889772097517489118884475107908552345742788576060446'); + BigNumber.config({ DECIMAL_PLACES : 81 }); + T('95.2451', '-3', '-31.748366666666666666666666666666666666666666666666666666666666666666666666666666667'); + BigNumber.config({ DECIMAL_PLACES : 58 }); + T('11298179623224', '-53438143.35488024586439', '-211425.3773412992683362572145230163175744530909060632329620342655'); + BigNumber.config({ DECIMAL_PLACES : 83 }); + T('0.001395397', '-52.8711906969003', '-0.00002639238839918557927088552480937343181967745671767997864643878031311986864968747'); + BigNumber.config({ DECIMAL_PLACES : 73 }); + T('-3.3', '0.000197965', '-16669.6133154850604904907433132119314020155077917813754956684262369610789786073'); + BigNumber.config({ DECIMAL_PLACES : 55 }); + T('45573.038', '-1951245006.57', '-0.0000233558768102170098357070718333190030237587540949009'); + BigNumber.config({ DECIMAL_PLACES : 57 }); + T('11697035101999953412797412955.51', '-0.00002645182103613', '-4.422015061278092346231915492159911911859012754718621042083122434161972684365584014570167e+32'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js new file mode 100644 index 0000000..69993ab --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js @@ -0,0 +1,39 @@ +var arr, + passed = 0, + total = 0, + start = +new Date(); + +console.log( '\n STARTING TESTS...\n' ); + +[ + 'abs', + 'base-in', + 'base-out', + 'ceil', + 'cmp', + 'config', + 'div', + 'floor', + 'minus', + 'mod', + 'neg', + 'others', + 'plus', + 'pow', + 'round', + 'sqrt', + 'times', + 'toExponential', + 'toFixed', + 'toFraction', + 'toPrecision', + 'toString' +] +.forEach( function (method) { + arr = require('./' + method); + passed += arr[0]; + total += arr[1]; +}); + +console.log( '\n IN TOTAL: ' + passed + ' of ' + total + ' tests passed in ' + + ( (+new Date() - start) / 1000 ) + ' secs.\n' ); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js new file mode 100644 index 0000000..daa0763 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js @@ -0,0 +1,216 @@ +var count = (function floor(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value) { + assert(String(expected), new BigNumber(String(value)).floor().toString()); + } + + log('\n Testing floor...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T('-2075365', '-2075364.364286541923'); + T('60593539780450631', '60593539780450631'); + T('65937898671515', '65937898671515'); + T('-39719494751819198566799', '-39719494751819198566798.578'); + T('92627382695288166556', '92627382695288166556.8683774524284866028260448205069'); + T('-881574', '-881574'); + T('-3633239210', '-3633239209.654526163275621746013315304191073405508491056'); + T('-23970335459820625362', '-23970335459820625362'); + T('131869457416154038', '131869457416154038'); + T('-2685', '-2685'); + T('-4542227861', '-4542227860.9511298545226'); + T('2416872281', '2416872281.963955669484225137349193306323379254936827'); + T('-757684868752087594264588207656', '-757684868752087594264588207655.27838048392835556'); + T('-438798503527', '-438798503526.2317623894721299587561697'); + T('801625782231888715214665', '801625782231888715214665'); + T('-91881984778675238', '-91881984778675238'); + T('327765350218284325239839632046', '327765350218284325239839632046.91682741746683081459605386'); + T('-7469045007691432295', '-7469045007691432294.362757245'); + T('8365540212937142194319515218789', '8365540212937142194319515218789.4106658678537421977827'); + T('-14109', '-14108.495051214515'); + T('49104501', '49104501.10055989379655329194309526150310568683504206945625'); + T('131370406', '131370406.330005158136313262837556068534122953'); + T('3017', '3017'); + T('-690', '-689.6944252229740521128820354989299283'); + T('73441822178', '73441822178.572653'); + T('-2330', '-2329.42655772223486531483602927572548264457'); + T('-834103872107533086', '-834103872107533086'); + T('-1501493189970436', '-1501493189970435.74866616700317'); + T('70591', '70591.2244675522123484658978887'); + T('4446128540401735117', '4446128540401735117.435836700611264749985822486641350492901'); + T('-597273', '-597273'); + T('729117', '729117'); + T('504', '504'); + T('4803729546823170064608098091', '4803729546823170064608098091'); + T('24147026285420507467578', '24147026285420507467578'); + T('-6581532150677269472830', '-6581532150677269472829.38194951340848938896000325718062365494'); + T('-131279182164804752', '-131279182164804751.430589952021038264'); + T('2949426983040959', '2949426983040959.8911208825380208568451907'); + T('25166', '25166.125888418871654557352055849116604612621573251770362'); + T('4560569286495', '4560569286495.98300685103599898554605198'); + T('13', '13.763105480576616251068323541559825687'); + T('176037174185746614410406167887', '176037174185746614410406167887.42317518'); + T('9050999219306', '9050999219306.7846946346757664893036971777'); + T('39900924', '39900924'); + T('115911043168452445', '115911043168452445'); + T('20962819101135667464733349383', '20962819101135667464733349383.8959025798517496777183'); + T('4125789711001606948191', '4125789711001606948191.4707575965791242737346836'); + T('-6935502', '-6935501.294727166142750626019282'); + T('-2', '-1.518418076611593764852321765899'); + T('-35416', '-35416'); + T('6912783515683955988122411164548', '6912783515683955988122411164548.393'); + T('657', '657.0353902852'); + T('0', '0.0009'); + T('0', '0.00000000000000000000000017921822306362413915'); + T('1483059355427939255846407887', '1483059355427939255846407887.011361095342689876'); + T('7722', '7722'); + T('0', '0.00000005'); + T('8551283060956479352', '8551283060956479352.5707396'); + T('0', '0.000000000000000000000000019904267'); + T('321978830777554620127500539', '321978830777554620127500539.339278568133088682532238002577'); + T('2073', '2073.532654804291079327244387978249477171032485250998396'); + T('677676305591', '677676305591.2'); + T('0', '0.0000000000006'); + T('39181479479778357', '39181479479778357'); + T('0', '0.00000000000000000087964700066672916651'); + T('896', '896'); + T('115083055948552475', '115083055948552475'); + T('9105942082143427451223', '9105942082143427451223'); + T('0', '0.0000000000000009'); + T('0', '0.00000000000000000000004'); + T('0', '0.000250427721966583680168028884692015623739'); + T('0', '0.000000000001585613219016120158734661293405081934'); + T('0', '0.00009'); + T('0', '0.000000090358252973411013592234'); + T('276312604693909858427', '276312604693909858427.21965306055697011390137926559'); + T('0', '0.0000252'); + + // ---------------------------------------------------------------- v8 start + + T(0, 0); + T(0, '0.000'); + T(-0, -0); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + T(NaN, NaN); + + T(0, 0.1); + T(0, 0.49999999999999994); + T(0, 0.5); + T(0, 0.7); + T(-1, -0.1); + T(-1, -0.49999999999999994); + T(-1, -0.5); + T(-1, -0.7); + T(1, 1); + T(1, 1.1); + T(1, 1.5); + T(1, 1.7); + T(-1, -1); + T(-2, -1.1); + T(-2, -1.5); + T(-2, -1.7); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(-1, -1e-308); + T(-1e308, -1e308); + T('2.1e+308', '2.1e308'); + T(-1, '-1e-999'); + T(0, '1e-999'); + + T(0, Number.MIN_VALUE); + T(-1, -Number.MIN_VALUE); + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(-Number.MAX_VALUE, -Number.MAX_VALUE); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + + var two_30 = 1 << 30; + + T(two_30, two_30); + T(two_30, two_30 + 0.1); + T(two_30, two_30 + 0.5); + T(two_30, two_30 + 0.7); + + T(two_30 - 1, two_30 - 1); + T(two_30 - 1, two_30 - 1 + 0.1); + T(two_30 - 1, two_30 - 1 + 0.5); + T(two_30 - 1, two_30 - 1 + 0.7); + + T(-two_30, -two_30); + T(-two_30, -two_30 + 0.1); + T(-two_30, -two_30 + 0.5); + T(-two_30, -two_30 + 0.7); + + T(-two_30 + 1, -two_30 + 1); + T(-two_30 + 1, -two_30 + 1 + 0.1); + T(-two_30 + 1, -two_30 + 1 + 0.5); + T(-two_30 + 1, -two_30 + 1 + 0.7); + + var two_52 = (1 << 30) * (1 << 22); + + T(two_52, two_52); + T(two_52, two_52 + 0.1); + T(two_52, two_52 + 0.5); + T(two_52 + 1, two_52 + 0.7); + + T(two_52 - 1, two_52 - 1); + T(two_52 - 1, two_52 - 1 + 0.1); + T(two_52 - 1, two_52 - 1 + 0.5); + T(two_52 - 1, two_52 - 1 + 0.7); + + T(-two_52, -two_52); + T(-two_52, -two_52 + 0.1); + T(-two_52, -two_52 + 0.5); + T(-two_52, -two_52 + 0.7); + + T(-two_52 + 1, -two_52 + 1); + T(-two_52 + 1, -two_52 + 1 + 0.1); + T(-two_52 + 1, -two_52 + 1 + 0.5); + T(-two_52 + 1, -two_52 + 1 + 0.7); + + // ------------------------------------------------------------------ v8 end + + assert('1', new BigNumber('1.9999999999').floor(NaN).toString()); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js new file mode 100644 index 0000000..e7bddef --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js @@ -0,0 +1,1846 @@ +var count = (function minus(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(minuend, subtrahend, expected) { + assert(String(expected), String(new BigNumber(minuend).minus(subtrahend))); + assert(String(expected), String(new BigNumber(minuend).minus(new BigNumber(subtrahend)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing minus...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 0, 1); + T(1, -0, 1); + T(-1, 0, -1); + T(-1, -0, -1); + T(1, N, N); + T(-1, N, N); + T(1, I, -I); + T(1, -I, I); + T(-1, I, -I); + T(-1, -I, I); + T(0, 1, -1); + T(0, -1, 1); + T(-0, 1, -1); + T(-0, -1, 1); + assert(false, isMinusZero(new BigNumber(0).minus(0))); + assert(false, isMinusZero(new BigNumber(0).minus(-0))); + assert(true, isMinusZero(new BigNumber(-0).minus(0))); + assert(false, isMinusZero(new BigNumber(-0).minus(-0))); + T(0, N, N); + T(-0, N, N); + T(0, I, -I); + T(0, -I, I); + T(-0, I, -I); + T(-0, -I, I); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, I); + T(-I, 1, -I); + T(-I, -1, -I); + T(I, 0, I); + T(I, -0, I); + T(-I, 0, -I); + T(-I, -0, -I); + T(I, N, N); + T(-I, N, N); + T(I, I, N); + T(I, -I, I); + T(-I, I, -I); + T(-I, -I, N); + + T(1, '0', '1'); + T(1, '1', '0'); + T(1, '-45', '46'); + T(1, '22', '-21'); + T(1, 0144, '-99'); + T(1, '0144', '-143'); + T(1, '6.1915', '-5.1915'); + T(1, '-1.02', '2.02'); + T(1, '0.09', '0.91'); + T(1, '-0.0001', '1.0001'); + T(1, '8e5', '-799999'); + T(1, '9E12', '-8999999999999'); + T(1, '1e-14', '0.99999999999999'); + T(1, '3.345E-9', '0.999999996655'); + T(1, '-345.43e+4', '3454301'); + T(1, '-94.12E+0', '95.12'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '-3.001'); + T(1, '4.001 ', '-3.001'); + T(1, ' 4.001 ', '-3.001'); + T(1, ' 4.001', '-3.001'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, -I); + T(1, Number.NEGATIVE_INFINITY, I); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '3'); + T(9.654, 0, '9.654'); + T(0, '0.001', '-0.001'); + T(0, '111.1111111110000', '-111.111111111'); + T(-1, 1, '-2'); + T(-0.01, 0.01, '-0.02'); + T(54, -54, '108'); + T(9.99, '-9.99', '19.98'); + T('0.0000023432495704937', '-0.0000023432495704937', '0.0000046864991409874'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, I); + T(-Infinity, -I, N); + T(-I, -Infinity, N); + T(I, '-999e999', I); + T('1.21123e43', -I, I); + T('-999.0', I, -I); + T('657.342e-45', -I, I); + T(I, 123, I); + T(-0, I, -I); + T(100, 100, '0'); + T(-999.99, '0.01', '-1000'); + T('10 ', 4, '6'); + T('03.333', -4, '7.333'); + T(-1, -0.1, '-0.9'); + T(43534.5435, '0.054645', '43534.488855'); + T('99999', '1', '99998'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '-1'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-0.00000020', '-1.5', '1.4999998'); + T('-5', '0', '-5'); + T('-2', '1.5', '-3.5'); + T('7', '-3', '10'); + T('0', '0', '0'); + T('0', '0', '0'); + T('0', '-9', '9'); + T('-15', '-7', '-8'); + T('-3', '0', '-3'); + T('3', '-5', '8'); + T('4', '-2', '6'); + T('2', '23', '-21'); + T('0', '0', '0'); + T('0.00000000022', '0', '2.2e-10'); + T('3', '-7', '10'); + T('0', '1.1', '-1.1'); + T('-2', '0', '-2'); + T('0', '-1', '1'); + T('2.3', '-3', '5.3'); + T('-3', '1', '-4'); + T('0.000040', '3', '-2.99996'); + T('0', '1', '-1'); + T('0', '2', '-2'); + T('0', '0', '0'); + T('3', '1.8', '1.2'); + T('0', '1.4', '-1.4'); + T('-1', '1', '-2'); + T('-3', '-1.0', '-2'); + T('1', '-4.5', '5.5'); + T('-1.8', '4', '-5.8'); + T('0', '-1.6', '1.6'); + T('1', '3.1', '-2.1'); + T('0.000000000000000000013', '-7', '7.000000000000000000013'); + T('0', '0', '0'); + T('-3', '2.4', '-5.4'); + T('-3.0', '2.2', '-5.2'); + T('0', '-2', '2'); + T('-1', '1.0', '-2'); + T('0', '5', '-5'); + T('5', '0', '5'); + T('-1', '0.0000014', '-1.0000014'); + T('3', '0', '3'); + T('0', '4.1', '-4.1'); + T('0', '-2.7', '2.7'); + T('-1', '0', '-1'); + T('-0.0000000000000030', '3', '-3.000000000000003'); + T('-2', '-1.8', '-0.2'); + T('0', '1', '-1'); + T('-1', '-1', '0'); + T('0', '-0.0000000011', '1.1e-9'); + T('6', '-15', '21'); + T('-2.2', '-1.6', '-0.6'); + T('0', '0', '0'); + T('0', '-5', '5'); + T('-6', '5', '-11'); + T('-3.1', '0.000000000000029', '-3.100000000000029'); + T('0', '3.6', '-3.6'); + T('0', '-7', '7'); + T('-5', '-1', '-4'); + T('0', '1.5', '-1.5'); + T('1', '2', '-1'); + T('-2', '0', '-2'); + T('-9', '-13', '4'); + T('-2', '0', '-2'); + T('1.1', '0', '1.1'); + T('8', '-0.000000000027', '8.000000000027'); + T('-0.000036', '-4', '3.999964'); + T('0', '5', '-5'); + T('0', '1', '-1'); + T('-7', '-5.9', '-1.1'); + T('-7', '-1', '-6'); + T('-1', '0', '-1'); + T('-0.000000036', '9', '-9.000000036'); + T('-6', '0', '-6'); + T('-9', '-6', '-3'); + T('2', '3.1', '-1.1'); + T('0', '-2', '2'); + T('0', '7', '-7'); + T('2.8', '3', '-0.2'); + T('-2', '0', '-2'); + T('0', '-3', '3'); + T('-3.7', '-5', '1.3'); + T('-1.3', '2.0', '-3.3'); + T('-4.7', '-3.0', '-1.7'); + T('-1.5', '0', '-1.5'); + T('4', '0', '4'); + T('-4', '0', '-4'); + T('-6', '-3', '-3'); + T('-1', '0', '-1'); + T('3', '-3', '6'); + T('0', '-3', '3'); + T('-2.6', '-1', '-1.6'); + T('0', '-0.0000000000000000013', '1.3e-18'); + T('2', '-3', '5'); + T('7', '0', '7'); + T('-1.8', '-3', '1.2'); + T('-5', '0', '-5'); + T('0', '0', '0'); + T('1', '0', '1'); + T('6', '-3.1', '9.1'); + T('1', '-3', '4'); + T('-1', '7', '-8'); + T('-2', '-2', '0'); + T('3.0', '-1.8', '4.8'); + T('0', '0', '0'); + T('0', '-9', '9'); + T('-4', '0', '-4'); + T('-1', '-1.9', '0.9'); + T('0', '-2', '2'); + T('-6', '1', '-7'); + T('1', '1', '0'); + T('-3.8', '3.4', '-7.2'); + T('5', '-2', '7'); + T('0', '0', '0'); + T('-5', '1', '-6'); + T('2', '0', '2'); + T('-6', '-32', '26'); + T('-3', '7', '-10'); + T('0', '0', '0'); + T('-1', '3', '-4'); + T('-5.6', '-0.00000000023', '-5.59999999977'); + T('1.1', '-3', '4.1'); + T('0', '3', '-3'); + T('0.0000000028', '1', '-0.9999999972'); + T('1', '0', '1'); + T('-2.9', '0', '-2.9'); + T('-4', '-3', '-1'); + T('-1', '0', '-1'); + T('0', '-8', '8'); + T('5', '-1', '6'); + T('50', '0', '50'); + T('1.4', '-0.023', '1.423'); + T('0', '0', '0'); + T('0', '-0.000000000000000000044', '4.4e-20'); + T('6', '1.0', '5'); + T('0', '0', '0'); + T('-5', '0', '-5'); + T('1', '4', '-3'); + T('5', '8', '-3'); + T('-1', '0', '-1'); + T('4', '1', '3'); + T('1.1', '0', '1.1'); + T('2', '-1.8', '3.8'); + T('1.2', '3', '-1.8'); + T('1.0', '-2', '3'); + T('0', '-26', '26'); + T('-1.2', '-0.000021', '-1.199979'); + T('0.00000000000000022', '0', '2.2e-16'); + + T('-0.00000000000000121361969403227661937847795811', '574992758622232775968317372974458171501.4254915170813', '-5.7499275862223277596831737297445817150142549151708130121361969403227661937847795811e+38'); + T('-4550837208408065075504522665550667460', '5.751431060476645646485961575720', '-4.55083720840806507550452266555066746575143106047664564648596157572e+36'); + T('7996662362107395829425.18720176386230', '-8731907507950', '7.9966623708393033373751872017638623e+21'); + T('-68461838113448256548677344232782026104.040843480437532', '0.0000142986280419', '-6.84618381134482565486773442327820261040408577790655739e+37'); + T('-665.7', '3908931.49090108734150120238488', '-3909597.19090108734150120238488'); + T('338109.679317396058', '-45.6', '338155.279317396058'); + T('-2471514788.354942554630483008', '-0.0000000055765369280717362958649740', '-2471514788.354942549053946079928263704135026'); + T('-18642529601026.27209290620938355635', '67022255553746002366834404466320.198', '-6.702225555374600238547693406734647009290620938355635e+31'); + T('27195199183.93214817879349469171272068644528813652023534', '-1', '27195199184.93214817879349469171272068644528813652023534'); + T('41026854231898.0486363115993557', '-0.0000000000000029972604673995461216855', '41026854231898.0486363115993586972604673995461216855'); + T('-1220181643016279028.87348578653647757882815849', '-4124297626266.931179306588915876637', '-1220177518718652761.94230647994756170219115849'); + T('174593431895507873748465653530769377174', '7.3340', '1.74593431895507873748465653530769377166666e+38'); + T('93091029642275068666781.0284945435443997658445', '-31928424886539383422.9555351175713959', '9.31229580671616080502039840296611157956658445e+22'); + T('-86027968259520771550471521850.6', '0.0000000000000000292728157559323008342389754688224199225762190199185607', '-8.60279682595207715504715218506000000000000000292728157559323008342389754688224199225762190199185607e+28'); + T('-1.44467944259873814286', '2.3245669450269604739750258313435250093720066817981549442', '-3.7692463876256986168350258313435250093720066817981549442'); + T('15548437865455556312866591689712167475961', '2.2', '1.55484378654555563128665916897121674759588e+40'); + T('0.00000000000000000020770604235293769845', '-0.0000992358273674621622485217917158420', '0.00009923582736746236995456414465354045'); + T('-1626846234967158413103510196475626.88719324087757539708', '-0.0000000000000007877989096708003891755677772229305473607860191', '-1.6268462349671584131035101964756268871932408775746092810903291996108244322227770694526392139809e+33'); + T('-0.00001339836', '0.0000333909797773140', '-0.000046789339777314'); + T('-20.6409', '-0.0000000000017673756783209754', '-20.6408999999982326243216790246'); + T('-0.00000000164445378704494553248164602947761915692700', '-294719705242476177981296942472301246209096', '2.94719705242476177981296942472301246209095999999998355546212955054467518353970522380843073e+41'); + T('-714.4854312', '479.74301995618099492271043882', '-1194.22845115618099492271043882'); + T('41306640988462651378.04879814073', '2.3', '41306640988462651375.74879814073'); + T('1888287331013305459263552414.6839815', '7369526522887481233382690934873900068542595569442820447065', '-7.3695265228874812333826909348720117812115822639835568946503160185e+57'); + T('-63087590127015461742418723247183314165549180801856.76047', '511852', '-6.308759012701546174241872324718331416554918131370876047e+49'); + T('-712813331685105224867937788768200257082.35597637750550', '-0.000000154423320652795188516788493', '-7.12813331685105224867937788768200257082355976223082179347204811483211507e+38'); + T('-0.00000021267799883027266680922532294584', '-99920149812553578396', '99920149812553578395.99999978732200116972733319077467705416'); + T('-0.000001314853272479802673030806326616332901672901446530', '-0.00000000000000177806', '-0.00000131485327070174267303080632661633290167290144653'); + T('-335141130.448', '-622097386577809642069744047.28826330', '6.220973865778096417346029168402633e+26'); + T('0', '120769246650024506936432254.2242696', '-1.207692466500245069364322542242696e+26'); + T('-23641982115679784801339.39566245781597254522', '-3682962980152156410.3125514', '-2.363829915269963264492908311105781597254522e+22'); + T('-88042183866221727883616143734328.731116339192172335', '2124601502534008501755.584348081323605468287', '-8.8042183868346329386150152236084315464420515777803287e+31'); + T('11947261350807745084450506573219.467267625392669956554', '-2144324041379.38432776094911354677701674948588', '1.194726135080774508659483061459885159538634178350333101674948588e+31'); + T('230257242957.393', '-10607111174738890296557505.142420583396378', '1.0607111174739120553800462535420583396378e+25'); + T('-0.000000000000000000205207122559582205445490420', '-137363469389767969588812337824785302440844', '1.3736346938976796958881233782478530244084399999999999999999979479287744041779455450958e+41'); + T('-681.369980', '279143637047358960283640320234319673269492015123776', '-2.7914363704735896028364032023431967326949201512445736998e+50'); + T('0.00000000000047867734749297313578318166203844289133575435501552', '5318894.3577269473404992938443574038899509659386283', '-5318894.35772694734002061649686443075416778427658985710866424564498448'); + T('-7009640457950142150404723076242641700234100735651466.001', '450572184269898130184881623816.351532207', '-7.009640457950142150405173648426911598364285617275282352532207e+51'); + T('-667761.1964938970806540832766776998292', '-11916.0', '-655845.1964938970806540832766776998292'); + T('78115005042419615473330500516096634.176852324566877077', '-6798.68296696083172787385428', '7.811500504241961547333050051610343285981928539860495085428e+34'); + T('7810338218505304105029156703754.942106797', '0.000001731538457890332023362604451262238656250891', '7.810338218505304105029156703754942105065461542109667976637395548737761343749109e+30'); + T('147524.3448475445608', '1648294473575921', '-1648294473428396.6551524554392'); + T('-0.000000000000000000171463070071732948056011420608183352219588685', '586793187554936.5855', '-586793187554936.585500000000000000171463070071732948056011420608183352219588685'); + T('-1211390378858441999502927549647140419603384681145414251351213', '-635082911540249607321.024949083796644', '-1.211390378858441999502927549647140419602749598233874001743891975050916203356e+60'); + T('4', '16059489423456265750163100012.9030479691340920432572860034', '-1.60594894234562657501631000089030479691340920432572860034e+28'); + T('-0.02386494924652569606758900911891223878669277', '6954997.21231337279682439457198586266365943551328684831121', '-6954997.23617832204335009063957487178257167429997961831121'); + T('-77097949257283524913898.9005058281976253594672', '2548220758876398059247570217121711835.85372529', '-2.5482207588764751571968275006466257347542311181976253594672e+36'); + T('0.0000000000000000003167303237768130560', '-1774472.102377282878491377352513811904', '1774472.102377282878491377669244135680813056'); + T('12826152962883951576635.9617817', '-85603180142227733048283563048771.16275698594', '8.560318015505388601116751462540712453868594e+31'); + T('-28594.58153422332574547631803496831493', '0.00138135692454804974058929153874335145729995858764536203', '-28594.58291558025029352605862425985367335145729995858764536203'); + T('-1076543179517781327152214.4430186084047103180550303835484', '-0.000001966501043041903595634052091', '-1.076543179517781327152214443016641903667276151434749496309e+24'); + T('1.1303763207006847408087108827484230273165561756244577060659', '-5226422630308737810960949550589969908179555303', '5.2264226303087378109609495505899699081795553041303763207006847408087108827484230273165561756244577060659e+45'); + T('4.6379', '0.0010851657258206953367908525441350095857171922501796819281707', '4.6368148342741793046632091474558649904142828077498203180718293'); + T('-0.00000121970222487531743738910465210', '14700571395.710868072772989809', '-14700571395.7108692924752146843174373891046521'); + T('-0.00948647116781336833163259991', '-1.7768824919899484548781987321907266047229337854', '1.7673960208221350865465661322807266047229337854'); + T('0.0000000000294045914362167819882890883773282671860065407908497565282', '1203484199859679.515373248387944', '-1203484199859679.5153732483585394085637832180117109116226717328139934592091502434718'); + T('370605558535696550704041748.54', '2859.002553198485573190388217618142019', '3.70605558535696550704038889537446801514426809611782381857981e+26'); + T('23063425385264062114.4182185521', '919024.6882123634392645395934284705089', '23063425385263143089.7300061886607354604065715294911'); + T('196575005.9706725', '-5209445831094830', '5209446027669835.9706725'); + T('-749632.806770304627392347831545996165984090513451938727374', '772302148117130.7584834', '-772302148866763.565253704627392347831545996165984090513451938727374'); + T('218023.954642124004155088474898834365173675390209344675040', '-4493284.9', '4711308.85464212400415508847489883436517367539020934467504'); + T('371184371226569100503051893.30461921952559443426660043299229', '-0.0000000034906715619289934', '3.7118437122656910050305189330461922301626599619559383299229e+26'); + T('220152166905051656324095658827324313008647.0', '-0.00000541198892301696315819055681172535', '2.2015216690505165632409565882732431300864700000541198892301696315819055681172535e+41'); + T('343183254236262724.51785020', '1', '343183254236262723.5178502'); + T('0.0000000003890086401641242121857013479571090262584101373', '-8317.38612508391889137944463821522953', '8317.3861250843079000196087624274152313479571090262584101373'); + T('0.00000000000000000086155332', '-17.6333243552751', '17.63332435527510000086155332'); + T('0', '268666137918342629663843421660.888578', '-2.68666137918342629663843421660888578e+29'); + T('0.00000000000000135738708106732310272812674949101792', '53327465.2335089327976851709827349825', '-53327465.23350893279768381359565391517689727187325050898208'); + T('266910608197788439217725496348217', '-0.00000000000000138658', '2.6691060819778843921772549634821700000000000000138658e+32'); + T('11641358', '81237.72625754123497510364150080', '11560120.2737424587650248963584992'); + T('-10397358465137390.59112438352080341792626708545', '0.000000000000035771048469575519305632795707', '-10397358465137390.591124383520839188974736660969305632795707'); + T('-319067503684881132718867038113132023386552638920.93464409992', '-4362498854097189202568295213849864755626616334057699.89553', '4.36217978659350432143557634681175162360322978141877896088590008e+51'); + T('-291431002924776541728754603601.36970805037321548645', '5964565940.126384157441377', '-2.9143100292477654173471916954149609220781459248645e+29'); + T('-1.2311860880', '-596880833224', '596880833222.768813912'); + T('87.132412112577000', '3', '84.132412112577'); + T('14496251944930895122386093.97997766', '-0.0186085382187367427216451737443431075455317', '1.44962519449308951223860939985861982187367427216451737443431075455317e+25'); + T('-1454167.8755560906631572', '-14023057721.47963687', '14021603553.6040807793368428'); + T('-48.0205403500832716158268160170078138883305085421632055636', '-4225012867.41212544381914188804', '4225012819.3915850937358702722131839829921861116694914578367944364'); + T('132233805697430308711156924448348175516180746442', '0.0000017428839153838195472106854742425800', '1.3223380569743030871115692444834817551618074644199999825711608461618045278931452575742e+47'); + T('-3464742138515.3596070', '-116196292944709774661.6869498643733175605', '116196289479967636146.3273428643733175605'); + T('959618941323760340533285165929739125596307241332873169.21229', '66867302503354526158135738979.180422740', '9.5961894132376034053328509906243662224178108319713419003186726e+53'); + T('272744684991153578922570226355.46751565943', '2120.8826649154579918903365041556839175862', '2.727446849911535789225702242345848507439720081096634958443160824138e+29'); + T('392752713096323327908999', '0.000000017921157295538031059674698531743345633301', '3.92752713096323327908998999999982078842704461968940325301468256654366699e+23'); + T('98160222492281761742.521218301', '-0.0285627038777634002456158926936381577455032644551906387514964', '98160222492281761742.5497810048777634002456158926936381577455032644551906387514964'); + T('-4.36', '-271625870935.20401097518', '271625870930.84401097518'); + T('-19.4212927874167898', '-3296800120589635669055398465088086245282862075.96730', '3.2968001205896356690553984650880862452828620565460072125832102e+45'); + T('-7384530397856089', '-45.9', '-7384530397856043.1'); + T('-774820079197336364734223154.8', '-10.942584818509498694779756530950038148', '-7.74820079197336364734223143857415181490501305220243469049961852e+26'); + T('-150596940796161658996.388271502068869', '2985065345825248339763675882859244909723097343219', '-2.985065345825248339763675883009841850519259002215388271502068869e+48'); + T('-23847.667194770678602066965772568166575932862070476568359149', '1.05838941', '-23848.725584180678602066965772568166575932862070476568359149'); + T('-139.90436152895151552565739375535355738822610296926957375853', '0.2047189', '-140.10908042895151552565739375535355738822610296926957375853'); + T('-4859551136289853679597736', '5705851489', '-4.859551136289859385449225e+24'); + T('-2.822932759210967942204799418357885484503668027660403642776', '-21260029158.7755772147552', '21260029155.952644455544232057795200581642114515496331972339596357224'); + T('70214727623926969557083.633194040081188', '0.000000000000000008876781900', '7.02147276239269695570836331940400811879911232181e+22'); + T('168167915122787.2659904', '-0.000000000000000000022424096865237242831921499442051317229853874001', '168167915122787.265990400000000000022424096865237242831921499442051317229853874001'); + T('-10381081602312', '0.000000000000000923228830', '-10381081602312.00000000000000092322883'); + T('6481217378435019509.3', '204127.50354634007763', '6481217378434815381.79645365992237'); + T('-1055871579008468883600015600194814.219411847', '0.00000000000000001993933675383625869609055753063233531835884', '-1.05587157900846888360001560019481421941184700000001993933675383625869609055753063233531835884e+33'); + T('-11.9', '2190021917.5', '-2190021929.4'); + T('8893568.397103781249', '-7.29674059550', '8893575.693844376749'); + T('-270074164732402092470707995826826345208506171395062650454324', '392935540317', '-2.70074164732402092470707995826826345208506171395455585994641e+59'); + T('-582332724559151988564243629866.793819328', '-752.316045', '-5.82332724559151988564243629114477774328e+29'); + T('115780050433.9744723375949160', '-10354559440726926933085330907464207489638', '1.0354559440726926933085330907579987540071974472337594916e+40'); + T('-0.0000000000092082909772982168202901287881437', '-140307240110991278811078363131.3533385306060728599114476021', '1.403072401109912788110783631313533385305968645689341493852797098712118563e+29'); + T('-0.0000000000000000001302905868005538222253', '-687601306119.30280105580919933093896015091959269610032847933', '687601306119.30280105580919933080866956411903887387502847933'); + T('-17406776.9106520', '7404147683526942010449859408523376672505043.20', '-7.404147683526942010449859408523376689911820110652e+42'); + T('-5810490488292821.088550524158200456214711210120', '51309126128019006928075619352.35509020203161', '-5.130912612802481741856391217344364072618981045621471121012e+28'); + T('-244663279887797845457244.69627014023746468381042256674045148', '-0.383335594341020704911762197811406655', '-2.44663279887797845457244312934545896443978898660368929044825e+23'); + T('316759637646274728459769194971270681520143070356211369', '138969888208.552504340', '3.1675963764627472845976919497127068152014293138632316044749566e+53'); + T('-1026716565990818152.338103221159', '1255719213990793975090997507278', '-1.255719213991820691656988325430338103221159e+30'); + T('854.93693123842152090961298359199223034349519195749', '-424117414357060.756799', '424117414357915.69373023842152090961298359199223034349519195749'); + T('-0.006379478941040566506054', '3928.2672878523130519347199700529360289380801729479368', '-3928.2736673312540925012260240529360289380801729479368'); + T('3469779053.85027069235104893994561560034151457638008273176647', '25676509132014403666611211903.3702668974', '-2.567650913201440366314143284951999620504895106005438439965848542361991726823353e+28'); + T('-6.0694', '-820322384540258597408240140073275834913353.69', '8.203223845402585974082401400732758349133476206e+41'); + T('-0.000000000000030532', '24.896880201507626275851', '-24.896880201507656807851'); + T('105468873', '0', '105468873'); + T('256760156309110476', '-13837063158475039.0608439897688680023912472959404758275635521', '270597219467585515.0608439897688680023912472959404758275635521'); + T('0.000000000000000001698545937726615224762953174', '0.0091708187464', '-0.009170818746399998301454062273384775237046826'); + T('-21254127772.055477', '170724844816140294005708794935062810958442.2386', '-1.70724844816140294005708794935084065086214294077e+41'); + T('4.3', '-42289375032753833461292867654449379918122659582300511814.86', '4.228937503275383346129286765444937991812265958230051181916e+55'); + T('-10.6945731348037109472689588888585520230967031058063284652', '-0.000000000000000013225637814061559914861522643297461025', '-10.6945731348037109340433210747969921082351804625088674402'); + T('42022129692143246218.588174513905523856665669864568', '-6688196881698', '42022136380340127916.588174513905523856665669864568'); + T('59567595164759708273.58488961999', '-2882669546962777869333', '2.94223714212753757760658488961999e+21'); + T('-0.00000000000000023219819555088939', '0.000002699155773875942009505196424', '-0.000002699155774108140205056085814'); + T('69.02', '1019.384525', '-950.364525'); + T('0.28885545083047505669261757814370521673472269407769277', '-54409284625846293530958014777988170910931971864508243085507', '5.440928462584629353095801477798817091093197186450824308550728885545083047505669261757814370521673472269407769277e+58'); + T('357051970556175609969558033601717918622832633809282', '-0.00000000000000009191759009979', '3.5705197055617560996955803360171791862283263380928200000000000000009191759009979e+50'); + T('55324032341233413075839541.33979738365146913154063', '18778204875511803067.37488033228813311299318998557567838806', '5.532401356302853756403647396491705136333601854744001442432161194e+25'); + T('-954279324346950395396438207814989843', '5855883956282.7418', '-9.542793243469503953964440636989461257418e+35'); + T('0.0000559372400719154055', '36326.3773033065', '-36326.3772473692599280845945'); + T('-2308273733231941938445560342695.8870897860340173552415859451', '0.0000000000000000000176744410303783123790738765240224970704250496463086', '-2.3082737332319419384455603426958870897860340173552592603861303783123790738765240224970704250496463086e+30'); + T('-0.0000000000000075315134692867358694825', '0.000000000020673253575755655053286884627683943900054889', '-2.0680785089224941789156367127683943900054889e-11'); + T('2141565935846165335053366646564.55', '249139386942.433521867737894', '2.141565935846165334804227259622116478132262106e+30'); + T('0.0000000000000020997422982353397148204786811844837507999862174', '0.000000000000000002356388173646211525529238', '2.0973859100616935032949494431844837507999862174e-15'); + T('-9.3', '1210724787708353076304704165555.510002672635727895531335', '-1.210724787708353076304704165564810002672635727895531335e+30'); + T('-94455687.8', '0.0000002761251584122631449121019167818539664249453145710', '-94455687.800000276125158412263144912101916781853966424945314571'); + T('-527306114203076623189237999707479.9688776820253214193899164', '1599.728954415768000917144378511032', '-5.27306114203076623189237999709079697832097793322336534294911032e+32'); + T('5201144349263847987496751693.2718392256495115509', '-0.000000000000000008062522688625856069134486136704806619173555611278', '5.201144349263847987496751693271839225649511558962522688625856069134486136704806619173555611278e+27'); + T('-769134537.983940345', '-596619628089684709170992.484', '5.96619628089683940036454500059655e+23'); + T('16103.67287682796494953', '-465781.44458474726', '481885.11746157522494953'); + T('972019.0403266398942', '0.00000000032060736406868701231737725067236', '972019.04032663957359263593131298768262274932764'); + T('-3722457663697211882835707', '-16.8', '-3.7224576636972118828356902e+24'); + T('140260.1', '5', '140255.1'); + T('5314287735775902656123286734.69857230', '-33935993.716814133855691839888466392152019494030707469085', '5.314287735775902656157222728415386433855691839888466392152019494030707469085e+27'); + T('68283872710781941018806771046574852133', '0.00000000075', '6.828387271078194101880677104657485213299999999925e+37'); + T('-369081.4527', '141567.2246', '-510648.6773'); + T('20446533321512161063774845264.22916016420704184590862638', '-68295029.764030715', '2.044653332151216106384314029399319087920704184590862638e+28'); + T('-600307.74138395225787263', '-0.0000001304496382302165936930', '-600307.741383821808234399783406307'); + T('24411161239.85690978507516121', '2051270884829.8383684099295195107651592681789671', '-2026859723589.9814586248543583007651592681789671'); + T('4384414740.5595825362370080404420', '-0.00000000000000554366638630081310095841078569927213406536019558277955', '4384414740.55958253623701358410838630081310095841078569927213406536019558277955'); + T('9025031.8925028', '-32.8', '9025064.6925028'); + T('-256722752342173962991.91', '-0.0000000000000000002123046323462613566369', '-256722752342173962991.9099999999999999997876953676537386433631'); + T('43542362222453910743776206071468.7163717435431410983843', '1100168.647375874421732648073262226', '4.3542362222453910743776204971300068995869121408450311037774e+31'); + T('0.062784590888327314154797', '1057478188.877253410081536', '-1057478188.814468819193208685845203'); + T('-7050', '45104384760478621637071269060904128288820257014210.74', '-4.510438476047862163707126906090412828882025702126074e+49'); + T('1592658310474883023', '-399176738358380589054069565962.3840352823659556138516', '3.991767383599732473645444489853840352823659556138516e+29'); + T('206141261', '-1266053.469', '207407314.469'); + T('644.1', '-0.4369751366969488640109929651726886244920517832668019', '644.5369751366969488640109929651726886244920517832668019'); + T('1612132.216890744513316472', '-51082267675271', '51082269287403.216890744513316472'); + T('1230427083.97', '0.000758744063330274578234716889288876558038637793691373850', '1230427083.96924125593666972542176528311071112344196136220630862615'); + T('-35776247491956058344815123524285', '0.000000000012958363043907', '-3.5776247491956058344815123524285000000000012958363043907e+31'); + T('8661462327754244989542.365', '0', '8.661462327754244989542365e+21'); + T('-1629190886816579351740029513722257473580386199203949.0', '-6496265115300408904692604.738158', '-1.629190886816579351740029507225992358279977294511344261842e+51'); + T('13.891128134595', '4', '9.891128134595'); + T('-11113.7', '0.000000007958782556879962582439914573325191682999786', '-11113.700000007958782556879962582439914573325191682999786'); + T('-1118611298789753369562561', '0', '-1.118611298789753369562561e+24'); + T('0.000000000590336252071681886600391810609976', '-67.75', '67.750000000590336252071681886600391810609976'); + T('-169823638653318606537007998653864233599165.937', '-281597273362859424.39994', '-1.6982363865331860653700771705659087073974153706e+41'); + T('-3.156805980919999726868943', '546306412638131947574220', '-5.46306412638131947574223156805980919999726868943e+23'); + T('-0.000000000961866927553387950929926693447189622664803906118589565996', '1599939073440130339796992146.295983955944260728', '-1.599939073440130339796992146295983956906127655553387950929926693447189622664803906118589565996e+27'); + T('0.4283', '0.000000000020729812246752207692169547780166634734001', '0.428299999979270187753247792307830452219833365265999'); + T('-0.0004573434550153087210903', '0.03770996737891493754829068954377697580116', '-0.03816731083393024626938098954377697580116'); + T('-3960.59579547', '-1814.0503015604326701', '-2146.5454939095673299'); + T('228667830414358772925710849158.07453', '-242389246', '2.2866783041435877292595323840407453e+29'); + T('-4938.8', '33796487947361', '-33796487952299.8'); + T('23066858157696468038.419700247057090437730118', '1017294462916594953213682499527318061014200', '-1.017294462916594953213659432669160364546161580299752942909562269882e+42'); + T('-3.329', '7129476962505466189.958258', '-7129476962505466193.287258'); + T('0.0002134952691176147868498212012808766187', '-55.418', '55.4182134952691176147868498212012808766187'); + T('-287906196200519721661337752259844531254735020373.400102226', '-149964438772134655329086295.489409993989261332871176761', '-2.87906196200519721661187787821072396599405934077910692232010738667128823239e+47'); + T('0.879756603251906828679553532880817', '-169.6608007559773549752480442', '170.540557359229261803927597732880817'); + T('0.0000006245253019711867486517080491', '-0.000000000000000016145400714914217811', '6.24525301987332149366622266911e-7'); + T('-0.00000000000000000028355442083', '-6.7960400', '6.79603999999999999971644557917'); + T('-327828.933845', '-0.000000000016720812786354347397949935318536433299320234', '-327828.933844999983279187213645652602050064681463566700679766'); + T('-12062798839897370982166084543665094512857864041322339898381', '-983855787277604624519041110446627116266868551757862371483', '-1.1078943052619766357647043433218467396590995489564477526898e+58'); + T('-368029067460.235618031440780659671986274176149669', '-7.8327366781', '-368029067452.402881353340780659671986274176149669'); + T('48.841', '621799398797787989614515.034591400113887912474171355', '-6.21799398797787989614466193591400113887912474171355e+23'); + T('0.00000000000000000001028447389', '11411023852013652', '-11411023852013651.99999999999999999998971552611'); + T('109388.053063770057103', '-0.000161002185201484294184231320866015688631673966536', '109388.053224772242304484294184231320866015688631673966536'); + T('0.0000000075454081720580498999564801', '-6133333234722476.50731423128929112324554345104797981', '6133333234722476.50731423883469929530359335100445991'); + T('0.0000000000001748707964040132704465271', '0.0014559085438085897564402233344521317116113630490391191639', '-0.0014559085436337189600362100640056046116113630490391191639'); + T('169.5777437575868731193679671977293144862017912', '171384684233482289557.248837', '-171384684233482289387.6710932424131268806320328022706855137982088'); + T('0.000000000000000963994117406293262728543', '10931977.50377877', '-10931977.503778769999999036005882593706737271457'); + T('-0.0000000000000004943772275105155307931235866139', '-6331812416762098838522', '6.3318124167620988385219999999999999995056227724894844692068764133861e+21'); + T('551506392806.03421875426724909838', '1494156988342161962977365.44', '-1.49415698834161045658455940578124573275090162e+24'); + T('-35954803866862.46955421251697497767880', '-96620255925.814702354', '-35858183610936.6548518585169749776788'); + T('-8973170535214416154002860437001664', '8701360172863868015378154133091486710755411398837050.58411296', '-8.70136017286386802435132466830590286475827183583871458411296e+51'); + T('369.0854266274373143948330319405738975782757717917', '0', '369.0854266274373143948330319405738975782757717917'); + T('4130252362617611707187141280611348999706', '-120506138511555615072992404.1670872857058427291541946', '4.1302523626177322133256528362264219921101670872857058427291541946e+39'); + T('0.00000000000000000129518837', '-43970554119955228415415630801336595257.433109069593', '4.397055411995522841541563080133659525743310906959300000129518837e+37'); + T('-199832949667155587976206363450860330500926252.4790', '88697015896564.601775678484183991355335780830', '-1.9983294966715558797620636345094902751682281708077567848418399135533578083e+44'); + T('-3', '-94608429043423790061', '94608429043423790058'); + T('5914252851', '-32833159514298.717701562542', '32839073767149.717701562542'); + T('0.00000000000000000062135622742614277', '-934153618.26014440731275', '934153618.26014440731275000062135622742614277'); + T('-414018564163156440', '82550425859087829706198633745536278044153640.5895796189250', '-8.2550425859087829706198634159554842207310080589579618925e+43'); + T('-1496454100585258488602.0286', '0.000000000109895026640912465560937708538864597016913853723419507', '-1.496454100585258488602028600000109895026640912465560937708538864597016913853723419507e+21'); + T('-1341525946245998', '193723560793329369351971060', '-1.93723560794670895298217058e+26'); + T('0.000000000000004972247161753329501987430882626554770098611002363504786', '-0.02206405830101097017174889990515767580456922875023374', '0.022064058301015942418910653234659663235451855305003838611002363504786'); + T('759412612479446413', '-0.001641148192720654679893469509982581527584330378', '759412612479446413.001641148192720654679893469509982581527584330378'); + T('202578904.71133021395689295350439448588680928447617886', '-35337424341284.346281238517', '35337626920189.05761145247389295350439448588680928447617886'); + T('10862970759795016587884612569718575353781870555253901512816', '-214.533', '1.0862970759795016587884612569718575353781870555253901513030533e+58'); + T('-0.00000000000000040285962950086', '-216829085197233503.866070375365413688040', '216829085197233503.86607037536541328518037049914'); + T('550250782173491663208128526734.569', '-0.000000000100710017655581949422409688681756709469258865537626639492015', '5.50250782173491663208128526734569000000100710017655581949422409688681756709469258865537626639492015e+29'); + T('-19678891452829871158.36095', '1040.72243146362968914160338864', '-19678891452829872199.08338146362968914160338864'); + T('-20972447940296172836322634.7', '0.00000000000000150351', '-2.097244794029617283632263470000000000000150351e+25'); + T('-135716917862073377635780105702430442287902.2441615427680', '-156170394359696385001989148011019228708', '-1.35560747467713681250778116554419423059194244161542768e+41'); + T('249073042918039345', '758712100158049101656321168.88542968', '-7.5871209990897605873828182388542968e+26'); + T('9228932554571685674.6101721970', '93.5210831751023', '9228932554571685581.0890890218977'); + T('0', '-3271.372', '3271.372'); + T('712617017414340344456425371594378983', '-7013575085098427106742320.320014442', '7.12617017421353919541523798701121303320014442e+35'); + T('0.00000000000000991278822903249', '-266685953910734027663766948621954.4074654249748', '2.6668595391073402766376694862195440746542497480991278822903249e+32'); + T('-0.00001168408090912846185222706894568927004955366630406', '-0.00000357928456', '-0.00000810479634912846185222706894568927004955366630406'); + T('-0.0000000000000000001077428', '-18065.9571', '18065.9570999999999999998922572'); + T('-26767075956743559361260276966383.60643853154', '9.811418917439919669145337064909359580107696', '-2.6767075956743559361260276966393417857448979919669145337064909359580107696e+31'); + T('-94992614046521719511194550871785575096581461042589', '-7.24', '-9.499261404652171951119455087178557509658146104258176e+49'); + T('249.84717238354744614', '-58760885296179353551418799.1637574', '5.876088529617935355141904901092978354744614e+25'); + T('0.190077788951733727544', '3029470118670840', '-3029470118670839.809922211048266272456'); + T('-535577308373493988698.28', '-0.00000000000000000001223589264699363887684193', '-535577308373493988698.27999999999999999998776410735300636112315807'); + T('17330374908582279821881.6419631817630053975265540001599', '51572037568522929067270779857332002426120', '-5.15720375685229290499404049487497226042383580368182369946024734459998401e+40'); + T('2620791577.5388', '-429.387', '2620792006.9258'); + T('24955342165062415125441804.9102804783908687387110', '-894.26', '2.4955342165062415125442699170280478390868738711e+25'); + T('-30.966199737786598010412005660223057114288056999548471748', '7554891.786144582480621940890219161695392942927639518', '-7554922.752344320267219951302224821918450057215696517548471748'); + T('1.1132', '33358298757744778319077792505.510848143559223', '-3.3358298757744778319077792504397648143559223e+28'); + T('-71806617.15', '5002475659678496285425142082140754487', '-5.00247565967849628542514208221256110415e+36'); + T('-64642.3969', '-45742744308293235253.79', '45742744308293170611.3931'); + T('0.000000000000000005061114767099631770343151056312', '-0.1380692319876694309061865652400348112805369059470451819398816', '0.1380692319876694359673013323396665816236879622590451819398816'); + T('1104962688677222230.43026613036133967074026481598059', '65279233245714944288887', '-6.527812828302626706665656973386963866032925973518401941e+22'); + T('-244.20751029974608088458301628723627482919450688930317756', '-10.309887906765666581', '-233.89762239298041430358301628723627482919450688930317756'); + T('-374204737.17485473467771059091311676198780910101246261', '-1772169195775224156804629688653654033.48913943457', '1.77216919577522415680462968827944929631428469989228940908688323801219089898753739e+36'); + T('0.0000825267296819574292144866422', '0.000000024644261884116746400488936364031', '0.000082502085420073312468086153263635969'); + T('-337528893876584865851246910311878729078289', '-181706307425668740481.5172', '-3.375288938765848658510652040044530603378074828e+41'); + T('338.68219932619', '36769458628.200', '-36769458289.51780067381'); + T('946213.052924553279580429320', '0.0000000000000000000164588680615834011158188287840390933880557701437361142926', '946213.0529245532795804293035411319384165988841811712159609066119442298562638857074'); + T('-2', '-1595717583274440094311744086944287786728005322', '1.59571758327444009431174408694428778672800532e+45'); + T('17453173.964073494242189989440985005742212919109806776575', '-14.66', '17453188.624073494242189989440985005742212919109806776575'); + T('9035579398295.9420488582066606273524126698350184209', '966939914253463733672441.61004035647', '-9.669399142444281542741456679914982633393726475873301649815791e+23'); + T('7', '-27403953633424153.2922529596537493', '27403953633424160.2922529596537493'); + T('-0.00000000000000000065661940373886034771780807724464', '23789019501708804655829.7720420134937860512', '-2.378901950170880465582977204201349378605185661940373886034771780807724464e+22'); + T('-379831', '1792454931672118909115.7219790011', '-1.7924549316721192889467219790011e+21'); + T('-6815476482314.81368548838834442636132177246866027753', '-23737403998114260637862634', '2.373740399810744516138031918631451161165557363867822753133972247e+25'); + T('-277091361.834', '1255049423087969154842.0583316773528577200623', '-1.2550494230882462462038923316773528577200623e+21'); + T('0.000527964207481201439802251215793030527669347056468169977214382', '1104312503520806883476040.604659402909367', '-1.104312503520806883476040604131438701885798560197748784206969472330652943531830022785618e+24'); + T('416.19049862551799054889649850446495', '25962521611212.630583656', '-25962521610796.44008503048200945110350149553505'); + T('-2', '0.00000023172759362622993578493256103424786936904115653889542088', '-2.00000023172759362622993578493256103424786936904115653889542088'); + T('2322661483960492703.7985297249359258447971802752303052984194', '-0.00285627578605593051554020854314614896', '2322661483960492703.8013860007219817753127204837734514473794'); + T('-50114375544024117743137634.7132631195193', '-4518136285230626801', '-5.01143710258878325125108337132631195193e+25'); + T('491790857283052164040388091239524266252647468540.602280', '0.0000000000000000002505634', '4.917908572830521640403880912395242662526474685406022799999999999997494366e+47'); + T('223757557.31976336704487143430860', '-30.36327', '223757587.6830333670448714343086'); + T('2266.004651', '-0.0000005867989135639875708', '2266.0046515867989135639875708'); + T('6958762418946097.285', '8704860092930499346311.824744308693', '-8.704853134168080400214539744308693e+21'); + T('-0.0000000000008758100333932644717298947984578724622849096677225', '-310962285610.30017170574463655670078', '310962285610.3001717057437607466673867355282701052015421275377150903322775'); + T('3654335458448.908519039918424', '-1017862207107897070244694254273184418309706541.32954379163', '1.017862207107897070244694254273188072645164990238062831548424e+45'); + T('0.000000028485591', '0', '2.8485591e-8'); + T('5073947900606220328306097118306928028865584', '-0.0000610672338767500', '5.07394790060622032830609711830692802886558400006106723387675e+42'); + T('184963915.618593586643741543203', '-1677.631219', '184965593.249812586643741543203'); + T('396871997862363101002483892.26', '-0.0000000000000000066839646413390330134202944396013877478232108451615', '3.968719978623631010024838922600000000000000066839646413390330134202944396013877478232108451615e+26'); + T('-0.001443', '-0.0000000000001480307586020440332395145414988692178570219362536734359922', '-0.0014429999998519692413979559667604854585011307821429780637463265640078'); + T('5173379226320319729203764178125730829947033.85', '16568260.329616', '5.173379226320319729203764178125730813378773520384e+42'); + T('-378684740425288590329.865832078814181361689411770555828033', '21039423253539461585612290662', '-2.1039423632224202010900880991865832078814181361689411770555828033e+28'); + T('-143411025.19904252040830704437889996439197644180', '0', '-143411025.1990425204083070443788999643919764418'); + T('-3971034326547', '-0.000000000000001192201124343158918732899783', '-3971034326546.999999999999998807798875656841081267100217'); + T('-1957074390.30', '-785.9373', '-1957073604.3627'); + T('11798157981084854910522713.726423390731883', '0.00000000000000000794673726058684351969247016507', '1.179815798108485491052271372642339073188299205326273941315648030752983493e+25'); + T('0', '63718006.533955912499520687', '-63718006.533955912499520687'); + T('-106057718559494874723085290836.38939560519223757224643923', '68938204335.59', '-1.0605771855949487479202349517197939560519223757224643923e+29'); + T('765027217313815006', '160135.21207763126955482', '765027217313654870.78792236873044518'); + T('-821923031708250104665643576287477708843314087.882590093', '-3990962158191136912693.079142196669532', '-8.21923031708250104665639585325319517706401394803447896330468e+44'); + T('0.00509812696199828345610871074161', '696247014515864996317842', '-6.9624701451586499631784199490187303800171654389128925839e+23'); + T('29732795045547659.0996914254', '-51709086127799933076710172937271558434987133.720', '5.17090861277999330767101729670043534805347928196914254e+43'); + T('-16286.209377407275812137531392451949', '0.00000000000000000022372394617291', '-16286.20937740727581213775511639812191'); + T('-1375253307827927096349134575050603.94211767852698652', '905513058712.3724033', '-1.37525330782792709635004008810931631452097852698652e+33'); + T('6307.78968779279695539093771472627844783336', '-0.00002778260088313361218945039359426278958850789168', '6307.78971557539783852454990417667204209614958850789168'); + T('-1251971126793648464770.62302133464300', '4108332118551588855518884176084', '-4.108332119803559982312532640854623021334643e+30'); + T('796875815810006347157872416846682346.70724147', '-26887.93843', '7.9687581581000634715787241684670923464567147e+35'); + T('503761901876.1', '-0.00000058591916804106576202', '503761901876.10000058591916804106576202'); + T('-0.0000144343551936630598170853542', '0.00000000000000001330848692526361142604488661622', '-0.00001443435519367636830401061781142604488661622'); + T('333807319855762444667280144179919.21709315488049995404', '3710.87428669634', '3.3380731985576244466728014417620834280645854049995404e+32'); + T('0.000000000000007381560468758912676992936863885310325961189', '5277874186685074734.78128632893251930850699235193165881271', '-5277874186685074734.781286328932511926946523593018981819773136114689674038811'); + T('0.002045907391481002055126364741722746123920492354', '-134940106198957372161636571.3843066120486149838380841998784', '1.34940106198957372161636571386352519440095985893210564620122746123920492354e+26'); + T('-30130112088.993827003962835076', '188322529121371266385077234579252182224.5691709790', '-1.88322529121371266385077234609382294313562997982962835076e+38'); + T('-3', '-8324641628446525083548695251230914153428', '8.324641628446525083548695251230914153425e+39'); + T('0.00018606293964295302172654549272224527271134692398', '-282281050085963.9114203115670420384745855159215452', '282281050085963.91160637450668499149631206141426744527271134692398'); + T('-16333583942997041272867370326132870504131195981.4696057800513', '45720082683202081441524403533698410.5545453845767', '-1.6333583943042761355550572407574394907664894392024151164628e+46'); + T('279328203.5', '-5825567.71080931239385137020833', '285153771.21080931239385137020833'); + T('-269224.94927224666095', '0.0000000000000000003064416316790457', '-269224.9492722466609500003064416316790457'); + T('6744812299069336942789392301581837129883725551922493.40', '-5703915992.9167440851668499293951029', '6.7448122990693369427893923015818371298837312558384863167440851668499293951029e+51'); + T('-0.000000000000000066706723472682', '-145217233354840.9452974499221403003294897671707915', '145217233354840.9452974499221402336227662944887915'); + T('8627053077274630737609487236548.4979774', '11.791146312838460410035604930189', '8.627053077274630737609487236536706831087161539589964395069811e+30'); + T('-0.01202422952668513636643178716923354493558618790', '-0.4635434098404790609527188243911111255589856688195077910287', '0.4515191803137939245862870372218775806233994809195077910287'); + T('-22486311958570.75', '136623992244353739977111844218335966565067420559172408797', '-1.3662399224435373997711184421833596656506744304548436736775e+56'); + T('-252554701524493.902565999316640', '0', '-252554701524493.90256599931664'); + T('0.00000000010355292', '-13318465915882548061708659853990135442387095003099676083', '1.331846591588254806170865985399013544238709500309967608300000000010355292e+55'); + T('0.000000000000003588941991478575635246817587941', '5787662416433534641981775919801763640029.288211579210799', '-5.787662416433534641981775919801763640029288211579210795411058008521424364753182412059e+39'); + T('3803854629.170758287238', '722557244.90221176531910610529831590', '3081297384.2685465219188938947016841'); + T('-4035292286478852880912536818781650501388972481375613031', '7023934966.329481438434165', '-4.035292286478852880912536818781650501388972488399547997329481438434165e+54'); + T('0', '-4651.5712076', '4651.5712076'); + T('943569.4471', '368852398555888115298707.33698897234448443580026', '-3.6885239855588811435513788988897234448443580026e+23'); + T('-7688139997698910283021899776208658703126', '-3014.021539', '-7.688139997698910283021899776208658700111978461e+39'); + T('-76014.328438738930802423876495451104480710964006', '0.16299839827610198847716746', '-76014.491437137206904412353662911104480710964006'); + T('425793955', '236826394', '188967561'); + T('1912.281988', '112194.49296301061246', '-110282.21097501061246'); + T('-5003494177.4861', '-1.82', '-5003494175.6661'); + T('7617479678.376905694802432279901930587745665869', '-947377.04', '7618427055.416905694802432279901930587745665869'); + T('367903789829906246.71158889842', '21491233153686072381957715968967883669600234520102964736911', '-2.149123315368607238195771596896788366959986661631313483066428841110158e+58'); + T('-6397756530845969250791946194979007883084.20444410377877774', '-2', '-6.39775653084596925079194619497900788308220444410377877774e+39'); + T('-75490132843212222631302495635041908895.42', '121330908238673', '-7.549013284321222263130261696595014756842e+37'); + T('7452613620257648176992750760.263566991938225', '519063023319381552888', '7.452613101194624857611197872263566991938225e+27'); + T('0.00000000000000778133736110171456441934891601883471609303002832912018885', '322394945530.295120804275213239014033', '-322394945530.29512080427520545767667189828543558065108398116528390696997167087981115'); + T('-8453.41542', '-92872449307.96646595226774421156553041473428714203142', '92872440854.55104595226774421156553041473428714203142'); + T('4184618260709992776470144081019630641.9546', '-39747088643178.4900618612667154842919288568428', '4.1846182607099927764701838281082738204446618612667154842919288568428e+36'); + T('-1002876199682238092689386871396', '-115235.191932983', '-1.002876199682238092689386756160808067017e+30'); + T('-0.0000020', '-67044918017341867873741', '6.7044918017341867873740999998e+22'); + T('19249573172273106187.51981325183516777379', '-0.0000036330230998383752637622876226209213994133789721626367167406', '19249573172273106187.5198168848582676121652637622876226209213994133789721626367167406'); + T('2367.8562797376185225678048', '-336.407580836131941', '2704.2638605737504635678048'); + T('15788198606260330370566880001150524384989538847.1566', '-13709725199190579602641841302109970817776478707296', '1.37255133977968399330124081821111213421614682461431566e+49'); + T('-0.000031568319907', '-319812227.101518430949692784775684487114739', '319812227.101486862629785784775684487114739'); + T('12598796115', '780974770970176277984213873835856961457.264132549460821743', '-7.80974770970176277984213873823258165342264132549460821743e+38'); + T('-12.05916350311631637603038624139252323932639510735991686', '-5079694354454213499772.98021638032478529', '5.07969435445421349976092105287720846891396961375860747676067360489264008314e+21'); + T('71001042332266', '-3.8749502633208489001742955080741839268852411926', '71001042332269.8749502633208489001742955080741839268852411926'); + T('-820079175.6236', '2602133034534013517476745071429', '-2.6021330345340135174775651506046236e+30'); + T('-0.05761', '-39324478925.37411997', '39324478925.31650997'); + T('-62331428327357976057401629977344374544913756472193', '5', '-6.2331428327357976057401629977344374544913756472198e+49'); + T('0.0000000079919621468803275713173314506', '-858.3109258585612540534304739091057092569004843368', '858.3109258665532162003108014804230407075004843368'); + T('0', '49228741196127252', '-49228741196127252'); + T('-0.000034775952537402974515789650718361816884555', '-81545435078.9081293428693463384918512495662737197672903499', '81545435078.9080945669168089355173354599155553579504057949'); + T('16831812489134711005.277009209496663', '-2711976951712313.504224327994229016719141489', '16834524466086423318.781233537490892016719141489'); + T('-14.478', '-7657287359215.379', '7657287359200.901'); + T('-5818291298159242639134804410045447574555164535.312859', '-2.318', '-5.818291298159242639134804410045447574555164532994859e+45'); + T('-0.00000000000000000538849432020724', '-0.00000000000043292954381309', '4.3292415531876979276e-13'); + T('129925455598327874.011965', '-373481502322636.54947846', '130298937100650510.56144346'); + T('23460218954598.255822499367', '5031071127.77603001713489698449235', '23455187883470.47979248223210301550765'); + T('0.1925927960745748035942288444958429531342391265261594074', '0.000000000001459509170829311723098341575950975186409687619', '0.192592796073115294423399532772744611558288151339749719781'); + T('-117656959944939983221909881756492.60506693656', '614774667011953263151051375859904824607146.03088402', '-6.1477466712961022309599135908181470636363863595095656e+41'); + T('4636798651708977942823954.838902837557757807933209543802058', '90429847774248975608629.657240991460781465643663', '4.546368803934728967215325181661846096976342289546543802058e+24'); + T('-8547.67216', '695927494328.0531238602508437', '-695927502875.7252838602508437'); + T('0.000000000000000000014395480531584764422752572199140185540212150740674066683', '0.00000000000000000165514253473158542904', '-1.640747054200000664617247427800859814459787849259325933317e-18'); + T('-14004821946.12197759187', '504302757065358604146449888186847067296187319675184252.5', '-5.0430275706535860414644988818684706729618733368000619862197759187e+53'); + T('0.00020661761959205061422959604052997905', '5983723321093859965577864973.03971707767767374', '-5.98372332109385996557786497303951046005808168938577040395947002095e+27'); + T('46.214922256501145', '-19450859033.49527912435693482', '19450859079.71020138085807982'); + T('607064966949689390411116362805267199510935776380', '-326141246118.898400528715804016912422852185420861463709', '6.07064966949689390411116362805267199837077022498898400528715804016912422852185420861463709e+47'); + T('7237360928.529978130333768130950', '52337694872297307366400191176848518321.9397556503425061', '-5.233769487229730736640019116961115739340977752000873796905e+37'); + T('-8.77', '0.00000250309032382179368', '-8.77000250309032382179368'); + T('2238967687307501052.8777593247573250304131289359965647930', '0.0000000006178212737146909670918694', '2238967687307501052.877759324139503756698437968904695393'); + T('4800872.6343266910471003503', '-43.630262', '4800916.2645886910471003503'); + T('6647.98125718514930441819193526467280173179366', '-4671450984642064474363.0922986578251558474619141444116721601', '4.67145098464206448101107355584297446026565384940908447389189366e+21'); + T('5213460994088.42423086209586241417259053025217796299975798215', '-4383637172725.279', '9597098166813.70323086209586241417259053025217796299975798215'); + T('-3.853', '20.661', '-24.514'); + T('-14271230745287310945.6312400262684102', '0.00000029645344606', '-14271230745287310945.63124032272185626'); + T('0.00000000032289911998', '92366796259.63491126551', '-92366796259.63491126518710088002'); + T('0.0000366129951186090146374619139990790117703732293398409315027110', '37573094701656757193581695.06285323469', '-3.7573094701656757193581695062816621694881390985362538086000920988229626770660159068497289e+25'); + T('-0.5052577098964168325539487540838485290578969474', '-2.469847', '1.9645892901035831674460512459161514709421030526'); + T('4157486.219788', '-0.000000000000000030', '4157486.21978800000000003'); + T('-18128173766.45100920958', '0.0000000270000492658439841803', '-18128173766.4510092365800492658439841803'); + T('0.00000011629092179596057280755013975516', '-21061915294588585007285269886442442.89790253758527', '2.106191529458858500728526988644244289790265387619179596057280755013975516e+34'); + T('1628917.78', '-21383191736538.31532452805283554', '21383193365456.09532452805283554'); + T('1559380098949430706272504015810.69555717100498119630529074', '165173284.748129', '1.55938009894943070627233884252594742817100498119630529074e+30'); + T('36374023831462155387508503692769818148680320937241486', '-1.031827911563637271237851439355833437004912', '3.6374023831462155387508503692769818148680320937241487031827911563637271237851439355833437004912e+52'); + T('4.8081', '0.0003519196291075952295892328224194785771237221553', '4.8077480803708924047704107671775805214228762778447'); + T('-3782511514044035022728785099618757257160775562240791309177', '-0.000000000000795400939', '-3.782511514044035022728785099618757257160775562240791309176999999999999204599061e+57'); + T('-0.00005330668607181480434', '71992567276897950313737317415196.7780236926093645024753', '-7.199256727689795031373731741519677807699929543631727964e+31'); + T('-336.6', '0.000000127038712398089934486863716910205972688100425270367714213640', '-336.60000012703871239808993448686371691020597268810042527036771421364'); + T('0.000000002105290992087417133622746', '534450465748570290833221890995266975.81084848298', '-5.34450465748570290833221890995266975810848480874709007912582866377254e+35'); + T('364174039086712731', '1199801.7839398845629477125742176401101168032886363303997296', '364174039085512929.2160601154370522874257823598898831967113636696002704'); + T('53877990578308734625625639885060125168528280779536508786', '103516583128.45068629304281452459340', '5.38779905783087346256256398850601251685282806760199256575493137069571854754066e+55'); + T('3.754616214', '-371.3860189917370620745548727151697481689878945779565644', '375.1406352057370620745548727151697481689878945779565644'); + T('-437926015567097757255992979555892654.76', '-176655130153455.0051', '-4.379260155670977572558163244257391997549e+35'); + T('-0.1515104603550', '4834028992891471292.78', '-4834028992891471292.931510460355'); + T('2.585364', '23561717378268.26567934', '-23561717378265.68031534'); + T('-0.00000091447444444639', '-14131860317888699752291325342793026389759140', '1.413186031788869975229132534279302638975913999999908552555555361e+43'); + T('-16752710965652120653891175893', '2680897440943339017130745026.27310', '-1.94336084065954596710219209192731e+28'); + T('-7690583538728476436923091784910770916580375622563360.6', '4501948.1501019307848784354357334781717072047589062130609366', '-7.6905835387284764369230917849107709165803756270653087501019307848784354357334781717072047589062130609366e+51'); + T('-210025330495963043.1263117974098', '4.0408', '-210025330495963047.1671117974098'); + T('0.000000000000000479418012427570596658200595436786', '-0.000000049076192452', '4.9076192931418012427570596658200595436786e-8'); + T('-4960517.52677', '-0.20046636670669982714317739081794719428221226519297075795', '-4960517.32630363329330017285682260918205280571778773480702924205'); + T('0.00000000000000288393352959940194003685227429', '-8.192356703062703306084975083202', '8.19235670306270619001850468260394003685227429'); + T('-0.000000028227155496211712', '-0.056083781', '0.056083752772844503788288'); + T('-839454439636.987095', '775436321034387281261238203040959529197645939448222.14142187', '-7.7543632103438728126123820304095952919848539388785912851687e+50'); + T('0', '0.002509727311267980178283', '-0.002509727311267980178283'); + T('138194000652491447330479606912366232', '51353410500300307.8188174125', '1.381940006524914472791261964120659241811825875e+35'); + T('-0.0000086433365715041098678710807336961726259747239597811694878263', '-145268834.890490551072993367', '145268834.8904819077364218628901321289192663038273740252760402188305121737'); + T('19818.037591821397251595707488', '-14488431569410083120931256684496228387192907.10558580383653', '1.4488431569410083120931256684496228387212725143177625233781595707488e+43'); + T('-18346363094160301954515801173824097.520003457764168574', '-132648009061.542335857', '-1.8346363094160301954515668525815035977667600764168574e+34'); + T('0.000000097667699203314068161184', '-350287455.727299', '350287455.727299097667699203314068161184'); + T('15800829403166795.5956516579102376267581193644', '29.54785', '15800829403166766.0478016579102376267581193644'); + T('-195433133492107651439595.4648774', '135838131242484112792610949874.2647657738877701854426', '-1.358383266756176049002623894697296431738877701854426e+29'); + T('-2', '-331826679660519916423352740752709.621460214', '3.31826679660519916423352740752707621460214e+32'); + T('412805093083.82448845946357429243448308860021150924', '-4809048739065577.4431952808766327302', '4809461544158661.26768374034020702263448308860021150924'); + T('-0.00000000000235767643592123724694037105632168276114465', '-631328471724074335984942302107.380800425094037515623490', '6.3132847172407433598494230210738080042509167983918756876275305962894367831723885535e+29'); + T('-0.00000000000000220460849133312061988', '-323463691145097046132093042761677037355966973.1622930610540', '3.2346369114509704613209304276167703735596697316229306105399779539150866687938012e+44'); + T('-253226218107370.687861922377273342910306', '-52546031966435521927925716976', '5.2546031966435268701707609605312138077622726657089694e+28'); + T('-148850237194.787856', '1335742711780796103930791.895449687698338781835275', '-1.335742711780944954167986683305687698338781835275e+24'); + T('3481814465412.29117434619146758762840', '57.076809325489408713318479840', '3481814465355.21436502070205887430992016'); + T('-15060251059.6808167001235294317015914788204', '-0.00000000000523357091851957064551', '-15060251059.68081670011829586078307190817489'); + T('29418890050482267.571', '1512904619571947700639.092531808891009', '-1.512875200681897218371521531808891009e+21'); + T('-142805667193382230472426114.689990961689308909', '-519593843130556.62290843106349543226083561151272', '-1.4280566719286263662929555806708253062581347673916438848728e+26'); + T('-358638707277120721995733548.388859943630638806306978', '-12.513', '-3.58638707277120721995733535875859943630638806306978e+26'); + T('-0.000000000957413518520', '154616552.5166', '-154616552.51660000095741351852'); + T('0.0000000000001317378310642388269736805357842209597616683098', '-379.8345851707018360080', '379.8345851707019677458310642388269736805357842209597616683098'); + T('1372405.3778516179192341', '0.000000000000002163', '1372405.377851617919231937'); + T('61969275419603.4874854962928918', '5690625807302485253835751613390387468762288135', '-5.6906258073024852538357516133903254994868685315125145037071082e+45'); + T('0.000000000000000000034542917777656343403295447877924', '-61797209717624749784326365240476675880321846180162004605.08', '6.1797209717624749784326365240476675880321846180162004605080000000000000000034542917777656343403295447877924e+55'); + T('149340986382607394618252', '-348422861056802876633.244173070463082440851567934244', '1.49689409243664197494885244173070463082440851567934244e+23'); + T('21.0305752637461994', '-0.00000000000000000018', '21.03057526374619940018'); + T('0.000000000000245763391729127989068640916678750088674', '3273.6525', '-3273.652499999999754236608270872010931359083321249911326'); + T('8345432957379892013764872946202.3591286636257', '775586.72252749606', '8.3454329573798920137648721706156366011675657e+30'); + T('0.0000000009480848572374298346871921803725380637', '0.00000000000000911217413808095850740763197861728244451', '9.4807574506329175372868477274055944641755549e-10'); + T('70880626.4544855056079364096562061524443476869494980365', '89384389228261065.70802344171649', '-89384389157380439.2535379361085535903437938475556523130505019635'); + T('0.000000045482894532333129301508476587210437088400596510400692048', '24.795178', '-24.795177954517105467666870698491523412789562911599403489599307952'); + T('12.868', '-781064.3974167751464737017896493722545380625', '781077.2654167751464737017896493722545380625'); + T('25861.13776', '-13581866495119551449671.4104186135980', '1.3581866495119551475532548178613598e+22'); + T('0.0000000279851374783866294881264604138618', '0', '2.79851374783866294881264604138618e-8'); + T('0.00000000000023206437663193708130977441410825096207', '0.000000000000000000425087532539980230979512', '2.3206395154440454132954343459625096207e-13'); + T('-0.0000000000000009639012508328042527698', '-81245998951741764.163321', '81245998951741764.1633209999999990360987491671957472302'); + T('144172855150098.8332813431897919012738325392504726164868382730', '0.00000000000000673875', '144172855150098.833281343189785162523832539250472616486838273'); + T('85529799866102780989277206081042484508661294846.1678649', '0.000000006974145550375375', '8.5529799866102780989277206081042484508661294846167864893025854449624625e+46'); + T('0.000000000000000000012367964247205144574', '-24.9923163', '24.992316300000000000012367964247205144574'); + T('-44089358978.731833149676054401997', '-3455102051335455388472971892.2931', '3.455102051335455344383612913561266850323945598003e+27'); + T('2736316.76004751504759105989955248293683757', '8624.126564458951823396869380153', '2727692.63348305609576766303017232993683757'); + T('-7512235696480.75815974687820', '4322425432060440.112621890781', '-4329937667756920.8707816376592'); + T('1041115705901246425717958893168', '192120533687402856766617056619385', '-1.91079417981501610340899097726217e+32'); + T('0', '2999934433827046995221465.734220582881837016702755103103369', '-2.999934433827046995221465734220582881837016702755103103369e+24'); + T('9132760.7806176704193036626898196556957735479237133471', '-22308955.789058912', '31441716.5696765824193036626898196556957735479237133471'); + T('3', '2510378.8302', '-2510375.8302'); + T('-601681273.341517', '0.000000241648614891714420578', '-601681273.341517241648614891714420578'); + T('7267886123144958232.238682838203', '6452575385170169.8619732325801597156212862621827', '7261433547759788062.3767096056228402843787137378173'); + T('1078231543180', '-48380974651269509996197011777331635750068803914.42093022312', '4.838097465126950999619701177733163682830034709442093022312e+46'); + T('-1565742468.40376463', '0.0000000000010050045763134196571949420320006727965700414589703', '-1565742468.4037646300010050045763134196571949420320006727965700414589703'); + T('-38.8392135498095373389405034839742338375432749653', '0.0000000000002005139891413163385623', '-38.8392135498097378529296448003127961375432749653'); + T('-548507159746966309439370232114407604859278960168.292101', '199162629302104211276079352651591547730479754027.137688159010', '-7.4766978904907052071544958476599915258975871419542978915901e+47'); + T('-133758998429281991365.53', '66349112060274991956125.55718817444465', '-6.648287105870427394749108718817444465e+22'); + T('-39898963484560669919956991873123027250358.023847', '473431260689632044598244688486253.757', '-3.9898963957991930609589036471367715736611780847e+40'); + T('0.000000048220620061585093302526746146', '11163285812734658091858.1', '-1.1163285812734658091858099999951779379938414906697473253854e+22'); + T('122477777.735604874', '1468489954', '-1346012176.264395126'); + T('9276934317177450323278091141313420338701', '0.00000000001807544083251601944163916296938991', '9.27693431717745032327809114131342033870099999999998192455916748398055836083703061009e+39'); + T('-726473085520805.68375', '-0.00000123946378123648562805', '-726473085520805.68374876053621876351437195'); + T('-862282453600744233837865549353.0199427', '-778120.1206481', '-8.622824536007442338378647712328992946e+29'); + T('181724674499441806352104852243619274064166.468709530648193', '87301023839580890632.74008889', '1.81724674499441806352017551219779693173533728620640648193e+41'); + T('6267361382130301.64571563169641350047', '-26946623311829959264900239615329966386.978158853097020829667', '2.6946623311829959264906506976712096688623874484793434330137e+37'); + T('9277033429827', '-11814312598907199463437424804147161225245724986.3549313', '1.18143125989071994634374248041471705022791548133549313e+46'); + T('0.00000000000000002212994406752', '506633182883598094135216', '-5.0663318288359809413521599999999999999997787005593248e+23'); + T('-1416.8382390011', '-616915584637554', '616915584636137.1617609989'); + T('173.67513129697677560331958844251459', '1761111548897687055316514264676906704871', '-1.76111154889768705531651426467690670469732486870302322439668041155748541e+39'); + T('-67316184421669659743.09478', '-247379520759715899369976143088432782692.1213428655', '2.473795207597158993026599586667631229490265628655e+38'); + T('-754359424425.325316286', '0.0000000000583', '-754359424425.3253162860583'); + T('-10745411.84893952612941343946024114284555985539357467110', '-2141617925741482283282941658235570196', '2.1416179257414822832829416582248247841510604738705865605397588571544401446064253289e+36'); + T('0.0000000005131824448956120259143731094456835119548321563889982', '0.0000000000261047578282225790207950702922733665519445636593133768591747', '4.870776870673894468935780391534101454028875927296848231408253e-10'); + T('0.0004478755432082113312483869192', '0.005599339808981958070363083539134166424719944', '-0.005151464265773746739114696619934166424719944'); + T('-0.000000000000001512526283647', '-0.0001153048049432909602774', '0.000115304804941778433993753'); + T('88012539757.9404775939244071255700825395712721930057171', '0.000000000008035455856306225847392238301065068', '88012539757.940477593916371669713776313723879954704652032'); + T('0.00000000000000000073487390383290696928688042616356700', '-0.0000000000000000019730868218008762078515130641383111305700506367751468707226', '2.7079607256337831771383934903018781305700506367751468707226e-18'); + T('54733464273.704359284996374313377912882194031', '0.0000000000000066', '54733464273.704359284996367713377912882194031'); + T('0.000000000000002583138166590499538768478879737734800', '-1493063867598060178500693.39747107', '1.4930638675980601785006933974710700000025831381665904995387684788797377348e+24'); + T('0.0000000000035', '16749083849855920068346', '-1.67490838498559200683459999999999965e+22'); + T('-0.000078422658166136557055297306793562873739079876517', '7.9665125435', '-7.966590966158166136557055297306793562873739079876517'); + T('0.000000000000000004026190822483046169679424015359624776872534298', '-6085341714.088449383656', '6085341714.088449383656000004026190822483046169679424015359624776872534298'); + T('-5.0471797394110', '-3508848877366497564225222.8325257807827', '3.5088488773664975642252177853460413717e+24'); + T('-1495955602856711738.322374249597444877184247', '0.00000337196217180', '-1495955602856711738.322377621559616677184247'); + T('-104.2132489251390', '445169760230242591585531000760.7493281224701823786204109196', '-4.451697602302425915855310008649625770476091823786204109196e+29'); + T('-11595.7728900', '0.000000077', '-11595.772890077'); + T('5693501895857569.824083133994650783219625725263527941848014', '38554113375996.91610257332', '5654947782481572.907980560674650783219625725263527941848014'); + T('-30342286.086738328729', '-0.003035138441', '-30342286.083703190288'); + T('23.0418', '-21373402684893068914382744570171080639', '2.13734026848930689143827445701710806620418e+37'); + T('1', '1792759503737685636350819178488081433275948', '-1.792759503737685636350819178488081433275947e+42'); + T('-38470355434482826491837564169', '-5414067362036587155177091588060858998697264.4', '5.4140673620365486848216571052343671611330954e+42'); + T('5376267017268469803391742461123.1484717294535169', '-3003564661167.71329437830040953302813675659856575', '5.37626701726846980639530712229086176610775392643302813675659856575e+30'); + T('242777368241805037089.180775943923462029927', '-0.0000000000102172171156058275649815', '242777368241805037089.1807759439336792470426058275649815'); + T('-0.00000000000000008656604284642653008106731777826037099', '-6154.026848568460638', '6154.02684856846063791343395715357346991893268222173962901'); + T('-25.0959689', '0', '-25.0959689'); + T('4.4106469958140159750720', '-2.7', '7.110646995814015975072'); + T('-1191115481.24960789843322513194152993', '101480579638.7', '-102671695119.94960789843322513194152993'); + T('-64335581449382102148651961778', '-13922618962022310.38526581442116512370091', '-6.433558144936817952968993946761473418557883487629909e+28'); + T('0.000002419556771906375756783331125070178732526767', '-704659820.24047391470481450387646', '704659820.240476334261586410252216783331125070178732526767'); + T('91086229113018291.85868623557295042563793418491', '-6412976188024708199931810226.6257', '6.41297618811579442904482851848438623557295042563793418491e+27'); + T('-166376886435906071.671676003286240157545425223534', '-0.000000000000091700715807851859225796752901241413659885', '-166376886435906071.671676003286148456829617371674774203247098758586340115'); + T('-1604178602185.15391140031008758283', '-0.003382166434467926234482400431856589755224770', '-1604178602185.15052923387561965659551759956814341024477523'); + T('-1550.5067982', '1755233709470197458.5321953822', '-1755233709470199009.0389935822'); + T('0.3014', '43133762452399944536671349566322158.93626365', '-4.313376245239994453667134956632215863486365e+34'); + T('-64.5979', '-0.00000150928436566222094395688472086656530077', '-64.59789849071563433777905604311527913343469923'); + T('-771717.603678878', '0.0000000000000011883865777330973023055360', '-771717.603678878000001188386577733097302305536'); + T('0.0000066980807778368470000446256117729524345121272595145987', '-32254507023.88915752082', '32254507023.8891642189007778368470000446256117729524345121272595145987'); + T('-3.896651617783010917182197706278524524091', '-234356.4491086908087268932525516', '234352.552457073025715976070353893721475475909'); + T('0.000000000000000000365309384905118249080774978958', '-2593982058025640086344149662711100252281819944.0726056015', '2.593982058025640086344149662711100252281819944072605601500000000365309384905118249080774978958e+45'); + T('-807268846295783.66565769288073589114', '-9279.26445753', '-807268846286504.40120016288073589114'); + T('-0.000205066477824679946712948821846487595173765417878', '-11856312001.2579', '11856312001.257694933522175320053287051178153512404826234582122'); + T('21715853560267741681005732.8864129839650731630056482243802', '-26518465662155265718064844202342', '2.65184873780088259858065252080748864129839650731630056482243802e+31'); + T('-0.0000000002358578440972167', '214498383035810423', '-214498383035810423.0000000002358578440972167'); + T('4361467034560145704861429904045767902851.92573820902038', '3.59', '4.36146703456014570486142990404576790284833573820902038e+39'); + T('-5399354467819638876391446017237518290882302', '-9418844852716336037742898633771821467185538647360652378656.5', '9.4188448527163306383884308141329450757395214098423614963545e+57'); + T('-0.0000001178659835758080442880526500344288949201205201989828562345873', '3789033099896128122043510040864191.7055425399', '-3.7890330998961281220435100408641917055426577659835758080442880526500344288949201205201989828562345873e+33'); + T('0.00000000005982976503399938136849324', '0.00000000000075755295405642132036', '5.907221207994296004813324e-11'); + + T('-421450565450862733739882741263410125987400848651432120569319841269419221990711610801409.8070215252564874', '-243392659607204009035334731041415676417559363520670299047012358737705418584457146.868335409', '-4.214503220582031265358737059286790845717244310920685998990207942570604842852930263442629386861162564874e+86'); + T('2995340172136827282681082940837304688534605164044247935816574334297096539991453139359346773494887259928780399192576191569246077843624156140842225', '-1221176047834651784581078792412765867711628546241044712073657285378727907841444910656147964990491084587511386617.262995074491', '2.995340172136827282681082940837305909710652998696032516895366747062964251619999380404058847152172638656688240637486847717211068334708743652228842262995074491e+144'); + T('66496777.1048248699226846854182647353383780982905985351644739', '611110887295764011339.52942021906792320951632532924734194110935652615437372802282890281281736794257440312255694791', '-611110887295697514562.42459534914523852409806059390896384281875799098989982802282890281281736794257440312255694791'); + T('-1008448844147', '-0.0000000000000000019476287', '-1008448844146.9999999999999999980523713'); + T('-0.000000000000000000516432305268991528777659423596262', '-298372128925675105602022884944348.2680420889095373857666394', '2.98372128925675105602022884944348268042088909537385250207094731008471222340576403738e+32'); + T('-123500072490134997.714568930708754033518940686118181893673033346987867', '-2578011852826744661373892702884.2218394002814041283307474989342835625859515222796606255126639775600582467053535947189955421841414538276875776982', '2.5780118528266211613014025678865072704695726500948118068128161016689129181752917936255126639775600582467053535947189955421841414538276875776982e+30'); + T('21874922820040.11669694092724059036160007405283774815020181046771169772206306814891484445951224460904841652605502865721442462130288010', '31200659.3720643364048896004458800281137277425602565342', '21874891619380.7446326045223509899157200459391100055899452762677116977220630681489148444595122446090484165260550286572144246213028801'); + T('-67826336382297566597618786205691264038459363425175950127924836604587803884808989.730966693870183767', '-0.000010934566312291377545830845045333824309160616881090991', '-6.7826336382297566597618786205691264038459363425175950127924836604587803884808989730955759303871475622454169154954666175690839383118909009e+79'); + T('-86697937667412', '-0.000000000000000010885508014854389736820644838727265143960231771135151634179626636837681706789395306987969756304048180103464002627364375565746495636426525896', '-86697937667411.999999999999999989114491985145610263179355161272734856039768228864848365820373363162318293210604693012030243695951819896535997372635624434253504363573474104'); + T('13239420394588114639023745289048683419202338196760858236726250820537420580804213017510790278292290014782026362194', '-0.0000000000000006743804370173243035185881087573', '1.32394203945881146390237452890486834192023381967608582367262508205374205808042130175107902782922900147820263621940000000000000006743804370173243035185881087573e+112'); + T('15390.4', '4140709577543085939068096954669836524172838073868529566429367862425997374799588343038360402928322145938978599798868.9860038387559873', '-4.1407095775430859390680969546698365241728380738685295664293678624259973747995883430383604029283221459389785997834785860038387559873e+114'); + T('1068041657610774618407195645889793312307387843651159034936031674459010136784601252596838684187431642727503640875306262502315681768438', '-270043310707338335874517438680428125320070134440535322728713924276969', '1.068041657610774618407195645889793312307387843651159034936031674729053447491939588471356122867859768047573775315841585231029606045407e+132'); + T('-154248552738364025256732966577155380446860806518778173860697213762291995224.05508159477619681374', '-0.004301153450587648414307336514788194741568895974277211381969307271', '-1.54248552738364025256732966577155380446860806518778173860697213762291995224050780441325609165325692663485211805258431104025722788618030692729e+74'); + T('-63378626295.9', '3581805238164539487164037240742370503938629203589842975477397652', '-3.5818052381645394871640372407423705039386292035898430388560239479e+63'); + T('-4278738506861855303803.685941371999517217112263860961', '1', '-4.278738506861855303804685941371999517217112263860961e+21'); + T('4722957382126750592971015303833730398703112.9325022739644', '135935655079909511034147686928535747252480216156484264244569583366838078412.147497624', '-1.359356550799095110341476869285310242950980894058912932292657496364393752992149953500356e+74'); + T('-0.085968464304838528608760871311794870568574888285345150515011250264989219693613274665433658244439289382746661487914586830547', '-1063290105646753333057649979045695307527992816411892112479790721669979250549466052710783805392449284495837713080894121068105045830138816290.52', '1.063290105646753333057649979045695307527992816411892112479790721669979250549466052710783805392449284495837713080894121068105045830138816290434031535695161471391239128688205129431425111714654849484988749735010780306386725334566341755560710617253338512085413169453e+138'); + T('16124498471436271836.174203105207953106915', '-0.0000000000000000024763633167036725188984815540228360744116272407116469322488952920669576143580628085795995666173708903799390536974903000256740969', '16124498471436271836.1742031052079531093913633167036725188984815540228360744116272407116469322488952920669576143580628085795995666173708903799390536974903000256740969'); + T('13060329629573076844480853604358182661217396692808889824.8934224473655695659109683301950879985310417264401844104664883', '2655975253497367378557314381561996.880511919813781979361114586185190856887597866439252779127105', '1.30603296295730768444781976291046852938388393784273278280129105275517875865498537440098971416434438600009316313393833e+55'); + T('7828918777589631958673609756697717233158380319992892621665', '664080.907156046062276770226566166774715944049', '7.828918777589631958673609756697717233158380319992891957584092843953937723229773433833225284055951e+57'); + T('1102045632452.9793048891721127647873110178015535129097555045251534115765524554358921107344361810504392212504634634', '10480858160855531623861683.3953304547', '-1.04808581608544295782292304160255655278872352126889821984464870902444954748465884234475445641078892655638189495607787495365366e+25'); + T('1588237583004474241570674574155806135977994054265831583868733852477199751.6125369120506144977', '-1758643150655173823782138162406249816325114275744255398376729480619194524', '3.3468807336596480653528127365620559523031083300100869822454633330963942756125369120506144977e+72'); + T('-121908802598585866222616306604158404572834073196639.30608547355363660580248376236860407669299263592702', '-47300202299798563445786841751110283088211407088073898239866395', '4.730020229967665464318825588488766678160724868350106416666975569391452644636339419751623763139592330700736407298e+61'); + T('0.00001018', '-0.0000000000000000003775949557336735085158573036212360452188352127143755001043595772762253543341426632340961625924634823303829450325116', '0.0000101800000000003775949557336735085158573036212360452188352127143755001043595772762253543341426632340961625924634823303829450325116'); + T('-397079706875731796310420230640137723941921196836019.63', '-0.041045084177321369958383091589758576', '-3.97079706875731796310420230640137723941921196836019588954915822678630041616908410241424e+50'); + T('-25255670718458145585125947408178.20003200206718595937', '23790086654614644315060006023753790313128255720789244411931242762019828811933845880517294907262', '-2.379008665461464431506000602375379031312825572078924441193124278727549953039199146564324231544020003200206718595937e+94'); + T('388216212.4067014280868903953571410637325737919396528867014154838280455505188062329013057244757878', '606945158458429249401712430149203335884502730947097871424092354090910701814671093294150735256.311971299391789036587867972923', '-6.069451584584292494017124301492033358845027309470978714240923540909107018146710932937625190439052698713048986412307269091904262080603471132985845161719544494811937670986942755242122e+92'); + T('-13758420895788683271912900568609892935336486526537239092874365', '0.0000000427931529718203244548288038739877932413390488514893154906501275029696961218603307975431172274454', '-1.37584208957886832719129005686098929353364865265372390928743650000000427931529718203244548288038739877932413390488514893154906501275029696961218603307975431172274454e+61'); + T('0.000370061363293', '-0.00000000729718323650351200936805011200230897331673895494582965292153458641292454418451631', '0.00037006866047623650351200936805011200230897331673895494582965292153458641292454418451631'); + T('-0.000000000000000037267063363570380515693697474002406633393933', '5371503530945116760368005450503842267224225935.443693351128547707505116811332630555129489463135', '-5.371503530945116760368005450503842267224225935443693351128547744772180174903011070823186937137406633393933e+45'); + T('987277696994412694084034600111639245624814061790126142560388376636239445837.3', '0.0000021235425818843833696026604635378067565443474', '9.872776969944126940840346001116392456248140617901261425603883766362394458372999978764574181156166303973395364621932434556526e+74'); + T('-0.0000220122231289032322357369232053897035669971251749680777769003202659812319155442107', '3509368133759059638669289822772173467.5789662072733463078733831264876196643926418400220747139696586172005930587312837', '-3.5093681337590596386692898227721734675789882194964752111056188634108250540962088371472496820474355175208590399631992442107e+36'); + T('-0.0000000000000035350393604865398332629110742215182474841758918373895373399045442910854670022381868595891655052656143931905987096001246764946455093272', '0.000000000000000024560182', '-3.5595995424865398332629110742215182474841758918373895373399045442910854670022381868595891655052656143931905987096001246764946455093272e-15'); + T('-207299473460686051638799737978676287687756682811506270896244029691640707953363231798114058314798954715497689478762298979167444328.2154321', '84.9875755884409473552243470559913666018369306750346853705848251516641143427438599427140088', '-2.072994734606860516387997379786762876877566828115062708962440296916407079533632317981140583147989547154976894787622989791674444132030076884409473552243470559913666018369306750346853705848251516641143427438599427140088e+128'); + T('3271753269852982202221073139870131965618400215989200201303890204830390736963230557181963499423.97161923384826121516522802454125216009692783106615', '610709896713545517320.61325351307180550727524165198', '3.27175326985298220222107313987013196561840021598920020130389020483039073635252066046841798210335836572077645570788998637256125216009692783106615e+93'); + T('-171890925468345318289557520417686524897898778387.7049747769377054087', '0.0000000000008626202220397871613368552810353647018975957787995640929353071154146588942452406480447534761421336774021631535188253352941985865', '-1.718909254683453182895575204176865248978987783877049747769385680289220397871613368552810353647018975957787995640929353071154146588942452406480447534761421336774021631535188253352941985865e+47'); + T('11797561306382075049308870675243395524960617768982687731904993854819896455053370294329059.5', '-9266409282787978360416645397432756233517921427389.714082569117296693989915074785029952731114155890581220089683737330882', '1.1797561306382075049308870675243395524969884178265475710265410500217329211286888215756449214082569117296693989915074785029952731114155890581220089683737330882e+88'); + T('-424430636249988989578724500467105386916790551644026356512230425657196415575958762209685893722637592.42515458907522545588092531969', '-699146481762025356180846176956775322378040371282973135438056771990065583612223969221925059327626424485', '6.9872205112577536719126745245630821699112358073132910908154454156440838719664801045971537343390378689257484541092477454411907468031e+101'); + T('-0.00000130798527635604695258712844244105224418951215845097932279572456369133399455', '0.000000176284029965375880004181656007589949467118245220868298039483413025781635383510797', '-0.000001484269306321422832591310098448642193656630403671847620835207976717115629933510797'); + T('0.000000000000462071916734680776281054', '1143549992221513568696244482022549056707895554082064.282542', '-1.143549992221513568696244482022549056707895554082064282541999999537928083265319223718946e+51'); + T('0.0000000000000000426800518382365970695662273350350877364291904795717019319799963342380112501925257351654', '0.0000000000000013278679842106035272342072', '-1.2851879323723669301646409726649649122635708095204282980680200036657619887498074742648346e-15'); + T('-0.000000000000000000016354802329513866', '122022209857.15312653353983161651403936785710765909662481656738699983151473856575442647972705932905488645338136045162567147688725', '-122022209857.15312653353983161653039417018662152509662481656738699983151473856575442647972705932905488645338136045162567147688725'); + T('25801628293435628816490256345279207687083725145006124892029160063238265267.3431144744384935936819525999160077311803590506825603145972954326789291', '-285119248451148500201319196762968888442368918233718192676490082873043334950267626673646944070692473524519642', '2.851192484511485002013191967629689142439972116693470091667464281522510220339927716797718360998525367627849093431144744384935936819525999160077311803590506825603145972954326789291e+107'); + T('0.1423', '2429833169520732752372574762485088466742598273119469284544035996929667546050321271916945887077199411341346293601.72939677', '-2.42983316952073275237257476248508846674259827311946928454403599692966754605032127191694588707719941134134629360158709677e+111'); + T('3.80188793676049024809', '0.0000000000002833272682244473387924044230539081036171682212105326649350597590901815021244717391629977491943712364070741264536987011350709308', '3.8018879367602069208217755526612075955769460918963828317787894673350649402409098184978755282608370022508056287635929258735463012988649290692'); + T('-322814450973877874279521.0', '263039808493736512406179831713394337242295861157184.672295063', '-2.63039808493736512406179832036208788216173735436705672295063e+50'); + T('398742236640963', '44.00495510581548851408966', '398742236640918.99504489418451148591034'); + T('-3573583864.539627856711706646067988209079651520670851811891852561', '-0.00000000000000000329278234017133237246586831901282091949913572717292793996445894343939371558967511917774705488676891269560643860123317086289974802538004355597691349812', '-3573583864.53962785671170664277520586890831914820498349287903164150086427282707206003554105656060628441032488082225294511323108730439356139876682913710025197461995644402308650188'); + T('1912764785977618050454430552593203249088615699', '-485515908236945825.82230967655356283052002508081428895192743749813173660196480495243134130534734417501263634', '1.91276478597761805045443055307871915732556152482230967655356283052002508081428895192743749813173660196480495243134130534734417501263634e+45'); + T('-209.9480474748934376775111457605595206860865832017099805042786198516620696960966458436798888919348', '-539891303089085349109418789373221841481476900927418909970947.98689276127478239299357632782372174032445906', '5.398913030890853491094187893732218414814769009274189099707380388452863813447154824305672642010542378758582900194957213801483379303039033541563201111080652e+59'); + T('14686906472232406033983442617897900163963974602', '-1420622706271964656354950704.1697326665068929806041828344182380198712418608178840095762', '1.46869064722324060354040653241698648203189253061697326665068929806041828344182380198712418608178840095762e+46'); + T('86543050569726858572005888237520502257116260484789853410061111403475802158093598826908247486.836335533846125875491403509186859062493992', '-0.0000051065665739422395774587551282612336173295903645593309699764793560943989004198255241', '8.65430505697268585720058882375205022571162604847898534100611114034758021580935988269082474868363406404126998177309809679419873237276093295903645593309699764793560943989004198255241e+91'); + T('342895773116306829110212528967784741562164292.01513115088269038806033385850', '0.00000118862709647506650871551520859000440835170689555307064827601186026157168885360722702508608962915698632770928960656597545', '3.4289577311630682911021252896778474156216429201512996225559391299382514298479140999559164829310444692935172398813973842831114639277297491391037084301367229071039343402455e+44'); + T('739924109312422522091016571038779963072584', '-64775259.6826186518884824872925596155743958419605122483453848814970771390948590513454670', '7.39924109312422522091016571038780027847843682618651888482487292559615574395841960512248345384881497077139094859051345467e+41'); + T('6609838981181176735659252.7740697649501200112', '-11286186232989566466114315553164377878561114785839243669268249646267418129841210.35980783715095457778535932', '1.128618623298956646611431555316437787856111478583924367587808862744859486550046313387760210107458898535932e+79'); + T('-187391162221219921070460320744240172407912239353798545547332717684757305669457677296318215340489442645.28366529601614598850373', '-9113.9748812203681488412701629366868978775543399390741272418220574874035442918413045437197807171343403867576380368103250028', '-1.873911622212199210704603207442401724079122393537985455473327176847573056694576772963182153404894335313087840756479971472335670633131021224456600609258727581779425125964557081586954562802192828656596132423619631896749972e+101'); + T('545567297425658900059033345039628434103460646144205348817463850197715173654.760035446992603845914884479975954101703', '-3.25531678994006', '5.45567297425658900059033345039628434103460646144205348817463850197715173658015352236932663845914884479975954101703e+74'); + T('41005341883885124910253307373863933024572386393999832504926014424.04068230757553061685965194104847256614930594539431445372085538790197', '-0.0000003064573352368766798045131330999970376084101941252529063279240676746738279894937999916288137325237148909161534147848901003719756893653182826', '4.10053418838851249102533073738639330245723863939998325049260144240406826140328658537363317455616056661463435538045085789737617158260376746738279894937999916288137325237148909161534147848901003719756893653182826e+64'); + T('-21772543213224719483282057502996460271243910021555859843788194322560764800215622961743791', '-219538453980808949925972347106117120906813214436418773865178519764872595507494270091275.549469440429227', '-2.1553004759243910533356085155890343150337096807119441069923015802795892204708128691652515450530559570773e+88'); + T('4843564632.07325685271287267587642074472329955', '-2253.1', '4843566885.17325685271287267587642074472329955'); + T('-1465639293224611258.1640919252320447', '0.0000000000000009272840616057150840199792579106702667313583800294803029238640296064513396998901049886143310419234155012846386', '-1465639293224611258.1640919252320456272840616057150840199792579106702667313583800294803029238640296064513396998901049886143310419234155012846386'); + T('46668145279017817857972034174120636924960629989668564040596683624271865534.57', '84.9', '4.666814527901781785797203417412063692496062998966856404059668362427186544967e+73'); + T('-738241543348122522391845849281775440907729860333.816380311486149269839379', '0.0265469560323666758057467119830695293620004914159121944165101243889371879961', '-7.382415433481225223918458492817754409077298603338429272675185159456451257119830695293620004914159121944165101243889371879961e+47'); + T('0.000000000000000001734597550329925170683988212040626455377015149950764555153937498632499946117886619477443', '21522778596700039662643518332810996834742527241604682606746145945739181821479030002316968608237.843101668183269553916654985900396859343464324', '-2.1522778596700039662643518332810996834742527241604682606746145945739181821479030002316968608237843101668183269552182057435570471688659476111959373544622984850049235444846062501367500053882113380522557e+94'); + T('-0.0000000000000000000309703805445398610474900212495574298677865146433319735295565686883503979155963415371001608918561542864325055703887850430784945642120545934153', '-5.6227', '5.6226999999999999999690296194554601389525099787504425701322134853566680264704434313116496020844036584628998391081438457135674944296112149569215054357879454065847'); + T('-5064143323681064652393632163111.93089333677771516967546169174265515779023117868686275683397034493611565', '-0.00000000001073777696437370169', '-5.06414332368106465239363216311193089333676697739271108799005265515779023117868686275683397034493611565e+30'); + T('-1396826091243475193.1', '-1288002403964300782016794952204121336647057494337679233.713597178033979199448274404277214801719513817499902870656', '1.288002403964300782016794952204121335250231403094204040613597178033979199448274404277214801719513817499902870656e+54'); + T('364339635.011212286283196681723183929801097146881219006560017', '-1005720700996298', '1005721065335933.011212286283196681723183929801097146881219006560017'); + T('-257562976090545385234669132851624833292427282439090020.719343974047857466853161243072384425509047149775370947901720407174956846928296202473095472', '-1623127319151265475871704129654550871405407416881602056343569964910663809884633229508196329223823041.7206810159931522079791856822', '1.623127319151265475871704129654550871405407416624039080253024579675994677033008396215769046784733021001337041945294741126024439127615574490952850224629052098279592825043153071703797526904528e+99'); + T('0.0000000000000220607316968906929903970883560258897819751208683268360364851788263', '0.0000000000000000600784639775121406482942932372611353', '2.20006532329131808497487940627886286466751208683268360364851788263e-14'); + T('-0.000000000000043989086', '-44309230851677894984939938565089867097397779157566647630330915058596891092311151485774600807340241541392574864911717487.862518042789404', '4.4309230851677894984939938565089867097397779157566647630330915058596891092311151485774600807340241541392574864911717487862518042789360010914e+118'); + T('-0.000000482926598434254495862080721294034240317086724705402508463332112037991339240729385845354673866033075192672349090063032508', '-131360031110406516192037002195365556732148135932795271282547111275387791270050177023234968875866030325638578', '1.31360031110406516192037002195365556732148135932795271282547111275387791270050177023234968875866030325638577999999517073401565745504137919278705965759682913275294597491536667887962008660759270614154645326133966924807327650909936967492e+107'); + T('90662704837359221983067383218111894.9575101269344703639471125782669325117231999424752935395342', '-1003082878257466499301963750949455756319801133590.9096038135671589349331563057210', '1.0030828782575571620068011101714388237030192454858671139405016292988802688839879325117231999424752935395342e+48'); + T('8122241424803915907910045579802249996527160493328189939983695513719757201277358369302040281397660429815708520244075564900409812', '5953815721349504215933972982145270510517473063697276921387486344144210713.78', '8.12224142480391590791004557980224999652716049332818993402987979237025298534338538715676977088018736611843159885658922075619909822e+126'); + T('7991350014483385014452400954462003012335870376818921107933891647581751944961549909381574328015589839.2322422374080381874344210390470431707892', '-18688.878545993875113185968540055115951056413820404', '7.991350014483385014452400954462003012335870376818921107933891647581751944961549909381574328015608528110788231283151373402961094162994227203020404e+99'); + T('-1201549207285023471623288363.093077137984596708144478749068', '0.00000026539824642010892262104442818872329795607002102749766710877993859556577972466454691281569600833952883562418043758499574880445814224717667678262548541', '-1.20154920728502347162328836309307740338284312825340137011242818872329795607002102749766710877993859556577972466454691281569600833952883562418043758499574880445814224717667678262548541e+27'); + T('75311239722806498991168677625201999153196464897386996233710029214675693542594584.030032275297208734980242411305757844200195419550995808', '0.00000000000000174652609458505387986677857979923', '7.5311239722806498991168677625201999153196464897386996233710029214675693542594584030032275297206988454147826251877977421615620320995808e+79'); + T('0.0000000000000353682715117343396008139392193804645279990939015187625700163231712251406332', '0.000000000113523402513085710775666504535102628539977357555114115140', '-1.134880342415739764360656905958832480754493584612125963774299836768287748593668e-10'); + T('25393267156020697622507966272559237.59641792718917124986994778365558647150342934845113943261397901868166533972121', '-8953602751519594072912851200714566873449464820520095981074552864073057275.64400277107712961954031710933646037', '8.95360275151959407291285120071456687347485808767611667869706083034561651324042069826630086941026489299204684150342934845113943261397901868166533972121e+72'); + T('-109621598899109119.681443742531046712086897', '-374581278609124761376087334567960408592166724187316443183587025428047356270871954503065666641000369697417943372656053785.43872597385309997628624757', '3.7458127860912476137608733456796040859216672418731644318358702542804735627087195450306566664100036969730832177375694466575728223132205326419935057e+119'); + T('-1', '-975353903601003155097156088969595825652369092261504414412601751527209186035985001687896975402318843359120945984358141908733802607901210061', '9.7535390360100315509715608896959582565236909226150441441260175152720918603598500168789697540231884335912094598435814190873380260790121006e+137'); + T('-1010180736624357632304278472376562', '-2976630172749484868944762912267709771588766925127519991889274779878786428243958065464677092268718803221719459273939687', '2.976630172749484868944762912267709771588766925127519991889274779878786428243958065463666911532094445589415180801563125e+117'); + T('-0.0000000000000000003534066629774631966159394411462082995873351999578646015320944827942055231355490842935810', '-0.036044356747079611060903437812032142854350', '0.036044356747079610707496774834568946238410558853791700412664800042135398467905517205794476864450915706419'); + T('-1526096527808476160349609179852946562211.685903646022496376055878254', '1362591651000463812653063829143557737447628829546619971189589.203149513988762118328955262250680582456193660886095627130648934202517770563176', '-1.362591651000463812654589925671366213607978438726472917751800889053160011258494384833516250680582456193660886095627130648934202517770563176e+60'); + T('19320521819464336609965537393303850154554779478967237541.181740342436742642132602701909555424833647068652587', '36.95235866', '1.9320521819464336609965537393303850154554779478967237504229381682436742642132602701909555424833647068652587e+55'); + T('0.0000000000000000059086539273106107233962061788234561229771196283927754983525', '0.000010966647043776077878565685051717652096966', '-0.0000109666470437701692246383744409942558907871765438770228803716072245016475'); + T('0.000000000000000291508913251611559233670098989956434773070295291467160805172311376194998291058162533782938726179866516047606', '-1628909277725099787508683923508579707615799.2781649599495440150562819682935976323342667567117971951187701859394514400', '1.628909277725099787508683923508579707615799278164959949544306565195219905156866004365746668231968189065477406612245172311376194998291058162533782938726179866516047606e+42'); + T('2456565085671291252533213649183332261726393175508794379993650690041356484115074939702355', '-792071839545569033370633444973336689417838.95905325719912926858163081', '2.45656508567129125253321364918333226172639317630086621953921972341198992908841162912019395905325719912926858163081e+87'); + T('36242208914619642339819083618221621528937544636695183870528988863103659500324120453213846411263678533206476169383042170996012205255558591125924287', '-8527637110089077004296133078.548689219750368210567156616', '3.6242208914619642339819083618221621528937544636695183870528988863103659500324120453213846411263678533206476169383042179523649315344635595422057365548689219750368210567156616e+145'); + T('-288139905642.85133972865494566177561360699121828453190729669018251776515265250985806198704228574404406409996058809130695', '57.685745719', '-288139905700.53708544765494566177561360699121828453190729669018251776515265250985806198704228574404406409996058809130695'); + T('-680590848077096656729099299986105268010775', '-3940756250582632953280085589688456490450830441053358639711015662685.5876458545849231450334623183020123887046847733341586636887427156443214389386142', '3.9407562505826329532800849090976084133541737119540586536057476519105876458545849231450334623183020123887046847733341586636887427156443214389386142e+66'); + T('-0.00000000000000464798477570881362597831391087848642171588956612352664397214025637282503146289569312188996809201235391721184701297091963', '229510668379945446635992190232641551178111333311952316902120658018936303610', '-2.2951066837994544663599219023264155117811133331195231690212065801893630361000000000000000464798477570881362597831391087848642171588956612352664397214025637282503146289569312188996809201235391721184701297091963e+74'); + T('-47431205694992565418930842840793703282717398.191947035122622', '-38262831081463216678995758515.24', '-4.7431205694992527156099761377577024286958882951947035122622e+43'); + T('-919364307978.8988017767137102', '0.054658', '-919364307978.9534597767137102'); + T('-143225400724940647154298336931676918152131842385395309001703075947743779850991836523285204182327721048431248004372787336203288188136955101.42539412', '-0.0000000000036444268460743503614664927361907234', '-1.432254007249406471542983369316769181521318423853953090017030759477437798509918365232852041823277210484312480043727873362032881881369551014253941199963555731539256496385335072638092766e+137'); + T('632955343367277745405583809562259843947443640083859269919841228715604160541151817585859720.153766976201457179988669391500248183047854', '-3980620775419876921723363242387478932830746531218598561304844371368103759418106738578.2191228007189231296352120987296973541145408118698522', '6.329593239880531652825055329255022314263764708303904885184025335599755286449112356925982983728897769203803096238814902299455371623948118698522e+89'); + T('-11431356965911717667550228258416437331889929786766103155708832250235968861451582992625848777060561188238182761522625940473897303', '-21494014792784787595184007767480630.4718359202897210704378425198', '-1.14313569659117176675502282584164373318899297867661031557088322502359688614515829926258487770390671734453979739274419327064166725281640797102789295621574802e+127'); + T('167445439608039555943133.2565349346255919159524753710331727927482546974522844127', '-170610177.84658737421848366816682443401980132194941329175375443204315', '1.6744543960803972655331110312230884407558411929980505297411469766798920603884474315e+23'); + T('13588050303471.14204224509147709748772701071961428', '-2846670239.21559765880387140454090103138633524132996006051956914300933861577438157749445114659138365637629', '13590896973710.35763990389534850202862804210594952132996006051956914300933861577438157749445114659138365637629'); + T('2884217633259642787319342000051603653521516691886608156996898524479398460095322784150599567666195414054636506165396248262312499110274037149829793', '-0.49', '2.88421763325964278731934200005160365352151669188660815699689852447939846009532278415059956766619541405463650616539624826231249911027403714982979349e+144'); + T('1628348053926578504775310683640594840.18', '-5', '1.62834805392657850477531068364059484518e+36'); + T('0', '25.6085', '-25.6085'); + T('0.686217890943093321456902957432427930920753888456197188131905279831038714006759313970367467076944122805245768167433186925922801013913340', '-280.9846437544474336300817147012964188574151285470284551305', '281.67086164539052695153861765872884678833588243548465231863190527983103871400675931397036746707694412280524576816743318692592280101391334'); + T('0.00000000000340332021329324173250202191356270977362746852052557847139210569709283686364254219951529694529651271453552821650417', '-164368911717325046920.73329482756545681454251205873812192944414945415279875808501852199453462518417817132233', '164368911717325046920.73329482756886013475580530047062395135771216392642622660554410046592673088127100818597254219951529694529651271453552821650417'); + T('-516534324070139884.7741879765292957505952198282777909600935487202', '146754452557367377599239860534956890285095395520562623.08414402490725339577004922478313417', '-1.467544525573673775992398605349568908016297195907025078583320014365491463652690530609251300935487202e+53'); + T('-7862150161740.333843293297844', '-3489304238554590513247507065916226966675791294808848752.7395893237178003837558347838402377186885033242010881848399380565235778', '3.4893042385545905132475070659162269666757834326586870124057460304199563837558347838402377186885033242010881848399380565235778e+54'); + T('-76425877353723218923193769976112627809694461006515127338.70903900591342267672', '-81405', '-7.642587735372321892319376997611262780969446100651504593370903900591342267672e+55'); + T('448890821004569959750117.3985925529062982149919', '-0.00000000000006771592275943991478905618644801247941193384606583159209550989858234', '4.4889082100456995975011739859255290636593091465943991478905618644801247941193384606583159209550989858234e+23'); + T('0.00000011406978978113385456966935146505617316701596378729845687370006219616672043338275771066022032618558072376690445085965016785383519759578849021601322', '0.000000001074333633497324260534', '1.1299545614763653030913535146505617316701596378729845687370006219616672043338275771066022032618558072376690445085965016785383519759578849021601322e-7'); + T('0.0000000000000000098388959587739740341162303378089561994855515112821239635081705976158309039469451054135', '-0.000001410700377949704801346056617673576599569410838070841791880586705430927605302815864034641907656163728488162489705472103253731031782190814249810704', '0.000001410700377959543697304830591707692829907219794270327343391868829394435775900431694938588852761577228488162489705472103253731031782190814249810704'); + T('16965', '0', '16965'); + T('-173296003170746074411974480464449849275789060677253187906655130.35621428918277091401054198685991445606', '9987307250642568848222273488.07237677103631', '-1.7329600317074607441197448046444985926309631131982203612892861842859106021908091401054198685991445606e+62'); + T('56313995097156205794032855788026957442153004380906', '1959197690.09', '5.631399509715620579403285578802695744215104518321591e+49'); + T('-16265987991789427405120519655124290086694897782465483955109881892312790.0', '-8472377582734657144678697107349408612484052002424435997452474401137339657179.8354793580669182195980931547215677234501775415', '8.4723613167466653552512919868297534881939653075266535319685192912554473443898354793580669182195980931547215677234501775415e+75'); + T('554861276750786050195093192911576646864838216939018115253478076548406847106024415049015009323070447826851.1693209493824199114881022365592076838779457', '1729203992886560182769799176627696.7030206', '5.548612767507860501950931929115766468648382169390181152534780765484068453768204221624548265532712711991544663003493824199114881022365592076838779457e+104'); + T('2350978155540287801691924042190620635285451442925634874069224914124883396043040648506312047176852810899548676455764006316837438', '-2551506628086094864840341408447994216741146364868142569612506063507487425025110.309931396625986', '2.350978155540287801691924042190620635285451442928186380697311008989723737451488642723053193541720953469161182519271493741862548309931396625986e+126'); + T('13203137085009109554034420.10176018304241579430683160045', '170019441677688.0741576755619011964973604245532745397', '1.32031370848390901123567320276025074805145978094711758967254603e+25'); + T('-91119940320533621629925088838381377761994531140379743426003837742546140176935348401012460941486552655906857745993505840563823144054409171683778779229', '-74652873494135054265048456139803801421904108545479487454387811725432723023321219093564112176252137605.48139182125841144031282511', '-9.111994032053362162992508883838137776199453114030509055250970268828109172079554459959055683294107316845246993426807311754050192496084505950752664162351860817874158855968717489e+148'); + T('8687124396055842976264601096501451863929462701537236230130347130957533866751062788203.6801997865475627493037980272028364235779819787945862854388786', '4393.0547331217320860218042817496323025348168504', '8.6871243960558429762646010965014518639294627015372362301303471309575338667510627838106254666648154767274995162775705338887611315787945862854388786e+84'); + T('4227267383837391491108630568817648.18', '4703737939182568540209790636363.1253794769484641462244847000439730177702702662024029476513485225861537356914086556572097', '4.2225636458982089225684207781812850546205230515358537755152999560269822297297337975970523486514774138462643085913443427903e+33'); + T('1331599892524734478741104974374901736796', '8613986863.5286325031971100693336720522422497083861729312475851625078455', '1.3315998925247344787411049743662877499324713674968028899306663279477577502916138270687524148374921545e+39'); + T('-1435605.5713', '-0.000000000018538927081499603430462441110384554897082244', '-1435605.571299999981461072918500396569537558889615445102917756'); + T('-0.000000000133889283781216077153647008712974175960714836447518299614317834783467849261908546492568082004751707979306122', '-0.0000000000000035759233716787482258438019525200', '-1.33885707857844398405421164911021655960714836447518299614317834783467849261908546492568082004751707979306122e-10'); + T('87163032789315876139411128215473910733429571507063141054764287035611190214823258259', '0.0000755980441879469673888177662328951349071414731847083920686253624381293723357131370215782774531128617325392065045408062', '8.71630327893158761394111282154739107334295715070631410547642870356111902148232582589999244019558120530326111822337671048650928585268152916079313746375618706276642868629784217225468871382674607934954591938e+82'); + T('-9968522225042314632060285988443730732405555397698281720591792230663115171346412535.174789294146936609880713903210346686578323', '0.0000000021461329196842167039414796333960450676424674430116711196401669424125946978994613357227', '-9.9685222250423146320602859884437307324055553976982817205917922306631151713464125351747892962930695295649306071518263199743680676424674430116711196401669424125946978994613357227e+81'); + T('-682416717526953753240801236778041538122363074270539580771563.1595987724242158270047634677372763495475148', '-3227642122668496595741822002740302413422234499976652746605683904.9121550427442753468836876331877102668', '3.2269597059509696419885812015035243718841121369023822070249123417525562703200595198789241654504339172524852e+63'); + T('-429867232476019516593307236395662379525520042732934988570902.8316836760759159804393112331039824296654196079561094919062415600057', '-0.000000000000000026333381057307903712946311446867749470440652084025735627892221995697998435370429702', '-4.29867232476019516593307236395662379525520042732934988570902831683676075915954105930175796078716719108161088360021465589475979964372107778004302001564629570298e+59'); + T('-138287645002871107111044106385113952028931497798857994040661009094288998455256.8095564239091729600518464971437959597906', '-0.02071931654118840583447405976401564732916585950777930', '-1.382876450028711071110441063851139520289314977988579940406610090942889984552567888371073679845542173724373797803124614341404922207e+77'); + T('4607551890089700279547745482119886413441062288238756662240999999639177353304250157030', '43307073.38', '4.60755189008970027954774548211988641344106228823875666224099999963917735330420684995662e+84'); + T('6920.57190940428', '-8645401812213044670689632263.29035180132881948349690692829976371388993201328638', '8.64540181221304467068963918386226120560881948349690692829976371388993201328638e+27'); + T('500991793', '-251557191089121012500206645723710630.646511742483974550401389816576313099323805855573024993', '2.51557191089121012500206646224702423646511742483974550401389816576313099323805855573024993e+35'); + T('-115233062337818810389000461509795282853985222.0275735411960280352874012910144768141872396745625756737723537749444300561710511610476184357904253808912', '0.0000000000495099894662293514089120418920723309611170282344708775045419868213594847406514716827907876160549261', '-1.152330623378188103890004615097952828539852220275735412455380247536306424233888560793120055236927020068246524489720429924106457882699074732161685072549261e+44'); + T('1084723297738639869084299710762779016169159497808468673580004946719115763988516377.060148266799130410609492416453157', '1150603671275361.430584849644', '1.084723297738639869084299710762779016169159497808468673580004946717965160317241015629563417155130410609492416453157e+81'); + T('-620198612430107265937225529159584510224233045.598796327230401974796505862412', '8699552316331245145807826624182809542207885635402715254490655987896376746007483640710686.1', '-8.699552316331245145807826624182809542207886255601327684597921925121905905591993864943731698796327230401974796505862412e+87'); + T('-0.00000000000000020169002470441637778693075769563628101156942009213003841435019513553874336624464221898908333827', '55.3331815493788993877220026432941015', '-55.33318154937889958941202734771047928693075769563628101156942009213003841435019513553874336624464221898908333827'); + T('-509764.93911892369554928129540502547911386352816580281788234048871931011148766546995671957100520016074479741', '-7382417043131145488539352159357244152353681306894423489936116601393190269054624158211831.7', '7.38241704313114548853935215935724415235368130689442348993611660139319026905462415770206676088107630445071870459497452088613647183419718211765951128068988851233453004328042899479983925520259e+87'); + T('-893000341.075147812975752038206750463966592844149263520700585107620473591684006742845795349014', '0.00000776091913729118336285439866565205907149064403785475', '-893000341.075155573894889329390113318365258496208335011344622962370473591684006742845795349014'); + T('-0.000000000000000002814616587779740535288495495412599887159946708410461905984819284638731116086722791161143897920235719807012684318952369879227930494144', '-0.0000000000000000005799625258433885817982609943558405190973445644397869297994874177616229666024278363086227571999810218116665', '-2.234654061936351953490234501056759368062602143970674976185331866877108149484294954852521140720254697995346184318952369879227930494144e-18'); + T('1834227012352.2713316845164117139085412957218639331749015268185070505', '-4.100048574136744539426673770238786618959827409', '1834227012356.3713802586531562533352150659606505521347289358185070505'); + T('0.00000000000000000142961844636281549156124640702213622371103004167390847447921367714972088995760542647850152690627680982452493981026', '6.1225395082722753161364268570886553216', '-6.12253950827227531470680841072583983003875359297786377628896995832609152552078632285027911004239457352149847309372319017547506018974'); + T('290235134201682761299.48447329578802943221996178987974147165456654679438349900205350412258435388669557', '-5.251662064778328732803891', '290235134201682761304.73613536056635816502385278987974147165456654679438349900205350412258435388669557'); + T('52669199650648.0733153757733982313403970813057', '10386465556240559678192244.497235287453859060119988808620945435183307855210', '-1.038646555618789047854159642391991168046082877959172731524543518330785521e+25'); + T('564130335207659724622920169067214809519472975333569366119272839995955208278726184985111100693242720484069747466014', '57536812827159741113793203777862678446119346340872225907713497972953215.80310853441834229459084096442571657822478233621137898187840818727731', '5.6413033520765972462292016906721480951947291779675653895953172620275143041604773886576475982101681277057177451279819689146558165770540915903557428342177521766378862101812159181272269e+113'); + T('0.00000043656429426791027383754468210558259906392852085133878453458581222463232577586181', '-271425626170236597587007634813280769267131068497092506238139897701753645335886637971522821911055750072613148529', '2.7142562617023659758700763481328076926713106849709250623813989770175364533588663797152282191105575007261314852900000043656429426791027383754468210558259906392852085133878453458581222463232577586181e+110'); + T('6481867806858740818821154.19518001214840199197053504721', '-24870963461424.9780802848031479299059282084582297393626139502421237942537429692805914399653118951', '6.4818678068836117822825791732602969515499218764632556682297393626139502421237942537429692805914399653118951e+24'); + T('148.5411044804108834287889704020144411630326474907357936225017786074238828250511258990554797855720803620532362291284421872991756289113870701', '1687016782820477407264422479587.9602119652053424651802657', '-1.6870167828204774072644224794394191074847944590363912952979855588369673525092642063774982213925761171749488741009445202144279196379467637708715578127008243710886129299e+30'); + T('8753847156263969.74982484420314345673976831768407096355073194364180012848383603365570684241235747026243411927098077087739548', '-0.00000000000000003613762', '8753847156263969.74982484420314349287738831768407096355073194364180012848383603365570684241235747026243411927098077087739548'); + T('-16837319431920685704407321.888557412698092013196681699716686208311450572004672272353233944129089212943388330973909123531051036641', '-1434889199750833697003122178022.058644773719134292792949141816179232326040948745', '1.434872362431401776317417770700170087361021042279596267442099493024014590376740327727646766055870910787056611669026090876468948963359e+30'); + T('2735023455757108232743.584761329', '-883406375899961097762446633306214261625385142201740151414521222441704673205539113483156696740358847547521951238312862.0627294', '8.83406375899961097762446633306214261625385142201740151414521222441704673205539113483156696740361582570977708346545605647490729e+116'); + T('-689135077159362593015820247134066.74813269929304775244252204', '62605354599199881779688698278184513063808732', '-6.260535459988901685684806087120033331094279874813269929304775244252204e+43'); + T('-93750448497700582903413063583342246551210153127015625232845923539378736289601064020685503346328943587228412139711305446249370169912156093', '53953865201297384977039465.35433748887805', '-9.375044849770058290341306358334224655121015312701562523284592353937873628960106402068550334632894358722841213976525931145066755488919555835433748887805e+136'); + T('-0.0057925051239501905861387596709549007647236435494415395249013033629943873073216811979342031615889626092942975371394702866419123165012397470964059557', '246259164947571633614812263148098657772268077205108363195576642177873196268402803807976843988029200739623402923', '-2.462591649475716336148122631480986577722680772051083631955766421778731962684028038079768439880292007396234029230057925051239501905861387596709549007647236435494415395249013033629943873073216811979342031615889626092942975371394702866419123165012397470964059557e+110'); + T('202392866176', '-8676236136205102485012807', '8.676236136205304877878983e+24'); + T('-191.8725060079318845278193570544207471357649633582270807761589989403533787967818943544130158154895636289', '5967581749760718357075978833.8340341311556837206664', '-5.9675817497607183570759790257065401390875682484857570544207471357649633582270807761589989403533787967818943544130158154895636289e+27'); + T('-87951143371583656362303007410293120018882465816507444269402753743368383718', '-2822.68023786349119776278475695671489424412910651386641750260764', '-8.795114337158365636230300741029312001888246581650744426940275374336838089531976213650880223721524304328510575587089348613358249739236e+73'); + T('-2049698402682368740429778132608', '3963994567.44431117756210251278243787772', '-2.04969840268236874043374212717544431117756210251278243787772e+30'); + T('0.00000074347728103607719356135364801379323744725864451372933321009322616176605367628546021691519809986', '-8540850540817997066546115303931551402143341270504721504778718364110693.89400762910442310131822804681639793', '8.54085054081799706654611530393155140214334127050472150477871836411069389400837258170413739542160817004594379323744725864451372933321009322616176605367628546021691519809986e+69'); + T('585159105540713468004754266887.654351367900', '1854705740580.2225867', '5.851591055407134661500485263074317646679e+29'); + T('162041637982.2683403774133705140156618173084938487183540577160265469', '-2197013308.144', '164238651290.4123403774133705140156618173084938487183540577160265469'); + T('174785435.552717047585130654711', '0.00000671119928322725418238685556928705875440728878357795977246824794908748816696845271345930860829862726899160137025675180272592756862877515530420748', '174785435.55271033638584742745681761314443071294124559271121642204022753175205091251183303154728654069139170137273100839862974324819727407243137122484469579252'); + T('4747036426204027106781637076.99097717205130208396664801692006667885526524697426', '391523438182724274674956108257313659034734187677930.91506053303114035059545228819956', '-3.9152343818272427467495136122088745500762740604085392408336097983826662880427127949332114473475302574e+50'); + T('-10745175155350240219231799201005463136151.98855739210592020709205390996178000687517676358804699378042357529248908687167266714727400279', '-0.0000002750441382972253188972707268540147394058399897719491538526', '-1.074517515535024021923179920100546313615198855711706178190986673501269105315286043735774805722183126972269248908687167266714727400279e+40'); + T('-2016841186074253812287860201579902794714901016418893309168903524134146272466067614888435632384131092578883301477097742275', '-48984', '-2.016841186074253812287860201579902794714901016418893309168903524134146272466067614888435632384131092578883301477097693291e+120'); + T('0.00000000000000000075207122050490580445284855903892869462082699466860383714628003131667711449129', '6753.26798748946603087152519732149922074864703600110831025894212287136691857176209', '-6753.26798748946603087077312610099431494419418744206938156432129587669831473461580996868332288550871'); + T('-308768135249863901090901133014590589993514630400.7468363567730076836979817211331706945342868110424488561974871997974143', '-8486713.9935588503385776986188852583327833173309260920238377195', '-3.087681352498639010909011330145905899935061436867532775064344299850790964628003873772033607190186111366974871997974143e+47'); + T('-0.000000001028796916762577891829', '1261021215925756356473356031384588949462200699880284631995758278856051', '-1.261021215925756356473356031384588949462200699880284631995758278856051000000001028796916762577891829e+69'); + T('-2903534117347456791838333880169161579106798055500855912397515413217562006547074531951197755159', '3307709092093724676970726712003.7206946987943424741314293246854810621', '-2.9035341173474567918383338801691615791067980555008559123975154165252710986407992089219244671627206946987943424741314293246854810621e+93'); + T('308731033791553222538788495713125564554678655165.2376522348907919208222504963793054507680223355575585755605662130362013509014505533795599', '-169.6211818204352308680313496650435350420', '3.087310337915532225387884957131255645546786553348588340553260227888536001614228404927680223355575585755605662130362013509014505533795599e+47'); + T('46348756895149965005917587370622806277924635266696727', '-0.00000000000000002398533517999676328004879683029567483442514435593265672823703129497223737239', '4.634875689514996500591758737062280627792463526669672700000000000000002398533517999676328004879683029567483442514435593265672823703129497223737239e+52'); + T('0.00000003006579713187753751924205324740743488561146075520720007968290383452647952341024387158387162086926340315695048074352907454', '1105061311685464009276168371271826257860.49712297124331664597', '-1.10506131168546400927616837127182625786049712294117751951409246248075794675259256511438853924479279992031709616547352047658975612841612837913073659684304951925647092546e+39'); + T('-3.6658927729870468', '-285149436709749.875158993845', '285149436709746.2092662208579532'); + T('1013170470745994100692839107539318414591831785271578048439737249808144480351311573254823428168517820353394587009371292.096734997794012533488133881722531', '41152002543729538774558905430724841814570756403811876570254628123254482638637.6488377939839037328832602707121007518768718906728163', '1.0131704707459941006928391075393184145917906332690343189009626909027137555094970024984196162919475657252713325267326544478972038101088006048736110104302481231281093271837e+117'); + T('-33927165312151896961929125486531.3854145399412684039819801379567554380', '-6267032.778812', '-3.3927165312151896961929119219498606602539941268403981980137956755438e+31'); + T('-4363114224107555270076478029292860456660849819228669713810028502419476164665171', '-36729829795867171018424681856707243732121421681', '-4.36311422410755527007647802929282372683105395205765128912817179517574404324349e+78'); + T('-29943384747492648907943443.256412350894815929125401', '901747579048273816602550102529926854.35549646674102528482365191696613584123624344078663288749130490435297134720727576379819588420174171101450551687', '-9.0174757907821720135004275143787029761190881763584121394905291696613584123624344078663288749130490435297134720727576379819588420174171101450551687e+35'); + T('952557.246599587', '-797618074571855160635860103922751796538514948531.1378948', '7.97618074571855160635860103922751796538515901088384494387e+47'); + T('0.0000142901236857676679196257053214336506759362362251650293753952658734900913009470163591148854555849408371350202869477370839162018128614', '7274936081690054967838223208959684283904860805239531936252446172884944195802432384674846535126802169513987351992902768514276949331803322.9', '-7.2749360816900549678382232089596842839048608052395319362524461728849441958024323846748465351268021695139873519929027685142769493318033228999857098763142323320803742946785663493240637637748349706246047341265099086990529836408851145444150591628649797130522629160837981871386e+135'); + T('0.000900929560788911182381071562865432668409466182204594172033162144812128331193077475077423880166489', '-21408597957321978981807151751183219484279556440', '2.1408597957321978981807151751183219484279556440000900929560788911182381071562865432668409466182204594172033162144812128331193077475077423880166489e+46'); + T('-0.000000000000722138907853996119863088603030135349132652185245300184344322987517460715495745561630491364910862090541897814776826750915053339581143330860038', '209219551544.876995097117350588163000906011435189490577683711751207988391411412107868148561383392176930291264602055541628014525', '-209219551544.876995097118072727070854902131298278093607819060883860173636711596452191136078844107672675852895093420452490105066897814776826750915053339581143330860038'); + T('-0.000000000030345983499647050827143736470118525842662060717', '-140869900251790823527224455558474696.4221968423139', '1.40869900251790823527224455558474696422196842283554016500352949172856263529881474157337939283e+35'); + T('1388628543041917754379950101913898878882776054395652240051594608900168911', '-634307381507440042083604924255544396160446890170874345571896298473856984277777.4362135602582999033', '6.343087701359830840013593042056463100593257729469287412241363500684658844466884362135602582999033e+77'); + T('-99178063079827.224433662117625116489799642020572811986957525604609123159620902928779438653713181794557115326708644398427245972390297968858510824615', '0.00000504045524028117298744681753139617460039787354788645269348683810171985366129261406243335125957027159417139707333860235220380988', '-99178063079827.224438702572865397662787088838104208161557923478157009612314389766881158507374474408619548677968214670021417369463636571210714634495'); + T('-7964344017627.65729896967420320480697541366008605972016325458796553432374728674811327', '363448465190438134042900077564563226373185360490340453089461130955156779944343856777497645145316462888016452339862253.6350461018654269710898806', '-3.6344846519043813404290007756456322637318536049034045308946113095515677994434385677749764514531646288802441668387988129234507153963017589685601366008605972016325458796553432374728674811327e+116'); + T('22398969506188688342902196074268860817610249888096.96109576852487881868553737058841014408233230362878332132', '150517970635382784547231206380342822229.6234502535074912839215712571451888428718057053541076659669932226957916203900023162576692335713154540338973281941', '2.23989695060381703722668132897216296112299070658673376455150173875347639661134432213012105265982746756553530067773042083796099976837423307664286845459661026718059e+49'); + T('319606363926195232923049.458147549841648', '9555894221042120529332254896056451521165707003469529318473253597473821865716922096418529662756642900117543029527432853335.21880839479040', '-9.555894221042120529332254896056451521165707003469529318473253597473821865716922096418529662756642580511179103332199930285760660844948752e+120'); + T('-1.7470999677375', '-0.000000009390885937723498768042482633173355191224894879999587923088', '-1.747099958346614062276501231957517366826644808775105120000412076912'); + T('0.000031694970', '0.0003489109755744784300779153529542987938823096920725044639439934321377263762937670754333912101552258897473271605646851768747294780640640656588128251', '-0.0003172160055744784300779153529542987938823096920725044639439934321377263762937670754333912101552258897473271605646851768747294780640640656588128251'); + T('15171023450028723096297246476058654442156062896548968046928610610466495463708888690638445384052.5655402936580877003227652909723023235', '300381994693137917085900.481742', '1.51710234500287230962972464760586544421560628965489680469286106104664951633268939975005282981520837982936580877003227652909723023235e+94'); + T('-2510422771394805479647755240376039069.235025776988445880809314981927377977492349', '-4325650526595464202944513201707597153545181637871972811769276403384719489760146217058876642443138050881786664883495941202481550', '4.325650526595464202944513201707597153545181637871972811769276403384719489760146217058876639932715279486981185235740700826442480764974223011554119190685018072622022507651e+126'); + T('11989030014394748093925142998.905998360', '4503.1829930104967074062224350092529380543376637410353675591178914025067457206266908222070994034406954750129621950217244', '1.19890300143947480939251384957230053495032925937775649907470619456623362589646324408821085974932542793733091777929005965593045249870378049782756e+28'); + T('-19622700098117555355413025589212248976721079203363291412', '0.0000000000000000047154963464125735069117227717041172013254203483060822909726449561031204371411673028528388174607696692799950770173459572692814680509896623815282932', '-1.96227000981175553554130255892122489767210792033632914120000000000000000047154963464125735069117227717041172013254203483060822909726449561031204371411673028528388174607696692799950770173459572692814680509896623815282932e+55'); + T('971668743073894893699159113569468037426157854834.4859245308812504877580159133281293', '2155437400819398246908875466354226177837114235441458903251149825.33', '-2.1554374008193972752401323924593324786780006659734214770932949908440754691187495122419840866718707e+63'); + T('-75219128342703758653804581528133672565697676079415639891282318101552836007137960680191708674953779692.830850412286175003379303061502973114', '8890697637237157877394293', '-7.5219128342703758653804581528133672565697676079415639891282318101552836007146851377828945832831173985830850412286175003379303061502973114e+100'); + T('-2207826365359691933623472386278119104.10928610148472698325737986521030447640095006599795584977677429732704747959908983', '-0.0000000000000000020914676583255446799691346083866342797576131478040257513927024455', '-2.2078263653596919336234723862781191041092861014847269811659122068847597964318154576113215700191611495230217282063873845e+36'); + T('0.00000000000000003529871868734909395544492984890736625012421342', '-102670940276960616548987079748287921392363616947', '1.0267094027696061654898707974828792139236361694700000000000000003529871868734909395544492984890736625012421342e+47'); + T('-16411029.5930820', '1443249803759620996.044533632703181774392190634172289219280976531099613177406267663822437005138144965669407971461692413376915', '-1443249803776032025.637615632703181774392190634172289219280976531099613177406267663822437005138144965669407971461692413376915'); + T('4764961911712179295885207525501495839960553554868719797653093551996007318270912309189493238056884734776455.4857499673', '40.70', '4.7649619117121792958852075255014958399605535548687197976530935519960073182709123091894932380568847347764147857499673e+105'); + T('5188138747138380958829180.51675828531601306918974036835433546892123023643482179063194941268993890524469204530549406272435329728', '-218356026557832392846658731388880742380232559055047578182115570398', '2.1835602655783239284665873138888074238023774719379471656307439957851675828531601306918974036835433546892123023643482179063194941268993890524469204530549406272435329728e+65'); + T('-284221651007245305082697851875743201255770321818102228785943924728887176146409104121604051647768402471354721655179789550685066', '129802078488939350592312997875682679945769088382.2879783911513234655169373537741125669105835698742', '-2.842216510072453050826978518757432012557703218181022287859439247288871761464092339236825405871189947843525973378597353197734482879783911513234655169373537741125669105835698742e+125'); + T('124593177725250773807727158694606.48780660352148825658767811933255518150599696025419899514439334', '-6627581651662715635950762070180.79290709812889445314806559015208127150071', '1.3122075937691348944367792076478728071370165038270973574370948463645300670696025419899514439334e+32'); + T('31366660201652105746754295566374870763019559240421554119188881694316784695785923310969085305946601572113197265575586214263032', '-0.0000185119', '3.13666602016521057467542955663748707630195592404215541191888816943167846957859233109690853059466015721131972655755862142630320000185119e+124'); + T('-0.00000000123441941', '20577.06632', '-20577.06632000123441941'); + T('-0.000000000000000000030367929295105668550777381180120786905515151003716045995461753738312176999386', '-8296319183891479588134987898667542872737578839488792548834441415271860494822651335094309535757878796690.933873784093259915387382991882725', '8.296319183891479588134987898667542872737578839488792548834441415271860494822651335094309535757878796690933873784093259915357015062587619331449222618819879213094484848996283954004538246261687823000614e+102'); + T('-40308545430969720235947527422528929192769782793205800044070633029892426929802242614838.13803009279797050440596035398833519975310207504', '1959239464986228954812427023.535609294269733799545341029686339869114158840301903524765921157569249146361346526131', '-4.0308545430969720235947527422528929192769782793205800044072592269357413158757055041861673639387067704303951301383674675068867260915341903524765921157569249146361346526131e+85'); + T('672932217082947936267931802569635295900508909649104706736777590283845640515821796262381421.68141583026180417434416456', '95.0', '6.7293221708294793626793180256963529590050890964910470673677759028384564051582179626238132668141583026180417434416456e+89'); + T('-0.000000000000000002099033004183951058449767693649425035305130331498778862127487553169994535996', '-2133980231896312773907666627097548168415.7102448765553114470129805463990038', '2.133980231896312773907666627097548168415710244876555311444913947542215052741550232306350574964694869668501221137872512446830005464004e+39'); + T('580445381354905284048807368831006691784.546059063403641312301109310676306914676494597505919617349947441960647278533345556960169308273917366276', '3.604904939285817554324885708126246946469619276624534189637434215912939543315825766859553647518276673500996166212799836185950984610359767998387151515', '5.80445381354905284048807368831006691780941154124117823757976223602550059968206875320881385427712513226047707735217519790100615660755640692775003833787200163814049015389640232001612848485e+38'); + T('-712252720953571012672166069903348092161944796663143300420882328496228974.04618394348904074586863813372820528', '-0.00000000000000002092030775039740453919504630522275260893114360423604255725599892060864590', '-7.122527209535710126721660699033480921619447966631433004208823284962289740461839434890407249483303833308007408049536947772473910688563957639574427440010793913541e+71'); + T('-0.0002570816455207099536036261314936090157674967926099800795', '-0.0000000000000000130674933467131551680491886017016042522946101681008', '-0.0002570816455206968861102794183384409665788950910057277848898318992'); + T('348881507908033302985005.68757522', '1549290074464248686919664413535348476523309010487683201418540220237090492636459013101704289528591313898108.981495311', '-1.549290074464248686919664413535348476523309010487683201418540220237090492636459012752822781620558010913103293920091e+105'); + T('8637413948644495520046181627871244127949368908598113230287818578.76219', '172462329166.2925867381763494812410830828530111105472625398762231331365955149682132409286466618708916', '8.6374139486444955200461816278712441279493689085981130578254894124696032618236505187589169171469888894527374601237768668634044850317867590713533381291084e+63'); + T('-28059829346271297089846697823619339730697463927882137285411047187621.3365094609441835662258292', '1732861001433499169623889562015115612698521681606694360771023126224313336415239339086113519268958723711', '-1.7328610014334991696238895620151156407583510278779914506177209498436530671127032669682508046800059113323365094609441835662258292e+102'); + T('0.000000000000000000279920475007074858021168221493722708848631480438782694735575852706998', '-36266411773095115580689400782807334211196172564607435961552009343283932464.9837695007775892543051564275268186', '3.6266411773095115580689400782807334211196172564607435961552009343283932464983769500777589254585076902533893458021168221493722708848631480438782694735575852706998e+73'); + T('2118046918816158.19627388128567915392498196852916971435774168271017092737124387676986128523446', '700283033083138972861857057593773868572323954863349193882758861910219422329615290916944812790080302082455986032622356459796411429994571952107', '-7.0028303308313897286185705759377386857232395486334919388275886191021942232961529091694481279008030208245598603262235645979640931194765313594880372611871432084607501803147083028564225831728982907262875612323013871476554e+140'); + T('339538851650247942.278697506630118637945095728103', '-18620906912720892893391275141765114456962630526288263883096512988776949390578497946714236563676541486658', '1.8620906912720892893391275141765114456962630526288263883096512988776949390578497946714576102528191734600278697506630118637945095728103e+103'); + T('0.0000000006904532369558150510262488281807825581586827251', '305468661281838707389527955487753.82749543444315394761867888706263', '-3.054686612818387073895279554877538274954337527007106628638360363811718192174418413172749e+32'); + T('-908820873408880798933264474895850726464711747913205439443550022010444648198141527361971583612034255103784.08541958237725093777442080304887210', '-137777781478673113932594166168320795125870691409923883994778273765714588733515698043941904144625098636345868758', '1.377768726577997050517952329038458992751442266981759707893388302156925782888674999024145421730414866020907649739145804176227490622255791969511279e+110'); + T('374355450809837247.5174995', '-10.2', '374355450809837257.7174995'); + T('-7.24216105787', '41335238394851454012288137625393602319.3264096053286738641962006640465495687544256', '-4.13352383948514540122881376253936023265685706631986738641962006640465495687544256e+37'); + T('66326977.9050567217', '-0.0000000000000000000209', '66326977.9050567217000000000209'); + T('0.0000000000000000000265737965021', '-81974150526768898581207134037679.2068387354409294052459', '8.19741505267688985812071340376792068387354409294052724737965021e+31'); + T('6007018972384004427335278306100547732730414161628343888635552404650.58282054220706207456023620752991471499255', '-146656810017560772593186152454856504300187695304259360339772717751599966472', '1.4665681602457974497719057979013481040073542803467352196811660638715237112258282054220706207456023620752991471499255e+74'); + T('-34292722587178232282501917441324831663740801129878989387480983625715484621782.0919', '-55883431183450605660044015172082536043911915919486680333854135673827331840347136897324', '5.58834311491578830728657828895806186025870842557458792039751462863463482146316522755419081e+85'); + T('-3985805244044837084411977422757376378060.290541664260691735184074947', '-870047741853.19289603162319510263029755253365086206461589052739480724332358851742990324', '-3.98580524404483708441197742188732863620709764563263749663255377739446634913793538410947260519275667641148257009676e+39'); + T('-73929816747605180484918003597961235850171978225512788042904593650909580403443769374087641707696975944827828354020150979988740026532938', '385361544903059555711806156019448314064782', '-7.392981674760518048491800359796123585017197822551278804290459365090958040344376937408764170808233748973088790973195713600818834059772e+133'); + T('-12.31698991', '-751188829485947331552.960312839846836094417204848662429224188702772253892719659281557251306277105093575994993846127669453550207016018564227856026', '751188829485947331540.643322929846836094417204848662429224188702772253892719659281557251306277105093575994993846127669453550207016018564227856026'); + T('-3628724754364816284699558478736662262101049.8686961811050797854712833273940271907427771082320587042061269470622', '-36853113191655566744.0036748111113230617191140153379097532999540758924150850150462749161630182517728624293985456773', '-3.6287247543648162846995216256234706065343058650213699937567237521693120561174374428230323396436191910806721460369817482271375706014543227e+42'); + T('-0.000000000000000215', '19894059835635097553.40565542831442512355858226792638029459899976138082', '-19894059835635097553.40565542831442533855858226792638029459899976138082'); + T('-30106887927.73937362847', '-102.030', '-30106887825.70937362847'); + T('-1218248850456.97353951682445947974274913192207119277095702137346638965795765469780537397426794516539138118094328539', '0.00000000007851693763154494785066647692511713030801839675154976889840604918825877872638771285849514900835419977768857575607733', '-1218248850456.97353951690297641737429407977273766969607415168148478640950742359621142316252672389177909403943843439835419977768857575607733'); + T('178340800930010683157306838387114508530123729280296661983521452605952899303508793164498075.18', '124104.19653839526727306978867606725200681644881825667', '1.7834080093001068315730683838711450853012372928029666198352145260595289930350879316437397098346160473272693021132393274799318355118174333e+89'); + T('-124972459343817845451907386538316.88444543539384522567165512709192478339963512253604376341607496802805641627423480880098070424177758544304960846746', '-12151860990400073737429990488961466727732472556130861379738694459231286354909360090762808804561520156.93885466', '1.215186099040007373742999048896146672773247255613086137973869445923116138245001627291735689717498184005440922460615477432834487290807521660036487746395623658392503197194358372576519119901929575822241455695039153254e+100'); + T('242305619480044.117669571', '0.000000000004954617457909921566083069296578532961927959570975042077881955980821090098114246814822601513881827860466408504361049103', '242305619480044.117669570995045382542090078433916930703421467038072040429024957922118044019178909901885753185177398486118172139533591495638950897'); + T('-149393121723.8', '0.000031123464017479325434907565167758533432136444707393019391355781893113282833929057474217941299740843262816249', '-149393121723.800031123464017479325434907565167758533432136444707393019391355781893113282833929057474217941299740843262816249'); + T('304991568028921434085139022483844876733665.542738390605319884', '0.00000000000000138699174160296898158944175519528763014061938962295885233194249035736092848113286092759686854653852969146', '3.0499156802892143408513902248384487673366554273839060531849700825839703101841055824480471236985938061037704114766805750964263907151886713907240313145346147030854e+41'); + T('0.000000000000439684683303579860356147180119042386845099669639708374008856922269915124921301748', '-155818221549284043593101823943330354192243873661833929849877145194258036053339831371360183.4319505793302857955106411234496205383496363144', '1.55818221549284043593101823943330354192243873661833929849877145194258036053339831371360183431950579330725480193944703309976685529755356786845099669639708374008856922269915124921301748e+89'); + T('-13.155103645301', '-0.000000000000000007137064', '-13.155103645300999992862936'); + T('-10356428764148893775275.9673266649810109703809707584633512809703095548147864827191283851408290', '116469121259.580', '-1.0356428764265362896535547326664981010970380970758463351280970309554814786482719128385140829e+22'); + T('-3963571363397152992273906802160286886086920884936747622634365849406904936980386.45359892835130720540151945758060955916317802717566903116864480481972522', '-0.000070996697013405007160606340379272860030484625815078099084045955348142553', '-3.963571363397152992273906802160286886086920884936747622634365849406904936980386453527931654293800394358851240230286303147542549853953069560758864377077447e+78'); + T('-2002.01719868890096247452400760373', '1.8', '-2003.81719868890096247452400760373'); + T('126616415747207305303537223662274177712840.6700589197974', '12097.7020794393208690215', '1.266164157472073053035372236622741777007429679794804765309785e+41'); + T('0.00000000000000221572441427972677866185400843138814827125078372356950505019583272816338112', '86011656827173.81', '-86011656827173.80999999999999778427558572027322133814599156861185172874921627643049494980416727183661888'); + T('45543191029347952618469386523689325602984824853133335610432465910372937520283489097581912486080942672641037', '-15716512380188479.932083641807869052147091043255091861011843759620263027387952842807874862983089866', '4.5543191029347952618469386523689325602984824853133335610432465910372937520283489097581912501797455052829516932083641807869052147091043255091861011843759620263027387952842807874862983089866e+106'); + T('0.0000000000000000035315502420788508529985856314419012272238207473944358204104290394926106351779', '-5624156772170117.1657476003837553942295755292258482770658649647601920538662932208435924708861640276207503440293532949', '5624156772170117.1657476003837553977611257713046991300644505962020932810901139682380282912965930671133609792072532949'); + T('-1374562994880051964271.27898098906188407287205169338', '0.00000000000000031865339921207143913309344392566436421', '-1.37456299488005196427127898098906188439152545090545143913309344392566436421e+21'); + T('13691023568703828954478002891170478555913926785952721.6937350094794685112055123701357309217624134750110846096769', '0.00000000202148677107507460297752891791329356574084754670408775226519607249962621030745245954851134740234779971411203608026098975', '1.369102356870382895447800289117047855591392678595272169373500745798174013043776715820200384911990927023706297281224773480392750037378969254754045148865259765220028588796391973901025e+52'); + T('-125671888607778034275154792009202764081572882956209693373934.74566972561590141388688468937614644443796008254', '107551721884298521156095810104481388698517320600299802047', '-1.2577944032966233279631088781930724547027140027680999317598174566972561590141388688468937614644443796008254e+59'); + T('-0.00000000003969378933740708691300122226819421581066663873920896781273585494818171435695407330811294202', '107041184511163885.04271388462119128657386073279129422270006', '-107041184511163885.04271388466088507591126781970429544496825421581066663873920896781273585494818171435695407330811294202'); + T('-2951965402440738579279759050624852782460407526269383738169962367847588117867127018487856370629062877269116277468600261229135554565114176766056702', '0.000000000006287363483881253518833462795616481179', '-2.951965402440738579279759050624852782460407526269383738169962367847588117867127018487856370629062877269116277468600261229135554565114176766056702000000000006287363483881253518833462795616481179e+144'); + T('-0.00000000000000019636276967708885671764139154128434128626403182943490041425988637275339748810419236540254220706284324560538931703795739814', '0.00000000004481901971403795542991680781566338421560653872041361060', '-4.481921607680763251877352545705492549994782498444544003490041425988637275339748810419236540254220706284324560538931703795739814e-11'); + T('-354719950361379273301359534196300717853.0186108408149835703024', '294514396703359984682344528266458432292891368613559732314480483030279392081064357195630432442505889982.13440538511210586133603914935112321050428', '-2.9451439670335998468234452826645843229289136861355973231448048338499934244244363049698996663880660783515301622592708943163843914935112321050428e+101'); + T('-33927540600930859899252442105999310587077967493761773461091899630388700204633168728544588442837280913459638158456686740859615.1414', '0.000000001894808120791736519518300794339416227', '-3.3927540600930859899252442105999310587077967493761773461091899630388700204633168728544588442837280913459638158456686740859615141400001894808120791736519518300794339416227e+124'); + T('-104666170827444788671824735700977493877060949970738269558671964530958.55363526374', '-2386824408518725780122101607313193461624217723024418681790730644945410612236759422226411833632517989926779141564329843840707189394654888', '2.38682440851872578012210160731319346162421772302441868179073064494530594606593197743774000889681701243290208061435910557114851743012392944636473626e+135'); + T('179421.5289096829953298', '34342876175696462977913441783684065522884009795140039066541213786441.821375732575578', '-3.43428761756964629779134417836840655228840097951400390665412136070202924660495802482e+67'); + T('-41426466350219117773090054766644394486314258063933223051089090219912755660263417233021.9855607046947587791892004394939235', '-170862420310795633399339976259565748191370.489727472434638', '-4.14264663502191177730900547666443944863142578930708027402934568205727794006976690416514958332322601207791892004394939235e+85'); + T('4.356', '-14.51838553571377330631321826342372952104419616215052089825233325146382745555567077756959361343373549160815949781902924303746486223707861', '18.87438553571377330631321826342372952104419616215052089825233325146382745555567077756959361343373549160815949781902924303746486223707861'); + T('-0.00000000007415111125701712334659040023188433045533322445707355817794327911316470827191624585971', '-89496941499485282617443687.11', '8.949694149948528261744368710999999992584888874298287665340959976811566954466677554292644182205672088683529172808375414029e+25'); + T('395406829706311296589271889719583140635568635127665', '264737687.61137854553903553659981221568900541026391672130446196896447248', '3.9540682970631129658927188971958314063556837038997738862145446096446340018778431099458973608327869553803103552752e+50'); + T('-91265516152809240955984710790601792219643671438700946275373285010553537355097749911888722836472150250555502817.7083486', '0.00000000005908292684015754961053591782663005124668197067163418657692319967418105412597307502992726349390479329489028174099287376424396743766', '-9.126551615280924095598471079060179221964367143870094627537328501055353735509774991188872283647215025055550281770834860005908292684015754961053591782663005124668197067163418657692319967418105412597307502992726349390479329489028174099287376424396743766e+109'); + T('1393668664736340396506094893169761479672219453971818718110678752454.93557171027859666584700501067765267442071267740729381267372577', '-7.26506721396234349631410058152182568345755302761014440038909778541514253256903438374', '1.39366866473634039650609489316976147967221945397181871811067875246220063892424094016216110559219947835787826570501743821306282355541514253256903438374e+66'); + T('154487157373823493137066274.85878615066004288744973873503106160140296864897001622023987434759035195222460780528406318750', '13509881005355988338518293330867947988093581878486275639404094210458245268756845889504384099465156294654099130595946018501027161729896016', '-1.35098810053559883385182933308679479880935818784862756394040942104582452687568458895043840994651562946540991304414588611272036685928297411412138493399571125502612649689383985970313510299837797601256524096480477753921947159368125e+136'); + T('-0.0924532442681963280236579804820783805412208183173216', '437714061304750576304069895787070747586930126317209775578680048.64905430778651377650282955909271100702270378704840241396672781384650762', '-4.3771406130475057630406989578707074758693012631720977557868004874150755205471010452648753957478938756392460536572401396672781384650762e+62'); + T('-2903867214462079147781503.43110967041878698272228130248023004255630098538325966386117388084280644624246779280709038813631', '-0.0000000000029001819398679', '-2.90386721446207914778150343110967041588680078241340248023004255630098538325966386117388084280644624246779280709038813631e+24'); + T('-68478988612026757357956003683332744549804329487951781618243422133228484235053139292.63859031920959545863', '-0.0000000000000206209573312295241705394462020368371700010471324470113265516966420178900', '-6.847898861202675735795600368333274454980432948795178161824342213322848423505313929263859031920957483767266877047582946055379796316282999895286755298867344830335798211e+82'); + T('2383784.15779081', '-0.000000000001342350812195198392532374798854977110090674918085941866638293587449553312', '2383784.157790810001342350812195198392532374798854977110090674918085941866638293587449553312'); + T('-930945859272044558989235909016.68900733503225770344925642072767208409841301004231082154342176269488246587383976591788', '-5242498654293148790270310863665439318251858135048956.2717470020461119420226047241249204047819006900600244190387', '5.24249865429314879026937991780616727369286889913993958273966701385423857334830339724832068348768001771359749527823730511753412616023408212e+51'); + T('313632278451489633607271056572839346933772283691577954375047188993463512.092647131238398999623', '-959538307079783685461423074240027842581631060789324748920778178110453051', '1.273170585531273319068694130812867189515403344480902703295825367103916563092647131238398999623e+72'); + T('-1288931819347065003984018264113291238692657741.766349736546125023857675298415334704473602112840757695193462502084969449569542319748464264978', '539036429230664384725011772246635819519599525128.174476503860', '-5.40325361050011449728995790510749110758292182869940826240406125023857675298415334704473602112840757695193462502084969449569542319748464264978e+47'); + T('-778185145541293282976352747700447673380643846202878141.94156682254735142708475873940521', '-1743702845400679249.985436319726446594414323812859185183027678188541351470985', '-7.78185145541293282976352747700447671636941000802198891956130502820904832670434926546024816972321811458648529015e+53'); + T('-34198990286492455559791232025411563407581563098497220768937957961783704810043975778308343224151175569504114685192665.30536869253744218089551619675327', '-24305945127441184832105158951553331385997091194202426787946078772275521880625289746661831499392830801691448841424.759', '-3.417468434136501437495912686646001007619556600730301834215001188301142928816335048856168139265178273870242323635124054636869253744218089551619675327e+115'); + T('0.0000000000000018763276930197981120089551282335569865999686905948962583363764311923118368944319393384148082395872202253088856212394945596283231828525914885594', '0.35819808711067029153542041472676295936698327566168897', '-0.3581980871106684152077273949286509504118550421047023700313094051037416636235688076881631055680606615851917604127797746911143787605054403716768171474085114406'); + T('1418031575151863438477712278537563020829712238913927232796816808973295891102.55296374071457002140814551720742132636073542069579726675621573941382622600', '-3488182224093174883184', '1.418031575151863438477712278537563020829712238913927236284999033066470774286552963740714570021408145517207421326360735420695797266756215739413826226e+75'); + T('-0.000000000000000205390684486171825460536006353563548135276787747301988476146287694114350379000036906338511378609', '-0.000405', '0.000404999999999794609315513828174539463993646436451864723212252698011523853712305885649620999963093661488621391'); + T('-3202016.0694803128322148239145232929204107555210732105469003170128506695838996492', '0.0000000000014', '-3202016.0694803128336148239145232929204107555210732105469003170128506695838996492'); + T('-628423720237204906120199547323758489801025.51874281555091178803625021347340455594130', '-81477111818306314666306661562', '-6.284237202371234290083812410090921831394635187428155509117880362502134734045559413e+41'); + T('-0.000000000000000000047888974392267564390331997035456851568895821244693231371197999015834461798775529541', '947453380002', '-947453380002.000000000000000000047888974392267564390331997035456851568895821244693231371197999015834461798775529541'); + T('773747345', '-1335821513605028779157', '1.335821513605802526502e+21'); + T('-99273.596604127', '-1154952503563378596462693693250.5187439232425471346', '1.1549525035633785964626935939769221397962425471346e+30'); + T('1395668702641787254510091198553284', '1578568229336237285301359008898017.5404224057562993167719876179720474361379874854903455492277573607378863860373466275770813782848272509058803097', '-1.828995266944500307912678103447335404224057562993167719876179720474361379874854903455492277573607378863860373466275770813782848272509058803097e+32'); + T('5386712177299027464798225011978949139476122', '469103363732559983685.648370', '5.38671217729902746479775590861521657949243635163e+42'); + T('0', '419192442362435629465014450272844841376382155269323588979357043630935966384025897855088784350716859.22651317', '-4.1919244236243562946501445027284484137638215526932358897935704363093596638402589785508878435071685922651317e+98'); + T('15748527253971616615055630358104959795592326115279195892785474069003661098024748903045029419699640409113503023237945492.3252432550999839712', '0', '1.57485272539716166150556303581049597955923261152791958927854740690036610980247489030450294196996404091135030232379454923252432550999839712e+118'); + T('0.000000002333438210472843133760719971852', '919118976014042057478336651114029860028401924997726.37482700254255653557019028924295996133470278160287964', '-9.1911897601404205747833665111402986002840192499772637482700020911832509734715548223998948270278160287964e+50'); + T('79', '108926743127104368181585148150.21181757229942036662043384365317289250377588166675035927', '-1.0892674312710436818158514807121181757229942036662043384365317289250377588166675035927e+29'); + T('66999786317143790144990981463093917201197515876881754571980957877868116674749519019018943370951009463.847271877093748797400', '-476103985245129257652983725336203640462984911959107831794737195876658142.344', '6.69997863171437901449909814635700211864426451345347382973171615183311015867086268508136805668276676061912718770937487974e+100'); + T('-1405033234114', '-783177164833364354044558842295870625108912898123626390937631256466.542569106951119275629030077420445312292985', '7.83177164833364354044558842295870625108912898123626389532598022352542569106951119275629030077420445312292985e+65'); + T('-426205767054867887.03542915655127780054256765661941922641508457335701462240270994743442393487518141488173295859', '-8298.4660255243403790577839381771224207771986', '-426205767054859588.56940363221089874275862947949699844921648457335701462240270994743442393487518141488173295859'); + T('-464425272555675063916245905964590494968787633124183600713545419950133228198836596648857626820065', '-2237730394988417178529397.358188196946174766853203174768301504251', '-4.64425272555675063916245905964590494968787633124183600713545419950133225961106201660440448290667641811803053825233146796825231698495749e+95'); + T('-0.0000062461634807333371859314155489802574', '-8181353643032489942675123036461953565314428349623.6339704961199', '8.1813536430324899426751230364619535653144283496236339642499564192666628140685844510197426e+48'); + T('269031915782887321035697046572774089182793600032731720080010568383408337.749033224541645681839966449764521621943733799440', '0.404132605183270165863226749047082654939280193886231529898349131828226447630704284', '2.69031915782887321035697046572774089182793600032731720080010568383408337344900619358375515976739700717438967004453605553768470101650868171773552369295716e+71'); + T('988459584582389858260070961884.0298077770057303924476954237850807378083146026121046406109614', '548657365885761906.16130546365', '9.884595845818412008941851999778685023133557303924476954237850807378083146026121046406109614e+29'); + T('-4579867386321723251708179657431459719237903598.4249552191197039811767', '1700354336203076885308678693.5509603461600890657301710589520939346267614885400052674765795335958411640877837509557489194202307107946', '-4.5798673863217232534085339936345366045465822919759155652797930469068710589520939346267614885400052674765795335958411640877837509557489194202307107946e+45'); + T('-39518020854854496682.408531833821299513675968633019378670635010897754414243511999567768675730681912611391338379426802378786621', '-69488349149463743032009.4871074472497372391041043969145996', '6.9448831128608888535327078575613428437725428135763895220929364989102245585756488000432231324269318087388608661620573197621213379e+22'); + T('-280346355147300855628404.763216', '2.0516001318909', '-2.803463551473008556284068148161318909e+23'); + T('0.000000000000000099623328', '0.000000000015534855199084239745828402971988998230014287963399588591303464021723633191191744223224494006485956657062304557069407148666768780677134976225521', '-1.5534755575756239745828402971988998230014287963399588591303464021723633191191744223224494006485956657062304557069407148666768780677134976225521e-11'); + T('-334431356812439.13448916221758530842995', '1667521702832986056260091238367720285408933716412273493571950628545108649803910938622937226194497229999330474159307225451757494492442', '-1.66752170283298605626009123836772028540893371641227349357195062854510864980391093862293722619449722999933047415930722578618885130488113448916221758530842995e+132'); + T('-25720.3501395114447395112201', '-0.2953998138840', '-25720.0547396975607395112201'); + T('116226570322143124260726476527797976180664474951141971508306422788718375438939254351135212826259379114908655', '-160024900712467287748021197823552179871601569963013469207712918690534434663724462868758130292404825253945347600017444751054592974832', '1.60024900712467287748021314050122502014725830689489997005689099355009385805695971175180919010780264193199698735230271010433707883487e+131'); + T('2324224807171911990671839000597607829497219555298.55014120924636442879633120922286793218', '-1270380349602863576806275283032958213074398270334091077777630627191054790255851313419272408473587843637275886291610.642667419393', '1.27038034960286357680627528303295821307439827033409107777763062719337901506302322540994424747418545146677310584690919280862863936442879633120922286793218e+114'); + T('-10622788500960972991004261.8032858098042872288506798796510154272226938496951067890622789073880670340432116295332571771677661755224600880395', '17077138128499655920.4093059483819429666765577064075794109485305714940654287018169021314700994059258023402097770797726365433681288588963390967078', '-1.06228055780991014906601822125917581862301955272375860585948381712244211891722177640958095195371334491374318734669542475388120658282168983963390967078e+25'); + T('-6336513.23', '-5249172002022980268812313222482147319.6010671183072060237015049011583118322', '5.2491720020229802688123132224758108063710671183072060237015049011583118322e+36'); + T('267635446505753748225432544372279094104011987689607870636.88308855576649357656458127950511', '0.000000007151544482605747363599261338379766369120662716754539', '2.67635446505753748225432544372279094104011987689607870636883088548614949093958833915905848661620233630879337283245461e+56'); + T('0.0000000000000000251680172', '-43996141.9473547548529', '43996141.9473547548529000251680172'); + T('3008681171818278308404.634698376660136232243907341147927120093956', '-72008045405579488.929013843', '3.008753179863683887893563712219660136232243907341147927120093956e+21'); + T('-1917507321972333152063718.3', '-458382.6165374681213015', '-1.9175073219723331516053356834625318786985e+24'); + T('-0.00000000162489680974735997523039312016450827505959711537297137706530', '-731118718225310016148587418433198514412521393862386540689205275178569598255098419588588653874560984.082237617343418975656930427', '7.311187182253100161485874184331985144125213938623865406892052751785695982550984195885886538745609840822376157185221659095704517696068798354917249404028846270286229347e+98'); + T('531802532279637137552808013110951053732.907624514862128773520547166755212879477296231276825579342', '-173067154812932973797393419951029156470968384903254747150744.1037243073944890748534755651124752', '1.73067154812932973797925222483308793608521192916365698204477011348822256617848374022731867688079477296231276825579342e+59'); + T('1216376563.861151456186911150794802999960874196553469479145822420208291551214685836322120517079008', '85984.5', '1216290579.361151456186911150794802999960874196553469479145822420208291551214685836322120517079008'); + T('0.000000000000000000054924120831599544196056464059913345528362581686003585823080198063175104748720429835436816', '-33.965305825679', '33.965305825679000000054924120831599544196056464059913345528362581686003585823080198063175104748720429835436816'); + T('-0.0000000000000000272691295425523253281545245364330746310034056347651726374661392748936831102659438676749529105824808034929101186122342434701063245841476', '-781187391210758142167459761699751749533058942483806705247714720005729302232618042462.31429718942883993867507', '7.811873912107581421674597616997517495330589424838067052477147200057293022326180424623142971894288399114059404574476746718454754635669253689965943652348273625338607251063168897340561323250470894175191965070898813877657565298936754158524e+83'); + T('127262997433251959079279503780471.05197845683869545951325487141398044178736403887617606907597695630472759165663283084977628891449702428789338877110708', '77396683518158379744711.66156663437342404789854794363811642267757202778894836789743946370198310026950193022769015766161296030', '1.2726299735585527556112112403575939041182246527141161470692777586401910979201108722770117853749260274449138713090062208613125288406398789338877110708e+32'); + T('42170499815256385540791846972137805290009126085642915432609561244148971544358403270767061193697589382522357089597879438170922900180458360491', '-0.000003885040489695371692757168739195827258540410745579', '4.2170499815256385540791846972137805290009126085642915432609561244148971544358403270767061193697589382522357089597879438170922900180458360491000003885040489695371692757168739195827258540410745579e+139'); + T('-1484024306291646967346493622090638440659128585952793958990883359092640546575462579828476965972418873274552.1834807695558477417523', '-10598014380036531229136810438900071681432863341249945982490785444176829679842459382408061192080712.9619817785969053235790359984721057762058', '-1.4840242956936325873099623929538280017590569045199306177409373766018551023986328999860175835643576811938392214989909589424181732640015278942237942e+105'); + T('-0.0000000000000037', '-3076174224740955436355989748079441650915310480031800204994005115124341562063700871463141434110179138410587089277839517152320944517479716270543461', '3.0761742247409554363559897480794416509153104800318002049940051151243415620637008714631414341101791384105870892778395171523209445174797162705434609999999999999963e+144'); + T('-0.000000075027040201482330625619859591861141930627870540731155446710', '0.0139177672366169698378876807351533299376331910835826839154061965617972722046119104334991574172', '-0.0139178422636571713202183063550129217987751217114532246465616432717972722046119104334991574172'); + T('8875143592690748989920787895291661147029298230059201908543304359430935440199.867134812405756511257745234125626824', '-247943204197117001912763303824992424614854547911.72151922913414922441109501', '8.875143592690748989920787895539604351226415231971965212368296784045789988111588654041539905735668840244125626824e+75'); + T('31916591334815493867348.2006986155618932404016660295722', '4606925311680888622.612954414237689607109445591833340796649297129233762211446696674', '3.1911984409503812978725587744201324203633292220437738859203350702870766237788553303326e+22'); + T('381592731768551523450237299269065558626439762823266272728608770256434241300666186155782732703413979594892722766059796378113553693016425636137853', '1074098218589615684162333302525523', '3.8159273176855152345023729926906555862643976282326627272860877025643424130066618615578273270341397959489272276498569815952393800885409233361233e+143'); + T('859384792671165504880.591270312184098707804090920437508527546076998804061888741623409867', '-415064661757507462508064979252020173304919.38161995361360609605709210292378740874075259401137388397242347603728910288128847206', '4.1506466175750746250892436404469133880979997289026579770480386118302336129593628682959281543577271404688590428910288128847206e+41'); + T('-0.0000000378511781638932', '-0.0000000019415746608194397271645430475998139434698262967689419183607208269227560180148712767202698791460535585478881851701240', '-3.5909603503073760272835456952400186056530173703231058081639279173077243981985128723279730120853946441452111814829876e-8'); + T('-127323.654151371587544406942297034389812264638323249811302292394967515069458109985654766167188775393537479581494034', '653407290188829294787949470104324404483492727890', '-6.53407290188829294787949470104324404483492855213654151371587544406942297034389812264638323249811302292394967515069458109985654766167188775393537479581494034e+47'); + T('155323920605544966037456890780901792411.6779803510786020326988033806935198', '159029239238266232.68574849991657262205375600388916', '1.553239206055449660372978615416635261789922318511620294106450473768043598e+38'); + T('13156801663791593515197335348715600238117690700.815038836887843190319660754853410804197810482520222445623353150435061783014391903811607138', '-8270199589564900477356715352108242301640427858623530223929697653745713628878.564288094121549802323184040403763027925657974', '8.270199589564900477356715352121399103304219452138727559278413253983831319579379326931009392992642844795257173832123468456520222445623353150435061783014391903811607138e+75'); + T('0.00000000000000003786195460340598104288682558070063337088309567282201351032563', '-1912699796464583227379572473541475383216013821339026581757100140817849255701729993948439667349733408806253839792.24198692029', '1.91269979646458322737957247354147538321601382133902658175710014081784925570172999394843966734973340880625383979224198692029000003786195460340598104288682558070063337088309567282201351032563e+111'); + T('0.0000678213457017134314852892364803864629433537599025120942836845115758304505087119211392119756099777668193068326923413902250456637918108722842255', '1140640116158968963485566592.5893331949954139196192113429058069640694322621110308576696441720269550777832332421', '-1.1406401161589689634855665925892653736497122061877260536693265776064889083511283455753604875153792473327245301788607880243900222331806931673076586097749543362081891277157745e+27'); + T('-5941423076793531487369004038913872115546949940523795.371014687155306260796761670579766889905', '47861971864566209979133077736766504352908819881729160935697807580950039529832250339875991.2370', '-4.7861971864566209979133077736766504358850242958522692423066811619863911645379200280399786608014687155306260796761670579766889905e+88'); + T('-3651590804629633244384272036497219152794961178826414247756327968228195689150408706412981706033290645060605', '-0.000000000000000000047076028716961617745970472461943359903971686105244537457258691', '-3.651590804629633244384272036497219152794961178826414247756327968228195689150408706412981706033290645060604999999999999999999952923971283038382254029527538056640096028313894755462542741309e+105'); + T('118687168472.901776101483448', '6575654819663787.704095301960878738190', '-6575536132495314.80231920047743073819'); + T('0.000000000000000008221087096832270706747915015998320970007508295513800923805028534762897555917424732521734252235383609982', '-4730231.56580380830953', '4730231.565803808309530008221087096832270706747915015998320970007508295513800923805028534762897555917424732521734252235383609982'); + T('0.21789670842440974974661994228192699055349', '0.01334643986427991665741664557', '0.20455026856012983308920329671192699055349'); + T('-14226117087.28617301017414275549732687575166423932', '-2570477277243155.1204160224690347778553830976260385383374348745734315475200813314035', '2570463051126067.8342430122948920223580562218743742990174348745734315475200813314035'); + T('-46.941057107072660652688121977370', '-1198710434479146302024548885128439972868624935885330601645871874157901.96708543469474', '1.19871043447914630202454888512843997286862493588533060164587187415785502602832762207934731187802263e+69'); + T('-295140171894972088951187786.0843050337025558841174717700928362793074491331276762385630102550855368430612108831357', '-0.0000000000000004883812758401282299689103133449934936', '-2.951401718949720889511877860843050337025553957361959299646063103971357881341826385630102550855368430612108831357e+26'); + T('1.4711261754068130281842564186342696000895948066', '-120648633751429663556459972182655021410865.5086632989898240206360208470238848290763965597192371216857894570350195365591255381749962060', '1.20648633751429663556459972182655021410866979789474396637048820277265658154429165991366319237121685789457035019536559125538174996206e+41'); + T('-144700', '-0.18213538140165154164724446677239877238828512236771523708810552188227956132323566115125955382011533702944784', '-144699.81786461859834845835275553322760122761171487763228476291189447811772043867676433884874044617988466297055216'); + T('7527305921883997190334173981195704877744988728728518609052340094791.8855544226349862816292745519085545', '-0.0000000007048946656101980003207741963970650160207507827240902', '7.5273059218839971903341739811957048777449887287285186090523400947918855544233398809472394725522293286963970650160207507827240902e+66'); + T('-63795532.1247756163974543523664090934199701938480314046575430119409403191645390756181006417970791', '-0.0062137513829573043880447774252661092604135729387774810554', '-63795532.1185618650144970479783643159947040845876178317187655308855403191645390756181006417970791'); + T('9170218742863146.63960565263545342233167920145227196559581870281019754919446058190890025166080356692023953226567583', '94899.938506789077785525289197268929739161960202702966987511034', '9170218742768246.70109886355766789704248193252253280363561599984321003816046058190890025166080356692023953226567583'); + T('3901879734193765914331129847202500304665157801252541780432220949839069127986525493675829826983735746021109803224777662529', '5885103402359590328286381776411514113770718249033564454051018031288461.42208859547727201936136', '3.90187973419376591433112984720250030466515780125253589532881859024874084160474908216171605626548671245665575220674637406757791140452272798063864e+120'); + T('3', '-15200.9143662493055675379993', '15203.9143662493055675379993'); + T('15423485096047599053364024548519496681508881945096830176039851680666630029365886063521259842', '-0.000000000283965132096', '1.5423485096047599053364024548519496681508881945096830176039851680666630029365886063521259842000000000283965132096e+91'); + T('20462143', '63769737', '-43307594'); + T('0.000000000002655335762566545159279103266301165139940149572346903456821981448916315558904', '760001783034845256482634525599227420841592883976982090372844443290413192545720519296', '-7.60001783034845256482634525599227420841592883976982090372844443290413192545720519295999999999997344664237433454840720896733698834860059850427653096543178018551083684441096e+83'); + T('-2859.72', '1143457536770062100322750086623.71845', '-1.14345753677006210032275008948343845e+30'); + T('-0.00000000000000035489705537003133966656620934689', '11987350492635913981351083990815685367027572166189009953407790102342640597311.916155924353548989207704206322071476178972779', '-1.198735049263591398135108399081568536702757216618900995340779010234264059731191615592435354934410475957635341114274518212589e+76'); + T('-672459565845298082592172835281835774315217847427856401542010053256271699439933658929866947464739169479833929233830480664939232420953.2923', '63108751.15749592458552', '-6.7245956584529808259217283528183577431521784742785640154201005325627169943993365892986694746473916947983392923383048066493929552970444979592458552e+131'); + T('-0.000010035206280282747019162655750927410618908635896952580', '230.1907049834484816952377627084616053336290', '-230.19071501865476197798478187111735626103961890863589695258'); + T('7173044628.5777843255026455413348266', '74453983.680083199805556', '7098590644.8977011256970895413348266'); + T('-83919871511965703755476466.256569440941669204141450851398993', '-120420004260233575347420874147255645547454760214523', '1.20420004260233575347420790227384133581751004738056743430559058330795858549148601007e+50'); + T('3630900902246671948646521726957218461983828034217333961862682876897350087684.6822', '142378828011194667522298164078675050366271553.18418507871350239937970327468837520064392740785265', '3.63090090224667194864652172695707608315581683954981166369860420184698381613149801492128649760062029672531162479935607259214735e+75'); + T('3600368521700307314019929721242984506937722877903512324371675383642175079745764808500491934491199396', '-8889151549.0980820465205798627062897257998560429872362749013588868330096', '3.6003685217003073140199297212429845069377228779035123243716753836421750797457648085004919433803509450980820465205798627062897257998560429872362749013588868330096e+99'); + T('2566124149510189054603184804420483142674551293246048640739644229580149479831221856889682947040898.1947', '2.26262852', '2.56612414951018905460318480442048314267455129324604864073964422958014947983122185688968294704089593207148e+96'); + T('-6445706060883314535319320109991761267536435348960454296790760967040816468929', '-0.00000000000000000062830932861674764819252613026097705872828029129848817631757479456721702066162270528458013184133179280907256876980768150732125981012639579785215', '-6.44570606088331453531932010999176126753643534896045429679076096704081646892899999999999999999937169067138325235180747386973902294127171970870151182368242520543278297933837729471541986815866820719092743123019231849267874018987360420214785e+75'); + T('0.00000000000600072079222315465580504023456367837739567604666764878391621677969104485271956013728552504195645646316020084441518304737259573663289004508147', '39.31302175525738768291245783088445596818951069182891044427517151104661708832', '-39.31302175525138696212023467622865092795494701345151476822850386226270087154030895514728043986271447495804354353683979915558481695262740426336710995491853'); + T('-0.00000000000000000294054960556608929', '-0.366150388110291163127790', '0.36615038811029116018724039443391071'); + T('-511163388228633237873316822527313608282340841918478362004266090071119793101871.464037584689475734', '-329989907679436788948852901850804713300444041228309095926110784330762590667953827054759693', '3.29989907678925625560624268612931396477916727620026755084192305968758324577882707261657821535962415310524266e+89'); + T('0.0000000000001704747491801544304246616272150314276800251600985090', '356912525185464485672340637548121974961395954891152868968788980713248525881582063315953007660073165537954814817936395362149647051889219299067882', '-3.56912525185464485672340637548121974961395954891152868968788980713248525881582063315953007660073165537954814817936395362149647051889219299067881999999999999829525250819845569575338372784968572319974839901491e+143'); + T('252850202046876977851994.143212', '-848887102457721130097.091770', '2.53699089149334698982091234982e+23'); + T('-1463813561256.991439146629821901956687441988620850205985146015744308635116738069577049349761881704662355647698634718200189276416926210554813240', '62029849111463410013756762844374812825897194275000462631388966790212235003405628390', '-6.202984911146341001375676284437481282589719427500046263138896679021223646721918964699143914662982190195668744198862085020598514601574430863511673806957704934976188170466235564769863471820018927641692621055481324e+82'); + T('69782305662663437094541084757082159939270157247.9716354', '-89147785350539844445.416910718922580580536969939488837234964042787197740548106624', '6.9782305662663437094541084846229945289810001693388546118922580580536969939488837234964042787197740548106624e+46'); + T('-131.76', '-0.000000000005696147108564746426888775570848202211810884752865344375891071070092502829538629785436541334365692051020683595375875811133291302478345676258', '-131.759999999994303852891435253573111224429151797788189115247134655624108928929907497170461370214563458665634307948979316404624124188866708697521654323742'); + T('-497777803060949043131155159968723958.16915576601446255882706227712009561', '187513374620216567870246128064.585091639963330830047759047069515276559563684958977723723813958088783235081595183826887', '-4.97777990574323663347723030214852022754247405977793388874821324189610886559563684958977723723813958088783235081595183826887e+35'); + T('4125226628898214776459043043848665640891754611330056829115889332318900550787802063162881102.0172', '-5654133954935729315244416.571910565', '4.125226628898214776459043043848665640891754611330056829115889332324554684742737792478125518589110565e+90'); + T('0.00000000004139915941037474807032518234750457019529957219537984823906929653706764566737605928162402285281158810275719639', '4918252046919178557340409576205071237879887503291090041', '-4.91825204691917855734040957620507123787988750329109004099999999995860084058962525192967481765249542980470042780462015176093070346293235433262394071837597714718841189724280361e+54'); + T('-2311168251436595165228357269442780578123112.83612714285098893733488905613344909999353', '-23179010559927745251596254686184413186603531856508883463422590120878079108990895937457179980442401237385839673669330286893540161257', '2.317901055992774525159625468618441318660353185650888346342259012087807910899089593745717766927414980079067444531206084411296203814416387285714901106266511094386655090000647e+130'); + T('-157110395920267638794958655839617698095333501445314955918734069161689933642356923466527500.842491896021313687363006263896039621', '-0.00000169938824017905253390365814790480115170799502101643798', '-1.5711039592026763879495865583961769809533350144531495591873406916168993364235692346652750084249019663307350831047236023789171619884829200497898356202e+89'); + T('-0.0000000034695699166026892143077647500761510769012638170656915865714501717320327171654999280961297567557115531', '0.000003285105858090918101513244579', '-0.0000032885754280075207907275523437500761510769012638170656915865714501717320327171654999280961297567557115531'); + T('12.821444033432329487', '-828945494613921320615913033922430384667832091835552867448637507842855527762415897847274731250460560.5938743219195296432763484012308615936905854362', '8.289454946139213206159130339224303846678320918355528674486375078428555277624158978472747312504605734153183553518591302763484012308615936905854362e+98'); + T('-21780810408046000685162929853231193847862416557439280736028379007620.9726981547505', '-139252299485951365181945740150018259705534184833100450.519901854594606176500', '-2.17808104080458614328634439018660119021222665391795752018435459071704527963001558938235e+67'); + T('31153778331.4387887187891452717104214859599795399160108427720346733063507', '179728021.06909075407924714', '30974050310.3696979647098981317104214859599795399160108427720346733063507'); + T('-618834912531652.0057377', '21797574580198291897359627810662681102637063422664387863754038865817', '-2.17975745801982918973596278106626811026370634226643884825889513974690057377e+67'); + T('-0.000000000000000765821929389877370458202611860322225362885792434335153360684490327702934795208517771383256418915784282787289167843225530943806979468309', '451287395769559434110582968934970.685236', '-4.51287395769559434110582968934970685236000000000765821929389877370458202611860322225362885792434335153360684490327702934795208517771383256418915784282787289167843225530943806979468309e+32'); + T('77106705055908475310440141267552925652440318989464386727898512296975567.66061423617574863098323698323360502040356558', '-0.000000011450841720290860862448039550281180968988484941121896581469341885197489647153563705690545985946332080104331971976300', '7.71067050559084753104401412675529256524403189894643867278985122969755676606142476265903512740978456816445706847465489884849411218965814693418851974896471535637056905459859463320801043319719763e+70'); + T('-0.000000000000019290717114050931338105101245194653742552644960059', '143276467308241499701', '-143276467308241499701.000000000000019290717114050931338105101245194653742552644960059'); + T('-0.0000000000001540616672147681280171217297593042431394881995494063140060573330749436996881403638596216426697967870302615524370008926698907505446249500632', '-0.28350757173542186862807156137406823418555996167492030058802005151707375796930334126928268135255', '0.2835075717352678069608567932460511124558006574317808123884706452030677006362283975695945409886903783573302032129697384475629991073301092494553750499368'); + T('0.00000005655991707149037399922054071139097387281061191477648236574838149302923575757471824009608753090882473645396585695414457', '-1037735687954213696569384673332890401637635622739449765500.241575915381331', '1.03773568795421369656938467333289040163763562273944976550024157597194124807149037399922054071139097387281061191477648236574838149302923575757471824009608753090882473645396585695414457e+57'); + T('4855675332.7083066004691748608', '-9495842049673468279.5671213956484193849367821937814670521168063407441607221529038456882314074643242900887127616369767306383357140885', '9495842054529143612.2754279961175942457367821937814670521168063407441607221529038456882314074643242900887127616369767306383357140885'); + T('-371727694604000265531518957397404745190308397247774643342809559479423488145460577873367071667140515223960430330052550077105059687.602928315818224370992', '-0.006182613654799728503894831274202426819463433943221582526744062754609114781332193519619', '-3.71727694604000265531518957397404745190308397247774643342809559479423488145460577873367071667140515223960430330052550077105059687596745702163424642488105168725797573180536566056778417473255937245390885218667806480381e+128'); + T('252.7286', '-1048727383.8417648117635129245612611075251', '1048727636.5703648117635129245612611075251'); + T('246339105236279993029.779136671622836638254622844315', '-0.2081466910740537', '246339105236279993029.987283362696890338254622844315'); + T('-0.000000000004251821155298564603972810714958089479168033107886959502196802756203470788176960484264054952475484390527833088494710819240861104331195786410885', '72374649981010622768585141052423674921404658971075010108219334219091239517373927587321641489790577909684263', '-7.2374649981010622768585141052423674921404658971075010108219334219091239517373927587321641489790577909684263000000000004251821155298564603972810714958089479168033107886959502196802756203470788176960484264054952475484390527833088494710819240861104331195786410885e+106'); + T('183837148.90443961940430047231989366651993476031567037971215956651037637016802721769559763173816796542803144211780111934219050428648', '-1132210802667233013885301883421427506588959233625', '1.13221080266723301388530188342142750658914307077390443961940430047231989366651993476031567037971215956651037637016802721769559763173816796542803144211780111934219050428648e+48'); + T('-3691822058.57085474396080945369673728122984439428444257734562382467780353804871181415538969082586191879205496710', '3926432506300249210509179487381770792289628403911395731250431112551381231067577307.7886693710023579159088025939730616110630998092011', '-3.9264325063002492105091794873817707922896284039113957312504311125513812347593993663595241149631673696055398752029060053475423865467238246778035380487118141553896908258619187920549671e+81'); + T('161380629205776417370619978.94790585532571175965001173657717968258603', '15770163883113132525352877130764618385076935573552026524962864893082340267956294317512981350074440117.51141761065457763829', '-1.577016388311313252535287713076461838507693557355202652496286489308234026779491368830720493270382013856351175532886587863998826342282031741397e+100'); + T('-0.003870041060244155089', '372037566.3292566800057303692867308995967514456947136761173', '-372037566.3331267210659745243757308995967514456947136761173'); + T('306847039405846004795255377789835522736966045.703419256307644158563670046841211782545782850044162871280281083966845034443161', '-0.0000000000920455239477610995683838741187048041416049264294738878526378270582', '3.06847039405846004795255377789835522736966045703419256399689682511431146409595656664487654185767797709754971819482861501361e+44'); + T('-0.0000000000003210953781062772150098343898602436843086564236327052301688', '-150338459473158557923119665782760876423441993048051543691089147086917525625936551761033445707803557045155557.52837300270019703', '1.503384594731585579231196657827608764234419930480515436910891470869175256259365517610334457078035570451555575283730026998759346218937227849901656101397563156913435763672947698312e+107'); + T('25983124363595065.33092768399411430713290111808632249366', '-580933674475894898982997155309901918649485043287834362560222468094831906478743818165029199620003568770150378311086272184208826293576318808290', '5.8093367447589489898299715530990191864948504328783436256022246809483190647874381816502919962000356877015037831108627218420885227670068240335533092768399411430713290111808632249366e+140'); + T('1850916610962229939602303480362676023908431072215702014137566112296384421153424607176.8059784587131', '512243500267', '1.8509166109622299396023034803626760239084310722157020141375661122963844206411811069098059784587131e+84'); + T('-184877142422294703520975479796306025809263499292.7931910621756669188662102660938494746987999101249089061195470207030', '-0.00000000000000008498222206556406262243165', '-1.84877142422294703520975479796306025809263499292793191062175666833883988200529786852267149910124908906119547020703e+47'); + T('-0.000000000002591577406696730110925816397500154615', '-0.000000008203755062608231746294494108119453489077150713983075114286087573203872407396100452280836', '8.201163485201535016183568291721953334462150713983075114286087573203872407396100452280836e-9'); + T('0.00113187652077011811375354713438890135407233573999645640576361426763004959545048824419375996447732201405034000719887068357917006193372968721', '-9513299452685933145884287122288569823742580460859259721427216624858272956972621512882828978401205032497576349955400997444307472.127288502040606', '9.51329945268593314588428712228856982374258046085925972142721662485827295697262151288282897840120503249757634995540099744430747212842037856137611811375354713438890135407233573999645640576361426763004959545048824419375996447732201405034000719887068357917006193372968721e+126'); + T('-101282948616724272484953545953349716593478543806497.286950890059245094039', '117309932329495122737411487914013724789825355301759777928575644736371090499526769006843968707622513899074453', '-1.17309932329495122737411487914013724789825355301759777928676927684987814772011722552797318424215992442880950286950890059245094039e+107'); + T('-3527672542958095940230507255558332.170340607904850914382797250686015987003437982374864974619427360612046545786860047', '-44308074539', '-3.527672542958095940230462947483793170340607904850914382797250686015987003437982374864974619427360612046545786860047e+33'); + T('696251462779098640018848016194974848273984539897182732503721195581.022', '-0.0009913757384911224166061061275859102001742166932949065339677297902168319985124401', '6.962514627790986400188480161949748482739845398971827325037211955810229913757384911224166061061275859102001742166932949065339677297902168319985124401e+65'); + T('1078800798224.734663928613388302956878421495374656333024393408174361403843900153053669034118433549172155326377609', '-395534581529124125726253950708301388351136671971313.269513765972391964435573515235', '3.95534581529124125726253950708301388352215472769538004177694585780267392451936730374656333024393408174361403843900153053669034118433549172155326377609e+50'); + T('157736254008627834038860309559683387724555', '-4594454316276846.22889', '1.5773625400862783403886031415413770400140122889e+41'); + T('192386447850938643364980037157714078.667670', '-851657218576.302225280595205926373252086357245881159099186004946924709955966414529108970202216172176', '1.92386447850938643364980888814932654969895280595205926373252086357245881159099186004946924709955966414529108970202216172176e+35'); + T('-30904996899995566378174385484494931717271463370895674716598098724288017981274999017442756424.6379761510688077348608197361985605065677866468436805', '4689937374232446.45257401892489335752', '-3.09049968999955663781743854844949317172714633708956747165980987242880179812796889548169888710905501699937010923808197361985605065677866468436805e+91'); + T('-75737124093497081558918300645262008779192868684414555820427607278946300576673', '217541673539103', '-7.5737124093497081558918300645262008779192868684414555820427607496487974115776e+76'); + T('-0.0000000000178582787097936410955952527724904571812233290700799389147161616449340030526614581183800172797335354127416587536811082238416196766809706109306282257', '1655811940148466388814205.23320907612777562208494378505895383608907847845502485386735176120340958223402858437920118040340355068270079322722548', '-1.6558119401484663888142052332090761456339007947374261545490888615689356362481829374317001181257438789625874318626385217835679624343286399671387536811082238416196766809706109306282257e+24'); + T('0.000000002919991993491021882536587348', '-505934880332731792510691865564845809059631032976000339923495992940889398540650687707453464781582591628461285346207100158557879217', '5.05934880332731792510691865564845809059631032976000339923495992940889398540650687707453464781582591628461285346207100158557879217000000002919991993491021882536587348e+128'); + T('-33466744637598795529381545892043857804617468.46401319673766053647481787577214595481626050900894623520', '-0.0000000000003357237902324', '-3.34667446375987955293815458920438578046174684640131967373248126845854757721459548162605090089462352e+43'); + T('-89425417162201175465400546339403148500149133957193.96578038786595026758317811953966733498932978601', '-1405803301520003345575789184231943451603588638985.9376135626367435873857739001195431353742', '-8.801961386068117211982475715517120504854554531820802816682522920668019740421942012419961512978601e+49'); + T('0.000000000000001871288647830989494290689415161953067408619362137083942908468831270334812418581424545772814063266068263844492510500380710872894374', '4.23013879231167686677612360843795550900659989406713647936612', '-4.230138792311674995487475777448461218317184732114069070746757862916057091531168729665187581418575454227185936733931736155507489499619289127105626'); + T('1081898192142823325334768391585696724.266551471539993', '-17659238921005307.917413084214192739', '1.081898192142823325352427630506702032183964555754185739e+36'); + T('-211840291024698604.48893683835289524386164142885412599596', '0.956798615642965592754457212313533228615333073536496635490759649687294643223525742190828313263626448735964', '-211840291024698605.445735453995860836616098641167659224575333073536496635490759649687294643223525742190828313263626448735964'); + T('221425316830895877056683698880899917852135343813023998859360273819797052290640.9315231787425484197016892424623525', '0.00000400616385054508', '2.214253168308958770566836988808999178521353438130239988593602738197970522906409315191725786978746216892424623525e+77'); + T('0.0000000074648516794219838184240130975016099', '116876.42749590099927445693850031173280282361261639', '-116876.42749589353442277751651649330878972611100649'); + T('-73443010540402954576842026', '-4926832937510632043653806478767750613389877126019642141260618065698.0792895022817212282107503047772151899589664246413340', '4.926832937510632043653806478767750613389803683009101738306041223672079289502281721228210750304777215189958966424641334e+66'); + T('2784502990835628144358253950083873358740549170601580432289611124376226555234877.9858200557236237337577147596', '4917661361731789584921195447270.5587547070375957130008047176901629887458255', '2.7845029908356281443582539500838733587405491705966627709278793347913053597876074270653486860280207569100419098370112541745e+78'); + T('0.0000000278504063853447146762310784743311219577950698679342514425094994531041925550104863191773566381681464090705194734640', '327544799712156512794784451228653130604976681932044866.8130716684653513802', '-3.27544799712156512794784451228653130604976681932044866813071640614944994855285323768921525668878042204930132065748557490500546895807444989513680822643361831853590929480526536e+53'); + T('-0.00000000000002008111880513429242547', '-1168142699198895682872256551220621216397424308459153677585114.96438975713066891515', '1.16814269919889568287225655122062121639742430845915367758511496438975713064883403119486570757453e+60'); + T('-0.0020759804305965617', '764484378925575955998262271107967177799.3921673495985811141655562538838430225703', '-7.644843789255759559982622711079671777993942433300291776758655562538838430225703e+38'); + T('314538242246288.42720726996770214230667062396125055947593471536', '-5709766296171650602.24185600104198360224', '5710080834413896890.66906327100968574454667062396125055947593471536'); + T('2601655151900642206636222997530561092879117314164702943580485229395095933.8148647041', '0.0000000000000000000545923963200601881583792553271167476403317094011785783473945906028127827591476470085229569639102315240902527107858916390', '2.601655151900642206636222997530561092879117314164702943580485229395095933814864704099999999945407603679939811841620744672883252359668290598821421652605409397187217240852352991477043036089768475909747289214108361e+72'); + T('-43151301919298268068196451304198990983037212765635867863105642809532901509070161236071836104869066552364969311762463975552', '-65792506329.162401577209876729615122943184875102458456675147552153', '-4.3151301919298268068196451304198990983037212765635867863105642809532901509070161236071836104869066552364969311696671469222837598422790123270384877056815124897541543324852447847e+121'); + T('-58145525166565890.04122722148517396992268609808559449424081643957465013', '36895', '-58145525166602785.04122722148517396992268609808559449424081643957465013'); + T('-1380019075368410665434910685837646231061500678571273.437', '-708783781474372956418809.1668488022806394799579905891256533778023871539', '-1.3800190753684106654349106851288624495871277221524642701511977193605200420094108743466221976128461e+51'); + T('1963393100153283900680602317090841091868.7057877321407368918', '-4558805287590516608986267171325288983366964400655106', '4.5588052875924800020864204552259695856840552417469747057877321407368918e+51'); + T('0.0000001407996470540256884206972291699170231269478445264415596334101718170629891348240406473704424192652557212601717979646372575017642378452081', '-68319808.85143904948777163237579395976723632411831309906501022', '68319808.8514391902874186864014823804644654940353362260128547464415596334101718170629891348240406473704424192652557212601717979646372575017642378452081'); + T('-0.00000000000000000520745300386927858263802847774818906513849609279791649851542455109794569658396745790033', '-0.0092550980435850490662646493376107', '0.00925509804358504385881164546833211736197152225181093486150390720208350148457544890205430341603254209967'); + T('2967617678347088013.1738970622321751596070351867397208390655655108226821804468393275334586999342460367780260036922367170801495', '-1037314302.0266874363156528872956184434218993246886249535339781421', '2967617679384402315.2005844985478280469026536301616201637541904643566603225468393275334586999342460367780260036922367170801495'); + T('-49291697.79', '3118337286372049189132894.361136097492458179780194692374756783544285588810310527347173746912677367611366854072067678627774', '-3.118337286372049238424592151136097492458179780194692374756783544285588810310527347173746912677367611366854072067678627774e+24'); + T('-339.2', '163572547291591069133936914034534.567315194', '-1.63572547291591069133936914034873767315194e+32'); + T('34325086548698898487887478294.36420', '355576739939045466327.4975269472620813909920831535481189862294384252210442757667064506332182539172503591866982', '3.43250861931221585488420119668666730527379186090079168464518810137705615747789557242332935493667817460827496408133018e+28'); + T('370044764.3013082042', '1790005633588538461650641328587108706658340072380027626477.0132722745841414452316360238830847702114898024038942988300305', '-1.7900056335885384616506413285871087066583400723796575817127119640703841414452316360238830847702114898024038942988300305e+57'); + T('4263702202353975994071.31690964522111184782225643263309765852647473593539755902567196', '-19975397854626091996286240550959532193241549861480938890275634702569032237325096179631367809302680197661729288714.051', '1.997539785462609199628624055095953219324154986148093889027563470256903223732509617963136781356638240001570528278536790964522111184782225643263309765852647473593539755902567196e+112'); + T('3486961.94860938', '155083657058384127930580314746.0523483468034310636373779', '-1.550836570583841279305768277841037389668034310636373779e+29'); + T('-12500272340430247337584871234769182598217741493536064909830797164011240022929666553931.1010', '320228573980378863122568709145317117449935889878174725217701802157098986085371.51305672546876049053871', '-1.250027266065882131796373435733789174353485894347195478800552238171304218002865263930261405672546876049053871e+85'); + T('-5051726177322.81786601098426577', '-0.478083315601904193517321798543685421468736554729083533236145832716201463299848292219431026180384620242431752321517', '-5051726177322.339782695382361576482678201456314578531263445270916466763854167283798536700151707780568973819615379757568247678483'); + T('-1805640145024569891681224418968926516432842084069.4683478', '-0.00004666227081', '-1.80564014502456989168122441896892651643284208406946830113772919e+48'); + T('-122539612725006940436479306393463901576107037860603468764716.442090206833953614902041846195976605726465853757952136575397703', '-41270858.6670990535407801373074922648949382808920775900799658210502034041462604039074761', '-1.225396127250069404364793063934639015761070378606034274938577749911532931734775945495813010383248343882636779863155251942988537395960925239e+59'); + T('-122359.1727490376', '1581678069.9607', '-1581800429.1334490376'); + T('0.00000828479828485256539017422162536712777837952542406358440363757753554784788015690875096756272853061031753883063876226018540022889614127275718921', '-0.00000000000979390831128660928240121877046', '0.00000828480807876087667678350402658589823837952542406358440363757753554784788015690875096756272853061031753883063876226018540022889614127275718921'); + T('3014937410709080363048635820022478067970287003612206702018715047141006381003373200865760747279383102148885920325786', '13192212031830204018622500889173518071465445462648474880006710438901406028.19078998512989422200926796249911378252', '3.01493741070908036304863582002247806797027381140017487181469642464011720748530173542029809880450309543844701891975780921001487010577799073203750088621748e+114'); + T('1137652429855.7006716974270280155270950682974135967673015740628328197884', '0.000005536906484', '1137652429855.7006661605205440155270950682974135967673015740628328197884'); + T('17516195002079504046599923580222888468136191973844988762823377013157696208127912781416616872247424539619546427766', '0.000000049332322771448227773362567337764784013258792663644857484303435435122827459514247309673313863866397145377917359757', '1.7516195002079504046599923580222888468136191973844988762823377013157696208127912781416616872247424539619546427765999999950667677228551772226637432662235215986741207336355142515696564564877172540485752690326686136133602854622082640243e+112'); + T('-27506767197655948181.328949804790883947367925537829924105775693473950222413500805587179604', '851744208518189337306972955526150694905469056618627352385522013393688952141414396074470925490405490728735', '-8.51744208518189337306972955526150694905469056618627352385522013393688952141414396074498432257603146676916328949804790883947367925537829924105775693473950222413500805587179604e+104'); + T('0.00000000000000016100516695902975851532468630731065388238733922125157107578982740360720', '0.000000000000005453287371976994277320664460255897903401402435852268978047976350868347882510607594', '-5.292282205017964518805339773948587249519015096631017406972186523464740682510607594e-15'); + T('-1015.36', '28726679251696495519418305.7', '-2.872667925169649551941932106e+25'); + T('-936968911546704282843988971022862859429380575863600004134648546127147385.550916104277091139359959595538873413416181058503593874140', '-175348106986507342335754762602245018364666640954631672307547275757550482650641067', '1.7534810604953843078905047975825604734180378152525109644394727162290193652349368144908389572290886064004040446112658658381894149640612586e+80'); + T('-82283247317913068455250030332808481250588157.87622854768457973434714154261139038109409280493164157480405984455365143662342695995148270', '44.99825878', '-8.22832473179130684552500303328084812505882028744873276845797343471415426113903810940928049316415748040598445536514366234269599514827e+43'); + T('0.0000000008490168', '-0.0000000000000006074865058947945839', '8.490174074865058947945839e-10'); + T('3636426464211118305138698215541505022990147742911418561057930702808150291', '1598908059965309335026038743126561583060668905575689367.6003785995795', '3.6364264642111183035397901555761956879641089997848569779972617972324609233996214004205e+72'); + T('-7516190.940861499379106729192131043068573493293233100655140480083907054072822505940742766302343169414520157351216195387299511801647', '-0.0000000000000454932933336808575963301305396992632885880696675679107651681040430359684592346731492202438', '-7516190.940861499379061235898797362210977163162693401391851892014239486162057337836699730333883934741370937107416195387299511801647'); + T('-48288936.78722249318487555690454563461', '-2005716261952974336303267852338923837806513', '2.00571626195297433630326785233892378951757621277750681512444309545436539e+42'); + T('0.00000000000000361164834854643173545096303609810033142721680028195071060833143531948647509219803554613154933367271433460345060095402441586344758203', '0', '3.61164834854643173545096303609810033142721680028195071060833143531948647509219803554613154933367271433460345060095402441586344758203e-15'); + T('117527597286243844925820166915403846128409126690409737.7024153118718614783138378277032681506289005899206380178136648075347527401515', '142970923259618812743278564725226081502378163356150859956591622347575726634881287085', '-1.429709232596188127432785647251085539050919195112250397896762185014473175081908773472975846881281385216861621722967318493710994100793619821863351924652472598485e+83'); + T('-421.637794298766899659968770626491660939483442168172530357951266709389524009618302536438221', '0.000007500440138930182530717119147674010713308857022125249921960367734502038756006365022302482030874542048185964246356551809776026365', '-421.637801799207038590151301343610808613494155477029552483201188669757258511657058542803243302482030874542048185964246356551809776026365'); + T('151539803714.55419760516058121061664', '5947110489174350865159529800495269979412122032546964623633750977098107', '-5.94711048917435086515952980049526997941212203254696462363359943729439244580239483941878938336e+69'); + T('42.96514137222747126649680518556598169535979854687275322179628273846143520146782958673105379865087129307601', '-10953889685.72652645743016845401321258839294061151336635450954240593892170965006938629511080', '10953889728.69166782965763972051001777395892230687316490138229562773520444811150458776294038673105379865087129307601'); + T('-45444452978530864728152294556239654908077032829329359349565438897.0872421377694', '-1.10543198001234853494574224133819939759899818427770986357398073461833864778527689', '-4.544445297853086472815229455623965490807703282932935934956543889598181015775705146505425775866180060240100181572229013642601926538166135221472311e+64'); + T('-0.002845911806687586456195667795987390886482178862015476630127308203573595922990347328439736545942442607248575854261113227721222844030682403654028296609', '-108143910626361371525060838061026913900811972840772563215348121329650489043833335691285421668618034618407054685798027697197635.65860759495683373744', '1.08143910626361371525060838061026913900811972840772563215348121329650489043833335691285421668618034618407054685798027697197635655761683150146150983804332204012609113517821137984523369872691796426404077009652671560263454057557392751424145738886772278777155969317596345971703391e+125'); + T('-46907095890372173836389327440139250674757510384063869086116234641758602924747249181765303804967251303089507.19103700711514447125694845740498171264', '25808803835091891711851699685937630228367986645198551990544154370479382.0551364316906891141232071494', '-4.690709589037217383638932744013925070056631421915576079796793432769623315311523582696385579551140567356888924617343880583358538015560680498171264e+106'); + T('774303554476944464976310906.2756072907223780702981916825924935009102144113269340555014106355954', '-2936542523893120558694770993613502855976036487473.1185405114318897552959636978670899057597113825111455591', '2.9365425238931205586955452971679798004410127983793941478021542678255941553804595834066699257938380796146014106355954e+48'); + T('-13275374194717318544585743586295562757313566313778528439681338744852144432953462009763652326380221990178967224217813656923840876936', '-1268893501255453921460255787670811403994557320916562978493176785265067911028531055.964036945884980267232', '-1.3275374194717318544585743586295562757313566313777259546180083290930684177165791198359657769059305427200474047432548589012812345880035963054115019732768e+130'); + T('335836320670736795110387481821779195576314622771385546058961565', '-6308825096439610198958861602887495693205.4798888075506048902810900464069359363711381750141774362863', '3.358363206707367951103937906468756351865135816329884335546547704798888075506048902810900464069359363711381750141774362863e+62'); + T('0.0000021372107920', '-1492049097078082888491204608304758854999.3774548350456232694485449355735093537220396664845726422284909165974459140941684162404595576799509302', '1.4920490970780828884912046083047588549993774569722564152694485449355735093537220396664845726422284909165974459140941684162404595576799509302e+39'); + T('-64732225450134517358652.7727736714979370370316688953979348962291764', '2981903640111957881620728082679423538602.35210787691735540826362359673812680870549799515376723672419104726837070300471', '-2.98190364011195794635295353281394089725512488154841529244529529249213606170493467439515376723672419104726837070300471e+39'); + T('0.00000000010852624286329189173169519346885793702035699273525590064499030', '0.00136476424465186406412883677012902', '-0.0013647641361256212008369450384338265311420629796430072647440993550097'); + T('-177975785070132616812935423102873085249499780810541192549343263252072028435998023073647418141301', '-283854219686234199819511886405040807512965424302362972904060004217971747993015757990079005629446149391437513331803368676845228.9308370137200554682048', '2.838542196862341998195118864048628317278952916855500374809571311327222482122052167975296623661940773630015153087297212587039279308370137200554682048e+125'); + T('11674840520046183.070270802775802015272346477', '171117028337514616542538412107099681879.7091235075363784803038814937481135947601822871', '-1.711170283375146165425267372665796356966388527047605764650315350167481135947601822871e+38'); + T('11685421494153882328823406', '99823703745248486246555543362896398057.69654850969729974206782841252942985600643', '-9.982370374523680082506138948056757465169654850969729974206782841252942985600643e+37'); + T('-9109482616.16307635880678540039795900931968117400633485165763268347733490749858174229181208845630928397440346561525883931665961736391868364592211620', '14097919301831317803788298625489630505329242071596241458071703375084752395181642884783601132188.8522', '-1.40979193018313178037882986254896305053292420715962414580717033750847523951816428847927106148050152763588067854003979590093196811740063348516576326834773349074985817422918120884563092839744034656152588393166596173639186836459221162e+94'); + T('-396517877066594063060677506383119536072199294985913999200669.59905258559791428967320074613407023609823115620484119798490058332639', '17256241436287752756476467398810586324749967766162129140817034689021019365.9302352418415133924725065381333905577352346319497471430577092460069', '-1.725624143628814927435353399287364700225635088569820134011202060302022003552928782743942768214570728426746079383346578815458834104260982933329e+73'); + T('-0.0000000000000006853990620674437', '-11653311815829554561363099986.3318015068509425148506115888737905', '1.16533118158295545613630999863318015068509418294515495214300905e+28'); + T('-5723499348320995600234845601896898858316706679233.56868503185838526295669696287365718201389967796395316338461191538328404398163', '461418995024299794224540170173617.270340', '-5.72349934832099606165384062619669308285687685285083902503185838526295669696287365718201389967796395316338461191538328404398163e+48'); + T('-0.0000000000000101517398894041224975316', '30047274158786647140078597868700853194123877763708264122482641575288270215565704601867490408221403474129054083514278658302219', '-3.00472741587866471400785978687008531941238777637082641224826415752882702155657046018674904082214034741290540835142786583022190000000000000101517398894041224975316e+124'); + T('-618567708703808887087390708806987', '-0.0015997812131968024699920112', '-6.185677087038088870873907088069869984002187868031975300079888e+32'); + T('34635015.52962864534284905231551787970767779289829087969225962977505217622119009888696504123088304563966631377931959000', '65036143001432807857013922660931089988524905416395272216298294489190408991210531327960173961048126960813108032096.485609144979688026094', '-6.503614300143280785701392266093108998852490541639527221629829448919040899121053132796017396104812696081307339708095598049963683897377848212029232220710170912030774037022494782377880990111303495876911695436033368622068041e+112'); + T('0.00000545779896722128', '75.894260707608627618281140481123324654999311980', '-75.89425524980966039700114048112332465499931198'); + T('-25447415.284973', '-0.0000000000000007754252238300503245755256660265406480381126460350812317568910629452911860373986555887795038942931814558679883067258919646131547862678299152', '-25447415.2849729999999992245747761699496754244743339734593519618873539649187682431089370547088139626013444112204961057068185441320116932741080353868452137321700848'); + T('-0.001075197560340105849714564474713709665034764454198356529111553747592026589852279831398339755093155322360635646225772353512853661478291013155199651968', '-0.00020617706103921965422517798875780714829530744843284313739680833048742357175207280371959115967601565', '-0.000869020499300886195489386485955902516739457005765513391714745417104603018100207027678748595417139672360635646225772353512853661478291013155199651968'); + T('-116637095502756610832663.0820790492356971286520755389123518333397635564353785857413082439598928', '1333189986026163882571196149909544777510081036404785123663838051125806079402280.39239585', '-1.3331899860261638825711961499095447775100810364047851237804751466285626902349434744748992356971286520755389123518333397635564353785857413082439598928e+78'); + T('7263206331639956734034338857142.2483005287993760580093202768989231263952047014145290402299553496171737360348099042', '930482152339662', '7.2632063316399558035521865174802483005287993760580093202768989231263952047014145290402299553496171737360348099042e+30'); + T('17084', '-9268741940429543879.25831048455993577463', '9268741940429560963.25831048455993577463'); + T('14223703.25068993203', '-337469327718493482402348015976790428942562', '3.3746932771849348240234801597679044316626525068993203e+41'); + T('3449947415518601.021', '967.0', '3449947415517634.021'); + T('-0.00000001950779962429255860674296257770624055952071967804562271969656131634150181850350309', '0.0000000008381662576798806596505469925921281919496917780384885026235741778910169613942109570101961434140020955862069084082830238300586284', '-2.03459658819724392663935095702983687514704114560841112223201354942325187798977140470101961434140020955862069084082830238300586284e-8'); + T('-150022.550348329907362699413739505634058542', '184370701561492907256959190967889134766063594155869181275951.2113720965937284915580147334609117040504470778054254305016213147502', '-1.843707015614929072569591909678891347660635941558691814259737617204265010911909717542390949702460504470778054254305016213147502e+59'); + T('0.000003620654231399775474818103408872051818273000913919007645231626869893019046908014555613658', '0.68604446001049997675748396664984795835553205960118589677575278373113193853373621258895597212465646303658933', '-0.68604083935626857698200914854643908630371378660027197776810755210426204551468930457440035846665646303658933'); + T('65368354350846125525740295379107787645781698927087650085.02206520625654961397', '-0.0000000674457908966051035778148933613021264363709209074145574586026651385058583013192568248506496786927539106989162985222622021758286164962220899099', '6.53683543508461255257402953791077876457816989270876500850220652737023405105751035778148933613021264363709209074145574586026651385058583013192568248506496786927539106989162985222622021758286164962220899099e+55'); + T('-8920208628291.3008573264554796861275279433556810380829567356987428005869325303620053400734014217983382463883243235802100794975758488782407', '-513373869275942293084285976984505491137681087793006719363115134289902581030528408559950531152647492241975261279494', '5.133738692759422930842859769845054911376810877930067193631151342899025810305284085599505311526474922330550526512026991426735445203138724720566443189619170432643012571994130674696379946599265985782016617536116756764197899205024241511217593e+113'); + T('-0.00000000000183230276994692835786255816165075667312', '-229380247132858507707379441535866.9842134679934568352180933906622411983573128385632545016159055477', '2.293802471328585077073794415358669842134679916245324481464623043786401956620818901345016159055477e+32'); + T('-287936424370618182.780178943170029610095984105232897190551066507742776730608050074096160389428747382606461428337968', '-0.0000000000000553002065739653836900325094668610744480924050098363944976572396316708026350418744470424301014068736481205320698956807538835', '-287936424370618182.7801789431699743098894101398492071580415996466683286382030402377016627321891157118038263864635209575698985931263518794679301043192461165'); + T('-22.334064568139055296413453550456558402422719815', '-5916832358056988948884.3608360136502313', '5.916832358056988948862026771445511176003586546449543441597577280185e+21'); + T('39536714308273957618181661117092495089825904732491104299979330463137078095213622807057621623.41662', '589200756584346355393503066.219095388726950444141250942', '3.9536714308273957618181661117092495089825904732491104299979330462547877338629276451664118557197524611273049555858749058e+91'); + T('3332373913416111574992795772547417643215092643096621602439954355776074197.0830941294911902023033935298448733337875606874978778273299805496488198', '-376783721571530269384664901.84367020991', '3.3323739134161115749927957725474176432150926434734053240114846251607390989267643394011902023033935298448733337875606874978778273299805496488198e+72'); + T('344530122785201375772271590504206290220784446141965110231600995362970158247376180772409197123197131294077.186098277324338477562529348577734786615', '-6800118879080455193015443336230714183574736068660393152304.8553', '3.44530122785201375772271590504206290220784446148765229110681450555985601583606894955983933191857524446382041398277324338477562529348577734786615e+104'); + T('-3163.9', '542978947164157706891911715882635312937995954746776936', '-5.429789471641577068919117158826353129379959547467800999e+53'); + T('-0.0105476924518869569128457836748478061179109848158054941752355692339310906027532526097315426003502305592037541108758447196738444856373715790727005274', '-6071446248.8516018389629874549426069280533669184418994141964930724996411053034540030731460065', '6071446248.8410541465111004980297611443785191123239884293806875783244055360695229124703927538902684573996497694407962458891241552803261555143626284209272994726'); + T('7010541707164752', '193282362072373636518312100314810747000413165206769770654226368116684704540011812177387120657825195495894912200085910730717115', '-1.93282362072373636518312100314810747000413165206769770654226368116684704540011812177387120657825195495894912193075369023552363e+125'); + T('-0.000000023007226851065128925630962810852833918316878559874', '-2227361414820256464065922780424658.1090', '2.227361414820256464065922780424658108999976992773148934871074369037189147166081683121440126e+33'); + T('-1299409497083890403177181021135821640390762146063059101862994.03242662743092991583924105899423080674085051582932994688405941727718256319443172611542', '15608748.5795516673514981732595600003601066848923630692039049676154725134079753969829680892279555729548167054550621674232927404', '-1.2994094970838904031771810211358216403907621460630591174717426119782947824280890988010593543374916332135850332349144995319306851579601773998153433755729548167054550621674232927404e+60'); + T('0.0010233218531674933882798080038538892677859219827', '0.00000000000000000045199509493736627851797824870803', '0.00102332185316749293628471306648761074980767327467'); + T('1948739934183785636586602970179911734844812119742663347882584684214752603558036589222.0466138568409029422628086739352361053669148', '1', '1.9487399341837856365866029701799117348448121197426633478825846842147526035580365892210466138568409029422628086739352361053669148e+84'); + T('-44988.17201344296154165057134154894617', '-974065266153241716711223.01990357382515241927388516358056793645871008786729345524788381378024038040395896194', '9.7406526615324171666623484789013086361076870254361463439793645871008786729345524788381378024038040395896194e+23'); + T('745292098682291838946082762537313754587386896855334901324378413687611576868785947032214747734817.29211388635775339523', '1603867082712698768798395795990225766099634680717512610131434577189024930073228282709539770294753232846533372678799230422356361956.600981654582985832103', '-1.603867082712698768798395795990225020807535998425673664048672039875270342686331427374638445916339545234956503892852198207608627139308867768225232436873e+129'); + T('631756437278888751214121898961751903012419248661678700380667.3292365506360170752783293706267811846643253079106924335724182257177006394590934297614', '2.5458577', '6.317564372788887512141218989617519030124192486616787003806647833788506360170752783293706267811846643253079106924335724182257177006394590934297614e+59'); + + T('1.28687824652704e-1', '-6.698774e-7', '0.128688494530104'); + T('1.96882453e+4', '-2.36884e+4', '43376.6453'); + T('4.808718317e+1', '-8.925037868396601e+10', '89250378732.05319317'); + T('4.46523409841128641e+17', '-1.95389255e+8', '446523410036517896'); + T('1.6093613199311543706483e+9', '-3.73783629619292e+10', '38987724281.8603543706483'); + T('7.725438045407340759132811929e+20', '2.138563034e+3', '772543804540734073774.7181589'); + T('-1.87913317632093687e+17', '-1.463e+3', '-187913317632092224'); + T('-4.050502080705989793958e+18', '-8.7328619183422188241e+8', '-4050502079832703602.12377811759'); + T('-1.487e+0', '-1.966e+1', '18.173'); + T('6.1045011712250705486e-8', '-4.629661371271963538730865e-17', '6.104501175854731919871963538730865e-8'); + T('8.04812092e+3', '2.72507554517550342397e-11', '8048.1209199999727492445482449657603'); + T('5.5494e+0', '9.98100066134314965301158e+17', '-998100066134314959.751758'); + T('-7.4960224131954428972698482953e+0', '-1.796223184996831375e+7', '17962224.3539459005545571027301517047'); + T('1e+0', '1.01572540062334032198739881e+12', '-1015725400622.34032198739881'); + T('-3.075828909877630559405653e+24', '-6.20852829406318715e+15', '-3.07582890366910226534246585e+24'); + T('-7.3885363256616208126763e+18', '-4.22e-11', '-7388536325661620812.6762999999578'); + T('1.3633033e+8', '1.098216485205929e-1', '136330329.8901783514794071'); + T('-2.199452313170283112273e+20', '-5.39263091194725e+13', '-219945177390719191754.8'); + T('-8.56e+2', '0e+0', '-856'); + T('1.2877828562642718847e+5', '4.31337491e+4', '85644.53652642718847'); + T('1.4061037483985e+10', '-6.6330709216531850592433e-6', '14061037483.9850066330709216531850592433'); + T('-8.4483135e-12', '-4.113751474103595929387e-2', '0.04113751473258764579387'); + T('-1.03739443149798e+6', '4.343428478300989093e+4', '-1080828.71628098989093'); + T('1e+0', '-1.263607183e+1', '13.63607183'); + T('-2.2320214496959336032e+19', '-1.634037313014e+12', '-22320212862922023018'); + T('7.10073836719e+5', '-1e+0', '710074.836719'); + T('-2.49072186445097e+13', '9e+0', '-24907218644518.7'); + T('-2.9e-20', '-2.15971658258839e+6', '2159716.582588389999999999971'); + T('2.963920096335082831168e+18', '2.2582253282839e+6', '2963920096332824605.8397161'); + T('-4.14586e+3', '-2.9154876269e+4', '25009.016269'); + T('-1.03004879281543026e+15', '-3.78177957668791144e+3', '-1030048792811648.48042331208856'); + T('-9e+0', '4.022232761275766154688145458e+1', '-49.22232761275766154688145458'); + T('1.86836560622539908029690893881e+22', '7.662554282002068984274562e-7', '1.86836560622539908029690893873337445717997931015725438e+22'); + T('3.97689874072e+11', '-3.5744e+3', '397689877646.4'); + T('0e+0', '5.0942844226755638584371e-20', '-5.0942844226755638584371e-20'); + T('-4.12770106201259e+14', '-5.0659330520967113815e+2', '-412770106200752.40669479032886185'); + T('0e+0', '-2.4438628e+7', '24438628'); + T('4.8284508891459500047917633538e+2', '1.0650081449195084887e+2', '376.34427442264415160917633538'); + T('3.0960998932675992e+13', '1.5217314605145612561e+19', '-15217283644146679885.008'); + T('-3.731852849155459781176419989e+27', '4.33183367677e+9', '-3.73185284915545978550825366577e+27'); + T('9.08814632201479508422122537138e+1', '4.73770550569e+2', '-382.8890873488520491577877462862'); + T('3.810846909868531e+7', '2.4444336909e+2', '38108224.65531622'); + T('-2.000986521711238411058857571e+5', '-7.048740793695688315e+18', '7048740793695488216.3478288761588941142429'); + T('2.09309765830355290819000023e-3', '5e+0', '-4.99790690234169644709180999977'); + T('7.70724770820309161581e-5', '2.533e-12', '0.0000770724745490309161581'); + T('2.53375068e+6', '4.00994583e+0', '2533746.67005417'); + T('2e+0', '-6.264387065771998085033e+17', '626438706577199810.5033'); + T('-1.2407705424252222353e+19', '1.8244036019e-1', '-12407705424252222353.18244036019'); + T('-1.799721324042e+12', '-1.3447368530231020851721e+12', '-454984471018.8979148279'); + T('-5.6651404522751594041444107472e+20', '-7.535689111154473052048e+13', '-566513969870624828869.71055424'); + T('3.769112233878e+8', '-1e-10', '376911223.3878000001'); + T('-1.839105258587571e+0', '1.20177991131103601214234e+23', '-1.20177991131103601214235839105258587571e+23'); + T('1.082600317037849190993749e+19', '1.4938307025455867644875688e-4', '10826003170378491909.93734061692974544132355124312'); + T('1.12e+1', '3e+0', '8.2'); + T('6.526872092482495666296825e+9', '4.8645966080716540006e-18', '6526872092.4824956662968249951354033919283459994'); + T('1.339857855971657033752952445e+27', '-4e+0', '1.339857855971657033752952449e+27'); + T('-2.419044558390159646056e-13', '-1.3079097339e+2', '130.7909733899997580955441609840353944'); + T('-7.1705677513767136563e-17', '-6.3081315e-10', '6.30813078294322486232863437e-10'); + T('-2.124781842799053e-2', '5.5030007661157553e+16', '-55030007661157553.02124781842799053'); + T('1.55629535242e+4', '-5.1428769625e-1', '15563.46781189625'); + T('1.01504354636013042e+15', '2.63791456408046734975e+15', '-1622871017720336.92975'); + T('-9.4294e+4', '1.8866986e+7', '-18961280'); + T('1.71775e+1', '-9.97178848809e+7', '99717902.0584'); + T('-6.51108703897071e-2', '2.0481127e+7', '-20481127.0651108703897071'); + T('2.5575417677e+10', '-9.875210228621188311e+18', '9875210254196605988'); + T('-1.515600255e+1', '1.78e+0', '-16.93600255'); + T('-4.934811484526990303505e+15', '3.903941767e-17', '-4934811484526990.30350500000000003903941767'); + T('2.660689025e+9', '1.210751379395e-18', '2660689024.999999999999999998789248620605'); + T('-1.3039e+3', '3.693e+0', '-1307.593'); + T('-8.150211374792494231850488e+10', '-2.4154e+4', '-81502089593.92494231850488'); + T('-7.04276965355095765787e+2', '5.12083556215696675027418e-3', '-704.28208619065792275375027418'); + T('4.560203906e+6', '6.662833107173476e+6', '-2102629.201173476'); + T('1.18219623035280292278e+16', '1.35881201163097673230180989e+16', '-1766157812781738.0952180989'); + T('1.01145921064769030827e+12', '1.0162177943917298766993291463e+4', '1011459200485.512364352701233006708537'); + T('4.478831496443e+12', '-3e+0', '4478831496446'); + T('-4.8033663475504622462769283e+6', '2.400585121791519891706e+17', '-240058512183955355.5181504622462769283'); + T('-1.197167677719e+4', '-9.5568526467142828986e+3', '-2414.8241304757171014'); + T('1.0454e+4', '-7.5783e-13', '10454.00000000000075783'); + T('1.497160982390283668405594719e+2', '3.01769088202242341433267860826e+29', '-3.017690882022423414332678606762839017609716331594405281e+29'); + T('-6.8836180118422e+2', '-4.8579187557539e+5', '485103.51377420578'); + T('-2.2015868446618e+0', '1.112092601534267192772461445e-1', '-2.3127961048152267192772461445'); + T('-1.72703850655851149109833572e+24', '0e+0', '-1.72703850655851149109833572e+24'); + T('-1.722156947575281448505e+21', '7.2324954621329520621898740974e+7', '-1.722156947575353773459621329520621898740974e+21'); + T('1.5403804214964843217980824e+9', '1.2891e+1', '1540380408.6054843217980824'); + T('-5.945326523e+4', '4.669485020980197203323689e+4', '-106148.11543980197203323689'); + T('5.55266637914837652416872269693e+21', '1.471120167304946e+14', '5.55266623203635979367412269693e+21'); + T('3.73778817609658865295139e+1', '-9.87441939032866e+6', '9874456.7682104209658865295139'); + T('5.1012538663005271824613969722e+22', '-1.50156e+0', '5.1012538663005271824615471282e+22'); + T('-2.058e+2', '2.8646830031089679744e+17', '-286468300310897003.24'); + T('-1.632e-16', '9.9938831828547468539e+19', '-99938831828547468539.0000000000000001632'); + T('3.74855475772666e+1', '4.636917906044210284685212e+14', '-463691790604383.5429209439334'); + T('-6.125e+1', '-1.01695009327434527205612623e+7', '10169439.6827434527205612623'); + T('-3.713055373107057485e+8', '-1.579459775785685628895042e+12', '1579088470248.374923146542'); + T('-4.973637071239865e+8', '9.700610204149955956e+18', '-9700610204647319663.1239865'); + T('0e+0', '-4.4905032171787016875848189267e+20', '449050321717870168758.48189267'); + T('-1.4666228937e+5', '4.268680884193908e-17', '-146662.28937000000000004268680884193908'); + T('5.70462240242e+5', '1.140990056118581205e+15', '-1140990055548118.964758'); + T('3.4806661e-11', '8.29856853e+2', '-829.856852999965193339'); + T('-9.086912118595249999201e+21', '3.898423213142569952135e+9', '-9.086912118599148422414142569952135e+21'); + T('-1.61819145378513602550953401e+8', '2.6469734905241672957e+10', '-26631554050.620186559550953401'); + T('1.8497588e+7', '3.133737672348e-9', '18497587.999999996866262327652'); + T('-6.21844625e+6', '6.448980631426448042e-2', '-6218446.31448980631426448042'); + T('2.0553505882011009665e+19', '6.92603e+4', '20553505882010940404.7'); + T('1.92248242840598741949091e+13', '1.339870445733828207038e+20', '-133987025348558536643.9258050909'); + T('4.7736392e-14', '-8.243397452128704948729866e+11', '824339745212.870494872986647736392'); + T('-1.7e+1', '-7.923074334739511792397e-16', '-16.9999999999999992076925665260488207603'); + T('4.9635811440987476026476e-17', '-1.466e-1', '0.146600000000000049635811440987476026476'); + T('2.512230419e+4', '2.5397165598196246028285880532e-1', '25122.05021834401803753971714119468'); + T('-1.11299e+2', '1.11035558611694808056e-18', '-111.29900000000000000111035558611694808056'); + T('2.026822870015760981220174257e-5', '-2.047169266002425550414624e-19', '0.0000202682287001578145291283428125550414624'); + T('-4.0648049768873318277e+6', '-3e+0', '-4064801.9768873318277'); + T('-2.588724223892656991e-16', '3.0098072257229e-6', '-0.0000030098072259817724223892656991'); + T('1.56373140247e+4', '-3.91671625230328e+8', '391687262.5443527'); + T('1.00341736976978e-7', '2.304833813547170392924601625e+22', '-2.3048338135471703929246016249899658263023022e+22'); + T('8.35221698180089026e-19', '-9.32578907000664374e+2', '932.578907000664374000835221698180089026'); + T('-1.08764251456624192e+8', '5.0280989399438845291162488994e+9', '-5136863191.4005087211162488994'); + T('2.46130217148349070169911254e+26', '-1.5624487714497915185829268064e-20', '2.46130217148349070169911254000000000000000000015624487714497915185829268064e+26'); + T('1.01340342215606347222e+6', '-9.22914210865038825420171003e-5', '1013403.4222483548933065038825420171003'); + T('-3.4384e+4', '2.364774267367323611e-9', '-34384.000000002364774267367323611'); + T('2.754440021463e+8', '-8.87772958126791e+2', '275444889.919258126791'); + T('7.866841036008389399178e+3', '2.250087110372669759e+8', '-225000844.196230967510600822'); + T('-1.048e+3', '2e+0', '-1050'); + T('1.51258199632721102661464e-18', '1.37889e+3', '-1378.88999999999999999848741800367278897338536'); + T('-1.247e+3', '-4.576980640479189083e+3', '3329.980640479189083'); + T('2.01135499e+5', '-2e+0', '201137.499'); + T('7.03046195059871843437588e+23', '-2.434388173985239e+12', '7.03046195062306231611573239e+23'); + T('-3.54e+2', '-2.0062114120746252479542e+4', '19708.114120746252479542'); + T('-1.703025e-18', '-3.4292979189222437121973e+21', '3.429297918922243712197299999999999999998296975e+21'); + T('4.87547962612395e+6', '-3.6652187394898226692963e+9', '3670094219.1159466192963'); + T('-2.0143114813870112462786921e-17', '3.767411e+0', '-3.767411000000000020143114813870112462786921'); + T('3.26586277019e+6', '-2.38239842063e+11', '238243107925.77019'); + T('6.097001595334722255599827169e+1', '-1.27e+1', '73.67001595334722255599827169'); + T('2.5862383503225371e+9', '-5.1214922610895542e-1', '2586238350.83468632610895542'); + T('2.231e+1', '2.117312218972605e+5', '-211708.9118972605'); + T('3.80021425650817317250555e+13', '-1.93695171769468e+11', '38195837736851.1997250555'); + T('-7.810946417020212022651917386e+18', '2.290482727614761942741662e+7', '-7810946417043116849.92806500542741662'); + T('3e+0', '-2.2205773655663464012097e-6', '3.0000022205773655663464012097'); + T('3.64246615622912558467016935e+26', '0e+0', '3.64246615622912558467016935e+26'); + T('3.77e+3', '-1e+0', '3771'); + T('-3.58605723986826101196397318e+26', '-1.485e+2', '-3.586057239868261011963971695e+26'); + T('-3e+0', '1.40899579022e+11', '-140899579025'); + T('-1.45909430175366456235718665e+19', '-3.4261617579351795158e+18', '-11164781259601466107.7718665'); + T('-2.348189590117898492617e+8', '2.878559430244312e+14', '-287856177843390.2117898492617'); + T('-9.7e+0', '2.690189646188e+1', '-36.60189646188'); + T('1.36455632e-1', '2.93006388540946905134174872e+13', '-29300638854094.5540577854872'); + T('4.048592176739e-20', '-6.005127e+2', '600.51270000000000000004048592176739'); + T('-2.566085007096806352945241e+6', '1.0191e-13', '-2566085.007096806353047151'); + T('-3.31696e+2', '6.3e+1', '-394.696'); + T('4.1079014482683004e+8', '6.4446707e+7', '346343437.82683004'); + T('-1.577640941527783e+9', '1.27337662718184094697659300437e-5', '-1577640941.5277957337662718184094697659300437'); + T('2.7420244617713377e+16', '-8.623235881e-16', '27420244617713377.0000000000000008623235881'); + T('2.13592440096179687295287e+23', '-5.24330594e+5', '2.13592440096179687819617594e+23'); + T('4.5966088142543734664499633e-4', '1.9622997228567688328e+13', '-19622997228567.68786833911857456265335500367'); + T('-2.003763953536177099e+9', '9.92e-20', '-2003763953.5361770990000000000992'); + T('1.549844513583e+5', '2.12886113900670758986381e+14', '-212886113745686.307628081'); + T('-5.035786855374e+12', '1.5195491474751e+13', '-20231278330125'); + T('-8.837922375208113241898942499e+23', '4.91312103789241e-17', '-8.837922375208113241898942499000000000000491312103789241e+23'); + T('5.28121115884713e+6', '9.35111e+2', '5280276.04784713'); + T('7.0534112016532323024600701578e+21', '2.158e+0', '7.0534112016532323024579121578e+21'); + T('-1.22304768148016734601138489e+20', '9.08133282381327051184228774e+26', '-9.08133404686095199200963375138489e+26'); + T('1.899e-6', '2.153419180764601e+10', '-21534191807.646008101'); + T('-5.650839046342472094e+5', '5.0808365974271307182e+8', '-508648743.6473473190294'); + T('-9.4e+1', '-2.6927013e+0', '-91.3072987'); + T('-6.571708892881e+12', '-8.545294322652905079217675482e+19', '85452936654820157911.17675482'); + T('-1.76782224366755e+10', '-4.13948649746403e+10', '23716642537.9648'); + T('-5.54107604714186288144437e+7', '-4.96270174556976430531733658389e+25', '4.96270174556976429977626053674813711855563e+25'); + T('-9.978651982580698767e+16', '-6.954508412732601e+0', '-99786519825806980.715491587267399'); + T('1.8693160127470428298008436e-4', '1.547218677067e+11', '-154721867706.69981306839872529571701991564'); + T('-1.38945385393184793207e+20', '1.37289934375618017208481128e+20', '-276235319768802810415.481128'); + T('-2.03189937609562003767063412e-3', '1.50517775495e+11', '-150517775495.00203189937609562003767063412'); + T('5.37526674392168e+11', '6.281346735299e+9', '531245327656.869'); + T('-3.1901487e+4', '-2.47278901189761333644390687e-17', '-31901.4869999999999999752721098810238666355609313'); + T('1.911067e+3', '1.63809954792658e+10', '-16380993568.1988'); + T('-6.262e+0', '-4.732755159790421866759181099e+12', '4732755159784.159866759181099'); + T('1.9922595737406200707054959707e+19', '1.5757171e+0', '19922595737406200705.479242607'); + T('-4.20463196e+6', '-5.39927e+4', '-4150639.26'); + T('5.698457e+5', '0e+0', '569845.7'); + T('-2.3755793e+6', '-3.03634360026652225878481594e-5', '-2375579.2999696365639973347774121518406'); + T('-1.2540612364355e+13', '-9.7056758273427691e-14', '-12540612364354.999999999999902943241726572309'); + T('7e+0', '-2.1217135735760987306431493773e+10', '21217135742.760987306431493773'); + T('-1.878187232e+1', '1e+0', '-19.78187232'); + T('4.083686618644527491e+14', '-1.0207e-8', '408368661864452.749100010207'); + T('1.936437398920283252217215e+7', '-1.426953028e+1', '19364388.25873311252217215'); + T('-5.36e+1', '-3.270440850977315671331954027e+27', '3.2704408509773156713319539734e+27'); + T('-5e+0', '3.9771e+4', '-39776'); + T('-1.41165283690117849025039415809e+15', '9.2653033582808e+1', '-1411652836901271.14328397696609'); + T('1e+0', '5.853518072e+8', '-585351806.2'); + T('9.28866302211484528e-16', '3.42924e+3', '-3429.239999999999999071133697788515472'); + T('1.5141918664046020576449895893e+12', '-1.61e+2', '1514191866565.6020576449895893'); + T('1.38289322288900523715e+1', '7.080258718068754274828878e+11', '-708025871793.0464952539977476285'); + T('4.021120497e+9', '-3.58323864641440176097e+12', '3587259766911.40176097'); + T('3.9109896247281e+5', '-7.7768225519466054995224860986e+28', '7.776822551946605499522525208496247281e+28'); + T('5.52e-6', '1.34849494404812613034319555618e+29', '-1.3484949440481261303431955561799999448e+29'); + T('2.0537e-20', '-6.4758411334071e+7', '64758411.334071000000000000020537'); + T('-3.1417778482733028111928e-15', '3.3188180849003762977741480641e+28', '-3.31881808490037629777414806410000000000000031417778482733028111928e+28'); + T('-8.744874784408647631e+0', '2.135742081446470378868598e+24', '-2.135742081446470378868606744874784408647631e+24'); + T('4.84800483e+2', '3.91e+1', '445.700483'); + T('-3.7016741e-12', '-4.1497617308e-1', '0.4149761730762983259'); + T('-6e+0', '-6.8805897379338e+13', '68805897379332'); + T('6.250477943675354e+3', '-2e+0', '6252.477943675354'); + T('6.3749589779023191251153515e+1', '-5.20173903691687372543e+3', '5265.488626695896916681153515'); + T('-6.6824849945959e+13', '3.901733743171141119056850874e+27', '-3.901733743171207943906796833e+27'); + T('-2.0817240249744817154064994e+21', '5.985e+1', '-2.0817240249744817154663494e+21'); + T('-2.9323306082438653e-1', '-4.051822836352475688965270021e+15', '4051822836352475.39573220919661347'); + T('1.41083866e+7', '1.222938e+6', '12885448.6'); + T('-2.685513393949e+6', '3.6665913622890279695898073188e+8', '-369344649.62285179695898073188'); + T('2.1722453e+3', '5.27433180346789078179e+12', '-5274331801295.64548179'); + T('1.82945984e+1', '2.84080338471485422824162e+7', '-28408015.5525501422824162'); + T('3.8282192270741792760092388e-2', '-1.034837658465e+2', '103.522048038770741792760092388'); + T('5.90588e+0', '3.041191e+2', '-298.21322'); + T('-3e+0', '-2.22554559e+2', '219.554559'); + T('-1.58686397805828293e-1', '-2.50678032123148961445e+20', '250678032123148961444.841313602194171707'); + T('6.9731426202279009749874e+16', '-6.8033025527322349e+3', '69731426202285813.0524267322349'); + T('-3.5288065255382459e+8', '4.319711887733e-5', '-352880652.55386778711887733'); + T('-3.861521213463773165e+10', '2.1786e+4', '-38615233920.63773165'); + T('1.712e+2', '1.34100827765345675353094e-1', '171.065899172234654324646906'); + T('5.78089955830190857610305894e+1', '6.36549849502761e+4', '-63597.1759546930809142389694106'); + T('-2.044680654381125e+11', '-1.96641728023668398742736257646e+29', '1.966417280236683985382681922078875e+29'); + T('-2.9076e+1', '-2.7871249e+7', '27871219.924'); + T('1.0798349049680377701191303e+1', '-1.28969281e+7', '12896938.898349049680377701191303'); + T('-5.84e+0', '4.096887717702998692e-5', '-5.84004096887717702998692'); + T('-4.444975675033721e-1', '-3.1452254562577476e+0', '2.7007278887543755'); + T('1.183597e-16', '-8.2003e+2', '820.0300000000000001183597'); + T('4.08955925538021395e-9', '0e+0', '4.08955925538021395e-9'); + T('-8.518844894710593442e+7', '8.021e+1', '-85188529.15710593442'); + T('2.68232609980658991729575880176e+0', '0e+0', '2.68232609980658991729575880176'); + T('4.4477770435926438470217122e+8', '5.12429681263e+7', '393534736.23296438470217122'); + T('1.6841448787702267666418174e-17', '-1.2182119751289e+1', '12.182119751289000016841448787702267666418174'); + T('-2.2729761e+5', '-4.46452153e+0', '-227293.14547847'); + T('1.0246412734413008e-11', '4.66232758476e-16', '1.0245946501654532e-11'); + T('-2.68821719678017623378e-19', '3.39024822961193e-2', '-0.033902482296119300268821719678017623378'); + T('1.853752578428008999076e+6', '2.3969844952707427e-18', '1853752.5784280089990759976030155047292573'); + T('7.61e+2', '2.4131847562072898e+13', '-24131847561311.898'); + T('3.109821644875197306e-16', '1.606639839e-19', '3.108215005036197306e-16'); + T('-6.1011e+3', '3.906986073489232797471e+9', '-3906992174.589232797471'); + T('9e+0', '6.09778743145589590112609339e-2', '8.9390221256854410409887390661'); + T('-2.33021e-12', '-5.805032816747e+12', '5805032816746.99999999999766979'); + T('5.785870917e+2', '2.8947e+4', '-28368.4129083'); + T('4.9138011093118555140264508438e+1', '-2.688188222207754803e-17', '49.13801109311855516714639066007754803'); + T('6.86328788e-20', '-1.0903e-4', '0.0001090300000000000686328788'); + T('-1.5222667065790299e-10', '-5.30045567313202177385949422e+8', '530045567.31320217723372275134209701'); + T('2.102091e+0', '-2.69376496330958751240504762e+26', '2.69376496330958751240504764102091e+26'); + T('3.944367498734539718e+1', '-1.46339226240020591588421e+15', '1463392262400245.35955919734539718'); + T('5.7233801647184e+10', '-6.5e+0', '57233801653.684'); + T('-3.803540018773522987078e-15', '-4.8838714337004857737078494e+4', '48838.714337004857733274953981226477012922'); + T('2.4743428039e+9', '-7.150348863482e+2', '2474343518.9348863482'); + T('-4.72e+0', '-2.74711687758923547052379498e+0', '-1.97288312241076452947620502'); + T('-7.65e+1', '-1.3497715e+5', '134900.65'); + T('-1.302284775e+7', '-5.259e-14', '-13022847.74999999999994741'); + T('-7.9577e+4', '-2e+0', '-79575'); + T('6.36947759756484191820773706e+10', '-5.37489619395631884896608e+10', '117443737915.2116076717381706'); + T('2.8137158805278468362788e-15', '1.45644e+3', '-1456.4399999999999971862841194721531637212'); + T('2.214e+0', '-7.164325571694427826653861996e+15', '7164325571694430.040653861996'); + T('-3.80573224245e+11', '6.30327705991065191e+18', '-6303277440483876155'); + T('-1.3156481902267089e+3', '-3.987e+3', '2671.3518097732911'); + T('-2.473947689670568922810605185e+3', '-5.9864037611282e+7', '59861563.663592329431077189394815'); + T('1.1001731e+7', '-9.2848140928651653621884e+0', '11001740.2848140928651653621884'); + T('-9.8044989570620753370567373e+7', '-1.17e+1', '-98044977.870620753370567373'); + T('-3.7000443862e+1', '-1.9192804071866287509957721855e+12', '1919280407149.6283071337721855'); + T('-9.5557565112682694e+1', '-1.139475090734929511787e+21', '1.139475090734929511691442434887317306e+21'); + T('-9.36659e+4', '-2.2488368141052655e-10', '-93665.89999999977511631858947345'); + T('0e+0', '-1.96659668503522757503562e+15', '1966596685035227.57503562'); + T('-2.46588281577379345e+9', '-1.52735567584678502576392632012e+9', '-938527139.92700842423607367988'); + T('1.116693556411266004e+13', '8.181470064283092308441666e+0', '11166935564104.478569935716907691558334'); + T('1.42867858509369e+11', '6.36335708310839028e+14', '-636192840452329.659'); + T('9.46345944e-20', '4.09009002345797e+0', '-4.0900900234579699999053654056'); + T('0e+0', '-5.752093e-16', '5.752093e-16'); + T('0e+0', '-7e+0', '7'); + T('6.671e+1', '-5.22802396973925929e+6', '5228090.67973925929'); + T('3.80635453384970742358475002e+21', '1.6514766472479832640394018164e+1', '3.806354533849707423568235253527520167359605981836e+21'); + T('3.909e+1', '-3.0330657786e-7', '39.09000030330657786'); + T('-4.177266320643e+2', '4.36481347232e+5', '-436899.0738640643'); + T('-1.93e-3', '4.44897e+4', '-44489.70193'); + T('-8.493203254439607467238e+13', '3.780960689802534388741349e+4', '-84932032582205.68157040534388741349'); + T('-8.62e+2', '-1.21242637514496e+9', '1212425513.14496'); + T('-2.034125439802066e+1', '1.041223699e+0', '-21.38247809702066'); + T('-1.8756615731747938145167676e+9', '-5.9079882582580697796179e+17', '590798823950145404.7869961854832324'); + T('-7.68665407063362e-12', '2.68347734852e+3', '-2683.47734852000768665407063362'); + T('-2.5e-9', '1.0094051112011317e+2', '-100.94051112261317'); + T('-2.273663293572256347483e+16', '-2.0246e-14', '-22736632935722563.474829999999979754'); + T('-4.8958e+1', '-1.18656711e+8', '118656662.042'); + T('-1.1921912260356353311433328e+25', '-6.7981248360658545755979997e+4', '-1.1921912260356353311365346751639341454244020003e+25'); + T('-6.849149772761089815191e+18', '5.24560558802513e+14', '-6849674333319892328.191'); + T('2.99306425443292501e+17', '2.8e+1', '299306425443292473'); + T('2.5471860004e+9', '-4.98536550694988897317422126e-12', '2547186000.40000000000498536550694988897317422126'); + T('-1e+0', '2.54e+1', '-26.4'); + T('1.814452890048444838634591e+17', '3.50190331311817e+6', '181445289001342580.55034093'); + T('-3.740775006407299187613971e+21', '-6.411975563570869469e+1', '-3.74077500640729918754985124436429130531e+21'); + T('7.68508730852e+3', '-6e+0', '7691.08730852'); + T('-4.97430855e+5', '-1.74704104775e+3', '-495683.81395225'); + T('-2.25986972303734e-18', '-3.563603e+5', '356360.29999999999999999774013027696266'); + T('7.300705399e+0', '-2.68400174895358537123619e+2', '275.700880294358537123619'); + T('-7.4583833263680087e+11', '9.53468014076291e+9', '-755373012777.56378'); + T('8.9104e+4', '-6.4430091336482802107567729773e+3', '95547.0091336482802107567729773'); + T('2.34280052861242466e-1', '0e+0', '0.234280052861242466'); + T('7.269051098e+8', '-3.4459676199e+4', '726939569.476199'); + T('-3.211997876e+3', '-9.38450118638793709019229e+14', '938450118635581.711143229'); + T('7.7969891679461230711262e+22', '7.69e+0', '7.796989167946123071125431e+22'); + T('1.097e+0', '-4.6249580639699552947992543e-20', '1.097000000000000000046249580639699552947992543'); + T('-6e+0', '-1.456695321775709567231919891e+20', '145669532177570956717.1919891'); + T('3.8834077979e+6', '-1.95675144721034531902e-6', '3883407.79790195675144721034531902'); + T('-1.6658487619383064e+2', '3.100133628146717733340869e+7', '-31001502.86634337116404869'); + T('-1.4005754211993309661536063e-14', '-8.84275e+4', '88427.499999999999985994245788006690338463937'); + T('-1.3403661333569183042528493e+25', '-2.16701427914547231e+16', '-1.34036613118990402510737699e+25'); + T('2.6104592333650733834147661141e+8', '5.5581589300093249719048e+21', '-5.55815893000906392598146349266165852338859e+21'); + T('5.315518589225007574739350338e-12', '5.299157680175e-14', '5.262527012423257574739350338e-12'); + T('-2.17607896075487810392093064e+0', '-4.372277792215178893233e+16', '43722777922151786.75625103924512189607906936'); + T('-1.1360680787648690671166707184e+0', '6.64626014583885222275e+5', '-664627.1506519639871440671166707184'); + T('-4.322698247e+9', '7.5666e+0', '-4322698254.5666'); + T('7.329582e+2', '1.1e+0', '731.8582'); + T('4.70556124361e+0', '1.9128794148091e+7', '-19128789.44252975639'); + T('-1.664718e-15', '-2e+0', '1.999999999999998335282'); + T('-2.3441520698096713166992980212e+28', '-2.45124495841653227069e-11', '-2.34415206980967131669929802119999999999754875504158346772931e+28'); + T('1.08447643843924835e+14', '4.629055171533282139112789e-9', '108447643843924.834999995370944828466717860887211'); + T('-2.56258604619015315966e+3', '-2.033704783173576458375994e+19', '20337047831735762021.17389380984684034'); + T('-5.86438097577803988896572e-1', '3.9380601967502959955e+11', '-393806019675.616037647577803988896572'); + T('0e+0', '3.50862e+6', '-3508620'); + T('5.16326e-10', '-4.653750284661785074950340187e-4', '0.0004653755447921785074950340187'); + T('2.448434809857e+3', '9.861166640454948250573581e+13', '-98611666402101.04769587881'); + T('-1.377207013806422897185e+8', '2.93868995004852419030725393e+26', '-2.938689950048524191684460943806422897185e+26'); + T('-1.21087028473668e-15', '-1.79392219447388957457557920332e+16', '17939221944738895.74575579203319878912971526332'); + T('7.1194812461460298471228e+22', '-3.11548104971e+6', '7.119481246146030158670904971e+22'); + T('-7.9973363706063079e+1', '-4.18e+1', '-38.173363706063079'); + T('-3.4658e+3', '-1.50428792912533108828785e+14', '150428792909067.308828785'); + T('-5.43e+1', '1.08e+1', '-65.1'); + T('-3.958612981624798584713e+21', '1.905323655927183e+11', '-3.9586129818153309503057183e+21'); + T('-6.05e+0', '7.113109139228e+12', '-7113109139234.05'); + T('-4.668265354520068e+15', '-3.4465582208309591e-8', '-4668265354520067.999999965534417791690409'); + T('-2.771846365e+5', '-2.5244589e+4', '-251940.0475'); + T('1.11530656435193641253e+18', '-3e+0', '1115306564351936415.53'); + T('-1.05624e+6', '-3.9048304233341053516492008879e-20', '-1056239.999999999999999999960951695766658946483507991121'); + T('1.0127e+0', '-3.135359936645349731157475112e-13', '1.0127000000003135359936645349731157475112'); + T('2.2181732450662751e+7', '4.985e+2', '22181233.950662751'); + T('-1.458218486287662421604e+16', '8.6772071348685837314014362447e+3', '-14582184862885301.4231748685837314014362447'); + T('-5.2949825314874e+13', '-1.34587e+5', '-52949825180287'); + T('2.7853732e+3', '-2.8992603343141478e+3', '5684.6335343141478'); + T('1.0093686351168e-16', '2e+0', '-1.99999999999999989906313648832'); + T('-2.69782596422e+5', '9.281e+1', '-269875.406422'); + T('-8.4892243734618044988822527303e+28', '-1.093399419157518929e+15', '-8.4892243734616951589403369784071e+28'); + T('-2e+0', '-9.8226109e+7', '98226107'); + T('-7.91355730171712559764046812857e+29', '3.738879817007584795015696e-16', '-7.913557301717125597640468128570000000000000003738879817007584795015696e+29'); + T('-7.20113991704e+6', '3.766628446721078627562e+2', '-7201516.5798846721078627562'); + T('8.09195711497727858010623376e+2', '-2.299005549455463322634739396e-2', '809.21870155322241264384972339396'); + T('7.1e-16', '1.34172774450117955431064868e+26', '-1.3417277445011795543106486799999999999999929e+26'); + T('2.479213128129e+12', '-4.3266851790425848916602875204e+19', '43266854269638977045.602875204'); + T('-5.167953131767e-17', '1.089636317069144688e+0', '-1.08963631706914473967953131767'); + T('-1.043599533780483997e+8', '-8.4604453857096e+13', '84604349497142.6219516003'); + T('-9.86113e-3', '5.25012650031541380643072e+14', '-525012650031541.390504202'); + T('-4.607800742854309e-16', '6.629214050478863773e+7', '-66292140.5047886377300004607800742854309'); + T('-7.0726129234663936285e+0', '5.1813062685268139626360921992e+0', '-12.2539191919932075911360921992'); + T('-9.59114856809630214548e-16', '8.19552038958943023267524e+23', '-8.19552038958943023267524000000000000000959114856809630214548e+23'); + T('-6.1160705538571976049e+19', '-1.5e-14', '-61160705538571976048.999999999999985'); + T('-5.20340090331936061e-19', '-6.8907407213853599371e+12', '6890740721385.359937099999999999479659909668063939'); + T('3.266e-6', '-1.178352424764155283425353405e+3', '1178.352428030155283425353405'); + T('-4.88224490036702e+6', '2.067e+2', '-4882451.60036702'); + T('1.01802113642363671778919360155e+10', '-6.088e-5', '10180211364.2364280578919360155'); + T('3.210380386593524862226e+16', '2.8740812364241127382e+17', '-255304319776476025.19774'); + T('-1.465851233021161325672097e+24', '1.2772576319289909484700907499e+28', '-1.2774042170522930646026579596e+28'); + T('-3.7269879590593e-13', '-1.89917687e+2', '189.91768699999962730120409407'); + T('-3.54751669e-4', '1.507681824540198379007387131e-20', '-0.00035475166900000001507681824540198379007387131'); + T('8.6e+0', '-1.718010447132363e+14', '171801044713244.9'); + T('-1.523861475830427411616557095e-1', '-1.4263256386185266172813e-16', '-0.15238614758304259852909184764733827187'); + T('-3.0492e+4', '-3.19247471953735496043e+16', '31924747195343057.6043'); + T('1.64e+1', '-2.300091101743972533e+2', '246.4091101743972533'); + T('-8.4166616e-14', '-1.08365043381515665671178336e+3', '1083.65043381515657254516736'); + T('2.834233434423066e-3', '1.5147922394810634456e+19', '-15147922394810634455.997165766565576934'); + T('9.809683833546843226149927904e+7', '-7.04744e+1', '98096908.80986843226149927904'); + T('-2.78659733581828216291e-6', '3e+0', '-3.00000278659733581828216291'); + T('1.88550609258935040490277736481e+21', '-2.0139e+4', '1.88550609258935042504177736481e+21'); + T('-2.961956555914393326e+9', '-1.736319970053323220680261e+17', '173631994043375766.153632774'); + T('1.1511839112e+10', '6.1439877305045904627491e+21', '-6.1439877304930786236371e+21'); + T('-2.6e+0', '-2.49048e-15', '-2.59999999999999750952'); + T('-5.48e+0', '2.4e+0', '-7.88'); + T('-8.281668732400133e-7', '3.4802271248601324e+13', '-34802271248601.3240008281668732400133'); + T('5.4692910497907010278816248427e-19', '-3.995182600549255e+6', '3995182.60054925500000000054692910497907010278816248427'); + T('-4e+0', '-2.6796842621783387684139e-8', '-3.999999973203157378216612315861'); + T('-1.2503809566311e-14', '-4.194893531803037022861e+13', '41948935318030.370228609999987496190433689'); + T('8.20101101549315479737983e+23', '-6.21887189572000039915995509e+29', '6.21888009673101589231475246983e+29'); + T('-8.49630557904938058714202e+2', '-9.656431846752105646935065749e+12', '9656431845902.475089030127690285798'); + T('4.709804775734875967339134e-13', '-5.238417348338395e+4', '52384.1734833839504709804775734875967339134'); + T('3.215642768985439973e+18', '-6.47876e+2', '3215642768985440620.876'); + T('1.057e+3', '5.4e-14', '1056.999999999999946'); + T('-1.27406478713275073021e+15', '-4.95098112170149342507601184272e+29', '4.9509811217014806844281405152126979e+29'); + T('-2.47741050648e-6', '2.867648067351452617036e+9', '-2867648067.35145509444650648'); + T('9.683330132790537859047707237e+27', '1.4e-13', '9.68333013279053785904770723699999999999986e+27'); + T('1.8191377569793603e+1', '-2.22262592888890757e+16', '22226259288889093.891377569793603'); + T('-2.647537436000328921472e+19', '1.73756170770793102269901e-4', '-26475374360003289214.720173756170770793102269901'); + T('3.9166725e+1', '-3e+0', '42.166725'); + T('-6.896e+2', '-2.4697e+3', '1780.1'); + T('3.049991467813178e-17', '9.921359715790652629887e-6', '-0.00000992135971576015271520886822'); + T('0e+0', '-1.014702489558798e+11', '101470248955.8798'); + T('3.63e-1', '-9.504114905372600685531012901e+7', '95041149.41672600685531012901'); + T('1.43e+0', '1.032179739e+4', '-10320.36739'); + T('6.002271250385225215266404e-20', '1.198673608430859644679301e+24', '-1.19867360843085964467930099999999999999999993997728749614774784733596e+24'); + T('-8.165072327377418555e+1', '1.15946801209912e+14', '-115946801209993.65072327377418555'); + T('-2.855963912187238e+15', '-2.34813677339491877e-20', '-2855963912187237.9999999999999999999765186322660508123'); + T('4.7139819451281756523160792425e+8', '1.711815969456703e+12', '-1711344571262.19018243476839207575'); + T('3.51917952e+0', '-1.9090638600782859881987727e-9', '3.5191795219090638600782859881987727'); + T('-1.101278668075627123510003e+3', '3.23115293065e-14', '-1101.2786680756271558215323065'); + T('3.1909723769e+4', '-1.7298288176e+4', '49208.011945'); + T('-9.30120609629212846377709e-16', '8.055569687891446e+0', '-8.055569687891446930120609629212846377709'); + T('-7.474064e+1', '-4.271718880894195123e-6', '-74.740635728281119105804877'); + T('-1.621114105166716832660982e+9', '-7.814354217e+7', '-1542970562.996716832660982'); + T('-3.338943287283e+12', '1.245463771082e+7', '-3338955741920.71082'); + T('2.1732853867827159984017e-12', '-5.54912539966658289e+7', '55491253.9966658289021732853867827159984017'); + T('-2.878598492994e+9', '-5.57847e+3', '-2878592914.524'); + T('-1.12e+3', '3.5382811477716371e-9', '-1120.0000000035382811477716371'); + T('3.6386011498e-2', '-5.6384769154648814041207571e-18', '0.0363860114980000056384769154648814041207571'); + T('-1.890178944623951306311749095e+16', '-1.01868789996777383e+16', '-8714910446561774.76311749095'); + T('8.76907e+2', '-3.0262476312e+6', '3027124.5382'); + T('-4.2809356122824992293797e-6', '-9.5432581914885e-3', '0.0095389772558762175007706203'); + T('2.613634e+6', '0e+0', '2613634'); + T('-2.31839833569e-6', '1.324426936e-19', '-0.0000023183983356901324426936'); + T('-1.10399938484009e+1', '1.85186916549461617452156387962e+2', '-196.226910397862517452156387962'); + T('-2.75009407098166054593418e+23', '-4.97e+1', '-2.750094070981660545933683e+23'); + T('6.61314773892e+8', '1.16976318594169000300606933902e+3', '661313604.12881405830999699393066098'); + T('-1.65790748026635119525e+19', '1.13625143013338763e-18', '-16579074802663511952.50000000000000000113625143013338763'); + T('1.63212008e+0', '-6.5032932718736077532455e+5', '650330.95930744077532455'); + T('-8.590257420137321035e+2', '-1.4660197718643934781936e+1', '-844.365544295088168718064'); + T('-3.6e+0', '-6.453e-9', '-3.599999993547'); + T('6.875e+2', '2.496601459911533840095e-1', '687.2503398540088466159905'); + T('-3.4091253800019e+10', '5.06219863404e+11', '-540311117204.019'); + T('2.387640687847751e-9', '-7.507348694854873e+1', '75.073486950936370687847751'); + T('2.358337603147636672593e+20', '-5.29206788288316214838405e+3', '235833760314763672551.36788288316214838405'); + T('8.4460769897709104577e+2', '-1.15924234770358e+7', '11593268.08473477709104577'); + T('-2.8e+0', '-1.5677449559023e+12', '1567744955899.5'); + T('-3.826911067801817992605e+13', '-2.1058817772376e-17', '-38269110678018.179926049999999978941182227624'); + T('-1.69888440840703020274433621314e+3', '1.062612513780848e+14', '-106261251379783.68440840703020274433621314'); + T('1.648578064349849e+13', '-1.21870444531163389687261e+5', '16485780765368.934531163389687261'); + T('2.800963824434122005e+17', '7.48550615366110606948944e+18', '-7205409771217693868.98944'); + T('-1.204700704881831924047852e+4', '4.1180094e+8', '-411812987.00704881831924047852'); + T('-6.25e+0', '-2.76872444100293e-3', '-6.24723127555899707'); + T('-1.017210130108320604980095901e+6', '4.176006246137492e+5', '-1434810.754722069804980095901'); + T('4.1443694206107e+13', '6.12963489e+6', '41443688076472.11'); + T('1.9e-17', '-7.420644757780278e+11', '742064475778.027800000000000019'); + T('8.1905699267317e+2', '-4.97714998177821e+13', '49771499818601.15699267317'); + T('-9.30893198737591725124852e-6', '4.7833151233848e+8', '-478331512.33848930893198737591725124852'); + T('-1.81958867206789289436468142851e+23', '-3.097e-2', '-1.81958867206789289436468111881e+23'); + T('-1.444361606243966e+3', '-3.956649026995563806968275e+24', '3.956649026995563806966830638393756034e+24'); + T('-5e+0', '1.12518838778955247e+6', '-1125193.38778955247'); + T('1.63068443484005465679998399962e+10', '5.74911714044959689e+11', '-558604869696.5591424320001600038'); + T('2.76768430312670672e+11', '-3.509356457052e+6', '276771939669.127724'); + T('-4.7752e+2', '-1.66411766445e-11', '-477.5199999999833588233555'); + T('2.92062139592881e+4', '7.5417235168554886240845487e+25', '-7.54172351685548862408162807860407119e+25'); + T('-3.44544937179490458706e+21', '-6.4975e-20', '-3.445449371794904587059999999999999999999935025e+21'); + T('1.67e+0', '4.0077e+3', '-4006.03'); + T('1.6243825105e+10', '-1.0098e-8', '16243825105.000000010098'); + T('-5.9619584679887e-7', '9.66507394754761256582e+0', '-9.66507454374345936469'); + T('1.80193e+0', '5.50148888976681094630325187e+26', '-5.5014888897668109463032518519807e+26'); + T('1.160439596351493417e+12', '0e+0', '1160439596351.493417'); + T('4.0943062e+3', '-1.663541448179706e+1', '4110.94161448179706'); + T('-1e+0', '-3.35949335221661870210955798738e+27', '3.35949335221661870210955798638e+27'); + T('9.26520428366e-14', '2e+0', '-1.9999999999999073479571634'); + T('-1.824416684e+5', '3.45961e+4', '-217037.7684'); + T('1.13072307e-4', '-3.34360798215590565e+15', '3343607982155905.650113072307'); + T('-2.17632297389949094797657e+23', '1.19e+0', '-2.1763229738994909479765819e+23'); + T('-1.573702e+6', '-1.25528655078116284599e+4', '-1561149.1344921883715401'); + T('6.64914341532954197034212171e+13', '-2e+0', '66491434153297.4197034212171'); + T('4.83091120908653225429424458e+26', '-1.187019616662875213797e+16', '4.8309112092052342159605321013797e+26'); + T('-2.2287372197e+10', '-6.1022242482e+5', '-22286761974.57518'); + T('9.86041489707e+10', '6.466463546e+2', '98604148324.0536454'); + T('1.576597918713765858286e+19', '5.733014936878637e-11', '15765979187137658582.85999999994266985063121363'); + T('-1.66885015827009e+9', '-1.0080560673990663464633e+2', '-1668850057.46448326009336535367'); + T('9.464436245828899351275554369e+26', '1.096e+3', '9.464436245828899351275543409e+26'); + T('2.443594208008465567246e+15', '-4.554332290621012278987216e+6', '2443594212562797.857867012278987216'); + T('5.633400747825031776e+9', '3.7814892610756903304424493614e+28', '-3.7814892610756903298791092866174968224e+28'); + T('4.58055e-16', '-2e+1', '20.000000000000000458055'); + T('5.8468767369534498129149668101e+21', '-6.216283e+1', '5.8468767369534498129771296401e+21'); + T('2.821e+1', '-9.2972318416976897120959e-7', '28.21000092972318416976897120959'); + T('1.1716e+4', '-3.117484326301445402577599e+5', '323464.4326301445402577599'); + T('3.99770350169601009505e+9', '1.24807913187467085161e+12', '-1244081428372.97484151495'); + T('-4.33494867e+1', '1.86891793238107724209212e+23', '-1.868917932381077242092553494867e+23'); + T('-1.49454787799250031e-14', '3.530543e+4', '-35305.4300000000000149454787799250031'); + T('4.17405829e+7', '-1.101329481059979917182595274247e+30', '1.1013294810599799171826370148299e+30'); + T('-8.233e-4', '-4.3503021e-3', '0.0035270021'); + T('1.54205169188e+11', '-1.184e+0', '154205169189.184'); + T('8.47800873e+2', '-1.782e+2', '1026.000873'); + T('-6.3788050181391747328e-14', '-1.37296254009260334434e+20', '137296254009260334433.999999999999936211949818608252672'); + T('-2.3187272390455607805797367e-15', '3.03283266313882322447430852e-7', '-3.032832686326095614929916325797367e-7'); + T('4.3489421504381358410994764309e-17', '4.84138351196e-18', '3.8648037992421358410994764309e-17'); + T('-4.5630374165368095e+10', '8.62482790372860322202392e+23', '-8.62482790372905952576557368095e+23'); + T('-1.25355946295e+11', '-3.311539940149343915869e+1', '-125355946261.88460059850656084131'); + T('-4.7415711963385615707e+16', '-1e+0', '-47415711963385614.707'); + T('4.458641e-16', '-3.8021524504141994601653134206e+4', '38021.524504141994602098998306'); + T('3.8057808011e-1', '9.59582e-8', '0.3805779841518'); + T('2.340942415924217e-10', '-3e+0', '3.0000000002340942415924217'); + T('0e+0', '-1.3748e+4', '13748'); + T('-3.634008711669113e-7', '-5.865299497e+9', '5865299496.9999996365991288330887'); + T('1.39690641e+3', '7.12382644256362362011e-19', '1396.906409999999999999287617355743637637989'); + T('-6.52e-7', '-5.4715e+4', '54714.999999348'); + T('6.56e+0', '-8.1504302966189587144e+16', '81504302966189593.704'); + T('4.2093554363975272071207e-17', '1.223e+3', '-1222.999999999999999957906445636024727928793'); + T('-3.739622748318e+4', '-2.01200115180528303803076e+9', '2011963755.57779985803076'); + T('0e+0', '8.987465875243974e+15', '-8987465875243974'); + T('-6.4436e-16', '-1.9979e-1', '0.19978999999999935564'); + T('-1.01268732158001903838205690742e+4', '-4.7518687460936e+6', '4741741.8728777998096161794309258'); + T('0e+0', '-1.3030144588487978649e+10', '13030144588.487978649'); + T('-3.9e+0', '5.24670125e+8', '-524670128.9'); + T('3.8313670568933092257440033774e+17', '-5.741523524290048567e+2', '383136705689331496.7267527667448567'); + T('-2.56218040669566121e+12', '1.83637202203675e+8', '-2562364043897.864885'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js new file mode 100644 index 0000000..1f33a49 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js @@ -0,0 +1,1905 @@ +var count = (function mod(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(a, b, expected) { + assert(String(expected), String(new BigNumber(a).mod(new BigNumber(b)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing mod...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 0, N); + T(1, -0, N); + T(-1, 0, N); + T(-1, -0, N); + T(1, N, N); + T(-1, N, N); + T(1, I, 1); + T(1, -I, 1); + T(-1, I, -1); + T(-1, -I, -1); + assert(false, isMinusZero(new BigNumber(0).mod(1))); + assert(false, isMinusZero(new BigNumber(0).mod(-1))); + assert(true, isMinusZero(new BigNumber(-0).mod(1))); + assert(true, isMinusZero(new BigNumber(-0).mod(-1))); + T(0, 0, N); + T(0, -0, N); + T(-0, 0, N); + T(-0, -0, N); + T(0, N, N); + T(-0, N, N); + assert(false, isMinusZero(new BigNumber(0).mod(I))); + assert(false, isMinusZero(new BigNumber(0).mod(-I))); + assert(true, isMinusZero(new BigNumber(-0).mod(I))); + assert(true, isMinusZero(new BigNumber(-0).mod(-I))); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, N); + T(I, -1, N); + T(-I, 1, N); + T(-I, -1, N); + T(I, 0, N); + T(I, -0, N); + T(-I, 0, N); + T(-I, -0, N); + T(I, N, N); + T(-I, N, N); + T(I, I, N); + T(I, -I, N); + T(-I, I, N); + T(-I, -I, N); + + T(1, '0', N); + assert(false, isMinusZero(new BigNumber(1).mod(1))); + T(1, '-45', '1'); + T(1, '22', '1'); + T(1, 0144, '1'); + T(1, '0144', '1'); + T(1, '6.1915', '1'); + T(1, '-1.02', '1'); + T(1, '-1.02', '1'); + T(1, 2, '1'); + T(1, -2, '1'); + T(-1, 2, '-1'); + T(-1, -2, '-1'); + + // Due to Javascript's internal representation of 0.1 the next 4 results + // match BigDecimal's remainder method, but not Javascript's % operator: + // + // 1 % -0.1 // 0.09999999999999995 + // new BigNumber(1).mod(-0.1) // '0' + // + // 0.1.toFixed(18) // '0.100000000000000006' + // new BigNumber(1).mod('-0.100000000000000006') // '0.099999999999999946' + + T( 1, -0.1, '0'); // JS: 0.09999999999999995 + T(-1, -0.1, '0'); // JS: -0.09999999999999995 + T( 2, -0.1, '0'); // JS: 0.0999999999999999 + T(-2, -0.1, '0'); // JS: -0.0999999999999999 + + T( 2, -0.5, '0'); // JS: 0 + T(-2, -0.5, '0'); // JS: 0 + T(999.99, -0.99, '0.09'); + T(-999.99, -0.99, '-0.09'); + T(999.99, '3.01', '0.67'); + T(-999.99, '3.01', '-0.67'); + T(1, '0.09', '0.01'); + assert(false, isMinusZero(new BigNumber(1).mod('-0.0001'))); + assert(true, isMinusZero(new BigNumber(-0).mod(1))); + assert(true, isMinusZero(new BigNumber(-0).mod(0.1))); + assert(true, isMinusZero(new BigNumber('-0').mod('-1'))); + assert(true, isMinusZero(new BigNumber('-0').mod(Infinity))); + T(1, '8e5', '1'); + T(1, '9E12', '1'); + assert(false, isMinusZero(new BigNumber(1).mod('1e-14'))); + T(1, '3.345E-9', '6.1e-10'); + T(1, '-345.43e+4', '1'); + T(1, '-94.12E+0', '1'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '1'); + T(1, '4.001 ', '1'); + T(1, ' 4.001 ', '1'); + T(1, ' 4.001', '1'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, '1'); + T(1, Number.NEGATIVE_INFINITY, '1'); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, N); + T(0, '+0', N); + T('0', '0', N); + T(3, -0, N); + T(9.654, 0, N); + T(0, '0.001', '0'); + T(0, '111.1111111110000', '0'); + T(N, '0', N); + T(-1, 1, '0'); + T(-0.01, 0.01, '0'); + T(54, -54, '0'); + T(9.99, '-9.99', '0'); + T('0.0000023432495704937', '-0.0000023432495704937', '0'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', N); + T(3, -I, '3'); + T(-Infinity, -I, N); + T(-I, -Infinity, N); + T(I, '-999e999', N); + T('1.21123e43', -I, '1.21123e+43'); + T('-999.0', I, '-999'); + T('657.342e-45', -I, '6.57342e-43'); + T(I, 123, N); + T(-0, I, '0'); + T(100, 100, '0'); + T('10 ', 4, '2'); + T('03.333', -4, '3.333'); + T(43534.5435, '0.054645', '0.019545'); + T('99999', '1', '0'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '3'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-0.111', '21', '-0.111'); + T('0.000621', '-1', '0.000621'); + T('6.41', '11', '6.41'); + T('21', '11', '10'); + T('1531', '-11', '2'); + T('21', '-0.0161', '0.0056'); + T('-41', '-21', '-20'); + T('31', '-1', '0'); + T('31', '2.21', '0.06'); + T('-842658.56', '-19.52', '-19.2'); + T('-34.871', '-7325043345', '-34.871'); + T('78691958', '49006.018397', '37298.472815'); + T('-11618324684', '621.3', '-394.1'); + T('0', '69.07362125', '0'); + T('0.27474921216', '0.00000000002460017868', '2.224673016e-11'); + T('0', '59137483772', '0'); + T('-0.000000000000000000014634493', '-4.2', '-1.4634493e-20'); + T('-5.470', '-1.8989', '-1.6722'); + T('-95519.5319132', '4.1', '-1.8319132'); + T('43.257', '-4704608304', '43.257'); + T('-32128.403', '68263.11', '-32128.403'); + T('85.4005884', '-0.000000000000000010953667', '4.132633e-18'); + T('3197.909', '-10738864.39', '3197.909'); + T('1.03436722695', '2.6', '1.03436722695'); + T('-4', '-56.36464628', '-4'); + T('92.0618', '-454.866', '92.0618'); + T('-6.147123243', '-53259.9', '-6.147123243'); + T('-3', '-0.4911', '-0.0534'); + T('0', '-12.3', '0'); + T('-0.001713264153', '0.00000000000000000001843605', '-1.36779e-20'); + T('2', '-9325.1665961', '2'); + T('42016273.6500', '-122.861496017', '99.24210634'); + T('35.9', '3867744417', '35.9'); + T('0.000000000000000479760268839', '-209975.082', '4.79760268839e-16'); + T('0.0000000000000000000428713848', '3', '4.28713848e-20'); + T('0.000000000000000104698757876', '-15902.7654', '1.04698757876e-16'); + T('-4', '3124473.52104', '-4'); + T('-9.58', '1.00', '-0.58'); + T('79', '1', '0'); + T('0', '-0.0000000000013618', '0'); + T('1.55', '-31', '1.55'); + T('-2.6', '-13.58133', '-2.6'); + T('0', '90950', '0'); + T('-46.1', '61.8', '-46.1'); + T('-0.00000000000023461', '-0.00000000134', '-2.3461e-13'); + T('-9761.89778', '4645363921.75', '-9761.89778'); + T('0.000000000000000090372203', '0.00000322253', '9.0372203e-17'); + T('-23560577.226', '-0.5304109598', '-0.3270269352'); + T('-11752006.868', '0.003773', '-0.002016'); + T('0.000000036524', '-1.2', '3.6524e-8'); + T('4713.9562', '0.000000000000000000561', '2.23e-19'); + T('-351870798', '28.8', '-1.2'); + T('-4.6', '-0.00000000058', '-4.4e-10'); + T('-21863.82', '4214.9937962', '-788.851019'); + T('-30.221041721', '20401.1', '-30.221041721'); + T('-2.35', '3', '-2.35'); + T('64462', '90.840', '56.44'); + T('46', '433563.55477', '46'); + T('47852501568', '-147426331397', '47852501568'); + T('0', '3812504.1', '0'); + T('0.000000000000142963770', '1210345642.9', '1.4296377e-13'); + T('-0.0024002323743', '-0.000000000000000013220659', '-3.535752e-18'); + T('225.773', '66128.74787', '225.773'); + T('-158.4165', '12.78', '-5.0565'); + T('-21042099137', '10.935', '-4.565'); + T('32791.03', '411590460', '32791.03'); + T('-1984910.86246', '-153845.7', '-138762.46246'); + T('75010460639.6', '-0.00000000005103249', '2.835305e-11'); + T('-0.00000000000000025595509', '25.023', '-2.5595509e-16'); + T('-103052291', '-350.4', '-1.4'); + T('0.00000000000000015307870924', '-0.0000035499', '1.5307870924e-16'); + T('4402230', '122.112', '92.4'); + T('-3073677', '532.95653726', '-116.64962158'); + T('-0.026619162', '-0.00000000000000010', '0'); + T('0.000065666975666', '-6.558', '0.000065666975666'); + T('-3.3', '0.000000000033194405282', '-1.2721464422e-11'); + T('94101.0', '-810285.8180', '94101'); + T('229868', '9654.7078', '7809.7206'); + T('0.000000001926', '-0.00000000000000000005918', '2.562e-20'); + T('67', '0.00000006016496', '2.00248e-8'); + T('0.0000000000000000000832655', '-327907966408', '8.32655e-20'); + T('-1534', '-293318.339', '-1534'); + T('0.00000000000000000511522652', '-1145.46888006', '5.11522652e-18'); + T('0.00000000465574', '707.0', '4.65574e-9'); + T('0.230910067', '-1712.01', '0.230910067'); + T('-31874.7', '-2617976302', '-31874.7'); + T('22.8', '3819', '22.8'); + T('-0.0000015419', '329', '-0.0000015419'); + T('-9176.3441', '741523.991', '-9176.3441'); + T('-5.1103', '-25460.136', '-5.1103'); + T('15232730973', '-2.28', '1.32'); + T('0.081', '-1111.578', '0.081'); + T('3.1', '-42.207', '3.1'); + T('-0.000000000000000433', '0.00000000000000000254528412564', '-3.016986412e-19'); + T('-83943.1', '-4303134750', '-83943.1'); + T('19.825539', '4432543.44', '19.825539'); + T('-2416', '8097.16337', '-2416'); + T('-3.836', '0.00000823841385579', '-0.00000502522549283'); + T('2290356160', '-965232.20', '825381.6'); + T('1.12', '-35806.5278', '1.12'); + T('0', '-0.0000144726783', '0'); + T('-1571629111.33', '6.4736', '-3.8676'); + T('-0.0053778', '1.1', '-0.0053778'); + T('-0.0000013840', '-12.1', '-0.000001384'); + T('-22.9310218204', '-1.6843970', '-1.0338608204'); + T('-71.300', '-25.868806', '-19.562388'); + T('0.02847', '-63397392.02', '0.02847'); + T('-0.0000000000000331096', '0.00000183271', '-3.31096e-14'); + T('-27821115', '-34.83906', '-0.40734'); + T('0.000000000000436294954175', '-2261.01154', '4.36294954175e-13'); + T('45.86441', '-530611.936214', '45.86441'); + T('-1999679428', '0.00000000000000000002297558409', '-5.828173e-23'); + T('-105924.2800', '-426.10612', '-249.96224'); + T('754.9', '-1', '0.9'); + T('0.000000238266109662', '29355.83', '2.38266109662e-7'); + T('25.3', '-0.00000000000000086417416', '5.8408656e-16'); + T('-1261.3', '39.0', '-13.3'); + T('1.017', '-153', '1.017'); + T('27.690', '-21507592', '27.69'); + T('-2623.072516', '3.06', '-0.652516'); + T('91', '13034138.923', '91'); + T('-5212749.21', '-0.00000000000000000001986395', '-2.1827e-21'); + T('117.4212', '-29.978', '27.4872'); + T('-47179.732', '-77504621680', '-47179.732'); + T('0', '-3.7234', '0'); + T('443705716.830', '3024.9575', '1925.7725'); + T('-0.000000000000000000017191196518', '-14.725715414', '-1.7191196518e-20'); + T('30.4', '399719414108', '30.4'); + T('16145.97', '-48642', '16145.97'); + T('2765166', '-18.6825', '6.54'); + T('37.63', '-1284.342', '37.63'); + T('-0.0000000000000000000177845858', '0.0000005860954024', '-1.77845858e-20'); + T('-2.3', '2582.24565000', '-2.3'); + T('16.7', '-0.0000000017369', '1.362e-9'); + T('170180366706', '4626.181', '2388.659'); + T('-1404312.6', '-17000256053', '-1404312.6'); + T('-7603530366', '316.496322753', '-236.943012537'); + T('8', '1.59866', '0.0067'); + T('-4.963', '8.73', '-4.963'); + T('25644160.8', '-5842.06855', '3321.93405'); + T('-4.31384', '-220.2', '-4.31384'); + T('186.9', '-48200.85', '186.9'); + T('5', '57089.99', '5'); + T('-244278052979', '-2', '-1'); + T('8', '-5763.4', '8'); + T('29549', '-1', '0'); + T('-2.0', '-0.00000000000000446955628', '-3.76062704e-15'); + T('737330.9', '-746370915533', '737330.9'); + T('-0.000882183174', '-16.5', '-0.000882183174'); + T('-45', '0.000000001106035', '-7.5858e-10'); + T('-594.06', '-29.85802821', '-26.75746401'); + T('-27.648237', '-1047.5249', '-27.648237'); + T('2', '-739163.624', '2'); + T('544827.1330', '54848981.1', '544827.133'); + T('1', '0.00000000000076553', '2.9959e-13'); + T('-10.89', '0.000000000000000000047', '-5e-21'); + T('-3052.938', '9327.5819201', '-3052.938'); + T('-24.1', '127758.429', '-24.1'); + T('3.9', '12173.38', '3.9'); + T('0.0000000000000213926861909', '-77.4', '2.13926861909e-14'); + T('-90173804.260', '-5062619.06909', '-4109280.08547'); + T('637', '43943.2610', '637'); + T('14867.1', '894449', '14867.1'); + T('7.3', '-1.1', '0.7'); + T('2894844.4', '-1', '0.4'); + T('-0.00000000000196', '-2.6741', '-1.96e-12'); + T('0.00000000000000071433493', '5.9227', '7.1433493e-16'); + T('69', '-7204969', '69'); + T('-12468163', '-10022891.867', '-2445271.133'); + T('45469.1932906', '-3095367650', '45469.1932906'); + T('73072906.39', '-112013211', '73072906.39'); + T('1.4', '972.159255713', '1.4'); + T('66924.3855375', '19.93', '19.3755375'); + T('26.4256214076', '11.4775634275', '3.4704945526'); + T('23362.0174956', '-0.0000000001748', '1.536e-10'); + T('18276818006', '-5.74', '1.1'); + T('-8319.8', '3', '-0.8'); + T('-7.7413714358', '43763934316.0', '-7.7413714358'); + T('-688566579', '-1.83', '-0.3'); + T('29854', '-268509731.22', '29854'); + T('-194.15246', '-3.2255572', '-0.619028'); + T('2.0186177', '-326915', '2.0186177'); + T('-4', '1259', '-4'); + T('3.56', '-0.000000000000000000515993', '1.2338e-19'); + T('0.000001783', '-16426085', '0.000001783'); + T('-1766987819', '-87.259', '-49.72'); + T('-17.1', '0.00000000000000021840564', '-5.750892e-17'); + T('-8589.659', '0.000000000000000505', '-3.75e-16'); + T('-65891.7', '-38663.83', '-27227.87'); + T('-1.0', '0.00000000000000003836', '-1.78e-17'); + T('-33378.26', '-1226528.13', '-33378.26'); + T('2', '492342441', '2'); + T('1274', '-3092459411.0', '1274'); + T('0.2631770', '-493249535.4', '0.263177'); + T('-0.00000000000000000141', '4201192116', '-1.41e-18'); + T('-574.29154', '133427.3', '-574.29154'); + T('104617.3', '293188753.50', '104617.3'); + T('0', '38.96345', '0'); + T('-0.0000017289693288', '-5.4', '-0.0000017289693288'); + T('0', '4', '0'); + T('9.65', '1.2', '0.05'); + T('0.000000000017', '-50377365', '1.7e-11'); + T('137.3064', '0.0000001012', '7.04e-8'); + T('-9.89405', '29.2', '-9.89405'); + T('3.23', '-3048751.09', '3.23'); + T('87020568364', '-1', '0'); + T('-3658', '-0.4067222', '-0.3472554'); + T('0.0000000000483229749', '-508858', '4.83229749e-11'); + T('3', '-0.000000000000000006525172012', '6.0850742e-19'); + T('-52.63', '-373.710', '-52.63'); + T('-6.49915814', '352.2', '-6.49915814'); + T('0', '-44190.198', '0'); + T('0.00000000000000003763584929', '6', '3.763584929e-17'); + T('1.299983', '194.7', '1.299983'); + T('1', '9.52', '1'); + T('-86603.9', '446867516', '-86603.9'); + T('-1482885.420', '-0.0000000018878840', '-9.643e-10'); + T('-170.531717', '-633436587.6', '-170.531717'); + T('15.36378', '6540.267', '15.36378'); + T('-20570.61', '18.955913858', '-3.44346407'); + T('77', '0.000000000000027', '2.3e-14'); + T('0.000000001687849', '-0.0131699248663', '1.687849e-9'); + T('-0.000000000000026', '3291407.1', '-2.6e-14'); + T('-290.613', '0.00000000000000000008353794', '-6.386436e-20'); + T('200', '66.97', '66.06'); + T('2.2', '-43.41589', '2.2'); + T('98201.177964', '0.007000', '0.004964'); + T('35.453991547', '128.68861', '35.453991547'); + T('5.27', '1', '0.27'); + T('-1', '0.000119683476689', '-0.000044552263405'); + T('-34.0', '3', '-1'); + T('3378', '-44180', '3378'); + T('15', '-4', '3'); + T('0.0000004190944243', '37285824.4', '4.190944243e-7'); + T('-298.4', '506466', '-298.4'); + T('-0.00000010893', '-0.000426882829396', '-1.0893e-7'); + T('-1.9756065817', '941.5', '-1.9756065817'); + T('-1026297.2', '-205657.802', '-203665.992'); + T('2', '0.0000000005621541447', '3.513430991e-10'); + T('-7951901.67', '-0.0000000000055383', '-2.3814e-12'); + T('9', '0.000000000015125851830', '7.24233339e-12'); + T('72.245762', '-39.70217', '32.543592'); + T('6.62321', '-912632', '6.62321'); + T('617021', '-42.5970821', '2.2657815'); + T('1469815.28770', '537.217915', '524.290175'); + T('345897.6', '-0.00000000000108024', '9.7032e-13'); + T('0', '1.8688906295', '0'); + T('164', '-82114.2', '164'); + T('57.84537', '-1.4', '0.44537'); + T('114.340500', '6333334050', '114.3405'); + T('4.80', '-6077773.6', '4.8'); + T('162', '-37.75886044', '10.96455824'); + T('0.000000016367092', '1', '1.6367092e-8'); + T('148.2', '-46', '10.2'); + T('1.5768318844', '-7512089036.8', '1.5768318844'); + T('-0.0000000000000014460', '0.0011257005', '-1.446e-15'); + T('64.079', '-141', '64.079'); + T('-0.0582', '-13.35353476', '-0.0582'); + T('-1.0007', '63155.153933', '-1.0007'); + T('-623313173.6', '0.0000000081031', '-2.4548e-9'); + T('-36.9', '-1', '-0.9'); + T('2.0857', '0.000000000000000000205859744928', '1.887979864e-19'); + T('0.0000000494417', '492420240', '4.94417e-8'); + T('0.000000000000012194', '0.000000000000000013778591965', '1.372470294e-17'); + T('-16179.166', '16.4610327', '-14.4318886'); + T('3.24', '55986', '3.24'); + T('-61938', '47825328585', '-61938'); + T('4.36', '-1', '0.36'); + T('-9857364.3', '-1', '-0.3'); + T('9943.75', '3.5', '0.25'); + T('151.4907', '-1', '0.4907'); + T('0.000000000113985670', '-2286508', '1.1398567e-10'); + T('-1468', '-12915320.7', '-1468'); + T('46.543901', '0.00000014040913', '3.32077e-8'); + T('3', '190.34681', '3'); + T('-468.5022', '-0.00000000309208106131', '-1.13251725725e-9'); + T('-0.00000000000153707', '-112649.31435', '-1.53707e-12'); + T('-1.5', '0.000000067829063910', '-6.729086517e-8'); + T('42031.2', '-1.165644', '0.408648'); + T('-137623012.4', '-71.9609', '-21.9379'); + T('-278354', '8', '-2'); + T('5370.3', '71543859', '5370.3'); + T('-0.2469826911', '-0.0000000000008289323096', '-3.584481336e-13'); + T('338.68861185', '0.000000000000371927032', '2.00995384e-13'); + T('-0.00000000144', '115767.5757', '-1.44e-9'); + T('-3183918.6386', '-980.559', '-43.5656'); + T('-0.000000000004661097', '-0.051176618', '-4.661097e-12'); + T('-1', '948.171', '-1'); + T('1057394189', '62.751', '54.866'); + T('167.9', '0.00000000000009753', '8.45e-15'); + T('-12.172', '800.4476', '-12.172'); + T('-1.4', '-139187231194', '-1.4'); + T('359356.2', '-0.006806', '0.005734'); + T('4744567.6711', '-1.74', '0.0511'); + T('-0.0000000000234390', '-75.75283631', '-2.3439e-11'); + T('-6557078727.02', '-0.000000000000000015', '-5e-18'); + T('-1.33', '-5.111037', '-1.33'); + T('-431.277', '-1', '-0.277'); + T('0.0000000000000000000697336', '-8212.9015367', '6.97336e-20'); + T('3370.2674507', '445.572089', '251.2628277'); + T('-2.33567', '-0.0000000104784', '-8.888e-9'); + T('0.00000983659', '83423921', '0.00000983659'); + T('-51.2', '-0.0027394686', '-0.0020713346'); + T('0.000000000819617035421', '0.000000011', '8.19617035421e-10'); + T('0.00079279091535', '7', '0.00079279091535'); + T('-0.000000000095324834', '28091.00', '-9.5324834e-11'); + T('-0.00000000000000015', '23.52', '-1.5e-16'); + T('0.1438', '1035688.4', '0.1438'); + T('16693', '-1', '0'); + T('-781.09402123', '6.9', '-1.39402123'); + T('1', '20.70', '1'); + T('-3', '0.000006782445', '-0.00000249249'); + T('0.00000000000000000022', '-54710642.596', '2.2e-19'); + T('-590.69625205', '26.40', '-9.89625205'); + T('10', '-5.67', '4.33'); + T('-7', '-0.00000000000643634802', '-3.80362768e-12'); + T('-9680099.05', '-62.737684457', '-50.764391642'); + T('-1.5', '9914.9781', '-1.5'); + T('-1', '0.0000000507688288763', '-3.15199093625e-8'); + T('-0.000000000032713211391', '-0.000000046529', '-3.2713211391e-11'); + T('5.40', '1612427.39748', '5.4'); + T('0', '-0.0000000000000000000146', '0'); + T('-0.000000000000000000817527', '-52.0', '-8.17527e-19'); + T('1053329.8', '-120573.937', '88738.304'); + T('0.0000000000713', '-100743.840', '7.13e-11'); + T('8219', '-7505759130.86', '8219'); + T('16655.7', '243', '131.7'); + T('259.650', '278.73', '259.65'); + T('-284.091', '-1', '-0.091'); + T('0.1250', '-23713.35', '0.125'); + T('0.00000000490018764513', '-4.41', '4.90018764513e-9'); + T('-584.70403', '11076992', '-584.70403'); + T('-221.643', '-30.5', '-8.143'); + T('-9.69', '1177241', '-9.69'); + T('-4.97845868064', '-1.3178692059', '-1.02485106294'); + T('-1.04328912629', '-12.828540', '-1.04328912629'); + T('26', '-4.91596', '1.4202'); + T('94.686', '7.5851', '3.6648'); + T('0', '-0.000000000000000363', '0'); + T('-1.431', '65.06874', '-1.431'); + T('-878.898828', '-5.21', '-3.618828'); + T('-0.00000000000000014146660', '1.05112178985', '-1.414666e-16'); + T('0', '360.6112165', '0'); + T('4.464476', '0.00016302503', '0.00003555345'); + T('1145096', '-217.15', '64.05'); + T('29.46', '104.40', '29.46'); + T('841.82', '-2171922.59229', '841.82'); + T('46', '1', '0'); + T('22829.8889', '-1578709411', '22829.8889'); + T('-0.00374341104', '1.2', '-0.00374341104'); + T('410', '7', '4'); + T('0.076125848849', '1.103', '0.076125848849'); + T('0.000001844875808', '0.000000000000020813', '2.0037e-14'); + T('6.685', '0.003905472818', '0.002736008402'); + T('41011740.6', '908.670191', '728.869597'); + T('-152.527', '-1', '-0.527'); + T('12815.035', '-1497.81264', '832.53388'); + T('-0.000000000000004048729', '0.00000000126', '-4.048729e-15'); + T('-19949.700625', '-314.64', '-127.380625'); + T('-2.4', '569419658.2', '-2.4'); + T('0.00000000000000597954708', '4', '5.97954708e-15'); + T('-17.0', '1.58', '-1.2'); + T('22811600498', '2', '0'); + T('3.1328', '-119317.4', '3.1328'); + T('2.26039694', '1567.2', '2.26039694'); + T('-0.0004559', '-1.59', '-0.0004559'); + T('-0.000000000000165', '3', '-1.65e-13'); + T('-215.9051', '14846316.4792', '-215.9051'); + T('-1', '6004363.2', '-1'); + T('173513829480', '-117.2937046', '37.6296904'); + T('2269413223', '44.831', '39.204'); + T('-1411953.506', '0.000003338150524', '-0.000001742597716'); + T('-26.596', '-7', '-5.596'); + T('-0.00000000000010245141710', '6652789979', '-1.024514171e-13'); + T('2.042', '24673', '2.042'); + T('-2.71', '68.05392544', '-2.71'); + T('-3', '220821.80', '-3'); + T('116.073', '-0.0000000000024392780', '2.029598e-12'); + T('-0.00000006283674', '0.0000000000000079', '-5.7e-15'); + T('-3', '-7', '-3'); + T('-0.0000000000000005058', '-1.5', '-5.058e-16'); + T('-683', '1013123.5', '-683'); + T('-6', '16985130.432', '-6'); + T('-76481.64', '-0.0002575', '-0.0001725'); + T('1610.8849133', '-2.02567', '0.4772633'); + T('-19.3482', '-1.5', '-1.3482'); + T('779.8394', '390457.98231', '779.8394'); + T('0.00000012', '-8855.3', '1.2e-7'); + T('27226552.2', '2168.811', '1467.717'); + T('6.353167529', '1283573.56', '6.353167529'); + T('2', '26.2339535', '2'); + T('-34', '5319.486', '-34'); + T('0', '3123027047', '0'); + T('1', '27465.6301', '1'); + T('-1.5', '-41136.47', '-1.5'); + T('0.00000000000000000001311857', '-23', '1.311857e-20'); + T('14831.7', '4.41', '0.87'); + T('2953.07357', '34.48', '22.27357'); + T('-1.5', '-2465544', '-1.5'); + T('-376', '-244.16', '-131.84'); + T('-1799906518', '219', '-49'); + T('16431536', '987.209', '429.404'); + T('-0.0000000000000000406462459', '36617.26003', '-4.06462459e-17'); + T('-0.00000004133646', '26594407.6', '-4.133646e-8'); + T('6.3642', '-0.00000000000000000009857799', '8.84487e-20'); + T('1.780751', '11652994', '1.780751'); + T('95.6', '19178496109.2', '95.6'); + T('2.57393833', '852658757', '2.57393833'); + T('147.77838', '27.129', '12.13338'); + T('-773.3025', '-6', '-5.3025'); + T('3', '-31458.09', '3'); + T('-2.93096796427', '2.3', '-0.63096796427'); + T('2', '6190.943', '2'); + T('-2', '-2.47', '-2'); + T('-60.45556497', '0.00000067724055444', '-5.489328444e-7'); + T('0', '52221', '0'); + T('0.003001960', '-277761107', '0.00300196'); + T('5.3848225844', '434804', '5.3848225844'); + T('650.7467123', '-4', '2.7467123'); + T('1.4', '-65970188', '1.4'); + T('-3500.45', '500254.11730', '-3500.45'); + T('-0.000000000049', '4919966334', '-4.9e-11'); + T('17.92802', '-4.826', '3.45002'); + T('248.79', '936.1', '248.79'); + T('0.000000000000000000062725', '-1.050053808', '6.2725e-20'); + T('-21.4103', '1.9075', '-0.4278'); + T('-7785809980', '1574', '-92'); + T('688.6', '86674028', '688.6'); + T('0.000000000002917443', '-245.8', '2.917443e-12'); + T('-0.07547', '-15.028', '-0.07547'); + T('0.0031519195605', '-2272651712.25', '0.0031519195605'); + T('150494.446', '-51709.2935', '47075.859'); + T('-12010', '0.000000000000000016290', '-3.28e-18'); + T('-32.408275623', '-1', '-0.408275623'); + T('0.000000000000383814', '-1', '3.83814e-13'); + T('0.000000000000000003469380524', '0.0000000000036', '3.469380524e-18'); + T('1', '15.8856255428', '1'); + T('119.378058192', '-2.4396301', '2.275813392'); + T('33773052.62', '0.00000000111954987477', '7.3387294787e-10'); + T('6', '-120890538.30', '6'); + T('-0.00000000000059065444364', '22714637', '-5.9065444364e-13'); + T('-1774625862.4', '8507651416', '-1774625862.4'); + T('30.1', '5.7', '1.6'); + T('-1.806', '38.81', '-1.806'); + T('3', '-1683506', '3'); + T('-88.75', '-1411.1', '-88.75'); + T('-31', '0.00007026872', '-0.00004067864'); + T('2437.18437', '2.70220899140', '2.4940687486'); + T('0', '-41630623', '0'); + T('-258.66793', '-182.14421', '-76.52372'); + T('-14228.6', '95437.0', '-14228.6'); + T('1733.518', '-128426.9', '1733.518'); + T('0.0000000000000000000532527998218', '-63.28534135', '5.32527998218e-20'); + T('-295.03967', '-3', '-1.03967'); + T('2.956649054', '899957.06', '2.956649054'); + T('-2313.023', '-63930.69', '-2313.023'); + T('13803.9', '5.8329456', '3.1507104'); + T('21.8238290', '-3', '0.823829'); + T('-22.3', '-77.5771049044', '-22.3'); + T('0', '10.70', '0'); + T('0.000000101', '-14430384604.6', '1.01e-7'); + T('-600271019.62', '-2.4', '-2.02'); + T('-53874920.5', '21.676509', '-16.648855'); + T('-0.000000000000000061', '-69.27505', '-6.1e-17'); + T('-0.00000000000117570154770', '874813.194864', '-1.1757015477e-12'); + T('3724726', '0.0000000000009126675', '4.24705e-13'); + T('6493', '-82605.38', '6493'); + T('-2.88', '10', '-2.88'); + T('53970', '-99064', '53970'); + T('-12.440', '-0.000000000019', '-5e-12'); + T('54.64', '-6.1', '5.84'); + T('0.004000', '14', '0.004'); + T('-1570593.12158', '-2.56612', '-1.9417'); + T('-0.0000000000000113891', '-0.000000000042', '-1.13891e-14'); + T('-29.9444', '-2245', '-29.9444'); + T('0.568740', '3.7564033753', '0.56874'); + T('-52606.48321', '-4.34014413083', '-3.9363443404'); + T('-0.0000000334', '0.000000000902008057677', '-2.5701865951e-11'); + T('-634849.178', '3953007.487', '-634849.178'); + T('127992.04562', '3009797.1', '127992.04562'); + T('1', '-43.9035960', '1'); + T('-11.0349', '-2', '-1.0349'); + T('158.7', '257566', '158.7'); + T('43047346', '-115148338070', '43047346'); + T('9691.0996', '-15.5219', '5.434'); + T('-77.9', '-2.0', '-1.9'); + T('-38.3896', '-0.000000882', '-5.14e-7'); + + T('2318237922853539360.167157597022570', '-9702015238687.680494235371626139504030926823802574', '9295675788919.833075194557918488338251940141560718'); + T('-3346995255.54414928936', '-19484973963827626752773520333240590885639375', '-3346995255.54414928936'); + T('-270721769', '22539228.03492196260802407744489638356810047', '-251032.58093644870371107066124339718279436'); + T('-0.00000000000000000308066481692295683548642301228852180070143433425056969292333', '206232915.762239501154732324', '-3.08066481692295683548642301228852180070143433425056969292333e-18'); + T('-0.00000000156454306292867840840689', '2635', '-1.56454306292867840840689e-9'); + T('12886035692416820.3977457533594029154555584175743', '-113496127978790341.941210015456704515', '12886035692416820.3977457533594029154555584175743'); + T('-299395547.883083669188105176893563510454667', '-3152.9580', '-115.077083669188105176893563510454667'); + T('8076327350.789696755252236317', '9', '5.789696755252236317'); + T('2241730616485747642201052100686334', '15115372376051.1433309224128', '15028644606255.6407694748928'); + T('0.000000020545442143', '910205431326260.56522101419792183224139104902865869227', '2.0545442143e-8'); + T('-299.2', '-1095069605114867345071265098807585478368438601713540771676', '-299.2'); + T('0', '-0.00000000000000000006258032721', '0'); + T('-9561792051.46130', '-0.00000037912322661422', '-3.0664875638608e-7'); + T('-4589.274150042', '5463826693798.059180748770', '-4589.274150042'); + T('-177372488891124.8209441829612234253673371', '-2184484411972.871928873110', '-429251521322.1947054610512234253673371'); + T('2840794355990579101690516447419567416103576933551526', '-225384346136689418.311568171615', '4159399848092788.810925291935'); + T('433169940324134426366793327.235', '-1918606541369710.9167801826', '369802826989779.100695574'); + T('0.00000231962990639112417450960779176176525188784519762202020426278', '11491626.8146875740651454657723913302260', '0.00000231962990639112417450960779176176525188784519762202020426278'); + T('-118317530966985340050567.3794340230', '-1290337888625470391870404816877827630953112876.297', '-1.18317530966985340050567379434023e+23'); + T('507941745866485347809651792.3258074064530387681549475622', '-78.8876', '48.5294074064530387681549475622'); + T('3280516686867.41769205935464611912132313550145186748', '-0.00000000000000125477', '5.0338132313550145186748e-16'); + T('39.99', '-196.666', '39.99'); + T('198328732837738155510399443.82996', '0.049415792708', '0.034407057628'); + T('23.9909397975464820637937485614', '0.0000000001050229258855441', '8.54924991032156614e-11'); + T('-1157214583831665284482', '1.0988344', '-0.0759048'); + T('19626.043251177620', '0.0000000034291719721621', '1.7452276531105e-9'); + T('11144329315299884830592174718286.015391668774749336449044', '-276730.619204816478', '84261.983174911066749336449044'); + T('71.3348063927327012696442274193666742024', '1.003', '0.1218063927327012696442274193666742024'); + T('2353.964728726069', '-1147885339335726766004631.4827280116227481840172642411087841', '2353.964728726069'); + T('-3.4', '99841150890712628939215423679763543630485717', '-3.4'); + T('-17423609848720294448155093008156493860946579332348817', '-407401303.1', '-39793145.5'); + T('268219889', '66408.228187594864', '63463.578491939168'); + T('-7067928231578399800943353710459167713.4021506', '-44099.172874028', '-34277.265446476'); + T('0.0000000000003143', '0.763206816948175243403280699590867', '3.143e-13'); + T('4.036744136250', '0.00971177', '0.00635958625'); + T('1793819.269108', '493646013195.8520', '1793819.269108'); + T('-15826468630.86978', '-0.000000000000000000372629410691473337097845426967193919000496413569810554360', '-3.3602620906243362074116532307435310028959396493592065148e-19'); + T('-18.7707479011363', '-0.00000000000002581603178761489486464393960475608950385662413624987', '-9.1067040799565470223405647782611453765936052898943e-15'); + T('238432236541400642177165.39210', '-5', '0.3921'); + T('-6811268416946324947973610791528879575619937612025', '0.0000000000000001069504654335424482337205845600046597647661', '-8.16882733210848477277494710610839496492589e-17'); + T('-0.0000000000000001763427790981229873712832162', '-0.00000000000000000002454861590426229238192323806393241482688272809526858064170', '-1.00710578069411919285971867734642985013640916857852506689e-20'); + T('19755770505453660565232908.50109071', '11636774869145974997.1', '6173329669666681241.40109071'); + T('-0.0000000000002209009508639970169662640887364083811', '0.000000000000000089645450775854240465099382429782771424049138745143690592', '-1.4560152292168460259210429423632311142922131965946381312e-17'); + T('563088', '-0.00000008456562014728262541201891984898', '2.11408406705846430113462806523e-8'); + T('0.000000000000014349029064561994176595511', '-185.73981699167343715247600', '1.4349029064561994176595511e-14'); + T('-0.00000000001083082172818863769543', '1190273509470734307.14840', '-1.083082172818863769543e-11'); + T('-0.0000007000816503264538441903792097551608671', '426939', '-7.000816503264538441903792097551608671e-7'); + T('-74639664.5738469080670677219615636886365697', '11681605088890876252615.81485333', '-74639664.5738469080670677219615636886365697'); + T('-17473762843659544328007830640965916', '4735599287262364762422146713625.0556784154158620151196', '-4.1370729486807194325314144030856023255308850262237956e+30'); + T('-35798372944152782907433662314743475258228956226653087.007402', '2986648933436031786673397525017144049.527376', '-2.586979851276128040119426347481949619034666e+36'); + T('594962882338997095.95600951831319665393181826', '-0.000040093460748026675395936734376802508692547860', '0.00000106629014969426833642467613848819248141182'); + T('-98128552510799809261642798951333594.3', '-0.0150759218573700771020952512609526302985126417', '-0.0093980498660155309329725865407755408137845842'); + T('-28905866.022560718711724183906982038769016', '784580.53565571528753557678117', '-660966.738954968360443419784862038769016'); + T('-47314330483943356635.9', '4636924735068749202877120062.478835103', '-47314330483943356635.9'); + T('792568.576', '-1979027334.876406', '792568.576'); + T('2082231914.648466978927', '0.000000238131951894409076127502052426857902593605206359', '4.9424034607223232258131091994225827538144585637e-8'); + T('-3411944212928743691.0878807671609226126352448564441', '-35500488815007653257376478967389.5309684', '-3411944212928743691.0878807671609226126352448564441'); + T('41501124315127150415.980342038928850343648471670', '0.000000000000000000053662500082765049695814837696308208138940564988179296927086', '5.264308454143252141026226146634076056628101699532578384974e-20'); + T('-8105952948653953296.0699944999485216414062634578', '-86.16623488113', '-12.7456165483885216414062634578'); + T('0.3363661610339352417675708613420020704697718205608204221483', '0.000000015893', '2.1879352417675708613420020704697718205608204221483e-9'); + T('-2210034411007336613344093585636474574394416824601186', '-5697969717442263672614992696703295962015334995729800', '-2.210034411007336613344093585636474574394416824601186e+51'); + T('-19624478.484621985479326459244324640415206', '1107819793188885.038860867', '-19624478.484621985479326459244324640415206'); + T('0.0000000000000000027', '3631127636124777836273261304119863249137.03745979717836204256', '2.7e-18'); + T('428890527306795', '1668185806826743336487.38672816383301425507832145712664', '428890527306795'); + T('-118370476542022564.70047766418757366578', '-1228521.83117210457036591052269149317400179607062584234', '-805751.95595400766902842055758098139122173498985457682'); + T('185286933', '2634674111701244320881602650.2421109389', '185286933'); + T('-7816588257503735832158705.4', '-11446124074192432060805137497617191.5046', '-7.8165882575037358321587054e+24'); + T('-31168709097858.0', '-17218.68615703', '-10432.31999475'); + T('-1193968682851815353278.892', '16233847.397485882794799291566785542165584', '-2556325.316384280762019592125096432742624'); + T('-0.000000000000000000429785230445766557625717658510987246778343793367089404', '-716612915846390386454071955208510757337687098919716', '-4.29785230445766557625717658510987246778343793367089404e-19'); + T('760.787298', '-2603560575.1399', '760.787298'); + T('-18743620234475404481049.76769588257', '2970338095303214.63301260929704123104600934034050653148876822', '-2683854960098077.08770269798321468491598555389258155949698992'); + T('-226541276978', '101925495756252505609089275771221594.112426392858882002885', '-226541276978'); + T('-0.0000000000026983', '487122954421920311203.9905962', '-2.6983e-12'); + T('203252938.721649167192089873629233502162687452', '221.20710344937374', '109.823743846799189873629233502162687452'); + T('-2171101234717018601412530711075541768098', '-1268548470639454153963685.60015', '-1.07365992860948866922827981755e+24'); + T('11052697820027335752485837522176323720287184.550750155', '-553810966103.02590552831652788244539331678489580819303648', '525192380831.77413824185332709628772520041226644631472352'); + T('-3884559198046300262478611735179875511934488582167963637380', '8.036636030768', '-3.27660412216'); + T('2.0', '-45.2', '2'); + T('0', '-0.163349511377933876791410190902077510', '0'); + T('-730572579439411951784822207340668557', '0.0000000000000028', '-4e-16'); + T('0.000000000000000001168651449131923286954932276275033439404771143330881475', '-47210255.27658777658181021168421281357', '1.168651449131923286954932276275033439404771143330881475e-18'); + T('-30769567698.202004635902421797597470637', '-2117030646075139493515312478944809325583483881105', '-30769567698.202004635902421797597470637'); + T('0.22203824107047587018951755693974277131200048220', '-136.52076', '0.2220382410704758701895175569397427713120004822'); + T('4489045408103326401151265241469016732232592556114681884438', '0.000000000000001314763381159004315842197', '6.8074495798791174068935e-16'); + T('-21348129287570112842795163717617654521736400718052510', '-1995504519697835638540568077.0196418', '-1.1402642626986948193867205135517104e+27'); + T('-14.48287435139371979106', '-278112747003022610742126629257947172194929.64536', '-14.48287435139371979106'); + T('0.0000000000000110719145581948062251355493585472867', '-7978399748.1558009430388367158631487853516499292946094', '1.10719145581948062251355493585472867e-14'); + T('119501784974', '-0.0031818401885065375156179', '0.0016290398380208417060804'); + T('-0.133707475845003705950317295850288779512882217932', '329652021145697865591302212038174941275757995054.713783674845', '-0.133707475845003705950317295850288779512882217932'); + T('-12542871568091185279.0460234294798148233', '25754.120417', '-21877.7952474294798148233'); + T('-3818054566.20841286030331762281612', '-1936.24778639274331686587963417792515204476546099', '-472.43293099041187629213445041741051174848665583'); + T('118000308055.9373727402663957624604063', '9918.67574327356', '4846.8753496034663957624604063'); + T('-11.38', '-24193758424792525116909481098205.677446', '-11.38'); + T('2.46889727437003280961289299604392122014099570', '-4644753841435365046988433379518839103541882981334804890807.8', '2.4688972743700328096128929960439212201409957'); + T('1805667164641860305883.31324', '0.00000000016618955069904640141657751519707415214669847044', '1.046133052518583849356487736801523519251586328e-11'); + T('-0.000000000000000000012169689776926610597997556555980427323944885949030949402', '-434910402113045297454505.1302573189763520', '-1.2169689776926610597997556555980427323944885949030949402e-20'); + T('-1739.4', '0.155584511367509963502532516739270411', '-0.120747422606118005188995371696075431'); + T('-569589695561180399227800563933576000706960457.3656765081522', '3483.46493456384339944984809629410413910476502', '-3467.25917700145185407850776398960809939327178'); + T('27827944878804.043096443231553973596298120', '327784539432851688676.574297', '27827944878804.04309644323155397359629812'); + T('-0.0000000000000000000273570270893076789122004877379023084477997941182649713787', '55071786762378989.632689594', '-2.73570270893076789122004877379023084477997941182649713787e-20'); + T('-1', '30698458.1545228514266', '-1'); + T('-77.6796737181065072239544734403386720988476876081692968190', '-48043379.33911367817680827247020826', '-77.679673718106507223954473440338672098847687608169296819'); + T('-0.00000000002231552048713565363805177481170756001463248', '-7745938658044151', '-2.231552048713565363805177481170756001463248e-11'); + T('4080930738001215900471542815678.870', '-259094.384407758455239', '219215.641754292988748'); + T('-65148376658415.8821831041618603950', '176.7', '-41.982183104161860395'); + T('-20649466814.805802613083057980846632715554163812995', '-0.0000000001319860149268122557211741866249364289650956', '-9.623959984992160004489809813728963916899e-11'); + T('-8637039792424460231', '1171511157428179825785002.9414399798460302750', '-8637039792424460231'); + T('170120714324740496497515610676549361259437493939036', '0.0000001984234593401508456286993357944778724317751259644793106', '1.80272091831781979821089649811533712715612789460516662e-8'); + T('3040385342.35657760274052', '-372946621956569451.93539995558371617994622295531744', '3040385342.35657760274052'); + T('234417346052636032.106833697570476435658983423056', '405728269025466785030711845788149565209977.743', '234417346052636032.106833697570476435658983423056'); + T('3003698058950457901967364.923201608', '-0.00000000000033926708389437080558726155721138587500872389823', '2.3077148260391721408496333950768060426097166773e-13'); + T('-1', '13121297327432473503324600878404', '-1'); + T('-0.00000000000086987493647337590015438704985', '1126309963348141179998313355117347492625867522.06445459173', '-8.6987493647337590015438704985e-13'); + T('0.01175883004658442799157', '-1304796615695885174911897002429657121243.096878772927435101', '0.01175883004658442799157'); + T('-4.1', '-925940.0049', '-4.1'); + T('94413979984015715031.72143', '-44956570520496128861135438942192313346223.4679844', '94413979984015715031.72143'); + T('-2084.96276512750756221737052806049261165250425', '1.5202660037865707', '-0.67807393611913251737052806049261165250425'); + T('5530042131715182582', '0.00000076755550127601384796182326285660346554068838', '4.3620483782819522891660511451578934939479584e-7'); + T('-67042.802', '-28411888994.212820705785482909844033014', '-67042.802'); + T('-5360742.0', '327368856548045.08220112714929243516', '-5360742'); + T('47117230722.16973123915245237545229011004357913004', '-47488231.617918014245187991287717374685823103416490829', '8904957.195061107925965018036654421707060540881097632'); + T('-0.000000000000151343572349948255798487186356', '42.39640064100021994629331666', '-1.51343572349948255798487186356e-13'); + T('113840373593648670861500086', '16082411799435623101958677220820405667', '1.13840373593648670861500086e+26'); + T('-8.22', '-2867798109411674.996765068247085164513407273890902397064937', '-8.22'); + T('-3.50238614', '-6860188389136636488339219859054193101069684390', '-3.50238614'); + T('107107360259917227679425620190.388983860971684', '8800479523270977282088607107997626691064406556317263323.341', '1.07107360259917227679425620190388983860971684e+29'); + T('-175822.1223383477', '-88621983013742415713.67926832', '-175822.1223383477'); + T('-0.0000000001165498478337125015371156469966957212161218123244751', '-62550285299530518719359714148367546793907', '-1.165498478337125015371156469966957212161218123244751e-10'); + T('0.0000000000000000320110187403311537074296810233047925148', '-60407506473103.897451724471', '3.20110187403311537074296810233047925148e-17'); + T('-0.000000000000000338282064563114', '-96190376454071434357.783403611375151575341982065544942431', '-3.38282064563114e-16'); + T('-0.000000000000446753711341', '-9.4', '-4.46753711341e-13'); + T('369078971611659797359596697169091.7394557', '4390355307871218680185944', '3.2920328769890124360129157394557e+24'); + T('0.00167752355829931578551694576878658836500507142636702529088528', '3276066309050', '0.00167752355829931578551694576878658836500507142636702529088528'); + T('-40341913269616270298908054352.555424105652', '-76.6805753', '-22.343535105652'); + T('0.000000000000000234899796181467417005659941', '-0.00000000000000002455754630676905247611', '1.3881879420545944720669941e-17'); + T('-2288200091016313974155687089998490026813781889257797', '173612435224249143072698340434416969557762958', '-4.06305517399251906560023908396396030698941e+41'); + T('-119.570203264189', '0.00000000000000000270873280446606560343105459296495864', '-3.0654086667132932857371380394960016e-19'); + T('9636003428434421863325355207384758', '27189148267469.7985900247652', '763104629651.47867591268'); + T('336.422676596', '45198935114500.3922307046', '336.422676596'); + T('-14.0627943158485824648781649958871436175344604029182482603314', '514937038588634.2538384203447', '-14.0627943158485824648781649958871436175344604029182482603314'); + T('0.00000023418399644897328432613203542773200097298268', '150.05994', '2.3418399644897328432613203542773200097298268e-7'); + T('-7549019185595.78985813486261693520665842030485693423', '0.00000107047', '-3.7760261693520665842030485693423e-7'); + T('2084', '-4702062390.892', '2084'); + T('-0.000000000000004338', '23.449915', '-4.338e-15'); + T('355378988141704324089218417352212802.4373051939435896809', '-410089.6820', '397574.1193051939435896809'); + T('-0.00000001989462540690061730462809985539649615779', '-38.286442069994941913718432', '-1.989462540690061730462809985539649615779e-8'); + T('18131048627056749262739468342.355859006591', '-1199.6142723004281428', '211.04880824112304'); + T('-7485271015053088795456302791998022618551521.6832', '0.0000000000000000000469320709938399196323702081094328803321', '-2.69710660151015687863998038860418026399e-20'); + T('0.000000000951589985684289940380019704065655070039753', '-26373114201649323963859575.5038618827163', '9.51589985684289940380019704065655070039753e-10'); + T('29612852829840055823.4234313598', '-0.000000000000000000390000839472495342007727670085919905954881', '1.00427280201824924510562417012541840544546e-19'); + T('-5607158.61839129739841', '7', '-4.61839129739841'); + T('-5033.1047890916762223467249791215764', '-125308255061340894094178.363334', '-5033.1047890916762223467249791215764'); + T('721650415570508.30568044521', '40444523802228.33072733', '34093510932626.68331583521'); + T('2909689458580570441', '35832160731.298726', '11893825723.095282'); + T('-5860896283.24109', '-0.000000000000000001291619269537172108644', '-3.63300889125010974528e-19'); + T('-194225255714783295041136360134265455943072328542285', '69.6', '-40.2'); + T('-64931541870946970276.043833373186791755', '0.0023858644', '-0.001926882786791755'); + T('1768097901758505513385227.27886663656389579248832549927529', '49683790014635', '22391913150827.27886663656389579248832549927529'); + T('15607444724715380472693190116075827307544230542858', '-30863780897913937221259082805810494697060093553853613140', '1.5607444724715380472693190116075827307544230542858e+49'); + T('-5', '-4637217487418.54919740129555570192754032790658061945', '-5'); + T('-0.0000000000000000000828', '131673552653745805914768.46227', '-8.28e-20'); + T('-0.00000000764789734', '1709371095001247612801478608832281576263433223592134788490', '-7.64789734e-9'); + T('154437761882957023383482721504354803201034660811788829', '-0.000000000000006907027', '5.846749e-15'); + T('715263.3', '0.00000000000001885535871127301429501799', '1.588206408282257808507009e-14'); + T('2', '-139137', '2'); + T('-33.5', '252567485444977003649.689937162645', '-33.5'); + T('0.000041876254378856129586442165482266321783', '322959107295001633.58', '0.000041876254378856129586442165482266321783'); + T('-54186163890839675559037155.29991407802075734', '0.0000000000022878015271202914230826203651610666594361551538884626909', '-2.2681269475854053487147725795128202226083088877672780421e-12'); + T('0.0000000009449673438295910508', '-17.0733222', '9.449673438295910508e-10'); + T('21265617482392966322733539382375295590999877466103755238889', '-352694528885882768342.45632391826455624336', '221163195874277534438.6290731360549322576'); + T('-1307793651716492003679476694280841686029964.654735755057269084', '-89261449075265.032742854725660037428102593', '-30163701590263.071635290265954147983863299'); + T('5914702572.83224302033871291000363', '-0.000000000000000886450497717875025851850', '4.967313925042229243866e-16'); + T('263730784.16038091', '-58734788098538430712.3', '263730784.16038091'); + T('0.000000001854032486183296214519', '-0.000000000355070869879153', '7.8678136787531214519e-11'); + T('-31884740503448053282155167604', '-9334262264990899277546182645450.74129764939998707', '-3.1884740503448053282155167604e+28'); + T('11557392706097.3454852500293825329599950094143', '2.52303246491988770256', '0.4512976779915504676799950094143'); + T('-71596377460606253231921860426759937622737054', '4887438282022459980414.75188230501531', '-3.01046057949271437163960532658638822e+21'); + T('233.31782712896541142', '-0.000000000000061176056765670789881258454117135367568123364367998', '3.1635882250994428931750935802393986143468670072e-15'); + T('365.885010333042430035757670950257510558158528', '0.00012', '0.000090333042430035757670950257510558158528'); + T('535753130902782277401868.255371439243127', '-143.10142002690254095307', '118.497092196935045142'); + T('0.000000000470393111281920', '-51.9318603511297101', '4.7039311128192e-10'); + T('13458.12201247046122595270157739959756782786002', '6387839814.018150125742976314622109379608051443', '13458.12201247046122595270157739959756782786002'); + T('-5.831075554650765329716', '-11970348016752784794040399571598021585032773536121.380962', '-5.831075554650765329716'); + T('0.00000000000262395619618229355713043239', '-87185298877269401376712558913.7470', '2.62395619618229355713043239e-12'); + T('141.0', '188771.3963534769931324152', '141'); + T('-9236972803514324.7806408277606845', '-0.00000000000007809628857086731989071851354', '-1.650710030068608338878824096e-14'); + T('1.2974663175859402553689735548443', '-0.0000000000001062828009896091833554986467183627932744813138557760818085', '7.61109945460281796836350249437619994413734484557859166905e-14'); + T('0.0270550933935502424060575696830352678525170478229935415832', '-451291.14957148684', '0.0270550933935502424060575696830352678525170478229935415832'); + T('-92.3630313298', '-0.0000000025494749392548', '-1.4586947958892e-9'); + T('5', '2.230', '0.54'); + T('0.00000000000000047652193195365538282280574751077165811188614512152190254', '-0.2219408161751349997065647158660685689613558', '4.7652193195365538282280574751077165811188614512152190254e-16'); + T('-11584699154744825490947848080895226756397973538', '87574.623306', '-81181.758812'); + T('677064505276662938729662254128.29994114', '707.4', '272.89994114'); + T('-0.00006824223430307152214885541', '-259323624933420687586166700605273793769205140227.53768209', '-0.00006824223430307152214885541'); + T('42649.4427', '6691515410463', '42649.4427'); + T('-1168876626035009643806416736226233', '615863945.824703012224567830126', '-392657283.272481237688137233096'); + T('-99850601104584713060403542.32679025848626541', '4984333871554095648842233050848980249665273650', '-9.985060110458471306040354232679025848626541e+25'); + T('1', '0.000000000020714284873094147095452920238214225', '8.535434304189538408987784126387475e-12'); + T('-40382172868238902141831024410171370609.8497129774930', '1302788268944196991798424860.3558746', '-6.82458913661894485779787415457058777493e+26'); + T('-0.0000002901522230060366316110382713638332433750838395', '1797816163.6022664896252467454244679282', '-2.901522230060366316110382713638332433750838395e-7'); + T('15.07', '-202256.9', '15.07'); + T('0.00000000001513399901378093', '-0.0000011431', '1.513399901378093e-11'); + T('8067543766555814361258.9809653', '-1063782.5113', '771356.4731653'); + T('-0.000007452478259217127353', '-1269742061.7650', '-0.000007452478259217127353'); + T('3083816844578.0036462734892162357142', '-62.043', '12.0776462734892162357142'); + T('0', '19676669.3210', '0'); + T('12000.579726', '-0.00000000000000000011473979542082043429', '6.885862514870385948e-20'); + T('157760.0162346769710343762123266316522595', '0.00000000000000002072', '6.6923266316522595e-18'); + T('12.56649651', '0.0000000011486174569183055328395211586383654058895981238621', '6.243894925921526655230893363862847927286267313448e-10'); + T('1619418216785919248186484303127025755692.6', '-5.32529795', '2.4485417'); + T('-7894381522375439472424053746795845545020655311347324165373', '22494560920042179494908995572822416399654.3988', '-1.79805849224239031722296510506179645210727012e+40'); + T('0.0000000000144180437967392496819227076903747539933453407576', '21.003335', '1.44180437967392496819227076903747539933453407576e-11'); + T('508588836239.155636417726778522264', '-402450669.2', '293641039.555636417726778522264'); + T('15935406874866887008916010678224808183941097', '-20533021922984769932524329949941646599184', '1.781862630705541277130637070090422974313e+39'); + T('10577358966.62645197', '-3902498.5606677997620066743', '1587867.216714614961912647'); + T('-2.3', '-247.215776', '-2.3'); + T('-0.0000000000000000004534097652705', '21900.378494953943', '-4.534097652705e-19'); + T('-622302543239963404259053402472736239978107701', '-37144508134104022867053839784711386961366245133.798061', '-6.22302543239963404259053402472736239978107701e+44'); + T('963', '-1143859.8306131050309784880555908137246920', '963'); + T('-1105334398087211096372825533031660097846.368', '676850877469691.4610087010635866598320915855', '-528741020326514.019428617163961817534907474'); + T('-33.537', '0.00000000000000000240610602831844082653894660603468520326205996616490648230', '-5.055045646408436609503461106111907664625346674246231926e-19'); + T('989.69', '1818860793340242.34985869797714179945790', '989.69'); + T('10897111350996763207208776906688937.9374615427', '34065063399932552093174621472004861573778946476274074', '1.08971113509967632072087769066889379374615427e+34'); + T('-11632431937037532580778695673.04032', '74582043438.8721965449504177221562482147014523596481', '-53296552278.8841298987146598409845587169502001115997'); + T('-141.4055769529530650', '136398726400805051012116675708221546904997943.0983953382506760', '-141.405576952953065'); + T('2436945370.995', '1123321514602145559580', '2436945370.995'); + T('68966344530824.7651173919961179400965271017811497107820', '3016650.5058630595142431070', '430737.119987074593653282096527101781149710782'); + T('0.000000000149640169704895568509292298172960103', '2388965841.03588731292125318485549177319506347036', '1.49640169704895568509292298172960103e-10'); + T('0.000015', '-3304.73941676117143286536062311830598946', '0.000015'); + T('0.00000000047066315132394427031416', '-6192', '4.7066315132394427031416e-10'); + T('-0.0000000000000000000581928591150593239271964107701426222875128', '5909007611163710886717422164.5826709875973058037321', '-5.81928591150593239271964107701426222875128e-20'); + T('31384923094914821999292552425.2009815380728309425967', '77537672972.35166', '11679771345.2858615380728309425967'); + T('-37567843820039777389745510805385', '-71883985.6201303', '-21998426.2683717'); + T('-8457.2', '-0.0000001173257195508166367392288464056131809270998457', '-2.69885424250247290675786668651098778106586768e-8'); + T('25100609273081546346038727027615', '0.0000000000000886831920439450', '5.162428876817e-14'); + T('-18047576.1098270311193001138015699506418833418804938917', '192214125807611.95755841586183852694517418512423624080241', '-18047576.1098270311193001138015699506418833418804938917'); + T('-95.588906373514114132242', '-0.0000000003929994337493746273806772122562877169246192899290', '-3.19339159019421511190151559546325880388122429492e-10'); + T('-0.0000000000000000002355739833279382506655556792223696880503752520', '-0.00000000000000079651826138154154521027236636093398105375492817', '-2.35573983327938250665555679222369688050375252e-19'); + T('-2007', '-6160033729282.9851660562442', '-2007'); + T('0.00000000000094972368099037971103433', '4734161412127674820247110768919593576233188914.242822976357', '9.4972368099037971103433e-13'); + T('0.138175287929598290229868824644141412392715', '-31558584857557504718252045560.11304', '0.138175287929598290229868824644141412392715'); + T('1196620705.9415675785887940558444736246545644683738095', '-70465530484696222361776144167727350283884319.64044686', '1196620705.9415675785887940558444736246545644683738095'); + T('11074860894', '1561765758632.45', '11074860894'); + T('-4381924184574059696448709.53108872210260149095882186', '1.028', '-0.23908872210260149095882186'); + T('0.00000001155422786572893769342087552370206756710219340', '-13931734385.2', '1.15542278657289376934208755237020675671021934e-8'); + T('69191800707.52', '8416.42298638305', '181.0075723297'); + T('2081967242.78645435603091', '-0.0000000641307577303646051321340042511613883', '1.04729585981376168223728825373660659e-8'); + T('851318799560282460315775006926769346175917826.47889714', '3053712.3623410179455158701230239730564268230', '440718.735027453982530562337797644313071866'); + T('-10058222.5796344546386', '6627451174822895.34794097800071486253721590178533538', '-10058222.5796344546386'); + T('0.000000000037566442917643747268847042234718910033651246885819716699339', '1.3779', '3.7566442917643747268847042234718910033651246885819716699339e-11'); + T('875.90002405088', '0.000000970077655599692785652735177637', '3.5638028118889148093740648709e-7'); + T('-62.7931846870391496', '-636485693987795148000356.1626652406993787', '-62.7931846870391496'); + T('0.00000000000000100341179', '-544501716519662.633193865233920', '1.00341179e-15'); + T('0.00000000000000351499628540049570637673', '-223431373521.7926681956463703562745846396661', '3.51499628540049570637673e-15'); + T('-220603353886874667147934643649.87295033625852695', '14892.592908', '-14434.15489033625852695'); + T('-0.0000000000000001612847241392420250768267369', '17433478642639304.4236073577621811634134', '-1.612847241392420250768267369e-16'); + T('-1883174595828380403709352050091085026369077660279268.9', '-0.0012895', '-0.001097'); + T('-125549014214.7375819121786172926612698843039792917253281', '-101.5885766453', '-100.8153792133786172926612698843039792917253281'); + T('1065766474589037077293252213448', '104.84555', '81.7216'); + T('-0.0047533898584759553535897361825760775807323217889394835', '-18213101567414468503998329412491692494599546949.8', '-0.0047533898584759553535897361825760775807323217889394835'); + T('1270005291407.8881300436', '4138621074845956468.09769209', '1270005291407.8881300436'); + T('-260441856275307932803222450437995247080731478', '704992903069127.4325788', '-431855187882906.333326'); + T('-0.00000000000000000009754763692467059466885260432113614665268499743', '-1095452837.106034703346392429672156', '-9.754763692467059466885260432113614665268499743e-20'); + T('15.2', '-9898.141488362', '15.2'); + T('-4.642097816103323517795932640', '2320173035769155029864.2360071417144711754883993503027', '-4.64209781610332351779593264'); + T('27232043073441728507866158240.138995261078', '-215290045818292170941580969748443497', '2.7232043073441728507866158240138995261078e+28'); + T('-7820551181460133788154158506805766936661586187217825438.43', '9043807302.81268', '-8827979159.46068'); + T('40454701041551859098452066940764312196468.06490346453770', '1.43336157528769251880838', '0.053020665769834197966'); + T('0', '6893071800513.175', '0'); + T('-23294105221282442798534198559904763230604376248570', '1108006854160532581.643019501', '-634324850398077026.428796591'); + T('-70.48', '425148951767015.661297750583259821000170', '-70.48'); + T('-40097263.65021696329198038628255519578725029828361985869', '8008783649.929271', '-40097263.65021696329198038628255519578725029828361985869'); + T('-3744957147569480041094559658.8985734744', '-1.39589737574796529539305515486016767152', '-0.007414375129527604087594017204876948'); + T('1', '12243765348634238072286305372976115524601373993259986307', '1'); + T('1133226250873003731000285272922.678821486883559776563400259', '-48449121713.05851357863749277194726', '46399517902.028653911554106994622540259'); + T('-1110.00985672050392625354008504049692', '0.000000000000000144467905969585159040405525015114077352752345766119586', '-5.0667226393916955793430389451065661055080904169044368e-17'); + T('281516884461013501680.63', '-1.4', '1.23'); + T('1424834076734161906.49994168746374', '-0.0008975084074165482738612610040251114952525910764632040285', '0.0003696875090618801911161885049781983725485998646848861645'); + T('-128763476617069.02187580755667', '-6603.36282886993434', '-2812.31711094080867'); + T('572750920744637008914545508209975834156579.5795909538492834', '-11502534832438064096814', '5.5309188778180859429155795909538492834e+21'); + T('-0.00000000000371736421699926447258798163058670009', '257486.470069146779', '-3.71736421699926447258798163058670009e-12'); + T('-0.00000000000000130129857', '0.0000000000021237415884955381438534891507974579736322323393189949494486', '-1.30129857e-15'); + T('97510480169357047959.778521006822362538', '-0.0046089528809', '0.003841092011662538'); + T('0.000000049938779602084071943723403', '0.00000000000000000040598762102204974283610961143933322030167695316672919233780', '2.328791623754087509772477793320317342677727105556945004032e-19'); + T('-0.000000000000017579612833728413841360648325607406735458075688296134041848', '-0.00000000000000000046795016181219', '-1.29104929872111360648325607406735458075688296134041848e-19'); + T('417587148573267450086061214415849335522635545129971', '72162262599593511511391535.25753637130715', '1.588290674385543384224627617743657423135e+25'); + T('1899704999505146.65318875024320183643806671', '8011298158372506449467236619268.06739540', '1899704999505146.65318875024320183643806671'); + T('-0.00000000011026161484148139283420032525', '3', '-1.1026161484148139283420032525e-10'); + T('-641378081607809826819509989054058308747306', '-32614433220951683931.97290822167335112076028624', '-32321533365320656543.47914416134229484916012224'); + T('73426.2174993055579013322865502961038551', '-22991170194389000791863400240', '73426.2174993055579013322865502961038551'); + T('0.0753432448671128796055779867138537182985932603289568836', '0.000696623968026162316598353569181604985489965', '0.0001078563202873494129558012422403798656770403289568836'); + T('-77918852302.666', '1', '-0.666'); + T('40834438105282568531887549132894212920316057.4119', '-69096.2816004', '9282.443256'); + T('0.0000001081007656128892877603069470142579', '-146763.9202434867', '1.081007656128892877603069470142579e-7'); + T('-19065040207291206222014126191923749015295117270838828148117', '-59458447985079036923403398069307106616288796371525.0', '-6.933918951125046770982521962871037753580749088442e+48'); + T('-50.454890710', '1.57811064514885740036542902647362298773', '-1.53346071038542058867170017931768738037'); + T('0.0000000000000000029130545090762297054692', '-0.0000000000000031732390760633505614997707573729383', '2.9130545090762297054692e-18'); + T('-0.0000000149477116306405895605823556902142791919238574341861798', '206795087.6', '-1.49477116306405895605823556902142791919238574341861798e-8'); + T('0.0000000000000000071', '5470646583815966704709512378933741816164381248458912550', '7.1e-18'); + T('-2357250201772857325710', '-177521457545596938.745399459682135971137972095', '-120288482421173048.58597434059857523000652259'); + T('0.0000000000000029091', '-22982331952112767752908263644179706433315770.17359251594', '2.9091e-15'); + T('70410732817903246800961841933624181629.60085297037', '0.0000000000000000000103454336294636075289', '3.524329949160506449e-21'); + T('-27369983157.1458440282472352878', '23.763912432052919566354032773607568646834308263895', '-6.32537443505237861917552362621110083695094947093'); + T('65056.653', '32408712.331948093248921801757883672', '65056.653'); + T('-79299703594581340711344589476907732591.49009044336', '-105750.084896815429373214442762165', '-104265.478222642869860762619825095'); + T('0.81012834507591033602543', '42890384.300', '0.81012834507591033602543'); + T('231647806.280', '2306380.2577620003122660083794072550721890979450664365063025', '1009780.50379996877339916205927449278109020549335634936975'); + T('-0.04266283385', '-231833828.7857580897334', '-0.04266283385'); + T('2.9617', '-417567079608596894283345450125373793666347.08065279467956618', '2.9617'); + T('0.00000000000005671393697246617', '0.00000000002372488709978367633405147788335971135485863563547', '5.671393697246617e-14'); + T('20411507237949901.00007048085657674491003063099663777294', '0.0000000000000179718685180331186307', '6.87219923858062022287294e-15'); + T('78562464348554551960.51656952881040712219428', '-360452902524757862924847627712001.90071009646781972063', '78562464348554551960.51656952881040712219428'); + T('-1784.7', '1.107', '-0.216'); + T('-21207.62887', '-30083662469912.93830185385', '-21207.62887'); + T('181794573664525362505571198963.74048513161596812818', '-0.000000000000000006966183124261834480', '1.44054114626355864e-18'); + T('1497127573695.63303', '-7299620151322256127312252586', '1497127573695.63303'); + T('-143331341997458746373473632414689879129001.0510139759652713223', '-1039245311665254920360224447402081.203667', '-4.163981858938863521252654102664372514539759652713223e+32'); + T('-7.42318768495154312740078', '-5725.37969786010009373491349369', '-7.42318768495154312740078'); + T('1.7', '0.000000000000000000358545942655', '3.3438498447e-19'); + T('-0.0000000000000000230187885344529285768794826532', '-97947.8515169117863685621966428355043134881268104806819344', '-2.30187885344529285768794826532e-17'); + T('0.00000000000032661966', '28146830442002.99800238434978678633563002677', '3.2661966e-13'); + T('131444649737941070', '20345737092636.1111991821569377453431132947653', '11188119511791.653283266182165083488115816162'); + T('-70.95', '0.00000007627177390524757759931', '-3.355915079851121925592e-8'); + T('-0.0000000359844794247092743644998506637111', '-821842552305272024445101236331.431697024181064278117', '-3.59844794247092743644998506637111e-8'); + T('11559244775803152829995363390516552788279232383634', '-0.000000003810335052601512043915061311335400346835301683933', '5.89171798463495478689746049513730071363650371891e-10'); + T('2527.74183', '43431759.31595200153', '2527.74183'); + T('-6716182884374088980171.84153844', '74722140.737467381748608636560886010812295783760526770', '-35823304.85096169083049875979729671181231669302395569'); + T('12972207321585575187726304322503969808542965.246569633947495', '831901009396237267279615788531418438.849563723', '5.26615819172264979504828722953264235810155283947495e+35'); + T('7665883776671616025905367508643801886903976481377913', '-0.000685209961385', '0.000289003802725'); + T('0.00000000000000130', '4084984.0344696574643138186852656784876', '1.3e-15'); + T('-23744.44703412', '-346011607426.441393159348354522971440097840365544826', '-23744.44703412'); + T('8434642778165686647233872583840184835847700452.5722438', '46', '26.5722438'); + T('0.0000000000000044601453487291992988959798617835937678162460190934757181', '-34957408111696949000006895.170094', '4.4601453487291992988959798617835937678162460190934757181e-15'); + T('-717775516482666361197134085201665528104789114410', '-2', '0'); + T('8276714696969298506623725320011988.89729', '-0.00616112392295074383996719947907960025278866567521351783', '0.00016560800550555404330800366686568701046935505208586586'); + T('-742605.43840212025', '-33.033107325052', '-21.18573495129'); + T('1172677829393895.629925304143622500366643409500207216001030', '37.100', '5.22992530414362250036664340950020721600103'); + T('10537016513706770761008.26248373823335994957890378', '94969063464568723440795883667.8253648809642701', '1.053701651370677076100826248373823335994957890378e+22'); + T('11451.575753798226574650597066008283798', '740458328282622534051565222682743827901164966582017856', '11451.575753798226574650597066008283798'); + T('1.572', '49515379454772293729194042647.91538', '1.572'); + T('-1', '7.059040', '-1'); + T('-34927437284064606817941117126.257390774', '-8736962940.827', '-3438064168.261390774'); + T('25409.947283363583521450111285770286331002016996164554', '-50439325984133502226433618670969699480790', '25409.947283363583521450111285770286331002016996164554'); + T('-541726513791047904976207535366014345', '-406733502885622404519647553066345.1969741566', '-3.642214502844845605566422347088878273975654e+32'); + T('-890820344589514985.0665574100007448', '-159324785981391287370653452100749211478426067970583818.931403', '-890820344589514985.0665574100007448'); + T('515196923836873751650822811674732842614640352.18206884311573', '440807068101717819348891.987', '2.0134973484292983702212721006884311573e+23'); + T('-443343.14120147', '-81519350429738153710983021502973.9213162228', '-443343.14120147'); + T('-0.0000000000000902702192042232797334789149068563741867484672231', '-7320', '-9.02702192042232797334789149068563741867484672231e-14'); + T('-45277903240084126.84557360106009', '-20896812318476199906609422.521834898564460854802489', '-45277903240084126.84557360106009'); + T('28165869957795828694237799735446687517170194.348151719250977', '-38550284385557947404379815866117040.122550', '1.842769006556153994091762719885883071901719250977e+33'); + T('15021482085.44976192138587853899725782258348', '-9904.699', '5677.35076192138587853899725782258348'); + T('4917.303585861', '-18.964359', '5.534604861'); + T('175476267.7992032958565', '-1036388592.3909824125745400050986887954', '175476267.7992032958565'); + T('170405946320111', '-17818386128487328808126289961', '170405946320111'); + T('8550180809850301212655626511667743382400090.02', '-6540107956116752962567.2', '3.55071180489327368509322e+21'); + T('-818705136461275003.08078930092467399502130815326105604518', '-39778740814076648429007.124204603754658', '-818705136461275003.08078930092467399502130815326105604518'); + T('-1.20675758374006649995086560', '-3', '-1.2067575837400664999508656'); + T('109.3', '94.6', '14.7'); + T('0.000000065573671480225125603602776141267516038374303', '553.480300880442516', '6.5573671480225125603602776141267516038374303e-8'); + T('296362415.06624949768701', '244445717421187779.650675510094172662242508672751839189', '296362415.06624949768701'); + T('29374332532.3238432343394', '0.00000000000000000005936857517089413921548905299963269225088201364509247681385', '3.119291720989480852560154607439451452770778662623725737015e-20'); + T('328821752173776490.719819431468332405273703018690', '-2542341869177777917056573693425171357215.954882228930423158', '328821752173776490.71981943146833240527370301869'); + T('-0.0012143107904367445170056', '-1003.4406', '-0.0012143107904367445170056'); + T('-3168184610490460.8945194460195', '-3573568062298202180968377963159', '-3168184610490460.8945194460195'); + T('-16901853866719201501332692.8432369358905099363918280445405398', '-31691345775963588152383111237433553165931816.117915', '-1.69018538667192015013326928432369358905099363918280445405398e+25'); + T('-93621088901252.29805520418', '-2.0188684214862682192621695358466139055618', '-1.8934621792649249958167189632731171199736'); + T('242258091070118423201219529950729719863290357823444711.8', '1108727758065732675.6587799039404934075575195715350085051', '882685173218682761.8921148545569801605823909846489452171'); + T('-3399066202816.303625', '2618943', '-318805.303625'); + T('-28834481903864652309.71183', '0.0000000000000004565222353934092602845491745327666313637270997826', '-5.34810620719243797216459942508340612766671723426e-17'); + T('213672683755841644553544017650723723396202652336.302605922', '-0.00000033677276118692029744817391550088675892', '2.934185014134463864485655375166849324e-7'); + T('-6', '-999457121904797189706147649392540679689483876019', '-6'); + T('0.000000000622195463951304359', '-448.8352331', '6.22195463951304359e-10'); + T('0.00273159264338707604', '131503167', '0.00273159264338707604'); + T('-0.8826707721080745', '-70.82', '-0.8826707721080745'); + T('-6.169582503328100', '-1', '-0.1695825033281'); + T('161790666328890520068178.994438807', '22534.8', '14223.794438807'); + T('-617570557615637.65256125752701839451975945', '-0.0148696896889671858', '-0.01332652388531174471975945'); + T('131606.29662152417276937754010546930907406', '0.000000000000009288216788868504125788635720602972497436211', '4.548851830590558791346414703724411897415634e-15'); + T('51.3977490595725037876457161936459379346361103', '-143177764436300664530563651.36873324', '51.3977490595725037876457161936459379346361103'); + T('-0.000000000000000000055480154187811579505094934438713145361465492675145621278503', '5', '-5.5480154187811579505094934438713145361465492675145621278503e-20'); + T('-426820677348783115368590283660534000419588.633035253', '5649682945695760173704.00', '-3.898820592824218831748633035253e+21'); + T('-18877995762227202359719425947641943773826', '0.000000003168736894305713249647662065', '-2.410163138756323232829425645e-9'); + T('-230734625.125675830245801', '-24887751.105039540142964', '-6744865.180319968959125'); + T('-2.55', '-0.000000000000000003328273034182616010363199785', '-1.2785182565162876532434802e-19'); + T('0.83072894855068062175257214671400', '347832.9728307138', '0.830728948550680621752572146714'); + T('1554', '-0.000000000000000009695649707683834887551815366596414977600762431389183799355', '6.05878904773660946108899894496980695021759226671044100733e-18'); + T('295506566.953646020992273150648001797147299', '-21973527294862.8233628', '295506566.953646020992273150648001797147299'); + T('2181379173600069460.2272418575314841', '-33121557.64630663141', '31392819.5003625467214841'); + T('-1102425661172241572593712529.4318', '-1655029068876808.4683087946075879962249', '-666832641952964.5659918135994689948094'); + T('98281131957208481431777620.35596736255967554627181769', '556842234645404079383345567305273.303513803874857641931', '9.828113195720848143177762035596736255967554627181769e+25'); + T('11835752763446.82223054394121198', '0.0000000408069264362150926140815302294483025590', '1.2484009569088335298499242835706081261e-8'); + T('-50148655247666948.0767382', '-374032530098.019610', '-243774774968.8659882'); + T('-173042648372113278197497944864583449315536350193384127', '0.0000000000000000000366841720', '-3.265408e-21'); + T('2', '-3771771239046067919037045', '2'); + T('-0.0053190456442251124794436212618', '798725962261113.7', '-0.0053190456442251124794436212618'); + T('-370307', '152017395754118405461987924364280', '-370307'); + T('-277699892815627339975120', '-143.6810986', '-27.6564706'); + T('-5775916.6464283799155032293780149633514899100', '2134.505358', '-2079.65303837991550322937801496335148991'); + T('1429207694023.57717520337', '3', '1.57717520337'); + T('-5', '4', '-1'); + T('-52848862092.572286019', '813661418640716426286793.75702600471722081556694278784', '-52848862092.572286019'); + T('1844275644561406088.1', '66184292639.361611328054340279', '30103188873.61915648682705296'); + T('-195554.912236539033400998430626025643711716348904995', '0.00177428671859871088664745504177813109978841798', '-0.00128510649380978957377209918017012798784363842'); + T('78.250868739', '200592382754.965094921301649595609', '78.250868739'); + T('-1.605', '-0.00000050108803722427943381', '-4.8521755346940298951e-7'); + T('-175950845282749621749.3060626398844805224872563725036868663', '-0.00031', '-0.0001626398844805224872563725036868663'); + T('570951706006271.614500911029949202716327198256', '9579594454359595046.96141239240213595155989807741151781', '570951706006271.614500911029949202716327198256'); + T('-101348056.99', '1.2', '-0.19'); + T('0.000001115108462416442750881276832385920295416166957454340', '2.391104283537695024603255485729184', '0.00000111510846241644275088127683238592029541616695745434'); + T('-384.29267210', '-42.6115840552808285042372718273816', '-0.7884156024725434618645535535656'); + T('-0.00000000000000394320', '1490433052780511340442598422397421169.9727476', '-3.9432e-15'); + T('-2', '-124412814393298131.63102541685397', '-2'); + T('39255373365250694983.01012619735480364604931589', '0.00000000000028924174', '2.8356244931589e-13'); + T('83649682374745658097928332400566916840.904100062101', '12515556884', '3441295412.904100062101'); + T('-37978362152425454856329406585920723065797640812416', '-40807030880665280609832.633548429382227699775', '-8.44139811680207521268650854435671218648655e+21'); + T('0.00000000117630746081997641552101447', '126289176518.39164497878613023988707803064880568', '1.17630746081997641552101447e-9'); + T('-1880854096029528626232093236836285358.8229354826767064', '-13.55', '-12.4729354826767064'); + T('0.02073', '607.8621233700367', '0.02073'); + T('-804231633252810472161116.753061839', '-51.139385439676348957', '-3.050773812069762116'); + T('5877876231822600040431086011103959340188703599.31851144', '-5388452483964553888.345931647692324169003115975043825880851', '1930961800526326288.60986182402199524006990099301495612649'); + T('77946964651085243.218457918863112', '0.00000000001144602007465348949097950134087916681540997', '8.85127498118220306889399715954400610693283e-12'); + T('-288323254635330759933511.4835', '-0.000000799099661848570195554780769778567229952228099', '-6.07308413294153274384235191515598586543048706e-7'); + T('34156.9612032703394033850068373910911950393885281598409066705', '-790.014721903868173877309773404251366', '186.3281614040079266606865810082824570393885281598409066705'); + T('-62309462096741992398456920.82284105487052640595', '-0.0000000069200714440436038475285366066199260381235724356693', '-5.1591434837700767752333272066996752713093302820209e-9'); + T('-0.03081418420901964033772890', '-2258.6097737546792912978930040107448576', '-0.0308141842090196403377289'); + T('19440352005832939832434953349.524735305804224848165284560319', '13663546035.3870791', '9500641135.581258405804224848165284560319'); + T('0.000000000000000000174792814753795064312182753542642524992498259236217566516', '-77523522800322397605770.38924241467650641624', '1.74792814753795064312182753542642524992498259236217566516e-19'); + T('-1815265994282465978739.24367005494108', '0.00000000000000000687759', '-4.05185e-18'); + T('-1.34345147096631', '-6865002719881812387470285582221951284174906039012461831', '-1.34345147096631'); + T('-1331063.88165', '11341955270415278370914418086588317083074.0482', '-1331063.88165'); + T('2.046', '-0.0000000000000005877097220931', '4.012083803814e-16'); + T('3545.91036649009998376741645699670257681183407320627384466111', '250.0', '45.91036649009998376741645699670257681183407320627384466111'); + T('3304.02', '299035.58', '3304.02'); + T('-0.0000000000000000000942622', '-0.00000000000000000025221802', '-9.42622e-20'); + T('342502985242332681201199551069.576', '-25743002421256401.04397330499669057', '13427630853006016.61638681371921084'); + T('0.00000000000004233681060170499506821015920037', '255095113757561337754353944933355753406.38155', '4.233681060170499506821015920037e-14'); + T('-28.5269472861067005353912', '-270472762833365.3801132655767', '-28.5269472861067005353912'); + T('-277847759.515216', '135166968528972', '-277847759.515216'); + T('-29856675437162421995266099874726439278', '-19896996992.6267371979256450155346521949519355', '-17602172309.435172515150769689705114114019276'); + T('2', '-2017800319934087984840833728734', '2'); + T('0.00000000000000007184336760908973', '-579084.38782881989356541750992', '7.184336760908973e-17'); + T('-0.0000000000000199905729465678002272254515680192399295794760827', '0.832997729248146391449238508309446517475', '-1.99905729465678002272254515680192399295794760827e-14'); + T('-0.000000000000000127832283699455', '-17051853.75327', '-1.27832283699455e-16'); + T('-1698692.68276072', '0.000000000000342190555852264550226068807192', '-1.32201147548526749368535158272e-13'); + T('-89715846809778312.0866002761050235922348184666331', '5683352', '-4378864.0866002761050235922348184666331'); + T('1867077.167389665646672502266524422230512016', '-8121328626157873800223785135.111300799674416212197931655390', '1867077.167389665646672502266524422230512016'); + T('215901.879', '-29.8', '0.879'); + T('5119759698.60147051603509092616983122712457476', '97582629730470.286607', '5119759698.60147051603509092616983122712457476'); + T('5632091904144.80457549', '-260531502143715092510.9558622691', '5632091904144.80457549'); + T('-0.000691477562292642246090904144721704048411477714', '-202833029325548043615849420487515503451726003', '-0.000691477562292642246090904144721704048411477714'); + T('-5014290818995813355670219945.489013253728448913277', '-49', '-38.489013253728448913277'); + T('-1.19', '1.14', '-0.05'); + T('6.01200548016561079', '-25.3', '6.01200548016561079'); + T('0.0000000000000008934209997058692257', '-9845722515207.841', '8.934209997058692257e-16'); + T('-8271.180908766644265814', '-532.21', '-288.030908766644265814'); + T('18149268424457.205469', '21102403', '20109889.205469'); + T('0.000000000000000005630166790779595999136', '0.000579481131868747005452691950764827230956628754512075686', '5.630166790779595999136e-18'); + T('-0.0000969512096310107418573215633893505216', '146313161286844954805207556174167131617843885.68176097', '-0.0000969512096310107418573215633893505216'); + T('-4.4', '-6.1775206278626', '-4.4'); + T('-534834.70968332438874787934900992041831587', '-38363548234134309078598125637011026.84251944598377781303061', '-534834.70968332438874787934900992041831587'); + T('-0.00003406607808', '-0.0000652979835334948349904827499755959633629915945362770066', '-0.00003406607808'); + T('-1', '-2110983581171793713817325.1475619322694002968191006', '-1'); + T('-80227305.1656', '1944676344179122208154551672251566716245569224444.0', '-80227305.1656'); + T('-45889999955242942968871808966625304007272799508621', '8550404.862499169389885162309987843918802343917887', '-4729231.891447747380274990179385678025799484562412'); + T('-27878389918833569427320729603169170858.95474004228507890192', '23932009803269840591376795875', '-3.41193385706058529612983948395474004228507890192e+27'); + T('567202319309292978520604165782060160263365186515328568', '-11334572195439351811672.1473522129007618', '8.0497193228717959915213827171314311074e+21'); + T('-8697359171345893713842426564522034778871562.5154932', '15619404167072.618217767650', '-3493725216866.96939850825'); + T('-218.363776', '697131146810968473489.82299654842890962', '-218.363776'); + T('26202481114591937993.735307329625927271775', '-304156997.304184411106538785706126202394720899', '140113250.272976945765125367941961760435198404'); + T('-0.007731087980246464302345811575', '-24413038924588027145692146.387588856788321', '-0.007731087980246464302345811575'); + T('680497639988324180.39625512073408', '-4532942013750624897951996571799269425412122', '680497639988324180.39625512073408'); + T('-0.0000009293033204732942233089593840249955775555658283600103866', '-173511.41982571409206143199884579179605', '-9.293033204732942233089593840249955775555658283600103866e-7'); + T('0.0000000000098336953795657517132120257800838', '23300757376665714817666483157023722058388.5033214128449579573', '9.8336953795657517132120257800838e-12'); + T('41084687427290874759976776474299799533721185272283', '193585163.52662', '163743760.94914'); + T('-116.95132', '-39255072372928843286086966431.00', '-116.95132'); + T('2347142650267689935587322698.7284595028691', '-3', '1.7284595028691'); + T('0.000000000000014286361610', '0.3810969482393140582407695856576689976423039861', '1.428636161e-14'); + T('-7308074599589641011784024611055476301285', '-2979647.083231856789860049490151382783519022739462374', '-41940.765367177770459610205511353021036633288408806'); + T('357753139664202.5873944', '-41.95942286390296', '23.4743830801152'); + T('854571067694022997.4884', '6537373963.3180845607368152893095548460', '6053336053.291260561298904945337925438'); + T('-0.00000000000004386908462560891112864885989973', '129740635819911122760039.7464589619454', '-4.386908462560891112864885989973e-14'); + T('0.00000000000000021290574183432875072166863135108510281580702', '61908914489485349291471752909373768165637670.8208', '2.1290574183432875072166863135108510281580702e-16'); + T('2871883224301570575582468652.9376262287274595077514806', '-0.00000152916795423240707414339', '5.3155439780727520002144e-7'); + T('3', '80708788610217964553584510306368.549353793563', '3'); + T('-10835622995844.77266724348161957054233451560047028326613046', '-1175193791680339.76056817361012416666902891954476177079', '-10835622995844.77266724348161957054233451560047028326613046'); + T('1025038648031221253.57383030896217', '-5242.40711853563044167975', '2542.2793327788128154595'); + T('-0.00000000252', '-220187026862816215614922589820191309081445441861274232.84', '-2.52e-9'); + T('2438882128515521004992810616244816644660.875', '-14585625494005545128827621', '6.211192260353379557970309875e+24'); + T('-1253637.42184071686942470', '6043.294', '-2675.5638407168694247'); + T('30.3149681983737', '3.96', '2.5949681983737'); + T('458648663984496211521246069201336181', '0.00000000000000041796956694972368386032730115563266442065659', '1.189340470755219691379214537787056846685979e-16'); + T('-877569106991311.769260729863', '2246530785645583.53767418', '-877569106991311.769260729863'); + T('-33180244.9424', '68040037.571844483716882853268188712468340362', '-33180244.9424'); + T('26056925297726128046555.65872815844589322660275', '23799748744565261102060860.628349245228', '2.605692529772612804655565872815844589322660275e+22'); + T('-2.932266679268', '-2061492876.118067901623547245130932150882910', '-2.932266679268'); + T('-24303392384298907971178613116155773044858954198134', '0.000000144547733182595133021', '-6.2763446759435083203e-8'); + + T('9977', '793339.568052455522323049704543732060826', '9977'); + T('3044797849984420605285366.474651143157', '25186260049851668345583291614301619318511974775753812002050.8326735955299366787084106211969141751506', '3.044797849984420605285366474651143157e+24'); + T('639737463904283952640443433078141655542321388667481890755297474427803997023609757112922145297681502347448794470168805201764741986941', '-14552442514714892538227035420.61249278214225741', '3.07716512012830819205367001585789874568359778e+27'); + T('0.0000009480666812553237528290117310639076036954221787358487462393246935364400792376', '1.0', '9.480666812553237528290117310639076036954221787358487462393246935364400792376e-7'); + T('16673429143256557896853574875292172327063389650998117777668136985538005.9156698099892691658894660539763873869793114863329930039146096813387028', '-107478408440617999633969729.9071529239187240331642550654002067338975836414285167506215860', '8.20260811545606661396908107304136068380872993912615354808000919495595106968750582594596813387028e+25'); + T('-2433298586307081.77465641473337660801763802817481653388429397435772288734383710955919905923279924807', '8945608818026652762135420517379.424606537007', '-2433298586307081.77465641473337660801763802817481653388429397435772288734383710955919905923279924807'); + T('-70843295832985633806095066724872543838444364150876355516508644344503020757888058408332911592444048015580157647', '159194370214483300881159411658565511338185028333524386712582766324718381977826309423371642975467856662959008464353958219661', '-7.0843295832985633806095066724872543838444364150876355516508644344503020757888058408332911592444048015580157647e+109'); + T('3.2263', '71756256022538928427069542438.00966178692388729446382444038774751007836179716329976575691385315023922435789196791754653262230986812059146', '3.2263'); + T('108061134.3910585273259047952072200021695505338334592792817809710438', '1260951025714501457005284501987116458944716243549637898428510181316826466436575714044748818353924236900363398289', '108061134.3910585273259047952072200021695505338334592792817809710438'); + T('43607983963968869595947769368216107706521387015680146006305613629433990860442947600228456010092', '121385730326389922895424600532542775257956396540395781939587936260842487516174244325430.384295616198856908112758', '1.1504925896106825966642741273863721105609952802207648727165046290817382897631508088378461034727326937297965944e+86'); + T('-2.6480956814', '2148671523057716670055099537649941488566244507589768590863804139800870729193528442.071130969310679730958621114', '-2.6480956814'); + T('-470479333263.84377245126007813562135983915023544360010239389244912214130585392185699431847364158901094167357758815083446794565320814454973581796', '27849448232164647723510637195798019946766053448137414448566670989993.67717797401551478004030639298176072944', '-470479333263.84377245126007813562135983915023544360010239389244912214130585392185699431847364158901094167357758815083446794565320814454973581796'); + T('0', '-6993020667326513594.01598727239030644128692238032346465300777782504759087255641592855556786881965341488969418534051814789', '0'); + T('-10372286284244779022048585', '-0.0000001930730138191035178741471788596965420386122185118633654121349245216394001018297980054707996074710125164147', '-8.47592995170001700266169749815180334434465081954780254569435821161404742961756995939834569063835498482552e-8'); + T('274897009856813.734380955979520483734957204601027214931003941720546146487845256149072527968056465339318846303131569226913408938616354923540700172412', '7', '1.734380955979520483734957204601027214931003941720546146487845256149072527968056465339318846303131569226913408938616354923540700172412'); + T('738408012842109785457164849764507323379297.79095792233769102310198027453532813226348191188862586945019214410536832', '15306177324248047715406533.5158700026', '1.506634005344982055089315836033881173769102310198027453532813226348191188862586945019214410536832e+25'); + T('0.000000001307002813605936443383593439823579112009200431906135937099617451361199016339230482184530115838223218189460633917243083200', '-156347131201.0667716470724866', '1.3070028136059364433835934398235791120092004319061359370996174513611990163392304821845301158382232181894606339172430832e-9'); + T('-4792567274869561212802263.9162146352653952716695372928501404982289832583166534206544945624150460220976057951121526613072397239125750526383369389', '-2571615359217819081745372380499521952091705406387642084116393860754896982150026573094709965566690085424189906211974018648786870967996877095142', '-4.7925672748695612128022639162146352653952716695372928501404982289832583166534206544945624150460220976057951121526613072397239125750526383369389e+24'); + T('-40.05748869168454725527441481953494139473673991070979113635160468475219376406826789262579745739976', '-41875468662578995790027634863433077814557063632577215827031.031982081918392876105825240291071725658144212578666', '-40.05748869168454725527441481953494139473673991070979113635160468475219376406826789262579745739976'); + T('-0.0000022907766811721016183225617138609000543876574860984718810338550238748128247445010491861049613', '-3279074504656188611648707.4983942082641992057679531912380705659521798322669577604617597486447068188912830230847051445600458515668443081070949175', '-0.0000022907766811721016183225617138609000543876574860984718810338550238748128247445010491861049613'); + T('-0.000000000340313277', '-0.000000001255112168870655023338247473949331250106676281883642901353991', '-3.40313277e-10'); + T('-50225365.1475566438998761801442412', '284028617245837000189928101232939099744527904229835535.835746075', '-50225365.1475566438998761801442412'); + T('63.344721423304857459331086841825237874925064097', '57155073593666.40553442288889921516416834083269742567707391607', '63.344721423304857459331086841825237874925064097'); + T('-405919933.1066287819696386581647229483641869199888974504501408794124002251348919063696581146156799005', '2647178729438306865645909642983752549443679075960964976334982663855617.77', '-405919933.1066287819696386581647229483641869199888974504501408794124002251348919063696581146156799005'); + T('-0.000000000000130754174234156809102364575558', '1512769765054847098913787446631276445464675564737758845532029029227218416561642292270741819169983956650914922547871552583245517440681359875', '-1.30754174234156809102364575558e-13'); + T('-42805325218726498366672740080295203192725414965527973209314316749.7120445518644682586008052614425260815242140724520046592053081', '0.000123298332335657505901061098051881119196170384724006568439947745355121025753230625359269654114501774394590171609541470588517', '-0.000032325304000891296915093212441483965264186154572168660357953720611674306961720593830907904561258705086770592138813164224068'); + T('-75210406056668422373802918016368260769067586508935441638493539318778550326.50528533489988415483952', '440622997.6355053630471029', '-340429684.42458949795004585483952'); + T('-1222922824327546500522220970819290434122898473371530650066004876062845284114.47721875136651190', '-1379027454245733767586', '-881180208974102493198.4772187513665119'); + T('-30656582150188875494703614722772772221409126232115063256882064964663663147033209144753246762464712.948730003091026599897432459556025696', '-2913934951186033025005819092772439514996587951119743767357433798109195725658300879072952407504422194931477368634077', '-3.0656582150188875494703614722772772221409126232115063256882064964663663147033209144753246762464712948730003091026599897432459556025696e+97'); + T('-6460522065030402275014019.2874194931729240210323452441436174892', '-84550416554285528170014238135907266547165974999578715609084038263.46129840157771271779704084743623515311185778729738812', '-6.4605220650304022750140192874194931729240210323452441436174892e+24'); + T('-0.016364386296444405533757351682555346465502820950062088651150128675773350177464733695707386307349689534592475248473689442', '-662351516465.9032743599806965674027961010966377214913163', '-0.016364386296444405533757351682555346465502820950062088651150128675773350177464733695707386307349689534592475248473689442'); + T('1103343525164099798605597537113983882179727144422100669678631936027042820706120285756898888893404677995338896062374110057717750895679', '91748792242920404655427917872546031638524.76204683127448751123961871264830271567888066463998429231705219642715054074868199195373673227635494751953719', '3.076328553647557636193208401331029365654020485144903415117912662361833098755573989373555529561896396760648323565651091850507799771898789127729144278e+40'); + T('-0.0894652716283348818337684886989151280762017763427032659791509101256464820297', '-12966.6884', '-0.0894652716283348818337684886989151280762017763427032659791509101256464820297'); + T('13114418006467273871814114136828793244459258873580991741468083458844936', '4759000553255960840361168620.3774494470837273198', '4.2761722071204063036259345611428685193209688534e+27'); + T('-28951495771059579052038784935583719855135835316878812739160571275658593082655402834569052032878823395641241968136.92574783376902191547024436698530', '-3031768663774740737176934765360849728180780437211886327623459816735182479695223019269147895285170079834032202516966937529989903070284157092473214668.7', '-2.89514957710595790520387849355837198551358353168788127391605712756585930826554028345690520328788233956412419681369257478337690219154702443669853e+112'); + T('2393723882767965821294763322394195744548891304060902', '-140981135960273230.0025778', '86668711566444988.9814302'); + T('-3224488416109581472101333552995382215707383396998952009319985210337309105631785072396803.91964338865842816515912815197781787', '102818159313377657005579111128189067224885718.140628085554012525428767372817189722551478405035418445112060974169840360487565259217', '-8.1595634025043932590241822413741540317627232887069206304733728507469999734166316619875329520357299837254473649437591096347440866e+43'); + T('0.000000000000000162614535957335504400161243268689702722565890737357214918357356590168738846464706769774484467251167640135858015634083627803179977581109102', '0.00000106803134832455205844954340150714254354766339175870844951355513521917239107042458407307482848507498559', '1.62614535957335504400161243268689702722565890737357214918357356590168738846464706769774484467251167640135858015634083627803179977581109102e-16'); + T('-3927.4031809', '-0.0000000035029583866611658486269733571456482523405154883369032001554318344330512146832289592781514675456658500756286236294841624823979375753461327906', '-2.6932691679676130460056959057199199083055272525449126446015947490329456323969370838199750438158748550553789684640297326857241719276712355958e-9'); + T('2592701578783037181466698143885146669128411307594485136303860886846006143235135122817836647040961317262173311873893155', '-2476735053659095937599211826013828027536167714634610749923083443278572078026871812469079060633677096037053974280521689349022693979242065', '2.592701578783037181466698143885146669128411307594485136303860886846006143235135122817836647040961317262173311873893155e+117'); + T('96.04335877730532081621787788158383111099350287030581038188446699532128180774027960706578', '19731419380883276630592147059117156462461951865864609673166.4479371059569659447212290002838890816175493435199181043231716596224989574671224595362826', '96.04335877730532081621787788158383111099350287030581038188446699532128180774027960706578'); + T('325023114939529014657978169628372760601480839073817238211782426113558723164836055970989007713696933704', '106223840476390782472173917090144170488887005908229635819404889799358852135763.040387492', '1.05150216674283695595324235267625323135707751092953285615150305395692443496735212656796e+77'); + T('-0.00000000000000033647992217979179179186957', '-0.00000000000000000003156150266634952697310752', '-2.74225383948473157029928e-21'); + T('67711097909563003399071203293654909244735459519561246144664768566612029202546308760389038038790661412078936611567061527752843866673871533', '0.0000000250914595238219383127319568059987481594970145735261435136883603429568', '1.1931039593784471503157310210681907892950978516052505236994695043296e-8'); + T('942307044555108835920493820461160734540503253601173239.92559776036964181595894387449189836528222244015903442453788542293705358104537', '-341315427404722210577937787468731.95', '4.792118403841194654638154768215812559776036964181595894387449189836528222244015903442453788542293705358104537e+31'); + T('-94130661760152187286400649382778774100247360104073487553172289492592909079685814047724040987.545360', '582.270609307311781203990506333968732999092917722', '-429.29359293653441023844377749905124203115916886'); + T('3313638785820621590180176562638.00992668522579291400041235393589181972606810182197653338554677836315505146', '90527335216395767852035210539.14', '5.465471803037394750690898322896992668522579291400041235393589181972606810182197653338554677836315505146e+28'); + T('-0.306955389372676043580907106603221153651127238512560719', '66.904579801977727781298', '-0.306955389372676043580907106603221153651127238512560719'); + T('141390900187450346.4446228025914244', '-255850256279441962530367023331027625163686895444551579538905939296353570502455036176395785785059148507467346341628419844281564795408561', '141390900187450346.4446228025914244'); + T('-31281694978574998092.32325767151', '-1542462855.73276869937293894166028800355184049470473', '-519767223.60416992161136296357867627633975428783569'); + T('0.00000000465065764192519767209223768411174160970559048882576195807880851927339930867660413363177803', '695983282190820825900286910552083743912340874031142607911981006600892487992712378.27501435873441215408642204715421306049', '4.65065764192519767209223768411174160970559048882576195807880851927339930867660413363177803e-9'); + T('0.000002299699', '105', '0.000002299699'); + T('-751157538.56375056723760379542086174039490718435868835658852', '-0.000000281235130627575144572363209737439923', '-2.4952865744315606513538295859410866335658852e-7'); + T('-1492151820229229.7080972636031810741838557504286290118227845200639080208767965213313891261997405771908981', '518534900915966328248424169467.8926376495890764066267652', '-1492151820229229.7080972636031810741838557504286290118227845200639080208767965213313891261997405771908981'); + T('477573736732380117689005270695410306243996300502014352674644518059825662478485969426161545468188704450446835856', '-44107433160804154887771872206618010747863690779283512394813143542934429409262133052168377457307.7801829320544', '4.26587795612760356325706643922768450442822164299827765862986444105362242670998534111196655345782505509351168e+94'); + T('-1708419546267714621908304198526.86627770247445328880', '-6561936.23828726436959004970934079513865615878124751998092886724055429258975571944079950471550813589210381712752008129366876', '-3255473.411304257056507423459569857877329230063250469248244750150261213529383645499126139366386431281819493395691345793149'); + T('0.0000000000000004527321152996104608068898547927166509996670208320178171898523653701667544358478578289218730097763063669131852', '0.000000000000011707656496202100248575019665652640050450842478555351860415163190039866', '4.527321152996104608068898547927166509996670208320178171898523653701667544358478578289218730097763063669131852e-16'); + T('-404484', '-85217.71121979405', '-63613.1551208238'); + T('-18533', '8494505138020021210045546239850616033745106209211751083199296574492725741699134845133691829140.5819', '-18533'); + T('14584780882835094104107586638253636777793348510840823526783209012506801757754406089008052927648564160645244670', '-21080989782.41894706651964371557621722316246417', '17111578889.18009353060098900510442621989297665'); + T('-18850349239022849269493437768828110069.075', '-266968030820801670345292489489385463532596835667614989691512484830998922088460557950927724249457393516001647830350289181903170.7820256518', '-1.8850349239022849269493437768828110069075e+37'); + T('-19610683914857783540233383.2728721254117951549911093483423563874335264906700610318012707642300033397357755301605728080', '-13420179588.2352455625807856166075321914322366264262368350508886102902970310625894710130400', '-7601279880.505746566871435903625090660503811218236450145616817130204180995181500543203615530160572808'); + T('-124398303.94329995879106090298579425682430326155902347006975479300049695495574497472662209495203134041033423161', '-37909502210888557786693637049239639643429705500565493503854388407978303534883740337011543195819593982677420420894837793713.5474583522280847996415528834', '-124398303.94329995879106090298579425682430326155902347006975479300049695495574497472662209495203134041033423161'); + T('-481349016.43741541655560095983436187596328463184925547241485317034574087191806756468994011864', '-0.000000115888750399354267961415724244044331087', '-8.505867489584104076963971731986268339341485317034574087191806756468994011864e-8'); + T('4253613611868.577209622157479284930905750102791384', '-43984324685835869000303697875967.082217047029855677646732359601172199279', '4253613611868.577209622157479284930905750102791384'); + T('-121720240860962699516920276862045784990182862', '1391.961143', '-606.43001'); + T('-536976703647420516808876195121833670717045212754909788504401613131.09832340493070', '-0.19', '-0.1083234049307'); + T('-153530020474096871971881884794986454397802757290849940749180641455669', '17505687549970976977562427455563558027158236049114219594525022835524956857408951202033619176205709302677596086790722061676556549481353529948', '-1.53530020474096871971881884794986454397802757290849940749180641455669e+68'); + T('-68463793074671329', '526225751933655101274278816933572067012685551994.60347692993', '-68463793074671329'); + T('928', '-0.0265270808592803498688377952309584753581754116559858632164273181218506763174144086', '0.0031302997955205384474094353796565449495740386465470997231301432977903878917439462'); + T('-5145804390488853836236431219.38753169290767614', '-644164778290743967724692154273953884635573804098220159016', '-5.14580439048885383623643121938753169290767614e+27'); + T('-48662.5540827771318125347572899275647466291424610808453885768596532572841012738459644479349273928355994065901331259154173718078854995422986659565794', '30351303292454515546174815773976.50499295966113', '-48662.5540827771318125347572899275647466291424610808453885768596532572841012738459644479349273928355994065901331259154173718078854995422986659565794'); + T('-3764151.657035364928443897184118536717270878944518929297476941743265064271975725529716777507698244379183234036', '0.00000000000000092398996106085832046054510220753163692327079109794497033611990981439273055580421698549040809961268572', '-1.1361392097591721210516136641195398063669177345191861811669379578999595682832164502803562581741006244e-16'); + T('-4.9187386', '-65979133267007831443913.4285', '-4.9187386'); + T('-2941173670207131755888751957586931136097649817241', '-0.0000004814846478935692967474817070197814917779433964', '-4.143231488767554469914989546635670710760768348e-7'); + T('504086121738234114557048964595466438854236194.1238871658511576861524800891', '0.00000000129609070', '6.848482861524800891e-10'); + T('195880.545202875997253', '0.0000000000629389391841695155107474938177568932398308312865', '6.2576456087309632014641966027161174341134495538e-11'); + T('177588678283865131748445.20341144781962491999105521', '17633411549371694148601456488804240695997368248839673881068256513149766988205700935004.46173570', '1.7758867828386513174844520341144781962491999105521e+23'); + T('2996061752747054491320141560401547784315542844732729476182822177717526975778111415770939188808229.09633410131208348150766825247507152776287', '-16624186814169509834280278960.382105391846684300669229217099456249591810668575643552119700009655524933947866332356', '1.814501977947587086559582750402803833652237808310528352266882376452699987265363325517337507007541497009363881064e+27'); + T('-0.00000000323462065679722578298211032318052426076792102642153162888985566640317479966266628791447782540983746324805874876', '-9760478555851830779132259667610197027614293415305346099207953950643351758497122945313648929352', '-3.23462065679722578298211032318052426076792102642153162888985566640317479966266628791447782540983746324805874876e-9'); + T('-4425946782408559872230702296548525017691907874768090.842721989595157930188728939976', '-20910144556974972002031925667197905782.3842669103600658807854243828908705698618611597944713721513', '-8.1174842407036734952567527185747399937378885936959608945880838786170489622477090755781556136846e+36'); + T('-0.0000000915636502802479794654280073153529001575316015250756659772393754338719833895732465666755842320466463187168294526995626879755559065', '-3893976987070430373575695657419905796411.063325237201233825164129403122912495195291694115473863', '-9.15636502802479794654280073153529001575316015250756659772393754338719833895732465666755842320466463187168294526995626879755559065e-8'); + T('-1361794.7698127968', '62068.38928754185504150471180387153', '-58358.59477441784412840105211869787'); + T('56946343438026239453088.035469510090959501909086942675972', '0.00000000000175389432812412891469059096827552600092473688468378873071', '9.3971542153953297729457229138638683477757090580201369713e-13'); + T('-216423551430826376828740104992259241726966617148112640804095596112778449.41524', '0.4617285434914380589707413098498642094246733418452292890078428014343835392766', '-0.405084120420214123348047058484819751957998976642922377415700300110247041758'); + T('-609540688948287254916667914127779172583532177977109039873.52', '59942.85701', '-2421.80657'); + T('209146818192414024940477485662106872447921248923844.06942710', '194887998177776027858422538823791035671522302666816586057503286336727561981.277418658314883331800489638082180', '2.091468181924140249404774856621068724479212489238440694271e+50'); + T('-0.000000000383471293733892695539029352514599525885254801315847674728451500273625909999928055692998459043656614805973747464908442983325518554611862099', '1436914643087593231998188537.43007915688640422462805553206387040332979752282514782607648003897995312517526015858941762085280', '-3.83471293733892695539029352514599525885254801315847674728451500273625909999928055692998459043656614805973747464908442983325518554611862099e-10'); + T('10973736.04887910157362615080', '-1914749385959783542863340891438235602833614861656892143731096463693925359032389835949786237963580576640993170', '10973736.0488791015736261508'); + T('760745776921863883695925202158755621973717376920162944676687742379357095109520213981477435495396177945964651.782946554742559101819380914', '-69587305864702662068384544.416103380560483738456', '5.8598017452652424661892011091840662374011392595380914e+25'); + T('16517561.49886168205217694542953018253109738947136601119171501851647671572730355', '884446285891886647986941885828001196309147.2792', '16517561.49886168205217694542953018253109738947136601119171501851647671572730355'); + T('-126432585406331428026504773834234402700464127021090.294922390288914827690266641336640485828519895540001279706441657289346676025896', '-93341638437704.72913174198140578585969178589732172645484624397170924423918151900900579966645769211771726282849407857845312304820605914315', '-75654522250027.80364908433251628732320633450589708873254066633079438869841763142004458404461623673413329149660061709636674643820441363495'); + T('14047.80', '-231827244539352913982806428147776204855673320603750218551746829240475.071834413853548835', '14047.8'); + T('765290437.4274705525375273645201254509124811109914652423385744196687082906715458538518828538063', '-170265424568071609492595764439416049305779878526025255248414508', '765290437.4274705525375273645201254509124811109914652423385744196687082906715458538518828538063'); + T('3311720.61', '-404471983513006673196933.1466618881459376508409282781068373319987742328030853185755897212344359', '3311720.61'); + T('45991089210393111564308702224024179778983272166206394790320.6444639679813430135956296', '221492062325759306969421300129294571085950901905658970894066426987989464689596714996882711.33527373477304903881568245457206872272357', '4.59910892103931115643087022240241797789832721662063947903206444639679813430135956296e+58'); + T('-2676337743.2669218950557047383697749234730579636349195010443938930301809798701005736724197628525', '-0.0000000050641988267157160357685504958602', '-3.7830662640990149837887633696455195010443938930301809798701005736724197628525e-9'); + T('-0.00000000380228587817867341197616338523104640068872756692679613177059750823089', '-4137484037122167456128781504273195141726445714.987850478841723411486102808695385497342585068965', '-3.80228587817867341197616338523104640068872756692679613177059750823089e-9'); + T('17754236857117435132308613993859837766610271655972290799038080', '1704833941929076220640814071735309403232964483307878895509518095943568281423168227984718596.14467827501524520840433884710', '1.775423685711743513230861399385983776661027165597229079903808e+61'); + T('10027836760407284995344.880831', '-3855354419049536789489248488666738929318752483890215632137859537808426365760274903064967999211093775524598713395085010.359171925318425848171423905809', '1.0027836760407284995344880831e+22'); + T('22202026217695996204973556985884720436842373263831402061744953156987742182762967091937136', '43185871335981070591623795158076323942623952636793.0437867028967265139844569485433664719704674775842634206503820291927569963965227634755940752', '3.26504703695283949129971347692208384440451033569938192969127171775632235348169726099152160569117154517580009333832314710480195174528249498288e+49'); + T('0.0000000000000002128976517031894937726394149810371372904281093627057948171053965578050857567259999271356289456690', '1638227219164.830694905159101117562037676449467894880755446732079715327877', '2.12897651703189493772639414981037137290428109362705794817105396557805085756725999927135628945669e-16'); + T('4814208595346449.043008706195329135991290736899', '-42226706042290308331808643328.1624582074527758568288134403184705773169740487518531767292082378956608507002902325', '4814208595346449.043008706195329135991290736899'); + T('3038935470646078516363834582672813654955.584857107298587208166650999390267178660250688913496749522905532796141150317042799346138826323656895204692822688', '141878380568380505848720966069502343909172636', '3.038935470646078516363834582672813654955584857107298587208166650999390267178660250688913496749522905532796141150317042799346138826323656895204692822688e+39'); + T('-6169003413317472256185593952980507739590492599058739528722582082779602743497784.3427049376611779107', '-31.42072280707122325885993720075056590730611405102283453158861014159701198218841889427', '-22.19776446374536431053795008714160003252266054630255634003844573319866809719521193069'); + T('-0.000024509540379901693081094681822253648979115777140798043255679480624', '-0.0000760', '-0.000024509540379901693081094681822253648979115777140798043255679480624'); + T('724279904087095753394226280693707412319943662527127531541790583722341314962022986924003081613987164108631904455425855235377854', '6273776855104234371654058867999.169516300774', '1.476368318259034422871338396645233240954186e+30'); + T('-18588676215231158085.946211173603363600678120130466593615153207303801832898083927420536813131520643032959684506944922819431821478386072330111143921503', '2387112710.1232817341660077099628961860306411347682458219818878317649399403544141963545255184471115705860288103752677826329794816', '-1517183187.470515201152916387886061279636026354398496623478118729449319473763829860908182395451873749194364531069367833125880637311143921503'); + T('0.0000000131867789180977263531745735221989806107871520141527201347496177906746916558678489315586403635471727664914100888', '-0.000000000000114689475499172124081924590658780042763626380186641948', '1.24041539138704830479374337688539109180730530022376056177906746916558678489315586403635471727664914100888e-14'); + T('4311427478.283637806857955975409340894341757614838371194103474257204535', '-649782518102516258848559576865098567584081840293172629619735846503681807002436279687009986', '4311427478.283637806857955975409340894341757614838371194103474257204535'); + T('1084223088975587942008961639610672564432452165063129695399364194.7724214344063983401791208462284827932750', '-84781318440.755680735460810732984305718976302629343574203', '76961803391.186713545521492205652920042921934475118638462'); + T('-0.000000061', '8786983807198223058379063246618879186867662783902087862998860315406531227728533477069121826634550907069994890047651666829499803810', '-6.1e-8'); + T('100528259107227.081922566140125579756940512053795436712849097175289286237932581152', '942713200517839530382833024395280742818911844807588995366076616161481.3198459965316435128156454232997381607367702732751935460', '100528259107227.081922566140125579756940512053795436712849097175289286237932581152'); + T('-27531354435.67909536742252514929056355009540359368305025535772692824010557599100912735927621003', '11000389644039856717798395867260.389464825121873765842743496221295063610909330014396388749003477966675244072', '-27531354435.67909536742252514929056355009540359368305025535772692824010557599100912735927621003'); + T('1241134823.82242025576415', '-2436983229830352502914812262238245631.638630950318028', '1241134823.82242025576415'); + T('-144010855465.52294929635059866397929363679648857972113703', '-0.000000000000000000016080987773993260753935707240', '-1.063553116788584594723506728e-20'); + T('-0.00004038256977505864160533312084023171599294433697748308177067704771939462', '-2155348555606824361074827496727023440.727544202034420464676729642053697349860774140137856318160073308875496365295680765947736972447496259', '-0.00004038256977505864160533312084023171599294433697748308177067704771939462'); + T('562656152020791212164121284176482277264519513933510410360247916921555.021006097720457824068898265551508', '269214854076690329599299119058534607707434613306556247775662477434328445134773154913640995897232700833.3509809427607', '5.62656152020791212164121284176482277264519513933510410360247916921555021006097720457824068898265551508e+68'); + T('-0.00000000538631554992448118188735718881805592894263653000803275203171961114344766766783936939408658883502898545560241278071', '0.00000000000052', '-1.5554992448118188735718881805592894263653000803275203171961114344766766783936939408658883502898545560241278071e-13'); + T('-420165011302009959726745508121475336218614630482602804564105573952263470925277981868876777955931.586980555730131401861', '-0.00000002570711692260590889431201869485340369724462830564055937185895849465134', '-1.195661613348988387547281332958532992374725080459688873047446880846196e-8'); + T('206614495821030856258957814325343392659221587476465034962662750862453963123443714469071555929832788665781745529.367727', '-0.0000000001661160112583532898587677052979754226652657040117961034695013256023840810657258489771022699005804343245729475750048', '1.0429548835437312814921716318665620042989758877917059041179013022218706823693124370915675661873453951861654108688e-11'); + T('2.129629456244559693351889093283039010248199571059181269533286862278672114837554726244186016512512923248786195784306579695279176870950', '167942663220994525565277036378341943077.97', '2.12962945624455969335188909328303901024819957105918126953328686227867211483755472624418601651251292324878619578430657969527917687095'); + T('12176138559764154534976504354019977304742047856939022090614225781269098414670923528582943.10977195914', '-583632504653.317910211697569945462945466919', '159535682461.909372767660403987685629831037'); + T('26801.70776', '-1839840489500540849073275119242455920755679371644846892291102931868727750660630725018122594847841701320602357870867176213530.54397', '26801.70776'); + T('-337515772588445810907775628658674617832446340456706715404089682413724911029602181006534947673106470310169888744481390287932929420452374671107329763', '747003702426526.08588776581732211783056883055836800674965151006190388206832049147104586571457728195327987825881461665724657243756841', '-447197560243704.27747928725749075767284852291932690545433431257640274850422177065998793355714235779800038252557174834517670442529162'); + T('0.00000006362058132140170298', '0.00000000000001458044816', '5.95243898298e-15'); + T('-3594215153876751761296964832202126901729901462252166973917215.57369585920992111877692697850590420143534264638009736180', '-0.00000000000535939139326835434743507032712041831099958079045601050357452232464286959087518022443128930720117303095792238065043970685201723040458303209993', '-1.06066578271026895852431656785059635221975944055981884000221087847830772261936494977835528139047391689269307714517916852256490493941403060644e-12'); + T('0.03040477493704564561379391504523657646163165', '-3829968110375376699653656403680127708.96', '0.03040477493704564561379391504523657646163165'); + T('143839023389620287917080598136939204834211679465632489449268587070547858891919951735433984918754860511172087386798608655301168386080537222501170274566', '0.000000000000000000050904519883269410714066625387981521860251471402534287519580544338323972447562512119520450981009639220992736058455654970440678522343564343711', '6.947705519998581358090053013911144054426549810249668609792468243672747095472094889504331332164049453364474197265004105580867309484110017621e-21'); + T('-358101998722704280658404123884651237259779040468133477835791002975414884911463470305794344', '339013470613986503939750434731451482.80428540724852964369292178705210529584067980487', '-9.197311229967124089066230086719075507485006197972684367837222888572478434033179797e+34'); + T('319046228556.957337976107234589381614513669506109842572986792638453', '25341573899216649823607289015612827072.54559124982886262122240971817339', '319046228556.957337976107234589381614513669506109842572986792638453'); + T('0.0000000000000000006665605465014236098898571199127258214891647138029333052871478626750277409', '9.2994763002872765347756456272', '6.665605465014236098898571199127258214891647138029333052871478626750277409e-19'); + T('-8597100765432', '1.4061930205430936722438880987030631627463886746451173645000969851082153846054399284881', '-0.7694289567800680544500753441563271099198878457218307264536433333802305802000687849826'); + T('-0.0000000000000000071063790240674330676736540699556204549815235157130766649', '-15261432741466337551829351259412618954339608783801902625.23542905091', '-7.1063790240674330676736540699556204549815235157130766649e-18'); + T('24597860958863607.704638609505578054232793927642701487793854676929560010244268672980', '1802481949139187718903504517799237488488797785109994700474213611312061877322390386.5344597552', '24597860958863607.70463860950557805423279392764270148779385467692956001024426867298'); + T('-844517336468436751756396415750.8694448224004606845713303248407308924369', '-6675658540060519673536104856700279546693289387521217726077810.838663278894308972962912969825', '-8.445173364684367517563964157508694448224004606845713303248407308924369e+29'); + T('297434395027988881726438857041249149217423028818746940800314053389411843447774222656867639852014201825402955.835636255767352939888666344841', '-1165785127343555259111383115954948069159135335071767276621771249681211270602118289526766642905999531428644272986091711103938455034315028421', '2.97434395027988881726438857041249149217423028818746940800314053389411843447774222656867639852014201825402955835636255767352939888666344841e+107'); + T('0.0000000000000004255616740012919799050699535141777230034734861498243296211362650503864808633010961169436418851564388251642437913320231793888336551754996718520300', '-1651576988821130188451193720811416856607234210129237.883909970833794549608325237454309557258670200886', '4.2556167400129197990506995351417772300347348614982432962113626505038648086330109611694364188515643882516424379133202317938883365517549967185203e-16'); + T('0.0000000044147096298613431712166079076764897780999854959248060119312935665040776072223628259716132024850399516711414810843280407052112788935682838888941697129', '-54936210850503.113414', '4.4147096298613431712166079076764897780999854959248060119312935665040776072223628259716132024850399516711414810843280407052112788935682838888941697129e-9'); + T('-0.4323857463176142463414675213681184495653706035704024732142', '0.0000000001609886172491629520941112538601281073954128848183360', '-8.6849995449369811756464752459042905872384200820824e-11'); + T('202209.7253876600644276744210492692', '-0.00000000000000000338892963079640180409274746855742569075588575425187261714270297603518981332021947785032402317811726294429963236196669448038', '2.48774060567808536908087435166803363667804416042024979495412690793460127819789298078609537589467861727739804721043627194686e-18'); + T('0.00000000000009465531808110383618357128551578926701934798401879351466017414251990316347221304454773710889175218068990694997919702598', '-15569690510391365108565127049060079732945584147892308249635814990299790974106289975322836618585675485711', '9.465531808110383618357128551578926701934798401879351466017414251990316347221304454773710889175218068990694997919702598e-14'); + T('-906454225978706010766508621855689367113309691338376322545315495042716078153614424771069415704594308824862632391131402393608738253280649702961.6641981', '11660199610678028374818731841856.7121334882150901542261870618813695156', '-7.528070467742355916798912382526137282899052453804150111657562206506e+30'); + T('-0.0000000000004101322450307718410872494863474574665562369115054909734079224620478881782969556316998111941117895920501524161853814989807532', '423210910279868701995463018234848119188756375891085182100812368574543773666', '-4.101322450307718410872494863474574665562369115054909734079224620478881782969556316998111941117895920501524161853814989807532e-13'); + T('-470158060793806640223969538148754202660458782.612615684822290245236803305653425956424810905330203916882572522005759948', '-0.152695767111052424631688337299212951189573836707404959632830139430511960774250914378066254704926391912654597758822835198889', '-0.073651654118155896924523703948320110247909645704509802452201735369382844041627083824661314684771341842243469753325238257779'); + T('9.994426780915974145347014135575893960205706681677054334376705730901774629743310179236', '-7', '2.994426780915974145347014135575893960205706681677054334376705730901774629743310179236'); + T('-39230663720925065911.709', '-0.0010728700907817921430794540906048057564326188014160081208465534724741317514197503024274778176377553223843602448853719066858744960609415784093590679', '-0.0001564596298149334550945778894989078903899810456404686403803445329346353151049500880628673488460793553585288642059251153644557695926708694554291526'); + T('-9075671784025800106573820389326423822119789380499', '438119.273000651189410948408459618402001563677344624063470699316786673102238473929433190146989564587119083078896154298057276810', '-78320.54798431882932621652203547903308024478004733552908568056196964210261306773644726193677870886973142528414057490679038002'); + T('1079464599531882583207284547902100846423694366679824675144404048.87000005666550200', '0.000000017634963780257411646578062463223304619646810432414929790810861732698710183011522017480097941669752799780304922650857504090532971627', '1.3442627394777667466341237152453278981336433385361428945890803207704744384963683817727469649088690273630173830384666866982410070125e-8'); + T('-1377931339724154311913175642590.56223327166804475379410759818086421', '-7343859629910618280997050209823875113651629358554', '-1.37793133972415431191317564259056223327166804475379410759818086421e+30'); + T('1802318417733734399696737845540821628492664765097395909955021748011122554913873397', '-8.79', '1.97'); + T('0.0020082022907469851361342734885482', '17100037717357489922255553618227047318529253455381725674352785.849074888', '0.0020082022907469851361342734885482'); + T('-0.000000000000000201309146027982061988473635139635744221112298825585606183375367564795322337419170860', '112.510399403346289716543031187076', '-2.0130914602798206198847363513963574422111229882558560618337536756479532233741917086e-16'); + T('5143252640334.9471010534789709623389109664', '-12505822857859299547007903357.4580719301', '5143252640334.9471010534789709623389109664'); + T('-310614518267845321018804317663129885461172347268277845899925992136506193955.6878276728370903441307046405502757962598225976', '828661056524342624928394882871650012268186140555930515187891793804915086043336905141599671004678775857.154200318917132520559533243825', '-3.106145182678453210188043176631298854611723472682778458999259921365061939556878276728370903441307046405502757962598225976e+74'); + T('-1929389822669343098632227827981105567.947555377437838103088250130930057647071898153543733069402740720937034698316740', '-307415836138079404706197455082684322873455098421189046955.7609473524278956753826621443402955422788867828551884929404606716804681', '-1.92938982266934309863222782798110556794755537743783810308825013093005764707189815354373306940274072093703469831674e+36'); + T('-11914253674.453144069362', '-0.00000000000000640136130420098419950776623218693603250164367282493846395409073044734225569347829418824701162864570620545495518155534050427613', '-4.8273343562972522020998663785108839173049437316343375965321326163190438505924066772178429290654069832627450922751727028332871e-16'); + T('-0.15173695389851714323653081625731481081839738235113367548743715930033221373451204809777430598802691008061', '-691161057878002558587.1381127439742482649867259644071300276564300364420601832039698998854339739003491064795364533103890488', '-0.15173695389851714323653081625731481081839738235113367548743715930033221373451204809777430598802691008061'); + T('-3838177724.07192160266376738721758615938561957533876517355792902066836939676750568185', '-117267768035354.5367107462355928310645', '-3838177724.07192160266376738721758615938561957533876517355792902066836939676750568185'); + T('47087514451451061936440267540468779859177214505564890370985541624177363716426632243202744881820164276529614848', '-1172054812668893105303.109439', '456515720116084107668.775007'); + T('11.3734955974031313554231883290508217719632632214092285252072004770873986564338', '0.0000000882199238947298298119767888364932094713663602767583773895510', '4.07724040263961106723900703199982684406983245152715796283133986564338e-8'); + T('113112144333915213154140879978802.056322513047654529205838659001489881104759568822806', '-1070387536549080109047458692952163930429421126062620116475206035463717082814252900889701717285876343686799120756181867129129332436.65606609657679300632', '1.13112144333915213154140879978802056322513047654529205838659001489881104759568822806e+32'); + T('3375429238215022669388.0525445329603537774437395034276346136375188392713458484753507732527974095303619960839673965312316444565719192307138736', '-15283720773236316823.1386624805243134789068589159295817320630835525511329', '13010668103032968297.5467988176113884179347779989196535597591372780221078484753507732527974095303619960839673965312316444565719192307138736'); + T('546144540025218603622035747267.184599682578', '-1960769463.9717088415363003312719807015447675844185997229455947383216237877444003008215006845488457016693384374828878563804', '444038342.3009350705462712125797459325898357133660731360753819139185958293625962717311560001031089517417729661706079253452'); + T('-9560649763280410877866958.6894727605272476369381283550793302379468448211577761', '-23461693036891534270.66763', '-9850747110662569899.4644727605272476369381283550793302379468448211577761'); + T('-7.556218606', '0.394476467282531274033012749331622902099878763812408645207952399507467807592020641605998980948602455345622981947021804677652524', '-0.061165727631905793372757762699164860102303487564235741048904409358111655751607809486019361976553348433163343006585711124602044'); + T('-58056996634143665360898635240765086115939487200129800582322012124896427026358562634.523876053912312753303154016822967233902154761507412776886982546', '-0.00000000000570977225444819760113544221498368980194767956186945188399903686296', '-2.45163677721343452196746595282018225334170521591501642928558451408e-12'); + T('18782896745334687682661478191340244563495.026805139784759687443039109825113018630522104252165496195754', '-9359445141829484597852388054639726608853279955027525490131658108964763122303352.11139858', '1.8782896745334687682661478191340244563495026805139784759687443039109825113018630522104252165496195754e+40'); + T('8', '3900985326526441441709979123557070376512415196847270644745821164883858274100930336537915531', '8'); + T('4.77286747468879908670114975931', '-3524175598424140013239.80796623070242774065271011395748053461', '4.77286747468879908670114975931'); + T('0.0000012222802813622598440592629347721226314717119700537496676757382132', '0.3110009405107017209802725018936257999673470989741925009496294357363888407985893667857735227882746384521443945285824197537397541092276675845639132411538', '0.0000012222802813622598440592629347721226314717119700537496676757382132'); + T('0.00000000000018384088619365879016178677544274849275468587911722905323257047268461042780866', '-74691051227281886487283380566166059678639451432198951288186231108115005924732001159134690543080138545.89943551', '1.8384088619365879016178677544274849275468587911722905323257047268461042780866e-13'); + T('-0.0000000000000000143373721383179309670662810405823454166842726925', '-4713427367869967855559206933578165851630208266683044', '-1.43373721383179309670662810405823454166842726925e-17'); + T('279088431668978817721818400435457144048964563707000478127542007364526390756155888729758450016626555984216682907494069.3863391561390029008', '183068579713138743128987913913465863438011702698993606515690229413.9450791032516285344867478204174704882799732', '1.15006278031659660278253789496724532897780093575043549889457711140788489320423312230736014908551612694280186e+65'); + T('-16267494087786592277827896738531922083730', '0.000000000000000000088706162618472944512399910698929840282305406666674993734458901273843764276', '-2.5909627800753460482545058108789409575362212803250623497766964477362719992e-20'); + T('-44.24084992', '68339625270.168878456952498', '-44.24084992'); + T('-56857196985399826069072678731164191368337062143007401708', '-592412264968673971778440741608484470265561140708351266072976205766765457328334968787621711087457877572916180459788168624044681603157772.513540649385856', '-5.6857196985399826069072678731164191368337062143007401708e+55'); + T('1104996654.18304259798965034573324286', '2510117408561620824893581029911555831891170476567955656689227848034987920.73715648491088584003908515877296524588851119764300771', '1104996654.18304259798965034573324286'); + T('48029.5677151', '39713342481092.2036831420612922', '48029.5677151'); + T('-2677.39369111834569676567245932', '-2034534263100368999018977132035007334300490999268060730506703.57', '-2677.39369111834569676567245932'); + T('6075972262973206757621791006694737099204289938612010291817208034207716598155036627342694635533302369062510053834294276312030673359251989177221', '-4216877637213071624668885955274710017470051201390436656203.3175514798774907157554310607394066223414256256857538268149428', '3.4548483050634980937680079005687259547830032613011978548019536253507542566475495763279403287594055753811530981533191188e+57'); + T('-39778415088348582474737099860821880822219551752035911412802038639306564534087888730860157447303578769441574808129741.7837578735678589361592672812', '-438147577016143338832668633949246668826241701286508135724906278119313424092726.09783913373814771620054174557624677579917', '-1.2108902975451343030038388997376413494545893581949027873931312889359460168754039828862401872164621816124117110545720507e+77'); + T('115429370.636804045497572883414508754301504446475', '0.000000000000058502293269352180410451175558983836676566315944378566117451162832925169472129608582', '4.904729335492343815789815485351399819289163720633876216160558528963863725402504712e-15'); + T('1866863299414485869402976070337638006397265759003452910.410739287460164932952655292210247956540858637537378190', '13247512825788295255972523418673482573223602517867812976052652428259865841176971399205990505517917171898503843932790970.39116746434798125080894456', '1.86686329941448586940297607033763800639726575900345291041073928746016493295265529221024795654085863753737819e+54'); + T('-7434850786753.20616600514461', '0.0000000001503863022082014768371050790030147497084483425232971401283357127842725596313687', '-1.119036084550700826530363097548971535460013328630270913936600073612544699109413e-10'); + T('-0.000000000000004381873159982123279917425506558261522812871473725919073758015893922809957534001480944265329307788953888508410293960888807232862971987255245464', '8109725899091573689402454319931.18350836066336534830831850485049011849459896265310046326036965005589194064300915126620', '-4.381873159982123279917425506558261522812871473725919073758015893922809957534001480944265329307788953888508410293960888807232862971987255245464e-15'); + T('73314226283.9570', '0.00000000000002960597549365951830985161616855027789228405534080693647514805969585779006342966275284091628479572363547635870715940487197244239361', '2.924235162215933531454887853805516514067221019818723756217344334797277757263190674533556736476951724389592416040236618857138094942e-14'); + T('1429287903385', '0.0000000000000000026227169585162217601788967257094420724372717782024286696197384612049185', '2.1241263611786451580084403357462126454870868777472160598748154573957925e-18'); + T('-1399843654872820025220110414591055060649943.5381869', '-233177597420892.6290391881528712', '-56301841991516.0574900024787824'); + T('0.00009781914227799259379359855012042142895087114611171661229344677069', '-21540700792390405728340.4941249102647270294567971', '0.00009781914227799259379359855012042142895087114611171661229344677069'); + T('-0.00000001302596750035354750648883838249600391852130416107', '-2.4', '-1.302596750035354750648883838249600391852130416107e-8'); + T('-2539711480375833.8787680706295245', '-10090855425.2645916699959021555055665745313421124618054996540701587614046326913632297741', '-4623523540.3888968219914182369822556536917671629446250650061622946364257069368775354156'); + T('7345.4230955739343601041285338890479611692071680966332935062378031079686398419251932', '10343720308772182919388574543611215023360174132529300268435042772499308507904636046339051573', '7345.4230955739343601041285338890479611692071680966332935062378031079686398419251932'); + T('532915932842606535532293569407035699330783484419226736382170882419377135.138557713281159484931821544535832004298377411148874', '0.000000000000000097120843870050544930766762870205724485889381952725697657146115928483473606129290764002', '1.71016654827126847483437088121564862848406256560494847328799197734413796459426367264e-18'); + T('2786090273650860122222172462282569662586653226066049425730478407697344778285269847718642316826852059959216286066975560496533.825834439051898', '-5380036545379490040214706947292642792370009348813692.063289320229799931446171213951400074916491', '1.781447213237295796176679883614734919384147627324841950220937474739207582830548622084657210704e+51'); + T('-716.7348911856148935007182289841612962001831614930661016798201260045476506309090856624487785381070365022326338215134362779468515437452558', '-0.0000000306560034406942657956579747805603108115582439761037677331584709683937577229617811570358119993112158520602288036719', '-2.19481002399560872732138539978666667251957992848584452120211572484597113365001309147957304008789361389740924421480515437452558e-8'); + T('-336717351299839216882509548843025942568273773003071.497660', '-0.0000000000000000031038145656560174696376744', '-2.2939638463514411725670632e-18'); + T('-0.00000000088871076289105659831158653574816303487230', '5925437964261078438361385421140', '-8.887107628910565983115865357481630348723e-10'); + T('0.48996271173862812059175117673224279978397098563975331374734405038121210035666997472343508724564255860333', '-981298146452103756333.6485476848759145496522568968470756059845109847612507162899799', '0.48996271173862812059175117673224279978397098563975331374734405038121210035666997472343508724564255860333'); + T('-0.00000000000018739622832508484881716365605238857842994033219621274071493422768019281918672926632721149273548760595828153562533317', '0.00000106753414191503143009924816334903', '-1.8739622832508484881716365605238857842994033219621274071493422768019281918672926632721149273548760595828153562533317e-13'); + T('-3724.961037270823216784122123949498899097506867404482079742878', '42728642472000954973441392924603786297505608884064716022000636585801915420974504713108514988096981528010203', '-3724.961037270823216784122123949498899097506867404482079742878'); + T('14978135246.4293498541153489397855384604096560034577747263780459028396569631858547180442863807949567', '828303155938367860166633696033166352096650401684421199987339292282009346446', '14978135246.4293498541153489397855384604096560034577747263780459028396569631858547180442863807949567'); + T('-0.047628555773786673881971100151948530011265912029463606745633469100975125377519599189', '528778913516649959178290334959803065311351416856125792866633653171089280622199248330023808917526801982365664091823181214120997718352635826074081634962', '-0.047628555773786673881971100151948530011265912029463606745633469100975125377519599189'); + T('-14939980526.554849200622465480029433340799030707', '-4277663.20464126532165338128222730657269719173360820748109791236846681210102912850976196526639900951364332750470003', '-2380615.94755069740885804249167878894043717324013947600609000931389214320628324391121728973465877835750035358749524'); + T('2254531950203810106512216769432345108091659826174197419189904121779.389571456070872185209145597270163484908459842159938150', '351324574544938907598852971025447067037136331.482475343426592007773285255333055388053662880975118962130456971569884230555', '3.8576251388287727477083730712363952890778696110331013414195946435626943548779101574535478551480436462182350780178784985e+43'); + T('-908518.75611434289871133928585849050982371141988492763900495559', '-2779194162891933223959992755504791535540247332661669041569801472568536678056446261493500597102205548860753869532010745212712506064454.783702', '-908518.75611434289871133928585849050982371141988492763900495559'); + T('-9751937701702146526197396852280722495497246508393405343698179859443679270762240734774756447384850662119283788899226828510395349600364', '0.0002072564098631731321614418369973126331436239029891982973755759590617485920152211028657689658898215', '-0.000065268138309116378751853481282714106859124860733683378586695149698540722854723270248930520518111'); + T('-57002171357681472900693.4729019652902136412209956798425272', '42968990107768657015543291491936311784108036470373857830494358', '-5.70021713576814729006934729019652902136412209956798425272e+22'); + T('-779.38806641', '-276143375215931856852117654482995176051154954022602259784790966214726724258520671956887000901811473384735495734582327432375381533', '-779.38806641'); + T('41533880399742218630278604056671763202881405110846632341263992670456086753127.62137428620211383152736798612114176', '-5742400619641926749269144425184140455944367080.9420632770462859801809027506509', '3.39721948198633333959235038541298988556228578133396634945632115085817616022404176e+45'); + T('-0.15640159643564267665063068794647422832178482162992118215600544420009053201945', '-172445117372769.48208', '-0.15640159643564267665063068794647422832178482162992118215600544420009053201945'); + T('-0.0112275442296349836418573333090591', '-2255922450411587809292229473263097797796627000972898359618569482413455833816036469768975961421349683187.94437348566944556679726583316945094', '-0.0112275442296349836418573333090591'); + T('-3368.00', '-345972426936711495192918207758303734495983755979074790217123728465.80047743465885662352027565018300048657834525845654295443495093971910868969090063171', '-3368'); + T('117.5750947029273379673675410632947676619639847307327388', '-70731203121207004885270875832693445747215727294572904020461929095227705068450.50513528539516122022720282675281', '117.5750947029273379673675410632947676619639847307327388'); + T('-138977748373044113.3788174734339534653', '-0.000000001480926486083', '-3.3086978011e-11'); + T('1179292018572.9841303121610809323250406574524443113684922518685441369442051369712691843553144676353714219768250', '0.0000000000000001266875917107419', '1.2238670441939944311368492251868544136944205136971269184355314467635371421976825e-17'); + T('-14538354899514474066263227062556630420353609726008', '2842.054050193988254028322928854402650042920389288352515795', '-787.841734262540552719016400749913558239542081451238833495'); + T('-515534361438701466202657012041091704270306493888955748464478928404889500948.6256180199199867611', '-0.000000000000000009203', '-8.732e-18'); + T('-0.00000000000000002436967040184567917080710249017189150294192', '537233794697555587617971898562122287499751326330104438900861362285369159209579.20894448555179628336166706113083738', '-2.436967040184567917080710249017189150294192e-17'); + T('-10973344995231896444164895312752280156537575740345780145078213554021817209401278502799260096810348280045597821463610756008906936006453379225098199184', '66541527624892473810370053621624002938324370658164532933374927090501743364535993599537688484603548966183655370713388789701765327723856591.969224975', '-1.450342823427219830229311998566498376289753623139511311534558115476690478306521429471030288042940332558759442503472209827991313811102369736966505e+136'); + T('-0.4316267645066591176857475783149345786635888459807302418058772908006064030240231203951076853432363297761508', '-55028014026.1557830721022778741606190299296', '-0.4316267645066591176857475783149345786635888459807302418058772908006064030240231203951076853432363297761508'); + T('-2909306841301704095060647742525040306501994081937165245987916403783220066141979481349904813308176225805597723367483244491162516969865072625547738', '-4233.78204828611709673177663912398115727530134420059828072548075540672034293877636097492224160666425080181579999527423978551885309647443462307117921121', '-988.81224272086075541367603049719895260811349125347394416104634518954247717715773679094698039335395189402484412782423394374527794816743393185901317177'); + T('-6548887805272011465.323257524030453759629949332296153558585801121085431308130680538770399260078998930389034743598626100088171804960350705360197054', '-12080564112679438322760485786027548072559769334761890502356163626145033668765598657336384176583391733506824623', '-6548887805272011465.323257524030453759629949332296153558585801121085431308130680538770399260078998930389034743598626100088171804960350705360197054'); + T('-17825205605614995267760724571708651253966055640698821354906323632546554721347699817715902863307436433504779452592432809608477.333181451786', '30680736166916309201884925906.6012446662423515442058844013145290522721220129756414013822170839078121709611675310', '-1.476583352405265718076287125956418384435618608746712341181884632993097339340803769809278074193221038608038868e+28'); + T('0.00000000912468064832360078329428188145559810429725609376050682286774993859391174656196966186924848665919094718780', '21914190263.100035808759435146366532139123334498047338566', '9.1246806483236007832942818814555981042972560937605068228677499385939117465619696618692484866591909471878e-9'); + T('-20606794163218373220385623629829988033.57174497128', '0.0000000000000921595473430223940199410848478707835684064295358119717430281404961143732177360181223932368247886620954', '-8.55963065519011748284526920363755341557853021589815372874944759648859916695380966744766940378956445724e-14'); + T('-0.00116515061047312393907595074853372157514235898351272755761457983036507134829330366786074496438528935230083275916775473045004', '-410007620964954722625074616747232948064935562193648550794528374214082044.695992770579155345699714674119972463090345', '-0.00116515061047312393907595074853372157514235898351272755761457983036507134829330366786074496438528935230083275916775473045004'); + T('0.000000000000000002866262471198013003247450550898087733157498823752490067442065500489968029757441844010991443903735220764', '-2387063555802958241360682309588269568721119805287196269429670036507643298607.716703434577233592987993414932', '2.866262471198013003247450550898087733157498823752490067442065500489968029757441844010991443903735220764e-18'); + T('383137082334366134473626747321368129198523267298422116111379309501154', '7792834478569981342900412293473610112927620218475883827152315031697511988080100013693178713319824297431492360416857', '3.83137082334366134473626747321368129198523267298422116111379309501154e+68'); + T('-5192609399231404787818967904763339039804702106.2642098584571392384864215', '11995.0', '-8751.2642098584571392384864215'); + T('0.0001613753330983460459597', '1343718759722202811633465441653970587609134570741564553699639538938957247416670787866631449', '0.0001613753330983460459597'); + T('18625.82', '-108460234364121807955833.501117158', '18625.82'); + T('0.0000000086960654123918299935978162138867774634877845457981404751377524026363658271257851070628323331401981944601936516808916534072490865752', '8049043891570.20498300587421', '8.6960654123918299935978162138867774634877845457981404751377524026363658271257851070628323331401981944601936516808916534072490865752e-9'); + T('92177258893168796369930099881793244231828885.994885469150932397211053118484704286168', '0.001697557910838632235527648236671741804284351643458802110983125809001092966432046553593908808466256476', '0.001048051559814391786998156983752684121311392378515748632423171613713154633150574252483089353288542512'); + T('0.000000000000000000135340591193604907157819487179265603170243663378275824462740462', '-3538552385863005446402997819693840644728948859866382289131015243925156152538296009253.88595397921380748370626209756254143', '1.35340591193604907157819487179265603170243663378275824462740462e-19'); + T('-8942810941342318692131683034298222491.298966162751297487298160818082351741848617', '81468788300903008016446735094927250.9025421163811657618870083563515329169085218713537560955357573689069255755678460294064978585998748322865700882101945', '-6.27130165438908183389889089511521429218754772042294416142499757652637988197330224405855866024467891451122631047827946917334126136432807638603850887995e+34'); + T('4112.5', '16501231733092448026854714811537782791022.61367458788581352140616404436355216872103784298148436462627878442916700470', '4112.5'); + T('-0.000000000000000100039272920978804953224514434658947574659086841906774034035770202605930568482069278916', '8360130279092670037383877853101379752066508243.7914548725194425829919568', '-1.00039272920978804953224514434658947574659086841906774034035770202605930568482069278916e-16'); + T('-0.55733808633010832738832311322243', '-30341809.7768885100044771345', '-0.55733808633010832738832311322243'); + T('106317245251707976645199.36121706418143436338271', '-0.59881135427287180381497846634181133656689910033999166', '0.32560278164243629083243463276569802027691289241346654'); + T('-5809879419309871900248097028036783697200487662.72078280568345188008643358457456973', '97479961515864803630625758944755018442629963763620', '-5.80987941930987190024809702803678369720048766272078280568345188008643358457456973e+45'); + T('-0.0000002582736304792493854476455750807714448789871391914969265606245281578616804637963665810949001173698932167004137735325550552542025992276', '121930479865943189690176599713519584015951299852971842228.150293808603', '-2.582736304792493854476455750807714448789871391914969265606245281578616804637963665810949001173698932167004137735325550552542025992276e-7'); + T('-141', '-1.290460', '-0.33986'); + T('-1672922546593.31971778277173', '-24004744487670982178071549599909616293578410420429907254240481309690669724949467538663.43257166059', '-1672922546593.31971778277173'); + T('-0.000000000000000000096506747661828537633255606033313182920993286310754098242241527192506663129986680230116508640760013474440576093964790427764', '-0.00000010591032418873774305782488821422031008159269224396547763341455910365931704698604755331650104205032352591665834970710247264938146932851', '-9.6506747661828537633255606033313182920993286310754098242241527192506663129986680230116508640760013474440576093964790427764e-20'); + T('-13827401304111289312736198643718536550239860723009716248160536677', '-0.0000039286228820013610690203711803131600098718683633', '-0.0000018687648571863700673078239442130544157030166194'); + T('-42.4692049472839584484885223292994575479989813667615626032513742843562250259364746786558133445767723482540247', '-0.00000000000000000819275717705512539909834846743982191143678579675280080605996356880686842267', '-6.4653951124095444397419580073920159575587091030342708998343881853687266199867723482540247e-18'); + T('-2466733580603659963575534598558841787749140591761688146584246949860119069729862200150585805915812920870610199177565657789103756293844601451975927', '0.00000000000000000001220964545466869353977', '-1.73255416774937445048e-21'); + T('-15028378815304663676509006037945962004972477648490101799915638280371939420560.0041911393147636614007445', '50622452443346007758014952215939952642084376096904097662205047592117731694004927204947361193840079003397393315495612132043954828016869740815677950', '-1.50283788153046636765090060379459620049724776484901017999156382803719394205600041911393147636614007445e+76'); + T('142588144195311580010051.5364511066747054069508651215066362734114680562635989353532168705092760233791521149157821867553492562330410494546864139650', '-14503165820788.7989118526503493452200602820958797693990568472997380353527541143720627492477025', '2915050714654.819054833603896590465362673501332752905041274459514111791099261470796120059809614915782186755349256233041049454686413965'); + T('-969615612019600562266997847', '0.000000191644650609545820597008991399827106864514006', '-1.231577096546224847608911542095213749611614e-7'); + T('2256513056638995361107016553105302955081979298952482814125065516118737356068145.82', '-158065108111543929811518473313411.60992867508424058272054757815774769019280374359986010771', '1.2747118706198757060172327002063737680496619401702267612146633003684640606557668930745563e+32'); + T('0.0000000009237134280775239488177645583957175262248471518379247948959', '-0.0000000000000001658030328961634', '2.71610961190711645583957175262248471518379247948959e-17'); + T('-29037971633171746964110337225165989562263266513890039145139101509478815612783351650243947553265889073155208935272292022915303266220845856601847833', '0.0002291490081859774827', '-0.0000175625699645664842'); + T('-7419630363912248895351350605409627746954992624899840002172405589436855414.53245142763', '548.8847974769155367539649264103154853090755290', '-311.331663008566145443936338341729777410460137'); + T('-31531682519443763389714.61342909941642731349791408998579283062988631957213607', '-0.0049509892638980905715921538869775154076564720153', '-0.00240704556517700786995420557935621901418625076453607'); + T('10.199939958363750394845392764', '-938958758058.7364', '10.199939958363750394845392764'); + T('0.00000000000000000547428861001874500', '8542.618867822931747906923388', '5.474288610018745e-18'); + T('0.00000000000605257123060057047947264779334280422324573184783056036871244530739641764616333500517830537807440912208', '-7720892347085081968920717984388501900819875846611343246381710158287747831369369498946504999.69677595776775728276345177652950285580722556865359060', '6.05257123060057047947264779334280422324573184783056036871244530739641764616333500517830537807440912208e-12'); + T('5197872005452089687845492226606310126958533004786.01262820209011362035440472786789414494121891863808333760222524857381721029192192394837170796', '-1553107578156990684479674739994879909980690781747809215157294762487391417358259.146954264798337814197978', '5.19787200545208968784549222660631012695853300478601262820209011362035440472786789414494121891863808333760222524857381721029192192394837170796e+48'); + T('-0.000010459044875719686467201064277204760401116231048766758416108501254604582446941866638877706771900478867008604302', '4570483969034967530134798231269839607555086988204402691978.0846842677197598069225306405016', '-0.000010459044875719686467201064277204760401116231048766758416108501254604582446941866638877706771900478867008604302'); + T('34950082865877722140999896945527676095434244644489049.47442671960077158711230616940136639915609220577207968', '379002403.050778311803417819043114867', '283625356.05019950260262830045876010540136639915609220577207968'); + T('-0.0031090306995447730433562939728182473162977550600870500009238934708225472008899875393691975288926245842294981202786862852967148112', '-179021575013512153729485967283056990.1980994548847179904114211031571610186752960630950031860150656109870473715205099194325984', '-0.0031090306995447730433562939728182473162977550600870500009238934708225472008899875393691975288926245842294981202786862852967148112'); + T('350213646089009419745026624604797595763993333334620301840610383877418878521099968820864105567.6181312666', '0.00000324117432025964624180746008701209658337644053764142142257723637790781637027233123642211394947389418444055224', '5.7055181542801922990712697286936826369136399715709266248399293604043992259309658307682824893308496146676808e-7'); + T('3328107.8494', '418714348020467109958856616981538014194347311895744037569297648600727758725623', '3328107.8494'); + T('-551844215309008408275168733.623176966939595953994851048267562459636894172209764669184645704359671910176962904921966067381393678263185580431892958828100', '52489.2323', '-38379.2058769669395959539948510482675624596368941722097646691846457043596719101769629049219660673813936782631855804318929588281'); + T('-9161822288156514844155956374210640490022366908510', '1389019572848235000704785709077750964197706899388709294785368095533089044973589', '-9.16182228815651484415595637421064049002236690851e+48'); + T('91056139545088458766054934573084198168.5710642286038189576393294864960', '-4517685791348280307925690612882502300237833708968552977972888084474038473.394339218360256523962637702858180915401362080730', '9.1056139545088458766054934573084198168571064228603818957639329486496e+37'); + T('390029336502365918513931.130015474228581793566056937195029617483963133928361072920643966836693549318455838606', '-677948403080048563372.836374', '209004731337994574550.214965474228581793566056937195029617483963133928361072920643966836693549318455838606'); + T('-402587804331.52384475209667561672439292038632064986705375834023160394', '22953293360768232064948813431816046275755734572489568108170437942795164066617787530406717846925329560915859870010112631465336783868468156816495', '-402587804331.52384475209667561672439292038632064986705375834023160394'); + T('-625315195115297944213401252771807597994808320636040980', '1245525668172581544516010393636352381040839194590487646892457620457541581549954855850913555273127518858.5699453665074315653164442153272409410', '-6.2531519511529794421340125277180759799480832063604098e+53'); + T('0.00000000000000000106014797651953270761670971091554825136816009688246397263410062266680994943', '-2837919311814592501835.894615149733052873373862623419869', '1.06014797651953270761670971091554825136816009688246397263410062266680994943e-18'); + T('237381233514476032201357341.4041', '-0.065815324672679848778208005159859', '0.049044652806221841033273417056172'); + T('-0.0000000000000005144544006903982929329271186335022979326957607423453760483024388746093708635051243834072032', '53859.824448316', '-5.144544006903982929329271186335022979326957607423453760483024388746093708635051243834072032e-16'); + T('9.465307046802752058394916832226320349420927855272418', '3177012152819988337055628473453787701666615', '9.465307046802752058394916832226320349420927855272418'); + T('9573738794726021107.734106032', '-185794949125622556219134912729610938207753649877619366539537127820541141774242915', '9573738794726021107.734106032'); + T('-234.492043915944790198500267399199969588539805', '-0.0000000000000000070050048053389237694672406069762', '-1.7957735143268502710881087411774e-18'); + T('257434448562147186372612642412.726354747500293136781463967693646812824724851090463016', '10376593029095719663406559308.704088391790279215064412899034913970170280677326597734060879629830748435773301327', '8.396215863849914450855219003828233344533591975235554390855711528737988595252117398538888884062037541440768152e+27'); + T('12285490012463121838351929674277761291240995729813968431132385721778827202446854153384062524345407227973315579239229493694920.48275614705', '-197015608939.8609489308', '196270462249.41659606705'); + T('0.000000000002240974449242592254790173835564041606148621842662292012652507440629547097709122038267701655839515607132861720217869106265565545', '-23335987271047953972812286009148867302941199929709819822218.47662872390777570098607457661024567895703928912305401676859', '2.240974449242592254790173835564041606148621842662292012652507440629547097709122038267701655839515607132861720217869106265565545e-12'); + T('165366904096962525782012054078987504568761069721.4060389256731697873983611830230858921671529412698579846557699', '3444399121879479169341765797909079931147798377878056422577985615184975145614404658705092317852628448.8200951', '1.653669040969625257820120540789875045687610697214060389256731697873983611830230858921671529412698579846557699e+47'); + T('2705886232366102755195760426990938611198454960222419636993746631582409715337015469937064177880977434.52524166361088019858326697993', '-153335210993719572189122942382836225292613994436997443668536033261124985431110232311472271345055289442071134321117800654483720838841', '2.70588623236610275519576042699093861119845496022241963699374663158240971533701546993706417788097743452524166361088019858326697993e+99'); + T('-2.131', '81.141175482525877411234926403452', '-2.131'); + T('36280697805.456872085448120623178135789191532017507413855482045239572847567984946', '-0.003264019500578350726232120923403720087351790298292836973891286679030626156471457', '0.000840690677320778506160517859695422697759302805218793948421046952872287436211442'); + T('-0.0000000000000000383294424564471974556118502909006204805914338360402016898543', '189834035009171131324219625463596327097619764552465816576075046748053426206833060327761155383041718993336', '-3.83294424564471974556118502909006204805914338360402016898543e-17'); + T('10640490.5446167580829516100444812115028794128019', '-3356962116245265447.78909316730481260744693416477010628711925187303', '10640490.5446167580829516100444812115028794128019'); + T('66770.3424620469504716946257076842243098386178403211027502322850765242199540112623715366358838507920992543105400494508613543146408231317', '12.513626579144904009386433045173431405442032767743437096384724485707600961521450554612546096', '10.1446623088875816180054116839677618053730244098658410197799452741688242943236626787024616907920992543105400494508613543146408231317'); + T('2006898576304765006614781291454031779440425434725470591551164794.861776715854234923976439', '6.073', '1.986776715854234923976439'); + T('1659509756014472961738450001016716874178644554.45519598', '35836996.118873689899485945983497236111', '33163606.3246718766078753085595268271'); + T('-6249029048938249062243170609092474550191037331.385626639511695286190999439371', '-108733052645.39651948756068195820182', '-49787722470.154741457236628551037439439371'); + T('3229906275442392424418195788904419876739.198022479413785727883243013449038330977486395796373161974679847911', '0.398968452931', '0.076770579754785727883243013449038330977486395796373161974679847911'); + T('-68.48010837866100691663949964911341141391335', '-431347497460708500535477713.921644368607', '-68.48010837866100691663949964911341141391335'); + T('-0.0000000000042873818496651474800023665212086183152315505087', '-0.0004833294030302505015641228567431906450483537828093124623545261018465548063776320121938591921894456004211776094377978846', '-4.2873818496651474800023665212086183152315505087e-12'); + T('-16963834223166719706079539302.342838131750515721187172994523', '5062538155437557.3543319054238404926367207556617251997556392366074322977693815298577958036063656158349192791752169723637271257149', '-4653064987731577.213544580641442966920884382870283356443820101043539787185918274106379472389554877383448200968409644573003915622'); + T('27752292382966155484621019967155951075006009060959254418846816259283474988719280207751032859907637274084223944989149146855286224303', '7999040368028070748765438.41605114691880938406', '9.2270733244135400413176158796214648476494776e+23'); + T('-0.0000000220775496923969762820783886936932950453320119723971850235755245075630658843057584853140734663613038065152584371146863744860271944228900', '278937252004422983259089672008219526227049167', '-2.207754969239697628207838869369329504533201197239718502357552450756306588430575848531407346636130380651525843711468637448602719442289e-8'); + T('4088817811601835043414165021549173.34648405001199965780370323214083852306094738315385019245330167477793092158413628', '3872463786824467850519422587588270837871264684182279002671582068189548558089190.6338668856949165', '4.08881781160183504341416502154917334648405001199965780370323214083852306094738315385019245330167477793092158413628e+33'); + T('243322131742241598643288437886384992875664969619768995471553676078266766770945268905658381465660972347322840413666337352', '-520908752399942059927.489465648336426083977336790367066585385183838514818914251238668315053257532155725', '336517846493051868082.5236480255207660421751407980256923055283675410001569182573777995089783207908381'); + T('0.000001076734879087', '259571475955474', '0.000001076734879087'); + T('-0.0000000000000000001708230742803565810750173450663838191720653599608146843168311123', '443087835486092973824776431839302000581260502094303047590360860043969772847300210', '-1.708230742803565810750173450663838191720653599608146843168311123e-19'); + T('-10116828102714929396303805403687032885954344533722862963220965618949477520274569058488672373457467461916061160346468283787006793', '993946132322903524101486258672429377833245402642388403366584727501532708958381633056725438997379324147994463788158057061040895860915826346549.0421', '-1.0116828102714929396303805403687032885954344533722862963220965618949477520274569058488672373457467461916061160346468283787006793e+127'); + T('-389784540685386262354634876838022505911248721618526216253571784.633075923', '14179193090251546307844809845741115123.68591663451283228630854744359859823006233091006350233571476950897344052975285852270872779781057686080568', '-7.1414462195758796324750930879094812700989420115077711452950042736953900296594912665141710395533192640587241839627883909055803037985187199944e+35'); + T('-45984185801341303910880240243.76714118367503791509966241100863013219378666011186705299', '0.0000000051570812174238260137276061944120837059018185942344919696042121715357536276082362935247589887241145383799', '-2.8738700535334248371703727635151089062632056136632218642673399518792415040952650429114119520426674977435e-9'); + T('-14905432087844530139366283324831046272631676943288697485416020309138739737561809233765151341023796257375655678814935895432051879324532', '94242798089904800354993279286346515', '-6.8721799631260899670134950264021572e+34'); + T('1289853511883958265825415665788637565052635440054342593643104070764287224769.93948274270941526387678146636906574620943512848445780376', '87.9539218424403804769323138636392398940152461892195350593552856971443615078621862619014423', '72.2591398780413624803529381690619313389774065636772867904263511510258955159663755970342588'); + T('53465238938510497274637223297650593182339185202252203083.1774604451123035468314690671136303407336840099522332334123316657221949276993', '-21334279.8165058978', '2832435.5604826875123035468314690671136303407336840099522332334123316657221949276993'); + T('-3108015.3661', '61126330169820996757526065.416264018282776618615327293283282822614202595204241400248642232068625532106', '-3108015.3661'); + T('-1275542230072231958406146247425815282449610680324545602271.8884038039259', '-243043979558321439267025469546543715381639907851772902031.084835381233691203862582992711992315936833776447731819010', '-6.032233228062476207101889969309670554141114106568109211646422689775744398068708503644003842031583111776134090495e+55'); + T('-0.000000000000000214815544265849149385478069939689813189252105406530375164638737376691673594643332117128360303977189949176016884413230594676158437978215', '-51027595198082649357603319772041435902079915041106170467.57451940249204354029924413238799739283659245365065632265429523372460397305377634', '-2.14815544265849149385478069939689813189252105406530375164638737376691673594643332117128360303977189949176016884413230594676158437978215e-16'); + T('-111350.754570123005196804918034331227325061895360176437728709656573510003457243639517558983859956764977218771481494447793', '0.00000000000034514677625704452', '-2.04176719106943547325061895360176437728709656573510003457243639517558983859956764977218771481494447793e-13'); + T('0.0000000000000596075948515369263847934641280425766058217698627698921776443246618249228249287653194626588231171757500449899328884288', '0.00015836637201409230200', '5.96075948515369263847934641280425766058217698627698921776443246618249228249287653194626588231171757500449899328884288e-14'); + T('2350976577509944947853224866479625205856731752244171284555163774825992062785340964744094088086550435965919613918802628710407949945051994', '2863077556.17572911282887032307292811887736', '1969784678.28266366932123519437643424462424'); + T('-109420981536615914626321665928421681390611584416442196835511987438396387.3285665769331549736310', '-0.707107', '-0.147319576933154973631'); + T('-155772215583445307101973376728964254746022086862918345349651130316968950879085903647.4700888378639266', '-0.00000000156250631895772405757624035051977475', '-2.005231219066573949078690311357765e-10'); + T('0.0000001837341912533402186255699654239577837158324509985744336931487388729640675913909', '-0.1644732520351148576255123808206799034683336488831104519232031408287760056008', '1.837341912533402186255699654239577837158324509985744336931487388729640675913909e-7'); + T('-0.000000000000001833320027801786983664774213824269815', '-32078261563376466267956235494913303920.158358109032084353548239902600710775887991985', '-1.833320027801786983664774213824269815e-15'); + T('-39.6', '-84001578606.1', '-39.6'); + T('-29724877149747295025888412038962646.2553837903819421016896996057751232598092947824478468469244594', '0.010594787103499106023921039896104036529348362781865379404768004199946120463319843372131130828257677', '-0.010560411121165907362703538197379906418141401977625517318897269171797412206019222827160029917370617'); + T('0.0000000297371329456338047054799880006249839037726', '-0.0000000000000000399', '2.08338047054799880006249839037726e-17'); + T('3510347687348.9918310', '0.000000000535137751617828949087071435929520771260034369415874463215729', '4.3970413363665598746475030544260422065911721854665904296016e-11'); + T('1172939419948541405468859374692318735483069696661.0016798921467104516384190202866844256851817314237012552533419694922981805635888196421299458565', '836225885046.0339803680834170441728042601393459064753318767659265177747', '489848285142.9652308075799720859670922143649859637996694219485574044875419694922981805635888196421299458565'); + T('3304012503481.86462667433235823859144825699221873', '-6331887562487821340332306152704795208243157181038687350549806653670754776238030105276438.1', '3304012503481.86462667433235823859144825699221873'); + T('-150211288508225998712214977612499531708.2501845877268623292755528138', '-12205845572868490041320605820426679815.764517713', '-3.7411416338041182163677077673793739190759720317268623292755528138e+36'); + T('0.000000011094742677563476721248293381876559856937729234232159020961832701368001460631326', '-6221917952403340240791870643787532087969062682748828170364381367809149895647888374041427464551506847.51299431101992176148174207489487663558', '1.1094742677563476721248293381876559856937729234232159020961832701368001460631326e-8'); + T('326721863970144140942581356605337628165729694455912.5775012098511224625843', '-5268757703002526369983689288253', '1.3801824327726670886183774879205775012098511224625843e+30'); + T('-165640236596750856195.895988', '11701057069048906945118088505193697795574', '-165640236596750856195.895988'); + T('-46180228389542924839944399544341711000150191241548446973614685877508179228647290933889351181899671153310459870760689493.0640313663321381860', '-13302007.25660543726751034427143226054726399423446928373342294891495068748409491646', '-8810440.01892587916183525077832797812112229177221241364171480643762179372031812578'); + T('647315854763046741826812737683933902168764597679636554385105093993558679.47', '-4490828077170522297233893004993.13249786', '2.82037423805486254216576591662663109074e+30'); + T('1599377725182495758517742498272843305960693020206048973447583115243269.1410087798545951915296847822871200148003875672207221059954691330107473', '5088063662255167160094549907732541865919416012140789.267488408929408273548538461707216938135207', '2.1844508625218647076211356222081320411196598385437706721627302640180596421073005329651875848335672207221059954691330107473e+51'); + T('0.00000000000000000091951455826031110073950473421217054945023004137', '880047376210923670087515320566136957381678956755035166368292510311615040924779967631184922.514417518390289574344', '9.1951455826031110073950473421217054945023004137e-19'); + T('-347310950900872385776467889423388243805166699963730339415360267534470.83828754168432611788446288344053', '-268630368745759667653.586235048837', '-254067255574127219771.59303783483232611788446288344053'); + T('186870193173432148130646645388.879740942923234926201708997173946572', '-30134593142508069785581273.715295334882352524247146983041708195688381392356164514745081831753250268038414517', '5.581096739607390257167080333369337455232069643267155541425108346985999423844065747561298095087893791580083e+24'); + T('-0.1807674864812454987374199', '-4469727073230097681266362826888054961977099149359.0374588261941846339229668347809983286076968459321981644745510609932772908293349139744841118084627847', '-0.1807674864812454987374199'); + T('-609942528111000950646441027284423914421676073338789300919146249735345832203325180490401721.169829288886540318797384013020069162311817163984967658940423', '0.00000000000491817438446678148457562512594581494844507213406015271765904587', '-8.43098438842919315107982234851497412708959280904973168566191e-13'); + T('9224445890397894331131171246915533737228450834032414548525009296813800.6194126855929999859102381839862079418242513149339463', '0.00200244838742528040113150017076386237193859471381402369402196727101743578532914482170210335402189674320', '0.0013517807556936445819076570223433161315655337951471334183465116029136530599646156000418832705275726904'); + T('-48683037685508014142805509729454.7708328664705019554487311077038575660905772924', '-3009.86809', '-2773.5774628664705019554487311077038575660905772924'); + T('-45.40878406155210820981388806994', '17322674941061069468.90696296162077004226138639510007304608119673036621826170347783883962799199837139339763365258311616188171455884', '-45.40878406155210820981388806994'); + T('-0.00000045798269200527002110503804633046978211168710862544855', '-0.0332022903595637863650592445124818543441138270869626594601406767165779904542946340747', '-4.5798269200527002110503804633046978211168710862544855e-7'); + T('-0.0263593463400', '16431622834110668320883651807426049458531131391388126888382321455092604238225568419342828987836945825243059', '-0.02635934634'); + T('146967376566418942423384976079370477844114594100864341309675391342034713364.6833806684984731707692088346576', '-0.013333681564204393251252427627958', '0.005064205951219194772596398940182'); + T('211754646034325622462.5754245', '0.00000000000160680374735486298985', '2.036680263359390281e-13'); + T('51605045186016481873235601735007249791991888297129512533440103662214424121299.1344940307379598284739161103280966', '0.000000000000000000011786218512737462780105791891803245937674332997646395012525762681', '2.588799129973576402223004629808690177116789885879883368785248142e-21'); + T('-617.554294656699194846345554', '-4.010908756729124879238839707729807689382950249519874348632636426606498742511278085488539497726029165636382561543373147540415292914484080714369027', '-3.885254877143088322803078717339423524408611823459224659206626729205692395774452920253456847917537657633468083863908426316460184083935650701538869'); + T('-0.000099945023165063334867500208938018190178130741558039812499297741499312773735009571', '-6722316615037541443129.257975301497143186395975837045082051651840624355546256470906712376653728222403894020565138962973624024728169204846444569100775', '-0.000099945023165063334867500208938018190178130741558039812499297741499312773735009571'); + T('1.47399214966951503197706669234', '-0.0000000001840478582583371644381', '5.02470037070635715408e-11'); + T('-3418446258', '-3958503176047281021850594866790858400.121417849614913', '-3418446258'); + T('-12686959556778981227071587746211507082286108179183876439271646348604072647005650127081913277412890.87493710443296410449', '75268789302897574467144387179003360679990148424', '-6.783811385634916183071487831399702281781586685087493710443296410449e+46'); + T('-13107.4826208600544806407030932767550902829117391520', '-0.0000000000000000037384466887246671347259264227228597229847149881116611194168157515133538054652289640187466938841', '-2.0126616347799094847193752802827297838499598456064986684374889162126566609421987606571510583884e-18'); + T('35404712862830131528829951583097767175730528979755821351149896205565020402884938392577568669927538981512991749406271', '-1031829364936517351885757530329733298799430897476255354154166810707348414663475611609730484965498257348081066493148106978487899', '3.5404712862830131528829951583097767175730528979755821351149896205565020402884938392577568669927538981512991749406271e+115'); + T('100539201018290722728826872367457614631333', '-1045913633296200056145880201567560454793511080052389543593290266185071912897427558382653862152861912376736712460547.2617511718', '1.00539201018290722728826872367457614631333e+41'); + T('5900417857967.684122320330266311315988571303719434583688056', '8470102.1', '743371.984122320330266311315988571303719434583688056'); + T('-0.0000000000000162275925487344742900779431398339947832550078717275513304235810620', '-98527398065181443.95890070566948299821236792792', '-1.6227592548734474290077943139833994783255007871727551330423581062e-14'); + T('673799374274922.944483940435547205550045463560294607616912043082182683195821140728435', '-0.000000000000000016485778560418899864685352845577378671092383279170185079302767621027277318696115879445674705947984124222523466771393786233625', '7.82834750139086490154197864647850303623771092697051197255144188339215023494951403366683672964266180245577656923491776051375e-19'); + T('-359760700574909877872.1893981874549355621361385437217', '-0.0000000000000012525895046273044615704543219559935320885590084464816796118205647431065997743952', '-5.273873466758084448309839663582338093952872688281491316326187652956128120625712e-16'); + T('-0.00000000000000000344', '-278600563952441146592998231079910916344907758061277029729847723704754927633299267404490050381652171978731152168944.3624353', '-3.44e-18'); + T('-19885391235.72444811560527014674591026983', '-0.0000000000000001210077665069172292508225410469346919696252649033898358285924802170280105173635047594325479625128232032868344035725367034768312666555169667118', '-3.27041730165540323618629447140644363558794072504731638157226990591284204649561893100263048858295969889235470457661290945938793086438381112962e-17'); + T('-4388062185.483', '-39594387554948541710295853541397266260999826140754757455063575150482412990992087849313100923544071923172382024125465206259558449365491157951841915852', '-4388062185.483'); + T('1.27', '21551626592.4081971013247452256236019543192696982517035660906335460694567861697569727904693502', '1.27'); + T('0.00000001329440489079501558889737803395626', '-1309144737900.376642959151800307497717804787800342628351', '1.329440489079501558889737803395626e-8'); + T('-156180543107.87592902679287176867109874431', '-4686280179444986299955463199189.092904143822557816915953501163200171428106923307793221186641484591113126104675812379227570402', '-156180543107.87592902679287176867109874431'); + T('4295520.77026900841676666457392998671922680353168654102503126542727033', '-38.020', '21.17026900841676666457392998671922680353168654102503126542727033'); + T('3756201184729.353948914504331418531', '98764.22688418263420', '9105.893120837470131418531'); + T('-183445480599552748298061627642.054002297', '-0.0000107', '-0.000007397'); + T('0.000000000000909591216320809881489928409865189195215922428863268009816135413196049055956596319025228879647140264146595335905308933772188246737897', '-12795.4852229887102245317', '9.09591216320809881489928409865189195215922428863268009816135413196049055956596319025228879647140264146595335905308933772188246737897e-13'); + T('-398115161708797899244094', '-0.00000190822', '-2.2942e-7'); + T('-848992173816.728883939845041393969214986771465330815208069567930789668049373073351425877934822175812944020178983059783798362', '58562228020085626501399449892933178818812686495472026995354960915893982723005540323314902834042032988.31762122657557564887837408661222893484485', '-848992173816.728883939845041393969214986771465330815208069567930789668049373073351425877934822175812944020178983059783798362'); + T('170689702928493785198704770480731726844384694228880632000086674248431636854235360847784394580.85956251018513598050194639733320', '0.00000000000000003249511361722935184708182221178448630186575980523410123888723074013021153647708920596380343297194452156472646750', '1.32996935134055436147559167404493656358621211234030812331554355557884963071617424821454322841322328537630845975e-17'); + T('1321696536903060333507124214923130056533062275039547547929702694853188954923451499474519149', '-0.00000000000000025469171278', '1.218603981e-16'); + T('1519725031000099259255503608727143117600103.950594546108601767133460279781', '36369953008089867650245915598882421133753955282.449761084477781573225146186400665554685339940078210117714275205598825657812211050146', '1.519725031000099259255503608727143117600103950594546108601767133460279781e+42'); + T('-83497099821374016986286773.646990311001433716310815087541958164127982967474303128253316028', '34.885503706835596', '-31.096961763167985716310815087541958164127982967474303128253316028'); + T('-281551500617863299353204258388337646826959732785417359702291456810294245173', '-680761080887665089.960819023854303651778569787', '-75711260041960558.526892392939593150576805521'); + T('-1.15721309733221526556327685277570425765587629667165133407328940007759291237969184088163508432164257007784170132569200710694878', '-3218490902199503763628322542391806103361580787103.2620354099117464128382431498128680419559189', '-1.15721309733221526556327685277570425765587629667165133407328940007759291237969184088163508432164257007784170132569200710694878'); + T('72685543', '-501466282854557781199312940523192072364105342282967607632661628.19377138387', '72685543'); + T('245721737418068480302255303255239643597822590292208445238466792403750601113775053588192850226', '3386598210277254485823559672192', '7.42596358685217392305157389746e+29'); + T('-2659239972.775732441119988378284430845255754722338730479949959770532563552221440837219977492287', '-366766093425414896727693582201631208201498739206701475487999587.04784925264477357068332', '-2659239972.775732441119988378284430845255754722338730479949959770532563552221440837219977492287'); + T('-202937664456304.89555195325400615051606086193279', '367508289819471739156301421289081005042399.214321331102128714358354131581972689141507241561', '-202937664456304.89555195325400615051606086193279'); + T('-272399937191.733', '-33398478226504197401967686042303959950770799816157551894222273006.68924', '-272399937191.733'); + T('0.0087589373702205672661687978512384214861196280910391339165', '-373449691484745421909661659779737619793741839646928018592372485434538362245960211318420579829536.7917148942879686985463255295177053873', '0.0087589373702205672661687978512384214861196280910391339165'); + T('-0.0000000003525427146401188285154486', '894317500882.51091293970592971909046143867805856323040', '-3.525427146401188285154486e-10'); + T('-91451509534712961197767251912.12413503036698723430206046435825379830131588169', '175966443745543358277161986311916627186504872290571423072359410287954017058417918465262148785893573180476929551596101110996620722038220', '-9.145150953471296119776725191212413503036698723430206046435825379830131588169e+28'); + T('5239772947176538407844432421154043692127337338786315971056005937511720316060149414713137609138942592364274998260.3914418522', '-0.000351999447227731010425590682', '0.000220009266937371477472993074'); + T('0.0000000000000000119885361224350878697901381513746669638803014061044667195642049359814289191991814187212222202848050879631237494325242872', '-78535546704.5392511810713502849597204629156277123901805', '1.19885361224350878697901381513746669638803014061044667195642049359814289191991814187212222202848050879631237494325242872e-17'); + T('-39212530235163840641.889', '0.0000153516323003372462432711273284710', '-9.9431734462012600433819830344e-8'); + T('0.00000000003095857781498', '101110441905084702.0357403762824', '3.095857781498e-11'); + T('-10334049534629711384154568939144539037486810844012775904747573760967321021577642786297034994468008867806308331807710193171907638257163287742135', '7', '-4'); + T('-15218677194629873309845552539810909.24144546875160065973098514044701774323707782894779555789259131657466804', '-34518535980025586317185189406244975538787915397779.23976886730365452862236233621200723924917399966293372039141790286540026470', '-1.521867719462987330984555253981090924144546875160065973098514044701774323707782894779555789259131657466804e+34'); + T('1140580.761784', '5541289870140054.14605122999270451642719393072416088141141309658972740905789791956116896048544622227464211', '1140580.761784'); + T('-19230493275938204954207576965451693824417167596.852559467', '1772734380358953111610301912647488842242624961779873682671334193795568636568468773326514107362478536842717561130919918', '-1.9230493275938204954207576965451693824417167596852559467e+46'); + T('599.7', '-1619645435801723194772984.179363365313908446470145035129596757155977', '599.7'); + T('0.00000003527897184750897367124288669208530527416142299801842725622500628314084302757630841538287485331290943712878461770448393129110928068601146662', '-78850.70929109605094', '3.527897184750897367124288669208530527416142299801842725622500628314084302757630841538287485331290943712878461770448393129110928068601146662e-8'); + T('176028.398859288392592242830374424713538809024937584968933934', '-55388056.672', '176028.398859288392592242830374424713538809024937584968933934'); + T('-3687887449589971447806306109197252366886458742730568279682018480906663049444897395704418760650684470725759432270992', '-3.7420395715065178572722', '-1.37688512348852048922'); + T('0.00000000000000000005256579563216950668763224444694962365341802542', '8723053021165901635236330129212563.3636641322636657590577963894918834488095316505676835145660950358', '5.256579563216950668763224444694962365341802542e-20'); + T('-0.00000000031', '-40709625512787616635932401858411015489778633837395274172588092946942501539158146828356731279975556752797552634865553259851', '-3.1e-10'); + T('-149135372988628919970496739114893960253872819.29190786741735400203191111811808959575782606817793421565345731848675379351509', '-27246318921164548382835661684073753930547046090475812149871172745414922', '-1.4913537298862891997049673911489396025387281929190786741735400203191111811808959575782606817793421565345731848675379351509e+44'); + T('-24363147306500486229311532771740994620057318471544291974564601298526862244753274543680731501921598200150080347486100220249.95', '155112283879060815501594513038826638314014.151622292976655', '-6.0684495386164490837630162468104486251948666896636943585e+40'); + T('-21581136768145783809281720761.44048211993924021469354146024085251250876602551196346646616560379632610', '3976135041682843254167378300.9535996945876700278842158983543387014253903902294', '-1.7004615597315675384448292566724836470008900752724619684691590053818140743649634664661656037963261e+27'); + T('0.0000040326918148754448903294471525102', '-47372770302411027590776261462082130188562141598263.7', '0.0000040326918148754448903294471525102'); + T('-0.000207149307738031286357317412628083411158171708095191007176464575073542347747004508854126911118', '4571168574.53730007', '-0.000207149307738031286357317412628083411158171708095191007176464575073542347747004508854126911118'); + T('-97509529222819532741120.7501430099139821788', '413204.03894124413846481557841831902206393440828094465180414091136336556519710979330', '-225763.5035665848727274739410862425313052713554127953879950852567857905478666569684'); + T('-2.00', '-27821012567074003433639721305709103428961197219622539.5685794624070639394524366200311619036627965777978152267632220', '-2'); + T('-0.0000000000000000294734806609719368469844343453588795984107909582873623530491162658480309441610559248449712368676186348212527994', '125.2766533052382457665605834964486208493706839813580506', '-2.94734806609719368469844343453588795984107909582873623530491162658480309441610559248449712368676186348212527994e-17'); + T('-0.001633958178625393150319605773581603368794536210123014338662866483443630520788262608537108853222673749309263319138110819633916150775', '984041712528385604819023678382822872190082698761085069290999301227.7932731339787355560947196826063289233812103279464', '-0.001633958178625393150319605773581603368794536210123014338662866483443630520788262608537108853222673749309263319138110819633916150775'); + T('-647590209400834319944871139406631294085860629844127321070709716929419594078771338864670085558591972653967722448703626313095422674915141792986000', '0.1598243963757636855858934473058567117813241414088147740804621207975238365569266130451403849392927831342716601396536406385033', '-0.1044367829611085137461733259113676442705082608844196425772771026984610209105052891722465431157849664696915079658107241925781'); + T('-25494638.01708', '53771122205901307230592753088190036050267061395902109215165014594840247575345774715515212', '-25494638.01708'); + T('3699534688828621863573818255225145699064136663560216492004997448846', '-9352801580752779322144587524942771278907911645795358120645130483618643349473297562259322949157930678655.0985025', '3.699534688828621863573818255225145699064136663560216492004997448846e+66'); + T('85032671555909805603615516661404.435251', '-731048436229736323522.991409687588012443676785142131368263222377948374546633511253019699058056630484634450274338643065674171', '313431824866633070885.329503399810155585075007013107299041216892826957929258111083849330121077202750028714374886317572152301'); + T('-209945559192857.1946165', '-27531413554176324889547266436322269.24', '-209945559192857.1946165'); + T('-295428170594032684107120468868902197984687862352304428967023482208137265881.1518679174044920', '8841356497728907803087292.54', '-6.173111942792252980851311451867917404492e+24'); + T('-24870862326767803723609181211951886785506016576823555683020976203476199.6383226631946206831968357575', '39.0192876', '-36.8342102631946206831968357575'); + T('0.00000000000104093732456948791535660490005579952856632590144252349583941188680067059085582490969', '-0.000000000001845', '1.04093732456948791535660490005579952856632590144252349583941188680067059085582490969e-12'); + T('-110171543516072519154077470043041622245899518010724357.97', '-215985365493128751969338708436174659881146326.47130407981449301251477', '-1.8642809482641267496491145390027069075248347603428080841787298772523e+44'); + T('-5897509163.33237929190342310229239099251637748593970183365297489393099622646591458028949809204', '-0.00000000000000001049808087192732915451590248336583114743497320652254457639908692412845756123814307660410407578158294', '-8.86866462108221132146017741372701042754803104583264417668482799703357268955774117913535569071970096e-18'); + T('1947618330530090666893298405354739308961415698078028620052704641974391377424081.4370720895447112874307354517864830938810415902572192711612629905619', '35798247027.429407843795', '17046145447.5748487031747112874307354517864830938810415902572192711612629905619'); + T('1452534530844578587286793835405885853021971526781401425425378487935294373177736296627509724.7721554655330008757886130352256', '-2230097289481941875743.70308986073045123685990370268605393875797132020959914189', '1.533131766810854713997740773599277043497855099271539159216055642143596393742e+21'); + T('128826616832138303811999586234163151680224444940', '-0.00000000001208356353496390300985175475564359178694913852139721834444645980664649972867877606030662673387062705957528277363458571248', '6.69584035445008621624129454859440871477459703283008018887200388923227463902698155614027423236686957320538416711587060032e-12'); + T('274755781466764052656410387030227146979693383969398878026929839099188933143187954.316630799958652729870465414351983831108637697738523329171365404311371', '5027580651709666928642445905700005774592840179967656101.79182444554585905527707052212762780497609', '5.48687928393824668751094954125758077209867579670314978177150003853834520394957509967430136734987697738523329171365404311371e+53'); + T('-2406059574284703894148440688533903170413209795439273014905177947511690472468600917700926344523744291780294283495749086476739113840212', '-203.98100910360', '-185.5516256192'); + T('0.000000000000000003179154784807166104910307727154315003026622310376783873362697561702481688909293567273102622264690939490656665370251098076', '-5350134300750700517120759400898359875793', '3.179154784807166104910307727154315003026622310376783873362697561702481688909293567273102622264690939490656665370251098076e-18'); + T('0.00012091743522867814073847484062603275868239331576857596900007215494716545366688505334', '-10378723922985921543083277863626740941254369901608094932235751553750705682535457043031.41378179327287353', '0.00012091743522867814073847484062603275868239331576857596900007215494716545366688505334'); + T('-1660767751.4', '2459907786914500616387727754259763565894446392427524988.3089887', '-1660767751.4'); + T('-0.000000000000000000033631822597167449133998986776130306365257623634866807914936753769658125021314951009961432799089', '797319763411607221.38591797885093271728899657566132838267977116823008412182171464', '-3.3631822597167449133998986776130306365257623634866807914936753769658125021314951009961432799089e-20'); + T('0.00000000000000007281386061841728062540615021553752512420210250015235565748841313988186929535298959795327001', '-0.000000000000018307307966434251165', '7.281386061841728062540615021553752512420210250015235565748841313988186929535298959795327001e-17'); + T('12297805724713550651709585300138356133248943868', '-163701508250759793576897510100944.363665567661696351838785854587582512790473802696800243554593953318621704650392740611277466227704883765281194971', '3.1332237910487269499049391286794358622794996271733943713726789898996217900759489344672017564153060898774887549719068362196506671085592851829665e+31'); + T('17961425562245817409581216294804746.065661120381362624317312407718862471407015786507000357168717692371625586', '9046942197910576941857651741.55434563534612137400298066696827535805595960684000066125477228083537184278377', '6.49408647019344859254849589352376161554251481462630160649054320755389913647417290498278294020058008596034e+27'); + T('-3360310711195664412184900840786504257661992132828215038244142041.22859603911690657528947205783809347874816594', '-5735628655860989.451138', '-3519456098473580.96254003911690657528947205783809347874816594'); + T('-0.00000000000000001469591999823677591002239452537827102191452346037061990719157543642750620200165386046868332215843328867721811877823863271769224341852627352', '-52861761302592655772535505924331973233.9199278286451051457115517367966126642231724169207509694259781203858104417456554118076000749697086', '-1.469591999823677591002239452537827102191452346037061990719157543642750620200165386046868332215843328867721811877823863271769224341852627352e-17'); + T('263428047166492021214430897.349', '-935321863128449821208776543.4661', '2.63428047166492021214430897349e+26'); + T('-64.23084746043437274748289661517354551174901810407232904876189241671863464191391813766386551115089149323979310399810268895863595', '19838093993118866366953732423596875847833914', '-64.23084746043437274748289661517354551174901810407232904876189241671863464191391813766386551115089149323979310399810268895863595'); + T('0.00000001042725590087839885246040660938289118002692929859', '1895509692.418538195', '1.042725590087839885246040660938289118002692929859e-8'); + T('-108703266290337059775.6444368018636935234787428949076436661761248981668101717329076241048414498', '-2258330970500035491281882848071727906499835424315004637497720003971765589145517945042230744562306208501662783826524402', '-108703266290337059775.6444368018636935234787428949076436661761248981668101717329076241048414498'); + T('19785588947095741.16', '-209378513090293702090937928908481270047755761853726892468236568171933572299844184320681716923601277379094105477', '19785588947095741.16'); + T('6.5627', '-24491197303184669250685680749224554131071232120525816290954743983460746359901828278732159826845479302974005432248.98478397721775763807590701860762', '6.5627'); + T('98040252941.5584387068346031648', '5799356330802.26678574689410221475982263208559136859429961045221424410142780663576353327734590059939940621596297615', '98040252941.5584387068346031648'); + T('116459945', '285087451924', '116459945'); + T('-0.000000000000024977925576784464857382157052766774720130135842951378009457010637198779202473727325439', '382620017160416816899117416971.937114437851011757205933117037959418794157533127476013068487945074162512915274505494963681134423226214835793018854460', '-2.4977925576784464857382157052766774720130135842951378009457010637198779202473727325439e-14'); + T('15693959990166898467530406779039841070032574908199729638250529357153104897', '-0.0000000000002824974164922651345048893785611071689041377509099951591709879707481443285597447959', '1.171281807977374285869977160622664270509881729566135484299178262958875818964075864e-13'); + T('38848812619964290843361545253566362214', '0.0000000000000058425180574815230559485050316708859218673791077977584355914797766947281173401829358941785694963992', '3.1516654254079360183309571610860641637778291889893615348383342541484388461460984134093274298941168e-15'); + T('1747169015246368594998.464722228648492098168730638104125762700809327003329875209', '0.0000000000000000000284393447186198269469304488191298546623882877275494399348981067472547693385217621583802872048566279451580304473660909939163358', '1.51262832017785291204651557051891862995924391738284925362711136214365955363154169051468433756051932474065931228616555991508102e-20'); + T('1431452840526919937933101541902740083072.42410139031811129499443', '-37469198013000024864225724154390.5943722958', '2.035118407303377297932806595854716825940131811129499443e+31'); + T('15195.99', '6038496355477993856241855699590649428405756', '15195.99'); + T('-2041396228526158683078620920473339987062472388906811556.219705106443467336064724639399525662209445478538446773454254723160644110', '-9896112700699691291.92454132620577755838251', '-437387204257609623.94163554707241697768552463939952566220944547853844677345425472316064411'); + T('0.0000000001675722009116506345401287561663653181456651402449423225303665889095', '2318773737623386732448176059369887376294723563923814698031839194174397762959815701', '1.675722009116506345401287561663653181456651402449423225303665889095e-10'); + T('-0.001277093413988786193792338596676914602745937422', '-9054497669216982378641234353912833868366784112824225472373455575687.06067706432215821280', '-0.001277093413988786193792338596676914602745937422'); + T('-7586359.946325387213858428685527361653731476271038018930272114935277172424094509714364626279197619817316315689963471346611526175969', '0.0000000000000000430136274016202618412879577873962429424232143628863509810616167892960358806475007016344779281704267625230587638895190481865206340', '-1.7310828493766802121394011969560202470214375466524665165343928089767553023528999738804774624545501070324448831891021818491806068e-17'); + T('-103412754444480069058780993539472717862718628742017032622717305153554156500660602780.3951870520597328029305', '0.00000000000020266200284082826503473600665777073078290305445466856192999389981999174414790577002212363701234328068734339302422794462188621520017527973975244678966', '-1.1778610247698432518015282589512280988772755012414363311971091185982964630918238442878242291061344089450155031117839124238643126352705822770745553166e-13'); + T('-4649840103983286431118728885.5686899779272666748077658422319061095341256831328876230', '-0.000018283271700643090900759826621345966959563090797', '-0.000012253346082427405840049943876343545027546355616623'); + T('11177150046419761513519128718157640126', '411523640124736736627670200725572416567962335255822909421', '1.1177150046419761513519128718157640126e+37'); + T('1096935867719575049333091824804333510580945589.83824692435717061889762037572296699239931905470583854219762636627842602007335719758', '191153987761529206300925.3273', '1.2912957009764464951516411274692435717061889762037572296699239931905470583854219762636627842602007335719758e+23'); + T('281098490751309919781.837846365353940940012601874942516251228270125', '-0.00000025737546499923055582341344593708193968274528519657943958684105481278501660321915687980677654353727621750', '1.513406720586607228234865179218366144830241157041834126753669969930905426261187858947727786029406807325e-7'); + T('35010488237245036697520709084885266506843.425268', '5352655279155382458162.94330921', '3.34054595183665523603034231901e+21'); + T('31145808975597255138857994779920960247290282089774585062872200414184550100684.303586528813', '18.3819835858', '11.042075433813'); + T('356018189420944082693927775557.325504971417155535076952686936532414415559512252384067063438680483994312420857090610153342560066768401075', '-8727338718894573084672497563561164796452986318031589007265947314318840375612702741093080619723378442544516952773104113190035800', '3.56018189420944082693927775557325504971417155535076952686936532414415559512252384067063438680483994312420857090610153342560066768401075e+29'); + T('131429872161991712843260938039674340723308898895521699771855.024419884969996712236865308648727765263561351531', '24712061.01438024179678320259', '3429325.950976494326109883486865308648727765263561351531'); + T('-34341392.101415133561441008979017430685687626916432806544362758', '-1799749026300082270308704328638985.5768', '-34341392.101415133561441008979017430685687626916432806544362758'); + T('-8413086128647.685221', '1606998396292485000476010332910518280001488901905838129531.210325550440342452530296261171681625711233494822776448488394', '-8413086128647.685221'); + T('-3.0', '-3139', '-3'); + T('153157.73428689664192233409327048703188379081578410604659706896677053628345674074129524175863661791683502264736428459474866594560693363338143', '-750845024214409.258', '153157.73428689664192233409327048703188379081578410604659706896677053628345674074129524175863661791683502264736428459474866594560693363338143'); + T('0.0000000000079148423562335767793913910035210781639819699467034642740182963781086448957016588218561890889449126109310405024351752573234749277921432649542353715', '20.00', '7.9148423562335767793913910035210781639819699467034642740182963781086448957016588218561890889449126109310405024351752573234749277921432649542353715e-12'); + T('11859857545035115534901402622688845103.26562817190421979271737710348373108096466579924379735578113634951611925484107971222', '1851265684423437968651977889678101896760692374632438502425532634360068350.385560161140916692762655434938124023616766184141', '1.185985754503511553490140262268884510326562817190421979271737710348373108096466579924379735578113634951611925484107971222e+37'); + T('48109224570352158844369436263326645.893373810649056419300323575418280726520558310461296', '997.098677101792499906198905275633517346903196994899968608672152519988658750302936220222619145776458182531806754907465557169', '935.865574632282320424247042476598393609973055983379471096359067799052781834688483510305261831102736621823846394515810747161'); + T('288352547873858.5', '0.00000000054104505228159386805524414898723018589882606496349575056289472447535373273397426133779673431360860889934275', '8.2673783217939116398724200124183517796838889199181998847282343820866487394178542482519715167131249859192e-11'); + T('0.01383525030381675505711753283705031809489417131896036954963744982627869295128813174764504280572980911841888', '367605263666452149870730318125641658304719350393018537475278503369754165680652067258735', '0.01383525030381675505711753283705031809489417131896036954963744982627869295128813174764504280572980911841888'); + T('-3505042194759758434255338972290034512117930395098910381818797807.88446', '-3902404098859498614003813210221299711513544600259011148097595421079608627612964369831566426492055190022939.50548422319511214', '-3.50504219475975843425533897229003451211793039509891038181879780788446e+63'); + T('-36026.8915685144533733380523666761979285283755516228130824117905334817989501255635498677420902031957643520214809171824', '-114223033898589812722834379611264506788064644828093.94800173309118106933782098399593703341461245', '-36026.8915685144533733380523666761979285283755516228130824117905334817989501255635498677420902031957643520214809171824'); + T('0.00000000000000013809121', '-0.0000000749288', '1.3809121e-16'); + T('20724213487987.4778151388942299169660827860781497232254137576387255648682698796172600059231860766018620789364227232170076071666458413', '0.0000001505314883568650229916354199483681188910572425586579937337120672732036834724306361544492395168511705791', '2.29883655297313793669989172506206203246334456768066197147148446745240375475037698012664723934396524013666458413e-8'); + T('-153138392170770562583816571476981650458239771831947250.84840860593737927903083269', '-308451953716202377192878310778513020451424572722485447176140047813202767698204721821724806119.758161292949455744622007277884667216068789328280721', '-1.5313839217077056258381657147698165045823977183194725084840860593737927903083269e+53'); + T('2024889826013722491642109209599457879536241401674305584888599322154577560286041916004095464239039183545712355073451878243704708180367087', '4683338288486975605179756026626993457497864317101799400353744322277088843093746348285508196719464116323961318584747939876770.2', '4.2624056691905146720562441944677299974218341770933920083702456621928076177796341929265641218876544182677248833016820278781996e+123'); + T('28313589531.63989269287899646520', '-9540641513056039416103997609028907233031199495306430017143', '28313589531.6398926928789964652'); + T('-2641228946549921949803625465.800690017957640611162874431878273597335326201803', '-2.04', '-1.280690017957640611162874431878273597335326201803'); + T('3804757657533490618037113031910761806055921644578987055.96708854321879766867635040692197', '-56283755203464428334670377565843348841905251379123127204289309457333750328700.80439297', '3.80475765753349061803711303191076180605592164457898705596708854321879766867635040692197e+54'); + T('-0.000003122558770454963876212', '-39544839986003369027933892780750841310717452858887832507369587012.160870183482262070063337198049486352931637085710934033181', '-0.000003122558770454963876212'); + T('5392479076929588293587612879284527077531852805129124829184368274349602728517523896911896867945402316135762773529299018121736199918072580', '0.0000000000031117750112617018767807786730379346274843985783', '1.4353640854938664984508258039534714987084307583e-12'); + T('0.0000006215288163619792375122235621598208666024377435574215852804775078406912545206606730739256331954317406302758639949372100097183229', '-1700271804304.2321825527640867380703229974396263910191256790985519859411209446664490975402918158602308456057531026581023238119814318747861781914', '6.215288163619792375122235621598208666024377435574215852804775078406912545206606730739256331954317406302758639949372100097183229e-7'); + T('0.00000000000000000001395090317654918659456545517103197123320734631379609159286124417697908168852487462191684425104983578404131395432', '-36360831023.627373636', '1.395090317654918659456545517103197123320734631379609159286124417697908168852487462191684425104983578404131395432e-20'); + T('-0.029041934347034050874280668604145494973712402916841954749197882673846083921928051487', '-24321172024135194808.395261648243950525857', '-0.029041934347034050874280668604145494973712402916841954749197882673846083921928051487'); + T('-1195623993147803871345536056905699481677978210464192436338258797046728634803018357673228508044459476891363148600.9832229463899180212881047872', '74333560130107705155367279487127775431014050908659963244531.63816885515954178693780861744425312763135160774863427607199163982187', '-3.086071550827133408617073704504470924384848699160039276410221417738588615789646409686448568270317981309079754174890980893975151e+58'); + T('0.00000000000000056280331289271771568763154768933854147024773200443808381650318222961243204491709538', '114.456600080136471439211636731189295907102935969767768173395401795448559059693594476527026886599808770208262292019087718144844542649882', '5.6280331289271771568763154768933854147024773200443808381650318222961243204491709538e-16'); + T('6349098329627676906649327567422334464124358967178664653673220067.12545346036152018429985973661814570758371069143', '-40.149580757418441824336470759561465678877107568894320488314323759826632493055455043642548602102537942593850156261255887938596477', '35.559837216237967922905742415355706498518504880575653814975327971087870426830614164516845532783586654567238760012791188596876952'); + T('0.000000000000000000134958665891757075394771428809225066409494541557306409079645322067754548797099784994774515332106618219339715207891623', '0.014098046208108624476748153262771647868771485742957685480766065052014710323', '1.34958665891757075394771428809225066409494541557306409079645322067754548797099784994774515332106618219339715207891623e-19'); + T('-0.0000000001198616208882375095568849612873993998239584002760230102327127648031323996108632845557417295759919543714234552132382176739713', '268502661662756835424685753368073720149943858868258883021295906122336165047282467800229455912077913155968019665198341299031672675184802671292795982', '-1.198616208882375095568849612873993998239584002760230102327127648031323996108632845557417295759919543714234552132382176739713e-10'); + T('11076417241349251662298800548993053870489927630158', '2688.3', '838.5'); + T('234.1833389564397314620433643408344637353276768649544802303136396105002821774541067155967638799471344828367', '-812930653675251477172818677593163802475335395321516392160988863518282232027.9562556743336062078852192049177044015303006113839518790342145303511416', '234.1833389564397314620433643408344637353276768649544802303136396105002821774541067155967638799471344828367'); + T('-140875446895336688695775538626569168776437615910859.266762102378021102701836180989625107023822491824898835037416036752', '-0.0000000008120648359026855681066672', '-7.04899443282288314693761107023822491824898835037416036752e-10'); + T('47302831592291859921582694268176274322977565414806988738441.7361304674456421666929415117545213713741289186588622962427363296591821124', '-4883810167764887872263063592054042463186129668615153318291940325670910399840788193978235038.40572599417807', '4.73028315922918599215826942681762743229775654148069887384417361304674456421666929415117545213713741289186588622962427363296591821124e+58'); + T('-0.0000013500524235084418996188348105405437586078275799625742804819565981475194354476354686524527', '-0.000000002779302718018358208070594207983495336655239720268299505135366323424005449637210093828893056230701144', '-2.09060526953816870459661966854852033003631563244902049130393128687679237358857314543956772810994516e-9'); + T('-8856430201.81983563385', '-938319623036559525783829785765639.1967490372320401152237017199929134065194059252249435216165450476221132716254629851825940147', '-8856430201.81983563385'); + T('-294598922189601641529872833094268363637995845166.9646336278254278800792178104215750273817481774076459356025057202968', '-10223015027442426717349749487745963093309181008.205638767965256198287559296860180242914602395642001035903820036797933102584301654148', '-8.354501421213693444079847437381397025338776937206748124798254328027557498336528225772881099431616930295544689954673127639553683856e+45'); + T('-134482328774078327.78079185017538184873315143896148192681352250548636020696397', '0.0000000000002450342135144683141905584800341536509151970912600522688818921301', '-1.60073903831321955625426419137488883923201731240764068955671173e-14'); + T('-78800324525137220517451995171180995756206048564118678612521109029482402593085439.179075675835830559536829101701753174835', '0.0000000000019610051403211771404265319419334586289897793595385183097754722977683927786401175145119430883943240234469175280289689345365813902443272222', '-6.535925793221845660690544723959477724568508804990257790953954534740872982749100270224419170325353310184590062864940380043185153774656484e-13'); + T('-0.000000000274926667753556399411968202786585104173511', '50122654291684689961017965995633281037050370088364056805776193660843878710891076787.95089764411489192357442121111434586112155176770186465', '-2.74926667753556399411968202786585104173511e-10'); + T('0.00001541285093466595032153714556336460183444913540837825470619197642409009049424847511805411133860049617440', '7665422149126503228084815387690205422619171304204357008349412728229292.3453547259', '0.0000154128509346659503215371455633646018344491354083782547061919764240900904942484751180541113386004961744'); + T('431221936', '0.000000000000000033002980288810278906842632506499735728904330341685973153145895066915569913336407191052426472565118072610', '9.10099606819992067300761400250765866243445746733753730198731073886381276861851209124916361256120258093e-18'); + T('4666715111789921577904245361334034970447224117169861897028729415807979546253890966745728334297280769367.70886147058269253176521844671243912148148079', '6.8', '3.70886147058269253176521844671243912148148079'); + T('2197002885429890116954900514249548697857546929350020990766722904092684082.2392268693970414838', '0.0000000000000332559964853018317783655876966402252962358315523892307692184125776284852387347864848368445935612207352750309642788316', '9.3491979527670904641879713520022687811716489510692050229377615200828160049260989946844066618421874281834484917990608e-15'); + T('111094585048273140985385584415256560233393427038902518.784369340636556911255874165728', '1132940880188177667933583369443202220027425411297999020483308891037542098', '1.11094585048273140985385584415256560233393427038902518784369340636556911255874165728e+53'); + T('520386', '91455585201495693176033076068679833231426120905022134379404266046062624029800133847471370511643609325721500716912256.984', '520386'); + T('459661201486307760729688778845476517533962920316992893663687352420276986833260305315498074609385953532821599018231099', '-270279027874029833827081796161869449847637992962004968243052096882327994299.79117493308674063254110578511458305133003811803355185433888227224', '2.424027017863735990977800631861728865952035304743598958695126250204835032809271219019609279133635203601969578977452650333362539299232143024e+74'); + + T('-4.785068183e+1', '4.100602340813778290214569907944153985840287e+41', '-47.85068183'); + T('2.80464647349124269012895506839600253935327310965e+18', '-9.5524432014496391100798143628e+26', '2804646473491242690.12895506839600253935327310965'); + T('-2.8475390576301982648821864330615e+1', '2.699279786373606e-17', '-2.6651296488681e-17'); + T('-2.9148775309735883444412038961e+12', '-3.7791910283459953859509024618806015827414491747e-14', '-1.2484519780688810034904273898769796515468689534e-14'); + T('4.75952e+1', '-9.2480596298788483952588449013e+15', '47.5952'); + T('-1.059098439e-6', '-2.61519835738114698145e+4', '-0.000001059098439'); + T('2.0737545782540501468649951383811505929864648e-11', '8.001141125055718003273562341771790690597363615833e+48', '2.0737545782540501468649951383811505929864648e-11'); + T('-1.22658750490728083398e+13', '1.8753238083480045539938865768259755398e+8', '-132148191.84975394758545561202438438412'); + T('3.0610455075185277682819215983121128590345078192561e+45', '-7.2132877592078603887799551646099823518259e+16', '61373855855082630.483565489609741494295639'); + T('9.0188012787220251521914339e+21', '7.34972521506799782052e+20', '199131020640427767567.4339'); + T('2.732276e+6', '-2.155e+2', '167'); + T('1.81970803337505025123814446711e+19', '1.552273391587321102352777093263e+8', '121079294.0355602541613892510099'); + T('5.29521849750516603814171596807e-3', '-1.186023062792866863315593132074754530817309278318e-16', '9.65458477943067357182194529851732179008303939488e-17'); + T('4.17590665394570316906941267960925070278431e-5', '9.049524633791428612160450019368774628e+0', '0.0000417590665394570316906941267960925070278431'); + T('-3.349078310428002e+5', '-1.6540638667696404135343644190345e+18', '-334907.8310428002'); + T('3.1992755000743044238501551275241732747e+28', '6.7694639443884902632801069e+19', '58012283694485729642.404216747'); + T('7.824216663065598374539197703051941e+7', '2.8264285749437427237554422632944775049521496e+41', '78242166.63065598374539197703051941'); + T('-1.67058990412026696591650976e+2', '4.22502522584451063700771426002353559984275436807335e+7', '-167.058990412026696591650976'); + T('-2.45635416234991644154081e+10', '1.6511720053714564535061012818217797956053950352564e+3', '-169.9750792296892367202705840388216243464507038608'); + T('-1.234302917437106938892e+6', '-4.66222869142052358935242282170391162075612576838441480514e-11', '-1.16831454856809476137891894092632703280451615639647891166e-11'); + T('1.839710778457895734645309275939324e+23', '-1.16318585777868797619955e+17', '90437897170854441.0401789324'); + T('4.31278525467628823588407602838382746643207760247774704277223e+9', '2.23171038985847514593e+20', '4312785254.67628823588407602838382746643207760247774704277223'); + T('3.0774747e+7', '-1.292178569466e+6', '1054639.902282'); + T('7.1986256721501851444121681387782246892728127232221676165644e+45', '-1.13782811077947907584409056830168328555517006340535538318684e+28', '2.4664369028970742315721904655905118416446174179007597618692e+27'); + T('-5e+0', '1.8187074446258529890089548133661805568989582581e+46', '-5'); + T('2.90713213183891582843410750914399986513758162e-3', '-2.63153627e+1', '0.00290713213183891582843410750914399986513758162'); + T('-1.1994289233986543701822561078984450080807572663172692845e+26', '1.3308098373134e+12', '-1101301973800.58984450080807572663172692845'); + T('3.80222940163e+10', '-1.86439621006147e+8', '175050952.052159'); + T('-1.0589771547255325020757865564001533466983148718e+46', '-4.66653476326811630302573645173380627372e+30', '-1.34743461530630312563356791528734704544e+30'); + T('0e+0', '-5.8555382904168e+10', '0'); + T('-3.877410561846137535676828506580217538851e+39', '1.8546585782329946703671500695022434e+25', '-8.304732800863368666145000987852196e+24'); + T('-1.163627582049e+10', '-1.190310616961783801595291761751e+7', '-6941092.77337225841399948769273'); + T('5.50922178592853292e+8', '2.7726691028626755345614e+1', '9.067016077612284334026'); + T('4.585813032273175774206281699078636679246584e+2', '-1e+0', '0.5813032273175774206281699078636679246584'); + T('2.143209743784799995437859351e+27', '7.89686033593298254046863395059167e-18', '6.81868949928986360863748711628261e-18'); + T('-2.2928677299898057914670255997347455786e+11', '1.43685706448112139571439918598028632e+6', '-306934.405632425577309870670368346'); + T('4.354911010988471845818170482045217459828e-19', '-3.4255381103210061953947764102346444839325208e+5', '4.354911010988471845818170482045217459828e-19'); + T('7.6205756951722652979726396821744395258e-11', '-2.469701682300246385132843673488255945931294e+23', '7.6205756951722652979726396821744395258e-11'); + T('-3.0414336636936289483194714509757754918625515721268383983891e+22', '4.536514951e+9', '-2390201439.714509757754918625515721268383983891'); + T('6.1950756263395220720928988581672084e+12', '5.50299097228515217025542686233486e+6', '994424.9277391452982364908047321'); + T('1.5592703628193685590607028031257876838163995140476313e+52', '4.644158636847e+12', '1438695302628'); + T('-8.321953e-20', '3.425924048971005175376011737e-6', '-8.321953e-20'); + T('2.50545873839057298343115607524742030919655663396773e-12', '-3.81e-9', '2.50545873839057298343115607524742030919655663396773e-12'); + T('-6.626563801610720283429069e+24', '-7.318668911456127669428074219e+27', '-6.626563801610720283429069e+24'); + T('6.579221387782276980734304828884120337616419799251099653496e-1', '-3.8969000319182257446208467342247396396093882352e-15', '1.9767722676183043776377919004479568382127247136e-15'); + T('3.1401513e+2', '1.237032386460703e+15', '314.01513'); + T('4.232794809535764324617667621124324483982653495945584e+6', '7.3809184815598732203484798105535965548268885342e+0', '0.4405677713499586621163276690389136391131296364'); + T('-2.54046333929067768396256156730192176704492639570003e+1', '-1.43509613727037812846035760529266475517733244287446e+5', '-25.4046333929067768396256156730192176704492639570003'); + T('-1.7784812894976825e+5', '1.348176239051319766183648668812555533668836074076e+47', '-177848.12894976825'); + T('-1.34525103103779e+8', '-2.1e+0', '-1.903779'); + T('-7.5e+0', '1.1485396369968399088809663888589e-8', '-2.897466364518558819119797833239e-9'); + T('1.02502826667e+1', '9.3481096028282686300763053917132870455928e-15', '7.7634911550320902212280587730161073680336e-15'); + T('9.56858647594739448303715711e+11', '-4.2315e+2', '168.239448303715711'); + T('-1.121662781899762e+3', '-1.153e+3', '-1121.662781899762'); + T('-1.1987521321e+0', '3.3717546189279471902193720771211135e-6', '-0.0000023276964037193028773035373618806855'); + T('-3.96409663517864928212668914312890035732488673186557035e+16', '-3.503768915124379422490579250903005526551657e+9', '-1073469883.0404370184683678233259100444904567035'); + T('-9.780642443954005196506214589e+15', '-9.0202154557465647565999764323022181914347547218716e+44', '-9780642443954005.196506214589'); + T('6.22723611860453496632948443539098691396413e-10', '-2.77824094902753769648885834726391520861911e+5', '6.22723611860453496632948443539098691396413e-10'); + T('-4.7319718694e+5', '6.8346446241247783161447574947601984306026821486383635e+33', '-473197.18694'); + T('-6.1933379823501920314298624358203814e+30', '-8.089868231074264910103113854481018685411838271163628e+0', '-8.004699925089141256941499632457605509538837084388632'); + T('1.5e-3', '7.82546748299781600669e+20', '0.0015'); + T('-6.7242596508788e-7', '1.3806352e+7', '-6.7242596508788e-7'); + T('1.9762609860647814575863656621674468865989380864741e+45', '6.51277646556899014436272323991705259786529655e-5', '0.000014790203177222374955576884258500785345510175'); + T('7.004000748022736e-8', '4.736649441368895442161035451e+22', '7.004000748022736e-8'); + T('-4.29285701374473103585848390846585847338e-20', '-1.39970996245e+6', '-4.29285701374473103585848390846585847338e-20'); + T('1.44068396723397585225000633824556784092935879966094079042e+14', '-1.85739402953385383572444765551721122270675395703645487708e-6', '2.2082902769721875195705810453565730977529281295245227248e-7'); + T('-1.90763083929612502667113570129e-17', '-2.989745679222607307608195e+24', '-1.90763083929612502667113570129e-17'); + T('-1.8008915784029129140878223332849e+15', '1.2709184544773109938594286324169565032629e-8', '-8.198978038773931537165401098330611286589e-9'); + T('2.5283393571163e+11', '1.42605397244976960657e+16', '252833935711.63'); + T('-1.07482517991266460493961480563252855043997503069929863e+53', '4.0293147259356676513464190395e+2', '-327.97566262501963085789832435'); + T('-1.791459937048480305498333255301e-17', '-3.60140444532360031210882850839206992361061e+32', '-1.791459937048480305498333255301e-17'); + T('-3.7973618905e+4', '2.076660739009108092554128277835978289058948608e+27', '-37973.618905'); + T('4.296835337235213305241997742797979761241859185e+32', '1.016128323816741556885745789299051e+30', '8.773810728563935184150511955984541241859185e+29'); + T('-3.3476803669790089330287396786213536648e-19', '-1.0485228843496121655433179024642877076320529176e-16', '-3.3476803669790089330287396786213536648e-19'); + T('-9.265001828356e-19', '5.82146621596502038608123809e+5', '-9.265001828356e-19'); + T('1.6574237778185417162412521417931606051387220789593e+6', '4.3416420707553748006564234818e+29', '1657423.7778185417162412521417931606051387220789593'); + T('-9.774062277712948833378e-13', '3.080037033054419810654271948e-15', '-1.034488293043803360395792484e-15'); + T('1.0480042083686042910696085478682293620068215e+43', '-9.1636346772043682784439956904897547881091051932e+20', '711021412902451879505.0635467550321309923369716'); + T('-3.40923816647136940940085344632137226188233200061358e+20', '1.6073165168980479523827835495337e+31', '-340923816647136940940.085344632137226188233200061358'); + T('-8.7800373379e+9', '1.589967630656932636460925283862063976207125245919e-11', '-2.20858757786189096197325170019616955392212367465e-12'); + T('-1.508492483290420652523454481016576379245159230227181384539e+43', '9.65407339051e-1', '-0.95207917271339'); + T('1.70797882e-17', '-1.221287649130143636399302725332474299568133811751e+13', '1.70797882e-17'); + T('2.25e+0', '7.2018713275608502122703864334941124435400603003965e+49', '2.25'); + T('3.66e+3', '-2.00125759501079698887197092755e+20', '3660'); + T('1.074410572430091406447031457374002693e+8', '1.14072231468921335177378921904e+16', '107441057.2430091406447031457374002693'); + T('-3.8968391781145045605e+7', '3.823518283e-1', '-0.379345773205'); + T('3.8807293359084454309373e-14', '-6.54951383e-4', '3.8807293359084454309373e-14'); + T('8.3790348726489133341557987289125627922491641304972332e+10', '1.88761931097750519978e+9', '735099043.478904551237987289125627922491641304972332'); + T('1.5282357157991306e+9', '9.951e+0', '4.4051306'); + T('1.1776422045e-12', '1.94520506072334528824768019674726837220814205e+44', '1.1776422045e-12'); + T('-5.738265352165406462762631804597466473267412948e+18', '-1.5172659934372962e+16', '-2999896972426826.762631804597466473267412948'); + T('1.021717777232460732646336675651455853866e-8', '-1.31332207597e+9', '1.021717777232460732646336675651455853866e-8'); + T('6e+0', '9.3047796711618934817610173062034274e+10', '6'); + T('-1.182956037757676026896657463893805186423539855204970266169e-13', '1.7827584304157093780925160931953100051299721649998e-2', '-1.182956037757676026896657463893805186423539855204970266169e-13'); + T('2.2104533461720397849851124115599254191623707092353e-11', '-4.0310943429346438323447892668604172339295221650618858e+41', '2.2104533461720397849851124115599254191623707092353e-11'); + T('1.722426520663101950880778227697e+10', '-2.69592201025681600543464676120992735285696714886632140343386e-2', '0.0223237854099389241141349574091483444628934259089076259401818'); + T('-3.25603413629979799893671467886183127646824550309804207e+34', '1.47161894610216114600651e+17', '-34172500003558300.1070534550309804207'); + T('-1.08739354e+2', '2.9193728838924110750652340949692628787e+16', '-108.739354'); + T('3.206759288064547512180035e+2', '4.35800600237216221853047563599293340753408e+23', '320.6759288064547512180035'); + T('-2.21248e+1', '-2.6325594996226359777509157939720585725219065458496707707e+52', '-22.1248'); + T('7.073189319e+2', '1.08209742786e+6', '707.3189319'); + T('-2.1907210461355111297041e+18', '-9.2745316314605247152343780428919501619175952441700562494e+16', '-57578770899590445.200193050134851462758953093840887062638'); + T('-5.16796251732448951395790039385689407742691059264573e+50', '1.6780101630562e+12', '-1253088706638'); + T('3.51223602606475213080940254052176926846990239224958899e+38', '-1.63965e+2', '137.150239224958899'); + T('8.1882456091960208142365059003084619285549256998568554e+32', '4.64295172738148816415249852304269862921945245047076609476e-12', '1.24381368401600627920725181533134960575834680987278935368e-12'); + T('1.5813114524781473056173591272288745672e+30', '2.42e+0', '1.9745672'); + T('7.454553e+7', '1.538906639e+1', '15.23005577'); + T('1.51240970967848419751948592395604701e+29', '6.5611662e-15', '2.51558e-17'); + T('8.27911469397271464898e+18', '-1.2068203240037786014348e+22', '8279114693972714648.98'); + T('-3.20852252575e-6', '2.775014697501612276189583840612e+24', '-0.00000320852252575'); + T('-1.170515851548909718864331941709405324e+36', '7.57552e+1', '-34.552'); + T('-3.84525210626e-14', '1.010105187954696781e-14', '-8.14936542395909657e-15'); + T('-1.77609228049985890329999e+23', '-6.46964642626693630854488379333298772649377016e+44', '-1.77609228049985890329999e+23'); + T('-2.6073763079e+3', '-1.0248349080124110516237552578873628724235803267839057233638e+47', '-2607.3763079'); + T('-1.3843135851252423514202512138558e+2', '6.264100013e+5', '-138.43135851252423514202512138558'); + T('1.737e+1', '-8.726745986924851889490167717196421297465059646521e-5', '0.00002298524516705360208547066072715688662132777520597'); + T('-1.841251966e+6', '-4.01007093384313393333803996623363e+3', '-629.40736600152459783965549876383'); + T('-7.9035320783720205756630542761451846e+28', '-2.599e-14', '-7.27e-15'); + T('8.04680904556172181303021860819810222422429215449526e-9', '6.067916963498582356994976035938910323855806689699e+7', '8.04680904556172181303021860819810222422429215449526e-9'); + T('-3.2591991380971738720016943747147239739143e+31', '-1.73144320279140892221728899407693684286357446057721685e-18', '-1.27592813736665621853520468633947214694438394987425995e-18'); + T('-1.2588878e-17', '3.261793e+3', '-1.2588878e-17'); + T('5.43e+1', '1.052831202498586189323776187910882192514844872077623859821e+39', '54.3'); + T('4.06387835714e+8', '2.33202324535463287957487622607173811837788707819610667687974e+21', '406387835.714'); + T('5.67752073680296031467842e-19', '-8.601036147246856e-8', '5.67752073680296031467842e-19'); + T('-5.6e+0', '-1.8453950994974064478634206768933065169074111213e-6', '-9.38967160341442620882313109909923108359525446e-7'); + T('-2.401261282811e-19', '2.056364582076044663398637567011867699558230779795276645e-10', '-2.401261282811e-19'); + T('1.0071885115326611960091167358045295888291572049818e+17', '-1.155335154293012676567e+5', '25104.02532384871469245888291572049818'); + T('1.014158574325029197139040004809e+30', '1.232019764151304366892839731605883657742763048324806262665e+25', '9.1852662414944875300513403008082924671691409524768246786e+24'); + T('-1.2960509353603657966595552033959658985645676032863193e+52', '7.312148044790448624282108771e+15', '-3433711470718028.563736068134'); + T('3.01768950813493722706548378704076026752577936470035725e+18', '1.9656153202749223229990334e-3', '0.00073182798214321319862218230035725'); + T('1.138167248709526636888918903478056867722716985003746e+26', '3.6048159266517496763778284439e+18', '719311038898532672.7955886026722716985003746'); + T('1.8330798601350027076470730268735578842175174524571662455e+23', '5.956531185e+5', '15372.61868735578842175174524571662455'); + T('5.64642126873494799157e+20', '-8.4189838723261978274550066411375501139050432727008990287e+35', '564642126873494799157'); + T('-3.35038698584922285256354681261850266025e+11', '-4.971223451368832884824701430128927927628669283992608676e+11', '-335038698584.922285256354681261850266025'); + T('-2.18228628448939641477994931560863e+14', '-1.9848009280011383843320378679218954e+17', '-218228628448939.641477994931560863'); + T('-7.9673369189287490637419160450685121345328702274551959142e+1', '-4.36967584013770925112063732602257274835575300806170773838e+56', '-79.673369189287490637419160450685121345328702274551959142'); + T('-6e+0', '-1.355953074987858129012845374276873617e+9', '-6'); + T('2.8980599713949417129214483614111169203417835e+30', '2.09234393781487031432546596319751546520229578e-7', '3.5199820166059069684596128491376185333182764e-8'); + T('-1.05885215e+2', '6.96134e+3', '-105.885215'); + T('-6.63850464900027698e-11', '1.47441847556286416976794431734798800248343e+1', '-6.63850464900027698e-11'); + T('5.329e+0', '-4.2052296626044402413438748554367560246832050927e+46', '5.329'); + T('-3e+0', '6.310795365619607762092711e+14', '-3'); + T('-1e+0', '-6.151436486161577e+1', '-1'); + T('1.27372286268e+5', '1.4369236059213560786734339762024606028559549e-11', '1.1838867423641287048289062782741685583483082e-11'); + T('-2.47796406858881525393148342132e-19', '-1.114448296870693752476671e+24', '-2.47796406858881525393148342132e-19'); + T('3.31716916602e-3', '2.18973397623066249876504033115990763189329335e-11', '3.5801106985221822189595541951629188768773145e-12'); + T('3.36130377710864393490577917996361199494e+23', '-6.01033888502758381063377894374191325727e+38', '3.36130377710864393490577917996361199494e+23'); + T('-4.05078537570850079118549718e+24', '5.77875486336186078309057e+19', '-51579137737238062500.3271'); + T('-3.882925224099795993538502419426e+9', '1.77e+2', '-114.099795993538502419426'); + T('-3.1151827562342815382088011269e-4', '-9.5939986106878750496332e+22', '-0.00031151827562342815382088011269'); + T('1.263515691650061656757086438088937011975691e-9', '-7.548241773275363671025372541e+26', '1.263515691650061656757086438088937011975691e-9'); + T('-2.54581764865280637563363587278172942730649726409174798929e-16', '9.70709912979e+3', '-2.54581764865280637563363587278172942730649726409174798929e-16'); + T('4.544262038438149962548431721262064539926203e+22', '-3e+0', '0.31721262064539926203'); + T('6.7686482995324e-8', '3.57628817229923120251439846315e+11', '6.7686482995324e-8'); + T('-2.5837243515207675215858826036e+0', '4e+0', '-2.5837243515207675215858826036'); + T('3.5866287777543048262613523108599769647097333e-12', '6e+0', '3.5866287777543048262613523108599769647097333e-12'); + T('-1.12950543165722419512831984028282909551894468294664944607538e+48', '-8.8994740827559322848961144561345767240206011017e+24', '-4.3060230186943786250552209277543855025500782967e+24'); + T('1.32629615572864315471240257652101515250879349726101e+50', '1.24518406684607715300780841979783985e+7', '11819939.0138645251983859235118410325'); + T('-1.790115489391445059426395198670071179664972568459e+32', '-1.6684469764e+8', '-13018319.8379664972568459'); + T('-4.043663364e+4', '-2.201805700480933156346652411e-3', '-0.000764247759663998270288369046'); + T('1e+0', '-1.21869963007789517796039072048232e+19', '1'); + T('2.569643022111077e+3', '7.5897425087682454375918533810051138006394242e+43', '2569.643022111077'); + T('5.462e+2', '1.185649353252424966708806431224964085816087803853753518e+25', '546.2'); + T('1.77779806e+1', '1.884041077778132016302158377e-11', '3.69280262144004372920946142e-12'); + T('-4.30600314463832449294350446141214505790227492e+37', '3.62303831544018299428603870984582744317996855543826e+50', '-4.30600314463832449294350446141214505790227492e+37'); + T('1.46820318075561560819e-20', '-9.2923470300743146049252849193885672e-19', '1.46820318075561560819e-20'); + T('2.62e-8', '-2.272918110884608589603164353380779123924726e+42', '2.62e-8'); + T('-4.946872029105116445758491681281820008627914126e+12', '3.553464565566610158e+4', '-18242.079207968012581281820008627914126'); + T('-5.444799946684106145173105e+19', '3.2264562027032003440966e-1', '-0.29741218915109159338806'); + T('-6.6641862567771859738211631116152852541e-10', '4.53837850928448871996774473572127726597085345e+2', '-6.6641862567771859738211631116152852541e-10'); + T('2.04412473664652568585117378133e+21', '7.17977970071262225892475320830525724040709899422645111e+7', '6850552.6641959495615784496161192519568752280008915477'); + T('1.90389879643445938760898252e+18', '-2.820723572209116115220857118861930149808002989789986560298e+16', '14014003054351590.41100825036250679962863799684070900460034'); + T('3.54399572690074523717477041687706132576531580993088737845e+56', '3.86305546858881436338415083054757481145199924812285238142249e-8', '9.0010818560321987858218342657711149479512082543264309237906e-9'); + T('-2.81021903922014238242334e+23', '-3.81351478552287812572563406e+26', '-2.81021903922014238242334e+23'); + T('-6.6613160898e-13', '-1.35501662654877262254698379956968e+8', '-6.6613160898e-13'); + T('-1.37322505522894140472667261498601533454460065766486158656811e+56', '-6.101994414072054045611858917329e+20', '-111378121206362165144.3203824528'); + T('-7.174927106677644467861669419e+23', '7.3781216744e-6', '-0.0000029266955552'); + T('-2.6550841471735130755928352857461281e-13', '2.29146598195364764153947e+4', '-2.6550841471735130755928352857461281e-13'); + T('-1.98282995527163119617853095482026820489347564940576571365074e+44', '-6.7343972311468478371503508710588269021e+22', '-1.8425585476108166553720676776558276153e+22'); + T('3.45510770293428430743226307247e-10', '-3.453355686854751488683981e-4', '3.45510770293428430743226307247e-10'); + T('3.0940169147998267e+16', '-5.1679827115186675000881679620188097860809e-4', '0.00045494105050079175531229543905152624215823'); + T('-5.683707359160590767482385181054893368911539362771215016167e-10', '8.86164094021739567981e+19', '-5.683707359160590767482385181054893368911539362771215016167e-10'); + T('-5.1599750984803110105e+16', '-3.5042033e+8', '-313986840.105'); + T('-6.648136108552158227395470978468104077135e+30', '-7.670622e+6', '-1963500.104077135'); + T('5.7863814022935592013463113844081501644834124668e+33', '2.927394204321791269473573349413773145813098792e+20', '144279721918792318844.9709640995481667887767448'); + T('1.846283862301720586500752e+20', '-2.76680920710526658074e+14', '37882799751297.269222'); + T('-4.074907e+6', '1.2292e-10', '-1.156e-11'); + T('-2.4670327357021349034013736e+26', '-2.247694648202153e+3', '-1262.063905639966'); + T('4.5429277175861978297034645864160147622314348499084882862362e-18', '2.7386e-2', '4.5429277175861978297034645864160147622314348499084882862362e-18'); + T('2.157162452863075302863915e+18', '-3.60299993558464831757535049083884559e+35', '2157162452863075302.863915'); + T('7.7382289705506563990171491235511002471989281027800113e+22', '2.48970493035763788684e-5', '0.000011085865185482489695400113'); + T('-1.9064913834485914061878309425875120670837105e+5', '-3e+0', '-2.13834485914061878309425875120670837105'); + T('-5.48175104358179142491638230233e+25', '-1.52434523822871140847e-11', '-8.8309288545189098888e-12'); + T('1.07984359784457855e+6', '2.92533631912192887348822954567386e+32', '1079843.59784457855'); + T('-5.343344296409307514661858172266262866671109159598323e+9', '2.3273061846552018803169584402231121660442419923712e+8', '-223270690.167863377964549603775416101373776776381683'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js new file mode 100644 index 0000000..b5ae381 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js @@ -0,0 +1,544 @@ +var count = (function neg(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value){ + assert(String(expected), new BigNumber(value).neg().toString()); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing neg...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(-4, 4); + T(-2147483648, 2147483648); + T(-0.25, 0.25); + T(-0.0625, 0.0625); + T(-1, 1); + T(1, -1); + T(0, 0); + T(NaN, NaN); + T(-Infinity, Infinity); + T(-Infinity, +Infinity); + T(Infinity, -Infinity); + T(+Infinity, -Infinity); + + T('0', '0'); + T('-238', '238'); + T('1.3e-11', '-0.000000000013'); + T('-33.1', '33.1'); + T('2.61', '-2.61'); + T('-4', '4.0'); + T('-5.8', '5.8'); + T('-3.52e-7', '0.000000352'); + T('190', '-190'); + T('4.47', '-4.47'); + T('6.9525e-12', '-0.0000000000069525'); + T('1.3', '-1.3'); + T('-6.21', '6.21'); + T('2', '-2'); + T('-1', '1'); + T('147.857', '-147.857'); + T('-26.517', '26.517'); + T('-3', '3'); + T('5', '-5'); + T('204', '-204'); + T('2.1e-8', '-0.000000021'); + T('3.7015e-7', '-0.00000037015'); + T('-50.1839', '50.1839'); + T('44768.1', '-44768.1'); + T('3.8e-15', '-0.0000000000000038'); + T('-7.4379', '7.4379'); + T('1.5', '-1.5'); + T('6.0399', '-6.0399'); + T('109.07', '-109.070'); + T('1582', '-1582'); + T('-772', '772'); + T('-6.7824e-14', '0.000000000000067824'); + T('-1.819e-8', '0.00000001819'); + T('-3e-15', '0.0000000000000030'); + T('-424120', '424120'); + T('-1814.54', '1814.54'); + T('-4.295e-17', '0.00000000000000004295'); + T('-5', '5'); + T('2152', '-2152'); + T('4.6', '-4.6'); + T('1.9', '-1.9'); + T('-2', '2.0'); + T('-0.00036', '0.00036'); + T('-0.000006962', '0.000006962'); + T('3.6', '-3.6'); + T('-1.1495e-14', '0.000000000000011495'); + T('-312.4', '312.4'); + T('4.3e-10', '-0.00000000043'); + T('5', '-5'); + T('-1.8911e-8', '0.000000018911'); + T('4963.53', '-4963.53'); + T('-4.3934e-10', '0.00000000043934'); + T('-1.3', '1.30'); + T('-1', '1.0'); + T('-68.32', '68.32'); + T('0.014836', '-0.014836'); + T('8', '-8'); + T('2.1351', '-2.13510'); + T('162224', '-162224'); + T('3e-19', '-0.00000000000000000030'); + T('0.00004985', '-0.00004985'); + T('28.9321', '-28.9321'); + T('-2', '2'); + T('-16688', '16688'); + T('-1', '1'); + T('5', '-5'); + T('-20', '20.0'); + T('-1.9', '1.9'); + T('3', '-3'); + T('185640', '-185640'); + T('-0.0000058', '0.0000058'); + T('9.67e-13', '-0.000000000000967'); + T('-707.98', '707.98'); + T('2.57917', '-2.57917'); + T('-1.3', '1.3'); + T('-4.2655', '4.2655'); + T('-149.6', '149.6'); + T('-1.32383', '1.32383'); + T('-26.925', '26.925'); + T('-0.00013', '0.00013'); + T('-6868', '6868'); + T('7', '-7'); + T('-5e-9', '0.0000000050'); + T('3.2555e-16', '-0.00000000000000032555'); + T('1.42768e-13', '-0.000000000000142768'); + T('11.2962', '-11.2962'); + T('3186.7', '-3186.7'); + T('-6.9', '6.9'); + T('-6.2618e-7', '0.00000062618'); + T('8', '-8'); + T('-8.04', '8.04'); + T('-22', '22'); + T('-750.6', '750.6'); + T('12.803', '-12.803'); + T('-20513.4', '20513.4'); + T('114781', '-114781'); + T('-16.9046', '16.9046'); + T('4.6e-7', '-0.00000046'); + T('-31399', '31399'); + T('1.04', '-1.04'); + T('-51.2544', '51.2544'); + T('1.023e-15', '-0.000000000000001023'); + T('281', '-281'); + T('-128315', '128315'); + T('20.2', '-20.2'); + T('9', '-9'); + T('-10', '10'); + T('-1.92262e-17', '0.0000000000000000192262'); + T('-0.0023', '0.0023'); + T('5', '-5'); + T('7', '-7'); + T('13.72', '-13.72'); + T('98068', '-98068'); + T('3.2', '-3.2'); + T('1.1', '-1.1'); + T('-3.97e-18', '0.000000000000000003970'); + T('0.00334824', '-0.00334824'); + T('-5.4892e-8', '0.000000054892'); + T('-1', '1.0'); + T('-2.8135e-8', '0.000000028135'); + T('-1.816e-13', '0.0000000000001816'); + T('199724', '-199724'); + T('-19.4', '19.40'); + T('-12.74', '12.74'); + T('-2171.8', '2171.8'); + T('-2.7', '2.7'); + T('1', '-1.0'); + T('21779', '-21779'); + T('8.9e-12', '-0.0000000000089'); + T('-4.51', '4.51'); + T('2.6', '-2.6'); + T('-0.00016', '0.000160'); + T('6', '-6'); + T('50.566', '-50.566'); + T('-16.2', '16.2'); + T('-7.9156e-20', '0.000000000000000000079156'); + T('-2262.4', '2262.4'); + T('6468.59', '-6468.59'); + T('0.077', '-0.077'); + T('-465.83', '465.83'); + T('-604.59', '604.59'); + T('-0.0014917', '0.0014917'); + T('-2.8954', '2.8954'); + T('1', '-1'); + T('1942', '-1942'); + T('-182.308', '182.308'); + T('-17.8', '17.8'); + T('39472.5', '-39472.5'); + T('214.21', '-214.21'); + T('-40.11', '40.11'); + T('-3', '3'); + T('141149', '-141149'); + T('-8', '8.0'); + T('-2.9', '2.9'); + T('44.51', '-44.51'); + T('-5.3', '5.3'); + T('0.05498', '-0.054980'); + T('7', '-7'); + T('-922', '922.0'); + T('-1.5146e-14', '0.000000000000015146'); + T('-0.000008117', '0.000008117'); + T('1', '-1'); + T('5452.81', '-5452.81'); + T('751745', '-751745'); + T('-2.7', '2.7'); + T('5.1', '-5.1'); + T('-1', '1'); + T('-524124', '524124'); + T('-183.5', '183.50'); + T('44856.8', '-44856.8'); + T('0.00000387', '-0.00000387'); + T('-3.0544e-14', '0.000000000000030544'); + T('1.3', '-1.3'); + T('-0.0019273', '0.0019273'); + T('75428', '-75428'); + T('-91.7925', '91.7925'); + T('44.5', '-44.5'); + T('-2', '2'); + T('5.3', '-5.3'); + T('-57', '57'); + T('-2.53e-9', '0.00000000253'); + T('18258', '-18258'); + T('0.829', '-0.829'); + T('-4', '4'); + T('-1', '1'); + T('10.289', '-10.289'); + T('319', '-319'); + T('2.4', '-2.4'); + T('89.9207', '-89.9207'); + T('-9.06122e-17', '0.0000000000000000906122'); + T('-102.639', '102.639'); + T('948.5', '-948.50'); + T('-610.7', '610.7'); + T('-1.61', '1.61'); + T('-99.042', '99.042'); + T('3.0232', '-3.0232'); + T('-15', '15'); + T('-3.835', '3.835'); + T('-7', '7'); + T('1', '-1'); + T('21.46', '-21.46'); + T('2', '-2'); + T('-2077.79', '2077.79'); + T('-14.7446', '14.7446'); + T('-9.11e-12', '0.00000000000911'); + T('1.2', '-1.2'); + T('-105851', '105851'); + T('24.561', '-24.561'); + T('780', '-780'); + T('3.82122', '-3.82122'); + T('9564', '-9564'); + T('-13.21', '13.21'); + T('25020.5', '-25020.5'); + T('-5678.6', '5678.6'); + T('1', '-1.0'); + T('2.6', '-2.6'); + T('9.6e-16', '-0.000000000000000960'); + T('12.6', '-12.6'); + T('-5', '5'); + T('-537', '537'); + T('-85', '85'); + T('758.15', '-758.15'); + T('-67.55', '67.55'); + T('-9444', '9444'); + T('21.4', '-21.4'); + T('2.5', '-2.5'); + T('489311', '-489311'); + T('6.8', '-6.8'); + T('4.29', '-4.29'); + T('23982', '-23982.0'); + T('-0.0111781', '0.0111781'); + T('4.96e-20', '-0.0000000000000000000496'); + T('-40.5481', '40.5481'); + T('-32.52', '32.52'); + T('-7.4', '7.4'); + T('1008', '-1008'); + T('1.2', '-1.2'); + T('-5', '5.0'); + T('-2463.4', '2463.4'); + T('7.363', '-7.363'); + T('2.8', '-2.8'); + T('-14498', '14498'); + T('201', '-201'); + T('3.2', '-3.2'); + T('-3.05', '3.05'); + T('1.1', '-1.1'); + T('-380.4', '380.4'); + T('13399', '-13399'); + T('-20.44', '20.44'); + T('1.6', '-1.6'); + T('2.1234e-10', '-0.00000000021234'); + T('4404.1', '-4404.1'); + T('2.4345', '-2.4345'); + T('-117.256', '117.256'); + T('-6.025', '6.025'); + T('18.43', '-18.43'); + T('-47.5', '47.5'); + T('45.1', '-45.1'); + T('-3806.5', '3806.5'); + T('-4.6', '4.6'); + T('-1.3', '1.3'); + T('-74.6', '74.60'); + T('-16.2088', '16.2088'); + T('788.6', '-788.6'); + T('-0.29', '0.29'); + T('1', '-1'); + T('-4.058', '4.058'); + T('5', '-5.0'); + T('0.00612', '-0.00612'); + T('-14317', '14317'); + T('-1.1801', '1.1801'); + T('-32.6', '32.6'); + T('57248', '-57248'); + T('-103', '103'); + T('-1.4', '1.4'); + T('228', '-228'); + T('92.8', '-92.8'); + T('3.46e-17', '-0.0000000000000000346'); + T('-15747', '15747'); + T('16.36', '-16.360'); + T('0.00223', '-0.00223'); + T('244', '-244'); + T('3.8', '-3.8'); + T('-604.2', '604.2'); + T('1.03', '-1.03'); + T('1487', '-1487'); + T('7', '-7'); + T('45', '-45.00'); + T('2.55374e-10', '-0.000000000255374'); + T('3', '-3'); + T('-5.5', '5.5'); + T('-5.4', '5.4'); + T('-9', '9'); + T('-1627.2', '1627.2'); + T('1.0805e-16', '-0.00000000000000010805'); + T('-14.0548', '14.0548'); + T('-207137', '207137'); + T('3.8', '-3.8'); + T('-33.4785', '33.4785'); + T('4.28626', '-4.28626'); + T('-4', '4'); + T('-6', '6'); + T('-1', '1'); + T('-44.951', '44.951'); + T('29.7', '-29.7'); + T('-121.17', '121.17'); + T('480', '-480'); + T('-2.696', '2.696'); + T('-3708.62', '3708.62'); + T('2.8', '-2.8'); + T('17842', '-17842'); + T('-3', '3'); + T('-2', '2'); + T('-1.855', '1.855'); + T('246866', '-246866'); + T('-0.0022', '0.0022'); + T('-1', '1'); + T('1283', '-1283'); + T('2.1', '-2.1'); + T('3.289e-12', '-0.000000000003289'); + T('-1656', '1656'); + T('3.9', '-3.9'); + T('1.12', '-1.12'); + T('3.54e-16', '-0.000000000000000354'); + T('-0.001123', '0.001123'); + T('2.06551e-14', '-0.0000000000000206551'); + T('-19319.3', '19319.3'); + T('3', '-3'); + T('-6', '6'); + T('5.747e-17', '-0.00000000000000005747'); + T('-1.756', '1.756'); + T('2.71004e-15', '-0.00000000000000271004'); + T('1.4', '-1.4'); + T('-0.0000019', '0.00000190'); + T('-6', '6'); + T('-31.4', '31.4'); + T('1', '-1'); + T('-39.954', '39.9540'); + T('8.4', '-8.40'); + T('5.3382e-17', '-0.0000000000000000533820'); + T('8.4', '-8.4'); + T('-106', '106'); + T('905', '-905'); + T('-2030.8', '2030.8'); + T('0.19358', '-0.193580'); + T('50057.4', '-50057.4'); + T('8.0731e-15', '-0.0000000000000080731'); + T('2.4', '-2.4'); + T('-1', '1'); + T('0.026038', '-0.026038'); + T('-22', '22'); + T('-2.8', '2.8'); + T('0.00110001', '-0.00110001'); + T('7', '-7'); + T('-705', '705'); + T('-36046', '36046'); + T('2.42', '-2.42'); + T('-1.225', '1.225'); + T('36.8', '-36.8'); + T('6.8926', '-6.8926'); + T('163575', '-163575'); + T('3.29e-16', '-0.000000000000000329'); + T('-3.9612e-20', '0.000000000000000000039612'); + T('6.3', '-6.3'); + T('1.1', '-1.1'); + T('-53', '53'); + T('-6.3', '6.3'); + T('-3.73', '3.73'); + T('5.99e-13', '-0.000000000000599'); + T('-0.0453', '0.0453'); + T('6.2', '-6.2'); + T('5', '-5'); + T('4.85599e-7', '-0.000000485599'); + T('-6.554e-19', '0.0000000000000000006554'); + T('245.2', '-245.20'); + T('-12.557', '12.557'); + T('8.7', '-8.7'); + T('-38.7', '38.7'); + T('1.1291', '-1.1291'); + T('-3', '3'); + T('40533.9', '-40533.9'); + T('135.1', '-135.1'); + T('-213', '213'); + T('-271352', '271352'); + T('-159.9', '159.9'); + T('-103632', '103632'); + T('-0.00000225418', '0.00000225418'); + T('-2.1e-16', '0.00000000000000021'); + T('14.5', '-14.5'); + T('48016', '-48016'); + T('282', '-282.0'); + T('9.3552e-18', '-0.0000000000000000093552'); + T('237', '-237'); + T('-21.1', '21.1'); + T('2.281', '-2.281'); + T('-4.68312', '4.68312'); + T('7', '-7'); + T('6', '-6'); + T('5.3', '-5.3'); + T('-681.586', '681.586'); + T('-1.59e-16', '0.0000000000000001590'); + T('-2.94', '2.94'); + T('-1', '1'); + T('7.03', '-7.03'); + T('5.73608e-13', '-0.000000000000573608'); + T('2', '-2'); + T('-1.26e-18', '0.00000000000000000126'); + T('-1.5e-14', '0.000000000000015'); + T('2', '-2'); + T('-44', '44'); + T('-1.3928', '1.3928'); + T('18811.4', '-18811.4'); + T('6.6', '-6.6'); + T('1.99', '-1.99'); + T('-6.6496e-14', '0.000000000000066496'); + T('27.184', '-27.184'); + T('0.00007614', '-0.00007614'); + T('5478', '-5478.0'); + T('-30.6432', '30.6432'); + T('-108', '108'); + T('-1', '1'); + T('-61', '61'); + T('4', '-4'); + T('-0.032192', '0.032192'); + T('2.6e-8', '-0.000000026'); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('-5.0600621890668482322956892808849303e+20', '5.0600621890668482322956892808849303e+20'); + T('7e+0', '-7e+0'); + T('-6.1095374220609e+13', '6.1095374220609e+13'); + T('9.01e+2', '-9.01e+2'); + T('-1.016984074247269470395836690098169093010136836967e+39', '1.016984074247269470395836690098169093010136836967e+39'); + T('-1.497639134680472576e+18', '1.497639134680472576e+18'); + T('-4.1717657571404248e+16', '4.1717657571404248e+16'); + T('8.983272e+1', '-8.983272e+1'); + T('-5.308416e+6', '5.308416e+6'); + T('-2.09764e+3', '2.09764e+3'); + T('-3.83432050166120236679168e+23', '3.83432050166120236679168e+23'); + T('-4.096e+3', '4.096e+3'); + T('2.679971527468745095582058350756311201706813294321409e+51', '-2.679971527468745095582058350756311201706813294321409e+51'); + T('-5.067853299870089529116832768e+2', '5.067853299870089529116832768e+2'); + T('-3.48822062687911109850066182676769e+32', '3.48822062687911109850066182676769e+32'); + T('-1e+0', '1e+0'); + T('4.2773e+0', '-4.2773e+0'); + T('5.8169306081172252508071119604378757744768e+12', '-5.8169306081172252508071119604378757744768e+12'); + T('-1e+0', '1e+0'); + T('1.51655708279450944384385164853883404204414169862685507e+46', '-1.51655708279450944384385164853883404204414169862685507e+46'); + T('-8.1e+1', '8.1e+1'); + T('-1.296e+3', '1.296e+3'); + T('-2.9e+0', '2.9e+0'); + T('-1.764e+3', '1.764e+3'); + T('9.3418332730097368870513138581415704704611459349313e+49', '-9.3418332730097368870513138581415704704611459349313e+49'); + T('-Infinity', Infinity); + T('-Infinity', 'Infinity'); + T('Infinity', -Infinity); + T('Infinity', '-Infinity'); + T('NaN', NaN); + T('NaN', 'NaN'); + + BigNumber.config({EXPONENTIAL_AT : 1e+9}); + + assert(-1, new BigNumber(2).neg().s); + assert(1, new BigNumber(-2).neg().s); + assert(null, new BigNumber(NaN).neg().s); + assert(null, new BigNumber('-NaN').neg().s); + assert(-1, new BigNumber(Infinity).neg().s); + assert(1, new BigNumber('-Infinity').neg().s); + + assert(false, isMinusZero(new BigNumber(1).neg())); + assert(true, isMinusZero(new BigNumber(0).neg())); + assert(true, isMinusZero(new BigNumber(0).neg())); + assert(true, isMinusZero(new BigNumber('0.00000').neg())); + assert(true, isMinusZero(new BigNumber('+0.0').neg())); + assert(false, isMinusZero(new BigNumber(-0).neg())); + assert(false, isMinusZero(new BigNumber('-0').neg())); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js new file mode 100644 index 0000000..781a2ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js @@ -0,0 +1,361 @@ +var count = (function others(BigNumber) { + var start = +new Date(), + log, + error, + n, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + log('\n Testing others...'); + + /* + * + * isFinite + * isNaN + * isNegative + * isZero + * equals + * greaterThan + * greaterThanOrEqualTo + * lessThan + * lessThanOrEqualTo + * valueOf + * + */ + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : 1e+9, + RANGE : 1e+9, + ERRORS : true + }); + + n = new BigNumber(1); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(n)); + assert(true, n.equals(n, 2)); + assert(true, n.equals(1, 3)); + assert(true, n.equals(n, 4)); + assert(true, n.equals(1, 5)); + assert(true, n.equals(n, 6)); + assert(true, n.equals(1, 7)); + assert(true, n.equals(n, 8)); + assert(true, n.equals(1, 9)); + assert(true, n.equals(n, 10)); + assert(true, n.equals(n, 11)); + assert(true, n.equals(1, 12)); + assert(true, n.equals(n, 13)); + assert(true, n.equals(1, 14)); + assert(true, n.equals(n, 15)); + assert(true, n.equals(1, 16)); + assert(true, n.equals(n, 17)); + assert(true, n.equals(1, 18)); + assert(true, n.equals(n, 19)); + assert(true, n.equals('1.0', 20)); + assert(true, n.equals('1.00', 21)); + assert(true, n.equals('1.000', 22)); + assert(true, n.equals('1.0000', 23)); + assert(true, n.equals('1.00000', 24)); + assert(true, n.equals('1.000000', 25)); + assert(true, n.equals(new BigNumber(1, 10), 26)); + assert(true, n.equals(new BigNumber(1), 27)); + assert(true, n.equals(1, 28)); + assert(true, n.equals(1, 29)); + assert(true, n.equals(1, 30)); + assert(true, n.equals(1, 31)); + assert(true, n.equals(1, 32)); + assert(true, n.equals(1, 33)); + assert(true, n.equals(1, 34)); + assert(true, n.equals(1, 35)); + assert(true, n.equals(1, 36)); + assert(true, n.greaterThan(0.99999)); + assert(false, n.greaterThanOrEqualTo(1.1)); + assert(true, n.lessThan(1.001)); + assert(true, n.lessThanOrEqualTo(2)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-0.1'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(0.1)); + assert(false, n.greaterThan(-0.1)); + assert(true, n.greaterThanOrEqualTo(-1)); + assert(true, n.lessThan(-0.01)); + assert(false, n.lessThanOrEqualTo(-1)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(Infinity); + assert(false, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.eq('Infinity')); + assert(true, n.eq(1/0)); + assert(true, n.gt('9e999')); + assert(true, n.gte(Infinity)); + assert(false, n.lt(Infinity)); + assert(true, n.lte(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-Infinity'); + assert(false, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(Infinity)); + assert(true, n.equals(-1/0)); + assert(false, n.greaterThan(-Infinity)); + assert(true, n.greaterThanOrEqualTo('-Infinity', 8)); + assert(true, n.lessThan(0)); + assert(true, n.lessThanOrEqualTo(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('0.0000000'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(true, n.isZero()); + assert(true, n.eq(-0)); + assert(true, n.gt(-0.000001)); // 81 + assert(false, n.gte(0.1)); + assert(true, n.lt(0.0001)); + assert(true, n.lte(-0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(-0); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(true, n.isZ()); + assert(true, n.equals('0.000')); + assert(true, n.greaterThan(-1)); + assert(false, n.greaterThanOrEqualTo(0.1)); + assert(false, n.lessThan(0)); + assert(false, n.lessThan(0, 36)); + assert(true, n.lessThan(0.1)); + assert(true, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('NaN'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.eq(NaN)); + assert(false, n.eq(Infinity)); + assert(false, n.gt(0)); + assert(false, n.gte(0)); // 103 + assert(false, n.lt(1)); + assert(false, n.lte(-0)); + assert(false, n.lte(-1)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : false }); + + n = new BigNumber('hiya'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.equals(0)); + assert(false, n.greaterThan(0)); + assert(false, n.greaterThanOrEqualTo(-Infinity)); + assert(false, n.lessThan(Infinity)); + assert(false, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : true }); + + n = new BigNumber('-1.234e+2'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(true, n.eq(-123.4, 10)); + assert(true, n.gt('-ff', 16)); + assert(true, n.gte('-1.234e+3')); + assert(true, n.lt(-123.39999)); + assert(true, n.lte('-123.4e+0')); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('5e-200'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(5e-200)); + assert(true, n.greaterThan(5e-201)); + assert(false, n.greaterThanOrEqualTo(1)); + assert(true, n.lessThan(6e-200)); + assert(true, n.lessThanOrEqualTo(5.1e-200)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('1'); + assert(true, n.equals(n)); + assert(true, n.equals(n.toS())); + assert(true, n.equals(n.toString())); + assert(true, n.equals(n.valueOf())); + assert(true, n.equals(n.toFixed())); + assert(true, n.equals(1)); + assert(true, n.equals('1e+0')); + assert(false, n.equals(-1)); + assert(false, n.equals(0.1)); + + BigNumber.config({ ERRORS : false }); + + assert(false, new BigNumber(NaN).equals(0)); + assert(false, new BigNumber(null).equals(0)); + assert(false, new BigNumber(undefined).equals(0)); + assert(false, new BigNumber(Infinity).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber({}).equals(0)); + assert(false, new BigNumber('').equals(0)); + assert(false, new BigNumber(' ').equals(0)); + assert(false, new BigNumber('\t').equals(0)); + assert(false, new BigNumber('gerg').equals(0)); + assert(false, new BigNumber(new Date).equals(0)); + assert(false, new BigNumber(new RegExp).equals(0)); + assert(false, new BigNumber(0.1).equals(0)); + assert(false, new BigNumber(1e9 + 1).equals(1e9)); + assert(false, new BigNumber(1e9 - 1).equals(1e9)); + assert(true, new BigNumber(1e9 + 1).equals(1e9 + 1)); + assert(true, new BigNumber(1).equals(1)); + assert(false, new BigNumber(1).equals(-1)); + assert(false, new BigNumber(NaN).equals('efffe')); + + assert(false, new BigNumber('b').greaterThan('a')); + assert(false, new BigNumber('a').lessThan('b', 10)); + assert(true, new BigNumber('a', 16).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('b', 16).greaterThanOrEqualTo(9, 16)); + + BigNumber.config({ ERRORS : true }); + + assert(true, new BigNumber(10).greaterThan(10, 2)); + assert(true, new BigNumber(10).greaterThan(10, 3)); + assert(true, new BigNumber(10).greaterThan(10, 4)); + assert(true, new BigNumber(10).greaterThan(10, 5)); + assert(true, new BigNumber(10).greaterThan(10, 6)); + assert(true, new BigNumber(10).greaterThan(10, 7)); + assert(true, new BigNumber(10).greaterThan(10, 8)); + assert(true, new BigNumber(10).greaterThan(10, 9)); + assert(false, new BigNumber(10).greaterThan(10, 10)); + assert(false, new BigNumber(10).greaterThan(10, 11)); + assert(false, new BigNumber(10).greaterThan(10, 12)); + assert(false, new BigNumber(10).greaterThan(10, 13)); + assert(true, new BigNumber(10).lessThan(10, 11)); + assert(true, new BigNumber(10).lessThan(10, 12)); + assert(true, new BigNumber(10).lessThan(10, 13)); + assert(true, new BigNumber(10).lessThan(10, 14)); + assert(true, new BigNumber(10).lessThan(10, 15)); + assert(true, new BigNumber(10).lessThan(10, 16)); + assert(true, new BigNumber(10).lessThan(10, 17)); + assert(true, new BigNumber(10).lessThan(10, 18)); + assert(true, new BigNumber(10).lessThan(10, 19)); + assert(true, new BigNumber(10).lessThan(10, 20)); + assert(true, new BigNumber(10).lessThan(10, 21)); + assert(true, new BigNumber(10).lessThan(10, 22)); + assert(true, new BigNumber(10).lessThan(10, 34)); + assert(true, new BigNumber(10).lessThan(10, 35)); + assert(true, new BigNumber(10).lessThan(10, 36)); + assert(false, new BigNumber(NaN).lessThan(NaN)); + assert(false, new BigNumber(Infinity).lessThan(-Infinity)); + assert(false, new BigNumber(Infinity).lessThan(Infinity)); + assert(true, new BigNumber(Infinity, 10).lessThanOrEqualTo(Infinity, 2)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(NaN)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(Infinity)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(-Infinity)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(-Infinity).greaterThanOrEqualTo(-Infinity)); + + assert(false, new BigNumber(2, 10).greaterThan(10, 2)); + assert(false, new BigNumber(10, 2).lessThan(2, 10)); + assert(true, new BigNumber(255).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('a', 16).greaterThanOrEqualTo(9, 16)); + assert(false, new BigNumber(0).lessThanOrEqualTo('NaN')); + assert(false, new BigNumber(0).greaterThanOrEqualTo(NaN)); + assert(false, new BigNumber(NaN, 2).lessThanOrEqualTo('NaN', 36)); + assert(false, new BigNumber(NaN, 36).greaterThanOrEqualTo(NaN, 2)); + assert(false, new BigNumber(0).lessThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).lessThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(0).greaterThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(10).lessThanOrEqualTo(20, 4)); + assert(true, new BigNumber(10).lessThanOrEqualTo(20, 5)); + assert(false, new BigNumber(10).greaterThanOrEqualTo(20, 6)); + + assert(false, new BigNumber(1.23001e-2).lessThan(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lt(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThan(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lt(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThan(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lt(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThan(1e+3)); + assert(false, new BigNumber(1e+3).lt(9.9999999e+2)); + + assert(false, new BigNumber(1.23001e-2).lessThanOrEqualTo(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lte(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThanOrEqualTo(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lte(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThanOrEqualTo(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lte(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThanOrEqualTo(1e+3)); + assert(false, new BigNumber(1e+3).lte(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThan(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gt(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThan(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gt(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThan(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gt(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThan(1e+3)); + assert(true, new BigNumber(1e+3).gt(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gte(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThanOrEqualTo(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gte(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gte(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThanOrEqualTo(1e+3)); + assert(true, new BigNumber(1e+3).gte(9.9999999e+2)); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js new file mode 100644 index 0000000..eba29e7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js @@ -0,0 +1,1969 @@ +var count = (function plus(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(addendA, addendB, expected) { + assert(String(expected), String(new BigNumber(addendA).plus(addendB))); + assert(String(expected), String(new BigNumber(addendA).plus(new BigNumber(addendB)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing plus...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + T(1, 0, 1); + T(1, -0, 1); + T(-1, 0, -1); + T(-1, -0, -1); + T(1, N, N); + T(-1, N, N); + T(1, I, I); + T(1, -I, -I); + T(-1, I, I); + T(-1, -I, -I); + T(0, 1, 1); + T(0, -1, -1); + T(-0, 1, 1); + T(-0, -1, -1); + assert(false, isMinusZero(new BigNumber(0).plus(0))); + assert(false, isMinusZero(new BigNumber(0).plus(-0))); + assert(false, isMinusZero(new BigNumber(-0).plus(0))); + assert(true, isMinusZero(new BigNumber(-0).plus(-0))); + T(0, N, N); + T(-0, N, N); + T(0, I, I); + T(0, -I, -I); + T(-0, I, I); + T(-0, -I, -I); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, I); + T(-I, 1, -I); + T(-I, -1, -I); + T(I, 0, I); + T(I, -0, I); + T(-I, 0, -I); + T(-I, -0, -I); + T(I, N, N); + T(-I, N, N); + T(I, I, I); + T(I, -I, N); + T(-I, I, N); + T(-I, -I, -I); + + T(1, '0', '1'); + T(1, '1', '2'); + T(1, '-45', '-44'); + T(1, '22', '23'); + T(1, 0144, '101'); + T(1, '0144', '145'); + T(1, '6.1915', '7.1915'); + T(1, '-1.02', '-0.02'); + T(1, '0.09', '1.09'); + T(1, '-0.0001', '0.9999'); + T(1, '8e5', '800001'); + T(1, '9E12', '9000000000001'); + T(1, '1e-14', '1.00000000000001'); + T(1, '3.345E-9', '1.000000003345'); + T(1, '-345.43e+4', '-3454299'); + T(1, '-94.12E+0', '-93.12'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '5.001'); + T(1, '4.001 ', '5.001'); + T(1, ' 4.001 ', '5.001'); + T(1, ' 4.001', '5.001'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, I); + T(1, Number.NEGATIVE_INFINITY, -I); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '3'); + T(9.654, 0, '9.654'); + T(0, '0.001', '0.001'); + T(0, '111.1111111110000', '111.111111111'); + T(N, '0', N); + T(-1, 1, '0'); + T(-0.01, 0.01, '0'); + T(54, -54, '0'); + T(9.99, '-9.99', '0'); + T('0.0000023432495704937', '-0.0000023432495704937', '0'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, -I); + T(-Infinity, -I, -I); + T(-I, -Infinity, -I); + T(I, '-999e999', I); + T('1.21123e43', -I, -I); + T('-999.0', I, I); + T('657.342e-45', -I, -I); + T(I, 123, I); + T(100, 100, '200'); + T(-999.99, '0.01', '-999.98'); + T('10 ', 4, '14'); + T('03.333', -4, '-0.667'); + T(-1, -0.1, '-1.1'); + T(43534.5435, '0.054645', '43534.598145'); + T('99999', '1', '100000'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '7'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-0.000000046', '0', '-4.6e-8'); + T('0', '-5.1', '-5.1'); + T('1.3', '2', '3.3'); + T('1.02', '1.2', '2.22'); + T('3.0', '0', '3'); + T('3', '31.9', '34.9'); + T('0', '-0.0000000000000712', '-7.12e-14'); + T('1.10', '5', '6.1'); + T('4.2', '-0.000000062', '4.199999938'); + T('1', '0', '1'); + T('-5.1', '1', '-4.1'); + T('0', '-1', '-1'); + T('699', '-4', '695'); + T('0', '-1', '-1'); + T('1.6', '-27.2', '-25.6'); + T('0', '-7', '-7'); + T('3.0', '-4', '-1'); + T('0', '-2.0', '-2'); + T('0', '-3', '-3'); + T('-2', '1', '-1'); + T('-9', '-1', '-10'); + T('2', '-1.1', '0.9'); + T('-5', '-3', '-8'); + T('7', '-37', '-30'); + T('-3', '-5.0', '-8'); + T('1.2', '-0.0000194', '1.1999806'); + T('0', '5', '5'); + T('0', '1', '1'); + T('-0.000000000000214', '0', '-2.14e-13'); + T('0', '0', '0'); + T('0', '-1', '-1'); + T('-3', '156', '153'); + T('231', '0.00000000408', '231.00000000408'); + T('0', '-1.7', '-1.7'); + T('-4.16', '0', '-4.16'); + T('0', '5.8', '5.8'); + T('1.5', '5', '6.5'); + T('4.0', '-6.19', '-2.19'); + T('-1.46', '-5.04', '-6.5'); + T('5.11', '6', '11.11'); + T('-2.11', '0', '-2.11'); + T('0.0067', '-5', '-4.9933'); + T('0', '2', '2'); + T('1.0', '-24.4', '-23.4'); + T('-0.000015', '-6', '-6.000015'); + T('1.5', '0', '1.5'); + T('4.1', '-3', '1.1'); + T('-2', '-1', '-3'); + T('3', '1.5', '4.5'); + T('-7.8', '-3', '-10.8'); + T('-32', '17.6', '-14.4'); + T('0', '0', '0'); + T('-47.4', '-1', '-48.4'); + T('15.4', '0.000014', '15.400014'); + T('7.2', '2.9', '10.1'); + T('-86.5', '-47.2', '-133.7'); + T('1.1', '-31.4', '-30.3'); + T('-121', '3', '-118'); + T('-4', '3', '-1'); + T('-3.98', '1.2', '-2.78'); + T('-4.90', '0', '-4.9'); + T('2.28', '0', '2.28'); + T('-0.0000000000051', '-0.0000000000000000236', '-5.1000236e-12'); + T('1', '-28', '-27'); + T('0', '-3.12', '-3.12'); + T('7', '24.9', '31.9'); + T('-7.8', '17', '9.2'); + T('1', '1', '2'); + T('0.00000000000000000016', '-2', '-1.99999999999999999984'); + T('6', '8.5', '14.5'); + T('1.10', '-1', '0.1'); + T('-1', '3.3', '2.3'); + T('4', '-1.3', '2.7'); + T('0', '2.09', '2.09'); + T('-1', '0', '-1'); + T('-1', '0', '-1'); + T('0', '8.1', '8.1'); + T('-3', '-4.96', '-7.96'); + T('9.73', '0', '9.73'); + T('1', '0', '1'); + T('-1', '-3', '-4'); + T('3', '-3.0', '0'); + T('-2.78', '-403', '-405.78'); + T('1', '-0.00063', '0.99937'); + T('2', '0', '2'); + T('3', '7', '10'); + T('-1', '0', '-1'); + T('-4.1', '-4', '-8.1'); + T('-5', '7', '2'); + T('-7', '-0.00000000000000000511', '-7.00000000000000000511'); + T('0', '0.000000000000000000233', '2.33e-19'); + T('1.2', '-8.5', '-7.3'); + T('2', '-2', '0'); + T('-24', '-5', '-29'); + T('-2.1', '0.0114', '-2.0886'); + T('8', '-5', '3'); + T('0.061', '12.1', '12.161'); + T('0', '2.7', '2.7'); + T('-0.00000871', '0', '-0.00000871'); + T('0', '0', '0'); + T('2', '-6.0', '-4'); + T('9', '-1.2', '7.8'); + T('7', '0', '7'); + T('0', '0.000000000000000213', '2.13e-16'); + T('2.5', '0', '2.5'); + T('0', '0.00211', '0.00211'); + T('6.4', '-15.7', '-9.3'); + T('1.5', '0', '1.5'); + T('-41', '0.113', '-40.887'); + T('-7.1', '2', '-5.1'); + T('6', '-1.6', '4.4'); + T('-1.2', '0', '-1.2'); + T('-3', '13.3', '10.3'); + T('0', '0', '0'); + T('0', '-105', '-105'); + T('-0.52', '-40.9', '-41.42'); + T('1', '0', '1'); + T('0', '0', '0'); + T('-5.1', '-0.00024', '-5.10024'); + T('-0.000000000000027', '6', '5.999999999999973'); + T('125', '-2', '123'); + T('2', '-365', '-363'); + T('6.2', '-55.1', '-48.9'); + T('4.9', '-6', '-1.1'); + T('0.0000000482', '0.0000000019', '5.01e-8'); + T('0', '1.7', '1.7'); + T('78.3', '2.2', '80.5'); + T('-53.9', '4.0', '-49.9'); + T('0', '2.1', '2.1'); + T('-1.0', '-143', '-144'); + T('-1', '2.2', '1.2'); + T('1', '84.9', '85.9'); + T('0', '26', '26'); + T('51', '0.000000000000000757', '51.000000000000000757'); + T('1.1', '-3.67', '-2.57'); + T('-1.2', '1.30', '0.1'); + T('-0.00000000000021', '0.0000000013', '1.29979e-9'); + T('-1.6', '-1', '-2.6'); + T('-2.0', '63', '61'); + T('-3', '7', '4'); + T('-221', '38', '-183'); + T('-1', '0', '-1'); + T('46.4', '2', '48.4'); + T('0', '0', '0'); + T('-1', '-0.0000000853', '-1.0000000853'); + T('79', '0.000190', '79.00019'); + T('0', '-8.59', '-8.59'); + T('1', '-1', '0'); + T('0.000000000000000000110', '-5.8', '-5.79999999999999999989'); + T('6', '3.86', '9.86'); + T('-9', '8', '-1'); + T('-1.0', '-45.9', '-46.9'); + T('-2', '1', '-1'); + T('17.3', '1', '18.3'); + T('0', '0.23', '0.23'); + T('1.14', '0', '1.14'); + T('-1.99', '-1', '-2.99'); + T('9', '0.0000000000000000000157', '9.0000000000000000000157'); + T('-11', '89', '78'); + T('0', '-13.9', '-13.9'); + T('0.00000000000015', '86', '86.00000000000015'); + T('278', '-2', '276'); + T('0', '-2.18', '-2.18'); + T('0', '-0.000000029', '-2.9e-8'); + T('-6', '-0.0000000045', '-6.0000000045'); + T('0', '-24.7', '-24.7'); + T('6.0', '124', '130'); + T('0.00089', '-0.117', '-0.11611'); + T('-0.94', '44', '43.06'); + T('52.1', '-4', '48.1'); + T('0', '-0.00000062', '-6.2e-7'); + T('2', '-0.000000000242', '1.999999999758'); + T('-6.2', '1', '-5.2'); + T('3.4', '1', '4.4'); + T('-1.5', '3.8', '2.3'); + T('3', '-1.27', '1.73'); + T('-1', '7', '6'); + T('-2.29', '-4.8', '-7.09'); + T('0', '0', '0'); + T('-5', '-0.0000000000000016', '-5.0000000000000016'); + T('2.0', '-1.5', '0.5'); + T('94.2', '-1.4', '92.8'); + T('37', '-0.000000000000000000028', '36.999999999999999999972'); + T('-0.00000000000000000750', '1', '0.9999999999999999925'); + T('1.5', '-1.7', '-0.2'); + T('-1', '20.0', '19'); + T('2.6', '0', '2.6'); + T('0', '-28.4', '-28.4'); + T('-12.1', '-14', '-26.1'); + T('1.7', '0.000000041', '1.700000041'); + T('9.5', '4', '13.5'); + T('2.8', '101', '103.8'); + T('0.000000022', '0', '2.2e-8'); + T('6', '28', '34'); + T('7', '-97', '-90'); + T('-1.7', '-3', '-4.7'); + T('107', '6.2', '113.2'); + T('-0.000000000000000118', '-2', '-2.000000000000000118'); + T('-0.000000000000000451', '-5.3', '-5.300000000000000451'); + T('0', '-1', '-1'); + T('0.0000055', '145', '145.0000055'); + T('0', '-8', '-8'); + T('0', '-2.7', '-2.7'); + T('-3', '0', '-3'); + T('-7', '7', '0'); + T('-1.1', '0', '-1.1'); + T('-92', '-1.4', '-93.4'); + T('-2.7', '-3.25', '-5.95'); + T('68.5', '509', '577.5'); + T('0', '0', '0'); + T('22.6', '-1', '21.6'); + T('373', '0', '373'); + T('0', '-5', '-5'); + T('32.2', '-7', '25.2'); + T('-1', '-1.7', '-2.7'); + T('-1.3', '0.0000000048', '-1.2999999952'); + T('5', '-5', '0'); + T('0', '11.9', '11.9'); + T('-0.82', '25', '24.18'); + T('0', '3.1', '3.1'); + T('0.000024', '6', '6.000024'); + T('10', '-0.000000116', '9.999999884'); + T('977', '0', '977'); + T('13', '-0.00000205', '12.99999795'); + T('-7', '-9.0', '-16'); + T('0', '1.05', '1.05'); + T('1', '0', '1'); + T('-10.1', '0', '-10.1'); + T('2.2', '-0.000000000000061', '2.199999999999939'); + T('0', '-0.0000085', '-0.0000085'); + T('3', '3.5', '6.5'); + T('1', '2.8', '3.8'); + T('-2', '-8.60', '-10.6'); + T('223', '9', '232'); + T('-20.4', '-213', '-233.4'); + T('0', '2', '2'); + T('-2.9', '-1.3', '-4.2'); + T('3.0', '0', '3'); + T('-5', '0.00000000000000000011', '-4.99999999999999999989'); + T('-0.000088', '70.4', '70.399912'); + T('-1', '-505', '-506'); + T('0', '-4', '-4'); + T('768', '1.1', '769.1'); + T('2', '0', '2'); + T('88', '1.4', '89.4'); + T('7.8', '0.0000000000000025', '7.8000000000000025'); + T('2.6', '-3.20', '-0.6'); + T('-24', '-2.6', '-26.6'); + T('0', '-1', '-1'); + T('-6', '0.00059', '-5.99941'); + T('14', '4.1', '18.1'); + T('-30.5', '1.48', '-29.02'); + T('-509', '5', '-504'); + T('-1', '3', '2'); + T('1.3', '0.000103', '1.300103'); + T('-2.8', '19.1', '16.3'); + T('10.07', '0.581', '10.651'); + T('3', '-2', '1'); + T('-29', '4', '-25'); + T('-3.80', '-48.2', '-52'); + T('6', '-21.3', '-15.3'); + T('3', '-1.7', '1.3'); + T('0', '0.00000000033', '3.3e-10'); + T('0.49', '0', '0.49'); + T('7', '1.1', '8.1'); + T('1', '-2.73', '-1.73'); + T('0', '-3.89', '-3.89'); + T('1.27', '9', '10.27'); + T('-0.00000000151', '-25', '-25.00000000151'); + T('-11.7', '0.000000000000014', '-11.699999999999986'); + + T('3', '-7292337998569017257242651.028572395143563730317242', '-7.292337998569017257242648028572395143563730317242e+24'); + T('-340867371992331.2987436', '337.06898', '-340867371991994.2297636'); + T('10.55995846458487041359', '-11363016227498211122402159.8244', '-1.136301622749821112240214926444153541512958641e+25'); + T('-2493625481630720848504.2253423230119762824868856426', '-2.5572303947825744924097699541922801', '-2.4936254816307208485067825727177945507748966555967922801e+21'); + T('0.000000000000019478219401872667571256888553179333787767', '172.34675119', '172.346751190000019478219401872667571256888553179333787767'); + T('-34', '1679140391.9', '1679140357.9'); + T('-80049928601879665221091.2', '-422696.2614386', '-8.00499286018796656437874614386e+22'); + T('-2807730637205.01726166308462171615083', '0.0000000000000000000622355365575749096529347607937593112149767278', '-2807730637205.0172616630846217160885944634424250903470652392062406887850232722'); + T('2011299643403413077489630775210103349137877109', '-163066968.786271125332323161612905', '2.011299643403413077489630775210103348974810140213728874667676838387095e+45'); + T('-0.00000083671937317281562083962202394322135659', '7878332.295282735111804499965213784837870', '7878332.29528189839243132714959294521584605677864341'); + T('0.000000188701196610233915664001509614338431694523153', '-23707678356144422298078574459450831700.985', '-2.3707678356144422298078574459450831700984999811298803389766084335998490385661568305476847e+37'); + T('26203291462.747893543000897830970817', '2.39160879274042658647090', '26203291465.139502335741324417441717'); + T('-13.731026951', '0.000000000000519065974912984366352959010635376943677199693101323558', '-13.731026950999480934025087015633647040989364623056322800306898676442'); + T('42946999115270631061563709594990331564869354319610', '-689518233710514.17779877383431696209686368332723612515969802', '4.294699911527063106156370959499033087535112060909582220122616568303790313631667276387484030198e+49'); + T('-316537.13', '5.849231740', '-316531.28076826'); + T('-4483733651090758635203278665262327.55342', '0', '-4.48373365109075863520327866526232755342e+33'); + T('0', '-2599', '-2599'); + T('-5148.92870373', '-0.0000000000003511413413454972', '-5148.9287037300003511413413454972'); + T('-134406704543039418795782131496347812', '39838386849529610034769612280421774691.6785604641098', '3.97039801449865706159738301489254268796785604641098e+37'); + T('1.084309017285818872', '0.0000000000004353337515049604976685056082181', '1.0843090172862542057515049604976685056082181'); + T('81757261120729.3998391292', '0.00793', '81757261120729.4077691292'); + T('305717993676885329951937476257830866546431763156719336807', '-0.00000000000000000001482815967', '3.0571799367688532995193747625783086654643176315671933680699999999999999999998517184033e+56'); + T('203522961261530443.917820906776579027929', '-9185.139979750596690606', '203522961261521258.777841156179888421929'); + T('58302388.37179491476', '9936044410052508775.881727897883802', '9936044410110811164.253522812643802'); + T('0.00000000000000000005248972194638156020825779794502284697376', '-0.0388379024820383074988759583112', '-0.03883790248203830744638623636481843979174220205497715302624'); + T('0.000000001932861108418416669193839546006791915101090', '-0.000000000000103564871', '1.93275754354741666919383954600679191510109e-9'); + T('-97.5', '-3.1', '-100.6'); + T('-3644798362098266765793', '-11528555350.16536616701926798156538624434748578548375', '-3.64479836210979532114316536616701926798156538624434748578548375e+21'); + T('-371577606534.62392858950803524930468', '-0.00000000269386577418846418', '-371577606534.62392859220190102349314418'); + T('-691678464095856590.95634633025558439435402102', '0.000000030539948265', '-691678464095856590.95634629971563612935402102'); + T('0.000000003928034045864', '-39380632121496755483.22', '-39380632121496755483.219999996071965954136'); + T('-795.89085780158799717759425220514961346582715', '0.000706564963643740242942689304765914029848878612899171', '-795.890151236624353437351309515844847551797301121387100829'); + T('157678510.5484789671095156751921759005061', '0.0000003723795', '157678510.5484793394890156751921759005061'); + T('-1307.3', '2', '-1305.3'); + T('2952858872457.929554397223499', '13455320760120.8707665014', '16408179632578.800320898623499'); + T('-255588821522540889862114962636995141.122', '0.00000326851523835', '-2.5558882152254088986211496263699514112199673148476165e+35'); + T('0.00000000000014406509', '-560153923805366388086033', '-5.6015392380536638808603299999999999985593491e+23'); + T('-6.099826371', '28726540983564666452792216637044.9356006234', '2.87265409835646664527922166370388357742524e+31'); + T('8636541368105344305914147830.15649125124', '0.0000000000049754', '8.6365413681053443059141478301564912512449754e+27'); + T('-755310742571241039658903028788091708555.4969131794', '99330105954469.4', '-7.553107425712410396589029294579857540860969131794e+38'); + T('4020318299.7', '-670276060499479628473243989367746661643882288', '-6.702760604994796284732439893677466576235639883e+44'); + T('5095849414624671459392138104904515509922724138164588773.042', '149494908418030920.00255211471236475197791306529', '5.09584941462467145939213810490451551007221904658261969304455211471236475197791306529e+54'); + T('138761505665961028617702243300', '9857942288.8', '1.387615056659610286275601855888e+29'); + T('3804404287.52574', '16416902504', '20221306791.52574'); + T('-2055.8130', '0.00218842416232671530104849459457718', '-2055.81081157583767328469895150540542282'); + T('0.000000000000989697422064467113678', '0.697065625725549', '0.697065625726538697422064467113678'); + T('-30288347947284335685837645153586172422797922983.37915571667', '-1335.069192', '-3.028834794728433568583764515358617242279792431844834771667e+46'); + T('0.00054054406579017', '0.0020445688232423225788738738557412646944032455769768734602', '0.0025851128890324925788738738557412646944032455769768734602'); + T('-68994411860.328728', '48816504201613414531319144006465274996081421325116090708', '4.8816504201613414531319144006465274996081421256121678847671272e+55'); + T('-809830632609724847526268.50966586512675871946995', '45805247683771870541946686267298071051761.71368629398645', '4.580524768377186973211605365757322352549320402042885969128053005e+40'); + T('12.244685335891505325017912752605737279289', '-1953.157', '-1940.912314664108494674982087247394262720711'); + T('0.00000000000000012201816814103574356713495876418475275883288964', '-14514327327765802694345312637.28121049209345627407', '-1.451432732776580269434531263728121049209345615205183185896425643286504123581524724116711036e+28'); + T('-35760010680713914665457.416640208061422564137087770', '237677.40440', '-3.576001068071391442778001224020806142256413708777e+22'); + T('0.213764724863667178076578241157520057358951', '-195.381', '-195.167235275136332821923421758842479942641049'); + T('-4', '-20479253407195868023.7190887', '-20479253407195868027.7190887'); + T('-2636506939789983.9517900975', '7166515142782230578873295164.094395142727', '7.166515142779594071933505180142605045227e+27'); + T('0.00001177737517372381877477801315318', '90325802810983024805454390865176398367442693156.692576771', '9.032580281098302480545439086517639836744269315669258854837517372381877477801315318e+46'); + T('0.0000000000000006940972689786006700192372751360485539314987602213580801251', '-321024060655325518945438734389309904797132969999', '-3.210240606553255189454387343893099047971329699989999999999999993059027310213993299807627248639514460685012397786419198749e+47'); + T('-0.0000000000000000014803670473728307445', '-0.72148924607942442354320737482582513411299162884', '-0.72148924607942442502357442219865587861299162884'); + T('0.0000000000000001043810048169882311646196761962068118', '0.00000000000008989735712546153946422343611927620630428259597102874', '9.000173813027852769538805579547241311608259597102874e-14'); + T('0.0000000856354489413072352886007888280862870145666795091412287', '124165153666113222225049048396538922054986467641', '1.241651536661132222250490483965389220549864676410000000856354489413072352886007888280862870145666795091412287e+47'); + T('-0.0000000000000320757814372847561957016', '-81190157394157.37730', '-81190157394157.3773000000000320757814372847561957016'); + T('-4334587898155190922720532.94504694431', '85522.93', '-4.33458789815519092263501001504694431e+24'); + T('657.44690790930416714587', '-0.000000000000000000046335131044673181381027', '657.446907909304167145823664868955326818618973'); + T('29982214095954021.68565215319585', '-44628768214034.30768386111941549271096', '29937585327739987.37796829207643450728904'); + T('0.00000227708329764590268495570108111', '188682548499636418836270555181954622706559207', '1.8868254849963641883627055518195462270655920700000227708329764590268495570108111e+44'); + T('-105740086870.87902330897898941693939252887655925', '-0.00902789833804655794', '-105740086870.88805120731703597487939252887655925'); + T('5321976.194462', '0.00000000062660860859824908696344225671974056962030135135', '5321976.19446200062660860859824908696344225671974056962030135135'); + T('1400649337343672602231550299981618481761671319', '-109314621074190268.0231', '1.4006493373436726022315502998723038606874810509769e+45'); + T('2057998276732722646423663', '22081288', '2.057998276732722668504951e+24'); + T('0.0000000000000000017861940166096730915828677929399660926585274067', '19858.316504586', '19858.3165045860000000017861940166096730915828677929399660926585274067'); + T('-22618978889574488865872.1936326217809072732', '84743644438924408560024120708247557837387061303912', '8.47436444389244085600241206856285789478125724380398063673782190927268e+49'); + T('16899677', '0.0000000000000006200595313980106282035', '16899677.0000000000000006200595313980106282035'); + T('84223630138728231319265207385866523.7037949685268627985151', '98049376624950796086168448377.9', '8.42237281881048562700612935543149016037949685268627985151e+34'); + T('-23139798585733154920035503271.3293705839340975', '-203534508453530507372.39865759096937', '-2.31397987892676633735660106437280281749034675e+28'); + T('2132422616', '313.8131489937516147609', '2132422929.8131489937516147609'); + T('0.00000000031757080246638721492851445443', '3794846068194592901324442.377', '3.79484606819459290132444237700000031757080246638721492851445443e+24'); + T('-720523766692302305335100081586272082042593510557835022', '-48655616939922.2105', '-7.205237666923023053351000815862720820426421661747749442105e+53'); + T('-0.000000000000681090019432916245992942611570731948008', '-78075676178', '-78075676178.000000000000681090019432916245992942611570731948008'); + T('0.0000000000000000000326999427026228462203921452389557015799356287967578926', '-0.0000000000010075912482623982890', '-1.0075912155624555863771537796078547610442984200643712032421074e-12'); + T('-0.000001663549464265503879091759952912765557', '-2288485846519565.90882', '-2288485846519565.908821663549464265503879091759952912765557'); + T('15283021016799660238790294783012978152064246848.302809', '-255.33064438', '1.528302101679966023879029478301297815206424659297216462e+46'); + T('-2141275004855302313', '-14324404392255657678513289015273', '-1.4324404392257798953518144317586e+31'); + T('-0.000000000000000010204742781305685387176792401033809', '-1797802696763189176117325682047878480266832090717009269338', '-1.797802696763189176117325682047878480266832090717009269338000000000000000010204742781305685387176792401033809e+57'); + T('18393642772198629.04467960835946581820412498120401305795', '0.001275506381558716433091344352361195683041600198429562', '18393642772198629.045955114741024534637216325556374253633041600198429562'); + T('-1985677.0479797102021852689', '3421136183.732859', '3419150506.6848792897978147311'); + T('0.0000000000048772038513856900253878297299144253261148646117991377226', '-0.000000000000000000633993968849724597473885254797830639072', '4.8772032173917211756632322560291705282842255397991377226e-12'); + T('44812645985.34921549502557530796823798603', '-3581800787100727450085636788', '-3.58180078710072740527299080265078450497442469203176201397e+27'); + T('1079812992968985436999219069272969', '2', '1.079812992968985436999219069272971e+33'); + T('-1753778882883960239.7357211808838917234439093151132461', '-675.03089678041125557523363798883874525571164770741', '-1753778882883960914.76661796129514729867754730395199135571164770741'); + T('2.5', '79808580452454570.6021583877', '79808580452454573.1021583877'); + T('-2318172325.38510421', '1', '-2318172324.38510421'); + T('1374939.4348', '5.6626826003903229567653167590578', '1374945.0974826003903229567653167590578'); + T('-1433073.1818631797258961330292384136', '121881788197.262469654057', '121880355124.0806064743311038669707615864'); + T('2.494544723114530285809', '3576653', '3576655.494544723114530285809'); + T('7938514604943790100.9276107434535811520579868735844807580453', '20401419259674024936996903873847920688818394344', '2.04014192596740249369969038817864352937621844449276107434535811520579868735844807580453e+46'); + T('-0.00000000000000000659293074407431751262', '26538.5176499542676', '26538.51764995426759999340706925592568248738'); + T('171650791296', '207021136095822862734047.67963169458559659', '2.0702113609599451352534367963169458559659e+23'); + T('111202958445.9250724298025103213740842327570768605596136302', '1.537803126215', '111202958447.4628755560175103213740842327570768605596136302'); + T('-66398807.32298869', '-6090756873.58292331915049610499833418951253059357', '-6157155680.90591200915049610499833418951253059357'); + T('2353147.270338458726403618253', '0.021384377221532', '2353147.291722835947935618253'); + T('-148563993416893680237652940993302142753.35541587', '64239.868', '-1.4856399341689368023765294099330207851348741587e+38'); + T('0.00000000000000952989372890150229168153411', '0.000000001089981372067260502063827792831910332175826', '1.089990901960989403566119474366020332175826e-9'); + T('-0.000095942657103193473656868628869530806593380', '2056191383129368498489079272615326194', '2.05619138312936849848907927261532619399990405734289680652634313137113046919340662e+36'); + T('-322696702507520517171977833895787676173146086137211', '-2440854162625.37382074757014', '-3.2269670250752051717197783389578767617558694029983637382074757014e+50'); + T('-1211219183955140821584', '-5210569206996623901353622002846939989302.92283', '-5.21056920699662390256484118680208081088692283e+39'); + T('-0.0000000000000079666993349250232202', '489285196659741383.006297750838528045433123', '489285196659741383.0062977508385200787337880749767798'); + T('0.00000000077141109510594202471060992900492', '3208.3347', '3208.33470000077141109510594202471060992900492'); + T('-68024506176127817746586754376221734884', '0.15464521042533657299008608160', '-6.80245061761278177465867543762217348838453547895746634270099139184e+37'); + T('-145880984716.215', '2337129866657263570', '2337129720776278853.785'); + T('188974623061492483.142804194521468235379066778', '-0.00000038525080631123327317383933592', '188974623061492483.14280380927066192414579360416066408'); + T('-16356113742963595266465952932662', '-125355883826.39416781321896', '-1.635611374296359526659130881648839416781321896e+31'); + T('-6055715.8736074588411038198577757669624785013783338', '314649408270458779064780.10', '3.146494082704587730090642263925411588961801422242330375214986216662e+23'); + T('115404161731.4660458068936241750308873387559102', '-22544800348.350741696032151441813827609476762', '92859361383.1153041108614727332170597292791482'); + T('-15403035163985572960537283993932052281699167401054521716', '-4.51871358', '-1.540303516398557296053728399393205228169916740105452172051871358e+55'); + T('494.839191894412897545883335718', '-6838.818196825251112157347', '-6343.979004930838214611463664282'); + T('12.6', '0.00000023237282267118', '12.60000023237282267118'); + T('80998.93', '-0.000000000000000006657264362722375638995179208931019910', '80998.92999999999999999334273563727762436100482079106898009'); + T('24311907546797437.192938', '33293941690', '24311940840739127.192938'); + T('-2439553576035597703284083776782658338714854480.76670', '-552371860516159411553653432588968147375569940274.6', '-5.548114140921950092569375163657508057142847947553667e+47'); + T('-2', '267.41036926198544821143', '265.41036926198544821143'); + T('-221185414.39378617220971422653741297827696718276', '147716681512356798558369414201759187083768076717531.7', '1.4771668151235679855836941420175918708376785553211730621382779028577346258702172303281724e+50'); + T('27782844063780674567856973058456377099880', '0.42833855291455356', '2.778284406378067456785697305845637709988042833855291455356e+40'); + T('-6779946038658269907151725830212.3231241258972158956574549786', '-59152624443548.397860097634612838089', '-6.7799460386582699663043502737607209842235318287337464549786e+30'); + T('5583728', '-12088255617331322291590332122631397105695', '-1.2088255617331322291590332122631391521967e+40'); + T('-122.55488541428134', '-1849241463858352827933557649058195369965078195', '-1.84924146385835282793355764905819536996507831755488541428134e+45'); + T('-5.40620', '-7926553114777.34793', '-7926553114782.75413'); + T('-0.000253850655677758430078658974284641259587365835647', '9712716976.55714607561630095490035500071', '9712716976.556892224960623196470276341735715358740412634164353'); + T('168095465368167755.20132', '-0.000000000000100770026067662522650967001796393', '168095465368167755.201319999999899229973932337477349032998203607'); + T('-23084021.1912', '-0.0000000002552886320752142', '-23084021.1912000002552886320752142'); + T('-0.00000034692938443702777764811193148332', '-2291330567445.020091462', '-2291330567445.02009180892938443702777764811193148332'); + T('-0.000000000000000000500', '-3638839062523.16788353204231378745138113805005277262', '-3638839062523.16788353204231378795138113805005277262'); + T('-21291430264059347596', '-278661231050935040505252800716670488924003.0', '-2.78661231050935040505274092146934548271599e+41'); + T('-3937382504232.4631934324802032008', '-12670428.0658912205267960601919307115632', '-3937395174660.5290846530069992609919307115632'); + T('-146982.22450149250', '623504303083058604561989109312642337', '6.235043030830586045619891093124953547754985075e+35'); + T('253.01', '802625930614062.9705947195646834588541152620643', '802625930614315.9805947195646834588541152620643'); + T('115359268370848989850854005321447663172886737834785520883', '458.4807', '1.153592683708489898508540053214476631728867378347855213414807e+56'); + T('163.09176', '0.00000000000000001823481782581109744', '163.09176000000000001823481782581109744'); + T('-2213687948.07450556690935288', '21871988945935811925735.3643007186962826339', '2.18719889459335982377872897951517869297539e+22'); + T('-13600.9931855956842627546715', '137199858862267.530744593929324697303900300812048', '137199858848666.537558998245061942632400300812048'); + T('64302.84879', '-0.00000000000000000031884862211764', '64302.84878999999999999968115137788236'); + T('-21.0343150', '0.00003762594931905088097193777529518846', '-21.03427737405068094911902806222470481154'); + T('-43.2', '0.0000000000000000088209059726558824954701945990768141500402895240582621', '-43.1999999999999999911790940273441175045298054009231858499597104759417379'); + T('-21.716', '0.00010435033062418396646761217', '-21.71589564966937581603353238783'); + T('-14349223886609.8996911241', '591424', '-14349223295185.8996911241'); + T('387.146464770977292777877373605881', '0.000000000748129478828479148973975406341232062736061643261337037', '387.146464771725422256705852754854975406341232062736061643261337037'); + T('-5400652.348672', '-272186438747803380.1804043255', '-272186438753204032.5290763255'); + T('-21.3', '6.8', '-14.5'); + T('0.00000000103600815339389940326020721966409', '29645237.7502768697756870856787621204', '29645237.75027687081169523907266152366020721966409'); + T('-534005184647169042.131454403358674522', '0.005694323359477401172045805857601828035888769857500968445222', '-534005184647169042.125760079999197120827954194142398171964111230142499031554778'); + T('1862736418', '1', '1862736419'); + T('351490387188996259', '62.100460124428609287573', '351490387188996321.100460124428609287573'); + T('169499641692977052216453491793.9787615383724028133893', '0.00000000000000006361911', '1.6949964169297705221645349179397876153837240287700841e+29'); + T('-8', '3417322569.4831394174', '3417322561.4831394174'); + T('-838501752798.326614960580367718115', '-2022114720338558.047757485234', '-2022953222091356.374372445814367718115'); + T('-1549912.8026532077081092082547', '-45506131.43371799701886630176768733952185393859212', '-47056044.23637120472697551002238733952185393859212'); + T('-2183663034044253888858323830694952562946010.782', '1354851.73581347266611421085387946798291', '-2.18366303404425388885832383069495256159115904618652733388578914612053201709e+42'); + T('-0.0000000000046712261814706680606784284472438172230285748063131539', '918514605286328938996265974.307597316850270', '9.185146052863289389962659743075973168455987738185293319393215715527561827769714251936868461e+26'); + T('-0.0301991824416038881101099', '-4464346608', '-4464346608.0301991824416038881101099'); + T('3.98', '5218371.49516', '5218375.47516'); + T('4832441872354802689671', '-0.0000000000213837', '4.8324418723548026896709999999999786163e+21'); + T('0.000000000000000016298281', '-0.00000000348998960378566871408591706715068151875573445053079845095', '-3.48998958748738771408591706715068151875573445053079845095e-9'); + T('-2059458247822896700102858412401366415.403909858', '30110.7306736165788262027129954556', '-2.0594582478228967001028584124013363046732362414211737972870045444e+36'); + T('-106653', '-6554779180145425976', '-6554779180145532629'); + T('0', '-12771592550606134879262234468876731140678883443896', '-1.2771592550606134879262234468876731140678883443896e+49'); + T('-141742173848073082.100575461779634531', '-7', '-141742173848073089.100575461779634531'); + T('245.6735', '-3537763728425648898.536045229', '-3537763728425648652.862545229'); + T('23.71866884462009661132193', '48487130568434204612649872032673642473034', '4.848713056843420461264987203267364247305771866884462009661132193e+40'); + T('79401597909529525308.48420609229175', '2591403158790529529573511201.19', '2.59140323819212743910303650967420609229175e+27'); + T('284576176526552350', '-10', '284576176526552340'); + T('1.0682', '7861.283121183677379038987', '7862.351321183677379038987'); + T('-1.60444805', '0.0000028847098483848786064787560152209651320682639', '-1.6044451652901516151213935212439847790348679317361'); + T('-0.0000000018996053506896890911603732691263731955475477051763872', '-57581.875373867812973783', '-57581.8753738697125791336896890911603732691263731955475477051763872'); + T('0.00000000000000000012392510786805471753525331968033845561363410307741609902317', '0.000004349947715706492223712976943980034293671355123', '0.00000434994771570661614882084499869756954699103546145561363410307741609902317'); + T('128907.8518369701779', '-1', '128906.8518369701779'); + T('-21.35510004122675870004717674727620213', '0.00000000000000000001009606209896423416929193498290467', '-21.35510004122675870003708068517723789583070806501709533'); + T('-1036072.70', '30288483890840.7644829772783388118', '30288482854768.0644829772783388118'); + T('1', '0.00000000108663482163751960896', '1.00000000108663482163751960896'); + T('196690688540287471600138402631254097', '-1296924088245887989211255853', '1.96690687243363383354250413419998244e+35'); + T('1791156.834533749567213189130', '173011022354550416183638753635.63334944502450395340681', '1.7301102235455041618364054479246788319459171714253681e+29'); + T('1861430347575777575680356960079436184499.919613', '-612614849498276685996593027243', '1.861430346963162726182080274082843157256919613e+39'); + T('-7758655923622034030955.9291230128', '0.00594001420381222017096211329', '-7.75865592362203403095592318299859618777982903788671e+21'); + T('-5459.708512054323229825378150954057236451373947101', '0.00000000000000010467896268967026375601267236689054126519', '-5459.70851205432322972069918826438697269536127473410945873481'); + T('1.5357640654914', '26484040831501596185144229855201045526.8772', '2.64840408315015961851442298552010455284129640654914e+37'); + T('0.000000000000000000551032982567013358317393735391', '3951981877.70635', '3951981877.706350000000000000551032982567013358317393735391'); + T('19966337.40327464680217082908346850752429077', '0.0000000694117823464637414804852860124695677260107514259062814196', '19966337.4032747162139531755472099880095767824695677260107514259062814196'); + T('0.000000000000114387', '26.0780', '26.078000000000114387'); + T('-0.000000000000058566632687', '154445365803820719089161481686648591330608966505075815231', '1.54445365803820719089161481686648591330608966505075815230999999999999941433367313e+56'); + T('-81.9', '-290987195118120910.650828527355125621', '-290987195118120992.550828527355125621'); + T('0.0000000000129766844476802102046046856035673832204965536', '-15.50195731', '-15.5019573099870233155523197897953953143964326167795034464'); + T('5081846528', '22.8724', '5081846550.8724'); + T('-85904518857594634808347910122940606952070250543093.244309866', '87863849.691319671938088226', '-8.5904518857594634808347910122940606952070162679243552990194061911774e+49'); + T('-170442726618237824341261070261982330084077537445839818', '0.000000000000000780053862947758376946726067312229726087592094', '-1.70442726618237824341261070261982330084077537445839817999999999999999219946137052241623053273932687770273912407906e+53'); + T('413.7126477448411377495505703', '-316329.243682', '-315915.5310342551588622504494297'); + T('-0.00000000000000483378251152198797664837453061179141660023', '4083329356329023991816392216832315734019339465889233737667', '4.08332935632902399181639221683231573401933946588923373766699999999999999516621748847801202335162546938820858339977e+57'); + T('0.000000000004945130554715279352', '20393092845', '20393092845.000000000004945130554715279352'); + T('66.60837', '28592560366063.746528', '28592560366130.354898'); + T('-10824143490362152769146.8628434597262310327475178771', '-6.442', '-1.08241434903621527691533048434597262310327475178771e+22'); + T('-17.63', '-0.000000000000000012319', '-17.630000000000000012319'); + T('-134.1362825800766312455', '17351.358339090284637450403853', '17217.222056510208006204903853'); + T('0.000000000001327776', '-0.00005717732', '-0.000057177318672224'); + T('0.000081202465051128565', '9.25', '9.250081202465051128565'); + T('-49969297933006175912135', '201', '-4.9969297933006175911934e+22'); + T('-0.0000000000000000000351971832201257343216570588903268', '-614730534926067941867', '-614730534926067941867.0000000000000000000351971832201257343216570588903268'); + T('-4699376204284239198897468324308327.578823266', '0.01240127407873530917', '-4.69937620428423919889746832430832756642199192126469083e+33'); + T('-166859773331579667092627457017924681891', '1.177', '-1.66859773331579667092627457017924681889823e+38'); + T('297611546807476.7389967424', '517878390231.954956053920806357536', '298129425197708.693952796320806357536'); + T('2.26', '476121878051171262698479334452067496570446544422226', '4.7612187805117126269847933445206749657044654442222826e+50'); + T('0.000000000348934602334173547747920539533095838627739', '-0.000000000000827121544297495855005100518267691068913070523148', '3.48107480789876051892915439014828147558825929476852e-10'); + T('0.0000000016630321489412099873134278851', '33382216672582.0742647965724', '33382216672582.0742647982354321489412099873134278851'); + T('-19.715751399', '1455362393129824490954487356267083.8186754959749850983', '1.4553623931298244909544873562670641029240969749850983e+33'); + T('11152141361730026829285665961687.3139561070881149371766', '2.76963401441423333517597101345', '1.115214136173002682928566596169008359012150234827235257101345e+31'); + T('-44836120135503200078585015978983219367221886861731704', '-2', '-4.4836120135503200078585015978983219367221886861731706e+52'); + T('16.02069381131', '0.0000000000000042', '16.0206938113100042'); + T('-329678350725130.3958196996612366385400490474513156349559', '-3467', '-329678350728597.3958196996612366385400490474513156349559'); + T('-4182765105477793237555.273265434', '56254364076240107601891319154234794697144.298685574', '5.625436407624010759770855404875700145958902542014e+40'); + T('98796860384198464024305164555588491131671343895593228060535', '-1405573031776506147878053891673759594011202270592763', '9.8796858978625432247799016677534599457911749884390957467772e+58'); + T('1092363940258060395083098718642956733485643364', '-10598809886235236342944197021319583170547674110389928477485', '-1.0598809886234143979003938960924500071829031153656442834121e+58'); + T('37586361614.095', '-3148149077577', '-3110562715962.905'); + T('-254953108518285985', '-1.07910144271207423934923587934451351214', '-254953108518285986.07910144271207423934923587934451351214'); + T('2442.32751', '43535097.033480512037', '43537539.360990512037'); + T('91995040568885362527648040727723', '0.4786144932196936758637061866474810131052563763028', '9.19950405688853625276480407277234786144932196936758637061866474810131052563763028e+31'); + T('-23863678424756722926637928011000581.244001324799381062566619', '96688.916787457820799184195711813964401021274965053735523', '-2.3863678424756722926637928010903892327213866978581878370907186035598978725034946264477e+34'); + T('0', '-0.00000000000027852776765692', '-2.7852776765692e-13'); + T('-1623378710787743245737360669094938021186.3532080061729827', '0', '-1.6233787107877432457373606690949380211863532080061729827e+39'); + T('0', '0.000000049048339295559358355126332957758142200703099', '4.9048339295559358355126332957758142200703099e-8'); + T('6192378510550191959653347.846386529481410301978431652948347', '-0.38294548165530032173705676329607616564872132520398', '6.19237851055019195965334746344104782610998024137488965227083435127867479602e+24'); + T('-24283320565469963929558662982.9349694043', '2673821469225170314390', '-2.42833178916484947043883485929349694043e+28'); + T('218.110682218445321922075046444527', '0.01497687885540092217834', '218.125659097300722844253386444527'); + T('-150034638.4607772346143954532', '-20008571757063313138', '-20008571757213347776.4607772346143954532'); + T('-2971683662963108664767', '19264012460036395799353855810042830620021', '1.9264012460036395796382172147079721955254e+40'); + T('-5252175.40891737279869057', '-2027371894615285196604888264930073402643.5207', '-2.02737189461528519660488826493007865481892961737279869057e+39'); + T('-20871238425800671889182.829701547250', '-76082554384456.3158288776570471938928399650934647043692665519', '-2.08712385018832262736391455304249070471938928399650934647043692665519e+22'); + T('0', '-6932.702341315865', '-6932.702341315865'); + T('0.0000000000000000005738499200802402637492440447802302210350633678412977240457', '31318.68', '31318.6800000000000000005738499200802402637492440447802302210350633678412977240457'); + T('-934961659015198853393126550.25200823467372663246334', '74878058.044873358837373372754304', '-9.34961659015198853318248492207134875836353259709036e+26'); + T('150.22669', '3684561512708165421004.40592369696065395561261265524', '3.68456151270816542115463261369696065395561261265524e+21'); + T('-0.0000000000000015', '0.0001183766448622143702316173650526018028825820894748606870475', '0.0001183766448607143702316173650526018028825820894748606870475'); + T('-2.8', '-0.000000000001829913701194321808657770171290559944848203', '-2.800000000001829913701194321808657770171290559944848203'); + T('0.000018752442721586663741713313007598397434839252', '-396673155594371.6367526145400674503928659772089760230841322', '-396673155594371.636733862097345863729124263895968424686697360748'); + T('-13096091967075751663002949891851210', '-1477304896251731689853.4603171477120194670', '-1.3096091967077228967899201623541063460317147712019467e+34'); + T('-740512796205842509947742580189685788668.411', '-2824022128765.93600320598135905249475748957', '-7.4051279620584250994774258301370791743434700320598135905249475748957e+38'); + T('-0.00000000000000000007489577842583193917', '1.663748696735089', '1.66374869673508899992510422157416806083'); + T('-358935750965455.3592219004802490902523174719', '43371.1', '-358935750922084.2592219004802490902523174719'); + T('9667988395245566159878.653259', '0.000000000116385624231571218', '9.667988395245566159878653259000116385624231571218e+21'); + T('2758033402.5184130', '661106474725.93', '663864508128.448413'); + T('999070419142037555127.53', '-381460743151065544049291431867372559397611945291347286', '-3.8146074315106554404929143186737156032719280325379215847e+53'); + T('-92699966163766696.7490442006', '-1915615.8916014755799758113439947795642627', '-92699966165682312.6406456761799758113439947795642627'); + T('489937.3780742473458733440028228509907624', '-1', '489936.3780742473458733440028228509907624'); + T('-0.000000000000754489936', '-0.00000000000036618270314381889826166978763226', '-1.12067263914381889826166978763226e-12'); + T('390379828579195857322601563326484972906745.91988878145980541', '704108103.1382116', '3.9037982857919585732260156332648567701484905810038145980541e+41'); + T('-26.87', '2353822.691199775358305790461', '2353795.821199775358305790461'); + T('-1587155103407939753589555224978500385.2263024764001305020', '0.0000000000011377959206097569335266885356013552156589880648', '-1.5871551034079397535895552249785003852263024763989927060793902430664733114643986447843410119352e+36'); + T('-5708346691.2506', '-2970137689.07191265257072771', '-8678484380.32251265257072771'); + T('0.0000000000000002334849322956799148269551416529021258', '51972.5801195102957735093196127055803694295535', '51972.5801195102957737428045450012602842565086416529021258'); + T('-104080.3162441765370132760114', '0.000000390882311111306995576914162226185882353716', '-104080.316243785654702164704404423085837773814117646284'); + T('-1923634420932885580541323911945854', '-5442.2', '-1.9236344209328855805413239119512962e+33'); + T('269402746056235370532350773376.6611241372196686370390', '-2.398', '2.69402746056235370532350773374263124137219668637039e+29'); + T('4.6142', '-91954290028090809.5727705166649650', '-91954290028090804.958570516664965'); + T('0.0000000038792075674539308578456', '-0.00000000799999446190038', '-4.1207868944464491421544e-9'); + T('86889265743549292727829232652504603134424', '3966264277627964.8584259691377065', '8.68892657435492927278292366187688807623888584259691377065e+40'); + T('-0.01849718975477457', '42293783764.387302167416177115129958269578', '42293783764.368804977661402545129958269578'); + T('229183.9324129997835780196022124839', '-180.13280', '229003.7996129997835780196022124839'); + T('0.0000000000000004071', '-6632946124.9569670001116089493461386479567752', '-6632946124.9569670001116085422461386479567752'); + T('-79368388.12060961147325951196402', '-8818967839841756190843118.1854748170628718251708829084816359', '-8.8189678398417562702115063060844285361313371349029084816359e+24'); + T('-96.8977819169541179624268824', '-110441943210894571.8830072797816067381187179609278660643', '-110441943210894668.7807891967357247005456003609278660643'); + T('-36873417583534015.45598304691218697443', '1060166.917377718838271', '-36873417582473848.53860532807391597443'); + T('0.000000000000002700871444392', '-0.0605349026669693089396005912402318', '-0.0605349026669666080681561992402318'); + T('-0.000000000000053692523', '-0.00000137254604803', '-0.000001372546101722523'); + T('1074227134372692301132209354432413147.1963324', '0.000000000000003598619851546479146545077911695828898095102737795956459', '1.074227134372692301132209354432413147196332400000003598619851546479146545077911695828898095102737795956459e+36'); + T('-1017687657058637575723357458862923106911128795220693738771601', '4258563010.69702', '-1.01768765705863757572335745886292310691112879522068948020859030298e+60'); + T('15695318372.722371', '-7262689556596731591510081797054945.08235892482', '-7.26268955659673159151006610173657235998792482e+33'); + T('-0.184121579717', '-0.00000000000032197634799642162905185759509417879', '-0.18412157971732197634799642162905185759509417879'); + T('496711464563303349082978268361607314429719423836547893298', '0.00780349823846259456540557', '4.9671146456330334908297826836160731442971942383654789329800780349823846259456540557e+56'); + T('-303514.82542426177461216895784715957208157971', '-0.0000000000000010372854153009492220571724887918212517847890822413245347', '-303514.8254242617746132062432624605213036368824887918212517847890822413245347'); + T('-34126709757832', '-1034.8105337', '-34126709758866.8105337'); + T('-557553079116126732746.60346222066', '-194401.4', '-557553079116126927148.00346222066'); + T('5', '13969995', '13970000'); + T('0.000000000024420167617316425311147207326564663249988502924425073', '58388856055235574885008260342295638772198164.947520', '5.8388856055235574885008260342295638772198164947520000024420167617316425311147207326564663249988502924425073e+43'); + T('-1952712333.155776956436338241', '-0.000000000000001787', '-1952712333.155776956436340028'); + T('0.000000000000000000442399285756922519285614916177278059874646382070215708393687', '-0.0000000000007944556433362323923998778322490216082668198093259', '-7.94455200936946635477358546634105430988759934679517929784291606313e-13'); + T('-17.91', '1176950886190171466875.8668061191330515772843337822020031191', '1.1769508861901714668579568061191330515772843337822020031191e+21'); + T('157077985623370359640124976052501925', '28604427989766282.76371', '1.5707798562337035966872940404226820776371e+35'); + T('7453449.6233221933856360936994951958191632578932339027257', '7220.0', '7460669.6233221933856360936994951958191632578932339027257'); + T('19787312872.5997045141158923178398412505666161654557403133090', '-37306481586787392775866703659600367821024385.6498012', '-3.7306481586787392775866703659600348033711513050096685884107682160158749433383834544259686691e+43'); + T('0.0036377269513631890696573602180806431948860786178658756', '2028146793266265751425109925774562808347846641', '2.0281467932662657514251099257745628083478466410036377269513631890696573602180806431948860786178658756e+45'); + T('-69329355007729552.734184155872579911364124970', '49428086084838561002968128.908102465415944072794710779766855', '4.9428086015509205995238576173918309543364161430585809766855e+25'); + T('5.236129243946948546627393853048424524035753709977', '1458.28382091564243822112', '1463.519950159589386767747393853048424524035753709977'); + T('-125770.7986824578099574150670482067998529', '-54536494221899508990432759126.5854', '-5.45364942218995089904328848973840824578099574150670482067998529e+28'); + T('0.0000000000000000040282063397187671534478', '42.9342796393702', '42.9342796393702000040282063397187671534478'); + T('112255.6473762401', '625578631883141131859950104709.402446232383239610277', '6.25578631883141131859950216965049822472483239610277e+29'); + T('0.0000000000008204051137050998759261498906577146164344577915568026', '-914503544747584022218019464876', '-9.145035447475840222180194648759999999999991795948862949001240738501093422853835655422084431974e+29'); + T('0.000000000000032086696834814061554271827918462166063', '-7', '-6.999999999999967913303165185938445728172081537833937'); + T('-16102511193600.208625575', '0.0000000005921920429652733476192339', '-16102511193600.2086255744078079570347266523807661'); + T('0.05330917360748068', '-1387662245.82971965501508', '-1387662245.77641048140759932'); + T('332566083814742507.4381', '50225079040717.5', '332616308893783224.9381'); + T('0.0535616342876656884145', '40.302980205257854', '40.3565418395455196884145'); + T('2.095810329351761236733504648511', '1291032886241879180795380.39652395418615', '1.291032886241879180795382492334283537911236733504648511e+24'); + T('76.93666308278743385854202793941924424687995851136', '-0.0000031951856193404', '76.93665988760181451814202793941924424687995851136'); + T('-4089192.401545276102326047095158140681', '0.0000000000294587249643456047378078626482043840305033', '-4089192.4015452760728673221308125359431921373517956159694967'); + T('-0.0000000026917607386', '-0.000000001463738085548829246226730', '-4.15549882414882924622673e-9'); + T('5997.3860262975745', '-9.2570184551997909', '5988.1290078423747091'); + T('-0.0000001736810132395059213491577845055187737', '-16125521840386.2', '-16125521840386.2000001736810132395059213491577845055187737'); + T('-12.393', '-959175810182.97', '-959175810195.363'); + T('0.000000000000000012703677534683229539552879126254493256638930817', '-162613165341774647773791411159812774229455.506', '-1.62613165341774647773791411159812774229455505999999999999987296322465316770460447120873745506743361069183e+41'); + T('5765801580384047256456488623813074.84286854632242004465357', '165435022359303094.00576799365464765649', '5.76580158038404742189151098311616884863653997706770114357e+33'); + T('0.000024851933157201952923401889849591044056443558822429', '-19872544695921164383628718578914483460945374183201070203', '-1.9872544695921164383628718578914483460945374183201070202999975148066842798047076598110150408955943556441177571e+55'); + T('15967162444205725.5835876977581985895876178', '-22.09383479755539543658379', '15967162444205703.4897529002028031530038278'); + T('-1895.5870000978149', '158456457583275411.151255931089745677273050725', '158456457583273515.564255833274845677273050725'); + T('0.00000000000000006613200838614468668274572771438132', '0.000000000000009799052946232089973195569084478957663245622', '9.865184954618234659878314812193338983245622e-15'); + T('-0.00007217386', '-30380533.92750742177144456679338699', '-30380533.92757959563144456679338699'); + T('49321761839.8798408956884550', '104924407952098597601614114560902417392737539279.14066', '1.04924407952098597601614114560902417442059301119020500895688455e+47'); + T('-1691047173618367369.8797144744337845447480409090470639328', '-10750', '-1691047173618378119.8797144744337845447480409090470639328'); + T('-16791796.527002378128880210996658740114552744738867694', '115759936860192797305173026', '1.15759936860192797288381229472997621871119789003341259885447255261132306e+26'); + T('-1029316.894', '261548573279697971.910', '261548573278668655.016'); + T('0.0001296647057215427680944560864883468441013790931695', '-1054.824421', '-1054.8242913352942784572319055439135116531558986209068305'); + T('-46699431235320232532.67509849580', '0.000008979993955818623', '-46699431235320232532.675089515806044181377'); + T('-6298558991125571.36653922609195960880571', '-4113889298860378827260223247091017172.9329596', '-4.11388929886037882726652180608214274429949882609195960880571e+36'); + T('-2336086975140170284498.42499016188003935830', '1457086105105141790243380324424465.1603058805177211619', '1.4570861051028057032682401541399667353157186376818036e+33'); + T('13584368794590929.65056685978986415743426966', '1.22576526919', '13584368794590930.87633212897986415743426966'); + T('-1327351.46438658329883133911209577075273465014', '0.000000000005775966498832314718', '-1327351.46438658329305537261326345603473465014'); + T('-516531363720634698623139507801786560806', '-137346717602427886117612615306931.7600975293129786', '-5.165315010673523010510256254144018677377600975293129786e+38'); + T('-497191321049479298.6006597', '-1047994963280.836414', '-497192369044442579.4370737'); + T('-0.0000000000000002185586000243939351096925920847', '-0.0000000000009048521726041772916157', '-9.050707312042016855508096925920847e-13'); + T('6016595778895316729168438939349.8686687192', '5526181676412323789926982786789.74580518160', '1.15427774553076405190954217261396144739008e+31'); + T('3.0095', '-0.0000000000005426618174200484334', '3.0094999999994573381825799515666'); + T('-68807659807110289490038532736.1520217818672205564919342', '-523349129605691396252486008533.3780711514', '-5.921567894128016857425245412695300929332672205564919342e+29'); + T('-113364492557824.61981595', '-4469693.046218916056590', '-113364497027517.66603486605659'); + T('-0.00000000000164215561823273145124136513441258', '-4973023665107453759495929363162.8237739698', '-4.97302366510745375949592936316282377396980164215561823273145124136513441258e+30'); + T('35.9888417583081351968218538', '-14915.870931400193663433176830', '-14879.8820896418855282363549762'); + T('-2331.988493276549717942', '0.00000000000141823854809196715', '-2331.98849327654829970345190803285'); + T('-11371.3496728385913350997078680648168992940913566777190', '-2397016.60966829969942721806170794681095113', '-2408387.959341138290762317769576011627850424091356677719'); + T('3383157742756319045795578039331661679255299628783006818', '112.431', '3.383157742756319045795578039331661679255299628783006930431e+54'); + T('0.1199645670415880693938857655777249', '-44832078259011.6759', '-44832078259011.5559354329584119306061142344222751'); + T('-0.000074515', '0.000000000000822522086975415741166136452344243213662423269', '-0.000074514999177477913024584258833863547655756786337576731'); + T('-316363904412657873.82463253361', '6029091127919181004154328007134773005154138.82694336', '6.02909112791918100415432769077086859249626500231082639e+42'); + T('-2948135076910640.90049', '5761548892564240496281853871829076765874909400', '5.76154889256424049628185387182612863079799875909951e+45'); + T('58372178458636173167435580966904.9', '-0.0000000000000000069124', '5.83721784586361731674355809669048999999999999999930876e+31'); + T('-1030343159494169', '1.17687493992567335710622120899406991559327721710205732290350', '-1030343159494167.8231250600743266428937787910059300844067227828979426770965'); + T('-364369717.74', '1051.2619702659448865', '-364368666.4780297340551135'); + T('-14700708312683508124053613483934', '169203221928.16495122822999668712809968967', '-1.470070831268350812388441026200583504877177000331287190031033e+31'); + T('-7136587497.6210794583359262865362602', '0.000000000000000943850201474525427491095625665832833080048218', '-7136587497.621079458335925342686058725474572508904374334167166919951782'); + T('543052781691689788023396133911013281045', '-0.14820404005794765846900406675812481', '5.4305278169168978802339613391101328104485179595994205234153099593324187519e+38'); + T('110663366765368921.0866334279485908190131223654028', '36120532541712948438741340607422573739675370', '3.61205325417129484387413407180859405050442910866334279485908190131223654028e+43'); + T('380658.3', '-2065165618.375157186233', '-2064784960.075157186233'); + T('-17457782.9819883601', '942920318414698402627635914937488163385896', '9.429203184146984026276359149374881459281130180116399e+41'); + T('8629631914097.8362771910', '-4.034', '8629631914093.802277191'); + T('288071238497.1261824965452941330232', '1052', '288071239549.1261824965452941330232'); + T('78997931984403436704001039530.3024629578317209', '0.000343258751917970970676216110596811', '7.8997931984403436704001039530302806216583638870970676216110596811e+28'); + T('-2.25', '111337103342848345761099521859657477916973094722775.5951', '1.113371033428483457610995218596574779169730947227733451e+50'); + T('-1', '0.00000332919915648989163252787357017400732468280', '-0.9999966708008435101083674721264298259926753172'); + T('-16445332684883.22825', '-0.00000000000000012333460118914012271577551957339747141406', '-16445332684883.22825000000000012333460118914012271577551957339747141406'); + T('-31175222200344385644218736866483.2725089', '-3327088982173967964155665008077925357598', '-3.3270890133491901645000506522966622240812725089e+39'); + T('-1252051655804', '0.00000000264882354935793977626553543541414436396686075411715667541', '-1252051655803.99999999735117645064206022373446456458585563603313924588284332459'); + T('-0.0000000000000000000158865062136901543406179703019550687767953302019945978597', '1020942680079952748611824.185392743482507618487632660693', '1.0209426800799527486118241853927434825076184717461544793098456593820296980449312232046697980054021403e+24'); + T('-35898806424024840518', '1209273562014126837', '-34689532862010713681'); + T('0.00000000000000000063529152935584224393904', '0.000019230208356140680362397434569942324862475539', '0.000019230208356141315653926790412186263902475539'); + T('-33441632499.7607713725472193611665003418', '106413', '-33441526086.7607713725472193611665003418'); + T('-4.75634838524050727239455330', '0.00000222716225977301166476', '-4.75634615807824749938288854'); + T('-852521157106518977717317.959654055992630233016032351392', '-0.0000000000000000017823481878995487452645517241108404', '-8.525211571065189777173179596540559926302347983805392915487452645517241108404e+23'); + T('161134348969753.7818551261464', '14778587228410.68', '175912936198164.4618551261464'); + T('-369981.81', '434675717524696906710428616481.721', '4.34675717524696906710428246499911e+29'); + T('-2332861219206834364527.48368', '19149287947261990184026730628.5871', '1.914928561440077097719236610110342e+28'); + T('-0.00000000000000116369456154760102530923593100791059354951050808242146', '-81782712838440550651059561384159250420604069689985758.44650', '-8.178271283844055065105956138415925042060406968998575844650000000000116369456154760102530923593100791059354951050808242146e+52'); + T('-351.475892554479058', '-447032714556907039546625862961730678.7', '-4.47032714556907039546625862961731030175892554479058e+35'); + T('-0.0000000000005359206060244700158823650', '-0.0000000000000000003863162428565', '-5.35920992340712872382365e-13'); + T('2', '-0.00000000000000005866552459931', '1.99999999999999994133447540069'); + T('639324673786985183757123973071419.69', '0.000000000000000105695777609583429374882466829273', '6.39324673786985183757123973071419690000000000000105695777609583429374882466829273e+32'); + T('4294088930905823047177509660568176369997.858000657', '0.00000000190441051986057354054684652513790', '4.2940889309058230471775096605681763699978580006589044105198605735405468465251379e+39'); + T('81952.93187082317', '-3354935.93728410227615128341536014594398120471', '-3272983.00541327910615128341536014594398120471'); + T('22.4490', '-60024492865596734181918135790584892061552368', '-6.0024492865596734181918135790584892061552345551e+43'); + T('82042481481926776214220048262853946881327742847', '-8538522144679468521.62573001550037', '8.204248148192677621422004825431542473664827432537426998449963e+46'); + T('-4821483203793.49440644526137664', '-0.000004487693742178692907867', '-4821483203793.494410932955118818692907867'); + T('6.110882058707251378846629539352045716', '-418562303949284087382062254279932829.02', '-4.18562303949284087382062254279932822909117941292748621153370460647954284e+35'); + T('-0.00000000000000003499186801952540123648020382', '-65374665927301037435189057407673135706346962', '-6.537466592730103743518905740767313570634696200000000000000003499186801952540123648020382e+43'); + T('-117.491', '-35267005558911708.73667772625498979866', '-35267005558911826.22767772625498979866'); + T('-1305188291195132404665648036283152', '-48817.0270426507883050419161', '-1.3051882911951324046656480363319690270426507883050419161e+33'); + T('-332959.31909282242075209', '-0.031741578746012412923914', '-332959.350834401166764502923914'); + T('-17.1394344634', '-0.00000229726550687811210739718966133', '-17.13943676066550687811210739718966133'); + T('810780860238944784555214657769411196386947.54', '4.92693024082761080', '8.107808602389447845552146577694111963869524669302408276108e+41'); + T('-1048758998827591442543266558.0106480081485758097', '-94.076883827230674850527236', '-1.048758998827591442543266652087531835379250660227236e+27'); + T('704447412485396882279061367382703398302182548530873140734.6', '6.1441561936492973077606028', '7.044474124853968822790613673827033983021825485308731407407441561936492973077606028e+56'); + T('-9', '14240110.34382757891637692908119148', '14240101.34382757891637692908119148'); + T('-2.17399974', '-7.782135494523838665700444005467417478', '-9.956135234523838665700444005467417478'); + T('423939022366100.1303605421315647706922839530', '-148861179543023924.831222210', '-148437240520657824.700861667868435229307716047'); + T('-524884.99509383', '-8951228003529351713733925073.1782', '-8.95122800352935171373444995817329383e+27'); + T('-0.020796655578405', '368497345356.14', '368497345356.119203344421595'); + T('-1963433333827228036507.697737169766323166530902591', '-957846652507696110363', '-2.921279986334924146870697737169766323166530902591e+21'); + T('0.000001311', '-3369850772751642763158244569.8616096', '-3.369850772751642763158244569861608289e+27'); + T('4794.0', '-1192644326919702801393470130877439453668.01186106844617097', '-1.19264432691970280139347013087743944887401186106844617097e+39'); + T('-1021147107953300067786801337030572.294185965004276223', '-39540941781.309992029344807273', '-1.021147107953300067786840877972353604177994349083496e+33'); + T('-7044613941200081350320568560980315.797014086930', '-22.98', '-7.04461394120008135032056856098033877701408693e+33'); + T('0.0000090121286833758732990328348454967225169260742236026', '990483291162514723456237581.12', '9.904832911625147234562375811200090121286833758732990328348454967225169260742236026e+26'); + T('-26.736', '-50947076888389365.5543516223716887', '-50947076888389392.2903516223716887'); + T('0.00000000019379047403352963512763584433797131380295276579883848', '351648601080041724641347981598154974909945367236167357297', '3.5164860108004172464134798159815497490994536723616735729700000000019379047403352963512763584433797131380295276579883848e+56'); + T('-13975.741', '373024094875867055483269157586785.905835293458170355', '3.73024094875867055483269157572810164835293458170355e+32'); + T('-299.92', '-11054263.84681950544', '-11054563.76681950544'); + T('-1406576080.91', '-11.8662', '-1406576092.7762'); + T('0.00000000001874641346', '0.00000000000000486443153897052258296310659171509120488311396238084788', '1.875127789153897052258296310659171509120488311396238084788e-11'); + T('1205.34627565144026871663097', '1249.7837058417060142511952909501288363112688', '2455.1299814931462829678262609501288363112688'); + T('-4.39', '545534', '545529.61'); + T('-2916468.72915302357477562892725843748', '-78412.481653315', '-2994881.21080633857477562892725843748'); + T('1', '1157759807263227857254563934897', '1.157759807263227857254563934898e+30'); + T('-104251055525855379611.30896754', '-16664469.85', '-104251055525872044081.15896754'); + T('0.00000000000261749383970', '-11939719.526854341', '-11939719.5268543409973825061603'); + T('-0.0000000090677528576752114233457187000354303371555029332226226', '-0.0000054807823719971287602588898631186660', '-0.0000054898501248548039716822355818187014303371555029332226226'); + T('-116485999654579416404.1770995047267', '-1056453978415557512986444149851256428790784', '-1.0564539784155575129865606358509110082071881770995047267e+42'); + T('129605008229833515.738549411440577906', '-2966237394191984.299672767366997401377001384652892925560', '126638770835641531.43887664407358050462299861534710707444'); + T('38233691542980267658744125', '22629558718.76465481003636074', '3.823369154298029028830284376465481003636074e+25'); + T('-8533862254008034912764735.004170692', '0.00000000000002245605992555542408030328467190', '-8.5338622540080349127647350041706919999775439400744445759196967153281e+24'); + T('10553.65', '-0.00000049686576247164541003858453804', '10553.64999950313423752835458996141546196'); + T('-51954241699518441712828334574084047.068703826124873318564', '395669535095772787686098943620277851996703327535', '3.95669535095720833444399425178565023662129243487931296173875126681436e+47'); + T('-23122182991889866069296720914272472', '58837368013.02465555264983929119523508427711325303360206', '-2.312218299188986606929666207690445897534444735016070880476491572288674696639794e+34'); + T('0.00000000397559426', '-371081877267739.52921835969493214299461', '-371081877267739.52921835571933788299461'); + T('-1318006475307606890136618572999490756076602355.97', '632863313713664.4745327432714901307248136075', '-1.3180064753076068901366185729988578927628886914954672567285098692751863925e+45'); + T('-23439088778534600.8640688389613841', '16', '-23439088778534584.8640688389613841'); + T('21557692582940554231371458355850911425', '54.498980233719', '2.1557692582940554231371458355850911479498980233719e+37'); + T('-15841465782.23786068092567135289691949618', '-0.06849728241', '-15841465782.30635796333567135289691949618'); + T('0.0000000001081504196289698603171046129405333329174', '-1442109.88437873202181493001814004974080724589', '-1442109.8843787319136645103891701894237026329494666670826'); + T('-0.00000000001647', '282001122341733786209765075874760.2208698094645570', '2.82001122341733786209765075874760220869809448087e+32'); + T('99430939117933248217120.374139300891394898188889827982140', '0.00000000000000029379095872418716620806971498023154656656222336363941', '9.943093911793324821712037413930089139519197984855216930620806971498023154656656222336363941e+22'); + T('32.0', '-27722898.863296087173', '-27722866.863296087173'); + T('156106106814604967305174465335864706671583.70259565626257897', '-13917199525611', '1.5610610681460496730517446532194750714597270259565626257897e+41'); + T('0.000000000000012756394816575404961299', '7517.05', '7517.050000000000012756394816575404961299'); + T('16.12', '-420571324087664540438479.845', '-4.20571324087664540438463725e+23'); + T('2418460022267862452.4', '41.457986607816857109', '2418460022267862493.857986607816857109'); + T('148234016059793326337.640', '11.03882097673491443395332118707526905738860', '148234016059793326348.6788209767349144339533211870752690573886'); + T('590735628836667929357165331457381099840530274992323824', '-35.537', '5.90735628836667929357165331457381099840530274992323788463e+53'); + T('-91.305944234004155285775629491875981263029245580213970209', '-0.10312097106790790600287727466092359571108', '-91.409065205072063191778506766536904858740325580213970209'); + T('351474.4', '-409.9417808528084374954481354713200702998578', '351064.4582191471915625045518645286799297001422'); + T('0.00000000000000000268393845813954', '232389665408735', '232389665408735.00000000000000000268393845813954'); + T('0.000085437842245145501815518395009858127503498', '-228105253425581861', '-228105253425581860.999914562157754854498184481604990141872496502'); + T('113814704131627223061784854080682', '-0.00000000000000495917538613516689674', '1.1381470413162722306178485408068199999999999999504082461386483310326e+32'); + T('-104597143810254066499700', '-1320192161655050.18', '-1.0459714513044622815475018e+23'); + T('-808665613705806138579.9252448473426840', '-0.000000000463', '-808665613705806138579.925244847805684'); + T('-10652723155657612558630867.3337753966347961185835734448179360', '-1074473046919580926107363821097544239456092192199611', '-1.074473046919580926107363831750267395113704750830478333775396634796118583573444817936e+51'); + T('30.873', '-2877.8117541278', '-2846.9387541278'); + T('280550729.708', '15.0', '280550744.708'); + T('-165734300554398023710.52770', '44297520438', '-165734300510100503272.5277'); + T('0.00543767539426789750178885690131013907', '9444317260148.44999438456024566306', '9444317260148.45543205995451356056178885690131013907'); + T('3.906258287', '-101756814758789018743117855884.8664231869', '-1.017568147587890187431178558809601648999e+29'); + T('0.0000000000466441425', '-7925237.129420', '-7925237.1294199999533558575'); + T('-8793636.6549628644427603574935', '-168717.26735969139', '-8962353.9223225558327603574935'); + T('16229113210072', '-1.66', '16229113210070.34'); + T('-274', '5543767652349683046313915.6084123313153941360541851', '5.5437676523496830463136416084123313153941360541851e+24'); + T('697036466897177207083246447.2299025435243117175710148553', '0', '6.970364668971772070832464472299025435243117175710148553e+26'); + T('-46.3370059936', '10533716878.34472089', '10533716832.0077148964'); + T('10374324.55170082277424656551004841876', '27751581009979569031375460467333.939804424', '2.775158100997956903137547084165849150524677424656551004841876e+31'); + T('-26.207', '-0.0000000000000031037896000885366', '-26.2070000000000031037896000885366'); + T('0.00000008010', '18.21', '18.2100000801'); + T('4842596615336.5226989764856168408', '693189245669296426406216', '6.931892456741390230215525226989764856168408e+23'); + T('-0.0000000000000851077176424519554600753331960725209384331282631736', '-0.00000000032044460270651016683689341535385222681285333039475669967745', '-3.2052971042415261879235349068704829933379176352301987327745e-10'); + T('-45733275107439777530880615832524693352357490.41665', '-9002296385923358097661509924413196524814431890711992169', '-9.00229638596909137276894970194407714064695658406434965941665e+54'); + T('-0.00000000000000000156439224707874070263669523081315808081534434429692222172674', '0.00000000000000000004291737953641998', '-1.52147486754232072263669523081315808081534434429692222172674e-18'); + T('0.00000000198897553988595375857564654222391162510361117709636863903', '-10.007927501632868864725076236004253517352', '-10.00792749964389332483912247742860697512808837489638882290363136097'); + T('-0.0000000000000000823558627325', '0.000000118691410206725495', '1.186914101243696322675e-7'); + T('-6276754.7824301277909646649809', '-2300076804510676.99579229048', '-2300076810787431.7782224182709646649809'); + T('-1477245255838368818869339352082881086281616770202', '260.2', '-1.4772452558383688188693393520828810862816167699418e+48'); + T('-69931380572295540885943992404507908544953094482.1746111', '6493037948200.611359', '-6.99313805722955408859439924045079020519151462815632521e+46'); + T('-32658268317284858182413184281435089775970459834815.66170', '-0.000000000000342812261960547876364567574654890642067512409498', '-3.2658268317284858182413184281435089775970459834815661700000000342812261960547876364567574654890642067512409498e+49'); + T('-226963.2043', '-496091', '-723054.2043'); + T('-103912.138149562507', '-62.4', '-103974.538149562507'); + T('-2.2', '-192.817990', '-195.01799'); + T('222123997760197158313997248315192554300081415.469', '0.000000000012667203104882341577765952699206164', '2.22123997760197158313997248315192554300081415469000000012667203104882341577765952699206164e+44'); + T('131249246364141493511095170397038.4', '12005458301968.10861506047414540', '1.312492463641414935231006286990065086150604741454e+32'); + T('-6103920949696.969088220006245342108451032227019740900968', '-8610778484315116167388258277248987747817680', '-8.610778484315116167388258277255091668767376969088220006245342108451032227019740900968e+42'); + T('10233395574.3608814100201268800987627468958287183008442076', '2066089654793590701954', '2.0660896548038240975283608814100201268800987627468958287183008442076e+21'); + T('1054800822950425857387.3975342786210238442171979019733049494', '268210275857404541391650497878689.609927', '2.682102758584593422146009237360770074612786210238442171979019733049494e+32'); + T('0.0000000000000000005358606622145297463680878712323075380428171088961554207868', '21625227877279.763', '21625227877279.7630000000000000005358606622145297463680878712323075380428171088961554207868'); + T('0.0000000000000000038580163605093667407219262159717409196345947134', '26563841772035062352711123348805920.54972', '2.65638417720350623527111233488059205497200000000000038580163605093667407219262159717409196345947134e+34'); + T('0.0040413342647577519898276000725944344977704', '56147277645684.4193402', '56147277645684.4233815342647577519898276000725944344977704'); + T('4364458714.2682', '316321.1973', '4364775035.4655'); + T('-3442146624234450575848597310365404902.6280403978894069', '9600031560472464093658037177768209030975667.931701', '9.6000281183258398592074613291708986655707653036606021105931e+42'); + T('0', '-549407495633380422499474.55571333', '-5.4940749563338042249947455571333e+23'); + T('-37479660228.14714', '-1.75484', '-37479660229.90198'); + T('-26584742.26667643650870662855172761916351306', '-0.00000000000000187865453650020', '-26584742.26667643650870850720626411936351306'); + T('-58.001178998055584357671459355923764911439509141805', '-50935290675172160.97675237172778455', '-50935290675172218.977931369783368907671459355923764911439509141805'); + T('-0.00000000000000000034052335201240933961815921', '0.025619781818507958387831333698180', '0.02561978181850795804730798168577066038184079'); + T('-0.00000000000000008274050377833639593377852710426025817', '242065602.8095741290098057721936971088', '242065602.80957412900980568945319333046360406622147289573974183'); + T('-221524.27663105095567467682134', '-2258391802026441769618755584758918156197711875845897035768', '-2.25839180202644176961875558475891815619771187584589725729227663105095567467682134e+57'); + T('-0.0000000017893705878914010575881803996966689837370969008155370432', '-0.00000297259632962708146112815320511201052652', '-0.0000029743857002149728621857413855117071955037370969008155370432'); + T('-0.00000000000406710488085149344523', '-278522.037156181204952078706297015294979477127184963777538', '-278522.037156181209019183587148508740209477127184963777538'); + T('11973889508.580802', '1871682273132124693', '1871682285106014201.580802'); + T('0.0000000000000000033353113686655236115870191745605104608147650', '11625246.252195', '11625246.252195000000000003335311368665523611587019174560510460814765'); + T('-5318806059561785713953', '-0.0000000000000012146467404768921900862164865027461683067265853186116641', '-5.3188060595617857139530000000000000012146467404768921900862164865027461683067265853186116641e+21'); + T('-309.3', '-0.00000000000006218919975652358743864716', '-309.30000000000006218919975652358743864716'); + T('-1874575484506897571974850167460839993082172311.68616497703', '-0.0000000942559460072629437399413345982786975068449962297', '-1.8745754845068975719748501674608399930821723116861650712859460072629437399413345982786975068449962297e+45'); + T('-21', '-0.0000000000000397635708714407055658459', '-21.0000000000000397635708714407055658459'); + T('-1302141913979670987068496048', '-0.0000002335314231823837373064', '-1.3021419139796709870684960480000002335314231823837373064e+27'); + T('-8663116.663729764613058828364567651431', '609.8', '-8662506.863729764613058828364567651431'); + T('122805001870129.621993', '546.98190600859999', '122805001870676.60389900859999'); + T('132753213.74892150691420521615', '-2356523694.1', '-2223770480.35107849308579478385'); + T('-255163.150', '-22815991158761.86650580', '-22815991413925.0165058'); + T('0.00000000000000009834358', '27695886984688431669.7', '27695886984688431669.70000000000000009834358'); + T('0.000000000018235737891993707047558745084', '-0.0000027294384492006549909198104817456693956836003182', '-0.0000027294202134627629972127629230005853956836003182'); + T('-13126.0', '0.0000616967410806266771382642088892371968', '-13125.9999383032589193733228617357911107628032'); + T('720874433286547149.29011960', '-0.0000000000175150100264717579452770317006888697250136125181729', '720874433286547149.2901195999824849899735282420547229682993111302749863874818271'); + T('2905655849177158035847281414357098453.291834904651188', '-3', '2.905655849177158035847281414357098450291834904651188e+36'); + T('0', '-1475966921783333685644104279864374261258954134383883947232', '-1.475966921783333685644104279864374261258954134383883947232e+57'); + T('472816652216998927468244178551354910167729088.966726827004415', '177527765826935.24974826329344', '4.72816652216998927468244178551532437933556024216475090297855e+44'); + + T('-274.5620579869', '78329265787241405566496082713913236369654243529457197134761863524633387852302663270044189362081880226597475301.025458805177854094773', '7.8329265787241405566496082713913236369654243529457197134761863524633387852302663270044189362081880226597475026463400818277854094773e+109'); + T('133883508068780764759485.5683529446087107456184862039990020823869300840561329290914475177233060368335', '-14.11123105188787211647630936581927502853383341149933197', '1.338835080687807647594714571218927208386291421768381797270538530966725568009590914475177233060368335e+23'); + T('-3199032706015694214818.7992938105687331661', '-7.87195', '-3.1990327060156942148266712438105687331661e+21'); + T('0.0000000000002295193152912890007348152875969581183350688584884783586480814376317641609774249', '11968142585488462774385062859935899134826448280897530108166161884029199683990896601020507477.320319', '1.19681425854884627743850628599358991348264482808975301081661618840291996839908966010205074773203190000002295193152912890007348152875969581183350688584884783586480814376317641609774249e+91'); + T('429850894793934827539600845168772.8751965913520453918272995739036873865390677578368381581396285338126446790691976041147571854', '-0.00000022801170604582813255353545523124229818428689101495876171494691321154484217536764378725027141584278379447842816929409', '4.2985089479393482753960084516877287519636334033934599916702036823215529676957354994714318086681886573146752435542874711339814972858415721620552157183070591e+32'); + T('0.12630479339914084342606977043625120835780195245007714525361728866248064543254204354136033894', '-57300622033341549450152055498951631223725420435.499102954248138500376888848777133938393663605560964812373961734244028047764768563', '-5.730062203334154945015205549895163122372542043537279816084899765695081907834088273003586165311088766712034444558154740233222651945863966106e+46'); + T('-0.000000000106720353331827', '4068913567129614779805806799030791537958519754660357531521550859320707940360600331986.6231458520200147185933974407694787756642025356767729344', '4.0689135671296147798058067990307915379585197546603575315215508593207079403606003319866231458519132943652615704407694787756642025356767729344e+84'); + T('1481.538992', '69979426854562140198395309', '6.9979426854562140198396790538992e+25'); + T('-481304712134904590633063526049619366756244902183946511856972789126658742068757286270722005910044731533367098.3473844315585478022917336214585042983934', '-9035651250061107335979601717303646.90745896455428', '-4.813047121349045906330635260496193667562449021839465118569727891266587420777929375207831132460243332506707452548433961128278022917336214585042983934e+107'); + T('5998474356563587104327566.3263164708068830115821012882772814947553985814910059469343679580428581460206', '-18057674949163421506117960386922177149977514555439908.159223871467357039682517588208442666597309817931705956866923', '-1.80576749491634215061179603809237027934139274511123418329074006604740281004162999311611718419112364407000099325550419571418539794e+52'); + T('641786663107582574187375964645432626362556087596248087198360354.064673626930039', '106200869851859350.797479350269434371025574271015473262363560762378677', '6.41786663107582574187375964645432626362556087702448957050219704862152977199473371025574271015473262363560762378677e+62'); + T('5280129522068699720461117125312358415979019162822.4201114673061632909516268898605984', '-205756343429440469562776948821275114561497830505910222682069.31376408871563202774509593696096457576461665289977493017361973671523262', '-2.0575634342416034004070824910081399743618547208993120351924689365262140946873679346904710036617576461665289977493017361973671523262e+59'); + T('-0.0000913314112194237567199921654806413644776347028968332389534560276307374133431440995704693847453686', '1.1', '1.0999086685887805762432800078345193586355223652971031667610465439723692625866568559004295306152546314'); + T('-2207121715490045.58', '-3295992738515109953967433108145888727360416859361202947062658620012196801551806622678192.686847483520554027598236734312161', '-3.295992738515109953967433108145888727360416859361202947062658620012196803758928338168238266847483520554027598236734312161e+87'); + T('61759391974251637508280834914990322126219035347147', '64943964591891233846314007885335.444346971691325618829', '6.1759391974251637573224799506881555972533043232482444346971691325618829e+49'); + T('-5540305476191589915887668399303961108947288288224548320', '0.0000294476901910227000564933914711035233697829465135452464583418791303186801762813', '-5.5403054761915899158876683993039611089472882882245483199999705523098089772999435066085288964766302170534864547535416581208696813198237187e+54'); + T('181474807531688120166683732972009536.64969213', '-3175669398983347716917468673419554.2177188765670101302869684383001638592478444069723506434104220110726821325272', '1.782991381327047724497662642985899824319732534329898697130315616998361407521555930276493565895779889273178674728e+35'); + T('-12493662650.119745851863596480945654415210619543132', '399561145206467750513891779469494975331120274361101613876792177943730662310953547064702574.65756653452860298452313916684555', '3.99561145206467750513891779469494975331120274361101613876792177943730662310953534571039924537820682665006503577484751634930456868e+89'); + T('-2166.664029173675712500257', '-0.00000000000067461152096758750665879707326349452924143528959808406172771844392251655077273026039982145730838447563291749346650348630096104418925967461686234281319', '-2166.66402917367638711177796758750665879707326349452924143528959808406172771844392251655077273026039982145730838447563291749346650348630096104418925967461686234281319'); + T('-55126691014038404667432234769742600667346582750812.76081290000540326323203936990298784699977785727177293701354598905047747033', '230955903911091180768255072886786497585594803905488997.065428', '2.3090077722007714236358764065201675498492745732273818430461509999459673676796063009701215300022214272822706298645401094952252967e+53'); + T('-12239899294934406744794741209740399921097535320596.080402725637531427417', '0.000000000000007975735707900012257888169944647551205385287889146629466680800976795', '-1.2239899294934406744794741209740399921097535320596080402725637523451681292099987742111830055352448794614712110853370533319199023205e+49'); + T('-0.00000000000000912462079748634949064954444536474698633137152955660092121181721134185040726847080723736415320180821995', '-28192491050430', '-28192491050430.00000000000000912462079748634949064954444536474698633137152955660092121181721134185040726847080723736415320180821995'); + T('5365712579646207337626428460702379954655063519', '-171091164429397358988968907423411173590072414448497446341010313844726796866187751610819558166794791576734732137347669225657216896755433103171081237', '-1.71091164429397358988968907423411173590072414448497446341010313844726796866187751610819558166794791571369019557701461888030788436053053148516017718e+146'); + T('-1981290034036713612.3587708893531360121978707494237', '438761731488571.030446306123818027751940714135233838', '-1980851272305225041.328324583229317984445930035288466162'); + T('-2755875412874743140386728151346', '2.8472810', '-2.755875412874743140386728151343152719e+30'); + T('-157.549092251345721782955172995326812019919432214305439543', '142439127771945282929407965570725127160359050662864293026220308331445962610.79480267325422', '1.42439127771945282929407965570725127160359050662864293026220308331445962453245710421908498217044827004673187980080567785694560457e+74'); + T('0.3491333927087766478511955867195720082891559879520214956234991486163801992970042826730252168795279033184196910108870648', '-756356333951812709085600894164769015473490895.271157080699', '-7.563563339518127090856008941647690154734908949220236879902233521488044132804279917108440120479785043765008513836198007029957173269747831204720966815803089891129352e+44'); + T('63261615358197872923073425992.67414929587646886049878412684052256635783684', '32232093735028677679866848653553607775797749686636316132824223211080228103818061093254438705652919', '3.223209373502867767986684865355360777579774968663631613282422321108029136543341929112736177907891167414929587646886049878412684052256635783684e+97'); + T('-0.0000000000000009295380014651692075387777504579033936499297749005685897989061480633040541931247624617087077690289771853068486993070710805656', '-74240982721590027061065744723039918113222511184444001668610337943', '-7.42409827215900270610657447230399181132225111844440016686103379430000000000000009295380014651692075387777504579033936499297749005685897989061480633040541931247624617087077690289771853068486993070710805656e+64'); + T('-38662088769617027684868436557208874287.531787', '-0.00000000000000000004404702485696046546186749454135837739919620970432790136280242735880480845505606335438999503830238610', '-3.86620887696170276848684365572088742875317870000000000000440470248569604654618674945413583773991962097043279013628024273588048084550560633543899950383023861e+37'); + T('0.0000005919093535654695188705799210533565699038', '-1050230870542550895325305037586388557344285623573695378599872476398998237594436121662.36921877939195132369', '-1.0502308705425508953253050375863885573442856235736953785998724763989982375944361216623692181874825977582204811294200789466434300962e+84'); + T('8531356548289.68', '0.0000000000010663385403102579270265567147867424805920', '8531356548289.680000000001066338540310257927026556714786742480592'); + T('-77352959873895499881.6761162233029992762254367454845614002262158269218399300505823906248006070788666306', '-0.000000763350249168968817759292626920653670602769749623937342230173000', '-77352959873895499881.6761169866532484451942545047771883208798864296915895539879246207978006070788666306'); + T('0.04585173770263682911835172946483907318715956718860423056098335799507649567731835', '-545336428117302.06514791235190', '-545336428117302.01929617464926317088164827053516092681284043281139576943901664200492350432268165'); + T('-2000777096546022469363680806530511943528746650101273997534.242598610793331542113919999385909', '-0.000000012960554065829921984561617848403788685435712387766345566655415445798299917451084000', '-2.000777096546022469363680806530511943528746650101273997534242598623753885607943841983947526848403788685435712387766345566655415445798299917451084e+57'); + T('-4637067617611402422338031964698807990446537844332708147280649406995000008716', '-3099749512371613407546572880261013353834801183114544503924317759.7679498142950006458622486041325542794064397790374869775038357487455568411693227469', '-4.6370676176145021718504035781063545633267988576865429484637639514989243264757679498142950006458622486041325542794064397790374869775038357487455568411693227469e+75'); + T('270678062855542005084307870824127678467656.762955855629442335926610514941014722825992247041', '282974792.523705817808', '2.70678062855542005084307870824127961442449286661673437442335926610514941014722825992247041e+41'); + T('-0.00000003225236579904856895487056015821433730938371824218643897684349658964835496773420825844721647906790768973764870027244455', '-0.004924810165331790880550482628308491946560589374047905819960040503118511618345', '-0.00492484241769758992911943749886865016089789875776614800639901734661510126669996773420825844721647906790768973764870027244455'); + T('-2873277.7031566090883', '369526947446567818357.08166567158618885089868282383289', '369526947446564945079.37850906249788885089868282383289'); + T('-2178986538025.6281171045', '-0.90007456268766834245637565755250114155754042861579405494550640641064108080486501982231697766610369506873393983', '-2178986538026.52819166718766834245637565755250114155754042861579405494550640641064108080486501982231697766610369506873393983'); + T('-12610827849005379185996946898193295000242048930.3057', '-50566291142615310315.413773094', '-1.2610827849005379185996946948759586142857359245719473094e+46'); + T('-0.72263391095435659584498561750405291423', '1.6716', '0.94896608904564340415501438249594708577'); + T('-0.00002308861674194925960442185653345749705673163043872636646918599512354359169533298098626366738286911364737665763586940744987791360736201819133314717054', '450814153774.5', '450814153774.49997691138325805074039557814346654250294326836956127363353081400487645640830466701901373633261713088635262334236413059255012208639263798180866685282946'); + T('-0.000000000000042613856152865288514141630996935837135169348614328862241783421937354219792185365968886244399960104759290619174907', '0.0000000000000000974480182403539706738405642564651574120855033994898433979613263953303312911354243605961011258564221775753219595811881303591336456508263682734', '-4.25164081346249345434677904326793719777572631109293723983854606109588894608942305445256482988342483371130438529474188118696408663543491736317266e-14'); + T('134411245152521998394744941365564060927709793292932748805716150.96086322753', '163717756163587942012853208387334527056988170322687172258242323330600618595724408258555875633809739823926575887736071927568012683', '1.6371775616358794201285320838733452705698817032268717225824232333073502984087693025695062057517530388485428568102900467637372883396086322753e+128'); + T('-1135858630959255507879446', '0.0000008656110212823553443864329542508631', '-1.1358586309592555078794459999991343889787176446556135670457491369e+24'); + T('-0.0000000003175675944478684925401856872596765776036876508094511873354931239253559389081387285155438349993170191128163568912691363523242026430941295514496034087951', '13806374012994737257255.1886211194405', '1.38063740129947372572551886211191229324055521315074598143127403234223963123491905488126645068760746440610918612714844561650006829808871836431087308636476757973569058704485503965912049e+22'); + T('-27708159800573272.0883231101900212685541939067996078907774725322218231069648770193298081146113593454964992974439864811', '1069672.96681867083', '-27708159799503599.1215044393600212685541939067996078907774725322218231069648770193298081146113593454964992974439864811'); + T('0.00000429880802966674008131137959417215280776628630203493369987886551523668068778978', '0.00000000077008967289490676642801409841947753617266544157841315779815188796831111777973779955219440658094362925853693153209608918067', '0.00000429957811933963498807780760827057228530245896747651211303666366712464899890755973779955219440658094362925853693153209608918067'); + T('0.0000000000000000000299565', '-73131153293465264.481', '-73131153293465264.4809999999999999999700435'); + T('133297778031366687408810593803463309652201134859997.4758048870790461770038771730220839594432975561216897245860371442353803167578892021729425784575887741', '2364940340353511166077790398873799899.851022395047720', '1.332977780313690523491509473146293874426000086598973268272821267661770038771730220839594432975561216897245860371442353803167578892021729425784575887741e+50'); + T('233341303466412748783092751385962706054310564979814063054720210979264.76320976947', '373546701810748884756.35246337986916104538633936243091901195', '2.3334130346641274878309275138596270605431056498018760975653095986402111567314933916104538633936243091901195e+68'); + T('-0.00000000000001298143460683533187542098532057471443650131347027927061505315402201377004104838055385241660827862931318282364149013913156553270415', '-3144.73816785889762413352612917538951639565049692192872179639873257494799763607259781490677831922245389370215618142714372657806598580728875889749', '-3144.73816785889763711496073601072139181663581749664315829771220285421861268922661982867681936760300774611876446005645690940170747594642032443019415'); + T('83823188981575692224309101153864758580078.5955259490170379255716122945113031579157318931038231', '-40028920687917.16848969', '8.38231889815756922243091011138358378921614270362590170379255716122945113031579157318931038231e+40'); + T('2808691776034467055726891904371173436595982589447978253042154698627671398488784', '9812791602520619.597754130838314809582665890845794489994575586', '2.808691776034467055726891904371173436595982589447978253042154708440463001009403597754130838314809582665890845794489994575586e+78'); + T('348504897735551663451493471155931032198603500912341395392663329685030763642073580083352277207617381115118735257611119505096273334530366023', '3012062864730334700837949872371998966828679.4047646544156150438268952921094746263', '3.485048977355516634514934711559310321986035009123413953926633296850307636420735800833522772076203931779834655923119574549686453334971947024047646544156150438268952921094746263e+137'); + T('93548859880851212916468686274573175909', '-75118428101074788562.506120603990328548341139932377168056', '9.3548859880851212841350258173498387346493879396009671451658860067622831944e+37'); + T('0.000000000000000000194012323991964077673853360201053367800566124970905963785098877971072180640313745271154543409391042526877924567117182739810', '0.0000000236189282059323667779215335', '2.361892820612637910191349757767385336020105336780056612497090596378509887797107218064031374527115454340939104252687792456711718273981e-8'); + T('-389202042550335503825154365205711290405537538112817615439726097659782032124231125784313789925', '0.00000003186474240443828135635273567868516420016402055460073651185', '-3.8920204255033550382515436520571129040553753811281761543972609765978203212423112578431378992499999996813525759556171864364726432131483579983597944539926348815e+92'); + T('175494756398169060188389869312520635210512554543656594330140', '-411530581933818049374887440657899352512027.09153247186642746768921170931268854307755443936717', '1.7549475639816905977685928737870258583562511388575724181811290846752813357253231078829068731145692244556063283e+59'); + T('4598950112574467183729719937465962791614617983103965921055089220439607671.599007540382070086491128969863554413197224811888258922835', '-26938781266346831074998405687771608325810543240305.7378923235384660560482541777264792878816806719888726231', '4.598950112574467183729692998684696444783542984698278149446763409896367365861115216843604030442874792137075125315544139899386299735e+72'); + T('57361809317883677060860671734348051270932088942529602386581.68900107141758948907', '-295802867132191509532524058', '5.736180931788367706086067173434775546806495675102006986252368900107141758948907e+58'); + T('-0.0000125601146369033513236980781240144461675622310937097773', '311729685945211093658295182', '3.117296859452110936582951819999874398853630966486763019218759855538324377689062902227e+26'); + T('-0.000000000000017031301308338958768641001044966021634165409838760713', '7354226011798172001332233249137409933327535976109274125337', '7.354226011798172001332233249137409933327535976109274125336999999999999982968698691661041231358998955033978365834590161239287e+57'); + T('-3.6', '-2815836861296137045153782405432811863217898809.59007', '-2.81583686129613704515378240543281186321789881319007e+45'); + T('1883757916919577797545040700765718683892962925168476980916591444220044498023865115.414486424', '-20632263651557034535417971371523039152817223695099485637652293509653426916474374628814088965383.41423390427269280942433875156452181764219', '-2.063226365155515077750105179372549411211645797641559267472712503267251032503015458431606510026799974748027269280942433875156452181764219e+94'); + T('0.0000000098475053710376389804550097928552217095921881011378913867422148039984790157547999437804576731605639912393200622917271102003', '-53035373614.717805924235005616321273', '-53035373614.7178059143875002452836340195449902071447782904078118988621086132577851960015209842452000562195423268394360087606799377082728897997'); + T('-0.0000811390350949663620350120726675225941477085450778', '-655.20852663603498591718010139782212', '-655.2086077750700808835421364098947875225941477085450778'); + T('2426894083677867432345228015404', '-101468490319724506034682885345783370059542917.575868248657413589', '-1.01468490319722079140599207478351024831527513575868248657413589e+44'); + T('0.30280', '0.000000000000000000254561077129670600967185643', '0.302800000000000000254561077129670600967185643'); + T('2460767093793617543980763007583218463976172951977824518682800860159902541914492786569.988063268009300275066475501733486973382818662', '33247165254498490053797.4453', '2.460767093793617543980763007583218463976172951977824518682800893407067796412982840367433363268009300275066475501733486973382818662e+84'); + T('0.00000000000297623885327264628872813944566975202437690710653591748231030925179641495339618475769115114527914606543143194147848430495597', '120677689870942459137299176289089761143754326820862009921425274349213001568104474801947554427316998849125038885919', '1.2067768987094245913729917628908976114375432682086200992142527434921300156810447480194755442731699884912503888591900000000000297623885327264628872813944566975202437690710653591748231030925179641495339618475769115114527914606543143194147848430495597e+113'); + T('0.00000000000000140253681305432813286110569633536186290552984308384603424304253311258844823992792716702555859199219343153509752', '0.00000000000680532732610522954462416342609639850515130341357440142880229', '6.80672986291828387275702453179273386701420894341748527483653304253311258844823992792716702555859199219343153509752e-12'); + T('-62741750762018440848873834757672851831867995632459744339895230073473.21603443732', '-874741125356670695571041484420725542382859690979070399875164371412.46', '-6.361649188737511154444487624209357737425085532343881473977039444488567603443732e+67'); + T('0.00000000000021176414395474510305287866523610550765676408675802', '256510633937671286139867882266916007823374156029717017148', '2.5651063393767128613986788226691600782337415602971701714800000000000021176414395474510305287866523610550765676408675802e+56'); + T('0.0000000000000000664215993897397955795237104020638588228731275806541568161715250236709545538098694857746988330740', '0.0000000000000072103606167686672117631228552986024686236649558161717746101379938704517818104841311722678845013668413146919184762655', '7.2767822161584070073426465657006663274465380833968259314263095188941227363642940006580425833344408413146919184762655e-15'); + T('-7562874182.83873823754546340019820202614555774800566970410202356651856', '-391433409037814397456500851811078785870089119160317598515862901999756095733578802714504574456.70518495722', '-3.9143340903781439745650085181107878587008911916031759851586290199975609573357880272206744863954392319476546340019820202614555774800566970410202356651856e+92'); + T('-0.0310379152847371895860555796583283692667844392505377548276647230042445', '0.00000082283513482603951054300917006814118588679056861856581955986306659552380016853864396371024709306483760781400794588331', '-0.03103709244960236354654503664915830112559855245996913626184516314117790447619983146135603628975290693516239218599205411669'); + T('87994958901421.56173641605454399949453740849330489135088167019977159972118641759021121261627327050792415022189885286236293442163107348031602461', '-100300365307636143430499359339922108619124158914798.44948', '-1.0030036530763614343049935933992210853112920001337688774358394545600050546259150669510864911832980022840027881358240978878738372672949207584977810114713763706557836892651968397539e+50'); + T('-1550007004.74515351306585502801', '57296100584443643484072467509091114834539973592176211806934477387549446567272546346798', '5.729610058444364348407246750909111483453997359217621180693447738754944656727099633979325484648693414497199e+85'); + T('19679349947742.994127711806874970698304897', '-8.6373642811', '19679349947734.356763430706874970698304897'); + T('54030292.9001', '0', '54030292.9001'); + T('651054592756506304745571531773834326.83644', '-13757776534587654.0116063063442543177687640729791412475434103606212206897637619312584893291977232262578', '6.510545927565063047318137552392466728248336936557456822312359270208587524565896393787793102362380687415106708022767737422e+35'); + T('-508728777596140418455412767451446817854358041268106849523.35989817998722029624762450551681595146802924988664', '-50262054005503525686132151227512844312491027044172912.40', '-5.0877903965014592198109889960267433069867053229515102243575989817998722029624762450551681595146802924988664e+56'); + T('-28915075134892302952316258686216304990690277355', '12.6179700286426790566', '-2.89150751348923029523162586862163049906902773423820299713573209434e+46'); + T('-0.000000000000000204506794915221132784856197218478429446796657919285394521228788556955524', '-86151293785140264277.3878186179195', '-86151293785140264277.387818617919500204506794915221132784856197218478429446796657919285394521228788556955524'); + T('42235147499429175944266679795088142906175521777163730652253755746712473163633468251357976', '-0.0023908655154', '4.22351474994291759442666797950881429061755217771637306522537557467124731636334682513579759976091344846e+88'); + T('591589.86', '0.00000000000000000001860329292788516991407643664465772674133322798829000748004481876019355253701810078529570613237182776549094598706836269877507206606048', '591589.86000000000000000001860329292788516991407643664465772674133322798829000748004481876019355253701810078529570613237182776549094598706836269877507206606048'); + T('-350651107084655269140529689112278274003508608230449884077441.95115833128262389', '0.000000000001117808991674427079320983053134086985164', '-3.50651107084655269140529689112278274003508608230449884077441951158331281506081008325572920679016946865913014836e+59'); + T('-39134659750772.877480206401712009933563545303653', '166958406518764640192354635927301907690317389127470622845773787156043063093969532575030322149816302478163328082727649181925765.252883933714', '1.66958406518764640192354635927301907690317389127470622845773787156043063093969532575030322149816302478163328082688514522174992375403727312287990066436454696347e+125'); + T('-172056481099057625655452551706739628179114255612273491148921284864736703885146667722.8388377144520839161622951529099672906561615777554908439149426', '-53188016746661398958851588477178244943851165029295827.73281273540583347372612339273431422', '-1.720564810990576256554525517067928161958609170112323427373984631096805550501759635505716504498579173898884185456442815106561615777554908439149426e+83'); + T('-101.2715534026922239603773241958969231368570306133332758128133966689708114732', '-0.0000000000069524253857033293796239251561117850631416003514681200491262005294123143215554850258908298728505228195487713881587714484422961615066116684637', '-101.2715534026991763857630275252765470620131423983964174131648647890199376737294123143215554850258908298728505228195487713881587714484422961615066116684637'); + T('-25333165941026', '-6.96905', '-25333165941032.96905'); + T('-23159930599967762034619306845640878338289007418537140350162347387358954515654697539296', '-0.0000000000025055077873630358869224326917384442359589577625318652368309033754969806200104209411667012418713252227441129227486821508788141961', '-2.31599305999677620346193068456408783382890074185371403501623473873589545156546975392960000000000025055077873630358869224326917384442359589577625318652368309033754969806200104209411667012418713252227441129227486821508788141961e+85'); + T('-272690054326355360717463915920945.79117473701250126513511144304624422023780335575219366', '-0.04646617289953036368927399160045218571026521306334789242996846430687659493840681112221758307480649419116688540343801556', '-2.7269005432635536071746391592094583764090991203162882438543464669640594806856881554155242996846430687659493840681112221758307480649419116688540343801556e+32'); + T('-0.000000000000000000824794592791708470343498439383184471216678775736929136783274734656085', '-15464590993770169004834442995125190019352837990780198498620045480008050531227509554782670484128441573926502719591921520634735942184', '-1.5464590993770169004834442995125190019352837990780198498620045480008050531227509554782670484128441573926502719591921520634735942184000000000000000000824794592791708470343498439383184471216678775736929136783274734656085e+130'); + T('-0.000025886438630912380429166846355627957951159888724105900108725398458013138566376225646226120608061663021', '-0.00000000000000000922559195021433452347561162265923135770528238859359860082308634808051034873284365047902141945318959511946199226', '-0.00002588643863092160602111706069015143356278254795546360539111399205661396165272430615657485345171214204241945318959511946199226'); + T('4208526064828419952094154623926319503361267122786727994718336255550699863529999970816217779807244768234375837054150463771544173571075249738067912741', '0.00000000000098970610', '4.2085260648284199520941546239263195033612671227867279947183362555506998635299999708162177798072447682343758370541504637715441735710752497380679127410000000000009897061e+147'); + T('782154833767130832317687050316770373560511399580384993381585732162357039470401244281856195.066130334377022511400443485932219487910616611626636101', '-0.00074331374743997058610568400177871943926460185889915970549597536944046651458673936138785020737671331878048877509692365190559231823', '7.8215483376713083231768705031677037356051139958038499338158573216235703947040124428185619506538702062958254081433780193044076847135200976773694129450402463055953348541326063861214979262328668121951122490307634809440768177e+89'); + T('42247383.064', '-0.0937875210571846395102908228397490109201012337594873628817471460764217967528951691863690241707606495782508382461321094202624928680498275', '42247382.9702124789428153604897091771602509890798987662405126371182528539235782032471048308136309758292393504217491617538678905797375071319501725'); + T('2576315957194062278091487692155019635858438293549959035082229215955048823715650588390178638212566542.511871428870771408965933726237972177952115', '14221275732102839762375835558162468599546489504738010046753467831312431.748866797310416772779810575075035266788827703', '2.576315957194062278091487692169240911590541133312334870640391684554595313220388598436932106043878974260738226181188181745744301313007444740942703e+99'); + T('-182341620.75963819', '0.000998366694277196028537550780159837727537078256289848938775652509142720967559421265698965121960614893238144882990784373782561165842054284561355', '-182341620.758639823305722803971462449219840162272462921743710151061224347490857279032440578734301034878039385106761855117009215626217438834157945715438645'); + T('842047793825512583448880280167368274851233502546714872003645854281826035260762377793954087704796997.25746974352168013713893221905548161407096643850', '-879630826.1', '8.420477938255125834488802801673682748512335025467148720036458542818260352607623777939540868251661711574697435216801371389322190554816140709664385e+98'); + T('-554969229244174864065407853658438.853', '0.000000000000000046413279985045478767808596461145151129534715272056', '-5.54969229244174864065407853658438852999999999999953586720014954521232191403538854848870465284727944e+32'); + T('0.0000004594903425141532404871962049647498137', '-932661375466478095759388985035813536638008334074283723919735.05355344249627897324401366029784201920498102254155227173893629037627164808010183', '-9.3266137546647809575938898503581353663800833407428372391973505355298300593645909077317310163705445516732254155227173893629037627164808010183e+59'); + T('55622408985624324409029884623142142230.3564337866286742532877692296727906360723088525106961633413366259718859274228008870960807098', '15964242335991562370631446343520536873365067961244.3048166767601763969347103883920143084337317316579770484121318738881953338102', '1.59642423360471847796170706679295667579882101034746612504633888506502224796180648049445060405841686732117534684998600812612330008870960807098e+49'); + T('4116.6343', '-13125881395295867999756142722598662945291700853448430819633768649050051199293316003551472339311180106761185979863040509.660957581', '-1.3125881395295867999756142722598662945291700853448430819633768649050051199293316003551472339311180106761185979863036393026657581e+118'); + T('-185.999886254076738335134043252415796249753374218519734071455', '-0.000000000000000001138037685382195961414405158218078543316186398616143756105152301597533', '-185.999886254076738336272080937797992211167779376737812614771186398616143756105152301597533'); + T('-198.9786279245', '1746794213.948368961266', '1746794014.969741036766'); + T('15874309893574389.8', '0', '15874309893574389.8'); + T('16588576987819.81660754169192038181188060714025162116858077319124964265625043196845919043822440466', '-89246600501318562304915309660228383388276620845488564802.496235049288379013778246594577495893634435949828063691098972563490365127', '-8.924660050131856230491530966022838338827660425691157698267962750759645863196636598743724427246585517663681404844272213152190593656177559534e+55'); + T('-127347284441930400932829141510983278557342554346089741297398296382897208587382099.5435745742690549551823615645727067', '-23318951044403467148495997370.7883388335', '-1.273472844419304009328291415109832785573425543460897646163493407863643570833794703319134077690549551823615645727067e+80'); + T('-5077543273110250868221405268190259167.97565436390533404678643216521675105958934642804771', '26014332970671415773600104084765496839411707080753222580030511682112031082495461045172183069324313539709881831959', '2.601433297067141577360010408476549683941170708075322258003051168211203108249038350189907281845609213444169157279102434563609466595321356783478324894041065357195229e+112'); + T('0.00000000725881132557751716179805811333894302315168261762649561806817469605831550855169620175635494174620728378066598111147687734973630755961025899', '434515885287.45022424035155504385780922882248468547935186640429869578572525153830676791908425738454517466', '434515885287.45022424761036636943532639062054279881829488955598131341222086960648146397739976593624137641635494174620728378066598111147687734973630755961025899'); + T('-0.000000000000005190715334165879366906953397614175481033368428717937549118481651827304967814441188123242137007460', '-25.81020207', '-25.81020207000000519071533416587936690695339761417548103336842871793754911848165182730496781444118812324213700746'); + T('-5250099.76439982', '1', '-5250098.76439982'); + T('1196038410000291625428567.6600927087933557619055721061645233907526288367', '274708477195241356599569', '1.4707468871955329820281366600927087933557619055721061645233907526288367e+24'); + T('1193283202443516969171199.42749207631310978334573154570736931304683327423627434514888492883630124033894042566872', '-2705842436304954369628829105664616526636750473333202873059187377027354726150010013782785345680025581966172299828118.857377088370514', '-2.70584243630495436962882910566461652663675047333320287305918737702735472615001001378278534448674237952265533065691942988501205740421665426845429263068695316672576372565485111507116369875966105957433128e+114'); + T('-100501387373.2156506022473571945511270816570649486799902805849591635129761139096179741555986743162675121226826359781143695356560', '-617089847302145796251638901404458614481659.476726016550865549', '-6.17089847302145796251638901404559115869032692376618798222743551127081657064948679990280584959163512976113909617974155598674316267512122682635978114369535656e+41'); + T('16333090935253715.586262', '-0.99663564938317815363068300949250859179309525545225', '16333090935253714.58962635061682184636931699050749140820690474454775'); + T('321070028467230447383995878020953.3888568546912021134358772343603579280658629722635803579108', '28832623126702540650471917064799132201501970153523973751436115142706664061743228360740052.89377744216939547659256989919800076278264836074', '2.88326231267025406504719170647991322015019701535239737517571851711738945091272242387610062826342968605975900284471335583586908485113330035803579108e+88'); + T('-0.00000000000000000003787025783187787162540090434491007131260214791563020212712224638154647089519712810087585510020487818551239718654495070616103779447174795619', '5152327951088416826370.49800740890621823749333954384917083961142478820631626896455924008645842950035037082504155566540807507', '5.15232795108841682637049800740890621823745546928601729296798602388386140619765195709217082822737322812444349508477021094696912414489979512181448760281345504929383896220552825204381e+21'); + T('-3781578965051244011802834529658700587745611157492889345003479370244990285997045726143735238169075073132478791.794030078', '-398406181131828029423189359168774589795627542.69216955808205240294903823537210247931306802', '-3.78157896505124401180283452965870058774561115749288934500347937064339646712887375556692459733784966292810633448619963608205240294903823537210247931306802e+108'); + T('-857281769723716632426451761545805487782866662040001135988125619524781917496404046.907015785954', '-0.00000000000073616976036884849929013414437985061753356336526778613936461244959197744911962137302874551', '-8.5728176972371663242645176154580548778286666204000113598812561952478191749640404690701578595473616976036884849929013414437985061753356336526778613936461244959197744911962137302874551e+80'); + T('3089627721247383947360751941786039174000627343590658682240341607417650', '-5343911762378383789737796312183683590895032635513074691383250730453', '3.084283809485005563571014145473855490409732310955145607548958356687197e+69'); + T('178191.66604428931197081347222738459872958', '-0.00000000457431668529', '178191.66604428473765412818222738459872958'); + T('-0.00000059402965420877250077049277056387386461138162956320009201234837822718242249019319520691853', '-85966889247898245.45722015', '-85966889247898245.45722074402965420877250077049277056387386461138162956320009201234837822718242249019319520691853'); + T('0.00000000000036703131', '-1690706009848928777.495021644332320103184605016856460586815056781662', '-1690706009848928777.495021644331953071874605016856460586815056781662'); + T('-1201941125816287616412820133589940378119107883736149474619667856427578308106640475701376366656637044297989392894431464368963531768836140765436577394', '30399.3500425', '-1.2019411258162876164128201335899403781191078837361494746196678564275783081066404757013763666566370442979893928944314643689635317688361407654365469946499575e+147'); + T('-5911232068256006917083493799668612278296458371177903401236223682450786815464114645404870555701', '-3666175952907291515352144888988964318204590.50095772343418568691895368', '-5.91123206825600691708349379966861227829645837117790706741217658974230216760900363436918876029150095772343418568691895368e+93'); + T('-2459545344690.7997076213355757525315040568953385869184764316593583226907', '4164315079449261632762812204636584837224819345915404704039302166.1662755649220', '4.1643150794492616327628122046365848372248193459154022444939574753665679435864242474684959431046614130815235683406416773093e+63'); + T('717000944256731362781243642636076865324406926670042', '-15881954495698535614971299471328513969444270448080565895751331092451780915657006942144214705830428876978218653.40439815564850025319446970516', '-1.588195449569853561497129947132851396944427044808056589575061409150752418429422569850157862896510447005154861140439815564850025319446970516e+109'); + T('2135955.98546847496701957917801628765161676501430902420565334363847226731093782482383515268139253106808269937151040195861', '-0.00000186143738178071752355591997816736943677781854280530890582737750128944', '2135955.98546661352963779846049273173163859764487224638711053832956643993343653538383515268139253106808269937151040195861'); + T('-2753001186629.1654476569387069958961438785379535103689665000111045009651593729849009490188549152460050154549811339425832561', '2994415432463123195.83557', '2994412679461936566.6701223430612930041038561214620464896310334999888954990348406270150990509811450847539949845450188660574167439'); + T('0.000000000000000018408379822942006989333252748149670155210581048845628953786929400969225780392593930060103', '-350080792300.4', '-350080792300.399999999999999981591620177057993010666747251850329844789418951154371046213070599030774219607406069939897'); + T('5854211899389381506945331507818660152894470704.9769422579022684177921767417413505638887249265068371213031063935537133330368277125538929754', '-6238089', '5.8542118993893815069453315078186601528882326159769422579022684177921767417413505638887249265068371213031063935537133330368277125538929754e+45'); + T('0.000000000000009383448945864756120696895884403358543889635556010530179055321923499853947812003801655721924', '-19052898127325499710380.9743286252434506021419112451035829611583', '-1.9052898127325499710380974328625243441218692965380347462264262415596641456110364443989469820944678076500146052187996198344278076e+22'); + T('-17256820969785465284434808952852690245011499274233791647620649273158761764638386391819039.862028829339196251615676315363239', '13.156452841246543538', '-1.7256820969785465284434808952852690245011499274233791647620649273158761764638386391819026705575988092652713615676315363239e+88'); + T('-665097561.949707', '-2162357984514826.9250074134451642962816183', '-2162358649612388.8747144134451642962816183'); + T('-1787583563218949877447505176411981054278266273447362590023794164049587059.8952802595404997239841103802373009222385203752749', '0.00000000000000000760974939459', '-1.7875835632189498774475051764119810542782662734473625900237941640495870598952802595404997163743609856473009222385203752749e+72'); + T('-97829644134932448583893137101111730259820.05765691989', '-0.00008062307539130036460992642410736502245711006627314391776591134965421657938611242879211258420030106690367460157448425', '-9.782964413493244858389313710111173025982005773754296539130036460992642410736502245711006627314391776591134965421657938611242879211258420030106690367460157448425e+40'); + T('176.49118337833630469590257828139881196863600409523', '35933.6589226268793460337176730393325086784341893690115486029833220604354746534', '36110.1501060052156507296202513207313206470701934642415486029833220604354746534'); + T('2317.37783', '-33432.9207570414', '-31115.5429270414'); + T('6637712385532453617053848832374521936910779.70621790725066804869722068097', '-2227675488368.765036410422350452356577021856408570307494950931297002601448393249899536', '6.637712385532453617053848832372294261422410941181496828317596340643659113591429692505049068702997398551606750100464e+42'); + T('-29796953630.4913026375328064186913399668764', '183881988687448174550.05812049319254873917759915275571715311496797038130265358357168647155176800096292869421', '183881988657651220919.56681785565974232048625918587931715311496797038130265358357168647155176800096292869421'); + T('13199507764.3046118900484236', '2889.225410430843647396962046960496506372239727670782057756607', '13199510653.530022320892070996962046960496506372239727670782057756607'); + T('21296975756.7155683578416319475809678174056385498809428133837225514886696657380', '-12089429986715170910650388697796567002415981764555993502477488839251139863938357832329451138126477861065923975862099475655105604012728', '-1.2089429986715170910650388697796567002415981764555993502477488839251139863938357832329451138126477861065923975862099475655084307036971284431642158368052419032182594361450119057186616277448511330334262e+133'); + T('-10171266580517816.0917067510409', '315013465687559910813490005858570828704.32710226291611151322994451850467532608107794030518681711210056375276848', '3.1501346568755991081347983459199031088823539551187521151322994451850467532608107794030518681711210056375276848e+38'); + T('-104378676461688732476982045085768915711531135396792471359807651838019425066099516.3887940021256850', '-0.0000000075463669108526190909746406521772574', '-1.043786764616887324769820450857689157115311353967924713598076518380194250660995163887940096720519108526190909746406521772574e+80'); + T('-554004567.5248864688113348892343007508509027941489605', '24036.8693849642440730', '-553980530.6555015045672618892343007508509027941489605'); + T('-0.13862781295596173373834834617362885552230456574647246122144469327684018389680003345722428926923436849384730389514581111500008577', '999130309696269960369411189504977138022060325178635804383777964396643757881930599444544232699066835337985580790738', '9.9913030969626996036941118950497713802206032517863580438377796439664375788193059944454423269906683533798558079073786137218704403826626165165382637114447769543425352753877855530672315981610319996654277571073076563150615269610485418888499991423e+113'); + T('111333740621290857055005859873614448428448428149963.63294760371993029666150267467043126547986051822019939851697686673961129595', '4999995459444511596846816663006330762507788928567760', '5.11132920006580245390182252287994521093623735671772363294760371993029666150267467043126547986051822019939851697686673961129595e+51'); + T('0.3638494649282355263819067061458269397737971067286076619347353611281169315189527491523244687688286', '-1790006094624306575957063565992185307582798107924013187.71', '-1.7900060946243065759570635659921853075827981079240131873461505350717644736180932938541730602262028932713923380652646388718830684810472508476755312311714e+54'); + T('-505517596445.1482', '13658590629245746', '13658085111649300.8518'); + T('-0.0000000000000000003526114927031853853794194624925423016782264', '-3648850034079477562581394480009152297642761812144625299013120030846235.2420343951205906', '-3.6488500340794775625813944800091522976427618121446252990131200308462352420343951205906003526114927031853853794194624925423016782264e+69'); + T('11151882673607076860108980480685547378102216722783817.5164597052664085858745970369334', '75.19', '1.11518826736070768601089804806855473781022167227838927064597052664085858745970369334e+52'); + T('721971138118087482240206073369515811598326847978080496736102280373630157207437819185711943223296522977798907649465741783364603042045658293259.583212980', '-140176921692721492746085636102764157797617196402727800746784082298282387.90860726314021850408568982802', '7.2197113811808748224020607336951581159832684797808049673610228037363001703051612646421919713766042021364111003226933905556385625796336001087167460571685978149591431017198e+140'); + T('-1.4681874863', '-3367963466800407715599.44244519159656022505642088971735092327417182287381', '-3.36796346680040771560091063267789656022505642088971735092327417182287381e+21'); + T('-0.0000000000000004372619977839161258710643393271233757307937114407266184997518559013565243060131612462006611450037791975727499469', '-0.000557380206825781899', '-0.0005573802068262191609977839161258710643393271233757307937114407266184997518559013565243060131612462006611450037791975727499469'); + T('889975261077.730985', '-444512813658612993665287376887226223666949336282284327.65111812283484181956398112803471368231154715336519231346350829789199178743774349985755167017', '-4.4451281365861299366528737688722622366694844630702324992013312283484181956398112803471368231154715336519231346350829789199178743774349985755167017e+53'); + T('4228.494108579658047102292', '0.000000000000000037431967516705914275', '4228.494108579658047139723967516705914275'); + T('5081895821751331032957687842323663780819055.0589539655583256', '3045235045891993287321120869322585059630654297351523276745951018307395.66088948484478706336724055686328883825124984361740259408994712721', '3.04523504589199328732112087440448088138198533030921111906961479912645071984345040311266336724055686328883825124984361740259408994712721e+69'); + T('0', '0.0014970897348316271399696665513926791886689361148588977237211047578120594034554421644608967215193', '0.0014970897348316271399696665513926791886689361148588977237211047578120594034554421644608967215193'); + T('-38086604857440351908282393909820732805333576481045075753031751734398766308', '-8466726560595694017777483540348440264157355649896385800844069368330876512659274241703013842599067504442486011483149390298', '-8.466726560595694017777483540348440264157355649934472405701509720239158906569094974508347419080112580195517763217548156606e+120'); + T('3.606', '-0.00000000226457426250954670156179129629125380257442683372667979', '3.60599999773542573749045329843820870370874619742557316627332021'); + T('0.00000000002432', '-2721049388922460690679999802237503439420773586591695831186196683218833781609933786136614218796838155186664711199485697050894450944907939921399737566841', '-2.72104938892246069067999980223750343942077358659169583118619668321883378160993378613661421879683815518666471119948569705089445094490793992139973756684099999999997568e+150'); + T('3419034647852504243.4', '0.00000000000000000001109196145046743', '3419034647852504243.40000000000000000001109196145046743'); + T('0.00000000000000001986294624152158258216394967520873041627413436833216557224760286108648966762394958388810402835384523225417563557', '-3796809284763021958367848219266230972066614510710559054.1146025612649983495607541466475364622687018577099048021869', '-3.79680928476302195836784821926623097206661451071055905411460256126499832969780790512595388010475218250117438591276563166783442775239713891351033237605041611189597164615476774582436443e+54'); + T('-204798018073795.6529529448002736801844846511974520623046560206000445277488879317921030460527861542787789702381941427349799245079342628083413', '-0.000079632857050636167683223005840115134570250229161360215975374259917315308577662215961670005725116845981841223176067219103818019091320131665778', '-204798018073795.653032577657324316352167874203292177439226270829205887964863306052020361361363816494740640243919259580961765731110330027445118019091320131665778'); + T('50550.28', '2121486761751437744953605262799815319.26905', '2.12148676175143774495360526279986586954905e+36'); + T('-889419638834002225522284149508929700476.172650890', '-424305840473677688810924633337769721763339720196709604554205748170445987058261155373223662505888873.82144770710851718819750629065194', '-4.2430584047367768881092463333776972176333972019670960455420663759008482106048667765737317143558934999409859710851718819750629065194e+98'); + T('-40760.965467', '-18942690834.2607446380197806', '-18942731595.2262116380197806'); + T('-21150396424144685285717528391770170039197157268878001492574230326386339596909894.1137843235394802222980337381818083735', '-6846760956505006842349358088765499381514.63658', '-2.11503964241446852857175283917701700392040040298345064994165796844751050962914087503643235394802222980337381818083735e+79'); + T('-5', '0.07853343679663140617550934559203677556312857282298714862538145367932278351423091814533627541733407490114923772813040559584747319434161156', '-4.92146656320336859382449065440796322443687142717701285137461854632067721648576908185466372458266592509885076227186959440415252680565838844'); + T('-1298989.19', '12967839159417800347248402834223327087001590.131521073718772815256761575699', '1.2967839159417800347248402834223327085702600941521073718772815256761575699e+43'); + T('-413624643703430579993792415.246', '-25047788866699.6065823802634', '-4.136246437034556277826591148525823802634e+26'); + T('-17002802435731054578579213050913648941015840438503895311063267366815.4760438', '0', '-1.70028024357310545785792130509136489410158404385038953110632673668154760438e+67'); + T('-0.0217487468807944116026287464540188864099826755097763413913523783549695801368408124880816141876938600', '-267928116215095659487396148857045537314243422826493604265786416560942224473274359760818137268229757952314852408659289722', '-2.6792811621509565948739614885704553731424342282649360426578641656094222447327435976081813726822975795231485240865928972202174874688079441160262874645401888640998267550977634139135237835496958013684081248808161418769386e+119'); + T('0.00000206058115026074270537347836316498830244149457757397506761076895276562936750930508221328', '-1156.25131151512762526101028', '-1156.25130945454647500026757462652163683501169755850542242602493238923104723437063249069491778672'); + T('8.52146', '8138996167927465829623641115119430224272617006293469478795384788419955586210311969.0911005211', '8.1389961679274658296236411151194302242726170062934694787953847884199555862103119776125605211e+81'); + T('-606792703514189222432342591095705024217062979215281726656222323623605437267298163559450093248410482334853425555387131742072494232274', '0.0000000000000075030205599538617170140424842633341870457951188905504524861678938064353730637261119815417488091644638014246916703266791', '-6.067927035141892224323425910957050242170629792152817266562223236236054372672981635594500932484104823348534255553871317420724942322739999999999999924969794400461382829859575157366658129542048811094495475138321061935646269362738880184582511908355361985753083296733209e+131'); + T('-1117646260533756972074615305111827894317502144279827222046925514965408293805196205607164567542139844488130299', '-8950710397293888186512785146937760727214387326213534247514635587853382873562774281822836130052011695722019446354140619086496577801', '-8.9507103972938881865139027931982944841864619415186460754089530899976627007848212073378015383458168919276266109216827589309847081e+129'); + T('17828132133.73128014639', '0.772844155917667013531128306734169323', '17828132134.504124302307667013531128306734169323'); + T('12409597293458966562697810991027046599347924039429686698803091382', '-127221396169370244097597696512688383579380113278994929674479641504219148260281326655899637.2600931768649107131099205359376530727886079199210691234204076', '-1.272213961693702440975976841030910901204135505811839386474330421562951088305946278528082552600931768649107131099205359376530727886079199210691234204076e+89'); + T('0.1848091145595494469555974732282088098544574667848', '-136107941934475938.0155896841', '-136107941934475937.8307805695404505530444025267717911901455425332152'); + T('-248947197724784384796094883777245432118187542578980970162991361.8625105461901333288766567084315189172715325691802', '1377349914239986.46343962270751134940329738658340912130', '-2.489471977247843847960948837772454321181875425776036202487513753990709234826219794733593218481097959715325691802e+62'); + T('-0.00000112660065275108830213180725478020363833427172529177370245297090375761920', '6361232368958886237.15488020607904', '6361232368958886237.1548790794783872489116978681927452197963616657282747082262975470290962423808'); + T('168065941825836172215.28538451779543155718349924675090', '-10020380537725454351590492009621817226308186635527799419512419.1501669170488428784662186956119820551', '-1.00203805377254543515904920096218172263080185695859735833402038647823992534113212827194488610820551e+61'); + T('25062938769541121.630478568522733066136124658086663843828053304849719245047', '2168109004490.945949015343314182595182591703278150478193635235835903', '25065106878545612.576427583866047248731307249789941994306246940085555148047'); + T('0.0000000127998547493889280163892364925927466380437055151407280212547688372695203587233106472126969776111613683412368835630499322381390265', '-21556437448948972049.5307444304476294707119579088623127759607498145900023581252', '-21556437448948972049.5307444176477747213230298924730762833680031765462968429844719787452311627304796412766893527873030223888386316587631164369500677618609735'); + T('-537626025690553743403625600240698190650679101924299218506047682820.61793992322367129916021469763743818692611951563337836906205744108', '0.000000000000078704422482734288110772342341176900316159707688584083247052769004920995218116598172244299647861085206345', '-5.37626025690553743403625600240698190650679101924299218506047682820617939923223592594737731963349327414583778338733062209354368856996752947230995079004781883401827755700352138914793655e+65'); + T('4936866312604172729288711401711374147250', '655874195881897624287118400860713782095501006074749065044610537625092.95069141905913994401259276838353408866', '6.5587419588189762428711840086565064840810517880403777644632191177234295069141905913994401259276838353408866e+68'); + T('-2382178805319965099104798246704598336951576480741895282006149578757854993414213685118', '-0.00000000000000002613467607235150454275071440605158933185803781754976383299500468377641084642463280487309618916557583346059257437473874331', '-2.38217880531996509910479824670459833695157648074189528200614957875785499341421368511800000000000000002613467607235150454275071440605158933185803781754976383299500468377641084642463280487309618916557583346059257437473874331e+84'); + T('-15946824.09950277073438320718451422330046117375794902861875105613916239700142602', '-0.00000000000010267855303483749668481765879881882622179514', '-15946824.09950277073448588573754906079714599141674784744497285127916239700142602'); + T('-581425628881991347289393948535594023431644044950894384975254331720033.7644030704523982311900267238328134677', '-999805005439068442805051046377911526225724977745109030159313147640897377464.83555602537429836574687154635825719', '-9.998055868646973247963983357718600618197484093891539810536981228952290974985999590958266965969368982701910706577e+74'); + T('60413295.642986556398', '-4226075045367317431795623702749235954814399556250656668352316.5728962846147542124931735298180367334281333643494998', '-4.2260750453673174317956237027492359548143995562506566079390209299097282167542124931735298180367334281333643494998e+60'); + T('-81794690209841974740.53672088428717597735688956390645130995150579644016165479898744379', '-7.88107898048618399872607957392671978662', '-81794690209841974748.41779986477335997608296913783317109657150579644016165479898744379'); + T('-1997717463163142285894367278389823014470638.3025530535651929616090187971946674805858924875948817390067051806853814519986698027983653385', '6', '-1.9977174631631422858943672783898230144706323025530535651929616090187971946674805858924875948817390067051806853814519986698027983653385e+42'); + T('-304875626379421812877053824267.89813338244318006612477499081284272413190571121891074444720931096507130284584180247091056', '-0.000000000000000010980103787919551156900136233767434931235794906561314315549096503926892808208116475271649840370149590820545219560834375927', '-3.04875626379421812877053824267898133382443180077104878778732393881032041944986345675683004217526385618394938306397803368208116475271649840370149590820545219560834375927e+29'); + T('-88815210861255646356014368338106338503849425126132.285406775673561905065', '0.000000000000000034992420410611731246495160913', '-8.8815210861255646356014368338106338503849425126132285406775673561870072579589388268753504839087e+49'); + T('-0.00000000000000237643259847411171950841188633341948147021355426920101030032158183296245118336593123026984501161674321953387313970740020', '-0.0000000874212145702142670184949308326411041422527293858413318840288404463319361607051392899032509388086790', '-8.74212169466468654926066503410529904756722108560548861532298507466535179936675904732691821690785240116167432195338731397074002e-8'); + T('-0.006555884028715480652', '6930118317156.576980190277', '6930118317156.570424306248284519348'); + T('39.384744166791242957726294455842839425402642808858550449900179430725398075422668018325305226767828926369540183994331444452642090521391283', '3260986081387.207629495556353019281390351729387452232726', '3260986081426.592373662347595977007684807572226877635368808858550449900179430725398075422668018325305226767828926369540183994331444452642090521391283'); + T('3908267232516297546694850213843945511916410859719238136818722842077.27108076292427902546404238314424734106746892397683459219351842029663495194', '-0.00000000000372286358808905369841368779659136965109619662993128616667816952276941560286526066255037987308726016479323693533782656017305522143883165700131792', '3.90826723251629754669485021384394551191641085971923813681872284207727108076292055616187595332944583365327087755432573839556358713412995678241723058439713473933744962012691273983520676306466217343982694477856116834299868208e+66'); + T('-0.00001556397239423792402602941437191887477933365239361893990546595775376870987107277583', '-1732082517354208969230613795180012699705122410188783671659220771290170536520910', '-1.73208251735420896923061379518001269970512241018878367165922077129017053652091000001556397239423792402602941437191887477933365239361893990546595775376870987107277583e+78'); + T('20451329027854657865397803520110269731953546381423082243753661273233534094096458728774066484280346143633534282606929883', '1.37062391834155371473359912213772362707849619840251030918103616690753987794703765279270817110400101918287849263050336091', '2.045132902785465786539780352011026973195354638142308224375366127323353409409645872877406648428034614363353428260692988437062391834155371473359912213772362707849619840251030918103616690753987794703765279270817110400101918287849263050336091e+118'); + T('-9873613763574093.9169949677113266651552362204071722363114406302496589482078244525416517', '-546631047066885391316821969502606459323760036081517906369260562129.5282969018129257869570273191088510708842914399537183835952083014376', '-5.466310470668853913168219695026064593237600360815277799830241362234452918695242524521122635395160233071957320702033773318030327539792517e+65'); + T('-720103743977684216550279573635737782.371525679181701893280139772', '0.00000000047196', '-7.20103743977684216550279573635737782371525678709741893280139772e+35'); + T('-124523382475.065647339231367286548664060598351481238512537358040678937053065205', '267195207211327546143.99593799833381494', '267195207086804163668.930290659102447653451335939401648518761487462641959321062946934795'); + T('-669248421565027510098621757579904855957549198616536004694615.801532771296796860509827700071860799103269705247335116543', '333905925959634844', '-6.69248421565027510098621757579904855957548864710610045059771801532771296796860509827700071860799103269705247335116543e+59'); + T('74741.757595631932381120479050874298796374442246866101939364', '10920811144639.430670345', '10920811219381.188265976932381120479050874298796374442246866101939364'); + T('1170639975951201522249787446299288957.534087576257621574901157627904404', '-0.00014785053034279838988159517', '1.170639975951201522249787446299288957533939725727278776511276032734404e+36'); + T('240641615318369852633021813201283453473338354696847465428407816540707799946328465329158700582983365200972956128970708198340862470221701303619', '-0.0000000000000000069337247648616552808723398415008620822832893391786175057036755718378355', '2.406416153183698526330218132012834534733383546968474654284078165407077999463284653291587005829833652009729561289707081983408624702217013036189999999999999999930662752351383447191276601584991379177167106608213824942963244281621645e+140'); + T('111714245279259151600970278454866645262571826000337873347902770371946919658476476.581635152136516883108103196', '-145713944701659169049317661586406655886350.64439112401759220725326887023191998402271373838960301529', '1.1171424527925915160097027845486664526242611205563621417885345271036051300259012593724402811892467585483432576808001597728626161039698471e+80'); + T('0.00000000000000000011659916431504181998777280021990151674872574004317563534059818105024140361220410041950905384756907730822832402571557634171797064450234198869785', '0.0000000000000034973095978104435865425237181247213055722049975492', '3.49742619697475862836251149092494120708895372328924317563534059818105024140361220410041950905384756907730822832402571557634171797064450234198869785e-15'); + T('5208299735981215934383073700988540115', '0.00000000008193999192179', '5.20829973598121593438307370098854011500000000008193999192179e+36'); + T('-0.000000000000287395113688235501898364131112180654248398999683488052724240112623987258282732482937', '-0.000000000005224156433448505010390917879000913540363966165400734673984060714544377832355795421', '-5.511551547136740512289282010113094194612365165084222726708300827168365090638527903937e-12'); + T('251290.029', '0.0000000408265742458950413927784669187015196483849964746', '251290.0290000408265742458950413927784669187015196483849964746'); + T('-0.002069526456699789023016398781994820749838585707371628', '-208989.20687136738198249707358292330050304648320312788', '-208989.208940893838682286096599322082497867233041713587371628'); + T('136830053104872291586007040221524635644507855229364036.990085839244669865877563203743313609845467275010746564518697656354953714652400', '12996360060717584879190082832087158897977012928919981.1724803374445157382323851607362941658942137', '1.498264131655898764651971230536117945424848681582840181625661766891856041099483644796077757396809750107465645186976563549537146524e+53'); + T('349923146008625248221940071805133632424745448085367309153304.41451', '1.279845995348543772724126048570984529358929917199046395358884958125978504501534072647803741667566840006664141118201898026492588582829', '3.49923146008625248221940071805133632424745448085367309153305694355995348543772724126048570984529358929917199046395358884958125978504501534072647803741667566840006664141118201898026492588582829e+59'); + T('-0.00002588190901774483141446130106109665568218409839877790718167670204180165388892638488618624373249215908731', '-0.000000000000000998380445484244673146797637364810042331013877503942848237747500650941845596181353662072946500712838803596129029770361640568986086478118', '-0.000025881909018743211859945545734243453319548908441108921059180644890039401389577326731782425086154232033810712838803596129029770361640568986086478118'); + T('0.000002397702115545082706325', '-0.86184468879219410762921439972937635313400330685547662030210928411728749240902108881486043419424702673819765398803611924680684916244185716500', '-0.861842291090078562546508074729376353134003306855476620302109284117287492409021088814860434194247026738197653988036119246806849162441857165'); + T('739247350528774318310976592372378823989.9340970329512293', '0.16461323830286423518914252503718472208992620706491311143767005406182583700046088073642382183228439964918345692170788', '7.3924735052877431831097659237237882399009871027125409353518914252503718472208992620706491311143767005406182583700046088073642382183228439964918345692170788e+38'); + T('20138770597416725450254724328732818742267620348802456988572150217738319484193183724229804103329780221759485486678', '-789269493613323078997155252278243776415270697547093524400899466707939123164245744251', '2.0138770597416725450254724327943549248654297269805301736293906441323048786646090199828904636621841098595239742427e+112'); + T('0.00000000000000000077718007226574178859573156113273718366023940333047610', '0.00000793842663906287702694882951591808277980436371652228248293328108479174722056639404425886138539535746075798843345', '0.00000793842663906365420702109525770667851136549645370594272233661156089174722056639404425886138539535746075798843345'); + T('-0.00073004266755307447297787100885736643137065171791847775170199', '533767943554264575564059388781105481229849071443170662645468384072829601890382711597239.43317227373401753588313752941835310264692801', '5.3376794355426457556405938878110548122984907144317066264546838407282960189038271159723943244223106646446141015965840949573621555735828208152224829801e+86'); + T('203795797050226528701909939354095.74227652473566285394054153851636316880904908195101127405638217584507290263629702856344914721596751573682519', '1048176497643', '2.0379579705022652870295811585173874227652473566285394054153851636316880904908195101127405638217584507290263629702856344914721596751573682519e+32'); + T('-88244004722847480146822008275080880695915873140049053843555316989873895145229459150435483330020885756477515260816717989568792030863738799712004', '0.0222020450217264733443', '-8.82440047228474801468220082750808806959158731400490538435553169898738951452294591504354833300208857564775152608167179895687920308637387997120039777979549782735266557e+142'); + T('-245.330813553080793', '-139455315144533860778775215600928891795189892914202233172560603256768538146961881693882554366322835347536572308601', '-1.39455315144533860778775215600928891795189892914202233172560603256768538146961881693882554366322835347536572308846330813553080793e+113'); + T('1312620952926614444601139109837919862847383911012476338291408744344284710456350.61901295', '0.000000005001841441858025051749066429', '1.312620952926614444601139109837919862847383911012476338291408744344284710456350619012955001841441858025051749066429e+78'); + T('-0.00000002568121501817024789950645', '0.00000152064801516710974357034365714164447372286990018294642975122815566995939556502510124016256086916899095831799319898986550479847', '0.00000149496680014893949567083720714164447372286990018294642975122815566995939556502510124016256086916899095831799319898986550479847'); + T('-50146741.71136917438523439037364041570643531039880309166796', '721.58', '-50146020.13136917438523439037364041570643531039880309166796'); + T('-0.000000000031373829058590280763397830914839643150936549070276134150319113360057425916282823335964570132205357792953166020744035018731306854352936', '1209934516502680876038974890161267538909081686211586564144614326182360480572106031540130067011132046106334621001880794855659284874', '1.209934516502680876038974890161267538909081686211586564144614326182360480572106031540130067011132046106334621001880794855659284873999999999968626170941409719236602169085160356849063450929723865849680886639942574083717176664035429867794642207046833979255964981268693145647064e+129'); + T('-13404342125936188871742118602022353067169949299128900358060758959144.618999657876884344030397439486785962997196322120897869261859638385586348924333', '-168915526978312.650128129957132282649873584573819887866036969239069391528581261172175429771', '-1.3404342125936188871742118602022353067169949299128900526976285937457269127787834016626680271024060605850863233291359967260790440899557761778695333e+67'); + T('1806842795835990618047801.084576277957835712505618234152320757352128501462413034062746347', '-50734288417028257924421286860848404602443885854272475391326979005189668017648768244414775061314743386961522762.585374718651305701111', '-5.0734288417028257924421286860848404602443885854272475391326979005189668017648768244412968218518907396343474961500798440693469988605381765847679242647871498537586965937253653e+109'); + T('-116120201222725247610527954599536747256108402740643449687724143269086567616449171607864628957429974416', '1148190510672125444192340349744778820699595561256574541295058422369656677509037208045122028374935585403541656043987495821745', '1.148190510672125444192224229543556095451985033301975004547802313966916034059349483901852941807319136231933791415030065847329e+123'); + T('-665059516301467503087062204795807129205981985820520012687625179.56870702735969931519884226663966750454', '293092076876324270859.1678050313417760917885816996452', '-6.6505951630146750308706220479580712920598169272844313636335432040090199601792322341026056699446750454e+62'); + T('-151941033837572720599600925337962250720110163460498264898016203736097072978877965550197312865391818', '275519398845322762752039373616165590950134853231913357677442.98089023579266433338582691582272222226713269975686273608935285642960', '-1.519410338375727205996009253379622507198346440616529421352641643624809073879278306969653995077143750191097642073356666141730841772777777328673002431372639106471435704e+98'); + T('774.27298241935872782935734853935110700980034942643', '-2335613505940656938918706780962782666653609805431040481805.54016', '-2.33561350594065693891870678096278266665360980543104048103126717758064127217064265146064889299019965057357e+57'); + T('-0.0000000000000000003606517118223376107369897317076138705797620611885910564859903965167670077845554058709312065326542523687696158170393314', '-1057235201.5625889131220869434', '-1057235201.5625889131220869437606517118223376107369897317076138705797620611885910564859903965167670077845554058709312065326542523687696158170393314'); + T('673588976883236537490.1143689352121199626156550908385672312863492899095087287923630764608919202964646650938598591666124915', '810684376454419924392927167848507180923498918725351613660889567923.47605095181300135828', '8.106843764544199243929271678485071809234989193989405905441261054135904198870251213208956550908385672312863492899095087287923630764608919202964646650938598591666124915e+65'); + T('-3430020671178955527172622925417363583260241197.62027095120829845', '-2697651899209144982439207207158758256041163754489319553122389855760271821650344473467567943237904607070691739749282365941241955206', '-2.69765189920914498243920720715875825604116375448931955312238985576027182165034447347099796390908356259786436267469972952450219640362027095120829845e+129'); + T('0.000000000000000000386684190', '-0.00000000000000593500383841354', '-5.93461715422354e-15'); + T('-229553467063496173115623569488071051955397518369782894211290517387417359092419.21316953918885760546743923347047910041156791448271162', '128761823394.73391412805150185026077404187271056727840511587820472574863102356882320762518910948767394645397112340047229286811934703310025622306', '-2.2955346706349617311562356948807105195539751836978289421129051738728859726902447925541113735575520666519159776853313316279860450689425136897643117679237481089051232605354602887659952770713188065296689974377694e+77'); + T('752803651337807242880562206786.554894468', '-0.000000000000000001071337', '7.52803651337807242880562206786554894467999999998928663e+29'); + T('1327499528941.259705731396165260452862352568124098842440934493864336643088192293192971501913307764464886787116200010928852119632015468364', '-0.0000013012400459295541997244614408586478387764368200', '1327499528941.259704430156119330898662628106683240194602158057044336643088192293192971501913307764464886787116200010928852119632015468364'); + T('-42732826522401556404680286738458727450161584.56982929732944313055951751542753245303762787700081314483', '-0.048575929228921161125311723255416867769014200391591416962565880220141310', '-4.273282652240155640468028673845872745016158461840522655836429168482923868294932080664207739240456179256588022014131e+43'); + T('-134317115975228516279277369440412329142525813492681218176.452257906478095711445159604268249481814005710', '878.87016124066018104272829846171161822902416', '-1.3431711597522851627927736944041232914252581349268121729758209666581791466871686114255663125278984571e+56'); + T('-67249264605177190041089081168585468792215793614566298512516668756953699746352828585714616446517294544062645676845293.91', '11785.189223441658736456882609485294922576241169', '-6.7249264605177190041089081168585468792215793614566298512516668756953699746352828585714616446517294544062645676833508720776558341263543117390514705077423758831e+115'); + T('473845447573029801116507496764870227913948278575637638312271.6929093', '220256599636715846396470132047447071430762023364054132738307.92410966839175642212437153019718871180', '6.941020472097456475129776288123172993447103019396917710505796170189683917564221243715301971887118e+59'); + T('61663987226727831177358451280.1273785663169955851813593', '7750.4529567880816153892714518857989477603684894511929835815714039337396479', '6.16639872267278311773584590305803353543986109744528111857989477603684894511929835815714039337396479e+28'); + T('1114249782085628259131.6300784647405324495788', '-75441254269515041497240125862191629.18821756865035216838014718712510162118417621758193335236088548825411631090241783', '-7.544125426951392724745804023393249755813910390981971880134718712510162118417621758193335236088548825411631090241783e+34'); + T('-47284766640683124441541777476988779051324489666892557826451642191773394572968326419750395845015488519009501143710.226604466706051616676759471', '-178533979356035013007.0486021615920523090681110580689173330395242698234732472413898657172920542549863', '-4.72847666406831244415417774769887790513244896668925578264516421917733945729683264197503958451940224983655361567172752066282981039257448705290689173330395242698234732472413898657172920542549863e+112'); + T('86971785918916738535599981140236508672686072922404606596498347463786815664561636214', '-38790942580106273917029.8616351336817911518100068189254182509141591442742642', '8.69717859189167385355999811402365086726860729224046065964983086728442355582877191841383648663182088481899931810745817490858408557257358e+82'); + T('229890914939905533517994656115939439222611214166185047720.6737', '-16450908510999308489324339587686508934693633813727800191296126619327316733314370883200772189175967292716357616129.25956476613892564270457543510303499', '-1.645090851099930848932433958768650893469363381372780019106623570438741119979637622708483274995335607855017256840858586476613892564270457543510303499e+112'); + T('8624299879022265728690568197694576473349674764163914006555775202613.80066', '-1951918312957524571038442996130836809607213863913860985460832910117284832599299718784244014.9462', '-1.95191831295752457103843437183095778734148517334566329088435956044252066868529316300904140114554e+90'); + T('0.000000000001791442922101442150265', '-176219478666778.39032', '-176219478666778.390319999998208557077898557849735'); + T('-0.0000000000000000000450909281658069443034906463413806497945746964537569542795485785087816', '20059612657232793812777346178916639350613903200274271932748642060630002343102688319925466687857659887751178879826484844955146.4794139791133416216349437', '2.00596126572327938127773461789166393506139032002742719327486420606300023431026883199254666878576598877511788798264848449551464794139791133416215898527718341930556965093536586193502054253035462430457204514214912184e+124'); + T('-6787468140564734605294950923721904660396026978942519331890016886817683748193913278435340067132052148355490986326961525834411933314297910293075891258', '299875808414865644293530981481903399783597394891051377970871372993113352087', '-6.787468140564734605294950923721904660396026978942519331890016886817683747894037470020474422838521166873587586543364130943360555343426537299962539171e+147'); + T('-2985845195375048154175460145131625566631330811.0698198381350592343482301558903611521655008133682589725943686764286694288782', '0.0000000000003440896409210193126584537498187185057931457434599306493995078695234961055215715664902', '-2.9858451953750481541754601451316255666313308110698198381347151447073091365777026984156820948624658268509087457792699210086765038944784284335098e+45'); + T('54523776480140693828539812402923.03280118600797412859863998481055730526509253892247361691821925554', '-3018017693744641785170272539537468727331662967020516461365187921.622252481531570142507295', '-3.01801769374464178517027253953741420355518282632668792155278499858945129552359601390865501518944269473490746107752638308178074446e+63'); + T('-148950590810862085091278929767052107224.8773813216218095795711623868958220961874', '1.75192', '-1.489505908108620850912789297670521072231254613216218095795711623868958220961874e+38'); + T('194487565128888901387639549948511413965636783508366826662059481869489007007469884500747433533356290730733602216171', '0.000000000000000000012232074647167060238846099337052578273155522711981842441546203086466766954706886327921', '1.94487565128888901387639549948511413965636783508366826662059481869489007007469884500747433533356290730733602216171000000000000000000012232074647167060238846099337052578273155522711981842441546203086466766954706886327921e+113'); + T('125779680121395715709804872384269463897503936971384019.82361436591484229964552907887172032', '-10705813706184352649413600364408885130948697893', '1.2577966941558200952545222297066909948861880602268612682361436591484229964552907887172032e+53'); + T('-2218129701029502833268536.3661385527823829459113120296928740', '25227558478464802399374718020711143953033396', '2.5227558478464802397156588319681641119764859633861447217617054088687970307126e+43'); + T('15922278874844168795624334393750706784541723182329429804868920436645833815588763261631529887040208280', '-26296.887413892620188356349250229', '1.5922278874844168795624334393750706784541723182329429804868920436645833815588763261631529887040181983112586107379811643650749771e+100'); + T('1869337163952851887099278621758788.4912775488811143022866151909022695202327782530199655924124637283188619937985055306138431', '25.12', '1.8693371639528518870992786217588136112775488811143022866151909022695202327782530199655924124637283188619937985055306138431e+33'); + T('-0.063341123812589258651794426063119957591863528264980035743077602252627967706982211651872386199270743459561294', '-0.000000000068714090541923937797208713394623709878340222046720399207', '-0.063341123881303349193718363860328670986487238143320257789798001459627967706982211651872386199270743459561294'); + T('-123065986062521895461889579855429054876.865438792794260927192006', '7084594017255215876752497968505767888079486468316419822128516563096248999466202123.38787540885020434', '7.084594017255215876752497968505767888079486345250433759606621101206669144037147246522436616055943412807994e+81'); + T('179397967161885408347722783468000236145781976956498009525966031884761882791548055245739198861467543753736467441189809830950974868855035870976.038552', '-6573750410552527157063328131505255371227573474471234861827269.61525370370996879661223', '1.7939796716188540834772278346800023614578197695649800952596603188476188279154804867198878830894038669040833593593443860337750039762017404370642329829629003120338777e+140'); + T('-139353860859081662533478815947566213452966893244463520929326236932221117460953128298317531935014131121470.4619756268309', '169812848393858427202383142897502241915472009842575593156979023589.9908950026432880351156036902370299251473942264824787465775921562579669735', '-1.393538608590816625334788159475662134527970803960696625021238537893236152190376562884749563418571520978804710806241876119648843963097629700748526057735175212534224078437420330265e+104'); + T('-0.00000000056135129922386681', '-595119376867293381235464924', '-5.9511937686729338123546492400000000056135129922386681e+26'); + T('9999400699648583439.910165407231452805204397263', '-239336712014958618084045176038.81761359335921757157899131356', '-2.3933671200495921738439659259890744818612776476637459405056e+29'); + T('0.000002623585411494924528522745861928371567645115623878', '-5636993000244072951029.8588310419570237', '-5.636993000244072951029858828418371612205075471477254138071628432354884376122e+21'); + T('-16469.08018532953044652581289843852712919053726120839851886233541371893823', '6420210.71382431387667941690927', '6403741.63363898434623289109637156147287080946273879160148113766458628106177'); + T('0.0000000001500611664251128666574118039477481282151196384889645376085403596652469864102626694482747', '263135384759861159877959298119330040825421757978037356875485701572152302094162243110', '2.631353847598611598779592981193300408254217579780373568754857015721523020941622431100000000001500611664251128666574118039477481282151196384889645376085403596652469864102626694482747e+83'); + T('-12317435659483.46', '-238178727623943.57770836536163790335018945716578328065826254', '-250496163283427.03770836536163790335018945716578328065826254'); + T('705138698371479924718654705441277066425', '-264458728957414529691672105440971342620756281273769616148413659.83139211549669420724473557409844984235683219270687462430060909545589521338825', '-2.6445872895741452969167140030227297114083156261906417487134723483139211549669420724473557409844984235683219270687462430060909545589521338825e+62'); + T('26845297854.21830300459071341439856406557876499767147640691523616826235445154220875683891282566002689437474534485000263914', '-787376261006598490249180340720309857956285707959849.0204685624653359640496048535548108297789532801386418120', '-7.8737626100659849024918034072030985795625886266199480216555787462254965104078797604583210747687322340564373764554845779124316108717433997310562525465514999736086e+50'); + T('55036049768.146079287001237352665049000674092', '-22143566056427860768945972894580679205849885116613091602005627.33897358443738987438843476838059361711849053157259882779343', '-2.214356605642786076894597289458067920584988511661303656595585919289429743615252172338576770650161711849053157259882779343e+61'); + T('-299420594788150782543317652372306174815941523345478009592090041773731019434882.753119389560259765940107169762142160679052728098688521999921', '-12453366463782072599491184208879912917463798673347144858330325.3505439835880291946926163036554982195666987139373567106718470730123422', '-2.994205947881507949966841161543787743071257322253909270558887151208758777652081036633731482889606327234734176403802457514420360452326717680730123422e+77'); + T('-256022815746044576351192361407997374095362780421849294332421070473692422546466754095230.656295542710250921847773406', '2439108134.33476347036328940422149059899605979832', '-2.5602281574604457635119236140799737409536278042184929433242107047369242254646431498709632153207234696151762628280700394020168e+86'); + T('-137304230559003045184479307675479065631585995407517838007075545485391216662724836', '-1173188488432045163948013790.3943256082040520817421175529478290364828174703361614075880892748696574370905742309087558', '-1.373042305590030451844793076754790656315859954075178391802640339174363806107386263943256082040520817421175529478290364828174703361614075880892748696574370905742309087558e+80'); + T('520707804236215170390228230926413098433541569396930548508375720908453157589569499547054273496534756616492929935502789', '275182891299865137595.3277925634463705149893539835817542834549123082412850143300233066529878447078650880805064450173373918062760558', '5.207078042362151703902282309264130984335415693969305485083757209084531575895694995470542734965350317993842298006403843277925634463705149893539835817542834549123082412850143300233066529878447078650880805064450173373918062760558e+116'); + T('2960407629256095014394492264783919104375530133643554797532898.80192159867955337779238068661889924', '276684036811079285530960359872097261579493580.0498287546202754687941154667048', '2.96040762925609529107852907586320463533589000574081637702647885175035329982884658649615332369924e+60'); + T('-5517355901446910.93833484348629903096547', '-642213064278646161225254.78548483470', '-6.4221306979600206267216572381967818629903096547e+23'); + T('152801618545615441308342159364435799274895358751942316139180186', '-44665364463201090323324.0002892895', '1.528016185456154413083421593644357992748506933874791150488568619997107105e+62'); + T('-42990335950341162574017016', '-155734841164152934379337800729168607491698641563818839018593201886.9108295077085945123926518226547', '-1.557348411641529343793378007291686074917416318997691801811672189029108295077085945123926518226547e+65'); + T('42132979000424460466648083857741221621925059', '230035200616600947476235404386815897149843926902113349799669418017872910933828', '2.30035200616600947476235404386815939282822927326573816447753275759094532858887e+77'); + T('-13721903019805428754977193786.436261994441376688889424250392449552098872713999965025277', '10194877.68498209368023', '-1.3721903019805428754966998908751279900761146688889424250392449552098872713999965025277e+28'); + T('0.0000000000000000000124951715848249957980344035116', '265848190673836152145387.561232311400411988900021332089088465444147046461212646850', '2.6584819067383615214538756123231140041198891251650367391346124218144997281264685e+23'); + T('-2478.622067383552773557059143603127982', '0.32513599534141365489000782897237000600555505333921918961022131484515789518698137637587', '-2478.29693138821135990216913577415561199399444494666078081038977868515484210481301862362413'); + T('1279542454.892945577837995361708396', '-135890698074837524994261181604433.067602982488449328126084049766962', '-1.35890698074837524994259902061978174657404650453966417688049766962e+32'); + T('0.00000011558150572741272723618033490943108053756815783338338515794075800230701762335698251644854707498749273387290233658497030939253228419', '10177968039270056306413680.184343176766129455291207155884626542169167703074423510915329626878514', '1.017796803927005630641368018434329234763518270393439206496145160024824064258134429871478481927200230701762335698251644854707498749273387290233658497030939253228419e+25'); + T('-1435068.618647657046101438708930395218818069312124176746881282174539906140539486722465500068653075714727202174518522871035823011751', '17.77', '-1435050.848647657046101438708930395218818069312124176746881282174539906140539486722465500068653075714727202174518522871035823011751'); + T('1133468285512298621716517199739886057755521547545846865283277167663070426262818957724352964984613242138379271360556', '-141537307411.00826429536495677705445', '1.13346828551229862171651719973988605775552154754584686528327716766307042626281895772435296498461324213823773405314499173570463504322294555e+114'); + T('-3578677705738240793482085438614614551372365641536961576081303950220125233969517175095644.5329094147681', '6370326210773977367247462308.43303220494101174275111504449143', '-3.57867770573824079348208543861461455137236564153696157608129757989391445999214992763333609987720982708825724888495550857e+87'); + T('4539369410251014415308963272777018911975282268127892682157655.2687008509', '0.000000000000000001809319965416452365878526603785327342157425587339349', '4.539369410251014415308963272777018911975282268127892682157655268700850900000001809319965416452365878526603785327342157425587339349e+60'); + T('-11612662163115798192491748988208694545917762161675688590981743152130989015346035128837953127650326301679404956035505966175985535696091516284466656479', '-129128951232580369482047739685813992608602054001765557698178402197589395906493483213995', '-1.1612662163115798192491748988208694545917762161675688590981743281259940247926404610885692813464318910281458957801063664354387733285487422777949870474e+148'); + T('0.0000720244123748728799957336555523697', '71791325249354506431814914086989', '7.17913252493545064318149140869890000720244123748728799957336555523697e+31'); + T('-133560.04', '0.0364781487240002253276365093066436254283459521449826381477605260349961957510696178085420533616152821352777161063017', '-133560.0035218512759997746723634906933563745716540478550173618522394739650038042489303821914579466383847178647222838936983'); + T('224439133349456441836858561541114452976410738191588.76028', '7143422387100306585012321998.95338744534500001350', '2.244391333494564418368657049635015532829957505135877136674453450000135e+50'); + T('0.000000000098363222378328329588864342385890675532349142951521770288606050467173967001464527333472294637844', '0.000005565523790105586010252525454', '0.000005565622153327964338582114318342385890675532349142951521770288606050467173967001464527333472294637844'); + T('-19302672950888869853468603175885975100580447783425209560751846890885724469162939072204904025589809680230949.15', '-5221907579579195185631992055573', '-1.930267295088886985346860317588597510058044778342520956075184689088572446916816097978448322077544167228652215e+106'); + T('446571007966420189521982224619283959966447939678911167542457919503539937579809547715586812124362669', '-0.000000001532941453246004602861225513798223406668763246640071116663063458244535088282298106516453270820501460262785607', '4.46571007966420189521982224619283959966447939678911167542457919503539937579809547715586812124362668999999998467058546753995397138774486201776593331236753359928883336936541755464911717701893483546729179498539737214393e+98'); + T('162256387512654913999487367376656275516', '-16092263592753754060348826948877883484399357352376898503109928037035273000095267537045095647020.9340480402341251915539575258', '-1.60922635927537540603488269488778834843993573523768985029476716495226180860957801696684393715049340480402341251915539575258e+94'); + T('-86.282711884059841689767705467465544410310216259432751729', '-92429065419108217418705866104650901.759952292192027196592545226813152124130603195434172370', '-9.2429065419108217418705866104650988042664176251868886360250694278696534440819454866924099e+34'); + T('-75868293.338801243263000230664880224491442311102621282662689408530004543', '2944972.7213068711096384504382609733072677', '-72923320.617494372153361780226619251184174611102621282662689408530004543'); + T('-238444972635059326925252856448297027255504596325494840989337749695326400426034906266359680165724.6162269656460992471659583387303201989744940449', '-63316025717469', '-2.384449726350593269252528564482970272555045963254948409893377496953264004260349063296757058831936162269656460992471659583387303201989744940449e+95'); + T('-0.00000000000000000002628376740857869992666514908906633928490609752241821541445544366572977726597123951321896262451176771066761534225489543173636033414059', '-0.00001057742323776455463981263889953456044073157406788745965110714274589491766184028326935', '-0.00001057742323776458092358004747823448710588066313422674455720466516411033211728394899912726597123951321896262451176771066761534225489543173636033414059'); + T('-0.00000000000003565805735839291765636742503', '0.000000000000000989774781039626', '-3.466828257735329165636742503e-14'); + T('0.00000000000000375655426038511007746679974331400659776884912884102085329769227537463698444', '546526458201961217312998279716410991.2240626147007447545948388', '5.4652645820196121731299827971641099122406261470074851114909918511007746679974331400659776884912884102085329769227537463698444e+35'); + T('-14278318423785251476284397565212.1237964463782332', '-37174052283987138.47044217178181655468224887601671623199409260448279688190513294184710815453374043139975669500607120979735080911231772347', '-1.427831842378528865033668155235059423861816004975468224887601671623199409260448279688190513294184710815453374043139975669500607120979735080911231772347e+31'); + T('-17330.438895896038328483940004', '8350320541724405487824535323446674.061386758095913411145749626626909634263800865346657', '8.350320541724405487824535323429343622490862057584927205745626626909634263800865346657e+33'); + T('-0.0000000000003788156589604414602956818964327013143296398421560231778437969245', '1634246393878053828481992729777312078472156.145364321882169640446334568077598604110397446683352082023376014305304686515469544910814539917743927216291855', '1.634246393878053828481992729777312078472156145364321881790824787374126617302922213964745369022442181219991127460889590969544910814539917743927216291855e+42'); + T('408110915553257916118522792717017858639986473034925463411181033631049938756007592', '-4438008.684761039161', '4.08110915553257916118522792717017858639986473034925463411181033631049938751569583315238960839e+80'); + T('-204903173380829791053251747', '-191455970489532344774803952466.94684645095468153608792233241808335603853244943133837112979971481605', '-1.9166087366291317456585720421394684645095468153608792233241808335603853244943133837112979971481605e+29'); + T('132721140690308763835711368030783660696277559510011717622014.3314196', '0.00554064704637147709273658476408607464726088564072789893070411751226529035714577466777850716116505710506906049773777298273003529699', '1.3272114069030876383571136803078366069627755951001171762201433696024704637147709273658476408607464726088564072789893070411751226529035714577466777850716116505710506906049773777298273003529699e+59'); + T('0.0000000000000000265193728860055071583880736', '-0.0000000000000000011892979550800567635892667658882072063', '2.53300749309254503947988068341117927937e-17'); + T('1924004.96231', '-7445082351600096.3980954490079933041653479391080501268670868688846572103759932357179141189615092741415678649052246409361594010562380231156977081147310', '-7445082349676091.435785449007993304165347939108050126867086868884657210375993235717914118961509274141567864905224640936159401056238023115697708114731'); + T('0.000000000000000000013903352680411740283535242027183387301940111406117407562975303647341986279', '0.000000193241459485855551124461468088220083733257451375352357494658457700846322832086915983440402233205', '1.93241459485869454477141879828503618975284634762654297606064575108409298135734257969719402233205e-7'); + T('-0.000000000003326499271235431532653228418183469394009927691863875127864766277232493921924691425777066908583580479571', '38538.5', '38538.499999999996673500728764568467346771581816530605990072308136124872135233722767506078075308574222933091416419520429'); + T('-20818471791668358551694729332150711.171307610', '-0.00708772819104515753090752104339593647529198186926535557761440185947368079580', '-2.08184717916683585516947293321507111783953381910451575309075210433959364752919818692653555776144018594736807958e+34'); + T('-752467347549701119616683978206438108', '0.00000000000000133182829836217784813241401889873', '-7.5246734754970111961668397820643810799999999999999866817170163782215186758598110127e+35'); + T('-71331.43876400219162800429885965449977637326182916850599237355086577534159328324037916425312333490817913501686724307', '-0.0000032139466257383829211495727047401282848726415697991943119851858819503701337097998682466465136331', '-71331.43876721613825374268178080407248111339011404114756217274517776052747523361051287405299158155469276811686724307'); + T('0.00000000003870179783985381063243324820910313', '-548412148702636016270138827097973238704618012095820424598631550144908156181914050173920.55528708694731', '-5.4841214870263601627013882709797323870461801209582042459863155014490815618191405017392055528708690860820216014618936756675179089687e+86'); + T('0.000000000000000159733765895', '2415466722403145928603501563265788955.65674020714185313333653211954046063741077995756304216513522037423497068589560605814929217258491053368146', '2.41546672240314592860350156326578895565674020714185329307029801454046063741077995756304216513522037423497068589560605814929217258491053368146e+36'); + T('227954506189379566132.3531049565054147523709893227464306251862462550700080825380345883105195752839361334678871895593932042077071912003898512892', '-0.000000000000000243005506005006402417515376832343523332630896909903184829530830475018969291441011676442441851780434411064620687143851249145363683686213768587121', '227954506189379566132.353104956505414509365483317740028207670869422726484749907137678407334745753105658448917898118381527765265339419955440224579312856148750854636316313786231412879'); + T('7973988940224355015214336919379953485029536', '-46903881814522001507986816.99248409698766603253677611753397276067931254075552578', '7.97398894022435496831045510485795197704271900751590301233396746322388246602723932068745924447422e+42'); + T('-28179553528461976563', '248852934964030510956645790197846644600695689011471340357218184219306881752129281687476727', '2.48852934964030510956645790197846644600695689011471340357218184219306853572575753225500164e+89'); + T('-0.00000038749442098332718476018064732023168357745188079514035581267126125927216662843067618614699072618739224559403486391045982462716534370262', '4925006594013147257537583640291677799280156031827105', '4.92500659401314725753758364029167779928015603182710499999961250557901667281523981935267976831642254811920485964418732873874072783337156932381385300927381260775440596513608954017537283465629738e+51'); + T('15886467257912495.75689320719759657353210920879083109402692609', '-1849440876713050806208487397730416627460.30935631710582208341731553877239172695260308652973787159595347848456382322348819127147788006459039327206090843', '-1.84944087671305080620847151126315871496455246310990822550988520632998156063292567699652973787159595347848456382322348819127147788006459039327206090843e+39'); + T('-5026233483715918355642138258166736347547068019235638147637409254751306580678549839', '0.00000000000019779052536990808660692', '-5.02623348371591835564213825816673634754706801923563814763740925475130658067854983899999999999980220947463009191339308e+81'); + T('0.000000000000000000062846132155934866382475838803414329167925640917238247929247187597144605858850', '-28375804842138366819355751075050288391048198685203076654182288294782980828652856275283802825108048295625084622829828083365524827680002246249410431', '-2.837580484213836681935575107505028839104819868520307665418228829478298082865285627528380282510804829562508462282982808336552482768000224624941043099999999999999999993715386784406513361752416119658567083207435908276175207075281240285539414115e+145'); + T('-48863470201397.143927278109695419367309919023804132', '-168361072783150231412254024286758558795677828805121174243492869928073465709719014.023363549742186056665143055249248475718140936364', '-1.68361072783150231412254024286758558795677828805121174243492869928122329179920411167290827851881476032452974273052607718140936364e+80'); + T('0.0000000000000018997661230877089423253849452578256073300966468605209561343912897439707821108359408910538145364970969403440848507153309', '-0.000385522197', '-0.0003855221969981002338769122910576746150547421743926699033531394790438656087102560292178891640591089461854635029030596559151492846691'); + T('865008.237475', '-141572245488815215559.668813721278969595937436750693180747505198056296244191362365981067', '-141572245488814350551.431338721278969595937436750693180747505198056296244191362365981067'); + T('4531430332.974369182979674290738630476176408845410151617472188112662759', '-0.000000000000002990088033905170812634080622222063618156981784899967819720909679583969232226858480299674669693921077115362022886', '4531430332.974369182979671300650596571005596211329529395408569955680974100032180279090320416030767773141519700325330306078922884637977114'); + T('1713604693153132011650052009647770010715862661891416010.39872031838645104', '-5209348059320160498592207950890250846.48', '1.71360469315313200644070395032760951212365471100116516391872031838645104e+54'); + T('298.64569377145669370010760887428305419049211767076463966663182890471105450765507454904166021', '0.0000000513282401911235340888997773718547011660029236548742535384576211684698905846807631716329563685023698', '298.6456938227849338912311429631828315623468188367675633215060824431686756761249651337224233816329563685023698'); + T('153158125588135275971624448998303827924375983937687494263.6', '522574.2172656390720935407437590923430209583762529523179633299440845173022407980283974345034782042', '1.531581255881352759716244489983038279243759839376880168378172656390720935407437590923430209583762529523179633299440845173022407980283974345034782042e+56'); + T('-37584369371625804653778917725.04710852052873625022089539878880649643091488064967', '387289160645786908822166966661304359256521.40416120883', '3.8728916064574932445279534085665058033879635705268830126374977910460121119350356908511935033e+41'); + T('333145493405211943110181488709393444800555889546483.25', '337039689069037487854189149366025543071617091671893617361194217844843723876472794060690078788349535879526770512127905359.772', '3.37039689069037487854189149366025543071617091671893617361194217844844057021966199272633188969838245272971571068017451843022e+119'); + T('-0.00000000000000000875947840124838794446714154793538138133101442657807977884554262860149896878671504', '6121126413234312706434650834319645665575176210124040301876334782352.2701746892166273345074659234578320327195185867786496894475416', '6.12112641323431270643465083431964566557517621012404030187633478235227017468921662732574798752220944408825237703884326830811652717342192022115445737139850103121328496e+66'); + T('-27101285266584198282389701705604910688467857152047550105271200946392221564235258269.0800011597617806021545806843947528587392169', '-93984277.78258808561', '-2.71012852665841982823897017056049106884678571520475501052712009463922215643292425468625892453717806021545806843947528587392169e+82'); + T('-19256051893600692288537586.59353458509306480025521794532051383696889407478585008231545758785', '-8963065351854.7878237484328880211387666531886258820788775118', '-1.925605189360965535388944138135833352595282139398459850913971904777158658585008231545758785e+25'); + T('11569497283022449921394189469855978299381812519350940701313946487504335257098102797076761168675477401606', '354878912159213729324887521064557506231700037558958924247470744332285142081086865543601683607743.711010177974', '1.1569497637901362080607918794743499363939318751050978260272870734975079589383244878163626712277161009349711010177974e+103'); + T('31410760334069399540603136630010363.370516', '-0.00000000000000000250028865888009060099213589080181239288708801576170886559433463009608557725740080566463813772802697909277043093845092263791985', '3.141076033406939954060313663001036337051599999999999749971134111990939900786410919818760711291198423829113440566536990391442274259919433536186227197302090722956906154907736208015e+34'); + T('48450334100677709.292858595098179054162833212046954235133498994154015488631434964418926099', '-5452278790911076.131563791561554078354880486603279', '42998055309766633.161294803536624975807952725443675235133498994154015488631434964418926099'); + T('-726362472599493167754185550127976323995131102302190474448.022897051088265272546787050801660', '-26697.1300027', '-7.2636247259949316775418555012797632399513110230219050114515289975108826527254678705080166e+56'); + T('-5169217768018238832429254316846393556631723341237749333387854823.66306235977379827807976904396539087620041043309411525365990764018230223245161', '21048346121126363354727928959697501228648890358940.20948083990111835371727450225140678862878629117909606507623912415702402888341685852', '-5.16921776801821778408313319048303882870276364373652068449749588345358151987267992436249454171398408757162414191501918858366851602527820356819314148e+63'); + T('0', '3880335331987075756173782777964278144918139052756795465605564193503574084038075', '3.880335331987075756173782777964278144918139052756795465605564193503574084038075e+78'); + T('1471118130122845147276641392737353012928182703107626659491246625014486338076282524169910132047730182612396587213027711271216.07461', '-9022200078219.61142095898083863316225395343911361206316438521617777', '1.47111813012284514727664139273735301292818270310762665949124662501448633807628252416991013204773018261239658720400551119299646318904101916136683774604656088638793683561478382223e+123'); + T('1961360640267', '-8237317626242593351740131071931066270126645544302536441310151862831895121602611.6685378785733350998', '-8.2373176262425933517401310719310662701266455443025364413101518628299337609623446685378785733350998e+78'); + T('250056193902937472244979.030455795040281239421914909457299497068011838527472729233340186411522', '-389637478200780623396903050063520125697228676163384342985662391907774888793755259018717015963204238731047741576614654499.6', '-3.89637478200780623396903050063520125697228676163384342985662391907774888793755259018717015963203988674853838639142409520569544204959718760578085090542700502931988161472527270766659813588478e+119'); + T('-41.0667685182669426103291702409386770119233174954666626675833072533459819908153', '-24683428468133023718789488350081878137388951325390325606955366999359.7544', '-2.46834284681330237187894883500818781373889513253903256069553669994008211685182669426103291702409386770119233174954666626675833072533459819908153e+67'); + T('-1465078045399636479827859198546113217231061854355552775', '286781605726130466373594446109778466785174261888370270594913242', '2.86781604261052420973957966281919268239061044657308416239360467e+62'); + T('-0.00000000000000004372082675620531277773860157001154109814365737979121603370264972266779787151695587487529163780797491077618453622889827822', '0.0000000000000000115010056472096691762701979992534492116764302820728655795640758846469523814776292792892505', '-3.221982110899564360146840357075809188646722709771835045413857383802084549003932659558604113780797491077618453622889827822e-17'); + T('-5915475824828715769525622713448197545310987686571625215824865265460902144119719.60667712865151405621927923268842958349404793882328736294067066', '8289599618691777653744294128182319598849442999.3869210944639310536363962387071546926', '-5.91547582482871576952562271344818925571136899479397147153073708314130329467672021975603418758300258288299398127489089404793882328736294067066e+78'); + T('-6781589283952862541042634770259255399053423179553784209358601916774267083862536888853055882080202198759767010533235152604760503522710009', '0.000000000162', '-6.781589283952862541042634770259255399053423179553784209358601916774267083862536888853055882080202198759767010533235152604760503522710008999999999838e+135'); + T('-7401754762477043478410731850924229267152.1385806493837710954211647499789972995005461407065862284241906466005572091609381993770', '6814772121230277085632920582844817329083526354461024137801607310774405037993936581203797318438915758471288490759159235041741129', '6.814772121230277085632920582844817329083526354461024137801607310774405037993936581203789916684153281427810080027308310812473976861419350616228904578835250021002700499453859293413771575809353399442790839061800623e+126'); + T('-8', '21559462366454603856476372397626468240404955163730871821082532003169939666641.3471758', '2.15594623664546038564763723976264682404049551637308718210825320031699396666333471758e+76'); + T('-10740658919737638642657973180452168052201470445', '0.0000000082551674495554316423778277737071293814860377807246652498052504231443776872267372379', '-1.07406589197376386426579731804521680522014704449999999917448325504445683576221722262928706185139622192753347501947495768556223127732627621e+46'); + T('95996905118671016719266871729.520398129746', '1424664524272137031863748414508.04407607261068488341354804735012808909858790022643537811522935701269430843913849', '1.52066142939080804858301528623756447420235668488341354804735012808909858790022643537811522935701269430843913849e+30'); + T('7545686522420.04', '-110343136.2377175', '7545576179283.8022825'); + T('-3778460127635156232285998080.7598066400530666299808051012', '-0.00056022982056213327166370574884842481363234', '-3.77846012763515623228599808076036686987362876325246880694884842481363234e+27'); + T('-205.787', '40023148.03084250896', '40022942.24384250896'); + T('-10469.58581784685565292886210019593298608566213', '0.00000000000000055769617173', '-10469.58581784685565237116592846593298608566213'); + T('-1697421104198498565372', '130856814871284869392577271881365150502943114887052960993846', '1.30856814871284869392577271881365150501245693782854462428474e+59'); + T('-0.000000414035245121759801970634606896989047228634707532', '-38870447038068433224878605004808090705226214661500574171036129739107587668370820311143094.957', '-3.8870447038068433224878605004808090705226214661500574171036129739107587668370820311143094957000414035245121759801970634606896989047228634707532e+88'); + T('-2028389003568384286508207197206771601505013066674015630980.40648010665804431311941439248759845544570040200920378245684409301143522362121397976187113415', '-0.00000000000000000001828002844616325557520485512882126384242054987542132167273332845067757', '-2.02838900356838428650820719720677160150501306667401563098040648010665804431313769442093376171102090525713802504629926464288685654529394730821254870415e+57'); + T('-0.00000188443084941099579692438787131849288418100707817192098239393848434584554053801905703996798261121316300897664557', '-3594409179355959594852497571834744071660256911.32474274552929134136288086348918314067885678172370772397', '-3.59440917935595959485249757183474407166025691132474462996014075235867778787705445917174096273078589589098239393848434584554053801905703996798261121316300897664557e+45'); + T('-0.85273', '-279017792692170227516916053414297917923905837082261296273831887211350843745548269287411294.07131470147929582735586577119', '-2.7901779269217022751691605341429791792390583708226129627383188721135084374554826928741129492404470147929582735586577119e+89'); + T('1465314670123686042148720875703178202039648.513007703872541159651633499734046400788', '777575543578333746326.8333028060', '1.465314670123686042149498451246756535785975346310509872541159651633499734046400788e+42'); + T('-26920347118432602525813368030981387.1405710723', '-9.7088124301334057558783763899332243970338509361338006057662744040169648799290478801660095182592839804430939342926', '-2.69203471184326025258133680309813968493835024334057558783763899332243970338509361338006057662744040169648799290478801660095182592839804430939342926e+34'); + T('1316027450661167908370945255095582684.489766006179613245381691072', '-27247880103214807605061248065261158542.238847334604', '-2.5931852652553639696690302810165575857749081328424386754618308928e+37'); + T('0.00000000000000060630789744883065327236848700992137069065181792024986218307439791524854229166347681155', '23583422975999413573947442313781193552150628103226534113902', '2.358342297599941357394744231378119355215062810322653411390200000000000000060630789744883065327236848700992137069065181792024986218307439791524854229166347681155e+58'); + T('-270309750628324546215936875977251097460648729.2740106846988640562244700895457240150700468834022435265506238503209610561582721812729822740951287073436', '6623510422802645083643613990747833105477640970454392196256901453016184756585217878929893750.897051821348362132957036238424470', '6.6235104228026450836436139907478331054776409701840824456285769068002478806079667814692450216230411366494980767325661488787459849299531165977564734493761496790389438417278187270177259048712926564e+90'); + T('56833947334627412648354391179890', '-0.00000000000000020974557897099293264846', '5.683394733462741264835439117988999999999999999979025442102900706735154e+31'); + T('-32374924556195581487094651860979067186648013640229524477572717027565077414917194641088084918165166494.4007630', '0.00000000000494296301119272380546991072751573073742664686905799391552910274849845882330521177213047667', '-3.237492455619558148709465186097906718664801364022952447757271702756507741491719464108808491816516649440076299999505703698880727619453008927248426926257335313094200608447089725150154117669478822786952333e+100'); + T('-1797058201757575606389544872285070938241126244.769314657904583268612759343503712876640776918509', '-123578693378839714952814254501905650483998928961025522981908260845901294079261880178955413386', '-1.23578693378839714952814254501905650483998928962822581183665836452290838951546951117196539630769314657904583268612759343503712876640776918509e+92'); + T('-225494018080889118537669713.9577313306531049801615408808777093224321509314', '-682519588810576318453197726941395968412861.368346014111618610229581846002026209517358035441594633629722053374906068945767849660172087', '-6.82519588810576543947215807830514506082575326077344764723590391122726879735531949508966841594633629722053374906068945767849660172087e+41'); + T('-146483103623737636574187312839618731854', '-164095488530068730324672.278737858685739790237796055945', '-1.46483103623737800669675842908349056526278737858685739790237796055945e+38'); + T('288065905331021752942013707735111579224784706910.9694544539500946696884975171333618909754943414924752306735638546017809645829364174230805972', '-1879997868031626.13530883243794860502747913408966454', '2.880659053310217529420137077351096992269166752848341456215121460646610183830436973509754943414924752306735638546017809645829364174230805972e+47'); + T('-30585397102026875650261239591045069897098845982837987425500176089534774480799.196611528585829637554', '-8.2', '-3.0585397102026875650261239591045069897098845982837987425500176089534774480807396611528585829637554e+76'); + T('0.0032143', '-0.00000327364505987922707888345463293127602039856777788995949286363555265326340970495', '0.00321102635494012077292111654536706872397960143222211004050713636444734673659029505'); + T('0.0000000000000122089', '-0.00000000009606197314249053393037900593870599194195536081517004235811304298818227827198075675001652859716008205203077623130159549042380478073889176477922188', '-9.604976424249053393037900593870599194195536081517004235811304298818227827198075675001652859716008205203077623130159549042380478073889176477922188e-11'); + T('-1519120.89697395603485201266905849077718172383773866152054', '-1252690569967.49008', '-1252692089088.38705395603485201266905849077718172383773866152054'); + T('135272242707147130668128741572727753877823517.5267897682843968097498958339590924822841849811607010672', '5323052067036940514642933493723371314528945383203996481350033868198902738290466758895359108447.5', '5.3230520670369405146429334937233713145289453832041317535927410153295708670320394866492369319650267897682843968097498958339590924822841849811607010672e+93'); + T('1373517886847509715943778293771477989783556837632514732917942', '-0.0002918853', '1.3735178868475097159437782937714779897835568376325147329179419997081147e+60'); + T('-7.74', '-0.677942863330392341680315597792114620456629945201714481742115371479319069952739078864753759584', '-8.417942863330392341680315597792114620456629945201714481742115371479319069952739078864753759584'); + T('0.000000000000020414435064555641261166870351580734289075091673294774203415476224497625497586758753668', '-295256622638190096478809549470566', '-2.95256622638190096478809549470565999999999999979585564935444358738833129648419265710924908326705225796584523775502374502413241246332e+32'); + T('0.00000000043262197364654223753368765660064439474065876064265664457730559389', '7732179149449785953403196073740747199538706014956074135203031279754730991083612056065.08514009015794758031660841', '7.73217914944978595340319607374074719953870601495607413520303127975473099108361205606508514009059056955396315064753368765660064439474065876064265664457730559389e+84'); + T('-31545120553641346250429.2041019063650382985', '-0.00000000000000322497856922376578447917222257195', '-3.154512055364134625042920410190636504152347856922376578447917222257195e+22'); + T('-0.00000001491640137712266436315173456229606458713951581451514404607758964925714049589638484422967721927256', '875664170041898483278650.4', '8.7566417004189848327865039999998508359862287733563684826543770393541286048418548485595392241035074285950410361515577032278072744e+23'); + T('0.000000014725515297168007', '-0.1721217425079357563094435985505347277188701680317422409696115500647420231', '-0.1721217277824204591414365985505347277188701680317422409696115500647420231'); + T('-0.0000000000000000074805926405562', '-32346407643566307755196.3614356592764197829600176806496', '-3.23464076435663077551963614356592764197904406103212058e+22'); + T('-313255500747185422178551717566317427599882739101058623548833613806257.69583741347200945021282349083047007656822121171291826489554745460530313085870235', '-0.0000000000000277730681342000948755480478956572325828011175067392454201615642985418337229601771222072988252633636962852384552843309099649046742455014449802537116792', '-3.132555007471854221785517175663174275998827391010586235488336138062576958374134720372232809576909253456246161168689455010660130541938507232924230008918337229601771222072988252633636962852384552843309099649046742455014449802537116792e+68'); + T('796875527749558859721941966594505581298971405919740366253609646289883816950441012', '0.000000000000000106051762207090679888452342439518714917029053485988097086863407642961157123252080954014447191265506482837715480', '7.9687552774955885972194196659450558129897140591974036625360964628988381695044101200000000000000010605176220709067988845234243951871491702905348598809708686340764296115712325208095401444719126550648283771548e+80'); + T('-2799308221255727632154376162818591439464534253442269002690075449594707354769913622', '-2653089999757580649494973458723447833943060689063627290.948', '-2.799308221255727632154376165471681439222114902937242461413523283537768043833540912948e+81'); + T('5230.6', '-1457159088427391036497085292606459576.080762789887425314064087931228782784478984069210492316', '-1.457159088427391036497085292606454345480762789887425314064087931228782784478984069210492316e+36'); + T('2265111540331847.44385', '0.0000000000000000026399730647357391221240416795810255729781114791438489591810343937780321771723301295667448186691762052166888791236524529182049438', '2265111540331847.4438500000000000026399730647357391221240416795810255729781114791438489591810343937780321771723301295667448186691762052166888791236524529182049438'); + T('-0.000000000000000000130351174611495679446350395997550522969873358970359485781', '6837379692457094204055811341371130548614625165355.865146', '6.837379692457094204055811341371130548614625165355865145999999999999869648825388504320553649604002449477030126641029640514219e+48'); + T('7777457612952579632757962073721379887227173983203369078658939826377158630604554480732826290762', '738745470.90386876186959774624', '7.77745761295257963275796207372137988722717398320336907865893982637715863060455448073356503623290386876186959774624e+93'); + T('2091587164056284398722371839269632038542800738624345517942031403189897878173896765128677273428424903855243972440613077101074439732042713569', '-4951053013270976201467725287896995979570086801989189606256031245422534338962187224417', '2.091587164056284398722371839269632038542800738624345512990978389918921676706171477231681293858338101866054366184581831678540100769855489152e+138'); + T('15596526663192771382682194043241293744360284406119405225927225287207668035938290350623.0136029816344460485336790911173723056262086400741246575531343349', '-0.00000929115562', '1.55965266631927713826821940432412937443602844061194052259272252872076680359382903506230135936904788260485336790911173723056262086400741246575531343349e+85'); + T('-0.143235913932920000943491996904423637', '105465669771635331021255530853326638414654835668447488251.44604956381929966', '1.05465669771635331021255530853326638414654835668447488251302813649886379659056508003095576363e+56'); + T('-131.66335836273650457236601594959663422039552341367012898208021864544080993', '0.000000000102821561249286522291590439126847620376937400555244959227688218488059751276284980726909295138051809044', '-131.663358362633683011116729427305043781268675793293191581524973686213121711511940248723715019273090704861948190956'); + T('-8211501623.467468766754729150340637983678978062348865062714034523840862885354594840', '4138.57064149204825240856224917824913', '-8211497484.89682727470647674177838880542984806234886506271403452384086288535459484'); + T('448392812.1018844354312957', '0.000001316332446359801420119858000840615513663646321599278426150890005786837699907597501844047946311701498712958992807897', '448392812.101885751763742059801420119858000840615513663646321599278426150890005786837699907597501844047946311701498712958992807897'); + T('-0.0000515081990743416226512970055332416111901', '9721676157492236482889538449332613888622823236564458642190.9068670871984057788931368828097465243944915994782715793742390978277016751898427038', '9.7216761574922364828895384493326138886228232365644586421909068155789993314372704855858042132827833014994782715793742390978277016751898427038e+57'); + T('0.00000016348993711366066763304174336589379906596596798355118', '27092941593289173149253532518.630793971858294366753', '2.709294159328917314925353251863079413534823148041366763304174336589379906596596798355118e+28'); + T('1750188741743624090823079726633157080090405425107855229635890.59733375', '0.00000000000000253442', '1.75018874174362409082307972663315708009040542510785522963589059733375000000253442e+60'); + T('-120.632964973', '5599333570130562863508293629418111213773068135437215884309301113811346990002242140', '5.599333570130562863508293629418111213773068135437215884309301113811346990002242019367035027e+81'); + T('-12956.8', '-28125616598.519875442790896131080979434706515929141364365696194890485115866976051969974226520962106271082896', '-28125629555.319875442790896131080979434706515929141364365696194890485115866976051969974226520962106271082896'); + T('0.000000291488949451719436740561621135104503110544381471384117075881655619830678129379740688277538395366270063296614253757547811832765458961027261', '742031645768480260456626682374347039419606586767893047218475327818790868744906.4174591102001653101442893099824528369555', '7.42031645768480260456626682374347039419606586767893047218475327818790868744906417459401689114761863726050544073972060003110544381471384117075881655619830678129379740688277538395366270063296614253757547811832765458961027261e+77'); + T('-87648513454369557979997099620411798538786483894671.07140', '-1', '-8.76485134543695579799970996204117985387864838946720714e+49'); + T('11680.216847571', '15545171141903075635187317512728638503.5120154558326692202036513424672740379112385241218565405732440132', '1.55451711419030756351873175127286501837288630268326692202036513424672740379112385241218565405732440132e+37'); + T('217933206105480443145202005696333545459278284908.49635092233713353554300078449954457018472363340', '851760835565720226699101062761084114408263270495330844773733382141014174507794413266810316.1227643422652856425756237116285709', '8.517608355657202266991010627610841144082634884285369502541765273430198708413398725450952246191152646024191781186244961281154701847236334e+89'); + T('131096.71', '-92311622283713248650111150643196971194314788501758170221195801273003488.29608754610346056452229667146067507425547000551040945788003726', '-9.231162228371324865011115064319697119431478850175817022119580127287239158608754610346056452229667146067507425547000551040945788003726e+70'); + T('-7.3', '-0.0000000091386734958004013759891573873629383131', '-7.3000000091386734958004013759891573873629383131'); + T('-83570037032769234234524544857963', '-16329401826664066011232.5825604925166033769207446067722340786326', '-8.35700370490986360611886108691955825604925166033769207446067722340786326e+31'); + T('207724189276.2354966467766137168630074255', '368.36464299671427627280350157241857056036300267791934105571800636754609729339278308276622409777940247912804080708853009235428453986', '207724189644.60013964349088998966650899791857056036300267791934105571800636754609729339278308276622409777940247912804080708853009235428453986'); + T('1036451349506118936704271313996579271029057412.5954933332585621063133644518747511868339417', '1919224338475644109', '1.0364513495061189367042713159158036095047015215954933332585621063133644518747511868339417e+45'); + T('4594184.672287496737761641402840568569137816292501654869263256716904015818', '9', '4594193.672287496737761641402840568569137816292501654869263256716904015818'); + T('50922584112695986965179537750579107265371590444561808302376506246479343493.0485900097493874734', '-105588622877722030471490473554330788644165258321036318195143132112931', '5.09224785240731092431490662601055529345829462793034872660583111033472305620485900097493874734e+73'); + T('8762733230291549920959.461299029519859816221596648161', '-0.0000000000000031719158', '8.762733230291549920959461299029519856644305796648161e+21'); + T('-0.000000000001088450644628700841462499123795267689859321764189574607336877911119745839851152785101218885203868', '225068092611409981730971194567763438117689044018909866535690426664845083547381487510884944286310222323340655938142842019712684', '2.25068092611409981730971194567763438117689044018909866535690426664845083547381487510884944286310222323340655938142842019712683999999999998911549355371299158537500876204732310140678235810425392663122088880254160148847214898781114796132e+125'); + T('-0.0000000739096483131943', '0.0077245546142820934802776687821282016447278885', '0.0077244807046337802859776687821282016447278885'); + T('13773756.65', '82341713701089392.952', '82341713714863149.602'); + T('0.210858539297226184666150871507845048599002989549496974738305', '893397778957253392646834827705840161788170516925929814290917857496573588954994819301103.84678150026', '8.93397778957253392646834827705840161788170516925929814290917857496573588954994819301104057640039557226184666150871507845048599002989549496974738305e+86'); + T('-311598106485014524446810253701.9', '-273597385676217579425078047906355.35858548639357', '-2.7390898378270259394952485816005725858548639357e+32'); + T('0.0000000000000010949761538307759705645612635463870582102620259', '-642669739487957339653187054422612017200108895155999822088234612866942591002244842.544328938390312037134789574351984286413492175445739315', '-6.426697394879573396531870544226120172001088951559998220882346128669425910022448425443289383903109421586357435760137218522286290586811047379741e+80'); + T('-1413496343761296278143773037357799924448219743939.91034833304743349454253527380297135637064998230', '-0.0967154985326414596487190403709602844792653613', '-1.4134963437612962781437730373577999244482197439400070638315800749541912543141739316408499153436e+48'); + T('88324430808176237552938.25850832460', '-1355506260987917851790849984926562224803792482721611489882549294623263720214603522264447050471402562893267497494827198102938336997669.605991', '-1.3555062609879178517908499849265622248037924827216114898825492946232637202146035222644470504714025628932674974065027672947620994447313474826754e+132'); + T('1913616274506284536238001245388057898244388034.32351451667730419851', '-0.000000000000007988642436925641812976903901681868680726375828237077834585228067490119284435811740642127567200765018765914463975898057', '1.913616274506284536238001245388057898244388034323514516677296209867563074358187023096098318131319273624171762922165414771932509880715564188259357872432799234981234085536024101943e+45'); + T('-0.00016620663104623655416647045', '-12686797041.8875795703189682', '-12686797041.88774577695001443655416647045'); + T('-955318682044891602024512908305401581438484362308395.3064608014', '2405264255243858252389318787930524.596646933647908', '-9.55318682044891599619248653061543329049165574377870709813867752092e+50'); + T('38251344747049710395611359429944', '0.000000000025044307069557002354176630069758745187110935106932295261690460', '3.825134474704971039561135942994400000000002504430706955700235417663006975874518711093510693229526169046e+31'); + T('6556082.32', '-0.000000000000001855587562856033456366238361224693109198376760772204394200539703419686910321614077786337510464951', '6556082.319999999999998144412437143966543633761638775306890801623239227795605799460296580313089678385922213662489535049'); + T('-601066282116.773646944861803892913655', '0.45869929801033616081412998252506077240747661632297824035019059504580212743644756970631731956591592148421555634', '-601066282116.31494764685146773209952501747493922759252338367702175964980940495419787256355243029368268043408407851578444366'); + T('-23.6504678041285333307941', '9322173289440937942221726663585040711544412727245532618749747902349893601059242945545713822289661475003325571215052971921099787751298.5', '9.3221732894409379422217266635850407115444127272455326187497479023498936010592429455457138222896614750033255712150529719210997877512748495321958714666692059e+132'); + T('13954.05335659426859124804949201546230433799858282911276550573060408965278409946479104625725605515184113476163', '54942938376898283461251972594178875731793459692.69288668376868', '5.494293837689828346125197259417887573179347364674624327803727124804949201546230433799858282911276550573060408965278409946479104625725605515184113476163e+46'); + T('38338476138349711098378.3943108022013227510', '184968761212298160660521125177275265078971984111374634082506646317710944619077959845438.025316842804835238303934013763002232693292615810218', '1.84968761212298160660521125177275265078971984111374634082506646356049420757427670943816419627645006157989303934013763002232693292615810218e+86'); + T('-535317800652152416.666011782506679594256929333292104206593745014', '206357700474622846234363174929527883904699924195458.1468414719961788534413928358700225430521698882933015922823192348467761048', '2.063577004746228462343631749295273485868992720430414808296894894992591844635025779183364584248742933015922823192348467761048e+50'); + T('2833257851650449534329564356827343715273182823625486392869199675024054992102672521.4119632200042590623653138732343284', '27874145222289935847607844819151291', '2.8332578516504495343295643568273437152731828236533605380914896108716628369218238124119632200042590623653138732343284e+81'); + T('0.00000000000000000002618552546853233266995429732175655051680150038461910732084518605757265', '-139.1176780483072', '-139.11767804830719999997381447453146766733004570267824344948319849961538089267915481394242735'); + T('-5231728462708550604235813229', '-91296185221416978065707502278539916045872.674264172531093353580151543119', '-9.1296185221422209794170210829144151859101674264172531093353580151543119e+40'); + T('0.000000106213737285740538348043261083184649640660300492624731818517303939576491624096820480026083363433', '-22201770785094963881965679358073543814802495287033739904412088335159142995847539301013.995757400073858039256583163281728323829172117', '-2.2201770785094963881965679358073543814802495287033739904412088335159142995847539301013995757293860120753516044815238467240644522476339699507375268181482696060423508375903179519973916636567e+85'); + T('-67911351036760640240904249364595686607959826796143043932178763791112125413384969479427858233781973657171072664684275848926309593074.2736408437759912', '-77343795081059041036255490247057579', '-6.79113510367606402409042493645956866079598267961430439321787637911121254133849694794278582337820510009661537237253121044165566506532736408437759912e+130'); + T('-365663287930535233624529826657412624347925682105954594671581052959938622', '6954200.1293731825636', '-3.656632879305352336245298266574126243479256821059545946715810529529844218706268174364e+71'); + T('-86904523910181630995087116839233134949554297554466494568778841810992441.93482682', '8131622.282657081038690', '-8.690452391018163099508711683923313494955429755446649456877884180286081965216973896131e+70'); + T('-1625898821893719962579186943572639572628075158134', '154905121706840975019322074123957122201752614177688556257506327062930427205660262365762413912612.3699041018353', '1.549051217068409750193220741239571222017526141760626574356126071003512402620876227931343387544783699041018353e+95'); + T('7155707429106159594597753.602', '-8825753984190829367467677923527023814575827126015236448.1769432522585118457684798455299849721603516850', '-8.825753984190829367467677923519868107146720966420638694574943252258511845768479845529984972160351685e+54'); + T('14702524453269326207746839725456981418982455947784576163899708846627563947982587259694248527512065356328701857996383.8405344660118236145367576964488171', '0.000000000000279801481414509128', '1.47025244532693262077468397254569814189824559477845761638997088466275639479825872596942485275120653563287018579963838405344660121034160181722055768171e+115'); + T('-225100394111865994732205121145289659406.81347348992302868556770481345355033428867007077210213924805668907831310175342503282790874586923576524594', '16536197888541991489345013693415581039371231147607496617201758269219830229742518663209266982586909041114114', '1.653619788854199148934501369341558103937123114760749661720175826921960512934840679721453477746576375145470718652651007697131443229518654644966571132992922789786075194331092168689824657496717209125413076423475406e+106'); + T('-147016978159508669835046590756636450424769212453306265233290290589028698490660334843817522777298255009234097047902836152977047399695261588489020507996', '-3385444909290343226731953993543122186484062389074939550327086795043944171', '-1.47016978159508669835046590756636450424769212453306265233290290589028698490663720288726813120524986963227640170089320215366122339245588675284064452167e+149'); + T('-199818369850480446138557902023384546574063876954063983588740826564571725789062130098498070856521310723010198313678089493931618667410', '-82297155933721780656979816142942540102465515796252492877737040', '-1.9981836985048044613855790202338454657406387695406398358874082656457180808621806382027872783633745366555030077919388574642449640445e+131'); + T('1224211946370320242988310.539593783414725138865000500768803244328120208411774168803312677659248392891734554652728756344327699042687781768182371130', '146158963047904046913411919077533655315762900865.56618168609343', '1.4615896304790404691341314328948002563600588917610577546950815513886500050076880324432812020841177416880331267765924839289173455465272875634432769904268778176818237113e+47'); + T('0.00000000000000000008559294799519157774769508766803', '-0.551609783500231605091545012587226546044881570184707190', '-0.55160978350023160500595206459203496829718648251667719'); + T('-0.00000000000000364248749061745076846426096689761350484416821596341761277974108029120654192812240270659121286544404842359764995', '0.00000000000000012915182634025629462517104694343718453070590970719003893358456085974950708638362321445540916204635318582523370886863628537009101151163541', '-3.51333566427719447383908991995417632031346230625622757384615651943145703484173877949213580370339769523777241624113136371462990898848836459e-15'); + T('-0.0000012159213941933105485030856059051020630869271620812934680783745913', '435177388107137395111544818911495302729591053552420773207670273108531988732273993785286.67035351430698075129626580', '4.351773881071373951115448189114953027295910535524207732076702731085319887322739937852866703522983855865579857172969143940948979369130728379187065319216254087e+86'); + T('-244127359165.119239441740', '-156775332029133323786340200106246008327217172695025168660963117705504796367803174489432334620737960393.807345425858853639626141', '-1.56775332029133323786340200106246008327217172695025168660963117705504796367803174489432334864865319558926584867598853639626141e+101'); + T('-1.3', '38822623294205506.9130785519203', '38822623294205505.6130785519203'); + T('-0.000000000000000200529323920298995078835589947427959287114325689776790905715952540392301944664052487332084825933878060366283983109838980691230645368608610691238118', '8.9235511422835689686003636129516379856485298', '8.923551142283568768071039692652642906812939852572040712885674310223209094284047459607698055335947512667915174066121939633716016890161019308769354631391389308761882'); + T('-2957229910068789430753016717681830773467703355331693598573435320975440031813155744826634542489276009415208500102073', '1387116781565930070372821993801771.117', '-2.957229910068789430753016717681830773467703355331693598573435320975440031813155743439517760923345939042386506300301883e+114'); + T('1700002853156086652196589662796447571836354710587680189245495702990262116528669877736.14002354840708066274724201698188364950277252310355226408545', '0.00000000000000001040670152065846069679024081862566530541721990959996195085462554562276036783860750708035', '1.70000285315608665219658966279644757183635471058768018924549570299026211652866987773614002354840708067315394353764034434629301334172921756950266990959996195085462554562276036783860750708035e+84'); + T('275376444375379941033818605.172279107271998841', '479542807197295799803972994083414159220618900334356109151914563415527998484615170546961833405749594109884901428553537510172052.3945910', '4.79542807197295799803972994083414159220618900334356109151914563415527998484615170546961833405749594385261345803933478543990657566870107271998841e+125'); + T('201072.84', '-18291007075346088677522680107496617786379481993162852.5235791884', '-1.82910070753460886775226801074966177863794819929617796835791884e+52'); + T('4.79698005010389753070269243940420243222736581061677999244886345403385181646604209917629845674090797104700400712679893585', '9488800450.896868361907362310326', '9488800455.69384841201125984102869243940420243222736581061677999244886345403385181646604209917629845674090797104700400712679893585'); + T('1079602565226551350070617572381861809880919380670631.1941110380393840344419101968428407597315561768248982401339351384570356479736868707938705396478', '-976453379501315909711332105625801476050587869483628203480762777882592729043296523674472960763347999942046454132907563626456686905612777665215490', '-9.764533795013159097113321056258014760505878694836282034807627778825927290432965236744729607622683973768199027828369460540748250957318582845448588058889619606159655580898031571592402684438231751017598660648615429643520263131292061294603522e+143'); + T('-0.00000000644271271718069271020345607284106825430330344982447309294205280695455856', '-4416.748357493646036829616437', '-4416.74835750008874954679712971020345607284106825430330344982447309294205280695455856'); + T('3445711155679699718853304199017871443351956851656285424813892934989061182900239514362410627083188779604842513142', '-0.0000000016502205307974697933105166599651672169912797927812530032512206464857476224692850052', '3.4457111556796997188533041990178714433519568516562854248138929349890611829002395143624106270831887796048425131419999999983497794692025302066894833400348327830087202072187469967487793535142523775307149948e+111'); + T('-0.000000000000000001721243717528274638265294074343297487403293013692904865481482446596237956150738926135318544866402636735967915186120920316527028', '0.000000000000000436433664131032429923892680858273396689173735933956', '4.34712420413504155285627386783930099201770442920263095134518517553403762043849261073864681455133597363264032084813879079683472972e-16'); + T('1204447398244110346590693828919979918701287883959208424098228210909783249592980543967052564154', '-1.202', '1.204447398244110346590693828919979918701287883959208424098228210909783249592980543967052564152798e+93'); + T('-0.00000000000000000003511', '-36043841896699925', '-36043841896699925.00000000000000000003511'); + T('-3025613431812032994475405709985.7993469679039433736384733579074386422934426781633847239705968789457410845', '-1002588615531.9649364944823485872292540973546318938467102', '-3.0256134318120329954779943255177642834623862919608677274552620705361401528781633847239705968789457410845e+30'); + T('-0.00000034223095611049552775891228859686202901218738308167914660966601362250385709703952480432247', '-972934111420524554955644957601045537.987527746161528768501935193004724606168511203759505291457031083199089815', '-9.7293411142052455495564495760104553798752808839248487899746295191701320303054021594688837313617769286510343750385709703952480432247e+35'); + T('-260.8020033716610908017940221805155296272264320025030641582384857795184385939216818072400908848372378517124042819164098083213511102035', '17001.46833548258145536106307267277476995298424211430854042389081593596901026449283938670366734353012622907027133923538851172235700848608201622', '16740.66633211092036455926905049225924032575781011180547626565233015645057167057115757946357645869288837735786705731897870340100589828258201622'); + T('4753081575672367265214388.9329438810676699994575479313858093392877635113982018254535256873963800876321781902066650227606038529159973094772009', '-7324419798632309384717050.254499146068562829441638', '-2.5713382229599421195026613215552650008928299840900686141906607122364886017981745464743126036199123678218097933349772393961470840026905227991e+24'); + T('261907813073953576038800700421412.5334378919400078993318520596126658082471977395259716516663364', '-0.0000000086951723661290447823645735627390797806202562817264370379556867453', '2.619078130739535760388007004214125334378832448355332028072772480922455081179589057153699398993620443132547e+32'); + T('-21057062244163808361926294417077492805710.769766499111898332671', '-540838928.18483069140526251205066101016721497478267885509539520800221', '-2.105706224416380836192629441707803364463895459719051716084472166101016721497478267885509539520800221e+40'); + T('-158255.62893406', '-31604958588557863785879282950522895919205970023779482993880870538808826806472714286351962262535559188830287123905862547286466', '-3.160495858855786378587928295052289591920597002377948299388087053880882680647271428635196226253555918883028712390586254744472162893406e+124'); + T('-0.00872805303919760722958348618910955647808183701772080233955945973054140753844133709507372345122366634238497203383151041725907235916579449430863', '-101853444464243101382759799835868417551993254203707661817114852', '-1.0185344446424310138275979983586841755199325420370766181711485200872805303919760722958348618910955647808183701772080233955945973054140753844133709507372345122366634238497203383151041725907235916579449430863e+62'); + T('-45631392014.68038550439368025039999458620767416686726', '-16083812762280564885084.27247572', '-1.608381276232619627709895286122439368025039999458620767416686726e+22'); + T('-1439626983041987850913974184983601119473089147100564746927844789096157891.4841085238151384299', '0.000000000000000000031951455735478942002429224112959031269033600382871577234131203139', '-1.439626983041987850913974184983601119473089147100564746927844789096157891484108523815138429868048544264521057997570775887040968730966399617128422765868796861e+72'); + T('-3773188261867111267717109.48643521972869867743466506227122436366440807932802199071587048', '-10773530952405638442737529189330991723231726109739.439911386600615356849445155509285190', '-1.077353095240563844273753296251925359034299382684892634660632931403428411021778050955366440807932802199071587048e+49'); + T('5276177017268.35565399021279131413495227030075', '33380791872.126', '5309557809140.48165399021279131413495227030075'); + T('-128.032971413512325119332251541126003042400653717001958956874845360597144465880718042889612181', '3394406625963422663090321402154499517163312515368646.5438894836165998162937', '3.394406625963422663090321402154499517163312515368518510918070104274696961448458873996957599346282998041043125154639402855534119281957110387819e+51'); + T('-0.00000000000000000319057978729978801053247482850854', '-5970871936587764739377055460041397843015391161297703354420885181193398466623676.491266129426', '-5.97087193658776473937705546004139784301539116129770335442088518119339846662367649126612942600000319057978729978801053247482850854e+78'); + T('-1059900849522366748033951746353058622121879424133545530750.9681536282', '0.0000643997702370519405494192784251815344112451050443536256021694283534059757585612317456776719019257679238083053', '-1.0599008495223667480339517463530586221218794241335455307509680892284297629480594505807215748184655887548949556463743978305716465940242414387682543223280980742320761916947e+57'); + T('912258587155780697120724221920358016075695895559841256853912713603948747888.0315678411874212150256690949682329867739341', '2.256661', '9.122585871557806971207242219203580160756958955598412568539127136039487478902882288411874212150256690949682329867739341e+74'); + T('-0.0000000000010627444491654438', '413858262712309329471602287282236771662.23037198528863973813156909657677576430461650127105324676789469187837272211762396717083479560627202188', '4.1385826271230932947160228728223677166223037198528757699368240365277677576430461650127105324676789469187837272211762396717083479560627202188e+38'); + T('10889284485250482936848754210451881764666355121565381521609141220124805252627779969564893095316988849809.140913232560678725', '265462397841083205283689782772736396048751613685021523052966574884200782708580692276859125750962879382252839837', '2.65462408730367690534172719621490606500633378351376644618348096493342002833385944904639095315855974699241689646140913232560678725e+110'); + T('-3940354048038348812232523779780977.34694963308484986947203317656721412409336941345032192250794544448871277436178166955124911913191273620514614922051333', '108461342576678368692525128056407844311709242137736115728865741966953.265427848893134917162575927126158297967830952', '1.0846134257667836869252512805640784037135519409938730349634196218597591847821580828504769054275055894417387446153854967807749205455551128722563821833044875088086808726379485385077948667e+68'); + T('26059607473911021896148097458633904533525723836841783.8770871138672438759194942708994459838051487010227902', '-455763990053647411202608788023.11837212224235256867341260022328839083293408', '2.60596074739110218961476416946438508861145212280537607587149916248913072460816706761575929722146210227902e+52'); + T('7485939927194657722950.3195815053046002170111816290687951', '3027.358', '7.4859399271946577259776775815053046002170111816290687951e+21'); + T('-0.00000000000005599703632158865779999224097099964286077696620548833919840351030138988682760507', '3.5', '3.49999999999994400296367841134220000775902900035713922303379451166080159648969861011317239493'); + T('-0.0000000000000000653970485009455424706348378806364512481181501902433188498531335390353104396782305272068893617841048746913384690805807406227445668817807', '-173224891091130915632980803868987591469417896552426790538575965839932016256122849190', '-1.732248910911309156329808038689875914694178965524267905385759658399320162561228491900000000000000000653970485009455424706348378806364512481181501902433188498531335390353104396782305272068893617841048746913384690805807406227445668817807e+83'); + + + T('1.06832442449657e+9', '5.31512565221766313e+1', '1068324477.6478265221766313'); + T('-8.9672012052076147472375857e-20', '6.391778063682e+4', '63917.780636819999999999910327987947923852527624143'); + T('0e+0', '3.803634150690184e+15', '3803634150690184'); + T('0e+0', '-2.250919143163409794163082811e+1', '-22.50919143163409794163082811'); + T('2.8352844e+1', '-9.8421821e+10', '-98421820971.647156'); + T('-3.96169309707604251e+17', '-3.28373582e+3', '-396169309707607534.73582'); + T('9.436349291685128603888e-8', '-2.264108528075248e-4', '-0.00022631648931460794871396112'); + T('0e+0', '7.2004864761158514004448e+17', '720048647611585140.04448'); + T('-4.8717347274e-19', '3.61737685608086525157404817e+26', '3.6173768560808652515740481699999999999999999951282652726e+26'); + T('-2.168389290841e+6', '5.223e+2', '-2167866.990841'); + T('-4.38725314493094e+12', '1.40054785697916026635598226844e+11', '-4247198359233.023973364401773156'); + T('7.1223378147664003e-7', '3e+0', '3.00000071223378147664003'); + T('-1.0656660973e+10', '-2.97209463056314635542851541186e+2', '-10656661270.209463056314635542851541186'); + T('1.2883277094e+1', '-5.54548048203261067457185e+22', '-5.5454804820326106745705616722906e+22'); + T('-1.504e-14', '2.71e+2', '270.99999999999998496'); + T('4.7287555806698e+13', '-3.5935329574452318e+14', '-312065739937825.18'); + T('5.4e-15', '-8.35468469007e+0', '-8.3546846900699946'); + T('-1.735565e+4', '-2e+0', '-17357.65'); + T('-6.89525e-18', '6.7229852843e+10', '67229852842.99999999999999999310475'); + T('-2.63508402e+2', '-2.478965e+4', '-25053.158402'); + T('6.4909990971742952e+9', '8.633411384049431980845536589e+27', '8.6334113840494319873365356861742952e+27'); + T('2.87817691607168594282e+13', '3.695e-1', '28781769160717.2289282'); + T('1.2558509833653622e-12', '9.46079802e+0', '9.4607980200012558509833653622'); + T('3.2795331525179582319e-17', '-9.431388519232451406922e+21', '-9.431388519232451406921999999999999999967204668474820417681e+21'); + T('-2.7943785679585251935425773745e+1', '1.177045839871050879e+18', '1177045839871050851.056214320414748064574226255'); + T('-6.73086857309438227946149e+24', '1.71905552920711054538516e-15', '-6.73086857309438227946148999999999999999828094447079288945461484e+24'); + T('1.9905292e+5', '3.0839223106e+3', '202136.8423106'); + T('8.31048846338017e+14', '2.83123673288364500197794e+22', '2.83123681598852963577964e+22'); + T('8.36725e+4', '0e+0', '83672.5'); + T('-2.110811501755e+8', '1.646035246034983555808013262e+16', '16460352249268685.38258013262'); + T('8e+0', '-8.45386934e+4', '-84530.6934'); + T('-1.5014313151e+11', '-1.3943193159404694868e+9', '-151537450825.9404694868'); + T('-6.19826535590383384678e+19', '1.45912696e+4', '-61982653559038323876.5304'); + T('-2.30128559243369e-20', '-1.74358e-1', '-0.1743580000000000000230128559243369'); + T('7e+0', '2.9175e+4', '29182'); + T('0e+0', '8.074398952e-13', '8.074398952e-13'); + T('-1.10169992553226e-6', '-1.489521419796568135223154e+3', '-1489.521420898268060755414'); + T('-1.2847222948669e-8', '6e+0', '5.999999987152777051331'); + T('-2.0748595e+6', '1.7737013267831817855508474e+17', '177370132676243319.05508474'); + T('-1.3e+1', '-5.537580936457497529591215129e+27', '-5.537580936457497529591215142e+27'); + T('1.53041098285404062449166636e-20', '-1.09698519e+5', '-109698.5189999999999999999846958901714595937550833364'); + T('-9.0549157165169081301152736658e+13', '1.71861116418514e+4', '-90549157147982.969659301336658'); + T('-6.84667133296448035e+4', '-1.2552e+3', '-69721.9133296448035'); + T('-3.38133320737533874e-3', '-3.6195193454909046017940982507e+23', '-3.6195193454909046017940982845133320737533874e+23'); + T('5.28063684109958995e+11', '3e+0', '528063684112.958995'); + T('5.6486677840434364930096077898e+6', '7.7345049656351983276666e+2', '5649441.2345400000128423744498'); + T('1.071698848e+5', '8.09702667e+6', '8204196.5548'); + T('-2.56438e+1', '-4.7752581981e-15', '-25.6438000000000047752581981'); + T('1.11255906527629e+3', '0e+0', '1112.55906527629'); + T('5.29214639434e+5', '0e+0', '529214.639434'); + T('1.907665907177150817777618e-16', '3.996484323e+1', '39.9648432300000001907665907177150817777618'); + T('-2.284817838850737484e+0', '1.70660375373e-10', '-2.284817838680077108627'); + T('-2e+0', '1.2057236765392598216859e+0', '-0.7942763234607401783141'); + T('9.5417e+3', '1.19709798011e-10', '9541.700000000119709798011'); + T('-2.1e-6', '1.73249589179219564051e-11', '-0.0000020999826750410820780435949'); + T('3.33966813434843e+8', '-4.33492101363039e+8', '-99525287.928196'); + T('-7.6863012322962e+0', '5.40256e+5', '540248.3136987677038'); + T('1.893278638203e+10', '-2.79127597942747e+9', '16141510402.60253'); + T('8.708419184498120859374e+8', '-2.125e+2', '870841705.9498120859374'); + T('-3.79886239868039785166793949e+26', '1.9e-15', '-3.798862398680397851667939489999999999999981e+26'); + T('1e+0', '-3.2066099723526e-8', '0.999999967933900276474'); + T('-2.101824983e-20', '3.3833950371681e+13', '33833950371680.99999999999999999997898175017'); + T('-6.1088406176222166146368e+22', '-2.00280388042170752227327721005e+18', '-6.109040898010258785389027327721005e+22'); + T('-2.0983e+0', '-1.1343932020174e+5', '-113441.41850174'); + T('-2e+0', '-1.19204063249021e+4', '-11922.4063249021'); + T('3e+0', '-2.989e+0', '0.011'); + T('-1.5828496509e+0', '-2.60683254419027318e-15', '-1.58284965090000260683254419027318'); + T('1.078440230361e-17', '-1.7739037620412430484912549e-12', '-1.7738929776389394384912549e-12'); + T('1.711170067502562238123015e+13', '2.259516522692505152e+18', '2259533634393180177.62238123015'); + T('-1.1997027e+5', '9e+0', '-119961.27'); + T('-6.7259257776601e+7', '5.960973996e-14', '-67259257.77660099999994039026004'); + T('2.85992183e+2', '-6.064117834028922826e+4', '-60355.18615728922826'); + T('7.934778e+6', '-9.4139862782877690738251378918e+28', '-9.413986278287769073824344414e+28'); + T('-6.263942705879383579638312222e+18', '3.2403266e+2', '-6263942705879383255.605652222'); + T('-2.329980632158e+5', '-1.08e-19', '-232998.063215800000000000108'); + T('-2.60095989544433e-14', '2.56e-5', '0.0000255999999739904010455567'); + T('-1.001038173511924331447439e+24', '-3e+0', '-1.001038173511924331447442e+24'); + T('3.68958378497693152e+6', '2.3811e+1', '3689607.59597693152'); + T('-7.20153952e-2', '-1.14726471710912029765e+1', '-11.5446625662912029765'); + T('4.66584406082341e+12', '-6.1465061983e+5', '4665843446172.79017'); + T('-7.088494e+5', '9.24436069228226918e+0', '-708840.15563930771773082'); + T('3.45085557305234282971e-8', '1.40482921012791804198897e+23', '1.404829210127918041988970000000345085557305234282971e+23'); + T('-2.8679709521880775607842e+21', '-5e+0', '-2.8679709521880775607892e+21'); + T('6.49984583317234152952e+17', '-2.9114532734232268763826e-20', '649984583317234152.951999999999999999970885467265767731236174'); + T('2.6e+0', '7.759622397664468658e+14', '775962239766449.4658'); + T('1.12464142221080461622674e-17', '4.39864275886353589274384e+23', '4.398642758863535892743840000000000000000112464142221080461622674e+23'); + T('-1.0485669677437140330013740955e+14', '5.37355740951565887959624082769e+5', '-104856696237015.662348571521590375917231'); + T('8.019083936288e+12', '2.1955080947893037e-5', '8019083936288.000021955080947893037'); + T('-6.2275998681220583433895e+8', '5.5575382458820654178885565e+23', '5.5575382458820591902886883779416566105e+23'); + T('-1e+0', '-1.8359922820027707246784e+6', '-1835993.2820027707246784'); + T('6.8845860200016e+9', '3.53338102476e+5', '6884939358.104076'); + T('9.89004923e-1', '9.5157252327953911020394e-15', '0.9890049230000095157252327953911020394'); + T('1.95366847613052662290905e-1', '4.61089e+1', '46.304266847613052662290905'); + T('1.52850891752130568e+1', '3.8790643093207712266859866e-16', '15.28508917521305718790643093207712266859866'); + T('1e+0', '-3.351589594322899987e-13', '0.9999999999996648410405677100013'); + T('4e+0', '-2.25635728971207153477e-17', '3.9999999999999999774364271028792846523'); + T('-7.1521e+0', '3e+0', '-4.1521'); + T('5.73130841108862822977457839205e-6', '-2.0226350480263253215e+10', '-20226350480.26324748369158891137177022542160795'); + T('2.38700916108487e+10', '4.6410211658583484277994722e+24', '4.6410211658583722978910830487e+24'); + T('-1.10178448051944844475771905272e-15', '-6.39395321758408376910624e+18', '-6393953217584083769.10624000000000110178448051944844475771905272'); + T('-3.013637e-14', '1.2228170261603e+3', '1222.81702616029996986363'); + T('5.701362229840513e+1', '-4.1266579254956732345e+1', '15.747043043448397655'); + T('-1.26549524e+4', '7.114747175586575423929900617e+4', '58492.51935586575423929900617'); + T('2e+0', '-6.19566611167700965419057181e-4', '1.999380433388832299034580942819'); + T('-1.59294729923996920972246e-17', '2.05841676458664250980624366171e+12', '2058416764586.6425098062436616940705270076003079027754'); + T('-3.611261022614801981543826e+5', '-5.4e+0', '-361131.5022614801981543826'); + T('-1.382436556533e+2', '-2.0005230510874070622654e+4', '-20143.474166527370622654'); + T('2.725e+1', '6.5907103031686003312192e+10', '65907103058.936003312192'); + T('1.7102043e+1', '1.630185891228e+5', '163035.6911658'); + T('1.06251e+1', '8.86362042342990151231977e+15', '8863620423429912.13741977'); + T('-2.0075903158e+3', '4.632965490155132e+15', '4632965490153124.4096842'); + T('1.57481186e+8', '1.9928e+2', '157481385.28'); + T('-4.4540881340084554082e+12', '-8.567827997230912244e-19', '-4454088134008.4554082000000000008567827997230912244'); + T('3.0149809456450947682607926e+26', '1.52e+4', '3.0149809456450947682609446e+26'); + T('3.55773e+1', '-1.296139601615599519887e-2', '35.56433860398384400480113'); + T('-2.88697527177e-7', '8.20473793e+9', '8204737929.999999711302472823'); + T('1.22209473e+8', '-2.071859795614941e+13', '-20718475746676.41'); + T('-4.29227481925874031992865289e+13', '-3.3e-4', '-42922748192587.4035292865289'); + T('-1.12e+0', '-3.656079060826e-5', '-1.12003656079060826'); + T('-5.6653957709162986e+0', '1.8713973e-1', '-5.4782560409162986'); + T('-7.598187175103e+12', '2.95663854017257699181848633626e+17', '295656255830082596.181848633626'); + T('-7.904686344760362698443617622e+19', '1.980883539639923746866474445e-3', '-79046863447603626984.434195336460360076253133525555'); + T('-1.887416922022595192028e+16', '-4.59e-20', '-18874169220225951.9202800000000000000459'); + T('-8.148255639724e+10', '2.891684342e+8', '-81193387963.04'); + T('6.23847007946890103e-19', '-8.4455421112902026239156794885e+9', '-8445542111.290202623915679487876152992053109897'); + T('-1.625684355377512651803808e+7', '-1.348895528074479183e+18', '-1348895528090736026.55377512651803808'); + T('-6.535179015515075206e+8', '-8.95738948608652714735e-10', '-653517901.551507521495738948608652714735'); + T('-8.153e-7', '1.65820611454448412e-13', '-8.15299834179388545551588e-7'); + T('5.051843689061792432745588e+1', '2.8243308408e+8', '282433134.59843689061792432745588'); + T('-1.8e+0', '9.44922368261817e+2', '943.122368261817'); + T('-4.6e+0', '1.636104301545649956e-6', '-4.599998363895698454350044'); + T('3.9366814707165145667343522e-12', '3.0389e+4', '30389.0000000000039366814707165145667343522'); + T('7.436644701432e+7', '2.6484854e+0', '74366449.6628054'); + T('6.072728e-6', '1.091e-13', '0.0000060727281091'); + T('-9.57628017436746e+6', '-5.39066706500255775e+13', '-53906680226305.75186746'); + T('4.09624190548576e-18', '-9.6749e+2', '-967.48999999999999999590375809451424'); + T('-8.6632e+3', '2.120751089392768905787515e+24', '2.1207510893927689057788518e+24'); + T('1.857536e+2', '6.75400474e+1', '253.2936474'); + T('-5.6e-18', '-2.0950506003186642599853e+3', '-2095.0506003186642599909'); + T('3.33788850991236125e+12', '-1.58862526437795e+14', '-155524637927882.63875'); + T('3.1483e+1', '2.28650378766881198016e+12', '2286503787700.29498016'); + T('1.234624954152162611e-19', '-7.4619712e+2', '-746.1971199999999999998765375045847837389'); + T('1.080098052386732090801e+17', '3.09363317193526857948304e-13', '108009805238673209.080100000000309363317193526857948304'); + T('-2.51e+0', '1.409033443601486029357e-19', '-2.5099999999999999998590966556398513970643'); + T('5.427853163e+2', '-1.29492978844337839542353e+23', '-1.294929788443378395418102146837e+23'); + T('-2.02e+2', '5.4765009943616783637932886e+25', '5.4765009943616783637932684e+25'); + T('6.0089899644e+8', '8.77139309e+7', '688612927.34'); + T('-2.52975e+2', '-8.063181606e-8', '-252.97500008063181606'); + T('4.5094208494899584309066e+0', '-1.103e+0', '3.4064208494899584309066'); + T('3.0782e+0', '8.6800615973178390115257e-7', '3.07820086800615973178390115257'); + T('1.242839052621980122206838e+18', '3.9218504671511828734123451441e+14', '1243231237668695240.49417923451441'); + T('3e+0', '9.0309539359826e+1', '93.309539359826'); + T('-7.79925520165e-12', '2.4e-16', '-7.79901520165e-12'); + T('-7.82454855580508259123083736e+4', '-1.4505891967290641474446448e+14', '-145058919751151.9003025153059123083736'); + T('-3.23795969916119488744e-19', '6.13973898934392e+6', '6139738.989343919999999999676204030083880511256'); + T('-3.2125638937067043056e+16', '6.26147244159010381015573613741e-5', '-32125638937067043.0559373852755840989618984426386259'); + T('-5.6388596462772628354639232512e+27', '-8.7402462294e+3', '-5.6388596462772628354639319914462294e+27'); + T('-5.18916166140020398584e+3', '-2.286072187548843381829615e+12', '-2286072192738.00504322981898584'); + T('4.07978e+3', '6.009589348894649131e+1', '4139.87589348894649131'); + T('1.24981916598699796711558874e+20', '-6.097e+0', '124981916598699796705.461874'); + T('3.40205966339e+9', '-5e+0', '3402059658.39'); + T('-2.011230243535947305604087574e-1', '8.09834868377e-6', '-0.2011149260049109605604087574'); + T('1.823304324438653941487094855e+6', '-4.755e-7', '1823304.324438178441487094855'); + T('1.984404125928134e-20', '-6.0867637168658727533522913e+25', '-6.086763716865872753352291299999999999999999998015595874071866e+25'); + T('2.15e-7', '1.40111e+5', '140111.000000215'); + T('1.8919e-20', '7.1771e+4', '71771.000000000000000000018919'); + T('9.95146e+3', '-3.9373688835252249931e+10', '-39373678883.792249931'); + T('-1.014255162652494738303244155e+7', '-2.67797715547e-5', '-10142551.62655172715458714155'); + T('-4.428e+0', '1.3437431538744606393264041272e+3', '1339.3151538744606393264041272'); + T('-2e+0', '-2.229409910360055e+4', '-22296.09910360055'); + T('4.0148389757764685838e+4', '3.07591618307944204e+15', '3075916183119590.429757764685838'); + T('1.5e+0', '3.204179e+2', '321.9179'); + T('1.7628168176292522230070264e-9', '-7.857162462055267e+5', '-785716.2462055249371831823707477769929736'); + T('-4.7068322333826667e+2', '2.6204796284915915378e+6', '2620008.94526825327113'); + T('-5.7849662e+6', '-1.67379927e+8', '-173164893.2'); + T('6.36341614538e+4', '-5.684708914970007106903e+11', '-568470827862.8392568903'); + T('-9.8170683973203026118362784916e-18', '-4.76099856150535148899823166528e+24', '-4.7609985615053514889982316652800000000000098170683973203026118362784916e+24'); + T('-1.450475441789747351396091722e-14', '9.5e-16', '-1.355475441789747351396091722e-14'); + T('-1.2401309543790470973e+12', '-3.283421840845701731666242363e-14', '-1240130954379.04709730000003283421840845701731666242363'); + T('3.8284741521518e+9', '1.040053292332476e+7', '3838874685.07512476'); + T('-3.629548186614033358094334214e+14', '3.88460431849184e-13', '-362954818661403.335809433421011539568150816'); + T('4.492353541896215e+4', '4.2278871477030354988345988e+12', '4227887192626.5709177967488'); + T('1.39125503887158081793020576e+12', '7.107400120480733e+4', '1391255109945.58202273753576'); + T('4.29162281457350835270745e-1', '-8.29e+0', '-7.860837718542649164729255'); + T('9.8480007978020274403298876e-14', '-9e+0', '-8.999999999999901519992021979725596701124'); + T('-6.065629590943247e+11', '2.1353939336e-5', '-606562959094.324678646060664'); + T('-1.90520093211683e-14', '2.6011329423597853e+3', '2601.1329423597852809479906788317'); + T('-5.258159e-8', '1.79707627e+3', '1797.07626994741841'); + T('4.39e-13', '3.909008772398642e-9', '3.909447772398642e-9'); + T('-5.5413711e+1', '1.72056051290943960725138e+22', '1.7205605129094396072458386289e+22'); + T('-2.653033e+6', '-2.3e+2', '-2653263'); + T('2.1e+0', '-1.03e-12', '2.09999999999897'); + T('4.5e+0', '5.57773e+5', '557777.5'); + T('-1.31252712310416354e-17', '-5.34133135e+6', '-5341331.3500000000000000131252712310416354'); + T('3.5452349200934969e+11', '8.46089262134099e+10', '439132418222.75959'); + T('-2.39151247297029e+0', '-3.4e+1', '-36.39151247297029'); + T('1.04933449400897990977690656e+16', '-2.0991e+0', '10493344940089796.9986690656'); + T('-2.3192197014588986e+10', '1.3582e-16', '-23192197014.58898599999999986418'); + T('7.142194053338425321066077e+5', '1.90025134243757962899e+1', '714238.4078472669079028976'); + T('-1.136854e-7', '9.38832e+5', '938831.9999998863146'); + T('3.32614494028772216103868273496e+27', '2.7733154489672324e+9', '3.3261449402877221638119981839272324e+27'); + T('8.53310299029659557937678946674e+29', '-2.171026229e-18', '8.53310299029659557937678946673999999999999999997828973771e+29'); + T('-8.7775827884702947387676403e+9', '-2.24368450892611e+10', '-31214427877.7313947387676403'); + T('-5.2404730569306871e-14', '-1.95066228095626569312714706e+26', '-1.95066228095626569312714706000000000000052404730569306871e+26'); + T('-1.3962539732462279142518e+9', '5.818337806672885323307992101e+8', '-814420192.5789393819210007899'); + T('-3e+0', '-3.758144520778459805048058852e+16', '-37581445207784601.05048058852'); + T('4.533812642503788216091413e-2', '0e+0', '0.04533812642503788216091413'); + T('2.2345667600317984449936934959e+28', '-2.312549676277765984005310857e+23', '2.23454363453503566733385344279143e+28'); + T('5.890444410932411361081252e+15', '3.886333434874616465e-9', '5890444410932411.361081255886333434874616465'); + T('7.0771471576147436232551549e+25', '3.31023407231546910086281e+14', '7.0771471576478459639783095910086281e+25'); + T('-4.579025795557e+9', '-9.412662879882994536113862e+19', '-94126628803408971156.69562'); + T('6.68976500113452229442881759e+16', '9.35885176e+2', '66897650011346158.8294641759'); + T('1.8481649705340526197387e+16', '-2.6037916468e+0', '18481649705340523.5935953532'); + T('4.57418412e+2', '1.2332172148052647e+6', '1233674.6332172647'); + T('1.11e+1', '-2.6e+0', '8.5'); + T('-2.1661e+3', '-3.7327283613e-10', '-2166.10000000037327283613'); + T('1.756224491703e-3', '4.5319398279654e+6', '4531939.829721624491703'); + T('-1.34077579411e+7', '8.24170643747189e+13', '82417050966960.9589'); + T('-2.0495814528228973658098e+10', '-5.20314966589367e-15', '-20495814528.22897365809800520314966589367'); + T('8.541190743467170007744156375e-13', '7.0401506297973216018710560963e+28', '7.04015062979732160187105609630000000000008541190743467170007744156375e+28'); + T('-9.61633628e+7', '-3.613868352359377835e+11', '-361482998598.7377835'); + T('-2.767001037506171092080557112e+14', '9.244954929589141444423604e-17', '-276700103750617.10920805571119990755045070410858555576396'); + T('1.89901678657288039300855105894e-13', '-1.58598406112309192413155018311e+25', '-1.5859840611230919241315501831099999999810098321342711960699144894106e+25'); + T('1.268441520208713701742930596e+15', '4.970632009043856853119754828e+18', '4971900450564065566.821497758596'); + T('-1.9274080087e-7', '-1.226582591e+3', '-1226.58259119274080087'); + T('7.6027378901641e+4', '5.6020622089981e+2', '76587.58512254081'); + T('-8.955651e+4', '-2.311647517004775402486236216e+27', '-2.31164751700477540248632577251e+27'); + T('-8.640119777677045398616e+19', '7.1041062169678654e-10', '-86401197776770453986.15999999928958937830321346'); + T('-4.9472e+1', '-9.5254025997e+4', '-95303.497997'); + T('4.9115e+4', '1.1091035133e+10', '11091084248'); + T('2.00178779e-3', '2.3e+0', '2.30200178779'); + T('-1.22635159837898393566542487e+7', '7.6174490056742349880855e-11', '-12263515.983789839280479758643257650119145'); + T('5e+0', '4.83e+0', '9.83'); + T('-5.18305e+1', '2.06741e+0', '-49.76309'); + T('4.732184851555942426024763e-20', '1.536847890671368e+15', '1536847890671368.00000000000000000004732184851555942426024763'); + T('1.88358776282573960911e+15', '-5.5178544e-9', '1883587762825739.6091099944821456'); + T('-7.250860069e+9', '-2.0722613389416e-6', '-7250860069.0000020722613389416'); + T('-9.37492384e-16', '-3.59438537290428941803686306e+26', '-3.59438537290428941803686306000000000000000937492384e+26'); + T('2.29612282112427409597796e+6', '-2.44261697753e+0', '2296120.37850729656597796'); + T('-4.410025312651288094581277836e+21', '-1.448656017e-16', '-4.4100253126512880945812778360000000001448656017e+21'); + T('-1.7181773728e+9', '-1.896321199e+7', '-1737140584.79'); + T('4.3098015497657959948133e+20', '1.274986092270260964754410066e+11', '430980155104078208708.3560964754410066'); + T('-2.1959570176e+10', '5.725576310292088e-18', '-21959570175.999999999999999994274423689707912'); + T('-1.44792248534417343390548623e+21', '1e+0', '-1.44792248534417343390448623e+21'); + T('1.040704879928354425713e+2', '4.86388848511334545e+2', '590.4593365041699875713'); + T('4.241468133452732043755761186e+16', '-2.73798399968495e+11', '42414407536127351.94255761186'); + T('-2e+0', '6.24224662705e+11', '624224662703'); + T('5.6641294006148610219533163e+0', '-2.12295174799e+11', '-212295174793.3358705993851389780466837'); + T('2.865e+0', '-4.095879034404159898232e-16', '2.8649999999999995904120965595840101768'); + T('1.897905e+1', '6.596474438004821e+15', '6596474438004839.97905'); + T('2.8032755954946389580459726817e+0', '-3.504845500434e+4', '-35045.6517287445053610419540273183'); + T('3.2100930836673e+7', '1.7556652634247164889788e+3', '32102686.5019364247164889788'); + T('3.94508726739917261971194668167e+20', '3.2678976e-12', '394508726739917261971.1946681670032678976'); + T('1.013478996e+6', '-1.35851240932e+11', '-135850227453.004'); + T('5.76471020553517e+10', '9.361663010412251704182487e+1', '57647102148.96833010412251704182487'); + T('8.039198206551479e-19', '-4.7304610153534734555e+11', '-473046101535.3473455499999999991960801793448521'); + T('1.08616611370746e+10', '1.63357530853972701257283441042e+29', '1.633575308539727012681451021790746e+29'); + T('8.985857919040188655e+18', '6.9122771945490484660606087488e+22', '6.9131757803409524849261087488e+22'); + T('8.55516146e+6', '-5.20868e-6', '8555161.45999479132'); + T('1.35007756418551e+5', '2.1871207843576e-10', '135007.75641855121871207843576'); + T('1.997393922577102e+15', '2.04297682524767e+14', '2201691605101869'); + T('-2.8299e+0', '-2.0533e+1', '-23.3629'); + T('9.801120776319968546478e-1', '-5.506831779512856926053754757e-6', '0.980106570800217341790873946245243'); + T('4.7906337242e+7', '-3.024012845303e+0', '47906334.217987154697'); + T('-1.27217277089e+6', '-2.5964435963219617e+8', '-260916532.40308617'); + T('-9.42191e-10', '2.844075292805153735859165701e+3', '2844.075292804211544859165701'); + T('-2.6967949047958223297482e+19', '9.67282581408114114e+13', '-26967852319700082486.0706'); + T('-1.1745879912966672172374876e+14', '-5.942752909258700258e-14', '-117458799129666.72172374876005942752909258700258'); + T('1.17492331131707e+14', '-1.85e+2', '117492331131522'); + T('3.8237936883565271658e-7', '-7.468507e+1', '-74.68506961762063116434728342'); + T('2.080597621127443899864e+7', '2.0363911e+2', '20806179.85038443899864'); + T('-1.317672639296246e+11', '-3.47791814748480321636668116e+26', '-3.477918147484804534039320456246e+26'); + T('4.02924099e+1', '5.28393737349807e+9', '5283937413.7904799'); + T('3.62917205826288627489788295e+18', '2.49970474597037787872e+12', '3629174557967632245.27576167'); + T('3.08272649390034127669268182e-2', '3e+0', '3.0308272649390034127669268182'); + T('5.85719579984856882552621456e+26', '-2e+0', '5.85719579984856882552621454e+26'); + T('-2.50225156633622568317671509e-9', '-2.2582829e+2', '-225.82829000250225156633622568317671509'); + T('-5.15193401834588205516587050994e-14', '1.4e+0', '1.3999999999999484806598165411794483412949006'); + T('1e+0', '8.8924e+0', '9.8924'); + T('-3.3e+0', '-7.8502049490351637397e-8', '-3.300000078502049490351637397'); + T('-7.33960473805391e+11', '7.439838102434947302e+0', '-733960473797.951161897565052698'); + T('-3.16e-5', '1.726737549992789265e+13', '17267375499927.8926184'); + T('4.270228010774903285941e+15', '3.46096007736828546415995945e+26', '3.46096007741098774426770848285941e+26'); + T('-2.10368325850606703058e+20', '-2.08133369e+0', '-210368325850606703060.08133369'); + T('1.7e+1', '-1.0122120905476e+13', '-10122120905459'); + T('-7.07684131786e+1', '2.63774583435255785325881638e+25', '2.63774583435255785325880930315868214e+25'); + T('9.1072366943654984307009963e+25', '1.439998771392437399072989e+2', '9.10723669436549843070101069998771392437399072989e+25'); + T('-2.291554e-12', '2.61075274155651389913495756e-20', '-2.2915539738924725844348610086504244e-12'); + T('1.7602843372492822519e+15', '-8.1404508102e+7', '1760284255844774.1499'); + T('-4e+0', '-1.944878631711881888860126e+0', '-5.944878631711881888860126'); + T('-2.187281084011878193e+17', '-7.474048902432652904641e-13', '-218728108401187819.3000000000007474048902432652904641'); + T('3.2e-19', '3.681598265268061504382107e+7', '36815982.65268061504382107032'); + T('-7.99963142249e+5', '-1.10759709047786981579e+17', '-110759709048586944.721249'); + T('8.6126004e+7', '-2.260854106319155e+12', '-2260767980315.155'); + T('-1.545857065710954713345527676e+7', '1.693211571e+2', '-15458401.33595244713345527676'); + T('1.7634085229179948402e-1', '-7.72257679334452942471286361e+10', '-77225767933.26895339483683661598'); + T('-4.09737779175073422506155472749e+17', '-9.371187455652828779751905571e-19', '-409737779175073422.5061554727490000009371187455652828779751905571'); + T('2.94436782641191186e+1', '-1.757436041e+0', '27.6862422231191186'); + T('1e+0', '6.393155e+4', '63932.55'); + T('6.94692049e-4', '1.1351884189267733e+13', '11351884189267.733694692049'); + T('-6.30461698646036622857426e-5', '-4.09097e+1', '-40.9097630461698646036622857426'); + T('-2.0402e-20', '1.67107872884e+7', '16710787.288399999999999999979598'); + T('5.532395277106440788e+9', '-7.24995e+5', '5531670282.106440788'); + T('6.000727e-18', '6.917267560158418e+11', '691726756015.841800000000000006000727'); + T('1.166055456823e+12', '-5.5020976743949e+12', '-4336042217571.9'); + T('-3.91173319151e-2', '4.41620271855e-17', '-0.0391173319150999558379728145'); + T('4.91856485935137e-1', '-1.08457423464500916876e+19', '-10845742346450091687.108143514064863'); + T('2.09824848244684254866384581e+26', '3.638246794566e+10', '2.0982484824468429124885252666e+26'); + T('-3.2e-8', '-7.140239683783e-17', '-3.200000007140239683783e-8'); + T('1.2946e+4', '6.4275853487855044216637711965e+27', '6.4275853487855044216637841425e+27'); + T('-2.31e+1', '-5.1e+0', '-28.2'); + T('-5.98100271250578949179e+8', '2.012527542898146781797867e+2', '-598100069.9978246593643218202133'); + T('-2.2616174364e+6', '1.808741032320373831865e+21', '1.8087410323203715702475636e+21'); + T('-1.59844056581e+11', '-3.677066761421338e-2', '-159844056581.03677066761421338'); + T('-3.070121910623175279e-4', '-8.191845955248936529857e+0', '-8.1921529674399988473849'); + T('3e+0', '-3.131384399e+0', '-0.131384399'); + T('5.493193351746495014e+9', '1.0058110782705526011700063e+10', '15551304134.452021025700063'); + T('3.7662480770326031342303292983e+26', '-1.532179017e+5', '3.766248077032603134228797119283e+26'); + T('2.2078732616074486433852e+19', '-8.0117272927216e+5', '22078732616073685261.12272784'); + T('-1.101469921604903937413697e+24', '-5.6493478665614358249763e+22', '-1.15796340027051829566346e+24'); + T('4.002068393e+2', '3.88674498621732e-19', '400.206839300000000000388674498621732'); + T('1.18924625762106479751351e+1', '2.12367151349326e-7', '11.8924627885777993244611'); + T('6.18899636825e+1', '-1.34517400616695669045e-3', '61.88861850849383304330955'); + T('-1.727166e+4', '-1.232546640708229439e-7', '-17271.6600001232546640708229439'); + T('-7.39e-16', '2.158174383154757e-7', '2.158174375764757e-7'); + T('5.95645368014790753037091178681e-18', '8.9194691702199e+13', '89194691702199.00000000000000000595645368014790753037091178681'); + T('2.4544990425537516895759e+6', '1.2777961e+5', '2582278.6525537516895759'); + T('-5.185388510885e+1', '-7.693787224e-8', '-51.85388518578787224'); + T('-2.7398396455549889037919557e+23', '-4.220983829023255e+0', '-2.73983964555498890379199790983829023255e+23'); + T('1.02153991719e+1', '9.3244708599174510285e-9', '10.2153991812244708599174510285'); + T('4.60472064169766494e+16', '-1.0328246092260039e+0', '46047206416976648.3671753907739961'); + T('-2.38454077437299e+14', '-4e+0', '-238454077437303'); + T('8.370371680400711505807e+17', '7.56e-7', '837037168040071150.580700756'); + T('2.10262406584177455194e+6', '-7.99673704574e+1', '2102544.09847131715194'); + T('1.35918051082554629399892854005e+7', '-9.05428949025616791486522594e+1', '13591714.5653605603783101367482406'); + T('4.19333658548894567e+0', '1e+0', '5.19333658548894567'); + T('-1.12684363429737223640594383707e+22', '8.25876483519322470373806e+21', '-3.0096715077804976603213783707e+21'); + T('0e+0', '6.04e+2', '604'); + T('1.8364537e+2', '1.0468696299566552286716e+22', '1.046869629956655228689964537e+22'); + T('-5.073984e+6', '6.9887615721504817196587e+8', '693802173.21504817196587'); + T('2.5457e+2', '1.341466050473471653464e+9', '1341466305.043471653464'); + T('5.448451501591168054051559931e+5', '6.906967417242e-6', '544845.1501660237728223979931'); + T('-1.194671553787672e+1', '-1.91896603190801227e+3', '-1930.91274744588899'); + T('1.279395975361696355442e+8', '-6.96569613221558540371e+7', '58282636.2140137815071'); + T('-5.97073932850348e-7', '-2.2291090891563813e+4', '-22291.090892160886932850348'); + T('1.464561173e+9', '1e+0', '1464561174'); + T('-9.4963284032193e+3', '6.16644216458418847e+10', '61664412149.5134814807'); + T('-5.4865356898608376e+9', '5e+0', '-5486535684.8608376'); + T('1.807335611418e+5', '0e+0', '180733.5611418'); + T('4.79648059622793e+11', '-5.79415144368e+3', '479648053828.64155632'); + T('-1.19816450616e+11', '-5.716149095e-7', '-119816450616.0000005716149095'); + T('-2.3561102073882235262820415e-17', '-1.608713271019924e-3', '-0.001608713271019947561102073882235262820415'); + T('4.34065400608679942e+8', '-6.6465252539670797297214992789e+4', '433998935.356140271202702785007211'); + T('3.0930179144e+10', '0e+0', '30930179144'); + T('5.366042e+2', '2.270835328764610647e+18', '2270835328764611183.6042'); + T('7.48097472370778786852679e-7', '9.4767671341211803315002015e+26', '9.47676713412118033150020150000000748097472370778786852679e+26'); + T('-8.23842e+4', '1.229458568566523723615668197597e+14', '122945856774268.1723615668197597'); + T('-8.7862458629211487549e+19', '-1.1019849690697e+0', '-87862458629211487550.1019849690697'); + T('0e+0', '1.089862696164931e+15', '1089862696164931'); + T('-1.4492938845e+8', '-1.42921263881025236036504955e+26', '-1.4292126388102523618143434345e+26'); + T('-1.6381521194899074907e+6', '5.6572651171333e-11', '-1638152.119489907434127348828667'); + T('-4.396054117495148392356145377e+21', '-1.829550398438512721241206e+17', '-4.3962370725349922436282694976e+21'); + T('3.742420087218951e+10', '-1.730936977e+2', '37424200699.0958123'); + T('-1.1285098282e+2', '3.0174920978669756069e-1', '-112.54923361021330243931'); + T('3.328692e-19', '-3.74463079e+10', '-37446307899.9999999999999999996671308'); + T('1.28232894392211733573999076556e+29', '1.149729331569322243219279e+20', '1.282328945071846667309313008779279e+29'); + T('1.07034e+2', '1.4997e+1', '122.031'); + T('-2.76584099e-19', '-3.3993789e-8', '-3.3993789000276584099e-8'); + T('-4.60271074562e+11', '-3.45574059291359666323689575e+15', '-3456200863988158.66323689575'); + T('1.73104292971e+10', '7.220485847821601e+10', '89515287775.31601'); + T('2.26079231553066e+14', '-3.429835324275129e+15', '-3203756092722063'); + T('4.909949450328607351257e+9', '1.693032494154686e+15', '1693037404104136.328607351257'); + T('2.804004587e+1', '3.054e-4', '28.04035127'); + T('-1.21373e+4', '-1.7051357521743463e+13', '-17051357533880.763'); + T('-2.010863577144665818021832751e+17', '-1.1990113e+7', '-201086357726456694.8021832751'); + T('-7.1235473e+6', '-3.145986004148e+9', '-3153109551.448'); + T('1.3665398036864664266039e+22', '4.089516e-2', '1.366539803686466426603904089516e+22'); + T('1.727799e+0', '-4.8149925e+4', '-48148.197201'); + T('6.6630744630002551658489e+11', '-5.8410410897522728193e+12', '-5174733643452.24730271511'); + T('2.0767364695045007623516126e+11', '6.25410192352696e+8', '208299057142.80277223516126'); + T('7.75e+0', '-1.569335603101854838490073823e-12', '7.749999999998430664396898145161509926177'); + T('5e+0', '-7.431618517651602908e+18', '-7431618517651602903'); + T('-1.5453e+3', '-3.9000399435568029e-6', '-1545.3000039000399435568029'); + T('-7.0748737648616353693e+0', '2.591961010757e+5', '259189.0262019351383646307'); + T('1.651e+4', '-2.8703125534636e+9', '-2870296043.4636'); + T('3.087702748515e-12', '8.3067008464351e+3', '8306.700846435103087702748515'); + T('7.7880835734433871606349974196e+9', '2.82154e+4', '7788111788.8433871606349974196'); + T('-1.9482797447534242447e+5', '4.172181002194178915e-13', '-194827.9744753424240527818997805821085'); + T('1.23e+0', '1.22e+0', '2.45'); + T('1.692421753e-9', '8.9292167159609532663074588e+4', '89292.167159611225084827588'); + T('-4.003138001375e+6', '-3.6225528729195e+13', '-36225532732333.001375'); + T('-1.043499514e+8', '1.85379394110541607112156303315e+27', '1.85379394110541607101721308175e+27'); + T('1.2e+0', '-2.2e+0', '-1'); + T('-4.59964147358e+0', '-1.245052236142679713264875449e+25', '-1.245052236142679713264875908964147358e+25'); + T('1.435745816367079985483e-17', '-2.2506199410005066316855e-13', '-2.2504763664188699236869517e-13'); + T('3.9212949955518e+12', '-6.253e+2', '3921294994926.5'); + T('3.272898632836139464918e+14', '-1.125321770879687081334515545e+6', '327289862158292.175612112918665484455'); + T('-7.0051742181e+0', '-3.558851591145309897e+6', '-3558858.596319527997'); + T('-1.17791e-5', '-2.8283187205369969776764952883e+28', '-2.82831872053699697767649528830000117791e+28'); + T('8.6191671e-12', '-8.66936689467088e+10', '-86693668946.7087999999913808329'); + T('3.67300220532035e-3', '-2.20592e+2', '-220.58832699779467965'); + T('5.307907765699952590606427e+24', '-8.116566770561e+12', '5.307907765691836023835866e+24'); + T('1.3693156074977e+1', '-1.86125e+3', '-1847.556843925023'); + T('-1.305776227522e+0', '3.1e+0', '1.794223772478'); + T('-5.8e+0', '-4.2864143878e-14', '-5.800000000000042864143878'); + T('7.3171907466448357479336251741e-7', '-3.6643373621770251e-1', '-0.36643300449862784551642520663748259'); + T('9.5507944480252871732e+8', '-1.473719301517056667482e+7', '940342251.78735815064518'); + T('-1.594802356375808285e+18', '2.2091549349442255368551009e+23', '2.2091389869206617787722509e+23'); + T('-1.38180012856133843768288e+23', '-1.4881225686551882e+12', '-1.381800128576219663369431882e+23'); + T('3.9944940533448e-11', '-1.42182826302e+9', '-1421828263.019999999960055059466552'); + T('2.1246e+0', '-1.190013e-18', '2.124599999999999998809987'); + T('-1.6725888942e+5', '5.22591577449581327e+5', '355332.688029581327'); + T('6.2523356350387526825216271e-1', '5.8015517e+6', '5801552.32523356350387526825216271'); + T('-3.5042195675619e+11', '-1.61923859937529243154197361e+19', '-16192386344174881071.6097361'); + T('5.326226512685426512311428421e+15', '-2.14826116e+2', '5326226512685211.686195428421'); + T('-2.033908204665857e-20', '5.0334987e-20', '2.999590495334143e-20'); + T('4.92122690634e+11', '-1e+0', '492122690633'); + T('-1.850639822486488995e+3', '2.2247255806523203254e+6', '2222874.940829833836405'); + T('-1.4652329507e-8', '-2.2e+0', '-2.200000014652329507'); + T('1.031983768655972e+3', '3.196384720063040238523e+7', '31964879.18439905835723'); + T('-3.95755151236389821e+0', '8.219752462201035868e+15', '8219752462201031.91044848763610179'); + T('4.960062e-7', '-4.48e-18', '4.9600619999552e-7'); + T('8.424039578e+8', '-1.3745220992603451351702e+8', '704951747.87396548648298'); + T('5.306671354863915213e-8', '9.108152565584071569e-2', '0.09108157872255426432915213'); + T('-1.469495615534e+1', '4.847e-3', '-14.69010915534'); + T('3.5853e+3', '1.7093298564986700250582085e+15', '1709329856502255.3250582085'); + T('5.482e+2', '-4.105575442089757e+15', '-4105575442089208.8'); + T('1.99e+2', '3.8145468189e-3', '199.0038145468189'); + T('-3.49258722592820006912e-2', '-1.949843151114522843231e+2', '-195.0192409837115663237912'); + T('-1.1936922e+2', '1.94667093809609e+10', '19466709261.59168'); + T('3.0612779617e+9', '5.5021749870968147533e-4', '3061277961.70055021749870968147533'); + T('1.6469577765954843637144527776e+25', '-3.53617804087992991e+1', '1.64695777659548436371444924142195912007009e+25'); + T('5.762086232617e+3', '-1e+0', '5761.086232617'); + T('-2.085492256313382505e+20', '2.73885062e-11', '-208549225631338250499.9999999999726114938'); + T('-1.0504694638041059389625e+14', '1.2117447209021816889456469472e+27', '1.21174472090207664199926653660610375e+27'); + T('3.266124155553289418147501e+25', '-1.196361921508326229864197918e+8', '3.26612415555328940618388178491673770135802082e+25'); + T('-3.681434944093545137202e-11', '-9.8172931644e-9', '-9.85410751384093545137202e-9'); + T('-5.5110319265e+9', '2.511e+2', '-5511031675.4'); + T('2.24384830388360906481037e+4', '-6.688e+4', '-44441.5169611639093518963'); + T('1.30685382594601602875155e-13', '-2.9e-7', '-2.89999869314617405398397124845e-7'); + T('1.256635121672088721271099e+24', '9.2e+0', '1.2566351216720887212711082e+24'); + T('4.25e+1', '2.097673647e+5', '209809.8647'); + T('-1.0834844778746335e+4', '5.724238385893731161972e-7', '-10834.8447781739111614106268838028'); + T('-1.3622153693079e+13', '-1.82203795563644950428091436626e+29', '-1.82203795563644964050245129705e+29'); + T('6.124567392189732e-10', '2.086068109112e-5', '0.0000208612935478592189732'); + T('-1.01e-15', '-1.6428548827105e+6', '-1642854.88271050000000101'); + T('-4.277650516254732251e-20', '5.58481757486e+1', '55.84817574859999999995722349483745267749'); + T('-3.9947160422255e+13', '1.230577e+0', '-39947160422253.769423'); + T('-6.97056460621311741e+17', '-1.19084697861e-14', '-697056460621311741.0000000000000119084697861'); + T('1.99e+0', '2.432670941489e+2', '245.2570941489'); + T('2.8e+0', '-6e-13', '2.7999999999994'); + T('1.48e+1', '-4.493331507903141119919e+20', '-449333150790314111977.1'); + T('1.5212827e+1', '2.37852664031269644800630723e+6', '2378541.85313969644800630723'); + T('-8.68972e+3', '-3.409629e+3', '-12099.349'); + T('8.7e+0', '1.053877931698399708032024498e+3', '1062.577931698399708032024498'); + T('-5.569516602e+2', '-7.674336919779554845819e+9', '-7674337476.731215045819'); + T('-2.33172e+4', '-1.1357215e+6', '-1159038.7'); + T('-7.728437483e+4', '-1.954891686102566032254774334e-1', '-77284.5703191686102566032254774334'); + T('-1.794108984118418586e+19', '4.29563121585293316012291166e+26', '4.29563103644203474828105306e+26'); + T('-2.5159616882775e+7', '0e+0', '-25159616.882775'); + T('-1.1497021250372501e+2', '8.3582955257533834133933719723e+22', '8.358295525753383413381874951049627499e+22'); + T('2.8314056900555843e+12', '4.23695829388274243636e-6', '2831405690055.58430423695829388274243636'); + T('-1.31709787273518408e+17', '8.014510794225900917778e+4', '-131709787273438262.89205774099082222'); + T('0e+0', '-1.629e+2', '-162.9'); + T('7.65253317420838491672142405e-2', '-7.99262139691085667872536301e+15', '-7992621396910856.6022000312679161508327857595'); + T('1.890960123000345821183126769e+14', '7.20788924150109e+9', '189103220189276.0832083126769'); + T('-1.3e+0', '8.319553612816369962e+7', '83195534.82816369962'); + T('-3.5558858e+7', '-8.10954e-10', '-35558858.000000000810954'); + T('-6.59635684e-11', '-1.12991511439649957747410439089e+29', '-1.129915114396499577474104390890000000000659635684e+29'); + T('2.84985498518035e+0', '-2.69695005783e+4', '-26966.65072331481965'); + T('-6.85881760429450007919e+20', '-4.2520891329373816896808041239e-11', '-685881760429450007919.000000000042520891329373816896808041239'); + T('-7.60611902357978e+5', '0e+0', '-760611.902357978'); + T('-2.8400853393896819e-12', '3.9346602572408205959634e+10', '39346602572.4082059596311599146606103181'); + T('-6.2918148769550413935353223e-6', '-1.46926127598445193e+7', '-14692612.7598508111148769550413935353223'); + T('-6.6e+0', '5.29e+2', '522.4'); + T('-5.32901866812117076e+16', '5.923499732512e+7', '-53290186621976710.27488'); + T('2.8826366994411923511e-4', '9.0827607747846942e+14', '908276077478469.42028826366994411923511'); + T('-1.16063858058205683e+17', '1.63197623001574371048e+1', '-116063858058205666.6802376998425628952'); + T('2.33448774537387e-8', '-2.344769e+1', '-23.4476899766551225462613'); + T('5.221324777342731268951204567e+27', '5.2831642468607302614700095e+25', '5.274156419811338571565904662e+27'); + T('3.176941232598488925334e+19', '-5.78631858983696974141e+20', '-546862446657712084887.66'); + T('-9.83148865e-8', '2.162567052649e-8', '-7.668921597351e-8'); + T('1.45780087267250652143848567879e+17', '2.31e+1', '145780087267250675.243848567879'); + T('1.938157e+6', '2.60157906e+1', '1938183.0157906'); + T('2.428e-6', '-5.322e+3', '-5321.999997572'); + T('8.2046484844e+3', '2.1549373877917e+14', '215493738787374.6484844'); + T('-8.834664968e+2', '-2.55430491293e+5', '-256313.9577898'); + T('2.3572045735847686172e+12', '-1.3818314700215998e+16', '-13815957495642413.2313828'); + T('-3.2657953413e-16', '4.1453273974121236811839e-18', '-3.224342067325878763188161e-16'); + T('3.9e+1', '9.93455000207993341247941942e-15', '39.00000000000000993455000207993341247941942'); + T('9.37900728e+0', '-7.836904346001529841e-17', '9.37900727999999992163095653998470159'); + T('-3.0891e+0', '-9.719267672741339831199e+21', '-9.7192676727413398312020891e+21'); + T('1.76267171902379081421e-4', '4.274711452739918e+15', '4274711452739918.000176267171902379081421'); + T('1.3371e-5', '-2.337338537516546e+15', '-2337338537516545.999986629'); + T('5.1552633575093e+3', '-4.78079e-3', '5155.2585767193'); + T('-5.5504722943333778362e+19', '8.8121340924893706238e+8', '-55504722942452564952.75106293762'); + T('-9.56289179492575435222173761e+9', '-1.5507589407486e+14', '-155085456966654.92575435222173761'); + T('1.813253984710071e+8', '-1.19293200963040761850166359388e+11', '-119111875564.569754750166359388'); + T('4.813328953637197259781466269e-12', '-4.47e+0', '-4.469999999995186671046362802740218533731'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js new file mode 100644 index 0000000..896d5cd --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js @@ -0,0 +1,1535 @@ +var count = (function pow(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + MAX_POWER = 1e6; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, n, exp) { + assert(String(expected), String(new BigNumber(n).pow(exp))) + } + + log('\n Testing pow...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : false, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 21] + }); + + // ---------------------------------------------------------------- v8 start + // Tests the special cases specified by ES 15.8.2.13 + + + T(4, 2, 2); + T(2147483648, 2, 31); + T(0.25, 2, -2); + T(0.0625, 2, -4); + T(1, 1, 100); + T(0, 0, 1000); + + T(NaN, 2, NaN); + T(NaN, +0, NaN); + T(NaN, -0, NaN); + T(NaN, Infinity, NaN); + T(NaN, -Infinity, NaN); + + T(1, NaN, +0); + T(1, NaN, -0); + + T(NaN, NaN, NaN); + T(NaN, NaN, 2.2); + T(NaN, NaN, 1); + T(NaN, NaN, -1); + T(NaN, NaN, -2.2); + T(NaN, NaN, Infinity); + T(NaN, NaN, -Infinity); + + T(Infinity, 1.1, Infinity); + T(Infinity, -1.1, Infinity); + T(Infinity, 2, Infinity); + T(Infinity, -2, Infinity); + T(0, 2, -Infinity); + T(0, -2, -Infinity); + + T(+Infinity, 1/1.1, -Infinity); + T(+Infinity, 1/-1.1, -Infinity); + T(+Infinity, 1/2, -Infinity); + T(+Infinity, 1/-2, -Infinity); + + T(NaN, 1, Infinity); + T(NaN, 1, -Infinity); + T(NaN, -1, Infinity); + T(NaN, -1, -Infinity); + + T(+0, 0.1, Infinity); + T(+0, -0.1, Infinity); + T(+0, 0.999, Infinity); + T(+0, -0.999, Infinity); + + T(Infinity, 0.1, -Infinity); + T(Infinity, -0.1, -Infinity); + T(Infinity, 0.999, -Infinity); + T(Infinity, -0.999, -Infinity); + + T(Infinity, Infinity, 2); + T(+Infinity, 1/Infinity, -2); + T(Infinity, -Infinity, 2); + + T(-Infinity, -Infinity, 3); + T(-Infinity, -Infinity, 13); + + T(-Infinity, 1/-Infinity, -3); + T(-Infinity, 1/-Infinity, -13); + T(-Infinity, 1/-0, 3); + T(-Infinity, 1/-0, 13); + T(-Infinity, -0, -3); + T(-Infinity, -0, -13); + T(-Infinity, -0, -1); + + // Note: Out of range exponents become +-Infinity, + // so the result will not match Math.pow. + T(Infinity, -0, -10000000001); // Math.pow(-0, -10000000001) == -Infinity + + T(+Infinity, 1/-Infinity, -2); + + T(+Infinity, 1/+0, 1.1); + T(+Infinity, 1/+0, 2); + + T(Infinity, +0, -1.1); + T(Infinity, +0, -2); + + T(+Infinity, 1/-0, 2); + T(Infinity, -0, -2); + + T(-0.00001, -0.00001, 1.1); + T(-100000, -0.00001, -1.1); + + T(-Infinity, 1/-0, 1); + T(Infinity, 1/-0, 10000000001); // Math.pow(1/-0, 10000000001) == -Infinity + + T(NaN, 2, null); // Math.pow(2, null) == 1 + T(NaN, 2, undefined); + T(NaN, 2, NaN); + T(NaN, 2, 'erger'); + T(NaN, 2, {}); + T(NaN, 2, []); // Math.pow(2, []) == 1 + T(Infinity, 2, 1e6 + 1); + T(0, 2, -1e6 - 1); + T(Infinity, -2, 1e6 + 1); // Test 75 // Math.pow(-2, 1e6 + 1) == -Infinity + T(0, -2, -1e6 - 1); + T(0, -0.2, 1e6 + 1); + T(Infinity, -0.2, -1e6 - 1); // Math.pow(-0.2, -1e6 - 1) == -Infinity + T(0, 0.2, 1e6 + 1); + T(Infinity, 0.2, -1e6 - 1); + + // The following differ to Math.pow as the exponent will be truncated to 0, + // so the result will always be 1. + T(1, 1/-0, 0.5); // Math.pow(1/-0, 0.5) == Infinity + T(1, -0, -0.5); // Math.pow(-0, -0.5) == Infinity + T(1, 1/-0, 0.6); // Math.pow(1/-0, 0.6) == Infinity + T(1, -0, -0.6); // Math.pow(-0, -0.6) == Infinity + T(1, Infinity, 0.1); // Math.pow(Infinity, 0.1) == Infinity + T(1, 1/Infinity, -0.1); // Math.pow(1/Infinity, -0.1) == Infinity + + // ------------------------------------------------------------------ v8 end + + T(16, 2, 4.01); + T(8, 2, 3.99); + + T('4096', '8', 4); + T('-1.331', '-1.1', 3); + T('5.125696', '-2.264', 2); + T('6.7266e-7', '6.7266E-7', 1); + T('1', '-1', 8); + T('4142779.6499215776', '21.06', 5); + T('731.1616', '-5.2', 4); + T('1', '61818', 0); + T('3.2', '3.2', 1); + T('5.4139923025768140625e-41', '-1.945E-7', 6); + T('1280630.81718016', '5.8', 8); + T('3965.318943552', '15.828', 3); + T('53.721', '53.721', 1); + T('1', '-1.9', 0); + T('4.58357323731267363492522744606954913014016e-39', '-0.0000161306', 8); + T('-8560814308.6108448224', '-96.94', 5); + T('4.4127502627834341562081e-74', '-6.77E-10', 8); + T('79327261142.56790234534719652175488087744161', '23.0371', 8); + T('3.101121e-38', '1.761E-19', 2); + T('1', '-1', 4); + T('6.23201296e-28', '-1.58E-7', 4); + T('-8.50893402176e-19', '-9.476E-7', 3); + T('16', '4', 2); + T('90368789.0625', '-97.5', 4); + T('1', '-112.8', 0); + T('4.122181458338334221291398681640625e+27', '40042.5', 6); + T('5.94467302491009e+21', '1290.0', 7); + T('5.6599836943004175019970957e+25', '141437', 5); + T('9', '3', 2); + T('69.75757441', '1.7', 8); + T('1e-42', '0.0000010', 7); + T('8', '8', 1); + T('-2.5090696333749305038864384e+25', '-664', 9); + T('24794.911296', '5.4', 6); + T('7077398515.1515538432', '93.32', 5); + T('-1.4520042511984659693722813984375e-130', '-2.8295E-19', 7); + T('4', '4', 1); + T('372088627687.312953646321', '781.019', 4); + T('-5.3864523289963490660381317787272961329536e-23', '-0.000658806', 7); + T('-1.8', '-1.8', 1); + T('1', '-5.9', 0); + T('1', '2', 0); + T('-6.4097340625', '-1.45', 5); + T('170859375', '15', 7); + T('595732589817199.440265999920799232', '43.82', 9); + T('1.7080198121677824e+36', '-4200', 10); + T('1', '658.8', 0); + T('136.460505366756569881', '2.269', 6); + T('-1', '-1', 3); + T('236007.159691873761', '-22.041', 4); + T('1', '-1.1', 0); + T('287803125756.085809269657829376', '18.76', 9); + T('4.1069049025e-34', '-2.02655E-17', 2); + T('-8', '-2', 3); + T('-5.0787635527751e-52', '-5.51E-11', 5); + T('-8', '-2', 3); + T('1704883919.2576', '203.2', 4); + T('22106814.0740608', '11.2', 7); + T('3.7481851264119295287828498195966142655968201e+23', '227.71', 10); + T('-3', '-3', 1); + T('5.308416e-54', '4.8E-14', 4); + T('1', '-1', 8); + T('1', '-4.1', 0); + T('398', '398', 1); + T('1', '1.17981E-18', 0); + T('255896509713547.45824', '761.4', 5); + T('16807', '7', 5); + T('1', '232.6', 0); + T('2.67066142562472466573674890357652039841e+30', '-6358.1', 8); + T('390625', '-5', 8); + T('85766121', '21.0', 6); + T('2206809.987903620081317314341735861401', '4.309', 10); + T('6.1917364224e-80', '-1.2E-8', 10); + T('64', '-2', 6); + T('-1', '-1', 7); + T('-39.8778220049', '-2.09', 5); + T('892496818.033068251283537321', '-31.029', 6); + T('1.1289646949223432899980166202016362758071452681629968849e+25', '320.087', 10); + T('1932991.455312009', '124.569', 3); + T('635307227133823.258624', '-293.2', 6); + T('784', '-28', 2); + T('-43361725294765860565.175323475675341312', '-152.02', 9); + T('1589.6036888689492933115234375', '4.36775', 5); + T('1', '-18.4', 0); + T('20832.8532313216810321678408500840248440324096', '3.46612', 8); + T('6.5536', '-1.6', 4); + T('174729381067.247616', '5590.56', 3); + T('-4.084101e-14', '-0.0021', 5); + T('7.46848810699576790739263937619996819197249e+21', '153.93', 10); + T('2.09881105970752e-16', '0.0000059428', 3); + T('23298085122481', '-169', 6); + T('1', '-4.095E-11', 0); + T('30016915.773120638290557721', '17.629', 6); + T('16807', '7', 5); + T('130666515.5580240243056896', '-10.34', 8); + T('-5.97080224872032e-91', '-9.02E-19', 5); + T('-3450.25251', '-5.1', 5); + T('43046721', '-9', 8); + T('1', '1', 1); + T('3545.66529682492339392399', '5.1279', 5); + T('3396.171616714297', '15.0313', 3); + T('4.622674003397519975764019459730496e+33', '-408146', 6); + T('1', '918.0', 0); + T('7.59375', '1.5', 5); + T('-67822.3072849', '-4.90', 7); + T('3.7588592026706176e-104', '-1.18E-13', 8); + T('1', '1', 3); + T('5237990.22862336', '47.84', 4); + T('11698.5856', '10.4', 4); + T('110075314176', '24', 8); + T('3.24210716131761936e-27', '2.38620E-7', 4); + T('9', '3', 2); + T('14641', '121', 2); + T('62.81386652381601821841', '2.81523', 4); + T('1', '8', 0); + T('4.29981696e-160', '-1.2E-20', 8); + T('1.692652673311521044295612689449216e-7', '-0.14242', 8); + T('1', '-19.5', 0); + T('1', '8621.8', 0); + T('7.907e-7', '7.907E-7', 1); + T('1.61051', '1.1', 5); + T('1.553e-14', '1.553E-14', 1); + T('858461358961485360081', '171171', 4); + T('64', '-2', 6); + T('-2.9', '-2.9', 1); + T('-2.0661046784e-179', '-1.4E-20', 9); + T('39.0625', '-2.5', 4); + T('-391460020121.8781037', '-45.3', 7); + T('-80.1', '-80.1', 1); + T('3.5831808', '1.2', 7); + T('41.08469075197275390625', '-1.45', 10); + T('-128', '-2', 7); + T('-5277043158.170301334052958483', '-12.03', 9); + T('100.31024025', '10.0155', 2); + T('262144', '4', 9); + T('-2.66450474490105494016e-70', '-1.86E-8', 9); + T('1.58541338622748269695158625134808009096449e+21', '-131.83', 10); + T('1.69e-14', '1.3E-7', 2); + T('81', '-3', 4); + T('1.3979045762098993055105649e+25', '327', 10); + T('-2.8334269484119140625e-17', '-0.0145', 9); + T('8455365204.69607', '96.7', 5); + T('4.826809', '-1.3', 6); + T('-4.2027e-14', '-4.2027E-14', 1); + T('-3671885391606530844.02199', '-5163.9', 5); + T('1.4833', '1.4833', 1); + T('1078702060.96', '32843.6', 2); + T('16384', '4', 7); + T('0.000041046707114327285209693732389121', '-0.185729', 6); + T('9.04141586678594150656e-76', '1.73404E-19', 4); + T('7', '7', 1); + T('-5.408864751631992324037382349788164206309e+39', '-25989', 9); + T('3.6213725246884329693766314512921496510839580087890625e-58', '0.00000180255', 10); + T('51.58686976', '-2.68', 4); + T('32562222.2784028467808485507564561204461862636001', '5.6399', 10); + T('1.5269627878770126091369423832739776731492122624e-24', '-0.0041532', 10); + T('2.27128515349184346452713121698128944001e-82', '-6.849E-9', 10); + T('788.12330352545906108118941549114886272', '2.59298', 7); + T('-128', '-2', 7); + T('2.43585613160298150834272926486523151679435546875e+29', '1841.55', 9); + T('3573226485.213841', '39.1', 6); + T('5.0912', '5.0912', 1); + T('1.302260124847515625e-102', '1.0450E-17', 6); + T('-1097881.796860068547323829', '-4.69', 9); + T('24.137569', '1.70', 6); + T('67.937289638464', '-2.02', 6); + T('-91125', '-45.0', 3); + T('3.5658406477912053139330818066558837890625e-96', '1.17225E-12', 8); + T('5.11226325150500959599107782635087831282590275214649e-160', '-1.17723E-16', 10); + T('67.937289638464', '-2.02', 6); + T('-3125', '-5', 5); + T('-3125', '-5', 5); + T('-2983765.0756983032103435524997723277', '-8.4133', 7); + T('4535877.137495584829386816', '-12.866', 6); + T('256', '-2', 8); + T('-7.9', '-7.9', 1); + T('4.18161601', '1.430', 4); + T('2.3591116836e-38', '-1.53594E-19', 2); + T('6648326359.9150104576', '9.6', 10); + T('65536', '-4', 8); + T('22777216155500625', '-12285', 4); + T('1', '-1.14E-9', 0); + T('1', '7.4', 0); + T('1.21', '1.1', 2); + T('0.248', '0.248', 1); + T('-2187', '-3', 7); + T('1.48996e-23', '-3.86E-12', 2); + T('2.49173e-14', '2.49173E-14', 1); + T('-2738.124199', '-13.99', 3); + T('-2.7044661231722633428249e-63', '-3.0649E-13', 5); + T('0.0000998001', '-0.00999', 2); + T('9', '3', 2); + T('-331.370935156703232', '-3.192', 5); + T('2.611824102393094023763', '1.147', 7); + T('-527', '-527', 1); + T('27', '3', 3); + T('2.313441e-34', '3.90E-9', 4); + T('1', '-8.00148E-16', 0); + T('6.427669793976056365481141274099681e+25', '-1682.7', 8); + T('-27', '-3', 3); + T('256', '-2', 8); + T('59049', '-3', 10); + T('8.7713801081173367580884490451432713332434379776e+26', '494.66', 10); + T('20234327779106168.4159474599729911316138226499265176167424', '42.7178', 10); + T('-27', '-3', 3); + T('0.009411328144', '-0.097012', 2); + T('349044.64', '-590.8', 2); + T('4750.104241', '-4.1', 6); + T('-173928970714601588962.8103429', '-778.9', 7); + T('3656158440062976', '-36', 10); + T('6.12220032e+22', '1800', 7); + T('1', '3.4', 0); + T('9.70097321773035876225154576358130561e-37', '0.000031503', 8); + T('-12.812904', '-2.34', 3); + T('-1.7340444960685031988323168e+25', '-111638', 5); + T('282475249', '7', 10); + T('-81.746504', '-4.34', 3); + T('-7.219028320823404915424e-24', '-0.000023534', 5); + T('41.0338673', '1.7', 7); + T('2.0415562993764162403236821478431932029075456e-128', '6.4896E-15', 9); + T('82955.444920574689', '43.6129', 3); + T('-160578147647843', '-107', 7); + T('3450.25251', '5.1', 5); + T('82854921260716023991.1435387164164096', '308.88', 8); + T('1', '-285', 0); + T('390625', '-5', 8); + T('1.8189597967773564082837969e-101', '1.6217E-17', 6); + T('2.825761e-74', '4.1E-19', 4); + T('1355738723022659.5905381376', '-32.6', 10); + T('1', '26.5', 0); + T('1', '-1', 4); + T('9', '3', 2); + T('8.02677619844494861156679981606477327016984576e-140', '4.10268E-18', 8); + T('6', '6', 1); + T('-97.65625', '-2.5', 5); + T('47524', '218', 2); + T('4.70681', '4.70681', 1); + T('3588.01', '59.9', 2); + T('1', '-52.1233', 0); + T('150837370166.726828752896', '-72.960', 6); + T('1', '-202722', 0); + T('531441', '9.0', 6); + T('1', '1', 8); + T('16', '-2', 4); + T('10.5413504', '1.4', 7); + T('-43003385433558549', '-350349', 3); + T('11656', '11656.0', 1); + T('2.5937424601e-80', '-1.1E-8', 10); + T('380008', '380008', 1); + T('1', '1', 10); + T('65248.283129848297112850803864372537279713', '3.4273', 9); + T('-1147575293595.98432', '-258.2', 5); + T('1.3689e-20', '1.17E-10', 2); + T('5.9969536e-41', '-8.80E-11', 4); + T('36', '6', 2); + T('8.38561807e-52', '9.43E-18', 3); + T('4248380.5456', '45.4', 4); + T('15400296222.263289476715621650663041', '-18.769', 8); + T('2381343457183.27934976', '1242.24', 4); + T('1', '1', 4); + T('4.78918476762052235286361700161e+21', '512.9', 8); + T('2089309226.032466059985824', '73.114', 5); + T('2641.807540224', '2.4', 9); + T('1', '430.260', 0); + T('6.1917364224', '1.2', 10); + T('19407735094418288.17030696889622168576', '42.54', 10); + T('1', '-10.7661', 0); + T('-3125', '-5', 5); + T('481.890304', '2.8', 6); + T('3.341488431860881e-53', '-7.603E-14', 4); + T('1', '2.8', 0); + T('14214.495945642721', '-10.919', 4); + T('40353607', '7', 9); + T('2.033478055981629545259599e-91', '7.2719E-19', 5); + T('1.0007101809887004032e-16', '0.00518', 7); + T('82653950016', '66', 6); + T('287365339.799', '659.9', 3); + T('1.2675964125399273523216299738998904467161547776e+26', '-407.66', 10); + T('64', '-2', 6); + T('41933.25113121', '-14.31', 4); + T('-300763', '-67', 3); + T('2187', '3.00', 7); + T('1085328071.651663', '1027.670', 3); + T('3.02024876193621053068500168512434520049e-112', '7.047E-12', 10); + T('-50817457664', '-3704', 3); + T('1.2167e-14', '0.0000230', 3); + T('-47932.2', '-47932.2', 1); + T('-2187', '-3', 7); + T('-10.611843208841110742516870554084117001', '-1.3001', 9); + T('1', '-1', 2); + T('-80473337380004.2860993293', '-604.13', 5); + T('574015339044', '-757638', 2); + T('1', '1', 5); + T('2.53295162119140625e-13', '0.055', 10); + T('-6.12220032e-20', '-0.00180', 7); + T('-27', '-3', 3); + T('11040808032', '102', 5); + T('416336.3127196737601536', '5.04', 8); + T('269175550798.26432', '193.2', 5); + T('-1.528', '-1.528', 1); + T('4.782969e-127', '9.0E-19', 7); + T('-7.51e-8', '-7.51E-8', 1); + T('1024', '-2', 10); + T('607.850029476310544160862292358275390625', '2.0385', 9); + T('-11.8', '-11.8', 1); + T('1.076079329936225357094692222242816e+27', '32011.6', 6); + T('-351982550989147112', '-706058', 3); + T('1', '1', 0); + T('9', '-3', 2); + T('86.44348156327976252176', '-3.04918', 4); + T('1.382898042825325230836148576046154775429376e+34', '18518.2', 8); + T('193.180743258112', '5.7808', 3); + T('-38.98', '-38.98', 1); + T('456976', '-26', 4); + T('-5.156993509526072073746875e+24', '-87595', 5); + T('-3311111.840687797824457', '-20.137', 5); + T('-3854601532649', '-329', 5); + T('1', '-8011', 0); + T('1', '2', 0); + T('1', '-0.0185', 0); + T('245925124', '15682', 2); + T('-5.774467426440121643433984e-21', '-0.00564', 9); + T('1207.269217792', '2.2', 9); + T('4552.045708313044707921', '-4.071', 6); + T('1', '-29.2', 0); + T('-4.3847739074110089716547584e-136', '-4.604E-20', 7); + T('-7776', '-6', 5); + T('3.0745786029631524271923429376e+28', '498376', 5); + T('-322.687697779', '-1.9', 9); + T('-31084123244.396440017759765625', '-14.65', 9); + T('1.4641e-56', '1.1E-14', 4); + T('-172.10368', '-2.8', 5); + T('3894161181.1810745401', '-9.1', 10); + T('1296', '-6', 4); + T('1', '6.2', 0); + T('2.91506581425215873264648192e+26', '872', 9); + T('1.85843153221037962890625e-175', '3.85E-20', 9); + T('2534495.8401', '-39.9', 4); + T('-1.85738630687872790421037608793067224429e-7', '-0.17869', 9); + T('20711912.837890625', '6.5', 9); + T('216270112.515625', '24.5', 6); + T('1.61051e-30', '0.0000011', 5); + T('192541.45824', '11.40', 5); + T('1', '-6.91E-13', 0); + T('2313060.765625', '-11.5', 6); + T('31653832624.2576', '421.8', 4); + T('0.000008916100448256', '-0.144', 6); + T('1', '6.074', 0); + T('200476.12231936', '-4.6', 8); + T('-2097152', '-8', 7); + T('1', '1', 7); + T('1.024e-37', '-3.200E-19', 2); + T('-7.56680642578125e-40', '-0.0000450', 9); + T('22363441', '-4729', 2); + T('0.326940373369', '0.83', 6); + T('0.0653', '0.0653', 1); + T('67937289.638464', '-20.2', 6); + T('1', '-6935.7', 0); + T('37366.9453125', '4.5', 7); + T('84736910327822.09024', '610.4', 5); + T('89.3871739', '1.9', 7); + T('-74088', '-42', 3); + T('2.6', '2.6', 1); + T('-2.74625e-52', '-6.5E-18', 3); + T('7.25211296602410832237035188113814152676619241652224e-20', '0.0121912', 10); + T('-0.231616946283203125', '-0.85', 9); + T('136117620759552651.464603466304', '-717.22', 6); + T('7149.24299', '5.9', 5); + T('-105748.898523294431279732941', '-5.221', 7); + T('4', '-2', 2); + T('2.177e-10', '2.177E-10', 1); + T('729', '3', 6); + T('62050623946302131.87381413659819', '250.59', 7); + T('39413.40648961', '-14.09', 4); + T('1', '1', 0); + T('6561', '3.0', 8); + T('0.000039304', '0.034', 3); + T('343', '7', 3); + T('256', '4', 4); + T('187914065609.1136', '658.4', 4); + T('-2017403668.061600505811231934445020891', '-10.811', 9); + T('1', '-1', 2); + T('-1', '-1.0', 7); + T('-5', '-5', 1); + T('-9892530380752880769', '-129', 9); + T('6.6241549228613285241719980684340096e-106', '9.4286E-16', 7); + T('3.43333904131263903194677248e-46', '0.00000888', 9); + T('-9.7699019384092441818970744182751232e-92', '-9.9668E-14', 7); + T('22518.75390625', '-3.5', 8); + T('9.90817568487338826820891768064226576961e-66', '-7.49030E-9', 8); + T('-2', '-2', 1); + T('3.7805311079775207424e-77', '1.832E-13', 6); + T('-14326936981.650438436683776', '-107.456', 5); + T('31509057.52576', '31.6', 5); + T('-1729271944.97024', '-70.4', 5); + T('4.182119424e-81', '8.4E-17', 5); + T('5406147534197334.84011776', '-92.6', 8); + T('-0.00000363167', '-0.00000363167', 1); + T('9536.7431640625', '-2.5', 10); + T('11094619561', '-105331', 2); + T('3.0073480681463454661678314208984375e-137', '6.775E-16', 9); + T('1.5374535781262326309644119647446644001e+29', '-4449.9', 8); + T('9.70138473177843532176348676096e+29', '99496', 6); + T('127.45506816', '-3.36', 4); + T('1', '-84.7', 0); + T('1.7499128828948144488585826444218125390625e+40', '-107245', 8); + T('3577.714596', '-59.814', 2); + T('-13012.5', '-13012.5', 1); + T('-1', '-1', 1); + T('16', '2', 4); + T('254016', '504.0', 2); + T('-1607.369262344', '-11.714', 3); + T('1', '1.251E-11', 0); + T('208.5136', '3.8', 4); + T('387420489', '9', 9); + T('1', '4.2', 0); + T('6104030772588134.765625', '-427.5', 6); + T('161.29', '12.7', 2); + T('9', '3', 2); + T('-2181835737885608.101460104333373352538009179', '-50.619', 9); + T('-3997.92155722610103', '-3.27', 7); + T('2565164201769', '-117', 6); + T('-512', '-8', 3); + T('6.04380441302073327515625e+23', '-9195', 6); + T('1', '1', 5); + T('-9.2389579776e-25', '-0.0000156', 5); + T('7.997656216391946134348627101293601e+33', '17293', 8); + T('39520792565978809.524305593609', '-583.63', 6); + T('16', '-2', 4); + T('7807.4896', '-9.4', 4); + T('248832', '12.0', 5); + T('496981290961', '-89', 6); + T('-4.3606774182392e-44', '-3.5198E-15', 3); + T('16777216', '64', 4); + T('1', '1.0', 6); + T('1', '91.4', 0); + T('9.851127637605409e-117', '-4.63E-20', 6); + T('1', '-1.4E-9', 0); + T('-4.52470110728381829e-7', '-0.00767709', 3); + T('282475249', '7.0', 10); + T('16651779441254092864', '1598', 6); + T('729', '3', 6); + T('6.90946358996746999370693799867018948630842395035736169049e-104', '-4.82997E-11', 10); + T('684.84796416', '26.1696', 2); + T('-1', '-1', 5); + T('1', '-6', 0); + T('0.0000078310985281', '-0.23', 8); + T('2.274064', '-1.508', 2); + T('3.04122555034158459939649e-47', '-0.0000223', 10); + T('696452982073287.871843324909094936562277581368328192', '44.5872', 9); + T('-7.5151448e-29', '-4.22E-10', 3); + T('1', '6', 0); + T('-12.708', '-12.708', 1); + T('70', '70', 1); + T('2187', '3', 7); + T('-1.628413597910449e-174', '-4.9E-20', 9); + T('-6.312457192887951173182283446626151709594241e-66', '-5.6961E-8', 9); + T('0.000299069043583441159212021318210939', '0.4059', 9); + T('15.995353981724701', '1.741', 5); + T('1', '97857', 0); + T('0.221585791441', '-0.470729', 2); + T('1', '52.0023', 0); + T('-26015680550432', '-482', 5); + T('22903.7956', '151.34', 2); + T('6.561e-17', '-8.1E-9', 2); + T('-93189625398108974.44387339079552', '-265.58', 7); + T('-3086125724460522.34468469084288', '-163.22', 7); + T('0.0000051', '0.0000051', 1); + T('19683', '3', 9); + T('-2.4507253464874125175251e+22', '-30051', 5); + T('-38.907147732329430154371456512', '-1.502', 9); + T('4.68733667816790896452997907438948199465216e+41', '161758', 8); + T('64', '-2', 6); + T('27541696650101.74182563635028557824', '-22.08', 10); + T('1.352771823277379852935844331805603817270014056494234420224e-23', '-0.00516562', 10); + T('1', '1', 4); + T('-2350072823968', '-298', 5); + T('8941.5936', '-94.56', 2); + T('97241.5', '97241.5', 1); + T('6.93207873781332929149e-50', '9.49E-8', 7); + T('-59049', '-9', 5); + T('-8882.144880086754771640625', '-3.665', 7); + T('8100981934880.472', '20083.8', 3); + T('16', '4.0', 2); + T('6.561e-49', '-9.00E-13', 4); + T('-446592952.353220867168501', '-53.701', 5); + T('-3.2466525536194576823494051652634346881e-125', '-1.47210E-14', 9); + T('3.89751', '3.89751', 1); + T('3.8443359375e-107', '1.5E-12', 9); + T('493.039', '7.9', 3); + T('-16807', '-7', 5); + T('-4.7471727261300877329502034895519256591796875e+34', '-7127.5', 9); + T('49', '-7', 2); + T('1.27e-12', '1.27E-12', 1); + T('30373391.06115737305088', '11.72', 7); + T('1', '-1', 6); + T('-19349.17632', '-7.2', 5); + T('361', '19.0', 2); + T('1', '0', 0); + T('-10077696', '-6', 9); + T('42180.533641', '5.9', 6); + T('38.443359375', '1.5', 9); + T('1643032', '118', 3); + T('16', '-2', 4); + T('1962.49', '-44.3', 2); + T('640.09', '-25.3', 2); + T('8693.75638483077329986588967330173480782272550321318049', '-2.47697', 10); + T('8105445187812500000', '6050', 5); + T('3106365092236328976', '41982', 4); + T('1.9e-18', '1.9E-18', 1); + T('1388437454689.837102639637015104', '105.622', 6); + T('217.67', '217.67', 1); + T('-1', '-1', 1); + T('-40.84101', '-2.1', 5); + T('1.542564e-12', '-0.0000012420', 2); + T('-1.18009517625e-37', '-4.9050E-13', 3); + T('5549069137356750625', '-48535', 4); + T('1172.7599043051', '4.11', 5); + T('1.024e-39', '-3.2E-20', 2); + T('64', '-2', 6); + T('9765625', '-5', 10); + T('10174708482.4576', '317.6', 4); + T('4596.544052624786837880243001942570369016159210753', '2.55233', 9); + T('4096', '8', 4); + T('729', '-3', 6); + T('19034163', '267.0', 3); + T('7.13342911662882601e-183', '-6.1E-19', 10); + T('-8', '-2', 3); + T('7.458836077824580594735138491702651752566987e+24', '580.27', 9); + T('-1.488656882033767469315065509517197312e-126', '-1.0452E-14', 9); + T('-22512044836648447.5871232', '-216.8', 7); + T('1', '1.0', 2); + T('-1048576', '-16.0', 5); + T('2.96566225198439749053708901e+26', '196981', 5); + T('387361397731.0852349972153162834577841407848071071001', '-14.4149', 10); + T('2.5937424601', '1.1', 10); + T('1', '-132.84', 0); + T('1', '4642.2', 0); + T('-7.3499661205554469210497482752e+28', '-1612', 9); + T('2.56745903401e-35', '-5.06701E-18', 2); + T('-8.0416926477372443174045490389e-14', '-0.013469', 7); + T('481.890304', '2.8', 6); + T('-2.0079766520165347109375e+22', '-1535', 7); + T('-3.34255384e-7', '-0.00694', 3); + T('65536', '-4', 8); + T('15700.150160096030724096', '5.004', 6); + T('3', '3', 1); + T('-1024', '-4.0', 5); + T('1', '-0.0000026', 0); + T('3.75e-11', '3.75E-11', 1); + T('-2.197e-33', '-1.3E-11', 3); + T('850260.560009615038237114368', '7.032', 7); + T('1.165611915415579117119882256009e-48', '-1.02587E-8', 6); + T('1.874746414628249416823686235041e+30', '-6083', 8); + T('3541035030023585410.9685579776', '-71.6', 10); + T('159873594510682.812023861622308942042241', '59.631', 8); + T('964', '964', 1); + T('1', '7', 0); + T('1', '1', 7); + T('959554720546.9939335182868736', '-31.46', 8); + T('390625', '5', 8); + T('8.58117156760783434066136732224e-67', '9.7482E-12', 6); + T('1', '1.10E-19', 0); + T('2.7206534396294947e-38', '0.000067', 9); + T('-2.7993930117296371229848579851719540736e+30', '-22365.6', 7); + T('5531947943217503125', '5605', 5); + T('2.77921878692682183940201e+33', '2210', 10); + T('-1.34775901066369285240390603125e+29', '-669765', 5); + T('1', '1', 8); + T('-187.539', '-187.539', 1); + T('114983.567789585767578125', '3.65', 9); + T('1', '1', 6); + T('9.5563709286130016454092290324007041e+28', '-67615.9', 6); + T('2.39576999392237432790890516398336', '-1.1154', 8); + T('-23.924567789936824982851522063', '-1.423', 9); + T('39.4384', '-6.28', 2); + T('46411484401953', '33', 9); + T('3864', '3864', 1); + T('20554002898923904', '214', 7); + T('1', '-481', 0); + T('1073741824', '8', 10); + T('64', '-2', 6); + T('-15633814.156853823', '-6.3', 9); + T('7.9', '7.9', 1); + T('-284.68', '-284.68', 1); + T('1', '92.6', 0); + T('256', '4', 4); + T('-4233837892.359375', '-1617.75', 3); + T('1.01054975167057821704275308297863156222443369140625e+40', '10010.5', 10); + T('4.15867265447116306999621451776e-171', '-9.16E-18', 10); + T('14796.346375', '24.55', 3); + T('0.000003596774583043934673428448834277192142749696', '-0.208684', 8); + T('19619412024963200000', '7220', 5); + T('203.33219575276960518721', '3.77617', 4); + T('2187', '3', 7); + T('-512', '-2', 9); + T('1', '2.4E-15', 0); + T('-79', '-79', 1); + T('-281399112371155271', '-311', 7); + T('2.0441457156547956272121e-32', '-0.000005229', 6); + T('164546156906.7655853425459503979807203014092043691201', '13.2321', 10); + T('-46.13', '-46.13', 1); + T('191707312997281', '-61', 8); + T('1019.4513038883292709315124224', '3.99644', 5); + T('1', '3', 0); + T('1', '-44.4', 0); + T('545516.0701056', '6.6', 7); + T('-4177', '-4177', 1); + T('358050', '358050', 1); + T('229.97659811731444699830505796029057408', '2.17462', 7); + T('2.6108288368639387032909799e-70', '1.21159E-14', 5); + T('4325169905.757', '1629.3', 3); + T('122.5', '122.50', 1); + T('1', '-0.0001858', 0); + T('3.17145729137553882999930496108165023687245824e+34', '2819.2', 10); + T('-1', '-1', 3); + T('-49.358166606568', '-3.6682', 3); + T('-3.0228559084421978498330001408', '-1.17120', 7); + T('24.76099', '1.9', 5); + T('-17.576', '-2.6', 3); + T('-20', '-20', 1); + T('-1', '-1', 1); + T('30804.095140913337149030892729572601', '2.811', 10); + T('15625', '-5', 6); + T('117649', '7', 6); + T('27', '3', 3); + T('-65939.264', '-40.4', 3); + T('4.56976e-27', '2.6E-7', 4); + T('3052847.6176', '41.8', 4); + T('18440755681.001536', '51.4', 6); + T('693.43957', '3.7', 5); + T('-10187688835060.27636096761856', '-72.16', 7); + T('-290.1', '-290.1', 1); + T('-2097152', '-8', 7); + T('63.582', '63.582', 1); + T('-92713.643576', '-45.26', 3); + T('58778272623218534616.288838935169', '1971.83', 6); + T('606071.1605323', '6.7', 7); + T('49478904727733663575.051582184770446498259493718971258958961046708278746324459568256251259157238318185790764612200843144821137580796334089638532287323488178607687532035618686192601481827902773410791645057647691925965756808571011539462511641266331263543939501901006735272661302011976870015625991111560481188335365459566760212844848008439578745211448299643484693328447464460429576345111356618402802188681216', '-1.60380', 96); + T('1.17647340482075248419254427344376045314316013640615098803852731448350843468375614975229837000370025634765625e+81', '-1312.5', 26); + T('7.0251816660378376802360594609084621021532608383100803495211258733288152327693358768741786747381360859889479870288549139760601303377485234176e+87', '-2391.76', 26); + T('85.717123455378345835968064', '2.0998', 6); + T('7.8189586726154755713303078223442071754329e+40', '187', 18); + T('9.145283009860369082115124525217171723626500086794105722560960199131059600008740516579605574000306840952542591838726900925804876261491646795282472377021036430500854987560433039755667787412917103148092128371355207976203112911565783359385741850905996481e+41', '-6.4113', 52); + T('2.05766289512932241998482631797034621069017517962263802542480365981262536498089637707776e+86', '26', 61); + T('98190573319064.214163360748608660888346857427032348178060040012159036566957731914573312588336568078808326155328828092023492584783227218123097647282496144318320115860427194595696623235777670393347299594686642872330179664094829207439052010438267983369137644871417464586087393161049', '-1.6293', 66); + T('1.392598192044227355988772015943279484446048049140235246881310663971517522995991944491655264930301742862780134225258915488062891063359354742689683631308848403923615202977361e+171', '109', 84); + T('1.5469996446227372120183605762031536360861258626528255060075983309687394111102266369973688377324297491658050323998067994446097153176237864040180207896595918522219595889946775556217e+64', '13.37', 57); + T('417.53905413413116367045797', '1.3', 23); + T('1.624290817967129588779052613030846258081e+39', '79677', 8); + T('-6.3573488855626874208656330920509964477352567129457629687143164320289038602869782661489925857813432230614125728607177734375e-576', '-0.00000000000000935', 41); + T('4.64886146511675512184781529230310759569090675635563199653956477629674515058124652544e-866', '0.0000000000014', 73); + T('6.613998972307900952958925063693292646912001305426127894831260851822286968476028114198011923029274945784114379928252947652708965396453170282038903005249536e-263', '0.00000908', 52); + T('17179869184', '2', 34); + T('9.7756260861181096053516970094092017016032995016954767790504110039917368643756356818044285001644705953440430468819149794081183248976623767084182482857941562203266736374606395800621259352114936429301555533971456e+141', '131.6', 67); + T('4294967296', '2', 32); + T('131621703842267136', '-6', 22); + T('7.9228162514264337593543950336e+28', '2', 96); + T('-1', '-1', 41); + T('5.0096959237841976223015468271587016074738912992534254294320102857326166341642003475731604090433896328441157235303061782495282575910872792923981113856240569836427242032573810996210128117467500761653330557379347005097932959928243111015057764620250811725789666461853189934772359267843261626881e+197', '140.9', 92); + T('2.404907604760405225358828131112281116032698930082119547604265954848982041717359046106827774346003151904701415424e+111', '32', 74); + T('2.69721605590607563262106870407286853611938890184108047911269431464974473521e+22', '-2.7', 52); + T('18.174', '18.174', 1); + T('1.36891479058588375991326027382088315966463695625337436471480190078368997177499076593800206155688941388250484440597994042813512732765695774566001e+43', '2.7', 100); + T('1.25668660115116491467662710973545031109788152235501170924313646703423681882164573441433515503588152722789494580469301248e+72', '34.2', 47); + T('1.56438420672167084519979701497174364597412396629019101951505612890666817698608365177006994887516584111152450449887451995069033040411213741933147153316594951835865202053237255800944727011696760985308614176976019463960094165747239428884158901702435389388132623055120422260406418255249330452909476806656e+299', '1308', 96); + T('-3.3612593878633377323120299366598552550657318092430645826641551765299195886060921308858703945250378295445932063495284056402608601041200858277129191414584253234377130155413110017511561906751453442173764185430889086682955797697564561876544299009572864e-463', '-0.00000030640', 71); + T('-1.366174308182025187777528918308146941320736787278460889575749404867695325446359807161410602138908197731224033169833047036778978022709170976735608988099868310813030127497812540494011203545816852288666658682985428600019476831917843e+58', '-4.83', 85); + T('2.966806088806219456880539423158152815514806645521282752514016241570099725287916962770395912230014801025390625e+28', '-5.15', 40); + T('8589934592', '2', 33); + T('3.92012913845865034844198476089476040042936801910400390625e+28', '-10.5', 28); + T('6.26204859896956162110746451442214931102399028194694661966016701109504299345041406486245804277657094315831017177064948219797627444240188709011456e+72', '10.6', 71); + T('-7.4010922571797388655581604684527426699437277457499992187268655958229686891933340740793991046504324130585438416249947232728346081088006867719609592595610095069331022367447133421906806310032697675369409918188139600222703781482594772971289070262621142441874895437059567046831661495957273728351051362944953711082346089727330717918651409489163662706555003193741825901442633007312863953564385259087744338361955671878877893732351367361843585968017578125e+364', '-31956.5', 81); + T('6.192736416792149755132475219493405669399778858602560762871794455317449717448580836229845787580888290473782381059983387805505374173265513677435445890655671110840202944429668728225878544903602239e-270', '0.000319', 77); + T('2.321827472731847506187210910989207010589651530892302311791322352855446782760907718473019283821056753242967949096791603718944064726033664384082861996009850744961116407128920163494805886357836270766853975184523023642990429569615539676822828070446559161161124635674389704743948383107212919966543969471039720464085404567773913503635201792672811032312063265454094042341369554833714443413857449688164664657173315113983032808001e+220', '159.83', 100); + T('4.953736650985698001275587761883016173298229503362193331584010106486052779761329981195411366329068322677550960044762649449732919438910119549694010717647780952298320287365138145210431380601324547389442337520392258009e+27', '-2.797', 62); + T('-338678221586896.02233451034424755534030583977124338116841050703894756829829935320421996887', '-2.47', 37); + T('-3.181403788572786716059998378326698266679069780899509454959934125355133265193e-226', '-0.0000057', 43); + T('2.2481244795444847556680083178853571141700204725943661497539185751725919215990484669445118877448657555202573745174750533635052209260608084995835891707958259234271442982681066779696130155696868114346639852814575962457281749995256623713554214237458259176913852401064878760784275382146658972801541462348779288776844691139086889351786721e+179', '229.03', 76); + T('1.09544203269304121665791452848994634135137143229447033238750572549632571476402641497730897157401184093614916314911584167715115647604065370616785146866296916632437569033863034458711783186506727022529378159297811462454675308057682780534190256280910865229376785975491743196806996272790525705427972427376758443312371576466422700240638756574402393677191376501159420836822933903938571935476091044876631814554274289087939783553959776485376e+31', '-2.0436', 100); + T('-18437563379.178327736384102280592359424', '-2.4', 27); + T('-2.565217290810806995636762133271387046711787821113755094865559403845937698002650308359872294490245896048511431844327060222279092126522644090602653932364773936569690704345703125e-1286', '-0.00000000000000000245', 73); + T('-9.9938258857146531850367031e-85', '-0.0000000231', 11); + T('2.45673281757908854552870925433471410070214400334169452520459965621921664416713287959754208329284439619509099451538227140937811535553399003066102795766261859069268099803838998995339331311912275460846260697085073312049264485545427543086425664188963659692922005683716104197951717376e+78', '-6.08', 100); + T('-1.270210714458885172439348525985048001607770314656078008119108251089872343340175575576722621917724609375e+24', '-4.15', 39); + T('1209.5', '1209.5', 1); + T('1220703125', '5.0', 13); + T('2.2282376678496302739664556233420633e-74', '0.000000006553', 9); + T('-2.0143178310003212256300583293456672172631020531521918361472772972889521239226102046625809514969363623444910359830312781808037277269448486731571232348276098930038993446113250228220070581715505392835999598313673094262893473819122138457089550860895343281662272401621942844086800579631762991581889839022236592407099699255051163050728007905851774204682372669170991112060985568225152641619715730738207580551834481069203501503809308865543720800327e-380', '-0.000067223', 91); + T('2.218088039378445352751296336694731578146959285984085545221611060271486214348079661041003283535646898758718143100202167951881147633680620698026648392938984778649e+159', '893', 54); + T('2.10030968607618842407969732186669026418164521383378412734005003194384320968659491239802049483617846390172315534146347011074332799904332281963786542263761412332465321180532568441958976108339460464558490863953503079336356338135760894630619724493454777575270501253639608281424341291617698518141921861556244699796561591915201261004739209197698527393965924844797945393999012105081714167479170123104969e-75', '-0.16053', 94); + T('2.5812157101662325924336748344070521698410946762506012782923924916938485004644329931151074914373301798478548152505612780265485671672098712055026947247254600014458282820627468534250894082132928621697659949721616819635951012296371246281717642419683893063297904005186874144169940879165882368e+286', '25488', 65); + T('-15.625', '-2.5', 3); + T('2.9729685996261878754343622542880008372085710279050331084451543295302017053107644303792930816e+59', '-72.2', 32); + T('8.15730721', '1.3', 8); + T('1027.334860999330573407176938442293022889', '-1.47', 18); + T('1.20109289910050514343148045475506579676136202628631781424931463646123976128634333627993215283736800191296195442718065238702508520055513255346146658609301480565930380776363581062628797012612519067602295957218821773367819208495782017345400726347727499503218384384326417098721424389373157748956399698521853695814977704822352568748499324367082691064737392226159651276162776412093080580234527587890625e+315', '8679.5', 80); + T('-6.00774319642841528092711102659123449286352750007573133369794363392e-33', '-0.22', 49); + T('-4.399348626310072691340857398671747903319767685984244866658805429802943497233040561059795990923598510826890908258017493538766494536483606174431755682553269424176946343755577041745496403493430254087811474250251864009392456889456030217048416123130922140883015639602300329038985615284964386359900403921860549312983015992252637174331659470716194350399038561704290046291e+177', '-81.31', 93); + T('-2.8207084178214872249481823288498698761858927113247705134064774975584407746875292397517412079545141630385439164566258891612557809688920433687345470043533104587152797682527671453716396264049694524828296706083384902442044310310028264740195536658201877924115112455928789057407729309051948428713154253269588754827200494136242524139799015813072692354239567376152196027070283776e-140', '-0.022816', 85); + T('-3.05410827582876268390180635074883196222812916959850956275590047122226930793718597160851022493537771838978253152932907298258251555751167476560688772053768410645587233357374279876239597797393798828125e-247', '-0.000000217485', 37); + T('5.94029530519133658573841651381893916937282220672559984930445801765696530117833330901747112098660456061962952244422396324466169433806822249922825538552986841011e-19', '0.491', 59); + T('6.30523820693302485362185385323378612453984181696300485861970499164041182778517073604560519798249286847423997356860449832519236757706844668669858983416671702949907296869514603475482872905487176008793424936405673085021973514041591620544995041842415714193527926259387876594710020672351902248919941484928131103515625e+217', '-207.5', 94); + T('1.3437482898194084408359108790569717431056936319064040016470306278420649755238589129250716839755182586596297106623509972801915917688676116852207e-198', '0.0047', 85); + T('-7.2125976851811538835264180669311252876757309817127885777282268797579465235996423577991265862898834402822899090972405912847104748143261578733778979456054998346007864343435284069799588577484912513898046820531311312862161018665360468415091050892814436289818311468501837802070896183140379745282036670643116477155731121958797307187300620339307163520531060733946755523082115115646976e+279', '-767.6', 97); + T('-3.6014175419419889979825978713404525121917028354184157603813105843373968813713708575013260529677555144144724689493141661197266911743582631754736205113266715503341523389605232359965730457026715491821102337726896541765297511282920487936650122950956509166185123335946923710632464810273024751e+116', '-23.51', 85); + T('864441744884.215763637320205869663958329635842919446190153261333597518371076208416885489806126587561695103959519298009135858834566699504679568405218950836778578735139166130606578479646072479355927241854902595925015466294859320621226069690609744261681250304', '1.404', 81); + T('2.1740698194376449374483147468467027620784304276072222988616865620688896e+52', '808.4', 18); + T('3.8358611506121121577937e+22', '113', 11); + T('7.708142065054490966774434895299862856570563111111152865942369472254266622057906176e-375', '0.0000000000000002582', 24); + T('1.697054670829812124918589801369405630774787179949418285317226086899030607907838200923128944336540480137932154797404155642362243064347816887752994688507537824596616056930370261936449615792564115353680658971035397858675806419291627327666883921628766762017e+153', '35.3', 99); + T('-4.710128697246244834921603689e+27', '-9', 29); + T('3.2505902718449668133084058626546515621706592677748264541998335302067693284031047914414370910433910917853346703702752017311701370087768406221174636457161634693311184118695477205673579866365261461786447054994132502457715569269165081396243597525386428206972507983546973520886724081775555138991647659604473279e+52', '6.8159', 63); + T('10125003344964.40019736846338763496828575459544161517257186895064610033021488387585533013795387142569984', '1.4', 89); + T('2.42345584530855605369352607812401621812969514892052587699595659920444177232215830190610734163995767659717739085262295176867928060719223680015363045876418329825526462245791557686517318912084055326038644410192581225881763601238326486032097397313474568621301371994854117791159281618952104825018353797567777238802251899860635626775962501422496596274647502903894924414615487350912292031481351426623112873751676007424245517123533625171075882961511452925284934841852786866383531618051093655741591513417469573410554311639321196001e-979', '-0.000000000163623', 100); + T('-1.4631650542473900277009650505078819321358806229e+27', '-26.90', 19); + T('0.000005295825289418576524939548312590198218162176', '0.468', 16); + T('3.05549283928318655080789264037405744521084525112150000840590011398025015062827701972944507923133274963552582295751430636384831621423236859444282002625831436173279343347208611168256e-1317', '0.0000000000000000000436', 68); + T('6.8737496584907426626313819245031248376837843308744720028536801727310422590256416090562808800210844531270544472690018733914673078562856645346395894509829890694096382823686071373178326267458718358846285479617141539840116621230393837804338664073754005311299301249174709116759875425996420794047622228612301608179896688165566947248834248141957503280864708798493297587091913325875132574818764391975237904072613078649529818121345346997223704868660928398187111003322117526971179779471513066563912173514255531973497213908454568244522179614576040541056831042204810866674499062704103999143936e+424', '147892459.992', 52); + T('-2.8146479662541597081274416178733121860079696712353521349953087140279328650573199835200989048752954416072723266612561673395327067860385419926496980826273624648819979832189443473160998127180490840670643347268997115172483666046588726408061842543063557107507571471460449079090247848491631453237051551777817536688202337705039020111356944014738131800368308453481235885327559176247859131329636754873006899345889798004981220291943445182637375840333548122722503521409219604293110110218239977642014577818005413689988750976249287035141420798845245155557117360125630350198594871668428356167381408479509575844631810711980641599329408885428661560190538079795413218925648499321738196539353823363150418207529405972685060870280312509298991051194276419276281665021145145231388777163604743396002252126683136e+708', '-928355316.6', 79); + T('4.1550056575303757228119633897485161478257545991080710781246444078890480445595483297162130879326322767394020818992612209273113282741423297800374026062917889514219222760102972249776783705399405702208500983661432328199077976712616889331132073633345739451305161947343186063845584853370234906486236182246156880042982439581300028796255911192143593205953934116870666334468549426713036166883165227311236788431588170407270107831386834377236415331046139978378131343210669779889432793552847716954802965953947383085829332369100621026610341613919587586441133939688279844321511780619910499072915827001583773089715651976020809993294119257087611233862264828674135126902550664589266837280471718998978964104111815396251418310806010610004963036079972123625916091809522896488981728056893575146362581153784045875486607998050213627823201e-26', '-0.433918499439', 70); + T('-2.13825209215512828440269455240169347772084407562319954177735966744864590012014618496355742013223900851293500036195697397558882293948621657334016332630442341312358031641684225772703692879077286212410249112292259617578818732032e+224', '-203479518', 27); + T('4.07921626152759874706750636234610711277511981267140799487233110013700434628310396204835945123342429644616677263924098409140271398300308140751898877152374852101672423561384671338353950413166856702896620695812471792217562634286857498132969913812033679861984845959241689697235821203390602245450598886660048044481023188506388871537857616153846606889656647661553925800233006508370220964183808519443488054785371171178458637493447718543668982370416902695149696323193977948327786874993513535986236378654219637640158954029160466244562872094676729043997615005949784734421964950592990177655538750040478391007794104382875758798061808214848367338145330473927905182075863984150597953008335668923177942931986912633579578368880902417004108428955078125e-349', '0.0000007725113250445', 57); + T('5.444517870735015415413993718908291383296e+39', '8', 44); + T('-33338.549041729', '-33338.549041729', 1); + T('2.7214030202002235259872217354276868322505756236796101744750922254072943468398158090938361760503196297567571421573431913968089480080443473498108606049915577803053551131894096917430267992139228904833591260925102332702863889641131058350845466180073805176058062062511496305436593986927276878340795001904960142635221849217162104418149855782368706167456898339731322626805338533602069310753044118499679070391659043014863756212342671519561753648641528938961249781667596503442752009505056776106357574462890625e+355', '25403380.775', 48); + T('7.488967886646769020135665775188919173982517766411546419429833806092666779946692720558606535250488757150058796202968413241639517383652620019580992048245618242802791919565261399799275748008372859035772846386750851749482155871108863512939378067436886935381752737141129513585362569208124557454386670272939418822453438670913670149714787757724915875534683373244734438381987473430196456436990814262346701710120113213932002664424213764208834743329181661358839573220074737883074138029822996500442023856383570524772344040729242866145735668954219795903770313321694206678450634108956120637363083442475459132238765735069225942833258958556032448438304510175681777905847909119739292131657606066356382458693278659384332038729633098815077443043626686315515128390302721e+430', '5400237.28783', 64); + T('-134217728', '-8.00', 9); + T('6.4919612772480684272077477598407081955951769084986853540654908040236664132468736e+31', '4.6', 48); + T('-2.19516244547091597952961625454695348245614659050655334765404613313384017646438800510561124115050347626607557413049526710505947787909678168881471450760692589194458296975014469481607782428972426101228030076378151928725802874208326366011927330053807955414428037618766935246244704158022651997839e-412', '-0.000000000027838959', 39); + T('-408518.488', '-74.2', 3); + T('2.6122383559387081296537383480965114437482497294603331038492821930754511334614082451247995976011754175948033208350877260508339210350470971773483611262598975948388081226982520139805939801386768827832059816233575763932242012655210850575522139572300856461682889553829554870249034765972111622144e-53', '0.119534', 57); + T('4.9850229727065564838552075936058884072483546836617925693918734591757063770692197370714015506959425473376386516711436607268208277636503475437445688665069491061323537515635105084625953963084527783397499370629700852265394871597666675552871197319798769732286411073611671053518019648674881861991039408411419655406435532953187363560760310907326462424912442938917143874903625529560559341987014054017728254155646042683657020960066518571091535493426634709747560461439105274695605741238558071638728063086433086290881426724576410242527931842535143281385481835738259965154613661873378195341787543569962613719963795456e-148', '-0.02709904', 94); + T('1.56946509471456053067919046607778209965771259504948582489855492239980383980825548822368765834159376513519684340813231776441618746842197628264511664812727788324193189716236172201170988327488959873357917098281e-1180', '0.00000000000121', 99); + T('1.88522188856624562372708154656751441041381726119427387599765763695834615013232142421520586436232009071932931843172032205056661409003338693915273301223126561630347970098203184279906247655542800284362476149094060315694708604230353242909365032002466875120342181047689475694706227284673985251088619705863125778538982501735383260557349198668384156297528069830916927729430864813333996813440323955895348081117644429414429531206777610934118661932545955356203081687958272101e+350', '1396953.01', 57); + T('-7.4641079962956705920034912695642465787383566977879750308559196923222402311665962335871104200586964218306687527948988363660881738310704671349709669487610144905689251123467238632699575375039822099609504292687413249132266915915320573775450823119373280252201183083672896166447786672561808861768782076443312543759437244643146889964363933455672502577964296155349186564340392078021387512970362139779496580009767098175116221996336815276032e+365', '-425417.2', 65); + T('1.915651048048760989675223006710502095760272088541579446290639477213455428121307995153274075329786132157611746651e+72', '363227.051', 13); + T('-7.65032026817518248876564402449082201253180407179105772287243705588834467106246226864795794350056707139677395342984049031608196167e-158', '-0.0000000000008205956327', 13); + T('1.5286700631942576193765185769276826401e+37', '7', 44); + T('1073741824', '8', 10); + T('-7.492788722116264058568890205770570774859100309722464309788118049412229345772411480224300523702767256086276612012745150464681862935165491623598382139203570285583278591609354972796097254467143774807748614976801272704624819215123157317922738427454525033948883547809409740884056108275497786621497433099431568320476275959806764951584862378486525479494452910448127181400467328943711415916384184330110378180608e+38', '-2.6742', 91); + T('-9.9615483925456314514941835282258027490657130453558630944504898425429565393128463181577359582035968e+22', '-34.13672', 15); + T('1.399922200750534682219817715626042346444265577310152832656021878942015248035909712686518235139333930615671437276362060231490721869741275050613538630628001507198150040959125681675660226363983554975062957910826317184614904091530578807538850671607301864207908455029708464592014690257839027200102495492869235566493012545340996194182688131148892605629158333606816661843824439253963260085811270982958376407623291015625e+181', '8668.79595', 46); + T('1.1972515182562019788602740026717047105681e+40', '9', 42); + T('2.202115503151472939378975945429179012130502358719841711078827390192395746343741047199171734327335651520251442046215323779489495715592781811364085280202651471923814503516348966730262218625708815960745017538450289188340543284914566286787264564178893226078936128988787471928557990525062334846282320996222324625945765877847033774462855391128649374296526404082041033729448885939056214542657236719090328218184247313009075703142241933320700374462796901110200768625476731302618344824136736084289091354487089946804741870143078521211017751418875276281149037837553896673998109493098384421833504725859181031374464775140113274356212635994412769954920908641601e+645', '-116623347', 80); + T('2.809433795080632851709145012225734908409054034941321241601987773815883609706743541544402166343924517939889529050536360240983658675834106822309237371584880050176e+67', '29.26', 46); + T('1.07868398780558185107374474403020532661797776728251416174497323943011899689646635171198704732611201406021634948916076829493438856010253804362200645063540951721664626993793950535311074968979486772512114485903108974813153787515086384110800820767447561947653627148706348696137405309393089297059509877094341371443072935310278087678490134404105182181366232864420501488011018398616532312274978834403446637210442398221579810182631353067504903643457223517919753185513169702647264458151237138501509960401271778857785196059943376161475076004628662470655380785641707995265694079267410121449453510909358494365516418648346056999086350031787200888670260526532745451073436638759925695050423663041216049456771565033256332270529303132799570858912705564112506445240662496492805855959005388730223329638719134014885120936603994232094072118708951475531280218682408087208751084100846868818757315278245976624833064394058879581085028991210887627047410825276390136344004466080305862737728217342821469057995832117084467798274844185879951131300757779959691834097216917003287899924056620049926974974109199191606737920319507952408320236800792559969771048293815035062609730066303408711203037138390978875350456123554886388685750150167745416719567226420868939694324912807423373360490897739135611243033809540137389420138490212707060759530504538976563026719537360751101833747910242549437103469735149162329286577965743319935974856372834520558206976e-156', '-0.0256152689843076', 98); + T('2.88578006478481109681709292955455719460704031113277109068984071037918062293570113975476734737301949530731913632979303450186466568369318518876187546075767065504326813e-502', '0.000000000000027853', 37); + T('-1.130764362193076554708917348657069436161383119992010510285626112959278426786936465605907875370782367006311207257151205709430547608789956273155866459033031412425747753017041228269946019068798157376004812291000927158419091251680264057450083682494989856683271885476193403159681085354715517423876371812000883161101039915298940406738346701704184093773206563783365396974283025554248166993067633181013835776e+229', '-495.16', 85); + T('1.4079204473765793611205659398747988324553877949122198881761823569037754286497795555255078328593539192688183469346829895557363028984266513451480429352198565079209701785014261786299007878956587947295766448428517173439894654471188272662954572295701492355589193513351750151274620765557903307460230125360124013361832687856567900491820049531825904083512531047613995244068915188374911719721681159419255851678650464403431153812796388113981457279816536052532029022159116363377812871507097009696999094856073325011666162559051661029942614061375069471909443382620314251546452011990276242995027453796323946493608369520697971319607477108850805623943653859336240552463433942656966057268476396727643619402363764661755104039596942016778012443861853146848694945561138583599984515041713806683288152679908819567129262792401029872485370102439410128369121641465473638876158320127373102022232994888209825736760912929558531292428824599483050405979156494140625e+234', '-219.5259075', 100); + T('-3.077228040283419501485435148888847716813106712632276671229710377509021026817676725408321326107948661263691709915698886286976007892051135335651197784824163323643144277812710153968406419716183905139635176333083510237302643593683953953477494067043109636077672667948180821005422658784541128359007025402810248257138220199195378601727145592714535208968044372704483391015842523268884989073259915535384596690721656759730286732238685451797332150695395077171985430070293527840123294365665570804795301448909420756992e+418', '-5398620298.48', 43); + T('2591500643510.8703986391408896', '35.620', 8); + T('3.477283234494247174955772981135213481734078932418183722882598073322692286025940951446621170551672753962398590460771481424186923218942154108093532866071869012357999740676113816609494789228401437424825811561820654792528325225812752470383184957891230592748660748903040466372367629077067239697577276390325455061343687182891385586253067945740768918704902176664219044850100644662536723412908533903648591296570565588579797033639391045393005317694425271135677214884155349799855536719234969547130129e-1361', '0.00000000000000000041249830', 74); + T('-3.35390966929685775566428232543003229321430942684482327393890454463616e+26', '-6156.933746', 7); + T('-4911940958770.721866380729238693889243243167048192', '-25.7122', 9); + T('-7.2098871027996882164550848582893324736206875895159968045387594761033704208535510362468505731281582425298017917320284602282447985874106953873551e-295', '-0.0000000000001626351', 23); + T('2.09670982511886308779364382461226064522913244291274975553909045464953985730555995547122852179186171376596687978705841751285402054060384366505333092240660435368377833186306191605049e+179', '2093', 54); + T('-1.3120135409024675389197377e-32', '-0.0000000000235855553', 3); + T('3.06580286249339590556181770635869764259023245764469206004664101e-78', '0.0061', 35); + T('-4.429293345196932276984549040219058245905488651609667018402382745119170674779904528756935495114384894434070998056621967747005022674509457845620395626349316891933712941619646377506486625368600115937614507993729672492431012578899815005421568e+37', '-32.051870380', 25); + T('1.299270565684257922619246441017034698039805547412943905460754496572097300952165266370194652051376805296279609746312644347199238836765289306640625e+56', '-18.85', 44); + T('1.566108714385843340192620380546546555641735293434509574033302065853656477829384746549085411912657151882140111651595251043453318950397645765893613409097202898027341727466585518405768283017471302953847629952837298920882176e+24', '41.0192888808596', 15); + T('2.61958676888190130160363553014940478261307337527924200329289138176e+65', '-1866', 20); + T('3.23590932372253866812859949454563891250217856922745576253641197253435665205998361592799809e+89', '2474977', 14); + T('-9.7368504802272205153595678239454304952368475046930119079817985916928e+67', '-12', 63); + T('3.44552147465294110719732986332367243247925798357929806000836849e+62', '-7', 74); + T('-1.452398236000580121072066902680504451473423787336338424980953647832201352052465847557295963455561081881743103593061176242491787910639717141192177431170020387387239122306327928120484949004627255099437140135623570858068768556995906899604425201341758241176605224609375e-198', '-0.0000000003794433436895', 21); + T('128', '2', 7); + T('5.65251025822228531444194278761233641822281792819659230058333528631972497846690920646507426317458140864925211864848848044857090776165664263450974899867329254381660849739991179791628529582217569168185463633540183106805961127540063207424e+251', '-96880334819820', 18); + T('1.14107582607108828738727786705842372956085739834768525725464902794127546836243697599408154971875430236598124720627825695807225748800206865776759209466523560191022176894495595957948456740052589766169910566748987526231116768317131023909655394007055203701522554585739267475902349909475429549403555539653461493158398661311247261808161537169043101921093658271479583004747121113491003276556799338354235965632672999762610653218768326389269215399799820616040039956676066934784e-213', '-0.00000054573252549798', 34); + T('2.694661255697411397638382996364833318896569132107254175704475656993408149148787257876989709118912535228351106752665777548202167498537778413043897904425246334243516040510224069308160416421621694293323335359415777019643686364603342500176348207942392201863311693577378702165646022467014567507350758519739242895637828787757898674096128347546314083698792347687986627552406389069409804518896369803168004318670513348178554684863589395170672076476692813070782506346023243347685532106534664790313142896989018262863589145173454075951584755268325058105333073378797737002280203168643844576066486206631537822243062881472854331833497932080918039317893726556287893765343937829144478219032999389426126114377441753098232009323368937575158666282216495169817356507116769115165201637431411429901795895447411017897288700508354934492324978841890388723566094744246181121450362989343657238605524996170413474765724415123048917997930643380598337786915363082241543058132144906707064242590005607032784044327110468761297341884902367668493103410518314292043153000929758576269862004120759966136121319405434151364177997201999380295579576988910231518865392237933271936797413045669678563984190093867545214722525723761e-162', '0.0119276152381013', 84); + T('6.819668312352580735571062160710567114849175817831511892010723043920379092031215450236971346081546538898709343868035480833649809755005794379226534646933878314382300734811205288513924832344426178927991401393582816473921386210239936761734834845537558625877346857367488344220978330978463797202471868399404300493221286022793154457818428986435946448801449065938442082235318928992721704504378480165785082979441671849270351366472512862482347465713408854026594512160429600282728718794411008926422853751208126199019311146437195308261518055169159585380164716319779975316169881503852676219525036820498468552310784e+393', '510194.414', 69); + T('1.214529036103353599078303402353988354368901290518483617131872964733929620706476271152496337890625e+43', '6.5', 53); + T('-6.347837933056513353722482549802422893506022350398412637063463118408446866348060970316579990161491662971791431669434501980107126871004910084045827612746953888709955252364570683937894037212845688709149304388261135750051460016927221140392539241810645976791531257356157419153359404750948111183767643741377517979124849570287898660377838281034265223482576628270475748463593328028769895760141786535396100135700043132605861966879736164432625165034941381798797087075873047582570991477092202474033008636487673565486409112008997813187783434059853722747545465564823272494338930887139620822174942289758209743101745474476030369348174618632813079185886197394019109147868498920361931074940617039630508529285432884170952988080710596227749489369515496826666987363170244800209006727739277360232390906096945537367274422272e-1224', '-0.0000000000000007921325322', 81); + T('4.427788351999056892908779661304294204303506505740727156388644268519265092320054815319679560671232535269063116229417433542825837713401836579398864981866891524018752289794372972338646723907744000865693630274469282762772410301411230122599123677701587004286800853942816776387032063244935274501241310871747398849676492965589671571039172675061157921330595997693266588428933017692954803972839671865559553974412513763174029378195757001005995534096180268496099336902456639779966934268998934512369301143425326651935144496827467217523298707659499118081164646205877729620930792063706409045131266902206188922084763864137797951942027404778289235617846011440638260873801319970320165240018403702195879801694584203559689412731527544179035983805204513123788649219706079228081e-76', '0.0355539787671237', 52); + T('-1.2019514515640847575586926976222420288880922930930392632826439389028070216309009753873171550956237644053737905713930601182266550298694556856644221165736835506561041710133625619715943531598437067853105931820970146527606676211927176997675395162032067921680902917533169975496828556060791015625e-332', '-0.00000000000050893518745', 27); + T('-1.3089738102615705488950036718911116878301386483323342409513651601949943841095689259436086715966084434967103664037924413474102289403813212913777522181382481044473580351805322191321973e+181', '-78533', 37); + T('3.96435664551023166009432527884162006067853796367737813024190430384615252569493823212334015555476045223745267710440584785405114790003193045416759973795409712664077896837596687988358977963017261551575085886339378601753188813933464452096512526061746367179589942239837535849629855994642069316614543080293743786862266272667077293905812061925850138605681557967339405649099920095406780826427052068862402508544030914598887413326170889080842118181707782092869110288450380556681201356803298480762937106754408669544846715047370740072553230754652098629105895209895679440213970887252806092019885007412267948350528687016986211524428725145096245261205664457425524504259402407667126129396321622738877790982973827629236592975050954770759254867539024593007061691314559144608057254973749886498871153697476316002651798291357530399789489708421091129587128561305692205004611764864589809192513065786225109359726736441344e-1183', '0.000000000000000440688901534', 77); + T('2.678568043734091619878005678603454046890065730319059041066922617779738732552013071823964867731789481610691269440500962742418256182423074462657908268651743482014494029327824586172450705847083812144127819545703393146264767652584905037972471212033862288363332136481985535835026012527790465668040492097675469321915742224501044837369992177682352931842218853184230289300338298905895371981623996281414258096442423897257161265043380604655709475991898216307163238525390625e-458', '-0.0000106265', 92); + T('1.726146302297509640766292449752859764903022078656430010248920859830072010352007366328438911617657425649650367170506346895173396486476847725257574613405822496736182549233608967999820941307875511369188178896525716609263902445331754066625178138893213646783862066055205225450522717549872978272577099559202040965374304210695726239275248389809683461472065386641615538014939133369785455245219942798762563171967930161818698263654632146616677273270255164005761339575073597428814125346630365394507885993312732399706334184762774047407763728952601184374357825368624589796928083783689318973871597143367328054205245865104545174016228334760205754534111255523758589108503454315120311926536799827472005648122589642825287832641320048477707961989609306835298991026782291839544666294097047274554107822412948625252397092571160782378777183761424371215388093802134334984812532390805884157055020448204417356561101547571620503859926648120658212095674300954695082023275140281418952276189324248672101519574402708232154221216402609706003426735616605880789673740701217723552955825804146586105232550363059826111286997462404300893227116277343564362324133906878692598854932115522796052836850267098160405721244179608199869338374556585830298585958747040887791760204298688011390939627724800498866877415562066410814257206608746120224395781406201422214508056640625e+222', '260.387665955795', 92); + T('1.252453015827223091648143056289e+30', '47', 18); + T('4.593884321465082753417847006029094939767153045428871371185146539475234934788078659649525017869031479813190380591953477672897146298354193774199686172307595609685062957351072442717423824419651156326307969688849329e+172', '34973.7', 38); + T('6.4993779802563991313942147088910855038980304493628711994552936552675080091715543868582664478495863312478503560216160496462563144213423384672637506819444007554298505039521124189159003567749810227911510054190116940785207230365438230686589958633589792785739898681640625e+25', '19.527362557915', 20); + T('22876792454961', '3', 28); + T('429643228077338878294.90980773552148447232', '13385.0992', 5); + T('-7316.89', '-7316.89', 1); + T('6.87914590155026303370980110789497161335603936645395950008039524549423998547430459718690832485899591715423495939905041962091003793736119955958518759896414837384978971473726237305516963629287255286872328980051210041042418780821291070799434690334936525030793157741585829279074161542016174895927147907012499623328711921362945061656483581268375800046383063714806105729927399779641951702986991589688809363278120544452733946185051027375853021790353396740959054941411469330354238589831745170722278547542572570113574396538111546572410672138305451026720042576080626158546636278154541296219048542847365418147562911738603614657265796029784007988955899036541413836373006221312e+589', '120217094.2', 73); + T('1.239574795810526079748489147215724813987666305795348774093301305206857104388667872792722298696320762041716833793171380166642565938543813063965908215730138726274640558732378376081345774829243873301016011042987213064608498952230404692092930689186546931537772947407974492191946655043420261314494731696589682500096515708673465576418083366037746066181944261200756080966915362706737228961228094676733386508269067016989638785370510316351486703825902385195520744639816051326954756067123576368987864531312848054804595825163440506228252295842312598308190174979485478767598866319117877799314143909178603119708443578223570915610468469949806392232326089217551025083863958495966830034713358088911166327675839869180039029601144061805857957059401720225647922270097400056178339656509407631860651339114653575907071912293895974822551650560599072628850817170660484929519400346271419914740172937356080849208976491109534798334462570451085006567233874961401450283993130878770062700272556416772479998171111870509759292224746999678148420295642269858123285894535197188590937033092112714248284586801385841210089015311172545935949730111157433149124120743103281523326976e-1070', '0.00000000000025873908155486', 85); + T('5234016485162380478.15409743331356736233224871362317808951664029477472141754368438049197212877764328120319129016485361', '2.41', 49); + T('2.3587523476214488265105602233384822170431351571499949327792901375176219636953224670476463392373342279772850838452001851364491120595912397303760903286261541146631936830192308870389073374785895767836490477131403524578795077182693968484924474587814719179230245985331005838316256612823429831217004241217996728082675400098261089625533152223187450996066900095561520954236869900406302680423400482744491187930028993448348081190342732950402585676045621897388802838551757987655079454177981594526914994900926245046947484718071152759157721281932920908780781390332713691860960870572770040761154320419837824189071690254844854593343459633607733189681415999534694236173627509165089552965354274533408153893430075897901955566030923516936720199506503090119996175174794124435874644332511673899164593545913859009450879811276894036262929185905062064201251350256407499186307953211211742221462225577354600131030662462776599229715013951102968270099539931356477033894609326532954524810067603029689715219319863214513567526378103385141785789916386486343106420900301324775823843071160771421983879429528958998947915991010621806091931816141987852367290525737e+34', '2.386282102713', 91); + T('936715201610276565.121219177846759965092294037184459655112420506770954861339939295097568524612228771176779451285540872548572669139410080641220337509779355970915039117791045026675942372796217903566744371329096278047272159067195543527515016330528461268617826559677152033625945241108753484887834868554776141004652395753058963525578493344234441729097555557721919163232938285249196150226085243092573393734731092201479606268037047533934826431548289543047983548470548923290980238572301772673775072264037139381648624711690145835765678758822594470249537696766900852116381823037280731383416971641039263361', '-2.368146093671', 48); + T('1.3458439131498195323786528583479606393575536164255741666418955356844345324579594678199724544070952537313508949217012282459611297214665778807265341646101943507184150142509791982872347949683325035172100020000154912216772842085357404197730651656947685019039027437632994864578420850298458434675021508281598421364790325204120523582697615926276683088910375524563225657663644596592216948974056331399590460267403223032587644165524444425820025328591360851973651333314015380853968023632372287350054207185599371069878908668849043723938217393218749026137508121697823922573029674248393275179922555863853082171000692921875494766992093057203484510278165328340192460964396895589377301082266621542097676974077616873128400267882521248810555224844925459156239671725294657022129911051697181823809807228700964467590836700654852334498610034031401231488158553123767644737259941517947087785101465826866359735042387848014989852599568750748869928849235262872434098103652425750975704592582899579447794113208368377654003816485721230449311530271585346790530790428425713522163601027306457750920785462406436356452477565333325504326467125792987644672393798828125e-410', '0.0000087069115374365', 81); + T('-6.1929235359377507312281131012038351587368950153152975357535571845644005480462974619161439022738726479946690750026534164068777632032187658972625047122850721897565751294389171057608669479324287486532007867156146673581246410700360784140288599508760017944860321480468003345825664794759524541276131175689087951776415011273003161501760326678723814154494949608727351108658698662447773169903947201447280945550901147241628131791799019695838180988668491614860985218842845383323542953554350520436926580209264504224289641207101059908641550039414260263864284289634535580271422536744706681662746231304579346896472244224610217365387765143127793708245503177386221263366770715991973516535247445600197317181214103464901242633208165352628228359009946968657720259318250928483525927379586656228952459195584561227411138226350339186199256456210254130733123824550545306156294840068619857494045273956142065000283386051662650884544228310001e+238', '-1527.186030801', 75); + T('-9.18448171920669942200338050009727274073573579465100492416464784644248864677562331387086995022599687737054074140424187879986024804042070022603490146718362719056788563440317890910682257768632925460866552260450415793672740716743856864948011399578402033107962721324762764871499139470157293091799845778141752390211181570286270362089589942764421437922022663206638528993662330911966459538905107421403529415706249287725923857606476849002798755812680628308770502507877888997449832630062999974358780733e+247', '-11613.6333', 61); + T('9.00534500151871393968393182204789895254808009774083925739583913139744428258820018895294210766290738563245192706173741434367174311803991979819858136383571385689405915210566734194237574513700408103748220971184119700751936043969773600887138954770719916145764591788895536769504424586656704372424183902701252759414411596149470601541857251360631738659563583649636774213282738217476649973300597538010960389409378261220341346226990122343134167832094311982679300076141215464857703660864924210486350832131660412093540844768322422730252869897097733912901747800467318861862225211148617574307735346975751376032341961536913141883210606579274491424216450106329517468829186737530608281956211322014174714075245950188408511119277135829814966934159576369452442208992213257734675865633857771370587246881314008195421762766997418140893877428847481759362859431583598206066370359444199841730507231732351726597037154719568424203772133372253713759753114003013627088700294122141177777020252868547836359305587452020511868681628046227604546542259628717458912576794483424426690392370814102629028715884512020934842234539838799872e+1097', '181614013181552', 77); + T('-1.23528311430017745980681640966956076652030679452919906158752021718722301574640224534929754544956717572460637538159556600593377996815523698860198279346656557673391582603822239136397525796715515594924893485174002763423256737401358209070784994372919823627795438659925045145838110381445677693346919667629645750108678235386703421232818567784359923933722891257791623191263321196551881442530246560410717585179292007822202786185443194364605326148507122824090647294413224330381273679824886549106621139051707355050164555704989028861454165044951508278420052199256381844433504794321028008032654947772671808005663922922038567755972745149376920700771177235017180770498424038993156220009935199044697962770631826942473822311984815669248e+475', '-61431287.1198', 61); + T('2.648409294963988844015616e-24', '0.0000000138355056', 3); + T('2.40863472207038829716951461596425356200891165327233287498341065017430044564718221477455813374032856667895504085743031089347856425830213625711815509685491800628989456526993157007511653813393067316060298253585492583958097263354394562221211900373157618798878275619835293896301261289133749847496154802330721946407650402052956106639135229248180394944200385403412146150497882700273381421471626181859523581299015700836664867216504968658889499860010034200157321932124862289179191239642591047175122517733014555125735104472403712501002006088016431555682009e+357', '6337.73', 94); + T('-3502571449.82200575261531309080576', '-2.6', 23); + T('3.476476818948845998001030650476295453181247545559522084788918535203260597551626095245998397584095580303926090518042805770647508288690085639158825885044253780231438163844934309393e-520', '0.00000000000021393', 41); + T('3.01264602077503396553028159046697775952364093583950024836015253833440897836386470207048971682950128610418919156549188373312577357571717925360563881487841993249907698003381917913550805575200795765716052288892628051588664016510473689746879884622780863018244491731859793637242017876542348273336934204544690232710638389609197987886252503990407378825398639153993405459244929392649916196490420428591295051414371300821828051366484998485944752317128395695896528773542603956895037622256170062938519314235861903738115128360302046928256980541146446559607826088951046677218861706599854555915276720853351646088067836131525708447208119772629571725216339427934609234459201358526789418029470210806603721281e+161', '2312.83553970261', 48); + T('9.005184717176930478102791782076862228006327352615805784783146333035706197635879005693552412099811970184378799956879273e-246', '0.00000003753', 33); + T('1', '1', 25); + T('4.05129929545010159177895753388178150581456809338867612606558959308891452424132880822384248894555509941430703770187352267719278049966852159867408411313868048284652990968283076525530668485093689102888375971926511478236021580486207199815304541755517361681744424769768925178687424398875682126555432767026580854082660116786254097997542073404521882149466694962687119267533030305371904385001716197248516783116746628128159682519599799144439980293050507629744383718958560423968444215424641122740550965524020102239043491734038919336670135222799567722578231175799352527458223575143415900224592903685252952681818992387167675100469288777308071037639375810753979067339068471e+77', '6.310711', 97); + T('-1.1809125003067061836785344667120764389443931749265317457525459548456128442105786285468877390219672806038351135283671645849621670658638427296075188535296e+27', '-7.46960', 31); + T('-7804725.584345565904628551916716032', '-1.8', 27); + T('652.68343537143736977925527144667849979675453569710942641839519790994481', '-1.1', 68); + T('6.347632690470980780771578675552276637061059382774318001265539984506213934765263884921639481863522855446850248190640384975242547827559674641143687363586046653926918728263293566118669512822042487976415052111413256676605941161792519436820477099825895274456934341461395679285131684015935258759683653353217057215413375333241770058757608263160466756836580028579606957497117342564425931824695481220509415164212500845154298184282125397297745919183962458931412844756465334244299196320609660981439919849161615207060803762786556888490763055537968954854206553722868857068202003810763342647095974540704073677096870053573460935331503249667563019861185471271460943390068145540005687872827e-1245', '0.000000000000000002992906323', 71); + T('2.15563894172196024093920977150538929699155317817435721941139671042584098028409386483275286853014376052273085179955316467499415655783131107622838141170698636978879185262823690153018555305556315588279210146398953033272874508316308577279223442110325742384869562140427172170238905749958161250632960545305389673718773669576798283170556914818983685326769736551061354350641792755121899728402406494468077316475802887495468901294965903992610334661015465862948472103491723924769010992037621122249854108885083324606934823928420467636542974980236452139793226916820487035909041906512281298939379459990899889643386394707926539730879629157307711871371840222169925653434081781148892704580585587764074713326028394355564539751395890997165055128928791058726295150819453922316393488593599284988720811174363504621711710563117496721630026298161236567852610043373993852510501083512789025524730162959143248393084069076712374797747281972636928788000180283289392557e+413', '324425.0251253', 75); + T('1', '-3', 0); + T('4.26825223812027400796974891518773732342988745354489429495479078935112929549619739019072139340757097296812815466676129830954465240517595242384015591919845376e+55', '3.6', 100); + T('1.143346541001259437465016483752642875340200408207372315398374410086504054045958634479945641547514904516533919702060746490155830653988883705469429546657675670673347514271976875109918113055399954802405065425692486675365016543448426931378922954782957026636988416e+190', '-388997.14', 34); + T('1.391479860226959780852496779461260634580951060711489905798047445581119629509685004732118558920853318033429289719854192097911392274604744812177542476869031306237630906988638098552100901480110526866015997536096860367785128698535455722265589251495705036009334110148089566472594008624482378925581538366245059147829461639938451131334656e+162', '785.994', 56); + T('-2.039429275458086101347617297850948854294429450037773018607110681185721614063201210356599410953e+93', '-27753', 21); + T('1.8072708076715752612606017458825273480777271963492548142293548724970849500539908571180569517655791008990836891664536992680448e+43', '64022.984420938', 9); + T('-155568095557812224', '-14', 15); + T('2.18753957001465798602093911444285519704647324430365134831536108015616e+44', '4954.46', 12); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('5.0600621890668482322956892808849303e+20', '907.27', 7); + T('-7e+0', '-7', 1); + T('6.1095374220609e+13', '7816353', 2.435); + T('-9.01e+2', '-901', 1); + T('1.016984074247269470395836690098169093010136836967e+39', '21584.7', 9); + T('1.497639134680472576e+18', '4316', 5.55); + T('4.1717657571404248e+16', '346822', 3.00435); + T('-8.983272e+1', '-89.83272', 1); + T('5.308416e+6', '-48', 4); + T('2.09764e+3', '45.8', 2.9999); + T('3.83432050166120236679168e+23', '52088', 5); + T('4.096e+3', '-4', 6.120937); + T('-2.679971527468745095582058350756311201706813294321409e+51', '-517889', 9); + T('5.067853299870089529116832768e+2', '3.47508', 5); + T('3.48822062687911109850066182676769e+32', '4129', 9); + T('1e+0', '-429.32321', 0); + T('-4.2773e+0', '-4.2773', 1); + T('-5.8169306081172252508071119604378757744768e+12', '-66.6082', 7); + T('1e+0', '-7.0654', 0); + T('-1.51655708279450944384385164853883404204414169862685507e+46', '-3956084.3', 7); + T('8.1e+1', '-3', 4); + T('1.296e+3', '-6', 4); + T('2.9e+0', '2.9', 1); + T('1.764e+3', '-42', 2); + T('-9.3418332730097368870513138581415704704611459349313e+49', '-356673', 9); + T('1.517108809906561e+15', '79', 8); + T('3.1063e+4', '31063', 1); + T('1e+0', '-21914.49416', 0); + T('1.4586250332983909737249e+10', '49.43', 6); + T('-4.208092749838142546109102616048103440952842087045576022556672e+46', '-4577028.48', 7); + T('3e+0', '3', 1); + T('1.4301918832998497740081358663795354088849575358074712812593899025686055664154241e+71', '784195396.7', 8); + T('1.914994057877243921847839041839022064004621019747303000421532785660701999616e+57', '2315715.86', 9); + T('1.40379741624014849127481344e+26', '804', 9); + T('2.1305364420464979969795870610432e+21', '18437.32', 5); + T('1e+0', '-48', 0); + T('7.018e+3', '7018', 1); + T('-5.8149737003040059690390169e+25', '-729', 9); + T('2.537640625e+9', '50375', 2); + T('1e+0', '-287', 0); + T('-1.879616311308566413901e+11', '-179.81', 5); + T('-3.73314280039567349e+17', '-3269', 5); + T('8.503056e+6', '-54', 4); + T('1.114538684361769559136325232186960408417483078419495901986816e+28', '3205.4344', 8); + T('-4.27504205e+3', '-4275.04205', 1); + T('-4.18195493e+8', '-53', 5); + T('-1.32651e+5', '-51', 3); + T('-4.309348e+6', '-4309348', 1); + T('5.2697770766776504576e+19', '-7259323024', 2); + T('7.334473e+6', '7334473', 1); + + T('4.2587208337796928798976e+22', '-674', 8); + T('2.5398714208994744315474847375553672678449979949471296663472852498581058264323e+76', '82219173067', 7); + T('3.8595867893817789e+16', '38595867893817789', 1); + T('1e+0', '6607929.612', 0); + T('2.03571124747179512510686558355453870501244709050625e+34', '-377727882.4895', 4); + T('2.45293306092383728169089251608498030232760591201e+47', '-838901', 8); + T('1e+0', '-3', 0); + T('3.834566459566834602823771544700625e+33', '248845085', 4); + T('9.9603189655699799982630929090395077799549456e+43', '-99900649454', 4); + T('4.96981290961e+11', '-89', 6); + T('1.587141827118019619140350040987490145402132153698899021243321868668968193390822866803131555419115810065' + + '08901525889227579394470766224134369e+74', '175595288.8066529', 9); + T('1.326409999413464946341631126231535779147856072448189797080406801e+19', '-60348.91227522707', 4); + T('-2.050107090202653994550415295865311714194868710425929507925126964581376e+69', '-72837546696276', 5); + T('2.0550048143314549586011369057890711537772093948321e+49', '-2129135057417', 4); + T('1e+0', '3943801.89538088', 0); + T('2.17438998607457e+14', '737', 5); + T('-2.273581752472e+10', '-22735817524.72', 1); + T('1.51891070159203e+12', '1518910701592.03', 1); + T('-6.42199562432576e+14', '-86276', 3); + T('1.33010089e+8', '11533', 2); + T('5.1662108991396663099278667856407361e+26', '-4767525.59', 4); + T('-2.197e+3', '-13', 3); + T('5.7261215932713209368576e+22', '489176', 4); + T('2.63105908732834720740862027188940646962896811537209872829318157804817881e+71', '800488505731', 6); + T('-7.8151742291e+2', '-781.51742291', 1); + T('-2.5619022164869008875e+19', '-2947955', 3); + T('1.888497394256858387595532951034741052100428552247961627495355202904723558656e+3', '-6.592180609971056972', + 4); + T('1.227102111503512992112190463e+27', '1023', 9); + T('4.762033342402709161761620616017059035607e+39', '86210167', 5); + T('1.0526899962331857933889886363874543386374239042307e+34', '6374705.107', 5); + T('8.3043861038534085480857730707894983974895341475449922046323943309856240866914720437665233e+61', + '7584431.953', 9); + T('5.4787291089024129877918140548999194405505068584642366052046899220357579072497678119620025119214429570421' + + '679076944647727607529032984620150444553526120397e+151', '72419131838243117', 9); + T('6.1203577224967e+13', '61203577224967', 1); + T('-2.6742593337474927167986914400257603e+34', '-82827', 7); + T('3.490938536648870448335810684618787855050175354916141007545163425555957335829e+75', '247548469', 9); + T('6.634204312890625e+15', '-95', 8); + T('-9.171271e+1', '-91.71271', 1); + T('5.65625765123605544067809018296482219675982471958093705254464e+59', '-9093998202', 6); + T('3.518743761e+9', '-39', 6); + T('1e+0', '-5420353171006060062', 0); + T('5.93548365959371477646876280183482286894691258676416e+26', '840398698.65610156', 3); + T('3.05021119744369888239209417566581849921624834657246971302432870103990316674041818082170961e+89', '-82045' + + '5414011161', 6); + T('3.2696530375744e+11', '571808.8', 2); + T('7.5976962512577721e+4', '-275.639189', 2); + T('1.902906615566371112511312310657143013376e+4', '7.1760176', 5); + T('1.518464318469541965652429354308518011195184133938752135708801e+60', '33317743', 8); + T('2.1320058778623362693743157943232639078619851096757416882191780337397507274264845664066920942408900138964' + + '6413824e+92', '2444169945946508.968', 6); + T('2.22147484530834915265639755288996e+8', '-14904.612860817114', 2); + T('1.492078384275163354935132877205588401e+36', '-1105217899', 4); + T('-8.706315974131812740752872336328574378946466095300435988405613445608906916485832445671913193616433992611' + + '1276712486987242162931090900645752178720048529774274761e+31', '-3538.91793390607241', 9); + + T('-2.137188356786572105085597593380951428481871335229083554584070474976079844687257680784073933135806738155' + + '846154867946651092729083821725815874768375163982851482102962410568100645181922392637169148087702583906275806' + + '254987676848814681203987550808366160736707783273633323341494160195050788402536450819951456112231044987896082' + + '054284953492245429169226582932327802987445013148530522433068163661483119195972210188504560615278918448219025' + + '00302159789434488225792e+125', '-43837.525307806238', 27); + T('6.6067183217034216835242910438119195789788339709493349261334009277024675568767116522521737472677079426635' + + '748603259327817717050761351617610783486587612028204471198915744801916514515768618923473461233676712402753179' + + '616115705829361991013069927369820940249862144e+28', '-63581.52864975395137421365938883267810362492', 6); + T('3.4979655423042386318207008930737637967359866053138998526505479068249644854876701482811561341347105355107' + + '695596776164641704434681969517211923069874207364828070027467521475982678466251216378786468053405366050900916' + + '905682920934733855175647035328921497719019616796867272653837232009633511918699584196136643032274244642212313' + + '884180837128156688381283842300678798685499010807063746785776492193558002382725297304258913361e+62', '8606583' + + '55.93419774133511168973596889241553275604551215135281', 7); + T('2.43e+2', '3', 5); + T('1.1341259418236998571758990926811782086077524757263871423863079766086030645673726799115988350322336274469' + + '528121736526520039192242333771040454545272536238688950013853620343757910936524944674880346697808001951639020' + + '756685105416346426508389541123017097529060283829118103883424462596062875341251599735321937114348037712815556' + + '934333412355272212045907182873831909566029976608100685207198148793211027456e+142', '-77969657.57799062937836', 18); + T('-3.002868635110885376257819498476291928435426781135644398581841720946695913529443732738563280115637723690' + + '527669601811845008088443533185638348230873897655818695558823986816170233733475974743919539739293881958257711' + + '082964428156108562084141530748801048154746755861630902751665438161045606541506565311391326592002987029794247' + + '9155862011879884534002975129045737955826661617772520189976935251896803639204375428428030749e+58', '-3144155.' + + '647351179442684823966727126493552586749', 9); + T('1.2017535763663944855319855165568672417473424918240625939835372525654871294098024731568097136162414533196' + + '302209237255696285222881479316995572849461193750229851490507274307754777241507309897136938873682646559601827' + + '818522406048398360528045183412226195227922260847969487653141933223147699460606337223535312433317282585307625' + + '14582945950418550784e+31', '27540.61485935537676544614263765574563131573245204', 7); + T('3.3715504067877824494301254520391898692874566929517185069539454439093971130103103995461456226946881594407' + + '231961561136789085959653748072704542114811853522742743643494246976010868257225332083632035616264964911458078' + + '6938367825230347818905248996593031355662611333376e+4', '-3.68110925219710489918033269313682', 8); + T('-1.157385562678413511184308898769846329872668259271078544423253372613586833033423503791374542602879075132' + + '311305638124240471079826030985837104460703581522437292662638238646090030670166015625e+186', '-7784665', 27); + T('5.7216584769709576633639728428105243709762039786762015993329350164736e+39', '-8697220540.1137988', 4); + T('3.605080945893673836738483946060969335788919921875e+3', '2.48435', 9); + T('-1.362404507662848650537496030549874060243136512349225493914817345823216048548172723419966950986850374951' + + '739062406422122991421171819900345266361503090008226665166641608549693639479556058501083403734722051283642171' + + '702315664077013568676066027004539719689871686866966504316666900974963459985167975529154752566435990494883222' + + '43247996920458277719083301674288561258518312772229949771006312491204843363917607453589630126953125e+161', '-' + + '3009460118.872263767875045', 17); + T('-3.843371297315665982931203359606126137800390271392237908468836564381335317605019011842110932416054439429' + + '378863667709490793077731714107684101027634234502991961374605763957702424230907755584087764579064955483406351' + + '493859629284536525094600819056677481423671987511092619602892825089212125285973667322259735000675496129438960' + + '5594296221696e+157', '-271616.155606', 29); + T('8.880125173267286184293229956929e+30', '-143903', 6); + T('1.2933690030633029978317864458950890700698349292432976269804895466563737201880939364145851524416113479708' + + '518067001609042030295271670130750045121e+14', '-7.62048571', 16); + T('4.4911854404409149925571757890570413318443326899494030577850505583635288027204483770002925339061413234579' + + '0751503571600332872e+26', '765808758.66956931514481639498062905791538', 3); + T('-1.128193052103617375313057818469912250487118062091774976e+29', '-646363.29196', 5); + T('-3.852842458277771128223673975490918109e+4', '-38528.42458277771128223673975490918109', 1); + T('4.4731752932054401250767895500165212172045977003048118078740540509372027814009045673824755086223811265665' + + '9162732461713512251836889602737214995151906586537236627456e+105', '5932.48', 28); + T('1e+0', '-13.97065588562499', 0); + T('3.600545803275794460618862354918801e+11', '600045.48188248151', 2); + T('2.5693800113130673596912052579425172401156285606894961933662611589081996263592777487294665112945054695374' + + '79575614097255886064905027804073982599354300474897943e+129', '62080.7', 27); + T('5.8184614940398660397269861002282485754727820202610984176867121393228080929668759435750127783038726637982' + + '733623328431481036051105505754347945097758662358771120575735317995690686375214099713422708363500801239117100' + + '825191190580442024497060759059174441880072773407853158923191005671440255110099432788599963091463491081295880' + + '09524947393206783018441414022970002633906397294399684375635228021017590940658971148436650082905540838555648e' + + '+102', '6398.880593717242', 27); + T('1.3497135645575897529253431118705664765245378061900400303221733155570426158512526184604071289685694603714' + + '4900053640398406244356726653396169868958721875222540716653887768486266703330919098362921e+11', '4.1528548909', + 18); + T('-1.77396388128500114222945974047586725531284545911409446577e+56', '-913', 19); + T('-1.234934401068907372254145669800965657224014404194120877473524432765749324191815980973795365542372548417' + + '270938366077639126652036699333110108213095940749940674117006576189505444008333197068723155539463584326235225' + + '64358319794505880365894233180227408889879677018966524371664896e+230', '-90520083747.46', 21); + T('-2.175250019420677231502945585316047309543226583810643532856810988679256810815060837059831560661631867460' + + '91443633027643554689317160117967955473175500964155968361524273945120598810972722792061e+14', '-3.121741', 29); + T('1e+0', '-562610.16179592649796590823394093366548', 0); + T('5.5399516545866639955830015026176e+11', '14.94', 10); + T('1.4941893958492691882112550397099333090864242597784459064194649425760971480442163767897353189803927503362' + + '856448046387436008075500742061282723456500292550169543216112640021419198404623695509050987637232549016751357' + + '87504979910497931539962354019230845564318816091666473025536e+126', '-32698949771.110178432792', 12); + T('1.1504940871276742926708823617505372960241390892442547940194260102743306128298973371802547471453755938653' + + '944600792141533514422490556963535378521856840746722206160260148176604222079226186281680715577736316488196108' + + '040509176925372372483300649927835887344415603493563915019264675154039059770309142781930141352329958156926976' + + 'e+15', '-8.7358521345995835476', 16); + + BigNumber.config({DECIMAL_PLACES : 1000}); + + T('5.5626846462680034577255817933310101605480399511558295763833185422180110870347954896357078975312775514101' + + '683493275895275128810854038836502721400309634442970528269449838300058261990253686064590901798039126173562593' + + '355209381270166265416453973718012279499214790991212515897719252957621869994522193843748736289511290126272884' + + '996414561770466127838448395124802899527144151299810833802858809753719892490239782222290074816037776586657834' + + '841586939662825734294051183140794537141608771803070715941051121170285190347786926570042246331102750604036185' + + '540464179153763503857127117918822547579033069472418242684328083352174724579376695971173152319349449321466491' + + '373527284227385153411689217559966957882267024615e-309', 2, -1024); + + BigNumber.config({EXPONENTIAL_AT : 1000}); + + T('179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120' + + '113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768' + + '838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216', 2, 1024); + + BigNumber.config({ERRORS : true}); + + T(2, 2, '1.0'); + + assertException(function () {new BigNumber(2).pow(4.4)}, ".pow(4.4)"); + assertException(function () {new BigNumber(2).pow('5.5')}, ".pow('5.5')"); + assertException(function () {new BigNumber(2).pow(-2.1)}, ".pow(-2.1)"); + assertException(function () {new BigNumber(2).pow('-11.5')}, ".pow('-11.5')"); + assertException(function () {new BigNumber(2).pow(0.99)}, ".pow(0.99)"); + assertException(function () {new BigNumber(2).pow('0.04e2')}, ".pow('0.04e2')"); + + assertException(function () {new BigNumber('12.345').pow(undefined)}, ".pow(undefined)"); + assertException(function () {new BigNumber('12.345').pow(null)}, ".pow(null)"); + assertException(function () {new BigNumber('12.345').pow(true)}, ".pow(true)"); + assertException(function () {new BigNumber('12.345').pow(false)}, ".pow(false)"); + assertException(function () {new BigNumber('12.345').pow(NaN)}, ".pow(NaN)"); + assertException(function () {new BigNumber('12.345').pow('NaN')}, ".pow('NaN')"); + assertException(function () {new BigNumber('12.345').pow([])}, ".pow([])"); + assertException(function () {new BigNumber('12.345').pow({})}, ".pow({})"); + assertException(function () {new BigNumber('12.345').pow('')}, ".pow('')"); + assertException(function () {new BigNumber('12.345').pow(' ')}, ".pow(' ')"); + assertException(function () {new BigNumber('12.345').pow('2e+1')}, ".pow('2e+1')"); + assertException(function () {new BigNumber('12.345').pow('4e')}, ".pow('4e')"); + assertException(function () {new BigNumber('12.345').pow('hello')}, ".pow('hello')"); + assertException(function () {new BigNumber('12.345').pow('\t')}, ".pow('\t')"); + assertException(function () {new BigNumber('12.345').pow(new Date)}, ".pow(new Date)"); + assertException(function () {new BigNumber('12.345').pow(new RegExp)}, ".pow(new RegExp)"); + assertException(function () {new BigNumber('12.345').pow(function (){})}, ".pow(function (){})"); + assertException(function () {new BigNumber('12.345').pow(7.5)}, ".pow(7.5)"); + assertException(function () {new BigNumber('12.345').pow('1.1e1')}, ".pow('1.1e1')"); + + assertException(function () {new BigNumber('12.345').pow(1e9 + 1)}, ".pow(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').pow(1e9 + 0.1)}, ".pow(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').pow('-0.01')}, ".pow('-0.01')"); + assertException(function () {new BigNumber('12.345').pow('-1e-1')}, ".pow('-1e-1')"); + assertException(function () {new BigNumber('12.345').pow(Infinity)}, ".pow(Infinity)"); + assertException(function () {new BigNumber('12.345').pow('-Infinity')}, ".pow('-Infinity')"); + + assertException(function () {new BigNumber('2').pow(Infinity)}, ".pow(Infinity)"); + assertException(function () {new BigNumber('2').pow('-Infinity')}, ".pow('-Infinity')"); + + // Test limit for exponent. + assertException(function () {new BigNumber(1).pow(MAX_POWER + 1)}, ".pow(MAX_POWER + 1)"); + T(1, 1, MAX_POWER); + + T('16', 2, '4.00000000'); + T('0.0625', 2, -4); + + // As negative exponents involve a division, the result depends on the + // decimal places and rounding mode specified: + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 0, EXPONENTIAL_AT : 0}); + + T('-5.196101e-14', '-453.8', -5); + T('1e-20', '8308633', -17); + T('1e-20', '834', -23); + T('1.6666666666666666667e-1', '6', -1); + T('-1e-20', '-71', -29); + T('9.765625e-4', '-2', -10); + T('1e-20', '62.8159321', -18); + T('-6.333754988633e-8', '-2.0557545', -23); + T('1e-20', '33', -24); + T('-1e-20', '-5235.7923', -27); + T('-1.29728108e-12', '-9169', -3); + T('2.323057312542e-8', '3', -16); + T('1e-20', '1523620.62', -20); + T('1e+0', '1', -16); + T('1e-20', '13', -25); + T('1.5241579027587259e-4', '-9', -4); + T('1e-20', '531385.4', -11); + T('8.4322648810503e-7', '-33', -4); + T('1e-20', '480546.8181', -13); + T('-1e-20', '-83591', -9); + T('1e-20', '457.54', -29); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 1}); + + T('0e+0', '41', -25); + T('0e+0', '-26403', -25); + T('-1.83965573171075e-25', '-28.5112', -17); + T('1.3846500590693220280355384e-15', '72', -8); + T('0e+0', '388528.736', -15); + T('3.934117957191277521704056558e-13', '9', -13); + T('0e+0', '523512', -7); + T('0e+0', '65', -30); + T('0e+0', '-43284153', -10); + T('0e+0', '825797.7867', -9); + T('1.45171e-35', '14.49674917', -30); + T('4.11323023e-32', '713.2735', -11); + T('6.75896391888332043299090622098e-11', '-2.8992', -22); + T('0e+0', '9006558087', -9); + T('2.35898248759e-29', '9', -30); + T('4.2316349570524877e-24', '-835', -8); + T('2.306295e-33', '-18', -26); + T('2.735111227791253388712174e-16', '6', -20); + T('2.11e-38', '-5855.32565', -10); + T('0e+0', '-3338', -20); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 2}); + + T('1e-2', '95636', -15); + T('1e-2', '802.942', -28); + T('0e+0', '-31645', -27); + T('1e-2', '-839791.83', -2); + T('1e-2', '-2.8383287', -6); + T('1e-2', '61689855', -2); + T('1e-2', '7.404284', -20); + T('1e-2', '898183.004', -11); + T('1e-2', '-771825.7331', -16); + T('1e-2', '-33080.258', -12); + T('2.6e-1', '1.4064', -4); + T('1e-2', '-21411.3', -8); + T('1e-2', '-444', -8); + T('1e-2', '-456', -26); + T('0e+0', '-84450.1821', -15); + T('0e+0', '-393', -15); + T('2e-1', '5', -1); + T('0e+0', '-7902377.6', -27); + T('1e-2', '4695.5', -19); + T('0e+0', '-198', -25); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 3}); + + T('2.5224883818467056168924068720414334436865e-10', '-62963', -2); + T('0e+0', '231061', -19); + T('-1.33787022089433001581801823890617687241090613775e-2', '-74.74566549', -1); + T('-1e-50', '-64577145', -15); + T('-9.2e-49', '-7293822', -7); + T('0e+0', '6853973492', -16); + T('5.2813339504e-40', '61', -22); + T('0e+0', '-376283', -30); + T('0e+0', '728444.059', -27); + T('-1e-50', '-368631.5722', -23); + T('4.704e-47', '52631521', -6); + T('3.57224508459076360310928212162780064014631915e-6', '6', -7); + T('4.406926288364964664194824943180564261e-14', '469', -5); + T('1.4551915228366851806640625e-11', '-4', -18); + T('2.44140625e-4', '8', -4); + T('0e+0', '32065.3618', -15); + T('3.7252902984619140625e-9', '-4', -14); + T('0e+0', '911', -18); + T('-4e-50', '-226', -21); + T('0e+0', '6584.1', -26); + + BigNumber.config({DECIMAL_PLACES : 101, ROUNDING_MODE : 4}); + + T('2.59086221967070203169073279093835370593438251373865163612424184820637293172653704e-21', '7280902.7', -3); + T('0e+0', '-864898946', -18); + T('-6.92056804675353e-87', '-4243081.8', -13); + T('4.535096358699077993843952445171547362594555572598969066238446195262298595680218449724146e-14', '28041.71', -3); + T('3.935198147655009521015158343912785620124855179789168611080864740903996079598197380173314783859e-8', '-71', -4); + T('0e+0', '-22174.6', -24); + T('-2.99258857055507737893205013175602880569082447633970771174973412126870110482831422782576004e-12', '-44.287279', -7); + T('0e+0', '470977.3', -28); + T('0e+0', '1491202647', -13); + T('7.6416831024439568243705975297501568471970365586580909307933089678e-37', '-63.95', -20); + T('1.265999063160693261086986795629771233969286862727721581486029700338021749863905100710225474433149e-5', '78989', -1); + T('0e+0', '4669863', -27); + T('0e+0', '68895.202', -25); + T('2.739979564368301888555652244200021058884694833454583774293368045917370205983074157e-20', '8174.2993', -5); + T('0e+0', '-84777.31264', -24); + T('-1.61732012052302022569648421623255682672403613813784e-51', '-8072.642', -13); + T('9.226701330968798029567410873712667474511623e-59', '86', -30); + T('-4.52671289980544818356121416933990316474525113390656357838131753149833770190909867e-21', '-805.966', -7); + T('0e+0', '-62548432.8', -25); + T('1.2208830071779439347812238188621035387222053043582168736013775635140091964690008930489382362e-10', '-90503', -2); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); + + T('0e+0', '66772.53301', -27); + T('3.40661780943015419152e-57', '368.73348', -22); + T('5.601099885e-68', '5310955.57', -10); + T('4.7583024e-70', '4452', -19); + T('6.90016290197904917102412334010616805829465226173165163729397834725e-12', '-617', -4); + T('0e+0', '-107429', -28); + T('3.31141522e-69', '2654.601393', -20); + T('0e+0', '29989989', -29); + T('0e+0', '86252993', -26); + T('2.526578217600621656723144619575640216185522e-35', '27.64147', -24); + T('0e+0', '67591', -22); + T('1.045378162048104058782115833482674315266588732330848431111612381555126e-8', '95659163', -1); + T('0e+0', '-442', -30); + T('-1.1560137793600081456221291815651129339464282155352978388454e-19', '-13', -17); + T('5.58677799866283804991416971229e-48', '8664.361199', -12); + T('2.279303152972397504104114985089222523674913654876994600999395e-17', '352695', -3); + T('0e+0', '-1058', -27); + T('-1.59341022326498995406233262095617818e-42', '-6306.5', -11); + T('7.1812368392200578e-61', '-5741', -16); + T('-4.13699730669298062229277514676940165486322151495730381776e-21', '-71.29', -11); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 6}); + + T('3.50565137890907848896561225350273375702045873464e-52', '282', -21); + T('2.5679471225603104166379068675724780241775210532444313569170923793768408333314758e-20', '91', -10); + T('-1.41295214664272077547931481358044650743763505172248724988734056104337e-30', '-57', -17); + T('-1.6987939248665576039846745813760545846750230030808816733060274510838e-32', '-47', -19); + T('2.5752032499330351923455285237362946185406503583972342814435847681120726508860096355483248328e-8', '78.94', -4); + T('0e+0', '171036487', -28); + T('-2.69509379734942915218278341741127616464435811759556667850711208302182540858969514716020661667e-7', '-3710446', -1); + T('0e+0', '186138.741', -19); + T('4.37024265074487259941007405227545667043223030296145105953223847971330338431363825001208e-13', '-5.922', -16); + T('0e+0', '-68229265', -23); + T('4.928268737732714614617566124770385834839673627880400464580256256e-35', '-522257', -6); + T('-2.022506359274224265530332563554654257153128338531e-51', '-7935', -13); + T('4.113745803364219006888865973815476523221392611155744131624798603545707151167823836246769e-12', '-79', -6); + T('1.58e-97', '7449', -25); + T('1.118728735197209316850322750834837614213911286885421936356799842846357177424981773587541512e-9', '19', -7); + T('2.30221163139014605760922065192648652054327053388946752033272296649e-32', '-433', -12); + T('-2.267272190443616852157926557261723579010324347431719319355102519288715860877837553741191e-12', '-7612', -3); + T('3.9978176310189055673570151190218519691760260637389486960244942965129919180092262453024314407659703e-2', '5.001364539', -2); + T('-7.116521605575577249405567849234479247439447514e-54', '-804088', -9); + T('8.903896183702542287639673e-75', '-294', -30); + T('8.07793566946316088741610050849573099185363389551639556884765625e-28', '8', -30); + T('0e+0', '-81529053.21', -19); + T('6.5536e-12', '-5', -16); + T('0e+0', '-393954461', -21); + T('8.6647113997049045695e-80', '-80579504', -10); + T('0e+0', '-148396', -20); + T('0e+0', '-9359', -27); + T('9.90263871916064254974009912780157486232613002968707056446243636671e-34', '-562.8', -12); + T('4.3492544377486037018080360300067123809538178904353011549513518579352205e-29', '-53325', -6); + T('-2.4321805935844144232493980416059793684e-61', '-323865', -11); + T('7.85857243441531254691813393990245178596730427987853282250959743319065590613e-25', '-52.694', -14); + T('2.0976497180691992906625338620920916459004443120221572748409028790029453e-29', '-62', -16); + T('2.364680619496191078868743412738756777204213983827334426304480201936157926992330323938307469e-8', '-6503', -2); + T('-1.6469853898171534943494115141107888422500959997099727812322359810844298906326507134302e-14', '-34', -9); + T('-2.8509481595561976509829554676872915624841643712635341972335222140599199298237e-23', '-32285.1', -5); + T('1.146039e-93', '2086', -28); + T('1.4679476870451975270004793115264473958785611246906228067920825392511892301766856e-20', '21', -15); + T('-2.7632000420131244245e-80', '-884.33', -27); + T('1.28e-5', '5', -7); + T('0e+0', '465056.3', -25); + T('-3.385374643100272485246768762282984762e-63', '-8732826', -9); + T('8.1099148118448025737743300061125240950246836242140801097075869941095902018e-26', '-24.771', -18); + T('0e+0', '41616', -24); + T('-4.600396873004638534957365480807567e-66', '-693.02361', -23); + T('4.743101317987169079986565102514233588322445597602857643390328860354941191426667037e-18', '-54', -10); + T('1.25187781672508763144717075613420130195292939409113670505758637956935403104656985478217325988983475e-1', '7.988', -1); + T('0e+0', '-28456394.82', -20); + T('0e+0', '65420941.8', -28); + T('6.936158419792753387019531369763661408e-63', '8063848', -9); + T('7.76868869438579094965029841442548135292087504293659500457724060495468797e-28', '8.0104161', -30); + T('1.418903330951799073514333098017321859067165230705198534199808126932321545716946e-21', '8899161', -3); + T('5.5856834219770636694175782782449695904056e-59', '-668794', -10); + T('1.459854014598540145985401459854014598540145985401459854014598540145985401459854014598540145985401e-3', '685', -1); + T('4.71680980075571e-85', '-186379', -16); + T('8.28459140195479963018738579860475551841921130300932e-49', '-2719', -14); + T('2.67077966735439243101042271765185051646201817465563634664049302592659362084276452403367853161e-7', '1935', -2); + T('0e+0', '3635', -29); + T('0e+0', '2554338', -24); + T('2.5540033620655455476185589070642885151916557690202314061872180456116463869710334413505216200293094e-2', '6.257333', -2); + T('3.90625e-3', '4', -4); + T('1.950390958369440429127151141521415628594542650755102593292842679774e-33', '282908.755', -6); + T('7.055018227999164719047034313928978751513528911694565147012740459916e-32', '19.86', -24); + T('-1.7926074978022214012194558178183164876939431544374262895950448410755196050436473373785e-14', '-92', -7); + T('4.17170159620302267465579950126198740043495589902397687214801e-40', '422', -15); + T('9.094947017729282379150390625e-13', '32', -8); + T('3.840702799092530418345764876794193332866602413557110156e-45', '-597', -16); + T('2.86244662448576320862533497809376104296326075367736978e-46', '56.45', -26); + T('-1.9579266376951475915762057927633263263525293205616726853270204e-38', '-32.2350348', -25); + T('1.25868312332880899610888409696274260282720434321518772464e-43', '52', -25); + T('0e+0', '262233', -24); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); + + T('0e+0', '-8645', -30); + T('0e+0', '7.24173993', -23); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; + +/* + +Notes: + +n to the power of 1 is n +Anything to the power of 0 is 1 +Math.pow(2, null) = 1 // NaN for BigNumber +Math.pow(2, undefined) = NaN +Math.pow(2, NaN) = NaN +Math.pow(2, 'rferf') = NaN +Math.pow(2, []) = 1 // NaN for BigNumber +Math.pow(2, {}) = NaN // NaN for BigNumber +Math.pow(2, 1e4) = Infinity +Math.pow(2, -1e4) = 0 +Math.pow(2, 1e-16) = 1 +Math.pow(2, -1e-17) = 1 +A negative number to a non-integer power is NaN +0 to negative power is Infinity + +-------------------------------------------------------------------------------- + +http://es5.github.com/#x15.8.2.13 +15.8.2.13 pow (x, y) +Returns an implementation-dependent approximation to the result of raising x to the power y. + +If y is NaN, the result is NaN. +If y is +0, the result is 1, even if x is NaN. +If y is -0, the result is 1, even if x is NaN. +If x is NaN and y is nonzero, the result is NaN. +If abs(x)>1 and y is +8, the result is +8. +If abs(x)>1 and y is -8, the result is +0. +If abs(x)==1 and y is +8, the result is NaN. +If abs(x)==1 and y is -8, the result is NaN. +If abs(x)<1 and y is +8, the result is +0. +If abs(x)<1 and y is -8, the result is +8. +If x is +8 and y>0, the result is +8. +If x is +8 and y<0, the result is +0. +If x is -8 and y>0 and y is an odd integer, the result is -8. +If x is -8 and y>0 and y is not an odd integer, the result is +8. +If x is -8 and y<0 and y is an odd integer, the result is -0. +If x is -8 and y<0 and y is not an odd integer, the result is +0. +If x is +0 and y>0, the result is +0. +If x is +0 and y<0, the result is +8. +If x is -0 and y>0 and y is an odd integer, the result is -0. +If x is -0 and y>0 and y is not an odd integer, the result is +0. +If x is -0 and y<0 and y is an odd integer, the result is -8. +If x is -0 and y<0 and y is not an odd integer, the result is +8. +If x<0 and x is finite and y is finite and y is not an integer, the result is NaN. + +*/ \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js new file mode 100644 index 0000000..dacf80d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js @@ -0,0 +1,1416 @@ +var count = (function quickTest(BigNumber) { + + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + log('\n Starting tests...'); + + function Tplus(addendA, addendB, expected) { + assert(String(expected), String(new BigNumber(addendA).plus(addendB))); + assert(String(expected), String(new BigNumber(addendA).plus(new BigNumber(addendB)))); + } + + Tplus('0.0000002081', '951', '951.0000002081'); + Tplus('-0.00000000000101', '290.41', '290.40999999999899'); + Tplus('591', '-0.0000000000000023311', '590.9999999999999976689'); + Tplus('0.000000000006331', '-0.0000901', '-0.000090099993669'); + Tplus('-0.000000000000000101', '8.811', '8.810999999999999899'); + Tplus('9.71', '25.2521', '34.9621'); + Tplus('12.61', '22581', '22593.61'); + Tplus('11', '-38.91', '-27.91'); + Tplus('-0.00000000138751', '2.11', '2.10999999861249'); + Tplus('3762.2711', '-744.88784434996040047048938241', '3017.38325565003959952951061759'); + Tplus('-0.000000000000000025415273976364280222001', '-492878574085250915901', '-492878574085250915901.000000000000000025415273976364280222001'); + Tplus('426904249750.96038450081242691', '56433.631', '426904306184.59138450081242691'); + Tplus('-0.000000000000000134741', '32233.1553231', '32233.155323099999999865259'); + Tplus('-20527603846670651', '-19635621.807985261', '-20527603866306272.807985261'); + Tplus('-86085754207.708686061', '-1', '-86085754208.708686061'); + Tplus('-4.96914656033745696212200401', '-1.241', '-6.21014656033745696212200401'); + Tplus('329060927228852916217075.1962341', '4100482994459676741454741', '4429543921688529657671816.1962341'); + Tplus('615901601', '-6473391841168.33422241481', '-6472775939567.33422241481'); + Tplus('-5812703356423471', '-0.0000000000000000000000000000000000000001512809242910987744755268662361', '-5812703356423471.0000000000000000000000000000000000000001512809242910987744755268662361'); + Tplus('-964262.331151767124531', '-56784.754061', '-1021047.085212767124531'); + Tplus('-10804741298331762053003.61', '-18727784577281', '-10804741317059546630284.61'); + Tplus('2455658857532054049742171.776541', '-11', '2455658857532054049742160.776541'); + Tplus('-8.419821', '-1121', '-1129.419821'); + Tplus('-14118910.8630102182791', '2231454017.61', '2217335106.7469897817209'); + Tplus('-35192.01', '30.31011', '-35161.69989'); + Tplus('21', '1214.75047979608491', '1235.75047979608491'); + + function Tminus(minuend, subtrahend, expected) { + assert(String(expected), String(new BigNumber(minuend).minus(subtrahend))); + assert(String(expected), String(new BigNumber(minuend).minus(new BigNumber(subtrahend)))); + } + + Tminus('4.851', '41', '-36.149'); + Tminus('21', '13081', '-13060'); + Tminus('0.00000000056061', '-0.1401', '0.14010000056061'); + Tminus('61', '11', '50'); + Tminus('-1137.71', '-74.211', '-1063.499'); + Tminus('-1', '-0.0000000000000131', '-0.9999999999999869'); + Tminus('-0.000513821', '0.261', '-0.261513821'); + Tminus('-0.000401', '-0.0002471', '-0.0001539'); + Tminus('1', '31', '-30'); + Tminus('-19851', '-1.51', '-19849.49'); + Tminus('8016778098131', '6331.62851', '8016778091799.37149'); + Tminus('-270.9996571', '23960950851', '-23960951121.9996571'); + Tminus('-7986807223743730.000000000000000000000000000000000001', '-7173955.760471', '-7986807216569774.239529000000000000000000000000000001'); + Tminus('1.48968081', '242980.00000000000000000000000000000000000000000000000001', '-242978.51031919000000000000000000000000000000000000000001'); + Tminus('-118422270.0000000000000000000000000001', '14530.0001', '-118436800.0001000000000000000000000001'); + Tminus('9330969181250.000000000000000000000000000000000000001', '50.71', '9330969181199.290000000000000000000000000000000000001'); + Tminus('152192135853041', '-12.46214721', '152192135853053.46214721'); + Tminus('29353.8632116991', '29.491', '29324.3722116991'); + Tminus('-24835555113.72271', '16121.144514291', '-24835571234.867224291'); + Tminus('-55940242410820.01', '384349225568820.00000001', '-440289467979640.01000001'); + Tminus('283535576260.000000000000000000000000000000001', '14.121', '283535576245.879000000000000000000000000000001'); + Tminus('480.0000000000000000000000000000001', '-164098203.91', '164098683.9100000000000000000000000000001'); + Tminus('29364155498.97581', '-2885650871', '32249806369.97581'); + Tminus('4.1021951', '-165723099860.0000000000000000000000000001', '165723099864.1021951000000000000000000001'); + Tminus('-530.81', '56840.01', '-57370.82'); + + function Ttimes(multiplicand, multiplier, expected) { + assert(String(expected), String(new BigNumber(multiplicand).times(multiplier))); + assert(String(expected), String(new BigNumber(multiplicand).times(new BigNumber(multiplier)))); + } + + Ttimes('-21', '131', '-2751'); + Ttimes('111', '0.000000000841', '0.000000093351'); + Ttimes('40.71', '21', '854.91'); + Ttimes('-0.0000000000036161', '-1', '0.0000000000036161'); + Ttimes('7.8121', '36.121', '282.1808641'); + Ttimes('1', '46.221', '46.221'); + Ttimes('-128.21', '-1', '128.21'); + Ttimes('-180766.9302821', '291', '-52603176.7120911'); + Ttimes('3714507177452301036251', '6867200.8062651448391', '25508266683878109110598887924.4875346622141'); + Ttimes('0.0000000000000000000000654341', '0.00000000000000034029824715606780001', '0.000000000000000000000000000000000000022267109534234856032634341'); + Ttimes('2902811542.1751', '21.7592802616132547300301', '63163089892.83378534432594919064247051'); + Ttimes('-0.0000004236706737870443510907850088041', '-2870.7155483080953029218351', '0.00121623799060263520422140469527350360094358075600762840391'); + Ttimes('806512666721.29120081', '-8211', '-6622275506448522.04985091'); + Ttimes('24.0654772221', '270.37988121', '6506.820872573358786741'); + Ttimes('128868235795911', '-4897225358224393204401', '-631096792209375818286886121943004311'); + Ttimes('-47584.99084549466512725031', '0.000000000000000000000000000000000000000000154041881', '-0.00000000000000000000000000000000000000733008149720777859166674211023311'); + Ttimes('-98.9161', '-18710464022168031', '1850766130263175171.1991'); + Ttimes('-141', '1387696355.96881144331', '-195665186191.60241350671'); + Ttimes('-546863822.0898879518644444391', '-16471500507546.2972881', '9007667723112297421676.09483644538995959345560471'); + Ttimes('0.32596723638370271', '833.075641', '271.55536439535165708668711'); + Ttimes('-363496.57279544085492428981', '-39403998991', '14323218587663509.49683689305463158171'); + Ttimes('3.11', '36726825625425561919475.9510331', '114220427695073497569570.207712941'); + + function Tdiv(dividend, divisor, expected) { + assert(String(expected), String(new BigNumber(dividend).div(divisor))); + assert(String(expected), String(new BigNumber(dividend).div(new BigNumber(divisor)))); + } + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + Tdiv('999.5', 1, '1000'); + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); + Tdiv('-223891', '-0.000000000000000000005965201', '37532850946682266029258696'); + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 5}); + Tdiv('-2.51', '21', '-0.1195238095238095238'); + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 0}); + Tdiv('-9.11', '-5.61', '1.6239'); + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 5}); + Tdiv('-789.23741', '2996.9101', '-0.263350378778462524'); + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 1}); + Tdiv('86.41', '0.00000000000000901', '9590455049944506.1043285238623751387'); + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 2}); + Tdiv('-1.031', '-11', '0.093727272728'); + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); + Tdiv('1', '1.691', '0.59'); + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 0}); + Tdiv('-0.0000000210121', '2.81', '-0.000000007478'); + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 6}); + Tdiv('2844.11', '-1.681', '-1691.9155264723378941106484236'); + + BigNumber.config({EXPONENTIAL_AT : 0} ); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 1}); + Tdiv('1.59425939501316841840968291765489155608078575071e+9', '-3.08038002682802076462608674211e+24', '-5.17e-16'); + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 1}); + Tdiv('-2.7776797347790808834515841467871979111321511e+24', '3.3415875353512401063640184461e+3', '-8.3124553985000249637933047177077877273241264998630019e+20'); + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 1}); + Tdiv('1.256012023778514778181132285841e+17', '-5.465631858655701463629691267993890472939145146541478599849959175484551e+15', '-2.298017971681387626003643396450012590362066053e+1'); + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 0}); + Tdiv('1.378656411343789736916650471e+20', '-1.354076170203205324162874106485640621111e+19', '-1.018152775804995e+1'); + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + Tdiv('1.577809310668934678754980869332886769208471e+23', '6.93677728955357384105850187632701172506828921e+11', '2.27455667784669044615322243776416258218503335378e+11'); + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 3}); + Tdiv('-5.3967707960012001e+16', '9.289226824998276692885063155660376484197905615639719776994658491e+23', '-5.80971e-8'); + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 0}); + Tdiv('-1.7511951356552580494958278051e+28', '3.1019236701050639775694537481e+28', '-5.645513306895602e-1'); + + BigNumber.config({EXPONENTIAL_AT : 1E9}); + + function Tsqrt(expected, actual) { + assert(expected, new BigNumber(actual).sqrt().toString()) + } + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + Tsqrt('4949554350723.461435143921800511302655747834828959172999243354749297834846074272605873894779037895263058987767', '24498088270765545887271078.495701603537518591752268455746'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 2}); + Tsqrt('34024250164506590698940450635557.52953427667455604566896038084827726129860253810440168217368794648838157166948213114635075589', '1157649599256926764239267638462457331268783688179593190844781949.0026'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); + Tsqrt('44.40502294864850084', '1971.80606307'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); + Tsqrt('53661161093118917.324727467936347226946388973481645944102836490011463645342312303037845424027327131', '2879520209861659438086912639838761.96836512'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 1}); + Tsqrt('14192376.643123461322847366137186892667087869800484670508360531721790645551341594437545247745705539930735', '201423554780276.3686384009255372'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); + Tsqrt('4855847283088595702176944.8112532951528228009352578372167502504010846351042776625505257853252286361', '23579252836678896488410638492374748088831131237827.786414707871968195569'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 4}); + Tsqrt('2553252336.0331', '6519097491458426345.3554782053764871036657698339691144086'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); + Tsqrt('313415140.8429479671745256541153927986977746351343070479080617690487091', '98229050509604911'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 0}); + Tsqrt('1.537808174192351787259717', '2.3648539806128145775'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); + Tsqrt('62.30949119560079364913', '3882.4726930546528212066'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); + Tsqrt('20416269776260474006.927083982432268806569265768750039002235065141713481228428261', '416824071577046905366185925400975939799.8'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); + Tsqrt('174228234.709795821707519878032640346805381350977820681861118903584344693715322225768054125', '30355477770091701.53717021425249799086667828628302277998976752563'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); + Tsqrt('8346080245081.12842427016192329441165264650792513611706834892396914269233387534464159247031782538653', '69657055457333468703224935.763141948224298'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); + + function Tpow(expected, n, exp) { + assert(String(expected), String(new BigNumber(n).pow(exp))) + } + + BigNumber.config({EXPONENTIAL_AT : 0}); + + Tpow('6.1203577224967e+13', '61203577224967', 1); + Tpow('-2.6742593337474927167986914400257603e+34', '-82827', 7); + Tpow('3.490938536648870448335810684618787855050175354916141007545163425555957335829e+75', '247548469', 9); + Tpow('6.634204312890625e+15', '-95', 8); + Tpow('-9.171271e+1', '-91.71271', 1); + Tpow('5.65625765123605544067809018296482219675982471958093705254464e+59', '-9093998202', 6); + Tpow('1e+0', '-5420353171006060062', 0); + Tpow('5.93548365959371477646876280183482286894691258676416e+26', '840398698.65610156', 3); + Tpow('1.016984074247269470395836690098169093010136836967e+39', '21584.7', 9); + Tpow('-8.983272e+1', '-89.83272', 1); + Tpow('5.308416e+6', '-48', 4); + Tpow('3.83432050166120236679168e+23', '52088', 5); + + BigNumber.config({ROUNDING_MODE : 0}); + + Tpow('-5.196101e-14', '-453.8', -5); + Tpow('1e-20', '8308633', -17); + Tpow('1e-20', '834', -23); + Tpow('1.6666666666666666667e-1', '6', -1); + Tpow('-1e-20', '-71', -29); + Tpow('9.765625e-4', '-2', -10); + Tpow('1e-20', '62.8159321', -18); + Tpow('-6.333754988633e-8', '-2.0557545', -23); + Tpow('1e-20', '33', -24); + Tpow('-1e-20', '-5235.7923', -27); + Tpow('-1.29728108e-12', '-9169', -3); + Tpow('2.323057312542e-8', '3', -16); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4, EXPONENTIAL_AT : 1E9}); + + function Tmod(a, b, expected) { + assert(String(expected), String(new BigNumber(a).mod(new BigNumber(b)))); + } + + Tmod('-6591', '8.81', '-1.12'); + Tmod('1.11', '11', '1.11'); + Tmod('0.00000000432701', '271', '0.00000000432701'); + Tmod('0.0000000000215581', '-0.000000000002301', '0.0000000000008491'); + Tmod('-0.0000000000000591', '-1.71', '-0.0000000000000591'); + Tmod('-0.0000841', '6.981', '-0.0000841'); + Tmod('-2.4471', '-14359441882754.391', '-2.4471'); + Tmod('2.31614421', '2097.74828131', '2.31614421'); + Tmod('203239281', '-1092.361', '55.145'); + Tmod('-46.3306582161', '133931.6342079549871', '-46.3306582161'); + Tmod('-6038925.2969825025061', '-331548954963.41', '-6038925.2969825025061'); + Tmod('1338199.302617179356379591035511', '568.441', '89.188617179356379591035511'); + Tmod('-71', '2935538995927946.15230380421', '-71'); + + function TcomparedTo(a, b, expected) { + assert(String(expected), String(new BigNumber(a).cmp(b))); + assert(String(expected), String(new BigNumber(a).cmp(new BigNumber(b)))); + } + + TcomparedTo(1, 0, 1); + TcomparedTo(1, -0, 1); + TcomparedTo(-1, 0, -1); + TcomparedTo(-1, -0, -1); + TcomparedTo(1, Infinity, -1); + TcomparedTo(1, -Infinity, 1); + TcomparedTo(-1, Infinity, -1); + TcomparedTo(-1, -Infinity, 1); + TcomparedTo(0, 1, -1); + TcomparedTo(0, -1, 1); + TcomparedTo(-0, 1, -1); + TcomparedTo(-0, -1, 1); + TcomparedTo('51065.7214018651', '21', '1'); + TcomparedTo('1', '-16594.7051', '1'); + TcomparedTo('0.0000000000000000000010511609090481', '-11020751', '1'); + TcomparedTo('-5.8551401', '-0.000000000000000000000001123091759805151', '-1'); + TcomparedTo('11527.63339771', '-0.00000000000000000000004429516529932561', '1'); + TcomparedTo('45875.11', '405079444.71', '-1'); + TcomparedTo('1426.641', '20.9286431', '1'); + TcomparedTo('4.657171', '-50001.941', '1'); + TcomparedTo('-190771', '-686381.317791', '1'); + TcomparedTo('-0.0000000000000000000161', '12855824.31', '-1'); + TcomparedTo('21', '353565391626181', '-1'); + TcomparedTo('398788950.02241', '-46.7685077791', '1'); + TcomparedTo('-78.15411', '-105.31471806641', '1'); + TcomparedTo('41', '-71', '1'); + TcomparedTo('-51', '-0.00000474054791', '-1'); + TcomparedTo('-41', '17.241', '-1'); + TcomparedTo('11', '113010.8763991', '-1'); + TcomparedTo('-61', '3702421785.491', '-1'); + TcomparedTo('-0.00000000000000000000000000000003464171', '220.26991', '-1'); + TcomparedTo('0.000013781', '0.00000000501652742971', '1'); + TcomparedTo('-14762.331', '-1.11', '-1'); + TcomparedTo('31', '61', '-1'); + TcomparedTo('0.0000000000000000000000000000000000000000145668763947641', '398563006.4471', '-1'); + TcomparedTo('493.11824741', '736531', '-1'); + TcomparedTo('75077024.211', '1', '1'); + TcomparedTo('-90.74569446258221', '-21', '-1'); + TcomparedTo('15654315.61266191', '-11', '1'); + TcomparedTo('1.494421', '41821961', '-1'); + TcomparedTo('-26.51', '-0.00863321', '-1'); + TcomparedTo('-3.21', '30292255112081', '-1'); + TcomparedTo('-3.20191e+3', '5.11e-30', '-1'); + TcomparedTo('-1.08821e+5', '1.939813191e+9', '-1'); + TcomparedTo('-7.592791e-17', '-9.291e-27', '-1'); + TcomparedTo('-4.901e+0', '-1.39230141e-31', '-1'); + TcomparedTo('-2.8785721351e+5', '-1.084971e+3', '-1'); + TcomparedTo('6.8649111e+1', '2.1e+1', '1'); + TcomparedTo('1.4421e+4', '8.7711e+1', '1'); + TcomparedTo('1.497851e-9', '1.81661e+2', '-1'); + TcomparedTo('-8.631953001e+6', '6.310131231e+0', '-1'); + TcomparedTo('4.91e+0', '5.381e-15', '1'); + TcomparedTo('4.21e+0', '-1.63069631e+3', '1'); + TcomparedTo('-4.081e+1', '-7.801e+1', '1'); + TcomparedTo('-3.1e+1', '-8.41e+0', '-1'); + TcomparedTo('-1.1e+1', '1.037475521e+4', '-1'); + TcomparedTo('-1e+0', '1.6500661e+5', '-1'); + TcomparedTo('2.07751e-24', '2.88755811e+5', '-1'); + TcomparedTo('1e+0', '-1e+0', '1'); + TcomparedTo('3.821e-23', '4.25729041e-22', '-1'); + TcomparedTo('4.831e+1', '-1.01e+0', '1'); + TcomparedTo('-1.61071e+1', '8.22705601e+8', '-1'); + TcomparedTo('2.474493111e-20', '-9.0664201e+7', '1'); + TcomparedTo('4.27903551e+8', '1e+0', '1'); + TcomparedTo('1.1e+1', '-3.1e+1', '1'); + TcomparedTo('-6.3993191e+3', '2.9980701e+0', '-1'); + TcomparedTo('-3.7599935031e+1', '-1.14011e+5', '1'); + TcomparedTo('-1.631920621e+1', '-5.947675381e+5', '1'); + TcomparedTo('2.0690564941e-24', '-5.690831e+4', '1'); + TcomparedTo('-1.30864281e+0', '-6.1e+1', '1'); + + function Tabs(expected, value){ + assert(String(expected), new BigNumber(String(value)).abs().toString()); + } + + Tabs(1, 1); + Tabs(1, -1); + Tabs(0.5, '0.5'); + Tabs(0.5, '-0.5'); + Tabs(0.1, 0.1); + Tabs(0.1, -0.1); + Tabs(1.1, 1.1); + Tabs(1.1, -1.1); + Tabs(1.5, '1.5'); + Tabs(1.5, '-1.5'); + Tabs('Infinity', Infinity); + Tabs('Infinity', -Infinity); + Tabs(NaN, NaN); + Tabs(0, 0); + Tabs(0, -0); + + function Tneg(expected, value){ + assert(String(expected), new BigNumber(value).neg().toString()); + } + + Tneg(-4, 4); + Tneg(-2147483648, 2147483648); + Tneg(-0.25, 0.25); + Tneg(-0.0625, 0.0625); + Tneg(-1, 1); + Tneg(1, -1); + Tneg(0, 0); + Tneg(NaN, NaN); + Tneg(-Infinity, Infinity); + Tneg(Infinity, -Infinity); + Tneg('-5.0600621890668482322956892808849303', '5.0600621890668482322956892808849303'); + Tneg('7', '-7'); + Tneg('-6.1095374220609', '6.1095374220609'); + Tneg('9.01', '-9.01'); + Tneg('-1.016984074247269470395836690098169093010136836967', '1.016984074247269470395836690098169093010136836967'); + Tneg('-1.497639134680472576', '1.497639134680472576'); + Tneg('-4.1717657571404248', '4.1717657571404248'); + + function Tceil(expected, value) { + assert(String(expected), new BigNumber(String(value)).ceil().toString()); + } + + Tceil(0, 0); + Tceil(0, '0.000'); + Tceil(0, -0); + Tceil(Infinity, Infinity); + Tceil(-Infinity, -Infinity); + Tceil(NaN, NaN); + Tceil(1, 0.1); + Tceil(1, 0.49999999999999994); + Tceil(1, 0.5); + Tceil(1, 0.7); + Tceil(0, -0.1); + Tceil(0, -0.49999999999999994); + Tceil(0, -0.5); + Tceil(0, -0.7); + Tceil(1, 1); + Tceil(2, 1.1); + Tceil(2, 1.5); + Tceil(2, 1.7); + Tceil(-1, -1); + Tceil(-1, -1.1); + Tceil(-1, -1.5); + Tceil(-1, -1.7); + Tceil('-2075364', '-2075364.364286541923'); + Tceil('60593539780450631', '60593539780450631'); + Tceil('65937898671515', '65937898671515'); + Tceil('-39719494751819198566798', '-39719494751819198566798.578'); + Tceil('92627382695288166557', '92627382695288166556.8683774524284866028260448205069'); + Tceil('-881574', '-881574'); + Tceil('-3633239209', '-3633239209.654526163275621746013315304191073405508491056'); + Tceil('-23970335459820625362', '-23970335459820625362'); + Tceil('131869457416154038', '131869457416154038'); + Tceil('-2685', '-2685'); + Tceil('-4542227860', '-4542227860.9511298545226'); + Tceil('2416872282', '2416872281.963955669484225137349193306323379254936827'); + Tceil('-757684868752087594264588207655', '-757684868752087594264588207655.27838048392835556'); + Tceil('-438798503526', '-438798503526.2317623894721299587561697'); + Tceil('801625782231888715214665', '801625782231888715214665'); + Tceil('-91881984778675238', '-91881984778675238'); + Tceil('327765350218284325239839632047', '327765350218284325239839632046.91682741746683081459605386'); + Tceil('-7469045007691432294', '-7469045007691432294.362757245'); + Tceil('8365540212937142194319515218790', '8365540212937142194319515218789.4106658678537421977827'); + Tceil('-14108', '-14108.495051214515'); + Tceil('49104502', '49104501.10055989379655329194309526150310568683504206945625'); + Tceil('131370407', '131370406.330005158136313262837556068534122953'); + Tceil('3017', '3017'); + + function Tfloor(expected, value) { + assert(String(expected), new BigNumber(String(value)).floor().toString()); + } + + Tfloor(0, 0); + Tfloor(0, '0.000'); + Tfloor(-0, -0); + Tfloor(Infinity, Infinity); + Tfloor(-Infinity, -Infinity); + Tfloor(NaN, NaN); + Tfloor(0, 0.1); + Tfloor(0, 0.49999999999999994); + Tfloor(0, 0.5); + Tfloor(0, 0.7); + Tfloor(-1, -0.1); + Tfloor(-1, -0.49999999999999994); + Tfloor(-1, -0.5); + Tfloor(-1, -0.7); + Tfloor(1, 1); + Tfloor(1, 1.1); + Tfloor(1, 1.5); + Tfloor(1, 1.7); + Tfloor(-1, -1); + Tfloor(-2, -1.1); + Tfloor(-2, -1.5); + Tfloor(-2, -1.7); + Tfloor('-2075365', '-2075364.364286541923'); + Tfloor('60593539780450631', '60593539780450631'); + Tfloor('65937898671515', '65937898671515'); + Tfloor('-39719494751819198566799', '-39719494751819198566798.578'); + Tfloor('92627382695288166556', '92627382695288166556.8683774524284866028260448205069'); + Tfloor('-881574', '-881574'); + Tfloor('-3633239210', '-3633239209.654526163275621746013315304191073405508491056'); + Tfloor('-23970335459820625362', '-23970335459820625362'); + Tfloor('131869457416154038', '131869457416154038'); + Tfloor('-4542227861', '-4542227860.9511298545226'); + Tfloor('2416872281', '2416872281.963955669484225137349193306323379254936827'); + Tfloor('-757684868752087594264588207656', '-757684868752087594264588207655.27838048392835556'); + Tfloor('-438798503527', '-438798503526.2317623894721299587561697'); + Tfloor('801625782231888715214665', '801625782231888715214665'); + Tfloor('-91881984778675238', '-91881984778675238'); + Tfloor('327765350218284325239839632046', '327765350218284325239839632046.91682741746683081459605386'); + Tfloor('-7469045007691432295', '-7469045007691432294.362757245'); + Tfloor('8365540212937142194319515218789', '8365540212937142194319515218789.4106658678537421977827'); + Tfloor('-14109', '-14108.495051214515'); + Tfloor('49104501', '49104501.10055989379655329194309526150310568683504206945625'); + Tfloor('131370406', '131370406.330005158136313262837556068534122953'); + Tfloor('3017', '3017'); + + function Tround(expected, value, decimalPlaces, roundingMode) { + assert(String(expected), new BigNumber(String(value)).round(decimalPlaces, roundingMode).toString()); + } + + BigNumber.config({ROUNDING_MODE : 7}); + + Tround(0, 0); + Tround(0, -0); + Tround(Infinity, Infinity); + Tround(-Infinity, -Infinity); + Tround(NaN, NaN); + Tround(1, 0.5); + Tround(1, 0.7); + Tround(1, 1); + Tround(1, 1.1); + Tround(1, 1.49999); + Tround(0, -0.5); + Tround(-1, -0.5000000000000001); + Tround(-1, -0.7); + Tround(-1, -1); + Tround(-1, -1.1); + Tround(-1, -1.49999); + Tround(-1, -1.5); + Tround(9007199254740990, 9007199254740990); + Tround(9007199254740991, 9007199254740991); + Tround(-9007199254740990, -9007199254740990); + Tround(-9007199254740991, -9007199254740991); + Tround('-4.1787893', '-4.178789328', 7, 1); + Tround('372', '372', 3, 6); + Tround('-9.1645', '-9.1645354', 4, 6); + Tround('83.241462', '83.241462', 6, 6); + Tround('-0.00001262', '-0.00001262', 8, 6); + Tround('63.4147', '63.414735', 4, 3); + Tround('-2', '-2', 3, 5); + Tround('538601216', '538601216', 2, 3); + Tround('2138522', '2138522', 6, 1); + Tround('301527.309', '301527.309', 3, 5); + Tround('-7.568', '-7.5683', 3, 5); + Tround('-1969563', '-1969563', 8, 1); + Tround('-249815496353142605063083339706423770452529255711064841247978.1649', '-249815496353142605063083339706423770452529255711064841247978.16482575714251625720191747855256', 4, 3); + Tround('-8757939868931375459275247990933877309', '-8757939868931375459275247990933877309', 37, 5); + Tround('556228688742576287254121716253667920283844645854057755303259369', '556228688742576287254121716253667920283844645854057755303259369', 25, 3); + Tround('0', '0.00000000000000000000000000000000000000000000000029171651270270187897342247995644546232788426', 35, 3); + Tround('-0.0000058979376152458865088785307705', '-0.000005897937615245886508878530770431196412050562641578155968', 34, 0); + Tround('-0.00000000000000847145658', '-0.00000000000000847145657888758222743159237', 23, 3); + Tround('-6049825281564367887763596943301191584240212075976455', '-6049825281564367887763596943301191584240212075976455', 53, 0); + Tround('-64680661822322715719008107701612.741312367131318202976964422', '-64680661822322715719008107701612.74131236713131820297696442216284615573809', 27, 4); + Tround('0', '-0.0000000000000000000000000000000000048810387700772580768508931440796984745771392', 29, 2); + Tround('232730083859746141163.7653402888578932348762190816502', '232730083859746141163.76534028885789323487621908165018267559238917447610653431235463768839108', 31, 5); + Tround('-499311204526771278437755030091270601.471802335', '-499311204526771278437755030091270601.47180233568698638607829334564', 9, 2); + Tround('-4793558721695298336734196955569628362250.1', '-4793558721695298336734196955569628362250.107513868618556605590137359591047843592593', 1, 6); + Tround('0.0000000000000000000000000000000000000622', '0.000000000000000000000000000000000000062176566496', 40, 5); + Tround('-393323198834362857317921391989917230.1575124832953752419421908305674188204', '-393323198834362857317921391989917230.15751248329537524194219083056741882044261538788798', 37, 5); + Tround('0', '-0.000000000000000169092170076859363', 3, 5); + + function TbaseIn(expected, value, base) { + assert(expected, new BigNumber(value, base).toString()) + } + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); + + TbaseIn('-729.0001524157902758725803993293705227861606', '-1000000.00000001', 3); + TbaseIn('-4096.0000152587890625', '-1000000.00000001', 4); + TbaseIn('-15625.00000256', '-1000000.00000001', 5); + TbaseIn('-46656.0000005953741807651272671848803536046334', '-1000000.00000001', 6); + TbaseIn('-117649.0000001734665255574303432156634721649541', '-1000000.00000001', 7); + TbaseIn('-262144.000000059604644775390625', '-1000000.00000001', 8); + TbaseIn('-531441.0000000232305731254187746379102835730507', '-1000000.00000001', 9); + TbaseIn('-1000000.00000001', '-1000000.00000001', 10); + TbaseIn('-1771561.0000000046650738020973341431092840981941', '-1000000.00000001', 11); + TbaseIn('-2985984.000000002325680393613778387440938881268', '-1000000.00000001', 12); + TbaseIn('-4826809.0000000012258947398402566721524761600832', '-1000000.00000001', 13); + TbaseIn('-7529536.0000000006776036154587122781861854381443', '-1000000.00000001', 14); + TbaseIn('-11390625.0000000003901844231062338058222831885383', '-1000000.00000001', 15); + TbaseIn('-16777216.00000000023283064365386962890625', '-1000000.00000001', 16); + TbaseIn('-24137569.0000000001433536083296850401481727781882', '-1000000.00000001', 17); + TbaseIn('-34012224.0000000000907444262711670884293370452072', '-1000000.00000001', 18); + TbaseIn('-47045881.0000000000588804597472215429921222500439', '-1000000.00000001', 19); + TbaseIn('-64000000.0000000000390625', '-1000000.00000001', 20); + TbaseIn('-85766121.0000000000264390375792455941496210138949', '-1000000.00000001', 21); + TbaseIn('-113379904.0000000000182229445394427114965206410085', '-1000000.00000001', 22); + TbaseIn('-148035889.0000000000127696005408659110598172017909', '-1000000.00000001', 23); + TbaseIn('-191102976.0000000000090846890375538218259411675049', '-1000000.00000001', 24); + TbaseIn('-244140625.0000000000065536', '-1000000.00000001', 25); + TbaseIn('-308915776.0000000000047886513275010026255956100003', '-1000000.00000001', 26); + TbaseIn('-387420489.0000000000035407061614721497695336509027', '-1000000.00000001', 27); + TbaseIn('-481890304.0000000000026468891228855948366647868677', '-1000000.00000001', 28); + TbaseIn('-594823321.000000000001999014833671504164315094574', '-1000000.00000001', 29); + TbaseIn('-729000000.0000000000015241579027587258039932937052', '-1000000.00000001', 30); + TbaseIn('-887503681.0000000000011724827159637921277158030113', '-1000000.00000001', 31); + TbaseIn('-1073741824.0000000000009094947017729282379150390625', '-1000000.00000001', 32); + TbaseIn('-1291467969.0000000000007110309102419347878538765581', '-1000000.00000001', 33); + TbaseIn('-1544804416.0000000000005599750325378321880787999147', '-1000000.00000001', 34); + TbaseIn('-1838265625.0000000000004440743054270216786320984887', '-1000000.00000001', 35); + TbaseIn('-2176782336.0000000000003544704151217464391770978328', '-1000000.00000001', 36); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); + TbaseIn('1072424547177.982891327541533302850175278158817253467459228776101', 'donxvwix.zdts', 36); + + BigNumber.config({DECIMAL_PLACES : 86}); + TbaseIn('824178538787196749922434027872451367594239056.93473392033316110609748881918323116875731371037529199959272159196515804304815690839727', '402kfhkd37bt5n8scr1ir9ndlrnipig.s17oe7rkhi91bh', 30); + + BigNumber.config({DECIMAL_PLACES : 84}); + TbaseIn('9560389177469634483515162.499335215204179931606951906984830542647805834768203380512715304247460734647288652625', '195qdkkqsa8shmhp9e.edr89', 29); + + BigNumber.config({DECIMAL_PLACES : 65}); + TbaseIn('5955289028666603391738616069969.70235175643053599414353772852590894151261634747374296179598348968', '8qp28dk3js2iqksmqaqnq.lntnif5qh', 31); + + BigNumber.config({DECIMAL_PLACES : 49}); + TbaseIn('27603501710202437282037.4945845176631161140013607910579053986520224457133', '42545302442500101544532043113.254455200225412543300022520330204033', 6); + + BigNumber.config({DECIMAL_PLACES : 39}); + TbaseIn('9464300204295306111422098057.77248824166891668678144149703717008528', '25473f3dbce5cf3hg8318d7.dg52d120b14ea966a7ag06a2gh03', 18); + + BigNumber.config({DECIMAL_PLACES : 15}); + TbaseIn('133262758349237628352120716402.993431117739119', '3bkobquqthhfbndsmv3i.vp8o0sc4ldtji02mmgqr7blpdjgk', 32); + + BigNumber.config({DECIMAL_PLACES : 65}); + TbaseIn('171510920999634527633.53051379043557196404057602235264411208736518600450525086556631034', '1fqecn4264r1is.ijur8yj41twl9', 35); + + BigNumber.config({DECIMAL_PLACES : 48}); + TbaseIn('325927753012307620476767402981591827744994693483231017778102969592507', 'c16de7aa5bf90c3755ef4dea45e982b351b6e00cd25a82dcfe0646abb', 16); + + BigNumber.config({DECIMAL_PLACES : 48}); + TbaseIn('72783.559378210242248003991012349918599484318629885897', '11c4f.8f33690f15e13146d99092446da', 16); + + BigNumber.config({DECIMAL_PLACES : 81}); + TbaseIn('8535432796511493691316991730196733707212461.36382685871580896850891461623808', '9l0ah4mf8a0kcgn44oji4kh7l6fbenb.929jlggo43612jfn', 25); + + function TbaseOut(expected, value, base) { + assert(expected, new BigNumber(value).toString(base)) + } + + BigNumber.config({DECIMAL_PLACES : 40}); + + TbaseOut('1111100111.11111111101111100111011011001000101101', '999.999', 2); + TbaseOut('1101000.2222220210221200021112101120001001102122', '999.999', 3); + TbaseOut('33213.3333233213123020231003211120010012021032', '999.999', 4); + TbaseOut('12444.4444141414141414141414141414141414141414', '999.999', 5); + TbaseOut('4343.5554412021453552313300510342441202145355', '999.999', 6); + TbaseOut('2625.6664412312515410253566644123125154102536', '999.999', 7); + TbaseOut('1747.7773716662132071260101422335136152375747', '999.999', 8); + TbaseOut('1330.8882385024534603137817105667427164213206', '999.999', 9); + TbaseOut('999.999', '999.999', 10); + TbaseOut('829.aa973a4913443083925788751826a12209617036', '999.999', 11); + TbaseOut('6b3.bba3320237938b1770119a7a5699606ab3b294a9', '999.999', 12); + TbaseOut('5bb.ccaa5926381c699320b4278283cb62c494684889', '999.999', 13); + TbaseOut('515.ddb38266d3049bdac14b5d165539a5b770ad942', '999.999', 14); + TbaseOut('469.eeb9595959595959595959595959595959595959', '999.999', 15); + TbaseOut('3e7.ffbe76c8b4395810624dd2f1a9fbe76c8b439581', '999.999', 16); + TbaseOut('37d.ggc18275989641138dge6d54eg08g529aeb6faa1', '999.999', 17); + TbaseOut('319.hhc307dh7b6deeha40a6b43307dh7b6deeha40a7', '999.999', 18); + TbaseOut('2eb.iic2ch24i43efhgd61307b0e199g6fb74a55dcac', '999.999', 19); + TbaseOut('29j.jjc', '999.999', 20); + TbaseOut('25c.kkbfaii9d8gg7b6ee594cc372aa15087k2j65i0h', '999.999', 21); + TbaseOut('219.llb7g822a4ceh5a0fag44k937cak18la89ii6f3', '999.999', 22); + TbaseOut('1ka.mmaj3f2cgc81fe490kebi8f9m173blcfb08mj6j3', '999.999', 23); + TbaseOut('1hf.nna4590djiena4590djiena4590djiena4590djj', '999.999', 24); + TbaseOut('1eo.oo99999999999999999999999999999999999999', '999.999', 25); + TbaseOut('1cb.pp8b0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb1', '999.999', 26); + TbaseOut('1a0.qq78f2dle09cnjl9h6mblfcj9ij58geni8qkbn0n', '999.999', 27); + TbaseOut('17j.rr619hjdigg3g9nr2pf067h6qc2j7ar95474jjq6', '999.999', 28); + TbaseOut('15d.ss4hkojk13n4rnf1dpo9ham09782ifbgg63d28cl', '999.999', 29); + TbaseOut('139.tt3', '999.999', 30); + TbaseOut('117.uu16eq9rha657cl1g2ngcbdir7m8tmihjp2dsf4t', '999.999', 31); + TbaseOut('v7.vuv7di5k75c10oidqboqjuv7di5k75c10oidqbor', '999.999', 32); + TbaseOut('u9.wvu22k10p1i619fhuaq3d5gsfqkr584weg2bahcu', '999.999', 33); + TbaseOut('td.xwsnmjjt3i7kw38x68nvs0igtcqmabee4ufqd1up', '999.999', 34); + TbaseOut('sj.yxr4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4', '999.999', 35); + TbaseOut('rr.zypcdtnwjl0v3qs82axzf9i56mgpcdtnwjl0v3qs', '999.999', 36); + + BigNumber.config({DECIMAL_PLACES : 20}); + TbaseOut('b8b057c619.881cda90778727315519', '240240367775.61294728461437827', 14); + + BigNumber.config({DECIMAL_PLACES : 57}); + TbaseOut('3uke1r.qog7jpuls3wumhw9r6ij66xbtr9fxmcxo7pjkdsets6obc03cdkpohtp4', '177198677.78587988442236198004', 34); + + BigNumber.config({DECIMAL_PLACES : 53}); + TbaseOut('rxp7iouofqsa.5xr0ytex5w3u84ss4bmqr4d2r58uk0w6vou7okvti3sqaf8xdt7m4', '2699846669670878465.17042631933406076262750289627556', 35); + + BigNumber.config({DECIMAL_PLACES : 10}); + TbaseOut('71.4dadah84a6', '127.26419', 18); + + BigNumber.config({DECIMAL_PLACES : 62}); + TbaseOut('pho3b9iei6hp0dcf72fih.ph9881jc7d7c0c0mgpgd1ji1k02ola0l976leng417ng4dma8k5jj95gommail', '511945071604551808598197283361.9872166378092262156654881169655510', 26); + + BigNumber.config({DECIMAL_PLACES : 16}); + TbaseOut('98.1902712204800298', '107.16547', 11); + + BigNumber.config({DECIMAL_PLACES : 20}); + + function TtoString(expected, value) { + assert(expected, new BigNumber(value).toString()) + } + + TtoString('NaN', NaN); + TtoString('Infinity', 1/0); + TtoString('-Infinity', -1/0); + TtoString('0', 0); + TtoString('9', 9); + TtoString('90', 90); + TtoString('90.12', 90.12); + TtoString('0.1', 0.1); + TtoString('0.01', 0.01); + TtoString('0.0123', 0.0123); + TtoString('111111111111111111111', '111111111111111111111'); + TtoString('1111111111111111111111', '1111111111111111111111'); + TtoString('11111111111111111111111', '11111111111111111111111'); + TtoString('0.00001', 0.00001); + TtoString('0.000001', 0.000001); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + TtoString('5.73447902457635174479825134e+14', '573447902457635.174479825134'); + TtoString('1.07688e+1', '10.7688'); + TtoString('3.171194102379077141557759899307946350455841e+27', '3171194102379077141557759899.307946350455841'); + TtoString('4.924353466898191177698653319742594890634579e+37', '49243534668981911776986533197425948906.34579'); + TtoString('6.85558243926569397328633907445409866949445343654692955e+18', '6855582439265693973.28633907445409866949445343654692955'); + TtoString('1e+0', '1'); + TtoString('2.1320000803e+7', '21320000.803'); + TtoString('5.0878741e+4', '50878.741'); + TtoString('5.1932898288391e+8', '519328982.88391'); + TtoString('5.690616778176956027307884725933410349604387915634524e+49', '56906167781769560273078847259334103496043879156345.24'); + TtoString('3.25099780528575457273246693147645e+15', '3250997805285754.572732466931476450'); + TtoString('3e+0', '3'); + TtoString('2.5811494197573291905990947355226e+13', '25811494197573.291905990947355226'); + TtoString('5.60372259169833930471746454125e+13', '56037225916983.3930471746454125'); + TtoString('1.2615810663732236602461593613783e+7', '12615810.663732236602461593613783'); + TtoString('1.4654366449266911507705477499035407722184965108377032e+11', '146543664492.66911507705477499035407722184965108377032'); + TtoString('6.4986735507448912857131832908423940757e+38', '649867355074489128571318329084239407570.0'); + TtoString('3.6146989180120676857245474944e+3', '3614.6989180120676857245474944'); + TtoString('9.928654762302286149994896625074e+4', '99286.54762302286149994896625074'); + TtoString('3.46424170787806074650506079e+3', '3464.24170787806074650506079'); + TtoString('1.25934313355319666474752550204680303068865719647e+33', '1259343133553196664747525502046803.03068865719647'); + TtoString('1.23014105337660651106978059198916100450966081493207e+27', '1230141053376606511069780591.98916100450966081493207'); + TtoString('1.386164712267169624993434287237e+23', '138616471226716962499343.4287237'); + TtoString('2.66076369930322488334961932e+3', '2660.76369930322488334961932'); + + BigNumber.config({EXPONENTIAL_AT : 1E9}); + + function TtoExponential(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toExponential(decimalPlaces)); + } + + TtoExponential('1e+0', 1, undefined); + TtoExponential('1.1e+1', 11, undefined); + TtoExponential('1.12e+2', 112, undefined); + TtoExponential('1e+0', 1, 0); + TtoExponential('1e+1', 11, 0); + TtoExponential('1e+2', 112, 0); + TtoExponential('1.0e+0', 1, 1); + TtoExponential('1.1e+1', 11, 1); + TtoExponential('1.1e+2', 112, 1); + TtoExponential('1.00e+0', 1, 2); + TtoExponential('1.10e+1', 11, 2); + TtoExponential('1.12e+2', 112, 2); + TtoExponential('1.000e+0', 1, 3); + TtoExponential('1.100e+1', 11, 3); + TtoExponential('1.120e+2', 112, 3); + TtoExponential('1e-1', 0.1, undefined); + TtoExponential('1.1e-1', 0.11, undefined); + TtoExponential('1.12e-1', 0.112, undefined); + TtoExponential('1e-1', 0.1, 0); + TtoExponential('1e-1', 0.11, 0); + TtoExponential('1e-1', 0.112, 0); + TtoExponential('1.0e-1', 0.1, 1); + TtoExponential('1.1e-1', 0.11, 1); + TtoExponential('1.1e-1', 0.112, 1); + TtoExponential('1.00e-1', 0.1, 2); + TtoExponential('1.10e-1', 0.11, 2); + TtoExponential('1.12e-1', 0.112, 2); + TtoExponential('1.000e-1', 0.1, 3); + TtoExponential('1.100e-1', 0.11, 3); + TtoExponential('1.120e-1', 0.112, 3); + + BigNumber.config({ROUNDING_MODE : 0}); + + TtoExponential('-5.3453435435e+8', '-53453.435435E4', undefined); + TtoExponential('-8.8254658100092746334967191957167916942544e+17', '-882546581000927463.34967191957167916942543286', 40); + TtoExponential('-4.794121828559674450610889008537305783490457e-9', '-0.00000000479412182855967445061088900853730578349045628396662493370334888944406719979291547717079', 42); + TtoExponential('3.6149e+33', '3614844933096444884855774574994631.0106397808', 4); + TtoExponential('5.582954000000000e-12', '0.000000000005582954', 15); + TtoExponential('-3.88740271991885914774802363151163005925700000000000000000e-24', '-0.000000000000000000000003887402719918859147748023631511630059257', 56); + + BigNumber.config({ROUNDING_MODE : 1}); + + TtoExponential('0e+0', '-0.0E-0', undefined); + TtoExponential('-2.856376815219143184897347685012382222462687620998915470135915e+6', '-2856376.815219143184897347685012382222462687620998915470135915511363444', 60); + TtoExponential('7.75700e-24', '0.000000000000000000000007757', 5); + TtoExponential('7.0e-1', '0.7', 1); + TtoExponential('5.2109749078977455423107465583658126e+37', '52109749078977455423107465583658126637', 34); + TtoExponential('3.631093819552528994444977110063007461579154042777868294000e-29', '0.00000000000000000000000000003631093819552528994444977110063007461579154042777868294', 57); + TtoExponential('-9.893937860425888e+8', '-989393786.042588804219191', 15); + + BigNumber.config({ROUNDING_MODE : 2}); + + TtoExponential('-5.28860565e-16', '-0.00000000000000052886056528317233012115396784629214632', 8); + TtoExponential('6.4114675970838738000e-18', '0.0000000000000000064114675970838738', 19); + TtoExponential('8.00000000000000000000e-20', '0.00000000000000000008', 20); + TtoExponential('2.74000064578288771723078597711103520450391668117802304078152085625023633681179e+24', '2740000645782887717230785.977111035204503916681178023040781520856250236336811781347278', 77); + TtoExponential('8.1936742669491704846805837777816457628e-16', '0.00000000000000081936742669491704846805837777816457628', 37); + TtoExponential('-7.2157448e+14', '-721574484716710.00141299844961546', 7); + TtoExponential('-5.321807464703650000000e-15', '-0.00000000000000532180746470365', 21); + TtoExponential('-4.449e+27', '-4449471658582621135143349142.228707647170080816912435271162', 3); + + BigNumber.config({ROUNDING_MODE : 3}); + + TtoExponential('-9.99999999000000009e+8', '-999999999.000000009e-0', undefined); + TtoExponential('-3.99764422903251220452704763278376060858663250289320247532595e+24', '-3997644229032512204527047.63278376060858663250289320247532594416986984981431156065660613', 59); + TtoExponential('5.534083545686157907280686578717428772e+12', '5534083545686.157907280686578717428772', 36); + TtoExponential('5.00000000e-9', '0.000000005', 8); + TtoExponential('-4.08363116583051e+14', '-408363116583051', 14); + TtoExponential('9.278230415634296945273818e+19', '92782304156342969452.738186255580532649103987374718221928871873054827841260470670536425', 24); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoExponential('-5.002239116605888927178702930656e-39', '-0.00000000000000000000000000000000000000500223911660588892717870293065633642', 30); + TtoExponential('-8.52292947230244775435e+29', '-852292947230244775434968241532.494643593912804433318745222587246680109833509655450267792446', 20); + TtoExponential('-6.1169514510867e+10', '-61169514510.8673382', 13); + TtoExponential('-8.05745763527307676170759722175169266017831695215e+48', '-8057457635273076761707597221751692660178316952146', 47); + TtoExponential('-4.923572102098e+10', '-49235721020.9847017846898652687600227388412980598816', 12); + TtoExponential('-7.981341661715027117746906076515945e+41', '-798134166171502711774690607651594491039629', 33); + TtoExponential('-8.00e-3', '-0.008', 2); + + BigNumber.config({ROUNDING_MODE : 5}); + + TtoExponential('4.95474614815842e+38', '495474614815842191683004449862568813538.573064401156', 14); + TtoExponential('-8.9667567079038139e+16', '-89667567079038139', 16); + TtoExponential('-7.0e+2', '-703', 1); + TtoExponential('-2.6249e+33', '-2624861185343559570287214983819906', 4); + TtoExponential('-6.510119186347371697501169416839709631422185436811698613000000000000000000000000000000e-31', '-0.0000000000000000000000000000006510119186347371697501169416839709631422185436811698613', 84); + TtoExponential('7.73e+3', '7729', 2); + TtoExponential('1.4393781011009257793117531801549e+4', '14393.781011009257793117531801548751', 31); + + BigNumber.config({ROUNDING_MODE : 6}); + + TtoExponential('-4.3502707501164e+36', '-4350270750116411997402439304498892819', 13); + TtoExponential('9.5e-21', '0.0000000000000000000094520280724178734152', 1); + TtoExponential('1.39631186750554172785676012693418617250072200744214625994656047727270672248243741907e+34', '13963118675055417278567601269341861.725007220074421462599465604772727067224824374190703237660781', 83); + TtoExponential('5.9446570e-26', '0.00000000000000000000000005944657036540768164877637239177740419063920648', 7); + TtoExponential('7.00000e-12', '0.000000000007', 5); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoExponential('-2.033619450856645241153977e+0', '-2.03361945085664524115397653636144859', 24); + TtoExponential('1.130e+8', '112955590.0430616', 3); + TtoExponential('-2.1366468193419876852426155614364269e+10', '-21366468193.419876852426155614364269', 34); + TtoExponential('5.82086615659566151529e+7', '58208661.56595661515285734890860077163', 20); + + function TtoFixed(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toFixed(decimalPlaces)); + } + + TtoFixed('NaN', NaN, 2); + TtoFixed('Infinity', 1/0, 2); + TtoFixed('-Infinity', -1/0, 2); + + TtoFixed('1111111111111111111111.00000000', '1111111111111111111111', 8); + TtoFixed('0.1', 0.1, 1); + TtoFixed('0.10', 0.1, 2); + TtoFixed('0.100', 0.1, 3); + TtoFixed('0.01', 0.01, 2); + TtoFixed('0.010', 0.01, 3); + TtoFixed('0.0100', 0.01, 4); + TtoFixed('0.00', 0.001, 2); + TtoFixed('0.001', 0.001, 3); + TtoFixed('0.0010', 0.001, 4); + TtoFixed('1.0000', 1, 4); + TtoFixed('1.0', 1, 1); + TtoFixed('1', 1, 0); + TtoFixed('12', 12, 0); + TtoFixed('1', 1.1, 0); + TtoFixed('12', 12.1, 0); + TtoFixed('1', 1.12, 0); + TtoFixed('12', 12.12, 0); + TtoFixed('0.0000006', 0.0000006, 7); + TtoFixed('0.00000006', 0.00000006, 8); + TtoFixed('0.000000060', 0.00000006, 9); + TtoFixed('0.0000000600', 0.00000006, 10); + TtoFixed('0', 0, 0); + TtoFixed('0.0', 0, 1); + TtoFixed('0.00', 0, 2); + + BigNumber.config({ROUNDING_MODE : 0}); + + TtoFixed('6552606716539719300271040797809220.3', '6552606716539719300271040797809220.237838405', 1); + TtoFixed('25605410.260045950231371', '25605410.260045950231370974066', 15); + TtoFixed('-65593283.0000', '-65593283', 4); + TtoFixed('-2238743875407788208860272230040067273281097722822075126.88000000000', '-2238743875407788208860272230040067273281097722822075126.88', 11); + TtoFixed('-1714042659419404211.0000000', '-1714042659419404211', 7); + TtoFixed('580861301.000', '580861301', 3); + TtoFixed('-495746734.000', '-495746734', 3); + TtoFixed('-909962202.00000', '-909962202', 5); + TtoFixed('-6588.00', '-6588', 2); + + BigNumber.config({ROUNDING_MODE : 1}); + + TtoFixed('0.3', '0.3', 1); + TtoFixed('-200258348374.3', '-200258348374.3595802551014614089785610548492885372322083789', 1); + TtoFixed('-8996550690041157178188143247448286757711.5580857413', '-8996550690041157178188143247448286757711.55808574133329', 10); + TtoFixed('-3172413669280032477.00', '-3172413669280032477', 2); + TtoFixed('6547946357820.750067107731812021675', '6547946357820.750067107731812021675351468709784004', 21); + TtoFixed('24188393190716631282750407915133817062572333100239.0000000000000000000', '24188393190716631282750407915133817062572333100239', 19); + TtoFixed('539982361589798324286450574560330534901309503.82000000', '539982361589798324286450574560330534901309503.82', 8); + TtoFixed('829898800701640360552652.0000', '829898800701640360552652', 4); + TtoFixed('-1585782773394.4', '-1585782773394.44501382110847', 1); + TtoFixed('-7604844176594943774211951887242195107.399', '-7604844176594943774211951887242195107.399576743428669618164', 3); + + BigNumber.config({ROUNDING_MODE : 2}); + + TtoFixed('7810971819938620325901899057970512790433.0000000000000000', '7810971819938620325901899057970512790433', 16); + TtoFixed('-623395.0', '-623395', 1); + TtoFixed('81334094079413997693749807.000000000000', '81334094079413997693749807', 12); + TtoFixed('790143966.5', '790143966.406169480041929356421', 1); + TtoFixed('-0.000485', '-0.0004851099615478', 6); + TtoFixed('843581583868277359263.9721265', '843581583868277359263.97212648230399373761717', 7); + TtoFixed('-921038771017147427324121032.000000', '-921038771017147427324121032', 6); + TtoFixed('-823.0', '-823', 1); + TtoFixed('505.0', '505', 1); + + BigNumber.config({ROUNDING_MODE : 3}); + + TtoFixed('0.0000', '0.00000000000584', 4); + TtoFixed('-79055907138737329232.165677999092552368', '-79055907138737329232.1656779990925523674', 18); + TtoFixed('47206303530045536472421888342339.00000000', '47206303530045536472421888342339', 8); + TtoFixed('3974.0', '3974', 1); + TtoFixed('1296297430771.39', '1296297430771.391670729445980444292', 2); + TtoFixed('0.000016', '0.00001686928031', 6); + TtoFixed('-0.00001', '-0.0000000000008', 5); + TtoFixed('4883938724383.000', '4883938724383', 3); + TtoFixed('-5.4115622307', '-5.411562230628539329345282639155988044655000352687981880842', 10); + TtoFixed('-0.01', '-0.0000000000155280115429218804426906540524', 2); + TtoFixed('-2730930776035874709906.00000', '-2730930776035874709906', 5); + TtoFixed('8419336352549424092369623.00000', '8419336352549424092369623', 5); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoFixed('733744593401073823825766410831877679446.0000000000000000000', '733744593401073823825766410831877679446', 19); + TtoFixed('-64.6849459', '-64.6849458687691227978', 7); + TtoFixed('-0.000000', '-0.00000000009', 6); + TtoFixed('-62537287527837589298857228059657673223234916.95923265430000000', '-62537287527837589298857228059657673223234916.9592326543', 17); + TtoFixed('3393668096256773847245721315080265089731.000000', '3393668096256773847245721315080265089731', 6); + TtoFixed('0.0', '0.0000000000000056674956638008432348702401392', 1); + TtoFixed('72516372734.6', '72516372734.6447', 1); + TtoFixed('-418.28', '-418.2800731793741351', 2); + TtoFixed('0.00', '0.001', 2); + + BigNumber.config({ROUNDING_MODE : 5}); + + TtoFixed('0.00', '0.00000000000000070362', 2); + TtoFixed('682377946933004839.0000000', '682377946933004839', 7); + TtoFixed('0.000000000', '0.00000000000000301722508588270616971784651380892069087869575', 9); + TtoFixed('-356330174906.7', '-356330174906.737986270704', 1); + TtoFixed('771875969530483104163034745359742192923504.000000000000000', '771875969530483104163034745359742192923504', 15); + TtoFixed('-85.57612133364', '-85.576121333642541652128540737082', 11); + TtoFixed('-796870619982006783.00000000', '-796870619982006783', 8); + TtoFixed('985819.0', '985819', 1); + + BigNumber.config({ROUNDING_MODE : 6}); + + TtoFixed('-6614662975368684488885953285955838893900074215956.00', '-6614662975368684488885953285955838893900074215956', 2); + TtoFixed('8642393776898.000', '8642393776898', 3); + TtoFixed('3612207878528.1106344698085142865', '3612207878528.1106344698085142865438924419', 19); + TtoFixed('977910386.93', '977910386.9343537', 2); + TtoFixed('-8937937492688941768401276851642629965923372.0', '-8937937492688941768401276851642629965923372', 1); + TtoFixed('-8327876772303865517454752161.4376112752921904774', '-8327876772303865517454752161.43761127529219047742910886', 19); + TtoFixed('-27707.00', '-27707', 2); + TtoFixed('-7287595765894242586375.92700435484', '-7287595765894242586375.927004354837723619581861634319', 11); + TtoFixed('-0.00000', '-0.000000000000023670858459165486137218740358207859', 5); + TtoFixed('574676836802209077.64156', '574676836802209077.641563875647945277493356873895', 5); + TtoFixed('-3041038455237222898218053653661.87952947815', '-3041038455237222898218053653661.87952947815', 11); + TtoFixed('-628244132307.000', '-628244132307', 3); + + BigNumber.config({ROUNDING_MODE : 4}); + + function TtoFraction(expected, value, maxDenominator){ + assert(expected, new BigNumber(value).toFraction(maxDenominator).toString()); + } + + TtoFraction('5,1', '5.1582612935891', '3'); + TtoFraction('14645,1797', '8.14969395596340', '4682'); + TtoFraction('350921,81990', '4.28004634702', '82418'); + TtoFraction('923754598113149102531799372705758450549,100000000', '9237545981131491025317993727057.58450549'); + TtoFraction('23665467152910525354658972818814752082,49447', '478602688796297558085606261629921.9787246948249979233505266225354557384', '57466'); + TtoFraction('12401124714135748113774134798397,2', '6200562357067874056887067399198.66971421701', '2'); + TtoFraction('5747456325233732815460960864983211610837351385715799969377,100000000000000000000000000000', '57474563252337328154609608649.83211610837351385715799969377'); + TtoFraction('4744,61', '77.7705294446793765233206385561288346447', '86'); + TtoFraction('230406626515463254737498487452583023685806305331639,100000000000000000000000000', '2304066265154632547374984.87452583023685806305331639'); + TtoFraction('8452816572418429518944119647,5000', '1690563314483685903788823.9294'); + TtoFraction('48239499471878294436129777581,10000000000000000', '4823949947187.82944361297775810'); + TtoFraction('45172634468362586403517152343110493066053,74300', '607976237797612199239800166125309462.530995962577562', '89241'); + TtoFraction('245629009658126699398365025147112883705717,1250000000000000000000000000000', '196503207726.5013595186920201176903069645736'); + TtoFraction('19575206081236584421562241755643406299,500000000000000000000000000000000000', '39.150412162473168843124483511286812598'); + TtoFraction('124335953351113119989680198250484096210027176457861877,20000000000000000000000', '6216797667555655999484009912524.20481050135882289309385'); + TtoFraction('62359286968916651021817694022163661098254437249041482587,100000000000000000000000000', '623592869689166510218176940221.63661098254437249041482587'); + TtoFraction('1406253392003122107350210973,50', '28125067840062442147004219.46', '90'); + TtoFraction('736337826,1', '736337826.0', '1'); + TtoFraction('2294354321,3019', '759971.62007285863174441704674479534091075', '5946'); + TtoFraction('342555042697121035185957633789368546657896318423873,50000000000000000000000000', '6851100853942420703719152.67578737093315792636847746'); + TtoFraction('3511582655801640591,52', '67530435688493088.2885316751682999639624370547426320', '73'); + TtoFraction('697806103903081,1', '697806103903081.3297023089715266281593302923590', '1'); + TtoFraction('504239849856718524776121635107896338763895,26083', '19332126283660565302155489595057943440.70448184108567544983900489517214731', '26482'); + TtoFraction('3513961,10', '351396.0988885676988110229927700324193', '11'); + TtoFraction('1514998954038665195379885,15263', '99259578984384799540.056673', '55079'); + TtoFraction('1190687310674838338273481559,50000', '23813746213496766765469.63118'); + TtoFraction('31747884008318370382077439489,40', '793697100207959259551935987.225181146039', '45'); + TtoFraction('39451289109544785156061546711681,59993', '657598204949657212609163514.271348320970259397527780637349273932', '61325'); + TtoFraction('3859539118592118171061,65', '59377524901417202631.7076617756627530296590420377861', '248'); + TtoFraction('2529860848590369124121129138,36761', '68819152052184900414056.449443703377131320899467509', '59208'); + TtoFraction('17331073,2', '8665536.3781112033855216846406980971689', '2'); + TtoFraction('11088761069693879,25000', '443550442787.75516'); + TtoFraction('37298162459148947522489,474', '78688106453900733169.80801275320205353359142143262532', '517'); + TtoFraction('12411782390212011049587005051032466579057,100000000000000000000000000000000000000', '124.11782390212011049587005051032466579057'); + TtoFraction('288377889236302421024476469650301879883847,50000000000000000000000', '5767557784726048420.48952939300603759767694'); + TtoFraction('64269805556832147,1', '64269805556832146.8921574533060466484388410550211', '2'); + TtoFraction('1019428223041680221,2', '509714111520840110.44623631764611004359625363775303233110', '2'); + TtoFraction('15446409508173177876456900755482517,250000', '61785638032692711505827603021.9300680'); + TtoFraction('794012664285496747924956753856029102507539,10000000', '79401266428549674792495675385602910.2507539'); + TtoFraction('1254937597799095507639361,5', '250987519559819101527872.2'); + TtoFraction('6200289913593672418541428454415821,29', '213803100468747324777290636359166.2447131068603257501', '29'); + TtoFraction('28363420172665408049802993720278,1', '28363420172665408049802993720278.0', '53164'); + TtoFraction('614972069955669535218947919309413188717428438,76097', '8081423314397013485668921499000133891183.99461213951158548435230604703', '85075'); + TtoFraction('456397843623966327008858405616124567381,62500000000000000000', '7302365497983461232.141734489857993078096'); + TtoFraction('18578778016377890885386246496020651,1000000000000000000000000', '18578778016.377890885386246496020651'); + + function TtoPrecision(expected, value, precision){ + assert(String(expected), new BigNumber(value).toPrecision(precision)); + } + + BigNumber.config({EXPONENTIAL_AT : [-7, 40]}); + + TtoPrecision('1e+27', '1.2345e+27', 1); + TtoPrecision('1.2e+27', '1.2345e+27', 2); + TtoPrecision('1.23e+27', '1.2345e+27', 3); + TtoPrecision('1.235e+27', '1.2345e+27', 4); + TtoPrecision('1.2345e+27', '1.2345e+27', 5); + TtoPrecision('1.23450e+27', '1.2345e+27', 6); + TtoPrecision('1.234500e+27', '1.2345e+27', 7); + + TtoPrecision('-1e+27', '-1.2345e+27', 1); + TtoPrecision('-1.2e+27', '-1.2345e+27', 2); + TtoPrecision('-1.23e+27', '-1.2345e+27', 3); + TtoPrecision('-1.235e+27', '-1.2345e+27', 4); + TtoPrecision('-1.2345e+27', '-1.2345e+27', 5); + TtoPrecision('-1.23450e+27', '-1.2345e+27', 6); + TtoPrecision('-1.234500e+27', '-1.2345e+27', 7); + + BigNumber.config({ROUNDING_MODE : 0}); + + TtoPrecision('-0.000090000000', '-0.00009', 8); + TtoPrecision('-7e-7', '-0.0000007', 1); + TtoPrecision('68.9316834061848', '68.931683406184761912218250317', 15); + TtoPrecision('7.8601018089704732e+27', '7860101808970473167417935916.60087069', 17); + TtoPrecision('3.21445885399803244067719798337437062000000e-11', '0.0000000000321445885399803244067719798337437062', 42); + TtoPrecision('-8171786349835057630612358814.162756978', '-8171786349835057630612358814.162756977984', 37); + TtoPrecision('3340.9039701', '3340.903970019817086594869184429527413533291595472085', 11); + TtoPrecision('-7269097658095414435895.9161181115739745427300313060', '-7269097658095414435895.916118111573974542730031306', 50); + TtoPrecision('0.00000632207', '0.00000632206077863', 6); + TtoPrecision('6e+2', '573', 1); + TtoPrecision('7.4e-7', '0.000000738', 2); + TtoPrecision('-5.031561e-7', '-0.0000005031560306227217140253964236911907612837', 7); + TtoPrecision('-4.291e+11', '-429050053964', 4); + TtoPrecision('8.514e+7', '85131637', 4); + TtoPrecision('-3.4e-9', '-0.000000003326783057540398442677461', 2); + TtoPrecision('6.9404295962722512e-20', '0.00000000000000000006940429596272251146200868514973032594273', 17); + TtoPrecision('-828376248340605120247.15155295014', '-828376248340605120247.15155295013990774586360178257303370779', 32); + + + BigNumber.config({ROUNDING_MODE : 1}); + + TtoPrecision('-844789036.5239726', '-844789036.52397268892', 16); + TtoPrecision('-5056.20629012767878749185273209679064306054', '-5056.206290127678787491852732096790643060542', 42); + TtoPrecision('-0.3287519131314873763501859870298952500', '-0.32875191313148737635018598702989525', 37); + TtoPrecision('-60729764', '-60729764', 8); + TtoPrecision('-7.622e-14', '-0.00000000000007622481594531380999826456196664586', 4); + TtoPrecision('-4686402261639729535.736324492474', '-4686402261639729535.7363244924747488', 31); + TtoPrecision('-2.0', '-2', 2); + TtoPrecision('-13801188035233586637950193108.13592574381473451125649500', '-13801188035233586637950193108.135925743814734511256495', 55); + TtoPrecision('0.0000807327587149839799300000', '0.00008073275871498397993', 24); + TtoPrecision('-6.000000e-8', '-0.00000006', 7); + TtoPrecision('-3.83574993e+11', '-383574993535', 9); + TtoPrecision('7.6987000000000000e-14', '0.000000000000076987', 17); + TtoPrecision('80928866804.6112050947427973', '80928866804.6112050947427973864826014844575374353', 27); + TtoPrecision('-0.00730140', '-0.0073014067221009206110062377503733', 6); + + BigNumber.config({ROUNDING_MODE : 2}); + + TtoPrecision('-0.0300', '-0.0300921721159558', 3); + TtoPrecision('65317841202.20949859371772273480125', '65317841202.2094985937177227348012464402154', 34); + TtoPrecision('-8.9231575495202e+29', '-892315754952021994731329589682.1894180393920044085713', 14); + TtoPrecision('-2.8075679202e-8', '-0.0000000280756792028583066', 11); + TtoPrecision('9.71456e+9', '9714558552', 6); + TtoPrecision('2.9514099281e-10', '0.00000000029514099281', 11); + TtoPrecision('-1.24459e+14', '-124459985101107', 6); + TtoPrecision('0.0000734657394154607815562372000000', '0.0000734657394154607815562372', 30); + TtoPrecision('1.78719530353972e+15', '1787195303539715', 15); + TtoPrecision('-2.8e+9', '-2861102528', 2); + TtoPrecision('-8.74480375581000e-9', '-0.00000000874480375581', 15); + TtoPrecision('-1792404726015427380.248150830448457643618022', '-1792404726015427380.248150830448457643618022', 43); + TtoPrecision('-678437320202616518.2220157912209286', '-678437320202616518.22201579122092864', 34); + + BigNumber.config({ROUNDING_MODE : 3}); + + TtoPrecision('-39449414270333.925852213835', '-39449414270333.925852213834759031494508489474', 26); + TtoPrecision('-7.50437989976', '-7.50437989975503711836768', 12); + TtoPrecision('-0.000004303975760000000', '-0.00000430397576', 16); + TtoPrecision('-16040233916257241895.97650633973989', '-16040233916257241895.9765063397398857', 34); + TtoPrecision('-7438.9287248601393819', '-7438.9287248601393818639176907606', 20); + TtoPrecision('9.857465584298e-7', '0.000000985746558429876825600458537705318327799', 13); + TtoPrecision('532637.9095983547284850466577958315920', '532637.90959835472848504665779583159203905641996', 37); + TtoPrecision('-1.40416695292e+30', '-1404166952915258058306475434520.7856110230505157', 12); + TtoPrecision('60346876.6670832429026869255506808488', '60346876.6670832429026869255506808488', 36); + TtoPrecision('-2.52466133e+23', '-252466132238128405832984', 9); + TtoPrecision('55', '55', 2); + TtoPrecision('8', '8', 1); + + BigNumber.config({ROUNDING_MODE : 4}); + + TtoPrecision('7.905300379788e+16', '79053003797878062.6454954', 13); + TtoPrecision('-6.83490000000e-13', '-0.00000000000068349', 12); + TtoPrecision('-62760641815.69084973661201201', '-62760641815.690849736612012010742308663', 28); + TtoPrecision('0.000704', '0.000704496313', 3); + TtoPrecision('82926865286287.8852357368342860830310721063079299643', '82926865286287.88523573683428608303107210630792996432', 51); + TtoPrecision('-0.00032388272393900301214220090249', '-0.00032388272393900301214220090248744799603424908', 29); + TtoPrecision('8.6e+12', '8621641486938.4837308885005093571508566552428700982454', 2); + TtoPrecision('2', '2', 1); + TtoPrecision('1.4641440117052559075e+20', '146414401170525590746.047955203899370771105088', 20); + TtoPrecision('3511.925583', '3511.925583', 10); + TtoPrecision('2861824.253079699095728', '2861824.253079699095727765750377038689', 22); + TtoPrecision('-3.940097756e+10', '-39400977564.548924098664431671700066962', 10); + TtoPrecision('-888', '-888', 3); + TtoPrecision('-0.000302106125213724988141721256104', '-0.00030210612521372498814172125610432438685', 30); + TtoPrecision('6943.4804552555315615809650428503', '6943.480455255531561580965042850266831249032130818358478956', 32); + + BigNumber.config({ROUNDING_MODE : 5}); + + TtoPrecision('-1408003897645960.648499616456', '-1408003897645960.648499616456', 28); + TtoPrecision('-7719307749101742537.6299396338672184', '-7719307749101742537.6299396338672184334306', 35); + TtoPrecision('-1.0', '-1', 2); + TtoPrecision('-8.28e+14', '-827860423543649', 3); + TtoPrecision('0.00054398953021585321711560388890', '0.00054398953021585321711560388889590290139888', 29); + TtoPrecision('-4.409e-9', '-0.000000004408792', 4); + TtoPrecision('4.0000e-10', '0.0000000004', 5); + TtoPrecision('3.40e+16', '34001779327925905', 3); + TtoPrecision('-9.03e+34', '-90332622851356543193546536340366547', 3); + TtoPrecision('-4.5320e+16', '-45320100856429143.39155209710530673318222777', 5); + TtoPrecision('3.618e+30', '3618328715720583671291544414202', 4); + TtoPrecision('-1003.61140', '-1003.61139687804673322250551', 9); + TtoPrecision('-8139415035028632370.38737', '-8139415035028632370.38736602659835', 24); + TtoPrecision('8e+7', '83198058', 1); + + BigNumber.config({ROUNDING_MODE : 6}); + + TtoPrecision('0.08000', '0.08', 4); + TtoPrecision('-4.5132e+21', '-4513243388120382069815.8508153058993058875', 5); + TtoPrecision('-73549', '-73549.2594630551663822238', 5); + TtoPrecision('1.275868004728922895890883e+29', '127586800472892289589088296800.6', 25); + TtoPrecision('-0.0003715444034899460421534099962225699000', '-0.0003715444034899460421534099962225699', 37); + TtoPrecision('-6.9625565265e+24', '-6962556526511822306135536', 11); + TtoPrecision('1.67583703641e+13', '16758370364138.915293525076269061228714877', 12); + TtoPrecision('-173594.95064085553515176707313947534918109631092170', '-173594.950640855535151767073139475349181096310921699', 50); + TtoPrecision('-6.9503965525e+19', '-69503965525000308384.151383', 11); + TtoPrecision('4.411225e+20', '441122486054080817112', 7); + TtoPrecision('2.467044064783596937642371770e+31', '24670440647835969376423717700462.39', 28); + TtoPrecision('3.9711897549481645654e+24', '3971189754948164565361634.8039734590476326224193520402091769', 20); + TtoPrecision('-1.4757613208690e+21', '-1475761320868963235919.64499841336073105746686372924161', 14); + TtoPrecision('91683083887068.6191146', '91683083887068.61911461351134520171343337804061135', 21); + TtoPrecision('-7923074181102822.578', '-7923074181102822.5778', 19); + + n = new BigNumber(1); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(n)); + assert(true, n.equals(n, 2)); + assert(true, n.equals('1.0', 20)); + assert(true, n.equals(new BigNumber(1, 10), 26)); + assert(true, n.equals(new BigNumber(1), 27)); + assert(true, n.equals(1, 36)); + assert(true, n.greaterThan(0.99999)); + assert(false, n.greaterThanOrEqualTo(1.1)); + assert(true, n.lessThan(1.001)); + assert(true, n.lessThanOrEqualTo(2)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-0.1'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(0.1)); + assert(false, n.greaterThan(-0.1)); + assert(true, n.greaterThanOrEqualTo(-1)); + assert(true, n.lessThan(-0.01)); + assert(false, n.lessThanOrEqualTo(-1)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(Infinity); + assert(false, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.eq('Infinity')); + assert(true, n.eq(1/0)); + assert(true, n.gt('9e999')); + assert(true, n.gte(Infinity)); + assert(false, n.lt(Infinity)); + assert(true, n.lte(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('-Infinity'); + assert(false, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(false, n.equals(Infinity)); + assert(true, n.equals(-1/0)); + assert(false, n.greaterThan(-Infinity)); + assert(true, n.greaterThanOrEqualTo('-Infinity', 8)); + assert(true, n.lessThan(0)); + assert(true, n.lessThanOrEqualTo(Infinity)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('0.0000000'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(true, n.isZero()); + assert(true, n.eq(-0)); + assert(true, n.gt(-0.000001)); + assert(false, n.gte(0.1)); + assert(true, n.lt(0.0001)); + assert(true, n.lte(-0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber(-0); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(true, n.isZ()); + assert(true, n.equals('0.000')); + assert(true, n.greaterThan(-1)); + assert(false, n.greaterThanOrEqualTo(0.1)); + assert(false, n.lessThan(0)); + assert(false, n.lessThan(0, 36)); + assert(true, n.lessThan(0.1)); + assert(true, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('NaN'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.eq(NaN)); + assert(false, n.eq(Infinity)); + assert(false, n.gt(0)); + assert(false, n.gte(0)); + assert(false, n.lt(1)); + assert(false, n.lte(-0)); + assert(false, n.lte(-1)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : false }); + + n = new BigNumber('hiya'); + assert(false, n.isFinite()); + assert(true, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(false, n.equals(0)); + assert(false, n.greaterThan(0)); + assert(false, n.greaterThanOrEqualTo(-Infinity)); + assert(false, n.lessThan(Infinity)); + assert(false, n.lessThanOrEqualTo(0)); + assert(n.toString(), n.valueOf()); + + BigNumber.config({ ERRORS : true }); + + n = new BigNumber('-1.234e+2'); + assert(true, n.isF()); + assert(false, n.isNaN()); + assert(true, n.isNeg()); + assert(false, n.isZ()); + assert(true, n.eq(-123.4, 10)); + assert(true, n.gt('-ff', 16)); + assert(true, n.gte('-1.234e+3')); + assert(true, n.lt(-123.39999)); + assert(true, n.lte('-123.4e+0')); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('5e-200'); + assert(true, n.isFinite()); + assert(false, n.isNaN()); + assert(false, n.isNegative()); + assert(false, n.isZero()); + assert(true, n.equals(5e-200)); + assert(true, n.greaterThan(5e-201)); + assert(false, n.greaterThanOrEqualTo(1)); + assert(true, n.lessThan(6e-200)); + assert(true, n.lessThanOrEqualTo(5.1e-200)); + assert(n.toString(), n.valueOf()); + + n = new BigNumber('1'); + assert(true, n.equals(n)); + assert(true, n.equals(n.toS())); + assert(true, n.equals(n.toString())); + assert(true, n.equals(n.valueOf())); + assert(true, n.equals(n.toFixed())); + assert(true, n.equals(1)); + assert(true, n.equals('1e+0')); + assert(false, n.equals(-1)); + assert(false, n.equals(0.1)); + + BigNumber.config({ ERRORS : false }); + + assert(false, new BigNumber(NaN).equals(0)); + assert(false, new BigNumber(null).equals(0)); + assert(false, new BigNumber(undefined).equals(0)); + assert(false, new BigNumber(Infinity).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber([]).equals(0)); + assert(false, new BigNumber({}).equals(0)); + assert(false, new BigNumber('').equals(0)); + assert(false, new BigNumber(' ').equals(0)); + assert(false, new BigNumber('\t').equals(0)); + assert(false, new BigNumber('gerg').equals(0)); + assert(false, new BigNumber(new Date).equals(0)); + assert(false, new BigNumber(new RegExp).equals(0)); + assert(false, new BigNumber(0.1).equals(0)); + assert(false, new BigNumber(1e9 + 1).equals(1e9)); + assert(false, new BigNumber(1e9 - 1).equals(1e9)); + assert(true, new BigNumber(1e9 + 1).equals(1e9 + 1)); + assert(true, new BigNumber(1).equals(1)); + assert(false, new BigNumber(1).equals(-1)); + assert(false, new BigNumber(NaN).equals('efffe')); + + assert(false, new BigNumber('b').greaterThan('a')); + assert(false, new BigNumber('a').lessThan('b', 10)); + assert(true, new BigNumber('a', 16).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('b', 16).greaterThanOrEqualTo(9, 16)); + + BigNumber.config({ ERRORS : true }); + + assert(true, new BigNumber(10).greaterThan(10, 2)); + assert(true, new BigNumber(10).lessThan(10, 36)); + assert(false, new BigNumber(NaN).lessThan(NaN)); + assert(false, new BigNumber(Infinity).lessThan(-Infinity)); + assert(false, new BigNumber(Infinity).lessThan(Infinity)); + assert(true, new BigNumber(Infinity, 10).lessThanOrEqualTo(Infinity, 2)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(NaN)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(Infinity)); + assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(-Infinity)); + assert(false, new BigNumber(NaN).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(-Infinity).greaterThanOrEqualTo(-Infinity)); + + assert(false, new BigNumber(2, 10).greaterThan(10, 2)); + assert(false, new BigNumber(10, 2).lessThan(2, 10)); + assert(true, new BigNumber(255).lessThanOrEqualTo('ff', 16)); + assert(true, new BigNumber('a', 16).greaterThanOrEqualTo(9, 16)); + assert(false, new BigNumber(0).lessThanOrEqualTo('NaN')); + assert(false, new BigNumber(0).greaterThanOrEqualTo(NaN)); + assert(false, new BigNumber(NaN, 2).lessThanOrEqualTo('NaN', 36)); + assert(false, new BigNumber(NaN, 36).greaterThanOrEqualTo(NaN, 2)); + assert(false, new BigNumber(0).lessThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).greaterThanOrEqualTo(-Infinity)); + assert(true, new BigNumber(0).lessThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(0).greaterThanOrEqualTo('Infinity', 36)); + assert(false, new BigNumber(10).lessThanOrEqualTo(20, 4)); + assert(true, new BigNumber(10).lessThanOrEqualTo(20, 5)); + assert(false, new BigNumber(10).greaterThanOrEqualTo(20, 6)); + + assert(false, new BigNumber(1.23001e-2).lessThan(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lt(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThan(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lt(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThan(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lt(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThan(1e+3)); + assert(false, new BigNumber(1e+3).lt(9.9999999e+2)); + + assert(false, new BigNumber(1.23001e-2).lessThanOrEqualTo(1.23e-2)); + assert(true, new BigNumber(1.23e-2).lte(1.23001e-2)); + assert(false, new BigNumber(1e-2).lessThanOrEqualTo(9.999999e-3)); + assert(true, new BigNumber(9.999999e-3).lte(1e-2)); + + assert(false, new BigNumber(1.23001e+2).lessThanOrEqualTo(1.23e+2)); + assert(true, new BigNumber(1.23e+2).lte(1.23001e+2)); + assert(true, new BigNumber(9.999999e+2).lessThanOrEqualTo(1e+3)); + assert(false, new BigNumber(1e+3).lte(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThan(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gt(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThan(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gt(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThan(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gt(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThan(1e+3)); + assert(true, new BigNumber(1e+3).gt(9.9999999e+2)); + + assert(true, new BigNumber(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); + assert(false, new BigNumber(1.23e-2).gte(1.23001e-2)); + assert(true, new BigNumber(1e-2).greaterThanOrEqualTo(9.999999e-3)); + assert(false, new BigNumber(9.999999e-3).gte(1e-2)); + + assert(true, new BigNumber(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); + assert(false, new BigNumber(1.23e+2).gte(1.23001e+2)); + assert(false, new BigNumber(9.999999e+2).greaterThanOrEqualTo(1e+3)); + assert(true, new BigNumber(1e+3).gte(9.9999999e+2)); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js new file mode 100644 index 0000000..6738f0d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js @@ -0,0 +1,2380 @@ +var count = (function round(BigNumber) { + var start = +new Date(), + log, + error, + u, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, decimalPlaces, roundingMode) { + assert(String(expected), new BigNumber(String(value)).round(decimalPlaces, roundingMode).toString()); + } + + log('\n Testing round...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 7, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + + T('0', '0.000084888060736883027314038572334303632'); + + T('-79998', '-79998'); + T('30845717889906383053', '30845717889906383052.56472015469740823'); + T('-446807', '-446806.9227761147047517'); + T('76', '76.0719'); + T('0', '-0.00686876124450101884528'); + T('71710176', '71710176'); + T('79', '79'); + T('-20187079148819697784', '-20187079148819697784'); + T('6309793381', '6309793381'); + T('76162410487880977', '76162410487880976.81307140573688335764284'); + T('7491318926', '7491318926.312122759153805942088431'); + T('74909422733607112719', '74909422733607112719.13179009875'); + T('559', '559.2110851431205'); + T('-20306363016185', '-20306363016184.760368254019194925'); + T('-6717914940586242526', '-6717914940586242525.574537480672174624149'); + T('-5', '-5'); + T('8', '8.0606265529'); + T('24701408591129838', '24701408591129838.22163'); + T('3806471925924246437202', '3806471925924246437201.71339576511057957'); + T('-85883753924431578007564277', '-85883753924431578007564277.399776'); + T('826068555927524695', '826068555927524695'); + T('0', '0.000058441452091833136219167587256'); + T('47353089', '47353089.2019161006899898'); + T('-372', '-372.03039745'); + T('3103', '3103'); + T('5620', '5620.48101861977'); + T('9105547112', '9105547112.1319443692'); + T('7472595749413646784408602', '7472595749413646784408602.1095168949'); + T('335816732795', '335816732794.51601276961965281205689254'); + T('-7911332887831436027', '-7911332887831436027.40569259650318'); + T('-52182567851715', '-52182567851715'); + T('439059239410', '439059239409.55703238112278'); + T('43465109466157505', '43465109466157505'); + T('5390894521', '5390894520.8738091063016'); + T('-583532700278695860335147', '-583532700278695860335146.6674153779'); + T('485669', '485669'); + T('3', '3.284095344472285718254591781467536534546'); + T('0', '-0.4210910538061556801483189'); + T('3134', '3133.654494231705614'); + T('8136642604255255554627376', '8136642604255255554627375.87998'); + T('-54301', '-54301.2807534165371279131810401278'); + T('27796900', '27796900.0685101'); + T('-36', '-36'); + T('-7930085746684', '-7930085746684.2599205'); + T('736988809325', '736988809325'); + T('-181606874378737533', '-181606874378737532.738571718716743'); + T('577064478018279', '577064478018279'); + T('-862419646909', '-862419646909'); + T('3269018763090', '3269018763089.5711045989917554'); + + // ---------------------------------------------------------------- v8 start + + T(0, 0); + T(0, -0); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + T(NaN, NaN); + + T(1, 0.5); + T(1, 0.7); + T(1, 1); + T(1, 1.1); + T(1, 1.49999); + T(0, -0.5); // + T(-1, -0.5000000000000001); + T(-1, -0.7); + T(-1, -1); + T(-1, -1.1); + T(-1, -1.49999); + T(-1, -1.5); // + + T(9007199254740990, 9007199254740990); + T(9007199254740991, 9007199254740991); + T(-9007199254740990, -9007199254740990); + T(-9007199254740991, -9007199254740991); + + BigNumber.config({EXPONENTIAL_AT : 100}); + + T(Number.MAX_VALUE, Number.MAX_VALUE); + T(-Number.MAX_VALUE, -Number.MAX_VALUE); + + T(536870911, 536870910.5); + T(536870911, 536870911); + T(536870911, 536870911.4); + T(536870912, 536870911.5); + T(536870912, 536870912); + T(536870912, 536870912.4); + T(536870913, 536870912.5); + T(536870913, 536870913); + T(536870913, 536870913.4); + T(1073741823, 1073741822.5); + T(1073741823, 1073741823); + T(1073741823, 1073741823.4); + T(1073741824, 1073741823.5); + T(1073741824, 1073741824); + T(1073741824, 1073741824.4); + T(1073741825, 1073741824.5); + T(2147483647, 2147483646.5); + T(2147483647, 2147483647); + T(2147483647, 2147483647.4); + T(2147483648, 2147483647.5); + T(2147483648, 2147483648); + T(2147483648, 2147483648.4); + T(2147483649, 2147483648.5); + + T(0, 0.4); + T(-0, -0.4); + T(-0, -0.5); // + T(1, 0.6); + T(-1, -0.6); + T(2, 1.5); + T(2, 1.6); + T(-2, -1.6); + T(8640000000000000, 8640000000000000); + T(8640000000000001, 8640000000000001); + T(8640000000000002, 8640000000000002); + T(9007199254740990, 9007199254740990); + T(9007199254740991, 9007199254740991); + T(1.7976931348623157e+308, 1.7976931348623157e+308); + T(-8640000000000000, -8640000000000000); + T(-8640000000000001, -8640000000000001); + T(-8640000000000002, -8640000000000002); + T(-9007199254740990, -9007199254740990); + T(-9007199254740991, -9007199254740991); + T(-1.7976931348623157e+308, -1.7976931348623157e+308); + T(Infinity, Infinity); + T(-Infinity, -Infinity); + + var ulp = Math.pow(2, -1022 - 52); + var max_denormal = (Math.pow(2, 52) - 1) * ulp; + var min_normal = Math.pow(2, -1022); + var max_fraction = Math.pow(2, 52) - 0.5; + var min_nonfraction = Math.pow(2, 52); + var max_non_infinite = Number.MAX_VALUE; + + var max_smi31 = Math.pow(2,30) - 1; + var min_smi31 = -Math.pow(2,30); + var max_smi32 = Math.pow(2,31) - 1; + var min_smi32 = -Math.pow(2,31); + + T(0, ulp); + T(0, max_denormal); + T(0, min_normal); + T(0, 0.49999999999999994); + T(1, 0.5); + T(Math.pow(2,52), max_fraction); + T(min_nonfraction, min_nonfraction); + T(max_non_infinite, max_non_infinite); + + T(max_smi31, max_smi31 - 0.5); + T(max_smi31 + 1, max_smi31 + 0.5); + T(max_smi32, max_smi32 - 0.5); + T(max_smi32 + 1, max_smi32 + 0.5); + + T(-0, -ulp); + T(-0, -max_denormal); + T(-0, -min_normal); + T(-0, -0.49999999999999994); + T(-Math.pow(2,52)+1, -max_fraction); // + T(-min_nonfraction, -min_nonfraction); + T(-max_non_infinite, -max_non_infinite); + + T(min_smi31, min_smi31 - 0.5); // + T(min_smi31 + 1, min_smi31 + 0.5); // + T(min_smi32, min_smi32 - 0.5); // + T(min_smi32 + 1, min_smi32 + 0.5); // + + // ------------------------------------------------------------------ v8 end + + BigNumber.config({EXPONENTIAL_AT : 1E9}); + + T('0', '0', 0); + T('0', '-0', 1); + T('0', '-0', 1, 0); + T('0', '-0', 1, 3); + T('0', '-0', 1, 6); + T('0', '0', 10); + T('0', '-0', 20); + + // Tests generated using java BigDecimal and random values. + T('0.0039', '0.0039', 4, 3); + T('-41620.65299', '-41620.65299', 6, 5); + T('0.0011117', '0.0011117', 7, 0); + T('938116', '938116', 6, 5); + T('-7187', '-7187', 4, 4); + T('-2.4263', '-2.426346', 4, 6); + T('-0.537', '-0.5374743', 3, 5); + T('652506', '652506', 3, 6); + T('-178587', '-178587', 3, 2); + T('4093', '4093', 3, 0); + T('44', '44', 1, 2); + T('-0.0496', '-0.049635', 4, 4); + T('-1', '-0.05', 0, 0); + T('520216039', '520216039', 7, 1); + T('-2932289', '-2932289', 8, 3); + T('53937.3', '53937.399', 1, 1); + T('63101619', '63101619', 5, 0); + T('-0.00207', '-0.00207', 6, 0); + T('-0.032', '-0.03169086', 3, 0); + T('-755', '-755', 5, 3); + T('-3583', '-3583', 5, 1); + T('-6.616', '-6.615375', 3, 0); + T('7528739', '7528739', 8, 0); + T('-0.9028', '-0.9028782', 4, 2); + T('-8.78762908', '-8.78762908', 8, 2); + T('-0.000262', '-0.0002613', 6, 0); + T('-888980.3', '-888980.3', 1, 6); + T('0.00009075', '0.00009075', 8, 0); + T('-4.42', '-4.4195', 2, 0); + T('-0.336889', '-0.336888682', 6, 6); + T('43759', '43759', 6, 4); + T('0.0000804', '0.0000804', 8, 6); + T('-4', '-4', 0, 2); + T('-3', '-3.614204', 0, 2); + T('336379823', '336379823', 4, 1); + T('310614', '310614', 7, 0); + T('-375811635', '-375811635', 8, 3); + T('-5446775', '-5446775', 7, 4); + T('59.7954405', '59.7954405', 7, 0); + T('47086', '47085.84', 0, 4); + T('-2564', '-2564', 3, 4); + T('1.4069997', '1.40699967', 7, 2); + T('-0.4', '-0.42528874', 1, 6); + T('-0.00005573', '-0.000055732', 8, 1); + T('-0.00003014', '-0.000030137', 8, 6); + T('57', '57', 3, 6); + T('365474.9164', '365474.9164', 4, 5); + T('-7', '-7', 0, 4); + T('0.843206', '0.84320562', 6, 5); + T('-62734', '-62734', 5, 3); + T('-51246', '-51246', 7, 2); + T('0.0003', '0.000332', 4, 5); + T('-609', '-609', 2, 0); + T('-0.00004595', '-0.00004595', 8, 1); + T('-22243', '-22243', 0, 1); + T('54693', '54693', 5, 0); + T('5', '5', 1, 6); + T('2', '2', 2, 6); + T('3808', '3808', 0, 4); + T('2616', '2616', 0, 5); + T('-2477', '-2477', 3, 2); + T('0.00009', '0.00008892', 5, 4); + T('8.8953', '8.8953', 5, 5); + T('0.07', '0.06922', 2, 4); + T('0.08', '0.08', 3, 2); + T('-773.0965536', '-773.0965536', 8, 2); + T('-326', '-326', 2, 1); + T('-0.356', '-0.3564473', 3, 6); + T('-312283993', '-312283992.7', 0, 3); + T('-2.3995861', '-2.39958606', 7, 3); + T('-0.0449', '-0.0449', 4, 3); + T('0', '-0.003', 0, 4); + T('85942', '85942', 2, 5); + T('6738', '6738.1977', 0, 3); + T('-0.003', '-0.002995', 5, 3); + T('-572936', '-572936', 3, 6); + T('684.2426407', '684.2426407', 8, 6); + T('0', '-0.0007851', 1, 6); + T('0', '-0.002', 0, 5); + T('85.05', '85.05', 3, 3); + T('1.66', '1.66', 3, 3); + T('-17.14', '-17.14', 2, 0); + T('80182', '80182', 6, 5); + T('-0.00064', '-0.00063953', 6, 6); + T('-3.76703298', '-3.767032983', 8, 4); + T('-0.000378', '-0.00037877', 6, 2); + T('675', '675.76294', 0, 3); + T('0.0003', '0.00023235', 4, 0); + T('-0.0155175', '-0.0155175', 7, 0); + T('-645406477.5', '-645406477.5', 2, 1); + T('-0.89603', '-0.8960278', 5, 6); + T('866034', '866034', 7, 3); + T('484.002', '484.002', 4, 6); + T('420', '419.83', 0, 6); + T('4611867124', '4611867124', 4, 4); + T('0.0080252', '0.0080252', 8, 0); + T('0', '-0.02829833', 1, 4); + T('-8', '-8', 0, 4); + T('-0.0073554', '-0.00735541', 7, 4); + T('28', '28', 3, 5); + T('-3903', '-3903', 6, 0); + T('228', '228', 3, 4); + T('0.88', '0.883', 2, 5); + T('-0.01', '-0.009', 2, 3); + T('7796.6', '7796.6', 2, 2); + T('0', '0.005', 0, 6); + T('805.25', '805.2467', 2, 0); + T('-85023', '-85023', 4, 3); + T('0', '-0.008097491', 0, 2); + T('-0.026', '-0.0259', 3, 4); + T('-0.00801', '-0.008007359', 5, 4); + T('30745', '30745', 6, 5); + T('-81', '-81', 4, 6); + T('-386', '-386', 4, 2); + T('-2876', '-2876', 5, 6); + T('0', '0.00002329', 4, 5); + T('-62453828', '-62453828', 7, 6); + T('0.317', '0.317', 3, 3); + T('-706', '-706', 0, 1); + T('36.911', '36.9109527', 4, 4); + T('5040908', '5040908', 1, 0); + T('-0.08', '-0.08', 2, 4); + T('-0.352847', '-0.352847085', 6, 6); + T('0.001', '0.00006', 3, 2); + T('-0.4389', '-0.438905', 4, 1); + T('0.00390964', '0.00390964', 8, 2); + T('-35105.1', '-35105.1788', 1, 2); + T('-8858843.829', '-8858843.829', 3, 1); + T('-5946.90816', '-5946.90816', 5, 3); + T('608475', '608475', 6, 6); + T('3.5873016', '3.58730156', 7, 5); + T('-7988864', '-7988864', 8, 0); + T('-6056.29', '-6056.29', 3, 0); + T('-4481788', '-4481788', 3, 5); + T('-1.6', '-1.5678', 1, 6); + T('-351561391', '-351561391', 5, 5); + T('3104642', '3104642', 8, 2); + T('-7.30071897', '-7.30071897', 8, 2); + T('-0.0256033', '-0.02560321', 7, 3); + T('-0.5', '-0.5', 1, 0); + T('-7.173', '-7.173', 4, 6); + T('0.1', '0.05', 1, 2); + T('0.0006736', '0.0006736', 7, 3); + T('-54.37621076', '-54.37621076', 8, 4); + T('4823.725785', '4823.725785', 7, 4); + T('0', '-0.000084', 1, 4); + T('-7491', '-7491', 4, 6); + T('-226', '-226.80088', 0, 2); + T('-0.8', '-0.8109', 1, 6); + T('-0.0548897', '-0.054889654', 7, 0); + T('-91.1579356', '-91.15793558', 7, 6); + T('47988267', '47988267', 1, 3); + T('91', '91', 3, 5); + T('-5.0091', '-5.009088', 4, 0); + T('-1382.949', '-1382.949', 4, 0); + T('-697', '-697', 2, 5); + T('-5376196', '-5376196', 1, 6); + T('-0.6', '-0.6', 1, 6); + T('-887591', '-887591', 8, 2); + T('0.02000666', '0.020006669', 8, 3); + T('-39983.5195', '-39983.5195', 5, 6); + T('-0.723', '-0.722771', 3, 4); + T('-0.0007', '-0.0007', 5, 5); + T('-8637388', '-8637388', 4, 1); + T('-775918', '-775918', 8, 0); + T('3281682.74', '3281682.74', 2, 3); + T('193', '193', 4, 6); + T('0', '-0.369577856', 0, 5); + T('-0.34504', '-0.34504336', 5, 2); + T('-22', '-22', 0, 5); + T('-548324', '-548324', 4, 2); + T('-28', '-28', 3, 5); + T('-6.70773', '-6.707727', 5, 0); + T('11.062', '11.06169236', 3, 5); + T('0.00052', '0.00051869', 5, 6); + T('-0.0421539', '-0.0421539', 7, 3); + T('-0.248552', '-0.248552', 6, 4); + T('-864296', '-864296', 8, 0); + T('0.8599583', '0.8599583', 7, 6); + T('-49755.36744', '-49755.36744', 5, 5); + T('-605.095664', '-605.095664', 6, 3); + T('-103637', '-103637', 5, 2); + T('868619', '868619', 3, 4); + T('-0.0003926', '-0.0003926', 7, 4); + T('1', '0.9', 0, 0); + T('4.3567', '4.35670557', 4, 4); + T('-238', '-238', 3, 1); + T('1271.594054', '1271.594054', 7, 4); + T('-4.1787893', '-4.178789328', 7, 1); + T('372', '372', 3, 6); + T('-9.1645', '-9.1645354', 4, 6); + T('83.241462', '83.241462', 6, 6); + T('-0.00001262', '-0.00001262', 8, 6); + T('63.4147', '63.414735', 4, 3); + T('-2', '-2', 3, 5); + T('538601216', '538601216', 2, 3); + T('2138522', '2138522', 6, 1); + T('301527.309', '301527.309', 3, 5); + T('-7.568', '-7.5683', 3, 5); + T('-1969563', '-1969563', 8, 1); + + T('-249815496353142605063083339706423770452529255711064841247978.1649', '-249815496353142605063083339706423770452529255711064841247978.16482575714251625720191747855256', 4, 3); + T('-8757939868931375459275247990933877309', '-8757939868931375459275247990933877309', 37, 5); + T('556228688742576287254121716253667920283844645854057755303259369', '556228688742576287254121716253667920283844645854057755303259369', 25, 3); + T('0', '0.00000000000000000000000000000000000000000000000029171651270270187897342247995644546232788426', 35, 3); + T('-0.0000058979376152458865088785307705', '-0.000005897937615245886508878530770431196412050562641578155968', 34, 0); + T('-0.00000000000000847145658', '-0.00000000000000847145657888758222743159237', 23, 3); + T('-6049825281564367887763596943301191584240212075976455', '-6049825281564367887763596943301191584240212075976455', 53, 0); + T('-64680661822322715719008107701612.741312367131318202976964422', '-64680661822322715719008107701612.74131236713131820297696442216284615573809', 27, 4); + T('0', '-0.0000000000000000000000000000000000048810387700772580768508931440796984745771392', 29, 2); + T('232730083859746141163.7653402888578932348762190816502', '232730083859746141163.76534028885789323487621908165018267559238917447610653431235463768839108', 31, 5); + T('-499311204526771278437755030091270601.471802335', '-499311204526771278437755030091270601.47180233568698638607829334564', 9, 2); + T('-4793558721695298336734196955569628362250.1', '-4793558721695298336734196955569628362250.107513868618556605590137359591047843592593', 1, 6); + T('0.0000000000000000000000000000000000000622', '0.000000000000000000000000000000000000062176566496', 40, 5); + T('-393323198834362857317921391989917230.1575124832953752419421908305674188204', '-393323198834362857317921391989917230.15751248329537524194219083056741882044261538788798', 37, 5); + T('0', '-0.000000000000000169092170076859363', 3, 5); + T('0.00085774283834918184933525579624189945402764', '0.0008577428383491818493352557962418994540276420616048890965876345513', 44, 4); + T('-127706837731025454069338274697755478243.226555768723254468591', '-127706837731025454069338274697755478243.226555768723254468591', 21, 4); + T('0.0000000000000000000000000000002', '0.00000000000000000000000000000024', 31, 6); + T('0', '0.0000000000000000006', 0, 4); + T('0.000000000000000000000007810237984104', '0.00000000000000000000000781023798410401506609033130277607174', 36, 6); + T('-0.0000000000000000000000000000000000000000000003', '-0.00000000000000000000000000000000000000000000030032464295099044566372323', 46, 1); + T('-685966223751248103958158215191994961086468451812432', '-685966223751248103958158215191994961086468451812432', 15, 6); + T('-342139733926317660019.326340161146875487297', '-342139733926317660019.326340161146875487297346019153178', 21, 6); + T('0', '0.000000000000000000000000000000000000000000901836202', 15, 4); + T('54703159147681578.1514852895273075959730711237955491690133829927977209580124', '54703159147681578.1514852895273075959730711237955491690133829927977209580124', 59, 0); + T('-460718430436988680547605508933197195738591668941440213118174196', '-460718430436988680547605508933197195738591668941440213118174196', 16, 6); + T('70597943458486911871858911963104830835210711517857117431432573585719054629372', '70597943458486911871858911963104830835210711517857117431432573585719054629372', 17, 3); + T('0', '0.0000000000000000000000005', 17, 1); + T('612277653819449429818059108521923195679275819340316389136081740197236376194', '612277653819449429818059108521923195679275819340316389136081740197236376194', 24, 6); + T('0', '0.000004077002116450599035175933786605407147118579202271612670066923117668943811493201471493894', 0, 3); + T('0', '0.0000000000000000454362126792715044166595091', 4, 5); + T('-0.00000000000000000000000247815', '-0.00000000000000000000000247815', 29, 2); + T('-0.000000000000000000000000000000039578053693', '-0.000000000000000000000000000000039578053693375996216932325600263217353654', 42, 4); + T('-232816283401672701377791127757043050155711815150567236808118951', '-232816283401672701377791127757043050155711815150567236808118951', 5, 2); + T('-29071348593675752783607764808066026', '-29071348593675752783607764808066026', 0, 3); + T('0', '-0.0000000000000000000000000000001261801374206123908708248209346534624420321535319795165638569', 3, 5); + T('-400979013779505784551704647545324555644743917317817725', '-400979013779505784551704647545324555644743917317817725', 51, 0); + T('-707984518604562445981560648691697348187535181109991331112833004096934116229906958', '-707984518604562445981560648691697348187535181109991331112833004096934116229906958', 33, 3); + T('-0.00000000000000000000054943542078511748325889425', '-0.00000000000000000000054943542078511748325889425029425118', 48, 2); + T('0.000000000000000000000000000001', '0.0000000000000000000000000000000004', 30, 2); + T('8361324754302.257', '8361324754302.25608823898722021345099998761427662952277448263515002938433228636937277798222125', 3, 2); + T('47845474280015515238795364952786480611238289992139357357828.2393536', '47845474280015515238795364952786480611238289992139357357828.23935359', 7, 2); + T('2549907485257905040787802731022172814.032473410309278713663931353982863019132463', '2549907485257905040787802731022172814.03247341030927871366393135398286301913246263649610180999011', 42, 4); + T('7245563391265598645357861460253613932139592382610560614764364520097782949512752649', '7245563391265598645357861460253613932139592382610560614764364520097782949512752649', 40, 1); + T('80140230840302995211398777354070268652682793260175436489292', '80140230840302995211398777354070268652682793260175436489292', 35, 5); + T('-6237457908203764779831412120415113057397781437576879126960196359736451276', '-6237457908203764779831412120415113057397781437576879126960196359736451276', 46, 3); + T('-64022435787355811014521281511793708435812347405139910972682589', '-64022435787355811014521281511793708435812347405139910972682589', 59, 4); + T('23773726397.29160222442891928943538179152516815326677387048397317891529', '23773726397.291602224428919289435381791525168153266773870483973178915287792', 59, 2); + T('-0.0000000000000000009191736362201691567821986127083610325635', '-0.00000000000000000091917363622016915678219861270836103256344707473557037101545788367584278310776658', 58, 3); + T('576493832674677623548573635478304255.82263895978273', '576493832674677623548573635478304255.82263895978273', 14, 5); + T('0.00000000001', '0.00000000000000000000000000000000000000000000000007822968340296738406', 11, 2); + T('0', '-0.00000000000000000000000000000000000000000000000803017739', 16, 2); + T('-76782672919180281245123823777032511965124724736456274885479622075418722', '-76782672919180281245123823777032511965124724736456274885479622075418722', 48, 4); + T('4455851923984827076883518360355220330356', '4455851923984827076883518360355220330356', 36, 6); + T('6861599706553109843427643365400432566541688718985576240352998201999416183743', '6861599706553109843427643365400432566541688718985576240352998201999416183743', 2, 2); + T('0', '0.0000083135366316053183734543904737952651532784316140061929170739473518406297062533554026617147464', 0, 1); + T('72361127388902796012114362477322144735533135802605580980837229637633107.0925818254603', '72361127388902796012114362477322144735533135802605580980837229637633107.09258182546029609579105130429', 13, 5); + T('-273219046129778472266.058485499109338596573075', '-273219046129778472266.0584854991093385965730749815531346353045049027336176088162559', 24, 4); + T('-0.00000000000007280978660680040221854732703892674800762227646', '-0.00000000000007280978660680040221854732703892674800762227646226836240552990665555', 59, 5); + T('6276464097096605785329824864148.527049815380996985914', '6276464097096605785329824864148.52704981538099698591393138250952524233217779', 21, 0); + T('-597198', '-597197.628834953506966767991553710700934413500204012426446876175175114500037146677042239668', 0, 0); + T('-433359038877962603713455049783', '-433359038877962603713455049783', 30, 0); + T('0.0000000000000000000000000000000006381735336173415547900207', '0.0000000000000000000000000000000006381735336173415547900206847223271181528556195', 58, 0); + T('807050820.676699481791051456', '807050820.676699481791051455096629111775329549493444751897213743866128850061622892', 18, 2); + T('0.0000000000000000000000000000489752745584111598026871408099', '0.000000000000000000000000000048975274558411159802687140809907', 58, 3); + T('0', '0.0000000000000000000000000000000000000000000226067497099004331941912856', 36, 6); + T('39094507220356523575213839820749561678857032020620050894656716293.67495126324', '39094507220356523575213839820749561678857032020620050894656716293.67495126323710280607325675762434', 11, 2); + T('-22678769.817248435493696742588538', '-22678769.817248435493696742588538331241538369550386799148219117165563326051964281', 24, 4); + T('5767307789536064608781837241295188919', '5767307789536064608781837241295188919', 30, 0); + T('168139421336703751454723348941581.0989620502676347173183006762310303463068390391675336175', '168139421336703751454723348941581.0989620502676347173183006762310303463068390391675336175', 55, 6); + T('-88504154823150878334701258558002569539793415193610842759120001088201133334307983', '-88504154823150878334701258558002569539793415193610842759120001088201133334307983', 44, 4); + T('-329655464734888739743767364510089523323', '-329655464734888739743767364510089523323', 25, 1); + T('0.00000000000000000000084501920385200277918', '0.000000000000000000000845019203852002779189', 41, 1); + T('-5840123488663376216608124416421102623453621285401805153644515702191', '-5840123488663376216608124416421102623453621285401805153644515702191', 59, 3); + T('-0.00000062136', '-0.00000062135994705765807424168688040116009865960794', 13, 3); + T('-0.000000000000000000001', '-0.00000000000000000000000000000000000000001462340018509', 21, 0); + T('0.006', '0.0059936079684973012978514720463815026319867172', 4, 2); + T('526400924922583880463185416850358172941032433541198785132036360013561525242705246671523133061757', '526400924922583880463185416850358172941032433541198785132036360013561525242705246671523133061757', 38, 6); + T('-882873192309626516849737955750920016208815071464396145314', '-882873192309626516849737955750920016208815071464396145314', 46, 6); + T('-6758735221049379519.2572393', '-6758735221049379519.25723934716782621573177906', 7, 2); + T('-0.000000790786371520517683432954223230156393', '-0.00000079078637152051768343295422323015639290504929', 42, 4); + T('-0.00000000000000000000000000000000000091966', '-0.0000000000000000000000000000000000009196610338039484256720548095', 41, 6); + T('-0.00000000000541933780252974657673566396725809671507', '-0.0000000000054193378025297465767356639672580967150744942399', 50, 4); + T('-0.000000000000000000000583479626', '-0.000000000000000000000583479626800396501245049473177007318461587644875162633137088', 30, 2); + T('11604528953141243475', '11604528953141243475', 13, 3); + T('566807769866890.02801522720838416179840190775794257854696482', '566807769866890.02801522720838416179840190775794257854696482590456963092114076898', 44, 3); + T('-35620697798492911.0669248410687861643251268323797667576839159303711022', '-35620697798492911.066924841068786164325126832379766757683915930371102255700535220012496346147093317', 52, 1); + T('-0.0000000000000000000050597138398214172387021051', '-0.000000000000000000005059713839821417238702105087169671933387005', 46, 0); + T('-0.8174627036499993060703761337876311', '-0.81746270364999930607037613378763105641195817852303184573911882', 34, 4); + T('0.0000000000000000000016801618027332596946', '0.000000000000000000001680161802733259694523102897059933026814910108114561982575916856344241', 40, 2); + T('-0.0005550919624693963627417354876271038367574907', '-0.000555091962469396362741735487627103836757490736793688', 46, 6); + T('0.00000000000001', '0.0000000000000000005989657036', 14, 2); + T('26923162467831521466200388799932149017792464401239965995848900909703513553682', '26923162467831521466200388799932149017792464401239965995848900909703513553682', 59, 0); + T('0.000000000000034716604224301619113605162061332208', '0.0000000000000347166042243016191136051620613322078875442915881933', 48, 5); + T('4554587644116353728395891927482', '4554587644116353728395891927482', 4, 4); + T('83', '83', 1, 4); + T('-0.0000000000000000679512312597136188846870750884127001656543', '-0.0000000000000000679512312597136188846870750884127001656543162955358', 58, 5); + T('-0.000000000000000005843127017405787209162333', '-0.0000000000000000058431270174057872091623337743081992327769648', 42, 2); + T('698142412071442689875148052035405913655358215178078673989', '698142412071442689875148052035405913655358215178078673989', 31, 2); + T('-0.000000000000000000000000001', '-0.0000000000000000000000000000000000000009', 27, 3); + T('0', '0.000000000000000000000000000000000000000000000000086322062431379058693358', 36, 6); + T('-7097679626212584135194693334505819500.76271239784243114877303953752095973790591', '-7097679626212584135194693334505819500.7627123978424311487730395375209597379059174819443305631091738', 41, 1); + T('720941616590530465684319461159925340787620861616050215112729354513077297889437424470222725372.4341', '720941616590530465684319461159925340787620861616050215112729354513077297889437424470222725372.43418', 4, 1); + T('-8565045.0741813', '-8565045.07418120224', 7, 3); + T('7179182230007440380654240229988748528461622212340003478705', '7179182230007440380654240229988748528461622212340003478705', 16, 1); + T('128138852434106311723518159896099183377408757231649238006509175039', '128138852434106311723518159896099183377408757231649238006509175039', 51, 0); + T('0.0000000000000000000000000000000000071444116240971906475', '0.000000000000000000000000000000000007144411624097190647497044019271703768941206', 56, 5); + T('0', '0.00000000000000000000000000000000000000000000021714481944', 43, 6); + T('-0.0000000000000001', '-0.0000000000000000000000000034534834', 16, 0); + T('-0.0000000000000000000008286492885892336366506247591678062602', '-0.00000000000000000000082864928858923363665062475916780626021532507656936043414109352811732', 58, 1); + T('31161421229261423772494491055755169247634601491928', '31161421229261423772494491055755169247634601491928', 51, 3); + T('1748715317929813133410156549170209422179478560908330825848622104018934659066', '1748715317929813133410156549170209422179478560908330825848622104018934659066', 57, 4); + T('-554303811557294466.269761483473739646624314242607077', '-554303811557294466.269761483473739646624314242607077815435340758612837177421989342652', 33, 1); + T('-0.19004485', '-0.19004485473016995992614957080209680408919713640428488619', 8, 1); + T('0.000252525605711892', '0.000252525605711891731866212005527221984514215823140269482997380211714402276122070798053', 18, 6); + T('86245969707619', '86245969707619', 14, 3); + T('-31435925010862195008998682761', '-31435925010862195008998682761', 9, 3); + T('-7376.12482208', '-7376.124822087908447175101', 8, 2); + T('0.000080221434577125714125624728141606555230430450054', '0.0000802214345771257141256247281416065552304304500535613033078792598113626175', 51, 0); + T('-6050582615205191601389958119203059837835097590785064613410822037914417495686026661', '-6050582615205191601389958119203059837835097590785064613410822037914417495686026661', 31, 1); + T('0.00000000000000003455493043277403696896050418463562482', '0.0000000000000000345549304327740369689605041846356248273019036250593274409786087865531980510674', 53, 3); + T('-20967.65067808575', '-20967.6506780857520813447701235001803657407937', 11, 6); + T('568254966593770.553753276551449605949', '568254966593770.553753276551449605948238816764309803642928261672349658172008375162162314878680613', 21, 0); + T('-451.149170475956331479335', '-451.1491704759563314793340102771090380475440750267088321862964226523091325726805634622304958123379', 21, 3); + T('-0.00000000000000000000000089587927281631480799', '-0.00000000000000000000000089587927281631480798176250533957436898566513857011780218162097370714526', 44, 0); + T('0.00006', '0.00005989898942742447311513559', 6, 2); + T('0.00000000000000000000000000000000000084666165975', '0.000000000000000000000000000000000000846661659751645', 47, 6); + T('-274912.8896024699', '-274912.8896024699118787839924993246206752520896053416203239133353705', 10, 1); + T('2884607226068313798651836226110538860137007975185098848', '2884607226068313798651836226110538860137007975185098848', 55, 6); + T('-0.00000000000000000002773912168', '-0.000000000000000000027739121678637743521714908420713523555500095414277237781740952561559672', 29, 3); + T('-2651358523359639', '-2651358523359639', 16, 4); + T('-4813276596516131663456402092.38944176', '-4813276596516131663456402092.3894417517916213734867', 8, 3); + T('-0.000000000000000000000000000000000000112895859', '-0.000000000000000000000000000000000000112895858119340820153717620708673416', 45, 0); + T('-0.0000000000000000021', '-0.0000000000000000020224974226159732231298241899365279396237510862449464734463589', 19, 3); + T('-7589382547973376572325815568183010749314649708', '-7589382547973376572325815568183010749314649708', 33, 5); + T('842229243093860852173.05443961588175098377444082861489172139756969332835', '842229243093860852173.0544396158817509837744408286148917213975696933283408713841831638764', 50, 0); + T('-699708233495.712278374225898965891885496', '-699708233495.71227837422589896589188549642075052667001859282382939797996992686357419809583', 27, 4); + T('-0.00000000071616892037859054', '-0.000000000716168920378590537721800581109521242491374877', 26, 0); + T('3951438403.277181863849692687044689923289027507211228628773736', '3951438403.2771818638496926870446899232890275072112286287737359542096', 51, 2); + T('109559.01297171197941271991562118124015322', '109559.012971711979412719915621181240153223610175595763848035079898263530366', 35, 3); + T('-0.00000000000000000000000000000000000000000000489005761683947', '-0.00000000000000000000000000000000000000000000489005761683946256390055271579820502403', 59, 3); + T('-0.00158', '-0.00158276409341184629828973465939702170102740363504722102864514069935682480434491', 5, 2); + T('-2625562538887919963240549817430379735187837775384', '-2625562538887919963240549817430379735187837775384', 44, 0); + T('0', '0.00000000000000000000002', 9, 1); + T('6744808.28630410992583043657159413157574982400492', '6744808.28630410992583043657159413157574982400491999838773235902794700459508120619939892', 42, 6); + T('0.000000000000000009', '0.000000000000000009', 18, 3); + T('6067881766683695479556751950119377724336039886809300136812181462', '6067881766683695479556751950119377724336039886809300136812181462', 31, 1); + T('0.000000000000000000000000000000000000000077241022793', '0.0000000000000000000000000000000000000000772410227935606591033087412064412570098277', 51, 1); + T('743268323094543466714.5656060177009296968524561226948074051004264', '743268323094543466714.565606017700929696852456122694807405100426400624651576046667459841457817767865', 43, 3); + T('-596135', '-596135', 3, 2); + T('0.07662404229928167815820747802086592943344134084819', '0.0766240422992816781582074780208659294334413408481864862625859275536716954542357278357044523255', 50, 4); + T('-0.000000000000000000000000000885256', '-0.000000000000000000000000000885255222637729340070545710310579917592457286140653', 33, 0); + T('55893020145100569857309952693924435456669213.356281068124371401302229274073839082240544043386519', '55893020145100569857309952693924435456669213.356281068124371401302229274073839082240544043386519', 51, 0); + T('0.000000000044398802543439239843437872656117', '0.000000000044398802543439239843437872656117345711426288269229', 42, 1); + T('0.000000000000000000000000000026311845042475573561274888459', '0.00000000000000000000000000002631184504247557356127488845876295156781061349824020867304', 57, 6); + T('-127546673151161350153045221729711', '-127546673151161350153045221729711', 2, 5); + T('0.0000000000000000000000846081', '0.00000000000000000000008460817346743347251678412215465432867047065857', 28, 3); + T('-51296363216658187515760473402291', '-51296363216658187515760473402291', 27, 4); + T('-8623967090632480689370959269411792112227821530531202541003992985', '-8623967090632480689370959269411792112227821530531202541003992985', 54, 5); + T('-966322003490784535731979767036707880939452169502093813823674817588484', '-966322003490784535731979767036707880939452169502093813823674817588484', 56, 5); + T('-272472379898107893040761485379027824396136886208', '-272472379898107893040761485379027824396136886208', 40, 1); + T('0.000000000000000000007578294653267877535740172858883482', '0.00000000000000000000757829465326787753574017285888348202441720573692830214583542806201', 55, 6); + T('25958781094763030494523126276550672249453141421083859868561356127876297714106602172585', '25958781094763030494523126276550672249453141421083859868561356127876297714106602172585', 29, 5); + T('0.00000000000000000000000000000000000002', '0.000000000000000000000000000000000000015806075051053843417566111132263641553843698646164', 38, 5); + T('-73099329416955017257739991488405608089647281115099586', '-73099329416955017257739991488405608089647281115099586', 21, 6); + T('-88307320.90319141093816288808957670297463', '-88307320.903191410938162888089576702974638474154077235587259266824247410860533478169707304792818', 32, 2); + T('-35236814557361445958969411965214520.30399877405421', '-35236814557361445958969411965214520.303998774054210302477326477', 14, 2); + T('-2908087206403224796868158372851057.39782067611', '-2908087206403224796868158372851057.3978206761117082535006786132666114643644421715709235528929678', 11, 4); + T('-19581413994383784948718328954653', '-19581413994383784948718328954653', 28, 1); + T('0.00000000000000000000000000004', '0.000000000000000000000000000040608230569366379665209245709785291404206510745612419401142658', 29, 3); + T('-0.906238977426875501362745', '-0.9062389774268755013627459831223515271076867650054627805581400941104277662892230888597201', 24, 2); + T('0', '0.000000000000000000000025517761823978244291048210421988594612225022695964910425529', 21, 1); + T('663336.45734367931832199866', '663336.4573436793183219986595282312647796998714487327022132545955984591825466144183', 20, 4); + T('-461221276.52047063868261544207237644195170184', '-461221276.5204706386826154420723764419517018397461911607', 36, 4); + T('92664692270788697481952993240101', '92664692270788697481952993240101', 9, 1); + T('0.00000000000001', '0.0000000000000000417218487798321067688965201563233239322412080713783058725771499175637', 14, 0); + T('-0.00000000000000291161', '-0.0000000000000029116100944057582762735577555', 21, 6); + T('3593092835933826522602826541522473977510499517734180584911059518', '3593092835933826522602826541522473977510499517734180584911059518', 39, 2); + T('0.00000000000240671872382434259', '0.00000000000240671872382434258731759266816542514881094906467645247797685306920193421', 29, 6); + T('98445608185462908936594271820438358882244286228', '98445608185462908936594271820438358882244286228', 43, 4); + T('-38275693035627727048820160757435988950513161', '-38275693035627727048820160757435988950513161', 28, 2); + T('0.000000000000000007838540274247171557849126', '0.000000000000000007838540274247171557849125417291807341828802631329086161031903106930206518314803525', 42, 0); + T('0', '0.0000000000000000000000000000000000000008760161376', 38, 6); + T('-274462946120897177140732986024361620867165740004629583369799434.752624497847', '-274462946120897177140732986024361620867165740004629583369799434.7526244978472107528071824755321251', 12, 1); + T('805407519521180265118391229', '805407519521180265118391229', 27, 0); + T('4837.60752412303502514', '4837.60752412303502513085517977565448616961234363618524491896285197928079211821305450283483280681236', 17, 0); + T('19446.966116400627008657626752077217581388920002', '19446.966116400627008657626752077217581388920001650492489914443643730475', 42, 6); + T('259711114990641', '259711114990641', 1, 3); + T('-0.0000000001', '-0.0000000000000000002', 10, 0); + T('80565580.149080509196072203611545842035798415', '80565580.1490805091960722036115458420357984148292066084650845696757793247885015079193577022206528568', 36, 5); + T('0.000000005126609951384222369644011060208031', '0.00000000512660995138422236964401106020803193692417523731220078957765716642', 42, 3); + T('1758006742538130240388703498480688686072955030356.7524172233646685', '1758006742538130240388703498480688686072955030356.75241722336466855', 16, 1); + T('-128086989690.52297791537155595882257011356310571016034760745375196584546', '-128086989690.5229779153715559588225701135631057101603476074537519658454607884909539951', 59, 2); + T('-361166416734639117275346911473316661252428418964862.401', '-361166416734639117275346911473316661252428418964862.400974469693342990746', 4, 5); + T('71633752430127836728495483808.07484204148983764432608854793881189', '71633752430127836728495483808.074842041489837644326088547938811892934755621628332271860178432369', 35, 4); + T('5744453717566208360238616812981884481035389801', '5744453717566208360238616812981884481035389801', 46, 1); + T('2988347090930431122495200201632971168964831173901728', '2988347090930431122495200201632971168964831173901728', 31, 0); + T('2320482568655945754105081468655336561175857', '2320482568655945754105081468655336561175857', 13, 6); + T('0.0000000000000000000000381190632343589292', '0.0000000000000000000000381190632343589291525554226892790057468635150617798724', 40, 6); + T('150674298726358630368887.96642348553527918072509638013912555500029', '150674298726358630368887.966423485535279180725096380139125555000281054567239883226587200104', 41, 0); + T('6381234380831959100617925908319665780846.339213369897450587263631892568406353114597203918925', '6381234380831959100617925908319665780846.339213369897450587263631892568406353114597203918925036', 52, 6); + T('0', '-0.000000000000000000008153818897577980935667335', 11, 6); + T('0.42425', '0.4242532985015934975349331325449597502579863812797694513697436078382', 5, 6); + T('-9492241803854916508301408875627456379508228876824584339472513249476134', '-9492241803854916508301408875627456379508228876824584339472513249476134', 40, 3); + T('0.00000000070312', '0.00000000070312002679979045924', 16, 6); + T('0.00000000000000000000001', '0.0000000000000000000000000000000588002549246249768755359919888343240679086056339612762', 23, 0); + T('0.0000023310091287510842138474107374781945319497631823824', '0.000002331009128751084213847410737478194531949763182382321012031067524722385571777894', 55, 0); + T('1032461863864997072747819312364575151426447594160280088333654341664616268438.32980502', '1032461863864997072747819312364575151426447594160280088333654341664616268438.3298050176666367344933', 8, 0); + T('-0.596499', '-0.5964989918041972', 8, 3); + T('0.00000000729829591', '0.000000007298295908208407232392829275577759290253056591354761667316714193254528425439374', 17, 0); + T('-0.00000000000072754727282', '-0.000000000000727547272816813510126252359571002375852804848057969667686650624217565437395780898', 23, 3); + T('-10046269443437939423878986686151143710819158649636347587133691874104534887801867140686292', '-10046269443437939423878986686151143710819158649636347587133691874104534887801867140686292', 27, 4); + T('-0.0000000000000000008264058640698', '-0.00000000000000000082640586406982678835', 31, 6); + T('0', '-0.00000000000000000000000003', 4, 2); + T('0', '-0.00000000000000000000000000003', 10, 5); + T('-0.000000000000000000000000000000000063243952023', '-0.00000000000000000000000000000000006324395202396400840212', 45, 1); + T('-87462022143445554762309727721395432699696551899513954523', '-87462022143445554762309727721395432699696551899513954523', 34, 3); + T('-74961550733018', '-74961550733018', 3, 2); + T('-0.0000762276772207934863238537452', '-0.000076227677220793486323853745211809223538788353453336644181293192727858100277468114', 31, 1); + T('677858883593.5379217458786753765661983639736854979', '677858883593.53792174587867537656619836397368549787113022327012837856', 37, 0); + T('-681966362209838078248167523', '-681966362209838078248167523', 3, 3); + T('-0.0000000912679235575807736981', '-0.00000009126792355758077369811497315481776589586611502', 28, 6); + T('0', '-0.000000000000000000000000000052634779034188540046239', 18, 1); + T('-482621290791225899125767045587660152129007959948148807767495544739447223766118', '-482621290791225899125767045587660152129007959948148807767495544739447223766118', 54, 2); + T('-2457603484411630301158179244599424', '-2457603484411630301158179244599424', 0, 5); + T('-40619874105070540993401576950183421101632408', '-40619874105070540993401576950183421101632408', 21, 3); + T('0.000000000000000000001', '0.000000000000000000000000000000000000000000000036589692229297589126710894495725996984366827', 21, 0); + T('0', '0.000000000000000000000000000000000007697850604448866757088056283820271725848286928', 27, 1); + T('2545.02415115677316212239', '2545.0241511567731621223858827267448711169160082660710108790421759089', 20, 4); + T('7077834165184988414848217637710910868788', '7077834165184988414848217637710910868788', 1, 2); + T('0.0000000000007378707001477130995722524252437998233512333191', '0.00000000000073787070014771309957225242524379982335123331910271174142678466671942', 59, 5); + T('886722233239112661944981617508479963315641616414109829288', '886722233239112661944981617508479963315641616414109829288', 25, 1); + T('812428046316564095375052061800123688188698505372578.955270821798095254315857427809', '812428046316564095375052061800123688188698505372578.955270821798095254315857427809', 30, 1); + T('1438455226828583407739908136218110419280473454035031999178004364062408', '1438455226828583407739908136218110419280473454035031999178004364062408', 37, 6); + T('0', '0.0000000000000000000000000000000000000000000000001348157598970921392138758145247802207211', 46, 3); + T('8620798.4029829269497633530936626', '8620798.402982926949763353093662637749577322989003026264137629102694703457796723', 25, 3); + T('751975428988.635400218944734023463354339122072205244589', '751975428988.6354002189447340234633543391220722052445885192557635746411940404597083340565', 42, 2); + T('8829610679653473597763374223696575198221475058', '8829610679653473597763374223696575198221475058', 41, 1); + T('-714009623555639702450738551.145067501536358187497', '-714009623555639702450738551.145067501536358187497017675344121707361', 22, 1); + T('-91951388.565056345983796225029824384051390812152355713461736499009', '-91951388.5650563459837962250298243840513908121523557134617364990085137853372087283116655848', 57, 3); + T('0.0000000000000000000000000000000000000000542781491', '0.0000000000000000000000000000000000000000542781490608507', 49, 4); + T('-918330560556906040463237216497732461443', '-918330560556906040463237216497732461443', 26, 5); + T('-0.00000000002283026704705211170643908282642668304190779', '-0.0000000000228302670470521117064390828264266830419077982617173461771678023456426697428455618', 53, 1); + T('59904336933832006778100229635633495994764541035048455.00685752534587785481499778785', '59904336933832006778100229635633495994764541035048455.00685752534587785481499778785', 29, 4); + T('43327692187687528267656066572368503890833128899944', '43327692187687528267656066572368503890833128899944', 9, 0); + T('0', '-0.0000000000000000000000000000000000000000000000002695', 35, 4); + T('-777052914895060678617199377851347.5589977794726166264477644804368', '-777052914895060678617199377851347.55899777947261662644776448043676196992892646996390102480483', 31, 6); + T('0.000000000000006551347385', '0.0000000000000065513473845779768621371949710746347910674197', 24, 5); + T('0', '0.000000000000000000000000000000000000000000000470471271824608482', 35, 3); + T('0.00000000000000000000000000074155927643355', '0.000000000000000000000000000741559276433554007067939207218187264014389', 41, 5); + T('-0.00000000000000000000000000006', '-0.0000000000000000000000000000542442671677483510134381455061499028186524037533', 29, 3); + T('182677642047881.78165441673019155464219406264001214565556885348479', '182677642047881.78165441673019155464219406264001214565556885348478627713505384459736760885446', 50, 4); + T('0', '-0.00000000000000000000000000000858982569563495450566974610707502362885052556461927131884762464', 11, 6); + T('-66550.5958713958756', '-66550.59587139587555170096651751421783721693', 13, 3); + T('0.079645', '0.0796449604330762624732668777200614644533142680923684958378555199983606783579469672288424123399', 7, 5); + T('56438173260305527207719104.511696429', '56438173260305527207719104.5116964286835910881140135476295960487687321558005814404822', 9, 2); + T('0', '0.000000000000000000000000000000000000091993511185191449503021969935560319635', 37, 3); + T('391931928701260491527786928262480614065303505453326538607192588983468700108524088153624', '391931928701260491527786928262480614065303505453326538607192588983468700108524088153624', 22, 3); + T('0.000000000000000000000000000042665152', '0.0000000000000000000000000000426651524086', 36, 6); + T('-0.00000000000000000000000000000000000551985053689556', '-0.00000000000000000000000000000000000551985053689555651547913', 50, 4); + T('444439156087385667746972959760087580376298869566168', '444439156087385667746972959760087580376298869566168', 35, 5); + T('11036262983412.43034', '11036262983412.43033528368482450310801430632754197929230502318864896161821328429506937237954870210095', 5, 6); + T('114826904256612733.386864222161825009298982005624415354243438170865464426025', '114826904256612733.3868642221618250092989820056244153542434381708654644260250420408639727676555', 58, 6); + T('-577359880659584271099782733770129532093949030313381759511', '-577359880659584271099782733770129532093949030313381759511', 58, 3); + T('-44532141731964071674958', '-44532141731964071674958', 19, 0); + T('-531493422957995027553658.0152656', '-531493422957995027553658.01526560425994156916529061354056445595443554505916649107700199156398', 7, 2); + T('-5530039742938541509225190148354298332277611200.665402397065792402231196232513009208', '-5530039742938541509225190148354298332277611200.665402397065792402231196232513009208', 36, 3); + T('0', '0.000000000000000000000000000000677545257330276611824', 24, 5); + T('-0.012993495776054845588950537203826106468', '-0.01299349577605484558895053720382610646775576321', 39, 4); + T('0.00000000000000000000042757024280062', '0.00000000000000000000042757024280061750977250160981050270300489211926017361343', 35, 4); + T('51635888852808817365000118067', '51635888852808817365000118067', 22, 5); + T('0.000000000000000000000000000000000603396', '0.000000000000000000000000000000000603395945277167356481154505825030896299189393402', 39, 5); + T('0', '-0.00000000000000000000000000000000000635911', 8, 6); + T('-9221344189318249072741906770568381333452267699521431676394690183761281215217417612', '-9221344189318249072741906770568381333452267699521431676394690183761281215217417612', 22, 5); + T('-0.000000000000198393562', '-0.0000000000001983935629747875006466687380426976581147913876793006421232132970749204', 21, 2); + T('-786436693838.7', '-786436693838.60830508946831272795106698745669695326924668266049292676146076463', 1, 3); + T('40246366508270205742209645855527350916237478820639394287714514966410603115762211835', '40246366508270205742209645855527350916237478820639394287714514966410603115762211835', 58, 2); + T('555474.69496086509055978', '555474.6949608650905597751694947446839037372128', 17, 5); + T('8022325851625826110929789153501954481551485.5', '8022325851625826110929789153501954481551485.53871', 1, 5); + T('4297429245247860561728651321437204111140731778009688377629142154614688', '4297429245247860561728651321437204111140731778009688377629142154614688', 52, 0); + T('777513737240382763744724918104359012326554895457341753355494648093023051263742525018117', '777513737240382763744724918104359012326554895457341753355494648093023051263742525018117', 48, 2); + T('-63505.14654339787504452160585107121514668311657241064416542113167', '-63505.1465433978750445216058510712151466831165724106441654211316601988813466429148514', 59, 0); + T('0.0000000000000000000000000000000000000000000000002132', '0.0000000000000000000000000000000000000000000000002131584245576870011395143175854664918396', 52, 6); + T('19014788003727720623764101959539818230764908892692480197047', '19014788003727720623764101959539818230764908892692480197047', 58, 1); + T('33939997624.0197921818931949496918774963224187187', '33939997624.01979218189319494969187749632241871866115828172706446', 37, 4); + T('-0.00000000437', '-0.00000000437044548720085802473659895081938205039437794', 12, 6); + T('-0.00001', '-0.00000000008', 5, 0); + T('0.00023979483633295840978657582202107097322330670894', '0.0002397948363329584097865758220210709732233067089358025735733289993174', 50, 2); + T('-711428494121714888531607863770583992472769521259376456808708067109440833105179', '-711428494121714888531607863770583992472769521259376456808708067109440833105179', 28, 6); + T('70933783348593982835568459890416.0753238571138802414615804703685410118914879', '70933783348593982835568459890416.07532385711388024146158047036854101189148788148847143786341', 43, 6); + T('0.00013443010000122739', '0.000134430100001227389387332790313969924187247172103522415803', 20, 4); + T('594572866009', '594572866009', 11, 2); + T('0', '-0.0000000000000000000000000000000004', 9, 5); + T('0.00000000000000000000324829343842244367023387519850894', '0.0000000000000000000032482934384224436702338751985089395375621763002572355324477891525815325', 53, 4); + T('0.0000000000000000000000000000000000000080325957441397992219', '0.000000000000000000000000000000000000008032595744139799221910158364696096013396500786388556806', 58, 5); + T('-209.9943998837517521171865', '-209.9943998837517521171865', 22, 1); + T('368594811778601966053268169', '368594811778601966053268169', 14, 3); + T('2230531204252229043182083968194792253467124991147983364421488274258087435683', '2230531204252229043182083968194792253467124991147983364421488274258087435683', 16, 5); + T('-71115775450983349128763558836649132287', '-71115775450983349128763558836649132287', 23, 1); + T('-483654527751509330685538809742484358245140579666376151497197', '-483654527751509330685538809742484358245140579666376151497197', 56, 6); + T('-5091778328', '-5091778328', 3, 4); + T('-256102825585696490271420790932070946958683447238', '-256102825585696490271420790932070946958683447238', 16, 1); + T('7200079680269727637144953340960521911223150535738461003051', '7200079680269727637144953340960521911223150535738461003051', 46, 5); + T('0.12237956363887424653903641168389546218306318289244', '0.122379563638874246539036411683895462183063182892438860817851', 50, 6); + T('0', '0.0000000000000000000017330538236509731544529580860737930783953450084798359954428313202503031054', 3, 6); + T('-7307466372310844673325729456353434', '-7307466372310844673325729456353434', 11, 5); + T('450885530532123553546806459524324682026463783', '450885530532123553546806459524324682026463783', 41, 1); + T('-46895193988088327212394383852584799863173436374526341947', '-46895193988088327212394383852584799863173436374526341947', 31, 1); + T('-0.00000000000000000000000000000006245724297', '-0.00000000000000000000000000000006245724297115808171139353612583649806973748910846638239545613215419', 41, 5); + T('-0.00000001404979970762467943', '-0.000000014049799707624679436414100982684927402505487462368435636661232', 26, 2); + T('-0.00000000000079152154548705699405289418014456022', '-0.00000000000079152154548705699405289418014456022009611438790933023626729', 47, 2); + T('891231598035185094864874932491664', '891231598035185094864874932491664', 34, 1); + T('-21623630838130.41753786411051466836143', '-21623630838130.41753786411051466836142541353', 23, 4); + T('0', '-0.000000000000000000050344267763315930908573638914842950751277', 4, 1); + T('0.0000000000000000001', '0.00000000000000000000000000300465169060014934587800113159517165498719502916', 19, 0); + T('-8649178.18', '-8649178.18048714649483284871538420752288818', 3, 5); + T('0.0000000000000000000000000000000004963883754245', '0.000000000000000000000000000000000496388375424498127114868980814', 46, 0); + T('-10974421088223640446696', '-10974421088223640446696', 20, 5); + T('61312908452999172017014058433.355839803569328946823364243283374629933567367136', '61312908452999172017014058433.35583980356932894682336424328337462993356736713518814151050627295366', 48, 2); + T('-0.00000000000000000000000000000000000000000336353', '-0.00000000000000000000000000000000000000000336353', 48, 6); + T('0', '-0.000000000000000000000000000000000000906129945659174995729787364905385796', 13, 2); + T('0.006', '0.0062358322221514410119027818669885643269659203708743396114652392713131263018122602098661', 3, 3); + T('16627860442751852915382651943208084134328', '16627860442751852915382651943208084134328', 32, 6); + T('0.01670470626375882709919052077738319859836353121358428', '0.01670470626375882709919052077738319859836353121358428381884805750145', 53, 6); + T('0', '0.000000000000000000007', 18, 5); + T('-0.00007215749036271791941521566318078882873853148647784214', '-0.0000721574903627179194152156631807888287385314864778421351738105827688353', 56, 4); + T('3548263666.582689458461665694669644358', '3548263666.582689458461665694669644358336891947634669931', 27, 3); + T('60399519401632991079247752823778179593673529', '60399519401632991079247752823778179593673529', 22, 5); + T('0.000000000000233104769165177107585997076128792', '0.00000000000023310476916517710758599707612879202633127248344707016405290189235744990032222', 45, 1); + T('843965301062452449522948600607', '843965301062452449522948600607', 25, 6); + T('-0.0000000000000000000000000000000001', '-0.000000000000000000000000000000000085032621910742886084799453146101567282871', 34, 6); + T('46886807836678689688638922017651004255677288992864679552776076502293724674686314835', '46886807836678689688638922017651004255677288992864679552776076502293724674686314835', 34, 5); + T('-678740886303261267240.1239864904330523466883632237562037876', '-678740886303261267240.1239864904330523466883632237562037876164582', 37, 2); + T('-0.000000000000000000000000003066472712192994', '-0.0000000000000000000000000030664727121929943743232462354894897120672997544666290457788144220575', 42, 4); + T('200973057640705826285554717494.6405080060649747545974566436926', '200973057640705826285554717494.64050800606497475459745664369255835236446509521462789289', 31, 2); + T('-0.000000000000000000051634708278695104973', '-0.00000000000000000005163470827869510497289920040400838424017896443243312029801753587875534', 39, 6); + T('0.00000000000000000000000000000000000000000000003', '0.000000000000000000000000000000000000000000000031050069069237', 47, 5); + T('68206233796834824043797769872734137955118693676156480446872816.8518492721', '68206233796834824043797769872734137955118693676156480446872816.8518492721', 10, 0); + T('366211876730525184.2112925847409', '366211876730525184.2112925847408882079013862619705659971494103242295', 13, 6); + T('-28807871103897.272528960587971967675130166801', '-28807871103897.272528960587971967675130166801514140074724279602', 30, 2); + T('614620959.71471965275572405064779427741657286', '614620959.71471965275572405064779427741657286365469689495728000154430488188257888436646377190255908', 35, 4); + T('-0.00000000000000000000000000000000000000000000000089569140974', '-0.00000000000000000000000000000000000000000000000089569140973898433038300266513138758892568395944807', 59, 4); + T('368726531601472541757005559', '368726531601472541757005559', 22, 1); + T('185087426761612490062', '185087426761612490062', 10, 6); + T('-0.000000000004801489265532052458447318275442325425429984', '-0.0000000000048014892655320524584473182754423254254299839958730570547833935253', 56, 6); + T('1010261342.998866261745786097198968434321083737387072668528701921554', '1010261342.9988662617457860971989684343210837373870726685287019215543856058268', 57, 3); + T('-7.4410130019668366481281', '-7.44101300196683664812816428831629929', 22, 2); + T('0', '0.00000000000000000000000000000000000010766614619304664816351956826', 29, 5); + T('43602302059280765272143387205410250266701746805853.7362679778148565141761499585818918', '43602302059280765272143387205410250266701746805853.73626797781485651417614995858189170052', 34, 2); + T('3275597767569392135242802401183979090547557454995', '3275597767569392135242802401183979090547557454995.0002151574698063113783887531071555180731', 3, 4); + T('-0.000000861448005696963823990190602172681039031672943', '-0.00000086144800569696382399019060217268103903167294337421574', 51, 6); + T('-0.000000000718', '-0.000000000718175217221857329067204632862589275369371649657488041167798', 12, 2); + T('7241100033055179060849224143084272528685', '7241100033055179060849224143084272528685', 9, 6); + T('376930688703097473231056.140603329417775643180186381618', '376930688703097473231056.14060332941777564318018638161819677', 30, 5); + T('-335971623127888104123118574609591.54117174980023793282384339085373172820351', '-335971623127888104123118574609591.5411717498002379328238433908537317282035103147883860427215696679434', 41, 2); + T('0', '-0.000000000000000003', 17, 4); + T('-748898896256442137389196280.23031', '-748898896256442137389196280.230301813855222', 5, 3); + T('86874389451266246842831776279891856093449827972726827047273353918588358382027307437483326', '86874389451266246842831776279891856093449827972726827047273353918588358382027307437483326', 39, 5); + T('0.00081378123325625046095444674524950183268906906', '0.0008137812332562504609544467452495018326890690605771240762295999653129452516984857208', 48, 1); + T('-725450248090600004049167587080239402701356513779359607967489181865', '-725450248090600004049167587080239402701356513779359607967489181865', 21, 1); + T('24145300356288528084078711212894384414734655496038619409625797965831', '24145300356288528084078711212894384414734655496038619409625797965831', 25, 5); + T('22790948246303245', '22790948246303245', 2, 1); + T('26063.51488387693273367995592341542227268081315828530152', '26063.51488387693273367995592341542227268081315828530152248204562165099342', 50, 1); + T('0.000000000000000000000000006245246349730684267507002191086', '0.000000000000000000000000006245246349730684267507002191086872975015194060738411939654043163861', 57, 3); + T('0', '-0.0000000000000000000000000601239333161651028525297370999283901806959', 22, 5); + T('-7837268670151009998118347281852918290117079531785', '-7837268670151009998118347281852918290117079531785', 30, 6); + T('-0.0000000000000000000000000029961775048293', '-0.00000000000000000000000000299617750482926278941', 40, 5); + T('7697726478481038997299694825766803440383452890589677184654250970055060131212130077568341259760777047', '7697726478481038997299694825766803440383452890589677184654250970055060131212130077568341259760777047', 46, 2); + T('3339891140949070830.699260440247664205', '3339891140949070830.6992604402476642050432122493196994256397882111', 19, 5); + T('52884809054155176454341672916484263984322480794139167239467359676888945', '52884809054155176454341672916484263984322480794139167239467359676888945', 50, 6); + T('-172796003942538519677094591694286.6871237311', '-172796003942538519677094591694286.68712373112737765917257', 10, 4); + T('177347646033111167332285715', '177347646033111167332285715', 19, 2); + T('7476674346050072822509313046812.7766604692', '7476674346050072822509313046812.7766604692', 11, 2); + T('82575172816978114.87683857936991415384457', '82575172816978114.876838579369914153844570011199517178441757629522946782860018297776571802906754196', 24, 4); + T('7158070632454719426581379086266518238712824559043518252514520974817379095158141323665044775646', '7158070632454719426581379086266518238712824559043518252514520974817379095158141323665044775646', 17, 6); + T('917115601052562718812283551186941547064940933626510928987.4562952', '917115601052562718812283551186941547064940933626510928987.45629517752', 7, 0); + T('-65119253549637159293086371328298510.229376017664092812944609', '-65119253549637159293086371328298510.22937601766409281294460900299739094729288137887', 24, 1); + T('-579005874942088042877307886802326941', '-579005874942088042877307886802326941', 37, 5); + T('-2601068115420615446305982791459.426', '-2601068115420615446305982791459.425989121248575552659129706', 3, 5); + T('60808268310943453653', '60808268310943453653', 5, 0); + T('0.00000000000000000000000000000000000000000005', '0.00000000000000000000000000000000000000000005256617601108', 44, 1); + T('249699615589458766148275472771371667542386092', '249699615589458766148275472771371667542386092', 41, 4); + T('197124783477415252140047709100049763856382077536494207', '197124783477415252140047709100049763856382077536494207', 38, 6); + T('814489916413714424739999786410796548452821032.87345595765165005591329846', '814489916413714424739999786410796548452821032.87345595765165005591329846329301564522512436756', 26, 6); + T('-49538016657893548118648418565252666426527317632760162518667129336789273', '-49538016657893548118648418565252666426527317632760162518667129336789273', 48, 6); + T('-135962402495274524139379723587561300376789400012147878152663948.959882330347226358434638817587', '-135962402495274524139379723587561300376789400012147878152663948.959882330347226358434638817587336', 30, 4); + T('-4358076197279432775165677949552222928787316311', '-4358076197279432775165677949552222928787316311', 26, 5); + T('0.000000009549660800446030405915591714374', '0.0000000095496608004460304059155917143740402066739073312691924883427', 39, 6); + T('-2437094615.41350858123042926442269584680387347048427179419', '-2437094615.4135085812304292644226958468038734704842717941889573519082323297558840308', 47, 6); + T('358466133.8601641175863834378441113254257530617354281379949', '358466133.8601641175863834378441113254257530617354281379949', 49, 0); + T('-154871213567638221959950687949306409.746351834947226354559186488773883', '-154871213567638221959950687949306409.74635183494722635455918648877388290383966146367365785249', 34, 0); + T('87976555906224409024900072725833110552887623978068697732792.9607157608696', '87976555906224409024900072725833110552887623978068697732792.96071576086966754763036', 13, 3); + T('-590375526445828770053040658061151605713512472014244563701327', '-590375526445828770053040658061151605713512472014244563701327', 1, 5); + T('-1353905521062450729740654018889029895510321597436677310509112', '-1353905521062450729740654018889029895510321597436677310509112', 14, 4); + T('332180937526303', '332180937526303', 11, 6); + T('-45680079491730638451939229416160824932393128593694', '-45680079491730638451939229416160824932393128593694', 22, 6); + T('-0.000000000000000000000000000000020571686416292021497594053', '-0.000000000000000000000000000000020571686416292021497594052393236318666913399684096461', 57, 3); + T('0', '0.00000000000000000000000000211213791085573837356864067911953194887302837267780203724344126645', 3, 3); + T('892521802506509803646883747443168', '892521802506509803646883747443168', 2, 0); + T('-0.0000000068819004877595917438112866483406192855698741553', '-0.00000000688190048775959174381128664834061928556987415527831307983170062116415194754', 55, 5); + T('-49804930268043916112990775622805558821229045379525', '-49804930268043916112990775622805558821229045379525', 49, 4); + T('-0.00000000003844997', '-0.0000000000384499609113122581', 17, 0); + T('73509462899114913097162.936659564199247116284287739794425748', '73509462899114913097162.93665956419924711628428773979442574807443872985516875078680777000792039', 36, 6); + T('-8664068510121727818868488574074194031123824480425809', '-8664068510121727818868488574074194031123824480425809', 33, 3); + T('0', '-0.000000000000082925154369503381952218', 3, 4); + T('0.00000000000000000000000000000494371559', '0.00000000000000000000000000000494371558998398758931188718756430525144657522366194157303586974', 40, 6); + T('-794260065998077.13884134275780911657238759893', '-794260065998077.13884134275780911657238759892090024486502952023782930417809262337', 29, 3); + T('7838449608010724090333915161039617854245', '7838449608010724090333915161039617854245', 22, 2); + T('-0.000000000000000000000000090299235692899474107765497', '-0.00000000000000000000000009029923569289947410776549697487571276313069', 51, 6); + T('129880371850258.61412133178439830260206194863575968506722', '129880371850258.6141213317843983026020619486357596850672151597348420116071764738002312480591', 41, 2); + T('0', '-0.000000000000000000000000000069654324810754007197818319458155515746102410831', 16, 6); + T('6917074928997406802340600287671366643463094979793703', '6917074928997406802340600287671366643463094979793703', 11, 1); + T('638352.2306719047482582143371628643608514910846959631257', '638352.23067190474825821433716286436085149108469596312565254436460123392767413281842895306628777', 49, 2); + T('7707946181531948', '7707946181531948', 15, 2); + T('-309838422086.048', '-309838422086.04808185', 3, 1); + T('2192824211.0080201985789590980919632264255672632048439891468', '2192824211.0080201985789590980919632264255672632048439891468602698480648434545311112376637021504392', 49, 3); + T('0', '-0.00000000000000000000000003969191310224666076414045470704912231091500221968441708', 21, 2); + T('0.000000059490243929978874247171531061445881135951312465129', '0.000000059490243929978874247171531061445881135951312465128875040394691104895', 57, 2); + T('0', '0.00000000000000000000000000000000000000000000430795892406074968248098271778852650237875158191', 8, 3); + T('0', '0.00000000000000000000000000000000000000005514079663792325895423321318316302278796368854622155', 34, 4); + T('493569761100274010110454077911624728967134', '493569761100274010110454077911624728967134', 3, 1); + T('0.0000000000000000000000002350261513856073030241856209142', '0.00000000000000000000000023502615138560730302418562091419767176841', 56, 2); + T('0.000000000001', '0.000000000000000000000046445881046455824754584852684456291036351797', 12, 2); + T('-5908575948461246157379027387757419774048142302098485973238118063421813737397525', '-5908575948461246157379027387757419774048142302098485973238118063421813737397525', 34, 0); + T('0.000000000000000005399089004454655777227', '0.00000000000000000539908900445465577722722971033069332071477587781', 39, 4); + T('0.00000000000000000000000946098557678120770671083814', '0.000000000000000000000009460985576781207706710838140980751323648544309161', 50, 1); + T('0', '-0.0000000000000000000000000000000000000000440403318867241576885154196', 0, 5); + T('3747046262', '3747046262', 5, 1); + T('0.0000001', '0.0000000000000000000000000000000000758646', 7, 2); + T('0', '-0.00000000000000000000000009', 15, 5); + T('596882052577426293863257301421465966502279', '596882052577426293863257301421465966502279', 33, 0); + T('4473039625977222144334479458063492239418825.96014198784271458', '4473039625977222144334479458063492239418825.960141987842714579094764752465747291142009', 17, 2); + T('0', '0.000000000000000000000000000000000008840970191233691325423106101165338878559781109762868155273', 30, 5); + T('0', '0.00000000000000000000000000000004', 16, 5); + T('169029712348.55170414716062751882592912346872779338106493155966548277055', '169029712348.551704147160627518825929123468727793381064931559665482770557368651', 59, 1); + T('-40067736333095467.909018103042482184697237903897840593507536857833592926589', '-40067736333095467.9090181030424821846972379038978405935075368578335929265886811466250958381', 57, 0); + T('-879372926673376715647525088389987030762829133462771771854', '-879372926673376715647525088389987030762829133462771771854', 12, 3); + T('29923919417788684712505451388250973913525516205739.62177676', '29923919417788684712505451388250973913525516205739.621776762470308785065158523', 8, 5); + T('-50200282715661012003363003', '-50200282715661012003363003', 6, 0); + T('0', '-0.000000000000000000000000000000000000000000000011547', 26, 5); + T('5538533228138305238117805063', '5538533228138305238117805063', 0, 0); + T('-8.98259597', '-8.9825959693939731006579032794091529508335050728015406034432905524309056850714530113740093', 9, 0); + T('-7138142982581499581552578584558628530515907316812965044194805157928305296221837271', '-7138142982581499581552578584558628530515907316812965044194805157928305296221837271', 25, 1); + T('-414052004150361683820310924925020.9862395245441307980875407937909', '-414052004150361683820310924925020.9862395245441307980875407937908147411525882356716741678', 31, 3); + T('-503755672587004363319584711242281208', '-503755672587004363319584711242281208', 0, 2); + T('-0.0000000000000000000000000000078587947', '-0.00000000000000000000000000000785879472681', 37, 1); + T('-3', '-3', 0, 2); + T('724326828597266930679679932585984135363842086368099478984203778942630037200185834576870973751', '724326828597266930679679932585984135363842086368099478984203778942630037200185834576870973751', 58, 0); + T('0', '-0.0000000000000000000001069196569505157465239433501017695267116353907894886133969', 17, 5); + T('85972608415515722814484953328108168327861432', '85972608415515722814484953328108168327861432', 27, 3); + T('735203353605367618463183405487305335425', '735203353605367618463183405487305335425', 3, 4); + T('-0.000000000000038685598587815953783879233', '-0.00000000000003868559858781595378387923293510596996438543568027764671', 39, 4); + T('39417777876786859925775897228.414515103190999545938444157261853177310365', '39417777876786859925775897228.4145151031909995459384441572618531773103646804525566998911941365927', 42, 6); + T('-0.00042729698662369', '-0.0004272969866236854339301384420491548821671090593596154031221535925979534328791', 17, 3); + T('-0.001', '-0.000000000000000000000000000000000005405329234046634574698589533972367873335830589026185244', 3, 3); + T('780253449349101270418037346037809619092763848109347741511253928090145408496147938502521', '780253449349101270418037346037809619092763848109347741511253928090145408496147938502521', 54, 4); + T('-0.00000000000000000000000000000000067451325390149', '-0.0000000000000000000000000000000006745132539014862711234', 47, 0); + T('31.0602835210115', '31.06028352101159116694707249229172391419071049341139', 13, 1); + T('0.0000000000000000000000000000000000000000000000000495', '0.000000000000000000000000000000000000000000000000049499482322322842956811022466314', 54, 0); + T('0.00000000000000000000000000036747356681216113823925277207', '0.0000000000000000000000000003674735668121611382392527720704138622451221314733501', 57, 1); + T('320701762086356051254296033221502209341446339599208346957463888343997136', '320701762086356051254296033221502209341446339599208346957463888343997136', 32, 0); + T('0.0000000000000000006229756350932003529439584563700569061023', '0.0000000000000000006229756350932003529439584563700569061023', 59, 0); + T('-0.00000000000000000000000000000001', '-0.000000000000000000000000000000000002779554968030959772451850537321855864675620017588372276903500536', 32, 3); + T('19504345494555478351182477703565457647566876858685627027379505944698694624726169090861984', '19504345494555478351182477703565457647566876858685627027379505944698694624726169090861984', 0, 4); + T('-884684852128576325857920870487060224224863003891902747660876195738072', '-884684852128576325857920870487060224224863003891902747660876195738072', 29, 2); + T('-0.00000000000000001927120482', '-0.000000000000000019271204816104208235432769229247337783831896121690184707573452963345555747139521261', 26, 3); + T('-17476187434.5449326082784577197411497434939321355651616981523713348786', '-17476187434.544932608278457719741149743493932135565161698152371334878519825208420735438717588271', 58, 3); + T('0.000000000000000000000000000000000000000000000000671942359', '0.000000000000000000000000000000000000000000000000671942359005812', 59, 1); + T('0.0000000000000000000000000000000004917118136701612', '0.000000000000000000000000000000000491711813670161116275010479557699441078855323071908', 49, 0); + T('634166172293272998158876.8413', '634166172293272998158876.84128062603520572376508413295607032369731651393103539143496669193918096843', 4, 0); + T('-28119944334730255826834221613922194267786170327968560369991839067', '-28119944334730255826834221613922194267786170327968560369991839067', 32, 6); + T('0.00154819734046993', '0.00154819734046992352816640604555843660775840335436322950452318455817', 17, 0); + T('-105913645497507508669973802578229519978763548843414114661.54980455412849338374', '-105913645497507508669973802578229519978763548843414114661.549804554128493383737493', 20, 4); + T('7289695139546080448297917061342289649234847530317672856838500148', '7289695139546080448297917061342289649234847530317672856838500148', 20, 1); + T('0', '0.000000042979420754347314988434544000447696776811769466455886485920655', 0, 4); + T('0', '0.000000000000000000000000000000000924077178027327', 24, 6); + T('282942634910281488152070543.81977405730745731368050238', '282942634910281488152070543.81977405730745731368050238222825081313', 26, 5); + T('9829583855774518751527887659888828937143309416650.01061691363', '9829583855774518751527887659888828937143309416650.010616913621011666291387767132900103741582580722946', 11, 2); + T('2843.5579809036184', '2843.5579809036184434137308509550969034869063413306363790685675', 13, 3); + T('0.0000000000000000000000000000006935112798', '0.000000000000000000000000000000693511279803301217125480155013139742885382224949324725789805812', 40, 5); + T('38402002761517.0373', '38402002761517.03726339201008642458566869258242930397372981070695839443682553444750792077030923352', 4, 2); + T('-0.00000000000000001', '-0.00000000000000000000000000000000000284', 17, 0); + T('-0.00000000000000000000000000000000000000000328559961', '-0.0000000000000000000000000000000000000000032855996112178825812918129', 50, 2); + T('-10857376233280.74203', '-10857376233280.74203521516266128862336259662162270285388060400166956185959712257522107', 5, 2); + T('-0.00000000000000000000000000000001', '-0.000000000000000000000000000000011428328539927202527982255539515744018395155', 32, 1); + T('0', '0.0000000000000000006362859957256', 11, 4); + T('4325993183488742208455442659071054631148', '4325993183488742208455442659071054631148', 11, 3); + T('-1163899294989774891167097029980639467528238979769081614588667904', '-1163899294989774891167097029980639467528238979769081614588667904', 27, 3); + T('-0.000008771176272398358315944222330846161437656443089', '-0.000008771176272398358315944222330846161437656443089372426117023897251811651901343373735604735', 51, 2); + T('-0.000000000000000000000003961015971842', '-0.000000000000000000000003961015971841840897153173232191143604645950090459018394', 36, 3); + T('-0.000000000000044516333', '-0.0000000000000445163325234697173332966370812630194498631820837056547152354402952422626816765', 21, 0); + T('-0.001', '-0.000000000000000000000000560288645294823225485858180788451420057727431', 3, 3); + T('70431396474321596927755.0616724357770297517853368489945852116010015382199953', '70431396474321596927755.061672435777029751785336848994585211601001538219995373286052198980239404', 52, 1); + T('-290563347.4018618590644496547932201955716045339506671235383081837373', '-290563347.40186185906444965479322019557160453395066712353830818373739840892194032111993775', 58, 1); + T('-49838122704426512042478', '-49838122704426512042478', 12, 4); + T('65731122722942661959967857762.18', '65731122722942661959967857762.18226768355365269085129302733326389972791821455019761189700189', 2, 4); + T('684132827465730082618383537053250641255400578134', '684132827465730082618383537053250641255400578134', 39, 1); + T('710427365331082486088196567.85693834564371170948582954685019', '710427365331082486088196567.8569383456437117094858295468501870885566575655950543328963118398231759', 32, 4); + T('36646445.4', '36646445.42824516523285194093354092096642673855547686910006', 1, 4); + T('0.43424917263886958982405140577413037118', '0.43424917263886958982405140577413037118797467795184', 38, 1); + T('-0.00000000000000000000000036588414680611016888031201521581', '-0.000000000000000000000000365884146806110168880312015215814', 56, 5); + T('-0.00000000000000000000051018357371038710352736277553359016842', '-0.0000000000000000000005101835737103871035273627755335901684125664187418843827676645536966728787', 59, 3); + T('-35159732781823.97716511119720206064558667', '-35159732781823.977165111197202060645586672946470926242812549089110584121041', 26, 4); + T('0.000000000000000000000000000000000003364306363591', '0.000000000000000000000000000000000003364306363590521522380481558802243742946674208931', 48, 4); + T('-4306747914757314388890273349986190769173944.39291819807120899471231887129063365500089582609', '-4306747914757314388890273349986190769173944.39291819807120899471231887129063365500089582608837', 47, 3); + T('-0.0000206161005604222009966692502', '-0.00002061610056042220099666925021597014337038232489136426449787194485033490838383', 31, 5); + T('29588529819920739172563477650035803968437251317221514791', '29588529819920739172563477650035803968437251317221514791', 38, 4); + T('0', '0.00000000000000000000000000000076512226709342597183392545931193073264251232258187043154966155', 10, 4); + T('642634746714122.488629063706747265885497766263668674846', '642634746714122.4886290637067472658854977662636686748455506370584335783149463152080002791966876190272', 39, 5); + T('-0.000000000001', '-0.0000000000000000000000068031607833728788218500078443799438145', 12, 0); + T('4478793059557.919366066899688681937166624937', '4478793059557.919366066899688681937166624937037651207942775207986303596524642642692579', 31, 1); + T('719126016681991174787244179437135662886106', '719126016681991174787244179437135662886106', 21, 6); + T('612370379.042280015162966981091543536169122', '612370379.04228001516296698109154353616912118620911001007', 33, 0); + T('-0.000000000000000000381148646471375542749', '-0.00000000000000000038114864647137554274933758', 39, 1); + T('-0.00000336921984240686812663817912975898', '-0.00000336921984240686812663817912975898003855606655763928424753588827973199516045', 38, 1); + T('6614908420764830574613829691575811991052782880888895087915', '6614908420764830574613829691575811991052782880888895087915', 1, 5); + T('-75576843314854333307451548', '-75576843314854333307451548', 8, 2); + T('-7094775936348915.769263075129454561542743852557970402', '-7094775936348915.7692630751294545615427438525579704015758356635999962', 36, 4); + T('0.000000000000000647255404244969058746125607', '0.0000000000000006472554042449690587461256070155216132767410199433477488145722851174', 43, 4); + T('212191747967678055259704020533185819.7153877789442928970247278', '212191747967678055259704020533185819.7153877789442928970247278005685961467993140759589633126', 25, 5); + T('0.000000000000000000000000000000086866886236741', '0.000000000000000000000000000000086866886236741491884373982593431074047696748', 45, 5); + T('-21896707599295196444127', '-21896707599295196444127', 7, 6); + T('67963466958486868433411681965', '67963466958486868433411681965', 8, 1); + T('-0.0004618114320999748548', '-0.0004618114320999748548227742586597847789768814695996979397676648662277615278571112727802', 22, 1); + T('0', '0.000000000000000000000000000000000000000072014201946018446425103586624', 34, 3); + T('0.000000000000000000000000040626999', '0.000000000000000000000000040626998084581879309101940084150929007748602990641311915569084218', 33, 0); + T('-0.00000000000000000000000000000000000002364670058488838781', '-0.000000000000000000000000000000000000023646700584888387803963852870078295754301293417634319', 56, 0); + T('-61312195050009621627250721752682.05458', '-61312195050009621627250721752682.05458776416651498653588646631355122', 5, 2); + T('88558823477934754368770485901911168548905661612129649349536492903025217066', '88558823477934754368770485901911168548905661612129649349536492903025217066', 27, 3); + T('-5761274593909054578402071821461472994565942226296450524728000900348368713263854424411989', '-5761274593909054578402071821461472994565942226296450524728000900348368713263854424411989', 54, 4); + T('4397525934482', '4397525934482', 10, 1); + T('0', '0.000000000000008', 3, 3); + T('3832505074710.8772241868692955359876737605513385536', '3832505074710.8772241868692955359876737605513385535657156382235008771952598281484', 37, 5); + T('0.0000000000000000000000000000000000000000000064039785838957', '0.00000000000000000000000000000000000000000000640397858389567536112989058804434974', 58, 6); + T('6899986941802317801470081277005392880851864737732161265779438709', '6899986941802317801470081277005392880851864737732161265779438709', 36, 2); + T('0.048906322648425185632628713058196452313509', '0.0489063226484251856326287130581964523135085310426446391', 42, 5); + T('-29068667316141265922020323299656223961691022983876401059969277924346', '-29068667316141265922020323299656223961691022983876401059969277924346', 52, 1); + T('57896564283529490722728198636247192473162.955437706', '57896564283529490722728198636247192473162.955437706585876490347082', 9, 1); + T('-1377052660765266598224922578884764678982220316470617198042071.84', '-1377052660765266598224922578884764678982220316470617198042071.842763168339803148921', 2, 6); + T('-0.0000008472294237476439209693038490556088683', '-0.00000084722942374764392096930384905560886836719554554921990211', 43, 2); + T('-0.00000000000006211378313284557438319018', '-0.0000000000000621137831328455743831901849526312006248559047579838', 38, 6); + T('-64132448927708626844067839788020.56104426721067307770150847932963341750262', '-64132448927708626844067839788020.56104426721067307770150847932963341750262451491448713527', 41, 4); + T('-0.00080510769276', '-0.0008051076927558161863905844170590891349375387966097254255501665792278513428990177180729', 14, 4); + T('-0.000000000523495070412194527222', '-0.000000000523495070412194527222245530916445', 30, 6); + T('-776981501784122653016725778489064077038674642417508137241453166338683', '-776981501784122653016725778489064077038674642417508137241453166338683', 25, 6); + T('-85.754361554275952592904696122168206579', '-85.754361554275952592904696122168206579375505261', 36, 6); + T('41971686031617689086324682083921394293937303185646952166039268116965193583', '41971686031617689086324682083921394293937303185646952166039268116965193583', 7, 5); + T('0.00039420287057734077878369443635344083421129327830247522826', '0.0003942028705773407787836944363534408342112932783024752282629774898259222473719', 59, 3); + T('0.00000000000000000000000000000000000000000000000675866720473', '0.0000000000000000000000000000000000000000000000067586672047328993602503820470338', 59, 5); + T('0', '-0.000000000000000000000000000000000000000000000088705230880406784828084160640801289390145869866', 36, 1); + T('-304191535324135351444668650070326671', '-304191535324135351444668650070326671', 28, 0); + T('-0.000000001', '-0.000000000000000000000000000000000000645202999', 9, 3); + T('-1475932977772754862911365548920235009', '-1475932977772754862911365548920235009', 1, 1); + T('0.00000000000000748482924758', '0.00000000000000748482924758907665350364240578489492856151184272179973', 26, 1); + T('-1', '-0.0000800368117241283577308465283698286330423189888237592540844483', 0, 3); + T('0.00000000000000000005436973621557718727915791605', '0.0000000000000000000543697362155771872791579160464793433', 47, 4); + T('0', '-0.000000000000000000000000008105812474775967121736315163', 10, 2); + T('-162061415319361123389400237365697567694754077666970.95367098983987825787039', '-162061415319361123389400237365697567694754077666970.95367098983987825787039768461541526', 23, 1); + T('-0.00000000000000000000000078141830260660528317962609581', '-0.0000000000000000000000007814183026066052831796260958153167081281', 53, 2); + T('-760450372966873218121690338416694511378045594432280482201.6', '-760450372966873218121690338416694511378045594432280482201.5743953451455', 1, 6); + T('-8969924824887750.078167576440491913960555993', '-8969924824887750.0781675764404919139605559934327012046423719029', 27, 6); + T('-0.00000000000000000000000000000000000000000008850594039644162', '-0.00000000000000000000000000000000000000000008850594039644162037424244532346653', 59, 2); + T('-260213417057955846142647463609725738084865895592932493537647341857', '-260213417057955846142647463609725738084865895592932493537647341857', 51, 2); + T('565141621099385566886468464466', '565141621099385566886468464466', 10, 1); + T('83664.29974759139108443286033487', '83664.2997475913910844328603348762233403', 26, 1); + T('159684867991933938188684086.84829503153331708926629620984773984546340485586957818589', '159684867991933938188684086.84829503153331708926629620984773984546340485586957818589283205', 56, 4); + T('4783482240722.889565506051950025731026748125580032', '4783482240722.88956550605195002573102674812558003270323257226548107196735812', 36, 1); + T('0', '0.0000000000000000003', 9, 1); + T('-73191538351494680542101.097679556493531497949879615674615869073278632189', '-73191538351494680542101.09767955649353149794987961567461586907327863218941724713424903198', 48, 6); + T('1377196679485199902841228391473638877532', '1377196679485199902841228391473638877532', 20, 0); + T('-17772153798727918242886392361333023042650831518530553', '-17772153798727918242886392361333023042650831518530553', 46, 0); + T('0.08328506397736199', '0.08328506397736199281189505020297381756462266529288847578', 17, 6); + T('0.000000000000000000000073181265651336435623978981763', '0.000000000000000000000073181265651336435623978981762922547674290225409720410306838731933043556', 52, 0); + T('2290053898142311723842871344607971300300.4', '2290053898142311723842871344607971300300.434151478993367452964917933417740817968087394784172', 1, 4); + T('-4526903994128138106185254976553.417454138027126670650882487065659163773887419248789373', '-4526903994128138106185254976553.4174541380271266706508824870656591637738874192487893725731607711', 54, 4); + T('0.000000000000000000000000000004529650848633752087137797', '0.00000000000000000000000000000452965084863375208713779692', 54, 2); + T('41790148346489387876273166411501052202', '41790148346489387876273166411501052202', 8, 0); + T('-0.000000000069328660259658436177', '-0.0000000000693286602596584361762589565091715124753019116431269', 30, 0); + T('934822253075684362315304330796079406852179', '934822253075684362315304330796079406852179', 20, 0); + T('6138685955473706895.27191846437634217823067', '6138685955473706895.271918464376342178230674192673963926883446477458738606505318684196487099828273', 23, 1); + T('-4995207495760013820781008', '-4995207495760013820781008', 9, 5); + T('-315575628071433482711097581911695580094607581401113654130956785', '-315575628071433482711097581911695580094607581401113654130956785', 53, 2); + T('14237742301009518268544482664657681590264.3699281317800082179089', '14237742301009518268544482664657681590264.36992813178000821790889652431207007693905617376813211534954', 22, 6); + T('6933324085798448906217582066829684616544680559688340085427', '6933324085798448906217582066829684616544680559688340085427', 59, 5); + T('0.00000000000000076326740786404408348160812965284434866778', '0.00000000000000076326740786404408348160812965284434866778747625162316325969396896612585666', 56, 3); + T('0.000000000000086813905963104592136996896057455896843', '0.000000000000086813905963104592136996896057455896843175022732573388730069970550757', 51, 5); + T('51801898867306672572496403839561629956832174080646016677953156', '51801898867306672572496403839561629956832174080646016677953156', 8, 6); + T('-0.000000007315101480415581536176467876648223789983200337', '-0.00000000731510148041558153617646787664822378998320033685682677794506948090883516907520915603842', 54, 6); + T('0', '0.0000000000000000002560972936441568309868552845452461441', 1, 4); + T('-4148384973258837308705900867312127926039628611927712693805299864565985491', '-4148384973258837308705900867312127926039628611927712693805299864565985491', 57, 2); + T('0', '0.00000000000008081392179', 11, 3); + T('0', '-0.00000000000000000000000000000000000000000000000045718218551581160547165', 32, 5); + T('126371519643424683947919776390544767992024526388', '126371519643424683947919776390544767992024526388', 33, 3); + T('-148196', '-148195.22330505940168207920977604763714302872718112527157', 0, 3); + T('0.000000002384518595846426', '0.00000000238451859584642619680666569487976797096982144404778137134898742245621718069', 24, 1); + T('0.0000000000000000000001', '0.000000000000000000000000000000004625', 22, 0); + T('-16911.7419832374869', '-16911.7419832374868955960680613558461083659651878098', 13, 5); + T('-0.000012', '-0.0000122184223277020419635939917289023624698188785457519029895428324113502565328671558', 6, 2); + T('0.0000000000000000020288542156920825061442115612294420237', '0.000000000000000002028854215692082506144211561229442023610384333574312922', 55, 0); + T('-926348619407629319522119393447968619', '-926348619407629319522119393447968619', 9, 6); + T('0.000000000000000011172996664320313188853949533840233', '0.00000000000000001117299666432031318885394953384023300040666548394933514811631768406408144820507299', 51, 6); + T('8676085578448129636.46125142815995954615633699159686307427564866280997975', '8676085578448129636.461251428159959546156336991596863074275648662809979754896', 53, 6); + T('0.000000000000000000006911673453476612828647988180511', '0.00000000000000000000691167345347661282864798818051074447846', 51, 5); + T('0', '-0.000000000000000000000000000000000000000037274661429910134438335779699', 20, 6); + T('0', '-0.00000000000000000000000000000022912429406409774126564962929569092713860155341547', 5, 2); + T('0', '0.00000000000000000000007', 9, 4); + T('-0.000000000000000000000000000647', '-0.00000000000000000000000000064679122351281910373', 30, 6); + T('628253552286979258688877224011928439269818309', '628253552286979258688877224011928439269818309', 39, 2); + T('-7473225474290375395406057107593674409', '-7473225474290375395406057107593674409', 9, 4); + T('0', '-0.000000000000000000000000000000000000000000044980341254278389339188217614184616236700512663', 42, 1); + T('0', '-0.0000000000000000000000008169851496807201249112045355202923', 10, 4); + T('44979151873456538589159481816187996063744819950498068666276244930081', '44979151873456538589159481816187996063744819950498068666276244930081', 44, 2); + T('-5656502680950453.307129232', '-5656502680950453.3071292317099969560559506107', 9, 6); + T('0.000012916983213677608946870037474', '0.00001291698321367760894687003747317197534115902429539309092', 33, 0); + T('186614411842436994154261287798158888894696101481267805116', '186614411842436994154261287798158888894696101481267805116', 48, 4); + T('707.380045900803464776244462046183', '707.380045900803464776244462046182987', 31, 6); + T('632194297368023228055660745485057870911107495734770014', '632194297368023228055660745485057870911107495734770014', 46, 6); + T('35280495669924811181641930079387327223136396121465358386312882495656970347', '35280495669924811181641930079387327223136396121465358386312882495656970347', 1, 4); + T('-6325867003724294.663698111988027895808356539794935974343081043', '-6325867003724294.66369811198802789580835653979493597434308104291301033018168875746098749871551255682', 45, 0); + T('-799353555477135814839251032527782560596504969267009081682848404947106492', '-799353555477135814839251032527782560596504969267009081682848404947106492', 39, 1); + T('66595791053662779211189537167463453717540557304309464', '66595791053662779211189537167463453717540557304309464', 27, 0); + T('86863819.0795207560566246205038942404911', '86863819.07952075605662462050389424049106413333666160054769765', 31, 4); + T('-0.000000000000000000000000000000001', '-0.00000000000000000000000000000000000000000000008', 33, 3); + T('0.0000000000000000275', '0.0000000000000000275440961091735938216613771820776939226812444657855328490901237788725', 19, 1); + T('0', '-0.00000000000000000000000000000000000000000000000225083583687450018290901147795588587262327956', 21, 4); + T('106844609528473355525467772516478055461312403965348968485756541728796', '106844609528473355525467772516478055461312403965348968485756541728796', 16, 4); + T('-0.000000000000000814523751192634198253241238297485319828', '-0.0000000000000008145237511926341982532412382974853198275271819634843873247036611', 54, 0); + T('2606400896622366889946488350737590139429931326875963144243247149520.3226059185533490213723413754', '2606400896622366889946488350737590139429931326875963144243247149520.3226059185533490213723413754', 28, 6); + T('-183452660943051448746754671284613', '-183452660943051448746754671284613', 10, 2); + T('839807437987291944449694079569638219', '839807437987291944449694079569638219', 36, 0); + T('-8132217764461224416834766794322810048760447551363872095', '-8132217764461224416834766794322810048760447551363872095', 48, 0); + T('-0.0000000000000000000000000000001', '-0.00000000000000000000000000000000084013749996116337258106', 31, 3); + T('0.00000000000000000000000000000000056286653735314698', '0.000000000000000000000000000000000562866537353146980064941975206481554805', 52, 3); + T('8826215431283658953381909149090157677663835064029813383632728867019103467383915169736679', '8826215431283658953381909149090157677663835064029813383632728867019103467383915169736679', 35, 1); + T('65532958561624805787499.79879743257742173928432822969962227122981569885', '65532958561624805787499.79879743257742173928432822969962227122981569885', 48, 1); + T('-2776707353947863935313425463872380342255574023352080451291774137989569263228187316199185', '-2776707353947863935313425463872380342255574023352080451291774137989569263228187316199185', 45, 3); + T('84870733020575140260092508553754661695.368114319072', '84870733020575140260092508553754661695.36811431907190335719', 12, 4); + T('-83503440279939.973261442707162100212414583470064391568958643329', '-83503440279939.9732614427071621002124145834700643915689586433289964', 49, 0); + T('0', '-0.00000000000000000000000000000000000000000000000593635309628535746', 10, 2); + T('0.00001', '0.0000000000000000000000000000000000000000000005286316917406446218605705578095483616474', 5, 0); + T('0', '0.000000000000000000000000000000000000000008', 21, 1); + T('-0.000000000000000000000000000000896870792', '-0.000000000000000000000000000000896870791266', 39, 0); + T('6740911664689729', '6740911664689729', 17, 0); + T('-0.00000690323521226292545282', '-0.0000069032352122629254528255683555238', 26, 1); + T('-0.00000000000000000000913384438905427651481080851110444839', '-0.000000000000000000009133844389054276514810808511104448390238589693895571906', 56, 4); + T('-37939815047550295525500362964223610089693995885662719445639226194590163762795367', '-37939815047550295525500362964223610089693995885662719445639226194590163762795367', 40, 2); + T('0', '-0.000000000000000003', 3, 6); + T('0.000000000000000000000000000000005425', '0.000000000000000000000000000000005424109435043055109323846477896259', 36, 2); + T('-0.00864924723907831760464760343418947', '-0.00864924723907831760464760343418946520325901534', 35, 6); + T('0', '0.0000000000000000005374923', 14, 5); + T('11960649002', '11960649002', 11, 1); + T('6205972.6375129878468500799969491683169898210504634996318', '6205972.6375129878468500799969491683169898210504634996317075719512025074532662', 49, 0); + T('-0.0000327696652066428583356559', '-0.000032769665206642858335655876746559995630835559846294876125981984', 28, 0); + T('-7106283670343099889326720878025602271833620303', '-7106283670343099889326720878025602271833620303', 13, 1); + T('-0.000000000000000000000001', '-0.000000000000000000000000000000009', 24, 3); + T('-0.00001', '-0.0000000000000008', 5, 3); + T('-6133916442630955317842810214.86821373617414489008214917421152', '-6133916442630955317842810214.868213736174144890082149174211518886339289911249129630570965984027', 32, 5); + T('-23881.773402249', '-23881.7734022481', 9, 3); + T('-7943072313454728932408805268809876911677807547292409069069320924', '-7943072313454728932408805268809876911677807547292409069069320924', 53, 3); + T('-0.0000000000000000000000005184238277412160705490261079943', '-0.000000000000000000000000518423827741216070549026107994302914', 55, 6); + T('-6502553383150595', '-6502553383150595', 18, 6); + T('-0.00000000000000000000000000000000690227527', '-0.00000000000000000000000000000000690227526594856364875794508690356161782941768', 41, 6); + T('-0.056303708323832222458882734633919', '-0.0563037083238322224588827346339194', 33, 5); + T('146170653842047607933686838505110978214296', '146170653842047607933686838505110978214296', 43, 4); + T('-6440173.72698277131181168466528058795104036685676747477', '-6440173.726982771311811684665280587951040366856767474768344', 47, 3); + T('435822485701161806484754025865621399846162883184293991478109154521248459436', '435822485701161806484754025865621399846162883184293991478109154521248459436', 4, 3); + T('-0.000000000000000037815186790363', '-0.00000000000000003781518679036284917443497339141496107319487738088629444641566971505', 30, 4); + T('565930492095544460683321420785084911874956.4375793957430882229833768389375836010018', '565930492095544460683321420785084911874956.43757939574308822298337683893758360100179', 40, 2); + T('0.00000000000000000000004152', '0.000000000000000000000041522594866881469408628302850804768779275384292937914047860237548127164352', 26, 6); + T('-17034881662549539727165518222983064951722670573249', '-17034881662549539727165518222983064951722670573248.5125902187644045205097633', 0, 6); + T('276253842420715594878582609882869589958601896297494973', '276253842420715594878582609882869589958601896297494973', 36, 3); + T('-2486857760541953491833813995388.9805692056860091745889', '-2486857760541953491833813995388.9805692056860091745889748664644781', 22, 1); + T('-0.00000000001', '-0.00000000000000000000000000000000001343364842101594718687600286348068', 11, 3); + T('0.00000000000000000000000000000000000000000000007224', '0.0000000000000000000000000000000000000000000000722473881816060373641', 50, 1); + T('142224026751646621535876997526167808747124874491.8218160208781636', '142224026751646621535876997526167808747124874491.82181602087816353785918805465', 16, 2); + T('2054722951827331212352617437865565678128465963', '2054722951827331212352617437865565678128465963', 46, 0); + T('-0.00000000000000000259639195619', '-0.000000000000000002596391956187822298458567687533150431', 29, 0); + T('0', '-0.0000000000000000000000000000000000000000000000004783091262527', 35, 1); + T('0', '-0.00000000000000000000503086613010142201530941795090898678065118486089549316623317411283716858', 6, 1); + T('-679.96730494488662265292122816939430658266', '-679.96730494488662265292122816939430658266', 38, 6); + T('-4377850752966056', '-4377850752966056', 6, 5); + T('445003949563154132133680872348175496003398462600208906574865645004', '445003949563154132133680872348175496003398462600208906574865645004', 39, 2); + T('0', '-0.00000000000000000000000000000000000000001178758870852233489202054', 33, 6); + T('91936091236094033738149099398253993909296246976317855675164622956828', '91936091236094033738149099398253993909296246976317855675164622956828', 40, 4); + T('0', '0.00000000000000000000000000000000000003', 31, 1); + T('-898629194744631919581491799266418977651679996825530874', '-898629194744631919581491799266418977651679996825530874', 34, 3); + T('0.000003467700718336729714643811584256', '0.0000034677007183367297146438115842561720677348016451716438690590079270204', 36, 3); + T('-22546644480772822606187389406474962988389256779810505350888', '-22546644480772822606187389406474962988389256779810505350888', 52, 4); + T('-55082020290223830995673899832810918291437742407509337067868', '-55082020290223830995673899832810918291437742407509337067868', 2, 0); + T('1', '0.00000000000000000000000000000000000000007958953405109879', 0, 0); + T('-6621241335299355957642029172.6', '-6621241335299355957642029172.6111786502352678896678324397010972489567', 1, 4); + T('-0.0033627', '-0.00336269742972398707755429219378413396', 8, 0); + T('22743478716848471813054723697837.9399566865524', '22743478716848471813054723697837.9399566865524005957435185765916723113785', 13, 3); + T('0.0000000005992973504613566123673628822458384541', '0.0000000005992973504613566123673628822458384541', 46, 3); + T('1042630777875163117448109887506935525', '1042630777875163117448109887506935525', 15, 4); + T('221830139371014042990375785475202619672388755376281035547439322905698500192065908918841004849327', '221830139371014042990375785475202619672388755376281035547439322905698500192065908918841004849327', 1, 4); + T('-77589.796358', '-77589.7963584873098058997214465516938135824363', 6, 1); + T('0.000000000001819253160967', '0.0000000000018192531609674821174014441217356', 24, 5); + T('0', '0.00000000000000000000000000000023716920156897944671996308882014675', 13, 5); + T('-44856.778787975729305979715', '-44856.77878797572930597971463489707665657021962477424374876719956949220865646499239709551116', 21, 5); + T('-824225425379483553475089927776690875947364334175898675', '-824225425379483553475089927776690875947364334175898675', 2, 0); + T('87122038423032466553825622664295676697747152041634317', '87122038423032466553825622664295676697747152041634317', 31, 3); + T('-0.000000000000000070582005393075667', '-0.00000000000000007058200539307566721824589217372033295032', 33, 6); + T('489167543699462369.29206154', '489167543699462369.2920615397068117518054274410906616895686747969646065180181122832961', 8, 4); + T('0.000000000000000000000000000047024525824', '0.00000000000000000000000000004702452582390298338191679929233670770515206599960650313812431598721', 40, 2); + T('0.000000000000000000000000015966925641239639', '0.000000000000000000000000015966925641239638324777906483140603500193', 42, 0); + T('0.000000000000000000000000000000000001', '0.000000000000000000000000000000000000000072802411951783460267416348', 36, 0); + T('-7140703693356903422350486769685753717988557066347312584825633769978886.3629', '-7140703693356903422350486769685753717988557066347312584825633769978886.362931', 4, 2); + T('1736062301921704.3544399700210783', '1736062301921704.354439970021078301187861306249924535576', 17, 4); + T('2', '2', 2, 6); + T('0', '0.00000000000000000000000000000000000000000000000024894143738651545275937572115200791168651', 34, 6); + T('-68729847089572652805731356629429656670148403900488325598543', '-68729847089572652805731356629429656670148403900488325598543', 59, 6); + T('-346930759824.8932559917769593999', '-346930759824.893255991776959399952245588688', 19, 1); + T('-4340547831472081803462962486388614438943892232', '-4340547831472081803462962486388614438943892232', 48, 1); + T('61616001329905068913964', '61616001329905068913964', 16, 0); + T('0', '0.000000000000000006', 5, 5); + T('-49307863225330198431734', '-49307863225330198431734', 13, 4); + T('298024701456973658362011859788351474', '298024701456973658362011859788351474', 30, 5); + T('-425424728525125303177668913491238360367678741', '-425424728525125303177668913491238360367678741', 36, 2); + T('24056413149115583034277863478145', '24056413149115583034277863478145', 33, 5); + T('-68662564068039829470775924161168787917897062354279632533471702872755.986663', '-68662564068039829470775924161168787917897062354279632533471702872755.9866639308147823', 6, 2); + T('-27101699509736837178436357.31', '-27101699509736837178436357.3100268139', 4, 1); + T('0', '-0.00000000000000000000419594981553879981941810661', 1, 4); + T('273877393288860727439964596728486053482512130635.909', '273877393288860727439964596728486053482512130635.90913019', 3, 1); + T('102473879333862989052456171039164098', '102473879333862989052456171039164098', 15, 4); + T('-39381337887967273.903118568586532771031839637750510080526', '-39381337887967273.90311856858653277103183963775051008052576239248866475699378', 39, 3); + T('-3388998591124688079', '-3388998591124688079', 13, 5); + T('-150567903893972682463213974956', '-150567903893972682463213974956', 16, 4); + T('-0.0000000000000000000000000000000000000000493095312761862', '-0.0000000000000000000000000000000000000000493095312761861866451073373325095600742298256276', 55, 0); + T('-7953667604', '-7953667604', 5, 1); + T('4604171467545769381273154343552810484270535161', '4604171467545769381273154343552810484270535161', 40, 3); + T('590588071250370946139445102570765117263428130058924147992458327492312529138', '590588071250370946139445102570765117263428130058924147992458327492312529138', 23, 5); + T('-480177823684830812634801592253452743963534397293491478160746754380654483824166', '-480177823684830812634801592253452743963534397293491478160746754380654483824166', 50, 2); + T('0', '-0.0000000000000000000000038859594862', 21, 5); + T('0', '0.00000000000000000000748620339565797', 8, 5); + T('0.00002499835647695345918605661945571070775336188', '0.00002499835647695345918605661945571070775336187978592874439346863', 47, 0); + T('4159973699834074325565638', '4159973699834074325565638', 4, 5); + T('0.000000000000000000000055715176658', '0.00000000000000000000005571517665842097957139681288363708572', 33, 6); + T('0.00000001', '0.0000000000000000000000000000000000041593906324710134345258956249480933017685', 8, 0); + T('278216706345217684734', '278216706345217684734', 4, 0); + T('-515039538585', '-515039538585', 12, 5); + T('-5156282216060787005389201808449011961455755', '-5156282216060787005389201808449011961455755', 32, 1); + T('1771197246191236979629384473461.83606571991', '1771197246191236979629384473461.8360657199109008737', 11, 1); + T('0.0011131469353', '0.0011131469352378249447935166749689277812743785507290928314830661852468909137787363822177', 13, 0); + T('92115423409743', '92115423409743', 12, 5); + T('858.2661281409167634547302646312611320956987', '858.26612814091676345473026463126113209569860657925193123562', 40, 2); + T('-1', '-0.0719443', 0, 3); + T('-0.0000000000000009', '-0.00000000000000081331379483643709', 16, 0); + T('0.00002697436643419847452779353409412459199', '0.0000269743664341984745277935340941245919918623531756557204282278703617', 41, 5); + T('0.00000000000000000000001', '0.000000000000000000000000000000000000000000023801773695682720261287808392663674484132464627', 23, 0); + T('-0.00068344382770949159674695980739380635445', '-0.0006834438277094915967469598073938063544463198925827927897963802449983538', 41, 4); + T('0', '0.0000000000000000000000000000000000000000000000050279214787679199305', 11, 4); + T('-588947409514785639282485632722383004287882037069573499096951.3145927013550028697730488', '-588947409514785639282485632722383004287882037069573499096951.31459270135500286977304875961', 25, 6); + T('0', '-0.00000000000000000000000000000000186436816132981351522904214050221580878', 3, 4); + T('-2372.6417339151826508053284670230939641484', '-2372.6417339151826508053284670230939641484398', 37, 1); + T('62178674327740811042508553727964', '62178674327740811042508553727964', 27, 5); + T('0', '0.0000000000000000000000000000000547293246671362566489950300676458220362775126945519', 7, 4); + T('49251652967453539726484585223974655821592759', '49251652967453539726484585223974655821592759', 31, 5); + T('-296495898199.58115237407948666112', '-296495898199.5811523740794866611232178652873298488744263', 20, 6); + T('-95652710114780760171030049795936499140918623272399896688565724875008683384093', '-95652710114780760171030049795936499140918623272399896688565724875008683384093', 57, 1); + T('0.00000000000058426002118757843091739264518599980607', '0.00000000000058426002118757843091739264518599980606639684373685326021916693294', 50, 2); + T('2772843216253911884822930634835873229720748.35205347294264485414722818229074309092764957', '2772843216253911884822930634835873229720748.35205347294264485414722818229074309092764957', 45, 1); + T('0', '0.0002', 0, 1); + T('0.0000000000000000000009', '0.0000000000000000000009', 22, 4); + T('-0.00000063377460212762032425176962047901364151137812855454938', '-0.000000633774602127620324251769620479013641511378128554549388907545372024969906304253032', 59, 1); + T('-0.00000006646203569453454444708452552277428018333642748745699', '-0.0000000664620356945345444470845255227742801833364274874569813785409098392133873982373960550117596', 59, 0); + T('0', '0.000000000000000000000000000000000000000000018538496533514574221730165720097', 31, 5); + T('128484998383401376820534767951931012435370666908970446', '128484998383401376820534767951931012435370666908970446', 44, 1); + T('4387738573794731066916336352026833902940795.8852740466656380585076098286734723', '4387738573794731066916336352026833902940795.8852740466656380585076098286734723472438018787975', 34, 5); + T('-0.00000000000000000003405365175859259155568376', '-0.0000000000000000000340536517585925915556837608377203983174081729250328', 44, 6); + T('-187112408058.7234570771077', '-187112408058.723457077107737466758', 13, 5); + T('531063677635775810446921905944792595119327655554346497', '531063677635775810446921905944792595119327655554346497', 21, 1); + T('-0.0000000000000000000000006791908058045691073817', '-0.00000000000000000000000067919080580456910738169344941664639835178052777348953964845369', 46, 0); + T('307899704537986547769348847994164364550840818783793849762539', '307899704537986547769348847994164364550840818783793849762539', 14, 4); + T('-435801778695359687591423580.427694338967317762706300283493834282886549420729852', '-435801778695359687591423580.427694338967317762706300283493834282886549420729852017', 52, 5); + T('-0.00000000003917777044145525747611380850933123472924171119', '-0.000000000039177770441455257476113808509331234729241711186132211007540710149907', 56, 6); + T('62928039693272623682271.27541008736912709308116480951633335017303574647668632724622', '62928039693272623682271.27541008736912709308116480951633335017303574647668632724621535388', 59, 5); + T('-0.0000000000000000000000000000000000000000001', '-0.000000000000000000000000000000000000000000000007000182632515075', 43, 0); + T('907824547333163182771486955205512585202844466110951892146887907879200198061176', '907824547333163182771486955205512585202844466110951892146887907879200198061176', 24, 1); + T('-1544386137499412381886438484', '-1544386137499412381886438484', 25, 6); + T('-0.0000000000000000000000000076', '-0.00000000000000000000000000768056506477829996048633181519', 28, 2); + T('4890192706601958001267805328506308744627862445358671612', '4890192706601958001267805328506308744627862445358671612', 43, 4); + T('-0.001', '-0.000000000000000000000000000000000000000003024424622329171771637603264679763397312441', 3, 0); + T('-0.000000232115524236009432926', '-0.0000002321155242360094329258', 27, 0); + T('49465993391406248092231222.0801712487751425033643', '49465993391406248092231222.08017124877514250336430361542116940315722', 23, 3); + T('4180158455264386144163419573028038177659222536720952339274298247333816505172', '4180158455264386144163419573028038177659222536720952339274298247333816505172', 45, 3); + T('-0.000000000000000000000000000060254658062', '-0.0000000000000000000000000000602546580626641397565454810564671579837553', 39, 1); + T('0.0000019257899344941444964', '0.00000192578993449414449637565345019538269354146347', 25, 0); + T('0', '0.0000000000000007', 13, 4); + T('-0.000000000000000000000000000000000000007', '-0.0000000000000000000000000000000000000077279149653677340608947700558217181', 39, 2); + T('-448376506822431348847333799886', '-448376506822431348847333799886', 0, 1); + T('69867122143002481442816258286999167805918307181607743074904979008771841710463824003', '69867122143002481442816258286999167805918307181607743074904979008771841710463824003', 27, 3); + T('2178943445964550611', '2178943445964550611', 17, 0); + T('588387425474973011615137458350384132121857043644620739740517932.762', '588387425474973011615137458350384132121857043644620739740517932.76207074', 4, 3); + T('0.000000000000000891030290232918573851', '0.0000000000000008910302902329185738510097719', 36, 1); + T('3082156529442568521513326353208207517976381714116608.9434238802561825638640926017', '3082156529442568521513326353208207517976381714116608.943423880256182563864092601674468', 28, 6); + T('-269047218334585112717070569715', '-269047218334585112717070569715', 20, 3); + T('794322372403220770530191708', '794322372403220770530191708', 17, 4); + T('-0.0000088706942874980615965377284', '-0.0000088706942874980615965377283623276238900639610011564988041972', 31, 3); + T('-18762392383129800103435772599858039146861024540145071643', '-18762392383129800103435772599858039146861024540145071643', 39, 0); + T('0.00000000000000000005418504797326945324468962601702987844065', '0.000000000000000000054185047973269453244689626017029878440651506342739333005455074', 59, 6); + T('0', '0.00000000000000000000000000000001455552106862800727428835727449445351956', 2, 6); + T('-845184120395843729177378264132032391293931221704496190873', '-845184120395843729177378264132032391293931221704496190873', 3, 2); + T('-22928704982133259844820264310150045267.8329497378477851667', '-22928704982133259844820264310150045267.8329497378477851666787234740604182218327262831065786', 19, 0); + T('-753282787421295813612681585527569219114746603', '-753282787421295813612681585527569219114746603', 6, 3); + T('0', '-0.000000000000000000000000000001114691322399392322421', 0, 5); + T('-4470337.856339789341346743328195402056', '-4470337.8563397893413467433281954020555766465023528610798962516623771308', 30, 4); + T('-30259936572085000771571577042343302258005437254494921143265833920775250590681264568', '-30259936572085000771571577042343302258005437254494921143265833920775250590681264568', 37, 5); + T('0.00000000046019029818715', '0.000000000460190298187149944541124538982908213632543612794526400527723071339103700250052883', 24, 2); + T('488789246040736024354688778283025974423012332029061586465391.05657634342713960705278', '488789246040736024354688778283025974423012332029061586465391.0565763434271396070527794705650531927', 23, 0); + T('-6754886810347257311369815292802990704436078888019328596021676996446581588371838421302183', '-6754886810347257311369815292802990704436078888019328596021676996446581588371838421302183', 17, 5); + T('-2219143949146.543192979755734', '-2219143949146.5431929797557336049181837818262147309272936749984443073357094259', 15, 3); + T('25642596132200847246923459489123979011650156', '25642596132200847246923459489123979011650156', 34, 4); + T('-869559474794910580.4702422545', '-869559474794910580.470242254580425701508344203389450340088616045503344062196', 10, 1); + T('873581632317363936846913522953208947257070629891494175.1987423890811633389352647', '873581632317363936846913522953208947257070629891494175.19874238908116333893526471237141433112991286', 25, 4); + T('-149595188298843646987316097444673881', '-149595188298843646987316097444673881', 36, 5); + T('1314405778222365740681306509390140309', '1314405778222365740681306509390140309', 23, 5); + T('-43669276969497246217249931136079143593668679948650792993674045.547575505339753429132018021618569924', '-43669276969497246217249931136079143593668679948650792993674045.547575505339753429132018021618569924', 36, 2); + T('778437789780670221576981092962324328921406844694078635347625850330135239051380.593313827', '778437789780670221576981092962324328921406844694078635347625850330135239051380.5933138270296', 9, 3); + T('0', '-0.000000000000000000000670532931448014402320805028695397125747680104246730672291510758362070539', 0, 4); + T('-269860226.555168110686802', '-269860226.555168110686802406496811651255242690733933523277397815449890266344932488292555', 15, 6); + T('-0.00000000000000000000000000000000000001', '-0.00000000000000000000000000000000000000000000001', 38, 3); + T('8255334830426368087757667915495316773111372', '8255334830426368087757667915495316773111372', 20, 4); + T('-498.288', '-498.2877551595647284860735236925190739383420573843285964682707105606057458671350918750993', 3, 6); + T('90275906866311700418329778663.453021601770244972374', '90275906866311700418329778663.4530216017702449723738726140283616676480577425596798642530312', 21, 4); + T('-58249061380532235.683643040770210682572744295', '-58249061380532235.68364304077021068257274429468', 27, 4); + T('-0.00000000000000000005874732963', '-0.00000000000000000005874732963903011696675103873912247327240795349388835921', 29, 1); + T('-0.00000000000000000000000891849846684592', '-0.00000000000000000000000891849846684592', 39, 0); + T('-317305030488680572949072951462138920358812787719661772458316652068525445', '-317305030488680572949072951462138920358812787719661772458316652068525445', 58, 0); + T('154344118085858988045736881532862450933453810805000737193200.8311028461495237875501818767647353', '154344118085858988045736881532862450933453810805000737193200.8311028461495237875501818767647353', 34, 0); + T('-0.00000000000000000006151217562036449', '-0.00000000000000000006151217562036449913306415978013249544', 35, 2); + T('0.00000000000000000000000000000000000000635481634', '0.000000000000000000000000000000000000006354816333226622007293085007542785238974690455300658', 47, 0); + T('-72104134714968004316834628241028266449839170680955147176037571084261', '-72104134714968004316834628241028266449839170680955147176037571084261', 54, 6); + T('449011810931249785286308861907624', '449011810931249785286308861907624', 8, 0); + T('-5344557217.952340951684183652094', '-5344557217.9523409516841836520936077337920245188603000165', 21, 0); + T('26763304918.6071132280297527249552897014', '26763304918.607113228029752724955289701414261410830249608167321604531533418376564217', 28, 5); + T('-5.9354', '-5.935401329955359917419849571921209501551', 4, 2); + T('0.0000000000000002842770147295499709278', '0.000000000000000284277014729549970927748689066908625707440474139245449815727102349121121703585184', 37, 2); + T('-0.00000006536334906818', '-0.00000006536334906818007245367103563161239', 21, 1); + T('3987294744.961449803344679269558748056110724042180299042772', '3987294744.961449803344679269558748056110724042180299042771934156686853', 48, 0); + T('3670550979301523677411452367600923241928927', '3670550979301523677411452367600923241928927', 16, 6); + T('8186460244315446238612369289', '8186460244315446238612369289', 14, 5); + T('0.0000000000001205038039008310782739771735999409', '0.0000000000001205038039008310782739771735999408450010198815947147909379151151097718078660678', 46, 2); + T('17790773861566.9127491793774523928', '17790773861566.9127491793774523927742086885', 19, 6); + T('-45973691512980904832772447657128646184729588347720906399317356124291', '-45973691512980904832772447657128646184729588347720906399317356124291', 6, 0); + T('-0.000052578846594552360365003261412', '-0.00005257884659455236036500326141292751072228323274374276273184032573733734930586182920538869496014', 33, 1); + T('-8451030.38187527151851343992271353120147534273330863994132400507052', '-8451030.38187527151851343992271353120147534273330863994132400507052', 59, 5); + T('-6913729808236204745703016735366143142854267317875', '-6913729808236204745703016735366143142854267317875', 48, 6); + T('0', '-0.000000000000000000515816546619846222740519650659244354', 14, 1); + T('-0.0000000000000000000000000059770244313969237968717', '-0.0000000000000000000000000059770244313969237968717414549698422124221759010405670994', 49, 2); + T('727784599805850866261167964.5891386990587296184', '727784599805850866261167964.5891386990587296183810717', 19, 0); + T('60455336921761571297330062708834209593753553971798623628973754356', '60455336921761571297330062708834209593753553971798623628973754356', 34, 5); + T('0', '-0.00000000000000000000000000000000000000000000002', 14, 2); + T('-0.1', '-0.0000000000000000000000000000000000000000268246264078205', 1, 3); + T('7867937945277457921518274222617202749835981396620016683948282927454552756', '7867937945277457921518274222617202749835981396620016683948282927454552756', 45, 5); + T('10798101545970440531103848', '10798101545970440531103848', 17, 5); + T('-662862030859665015252209082020387338342609', '-662862030859665015252209082020387338342609', 41, 6); + T('-44509783950769310032819987921393220034667288606302636', '-44509783950769310032819987921393220034667288606302636', 10, 2); + T('0.000721', '0.000721015686405377087216290192146931451368869346018108792313779', 7, 3); + T('-429429431898.92798147529486', '-429429431898.9279814752948602', 15, 5); + T('0.000000000001', '0.00000000000000000000004107', 12, 0); + T('-1523647444816999427298977167480522782325629813153844', '-1523647444816999427298977167480522782325629813153844', 27, 0); + T('159233142565064172480281097992202157794955635367088722816913405230709', '159233142565064172480281097992202157794955635367088722816913405230709', 52, 3); + T('17734356336750552208117881', '17734356336750552208117881', 13, 3); + T('0.00000000000000000010516440931', '0.000000000000000000105164409309278409833867961542984330406756444964971586826869142', 29, 0); + T('-0.000000005607865232286053212511', '-0.0000000056078652322860532125106865502282497985819996577284499049194079530138833114274376005211', 30, 5); + T('-1848824671208162.036118636322531620559621761039257152', '-1848824671208162.0361186363225316205596217610392571519859349877420578173659325511361795', 36, 6); + T('474121748.258771413359324788', '474121748.258771413359324788219351236297274357376611118786304644016953198682051204228387618', 18, 5); + T('0', '0.000000000000000000000000000000000000002', 9, 6); + T('-4082518153742954140701880216101112933681579', '-4082518153742954140701880216101112933681579', 2, 6); + T('485561797431709913', '485561797431709913', 8, 5); + T('-0.00000005169583157473170767787', '-0.000000051695831574731707677872752277227315759207157035374591647416039798341232', 29, 5); + T('-31444130984617191013282867777267050079417810443829', '-31444130984617191013282867777267050079417810443829', 43, 3); + T('8800583786371595440869107', '8800583786371595440869107', 4, 6); + T('-8815.8895192223252405825465547234263054813143616472980391', '-8815.889519222325240582546554723426305481314361647298039143773292329917612441361288012832403085661674', 52, 4); + T('24193532123207943347431137579390758056362200617916927652557', '24193532123207943347431137579390758056362200617916927652557', 8, 6); + T('-1.337926538823846889672640236908474426590700086', '-1.3379265388238468896726402369084744265907000856185156132950540139555844532982184035787153238', 45, 4); + T('1558843239.299544313206143220207974', '1558843239.299544313206143220207974153124813171090852680122860660088788288026393496', 24, 3); + T('-59589972311323891941872406112978568670975162132927304.08231126490356', '-59589972311323891941872406112978568670975162132927304.08231126490356049195534195298897388522', 15, 1); + T('-743294747766629171048480641662764189036069326862056657538375964541286934', '-743294747766629171048480641662764189036069326862056657538375964541286934', 5, 4); + T('22265', '22265', 3, 4); + T('960209483951475422891115334433638881085096.26588580775357747606657536401221311373248396571', '960209483951475422891115334433638881085096.265885807753577476066575364012213113732483965707', 47, 0); + T('44550253.862798116411937890173846464380254722540077', '44550253.862798116411937890173846464380254722540076612180961686217459396341111804577388882586249791', 42, 6); + T('43402590248081760572362131719223.753209477296474800070796246196620361', '43402590248081760572362131719223.753209477296474800070796246196620360891', 36, 2); + T('23302193755473927447547.0400871612708276023203865329170219302115999767999', '23302193755473927447547.0400871612708276023203865329170219302115999767999489', 49, 4); + T('0.00000000000000000000000809577123038853204379', '0.0000000000000000000000080957712303885320437905131515608754123689963443056574402556634345', 44, 4); + T('5757764236108545477867413983', '5757764236108545477867413983', 19, 3); + T('0.0000000000000000000000000000000000000009', '0.0000000000000000000000000000000000000009', 40, 0); + T('3559280912885112533280423534223324103634509100163633301839596057', '3559280912885112533280423534223324103634509100163633301839596057', 59, 1); + T('-417080158865542582854655944868550771791.046398310335547707041055645769929951581637541553712', '-417080158865542582854655944868550771791.04639831033554770704105564576992995158163754155371200816', 52, 6); + T('89983719097904808464', '89983719097904808464', 1, 4); + T('-735429992378182205630619451123590.3947291140982175810651340488182275175', '-735429992378182205630619451123590.394729114098217581065134048818227517476', 37, 6); + T('419077969568256244823720087754694848763408887642073576695421791', '419077969568256244823720087754694848763408887642073576695421791', 36, 1); + T('191461.889031503960878427762073940304873639', '191461.88903150396087842776207394030487363817696768685154419315097935845754622181742599271', 36, 2); + T('-0.00000000000000000000062342', '-0.000000000000000000000623414', 26, 3); + T('127194045893446729075351171047', '127194045893446729075351171047', 21, 0); + T('-229500965923850.70051429223116003250968598721393599828363661825696333', '-229500965923850.700514292231160032509685987213935998283636618256963339786490679495749782904303115', 53, 1); + T('-0.0000000000000000001', '-0.0000000000000000000056041231775239402844541555853241836954476161592639531971958216635667906218', 19, 3); + T('0', '-0.00000000000000000000000000000000000000000000000037582095633137036754003160897330055440194309661', 35, 5); + T('3374255136237325085491942038388147404432627458905669250744778', '3374255136237325085491942038388147404432627458905669250744778', 45, 0); + T('7690224951153160774526032743679621', '7690224951153160774526032743679621', 33, 6); + T('0.00000000000000000000000000000000017074840686264748628337821', '0.000000000000000000000000000000000170748406862647486283378213576419477915575', 59, 5); + T('-0.00000000004637857649826847069795159309827675', '-0.000000000046378576498268470697951593098276745844317758', 44, 5); + T('0.00017652709951498133638383919005461463529305123', '0.000176527099514981336383839190054614635293051230467643495742837724131', 47, 1); + T('0', '-0.000000000000000000000000000000000000000000000112634125418', 33, 4); + T('723368046640065130294742958718721773826602583088486440698866940503225379031577817', '723368046640065130294742958718721773826602583088486440698866940503225379031577817', 51, 4); + T('-50933665584184852038671079863303718636397390288718740018317103418.102', '-50933665584184852038671079863303718636397390288718740018317103418.102293292287286568351413551802', 3, 5); + T('-2410200702497', '-2410200702497', 11, 1); + T('0', '0.0000000000000000000000000000000000000000000042239344371306878587914753063390073941', 34, 4); + T('-0.00000000000000000000000000000000000000000000001', '-0.0000000000000000000000000000000000000000000000000575180898854911', 47, 0); + T('0.000000000000000004344458301', '0.000000000000000004344458300844696324', 27, 5); + T('36415144993270477751194428581026117927500927.44375086964836279651713', '36415144993270477751194428581026117927500927.443750869648362796517124098901167909583083796664632', 23, 0); + T('5334215483112576666595260269852476258881', '5334215483112576666595260269852476258881', 11, 2); + T('3572677626411797212153520390351.131380872979421133958812687842550117369', '3572677626411797212153520390351.131380872979421133958812687842550117369055722382', 40, 1); + T('0', '-0.000000000317959455183002008629386273613319488458668668911799807504500387889375132126574196359', 2, 1); + T('0', '0.00000000000000000000000000508716881203357016907853303274028327363526105723619349316', 9, 5); + T('0', '0.00000000000000000000000000000000000000000000007059146600634404411', 2, 6); + T('0.00000000000000000008044178973467803785', '0.000000000000000000080441789734678037845949859474890695888', 38, 5); + T('0.00055142638660941844622938085879706786353818237626618', '0.0005514263866094184462293808587970678635381823762661734377953648597433', 53, 0); + T('-17599444586797881418318563414502812139457', '-17599444586797881418318563414502812139457', 29, 1); + T('1134429695712029417607873744122149717054918253194205124127', '1134429695712029417607873744122149717054918253194205124127', 56, 5); + T('0', '-0.0000000000000000000000000000032833397936417991775542735318772256', 18, 4); + T('-0.00000000000082748682928206867048022608063733', '-0.00000000000082748682928206867048022608063733', 44, 0); + T('-892190137424331421784517600329772157761277945477908134895153411935646898622686045781365887203805522', '-892190137424331421784517600329772157761277945477908134895153411935646898622686045781365887203805522', 21, 2); + T('-57225378653330495581042999105043387285455715448557023450921912.731', '-57225378653330495581042999105043387285455715448557023450921912.730815794217451434674350759', 3, 3); + T('88944978837600241675413451540.41662447490467530719484465416514', '88944978837600241675413451540.41662447490467530719484465416513364729285517299279519760671836409', 32, 0); + T('-0.00566575519125872879638699056271355696758097', '-0.00566575519125872879638699056271355696758097875409951260368210651006', 44, 1); + T('52101710101744937632626526544984055.2507495489669041508372470444630234511783474876012526', '52101710101744937632626526544984055.25074954896690415083724704446302345117834748760125260024', 54, 6); + T('25552542841746347884157299301699166856285838610487.074735318379', '25552542841746347884157299301699166856285838610487.074735318379', 13, 4); + T('0', '-0.00000000000000000000000008442227169', 0, 5); + T('0', '-0.000000000000000000000000000000000000000000000024981374014605917033767473869314720387745536', 7, 2); + T('-480402927391768064318296499265102782166804733100958844081491000.164525046348783775063556224', '-480402927391768064318296499265102782166804733100958844081491000.16452504634878377506355622448905', 27, 6); + T('-83963278511727947.84244986971165729356', '-83963278511727947.8424498697116572935579418275332796753821475270524', 20, 3); + T('905516486335617027566122447589928241315669260318', '905516486335617027566122447589928241315669260318', 35, 4); + T('6552963687555211427868764317.90444524', '6552963687555211427868764317.90444524617', 8, 1); + T('-0.0000000000000000000000000000000000000296558323', '-0.0000000000000000000000000000000000000296558322254714710784144978368282230551424514', 46, 0); + T('71233459565941813768643527698052038451814432324674330534.182221666', '71233459565941813768643527698052038451814432324674330534.182221665956151724061357615822583899564696', 9, 0); + T('-0.000000000000000000000000000000000000000007692392', '-0.000000000000000000000000000000000000000007692392232033940021796786860993673', 48, 2); + T('0.0000004142741301072051705173415526', '0.000000414274130107205170517341552625080742', 34, 4); + T('0.00000000000000000000000000000049', '0.0000000000000000000000000000004844225578184253767706840696504802592', 32, 0); + T('0', '0.00000000000000000000000000000000000000000000586004362384730418793774932852260308', 42, 5); + T('0.000000000000000000000000000000000057244859768', '0.000000000000000000000000000000000057244859768035439766499099449028148846', 45, 5); + T('-827141688560282316577471043529435271414984', '-827141688560282316577471043529435271414984', 27, 2); + T('-368402916220866.36823893036045234503764', '-368402916220866.36823893036045234503764172264459272073949130478550198453350142034438121269721972', 23, 5); + T('9103003038081670721316405', '9103003038081670721316405', 18, 6); + T('-7852165677474979.5938719858816080949974229232217347241', '-7852165677474979.59387198588160809499742292322173472401655014999447181095216397', 37, 0); + T('-6715185377564.74139538353174075359773259963669721907215595224', '-6715185377564.7413953835317407535977325996366972190721559522323030678428100131570087002950444421', 47, 0); + T('1706349694.76350749557800040706127419362257045545428491995', '1706349694.763507495578000407061274193622570455454284919951774181697932220714269', 47, 4); + T('78588826016299437743619705479876210302676979259827058565445', '78588826016299437743619705479876210302676979259827058565445', 30, 4); + T('0.000000000001', '0.000000000000000000001', 12, 2); + T('-2589582973458706776296834369656361634439983', '-2589582973458706776296834369656361634439983', 39, 0); + T('1743441368337597162867911.2951052396023395109004737465489', '1743441368337597162867911.29510523960233951090047374654895392832378911231920027143594963', 31, 3); + T('-73199678471', '-73199678471', 3, 0); + T('0', '0.00000000000000000000000000000000000000000003', 40, 1); + T('0.0000000000000000000000000000000004667447051117350698', '0.000000000000000000000000000000000466744705111735069864674296158720400075859650953', 52, 3); + T('-0.000000000007594399656167355193566547921', '-0.0000000000075943996561673551935665479215549769984862601569756133629823648103539458', 39, 2); + T('3.1652680597256250889013415555546409571597090799265', '3.1652680597256250889013415555546409571597090799264826416835791052587978940383354082674008433382', 49, 5); + T('50502759777095272980458734330295487385.5034260436783855', '50502759777095272980458734330295487385.5034260436783854754464126887951593337', 16, 2); + T('-349476928883536309320539866916636955806193888951300354548141473494386', '-349476928883536309320539866916636955806193888951300354548141473494386', 55, 1); + T('841906075761357751506861189609878618918101934357106', '841906075761357751506861189609878618918101934357106', 25, 3); + T('-59181751544129813715475076424907785097207348427962139893929324499', '-59181751544129813715475076424907785097207348427962139893929324499', 35, 2); + T('-1521196888137155531754333457458022000831356615', '-1521196888137155531754333457458022000831356615', 41, 3); + T('0', '-0.000000000000000000000000000000000000009', 8, 4); + T('-8289795629.1717218118944', '-8289795629.171721811894356069463885446122', 13, 0); + T('-0.000000000000223889609679829899532021178692653007372269973', '-0.0000000000002238896096798298995320211786926530073722699726206380829817413519982043525', 57, 6); + T('-7258143388738798481910452159781024994720650112469214442658774256937667959953614727386289', '-7258143388738798481910452159781024994720650112469214442658774256937667959953614727386289', 22, 2); + T('-359558549295372353924483405244841350664470.360298499922130388371586275901555831355657233897572726855', '-359558549295372353924483405244841350664470.360298499922130388371586275901555831355657233897572726855', 58, 1); + T('-0.000000000000000000000000000000000000000000237870554', '-0.0000000000000000000000000000000000000000002378705539415969705231398235316441614230302', 52, 0); + T('0.2393241059673690394127252863371489989987293405009221276', '0.2393241059673690394127252863371489989987293405009221275481644601266835423187167949827392', 55, 0); + T('-689590028428083520425141553232150041665855900447213740339177308861649878', '-689590028428083520425141553232150041665855900447213740339177308861649878', 18, 0); + T('0.000000078110011766889375023084610838180269', '0.0000000781100117668893750230846108381802696891356733714996828302', 42, 1); + T('-0.0000000739636485110881770771812970480784085432490937791404', '-0.000000073963648511088177077181297048078408543249093779140448174989076410926', 58, 6); + T('839622336342426602772908498745047009924846092679316564429', '839622336342426602772908498745047009924846092679316564429', 57, 6); + T('-0.0000000000000000000004456538488579841701862456826545336942', '-0.00000000000000000000044565384885798417018624568265453369416231186707532116823535364936', 58, 5); + T('5457344694848495013.70758306793373443062303840408774687096091471', '5457344694848495013.70758306793373443062303840408774687096091470997296538132975451', 45, 6); + T('278810146198025452859993052541559705412200658428450141592249279860660994', '278810146198025452859993052541559705412200658428450141592249279860660994', 53, 6); + T('-0.0000000000000000000000000000001', '-0.0000000000000000000000000000000008', 31, 0); + T('0.00000003870782543245692370508', '0.000000038707825432456923705079513311568', 29, 2); + T('0.00000000000000028905839185125858911474408672313456633629', '0.00000000000000028905839185125858911474408672313456633629272919468390905836955324418317503957', 56, 4); + T('-51357247691860499903562435980838.792767', '-51357247691860499903562435980838.79276727924860634529292348327', 6, 4); + T('36984058670396140.944950463552746216537895105829140616432610621131124', '36984058670396140.9449504635527462165378951058291406164326106211311240265980364777353', 52, 3); + T('4324247714235544003727336020912959171914181632133', '4324247714235544003727336020912959171914181632133', 26, 1); + T('-0.0000000000000000000000000000000000000000000000008937166', '-0.0000000000000000000000000000000000000000000000008937166', 55, 1); + T('-2442300682026632859154542947848984516683026198562824', '-2442300682026632859154542947848984516683026198562824', 31, 6); + T('0.0000000000000000000040559', '0.000000000000000000004055940890427693898528647800483601', 25, 4); + T('-0.0000000000000000000000000000000000000000000000005', '-0.000000000000000000000000000000000000000000000000533883534094325559019527373422252174198', 49, 1); + T('-601022544723155145451207670010213497437.14164798', '-601022544723155145451207670010213497437.1416479757860807842495953660628318061595534', 8, 6); + T('70433022521741511411711454.3981934256304734737098098', '70433022521741511411711454.398193425630473473709809802903058576643802930136306958583', 26, 6); + T('10908799783188529757366993500335', '10908799783188529757366993500335', 21, 3); + T('87532.4007713298943414092792987798224322373504067', '87532.400771329894341409279298779822432237350406676898594464428537143159348548268047779886855749206', 43, 0); + T('-0.519371276718530514624846800754582116141529266132757', '-0.5193712767185305146248468007545821161415292661327570320784267894852821486214528653', 51, 1); + T('9843596527442895375096439245255836073.70931062242142483683526808', '9843596527442895375096439245255836073.70931062242142483683526807533268520820713372314', 26, 0); + T('0.001', '0.0000000000000058501267284656327224026025031332724569171393523546241494751676984130276', 3, 2); + T('88204244847517941308668679833512765096788828649032102210342660386515548133512234443', '88204244847517941308668679833512765096788828649032102210342660386515548133512234443', 9, 2); + T('-72474655403865728422919', '-72474655403865728422919', 25, 2); + T('-64978799280092373.2357486192905225486909493417592884977935811274', '-64978799280092373.23574861929052254869094934175928849779358112736784', 46, 3); + T('-3900549976428555791621079898632755518751734773176044166588963', '-3900549976428555791621079898632755518751734773176044166588963', 45, 5); + T('-0.000000000000000000000000000082479', '-0.00000000000000000000000000008247901689204830195155306799530867952682774163311949867', 34, 6); + T('0', '0.0000000000000000000000000338254327291878442621187444947666248001402914296565659898518000736', 11, 3); + T('-0.00000000223134', '-0.000000002231341114998828837864161402405342720671858261823364908867', 14, 6); + + // rounding mode 7 + T('-4227925468727766007369594003870427.86133603669917314695806481136062429', '-4227925468727766007369594003870427.86133603669917314695806481136062429149585050333617751', 35, 7); + T('0.00000000000000002542497815049223865530599542', '0.000000000000000025424978150492238655305995417803361817364414794153572487661433133', 44, 7); + T('-52231667.228724632', '-52231667.22872463243810129366255', 9, 7); + T('34077267364474763.91234860081333406989016992096282251', '34077267364474763.9123486008133340698901699209628225111620410327006274894046060867566994460704', 35, 7); + T('5856401617744968221752230029308.1679768661242918708685642495558141063641674034', '5856401617744968221752230029308.167976866124291870868564249555814106364167403351653', 46, 7); + T('23796511434278450866104444583677797487678290864898492636634411901159527', '23796511434278450866104444583677797487678290864898492636634411901159527', 49, 7); + T('0', '-0.00000000000000000001622749974913381', 8, 7); + T('63101238791571926526656526888', '63101238791571926526656526888', 26, 7); + T('119975362395419219788856351528506147606875253314643205183185766', '119975362395419219788856351528506147606875253314643205183185766', 37, 7); + T('0.00000000000000028638823981166558781214435', '0.0000000000000002863882398116655878121443495241084176650123383124435451', 41, 7); + T('0', '-0.0000000000000646493344101476775', 4, 7); + T('3727665898156798714702225969249372097434686068956916500942749774019588426536', '3727665898156798714702225969249372097434686068956916500942749774019588426536', 55, 7); + T('409593411642458946972739997054469022719146.491026', '409593411642458946972739997054469022719146.491025521359231357', 6, 7); + T('13404825779782337.686240571775407373089634963', '13404825779782337.686240571775407373089634962567081893468942784631003987766301470481820407103286888', 27, 7); + T('661581721939770480643', '661581721939770480643', 0, 7); + T('82201282103354391377948704606454107732823853693730778633', '82201282103354391377948704606454107732823853693730778632.679770307020989736730343202980605582', 0, 7); + T('188489334274192797369124659824920031586552510451', '188489334274192797369124659824920031586552510451', 20, 7); + T('-350373000061738168422367720730846856693416103657170981784.47171168192426', '-350373000061738168422367720730846856693416103657170981784.47171168192426', 14, 7); + T('-371822329041221965657417973472237384192854529035779701345758861333.911', '-371822329041221965657417973472237384192854529035779701345758861333.91125259284165', 3, 7); + T('11390.30218059', '11390.3021805893183128284582351157607918846791695198255651493155092893025770778456684', 8, 7); + T('31051565651391', '31051565651391', 10, 7); + T('3381673772647503796291366133103', '3381673772647503796291366133103', 24, 7); + T('543390727353666255169063924082693597248278069190643870027', '543390727353666255169063924082693597248278069190643870027', 55, 7); + T('799421038004579749157298710029180393', '799421038004579749157298710029180393', 9, 7); + T('-0.0362677922831722959112878701030537328697742', '-0.036267792283172295911287870103053732869774154760781501898753153437796985370382553866', 43, 7); + T('-0.00000000000000048840974104900508184409730782', '-0.00000000000000048840974104900508184409730782', 44, 7); + T('90721186387234427125851848111061056765611723546', '90721186387234427125851848111061056765611723546', 39, 7); + T('0.00000000000478987425349763447387328875752791010733067', '0.0000000000047898742534976344738732887575279101073306690331160727348729434112548998768887148899', 53, 7); + T('15590509654436423421185143897507920201916474372180041409856165500105', '15590509654436423421185143897507920201916474372180041409856165500105', 30, 7); + T('20.749566685219600998729078427300664316775', '20.7495666852196009987290784273006643167750133692770467181607553093280822', 39, 7); + T('-0.000053459060231372', '-0.00005345906023137227399335260530503765672935', 18, 7); + T('-0.0000000003951749339568017915631', '-0.000000000395174933956801791563099248827925205492855063788550039874086544657303197463564591312', 32, 7); + T('8679339310554212663278369614448693.5454104727306164118703439386963341', '8679339310554212663278369614448693.545410472730616411870343938696334073', 34, 7); + T('33955284728592200348127638127333126188369126163765426829286263844316', '33955284728592200348127638127333126188369126163765426829286263844316', 58, 7); + T('-594503494522354581672092284773632917525938683919588064506930195373570676846343387.84', '-594503494522354581672092284773632917525938683919588064506930195373570676846343387.8422460203946', 2, 7); + T('-0.000000000039360661299713', '-0.000000000039360661299713264121639691847249043522176561382860930019972250155868911494243265848', 24, 7); + T('772954079526310860071529507548873740833690851501083576478349475089452727853278468874693', '772954079526310860071529507548873740833690851501083576478349475089452727853278468874693', 43, 7); + T('0.0000000000000087453797413879451313', '0.000000000000008745379741387945131324297953447', 34, 7); + T('5367560449328479105254540606212332013053671843660775766151', '5367560449328479105254540606212332013053671843660775766151', 48, 7); + T('323195274385200326456762447968768', '323195274385200326456762447968768', 32, 7); + T('-0.00666873745951635736846493280695487641727423448', '-0.00666873745951635736846493280695487641727423447512328693008180656151418503780844889026', 47, 7); + T('-7926588167337833445785869654809557874339194445079754658952051495268464651', '-7926588167337833445785869654809557874339194445079754658952051495268464651', 52, 7); + T('773169576814793176793181528896362236450108', '773169576814793176793181528896362236450108', 30, 7); + T('-8.1575381767765005493134495350395', '-8.15753817677650054931344953503948694358980563360390907469324255712308578813630240549552277566', 31, 7); + T('-21.0687436857970456', '-21.068743685797045585476881980189937156684', 16, 7); + T('170893057097642104712842895333915433672.71614098604436028244004249890377265867813183634', '170893057097642104712842895333915433672.71614098604436028244004249890377265867813183634', 48, 7); + T('1419314989888991829914000521', '1419314989888991829914000521', 27, 7); + T('60.82455319459720635738568680187', '60.82455319459720635738568680186527959160858773466033409815105410886097854659665276583589', 29, 7); + T('-326121410879335855857666649461844584751.890652900789444294337811561299374410085', '-326121410879335855857666649461844584751.8906529007894442943378115612993744100850340106799465', 39, 7); + T('0', '-0.00000000047316992670949883926600553413571239606520662308124419529296046257305486386553', 9, 7); + T('8727742090301337651614326326111889945767014507', '8727742090301337651614326326111889945767014507', 7, 7); + T('-53786060748605241244291153266999830828105314220961448804386112379126610916027104677231615675462', '-53786060748605241244291153266999830828105314220961448804386112379126610916027104677231615675462', 41, 7); + T('-7291471902884803069229597050854712688481', '-7291471902884803069229597050854712688481', 38, 7); + T('847593479', '847593479', 4, 7); + T('1373363663030811404110606699087734488483568208061113004937904474604557886571038', '1373363663030811404110606699087734488483568208061113004937904474604557886571038', 51, 7); + T('-40747376548681307346900781782230386637811935441.3112009014674226146734340597796810731578811', '-40747376548681307346900781782230386637811935441.31120090146742261467343405977968107315788114674885', 43, 7); + T('-9195689298211729379676090128793323261891000554', '-9195689298211729379676090128793323261891000554', 35, 7); + T('-0.0034576620308478723296001292094731200618886', '-0.0034576620308478723296001292094731200618885915140945281', 43, 7); + T('-834830377500140623938088', '-834830377500140623938088', 13, 7); + T('-2591671475562784513632.7426072061600211', '-2591671475562784513632.7426072061600211449224236386965047917900134074059687266614653350608538539233', 16, 7); + T('-0.000000071830212114487276777707572429272192915812377', '-0.00000007183021211448727677770757242927219291581237659932896988676370766529', 51, 7); + T('-640413896696784439726742018298253474508645956359', '-640413896696784439726742018298253474508645956359', 17, 7); + T('-0.0000000007984874929607838512528277745379438139977', '-0.0000000007984874929607838512528277745379438139976936507024', 49, 7); + T('-191366559030669593366830590135909135496110802292432471355483754482684086882649187.03963614483', '-191366559030669593366830590135909135496110802292432471355483754482684086882649187.039636144827732224', 11, 7); + T('8142815084790919737688042342962162664546160121642099901931307232971548145567222', '8142815084790919737688042342962162664546160121642099901931307232971548145567222', 39, 7); + T('-332782287617659420418475853661', '-332782287617659420418475853661', 8, 7); + T('0.000000000000000090055750282893', '0.000000000000000090055750282893334403507', 30, 7); + T('-21214000845.333611178419231112230625322747176660692', '-21214000845.3336111784192311122306253227471766606919954698312144738447328491967907213627789511', 41, 7); + T('-3308503261988645767218602554122821282075149204084296957091595953533605', '-3308503261988645767218602554122821282075149204084296957091595953533605', 50, 7); + T('0.0000000000148313954826', '0.000000000014831395482560045753365765821761099871603901006599292947641903057294622382', 22, 7); + T('-2540286161517932530549634211256175558471.6859862264011445254812864800971', '-2540286161517932530549634211256175558471.685986226401144525481286480097095411420704429841593275576', 32, 7); + T('53072382348521019562214270117475451722847127807.9201176137241464512', '53072382348521019562214270117475451722847127807.920117613724146451247168428976198', 19, 7); + T('254629197539322919418061.82042110551640609842973441', '254629197539322919418061.8204211055164060984297344124295121369080688739190169652019849566879168623229', 26, 7); + T('-0.000000000000000078419972351846537383122302261056', '-0.0000000000000000784199723518465373831223022610558577146950907022375450619', 48, 7); + T('11595408011.00123572', '11595408011.001235716255147528059507314235781168368767750180889928736025154811960130245171531056', 8, 7); + T('-88737685279585592831151984911995996', '-88737685279585592831151984911995996', 34, 7); + T('-37552253678559041341461701227356.158965', '-37552253678559041341461701227356.15896541954380463879908913349547402024', 6, 7); + T('9003148188594382524113049819941839640533061131950519887235499386135779479186433401692', '9003148188594382524113049819941839640533061131950519887235499386135779479186433401692', 28, 7); + T('5361439166674927508874087692620586593056959', '5361439166674927508874087692620586593056959', 27, 7); + T('0.000000000091', '0.00000000009088521688422520393209050649016376675636278197884083029252', 12, 7); + T('-85657245717942136252098076569728416271774563165859', '-85657245717942136252098076569728416271774563165859', 43, 7); + T('-3646212560971909.35373247444', '-3646212560971909.3537324744426713329988288580585598165569188254140994718', 11, 7); + T('370765.6513425131872580849719776983168312523', '370765.651342513187258084971977698316831252349262543626', 37, 7); + T('-0.000000000000000000079137759978805203671743111106', '-0.00000000000000000007913775997880520367174311110627', 48, 7); + T('-1611465593139807523207984983928164779476993618071493833576191', '-1611465593139807523207984983928164779476993618071493833576191', 54, 7); + T('-0.00000000033726114', '-0.000000000337261144121803302303977879693673326581217799', 17, 7); + T('-6903218163', '-6903218163', 0, 7); + T('-7394201623023154', '-7394201623023154', 6, 7); + T('-89820218178368462032325999901068153419219023209648734123533475637571406377255460273403483', '-89820218178368462032325999901068153419219023209648734123533475637571406377255460273403483', 56, 7); + T('6856221590550350247215669709857430594517289.154687344282048067223977700265786705429299', '6856221590550350247215669709857430594517289.1546873442820480672239777002657867054292985437290849', 42, 7); + T('1713217233116965517209765946255483359142721898296301440743911736', '1713217233116965517209765946255483359142721898296301440743911736', 49, 7); + T('-61567856267375488815199698038892', '-61567856267375488815199698038892', 31, 7); + T('34856837444274112573644196165166306557489218761519232806183215580575570476', '34856837444274112573644196165166306557489218761519232806183215580575570476', 19, 7); + T('-605776974882763519', '-605776974882763519', 13, 7); + T('-47418341187456097944575634049467431694845063678', '-47418341187456097944575634049467431694845063678', 18, 7); + T('1585.955173007361693854365', '1585.95517300736169385436496480295446937143592132714724734106024847451264683205302947963649', 21, 7); + T('-0.000000000645133213415476611350444263216682276825945168', '-0.0000000006451332134154766113504442632166822768259451679249815370738204997714034783482', 54, 7); + T('8302757044275405219378536899241030582612132769226851500125963466033484914477.69666886019', '8302757044275405219378536899241030582612132769226851500125963466033484914477.6966688601893948', 11, 7); + T('45270612179603070143114444578079928392447807.32', '45270612179603070143114444578079928392447807.31953', 3, 7); + T('7301116759454965528151147816987787832077100563626120303568921', '7301116759454965528151147816987787832077100563626120303568921', 44, 7); + T('1347.918925815662323176162011734192369953734988907893741421192', '1347.9189258156623231761620117341923699537349889078937414211917111615784661239064', 57, 7); + T('2745551364781081262572434756', '2745551364781081262572434756', 25, 7); + T('-0.0000000000000000007702847033377973269515', '-0.0000000000000000007702847033377973269514520366', 40, 7); + T('-779091641487404784136567.4569597590049318948543232527454505450307', '-779091641487404784136567.4569597590049318948543232527454505450306884403', 40, 7); + T('0.0000000000000000454', '0.000000000000000045425771078016534055033094636873778207765101376805036792267244437277308175', 19, 7); + T('56037886202598118256341767914293907027232', '56037886202598118256341767914293907027232', 38, 7); + T('456832180283905827046262334942695632683335636856760196', '456832180283905827046262334942695632683335636856760196', 7, 7); + T('835408846081276629656740640207846703234335963484085602007567975275144', '835408846081276629656740640207846703234335963484085602007567975275144', 10, 7); + T('5892208545916340693141737610813531078984299948', '5892208545916340693141737610813531078984299948', 43, 7); + T('0.0000000000000000648486346789469454376605', '0.0000000000000000648486346789469454376604957149144419097073694775265833471038380610746092239', 41, 7); + T('262034975067781367618641670843831216012635510399715', '262034975067781367618641670843831216012635510399715', 48, 7); + T('0.0000000000001753084053965545624370536153934309', '0.0000000000001753084053965545624370536153934309', 46, 7); + T('322685018236508000449322148450559922708614699674162314336435015392855585932088', '322685018236508000449322148450559922708614699674162314336435015392855585932088', 6, 7); + T('-0.0000751245672641759875031068805293967164447087335563', '-0.00007512456726417598750310688052939671644470873355631128944237042822656', 52, 7); + T('119777479.69030463302136982513942340039304882524620509', '119777479.69030463302136982513942340039304882524620508857791460878231096405985356133971', 44, 7); + T('35553204237558471570629583797360426827090262465551670477505712708774604078722600420011', '35553204237558471570629583797360426827090262465551670477505712708774604078722600420011', 19, 7); + T('-291943404908366202882510361495002297845826668767795046772085261154931', '-291943404908366202882510361495002297845826668767795046772085261154931', 35, 7); + T('-4534915638090657787513612506781133713200439475.0867572558553302530492308505380074065078701', '-4534915638090657787513612506781133713200439475.086757255855330253049230850538007406507870065', 43, 7); + T('-4628007825261462798342072.911906258290433814410271477744026909511632016076', '-4628007825261462798342072.91190625829043381441027147774402690951163201607620251591', 48, 7); + T('4.4783487885384154042674977520386158763493723', '4.478348788538415404267497752038615876349372276082911556304299004285541926525363120311938399325', 43, 7); + T('994636826214072644153969326141', '994636826214072644153969326141', 15, 7); + T('-5505235444849638686149329852308536500811963484639683908157841253614298429625', '-5505235444849638686149329852308536500811963484639683908157841253614298429625', 4, 7); + T('614148606644556790188235.0255904986548346451861728211971653475326466503852137269737', '614148606644556790188235.0255904986548346451861728211971653475326466503852137269737', 59, 7); + T('2193724261100974203871998310680424123017389161396709538479', '2193724261100974203871998310680424123017389161396709538479', 57, 7); + T('-1956878070881025122270372.337521825043239627169969252259537214', '-1956878070881025122270372.337521825043239627169969252259537214113849107454904456961545052', 36, 7); + T('-0.000000085351', '-0.00000008535110476842370597384', 12, 7); + T('641105.998789180105078291507747673', '641105.9987891801050782915077476729519884908863536991235498773209022192197109739345514224', 27, 7); + T('-21.197585767523889474671349269775310955379095', '-21.197585767523889474671349269775310955379095140158', 42, 7); + T('116146.494005975894598315121282665834747215927459854167', '116146.49400597589459831512128266583474721592745985416695', 48, 7); + T('7485928.847855308413604360975395065166506118993796', '7485928.8478553084136043609753950651665061189937957371746846213016715624539634852', 42, 7); + T('6076054393834960260724553991126463655232706.998159020156971123267673392190851428162156', '6076054393834960260724553991126463655232706.9981590201569711232676733921908514281621564918', 42, 7); + T('-826178119212535027', '-826178119212535027', 15, 7); + T('-208338831092277473', '-208338831092277473', 6, 7); + T('69243933206144181076562868181368044771717426832955483549265453790367.885941195178679', '69243933206144181076562868181368044771717426832955483549265453790367.8859411951786792008', 15, 7); + T('-2967', '-2967', 4, 7); + T('-41501138725996819959124846804770912118526003045.185796167930212824055822', '-41501138725996819959124846804770912118526003045.185796167930212824055821995991', 25, 7); + T('-18057852043794248196575675918109156108791090767', '-18057852043794248196575675918109156108791090767', 20, 7); + T('281718409203896229312414254327976677356070865725930122957218157', '281718409203896229312414254327976677356070865725930122957218157', 58, 7); + T('-57791881810902060710765', '-57791881810902060710765', 6, 7); + T('897687437107677390019954648718257777584106700283464841488202716343791452515', '897687437107677390019954648718257777584106700283464841488202716343791452515', 15, 7); + T('-2074411348618460421873509155369584886131842509398520763333892604629272098166', '-2074411348618460421873509155369584886131842509398520763333892604629272098166', 56, 7); + T('6412163494823707737671130186405578927125993163390203934159490599840161448487', '6412163494823707737671130186405578927125993163390203934159490599840161448487', 38, 7); + T('2570935346175677196878', '2570935346175677196878', 9, 7); + T('2922237829561344881354422214117488.09791032403417844482040226257725168516472', '2922237829561344881354422214117488.0979103240341784448204022625772516851647155', 41, 7); + T('-360113314811150792166325832443', '-360113314811150792166325832443', 27, 7); + T('60014328059462865087436739179650691113359513', '60014328059462865087436739179650691113359513', 19, 7); + T('-0.000000000006304400685027434212478867369219111834780823862', '-0.000000000006304400685027434212478867369219111834780823862330243813719233306', 57, 7); + T('-7205740883575345558.3035609312', '-7205740883575345558.303560931199598', 12, 7); + T('53085840415323322403425172031495', '53085840415323322403425172031495', 13, 7); + T('501486.7129443291838593479218597548273888277689050437', '501486.71294432918385934792185975482738882776890504370426', 46, 7); + T('0.000000000000000908932850021752246249043079995293384916', '0.00000000000000090893285002175224624904307999529338491636808', 54, 7); + T('-0.00000000043256345933043079995692824366141', '-0.0000000004325634593304307999569282436614050910377417779512451575', 41, 7); + T('-57356950707173599793269435282846849386194446656814419867723389602143804102082390505', '-57356950707173599793269435282846849386194446656814419867723389602143804102082390505', 54, 7); + T('708838339642304601261089699220144910531439729426156936490112289', '708838339642304601261089699220144910531439729426156936490112289', 34, 7); + T('-0.0046078939476187', '-0.0046078939476187097406433991788939813592464396622249737415711345731', 16, 7); + T('-0.12323576577', '-0.123235765770465267088639292854754', 11, 7); + T('0.00000000000000000095580555623555550814768224905099', '0.00000000000000000095580555623555550814768224905099420276782483589081456723662215426756599134555', 50, 7); + T('-2570339352145966269634677761640260169032119', '-2570339352145966269634677761640260169032119', 28, 7); + T('38236133483427843764612112447', '38236133483427843764612112447', 15, 7); + T('-336931025688483976222819902541535', '-336931025688483976222819902541535', 4, 7); + T('-9131418940.626118397155251', '-9131418940.6261183971552511339709100767636897756353245436849948601735074456013276755274', 15, 7); + T('-0.5390546818595212848113530704801476758617232550071935366093', '-0.539054681859521284811353070480147675861723255007193536609276138828242044691640655011489223249255041', 58, 7); + T('-71416755738083832515056950347140525452730269982573.3282170765632710695719312', '-71416755738083832515056950347140525452730269982573.32821707656327106957193116691737786397252', 25, 7); + T('0.00000000000000000255991442876714392607715869138', '0.000000000000000002559914428767143926077158691380360601109197', 48, 7); + T('0.0008012312849268656243687029355101489200440567', '0.0008012312849268656243687029355101489200440566607892247', 46, 7); + T('244.1299004975136113934851571373', '244.129900497513611393485157137342367594', 28, 7); + T('8873145.130771366', '8873145.13077136613329539431464116435056918385440213780105794207728379404299861', 9, 7); + T('90421830817071276704486549442201016086558530905157803796367055646.90135601654869', '90421830817071276704486549442201016086558530905157803796367055646.90135601654868751923854163', 14, 7); + T('-36.526533442608873306192392', '-36.5265334426088733061923917926640502233384568457377017150304742119162081602297', 24, 7); + T('7756944055327836674900630471616647295.05850876072750123732246', '7756944055327836674900630471616647295.0585087607275012373224596', 23, 7); + T('0.000000000000045081619273154020727317734277869142539661', '0.0000000000000450816192731540207273177342778691425396607541', 54, 7); + T('-6657777084968602905612118294092900774663152', '-6657777084968602905612118294092900774663152', 43, 7); + T('-0.000000000000000005188433862917015864715902', '-0.0000000000000000051884338629170158647159019984830235182423', 42, 7); + T('0', '0.00000000000000000317', 15, 7); + T('-0.4149264099071581632611228387619456297727645178621012', '-0.414926409907158163261122838761945629772764517862101198886202115978635194007190868314555521133717701', 52, 7); + T('-6864484.8819017398097', '-6864484.88190173980971584504271598165', 13, 7); + T('-0.000000000000000001679161583143115920667389957545331', '-0.000000000000000001679161583143115920667389957545331037811592028938944353273214379643791129', 51, 7); + T('2757136.4258217552704766493458823230944375263657904360372', '2757136.4258217552704766493458823230944375263657904360372469', 49, 7); + T('73592128777516437498892', '73592128777516437498892', 16, 7); + T('0.07257197707618528010135723118752', '0.07257197707618528010135723118751971071518538894191478337895115762517662900499752291', 33, 7); + T('-0.000004438131', '-0.0000044381314450238844267302840448432030161991750345428173', 12, 7); + T('-595708298116615541357228353744113762188591036583833859568474759300695041038994506', '-595708298116615541357228353744113762188591036583833859568474759300695041038994506', 26, 7); + T('-199080228621514339171672812459767795971.316371238367118391139875956069', '-199080228621514339171672812459767795971.316371238367118391139875956069353409632336022093730932235', 30, 7); + T('373244977600891908151269122085847490535520152535249519596826077513', '373244977600891908151269122085847490535520152535249519596826077513', 29, 7); + T('-5639594880101200527887384823782946761462906320.140387160404385845875304739793220257', '-5639594880101200527887384823782946761462906320.140387160404385845875304739793220257', 36, 7); + T('-0.0000000000087947389416162510202344444769', '-0.000000000008794738941616251020234444476890906037567993523566767799162529587006731256066852047615', 40, 7); + T('-2811163289244542298.314552033404146359617103886433288499526162438312', '-2811163289244542298.314552033404146359617103886433288499526162438312107482463', 48, 7); + T('71312169853960180892335621188140367568370992911790488', '71312169853960180892335621188140367568370992911790488', 6, 7); + T('-62901173098.92897012666077517055378671774520634', '-62901173098.92897012666077517055378671774520634147', 35, 7); + T('-225945189426218018978712161605939563187347', '-225945189426218018978712161605939563187347', 43, 7); + T('0.00000000000007', '0.0000000000000670546442643248060364526003698781540676945356538481', 14, 7); + T('-80283941091068212735380828801414422106056308023', '-80283941091068212735380828801414422106056308023', 49, 7); + T('-582347756606942164157330806711292105702409851721143752567190054087620149322902471723806842', '-582347756606942164157330806711292105702409851721143752567190054087620149322902471723806842', 1, 7); + T('-789926098528886434848959110622484454631207369243255613772447578642734', '-789926098528886434848959110622484454631207369243255613772447578642734', 47, 7); + T('-635798687539890156072639669428587757239', '-635798687539890156072639669428587757239', 8, 7); + T('-772569903906438796789911092772836.040164878760556480065413195516497', '-772569903906438796789911092772836.0401648787605564800654131955164969017', 33, 7); + T('27480851396278530398639821633448999360391209592648305694853077032079.542019003323', '27480851396278530398639821633448999360391209592648305694853077032079.542019003323244917259654092', 12, 7); + T('-37187774977797692205929824486204948247323', '-37187774977797692205929824486204948247323', 8, 7); + T('-3066994074128464238846827107369679938251453783778612958797836976139626988170384146746054', '-3066994074128464238846827107369679938251453783778612958797836976139626988170384146746054', 25, 7); + T('1080460621508171861173510076169499142582659362076277316', '1080460621508171861173510076169499142582659362076277316', 26, 7); + + T('-815303438910393610000000000000000000000000000', '-815303438910393610000000000000000000000000000.5', 0, 7); + T('48079804879135055337410501154945563557501499846191760613365317572636043210233866737200001', '48079804879135055337410501154945563557501499846191760613365317572636043210233866737200000.5', 0, 7); + T('775141321458031580151353003447938403271713528287267233801607476638641728594600000000001', '775141321458031580151353003447938403271713528287267233801607476638641728594600000000000.5', 0, 7); + T('-3246099003639468003580507000000000000000000000000000000000000000000000000000000000000000000000000000', '-3246099003639468003580507000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('616052744557652711', '616052744557652710.5', 0, 7); + T('-47298707260000000000000000000000000000000', '-47298707260000000000000000000000000000000.5', 0, 7); + T('431370739475777039213491701837719630211035950221951900000000000000000001', '431370739475777039213491701837719630211035950221951900000000000000000000.5', 0, 7); + T('54683100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '54683100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('672783487870821678831521822264427999625400000000000000000000000000000000000000001', '672783487870821678831521822264427999625400000000000000000000000000000000000000000.5', 0, 7); + T('85750000000000000000000000000000000000000001', '85750000000000000000000000000000000000000000.5', 0, 7); + T('-357280726879877087440504485199000000000000000000000', '-357280726879877087440504485199000000000000000000000.5', 0, 7); + T('-4341299477000000000000000000000', '-4341299477000000000000000000000.5', 0, 7); + T('31902000001', '31902000000.5', 0, 7); + T('333458122140379389691720067000000000000000000000000000000000000000000001', '333458122140379389691720067000000000000000000000000000000000000000000000.5', 0, 7); + T('-459839025400000000000000000000', '-459839025400000000000000000000.5', 0, 7); + T('-82390000000000', '-82390000000000.5', 0, 7); + T('76701', '76700.5', 0, 7); + T('190430490057932227000000000000000000000000000000000000001', '190430490057932227000000000000000000000000000000000000000.5', 0, 7); + T('60159411740605592996051862591038032930184607684088677320000000000000000000000001', '60159411740605592996051862591038032930184607684088677320000000000000000000000000.5', 0, 7); + T('-2234900000', '-2234900000.5', 0, 7); + T('56189665877093832601689082910000000000000000000000000000000000000001', '56189665877093832601689082910000000000000000000000000000000000000000.5', 0, 7); + T('2320000000000000000000000000001', '2320000000000000000000000000000.5', 0, 7); + T('-6305981611547961162835048322675738149574948489012480000000000000', '-6305981611547961162835048322675738149574948489012480000000000000.5', 0, 7); + T('7135722984978446900000000000000000000000000000000000001', '7135722984978446900000000000000000000000000000000000000.5', 0, 7); + T('7739620000000000000000000000000000000000000000000000001', '7739620000000000000000000000000000000000000000000000000.5', 0, 7); + T('-7310071091565097458378697755962864041334940666867342517847595229165394387202247229680000000', '-7310071091565097458378697755962864041334940666867342517847595229165394387202247229680000000.5', 0, 7); + T('5138337172269533148524367880141880518489245800000000000001', '5138337172269533148524367880141880518489245800000000000000.5', 0, 7); + T('-6000', '-6000.5', 0, 7); + T('463879090754017750000000000000001', '463879090754017750000000000000000.5', 0, 7); + T('-629850000000000000000', '-629850000000000000000.5', 0, 7); + T('-205429044500000000000000000000', '-205429044500000000000000000000.5', 0, 7); + T('-5416257015618874559905147873000000000000000000000000000000000000000000000000', '-5416257015618874559905147873000000000000000000000000000000000000000000000000.5', 0, 7); + T('623364421289248201317000000000000001', '623364421289248201317000000000000000.5', 0, 7); + T('911141136528601', '911141136528600.5', 0, 7); + T('-276055672501612195718314543393745315761189100000', '-276055672501612195718314543393745315761189100000.5', 0, 7); + T('-51740866419136700582070000', '-51740866419136700582070000.5', 0, 7); + T('56999862161113789759865220000000000000000000000000000000000000000001', '56999862161113789759865220000000000000000000000000000000000000000000.5', 0, 7); + T('-4111633071145139947224365900000', '-4111633071145139947224365900000.5', 0, 7); + T('697451872400000000000000000000000000000000000000000000000000000000000000000000000000000001', '697451872400000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('5000000000000000000000001', '5000000000000000000000000.5', 0, 7); + T('5350000000000000000000000000000000000000000000000000000001', '5350000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('10529587347000000000000000000000000000000000000000001', '10529587347000000000000000000000000000000000000000000.5', 0, 7); + T('-2219716000000000000000000000000000', '-2219716000000000000000000000000000.5', 0, 7); + T('2211360517426407426481005085784959830631111751668394294258799150000000000001', '2211360517426407426481005085784959830631111751668394294258799150000000000000.5', 0, 7); + T('91550904625902200434312440338781865630142094511605342285084477183074410000000000000000000000001', '91550904625902200434312440338781865630142094511605342285084477183074410000000000000000000000000.5', 0, 7); + T('658054801757836432123543171404589184297504018642564438772090020000000000000000000001', '658054801757836432123543171404589184297504018642564438772090020000000000000000000000.5', 0, 7); + T('79944791864921246971621269400000000000000000000001', '79944791864921246971621269400000000000000000000000.5', 0, 7); + T('360829991900000000000000000000000000000000000000000000000000000000000000000000000000000001', '360829991900000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-1480000000000000000000000000', '-1480000000000000000000000000.5', 0, 7); + T('-64280200000000', '-64280200000000.5', 0, 7); + T('-75061307733616254618964203889755925762439000000', '-75061307733616254618964203889755925762439000000.5', 0, 7); + T('44130000000000000000000001', '44130000000000000000000000.5', 0, 7); + T('44702568841946912396571635908221096745886412397401280570000000000000000000000000001', '44702568841946912396571635908221096745886412397401280570000000000000000000000000000.5', 0, 7); + T('604039501485544598558831356363400000000000000001', '604039501485544598558831356363400000000000000000.5', 0, 7); + T('-19917984485520', '-19917984485520.5', 0, 7); + T('-311996565804449030000000000000000000000000000000000000000000000000000000000000000', '-311996565804449030000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-173984786383490515959556081806759606423524092895768000000', '-173984786383490515959556081806759606423524092895768000000.5', 0, 7); + T('-53469189427189740866342899750820440774650016000000000000000000000000000000000000000000000000', '-53469189427189740866342899750820440774650016000000000000000000000000000000000000000000000000.5', 0, 7); + T('-75', '-75.5', 0, 7); + T('27983400000000000000000001', '27983400000000000000000000.5', 0, 7); + T('-55866209', '-55866209.5', 0, 7); + T('-4236500000000', '-4236500000000.5', 0, 7); + T('2698000000000000000000001', '2698000000000000000000000.5', 0, 7); + T('176755986000000000000000000000000000000000000000000000001', '176755986000000000000000000000000000000000000000000000000.5', 0, 7); + T('10061938000001', '10061938000000.5', 0, 7); + T('-6910178749421869055443921431000000000', '-6910178749421869055443921431000000000.5', 0, 7); + T('3577828651898578960680400000000000000000000000000000000000000000000000001', '3577828651898578960680400000000000000000000000000000000000000000000000000.5', 0, 7); + T('68020066499785661939171192017417847730323210000000000000000000000000000000000001', '68020066499785661939171192017417847730323210000000000000000000000000000000000000.5', 0, 7); + T('-670000000000000000000000000000', '-670000000000000000000000000000.5', 0, 7); + T('-40412630000000000000', '-40412630000000000000.5', 0, 7); + T('-61065894754899019888087081382802643548863976547845002280076808300000000000000', '-61065894754899019888087081382802643548863976547845002280076808300000000000000.5', 0, 7); + T('100000001', '100000000.5', 0, 7); + T('-14822039000000000000000000000000', '-14822039000000000000000000000000.5', 0, 7); + T('-63700', '-63700.5', 0, 7); + T('-15144885754320000000000000000', '-15144885754320000000000000000.5', 0, 7); + T('-5272200000000000000000', '-5272200000000000000000.5', 0, 7); + T('-3247040000000000000', '-3247040000000000000.5', 0, 7); + T('-2681260809546501000', '-2681260809546501000.5', 0, 7); + T('87599201647856572613610170000000000000000000000000000000000000001', '87599201647856572613610170000000000000000000000000000000000000000.5', 0, 7); + T('250000000000000000000000000000000000000000001', '250000000000000000000000000000000000000000000.5', 0, 7); + T('14130422050230001', '14130422050230000.5', 0, 7); + T('-215000000000000000000000000000000000000000000000000000000000000000000000000', '-215000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-43726827420000000', '-43726827420000000.5', 0, 7); + T('-4800000000000000000000000000000000000000000000000000000000000000000', '-4800000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-7300000000000000000000000000', '-7300000000000000000000000000.5', 0, 7); + T('491352128092860358920632352122032679985453000001', '491352128092860358920632352122032679985453000000.5', 0, 7); + T('-882188546069284263665240261471556461467006545965824525162469092995249760000', '-882188546069284263665240261471556461467006545965824525162469092995249760000.5', 0, 7); + T('-85741667839249074', '-85741667839249074.5', 0, 7); + T('-527599500272614000000000000000000000000000000000000000000000000000000000000000000000000000000000', '-527599500272614000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-832820000000000', '-832820000000000.5', 0, 7); + T('-198601973381063265872709695924943530652918000000000000000000', '-198601973381063265872709695924943530652918000000000000000000.5', 0, 7); + T('-10000', '-10000.5', 0, 7); + T('-673944669918113000000000000000000000000000000', '-673944669918113000000000000000000000000000000.5', 0, 7); + T('-84188225', '-84188225.5', 0, 7); + T('771154817579711197000000000000000000000000000000000000000000000000001', '771154817579711197000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-87389583669272781200000000000000000000000000000000000', '-87389583669272781200000000000000000000000000000000000.5', 0, 7); + T('2626469664216538014114045286014123593449500000001', '2626469664216538014114045286014123593449500000000.5', 0, 7); + T('-696131077975000000000000', '-696131077975000000000000.5', 0, 7); + T('-78690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '-78690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-442122610891418980859993032200000', '-442122610891418980859993032200000.5', 0, 7); + T('5661090000000000000000000000000000000000000000000000000000000000000000000000000000001', '5661090000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-407000000000000000000', '-407000000000000000000.5', 0, 7); + T('729350422974116892063715545463978850831800000000001', '729350422974116892063715545463978850831800000000000.5', 0, 7); + T('637954990213103000000001', '637954990213103000000000.5', 0, 7); + T('-1138365762514721521483834034584523726374412779304481429041180049963600000', '-1138365762514721521483834034584523726374412779304481429041180049963600000.5', 0, 7); + T('2475696728487804739525182918139219026008027679054000000000000000000000000000000000001', '2475696728487804739525182918139219026008027679054000000000000000000000000000000000000.5', 0, 7); + T('66193237237200326100000000000000000001', '66193237237200326100000000000000000000.5', 0, 7); + T('663179971604113808385191042094969369727970974320403970845752700000000001', '663179971604113808385191042094969369727970974320403970845752700000000000.5', 0, 7); + T('596157270311242', '596157270311241.5', 0, 7); + T('-430859454062137256578640000000000000000000000000000000000000000', '-430859454062137256578640000000000000000000000000000000000000000.5', 0, 7); + T('7032813000000000001', '7032813000000000000.5', 0, 7); + T('767314152225968313318624830508438163176729385050170000000000000000001', '767314152225968313318624830508438163176729385050170000000000000000000.5', 0, 7); + T('-321648005175685895332610984400000000000', '-321648005175685895332610984400000000000.5', 0, 7); + T('-5914848242008475427391535555998338828544179518249385611394025548931079438027758333803040000000000', '-5914848242008475427391535555998338828544179518249385611394025548931079438027758333803040000000000.5', 0, 7); + T('73480016864560536978879028863212252705530701', '73480016864560536978879028863212252705530700.5', 0, 7); + T('8976064818931304755883643401472118930622270000000000000001', '8976064818931304755883643401472118930622270000000000000000.5', 0, 7); + T('-5079754732761006567963078886040778070', '-5079754732761006567963078886040778070.5', 0, 7); + T('-51002521076071416214838521445923939000000000', '-51002521076071416214838521445923939000000000.5', 0, 7); + T('8684049955981816069703979854267267479779343491340480759376275884260000000000000000000000000001', '8684049955981816069703979854267267479779343491340480759376275884260000000000000000000000000000.5', 0, 7); + T('37507194800178617805104432695868625191287264624719442564304569000000000000000000000000000000001', '37507194800178617805104432695868625191287264624719442564304569000000000000000000000000000000000.5', 0, 7); + T('-4281839065682230128346600112666094892582742848537366052855118901071834009400000000000000', '-4281839065682230128346600112666094892582742848537366052855118901071834009400000000000000.5', 0, 7); + T('-333000', '-333000.5', 0, 7); + T('-502583575785454685986915469822211140422238465305000000000000000000000000000000000000', '-502583575785454685986915469822211140422238465305000000000000000000000000000000000000.5', 0, 7); + T('-32030575969596778652213137431653825274000000000000000000', '-32030575969596778652213137431653825274000000000000000000.5', 0, 7); + T('-4506117101680962000000000000000000000000', '-4506117101680962000000000000000000000000.5', 0, 7); + T('-64730463575631254944664602047280130000000000000000000000000000000000000', '-64730463575631254944664602047280130000000000000000000000000000000000000.5', 0, 7); + T('27570663944600021244014689614081019825668139000000000000000000000000001', '27570663944600021244014689614081019825668139000000000000000000000000000.5', 0, 7); + T('-350302102100000000000000000', '-350302102100000000000000000.5', 0, 7); + T('-3918501626000000000', '-3918501626000000000.5', 0, 7); + T('51812774862668048505100000000000000000000000000000000000000000000000000000000001', '51812774862668048505100000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-61696491490996741116958188157141279933341663428216950000000000000000000000', '-61696491490996741116958188157141279933341663428216950000000000000000000000.5', 0, 7); + T('4656808510000000000000000000000000000000000000000000000000000000000000000001', '4656808510000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('23272197523886798346038846952829185419450839280000000000000000000000000000000000000001', '23272197523886798346038846952829185419450839280000000000000000000000000000000000000000.5', 0, 7); + T('4065544662345173976170000000000000000000000000000000001', '4065544662345173976170000000000000000000000000000000000.5', 0, 7); + T('-422635258000000000000000000000000000000000000000000000000000', '-422635258000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-3582000', '-3582000.5', 0, 7); + T('7740826542065848739126877465966868569935787226324870000000000000000001', '7740826542065848739126877465966868569935787226324870000000000000000000.5', 0, 7); + T('1614965644012243386199869835574326000000001', '1614965644012243386199869835574326000000000.5', 0, 7); + T('-20000', '-20000.5', 0, 7); + T('-2291933618897112688229402464046600000000000000000000000000000000000000000000000000000000000000', '-2291933618897112688229402464046600000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-663605069281623297326832485568849000000000000000000000000000000000000000000000000000000000000000000', '-663605069281623297326832485568849000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('1939060273775317149434400000000000000000000000000000000000000000000000000000000000000000000001', '1939060273775317149434400000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-726114440793216017690000000000000000000000', '-726114440793216017690000000000000000000000.5', 0, 7); + T('-8529164154875627047383959874881458179234088946000000000000000000000000000000000000000000000000000', '-8529164154875627047383959874881458179234088946000000000000000000000000000000000000000000000000000.5', 0, 7); + T('359551952970277110582000000000000000000000000000000000001', '359551952970277110582000000000000000000000000000000000000.5', 0, 7); + T('-6822800000000000000000000000000000000000000000000000', '-6822800000000000000000000000000000000000000000000000.5', 0, 7); + T('28024094231179167233916852000000000000000000000000000000001', '28024094231179167233916852000000000000000000000000000000000.5', 0, 7); + T('-5768619642107599734543714041179604138353000000000000', '-5768619642107599734543714041179604138353000000000000.5', 0, 7); + T('-4336937232847962038320625210133958133684710802758818489207914168472208196240530780800000', '-4336937232847962038320625210133958133684710802758818489207914168472208196240530780800000.5', 0, 7); + T('294276367161162465235912532501878152936548550758709465137169762240500722165978566', '294276367161162465235912532501878152936548550758709465137169762240500722165978565.5', 0, 7); + T('-5853377924485346629722284422247261298818024606786760212628942481993981005105147485025005541304000', '-5853377924485346629722284422247261298818024606786760212628942481993981005105147485025005541304000.5', 0, 7); + T('-57376528507859392114198303459327987043203713812970277355663102705761801186615364048872085338570', '-57376528507859392114198303459327987043203713812970277355663102705761801186615364048872085338570.5', 0, 7); + T('8981899774674151341273723045246779558611526093370000000000000000000000000000001', '8981899774674151341273723045246779558611526093370000000000000000000000000000000.5', 0, 7); + T('6880184505510000000000000000000000000000000000000000000000000000000000000000000000001', '6880184505510000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-9144765542574759986504560099796367000000000000000000000000000000000000000000000000000000000000000000', '-9144765542574759986504560099796367000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('-33550940230832658386583641510', '-33550940230832658386583641510.5', 0, 7); + T('570500000001', '570500000000.5', 0, 7); + T('21171552652016197991647323966415490225947817225636864710000000000000000000000000001', '21171552652016197991647323966415490225947817225636864710000000000000000000000000000.5', 0, 7); + T('-219451479377926100000000000000000000000', '-219451479377926100000000000000000000000.5', 0, 7); + T('-46023648500000000000000000000000000000000000000000000000', '-46023648500000000000000000000000000000000000000000000000.5', 0, 7); + T('-5788386698147635042359128255204287799666980072971472360314579333990755726292753882057820000', '-5788386698147635042359128255204287799666980072971472360314579333990755726292753882057820000.5', 0, 7); + T('48425486699992611674833028561543095971459492320411160921', '48425486699992611674833028561543095971459492320411160920.5', 0, 7); + T('-59344633366981652200000000000', '-59344633366981652200000000000.5', 0, 7); + T('-65482014253687833342600000000000000000000000', '-65482014253687833342600000000000000000000000.5', 0, 7); + T('-30128014553929563000000000000000000000000000000000000000000000000000000000000', '-30128014553929563000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('794768001', '794768000.5', 0, 7); + T('-150865959000000000000000000000000000000000000000000000000000000000000000000000000000000', '-150865959000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('873381282566874884976602503384155621488078946785261238', '873381282566874884976602503384155621488078946785261237.5', 0, 7); + T('-76364822618102400000000000000000000000000000000000000000000000000', '-76364822618102400000000000000000000000000000000000000000000000000.5', 0, 7); + T('1590000000000000000000000000000000000000000000000000000000001', '1590000000000000000000000000000000000000000000000000000000000.5', 0, 7); + T('15883352501', '15883352500.5', 0, 7); + T('-1678796930161119374892', '-1678796930161119374892.5', 0, 7); + T('7519225332612480000000000000001', '7519225332612480000000000000000.5', 0, 7); + T('26782458868551013018628206420511402980374696236993201', '26782458868551013018628206420511402980374696236993200.5', 0, 7); + T('84182962247257426278629190001', '84182962247257426278629190000.5', 0, 7); + T('-674633568509895706371390517304490463246553534599391649648000000', '-674633568509895706371390517304490463246553534599391649648000000.5', 0, 7); + T('2036599383754410655598351317310763047828000000000000000000000000000001', '2036599383754410655598351317310763047828000000000000000000000000000000.5', 0, 7); + T('-1747000000', '-1747000000.5', 0, 7); + T('3960685307896400000000000001', '3960685307896400000000000000.5', 0, 7); + T('-1', '-1.5', 0, 7); + T('5', '4.5', 0, 7); + T('-8542007911699875753350816000000000', '-8542007911699875753350816000000000.5', 0, 7); + T('229448019839399741', '229448019839399740.5', 0, 7); + T('4340972004000000000000000000000000000000000001', '4340972004000000000000000000000000000000000000.5', 0, 7); + T('-773300000000', '-773300000000.5', 0, 7); + T('7155533863912051817808706333952649054169243324075500000000000000000000000000000000001', '7155533863912051817808706333952649054169243324075500000000000000000000000000000000000.5', 0, 7); + T('994879015661912752196001000000000000000001', '994879015661912752196001000000000000000000.5', 0, 7); + T('9735231726716596452594218428908047051010710000000000000000000000000000000001', '9735231726716596452594218428908047051010710000000000000000000000000000000000.5', 0, 7); + T('830000001', '830000000.5', 0, 7); + T('-621154', '-621154.5', 0, 7); + T('-7026505943196190557292140834274961200000000', '-7026505943196190557292140834274961200000000.5', 0, 7); + T('-5698210301557000000000000000000000000000', '-5698210301557000000000000000000000000000.5', 0, 7); + T('633325185790000001', '633325185790000000.5', 0, 7); + T('-64165596081004870', '-64165596081004870.5', 0, 7); + T('-41646941216693066756777307741427764177371639363417043000000000000000000000000000000000000000', '-41646941216693066756777307741427764177371639363417043000000000000000000000000000000000000000.5', 0, 7); + T('-30276599950453', '-30276599950453.5', 0, 7); + T('844934410001', '844934410000.5', 0, 7); + T('193536068479533070654088534028865405146725922969081990000000000000000000000000001', '193536068479533070654088534028865405146725922969081990000000000000000000000000000.5', 0, 7); + T('3571390090807278635466910226000000000001', '3571390090807278635466910226000000000000.5', 0, 7); + T('33758731615573853269038256552240314238547949393669248932000000000000000000000000000000000000000001', '33758731615573853269038256552240314238547949393669248932000000000000000000000000000000000000000000.5', 0, 7); + + // rounding mode 8 + T('66201703687996196493948073895661219741.79732939050299983848272445', '66201703687996196493948073895661219741.79732939050299983848272444531659415942809827190951', 26, 8); + T('-432784391834045276975262545157922', '-432784391834045276975262545157922', 28, 8); + T('1149345737914160007440457748332143986414.9571', '1149345737914160007440457748332143986414.957136799115537152433594986979', 4, 8); + T('-8955086490844848921210649185442547', '-8955086490844848921210649185442547', 35, 8); + T('425088038661656538743278817856878424164093767.85670041722429249440202331857043', '425088038661656538743278817856878424164093767.85670041722429249440202331857043013807', 33, 8); + T('-309644694334054373034963302293381012433965117503313464512444644', '-309644694334054373034963302293381012433965117503313464512444644', 15, 8); + T('-6113258580590430007589739873373442564851315606055053637944', '-6113258580590430007589739873373442564851315606055053637944', 20, 8); + T('-79578809228411034521778967729244470830365009197702327546767865195836773388369068481948969.900741', '-79578809228411034521778967729244470830365009197702327546767865195836773388369068481948969.9007405268', 6, 8); + T('-98635952437161220.96618', '-98635952437161220.9661782723695091452045447927505345126085', 5, 8); + T('5306244228965561737.62447596491901907069113187489713', '5306244228965561737.62447596491901907069113187489712907837802453330192181391370636667897993', 32, 8); + T('881494696226260293271264.36459456081728760273917638738994049272140009', '881494696226260293271264.36459456081728760273917638738994049272140008956721', 45, 8); + T('0', '0.0000000000000000398975254', 1, 8); + T('-2966907742563204474300609285105763571411556718257633358168823625207636310562902929129639632', '-2966907742563204474300609285105763571411556718257633358168823625207636310562902929129639632', 59, 8); + T('4815226942078558754202763870371111530259178454324372013168459692655444158537', '4815226942078558754202763870371111530259178454324372013168459692655444158537', 58, 8); + T('89735736519038061687.396102956878866121243318078603705593756032576774631567136', '89735736519038061687.396102956878866121243318078603705593756032576774631567136', 57, 8); + T('-5139206863826452924558709317549576110217185', '-5139206863826452924558709317549576110217185', 10, 8); + T('410799450059.233711597011245238081176283367945619000645947401973880735', '410799450059.23371159701124523808117628336794561900064594740197388073499637579092523992206', 59, 8); + T('-1861173217597843873200339700375118033056165470698896905908777053211294087744', '-1861173217597843873200339700375118033056165470698896905908777053211294087744', 38, 8); + T('0', '-0.00000000000000006595', 11, 8); + T('-5407783849362963393803124142731051275240080145012', '-5407783849362963393803124142731051275240080145012', 20, 8); + T('-34168517091385789116719661427034183841563988149', '-34168517091385789116719661427034183841563988149', 17, 8); + T('5795445846', '5795445846', 2, 8); + T('-208487757.4947118655668802941616876105973734970142836273035', '-208487757.49471186556688029416168761059737349701428362730350350449276293511255885603228665646', 49, 8); + T('796420627119046.3257623490013937727996276166953155756033788473505312', '796420627119046.325762349001393772799627616695315575603378847350531229664668561098545265510186232639', 52, 8); + T('-764919.2520201660863571182709007', '-764919.252020166086357118270900678004721225081351152', 25, 8); + T('1711778256244239.6432803280511675051780680294577052774533541577657', '1711778256244239.643280328051167505178068029457705277453354157765665691237184194081804579550628', 49, 8); + T('-5303437679211478868344273161947940791429451823884596427841.337465439843', '-5303437679211478868344273161947940791429451823884596427841.337465439843017473765793878253395', 12, 8); + T('7894537442022400587189513519.07614612464633', '7894537442022400587189513519.0761461246463343271909512896919921757738101749442', 14, 8); + T('-852162476174009362657224788407373904292.060834168512303', '-852162476174009362657224788407373904292.0608341685123032205848264284500246825574591705678252075211', 15, 8); + T('12263206466360474155347209378267179331790532796950452218705592936654936382476475166224', '12263206466360474155347209378267179331790532796950452218705592936654936382476475166224', 50, 8); + T('286739.751858335177', '286739.75185833517663282910779633883075386374977590348991259883429540928694021465959067075843', 12, 8); + T('-1762282392342322391451423.95138646013724750227039851', '-1762282392342322391451423.9513864601372475022703985059087755006296016821468', 26, 8); + T('-87248674085961920378373182112140016225793103119799077836448861613155523873993867027371', '-87248674085961920378373182112140016225793103119799077836448861613155523873993867027371', 18, 8); + T('-74092308.573751689088057271221141335221234751439463510099422792', '-74092308.5737516890880572712211413352212347514394635100994227920017954257506493659703', 55, 8); + T('-20760047489279', '-20760047489279', 11, 8); + T('-0.0000000000000000000513', '-0.00000000000000000005125373071584388602667', 22, 8); + T('553838249451575699354166087894479427887538748821541', '553838249451575699354166087894479427887538748821541', 49, 8); + T('1423248954610786032951054974531156745902169', '1423248954610786032951054974531156745902169', 18, 8); + T('-455513127477032432052165898762670896803882354533268751050143', '-455513127477032432052165898762670896803882354533268751050143', 59, 8); + T('-0.112326948668716031138310473397726709406273', '-0.1123269486687160311383104733977267094062725419900260888852399393388797266733492952', 42, 8); + T('220496431007708742488102987834369132032989458669949404568519039366030060413', '220496431007708742488102987834369132032989458669949404568519039366030060413', 50, 8); + T('-0.00000000000325811433456091828013955203891346578756293444537', '-0.000000000003258114334560918280139552038913465787562934445372834409816', 59, 8); + T('-457504832634108650876363681507414265221', '-457504832634108650876363681507414265221', 40, 8); + T('-424186796605368850991004250916', '-424186796605368850991004250916', 31, 8); + T('656926.697474746923763802615025035828093602941156686984327', '656926.6974747469237638026150250358280936029411566869843273144638083499809', 51, 8); + T('0.000000000000000005397242366818203996', '0.00000000000000000539724236681820399616017543171572414502390014285527039717119783434813739074418', 36, 8); + T('1090684201.48935564', '1090684201.4893556381714726135555970595559735352509535058941537207185560561831', 8, 8); + T('69374039942373.3254580716722156975426911', '69374039942373.32545807167221569754269111', 25, 8); + T('9113500111924420134168224777108947212846008765793966704145', '9113500111924420134168224777108947212846008765793966704145.431817424332', 0, 8); + T('30823.68236248962442', '30823.682362489624415303797164930829692243120825797614790110298558566891', 14, 8); + T('69510854030784689448691205235110864752020705135715463000353620416781464635565813359264377', '69510854030784689448691205235110864752020705135715463000353620416781464635565813359264377', 31, 8); + T('0.000000000000058862529560768', '0.0000000000000588625295607683198127617212575718008706568858558601170114', 27, 8); + T('-17848760834059263091993243721898202503622421343253601508', '-17848760834059263091993243721898202503622421343253601508', 23, 8); + T('-236803670466123595831349021922016939098010857534796192', '-236803670466123595831349021922016939098010857534796192', 21, 8); + T('-102.198091649633311839521389772950955038', '-102.198091649633311839521389772950955038425200879430185191719111255573192340640709444075063237279', 36, 8); + T('326989728850104213753.8335807775873', '326989728850104213753.833580777587346167082725672681674988508273423', 13, 8); + T('-122.0291061318001501339747396650645162229074064349133', '-122.029106131800150133974739665064516222907406434913336614242606358', 49, 8); + T('-831410519711671441355', '-831410519711671441355', 16, 8); + T('-253620339160158444333927384234542070578', '-253620339160158444333927384234542070578', 9, 8); + T('-7348280719663124699843895522030312381252008175705772142979880256543246476384943464878409', '-7348280719663124699843895522030312381252008175705772142979880256543246476384943464878409', 50, 8); + T('6664146236447212814277572.0999056094992', '6664146236447212814277572.099905609499231171', 13, 8); + T('-45131966684154664823729921239622741743388388032363350525350351', '-45131966684154664823729921239622741743388388032363350525350351', 54, 8); + T('-40833932047032323008.1477121334939888606975457955366723579560220387882733564215', '-40833932047032323008.14771213349398886069754579553667235795602203878827335642149629', 59, 8); + T('-610147668317151494655953188414347.513062160034037994471478116919185602379422684392', '-610147668317151494655953188414347.5130621600340379944714781169191856023794226843916275138433253', 48, 8); + T('68480060832241105622.0309399631877587294933', '68480060832241105622.0309399631877587294932744437074077578726838602811862463', 22, 8); + T('194232568635561193478658679661926001447122084303161530447723323350451591165847396942433467', '194232568635561193478658679661926001447122084303161530447723323350451591165847396942433467', 53, 8); + T('301488112835117984681216562501634945527931425479867644918437173989635003275', '301488112835117984681216562501634945527931425479867644918437173989635003275', 45, 8); + T('-6851957382967116770156790585389162381351471623360536810366727929091181605285629993', '-6851957382967116770156790585389162381351471623360536810366727929091181605285629993', 58, 8); + T('-47712893537299565607733312598395281973889458872107933076', '-47712893537299565607733312598395281973889458872107933076', 22, 8); + T('0', '0.0000000000000000859670879420002853724584828504688225809552905002764241975507797099562754888', 9, 8); + T('0.004432633947152', '0.00443263394715151891254682580745644237652322307', 15, 8); + T('69262889569389462605539771733767837082438188', '69262889569389462605539771733767837082438188', 44, 8); + T('-3891963561578294887852441074022523556630020645085806037968401206141034018227239650504315', '-3891963561578294887852441074022523556630020645085806037968401206141034018227239650504315', 29, 8); + T('517455700713583735581011224355747758835072', '517455700713583735581011224355747758835072', 33, 8); + T('3286559014183405381681284382257494050726761990059', '3286559014183405381681284382257494050726761990059', 8, 8); + T('-63655023123174740325953043492297676892760601721778538384', '-63655023123174740325953043492297676892760601721778538384', 38, 8); + T('-3616486456360129835721411345', '-3616486456360129835721411345', 25, 8); + T('5302046753446852414769871718814521746.07821211750152648928158273941305583283', '5302046753446852414769871718814521746.07821211750152648928158273941305583283', 39, 8); + T('7748631583295908.9', '7748631583295908.93', 1, 8); + T('698840974194462996670670779801788898006147', '698840974194462996670670779801788898006147', 39, 8); + T('5115298308143358514121930351981670511745255186478118611705507709680743067049815465', '5115298308143358514121930351981670511745255186478118611705507709680743067049815465', 3, 8); + T('-612675133207.913892413366818256954190842994', '-612675133207.91389241336681825695419084299362927950456589721655286975937658897251713491', 30, 8); + T('-23760765404011175917916548731905430881375361039', '-23760765404011175917916548731905430881375361039', 37, 8); + T('1.537325640830455556577284161295194462534093392', '1.53732564083045555657728416129519446253409339155685994767622443301510890518218163627512409985028874', 45, 8); + T('85488099619561530625377.4192191219015077695264716986497372124636', '85488099619561530625377.41921912190150776952647169864973721246357123472247253263193079654814', 40, 8); + T('-0.000000000000000000050862650388973728733959', '-0.00000000000000000005086265038897372873395911474890963231183754251032093750396822', 42, 8); + T('5526230849632961555873105581682031232032076652', '5526230849632961555873105581682031232032076652', 33, 8); + T('5.35603726623675478881750325031077857085', '5.3560372662367547888175032503107785708523437510821741384889170003345091454641716', 38, 8); + T('-269', '-268.5690822533536300367', 0, 8); + T('5757355935873247215361', '5757355935873247215361', 7, 8); + T('246850624649836235549257820435684838216256457058297475944623153518238931267', '246850624649836235549257820435684838216256457058297475944623153518238931267', 29, 8); + T('-692278289514395596822246030611', '-692278289514395596822246030611', 29, 8); + T('5011884712679298647620944560807194982963074154957144073408073782.012902676141595080232825022', '5011884712679298647620944560807194982963074154957144073408073782.01290267614159508023282502208799', 27, 8); + T('-1601088319576953191651975449908738521284', '-1601088319576953191651975449908738521284', 13, 8); + T('-4414644735536629652380210044243136361770887495321', '-4414644735536629652380210044243136361770887495321', 1, 8); + T('0.0000000266191991852311627685858864306795', '0.0000000266191991852311627685858864306795247265183872439736762861', 40, 8); + T('0.000428744212691549043417829548631538073876', '0.0004287442126915490434178295486315380738764488424270530614427525474179623980503815', 42, 8); + T('-0.000000000047', '-0.000000000046905000977649660171', 12, 8); + T('-0.0000000000000000012796854596101', '-0.0000000000000000012796854596101112', 31, 8); + T('0', '0.00000000000000007196452', 10, 8); + T('-86284478039635020.88154442791139797502881588209234679333543929358069793135', '-86284478039635020.8815444279113979750288158820923467933354392935806979313474421195014946654603', 56, 8); + T('345.7906584145207214494773389942349751491', '345.79065841452072144947733899423497514905046668326852378724478389764822926854507387015', 37, 8); + T('-30568645130233018977700516286545868158267620169281990416832482986193', '-30568645130233018977700516286545868158267620169281990416832482986193', 43, 8); + T('37665450910098298765355672911622917', '37665450910098298765355672911622917', 25, 8); + T('-47992849', '-47992849', 1, 8); + T('-2289649689772323.458246269770512751882357714601759751619429', '-2289649689772323.458246269770512751882357714601759751619428559799708215001792781583', 42, 8); + T('205469749210966781349300242506558230047710955467288617413646386581699317243', '205469749210966781349300242506558230047710955467288617413646386581699317243', 25, 8); + T('-32056221565262365438607056649704856185526855802381047619081869', '-32056221565262365438607056649704856185526855802381047619081869', 58, 8); + T('-69387756776107867448507.5597896113493378218866042115232132608', '-69387756776107867448507.5597896113493378218866042115232132608308527098602632063024', 37, 8); + T('0.000000820570605855677101583661555709', '0.00000082057060585567710158366155570875342023482713606', 36, 8); + T('69207211379716780147073990298041848170635366340631501124460602562', '69207211379716780147073990298041848170635366340631501124460602562', 14, 8); + T('74433853443.711309574611828991681415199898999', '74433853443.711309574611828991681415199898998743211590771456662685697848481543071016889', 33, 8); + T('560136636765721.54952783053237', '560136636765721.5495278305323717513438', 14, 8); + T('66999767298684323378394675772410013.28969441028366360358403105373652837191570809785171273', '66999767298684323378394675772410013.28969441028366360358403105373652837191570809785171273', 54, 8); + T('68347634798085780973515205391681470162522109665463538490773666914168258894444', '68347634798085780973515205391681470162522109665463538490773666914168258894444', 24, 8); + T('7697922274864830543190030076775438', '7697922274864830543190030076775438', 20, 8); + T('278983937451071130016483992277822580223855875348190818.113846802586205314111233', '278983937451071130016483992277822580223855875348190818.11384680258620531411123264767447310686', 24, 8); + T('-18302541929262108151338961040808216477301', '-18302541929262108151338961040808216477301', 13, 8); + T('-917241354938259400580805453251192909557123968816077324554688.2632819065881148284', '-917241354938259400580805453251192909557123968816077324554688.263281906588114828403637', 20, 8); + T('45819385064609897668758693853072194843813609788794421314', '45819385064609897668758693853072194843813609788794421314', 24, 8); + T('-523986068289618485266030887200551590040084842900599214834165319686', '-523986068289618485266030887200551590040084842900599214834165319686', 18, 8); + T('7852063910359971787869622352527374328444882187005886753422152922497829760479356719', '7852063910359971787869622352527374328444882187005886753422152922497829760479356719', 38, 8); + T('0.0000000000247091', '0.00000000002470914629639547358185782547191865524156377299551121577023612761119607882', 16, 8); + T('440821431387771614013770385588.03139517196419817521106343238223731692566664358823035313142', '440821431387771614013770385588.03139517196419817521106343238223731692566664358823035313142186102', 59, 8); + T('-7.391761264366265837615347413187815498740935', '-7.391761264366265837615347413187815498740934589988129058805961426', 42, 8); + T('41794466666300650385807822364400569925816612741244088085922306361105114', '41794466666300650385807822364400569925816612741244088085922306361105114', 48, 8); + T('0', '0.0000000000000000038802542700538271039582060794252268615576361549601345439908', 15, 8); + T('35343256389819549943056605473715229852', '35343256389819549943056605473715229852', 9, 8); + T('-818984458678111129545223433258309212674764516267725284171918954770229.24954611425', '-818984458678111129545223433258309212674764516267725284171918954770229.249546114248715', 11, 8); + T('-7230691209.6753920167936103432715638', '-7230691209.67539201679361034327156375593719410288588', 25, 8); + T('-37368231656156642628245727340400846248755238210404670712676232100034223145733', '-37368231656156642628245727340400846248755238210404670712676232100034223145733', 9, 8); + T('-21531849930403836723.549953750896490206543923575188', '-21531849930403836723.549953750896490206543923575188115922', 30, 8); + T('0.00255705840261906787264907412348588448784776243920353187679', '0.0025570584026190678726490741234858844878477624392035318767939168622896408327924273682986', 59, 8); + T('-72553243708', '-72553243708', 12, 8); + T('-0.0000000000008856317899193899991568647156407142735462649', '-0.0000000000008856317899193899991568647156407142735462649439073', 55, 8); + T('0.00000000000000002567536449680036305412256336138415403', '0.0000000000000000256753644968003630541225633613841540257438901', 53, 8); + T('-2861414563473219891469834741889616', '-2861414563473219891469834741889616', 23, 8); + T('76315153632082828597570739187599689956646538104750912445681366544986223082108062643693', '76315153632082828597570739187599689956646538104750912445681366544986223082108062643693', 58, 8); + T('-36017699886964287552542855178455727562394623', '-36017699886964287552542855178455727562394623', 10, 8); + T('-8039050083841916177617168262552140531689510609781882', '-8039050083841916177617168262552140531689510609781882', 7, 8); + T('-75564522183815281041495497607512529468573045762495628', '-75564522183815281041495497607512529468573045762495628', 47, 8); + T('-0.0000000000000028959465568008886578', '-0.000000000000002895946556800888657768819798024109048410779074303487219485197865657', 34, 8); + T('284523781858209826579679727341459643256753883111577735224', '284523781858209826579679727341459643256753883111577735224', 17, 8); + T('855998775255794984240155453520859416491', '855998775255794984240155453520859416491', 2, 8); + T('-138150439221363970723340802061921303881866895', '-138150439221363970723340802061921303881866895', 10, 8); + T('-4733097249983425263123260326467561884629992599437098006772507345.39029977752721930256', '-4733097249983425263123260326467561884629992599437098006772507345.39029977752721930256036990911', 21, 8); + T('-0.000000000000007891361298828364332998396426', '-0.0000000000000078913612988283643329983964258020880117022087729997106646341', 42, 8); + T('0', '-0.00000000000000000005232135595017205522', 14, 8); + T('6004269558735103787710387970518297095870881046535997656345481925243412966194', '6004269558735103787710387970518297095870881046535997656345481925243412966194', 47, 8); + T('-79790582292297723097183916661305043162178089556664159', '-79790582292297723097183916661305043162178089556664159', 50, 8); + T('868633879339750610248.8719201777840534154224473677127177', '868633879339750610248.8719201777840534154224473677127177456222197014169473933', 34, 8); + T('-35193645352688585041808187638769417251065373576.318111185472303777399956841', '-35193645352688585041808187638769417251065373576.3181111854723037773999568411745', 27, 8); + T('-914456499778647874582727776237', '-914456499778647874582727776237', 32, 8); + T('-0.0000000082872578546868214209908047326678355', '-0.0000000082872578546868214209908047326678354507848678952930148008797982168429352770394', 43, 8); + T('43709030067329728774375267529433280243651742049220974', '43709030067329728774375267529433280243651742049220974', 33, 8); + T('-118010.225141375666233966986827467153774', '-118010.2251413756662339669868274671537736196650024082171238583391369', 33, 8); + T('23068625486429.2799608174027102', '23068625486429.279960817402710215', 16, 8); + T('-704545071947407222321207465462220615566', '-704545071947407222321207465462220615566', 11, 8); + T('14375372697678701853.68596153637061158763127684500719629374218600432501980003', '14375372697678701853.68596153637061158763127684500719629374218600432501980003395932938491', 56, 8); + T('-634203070629093.01725952920860266543339878670159', '-634203070629093.01725952920860266543339878670158808711459045809411073373681', 32, 8); + T('-3341330166644850447365712680571164098505980754357561658133', '-3341330166644850447365712680571164098505980754357561658133', 40, 8); + T('910.78407278867854608277033163963661161209449973499620413', '910.784072788678546082770331639636611612094499734996204129162575412', 53, 8); + T('-74657560210242704554422776032639005330.452019595638291987749374750110848265985', '-74657560210242704554422776032639005330.45201959563829198774937475011084826598462291919991235622365', 39, 8); + T('-470224275317729788265083630786402723652606489581196807283808757461349811868180256', '-470224275317729788265083630786402723652606489581196807283808757461349811868180256', 30, 8); + T('1548861035159077785270281667791270424763253422330193371408', '1548861035159077785270281667791270424763253422330193371408', 39, 8); + T('572490113577029960833837229080147476156510343599468021', '572490113577029960833837229080147476156510343599468021', 53, 8); + T('643806729774291640618659309341323785812549216455045455115986466479734', '643806729774291640618659309341323785812549216455045455115986466479734', 59, 8); + T('-0.0000000000000028832370380139686337031164', '-0.00000000000000288323703801396863370311643469222712049186100527525476992', 40, 8); + T('-7189938709688507888323269632860908682422507867792553339856907644331197', '-7189938709688507888323269632860908682422507867792553339856907644331197', 30, 8); + T('-146458270834000351215786805348778503451274270331400574216733292', '-146458270834000351215786805348778503451274270331400574216733292', 53, 8); + T('-0.00000354623728604661459577622785392304170907', '-0.00000354623728604661459577622785392304170906690465556766249117223748961549701782239', 44, 8); + T('2952633202166896462404492499220990667245459193', '2952633202166896462404492499220990667245459193', 18, 8); + T('-40658243711269788486614574882823442616218332307814675126120483345884287', '-40658243711269788486614574882823442616218332307814675126120483345884287', 35, 8); + T('-834746.130874791201613251929057183287554326432137609', '-834746.13087479120161325192905718328755432643213760902671', 45, 8); + T('-2740259405495848461193558179879029219965128521581766328834436598769356651654532', '-2740259405495848461193558179879029219965128521581766328834436598769356651654532', 21, 8); + T('-8698435709878691464261', '-8698435709878691464261', 24, 8); + T('-4854.3960864787394404064207224627696634919', '-4854.39608647873944040642072246276966349186696614541346739', 37, 8); + T('-9046342079405156048260593050430368806', '-9046342079405156048260593050430368806', 13, 8); + T('-0.0004000833397214913009450572039483114734165469785', '-0.0004000833397214913009450572039483114734165469785253268388', 49, 8); + T('-23588224945151001125418674123739250937217610361057096547', '-23588224945151001125418674123739250937217610361057096547', 50, 8); + T('-7464158850661582447.135098739', '-7464158850661582447.135098739246', 9, 8); + T('-1120821804664354.438155', '-1120821804664354.438154570308756776805085557342686456892402105759461492146293434', 6, 8); + T('0', '0.00000000000000702791991239841893249958321', 6, 8); + T('-0.0000000000000000000919', '-0.00000000000000000009190566893831833839554', 22, 8); + T('64989966866.84348665817102620621477817048264530787181', '64989966866.8434866581710262062147781704826453078718131', 41, 8); + T('-264353242609519937462651086142583415212476095512802343', '-264353242609519937462651086142583415212476095512802343', 45, 8); + T('-319660042.9060556155850335364548437', '-319660042.90605561558503353645484368385673087962874009065861', 25, 8); + T('782876222924236185663713124322579837808875447927.750634733', '782876222924236185663713124322579837808875447927.750634732835826802912809356260197', 9, 8); + T('-4820197230775172031472341884498005296391387635256546231303736492', '-4820197230775172031472341884498005296391387635256546231303736492', 59, 8); + T('-45476814068689923138802955966005002117064', '-45476814068689923138802955966005002117064', 40, 8); + T('86962370844284513181.323731711208686245837285176301766411', '86962370844284513181.323731711208686245837285176301766411023449553787804266696487', 36, 8); + T('404346421681633141340078973828115038719203880378027932732656742417', '404346421681633141340078973828115038719203880378027932732656742417', 20, 8); + T('-53694967597040342895345907112.207745463281021175645491335763', '-53694967597040342895345907112.207745463281021175645491335763004711756325', 30, 8); + T('-6559.90160086515960335469008322764225267411067302815351', '-6559.901600865159603354690083227642252674110673028153509381229252097346854', 50, 8); + T('-0.00000000061377507317560820930017891219268306', '-0.00000000061377507317560820930017891219268306242240809651039096286454694883355904014170354', 44, 8); + T('8466762839492012821866.4647006439743751275401538868809', '8466762839492012821866.464700643974375127540153886880890946782195395', 31, 8); + T('8475.6568', '8475.656838687006572512673250060913774957342621772685866238642718847562956066296778675046839230187', 4, 8); + T('3994107783920982224771924508121993204610124753099359206657026721569631', '3994107783920982224771924508121993204610124753099359206657026721569631', 29, 8); + T('-32449538518104.832133372196883764549982574662552753596186838341', '-32449538518104.832133372196883764549982574662552753596186838341255300262261822662991490178499', 48, 8); + T('0.00000000000000005', '0.0000000000000000488345616040752827', 17, 8); + + T('8225834668202811700000', '8225834668202811700000.5', 0, 8); + T('-67268029621398311238261431331851556661886545942854113916050734581000000000001', '-67268029621398311238261431331851556661886545942854113916050734581000000000000.5', 0, 8); + T('4100000', '4100000.5', 0, 8); + T('694900000000000', '694900000000000.5', 0, 8); + T('-2668752017792840000000000000000000000000000000000000000000000000000000000001', '-2668752017792840000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('5138303265393258323808903836559900000000000000000', '5138303265393258323808903836559900000000000000000.5', 0, 8); + T('-61599472977109463564534878506157000000000000000000000000000000001', '-61599472977109463564534878506157000000000000000000000000000000000.5', 0, 8); + T('-706579187032566119663804136174620000000000000000001', '-706579187032566119663804136174620000000000000000000.5', 0, 8); + T('10', '10.5', 0, 8); + T('903942469098308100136613765218227935820271584538277900367517300000000000000000', '903942469098308100136613765218227935820271584538277900367517300000000000000000.5', 0, 8); + T('7259090494485579718152684060350290000000000000000000000000000000000000000000000000000000000', '7259090494485579718152684060350290000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('50', '50.5', 0, 8); + T('-336051', '-336050.5', 0, 8); + T('-359851700000000000000000000000000000000000000000000000000000000000000000000000000000001', '-359851700000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('8300', '8300.5', 0, 8); + T('-5230000000000000000000000000000000000000000000000001', '-5230000000000000000000000000000000000000000000000000.5', 0, 8); + T('-832637338257576743857980873934631876338729504830820328750000000000000000000000000000000001', '-832637338257576743857980873934631876338729504830820328750000000000000000000000000000000000.5', 0, 8); + T('2170', '2170.5', 0, 8); + T('7530960067300000', '7530960067300000.5', 0, 8); + T('-69761077704964968462722176065747076185154464193791511210000000000000000000000000000000000000001', '-69761077704964968462722176065747076185154464193791511210000000000000000000000000000000000000000.5', 0, 8); + T('8951', '8951.5', 0, 8); + T('-62816928986109317245318155705980721116645949369247436234018847714093151000000000001', '-62816928986109317245318155705980721116645949369247436234018847714093151000000000000.5', 0, 8); + T('-273450712038160000001', '-273450712038160000000.5', 0, 8); + T('870651868531859742020859624838429666098184966539196792393834098130000000000000000000', '870651868531859742020859624838429666098184966539196792393834098130000000000000000000.5', 0, 8); + T('7467352850531742535166203140000', '7467352850531742535166203140000.5', 0, 8); + T('-27739701695659117725205758576200000000000001', '-27739701695659117725205758576200000000000000.5', 0, 8); + T('-21575913877090003604970871615441236644670000000000001', '-21575913877090003604970871615441236644670000000000000.5', 0, 8); + T('-84684097772847106401567201003729899910000000000001', '-84684097772847106401567201003729899910000000000000.5', 0, 8); + T('5639766204672194231584787000000000000000000000000000000000000000000000000000000000000000000000', '5639766204672194231584787000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('15504935934287862095572900000000000000000000000', '15504935934287862095572900000000000000000000000.5', 0, 8); + T('-1400577619554361844128289470441748896959600001', '-1400577619554361844128289470441748896959600000.5', 0, 8); + T('-562508502033790781280182919180003097225841259584126808028780000001', '-562508502033790781280182919180003097225841259584126808028780000000.5', 0, 8); + T('462676260328650000000000000000000', '462676260328650000000000000000000.5', 0, 8); + T('80610550887265206737088350828621745655000000000000000000000000000000000000000000000000000000', '80610550887265206737088350828621745655000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-802119959634183327467393167608755000000000000000000000000000000001', '-802119959634183327467393167608755000000000000000000000000000000000.5', 0, 8); + T('78620000000000000000000000000000000000000', '78620000000000000000000000000000000000000.5', 0, 8); + T('810000000000000000000000000000000000', '810000000000000000000000000000000000.5', 0, 8); + T('-3676779349655275521581849548079800000000000000000000000000000000000000000000000000000000001', '-3676779349655275521581849548079800000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-81572917297627759505118569656972784453878787892500000000000001', '-81572917297627759505118569656972784453878787892500000000000000.5', 0, 8); + T('-198003769523621', '-198003769523620.5', 0, 8); + T('5306', '5306.5', 0, 8); + T('-4000000000000000000000000000000000000000001', '-4000000000000000000000000000000000000000000.5', 0, 8); + T('-6964300000000000000000000000000000001', '-6964300000000000000000000000000000000.5', 0, 8); + T('5993000000000000000000', '5993000000000000000000.5', 0, 8); + T('-58', '-57.5', 0, 8); + T('-314705009617969030000000000000000000000000000000000000000001', '-314705009617969030000000000000000000000000000000000000000000.5', 0, 8); + T('6', '6.5', 0, 8); + T('4588255716462680467926051688938462657411100947687253979336100000000000000', '4588255716462680467926051688938462657411100947687253979336100000000000000.5', 0, 8); + T('300', '300.5', 0, 8); + T('-8095535225924203212402801', '-8095535225924203212402800.5', 0, 8); + T('30838279901100000000000000000000000000000000000000000000', '30838279901100000000000000000000000000000000000000000000.5', 0, 8); + T('-644246265100306600000000000001', '-644246265100306600000000000000.5', 0, 8); + T('-7949436643533748183697968284137159105717056926000000000000000000000000000000001', '-7949436643533748183697968284137159105717056926000000000000000000000000000000000.5', 0, 8); + T('5961899981183314783500000000', '5961899981183314783500000000.5', 0, 8); + T('329320658758032654290364416883005342614380587029114737580920000000000000', '329320658758032654290364416883005342614380587029114737580920000000000000.5', 0, 8); + T('-70000000000000000000000000001', '-70000000000000000000000000000.5', 0, 8); + T('-773550954099185953800000000000000000000000000000001', '-773550954099185953800000000000000000000000000000000.5', 0, 8); + T('-71820001', '-71820000.5', 0, 8); + T('6824221413055181208880629906440161900000000000000000000000000000000000000000000', '6824221413055181208880629906440161900000000000000000000000000000000000000000000.5', 0, 8); + T('-293663761783147249577441951060981857156831085100000000000000000000000000000000000000000001', '-293663761783147249577441951060981857156831085100000000000000000000000000000000000000000000.5', 0, 8); + T('-805331726532205040286379140828190238797602490000000000000000000000000000000000000000001', '-805331726532205040286379140828190238797602490000000000000000000000000000000000000000000.5', 0, 8); + T('2627542620785923273450000000000000000000', '2627542620785923273450000000000000000000.5', 0, 8); + T('190055193848119613272218981746041232571688473321679545800000000000000000000000000000000000000000', '190055193848119613272218981746041232571688473321679545800000000000000000000000000000000000000000.5', 0, 8); + T('-61621063888036802203530857476475979818427083600000000000000000000000000000000000000000000000001', '-61621063888036802203530857476475979818427083600000000000000000000000000000000000000000000000000.5', 0, 8); + T('-652127458000489992750000000000000000000000000000000000000000000000001', '-652127458000489992750000000000000000000000000000000000000000000000000.5', 0, 8); + T('7000000000000000000000000', '7000000000000000000000000.5', 0, 8); + T('6533676582995433778209424794015171896011423181700000000000000', '6533676582995433778209424794015171896011423181700000000000000.5', 0, 8); + T('27456600275687693800000000000000000000000000000000000000000000000000000000000000000000000000000000', '27456600275687693800000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-194516150000000000000000001', '-194516150000000000000000000.5', 0, 8); + T('-176140000000001', '-176140000000000.5', 0, 8); + T('85012661713649137873180295487285610000000000000000000000000000000000000', '85012661713649137873180295487285610000000000000000000000000000000000000.5', 0, 8); + T('-37523700000000000000000000000000000000000000000000000000000000000000000000000000000001', '-37523700000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-15124465952376999197073295421688223628463231603610811', '-15124465952376999197073295421688223628463231603610810.5', 0, 8); + T('-5432100777163613256132439687382900000000000000000000000000000000000000000000000001', '-5432100777163613256132439687382900000000000000000000000000000000000000000000000000.5', 0, 8); + T('652000000', '652000000.5', 0, 8); + T('-8507892174157676630256932627461950536321146344662200000000000000000000000000000001', '-8507892174157676630256932627461950536321146344662200000000000000000000000000000000.5', 0, 8); + T('-5780286273116071692453993336522250324675081', '-5780286273116071692453993336522250324675080.5', 0, 8); + T('2885286893929064654337716318113439600000000000000000000000000000000000000000', '2885286893929064654337716318113439600000000000000000000000000000000000000000.5', 0, 8); + T('158421702922228687046272106697601990957751203100000000000000000000000000000000000000000000000000', '158421702922228687046272106697601990957751203100000000000000000000000000000000000000000000000000.5', 0, 8); + T('77845803952870686913386535517781103587210960982825399080400000000000000000000000', '77845803952870686913386535517781103587210960982825399080400000000000000000000000.5', 0, 8); + T('-65458261744123585088042880333251536411447000000000000000000000000000000000000000000000000001', '-65458261744123585088042880333251536411447000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-5514810000000000001', '-5514810000000000000.5', 0, 8); + T('-3837413074391000000000000000000000000000001', '-3837413074391000000000000000000000000000000.5', 0, 8); + T('1891485546514380015490000000000000000000000000', '1891485546514380015490000000000000000000000000.5', 0, 8); + T('-670001', '-670000.5', 0, 8); + T('7365874638887372900000000000', '7365874638887372900000000000.5', 0, 8); + T('80464947550', '80464947550.5', 0, 8); + T('-913091300000000000000000000000000000000000000000000001', '-913091300000000000000000000000000000000000000000000000.5', 0, 8); + T('25911127696762546866341398944677062000000000000000000000000', '25911127696762546866341398944677062000000000000000000000000.5', 0, 8); + T('41448246317918170624465120157939322903000000000000000000000000000000000000000000000000000000000000', '41448246317918170624465120157939322903000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-800000000000000000000000000000000000000000000000000001', '-800000000000000000000000000000000000000000000000000000.5', 0, 8); + T('577447040809749466752886339212451433404458549958939957382201980490000000000000', '577447040809749466752886339212451433404458549958939957382201980490000000000000.5', 0, 8); + T('-57572272809174825641085924940000000000000000000000001', '-57572272809174825641085924940000000000000000000000000.5', 0, 8); + T('31581459400000000000000000000000000000000000000000000000000000000000000000000000000', '31581459400000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-27140000000000000000000000000000000000000000000000000000000000000001', '-27140000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('51603647184997719522882897042563846663899024307208600000000000000000000000', '51603647184997719522882897042563846663899024307208600000000000000000000000.5', 0, 8); + T('1644323000000', '1644323000000.5', 0, 8); + T('-9', '-8.5', 0, 8); + T('-902809102825706989238470350820560000000000000000000000000000000000000000000000000001', '-902809102825706989238470350820560000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-6868477001', '-6868477000.5', 0, 8); + T('91714927731569000000000000000000000000000000000', '91714927731569000000000000000000000000000000000.5', 0, 8); + T('-8000000000000000000000000000000000000000000000000000000000000000001', '-8000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-233083085304449000000000000000000000000000000000000000000000000000000000000000000000000000001', '-233083085304449000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('46509073700000', '46509073700000.5', 0, 8); + T('-1973764439115071357288670461800000000000000001', '-1973764439115071357288670461800000000000000000.5', 0, 8); + T('-2568500000000000000000001', '-2568500000000000000000000.5', 0, 8); + T('-24809330903268410000000000000000000000000000000000000000000000000000001', '-24809330903268410000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('7449994364098414600000000000000000000000000000000000000000000', '7449994364098414600000000000000000000000000000000000000000000.5', 0, 8); + T('2867488032797172375145449433748008158236530896489051275000000000000000000000000000000000', '2867488032797172375145449433748008158236530896489051275000000000000000000000000000000000.5', 0, 8); + T('-4900000000000000000000000000000000000000000000000000000000000000000000000000001', '-4900000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('4929000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4929000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('8267546457668258513715771480132070472862216176570000000000000000000000000', '8267546457668258513715771480132070472862216176570000000000000000000000000.5', 0, 8); + T('593747187059615072947679001676736984922713680000000000000000000000000000000000000000000000', '593747187059615072947679001676736984922713680000000000000000000000000000000000000000000000.5', 0, 8); + T('2483270425435993889589154244481827665973478012000000000', '2483270425435993889589154244481827665973478012000000000.5', 0, 8); + T('39543791425933526768174519227303827374238075020570198950767961859654305403206119372345770250000', '39543791425933526768174519227303827374238075020570198950767961859654305403206119372345770250000.5', 0, 8); + T('67', '67.5', 0, 8); + T('-219470058205534357335831751487551261713170336001', '-219470058205534357335831751487551261713170336000.5', 0, 8); + T('-183690000000000000000000000000000000000001', '-183690000000000000000000000000000000000000.5', 0, 8); + T('3450876609649939508104514905806066940000000000000000000000', '3450876609649939508104514905806066940000000000000000000000.5', 0, 8); + T('-80540000001', '-80540000000.5', 0, 8); + T('-62971517498372655372935973087516265926164530906763170287790', '-62971517498372655372935973087516265926164530906763170287789.5', 0, 8); + T('23409228118870000000', '23409228118870000000.5', 0, 8); + T('-7000000000000000000000000000000000000001', '-7000000000000000000000000000000000000000.5', 0, 8); + T('-9031', '-9030.5', 0, 8); + T('3492817610000000000000000000000000000000000000000000000000000', '3492817610000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-57688287613641931000000000000000000000000001', '-57688287613641931000000000000000000000000000.5', 0, 8); + T('1984116330670000000000000000000000000000000000000000000000000000000000', '1984116330670000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('6512025216557000000000000000000000000000000000000000000000000000000', '6512025216557000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('12182501403550393384353169696000000000000000000000000000000000000000000000000000000000000000000', '12182501403550393384353169696000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-7425931783170916885202085702943899676988400000000000000000000000000000000000000001', '-7425931783170916885202085702943899676988400000000000000000000000000000000000000000.5', 0, 8); + T('-4070000000000000000000000000000000000001', '-4070000000000000000000000000000000000000.5', 0, 8); + T('8647459874624869698149020230000000000000000000000000000000000000000000000000000000000', '8647459874624869698149020230000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('46599000', '46599000.5', 0, 8); + T('-5010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '-5010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('39508000', '39508000.5', 0, 8); + T('603089057835800884421518508711417801', '603089057835800884421518508711417801.5', 0, 8); + T('-79471558363526485324781700384768609724195801918000000000000000000000000000001', '-79471558363526485324781700384768609724195801918000000000000000000000000000000.5', 0, 8); + T('69404910310759646801954680033844865865649000000000000000000000000000000000000000000000000', '69404910310759646801954680033844865865649000000000000000000000000000000000000000000000000.5', 0, 8); + T('1907980209926030560252116696113309208138159500662562258522400000000000000000000000000000000', '1907980209926030560252116696113309208138159500662562258522400000000000000000000000000000000.5', 0, 8); + T('329472654458195399229095412173156277813634317805761763485596051933469610596000', '329472654458195399229095412173156277813634317805761763485596051933469610596000.5', 0, 8); + T('276349000000000', '276349000000000.5', 0, 8); + T('787126144338547000000000000000000000000000000000000000000000', '787126144338547000000000000000000000000000000000000000000000.5', 0, 8); + T('1471099043691184058624460905988224213538031110904992774958270704956863896897997000000000000000', '1471099043691184058624460905988224213538031110904992774958270704956863896897997000000000000000.5', 0, 8); + T('370113010930715428293470648815487051030769793281763667800000000000000000000000', '370113010930715428293470648815487051030769793281763667800000000000000000000000.5', 0, 8); + T('2065922690807733136485062524396416121715082253637965000000000000000000000000000000000000000000', '2065922690807733136485062524396416121715082253637965000000000000000000000000000000000000000000.5', 0, 8); + T('-7382816558182407799471782300849610860474300000000000000000000000000000000000000000001', '-7382816558182407799471782300849610860474300000000000000000000000000000000000000000000.5', 0, 8); + T('-20097560535463220697432958047617508689581603082766010090000000000000000000001', '-20097560535463220697432958047617508689581603082766010090000000000000000000000.5', 0, 8); + T('628909746633683135845125129915144934623519151508200000', '628909746633683135845125129915144934623519151508200000.5', 0, 8); + T('-81192352241330340442871946386698010000000000000001', '-81192352241330340442871946386698010000000000000000.5', 0, 8); + T('6450', '6450.5', 0, 8); + T('37293916349890940922992467416776788689073657558307952866668243095547190629248951386344800000000', '37293916349890940922992467416776788689073657558307952866668243095547190629248951386344800000000.5', 0, 8); + T('1718544737998848', '1718544737998848.5', 0, 8); + T('87231983170377993831727615571315627607167084700000000000', '87231983170377993831727615571315627607167084700000000000.5', 0, 8); + T('-86061664983179049931693406385826804039300476826004230043833291400000000000001', '-86061664983179049931693406385826804039300476826004230043833291400000000000000.5', 0, 8); + T('-51891604836621651634017359747812499890000000000000000000000000000000000000000000000000001', '-51891604836621651634017359747812499890000000000000000000000000000000000000000000000000000.5', 0, 8); + T('8745224135400000000000000000000', '8745224135400000000000000000000.5', 0, 8); + T('-30620233581205628000000000000000001', '-30620233581205628000000000000000000.5', 0, 8); + T('14863144633163334418622520000000000000000', '14863144633163334418622520000000000000000.5', 0, 8); + T('-7820166128000000000000000000000000000000000000000000000000001', '-7820166128000000000000000000000000000000000000000000000000000.5', 0, 8); + T('490301854395822993260221610000000000000000000000000000000000000000000000000000000000000000000000000', '490301854395822993260221610000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('89435429126192621776997940079101579134477637123767783805081890000', '89435429126192621776997940079101579134477637123767783805081890000.5', 0, 8); + T('-8', '-7.5', 0, 8); + T('48028980775647633995683237409146256399109720500000000000000000000000000000000000000', '48028980775647633995683237409146256399109720500000000000000000000000000000000000000.5', 0, 8); + T('6335331194137189544436447913317232855829543152436874057500', '6335331194137189544436447913317232855829543152436874057500.5', 0, 8); + T('-628254630769343648758471830148888672377000000000000000000000000000000000000000000000001', '-628254630769343648758471830148888672377000000000000000000000000000000000000000000000000.5', 0, 8); + T('57839375650970125223236315959022043520630147028794000000000000000000000', '57839375650970125223236315959022043520630147028794000000000000000000000.5', 0, 8); + T('-771743548959352866414440497741988370454011151128027700000000000001', '-771743548959352866414440497741988370454011151128027700000000000000.5', 0, 8); + T('-53429592007706646032950000000000001', '-53429592007706646032950000000000000.5', 0, 8); + T('499380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '499380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-641898557705670000001', '-641898557705670000000.5', 0, 8); + T('600220992462460556877273974257288999278181263177202351996538136181825896120000', '600220992462460556877273974257288999278181263177202351996538136181825896120000.5', 0, 8); + T('4060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('-8364590709247094923425000000000000000000000000001', '-8364590709247094923425000000000000000000000000000.5', 0, 8); + T('519409844212193540764606418404780000000000000000000000000000000000000000', '519409844212193540764606418404780000000000000000000000000000000000000000.5', 0, 8); + T('-3833671650388000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '-3833671650388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('48557176761800000000000000000000000000000000000000', '48557176761800000000000000000000000000000000000000.5', 0, 8); + T('-7711489971', '-7711489970.5', 0, 8); + T('75000000000000000000', '75000000000000000000.5', 0, 8); + T('3229580853248988018262985670791998740861538127939000', '3229580853248988018262985670791998740861538127939000.5', 0, 8); + T('5248316551608552493188922201763221117178358562272408864992232158101702807890000000000000000', '5248316551608552493188922201763221117178358562272408864992232158101702807890000000000000000.5', 0, 8); + T('-65467380782429716204000000000001', '-65467380782429716204000000000000.5', 0, 8); + T('-7205690650357445181000000001', '-7205690650357445181000000000.5', 0, 8); + T('-276409666783477000000000001', '-276409666783477000000000000.5', 0, 8); + T('-58428012013195193142046078040582490000000000000000000000000000000000001', '-58428012013195193142046078040582490000000000000000000000000000000000000.5', 0, 8); + T('-751950207597055427000000000000000000000000000001', '-751950207597055427000000000000000000000000000000.5', 0, 8); + T('-599626209998027538223544864628000000000000000000000000001', '-599626209998027538223544864628000000000000000000000000000.5', 0, 8); + T('493818820446671117064848278738045865755408340205207514513699818290870000000000000000000000000', '493818820446671117064848278738045865755408340205207514513699818290870000000000000000000000000.5', 0, 8); + T('72115246495423678068962420259406315700000', '72115246495423678068962420259406315700000.5', 0, 8); + T('8355575817405490000000000000000', '8355575817405490000000000000000.5', 0, 8); + T('-760420001', '-760420000.5', 0, 8); + T('-2637320151000000000000000000000000000000000000000001', '-2637320151000000000000000000000000000000000000000000.5', 0, 8); + T('365188058248000000000000000000000000000000000000000000000000000000000000000000000000000000', '365188058248000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); + T('24776070252572097097332452000000000', '24776070252572097097332452000000000.5', 0, 8); + T('-51423316645779393318000000000000001', '-51423316645779393318000000000000000.5', 0, 8); + T('623144979783067430949482841363102540602541201810000000000000000000000000000000000000000000000', '623144979783067430949482841363102540602541201810000000000000000000000000000000000000000000000.5', 0, 8); + T('-393701403238457991332600000000000000001', '-393701403238457991332600000000000000000.5', 0, 8); + T('255574900000000000000000000000000000000000000000000000', '255574900000000000000000000000000000000000000000000000.5', 0, 8); + T('361300718195583086529006200000000000000', '361300718195583086529006200000000000000.5', 0, 8); + T('61381935060212901891392491994620938159434302730207737183495000000000000', '61381935060212901891392491994620938159434302730207737183495000000000000.5', 0, 8); + T('17103494622240782188191669794453543590000000000000000000000000000000', '17103494622240782188191669794453543590000000000000000000000000000000.5', 0, 8); + T('12.35', '12.345', new BigNumber('2')); + T('12', '12.345', null); + T('12', '12.345', u); + T('12', '12.345', 0); + T('12', '12.345', '-0'); + + assertException(function () {new BigNumber('12.345').round(NaN)}, ".round(NaN)"); + assertException(function () {new BigNumber('12.345').round('NaN')}, ".round('NaN')"); + assertException(function () {new BigNumber('12.345').round([])}, ".round([])"); + assertException(function () {new BigNumber('12.345').round({})}, ".round({})"); + assertException(function () {new BigNumber('12.345').round('')}, ".round('')"); + assertException(function () {new BigNumber('12.345').round(' ')}, ".round(' ')"); + assertException(function () {new BigNumber('12.345').round('hello')}, ".round('hello')"); + assertException(function () {new BigNumber('12.345').round('\t')}, ".round('\t')"); + assertException(function () {new BigNumber('12.345').round(new Date)}, ".round(new Date)"); + assertException(function () {new BigNumber('12.345').round(new RegExp)}, ".round(new RegExp)"); + assertException(function () {new BigNumber('12.345').round(7.5)}, ".round(7.5)"); + assertException(function () {new BigNumber('12.345').round('1.1e1')}, ".round('1.1e1')"); + + assertException(function () {new BigNumber('12.345').round('-1')}, ".round('-1')"); + assertException(function () {new BigNumber('12.345').round(-23)}, ".round(-23)"); + assertException(function () {new BigNumber('12.345').round(1e9 + 1)}, ".round(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').round(1e9 + 0.1)}, ".round(1e9 + 1)"); + assertException(function () {new BigNumber('12.345').round('-0.01')}, ".round('-0.01')"); + assertException(function () {new BigNumber('12.345').round('-1e-1')}, ".round('-1e-1')"); + assertException(function () {new BigNumber('12.345').round(Infinity)}, ".round(Infinity)"); + assertException(function () {new BigNumber('12.345').round('-Infinity')}, ".round('-Infinity')"); + + T('13', '12.345', u, new BigNumber('2')); + T('12', '12.345', u, null); + T('12', '12.345', u, u); + T('13', '12.345', u, 0); + T('13', '12.345', u, '-0'); + + assertException(function () {new BigNumber('12.345').round(u, NaN)}, ".round(u, NaN)"); + assertException(function () {new BigNumber('12.345').round(u, 'NaN')}, ".round(u, 'NaN')"); + assertException(function () {new BigNumber('12.345').round(u, [])}, ".round(u, [])"); + assertException(function () {new BigNumber('12.345').round(u, {})}, ".round(u, {})"); + assertException(function () {new BigNumber('12.345').round(u, '')}, ".round(u, '')"); + assertException(function () {new BigNumber('12.345').round(u, ' ')}, ".round(u, ' ')"); + assertException(function () {new BigNumber('12.345').round(u, 'hello')}, ".round(u, 'hello')"); + assertException(function () {new BigNumber('12.345').round(u, '\t')}, ".round(u, '\t')"); + assertException(function () {new BigNumber('12.345').round(u, new Date)}, ".round(u, new Date)"); + assertException(function () {new BigNumber('12.345').round(u, new RegExp)}, ".round(u, new RegExp)"); + assertException(function () {new BigNumber('12.345').round(u, 7.5)}, ".round(u, 7.5)"); + assertException(function () {new BigNumber('12.345').round(u, '1.1e1')}, ".round(u, '1.1e1')"); + + assertException(function () {new BigNumber('12.345').round(u, '-1')}, ".round('u, -1')"); + assertException(function () {new BigNumber('12.345').round(u, -23)}, ".round(u, -23)"); + assertException(function () {new BigNumber('12.345').round(u, 8.01)}, ".round(u, 8.01)"); + assertException(function () {new BigNumber('12.345').round(u, 9)}, ".round(u, 9)"); + assertException(function () {new BigNumber('12.345').round(u, -1)}, ".round(u, -1)"); + assertException(function () {new BigNumber('12.345').round(u, '-0.01')}, ".round(u, '-0.01')"); + assertException(function () {new BigNumber('12.345').round(u, '-1e-1')}, ".round(u, '-1e-1')"); + assertException(function () {new BigNumber('12.345').round(u, Infinity)}, ".round(u, Infinity)"); + assertException(function () {new BigNumber('12.345').round(u, '-Infinity')}, ".round(u, '-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('12.35', '12.345', new BigNumber('2')); + T('12', '12.345', null); + T('12', '12.345', u); + T('12', '12.345', NaN); + T('12', '12.345', 'NaN'); + T('12', '12.345', []); + T('12', '12.345', {}); + T('12', '12.345', ''); + T('12', '12.345', ' '); + T('12', '12.345', 'hello'); + T('12', '12.345', '\t'); + T('12', '12.345', new Date); + T('12', '12.345', new RegExp); + T('12', '12.345', 0); + T('12', '12.345', '-0'); + T('12.345', '12.345', 7.5); + T('12.345', '12.345', '1.1e1'); + T('12', '12.345', '-1'); + T('12', '12.345', -23); + T('12', '12.345', 1e9 + 1); + T('12', '12.345', 1e9 + 0.1); + T('12', '12.345', '-0.01'); + T('12', '12.345', '-1e-1'); + T('12', '12.345', Infinity); + T('12', '12.345', '-Infinity'); + + T('13', '12.345', u, new BigNumber('2')); + T('12', '12.345', u, null); + T('12', '12.345', u, u); + T('12', '12.345', u, NaN); + T('12', '12.345', u, 'NaN'); + T('12', '12.345', u, []); + T('12', '12.345', u, {}); + T('12', '12.345', u, ''); + T('12', '12.345', u, ' '); + T('12', '12.345', u, 'hello'); + T('12', '12.345', u, '\t'); + T('12', '12.345', u, new Date); + T('12', '12.345', u, new RegExp); + T('13', '12.345', u, 0); + T('12', '12.345', u, 7.5); + + T('12', '12.345', u, '-1'); + T('12', '12.345', u, -23); + T('12', '12.345', u, 8.01); + T('12', '12.345', u, 9); + T('12', '12.345', u, -1); + T('12', '12.345', u, '-0.01'); + T('12', '12.345', u, '-1e-1'); + T('12', '12.345', u, Infinity); + T('12', '12.345', u, '-Infinity'); + + T('12', '12.345', u, u); + T('12.3', '12.345', 1, NaN); + + BigNumber.config({ ROUNDING_MODE : 4 }); + + T('13', '12.345', u, 0); + T('13', '12.345', u, '0'); + T('13', '12.345', u, -0); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js new file mode 100644 index 0000000..12a59ad --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js @@ -0,0 +1,2565 @@ +// Note: Some of the longer tests are commented-out. +var count = (function sqrt(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(root, value) { + assert(root, new BigNumber(value).sqrt().toString()) + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing sqrt...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // Test the special cases specified by ES 15.8.2.17 + T('NaN', NaN); + T('2', 4); + T('0.1', 0.01); + + assert(false, isMinusZero(new BigNumber(0).sqrt())); + assert(false, isMinusZero(new BigNumber('0').sqrt())); + assert(true, isMinusZero(new BigNumber(-0).sqrt())); + assert(true, isMinusZero(new BigNumber('-0').sqrt())); + + T('Infinity', Infinity); + T('NaN', -Infinity); + + BigNumber.config({ERRORS : false}); + + T('NaN', undefined); + T('NaN', null); + T('NaN', []); + + BigNumber.config({ERRORS : true}); + + T('NaN', -1); + T('NaN', -35.999); + T('NaN', '-0.00000000000001'); + + // Test against Math.sqrt of squared integers. + for (var i = 0; i < 1e4; i++) { + var j = Math.floor(Math.random() * Math.pow(2, Math.floor(Math.random() * 26) + 1)); + j = Math.pow(j, 2); + T(Math.sqrt(j).toString(), j.toString()); + } + + // Initial rounding tests. + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('11', '101'); // 10.04... + T('11', '111'); // 10.53... + T('1000', 999000.25); // 999.5 + T('1', 0.25); // 0.5 + + BigNumber.config({ROUNDING_MODE : 1}); + T('10', '101'); + T('10', '111'); + T('999', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 2}); + T('11', '101'); + T('11', '111'); + T('1000', 999000.25); + T('1', 0.25); + + BigNumber.config({ROUNDING_MODE : 3}); + T('10', '101'); + T('10', '111'); + T('999', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 4}); + T('10', '101'); + T('11', '111'); + T('1000', 999000.25); + T('1', 0.25); + + BigNumber.config({ROUNDING_MODE : 5}); + T('10', '101'); + T('11', '111'); + T('999', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 6}); + T('10', '101'); + T('11', '111'); + T('1000', 999000.25); + T('0', 0.25); + + BigNumber.config({ROUNDING_MODE : 7}); + T('10', '101'); + T('11', '111'); + T('1000', 999000.25); + T('1', 0.25); + + BigNumber.config({ROUNDING_MODE : 8}); + T('10', '101'); + T('11', '111'); + T('999', 999000.25); + T('0', 0.25); + + T('1850249442642802149156602', '3423.423e45'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 0}); + T('0.01', '0.0000001'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); + T('0', '0.0000001'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 4}); + T('2.6', '7'); + T('30490054086086012186828338', '929643398172450327852909723850478224408368639961857.22035621170'); + T('10.6', '112.439121106'); + T('1007.1', '1014216.88354115504848'); + T('14496268662.7', '210141805141682355705.090'); + T('220983929785.7', '48833897223529771949253.378778868849049559624562513592321569'); + T('1180052939140.7', '1392524939174533146207410.12619352287'); + T('120468836204612.6', '14512740496493785900839846763.82328768609126547'); + + BigNumber.config({DECIMAL_PLACES : 10}); + T('1.0998820819', '1.20974059415009437172900'); + T('4372247436270791523.3453396636', '19116547643976509183347719022510178407.6659485696744517151189447'); + T('645.6559215353', '416871.569013637'); + T('9.3832989934', '88.0463'); + T('20195394139.0634492424', '407853944432118316238.060'); + T('203574.8431903851', '41442716779.9898655080652537763202594320363763900771333411614469322118841'); + T('434835511792648.9460364767', '189081922315974940615057855618.468666216438821105981678672603'); + T('1870631871126475697594310.8568506983', '3499263597274139582669747936294437345027253159338.2893957584'); + T('76418328144.477890944', '5839760876397101738682.29836547353'); + + BigNumber.config({DECIMAL_PLACES : 20}); + T('346.00153309920463414559', '119717.060907'); + T('263359760985014.62241224437474495709', '69358363706084030080212405554.3002793975414740876419285502'); + T('4.14645859760929707104', '17.193118901688058566035426'); + T('140510858365741634743828657.01509424473320174184', '19743301318677505942122892989445395975381650127203766.2408172612421'); + T('492974271191746.46231483998877250102', '243023632057033585989741137703.800100153395469328387'); + T('164.78781194238374484766', '27155.022964758430758944789724435'); + T('7366.78400597487165781255', '54269506.59068717789735301787194313247'); + T('23762326490698.34975320239967323205', '564648160250544549780100380.5514166040523'); + T('213634053277525452.46978666514569063831', '45639508719784583520579147409415270.488869'); + T('5.291502622129181181', '28'); + T('11.47156968462642430546', '131.59691102924'); + T('316358493873927157.1740897995245240711', '100082696646179606634487051294887359.5035240594546'); + T('500048686.48939798981543930512', '250048688859772239.7160140065116884182948058142834537'); + T('6022.37550162532363706717', '36269006.68257686850553015065182301017562876'); + T('6.8460154244205197188', '46.86792719140366873824501484885278'); + T('45189.48536114270306146252', '2042089587.204930656134881238462876156607'); + T('856160326.88774167756915629603', '733010505336524684.93087677'); + T('522130.17609423801622137924', '272619920788.2'); + T('52292561.72399606203863014237', '2734512011657938'); + + BigNumber.config({DECIMAL_PLACES : 73}); + T('26887623635.3707912464629567820776000467035000476700672842803068855485151227900078069', '722944304757350004189.2345'); + T('114762757369717325768.5268370835012953651076368760452481091507997658004031794079990971409285748', '13170490479100608368417468277815894123421.4484497151693769463078329436779'); + T('196.9765983083095309326276839454825311907994129311587833723243476358522465777', '38799.78028111312916322430363229763959902004100996'); + T('120016703223.6151811849913819241621570830640571538995217287681670128389432142005932891', '14404009052665322623144.3467403'); + T('91537950494500774895026544968.0163490860552716188715682357057804200505025482975033902996558184955299368', '8379196380733674659135406615691779599176042234171010036822.5636818392'); + T('15.1179067962466285341140019013436699388546686629569704817549228235938583883', '228.5511059'); + T('88.8125725884151110485104354919995585100283886785637267479492612921303631122', '7887.6730497725031780'); + T('3218172063439012577521546329.9090241863260351466688419917169048515469580394951005515857084741579831863', '10356631429899311993763656402168917661960022178561764021'); + T('19107253881509743.3779260316306131671181869224843248420235662435238492667857670998535738552', '365087150892469154433642273521263.83276841'); + T('400.3068500117233817006410985991134968372763336206911625632292309118077689013', '160245.5741663084'); + + BigNumber.config({DECIMAL_PLACES : 100}); + T('1.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485757', 3); + T('1.0488088481701515469914535136799375984752718576815039848757557635800059255011006914193852889331944178', 1.1); + T('0.3162277660168379331998893544432718533719555139325216826857504852792594438639238221344248108379300295', 0.1); + T('0.9486832980505137995996680633298155601158665417975650480572514558377783315917714664032744325137900886', 0.9); + T('0.99999999999999999999999999999999999999994999999999999999999999999999999999999999875', '0.9999999999999999999999999999999999999999'); + T('11111.1110609999998870049994903925471271162312358157188236047401971668110785559489100264545730662845742184','123456789.00987654321'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + T('4949554350723.461435143921800511302655747834828959172999243354749297834846074272605873894779037895263058987767', '24498088270765545887271078.495701603537518591752268455746'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 2}); + T('34024250164506590698940450635557.52953427667455604566896038084827726129860253810440168217368794648838157166948213114635075589', '1157649599256926764239267638462457331268783688179593190844781949.0026'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); + T('44.40502294864850084', '1971.80606307'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); + T('53661161093118917.324727467936347226946388973481645944102836490011463645342312303037845424027327131', '2879520209861659438086912639838761.96836512'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 1}); + T('14192376.643123461322847366137186892667087869800484670508360531721790645551341594437545247745705539930735', '201423554780276.3686384009255372'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); + T('4855847283088595702176944.8112532951528228009352578372167502504010846351042776625505257853252286361', '23579252836678896488410638492374748088831131237827.786414707871968195569'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 4}); + T('2553252336.0331', '6519097491458426345.3554782053764871036657698339691144086'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); + T('313415140.8429479671745256541153927986977746351343070479080617690487091', '98229050509604911'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 0}); + T('1.537808174192351787259717', '2.3648539806128145775'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); + T('62.30949119560079364913', '3882.4726930546528212066'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); + T('20416269776260474006.927083982432268806569265768750039002235065141713481228428261', '416824071577046905366185925400975939799.8'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); + T('174228234.709795821707519878032640346805381350977820681861118903584344693715322225768054125', '30355477770091701.53717021425249799086667828628302277998976752563'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); + T('8346080245081.12842427016192329441165264650792513611706834892396914269233387534464159247031782538653', '69657055457333468703224935.763141948224298'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 3}); + T('272.7796965259930339886508185007545884578607374328807903817278380417881107290650631082406652753', '74408.76283681285609575234724616'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 0}); + T('2576.47265', '6638211.30041'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); + T('163256493.009563679477426538597267934928790668772138046453329418', '26652682509781714.54341292267818515442604'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 6}); + T('6413898755.503103237879757203310804711689478588298288050385897319721', '41138097245844256487.4'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 4}); + T('651.83586891179899229526795359574620017366743', '424890'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); + T('9.840172762711028743800750259911398446280416492345', '96.829'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 4}); + T('936008582670169403.24586736956499382709796268807769178807', '876112066832219350113028056940121643.4989897905396802'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 1}); + T('3.1691816831920187703897673787206897581382652839389771357354751032132', '10.043712541079797228859738302727066114683041689841812835450076520'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 2}); + T('201959414.0905242545521797507742344926679143', '40787604939787846.812484750440288725205988'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 2}); + T('3.235364585328831221179338900994013430389718885202447735097146763445925265374153439191445', '10.4675840'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 2}); + T('1391.926691686756208298398279775140528179063627807536777764086771937670002756456', '1937459.9150300380745526266059714001651697913188367053087'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 2}); + T('869.8354526359820716456765000567449871995222312', '756613.7146624438099121'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 6}); + T('118594.4273063315320244062844564170472198563498805200012242127200252960812599679770627273052218882949925', '14064638188.1167541187722341530354253926613230053009933342'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('15459965429.4176806583122774869069153370447277862964242', '239010531078789811116.914'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 4}); + T('5248173.56787', '27543325798538.753780506094441280733789361778933753426582596791104'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 6}); + T('6.05855328019481326674235', '36.7060678489593315124567'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 0}); + T('907424493602245756936.066129375330541537462629768', '823419211589292150660922033473258691103594.23268549807171826865266573694'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); + T('11439280.9959241551974895751378888566402750717305622394543095198836564669553210222', '130857149703711.532'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 6}); + T('164207.20075782859923311531097410558094817321169039986325465336651402772907533144002814794168144323', '26964004780.7218252942882108'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 5}); + T('67866.91300857901339', '4605917881.314031310494203432328648'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); + T('2.723397260313830449769700482256736114679660269490922765', '7.4168926374848775741132294'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 6}); + T('145626737347.699863159799647089039014085200730659988131836086866937945539247414906654868', '21207146630535962175511.4592'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); + T('3198723.293675674761595756274163847124886137068077187912', '10231830709503.357046273671271695065871403474525'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 0}); + T('19699.655043109373052433709', '388076408.8175045546569'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 1}); + T('15625591.477694858909123645800863577029584072458683168542082897370551849161553', '244159109027810.20442572274363387'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); + T('85762713.1327157666976061', '7355242963884497.437336977648000579022368327415840055129120741942567239'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 0}); + T('41.0148460976104358708576256643898030638770464836414', '1682.21760041067'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 3}); + T('627.06679575379477143240692835573346249172484449442579029111338455375888695749139590976427077308', '393212.7663369313683879605008384834086623'); + + BigNumber.config({DECIMAL_PLACES : 39, ROUNDING_MODE : 5}); + T('5.880136052847757025272423749873232616784', '34.576'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 2}); + T('74542661576900.1739714442102128431140459355738187797819043083309413315', '5556608394968269531202589612.9'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 5}); + T('7719200214.3705019090215357285448226659983404326837819', '59586051949537602626.95016591737228440200846895047666959869445081113'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); + T('74629.64', '5569583803.0907402'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); + T('44.05501263636205450407476438041804283847324427155286698836103844', '1940.8441383900203'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('1119.912102354466031064620923', '1254203.117'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); + T('92093628036.6480124503328403126750210810151658188780763586760022178450462311', '8481236324952480852423.718960437545027'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); + T('7.55149177315316950216695542333911', '57.025028'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); + T('1947605507655512.1474872179815308192647511525219417', '3793167213450085186132700081381'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 2}); + T('897186472920280057757.758955997894245720068203481844645803566957566661460082190511', '804943567191132421390195361422932115503582.03422'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 0}); + T('8775397.48306750827108348789044450160735393428', '77007600985827.5591133'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 6}); + T('557716086077.5080956743653150675842959387446784555727262266063122593621607958161147001199667165261203780317', '311047232669614419511648.6130023664452767398438696'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 1}); + T('3.6766253682232922013', '13.517574098263058968167681315043395710343763189956497798543'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 3}); + T('364.437601989709154496727744417233984148798720533510776338306467381487', '132814.76574400966188457585354574350011547665650395112601058'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 5}); + T('29784617918.0127174734394784458305404701929975', '887123464522004224898.5545193466489'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 4}); + T('374863740368.0156985152529892838083189109926642299794', '140522823842699082383715.919571886197001394994582'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); + T('3321962129060763825931501.6171393711588977731624802456157919679857160686287774881', '11035432386913922898118885283020330437836330418535.765864'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); + T('3039991938095044282.834999396730197828406224765246402870200714765906547758763203772', '9241550983682863551151813316288949279.9625949439074666'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('5.5727910421977962406401022785010286010813965565340383771288278905072628945', '31.056'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); + T('1809373906.386837382140423787863676125946315451309506008234344142479881132815536036260566', '3273833933113563766.3701096193056864'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); + T('948722.35086770259132293410301310241', '900074099035.9401838348750892'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 1}); + T('23603002885797536.790280728725364655699852314300322649', '557101745226966849549415425061219.969394346783798760227'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); + T('1.3760699520736582089086174843894761768111119574016193232032195760251607', '1.893568513'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 0}); + T('14865553.721249212888439807434', '220984687439346.321003197181614764009809253917'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 1}); + T('3293155557597199373259839225.706003736695865575939572351947834646050410715323588632698181660823328571895043', '10844873526533321118731760593542551681937887331657167954.4066926866'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 0}); + T('1.4602844538376761066216387158903803538206186160126991802', '2.13243068612'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 0}); + T('52497683.2535666615551547765238857555777973908683364642662996875860780953333112481757317373', '2756006746991813.49967765680'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + T('229.108483256294986105584052287445152310628239217404673001762961439710445106676980785785353195978212', '52490.6971'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 1}); + T('247788926631.668855265587728589', '61399352161274570866824.398764295216033428917127'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 3}); + T('21424.038976941299431640698751966107735138702410669278306', '458989446.0855'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('719485.015161442678887199799035233897302403555352773104081712230052841078911919691996286833814524', '517658687041.861401507658'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); + T('5.8309518948453004', '34'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 1}); + T('756731558.25262830674557663857258007802853198', '572642651255450988.3807853'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('56599816.250503709163296236449780271198341341082422352679019828047161', '3203539199590783.75467227017766942'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 1}); + T('315.35186696767786854256245741213', '99446.8'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); + T('21743622919.6152043904934006640996008653', '472785137670415625131.3819412384141603569725008109774351813892945'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 1}); + T('9931.93848832625073050157085444478223645326098496189725178399175', '98643402.13589633051811977376659116574508796'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 6}); + T('12491945070243173325.00123703924746770276608629177675', '156048691637972720536868554818649758614'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 3}); + T('31142.7911241108894', '969873439'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 5}); + T('323.97605471', '104960.4840234371387'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 5}); + T('5715183064.0940040641822561', '32663317456106928967.132035290253014719696309540999261182915037018712'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('135.35229191926174097438753947924689763303130529240391689831443968668652723708826191007753307865150657', '18320.242927797047184106'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 4}); + T('1.986294948124507296707366989944167364007457', '3.94536762094493913289346223994950919328456012507449654266826'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); + T('1854467167302463060.67001538852537388423828924920448451675904798181668319798201139', '3439048474602821519577229021879982239.2082'); + + BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 2}); + T('81193654.78972507709037814751156680233229599082421344592', '6592409578113045.952464677461833939906456779681791713165521338857097972'); + + BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 2}); + T('243658571.81955213863332506453273200107839362175562305528292871', '59369499621143847.5904454643435133899921413'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); + T('1.972442648088913', '3.89053'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 5}); + T('29173231718.778879604378348144121047338664684120880285', '851077448917566101882.514088939153719024901521'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('2663045169970861026925375.635420072098834063612997764970291415141689017483375036375781735588621', '7091809577305132096990572152434051531398473618829.89422557768661926'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); + T('220761.160604830397059610011998293759083892046977144231182486245187301213113818936381230594214', '48735490031.5917204821'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); + T('161677855435317442406.2546035610007912236205334351', '26139728938163405854159841438358732967516.30006485122550144217058909'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 6}); + T('244041886899114069999190717.069960065813984399980837008', '59556442561279983551883153005400521473838950253623262'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 3}); + T('1107466938973440740730667939506694.2638801341959912170851419737317922658410730057816703901502302', '1226483020919202717870476287034767333832211470320394554682503342877'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); + T('2088927.797138422758659686170900239830365738839263869523289', '4363619341657.58350562244267149496471405124'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 6}); + T('90061141477839967.2682846126818450599184988316687847204716382695549492605718861', '8111009204291506563499764980695382.1759246268375'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 3}); + T('5429621071395721.253939502546988879109480438494987866198414850987001042506015656799576011128802517427918324', '29480784978944419958421524887597.42349107833570174813'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 6}); + T('1476747291384.9099630858', '2180782562612668171679967.63324'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 6}); + T('9210807993.639856342437524083401141956511342156180578284602614905116773271331676341823693120447', '84838983895699875876'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); + T('2.388242031285774017289777195752330791381535517849', '5.7037'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 6}); + T('3.37200237247840619012635848', '11.3704'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); + T('113893455834773270196180930512.9915840908366637690221083458', '12971719281987449465429560596505161586489324719573129843872.171'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); + T('90231.00398976', '8141634081'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 5}); + T('1597579508606622211.845652947503721264640830072971865988482347827730509123712404166521804347520039996034940695234128954', '2552260286319776493852490523528001935.48994776557'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); + T('1299424183315225375029397575.07015635096795459', '1688503208184440439916254126997862516329616872207524279.05763620'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 4}); + T('2693874.2163861651089144', '7256958293710.1751161960'); + + BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 6}); + T('5732941347.55256238286493674720703619067740838113000509955135586822000095629002988639', '32866616494477789872.3518055761631860371'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); + T('68038.789982024004217', '4629276942.217969996065357856482669982723691716245127238'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); + T('16288419988283588.674', '265312625714716342994884296792766'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 3}); + T('3.0446674695276658405945560356807623150745767505665219956760952761834211468101552516', '9.27'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 2}); + T('79.6969259131116047841695097300091923882482217290138206', '6351.60'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 0}); + T('126.370571227352967491262772615456540499132900009240252107883825190012068734134048217720997378442783801', '15969.52127232748969252'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 0}); + T('88796173.2384202907121064495468439111066566843', '7884760381787547.81840923'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + T('365543004.8061649872764474380277913079084143042', '133621688362719958.9872107366'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 0}); + T('143498617762600.4140327037226405237893689515984193391783866884659658377021608257588943250828403643110208744660318261', '20591853299776899056200145422.1846447111664776'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 4}); + T('12782418240925459479.2031797451385115697726882124289981424172567856909899486963994', '163390216085943917855551726128161143915.02664633'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('12.07324881148295353275508188921102928327377', '145.76333686397455005144032806105'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 0}); + T('211449127401352679264090.403777356355051577835784756039917073614638523204498613898150412748', '44710733478793476460089809808062830465327473341.01106'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 0}); + T('8434.69565989858107121020381907194564097406849153317203553829228632792387361758032492018751318', '71144090.8751119600030'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 3}); + T('431.790690033956151299657456473777574071370518767442408773272403696713563734140114626948052851', '186443.2'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 3}); + T('1.108018699799390988378447956003009', '1.22770543910513292750985'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 2}); + T('9581559.366976805376', '91806279902900.9593482950972'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); + T('2418839541.0987386261807014430009304412452809170287221944718963714320359391426925314537124868517232384773', '5850784725582756467.469546239192868802578236912006511'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); + T('11040265120287567759934269.263029933332634568404407042737837112821286414662597953247828811089203658709412952839364191', '121887453926238263019360388091188570494838624535471'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 3}); + T('233.2570187785530519308734053376321961140912819913698', '54408.8368094582511025342'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 4}); + T('29.6490992649274348544759045400715775766925', '879.06908722152055781935911221883768070437'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 3}); + T('7505560981.6906822826179406598', '56333445649877598342.8475019094481329264104906070647412405735303985455'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 6}); + T('4.666365343768356140513396346961342877525930132228624', '21.7749655215223685799362730400310696'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 5}); + T('209228165501008616561872.1477049513127309490959', '43776425238917452235867870727072879650986013517.690781514934992668'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 1}); + T('17.122151356727858418696401754969183602519558', '293.168067082697642757847'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 2}); + T('32739585325.26765210723377428518717434262024156135815886665844964799952569026833', '1071880447270480993629.4640435138594357807725479611653996305'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 5}); + T('1.6928161743', '2.86562659997131621752114765980023438405067892440724267945937722378861'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('16417.554697867626966836606837813475423042958767384549424626836426490725472399363532843792074346', '269536102.25747538817901717219695597174449981'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 6}); + T('109652272385643.1603769184581163062699906986', '12023620839335281581899617727.8772961473185586727206798164'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); + T('13489.123629030538320414969169194877155101718802208604977345597134035561855309153297129880622467', '181956456.27927'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 3}); + T('15162908032.86965932250477929505589077613516814656108803', '229913780013263241677.3791'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); + T('2.372129844675455365912878765809140727257324413647', '5.627'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 0}); + T('148.820093791127547454620941738144491984235834280198020332', '22147.420316'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 1}); + T('739871537758100310.43883822919081011754036378492392360075543', '547409892384536053343836850938988791.2508666160979'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 2}); + T('63478.7126270666964166648665771468502603343618655904464016578865228572987361391362408539907916', '4029546956.789716846462443886848'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 1}); + T('77140.793792105688747751462443855549841986175279935245610391', '5950702066.8761715670568717062071879678486494595966218026'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('162820594803834668.752129825654424512211529624619694188452350414129430986701621110932095616631076098099130503248', '26510546092274513134180208644185957.57422670990654'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('204494310168.4671924285173237222417467622712661919483412527661975953571549254104320801', '41817922891277264574994.94380'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 0}); + T('4395.909427668232162220120918266434', '19324019.69626244445210257981'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 0}); + T('5.22775235102390824796354516485007398148629306999271', '27.329394643636'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 3}); + T('997295.09412022112243931640765631069576943976068322455480694643995328956477', '994597504756.26070722226025041925449713707868740387903881304557'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 5}); + T('203637147057.7748844672269277496593344371356921412578700817688601724867963410626', '41468087661829834285659.350412232933496521226586662970934783390865142'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('939333.959604513485668563847772506141997730133849933463092593953521840168273751255714815246', '882348287666.2937728893202363'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 4}); + T('4.568369512', '20.87'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 4}); + T('370.818280526354041083927163168590728498008550586626184882319882834674931772525681078764889', '137506.1971725218006486309891482928119051089854653'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 0}); + T('9677366.13442750739243118863157357061982716666842510521012211042628756371590553458718', '93651415299764.397079279228147695065210419679'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); + T('459260874.20127731126343992531130965108732', '210920550572121463.814947484719373265508800614967431627085952061224891'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 2}); + T('31.9734264663642204389422311887643391814535306082202464098568847002787713669652098830099427401843', '1022.3'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 0}); + T('2973063742', '8839108013968540509.06630564811'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('34146881023818508.954756503743080316053431668549275132795068', '1166009483654816582318330803409852.007911'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 5}); + T('7.549834435271', '57'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 5}); + T('457768114718.924178666375597479663315126937742538839621311715859853903792113549247134805042232897618803407927', '209551646853318127271063.5596189'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('2458857125246799394445091629.502227209261508743296310153768826317308293252686594142446545917844105369673045257530483701916834102', '6045978362376954524014907890057287078792404475852907401'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 3}); + T('232.95426589783669381174298578564010084473683056750226995822363784044724761408941752678312753', '54267.69'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 6}); + T('411369926586282.35173941504630680193130958', '169225216499603331644025273726.130552532747109702369176231397148094894'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 4}); + T('146.837594711181641908188613240193044745216301', '21561.27922056523889531529752'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 1}); + T('2436.80241424922206290898076140846108744470830585565672963845308477988719476570192112', '5938006.00609083724509944'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 3}); + T('237641.142572063817719734051264723120416667001252355959725', '56473312642.9559622068518833017478'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 5}); + T('2.54986118578098487598754727764', '6.50179206675241026831530806973871597654152197264612412571'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 1}); + T('5968940791314695.9391845388865719907476112181090409748506', '35628254170220508537420332407309.79446040'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); + T('7757883860673599094.299765297', '60184761995699906684011270143497832606.405945309948'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 6}); + T('2.2181073012818834324103200205219865836926753', '4.92'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); + T('603896.1020372225715031692835372960243779222201981644175886120182699827032153603', '364690502055.7515356757459417779202315'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 4}); + T('910.9629520458008175934592151820959436914447449057963517034109551518362704397', '829853.5'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 6}); + T('4.242640687119285146405066172629094235709015626130844219530039213972197435386321117', '18'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 4}); + T('1259229966702.622212273094', '1585660109041887045436663.9'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 1}); + T('163.04833062468649267909332731', '26584.7581194970792'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 6}); + T('4204818551811.1334068235516094940662770670832347987097641633616076970760141535', '17680499053655077194352936.9862782964932'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 4}); + T('39405180.06334322', '1552768215824502'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 6}); + T('11019819.18', '121436414839837.12468'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 0}); + T('827301397472.2029918861527516536634619742535183', '684427602259459998932963.33834317372593105949228354646289796636815'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 1}); + T('2.7666477911002694164386944265228742439351110337', '7.65434'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 2}); + T('423.17097521237558847890270524607668156801132098651031712232154305066696431425891584532068', '179073.674262192994730735440'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 4}); + T('79.8964796181302813829514', '6383.4474553703074736391804543616'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 4}); + T('256884.8986204117896931254014585418288760261941990857711922965396545498637125556442506103725098664222399', '65989851139.2192430115427289'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); + T('208901.771039551638948558459935195746717360564690378279861596712182280143337256297483637095086136', '43639949943.461255846177212498507'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 0}); + T('16935269806518296805647.546457060582195325905464915681524239174883463381011239795201896196859153349350411010935076375029', '286803363419570270122726919163225156875554457.5998001852'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 4}); + T('51576.16987553369007338491641136', '2660101299.0299088953962881552848995811'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 5}); + T('19594015.1384231226764662349318', '383925429244754.5033'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); + T('13803.380831002140583034541319780513750531431940983173205661145824004926065412840500070745', '190533322.36567734512665230751076729702896'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); + T('3.87298334620741689', '15'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 5}); + T('2.59229627936', '6.72'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 2}); + T('27378680.92056694834550996640150630587355668564', '749592168950216.6421'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 3}); + T('153816531.812650974480814609014611069782098313441090291614251952157913199023826783428321238042213', '23659525458872269.27721846475011520302565099737'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); + T('2029498.8125968959', '4118865430332.21'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 5}); + T('7473970526006.1604681414601953537014727721512435634625424159607807892328716740512518', '55860235423608802990631308.948719255851037211256093771306843473391914'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 3}); + T('2241646555429607930993.608927689837', '5024979279469426302209565333918945376304889.403534974'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 4}); + T('83117929425.537107714299371091957543379566', '6908590191988567392806.80486418318444628'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 1}); + T('65772725.59339738278078887228018658173869609912689', '4326051431984351.09884157745017974'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); + T('40227541142203473010813785626410.19087001878840388060497980542506597235802568540711096477426661', '1618255066347673101991637745640498016905970250767945408572170702'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 5}); + T('5470786820.0139452521385135579833672428710925952543352056', '29929508430038295403.2021080448706293'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 1}); + T('353254.68729598168174020062443678572940775163547873542847911555211434402472387360698376451692274187949171', '124788874096.581801769341529731'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('4710250560799.345071943574342121547002', '22186460345510544746149875.21079977475782182108767576173806601062569351'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 0}); + T('889742696550533491635.902878780831679082243711108150405478590463', '791642066065014722475930480934055487526379.2980796495'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 3}); + T('54.68423930325994760604974477176105234826564193829924891568556', '2990.36602817620'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); + T('687.69813872076169812204913554689609442', '472928.73'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 1}); + T('1922328.5814452710447231491355356265501994748371717620744762610836', '3695347175041.3880723243439344'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('259.814919028223566794421', '67503.79214964236844196364376129941576224666'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 4}); + T('89116010281422470.490792878028479', '7941663288478595468163012949770631.031610'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 3}); + T('5932381112762754622904981552.373251673627440940633090556721714745', '35193145667064258780606184878777954613913495498807552110.674'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 4}); + T('893056745827291.2797429722245393357197289561968389609411292397482876045', '797550351267631140592697284483.78129'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 3}); + T('3763501642015094266579640.1219523405439829814657228094809771542386037789129194751290098235201476058052607', '14163944609450310758114750482357005006752272738570.57225865671032927'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); + T('776.5090582120990070056744810742483620827196187879468568581488531077672537925651203290541573461', '602966.31748544096431040937268'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 2}); + T('48.604526538173376182800519112210650467428825886317769747923817613773340459260266201', '2362.40'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 3}); + T('1619107165354498184885.5242', '2621508012902278327380962859916298137513959.447556874953217092'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('2995751.634073306004244447026435588871407905052680216908898588671550117511803869048557530431723092132', '8974527853052.88312'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 2}); + T('75467153073996458962915131484.3993555081', '5695291193094013185500551046546949646554620436546808622591.516878456685'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 4}); + T('10256041108976420629.199454567907275476', '105186379229014287888491059604397048384.620569192314'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 5}); + T('1663.8453977796919070850392655525052909309077', '2768381.5077126611909711080090814986835313295705839'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 6}); + T('123529131429703819443118.54931511124012408797939563765987050611899', '15259446311777039991024049097756900338962157854'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); + T('5560438.142579741702366402248857210395589101314248740685263570978', '30918472337455.6479130284098891831113215775590418915104774'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 0}); + T('36281644.76988135818686116202939957191270810974653912706871975492103944369636', '1316357747207859.31266167'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); + T('5.282991576748916225741027424914998052144656285680852715908', '27.91'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 2}); + T('26826.4127493781769703743437728144843044287785972406934806238303342625783', '719656421'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 3}); + T('2', '5.37625548458271122007'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 4}); + T('1668.6764282929150311920750595338744', '2784481.0223404'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 1}); + T('10.2385664037012525496880466372434589015640964461096948083431020419951', '104.828242003'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 3}); + T('66372960095452040.45994587668260499913729362119803066270517659552152382678744234600982770351253058209521', '4405369831832468935843830578406093.2565156168971'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 0}); + T('473407875637291658578.9019', '224115016715413405092267530282257875406682.49835382'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('68651941131739807.174750106032127662294695087292808832370099322483965602512157211426100868174677659683', '4713089021155867956380018732563084.26698833111'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); + T('7348028468128439177110.54556973', '53993522368425976483646062280915010569224044'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 6}); + T('2119642072.680265413658964490823', '4492882516276291566.29881022242536487557872701343389871875'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 0}); + T('759911.9536428739189649', '577466177289.32936'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); + T('106553761.162264246284252054647064491', '11353704017824852.4611643486114409049688739044'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 5}); + T('14.7456978008019568614040993673761366504625708181901764989192874845947809143096249709002564722127596636', '217.4356036325756670544458007125524938'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 6}); + T('295414.57241487468020923791493376733960197400575508671338810222236013093392808359746725949898886883126268', '87269769595.06323634741877845138'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); + T('37516617.579099132622513300879884121967683', '1407496594576370.06261787957718'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 3}); + T('1131208352281613015.555408144638994057195008122161118805442530013839952441611311', '1279632336271681894535673114499118754.39788237415185486830'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 0}); + T('32966.69405563486904244570818399194304016536448224495617094756766158966137083438144470645864678778946', '1086802916.95783141'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('31309.0857947795921595950486356877036608601136216829953948182363', '980258853.30486924605479'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 4}); + T('1770073.1489207444615594580039659422', '3133158952530.2'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 3}); + T('1914337.5501650280798142520555737935991361014908729126592669', '3664688255971.8414000128737374263789123210685'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 4}); + T('2062559182194.651333939625538780888106868996091400331597659659567648164339407129332825200701125200486512', '4254150380055468916249334.9191129113190464726018607977'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); + T('12.07145393', '145.72'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); + T('1317013851091420.6561408685542383805866756541198653673575459876412143969639093098412316192938882', '1734525483966654741818421922573.810904219017657492124021067226646767023'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 0}); + T('20690303.52001400622355151906987833847090254985134637242281', '428088659750303.9764329'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('11606.7592352505839337735348351151776393253628311', '134716859.94507472'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); + T('128962450782451915346224.663', '16631313711816332632714461413913179482268224163.627580'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 4}); + T('25034434221195.1626546646428355078518084227214031163523557198228259498967796293623093732280578488089414910009545', '626722896775347450122233568.221736229089870371148583168'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); + T('5280981018824947175.23073432389104277713300016379472042681039852099605839769140560424539432101265', '27888760521189377071172993311260489494.9228964746031216476847321190'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 2}); + T('162673090405691503.024889494298383043507184034396478832316388582171564767570698269884558142411454657165336758', '26462534342138280932191837518704625.0840975098546'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 0}); + T('5.56776436283002192212', '31'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 0}); + T('7682710.552671708235374165899366979310815641756553575', '59024041436133.2246'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 5}); + T('6391.5469', '40851871.991'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 5}); + T('1834507.975076828570245235511028215397', '3365419510620.485874651367130674850280070521899330536764207749717544'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 5}); + T('3495480.38256147827415476994571475428636224261289845004330975322527090233565328776690121708467858140792', '12218383104872.1385087696898062860761518572'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); + T('1.26009423159539937638421724613120826', '1.5878374725'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 4}); + T('1369370604956.05098382437442746815592765507526977434916820834002', '1875175853717701043262789.163'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 4}); + T('61111046097989.562614478991002463202122550327564207016373610481385147575687339517642575745', '3734559955190605346508566151.747128467087991987800252614000906073017'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); + T('487839154280.605258799', '237987040449216180199565.97996551897500100835854353148858639128012'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 0}); + T('26026.3809206474465998782648730859947008804679763994', '677372503.826641430068000281530877034016405774877793'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); + T('3.5355339059327376220042218105242451964241796884423701829416993449768311961552676', '12.5'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 2}); + T('189237794910982562213.25636508486094088772004804584906546011408616284058885391779627042175154320806668', '35810943022771097721298012826864918201819.2991'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); + T('3771198.65750627716579658341655388678', '14221939314377.1471847'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 2}); + T('29135124.530018624988827182698', '848855481379693.0036377'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); + T('998223.9287829203446196803384884403292209921824958032442949937536171090461827984654389784946553623', '996451011994.8088280477062132'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 4}); + T('5126338484054822038.6885613203', '26279346253101490909404023029363590984.22045482623574089'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 0}); + T('320594084.2355540715784886905782644237424727036120667152617154249798799923426746035027', '102780566846833539.6758377523578'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 0}); + T('2180790.7087754998512230743198519235426181143993335287947509925434061761510853', '4755848115481.5470038067258431'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 1}); + T('4435299142639732.0386665272768109416139138688675365733', '19671878484700742088824375591214.762823606521949640217195100557734'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 2}); + T('355924722776.6529947424', '126682408283637287091499.8123529985117620693781205410971392972914'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 1}); + T('1840.27953983121746818190253230579', '3386628.78472139752'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); + T('18505.45444317533478496724906701013', '342451844.14843774'); + + BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 0}); + T('1380998315760.07536639428018906694759131234868833646200425311534294649362527033527763552', '1907156348132164826104731.69607807136577'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 4}); + T('15478.581565616610788736047569976878217626279567162328064930393795809558245153963295159638', '239586487.28344637'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 5}); + T('20814354.1066762193292296130907', '433237336878109.19638027119868364020593141'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); + T('65411343534377893951480143.0687813', '4278643862972400711315519535941613397047166597617356.53505313610762'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 3}); + T('26.161836991932925045265787369493587190351416331869263156799084171994782512198', '684.44171479247'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 5}); + T('4.01130901327733662798257776541675440146186278181542626669368510258079411649993922721806882261901641', '16.0906'); + + BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 3}); + T('1149242295355.33233473660241121236631015179107791864017709795', '1320757853433592920847063.41923783204587387124699776335'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 3}); + T('9474.726373832', '89770439.858993859142728578146543311908'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 1}); + T('8.83176086632784685476404272695925396417463948093141782621020297255713993823544284', '78'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); + T('3830962978040350811709514.1639124190557328292714921812', '14676277339115793415584423492635818739231491629096.2'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 1}); + T('904094739518026362.276858998253417589801385050899447007512426103468322262', '817387298024167938863983875545245626.80'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 2}); + T('3898018.2159', '15194546010949.81802721206885605'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 3}); + T('184916754268166424.532451013579940568421105901355402407206681792452037755126944803242074', '34194206009073445584566849436943803.6680118993321070740'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); + T('10728918189914538012.14436634401825539813105200873037997842267828754845567', '115109685525879046747891569700090752540.64852941266'); + + BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 5}); + T('5173978485.87510754763548985924623523505620610130206120024600441', '26770053372298470472.82008752828'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); + T('12448083579765518960272733448.844733656410419557424433748732709492340453674614639609498', '154954784808827937239154352490553377950290394508934428937.6950287957173019'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 6}); + T('21937056544951997887838.266472241058656756241231521937385200509335828305313379527318257363340679517701971098439856037229', '481234449856421286927459543035431540893700257.7118353406076308244033'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); + T('8705805512511376.661415004088266418167596075698134210732650646137955094273212000791730326866575509931229837909597', '75791049621673473659571306712104.5913470'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); + T('21744792388806330.69543805888148448016988971611269397259934845377013557', '472835996032289729681394667373604.66074661819409142691068'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 3}); + T('364148032238911.207459019623811970686792287639949655428263721201429401774057623001667', '132603789383471116094969998370.54564120810660443599509'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 1}); + T('6130.86992934880235087497305800565551205615083568452544051362005512506946811033000392166546', '37587566.09059338872940942140'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 1}); + T('148902754396098661216264733282.2432677199650259537991922683099806354990954412183841781360864322902131461744', '22172030266744879178523766174920227318932007998329511426386.71431306'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('2.485558288', '6.178'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 3}); + T('48675762028559728895548.12665897790225369108328127728148623968749329776515932108839536622078517', '2369329809060977133824105060183733685306224037.8'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 4}); + T('24.7386337537059632989284591358444621508831953522417226063918014385697260780257', '612.0'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); + T('31.610335068913719526253073315531', '999.2132831689965253909026235101062925484544085049'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); + T('381.951720361337291359017000726333760115427476940754', '145887.116686985200'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + T('10249810.4776964144606649104434449145329654563', '105058614828695.2'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 2}); + T('4565314072683631718401.4254286569265369656898689812980558791518310535475002322479184308757040096111213195929252587721798', '20842092582243208192634490035016683394003768.897'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 5}); + T('11921.919157895436980161095883273297050465674732349580111298784795959952105486977509191', '142132156.40739424522513940329925953476743994585969'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 5}); + T('42221784994101.50903525126461999032247998888873167843', '1782679128088135365358664827.18789866270490430767365565'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 3}); + T('97847.44665485852461064907480959656322328400159999501985784579886747875', '9574122816.8753846778'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); + T('234205.612503318998', '54852268928.0548121688'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('25529284068924417.312616362288832310787818', '651744345071838052967175093720670.309523048811416290'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); + T('90387.925862', '8169977141.632377593'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); + T('39727850756.6674266118418', '1578302125744040621188.10968243099467673952848'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 5}); + T('10922946652.61277809893232338572941735232941', '119310763575824694072.67899'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 3}); + T('1204691748.01962453331240668450742564575254687343257', '1451282207746578530.68'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); + T('2168167871148394953234.1925145526882349014061487960355124218083724786535449969286840357060655099527403', '4700951917480162980663868559509055318620701.436239024401270'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 4}); + T('468012.3980129886634423908716', '219035604693.86811504914527871748991009824119534'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); + T('152027.9034509030131743006877834012496725', '23112483427.6770883018541414'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 1}); + T('39070.768987', '1526524989.297643871802383576028102147694626812685590152575'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 4}); + T('1250964.0328412267817990068707571462032258488049181937', '1564911011462.3859182790021956920389318080447013349220674'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 5}); + T('1.574747598823379695455819287781216314798721967909499025165940557210793017153248', '2.47983'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 3}); + T('99.82965166080369078090076790080975783846377844493852381966581290508065966343620655848892826147126', '9965.959350717405097'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('647.729457744512342323271374802023230498738468582236031741072278', '419553.45043'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 6}); + T('24697777055157274614045404601142553.70406771835510501104735791650848400272399441549342218507230159973062171502661103', '609980191466253139733233884276803110291097008877197723579364303731893'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); + T('13.6431266042795337', '186.1349035404'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('173.2188929263660950499725455519748713007516020857763370494332244159518279439900397902257637451', '30004.784866635882'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 4}); + T('46143126703751828496.866649027371445895940007418220059475791917987944465104919918209683758208288829164', '2129188141998495085389252895218765450927.7063857106'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 4}); + T('64866.977655547797763275486444509839974560207365651674817907766434', '4207724790.165337269565'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('17584290857147344.415797971139463901060315043736480054621679443194306011937028118601468078448454466113714486390327668', '309207284948755688576114250910516.74'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 6}); + T('2.94358860030385493881670889399291911046241548916385003586188315285977498131365266043', '8.664713847838807868001451403595636253922161359756547'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 6}); + T('424.99280768859670787492492363122383472286022111724084853084296368784059306715270358792', '180618.886587036545015612122512773593063212916813764199769387313'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); + T('18.31090032843085055141567877490619869051620042759275170646107', '335.2890708377290305906582988852002980024'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); + T('126427741490350.05876064315047378101790577982019123921425265937548', '15983973818350781697093926569.612618127837088601804542393750879971390'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 3}); + T('16.692445803416586201775384489366982', '278.6377469'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 2}); + T('349210873373756.75981101873418700429959408', '121948234082461977906208449874.02898224579023209742993297127871656'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 4}); + T('10.406728592598156155682425873215240545', '108.30'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); + T('154577239693381679058287.97436120925772268748839189894586354157517982123268495410171938553647222928153513557194250214191', '23894123031225172524806703141007699579590862366.2631'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 4}); + T('1183519938.0327546884078159164077132538648035819895600967199921207723839756282768130542759614616292199', '1400719443721055497.588328093817233056244752470'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); + T('241257503.34869155337527048121955221501097', '58205182922043916.0906037558925342272671667138'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('20.3943935923576801013979387591948549133326048632573667789299', '415.93129'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 6}); + T('1.486678588956157516725362331766399749551245061708835963596471115535207', '2.2102132268606715586559333071481289982224051499'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('5480561357126273281877150.2516417121681290163460862339136083441886517', '30036552789225778387170901122576813278108089781372.771583915452'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 3}); + T('186290.73', '34704239588.561202019698480025986856466562575839'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); + T('1019119990.3697989', '1038605554771339166.6912148749760860679670771315340046767'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); + T('5.51382659658824384028874579869515', '30.402283737243896279380556624294805637164470'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('132128402859245050100.944755960799740493288068513067396744451394670499181597586057807458829316094508487338595892', '17457914842134955530797594713735952482525.87431286629942757'); + + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 2}); + T('11194229425.7115257840132096032453966', '125310772435465796361.6'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 1}); + T('2514912879934.47954895904718779302011160467785506374230597396840365067162301819', '6324786793660337947551689.6597215'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); + T('23110048.3', '534074334023039.0646'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 4}); + T('2.8178317099209633246681281054844265828694464028893106', '7.94017554543610'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 0}); + T('83922723879121100060348.00424897481020168', '7043023583291202900493646259695479821033571894.5162'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('247358400344048909864251401578.275102984', '61186178220766775849900540163098993844125752619416049989983.33'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 6}); + T('81.917085580481926713094910295288886277402363899734148', '6710.40891'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 1}); + T('1881948645458414392373493267.44076491245651937895770407455779709686155608638313', '3541730704142760714361731732288699331881581040832341249.39126'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); + T('324.26623374592211771183741217403875', '105148.590347765'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); + T('1662149798843078.4069237887302461551370934948249024202080631', '2762741953794086012243855678967.8'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 3}); + T('675642835238849681736474.578123268849552096600873729347635703046100261327366969339596447149784597367597431761384272288381', '456493240809591377271607984202883887598233546223.73731084236993405421'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('5789496541496.6234418909569785217083510247010199083639377506967258726477304725684424188767358767048961015', '33518270204001364079261054.6956981043060432728471824679780846396880826203'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 2}); + T('3898118405075.003146968384302560049987066028159380764464068397263645779570408017201600465061', '15195327099984486320266383.0779'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 1}); + T('75328512486.03568083840615998761042897028410187816426562961651629515834372852207961734642188953302492', '5674384793358833469158.7800150542809744853291679751200'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 4}); + T('5798169.528389841210757172244446608220276215346825819225777169316424526085117502743814039', '33618769879948.4736420937'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 1}); + T('29119162498.850656252014862720939576335974293913751260474542935386631954376862430745731464008616766564510391', '847925624634470395269.44447102349587477'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 6}); + T('168.23340288442161387499486814301418324124', '28302.477846072118591243169889731912227'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 4}); + T('84.717176534632', '7177'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); + T('446.6528853595373338635581695148843692555354568157075769833229135178150603561840120444549015301812', '199498.80'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 1}); + T('13.385220437154074004622844494', '179.1641261512071'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 5}); + T('25187.464910513177055609', '634408388.6183325662617834169211144795841400981156'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 3}); + T('10422.15813601939556380841988779887735492607695215255973816250455181808482251151607984617041577195472527', '108621380.21219528176229683714575'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('2208553892153424409400475031042.6572327746873142396027723799591270120723216684906399117752180406894099292', '4877710294546039817041980082316047470007304183838484383878968.2209'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 5}); + T('14.4260892287582664239790267726919919828624026033250319230120150996965846303871869390740935534225811', '208.11205043609527416641080601664504139952660870888'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 1}); + T('50518253294056311797.1731845046869551098465', '2552093915882431397702073747003243930704.039747494091408300134971'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('23832299110227469789029554304.948356558865989463643235875638019404450568339468087397165994402723017298021132402151310599948', '567978480879349048201333612155955923171671328708933141291.1'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 4}); + T('97932545.8343664485428157368834804942294639641837112693533951', '9590783533600285.2329863436120504074140917839'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 4}); + T('662542878881.876031608894840844837559122854993420182484052151826850145', '438963066357084252820457.6516316337481795'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 1}); + T('2.408258174236454324395775462046657264396664516691587445008530664989455090566', '5.7997074337767003950634583826104408675441912175'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 2}); + T('19840.4326250311386701679603718626113117527540565797995311111902694479563', '393642766.7484'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('15364571.38004578150166243985432371567701531656413692847732610913', '236070053692521.93070035438755932153027579886205373478180'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 5}); + T('557.884441439264', '311235.05'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 4}); + T('973.3437664448876512', '947398.08767712'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); + T('253803.10166048', '64416014412.481521657597915615475256293'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); + T('10979495135456507.342255564998728572391728604678115723240759397693', '120549313429513108511981910613966.523081580'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 4}); + T('275756032001872551178215198414.24547397537996419327607093729301388962050404448273494643547281384033137267141232586354706', '76041389185417758565246602361525083482592333735384806760948.73885982708'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); + T('622715720.6863237085763126032498599017169901239797664342712392168097039974270476', '387774868789887525.14937758830956496718493909569236992782655630649990'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); + T('168020.06571690822552882775092697246077349555511570099299844483404809694983876654837809362564', '28230742483.514158818734'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 3}); + T('11.7588160560738046080529419704288531653704396950661705922012083704', '138.269755040579104756364889'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); + T('32912865546108258981522.757929715992045216906368802942491', '1083256718456200104722022580166775873143293905.1344841968439478203'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 3}); + T('4.166533331199931730602544326927', '17.36'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 4}); + T('13.1438229181471400406148696794413041749550438491914', '172.76008090361'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 1}); + T('140388.44002034207101031451179095355772785653', '19708914091.345183231428356292375830226197664009'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 6}); + T('242308.729399', '58713520342.9660909760390092854509'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 6}); + T('563619360203.007379904114453023253', '317666783195647379114879.695054964988341456801'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 5}); + T('59647218914478876.7858096522484430132157141971', '3557790724231766676348271355770172.83342006'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 2}); + T('1615983789784.28557364029229913482567909068840532382641403331829', '2611403608845582067513660.0062671164003418'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); + T('49824048.11723328394671314846823689101965932', '2482435770788377.54686097356795579347173'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 6}); + T('3873399959291556633217.406801030839980478563896498128017913070289853996800649949943', '15003227244639832583385968352771422955089431.37902415349699763'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); + T('1069094409.0917779579569', '1142962855551297884.450653020529661'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 4}); + T('722662624195087368689595270662669.143097757212534864309051652910227081852406821943121855819128756801032825995791664965218054', '522241268408530075571015801012379480742910546734575022468778895822.7'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 2}); + T('30862804.01109', '952512671426425.6135331321216487473802'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 4}); + T('1102616829129019317396593.875343928415659074623558923629097274645985317064624881354801034751875382964051628994443076758824026', '1215763871878532982271799732726570299157805883536.58539'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 4}); + T('1.732050807568877293527', '3'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); + T('168694642.8213633884274824334697145155532567219877', '28457882516627370.2'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); + T('38.82141524469451899324885987106050839542190648554377069441850531749678620576749', '1507.102281601'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 0}); + T('3708639695.845872597235507175528689024964901895541187165232455597159738447', '13754008393603766407.7561988'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 5}); + T('38154.94717636627489849459718350118176052576391544419824369739236599682079', '1455799994.031300773784046392217039165082991'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 4}); + T('53861660.242327701941421642702708321820603', '2901078444059944.6398231'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 4}); + T('66519636.90005441495284260944015149981502627014844358', '4424862093315080.93581004496660187296078112048061051'); + + BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 4}); + T('637.68', '406636.4438334'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 2}); + T('41351116245595004128.850620728637405181715', '1709914814756711069822067981893933170323'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 1}); + T('22459732672013415497.3853699921391046229573', '504439591698306876553874829950080159407.2170874815252123'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 6}); + T('11157237081923757329367254.81266156634018984033545412569365748968958548685350160685800062464993237', '124483939302254559619977058929566395439363258244559.727038073080997530'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 3}); + T('95493319361.43998295249', '9118974042665968313514'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); + T('29.769596290034456365817227089424776835', '886.2288632716332683'); + + BigNumber.config({DECIMAL_PLACES : 85, ROUNDING_MODE : 1}); + T('5397955557584682.9062196137312779972149743250300061250217778253358986584900136549913495459719480101042', '29137924201659364934764001707116.55318205283801807954313080327696327'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 3}); + T('445909149943912057897653.3061127067661639263187209140228907079537075199638', '198834970003702246826932602696089951470569651509.383300823252946843936'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); + T('138070606399.4147429423070318301311902897789', '19063492351502107366289.2467253642099'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 0}); + T('2.828427124746190097603377448419396157139343750753896146353359475981464956924214077700775068655284', '8'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); + T('2064697698243932846.565435522719237034364504912661784788335223237983', '4262976585133794377599987093885187119.23'); + + BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); + T('1178718920.97866576388857757648973129508', '1389378294673110105.461225'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 4}); + T('127622.9679188807821988228260439983645956713934866081244383838758589369960872848880087674', '16287621940.42367333133099782844035945474356067647612931678720139496987'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('4184557.3924000870910318746615706242234077254404466436266097920196360998523801490310121360756808685', '17510520570290.216452602485725796055410479930910699820524114'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); + T('5052352182213.797005876498492011065356236496707214014862642148319', '25526262573120516662336097.11698538677217835690'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 2}); + T('42962929756.4524874753904254242420999449242014725', '1845813333257870594777.54199726872487979735452840824704377894604164'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); + T('168552520711834568.361558662238009', '28409952238313421147614420010576914.875572232'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); + T('2657299207.955928329491651283753102211', '7061239080603204033.72779831'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('3457111251941.512647403949385333329309', '11951618208300612934484424.7889623678041889110925531673150994095'); + + BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 5}); + T('16589542242815120252699.92265991917398936543675728311599787724806007026073243495', '275212911826147330293614584060085860179008690.253010639947'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); + T('9804797931985.8334842704072729046935810090146497008995969314820034132254912985', '96134062487073676975741888.206515315310498601298549'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); + T('225892.20559798985395295116237397587419516789890792906677567114604', '51027288549.924518711712074082612750594'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 4}); + T('212361356175642374.977190707414996501630173108910035758593734944529542910622890148761', '45097345596758041873283619282123892'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 5}); + T('29439920525604978702137963975872.69380730159987832221210796568237689', '866708920553937325445884613300050781747349007538519310874214296.8110223'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); + T('1794661.69950729989940645822298294821075937317947091890782289675406', '3220810615678.43'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 0}); + T('70943035594.1874458255551741147170761086757974', '5032914299318146884584.65'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); + T('99675095.36380397144700231541652768934274', '9935124635783415.963067816149336'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 0}); + T('338.977137872157980140325006163392742535324091920552022', '114905.5'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 4}); + T('40323.511502232159196214269860943981338317851981421978663218667848589388654136721795079462638130870006184', '1625985579.870649244041736269081'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 2}); + T('295.1603373872948769259', '87119.62476658174193358770628953642875013784920139'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 1}); + T('325.42058050006609869285755826829582236913188764341404269672712729886860377826386017746564', '105898.554213'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 5}); + T('1.4142135623730950488016887242097', '2'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 3}); + T('6983926090.66911511517713486643086264164426147359', '48775223639928789120.645609367588844026447525761410'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 3}); + T('2393.370169129531592840167459790940738107671625604470887826', '5728220.7664791226615102'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('5.493632677928148482954946', '30.180'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); + T('285181133.07225', '81328278660373834.0857869874879'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 5}); + T('9542652739457662719.528', '91062221305878834929293220504352063866.753627'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 6}); + T('12098280403299808.817491296272404617641688923237454622741160966458759689038562738845236283437224', '146368388716868184691692991958045.0'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); + T('25105674989.27196694892019569379756456643245439196899838495631560703289', '630294916666955977775.754761194822998662848290817493307378901564640345'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 4}); + T('298760546437220458.455423225771015955168504223011027135', '89257864107466561972186848476830462.4'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 1}); + T('1.1', '1.393474'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 1}); + T('25453431235727183076231582.0045002428296642817772', '647877161671892234077761466199978409616134323779669.066906'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); + T('1166849378.009584249870469632351477502709648', '1361537470961353636'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('120735117546849.465916751', '14576968609051557796737216230.279553123'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); + T('180.802933832667757267699871900802757327723388473217684830187551089875783911937647806249', '32689.7008825000351504'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); + T('1723788708991912690.6979822127245358278366754115883', '2971447513248005056078047539326528478.011258578775759932105013136721'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 6}); + T('41.31839758166512923717904870453658035', '1707.209978716550800090464759416961234'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 5}); + T('12.2574125193918108917955657', '150.244161670543100821504558563'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 1}); + T('1971415909727091.042395951589950091275895878232674723637406777994288306294009519427713077175092202052917069713678', '3886480689125093978070206267175.340387'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 2}); + T('29818.1986588727388202116378654602160649072880350624797884079437903955143243950832588490362445279127949134', '889124971.26'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('1104096573655.7434508163966770646809860896275509688219219768440479417337', '1219029243958352523057154.72'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); + T('8.3212032754884674791676327316', '69.242423952'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 3}); + T('2.83003939901903', '8.009123'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 3}); + T('340.03323361794512720886720764159962236524054263630048376346443471719835370047017804718', '115622.59996467604822471094600529392511693650574987150'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 1}); + T('275469969089.0278368513030849885226902642614972231941872', '75883703869909951923056.9925972076612838068953091606028'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); + T('1.7381024135533556067543983015209908994079067310222845767824051781162295524', '3.021'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 5}); + T('147188.397533864935817557107794698076331354474102470320276846588830452486', '21664424368.58705752'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); + T('13205967.790168468376219309952073343238141391650648614253222880670277752337543824936186866', '174397585274967.06'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); + T('476378245.2022326695078600546489393633852826695925662433781243683416850986996053', '226936232501958513.404536825694807'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('65441262.7320917904408200255581619450931183912735051626126918347697', '4282558867970665.8685319872056422875263001'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 2}); + T('16370078535249', '267979471250201715812551325.0'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 3}); + T('58598535224572228344606081143.86965847762937769186434110613067109010826343324179566657415332264633113223594', '3433788330465432215791468757905667403887370264585778014417.069465'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 2}); + T('318363725.1170424420783194862296940836221974113987521316095299779738219371', '101355461470399760.7'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 1}); + T('14365771163.04683583', '206375381109028038378.8968049886952690030430276282428851486182857624'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 1}); + T('2841081846208924.95006940291133134386661306911437159092547083699830973529759836', '8071746056857913481680923737647.56'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 2}); + T('131.3328926430846569131', '17248.32869'); + + BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 0}); + T('2450172181.50221018709980940566629037', '6003343719007299620.145731224358202401202766492638826695870673033440'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); + T('175.721010954473741615074590589138', '30877.87369086228070118'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 3}); + T('35222503818695.83554274', '1240624775258042717246577010.284467326536941313249177'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 4}); + T('275332.808008853169433992082394650601012733904717450517250251808', '75808155166.04'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 4}); + T('650535575.02591020903090816952476015222892057257466848913366015211767330519338', '423196534374291650.4612554166'); + + BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 1}); + T('406927200.63717875393669232657792854954820044504469731078', '165589746618410732.8838911359'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); + T('3.5', '12.2'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 1}); + T('37755263902.770333976947348906520419869045275', '1425459952367832590789.24209908593868009183303760839070054881073325'); + + BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 4}); + T('5', '25'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); + T('207981785245332.655650133225843609703074411112915893328590968293802716495668521411178574935737507656194691295', '43256422993835672341998199525.8710'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 1}); + T('5567.151876678055', '30993180.018'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 4}); + T('230454239.20351432886371300553461777852426637742579329', '53109156366870600.60918351286261378516983689388197643'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 5}); + T('1', '1'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 1}); + T('93700655057314214506084.06304464429', '8779812758169783883346075569138347125163328358.876'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); + T('9.852661929651296017820353932148571', '97.0749471'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); + T('567906032003800411043011528704.9630913901', '322517261186301576710825760318275219851051098240516062527531'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 6}); + T('1.14593577918', '1.31316881'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('136701658884103.983801784031791378405', '18687343541665925641857895181.7974776695004112848393'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('9', '77.476'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); + T('5939114.486012363442761208219053271364071174533711946796290607324372252717149892498', '35273080877961.90'); + + BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 4}); + T('758230332146782649.038', '574913236587420337445176452427091337.30'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 5}); + T('9666198.978421', '93435402690422.29441946383951996502994575376130537'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); + T('2.590278911712160295850740530343268793109490349355580782704975797477636584901', '6.709544840460733512694560285948463771031066891686610162271281426162621'); + + BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 2}); + T('5.518061253737584236314019174438934514502897225542757968064', '30.449'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('2649559.3276549431175517495047876221738510158494831871465587320520938465946988', '7020164630763.31422095634109838375574'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 3}); + T('567.9550364780740745791662861971589109151899', '322572.92346081045270510896663891363296'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('3150748169414198847840463.18235887773465431759166732173861612818759700849401971501876448272195126779179581325159644604856019', '9927214027066925084042058637410661418578292156497'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); + T('6230.779757580163866697716030430928315350835358299363369491', '38822616.38747072560206254107330849348366896430098893811980691'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); + T('2.716247411411559909781469174249066399553542751307', '7.378'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); + T('1003856.804189946449097794004928186526019323205855400434577744585139331157822001974710614149317739', '1007728483318.452486681'); + + BigNumber.config({DECIMAL_PLACES : 72, ROUNDING_MODE : 5}); + T('58545618495785373747.978660683381606360982662056343866125407934242953992920901245175791334319', '3427589445054046448675910703464645073846.568134490845289998323'); + + BigNumber.config({DECIMAL_PLACES : 39, ROUNDING_MODE : 4}); + T('152936840373282.069033230237997018443718074008255872817', '23389677143362760272547678245.15312539480334913939812559754408447298'); + + BigNumber.config({DECIMAL_PLACES : 85, ROUNDING_MODE : 3}); + T('5925.3196723393751424830150929842214599276197242531387756086505181454007563045132273149778', '35109413.219412'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 3}); + T('38561228.56697678575069939167914746425178007661373044851182281245001919601239245478067382', '1486968348594626.53354241638419629718421662019251450932947890'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 5}); + T('150.4509587455', '22635.4909874539178687243'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 5}); + T('1.42777813310472190178856389527377945214335953146126319604328603730379698595792254248379', '2.03855039737200497185073691500462232203792065665077273244'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); + T('516549215.787659938423166339922918873941357009613190991233143989', '266823092330846471.379278'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('2', '1.08767122699'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 0}); + T('6324067120009086551.5468269550550503238490888524340636718633012263225092', '39993824938380022323743029539005736229.3283338711988086216840448390248'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 2}); + T('144118.390048216955510241008109108904440825', '20770110350.090'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 6}); + T('18.78297101099823345', '352.8'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 4}); + T('625521102275061592166085.7029768359919241933', '391276649391408064574867871389972320049448749231.515233113926295781'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 1}); + T('15882418.01726333951134210284351839021652515057337109745443', '252251202075091.1486881249278033607224037158843540912'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 1}); + T('9246102.56100069809273634059139333855094718263186671420242936944261575893351481020001402555139465129260003', '85490412568543.6679950745889670338728'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 1}); + T('60961608.064554172663083', '3716317657816316.3414696396181849068766696759170'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 6}); + T('5246979273996.215099692426428798175290449427111226766305846934068259604146954605057636536678', '27530791501745848489064024.8188180632265280334699492709026'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); + T('549012.663441058051793486405383817407015996732587541151595200978084268869699408419983990553', '301414904618.6444803'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 4}); + T('143455.7859397685383562199471977165574195449037114065988291931607472028', '20579562519.59669265955319'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 5}); + T('7323.414075814701603113726796738850491925289154116673', '53632393.7258409'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 0}); + T('314146057801896.072108842090558464557933909765109713994989546', '98687745632472227996598145632.74641148442027'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 3}); + T('1980077181169544258109.45175016109951535899380651346232425215206090353014542452514108138787115693996106945620698162', '3920705643388328194332944477286896844012715'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 3}); + T('6011.1', '36133937.82872246239'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 2}); + T('31921798365272.20937299799446076643740006676603681348599', '1019001210873095498660884207.3946941973644977'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 4}); + T('4.8579831205964476879084184791886', '23.6'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 4}); + T('532180335383422496024802938009316.437231456810652157973165941886814685643110949100858986799826492779541359875188007141128020804568', '283215909368812049909044402175454534173632261029912991407795749397.57'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); + T('4117620393205561878616466439.3589035337592787404765061242925453323082755577389136298123562314912920363974305057593966', '16954797702542326015871361358548968955831149713211464473.1194145872'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 6}); + T('125845316.009946996954481751436769926191513940640832361751949762234621432238139835729629824687966125681673', '15837043561643421.95007453'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('43215736562696288.1278295788274110509465500800588178280120433', '1867599886656364788451547336030574.1042929'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 4}); + T('15621491479513403048.699533910172088405978421413948149996097276644744344976', '244030996044509850142368364708463636903.065970027514531227023'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 3}); + T('178337437922.3409184119906563307617679811185757303031127956447827491012301101339529853906621960842816952844554116', '31804241764704800710353.817213026160423493644719533'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 1}); + T('887156.5304358788486852760691897281127658626051846106550248530081803993620243050311642', '787046709495.026433990039530'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); + T('507.236726280487857380940671340356658005564340464804099830756705102', '257289.096487746561'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); + T('706928215661578.645391690986420023561721605027645326', '499747502098463447175418473761.2978027539601447630695939'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 6}); + T('517763510430698606317.0809006022190406', '268079052733520144503181249583007928315915.4142727240345924'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); + T('28120380999784456871711599714211.3366834435766268345186681299717226185752325559124860129892133352608046765821533895', '790755827573038690221243071006380153898932673099784811839693348.2'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 6}); + T('15996.31328328727145297157844857483958854490192496672111354158713663533836276729421', '255882038.657072806407074465204520879667922106288826705864274522358957126'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); + T('4529.2020575270077036355835603989646565391897334057016463815795973838051013483', '20513671.27790688'); + + BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 1}); + T('11.957', '142.978068453'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 5}); + T('1685976945242985678.95815067126816165675418912553152194874360838240711904223001193', '2842518259890869530436269343367542397.5276842644433823844843054994'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 4}); + T('375790983.100062192270906028735048485455706166096392111303292385474398132353985937006549336350115', '141218862979311228.19925'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('1.3582121735950112188773107283180479288740509274225903562199127996284062', '1.8447403085016848904555'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 1}); + T('373517970953920.4727120160117475904085285980006296740379565850799987331831582', '139515674625533777927629498890.02832807275'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 0}); + T('130670434621810838954485430.74993708051', '17074762484252940770822154406823463583074092132494098.1620220080582134'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 6}); + T('410862.91578166713390158', '168808335564.6133'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 5}); + T('1.056882207249227940185147536423171386481708667802783', '1.117'); + + BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 3}); + T('152.6779992371273697633357536044552314267940328982004863405769613320275457342815692626846477563670374', '23310.5714510522657034278023418482838530446'); + + BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); + T('5045832252789636.3813168206783005421277846727380224180447331191378125099729439', '25460423123292136945025493632037.90746370'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); + T('241.0932155085819555358790117930184281430544398516041254679339298261706270710481942', '58125.938564267542760919843105102271'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); + T('817025.371828418518631071224096112860591604381801846574731525820101525218802811325', '667530458211.36553674192'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('28278311609946.326736102526929532491', '799662907509225213536765867.66273'); + + BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 6}); + T('1.60044993673654159696798740599151325319220173155080452821', '2.56144'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); + T('57250.10343607', '3277574343.439725271285333261007'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 6}); + T('110855888.6785004', '12289028054700075.1523748772313326451842826700743417901399875438785852'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 6}); + T('317340360.91013300290215375746814647227032587585124984322407432345305135787860411883975304799', '100704904662573470.40604311931228040'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); + T('30794104978259578447.5324907738864954704313972589515591946319482', '948276901412071352410750952884177783211.51'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 6}); + T('904743.1002686033189575318435946062559210433293', '818560077483.643999'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); + T('814.22285241569076215709135504419403461514193802087829114916346', '662958.85339594374'); + + BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 0}); + T('143152984767.6392799439406910636477216233068934157431', '20492777047883963708442.98940241835545510'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 0}); + T('194263.56051042638141037702010101367144786906155207240685722988634', '37738330942.18809220193041257372062644812542074623487171376384576'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 6}); + T('125613206310637238.9999516821420060389669668726285618243029863493137', '15778677599638715084039823531413754'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); + T('2.81203323799266774393606177414945136596491179572335714244696589280445996807268708486433927395365', '7.907530931575527548477411073438'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); + T('97111976.5122288174252479213412431470964858043', '9430735982111681.5109964772635493531635006539282859130'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); + T('3949738515.41597806049335653753381952486682043359067751877565231', '15600434340160414359.0242581826605547758376333581'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 1}); + T('3506245338782.0109313646218819195242298503032566600274291448066584621385570357489121387', '12293756375730578609336028'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 4}); + T('131730705.496855457', '17352978770699264.525247991247407117213299374535'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); + T('11.2973449', '127.63'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 5}); + T('848.3895866356', '719764.8907118'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); + T('5534.674100613332409185919669221553225849120645345046040040296971736869045359760082626174208915379', '30632617.4'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 2}); + T('10928938620655456801.29603452229846959727304567882485936765429318591408', '119441699374054398699281419105567220380.0967437459074243'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 5}); + T('8725513451707327112558.6421593666547417330120647038', '76134584995925513871275158019859409214493256'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 0}); + T('15138902098810276416.34547477556955649142152996550437235286286', '229186356757362192283401407016237741007.875'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 6}); + T('77016750197767918492761921.18729300767631826805523375696015268816409374420696804911556102049294908310575896539550300168736', '5931579811025384712266992972162620186506533282884778'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 4}); + T('204726156.573360406099498017635273106', '41912799185300080.215440520642760629606577'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); + T('18354.9618575334846703385169041300559086', '336904624.79150907'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 1}); + T('5.2702941094401932817072533773788105939199657130326470941562465397903460264359252040580345287167', '27.776'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); + T('1506899789309989.325166093578631118018664419471205880907150775938926778426237139996792273511931625682', '2270746975022490218466170988903.9034'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); + T('215.141797893854182599917347182504049580948821046088961606891404751873995447073405879627656862967', '46285.993201'); + + BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); + T('5619123349635224222077.73689475358389819964179507664344923519119631866482798769645', '31574547218415782317658255169091503768595218'); + + BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 6}); + T('3139311096862303881033372.8895562022105500271168912428067595756172195924006540181335036545047807615', '9855274162882801500447430900223953535768965599628.60066266'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); + T('5188166.045323001', '26917066913842.5'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('48.006249593151931618014834046061943060009707858084284198526528', '2304.6'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 2}); + T('1.099164138733610613605106295601295', '1.208161803878'); + + BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 1}); + T('1215373388900855295845.5639091709273307937490329590109938808688535471517', '1477132474448349650830670930172186917647227.199322184697'); + + BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 3}); + T('41886.32804080003', '1754464476.741510996586572659655625634656330393988765738834499008646065'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 6}); + T('2930.8115486762881469691621854256971849413713695023369381527515359143547703303370877901349455103678', '8589656.33385430252628284912359208432320350710697'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 1}); + T('196113185633565235.48902239272865560851203376619671611896859555577833436790431753', '38460381579345217875459335568935383.8847449697048154978487350092029369484'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); + T('1.3090836489697669430592230864645135220438796259107745885986886542431248034364317796928116096', '1.7137'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); + T('6494.1269986060183145522727735872976974', '42173685.4740236118'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 6}); + T('1.73205080756887729352744634150587236694280525381038062805580697945193301690880003708114619', '3'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('510173005.753621652801505640054349100211743000777249630455648526090128271276356538524042100252', '260276495799684872.0535671973932244012807052944'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 4}); + T('26680.140555343682781267465538767291165017590933503085728684041740432806578026822495320310875029221617', '711829900.0528947178462167211'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 6}); + T('26863311087875171271392.514957801132618076235905273081446630753668319', '721637482603957117805410790743695797070814094.4'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 4}); + T('42.095644254289553432987753554042034809688485652611694000319150583822', '1772.04326518370109313123764508971031570992396357099'); + + BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 1}); + T('29.162455980379039696650800234586962597340058414', '850.44883880754521733664670163746907111624452011747340966506055962305864'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 2}); + T('174294956414350158.07876863178146700685', '30378731831480221313550099920962541.2005954592883112926466593'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); + T('7.549834435270749697236684806946117058222194704623380138298626905710721953917811195582452074148', '57'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 0}); + T('47296675573534188016.13909410443959003286535401918757168674179806460628276222655770436524602843813149348446075', '2236975520308145512917915800636179158586.5092232275216783'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); + T('1447945.6262667282803484290772440854', '2096546536624.94796979316325227120931989581'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 0}); + T('4.3292008813174583991369', '18.741980270799858523549010'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 1}); + T('2849247060619898470261078632206729.3993355880326702595070558832203445897791540572152075', '8118208812451131388164025563919715495922430919813078457425427917914'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 3}); + T('3.4829585125292549197', '12.1310'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); + T('32.428290118351907948165411821421678725137118993804751360645501', '1051.594'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 3}); + T('7.2070479393438198497379099999716403294014366391234593782940686026097873630434300194405', '51.94154'); + + BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 6}); + T('3.605551275463989', '13'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); + T('603824436782267945465764574485423.80547609420748446504714711955721919730100747232448916748085772070372661156640640062', '364603950455423098555431241498110457415113057007663996510897977425.745632'); + + BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 4}); + T('4.3574355751624058321', '18.987244791690926526060867101645214646023908888'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); + T('504996390701500.435239100967145881400957693439105021537528696911649198853064966592673953962003822544', '255021354621542475250452411149.0055116842377539'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 1}); + T('2909.86260112701154717384254378546693847874984', '8467300.357437657503048755260363563653074'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); + T('9.3053479247151205055515881569599031024893777073506787564241255718300181642', '86.5895'); + + BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 1}); + T('15184837.76261575421430103273013272422421584951851796', '230579297876961.4243352370777246641742839628933607349'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 0}); + T('50659385450.8214538694263336502871503348032787319532637210737215146773327181', '2566373334254900398902'); + + BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 0}); + T('226.60228379499643935590935027196664811910610985785113122241953538017762352877784', '51348.59502110810590185955521392268'); + + BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 0}); + T('9175842.8911770299558613410655', '84196092763564.036005'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 2}); + T('62524.6899557388029462095111297731720065761609804421739715387797639468988712711156019109649322575312', '3909336854.0612647523247262815157065521719556832865767218863239798'); + + BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 5}); + T('652.31309350134792806991152377498486054402221136563232349988445782260141722659661051', '425512.3719532982845082007576'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); + T('186832499748734.4829944850442559429780865393108169056074459010304450005', '34906382962360870651268614097.94565831926234089039'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); + T('3693959583316804.51199229840601385770877601259801966369268344952147731012934598215128326668350642370497748936308', '13645337403178060015123543336999.7073728144053018493'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 5}); + T('36.94471545431091826803359482480916267400888', '1364.912'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 1}); + T('43406.38666118846617211', '1884114402.9806'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 3}); + T('31987334765.001851900823021837506682024607261426616460152499', '1023189585368296079968.1551605'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 4}); + T('18838.0008560899974069055717427261526855765440186889008088955787710407', '354870276.254047475192657981134539079181359836556514113293'); + + BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 5}); + T('84947581.82669065818681578404113066561367677316674137015818', '7216091658202304.9799531382271756'); + + BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 1}); + T('1101.6975972788540124782719480347417662099926636854', '1213737.59585'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 4}); + T('167205274115.103780530647', '27957603691906994337374.3099966843916195600451'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); + T('113.530603646298245333104493769623840715435780348102499661940881285297460005634412373532130963', '12889.19796429286843872'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 0}); + T('82445912016.2463318822900430706509122231808029943890719024634238434031416371678942728723333531287386', '6797328408190631297644.10179858770371764'); + + BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 6}); + T('207651.3290995157162487299892765302290963929658888771167106618', '43119074476.795382480774731451352243170'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); + T('8552153877171979936586493.5446127951', '73139335938827728891918366925379870129969607150489.41'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('127053.542191315698254482051137112861614287006654322252567463225598634600921108288525772345080371829053454', '16142602583.360438243472020343390659992'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); + T('225.1', '50649.6'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); + T('11596007050.2163502967919818632722642459840343', '134467379508667301633.785635590876603169506'); + + BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 1}); + T('69437193.18414365787090023169347820662309913940132765325216924168874836547917544180140358', '4821523797292086.456524223677764683'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 3}); + T('5233576575683568887.6', '27390323773543750860832487238432062688.6624185028799484121035355694'); + + BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 1}); + T('46384.4029667643', '2151512838.58318'); + + BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); + T('195576.992166358873062953962788281277982207581311538326506522826301', '38250359864.84'); + + BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 4}); + T('139866932291876214.19345627298588358215061823765973088810201696524681681453253341518481', '19562758748740285291218891169284396.9939195499727764062935729066980524'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 5}); + T('3666563896676760573917601692322.77212311488832397132809756567872530081505667435009858623027596887637272536145349022150950454966', '13443690808413470589583040162367634914502883969219377974038547.0'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 2}); + T('6961365655.56399610188128596984179', '48460611790465945211.698621678317269105061971842437574643735599856953314'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); + T('1846705955.64084', '3410322886599335678.3442689068158599617426109752302'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 3}); + T('20383600747812483.68227625101786038548655392179182361804236021798711869594207098', '415491179446221643995603131550002.1039032281795321692412'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 0}); + T('646712979.5996517630443612769041002926810614019248010215062306018646711436498243', '418237677982659597.441624218'); + + BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 4}); + T('1.19496644978306365000998087438061877340396', '1.42794481610713918'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); + T('23.211007210632864978030233482478479', '538.750855732050851236433'); + + BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 2}); + T('13144319811979.322618006430364389461341957559744602233547', '172773143319592135100403688.71821166'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); + T('187740161098222151.1246717298374850292596863378927231390131419626237794062025199113420744', '35246368089186405941471994235233738.419206808'); + + BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); + T('10178.8922729849318155784011624865183762792234558462424939879226978772185670426454331737205675199', '103609847.9050323516770459242872382420478556123172737547274829818796745411'); + + BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); + T('118915484534858138581.323615778120248', '14140892462160085127547570668448789567436.5212757788'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 3}); + T('1381256041.58235', '1907868252407743284.86488650760'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 0}); + T('332932692.06871668', '110844177448122917.8860635946844763529034613752768046936282087236524'); + + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 5}); + T('4066.8947213589552554383213699', '16539632.674617334307963480316101638407048800069358878699410140'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 4}); + T('22189652304.16065994787886588015884847951186574095167035995581747786105688131', '492380669379542485181.2474040'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 2}); + T('158353311059733655489.651998750507515328606317455210195317', '25075771123580765253407550077977888331941.700640558633406504581615363'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 2}); + T('1143117392445205.276951994811536971745352', '1306717372910725454386211774949.25170879486190843648039398'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 4}); + T('8040.191011551416394620773267580733826', '64644671.5022321884'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); + T('561890.07913644314118462700408674766996898826917350839637746190609856169025443', '315720461031.95833577709317260'); + + BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); + T('4.8039462944541750986312884225369797018444226801916417173216151656', '23.0779'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); + T('9', '80'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 2}); + T('1326108751496903140357139441.556612', '1758564420796675206900880488447739278881655552577114313.23383192739240437'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 5}); + T('14151144510912448.473766149283465377648372312085324275310001302203928077203283587712858416110305268972089', '200254890968727520521220007130381.2005848441498962923460336400353828714'); + + BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); + T('1563587460831009.71743044', '2444805747667964347315337272292.5'); + + BigNumber.config({DECIMAL_PLACES : 72, ROUNDING_MODE : 5}); + T('52.135400641023178004669430567271849421048932266185106328569016760444478187', '2718.1'); + + BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 6}); + T('1351268503014631893144505099260337.724034725277', '1825926567239404241691076828603758142583205695412586217329125535956.66'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 5}); + T('11695015362959112818180.313719', '136773384339849669329939661060606953014336914.9830023'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 0}); + T('7.14759622880307922056248', '51.08813185'); + + BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); + T('77955097085870883368715827.917274179795960111351375993042359', '6076997161667555092341666871976429897795152678135287.8510389381'); + + BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 3}); + T('302769879390478259.67043697315910757236727400949100809491703248976382488199775657', '91669599866124752017570835756271700.413528435509'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 2}); + T('2282.2870108730847351310392476188091352', '5208834.0'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); + T('17078631911484768.4490028733180418062149995467371729', '291679667967985875726407897209547.1387'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 1}); + T('10', '111.670519788005621906773268955014426'); + + BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 6}); + T('30174323609673224480.488459745551217192738545389494419174874058939462629781457993432294265', '910489805301282971552972612705593407831.71268096'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); + T('14.624254852812159605249622627938622344', '213.868830'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 3}); + T('29466625146755603.86185507', '868281997539409712828877902435825'); + + BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); + T('6927129100625732.43372701', '47985117576735868701359921592072.70372575612465393845774834727674'); + + BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); + T('9642346281.31563248643896664520776898744585192834730152101992432409131888949068606645072468415514441421', '92974841808801406424.6547297963'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 2}); + T('3088984.5336327982458333177572065032974592687507455458620037359367363260748579302628662882', '9541825449022.6360771777341161'); + + BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 5}); + T('255.021597053934205856842576268995125858655341587771945346677594354254384952531873852274081014203538', '65036.01496393918362398639291683514922'); + + BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); + T('1.6646941094584521805350551637', '2.7712064780656691696'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 5}); + T('19884686303023658767.08797961545126816028858276270712259956194324382612814640205061878988423416501222805073703', '395400749369656702132720990647874201569.1939430970209654'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 2}); + T('9.6166664915127248990027449407750613964822315991471685061583', '92.480274408983661791945'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 6}); + T('36686.0099950360970023090500579037458831558057639869287390847137799628072928071825825683327205', '1345863329.35588841'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 5}); + T('82540126.57450483338603', '6812872494935279.00063912455569141793822346070304115108'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 4}); + T('5968822849220.00895', '35626846205370865688433017.83222'); + + BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 4}); + T('4816036.61099593028962176834662170900210233124809910321599137332324694451063302849228481281532867578835396', '23194208638453.16557264455596232474012945340603152059440'); + + BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 6}); + T('462306278297631226.13050497526669222098203681114573462', '213727094953406852826524541520000863.7'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 6}); + T('1152247133339717980785389844.0669369155655882911665420542531405497051805584818042141420118135205037703317', '1327673456289597827892437378695792745399331158560266522'); + + BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 2}); + T('8440.29450824835258603622655681205756', '71238571.3859673'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); + T('372.901628755987177132359193081806236478345155487248214227646402521533643140930822086713180088', '139055.62472886808277107884115049680'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 4}); + T('33636.1271745309846040761853747749832841960229355764342958756202876527205256997547', '1131389051.3012217576165671647512263221'); + + BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 5}); + T('730642441472613374.3703419923164107610452588300422615171223528468371378585782084037021', '533838377281061260221750424175452238.799786368085667707972'); + + BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 0}); + T('4.5788382806122340708247474338099311669807185394701277113796016932695447461', '20.96576'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 2}); + T('1864801744998620.013461802873958666465697174610674741137094975087863374090471208443', '3477485548149898222390988884771.11817149815840898839369209152890'); + + BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 1}); + T('563874215863580.2177451764691813196377888522148073482708829811406591604089329763209930727281872382057875471855029327', '317954131315767460486951695672.98301031763037726866477256860609405919575'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 3}); + T('421945583.1988849379362665405151159104233', '178038075181047131.2144288231'); + + BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); + T('107729651834007850.9577', '11605677884276551125438030363905372.108250181197'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); + T('40416496508882.880295518466489909876887230188810128', '1633493190052542050826387695.49412988761528497243381704242064847014101'); + + BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 1}); + T('152.2434280471558132361', '23178.0613835495093166083287924848173635972'); + + BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 3}); + T('2.6360766301456412706748188538578683408291152', '6.9489'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); + T('5585761094110.8119307548005902880792769404176694786028672201071469437384', '31200727000482014779134653.665916381675162519321008239592797688'); + + BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 6}); + T('705554.1228818517008122812577645421096429956370245502968178545245876570204000353369717718', '497806620315.5790897792940015037475985377832001974452467227'); + + BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 3}); + T('12261723754.180635', '150349869423837649402.99929324676906802471173415'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 5}); + T('281477675403235918.2357151530419555292357090950366728', '79229681750409442645557612236437995.9476523401612199126960867'); + + BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); + T('9952285418.2729610572401721588784084577508583224943467082894527238719302981248716', '99047985046768607423.38096514'); + + BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 6}); + T('13999.647', '195990129.039656321401845946648205546325683328673485939369440496168'); + + BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); + T('14047571.047709437493635361374607055104972689228218006265314138529512357717625916281663520003', '197334252340444.4234'); + + BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 5}); + T('2205837.7005821761318559775242478', '4865719961309.6621197151014351797289406864523486396'); + + BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); + T('758.30644993960060605864', '575028.67202'); + + BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); + T('3.05122926047847148656588738870173096139590274766271145582324089671169013', '9.31'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 4}); + T('9987.0540005269950793629951267710033859502301660583410487260054767889497417917580627', '99741247.6094422566309427596792705224314859453123429533'); + + BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 1}); + T('153736.2249720002675176784618619275585698111135968831038733952', '23634826868.6414786551'); + + BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); + T('124306362204054.700418459258259880707339315715942679895841027323391732672342072298858769481551839030444032097998078', '15452071684405638957675416841.87559955466718280375315'); + + BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 4}); + T('8354004408580181649765187.31783156135039411717464270711151376270906610358555385926351601775037854447124260858388496', '69789389658577110583494784782945375526722091196870.2723607941331503389'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 4}); + T('69612192477.44215090986896764071456', '4845857341516453584012.55400593651071611869'); + + BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 1}); + T('26894442745048233575.436901864421884016296340079004943902924557895292772056665868939809658762881', '723311050566677565290951117583555651705.50647920351246054353644335'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 6}); + T('718470177.271028322610907514636281025794525522162254026399567933688109176809379897895939350045484', '516199395627862862.91'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); + T('624214653401002320394878594.342626363311637934460517', '389643933520533457715770790451497422021845205674084966.57462249521'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 5}); + T('14961.11077476503262776978477227891095270825535559491495043352456073683918164489113356909', '223834835.614790354856161392017958644437815'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); + T('7', '43.66395760675375468584137073521451'); + + BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 1}); + T('1345.51506346178747090783855', '1810410.786002577965235589781993065428275582786284340392554'); + + BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); + T('52557016.286119501062009568005557119407270734435843448903725', '2762239960899430.472320476603615601541'); + + BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 6}); + T('304128108642.66638543798285540424121063889329767580106958078233889375947456592753506621', '92493906466565488169925.03727298085107554398631873900964'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 1}); + T('130147293691930.7913013', '16938318055333688341214239428.8400763989063'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 5}); + T('380.30847711766825669015284843032870317433236412578443415674498103', '144634.53776756'); + + BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 3}); + T('72756584205966672305485804984603.352401313503269431826525164286447688973624911557811334526750753359694240719487', '5293520545319919032011373362935198316496639737287994460100006286.544679'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 3}); + T('76576.797797984240571846486238988876843143519708396246972607938595543560509008391915715743283102567', '5864005960.9933640357177527847992571777392026372877736596182'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); + T('12178753964826187888951303.3249458', '148322048135769591351831540771148782675389671073614.2772432575'); + + BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 4}); + T('40.80297039432300938521588341960090555158418429841606635380853913866422389482874612382890570235', '1664.882393'); + + BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 0}); + T('8003.231428514446299367379006843513173610973656001982693440541673067266', '64051713.29836138476649526336604765435988757860210340327039402774'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); + T('105.20351606648271594', '11067.779792750686945021773996405472111'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 3}); + T('19979049.779364305047782515786241164454568396483520587153712', '399162430086316.886209908431086170916983676744304561893703431115837965'); + + BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 0}); + T('36166928277228.730988109424899314', '1308046701010207183212414138.1873209010791907983'); + + BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 6}); + T('686799335895162784002331424287.2818926431403101047781274303105132057580624450031766616563460450210013819541610091966', '471693327786036635340416131163020770161082699744963321356476.24648141'); + + BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 0}); + T('427059.834923060848086980328496831458550638128577698933740189975808665668389059481658485647685358764', '182380102604.5119819638914025693'); + + BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); + T('1355182862282090304776488.03585', '1836520590223078937218481593506430138446303673212.5687201599'); + + BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); + T('13217886.656445116298311129371851749281920448872987595652', '174712527662629.85589582771304'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 6}); + T('86179288451453008625398100282.4917767047410320423825986277768734685720245779702133', '7426869757998741901399152994719251895695045225784410813119.4'); + + BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 2}); + T('145756.030733419668905069100873071310401624486529447576932195647882358629038395814721231824791', '21244820495.161579064939048774678'); + + BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); + T('1.2553560373690457964806915022022', '1.57591878055891310621921366234841349460228'); + + BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); + T('1980389898829432.2712605078486037862306810847539694712458886073478584925281882450847097667064103718895545', '3921944151385648986846968832057.6679856140253370947697275533733897527'); + + BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 6}); + T('2501.6649809177087331569494731239885899', '6258327.67675'); + + BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 6}); + T('2196196.716556668638', '4823280017814.292327'); + + BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 4}); + T('874813882040530524727754.39838037065528', '765299328210823255354810360214120241836069380387.27355428536'); + + BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 2}); + T('7165.9194827881318885066411753304818478310534939735256546', '51350402.0338025276330915356430492'); + + BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); + T('3.4641016', '12'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 1}); + T('2581628832.3443659411183261224916944470874517039666191989033706133244', '6664807427991734308.81835798420895458431799580591091528807175336'); + + BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); + T('36252.485247610266422965983738050016935932785999111018508294599446694', '1314242686.6282'); + + BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); + T('1.113858159731300796830271790717030399', '1.24068'); + + BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 4}); + T('6.350335424211858118059869', '40.32676'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 6}); + T('157154.7', '24697591891.264796990694652886539719395624528788627616727785895955829'); + + BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 1}); + T('2496808231197550137.09602614853116445176036893767527178453680678846727346', '6234051343375838977712099106754338652.9448320'); + + BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); + T('10324.2514732464973649724678228525764035909757738486664404504563868912514925606104179', '106590168.4828324712958760'); + + BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 6}); + T('386531949115297351728.142898431057482793224359928', '149406947686870821169328664677654478117516'); + + BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 1}); + T('4774', '22799696.79785731491262'); + + BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 5}); + T('251.45257784284141788311293466206354643346413863260081033788120457331898535528741326412', '63228.39890381022276846692010483321'); + + BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); + T('1531518860296701459127.524799663297047232327147517392658905', '2345550019444507360974678507452524424491068.1160833888702371276524'); + + BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 3}); + T('29135561.909785745541160117186613533017688130999291885339151706', '848880967798958'); + + BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 2}); + T('1.6531787562148262737395863536342116867328098612496157055434', '2.733'); + + BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 2}); + T('8.5', '71.266173581517898007439610813'); + + BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 1}); + T('1293.62699352182397997386824883628486696727271220130303818496237941488924320676792238233671136280435', '1673470.7983683132214500750687162859347'); + + BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 5}); + T('71022849.96143668902502364469073874242232416113', '5044245216644747.49972893008'); + + BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); + T('1169773.951601496071390789369787040569431646053789571885643406476450096643513202530182542812519318', '1368371097845.37927324536101610772653318635120755'); + + BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 3}); + T('762442649.06995637756037230561717976386559245889049246647051943766363369227', '581318793120812652.6480427310033696'); + + BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 3}); + T('20.02456159330336', '400.983067004'); + + /* + BigNumber.config({ROUNDING_MODE : 4}); + + BigNumber.config({DECIMAL_PLACES : 162}); + T('56956.133334288074055649096270448425887257859236300516446822612657765367909481348792658918577056212964517487314659149646507878360034362047738124408378251380663712880296', '3244001124.393201124203315112854063456225'); + T('8.654478609367522146986967465937732834299195635917473015566911783193688697212875063970818876014535054471159717340710683348537384638848599775961897310476836944774203', '74.9'); + T('2.090157855342270554221573582468214310613536016537697179653818592200887519700347392246743415543531332923171565100303846336657331022146874248351314711045809920119035', '4.368759860249'); + T('4.898979485566356196394568149411782783931894961313340256865385134501920754914630053079718866209280469637189202453228378249717730919675514683251567902474557105657825', '24'); + T('5.744562646538028659850611468218929318220264457982792367699877470565900721457404627027125365596788122419557476945650837869934822615203403401618532019562307772727978', '33'); + T('2761776864220467592773690125.261636709953648799225108854949552005927418667927585431550152627344259326832390700476831904159140150409161169310381661652182261480548883652702710905192306201153399', '7627411447743439090016907911169126086985950772934507394.445820'); + T('1016542.132684851351405985352421550427715149810639767584056678930969543043928600815438993175050555365846506655226675294372370499294878158021265695180065201424027976920607', '1033357907523.46593019166446894535290441918452466583813147208529350643'); + T('67416893557691730594377.689393229996593018164745728497408716814685783382213046224003027235822262763354330687209958508471208061724779548394876757652983131645878622964693470107017790602867', '4545037536969136767952040548173187304914752143.582107466151'); + T('931291993003973764424957570.943051255559335880882830118695138743017644168272132602760327188450198488698421979593757322045111416715065737343620373909805293078217072698779281254073818550714084', '867304776233313518982078261171691244956483307888374339.8'); + T('7949156432.018787509478522996179666181753678431098013792417245447999791336046537264938248517945929921988256639266549619633490785427215813297039897879841661734306307344111428', '63189087980705660327.62527705239541530402411702633104087462882'); + + BigNumber.config({DECIMAL_PLACES : 370}); + T('1809865.4646006170616739546078520411523015790932463877848464678333257743018277689819262142781464857679567195196165283927863805894754890115198595353876516167856225104865664069164914054910658837497837052107088079809127635832553363804364513985303062345471350909037103500826046492068332088151173009073561164990623048692985267110502955089488933796659145847257595817786679297018780916', '3275612999954.007450386437800884'); + T('15.467269449647536285076994289048952792417346402263779331615370527324047804918952006389255250887444861529354673321542742996531338786891880304667201838005095317222412003012101386939275591127834757079082739161518869565123311068788189396146419765711123314785783579057845157770289130253714499563733678728735780353326475011925555877160399757945810318742227262034456726810253364', '239.236424228'); + T('21515312700788.8445283321238112651368817617351069674058374989844530588669193691975020463789803512804134095628531146877959931040403076115365864125573069051677734320206655238129119512589782592335983752466615626386174785231997318261202374171285170556291668296113625567950158566625308039499284336455793814655198232231567816284588561787228106085162970376394887992755493290799749825112551493', '462908680612725763398121582.1988499361251936376406501063453105637'); + T('74521299.538521976899190350443219558946674884841824374949238074926728684231529951608824829578859140723045085427094885285460459390853176343907992141008355659931966765663861028960423841901422569042236880047925960465288786047115089356108425087999854467423897118283417884004208867563212081515310360937085763989389534476061158207010096784634714697440008094764047817723635160212611201', '5553424084910115.80715723353'); + T('1195846909.8136451949628200680969918871468342637166442528552430459926616316029985160802054349155727577926247240133710269402224145037039410361654704934859568454043181682255773043960693809830780634720080576036391829106533152077104572023692346636965236517235893617548662539881565621455421628698536701895553668525060605712336259944095451585719721016583710402332219225707779232668654387', '1430049831710844464.5'); + T('63.363458803814609930869562561468877004673338900304322840644175341400833525250548003632643676779722860896524366210225631392441735539731411621657232048800481726194808203828100942514894307898059274946673100310375760980610689938987663753721124115742622475359805871962619958182552829213760795254063144063662267166941269648405943630007682837690708592188638914255746685886657562', '4014.9279115827111984'); + T('1373.2346174982060050121030325620899957248769145184187327677463246552753848965766950735510496743337066151954054529870656708088991835100431884436734596808270643667093234708089558732282842724926267168039341016233235612898755425310217129820000361621133178074632555226320411936053443770992225078255443638854008065800708779022149941454885905152491670161465306374888415427437669047', '1885773.314695444154208'); + T('99039087799528681.3905138833923030877513778499442375472507806052812263260160068742079767622207118750338964200879423680059646588427359069818605754805574948873861241916211290058134240391945041506590998012465268591014107092271256564136984223735037018803536800185626368799784882325385180065015284472329021977308861285931031378317690220446799508322901392419207606647824465676961912238391025575', '9808740912162750909706883310050182.630527570227310645154'); + T('3.7549966711037175032676936665539744167725993728876755783348100730830605055312952529891445353338440126820518274797006625702148474699248805782797465540022583593955664081518990293569512283879169129175449735381912776937984799578622377264197905942888539479665214673739023726144209253217799902885022479674447157064859576103449224248517314930440882218595889166920009969275046849', '14.1'); + T('206071.9099345662880392539413524097442128237359131885717624301620021107001424182134616945091475733036367971785943678559801220356724867730180036789665163630501875994159091513263234064759811698332280709521477933310954189936526370887672959806770806072945194934626710227301991226774310750612896243496085684922345254659244357871503291966086952146902972859397840015475313905910082084', '42465632064.08'); + + BigNumber.config({DECIMAL_PLACES : 500}); + T('89817010695289.72578371683807498008284714528555535180774576243832060526469276583706655412471844057215592302486816618503186850287965389458117650040638501953754812900903677140548024632204429469967898609400125991154018500677065159619195677725360191990304667964228249993084865619207470251438905759438499669605919588917712329966593460182177256512515083462907857531175748343129201000221666928295926394404306298592439213726996025312323143449177688154398992378748586802380541165612583584316700420134596203072442651698983252', '8067095410237788990654508945.4938889620226978171380538868'); + T('186.91379248627563760392813675540099210378050749661641999000996750119358911115159296630333873386370549699551207601328525759106230341322609045770969551608159859115697029049776748016235872091886303045181663791045868196184184442196533834203793388185938722188507323334759581974443773297252169512928459122350262968374432650606625865642232545046019710829844705222543050921091232570671006274142816262680418047451611346801167563231483515250455068357839726457106935322253398592250219377292043183684947137995080635', '34936.765821602511000'); + T('292.92251535175646173232431728499234372421154418946156867421786152176227096294653007831356181142938132889371346675529071648577515728469391396601893486617422900836680345530254508647264899909100464612083986261265346005164216654675922351728655350260050928208855804233241090095534108831210571537049578731309192576632259878664884788879135261573200114727909644940386409994830780435119468243089463108989041078103645175912033463261798424149302644555980788660713206241347966250504060797821189239505007200036079705', '85803.6'); + T('87.99026650715407396765197446961570650402634143914903620761528887814661859660279310794320854730578987027187472233291266405007186843204281271710739248189201489451091841274017441508638469723085782460443376671758758899784113134866643875281588211922668056326695185017497400934539461041472568010022163207379422457239669042993592416973790381056817762649457565899290348718808685202005765019872456068078605894916581511896996069884199563861272506806598271531781334519497271503568279500098078388331561457291680397', '7742.287'); + + BigNumber.config({DECIMAL_PLACES : 546}); + T('9.964115615547623702713334497987282609345101391172570364849116418075816800113640413848859226514077074748449697076758383273301113543709109909215564170600206464958142454266490605912308358603735813671079804922222224887150495344623713603270259563840115497313009052230649783355536482654846683965583855936794259084015703511152134740957173368048269478700424790749310707209710341986660107034655477210204159808351721182045528640956247532335115997324595227811783575481533603875179445069446441375208735891932273626153407869944580993315321965826502787138270543', '99.2836'); + T('1.307100287867682515567807786801412047161737137612032679611924993481917045781734946943323223902612735068918688582083522849332454081551075797942682446349695592044164001986554222994267637605078971511529704949687080403427315218684552520061137105759437079989266294002711708038550421771209354048361232627247521144464653931131639432007805143883006541670565652328321108764304216848523001514451272005371748881596518362518185934727350138270219612720116871348545672028299730589386444001708243439232746226873799802838450712779197269114313367331740420673483739', '1.7085111625437785'); + T('2179715624641.104045451948581834441551779587152634672576510540355644708264438654277476265980691695066448533110871133836814682961495657626427294887178053496311230025672990968595927778033477830265241856037103266547607039668793835170188641774636594856220333273217160195552886973287073504687530341285661755863078114639819058730667005812528346789548066256665974549595181496892972941783341809790771728591496793467248475138025398858570306396853160195272474728879369794382569618121601470222156680464345972678848920184128051561184284016452602903346229119622194482045757', '4751160204304558385373451.3272332038165539477606810406144617'); + T('39700.822577241580199678797939419163898886687420779218247258787086313113076859180773033077810860147036816212863235098843384590784069398316497506974294775336733386252013568969235999557522683195367974539653911477425701468208578424416631114715708576208486734127431256111817135113173806314284300643116495170122929525074255758154469988956319381763329406201302760736651128326823314686997919541126017908099065125010684846684750979030402294608072194301572266690808347512619218310009474588358252587183377754733236309560561175738877889452782714224060764008968002', '1576155313.3096147862201867397559036886508'); + T('1.25794522328842464889802954979839811250322044212082313174176990936228267186851635174161106107130430165025307524401690618283690880517619898891441753062149884262103288048373107482275796232219249109268011616848844350466917383546494632887628802000805894961164041424123794218062370303230048277719411087505573740519315205969736920463416188404939520455876144966180409180303192875736712339448801403919111160506886246944037198526719945050982972666268955585211897123758272243907184437446082156997384618356833205776554862542099528216674650656658010050062231', '1.58242618479416454763664575065542265574614542'); + T('1.624807680927192072091976713653208069700840817345062565530315118906583360568134538999831520589587375487595902303174139599422604662135717284255618657549630378160122248467747111071314750502291444441102163105431957570130226305138621706071808286505297736384595648509872968772996129393038122816853427310850020078925936656695761188275301963596778663712697756996198695154835116221911512411787284450370861055864406526637410758400234987941681870570312002436208851096849359131928628121324230998619957793873321252762427349655447578019631964607840051797535418', '2.64'); + T('18717636231873067799.216510948844550745146581264323539180043356582323609699016487098997305478787718252655554063999956808135384833559712709262538242436026132212417100611618928564814091772415407036455749502462185745609885577739497207736237382361239184683282552834573776377544551919252603573173778169991084849083487588143333148865799493939248463005741865268503183685175205052842601336209845292039862576097287476259672443140291459083371484939336391166547726508221768343629133487223197760680035244638718987232096565446767519310698558767017657627306105991008804977618723991', '350349906108727416303231044881030663104.72849777316356826833515716205'); + T('1406647840009650.118863996881143742849154676375102411920435563067539895576725213355050743434710662527010561053318071130411761077372296190615719469716323240116449116038768804389193494725211826193028915331814451122261159238787939478074609835120057229806915907338375241900963530017435537812109185293173117802944350037251407192941405132508530625153810048779676085394020972072535926554304846973136440349018882339256154370074386916139960439011412622403829257294020556809081837690809972797912280848596346835691547349767211626827238693605471315108662202888476421988937787', '1978658145803814237711662058049.2544850135714954117875755770241265'); + T('16224378173956061607697862.633217842546427767370100855088171518705366007862250561754707243455931128283904259226113595005700826232879759488413300163002142315099475508032176198042904834129778691907469882290201099517369886984799723525714860875048918708175179481025780980785512861833918274288833606546216800173441803028496920438426672142753847581458627155975653306204761742838982103620921662180680218361989958267237075686446982867517247246816010479297470319222022775438943899994549052934785516690930630661752088290413832045273976791735833819617572894548667319311757989955998909', '263230447131541828089867036367977560519472832588035'); + + BigNumber.config({DECIMAL_PLACES : 632}); + T('3.86684626019706141613723825656699191004871243725435371952851102513193897300170783147869803597806359975114434638267696014418502590333002587206926390370265920607601489345602853935200922900139573459186086120455990493891388555877391847755178584266457035830275159909609535167181434973137025675857847818998237738460415581254272837772822208258242097068355115922762128443987625212248757154527289970249951218201075262114449980122023773692545156022247353209795532545041431858554008616906673871136025390102854614065356679474908404595273532216911231835866021312311702806567650395727590121314352963554602357180371548166632447396668297987703182598', '14.9525'); + T('6136762.26717905744611296480849548677883172137201795887253092440892121660504456966433584211515954953762017772580407928362904974338214424385785116489885777383448138309647350406214299077359122447734595685831178247253060071791025543499094904828078657524955810034216582881357125704944563248190767043385107964306199859119157271835974466792774248278303577397200213978694185732540975537354775071603950395990745619635709671790827074205226736000604510720564275623625311465188763715973066573171788415579221561790250264794581356922531739753608438715435448872139277604185884704559289000914307078242295952209310265904281185435952775847430570132829431484', '37659851123872.6452468949180815564659044706870951617310978456174564869'); + T('55584781983.24490696445791805408404378469879379761888397244664120330644772739351913528775184610233179267381874891789954760338007940124374026003041155925024622975618046085564412007615044940190982877876574993585348546104467074110944013210078722838691327953750473674565370730974387207982723611177965946904757209441712191363169109505165807521321899672463583311642877639945439852157230367246653362314539530980304123767170725630541393623958472950450526635784974484049786565210736734671468997713205366127380246276456634498806056301931312061784211915142498400899530080598267700949248388709352054923014180086178893193927288901542298741856815720408810426', '3089667988124867612740.083389049922345'); + T('1805064995.270685679369819389640432247172036506554563452359428083087328761361845652635553731357289990951745475326934025307848780337675451754210392546185393830016044551272507825821935983758954014040138643670810605163035656676595367710188204749719310806964242566460755804623103957354726598643871684791346043973374359934258681039001336439023622338991932038561462612292035112751670372206620090017313856898980333410467539643215942489844251168601645977120694640664003642300053879055949999123327998888486028967684255707894113041249429918747443321228571191289316571869868803697397454910198466063233810801875443876639885268362424418465737511676419844', '3258259637151560514.0297800164403204384'); + T('125608085.77042703662921929440576851258415350669039591021196510765322333997277721479170585932128266456989640874478239906029432251376275054410584089545239517498359890440064005754383089916535639818817512288635165379914355624246231855413853842721091980292116104830063838444932363335270696391961823972078627647993680508983028621966220040659701503608235895398573773969030627362781943814154637432716276122770088096908725956005011070226435272443863093204149560949439672185351571599604932488380558361146700216684520038630554153765869107472500236645669202075005111635063065232469777930428976428832531849390576765836025904341256201817451204276318678703', '15777391210910955'); + T('400136410988877553453582.37101163421699743482259029089762021744122736955079765363264351177743971980656087133988131526954003823716158204437583618123747540964307177407397030906491059469918005937208664667811006296696880134895202857597704648341649853175892159884095827375237964722988879265135211319838716432321482642548617255100570921567626849693162463365611013775481030077269042675179237005903008278699962449590513074693187300493182718210865710393790428022783178966907764188174129568850369221656184631847400442208130426552208194145273689796897187359838715920990228135785300048009159741600170382195085666098719445640520314294446983533576482734809632684663212616', '160109147399059929314877918876109427110612023604.056303'); + T('64425.39708677991402075085097430222723408726402575346205033002867968020486619151730572708995063516358815252500577128885851092173171595206567522039205583159322846821419081246805971111195118357652973497110646963488156724407496612917479150812759668015947988612070186616711130012713409715318722886985358698149495882008505150340412263757850467789892597196854389378140820673566768146692006440247742979249196409269612046734062701334694240456008673406876828634709710253057778438021730083759189755501262144599075931168939668888175040990882526418711846468669816130425272415774060047616063598593294412963338255219828974342389552617191145782209745534', '4150631789.7892698323562331016634257014646926299287710080'); + T('2348735572822814115892.26408027183370740113506236192664551809826630380561100793615743475343501311869598689198309313317112398706024097995873626836363321037439405890327574217792370459096267386514893897401545965801783674703449797383205640533682179139228566108876766321414465683099263110272385159768745386268309348310852289538873334789073960542826136816561584906159230939562245879068384254598940764221550586208646296806811463864282431442235899226384157724906001227498116520670108267462634019231455786976410894467414188400388964899956986375533986475289820788610178735962555060048758466647342357027384051113897165096975205112706486602166905905775844738974189124', '5516558791043312750956805399216206701389822'); + T('19103802792.01564371961775338869391426446448029286247977641509368293241906066424287682005366039677603554915595198800053308245870218297432073530945933295939680395210865727953275117534560571377076828346246298768896265547871244418699953520469341265486692862736845896173671301154158095469340988225077329614333663129688855004957099781613220058661676296497307424000643112303165084920380937145312220630345213927929149505102622408340154771991875263250438238123325276964888634956357905768104652580983969312174465484750475804611861727043684792253730740484442336788006549604123329617407383758260482554791627340811587637419676122565011048819721900614226661', '364955281116224704333.02204944536'); + T('786.66034601980542438553763403049983609539851928329220147388661995860830168191247746764643770838112443216591486730544324590358255064211791028661132434467570268525552578636466675861637897309153324177405101531421741979722830892607461959298447068614984201744211147154166256831083543381185024040849431152799003153201087012609166537695511250190586392519199228602942589459773862505985356810151934653735972412239324596989225867188473011661629585794534658478043644553227272995034111771271753677915199703704761728445313825636390237745870611713634838750078939991244597310336345791337461711284642126303822583081171392986526905442664045593489255837', '618834.5'); + T('484123309.97874763869513775027582083760255026422629367680383349228461771885785050876393607959363763562763934512375018110967693444089318521616498831171036375527664923123605952647435477649669320835658085436446422080237311136711591389890017124515694523108269386574671466685756523731039177122366440515798582799809939132135784826352950211725429348489639356434994276274903713471535999323126607571342955569317639976321722080574385327905662904910228854922313780512285515691527026937933195761382827883549497100022950886879913145746098441721130133524826420689100661999466875481778061645781459258894902002955465824742017940875767981672057269065469536219', '234375379264778573'); + T('60481.17814179171662585426325768194943112296504919133512658120011357361699298422464207199076657876167621169341810823582081006427726259877303866169887391022736822586491147183342565113223464521871784706899966618623012338886757864618596318826063555227727089240080604262744311440712982849273211826938920661172972338303097711545177717262755702859402796454231559971416344991871436949784360654196445387214315983072589147867091579864546816048090705979976439302638898419268726958146631934559321370862789950979122360237770183583617309004258400281803258965980586023033093791875491145215922928234063783157425179949277559990637828701834500469899317547', '3657972909.4191441244525931'); + + BigNumber.config({DECIMAL_PLACES : 736}); + T('2597183854328.5679091905600850947966546165753359857320959797758353429783579407079182939565903056335948426093650795717332704791479071528177519723191124947077728435798063428371161778782597345429371741476675515164182960273091825852969638261871905188816333787724804370693852910065686936635346834748197083291357776431587087848800111892221988002406355426392615087567342248786343354283235703582188835390882988811316410094207611114574124785705884308466258369161492987882300555227716609880303616554951040594534188187971605746361153720086319724295669667359878510806390096282081082192285001657224319276565070534065340503324866753603713794833032825245475870135528342060466443304262980556284100001276572690814262354674742134248012676070023441506227778586365371105', '6745363973184995853492478.5954'); + T('6774655005740.164037907899356400277125449228462111588353929941351964991999943642694024106002045654190469894640190593584143456920968883709637122260941740850619226234998910249288941064461839175935885418202698405604592790954509193961851585542921730413008144762195532966076043993178536807834225605865732009222042249139153172302609878922537826024024765317187183190793601555449704914268951048131236504332674153119659391120390475083522595748414072828021281006933882134638700653092554277006524993846324403138880161051477517078245698926520722382184525492883300322699107657083780701388937788565713142369080803278939033122119335669992754410484005485791854368115176247813286850021744435931737469007811125083823541974831435625884357393099194117719985023995309226', '45895950446800262033415363.0107589586980934'); + T('9.8994949366116653416118210694678865499877031276386365122367581659351273492347492719527127402934910091450969236163860791744738523909551604885088504796995508198925586614925391492905996535080694744240002907669198012417919217421780341030996219304862243902668663046133901610002501558783382253959667598559278107737758243226618074843443068084667653832202520143197321088490265423627229990794806222238594919301227082997948930337052138081945322151797347614794505584303510640492417811766809910911093299829106606470195648540287464840079528339429999802421027773045400050984119089599487743576041585398129111011611345309324458600582014599091265650208792257610596486142602179717725277099578410704164010928022305362395364280948034487315508458169196178987', '98'); + T('87181.6234142115525219620524691647002880373681637662664358089648865241053931751056720336743475573704667754469828869574971770860976622090504059965985957160672759992061409022462794221981547073047121333832741614179766660169320255090772060280986675121181149188392777041782943372931223028492877312925787086980314820336807572760207027632594701362292053256504201751684547275915772868234710319808033440202969911746099931970130960400927941767359496945988333067403190717036520674748830967881080827391448011943102976676893692584203783154822448864894042034636583043861494867962494678297073555456340277748807852218397069734889863567431741539523977203341337841540435143868785323742066976229168363835362478774511412078654288725506862167769261569623256490877', '7600635461.13740'); + T('4.5825756949558400065880471937280084889844565767679719026072421239068684255477708866043615594934450326776009053975857408733118991707556019635738633623447553702817228244277981919405969049143449200907589407063891768364965598654748231477641506627774586518102302361748154008139424109257393659219939175422411846714980804218526078649141055769578125547677613025186352569361961122418978100629104930136394500794769783448686170875778719949754100133598746930349723271067563482654740784196320965532158989549437375426406190866502980945808909769566178106179115952200007681424851342306651436695554446605650313382719148849087683899267628798139136482473790088818917079648337517673741700029719068290493626817167652340083439423393091048762655243512703702846', '21'); + + BigNumber.config({DECIMAL_PLACES : 848}); + T('379533758647.33202998025355894771830486671460954826351562848093352359089756978384860789725657951059073867429383079637341943322428876224868137020890589117272041215996572802315226952651591422629979697849613357409838019360130112971147443970457701882865210579938015503729060796093840510498092974918957475137648847670773105840478476180774814337983644367224768670934474545884964455308420763849854108455051079039927823221492636701262715567129335694288707429643301669699497029554944442286919275175462196928260780423046910979090241979424076642169272255969335731465485030674055509703481930565243394712596916609989415808863418419835631677700360441697210083653827363223966242987581200002526377610727629936341627933125420316464144353438091881740224503276222975587368345923672238451009927592206329287360888148821167396976641547561007365328906795045416630208044281045956444564', '144045873952971280443387.35507896'); + T('29280910699687273104284697299144.07732565567508749484602637961092769263535159046426239841768965764616197975075043919815786449076328689684216110222824295072121081997345891375218925808047569533170997772123590787790622766592641361527147653442819434809931915905219637858026995741191495013690327145578287454531481294854702286205399948005290251392013711014077536227775356988930049595580907927661449806384364243569981109141658673685934994029666133875734164693622860720260710554408636555912010467046231604717399110220057952965339477795911201244340638839241074392352601833736408661548059322837128092912263901889749977388312010067566997456646543486536129645809758335017030111183330787782491931288652088515560703734327816427347518899939257817316435042124357010083771290898500690085513377138936923205163016022860153854624965235876950834393909963448127891696108571214858469890656907205330389064', '857371731403060633386241816096841559023596513404769917799492267'); + T('168053.04565201524955446843348960783836388810418113245166824850488690908142778357772728901345436007400982876927959300542146773837124920813399432364711787980877197182718826668919533357860217297872518296792465703667850144785269168793146280553383246166503410178151205910689122332208239404835749221852981903152552178180222439382939101404418973062745842861363866266832597644550779142636812629347441140406958185996959809516768124071903548716934343215775054973484772291998064110162394410530239517557259046875734667137531966463173455499642893757346141380481602264381153514663075350700048417551424923591583912256618460494552096382446465611749335306415219871948883932584670263698301372130930285595038191486637767642010763257747895310053515488933059515998388551181750336022799922855572438292341639496128201699781316142673719517556328928078948111316144339893593051947', '28241826152.9183215732505128601928949420068589166172608979274924914576295'); + T('1.53638009381417855214702667564342109510652564612190733749841594063585238492794950136881162227066019813049456848975091045178675462617786165883956111632075830748654795458628807912771681561582305470619962729037215106906417797478639043759073671526233150625502278985764285240647638298730753064584097255132097117503260610789389208952460787617822842317892961282136931991642143510463540230197185978192801359575147064297679386685692745377174344652745131673928629270650815492384956061132688378461069498104923826104838586490333978324236045359018410309925372259501184209171535596493166826553453125808213238306178803667493845876133602921479334100929846229655991832177474753899009595435568508601133899514000384344943496815277376139253215613276576713699227714772914534633123209445267405754874955789973243763421775941905041695031197207082735610030092448816414167544', '2.36046379266846408899539510197326890965893678862224859555792838223'); + T('714.61241243068259484311371189785768955751306153276228425541721886979377905758882133446197375671353721565433127023956674702853562936178184807139172505791453268944641741010891530662590385073593152193455805953240947347607646479943534513966413454182559305296106776895316113963327870900366698599660151420070929801570405751345702353410644051682554211976059908915814146604831899204551744694140994594366464823764389570912629592676719346123171637726003544266618213687267325838123794874975527306940385282149798065123421458819840361280851912003779857428730583255104381030891533142101378117306978641247346815845252044894839537420273047299982385917944987149055257937383992606691257056568881397021059046488147159677518654506427704867625959014109859319284280932956098825423372240493017931941597922444987378795761902915931399027545696337420679858404395579037783661674', '510670.9'); + T('773.59472663687912451159535229389853939842605059162703128538789346863286440830494881075568422219621192333688675281822184873387170452981843472591508432370385971110199119193528015500760543414524536242455544083490104908083974792351201506935765119161643924169037264164099952814746396926161440416117565279304931119669840952024989118295794278477494347926021963207180850887861862534960178708980838985387368839444500154547698864030192542133112686175071539548217199903944950274902992241082394258689568848798217431438259861325777938469444568799288405922158163958958223163833937391698968594686798212843588496878387116515526389464647971296312524748306815742536620947543414457504426763294470951946122437335497099494910632585762600740409680286609238779306759977660554002182801075912581235512217070538480899809469699327979364989178344899103109616009308707414801940872', '598448.80108038774004895'); + T('19008878036934380567.84396002161007307494234445138537376816800048343616085674206626936199749636474720092004342883045275441459628576839920971330702661877884977464784187807450210290565316696580997145384562781682128000995898273298139743308228182662902555052057691717197189289590092259236658987055552383019917577612145454574579719020972478133587710937217336044281243302964649388576337469548420171603649754413233412982255987047582379037245718253216484000312226525699478281161585924999301376693452172203272239337852180725955560197800243914977419579018956725334811006235730357909615062778332245395221460477491786215707869006840640344479485584853728869293288919876710562517254695116835080137005037450411798398558498522188066156712112948975309706291905861236209197663377395628993573005290776392002172440861220587153770661110412322002802191380189193046537735515344097800652278112', '361337444223046269803581586105656008038'); + T('46167547682276.69659839142168613300984418968797481977026434015151042113254784992976400662854539508545353029755222531760805168040819029032876000018647210639969596871042153723516022413007597033768299999552605409537870966847134283383166186477065225427587170669800959221329223140225378864660505062217758873720294200147677451805234547441880387069084927910307749688653503693156999242010683739605876996616940672435261250941033196533134836202233289888667726447834984240822254637787801181963951894038647953211128853346780059900073416876543354577813540692889219448228728777909901391731624805683971528990295277436840161294579496431876765112237134229826779443182941938910283177882124027553167373791516105803517046194645899736931109009785536544701916275081569242392295709503599284148920065992874897610987646342569478342044371048498987276792566426432612227674148724386753297859', '2131442458995292379923442891.39619052405363168659553832'); + T('357.42144219667737476940723134311437237901070981997683604955545480813878989092658709890042422907764330003065939163827123844540310894482334918652641803484529491350116195509236941247526441637135860986047310858645732381561361417002489911900180310969665452837050841076667945444753611474726298122460938050651055487683172415032060683745296386129046642462594028333292429079902699978203730134661132884803238529838974477445191759967198471721764551979289888303016458787572583353512731118148130889821591351857798041593003937898405797601412782467072190053744174243225780844049835772183482949546683341934096818885756007124382254659796426711715080646604861045965994466209388552589568508290975087418855481674502829846363820364296679009102756062772768505880054488205022390142319706776092235958701849286052672927602214663014895377779429627657631859807708535799000791569', '127750.0873419527858363938899699529356795979'); + + BigNumber.config({DECIMAL_PLACES : 900}); + T('7962389669.802619226612420082472137241175608666661735561414607900997891208674399029037690473846801874885757356935098345580426591903055562834097030473393461243383271678522047266370481726950449902079177413029320835311617540338949723112537110203362427858192330773112242226738687601815379027664862463277214286567895961535965292898558369885348154321255856088316638660454457806259636801735717647353100345104124424309537274722443977557763052770155305495894443403910135805323387075986979884756306279940582254155475425470071419924272589017637263436788853746084045571609754415271337660969860121360062716460814804823355709978626612344057738355406928320053347312100043083244150469170748731787389950929048830984414804237666515908525165972258804621273737876286813438283880399279278335982619019392983109710369604460059859022468994373480045434248040713896862456845920018164581498873236394584793215632879036361684025776086529569', '63399649253779463637.88320468645646644051'); + T('36985.537435306622236467270937252825254026014721851309188254305389713697015230264185263378799026382334714397309571564625416241215217867149723572425854181806966554642360423829060014881901773199386994460664634062101904797359294551321318937235734678512961188607801986220680153014134029493832615546969623974916827167078654634358574333678389616366410278915565703581941672170730893983545040190300249274221426700113848290541507663318853535927775893362185694382544176373482231304831101837902849800951258220726268990677590958157914974175471404517996778205179950329995483136931650616286373118261630043285103533033040476431824360766396365422877272153761572905701234187642833656097211644081252236980059582418494584853215946576617549259994456993750322107749520964217795499374138097379418654677424839627787482713659455961703181646841698674573783883478313655188817893687086751450042662911182317161526490882315503431203481', '1367929979.37846755563562136'); + T('138.653825283302247079520109639909554830495824478735118824960659298570304260365235201452949658158554711469364399658798667165750129626981635907513515727752104322402093210187651015212649867280391248459370998127185412494794237194604573645718383791562171900088214128456904501530127980235949384533924069927959103110766006405141214543337550010111094563431666164054892460728841085337947430066655077091396441886965426495467949136348081716343859215231704926659844712690080814553677280196114278268613368774166884194655930307728924841441917187821902525242579401284440544702546289065296084983476636972703960454064127793719473325530264873714830294999070781526696237151909302447919905808564848939241449791664413964130684658760296224947984073972311661335447223880763498816716066907256956648196113869920459515551692886783038790708833001987620466496959254546687493058038109403699935644806603442158642646086655023039259769', '19224.883265692505457601247932291125354259868778652089681716374870935'); + T('50950.440174742357175572071690890164127102751485515727366550390683608820436132956072025681803295779371667169337127406084175358445300796083953408843705969018873810510032889756321223393470759559987454753284749000495070038043049225296587093286942372337838245436787768377078265062338033176995223379224008076742040545070485158584805287828654557110412928438688654162185555625503306254982210625622689237909265654674405693567429263013187828668914075564173639899430670900405284455694427199638591118702956228653269921902023423130819746958603054104765246190233159809281895358531923339811813637075650854380095230369039753422001934387105096606677337450258221260413504059391491686285381140987958601361542484696758005412715512502019501470056625769917175363496998761143393423591945956802212685363531078784887861348308753434147834816578247850672086197881232957501680862454026927989538997998521459117388396046360043657658205', '2595947354.0'); + T('10046454623254826961875382317790.784871452244144975743064060498244021304220015969466939024480223499960901641559066665153037197032593546502649980935727654208439388853861419936425552530271530035494928115227726482675679211892969869213891378152728772302193716001319517533416123919336946085430093922543201768660204280287527989092149328624358683559115176981914090302709863561780525393374380243154381915249441910602391360612168161991933174297686912644986231916957310635449019093633359598148150548731899729849141307548127201093974033939034042561257126753456557941211256135898280856479300825592342274773764495952079469431439741906942077077162075390603294007186657196505030105092603376243537890291750177091215762681318887536194545745370727643575228977262734270257261824137515623111996150864948935760969962110266201746190014377183448005770929873280926905656965694617633851807904103533078781099132125392433972079961527137877338300842675298415396', '100931250497118287147460895653422009190477535915527140997436145.5'); + T('50312147.895978789945318850814716769716556529351439472968676011531432412685095617354326688006158268280144448102851948493093105193248333706042845584818818717006618051899381392239777663697210274767993016068817609233147463673391458914578371028438213381481915193432915606333241411830951892952556850603476911011964242221281045401447599028993820263011805445545067496904941492500519891679173682065830498079066798970609902316454882840175774548136572667012712115571877757306654257623667462477526405934096044262931622005593806759836229355795092155596007885177190326989920383365286112949649812553854003818096593686636208662967380298108969324741181800273045253898252610330097550632621999520072653397155741940824966908033268285600350252107768305144976490584881544838157210518233799995832553321591285254897707500335337126009624774906497706411815347441932376790317896998001657977732263675649024815291900604673316858390505885', '2531312225906842.98'); + T('5.75006173879898440869241532260800496489142124887111833188883261579283008763735295296179041343250976501937101036585472900854336327489380123282821037481044202916203441849004689471000360958945402609580784572353735408452226943576599178952237206876788896067842553596176879865752033951176088455975165207593727159176177085095190710656229140725205998687018442446680477310130738465615556577329602100580746699396762667032579047007129320587668015965987773825003138735379716404415157863124832466280028377682906939092007140554677511356063954505216670858009340392141492467369216371170692156583092566735501630865322582512619490429963282482788624823392158158604152325793299574006823928013422664018092614581197981204160781788183807939164255353777192327520682879326632498396112963534952155920134048996062606067862129834413685924986614062985203382638465654985330058303916447123647081510424589324268892533850475930056739', '33.06321'); + T('2.028430427695266062116855907049682671555242569377976031112753398044812309192685964100965099265530959360284365757870326033053601551523629075378378856745863785169732838994844919825336134776071475304944281214520910583421287945003559393430216592924156944793703503429916620090936360805054797721801359569417127688057382996969292921041738603630480342967692998233877581650620914181744888433057925936957891749666196052068806893889255339075884495080504767342571830767185504079538214007613797919720564247610464573496500053065413926974012933910366107634249863611197215314558918759158057008769626766485169836568960326396402057910902853473776179915408801623228568357317462913587164892064775658027833999904990053550155044417555290139236050616243301785245316354941879867361509091783046268854502291693337916935351747382119202947309008531765489919678841207661025090634628632028473270852667224552478918030875120109633343', '4.11453'); + T('14733978519855.986227038024852091926922255130476070894431360177088165996112823755229640976682373714559133174204321582457357379198592714332912375824678967479352499320917276441508273646332050526613540155298794906758075083423887078200491328803728379571737163423282193094119893971969158039986280336661223358044916730250644983211811708805361569086764053956417999765164201297583468149451593886541587337271459070510498401319438130775438554793347084598691604611470750783139289554584374151809770130348507437456446993653835198138094762369827003035065371494357530678660768629856933317557149699487339377901600994041273525198654016009799518759093883882149332746270829795417341182432885267251862546055608965944281933745525115737980560603226764663919494161818265452113376337284183674111018389097369572010360312518568654815367830169145059770161568817087559064704425726854477168276312695713542835478594810618373570380952296080331906', '217090123023577598725208942.7547'); + */ + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js new file mode 100644 index 0000000..45819bf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js @@ -0,0 +1,2218 @@ +var count = (function times(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0, + n = 'null', + N = 'NaN', + I = 'Infinity'; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(multiplicand, multiplier, expected) { + assert(String(expected), String(new BigNumber(multiplicand).times(multiplier))); + assert(String(expected), String(new BigNumber(multiplicand).times(new BigNumber(multiplier)))); + } + + function isMinusZero(n) { + return n.toString() === '0' && n.s == -1; + } + + log('\n Testing times...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + EXPONENTIAL_AT : [-7, 21], + RANGE : 1E9, + ERRORS : false + }); + + assert(false, isMinusZero(new BigNumber(1).times(0))); + assert(true, isMinusZero(new BigNumber(1).times(-0))); + assert(true, isMinusZero(new BigNumber(-1).times(0))); + assert(false, isMinusZero(new BigNumber(-1).times(-0))); + T(1, N, N); + T(-1, N, N); + T(1, I, I); + T(1, -I, -I); + T(-1, I, -I); + T(-1, -I, I); + assert(false, isMinusZero(new BigNumber(0).times(1))); + assert(true, isMinusZero(new BigNumber(0).times(-1))); + assert(true, isMinusZero(new BigNumber(-0).times(1))); + assert(false, isMinusZero(new BigNumber(-0).times(-1))); + assert(false, isMinusZero(new BigNumber(0).times(0))); + assert(true, isMinusZero(new BigNumber(0).times(-0))); + assert(true, isMinusZero(new BigNumber(-0).times(0))); + assert(false, isMinusZero(new BigNumber(-0).times(-0))); + T(0, N, N); + T(-0, N, N); + T(0, I, N); + T(0, -I, N); + T(-0, I, N); + T(-0, -I, N); + T(N, 1, N); + T(N, -1, N); + T(N, 0, N); + T(N, -0, N); + T(N, N, N); + T(N, I, N); + T(N, -I, N); + T(I, 1, I); + T(I, -1, -I); + T(-I, 1, -I); + T(-I, -1, I); + T(I, 0, N); + T(I, -0, N); + T(-I, 0, N); + T(-I, -0, N); + T(I, N, N); + T(-I, N, N); + T(I, I, I); + T(I, -I, -I); + T(-I, I, -I); + T(-I, -I, I); + + T(1, '1','1'); + T(1, '-45', '-45'); + T(1, '22', '22'); + T(1, 0144, '100'); + T(1, '0144', '144'); + T(1, '6.1915', '6.1915'); + T(1, '-1.02', '-1.02'); + T(1, '0.09', '0.09'); + T(1, '-0.0001', '-0.0001'); + T(1, '8e5', '800000'); + T(1, '9E12', '9000000000000'); + T(1, '1e-14', '1e-14'); + T(1, '3.345E-9', '3.345e-9'); + T(1, '-345.43e+4', '-3454300'); + T(1, '-94.12E+0', '-94.12'); + T(1, '', N); + T(1, ' ', N); + T(1, '\t\t', N); + T(1, 'ertgrt546', N); + T(1, 'qweqwdewee', N); + T(1, true, N); + T(1, false, N); + T(1, 'e 4.3', N); + T(1, '4 .3', N); + T(1, '4.0 01e', N); + T(1, ' 4.001', '4.001'); + T(1, '4.001 ', '4.001'); + T(1, ' 4.001 ', '4.001'); + T(1, ' 4.001', '4.001'); + T(1, ' 4.0 01', N); + T(1, '4. 001', N); + T(1, '4. 001 ', N); + T(1, ' 4.001e ', N); + T(1, ' 4 .001 e ', N); + T(1, undefined, N); + T(1, null, N); + T(1, Number.POSITIVE_INFINITY, I); + T(1, Number.NEGATIVE_INFINITY, -I); + T(1, new Date(2012, 11, 4), N); + T(1, new Object(), N); + T(1, function () {}, N); + T('0', 0, '0'); + T(0, '+0', '0'); + T('0', '0', '0'); + T(3, -0, '0'); + T(9.654, 0, '0'); + T(0, '0.001', '0'); + T(0, '111.1111111110000', '0'); + T(N, '0', N); + T(-1, 1, '-1'); + T(-0.01, 0.01, '-0.0001'); + T(54, -54, '-2916'); + T(9.99, '-9.99', '-99.8001'); + T('0.0000023432495704937', '-0.0000023432495704937', '-5.49081854961890952566173969e-12'); + T(NaN, NaN, N); + T(NaN, N, N); + T(N, NaN, N); + T(N, 4, N); + T(N, '4534534.45435435', N); + T(N, 99999.999, N); + T(Infinity, '354.345341', I); + T(3, -I, -I); + T(-Infinity, -I, I); + T(-I, -Infinity, I); + T(I, '-999e999', -I); + T(1.21123e43, -I, -I); + T('-999.0', I, -I); + T('657.342e-45', -I, -I); + T(I, 123, I); + T(-0, I, N); + T(100, 100, '10000'); + T(-999.99, '0.01', '-9.9999'); + T('10 ', 4, '40'); + T('03.333', -4, '-13.332'); + T(-1, -0.1, '0.1'); + T(43534.5435, '0.054645', '2378.9451295575'); + T('99999', '1', '99999'); + T('3e', 8, N); + T('-3..0', 13, N); + T('0 0', -0.4, N); + T(' +3e0', 4, '12'); + T(9.9806, '+ 1', N); + T(' +2 0', '1e1', N); + T('e3', 4, N); + T(' ', 0, N); + T(323, null, N); + T(undefined, undefined, N); + T('undefined', undefined, N); + T(null, null, N); + + T('-19.851', '69.11', '-1371.90261'); + T('-0.0251', '-1.09821', '0.027565071'); + T('-2.11', '-21', '44.31'); + T('-1', '7161', '-7161'); + T('-4.61', '1', '-4.61'); + T('11', '-0.0000271', '-0.0002981'); + T('-1', '0.0000224801', '-0.0000224801'); + T('-3.6', '-3336', '12009.6'); + T('0.000000219', '-110.42', '-0.00002418198'); + T('312', '22.87694', '7137.60528'); + T('0.29976', '-5', '-1.4988'); + T('0.00000000000000000010018', '-74.6', '-7.473428e-18'); + T('138.583905', '9.73380', '1348.948014489'); + T('5360260.6', '-12.12', '-64966358.472'); + T('-7.01', '-0.0000000988077', '6.92641977e-7'); + T('0.0000202', '-56583117802', '-1142978.9796004'); + T('116727.96', '0.0000000000000019308', '2.25378345168e-10'); + T('-136636.46', '6.5636554051', '-896834.639212729946'); + T('12.1712598149', '53.270389', '648.3677449597909961'); + T('76', '76019.61784', '5777490.95584'); + T('0.0000714939', '1425786', '101.9350017054'); + T('-3221.71685', '-230', '740994.8755'); + T('0.00000000237457904', '-892315', '-0.0021188724960776'); + T('6511.4', '0.0000000000000186', '1.2111204e-10'); + T('0.000000011188562', '0', '0'); + T('-25379.8', '3', '-76139.4'); + T('41.9279', '23.4198661', '981.94580385419'); + T('0.0000010', '58236.222', '0.058236222'); + T('0', '-16.39257632', '0'); + T('0.000000004846959', '1', '4.846959e-9'); + T('0', '-30878.5', '0'); + T('-8065.5', '-0.00000000058314173', '0.000004703329623315'); + T('-443850607', '-1', '443850607'); + T('-0.070884', '0.0000000000000000002106611401', '-1.49325042548484e-20'); + T('15510739.6998', '4.13', '64059354.960174'); + T('-1182.8', '0.00000000000006116702878', '-7.2348361640984e-11'); + T('0.000000000000000024429766', '1.492', '3.6449210872e-17'); + T('-521641.171', '0.000000044916564267', '-0.023430329181534636657'); + T('-1.4', '-50.3861389', '70.54059446'); + T('-906235823', '169450901242', '-153562476945135592166'); + T('818.5', '-0.0000000000000002572', '-2.105182e-13'); + T('0', '2', '0'); + T('0.00000000000000000723208622905', '7281.27407', '5.26588019315858457335e-14'); + T('-8.30486506', '-1110043.7', '9218763.139203122'); + T('1.8', '0', '0'); + T('-0.000000000000339156493611', '-0.000000000000000000167265', '5.6729010903843915e-32'); + T('0.00000000000000283', '4.074', '1.152942e-14'); + T('39.85', '33086328', '1318490170.8'); + T('4.1183805089', '-5.126069', '-21.1111026568765141'); + T('-464.2025675', '0.00000000000000000106831881858', '-4.9591633849340270415e-16'); + T('0', '-0.0000000000073', '0'); + T('-0.0000002358363833', '-37968.0', '0.0089542358011344'); + T('3.4', '-32545254.52', '-110653865.368'); + T('0.000000247', '12.88', '0.00000318136'); + T('-446908', '0.000000490399599', '-0.219163503989892'); + T('-0.0000000015', '91', '-1.365e-7'); + T('794881.3', '45.2898548', '36000058.66023524'); + T('5', '3046563.8', '15232819'); + T('-95094833817', '3.101', '-294889079666.517'); + T('-12786.5', '-0.0000000684878615', '0.00087572004106975'); + T('66754192.630', '7', '467279348.41'); + T('414951476.81', '-12.875', '-5342500263.92875'); + T('-2.486307', '0.00000000000131610556936', '-3.27224248983875352e-12'); + T('-0.000000000000000477405019421', '-1.1', '5.251455213631e-16'); + T('-367046.223', '-0.0000129', '4.7348962767'); + T('0', '0.000000000000093338247', '0'); + T('0.3341376', '-8', '-2.6731008'); + T('422580779', '-10829.0', '-4576127255791'); + T('-11.6639', '-56.51836497', '659.224557173583'); + T('-1', '-36577.4', '36577.4'); + T('61.5', '-68269.0', '-4198543.5'); + T('-18.10728', '0', '0'); + T('531751766', '41.50116', '22068315121.04856'); + T('-7.63315110', '3', '-22.8994533'); + T('1249.58475875', '38582.13', '48211641.6081111375'); + T('-2', '0.000000000000001022', '-2.044e-15'); + T('10.750', '0.000000000014145865', '1.5206804875e-10'); + T('14', '0.044276206', '0.619866884'); + T('12175855.915', '52.1893', '635449397.1047095'); + T('-1', '-0.00000000000029721', '2.9721e-13'); + T('311354.171224', '194857.1428', '60669584203.5706187872'); + T('0.0000008188', '6375.414052', '0.0052201890257776'); + T('0.00000055577528074', '3', '0.00000166732584222'); + T('526170.543', '6065.11546', '3191285094.94589478'); + T('0', '-27078031462', '0'); + T('0.0003450371', '4044.753', '1.3955898453363'); + T('0', '-5.681398758', '0'); + T('-2830933', '-1', '2830933'); + T('2.8', '14.36338836', '40.217487408'); + T('725.6556', '-0.000058977271', '-0.0427971869738676'); + T('0', '0', '0'); + T('591.1', '-182368.115408', '-107797793.0176688'); + T('1', '-8.44', '-8.44'); + T('-48988695', '3.99', '-195464893.05'); + T('-54145231.29', '-164.1', '8885232454.689'); + T('1.9615', '370.5', '726.73575'); + T('-2317170.34468', '-0.0000117290196265', '27.17813645069548986202'); + T('-3865301765', '9.90928729', '-38302385651.92906685'); + T('8.9648', '-3', '-26.8944'); + T('-10645.1', '-4208', '44794580.8'); + T('-390304.9', '-9.540', '3723508.746'); + T('0.00000000043946', '-0.0000000000135', '-5.93271e-21'); + T('11.167962', '907.089236', '10130.338118257032'); + T('328719912.6', '1.13', '371453501.238'); + T('8.0902', '3', '24.2706'); + T('-0.0000000000000000000103885880', '54949757', '-5.70850386173116e-13'); + T('-60096046', '147.9066', '-8888601837.3036'); + T('-1.1', '-4', '4.4'); + T('-2.3781033', '1.488', '-3.5386177104'); + T('18.64', '-13492494', '-251500088.16'); + T('0.0000000000000000078080114', '1362291', '1.06367836581174e-11'); + T('0.0000006699', '-0.0000000000000059', '-3.95241e-21'); + T('-279.40', '-4199.537182', '1173350.6886508'); + T('-346081282.623', '5715.5169', '-1978033419605.4328287'); + T('26098.51437', '-0.00004277160560', '-1.116275363379572472'); + T('-0.000000000038243914682', '6258350.6', '-0.0002393438263964435092'); + T('-0.23215784', '1.7', '-0.394668328'); + T('270.08569', '73.4', '19824.289646'); + T('0.000000000000000253826', '-1', '-2.53826e-16'); + T('1773.911', '167', '296243.137'); + T('-609057.1664', '-2', '1218114.3328'); + T('178326076.8', '-299396.226', '-53390154391306.1568'); + T('-99153591.8357', '-67230.718614', '6666167232273.3544197198'); + T('0.0000000000001596', '-0.00349909609', '-5.58455735964e-16'); + T('1.84', '0.00000000003464', '6.37376e-11'); + T('73.5', '0', '0'); + T('0.000000000000000049', '-198604', '-9.731596e-12'); + T('1052854077', '2.8', '2947991415.6'); + T('28.3', '5964', '168781.2'); + T('2085.7', '-338.192', '-705367.0544'); + T('59.12705', '-0.0000000000016294', '-9.634161527e-11'); + T('-0.0000000000000629', '-0.0000133901915', '8.4224304535e-19'); + T('0.000000000000000000010713336246', '12.8722', '1.379042068257612e-19'); + T('0.000620507896', '3.9', '0.0024199807944'); + T('3', '9.6', '28.8'); + T('-1', '7', '-7'); + T('4.07', '4', '16.28'); + T('-2473.25538', '12.3', '-30421.041174'); + T('-1310633', '-9', '11795697'); + T('-3.90', '3031.9', '-11824.41'); + T('150.0276', '0.00897', '1.345747572'); + T('2', '-8.8', '-17.6'); + T('-3030148.8', '229674', '-695946395491.2'); + T('2', '775.7549', '1551.5098'); + T('-613183.18515', '-3', '1839549.55545'); + T('-0.000000000001224', '367.376621', '-4.49668984104e-10'); + T('-0.00000000000000000737581', '1.3490', '-9.94996769e-18'); + T('0', '-1.15490644', '0'); + T('8.437', '-12103106905', '-102113912957.485'); + T('155.8091088', '3.465', '539.878561992'); + T('179142.3', '0.0060', '1074.8538'); + T('-301.3766', '9.6052', '-2894.78251832'); + T('48.15', '518165.306', '24949659.4839'); + T('4387518.42726', '-8069', '-35402886189.56094'); + T('-28.3', '-77.67', '2198.061'); + T('9', '0.00000000000001022', '9.198e-14'); + T('-1071.62294', '0.0000010', '-0.00107162294'); + T('-4.15', '-3', '12.45'); + T('-661.167', '453', '-299508.651'); + T('-104436', '-1098478.95443', '114720748084.85148'); + T('0', '3.630588', '0'); + T('0', '-13181687.0', '0'); + T('-1.111', '-3.78770', '4.2081347'); + T('0.000000042325027395', '2.89323850', '1.224563987727687075e-7'); + T('-21.7', '-0.00001926174637', '0.000417979896229'); + T('28151356.2', '0.00000000003236052', '0.000910992525337224'); + T('0.0120', '-862436.56', '-10349.23872'); + T('3649.71055', '-692509.6', '-2527459593.09628'); + T('-3', '-1', '3'); + T('-1135.91888551', '12.37808265', '-14060.4978485386674015'); + T('1', '2172752.822', '2172752.822'); + T('-0.00000000000001091997', '-117.1', '1.278728487e-12'); + T('-605.91910660', '2036476909', '-1233940269312.8094994'); + T('-85793626', '-403556966', '34622615410698716'); + T('387.034155496', '1.51', '584.42157479896'); + T('-212937', '7812.350', '-1663538371.95'); + T('838667.59', '-297101', '-249168979656.59'); + T('0.00382632083', '0.000316896', '0.00000121254576574368'); + T('0.000000000000002582', '-295757466.2', '-7.636457777284e-7'); + T('-0.000000000000798713', '21.52', '-1.718830376e-11'); + T('0.00000974', '-2.9', '-0.000028246'); + T('0.0000000000281', '38.82', '1.090842e-9'); + T('-3.237', '16967081.13', '-54922441.61781'); + T('9.8', '-0.0000000001333', '-1.30634e-9'); + T('5614.9', '-76.1668', '-427668.96532'); + T('-1.8', '3545.0927', '-6381.16686'); + T('0.00000249806256', '-1131.1175', '-0.0028256022777108'); + T('-0.20706', '11338.58322', '-2347.7670415332'); + T('1908.3417145', '-138.575', '-264448.4530868375'); + T('0', '0.0000669436', '0'); + T('325.22245849', '-14504.56', '-4717208.6625157144'); + T('-13.8825', '0', '0'); + T('0.0000000000869261985', '1.1243', '9.773112497355e-11'); + T('2588680', '-2.639437', '-6832657.77316'); + T('847973030.3', '1300.4', '1102704128602.12'); + T('-669.7', '-1150.41', '770429.577'); + T('-1', '-6.761867', '6.761867'); + T('-4', '-128.68', '514.72'); + T('-0.0000000000000000148', '-389336', '5.7621728e-12'); + T('5.1', '8.1', '41.31'); + T('959895377.84', '976.5', '937337836460.76'); + T('152', '-1325188.6822', '-201428679.6944'); + T('-1013851164640', '-116895', '118514131890592800'); + T('-0.555030', '0.0025719815451', '-0.001427526916976853'); + T('-8.61456', '-0.000000000050', '4.30728e-10'); + T('-0.10822', '-42439', '4592.74858'); + T('5', '248', '1240'); + T('1.00560719', '-0.00000000000000538', '-5.4101666822e-15'); + T('-0.0000000000000000880', '20.26149480', '-1.7830115424e-15'); + T('-215.544104755', '-4060438.71', '875203626.65949706605'); + T('0', '13031.6', '0'); + T('-0.0000000000000047877659854', '-208.19', '9.96765000500426e-13'); + T('-4', '-3160383', '12641532'); + T('-0.00104402960', '-6', '0.0062641776'); + T('-6', '-221362529.2', '1328175175.2'); + T('-5658.7', '-0.000009428149284', '0.0533510683533708'); + T('-3', '-0.0000000000000000171257563600', '5.137726908e-17'); + T('1577941089.0', '-0.0000000000000054178560', '-0.000008549057596685184'); + T('-3', '-19154.88287', '57464.64861'); + T('-5.3', '-0.000000000000000094150109', '4.989955777e-16'); + T('-275.9', '-618029.6', '170514366.64'); + T('-0.00277412', '-2.0', '0.00554824'); + T('20896.13', '-2', '-41792.26'); + T('0', '144.50', '0'); + T('0', '37399', '0'); + T('0.0000000103050173', '-6.752', '-6.95794768096e-8'); + T('-1679844', '0.00008795', '-147.7422798'); + T('1731362.632', '-0.0000000010867236', '-0.0018815126323525152'); + T('-116536', '8818.8637874', '-1027715110.3284464'); + T('112359.12', '-6.3736', '-716132.087232'); + T('0.02767509', '4.002781363', '0.11077733447134767'); + T('-942581.9', '7.504907', '-7073989.4993833'); + T('6603793', '1.604', '10592483.972'); + T('91689.093', '5', '458445.465'); + T('4351694708.6', '0.0003242690', '1411119.6914630134'); + T('-2.38', '-39', '92.82'); + T('-759.5', '0.000000324', '-0.000246078'); + T('-6.1623', '-10.1485', '62.53810155'); + T('1819.975133', '-1918.4931', '-3491609.7348320823'); + T('-544', '-2373759.39656', '1291325111.72864'); + T('-2143.2', '-0.000000000000000000162130', '3.47477016e-16'); + T('0.621559060', '53.8', '33.439877428'); + T('-4624.6', '0.0000000000000190537313036', '-8.811588578662856e-11'); + T('-6', '-50.943', '305.658'); + T('-3021.479', '3', '-9064.437'); + T('-965', '-0.000415509858', '0.40096701297'); + T('0', '6465897.6979', '0'); + T('74528068.573', '-119403349', '-8898900982117850.977'); + T('64.56', '0.000000017086', '0.00000110307216'); + T('-9626.07', '-1051902.812582', '10125690107.11121274'); + T('1.4514', '-1', '-1.4514'); + T('0.00120840179209', '-492240', '-594.8236981383816'); + T('-1.163', '-3.5', '4.0705'); + T('-390918.9935', '-3.9645296', '1549809.9209329576'); + T('1130.013737', '3', '3390.041211'); + T('-5', '-6733821263', '33669106315'); + T('27774.358123', '-0.0000000000000128441670', '-3.56738494049618541e-10'); + T('0.363631323', '-3819136980.1', '-1388757832.7919876723'); + T('-0.0000000065598472', '53857.08', '-0.000353294215438176'); + T('-240695', '2', '-481390'); + T('0.000059', '0.00000000000017987993', '1.061291587e-17'); + T('37.17', '-61.7668', '-2295.871956'); + T('1.475572354', '266461086.2', '393182612.2135309148'); + T('-0.000000000003907', '-31.5', '1.230705e-10'); + T('-0.0000000000000000000894018', '0.00000000000000001599913222', '-1.430351218905996e-36'); + T('0', '-0.00005850856211', '0'); + T('32.75', '-2.57293', '-84.2634575'); + T('0.00000131', '43', '0.00005633'); + T('-129602.62', '-0.000000000000000123490', '1.60046275438e-11'); + T('-2941.6442', '2.013048311', '-5921.6718883729462'); + T('1.01983639584', '10710047', '10922495.73175700448'); + T('0.4077750076', '-3', '-1.2233250228'); + T('0.359', '207160.173586', '74370.502317374'); + T('-26222.646879', '9.8', '-256981.9394142'); + T('-2', '-1.1360', '2.272'); + T('6717280984', '564735824499', '3.793489214890694027016e+21'); + T('-7', '0.000000000000000000179598', '-1.257186e-18'); + T('-0.000212', '754.3', '-0.1599116'); + T('-8.6', '-44061.183', '378926.1738'); + T('0.000000000000000000013', '956', '1.2428e-17'); + T('-3', '3.8968771877', '-11.6906315631'); + T('-4485.1947117', '444609963508', '-1994162257095211.5806436'); + T('0', '-3353199.6579', '0'); + T('0.0000000000000000000293', '-4', '-1.172e-19'); + T('-225', '5.09648', '-1146.708'); + T('0.00000036757', '0', '0'); + T('-78694.836', '-43.8', '3446833.8168'); + T('0.000000000000018028989162', '495', '8.92434963519e-12'); + T('-4036233', '-0.0000000000000000000134620360255', '5.43359140533119415e-14'); + T('-2.19', '-481624.5154', '1054757.688726'); + T('-6', '-33692.483', '202154.898'); + T('-0.00000000387466078726', '137145711.9', '-0.531393112039787150394'); + T('-52.6685', '-107972.8', '5686765.4168'); + T('-7.137137210', '3.06', '-21.8396398626'); + T('-174.1619', '-2084784202', '363089977710.3038'); + T('11', '-0.15', '-1.65'); + T('177.3211', '-85578219.525', '-15174824022.2144775'); + T('2', '-1', '-2'); + T('-681.685707574', '222753546489', '-151847908952971.868407686'); + T('2225288.04', '-2945.03251212', '-6553545626.6317910448'); + T('-829419822664', '0.000750870', '-622786462.24371768'); + T('-3.887', '-0.0000000000215299', '8.36867213e-11'); + T('14780708.1', '-2000820.86', '-29573549092050.966'); + T('-65280872367', '2756.0', '-179914084243452'); + T('-1.1', '-16652196529', '18317416181.9'); + T('6153.32891899', '3.07', '18890.7197812993'); + T('1.6664', '10.5', '17.4972'); + T('-335.16960', '25.16', '-8432.867136'); + T('20.7', '834', '17263.8'); + T('8029.51', '-1', '-8029.51'); + T('3544067.44', '0.00000000000000000108040', '3.829010462176e-12'); + T('-0.00000000000000861840983', '3', '-2.585522949e-14'); + T('-1', '-5.4071', '5.4071'); + T('-0.000000000000014799305202', '-77.4875919308', '1.1467625223519416640216e-12'); + T('0', '-31045268779', '0'); + T('-437', '640.03', '-279693.11'); + T('60', '0.000000000000000371281463', '2.227688778e-14'); + T('-1', '-0.019533338878', '0.019533338878'); + T('-1117.048', '8.967', '-10016.569416'); + T('-0.0000000000001992331', '17762516', '-0.0000035388811264796'); + T('-1.209', '-3960.47030', '4788.2085927'); + T('-994748.5', '-10809803.2', '10753035518495.2'); + T('-3.0521', '0', '0'); + T('4553015.460', '-6', '-27318092.76'); + T('0.00000000403775332', '0', '0'); + T('10628.68130', '-1.196558', '-12717.8336389654'); + T('-0.00000000003389', '-113275.58', '0.0000038389094062'); + T('0.0000000000000000000810', '-0.000000002954', '-2.39274e-28'); + T('0', '0.00000002678', '0'); + T('12309', '25980042.9', '319788348056.1'); + T('-7.6', '0', '0'); + T('-61.22', '-349.3', '21384.146'); + T('-1.845209', '0.000000052784913420', '-9.739919730680478e-8'); + T('395.326251', '-371872028', '-147010774681.007028'); + T('332.72', '3715', '1236054.8'); + T('-1681921.54', '76348.91498', '-128412884660.4906692'); + T('517583042', '-13.9', '-7194404283.8'); + T('-21.723616577', '-0.000013157028', '0.000285818231564853156'); + T('-116.13334149', '0.0000000006536', '-7.5904751997864e-8'); + T('-4.1', '-294.0876', '1205.75916'); + T('-22.05', '-6.7', '147.735'); + T('-22.9', '-0.00000217178', '0.000049733762'); + T('-50.5', '0.012432393', '-0.6278358465'); + T('-2', '-0.00000000000119764950', '2.395299e-12'); + T('19381.0141', '65.916071785', '1277520.3166816971685'); + T('-4.90', '-22.5701', '110.59349'); + T('0.00000000000192902409442', '289522860.5', '0.00055849657378990048841'); + T('-27006298.37', '-8164.7', '220498324301.539'); + T('-8776869', '-143972778', '1263630212072082'); + T('-79325483.3', '248065.2', '-19677891879911.16'); + T('-26.2', '28441.8', '-745175.16'); + T('18.71', '97792.4647', '1829697.014537'); + T('-150.68501', '-1.3460', '202.82202346'); + T('-43.0091494663', '-5.6724', '243.96509943264012'); + T('12.359', '-1.261', '-15.584699'); + T('0.0000000048694525', '-13', '-6.33028825e-8'); + T('-26799', '-3.0401', '81471.6399'); + T('0.000000000003271187802', '0', '0'); + T('1', '0.0000000000250081008', '2.50081008e-11'); + T('23.590033588', '0.000000000000000880594309', '2.0773249326711650692e-14'); + T('2.34', '-35556883', '-83203106.22'); + T('127410324', '48.0', '6115695552'); + T('2.4', '2.0', '4.8'); + T('17', '-0.00000000000000000467960391085', '-7.955326648445e-17'); + T('-5827035', '63.01', '-367161475.35'); + T('-452352446648', '13167459.5', '-5956332520963450756'); + T('0', '27.51619908', '0'); + T('-6.8253', '-203490405', '1388883061.2465'); + T('-663513.1', '235798', '-156455061953.8'); + T('45846991454.7', '0.000000000000011371170', '0.000521333933819940999'); + T('-6940453.30', '-0.0000000000000000000429869089', '2.9834863373180437e-13'); + T('-299.7692790', '-2.0', '599.538558'); + T('-0.000000000000781997707', '-0.00000000002498', '1.953430272086e-23'); + T('-211968.876', '-11448', '2426619692.448'); + T('-2', '224979.5', '-449959'); + T('0.0000000000007372', '3', '2.2116e-12'); + T('2.14', '-96.5220369', '-206.557158966'); + T('246.3484', '-119174406049', '-29358424251121.4716'); + T('2301100.91737', '-431951.5', '-993963992909.347555'); + T('-13819448.15', '0', '0'); + T('0.0000000155919108142', '8.51', '1.32687161028842e-7'); + T('124616457', '513907736', '64041361285211352'); + T('-5298.3584942', '-4.1932', '22217.07683787944'); + T('158463114', '0.0000000000000000001405398', '2.22703743489372e-11'); + T('-65667302.5', '7', '-459671117.5'); + T('-1693481.437', '-27743783', '46983581502656.171'); + T('-0.0000000000000003099934391', '125', '-3.87491798875e-14'); + T('-0.000000000000004272052', '0.0000005661', '-2.4184086372e-21'); + T('12.95933', '209420271.72', '2713946409.9091476'); + T('3.1', '-1.31573054798', '-4.078764698738'); + T('0.000086866', '-103057641552', '-8952205.091056032'); + T('11.1', '660.353292988', '7329.9215521668'); + T('-92.940180', '-1', '92.94018'); + T('97808795959', '-97', '-9487453208023'); + T('0.000000000000000388699', '-399', '-1.55090901e-13'); + T('227578760.552', '-40082.64751', '-9121959239968.50902552'); + T('-4.31547', '-29.771127352', '128.47640695373544'); + T('27.8', '60.0346682', '1668.96377596'); + T('12.7', '60805396.70', '772228538.09'); + T('6.808549', '434235.18', '2956511.50055382'); + T('-0.000000000000000000764', '798867', '-6.10334388e-13'); + T('0.000000000166682635066', '21.7', '3.6170131809322e-9'); + T('-17.0856584365', '-73.70395', '1259.280515120874175'); + T('-0.000032761108', '137.87702888', '-0.00451700423385679904'); + T('6.7467', '0.000000000000000000017375144', '1.172248840248e-19'); + T('156.9', '-90.01049', '-14122.645881'); + T('-294748892', '-46912.02', '13827265916481.84'); + T('-1145.2', '77', '-88180.4'); + T('0.000000000000000000049300', '336.35', '1.6582055e-17'); + T('1.0', '4', '4'); + T('2791.3', '372.0576', '1038524.37888'); + T('0', '-1.1', '0'); + T('-67196.498357', '36318.97052', '-2440507642.87511143564'); + T('0.00000000484838500152', '-0.00004296', '-2.082866196652992e-13'); + T('-1488.65084', '-2472469.6620', '3680644039.21081608'); + T('-0.000000000020', '-9.9', '1.98e-10'); + T('-2841.5725628', '-0.00000000000000000049499064214', '1.406551827547777476392e-15'); + T('75.099315636', '0.0000000000000014', '1.051390418904e-13'); + T('3', '-2.7', '-8.1'); + T('0.0000096', '-0.000000000027265607', '-2.617498272e-16'); + T('3256481', '-8.7', '-28331384.7'); + T('13650.44', '-53', '-723473.32'); + T('6', '-8.1', '-48.6'); + T('12.819672478', '-1.0', '-12.819672478'); + T('0', '-0.00000000000000000001480', '0'); + T('-0.00000000932497', '1', '-9.32497e-9'); + T('0.21304', '-0.000000000000159938', '-3.407319152e-14'); + T('-40', '-10124.4', '404976'); + T('-138.46343', '-72.2', '9997.059646'); + T('5', '-65625447009', '-328127235045'); + T('127.3760', '-572993.9', '-72985671.0064'); + T('3793.636', '-14016.5', '-53173498.994'); + T('-0.0000342', '-3.21', '0.000109782'); + T('1.054585905', '1', '1.054585905'); + T('-18462488840.1', '6264.198', '-115652685667176.7398'); + T('-55413', '-9808.30460312', '543507582.97268856'); + T('-1.11918007', '0.166606078', '-0.18646220203846546'); + T('-1.6', '68.418', '-109.4688'); + T('73090459.50', '2990.3', '218562401042.85'); + T('672.231', '19.8', '13310.1738'); + T('-0.000028', '4.8', '-0.0001344'); + T('-0.13900815895', '103606359', '-14402129.22010276305'); + T('0.000000000000054', '-0.0000000000000000492', '-2.6568e-30'); + T('-0.0000000000000000000484559', '5.193', '-2.516314887e-19'); + T('418.8538369', '0.0000000000000079', '3.30894531151e-12'); + T('0', '675966', '0'); + T('106621', '13.56840585', '1446677.00013285'); + T('12.198402747', '1', '12.198402747'); + T('65.314804858', '-0.0000000036124', '-2.359432010690392e-7'); + T('-16207.72', '-0.0000000000052877', '8.5701561044e-8'); + T('-26109.4977159', '-60149.26838', '1570467185.380666093242'); + T('-0.000000000000030215', '2614373', '-7.8993280195e-8'); + T('0.00001270329688', '2444.29', '0.0310505415308152'); + T('-871.457466', '2348528202.8', '-2046642436441.6221048'); + T('-0.00000000000000000063864554', '397.146', '-2.5363552162884e-16'); + T('-24310822171', '20.60', '-500802936722.6'); + T('-19.860', '47497302.8', '-943296433.608'); + T('-3.55', '0.402200053', '-1.42781018815'); + T('1311.50024013', '4.4', '5770.601056572'); + T('-361', '0.000000007669817618', '-0.000002768804160098'); + T('-0.00000001735304418', '164354775', '-2.8520556717689595'); + T('0', '194.3', '0'); + T('-3.7', '-1475870.0', '5460719'); + T('-5888926.57', '-1', '5888926.57'); + T('-11.644', '-83797427.047', '975737240.535268'); + T('-0.005286102', '25.9', '-0.1369100418'); + T('0.0000000000000545367483', '-176.8675', '-9.64577832995025e-12'); + T('-112.5258392', '0.05538900297', '-6.232694041650542424'); + T('-2032574', '4.7', '-9553097.8'); + T('44405.894', '8', '355247.152'); + T('1430.7023529', '15', '21460.5352935'); + T('-0.0000000000000000010538367753', '-5.05921', '5.331581551965513e-18'); + T('1107.1', '-660486.6', '-731224714.86'); + T('-0.000000001271832580', '0', '0'); + T('0.00000000003329420451', '-4.58', '-1.524874566558e-10'); + T('-1.1331472', '22318736.7503', '-25290414.05613954416'); + T('-1320771192.0', '0.000000000000000144797721037', '-1.91244658612921966104e-7'); + T('6.0088825', '-2.06', '-12.37829795'); + T('-0.00000000000000130', '-14.851119896', '1.93064558648e-14'); + T('1', '-54959924930', '-54959924930'); + T('1.22', '-0.000000000000000000447152061675', '-5.455255152435e-19'); + T('0', '2460.4318049', '0'); + T('-48926117262', '0.00000000000019101657111', '-0.00934569915711302150082'); + T('-1.9', '-0.0000000000152246057022', '2.892675083418e-11'); + T('-0.0000000000000000262046', '-18965.321', '4.969786506766e-13'); + T('-1.5349403', '-3984579.1', '6116091.03912773'); + T('-0.00000012', '663568053', '-79.62816636'); + T('-54228857.6', '0.162776', '-8827156.5246976'); + T('0.0000000000000000001875935465', '14.25202', '2.67358697658893e-18'); + T('-13.1992', '-8.93496384457', '117.934374777248344'); + T('1.4', '0', '0'); + T('383.512', '-4258970898.7', '-1633366447302.2344'); + T('0.00000000485581523775', '0.026476965410', '1.285672520872576762275e-10'); + T('-113.2617', '-1.3158604', '149.03658586668'); + T('229813.79204', '-4.40918501496', '-1013291.5280939017289184'); + T('-0.0000735399', '6', '-0.0004412394'); + T('20950', '18.05', '378147.5'); + T('-224.09235215', '-0.0000000000000000000330291504', '7.40158000265211336e-18'); + T('-1212.5', '-89187.79', '108140195.375'); + T('0.000000005360379781', '-5.853730207', '-3.1378217045031744667e-8'); + T('1.721', '-59400291.7', '-102227902.0157'); + T('3', '510831.1558', '1532493.4674'); + T('-79731.7076', '-0.00000000199301902', '0.000158906809743878552'); + T('1', '7', '7'); + T('1557292', '116069515', '180754127153380'); + T('13174514.5181', '0', '0'); + T('11.5557387', '-0.00000000000003525009362', '-4.07340871023257094e-13'); + + T('59429490631462462063898399891833', '85.00891132032463441584595955', '5.05203629890205609747397099201262363916734883085091009335515e+33'); + T('-0.000000000000000042109349317791897577655162141761006017167', '-13008827246961207056988713615056579178448396076639.2633976291', '5.477932507570985534957063193452340625430871365299670940723162464475095465880668702087454656216987597e+32'); + T('8591855.554373470161526044552421978378391766637549711729320', '-4.18144454943', '-35926367.5773248178055078206847122253956635626957707604812328535202876'); + T('-2283433141014849078.33114178969776355920', '-453.97', '1.036610143026511036089988438269093722970024e+21'); + T('-834090482593334176100123.7933568971710257756', '-2311068.681', '1.9276403914416302737519348190500409072951706328939836e+30'); + T('189532.2', '2968613550973672055370920.6', '5.6264785726585220673297239734332e+29'); + T('5.5765', '206791541', '1153173028.3865'); + T('223004397.925983046564773982957421494273449', '-0.00000765764399', '-1707.68828752147254136863163630226113151989615142151'); + T('-9', '-861605.04321559065136010082968313802', '7754445.38894031586224090746714824218'); + T('0.000000000000000000028090298007095127212699390661641605', '-6917964065283873879.11378929124954598', '-0.1943276721961993069547944346297165198267413742521737520171142577284979'); + T('-12902.95204428144349964281942884855605291385221512', '936511255610118037649.1', '-1.2083759820067154006199526430520916600744894425420426553143497592274392e+25'); + T('0.000000054421393267623019090', '0.0693540337668146867938144', '3.774343146319828330922834963772562065116896e-9'); + T('-0.00000000007483922', '11963887185334360.01202905021298539073645325022668', '-895367.9851184189424994447352806605141113868134295543896'); + T('-136818356017962729836947190424992612288254', '0.000001250702751', '-1.71119094258963391622539632506259119343595682786754e+35'); + T('89886141515.402264741', '165920325588054483132342147189817', '1.4913937866089484761163201125053970911515450613342397e+43'); + T('-4910559.69867254476135299557110880352698481', '-0.000000000000001251373615473295746877725841601861845423548', '6.14494484412532005943449278569391549262463086794696425713068030612078654982181230588e-9'); + T('188388334026044880874021952902236669508901633565820006', '-1428610610603915751990.6', '-2.691335729036024155624090667679961618627273975496253699574106150646158039436e+74'); + T('2569238997875.3944611244282198384307876980880850', '-45354701.13646736794503189060', '-116527066896795434703.141029468202286044275680813636330729593599972883501'); + T('-20273871998054251005', '-0.00001018031347', '206394372190847.50529696253735'); + T('0.000000000127882266384995374972957752031634640610096', '56084430050054721499878916115459816143192971582.9', '7.1722040237117373866688717282573432808847848059761445842371981626319357370527308468409584e+36'); + T('954627502168195877866647607616261900931', '9.96209474259629834949998607', '9.51008962048762055845159388440432218351076192328571371885622003117e+39'); + T('27452502565473996463690067929.18801932606917287121704780', '-15999511778834005759916561695256821.291408', '-4.392266381547719678372690910805800180664096055687896418712826017984317410615883824886612653024e+62'); + T('24739272583405.47186561318831947000688841802596024659835438', '0', '0'); + T('-14628477765152447836551575115758391.03361640644696947989', '1896549844807094292937664785889813670098706728.8', '-2.7743637235263904499250092914009953677085505785952534916815852412079339245487773243303684333379283832e+79'); + T('-0.0000000065376926', '400694118953983940534743481756583594', '-2.6196149763489805485528325035782515637752044e+27'); + T('6159556.6345747363', '12428.3903194610108', '76553374049.32049544464848654145204'); + T('1', '-214152.677228898078143751453160882566438516677', '-214152.677228898078143751453160882566438516677'); + T('1234245458508975352.84372029387871714', '711.09788699', '877669337572736089357.1591886677375895858960086'); + T('-12435092008252.828827', '-0.000000000000000130972832307119388', '0.001628659220320498210781727802616997876'); + T('1222155005674.47827107178853812873657', '-1.9217613579329307675966802225522', '-2348690263309.514070047950271986297573047714307144600821921806873954'); + T('-9610326782.75790', '-1925856563138573766.221666413429', '1.85081109084807161320054127390660041302158391e+28'); + T('1897933.1084909834795612591951194123752666123', '-19444.86721593176768385769', '-36905057279.327795521442821058258453663270782572671411150172721603587'); + T('0.000584193054195683632690208', '-15427224.032385517626932779704097', '-9012.477125240345688831570386428613444841606254309382176'); + T('-9193123344.97483292546402603464388933977', '3', '-27579370034.92449877639207810393166801931'); + T('-208355', '18.5077', '-3856171.8335'); + T('0', '-7.9', '0'); + T('-146.9974821', '27.85613660690160', '-4094.78194224817268246136'); + T('0.0000002221395758167297538432', '-11018022952341415341382543191308.248305367013916352', '-2.4475389449721144325377299337884145675514764946137036517351977553240064e+24'); + T('-62634425863308865890231971109828114770592016347.2857222333045', '-0.0000000000044191162667', '2.7678881018796339994185288016784587422371771822944265151385376844431015e+35'); + T('0.014785725196930589141008331862', '1405730020396633.72', '20784737782660.25819955773732132563645741958664'); + T('3060880958477929473167827.136432332645114184906595927797020', '-134990224.755007177950183445', '-4.131890085332574931410011369432785413898866996911658019131150911202211096837243339e+32'); + T('-251157.56', '-35553.75153', '8929593483.1210668'); + T('10660825.6584256928', '-54.80641419272238648411', '-584281626.672080870616452029619482941408'); + T('0.00000000000000000018196806510154644625549186906147312734531', '290466772346954491087868523893813560578350699536244189', '5.285567654026668587345538632825206167793448119823731989523008725260266169443990119026948390359e+34'); + T('801946936195133455122.3263199289', '3353455956475898285353850471499087737905097359235396953.528', '2.6892937299611674351748616442698675657013699635861635172559630870783247800626545335641592e+75'); + T('88876291341359997.22', '-242985336224765018278774996045975', '-2.15956355339905308693512776069018053139845369921895e+49'); + T('-677.8706245402', '-40041.8855', '27143217.9316521785471'); + T('3.1852520702012', '0.00000998870874036575237809441602188548308619567919990770190850', '0.0000318165551938868335179942506676244968068581347935045219680140052189902'); + T('-2897031868709978067512290.19826378134251899155435029', '-0.0000000000000313426136', '90800550447.862773034512424935249089493462002949664538517944'); + T('-286245211287.816038991926811942762853058522756387871', '-905725.51698541', '259259591978255100.08416583456412844730858064475954566698860796211'); + T('-301283745846510635986864779646783.59226306843', '164455867753899', '-4.954787986333307027587976990843711993792791415951383630857e+46'); + T('16627939773', '-24446.50', '-406494929660644.5'); + T('2835613541302657637165162939561661439198237', '-34702274210562114517526690656890036690211485', '-9.8402238665467925464317665495284869217720281504532926830801758242091305082784369151945e+85'); + T('0.000000000000167329000479220734904842317239446253923254', '-335462.843', '-5.6132662217107750155727738207852552086794690651122e-8'); + T('1606900543967463817538016297544283302866330961.38117', '-12172415089417043266077235.5931339752547820885496331722', '-1.9559860428582011548778770036179464667831089769951903599695351323242935536918541220406695361968160447474e+70'); + T('25175391597018424433550189069315474558138086224811394.9498', '2697842514071148.65', '6.791924175882585620347727294751149080055684613881481427569426305249508777e+67'); + T('33605644614556574.500804536703659893409117374', '-32.543409918351171133101366277860678601667282494', '-1093642268261945046.079483918411013199812861395190797870188216612955697572700923777661450756'); + T('-16194637333856709349021519708.8552324881761540256020238975', '-468.317375400951782165492196622874246631857734334382', '7.584230051762041449005379580598839525796458346850505580761259136785876093027076066542485326077054219893845e+30'); + T('45938105933592236851533187176.70670204189811056', '-23728.6', '-1.090046940455836751355290385241202650071383506234016e+33'); + T('0.0000019359500318287540988972385182980431073131086249', '-1.433', '-0.0000027742163956106046237197427967210957727796846594817'); + T('3.383292222691', '-0.00000000000000000008416407858503881', '-2.8475167250671594974339763771e-19'); + T('-1781216226076936151337005862078252102700230837', '-139003643961.53840777847576996', '2.4759554610811353724544585499901643072996118138112041996180785490331025652e+56'); + T('-4942215729757062263164723577.197780606517', '-15241705.579', '7.5327797060859772211128133542568249856768162658343e+34'); + T('20212448898283508798.6625218057881201405', '0.000000000000000000473337907308896740021174588136160473489005777205', '9.5673182631015315198993602152061224371243489547543953762429365302559862133611162973025'); + T('0.0000000000000000000336083585075308914988259705527435231286920', '-1042029834722073772731648833.0978', '-35020912.2608826168412442748054117197175486895048242174316983271784220776'); + T('2376653285350901814422.788590453876', '-7116898082702.215', '-1.691439920976175340680854757410757210391140053534e+34'); + T('-0.0000067077602282', '10325935005362413727223741709915.3224340753', '-6.926389614794815252662513824455946141306951378398346e+25'); + T('118620396179863704912953340.8484888231431511', '0.00002664482432944840555300828814', '3.160619618102041148915830017998160333002812044061355761312703976357954e+21'); + T('-0.0000000000152038475299141990408716170165065', '0.000000000000005856774815228245375399878344009978104812414293866282', '-8.9045511307771647940461821641351376995341987855772716940834996589432243659697783833e-26'); + T('-552929555032574543198346', '0.00000000031628803556881', '-174885002769189.22345730619750676118826'); + T('0.000000000000000045838', '3539579713.731326460', '1.6224725491801654227348e-7'); + T('1392529024903490704995506782982906.381429', '-696.803141131', '-9.70318598668840847367530799623705904459432004456199e+35'); + T('0.00000017046264046382452', '77820777096586290650583567570533323989282', '1.326553514683081867495692236827890756347852656781320879464e+34'); + T('173.2', '400230281235477723305446756183676238679630391', '6.93198847099847416765033781710127245393119837212e+46'); + T('441.339801980', '3859926956832539877913158087979570115173.37608', '1.7035393987857371577386465661853388929161435925152686384e+42'); + T('146444036588433930865962234014095372651938826216413', '-52287041949860150983876138.09252718579', '-7.65712548440629977355786783708824277254343945936126868688503521615280343003456839837127e+75'); + T('-152996991626635397079841283901340.65158799', '139164451.4055465586500905725256511816907743', '-2.1291742406419715449781823729219758981469966625530964344454535418866326578427680657e+40'); + T('-2392095943969007513831013778238', '283213.66941826693939894680290224', '-6.7747426989201568951320097088428601075588412800688116615345312e+35'); + T('-15192560288102281367737239879605.47240096086', '-81553445736510122', '1.23900564105440798918085016560369292282227123306201591582492e+48'); + T('1.7067661013360140299015089144175628', '-8518082392971818901480808577069938345874733', '-1.45383742767114563412540521449653172561766842289564535605710831784007839607324e+43'); + T('111116813960956208515375359292296052638950332201721672', '-6723639335232846900768096240894018745358463215413', '-7.47109381153635523540473499319528741906993971058857734750058361188185043050515216086975306279606530536e+101'); + T('-19017520.49675261317806237143645102654220495050', '4439261178196804.5636234243239638305', '-8.442374044679588557398641259522603028251217372386419857709859483039768004289025e+22'); + T('17312453768.05379', '1726.44336801935101862147113581125657128654142147602', '29888970991998.0896280136870221704774967797321308901016337045551158'); + T('-2', '-8.63876', '17.27752'); + T('734608.2', '0', '0'); + T('4.1351657034625927353146715451605855050687982255845069770', '29034498780299324669067501513285520', '1.2006246357352024765485891656111571028229380504313388083084112136514462841267544463307304e+35'); + T('8113870024531627718699652079910.7068190690295904975254176585', '16923534495569343509614671152502455712381.505727413', '1.373153592527270771522358333649474524182371877317191394431842566433920202044363434189424789373922626777224605e+71'); + T('-10.01', '-4864429445729841.069760518121786', '48692938751755709.10830278639907786'); + T('-2257142436339514797101935880.78', '361.115', '-8.150879908987438859554655755878697e+29'); + T('2334599.31164827194227', '-29960204503173960913.6', '-6.9945072809951386426110474550748535657872e+25'); + T('0.0000000000000042471515826788460724024393725389035009593598059706180678', '828398091382.612675070213', '0.0035183322649037987809384707757042363075619742175811901626183872501809043713944414'); + T('-0.0000000000000000000284493127383335026590175755701910596367998889566726', '-0.00000000000000000013237', '3.765835527173205746974156478226190564123201301194752062e-39'); + T('-0.025286262', '-0.10797436581647216600797099911020807463243214320798554', '0.00273026810331915910538504877190248824967123287037864285665148'); + T('-2.16564935772054852403', '123868749404533277771925133166764554.44147780538237283827', '-2.682562775895750704487504519843216927715513029094342900139628307846103986281e+35'); + T('488112856156098659519479388744402.61', '-3114334168535743226695852106494538175980162249914143.70', '-1.520146546028510353469309736526975923164123845906295275264771051373672808879616446195057e+84'); + T('13062458273.90637045335784972', '-422551949801626.741267985176602715381458097174737967000518', '-5.51956721284152853764296726669744927261362132472755924039708895768532345915860615496e+24'); + T('-1774897196938188058987.040101468413944266333770483137507', '-546064776871.3594927107191784', '9.692088418156530694143698199431520418181775404052225935078568528036161040292642488e+32'); + T('17667764535653225248288857836.95612603671740964890', '-0.0000000000000000319890032591629766', '-565174177313.13507635499469894977748029671843469133582435048491574'); + T('-281835819.9184911063', '-7175814054420814885484554.4', '2.02240143761032232334599327109026978241853272e+33'); + T('0.000000000000000001503903188910', '2473558551492927739005724.481043938460207033289961875', '3719992.59354581446800290523978683389613115250358419250482280625'); + T('224371010310.537303586', '-8046248744083810452149728.077812213', '-1.805344959919976464767416627850984855572049419079495818e+36'); + T('21241841371778633003043.69805019497112440', '3019928870075002318121482.417', '6.41488500121878843990786691028203447626143414100289387726373196748e+46'); + T('-0.000000000000000017364919937061080720023417741392471545683503908', '-0.0000000000000001101', '1.9118776850704249872745782933273111171797537802708e-33'); + T('439522909103802363083392888521183473696.816065', '-2.2', '-9.66950400028365198783464354746603642132995343e+38'); + T('0.0000000000000081177461857815960900264491259569062173810350', '0.0610415335877925918303617472579311', '4.955196764565624988836180976890473307042478930774835424434663605140744766885e-16'); + T('-186798563956757871041672400714377.094855823', '-1262567588714917541983982710.193577', '2.35845812470293091731202495176066945197325419055745256762489749711235648871e+59'); + T('202739871381.909125537', '20323942031180.7301604586345358572504650', '4.120473393374958139010105109821762644139100410749336624705e+24'); + T('-0.0000000000871057582376852096451379468926610553156501430073631916', '-0.00000000000000000204556363069958967723715901466977445824097114499093', '1.78180371075520049530019591335531323553330829840490421849868550913658281328132369671225257713629597852188e-28'); + T('43650.3286859870996376890566772833', '0.00000000000000000001310330289622533562857521522228834136757813518300419196026', '5.71963478292282611553143218521780871633322080859969244917523136988043505512171959238361658e-16'); + T('-1092205601185294', '2', '-2184411202370588'); + T('5860768904954696696.24176142662833543847', '0.0000000000000048972255', '28701.506930951217005600908223400663331828964985'); + T('-85896656824567.02163635501735158916726224558523587655', '32321.39', '-2776299344922992287.4470686942774805948582718361870079644045'); + T('0.00026', '95786603846831218908589843126114668233645', '2.49045170001761169162333592127898137407477e+37'); + T('4045878451917596479346482', '-2.2547', '-9.1222421455386047819825129654e+24'); + T('-0.00007402891873793970469482766866928008041088343139', '580', '-0.0429367728680050287230000478281824466383123902062'); + T('-294517422548703614947348777318332.649869292704089396942', '-0.000000000000018464905130542546160683866082', '5438236266653724351.349152153311431266266033202633265447500622081254643984468321244'); + T('-83.506', '-8171012757524040761112.5', '6.82328591329802547797460425e+23'); + T('0', '-0.000000000000000052054568154502662326801153388437977', '0'); + T('-848457792560875.315304639536969249869368391843456', '2786837672040308423168750746536175069.979124227', '-2.364514139444808677729215519365182902026897625419714103499744958027008402375235640420961008512e+51'); + T('3114192', '0.00000000000000007442771895146280027117559688227552768887141498150', '2.31782206936893840902092874406007390124461849564067448e-10'); + T('0.00000000000000000004917302646400565894337036110048', '-422918872', '-2.079620088498342188194690499484768025856e-11'); + T('-497313848.92', '72015813415347226684601.47954307807272704460158688818499730', '-3.5814461352690899900766892687894799291942231391683303086680262807916e+31'); + T('4026.7272674898467547880850473160814529617052037657449361', '-21157682685', '-85196217784587.2940970833078499068622793775121577888984306494014285'); + T('161789945200634672.93574932528', '-8005803048483811151653134568908048072385822541265', '-1.2952584365012698158369216496463941318557463003471359935387477829065387076792e+66'); + T('-0.00000000000021548823070578223953868560097628121116323968225230682924', '-49653567182460198793826479862157.077878', '10699759340379041130.65114538401855139934323670216223964167385329900350710562551938222192755272'); + T('-5565648526946998.206396582068274786458395468246488801913', '0.0022945055453979742566004395333553200630524525428518539025', '-12770411408815.9541406930749916678604063671114068656466120089976699763004963995450912686342679576306781385154825'); + T('3.271826', '-23890.6474306628013', '-78166.0414204757505261738'); + T('-0.0000000008805699092114903173390188646922', '9284821552.25745813417849639083469216233186', '-8.175934471316238510307959904561765618357930068136953080998844682973153492'); + T('361333176.6552043788873570', '425816532338214481.0652246362221874080822', '1.538616403020706012031174663425818903103785031033415757451967454e+26'); + T('2805.024', '3138666568668923617772609.35105', '8.8040350531139788020189957723196752e+27'); + T('15516261613526.6610074517562', '-0.00000000000000000236624580694534592762621412652683109621677385955', '-0.00003671528898247448920639683215816512848818717755547603887938060370189964171'); + T('-0.000000003258489294057571', '-0.0000000000000000001263694100620034334234551033555508871', '4.117733697834092773082498224393477748428351275212341e-28'); + T('-21061048707054855665564434392186020553808698597863.879494', '181831629693595281071297779845', '-3.82956480945997219565546562178683388176250894166635033461551679226752688144082199843e+78'); + T('-0.0000000000000004150087739116129831368627055614', '-1518028660414097725821098740744462450073.304250189994494', '6.299952131211430047024557585815135401837971947761937657558761468690680184406091789316e+23'); + T('-329353403844205335310.931518048486742714840512646142', '0.000000000004737902605006197777999824176859382087', '-1560444350.041118731605073747643365481135986445785795088564232590700292190358983404458354'); + T('-36414599958286461846528123709871289767333710768520', '-11982666807671338.82516899790506494507', '4.363440182347893057208595495864483712233866372669435753275016489496855915098212851964e+65'); + T('119742066861.890807047', '22054829383.984629241', '2.640890854724681514607753859168565061327e+21'); + T('-484485733573777836334476960525005005848019789', '-14406177805616860655.8627771810687838', '6.9795876221485617831711438674257823866674330443283469578093046623068838325626182e+63'); + T('5988848948477.078723617', '-6.5', '-38927518165101.0117035105'); + T('-1.0', '-63379703.864490098873312332', '63379703.864490098873312332'); + T('-0.506613427677516177791327725446313117452', '-0.000000000000025064675288473359447414244747114622651598944039', '1.2698101061517425226884571964189454600296022874042153446180321519393920461477382268628e-14'); + T('-23042537.21970212804132180', '10390764065108.50823342162627716811120', '-239429567711406187063.05734442567122738046800108051885738416'); + T('9812550833139441428690193893295885866528739.860970333644852', '-6934084675959416258239634601815942.0149731256600469716450344', '-6.80410583641450037528576307977037672169914839765125030421279633360096772675136555394720496053502446210349236989229088e+76'); + T('0.0000347689', '0.000000000085057549281766287602723911010', '2.957357425222803877030347389515589e-15'); + T('17309197932605.95272164347202723030822567422328', '10372291249693770815173154703247665392420536', '1.7953604225558623153970783373103876250250653717733283278048673842023984171292886092127808e+56'); + T('-10.68586744857482180099209534824648355512284245440', '674588.26676653525901087', '-7208560.801031027382439380269948592059745431252505648164243884987079328'); + T('-158425376406388668464703992996848728.8980383980010724', '516624932849644105480296.4740763529887132394681136194056', '-8.184649944763013743333361097416811851476935800617569830052596874617614630479435342869900779234127425056544e+58'); + T('43701371988184830897740842', '7444696727806908941269732116534493096172849746185.16', '3.2534346104111212105848066810541857916878449567515264310528659180255182630472e+74'); + T('18985671206766137596695783', '-4918195942924959263752039745340080571253768938', '-9.3375251102824433332331539143355814981375199246602425748207454160988454e+70'); + T('-8164454926564686613685695436631269148628112649072225137', '3017566861500503598.7', '-2.46367886286161259704778334978048504960179943566519245177920238542851005219e+73'); + T('-167.140200050688164319586013710074703990054053511303270', '-124707.791051624249704808849761672566349962496678', '20843685.14424789642526902036712772659312890967899817539551993752122248668554302671208072486282553706'); + T('0.00013717932814418', '-236889624553106847157555062629.1419261258', '-3.2496359540522243673339058837639891572432570371217844e+25'); + T('0', '-7377966474', '0'); + T('-1165159893843574357027338982426', '-7258741844369034621359206819796872729971572863114', '8.457594876822935516127237999861301735400382433503942145536493041682252149634564e+78'); + T('127327741', '-0.000000000000001314349415125924728376790639', '-1.67353141912655226200255348893816499e-7'); + T('-19', '674693830910632347225468600360472778098653805584.98', '-1.281918278730201459728390340684898278387442230611462e+49'); + T('1115499473064514172110108362485045185533368299248344166641563', '26727699066738.5277545215239', '2.98147342251737349166633853134205297966348378257402631237265170730493167637686598378557e+73'); + T('9531022923010697243825538443.3659', '-10497868918011538716', '-1.000554293003294813441624977396834705527412812041844e+47'); + T('36948.619152016593259861704969912416', '-109424973578674628984651491823525807602358729239', '-4.043101674477927092300739573396847025094408695070482727807518216276085630888331424e+51'); + T('-0.000224994118800115645797961334226721592496197539765940949883662', '231860.641001', '-52.167280606449958627644387092820869098935873225250256147940687697225662'); + T('-81737025015671727638688.506795636777200442300', '5419138.800783060', '-4.42944283723002262118621171335050352165263579845818347438e+29'); + T('-1466856541.9549101', '-24128674849693158122765920.4', '3.539330455197531614891444994295155372575604e+34'); + T('3719432135548', '54707696881', '2.03481565841010488825788e+23'); + T('0.0000000000000000347350240379700980370747179429442891350492370249744117', '0.0005534400198558475169798243101266211771697229801', '1.922375239326751185420171365530525629522813111237423841789162415238003577693927327244648617996830717e-20'); + T('2248441073845808666637746763786280194954645599162114623.5', '-6334923145497633015473724024497.97', '-1.4243701399993365995217919270799399913979461349413953499228708640778427689308423183064295e+85'); + T('-2833.50779749', '0.000000000000000000027787099520949762309607915049358999802', '-7.873496316224179511483613883698024416527436609698e-17'); + T('0.000000000004441882942767312311877169439858885409', '-0.9432493370398481379786084999178021934162', '-4.1898031409738770478382967231410155261701150266906290976528356507851700442258e-12'); + T('-2107306488.021444213082463895093082025238625832167567', '-0.000000016561760020640192077800', '34.9007043445492445900173806825761285679208256730753889935834487955007126'); + T('-129070822817.42205', '336811489052744821.06', '-4.3472536026398913255504341077748373e+28'); + T('0.0055725231631263368659868273181674133608110946135789308', '-152412560828753089910310350.5653132', '-8.4932252556962839520515736693985586025569561774936573592091065011026694067884882312656e+23'); + T('68902.0767970349411722981874624462811895157551795177137623704', '0.00000000000298788286086686468161985148648212755894442142', '2.05871334339993176415426311877635990320333360195205545566288301397039058040718828895421507390094595733968e-7'); + T('88153860095637039945277243438872776.064214155', '106.735', '9.409102257307819458559166578448085753213897833925e+36'); + T('3.7075516820964288985011546648796', '23633186593.70572408884166096265287527701858061993092', '87621260708.792430109916115951342109977008394099657174865349158237730095429102117232'); + T('-35505760506401161908713691885731701346896104.7570686644891', '-5457648514664450630675291184021238402035211', '1.937779610897920137400487822865364585421914753043232864073023463191678738063333894770237751635257001e+86'); + T('-120.55403235772170', '6237.155894', '-751914.2934654306175666998'); + T('-50246944566472610231911381270921126440112308695', '425722751177060307857193841626947340', '-2.13912674790799614679030549405709134417922674778586880217918152980768287325891213e+82'); + T('8119749715097219059818517125264159.064450132566482', '560418609424712067.0940695322762258473926083185', '4.550458844211485491057203230529751310726950775388516102150563306194801442473073934282587480517e+51'); + T('0.00014717424858', '-7244528491321.3877', '-1066208037.026626286030354466'); + T('-42181198581127024501.50753334291048422600', '-0.008682426489650895544', '366235155926002047.202675730675546783334970920687585688944'); + T('-57.3', '-96900776925224476370583151961084756', '5.5524145178153624960344146073701565188e+36'); + T('1083976078583942678025084625.271006', '-0.0000000000000000534905554182086699326584150063088902383604755', '-57982482503.506901999157564033733434733806444040999020955818569250676306523353'); + T('1058587.736740719', '2.2', '2328893.0208295818'); + T('-337676088587247469427246609', '2694990217595978128', '-9.10033755458704844211026116003411819226167952e+44'); + T('-180266997707357275243150935948776784257767.114595713620465125', '0.00000000000000012929550822108208448723385741716775647229370346', '-2.33077130840613978574569769854573934386258812596377482210267408630672963476159438278046789605387340218325e+25'); + T('667863393175854.7645678', '16647944315358092755156.00', '1.11185525798577381655823461635163932295615768e+37'); + T('-2607482796153.37663635999672298', '67905.1', '-177061380021074655.829689213473629198'); + T('0.02649777513989417670980608', '-3.7', '-0.098041768017608453826282496'); + T('41727029296529241379347405093482273986363238008823.7495', '-0.002796170808176706621979157103112461500671267733114714664', '-1.16675901230889282855531874612261889002345278810932959186816789276573413038428661947418401753559128959112668e+47'); + T('-11232695034932926234846674550549966790.9183', '-535612384919640506677833697180021817295233383415483', '6.0163705767354292540256743939915265501958563028272108803751138896375435530577152378000080389e+87'); + T('3.481826810306751', '0.01981896398982153971994255430994006244', '0.06900620017226469113521762438686245737379444049353244'); + T('-500336401148192185730936', '-0.0000000015351207243732', '768076778560892.7643589222652324493152'); + T('0.000000000000000010152819846152021274527085743667507483', '2034271405274844529575.93770552252121', '20653.59109593400315620700194269765880413700716562682807038424236270121443'); + T('-8', '14804.920611063196753', '-118439.364888505574024'); + T('-7644880', '32.933', '-251768833.04'); + T('0.0000000000000400490024778789822215877572796299412810612705023875', '0.00000000000023561893047293924977558189853184387736389392033215150171', '9.436303130345939646688036612188083884147595770701765354726302304762424603125782629215278913888534265332625e-27'); + T('-669622098209324787.5786201166', '-442008.19657257', '2.95978456014644004507422179531566173761662e+23'); + T('3750095561598843110.3554570', '-0.000000000921072821137', '-3454111098.455188785930556597852894609'); + T('509.01003417', '-0.0000000000695541947', '-3.5403783020913832899e-8'); + T('0.0000000000000000635110973210625767420869099697944141102671291', '-302.6', '-1.921845804935353572215549895685978970976683326566e-14'); + T('-10277403.8756777588787330367830', '3.73924958', '-38429778.12561843210264377872295730114'); + T('-566623967.574094904804042946014964033941069', '-0.00000000000001662953909014460365351667', '0.00000942269541818623958668998623752446360099484415277625603154138912023'); + T('0.0000000000000000060428627571787342505274', '18.65854757486578220960', '1.1275104224320402610478848029208041233734304e-16'); + T('6026260424.00', '18673139236042341642133200165212521277908.5537452', '1.125291999700035578262744750920904785263182229257757399648e+50'); + T('1351407130504734.056748656589882', '-16213.40426049972577134801362523633', '-21910910127395164076.55243444398575049081525274237838315413681306'); + T('-1749812757762436212668429.46101826944561361814636104616270309', '-259646', '4.5433188330198551287450703583554958847579349723006019196120650614e+29'); + T('70245313181709005413989461536786.3825442617', '-509184726219286329641748', '-3.57678405606165250356068075267063781878365698344246156333141574516e+55'); + T('-16.20', '-83495.2179048376073493099472538', '1352622.53005836923905882114551156'); + T('17522790821382422258618581410703033443568', '5481690529703238.18676804112985115150792', '9.605451649954285042649291504450317447918361312248424196122189225108309342505856e+55'); + T('3', '-0.0000000000000000000298256458973606523936524717292889013', '-8.94769376920819571809574151878667039e-20'); + T('-57135112812568.466051', '2713703246.301287433494800761485396936819', '-1.55047741117257327421574162146466373193666197915868993431769e+23'); + T('0.000000000000000018433', '224.613695971469169', '4.140304257842091192177e-15'); + T('351655210258904818533038059328', '-317039471793459879795242832647363526701869253095475', '-1.114885821139012575684668438594527497497409491712701452561241865985548506983408e+80'); + T('-1317999447639091934290806166798244489675877673.24510838', '51973652129741187036804.3069426597647651181729', '-6.8501244798785198639385417890806274968448700953804306642353363730416792643087698202422857568078902e+67'); + T('416970579045160473905951389152873165527755895', '900715.23677692450', '3.755717538336730295514426258945023234083011232063852048449275e+50'); + T('337048915259856.8484', '-0.0000000007165482473721426233042063689577689', '-241511.80950813224169860503564044515006631691904953476'); + T('-124735.945324536963828', '43656784749.045127925982651536524807752332', '-5445570315501972.252440976832268388353995138128083224266646896'); + T('-229.309150279271759668506974147516151893493701324327298', '-56277750392608320423429992502109.4808173149501499937169775', '1.2905003122157966621553106534643794501210439187980937861478914275127685562045563793515134308625165671789301795e+34'); + T('-773.26721', '506120106.96085084420866486187778058202', '-391366083034.5187115273789355692667516507815642'); + T('-16179029077993579729752892854', '-0.03205622515938674669127103', '5.1863859898442754973726890489016131925911697266421962e+26'); + T('-379694977175773597575402239067729598591749627164211967089', '427.4134', '-1.622867211576197909699344273675511380147349200949881951741975926e+59'); + T('-0.000000057593691704585518467986423410653803725013114132854316233', '24689.19870977557359290982947617857947691050', '-0.0014219420989240649383441724944840134755882327254494635758934109877771747341652064425031912888381465'); + T('-104', '15074917718070702275412', '-1.567791442679353036642848e+24'); + T('-2', '-971091107444027282033715.48309206', '1.94218221488805456406743096618412e+24'); + T('1.0', '0.00000000000563083386598228603', '5.63083386598228603e-12'); + T('219100199509205287520379236835.595422414343', '249215953689501338499522.46564075955864255', '5.460326517424660882913977937259236613421658567164008732143598687724455221273009465e+52'); + T('-3956981388.58456771827964370777', '-3850656424026801387755000322904.790283281327', '1.523697580370765854419130687951064298276236466076285768791284492428581079e+40'); + T('734.960286303554479116990306863761301115192463389214', '-130000607393220114986132790422441608', '-9.5545283629357036833302332771199553820796316440028291953441171730648555190680692016112e+37'); + T('-0.0000002666120264878701311448', '322570889825538918018562439468.0160867345870', '-8.60012786223824197974573415201224841889283841235410512800651976e+22'); + T('0.0000000004031032595796909999049', '-2712762676362394173603186', '-1093523477307807.4647872649597513148096163370114'); + T('0.0000054604495949732794611395765459328765263001334150', '-298907.681810114352964823611311466161', '-1.632170330074440811222971888249135550087671561067062039655656486575779653557869815'); + T('670489501929686.291032', '627223395167741302962881364608526379428084315920', '4.2054670182466566942266803112300612071880467870075440896463575082944e+62'); + T('53314.110410802505016043147844064319142110836740', '-290216592240562577134439451.5', '-1.547263944176020278887164669780998856796671698801721678198701042353164811e+31'); + T('0.00000000000587199496778346240428737868027766', '-551005.316277', '-0.00000323550044440047912772450593052565891047747182'); + T('-89694219111352199451730456185908593505562.881', '6.32', '-5.6686746478374590053493648309494231095515740792e+41'); + T('12678032520049858276397.8', '-0.0000000000000074933793548296330814995251238051875041756343', '-95001307.14560031424594545397066655517994845175009207951656553412454'); + T('-523228.1027985605', '2361103.2', '-1235395547847.6101519436'); + T('-422058160.089943171946211', '9455722182962.552320564582039151365712747392896268147', '-3.990864706862835827499020129041439986893906907628633530927174587244916641017e+21'); + T('-265.20593471797540408456443', '-1', '265.20593471797540408456443'); + T('-117096397.7', '0.0000000000020', '-0.0002341927954'); + T('-0.00000084780432839108612959331480507149065703369783040', '-0.000010825079810960431632673973072527105', '9.177549518911214340736347681158868989278870466087868848313439029850170283692992e-12'); + T('621.284586089902789096175355124878176656898069', '0.00000000000000000001841815997332304201462126563776625573631078', '1.144291889556362115393585911981542504972877752024640554149220155131163404208000456588382e-17'); + T('62838970696961.93575529768157435967750130012543934643251895', '7799025017418', '4.900827045344027526036434980262455014867740735222443957786401853650711e+26'); + T('-247353051265858.992388279974222435772900701328741022620334222', '13.03830659799478334978416300680018326059', '-3225064920353791.19824546858361898880804876150878659765687851458354866130547449520822131539552091098'); + T('-2139441231754725391266252450690990152166777909', '26220446827901878.81347', '-5.609710505864567774726728960484243595395230887890837315312192763423e+61'); + T('14286913921.940840650', '-1242844090.352406582', '-17756406537257697634.0436449596731583'); + T('2437674767843424972272.34179653188260607311276734', '403927988104479.6110322848268399591134551070', '9.8464506462804905964641906770409128324751565746334602350400894172348609324599790162580538e+35'); + T('-282975256.593232221485634', '0.0412485784400225687488894518785', '-11672327.068171452858593608252189019369153357222063469'); + T('-256178508.2486827293794161556160000481333795995', '0.00000060622407729698677', '-155.301579786376201792071982290374904153826835212494097939398615'); + T('-92215568824012627934.74189852734', '802821222.0162469626002', '-7.4032615652217143799840729492067368601093636437189468e+28'); + T('0.00000000000631216424157187020311390', '-28896.442960029403', '-1.823990939609188046299993634327261580017e-7'); + T('-5868684173183824149727150676541321228.27946209763645', '1767678018.67', '-1.03739440114535694186833871290131127571890503338033620259725215e+46'); + T('-1464504298805396118871695503432730.5230', '2208833322892572033925', '-3.234845896720779321449912432206390896261116508330538992775e+54'); + T('195.36', '-13214599838.47575096481496546334113027', '-2581604224444.6227084862516529183232095472'); + T('-178.8581172026568', '1542628302874005920400457301.7905298303732', '-2.7591159379557450261955452194656628921038300499237551776e+29'); + T('351875781344.0280054729542235343559317', '0.0000178856834451374927', '6293538.83712970189834558679045935052951438284631044859'); + T('-307.61455274208', '0.0000002438400533036931515021270613358401352036899', '-0.000075008748937620515500399556886599434410402744867379000992'); + T('8320.987246030626877296', '0.00000000723034', '0.00006016356692446508273598836064'); + T('0.3178832760474045258804752', '57.66675963865299188481', '18.331298472973254687278485883883193525626461712'); + T('0.000000000000000263835146673878760137331888121481766389116183835336431047', '-2.082954760', '-5.4955667461965393109095371006242790355341756731284907525076043372e-16'); + T('0.000000000233346878395806113798662159173733434871136164480744154169890', '10289471873381.87490244310848109593247868', '2401.0161419951076855155738296198869665643993521903141787021173990086767696510557356775276055229452'); + T('-0.0000000000301270068082410889159', '-18488503331.384508718698847', '0.5570032657388091474587525501237955790818099673'); + T('-538244397964164173070105649994388625', '-2280.52363653', '1.22747907178713620859177763155650252117906647125e+39'); + T('11816719921.6984115', '24346834400764849090360336454820099097991.85306443422359', '2.87699723093810199016709496254407379606350048843381923576632239138827285e+50'); + T('-0.00000000000000000614056701921479118164625780', '-0.0000000000000000004526129846', '2.77930036570313218519067348427902988e-36'); + T('0.0000000000000000000211718849571685401', '-21818432978682095763187832118707.42059881629', '-461937352970.349445849940275487640330004420702796016087398229'); + T('354307691910025309530301150.530797676735046789927', '-0.0000000267343273366', '-9472177813397840300.1738065546659359293415312312254736184282'); + T('-0.00000000000000000001564140879', '0.0000000000000000012127764653067414424836974110', '-1.896953246475399564472178411611564269e-38'); + T('-2192995405.921', '-1492963957482', '3.274063099963661175050922e+21'); + T('-69077326289723825817911969975.2', '-160.497210320954020046818', '1.10867181659309712810734480548942940388027429142989136e+31'); + T('-34636483655.3', '-57826095450336990.7625812016394354487909856618', '2.00289260991541487342513087342333948596839502091235357754e+27'); + T('0.00000000000000000918981946289', '1.09999674198752514', '1.01087714686325481931551720546e-17'); + T('213150740', '-13337847744665673.1379595', '-2.84297211678281928195418951503e+24'); + T('-7062099495908.198413696', '-1.058736021405', '7476899123064.10206563783530116288'); + T('0.000095694936784775916676475094824420202134897751844986130', '-336195659475425245294044969885823799340891152365601.95879727', '-3.21722223808168692686768515627014434144106705991738803812388959163318091496999877734952100401367322242946318651e+46'); + T('26868896167028748101420733486377', '480507267329881259405862882', '1.2910699873389304567069920812073966334143151295977876958514e+58'); + T('-17.084476787578052926829789715003022556', '-42587983371473135737559540519744259126585114576504024.779', '7.27593413339692893938094555667816327719803206600514992485982114723845688369293247684119915124e+53'); + T('-76372412484569384.3511', '9012097234036431278745.3269231299', '-6.8827560730887716103930962801811543430595527769250789e+38'); + T('60654377820540327528', '-0.000000000000015117053045659', '-916915.446964550856786185798600952'); + T('-1331839674', '0.00000000618492062771114573665144', '-8.23732267252668770406834370123056'); + T('57436192370710.8629215108579', '105737032624.1773726358981981702798798174015047365867', '6.07313254651038202363973449861725599835500772846363988048609447329832343472993e+24'); + T('-965563477.0996002946011879837917175', '-4271362438679787505570708994903.70810816', '4.1242715682442838707409662264403439596770359705507151544781327654021648e+39'); + T('-0.0000000316616', '-2.4', '7.598784e-8'); + T('-2.385', '27.5499221426824606177', '-65.7065643102976685732145'); + T('-2266803.57818655', '-765116.77815066069', '1734369450442.4824101199545717195'); + T('-32731559035569126148642.446165008', '53704467616503577993.2664889330721452187634866311652474', '-1.7578309522633972201948025668355694620574985124468833198585070981942000057664555429792e+42'); + T('0.000000000000000022575861041290712552639790861752973874588224619267844', '31.3944076810173444579596934007549380765', '7.08755785280277370389292313902506994649964414578494551292873810891605957242649610987662066e-16'); + T('-11.858586370905899290715', '-991047772227373783020319210519807971818.824767583950836915', '1.1752425604652188758145553608664648912870842306418133290829487635928729138744225e+40'); + T('-2011971696758986575760307857385008882209510.6', '-5525155372891673776761633609.52070459365483366973020593', '1.1116456230453892069924547730202138929609342602851169377795116783945568725725156231784447542517858e+70'); + T('101703650999596029193296586451725488', '25620023337044890752720058833900.03506', '2.60564991207231919895254185864449131548456396842795048651050944069560928e+66'); + T('0.89310', '-4483944764830427741251990095', '-4.0046110694700550157121523538445e+27'); + T('83.0660898', '380025540261.5474990692628313817425000', '31567235653659.2200446528027713580805854765'); + T('12249047873.6982', '-142475289409910528840622723.707048987614004620751135579865', '-1.745186640801000235481534461055817862532388247975966963088442739006743e+36'); + T('-0.000498899320558508419779744140203069146893', '-0.000059386343271843835168818993', '2.9627806308777237249170821580126645410922765507304403542845338749e-8'); + T('-2297433.28538549', '-285796548778125338857408803711103260149820899037579434872', '6.5659850401116294498139439137406267368280581599271391787641901086880728e+62'); + T('34167188438641414252422741077347811417020.59175671639136', '-1876839.0519778124207491962458916326915672158166', '-6.4126313557927024892196883907714297942957465376354294400472573526515361182444034644427066219867584576e+46'); + T('12880636073104135025.684594372389347', '0.00000000000002717486381885835955193357797034462478107970045332718', '350029.53118687937886399193088901600225479341922014167752066254086091217423503253755146'); + T('1602471.60609897', '4948980398.148665647375032297236242244605323466522685367809', '7930600567173612.25671087112877473741757520842649668372026733910210605673'); + T('370646280676040583641049478094.841', '1176.901804728', '4.36214276643352994796521564113760876046208248e+32'); + T('5547404728207', '-411636889958330609055.5065082479', '-2.2835164296592677798830108543636613032785153e+33'); + T('-0.0000000000000000717041779275895653254585995816746449', '0.00321217261726873009981380480107282271306898444464862589', '-2.30326196882768081444918769519152717431393087666881910579487955526028795479141279838696461e-19'); + T('0', '-399327.602', '0'); + T('157.8', '584.2802770', '92199.4277106'); + T('-10542363099197242246550684296314627705', '-4850153229755188101.33556814417023579013954', '5.11320764348234189624759367689059634200461502178300975633252267426243050999557e+55'); + T('-2562650836927093177981.565429254128045484667799300595712', '-0.000000000000000000317395222174952988716141595565429848789500451120', '813.37313174330395999646102020198262859585476827525658527707087140151929076326008633676971110873759744'); + T('-0.0021383531474526630012273967098296654028460337299367', '-1407391260514289948513', '3009499531618102701.7588489539730050863932112182078160238774067897491271'); + T('85399454218074127051769295076.287333823347313330158', '-0.4092038950326248225015994759', '-3.49457892996962542239070012424224836131258038173055372705839875319563364641922e+28'); + T('33.127135132152', '204.48590', '6774.0320419197206568'); + T('-20073920159741041234.22437514622641538676580', '71857.713649597096', '-1.4424660066635461364336974246302806972842556483481805121168e+24'); + T('-0.000007522084816187962395438426656921829236', '256085.25', '-1.926294970674698397026448350044490870358369'); + T('5220.8153048375064912183804758', '-0.0000848053870645192181', '-0.44275326271911063141541592413054755924692197198'); + T('218437.2', '-0.00000000000001820193740822812', '-3.975980242028607494064e-9'); + T('0.157577570127431677', '101.0319296822', '15.9203659846066164839488230494'); + T('-14.33490', '290.67243363958433117', '-4166.760268980077428888833'); + T('0.00000778430585574695128213792486514057213166437662675439', '-0.0000000000000658092384657839808153501892941795', '-5.12279240351449754074675940343526036050666862079292855468757563270534826950003073005e-19'); + T('45215297824632433459231894077144.81', '77667936.103345159', '3.51177886233727320835487431074370227708584865547479e+39'); + T('14342668379445830286426805277231689892104589', '-0.00000000153230966', '-2.197740930800139119461236060924109647979621945502974e+34'); + T('1087327540724260701412332282353.246979912226498912687', '-31181.1155292590461395304941342272532923707', '-3.39040856654682932656823122420611037707430356255272533055260947181604908300590629044625370709e+34'); + T('29098578027968222529887', '-0.0038633633262596785860098746949622820633214200572090', '-112418379199558110812.573170785518748243461139468530838004471322252305383'); + T('45167443.85086931970589523202133', '-0.13322343827726157227081356406399769062787658346986566850596', '-6017362.1680079665574862292748307786959075342072628967876653391403467312455019622919521268'); + T('-1277104346263109522212350488222850419104.598041084894694', '-0.000000000000872545304590848146374055', '1.11433140080444089775987766493651597528395567239169697675262925481314760876417e+27'); + T('347.048067026229351381168979388696389522228278049448558', '-580372453576496014579764354612', '-2.01417138168992971509920131695177453316685553118682774156732799236522441451364049496e+32'); + T('85.9498795419121819013954981', '0.086819059343222766234152013147244', '7.4620876924921221071832372576722493425329853011417540222364'); + T('0.000000000955538852', '2796816770377393398221585073517643123820923752.2574913', '2.6724670860207620944890322427693843122815393358116556452019876e+36'); + T('13.3499409389365943266698006822510800901', '-142605023.688711727210398330', '-1903768643.839955511708245141067882976861272713746574494353289533'); + T('0.000000000000000000780', '-722296330274145516124092200004225017552775396318.66', '-5.633911376138335025767919160032955136911648091285548e+29'); + T('0.00000000032533771679445565923566197211480872204653266', '-33902055423889399559039392315', '-11029617306247268880.3792855595203258365194772546962226666267013992005079'); + T('0.0000000000000000477109133480553184558657389005693925237508746393136844750692', '9544079599812049753877281093753.806913927594670', '455356754773575.186639624987152382218896113143126632346387917730524427522867133635682709085290515537801164'); + T('-0.000000000005212381313104274295521085956757682135609555632962511189216', '-0.20258211424784772185707', '1.05593522667463662312577979622174586506157166623770153687938400565136484167735712e-12'); + T('5.939336816620258503935', '-181.5', '-1077.9896322165769184642025'); + T('0.00000000000000028', '0.0000000807854522591970390113967313771890503193275103759', '2.2619926632575170923191084785612934089411702905252e-23'); + T('-1420735136825498697880142035376838692614.60263288147781831', '4794758649393115914238372958725703', '-6.81208208579077187760278480672518379981721734276502252436200522274670249079192835816102193e+72'); + T('-14302450490637670545279313.292191928068', '-0.00000000000000758231718292500972333975206250950391475327599176587054817182', '108445716113.09624528335189894213613395592525495466249866985446295108569636686802306848015834464376'); + T('-0.000000000008450771622', '-69748785787966613339823993495254469.001291622669751588', '5.89431059605905165095631246704409058304793926203868597659835736e+23'); + T('-1179004888.823228', '49931113655424934777966552716734550837488773547523258643790', '-5.886902710413423665263191856093556409577570847449923030469713801232995412e+67'); + T('-739484608100691619531927074065663059218837785449156', '27.88287', '-2.061895319467253133749818345565325454400115552276670835772e+52'); + T('366.123540796397283114420', '0.000183575228961067940921266500079', '0.06721121282973553030230705091816031104204619829603918'); + T('612.24659918919924258642657076118376830990940740', '412296990330.330273291603849583', '252427430185686.8746606867196534961374184185494504035865409741651638262671142'); + T('-1253.044774927718837481270804718997', '0', '0'); + T('89.955', '3.072147874', '276.35506200567'); + T('137440172231079014714878951462.97980416140395', '238.92817663651290090629461162158684942088308705117640', '3.283832974778000222556804923252233207004641698923980593985160071015425606241073037967932310678e+31'); + T('0.00000000000013007478162945817837283572658276879385007', '-9605773255988262156131.54662615327683681096194', '-1249468858.6547626741062732720588036874502171676524751175204550553355667396106328363358'); + T('-959.0561817087475466288631232777115', '6.5232691288079290675200146125939736359903603475043077091979', '-6256.18158293308052505705738568867991673577610410424533837553637598105441295850976942461260585'); + T('1232651308.483980691765841289013994011162', '0', '0'); + T('0.244059666606121846715993202008963667291853198185038924811401', '-91.8912', '-22.4269356360364638409486745244460821438491406050610488476294115712'); + T('0.000000000000009298467342175115268976111043399158', '298.30', '2.7737328081708368847355739242459688314e-12'); + T('222487581688568714558163241.2498688', '622765319764779384998.16290716', '1.38557549953973970068746587697772147617465686740636673376580608e+47'); + T('-0.0000000000000001094619824042797469992', '819334825', '-8.968601419736362575863380714e-8'); + T('-0.000000000003213357903869884', '502881.861925654510', '-0.00000161593940573160560373542857777684'); + T('-0.0000000000000225850887358266958', '-9657.24', '2.18109622343174999747592e-10'); + T('0.0040522596025230943461061874749446981', '-0.0000000000000035111456723673138306010083', '-1.422807376670785399057088730766337512497448065110252859909423e-17'); + T('50.4', '-0.000000000000000012807615227380978390330730165878274412863', '-6.455038074600013108726688003602650304082952e-16'); + T('34509655900.4271549037478532640245880287700031396795737736', '64.71924', '2233438702537.161140732834214879190678535092737997675858151324064'); + T('-0.00000110516283770184738962025591', '-12341997806576.504800', '13639917.318826066245556761603362081169343368'); + T('1443495892579134888970475033389', '-263878898.64', '-3.8090810632514586354552763528830654669096e+38'); + T('-0.00000000000000000069532890943744308434473313878', '-57497447967704543918096254112146', '39979637790820.12873785593753087723013293250902050457270162188'); + T('-0.0000000000000000007659553263900774084490506', '-46179282173901700884047955896435818818778979617487', '3.53712671499703607070284553536887181481970539221145787819001524983163078422e+31'); + T('-1', '-80.5351111304083830696255443', '80.5351111304083830696255443'); + T('0.00000444632', '7', '0.00003112424'); + T('1748652238406104265.08687786280471813580897620802429129', '0.000000000000000000175013', '0.30603687420016752574564975540304213510233635309495529153677'); + T('605.35473313', '-8105969267.633939755450293', '-4906986862768.52514719110958199530709'); + T('3531.27893', '303826595361824791936490465665622559869413', '1.07289645457484761411696267955090137099952167836809e+45'); + T('0.0000000000000000000139500802384964877256638688566332365116099', '-669823.809722799400662636451451747822858695293904', '-9.3440958912884554771068695881482229864014701239462146074951636707559395049094067886960496e-15'); + T('-14328.20453041484587995049563830419841249274151406721890138', '0.0000000001737045483', '-0.000002488874295905724415190916871212750963235628741729704355101435146654'); + T('435835890288235470264209317728368193', '2502287905711035099019387753673794537858483', '1.090586877143053196441416655157728683500541851046587666747641275079364352431219e+78'); + T('1481352883141719129158247138.8038050', '-606388568.443511765388700681359582935123762319163277946633', '-8.98275454167975836154301999007742562427000217610359536587169076287724303365227616247338565e+35'); + T('-2254195545465844946364682.85626170910', '-68792607248889229037631606.018565330920642673825', '1.550719888214274947292592996004771619292172071432516539437011341424210097883343075e+50'); + T('-26784210511779136785823800676221849936631.56183', '-0.00000000000005019147414519109521634075017431467167600186829521963593473', '1.3443390094013180964383583232553726446281441447994273009124279348757959259512742782394910442001518393559e+27'); + T('-8770530121852166665068897500281', '11987190432239629.9682', '-1.051340147623357682201798135592086804701933955210642e+47'); + T('-392092775092295510505846799423331218731967579086912', '-0.000000001347740911042761337967635461776381177269782335301', '5.28439473916174872080749764195178381030762509320641795527675022371094325058097973324110528604680512e+41'); + T('4015679.55', '4.713361052', '18927347.5882828866'); + T('-908765.598832994503098008148905108990', '-393227867096205311879272472100531195041.383622646628607', '3.5735195811950419553683668422021541455075148867700124530307768773407398811212098138687693e+44'); + T('-2369253560877872972694', '-11.60552475086080768', '2.749643084183325817302731177345942548992e+22'); + T('174098.34305585608863845094930842', '1.38', '240255.7134170814023210623100456196'); + T('116951064421932980', '4525883193151806788', '5.2930685688844070019747986244506824e+35'); + T('600225026818135855', '-127962986020756918725', '-7.6806586716037565057838021298243384875e+37'); + T('-355276.30', '457734732040.627839182124360081830', '-162622301980885708.381620168789740259629'); + T('-0.000000000023259793972698088534519974595546178', '-2551236.5', '0.000059341235365627366949498869167230146749097'); + T('-138631', '2.3', '-318851.3'); + T('795255541856527997999067123124137485004290563483625370482792', '-64991504618917159513144692611330263343972554177.85101068', '-5.168485422178800786099741762775612989901343114104453511664262171013611241941946296162984705040765106162199674821856e+106'); + T('96045012606945538626605174.6240481976236369294325652245732', '-0.000000000000000000038130457744062248428043049303932284765937539238468630', '-3662240.294737062792567245617774026857299030801472930205579945585215779769210281070679229934569639844413338716'); + T('421989371626234493675627719459467707.14836401276576921755856', '3', '1.26596811487870348102688315837840312144509203829730765267568e+36'); + T('0.00003674095297032643311401261648', '-25144265134553986531', '-923824262782066.66182891576601261318521398863088'); + T('-383466.04881547', '53724954971092', '-20601696205553692514.69239324'); + T('-0.000000000000000014783370871610989705993827634590792', '-5.75544555955339866871', '8.508488623824452763835260497721954711915248063842451832e-17'); + T('0.000000221838708829447458147931597976839', '29539052824125603227.9202610', '6552905338548.867330870922184373002548907167329945216834979'); + T('1417021083070041108879006664525950600252.582747034547', '20386.077908379675293435494662791207239424304698951', '2.8887502197282405761889040724952549395790613139212743588512735905545957366555623236526443052831660197e+43'); + T('442.735', '0.00000000000000878277865798641273232492264611347738525943901036', '3.8884435091436144410458746277270504101628377302517346e-12'); + T('0.00000000000892', '16797743856811194', '149835.87520275585048'); + T('-28.32380770960', '3481300309.0', '-98603680531.4870622664'); + T('-0.0000000000002514438408283789730670345516227699', '0.001175682622527705754776427124', '-2.956181542035476048733420921784296951833346097731013663707676e-16'); + T('-0.0000000000000125727922878', '-13.313', '1.673815837274814e-13'); + T('-0.00000000000000311161', '995915309552512177', '-3098.90003635669241507497'); + T('0.0000132726799331352407876197984124', '-0.00000000000000000145179351917753148242751859389117949850796347504360670810576', '-1.9269190709043414470286356436843451767202221286209940752290325354825996720087060259295424e-23'); + T('-1305365.7803110685680577657011785720', '-1.13', '1475063.33175150748190527524233178636'); + T('8499682132744325149884.2', '12753066384420249097484638996.8248053537637250207', '1.0839701048535906248094606671098895649828222408103379536302544124760294e+50'); + T('-27597428686882882379490857905609.4308', '0.001777076303502550583927', '-4.90427365570610811144061901744727200974205360973380987516e+28'); + T('3851.5801', '2.4681503', '9506.27857928903'); + T('-254136480693014397618955753399722664599889.09', '-23582875375875972784153503.3854654728889123761140614', '5.993268952647068812676163151455910299034928531722912670375198720068520525866107064371629450126e+66'); + T('-36756.5', '278541826958821478.87226349825573265453570107573513272911903', '-1.0238222662611921688168353273636837316441496590258406157863626195e+22'); + T('434677757893257627333239169971.36582235872933', '-0.000000000000068725189442692668129', '-29873311257739028.68226613696221684789246137143439950127182852357'); + T('13480614688014170819.34130485033', '-74790845792983147611.766920195511401471625734274890', '-1.0082265743258914745957730201044196850059871310317319787175533254133776825272137e+39'); + T('43288920440971609207698898895824622861', '-8750.436', '-3.78796927827813844188979922058384029569317396e+41'); + T('-0.00000000000016299662731892671518950597', '0.00000000189502990635948720606833476337904040553896306692718740072', '-3.088834834050979272599008422371925718929124189963816260765249621332298025452222984e-22'); + T('0.00000000000000014', '2825.871550945769438271943129439745088808390801', '3.9562201713240772135807203812156431243317471214e-13'); + T('-0.00000000000508', '0.000000000000002145872435', '-1.09010319698e-26'); + T('6668343.896256', '-30256115.746220409', '-201758184760723.915056805888704'); + T('1910671461073245653125406909', '-41009469551.2913732728', '-7.83556231054046679894479520055900512189070617752e+37'); + T('8289.8635', '-66806493292579558025822119188753113864024114483099524877158', '-5.53816710309150098924394843355494049132717469773268118146494087933e+62'); + T('-0.0000000000000005326', '2424634.43200073035390412054', '-1.291360298483588986489334599604e-9'); + T('424284.1840077187212673385', '970.3396784215570868735428784067', '411699778.66940253812593312501264900866190088462962956795'); + T('-35760922777.0406357', '-7761344319.06347958972953830', '277552834840052130228.57982929972823169949731'); + T('-0.0000561650355483525921131526685343539', '-111333300972076302345', '6253038806812103.7204293271893852389242141697156298955'); + T('13512458606466223813008490671514544370375', '764.975563481753223231576796031842139048653', '1.0336700636505365489288540708376614928455337024474216176633151377504345359376854875e+43'); + T('0', '-1183974879.82128974148434577518', '0'); + T('11143820497441188022611097072500689220.103841042188', '14333893036294350850719062076858.50886743820472767247', '1.5973433102598649386055415009433149402160776376532075449909743742363111723311690413638261800831616436e+68'); + T('-23955066895875385312189828216196343.2', '-0.000006008550114741720774296140761236324588', '1.439352199458576433136766578653842412823876234519218069316485509338466016e+29'); + T('-2668354.95894041993791850076178801129928639334916993835', '2120902450621765046861513300898', '-5.6593205715454758964489377686065817529188126202588690397558408061055411762596596383e+36'); + T('-357473707639070742000106223385951624969553570180519146672', '-2880014494.9', '1.0295294595461685945268041406912380369425230533019395520223390959728e+66'); + T('0.1576', '-17946110296096494652', '-2828306982664807557.1552'); + T('-0.0000018223152394757689929568141403865013237549366458944677798', '-5052597332068.33289300934043046685446478', '9207425.117162735564750314224408158434255360168962984445546645230422805472786347453701483895444'); + T('-0.0000000000018113502438791982724283161334170828780578698749690297210', '467569918734591161565.975984', '-846932886.330478617799083574720382758183324318393500300146312171222449646868220464'); + T('-43456291089.3917040495022986696', '0.00000000000000000160606215298685200471957781912132661', '-6.9793504427851792555934505781676792541584728405006755687190078056e-8'); + T('-850368', '-16365313992958404661804115212963911454627853490846168779', '1.3916539329564052655449041845417695455848978517303874852260672e+61'); + T('-573001586626626136559291430.708491137026124496587', '0.00000000000000659091710510594985802988231762972361602034', '-3776605958550.27888864268809093797447339962539247097589384819969254713146626305667085257958'); + T('944831849965628473424387135285.11628879031122854553239231', '-9167656497046734408050.66645416827001933707275561667810469', '-8.6618938479540792582928343057162520481532362870957700270661322678213334143541246056098522215623568551067323309339e+51'); + T('-0.00000026160509100', '24622004042950607868289417294478649240.52229821030', '-6.4412416082584616798891690256590608321239167108346686373e+30'); + T('-0.000004846613578004694945875951019296774584875442', '1', '-0.000004846613578004694945875951019296774584875442'); + T('0.01331120519980531178226823546536111232129742873981595748', '-566030091005684186432778.7962173603', '-7.534542690641137182401329425400191730488017551596028318788787538488664119896612542640044e+21'); + T('29160798123715526401', '81.21430510259265355460162080077758', '2.36827395585454415364839027902703656652482945981888958e+21'); + T('-0.000000000000000016948492474809672735628387832748072035504038167841614', '1562956864069228066615011300882107599329713429.314843972', '-2.6489762649129436461814187882951473845942013738702479876336587925692515948461245980490938479637262418650808e+28'); + T('12.90597368208644830150566402904732366667482473', '604431199603296.47474454963005587100955', '7800773154712085.1940792711683581731610862958146209226570359806010190800492344061715'); + T('-0.0000000207428179', '-197640319459879.188', '4099617.1562541003526838652'); + T('-1', '60210209731827764276966194255', '-6.0210209731827764276966194255e+28'); + T('4583913614531584761660.71', '-0.00004564661231066039596029736975879852374375394905', '-209240127628081229.8988189542842449222791835905813694075712860987268255'); + T('-79843798348570415955954652124494715927', '56861144183144013650375039269786414203977063811583167481', '-4.540009730027938310459807409573958130149645615816392783432439536138537446203669899681959169887e+93'); + T('-0.00000000000000000011314', '-3.526', '3.9893164e-19'); + T('132407155319180608772091166836747467896048163329803.57610', '-723665204004.7159777491682569458925', '-9.581845106573894955821546492296266642173629363834000697071816757006018496183651070616925e+61'); + T('-322521422170779513210597092315316261621', '41262058870589483714064.04798992976852435145735153', '-1.330789790863694859369204982948722773695665386328207265159910537452461498636765724463013e+61'); + T('45.38814', '269533555865235093537499029287212271314833820844669369384370', '1.22336267683091115583931011911520907801556615372327715913294993718e+61'); + T('1001606998247.1329297768570186489508291933755', '5.20052838227', '5208885622264.472940958083743279523476777800178015652385'); + T('-208725364670066089848651768887053413406981733447545233.37431', '46428363895460548499939303066133160314818660457470.1898', '-9.690777185114533186791052743948505833183422796131294760780293146823565795246823794373752025269078880430890144038e+102'); + T('-0.0000000000030479119204492183257505452809182072468706814247166', '0.1831953518167469517279635239571573090896007407998', '-5.5836329657315139902372580139052711078742199613978215448274609146206088053118483963543265377233668e-13'); + T('28.71', '0.0000000000061362523', '1.76171803533e-10'); + T('-76698670010634912042.111088324461002234771829964608794', '-204.3415360766065', '1.5672724045005890926079579860206010656480530112197034797251387577561e+22'); + T('-1524.1774171342348399240363', '-287256761224.40001067164619002', '437830268377351.631000336578138459542103286567115177726'); + T('-46386057531584301786849973746261104490857090', '-4.80529036', '2.228984750949274409036809536091615714528682827146524e+44'); + T('-1333480998557541026668203845446224930066438742734237449871', '0.000000363031301806973352170691602189509034079482081910252260722435', '-4.84095342841206873734133792646560873902386616947445713637359576061752353209536356871478780155826152779923290557555885e+50'); + T('0.0000000000000011328263767573913302830489935960640008976331311323634607', '86336988667731117573.758284472483734537177637', '97804.8180526097967631959070730320562045880918766169966194605514255032840380206192312923918439683659'); + T('0.00000000023383059155254587815392387016693739292933749', '-739769226366265.5531389494840049176644417', '-172980.675813593093567219554957028220425661619804809222561967458157553863975311729333'); + T('-6750356340240.984376193207629621761115', '6785896266076286.1666119258989601680226719364211', '-4.58072178839256802270353210343421354282744424281215396734873712247233250402922455265e+28'); + T('0.038352390', '4364267397803.554078375378060505', '167380085304.84704939994306577393135695'); + T('-3677.765452', '-153097604617851523106898348175.2705689839321002774', '5.630570810474899941481304477948773393614882215140213363848e+32'); + T('3564276717.02076515', '-3724708.5652442', '-13275892016787721.61135498059963'); + T('163961034566390719', '13906850976432268007907879396507766911641292643', '2.280181673656455617109020414398350949017013169011794072158180317e+63'); + T('-0.000000000000000000097053790888310241217758521607840846169737665', '-174167724848769605456951958316132823954.290613019997555', '16903637946965240719.160592454311893126986143375067836000624105979381554916207439134564513291409075'); + T('18174121469196263476021234179885', '598847655451717090028982590433609440', '1.08835300317228983812760587141239606682288560521096139829987941144e+67'); + T('2862482160141173353.377689153266444043', '-2.5521116576031457307341661427802694156525', '-7305374090577323175.0048432033414644577500405016939717138581879110681995830575'); + T('-0.00000000000000828251723257466281232072431185606927126573858797644180340', '59246603229200010807575028.948615845949794986267082749', '-490711012217.3627547204685981714157886628710287556950766147835640216213833020293343764393555822441764905895466'); + T('-0.0219725', '-42388.442458578279694893', '931.3800519211112505960364425'); + T('295211627171624947864455852710547075994077285904641205668', '-32114221914552039416309', '-9.480491706745564194049269607588763971795849392568309012222499652763032742439412e+78'); + T('18076895076744235516275796550556474017044744513472', '1110616783295453.907507694897679', '2.0076503062103110248911265925095057715921072859968017387492670202835863677031488e+64'); + T('-30509248597412319207476984175234018573.80700', '56489216853846845634764972404741.4102289', '-1.7234435600671472183595024375663260504322309432173684665884657236439010994144223e+69'); + T('0', '-37.8349097', '0'); + T('-2851475309', '21590640', '-61565176865507760'); + T('-82809184867575581.300036713702885747495702565', '1983849666549698977150.0321478', '-1.64280973786792195412167897641267648031706071732558941631564732096919107e+38'); + T('-0.000000000000015392923450383', '-100527447118222995497036068167.83978088878', '1547411298153231.68196185030647190431319404613997140274'); + T('-90815267.41287893625890527712', '-1377.468328268', '125095154584.42972566162438210224966962816'); + T('-61531326072626014632609689592827828109737644', '6514.9664391', '-4.008745243164772945370376441467418441994843425659034804e+47'); + T('-0.000000000000000127087490497875', '0.000000000001476615944219678865852759023586345893215179308071704', '-1.87659414780029158895646469218881896708577129747276999389159629e-28'); + T('-500.0464508771550', '3031251990944702206548861174233303005657140.843654', '-1.51576679978620832480902504570356096303779609394637710501532437e+45'); + T('-155.3658', '-1.487280412', '231.0725110347096'); + T('-7246163852901276.04365667671658743999435118996620258393', '5112736623675367552557768126133416.065405138439108', '-3.704772731188096277860254002053708999588540456247342592474290019026821786006110036086254157751656433444e+49'); + T('0.000000000000006689933708640329486606383032', '729332114805.1424421852307098335222592037429719271268', '0.0048791834996288611343551405747438154907187127049172382481758395023666868320324576'); + T('-1.8', '216561.426678096257755924379012116313', '-389810.5680205732639606638822218093634'); + T('-8058045.0444', '1329279770290237732458883752.79771', '-1.0711396265608420509738201250987261701168324e+34'); + T('-0.122934172485398496827140448263042340165490502305', '912702090990315108628442662833971663.8', '-1.12202276281587270916014575371637467822687977597732727219667936221931017460398585059e+35'); + T('0.00000000000000175417191262247437274343236218710277615977753', '159777383.0958810142116283', '2.80276997699115404345306815091460487951017642480659328034789667052099e-7'); + T('1.832596787409', '0.04233218045723559484149346857663058272000354', '0.07757781790994800381556406308518949782645811636510742786'); + T('7764032078986972842.005528691471157135', '3814413634570635467562869035571042157068430937090750616', '2.961522982133170619249946192718193418202399599536127455799771152758136779037896695123404516e+73'); + T('-17135339502484788763', '-115136630978196546781', '1.972905260983705133684367626946832621903e+39'); + T('2732768992944344069188.78233921094751884724609431', '547802187776316166043551795761072525805362767.4739838', '1.497016833022191997667345517507111060165004561416898656598340429974721721725596504177233879086212178e+66'); + T('0.00000000000137207147854597410975017122036947235', '-31922289389067969062352250596.5480447', '-43799662800630948.884223648169873969145520154519727429336909041963214045'); + T('794.15', '17485441159196003764239999', '1.388606309657550638937119520585e+28'); + T('1.7375578177138444239721', '5', '8.6877890885692221198605'); + T('67346906173389358', '-466873.6162827458603696333231123965906193638807697765', '-3.1442493630625071474606471872766565213027787746877671241569093138487e+22'); + T('0.00000000000000008330954900095391223717198750270140816415917', '-1255116.84123905597608550718171171454784329986782439', '-1.045632179871276258673769748937031166781342825771332297107555550761723897353461461042815681563e-10'); + T('-149004811516278801454193569023908186952042538093822927716', '-397664736597845838069915', '5.925395912343267570007772381296883214350181601356111567003076787081507599926414e+79'); + T('1000073564757252670366408149537245435047377806404.1015', '143493737303.17', '1.43504293385121986151561356719338126856345712035100585929836951755e+59'); + T('-120791171186.75073588795', '-3356641846898638185.78959337380788876290302345', '4.054526999413445597874488228850145076904199735090551400294754224275e+29'); + T('-0.000000000000000021645765186475073728477012180542023658755317897440133896819', '-2892.41876465002535699255875339650679491474379', '6.260861740056875851324591106893702672467555630128663303516124593419559504118801178122464786716968100401e-14'); + T('303590.733684425609632655982112479958446', '-1079042632393906270486', '-3.27587344445239960885966209642701728797406978059884116224756e+26'); + T('5560006241690.3561204958103356609', '-26134.5', '-145307983123456612.03109775521732979105'); + T('-21241252966066639793327', '-9918174602168819276153472753.0892247103917800902408030', '2.10674455686285247587982556750283161206049081499338374032384978521582521581e+50'); + T('0.00000000000000000011710898531900697150827118078795784040', '1416082645912.362', '1.658360017906513490504921316067138338281826491830248e-7'); + T('171974954737627841.3571', '12776560683821406610094.4', '2.19724844530274182316145798323728537865511024e+39'); + T('-0.00000000000000068754763933835169744516274824757850275393656608356918004', '-6.09469365736868', '4.1903922366142608309254800108912871683678914634852117466941692915771472e-15'); + T('0.000000000000000001400696', '8637225390591.816150963722258184', '0.000012098127055700394515390281912149296064'); + T('-360824784680774106563254315862091.5', '19099425092005944.36343728914640', '-6.8915459463496190545354254880571561783649870472046644721536956e+48'); + T('-61.150780875663855271841725817415551', '-0.0000023333939193095575001578508180794664583584954721238120', '0.000142688860256305217839982589618557627868898235253332040049384167607214599532790926200412'); + T('-29783331896.867208404770028328881856', '0.00000000160', '-47.6533310349875334476320453262109696'); + + T('-838472500998941781878534497598346150189438395681961909493802795126225423951505690327678802846577883568622319410118', '-2884829948773734005744162960155700874127.0681001892763437635520740604769472972181496111013', '2.4188505821049618555759179210300843443018778137981932674088381260022683344838428233063800820435344194302980110031387348601685636929132993133036482870813353080292469079495502993056630049417824321203429534e+153'); + T('796691.919974655750', '-344177691021', '-274203585471964324.87434102075'); + T('-0.000000000000000000037241136189493487515236242635317406', '-236633306915237035867656873537286323242534.531', '8.812493209800553514615822924219854143174591731693607256359134469397049100346586e+21'); + T('-36918999197803067902650019640975752121441727061986591604616945161242737830954924822209930.0610216157567', '-630816248640.220238311747288806', '2.32891045775094316018876017621573827476363455570577127733350185252461212627985116895575049148402627634872854943933909453127151295002e+100'); + T('-356285686518395271578252895087932787716516776378851836556183.490949109645090654856023328687155015449097603555460351788748359722414863145', '536192552176752561042209607723742909268910764247931780563.2', '-1.91037731558344763167084704445859558938320679866577929319697485737868113003820206731226346686676150919266490086231386325706954806002421869189844369048659180671649946432503759091893660299023264e+116'); + T('-10868240043.323', '-0.0000006987483137538548533133640114148563911523216092560534998', '7594.1644037440686677326890935142678911031312404730399664663577718354'); + T('-0.00000000000011591017649385438295796980510866337031921451760232710693439920068628049494341909991139678975519329366780780539554769715433124600', '26133984739171981586185319', '-3029194783605.121387520277919164440375428744596566999709645269433197968011145816158998774967743687046263521357854521385482216635698201872145379668177474'); + T('-1711273540905209744011506141193.37033113722759550410761924564724', '0.0000000001293732763469758906747311439702612890496046217356893762894231050676460791112722303394750148856', '-221393064712797651093.576041646381279748254325855686348423517448454794870494445248164160406818767744894597164595179089851596941716698075867505673842006555744'); + T('-63062954745.8598353024049107700099585768452939988302739544094597635', '-0.0000000000000000007066107653369429290153271704760473112899492658449746935736601687393998875372553088763481649809909245944916440347928986666226', '4.45609627173810154902373805273164378070520471666107189671611539018934456392187448488034184668558120645401564953529878995106460890572197110823797727327567501341707822274253599872751551397551e-8'); + T('-0.05396306543212365254900360568584', '0.000000135925517648212', '-7.33495760274574245053942000380666682810971808e-9'); + T('-51311181621759783527978578699650628367670018837603370537970304306.5', '-0.0000000000000171073617238152543', '8.7779894447982604608252727389859997980275463423154981803549625152925376395768264295e+50'); + T('780360810680597937530828803485426316757997822572046380524663475663587783713055764905934635773988266249773631591980851269802869685048538490187809566', '0.0000000000021114006241457087', '1.6476543027298657092509209956166007749872751971298560901265194443520620935869459922698982198083609063920515096925628739206594316734184930365483909751507976717094242e+135'); + T('-0.0000000000000001558591643933212408712480642149933587830724439341932663613727360989832586450936995132509861377299507330923270242750447693180038078839868789871', '-899234589140276920.9563731186', '140.15395165697510406375504229464266777072446771644043491265354600675571562268623460258428521212930915552512830838365872392420849552201444571287189837930690619037363617006'); + T('-192128620208427347208760897481755790502927310252099946847941391701541372730741701901004842683652084499599551669587901.095113423628696460069833', '-150027.013347965686304316841127', '2.8824483068535959518771144524961420793873335181555629802553828843970441540984506755823649963472492988719283593979140183046911245632653583841810467259116227616668386421791e+121'); + T('-0.00000000000088119558575179620805745334627526', '-2342970366196339369130467230746566743437618438527.293007742982263818470063380858096529305084867946540343494845177603781376', '2.06461514423948373213684382167619940227586580537675167441830145669955691286212463457073538034124876268856699464885544965251476720909351479389090095755776e+36'); + T('-6635456782135376051461227670659894416124826680462504047183309508524677837974389566804395212269550349799505694436932101464692080338', '-36033.774951979165187136955049120300', '2.391005563910499861359276356470099138701070047532575485529233046218042255556441673237652214828582412128576389116490428262479007258867518065861096006448051838266614e+134'); + T('1.0795693', '-0.000000000000000006209261744497244037804821960982585015091967690457481640260325487223225820327780029749670765451353356', '-6.7033283550236685978221251810425966169333249952098001341386914040137368425931872572708312434887817265895708e-18'); + T('0.0000000003205206100151839365357713821428922286825107015046701389076172910755564034571464044704259976070021361285911146439621197151315883353504731', '181280954003418224438635307210393590651533286700798186230089972712042801144671899167602413575288941132381001', '5.81042819613101098829202896183160808144566548341644020145672547798396356491584355574818346795299101366223635188614907521125965341055497357077467758341149862217405975928504053356664898994511933823140023871980627595465353142713441016064148015731e+97'); + T('60.273280', '-1948051519028114.87884169', '-117415454660806895.9645912570432'); + T('-83193336723730904831044', '-8597513002342', '7.15255794190492657393641372686305048e+35'); + T('-20357731434704594485933.435192883517106779904094737872189392050585959795325610691798979690389882855327158774541534046886050', '57101254487124.26556892385946827693467498483828207557125700861375680904187175758285473565759248405589101', '-1.1624520034335964384881547289755586531335208559562766632031511288008463494925147406785220580646246607391536758053170339436847553410796246157934498139151632371860559137134623242512914876401966834601783673486087092780486894105e+36'); + T('0.000000000000196393242447331955075189676455271786947264076645295021258862881929479958110333580', '194877.520544633956108976283205922142563827316236038257841914758325718909245819798140', '3.82726281398572106089641076236903647054748740721743415697957940132522454065934785001420361718935697399839562856732355534966588993484025198806123215220764836635412e-8'); + T('-8071576425880681257819461150', '-1591541556785189268475083517665125202173160434133152.98399538151538621882421945398094', '1.2846249310556773308688003659431424152963795381736069812397375172279784904016650744805487687134414853173170481e+79'); + T('6215707454580399344821610342', '145319540897984402903779835609411326583090144758472486922947576644983828825850438698150473186142966520100265693', '9.03263753655802873031730925036374079283112281131923966584171630907427735951790460941752213245331152538824074995769485027917034562316597006e+137'); + T('-129348079468144673220614626836759706', '-88248178940421789818564716716211678654401184759743634646878788943183256531349288163631708018145656009375447214258101552585320093130', '1.141473246250472885515118898707262713605663944616163164881785239559268827685334536245384449464192711247404249908389352393586709492073897298343118518559610042335141978e+166'); + T('-5780259200186462371596484655187034250137478170873403737601291296553629304246338.1', '20317804349924669254706871559', '-1.174421755212405947511968636545739798982946944457429152629522410545955272538056812944623926565594717327880979e+107'); + T('-774.0', '31209403299230592237921875076234864775333333322171087161573695825372946329.47956111641', '-2.415607815360447839215153130900578533610799999136042146305804056883866045901718030410134e+76'); + T('-35300012822981309972161307966314653.5746532880996436', '0.000000000000000000330318102723213448', '-11660233261792292.2796305229097940998500752778977839907195278155271328'); + T('-372377963884127526301703864441812802765174863559283045963633022003526893443086066813180.3717468998054326701855782319548515', '0.93426382293185456943254764459757361885785459231935724261799663689196168735639052920121741580138452492', '-3.4789926011396505505944781064660804224349193623867972766690000964018527357693140898258100416659583488178405935796093105315794205956790824509036660608118406568210299647359494344226952122917410385314738577518950473221664938e+86'); + T('24266165641723085835767787003697599948414575.4598063181549354935463146230534386950113305', '-114046436224578769506685348541641847469702436631296179876858707928490406027412029206934467.22255852787626', '-2.76746971227383645895497368320257172653365323571255355106207704032170926692669369847993108061766552826817226048614230592101594822309797349385303976310250855456022415694582167365528080196393e+132'); + T('3296856412996342216590213367517526056709903701721644610.791416', '-17873043539632614693589701036988.4471469786937536273599351623416309394', '-5.89248582134006296943775735259576640781981176325731275908604121314963017378308625998703430431944837580972601701118670108255361904e+85'); + T('-579102350347312720630005129054780607559620407558223441199264163920137899902249163147321939579047776302298780448678174736222915', '-219492399337234160290652558813948662413370806048542871624923.1888570368753037439767245955297245131205931820059590', '1.27108564339563247096015910701131062607103942871909341223369812880561545119021551254208157534581993545107836369462180155951136922383213991699434467561508645543330227906067804094605876984754845169252387320636979899325902200224418682350485e+185'); + T('-0.00000000000000006163518675166495062601637166684339458092498600493044751669369089730774084108109728725760785705955545530', '-0.0000000006634126736829635005496725883566808801526308721290044433770358933738076656970776547028344255382880585757916925487', '4.088956403587081499616844261176845350066362599955649570127728925758519680545486693543687506509190342330458809847232254048349532057461695086500962967500458536634636810198879285867211023138454828380781894359544592311e-26'); + T('749330908047468986174543866383750336261268464649133307531895834594094676053587911029106522535833685617906328029183872567352948262609142814490', '1.72', '1.2888491618416466562202154501800505783693817591965092889548608355018428428121712069700632187616339392627988842101962608158470710116877256409228e+141'); + T('-135986987299837104129797979843691621285208421388144053924300522288644.5900287109133895483', '-17962494534979782634275.37015590780316964667993394', '2.442665516201689090665690743015967257236753951326674341795336278365795371226492213646697861453424431171591440002808134392672856130439302e+90'); + T('44006442863122570049153802624466247185058307274072774466983112669894864433785226136933.2', '46790892915789.3411524668861472382045424537291525565291001608139420856967742081828733644952251814', '2.05910075561317027401508721128826736996297356066394448240229549087424917958568533386066515904891204498637800861760830895225068854234088512703986966936540011209421699582958756520968248e+99'); + T('-0.000000000001357086727370149233250058639705046544732320894727648668175942', '-879468576980759082.033452675408474697409162575095118715838878', '1193515.132959700504049250941775088529954670578739886689678357661665327443107825618722158521731867085586347456416627873076'); + T('9809841.727201839210709', '-0.0000000000368880827799595678609037922161591383619613563735115949331671506211385891506096678952335776345631106186087', '-0.0003618662536913229896876574465145932640958294417169072448132935373449094813864973395333355003851497225742989014305327367357205683'); + T('-126.76', '-302985778493402807197323438', '3.840647728182373984033271900088e+28'); + T('124867100493.457541072094721668121610280880363817443143804305', '-2790.963779772728898849783002651075720477860575346862492661675565992697657575735773', '-348499554762481.440673495837344907334116857684623288727299421812123101984255650489865544241755462317555675735472100548275529499295106699902765'); + T('15521419716240482198113978224037109244552806478255554247304501803343108406125114544385881082700492397181091385635182384771169625695908585249481', '-2836586261373793936479454372136.74149007596046739828188227468752645', '-4.402784592410408295066853625044872038760273286404138338015606642746110634158840973424236636715346429517243853338608937452735485971423525672323975187535426255868008698725535902235665305652922137074089203627245e+172'); + T('39568702947499980.31043424352839120626194373', '-0.0000000000000000110532060314654733243303464490568893422715164279635383512851140023129429730151730074105250113850458826687408847800122155909183172465757401122037579', '-0.437361026076572434440085826634462269408809302675686544261100147571961623746441124718245098250484230095790472367852085991196762852617202769222972427292049884929603478563067747014298264342967'); + T('-99609250253802741981.4964874360244285', '883485457775161795418874408210783527590114513274007831727657306342804460473168388.873823683132057229380427284612779592765741821135482015', '-8.80033240591215667544412145489909369089691076369957723858897861506204032139051216834675560840680969094658338799237500038744626460350984691160948888063757133290716624034275e+100'); + T('23.384657', '6358331922737965853097929789343578523627007160605428122392114297855155.13891249819092314840480065973772043562526917541987676891872705', '1.4868741110537783235240747553388183892758395838730184898029361236013863860525612320785833880636058134030234898750019986664922343269294087185e+71'); + T('-14723458729544396106728.8730102546343094999696645194153', '-133727558.268817344562', '1.9689321851736756223818822532522079871040093348444209468925006088388745986e+30'); + T('14302541264229922914', '-0.000000000235627544641501596076737344190020766746331735586147665546911192908467378811964334722559869070841801090200096029602404948591646484821330808', '-3370072680.224254836492035508073157091195119213264445104738613033613662085628770149276109216999634545944893478819818145213075837742045845104662438460733334512'); + T('11859540992913956563027495896462810455142079490183890981402926486193538086518056969511874125054152356620542433.487767032922718042853047303427', '955192395684300504821406379834312349326154.0693', '1.13281433727376500867653857943948863816132096768226862985682668025650778093862402486711549896946612114014654961667306187363301784449098292029152064116984771872264804563492799411078854911e+151'); + T('-89992.89188302466393156671880484242772885323991845613962309150678501746987154469202208826173765453391736170812306681487216203314', '46028644449145217432303817391775774045082825030.2022387362122235067512142165', '-4.14225082343410889148864685916871924839200546263861436771489245494114989348152499951206927264038619116817258198774738485287373362091029303295538404627178066368057815540301560861820242440073822631213481e+51'); + T('322550604700426997899532770743249875139977021368583.850723996627574052487902691354294316078353979975', '5051247930821098558310030929577132446128131203947693097941889018946508950010.817010609850054994957659209938580530674194319', '1.629283074578125979757678549954520448550932971582730260571009370631223791910921098102919850864213539220310377679206053786662498134329234965312607315294965577812311728138336208121595820208987331544983981561498920184762025e+126'); + T('-18162869148539225267245', '-0.0000000004082605569565299430913769521458041940383792216884928840151413981544379047647242539071550738140637320695619458956310444200164926', '7415183074511.198888443043591378591772024538336265966741297786740921169768779262078997101641290939777807031074347273941892988987901012164049542564887'); + T('56.437', '-0.0000000000000000363636129586261117394059679281224058126111740191432401889546', '-2.0522532245459818682368546119594442168463368281183870465440307602e-15'); + T('0.0000000000000098328737846670488651996142598', '-0.0000021680510741625274383109785118138365114445962436956704809668310586255130207174432385040177431879924758023695894509584', '-2.131817257095195181206361651183585087468603124720413551197211179755387449478899738202568963063585962944228052493622001429362279056649894941659232e-20'); + T('15353773892289910580447352912374084465426576602840471898589013750906506890933921327042063374884073.37459230997064', '-0.0000000000010024383418176318716576007775600816833200531168899324061052647625728403071186802669732334255658386493460274446', '-1.5391211641229945537862597203687187815529728355277111549164845611017692299846743962405790219289790424490140365517893874940113367036665712735367218576203409806863531895103340714121294126379877846187972625242851311660226544e+85'); + T('-131317855179200803975486750.21706572131621841705391042457406222193797630804760305734762283213938032', '0.0292170474534535827560241963251081294772380763588549279699135998743535144719442580701100219852823099329042846816782892289228', '-3.836720006256455223034915613925802473646371948151381349060669000949432685656690149745351896865724762974757845038322594373778118540209910046753684013004635293983638022635663512882017379734293615901239976258135149413119296e+24'); + T('-1.2652', '-11354', '14365.0808'); + T('9907551115374943050635613568695786302517118070997561724624950969636860315016878905709.592450615294116872101107020677899332545772518264112371602200', '-1.4', '-1.387057156152492027088985899617410082352396529939658641447493135749160444102363046799342943086141176362094154982894905906556408152556975732024308e+85'); + T('-490.0344807942463855', '-9323932874.185090992679891416847', '4569048604961.6964723167091758356936009232035565185'); + T('3604969916487266.77582902266201875313967241643046258256599229303814897912723083869145048', '-32491432188732331176981674049239559807795.05', '-1.17130635583966083474238734587571010296057134092517034186160396265057194098968738205898514560270240397013328401070407840495064124e+56'); + T('34703234002309873855644196344429559904012545590136.8731266774035', '-30509195306542390332337786607824589011847240852960.400475884124826629604413425289601053748170330700373748814', '-1.058767743945114695217780865659236851886438030887854601194770945013467876376008466686358099101594157300090732314055284541644607734865797363613111496055241101601318724449e+99'); + T('-0.00000000000000000001846850219978014536016505660530611315774081617188936233750581313204111802184283556512413812', '172294.1773686139898820857102416866146212540421600646329719718', '-3.182015393741558008777043196173134950988956232467393142872076553361750999454632625636035727486190076054675229759462180914335313087408443832697591945016e-15'); + T('-18106034022632087299566240966', '0.1062593952762739525593394732713320570280318748229897368327', '-1.9239362260965274886455362609833980864707868629715502819707822658572629454695338283882e+27'); + T('-15954726647545197343337193.777996734931237024726479085', '0.0000004481748063179037', '-7150506525118665829.3250763667151579960827175193664627204716990941145'); + T('-0.0072925304890', '-1691234031.569314001265549', '12333375.739253610871043600667823461'); + T('-1865227748847755571775855702643769331381101998226093529507611331692677750602855545329939048493285354105512957820154901.7086', '2210049489063501217982642732440647263267341254731067280328753568541239370364.8214774408688801128406378268765465307868425869089870377072', '-4.12224563332804677406698803644377193820506176786228016964994619508823923498100669710299638948960004422089468802904369403398678960200548365227202005570666224092394691081191293375038692545892613850007520900934668836420552876480141825643798919514009790652192e+192'); + T('-29657447.9015389403059670276084073033511112446764971506273354986137667779619286113465', '-1827855316102176003105358531801341705072592351.135', '5.42095238088512761081531495719462889138251775255086295922416345110850703827501143639893274817453208270263341869965571991680731532775e+52'); + T('0.000000002303893648170578350944498774746492391128813731693885869943488294353601573494998681870582486295872268039945356590815', '-32442262.91320156091101969855721550263008139081880143903731313592785661221100831', '-0.07474352345800499923522516975799224318500890706048459253531640566042618663498550717397089326803150428347426693483873444675443808499665437424291063143582928567184402307096634148635840535523467265'); + T('0.0000000000016576004870465706885062', '-55848857027244311015.8188471734270775276780246873885866419886637427519716023962487120351937093495264631807155', '-92575092.6093544619318438795137350300013067044584954352726853911684860351652174681495037636300286854678776361173457113848293421861'); + T('4060428408888.0232603235503282900294503488016711959024243468046984749052603493273497544632749564430853860097672053826937821420346478', '-56342167050275452604675195079699398.2675991078629882729119248786198064047635210295605913955475957472202624', '-2.2877333570925316685876047368022072172371889058683599394540501407358757119526517889443532452252466779232915679501821225464672490791576862382231853032125642473217365895411111636095821515831491602289971848581424815174345498160459900758272e+47'); + T('26299685148174659.21498806517835627517278416660123809400463889', '-0.00000000000000002810938946123709113663641801589824230970112320150509166', '-0.7392680925379544113700127042857131426674666337496775201943962811858815880839349410511049278268042443619259946506574'); + T('-0.0000000000000000000237245065931924834498369898311931358407431388348456381998654995741405648243043023156623847512508812546011581686473004618459451222129595962653', '78470.0567305612051127506377842349815403261', '-1.86166337827238752251588053847936462363465535270736342476553827797069992977676755247798085804488792284146627152984361709483184324719876052483334166262924374381677162633704456690411433e-15'); + T('-183824463031586708', '143807363604069401113874611858643135635193494053567940110697592615174793997761093.2327486120912246439210504605813271646434876', '-2.64353113945062034769011701589673384301679059470040712450349324003153646920125387527703799373682836286840975022033298195495859192205669228208e+97'); + T('4709101207483984726787440699170240831795242716.2138423114488136479566547686742376976336667025624304570806054934', '-1', '-4.7091012074839847267874406991702408317952427162138423114488136479566547686742376976336667025624304570806054934e+45'); + T('0.000000000000000000038532944598313834956548814879372', '-40661.8380161978165598078232608918885279594361853172147', '-1.5668203515437617982746501980121696087743512254235020270033803551407710522231355251684e-15'); + T('2334886001264116563500830341789350499377618860287461405266703471620193083331061.9777697176990366889825738659887530082768575891812891822435971810032332', '26035538.8683211892476845585304290220478694825782227287031175818318794980679029048408253481320254733533048872460665035942196191856378829543', '6.079001523901094420088368729082607832663817841432796296671692743644677805701345873443864752415327061436957752682222783317280683048921810139315200905217552914921575411464462577484189557662106960763012918216551898062340176680217599395447139612485659290222974247963252522982643623146784276e+85'); + T('-7778469807.563', '38672644915681385296338808681298386088589', '-3.00814000855232415447033790891667731035489355100198607e+50'); + T('64622392353741.4865906677596431143150394253242646025467', '0.00003378584792447508795371328648463423391931923728963301558475258018764078318119181', '2183322320.579271598509382338738236518894882788661215479990430711558769726756727680434235068590712469349522851338102909922320467182527'); + T('-0.000000000000000001648136935803060530512720919823086792624816339685214001103485134801966927382343845709538610434741849', '-4391532746732420685914713997682658712351988556515487377264609238454668698925221533684202870806667745235943356', '7.237847324678369711768998633093781574995948295740118328002527697546317476553671589822452609098233955280840336196399777925163783629478472302267347352300512328538053758750290707036775767388047947510115846705244e+90'); + T('10333000414188250420538344710287739407808614536951039.810025625233444425363102180125538936079684897578202747788108257631148570', '9335', '9.645855886644731767572544787053604737189341670243795662658921155420371076455885147190596830385851889252265060199058498677190095e+55'); + T('0', '0.0000000000000601453886227057059980502655211529623918792629968455990334450008543269999122651600055853233978797789838530557724224959611814658608426039511317644', '0'); + T('-2297750624251138979504978190262936680523712405752289172826124262469129120913490453904199762531745620.96952540734690968359393491107', '-40416204690650952371389732084289462889292036515283404683019111928741464.2687913586781776783223', '9.2866359557805037179029429569778710628234868409496948754232191472442648400693401233340833685175058579432758055493241234301333517014914341123314199162326187649292261109846406979086483744843709435080273472996954914317297861e+169'); + T('4343355589964158622184590891340741623549153108779.436816', '-0.0000001064974529896251240308460910120111005761688204576301219728', '-4.625563077594334790148387774508543628581450404563732480957583510623242646260781687362461885461530966385708706048e+41'); + T('-11563484501688268.66686509003783', '1322408781913756518185807148018074515.664891437493116279057', '-1.529165345455618514610777438327506360176848752673257181206491978239020817017600896672631e+52'); + T('-7105422094.2179667', '30559895492351516.966189644412389996', '-2.171409566283465162387924857949138932897137105411332e+26'); + T('0', '111016869919462691384357858914534606927438531477.1293238954660357640541427103317553925', '0'); + T('0.0000000060932574133709382983', '-22.267165855523514466854715520800113116277499916129314878467293624269528017916046898922489352991777889888803407846', '-1.356795734239288861313869942530919648656125995428613119992994317378914675143711278820250703114800246598130872149242193747276361084618e-7'); + T('-44333.76', '-0.000000000000000001470079352177070580940', '6.51741451803737246384545344e-14'); + T('-21357371607823146.894996126592622902999367699791992019397626730636288058416175548036595334380731548047707750374539844136475793453543167632520829674', '-2082610833875897815259749572708491274194096.1328444788624505568347915241817370559885019276541831998071798466253171806140327187679310', '4.4479093493565988402652146155895503067864965364415050875276153305362992271006919883790488712645218749008589188930440013166012155736226914204651235463946650075417869390037652928234175055618130254249241986895815834958749240488411354040161221049340462201305247819550627184384494e+58'); + T('0.00000038779', '904315692695033441415603523306856029010929442362969497588323373295.4261037009085085062076151428035395486146494122744116706', '3.50684582470207018246556890303165699490148328453935941469775920930233288754175310513622251076227784601557274895585894101741974e+59'); + T('-108092399126602892192263936618253.11634898323699426667272696837431678187861415020697', '-10577768091951217923840244460858974390254947969430786022673684947578297621240080038309605361343066868902863031903186141346699486064112972330793516', '1.14337633046383576973976076259460800215089889515619540807214976204561990493150424651385392676061643973011767877937603525233712134586553308518682088934561533581793269433365489470332685181218952765840412804140387512176915573400652e+177'); + T('15467641140816407251201603.17330929847758676216749067445955101305983585263772950', '-577622788567995038.889222735426051145123753952194531865720030753211409854898055689387177412129339425045834175708407053831', '-8.9344620083274171838850431285315863222279965262274085151307500736726521153163765171506606924039712216379344449734092210186563577666902614357166638103925323472931546721201173791263892223252481167145e+42'); + T('-147577569629276477202061028275376955899710718777', '-1836553374816.4194414', '2.710340835498528403441827678365194491127557859039387630435108311678e+59'); + T('19607260477306481515065963386476904146461.13', '0', '0'); + T('-7587887623467943790564171894728147122394166719543547263769028178587424899740120.3214878', '-0.00000016920971191816124290279600506057889818397766687630546391612272642869578133220841440723450090978526958058420544559571', '1.283944278834391917935678304507329917170307310293334436436941584511090251795678415124232910095377726352226968886370226267649132152891311373385442150371798069034937442982381537637461944916510337784497338e+72'); + T('2183744843588421584150515470170983080333529023791.649929295654521467545253432380589261845763800323659', '7388076664655153708968991031349105352802.87524801859750438051677178784807521032697033391834', '1.613367432047663606017519920365670781068592286431464441643858801885153492675086468494328491512664083724900475004088922960826586460789211331922609342243762356185315284210154800101939767600606e+88'); + T('47663056245673578412988857668839696666285127435258253279539956729954000870254229114622792532345', '346546822020292249515761823895055766746157088669680742020667195407870883898961673353876509569868596891010435068343.891429081941502924502622209358', '1.651748066971262047841009039410535405983991643212862547257807586948128858978665397570993212728686939913279771853555026022126342707912524337215453128506654700200787070955669974964782729940854858026583385489299889179192801828417090757668451e+208'); + T('-108127035861913115550264284316138800046955088009916843670136654902573526429629906417162564166515174290526454135619208.14401004096640476727920000', '-41876811.2693259587009484684', '4.52801547390097523332116417273670654479155983631591114406304348746150113439265113473586255636518700022503707400603551613864908028442586791089724406027095241367517728e+123'); + T('-22930937565270017519558999696163059408815.2103786274010528531899481200409337071', '442710909275310619619476456914560821720723777371027183.19798799', '-1.0151776220056066916079907416732180895063328275280083903607063874114903814021738290370272558746844782372813173058269500111226243281691977729e+94'); + T('-0.000000000000935', '-1394991975035345206923314783009363790456653341293996952.89914882995729104423', '1.30431749665804776847329932211375514407697087410988715096070415601006712635505e+42'); + T('-0.00046024', '0.01162786573878994938984477754797863400638858513306671988962769958859110982', '-0.0000053516089276206863071821604186816865151002824216426271620022524586531723835568'); + T('-1627.2108799123697489132363803597735986233989579218110364523089725598273552977977776687575769964049313924', '56699994277601502191648', '-9.22628475794822699354291906781040053919455063547635119292864057974253393511179708715340019643722079742642013165442036762906752e+25'); + T('-27116910291.9182040738629485', '12691061832825245519.40893289319955481488011346305686826840916092434155363686258532264816410801529729986396433852053976574899754971', '-3.44142385229909206506408450914121490994466313457211336682505249135405026892531659087017902656062527076358954643091265672241689615713870521464190780855919935e+29'); + T('74334146952185.622333564428648946767', '476584680993387873045.31749635019901122634977692103894159588456540699130081843563616833608386', '3.542651571212300025591240199136282046613545603127423889427355578233920699125928663269397001117473297183365853355090147038788062e+34'); + T('-0.0000000000157591044652124620704467757472117236708299027185378061', '825889432875054704437419479225672139169234.4648865373257367774758779311867911088245084945960951054201828797', '-1.301527784939306255868774017049829614469141796766685094069536216576279534218241902166490354194411368867404472498297448815923977414878533155578679521444041822617e+31'); + T('0.000000000000001100192990777212594294335234679657995433198981402645', '0.000000000000000000432645284322379079219999', '4.75993309304295726917904095312991723862503538234489037361811165973555497355e-34'); + T('-300700711.27857809815492793761168238841641169113962704371', '2796485968452997110905186933271347618098487118212692028161371341773219361074458463009437202075408782.868217914378353128764067341119788514123', '-8.4090531979437954393871330563049695911136868591602684229475806517303872799072423007746634357788114292441025309971392965563899108585661101482006280251358427683195796604902336825200320040807331633e+107'); + T('1001261567690509940798222741590486780493666562063067481645961.90629710999960001', '-1650177790476279206501558139505.7050853', '-1.652259601460341163039584257033432854399411843740615967044468360193262523967905931854751303094262379472596022930853e+90'); + T('110.8604067291480106069111398751254426097826209058897035561124403844051579732', '3550086474131605383663436798312168506354131157360313848273263892613620358824680555084478737815742184487956353593187968793241400.17721303537436259886645', '3.9356403044587676036027794309018622288005376717971688259462205139902681207884104868717633863448326626441423669459931832858572563749403841913604929877516515276589416960678197046131472363670530588356080270487825651541549947914e+128'); + T('-9565239171980107624419624526395838241183446774838567911610629737292737676405985674082492.7402072097442088866372528167684894637964203298148137737241', '-36054341543178006514284988556899580296546999631717365906312843826084434013452', '3.448684000487559907760299189700848766200218042465011401311363613150401470742277874500718876731897516621371622912032460093110240951501324564382188117403446347500943089873810691365498189390424553234241009759752460955435365932e+164'); + T('0.00000000000000021536749330373908821656161952581400559880285070951784338817932051856533596270829157789717921906316591168026012467390896523070770210560122939454467353', '663477678146178303688345264055398845777282913816.2865250058407981284027739848602730238855', '1.42891524405327413808513101984282436944310120570351565859962360818367363905163907249459291799819814848604018845827474322713798614022002843947155226737103321232324111623370722541558737029258436237486465744476494522921928738155070489600815e+32'); + T('0.00000945', '-18898734150623755402431379573.925485263576945358998697169620788', '-1.785930377233944885529765369735958357408021336425376882529164466e+23'); + T('-118155484782065759745414566117547423380595772557270766076629821949550123865.7556876205552', '-3222725953437374057075335595917494.78154846586409115254934373165610464807636269976395928338097797032693881785669329213286427799731102411887254283256', '3.80782747348138016629045371008871196005073810159724255259507985221047370481336261384421677347963935331112831607680385035083546977933094742953609409763116007720964740775926559725243391158892800768754854303883925126424611683360687837312e+107'); + T('-190628036687751797516.3923598265032797533714657001', '865709203990726346661478248439122009697620464322316832519149040247619305112126151915240.927219690074057652788651697648519684669722701', '-1.650284458992685868486399903806413990004373003855903554255634262462272823920733859164088044294272768929194834986945666561794180291325817436074210916748703508868419322426333998279701e+107'); + T('-788627400197335866651447870.157709244984248131980873718306382781375', '-86747290916497451031316747659315856743776649872846183098534827784400266496743256523741518237922.2996321602121937', '6.84112905096393537461269413785832954919219508550269374591141540623116216431585547212308389464605406974151833014851983606637628384743188851383796216195778432408403881159962523375e+121'); + T('-1.04017', '148558325637199565292759778627500454502992119749146789207503706844555418', '-1.5452591357804587183056993893496714776037731319947001572996913074850120914106e+71'); + T('-0.00000000000000000071132398470582962692145075368461', '387290994676565.8926187930695693123250251643', '-0.000275489373574019100458714153409095201115930261231849509402017099019195631423'); + T('215107310441729713046298412931278726261089816.7425287833514081638904884659853465814509169056957391447566', '-0.000000000000000079530922946391176631073888012201003836910614023124515004051787554271', '-1.71076829319466519842618108119001097767954970538486717238178897562962688286230746264794767938468573458599488912245410770935262628286074407769931453705541079989415475854386e+28'); + T('15.20', '0.00000000168020242551215734349782244623375617292165135038473086956135734916317120833176', '2.5539076867784791621166901182753093828409100525847909217332631707280202366642752e-8'); + T('53.7', '-203077092210298580698048848822677', '-1.09052398516930337834852231817777549e+34'); + T('3762.1500774483361388784232631064469116842540525321933222132260527508280723', '-0.00000000000451157562475195223090446528742025080950824631951180', '-1.697322458607458258725685631392223266464385065379983966983024481605281774480724387957456810916611803963822277644621467110314e-8'); + T('10153060082382209456279162718229817773.21414954173571898129540', '13877.5946499736990', '1.409000522801288735724123829540759783413794325474382601016313019646829496846e+41'); + T('18897399203675243.753780', '-1910633732732845629536812142230308713253202119068241546428657394632038831097695534323128365467560033377437820071074546249694941907476629', '-3.610600837946073550532020697653346279388929417890343273657708768347378585716753592761967644855725372607255782094846473883590443720333438235921023941358040762e+151'); + T('-227851381988110698228234897200521545909.8859817013555168022664133019970486786396950937267160151127235063398214239139286950658576124761', '-1268874936070643773798575676971891302001120798002567287940.21946823635809002112374440535791936322353876611612756137359816293380527820953454', '2.89114907753771796464127821062921785105163932083151495322011931184509082675890958425989774091841783969857985176854191074417481688593300580341868089326459718767784372087364119694552216708565314138516855049665928747274756209929360259354799135676979673768285573391477874494e+95'); + T('696500910829095709265254100912961.759143821807206113527355359619517140', '1114499552366341774527606900484796988675131209334791717032223696865951521317145662953110337604968236933370458980418848545855167865.33', '7.762499533417764961744733643290572565963244168792774190520762259732634644303990430873725013181100121300237274692989559835517257654859131921380793007417874521366460660750927680178271377182536191467562e+161'); + T('-70.10', '-2517567781055870080456863350280219592820297586247709916931434675762.61506437297379043545134128087973548639372915', '1.76481501452016492640026120854643393456702860795964465176893570770959316012545462709525139023789669457596200413415e+68'); + T('0.000000000000002306594150940581693662924121203297813803898269978979627841840215966618235769199313660292073294', '116992676693387498070382.7747684654799920318525566565823', '269854623.7638501167227065187659703931498533193140103582402361671530932334102659535168542374567463444185883703688336666394633637064104492276191430962'); + T('-0.00000000001181358510850947772334650728239469358105', '-481890547669680463659904229596086456299864735360996516824114722268856.54851170927985881751230609513583653813147810', '5.692854997882013727740130126310283585722443259230619411261749891601386990764956284506368357210347041750883604578383235465621769499444496072167018650005e+57'); + T('-1834.126675', '0.00000000000008674517502282013089240795076167689517217195581862368207764378830001739241505540256750749795374881231669246429195318071966775335388150', '-1.591016394368981357967569774740781611664593018538591570853258932691148023923957854519289902594786129196141965293563166090383235636747739390125e-10'); + T('0.00000000000035250317144887670812951006342432995417313795500599613972504272719157358113604799695738826228638715709865929871185179926814011340468405980601224', '-0.000000000000000000021272512743884326405045478763658819652652411080930898072232071938774490149150675831747076538', '-7.49862820690587140909540970755250892258210729930767016105970954978799195506491402524535800885748254897893970247659807375624928755168639617915215048372226158776475176073323855448724956084743637169140454360251047844711344183201584482512e-33'); + T('15721631316833446647076872477517236.12954053920703267418936679341513919357706705809389209070714586294463311338245994298023554035379477', '-357511350671198870300372232100538.1303938329586437211936443603854018463080112537158549352615274628829848363889696735642169838', '-5.620661646835744415086989091837302307955447632522363902002938200959151381457803806059537394592953324800087575638876011854291111449657686052527475421964247595605170282782797258746087685871582969776908398036007564256205557694516425413130055587991480013614726e+66'); + T('3253729487345424036939309028740036451', '41382.193', '1.34646461615119395163461615513962735242317043e+41'); + T('-53618931066856441239525329925922774166747059804.731067937979588616198646926180', '428.71708', '-2.29873515597039782674008800318782280462672325780696736316522303311379246101428651544e+49'); + T('0.00460104302362018630202736794501376789373696947488687556056401041393190634456941939438735', '0.0097403733746400832576516808174515324023665911967721621686382928687157274600680878342008', '0.00004481587696284356635234124520882413754979811951974130365547261171837147431228113809768987174613255553265451013766186937944499945070524997906900028884951249482196583289287988'); + T('1677453254494.8933968213578859249745170393218098919671494230225238019960047762641999542148114948195560618412253838', '21698.9831813409037769663882983019728670821859931084790618654907569761557036686614568057014715225588686176', '36399029956770254.61815647295605403222195084034899389723728455774968833742619776793560171529933737657028158467430352145406981302848175254658241102272245868058796169820204651822347385243123767173210904612588453433543488'); + T('-0.0000000002919695530321722484984277810687310403212039464661356722375751251668297055979816704921817077930395835966342868337436171143003475385582696559', '0.0000467435515211462536099607610605749574554406010634606838859023639329665349097075031538491899684093202279174', '-1.364769384476538686936225893376326381400072912004108048321079964657333163471060859282060687267616249897947560336772938595308007366926166649543531172638654882898076593187120930620811092498003694929915967620884049583354836924979303135355647162266e-14'); + T('603854611243120547.787810466452796370957795270702329858515593134870178861102533', '-1.443648977792806959560328531759843896504517453521508829432901295106075946137', '-871754092256603815.457694771840809554026399109994406269191599674109909866767981863687374560559981613911867626356905487893301607765864732838103294942265021'); + T('-40.440526242216028465959594055135360244752337785292869659524201380035562721496158514354001447065595303342069691098', '-6241679606047503379025590422716839198006778643413679187399633462', '2.52416807903868662768373787395500221586271219331254483212435251241310894921233219736835628583965316050937610054902736153912767627312787284137615949322472984890293258224764321276e+65'); + T('190202434.508038647841031698547078216727', '-94800.49', '-18031283990554.97275426724712779530301404579623'); + T('240457787673551.0553964370137451859068301029702133344054038041468987152326', '-113811730.49021', '-2.7366916924974332953445795236260775735980418505302834775806957412715746250777592172846e+22'); + T('-0.000000000000000037347671655579143058079422192039757670106144334496120979342554992077029390338777020220866582016017618507350840075639338', '-66002749861804986801728090866144973725446555526.44841912823309868929360696717462761165075411', '2.46504903020401430710916622478946584523872946340038310101035741960964095064955939570946178742591696202144017351188867915011670426023840138265647815988159839485263479191111855834656201283339042728373652808117918e+30'); + T('2217096250855392361576457107363.550101329506097526554933312928808962970058721968159857675935', '-119.02573598179826220767289082192322334412324905093960546113476851847137178273867550322447', '-2.6389151300054870078699458746934883192689259758705923255722692155151793736620554306044775120676679617433953726881548219320386556081319536307857183199189515857363954254037282212945e+32'); + T('-7810543038413013183543974906750692474736112.830520775223157129955459725598357936920887935346548627357711660362938363582877899220351', '-0.000000024840601734880447844125586432330812489626056994428818563969', '1.94018588950360699674928168207639163235428509329502583916963340815490425553873121778659312254666940895194771657722665285619316279071834113799397487954421488584967639435397144832420520133119e+35'); + T('-215969900665491429229701.3940073328175247468', '115249.193647', '-2.48903569037205758977126520019369452248876591678435796e+28'); + T('-4035575127405764517339706203.4788226338445902', '-88902309983026598393661019935338468232233526534344738519100289640088125353379283048690019987369761984422527235042814970844399233265479337257', '3.587719509364193355575242986206913087493287494035221267169492881995478618778834577094297983987290045033929823209982268817160327957706935779582674240650855654673552267470295842307570814e+167'); + T('-28499916611563776888621.53827878180215801449832746', '5995.369746918629670729501318845959128845800374147641916915834504403849426193388405031670359811808264465541348192', '-1.7086753784267317072023465954287299476765112854412427476967519098923744309002169668338318340958052443834272196779007400662171578997777665622369069868825749495232e+26'); + T('33940277567855896556536207237998924729047510555567616051277715731698465468759889055793654824231539562678564552090900045034922322.1690641489242517', '-58557275066496364264951120471607827120696885728717812654290030305387606748831.9183665907629793676083704092979597697586525', '-1.98745016937417395543833870238306804764880834969233299088069121150704606919273152334891301543693138976149441332170609730695515633779077917894486225657656974898750258313446228915338253648124299689091087492416283574756990938405638221490525215652696287427161316283425e+204'); + T('-0.000000000000000001047064413365314260621529874256953696906592212846819', '-434397528124418421.6091661017223', '0.4548421929529367773911801643725801508623453120069985877346513296252893958219763637'); + T('-33370590738262171579.39614973283917480277678311111671774535779751556185640913284598686491', '-99094653.33173767906444057476506', '3.3068471206833860362071327479835859150736781389077457604266441207582457927611004156098420714391130319622364115692080446e+27'); + T('-0.00000000135893504172734', '-145791096031983569080162023719458335233663720930454033985903749.924827775901017923575087659941838981388109045', '1.981206291696982245471792411246101316206613787316920816048059429054568140323128384390929922747612723701453667023730777903e+53'); + T('-13865781910.2079575101787283939774081870084', '0.000000000000005111340576657977529690857668009570333996738347099523635843713836084214963667601914442680495175289459369931831218047341605612305371', '-0.0000708727337047360947483712809665199876351338098500645907437129231083200095113355222531742276112479425377592938317792723399224219930646266745465349945511268888900466157421164'); + T('2221303.063062607', '-2.525965215750429650596003299885690890329317816527744727340100271151083414522167788474814497266651607680421514303744', '-5610934.270936028330697409054729056703155654194124398987862017089179613782122545869272030899868261055124767892056053009313886500608'); + T('2955433876854127435547184981659750312874750', '-0.000039202878947452162560625708217061180169183736624538113434241595982106528764', '-1.15861516511511599582586163812175464411359319256995079161567403334139282606046617827274676780880858338633660404309e+38'); + T('-1925003256423680784876.1957689269203', '-0.0000000000000614144439205338076312802493579740530216692609642343477458243733481030491978062242259372884320561187326591221623660', '118223004.5384771047512790006924893059325401413863133808621379188835488070846162209706362064697933581769897034762423998928884355927161113795649414298'); + T('0.0001074280907302126774691277050759016234153511565364175703838489020817316583420637215', '0.0001532977223327450369874510044074807629409774927247949577150151195776859623266960380925487660870709945455405380437750382992', '1.64684816234970840550538622604713249522114056250203424510426725871022595010818109545611749855873201375214405305332022403202928107807661566637499538331414567985551667985554396394756099731355830293824728e-8'); + T('-51719564234003853480795874799029206659495378941873129625597250275327964731715068962774998751', '466532423420562663.592331220126361', '-2.4128853640345274449820011797672270168670456082913030458542405572274060582037181131606130323033781460111131337883517837175111e+109'); + T('-1724059986073957512357853.05703381906907621063941826220185749299041791046931825802106508069', '-2665994918609117220274024374289170787044923934794140833582674324712895082643859871981.5384174394916234884976873', '4.596335162250476126397000620689369599669734677111641881617412368616916429689082558324657810003289232013968094235442049486840526116938235377972333081125575786496773286246190410954882029026469852888237e+108'); + T('0.00000000000002795129561961146401319754718204318652084938036308535981529129883306076220009274119013027424', '-367284334695386275069239735137863507066443274836293057467619925457742005840610489941285870890827991341527453.1239055840633353121379761935', '-1.026607301552306124313300154008632390701208483751483889410351517683637370661669822560424911336313305943490756696083944005783385779384493150385978269507423733524787840537586575485518520814488626005350057699017603079788874630544e+94'); + T('0.065024658867154009934139288250506881782640024913856247796477081504212332678', '-665460681339474763575385930611037367230025491535512485820105677925713917024055708892630604.560260598070556046', '-4.3271353793603226678150325769871841452491924531112895833715271367485564019397270216591883369859017756012808701471442567394097379898539481503530181916728520372454137708175982196271188e+88'); + T('-276510.208587680613648136603273411746807332340011833', '2605351321798093.990970489610', '-720406237434580367010.08789881220282603686585579572198020594015398214120355513'); + T('-1141731373426523828', '0.00000000001228914544864000403177026028329087085', '-14030902.9113140661455213068073751399665217637223956138'); + T('-6945202132900812232267754762195507765101114.626933181713698994880961083764777532865251281976086752243853355949851812697573518483229325256100662271783', '198.500596182566233231418150714777497924550531544984107394883271', '-1.378626763989241829423752237699325897620912267936419616678649561070893719008729731590007841901671107837003264905764835754363036476641340160319240720502391830298256035482481144857802524759297321191775928962042193e+45'); + T('-0.00000000000003508292319046289357668381194881192144875489890254082933630984748085694196310674317752270255439632992013292438026236847255227135350509221', '-12646.289', '4.4366878563139579594698714752632876528625314168731416208665252478883885572167521207173040056393420870934788012794380752838459114284655905930869e-10'); + T('-0.287610207934561349588295090691549344568062900733', '43561994519313302798849015634739297829426206398579890440129222701736044543165037398693801937437.9243029452694915', '-1.25288743017439209045579990822356125048347677549255399828298801437378973121007271697418144364441489766184499365629256770107139603488677894036054186818978872695e+94'); + T('0.000000000000000192', '-12108079130041324.8599910305913709996877522568944631978562414383996429587415771634862023459492435054277466841987842715088475336753781193', '-2.3247511929679343731182778735432319400484333237369339883983561727314480783828153893508504222547530421273633661665801296987264656725989056'); + T('-20568177346839726327867757072303820722593133821514591458610274374266.37198646', '-534342814455338031486092101151521752991657451149454616317240974476834470502228759280758223653930620503606363601006870', '1.09904577717268667573895775359758445299657810692590923812884672106543889507154870122646024207383034114557837930915217170509202835912718118550506629814473881108189227609033460252466188180069802e+184'); + T('-1182.3299256870', '-147162546450055552210266162228061556539.797326023627550726867910750435749282172653416371899801978172967970344774632377', '1.73994682608203866701785740185594706489760121335556873257063559751827647851659356907682594962027863260816409968610867061154167999e+41'); + T('9106311100510091578555175.291251271962559609876', '1014206950166689350187558262800656656127736355378743002804820184380658978941538.13338393728923507197611', '9.23568400851740850405690546305915901453077329283645359090099261781771022159231929782452163389786781433252697559132084134612891947899159122199206236e+102'); + T('0.00000000002380790398795067678584772975148957851144823495943191934104092082796285119597281', '-311335492270699981.8187024249236948798391482088578', '-7412245.508022185205534542741414892061741870570633829375932307947952750675656606815024557059080304215250354778137764084129956418'); + T('-459107433083516704803135533549.9370726940122774506638331684', '5216864295258985882129407260355552822654299758311025336128418645120106444368253186174452684656258241404364726655870378516906394208438578086566108931', '-2.3951011753414023938728351576018231982234001717277301016858655888837322273016599246665882605588507148724528061606913078187945915687420371837702713713354429660018711277008065538782057324960908955177252669804e+177'); + T('0.0000000000321891162991981855413480133794894989319146938941669481853712504240526430027314092932643025', '-134763534415664538713532770059667389.177391730107496493', '-4.3379190821968230280422342891216605083499498614921463348518339967882865388159072601421584951618987475295234426996826071260203876918460408411325e+24'); + T('33279.339415206582540482746683123451895750217730735', '2358123523728734728589743.77319797', '7.847679312915151656953999591683173680703507048673633215999463330697682756730860795e+28'); + T('0.000000000000353739089246492910027064870427354171506304617311189028621762245079583293104983994786058488849', '89.2', '3.15535267607871675744141864421199920983623718641580613530611922610988297449645723349164172053308e-11'); + T('171.11526841158167203333557925506243707903346', '-892230436.9596630521366514219721041194232334089033401680786089416696171067640821518918159', '-152674250705.335543438952814693411686830371790621030553860131456031688753597684538585227522590915650930288422940391639997604056260014'); + T('-733600573426', '0.00000033040751206672045761849003644598960142858564314273065863456912502993453964294661705657514355828281447882514699', '-242387.14031640414208016942107704561068604361659765821593779056830839506769730896756901035759801454275354730316665273788774'); + T('5.407060250', '894983509287282057739447083.8543243233619681646503346546908188657720214623', '4.839229757472768644941169184087133839458644424846279660576202729065982810949203575e+27'); + T('-808729895781.624674969350592579908381307343041664310702922570660', '-0.000018', '14557138.12406924414944831066643835086353217474995759265260627188'); + T('-7874173051342200985556358445162694781995734030142926506325840936292568550580411005561682118906679842482219.0492', '-0.0000012325012891970851064894932661125', '9.704928437140208129135757974157260618986599406272057601438444485095519271950063154371970461800830427187707721546146166916789646799572330235e+99'); + T('-0.000000430107308276532278514', '224144306746606979302588712185931212406889.197263709151077', '-9.6406104440292501862428318854477364480895829071122484854759676386315467059578e+34'); + T('-78447932062514438523504874.05548646556284585439748424869932707256764818646061107800377213587367912600020326136', '-3618396947489172957173653777903437148775132', '2.8385575791184026440804730054109713727456120179794155436480050335238908442702365065025115219164988251654681117750347278731430170767508687816655566449952e+68'); + T('398344525499512577582336511121666224709052905420447547608128587685795296475632034766287454674444514141282803194155553367745120537420220770', '-27125618478287015045404726742380927685738591197795175985782379683976.193104266048757690370843265062495822', '-1.080534162161405142653380276457947626239920154503690438713413845124333388848808189678412350793281352453783298170743129726689403893393610196781463690430258145190692262396630679800143839228210109253361757862038429643553279024184277250644262294e+205'); + T('560555227022785413491923481073654909048982696.2480925260763', '-0.000000000055945909195749319312168314920740513457467773655137010097489061064437802811189813038277307920819234756363832360445689012158203384', '-3.13607718302193977963347461210034229231284614823237752102010861278943979945733599665261238405005674005758593157383769276422304789339955395466489473545510344991715182034227247859789021992e+34'); + T('53683812799175377405416129296695521380051667500787926235235161394163291.6772285236819124409364862784464258457438293794967799666118416541092194902', '1002085239338631.91098069654292203203638801404514242082065101889787248609067618438261168776', '5.3795756397471969187136355919525769970238781938603258307213243094992246282155354543484962264142098786182227068998815395594712635092562656959880937968190303422424114781273414341203880090074688223986213775703111763870360005321708779952e+85'); + T('85251406536953414226544773130024365036572408507583595068846068418600.1205319812043138751554685608133508306427759344342315262715891140344502', '-14640.836750817778351989018346781730874633202', '-1.2481519258851345347885051287664718872340382940818875870448237208943268320517859270539035447679237658640425284982425765828931101626280359992735997817678878451142046283911403167355404e+72'); + T('-1168964957570.815587458251340', '56538572696115.72608565692028718229319011374125733775862205437667843677102186943732802', '-6.60916102328293923983280676454563885183081101391883074333220411142712357555724202247544863269382868083511845468e+25'); + T('-0.0000035740568614143300428297245610418', '-220936232135526', '789638656.3990059006672364554989705373573509868'); + T('1346034386225456518679533104316275599194652955318802468313820086088149624400847.185', '54939560960135761994417267108815425036339300614381.4483866588714259041240857418173085472293222902548715740451745805798856530861', '7.39505382164723930246517776761647354791771483640955760963662039805511757685269752798232203634586599328591387494964164173089232999789108334073422192252509759081688578894765226433014479831461369862878497476285e+127'); + T('-155646778363951461204593301246056264317969228058189198896139899890727803045.11936198483334033209653315521827243605631548584036361770', '70010086124901511162734982850', '-1.0896844358323698924028061858087281789212298425539029658881075600265807741939071442787428242144667285959576990020034537638802277308860865062577335864173456445e+103'); + T('-96230341173782142876521207175875305814979162902343913723999663923462086933.11747987173088004223522808909664360812790761033270386408', '-32312766854681308785639606074893295460039.2098266500874834272005936578144638474562541816848168427108675212737366956591462833878750808347288369144371132', '3.109468578694861657044341174482395073888223668003904483303702568979989305498812009034748469873885971391784305796766553860166319366182690854126591215571252169482729464411083827831940112574078691557408084659925085229544889092188654423122525035195011188050614487145148823899800373856e+114'); + T('-0.000000548494172595574330396761429371414006142446808314253568896786945188386738792461354439029277', '-23599662.27946574215991340', '12.9442772355105479080497098082314463897599465046293055191920810370276950781896553331072508851470742134787983846118'); + T('-714491311271945967722626072689371246725304', '-354207932078705268748581131.065984233837379302661', '2.53078489853838501514954773016484025244072911508100754790233958626529737581211243343233944e+68'); + T('-2652957183438', '-195185962067717725512037169887386249542535008172118583806939423414913218407717522397396925805258634149', '5.17820000173808723699241726590004932229973891258816030817795368301911879552134013341717829627238806141061924024262e+113'); + T('-0.00000000000000000880590826878036444443656266764836587490740155586607932367514263056628321181262993864472136637', '221.48126943989476644014754266743958579083215022106146593457414', '-1.9503437419407411606247922977674915717900791357974569097861654104985704464836690328779827178384445759527338871093471950304259661832134813136971685648676718e-15'); + T('-347873602.23510519131378528375967688328126', '-0.00000000000000345204441953134921260412723999268616841434091539516160053217948913648444927706020879947861434828121114161104100848431013272935429403082369582072600641', '0.0000012008751272979631661860642678932206188355136599447128288384619284997247859154163277648673794145259219010025658692572618722220704615506152641552019366413559230553625413995603960631242165928766'); + T('0.0000000000000001442618965364152298486684187600173330090418464315351795690935142411476466184129035934014488253341654078976849545022104268819111681009555', '0.0000000000249240364882037699910299485535757120039682410050255081964884056237893758868', '3.5955887731310902548303070850838164719748874637094192870760300960851465410299817503704107844345957619545899785709783227712047477876114102968736355229590341265414695145023045767563414004483980850712921197398374e-27'); + T('11203361460741696775550516477439054249886501188874281520876798975981497083993389664224944576772981555476668884535000964169301021', '-0.009425091022859976408210896617129512523351916940774040126129926398280814501901637533674397', '-1.05592701529491998289184550400386588919196745317033009594950262014856245582393791969590569776888682089563381256271169054068993633728958894678614097027273021445496799602248296257190716802772690940886533141705293659337e+125'); + T('-50257275098882173690313530324319207319.7', '-0.00000000000002613102305812786358153112867873275089759049662992988804013925307324391675101078591150104728275428248350857948737528851613002722', '1.313274014447565385918882096099252569252443657688483069512563244738248437919967250811168909580079875716332790199500861141616087147571179420643034295663475485584242234e+24'); + T('-0.00000000019732481798', '11713877058294598799452.6300621325958315801323987275857206144411781296421875252993224990921811411', '-2311438658368.079557319116750642590563091456361363221635925091739233848401495958715457150683358908746196978'); + T('16669921204672133066496720461645831860294144062172262348452206781980345719813505226331586428501288033918045572872571033439052885163185959983499', '-251909114234', '-4.199305085019531263164571072959105073744794265399005234122464071331276442675313245235919630379775040752398208810774467987877807125340295724868202346024766e+153'); + T('127594991665.979', '2931972609362423110559000705020991756049379484274406531578719920328328631360570935031987.8511584086593935337222578544201427', '3.741050206564770789405448806731198284533698395535872424847129715200781225838343397951497453223347295962658413239336292329816540879152033e+98'); + T('146200133592544330684264498065226245560031705674109303503477692120859154893091630.871735716026997526317545935283624142687003866188151982212989698909', '46730789676874137872952436533.29531686073021669792243838852461391282932511897427150915122385179702857290277711857', '6.83204769364409047271650618653599900430147034336920824087779336527502529052104798054004653483290666541743622267860756708314673328113463875187686742000697177806992937541292873782614801211759243277925667772455483685539661134063357932775410662696035415889264013e+108'); + T('3305168235.08883', '-0.00000000015960253276367470672820299075290130045238822873945326349880534378217699817857400746554521112484146318053536850963687569374932812857474', '-0.5275132215302218955363945278671543840140049260367406641422620161137050522156464498199756178493590046194472374663980497123349110510329792890451941542'); + T('-14662664077162165311256', '0.000000141784657393925274142572490861043212868340562120628819802636951941686924487200580031', '-2078940802662653.108290285852001564512570305578867791848575532841089886824260278364785279496635830853128936'); + T('-0.0000000000000056998852880676332652472177552050285678774883196500512', '-36498373273900144419354144402538260265.64880867165981459073157696308446822865007237717278768', '2.08036540862304331717677642102316632522246004626115723942329232479603003027974589958566297786436869850538183264991752492295191922735133158729216e+23'); + T('-67968411827513303349511763330956716200597055731528479256856033995905188987752276494336231454282073.2592237192851649247647340481118', '-0.0000000000004483593999475811573860351927852363194231748110211408', '3.047427634237394269949752053446075793452954414318045278492820191953525157364829988068926830766709378481812043618023757341388343262182042155382714412297436468809738064216143412194144e+85'); + T('-39147071622153.33743465738395064998231007612242609707852571665922928037980935209746718640869047087190554662186743691289', '63424511281756665049556884134307448242418039636636009044809552022044426453480310050617427620937346481967898179810376485', '-2.48288388574700054052521039639443124893165696752230434717540647035194354741975215494021537917119812595584047998724074329330913195295973963059478012613800118844862490179027576674476090214756182225141979897773406174093090617028873704939165e+132'); + T('-0.0000000000000000000212', '166963558962441896333912989698468664503074325140998167446135880665447621153757238111137.174513086233214289455390442249465', '-3.539627450003768202278955381607535687465175692989161149858080670107489568459653447956108099677428144142936454277375688658e+66'); + T('-860642938911.89435988366786337586704323346250899248118740045', '140830725536103329346326306.425423317117473697116679279', '-1.2120496951448633875490135507286030453466902766109934494954321323997081079892561368828279080230440233059839027555e+38'); + T('5120155281492.6960891', '0', '0'); + T('483497234304151.93475846468237990040573513326581342398440051651712771865349390238040778985950490599787315241732009163910863036888245878997967132752', '-0.000000000000002446148373855415167', '-1.18270597345669190978054478684634031633264057012297038134354632718936884883092588556284387957205148298464894749852350309479922902362917548718181008887660019563249584'); + T('49107229571.216725255807725802556664025020334907', '0.0183027672070302023790702223019211', '898798191.0241693052645246478450553949374710665324134212540239364754063914898377'); + T('4777991472272023913003337327759575484434911659878.9391160', '-272.978878813339754436881', '-1.304290755080515609320060076869253031973150159686523391389068499267988263937196e+51'); + T('691961893816226173138683615558104657029075119080', '20888395139664451446632.865882039316262400286', '1.445397345962386803567566022135550445519666093682044976235972214321728596830297084207605688e+70'); + T('0.0000000000003033805695921308583790907838465039054504904757732225737126675767790336448122804692481183103833', '1205.341037096038791925207662937489878783324398262713191296436049856974303800264977495244455397149', '3.656770503869659792755630630441878632712190709939383192077151780666062487640831547779168381626737843643632860934266858208328198722651475946630361327414380262986385955514241668191884519172117e-10'); + T('-0.000000000000000013736762253040628738016656811899978900772420917465579992026756713474712981645066867464219941729626816955275801365161507762', '85532614698100819357606499054389025847104053990809', '-1.174941192988739408334389452599416522954290918785451326292660032528327766954585591614133632582363824486991674256064796714808554605539806946168016562596219749595467730159458e+33'); + T('-0.000000000000000000015811255247299305828768713319620074244982509614182062286978069545537489406407030102060780870055866980118153434550305', '-401137413593688737860912906172596426086830141009', '6.342486035571282948613963880018634581799042582084278022045824002489491031661976947293164151517578765536914386152201758345969760642775856850743822412630635653957745e+27'); + T('868871903240454856454229094081624011359909603881418403823490415408076494742619348242915473328227861764639800179679657635955448452.19436', '-0.00000000006357246685755280701854672125777125138', '-5.52363302722126457498705427469309802606911867827348426238286090544579757343893328680598652010805938682728728170222222699144643350355823304335981947914590621447842841782168e+118'); + T('-817490632.47780', '-0.05082', '41544873.942521796'); + T('-2566509873328000254011581163819375336312675622809818.499935237794106355143', '-14085586641244278298102529457882882173828.1386', '3.61507971863704252530700366641383269581722371260221251588353625777177940442779032699974632687837606902398909382268198e+91'); + T('503419281104.463633640902474726192736893485104591050840525886329718599066457645293563757497708980772570127618974706495417595', '-121337599145999931368859624997930779.73179', '-6.108368693302086597981507602493580554469919267653677670683934587044246440236052848418720220332789575988975507246301734145970281303551608797453924222097493814684505e+46'); + T('154.0752879034465903', '-0.008726217915728513196107992191445520422089690044688368256659372978169115950', '-1.344494537674084306953324167403048279838310386922350436364043480401117060195371791792845285'); + T('-0.000000000000000011925048592029545210459398688308718254092506044948381860935240918133166559166620982921389189346569737569028538401055', '2083276415584377368536532532727643929994867840790251749.88373757843573756621600', '-2.484317248647283703600678453474259458742779398299485727046453258915073511408926866511770738523415042481132395288773086582850710882881051220356645201811022177650375833106965396711340182675788e+37'); + T('0.00000000000000446904154566584455897206481462213986849554065179928600359644945423277723320322131526226161353244832569', '2848064161461423289727866756193778408645084968560840504840991868260331965438561614918967119347024529487381145007808689.574200435202790467855', '1.272811706229305662213683326319709782050267108388413502237287169373774908480672399099191144562736507324487505708069393969774714426776963142634656549866268950975004320862082201493957308813283909556739183697464382316012026987207034028651569495e+103'); + T('-0.00000004733747496524284528744980210835293091798469780', '-60369256501669614091439562465874779052299549893280439175064875222.062643118496795029', '2.8577281683181092272030103013062657800563801201278542890132513734588525148374106855868764763504825752739825308041149449651072362e+57'); + T('96456491774549605983464536192479065464697606538688448511393590515441846121829477068030573224599124', '552591880159850811255567071754556187177795094968199872657.3807356618203751867762303325381820718525675700180057477640927815410828', '5.33010741433215513846896037986563851532355661394443362975026204428856124749065340874569306244290877879518226101551796386327528977418142095601897892583643746390474594920802738822250754452900709400116274658794833132949668914672e+154'); + T('0.00000435296825302837417997979246513279920760355177075128726543859320043830213235385947701661297471019483638796996791390033912786070', '-2358972609625663685288774473895.6434231', '-1.026853287946401014950993771491057785216233603666290400912634027422541733751360917945594249383195357423341794633440301199534687372368265325725161906863912592796217e+25'); + T('-999234622854868865674773818245832433202378284835.73666608911561114433921', '-7.254', '7.24844795418921875160480927755526847045005207819843377581044464324103662934e+48'); + T('-78760433369517189268813718850989812439872780124626693423016073535122', '-11.0900738491866377', '8.734590224618892006011443929973965209196433850642586975929968912375943222522040392994e+68'); + T('-1510939307579695343987573960', '0.00000004320067801896720565303672103306587888166187016245346353772091834756228523943136134993165134358763411118907', '-65273602532951674469.8274051759179425105664207275230087993219234918464759004305190552070563017062681064499654251448984977190801686172'); + T('0.0894174964177934303779732054608056301726883008695547961408331314203105438641593697918217224788171493946008016972690054132568541347357906742329332833', '1542.6581508582549101995706396231', '137.94062967824784574736167582697025827541997000463104865008652399044560913829513820967821268072546354439954364140784723516217249346765923537667015058098902147542450230708975752423'); + T('-34577745227575239042650497034045377305765805548524711395.5081303310220196', '766658358890973242394467250763846956795577882707608858967751880636.0954859315385805368772376186546221646109', '-2.650931741032301486599844865029472285624680782442203783493297156082528515125839636070674383514156414623150702190980592575815090407165174168924973668598655192785690042142376617364e+121'); + T('83.3290153999204844106326', '1311627337486915320509440687345026266029743794924400721935513620655368692498627634744007885.7578920', '1.092966146044038692204564531458641541903270444270154411744236954983690234590929647426240374543484806952751680089941624792e+92'); + T('-1192151.908799751109585637800720757640651255179973011410490516408835753100899', '-6097036742802358386983942122025791952308256986659597643479361457987833051908958694867787164384275533358919693.249523575055559871322198016668187', '7.268593990954048718183298042908900396708340089605455889963655461676079135319303447970644868475734604822116794986972434401410410290069948464123089061651877757219473044801702473574398904984445482549630675240973614400113e+114'); + T('12873087032432609726511318658818382838704088', '-11137.85789449932987810195', '-1.433786140307564932441456398853868326855191909251446120695471457716e+47'); + T('-514407318470542052534960135899863052948602062295713.404163', '0.57617979470448909978527108240023648361885980490885247972540173726145900170394342', '-2.9639110315084366361019792930292554963023439694418106043485007867268143561606223483230236306497936769993015568968024431726476622934445746e+50'); + T('19864031434939435816482549499647863708767614292250', '266674221057214323300502059.20145204832171982196589122398', '5.297225109968493345109943564396209963433048692089789948298291839648394867940757685353484913375893928155e+75'); + T('-4754055625084332185755418342.562', '342203501523496667277706676371384769113403050858703638741982429.86030457236777579646956050309789441181343032128562816083443', '-1.62685448134133416999696896663497605074404274391890811668228808135026703965039960122943110479134355342110442043580444401677907314671327937812747350400966e+90'); + T('150750927242228755712.122222703133987729780', '11153110586322698752791057735178422360301.378975227', '1.68134176252326445776964103880327253856485045353577333614876702243490238494407508859016006e+60'); + T('0.0000000005454515643719086225314528110151760642884722399372', '-0.000000015543649516517081944335531513584387020723567068639189715742064587530870420218940682937593923251202031320330', '-8.478307944832903460053527019222484930464321162422574722274786852848535790350689038575946698474468453359077459886259429789018774414058766868470265072283276e-18'); + T('-2767036068909663273137653237379082714767201822111902341892857916392935025490148010094342382799970940711420469586533427545731180775808468923.9088539', '-106163436291247150687286.993186225478584736592', '2.937580574172739975981907042564559944340709871604734255385615604239771087687041986895276609517297709801222177972170328755157939564075490962060559952941922254377647597925548092640347481119088e+161'); + T('322929059228302.42232788641548949211838', '-18539056294225888575098493056536343700876218241905416897333383900668766550246400797654743627780376379843529081553892', '-5.98680000807490479064022688673406386728717075134452992916398938660729018368078136257909679075702485459797355840674648444941273018869686024213037721373496e+129'); + T('-0.0000119088486605', '-678482308015968521186583296185550742292089152413308996093003534425067540438719433029394014', '8.079943124988915136143008357350970716799926602463815180494764874359731216575673502367418360750618247e+84'); + T('-15743621782091209915924278', '3274082843013731438255081795999294296956951330200864645074905956456916040.35509269056', '-5.154592196364209761725129736597728957541850874359227108512452329645582903082160123855441179599042326424541568e+97'); + T('-22.04', '-5944551299976709752172805837341550253708966615717585971886595904737262.553978573497219171324864133558843421716871647969330963830798611962604850', '1.31017910651486682937888640655007767591745624210415594820380573740409266689687759878710536000005503636909014639851121244054442830801407655810894e+71'); + T('-0.00000000000000000555645728539942948834543543660522131579870362355003609281304516197635570002691794651513876516995679257618212853838', '-29306695827152569391012711584981295617371666610349814272.592165236226105635164951770704628516992499358459197490584668922484814646542200', '1.62841403539766953518495453372218761268090502299476097416218349383440252143468559124456611158096941013793431583395346583297449705537413859250236966991939668836100087684424197338992971973055292271335773446637724947073443337667809840027147206989636e+38'); + T('-0.000000000000020742270836226952980998683613591994841969458265756792', '0.0000085068798515187907992734965918590053220157266548600897228989451266931328328578374770020103860942048211855612454052631692704585242999552', '-1.764520058514448864430556069534618615275204892312035230025568038037623488871862099421613268028548477427078877470868347138110966013281940578093221932329336549462641760519469552917396957184e-19'); + T('0.0000000002219866544727448068271267401609565019963347224974926712349689958555511499', '112575212318901234841480884640021.488017899845441345152302010098074629364453', '2.49901947592318130801503047727550173178035497206246305960969166018454548964265488494296651336239176806475308333361242019778922151710635090703345047e+22'); + T('1315378829978163097323201091487091023884510464263405789489832239136944342027634418586990942689761050161994364084475', '-0.0000000000005431717253475371481154070141404996706352278219461841093282411', '-7.144765885648635691663776677388815688808217253830298250560692436430854724042690565481563931808762010822550658080798534063657410136765651632899419238667830655937868686635669225e+101'); + T('-11.974214873897', '-69620602709317858077606.7777617143271605405821834772501233928978990960832960289391723644435809527901763729636', '8.336520564915876725076403852155386259151906493644770055032514166066102032748457719926765893410251855328880867224141711492e+23'); + T('0.5799373425407396613321531402639174796275099785413933819926994175405948655805025226256707030596694071531988549812177396212002923068020219', '-0.000027700615530600411086471711309277', '-0.0000160646213575591435303047842679851674438314220751425839463942452348275488872543258932816330972165180823475893661313040152587644081646971818065194220662714757232798271663'); + T('3552978384198918.49229744871077180734861394888625630207038892347651291160127968', '576121651802272791027406554970', '2.0469477755224511189481484697284307523813499893489378816814079522112320677347783327847826609021022722640096e+45'); + T('-18851687060584485145327914172608439977632012360714293181151849.676443352833892494771644740339', '-710051449483.09545735', '1.338566772256972884671120004800472882868495911897525532968781498881932306536347328148798533337590085679119904165e+73'); + T('-0.00000000000000000288249562210477058762080967034190536380', '11030576382737761767940218.42753523411870710120067239740266744266743407186080051248604580', '-31795588.13253387463958232003043592787423655701203989880802112096311021607776492918973045954883598861925991488365393167246204'); + T('0.0002651045160796089842082260007521946896171492324757847312814436724243594046468985409527086868800904047336619267796004334725939839850264', '1.5', '0.0003976567741194134763123390011282920344257238487136770969221655086365391069703478114290630303201356071004928901694006502088909759775396'); + T('-45630450424356227610905727217979234106654796.6161863250137780341068134637326896292372723834060729494223789898', '-0.001886550312601736573060142331616041564292703429340077718703409523396153539560814169322896332023638792684056481', '8.60841405122272844640400481006709825973377910773092658383432035084194649814689826091063041039246763382818233815115923828311073497379982604148882785954606467953532261460988494258202205778413397486064962158760109228938e+40'); + T('1189249849326945544423032382429163536272388440707777088772904521287431570230109527744855960682093580486474033014', '6504.8683354042275751628267409987442515379734097114877784676929229119207894859954124', '7.7359136877710967170429074459214076095443123103950889587500385890668195031469937128361362071610022299701776151817353045025434440446556587282911741416992344550889955487947858660554683425301449736e+114'); + T('1128441920157431650427749624713171449845850142623381662768791487676773466730760868814283339962300837813340670485089015543152474935830631262056277625', '79061776144493796403585114968361776195990966081.4355019441515980323901471378982885369231', '8.92166224835496029459276238758633651524460082513027939264421048853489989185952160214129336946076678283640307013713880795010401659801489431413165623876916877756744842119523338662139879091814025301405422477576287618845313203749568756375e+193'); + T('0.0000000000000082641501664127551186707163886525969338633571732489264646653134052232915073527623626871791859115793743174790277', '77102203524923153670', '637184.188091283794704877392959386970281584723592270762046140361002187615856825504876006527697363766914328733379224518124369286659'); + T('-154596.64783108125962775029015421009207072050712414460575385753089518786884795842152456687953719640163452440709563114', '0.00000953332223165578725654281988611433', '-1.4738196597075074167285758911774621445701892232319827414730606050858237209327721967567187682158190683858892715205135805644946318114951019760935482362'); + T('626094027960191400373416029.419', '5878856.79754771959507653634625689098360680482358703172927092067871619778735053759313320563725801048848752364854140567987016428762009823015837615', '3.68071713217780322698039882190698318126112699362991022750878399644122991392056045799737440726628318401494664115665446003913196526833417240938632301385924540360002145766795685e+33'); + T('142.135419283057828760365017829388355940936300046104351305886714809787574819399072768256095762422384093950730185429', '-0.0000000000278515979862993195214307567411728513299170817121298333088852493894670155456948388404536227491002693927300401260266753267364837037', '-3.9586985574858228931018800299373061499410310433476663516734373778684106112589529389671174026955027434401703451041795013355130980833809943565348714743599848089313344119919746925003574800408491140122381937990968341446536009851615571381376933873e-9'); + T('-3414337375638988582664180574338695013525096328524003701356935598956539630495832919756207376.096050041684723108331618893085565788050841', '2373966573751563392591661339321041667260.9102329522532997791967528732655638468045668247650320116224114705207987248257276765954175435815311222155414632', '-8.1055228012775943922611598191168220209920422725184693447914123413517420845343602166955572458315096659666380761391540010074112348208219442252225691108563375371596959919631253585651006293756277244412869691262300395317383824508608721200136269451608738907028690741099725299413451305512e+129'); + T('-302467810214374958256067.032373830', '5575069632929333955431348.9768', '-1.686279103664794846091850650203678409366941699204314045597144e+48'); + T('82697078376296338907581778590825184109578442102991030323732250149625618801404609650700917759037258851030792.4579476961905660977126995470583812166076', '209841367832573904068305526440706142.946', '1.73532680422395935522579385025838046972848188875755297012803632653935308780712618867460319171676636851490602740492068944818297966533205669240452066743937774780200047624598512303547899896e+142'); + T('-8610723620694674804743328843770809170499375.7454758671', '-390208977887824714144', '3.3599816629058183220228074369266852148945886756309325082365153093080342624e+63'); + T('0.000000000001665736409252239537708350662977465625669000790963980', '-0.00000000005397325311245537834096132969282540541809141350200755301957235584804115716973637524555508536156078477308323210', '-8.9905212835203683504110846121534305137961327547168950515670333480752564275581116048493890275734599276350080922308328478982195507458726674696580816210133079758e-23'); + T('-55009.833387304033632191465037502050438168517958786455204058304623268020750747185676992712088', '-29561521305527851502676865044574530904951941035976693977553088501233865440936246487818963545187685243602080828543148264209993996454896778956464642639', '1.626174361692325529945956942756425331503823214619006101333940515950960317910361711714132411783105515670069490701197466001427788281114415821163283764678271096259297038980050657582474248326862791843561305280964954948600547092666115456335520232e+153'); + T('0.0000005510346818658465664306888534549271604193320861182474130165534720766271492178988616151168719125', '-0.01183566974341274034927329940717360016909321111795523305608990101374740733837917774832376107936390300470266447548265172072145593380615098624169574', '-6.52186451173066523843915450437892584263602058413986588969423688481780355800652939405885567360640536676093311565481528848197657456939614662844329592819951096602632005849951491911991775291110362116460575276787590328868726322084826837690275e-9'); + T('-0.000001849521254273283959945614449797', '-0.0000000015253958577166611145202508909209879321211559950068605128152947738844883802079744653882403', '2.8212520600273908617019782505256127608067239079286482382697098430394398747360047423507203058647464997472737712785222191e-15'); + T('-309.68', '-96055.1516378444925', '29746359.3592076824374'); + T('-168028626126473481129367789758521978889200869466491962302048311336890634520017.5719333163304589587068817821858799825706754229048601236351696679905637', '0.00000000000000040505144173091841345427692344370044084035179023758893212083311438716720662223829934353555898735535197317508971014099022876688542096545250', '-6.806023726459354860300059210154347949752163001995863383108662941548990570394989515646898112331550406123056248481183044010335252896104139538361899382958674774865348411475636358567387218161462977943906814852515597246369885881277132093738749070553676123096546436403361124299691370057425e+61'); + T('0.0000041405315442707777667317116430726678375268137201769082592971414397218413001195015562151372405002624925536507988661290804269379616336095616', '0.00000000020534154280912678549286088770865816', '8.50223135350417750807611605428001794994175049772882453947533102952716919656365787338607257071961225914246011148972124658358852928539815938659942645226103867281485281862656e-16'); + T('1043304625.7986054483292567142119628829071667318336', '-0.00000000000000000003922920237128071855393930461155089778347745292989380337114027290711582558804238092936477', '-4.0928008300346795587963967318969522795914555559316007448013653233486980241052075387119842284031574844035339709938086685807849050185342272e-11'); + T('0.0000000000577244850492733199753691968434531131534014494738041562671682385265947122048380667867064559302522087090151313923160444265178252188520771169749', '-2993829090737873263916664.0234418356069276036115961287838007488804067542802424350078567987894997758950299', '-172817242588377.90289435436410530982271580018756182908074690988652090894327112554557513833605455776187642341828319053607251432332962573366023560105756765820651824786361583489449624159271997847165480283033635286456942690484125635118492744583304951'); + T('-0.000000000019733986238945494869277217117479256444529951600715483268803452518656509029860', '0.00000000000000164627700103694856499141527646022342482582124935390975524916641794007931969687515151257818754024349160456008195507607', '-3.24876076839556011689439563662251683467519484990438085916787388341510942412905771246984808263084148148601145015559577022588882488930808591955187411190280597100157082627777854794533428182014502e-26'); + T('-11427925335330818004816066050106833418219402199072704112963107004970597981437954806793580004070019399256039487816876806901413994111491.92397663856039', '-10254398713648367399130671587602705.557162008583916929614232815559112128534704736523', '1.1718650285828592780495104592683632759974828335670562590852557778855769937220071548729686706912740577068594561471384906191535657977013468872849927726389729680735882934586903957393565745867332347237612282016833288027776053697412397e+167'); + T('194053275594004162536549158604917941716280933587153407126108810987941717.1', '29178', '5.6620864752818534544914313497742957033976450802059621131256028870061634215438e+75'); + T('2.93518376745944436515386335020372331712985006976884316865242', '-966659011212373171674223610192618777699658.9609647969094449683040295199948844301663048672586994151702046353417857765604445661', '-2.837321838378954758771215418938164310917942593004475873952183940640231881169627087395424110407746819193011896535794052106353148150659770269806093135838159918310696520280932274648614962e+42'); + T('-0.00000000000000000868510085783592320951067786028338014000842721104291268902134885144965679501434098211679237543640508019493070439633157498534035049527', '1.66186927561028596926036092509335854186047127558602856573976536260498222833648503213450552687521363067', '-1.44335022712140589682935718532287891186909515934902995812983197529942616459692310661388930461065190889143976230808707540505066234871399330617979826977854860688501351020336858399810037738138869688388995164376763031097320446355893619309e-17'); + T('-1181859428272891621990692513.97972526073548792078905838349464918869621234377765379776830944783886329774493550743931156263730', '2.9941', '-3.53860531419186480540233245610669540316812438363451970602132913587532937850467323589809531777434059977811140282404274969233993e+27'); + T('0.0407860495', '-0.00000000000000000067006193014429870550943276612546055857881417429492755101247850388305957467261270841516039308586250108088434662298612276060', '-2.73291790509309091456936475161149575524931645640945426945087233770604100240461282197497983428394457192787524651402698407269082497e-20'); + T('3534937774831542866352533130845566313027721824245809049775432305752915295270444679.5880933827075988', '-2.2480869970190', '-7.9468476468700692010170378639263153729049188935676493712057455085625903839492076731999624985988712896442479772e+81'); + T('-2313111414785056499431180531976979973.274', '7671974887242891859494.557233282222057816576248', '-1.7746132685625829899267375266227186594583558197192135674091228488559599633565223195952e+58'); + T('-0.049506264282575986354429257789413492175083859994025520010200438659280593549597224675611141989487638448856569022072780436586696496251665748576110537033', '-0.000000000000000002289376387781964560762840433567145550', '1.1333847249582310289779818259083630345427337255960896766203043455335894797786980608848419608105331975026702045607659909764116027289661369664795559011503382603816675539847618267537615315e-19'); + T('-0.00000000875646084168554507977167823489990902563799552509732315823818127203671896010029263145066030926978731172618906161505494', '-12149799422754916719269147530161643795542307713126182634497110622412638327814575847624536131684703485487672095750214266758123266193160', '1.063892428796870678069788900402015365706552939454485642953799687841866869693207537469912665183234951380917914005709858797891441500773219383040079223313752838870891947612334390210947680627998406712051291289215921823307231964371826198854050237980522104e+125'); + T('72132913784335037210708416954845481013.4936052396', '0.000000034758907396517145945375764660651269929701596542982929267988814344071126980935379146949580197412941449868688705948558', '2.5072612704706567177369364733761303227157324401681208246105574307760108529931727084685203750541786884736657231851778565267996322876935570476425834209668059168644968e+30'); + T('319.66733043418522086907604142851830292549270071301298537533804754923073658110499293992079580', '-151.725', '-48501.525710126752636360562385741939511370380015681895206073165264407033507768155053809482742755'); + T('0.00000000000000000062968826433918348928022932804766807886926653', '-0.000000000000000030428038130246925313880152590782914692618238491169604901884578172392510096079664807819', '-1.916017851748168043720386562747740471345349440563638610201143130913848507924678149083014143799108415035645952111410793293793899807e-35'); + T('-1180774887.3', '-1449.996894078842975987074068709452557439051769626362706935102826112305930', '1712119919191.295852285533989737156299954793129899433988390218967916669531638871689'); + T('3647164297747831538659156395004173038414109110759206277814463425856379161036312539485631.38948348284728053244339540610363604645614853959905', '-44392.7', '-1.61907470520630161146234332096501752442406021521200216529134130525014483182136711671623788583923408994470492599919244536883919513865273858746935e+92'); + T('17498312279239.00932701739727337804928343115988922324826729272279616797560451780334324648186406856', '-165176662774787477578875.101155425022270058043785237734912330043953397824558634005249868631913924077857553397476499801921399000', '-2.89031282647578469354264890469746211626219999574969073812160564852073608013566136037691524827633370435651099998507837807111037742964559522767880633090381980310349646177225049281653222840024159118865374106303342746711544e+36'); + T('-0.000000000000000000924379194701874135396133614362003093078303247619775269472734328426147105167965036903810455485324946', '-0.072771076651632335504153815223990944', '6.7268069232824253584377498803810917142357774490329000970581887327408582544296355494518772848722889546489345140622499161796902801289024e-20'); + T('-120631710673724347689914070602312.9151429', '-0.00002802807358811', '3.381074463822740563254319054484144416394255156390919e+27'); + T('512196210721455510182901457014276459874633282215822699880063790892256101411937345231821904839765586258', '0.0000000000000003806505766975721', '1.949677829934332018345035402585815281370286067595371424284055069028866856886403261381419605884609510991608281217242018e+86'); + T('-12004236887475073738586111006769029393080783935378309149099727.68396298775060968922', '-463794927584484417474190358889847435118899635706815444621012022509301590070944948658314884349', '5.56750417793349844330521891159840232636935946658560169085150684088850605724977314027337726117947637117197173970007342920606127105666878224551145677898907304818177310313201778e+153'); + T('6584641990290656838269978401214918847381615636.518803901787', '-10753941414172447057853743167450817.50583947377863062378420539493289850486515772906013498800287501534', '-7.081085419688558260857966029738760695277290042994837834892489736689162992602408154398193125842351999687246222800816463918193016012785992028984897208947841258e+79'); + T('-24326422199657762368640227996078927157504200019578797624814562110060901133357274750788.36441683868312318843748', '-0.0000000000006902888661514497196311777408365084768865919183378538264433157093409003947610911', '1.6792258397723212195313963158909185623783542066080048568383342089993434418422010559055047531507911817998642508826398204207544200195899037683811355076482082358044434397074053955290508934428e+73'); + T('21501938889227442926984999198582213780754593552865516434.28095561', '1275573970012590600214127925446975918013722828276558737918022879.290868107247330446595401054145784513619143055092036112746185085177017939280940668661320', '2.74273135518999619237055481685367562157141441273837681617196746425111391922129347808060414256695769199642463364622072974665066305632558241309767154727027823910405233929660720731520333952798686255808870704290440052e+118'); + T('-71541409973383879506417184487015218354.023574350361463350873760009451721040985761853384121351993525', '5992111795695111627085788865.512914195836892777247907010', '-4.2868412658217344634387154093342340829086139811418993420175349903462119580242132265078555221121329803402221988433584258370336736020674652911879732211025e+65'); + T('34142255447580822559151401211062905510', '-263926755678947832441215581540094557891886476037097583650654682043897799149499355822112508751738221779921998856296667571952006518196822431846845', '-9.01105471184188942905690908904627239542616349082031787011252961375696523930047374090057038095264861536129494798476922062541028503074147788683121044719759772706042769498406102661595e+180'); + T('291910578907226789405906209195597276379329314216442687970828.12263463390116587613', '905766156845279032080418309.2899374863460', '2.6440272319927938125314442437268631851150779004590992519957935351389114318457620877828712701683102714405409392300232098e+86'); + T('0.1447018135289410248822059919088140128370855413338568649453428485887', '-31531043177144606534540520126449707592.441165834043265865498607709043737814229488899678036083217728937497668745235164920031109748', '-4.5625991301921670224436171827297160639926118138546258979023381434676064727971907159899790572618884224647144712250542121029109924335769933935852618344978968520165094454255764789533981971966126476e+36'); + T('-431470847375352240973824243957438268864164144677055441855.1122835808', '-283926397264833307842262874592214804147456.35181960193341', '1.22505963220088520133492369378146202611227577382619697690196693448533411156116335413333343159557018405513846376263877954528e+98'); + T('43.645259992317026943608411', '0.0000000000000000000343476666438615307467230521728116897722871849771845212242115930032028373012984891992888161271678789193222138335354663458270965038', '1.4991128408007717160640135031205392680494419814377001223461964538550601533847575845289929527748139763281076549960076386814116184051973077956967114943734618e-18'); + T('-5333642642837544.62687709591677124286121489157762662337705954241856563514693012115', '0.000001092403520420007654847736885', '-5826489999.69800727677170880845575478173936457495066350494224786180067840981405695080871119365234031637361775'); + T('-72389949638529267084220162178469797619868037471866853897782590886837793391170450755475695445589382444913313865539107.825554816619359474078198937945329', '670516724101646254739075469170811171513447894797271200380414002599176331305558057030387883188608917', '-4.8538671889509795604939125299480164673783805114262471410372408819538068738391487961206173796503249288962752085213903270623213542356008521417558442327238499890085384270939054062390701273409174804755549787657232352912465878135282338593044925707898693e+214'); + T('0.00000000000093389590550371354609879546798604119093458584514838', '-436244725.94251597789915707849842497816062786670486162986', '-0.0004074071633553053150284952158066178287741661729136343492697908838085289189761762237068783682124527003386268'); + T('-210380536819319.64260798498975775170296381658684501981152412255070635544143685331980809905', '0.00030621239427093550265058736827171066633126148745977590497591435654761612693434536026517812303379', '-64421127887.4485697052582576831125251079439300578331516148925455276348682374579663836142871112701981303186673805005030452875519450671912320654524554714586680026745270896999533988168995'); + T('-2986425419210684489372385430630802680.1700076164378161986', '-0.000000000000000000174383713906052937878565432107027682509555072891773406016182697852642942595757484268776430171027151127581004748120018091764749919908464469126', '520783955905400215.3593326533209447186843411978634958052248208818590205254321998670705004791818240022569816115585565216755711284287526937950905747371255207376455031602089558157107952374519123844236'); + T('1005275502281605.7203063810011538411846251379520165504332670989327995886451', '-0.000000000000004001673036573006142766297120381368448210468914793665305672717', '-4.0227838718076871277132373250062298425694133513895898591969064598434150270288761898553450928567831052706301853626314400639691300657367'); + T('-592443055123445281554039884803217796883007011697299809752867837', '-128767025696067370042375219001771824840953470096164458063850.3083988758376157095926583752', '7.62871301025373359356475793746178927840450521702002697787427513491791642079585760593083059843100862890831979506992101025525289259825474551988167584424e+121'); + T('440119636500787798119778.1614067114799921393251', '-0.00000000000000000008016651264632167527854789402319094526310291781550499853504152970195676032634610434380960951927984204641071043406830501', '-35282.856405434903813597479779632705556601606542704671605957970152900017367125637334582859462287579739167125492423421901400646478981405910526064055108265969922348751'); + T('-71579.2', '0.00000000000000993906325920139009275587686844510659032911932338073755273459775736935248889756221559252800727756986462003224559457716', '-7.11430196843028141727391461541805973650486097872134489434700319794292355673296385342340680738522628853610212113863357451072e-10'); + T('-0.0000000000000000028252704404880797079738', '205661433462063.7105307433432819704421946280137966217786600779', '-0.00058104916870877463514486303435785934208231367367250497766551677412065596208835915902'); + T('31511547820580.4394382615198628132988414617215767834965945746200468417564092109397320304169501963915067332074901099286788653074716563043835', '39899961813398664937157171453593.90023813309746209966498824019924844847011387015958705088743565647183663555197208597527', '1.257309554722245458313010717601632793452987822633399487410911056875703458652204694414418020975982056391949850738256638817586034701650856414371301609334505840392336061143829107090319885694135741359164686790967904196966939338727755954779566674337378573596045e+45'); + T('-495789074385555943868529017377472010212654135435451505422731855063537551062677555928072920281877990746962752595360995056758586999317669647', '17819185082774026694204023148577882778297684550452324826832075039839807470403992920788019844375217029982704245209320846148492.201', '-8.834557278493440769527646032308030350371362475818934570787903683344802633346230326610094249834365327683855191264428319975098552784711089348596608431374093713258545096383387667958040878506159831317309788540734024264316478718947843168246822604530057437227626073923047e+261'); + T('-12262785235810622775007408988251878393679277845775461370985491116596241792393397087453508079734404478228220643516598880369382712979645406460335974', '-17339.4599485985180854570917062071088513028304627905849022429965380282572583049408147112553558507464317495273478217946882351121108297352639325', '2.12630073454603527661886448347291489452541354119893214674919284918523671819041714914484722504179832434598604666638655329939148126697219715586452788601752336764716691015791681243794848208962144155133293203564192719333981843088873686066209217435640467778541139472308985673249979514457755e+149'); + T('-114396868590854104192672352367580744901653263217987528344911658496559573111650716561664806136683756515973087947398968856550342371023724981841598828474', '-0.000000000905511055947334', '1.03587629274772706348234847002960858371371655011375374225792356944117914008860239779411591084427150020831085014159874092768298943748156678048631480006184964643588316e+140'); + T('-1112241862840106360548102452612787954701297842442745550953310708233414570014516673446141946344195030870599027775528597.64281848005244542515', '-6348759644967567183872592130062154839790.5635484413196596709331464307', '7.061356254242819213528914158861347824577247501609657702110667409707299733668207944491015232613785616142229000235550257974209644089293373052607176525740858805900274429133922740980503476595397297785266512105e+156'); + T('1108564966618799.684583511467562033896416379326883221554515730782746395008239020932004268892597106459172116648365972554761', '-980241488498709.989691822562361049071', '-1.086661372975934954665249154869827138993085763955003193792673025483663764315894189566505244862737823287988968852517424536981368134752599081608376589955677031e+30'); + T('0.00000000000000000002838698369819955658555277373271853993941828559300730453309757421421453', '43513833879.28', '1.2352264929772849320906997234371440706324351943721359734528135469244723396680419384e-9'); + T('-8511924985976613630478857403041973777452.09177107175699163666864323186579824676938621436941711058306956193771462975562483458844', '0.00000000000000002272278230386744849803445244424', '-1.934146184431965759189809035913423340545514889094246651943997790659345002151610321611910790026540789359818166350027713628491983499298272486356031374524485856e+23'); + T('-0.0000000000000000004316812723968992118505000444628085260048886312014882985221720513162602276841485038550245898508488835', '-76290177257460517.999473', '0.0329330407898855391252124225768438464877945578562524623859269076191844422317697448247001533505237464666728778267802556383955'); + T('-315381216106477443798809516461.945916162611156190552321997295114376958046547275354056014333919065425673748199256144380585548066158378662409475843035', '3589.161838511444431440733729960263707637958181400868325358533381567057455464602280029192715692411789833427', '-1.131954225432699752649141397708477473892667834397120107511962996304791377678417665209758473239521558381343101328776946782981992193865294194693770979873300748942276223781245879606796533776372414124841041914736508348886070269056497656762529089763048130945e+33'); + T('-429554289753358320963153203206734665772198736780.45185520786347258238318355302967532112035290', '0', '0'); + T('1463451471384605194456038106049436218092078691173664424376798273282402411629304', '5.34145410132810384872275111495210652002710418898122721083801583300401806143614616798518502693357282268142295737452661760061198730650979349477', '7.81695886392194762437336924065337257968714608565726584447407244448623703884415455226257285276362586454773057274509044560620808790280438685449822124417639104621469226432169534908781180559594976229125827018100297590274008e+78'); + T('473586353851131907618376944471474603970238923713969727224418527992189433742423567976837249481727621512554255639.8', '1286427255593.352272327514643909503984179320306560931658975694284708', '6.092343934711738377612937734307383870923174240356564095828149119059002227331699554845917346771273434048376444070758413332992760270463202297025312107690635975666422869160358961784e+122'); + T('-4048155812027991860998261874719005077642504207127030646327029367933424762620898655788666633040116830297381192885448334', '106705036497734766140329279268252590446.2335278949', '-4.319586136709639909348938311306692360922506424385494354567553905770000978932851239614330898183516223949738019390821277918151726982015490940436949045524065702817320966e+155'); + T('0.0000000000000000000915543732852883697633526279049753860806942872601198742215774747341', '-34152105784317312126489961356698852045721114680628002017655109882376030549039796836.83153535701271122760014588481469402075074299376935', '-3.126774641456043327979536556784366250157747125357071312778820430770070528036829464402201655884092881178626009467738410063014596140203388175163040146059581509034963217801746892436203877630743347979835e+63'); + T('0.000000606056178575650297523536090137837690540483833323054730991196951139940145168062878729776556286621722228058423687246723575421211', '-0.2110854059592627472281909321180610299910818145371006157746105830582652226002916315944873681237089216185278265414045060813822588197350141208020650990498', '-1.279296144887605810262234886377441922843377685091005337867319233708631851469414819167991307615079977909703057135546912192644428529187862612840717830395670958420462971297341460134768276466347220568187569616383072997479301070810241184256490139848082355340819140700544014708653078e-7'); + T('-0.0000000174023009167704116970725301110863248980544485359112331870888076484651233171728545', '812850723207869191281548186903956096.809765707322509394052629000163', '-1.41454728856777941909802731675169558153278554336163713719217823280456330004090313022045897019660317794534957404145735837838652198044782601796752835e+28'); + T('-2130698.0548286272900651895094179021589945303831135867320568', '-9165947089300259943733983387964594800521219964489263104.59571046797687349727612030295852399844295170184636', '1.9529865633834181981295933885978264475195798583990822467641671177002901506455322929500790695192903123945610282587760480932085484711958893867394353314006055160393248e+61'); + T('-326083155399690502439723947025744049762670117683.432074400669883911818553035189833194671636060400687941284537881087120570924444', '-0.000003445571861995590614007298331872337442294157873364826604749208387112491508', '1.123542944915909132217079826299777527201239718962104484441084589157856017183525173415387994466036390860102540946603848752279383640837621156142175767860780613378089921458710577851612660512939659621552e+42'); + T('-23.2079521420353162165629346282760720426054683804749740406', '0.0000000000000000100667680781319844905727827890837263875737788345658863306751556891847753254997696006873526462699281042889508598121471367829087954284592931196522647093', '-2.3362907178225593297823553952359877724440294726489222805197185879544455403490267478912169784494515330509275220029014923616029924211711606761207039492261868123451812767302600437565610895313205736991700539758e-16'); + T('2285581244840240639260487167234266.6210924312942573974763401176849472', '-0.000000000000000000918107', '-2098408139956538.8125895280916479508246913088182767764248101964273738189504'); + T('0.01199215867887013759356474044', '59219069282514349738400251796939074988014798278062054247507850372485277499304966991398291720701282976974931657695.89320830399601932636241718811893409', '7.101644756509164313135142859363774349015749437363131851507359602111507670252881439883943580721027909131341909904887723338723647408378876006443896747938535856090800949803175996e+110'); + T('10418927567085948892137885878723808945364687260625931932.039351', '599680853267121291448.38087680537808199', '6.24803137355843394317878805129936255762113268577294303839429005376139089696541797413362353758438849e+75'); + T('50831867721704613054022871310081961685717811744979380239875687986166840752637964249209739.95742211098733326424751917109066551862656', '-1632931078636285445774108746380428401452629936953024735101', '-8.300493658790009540471378875888368284941161669991237260884060249140601673097481745352940033672506184736998843139872004445042382050600280557809637308250946613651294900726384303212534288256e+145'); + T('7100289077488660412990.83', '0.842207839712975032430755755635', '5.97991912528935706872007298550620521929833614697582705e+21'); + T('71.01883', '1761970243586301256729933.7274571136169644922999518937631730701127745550670073949565808130784043676096', '1.25133065194314119280489519301543084253886394686592551344848526917216954629436791164270145276976454523688768e+26'); + T('39875156712019325311551200466142836628229123594325201379832637310133453471608904683559565236344258.967154811777952228563', '-0.00000000000000000070081075140934755506891264428157216975205610555238498806', '-2.794493853791575200615635819282954125975165218925920550666607458660524754995294291334846227959636949211292863866638640564674087684191891139999119222389967229521626102314595778e+79'); + T('5797150130947834056182621078494110956594842841052090075870166233975375056203178648058074850906399043556974734623', '5994943195099.1328888761373637634842940850229730116836324780692494703604483', '3.47535857284937649148307887121857419057110304246614305622459943600636593236940298049819575939494986921577262671435104495090825963819204860688181879997983293665235062953417708960478114909e+124'); + T('264016746346020173260674845542.56087744794671212', '44725565833116388541385131784578311136952.11515649206925514017678106974916075594822233327402018434035090', '1.1808298369744115980724840684122092341038122639077601880904123414433464879079693475998082113642766387031979298492866976697783365167381515796702082908e+70'); + T('-1204258217830.1047572987899835756536353', '3745937592881714229717990115898213651381593777161096717540301831660255825874475111361207039098321786912324541172077464946165364.14390772997939018900027', '-4.511076129706525686579204142051251397641532749272813862145610194389074922134315457597697830334597270566875350716009107169694204547970082327051675594936881425342543316554216670569498181531e+138'); + T('0.00001085056051858810623505714593197033408403035596225606886953365', '-392929408749548979689032253667965895311572351400702674561774493496364595721866845891578496858294676481040176.798243172529157', '-4.26350432917002414454392491493274497473851341095485596409214868708449409899775190195407623094650897889780302985371766392684564356442617678251382828651108441963579450892957153361763305e+102'); + T('5029414448475920188151028145401135310150737258101072206698406572639528330082067.9336479422747818663155268690086170021619688524908875089697158589347416', '-0.0005229224526200471446836303862066185994349069612658407253355478392257635933309390353751513396483385196163571877433495709051459895367873144796893', '-2.62999373863972991595232699135390284144005436661268919696790615365070651823630721931258425392749116101462135216825040904659228944045018325148257573243654477716244945479320745317393867583646412220760107366403103406898337360145950155726573614185125610071875889949474494080865196631936734378488e+75'); + T('-0.0000000000149459394556759606943604866160845855165524674884428420450005789266873424201139870021367301867234201955279838923502786908774569432473681039899', '0.000000000000072681121445777643724015525', '-1.0862876406992243098110834770746303342214020691767313742628853277726465868820586019765285955443439023247300317509304826500549194884609623643817234580349404842020431975e-24'); + T('-424139.3397723', '24.9352665519292948435181504860531561629245676859909123534754923791320492627466971516264644236625241080447', '-10576027.49238160664772089118930618199418545494982358874950081130097372753242050309994330560576035740865221100909622181'); + T('-6547933974356063515673579783328852017212683547729632232078003886270959230998276343908132763800852667899598581090407618744044143894167068562238.97', '-11922174512798027988.715520057164002099095961564815407735892440769625640988450493600253780499938690761112753154279778415248891368390538551750986', '7.806561154055215663901405645925227739464677757390641017715015265801022422067920560519544881469304761133200469523238148889436630472098386093418009954492665836535393992406767441416546896285667079520157050657599018677219464362114136929451396800416962537931259941624014093037081081406512442e+160'); + T('116971949153.5479374797237476837460980054925', '-7392852461118226343653879737274414841079276534234761286995956308826140702012532258763158080532', '-8.6475636218160290233694135116834390249179472139880806248404813419843222333387482382624808997980446329708149926437827055618140989332201e+104'); + T('0.094736370343830975556009350140982661429417188805833955451765939740836399749318571449220541572349173464405792553494108387767327206545387797', '-14063088472465823296636520114.7840889695829209677553679799383909290850887704576208141405158860265325506024127861905793354266036', '-1.3322859577055824770031704859177438035519692243531107997889353707418395463470343576295679587059797728931003195157525260292910231399354545892908442725681827168435407603526548235032165419174525789568586355685792534406527613767949403942954190037378443595809925962692e+27'); + T('0.0000000060238848102401094509085687708934429831403505207577935573', '-26397976144679538690.6353645112721463552724006844', '-159018367519.01583899352216272937345079686163173486566881281209888168576630569925947787199801314243061612'); + T('-3054832823620065247866462699675075655044.24965543051115834991093974', '-2755412779439299724.2984036924450889829105682176654094195240144615415006313170056714410711837165723063574799946207221645', '8.41732540125336804197906254683195597019539860395893943850239114957397624723405493043107443806607146233611284249167142426017200712427976573775245903141353510518411863114852845764186723e+57'); + T('-2450974019399956698469496563794.9748364333942615279874848551026505204635039431974104398444982010445818729382963397261226755940436258158321945719', '-997.24040302293', '2.444210318905143470429111243581921471467515949023475365592695716839122688195540502841004451264728108191685433698308378621706762322759533121835213000697233667e+33'); + T('-1593.003418430705083401260653839458373', '81482817738806321636670141568925456324894595.35515', '-1.2980240720128456541718518746184368534776478125249076285377131164060683232627757617095e+47'); + T('98261907174900314009700603815243346086200.8875197975215499156', '128758244401452895992559910962986981947835519218827223291426174867182696533638857.4611504455387701659979843027781766', '1.265203065937869250805348094516614652285677394459393456309889824224472248261724047240316582653646970392779473698285791164886759948690959417233989768983784053494623305125189496e+121'); + T('346496136331578345.6139565562', '-770.118198136243584727', '-266842980172845321727.9109640073233064983318371574'); + T('8094462815401859042799401705641425818247198451174542181431184727369479972319.283362207236223116403463114800998274436638818181016', '-44716739326169.50679740', '-3.619579837016970552211688799002785780552856029741836983454305219747190234820032824275611045529918418220339456506414179332920358828891256009156381584e+89'); + T('2729467653762704.3220008736708120084460677187730093661396089914034', '-0.000000000055233920094409680756264812311791211428686742640081962817736283081966745025774163718774682975', '-150759.198288205079331338550122412955542882826158428646159812354506434469254169683873619612365382943072278940175544745711284510129905967399982740638335337115'); + T('1', '98776520222261745669591551900242713389385936698028187815152403272299821654553681210659893142881686053028403096887300880878591448.26475', '9.877652022226174566959155190024271338938593669802818781515240327229982165455368121065989314288168605302840309688730088087859144826475e+127'); + T('0.0000000000000000576769268158760793228889322171711548712267346092999553202187549995149774466310618281592827181436884024', '7214897443070769737.590335358131669664171271', '416.1331118080442374873530552327247807419822048775263491897727868156732966268031408562709186237110762022701532092252726416209067252838924499674504'); + T('2563816381746605865113037452511580729789619725008213300126058517120912912629866105171095179961598', '-155142400902758369245790224073470757889134578664867029684200360213407983500899972118045933740420731880423071611781.6961697019774959718821', '-3.977566289379913215989211867005456529599318466838788807437369058021539398823672950585044348343474526479765303904605036245529631372734211590112787398817987454064611577927370338439226841015272470235504418419674575665836030379657835958e+209'); + T('21021355066083990352764111626531024748686292365672970531361459847295.43100373125999514720142962920161062', '-8692703317497385289852042779299.702257622199418950085745', '-1.827324029212387699226954866895393730056663738212949267989848701641289722199007782369745673635690581526275165825369689624008225949130316222067517051411026119e+98'); + T('-281371829459700411922161394173847749045', '4262.059148155501', '-1.199223379781965638825029107725389720131878012484246545e+42'); + T('-0.000000000002953739179434260253787432770866951567504749973', '309547007791848826075373946352866230269769314074366092085025869.7201225815415300560895', '-9.143211247914261165868175330266593984659858074863087669862336974871905611291966919042811817692587876933585012091675114363636105835e+50'); + T('-0.00000000000239144278978796819150765880370364103148388159945376101153092134918047349666341937807866834', '0.00000000000017790542655638507387717413464523193083130128517052867317685503104374366725848235452275428161059560313199945661107215', '-4.25450649602420004053833718175053649747723590806183497288310789806254330950196751041980603311711723907162265791776589017621131644531690317327724762991500539399348391156280420594867129685071798617771660731e-25'); + T('-418172866061503521911971552233519656327026674166049022680423475766548238660534576', '-90576902506171370108917411667870811129738963466006966688282481517335876800502911324072307434897211522733182430116410086632830502124065921343765439120', '3.787680291997906303359954806060523264425173800836418334594593478681399250024197130234921086970287168083653907490426018256804158591064373885502948936834304787910451280809462727218951755689222074507604311322831439358572513258301312e+229'); + T('-3430311267169742574955929826622072681758112689207488355884200258692448298952.3897753652042205852531267397500939984515487', '29178195104748190876234156211954739009200852852565396294', '-1.000902914234947463302590931129086303752468365453949881103219746142108956587996112362845161460507830640398391094393578265988318777026054838820693518977773210730880397735405178e+131'); + T('1217229941749445.9572811858261781662798606', '-7688.762839498170', '-9358992343247662165.263684546710966628782232475881555102'); + T('0.00000000000000074169408783659430746120211730010355927129635815598173767929633977753817875737683684742368617111968470780652946190285273916758224772647017665583547211', '20277751314053396744396463.85165787361341700070969293684', '15039888264.2541356850348902729846895882151710461905734702387731438442631412304238135592144651640509390778276828843359389845898882091777630101738827628755435200638106447703368100930825028533561255938115324'); + T('564381466888810169919601150245392062064224480660735222387818244250114897197669997801703266070021836470489338410440', '-0.0000000000000000002645655440014235375760091744435849282689052519875067111364162666736597818970677355465081835', '-1.4931588981175946834283111355443773198028167610654600849890869545798597157736617913162581558616543097793344871513878994482479287199763866058458885636014581139878719012494628251898131796309084420634183574e+95'); + T('0.0002901387540443867013405807910333533336446690397588380128405647147868703703433303126537291208249472115', '1532908562403392492424723937748.472475940195350', '4.44756180359692297666882276804364242887051626129128210500015334075754912171335276467442794092825498742382966447793841999956236194956994747766525e+26'); + T('-0.000000000225264190604268810784537320407445', '14950.700814220268672859713833679549117660443531292433032865528784491376833526537556454874844228048068717928075898239', '-0.000003367857517881911505578414004206612694308367570237761083545225919631139495505710310659653325677787421658102687518302736419664735602327222663837989355'); + T('-0.00000000000000000132422391255571832661986637', '-8685.9441213328949678022978068', '1.1502134908591787160769054777064094203031244635960077316e-14'); + T('0.00000000009742067142157691787222596751006921098920279989592268344573189495144592', '-118923723014528400203978798877563012809910061320326.53737153377573592386', '-1.15856289440289961067833399896083071996865135302176383556314783677919776746205807113913241561786412522310269565833727285343010237305940276512e+40'); + T('-0.00005563546373241014529561050614463373299027558680685062277259553861178444745012994288955540119513731389', '43565560449530398941183073235722526166955055524605404664121285806765679773941818978977694475240560247441941103738049224883.328637095', '-2.42379015837197033639269209261239035396339708689516443560833885654548577622441367344082188020100430582832598711242044837458341177912171781239207907145798643930933786640347757166079449567939368292304555736474640815549897983291274955e+117'); + T('-0.00000000000427087426712799927089415837629262439038369512842420608188380156879105597329387384339607914876727209877963249157620642500', '925233928141580102390081693311444.71', '-3.95155777477363086022568547662201291712827700290280460065453355510078335629837128123107501594590100763786464243066847452995303895192418602700657793426175e+21'); + T('-0.000000000005091071907525480076989317935464438083994221617598954017569512203716892574912245558148612628718382099960321042186876280738556548120017521', '-29849639725760264066839307790055758277806690063171510919436665089162295348507536342284533528662967910860808922458810578140340107788205629605', '1.51966662257574655588783076840748333702840299074683399397337485352697121303070516861952435606970784590094155132031721724526937976956111602321500551446919936325059565949482713352248442850374534543475972410515760725383665948678467615176539411200064096625744148848636243436309205e+128'); + T('-2532623712961933744380270221514261860541083273159263155049.929201610', '-0.000000000000000000012646589646423131239682610662957792721023875661746627573361000945171', '3.202905282663009949513269540690749564425465035038152243969308063023239476727318839202045865432868677151160472201684195600784341492531e+37'); + T('0.0000000113044864730', '0.0000000000000601669081479195180359444266582823155394447964452777', '6.801559992803896747300132989382930294307713993458802443785521e-22'); + T('33142360002065196584755139040522165.652289540188139925590361076693810562392719569608216426237486549208210658659065', '131866276226694967054888110190126225070936217278.208055190299743946923315513586077993', '4.370359598836895991628989736519636562344422619159613116474448702113850541696634666515624356906681122560009861221133939297280288166624498899890285407603655628297984634754638006796334523457886456545e+81'); + T('-28271980269206475098440832341.0', '0.00000000000000001997128856200158301984619314093468302232590147010149380231144706644261177500747535724053029495', '-564627876175.53771205568655371502005478701323612123758214517745046808228380387390782642610030197268449800392442510422897795'); + T('-613824085218213402416390718799790910276979950485725176851655692450022488003571999524663227579006467246542215327798466491629903216135', '144351', '-8.8606120525334322852208416649468617689392332832564915003713350860853196165803621703384661564257162553505615324783036436533268159152303385e+136'); + T('-2.6', '83102555490369.945045038594374940850', '-216066644274961.85711710034537484621'); + T('-19356482713244897360632880493785297953636172550378939890381044618408211766861486580267956414189437617939.34723659706434', '2096663623111671700117269467244749170.87006096167689688793276499897977784848766593786643930915441409', '-4.05840331762504879192862674091277246812216284989188033185403840621110675874956150938505763166302102413483441063564098934208044556598498878291756337336898624598153836135376440509322121089075137894784969112914467325506e+139'); + T('-0.0000000000961833377275620802044513471680247526397846980939658945385489196881637745633153811677968300170851695260551929219', '-0.00000000000015523082518616051240657860119777317366287857462125986656514276221641140341472994194237', '1.4930618884608626385191111567704817106628003163415171598035214188415333416493921720574942746386069040797685559452034643996408611374739944262662458626993363351126829421325696180467755211836761710903e-23'); + T('219117317452336788720880703911762541205752470989076742619261301626536476137450009416861100269148147444076', '1703053723960030665485934204490791810931377645235473549551623.9346390876850553262664923156', '3.731685634713343871742198830618170312603304239495468980986930004166517969952154798942905166375391398101794403344384735628903779970526327721072669544702681593941605616683824986240005980347423856e+164'); + T('-229026139172552757937028186554164451744686.4623797082584117720', '142692877312662716284497225068488555041426628476953112845882495240122781240223136406046110921847532189803193193212616817958104193853628', '-3.2680398778341887238160775782128956864982778025883686830736123355786002576636730049750417595903040868869020303794371246492434867047430164188551479071257052965280634450368893979035874971520108816e+175'); + T('-1073665452168840118738785397447323896819780779969711513798521784434976119794308932309275291527935867797575529606291327909398442666759773299', '-2201739131.40829642230910815', '2.36393124008131787118729847898108542201223436609958551819420766250456830353949023025701558031680369332682327153434667887063193820677205089342493716611601619687328685e+147'); + T('75900276157586733312083235.382581622118846776984080849994704930212640859922732548092821867297114657673701742587369980172993', '-148738026482687430520904431699391318319406299324616632922', '-1.1289257285170424910960307900697967942479647538118082242484827272252207217650225144658178111388034339556050832590401486962625381452243039292709188298700811929089250125886739075546e+82'); + T('3674513449.5', '0.123520835051992626211564329410225789797398349299387483082158104725685223328601760497980995245750734368030304555231401223', '453878969.6920179367892193608523230674423001146096982086973436692999598612243583269792089846259066311598292369117788993786442487385'); + T('-0.00000000000000000003630523450169119195624332326712988718220493077008794952403238435717494340472630938510', '-63664735097223219209774981628599525664223257757965282787982134793736977272874143846.500', '2.31136313719273856014857129786830896070271022062940478374598697364961332865316791963355096598256182029643618880489361616574337962520294943300606808278625781284036378715e+63'); + T('16255476060889702058292641519175308063089604.27385206453835321058', '-179922219665363.16403587084722191165281635104378752030512', '-2.9247213345924492933598059283240736222331848885894205158919467816021766897744680020212514605436690223674872782932121696e+57'); + T('-37337860121811988659501056235845132337764643336213883612586814001890615154275803513.70825146506875697717604166850546696', '-0.00000000000000499312215357184649280143043628595160134265705278153950603622340397592808084159267174620857129590490362315100615527713253386', '1.864324965411862434361080737439842005056233440510613636437519526417257892974279749554865180460594721444483260908377047401237999183242090755697516312142757552953410741754553786322115284832812113468103953081138139580969418569870010178873112656e+68'); + T('595287249.54365530407831622115559910904721', '-1768420334499109507714731763995306162286136171277649865409003891266116172008027525', '-1.05271807696104578648763801372031670967180464094032778762503630348461739223752684712175511968739692938359619321797420445525e+90'); + T('0.002815450816912', '-0.00000000000000018862881579393125180980026941613678890399387821675560344766145135638', '-5.3107515352016691075986894697522001159488606156481160553297195685733162144309856e-19'); + T('1746219149830810782027149888420786044489923228652389093.034680474110962166857959336903', '-1668828010190656.963346733783314', '-2.914139429168972634501569834110127443990322655116665224756513968188822900984956290803407975336799390526947925836542e+69'); + T('64662722228212130661621650365.32166567378954381', '-151753087137277233145197949.129178182548659416754566676577139611814504364107493968621776', '-9.81276772083142891387388835588024421410101593988612095879269873008015700198765486880253915926871899215898047800746249703290547200656e+54'); + T('84653669316972.30754613548716676668630807374200076888152269704972414345399368365406435043236681022822051377689088018808589089790', '-891907791289670302078281451791247530469932219962285948', '-7.55032672250669035947286471317344472517407746317731670298580361066330532006715429733763760659799434857873085352566481727017961595406096340089709578771542056983935886992682102727092e+67'); + T('4345027127164155965936089847807081938532105519246471030938300717258607661737728621832645960975070377608443948838275506481065283884757.660457292004587', '-0.0031549860729161313643870355404353', '-1.37085000726457005604716494913217288695044606549706377095554606468800726719208784612404038925962557552104905114304146931613984052107356347854256094879310971318422341980712315767211e+130'); + T('-61520610530668063822131867448046406754862343293090074441673351607446445867575168630626', '35605600761.929728479163049', '-2.190478297185136890729555264108152753112278766935841211441225374439764529201743516915979466007768687467908938674e+96'); + T('0.000000000000001947822987703', '-33311862590868220285105571017136406095755495416393335802876470598016841787968672731566765403', '-6.4885611717696735160488683809368479132926370588940189388177405221668999878153400559367803107491154839309e+76'); + T('-72035384592407021674980.84729507555', '40650025408409173438512516280344375884605.60024427411502645869761254054503221638189674172185', '-2.9282402139858721209738248775767586249381088104728312874024564502752576950437939324991537671241774101883194117425137328357675e+63'); + T('13803733920957278337452274188531173497859274744002844428727547285003127728359.612974872709554753729793023049535183014700983630415660322292927376558448', '1362366267088885135733900716922.19506685185416683405604525950523770517636717536975000710349005385816611', '1.880574145378278711827375831194045930202239941319475711762021264109852456142716124505511107065080979058954130330974983743544175658555804894085980685328101923082779320611251686876404105639204387659101043361189777091188374895482149778850837141250779728e+106'); + T('99584230876132495816697493861076736200925464688036538302231243310765908574488488858315092454091884601410984087967.53071632699032523', '-125146154822705515.5242914429658322722160073394188945992631305', '-1.2462583575124528246919426619953914719378688358583931729348000794287085154257080128549535423454367290540927132043549939350598411440675286201751061031732125669579309586594569286579560542932515e+130'); + T('-0.00000000012758277143478046864136383313563417', '-16907614855016026181418628647663025463883570088670313587786762910136346.2239859700447043819351603364622', '2.157120361554808579905490037140343865957737705652239636688633884876362102934163912327493095734496347577324386761512911704717665571233374e+60'); + T('11129202925396407157427240475525317417101748679895585149981795954110715244429638119040083910255519563482482.88385201997256314', '21121732286510044978255138780723583329997392678716700.9365222644226293', '2.35068044752467336469513267242489085155640464226702784189610421069783258880761029174834312728324802606762609982209717555410045636138013876460541334152485164353688420275011580410260339339064002e+158'); + T('0.0007623108288892070002324554289862', '-85942313073979832197394484133961158027209650751540287422505752621999709082525249310360508378232261949707995297970944910223297349', '-6.55147559160812975392489905452196370592406606471681012737363795317578187614200614611166153102989166031105288845674348069177007346051710313415670312952762175838e+124'); + T('0.000000000000000044051571525227145682264900344291236843501956911752', '0.000000000017712290570674458162141325247384093633836742093', '7.80254234949672231546338647163006869638114832232612780787802882189163497793578826950951184776936e-28'); + T('2497912210234.005032121063', '-36215243145530210288660899586798506035608544499.347970495067719072170763689884', '-9.0462498049813268339455589123940089929239003754340990669581623284783162621680610224389952660876426692e+58'); + T('1502959485835975870623286636747688.63', '-18.6', '-2.7955046436549151193593131443507008518e+34'); + T('0.0000000000000002380492844605809635389684807457429719545734217366913382', '-0.0000000691300263175410058423613287987265961212556285556225346008695026090127373853991949000359920026136176879063299466975538116975010485068', '-1.645635329963176721222121671096715786436871824519931699863275362362108471140125039004626432868692100285050495434763779725307894808337972261206505074892100990010512693296587878317760379976e-23'); + T('254809590039852410310539126422956405351723766563016602332405.68422228', '-0.00065877273880782339590525760713666216419301807744760105200422', '-1.678616115050522497913933697207225162184024783104908394273110760014145206072260328917980848745450315587200941660750818259780216e+56'); + T('0.0000000000000278510475015254355758436577787533929830', '457360.858470081742985', '1.2737978994588698477266685597352939795610307887931308474255e-8'); + T('-29020220592844713119041607050693801334769100420291179736770161092227817.69', '21673233203860610976626552967575106778601581986955436993267108076405912742379179', '-6.2896200853620150098094834197552528045796701728777707177496046234367216918962571321926709133055901673078103556052889626187364066099134572001385766387651e+149'); + T('-0.078265485392684407726026843083593796846197554496715815079396449815003056610109470601087662461730977229533667789541208863921705388520252404620853855', '0.0000000000000000206254796419314596280180899887058415', '-1.6142631756326962818018348319288616709731477037044772633530435371256854543702769134066969398322149439228993616976959581068599334680519507769306737453547711855684460684428941562939825e-18'); + T('4795305568846848112838662002421291203736834738342747362288755835416190464055590424568070003158113658996255292.35950008158232661087', '-8285467911375377.9458513915656103724404947804473238339', '-3.9731350415920213266579109721401773253848863967652965582593311148492458733327726591229165001156155949294034378674742185027297365357231327284258441411135637685909564095376656361814493e+124'); + T('19117591065319548455532984279934187350039995069275770.12929477022443443469354713128796911998383266548606048053491', '-65695070326024876590276239417471386610369211243031736907459699925951944200466086828836449.27041754314379361686911712287570702272', '-1.2559314895003525759288047359281823933287108050703977637835742243565477054442990115080659989437373048015263572203486399172864054362529301399064585328306575664987751933695137203217341064876484312700608044517901164971224777248000985491231552e+141'); + T('-4449958.97652133495121566', '-252540313515710072725302657773.59471991586456171844177757978469637150589979632648440614666063', '1.1237940350627462471642735367835141315103130147959353855777341370569264164618648847956641021208508179253842679614658e+36'); + T('-1258441607483954377789927095378751802020005502122407.10214476628115698182122581797494', '80891657196033813941356884134762328483.27517852967702319172611835658583660879767525096710103201452929464', '-1.017974271138177784694027841372230917155036713620577632485672383505466603972062360612431726994977661204677518975067557466197345901755339173598338486348474216803531725823378534129113963216e+89'); + T('39808017028002860936031338217973215314567637.102901794', '-57902551664450505458473980503658853607888324171.49605292290375427619687232427940212558542266526276651604284541035424385620765024160046792819', '-2.30498576262326111905050241194114191659986825956183943894195202199609220277997857123964697896577008957095100523340998232771311496428225722320228966585150676608054417194697150023556808021417286e+90'); + T('-25293916752365259143834809987793203971606533992589538543882915368792362597533769162577303959554268549391839092976944430801.45', '-18870536.1312144', '4.7730976997543781813462001933060950776383666075435301423297088056421996528868308501593986755779476128550409285754930853295224839815378088e+128'); + T('0.6419603235395239183208947139633444062611507467701373727615510595813003', '0.000000000000000000017952483446429057318650827831163686139172587165173817840377201106607889427351733260566157112519038473019359253459211', '1.15247820816075450454750045127898262549290759007121217263958499250330256525778703472457460506113402017388245419660594286457976772844458813380078355709054799484514557844989901980643920633e-20'); + T('-7754484348993.123525069214650584107205341890439441675333976581900424068864364093826806102195', '-1752105446017682.49037253813167091733073426140377278798600289379784348182745501211856094498254897275180116436441751208660573331994338298842267191', '1.358667425892973493966955704447747036342266355969033025086821842915237172969178185006052744518082018289583598988482542984184766184862727882606439182799978323965924231683530282046591309550608146208712260753677314753286354780307441584245e+28'); + T('116204805405208024790396987614152308611917319625528164258053148681924874821595877349738878308604676525193568190095523284.4546294386699942279642', '-0.00000708667732873965881702012704870812130887887783663833386408', '-8.23505959955691471303838517278590066464473883263415152528959807184051797771275805894703979322626180999206021924871332410324136063220356505352392864892088775379405012455775331410005572958884177905936e+113'); + T('0.00000000010139065992977811728', '0.2823639034545530635547682690320968784587487', '2.8629062511605290206092872865262220006122998552333654430647536e-11'); + T('-182348440817089344.0', '-365494613346284385774359945728371759418255497043130583704938461995522713031855368282526623182864551158365546976602079453.8724', '6.66473728707398913969618817118679541450450804984276803582504571866881111782170812402431629687112708340501385877734505804826605490564775757056e+136'); + T('35078436593053772121948478354132824046030742485793509661339795486768350160379351940260957647345172644134739', '-470315326468850136120.98841520254693896261066046950478030733711497927705290819414286702121213017731741', '-1.649792635827894394262863251819308110416062211172951136883946185746058880577253761809396392427026832922884334966951567100285510447677219200061048033820977456094076440088034531057882865490348221044489361050599e+127'); + T('-2329710971489131138898317317972150487.226887180882642662346810938', '0.00000000000000080780934683985383898326280513685583649350582', '-1.88196229820427637454825838040513247697835727714033766676609406173243323151115501339627651370238022434265916e+21'); + T('1689256363719086734358832495291997380220279912721648779060.022015003200579854886304', '-2259059589029194007856573438.47207932659178007', '-3.81613078678819075313019801142236253002420775187972657992120430084415285628119278545102507880850081033723214556951631082316128e+84'); + T('50563883339463774987198862916277845601202057166416042879.417778572998829235141574907848222440125486172315940364098463976083652560077213', '380058072907244.784369350321644073081361404543907907939563914660519351353607790299736723712817719111414068853481728614572841297911762329370311135686891', '1.9217212060703343272665422309643023974471329394919471100483903476011902558587720793118211708282887302802938658740501486070477164588947572483424138819524122982371487252360991540904867150086111696239666594880341944141794568786850282040411150653341851298511444181398173001624310751914783e+70'); + T('46294959374709179919178793118885893663797283026751959408680198256485686362073381865322911852807891547580600.01450863642145', '-172254', '-7.9744919321311550777982238299005707271637371904901320159827988704726854186125883198293328582935705506369486748991706581404483e+111'); + T('0.0000005527834082142680454399157347331241068314235320652520705781207217168327100784683628889780310703', '0.00000000000000266632277268185128455781020487589646959589371419742000347748975254376924718637309495578143940081972955041', '1.473898989682390821841521121371414207169953198718769475649011583919402328920280159796586990896854154136491120298716299421424991847787084749540756307376833028770272042850712186481647279973624030103823e-21'); + T('-3018957351229289626132713890715830302577902789980653248950686120322288204403609991088469882148969888336650704961738500782', '0.000000001082120521596790393125823482055072836760853689259276513674877920764922256435650861059862899919835', '-3.26687570359070362516085008576334548950877338799335353420537013795825989339548239608169241156257202285080364129276771767713053661332672872002678878052870887315156625253726777042206003909947050207392523720502088481097e+111'); + T('0.00010578119530223846946702960127201887002317294288', '-6085787778834088.70933788474669577642209247160329424394222', '-643761905600.8247941857377235732296308415119494854462530749858584648799519132617834281892261058500803936'); + T('0.000000000000000039289970150049295306833630957794488396625415545568122904585548214355360114104351072386053992611376825118885803929657418065649', '-4605169823674888008751577292618614971794.977555723667587656862637975931940238288328992', '-1.80936984908094126427921442372226709393792657401598962039210959706690306344862877971519465406694496205108752617960289681246511462795560122095156580067059723548593631880883004929720338763881489190940653165995808e+23'); + T('2514613511.2170783808206929866132543988564534527876194954598859691571100338559560', '-1964495794114274085237575951315085841.361649436638538985888913723131864823298797343859193187321313839924840812597640408726788696766685', '-4.93994766660887745881096220582576848896286904471239767301554888303067612828309748777331041576614562636212559985704314683156812973279114418194558517790467846327290437698974640024899151989425196795301938022962586e+45'); + T('5799359.56694741019279510257555786015925813988005191176124258432699765886085', '-0.0000000000007231844570746320510997217888', '-0.00000419400669980343608737887111010110559927717748555612552954077474280846281811020478125660977836613228848'); + T('-1791068145886144126734036774645051199503204286826392100458612918035133189286803934233671078314145954721325200457399093789769043791391200626757', '1.902', '-3.406611613475446129048137945374887381455094553543797775072281770102823326023501082912442390953505605879960531269973076388140721291226063592091814e+141'); + T('809656351460719225181711866.1488944461227535', '-33867.144809805871082384828278160351409245109', '-2.74207489010992553148307158515078420513099421238160223165035288480514204794793834876315e+31'); + T('-15343174181682054141420677206782114884223299540732121123190447946670136382584737580470391369', '987099689944419071747444299624152052403106779038923393493086986368730055942594131963617011747402639883887116360086428917.245', '-1.5145242477501571458201031358834948135288567189066332534201297139323596513233299183085395688552572218144560229423247824057601351422866714799537508985833062886631036720671807768726086293443750449585213823804063258405e+211'); + T('-6.1499', '-14122475646217852912636972117760232196408460299060710372963438774127.30802263764662251543254158300069146620610278670238171347884347702832', '8.6851812976675173627426114827013651984692389993193462722687852117005531608419262963807658587481295952448020911527940977299723539499376465168e+67'); + T('-252103580004042401308.937513693319696445897233569009398', '322191.07259437929639208064231154', '-8.122552284638533411190811393904476674853317117242659440655935323513978821796270385292e+25'); + T('-332385.3378738577828707399978866231142878436743418042927022688847501694303446138653358154658874513293895263254386919164060798805928631172377176121', '-1788688861556141964646237161499263851038929089394372356769751862189978338244963495542562526495618342381239342', '5.945339515995442741438198459409608195257376497495695646466626108763151210023427170436149956435379334122608797739249630758718894850267317176420365157416700495312818386418495814195596242152257323833373715286243473836090341661932706350920849774582188152382e+113'); + T('-2460917323354918446645703674853641464.424607984385990612569219446652731606596614873511538897698788038533', '-0.000000019704561911223284586046679188808477807835576405248282475083383206973764355330345760276507856652823084974', '4.8491297756448881664126623064115779205015987535516032622595439441897517259719875348865351513634911289023687531425512745832163192476366584227547545673644644097372482366494539257564003995127411984043445303142e+28'); + T('162243669579467948721172981736248370537958026297935040744.847805681773372416035821372548485508877545367724814214913560686058189175343393608601489512', '0.00000000000000043034872397155', '6.98213561759858159315183613323524194776931640410698827712570108401602008047713604207319502488289379085249184148133416471274154998412862192528868878238703113836e+40'); + T('2942112647049268674939521727079875936312678683322556734336248.11424534652681157516904544382063913587308466251549871327575873372911717', '-0.0000000160518477504399168052667437532822966025370257875590966186547766187236177521021479405317977917073345500604689071434454454499836553580673874665532292', '-4.7226344275078632315398240344022433291786804929459211275348315431326149856316741173727784448214255046618190169485768234658926420021181206553535921500696882020342752168452799288030099975139315001872319829531828024996830308930197541236951052531735501834035920248180157363728665364e+52'); + T('0.000000000000085659689652397679263363379344304760754897339', '6.8', '5.824858896363042189908709795412723731333019052e-13'); + T('-5.7783188901971298313183550831107549667729942738531150581362739386230606910679155155791688758', '-221439820124804823862034700.57305405733456151859741120374945380903497467757168028277653394776910998991571631868', '1.279549895669014265673487530332542622307080646887562219389924149894188918975837243317437652487919487957552517902434975981852190469467703844441311320668017835940689319709278323479039083091077241610139944e+27'); + T('-2847941374822', '0.00000000000000000333453862751515460136267946372896613495219431745263240560720335', '-0.0000094965705232425743530447087065739774971604318716917458420879678503055240537'); + T('4600164782241764006590425774876842089865111591027822696582831157578.739719314165811327385420927586685826049515030783212', '24936677097532922790671460124317897120172195409691302414459854884214881356875622080300.40462', '1.1471282377020572147332327802533044122369637791300506227907535665141877615112393905214612571695198704856557157162943485152720303637986357916099145417183717023786789993994223448696820674347492278452767910323944e+152'); + T('-0.00000260679215621874990889590646697464210606210167340857181603112129227967025884261071747351602786622983212594677321781361453743686420364802073156', '-0.000000001556976867693202856950382092896216853975131678027766508144349094921207161', '4.05871508611667956997596806284421681761326338922686367392307074925675080478202951240305304779651248204530654676779205376458787347615247100101002125251986813572273619622642745986755165968519176975902222802953070116e-15'); + T('112005422206895581683067200.66464306253548778644799733891467497177', '-569288990012093221416615337507679289992168170439593101496410.0385811397750145927182473472588677939073196039082322785618764898744620304415', '-6.3763453684041663102425299537134781104795400180652201585238496486086184313570463723811857606393356939337147660320432983174726251428956040334352123843908741307666227939307913535913017213265015893136455e+85'); + T('9234638972249568361641387675279591873348137130244080421631134092282316805807483776006033822789591399832066971', '-67062258760784733815191025025646336427603744103904997634972806618201463866617680780550570309742758409129550780654178901', '-6.19295748319427746239309128664117623036037907234855321924344705389173421377284837396403653127764945278959634318829418910758542716822570206539596799575970845747768528847286120187750160040083010843243686852268940286480535647178871e+227'); + T('-0.0000000000000000213737912857665573638079572432586728390000134190', '-181285730.138353', '3.874763359064957107044461619607858392925857065967379726558907e-9'); + T('-2506504.0733758501826133673932299604035650762719626337255035252843580215290504920568908', '-0.0000000000000000063307590401488217267263854328109316460163087745601605669460055525432479875260852024893294778103375548445194197525199702769907', '1.586807332169400912551173916660722325707840899719608136941744779695862574081783246376975996756197880571888252763332023979673897643998859766655287848000511959009182082181258704230204193519120752866923945862251556e-11'); + T('0.000000000000000029191265291623096374212238517809915598918566680688197689722067072109843781983891539215143111679796529799027', '-144459614607567236763647582499049882580370335188691777.776222539161298865028936239380239788850306312227587059786395648441342513', '-4.216958933935126326569517318236903884107951508793088777740048528137080091324499213666957905481836509907780548281139659624937009921418073052266920044400057847392420013165462539973879514483989622402887652609685114451199224677961134851e+36'); + T('-0.00000000000000000011367487320425818863869979220926084589271902620348942087918357405316552888186055679751253463369024199347442851320519227185478', '-21839', '2.48254555590779458168056476205804761345109081325800546258049007374708198525095269990087624386516119489548804429988819402503654042e-15'); + T('70555122248707171314736', '-81101086022274692488621411837767361950248378195397909.200440873455379623557692889032043422151272310592459622568950827', '-5.722097038804507341200180488072549073313712476829304641270901056694148836393515478119400477210997323863769882713087618465778390141724486672e+75'); + T('-2328737444159883.22585049478830', '-465474361749661451599.9951730137496', '1.08396757550285951917153850391172159248110224634381083904120968e+36'); + T('-20.3014066928633757647889348362325618964962565804945772008656587579802123642954157', '-329435370768184084561406820034073934012588977709700270652517248023565145783776412004629743988394401273.28545348', '6.688001440979140070188345542361244069517729332398623464379411528839275521534924214116901390055160850670677514105783601320874524580245478001576704187186030310275122663282192690671340259611636e+102'); + T('-32476062941804823808177212128.37047244026179396179206', '-23170264858.839398780672784729575796922981615252587039', '7.5247897993395677581189377054108136654093646195424085291052102413168985736328290334867475461403556911034e+38'); + T('0.00000000000000078020818918877022784107814476742023039526884490519321760350204369809967323559671586528756587388436', '0.000000000205123365786662618531603763262183979221647', '1.6003892978071778645361752741729365945858649779217485973276644181520266580188064434359630899417624168875864924106561648427968680391728674092e-25'); + T('16411.97479231952475505598642359391159894419529343140530675214816439312142161965104995811520160184950', '0.0000000000000027918217792698757486367905214734859040448642073369967425369035344103512043731', '4.581930866602584512178030964640390866062580122108157686730832013698006926287481502511491005515718454308878140351176787687577295267975260433555460720995298677352745266944804845e-11'); + T('-64342576782108353170532624771581267539756520906919.37', '10.7', '-6.88465571568559378924699085055919562675394773704037259e+50'); + T('-8221425425564202135543311357128878704299939907773337451688454087709054980064079701204709862893688091178322203851683767887893871786', '-0.0053653210895499081114778560023351704116389771011759394571181993140755819983', '4.41105872219414419707174038902324084811431456260158178418632957765849297276315251194170903369456489104239536734987785292755508500736273353438544501239198533098378964478014299793109607485495440119098699638e+127'); + T('-0.00000000001910608511655268019857813374990127054476192504583955285846583482452368825713345318314648457310037047203752064778987032587853577350', '642301865080793548011195664841322815727082571813145907.638646106551631362492680834939823385729510144767143760057', '-1.22718741047541772674654955433282115912253583024496254728712579960888844323021707984449130867906756160401346562961603346122134581742784760100299534939794183794586063570878664967245581007170245594883361157548393966363447660442291523748990895e+43'); + T('0.000000000000001899500268191217', '883952560680798125471977636433525656958767.4329146255465789678475476012476204472687459005798142889552058775500478237', '1.6790681260814890585836193220538636972839642793176878790660318627202422075166836170289452406463821318133532926386268184542463044429e+27'); + T('-506222074114478440.4212018359818757090468806843375176631454826045115958516526575279719878856236353605111026111752257846026439938084657014050761145504', '-5159467544042334960313178363211289944335613842064316815811191728903.574367721298576480151967142002627219994962105347353373165540336969132995273967', '2.6118363614714449452582198430103897223785994901299317101044259761348107189762413607706765732326606750493547847042725797461693311578242536847852702975212843374994786292094043375579903644474919183423720511760494827145234240751467691929508470719482500262148133264801792166487508484367183230294368e+84'); + T('8650434955204837420156251340980467125431552732.08397236030027468302684214339589220209558182529147', '-0.303570960693217884327420647078548564916276955021262691277956348864969879961811223297756', '-2.62602084976572571043981976309152638775264794392233958131099791715831899377187947876427492733764795120380985528043759980136856459126265934320288206950485593122394243946315413929694132e+45'); + T('166664781364.0082914723488023478368828305505987873686361307000655181790946128760191770642121717143556656346592000446628174724572', '-480041.0942847509055712529720906841565497160321331762055830088670429871444554935489589608266394637805469063', '-80005944024707299.88369343694993429517249943540140207247881593079529829548920836320477337300843753304432472775747784579377690170478442441481497272861023856984874550780497963725202716372180855504618999968964525770542110325165291916036'); + T('-43211558252159093527866775647205601084011492340.205459697805340231598755202803639527161744593', '0.00000000001119203318598549392536941753377009590965307584900110755022862027840043858728011387253539611180', '-4.836251939763099008266531873875699139740918027346229229666486821933921583162396652285702155362998553549998984080376784393703700976212048695921578240422117362224246009514826407968734974e+35'); + T('22228080669906830995384898726318434540920054474075066362723430068303595334', '0.0000000000000005446682564983826904165557014954366345827192263245436061673439169771964847765827397722973716801924439429612435686218283131447915481741738621944216616', '1.21069299437835559678074390552059815249561615752757133499522502582835547433276587506411508638591250461101776265492507290334698412116695650224909917771154983775120278858482062610470094757493360226297555949389464060902869744e+58'); + T('-0.0000000003773157928', '43297647023077445.54510130448338353765777486', '-16336886.012887026261648726857462053937811976384809008'); + T('-704246.0642491', '-4876468942183457666260007295840240729718873395834733463009561654592496364003930788774251638836263860.464149571397235826605163', '3.4342340599656720408721350433721409241108083813038963987160054952477748964430703827960612606796544474314358764054099696015239692357781033e+105'); + T('90714014677317257217388754359562724228350422511592300196367622823480490782750230695', '0.10551171877203891416100509846755006675817523511356135349573800436749642311', '9.57139160531570883071608150743717558732170393411960576472278636404390923564848224638754968731571966908325157310107689739849841961000661380686664893982936145e+81'); + T('16256367650251592857824070659043447853047682031758021447060795635763437999068158011730593356058028259231482670.842728511458309985368672626159', '167180302632355.05677826254070883700709474391390089985215716385024', '2.71774446347188795843522760152851417095331335558235538784521529465054664495076688729866682142620092642030334321689665117663066458919556787136329889313558843246657535262982668786110905407308427324058242816e+123'); + T('-0.000000000000000005140869693986476129573937292110832444827883905213371700103686737472419302083991260187191661701298052551015422048926889376', '-23431072984.29109719929265906334268220161090515289622128095638741310550195556470', '1.204560930025273608708687379702964400245754501914517994869604548744993478713638266232843096136298708651286988188211879699693589237471003927285113544165412103336583365360013429733201256002657445106272e-7'); + T('-600918601565864357615830916531004971541558836', '0.0002398203266606694050330194859330980464992506791531578245580976766372221543075302994826964325096371', '-1.441124953239982356850028499314436394823612382489365920407488055245261701578444032269000578787663442887261399958157232897473876372957266584156e+41'); + T('-0.000002378573545299614819606175997977561025598320050', '-2882653077216085525237966723240931593332010153721729409.189099950085184011450067199947461092968807651228141791418167', '6.85660234974270886050574307192845780707197555258670774440795390596137425374082134400993260259690471606609110758329634878468480296762286592478289418958225034835e+48'); + T('0.000000000000000022357617532781889076479320065100116692254213222725326015200603762919174701589837856906', '-896457719826992659089225870644004458751127732719124385827686320360654074025236', '-2.0042658834201645580346859820519392326977523701452584805357472701178299220185960756765568847872663515490447098727456428199599156161369223396351318781899083200879816e+61'); + T('-0.0000037591700832106546820837009314715135833879626195863911405199', '0.00000000128660973296737392590374219331743360889744123526004704657440431966332363276599678510386', '-4.836584816938601241595643894689727875085794631034207181521858384737358785559745009296624885016550841630384096559285949624409877337769212375896814e-15'); + T('-10897404485088933268299142109127940457874105398307905112497480738702104026493870', '6459527220783833615589828721781406862908330296731571946257487596628.142', '-7.039208090732380052543394587491979904440526984139707627324909518932550024566922074139234694919548719030400279757073454088117750506466392244643248954e+145'); + T('1252391487512578363516059332047552591823815440694963818513488609376352517930673851276.19244762777307975100', '22549776.9253795732526305732013511684558623600507908536351482864251791287592196740297262530719650195640957326260', '2.8241148666652939539350687862707201683973473917640485175382134027259511907319776870024731139293000940076904783362318907295063149688420418024813050345759700762391301983348609040284923961341431326021436020670656126e+91'); + T('-0.000000000004618950388937140493422755399930264176038354392749822437964314306322496775785511138074695877738144276032647315124913748488917', '-2713380462202072657447653028643460793172301', '1.2532969741222701540713742524625604310117116627579838128477044145948287310122585599028058960352298239073038474733050249887724953498915163176662179193294848309569888017e+31'); + T('-0.00000000000000000004741599927671153114706', '0.0000098605921767576416944956043265259701017397049855054246352774023236279136700079166226671683330780112375', '-4.6754983152108772107589021499824280537386842022454892219026854810089318448711395624891020610400431916945696952628194508675e-25'); + T('-600334522639128350301416069108895484950049158632569154577774908833218708159964256760025260070745036754849229258748618.286225296633751065085057954880221', '-20603943628058420.9233', '1.23692586624339624137684561274248493253093335427682675519597952187340115485564971154200167383285889714823571236526154847178654496322656526986532466296684549399002517280493e+133'); + T('-0.0028569903450426823012406248893590913347605950672345342794', '0.000000000000000000380602538484379176276476072502', '-1.0873777777486072321414819892742916452188931452780514481064796648209244384695987250588e-21'); + T('7633371138864371851511200109335895009200379214065654.14141197969364686617958181976', '46557774899433776362769332468929072168263071780847173536.32424609893425634', '3.553927752070818711219752919654829713936648328701795633611695455871498173222792379572585838047775680404274006272352702005591443767922861383251901395172784e+107'); + T('11816689310524760.33060749', '3240086146153074.763149055913088596613954276720424786571958312186345692516028911031344618033329875358392613', '3.828709132842640485458626662093761049902194180604315455762384568460513896245457880390402922939380711647608722106357184891221847137e+31'); + T('15417668979208863688007903355418023589336919725455814', '-2287252965683244062854057265399517873076559773521003653290361219949584429534587223153067', '-3.5264109096618027617770541672930242149319875097968700968868729901509384897856549235466082618911136178623675867468948846074586307080867081538e+139'); + T('-44231051261766981720932141949492661571946235314205992269845098822302266502035476097047272345277610.27', '-21829364252494551993461871095.1405414373418522117', '9.65535729263870199707274609187215999675619566645960063838135526473595293696284813052387836041619820102648568607484181212361915051957155111290134159e+125'); + T('-0.010471648280929367353726533714112845102028595890585874570958083', '31', '-0.324621096708810387965522545137498198162886472608162111699700573'); + T('9801144054.04251480', '-79669022889354091.1326070042372454589141728234307836693721872475118', '-7.8084756998336986277926157641231569523889190793366151638111003547152953122771467464e+26'); + T('29857288634175691192253935741525569423464902722491247366897306044982457983212231816738628626832523979506745945', '133673.6558945837023809692393557234541133', '3.9911329268300663632380133640663780097335900438380448470493780783062334184720774070186349410361053454199720794804033925701541209810757057340083455685e+114'); + T('-13620158075540606.0220850459251063150637623012169134311683793968716003579443803708152', '-14094712052845720944279961661927524928294844400168253261.8801483866631477108668134130846798999339316583941852334437626140968', '1.9197220618898615906375442169544326587585370014151488298656204877054492796167185482130313382428085300372006548553535032109971116684812746007217292632043932773898787721990877866744793392082655385848282771136e+71'); + T('118440515054.96300744924345961909763451770037124776047596926946', '3978918406101218410350317969873779924817925511337423100533163173007579791459856530353048879996496120205533862684343054321905', '4.712651453803007726438461712612354142589559988228956502605819373002120961113842720385180079632764208616661380363663300333950937121937309186788267547560787574638782242683284222185255213e+134'); + T('0.0000000000000000004979626118', '119953.13939299602151864098685411551208280009209744651134782647617437471653240473066119015267896990648067942927449283677891199638584032687735555', '5.973217858574576550243146820040482597564559171812500490156201032898210607636089901472178932446062156472087484005983212281811688264520970961370795522549e-14'); + T('4133032609317612147361.233208455670', '60149718767070729539657807610332371421265360276297353368024670202.145813386468110250239535755215076073418035935987159939685', '2.4860074910558688193760888076283428107792208632944279345307661267298591118711344604905557070531163947655318143762909457571230898163106422046776822919626395e+86'); + T('-0.000000000000000025988801412726981607051504723536759179533093115290316536803305521555847577878002593862833182498872', '-62190864847540861920221512167077698610328189518126509.945114225', '1.6162660362084827318707380558579363611834016595419194188990226173706520381985407013085330782761618687291735642283204415795057016756891900469697853795529736542e+36'); + T('-517391939544713325422033696525596189851051748767955039585693350056993951682945080450723027214906277369681756055494613881445451892', '-6355737319244501.33875834602457354455598517141883018726489236', '3.28840725884062937342287062927549804683222950446951497853928995858263827438383088820860677614531136832120859449547463148055636204133361775822367974808862660315286528874721657070976693834512e+144'); + T('248488108396888727192484307620472597201728811.43632801228625119529655174763542491519552462322578674423725814425253', '-244376619784336994670734053495423487949530922624294868474118463232994026818752162901576014805701186113050589437429269164232162718718', '-6.072468398663559342194397673594158367331416443540937376483832956458681282701204862291922555840434608500693418850945313497296767648108091241452234573071111256003091374254946595152378328332428736545902967819673107271115746769252798457479074985654e+175'); + + // Exponentials + T('1.153024e+0', '5.28973573008e+2', '609.919225043976192'); + T('-3.699875785122930862283231104748329088664056423999601e+15', '1.1e+0', '-4069863363635223.9485115542152231619975304620663995611'); + T('-1.2682525953252723e+14', '1.788378029508237622037088155833989378609386207655e+18', '-2.2681150773465187729527785601467557683746716925715084680772194565e+32'); + T('-3.87722166e+2', '-1.74278705869601992403691e+8', '67571717327.438998052674620914706'); + T('-3e+0', '-3.64329808384254180872888049513111969646643282968e+25', '1.092989425152762542618664148539335908939929848904e+26'); + T('6.953012278719261355e+11', '-4e+0', '-2781204911487.704542'); + T('-7.04663671550547513365402564941508037562051247993316079593e+15', '5.535517336770122093358205271769744142052184795629511766877e-18', '-0.03900677970460142822373864049115522460524845334243105937826127540936694775384656847162726619838459694385924193041061'); + T('5.08438408986e-9', '-2.606367e+4', '-0.0001325177090713613862'); + T('-1.2967e+0', '5.94990983e+8', '-771524807.6561'); + T('1.3117e+3', '-1.959557842524477358350764324331855847355274e+37', '-2.5703520220393569509486975642260953149759129058e+40'); + T('-5.3548e-11', '1.742694574037778940228462366629620551e+11', '-9.3317809050574986691353702808282921264948'); + T('4.34526424962996265825639250671e+21', '-3.754914933534859756171859142125715053796299171e+1', '-1.631609762109069348677868227008975151085048810070540943592037216417378493741e+23'); + T('4.7426914347369245430071315112274335473949505818891357635e+55', '2.099290936966289806252483785990857067e+13', '9.9562891457708756252380705318075217577762765683497811755225761339325645531279572292864156545e+68'); + T('1.2197662968047362383e+19', '-7.9257e+3', '-9.66750173858529800389431e+22'); + T('-2.18492048239986982664891448764e+26', '5.0217571e+0', '-1.0972139945426971341049955535599032244e+27'); + T('2.8477441033458111e-12', '-2.6015762266879431727233849707015975771758956198e+40', '-7.40862335895523532800693698581126602552353137494951139716821978e+28'); + T('1.17305251157767339030842411702548e-7', '3.1679877726710109082864387936446078459964397e+14', '37162160.13379088759968293791782997863641886182709969796604371507532234183556'); + T('5.516400791447843686549580838221025644959140288781e+40', '-4.534755696021348164010120097087738141133999137556364474656e+25', '-2.5015529910554782273339735168586403296046609840907360623635477256369630649686086353650780443350045195634336e+66'); + T('-1.086178703865e+6', '-5.412964e+6', '5879446221587.90586'); + T('2.193003362433320722921995078848109409779629e-11', '-1.87156484301625964803880921322257778262063404562091823011824e+56', '-4.10434799374664745958524117450745644772403340614160247100180995137281346990234693655901738534901333296e+45'); + T('5.690242268084896613323736558476149127814487192716110263e+4', '5.85123113232510962819522680703136616268672961423348513284699e+54', '3.329492270949058963099905818513145552769091859265632399465562585831994642969765945460416258196265143264172794765837e+59'); + T('-2.2964852129902920477142981e+11', '-1.01192386417445983894690800351420572044711646857422992584148e+47', '2.323868190748643763813766975749316051539457362388056941019107244885259571701270065188e+58'); + T('1.64014114524e-9', '2.33457695670849217356126573862065622e+13', '38290.357234267802543783512378452575905911293928'); + T('4.52030709268304468292307103018250587082757e-13', '2.4202633390406694150089337e+3', '1.0940333537626286438097741446790925743401036958119194290469762262109e-9'); + T('-2.531530179588420531938806173298571611356854e+42', '-3.7916295786409190517918e-6', '9.5986247081496130774858068268051041666243771242517966898979109972e+36'); + T('-1.1137e-20', '3.15532351096658148747044e+19', '-0.3514083794163481802595829028'); + T('1.26704207115899080748696654617058814620502905910804474e+17', '-1.1036640030158560360573681189153991777396167698e+36', '-1.398388724244832908797767208849960696897136903372124358147141607664782163824521550287804299792680852e+53'); + T('-1.92043925491801737087120450765880605794833102824745131e+40', '1.48390768547e+10', '-2.8497545698511264714107436784310097859137225929760606638486194657e+50'); + T('3.8135622104716384192078983238750322e+13', '-2.39302666425671400328234877933630532203640643176e-15', '-0.09125956055460405574747767900047040915488905349535492182534023415362543138557102672'); + T('-3.234931242339998871854389747974137006095446e+30', '-5.92883411067302421812958123642550690642906114730631103678724e+9', '1.917937069526724859889065751200796792104177866908520783368616010428214659504892064497475599582063490904e+40'); + T('3e+0', '1.99273095508512817553537488885e+0', '5.97819286525538452660612466655'); + T('-1.953336949e-2', '7.78542087974602115e+8', '-15207550.26792398884803047135'); + T('-6.76927248655350571291737558944587651874684243378e+47', '2.106647491079819039765594992079775666086664783295561e+10', '-1.426047090023359087715991793962565118985535044059537158764939014517624689564606363869607106631045058e+58'); + T('2.84765064643062294633e+0', '2.55136e+1', '72.653819532772341603485088'); + T('3.03393155013395755198972274893138442728102576e+11', '-1.794588238175697749312009789507e-7', '-54446.5787530056249211726327679537663382541795271931196078506483571264470032'); + T('-7.4371366140844e+11', '9.1277001754e+8', '-678839531768519399904.0376'); + T('2.56791237096035223695516010175181403674163385e-14', '-5.44464273285261087885992104112953082914e-20', '-1.3981365429151599690537623761404625947844618835506028383097657567011072106548790389e-33'); + T('-6.879908191615608804901708679355480110539e-15', '-4.0968480016502745852031526855040036466e+37', '2.81859381263577613382981765247793574699886457413439013342011267606204270915174e+23'); + T('1.407896156490752151388208148659e-8', '-1.377363868116052e+8', '-1.939185296009824854218448713898983585080174268'); + T('2.425103747079320530219213960814750892199747341e-18', '-2.365116997875961139721649192832330725431640562e+24', '-5735654.093829986735467358771314018265857755686256663053548830868280136074150452583527245642'); + T('-1.0967188654311383e-17', '5.50107804404633954170295415508097739e-8', '-6.033136071114646945658547999340034265651011304263037e-25'); + T('-3.2712219404248354159015350722161266784e+4', '1.40636e+2', '-4600515.688135871535507282864161871915434624'); + T('2.7739526916093949721614335309760564882447898334454312345e+55', '1.24528453636520646201893749622334742900013735e+0', '3.454360391469821959459359614081123116456332059470735649519645107811472952525654511905494830480058575e+55'); + T('-3.26272930891827103933126340157752087353407692e+13', '2.0026083903335067609700262e-19', '-0.000006533969089426773691398112669586901327358725244893395121554920405215304'); + T('-1.06137697482182359209772074638146895e+28', '3.0663106098e+10', '-3.25451147889358514503318856302707319949426571e+38'); + T('-7.1333686145776974736348748988848e+21', '1.62872571577602913313701931021625476208216466585507507747565e+15', '-1.161830090267232160311720624731057789079310830776668256181105708907630639297571581978415512e+37'); + T('3.271164612807454534123020114329520320585016126992181854263e+9', '1.2e+0', '3925397535.3689454409476241371954243847020193523906182251156'); + T('5.65403478840648195280973451110905199e-11', '-8.18034629055388719783063246807413028100652148732e+15', '-462519.625080035971400064460401798364338310053450183034154989804876490732716900057668'); + T('9.44482836533037505193155281233841e+7', '-2.067341641721856797e+18', '-1.952568697856325861901776699253387295308175672267277e+26'); + T('2.5111226381792956734986397e+9', '-3.65360655537789827590991569211646510131461e+40', '-9.174654132209716853544084660541570252769600723604642707862516736017e+49'); + T('3.28741239410951819553626698975108924106326e-4', '-2.62227844885453731582e+18', '-862051067357068.82790743503875251297002496305525999591232187732'); + T('2.2772892974034099e+15', '6.177601666756392528944e+9', '1.40681861593257990831209635468300461456e+25'); + T('-6.50848921524116628e+6', '-1.144580764938138569486790679009e+30', '7.44949156457235930691999052822025420513027461652e+36'); + T('-1.4551927019037e+5', '-1.3e+0', '189175.051247481'); + T('-2.2911981542413e-12', '-4.53314582071257190328650375668441355537191e+31', '103863353373233077959.40247540692426855128645966365381883'); + T('-1.4602128592500770116678944302583044846446637e+30', '-1.427582797083786e-16', '208457475794593.76574073813183484779514002948555208066927682'); + T('1.6700609441460181151986345895359954232196252236e+46', '1.68243152329e+7', '2.809763178246720865741573493401128674173862301164254857644e+53'); + T('1.05083997100929235995740938763615497143966041793319335e+49', '-2.524496056110348375423188927e+27', '-2.65284136241607138569403868866619712437928400385166771000044188224282590147003545e+76'); + T('3.100786363878827739e-10', '-2.86304063902707066e+17', '-88776773.7272606582182668524792103774'); + T('2.502713517421925552323011065985443554034244e+42', '-1.22434e+2', '-3.06417226792036033073115536852861796094628629896e+44'); + T('-7.9489222898867596260428e-12', '-1.0788548012690995443645e+20', '857573297.73592957352865844131522518881758006'); + T('-1.0755932899013878523165928263944458509156806951399812108e-5', '-1.11614e+3', '0.01200512694590535037484641917251896792041027851073538628622312'); + T('-6.4497917487303e-17', '-1.004446091246e+12', '0.000064784681113628528184449538'); + T('3.084474103157632963053e-3', '-1.340722625329e+11', '-413542421.7344814434949807418969437'); + T('2.007409677882519495029550241974657552014828965e-7', '5.222151840789271106861316521519869023311e-5', '1.0482998144572396943190891671428030237589403912003291601853143252123470079223263003115e-11'); + T('-2.488498956742602121296262808732706422946353052713e+14', '-2.23172e+0', '555363289174160.000613929563550495557821783503480065636'); + T('-2.9688672164600521862302335509380676629e+23', '-2.34340486619e+9', '6.957257882124446358953277414968471000555340527351e+32'); + T('9.6116339631e+3', '4.941558826e-16', '4.74964546426381633206e-12'); + T('-3.510917030490276336587658593367687803429e-5', '1.180564327372e+12', '-41448634.02559652698690017440995500011934045540158588'); + T('1.249503228e-13', '5.879424084035664549067080010774031325182324371002647085e+2', '7.34635937178350612118448086199642691938843199011087712925229038e-11'); + T('4.5e-14', '1.6224776733813843876610106340899993022215e+40', '7.30114953021622974447454785340499685999675e+26'); + T('-5.98567638319111415891202402487540407421463486631972864107e+17', '-4.54793136981650498391485340038861239718e-18', '2.72224453926846670043530235188742096666820419395601557608672857967843105674091877295333165001826'); + T('8.92108677749256373753068098541e-2', '-4.701266425389385608e+0', '-0.4194040574501097838530020557051108449340791197928'); + T('1.0445719060110887517378867373770257738782319e+19', '5.799e-7', '6057472482958.3036713280051900493724627198667881'); + T('-1.03890765460564576e-14', '-1.34206940160748687807435785969646342084e+11', '0.0013942861743420366640453267735350857670895370671868416384'); + T('6.39749371e+3', '2.5234527992374730183240434196649804550511817034984615e+13', '161437734106036264.31022782519073602768462872676198492440927165'); + T('7.914175439604437611967814601653913774828611014407671e-5', '8.32100403850523895222657658496599490340606e+15', '658538857943.8750019874631462394490423060270196984652115300400533954357304447023953861129188626'); + T('-2.77837203022891121310898693340776679571778100244092e-20', '-1.29e-1', '3.5840999189952954649105931440960191664759374931487868e-21'); + T('2e+0', '-3.785802336743340316719402396217939978601e+36', '-7.571604673486680633438804792435879957202e+36'); + T('4.743769864188027932328495491240985e+24', '-5.9891655632114551610420257227248006595584101099705918e-15', '-28411223110.395218469762107537426925959156755933965249012600778016167994609252836864923'); + T('-1.696501776305087785563120340668939029159482e+36', '-2.20704482451194839742722899349253308746537e-4', '3.74425546516947120760454369427493495577833827584040523256623062924543284078088213834e+32'); + T('4.0131499023574625019065378616938094123e+12', '1.177461924351806545225557804503154113578719e+28', '4.7253312067420823358733892576894302742518304481762080832752336264184374791768437e+40'); + T('-4.62155685185e+11', '1.65583875e+7', '-7652552920621239187.5'); + T('-2.776598951854774016146205e+24', '3.5341178108401263600119940986415244381516593e+29', '-9.8128278093099833546223999989350419583424311768423158174047121479565e+53'); + T('1.12e+1', '-1.313e-3', '-0.0147056'); + T('-1.400922738050340928068459005e-15', '1.669774637213352507258799185019866e+5', '-2.33922525669194448953065643831459603361384442257691893159333e-10'); + T('7.50109935679466448466358706299522e+28', '-5.03e+0', '-3.77305297646771623578578429268659566e+29'); + T('-2.38556354949153835408756963109992783478e+26', '-4.99378748e+0', '1.19129973861952045985823120474150382502278725544e+27'); + T('-2.94e+3', '-8.61615789244720791078571983086407412571238524628016e+2', '2533150.42037947912577100163027403779295944126240636704'); + T('-5.80381041944064404262216137492215065819338e+3', '5.677138821495566551897442869075850448375293389320539675033e+37', '-3.294903744480694771704130256831336545059429064900653708388680125250845128363784484521559308407188154e+41'); + T('4.58722638789532058289643e+4', '-2.292585677620131398099727011e+18', '-1.051660951688994125699713239960797492772817868647073e+23'); + T('-2.288825775843864143902825178240786758e-14', '-1.022792029007781346809e+13', '0.2340992759320655142089938144423568704277940784273012755222'); + T('-1.432063323237600412250117767285385708080998075274668364678e-14', '-9.23012609141738073365221260162e-7', '1.321812504437725779783150336060293956648246141009265660188911448444031899918334929357836e-20'); + T('-6.0806e+3', '-2.9505713511085379204927821042777582523174534e-19', '1.794124415755057567934841086327133682904150714404e-15'); + T('-2.1971689665281316657e+12', '5.06674545635318811308850459987394e+4', '-111324958779966411.74779876603862140385999575942221858'); + T('2e+0', '-7.9498279886418403969498688721389799731931074e-8', '-1.58996559772836807938997377442779599463862148e-7'); + T('-4.31446036399049665749135715315413935059097082785e-3', '-5.09957831192823753379633205333620130303488425232090581e-8', '2.20019284998799462125934843416682842768267375970275614241257898190943464155895136069876374903975748085e-10'); + T('5.6684216814938374789992297e+22', '-2.466e+0', '-1.39783278665638032232121004402e+23'); + T('1.4726466812656072908248567521825181138629034e+8', '-3.47948862867465172229571384341201136985691220463e+47', '-5.124057381519144835787886917183826378015360092082220951469308136228382069243924518066722742e+55'); + T('4.3284361218626063643720235128240704200079650833e+42', '1.4641063731834e-17', '6.33729091193628179321704177525739784198638290425046666717722e+25'); + T('-8.504503345e+0', '-1.6126451605490274984274251623885903733401871912282447644089e+21', '1.37147461621872663968730195332709350199064207907267622573942269977705e+22'); + T('7.7309990341924055295760169328629798135433331298237e+42', '-5.99563576510407238824175823080622306644936962384464739893e+32', '-4.6352254309389028017492862352717241512621152128519099776509088009611537721357769693774958840413184214468641e+75'); + T('1.31099220633236524445967265953445007243e-2', '1.7160044747e+6', '22496.68492363164434927557667458365943093619102521'); + T('-4.71244448219168433e+17', '-3.661845152473087014511441938e+27', '1.725624198341216588965585001399981214121943154e+45'); + T('-1.6192523166690470927016735287431037161e+8', '2.1063669951791069077512605999904333513315096716248026e+52', '-3.41073963669898840947516853657748402318394608095484774905332123128295765265305433698894186e+60'); + T('-7.9546255726227721651851197010394795e+32', '-1.6352825346150572721595214349862e+4', '1.30080602683123181981363225429281630656820439050469581096187376829e+37'); + T('-4.65033001e+1', '-1.78402957430342048751447188050189199e+35', '8.2963262681107211387373788951990821828756199e+36'); + T('-1.0747111621539139354559268707283340006236738352646385975e+55', '3.4569644402407395181922991072e+11', '-3.715238271095879729064413458963542564475178869110977001563130120111735883029910152e+66'); + T('6.3652937877835233734658553177768102e+23', '-2.739191316024006563208208745870453e+33', '-1.74357574674381829401359393298451323167803405210747026007699767690206e+57'); + T('-1.38596e+1', '-2.01668654e+0', '27.950468769784'); + T('3.1e+1', '3.99532408029111361202961444968519230785160272779405533506e+35', '1.2385504648902452197291804794024096154339968456161571538686e+37'); + T('8.752130293411895486461455570456266543110235191058256368242e-9', '4e+0', '3.5008521173647581945845822281825066172440940764233025472968e-8'); + T('1.7666567718645722011538689771389140608479155e+5', '5.79849364509293864972181107177185722325631e+34', '1.0243948064717127403933357900393416605736130527033851840351793404944700646104585721805e+40'); + T('-1.88074285551825927e-1', '-3.5892420997049074284601888671967281230296723689451e+31', '6.750441435745360244959256403222145003141120524314248902529158196077e+30'); + T('-1.47443449855473683902404463491959178173791276282416e+11', '-1e+0', '147443449855.473683902404463491959178173791276282416'); + T('3.6674516424397608e+15', '-1.621851622618484198437145865398587268422606620129963582e+14', '-5.9480623971657509801533671437416378775411584549470454175597505327911856e+29'); + T('1.852799859644936708675646349852062e+33', '-4.07939656803717490972435529358637164801722794978e+42', '-7.55830538869531417546824622551390200682044219768001754254044667676246763456544636e+75'); + T('-3.6242110037e+0', '-1.1278795340499000045446830565915076472512673379718862044e+0', '4.08767341815167642135552034202789183114074114504811682323070735628'); + T('1.4274012216017920060904e-5', '7.3181715e-4', '1.04459669389914186078985917036e-8'); + T('-2.3756329516520898291145904664793103180184540970355072e+42', '-2.270259567e+3', '5.3933034361686053900907941458116470570432078963452065594973824e+45'); + T('4.929295626989455124178205785e+23', '-2.09905e+2', '-1.034683798583221577840626285300425e+26'); + T('2e+0', '-7.18e+2', '-1436'); + T('-6.31146996107278795852155517509682305e+35', '0e+0', '0'); + T('5.62374544362317131178832531913e+25', '-5.028617311364517574605216817082040721294634e+10', '-2.827966369251080786848400856170544022762054465978646727405142173480654842e+36'); + T('1.117412077388384866590003439477599421523143e+1', '-1.61338414788659224331375974470976667613219454556537612e-14', '-1.80281493231544618608867814708290945943864723087524854355671733079894613280168308370993407954516e-13'); + T('-4.2815998483904942107791375e-20', '6.9376170311235847480494e+17', '-0.0297041000286500510137199365646358515056073393925'); + T('-5.86940489151059825558e+20', '1.186355039910488859404215239846695660365360637322362023701281e+45', '-6.96319807431887432746494916572974977870149668248845809245935171579248369361139798e+65'); + T('-1.18405412e+8', '-2.8902735e+7', '3422240245601820'); + T('8.642504975809385471415e+17', '7.5109001974465513712091271541148798280521311221e+5', '6.49129923292395160193292467556975546756516371487956307369563014247715e+23'); + T('1.9923555553060256693196663e+21', '-7.20338812908556886039013517835885875517875e+8', '-1.4351710356009111862906055289239352924294602722052150633824346851125e+30'); + T('2.47767224522360228025008764692368247199028078613e+13', '0e+0', '0'); + T('9.159951983506971778872e-16', '4.35572412991174861535348709e-17', '3.989822388339430055462173193590823971110558676248e-32'); + T('-1.2584903289619528522717972e+12', '-1.9048067354292e-12', '2.39718085507923740095024952130919735824'); + T('4.8222e+3', '-3.915307e+6', '-18880393415.4'); + T('-1.145743e+0', '-1.40499568633e+6', '1609763.97264279319'); + T('2.2428057847026326379001011260518421703171e+33', '-5.8239094523813465985489463975171171984367780708670099e-3', '-1.306189780938522558635234193371919783301088290650039938567007189410557075386960930089941183929e+31'); + T('-6.26193904e-2', '-5e+0', '0.313096952'); + T('3.0019845694844821786908363e-13', '2.59803721322e+2', '7.799267625032905531560694408803215886e-11'); + T('-4.6771111417557737587832171805566392575e+17', '-2.41963969908791889847485e-18', '1.1316923795638693208841937864685962710236300920790258386423875'); + T('1.368790147448792225307101642172296e+32', '2.382834531191820192940003254735240956141547e+34', '3.261600429296125258884096700972863323244136904532628866746657143899537981912e+66'); + T('2.5158133090673533e+6', '-4.50742632133e-15', '-1.1339843128842514618218435889e-8'); + T('5.45290152125555300060203251343e+25', '-2.3624677987030823546e+17', '-1.2882304253465295333570852578315749764228120522278e+43'); + T('9.10645280474914206117691354111985771303355e-16', '-7.46868647274590839548386658906247692173836809486984638e-1', '-6.8013240877528954266058199752847353931423569799021123026453827361109324522139420649351012286049e-16'); + T('-2.8051865003118537531e-11', '5.348454627859893296622387289464589021238848335043530157e+29', '-15003412719603032216.1087879676948803801286988008339781735642916313334822367'); + T('-1.7561380718435796202851095012247e-5', '6.128268306422028776297429697021742180071567401e+35', '-1.07620852873801007780502248253390491162313640920758504239716098138490580960047e+31'); + T('-4.378710689215449958543087541470086791901689639419136544e+54', '-1.9783905014509610108940939605033592e+20', '8.6627996361456371392438623941839474271341962222925165084899855051115783079519792754786048e+74'); + T('1.121716338034368180915e+5', '-8.734522008301422444882962812919703e+24', '-9.797656041632466817652476303536047619163255652072068245e+29'); + T('-4.8582993368534106923769355421057e+16', '6.98715048402856908663443073960052421774798629769213e+50', '-3.3945668563050984730942842784405126039162330280795884968022377310599078522350518141e+67'); + T('-1.147697695159307927e+18', '-3.14666e+5', '3.61141442944998788157382e+23'); + T('5.21292708738338107676256190382983420967375413562063935697e+56', '2.0716e+0', '1.0799099754223412238621323239973884548760149067351716491899052e+57'); + T('2.40767713664497193342119078614448816473118895591100004e+6', '-1.9484666614e-19', '-4.691278632167740060209890691091392232345592973376458043474066456e-13'); + T('8.84323002496195395098550834342755e-16', '2.074843038583988890307904822332637330993388021856189e-20', '1.834831425588922445909395217500126101937521988613705732420133880473831365442944060695e-35'); + T('1.4139590392221052468075225255352223739775768735149e+28', '-8.5071158697e+10', '-1.202871338167213628815991013832091374398315253263031540940853e+39'); + T('7.60905256044027294859360806368103238783888705635835726e+22', '7.626236267e+6', '5.802843259393881904794360045962793471613853022211697708475474842e+29'); + T('-6.49983097039610238828951299410887525e+23', '4.100424999934130974333860679470965920172048633176651e+51', '-2.665206940635830060248743820457885128628819326617038782969842356414737979985236017178775e+75'); + T('-6.44091388086048854999712e-2', '-6.4903080679715410063843348214810202569974e+22', '4.1803515326058717691453471440857864505008045873090454741429847488e+21'); + T('2.78029662683945916043494079823001566462283856388915e+47', '1.72292937157713197163667918785093807960421637821735095106e+24', '4.790254720078529163251026200113350912677847102429264772360101417505440468715765792439145764556851324914999e+71'); + T('-4.4878498622339775396888494885583054208940416614412529627e+46', '1.724e+2', '-7.7370531624913772784235765182745185456213278243247201076948e+48'); + T('1.352549686604181695307046110709197982598092383194e+48', '-2.3555586703119991494894059087716726417170242847945e-13', '-3.186010141308257402498477975479367405804581618494048262835305948601981051698397443353715881543633e+35'); + T('-2.019515564917190266675805443119046e-17', '-1.4788018868472268212026912165159431467984470085815808703e+27', '29864634279.168841526151723443673432805367034874393502449296552705312364840770199191857338'); + T('-2.1655275560855920418985633841581563513185032946266e+30', '-5.9625533125793712547572194147395797672923522437e+21', '1.291207350302005700228376617552289919885062421326450164415825007449363425520444307151212866370242e+52'); + T('1.012506744028479038160052533215313925528515964937e-1', '-2.212147e+0', '-0.2239813756282367818828645731194657054416130006287489739'); + T('1.433496071288945453514799813e+23', '1.3979267765863662e+5', '2.0039225421861753263084300184572426981095206e+28'); + T('-1.0851e+3', '8.013590881173773221229825407826356e-3', '-8.6955474651616613223564835500323788956'); + T('1.0544140083165e-20', '2.7639893671307065522219750157782938300627387865356111e-13', '2.91438910754047439029710260584090912925195329258292696061880971315e-33'); + T('6.9910144713252743945138327844029390845842716601381876e+52', '-8.482563824399426864364409762208780384877e-12', '-5.93017264503166569047842082409955073105581203136314428395603709690554785251717257461332289252e+41'); + T('-5.359798702e+9', '-4.932148432974659892667336636982770197907445436167e+48', '2.6435322769128916091609850224697296903108609164903710455234e+58'); + T('-1.71427280396517551988450013042709589140000549e+38', '2.403519034309521273463675792599073e+22', '-4.12028731432945393654068892074968286875285779764235024381198392132877356891077e+60'); + T('-3.1889196169851645e+16', '6.3303265668790672589901e+16', '-2.018690257104300648907301509647095237145e+33'); + T('-1.23339224241833842568898143251348600283e+19', '3.077450385078067e+0', '-37957034313826161513.8572222562474073059332490133292961'); + T('2.92677040682294450913892109671419035013083833e+15', '-1.8864e-13', '-552.1059695430802522039660756841648676486813425712'); + T('-8.6400999e+3', '-3e+0', '25920.2997'); + T('2.8174216976e+7', '-3.80064379799368614537758774048216223e+5', '-10708016301316.282693791323644782201752565201648'); + T('1.025429e+3', '-3.7942691388774640999508942702866141989404398978535327058969e-11', '-3.8907536088099791345485455606857325114052963440160501890751522701e-8'); + T('7.5475945189824540258952479977984445146259416e+1', '2.241307785984759464484472e-1', '16.9164823608512696233027083957170305568142612592815464214011615788352'); + T('-2.390294178360939572894052478069342172015510960221e-5', '1.0258531018946647560644677321558488928826911786e+6', '-24.520906973123289161325866068624287873503133376117055452224336029773591730793542320906922064706'); + T('4.13335e+0', '-4.9088577675430835705980477517385482283e+2', '-2029.0027253474204476531440674648528319443805'); + T('-9.49e+0', '3.11206e+1', '-295.334494'); + T('-3.08616078174107176e+14', '2.076558336804330489690054e+22', '-6.40859290004299236964222747218844417227504e+36'); + T('5.34715396168270921229718951112033768e+33', '1.185276582214392362269858422207e+30', '6.33785637227742951291731320592812398407062758490420416723385085976e+63'); + T('3.09857552788127670265426890018069173e+27', '-2.775660244927720047697549780961273164125e+26', '-8.60059290864598393204134197688911975222918946093511063812459672352832018625e+53'); + T('-2.152994e+4', '2.65842427162e+2', '-5723571.50625223028'); + T('5.330956358309028663608422004436504723721138561972562601791e+36', '-2.7e+0', '-1.43935821674343773917427394119785627540470741173259190248357e+37'); + T('-9.47262472923053e-20', '1.7815435405588685078649855417813049031471e-4', '-1.6875893398498851540266228993423166652387013603958400963e-23'); + T('-3.7245117604208154109238688461979388885871895e-5', '1.099513130741858342635426870578056147376018748384434822302e-13', '-4.095149586185160991329081422183979955901725647516234149636345755464052206534381389581417571266100229e-18'); + T('1.0834155200334824535073546679153022e+1', '-3.2878072e+3', '-35620.6134735782785171514593012553956333584'); + T('4.1364165902025092463453669062207235153719556580492365e+19', '6.95e+0', '287480953019074392621.00299998234028431835091823442193675'); + T('8.42371582961533136243e+0', '-4.7071941235449e-10', '-3.9652065651577439895485473058278107e-9'); + T('-7.45065795641536747833628483446224560146193991951403486e+17', '1.27523917338709350722670736519147669728e+36', '-9.5013708935291045870600560683168551870317994342017416888060151292391323390390803175995871808e+53'); + T('2.05416636316876816247008603104084729112e+37', '-2.67555245581664e+14', '-5.4960298576321336552408203766121162314254132314202368e+51'); + T('6.02518139223983254774103596e+1', '-5.541610436514578623372748271926826526e+28', '-3.338920808512969500784406497155751094267976654888337866644787496e+30'); + T('-1.886901000866449319960349324191903886e+27', '2.9119588739125107881913973682892608e-14', '-54945781136674.553048031354602674611785517327046962179124845815195874688'); + T('-3.167630633483217259922541256223568e+20', '-1.976822247538314258143070135525568198864845149591441e-1', '62618427082535077150.84042450833457702256004904708731141210786339513630567393755281488'); + T('-4.342121805414178979168499106872259725865474348828e+4', '2.87800764291519653e+5', '-12496659742.45073888635509104978249087676725149425279111442739516684'); + T('3.48934964368845845248178606547230673370875533672897e+45', '3.60994798002748312248366391691804980174190472460657e+19', '1.25963706978427685634963685436483508162346103715778631358243181904380097203373116193801232752539713329e+65'); + T('5.42527560030712498895e+17', '3.3118136084722e+4', '1.796750156280932065622648405138219e+22'); + T('1.1270004847878401285903765398526874938853992e+30', '2.0458381647e+0', '2.30566060341436511755234793837415859085314757145484824e+30'); + T('6.25593016708055943396626471164327645453174090870769922934835e+33', '5e+0', '3.127965083540279716983132355821638227265870454353849614674175e+34'); + T('2.3033584574555686865161618899734095161045e+20', '1.3010709745e+8', '2.99683283286453354141726776018746569820565525883525e+28'); + T('1.34211871248298281139772721139220298063196737768440691e-20', '-1.478359144e+9', '-1.98413347093272458362465744377928424672132387150944450161528504e-11'); + T('-6e+0', '1.05671309643762e-9', '-6.34027857862572e-9'); + T('6.4756599396864465846766547296e+24', '2.94968462813429622e+16', '1.9101154581118175282669146567918601241230402112e+41'); + T('-3.091e+1', '5.667830565788117917508080275569794124182460349e+18', '-175192642788510724830.17476131786233637847984938759'); + T('1e+0', '-4.6172103778523998784e+19', '-46172103778523998784'); + T('-2.5570672065082385679679091913879025e+1', '-1.2063049743853270960595806834829465677969295004031501739e+29', '3.08460289104848063763132960929740754910194979655799625586510645610283250550119127523124475e+30'); + T('-3.70293468184958402068082830264510960391603268883687825303e+45', '1.411163039553177355119999727715e+20', '-5.22544456090573674099746706657675074188431054961983786246940351702162084606420487372645e+65'); + T('1.74787882197705299292198556022976167231705195e+35', '7.7333671996220816e+0', '1.351698875079142520032926258655417527276870238724265543433912e+36'); + T('-4.096618331817365021e+11', '-1.013711236829518925258935118422711554106672e+5', '41527880359650616.57506268237434302892786107960903774595520112'); + T('2.12048782119154454967332210439e+28', '-9.2197418205e+4', '-1.9550350244900609425611967419011549641995e+33'); + T('-1.1505865830923532120744213733257299415660413583393e+16', '-8.46565236265629547979844640868246149886017535754876e-14', '974.0466025596414007536363196582134432561026804409558931080223917261617484174979797491453160432374268'); + T('9.07420636404752362993662380875781571271e-14', '2.51474955483770475273773727474896143461917754897697324764e-9', '2.28193564144939774816732185434917998866319599098823390828301213887829237747907197261589099255044e-22'); + T('1.246260472438897833535289124112549387151e+19', '-6.680412909470472488789414671059720951e+11', '-8.325534548643583067029478564395020366314784333266559701669016772756124900601e+30'); + T('4.0294278740792929940247525071574944742596836e+33', '6.00085175738377949776908065147e+14', '2.4179999339419911926322112001876929096606969209945947707543711809044074892e+48'); + T('1.55945832e+8', '1.1527307e+3', '179763548083.4424'); + T('-3.211101384979001257677085706325437228950660943386036671e+5', '9.228686729748967e+7', '-29634248739434.237821402397860319787760148942989060826624350048886368857'); + T('7.1768007105380238999489810862e+28', '-3.15802039762103328762026415391128e+24', '-2.2664483033540204459973246271168430597758318255590370472832336e+53'); + T('-8.146245193307731671e+1', '2.43845e+5', '-19864211.59162123829314995'); + T('-1.7260614660794362658661235883950941802e+20', '-6.765975e+4', '1.1678488727956813788943545545991497345878695e+25'); + T('-1.0423339556844604967203052423172210806005595277e-15', '-1.65790186e-3', '1.728087403870424630609117961005471539558877558014551522e-18'); + T('3.3874450138496810026558092372911790009595011319748e-7', '-1.844083119777027949884472374398549549372684360122809715262e+1', '-0.0000062467301692130573949905677401149904072205407708817196623282883165369601854286961699466138329393918717593976'); + T('-4.5677632943648704446515762998538554442851348e-17', '3.582872388623075466216438867772511708e+23', '-16365712.9851458715575421433474376658852503648131234292126180950207040799233582384'); + T('-2.86829101569688038860522495486e+2', '3.7e+0', '-1061.2676758078457437839332332982'); + T('1.06077027679826318938182294804181993899494704147284057e+37', '-3.261253544293047623648926725904240616776040078855e+31', '-3.45944082488905300826935851931788717711099607836502248838085413796777056450136214579772327128364314735e+68'); + T('-2.18507353576174076070959256350000774887e+0', '-1.59831147321681301466931141149354431e+1', '34.924281020304184328565238680515232418857862826204480512208558649806974297'); + T('-1.99647745343238059689196134517981116780466772090884720632224e-1', '8.6467613748664636508931985451006098243078232494163917e+32', '-1.7263064130130867409299452087506032624045135897393310593388261234352860098403285199668529693824805691038528261408e+32'); + T('-6e+0', '-3.4876006775596915566721213748733893e+7', '209256040.653581493400327282492403358'); + T('5.28124391735772273591469590185765758579874870468433745e+33', '-2.147e+0', '-1.133883069056703071400885210128839083670991346895727250515e+34'); + T('6.85038e+0', '-1.5901255569632960384981532502369e-9', '-1.0892964312910223916206979062357855022e-8'); + T('7.983812710598619216930700499e-18', '-1.335137072858e+8', '-1.0659484332675135134229403579270339956142e-9'); + T('-1.960334206940101e+2', '-2.959228e-9', '5.801075874534941202028e-7'); + T('1e+0', '-9.164e+1', '-91.64'); + T('2.027899432561029386047096809176e+12', '1.40213651157523255556127427614979949106e-5', '28433918.3619651531093388731497850317019747168257172892378111473796656'); + T('-8.3594749784821954269345060852858640828490521460887e-13', '-7.164172033751721e-15', '5.98887168576894141563842978474039341215235493797906672056370436527e-27'); + T('4.550077739716154666542802337e+11', '-2.7306574188036000270848865e+19', '-1.24247035360890335495046606524591731837703486895797505e+31'); + T('9.4633378246343026774101810918412358e+19', '1.578450860979302005254127126947731754671912e+27', '1.49374137370320099547200047736473092846440961340814649863546698920428216288496e+47'); + T('-5.2190603156319182229289905569617150480323e+40', '4.04355690292489982440257971296300398805279069834596e+48', '-2.1103567366054849391298527839468485796895719049012578983409941699614247722561603581562654508e+89'); + T('-5.13097206174328014241389093854003358779365258633983078e+53', '-1.59332306217979e+12', '8.1752961173757536414155211183332535775263410017806193494494865359362e+65'); + T('-3.00025764484794075488331e+16', '1.21837943722606727484247960651563238163989e+31', '-3.6554522208630400771401722295434531318286045235250273221033912359e+47'); + T('-8.034506919e+9', '9.59917303867585553e-16', '-0.000007712462219591941585402941207'); + T('-1.03623135167581303e+11', '-6.0727847191820070012464062e-17', '0.000006292809917994193771401113453514323750632786'); + T('-1.776830835655537305590797996218970905e+19', '1.4297825967432706650609604367607227448e+19', '-2.540481806177089727480969780595820579837949700040264880146150148682940044e+38'); + T('-7.06672750227869765640275129774849369371986497683548567624e+47', '0e+0', '0'); + T('1.201486e+6', '-6.4618819204288244e+10', '-77638606610483465.130584'); + T('-8.392439e+1', '-4.559646760722e+0', '382.66557300906980958'); + T('-4.892684791905e+0', '1.325742128654573684900693679335408e+0', '-6.48643835085599458713483949506930948917827224'); + T('-5.583623025078921446646733308770747651954925640892627777043e+48', '-2.49487928392226886507353963712136114e+9', '1.393046541450079222756134578078800193311267254493670540053212261265672987328881907800860430902e+58'); + T('-2.96526320854720999501457709614986308646e+12', '1.58934709e+3', '-4712832451588571.3331953326153464351003636194014'); + T('-2.278047134327102481e-9', '6.53948173493481078043032097446045568663006609238767572331335e+59', '-1.489724762625267407514295696211403251163397687148157704642933789435816632542135e+51'); + T('-4.34649668141838505956e+10', '2.7566141566303188003001360098750592488e+19', '-1.1981614283744620987582158070935888399955230644767716858528e+30'); + T('-3e-10', '3.285427839965717144526763107629871339325200898862235e+18', '-985628351.9897151433580289322889614017975602696586705'); + T('2.6431444802225494336841837930134668e+25', '1.5757672131509605631302369006921e-6', '41649804115556309200.4022799068651144359462695399494757742954037228'); + T('5.4197814884600979459047471764155193322e+12', '-3.45317672489168691123605172192567891610375269351773e-14', '-0.18715463289949233044577799707655967434015297575177174844144791767778460868554918438459906'); + T('2.1804041368605641467299918902653637965488411876504e-18', '1.5595945850567196835592942943641516156866395747026257882e+46', '3.40054648508300657595934821590957250693570708065275875065240265811212908037363934338779869619908640604528e+28'); + T('1.6644802913995172764608435e+25', '-1.64481887574951745057302561e+14', '-2.737768601606983206750201541817125086018588487702035e+39'); + T('1.345297580765936668864521475544600213e+34', '5.255894981691269736920878216903973555596e+1', '7.070742803629092178385260348541240791936901232154070386845812623023948941948e+35'); + T('-1.236303590387333100113303929204537712340659855471201673025413e+21', '-7.9e+2', '9.7667983640599314908951010407158479274912128582224932169007627e+23'); + T('1.8325580806128635358765e+2', '-3.171748e+0', '-581.2412427067688694189217122'); + T('-1.0243e+2', '-3.409589101402e-3', '0.34924421165660686'); + T('-1.273997601117917175698667546852761764039275631891486e-10', '7.856245279828564906705161224850856859963860198e+2', '-1.0008837640295551637408536690012436719563557239798756225068083188519724150459019497133976810474228e-7'); + T('2e+0', '2.0782554146127983844e+17', '415651082922559676.88'); + T('-1.0017426e+1', '1.05631201445e+2', '-1058.15274376638057'); + T('1.23321e+0', '2.76e+2', '340.36596'); + T('6.5482994824671797204789687e+6', '-1.810350618538593530488926394601031399259372856417988086e+12', '-11854718018460410708.6469761335753156476928972597617168054353701088346263301669082'); + T('-1.8464263e+0', '1.2578353631044943640519616250643946541369931149527985242e-12', '-2.32250029550618804198731651110963748297794789036777045368406646e-12'); + T('2.306905117986512123647e-15', '1.92224194054550245e-13', '4.43442977065274435217191058558414143515e-28'); + T('-7.7660157326825169689845327710896583341071831411984679e+23', '3.6431726508659866242336616738158288e+18', '-2.829293612350392270265658763343483917211646344882471424632373955590786112801497332869552e+42'); + T('-1.804410431608216174757910743628838673593296632e-7', '-2.708299883920527521842766517861172987221865596e+20', '48868845624695.20830931105195115261702836652954741973993651473991827943522861106002863472672'); + T('-1.800090865364229e+5', '-5.8264534155111055348482827550238e+10', '10488145570731753.6804095274061076304171665636502'); + T('-3.60855354781654573978597356957428456e-15', '1.866546962201332812e-19', '-6.73553466261781541696603311041890681571157507335298272e-34'); + T('-4.513629265554556014503659605626189283778885640833465154e+54', '-1.6679267957795545731497e-20', '7.5284031982332348463844383049275530663291324432825482209928639026696189755538e+34'); + T('1.0941972e-2', '3.45343163878253161341020408675072450114411418654261458e+9', '37787352.29547257500304927763151199847123286539395206554115176'); + T('1.24194883524432e-3', '0e+0', '0'); + T('4.5115e-19', '-4.72349600277e+11', '-2.1310052216496855e-7'); + T('5.7379616e+1', '-1.014091e-3', '-0.058188152169056'); + T('3.665008e-19', '1.20318611886502374360861219376e+18', '0.440968675112926294051551255902795008'); + T('3.33610310938677239000000947724228838577011e+13', '-6.096671817812092833664313029588e+1', '-2033912580831362.881020502005617192477576549025176845225368255784259601468'); + T('2.583458940580655231541895311105492814e+17', '-1.5156221815587830068151379463e+26', '-3.9155476754903950432396966951972758516587513180224498790533678882e+43'); + T('3.702736747441730847035655529e+20', '1.0018677975945079169067e+10', '3.7096527102316985801620293314995993182468964321443e+30'); + T('-2.83630154283079925e+17', '6.41074464694029283507262773575118086890104876e+10', '-1.818280493281103999466755581106175564517622369590252755402143e+28'); + T('4.4674110594344555786220486754e+28', '-6.727853004096336279764957767621729768e+4', '-3.00560849167492982673836524473329588821711484064022839144411493072e+33'); + T('-1.5688404306246196345593833419224858e+19', '2.63605019e+6', '-4.135542115227710406357993024757603658362302e+25'); + T('0e+0', '-2.64954402306017667049973249287275628634791783589648e+50', '0'); + T('-3.5009076896538e+3', '-6.6430229e+3', '23256609.95315628647202'); + T('-1.521924675204764636287003e-12', '3.7693609744915860629583e-20', '-5.7366834768326222380785330790588380575060209749e-32'); + T('1.11236129544558345600503719108591547020411211e+44', '-3.1253884214607362312987e+14', '-3.476561113266691720093444060759595557505158595083676675212825697257e+58'); + T('1.33815573609017992048200249790557568805710357380887861899e+52', '-2.5e+0', '-3.345389340225449801205006244763939220142758934522196547475e+52'); + T('1.611548475376932804e-7', '4.9802375112902234248e+15', '802589416.83347697323623227532963471392'); + T('4.166575179521503556226149051605877512974975774232e+25', '6.399872460241347446318418520381529620092936e+33', '2.6665549744944818866755013936324316057322003893851265592949522620090738985837783100394025152e+59'); + T('2.35506389265e+0', '4.006712248230173437693154988324e-9', '9.4360633440453853293582738230620847394186e-9'); + T('-7.242328039718679745240983432e-1', '-6.92464621048019340876524126396387834446077132758404786e+24', '5.015055941529240335287534191035479214939020902123532657328599638598099582175505552e+24'); + T('-4.193894403896958727143737666044e+30', '3.261588840189662e-1', '-1.3678759184684195494824524833564292922177237128e+30'); + T('1.5765195258987684156516463952714058260238e+39', '-6.4745770126610248e+16', '-1.020729708239542312739313896297935609020156882675181719024e+56'); + T('-2.040489518370981132782249800266e+7', '-1.174334689904e+12', '23962176258085484397.98077967950839046714464'); + T('-2.999e+0', '-2.745829033902881255806415521483615257e+36', '8.234741272674740886163440148929362155743e+36'); + T('-1.421995402238039424217983713e-10', '-6.62685949e+4', '0.00000942336372605751879737308119715948637'); + T('-2.91998097054133242068815e+15', '-2.008599636825475699484477749463054e+31', '5.8650727169666203572881875569551215932356120857036806101e+46'); + T('2.6e+0', '7.4773359790825494286810609654593232269035859893021495060685e-13', '1.94410735456146285145707585101942403899493235721855887157781e-12'); + T('7.50302677e+7', '-9.16389319e+6', '-687569359219906.963'); + T('-3.4496300003784699749429090893221619407742937e+17', '2e+0', '-689926000075693994.98858181786443238815485874'); + T('5.58909651552271e+14', '-2.9302356759838764984959768e+18', '-1.6377370006301816824127798758929684033128e+33'); + T('-3.21467608558886180085443357632011447658817714543954802587541e+59', '-6.05654450954627843543147e+21', '1.94698287961429431939792169536178895975298009949974623312844888292490502665078131527e+81'); + T('1.4473044599244751554764848267885956615840337279448e+31', '3.2978760548379995995551379e-19', '4773030722445.16982161490157947831158781808944842335126216028865139564758792'); + T('-1.52212585961814532229294847288693e+27', '5.4807677063154665054707604339457540829262049e-20', '-83424182.56342800099858567431320449627410280372645389871308978482983651711957'); + T('-9.90550793992759173966e+6', '3.335265462233194052458441615728696e+23', '-3.303749851791717304829547839188687665630386634122328336e+30'); + T('2.51287438279233642085429923935090523723e+30', '-9.451335136867210002148028438967398611467216454584204034e+38', '-2.375001794861871280485178924285492901455882867966860732042873907744155803603055976356149298582e+69'); + T('3.4082333651834518484189e+13', '4.35506385179170328272063457227625384554944253e+44', '1.4843073927180842671942017049002743738759608944705687993398956915817e+58'); + T('6.5818547070316952187958008e-6', '-3.73951282e+8', '-2461.2930056322368417019602053766256'); + T('1.97206174719719816981292592386e+16', '-9.0105789e+2', '-17769417968792207968.034967276795922554'); + T('3.6619571048211390692219928266376703435e+7', '-2.4799589894315235042761055970638006e+26', '-9.0815034410138196343173744241842493541845089867523197724164419200175061e+33'); + T('-7.84666331967208510490549760574105355103150267368e+19', '1.619717764380338390313718e+9', '-1.270937996998447419567301371334187807713815536655396765563064753098154224e+29'); + T('9.483006538328174932945681176608e+30', '-5.3373488401022043702090517246506626e+23', '-5.06141139480275047286128600549610642611475683804095134453348204608e+54'); + T('-1.4803912145480433328776377901902060963e+8', '-1.582058e+1', '2342064764.1054483391257298870727370763001854'); + T('8.9882523984348881655495577517148277303020468059964733526e-10', '-1.9880593317254807355650321572764e-8', '-1.786917905661241317492297819003818060408519912904334361445796515881479577099002479285864e-17'); + T('-1.28471301581497146597153639797443e+32', '1.42004323959128318e+2', '-1.8243480329229795026092654483949144472588365290874e+34'); + T('9.7783e+3', '-1.36173859052909811217858436668287617315269353636409624e+45', '-1.3315488459770680070315851512735168083938983206629042263592e+49'); + T('-4.67119137023742882426401e+14', '-1.212047464364320398948015745451394730100809445563379321597567e-2', '5661705655856.77098789712337972493426181265394901439758588512945491280590876618166367'); + T('4.21209472e-13', '-4.905686e-9', '-2.066321409857792e-21'); + T('-8.0534398142355474142562564558981481e+19', '-3.52823954947651480531133809737181713783475797e+44', '2.8414464861914654893810641177621530490552863751100871276411283589068922334715357e+64'); + T('4.1668071977029939763287789711116957000695558377e-7', '-1.3024216206228e+9', '-542.693978325508121622979460863479145783998910882101044971956'); + T('2.14936794322219777817392300235280096983947067201554505296068e-1', '5.56270924878341e+7', '11956308.9368006948399328359990270847329026003904275869850287225663085663188'); + T('4.4808187810392761874440073637915549517e+38', '-7.646754766255997951108787766099794e+20', '-3.42637223706414760467636032872081913139464887999833237904238953370499498e+59'); + T('2.6590306926035e-19', '6.065851175402e+9', '1.6129284452158934622539107e-9'); + T('-2.99e-3', '5.30673982e+7', '-158671.520618'); + T('2.7453398931708285228618465251335055626300456581132e+13', '-3.22074749108902263854425833e+12', '-8.842046573116551400389407780741144904662936292441998341089622224330041182956e+25'); + T('-1.927554010995289666334e+11', '6.691946123062138e+4', '-12899087590872802.405021000232368662092'); + T('3.1043442867282686296635094758709963529734603e-10', '-6.9061694467717526338079e-19', '-2.143912766526321799419146642311363281841178348205083711921322847637e-28'); + T('-9.9460755574581062016784211082305572914306783520097982603599e+8', '-1.69419433e+4', '16850584815197.112739421417524916526495882012852028744317145606339367'); + T('2.61564884146360410916221e+1', '-3.37673411255562774e+10', '-883235066943.67590562874468917360320357054'); + T('-6.63e+3', '-2.3664010008e+2', '1568923.8635304'); + T('2.6042340596970639861661053132244e-13', '-4.19696881552846756035609e+12', '-1.0929889136885679117123078859859216841502622841450076596'); + T('9.66932408746122723475707863151647060844849114776240053344e+35', '3.543132415517187808951809e+20', '3.425969561042502580998764203892614576219316524854247783921994540516844698885299296e+56'); + T('-8.75613931133e+11', '2.85579203853134364863246620418932562599339642887412e+50', '-2.50057129335675362001562521254298208477229393538495184240597796e+62'); + T('-2.50801681357e+11', '5.6482598133343504471083657127414336e-11', '-14.165930579254300605382428195360012246785733952'); + T('-2.30985517042381424317138251138e+7', '-1.356837662673868976569988292803227160100334665194252e-8', '0.313409849055299940654534970732121932438107278390194102752542104703069838330058776'); + T('5.862908424337665828006849479349960917695532524969888e+2', '-7.671778766584342308528805252661904591265896365900259438e+11', '-449789363602621.67756677207730170927431389968466555033513219445179870196178056661700171117319697232337802944'); + T('9.581282282850454426590480159624386252965047e+42', '-3e+0', '-2.8743846848551363279771440478873158758895141e+43'); + T('6.80255891e+1', '6.4939628006286648775556960482793713797e-10', '4.4175564510625077864220559174474627948177228127e-8'); + T('1.17e+1', '4.39880043917181857989519e+14', '5146596513831027.7384773723'); + T('5.18057e+5', '1.12095183227955985516792e+15', '580716943375251939888.72713144'); + T('7.9079109607883946443459466318246948653463050994769e+5', '3.36736267476382737799206797447753274243e-8', '0.026628804204714596632325780373652132822901517398195299752987744361561977288621298015434867'); + T('1.9192337832e+6', '4.3746589806622647519097525128325765043728672520610978379588e-6', '8.39599330566629402128776374017937235269096935960460880109100828973216'); + T('1.97054154322487963934e-16', '-5.29966794868061391983563001785802904827e+35', '-104432158581725291847.012347689094982662143786123082010509418'); + T('6.9435803780806824e+0', '1.312029461736620484829099495123927022691450102807689e+51', '9.1101820259781574883358006463573816901697004118371527017012130869736e+51'); + T('-2.02777011165205949332910260826373220997764e+19', '1.719346099690327466591195210611602452021664087e+46', '-3.48643863253758833917742037463014837753623268813161576588808665593545590271493786101468e+65'); + T('-1.35689510306015930639203912344e-5', '-1.7775524374291928790914680036598415373039480612e+32', '2.411952197780322048592902790431885908730809493500413918235779385964135474528e+27'); + T('-1.197093336042660715753664692387461089572e+10', '9.30322759e-19', '-1.113683175167722258780864100982789097855769169148e-8'); + T('-7.22954e+3', '-1.80621201849899035625232371577275379091004324e-18', '1.30580820362191907401404243961277544415357940053096e-14'); + T('-2.5487146811e+1', '1.23224022125341461664322693e+11', '-3140628742550.490076943920877369882023'); + T('-1.18509703682338023839102000456883783748380745862220202e+28', '-6.3419775864e-20', '751585884.5242932927360537668009595161218552675515150636252804528'); + T('7.1388416426585452586630469980942729444722426421412280025841e+11', '2.2273053664463959959973918980036896886955225978954e+4', '15900380300904382.68571628113627797346230258274544097276905843398058418502349718417824485312566047149642150314'); + T('-4.048812287518331136928265811389922096053793e+42', '1.883843038956722868136968070669521788203167379034479609892e+28', '-7.627326843883853713943674629620475969636818573439332541709592124635715493176124730990752735286920356e+70'); + T('-4.40496773173133229276988080861e+25', '2.6836361405552532182670933448535260065953975259e+0', '-1.1821330602853900620632833373905984586754469500681938106134905203144285417999e+26'); + T('-2.10698470492551613923273067e+22', '4.9829981981459258350705361168e+25', '-1.0499100988164872148563717105895284884047064402922062256e+48'); + T('4.153010660772414005280043833935812744967827327617095506753e-20', '2.527751586e-1', '1.0497779284442377486895243175380771288291439046358254767908369460258e-20'); + T('-1.775786834688476262481212524832086861722161695595273e+16', '-7.18e-17', '1.275014947306325956461510592829438366716512097437406014'); + T('-8.4572173659763154903842071410504969649015559593e-5', '1.55e+1', '-0.0013108686917263289010095521068628270295597411736915'); + T('2.1957687570313298348687272820162816911371646883313165861e+55', '-2.38569977592e-5', '-5.238445031621780511465933279321833876337532446936158618177349386712e+50'); + T('-1.27304464823058989292690796372853e+19', '7.469e+2', '-9.50837047763427591027107558108839057e+21'); + T('1.075014243303345850436753650150338343736e+25', '6.02230306841873236690335765889046842703055475561e+27', '6.47406157603958142830356266103466419129027532770065365087223464829450025112366565435896e+52'); + T('5.4644781816078472076480587668e-10', '5.533388289372726449619555652757e+18', '3023707957.76416324809553379608185627596205958651886704400676'); + T('-3.51050282698153075e-6', '-2.38e+2', '0.0008354996728216043185'); + T('6.8429855416436924582601339528425e+26', '-5.06163347121826253493439522309e-18', '-3463668466.0646345473598332283493482158871668931014551327133325'); + T('-6.6943286454175063790486144e+19', '3.4328180225062095992833728348740385020789e+37', '-2.298041202256879703336604670399729877443829865654374596865856447616e+57'); + T('3.4586536216937580446126883522083952059e+12', '-2.88703672447082268049428783480859803803275492e+13', '-9.985260023053895125434393341048712560458518029877932175692101389180863832497638028e+25'); + T('1.544220975398677252000528288503556128937132048384443331e+49', '0e+0', '0'); + T('7.7e+0', '5.629239278180308472085767973107775059451282267e-16', '4.33451424419883752350604133929298679577748734559e-15'); + T('1.072717719201024052696349931792614756e+25', '1.3771846282397089347926178e-3', '1.4773303533240107890345190437679728361254161112010424681482568e+22'); + T('-6.2982194473322433078922784904265197191653069665364692e+7', '-2.8678684613182319044997019428886e-19', '1.806246491546528554076417787115541085256514512890108233024447001160805124352749293112e-11'); + T('-1.732465708088e+1', '2.71524489294637185383888961456871107141931061365e+31', '-4.7040686660906618703715451371754514270759411014339610482012e+32'); + T('-8.96598237114090468243115825396177729e-12', '7.604366591101533e+15', '-68180.61679950920120868401395898211540605801952358557'); + T('-9.71839881931499436381251357007593505557676492579357e+50', '6.57868431363921445315728822689471152257263421455e-10', '-6.39342778663174158137496675720663924284622907149091698424887623612741936565068134530253299923904435e+41'); + T('-1.006931641466488693025e-9', '-3.4521295426580450451664697531545584755870088979e+4', '0.000034760584669436241976889349243420680611555496619415686043504166671475'); + T('6.00947607e+5', '6.812758675764029679963178704882229955116307e+38', '4.094111023268882532850848090812335308350862098327349e+44'); + T('-9.6836087377e-15', '-2.6459022649270745998e-12', '2.562188229174803984792301067246e-26'); + T('1.055921827168468904939466656863008144e+27', '6.32912299980432425349782865630544e+17', '6.68305912232736312925806512224733448892859379422335164811681167150336e+44'); + T('-9.98028905218791239e+3', '3.3600371506928e+6', '-33534141990.004018666701074203792'); + T('-1.45239016384017840495355131293445684596538291022094579841e+42', '-5.6775437718634921734497447e+2', '8.246008729026601881844137255200165069034156821222471237266712949036717046752165927e+44'); + T('-2.2979549681655763076566677319272798755304678418e+1', '-3.183497604578998e+15', '73155341365855197.813621009301952050894390937967417408666665164'); + T('4.0066264588364721690045277668336e+31', '6.737893728955e+12', '2.6996223291259444273370994565149283876986888e+44'); + T('5.846436541728802080043719344611e+21', '-1.2e-10', '-701572385007.45624960524632135332'); + T('-3.182300165687177420393599644356615e+0', '2.365832971505851366517267883747439591747414512839432822e-15', '-7.52879065721125810057489253493734512785942465676134438014645481107031765439734970381753e-15'); + T('3.825832626826099559783359922877e-15', '-6.5955112433918682619536836375146720871309857645017e+49', '-2.52333221055669854343885405756298648535866081882102237578852058574273365963353909e+35'); + T('-2.86423604077436742725253566687e-18', '-3.9616e+1', '1.1346957499131733999803645297872192e-16'); + T('-5.81865579e+4', '-3.0827768621936331602e-20', '1.7937617438481015688733727558e-15'); + T('-3.65098386509026325842574744310157864397940281992715898768e+16', '7.543511472508780470316703042149589376987868468e+20', '-2.754123867225285049343404492717016138666722719241254048568925571123034276751089068825616530843187247424e+37'); + T('4.71978532088277616359995233744199725174e+38', '-2.90845032007102932970578279149703516018735003308119692077e-12', '-1.37272611271880562032081502654149993248115310939203471275734361729098063870184524627400905246398e+27'); + T('6.66954264794400293153673670798603436474391677055481161e-10', '-6.0831130005762409912165773287576e-8', '-4.0571581589605851371281721138429286134755181825367445092430588795115847031409503355736e-17'); + T('-1.5359590725191838049406967873638064365696777077105943281364e+38', '-3.46671719279686986011120227659402959170189585e-3', '5.32473572413458873765078208479002392295654434125039963877442769432916923725014543243576464416487739394e+35'); + T('-3.8918273124023755760911999559263803895614e+13', '-5.9049071497197518967775767842381303529437097e+25', '2.298087892247939399387630879792186664312313395569266522629770751383705096713167192558e+39'); + T('1.6494930061e+4', '-1.4134663182e+6', '-23315028062.2881714102'); + T('-1.38082e+2', '1.086557106158916053738635237440757e+4', '-1500339.78332635446532338230856294608074'); + T('-3.236453714001566320662909602293056422741e-12', '-2.6292012409417075744241522002879275006552063e+30', '8509288121103316508.9776133643121846506311098158231648344441177311116642919353664683'); + T('-5.56185157584785e-9', '-5.3863586550733398733233e+22', '299581273738013.61300657427800794659905'); + T('-7.306228492885575e+1', '8.01710749999e-16', '-5.857481924695357768938364425e-14'); + T('9.078851355998902214e+6', '-3e+0', '-27236554.067996706642'); + T('-7.471572766864317095e+11', '-9.947035107615899737979837388819482785995e+39', '7.4319996621106228158954275728754194694522889053163705084525e+51'); + T('-1.265903731885e-16', '-1.207e+1', '1.527945804385195e-15'); + T('-4.726326821555207871753620716339193235463e+9', '-6.4126109518e+10', '303080951376910103067.328380769000717453065099436834'); + T('-1.91406e-20', '-6.456816473704e+1', '1.235873413965787824e-18'); + T('-3.1983053456730161e-8', '9e+0', '-2.87847481110571449e-7'); + T('-1.1250473182304781788249e-4', '-1.657377060472918137667968348296e+8', '18646.276171817696089408668926562813557672385751973704'); + T('1.1497865844851967254212601851139326807506796369434785706622e+39', '-7.76071990827718702947360345575041554086866713806786843198744e+45', '-8.923171636484296086155235679649166775015520367811462823386249811629379239580605875232547783752918665760034624822882768e+84'); + T('-3.3497708586119180439409399519615946383638197694153e+35', '-4.8561981458432843062333291774478231682e+38', '1.626715103259106287442319579436450524467374682092885927992940109533202075360145310755346e+74'); + T('1.06339694463513e+14', '3.012233219e+5', '32031996016130424203.8347'); + T('1.9633039492389670984077672122431784083773501182422065509489e+19', '1.6692272776747540826414430546718929e-7', '3277200506436.25462718284982490613239885158226875205709983451693837979539541036807585665417281'); + T('1.1467e-4', '6.77733085233686770034e-10', '7.771565288374686191979878e-14'); + T('-5.1701628249523227514579183256087778174687577e-13', '2.132619358400722076540485378725800253187225047660162663738e+9', '-0.00110259893265770873100902961300808852480005642266384867114383755051015481735901792658688929318256982826'); + T('2.18348342946585692342012771e+25', '-3.81634959382e-10', '-8332936099154723.6892526392312710267522'); + T('1.023307551757890323892037392256508719427002369e+26', '-5.20694036686411877720526e+13', '-5.32830139896505265680420021857733687673247020557939546162596921926094e+39'); + T('-2.8265491339447e+7', '-4.5434392049769450607387334481043271753316588900535258158e+55', '1.284225414995798036336141936613726795940619730566835387167617353958626e+63'); + T('-8.02970908483254769090703403995505109862035476919e-11', '2.3071404145426391103284923337981992716315980206711699715e+9', '-0.18525666346637359394264144605477583625489813085571289205234643919692091911432433571550028203557141378085'); + T('1.587431829883573713849409705849497e+25', '-1.49418e-12', '-23719088915754.3817175951099428620142746'); + T('1.6140449345603180298849693965438089354593840997322e+28', '-9.03841799979613578000119003816765e+23', '-1.458841278900975455540967582013269342009334677839779329905619862068104285214370333e+52'); + T('-3.723294e-8', '8.1668979393732624484790294912e+9', '-304.077620962808318348472796304080128'); + T('-2.145634432722793043073725435570720754433983080847542e+20', '1.465950677153e-4', '-31453942495727714.83031405298777297962982768524603399340055607926'); + T('2.278200008209245655472133211650862842e+14', '6.7270967926351916022156783304e-6', '1532567196.82058836270487268466918972063318028121075008094819589968'); + T('3.1343999e+5', '3.14336961975866116898902330896465119306450054556291e+20', '9.852577421834585592213077760716471803076251203562330547709e+25'); + T('-8.041439619908106697385565e+20', '7.78883706e+2', '-6.26334629272925752390308937810389e+23'); + T('1.77601311247551979976524852558057621908110590977554e+24', '-9.63987036475e+11', '-1.7120536170360171827608873268662828982548556336301315370428215e+36'); + T('9.807194626e+5', '-7.62599457122846035815911841262358376674896189395e-17', '-7.47896129768569306427921413491796612781212565774252219127e-11'); + T('-1.92719707950824442875770342240518e+16', '-1.70525973966481953e-11', '328637.15900850293995476091245818788722108232371654'); + T('1.16239377795254501916971749785697228868532854085e+35', '6.473102172409450243517628017455112739783779499e-12', '7.52429368925984729196132515935558757033934932864160658040770594113623888987378706054781403415e+23'); + T('-1.179784405848068e+16', '-4e+0', '47191376233922720'); + T('-7.538813675402315501713570566310033336449e+12', '3.41223043965380709597413486586383914131435e+12', '-2.572416950208617640223348424864689151961024519972222888201004983894402712962174315e+25'); + T('-2.519610125898322011290936135004574898e+10', '-1.363124864524128033329953790490685211016e+16', '3.434543211518771369514488568838182872952969792353237320906862717950506676368e+26'); + T('-4.4018359795112479954572037e+25', '8.064374150981933179268739012e+27', '-3.54980522900327467667853946121209296167777117106207444e+53'); + T('-5.5876311411746274e+7', '5.34197880056852641608623989794750613e+11', '-29849007101551382575.802997685240605484431232661965962'); + T('2.983561815076415871361124408351471429654035718756708688e-8', '1.118284411811800788510463e-16', '3.336470669476878476744869376687068610902363203935757551720993296308551931002544e-24'); + T('2.134734577507378691205480523075055640400370419357e+26', '-2.40845e-11', '-5141401493197646.20883383956580011775712227213650036665'); + T('3.47245322842069354627e-3', '-1.00754361885679357737028320286543060818544720573186927742e-9', '-3.4986480920739416255076813924095074265312312003153482496363088688338822362234e-12'); + T('-3.794245568368302794408011786555814e+20', '-8.37060859067434635093e-16', '317601.4454971178330815419624905170794066260320367580702'); + T('1.28940799891798555024002319648354556806250881774458599981e-9', '1.0028654150809960226369756911508906070980659188266e+9', '1.293102688043642049274122897660291144835301385402718280038596441757921696250413746340720089018990263022946'); + T('-4.27636406710816966834122598758048794168539e+7', '8.8982999317788742062040151406652152536669424005e+25', '-3.8052370086610255197545273472972163674292703635630344454164911934066209770042628022378695e+33'); + T('-2.948850630230385521369167273e+27', '6.672909985285753803977844488e+27', '-1.9677414815580527680894543930730406872388735650053041224e+55'); + T('-4.58435850212e-12', '-3.37588403664294220132546582786902937780785e+14', '1547.6262685555257703338148001260909269985470795177642'); + T('-2.5407577921477732e-3', '9.212688937755560725e+17', '-2340721120523603.242830965922612757'); + T('9.70814828823927437608576282702e-4', '-1.0450399929711279076844e+23', '-101454032189042387227.18166504580735273535431725952488'); + T('-8.986580647129736635012468025475589251e+25', '-2.32842674940416e+7', '2.092459476445462528863223485743121453574148915068416e+33'); + T('1.13e+1', '-4.694730618579590045444086579344431326591112917465804e+45', '-5.30504559899493675135181783465920739904795759673635852e+46'); + T('2.5304029888089e+11', '4.387914643257e-16', '0.000111031923279358510068465873'); + T('7.292170304772241302551375e+0', '-3.6216283825126026376967892815e+18', '-26409530945878724879.8331593964512856913252717030870625'); + T('9.49e+1', '-6.3604126376648187672456674994000370673e+26', '-6.0360315931439130101161384569306351768677e+28'); + T('-1.176852634451796072215996403677e+9', '2.44904391e+8', '-288216377737162735.922250619700705845707'); + T('1.373680713942569963597709e-10', '-4.5471428840104475371083297e+25', '-6246322483306348.1748793733532597161392782837366573'); + T('-5.3314956749576410979116539202451154407e+37', '2.70915269844828616659642472037869598192445e+24', '-1.4443835894576860174475218340998015353555909569592060809911322322844730795855115e+62'); + T('5.9e+0', '2.208687915206977e-18', '1.30312586997211643e-17'); + T('-4.933577839564e-2', '-5.81527983789613597327083109083065394990114741585e+20', '28690135739107706650.0330893037590591643386059592539244906894'); + T('-2.999683795083396322669132758034104118057863174352390023e+27', '-2.87555441825734267003450825531215971389862724174149604e+38', '8.62575399032701361118218619119383526371855243131272664024482478550553556850589314665513164176854330959000892e+65'); + T('4e+0', '4.73e-13', '1.892e-12'); + T('1.08754268552842900657636111617643472953987707185276968598108e+7', '1.81351345637832644608e-15', '1.9722732945916286331432129685647633013480203078627843626297182977144595945201664e-8'); + T('1.476869487377797869802075095495419497297018e+4', '9.16978415362210821336e+12', '135425744223249370.6870672636130364222488062879808291121723576048'); + T('-6.44960562766724813383113663723696894522318058842884424114e-4', '6.2987e+2', '-0.40624130966987695820562180336964496295277247572336761221668518'); + T('3.45e-18', '-4.5651228859493759221433089678212482448435184321088e+19', '-157.4967395652534693139441593898330644471013859077536'); + T('1.1116801887311179022882314500092e-16', '-2.3731060633715843891182383816509351972782343643683136984815e+27', '-263813499640.78831745125440250018216990705243508298365311908844491303220133333740292010298'); + T('-3.411622226349151970376832394365767151948e+39', '2.272882453750169129e+6', '-7.754216297093075438917262330382150382606746020237641813292e+45'); + T('4.813825375694300536878e-13', '-4.994458765e-10', '-2.404245234081581727695453283567e-22'); + T('-3.4004823042485333889969440789299923572353e+11', '-5.055670795945782666596715941784e+23', '1.71917190777197318977613475600295720724871164612058192437613842059897752e+35'); + T('-4.30182750049173941901359056714e-6', '-2.73059273e-2', '1.17465388985568150826129341738290608922e-7'); + T('-4.383659202779121282988e+9', '-3.26708101440047648993067e-10', '1.432176975500159562983467763399865447357044196'); + T('2.1032287098642227578833893517123706840232e+4', '-1.38738398481150077730631608976218467847e-19', '-2.917985828461377201803501253006512530189396739380234897663356402988476658020504e-15'); + T('-1.82989876256793e+1', '-1.42680066252682303444e+22', '2.6109007667889361627836979692295092e+23'); + T('-5.401957277401719742017451884201647908e-4', '5.57331798132165019229595829181742725699386949139427e-15', '-3.010682562847435019555936026646401099636466062637082424633510028806828395006935854868716e-18'); + T('-1.7025584579461e+1', '-1.89357506715785170663032403281086721920633943e-19', '3.223922246345454748113384654355437033006187500650177244723e-18'); + T('1.75701556278545512743452095698613449533241870186405314374e+21', '-8.0008069425919153153324522596175843489e+10', '-1.4057542312975910661097788666304204083938593139961296775572442278829856249685309185751666010886e+32'); + T('-6.0477171077679290199698548748670345744496299140266e+49', '-2.133215459449e-13', '1.29010836286647401512022142630193335625187354733582678886073434e+37'); + T('3.1064394721189e-1', '2.338713865381214106067869220656146181070789175e+10', '7265073065.4119709049662500151915998866163745003396324329075'); + T('6.6922115778644e+14', '-1.502476598814833512714989209432e-14', '-10.0548912900589540851343695771817446668970208'); + T('2.6e-17', '-2.671783935940821017261675012382562970940216397519591773e+33', '-69466382334461346.448803550321946637244445626335509386098'); + T('3.5201757425530436264024119194857657081987590263e+15', '9.331e-7', '3284675985.37624500779609056207216798232026204744053'); + T('-5.533255769459408437481792739718320122946890691e+22', '-3.531878e+2', '1.9542784320526756553356319177970861039193418399947698e+25'); + T('4.645259e+4', '-2.1e+0', '-97550.439'); + T('7.9497003230879251678395405634595e+18', '-6.1333445694821304513176871453320732006332281e+9', '-4.875825130562166374225780425406151552485642713795500618653851261127238861195e+28'); + T('-1.005369818933571484481949e+22', '3.135206365030571431738055544939894677892415929474640739e-9', '-31520418555301.66425121334176205932818570557123668182427124267161869460305520311'); + T('-4.60955142802279111987154280657676965775556e+21', '-6.999600895208299766764771673363791869163449812613584345e+21', '3.22650203020970252903982709059471354761827496584870916987798376422723879587819595266245394527082e+43'); + T('-4.42474356385592335769671439693513e-8', '1.265050947084194578462859951e-16', '-5.59752603606063023437875039568685608110784446235152882197863e-24'); + T('-7.077847732205e+4', '2.48584792112e+8', '-17594453071105.7057236696'); + T('-6.37752233724066550730707883629e+6', '-7.6039885222e-19', '4.8494606652452138136652467701959692830638e-12'); + T('-4.9433724780681818765776307e+5', '9.9959526923402244116455519e+25', '-4.941371743138620958161734043507096664065327269588333e+31'); + T('-7.687435480669860197725359437664161385731838770011635683114e-7', '-1.35484826677385443562865421591361401540341e+40', '1.041530863692139265267608718767277789101867106231335917307662291374878215844509357688744319363501874e+34'); + T('1.5012510295250038070878447757125272e+34', '2.88320380186540202497627762051674629931756151e+44', '4.328412675880839882083804634396863682183719498695681206471762208157714263548072e+78'); + T('-3.38921068317929605930700761538953746656360127100567655710865e+13', '5.69632435242926704290367713950973308658385274436e+8', '-1.9306043350107657372594071514185142475260849897600810020660411944811434813428061119686645756800301569194714e+22'); + T('-3.76914657349036275475693770766652109404782733181e+48', '3.827777748906093915789127662698600476674896035688672166e+4', '-1.442745538637205802306364313516282574241071243477898711033577246633708775227079459568580532954159340046e+53'); + T('6.662411223035412967621756635110157016806417500183356102e-11', '4.11713781541407721882458165080172938861902902e+10', '2.743006518819825052303708822086363491806643065891389452604894242568840422017902043029187832413208004'); + T('9.26006e+4', '1.782395040553430407053890679803958035e+8', '16505085019227.1987751434509284254396415821'); + T('1.669194958318640515063913971576976e-16', '-1.244248914671339151175490292104155e+12', '-0.000207689401526283965328871962139541102573486386336878117842659193528'); + T('3.16363014327124199446241593475618574106690619648e+25', '7.05008522459e+4', '2.23038621291441279938178011816995585372014349584271634674432e+30'); + T('-1.2499416265e-6', '-2.481016161522992373850612e-15', '3.101125376306835804917930031300418e-21'); + T('2.394272820993002468870139325593176e+14', '2.11414e-7', '50618279.4177414623953711635380955710864'); + T('1.1378282788937355438301626273e-8', '-2.48363251338640047864014818842048577888e-19', '-2.825947308110970660255163888048770257922851289911580643177307651424e-27'); + T('-1.117116020795727380964220670027372e+33', '1.2858e-9', '-1.4363877795391462664437949375211949176e+24'); + T('4.22729745775217473e+7', '2.7e+0', '114137031.35930871771'); + T('-3.209792098971668208636730400079e+8', '2.561617927875316631903780965290528364325200943605912675e+5', '-82222609854783.67957523073005932482022485150215647664198292591044805997494462687101325'); + T('2.791486045907779287369132431599698256688456376693553e+31', '3.01582028398776570554202910416394185546415e+41', '8.41862023971748410598194194885358670636908149176554482057465593277092965649017887260312762495e+72'); + T('-4.7987451889500086409222751881136004594238796502777e+3', '1.5763922061071358398417356638094106322793630666033e+48', '-7.56470451495490854118717493020497246765927486273345255064102022092233152887091090239341261644073641e+51'); + T('1.596e+0', '1.1278061910963898e-3', '0.0017999786809898381208'); + T('1.0019691597360265022444e+4', '-4.78747885958105888012393959e-8', '-0.0004796906170188423978033721353034376183189305015796'); + T('-7.840057154240753070926001e+13', '1.6771465194137118428e+11', '-1.31489245682394495937803684715730739761446428e+25'); + T('1.579380351053037416538973330388820879276958625730937001789542e+60', '-8.95594912974988579348053906659158935e+17', '-1.41448500805575195712136077006981122282508931148355054995764602589961835792946511370273959885777e+78'); + T('-8.6259000350458193370640181250303642061228049e+9', '2.50287016417625378022383686736285763674288500041793504864e+46', '-2.1589507836883083080681542896478167565436950513317074358030118564198671094847163184099349451694730336e+56'); + T('2.3565164149775678e-17', '3.29e-10', '7.752939005276198062e-27'); + + T('-7.3082509513985065717321588249117283909294426665053038123171823802E45', '8.1139587436599483304895082011722489767478591E-41', '-592988.4670796104848902291110510024833882877779324139587779775769322761921828542989063538752670078960459222982'); + T('4.1580690407774531635854811718695276837491313289E8', '4.51151976050001428945887983E-3', '1875921.0642990819646935715021378546121515533349338737465486653798953306087'); + T('-5.94098742155317032555791061122172112467693488807700534435506921715E-24', '4.61016941217052394016E20', '-0.0027388958488934255950077406845338327546662445400484871083292926528860519832777944645744'); + T('3.7504E-12', '-7.88007879736459852E17', '-2955344.7521636190289408'); + T('-2.1186022052008407937878760699384240447915477894859451125820040738844629725E-19', '-7.216767917254229694821186934734207628E33', '1528946042391748.997410886033946108685159225196274137373381385049759221715038347354480872320019684962009305423'); + T('-5E-13', '-2.75399279758638331766833072E26', '137699639879319.165883416536'); + T('6E-5', '2.417496760754967572844203198215987E23', '14504980564529805437.065219189295922'); + T('-4.945015198370467209539041539486792258261028978257673527352148835976343131637595762491692863E23', '3.21738997057546245991016675193089492784008451753637062802134E-9', '-1591004230358037.215453223084728812766073228229224818741711464362077222232342773738670279322956619570773005741693064394880256558629265661028200068969642'); + T('8.944326872147001036632309667E-41', '1.34989853214019743744001484188796117541380712420727841534671603347856989127834147166127622e+48', '120739337.1569336009465330585026690676314127638673504378646869299090176172459431821906069831664699038568059542346321874'); + T('-1.06387569312217787644613114942E-25', '-3.49651047707433733724368394353972842316097364325909366154237667988339210449181953609691895611E35', '37198525073.064174722364904333744771229085129180022174384101305415837978911883846550330098510374779170577866567699408319562'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js new file mode 100644 index 0000000..a0c8e99 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js @@ -0,0 +1,845 @@ +var count = (function toExponential(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toExponential(decimalPlaces)); + } + + log('\n Testing toExponential...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + T('1e+0', 1, undefined); + T('1.1e+1', 11, undefined); + T('1.12e+2', 112, undefined); + + T('1e+0', 1, 0); + T('1e+1', 11, 0); + T('1e+2', 112, 0); + T('1.0e+0', 1, 1); + T('1.1e+1', 11, 1); + T('1.1e+2', 112, 1); + T('1.00e+0', 1, 2); + T('1.10e+1', 11, 2); + T('1.12e+2', 112, 2); + T('1.000e+0', 1, 3); + T('1.100e+1', 11, 3); + T('1.120e+2', 112, 3); + T('1e-1', 0.1, undefined); + T('1.1e-1', 0.11, undefined); + T('1.12e-1', 0.112, undefined); + T('1e-1', 0.1, 0); + T('1e-1', 0.11, 0); + T('1e-1', 0.112, 0); + T('1.0e-1', 0.1, 1); + T('1.1e-1', 0.11, 1); + T('1.1e-1', 0.112, 1); + T('1.00e-1', 0.1, 2); + T('1.10e-1', 0.11, 2); + T('1.12e-1', 0.112, 2); + T('1.000e-1', 0.1, 3); + T('1.100e-1', 0.11, 3); + T('1.120e-1', 0.112, 3); + + T('-1e+0', -1, undefined); + T('-1.1e+1', -11, undefined); + T('-1.12e+2', -112, undefined); + T('-1e+0', -1, 0); + T('-1e+1', -11, 0); + T('-1e+2', -112, 0); + T('-1.0e+0', -1, 1); + T('-1.1e+1', -11, 1); + T('-1.1e+2', -112, 1); + T('-1.00e+0', -1, 2); + T('-1.10e+1', -11, 2); + T('-1.12e+2', -112, 2); + T('-1.000e+0', -1, 3); + T('-1.100e+1', -11, 3); + T('-1.120e+2', -112, 3); + T('-1e-1', -0.1, undefined); + T('-1.1e-1', -0.11, undefined); + T('-1.12e-1', -0.112, undefined); + T('-1e-1', -0.1, 0); + T('-1e-1', -0.11, 0); + T('-1e-1', -0.112, 0); + T('-1.0e-1', -0.1, 1); + T('-1.1e-1', -0.11, 1); + T('-1.1e-1', -0.112, 1); + T('-1.00e-1', -0.1, 2); + T('-1.10e-1', -0.11, 2); + T('-1.12e-1', -0.112, 2); + T('-1.000e-1', -0.1, 3); + T('-1.100e-1', -0.11, 3); + T('-1.120e-1', -0.112, 3); + + T('NaN', NaN, undefined); + T('NaN', -NaN, 2); + T('Infinity', Infinity, undefined); + T('Infinity', Infinity, 10); + T('-Infinity', -Infinity, 0); + T('-Infinity', -Infinity, 1); + T('0e+0', 0, undefined); + T('0e+0', -0, undefined); + T('-5.0e-1', -0.5, 1); + T('0.00e+0', 0, 2); + T('1e+1', 11.2356, 0); + T('1.1236e+1', 11.2356, 4); + T('1.1236e-4', 0.000112356, 4); + T('-1.1236e-4', -0.000112356, 4); + T('1.12356e-4', 0.000112356, undefined); + T('-1.12356e-4', -0.000112356, undefined); + + T('1.00e+0', 0.99976, 2); + T('1.00e+2', 99.9979, 2); + T('1.00e+5', '99991.27839', 2); + T('1.000e+2', '99.999', 3); + T('1.000e+7', '9999512.8', 3); + T('1.00e+9', '999702726', 2); + T('1.000e+3', '999.964717', 3); + + BigNumber.config({ROUNDING_MODE : 0}); + + T('-5.3453435435e+8', '-53453.435435E4', undefined); + T('-8.8254658100092746334967191957167916942544e+17', '-882546581000927463.34967191957167916942543286', 40); + T('-4.794121828559674450610889008537305783490457e-9', '-0.00000000479412182855967445061088900853730578349045628396662493370334888944406719979291547717079', 42); + T('3.6149e+33', '3614844933096444884855774574994631.0106397808', 4); + T('5.582954000000000e-12', '0.000000000005582954', 15); + T('-3.88740271991885914774802363151163005925700000000000000000e-24', '-0.000000000000000000000003887402719918859147748023631511630059257', 56); + T('-6.87079645872437277236913190316306435274902613151676421e-20', '-0.00000000000000000006870796458724372772369131903163064352749026131516764202733298056929060151437', 53); + T('3.8181874087278104533737313621586530711155405443818235503358935045749888900678e+35', '381818740872781045337373136215865307.11155405443818235503358935045749888900677769535371296063', 76); + T('-7.11375441247784115059912118586189732891550e+20', '-711375441247784115059.91211858618973289154952986', 41); + T('6.5783e+24', '6578282366667302135641813.7249573246362582', 4); + T('6.000000000000000000000e-20', '0.00000000000000000006', 21); + T('-5.3799672107777e+13', '-53799672107777', 13); + T('-6.949e-23', '-0.00000000000000000000006948849870723', 3); + T('-8.073585184316705309757817e+25', '-80735851843167053097578169.623098209399637950843019109979317', 24); + T('-4.2956483e-12', '-0.0000000000042956482047751', 7); + T('-6.1162155721951440801240154580459651167830311633e+15', '-6116215572195144.0801240154580459651167830311633', 46); + T('-7.263265230767e-21', '-0.000000000000000000007263265230766073544739', 12); + T('-2.3013406115701776345891815e+18', '-2301340611570177634.5891814408272260224632', 25); + T('-6.0299793663e+30', '-6029979366232747481609455093247.705001183386474', 10); + T('-2.97544304967e+21', '-2975443049668038511693.75547178021412', 11); + T('-4.1471192639160032e+10', '-41471192639.1600315953295208128538183546', 16); + T('-3.61201776785294987e+27', '-3612017767852949869824542721.1595027189', 17); + T('-6.9983494044506115115e+17', '-699834940445061151.14676', 19); + T('-1.4580700323629245038287e+20', '-145807003236292450382.86958174', 22); + T('-8.54e+10', '-85390930743', 2); + T('-2.715269856970717e+19', '-27152698569707163435', 15); + T('-5.67681004e+20', '-567681003999187989540.627303416332508226276308449233', 8); + T('-2.06809e+27', '-2068085084336615438842661921.06985539576218546524301', 5); + T('-2.92273061370427012250925e+14', '-292273061370427.0122509240087955481845060858420928631', 23); + T('-4.3355e-17', '-0.0000000000000000433542', 4); + T('-3.491610942584e+21', '-3491610942583064798345', 12); + T('-8.701944635985129980360621e+16', '-87019446359851299.8036062002728328', 24); + T('-4.9e-10', '-0.000000000486409475991', 1); + T('-4.82125e+19', '-48212433366063403866', 5); + T('-7.95593941e-20', '-0.000000000000000000079559394098236', 8); + T('-2.00563e-10', '-0.0000000002005622924388', 5); + T('-6.9777057921142634382521825e+16', '-69777057921142634.3825218243275152606161149381', 25); + T('-8.42591e+14', '-842590769172062', 5); + T('-6.35123264409e+27', '-6351232644080754054285724566', 11); + T('-5.508835492577586495894259979e-28', '-0.00000000000000000000000000055088354925775864958942599785412', 27); + T('-2.667451876e+12', '-2667451875964', 9); + T('-6.6444610474323616283e+26', '-664446104743236162820999716', 19); + T('-2.419775049243e+12', '-2419775049242.726', 12); + T('-5.32e-18', '-0.000000000000000005319', 2); + T('-8.63030355223e-26', '-0.000000000000000000000000086303035522286938593814060049934', 11); + T('-2.5046920981956385048538613818080285657602718e+17', '-250469209819563850.48538613818080285657602717018', 43); + T('-3.78e+15', '-3779392491464393.04412843034387404882622864039', 2); + T('-3.3883802002818774e-21', '-0.0000000000000000000033883802002818773261717', 16); + T('-3.57205e+19', '-35720468100481047658.74549510716', 5); + T('-5.23810604e+18', '-5238106039196464333.4164490675655417554216049', 8); + T('-8.9851705212202749156714435676788925065e+21', '-8985170521220274915671.443567678892506483244', 37); + T('-4.8002620797467441513113e+15', '-4800262079746744.151311270846595944560084461404058322669896', 22); + T('-7.6602835119619761973713784765241687426415076035234065319212e+19', '-76602835119619761973.713784765241687426415076035234065319212', 58); + T('-5.381812197644510770977641728943e+29', '-538181219764451077097764172894.2045958494', 30); + T('-6.04171e+30', '-6041702557251805571827972925970.859227', 5); + T('-3.995516696587253269e+28', '-39955166965872532681529528721.070757896455736015403', 18); + T('-7.597966e+15', '-7597965080819292', 6); + T('-5.302339e+10', '-53023381796.8478', 6); + T('-9.02545540564356e+13', '-90254554056435.587103358700012', 14); + T('-4.90010261765297775855e+21', '-4900102617652977758549.72018756787751358174277326416937', 20); + T('-5.078904359675664732215233579164e+14', '-507890435967566.473221523357916309238214', 30); + T('-5.521012629302366870801695374639196986679745208450805993e+22', '-55210126293023668708016.9537463919698667974520845080599201807', 54); + T('-5.2937835496774926e-19', '-0.00000000000000000052937835496774925027979577384249493104941', 16); + T('-2.3554653675126963e+18', '-2355465367512696228', 16); + T('-2.891052510655698093e-17', '-0.000000000000000028910525106556980924149216708779185331', 18); + T('-3.68377e-16', '-0.0000000000000003683765961604816288244373051', 5); + T('-3.95708e+25', '-39570783738574043219687566.965221194063889914', 5); + T('-3.584456985168021826814122e-17', '-0.0000000000000000358445698516802182681412158196413726', 24); + T('-8.556316744104688591686120874555554808035e+28', '-85563167441046885916861208745.55554808034964', 39); + T('-6.02219e+18', '-6022186164465021650.884475588', 5); + T('-7.790612428288e+18', '-7790612428287383595.5394047', 12); + + BigNumber.config({ROUNDING_MODE : 1}); + + T('0e+0', '-0.0E-0', undefined); + T('-2.856376815219143184897347685012382222462687620998915470135915e+6', '-2856376.815219143184897347685012382222462687620998915470135915511363444', 60); + T('7.75700e-24', '0.000000000000000000000007757', 5); + T('7.0e-1', '0.7', 1); + T('5.2109749078977455423107465583658126e+37', '52109749078977455423107465583658126637', 34); + T('3.631093819552528994444977110063007461579154042777868294000e-29', '0.00000000000000000000000000003631093819552528994444977110063007461579154042777868294', 57); + T('-9.893937860425888e+8', '-989393786.042588804219191', 15); + T('8.7978043622607467e+42', '8797804362260746751563912625017414439944006.5804807', 16); + T('-4.6561702764394602621e-7', '-0.000000465617027643946026213823955447791862428108248596086901464075785390015', 19); + T('-2.542770482242902215596924884302407e+8', '-254277048.224290221559692488430240765024783', 33); + T('2.70000000e-8', '0.000000027', 8); + T('-8.0291821891769794408790934252924453237e+16', '-80291821891769794.408790934252924453237503615825249362166', 37); + T('-8.05295923004057358545854771e-16', '-0.0000000000000008052959230040573585458547716514262', 26); + T('-2.786758e-21', '-0.00000000000000000000278675879025858093817787290334306', 6); + T('-8.0160835624737225803853824687641777660406527e+20', '-801608356247372258038.538246876417776604065270622886204812876', 43); + T('-7.2849054887999144694619191770897589e+27', '-7284905488799914469461919177.08975892527524', 34); + T('-7.586e-17', '-0.00000000000000007586908', 3); + T('-5.9508150933636580674249602941673984254864e+20', '-595081509336365806742.496029416739842548642249', 40); + T('-3.526911897e-18', '-0.000000000000000003526911897770082481187', 9); + T('-5.774e-22', '-0.0000000000000000000005774729035676859', 3); + T('-6.4700957007714124190210074e-13', '-0.00000000000064700957007714124190210074383', 25); + T('-5.610492e+21', '-5610492566512449795573', 6); + T('-6.015e+23', '-601556443593022914280678', 3); + T('-6.0673361553344e+11', '-606733615533.448288878', 13); + T('-3.1e+26', '-315617199368461055533962323.071668327669249', 1); + T('-9.1391079512104562032343e+24', '-9139107951210456203234346', 22); + T('-2.0441e+21', '-2044198307917443182711', 4); + T('-8.21283723216249535240085606500821783973097233e+23', '-821283723216249535240085.606500821783973097233814324', 44); + T('-6.375e+14', '-637540984314799.4', 3); + T('-2.17797482005219478530856429744726e+29', '-217797482005219478530856429744.7268928676963181', 32); + T('-3.9547e+11', '-395476721391', 4); + T('-6.8927e+21', '-6892798573971046301111', 4); + T('-6.33842141402916538926e-12', '-0.000000000006338421414029165389261335065112712777', 20); + T('-4.5727e-30', '-0.000000000000000000000000000004572725511159166', 4); + T('-7.8847457779026882221249217577974e-17', '-0.000000000000000078847457779026882221249217577974', 31); + T('-2.64916231640264927e+12', '-2649162316402.649271824', 17); + T('-1.73604404e+28', '-17360440496948254515028685124.37795415803082546457797184294', 8); + T('-8.680224985623e+16', '-86802249856236148.11694273469092873', 12); + T('-4.3e-19', '-0.00000000000000000043859841576346037715462713764211635', 1); + T('-7.68867535389098159141717105e-11', '-0.000000000076886753538909815914171710501337139', 26); + T('-5.24325038611090505928389422325001606e+21', '-5243250386110905059283.894223250016067979080420266', 35); + T('-1.38e-21', '-0.0000000000000000000013874592057586367688528204069850262406', 2); + T('-7.308601949094508589445770582074109410615037e+24', '-7308601949094508589445770.5820741094106150373221910779', 42); + T('-3.2638e+13', '-32638405387645.3309565877781780222317335852159983', 4); + T('-3.55454737448094719019291183206515059962378e+22', '-35545473744809471901929.118320651505996237856336054914', 41); + T('-5.3906242252792e-11', '-0.00000000005390624225279268530907215395611', 13); + T('-8.86760873811213105078e+15', '-8867608738112131.050787', 20); + T('-4.78129254835567e-23', '-0.00000000000000000000004781292548355671480462711435866243551', 14); + T('-6.4694208834502691835879021438795583630205e-19', '-0.00000000000000000064694208834502691835879021438795583630205', 40); + T('-9.324e-25', '-0.00000000000000000000000093242969', 3); + T('-6.922220589076408182786e+19', '-69222205890764081827.8655148459740694252038421', 21); + T('-4.193207546161458e+19', '-41932075461614585862.215078', 15); + T('-7.98e+20', '-798827417648620333729.80696458197', 2); + T('-2.53e-27', '-0.0000000000000000000000000025361014542495516754818606153', 2); + T('-1.4930677606201e-20', '-0.0000000000000000000149306776062013560263804', 13); + T('-2.4385708957357e+19', '-24385708957357294486.03887038886025345320045340124898971786', 13); + T('-2.3170650157672525597815028610843e+18', '-2317065015767252559.781502861084367708776250552', 31); + T('-6.9178198e+18', '-6917819884210952360.76327902290237387108459707859893972', 7); + T('-5.8557793e-24', '-0.000000000000000000000005855779377', 7); + T('-2.9760848e-12', '-0.00000000000297608486674725722', 7); + T('-5.994209456542723342157e+23', '-599420945654272334215750.2697081334512770109182770472941827', 21); + T('-2.176318765141873189550724e+24', '-2176318765141873189550724', 24); + T('-3.015068240172763167642991583362591462e+17', '-301506824017276316.76429915833625914624', 36); + T('-4.092360120459492827213341546580282588568024330771e+25', '-40923601204594928272133415.465802825885680243307714368088538', 48); + T('-1.241037736e-28', '-0.00000000000000000000000000012410377364', 9); + + BigNumber.config({ROUNDING_MODE : 2}); + + T('0e+0', '0E0000000000', undefined); + T('0e+0', '-0E01', undefined); + T('0.00e+0', '-0E00000000001', 2); + T('3.0465655253692145345165166442116e-14', '0.0000000000000304656552536921453451651664421156', 31); + T('9.0573943842008592406279608542923313381394286641978907203396551e+22', '90573943842008592406279.60854292331338139428664197890720339655043720040907662489784', 61); + T('-1.17181502970008783734855040984899000e-1', '-0.117181502970008783734855040984899', 35); + T('-5.28860565e-16', '-0.00000000000000052886056528317233012115396784629214632', 8); + T('6.4114675970838738000e-18', '0.0000000000000000064114675970838738', 19); + T('8.00000000000000000000e-20', '0.00000000000000000008', 20); + T('2.74000064578288771723078597711103520450391668117802304078152085625023633681179e+24', '2740000645782887717230785.977111035204503916681178023040781520856250236336811781347278', 77); + T('8.1936742669491704846805837777816457628e-16', '0.00000000000000081936742669491704846805837777816457628', 37); + T('-7.2157448e+14', '-721574484716710.00141299844961546', 7); + T('-5.321807464703650000000e-15', '-0.00000000000000532180746470365', 21); + T('-4.449e+27', '-4449471658582621135143349142.228707647170080816912435271162', 3); + T('-4.922915821313919623758e+19', '-49229158213139196237.584', 21); + T('-6.996668225774098e-14', '-0.000000000000069966682257740984029052', 15); + T('-8.6856039174822133942616012424795168e+11', '-868560391748.2213394261601242479516861829472792', 34); + T('-8.461e+21', '-8461810373307862460504', 3); + T('-3.898716627703194625824411967e+25', '-38987166277031946258244119.67718', 27); + T('-2.821935496755e+26', '-282193549675582402670759843.23655', 12); + T('-3.49e-22', '-0.0000000000000000000003491662482987', 2); + T('-3.362111778576231615366457333e-14', '-0.0000000000000336211177857623161536645733316587527475522615', 27); + T('-5.9933e-13', '-0.00000000000059933412636903331', 4); + T('-2.77927721e+29', '-277927721100404435781172100113.4136636412460458083951', 8); + T('-1.876833722329e-10', '-0.0000000001876833722329987477942', 12); + T('-6.5e+14', '-653341175209856', 1); + T('-8.627291840173867961e+14', '-862729184017386.7961', 18); + T('-3.9137457165597668391301218029e-11', '-0.00000000003913745716559766839130121802935022889', 28); + T('-8.95e+10', '-89532775488', 2); + T('-2.1395541875015568986238e-17', '-0.000000000000000021395541875015568986238771696', 22); + T('-4.98575853353890809143399546448630559732119628e-12', '-0.00000000000498575853353890809143399546448630559732119628509', 44); + T('-8.99e+16', '-89989591559494822', 2); + T('-3.49346327e+22', '-34934632714180035424463', 8); + T('-3.5699537605753905457597e-14', '-0.00000000000003569953760575390545759785014980652333323889116', 22); + T('-2.9892536880349975618286e+12', '-2989253688034.9975618286212199904979534461637613', 22); + T('-3.04383919217904949618e+10', '-30438391921.790494961888803732171', 20); + T('-8.232411544e+17', '-823241154405701456', 9); + T('-5.809151226990464016815e-16', '-0.00000000000000058091512269904640168152354', 21); + T('-8.522042397326932431e+13', '-85220423973269.324312660179132118', 18); + T('-7.5210942e-22', '-0.000000000000000000000752109428925015', 7); + T('-5.2018321449543e+23', '-520183214495439298725191.09', 13); + T('-6.04084045453711395629268198016245611021901815e+21', '-6040840454537113956292.68198016245611021901815486929628647', 44); + T('-1.495478178996755138125934544343674798e-13', '-0.00000000000014954781789967551381259345443436747983317353423', 36); + T('-6.881484497510733524151245220630282259985306546537e+16', '-68814844975107335.241512452206302822599853065465371507616758', 48); + T('-4.7121389019956e-14', '-0.00000000000004712138901995619', 13); + T('-8.8332728504053108443425344711e-15', '-0.00000000000000883327285040531084434253447119282', 28); + T('-8.2e+14', '-822000812447305', 1); + T('-7.772164697477093877214551050634072755e+21', '-7772164697477093877214.55105063407275517068350805', 36); + T('-3.9087122838427126623505550357872e+10', '-39087122838.4271266235055503578721071128', 31); + T('-2.312032777966762704192668904908578897e+20', '-231203277796676270419.266890490857889726891117', 36); + T('-6.145717261905789834140342e+10', '-61457172619.0578983414034269108488849155084479', 24); + T('-1.22122395777234009028954105999904e+23', '-122122395777234009028954.10599990431', 32); + T('-8.11092557e-19', '-0.000000000000000000811092557221182808185409783', 8); + T('-2.0148183904e+12', '-2014818390421', 10); + T('-8.5895e+12', '-8589543094837', 4); + T('-4.52948430169449249063e+13', '-45294843016944.92490631367483828208567689248', 20); + T('-5.5627328016242253171e+18', '-5562732801624225317.15482034912', 19); + T('-2.299e+22', '-22994771657263381474221.8393766046648504992', 3); + T('-4.886104291748549e+15', '-4886104291748549.177', 15); + T('-3.7192656464776e-11', '-0.00000000003719265646477604172611', 13); + T('-6.135956620537e+25', '-61359566205370067856449153.5', 12); + T('-3.35703853285800120218674208960269655701e-14', '-0.000000000000033570385328580012021867420896026965570155917', 38); + T('-8.713884178791321311224703e+22', '-87138841787913213112247.03564225163096', 24); + T('-7.073358e+12', '-7073358766762', 6); + T('-6.829e+30', '-6829360758600890577632541121747.862424035', 3); + T('-3.05687463293e+22', '-30568746329329110731433.300963185825462157574537899186', 11); + T('-8.761781e+24', '-8761781624975891699172893.0141633817001124644', 6); + T('-1.477e+12', '-1477134517234.0307742', 3); + T('-5.78904078729758522168774487851811e+16', '-57890407872975852.216877448785181168776187771353947582', 32); + T('-7.74939714942520320266429137e+12', '-7749397149425.20320266429137053013', 26); + T('-8.3224649681672648581370532515e-14', '-0.00000000000008322464968167264858137053251586527433370546682', 28); + T('-7.04146154016765195683657078079536e-22', '-0.000000000000000000000704146154016765195683657078079536', 32); + T('-1.914289454756549529781861916925090389e+16', '-19142894547565495.29781861916925090389840210707205', 36); + T('-8.840670154325523051759462672e+27', '-8840670154325523051759462672.142803216', 27); + T('-2.823e-11', '-0.00000000002823852806134378210195515771768582269146178698', 3); + T('-1.5186417607496557534159723950506e+29', '-151864176074965575341597239505.06547275781526923', 31); + T('-7.397218e+16', '-73972184449181471.152912157', 6); + T('-3.581193819284374099989e+22', '-35811938192843740999895.1573225646377886389016478830802218237', 21); + T('-4.563585432210043885759681337791545e+29', '-456358543221004388575968133779.154510217739887576756399', 33); + T('-1.8176465832459836335875e-18', '-0.0000000000000000018176465832459836335875559', 22); + T('-3.784854627631e+20', '-378485462763141736445.9462626829154663', 12); + T('-3.8510536744200399243363367786406618e+23', '-385105367442003992433633.6778640661831754293129488068676868', 34); + T('-8.7323e+22', '-87323916569164596208111.88101028771355420576029037973', 4); + T('-7.578e+11', '-757882758255.76', 3); + T('-8.5977102122033e+20', '-859771021220338061040.041580289025031', 13); + T('-7.3998697893908579137880913e+17', '-739986978939085791.37880913509684330685', 25); + T('-6.71117252123290052432148305375254e-19', '-0.00000000000000000067111725212329005243214830537525418', 32); + T('-6.6762993760195471322427204620426381935201299178096e+11', '-667629937601.9547132242720462042638193520129917809665', 49); + T('-2.852022020015364818597602e+15', '-2852022020015364.818597602673413917443', 24); + T('-3.151044e+30', '-3151044929117854676102403114231.56823295246', 6); + T('-4.47120537692951873038916592e+10', '-44712053769.29518730389165927694', 26); + T('-7.4041969e+23', '-740419699691346150775964.049522110341852844412207474667958', 7); + T('-6.311838e-10', '-0.000000000631183849892543191', 6); + T('-7.2570104326587672213e+16', '-72570104326587672.213076838263780308795144628367752', 19); + T('-4.445769230869049803541e+15', '-4445769230869049.80354196820931591782233498498378174385', 21); + + BigNumber.config({ROUNDING_MODE : 3}); + + T('-9.99999999000000009e+8', '-999999999.000000009e-0', undefined); + T('-3.99764422903251220452704763278376060858663250289320247532595e+24', '-3997644229032512204527047.63278376060858663250289320247532594416986984981431156065660613', 59); + T('5.534083545686157907280686578717428772e+12', '5534083545686.157907280686578717428772', 36); + T('5.00000000e-9', '0.000000005', 8); + T('-4.08363116583051e+14', '-408363116583051', 14); + T('9.278230415634296945273818e+19', '92782304156342969452.738186255580532649103987374718221928871873054827841260470670536425', 24); + T('-1.08732508998603085454662e-12', '-0.000000000001087325089986030854546619968259691229662152159029641023997866843605032534351388775075', 23); + T('3.5288804517377606688698e+32', '352888045173776066886981811418233.218955856086', 22); + T('4.32188781438877554e+16', '43218878143887755.42593887518334667202', 17); + T('-8.15e+2', '-815', 2); + T('1.515077312590223222678749527e+18', '1515077312590223222.678749527895871363186918977679783240817218232896076765321818445939718165', 27); + T('-8.0538186421664536509917032729912932814374102e+20', '-805381864216645365099.17032729912932814374101821', 43); + T('-3.4367097301002099047381e+14', '-343670973010020.990473804391071456587732173', 22); + T('-5.3421e-12', '-0.0000000000053420288504', 4); + T('-2.6320052e+23', '-263200517731973006983184.60341959097016190770542276', 7); + T('-4.5e-11', '-0.000000000044673422483', 1); + T('-7.232463101115829118145025733451801e-17', '-0.00000000000000007232463101115829118145025733451800457178', 33); + T('-1.18320100044154762448545914170978206041022039e+22', '-11832010004415476244854.5914170978206041022038489', 44); + T('-7.745237371276392645711e+21', '-7745237371276392645710.0521930569226728841707200771', 21); + T('-4.431559500053255695643e-10', '-0.000000000443155950005325569564213010993378905', 21); + T('-2.5e-24', '-0.000000000000000000000002443', 1); + T('-5.005027028439023958391203127005503621542e-11', '-0.0000000000500502702843902395839120312700550362154137', 39); + T('-6.453525377934213334367e-22', '-0.00000000000000000000064535253779342133343665123283565', 21); + T('-4.5594370326121718626850982373529e+13', '-45594370326121.71862685098237352845979966987', 31); + T('-1.709e+16', '-17088248121660259', 3); + T('-3.9047581533864713e+16', '-39047581533864712.6574405', 16); + T('-2.08804202e-17', '-0.000000000000000020880420127397564274443250271135', 8); + T('-6.801694635944774655689008216925036e+15', '-6801694635944774.65568900821692503508025', 33); + T('-8.7691286374104240967931800593734e+19', '-87691286374104240967.93180059373367907299683816381677816389', 31); + T('-2.802257731715238453e-29', '-0.000000000000000000000000000028022577317152384526775320012', 18); + T('-4.4705e+22', '-44704405768781565005877.813010169083', 4); + T('-4.17374908496486449232e-10', '-0.00000000041737490849648644923105632500267064', 20); + T('-2.2707e-10', '-0.00000000022706134122862417334386435', 4); + T('-2.85432e-24', '-0.0000000000000000000000028543100839983854161', 5); + T('-5.79188949e+12', '-5791889489461.643555240257', 8); + T('-7.46e+15', '-7459701910718662.03421293892346992893463534702', 2); + T('-1.0535086280629e+25', '-10535086280628995915087428.2423609320023833125322801559606', 13); + T('-2.9074412651647188367106e+30', '-2907441265164718836710598468491.31550321772', 22); + T('-5.010945976711327691649e+27', '-5010945976711327691648509517.2305', 21); + T('-8.8633960213386533e-20', '-0.0000000000000000000886339602133865324283362544', 16); + T('-3.1891844834898211661452730714015664837805e+19', '-31891844834898211661.45273071401566483780434051217', 40); + T('-5.083380976014365533843229882526437e+28', '-50833809760143655338432298825.264367948359', 33); + T('-6.8e-16', '-0.000000000000000678534987604148025611184', 1); + T('-7.9e+30', '-7838656097386639584904346062976.9346038436', 1); + T('-6.30535781e+20', '-630535780834495012856', 8); + T('-9.663e-30', '-0.00000000000000000000000000000966289400023904753107633012', 3); + T('-2.315198482309e+12', '-2315198482308.7361348', 12); + T('-8.158235289416e+18', '-8158235289415958939', 12); + T('-4.1618890517404316933699206360639988582832624525e+23', '-416188905174043169336992.063606399885828326245241437', 46); + T('-5.97550716981833990839441709632e+21', '-5975507169818339908394.41709631281058258352209', 29); + T('-6.3372e-18', '-0.000000000000000006337122571683959413228', 4); + T('-8.9189088e+18', '-8918908714500548003.38400978696756078013348', 7); + T('-2.30738494e+15', '-2307384939629592.5507643557167543121437', 8); + T('-5.5187220703008771818558364e+20', '-551872207030087718185.58363308126401300424', 25); + T('-6.6221540532808e+16', '-66221540532807215', 13); + T('-7.52280140768218860970644149216497725e+28', '-75228014076821886097064414921.6497724655', 35); + T('-4.50815289e-10', '-0.0000000004508152886241127131780051700309401', 8); + T('-8.05636473909e+28', '-80563647390897795982047004786.9809587987299506647489380735', 11); + T('-8.3e-22', '-0.00000000000000000000082867896643314771124884886449603747139', 1); + T('-8.3783e+13', '-83782644902152', 4); + T('-1.1939712427296807e+16', '-11939712427296807', 16); + T('-6.520492185955083727143468903725e+24', '-6520492185955083727143468.90372469799639', 30); + T('-5.468441290352576854e+22', '-54684412903525768532358.76123265640787599117379', 18); + T('-6.3213239044187e-12', '-0.000000000006321323904418628', 13); + T('-6.80758136e+10', '-68075813559.812083737218313494618879237157412', 8); + T('-2.32394435705096500766e+20', '-232394435705096500765.423311444507670516532857314906', 20); + T('-5.35396744204815374979010975360864002355e+14', '-535396744204815.374979010975360864002354465685768494008245896', 38); + T('-1.8388340153656061115e-24', '-0.0000000000000000000000018388340153656061114681', 19); + T('-2.09349812455746e+24', '-2093498124557455120865520.476275227', 14); + T('-2.888450139093515656e-25', '-0.0000000000000000000000002888450139093515656', 18); + T('-6.97756838052316890676e+30', '-6977568380523168906759075718628.73360426401485819654038588804', 20); + T('-8.05604538646883624239398132377048820023e+24', '-8056045386468836242393981.323770488200227820839', 38); + T('-4.13045948e+29', '-413045947014551860341804907208.7067642881758676', 8); + T('-7.990552461602111454165337515e+23', '-799055246160211145416533.75144940262265224221931', 27); + T('-7.84498851993324e+11', '-784498851993.323271787115869178093231451893938531755482687806', 14); + T('-8.63875584973951951712658379e-21', '-0.000000000000000000008638755849739519517126583785754757065', 26); + T('-8.61609302272300237447639006834635e-14', '-0.00000000000008616093022723002374476390068346342187746', 32); + T('-7.01300801762e+17', '-701300801761204790.177590913310762', 11); + T('-8.0318131135482342451545e-11', '-0.0000000000803181311354823424515442372680533', 22); + T('-8.310034087753417316659936093943321e+25', '-83100340877534173166599360.9394332099174859', 33); + T('-7.716088095718838665380730070082633435173897567e+30', '-7716088095718838665380730070082.6334351738975662966', 45); + T('-6.5207000918869e-14', '-0.00000000000006520700091886862177', 13); + T('-6.579884485936605389e+14', '-657988448593660.538847871', 18); + T('-5.31961604251455760419e+30', '-5319616042514557604183392605338.36600372994596807972708', 20); + T('-7.87765329352729e+16', '-78776532935272856.77806', 14); + T('-8.23e+11', '-822427564609', 2); + T('-1.2946e+16', '-12945401038582508.297183225785515084520662225', 4); + T('-4.3885535805231634787626423119240512694696e+14', '-438855358052316.347876264231192405126946952', 40); + T('-6.4067449547192616381924351e-29', '-0.00000000000000000000000000006406744954719261638192435066816', 25); + T('-9.41834953e+18', '-9418349527156084224.2', 8); + T('-3.19716162829318952418046452988e+13', '-31971616282931.895241804645298754890905582545633', 29); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('-5.002239116605888927178702930656e-39', '-0.00000000000000000000000000000000000000500223911660588892717870293065633642', 30); + T('-8.52292947230244775435e+29', '-852292947230244775434968241532.494643593912804433318745222587246680109833509655450267792446', 20); + T('-6.1169514510867e+10', '-61169514510.8673382', 13); + T('-8.05745763527307676170759722175169266017831695215e+48', '-8057457635273076761707597221751692660178316952146', 47); + T('-4.923572102098e+10', '-49235721020.9847017846898652687600227388412980598816', 12); + T('-7.981341661715027117746906076515945e+41', '-798134166171502711774690607651594491039629', 33); + T('-8.00e-3', '-0.008', 2); + T('8.517466793430899278197016892000000000000e-15', '0.000000000000008517466793430899278197016892', 39); + T('-3.032293512e+0', '-3.0322935124071923328711934463341802038', 9); + T('-2.60682904403489305678908771323995810138267385200000000e-20', '-0.00000000000000000002606829044034893056789087713239958101382673852', 53); + T('-3.935816927273980e+20', '-393581692727398036652.850960055902271', 15); + T('-2.98297216346e-27', '-0.00000000000000000000000000298297216346039288935575576076143', 11); + T('-3.01319315e+23', '-301319315398414808376087.572306433', 8); + T('-8.870698526921188e-12', '-0.00000000000887069852692118832284144110732', 15); + T('-3.27e+23', '-326739927744903524706793.652546266488323001284674736489440831', 2); + T('-8.614e+12', '-8613828413581', 3); + T('-6.1382445990593346026804e+12', '-6138244599059.3346026803630253203', 22); + T('-7.9111971e+12', '-7911197130975', 7); + T('-8.5902152501051e+29', '-859021525010507210136559039003.689834129033952321238', 13); + T('-7.24491e-30', '-0.00000000000000000000000000000724490826045045451271534', 5); + T('-8.4948070285349193974989221504919380656715136165603325e+24', '-8494807028534919397498922.15049193806567151361656033246', 52); + T('-6.3295239596e-17', '-0.00000000000000006329523959626011114164', 10); + T('-3.1725692353e+30', '-3172569235260846783669130724638.711', 10); + T('-4.065727077e+11', '-406572707673.336570352310681187663765', 9); + T('-6.82883869249998075574247223155497e+18', '-6828838692499980755.7424722315549682855987375899188309581152', 32); + T('-2.56144400427045214943786338e+24', '-2561444004270452149437863.38354535663028539', 26); + T('-4.97637439956044400125498868e+23', '-497637439956044400125498.8682100590602459937304614141772', 26); + T('-4.307891929198702822746534506143e+29', '-430789192919870282274653450614.349564081', 30); + T('-8.55e-27', '-0.00000000000000000000000000855367295711812079', 2); + T('-7.906e+11', '-790612526329.410459220189562', 3); + T('-3.1841363e-22', '-0.00000000000000000000031841363', 7); + T('-6.2068049304845006e+20', '-620680493048450055389.3227069760888437941041', 16); + T('-8.4809476e+18', '-8480947614295114807.320148688', 7); + T('-2.287988570734255855e+23', '-228798857073425585542366.399034916953775', 18); + T('-8.148647139762925073276164486240320698e+21', '-8148647139762925073276.1644862403206980851079', 36); + T('-6.87643138785664756e-12', '-0.0000000000068764313878566475604352570287089535238582267443', 17); + T('-3.709587e+18', '-3709586618852569033.55141868', 6); + T('-6.8086794224e+28', '-68086794224433270564431694468.814537646575833889824621540849', 10); + T('-4.966301085179e+19', '-49663010851788946007', 12); + T('-5.34439184068052811184219234494114e+26', '-534439184068052811184219234.494113670484623394', 32); + T('-2.798732412e+16', '-27987324119455299', 9); + T('-1.554430791885961957e+15', '-1554430791885961.956863404519493346081223', 18); + T('-6.90619083822075003978e+24', '-6906190838220750039778836.289105048686876596', 20); + T('-1.108034176809770578315e+12', '-1108034176809.7705783154', 21); + T('-1.43e+22', '-14266566332440117777110.63461224926682073525873105', 2); + T('-9.15e+13', '-91477543307040.916791223', 2); + T('-1.1001e+26', '-110010856476508992391958436.9355559264588205214557001854', 4); + T('-1.2e+16', '-12148027447349021', 1); + T('-4.4e+13', '-44268551660889.40880208546489742632181832780494', 1); + T('-8.62058920338555484081691e+19', '-86205892033855548408.169086865949596390775', 23); + T('-5.2e-13', '-0.00000000000051876025261394172', 1); + T('-4.88063953404884862027221562057786242658496407473e-11', '-0.0000000000488063953404884862027221562057786242658496407473', 47); + T('-5.255e+18', '-5254530327311322805.9528217', 3); + T('-6.4630488003995117e-11', '-0.0000000000646304880039951167486', 16); + T('-3.15214e-23', '-0.00000000000000000000003152137339126187', 5); + T('-8.86563136e+11', '-886563136251.626990531858472111699416852', 8); + T('-8.638990742871e-16', '-0.0000000000000008638990742870608', 12); + T('-1.57817750020560815944470062e+12', '-1578177500205.60815944470062002898187', 26); + T('-3.6558384593093900422637e-27', '-0.00000000000000000000000000365583845930939004226367940618', 22); + T('-7.5e+12', '-7540535487033', 1); + T('-6.7647935206791247e+19', '-67647935206791246567', 16); + T('-3.0204818086245915027e+30', '-3020481808624591502749101182536.872936744534671794', 19); + T('-8.40498662e+12', '-8404986622734.85', 8); + T('-2.944135296894e-18', '-0.0000000000000000029441352968942548971', 12); + T('-8.826099694855290261753e+11', '-882609969485.52902617534731', 21); + T('-1.9717565867734925e-13', '-0.000000000000197175658677349252855292223369', 16); + T('-4.91451975824866130376722e+20', '-491451975824866130376.722358803861287205044883122152013315', 23); + T('-5.111649e+17', '-511164947156144375', 6); + T('-9.496473458673099e+11', '-949647345867.30987953779868637405061', 15); + T('-2.1903308925764762892e+21', '-2190330892576476289225', 19); + T('-3.47598363e+25', '-34759836338593591584288059.755482689269713', 8); + T('-2.9192144584989753156762701431e-24', '-0.0000000000000000000000029192144584989753156762701431', 28); + T('-4.0456517973466503588734928438425e+23', '-404565179734665035887349.28438424933669843', 31); + T('-1.297871549154944904150929e+17', '-129787154915494490.4150929407633398', 24); + T('-1.4566530316908752e+18', '-1456653031690875152.6306667', 16); + T('-3.5521e-12', '-0.00000000000355210483', 4); + T('-9.1838324864110351307221525161e+17', '-918383248641103513.07221525161442', 28); + T('-8.33245633316304149287131334e-22', '-0.00000000000000000000083324563331630414928713133382', 26); + T('-4.593824606634605622464043606094613988489104e+15', '-4593824606634605.62246404360609461398848910424547985108092894', 42); + T('-5.232e-26', '-0.0000000000000000000000000523185958604202852', 3); + T('-3.8319390497954462e+25', '-38319390497954461897251251.444', 16); + T('-1.00157678068191049988073716749599603712e+17', '-100157678068191049.9880737167495996037119953003896147', 38); + T('-4.169977410059689809645035174132294864e+20', '-416997741005968980964.50351741322948635363513285839302', 36); + T('-7.121660153198989278372512656775647e-11', '-0.0000000000712166015319898927837251265677564651728358', 33); + T('-7.98924570545536548623603750084330391943e+19', '-79892457054553654862.360375008433039194317394396964358522', 38); + + BigNumber.config({ROUNDING_MODE : 5}); + + T('4.95474614815842e+38', '495474614815842191683004449862568813538.573064401156', 14); + T('-8.9667567079038139e+16', '-89667567079038139', 16); + T('-7.0e+2', '-703', 1); + T('-2.6249e+33', '-2624861185343559570287214983819906', 4); + T('-6.510119186347371697501169416839709631422185436811698613000000000000000000000000000000e-31', '-0.0000000000000000000000000000006510119186347371697501169416839709631422185436811698613', 84); + T('7.73e+3', '7729', 2); + T('1.4393781011009257793117531801549e+4', '14393.781011009257793117531801548751', 31); + T('8.4e+6', '8404542', 1); + T('8.471284625267663009248667391059202502589207637435209861233007389000000000000000e-35', '0.00000000000000000000000000000000008471284625267663009248667391059202502589207637435209861233007389', 78); + T('-5.26079297227015e+31', '-52607929722701509263909039511536.9266822991', 14); + T('-4.63550600857003551411914120562163394e+15', '-4635506008570035.51411914120562163394396594237358863897062', 35); + T('-7.8219563406482338767189100434751303552919130625101491e+27', '-7821956340648233876718910043.4751303552919130625101491', 52); + T('-6.977184098e+17', '-697718409782854734', 9); + T('-8.1e+15', '-8092701222454628.9934935902179330839653799891168', 1); + T('-3.872944373744596915691884729973e+15', '-3872944373744596.91569188472997336351132980366520033057011287', 30); + T('-1.389676e+11', '-138967565295.146055555208419143848718279114979831585', 6); + T('-2.218316993130903882223e+19', '-22183169931309038822.22612', 21); + T('-3.370809304e-25', '-0.000000000000000000000000337080930401566', 9); + T('-6.1503e+19', '-61503417721509415792.24703', 4); + T('-3.13657134e-22', '-0.00000000000000000000031365713378439345', 8); + T('-1.9e-10', '-0.000000000187981', 1); + T('-2.596508353714425677970049724e+28', '-25965083537144256779700497237.5841327343962292316215149169', 27); + T('-4.151454545748277604112308101174917062e+11', '-415145454574.827760411230810117491706171981266892178', 36); + T('-1.3e-18', '-0.000000000000000001319061308619561567664259803361817', 1); + T('-1.5294854487046553159e+24', '-1529485448704655315921667', 19); + T('-1.9365487654708143765583400538310103350799e-13', '-0.000000000000193654876547081437655834005383101033507988', 40); + T('-3.88128259276357427027515474e+25', '-38812825927635742702751547.353', 26); + T('-5.64525474904155517374289736218e-11', '-0.00000000005645254749041555173742897362182099811344', 29); + T('-8.94963385755006409131430087734467745e+22', '-89496338575500640913143.0087734467744538', 35); + T('-3.7551731901764025e+17', '-375517319017640249', 16); + T('-7.601921e-16', '-0.00000000000000076019214974360137746140339586742455753', 6); + T('-6.93501087055e+20', '-693501087055377288564', 11); + T('-1.283656440009563e+24', '-1283656440009563292695670.575360580373829197017512', 15); + T('-4.9556506e+13', '-49556505932168.7211084603', 7); + T('-8.133584588946e+26', '-813358458894586332533196788.490201803951456991010654609646', 12); + T('-3.824207296e+22', '-38242072955850210158724', 9); + T('-4.2168087e-12', '-0.00000000000421680868317080291', 7); + T('-7.152812829e+15', '-7152812829336253.782723153403637377960530795', 9); + T('-8.0469635248612874571e+16', '-80469635248612874.5712104436', 19); + T('-2.726549954018643349550392804e+11', '-272654995401.8643349550392803783934819148125595437353472547', 27); + T('-2.477986360297097033217143e+30', '-2477986360297097033217143442370.539404', 24); + T('-2.7620555408e+15', '-2762055540757162', 10); + T('-5.044e+10', '-50436788962', 3); + T('-1.51176171306898543927009427965761639e+17', '-151176171306898543.9270094279657616389483779413616294465635', 35); + T('-3.76233131039732974161231568e+13', '-37623313103973.2974161231567776787873083163171', 26); + T('-1.77876313221062362e+17', '-177876313221062362.01', 17); + T('-4.28033364715744300662536e+13', '-42803336471574.430066253616', 23); + T('-6.053e-13', '-0.00000000000060527568964627046163209582', 3); + T('-3.9447068214322315685949701607748761e+16', '-39447068214322315.685949701607748760885392781169754754427622', 34); + T('-4.76203665586552028e+15', '-4762036655865520.285', 17); + T('-7.442141482296791204320219247230530359e+24', '-7442141482296791204320219.2472305303585223494415', 36); + T('-5.96279453376966633e+23', '-596279453376966633175009.6', 17); + T('-3.393419405169789e+24', '-3393419405169788742460001.267', 15); + T('-5.3001e+12', '-5300055380607', 4); + T('-5.6075017651299255742594578e+24', '-5607501765129925574259457.7938331743229', 25); + T('-1.7016332185618e-12', '-0.000000000001701633218561829307163951183908', 13); + T('-8.2586539997288574125e-29', '-0.0000000000000000000000000000825865399972885741250631446', 19); + T('-6.867e+11', '-686673700185', 3); + T('-6.77934398386662123284e+26', '-677934398386662123284378302.457585912', 20); + T('-1.68708254641574159341563239757e+14', '-168708254641574.159341563239757201959', 29); + T('-7.969791397195291274332017902569730510486538e+16', '-79697913971952912.74332017902569730510486538476172', 42); + T('-8.35460490386e+14', '-835460490386401.159749305581999482', 11); + T('-3.4904587e+10', '-34904586685.65531405315150234636', 7); + T('-7.655476116917648649e-10', '-0.0000000007655476116917648649345', 18); + T('-3.035704337e+17', '-303570433749270293', 9); + T('-1.4902739431686400585e-18', '-0.000000000000000001490273943168640058452103113', 19); + T('-2.57617086126164572e+17', '-257617086126164572', 17); + T('-6.9708e+16', '-69708261331391628', 4); + T('-8.61400120130585599610136e-12', '-0.00000000000861400120130585599610136066', 23); + T('-9.0670988886e-19', '-0.000000000000000000906709888862126926', 10); + T('-2.889463982215818248e-26', '-0.00000000000000000000000002889463982215818248', 18); + T('-3.7376459408597195073982491e+26', '-373764594085971950739824910.4572745527', 25); + T('-6.21372353850510695881280108179e-12', '-0.0000000000062137235385051069588128010817907', 29); + T('-2.4240953581712173951958e-21', '-0.00000000000000000000242409535817121739519585', 22); + T('-8.3687559027615173415e+18', '-8368755902761517341.46477685623835786273991', 19); + T('-7.18294352e-11', '-0.0000000000718294352479105', 8); + T('-3.52454012503419773886785e-25', '-0.000000000000000000000000352454012503419773886785342913143', 23); + + BigNumber.config({ROUNDING_MODE : 6}); + + T('-4.3502707501164e+36', '-4350270750116411997402439304498892819', 13); + T('9.5e-21', '0.0000000000000000000094520280724178734152', 1); + T('1.39631186750554172785676012693418617250072200744214625994656047727270672248243741907e+34', '13963118675055417278567601269341861.725007220074421462599465604772727067224824374190703237660781', 83); + T('5.9446570e-26', '0.00000000000000000000000005944657036540768164877637239177740419063920648', 7); + T('7.00000e-12', '0.000000000007', 5); + T('-2.87e+14', '-287060740776209.3950381715', 2); + T('3.411740542875509329e+24', '3411740542875509328514044', 18); + T('-6.20235112738687046118395830000000000000000000000e-29', '-0.000000000000000000000000000062023511273868704611839583', 47); + T('2.94349130121570276626863135396717336528655493e+19', '29434913012157027662.686313539671733652865549279174', 44); + T('4.01255076512828067130306533670644537832e-10', '0.000000000401255076512828067130306533670644537831678294548', 38); + T('-5.4277306444432e+11', '-542773064444.317654960431120452254700391693837992', 13); + T('-4.355706886680889557797360814402e+30', '-4355706886680889557797360814401.536556745674646509159280626', 30); + T('-1.29e-15', '-0.00000000000000128978312277001609181774216296380783932', 2); + T('-1.0588973816292989769e+25', '-10588973816292989768709129.1767038708798755780352204', 19); + T('-3.210569596e+10', '-32105695962.8803639621', 9); + T('-7.18504270173744681360682714959e+28', '-71850427017374468136068271495.87', 29); + T('-4.29794333519778779150824479010034817077204e-10', '-0.0000000004297943335197787791508244790100348170772040392', 41); + T('-4.615682142828269066227773895179987062919e+20', '-461568214282826906622.7773895179987062919071922', 39); + T('-1.3864477517287155526073e+13', '-13864477517287.15552607265', 22); + T('-6.793120028e+13', '-67931200280922.72252141789646787475433427482', 9); + T('-8.075e-18', '-0.000000000000000008074975073002274636799975', 3); + T('-8.360228691054180854419062530687032074820667001e+24', '-8360228691054180854419062.530687032074820667001120752628', 45); + T('-3.0763956760417194035216e-12', '-0.000000000003076395676041719403521594', 22); + T('-2.5288383e+25', '-25288383009460922631988717.84659997837058450749', 7); + T('-4.554185192e+29', '-455418519247311560996997520087.98189', 9); + T('-9.135175372324138467397264e+11', '-913517537232.413846739726417', 24); + T('-8.257259383044471855222900534859251889332388855848e-10', '-0.0000000008257259383044471855222900534859251889332388855848', 48); + T('-7.651597268450922707e-13', '-0.000000000000765159726845092270720405167100094', 18); + T('-8.952011763950994514e+26', '-895201176395099451377549961.34870447', 18); + T('-2.7395479569618982298152060567357e-10', '-0.00000000027395479569618982298152060567357', 31); + T('-1.31151451700453378841431e+24', '-1311514517004533788414313', 23); + T('-5.915297930316863891e-10', '-0.0000000005915297930316863890707686339684395', 18); + T('-1.449e-27', '-0.0000000000000000000000000014487033279693402845128265141859', 3); + T('-3.7e+10', '-36919550406.826974442743517918128', 1); + T('-3.945347688940382499631779106638865e+13', '-39453476889403.824996317791066388653', 33); + T('-8.547704e-29', '-0.0000000000000000000000000000854770378842608635356', 6); + T('-3.76e+25', '-37618296325402619735777629.467812385256281737441412', 2); + T('-8.031066086398624e+28', '-80310660863986235667567286452', 15); + T('-4.038276256088135496e-17', '-0.000000000000000040382762560881354955896694823328777602811', 18); + T('-1.77173574740860868e+25', '-17717357474086086837250852', 17); + T('-1.421967649e+21', '-1421967648805122645888', 9); + T('-4.7e+11', '-469485715327', 1); + T('-7.372223291560455075681748682810527006883e+16', '-73722232915604550.75681748682810527006882666313809409', 39); + T('-8.9539396357e+14', '-895393963565598', 10); + T('-8.14646103854802172250414801405e+10', '-81464610385.48021722504148014045579178726', 29); + T('-1.2053415734425581e+12', '-1205341573442.5581371841633131879', 16); + T('-8.35214176861046133596101313170854966756043001e+28', '-83521417686104613359610131317.0854966756043001041619492', 44); + T('-3.7610694152e-28', '-0.00000000000000000000000000037610694151517628351', 10); + T('-6.71e-12', '-0.00000000000670729337105720320122353', 2); + T('-4.005517304396006251e+13', '-40055173043960.0625088492324182094858', 18); + T('-6.0206e+28', '-60205974155921075891080012488.4566490314762809', 4); + T('-6.36287561326e+11', '-636287561325.9124444291802472', 11); + T('-3.11336117e-16', '-0.000000000000000311336117052129384933053792', 8); + T('-5.3927134886536e+30', '-5392713488653639958906162302264.424436642808', 13); + T('-3.82395446711276e-10', '-0.0000000003823954467112758458806849565215407952986440811', 14); + T('-4.2858082253423e-27', '-0.0000000000000000000000000042858082253422975', 13); + T('-2.9918792622984137284399075479267066e+14', '-299187926229841.3728439907547926706557', 34); + T('-3.1949909651023223034303544498737e+27', '-3194990965102322303430354449.8737', 31); + T('-9.1e-27', '-0.0000000000000000000000000090531861025', 1); + T('-2.8e+11', '-279301037794', 1); + T('-7.126913661498270214611054421e+13', '-71269136614982.70214611054420849', 27); + T('-4.86337579169293342736515180299340135e+13', '-48633757916929.334273651518029934013479777304', 35); + T('-3.406744915848058125e+25', '-34067449158480581246177934.3445612265793', 18); + T('-5.542902272865090080311949446460659235171860088660477e+16', '-55429022728650900.803119494464606592351718600886604770155246', 51); + T('-8.26224854264697737938997145336e+12', '-8262248542646.9773793899714533620028598662842221171', 29); + T('-3.16331e+18', '-3163306186318700887', 5); + T('-9.087531707575372e+25', '-90875317075753723792666377.6466517495', 15); + T('-8.758548512438e+14', '-875854851243824.87435', 12); + T('-3.9e-11', '-0.0000000000387093', 1); + T('-3.987015017148130889206385341736666180313e+11', '-398701501714.813088920638534173666618031251290587', 39); + T('-2.493129998e-11', '-0.00000000002493129997889845697168462', 9); + T('-7.0892393575673871055576e+17', '-708923935756738710.5557595392277447617', 22); + T('-4.931821627225927773384e-20', '-0.00000000000000000004931821627225927773384063578', 21); + T('-5.245261764976094777313893054196562e-17', '-0.0000000000000000524526176497609477731389305419656234', 33); + T('-6.66625797221972034223428591e+23', '-666625797221972034223428.590606426470365', 26); + T('-4.06575860462e+17', '-406575860461750182.91372176567693718', 11); + T('-8.90585675951e+19', '-89058567595113495345', 11); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('-2.033619450856645241153977e+0', '-2.03361945085664524115397653636144859', 24); + T('1.130e+8', '112955590.0430616', 3); + T('-2.1366468193419876852426155614364269e+10', '-21366468193.419876852426155614364269', 34); + T('5.82086615659566151529e+7', '58208661.56595661515285734890860077163', 20); + T('9.1615809372817426111208e+6', '9161580.937281742611120838868847823478250167882379624', 22); + T('3.8976506901061164197e+1', '38.97650690106116419699490320634490920742414', 19); + T('9.0994914931570087194607344641722310104e+6', '9099491.4931570087194607344641722310103895224905', 37); + T('6.06e+5', '605633', 2); + T('2.6999974790473705518992117e+1', '26.9999747904737055189921170044987', 25); + T('6.7108801361722e+6', '6710880.136172156342982663450743452', 13); + T('-8.0e+0', '-8', 1); + T('3.000e-2', '0.03', 3); + T('-4.7e+2', '-469', 1); + T('-6.3000e+0', '-6.3', 4); + T('-5.4e+2', '-542', 1); + T('-5.2000e+0', '-5.2', 4); + T('-9.00000e-2', '-0.09', 5); + T('-3.1000e-1', '-0.31', 4); + T('-4.4e+2', '-436', 1); + T('-3.00e+0', '-3', 2); + T('-5.00e-2', '-0.05', 2); + T('1.00e-2', '0.01', 2); + + T('1.230e+2', '12.3e1',BigNumber('3')); + T('1.23e+2', '12.3e1', null); + T('1.23e+2', '12.3e1', undefined); + T('1e+2', '12.3e1', '0'); + T('1e+2', '12.3e1', '-0'); + T('1e+2', '12.3e1', '-0.000000'); + T('1e+2', '12.3e1', 0); + T('1e+2', '12.3e1', -0); + + assertException(function () {new BigNumber('1.23').toExponential(NaN)}, "('1.23').toExponential(NaN)"); + assertException(function () {new BigNumber('1.23').toExponential('NaN')}, "('1.23').toExponential('NaN')"); + assertException(function () {new BigNumber('1.23').toExponential([])}, "('1.23').toExponential([])"); + assertException(function () {new BigNumber('1.23').toExponential({})}, "('1.23').toExponential({})"); + assertException(function () {new BigNumber('1.23').toExponential('')}, "('1.23').toExponential('')"); + assertException(function () {new BigNumber('1.23').toExponential(' ')}, "('1.23').toExponential(' ')"); + assertException(function () {new BigNumber('1.23').toExponential('hello')}, "('1.23').toExponential('hello')"); + assertException(function () {new BigNumber('1.23').toExponential('\t')}, "('1.23').toExponential('\t')"); + assertException(function () {new BigNumber('1.23').toExponential(new Date)}, "('1.23').toExponential(new Date)"); + assertException(function () {new BigNumber('1.23').toExponential(new RegExp)}, "('1.23').toExponential(new RegExp)"); + assertException(function () {new BigNumber('1.23').toExponential(2.01)}, "('1.23').toExponential(2.01)"); + assertException(function () {new BigNumber('1.23').toExponential(10.5)}, "('1.23').toExponential(10.5)"); + assertException(function () {new BigNumber('1.23').toExponential('1.1e1')}, "('1.23').toExponential('1.1e1')"); + assertException(function () {new BigNumber('1.23').toExponential(true)}, "('1.23').toExponential(true)"); + assertException(function () {new BigNumber('1.23').toExponential(false)}, "('1.23').toExponential(false)"); + assertException(function () {new BigNumber('1.23').toExponential(function (){})}, "('1.23').toExponential(function (){})"); + + assertException(function () {new BigNumber(12.3).toExponential('-1')}, ".toExponential('-1')"); + assertException(function () {new BigNumber(12.3).toExponential(-23)}, ".toExponential(-23)"); + assertException(function () {new BigNumber(12.3).toExponential(1e9 + 1)}, ".toExponential(1e9 + 1)"); + assertException(function () {new BigNumber(12.3).toExponential(1e9 + 0.1)}, ".toExponential(1e9 + 0.1)"); + assertException(function () {new BigNumber(12.3).toExponential(-0.01)}, ".toExponential(-0.01)"); + assertException(function () {new BigNumber(12.3).toExponential('-1e-1')}, ".toExponential('-1e-1')"); + assertException(function () {new BigNumber(12.3).toExponential(Infinity)}, ".toExponential(Infinity)"); + assertException(function () {new BigNumber(12.3).toExponential('-Infinity')}, ".toExponential('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('Infinity', Infinity, 0); + T('Infinity', Infinity, NaN); + T('Infinity', Infinity, null); + T('Infinity', Infinity, Infinity); + T('NaN', NaN, -Infinity); + + T('1.230e+2', '12.3e1', BigNumber(3)); + T('1.23e+2', '12.3e1', null); + T('1.23e+2', '12.3e1', undefined); + T('1.23e+2', '12.3e1', NaN); + T('1.23e+2', '12.3e1', 'NaN'); + T('1.23e+2', '12.3e1', []); + T('1.23e+2', '12.3e1', {}); + T('1.23e+2', '12.3e1', ''); + T('1.23e+2', '12.3e1', ' '); + T('1.23e+2', '12.3e1', 'hello'); + T('1.23e+2', '12.3e1', '\t'); + T('1.23e+2', '12.3e1', ' '); + T('1.23e+2', '12.3e1', new Date); + T('1.23e+2', '12.3e1', new RegExp); + + T('1e+2', '12.3e1', -0); + T('1.2e+2', '12.3e1', 1.999); + T('1.2300000e+2', '12.3e1', 7.5); + T('1.23000000000e+2', '12.3e1', '1.1e1'); + + T('1.23e+2', '12.3e1', '-1'); + T('1.23e+2', '12.3e1', -23); + T('1.23e+2', '12.3e1', 1e9 + 1); + T('1.23e+2', '12.3e1', 1e9 + 0.1); + T('1.23e+2', '12.3e1', -0.01); + T('1.23e+2', '12.3e1', '-1e-1'); + T('1.23e+2', '12.3e1', Infinity); + T('1.23e+2', '12.3e1', '-Infinity'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js new file mode 100644 index 0000000..93d91d7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js @@ -0,0 +1,1499 @@ +var count = (function toFixed(BigNumber) { + var start = +new Date(), + log, + error, + u, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, decimalPlaces){ + assert(String(expected), new BigNumber(value).toFixed(decimalPlaces)); + } + + log('\n Testing toFixed...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number/toFixed + // Javascript: 2.26.toFixed(5) returns 2.26000 + // Javascript: -2.26.toFixed(5) returns -2.26 + // BigNumber: new BigNumber(-2.26).toFixed(5) returns -2.26000 + + T('100.0', 99.9512986, 1); + T('10.0', 9.95036, 1); + T('1.0', 0.99, 1); + T('0.10', 0.09906, 2); + T('0.010', 0.0098034, 3); + + T('NaN', NaN, 2); + T('Infinity', 1/0, 2); + T('-Infinity', -1/0, 2); + + T('1111111111111111111111.00000000', '1111111111111111111111', 8); + T('0.1', 0.1, 1); + T('0.10', 0.1, 2); + T('0.100', 0.1, 3); + T('0.01', 0.01, 2); + T('0.010', 0.01, 3); + T('0.0100', 0.01, 4); + T('0.00', 0.001, 2); + T('0.001', 0.001, 3); + T('0.0010', 0.001, 4); + T('1.0000', 1, 4); + T('1.0', 1, 1); + T('1', 1, 0); + T('12', 12, 0); + T('1', 1.1, 0); + T('12', 12.1, 0); + T('1', 1.12, 0); + T('12', 12.12, 0); + T('0.0000006', 0.0000006, 7); + T('0.00000006', 0.00000006, 8); + T('0.000000060', 0.00000006, 9); + T('0.0000000600', 0.00000006, 10); + T('0', 0, 0); + T('0.0', 0, 1); + T('0.00', 0, 2); + + T('-1111111111111111111111.00000000', '-1111111111111111111111', 8); + T('-0.1', -0.1, 1); + T('-0.10', -0.1, 2); + T('-0.100', -0.1, 3); + T('-0.01', -0.01, 2); + T('-0.010', -0.01, 3); + T('-0.0100', -0.01, 4); + T('-0.00', -0.001, 2); + T('-0.001', -0.001, 3); + T('-0.0010', -0.001, 4); + T('-1.0000', -1, 4); + T('-1.0', -1, 1); + T('-1', -1, 0); + T('-1', -1.1, 0); + T('-12', -12.1, 0); + T('-1', -1.12, 0); + T('-12', -12.12, 0); + T('-0.00000', -0.0000006, 5); + T('-0.0000006', -0.0000006, 7); + T('-0.00000006', -0.00000006, 8); + T('-0.000000060', -0.00000006, 9); + T('-0.0000000600', -0.00000006, 10); + T('0', 0, 0); + T('0', -0, 0); + T('0.0', -0, 1); + T('0.00', -0, 2); + T('0.00', '-0.0', 2); + T('0.00', '-0.0000', 2); + T('0.0000', -0, 4); + + T('1000', 1000, u); + T('0.00001', 0.00001, u); + T('0.00001', 0.00001, 5); + T('0.00000000000000000010', '0.0000000000000000001', 20); + T('0.00001000000000000', 0.00001, 17); + T('1.00000000000000000', 1, 17); + T('1000000000000000128', '1000000000000000128', u); + T('100000000000000128.0', '100000000000000128', 1); + T('10000000000000128.00', '10000000000000128', 2); + T('10000000000000128.00000000000000000000', '10000000000000128', 20); + T('0', 0, u); + T('-42.000', -42, 3); + T('-1000000000000000128', '-1000000000000000128', u); + T('-0.00000000000000000010', '-0.0000000000000000001', 20); + T('0.12312312312312300000', '0.123123123123123', 20); + + T('1', 0.5, 0); + T('-1', -0.5, 0); + T('1.3', 1.25, 1); + T('234.2041', 234.20405, 4); + T('234.2041', '234.204050000000000000000000000000006', 4); + + BigNumber.config({ROUNDING_MODE : 0}); + + T('6552606716539719300271040797809220.3', '6552606716539719300271040797809220.237838405', 1); + T('25605410.260045950231371', '25605410.260045950231370974066', 15); + T('-65593283.0000', '-65593283', 4); + T('-2238743875407788208860272230040067273281097722822075126.88000000000', '-2238743875407788208860272230040067273281097722822075126.88', 11); + T('-1714042659419404211.0000000', '-1714042659419404211', 7); + T('580861301.000', '580861301', 3); + T('-495746734.000', '-495746734', 3); + T('-909962202.00000', '-909962202', 5); + T('-6588.00', '-6588', 2); + T('-89235424125324.000000', '-89235424125324', 6); + T('-0.0001', '-0.0000000000177', 4); + T('-0.1', '-0.000000000000007', 1); + T('7086047552021418140460170703933026989776558656.864197000000000', '7086047552021418140460170703933026989776558656.864197', 15); + T('-0.0000000001', '-0.0000000000000000007707', 10); + T('6613833500.133407255728', '6613833500.133407255727325566781771', 12); + T('-0.60', '-0.6', 2); + T('-5800577761301861465745732694236894834.347199790459214393940', '-5800577761301861465745732694236894834.34719979045921439394', 21); + T('65495133621931312001260.90', '65495133621931312001260.89870016055223846451749943336585697', 2); + T('-0.0000001', '-0.0000000000021727264987520611266069544793244453321336', 7); + T('5138338134667513058267845351654.0073', '5138338134667513058267845351654.007282', 4); + T('-419591612781413402.1606094651083282', '-419591612781413402.16060946510832813452', 16); + T('-842984708.00000', '-842984708', 5); + T('6094679992788973717749530934167375519948195193196.00000000000', '6094679992788973717749530934167375519948195193196', 11); + T('3070926.00', '3070926', 2); + T('-49738484.22445560175', '-49738484.2244556017464380224443566512165424404', 11); + T('0.01', '0.007252154601', 2); + T('0.01', '0.0000000008450464516429601', 2); + T('64191341.1515', '64191341.151484', 4); + T('-0.0000000000000004274', '-0.00000000000000042733957907641417564294', 19); + T('-307434.0', '-307434', 1); + T('-7155930111672774753753.84501482871023', '-7155930111672774753753.845014828710226', 14); + T('-204638.0', '-204638', 1); + T('67354.81', '67354.801797', 2); + T('0.000042911675', '0.000042911674899533228107357062', 12); + T('-57865060735863.5903347110', '-57865060735863.590334711', 10); + T('-0.00889', '-0.0088857', 5); + T('655593535442553089245040020344044.000000000000', '655593535442553089245040020344044', 12); + T('-2077237944012133216588518213.9402', '-2077237944012133216588518213.9401561759783653376', 4); + T('3354.50', '3354.49314543', 2); + T('-0.00001', '-0.000000000000091204118667391473401958802734362777499449233', 5); + T('-2817626898661648124242602088971648489124280903.00000000000000000000000', '-2817626898661648124242602088971648489124280903', 23); + T('-0.1138', '-0.1137406345875745478881089475981775971743', 4); + T('372625.84', '372625.836933301', 2); + T('-0.0001', '-0.0000000000030295', 4); + T('-0.20133282610692', '-0.2013328261069183505168093992697', 14); + T('-674022381434.84086', '-674022381434.840858317', 5); + T('527.32194354633', '527.32194354632981665427056720389485101', 11); + T('0.0000000195361247565', '0.0000000195361247564008390550978147981600411', 19); + T('-2163002984808367617.0000', '-2163002984808367617', 4); + T('-4169664275471960031191605200147601022249457082609196211576.20000000000000000000000', '-4169664275471960031191605200147601022249457082609196211576.2', 23); + T('-0.00000000000555130', '-0.0000000000055512969161980904744035', 17); + T('119869956144.00', '119869956144', 2); + T('1.039', '1.038251882646323867920972358898559', 3); + T('-2.0', '-2', 1); + T('7410.197760931', '7410.197760930626987673', 9); + T('6638110167526.00', '6638110167526', 2); + T('30974929342171050427055113.00', '30974929342171050427055113', 2); + T('43480882950025886012415275271059692966.000', '43480882950025886012415275271059692966', 3); + T('-0.1', '-0.0000004587260575000190182731', 1); + T('-71828326035.100387343565950831', '-71828326035.100387343565950830073177108125', 18); + T('-552954262470932495380914766735683420381508430032672.0000000000000', '-552954262470932495380914766735683420381508430032672', 13); + T('-0.001', '-0.000000006438270583885530971500187308778545384', 3); + T('-1241063214283490729682249.3542720483313661438', '-1241063214283490729682249.35427204833136614379131332498', 19); + T('50729670708122152413903981650812767483.000000000000000000', '50729670708122152413903981650812767483', 18); + T('-0.8', '-0.73086389033', 1); + T('0.000000001', '0.0000000000035654453258182342271756', 9); + T('-37426128484776251838279429.00000', '-37426128484776251838279429', 5); + T('-8858815238086078991845344.00', '-8858815238086078991845344', 2); + T('715713000263082248.000', '715713000263082248', 3); + T('-1290.35664066483299', '-1290.35664066483298067128266141875', 14); + T('-0.00000008453', '-0.0000000845275307904197645672104', 11); + T('-435325479515.000000', '-435325479515', 6); + T('-55.026', '-55.0259854614935863191307', 3); + T('-111827547395883838719196940005789974871114521059.00000000000000000000000', '-111827547395883838719196940005789974871114521059', 23); + T('-0.80', '-0.8', 2); + T('-8.17139161520009', '-8.1713916152000874707093159619488493836845705', 14); + T('769000136593201.985181', '769000136593201.98518095', 6); + T('31159491831470011.07740834271415', '31159491831470011.0774083427141446999', 14); + T('89059.299592037965784', '89059.2995920379657839664222340962987295864685207', 15); + T('0.1', '0.06', 1); + T('-4570519.0000', '-4570519', 4); + T('-0.0000001518', '-0.000000151731483260580950465152613377577649917', 10); + T('-5555052692.071431452', '-5555052692.07143145120571654571684469634938224716', 9); + T('0.01', '0.0000000735211529638724323811564431527925439', 2); + T('-230061001007826663915617395042288.847216199000', '-230061001007826663915617395042288.847216199', 12); + T('-6453992990066244249806.375375876294395', '-6453992990066244249806.3753758762943945461637495930201559', 15); + T('-0.01', '-0.0000026377450289082142641925', 2); + T('-363618346.0', '-363618346', 1); + T('0.01', '0.00000000009', 2); + T('65432262394897701468848832.7', '65432262394897701468848832.607978068443545803141', 1); + T('567040263395365029.000', '567040263395365029', 3); + T('7431958669891786786543853147278.580', '7431958669891786786543853147278.58', 3); + T('0.0580', '0.0579400993437', 4); + T('-5364310483511374687804726517179019251624044430754.23807000000000', '-5364310483511374687804726517179019251624044430754.23807', 14); + T('81096.00', '81096', 2); + T('-0.000000766905', '-0.00000076690484881136751175461310751844214625312811858607148', 12); + T('837.0', '837', 1); + T('-0.000001', '-0.0000000003241605066758965441271096586120022721670744987061', 6); + T('18848356500282.000000', '18848356500282', 6); + T('-6865183293234767102.91096748000', '-6865183293234767102.91096748', 11); + + BigNumber.config({ROUNDING_MODE : 1}); + + T('0.3', '0.3', 1); + T('-200258348374.3', '-200258348374.3595802551014614089785610548492885372322083789', 1); + T('-8996550690041157178188143247448286757711.5580857413', '-8996550690041157178188143247448286757711.55808574133329', 10); + T('-3172413669280032477.00', '-3172413669280032477', 2); + T('6547946357820.750067107731812021675', '6547946357820.750067107731812021675351468709784004', 21); + T('24188393190716631282750407915133817062572333100239.0000000000000000000', '24188393190716631282750407915133817062572333100239', 19); + T('539982361589798324286450574560330534901309503.82000000', '539982361589798324286450574560330534901309503.82', 8); + T('829898800701640360552652.0000', '829898800701640360552652', 4); + T('-1585782773394.4', '-1585782773394.44501382110847', 1); + T('-7604844176594943774211951887242195107.399', '-7604844176594943774211951887242195107.399576743428669618164', 3); + T('-0.00', '-0.0000000000000005153003506839', 2); + T('0.000', '0.00003', 3); + T('-5454249481540317712.560293859013731302', '-5454249481540317712.56029385901373130215526009738012974642338', 18); + T('15352607654972198961429295651185206861818141054385638.00000000000000000', '15352607654972198961429295651185206861818141054385638', 17); + T('91494535411039025233040.292', '91494535411039025233040.29224903220309368507011', 3); + T('2043369316.0', '2043369316', 1); + T('-0.0000000782350618457', '-0.0000000782350618457630647420312027682238301541350414', 19); + T('2122652.0', '2122652', 1); + T('-0.00841365', '-0.00841365099301981489219310202029642', 8); + T('0.0', '0.0007035', 1); + T('-0.00000000000000374916', '-0.0000000000000037491685778894015479084539735777088', 20); + T('534883638.00', '534883638', 2); + T('-2.0', '-2', 1); + T('-5634442247266825358399629799939027370665.0000000000000000000', '-5634442247266825358399629799939027370665', 19); + T('3331187169219186569122.000000000', '3331187169219186569122', 9); + T('0.0000000000', '0.0000000000006604395609805032330367635527', 10); + T('-0.0000000000000576901', '-0.00000000000005769013292086168690493327', 19); + T('-661.8', '-661.828596629053201916486', 1); + T('-6073555395665254434249128854999349235744174928042756.1153000000000', '-6073555395665254434249128854999349235744174928042756.1153', 13); + T('-5013086846966.000', '-5013086846966', 3); + T('0.004015', '0.00401523226833', 6); + T('3140295374107374579919222510.1462722', '3140295374107374579919222510.1462722819395532', 7); + T('-0.000000', '-0.00000000000000799876460379334679831886', 6); + T('-0.00', '-0.0003', 2); + T('-0.026760766726884267', '-0.026760766726884267750393307117624838556001925491', 18); + T('-20821740502968847857923433558797.0899', '-20821740502968847857923433558797.08997487843745', 4); + T('0.00000000002', '0.000000000020346524414696573703092255317751132892', 11); + T('45492073832204366341299301624.000000000', '45492073832204366341299301624', 9); + T('-22166905155222048275755520049666636.000000000000000', '-22166905155222048275755520049666636', 15); + T('-0.0047749609085292677147', '-0.00477496090852926771478756451899887586311084', 22); + T('0.0000000000066505751320542', '0.000000000006650575132054209449586010993453988006221893652', 25); + T('-5987959.1630276586738', '-5987959.163027658673856586', 13); + T('-1666.00', '-1666', 2); + T('634686619827216246836355610829.00000', '634686619827216246836355610829', 5); + T('-4775591515709.469953191321103401', '-4775591515709.4699531913211034017874029213583522324151968262', 18); + T('-0.00209248872211', '-0.002092488722118037239933953031151990638700454763', 14); + T('4592542353054190400811174084.8269203906', '4592542353054190400811174084.826920390637', 10); + T('-2719622410429690231797721788738949434271171.000000000', '-2719622410429690231797721788738949434271171', 9); + T('7481081126833353571249877375770446139269602514514.000000000000000', '7481081126833353571249877375770446139269602514514', 15); + T('-717308374940.1455264110', '-717308374940.145526411005821148802846366045624291352081913', 10); + T('-0.000000007', '-0.000000007385554720977', 9); + T('-0.000861389378754506340', '-0.000861389378754506340296565696012302905659179798', 21); + T('-5053251493102402525630380749.678', '-5053251493102402525630380749.6785380807585', 3); + T('-4.0', '-4', 1); + T('-91608.490784509096643367058', '-91608.49078450909664336705884736640894006', 21); + T('0.000', '0.000000008', 3); + T('-60759551763816025544062865222.0000000000', '-60759551763816025544062865222', 10); + T('1052.9354577213309', '1052.93545772133093448862729794627180236152', 13); + T('45267509474.0', '45267509474', 1); + T('3157315152.00', '3157315152', 2); + T('-0.5', '-0.5', 1); + T('0.0057546', '0.005754639024965241832260499185230186', 7); + T('-0.000', '-0.0006', 3); + T('3230791870040253164174259086.74466486260', '3230791870040253164174259086.7446648626', 11); + T('-4344423254203589122222715762047.000000', '-4344423254203589122222715762047', 6); + T('0.000000', '0.00000000000000000005', 6); + T('-0.00000000', '-0.0000000000000032995964759', 8); + T('29342667392627.13800502090', '29342667392627.1380050209', 11); + T('3553322646.0000', '3553322646', 4); + T('0.0000000', '0.000000000000711595888783922', 7); + T('128714169681975260747586179339689165715468750318817.0', '128714169681975260747586179339689165715468750318817', 1); + T('-203846045708188631.7', '-203846045708188631.714385911896349', 1); + T('6732937084326281547153681265380857817.680', '6732937084326281547153681265380857817.68', 3); + T('-80645.000', '-80645', 3); + T('0.0091340467346905226', '0.0091340467346905226577831006050168789952519932147436292', 19); + T('765350910755641789513513452874635492095713.000000000000000000', '765350910755641789513513452874635492095713', 18); + T('7619917853284.00', '7619917853284', 2); + T('-7584198211496430223.4315410358218089229', '-7584198211496430223.43154103582180892294235232', 19); + T('-2946097370887492968389.2786430820000', '-2946097370887492968389.278643082', 13); + T('-400129748.000', '-400129748', 3); + T('-76362970460470638842230785495147305876.114384970200', '-76362970460470638842230785495147305876.1143849702', 12); + T('334029398796150851211670406157956664329.0000000000000', '334029398796150851211670406157956664329', 13); + T('-0.000000000000', '-0.000000000000000000881892851839338487244179354', 12); + T('-70475264003.0000', '-70475264003', 4); + T('0.080', '0.0809', 3); + T('16917787280140934145228.000', '16917787280140934145228', 3); + T('25909519297999779346.000000000', '25909519297999779346', 9); + T('-355224.19720319810644', '-355224.19720319810644496969482', 14); + T('8482635122899359930368306655493255835883236244.0000000000000', '8482635122899359930368306655493255835883236244', 13); + T('41268046802033799763539654473098094614587.00000000000000000', '41268046802033799763539654473098094614587', 17); + T('8564065673925609331469179144.0', '8564065673925609331469179144', 1); + T('-231732424.30838', '-231732424.3083887160672296965273691583237367', 5); + T('-597740668669015342275289261436747905744110289638.43026849', '-597740668669015342275289261436747905744110289638.430268497449', 8); + T('8297509140414599.000000', '8297509140414599', 6); + T('-17320207086212822899.00', '-17320207086212822899', 2); + T('0.00', '0.000000000002', 2); + T('4972.517305', '4972.51730546661166855901714', 6); + T('0.000000', '0.0000000162819653537555368724511902456803362906', 6); + T('29485932208290816133111088923502731.000000', '29485932208290816133111088923502731', 6); + T('0.0000', '0.000000000006', 4); + + BigNumber.config({ROUNDING_MODE : 2}); + + T('7810971819938620325901899057970512790433.0000000000000000', '7810971819938620325901899057970512790433', 16); + T('-623395.0', '-623395', 1); + T('81334094079413997693749807.000000000000', '81334094079413997693749807', 12); + T('790143966.5', '790143966.406169480041929356421', 1); + T('-0.000485', '-0.0004851099615478', 6); + T('843581583868277359263.9721265', '843581583868277359263.97212648230399373761717', 7); + T('-921038771017147427324121032.000000', '-921038771017147427324121032', 6); + T('-823.0', '-823', 1); + T('505.0', '505', 1); + T('-866703339332502.8636000', '-866703339332502.8636', 7); + T('46.0', '46', 1); + T('60042202798790129685.0000000', '60042202798790129685', 7); + T('-1847392.0000', '-1847392', 4); + T('-4580251343840510165820631684073999841789879.0000000000000000000000', '-4580251343840510165820631684073999841789879', 22); + T('3501378778000.539063748827265447', '3501378778000.5390637488272654464266281832626835121535730779', 18); + T('0.000000004686', '0.000000004685387489140232', 12); + T('-0.0', '-0.0006', 1); + T('-445677508.00', '-445677508', 2); + T('0.0002', '0.00015099822561012723', 4); + T('-2992505698074499692367794831646886.0000000000000000', '-2992505698074499692367794831646886', 16); + T('5297873.59', '5297873.5869265978056497873793730268', 2); + T('72978439324039191443182.00000000000', '72978439324039191443182', 11); + T('0.66028387', '0.660283869505570207917431271006277981914716620876', 8); + T('-232008389442485.0', '-232008389442485', 1); + T('-2.371568', '-2.37156855939356279513952542004820909', 6); + T('-0.36285', '-0.3628526972092455731139', 5); + T('-8119.0', '-8119', 1); + T('171846434549810597775.8595264010', '171846434549810597775.859526401', 10); + T('-765674124885597.6363120', '-765674124885597.636312053095690367', 7); + T('2682390283.000', '2682390283', 3); + T('7799670515191143398434802.0000000000', '7799670515191143398434802', 10); + T('731916154123696.1935', '731916154123696.193488323779184681349292529227446', 4); + T('-793941153937799250384382615553258074.00000', '-793941153937799250384382615553258074', 5); + T('651002.00', '651002', 2); + T('-61317874871.00', '-61317874871', 2); + T('8673.00', '8673', 2); + T('-14490519736189597435728386282.030655', '-14490519736189597435728386282.0306558561264348956674', 6); + T('0.001', '0.00000000000002', 3); + T('0.000009', '0.000008920984342', 6); + T('0.0000920957086395973679873', '0.000092095708639597367987279557138375172816422475', 25); + T('28125849913667924088615.25407023317734', '28125849913667924088615.2540702331773399078402875044891', 14); + T('87.55538597', '87.55538596435839691343147', 8); + T('939705902083425775202905619379.0000000', '939705902083425775202905619379', 7); + T('7303936681469130614.8345000', '7303936681469130614.8345', 7); + T('-5831852886782.68010000', '-5831852886782.6801', 8); + T('-0.0000000', '-0.0000000213769530812', 7); + T('3939846383149740457.10095420654', '3939846383149740457.1009542065397674933246710194598175764', 11); + T('590849835.0000', '590849835', 4); + T('-8275957863.1479060805971940', '-8275957863.14790608059719409463511261267671122', 16); + T('88601607840.97', '88601607840.97', 2); + T('-87.0', '-87', 1); + T('-0.00000000000059590334996', '-0.0000000000005959033499645216206226546715679135941845273', 23); + T('-20156162002512717731841.00', '-20156162002512717731841', 2); + T('-7651429939400798.00000000', '-7651429939400798', 8); + T('4054038.8271920833198564466870907131', '4054038.8271920833198564466870907130849589640579687753824767', 28); + T('0.000001', '0.0000000003', 6); + T('275300507469257287911954639302505046260690.99000000', '275300507469257287911954639302505046260690.99', 8); + T('642144861480907968070.771743458405005477', '642144861480907968070.77174345840500547656346', 18); + T('-889957451436631506823037014.12137026759445866404763', '-889957451436631506823037014.1213702675944586640476325', 23); + T('-0.06219606', '-0.062196067085235955835989272145756234722461994836174091995', 8); + T('-74213.0', '-74213', 1); + T('-1874944878399124299917948535549036295737418419.000', '-1874944878399124299917948535549036295737418419', 3); + T('83048495.1430455759922', '83048495.1430455759921014663361993386532235', 13); + T('-755506912.624491023612801925849', '-755506912.6244910236128019258495078668411577879440686', 21); + T('5321125710271045378833902102391466551386841083.00000000000', '5321125710271045378833902102391466551386841083', 11); + T('0.000004284427957821426529823151', '0.0000042844279578214265298231502546967595510818572110299927', 30); + T('472565886204.00000', '472565886204', 5); + T('31931010708026796882.0000000', '31931010708026796882', 7); + T('-4082183405971.00', '-4082183405971', 2); + T('43182719822263089032.0', '43182719822263089032', 1); + T('-74632497435577935327787910318876432.000000', '-74632497435577935327787910318876432', 6); + T('24236715602376164671.99119879565302925270845390802', '24236715602376164671.99119879565302925270845390801276995046', 29); + T('0.0002148', '0.00021473151048663639093342995904027', 7); + T('11552045377675783444804198150417717022744929.278', '11552045377675783444804198150417717022744929.2775103900527', 3); + T('0.0000007575', '0.000000757403681490224', 10); + T('-855.71', '-855.7117714955299728683318516625249', 2); + T('40834479174168915057442292427179095154620364684.0000000000000000000', '40834479174168915057442292427179095154620364684', 19); + T('270321444.000', '270321444', 3); + T('-30995028620287.03', '-30995028620287.032123746540311643282', 2); + T('-0.0', '-0.00009', 1); + T('-602729508268591597438320913.60658950848712687', '-602729508268591597438320913.60658950848712687918', 17); + T('-548567216043758894618461964890.694772532380790460115', '-548567216043758894618461964890.6947725323807904601157', 21); + T('82.0', '82', 1); + T('-55514405531090.06405191', '-55514405531090.06405191938240530830698', 8); + T('748298620904632711442812.4683', '748298620904632711442812.46822', 4); + T('682294636690140.7964265', '682294636690140.7964264385841075', 7); + T('-0.000000000', '-0.00000000000000000291', 9); + T('-6848806396346459932451282602470846060855488728.540000000000', '-6848806396346459932451282602470846060855488728.54', 12); + T('5276393.209', '5276393.2086599096026388085281', 3); + T('0.4', '0.4', 1); + T('8375483913668.000', '8375483913668', 3); + T('34817563688185836561554596.15000', '34817563688185836561554596.15', 5); + T('4367672.009', '4367672.00813881', 3); + T('-5013698209882323019634267579122589538355461264705883707.000000000000000000000000', '-5013698209882323019634267579122589538355461264705883707', 24); + T('0.001', '0.000000000000000745707393395393623687701759', 3); + T('76676945635878017064402467.00000', '76676945635878017064402467', 5); + T('-382435678755006.0000000', '-382435678755006', 7); + T('0.5', '0.5', 1); + T('-3063.0', '-3063', 1); + T('-3.0', '-3', 1); + + BigNumber.config({ROUNDING_MODE : 3}); + + T('0.0000', '0.00000000000584', 4); + T('-79055907138737329232.165677999092552368', '-79055907138737329232.1656779990925523674', 18); + T('47206303530045536472421888342339.00000000', '47206303530045536472421888342339', 8); + T('3974.0', '3974', 1); + T('1296297430771.39', '1296297430771.391670729445980444292', 2); + T('0.000016', '0.00001686928031', 6); + T('-0.00001', '-0.0000000000008', 5); + T('4883938724383.000', '4883938724383', 3); + T('-5.4115622307', '-5.411562230628539329345282639155988044655000352687981880842', 10); + T('-0.01', '-0.0000000000155280115429218804426906540524', 2); + T('-2730930776035874709906.00000', '-2730930776035874709906', 5); + T('8419336352549424092369623.00000', '8419336352549424092369623', 5); + T('52897.4', '52897.4', 1); + T('-783171007682720320053252521365465473997085.0', '-783171007682720320053252521365465473997085', 1); + T('0.8', '0.8', 1); + T('-0.00000000085280', '-0.000000000852796916216780032747621063045628213284', 14); + T('809486781065644418.9', '809486781065644418.939', 1); + T('-9.0', '-9', 1); + T('2399395.00', '2399395', 2); + T('-243707862514768528758611224374.0000000000000', '-243707862514768528758611224374', 13); + T('-87906.00', '-87906', 2); + T('-36206954271055061276640398631031143034683624940748.9970000000000000000000', '-36206954271055061276640398631031143034683624940748.997', 22); + T('0.00', '0.0000000000565885579252765288683939564608114096713', 2); + T('-8391656174313988740342135972218668561645437.0', '-8391656174313988740342135972218668561645437', 1); + T('14571897947566372593360811.00000000000', '14571897947566372593360811', 11); + T('-473156035623.70', '-473156035623.690373046925674588826', 2); + T('2798706581453003.177239111', '2798706581453003.17723911167031', 9); + T('607781292230803273523112111.091726721140', '607781292230803273523112111.09172672114', 12); + T('-0.3', '-0.3', 1); + T('3008522535782692059736852844809784198247000184.0', '3008522535782692059736852844809784198247000184', 1); + T('14227.00', '14227', 2); + T('7841760307718014116576857993957.0000', '7841760307718014116576857993957', 4); + T('-0.00001', '-0.00000000000002596', 5); + T('5247199732982111073.000000000', '5247199732982111073', 9); + T('-12.0', '-12', 1); + T('0.000', '0.00005', 3); + T('-1383703062.0000', '-1383703062', 4); + T('0.0051019245305169', '0.00510192453051698060366202631871161193', 16); + T('-45565092550117861497905653558246322559799.0', '-45565092550117861497905653558246322559799', 1); + T('-0.284', '-0.284', 3); + T('-8962.00', '-8962', 2); + T('49335989571.2173023', '49335989571.217302304037', 7); + T('-9.0', '-9', 1); + T('-26112007394118580909080488694986628.00000000', '-26112007394118580909080488694986628', 8); + T('-0.0000001', '-0.0000000000004', 7); + T('0.0000002341', '0.0000002341509570562590239', 10); + T('14533914.08264220677', '14533914.0826422067727128413377656933218789408', 11); + T('42170538403476604541324854403569069340562310909332579546.37600000000000000', '42170538403476604541324854403569069340562310909332579546.376', 17); + T('-4.0', '-4', 1); + T('-67678179481337765.66210000', '-67678179481337765.6621', 8); + T('257419830944838.0000000', '257419830944838', 7); + T('-324773537769898472911.277781339985241561477923', '-324773537769898472911.2777813399852415614779220499583265', 24); + T('-528485032702878171887338835619232399832.00000000000', '-528485032702878171887338835619232399832', 11); + T('-710189041499049633659311234.000', '-710189041499049633659311234', 3); + T('643084101102033.063753808679', '643084101102033.0637538086790219378107', 12); + T('825884431.000', '825884431', 3); + T('-543871854882673630364514781674939771106.38551140781759', '-543871854882673630364514781674939771106.385511407817581261', 14); + T('-798526.00', '-798526', 2); + T('297795786834144418744.0000', '297795786834144418744', 4); + T('0.00000', '0.0000000000016163586667107', 5); + T('0.0000000000', '0.00000000000007848361792826553641', 10); + T('-5.007308350876984680', '-5.007308350876984679530067590680338870257350613322626', 18); + T('-427.00', '-427', 2); + T('-515119.313431282058', '-515119.31343128205773478896638', 12); + T('-8.49', '-8.4804', 2); + T('2477.751471782877', '2477.751471782877726695914405313733773564569949039123496962', 12); + T('0.00000000', '0.000000000000000065892', 8); + T('7138.0', '7138.013', 1); + T('0.0000000000', '0.0000000000000004333337165355354317801382736832134', 10); + T('8658428891542726719576602828199407563445702034.00000000', '8658428891542726719576602828199407563445702034', 8); + T('0.3', '0.3', 1); + T('-56313246520419173728621429021902681217573545.50000000000000', '-56313246520419173728621429021902681217573545.5', 14); + T('-23.039752413764', '-23.03975241376398747770561587976', 12); + T('-19445726051618345902355920469.00000', '-19445726051618345902355920469', 5); + T('-0.1', '-0.040277481632393097542018589044285854989493888417936', 1); + T('-0.000000000001', '-0.000000000000000000288835285344547651291408208502608124', 12); + T('79030772762.92000', '79030772762.92', 5); + T('5700622112017639331911483394352164374087.00000000000000000', '5700622112017639331911483394352164374087', 17); + T('-90770899291595539313072309812380381240470505.000000000000', '-90770899291595539313072309812380381240470505', 12); + T('-41647595.5561', '-41647595.55603', 4); + T('222575273379018396575101654735581517852852286433973.4686000000000000', '222575273379018396575101654735581517852852286433973.4686', 16); + T('56275673822913529965328835.15006015303', '56275673822913529965328835.150060153034', 11); + T('-88903.69011778', '-88903.690117778621375708068659403797174645788', 8); + T('-115251.00', '-115251', 2); + T('-0.00001', '-0.0000079321934570619592061', 5); + T('9222185695996633788650562039735238902841130971959266.000000', '9222185695996633788650562039735238902841130971959266', 6); + T('-327381709334.18527398150845', '-327381709334.185273981508440153589241628279291', 14); + T('1.2070939', '1.207093941595', 7); + T('5631244336598787152545539244.614', '5631244336598787152545539244.614953046957418773850871532', 3); + T('7.585318', '7.58531893327', 6); + T('509177.0', '509177', 1); + T('-5922122769788.000000', '-5922122769788', 6); + T('204517097255774161136650103483266240865357614.000000000000', '204517097255774161136650103483266240865357614', 12); + T('-0.008817568208764', '-0.00881756820876361559226942398227', 15); + T('80111694.00', '80111694', 2); + T('-453349.000', '-453349', 3); + T('85122981744559018.00000000', '85122981744559018', 8); + T('0.027007', '0.027007420598954545854969297272268125483242465539', 6); + T('-2699105308.4', '-2699105308.3051738674733271523825325743', 1); + T('-0.000000000001', '-0.00000000000000883409579454508262166084385', 12); + + BigNumber.config({ROUNDING_MODE : 4, EXPONENTIAL_AT : 0}); + + T('733744593401073823825766410831877679446.0000000000000000000', '733744593401073823825766410831877679446', 19); + T('-64.6849459', '-64.6849458687691227978', 7); + T('-0.000000', '-0.00000000009', 6); + T('-62537287527837589298857228059657673223234916.95923265430000000', '-62537287527837589298857228059657673223234916.9592326543', 17); + T('3393668096256773847245721315080265089731.000000', '3393668096256773847245721315080265089731', 6); + T('0.0', '0.0000000000000056674956638008432348702401392', 1); + T('72516372734.6', '72516372734.6447', 1); + T('-418.28', '-418.2800731793741351', 2); + T('0.00', '0.001', 2); + T('8366217346845756726.00000000', '8366217346845756726', 8); + T('-0.000000', '-0.0000000000000092034548636370987112234384736726', 6); + T('0.35', '0.35474830751442135112334772517193392', 2); + T('64703289793894.5830', '64703289793894.58296866', 4); + T('-0.000000000000000036', '-0.000000000000000036461242408590182363418943891', 18); + T('5494508405056449117588.631948', '5494508405056449117588.631948458033233759999', 6); + T('-0.0', '-0.00393971618499838726739122333520030506235698', 1); + T('375581290738585826632.00000000', '375581290738585826632', 8); + T('254.96635275802300887', '254.96635275802300886544776010389418575738792480979736', 17); + T('21492347.69467571391498624445', '21492347.6946757139149862444482880595559468', 20); + T('313576441324233.0000000', '313576441324233', 7); + T('-8617.57089319166', '-8617.57089319166205141433276411273552139017', 11); + T('0.00000000014928376395', '0.00000000014928376394768755724252424022348932365406839448223', 20); + T('2.497624215622999568569', '2.49762421562299956856937732557160934323114203547832675', 21); + T('-288056106511636272271570523193926801058294502.000', '-288056106511636272271570523193926801058294502', 3); + T('-4798171567575228724.140', '-4798171567575228724.1400144613946894', 3); + T('8.49008', '8.49007655210654', 5); + T('-56633605.000', '-56633605', 3); + T('-4147381274685866.81753', '-4147381274685866.8175313', 5); + T('-534460490015293367127173277346694900936058.0000', '-534460490015293367127173277346694900936058', 4); + T('182707431911537249021116759327712693311898345504618668.43327000000000000000000', '182707431911537249021116759327712693311898345504618668.43327', 23); + T('210005324615278.4586839690045963321032', '210005324615278.458683969004596332103244549279', 22); + T('779837001772884165637922377221951347134695.644834', '779837001772884165637922377221951347134695.6448338', 6); + T('-0.000001', '-0.00000064188301390033596845335767993853284632527964514979079', 6); + T('13.0', '13', 1); + T('0.0000001269', '0.0000001269060795648365813491128357427111184222', 10); + T('18446632248354.00', '18446632248354', 2); + T('-1229249.79', '-1229249.7897249259', 2); + T('49082.0', '49082', 1); + T('-61.0', '-61', 1); + T('-893.0', '-893', 1); + T('5002282278.56974877690066484', '5002282278.569748776900664839184116538222902', 17); + T('41372.00', '41372', 2); + T('-4732022445962399687294885123498809.7625585825095', '-4732022445962399687294885123498809.7625585825095', 13); + T('-55484242.036895641', '-55484242.036895641', 9); + T('-41427133134.52583323427907663268339', '-41427133134.525833234279076632683393992706825', 23); + T('0.0', '0.00004300614085218825243480119971669264977421', 1); + T('-472025754597316278339412186866.7010659789', '-472025754597316278339412186866.701065978877597089729906019843', 10); + T('2.50869', '2.50869082352024406', 5); + T('-87154.000', '-87154', 3); + T('-0.0000000000071859183950976', '-0.0000000000071859183950975905578927950225183102336392', 25); + T('-10827138340266.44', '-10827138340266.44057558913', 2); + T('0.0000702', '0.0000701871613973530533582225769977', 7); + T('-4878237667448133503521416059497.376626000000', '-4878237667448133503521416059497.376626', 12); + T('8984687671347686046766702.01181862480', '8984687671347686046766702.0118186248', 11); + T('0.00000', '0.00000000076447711430809658905538', 5); + T('-184825.87743766370213607', '-184825.87743766370213606656669525883145102', 17); + T('-147007021210433212254058959161555.747000000000', '-147007021210433212254058959161555.747', 12); + T('641778680063060681850989295.4', '641778680063060681850989295.44394602812788754296411563', 1); + T('0.00', '0.000000000000000261099857', 2); + T('-69168585539.981086198312', '-69168585539.9810861983124008597329', 12); + T('-2441638.37765', '-2441638.37765405543', 5); + T('0.00', '0.00000005', 2); + T('-17865480328519059654833853633.668588983', '-17865480328519059654833853633.6685889825124607147114', 9); + T('5552449880075592383242782.42', '5552449880075592383242782.42273775283', 2); + T('-3.47445833771303714', '-3.4744583377130371421642122331960174443', 17); + T('-5543608156416096833838191852961329666675.00000000000000', '-5543608156416096833838191852961329666675', 14); + T('-6836042.000', '-6836042', 3); + T('0.00000912', '0.0000091177854552839774258855562071866', 8); + T('55986.00', '55986', 2); + T('0.0', '0.02', 1); + T('-0.0000', '-0.00000001', 4); + T('889659799897707059043156.0', '889659799897707059043156', 1); + T('0.000000', '0.00000000000000003', 6); + T('0.00000000000008179581450', '0.00000000000008179581449515246320423213581212698189913041', 23); + T('-981.4210', '-981.421', 4); + T('-3455913777070673553360330519337.00000000000000', '-3455913777070673553360330519337', 14); + T('0.00000000081700', '0.00000000081700228716634187537384600725', 14); + T('4822037.000', '4822037', 3); + T('-0.0000000064360437778', '-0.0000000064360437777672775206464043731', 19); + T('5290480.66496927901282867', '5290480.66496927901282867027658062129', 17); + T('-408612952552043095.000', '-408612952552043095', 3); + T('-513.0', '-513', 1); + T('-14964.000', '-14964', 3); + T('-19903753117563849440806175537514112075543387952.00000', '-19903753117563849440806175537514112075543387952', 5); + T('249443.0175143', '249443.0175142727704683419749', 7); + T('-74343756463586673907431837633.24', '-74343756463586673907431837633.23687651', 2); + T('-27.679', '-27.6785', 3); + T('-64259172643579684888737979.618833554815821332098', '-64259172643579684888737979.618833554815821332097716331', 21); + T('17230955766539391.00000000', '17230955766539391', 8); + T('582751886981240.177', '582751886981240.177383845390864465', 3); + T('191002031658424.51', '191002031658424.51247456500221220552332700327795408', 2); + T('-479015175846069070145.000000000', '-479015175846069070145', 9); + T('135507.00', '135507', 2); + T('-1819380757840.7931545894175', '-1819380757840.79315458941752033110677996441946221', 13); + T('56729395152942371.34113220', '56729395152942371.3411322', 8); + T('0.00000', '0.000000009', 5); + T('231631.31091406798', '231631.310914067979514934639396351953448', 11); + T('0.00', '0.00044659', 2); + T('-637697600918508531049573689760309.5119477000000000', '-637697600918508531049573689760309.5119477', 16); + T('-6.19247283', '-6.19247282501186063445037314', 8); + + BigNumber.config({ROUNDING_MODE : 5}); + + T('0.00', '0.00000000000000070362', 2); + T('682377946933004839.0000000', '682377946933004839', 7); + T('0.000000000', '0.00000000000000301722508588270616971784651380892069087869575', 9); + T('-356330174906.7', '-356330174906.737986270704', 1); + T('771875969530483104163034745359742192923504.000000000000000', '771875969530483104163034745359742192923504', 15); + T('-85.57612133364', '-85.576121333642541652128540737082', 11); + T('-796870619982006783.00000000', '-796870619982006783', 8); + T('985819.0', '985819', 1); + T('0.000000', '0.00000000000000000007093034243958', 6); + T('-0.0000', '-0.0000000006400178083107075310177579449', 4); + T('-105570971372984.0', '-105570971372984', 1); + T('4387745564661852845308.94229815083918', '4387745564661852845308.9422981508391799473309882', 14); + T('-3978043797116373.2', '-3978043797116373.159631', 1); + T('5.8961281424853232622595', '5.8961281424853232622594846548715356650909645537495738043051', 22); + T('-0.0000081539970551874384495', '-0.000008153997055187438449482684680130340977472796176926', 25); + T('-65.0', '-65', 1); + T('-24012940205869.000', '-24012940205869', 3); + T('0.000000', '0.000000000000000066985234999507396', 6); + T('2935194283452.35738951157832206907124', '2935194283452.357389511578322069071242729133894', 23); + T('542060.7771', '542060.77713479586821060591807145320317', 4); + T('890815036528241639534803534813.592588608837168425865025', '890815036528241639534803534813.59258860883716842586502472472', 24); + T('685877749980391051.17', '685877749980391051.1715', 2); + T('47820177163147405231185068730213.894293', '47820177163147405231185068730213.89429254869826585947429821', 6); + T('1536364305.00', '1536364305', 2); + T('-85825125.5810188', '-85825125.5810188298', 7); + T('-4983288214158634188.4572989', '-4983288214158634188.4572988600705359104', 7); + T('0.0000000000', '0.0000000000000000017929073', 10); + T('-1684136337600384671.00000000', '-1684136337600384671', 8); + T('567733137127609543.000000', '567733137127609543', 6); + T('607675679770387.000', '607675679770387', 3); + T('43727409067319.0', '43727409067319', 1); + T('-77274559773372606.00', '-77274559773372606', 2); + T('-28855643486070486857836.00000', '-28855643486070486857836', 5); + T('-915356570870.00', '-915356570870.00041832252262829437239', 2); + T('0.0', '0.00000000000004843552301428650828', 1); + T('-33295218517967296146307127.00000', '-33295218517967296146307127', 5); + T('279738383433666359352.0000000', '279738383433666359352', 7); + T('-30674028853766084158066396602.97', '-30674028853766084158066396602.97484778446', 2); + T('-0.323', '-0.32275988418995752362737918723', 3); + T('6129049976563004.000', '6129049976563004', 3); + T('-6.0', '-6', 1); + T('-66243945975700325606152500782471023774538548318.0000000000000000000000', '-66243945975700325606152500782471023774538548318', 22); + T('-138286369547644243875.0000000', '-138286369547644243875', 7); + T('5099535.00', '5099535', 2); + T('675.0', '675', 1); + T('0.0002717', '0.0002716602757', 7); + T('4649780225385110311483722.0000', '4649780225385110311483722', 4); + T('-22143045418555913412107884765016867198665971.10000000000000000000000', '-22143045418555913412107884765016867198665971.1', 23); + T('-71055639496050521326328010675.00000000', '-71055639496050521326328010675', 8); + T('0.00000000', '0.000000000077562570903960521', 8); + T('-0.000000021017500', '-0.000000021017500243085615932617', 15); + T('0.000000000000000024697', '0.00000000000000002469732084636233381651368431', 21); + T('760509941556107507425043304787283113918044183872.000000000000000000000000', '760509941556107507425043304787283113918044183872', 24); + T('-553489807182304143570302092614431846999972192129146.0608020000000000', '-553489807182304143570302092614431846999972192129146.060802', 16); + T('4616442457861540834390983504493684542810.99300000000', '4616442457861540834390983504493684542810.993', 11); + T('5836715007847225.0000', '5836715007847225', 4); + T('1056180.997', '1056180.99676966515555844225990248546', 3); + + BigNumber.config({ROUNDING_MODE : 6}); + + T('-6614662975368684488885953285955838893900074215956.00', '-6614662975368684488885953285955838893900074215956', 2); + T('8642393776898.000', '8642393776898', 3); + T('3612207878528.1106344698085142865', '3612207878528.1106344698085142865438924419', 19); + T('977910386.93', '977910386.9343537', 2); + T('-8937937492688941768401276851642629965923372.0', '-8937937492688941768401276851642629965923372', 1); + T('-8327876772303865517454752161.4376112752921904774', '-8327876772303865517454752161.43761127529219047742910886', 19); + T('-27707.00', '-27707', 2); + T('-7287595765894242586375.92700435484', '-7287595765894242586375.927004354837723619581861634319', 11); + T('-0.00000', '-0.000000000000023670858459165486137218740358207859', 5); + T('574676836802209077.64156', '574676836802209077.641563875647945277493356873895', 5); + T('-3041038455237222898218053653661.87952947815', '-3041038455237222898218053653661.87952947815', 11); + T('-628244132307.000', '-628244132307', 3); + T('316566935167341670725238.000', '316566935167341670725238', 3); + T('-77953301569468294124105528.0', '-77953301569468294124105528', 1); + T('0.0046', '0.00460227833968584', 4); + T('4323265763616518980379929221104.0', '4323265763616518980379929221104', 1); + T('1674500565014237781637959673471730398.1120033', '1674500565014237781637959673471730398.1120032995511774', 7); + T('872559441430499650732600166.00000', '872559441430499650732600166', 5); + T('-87858304.0000', '-87858304', 4); + T('-4158788.000', '-4158788', 3); + T('3983930437416823631395.9093', '3983930437416823631395.90934402583657', 4); + T('-14.5531937', '-14.5531936852106573016020290135814233645752955297443336', 7); + T('0.00000000002201', '0.00000000002200503795474854372849141363413146996972', 14); + T('0.0000000000000', '0.00000000000000000894955653982033503846831364474746320232', 13); + T('61564779.00', '61564779', 2); + T('-7.0', '-7', 1); + T('-0.000000000000028455976228', '-0.00000000000002845597622815028653703372125435938812845106', 24); + T('728982423193598397582409707715766595902844.0000000', '728982423193598397582409707715766595902844', 7); + T('14538075860529.2697937480', '14538075860529.269793748', 10); + T('0.000', '0.00000000000000000007021566096', 3); + T('-5136066535080.86830591678842264063462546263', '-5136066535080.86830591678842264063462546262988980471309228558', 29); + T('-3026751112367460839746524832112404665.000000000000000', '-3026751112367460839746524832112404665', 15); + T('-6694275398250090562.00', '-6694275398250090562', 2); + T('-50643997750937725516578696636829589244661366402743.000000000', '-50643997750937725516578696636829589244661366402743', 9); + T('2197374413.79714', '2197374413.7971355344377249354470626290268959873', 5); + T('0.0', '0.005020192658713355', 1); + T('-254956356194995318790657817617390203938.180000000', '-254956356194995318790657817617390203938.18', 9); + T('0.000', '0.000000000090726', 3); + T('-644164371869124953225087.14694842524000', '-644164371869124953225087.14694842524', 14); + T('-0.00000157175189018', '-0.0000015717518901763532026126676445445', 17); + T('883545726717772254369.08868386', '883545726717772254369.0886838593581297250598', 8); + T('-8890332541208932844712909996569216422867971798.000000000000000', '-8890332541208932844712909996569216422867971798', 15); + T('-0.000000000000', '-0.000000000000000019481454049470983547912235', 12); + T('740944636504591431790473918513.0000', '740944636504591431790473918513', 4); + T('-5679793084762496855854965276883350654245022549131067599715.800000', '-5679793084762496855854965276883350654245022549131067599715.8', 6); + T('51991398836962962151.4032644162159', '51991398836962962151.4032644162159099221', 13); + T('66958838053011544557752193.00000', '66958838053011544557752193', 5); + T('-670579843.2118208913941229137016', '-670579843.21182089139412291370155773837719883548843299002', 22); + T('-153613650899356538114572207.94248678450152160836', '-153613650899356538114572207.9424867845015216083607156497', 20); + T('-737846251706379871052.2861168', '-737846251706379871052.2861168267591416289887782899835', 7); + T('-65908055.0', '-65908055', 1); + T('3237039120306392313.80906374769', '3237039120306392313.80906374769434099092272015749692609', 11); + T('83640693821.00', '83640693821', 2); + T('-921776606869800052510163986912.6037663480501', '-921776606869800052510163986912.603766348050146856757561176111', 13); + T('6303883932563373.0', '6303883932563373', 1); + T('6373283811.5454531478622699', '6373283811.5454531478622698611321575271', 16); + T('6097017834070937658.000000000', '6097017834070937658', 9); + T('24524.17471335606758880', '24524.1747133560675887965670636565353165', 17); + T('82671976754257522256837287487178420454352.00000', '82671976754257522256837287487178420454352', 5); + T('-4134121508878287.32516638661', '-4134121508878287.32516638661094488', 11); + T('706494960751225536339363333.135485602348', '706494960751225536339363333.13548560234793', 12); + T('0.0000000', '0.00000000000000000005260494554647051', 7); + T('-2172823046.605754378126140867773679', '-2172823046.60575437812614086777367899344184998336', 24); + T('7182216670065915047.3', '7182216670065915047.265', 1); + T('-0.0001', '-0.00011347856', 4); + T('-1620.4750509689199484099', '-1620.475050968919948409915128915793493745056891952647', 19); + T('-2107001274569567393.00000000', '-2107001274569567393', 8); + T('0.00', '0.0000000004', 2); + T('-0.000', '-0.00000000000000000009622600511499459674774308', 3); + T('-1749656594942211427.14080828808148814976439530', '-1749656594942211427.1408082880814881497643953004161', 26); + T('-2483383057229762.00000000', '-2483383057229762', 8); + T('0.000000', '0.0000005', 6); + T('0.5', '0.5', u); + + T('-0', '-0.5', 0); + + T('10.5', '10.5', u); + T('0.05', '0.05', u); + T('0.4', '0.4', u); + T('0.6', '0.6', u); + T('1.5', '1.5', u); + T('-1.5', '-1.5', u); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('-535564000.00', '-535564000', 2); + T('-80000000.000', '-80000000', 3); + T('-240.0', '-240', 1); + T('-7520000000.0', '-7520000000', 1); + T('306550.000', '306550', 3); + T('800000000.0', '800000000', 1); + T('-454000000.00000', '-454000000', 5); + T('60.0', '60', 1); + T('-4700000.000', '-4700000', 3); + T('25000.00', '25000', 2); + T('6847.0', '6847', 1); + T('780.0', '780', 1); + T('-50.0', '-50', 1); + T('700.0', '700', 1); + T('412598000.0000', '412598000', 4); + T('-84581600.0', '-84581600', 1); + T('5590000.00', '5590000', 2); + T('-66000.0', '-66000', 1); + T('600.0', '600', 1); + T('-513335000.000', '-513335000', 3); + T('-40.0', '-40', 1); + T('3401.00', '3401', 2); + T('8600.00', '8600', 2); + T('-5410000.0', '-5410000', 1); + T('5527170.0', '5527170', 1); + T('-3710700.0', '-3710700', 1); + T('-13230000.0', '-13230000', 1); + + T('-52536202527.13891931933498708496518913773517016037224', '-5.253620252713891931933498708496518913773517016037224E10', u); + T('0.0000000000000008761383898703999300297605784533730922', '8.761383898703999300297605784533730922E-16', u); + T('-0.0000000000000000000000000000000000004', '-4E-37', u); + T('2832044194940.47654015529986948208', '2.83204419494047654015529986948208E12', u); + T('0.00000000000000000000000064668155275864837', '6.4668155275864837E-25', u); + T('4.34128088694', '4.34128088694E0', u); + T('-851957.6572615611436542', '-8.519576572615611436542E5', u); + T('-89097468286.2561077879598798580253771544265682053', '-8.90974682862561077879598798580253771544265682053E10', u); + T('-0.000000000000000000000000000000000000000000000030409767', '-3.0409767E-47', u); + T('0.000000000000000000004295112484112357722747956581254', '4.295112484112357722747956581254E-21', u); + T('-839203207475651.6542808578', '-8.392032074756516542808578E14', u); + T('-0.00000000000000000078216', '-7.8216E-19', u); + T('-1782290274935701247734.21262413032385', '-1.78229027493570124773421262413032385E21', u); + T('31669451104144801337076433457.18511076', '3.166945110414480133707643345718511076E28', u); + T('0.000000000000000000000000000000000000472351852761', '4.72351852761E-37', u); + T('-50155220217523568901083623.78842580174913602672593731', '-5.015522021752356890108362378842580174913602672593731E25', u); + T('-291.37', '-2.9137E2', u); + T('-52474611936456205886027195352961212383.2279441143', '-5.24746119364562058860271953529612123832279441143E37', u); + T('-326.9376463292543', '-3.269376463292543E2', u); + T('0.00000000000044', '4.4E-13', u); + T('0.000000087792449', '8.7792449E-8', u); + T('497835793870987132484033.938845920610565887398960253648', '4.97835793870987132484033938845920610565887398960253648E23', u); + T('-33960439442302770058.74863962', '-3.396043944230277005874863962E19', u); + T('0.00000000000000000000000000000000000000020694696587293782', '2.0694696587293782E-40', u); + T('-0.8904319539', '-8.904319539E-1', u); + T('-86429552798.4', '-8.64295527984E10', u); + T('0.000000000000000000000000000003', '3E-30', u); + T('108595082003321932.8178949736608320767', '1.085950820033219328178949736608320767E17', u); + T('611126.73674534242367484008848341500334', '6.1112673674534242367484008848341500334E5', u); + T('4311.0597590893026685282662406924', '4.3110597590893026685282662406924E3', u); + T('0.000000000000000000000000000000000000000073309221', '7.3309221E-41', u); + T('-6864844854510.144926572184', '-6.864844854510144926572184E12', u); + T('-0.038', '-3.8E-2', u); + T('0.00000000000000794946369399591', '7.94946369399591E-15', u); + T('56020.6861005', '5.60206861005E4', u); + T('-0.00000000000896738912765063552834206018847', '-8.96738912765063552834206018847E-12', u); + T('0.00000000006755925523685348357189087468', '6.755925523685348357189087468E-11', u); + T('0.000000000000000000000000000000000072', '7.2E-35', u); + T('0.00000000000000000000000000000000000000000000000000006128', '6.128E-53', u); + T('-27010668344373144545282.061712584328482438690936897', '-2.7010668344373144545282061712584328482438690936897E22', u); + T('-0.000066720042169954586184178645', '-6.6720042169954586184178645E-5', u); + T('-0.00000000000000000000000000000000000003516', '-3.516E-38', u); + T('0.007458', '7.458E-3', u); + T('0.0670339647456587432138292225', '6.70339647456587432138292225E-2', u); + T('-49.59', '-4.959E1', u); + T('5.94', '5.94E0', u); + T('9185110977234279483303912931774514.67', '9.18511097723427948330391293177451467E33', u); + T('-127.11408592808048991219551891022999276273412536879573107525', '-1.2711408592808048991219551891022999276273412536879573107525E2', u); + T('0.00000013', '1.3E-7', u); + T('-0.00000000000000000000000000000000156', '-1.56E-33', u); + T('22', '2.2E1', u); + T('6644378197598065.943168375926', '6.644378197598065943168375926E15', u); + T('-0.00000000000000465403429687260725429254606083299909', '-4.65403429687260725429254606083299909E-15', u); + T('0.00000653586429286761580785105', '6.53586429286761580785105E-6', u); + T('-779132060.497697052423647343175672388834', '-7.79132060497697052423647343175672388834E8', u); + T('0.0000000000000000085996828590423169591835759758087548466494', '8.5996828590423169591835759758087548466494E-18', u); + T('-0.000000000000256285784', '-2.56285784E-13', u); + T('0.0000000000000017947', '1.7947E-15', u); + T('0.000000000060671249811126224597672813512109', '6.0671249811126224597672813512109E-11', u); + T('-800627106331596202.032250866963247864855868', '-8.00627106331596202032250866963247864855868E17', u); + T('-98402249.9358755191632299360339880127190049662097654206', '-9.84022499358755191632299360339880127190049662097654206E7', u); + T('-0.000000000000000000000014149882794818263963', '-1.4149882794818263963E-23', u); + T('-7060324311175919534626797409919718746390.10555', '-7.06032431117591953462679740991971874639010555E39', u); + T('821393911651350506858922608971571483.39201', '8.2139391165135050685892260897157148339201E35', u); + T('-721517626817.43734235970422357278172', '-7.2151762681743734235970422357278172E11', u); + T('-5124.504476910146380807047771', '-5.124504476910146380807047771E3', u); + T('0.0000000005697544867401308959870722352682904', '5.697544867401308959870722352682904E-10', u); + T('-0.00012871208613777', '-1.2871208613777E-4', u); + T('8567233928771894245.8242651905951092028701228506224699', '8.5672339287718942458242651905951092028701228506224699E18', u); + T('-0.0000000094881461545668728', '-9.4881461545668728E-9', u); + T('6045245.020177069527457656633132622', '6.045245020177069527457656633132622E6', u); + T('-7210271571379007035869444.1417241308887367042323559687840525', '-7.2102715713790070358694441417241308887367042323559687840525E24', u); + T('-2620220239077.66', '-2.62022023907766E12', u); + T('-0.001916564704980402478', '-1.916564704980402478E-3', u); + T('5371.947750065160966666612070818997', '5.371947750065160966666612070818997E3', u); + T('0.00000077036439397954895237124076', '7.7036439397954895237124076E-7', u); + T('-0.000000000002280137669447351084609656999367909206747800792', '-2.280137669447351084609656999367909206747800792E-12', u); + T('635945056777163867933996244.44612913038', '6.3594505677716386793399624444612913038E26', u); + T('5', '5E0', u); + T('48309.56', '4.830956E4', u); + T('2138.45865823930129961216391905305999251296833471869532168', '2.13845865823930129961216391905305999251296833471869532168E3', u); + T('3706073870.96925990345144', '3.70607387096925990345144E9', u); + T('-798.62', '-7.9862E2', u); + T('-521968106907526.65373750732297', '-5.2196810690752665373750732297E14', u); + T('0.7224996555', '7.224996555E-1', u); + T('-0.00000000000059452644215310796452483703709', '-5.9452644215310796452483703709E-13', u); + T('350818063006798017016671125.0434068891113', '3.508180630067980170166711250434068891113E26', u); + T('7968708424180299716816047189442601.3735762244', '7.9687084241802997168160471894426013735762244E33', u); + T('-0.5355520816318664361284739093852209293628562271329701', '-5.355520816318664361284739093852209293628562271329701E-1', u); + T('-906.9275233025623299867798', '-9.069275233025623299867798E2', u); + T('0.00045587', '4.5587E-4', u); + T('0.000004', '4E-6', u); + T('5857276704537340524.1431417907437', '5.8572767045373405241431417907437E18', u); + T('-3843554476637626791.87474208180361', '-3.84355447663762679187474208180361E18', u); + T('-60535943484683045495384222.313768035329647860053456457477', '-6.0535943484683045495384222313768035329647860053456457477E25', u); + T('0.0000000000000004444869762788836674404079577885262473', '4.444869762788836674404079577885262473E-16', u); + T('-0.005874931444844844350595746989373586841269114316', '-5.874931444844844350595746989373586841269114316E-3', u); + T('0.09', '9E-2', u); + T('86280010336.8017418950328178', '8.62800103368017418950328178E10', u); + T('227901.6305936588696902705189877626178015851261755', '2.279016305936588696902705189877626178015851261755E5', u); + T('-0.00002923', '-2.923E-5', u); + T('451.1251729802129507', '4.511251729802129507E2', u); + T('-2586077212890917651232310958.88201646914374247083', '-2.58607721289091765123231095888201646914374247083E27', u); + T('-0.08', '-8E-2', u); + T('7.996020827302694833122463304879649129610781362', '7.996020827302694833122463304879649129610781362E0', u); + T('-0.00000000000000000000000007933204829049175909186498799838', '-7.933204829049175909186498799838E-26', u); + T('-0.0000000000001882498592930501880542338117957263473489255', '-1.882498592930501880542338117957263473489255E-13', u); + T('-1172052648945437104144.7753679481957698417677', '-1.1720526489454371041447753679481957698417677E21', u); + T('287937985683292603.441526238031', '2.87937985683292603441526238031E17', u); + T('-0.0000000000134355091714731837192225455005', '-1.34355091714731837192225455005E-11', u); + T('0.000000000000000000000000000026170541344981279884209612', '2.6170541344981279884209612E-29', u); + T('0.0041336403', '4.1336403E-3', u); + T('8955011.51436146124079765380599870608206410057', '8.95501151436146124079765380599870608206410057E6', u); + T('76343535604093', '7.6343535604093E13', u); + T('-579109804573982925.9', '-5.791098045739829259E17', u); + T('-16248730541202.41645330499728414237866592099124270393892244', '-1.624873054120241645330499728414237866592099124270393892244E13', u); + T('299078130777696473774921407.8921386301', '2.990781307776964737749214078921386301E26', u); + T('0.00000000000005008659860139108', '5.008659860139108E-14', u); + T('-277409247924.47', '-2.7740924792447E11', u); + T('-0.516', '-5.16E-1', u); + T('-0.0000000000000000000000056338952424532568447556', '-5.6338952424532568447556E-24', u); + T('-0.000000217955', '-2.17955E-7', u); + T('8905335075021645253458124.63415988932826552', '8.90533507502164525345812463415988932826552E24', u); + T('-0.0044', '-4.4E-3', u); + T('-0.2373963', '-2.373963E-1', u); + T('-0.79088027341157244765444311372339', '-7.9088027341157244765444311372339E-1', u); + T('0.0026', '2.6E-3', u); + T('-835918193339364260673226.934', '-8.35918193339364260673226934E23', u); + T('-0.0009', '-9E-4', u); + T('6', '6E0', u); + T('-314214420212243283843403549.4470864901529365489404218274', '-3.142144202122432838434035494470864901529365489404218274E26', u); + T('0.00000000791545594251', '7.91545594251E-9', u); + T('191942230233.90984962570015373025283255557', '1.9194223023390984962570015373025283255557E11', u); + T('-0.0000000000078881545375574067765343323', '-7.8881545375574067765343323E-12', u); + T('-16802261058.36705', '-1.680226105836705E10', u); + T('0.0000000000000056017241520290338574647512149076190238', '5.6017241520290338574647512149076190238E-15', u); + T('-0.00000000003763962', '-3.763962E-11', u); + T('-0.000000000511737717217408462541465239', '-5.11737717217408462541465239E-10', u); + T('-0.000000000000000000000000000000000000000050368224614', '-5.0368224614E-41', u); + T('-0.018634708832478724474964945976701', '-1.8634708832478724474964945976701E-2', u); + T('6', '6E0', u); + T('-0.0000000000000000000745072058021090744018544591692', '-7.45072058021090744018544591692E-20', u); + T('724257535284104810664.4073', '7.242575352841048106644073E20', u); + T('12769.45510988046008277708155820993631711046', '1.276945510988046008277708155820993631711046E4', u); + T('631804730657678655927.137998704033924856965', '6.31804730657678655927137998704033924856965E20', u); + T('0.00000000000000000000000000000000798840870767288241343529097', '7.98840870767288241343529097E-33', u); + T('1696465.807207', '1.696465807207E6', u); + T('0.00000000000000000000000000000079804991500258221476735155', '7.9804991500258221476735155E-31', u); + T('-0.000000000000000000000598137708', '-5.98137708E-22', u); + T('0.000000000000000000000000065555369684822', '6.5555369684822E-26', u); + T('-35599704691194312186568857.06582774697883475886191', '-3.559970469119431218656885706582774697883475886191E25', u); + T('-0.0000000000000794908227013', '-7.94908227013E-14', u); + T('-0.0000000499730429264884151845723427055364', '-4.99730429264884151845723427055364E-8', u); + T('0.00000000000000064', '6.4E-16', u); + T('-572705', '-5.72705E5', u); + T('-0.000000000559274332', '-5.59274332E-10', u); + T('2924074735520802294144158.124247615661785268262895466645', '2.924074735520802294144158124247615661785268262895466645E24', u); + T('0.00000000000000000000001792', '1.792E-23', u); + T('-839757046612045970742723218746.08104510687271206453', '-8.3975704661204597074272321874608104510687271206453E29', u); + T('607849.09099201775466906352465117043', '6.0784909099201775466906352465117043E5', u); + T('-4654202085161.7295919153', '-4.6542020851617295919153E12', u); + T('350765025122274578259836720029858792277.93', '3.5076502512227457825983672002985879227793E38', u); + T('-0.000000000000000000000000000000000000528363561265895', '-5.28363561265895E-37', u); + T('-7', '-7E0', u); + T('4.57', '4.57E0', u); + T('-1214468.83483364', '-1.21446883483364E6', u); + T('-1.75890665039235813638669857754779113', '-1.75890665039235813638669857754779113E0', u); + T('-0.0001520617551991821956064', '-1.520617551991821956064E-4', u); + T('0.000000000000000000000000000000000000000000316862530006', '3.16862530006E-43', u); + T('3', '3E0', u); + T('82', '8.2E1', u); + T('-0.0000000000000000000000000000000773334716331177010647839', '-7.73334716331177010647839E-32', u); + T('708885924.332539635179', '7.08885924332539635179E8', u); + T('-64497329.71357360701588', '-6.449732971357360701588E7', u); + T('-0.7187', '-7.187E-1', u); + T('0.00000000000000000000000000000000000038135349688', '3.8135349688E-37', u); + T('0.00000000000000000000000000000000182717532099214054', '1.82717532099214054E-33', u); + T('19869092956779031884883390565185379047759848968501117153.4', '1.98690929567790318848833905651853790477598489685011171534E55', u); + T('620913861673.81857852920469094171232255417901159', '6.2091386167381857852920469094171232255417901159E11', u); + T('235690494.2', '2.356904942E8', u); + T('1952.848789', '1.952848789E3', u); + T('0.0000000000000000000000593857592909', '5.93857592909E-23', u); + T('-0.00000000000000688558900049482997723', '-6.88558900049482997723E-15', u); + T('-0.00000000000000000000000000007338347173289341804737', '-7.338347173289341804737E-29', u); + T('0.000000000000000202545915248826284620971210675', '2.02545915248826284620971210675E-16', u); + T('-724.280380099716494328413118123', '-7.24280380099716494328413118123E2', u); + T('-0.000000000000018969640124102058547183921', '-1.8969640124102058547183921E-14', u); + T('429623.23189016762963579', '4.2962323189016762963579E5', u); + T('-4440068176059478189.38961985114362', '-4.44006817605947818938961985114362E18', u); + T('388081523018426906543780329974051543542101.8221256689223182', '3.880815230184269065437803299740515435421018221256689223182E41', u); + T('454795752022.4749683607481963197156049975854', '4.547957520224749683607481963197156049975854E11', u); + T('-5.97', '-5.97E0', u); + T('-0.0000000651', '-6.51E-8', u); + T('0.000307481649349842471', '3.07481649349842471E-4', u); + T('-0.06005081686761154653757227654183441415861126', '-6.005081686761154653757227654183441415861126E-2', u); + T('0.00000000000000000000063579065', '6.3579065E-22', u); + T('900814801036731395557.6', '9.008148010367313955576E20', u); + T('4999', '4.999E3', u); + T('-7.3827865388155464662280547066599644534268122420403', '-7.3827865388155464662280547066599644534268122420403E0', u); + T('-17278399836268786075488221.51', '-1.727839983626878607548822151E25', u); + T('-0.0660146', '-6.60146E-2', u); + T('-781591906217028941735734533.343797893312168609257042055753', '-7.81591906217028941735734533343797893312168609257042055753E26', u); + T('-6278408649', '-6.278408649E9', u); + T('-0.000000000001', '-1E-12', u); + T('0.0018', '1.8E-3', u); + T('-437548970.255395047611134138987663791895761194803418316513197', '-4.37548970255395047611134138987663791895761194803418316513197E8', u); + T('-147885337323804329368530390734663845475933.77830435', '-1.4788533732380432936853039073466384547593377830435E41', u); + T('-753868987492754718849345711047082845957.640888486201188367', '-7.53868987492754718849345711047082845957640888486201188367E38', u); + T('-340168909098957.1241', '-3.401689090989571241E14', u); + T('-0.000000000000000000000000000000000000000585436735853', '-5.85436735853E-40', u); + T('0.0000000000000000756425339599187041535729604907751951301172', '7.56425339599187041535729604907751951301172E-17', u); + T('4632870.933', '4.632870933E6', u); + T('-4563559260.01', '-4.56355926001E9', u); + T('-0.00000000000000000000000294407952905593673865', '-2.94407952905593673865E-24', u); + T('0.00000000039555331064814', '3.9555331064814E-10', u); + T('-0.0000000000000000000000000000000066', '-6.6E-33', u); + T('0.00000000000000000000000002796', '2.796E-26', u); + T('0.006420974922080335', '6.420974922080335E-3', u); + T('62.09', '6.209E1', u); + T('0.000000000000000000000000000000000000000092019', '9.2019E-41', u); + T('31705406794.02881', '3.170540679402881E10', u); + T('85.877', '8.5877E1', u); + T('6183.522312', '6.183522312E3', u); + T('4299.15237475410462987616810012961', '4.29915237475410462987616810012961E3', u); + T('21900171506665946787994.9913441726189153092', '2.19001715066659467879949913441726189153092E22', u); + T('64432017665108304653.37748', '6.443201766510830465337748E19', u); + T('-859958206403439.8555459676', '-8.599582064034398555459676E14', u); + T('332.8856507997622171514594697481203953250774320862536', '3.328856507997622171514594697481203953250774320862536E2', u); + T('-0.0000000000000000000000000000007425', '-7.425E-31', u); + T('8.72361', '8.72361E0', u); + T('-0.0000000000000000000000000000000000000000000000025453', '-2.5453E-48', u); + T('129360586484988816847066041509256285.9834653851528560934', '1.293605864849888168470660415092562859834653851528560934E35', u); + T('-0.000000000000007222', '-7.222E-15', u); + T('-8098841403716381679540887.942710395311867043476849928102', '-8.098841403716381679540887942710395311867043476849928102E24', u); + T('-596359917165924096.74516895354130304259526279190192', '-5.9635991716592409674516895354130304259526279190192E17', u); + T('383728239984415462011.156111377322400391221501061013146359', '3.83728239984415462011156111377322400391221501061013146359E20', u); + T('-0.0000089', '-8.9E-6', u); + T('-0.000000000000000000000000008687857', '-8.687857E-27', u); + T('0.0000361135882323181', '3.61135882323181E-5', u); + T('-790530028343151500857311598079293.168169782009497538', '-7.90530028343151500857311598079293168169782009497538E32', u); + T('120280775320592531520673579931715496.413898', '1.20280775320592531520673579931715496413898E35', u); + T('-0.00000000000000330496', '-3.30496E-15', u); + T('0.00000000000000000000000000000000000000000009', '9E-44', u); + T('0.493800687846', '4.93800687846E-1', u); + T('0.00000000000000000000000000000000000000000000428917279063', '4.28917279063E-45', u); + T('2439161986343305.3977219293086130659', '2.4391619863433053977219293086130659E15', u); + T('0.00000000000000000000000000000001236416', '1.236416E-32', u); + T('-0.00000074534400936482826343789037997822705', '-7.4534400936482826343789037997822705E-7', u); + T('-21.1', '-2.11E1', u); + T('2572114652026268493653871881146558385361920.28081168806628264', '2.57211465202626849365387188114655838536192028081168806628264E42', u); + T('17124033483109159133818176268510442295426753249741457.875034', '1.7124033483109159133818176268510442295426753249741457875034E52', u); + T('-0.5129122224574351008', '-5.129122224574351008E-1', u); + T('-0.007927', '-7.927E-3', u); + T('-0.0000920899747', '-9.20899747E-5', u); + T('-0.004894338278755', '-4.894338278755E-3', u); + T('0.0000000000000000000061703', '6.1703E-21', u); + T('2326089407921647116369956641187720.969', '2.326089407921647116369956641187720969E33', u); + T('1166197836238509', '1.166197836238509E15', u); + T('3671781131154060908657.603137323342926541681254', '3.671781131154060908657603137323342926541681254E21', u); + T('0.0000000000000000000000000000000000000000000002260279', '2.260279E-46', u); + T('-0.00000000000000000000000000000000000000000000000000404', '-4.04E-51', u); + T('-652408413688213856070194.6216304473505375385271', '-6.524084136882138560701946216304473505375385271E23', u); + T('-6437.3786', '-6.4373786E3', u); + T('-0.00024', '-2.4E-4', u); + T('-0.000000000000000000000000000004', '-4E-30', u); + T('0.0000000000000009079496181315516965', '9.079496181315516965E-16', u); + T('-33759.06239', '-3.375906239E4', u); + T('-8249214.8143', '-8.2492148143E6', u); + T('76023.094878', '7.6023094878E4', u); + T('4750348149604126293082788358593492149985525371.3055161011554', '4.7503481496041262930827883585934921499855253713055161011554E45', u); + T('-347056242813575345437098678.19382', '-3.4705624281357534543709867819382E26', u); + T('-0.0044334994986839', '-4.4334994986839E-3', u); + T('-77579240.8814471085', '-7.75792408814471085E7', u); + T('0.00000000000005880190315', '5.880190315E-14', u); + T('5512594339298216692.2504515931248375537394173161332', '5.5125943392982166922504515931248375537394173161332E18', u); + T('897599613823052.78098021722556', '8.9759961382305278098021722556E14', u); + T('491849.74046716999671925', '4.9184974046716999671925E5', u); + T('0.00000000000000000000000000000026', '2.6E-31', u); + T('83831959917154625137362002.826519817779', '8.3831959917154625137362002826519817779E25', u); + T('0.0000000004824', '4.824E-10', u); + T('-0.0000000000000000000539954390007731983666483', '-5.39954390007731983666483E-20', u); + T('-5', '-5E0', u); + T('-0.0000000000000000000000000000000052105973', '-5.2105973E-33', u); + T('-51180818493453796222392326680632879', '-5.1180818493453796222392326680632879E34', u); + T('-0.0000000000000000000000000000000000240888314887894116', '-2.40888314887894116E-35', u); + T('-3.9884198', '-3.9884198E0', u); + T('-0.00292509420999319058434270507', '-2.92509420999319058434270507E-3', u); + T('-0.0471410502674988132847954859528693281', '-4.71410502674988132847954859528693281E-2', u); + T('-0.000383921003997213038329810979734179482203337059136937948', '-3.83921003997213038329810979734179482203337059136937948E-4', u); + T('868847355738186906225977.83933455357403132497074451153826473', '8.6884735573818690622597783933455357403132497074451153826473E23', u); + T('-74428485419.93786255558241', '-7.442848541993786255558241E10', u); + T('9.08353695983999662727523423580372295', '9.08353695983999662727523423580372295E0', u); + T('0.000000000000000000000000000000000000174340386756706026938', '1.74340386756706026938E-37', u); + T('0.00000000000000000000000003488223852390463813101', '3.488223852390463813101E-26', u); + T('6235893648937978707207460050453092026130252190198479.3', '6.2358936489379787072074600504530920261302521901984793E51', u); + T('288685778491241.9787664674', '2.886857784912419787664674E14', u); + T('0.000132721936833718', '1.32721936833718E-4', u); + T('-878.0561026970809281319399445768', '-8.780561026970809281319399445768E2', u); + T('0.00000000000000000000000000000164205860568335794182', '1.64205860568335794182E-30', u); + T('198.2447277', '1.982447277E2', u); + T('594893202379402597086528939812.686961108921', '5.94893202379402597086528939812686961108921E29', u); + T('815799379961431517563630941318305822656819.1819089536', '8.157993799614315175636309413183058226568191819089536E41', u); + T('7990092124827731099787724282235162054016305443.9448', '7.9900921248277310997877242822351620540163054439448E45', u); + T('663687681604087645522022865972.07146532571', '6.6368768160408764552202286597207146532571E29', u); + T('318669729285258750300170721357707298590338.45839229964442', '3.1866972928525875030017072135770729859033845839229964442E41', u); + T('-555699450886771049.424695515896915466268294356460403', '-5.55699450886771049424695515896915466268294356460403E17', u); + T('-0.00000000000000000000000000000000000000000001095071857', '-1.095071857E-44', u); + T('-9150620505556.07974725572726628538', '-9.15062050555607974725572726628538E12', u); + T('-0.00000000003194584', '-3.194584E-11', u); + T('-1913473.7214461866163373699149123', '-1.9134737214461866163373699149123E6', u); + T('226008983260172522.282738382841159863', '2.26008983260172522282738382841159863E17', u); + T('62674367141762718476.245255', '6.2674367141762718476245255E19', u); + T('-2', '-2E0', u); + T('-0.00000009178', '-9.178E-8', u); + T('0.00000000000000000629836181986423672328404795028', '6.29836181986423672328404795028E-18', u); + T('93586.02926647672', '9.358602926647672E4', u); + T('-0.0000000000000000000000005', '-5E-25', u); + T('-9207421318.2448691844836734269513121808514798', '-9.2074213182448691844836734269513121808514798E9', u); + T('-0.00000007307221392104978', '-7.307221392104978E-8', u); + T('-0.0000000000000066886943766783493967753683408289', '-6.6886943766783493967753683408289E-15', u); + T('-543304673129193.8', '-5.433046731291938E14', u); + T('-0.000000000000000136', '-1.36E-16', u); + T('-5548881134560.03611729206353518', '-5.54888113456003611729206353518E12', u); + T('12277666390.0592100569639588009142346505770647', '1.22776663900592100569639588009142346505770647E10', u); + T('-49886360742145249688090891445025578471363.463145336476', '-4.9886360742145249688090891445025578471363463145336476E40', u); + T('289734846955085106069130291953704075.5686911', '2.897348469550851060691302919537040755686911E35', u); + T('0.00000000046461', '4.6461E-10', u); + T('-62109960217702169495599.7856590374740584451730995867043611', '-6.21099602177021694955997856590374740584451730995867043611E22', u); + T('-0.00543899591266188574678', '-5.43899591266188574678E-3', u); + T('-0.000000000000655098180667', '-6.55098180667E-13', u); + T('16003803057504466354568876.721', '1.6003803057504466354568876721E25', u); + T('4.54663', '4.54663E0', u); + T('-0.0000090363058536', '-9.0363058536E-6', u); + T('0.00000000000000000000000000000000000000000000683169237734869', '6.83169237734869E-45', u); + T('-0.000007999285941677', '-7.999285941677E-6', u); + T('-0.0013289268682646', '-1.3289268682646E-3', u); + T('-676279445952.4758664434048894660778454544', '-6.762794459524758664434048894660778454544E11', u); + T('-0.00000000000009075526387', '-9.075526387E-14', u); + T('0.00000086974105048792231226652741684821263913885781939473', '8.6974105048792231226652741684821263913885781939473E-7', u); + T('0.000000066874978182439602812', '6.6874978182439602812E-8', u); + T('69460738505039771437626.5674', '6.94607385050397714376265674E22', u); + T('-496842225856320580039833.32412974875059', '-4.9684222585632058003983332412974875059E23', u); + T('-0.00000000089027363409225605342063967', '-8.9027363409225605342063967E-10', u); + T('0.000000000000000000000000000000000000000000013177025997876', '1.3177025997876E-44', u); + T('0.00000000000000000000000000000000000000000000000000767', '7.67E-51', u); + T('0.00000000000000000000051646585515', '5.1646585515E-22', u); + T('-77.0523658189', '-7.70523658189E1', u); + T('-2381011509343581230.1741806527782135341132', '-2.3810115093435812301741806527782135341132E18', u); + T('15355.8', '1.53558E4', u); + T('-6.99530180722252243035032591', '-6.99530180722252243035032591E0', u); + T('0.00000000000000000000000000000000000174189621024', '1.74189621024E-36', u); + T('-0.30429214832427054994311306579079362506404', '-3.0429214832427054994311306579079362506404E-1', u); + T('0.0000053681637', '5.3681637E-6', u); + T('-0.0000000000000000000580794214565094', '-5.80794214565094E-20', u); + T('0.00000000000000000000000000000000000000718', '7.18E-39', u); + T('0.00308106507', '3.08106507E-3', u); + T('-778826601182.03', '-7.7882660118203E11', u); + T('0.07', '7E-2', u); + T('-18429554314600.2502715009477102928634264509718651532399233353', '-1.84295543146002502715009477102928634264509718651532399233353E13', u); + T('1', '1E0', u); + T('-0.007671287604999', '-7.671287604999E-3', u); + T('7887909.816542736', '7.887909816542736E6', u); + T('749', '7.49E2', u); + T('0.00000000000000000000000000000000000000000000000000000000701', '7.01E-57', u); + T('19.83', '1.983E1', u); + T('6.09402754', '6.09402754E0', u); + T('424650217237.5591', '4.246502172375591E11', u); + T('-0.000049564535268301', '-4.9564535268301E-5', u); + T('-7149629423.847728553', '-7.149629423847728553E9', u); + T('886867.3497161434434805387149126261591812', '8.868673497161434434805387149126261591812E5', u); + T('5.26322950282017332236528', '5.26322950282017332236528E0', u); + T('-814.59758571746371817362831870047066741472348685917', '-8.1459758571746371817362831870047066741472348685917E2', u); + T('-0.3417309109605504', '-3.417309109605504E-1', u); + T('0.000000057039362368628403676633', '5.7039362368628403676633E-8', u); + T('-71880.393174366874491172325', '-7.1880393174366874491172325E4', u); + T('0.000000000000000000000000000000022058', '2.2058E-32', u); + T('-2.4', '-2.4E0', u); + T('228988936752996967.25464233211', '2.2898893675299696725464233211E17', u); + T('-5080707117552421.40044791548207099220514344', '-5.08070711755242140044791548207099220514344E15', u); + T('-0.00000000000000000000000000000000016', '-1.6E-34', u); + T('-0.00003625156420604915204366585038046', '-3.625156420604915204366585038046E-5', u); + T('464637966596604669241542203619416.3216624756173', '4.646379665966046692415422036194163216624756173E32', u); + T('0.9087655476734088654458558078829027886267006357', '9.087655476734088654458558078829027886267006357E-1', u); + T('38664124727384955142.767044860367795251877128009517', '3.8664124727384955142767044860367795251877128009517E19', u); + T('-0.04762788797', '-4.762788797E-2', u); + T('-0.00000005574134895606662617', '-5.574134895606662617E-8', u); + T('-0.0003', '-3E-4', u); + T('4722723.88281334997860228789', '4.72272388281334997860228789E6', u); + T('-23995836727515866107660.4330429236850044610474', '-2.39958367275158661076604330429236850044610474E22', u); + T('0.0000045734704681293061832577', '4.5734704681293061832577E-6', u); + T('-0.0000000000000000000000000000000182740798445987382441', '-1.82740798445987382441E-32', u); + T('255100617558.86883972286820342761', '2.5510061755886883972286820342761E11', u); + T('0.064171494091240642357663125', '6.4171494091240642357663125E-2', u); + T('0.000000000000000000000000000000000000000000000294', '2.94E-46', u); + T('-281546266519431813455047.7', '-2.815462665194318134550477E23', u); + T('-570257381822964838010877265', '-5.70257381822964838010877265E26', u); + T('0.00000505461928', '5.05461928E-6', u); + T('-0.0000000000000079383014842488', '-7.9383014842488E-15', u); + T('4902.6138179376447898508', '4.9026138179376447898508E3', u); + T('-0.0000715984', '-7.15984E-5', u); + T('0.000035824586044205294062412584', '3.5824586044205294062412584E-5', u); + T('0.000000000000000000000125960459847724978955518957', '1.25960459847724978955518957E-22', u); + T('0.028825661929052', '2.8825661929052E-2', u); + T('1', '1E0', u); + T('5515129992862248795518.6683048631996974', '5.5151299928622487955186683048631996974E21', u); + T('-0.00000000000000000000000000000000000000000080094098284978', '-8.0094098284978E-43', u); + T('0.0087634344566767751845291518372154140005282350718533575', '8.7634344566767751845291518372154140005282350718533575E-3', u); + T('-0.00000000000000000000000000087483068736', '-8.7483068736E-28', u); + T('-0.00000000000000000000003486', '-3.486E-23', u); + T('0.00000000000000000000000000000070504040638', '7.0504040638E-31', u); + T('8303509586343.2443141446152924467090885760476794115914091746', '8.3035095863432443141446152924467090885760476794115914091746E12', u); + T('-64990.51997', '-6.499051997E4', u); + T('-655394931216227242937434026113830.5297263576723976532', '-6.553949312162272429374340261138305297263576723976532E32', u); + T('-30636947149027568.3784157180980445146', '-3.06369471490275683784157180980445146E16', u); + T('-0.00000000000000000000000000000000000001208233572003', '-1.208233572003E-38', u); + T('-0.0000000000000011794152801815', '-1.1794152801815E-15', u); + T('1071378.3293', '1.0713783293E6', u); + T('-0.000000000003361089193578981719907614', '-3.361089193578981719907614E-12', u); + T('0.000000000000000007517993065604', '7.517993065604E-18', u); + T('-0.00000000000000000000000000523129187652012620622569673798', '-5.23129187652012620622569673798E-27', u); + T('0.0005386441729450879234', '5.386441729450879234E-4', u); + T('1956653.41224492311730384723219211', '1.95665341224492311730384723219211E6', u); + T('6896', '6.896E3', u); + T('0.0000000000744534597556481260346395203468455303201235567973', '7.44534597556481260346395203468455303201235567973E-11', u); + T('-292388805074045762115572488335407720919180203157229382665.559', '-2.92388805074045762115572488335407720919180203157229382665559E56', u); + T('0.0000000000161486329717318200324782054218311', '1.61486329717318200324782054218311E-11', u); + T('-0.000000007268', '-7.268E-9', u); + T('-301600646696.465', '-3.01600646696465E11', u); + T('433163.236977123475732966', '4.33163236977123475732966E5', u); + T('0.00000000000002', '2E-14', u); + T('77436648026076439631578359.44359576567', '7.743664802607643963157835944359576567E25', u); + T('548548914365689512587508708513155531344527.51142574657215155', '5.4854891436568951258750870851315553134452751142574657215155E41', u); + T('-34.831073457011317265120446795022234120450280951265737281038', '-3.4831073457011317265120446795022234120450280951265737281038E1', u); + T('-845.7703', '-8.457703E2', u); + T('-4855853589907390754493', '-4.855853589907390754493E21', u); + T('-0.000000000000000000000000000000000000000000000036', '-3.6E-47', u); + T('-0.00000000000000000000000000000000000000000000000000000065', '-6.5E-55', u); + T('-45187081404585.42115773362507', '-4.518708140458542115773362507E13', u); + T('-0.000323660879015412727290006070402289', '-3.23660879015412727290006070402289E-4', u); + T('0.0000000026140558644933293588', '2.6140558644933293588E-9', u); + T('845511912406451608.452066253429799', '8.45511912406451608452066253429799E17', u); + T('0.0000000004438916316433824501475', '4.438916316433824501475E-10', u); + T('-1.475814', '-1.475814E0', u); + T('-0.5938633', '-5.938633E-1', u); + T('-0.0000000000000000000000000000001', '-1E-31', u); + T('-5261012744021996107539939108.077860134', '-5.261012744021996107539939108077860134E27', u); + T('-0.0000000000000000000000000000000000000000000048147761739', '-4.8147761739E-45', u); + T('-768545505862649955130.58486163645042434421335', '-7.6854550586264995513058486163645042434421335E20', u); + T('-8704255.29406077171056688276987554', '-8.70425529406077171056688276987554E6', u); + T('-0.00000000049', '-4.9E-10', u); + T('-0.0000274005502702', '-2.74005502702E-5', u); + T('0.0000000000000000000000000000899782060188', '8.99782060188E-29', u); + T('2665032804405760472644.6495163233309696', '2.6650328044057604726446495163233309696E21', u); + T('-0.000000000000000030326850268940214303', '-3.0326850268940214303E-17', u); + T('0.0000612367883', '6.12367883E-5', u); + T('303609712270628568267916524914027172014687335.2872885723795', '3.036097122706285682679165249140271720146873352872885723795E44', u); + T('0.000475307072678608341', '4.75307072678608341E-4', u); + T('-0.889983831753818831790592735', '-8.89983831753818831790592735E-1', u); + T('-0.00066889767092099512366082', '-6.6889767092099512366082E-4', u); + T('-82', '-8.2E1', u); + T('0.000000000000000021', '2.1E-17', u); + T('-0.000000000000000000000000000000000000000000000179184', '-1.79184E-46', u); + T('-0.00000153', '-1.53E-6', u); + T('1515.50800161303015840906362948489', '1.51550800161303015840906362948489E3', u); + T('-0.000000065937444987966499626906986814867840872', '-6.5937444987966499626906986814867840872E-8', u); + T('-8.9396126344740419192589432399447838129620466', '-8.9396126344740419192589432399447838129620466E0', u); + T('-14954.93625698463935831538650997', '-1.495493625698463935831538650997E4', u); + T('9174945', '9.174945E6', u); + T('0.000000000000000000000000000000002802944759681178397', '2.802944759681178397E-33', u); + T('-43661507562386856914454118482535735284321568.8260068', '-4.36615075623868569144541184825357352843215688260068E43', u); + T('-0.0000000000000053', '-5.3E-15', u); + T('0.000000000000000088261', '8.8261E-17', u); + T('-3.5', '-3.5E0', u); + T('-0.0000000892690903256739084318630208528', '-8.92690903256739084318630208528E-8', u); + T('-6407107615634731793662054.643592714114255633352022546773', '-6.407107615634731793662054643592714114255633352022546773E24', u); + T('0.000000000000008', '8E-15', u); + T('-4113623798185597530479042260306405.169879539509', '-4.113623798185597530479042260306405169879539509E33', u); + T('-0.0000000000000000000000005949543693626028147554', '-5.949543693626028147554E-25', u); + T('-16486202099937.552352885944', '-1.6486202099937552352885944E13', u); + T('6904428088990.55342459', '6.90442808899055342459E12', u); + T('-82273669444.3011132490462', '-8.22736694443011132490462E10', u); + T('-0.00000000000416644372132', '-4.16644372132E-12', u); + T('-0.051168126904004539033', '-5.1168126904004539033E-2', u); + T('-0.000034398785', '-3.4398785E-5', u); + T('-714608413034.632588711', '-7.14608413034632588711E11', u); + T('31.7594171820640021654374655039', '3.17594171820640021654374655039E1', u); + T('87.4', '8.74E1', u); + T('0.00000000000000000000000483', '4.83E-24', u); + T('24.61775061167239603598621023987484627713284203', '2.461775061167239603598621023987484627713284203E1', u); + T('-0.0000000000000000000000000000005620531', '-5.620531E-31', u); + T('36514.26972606881494', '3.651426972606881494E4', u); + T('-0.00000000000000000000000000000000000000804143880989122008869', '-8.04143880989122008869E-39', u); + T('-0.0000000000000000000000000000000000000736020246', '-7.36020246E-38', u); + T('-0.00000000000510047724869054', '-5.10047724869054E-12', u); + T('905030924720385935277.8553538426257506345310051398387757', '9.050309247203859352778553538426257506345310051398387757E20', u); + T('-9.18', '-9.18E0', u); + T('32679523370662392206339543790659744869129539414', '3.2679523370662392206339543790659744869129539414E46', u); + T('90.2504892', '9.02504892E1', u); + T('-0.0000000000000000000000050446054506203873', '-5.0446054506203873E-24', u); + T('136427761390644472964118311128712026.442', '1.36427761390644472964118311128712026442E35', u); + + assert('-1478635511205065720411441088234634087783353090531769.175603436034231639743395165930222246484607747' + + '0460440794925193040344223656739741115687100160257607638', new BigNumber('-1478635511205065720411441088234634087783' + + '353090531769.175603436034231639743395165930222246484607747046044079492519304034422365673974111568710016025760763' + + '83664408162624867351605015229777701990865326902932136430587015275752666401315258528531504569482239').toFixed(100)); + + BigNumber.config({ERRORS : true}); + + T('123.450', '12.345e1', new BigNumber('3')); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', u); + T('123', '12.345e1', 0); + T('123', '12.345e1', -0); + T('123', '12.345e1', '-0'); + T('123', '12.345e1', '-0.0000000'); + + assertException(function () {new BigNumber(1.23).toFixed(NaN)}, "(1.23).toFixed(NaN)"); + assertException(function () {new BigNumber(1.23).toFixed('NaN')}, "(1.23).toFixed('NaN')"); + assertException(function () {new BigNumber(1.23).toFixed([])}, "(1.23).toFixed([])"); + assertException(function () {new BigNumber(1.23).toFixed({})}, "(1.23).toFixed({})"); + assertException(function () {new BigNumber(1.23).toFixed('')}, "(1.23).toFixed('')"); + assertException(function () {new BigNumber(1.23).toFixed(' ')}, "(1.23).toFixed(' ')"); + assertException(function () {new BigNumber(1.23).toFixed('hello')}, "(1.23).toFixed('hello')"); + assertException(function () {new BigNumber(1.23).toFixed('\t')}, "(1.23).toFixed('\t')"); + assertException(function () {new BigNumber(1.23).toFixed(new Date)}, "(1.23).toFixed(new Date)"); + assertException(function () {new BigNumber(1.23).toFixed(new RegExp)}, "(1.23).toFixed(new RegExp)"); + assertException(function () {new BigNumber(1.23).toFixed(2.01)}, "(1.23).toFixed(2.01)"); + assertException(function () {new BigNumber(1.23).toFixed(10.5)}, "(1.23).toFixed(10.5)"); + assertException(function () {new BigNumber(1.23).toFixed('1.1e1')}, "(1.23).toFixed('1.1e1')"); + assertException(function () {new BigNumber(1.23).toFixed(true)}, "(1.23).toFixed(true)"); + assertException(function () {new BigNumber(1.23).toFixed(false)}, "(1.23).toFixed(false)"); + assertException(function () {new BigNumber(1.23).toFixed(function (){})}, "(1.23).toFixed(function (){})"); + + assertException(function () {new BigNumber('12.345e1').toFixed('-1')}, ".toFixed('-1')"); + assertException(function () {new BigNumber('12.345e1').toFixed(-23)}, ".toFixed(-23)"); + assertException(function () {new BigNumber('12.345e1').toFixed(1e9 + 1)}, ".toFixed(1e9 + 1)"); + assertException(function () {new BigNumber('12.345e1').toFixed(1e9 + 0.1)}, ".toFixed(1e9 + 1)"); + assertException(function () {new BigNumber('12.345e1').toFixed('-0.01')}, ".toFixed('-0.01')"); + assertException(function () {new BigNumber('12.345e1').toFixed('-1e-1')}, ".toFixed('-1e-1')"); + assertException(function () {new BigNumber('12.345e1').toFixed(Infinity)}, ".toFixed(Infinity)"); + assertException(function () {new BigNumber('12.345e1').toFixed('-Infinity')}, ".toFixed('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('Infinity', Infinity, 0); + T('Infinity', Infinity, NaN); + T('Infinity', Infinity, null); + T('Infinity', Infinity, Infinity); + T('NaN', NaN, -Infinity); + + T('123.450', '12.345e1', new BigNumber(3)); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', u); + T('123.45', '12.345e1', NaN); + T('123.45', '12.345e1', 'NaN'); + T('123.45', '12.345e1', []); + T('123.45', '12.345e1', {}); + T('123.45', '12.345e1', ''); + T('123.45', '12.345e1', ' '); + T('123.45', '12.345e1', 'hello'); + T('123.45', '12.345e1', '\t'); + T('123.45', '12.345e1', new Date); + T('123.45', '12.345e1', new RegExp); + + T('123', '12.345e1', -0); + + T('123.4500000', '12.345e1', 7.5); + T('123.45000000000', '12.345e1', '1.1e1'); + + T('123.5', '12.345e1', 1); + T('123.45', '12.345e1', '-1'); + T('123.45', '12.345e1', -23); + T('123.45', '12.345e1', 1e9 + 1); + T('123.45', '12.345e1', 1e9 + 0.1); + T('123.45', '12.345e1', '-0.01'); + T('123.45', '12.345e1', '-1e-1'); + T('123.45', '12.345e1', Infinity); + T('123.45', '12.345e1', '-Infinity'); + + // ROUND_HALF_CEIL + // Rounds towards nearest neighbour. If equidistant, rounds towards Infinity + BigNumber.config({ERRORS : true, ROUNDING_MODE : 7}); + + T('0.1', '0.05', 1); + T('1', 0.5, 0); + T('1', 0.54, 0); + T('1', 0.55, 0); + T('1', 0.56, 0); + T('-1', -0.54, 0); + T('-0', -0.5, 0); // test no. 1307 + T('-1', -0.56, 0); + T('-0.5', -0.5, 1); + T('1.3', 1.25, 1); + T('-1.2', -1.25, 1); + T('234.2041', 234.20405, 4); + T('-234.2040', -234.20405, 4); + T('234.2041', '234.204050000000000000000000000000006', 4); + T('-234.2045', '-234.20449', 4); + T('-234.2041', '-234.204050000000000000000000000000006', 4); + T('999.0', 999, 1); + T('1000', 999.5, 0); + T('-999', -999.5, 0); + T('-999.5', -999.5, 1); + T('1.00000000000000000', '1.000000000000000000005', 17) + T('1.00000000000000000001', '1.000000000000000000005', 20) + T('-1.00000000000000000', '-1.000000000000000000005', 17) + T('-1.00000000000000000000', '-1.000000000000000000005', 20) + + // ROUND_HALF_FLOOR + // Rounds towards nearest neighbour. If equidistant, rounds towards -Infinity + BigNumber.config({ROUNDING_MODE : 8}); + + T('0.0', '0.05', '1'); + T('0', 0.5, '0'); + T('1', 0.54, '0'); + T('1', 0.55, '0'); + T('1', 0.56, '0'); + T('-1', -0.54, '0'); + T('-1', -0.5, '0'); + T('-1', -0.56, '0'); + T('-0.5', -0.5, '1'); + T('1.2', 1.25, '1'); + T('-1.3', -1.25, '1'); + T('234.2040', 234.20405, '4'); + T('-234.2041', -234.20405, '4'); + T('234.2040', '234.20404999999999999999999999999999', '4'); + T('234.2041', '234.204050000000000000000000000000006', '4'); + T('-234.2045', '-234.20449', '4'); + T('-234.2041', '-234.204050000000000000000000000000006', '4'); + T('999.0', 999, '1'); + T('999', 999.5, '0'); + T('-1000', -999.5, '0'); + T('-999.5', -999.5, '1'); + T('1.00000000000000000', '1.000000000000000000005', '17') + T('1.00000000000000000000', '1.000000000000000000005', '20') + T('-1.00000000000000000', '-1.000000000000000000005', '17') + T('-1.00000000000000000001', '-1.000000000000000000005', '20') + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js new file mode 100644 index 0000000..f05067d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js @@ -0,0 +1,3037 @@ +var count = (function toFraction(BigNumber) { + var start = +new Date(), + log, + error, + u, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, maxDenominator){ + assert(expected, new BigNumber(value).toFraction(maxDenominator).toString()); + } + + log('\n Testing toFraction...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // Tests generated using Python's fraction module. + + T('1,10', '0.1', u); + T('-1,10', '-0.1', u); + T('1,100', '0.01', u); + T('-1,100', '-0.01', u); + T('1,1000', '0.001', u); + T('-1,1000', '-0.001', u); + T('54301793,100000', '543.017930', u); + T('-484693350148251574449,1000000000000', '-484693350.1482515744490', u); + T('-200111074540568980159529,25000000000000', '-8004442981.622759206381160', u); + T('-5965700213104829,1000000000000000', '-5.965700213104829', u); + T('-5124110209739113904928179,100000000000000', '-51241102097.39113904928179', u); + T('-1655017182533520595664837541,200000000000000', '-8275085912667.602978324187705', u); + T('-5,8', '-0.625', u); + T('-42394617,200000000', '-0.211973085', u); + T('-147453708173963291829,2500000000000000000', '-58.9814832695853167316', u); + T('-2733,100', '-27.33', u); + T('0,1', '0.0', u); + T('-2599897551866392365731491641,10000000000', '-259989755186639236.5731491641', u); + T('-9326331230765073371,5000000000000000', '-1865.2662461530146742', u); + T('-2483061,10000', '-248.3061', u); + T('-92864854181,10000000', '-9286.4854181', u); + T('-758516850228215193,100000000000000000', '-7.5851685022821519300', u); + T('0,1', '0.0', u); + T('-19570408085559589,20000000000', '-978520.404277979450', u); + T('-211,100', '-2.11', u); + T('-4789334439841,10000000000', '-478.9334439841', u); + T('2978320663077,10000000000000', '0.2978320663077', u); + T('-1221,25', '-48.84', u); + T('12456254053601331,5000000000000', '2491.25081072026620', u); + T('31969983,100000', '319.69983', u); + T('31852901149,400000000000', '0.0796322528725', u); + T('-456674099059,10000000000', '-45.6674099059', u); + T('-361907787,5000000', '-72.3815574', u); + T('-6521,100', '-65.21', u); + T('-11438080592941644302261353,10000000000000', '-1143808059294.1644302261353', u); + T('670431292887199,100000000000000', '6.70431292887199', u); + T('0,1', '0.0', u); + T('-12179876267417657784053129,390625000000', '-31180483244589.20392717601024', u); + T('-883842861294459426792636233,1250000000000000', '-707074289035.5675414341089864', u); + T('93,100', '0.93', u); + T('-4013,250', '-16.052', u); + T('-1813352184996169886155932687,10000000000000', '-181335218499616.9886155932687', u); + T('-79491022129556305898477,25000000000000', '-3179640885.18225223593908', u); + T('-6955532202842357103065812079,100000000000', '-69555322028423571.03065812079', u); + T('1,2', '0.5', u); + T('117679941425840963432274357541,6250000000000000', '18828790628134.55414916389720656', u); + T('-44419548531115044568503,5000000000000000000', '-8883.9097062230089137006', u); + T('-48,25', '-1.92', u); + T('3026554851926703631,10000000000000000000', '0.3026554851926703631', u); + T('-27597130550621,10000000', '-2759713.0550621', u); + T('-80047992603251,50000000000000', '-1.60095985206502', u); + T('-77860395508386749,1000000000000', '-77860.395508386749', u); + T('48601655379903990436811,10000000000000000', '4860165.5379903990436811', u); + T('310385178311182627346467559,100000000000000', '3103851783111.82627346467559', u); + T('-1866981502342301,5000000000000', '-373.3963004684602', u); + T('-263843686400376847,1000000000', '-263843686.4003768470', u); + T('2124759225302861,2500000000000000', '0.84990369012114440', u); + T('-664881551,125000', '-5319.052408', u); + T('-15340092011,500000000', '-30.6801840220', u); + T('-579129,1000', '-579.129', u); + T('31618159823455571971,6250000000000', '5058905.57175289151536', u); + T('-84886224665539,2500000000000', '-33.9544898662156', u); + T('-912648758578220220986367,1250000000000000000', '-730119.0068625761767890936', u); + T('-62977599666149191581,10000000000', '-6297759966.6149191581', u); + T('-5497168411400642219272521,100000000000000000', '-54971684.11400642219272521', u); + T('-5616409194059,1000000000', '-5616.409194059', u); + T('-283871646617001,1000000000', '-283871.646617001', u); + T('-485222200141938641,100000000000000000', '-4.85222200141938641', u); + T('-13782530592809417884043,2500000000000000000', '-5513.0122371237671536172', u); + T('-386323443,1250000000', '-0.3090587544', u); + T('-38961,1000', '-38.961', u); + T('21551091008117488357,2500000000000000000', '8.62043640324699534280', u); + T('173,100', '1.730', u); + T('5333399,6250000', '0.85334384', u); + T('-229251439697497,62500000000', '-3668.0230351599520', u); + T('-212582095021077222386880441,100000000000000000000', '-2125820.95021077222386880441', u); + T('-4509791479,500000', '-9019.582958', u); + T('-7,10', '-0.7', u); + T('171494582705307,50000000000', '3429.89165410614', u); + T('0,1', '0.0', u); + T('-116465991083,5000000', '-23293.19821660', u); + T('-123982957,1250000', '-99.1863656', u); + T('-11006669641979567,2000000000000', '-5503.3348209897835', u); + T('-2313,1000', '-2.313', u); + T('15409800999774967,10000000000000000', '1.5409800999774967', u); + T('-6614709,25000000', '-0.26458836', u); + T('0,1', '0.0', u); + T('-200386023,2500000', '-80.1544092', u); + T('-364278093789203,1000000000000', '-364.278093789203', u); + T('68468339471261366060229,1000000000000000000', '68468.339471261366060229', u); + T('-470519242528519,500000000', '-941038.485057038', u); + T('11,2', '5.5', u); + T('-9976509289,10000000', '-997.6509289', u); + T('0,1', '0.0', u); + T('-6916459729727082955260053,1000000000000000000', '-6916459.729727082955260053', u); + T('-140541,16000', '-8.7838125', u); + T('-49,5', '-9.8', u); + T('-47,50', '-0.94', u); + T('272783,100000', '2.72783', u); + T('4116487650822625882405778003,50000000000000000000', '82329753.01645251764811556006', u); + T('2919425337211,250000000000', '11.677701348844', u); + T('-4159828773,1250000', '-3327.8630184', u); + T('-79717565915722094623,10000000000000', '-7971756.5915722094623', u); + T('-317320236283,500000000', '-634.640472566', u); + T('-14147732160552271137,2500000000000000000', '-5.6590928642209084548', u); + T('-12059857,250000', '-48.239428', u); + T('681420956722259461,12500000000', '54513676.53778075688', u); + T('17774376511238461243,200000000000000', '88871.882556192306215', u); + T('4678001741059099871336323918049287,50000000000000000000', '93560034821181.99742672647836098574', u); + T('0,1', '0.0', u); + T('-7,10', '-0.7', u); + T('-23351644276078989,25000000000000', '-934.06577104315956', u); + T('-1765063,200000', '-8.825315', u); + T('16389704981,5000000000', '3.2779409962', u); + T('18121833053827129891,2000000000000', '9060916.526913564945500', u); + T('-2523281598830311,10000000000', '-252328.1598830311', u); + T('994977441308813,250000000', '3979909.765235252', u); + T('-50961713844809094829,5000000000000000', '-10192.3427689618189658', u); + T('-123997423829,20000000', '-6199.87119145', u); + T('-549246278950790194833129957,625000000000000', '-878794046321.2643117330079312', u); + T('-21647408712889002435857,200000000000000', '-108237043.564445012179285', u); + T('-2820570956057812319823086593,1000000000000000', '-2820570956057.812319823086593', u); + T('-110806033317345864067,20000000000000000', '-5540.30166586729320335', u); + T('-8353311,10000000', '-0.8353311', u); + T('-1357114760839431,200000000', '-6785573.804197155', u); + T('209320962852697355183332757976049,625000000000000000', '334913540564315.76829333241276167840', u); + T('0,1', '0.0', u); + T('-87920815397,10000000', '-8792.0815397', u); + T('42482569836133,1000000000000', '42.482569836133', u); + T('0,1', '0.0', u); + T('-29518137461,1000000000', '-29.518137461', u); + T('5192895093,100000', '51928.95093', u); + T('-40587909849427164111,1000000000000000', '-40587.909849427164111', u); + T('824746069,10000000', '82.4746069', u); + T('-245537748603430439,400000000000', '-613844.3715085760975', u); + T('-717771547151675126007258009,1250000000000000', '-574217237721.3401008058064072', u); + T('-532430787549785291,12500000000', '-42594463.00398282328', u); + T('-44797367524497867,5000000000000000', '-8.9594735048995734', u); + T('-468580303722092912184256627,2000000000000000000', '-234290151.8610464560921283135', u); + T('5657719391,1000000000', '5.657719391', u); + T('14090298821989,50000000', '281805.97643978', u); + T('-80762928268461244253,10000000000000000000', '-8.0762928268461244253', u); + T('3,5', '0.6', u); + T('-92113139197545733,10000000000000', '-9211.3139197545733', u); + T('-1556299,10000000', '-0.1556299', u); + T('2418948368754047020942979,250000000000000', '9675793475.0161880837719160', u); + T('19652697,62500', '314.443152', u); + T('-87839127276245656603537,125000000000000', '-702713018.209965252828296', u); + T('-14005169230761299788063,20000000000000', '-700258461.53806498940315', u); + T('-279,40', '-6.975', u); + T('0,1', '0.0', u); + T('-1806754525468682323,100000000000000', '-18067.54525468682323', u); + T('247972458841,10000000000', '24.7972458841', u); + T('451607951414070493,500000000000000', '903.215902828140986', u); + T('281482401773084158055523,50000000000000000000', '5629.64803546168316111046', u); + T('33,10', '3.3', u); + T('-290099,62500', '-4.641584', u); + T('-899598441,1000000', '-899.598441', u); + T('193325773941340501463237,100000000000000', '1933257739.41340501463237', u); + T('27357881161156398470035203,500000000000000000', '54715762.322312796940070406', u); + T('7215187086319853416331,100000000000000000', '72151.87086319853416331', u); + T('-823577,125000', '-6.588616', u); + T('-127409327138611,312500000000000', '-0.4077098468435552', u); + T('-142974608134492239968107843,1000000000', '-142974608134492239.9681078430', u); + T('-4537660598987301975574620667,10000000000000', '-453766059898730.1975574620667', u); + T('-18374189280291,5000000', '-3674837.8560582', u); + T('-4597156458983,250000000', '-18388.625835932', u); + T('-71670733247098307,1250000000000000', '-57.3365865976786456', u); + T('1987,2500', '0.7948', u); + T('0,1', '0.0', u); + T('-6097315591260183077181430951,100000000000000000', '-60973155912.60183077181430951', u); + T('30252232444541,100000000000', '302.52232444541', u); + T('-980689,125000', '-7.845512', u); + T('-535844087,1000000', '-535.844087', u); + T('-193035003,20000', '-9651.75015', u); + T('-1007194349453595010508023,6250000000000000000', '-161151.09591257520168128368', u); + T('-3658094692361441,200000000', '-18290473.461807205', u); + T('-719,100', '-7.19', u); + T('-958804210658146103495976847,20000000000000', '-47940210532907.30517479884235', u); + T('-89094216351,1000000', '-89094.216351', u); + T('-3582499868182265571,100000000000000000', '-35.82499868182265571', u); + T('2067,10000', '0.2067', u); + T('-9433,100', '-94.33', u); + T('-217068626544319,10000000000000', '-21.7068626544319', u); + T('37585828244413865266713,4000000000000', '9396457061.10346631667825', u); + T('-91498021630276586782019,25000000000000', '-3659920865.21106347128076', u); + T('-3836906826908540628227081,2000000000000', '-1918453413454.2703141135405', u); + T('-4353266163985119533,200000000000000', '-21766.330819925597665', u); + T('-9383241486201,25000000', '-375329.65944804', u); + T('0,1', '0.0', u); + T('-341601768966781,5000000000', '-68320.3537933562', u); + T('-1567555398070069,2500000000', '-627022.1592280276', u); + T('-33306019510179,100000000', '-333060.19510179', u); + T('-4863716727376251454133,1000000000000', '-4863716727.376251454133', u); + T('-574277977,100000000', '-5.74277977', u); + T('5350626629797780458100053761,1000000000000000000', '5350626629.797780458100053761', u); + T('-7636341311139689,1000000000', '-7636341.311139689', u); + T('-235940193945989693,100000000000', '-2359401.93945989693', u); + T('-6648926524329262739,1000000000000000', '-6648.926524329262739', u); + T('53408696765404895507753,100000000000000000000', '534.08696765404895507753', u); + T('-608550193099791,1000000000000000', '-0.608550193099791', u); + T('23166918429420757228938433,2500000000000000', '9266767371.76830289157537320', u); + T('8273,20', '413.650', u); + T('227757,5000', '45.5514', u); + T('348417664650569,100000000000', '3484.17664650569', u); + T('53142735643470026332735643192361,10000000000000000000', '5314273564347.0026332735643192361', u); + T('-89788064954218810252057051,100000000000000', '-897880649542.18810252057051', u); + T('-1306089141,250000000', '-5.224356564', u); + T('-45086702607022861843,1250000000000', '-36069362.0856182894744000', u); + T('-377,50', '-7.540', u); + T('-258447712404123545579762063,20000000000', '-12922385620206177.27898810315', u); + T('-628719551197,10000000', '-62871.9551197', u); + T('60612440731,312500', '193959.8103392', u); + T('-1597151323402131,50000000000', '-31943.026468042620', u); + T('-115594971935575014446009257,4000000000000000', '-28898742983.89375361150231425', u); + T('1,10', '0.1', u); + T('-18621,250', '-74.484', u); + T('-637961611566238281399,500000000000000000', '-1275.923223132476562798', u); + T('-584061819097005054409,100000000000000000', '-5840.618190970050544090', u); + T('-18813090881,200000000', '-94.065454405', u); + T('303,250', '1.212', u); + T('448557308974238577920704115565781,10000000000000000000', '44855730897423.85779207041155657810', u); + T('-1193270826256326041220780273,500000000', '-2386541652512652082.441560546', u); + T('-896023,2000000', '-0.4480115', u); + T('-41206366129433,10000000000', '-4120.6366129433', u); + T('-17988697610527989991481961,500000000000000', '-35977395221.055979982963922', u); + T('-1817173764903,10000000', '-181717.37649030', u); + T('-3,10', '-0.3', u); + T('-92549,1000', '-92.549', u); + T('-279096500654837006467612407,50000000000000000000', '-5581930.01309674012935224814', u); + T('-259968688776686799,500000000', '-519937377.553373598', u); + T('-5,2', '-2.5', u); + T('-3917,50', '-78.34', u); + T('0,1', '0.0', u); + T('-75607642540312935927,10000000000000000', '-7560.76425403129359270', u); + T('-2176542221453118621443981521,500000000000000000', '-4353084442.906237242887963042', u); + T('-5648864378490501415429342121,100000000000000000', '-56488643784.90501415429342121', u); + T('-76539862671139,1000000000', '-76539.862671139', u); + T('141796873549,500000', '283593.747098', u); + T('-948224946050543083414093,1250000000000', '-758579956840.4344667312744', u); + T('-2205228733,500000', '-4410.457466', u); + T('25694008107,1000000', '25694.008107', u); + T('-196113,2000', '-98.0565', u); + T('-66885450169789234267297,1000000000000', '-66885450169.789234267297', u); + T('-48529788189,500000', '-97059.576378', u); + T('-324221069,10000000', '-32.4221069', u); + T('-116146483434824230068673,50000000000000000000', '-2322.92966869648460137346', u); + T('-4051770395293,62500000', '-64828.326324688', u); + T('-83031469,100000000', '-0.830314690', u); + T('-28756998587475224546963,50000000000000000', '-575139.97174950449093926', u); + T('-1799450063972413799,10000000000', '-179945006.3972413799', u); + T('9167099921651200679035713391,1000000000000000', '9167099921651.20067903571339100', u); + T('1451,25', '58.04', u); + T('8253,200', '41.265', u); + T('12869,2500', '5.1476', u); + T('13856945667,1000000000', '13.856945667', u); + T('-43346967,100000000', '-0.43346967', u); + T('-3588675849064697,5000000000', '-717735.1698129394', u); + T('-940992729300541871141570909,2000000000000000000', '-470496364.6502709355707854545', u); + T('-956832531182962661827,2500000000000', '-382733012.4731850647308', u); + T('-152399,500', '-304.798', u); + T('-178527,10000', '-17.8527', u); + T('-342133,1000', '-342.133', u); + T('57078299482481,1000000', '57078299.48248100', u); + T('-79,10', '-7.9', u); + T('4747223909107687084386231,5000000000000000', '949444781.8215374168772462', u); + T('1731900848696547452986210971,5000000000000000', '346380169739.3094905972421942', u); + T('122108665581,500000000000', '0.244217331162', u); + T('-16865419490082861973881,200000000000', '-84327097450.414309869405', u); + T('213918705805395433,2500000000000', '85567.4823221581732', u); + T('-3281991687080891663567529581,1000000000000000', '-3281991687080.891663567529581', u); + T('-9341191082726085332133,500000000000000000', '-18682.382165452170664266', u); + T('-101666590217047,10000000000000', '-10.1666590217047', u); + T('-78831482291567,1000000000000', '-78.8314822915670', u); + T('0,1', '0.0', u); + T('188098837362734027,50000000000000', '3761.97674725468054', u); + T('7446591289029764406983,1000000000000', '7446591289.029764406983', u); + T('0,1', '0.0', u); + T('-237495928119,50000000000', '-4.74991856238', u); + T('-5470021580414601267,62500000000', '-87520345.286633620272', u); + T('20893480589331570804768497,100000000000000', '208934805893.3157080476849700', u); + T('-427402721,10000', '-42740.27210', u); + T('-418854065753,5000000', '-83770.81315060', u); + T('41378721951369,5000000000', '8275.7443902738', u); + T('11188608560931794787022677022582217,2000000000000000000', '5594304280465897.3935113385112911085', u); + T('-46338373,50000', '-926.76746', u); + T('-4074951117564368871187,100000000000000000', '-40749.51117564368871187', u); + T('-1707089291648182063827,100000000000', '-17070892916.48182063827', u); + T('-295010270384580559,100000000000000000', '-2.95010270384580559', u); + T('475514217,12500000', '38.04113736', u); + T('-456027,5000', '-91.2054', u); + T('-7485101,5000000', '-1.4970202', u); + T('-15596055181,100000000', '-155.96055181', u); + T('-5451370075707939,12500000000000000', '-0.436109606056635120', u); + T('0,1', '0.0', u); + T('-6218012505973,2500000', '-2487205.0023892', u); + T('92703,1000', '92.703', u); + T('-58672783,62500000', '-0.938764528', u); + T('26951106753311882431,1250000000000', '21560885.4026495059448', u); + T('0,1', '0.0', u); + T('72561,25000', '2.90244', u); + T('-370800597281,500000000', '-741.601194562', u); + T('161529914311,2000000000', '80.7649571555', u); + T('0,1', '0.0', u); + T('-7921733,1000000', '-7.921733', u); + T('-108370284181334449019037137,1562500000000', '-69356981876054.04737218376768', u); + T('-988987,1250', '-791.1896', u); + T('-22885050541036899,2500000000000000', '-9.1540202164147596', u); + T('-12248601426509,100000000', '-122486.01426509', u); + T('-53006782802519,7812500000', '-6784.868198722432', u); + T('-4098212714968971,1000000000000', '-4098.212714968971', u); + T('-916,25', '-36.64', u); + T('-1849979811,10000000000', '-0.18499798110', u); + T('-1163263320065980213721068337,250000000000000000', '-4653053280.263920854884273348', u); + T('-63,100', '-0.63', u); + T('-74849063976673,10000000000000', '-7.4849063976673', u); + T('-2627,50', '-52.54', u); + T('-76247965138404535127,50000000000', '-1524959302.76809070254', u); + T('-3226091329574799,5000000000000000', '-0.6452182659149598', u); + T('-4774481559,625000000', '-7.6391704944', u); + T('-3932199215959,10000000', '-393219.9215959', u); + T('-6463072565956442868764219,10000000000000', '-646307256595.6442868764219', u); + T('-1852637393024464507520764889,5000000000', '-370527478604892901.5041529778', u); + T('3118876937753549,20000000', '155943846.887677450', u); + T('-8469141306546569061,10000000000', '-846914130.6546569061', u); + T('9573949,2500000', '3.8295796', u); + T('54039659558876732100021006177771,10000000000000000000', '5403965955887.6732100021006177771', u); + T('886406857838383,100000000', '8864068.57838383', u); + T('-64180091,100000000', '-0.64180091', u); + T('-6864846571598899651,20000000000000', '-343242.32857994498255', u); + T('-2493931443,1000000', '-2493.931443', u); + T('31828328526786083786647,500000000000000', '63656657.053572167573294', u); + T('-3445415293,1000000', '-3445.415293', u); + T('-5024242230618045468013,10000000000000000000', '-502.4242230618045468013', u); + T('-9,5', '-1.8', u); + T('8099,25000', '0.32396', u); + T('-2055329312700326377528694739,500000000000', '-4110658625400652.755057389478', u); + T('-30505199589,100000000', '-305.05199589', u); + T('-1490759877124225470407,1000000000000', '-1490759877.124225470407', u); + T('-4618629729980580667366682107,10000000000000', '-461862972998058.0667366682107', u); + T('-1130319192716875137,625000000000', '-1808510.7083470002192', u); + T('-1691412373887639934138807167,5000000000000000', '-338282474777.5279868277614334', u); + T('-298703448990358147,2000000000000000000', '-0.1493517244951790735', u); + T('-33,10', '-3.3', u); + T('33370280255133778539,1000000000000000', '33370.280255133778539', u); + T('-4702252998317805383728740913,100000000000', '-47022529983178053.83728740913', u); + T('-6351,1000', '-6.351', u); + T('-8284856781150816282422064531,100000000000000', '-82848567811508.16282422064531', u); + T('-62846620813,12500000', '-5027.729665040', u); + T('92502823,50000', '1850.05646', u); + T('171431071233669112837,50000000000', '3428621424.673382256740', u); + T('-79113158708464277609,1000000000000000', '-79113.158708464277609', u); + T('-3588793696497311131,500000000000', '-7177587.3929946222620', u); + T('624073,1000', '624.0730', u); + T('-2911659018203,50000000', '-58233.18036406', u); + T('-69,100', '-0.69', u); + T('375641,10000', '37.5641', u); + T('2578379695534414471,2000000000000000', '1289.1898477672072355', u); + T('57798423261,20000000000', '2.88992116305', u); + T('-96869430091,250000000000', '-0.387477720364', u); + T('-54859400821,10000000', '-5485.9400821', u); + T('-38775303,50000000', '-0.77550606', u); + T('-460471243144930261,1250000000000000', '-368.3769945159442088', u); + T('-3335175516487387,10000000000000000', '-0.33351755164873870', u); + T('-174667238638380908738985811,20000000000000', '-8733361931919.04543694929055', u); + T('828129,1000', '828.129', u); + T('-117136909799345874651365657,2500000000000000000', '-46854763.9197383498605462628', u); + T('1779595760369,2500000', '711838.3041476', u); + T('-142341250379,250000000', '-569.365001516', u); + T('986200911,2500000000', '0.3944803644', u); + T('-182333559482602851520637,2000000000000', '-91166779741.3014257603185', u); + T('-60885611373,10000000000', '-6.0885611373', u); + T('-741206875556328299282294609,10000000000000000000', '-74120687.55563282992822946090', u); + T('1156674883,12500', '92533.99064', u); + T('-3627419,10000', '-362.7419', u); + T('-733771061870739,1250000000000000', '-0.5870168494965912', u); + T('-61116071,1000000000', '-0.061116071', u); + T('354993212041625507168357968471,5000000000000000000', '70998642408.3251014336715936942', u); + T('-34655833652810542670257,4000000000000000000', '-8663.95841320263566756425', u); + T('7,10', '0.7', u); + T('-47990699,100000', '-479.90699', u); + T('-3488630351881,5000000', '-697726.0703762', u); + T('123501469355491081,125000000', '988011754.843928648', u); + T('-3,5', '-0.60', u); + T('-605101,20000', '-30.25505', u); + T('-13853,5000', '-2.7706', u); + T('-251,125', '-2.008', u); + T('-332431900771,10000000', '-33243.190077100', u); + T('-83457932143284973896761,125000000000000000', '-667663.457146279791174088', u); + T('-1599464683,1000000', '-1599.464683', u); + T('107247619602970114431,125000000000', '857980956.8237609154480', u); + T('106276234212253,200000000000', '531.381171061265', u); + T('-78321709403185426102854771,100000000000000', '-783217094031.85426102854771', u); + T('-1382454139,1000000', '-1382.454139', u); + T('-22,5', '-4.4', u); + T('-1551647648312410077781031687,100000000000000000000', '-15516476.48312410077781031687', u); + T('-7,10', '-0.7', u); + T('7610856965538431,1250000000', '6088685.5724307448', u); + T('-8644394501214748574126749,1000000000000000', '-8644394501.214748574126749', u); + T('-935485113175581,25000000000000', '-37.419404527023240', u); + T('-1319,10000', '-0.1319', u); + T('-47315292288529,5000000000', '-9463.05845770580', u); + T('-111004268629921001873757,500000000000000', '-222008537.259842003747514', u); + T('-13,25', '-0.52', u); + T('197308716353,200000000000', '0.986543581765', u); + T('-21514078956751937905331,2000000000000000000', '-10757.0394783759689526655', u); + T('-56583509,100000', '-565.83509', u); + T('-310660495303969,5000000', '-62132099.06079380', u); + T('-4588911263109638518958719353,500000000000000', '-9177822526219.277037917438706', u); + T('638787883838178844837013,10000000000000', '63878788383.81788448370130', u); + T('-90023153,125000', '-720.1852240', u); + T('-24719448065802851827137557,10000000000000000000', '-2471944.8065802851827137557', u); + T('-1692163664077,5000000000', '-338.43273281540', u); + T('-3,10', '-0.3', u); + T('-37969027,10000000', '-3.7969027', u); + T('0,1', '0.0', u); + T('-729239769116052893303137,1000000000000', '-729239769116.052893303137', u); + T('-248567011649,5000000', '-49713.4023298', u); + T('0,1', '0.0', u); + T('33976492623521690540454280357369,10000000000000000000', '3397649262352.16905404542803573690', u); + T('-324129431756502447158554419,500000000', '-648258863513004894.3171088380', u); + T('-185535293743,250000', '-742141.174972', u); + T('-9511387,10000', '-951.1387', u); + T('-48277609,10000', '-4827.76090', u); + T('-5305507073516086201,1000000000', '-5305507073.5160862010', u); + T('4220388699670847,5000000000', '844077.73993416940', u); + T('-65603972997,10000000000', '-6.5603972997', u); + T('26,5', '5.2', u); + T('-499,1000', '-0.499', u); + T('-997797821500381,12500000000', '-79823.82572003048', u); + T('-35613001,50000000', '-0.71226002', u); + T('-34818109982526308537,100000000000000', '-348181.09982526308537', u); + T('-7249385948502190907,5000000000000000', '-1449.87718970043818140', u); + T('-4,5', '-0.8', u); + T('27901580717,1000000', '27901.580717', u); + T('-37138444464274424296356197,100000000000000000', '-371384444.64274424296356197', u); + T('-24952519,10000000', '-2.4952519', u); + T('-1183871,10000', '-118.3871', u); + T('-323836725046470278148447,100000000000000000', '-3238367.25046470278148447', u); + T('-458296522853,1000000', '-458296.522853', u); + T('-9896488459499919018798992969,10000000000000000', '-989648845949.9919018798992969', u); + T('-800498844471573993218284031,100000000000000000000', '-8004988.44471573993218284031', u); + T('19,100', '0.19', u); + T('-8819541616157661,1250000000000000', '-7.0556332929261288', u); + T('2464295177881259,100000000', '24642951.77881259', u); + T('-240160051143,25000000', '-9606.40204572', u); + T('-27,50', '-0.54', u); + T('-670912890009,500000000000', '-1.341825780018', u); + T('-41735377076387,100000000000', '-417.35377076387', u); + T('-18351814413232593,25000000000', '-734072.57652930372', u); + T('-1,10', '-0.1', u); + T('-120533530679991899967,50000000000000', '-2410670.61359983799934', u); + T('-341521322123,1000000', '-341521.322123', u); + T('4469363,5000000', '0.8938726', u); + T('-2300185559,500000', '-4600.371118', u); + T('-9,5', '-1.8', u); + T('-19061913987,312500000', '-60.9981247584', u); + T('216663475511333,1000000000', '216663.475511333', u); + T('-1659477,100000', '-16.59477', u); + T('-989884121025000977,200000000000', '-4949420.60512500488500', u); + T('-1913,100', '-19.13', u); + T('-425227820481,100000000000', '-4.25227820481', u); + T('-8376041,1000000', '-8.376041', u); + T('-2990304956561539891971,50000000000', '-59806099131.23079783942', u); + T('0,1', '0.0', u); + T('-46410885173793408759388939,500000000000000', '-92821770347.586817518777878', u); + T('-9499781269249,100000000', '-94997.81269249', u); + T('-1597534101,25000', '-63901.36404', u); + T('811,100', '8.11', u); + T('-4789,400000', '-0.0119725', u); + T('4757,50', '95.14', u); + T('-733,100', '-7.330', u); + T('-2546590947,5000000000', '-0.5093181894', u); + T('-79318790998372451,10000000000', '-7931879.0998372451', u); + T('-97970835166736806859507401,12500000000', '-7837666813338944.548760592080', u); + T('-729119841,1000000', '-729.119841', u); + T('-4324730954076108671,5000000000', '-864946190.8152217342', u); + T('-17759,20000', '-0.88795', u); + T('223387,500000', '0.446774', u); + T('-3495739634217069,1000000000000000', '-3.495739634217069', u); + T('2080645759193349226042432238271,25000000000000000', '83225830367733.96904169728953084', u); + T('-567002479,125000000', '-4.536019832', u); + T('-3271614601090267536275654641,500000000000', '-6543229202180535.072551309282', u); + T('-554616993923712942818718997,20000000000000000', '-27730849696.18564714093594985', u); + T('-112053,250', '-448.212', u); + T('-607248757361461263304116301,2500000000', '-242899502944584505.3216465204', u); + T('-18331,50', '-366.620', u); + T('-24317134245313276003253,250000000000000', '-97268536.981253104013012', u); + T('-1061159932891264014512925703,20000000000000', '-53057996644563.20072564628515', u); + T('36731261,12500000', '2.93850088', u); + T('318736713583604277266673749,5000000000000000000', '63747342.7167208554533347498', u); + T('-74227605737234405747389,100000000000', '-742276057372.344057473890', u); + T('0,1', '0.0', u); + T('-102451481711,250000000000', '-0.4098059268440', u); + T('3368162492642619086982967909376363443,10000000000000000000', '336816249264261908.6982967909376363443', u); + T('-17663710859989775919,1000000000000000000', '-17.663710859989775919', u); + T('-49264796837,10000000000', '-4.9264796837', u); + T('1381043641897743,500000000000', '2762.087283795486', u); + T('-9849,10000', '-0.9849', u); + T('-77,500', '-0.154', u); + T('-264191,6250', '-42.27056', u); + T('-8027691,100000', '-80.27691', u); + T('-18434760024216076621,25000000000', '-737390400.96864306484', u); + T('-535677556431210667261,1000000000000000', '-535677.556431210667261', u); + T('-8080033681,10000000', '-808.0033681', u); + T('-2793157211,250000', '-11172.628844', u); + + T('5,1', '5.1582612935891', '3'); + T('14645,1797', '8.14969395596340', '4682'); + T('350921,81990', '4.28004634702', '82418'); + T('923754598113149102531799372705758450549,100000000', '9237545981131491025317993727057.58450549'); + T('23665467152910525354658972818814752082,49447', '478602688796297558085606261629921.9787246948249979233505266225354557384', '57466'); + T('12401124714135748113774134798397,2', '6200562357067874056887067399198.66971421701', '2'); + T('5747456325233732815460960864983211610837351385715799969377,100000000000000000000000000000', '57474563252337328154609608649.83211610837351385715799969377'); + T('4744,61', '77.7705294446793765233206385561288346447', '86'); + T('230406626515463254737498487452583023685806305331639,100000000000000000000000000', '2304066265154632547374984.87452583023685806305331639'); + T('8452816572418429518944119647,5000', '1690563314483685903788823.9294'); + T('48239499471878294436129777581,10000000000000000', '4823949947187.82944361297775810'); + T('45172634468362586403517152343110493066053,74300', '607976237797612199239800166125309462.530995962577562', '89241'); + T('245629009658126699398365025147112883705717,1250000000000000000000000000000', '196503207726.5013595186920201176903069645736'); + T('19575206081236584421562241755643406299,500000000000000000000000000000000000', '39.150412162473168843124483511286812598'); + T('124335953351113119989680198250484096210027176457861877,20000000000000000000000', '6216797667555655999484009912524.20481050135882289309385'); + T('62359286968916651021817694022163661098254437249041482587,100000000000000000000000000', '623592869689166510218176940221.63661098254437249041482587'); + T('1406253392003122107350210973,50', '28125067840062442147004219.46', '90'); + T('736337826,1', '736337826.0', '1'); + T('2294354321,3019', '759971.62007285863174441704674479534091075', '5946'); + T('342555042697121035185957633789368546657896318423873,50000000000000000000000000', '6851100853942420703719152.67578737093315792636847746'); + T('3511582655801640591,52', '67530435688493088.2885316751682999639624370547426320', '73'); + T('697806103903081,1', '697806103903081.3297023089715266281593302923590', '1'); + T('504239849856718524776121635107896338763895,26083', '19332126283660565302155489595057943440.70448184108567544983900489517214731', '26482'); + T('3513961,10', '351396.0988885676988110229927700324193', '11'); + T('1514998954038665195379885,15263', '99259578984384799540.056673', '55079'); + T('1190687310674838338273481559,50000', '23813746213496766765469.63118'); + T('31747884008318370382077439489,40', '793697100207959259551935987.225181146039', '45'); + T('39451289109544785156061546711681,59993', '657598204949657212609163514.271348320970259397527780637349273932', '61325'); + T('3859539118592118171061,65', '59377524901417202631.7076617756627530296590420377861', '248'); + T('2529860848590369124121129138,36761', '68819152052184900414056.449443703377131320899467509', '59208'); + T('17331073,2', '8665536.3781112033855216846406980971689', '2'); + T('11088761069693879,25000', '443550442787.75516'); + T('37298162459148947522489,474', '78688106453900733169.80801275320205353359142143262532', '517'); + T('12411782390212011049587005051032466579057,100000000000000000000000000000000000000', '124.11782390212011049587005051032466579057'); + T('288377889236302421024476469650301879883847,50000000000000000000000', '5767557784726048420.48952939300603759767694'); + T('64269805556832147,1', '64269805556832146.8921574533060466484388410550211', '2'); + T('1019428223041680221,2', '509714111520840110.44623631764611004359625363775303233110', '2'); + T('15446409508173177876456900755482517,250000', '61785638032692711505827603021.9300680'); + T('794012664285496747924956753856029102507539,10000000', '79401266428549674792495675385602910.2507539'); + T('1254937597799095507639361,5', '250987519559819101527872.2'); + T('6200289913593672418541428454415821,29', '213803100468747324777290636359166.2447131068603257501', '29'); + T('28363420172665408049802993720278,1', '28363420172665408049802993720278.0', '53164'); + T('614972069955669535218947919309413188717428438,76097', '8081423314397013485668921499000133891183.99461213951158548435230604703', '85075'); + T('456397843623966327008858405616124567381,62500000000000000000', '7302365497983461232.141734489857993078096'); + T('18578778016377890885386246496020651,1000000000000000000000000', '18578778016.377890885386246496020651'); + T('22738060524436955,1', '22738060524436954.73553568', '1'); + T('631381816,2355', '268102.68195329664239686517327023024865590172', '20904'); + T('146503259847606731525818341,125000000000000000000000000', '1.172026078780853852206546728'); + T('14904502285493,500000', '29809004.570986'); + T('46687620560206903024816575649873835,3349', '13940764574561631240614086488466.35861452906998315', '6745'); + T('91662449024242718476521823,100', '916624490242427184765218.23'); + T('47716161226447671719905908024708011827667,1000000000000000000000000000000000000', '47716.161226447671719905908024708011827667'); + T('720670502490670418796980571060493068249181,5000', '144134100498134083759396114212098613649.8362'); + T('37873375501866534444667697433,2000000000000000000000000', '18936.6877509332672223338487165'); + T('9837105973,284029', '34634.1605012164224956', '586619'); + T('275962770820946621106879920859,1250000000000000000000000000000', '0.2207702166567572968855039366872'); + T('706513249010161459257,1', '706513249010161459256.864532197276', '1'); + T('595980268265874363487011727978412247,781189', '762914311729779046411318807584.86390233349524542', '1162874'); + T('94990393655983362634,1', '94990393655983362633.93540186786386734642706043938', '2'); + T('478995160185850544676215707045658234,1', '478995160185850544676215707045658234.2072935316895051189693', '1'); + T('900791612975363289,100000', '9007916129753.632890'); + T('3640161366680621782,5508865835', '660782359.87401239405933', '31221561655'); + T('153304,2409', '63.63802393447707212496311847412489674893', '2919'); + T('48894805199,100000', '488948.05199'); + T('764607208068,1', '764607208068.0', '9883952909'); + T('5247038043357340126406507,10000000000000000000', '524703.8043357340126406507'); + T('40752843984968450495935900024466301,100000', '407528439849684504959359000244.66301'); + T('1508393360078152986207294205073063553774739,10000000000000000000000000000000', '150839336007.8152986207294205073063553774739'); + T('15049415517,2500000', '6019.7662068', '25809809256'); + T('4679780279632085707608834877135150316333,500000000000000000000', '9359560559264171415.217669754270300632666'); + T('175108726296810783549,699340', '250391406607388.0852646781250551', '1790242'); + T('44702883860465549,10', '4470288386046554.9'); + T('7808104088649916822858776184466,1', '7808104088649916822858776184466.47052438758636053342', '1'); + T('281411919337,465805657858', '0.6041401914933113740581694868115147', '980851387140'); + T('695754534752369598767,100000', '6957545347523695.98767'); + T('14331404543988591592392002000575758391172,21068409', '680231931323745974002688195419775.569724890', '37960275'); + T('3320644402459621722827,625', '5313031043935394756.5232', '6613572437131'); + T('627120338836675613788452534272072859,1000000000000000000000000000000', '627120.338836675613788452534272072859'); + T('21062775182251,383134912', '54974.8261579748702201285', '452907837'); + T('18956932146202765099219634795464927,10000000', '1895693214620276509921963479.5464927'); + T('2600986773742994608412878821259213,10', '260098677374299460841287882125921.3'); + T('566726653824685741382851080165717726527122873,100000000000000000000000', '5667266538246857413828.51080165717726527122873'); + T('497588039427229066346312712229773035708653408397,10000000000000000000000', '49758803942722906634631271.2229773035708653408397'); + T('41666367526388418811711752302612627697101,2000', '20833183763194209405855876151306313848.5505'); + T('15363941484953032312420486,10851', '1415900975481801890371.43913003328099204929551975491363327', '49992'); + T('2409694437794006212469,622301', '3872232951247075.309968970', '5615242'); + T('39667592557377399116572645358849947597,100000000000', '396675925573773991165726453.58849947597'); + T('6631914348494357725061167,1000000000000000000000000', '6.631914348494357725061167'); + T('190389016168952767733346161974389684092039842699,50000000000', '3807780323379055354666923239487793681.84079685398'); + T('869903981761555555786475820853808311250191616816131,1000000000000000000', '869903981761555555786475820853808.311250191616816131'); + T('371292976710505868722177667462589039897488370705001117485935571,100000000000000000000000000000000', '3712929767105058687221776674625.89039897488370705001117485935571'); + T('46257442183069435630977238493,1000000000000000000', '46257442183.069435630977238493'); + T('440475560214540234869187803670278339051473119,1000000000000000000000000', '440475560214540234869.187803670278339051473119'); + T('1617847693417,5000', '323569538.6834'); + T('182074175724591638134600468349034330834991283,50000000000000000000000000000', '3641483514491832.762692009366980686616699825660'); + T('7589333034185993241367598309953157841,1000000', '7589333034185993241367598309953.157841'); + T('439885064966692635331338940060375403,74133607290968', '5933679488173046564651.89839254336877899980063174325', '77141789811679'); + T('1179158450722067213186968484863836861457157,100000000000000000000000000000000', '11791584507.22067213186968484863836861457157'); + T('12935263022381831236481986920256744104451045320357,50000000000000', '258705260447636624729639738405134882.08902090640714000'); + T('2395282895205309,25123683202843', '95.33963933020212599179070033', '38426420751904'); + T('17850307,215', '83024.683723', '963'); + T('32544916036253,50', '650898320725.06', '5793653961'); + T('60773532817161262237,66672547', '911522591407.24385761053946236159069413709389', '338084891'); + T('914770176848677528292843944387964798627453476861720317700876791,10000000000000000000000000000000000000000', '91477017684867752829284.3944387964798627453476861720317700876791'); + T('4587186380417513404538237108175442069452907,50000000000000000000000', '91743727608350268090.76474216350884138905814'); + T('8531233654030763235701612513100153212942822881,100000000000000000000000000', '85312336540307632357.01612513100153212942822881'); + T('107773450530064909662187359086117316399733950067153,500000000000000000000000000000000000000', '215546901060.129819324374718172234632799467900134306'); + T('769619176587614353053,1250000000000000', '615695.3412700914824424'); + T('12281666497073480840695662,211', '58206950223097065595714.0379184486359', '683'); + T('457196542212636540687669731893020947887,6883500', '66419196951062183582141313560401.0965187767850813634641', '9593745'); + T('4268227996137613294377196928631180903821983,40735441', '104779226426875145266678147135590870.4614731678', '830069295'); + T('575458315285885743858391,24', '23977429803578572660766.29105216999286300600008393459353040482', '52'); + T('8436494536336345240276183670676635057499,38398604', '219708365864976373627441864049970.0212408503184125498085096963579394842', '68059426'); + T('437912761,10', '43791276.1'); + T('18901384502804686897816143307188176228147,2500000000000000000000000000', '7560553801121.8747591264573228752704912588'); + T('25477273836466129096074485,6558', '3884915193117738501993.66956453300', '6559'); + T('7590779151577004043224428413071780976089,2000000000000000000000000000000000000', '3795.3895757885020216122142065358904880445'); + T('6056953730608206494408538120559,10', '605695373060820649440853812055.9', '5171809704'); + T('31849179082257267370211,88449', '360085236489471530.14970208743', '92072'); + T('178285814692139084253431718197878271715779878432662563,10000000000000000000000000000000000000000', '17828581469213.9084253431718197878271715779878432662563'); + T('1449138221474956614898,2029', '714213021919643477.03203547420265509578', '3820'); + T('183,821', '0.222897429282815755169043594043902608174', '974'); + T('433492537953390549272160099280439360005070313,5000000000000000000000000', '86698507590678109854.4320198560878720010140626'); + T('3862824701391243701393001605164434946489851,148867231', '25948119511884006906751705519157771.8436225296620181042509021019411', '552982978'); + T('2589933131557013289797231668,47', '55104960245893899782919822.723478083911298417430269312', '80'); + T('10890199899142835887,2137', '5096022414198800.13430078158019717882', '2446'); + T('3293945324962080603125,382', '8622893520843142940.11780071049874178362583458818054294', '421'); + T('436594379,1000000', '436.594379'); + T('168301463949156607668854677190355669536114773797741179468731574716495111,25000000000000000000000000000000000', '6732058557966264306754187087614226781.44459095190964717874926298865980444'); + T('24609496918349161226843361015480093061391925879787537781518362891719192377,5000000000000000000000000000000000000000', '4921899383669832245368672203096018.6122783851759575075563036725783438384754'); + T('101528584171956890122633497199277785333799099,100000000000', '1015285841719568901226334971992777.85333799099'); + T('21735,239', '90.941418', '302'); + T('118224122484187225351526044435841806374099,2693763154', '43888091018185790119960206581636.911933980295284713291', '2834067906'); + T('1,1', '0.775084028626235358553642', '1'); + T('19134122533504389120891,25000000', '765364901340175.56483564'); + T('342810849655223057065770739830569,10000000000000000000', '34281084965522.30570657707398305690'); + T('6725614005586035111245829205493452074108331,1000000000000000', '6725614005586035111245829205.493452074108331'); + T('1376371700067530025202571904028,1409', '976842938302008534565345567.088715501208', '2249'); + T('76801072988978594413391998963,10000000000000', '7680107298897859.44133919989630'); + T('12704762005671512260146338889,20', '635238100283575613007316944.45'); + T('2492573677322062578671959051439,108734', '22923590388673851588941444.731537513573028882768807925690476231785', '231654'); + T('31123084257678338385173981570213479239607677464746977165210081,12500000000000000000000', '2489846740614267070813918525617078339168.61419717975817321680648'); + T('3786296291638531133538327635741,100', '37862962916385311335383276357.41'); + T('586924625297711213018263802128176897964674915689,1000000000000000000000000000000000', '586924625297711.2130182638021281768979646749156890'); + T('9645358,1', '9645357.912453778903438267262181232435591944111', '4'); + T('5316031065626771333799,10', '531603106562677133379.9', '19'); + T('67278211304547861090569521693426588943,79', '851622927905669127728728122701602391.68360228044574465611893', '159'); + T('7021540690227758957176483359885192690352067153,81703854', '85938916543982845132084997604705314027.8066583370718350934', '97264150'); + T('60669129292299639447664369918689547710597272939435803927977438559,25000000000000000000000000000000000000', '2426765171691985577906574796.74758190842389091757743215711909754236'); + T('6288763899326986566293639459006397625,120589', '52150394308991587676269306976642.957691', '210871'); + T('615,1', '615.0', '56760255'); + T('17799,19', '936.7892332671682401846243', '97'); + T('1303385080467541077973,1000000', '1303385080467541.077973'); + T('21448859436681680760040806307936789975345193025273495023,500000000000000000000000000000', '42897718873363361520081612.615873579950690386050546990046'); + T('1291898345053434859844591463516855305911784995979,12500000000000000000', '103351867604274788787567317081.34842447294279967832'); + T('60507,1', '60506.9', '5'); + T('616317355277164831416386217627324701901,1000', '616317355277164831416386217627324701.901'); + T('2904921181742034,1', '2904921181742033.970138508789748538132238870774712', '1'); + T('3440569493092390376625126875391799,50000000000000000000', '68811389861847.80753250253750783598'); + T('15571280591820679565505108997031,5', '3114256118364135913101021799406.195951', '8'); + T('392321264085832586910672967559,611830431', '641225483741642440322.9347831490911899434269', '695282372'); + T('5577690959101259996527703333121313876972011192208077,625000000000000000000000000000000', '8924305534562015994.4443253329941022031552179075329232'); + T('16539986799609190872098179009446893,331524797', '49890647545164444734124002.82518502831629815787962712124518347', '544553707'); + T('8981681843839458445912808176057,20203', '444571689543110352220601305.55150225273', '22042'); + T('99325333489133639887283,11', '9029575771739421807934.81761', '13'); + T('6522,1', '6522.0'); + T('7187454479696854214600838,2125352003', '3381771334607886.2281528797655830003743', '3307131440'); + T('28117786498578019978223647606249,72838872', '386027209462799203950105.756803166858487810', '81837562'); + T('478254578956578786562047524831361309532201229,10000000000000000000000', '47825457895657878656204.752483136130953220122900'); + T('77058140608147483002424280179365952862962922218441255276651,1000000000000000000000000000000000', '77058140608147483002424280.179365952862962922218441255276651'); + T('803865379172081337096308068958767613527926677,327563', '2454078693784344804194332293203956532111.1562569643063947120941944927', '375003'); + T('2360034347428712012050231582155883,250000000000000000000000', '9440137389.714848048200926328623532'); + T('203318509580360624351812461951622123031368062580663,250000000000000000000', '813274038321442497407249847806.488492125472250322652'); + T('221965264758349084399,6470046354', '34306595751.2225088455680019382813053906996309752644', '7317562156'); + T('5099265696964671,12500000', '407941255.75717368'); + T('321755130,1', '321755130.0', '1'); + T('681406688936672531143794851254005123313841616787245936785722503,7812500000000000000000000', '87220056183894083986405740960512655784.171726948767479908572480384'); + T('153955479454984280174500893,4927686668', '31242952287278887.5492886539595216', '9598118777'); + T('23227,100000', '0.23227'); + T('43326473463554790328447035534276163421779557,1000000000000000000000000000000000000', '43326473.463554790328447035534276163421779557'); + T('41089006913283492613083959033772531785,2', '20544503456641746306541979516886265892.530283312918885713244232199421', '5'); + T('139407109288420981406975879448852798787333071448546598243307,1000000000000000000000000000000', '139407109288420981406975879448.852798787333071448546598243307'); + T('9781691985049606719084834150405960550336089,122674', '79737287322901403060834685022139659180.7236170663710128362032', '57088498'); + T('14022980999863417630135058657283616,2321', '6041784144706341072871632338338.481688949941106013243041338', '8154'); + T('5574653114539338322522057935820934,1', '5574653114539338322522057935820933.952578779342397522948776164237003865', '2'); + T('698597423090735413329970853695704980420,1', '698597423090735413329970853695704980420.0'); + T('41770388588086435767794101997,1', '41770388588086435767794101996.87800912334551920117198', '2'); + T('3969460977515807861628298607881363600942403072746116154451251370411,500000000000000000000000000000000000', '7938921955031615723256597215762.727201884806145492232308902502740822'); + T('818626449980780390596498633228169970328017564,951613', '860251436225419777363800865717649895837.927354922641714029', '2934871'); + T('2864942859671509919660119,10000000', '286494285967150991.96601190'); + T('145096137530603,3125', '46430764009.79295997627678788068274740859435028566', '3415'); + T('3175128188,8421', '377048.82888017296266613549723116278', '9892'); + T('353211267011180153249,10000000', '35321126701118.0153249'); + T('897447070318612896975557401374492140028592343673,10000000000', '89744707031861289697555740137449214002.8592343673'); + T('17536546982566421053425616271159751448175509509,5000000000000000', '3507309396513284210685123254231.9502896351019018'); + T('1498867800352844887470319343495958,17', '88168694138402640439430549617409.293', '22'); + T('14305398689362,15467073', '924893.7203155374', '22113082'); + T('436102839806788235096903,4', '109025709951697058774225.7362272869251737724', '9'); + T('308087699066,7807', '39463007.437684133317', '10839'); + T('2628342736773923291423096554670735302124820185693541213399,50000000000000000000', '52566854735478465828461931093414706042.49640371387082426798'); + T('64300989158077788880534179354276244873359,2195', '29294300299807648692726277610148630921.8036447', '3984'); + T('1593668215027228291921575913818,1', '1593668215027228291921575913817.9011053', '2'); + T('9464555700726947268792864782,1', '9464555700726947268792864781.94741904335358', '2'); + T('86501031784980810599118109920903,367173188', '235586460591400292003669.151138843504008795198121680193', '457966587'); + T('9745513313209888804669228133888956813799941097,10000000000000000', '974551331320988880466922813388.8956813799941097'); + T('31556786915280245846977588242899282449,10000000000000000', '3155678691528024584697.7588242899282449'); + T('472322148083391454920144185678364119,100000000000', '4723221480833914549201441.85678364119'); + T('518007801929481005201363369,625000000', '828812483087169608.3221813904'); + T('299535536454040965333171155703500161446096189553447,500000000000000000000000000000', '599071072908081930666.342311407000322892192379106894'); + T('5330869452533820313561195628056700122127092795967358371,250000000000000000000000000000000000', '21323477810135281254.244782512226800488508371183869433484'); + T('47795736745489295393396455460987004248591698840612598072778499,100000000000000000000000000000000000000', '477957367454892953933964.55460987004248591698840612598072778499'); + T('206470771234730604991708607179250628073439743340221,1000000000000', '206470771234730604991708607179250628073.439743340221'); + T('907,1', '907.239004086069', '1'); + T('19077064083517899785847151076434612550555316546848569573481919,500000000000000000000000000000000000000', '38154128167035799571694.302152869225101110633093697139146963838'); + T('88133212648357648517,100', '881332126483576485.17', '87089410'); + T('92145848597976720763683816246415023,100000', '921458485979767207636838162464.15023', '521344865'); + T('68539971794,6880585', '9961.358197595117284', '7875099'); + T('935168426589766229927456282413,1000000000000000000000', '935168426.589766229927456282413'); + T('97,1', '97.0'); + T('12846464199528950327,5000000000', '2569292839.9057900654'); + T('2196110114554495743126928176989085775661,247228124', '8882929979901864818287939510429.9936995072615605828834737982875357', '360433698'); + T('388166039,1', '388166039.0'); + T('341539978,1', '341539978.0', '195382934'); + T('781034514540009,100000000', '7810345.145400090'); + T('20877130490298631791495412013,5000000', '4175426098059726358299.0824026', '2413029349'); + T('620026697301098193277327524609895859849707,1000000000000', '620026697301098193277327524609.895859849707'); + T('899179602300830741337813,100000', '8991796023008307413.37813'); + T('122432635,1316', '93033.9171732715553792824649171231580', '8140'); + T('119126340085680938295485816698905,46045039', '2587169924770417466591478.32840156786489', '73781454'); + T('40751167179588164798660481,1000000', '40751167179588164798.660481'); + T('68346625258654521574,1', '68346625258654521574.0'); + T('750578575419957257,100000', '7505785754199.57257'); + T('1082551,2000000', '0.5412755'); + T('638082,1', '638082.0'); + T('142488629984756867662276702019849226999,23', '6195157825424211637490291392167357695.608', '50'); + T('738115949031,1', '738115949031.49784834425903489305746005970674', '1'); + T('762953733493512712065532091292988047,1000', '762953733493512712065532091292988.047'); + T('178822248219150690173,50', '3576444964383013803.46'); + T('1984025728,43281', '45840.570411959105408010583324095855', '43320'); + T('20761534807588043,10000', '2076153480758.8043'); + T('924518404356149235469334759956600273757163609,20000000000000', '46225920217807461773466737997830.01368785818045'); + T('129411352783937937234426479,4112', '31471632486366229872185.427772374363428597742550717671565', '6699'); + T('3411360513380150634213140127292339282533595063273539901300312481,400000000000000000000000', '8528401283450376585532850318230848206333.9876581838497532507812025'); + T('76,1', '75.994673795016', '1'); + T('494578703756754347,5770935', '85701659047.754713404327025764320339913', '7644022'); + T('6890929,100', '68909.29'); + T('1166392938478006378987508440139351590646756345929819,100000000000000', '11663929384780063789875084401393515906.46756345929819'); + T('313075076294541347576328789584368750721345183624469,100000000000000000000000000000000000000', '3130750762945.41347576328789584368750721345183624469'); + T('2662023247705491854869433606657653587,2000000000000000000000', '1331011623852745.9274347168033288267935'); + T('806080010264194,4727', '170526763330.694732378488764174454796737', '7478'); + T('65545519,78105263', '0.83919465196602580801751582896749717', '79437231'); + T('6248476043461963589910078747895049611946214109708513753,1000000000000000000000000000000000', '6248476043461963589910.078747895049611946214109708513753'); + T('54531559010653599,3030958223', '17991524.461422310735689741', '7731481918'); + T('429099569700734470147551061212192591773651008518,670838555', '639646553559722681931349430582731774821.2176154931941859', '704304148'); + T('844049999410175821526,1', '844049999410175821525.66', '1'); + T('60701048676262579463126309740310059202124189359,100000000000000000000000000000000000', '607010486762.62579463126309740310059202124189359'); + T('5279410855406353186734225099558276,77', '68563777342939651775769157137120.467524470763581', '95'); + T('842239448004271461702793995095761523551628413356036645106333,250000000000000000000', '3368957792017085846811175980383046094206.513653424146580425332'); + T('1182610690103,312500000000', '3.7843542083296'); + T('68524947508627870390245103423700023635275808281519987514918614853613,100000000000000000000000000000000000', '685249475086278703902451034237000.23635275808281519987514918614853613'); + T('98142576359019755098761,10000000000000', '9814257635.9019755098761'); + T('241800962281991517205884817297371,5000000000000000000000000', '48360192.4563983034411769634594742'); + T('79836993918410993594506591,1000', '79836993918410993594506.591'); + T('1973810204163989,4534064777', '435329.0703248347084653925795494', '5332316364'); + T('401580056542974086016353741391922659742781536879698656843919,50000000000000000000000000000', '8031601130859481720327074827838.45319485563073759397313687838'); + T('590663,750977', '0.7865260853527516321730', '780179'); + T('280079,1000', '280.079000'); + T('8287753156729,1000000', '8287753.156729'); + T('0,1', '0.123545182349443609735032', '1'); + T('57057377258668955092844388184203953190814195154676204418983523542264563023,100000000000000000000000000000000000', '570573772586689550928443881842039531908.14195154676204418983523542264563023'); + T('147604349147007341987769096030122333191422929,6471015', '22810076803562863320169880000297068263.853959386587721161799958796244241051', '8303141'); + T('6105498122564848444576189774,80267', '76064860061604998873462.192108836736339050132605', '141567'); + T('670639675445600472707497548714250172221625881188854267533121,100000000000000000000000000000000', '6706396754456004727074975487.14250172221625881188854267533121'); + T('478196505300332351297,1000000000000000', '478196.505300332351297'); + T('5375051998674067089293,50000000', '107501039973481.34178586'); + T('66584033541591402334601184478033648516971762649454147,1000000000000000000000000', '66584033541591402334601184478.033648516971762649454147'); + T('6689748165117193396726141393,1250000000000000000000000000', '5.3517985320937547173809131144'); + T('460631023076,645385145', '713.7304393270471076595464454721208755', '940592764'); + T('5276069320082913776121941721,56', '94215523572909174573606102.16045907376298740945874743718869112', '78'); + T('27476132817352,13', '2113548678257.84612197961789955018136', '856'); + T('202602298856965754329,41868', '4839072772928388.13244005', '42848'); + T('4464608676391498186364792490985185921,5000000000', '892921735278299637272958498.1970371842'); + T('5031980754741001166,1', '5031980754741001166.0'); + T('8023557799983,1294504', '6198171.500422555666059971291979899', '4419145'); + T('168103197472408099843,2', '84051598736204049921.4325681106454432215021', '4'); + T('22889257701907256349217661636051,500000', '45778515403814512698435323.272102'); + T('892403,100000', '8.92403'); + T('1914024621531154563928585,31', '61742729726811437546083.38708655997995899644906913601366359', '352'); + T('1895934054286044231883939226027166734,19', '99786002857160222730733643475114038.631477380741702788316870213097972253591', '65'); + T('488907941212895608156694986135107572664818936553,809421353', '604021551199299295180189033306992053945.5041242938398241170607073', '811259873'); + T('9558758078456554336102679663,10000000000000000', '955875807845.6554336102679663'); + T('2281310565857,50362', '45298251.972856518761138181026483534977097', '82487'); + T('2890669262797093295990028537,799', '3617858902124021647046343.6007512810038540029262532383', '994'); + T('7463509030548608549549784845908192540652431,1000000000000000000000000000000000000', '7463509.030548608549549784845908192540652431'); + T('2506595022495145502116175,2852121886', '878852700790623.04917082880938279787754319212190899', '5003324771'); + T('12700439554099,50', '254008791081.98', '925168108'); + T('1628787692156684658130881,10000000000000000000000000', '0.1628787692156684658130881'); + T('44847136057058496707418799843,50000000000000000', '896942721141.16993414837599686'); + T('21592764541,25000000', '863.71058164'); + T('47801148603152505431027216366549,100000000000000000000000', '478011486.03152505431027216366549'); + T('11423000733021287947376,5', '2284600146604257589475.18575178', '5'); + T('2732203040520419846369019510610,1', '2732203040520419846369019510609.688387071616656538889144285', '1'); + T('568956,96605', '5.889508824590992627401001', '840534'); + T('71266649783967665510339357353436865700959295147,1000000000000000000000000', '71266649783967665510339.357353436865700959295147'); + T('47566615560121136721952891543681047713870191381209033,500000000000000000000000000000', '95133231120242273443905.783087362095427740382762418066'); + T('46719848692300081220895684593,79867', '584970622313346954573173.959119536234', '447174'); + T('6512959508348312854935682614687474683779,45270', '143869218209593833773706264958857404.1037994256595241153200438542903873871', '89045'); + T('5439094235028724828058147496706,1', '5439094235028724828058147496706.08739593', '5'); + T('6914775066832852797746427420897025001305226852,9731571', '710550749394198819260161326562486673662.990985936391792772356968236196619', '9877188'); + T('9132456017491382812010830613993084921418431583790758069448731138967157,10000000000000000000000000000000000000000', '913245601749138281201083061399.3084921418431583790758069448731138967157'); + T('167000488634822153427980339,200', '835002443174110767139901.6950', '209'); + T('141817570803201010469485291685322472531441481,200000', '709087854016005052347426458426612362657.2074050'); + T('588070510408392162256205164465497,78125', '7527302533227419676879426105.1583616', '5624320'); + T('19513055373531609310745811785217,200', '97565276867658046553729058926.085', '662'); + T('138474825950618076159440491355711,250000000000000000000', '553899303802.472304637761965422844'); + T('415063278182543292471143901597284671215994230954413,5000000000000000000000000000000000000', '83012655636508.6584942287803194569342431988461908826'); + T('36464063274630813862074158403502015663924,4479', '8141117051714850158980611387252068690.315695463672930753117541745392976362780', '9949'); + T('77574321944149904065550232031471931458854752374018266928805594322125477,1000000000000000000000000000000000000', '77574321944149904065550232031471931.458854752374018266928805594322125477'); + T('860630077,2', '430315038.403217142', '2'); + T('15558187771473513998987651232806625351751827119199,10000000000', '1555818777147351399898765123280662535175.1827119199'); + T('3231091733918849478252448666476580370445734299,10000000000000000000', '323109173391884947825244866.6476580370445734299'); + T('11956064398957062636192043300176336503346154370545469406163,25000000000000000000', '478242575958282505447681732007053460133.84617482181877624652'); + T('13021206583561217782,1393', '9347599844623989.793252229114225593843', '1438'); + T('1205029771231704090691706271,10', '120502977123170409069170627.1'); + T('39427566041566908772215108783864070289307704169373367199,100000000000000000000000000000000000', '394275660415669087722.151087838640702893077041693733671990'); + T('20653796995853981466925025099001736339,1', '20653796995853981466925025099001736339.01178318512428457087673690149249703', '2'); + T('49185188690848465217210092151,1000000000000000000000000', '49185.188690848465217210092151'); + T('97698380055293281205698719426020,264416813', '369486262794088215584455.74119380979', '553766419'); + T('104240787201124446779050832403,11', '9476435200102222434459166582.0896', '42'); + T('23908923428339619,2000000', '11954461714.1698095'); + T('6443200626654394417539232110121866815091625569790751249399973169,10000000000000000000000000', '644320062665439441753923211012186681509.1625569790751249399973169'); + T('522824108366566300342606573753440692777606807910783,10000000000000', '52282410836656630034260657375344069277.7606807910783'); + T('9331495570471,10000', '933149557.0471'); + T('2288353143307282848483,625000000000000000', '3661.3650292916525575728'); + T('2540011169177460230281,658036', '3859988160491918.7252384368027830049697409', '870300'); + T('201,500', '0.402'); + T('10226950029331489136943365681209055845834606737970478522990929,10000000000000000000000000000000', '1022695002933148913694336568120.9055845834606737970478522990929'); + T('17113571783735766467,6250000000000', '2738171.48539772263472'); + T('607162793632634650613626558,109', '5570300859014996794620427.13759324128530102744', '279'); + T('23435545976038973604189644358770194,65959', '355304749557133576982514052043.999969678005', '66113'); + T('90547763901776187620780219732687,11', '8231614900161471601889110884789.730553504', '14'); + T('538495939889,1000000000', '538.495939889'); + T('892775,1771', '504.1078487171945391982883708896239694983', '2610'); + T('5143213613655381342618850465608,5333', '964412828362156636530817638.4039', '5396'); + T('39901895138105505,1', '39901895138105504.7809060487341642826622382411986', '1'); + T('1381529243092626455345386156196319406364914937,2000000000000000000000000000000000000', '690764621.5463132276726930780981597031824574685'); + T('9499945404778753956432849082641761055489266837114251,100000000000000000000000000000000000000', '94999454047787.53956432849082641761055489266837114251'); + T('83156369636439388647124221367308574466072835786176325890310492691,1000000000000000000000000000000000000000', '83156369636439388647124221.3673085744660728357861763258903104926910'); + T('476709938523129116704811850643225303462101,4991', '95513912747571451954480434911485735015.448006383504104143813484355284523646562', '6199'); + T('157890355707984,275', '574146748029.0327252791231876', '499'); + T('8019262547628511834980873806916156016716,947', '8468070272047002993644006131907239721.9809925284381006401', '5117'); + T('622115359848494409270460619,10000', '62211535984849440927046.0619'); + T('832436043530692186307700916007638657221,9338', '89145003590778773431966257871882486.3162347563616628086057549945343341', '9703'); + T('1197345815215160429787134483429457424748454,3797', '315339956601306407634220301140231083684.08058994774186577044230365470', '5784'); + T('423735152100855061347214859430967270991323541,10000000000000000000000000000000', '42373515210085.5061347214859430967270991323541'); + T('24083749929262503747426239253781575649811815722386688065407,50000000000000000000000000000000000000', '481674998585250074948.52478507563151299623631444773376130814'); + T('5303019589668854255151682937590376324897,10000000000000000000000000000000000', '530301.9589668854255151682937590376324897'); + T('85737211216718643688831414562125117156828541666351591,1000000000000000000000000000000', '85737211216718643688831.414562125117156828541666351591'); + T('528032868848420465249059811366153020793348383745543,100000000000000000000000', '5280328688484204652490598113.66153020793348383745543'); + T('1866752363992468250754020414,35', '53335781828356235735829154.68522878762736138731952941267', '47'); + T('35716735,553', '64587.224236228224605', '625'); + T('217921488209893967858247239220161357646029,31250000', '6973487622716606971463911655045163.444672928'); + T('74900978196398249235645033181449,56659483', '1321949552494120873564007.5145311332967863901290698034953', '95809931'); + T('4181810551795274201109494238031,6850', '610483292232886744687517407.011824823463664815517814', '9863'); + T('173659759502325661822,36351627', '4777221099411.194492670163016336584109466723444167542', '40565652'); + T('975617306643846126337774473247881968707228143,100000', '9756173066438461263377744732478819687072.281430'); + T('107162744108339267900049017055818023,400000000000000000000000000000', '267906.86027084816975012254263954505750'); + T('172824702408627980142888156188664041173157111,5000000000', '34564940481725596028577631237732808.23463142220'); + T('4661,1000', '4.661', '725484239'); + T('85630686880,2563', '33410334.3269603915296445267071067965485682', '2749'); + T('3650614799062559649462274868183699,1000', '3650614799062559649462274868183.6990'); + T('228678,30631', '7.46557409177', '61028'); + T('351824463570227805968918689708954570800044191,500000000000000000000000000000000000000', '703648.927140455611937837379417909141600088382'); + T('488087329866628899580567813575317229184103113,100000000000000000000000000000000000000', '4880873.29866628899580567813575317229184103113'); + T('15364099762357780872271701893453303984731614629318015521954234513,25000000000000000000000000', '614563990494311234890868075738132159389.26458517272062087816938052'); + T('4191173857019885158075164088272787562741,2000000000000000000000000000000000', '2095586.9285099425790375820441363937813705'); + T('891299363389677085414626945889,4000000000000000000', '222824840847.41927135365673647225'); + T('27963428850565537315601806701616541673936819779,10000000000000000000000000000000000000', '2796342885.0565537315601806701616541673936819779'); + T('571401796386043738811955172893452900347780492106439462254983,1000000000000000000000000000000', '571401796386043738811955172893.4529003477804921064394622549830'); + T('366690412973,10000000', '36669.0412973'); + T('12875015217651127,146130874', '88106057.70859296304489358653746605217', '448798288'); + T('24696724779197162265975356937723632,5', '4939344955839432453195071387544726.4'); + T('2985624149040533370866,254972185', '11709607261829.4947382829229', '310816918'); + T('205145083837395729,3524939951', '58198178.3205122545930144839521', '3928265791'); + T('792952739262136340728303572788453059228501933,2000000000000000000000000000000000000', '396476369.6310681703641517863942265296142509665'); + T('1320227697516244557850056741,15625000000000000000', '84494572.6410396517024036314240'); + T('37219214107473809786834936594940667709,10000000000000000000000000', '3721921410747.38097868349365949406677090'); + T('5575556813194831758332268154,56297415', '99037527978768328143.170839265', '60858604'); + T('249706733132241788592404281174823647611951769482541265522444180644991,50000000000000000000000000000000', '4994134662644835771848085623496472952.23903538965082531044888361289982'); + T('295382366467493833160483758,359', '822792107151793407132266.73533894441115275877029700384684359997', '368'); + T('295805371652277510092410438965536011,673881', '438957874835879791969814312861.671439022616798329375629138173', '2521756'); + T('5844753078362685375500413573063352892766873,10000', '584475307836268537550041357306335289276.6873'); + T('638178878607660002139073283695192160794,6631617', '96232770771843428554313870010163.759576887507235421822943361938', '8897582'); + T('22432938154584,39169', '572721748.1831039851864432568917', '41092'); + T('106706350515532352182646089407,29', '3679529328121805247677451358.861708158318085', '61'); + T('1006727,2905', '346.54974185099960', '2920'); + T('506555946665035572178858654593077910567905546515259539016213,62500000000000000000000000000000000000', '8104895146640569154861.738473489246569086488744244152624259408'); + T('5667347843,1', '5667347843.0'); + T('494398222717274926488483225499160,1', '494398222717274926488483225499159.98', '2'); + T('837794972781085082959914787434100934327883671639127,1000000000000000000000000000000000', '837794972781085082.959914787434100934327883671639127'); + T('2557367721562609913879206622896959,50000000000000000000000', '51147354431.25219827758413245793918'); + T('87843192004882899,10', '8784319200488289.9'); + T('19,25', '0.760207454590321431534164054874637479559', '39'); + T('147128541247,43', '3421593982.48867', '44'); + T('368946937,500', '737893.8740'); + T('190832298553383334575954,647488127', '294727100923942.246397290308923302', '2820909477'); + T('2073843380993671359645467586457708477,10', '207384338099367135964546758645770847.7', '90210557'); + T('142023011523698529831928453508889478348921,10000000000000000000000', '14202301152369852983.1928453508889478348921'); + T('131523705761031644569208707101725314627,20000000000000', '6576185288051582228460435.355086265731350'); + T('107614457850081791201223888580314663474567,100000000000000000000000000', '1076144578500817.91201223888580314663474567'); + T('7424203392370085459633617400060995558887,1', '7424203392370085459633617400060995558886.92627', '2'); + T('1150595474009947183249,500000000000', '2301190948.019894366498'); + T('107132561823987752087271387138926902232412924373,100000000000000000000', '1071325618239877520872713871.38926902232412924373'); + T('66592083512795708829,97656250000000', '681902.93517102805840896'); + T('2383461165589395538962556182433727539343280817092285028907,500000000000000000000000000', '4766922331178791077925112364867.455078686561634184570057814'); + T('4752189583313890783247219222481531,10000000000000000000000000000', '475218.9583313890783247219222481531'); + T('742246581737,1', '742246581736.60', '1'); + T('217582569729319048394786382926204527678365,278', '782671114134241181276210010525915567188.36330596838736296846323412', '353'); + T('8,5', '1.6'); + T('77516567,1', '77516567.0', '2529'); + T('187771783050301517419414783195509184163970763,5000000000000000000000000000000000000000', '37554.3566100603034838829566391018368327941526'); + T('75775984617422245988100638579,50000000000000000000', '1515519692.34844491976201277158'); + T('27025750270934149627304743094,27', '1000953713738301838048323818.295980629760086538462', '55'); + + T('45331,5000', '9.0662'); + T('1,2', '0.26678469618283923562166896359509235073451784352063763', '2'); + T('2533,681', '3.719523969530026850479571156532323136048917552796680071910875141219321593975575609179027', '697'); + T('6,1', '5.95670176075546656061641857369584534119416380474162703019059921749378', '4'); + T('1611,263', '6.1254796583797468286994317214330688018450504512208169605280714777631573', '348'); + T('4575219,841429', '5.437439165988931940772741700237239451817319934504577438827546421794517317551497622237902', '905300'); + T('544,87', '6.25275513583617822405786324552333236913767738896504459666064910547852535280664715894565', '90'); + T('9398,2267', '4.14556674388769106671553518476960309922345613865422241156', '3348'); + T('3,1', '3.1912389255634557180255978654316265495460980977830957259345681346972112849133326200582984', '2'); + T('90833,188310', '0.482358876323596164805577916312592462921530658660338105311161525274025', '829071'); + T('79,8', '9.87749219827141149', '9'); + T('0,1', '0.0', '484'); + T('126,13', '9.695091451492871', '20'); + T('2344,401', '5.8453758518246010129661980734406695366765558069122949118835193553349723', '492'); + T('1288,2105', '0.611876458127545613370', '6810'); + T('15,8', '1.91843965975015244765459863481866326921442203181383237784729', '8'); + T('0,1', '0.409838221056570951533841', '1'); + T('1783,21429', '0.0832050036602382863605408078022770284912449098792064253887456750250300671442273197567215669397533539', '37533'); + T('45,8', '5.6372753722674653472810042478599375756026972396886320541634716311399615308115964737620290729', '9'); + T('3731,503', '7.41749596112475033273240678217035352204496655512439751763538750951822', '879'); + T('68,261', '0.2605320118176922', '418'); + T('1,1', '0.873516707890829872596691063080472230824856618229083662104844156119886415612785045', '2'); + T('298,5781', '0.051548', '5872'); + T('1,2', '0.493490546390034810538790', '2'); + T('194103,39860', '4.8696186653773687510967391401128197073966271363341369329403328795737499798898813154928081356102', '67047'); + T('8,1', '8.24255476352493964464539856548405279481376105856089797340403340770555106189715421415058338308', '1'); + T('3504,6943', '0.504680921122223324202661672653248024256463340120222953245027413565995719', '7749'); + T('1,2', '0.491444664060778917796646216056433250881566732430439598453611', '8'); + T('5,1', '5.174287049199459942513839348622840616091614563710554596545393655504425427310533622274177087224827743', '2'); + T('48,17', '2.8244956913919378299574044583308527', '38'); + T('13,2', '6.5123694703010445805148101381793203139145534810051830232704726181238111389305273667', '10'); + T('24566962284749476680485,474039', '51824770292633046.39593999650204923557888735082449292', '494735'); + T('3368493619886411272795065960341766914829350143,646', '5214386408492896707113105201767441044627477.00108781345538244652891489457688743808616951764106898054577612254593670957661783381212694042072880', '646'); + T('2586853155389978187,4', '646713288847494546.759357782181814033868900465999081587869086726952721777767314153318', '7'); + T('7790857,1', '7790857.0819506998029689765', '6'); + T('20316021176247877123927349918982151279842758053,328679', '61811132370026308720445632118213062835906.030056681445118198111988670764482507178630313908793827175849924091992', '379056'); + T('1859,400', '4.6475', '506'); + T('3049623920905,54', '56474517053.79685033296077', '54'); + T('955619588917617544364192167390384622044661,1', '955619588917617544364192167390384622044660.58683083203739003688389119086331771452663428', '1'); + T('23729431076324650550683769,2', '11864715538162325275341884.628306443723097500514117908401946557366479217553160881729', '2'); + T('602177639398434193,12', '50181469949869516.0836841857315775159797349427875', '57'); + T('140119378421058440906693944186090478181701459,23487', '5965826986037316000625620308514943508396.196151063587153500718548824147376690362082681', '32245'); + T('7923555977836074006224698706360493883275129309417457,87511', '90543542844169007395923926207682392879468058980.213424597970479050473902729928963099224064941742', '92677'); + T('54774151891479696845053139444,1', '54774151891479696845053139444.32158102581962967272783934830487680739269', '1'); + T('19487924786960507453065915479,493', '39529259202759650006218895.4949277990322529722833768257687422896', '761'); + T('140444,271', '518.243545484623519007809525661667018545612793583718813418801027794258962294070595146', '447'); + T('448303887586360873569623,41995', '10675172939310891143.460483390962390167622207695401198601781636467015533654852801916441417159108770772582258763991743677', '93301'); + T('5308934360728177543766425862582,19', '279417597933061975987706624346.42105975966853513862473278487385291152772263985624372', '565'); + T('671757917955898917816836249302738,1', '671757917955898917816836249302737.83748346114250347811329609441825552892855517748573774083', '1'); + T('6923438,7041', '983.3032239648939942067850769366628571834182477091616462640', '8574'); + T('8681,1', '8680.554499202744390742254279390116166894742281104651898357648636131885616626172960139623', '1'); + T('8296090754,1', '8296090753.77808799719854507879129386685898155948713328498119893342154782002735', '1'); + T('449550842508002469586005256134656634,263', '1709318792806093040250970555645082.25858528116754388519315876056635084792675358257245998246599064750318560', '313'); + T('2384258830294857351266823482459306002060,89', '26789425059492779227717117780441640472.584265827825756685558321547464547903622405705748281747905025875364873', '244'); + T('3099059767,369', '8398535.95393019688934', '716'); + T('1118567,8', '139820.8675991643206836269', '11'); + T('54501975717322825161701857159922629,617907', '88204172662427881803737224468.9291899913754653160726311160386', '687952'); + T('292065600267078038277,360587', '809972628705632.866068382943176993810432', '473708'); + T('60865545773557068449101563,352490', '172673113488487810857.33372010556289892591424474886122627772863302106575690', '362845'); + T('43910364284205515720513,57', '770357268143956416149.350857167011834016095423796125853', '82'); + T('2768,1', '2768.0056248196618573', '9'); + T('24707,61104', '0.40434341444406601572079746049739999661378', '138159'); + T('62398,1', '62398.049758341992', '3'); + T('106402023318778195146268840340215196296057694978,1711', '62187038760244415631951397042790880360057098.175336027856651274924796443646769049038890419014107906', '5296'); + T('0,1', '0.0', '50251'); + T('1,1', '0.977479149688', '1'); + T('286761116711598046630263181694725313446508186,9', '31862346301288671847807020188302812605167576.2167633900367016409879668147081261089855665558671456', '11'); + T('493854667771423,1', '493854667771423.254959180508897738136194526024260', '1'); + T('59770,50369', '1.186642577786729', '657935'); + T('50670898227060364508301169119,2', '25335449113530182254150584559.576505095152042462067029896885530025096832963272421507985849118924294', '2'); + T('4,7', '0.539885108909598446106149715395519', '7'); + T('7436629,41', '181381.195088', '90'); + T('31167367322965637719365091694651,71', '438977004548811798864297066121.844953873132264903410589240583520033403555493637587973009095', '84'); + T('2598472288366433446623870668432105,96', '27067419670483681735665319462834.427090009020254549190095557820154764669675729935', '626'); + T('1,1', '0.922067456510097025954699039976943', '5'); + T('294229548281191410,241', '1220869494942702.94605133401949538', '427'); + T('241625399655500291,253225', '954192515176.227825056771711519082815948456167', '682290'); + T('1195655939518580983871186713470668235614408053376357058667333,423677', '2822093102808462540735481778502652340378184450362793020.78548752891313966613182857481605202157821315686948713904923560', '424333'); + T('2618811517,1', '2618811516.931208050937507288604652795688621819503341112255782020992459900662114311111088545100179', '5'); + T('4131144162729913,1055', '3915776457563.8985781325507805186370493303', '1489'); + T('582466848848638,23255', '25046951143.7814663542320116521870304194984491696195', '27057'); + T('6455766824570,83', '77780323187.590347796893974704799', '265'); + T('53455832886999353767497945728788540143157488885248223281,59', '906031065881344979110134673369297290561991337038105479.336253413994200448040788970880967169296448933722265614219121230464551', '60'); + T('34684817227394711572160619503375408,71983', '481847342114036808304191538326.7633746855360502891294804519887966739426931804349338553', '73666'); + T('170771191765582963,51940', '3287855059021.6203889101733530', '91639'); + T('59489,802', '74.175817224433680910672', '860'); + T('79898665639094718393482676981,4', '19974666409773679598370669245.22684378060267947984678026612709838', '8'); + T('7517924493744156919811183,286', '26286449278825723495843.297196347604166787095605578145803015483232937733237769524617002712850157698634151602400', '475'); + T('27132562808975269,342', '79334978973611.897660511616985808318420102330091', '4677'); + T('60272291702537718907780263,10573', '5700585614540595754069.8253097510065828573367376877437092127528369415566888', '94840'); + T('1,2', '0.51', '2'); + T('216897821528130673257,53', '4092411726945861759.566036761275728746134069907357892874', '94'); + T('3163857791132342485290267882552370855322887,545326', '5801773234968335427414551814056859301.26729149169554685226093744763268316765389373680859617450067621955512471523', '888336'); + T('31893079,51', '625354.490182800115515495968616197567291321495007057703788292149', '218'); + T('45189870731246404,15181', '2976738734684.566497593258376965224195020258733405076577662', '20203'); + T('239861,472', '508.180083770484715', '880'); + T('33499101710863017,2', '16749550855431508.69914410240779698148517248391235817', '2'); + T('2141207850036582856465048433,329419', '6499952492225957994120.097605177654579789782944540260769802900107062218301666704054646611', '330997'); + T('22193392902987826122559599877876897,58', '382644705223928036595855170308222.362212252887839179829725912772009160714747747554090412224', '62'); + T('90543357024529043405978879144258275090780578649,2', '45271678512264521702989439572129137545390289324.6726991725126164245656717069363903985212602605238565780325239301101476316356964391514481', '2'); + T('37600782476781126884139203431600472982966839780023429919897,1', '37600782476781126884139203431600472982966839780023429919897.24287512927437642710013783433910340431924976940125246127078', '1'); + T('64961559075,8', '8120194884.3724681021129254915288817', '8'); + T('620318090519481009,8560', '72467066649472.0804906532075275', '9472'); + T('8163482,849', '9615.4087173', '869'); + T('7377,17', '433.9414759956934328436361859748327855391332306426', '49'); + T('611,3', '203.6725705400', '8'); + T('89171,1000', '89.171', '55217'); + T('51270493819699846152993496,65', '788776827995382248507592.24720791353857126515444468431677377534114643955968022584267028953553278893503', '65'); + T('952437397670186727964934896572895455572,2039', '467110052805388292282949924753749610.383521318013377289176993384359404280274806527340713677500761934497938212', '6194'); + T('115107039410294795197,2', '57553519705147397598.52569349659929993375319668989846544486260551837544', '2'); + T('22,1', '22.365923', '1'); + T('1990972334583731,2697', '738217402515.2877271240567969345615', '8197'); + T('85750361597402603631603273118666,21', '4083350552257266839600155862793.619499612682355814294752644386270178753962225708928418572214290985761742439416042', '70'); + T('8635686977961,268079', '32213216.9172557343179410005696124075', '549886'); + T('66531984494429,15', '4435465632961.93350703161015018', '61'); + T('0,1', '0.18167201504679', '2'); + T('10529,27', '389.9630', '38'); + T('2934260971563580194491472182109802377517454,5583', '525570655841586995251920505482679988808.42808527488170902078803003616929756884458514431718406108322520', '8718'); + T('5108200665966863073353288070176030051511632153746,7109', '718554039382031660339469414851038127938054881.66352511082081319890207684459946872434550056671', '8537'); + T('1,3', '0.3465753923796479102166177077330555737271920233165265624927052833', '5'); + T('16875360180472543035698945274090527182525755485603,531840', '31730144743668289402261855584556496657877849.51414523164777408433594873822056099197640611496223398710564', '965422'); + T('114634251053546388025309,12', '9552854254462199002109.0865339064408202873873764199', '18'); + T('183409270415172374488271,315', '582251652111658331708.79682520032387306155850071007553282614176099535489744326559', '2814'); + T('2,1', '1.94', '2'); + T('182903874405130637649185200486,34217', '5345409428212018518548826.6208609757260577676285922746405052706839876854656056193106274576096695371939222', '61801'); + T('5095786559079370391313919886663340905109333948827,1', '5095786559079370391313919886663340905109333948827.456737121375509845692166705486257168106577499425369656222842111805457906', '1'); + T('781826702775423639656188,34805', '22463057111777722731.10725470482914830289184811512575254583329325', '310121'); + T('17,21', '0.81', '24'); + T('642449847968682862604540,1', '642449847968682862604539.50719286706858188848922666523', '1'); + T('2232932,29507', '75.6746534717435458614870249', '35207'); + T('188417858747526768690461499725073001733,3250', '57974725768469774981680461453868615.917846152487377706532523813340718234379', '80249'); + T('2512235463,11', '228385042.090496856693737836687110835528901075269402072', '104'); + T('844375191952747415306,142731', '5915850039253893.09474465953436249', '562376'); + T('5398821357017249826283471756217066750564780611585,71', '76039737422778166567372841636860095078377191712.464788995235824488719493358582451477426725287196562573274150399', '20788'); + T('2678627417245,1', '2678627417244.5539595554458498441512623087660882055', '1'); + T('5937979,886', '6702.0079', '913'); + T('93,5', '18.60', '58090'); + T('726330087886628639542796583938445152543562444469390135628,1', '726330087886628639542796583938445152543562444469390135627.99091884025141082950358349062777831341655621667599142195853205636838136485595', '15'); + T('80273,1', '80273.01388365199', '14'); + T('65,4221', '0.0153991811534756810765664526560', '9509'); + T('537861620698135920565351,1', '537861620698135920565351.273301952640253473856107229450', '1'); + T('21589045207819,26', '830347892608.4230723287683895554447840899', '972'); + T('577595426226192934612626685,1', '577595426226192934612626685.0286363631751288945392409001532685640518541279892202642453992056486281846257604', '1'); + T('1675,4', '418.7484751712328113764323953', '26'); + T('19556084872373,345', '56684303977.892786055289803608591940101556713', '352'); + T('19,7', '2.71902394', '9'); + T('5529474308079205564524774009772451131,1', '5529474308079205564524774009772451130.51761287042846642080574332180546078965538812745557608038', '1'); + T('209346348003047912995736,11471', '18250052131727653473.6061372099726072866405051', '11515'); + T('776986810,1', '776986810.1594219281755754257102', '1'); + T('244164980163078814691433439911704751189317,21291', '11467990238273393203298738429933058625.20863275581273538021661214252911409518043401674563445995768940072042555829137104208000', '113505'); + T('1335963025004702580265523343526,35', '38170372142991502293300666957.8857742784242579029128174713642', '173'); + T('29021817758099544970572197889,34', '853582875238221910899182290.852626803328881395374231956097046035', '36'); + T('25607,5205', '4.919692611', '9786'); + T('101904493912965638284134197405,2', '50952246956482819142067098702.5713155960069352658952883488314532333725811763112', '2'); + T('137744409497385418682848482707483773,4443', '31002567971502457502329165587999.94890844640229953492819622422667457964936363221', '4647'); + T('3153045199217207368076364837,1', '3153045199217207368076364836.85821697552566256162690119145512', '1'); + T('1,1', '0.98820163097883359337765041974973089352398769777740690629811505014740114696', '9'); + T('6347903215,1', '6347903214.98333714357446671154140415601041950', '1'); + T('7865439544,1', '7865439543.64842980606939915292766451085112', '1'); + T('3237690453781443948931054435307536847022633061,63987', '50599191301068091158064207343796971994665.0579180143954472511934222589835395025939549529049341055670604818599814635787218355355744623771', '68323'); + T('16547,500', '33.094', '35944'); + T('198,25', '7.92', '879'); + T('48136900151439,5', '9627380030287.78227662306223327607211090', '8'); + T('810188023876443978252916,240291', '3371695252325072425.73760981476647528684572725155145126012755201643744911640005908457166013810637', '594953'); + T('29122019,133', '218962.54888005640775', '570'); + T('42600929421,11', '3872811765.545957776549217228', '37'); + T('1835567,2179', '842.389628282959984577403026165282107385446131435327480129911', '9427'); + T('10715045877924720610637328562303816539523,609238', '17587619087983219383290813380491395.0533666645856507178226823958979342511581839203713355424821734358638', '614310'); + T('5255724839155,1', '5255724839155.35294116304683192133028279893695924503895137408737492483521789962049', '1'); + T('1,1', '0.8978468872480801693946442849195311956942575461556562092198261658', '2'); + T('262004018028579753610099210362465283,291450', '898967294659734958346540436995.935093498025522742208259700262919468727383538368456777271618508283980760681', '449006'); + T('7719603971110112789459092487129510355,11', '701782179191828435405372044284500941.367257069803941074325532535698775501470540336095', '11'); + T('191185328300455108074421,29218', '6543409141640601960.244404134198278885577292621401052797106803852078359839960114', '36394'); + T('10465166381522661,74', '141421167317873.7972970342414003516709434322011311188209619349951980125136084535342139027758', '240'); + T('7902040135126365394659608,1', '7902040135126365394659608.077726021750747291286722149059246102412021295790775165293274649572871360', '2'); + T('116492401903663116224172913052825042248229707047214,155', '751563883249439459510792987437580917730514239014.28387332355496359942769428955017512246414862817961697422654477855510889819244572169952641417683018', '190'); + T('1161,2', '580.6213', '2'); + T('4999366848067334,51', '98026800942496.74502522271320672697996', '83'); + T('155052967013059677537669297640306143,21064', '7361040970995996844743130347526.877278769440031446596394275560016869303377072002659486154804941895737040887923', '42555'); + T('4915589395,87363', '56266.26140356895501876786714596805105223390662', '96564'); + T('1996814563251707684865255053446343344056628802563603747544300835419,35111', '56871480825146184525227280722461432145385457621930555881185407.29170344881337650276681031440473191594935108291821236856625185470036', '36542'); + T('350611450,530451', '660.96859087832849141227', '828317'); + T('595025607,730', '815103.5712333824167995605685', '994'); + T('91,1', '90.9474373813', '7'); + T('520640397828785313386029881258886527,57796', '9008242747400950124334380947797.19231434781804453269843126509668', '58523'); + T('1,1', '0.7', '1'); + T('2432192303,2', '1216096151.53824349736', '2'); + T('182088255527725530185924136198820811105,5994', '30378421008963218249236592625762564.415248549875433131587553202118349363105537060676313739107816391730307', '6684'); + T('2852721959,44162', '64596.75646483388', '93026'); + T('22240697755,6364', '3494767.08909490781227389975332975981042527092609989513703885638542988746801587017415743745', '31237'); + T('638,89', '7.16857182142575386243468931653698455419954180851', '119'); + T('6365209086547966173670265664612892931202087175837077590,1', '6365209086547966173670265664612892931202087175837077590.307044947141883547127069233591193089391933585385866946904448320602686297092942', '1'); + T('447415936707462873637430969941367936988468633406659,17686', '25297746053797516320108049866638467544298803200.6479136045407721264362934913054716728108054995868628807078498679271321502402341540158940227697648', '41076'); + T('556766636479654782236989106,6405', '86926875328595594416391.74176424353622475555994', '9157'); + T('16,5', '3.1934183459202528284347244885465199377401', '11'); + T('69366814480303229226256659588662,1', '69366814480303229226256659588661.85385468147818494724215139782478923263860687041151715994378816519729624732503782164002', '3'); + T('206872032674988736528870510540636795271597443,1590', '130108196650936312282308497195369053629935.4987418677695164526182963222692423472284907274366595734056060718094172585913', '1956'); + T('3296663,352883', '9.342085053684726', '920944'); + T('1901467916531,38371', '49554817.87107450941333', '87559'); + T('35236497328086505353582711620562,1', '35236497328086505353582711620561.9401992755513250318288838292367937207', '1'); + T('2156393081917549337270143486668378869841014072477,9077', '237566716086542837641306983217844978499615960.3918695610681834957819094833282531753966844370947863377761477800766935462547138240866128882311', '40639'); + T('80227083104542559289996173436021300960849044229167256111161292357,10', '8022708310454255928999617343602130096084904422916725611116129235.70048092770865523338951907230464003175896000457756548821368253282172627341860630323893179952355', '40'); + T('14646654367694222221940854473824917,2', '7323327183847111110970427236912458.2637426177732172114494620983511178446999858023257859333622402678207150389963999824040809470078503', '2'); + T('2,3', '0.663', '7'); + T('27963875636216786940514230252872638062266663119606641289638039128214075044862928694740648165,713284', '39204406149888104794884268051537169012997155578432491531617194733393816551139418092569.927497322247096619019101878129041174149753190001476011543505686258781332861014187754125', '898421'); + T('11522420634707,298017', '38663635.41243284778334005538792', '304106'); + T('157263777436938477441584837,17', '9250810437466969261269696.2904128954351819175969727761318768772961877204484176247921068491788133398523250', '23'); + T('2276529,37', '61527.810269929938376521343109850668138767761631527', '52'); + T('4677043,136', '34390.022052748042318976850337684966011768593413342120365', '222'); + T('49253974531233847037400608287727,1', '49253974531233847037400608287727.060540048192515048222477969304021589766722976717090718681939735386', '2'); + T('2160607509685172123,79', '27349462147913571.177199397582134523253856176684228053461559176285030516574874756952', '105'); + T('78052129404159796516380569,250594', '311468468535399077856.53514848720455080879540146109259080789155707071914631548609', '287111'); + T('40103944258853846056256735013082291791174170619985429502015036,737', '54415121111063563169954864332540423054510407896859470151987.83718927418708473127959038816066084224533120453216547984773003205060234', '775'); + T('9213413,115215', '79.967131015930047430988598240344339327429', '146382'); + T('1313141867085165037876810634168452559775493,28', '46897923824470179924171808363159019991981.892596651603443078583217313699611602451988188888733555496625642547664131296842', '37'); + T('8533218224569738665099332127984434063538646794116239739804343876879184515887519,24546', '347641905995670930705586740323654936182622292598233510136248019102060804851.605923571866483092045258463240562511296361654119265411211336042019198176927208580711456953', '79843'); + T('214162254366433222852,219', '977909837289649419.41552439968900800332241887585088624500224888', '461'); + T('1524141790335346850,3649', '417687528181788.6681282293544866931614625951230414', '6410'); + T('8305836543976713538118348277180340222586336935040977205971736934,1289', '6443628040323284358509191836447121972526250531451495117123147.349883517025494372135199719073787587581983279739058143878476420396334557651148941312712594381002', '2421'); + T('12625344856297573143960857366368117442436018000143718905329627,17413', '725052825836878949288511879995871902741401137089744380941.2293688631111047258667617297890350092651444230980392383355854871853724988293848', '29957'); + T('49799008287031995307745299546,201', '247756260134487538844503977.8407984495287628804649309589792969473029', '886'); + T('44230,1', '44229.8640940746684332711646269', '2'); + T('695341392387473187615708533688053494612321911735732263004072039989,12', '57945116032289432301309044474004457884360159311311021917006003332.419123618616690370149051021044082250337110267237814259673029440937922237595010738707535760151768', '12'); + T('1048610192448716663976442300874466291435985376302590107183025006833039111667021956,3711', '282568092818301445426149905921440660586360920588140691776616816715990059732423.05470231283500539106621844843522303682651413708748707464182560598910098632280380429225', '4185'); + T('564179730,41', '13760481.2195468173', '99'); + T('1535358,3677', '417.55724768958258887221999802356746577772806585929098618110903690609575310', '4909'); + T('9432220623393,1', '9432220623393.0361844246328616666243628939101171241757', '2'); + T('2564823,38662', '66.33963581834778293420676990546', '54629'); + T('1,10', '0.1', '5209'); + T('45861865321787548161276827663395729,7180', '6387446423647290830261396610500.797910864788713778286585490522140448230159951171', '8297'); + T('19345,2', '9672.47045', '2'); + T('1621235027393185648213757671997956512719559180709550368213,46478', '34881772610550919751576179525753184575918911758456697.10858900988357153434887154833422609206799928958299650146498864771982234211', '152688'); + T('1,10', '0.10', '571'); + T('14037083559893857042646225061800058376951690953612422931418795682,15209', '922945858366352622963128743625488748566749355882202835914182.1080938918800941797499465697485803927015797682325657123828892678', '74299'); + T('214990,3', '71663.30911497342580428530022113794390987325723075', '5'); + T('307488726044879510002660981395,529', '581264132409980170137355352.35349658712969215704186070305948528667158789544493835023232021586095779408143518', '1469'); + T('7986140723,12950', '616690.4033204624183575117582891638', '45213'); + T('186442582640609698457372644742287508248773821,608', '306648984606265951410152376220867612251272.73190810532616003961033029139820173162304625273178016', '636'); + T('402342388451303346208638031,162144', '2481389311052541852974.134294207606755500782850967202793230491650542666651668050739706230056896340969275037488', '320928'); + T('78241853523003572280986839112347001594408862797249859718,8531', '9171475034931845303128219330951471292276270401740693.906693228378227059405060756165776641079149233773669394894276125419046799506956656383', '12127'); + T('400,2969', '0.1347255413647743121776508902102719647076843003868088', '3453'); + T('3923238860902840839626291104694492525371269916682029,446965', '8777507994815792824105446969437187532292841534.97931381652037574964251891911468943081965790985704', '758290'); + T('35646747251,457', '78001635.1225357380236558357960166239621978669699089151772761258494596715203598593743346261565262019417704', '706'); + T('2683468334240429143171526,38457', '69778410542695195755.558831942122856930461609481624295211857604995876954854137975872813613', '199109'); + T('857821143787449574697977573812019342762480425225461812882950230507,2', '428910571893724787348988786906009671381240212612730906441475115253.25776495579890393989612727541338942514948359370113611786812146845315324593620', '2'); + T('201510238869457784262139645580084027788,1', '201510238869457784262139645580084027788.433065800897233736582903597431923327846329', '1'); + T('38608781052273175033830581491417961344934552,7', '5515540150324739290547225927345423049276364.575944943254543085974802343286568634911541631917053639543590794169', '10'); + T('292623487,68388', '4278.87183424', '74336'); + T('793792872031,9', '88199208003.45664265953995372', '9'); + T('10201,1338', '7.6240657658623830734267630', '54376'); + T('22992066679053461303,552597', '41607295513825.556966469235264236204961015671182279735261042008326101516531', '606489'); + T('314113031689,42767', '7344752.5355764958912381877823', '945136'); + T('22786552661743835954280087582255152144518703,34', '670192725345406939831767281831033886603491.26455918123167096367780477819074132459587344526801847361091447403001267800', '64'); + T('17573479348385910412048883205603677,38771', '453263504897627360966931036228.20347682580886838529942674548009547499946688868816182510007585234388', '46381'); + T('75473594247,8350', '9038753.802035928500', '73489'); + T('261517467644150958487,5053', '51754891677053425.3882842133773049001841242098677038847975074900593966523958', '7047'); + T('7134449311548606923639346547,1', '7134449311548606923639346547.112804404073069945060714830706555901856818370048110134601278840469', '1'); + T('37806932836871856297021727733724124238343972270363,43', '879230996206322239465621575202886610194045866752.62806530892044737038187480030241392596263055431188445162729153784215811022', '47'); + T('7333274067095990846,1', '7333274067095990846.351138936980520182083044922', '1'); + T('1216547636340968,255', '4770775044474.3843159801874529573386574217', '767'); + T('504431408656563019198096470328071071180957480250246834023199409,5242', '96228807450698782754310658208330994120747325496040983216939.986455552080186728491640321801261184902364920421299986856683243744', '5930'); + T('11078314997991539069143123025050347457581,2', '5539157498995769534571561512525173728790.5320269718590661495828504888068010731730753957949', '8'); + T('1564271697783336061228018441408289997,3440', '454730144704458157333726291107061.0456395345856333688836200385200217', '4460'); + T('186593194550751772022221789989,2117', '88140384766533666519707978.265942337331545158189132168003333366607627322769794', '3564'); + T('7628876005219,132254', '57683518.1183102212280', '310461'); + T('85478687995924280983954436,2811', '30408640340065557091410.329420030100682263063726019261554456880639675662867805458887878168290', '4191'); + T('6470726792910130860277335858754095217788330802569343716026302897754173285980528060,691', '9364293477438684312991802979383639967855760929912219560095952095157993177974714.99276540727387009268720823298457991691888717815907421435881615376920831023127122321923253385357011', '939'); + T('4523198057239453672050446673969751,1', '4523198057239453672050446673969750.982888715114504843151109238914542962690753455459880331059163673987075278756', '15'); + T('73447073503191914407442232,2281', '32199506139058270235616.93643140080846067688709303', '6162'); + T('15,2', '7.68', '2'); + T('78438145023100581358518585507076222143917169875433,211', '371744763142656783689661542687565033857427345381.19905314983923110968122150777959792708922490953099', '571'); + T('1,2', '0.5', '7499'); + T('1150752865721854191422680744753413845124279744986,33211', '34649750556196868249154820533962056099613975.6401794585917699904699257964671446961247221389248149631404474350964027899932797090', '288970'); + T('16076493965732650145955199661686357106768139698004095413613703910,17831', '901603609765725430203308825174491453466891352027597746262896.2991419437676397998410373969724327013846829822983652684993660181094261958331254042736453820712', '526347'); + T('59952990463187638,6003', '9987171491452.21355988365672831891871115833105277946211529145', '8517'); + T('437481101068975804785076879586290013500861083645889947003529075931870456655071,479', '913321714131473496419784717299144078289897878175135588733881160609332894895.7640894704400779282366881441709170514130408442820253311598876929674239971303006388', '571'); + T('942821117939,1', '942821117939.0565371890037804928059719232795905869562990', '2'); + T('2935001420859380000157762707121042737,1', '2935001420859380000157762707121042736.786463962708882551445456874895215017511777450740305104656019625159421350155320318', '2'); + T('1202935830992033229631564824298161983619110510518805373783051328257731091663742,273', '4406358355282173002313424264828432174428976229006613090780407795815864804629.091573522116851474330839252731895239804995755007457036768565079804281386796112572872744', '988'); + T('214575955168277704587734045462020765792071421909315615775398203182854444483,74', '2899675069841590602536946560297577916109073269044805618586462205173708709.230122092385266218497768440824927539562064322829675284011146374975633484236446356139989037833789440', '77'); + T('50045992670555904787210785904349993086628482049506558835722589483755503086379483349,2470', '20261535494152188172959832349939268456124891518018849731061777118929353476266997.3072874276195536175288188310939039502675866973828697179032965565983562956493102277329078', '7679'); + T('108,19', '5.682899045', '20'); + T('95920780265488699585348723900916407585247076296,1', '95920780265488699585348723900916407585247076295.9722011782231104515584864013490244939631472605433519900458718986879', '11'); + T('553600997,74', '7481094.55435674169522', '77'); + T('144433407482676852197679175735237771398114384568707349,171', '844639809840215509927948396112501587123475933150335.374342960334521507675621856380306927386460319339374458276206878079117', '173'); + T('6868766813211978712457243,8542', '804116929666586128828.991219864750604264260222291459642492956899214044143458845929414919104910105083368993', '8858'); + T('1208445098905305130465909241337086457990767085995,831', '1454205895192906294182802937830428950650742582.42478544512467032570845257550424907273378267749042187915529412467328062395677178', '847'); + T('71541469,14', '5110104.926816824', '14'); + T('85305914129449392893425526497554757292362463826540038888586101763289670816704873,1716', '49712071171007804716448442014892049704173929968846176508500059302616358284793.0495345021247989668017828545182900215671406666272584768815635473370187911747761623186498587', '1955'); + T('34910355329147790705808594414928780898400374709520341716387506640744,260471', '134027800903547000264169886148280541397700222710091878621372462.349912274303723867421927305257380152124131927422266182255099973219', '500555'); + T('2443149449559899,68934', '35441863950.44388835629755412356920533972949735', '72105'); + T('10235833030110696450984055472910862445487735415,46713', '219121722649170390490528449744415097413733.5520090766481292920641152585608933353122716914574714147115271201821924', '81445'); + T('2412282,65', '37112.030602327213004965512285789841303110099812346432158134090838533603521058186494', '68'); + T('197727336539381948963943498780602681817294393124640440907866490545352,205', '964523592875033897385090237954159423498997039632392394672519466074.8877983219803431837713331765228187870876208300323215077046996150117195232993', '319'); + T('15,2', '7.5', '68659'); + T('29693788745631893429990333506515902428051472103452,706235', '42045195643988040000835888205081739687287478.110617570638404585755831163301839410670137680785270602419771', '744617'); + T('73297180366617098,1', '73297180366617098.3144078057048487400', '1'); + T('1183788966238,17', '69634645072.82347802778257521139329875246046832067292347716607881216167245956951211505074357948', '580'); + T('337857977447058978741478048573512513964055992298298429352553483782737183,5899', '57273771392957955372347524762419480244796743905458286040439648039114.626716392720723625021095618796943542634113675561622196537826531821852407006351', '373605'); + T('59745671209268865703423430945,2', '29872835604634432851711715472.453145834917249137580363606422723099328289141421318324960362064961', '6'); + T('859671161301,148', '5808588927.709477965543', '158'); + T('327826595930709915652253567185,117', '2801936717356495005574816813.547008571112938049893857162154471', '2682'); + T('208334,583', '357.34820', '985'); + T('417920309434403655587245399148447,5', '83584061886880731117449079829689.3970122523691827620394154188956126026896151043485425601', '11'); + T('332161,36', '9226.69454628762590761188160545639599510876405724295839599630525', '95'); + T('492939727089,697975', '706242.669277552920397338754', '908453'); + T('1060742245237932,1', '1060742245237932.1437804740224071805053424640287668142484799633802423091065073873258946063378900279156089046', '1'); + T('43273220994074199614838155038679231161,1576', '27457627534311040364745022232664486.777284267145378185527688171290545838090904705362680992', '21199'); + T('37269,200', '186.345', '5642'); + T('10102884,718535', '14.060392326052129', '967773'); + T('1219084532009380132581392727265570983021563997,14', '87077466572098580898670909090397927358683142.64373446162321728317853561861789635745516311592864', '32'); + T('171,307', '0.557', '460'); + T('356651164544964166146468975252,5', '71330232908992833229293795050.392421805278026288006060731316131740551778431198546677842557461594293258596467893254118405', '5'); + T('2206833385925938227905409311,36', '61300927386831617441816925.3056000492614958215838075939699', '95'); + T('2717956424176196011003730333667350,1', '2717956424176196011003730333667349.7306970440606935095598372413709729268', '1'); + T('5785393455764129633036790208876423850860836737707710175673874728149225089964815672236,7767', '744868476344036260208161479190990582060105154848424124587855636429667193248978456.577314278497503536146945605079240467181174559062273212358677378627319841643644350778240', '76564'); + T('1161,5', '232.1980', '44'); + T('24726923024624909624212763782,25299', '977387368062963343381665.8279773904190662818049691495617687914', '309921'); + T('90987255907509062168543931363687667620909919141734393421873391,368455', '246942654890038300928319418555013957256408297191609269576.6739249026294236002555892691179015779033299594359428884187399481034374064629205214720091827', '444997'); + T('6107945601448519394102630769235213774292217827152610948371675819819794650452964,1', '6107945601448519394102630769235213774292217827152610948371675819819794650452963.911972351804484891326252430492737744797210771982506527128972981079255477625007979629605229', '2'); + T('60582631603433937,8795', '6888303763892.4317225732362317829730210699185957', '13023'); + T('924269334814001,207', '4465069250309.1835743819175830981731288956258299854260859884448829672511937457501', '293'); + T('6639539158116313497,206', '32230772612215114.0631244318936864176600857945579315355413334651806017', '294'); + T('5041241320711878795159,22', '229147332759630854325.410203402656522969600', '34'); + T('583,1', '583.3709375101662808436673731501019705754894240048302559234903760275308517229172', '1'); + T('78633259182155920440744871,101874', '771867789447316493322.58349529813193835020381', '205541'); + T('82102,271', '302.9594088297030760145', '393'); + T('14074604229494197,668215', '21062987555.64331390345832', '882097'); + T('38059055655073430300661325288520231229,4615', '8246815959929237334921197245616518.14279523235188926660945402784286683812836715240105189956436644363941258265156731324437', '9220'); + T('486761604513222981,17381', '28005385450389.6772912944793568949303', '31501'); + T('175551139999215326573815807,242', '725417933881055068486842.1776848404920362490446391323254203047651712', '654'); + T('83,1', '83.4546729624154107891414754194986886501010566249251149259469106168', '1'); + T('414475,1', '414474.886867910455898589', '2'); + T('10888695234363590494551796761105710263060721374178557358201,12', '907391269530299207879316396758809188588393447848213113183.416301978225238330934261320589911002579118705166590028299156884288694543667054408155068376964606', '79'); + T('286464034178,3', '95488011392.68165187332682534905110794125997507098491840188910335502196279864989624086867102546849244', '4'); + T('668447227940,43947', '15210303.955673880085109578181067218136526836139659839', '95990'); + T('1967,6688', '0.2941088588343008701843', '9768'); + T('75109477871,485', '154864902.826805976232816926890145049168468569260391930749888426437423962', '607'); + T('213183802966400860090647,263', '810584802153615437607.022810961591907292757102947541669', '598'); + T('43056714838957186,32235', '1335713194942.05633628090090583329650340', '42219'); + T('268353852074,5', '53670770414.80032170547125902473828206966175034334621779372380824973952480291058107718671403832311691055877', '170'); + T('2186335470375799,701', '3118880842190.868759139435558849448310039566842312194008045', '2332'); + T('57411860,1', '57411859.9022270896768046667038700171202296361618483869857700616072411266642815342383915741', '2'); + T('267977324713872263310162785716701711718,1', '267977324713872263310162785716701711717.723363678989761781788396613638357558534985574238', '1'); + T('1,1', '0.93975044', '2'); + T('5220050569,33611', '155307.8030704234564212140039371642554614853869565892270988882219659485221018', '40474'); + T('929196388431713792942501463987504635208031773362379819037,10', '92919638843171379294250146398750463520803177336237981903.6998915282781857375325494762319240056440144680509967422813830936344214429604941', '161'); + T('135189175314691708540514427,34', '3976152215137991427662189.029089859359115789727429472083152955', '44'); + T('178496793807305,3', '59498931269101.67341651289764334798299', '10'); + T('28953864542244521672518662959329064963,1302', '22237991199880585001934456958010034.533794189847734064794558196958783605867923015359980997857492', '7709'); + T('63453473492536727313152722,1', '63453473492536727313152722.117501523352379698983442205150925604583299973094118972659206526799924556265155676677565655996784819', '1'); + T('2354616796181372,3', '784872265393790.7899857377275372165161613720867003677895', '3'); + T('751530355586715733980909778114787014730961080,9', '83503372842968414886767753123865223858995675.55044820224824632303844521455280789663171560785577862318186544211959819', '9'); + T('22356002,299325', '74.68805478994431561057', '475984'); + T('1004346799,3847', '261072.7317390373573439501681537210331007400524043782883748343985532566718630458', '6781'); + T('153494881923896158957371,262882', '583892704422121556.2776112476168651952528665744272702680374729523657500274346100536469900767949261833977217955', '303274'); + T('914429817632267,109905', '8320183955.5276557027198219649678748529779134912036046830590971420068279283602748367072877', '158163'); + T('9787288468125405218949937571075629551994420536796208677387264,5', '1957457693625081043789987514215125910398884107359241735477452.8020344719128402729740667465646566172893416633248347553225784565', '9'); + T('972383851579928284342475475240744,1', '972383851579928284342475475240743.93833057061207062377573942707899328841206929761487155707619', '1'); + T('227161,15754', '14.4192586', '42794'); + T('24,43', '0.55814928', '50'); + T('86815,883', '98.318233883469928701242143703889452452189640274700389087359375180495206739', '1295'); + T('158102075545494626716142158943501696850901702,27', '5855632427610912100597857738648210994477840.8148706240869250708802459205761650371721955732529677375775213714657834564033767693895', '53'); + T('4573874572374703,123057', '37168747591.560845786911529343095322680071068130368028', '713297'); + T('94137508309,1', '94137508309.12944203063142389', '2'); + T('128263524729405205764013306079835664513219670002964257195470632782718792,96061', '1335229955230584792621493697544640015336293292834389161006762711014.03058473261439886528254630252502628596554777041358913090264220653599909490115329', '343998'); + T('62696361050395475983517,313445', '200023484344607430.278093445431579320407235', '369284'); + T('11477001729,2', '5738500864.606603032325764061', '2'); + T('6522584,7473', '872.8200187578967040279', '9244'); + T('52287796137932885846742481073302755432,37439', '1396613054246451183171091136870716.510376879576631687165374051269033365927122943423452', '44514'); + T('11042,541', '20.41035109316777251868202719496081724', '7581'); + T('3607458421641129939414052,74321', '48538884321270299638.245610258206316802894', '274601'); + T('5695785474134027899942879,1422', '4005475016971890224994.99226471327230623639080467989', '2042'); + T('8878654273655,9012', '985203536.801486935043294', '9665'); + T('65,16', '4.06247646638986069242804', '411'); + T('29908,3', '9969.299545', '6'); + T('3234129973440988418535787398987835234217977885694939183658,1', '3234129973440988418535787398987835234217977885694939183658.0555777579527219596665429746310422846678601273328325482789110754280233239741', '1'); + T('38763,524', '73.97519', '728'); + T('7,1', '6.56', '1'); + T('287773507776094924831763292813488774703439511,5539', '51954054482053606216241793250313914913060.030871977269534757984962396972028182875803654912773216689075089542071374319', '6975'); + T('135902709964850252402968509809,145', '937260068723105188985989722.82062844541535607143554252535789346214610335738887862350472', '173'); + T('12272393029782069191611244866640477536622317952693272516,1915', '6408560328867921248883156588324009157505126868247139.695038408447774384790132755871611355838250229705452357706632277610603203384972', '2031'); + T('2225,192', '11.5885417757514787571566159059881098551576095026723816', '9297'); + T('53371779627153865605630667958238412899341574421446540565563726321002579114955251781202163,5836', '9145267242486954353260909519917479934774087460837309898143201905586459752391235740439.02724468894046585153819806105344749411841071667196589490983824705161267037058650756988034162768018', '73957'); + T('2446436726419359505665677336229199860520232227,534', '4581342184305916677276549318781273147041633.3838917648266110125209840196281133496676870967557119215942174589504706059079700', '557'); + T('492176,8321', '59.14866', '8502'); + T('9,1', '9.01348435261992079442197040', '9'); + T('328435344544083927300588344986968685085,1', '328435344544083927300588344986968685084.696665368175202653355800835276350404235962273399764329774312731281859536060585323082333783861', '1'); + T('159247659795083,438555', '363119015.391645289643', '560287'); + T('6,1', '5.70', '1'); + T('72150594429471845730,319963', '225496680645799.18843741307358458329580279139701535416802994965032378655564757028', '549282'); + T('8,1', '7.95841526551959133597120', '2'); + T('426677,11', '38788.81813330', '24'); + T('1751990915929005698023297071945011392910508303508376261581982019497491952385038529603989010476,18689', '93744497615121499171881698964364674028065081251451456021294987398870563025578603970463321.2304564170567292002043552709059704140869790828468039869462307264644682137220664645749338191124', '21564'); + T('247438600592095556152258502462038301212815837584618493182,487', '508087475548450833988210477334780905981141350276424010.64065691758941436115799603577450664221966964524772848474790743487607130855363168196131673164233', '4945'); + T('1830602979532381493889680621382105980461277,751704', '2435271036913973444187713011214661596.1352833030042512463024221180036627596838788009350350', '861635'); + T('3920365916916176786055106017,46', '85225346019916886653371869.93476900513189071699081282383598839961655611874932469229156603202305772110380915189992118499498858', '520'); + T('472649930038,123', '3842682358.03251262860394055442674', '147'); + T('1322110218557217605016482876416321878749760304812247,155948', '8477891467394372515303068179241297604007491630.6220470926214830053246154267443752408560398235344548438873690519655363049727184587649', '186638'); + T('23547504929176,55', '428136453257.745545520225605', '65'); + T('17121761490301749308279011219417223490311,232710', '73575529587476899610154317474183419.235576468560490943788124174995507987278744551812', '543753'); + T('16210026155636340189350564224854481593345828818610444963909203142193849898,239', '67824377220235733009834996756713312106049492964897259263218423189095606.26777934017026855940357410680016571583242046733124370322513732722378950028598', '692'); + T('190721792400863327458476761464009950717029,30', '6357393080028777581949225382133665023900.9666170639928048559949862724415791705119899615018742118160129182', '79'); + T('61,200', '0.305', '244093'); + T('1716239054042743503675603092,2003', '856834275607959812119622.1128307556027562949206592525403122428', '7036'); + T('43,1', '42.926', '2'); + T('27358642114,8563', '3194983.31355833866', '9623'); + T('26693152565727887582,12127', '2201134045165983.9681701980199628544994221693300315787693850757330347383069440481917705451090', '48076'); + T('6108091753110008516780,1', '6108091753110008516779.73479487754085449867983587832803285557110100750079855828473226', '1'); + T('2,3', '0.718905305925227067205880082792710', '3'); + T('3473047534252762578370964997,58594', '59273091686055954165460.02998600522350350905681210811307517203796586454683', '61501'); + T('214822703242583,56', '3836119700760.4108921624057841119514683803433710971136', '64'); + T('26939714,3', '8979904.64498692634635572320542201896798645625719108607536315732247799297935360779199341966787552114794600', '5'); + T('2888884587551576320,29', '99616709915571597.240972811959289242975553142', '34'); + T('947939103218542770831,1', '947939103218542770831.0521624243633591645983271158385778064925689940216692520225367', '1'); + T('9933088375957272302206358007975451939487,2', '4966544187978636151103179003987725969743.72438467636183210768718000533720409321549827235614', '2'); + T('2384620985464,48617', '49049118.322068409482196547648333', '50827'); + T('1481114193489213622796229711,159566', '9282141518175636556636.31168920697604560950832652295984016490111948393975418960516033185', '434728'); + T('83229715325,52', '1600571448.5577172712032806916796048084329678112100319702869128418611147806748', '97'); + T('259,9', '28.786385', '9'); + T('18421000231117295985083192807209645332,25', '736840009244691839403327712288385813.280233799772105420526583646770509765903251570390', '65'); + T('699729069573093,1', '699729069573092.9415209617669715638690428130440588', '2'); + T('1269145537981521474122771320340177027273014491011926684206752265265583667980863639117069,46', '27590120390902640741799376529134283201587271543737536613190266636208340608279644328631.9347579670840456037995587812140760559559266417811221041968023988665383416259781405442396223206087', '88'); + T('7035913928382432889095670790,1', '7035913928382432889095670789.9451603279584465650713190452458435039596863298954339307519647608553073011741266856074291808762823441', '1'); + T('5380967249116311236814136453793462678035221359070439177808760415,14197', '379021430521681428246399693864440563360936913366939436346323.900471930297520912068842457020834544905293996118477045554870916446118758909841288498400493527105', '91913'); + T('5340404069347070913584555456280093652528470496019424627166576,7', '762914867049581559083507922325727664646924356574203518166653.71250635103031314100742496440500618527676618848777566910526532273', '12'); + T('198596768231311216444471847625266,1', '198596768231311216444471847625265.83726507122160159383594314037463792212479812445545510304752094547024953', '1'); + T('334,53', '6.301655789150', '56'); + T('9482145824073019,308', '30786187740496.81493576082236077814823570323411336136297997538465529623724716057733663574274358863', '518'); + T('49564672028692779312869265853690250389636933591279,1', '49564672028692779312869265853690250389636933591279.05690047648396367999804886767002033615206952728024860778041603073475913559839990', '2'); + T('180043559436755584546341153685052792171032546504943274982733,271928', '662100112664953901570787685288211556629080295169836408.83885808006294519499163145424494176495048682043552813068297869819085051', '323702'); + T('135402176306147,40', '3385054407653.6752566904201890867915343261767717538895', '41'); + T('487749,5656', '86.23567892818914544812557542982186431015804303', '27597'); + T('689353268,161', '4281697.316772446980582095053374575467875610055', '661'); + T('2341601,3', '780533.72419690', '3'); + T('133253,2', '66626.369877360981293176690373014842055920029', '2'); + T('23614,1', '23614.044401474469046155210490395', '1'); + T('281757167099338050985151947541415731483,42890', '6569297437615715807534435708589781.568733970826316638832067132912947392456994401031191534637582563566923232', '64820'); + T('7,30', '0.2334', '77'); + T('188159408735932593,55153', '3411589736477.3011984841415382', '62884'); + T('49893755664003300784200999639,5755', '8669636084101355479444135.471589937556905646874989257298383710889254914096760398878896706072509550992971893614682', '5837'); + T('180209,22', '8191.3248002765501146181', '22'); + T('70415704682823093030143170,135531', '519554232484251522014.4702687945814801414708882557', '370767'); + T('309703964089501625654278146528831017909611280781,531191', '583036919092194004895184870468119787250934.7499882339908947319021034086598173362092896910180810566025185828', '568168'); + T('6311026676431831888549757346533448414306654210393,1', '6311026676431831888549757346533448414306654210392.54151415748259382280340911118846529021380341028941701654077953763414807744375826120008106076828300', '1'); + T('677239979042028152601158,7949', '85198135494027947238.79204931221625179624149473557938172126847707', '9883'); + T('1829735554262281,259', '7064616039622.706568544570626683229950243512536015093535101968887493794302873092483253629579230290', '331'); + T('1,2', '0.317925082', '2'); + T('65422,9439', '6.9310308267754', '17120'); + T('46961497053061382777609130118847271892089775387846767743314411513423583155027,5', '9392299410612276555521826023769454378417955077569353548662882302684716631005.400654014794318218848509928000496866762016629616754055629753036755426927256260779921696553', '67'); + T('500194857457135627698,665', '752172717980655079.2451135360411912947058454904697242572660767', '687'); + T('47471355958725273634,1', '47471355958725273634.16168212923451461593072522210510640420155857994234198580802495272039820633735570319533813', '1'); + T('36696342857496890219,1', '36696342857496890218.90572359364080164761627035720048698', '3'); + T('4695131986657142516305076,510781', '9192064674796326637.649160794940805998501189986', '747475'); + T('349103010796287846089941527434273199124602123798955453463589836132521373235273,71', '4916943814032223184365373625834833790487353856323316245966054030035512299088.352127776626217594251476581025885809792618906667335429116230898910825304240224', '299'); + T('1358220866465871480816463658707268378971,16', '84888804154116967551028978669204273685.687886576615307696608953854116834104494900462161862843643799426800222', '91'); + T('27194039930406868209865840701464121302724394008919831130512956946096037284286,47', '578596594263975919358847674499236623462221149125953853840701211619064623069.9146866857902214919864171822857086850016715830174570427578437592194338070650774544060278', '58'); + T('2751902407120,23', '119647930744.3479655249971735656329573846182167', '43'); + T('4469030866140915638532462562432305966504,1', '4469030866140915638532462562432305966504.192178572338167275494797670860545892956073433782578010264482847', '2'); + T('4704489769335751301445685485486877217294,103', '45674657954716032052870732868804633177.6116627025867182700549754236229291028015465033707982024', '443'); + T('1475216297524085707694311943977667,151', '9769644354464143759564979761441.503308131238849125841196958844356073790374671626586526675819233898553472', '734'); + T('4907983733090076808453942390,57', '86104977773510119446560392.807235262788300753240131745761023198496136680383768897782992', '59'); + T('585074587,61012', '9589.5002130729144884804491184088195014563319127651629128080417190511729', '67046'); + T('7,1', '6.9', '2'); + T('504,601', '0.8386', '776'); + T('47984,267191', '0.17958688728350164035953663206762777096380577875511144865128', '335603'); + T('10388140798372,2093', '4963277973.421882452088446982138192961421705231905173423353291761058587', '13798'); + T('20168990044874146939541,7160', '2816898050960076388.204050292237501110723265705833631209539445571975161631843126782', '8609'); + T('46896058387748469269291854711564296983,110836', '423112151176048118565194113027935.8419917716416221340193798283264901', '155719'); + T('10955549766043717068313994547,128018', '85578198113106883940648.9286428471045878019343568927449610831989116', '378555'); + T('647078048579323459391277902984368763031859387250426744686475450876664538395892114032,1', '647078048579323459391277902984368763031859387250426744686475450876664538395892114032.3902894368682962019659983250422182774256220836412025664532446636812180965587379981258', '1'); + T('18638867424143570538275250698558378620490371,4', '4659716856035892634568812674639594655122592.7613196710958960564528035771871961517785715362059753295820571', '4'); + + T('-766693107209001147673676223300000000,1', '-7.666931072090011476736762233E+35', u); + T('-449394937314220211511925695600000000000000000000000000000000000000000000000000000000000000,1', '-4.493949373142202115119256956E+89', u); + T('579061232699508282365391682698798449087639,5000000000000000000000000000000000000000000', '0.1158122465399016564730783365397596898175278', u); + T('-5514336245609206034070613442000000,1', '-5.514336245609206034070613442E+33', u); + T('-1626302750634169116141012001000000000000000000000000000000000000000000,1', '-1.626302750634169116141012001E+69', u); + T('-1795503669658780056331087359,20000000', '-89775183482939002816.55436795', u); + T('-478536837039153,200000000', '-2392684.185195765', u); + T('-19898168880712128313811543240000000000,1', '-1.989816888071212831381154324E+37', u); + T('-363762350297028160717513248300,1', '-3.637623502970281607175132483E+29', u); + T('-8468355353839925110875467363,10000000000000000000000', '-846835.5353839925110875467363', u); + T('-45775371,10000', '-4577.5371', u); + T('113017973534801596808086521,1250000000000000000000000', '90.4143788278412774464692168', u); + T('-60641938108001991714010900430,1', '-6.064193810800199171401090043E+28', u); + T('-6268106205338927353362914493000,1', '-6.268106205338927353362914493E+30', u); + T('-62639169752501205441274039740000000000000000000000000000000000000000000000000,1', '-6.263916975250120544127403974E+76', u); + T('538570638075066218029616939267858613539095601141862844311,10000000000000000000000000000000', '53857063807506621802961693.9267858613539095601141862844311', u); + T('-458667133551,1000000000', '-458.667133551', u); + T('-1856541268082778545036889427,2500000000000000', '-742616507233.1114180147557708', u); + T('401060653077651395227747,12500000000000000000', '32084.85224621211161821976', u); + T('-4144323558304702676396445443000000000000000000000000,1', '-4.144323558304702676396445443E+51', u); + T('-5542449392944384114719343577000,1', '-5.542449392944384114719343577E+30', u); + T('33218113354409142794187676923560201901246573,125000000000000000000000', '265744906835273142353.501415388481615209972584', u); + T('-313400727241063772788345397,10000000000000', '-31340072724106.37727883453970', u); + T('-2001790975721803137,2500000000', '-800716390.2887212548', u); + T('-2000194173750641732491991877,5000000', '-400038834750128346498.3983754', u); + T('-4665510204000006565975869513,50000000000000000000', '-93310204.08000013131951739026', u); + T('2153528479648597306374181609165668498526259590105002419225534999299,39062500000000000000000000000000000000000000000000000', '55130329079004.0910431790491946411135622722455066880619321736959820544', u); + T('-30666677738567071,5000000000000', '-6133.3355477134142', u); + T('-4703545825363662923055913431,50000000', '-94070916507273258461.11826862', u); + T('-7623267021806768883120286367,100000000000000000000', '-76232670.21806768883120286367', u); + T('-47613686004517,1000000000', '-47613.686004517', u); + T('-4426382462876620839114533,10000000000000000000000000', '-0.4426382462876620839114533', u); + T('-3208666589586606174447191,100000000000000', '-32086665895.86606174447191', u); + T('-7729062348415188688065314918000000000000000000000000000000000,1', '-7.729062348415188688065314918E+60', u); + T('-2160223698870209381629363153,25000000', '-86408947954808375265.17452612', u); + T('-2004385076106459382854411831000000000000000000000,1', '-2.004385076106459382854411831E+48', u); + T('-8002741891355462634094119996000000000000,1', '-8.002741891355462634094119996E+39', u); + T('-4368891335671811,100000000', '-43688913.35671811', u); + T('-400258929245951237,2000000000000000000', '-0.2001294646229756185', u); + T('42762676503070237126609626887821888428451673288895043501,100000000000000000000000000000', '427626765030702371266096268.87821888428451673288895043501', u); + T('-58304052117107641964012899950000000000000000000000000,1', '-5.830405211710764196401289995E+52', u); + T('15248669391693474071160842935287056367141428182921376132980388727,5000000000000000000000000000000000000', '3049733878338694814232168587.0574112734282856365842752265960777454', u); + T('-8078047970318036600976065350000000000000000000000000000000,1', '-8.078047970318036600976065350E+57', u); + T('7,1', '7.0', u); + T('-6226798387179777853909992923000000,1', '-6.226798387179777853909992923E+33', u); + T('-7448516509843407495470415780000000000000000000000000000000,1', '-7.448516509843407495470415780E+57', u); + T('-78852027500722155037504331190000000000000000000000000000000,1', '-7.885202750072215503750433119E+58', u); + T('-3342348042119829837180052129,500000000000', '-6684696084239659.674360104258', u); + T('15672687176259210859051407089930945124489111085110817031431,40000000000000000000000000000', '391817179406480271476285177248.273628112227777127770425785775', u); + T('39866154729780717195080337049315868519050979213540479786966580509961183,1000000000000000000000000000000000000', '39866154729780717195080337049315868.519050979213540479786966580509961183', u); + T('-993671543846886085686711917800000,1', '-9.936715438468860856867119178E+32', u); + T('532028339563122259746625760616140111884633179604572642613837,500000000000000000000000000000000000000', '1064056679126244519493.2515212322802237692663592091452852276740', u); + T('-697966803816803579573431799,25000000000000000000', '-27918672.15267214318293727196', u); + T('-48787459362042945333251298680000000000000000,1', '-4.878745936204294533325129868E+43', u); + T('-353168187829651949299,4000000000000000000', '-88.29204695741298732475', u); + T('-1403470827451558036088375821,20000000000000000000000000', '-70.17354137257790180441879105', u); + T('-68304813987155896442052862570,1', '-6.830481398715589644205286257E+28', u); + T('-28707593804742896781267400000000000,1', '-2.870759380474289678126740000E+34', u); + T('-1791426377870978262043979561,1000000000000000000000000', '-1791.426377870978262043979561', u); + T('179838406674297924775572988142470977688025003111919,25000000000000000000000000000000000', '7193536266971916.99102291952569883910752100012447676', u); + T('-2423075550414669291292735759,5000', '-484615110082933858258547.1518', u); + T('-776725396418999866033600668900000000000000000000000000000000000000000000000000000000000000,1', '-7.767253964189998660336006689E+89', u); + T('-369087919583602506700335119,50000', '-7381758391672050134006.702380', u); + T('-65769870411112553029542951,200000000000000', '-328849352055.5627651477147550', u); + T('-1198038835922050392798019,200000000000000000000', '-5990.194179610251963990095', u); + T('-40097191351465303957388254440000,1', '-4.009719135146530395738825444E+31', u); + T('-3236635346912723615834792627,5000000000000000', '-647327069382.5447231669585254', u); + T('-2365771,250000', '-9.463084', u); + T('-160497076958746128902700099,3125000000000', '-51359064626798.76124886403168', u); + T('157938109732784046764321035938547478521587349076387,20000000000000000000000000000000000000000000', '7896905.48663920233821605179692737392607936745381935', u); + T('3516380051744022949626313427473,5000000000000000000000', '703276010.3488045899252626854946', u); + T('-86489135514398778941814310290000,1', '-8.648913551439877894181431029E+31', u); + T('-301393313166931162873106807500000000000000000000,1', '-3.013933131669311628731068075E+47', u); + T('-518869594507859770521243546000000,1', '-5.188695945078597705212435460E+32', u); + T('-1950909743929332443100687271,50', '-39018194878586648862013745.42', u); + T('-8773131005595091487081140354,1', '-8773131005595091487081140354', u); + T('-4355596294471508983960024769,100', '-43555962944715089839600247.69', u); + T('-2880570808953415045636806327,50000000000000000000000', '-57611.41617906830091273612654', u); + T('-9320214110050561347793210341000000000000000000,1', '-9.320214110050561347793210341E+45', u); + T('-2028302171,1000000000', '-2.028302171', u); + T('-232946686791834523955513553,5000000000000000000000', '-46589.3373583669047911027106', u); + T('32153248599816465463513302064276865531758911323110724293,2500000000000000000000000000000000000000000', '12861299439926.5861854053208257107462127035645292442897172', u); + T('-8744838688036249566782650227,1000000000000000', '-8744838688036.249566782650227', u); + T('-623804321303869879672219319900000000000000000,1', '-6.238043213038698796722193199E+44', u); + T('-5226891267180881946811097711000000000,1', '-5.226891267180881946811097711E+36', u); + T('6104731674327122118125159140803482511,50000000000000000000', '122094633486542442.36250318281606965022', u); + T('-3631918259327646858473441459,100000000000000000', '-36319182593.27646858473441459', u); + T('-1848392047279159333633594727,500000000000000', '-3696784094558.318667267189454', u); + T('-264510547222964010201402067,2500000000', '-105804218889185604.0805608268', u); + T('23965604410399646104889267,100000000000000', '239656044103.99646104889267', u); + T('-7462093867393361276933908373000000,1', '-7.462093867393361276933908373E+33', u); + T('24323093395343447761780819,25000000000000000', '972923735.81373791047123276', u); + T('820159670097111265573137140169274052235176656378637635665429413451,10000000000000000000000000000000000000000000000000000', '82015967009711.1265573137140169274052235176656378637635665429413451', u); + T('-13218678465057612022150417,10000000000000', '-1321867846505.761202215041700', u); + T('-6699947761211673976391555178000000000000000000000000000,1', '-6.699947761211673976391555178E+54', u); + T('-6087775300361116653641781722,1', '-6087775300361116653641781722', u); + T('-1174267411076461674383873197,12500000', '-93941392886116933950.70985576', u); + T('-9622612849795128416976470129,10000000000000000', '-962261284979.5128416976470129', u); + T('-430267205006530807363136683,200000000', '-2151336025032654036.815683415', u); + T('-1842468826711949238742823267,2000', '-921234413355974619371411.6335', u); + T('-896792855550853822680165595000000000000000000,1', '-8.967928555508538226801655950E+44', u); + T('-7249373999522375642630010999,10000000000', '-724937399952237564.2630010999', u); + T('-867584543901195289988590669,5000', '-173516908780239057997718.1338', u); + T('-7172260193178638618675644585000000000000,1', '-7.172260193178638618675644585E+39', u); + T('-589873963727757525194937079400,1', '-5.898739637277575251949370794E+29', u); + T('-5890981801970379206238029411,10000000000', '-589098180197037920.6238029411', u); + T('-452864647493799097082782472200000000000000000000,1', '-4.528646474937990970827824722E+47', u); + T('-600618187610370877245711717700000000,1', '-6.006181876103708772457117177E+35', u); + T('-667,100', '-6.67', u); + T('-535739501101785482356483511,20000000000000000', '-26786975055.08927411782417555', u); + T('-2189002367733133,500000000000000', '-4.378004735466266', u); + T('-4135862533810979636019397675000,1', '-4.135862533810979636019397675E+30', u); + T('-14984699501047789,1000000000000', '-14984.699501047789', u); + T('-2644213426631746862661931503,10000', '-264421342663174686266193.1503', u); + T('-2092299259157497414090361017,5', '-418459851831499482818072203.4', u); + T('-77,100', '-0.77', u); + T('-54276151887,1000000000', '-54.276151887', u); + T('-7316738873979211718601112500000000000000000000000000000000,1', '-7.316738873979211718601112500E+57', u); + T('-389683579126928886377631531,2500000000000000', '-155873431650.7715545510526124', u); + T('46789726161807116524384304297700033991397937633588752307,10000000000000000000000000000000000000', '4678972616180711652.4384304297700033991397937633588752307', u); + T('-9196858034762943045297291137,10000', '-919685803476294304529729.1137', u); + T('-12757819,25000', '-510.31276', u); + T('-2751580109664699528322719473,50', '-55031602193293990566454389.46', u); + T('-1397067073903866232334961397,200000000000', '-6985335369519331.161674806985', u); + T('-4812745393643600076996562763000000000000000000000000000000000000000000000000000000,1', '-4.812745393643600076996562763E+81', u); + T('-13515907799732096505704651000000,1', '-1.351590779973209650570465100E+31', u); + T('5425915792163208468016304413313938329266256242679179675690564113030627,1000000000000000000000000000000000000000000', '5425915792163208468016304413.313938329266256242679179675690564113030627', u); + T('-10827300142961420614583582960000000000000000000000000000000000000000000,1', '-1.082730014296142061458358296E+70', u); + T('488478745829,50000000', '9769.57491658', u); + T('-2319703638146144907642415179,250000000000000000000000000', '-9.278814552584579630569660716', u); + T('8199609,1000000', '8.199609', u); + T('-1132520281920903148966859641,50000000000', '-22650405638418062.97933719282', u); + T('-9435372448691264711,10000000000', '-943537244.8691264711', u); + T('-5430432705270926972283794348000000000000000,1', '-5.430432705270926972283794348E+42', u); + T('2547106921,10000000', '254.7106921', u); + T('-2013361060932518973304030049,250000000000', '-8053444243730075.893216120196', u); + T('-299071373209294751127694543,4000', '-74767843302323687781923.63575', u); + T('161261,5000', '32.2522', u); + T('-2149015945426180798371334522,1', '-2149015945426180798371334522', u); + T('-1219052557726696173105236523,1250000000000000', '-975242046181.3569384841892184', u); + T('-6635702255618430700913831019,1000000', '-6635702255618430700913.831019', u); + T('-4229092410987972953057006873,100', '-42290924109879729530570068.73', u); + T('800876757958087347097942687332875742929708200305858327085977609,100000000000000000000000000000000000', '8008767579580873470979426873.32875742929708200305858327085977609', u); + T('-2665484396670548074136945193,50', '-53309687933410961482738903.86', u); + T('-3156306908006626264325676067,100000000000000000', '-31563069080.06626264325676067', u); + T('-3,5', '-0.6', u); + T('-8680573119149141897627467752000000000000000000000000,1', '-8.680573119149141897627467752E+51', u); + T('-82860324718555460591215170260000000000000000,1', '-8.286032471855546059121517026E+43', u); + T('-4531829930266176401806361441000000000000000,1', '-4.531829930266176401806361441E+42', u); + T('-5737601975600871638965999673,1000000000000', '-5737601975600871.638965999673', u); + T('-37760607898500795218600331790000000,1', '-3.776060789850079521860033179E+34', u); + T('-27369129037741,50000000000', '-547.38258075482', u); + T('2477983988516065743406448097218451318402450481,10000000000000000000000000', '247798398851606574340.6448097218451318402450481', u); + T('-705385142506364347385362693,1', '-705385142506364347385362693.0', u); + T('-4969675047511558769703779774000000000000000000000000000000000000000,1', '-4.969675047511558769703779774E+66', u); + T('-85382944582940147310728016560000000000000000000,1', '-8.538294458294014731072801656E+46', u); + T('-1782322041330569224195797189000000000000000,1', '-1.782322041330569224195797189E+42', u); + T('-290994034468272029485971361100000,1', '-2.909940344682720294859713611E+32', u); + T('-988966648479804202907677518800000000000000000000000000000000000000000000000000000,1', '-9.889666484798042029076775188E+80', u); + T('-4566915368931602815051783606,5', '-913383073786320563010356721.2', u); + T('270653156797430209033263481,625000000000000000000000', '433.0450508758883344532215696', u); + T('-48999796485280572833341497940000000000000,1', '-4.899979648528057283334149794E+40', u); + T('-72525550030522147167279582110000,1', '-7.252555003052214716727958211E+31', u); + T('-2432675193330427851698809509,100000000000000000000000', '-24326.75193330427851698809509', u); + T('-403266406094322401449840190200000000000000000000000000000000000000000000000000000000000000000,1', '-4.032664060943224014498401902E+92', u); + T('-7328622424224698690222269711,10000000000', '-732862242422469869.0222269711', u); + T('-47237342255413479773733697,25000000000000000000', '-1889493.690216539190949347880', u); + T('78835631855459381,10000000000000', '7883.5631855459381', u); + T('-14,5', '-2.8', u); + T('-9866329513673835238514096493,100', '-98663295136738352385140964.93', u); + T('-13089959190012611177126518580000000000000000000,1', '-1.308995919001261117712651858E+46', u); + T('-4967358948172051919497159739,500', '-9934717896344103838994319.478', u); + T('-6833646028032836687349866821,100000', '-68336460280328366873498.66821', u); + T('649637135613968795105908969145470711,250000000000000000000000000000', '2598548.5424558751804236358765818828440', u); + T('-61363709817705515400922815730000000000000000000000000000000000000000000000000,1', '-6.136370981770551540092281573E+76', u); + T('-100998083624843426300911688400000000000000000000000000,1', '-1.009980836248434263009116884E+53', u); + T('-3590001814306412202538592043,1000000000000000000000000000', '-3.590001814306412202538592043', u); + T('-873319590748158544964033381600000000000000000000000000000000000,1', '-8.733195907481585449640333816E+62', u); + T('1753,50', '35.06', u); + T('-52231905436704456949438551980000000000000000000000000000,1', '-5.223190543670445694943855198E+55', u); + T('-4348525293879767179803795097,5000000000', '-869705058775953435.9607590194', u); + T('-1628925349793270623943546973,1000000000000000000000000000', '-1.628925349793270623943546973', u); + T('-78494014309,5000000', '-15698.8028618', u); + T('-9245876360737547772734914910000000000000000000000000000,1', '-9.245876360737547772734914910E+54', u); + T('-807754225571147376128169812100000000,1', '-8.077542255711473761281698121E+35', u); + T('-6150194754154627890562649755,1', '-6150194754154627890562649755', u); + T('-2471953954534824409680038307,25000', '-98878158181392976387201.53228', u); + T('-970474827218905069338978816700,1', '-9.704748272189050693389788167E+29', u); + T('-24039,10000', '-2.4039', u); + T('-19253676936551703,1000000000000000', '-19.253676936551703', u); + T('-3673854325985073740352036342000000000000000000000,1', '-3.673854325985073740352036342E+48', u); + T('-160934801,25000', '-6437.39204', u); + T('-32833225394240539484189003,2500000000000', '-13133290157696.21579367560120', u); + T('-879576295241677088569196885100,1', '-8.795762952416770885691968851E+29', u); + T('-34723705196925586591,2500000000000000000', '-13.8894820787702346364', u); + T('58699728651,2500000', '23479.8914604', u); + T('25989415788377713434433189687,1000000000000000000000000000', '25.989415788377713434433189687', u); + T('-1528267418236634262738364747,1000000', '-1528267418236634262738.364747', u); + T('-6671686359029212455119744847,100000000000000', '-66716863590292.12455119744847', u); + T('144580847646431960012829985973482546613221338871,200000000000000000000000000000000000000000', '722904.238232159800064149929867412733066106694355', u); + T('-33981629178302642259388602190000000000000000000000000000000000,1', '-3.398162917830264225938860219E+61', u); + T('-64240817973350524445496942010000000000000,1', '-6.424081797335052444549694201E+40', u); + T('-990485401974653806265390505600000,1', '-9.904854019746538062653905056E+32', u); + T('-6028091377718570445490225453,1000000000', '-6028091377718570445.490225453', u); + T('-231645924266279,200000000', '-1158229.621331395', u); + T('-356048892709504881374103191700000,1', '-3.560488927095048813741031917E+32', u); + T('-96293143562099332540946672560000000000000,1', '-9.629314356209933254094667256E+40', u); + T('-637588725404145616579243109,200000000', '-3187943627020728082.896215545', u); + T('-5533803323992652056012670321,10000000000000000000000000', '-553.3803323992652056012670321', u); + T('82096165597399152387073083,10000000000000', '8209616559739.9152387073083', u); + T('-84046624737814576667252743050000000000,1', '-8.404662473781457666725274305E+37', u); + T('-760070190521772257789348512700000000000000000000,1', '-7.600701905217722577893485127E+47', u); + T('33848173936588017661795890663826550420632434137913501,500000000000000000000000000000', '67696347873176035323591.781327653100841264868275827002', u); + T('-67816336411542138315185300640000000000000000,1', '-6.781633641154213831518530064E+43', u); + T('-1204357960160460298667925175000000,1', '-1.204357960160460298667925175E+33', u); + T('-7970186008547782569239312038000000000000000000000,1', '-7.970186008547782569239312038E+48', u); + T('-3710232124874852163479109505000000000000000000000000000000000000000000000000000000,1', '-3.710232124874852163479109505E+81', u); + T('-4889555265921636364438094567,5000000000000000', '-977911053184.3272728876189134', u); + T('3117,500', '6.234', u); + T('-699740571071362462935070191800,1', '-6.997405710713624629350701918E+29', u); + T('-70248014967,250000000', '-280.992059868', u); + T('-857100231280874948737999933,200000000000000', '-4285501156404.374743689999665', u); + T('467297342335727,10000000000', '46729.7342335727', u); + T('-27212862586658598118090814040000000000000000000000000000000000000000000,1', '-2.721286258665859811809081404E+70', u); + T('-3777590780331387653794428909,100000', '-37775907803313876537944.28909', u); + T('-207858091537398998838496056000000000000000000000,1', '-2.078580915373989988384960560E+47', u); + T('-6020540505342374731212772184000000000000000000000000000000,1', '-6.020540505342374731212772184E+57', u); + T('-38563435471069083574670403660000000000000000000000000000000000000000,1', '-3.856343547106908357467040366E+67', u); + T('12925583620733632059,250000000000', '51702334.482934528236', u); + T('-64127811,100000000', '-0.64127811', u); + + /* + T('30396,38195', '0.79581097', '74409'); + T('2125057574,3289', '646110.5424140842277760913716223149175043516912866283522989430448583852673477181054', '4314'); + T('18251,16', '1140.688086121119279582816178812726653910', '37'); + T('61348765027081784476232889631422618917241085602257,2', '30674382513540892238116444815711309458620542801128.559859020834676491532682063017825303001913079937413732204504474950978211332225018371420', '2'); + T('238354711696434965227174225040046402291933791409568617910,25981', '9174193129457486826033417691391647830796882006449660.0558100148468970808679278895365813792370050009058167954469', '61710'); + T('7355967799241738309628763754835483150582416687842544374137,8', '919495974905217288703595469354435393822802085980318046767.1338999658963927824509929378965804777221331548975659545056488845295998946309871474144010438', '9'); + T('1125354937387110207464744146511518,247481', '4547237716782743755943866989.8356560705677241346146759866583370949', '863202'); + T('22627259137083636694372928354252733658397903083652793951,13169', '1718221515459308732202363759909843849828984971042052.8476725643837742907709281227796422726432771727035925851544494828706899020', '266434'); + T('8704956917621873401344326514156520003279612669326092644945779992398046340851791,127', '68542967855290341742868712709893858293540257238788131062565196790535797959462.9212696722706718117183841431994103691974707194398390091180486522725873390891717', '171'); + T('58400904696,8737', '6684320.09797413893379904985072385250774250364224704531308514779353223', '14426'); + T('4765998700799,481932', '9889359.28886025414277', '551989'); + T('84446319074008288318841993796319916,1', '84446319074008288318841993796319916.4290214679797552828327089099139280188', '1'); + T('208579935771852505416338,29', '7192411578339741566080.621098672624218880520368888346887640903578755437931806539999680994582938', '38'); + T('1222506164843897615007151221018141468,521', '2346460968990206554716221153585684.199616425445388739418159378389564040736054', '706'); + T('63993391879749765751,9', '7110376875527751750.114919085901505100980521292031066797810839927388501365930465', '11'); + T('36707708314,1', '36707708314.345688574511854258055215898538289601221976670300216981023491', '1'); + T('1006862373895650813218257996159822111779222738385202718573234201031,335', '3005559325061644218561964167641260035161858920552843936039505077.70447752609278095294701366298104650604976387611568135143174113323780682', '7063'); + T('12180512204,290477', '41932.7940043445804168810482554121918927813650259', '895566'); + T('972851014381591,18170', '53541607836.080957621939096312239677792878740188648258030024875', '31555'); + T('383576424003665,59', '6501295322096.01707059843465672720153308', '88'); + T('456059695649,731697', '623290.372447884850674344473049816049238992052574671', '770999'); + T('1,2', '0.5716202415873544262986953173753852278285193332218646822626651', '2'); + T('13802410789886736953383903846755867001633124596437299605748175709981308048573814,2523', '5470634478750193005701111314607953627282253109963257869896225013864965536493.782798186996737913044082377221550214034629772236938011947896897722075720890727218714', '2580'); + T('1720546690653497270570006270472130851,1', '1720546690653497270570006270472130851.14006845543964920673232647491053082791301585407937041734157349507526701334664232654756777642845206', '1'); + T('275492732803212658371830121443811803,6273', '43917221872024973437243762385431.5005579559793624838126175850466341579997661657132448932942532299', '11453'); + T('88013352536654826423613115136850148349568967,93', '946380134802740069071108764912367186554505.02139414761736578247940104106009403877307019264568966335689948628094', '100'); + T('0,1', '0.16188799510329961', '2'); + T('31257777609885493076027897164441747647216000811363789460,63', '496155200156912588508379320070503930908190489069266499.364683462978985476107209780379101750930177884309470340386147403736530', '73'); + T('1,4', '0.247', '5'); + T('139940391692584759336872579028566139849626387938102,9', '15548932410287195481874731003174015538847376437566.916769682876782912934506396938577003712568789804114047347942880', '9'); + T('2695380025444014713279737860623,4', '673845006361003678319934465155.7153220774931558972103241774927225665361206328689645904684305800', '6'); + T('212541,1', '212541.15765900911813807562731698106746376864402272303473059993656512959159467385761060217667309', '2'); + T('24404077187137405965287142997346562978162191083070727134647177951283348456202109976721557879,358982', '67981339418515151080798321356910828337248639438943253797257739806684871264303251908790.85268620710740817674022927818400975732259671102671740536686565452412022811045315287709605606', '524757'); + T('4639813710478702096,63125', '73501999373920.033203960389538229718685812256959445512319514858711642307834404391479542025114608466188853802', '975593'); + T('6313823485926856046033387,79', '79921816277555139823207.43038835415731205809303875306226403799816963841913838777893750', '309'); + T('156447551951667418528348,10581', '14785705694326379220.1444097907069652381615089410990740501255021747836566834256552197426931481109', '28853'); + T('5939913817183935713420272651319175,1', '5939913817183935713420272651319175.15560997078079301798352616505127598762535051904836053714139307939449564', '2'); + T('2612459,3290', '794.06048625538280973740786635286809420954121949534447211174', '3834'); + T('44771360338621,79', '566726080235.708661152424012356777601', '84'); + T('19411423,337', '57600.661728879757757929764351499408564549978771807173536885876073886506463832955', '390'); + T('1847,2', '923.31354', '2'); + T('2652776,545', '4867.4789', '848'); + T('2469,20', '12.345e1', new BigNumber('123')); + + T('-2991910323532143367251432461,50000000', '-59838206470642867345.02864922', u); + T('-972745200863972039012044288500000000000000000000000000000,1', '-9.727452008639720390120442885E+56', u); + T('-759,100', '-7.59', u); + T('-27827258151452494934863201,100', '-278272581514524949348632.0100', u); + T('-284626800809,50000000', '-5692.53601618', u); + T('-74421663208247269188483431,80000000000000000', '-930270790.1030908648560428875', u); + T('-1082016448333999416859837516000,1', '-1.082016448333999416859837516E+30', u); + T('-21,25', '-0.84', u); + T('-67246554173689300336047211,8000000', '-8405819271711162542.005901375', u); + T('-2196812392790282979771359770000000000000,1', '-2.196812392790282979771359770E+39', u); + T('-93367638440645772883402889310000,1', '-9.336763844064577288340288931E+31', u); + T('-35989199713272470893896397640000000000,1', '-3.598919971327247089389639764E+37', u); + T('-21641213684333939876179569040,1', '-2.164121368433393987617956904E+28', u); + T('-91309127692139566014327039220000000000000000000000000000000000000,1', '-9.130912769213956601432703922E+64', u); + T('-1991444477322661912100056959,50000000000', '-39828889546453238.24200113918', u); + T('-553515865616749148505592781,10000000000000000000000000', '-55.35158656167491485055927810', u); + T('-2736653830100392487693621031,500000', '-5473307660200784975387.242062', u); + T('-1434910778309587281399577109,5000000000', '-286982155661917456.2799154218', u); + T('4088837688828123100698969622178669612073,5000000000000000000000000', '817767537765624.6201397939244357339224146', u); + T('-43637769341168890990138963370000,1', '-4.363776934116889099013896337E+31', u); + T('-972943330653707493150695821,2000000000', '-486471665326853746.5753479105', u); + T('-1782595711624723281402457991,1', '-1782595711624723281402457991', u); + T('-1587179980733649965762666577,25000000000000000', '-63487199229.34599863050666308', u); + T('-1869019007722241613978741151000000000000000000000000000000000000000000,1', '-1.869019007722241613978741151E+69', u); + T('-9534407406159040849329043501,1000000000000000000000000000', '-9.534407406159040849329043501', u); + T('884870737759390069055513857366081428271482267261449,1000000000000000000000000000000000', '884870737759390069.055513857366081428271482267261449', u); + T('-139160500164081906232225785000000000000000000000000000000000000000000000000000000000000000,1', '-1.391605001640819062322257850E+89', u); + T('-9077283717131739693270257533,1000000000', '-9077283717131739693.270257533', u); + T('-3546952154463187872567980253000000000,1', '-3.546952154463187872567980253E+36', u); + T('-2998349233065239662673433121,50000000000000000', '-59966984661.30479325346866242', u); + T('-49202917142412402713948777780,1', '-4.920291714241240271394877778E+28', u); + T('181577327136618327510814084031821584885623912603171067071894881,2500000000000000000000000000000000', '72630930854647331004325633612.7286339542495650412684268287579524', u); + T('-5299277021247306829333111683000000000000,1', '-5.299277021247306829333111683E+39', u); + T('-859302244477761340074208133600000000000000000000000000000000000,1', '-8.593022444777613400742081336E+62', u); + T('-6501829741620523766984105281,1', '-6501829741620523766984105281', u); + T('-2677415014831874236017310386000000000000000000,1', '-2.677415014831874236017310386E+45', u); + T('-4734450690396580389539539453000000000000000000000000000000000000000000000000000000000,1', '-4.734450690396580389539539453E+84', u); + T('573,1000', '0.573', u); + T('170553245440322276130662336624985791859,390625000000000000000', '436616308327225026.89449558175996362715904', u); + T('-198470325592748654691786431,100000000000000', '-1984703255927.486546917864310', u); + T('-3234474304795759429822944851,100', '-32344743047957594298229448.51', u); + T('-76846093771110548259822724440,1', '-7.684609377111054825982272444E+28', u); + T('-131857323335983571776045123,156250000', '-843886869350294859.3666887872', u); + T('-4663443251439907783224263307,5000000000000000000', '-932688650.2879815566448526614', u); + T('63123252215861327828078184797456511902545223118271893387,100000000000000000000000000000000', '631232522158613278280781.847974565119025452231182718933870', u); + T('-618918292260085378971410121400000000000000000000,1', '-6.189182922600853789714101214E+47', u); + T('-999,1000', '-0.999', u); + T('-5117190266823165989390291807,10000000000000000', '-511719026682.3165989390291807', u); + T('-7326556356501682719117834871,100000000000000000000', '-73265563.56501682719117834871', u); + T('-6104631144035504571891715845000,1', '-6.104631144035504571891715845E+30', u); + T('-553580276933846729294149065500000,1', '-5.535802769338467292941490655E+32', u); + T('-2029603585167950725930322651,2500', '-811841434067180290372129.0604', u); + T('-3840678439599650124602555357,500000000000', '-7681356879199300.249205110714', u); + T('-1811414587273530335470170277,10000000000000000000000000000', '-0.1811414587273530335470170277', u); + T('-3184069685558819408138516175000000000000000000000000000000000000000,1', '-3.184069685558819408138516175E+66', u); + T('-149520028664451586711286719,250000000', '-598080114657806346.8451468760', u); + T('-39829,100000', '-0.398290', u); + T('-76787660914545531460526626510000000000000000000000000000000000000,1', '-7.678766091454553146052662651E+64', u); + T('-2015496795339941642277997653,5000000000', '-403099359067988328.4555995306', u); + T('-1318336013779584857221166649,20000000', '-65916800688979242861.05833245', u); + T('-724089949757367,100000000000', '-7240.89949757367', u); + T('-15952866815190919594236189370000000000000000000000000,1', '-1.595286681519091959423618937E+52', u); + T('-1342078101586766284616393,100000000000000000000', '-13420.78101586766284616393', u); + T('-6812055517286162590000532611,10000000000000000000000', '-681205.5517286162590000532611', u); + T('-567847685641009361520749225200000000000000000000000000000000000000000000000,1', '-5.678476856410093615207492252E+74', u); + T('-1580251794203221398959714431000000000000000000000,1', '-1.580251794203221398959714431E+48', u); + T('-6574603652290596029643069989,10000000000000000000', '-657460365.2290596029643069989', u); + T('-7311541940635831348361450069,100000000000000000000000000', '-73.11541940635831348361450069', u); + T('-14723103323,10000000000', '-1.4723103323', u); + T('3285075251527965969147,12500000000000000000', '262.80602012223727753176', u); + T('-820320298626362566428108475000000000000000000000000000000000000000000000000000000000000000000,1', '-8.203202986263625664281084750E+92', u); + T('252919151006836181107958661434555503428356126246362605748877,500000000000000000000000000000000', '505838302013672362215917322.869111006856712252492725211497754', u); + T('-1179378935267,5000000000000', '-0.2358757870534', u); + T('-1383313883094030650884742084,5', '-276662776618806130176948416.8', u); + T('-3721825945463317461862875941,5000000000000000', '-744365189092.6634923725751882', u); + T('-772585031312025977266466033,20000', '-38629251565601298863323.30165', u); + T('-1022325206901044018628878242000000000000000000,1', '-1.022325206901044018628878242E+45', u); + T('-9331233103994018282451022848000000000,1', '-9.331233103994018282451022848E+36', u); + T('-76778786132507991606924452380,1', '-7.677878613250799160692445238E+28', u); + T('-1075535026526469098011554507000000,1', '-1.075535026526469098011554507E+33', u); + T('-6734357,2000', '-3367.1785', u); + T('292826785068446808328398273711158229435617047159402888673901,5000000000000000000000000000000000000000000000000', '58565357013.6893616656796547422316458871234094318805777347802', u); + T('-5742288086224317836910104718000000000000000000000000000,1', '-5.742288086224317836910104718E+54', u); + T('8423,25000', '0.33692', u); + T('48097700873717796851032061929605079278183,20000000000000000000000000000000000', '2404885.043685889842551603096480253963909150', u); + T('6023634370460703429713558622417776109096525391939,1000000000000000000000000000000000000000000000000', '6.023634370460703429713558622417776109096525391939', u); + T('106758008007385450139,100000000000000000', '1067.58008007385450139', u); + T('-3849580463489122904112780999000000000000000000000000000000000000,1', '-3.849580463489122904112780999E+63', u); + T('-88275520431316339743958679610000000,1', '-8.827552043131633974395867961E+34', u); + T('-472042305926729955808146449,1000', '-472042305926729955808146.4490', u); + T('-6245867883108091,1000000000', '-6245867.883108091', u); + T('-183356236298435289867506669,2000000000000000', '-91678118149.21764493375333450', u); + T('-74562808732179833652840115180000000000000000000000000000000000000000000000000000000000,1', '-7.456280873217983365284011518E+85', u); + T('-5104625575258744026028197501,1000000000000000000000', '-5104625.575258744026028197501', u); + T('-344922559321915510291490087500000000000000000000000000000000000000000000000000000000,1', '-3.449225593219155102914900875E+83', u); + T('-8563598459050660434249519489,100000000000000000', '-85635984590.50660434249519489', u); + T('17500814267583629590589899612077,250000000000000000', '70003257070334.518362359598448308', u); + T('45401405910540076895910506821437320717666680221,6250000000000000000000000000000000000000', '7264224.94568641230334568109142997131482666883536', u); + T('-84509536465048048632507,1250000000000000', '-67607629.1720384389060056', u); + T('-1751326137777370498636433863,25000', '-70053045511094819945457.35452', u); + T('-867111630064241604638707847400000000000000000000,1', '-8.671116300642416046387078474E+47', u); + T('-21318256746158533732802277550,1', '-2.131825674615853373280227755E+28', u); + T('-67579403706761435205295261900000000000000000000000000000000000000,1', '-6.757940370676143520529526190E+64', u); + T('-1417367504555887528141746601,2500000000000', '-566947001822355.0112566986404', u); + T('-25974847707227382380557472,625', '-41559756331563811808891.95520', u); + T('-981439911205743478966598319,100', '-9814399112057434789665983.190', u); + T('-610789624400704048725520972100000000000000000000,1', '-6.107896244007040487255209721E+47', u); + T('-1893232078819503172511076559,50000000000000', '-37864641576390.06345022153118', u); + T('-27975984885306222968321285120000000000000000000000,1', '-2.797598488530622296832128512E+49', u); + T('-2612911727298316430264079,62500000000000000000', '-41806.587636773062884225264', u); + T('50680230444767491,1000000000', '50680230.444767491', u); + T('-373274225495445311979038119300000000000000000000000000,1', '-3.732742254954453119790381193E+53', u); + T('-8327620769338584623732488387,100000000000000000000', '-83276207.69338584623732488387', u); + T('-4868628906895320112426939731,100000000', '-48686289068953201124.26939731', u); + T('-1193567448524866936588184537,20000000000000000000000', '-59678.37242624334682940922685', u); + T('-86830341,10000', '-8683.0341', u); + T('-6646694931396004582423920897,100000000000000', '-66466949313960.04582423920897', u); + T('-5348172887765880895603201513,100000000000000', '-53481728877658.80895603201513', u); + T('-8919495454891628197011164031,10000000000000000', '-891949545489.1628197011164031', u); + T('1559360912667,1000000000000', '1.559360912667', u); + T('-7711382430758007094636047839000,1', '-7.711382430758007094636047839E+30', u); + T('-6741391809448013052641540557,1000000', '-6741391809448013052641.540557', u); + T('-301,500', '-0.602', u); + T('-86974760786594923670130517580000000000000000000000000000,1', '-8.697476078659492367013051758E+55', u); + T('-3,5', '-0.6', u); + T('-83297684778142804104535372320000000000000000000000000000000000000000000000000000000000000,1', '-8.329768477814280410453537232E+88', u); + T('-163673076457158327,1250000000', '-130938461.1657266616', u); + T('-38956087033937387393159766230000000000,1', '-3.895608703393738739315976623E+37', u); + T('-1534311654615354489262951441,200000000000000000', '-7671558273.076772446314757205', u); + T('-8060394441780008075571792928000000000000000000,1', '-8.060394441780008075571792928E+45', u); + T('-280124687988949117330427391,2500000000000000000000', '-112049.8751955796469321709564', u); + T('-30114151670681354095135826370000000000000000000000000000000000000000,1', '-3.011415167068135409513582637E+67', u); + T('-812,125', '-6.4960', u); + T('-1370772417711,2000000000000', '-0.6853862088555', u); + T('-9001273695034747863562885281,100000000000000000000', '-90012736.95034747863562885281', u); + T('-94895895660508854551459723340000000000000000000000000000000000000000000000000000,1', '-9.489589566050885455145972334E+79', u); + T('33927,1000', '33.927', u); + T('-221228229074405139018236415000000000000000000000000000000000000000000000000,1', '-2.212282290744051390182364150E+74', u); + T('-72357217092268759,1000000000000', '-72357.217092268759', u); + T('3,5', '0.6', u); + T('-8999705506879032909995262466000,1', '-8.999705506879032909995262466E+30', u); + T('-34801868215741663768869349060,1', '-3.480186821574166376886934906E+28', u); + T('-638899147521386374389705727,250000000000', '-2555596590085545.497558822908', u); + T('-576341894025935781,10000000000000', '-57634.1894025935781', u); + T('-4499426107906193213910836749,1000000000000000000000000000', '-4.499426107906193213910836749', u); + T('-1187772132418630901316882007,12500000', '-95021770593490472105.35056056', u); + T('-328174941647878676105511874800000000000000,1', '-3.281749416478786761055118748E+41', u); + T('-3472215593316048786969586545000000000000000000000000000000,1', '-3.472215593316048786969586545E+57', u); + T('-819049308491114964745499902800000000000000000,1', '-8.190493084911149647454999028E+44', u); + T('-6323108380621192986595369,200000000000000000000', '-31615.541903105964932976845', u); + T('-111264401026058917823810189,100000000000000000000000', '-1112.644010260589178238101890', u); + T('-375536277598104783062275796800000000000,1', '-3.755362775981047830622757968E+38', u); + T('-101660024857,1000000', '-101660.024857', u); + T('-2004125726691987151280986843,25000000000000000000000000', '-80.16502906767948605123947372', u); + T('-7642170031922907778643381,100000000000000000000', '-76421.70031922907778643381', u); + T('-3602317098842106506606624929,1000', '-3602317098842106506606624.929', u); + T('-1299346412819078024158481,20000000000000000000', '-64967.32064095390120792405', u); + T('-1239554900011232365384901487,125000000000000000', '-9916439200.089858923079211896', u); + T('-4626908109136214769997540471,50000000000000000000000', '-92538.16218272429539995080942', u); + T('393786126653440528814656629984919695629424483,20000000000000000000000000000000000000', '19689306.332672026440732831499245984781471224150', u); + T('79,400', '0.1975', u); + T('-70926474960683674023948242490000000000000000000000000000000000000,1', '-7.092647496068367402394824249E+64', u); + T('-717448177428239400724351357200000000000000,1', '-7.174481774282394007243513572E+41', u); + T('93965062239421527657876691002319056463449204972859618248841032392337,5000000000000000000000000000000000000000000000', '18793012447884305531575.3382004638112926898409945719236497682064784674', u); + T('-742455691111299272393671478500000000,1', '-7.424556911112992723936714785E+35', u); + T('4327353232599424133161482714110773218878025952012887889286000677,10000000000000000000000000000000000000', '432735323259942413316148271.4110773218878025952012887889286000677', u); + T('-6406522453382260785242123219,100000', '-64065224533822607852421.23219', u); + T('-8755758445067880087438735551000000000000000000000000000,1', '-8.755758445067880087438735551E+54', u); + T('-3641369340200941843410397,100000000000000000000000', '-36.41369340200941843410397', u); + T('-784260557922398380334392781600000,1', '-7.842605579223983803343927816E+32', u); + T('-662071018037510735810792187000000000000000000000000000000,1', '-6.620710180375107358107921870E+56', u); + T('2,1', '2.0', u); + T('-6471005670399478287255928531,10000000000000000000000', '-647100.5670399478287255928531', u); + T('-8213251496116568092258251293,10000000000000000000000000000', '-0.8213251496116568092258251293', u); + T('-2433095402981113505171684571,500000000000000', '-4866190805962.227010343369142', u); + T('-7073268678570322756074595191,100000000000000000000', '-70732686.78570322756074595191', u); + T('-5922619520639844865780847779000000000000000,1', '-5.922619520639844865780847779E+42', u); + T('765719072830121,100000000000000', '7.65719072830121', u); + T('-3110127455285391882932859,10000000000000000000000000', '-0.3110127455285391882932859', u); + T('-626969950393688092623498764800000000000000000000000,1', '-6.269699503936880926234987648E+50', u); + T('-45963737194150293757063245860000000000000000000000000000000000000000000000000,1', '-4.596373719415029375706324586E+76', u); + T('778051713899,100000000', '7780.51713899', u); + T('-4459718171731138401213154589,50000000000000', '-89194363434622.76802426309178', u); + T('-1071777034967899856015183850000000000000000000000,1', '-1.071777034967899856015183850E+48', u); + T('-17597792014189525803930088410000,1', '-1.759779201418952580393008841E+31', u); + T('-73583607563995328344161936390,1', '-7.358360756399532834416193639E+28', u); + T('78478899969144273,1000000000', '78478899.969144273', u); + T('-355286094740091330430709,1250000000000000000', '-284228.8757920730643445672', u); + T('-41,50', '-0.82', u); + T('-9907765598680476853217019311,100000000000000000', '-99077655986.80476853217019311', u); + T('-2404392782688999157305680689,100000000000000', '-24043927826889.99157305680689', u); + T('-2650994750421622104977287881,1000000000000000000', '-2650994750.421622104977287881', u); + T('39983073582040014866844804541291,100000000000000000000000000', '399830.73582040014866844804541291', u); + T('-8807898557101190300230101932000000000000000000000000000000000000000000,1', '-8.807898557101190300230101932E+69', u); + T('-695393182113783444341458924,5', '-139078636422756688868291784.8', u); + T('-1706659473239464584561002977,100000', '-17066594732394645845610.02977', u); + T('-165933152156143937454202761,2000000000000000000000', '-82966.57607807196872710138050', u); + T('1538291813397103572148216063922845985226928827759,250000000000000000000000000000000000', '6153167253588.414288592864255691383940907715311036', u); + T('-13,250', '-0.052', u); + T('-2294062859474990814031336269,5000000000000000000', '-458812571.8949981628062672538', u); + T('149418055166367757421653263494051015159636829951,5000000000000000000000000000', '29883611033273551484.3306526988102030319273659902', u); + T('-4629861263429484977299994121000000000000000000000000000000000,1', '-4.629861263429484977299994121E+60', u); + T('-76174501687600226360492968090000,1', '-7.617450168760022636049296809E+31', u); + T('-6350678364890072941143667763,1000000000000000000', '-6350678364.890072941143667763', u); + + T('7325643,10000000', '0.7325643'); + T('8129753468709152191211051855224273832281,100000000000000000000000', '81297534687091521.91211051855224273832281'); + T('26846080372036394639591396,6672793', '4023214922452471497.25630571786057289667012386513324609', '72150416'); + T('151169465630612379481675652813336817561189321,200000000000000000000000000000000000000', '755847.328153061897408378264066684087805946605'); + T('48650152878444478499756261104359,1000000', '48650152878444478499756261.104359'); + T('310291026486294288245548,3136069', '98942665638509321.1423434879780971949357099446690852', '4194429'); + T('281148949800335203180214,28247', '9953232194581201656.11264913171363754779711915', '40003'); + T('8070991737,10', '807099173.7'); + T('2105837647496797835243555428994974365746550495259,2500000000000000000000000', '842335058998719134097422.1715979897462986201981036'); + T('7050549406715449007260719040610995681,100000000000000000000', '70505494067154490.07260719040610995681'); + T('4712375599056588823223,5', '942475119811317764644.6', '23351170'); + T('1812890500714000446600040219589,6454218482', '280884588237897901176.13812435378291552542223517750505532', '8240308776'); + T('1485521639981158765714509531187624755829128849,100000000000000000000000', '14855216399811587657145.09531187624755829128849'); + T('179195624045698698709602380291841534992963,397', '451374367873296470301265441541162556657.33752912', '654'); + T('60786881043136,81', '750455321520.1975303545477874468301224681956212', '6955'); + T('54350058946186575767248586,111', '489640170686365547452689.9639497075875189553277274425649764720088', '136'); + T('207448313353211937938706154109749,2500000000000000000000000', '82979325.34128477517548246164389960'); + T('18637328030895697373,20000000000', '931866401.54478486865'); + T('77127230808472816894238711,10000000000000000', '7712723080.8472816894238711'); + T('29126173556928305215214880165709856062,7', '4160881936704043602173554309387122294.5709328', '7'); + T('43333053556734019842,614489', '70518843391393.531604308619475952242596538499476346', '675048'); + T('53377793855957,559250504', '95445.231562915140439462747444833608100863907', '1363996915'); + T('347448038601,1158528605', '299.9045833667611513140004251012084', '3206002475'); + T('4723559025392992686163722415183139,100000000000000000000', '47235590253929.92686163722415183139'); + T('178091379773085237300450763077988415217238,1811184275', '98328691470714782625004163686209.3533896422549273776361277', '1811232885'); + T('805514724831305204420874185699445105715750883,100000000000000', '8055147248313052044208741856994.45105715750883'); + T('65819,6849', '9.610016056348', '8529'); + T('319168767950612554460346534967,625000000000000', '510670028720980.0871365544559472'); + T('5710296907,88986', '64170.7336772078034895641687140263', '92775'); + T('556588363946502498333308725135986051213680185539426551525214239244852201,500000000000000000000000000000000000000', '1113176727893004996666617450271972.102427360371078853103050428478489704402'); + T('20826873980146981695459788919411033,31250000', '666459967364703414254713245.421153056'); + T('2499361049528080561202511540068978284974386343138634241,1000000000000000000000000000000000000', '2499361049528080561.202511540068978284974386343138634241'); + T('418298807255269058527019236340986131039447727889611856636829077,50000000000000000000000000000000000', '8365976145105381170540384726.81972262078895455779223713273658154'); + T('6913324275323537689724784638569909,100000000000000', '69133242753235376897.24784638569909'); + T('13962383460375585294405129665013837633,2000', '6981191730187792647202564832506918.8165'); + T('373341224221778946139808778111541154755014783291201,500000000000000000000000', '746682448443557892279617556.223082309510029566582402'); + T('2605595932904747914340060901727110356316231797,100000000000000000000000000000000000000', '26055959.32904747914340060901727110356316231797'); + T('5404218768000268681499,58562496', '92281223259341.07524206277', '59176667'); + T('837600757847923350654714829279011772308108410631278941774977080884126219,1000000000000000000000000000000000000', '837600757847923350654714829279011772.308108410631278941774977080884126219'); + T('39732046116239133,500000000000000', '79.464092232478266'); + T('3508566582308615186460661,50', '70171331646172303729213.22', '689'); + T('55037110921169089073232054697568652125721273823943129,1000000000000000', '55037110921169089073232054697568652125.7212738239431290'); + T('566293124809467513,2', '283146562404733756.42441', '2'); + T('43320564587705861,41', '1056599136285508.80459063125943036359093410684247', '43'); + T('959454884256,1', '959454884256.0872639565266385531414960733727818427', '1'); + T('91278743653117380466990456156,1', '91278743653117380466990456155.68579170481078286369193', '1'); + T('10122,25', '404.88', '8317919834'); + T('12366919721,2285', '5412218.69628', '3581'); + T('6717391976887166914502653755927330777815,1', '6717391976887166914502653755927330777814.993', '7'); + T('13432031244267392897695975,26625836', '504473596407166065.98553281106366012670736', '962581771'); + T('198826963117874099525548139368203,2', '99413481558937049762774069684101.4789260648567440', '2'); + T('1348726,601', '2244.1364219063828677', '603'); + T('976694301668980861868663901012070434704655861333,1000000000000000000000000000000000000', '976694301668.980861868663901012070434704655861333'); + T('297178549846227440886808646486219,32786695', '9063998364160444988029706.7602031555788099950276275841962', '66781952'); + T('22339526413138422840472802051271868021571230079710624149228880060499,100000000000000000000000000000000000000', '223395264131384228404728020512.71868021571230079710624149228880060499'); + T('9135248819601092928115011665372155588037116079546743946559,1000000000000000000000000', '9135248819601092928115011665372155.588037116079546743946559'); + T('5286330697037762023749,10', '528633069703776202374.9'); + T('107227092928577441190850028,357', '300356002601057258237675.148458846976702', '1739'); + T('9567629701592580680115114528171473874982843,10000000000000000000000000', '956762970159258068.0115114528171473874982843'); + T('16087152277929474327956249483660452531,7812500000000000000000', '2059155491574972.713978399933908537923968'); + T('89875669677258766402915335437973697536104973046538128991,1000000000000000000000000000000000', '89875669677258766402915.3354379736975361049730465381289910'); + T('923938919,1', '923938919.0', '9691412392'); + T('48428060142308830168757150336059283056510851633772347,1000000000000000000000000000000000000', '48428060142308830.168757150336059283056510851633772347'); + T('93051527972639804714713550878952900355,496672', '187350057930867463264918398619114.62767178339', '4005220'); + T('3497280820822833818,1', '3497280820822833818.0', '7323674'); + T('923369267213275370382645033,200', '4616846336066376851913225.165'); + T('83964374249481,1000000000', '83964.374249481'); + T('194123595638199705708781601234299234156024384,573715909', '338361883630805339422410197159617608.156695518792036842720875013789726', '847457002'); + T('5637607,236111', '23.87693500091710301251170853372825835205', '293373'); + T('96319079573841658175275890975870,1', '96319079573841658175275890975869.869419481278952979', '2'); + T('35413177676239984779155768701462876116,5', '7082635535247996955831153740292575223.20'); + T('17525144964454,27791', '630605050.716203087332881753643518191177425472803', '459536'); + T('99069927604575118603830348579,20000000000', '4953496380228755930.19151742895'); + T('4625959927338367711360075575124826216422187184789056538633051077924197,500000000000000000000000000000000', '9251919854676735422720151150249652432.8443743695781130772661021558483940'); + T('16687954096803,461', '36199466587.4251659487445747440075096128888226597', '715'); + T('48983711168012156360736451565279496359797,62500000000000000000000000000000', '783739378.688194501771783225044471941756752'); + T('951604336538762886268589543789943349215119,100000000000', '9516043365387628862685895437899.43349215119'); + T('3170484800431125268583,9881458', '320851922907644.324206306397298875', '10955847'); + T('2209917901057085830155650409703230456398682421,500000000000', '4419835802114171660311300819406460.912797364842'); + T('257559146244597067867426507016,341085825', '755115362078142848262.38823327237360274380050695878', '370161150'); + T('52302828211946727812235521578754597,100000000000000000000', '523028282119467.27812235521578754597'); + T('1548611009582576944501513330034309618,3581483467', '432393734007589359758871484.98019567096887564653', '4247950750'); + T('4160735782556259525559,100000000000000', '41607357.82556259525559'); + T('7810032276912931435247371001442767211661887,10000000000', '781003227691293143524737100144276.7211661887'); + T('2699214678525489726487560119191725243,6772462978', '398557317669177478741406878.339929884663593948389215779911509998918', '8700679367'); + T('234005756036522310409974828052077,2792665138', '83792987871115935565481.6170273247418609771373578473125', '3496871917'); + T('888930141417205,472', '1883326570799.16313674359847883331', '494'); + T('93731,249276', '0.3760129334673260070153210504', '257553'); + T('1884739237,5388890', '349.745353310236416512548553007633265749648', '7464665'); + T('43774993705091173299491664598042468178382578189423014141380153967959,1250000000000000000000000000000', '35019994964072938639593331678433974542.70606255153841131310412317436720'); + T('4990606690039884835950094377597511034291,50000000000000000000000000', '99812133800797.69671900188755195022068582'); + T('880848777307,10', '88084877730.70', '10550849'); + T('117189165353141,500000000000000', '0.234378330706282'); + T('3696766657880426699915213404988822821636621907807,500000000000000000', '7393533315760853399830426809977.6456432732438156140'); + T('136878149428912649758117905461610548699832354530413221,1000000000000000', '136878149428912649758117905461610548699.832354530413221'); + T('247112873960438003987375929845431961097478236423759,50000000000000000000000000000', '4942257479208760079747.51859690863922194956472847518'); + T('32090761171034587720265676015278308236143,372372', '86179307711198983060664271253688000.8060299915140599804368969', '803032'); + T('3614723886086134485880643254470683475022113,2000000', '1807361943043067242940321627235341737.5110565'); + T('865224903023822325262781,300218', '2881988764910239643.4017314085126964034449762676', '532601'); + T('611185005509628,9139', '66876573532.07440639019695013008058748', '4159302'); + T('1518595063109297520311975384,5', '303719012621859504062395076.8'); + T('49679411118006488713997,857', '57968974466752028837.802807564217277428', '895'); + T('88166434473746490289165987929145035778940246272,282622141', '311958695669729889595472238422909108805.2448313736325421133448741444545', '385416267'); + T('18629257493748797005,3', '6209752497916265668.3441723459', '10'); + T('3105722390606004795903600587554457,8015259', '387476236339462616978889963.2007471', '8184974'); + T('186363420925320576328934,21515', '8662022817816433945.104996514626241666816484709452865', '37212'); + T('2487576402639632794634694150901775257367,500000000000000000000000', '4975152805279265.589269388301803550514734'); + T('124421130067284418607320404,18230353', '6824943547022069106.79789930562507372336112189652537764238', '26966531'); + T('7137130635754072199223,3556', '2007067107917343138.139201473525306155357', '3856'); + T('112942288681912873203,25000', '4517691547276514.92812', '505601099'); + T('1431788138645392811436351585868528725106020877729648867279053,1562500000000000000000000000000', '916344408733051399319265014955.85838406785336174697527505859392'); + T('3234595666430613200570074711,125000000000000000000000000', '25.876765331444905604560597688'); + T('3771991535846550543543187642939268809849,113246271', '33307865261599214543171912856532.545869426464382214773370432169717071927', '1862546449'); + T('159328743982472447,10889954', '14630800459.07195264553', '62191463'); + T('19156099060539,200000000000', '95.780495302695'); + T('2459812065130292014604235393568931103851693517,25000000000000000000000000000000', '98392482605211.68058416941574275724415406774068'); + T('14081093976643671519,2', '7040546988321835759.5'); + T('1398718931796139131570704959571446329,250000', '5594875727184556526282819838285.785316'); + T('226057240496116726752712879,73578', '3072348263014987180308.147530511915', '99443'); + T('794112996051185221451708830987876881997,100000', '7941129960511852214517088309878768.81997', '106276919'); + T('8216044054806771996810629067,22837', '359768973805962779559952.229583565335247922821497', '25456'); + T('23807055304320404163339151165491853782535135991908506357626995217,500000000000000000000000000000000000', '47614110608640808326678302330.983707565070271983817012715253990434'); + T('3531469840127598977918199412295084056732447544259170233,500000000000000000000000', '7062939680255197955836398824590.168113464895088518340466'); + T('7074869431756164165861127913754839263,188036', '37625079409028931512375970100166.13447956773725419869171', '551328'); + T('116727432190485304215216347036665233873946214267,200000000000000000000', '583637160952426521076081735.1833261693697310713350'); + T('322222287817074340496094,4519846351', '71290540163115.0139280683703046524993660939348992959', '4821696804'); + T('3220195518339602136340818267702090777236019441295,6573210637', '489896900642954724826783041016686466674.0816389412472740753393', '6620677169'); + T('4979158772221132031066953552941723189,1000000', '4979158772221132031066953552941.723189'); + T('8737425880160915911998771,1', '8737425880160915911998771.12725422920', '1'); + T('323045767198973747297480019029873,446', '724317863674829029814977621143.2130109419902482321169979691406', '573'); + T('640289857462018471811912,23805611', '26896594145893523.6659925258797173744700212383', '26827286'); + T('4449327148350034505583562687233,50000000', '88986542967000690111671.25374466'); + T('25753316144627889753,100', '257533161446278897.53', '6528003920'); + T('3986906378997449549838631393557,100000000000000000', '39869063789974.49549838631393557'); + T('6265774677875908010545250165153745,700772', '8941245765920881557118792082.380210681934346581057360805031205825124', '928104'); + T('230083713653,500000', '460167.427306'); + T('19377991,21577587', '0.89806107606008', '49239725'); + T('38710794736631001569771,1', '38710794736631001569771.012260896821016342565', '28'); + T('10037882653,349139894', '28.750317066316116827', '647871852'); + T('3333245366687,4471008', '745524.3575245224343350924369527004181', '6167413'); + T('26769493351047347344386695666057,50000000000000', '535389867020946946.88773391332114'); + T('1621363436291186251405436340171,5232692', '309852641105416915691853.512526821758252648366658861942981640', '7299049'); + T('4550392744783143007699048628173,20000000000000000000000000000', '227.51963723915715038495243140865'); + T('797141000219512098778764678119786879,867317228', '919088165765700780912845741.5119936704405', '962488946'); + T('14904132191968276587297737169053358300443,200000000000', '74520660959841382936488685845.266791502215'); + T('91470701131037383295747,1000000', '91470701131037383.295747'); + T('27753892633682075,3', '9251297544560691.601', '4'); + T('1788334345204020429620861096201,50000000000000000000', '35766686904.08040859241722192402'); + T('4612688956079856295802362391039,100000000000000000000000000000', '46.12688956079856295802362391039'); + T('161347204015,23', '7015095826.738876208769833554', '47'); + T('20600465972959782785256431550761005019024,339', '60768336203421188157098618143837772917.474927302472', '502'); + T('1062891113749632541,702810', '1512344892289.00064170970827727498908573320667399924', '2943629'); + T('286820046488752611155983,5611503', '51112874124588833.1799845781067795486147680004500944874455', '9222645'); + T('55268920261272895079460750602209,6', '9211486710212149179910125100368.0869540216384846614405', '6'); + T('147110482766595420803446985119783296,1', '147110482766595420803446985119783295.962905368965408966', '8'); + T('8584260220485230830750630108611597500009840276389875279,100000000000000000', '85842602204852308307506301086115975000.09840276389875279'); + T('45997967047497611745453,100', '459979670474976117454.53'); + T('25322562031741252483400559,1000000000000000000000000', '25.322562031741252483400559'); + T('7588887,2056', '3691.09289882762466516742', '8887'); + T('823890318784964048554080494714815498182966138912381,100000000000000000000000', '8238903187849640485540804947.14815498182966138912381'); + T('9304855287990530136771405094519,1', '9304855287990530136771405094518.82504', '2'); + T('47011776728314188266315200417504146431,1000000000000000000000000000000000000', '47.011776728314188266315200417504146431'); + T('2466085134442399070795709748333417449542855462250787166784205121205109,500000000000000000000000000000000000', '4932170268884798141591419496666834.899085710924501574333568410242410218'); + T('3442044952553264476,7', '491720707507609210.91163844234598216', '7'); + T('80868288238431,874004803', '92526.1371114353018034864163941998778367260', '931966805'); + T('6985103397660981071,7353', '949966462350194.624098996515677191782270599392137132201', '7793'); + T('468653409753396391457767631,5000000000000000000000000', '93.7306819506792782915535262'); + T('60,1', '59.9083995049887984453397720', '2'); + T('1585744058865312687896395129349,250000', '6342976235461250751585580.517396'); + T('20479199716624053465947561943251653,500000', '40958399433248106931895123886.503306', '4535856588'); + T('3479780591056475652402107167313793111293,5', '695956118211295130480421433462758622258.6'); + T('467879214344174541429051133613371644281991908668101132848827627,50000000000000000000000000000000000000', '9357584286883490828581022.67226743288563983817336202265697655254'); + T('3780398268842275439375533,500000000000000', '7560796537.684550878751066'); + T('599108489,11', '54464408.05188181950959', '11'); + T('215021045713727250783388053394109267617,4166009', '51613197598403472192063928185010.9463558528077204341344511373832016128195', '4179908'); + T('159241433857,5000000', '31848.2867714'); + T('160936670389208853641372968978236488980668850585131,500000000000000', '321873340778417707282745937956472977.961337701170262'); + T('2370282706660426694332478,23799509', '99593765008363268.9368708404866667088069121270797650', '24298070'); + T('597763381558982555051400082606522098999937129,100000000000', '5977633815589825550514000826065220.98999937129'); + T('4431461,1000', '4431.461'); + T('8250115774778471280985677882646125194730659155862382409,100000000000000000000000000', '82501157747784712809856778826.46125194730659155862382409'); + T('12205438,45', '271231.955313', '47'); + T('19202320927991171,2', '9601160463995585.5'); + T('73746355649075260,3', '24582118549691753.331713657589540437', '9'); + T('47309,1769001', '0.026743342711584657', '4015485'); + T('1926643365791669364845561,8927875671', '215800873218910.819759058112', '8935017174'); + T('8952538174202125514384339,585', '15303484058465171819460.40854848482726775573160880288331876238', '946'); + T('171044475643258691052591881190402011,2500000000000000000000000000000000', '68.4177902573034764210367524761608044'); + T('1417176227509505,17149674', '82635753.164142070572304998841', '20372906'); + T('3380729603876017655487973251773669209031,27845', '121412447616305177069059912076626655.0199676781941', '40016'); + T('890269765213404348432913996063275824595152162733,100000000000000000000000000000000000', '8902697652134.04348432913996063275824595152162733'); + T('664601293959812682633636004618957911435231667680903297856881,20000000000000000000000', '33230064697990634131681800230947895571.76158338404516489284405'); + T('778481676645324115540463089347,20000000000', '38924083832266205777.02315446735'); + T('75705502543433,7812500000000', '9.6903043255594240'); + T('81546124479956359876565726669992644826500740941,100000000', '815461244799563598765657266699926448265.00740941'); + T('24701,4', '6175.250206214726482', '51'); + T('5311817589061598103376746873687003094342952495326331677278701943,12500000000000000000000000000000000', '424945407124927848270139749894.96024754743619962610653418229615544'); + T('587612851301963849841025647818575969,100000000000000000000000000000000000', '5.876128513019638498410256478185759690'); + T('717873356,808272029', '0.88815810796788070', '942302647'); + T('8684149473480042958819491590345594042855,92', '94392929059565684334994473808104283074.5108197400739669029736', '109'); + T('557213,6836', '81.51155646233081505773189164', '13939'); + T('6358852540742501026007669889675383610909273172987401669,100000000000000000000', '63588525407425010260076698896753836.10909273172987401669'); + T('9613,1', '9612.9773812129992689657249691195343', '10'); + T('286113583488621159688740779858763238199941269901,1000000000000000000000000000000000000', '286113583488.621159688740779858763238199941269901'); + T('462642039300426299179091176857436950199,413144', '1119808200773643812276327810297225.54411778943845784669037258980', '1448446'); + T('627912942633907772006040,1', '627912942633907772006040.0'); + T('8887831015869015364122580184912527,100000000000000000000000', '88878310158.69015364122580184912527'); + T('25269814867297462150639281025731,5000000000000000000000000000', '5053.9629734594924301278562051462'); + T('99529184605,1', '99529184605.0', '650785'); + T('1658758680465486368314728898678949517,1981', '837334013359659953717682432447728.17617366544553', '11197'); + T('7,1', '7.056759118252905562', '2'); + T('2194117028293242686416582588432860977,5000000000000000000', '438823405658648537.2833165176865721954'); + T('47876011607044241,59126929', '809715850.573674154461835825714251915075523523', '4052259112'); + T('10497951457730554025955004980575188440216805387873,200000000000000000', '52489757288652770129775024902875.94220108402693936500'); + T('185573471761473313640214816617129543,200000000000000000000000000000000000', '0.927867358807366568201074083085647715'); + T('13136066791,2000', '6568033.3955', '857278646'); + T('786449314441,10000000', '78644.93144410'); + T('258069327759691253346816792459688368610750867,50000000000000000000000000000', '5161386555193825.06693633584919376737221501734'); + T('2400603934155970960994087661933,100', '24006039341559709609940876619.33', '52973663'); + T('53787312868755909573338050263817591013,1000000000000000000', '53787312868755909573.338050263817591013'); + T('65846043893884622068872344771627703174979234269,1000000000000000000000000000000', '65846043893884622.068872344771627703174979234269'); + T('413208107310727259011301805,1', '413208107310727259011301804.818566766164839933798622982', '1'); + T('380767438123951525794980657112504797825,680920177', '559195410835874710458140319012.02539607663880400492014675272', '689501446'); + T('3834864268417157885795059233263411,50000000000000000000', '76697285368343.15771590118466526822'); + T('291722167388405104196504,669403279', '435794350789854.8913389831184259847904358843278386', '904770649'); + T('32620215359,500', '65240430.718'); + T('1796562823633852909577,2', '898281411816926454788.285872', '2'); + T('427388755061110023176602282445173618523399130350681998042193349558569077343,5000000000000000000000000000000000000000', '85477751012222004635320456489034723.7046798260701363996084386699117138154686'); + T('6120788215815611148178349402985667902090005391,2500000000000000000000000', '2448315286326244459271.3397611942671608360021564'); + T('5152513511677523,168', '30669723283794.7797667708156960783', '283'); + T('310212151,2', '155106075.4712372', '4'); + T('4699524488896952877010,3', '1566508162965650959003.35067266814212548734090212433985', '5'); + T('70596591,100000', '705.96591'); + T('69579827425857277909,7355044059', '9460151002.1841295279996092270403052', '7426098425'); + T('96855367597936633192863,100000000', '968553675979366.331928630'); + T('8688367572560606063,100000', '86883675725606.06063'); + T('28879513,100000', '288.79513'); + T('18800652833943208658107123506275565438787,40', '470016320848580216452678087656889135969.675'); + T('1146931396095000518282937400043083943334700,4602527', '249196016904409364308549933556736102.435618520', '8225878'); + T('2019756551427915738961933054973199346876419,5000000000', '403951310285583147792386610994639.8693752838', '741757710767379773640708586558'); + T('159260774150855645667623300326629,10000000000000000000000000', '15926077.4150855645667623300326629'); + T('63365344813375864020105079652680969461686025291,10000000000000000', '6336534481337586402010507965268.09694616860252910', '688235748647978162333833362258291330722279331'); + T('1461532669,5000000000', '0.2923065338'); + T('390058219943639629654109687634774504333495620881,1000000000000000000000000000000000', '390058219943639.629654109687634774504333495620881'); + T('299225805773161690264821787540667,5000000000000000000', '59845161154632.3380529643575081334', '2584812000841991553143215804559645'); + T('81603234217578447206418101677952309588084613059984751910997827257167,156250000000000000000000000000000000000', '522260698992502062121075850738.8947813637415235839024122303860944458688'); + T('2565677724908492708768279520615817013536305135641817470099879036,374196298701793888137550171191', '6856502145557413849706463648425482.701677508664756140796680003271200', '869790929515477340097538635993'); + T('9612780561,1000', '9612780.561'); + T('936512323689541548094571523023523188200531,1000000000', '936512323689541548094571523023523.188200531'); + T('152234006509072541435610651574042873,25000000000000000000000000000', '6089360.26036290165742442606296171492', '11857604157972831619815396931384638829511784605'); + T('64208688601822739753865109352559333654371,2631857012', '24396723799606914113715957967308.95259380109514855361003', '576672018138'); + T('13680813615256177,5000000', '2736162723.0512354', '5926568749173865070557'); + T('12399570290333756330011977724487093294866653,500000000000000000000', '24799140580667512660023.955448974186589733306', '67333132803983266789655187746269204'); + T('4506349014426198904317777807334981419,500000000000000000000000', '9012698028852.397808635555614669962838'); + T('725431855797035508085239096174824869288283239,100000000', '7254318557970355080852390961748248692.882832390'); + T('355915386841717685353688119260713,100000000000', '3559153868417176853536.88119260713'); + T('2914867717398323136217,100000000', '29148677173983.23136217'); + T('1326209433713162649634239109961037850584868175033,10000000000000000000000000000000000000000', '132620943.3713162649634239109961037850584868175033'); + T('4778160350176337979760052281234320029,10000000000000000000000000000000', '477816.0350176337979760052281234320029'); + T('86665339051641131146005186162442032968947419505854245963,125000000000000000000000000', '693322712413129049168041489299.536263751579356046833967704'); + T('430351447085339973547588264756339950843789831043,500000000000000000000', '860702894170679947095176529.512679901687579662086'); + T('55525130114430055347694274663,763982638008', '72678523505724782.1378481069695424350', '850916842740'); + T('220792158460126762184413874181,10000000000', '22079215846012676218.4413874181'); + T('94783059874905327086792198452757929148500148142136001437,250000000000000000', '379132239499621308347168793811031716594.000592568544005748'); + T('6488407113121033385211896005019711681817,100000000000000000000', '64884071131210333852.11896005019711681817'); + T('47333842438492360793095254962373810441359677680855935665786394332060804133207,500000000000000000000000000000000000000', '94667684876984721586190509924747620882.719355361711871331572788664121608266414'); + T('2367138419900331631616148353601561797867243729737608115661,100000000000000000000000000', '23671384199003316316161483536015.61797867243729737608115661'); + T('88626039212907148865042680324936804431893182827,10000000000000000000000', '8862603921290714886504268.0324936804431893182827'); + T('134036367111046300205853082693215909752923821078333787,2000000000000000000000000', '67018183555523150102926541346.6079548764619105391668935'); + T('1290426619008005556475919972597725061539536069,25000000000000000000000000000000000000', '51617064.76032022225903679890390900246158144276', '964910734608101784280721264706455020684'); + T('51515831610611387382745267,6250000000000', '8242533057697.82198123924272'); + T('7952216990048092855359353056111362078447011828178913246364701327,10000000000000000000000000000000000', '795221699004809285535935305611.1362078447011828178913246364701327'); + T('538015045243626212422430662564753243027945021916339128227,100000000000000000', '5380150452436262124224306625647532430279.4502191633912822700'); + T('43577529369368712265446116906547230280422309612453,500000000000', '87155058738737424530892233813094460560.844619224906', '796419722408512060993'); + T('1161347707886748476637875642925084188220298315962357581,891732452430846866981741483', '1302349942206247176394632274.42078366656260573729837386635563', '979302956680189066606017794'); + T('1528624826136387009578521,25000000000000', '61144993045.45548038314084', '8024287939412517568729347651281075'); + T('3355746698476190015402680252180735699888853,50000000000000000000', '67114933969523800308053.60504361471399777706', '8915896738291537715389083695879542442064029'); + T('980289651663460623618247173,100000000000000000000000000', '9.80289651663460623618247173', '644505847543429115712324396'); + T('51055624915620324003432130818561734442539,10000000', '5105562491562032400343213081856173.4442539', '2809024769655863489136966521'); + T('41875396716460469922985854768609021869387681761,125000000000000000000000', '335003173731683759383886.838148872174955101454088', '216625103073443887003029267945'); + T('105780502837966983,13631', '7760289255224.633775993192903826796476494397758857808', '13861'); + T('1938155266888975965598512083832127,251657941372', '7701546219135603482029.870015176732906490144727404299117584', '547888565206'); + T('99954595750029,10', '9995459575002.9'); + T('4249542002102445996878781,10000000000000000000000000', '0.4249542002102445996878781'); + T('485671,250000', '1.942684'); + T('13356987302624015208420862387472998,746681507193', '17888466734413902028886.0311842409055156116317714302570867', '849696537110'); + T('2668448503233496883227988430416595281601,1000000000', '2668448503233496883227988430416.595281601'); + T('3640373983168722911281713865270438495806072129379784031313632242881734911,50000000000000000000000000000000000', '72807479663374458225634277305408769916.12144258759568062627264485763469822'); + T('1818728887,200', '9093644.435', '476185163436332077972781497090111043581420'); + T('802345758447757541858014527779737950265044017,1000000000000000000', '802345758447757541858014527.779737950265044017', '8387249919619107142865224089883458341020176321'); + T('595208804134258162637737,100000000000000000000000', '5.95208804134258162637737', '900644264372865329335187168932351592714013'); + T('13988441958679191876839735942604595286414864789,100000000000000000000', '139884419586791918768397359.42604595286414864789', '5655831590440584955875'); + T('2085083269139810791270306641073124298284478872355022690995133,50000000000000000000000', '41701665382796215825406132821462485965.68957744710045381990266'); + T('63143145632769116262051260423942651269,1000000000000000', '63143145632769116262051.260423942651269'); + T('1407997631298057561573924769518255515279313425669860717,10000000000000000000000000', '140799763129805756157392476951.8255515279313425669860717', '327937261477572180619558003617237646356733892'); + T('270833075343099303551865182416448009,1000000000000000000000000000000000', '270.833075343099303551865182416448009'); + T('9108779,100000', '91.08779'); + T('1290586935123071,1000000', '1290586935.123071'); + T('469132037299556835463,1000000000', '469132037299.556835463'); + T('455380269621149826,1', '455380269621149826.0', '29816950548028'); + T('59036688354560778646766626225702807845034056189868056799,100000000000000000000000000000000', '590366883545607786467666.26225702807845034056189868056799'); + T('134877717700773438669846465447856699885143,400000000000000000000000000000', '337194294251.9335966746161636196417497128575'); + T('16122989466646638395384532997642495,812372', '19846805978845453062617289859.377840447480619999019072107458825800245', '1022628'); + T('41676689473,419541', '99338.776122', '477053'); + T('948783386589836295531621640054416694045428069792652292815184843252620407087997,10000000000000000000000000000000000000000', '94878338658983629553162164005441669404.5428069792652292815184843252620407087997'); + T('183987075285353368451987553220870945911,100', '1839870752853533684519875532208709459.11', '4771405818636333119008616393205342343236'); + T('8284467081338201094106418401321,1000000000000000000000000000000', '8.284467081338201094106418401321'); + T('126835799338565188592427149928234243606839,20000', '6341789966928259429621357496411712180.34195', '487302037789409112102552330066366980508855813174'); + T('202777274382581430728017680787579982546489517,229892480925189939516479', '882052660298045344051.7919993163515770841250643782458114275328', '746044076719153861455150'); + T('3738015590431,5', '747603118086.2'); + T('301106896154595422209552298959107137373547203141065553859057389421821,250000000000000000000000000000', '1204427584618381688838209195836428549494.188812564262215436229557687284'); + T('341334346359,543174817', '628.406059478637427329224571381873725166216', '876128137'); + T('465138295089535296259774745663038553386930899198195570591,20000000000000000000000000000000000', '23256914754476764812988.73728315192766934654495990977852955'); + T('82769483306049,10000000000', '8276.9483306049', '33839355334'); + T('556953498133884269,68', '8190492619615945.13225248677717', '92'); + T('45318755494241836794770073,1000000000000000', '45318755494.241836794770073', '1253935394801806614019883297829417163126525'); + T('1858914525035831826768925339743,200000000000', '9294572625179159133.844626698715', '31391560509860145405596'); + T('425343351349790045976513159948568763820438862683367,100000000000000000000000000000', '4253433513497900459765.13159948568763820438862683367', '7721074673031296384304307266121470119427'); + T('71354211162897369216945850343222823881026041367233,100000000000000000000000000000', '713542111628973692169.458503432228238810260413672330', '144939713832937271061627357504826456742'); + T('144714939860168363453308091038982,4284977', '33772629318703079025466902.398538428561', '5618239'); + T('2317035080099534328156555098955006964997947989671,5000000000000000000000000000000000000000', '463407016.0199068656313110197910013929995895979342'); + T('12220710712628394678137945125840492835,295726726654365551281703', '41324336325243.639147174633347897967505321910146183513', '461406359261841272137912'); + T('4164103,50000000', '0.08328206'); + T('7502614012109051682244916192266750188051123,100000000000000000000', '75026140121090516822449.16192266750188051123'); + T('323880445913,500000', '647760.891826'); + T('58136053747539046641739287759965480752,70045887', '829970983842906388518419186553.60136637287497', '86239491'); + T('50255437,100', '502554.37'); + T('450233554293111245876449378888745591234681102067569,5000000000000000000000000', '90046710858622249175289875.7777491182469362204135138', '3810754204488023014210763363'); + T('200222822546125679699429097695077,100000000000000000000000', '2002228225.46125679699429097695077'); + T('3783671589181030205501527752342356874517572828977,500000000000000000000000000000000000000', '7567343178.362060411003055504684713749035145657954'); + T('40048820082402526973,30', '1334960669413417565.766541760088934259233455362', '55'); + T('19682241,5000000', '3.9364482', '2938089409064663302584899743202354591655563930'); + T('3847570170988597157763381309021862223325329,1000000000', '3847570170988597157763381309021862.223325329'); + T('302871942581513778978519519,50000000000000000000000000', '6.05743885163027557957039038', '7739846393033927255652731261656491478657146'); + T('326080663059742589574506673375771249877,100000000000000000', '3260806630597425895745.06673375771249877', '550868828960159419120535470417267167'); + T('96832187539664765931343834203105130885992737,2500000000000000000000', '38732875015865906372537.5336812420523543970948', '3389413421383652579250716211200348'); + T('271852185141591302785258831339,100000000', '2718521851415913027852.58831339', '326060519878426625637075641056508361'); + T('48700692997319228087245485443026803016745947787367383,5000000000000000000000000000000000', '9740138599463845617.4490970886053606033491895574734766'); + T('40758214623530792633726096531289862600019220056526601,50000000000000000', '815164292470615852674521930625797252.00038440113053202', '5221210587873615917315733'); + T('1241221035324719632397392464340037510556481149089904847941523,10000000000000000000000', '124122103532471963239739246434003751055.6481149089904847941523'); + T('48037863508976458691221362323501021215551,4882812500000000', '9838154446638378739962135.0038530091449448448'); + T('193622000346959273707446061164100672839811,2143395561', '90334235952520606021468783458071.49539011805390223029', '2265033200'); + T('67783685294777359438349711011,20000000000000000000000000', '3389.18426473886797191748555055'); + T('12617473737636720451218269740609659622541624,159627839', '79043065524659019227957284697750369.36095854808884558276454809642992365632', '174329681'); + T('9684474818082811551223783413257727824992067,1562500000000', '6198063883572999392783221384484.94580799492288', '49209400621412262419'); + T('17505591753702885777016987703565333702388539,2500000000000000000000000000000000000000', '7002.2367014811543108067950814261334809554156'); + T('947913360646751474137651443537325162671,95614802879262668687699', '9913876639412481.794682748986875680160639360860844', '97032668484031432706648'); + T('87432797,2000', '43716.3985'); + T('52266359279671923770562530491,1000000000000000000000000000', '52.266359279671923770562530491'); + T('934519820781022674420129570582560225765920330071,12500000000000000000', '74761585662481813953610365646.60481806127362640568', '8642213980970552163513'); + T('50083810531494711281387558,56570303851847', '885337484887.12586165119274913582149678253727190', '78326898482642'); + T('3972190938628200176537,10000000000', '397219093862.8200176537'); + T('18121256332358987866268770477428593607665037,200000000000000000000000000000', '90606281661794.939331343852387142968038325185', '921193442621072417175235574539201255016'); + T('14987898155158472518478544881232078802611860873609524963,2500000000000000000000000', '5995159262063389007391417952492.8315210447443494438099852'); + T('3239212309823789165605527377995418545725605705,14170665490304070723367973333508266', '228585757813.57202362946598425863064253567493626119', '86979626336746925002222279115462537'); + T('122185041583802144366142,5', '24437008316760428873228.4', '8000951389854267175050'); + T('657574695679001861295665451464661555661,10000', '65757469567900186129566545146466155.5661', '2507718086460574385741706208476049260047621469'); + T('6360428604897138048594396059747553,10000000000000', '636042860489713804859.4396059747553', '244160781758980'); + T('21351223921251662111677047871929368,23', '928314083532680961377262950953450.7838973425314927418923934606452990487', '30'); + T('289499461511853909335456535686028099405454280671300094239293194461506601099,5000000000000000000000000000000000000000', '57899892302370781867091307137205619.8810908561342600188478586388923013202198'); + T('976859569751666674770433143725255060903,2000000000000000000000000000000000', '488429.7848758333373852165718626275304515', '192870444813125961651197355653979526967'); + T('8711911,24', '362996.29144884884', '91'); + T('47961961919420699035752271439053656196891,1000000000000000', '47961961919420699035752271.439053656196891', '1432836513794575009230872452783621'); + T('36002186243558704970796134460620318473988856831,2500000000000000000', '14400874497423481988318453784.2481273895955427324'); + T('347658515811,125000000', '2781.268126488', '18168322069934165333666594401837841045656351551'); + T('4744824007215869949704323431169019043851337919936522927179,10000000000000000000', '474482400721586994970432343116901904385.1337919936522927179'); + T('18647457854156074231876861461127052818609195520980488636185434563,50000000000000000000000000000000000', '372949157083121484637537229222.54105637218391041960977272370869126'); + T('88636422031310834818570712943870555589,10000000000', '8863642203131083481857071294.3870555589'); + T('8907393333063962550030633954046846122487647,500000', '17814786666127925100061267908093692244.975294', '738024193644869313081788449951849'); + T('5347810730899001839326028336703,1000000', '5347810730899001839326028.336703'); + T('83499427757,10000000', '8349.9427757', '537893050789928685742496508297'); + T('91030793284677869802,1', '91030793284677869802.0', '54365179780137798417812339693'); + T('139576870289544319,15393617308715296', '9.0671911280086886680514259430164', '34314606681915854'); + T('526728365945557273665550256298589878104412618423937,1250000000000000000000', '421382692756445818932440205038.8719024835300947391496', '914852587643922476861639338196683814291555'); + T('818477009119923314771842558536624613582668934883,20000000000000000000000000', '40923850455996165738592.12792683123067913344674415'); + T('164078868342751098016,64915', '2527595599518618.1624586', '69194'); + T('293978517263308243537157587247782681150732925,5389019', '54551397436770633678811966936428073671.80054941353888320018', '5423880'); + T('16896047083967,200', '84480235419.835'); + T('104972899545933771066622411344760258240458360899093,10000000000000', '10497289954593377106662241134476025824.0458360899093', '7205746832408993529175409871720727602599'); + T('721550565141436165,78491572038293', '9192.7138978617930051035079340183063425', '114711958041391'); + T('642808470971740957339375857676583667488830045491443,2500000000000000', '257123388388696382935750343070633466.9955320181965772'); + T('25547609239638147055212848154480190930531,1000000000000000', '25547609239638147055212848.154480190930531', '956611854763149744692116271165'); + T('63725524120161766602391195314216892192697,100000000000000000000000000', '637255241201617.66602391195314216892192697'); + T('5135812052028819027098843325324594885149,100000000000000000000000000', '51358120520288.19027098843325324594885149'); + T('53823225503436626111601,100000000000000000', '538232.255034366261116010'); + T('84772164557665415263075633416115167894928760949624252554563147439736263703,10000000000000000000000000000000000', '8477216455766541526307563341611516789492.8760949624252554563147439736263703'); + T('6769664484487816999120299051126228678705642768668574797742,193743613880784562681728605', '34941355479481073234753500993749.9459542322571041925382270549294049381061', '211314918688969418804736477'); + T('924366516845377679336424,1162633928094070467838273', '0.7950623962614875520469822998', '1975805181618643839348076'); + T('77572007179,100000000', '775.72007179', '11829149976320'); + T('334089623626745537032388435915351225103753617,50000000000', '6681792472534910740647768718307024.50207507234'); + T('13498748436005386978369839564419223032439008199537017,100000000000000000', '134987484360053869783698395644192230.32439008199537017'); + T('90490381500830768647702025423,125000000000', '723923052006646149.181616203384', '961797459451554264950219276775915317946969734'); + T('5122161348451940740499291,10', '512216134845194074049929.1', '394574323186626013065489993123031'); + T('647855253,1', '647855253.0'); + T('6739958677034739744526166360174781560887228448458551401840878517716909,1000000000000000000000000000000000000000', '6739958677034739744526166360174.781560887228448458551401840878517716909'); + T('29091323665776070746692915891291406784815,515462320066', '56437342814992192098354407772.812600292121', '529393438698'); + T('496334264543794411305432918384584691,50000000000000000000000000', '9926685290.87588822610865836769169382', '29049581566777794866190221032687140418'); + T('8753315153638170826059223897506472318301157473753,1000000000000', '8753315153638170826059223897506472318.301157473753', '85364248144953441121602575793592689255772062'); + T('403542021675968571796035012464419951,4287', '94131565588049585210178449373552.589456498753402006170187050920091', '7569'); + T('594350241966914532560460828210265427161371137,10000000000', '59435024196691453256046082821026542.7161371137', '37574267571308361093683177199409609584373'); + T('15073005193012506,4955', '3041978848236.630877878990635453002381471', '5133'); + T('13262456470877201216542736093570139,200000000000000000000000000000000', '66.31228235438600608271368046785069500', '774102365994926801596084747934965835393944101916'); + T('294594117792262322334048360348006989133,100000', '2945941177922623223340483603480069.89133', '5284650921380'); + T('2036856646580353988754209669686648294707,1000000000000000000', '2036856646580353988754.209669686648294707', '29099065293427480893828927261338'); + T('180007401117801177,24077', '7476321847314.9136935645446918134', '26301'); + T('754812580262694694896295635929668953,1000000000000000', '754812580262694694896.295635929668953'); + T('46737787953832186777355613171050728218666711,500000000', '93475575907664373554711226342101456.437333422', '691648681170749354'); + T('190706002804671951924923171009850382212424001290162408147668760121797397,100000000000000000000000000000000000', '1907060028046719519249231710098503822.12424001290162408147668760121797397'); + T('876656568077577748604467778917147906790921181,5000000000000000', '175331313615515549720893555783.4295813581842362'); + T('6537572759474510978019763055947,2500000000000000000', '2615029103789.8043912079052223788'); + T('4084064084496559348260554164312115397804071,10000', '408406408449655934826055416431211539780.4071'); + T('7624072166846972160236154899045401668245306574381,10000000000000000000', '762407216684697216023615489904.5401668245306574381'); + T('177905487516777613587301880159113906479,195312500', '910876096085901381566985626414.66320117248', '6176184286'); + T('61831932067541525703246230050884,1', '61831932067541525703246230050884.0', '38989042121550969073469994280949'); + T('2726,501', '5.4411176792808', '776'); + T('303592203692208117214,635873', '477441570395673.5342025844991732249', '649536'); + T('550810457267856795577333963103167983,1000000000000000000000000000000', '550810.457267856795577333963103167983', '613145053953638371365146050566423'); + T('9612212037,125000000', '76.897696296'); + T('19854238142631550950262260304626082745471,37901467699', '523838240257787937603272504463.70854524809625103906310953', '40952250789'); + T('4544923928273434665236266014745010426628274,1096333144070264351987790901', '4145568299978486.279365051939148738458218639823299', '8537712898310208075262736912'); + T('290281008735066620365246906258552421932457445333,10000000000', '29028100873506662036524690625855242193.2457445333'); + T('1241037210471406591442469574953248591923111373602168667041493,2500000000000000000000000000', '496414884188562636576987829981299.4367692445494408674668165972'); + T('1861288631961340435812093,5000000000000000', '372257726.3922680871624186'); + T('4606419796132285145444663293643444818654488971283369022438656603,1000000000000000000000000000000000000000', '4606419796132285145444663.293643444818654488971283369022438656603'); + T('1669553057719,10', '166955305771.9', '8904226427748599439'); + T('12986349851069138804910894156891141,10000000', '1298634985106913880491089415.6891141', '899784234279572148861700827'); + T('67976496070837962006325629822530505039572859443166349265322123,1000000000000000000000000000000000000', '67976496070837962006325629.822530505039572859443166349265322123'); + T('14888274078142413593939188117,30', '496275802604747119797972937.2341911747299802284464386794810513', '39'); + T('1864264547760926364924249007253274324985177177877,100000000000000000000', '18642645477609263649242490072.53274324985177177877'); + T('641495287700451270339673,1782139719136440677413', '359.957909479339969376522560097960864', '3056779573484499009088'); + T('35386938150365066827946983062788302882742764047401931324672517379,500000000000000000000000000', '70773876300730133655893966125576605765.485528094803862649345034758'); + T('4777468662711829819443534803439171840234159,178583972921', '26751945230971166111811483364592.179982673703975838988713621959299431584', '437519908206'); + T('3483541015477817879719467546289485218183998679,2000000000000', '1741770507738908939859733773144742.60909199933950', '83159072643084822474226334121133568627'); + T('111029882872498,4311275609', '25753.3716101836903', '5409449457'); + T('5720723061390066,1169615', '4891116359.990309631802', '4121879'); + T('231690198058125307182393583380655131,100000000', '2316901980581253071823935833.80655131'); + T('785496570070925429293,20', '39274828503546271464.652502190252240978711699', '22'); + T('32844860194853812869198888570842117997979071035777472888657362673,5000000000000000000000000', '6568972038970762573839777714168423599595.8142071554945777314725346', '905302824861571794974789992'); + T('16498218387700361806672647974301337909169,6250000000000000000000000', '2639714942032057.88906762367588821406546704'); + T('242421647746889969,6067935407799844', '39.951257133567439718340905', '190386947376923275'); + T('84558420761363869643064360953349,10000000000', '8455842076136386964306.4360953349', '6083651091899923443690'); + T('3598344761346319138456455141169710488001767817863349,500000000000', '7196689522692638276912910282339420976003.535635726698', '6036430781596647112651702874946851436073'); + T('824416533850205237891728394872441,1', '824416533850205237891728394872441.0', '1270229614801297875'); + T('335030447307372600715767872105686598725232815951617004014831,50000000000000000000000000000000000', '6700608946147452014315357.44211373197450465631903234008029662'); + T('5315911067632204213000620089949667373095344325293668193104565,2501970004127297621628283', '2124690167693048092976376585227236996.721538833089666153400428951073', '171422422880513480794848980'); + T('82399859561,1000000', '82399.859561', '8007741850781315'); + T('9892854397114191944592435550624273099,500000000', '19785708794228383889184871101.248546198'); + T('482407510494718039597752127429518561787157,100000000000000000000000000000000000000', '4824.07510494718039597752127429518561787157'); + T('999219844563549589130339540247689,5000000000000000000000000', '199843968.9127099178260679080495378'); + T('32624665975434667774707373884930901627548640830986443495723665279,50000000000000000000000000000', '652493319508693355494147477698618032.55097281661972886991447330558'); + T('73322735201975172815448646322842399037093611,10000000000000000000000000000000000000', '7332273.520197517281544864632284239903709361100'); + T('5584344580393,2000000', '2792172.2901965', '67978301406759380237407609039081408522371172962'); + T('170698813505081259998189073431460004483981154768324955353,100000000000000000000000000', '1706988135050812599981890734314.60004483981154768324955353', '8303823206850919910010652520558244731932'); + T('703,10000', '0.0703'); + T('21213217171037545905806,1377', '15405386471341718159.6267247682855942563690178641195095', '2077'); + T('8296927175846011,250000000000', '33187.708703384044', '211191546934584837648'); + T('409552981550509729869340257571088152877592694961334449207,50000000000000000000000000000', '8191059631010194597386805151.42176305755185389922668898414'); + T('155027340589770073651612776,1737956327', '89200941462880657.099280939526163363777810267831118712467', '4986922301'); + T('167120807435010524556182779027297683324205827407507983577,436666647901481563398', '382719422786590845258091621853314922.96446004593674086717010', '702557026070523204786'); + T('441178720520318407454911830068962225120047224526619130534738920629112747,100000000000000000000000000000000', '4411787205203184074549118300689622251200.47224526619130534738920629112747'); + T('1869381106689425601212408179,250000', '7477524426757702404849.632716', '4624982'); + T('3317200487984067615668861775794559427256935200,6585479539550110485794411', '503714341235457458568.866804056313036956801153194', '6681245709808538985864323'); + T('3,4', '0.76011435975445459973959', '6'); + T('354884114822406966217620182813482001432151618849817803161826753,50000000000000000000000000000000000', '7097682296448139324352403656.26964002864303237699635606323653506'); + T('25087,50', '501.74', '85274653480326161797'); + T('650965999980720974038905679127117623356653858122009681,100000000000000000000000000000', '6509659999807209740389056.79127117623356653858122009681', '183925089257431510839976366871018952574324990'); + T('1751490441040021871522373727331,2000000000000000000000000', '875745.2205200109357611868636655', '75633648534698941212843963259058'); + T('26023193025631228939744774315993248032983335603365475283635011873374371768389,40000000000000000000000000000000000000', '650579825640780723493619357899831200824.583390084136882090875296834359294209725'); + T('321404575157883362782850293105646894530775907836460116367,3125000000000000000000000000000', '102849464050522676090512093.79380700624984829050766723723744'); + T('676431378140908951740507719346273515877844188802588789,125000000000000', '5411451025127271613924061754770188127022.753510420710312'); + T('3527866022768742962936331430909250221,1000000000000', '3527866022768742962936331.4309092502210'); + T('768670768316183532755914505999,1000000000000000000000', '768670768.3161835327559145059990'); + T('2363639937483203621,39891', '59252461394379.775413', '43820'); + T('1935991763481,5000000', '387198.3526962'); + T('84869849518884530417484124084533612955218764283953737717972,10107032631283871345', '8397108490200226398800083828224629264362.359197032737297920889324', '13064222726791451522'); + T('204886710340038538694354698793188156503362390502152775076648235731,5000000000000000000000000000000', '40977342068007707738870939758637631.3006724781004305550153296471462'); + T('1835971874232282120848076240479727,50000000000000000000000000', '36719437.48464564241696152480959454'); + T('18757216144126861202054952112882561,31250000000000000000000000000000', '600.230916612059558465758467612241952'); + T('1513207436951935998024078252323,21502756', '70372720452761311062827.400000399948732291662947549700417847500', '79362321'); + T('492152380966786320942977,1000000000000000000000000', '0.492152380966786320942977'); + T('322784976894366795182672726861732071108792529212189953293,500000000000000000000000000000000000000', '645569953788733590.365345453723464142217585058424379906586'); + T('6599835778515480731397541233194527935698039249154668674834348842207421,100000000000000000000000000000000000000', '65998357785154807313975412331945.27935698039249154668674834348842207421'); + T('2763733882920963372134959827,6250', '442197421267354139541593.57232'); + T('4493052127468834914347681261358393,1000000000000000000000', '4493052127468.834914347681261358393', '1917366645721044702863943'); + T('4165243072706279649913855214769337205676562643099363,50000000000000000', '83304861454125592998277104295386744.11353125286198726', '3369568246882905246798'); + T('40214993092834747603004055,592133223718', '67915447878984.246803347100480455192908487360291259358', '593784905929'); + T('104927737922243,5000000', '20985547.5844486', '74521293546'); + T('447244182767234345092627470873244541,1000000000000000000000', '447244182767234.345092627470873244541'); + T('3729,5000', '0.74580'); + T('1984341587249242120813988003214936078446236041737736626984039187,25000000000000000000000000000000000000', '79373663489969684832559520.12859744313784944166950946507936156748'); + T('109334915848204042748090967078741604879,500000000000000000', '218669831696408085496.181934157483209758'); + T('799850280431550021052452766407947249271905583022189,100000000000000000000000', '7998502804315500210524527664.07947249271905583022189', '2265487815011911855578344877035753'); + T('15005645256328535134146956704896053721,50000000', '300112905126570702682939134097.92107442', '959098942294647858855310128844058600617'); + T('284513580039738865694794020417628789,51896427813614457', '5482334565715520355.9164123103552051805461339353164', '608885290702033051'); + T('5611435160230836724036677212897508778352647894406598273,2500000000000000000000000', '2244574064092334689614670885159.0035113410591577626393092', '22586430234193957631479883247974'); + T('2257504637009351837615338885305884515151,24014872062235743869129', '94004441546010134.51153698433238353406039907857785325251', '337497026107271498961543'); + T('11961030675420279947461068675448705351,125000000', '95688245403362239579688549403.589642808'); + T('55042147389211604287,250000000000000000', '220.168589556846417148'); + T('8096641935000626379617912817593887056966796040651323,10000000000000000000000000000', '809664193500062637961791.2817593887056966796040651323'); + T('80403698814496577881,100000000', '804036988144.96577881'); + T('56530236925584442258099719084525496045476821,100000', '565302369255844422580997190845254960454.768210', '2085478950022'); + T('176510083304138788597014159,100000000', '1765100833041387885.970141590'); + T('194695119504918441713815809,100000000', '1946951195049184417.13815809'); + T('10419880141383547192692795964599686190836397501179348604845271327,10000000000000000000000000000', '1041988014138354719269279596459968619.0836397501179348604845271327'); + T('39904704373914275932765408749964211,10000', '3990470437391427593276540874996.4211'); + T('377154718786378953829563586363,500000000000000000', '754309437572.757907659127172726', '71111432644498937002116249698'); + T('4887809210859915472422967794086028102845277,100000000', '48878092108599154724229677940860281.02845277', '3695479757465231553301692211346874715665'); + T('2793736636935987847283419755276112581519780097583042817577,2000000000000000000000000000000000000', '1396868318467993923641.7098776380562907598900487915214087885'); + T('659750104347511676142213993755263489310617528836766246359807,1000000000000000000000', '659750104347511676142213993755263489310.617528836766246359807', '627804966532681570527289793642365197'); + T('465885672960721647139447,50000000', '9317713459214432.94278894'); + T('24074397538666586878367593,25000', '962975901546663475134.70372'); + T('5245705435294637571119386528576989827690767746698047845736131163241291317,100000000000000000000000000000000000', '52457054352946375711193865285769898276.90767746698047845736131163241291317'); + T('5068049704,72321', '70077.1519199125397539945071314731245643424', '83843'); + T('874564740796402183581390256952998902,9589359007', '91201585023356732021180261.663447689293503994887169401', '9860123179'); + T('181553923535320179726588305557,250000000000000000000000000', '726.215694141280718906353222228'); + T('6556143591220725641,1000000000000000000', '6.556143591220725641'); + T('2352354979582086906566789472880974692741621,500000000', '4704709959164173813133578945761949.385483242', '784087081050622276'); + T('1488083617458385838438378349131388911543068115734032699085102951249497989,5000000000000000000000000000000000', '297616723491677167687675669826277782308.6136231468065398170205902498995978'); + T('264579815467469,1000000', '264579815.467469'); + T('1538352201070219502279514358536457,20000000000000', '76917610053510975113.97571792682285', '21354906117089650290111715638'); + T('15722329841355833,100000', '157223298413.55833'); + T('4714260957941010403796629429189999850855093929869,50000000000000000000000000000', '94285219158820208075.93258858379999701710187859738', '30803072331334882951224000809043660'); + T('618425801728323030200807,10000000000000', '61842580172.8323030200807', '105985138218996171314403646219921'); + T('17448382674796873946013108235649557747459,50000000000000000000000', '348967653495937478.92026216471299115494918'); + T('45529397794072630857138473073,100000000000000000000000', '455293.977940726308571384730730'); + T('141465087,250000', '565.860348'); + T('17246099925359016508879876148711553304736078191,250000000', '68984399701436066035519504594846213218.944312764'); + T('2101258579700648429883582010633539413193707979287,50000000000000000000000000000', '42025171594012968597.67164021267078826387415958574'); + T('19873369192189503070833114340215357,100000000000000000000000000000000000', '0.19873369192189503070833114340215357'); + T('466815777276437858935139719637380455775922,237005', '1969645270253529921036010715543471470.120554418689640661226062605044220', '326529'); + T('269959,670534', '0.402603', '711489'); + T('34387358377391124546143226397815411955083664951,100000000000000000000000000000000', '343873583773911.24546143226397815411955083664951'); + T('37847045428231017995951348454896363,10000000', '3784704542823101799595134845.4896363', '720339608750233689017491098687232050524085'); + T('1735960832955491713580107966534128965678953034168488818485380597,25000000000000000000000000000000', '69438433318219668543204318661365.158627158121366739552739415223880'); + T('224192437577613620930013362114213113494689048262177491313573197479539,5000000000000000000000000000000000000', '44838487515522724186002672422842.6226989378096524354982627146394959078'); + T('12484340282845391902600,13508059694802606664561', '0.9242141776771164633050356530775932610539', '37252541001935408317724'); + T('115214077261487,10000000000000', '11.5214077261487'); + T('2958050889912784841,3643159', '811946689648.4026200887745906887963452131998', '5561403'); + T('827694940730584623592642676724234945522897,100000000000000000000', '8276949407305846235926.42676724234945522897'); + T('2546353200289710117989769402906610426930099,50000000000000000000000', '50927064005794202359.79538805813220853860198'); + T('6948521267340375164028079892940653337857575858806325681799,10000000000000000000000', '694852126734037516402807989294065333.7857575858806325681799'); + T('51227168953999260924,54854698290641', '933870.216231584893753966795960727850255527896', '81456633392018'); + T('3268599004367296653150629333,250000000000000000000000000', '13.074396017469186612602517332', '63486303090385390571705929886419628708915825065754'); + T('2942166843387188808794605445,4769444899383008874', '616878254.273950668243175338972426161', '5339655230978177566'); + T('239413121903268737233555547588419461449,5000000000000000000000000000', '47882624380.6537474467111095176838922898'); + T('63412373159131395132401586380914861773878046941905927937911236161547,1000000000000000000000000000000000', '63412373159131395132401586380914861.773878046941905927937911236161547'); + T('471747654685695831508453690945802340660145053437,800000000000000000000', '589684568357119789385567113.68225292582518131679625'); + T('891764513109420861505160319263,1', '891764513109420861505160319263.0', '918689638838436368865522030712717248752750323'); + T('3191887595,4', '797971898.75'); + T('121856597397345862613024522353232674108567324439,5000000000000000000000000000000000000000', '24371319.4794691725226049044706465348217134648878', '607506204583168148325583885842871519015786327'); + T('339040389167328399663612233561450019484519844493,50000000000000000000000000', '6780807783346567993272.24467122900038969039688986'); + T('38243,100000', '0.38243', '29337860446'); + T('8250342179921020599,1000', '8250342179921020.599'); + T('103452041851274523230988200830011,2500000', '41380816740509809292395280.3320044', '183359155743182533907906050197722073594351162073'); + T('252848083743402827,100000000000000', '2528.48083743402827', '503743383711879521120013355828612195'); + T('98069574418320559223875778928515122947287741711497297,1000000000000000000000000', '98069574418320559223875778928.5151229472877417114972970'); + T('63210643808681380191879692959261598285204021,10000000000000000000000000000000', '6321064380868.1380191879692959261598285204021'); + T('18241982295796176045680696249,250000000000000', '72967929183184.704182722784996'); + T('940517435169296832108127451,2', '470258717584648416054063725.5'); + T('55842359310373546663302494925523543342262143787999046184363835703,10000000000000000000000000', '5584235931037354666330249492552354334226.2143787999046184363835703'); + T('298991506390580492859083808694073988657502789821,10000000000000000000000000000', '29899150639058049285.9083808694073988657502789821'); + T('6930195055948617,10000000000000', '693.0195055948617', '5757907609830118853131884806500'); + T('3614496879689787374430705036518,101841455572128247685', '35491410245.30874016786935666286319487941134579', '195190430043812451482'); + T('153016231039501975524480588156505131693512848094041350606332993,34188657170984476841125800', '4475643201610302041685982836005246034.654308295479849660834145713924093080', '46378851978993763287521043'); + T('10030484490,1', '10030484490.0', '6598579459658967203976644647349896921'); + T('1355896469090076356140549902302865199527128695725221,2500000000000000000000', '542358587636030542456219960921.1460798108514782900884'); + T('38099363522125304202166422476325079802687,500000000000000000', '76198727044250608404332.8449526501596053740', '1090889184708266087570263218992'); + T('45445894379730855842101669571055419344067331,50000000000000000000000000000000', '908917887594.61711684203339142110838688134662'); + T('48387017662752417884217,5000000000000000000000', '9.6774035325504835768434'); + T('143145652784899539,50', '2862913055697990.78'); + T('89829636046825131956593468,1', '89829636046825131956593467.96758068078087', '1'); + T('2396938114331990504523927741558933050260578381,4400452737740717', '544702615204686384863075977771.218589328031376415328281017228242917', '4414423939286874'); + T('3647034409547,125000000000', '29.176275276376', '315898686604743'); + T('5657225048612832243372055670023410281,100000000000000000000000000000000000', '56.57225048612832243372055670023410281'); + T('2048923042589181698150868951283041,500000000', '4097846085178363396301737.902566082'); + T('22265,3654', '6.09332237707570340312178966387447', '7353'); + T('248385231997710097553022283051971775382681228677873,1000000000000000000', '248385231997710097553022283051971.7753826812286778730', '807422358051844497008514434773778070855'); + T('263427757666534908045161273191351480,3', '87809252555511636015053757730450493.35240699180867869447737776738648', '4'); + T('280765588944227665193509257500853588850373,4000000000000000000000000', '70191397236056916.29837731437521339721259325', '66471574477550907802775072350732179636393120'); + T('36902302597391526140987033687,5000', '7380460519478305228197406.7374'); + T('467727844444957446621571,530243516999456689', '882100.0718532815202598878323222458558', '2374163188160596325'); + T('7485818045096143742403867459891607342912851163218831484413,1000000000000000000000000000', '7485818045096143742403867459891.607342912851163218831484413'); + T('6617976493555127256572099691726271,878490192697848883004', '7533352732409.31694657454587818166126423', '1597982807060692539038'); + T('329306133931896629549389727842553925953320055555,37084658199', '8879848161598439046985423392402720037.627926029870431056848013', '90166908885'); + T('4454671579284887267233133029196547900999664983,100000000000000000000000', '44546715792848872672331.33029196547900999664983', '312066601531489140643249426'); + T('2118844361164150744985300682261162411140053906424859259689007681661137,500000000000000000000000000000000000', '4237688722328301489970601364522324.822280107812849718519378015363322274'); + T('18513646046835945,109', '169849963732439.86237889670792909799300509767365', '190'); + T('80056584734477457616078211168206873374318213792897,50000000000000000000', '1601131694689549152321564223364.13746748636427585794', '7664647609675678867596695298'); + T('297303657379426370759382568,33333', '8919198913371924842029.8973389736300643077988817', '64991'); + T('103432169127096395317863672765426134926680268209844331529227,5000000000000000000000000000000000000', '20686433825419279063572.7345530852269853360536419688663058454'); + T('71251826759954175648215320529575384132956249082986677350937829,1000000000000000000000000000000', '71251826759954175648215320529575.3841329562490829866773509378290'); + T('641201328368559843571245009607921346857269477,1000000000000000000000000', '641201328368559843571.245009607921346857269477'); + T('4882048845842468103103485015911,10000000000000000000000', '488204884.5842468103103485015911'); + T('224791477,1', '224791477.0', '726177065211931040302050912338320716'); + T('476719932128485235601740674,631706300099407547', '754654389.3158369544946287762236', '936155391544004023'); + T('56347229254417904350177815,1', '56347229254417904350177815.0', '10148255980165242466385019381283504'); + T('3247176969,50000', '64943.53938', '5737853151156754534369320427420819473538787'); + T('148680609085343851516935023,25000000000000', '5947224363413.75406067740092', '3299703385992240915628547545324147430534'); + T('1,10', '0.10', '60676600'); + T('33888285831283524427,5', '6777657166256704885.4', '8419970403584865379780209059074'); + T('708030949802968823378286961,10000000000000000000', '70803094.9802968823378286961'); + T('544304014187971143672362107687657,1000000000000000', '544304014187971143.6723621076876570'); + T('205971513796048941402022334203083,50000000000000000000', '4119430275920.97882804044668406166'); + T('77292325648780699681,25000000', '3091693025951.22798724', '39764580440463487'); + T('2309917737614290424010537409984194531,26393218442', '87519365729890563984994483.37889805167096566858300647613', '41528749227'); + T('1350005508097927361466501541112951711,1', '1350005508097927361466501541112951711.0'); + T('479515933263403410783578189085467270740481972776756061209,1000000000000000000', '479515933263403410783578189085467270740.481972776756061209'); + T('5468820184309309381471350304120512393962862818693211,100000000000000', '54688201843093093814713503041205123939.62862818693211'); + T('129723834937825709698545211076130124,26403603915209861863899', '4913110928129.700171713296448609990870295676076015185', '55134610153115101837033'); + T('232780859367591812749509510144676014553783,400000000000000000000000000', '581952148418979.5318737737753616900363844575', '8362349325310445745344747979264146251506102'); + T('26526026292549267547430447894201,31250000000000', '848832841361576561.517774332614432'); + T('19890543181073850618089831198136526047676310776189255009170995711093373,2500000000000000000000000000000', '7956217272429540247235932479254610419070.5243104757020036683982844373492'); + T('30493213502290966437312425842604482987,1000000000000000000000000', '30493213502290.966437312425842604482987', '724744520119961789856512230962935140768926990'); + T('275344194003530259835120378143,50000', '5506883880070605196702407.56286'); + T('280641866494800916387325846054898697443,500000000', '561283732989601832774651692109.79739488600'); + T('816489328,1', '816489328.211266', '1'); + T('186929316741636687784817442181,50000000000000000', '3738586334832.73375569634884362', '847366608343837425110540459931506231838'); + T('112563301820705703136709010962115946,426227402670606553', '264092128088010144.981654762325530158196731698433', '529348397551579750'); + T('435191728671575057019159870521595631,1000000', '435191728671575057019159870521.595631'); + T('297734036862960068140512298506553,33525048786443771', '8880942687348218.29539231419286944799431547446739362', '66580157811010440'); + T('644491386590497383264428696888480290002513,100000000', '6444913865904973832644286968884802.90002513'); + T('692870436323024990207,2000000', '346435218161512.4951035'); + T('16731325404663519753103973595257782597,5000000000', '3346265080932703950620794719.0515565194'); + T('7678382551,10', '767838255.1', '563996631510634040120890403050803455723'); + T('301101154009241217644497759979222592173429957444321800273,5000000000000000000000000', '60220230801848243528899551995844.5184346859914888643600546'); + T('3287369581548004161063138286884405777483908660733707180700133,500000000000000000000000000000000', '6574739163096008322126276573.768811554967817321467414361400266'); + T('7072616405346678239433829996523626553492305980858871567461,100000000000000000000000', '70726164053466782394338299965236265.53492305980858871567461', '4156731482608469668334695763987365235929934687'); + T('4206726322500320286718351,500000000', '8413452645000640.573436702'); + T('8042280713465517964325469588870746568338611,100000', '80422807134655179643254695888707465683.38611'); + T('26905465406799944428340969750110533073398836737,10000000000000000000000', '2690546540679994442834096.9750110533073398836737', '8335668443865329061594075961775870790796125'); + T('781397951264870786241984162,53412969887938978591', '14629367.2286759680365043324657384094905107442051', '79799519873530341684'); + T('11272468788367824600929293072031224512269133,500000000000', '22544937576735649201858586144062.449024538266'); + T('35062259331242087386880791,3774248', '9289866307471604247.225087222673259247488484429220179469', '5015595'); + T('40684596467754525130528154364962148818,4282358620351909', '9500511301038867618025.61680375343530528695710569699373987', '4516893654064672'); + T('11718831363175661697070030246145843821,3243', '3613577355280808417227884750584595.689485', '4424'); + T('723075924168109306363,129', '5605239722233405475.682148', '246'); + T('1425315029,100000000', '14.25315029'); + T('23081969548598774686163,261431419053327', '88290725.0864537257072290999928', '439109518021570'); + T('74432727113,5', '14886545422.6'); + T('5043881924600298710923,5283123823581648', '954715.82590711316746962783430632190', '8464867636721848'); + T('1199912974622736146774960640527,101153498187505481', '11862298349766.31444753914108283160', '864586429503386891'); + T('2671282759101377354629,5000000000000', '534256551.8202754709258'); + T('4428522968683635809406603927474774548389467299,1000000000000000', '4428522968683635809406603927474.774548389467299'); + T('29178029301,5000', '5835605.8602'); + T('606209140346077832367770959,20000000000000000', '30310457017.30389161838854795'); + T('950780223241033310711461629624186798117525059147,10000000000000000000', '95078022324103331071146162962.4186798117525059147'); + T('12431119464175333997,5000000000000000000', '2.4862238928350667994'); + T('234188333,2500', '93675.3332'); + T('8882443557897602881136097481314340616279449789015613,10000000000000000000000000000', '888244355789760288113609.7481314340616279449789015613'); + T('620853587690846221319415358259599862766390740728717,20000000000000000', '31042679384542311065970767912979993.13831953703643585'); + T('18330643901258352830379667572558501125731138590723,2500000000000000', '7332257560503341132151867029023400.4502924554362892'); + T('1737914673731044895006236355997286362604696463,20000000000000000000000000', '86895733686552244750.31181779986431813023482315'); + T('32321383496895512945858052467433508644049961463611439,500000000000000000000000000000000000', '64642766993791025.891716104934867017288099922927222878'); + T('30443644280497735598449,100000000000000000000000', '0.304436442804977355984490'); + T('33441569099242498502093191685727884000199,1000000000000000000000000000000000000000', '33.441569099242498502093191685727884000199', '226046621508705333950998644181135613143302286173'); + T('398604346574198750962183419866817869,1', '398604346574198750962183419866817869.04266056', '7'); + T('512097566031,1000000000000', '0.512097566031'); + T('398681694350124818470993924383729,500000000000000000000000000000', '797.363388700249636941987848767458'); + T('3812252051639510486930285769517024400609099822879069290116480023961048395781,50000000000000000000000000000000000000', '76245041032790209738605715390340488012.18199645758138580232960047922096791562'); + T('17640229131583372766764324994200509903251266518839,20000000000000000000000000000000', '882011456579168638.33821624971002549516256332594195'); + T('560154998022191785354816414733070384411658872186803,1000000000000000000000000', '560154998022191785354816414.733070384411658872186803'); + T('71890032720748761728115659399,11502294600531586', '6250060115607.39517761094265713855993887187878900', '56396172263945605'); + T('239652696866514152551465514613,1000000000', '239652696866514152551.465514613'); + T('624116519630700792,1167196367', '534714241.130516466043798094841834', '1620799323'); + T('354713305113764443146383722,1', '354713305113764443146383722.4', '1'); + T('291430659582700164960933388735,37370964395748226', '7798317873109.4467055700449997519564282043354166', '60816081804303776'); + T('488,1', '488.292453', '1'); + T('5375378978249541387849408245604751505152302194421,25000000000000000', '215015159129981655513976329824190.06020609208777684'); + T('13453827695164848671202758912258191501381686420571586492041,200000000000000000000000000000000000000', '67269138475824243356.013794561290957506908432102857932460205'); + T('89089683441815473,1000000000000', '89089.683441815473'); + T('9209451109,5000', '1841890.2218', '134792391785549571059323696404'); + T('5753101370471889620242487730093198832286126348947,12500000000000000000', '460248109637751169619399018407.45590658289010791576'); + T('97943035611348452670762369622371455167581899341662817,1000000000000000000000000000000', '97943035611348452670762.369622371455167581899341662817'); + T('156481263905560941381243892108,159892048517', '978668203684460155.744443223268507096551689891232818887', '322004247450'); + T('2555714776189801984122292922264279394187,5000000000000000000000000000000000000000', '0.5111429552379603968244585844528558788374'); + T('54279806605191090207,1', '54279806605191090206.69', '1'); + T('31837316259061,16072996650298', '1.980795302316617044769286885040', '49459229769021'); + T('4271818608155766034681095050304504858956311601618369719,500000000000000', '8543637216311532069362190100609009717912.623203236739438'); + T('176478464295519818379214397692871852257325839802281,1000000000000000', '176478464295519818379214397692871852.257325839802281', '90779039488828051777510007885720349007138577'); + T('348438519284667659789950964099607679,250000000000000000000000000000000', '1393.754077138670639159803856398430716'); + T('65822230159387850562143906302474539651870314716129059,2000000000000000000', '32911115079693925281071953151237269.8259351573580645295'); + T('45672374821762348481787087840824627394334023792813,100000000000000000000000000', '456723748217623484817870.87840824627394334023792813', '23761423870035685067842276095584074976971583'); + T('464877382392713428729345554492047701,50000000000000000000', '9297547647854268.57458691108984095402', '79229417025138906364159421018995634243'); + T('84227563396748648999111809845309,5000000000000000000000000000000', '16.8455126793497297998223619690618'); + T('4557298469196086700221846516327,100000000000000000000000000000', '45.57298469196086700221846516327'); + T('80439239502527,1000000', '80439239.502527', '533338416082600676071203071632265123199117929'); + T('935236327881877011999858293276481942539,100000000000000000000000000000', '9352363278.81877011999858293276481942539'); + T('42714429794630694344783675903666677070293499362190798,2299869685120688616083', '18572543510172490391080421152535.67751350101760083140434', '2523895099168949296133'); + T('947258061205512702708184333018496368818813104995057,1000000000000000000000000000000000000000', '947258061205.512702708184333018496368818813104995057'); + T('0,1', '0.00'); + T('1357605379576214126002356605597838987734159077021017189,10000000000000000000000000000000000000000', '135760537957621.4126002356605597838987734159077021017189'); + T('689179106336557793377586103585498426183,1000000000000000000000000000000000000', '689.179106336557793377586103585498426183'); + T('3185931020723678246265927634227924895843827321051,5000000000', '637186204144735649253185526845584979168.7654642102', '8348820773767166375670963549814381'); + T('181704427890961813309386683087009072816236283562619436859899,20000000000000000000000000000000000000', '9085221394548090665469.33415435045364081181417813097184299495'); + T('206086803,50000', '4121.73606', '164519844857384467378024'); + T('2446815034234629509921183262469736744807867506113159757,50000000000000000000000', '48936300684692590198423665249394.73489615735012226319514'); + T('11921542076626216037383,2467379936129', '4831660459.77076950587336328803734586299', '4032388674437'); + T('4821454596269229904070747116,5', '964290919253845980814149423.2', '63058918491'); + T('8059615507653467966326957937996724771202206977059344880847,100000000000000000000000000', '80596155076534679663269579379967.24771202206977059344880847'); + T('72323768597570082020606327010228744367968599,10000000000000000', '7232376859757008202060632701.0228744367968599'); + T('28149894654702826785477357889173350109389,332175002107', '84744169417165234660977522265.35323457903133812593052374237901963', '660733805280'); + T('211462938819720593425336680167945416724957,25000000000000000000000000000000000000', '8458.51755278882373701346720671781666899828'); + T('8669768238324809349466041,100000000000000', '86697682383.24809349466041', '65200093702980892'); + T('9229478586505609450209233741970260794135057090509829,200000000000000000000000000000', '46147392932528047251046.168709851303970675285452549145'); + T('788251666453791388583584838872536454639199125815589911,20000000000000000000', '39412583322689569429179241943626822.73195995629077949555'); + T('20943607945514035985620131263207,5000', '4188721589102807197124026252.6414', '4835242474956309626165311527265229'); + T('1772029297651420947345744911718400232486579,1000000000000000000000000000000', '1772029297651.420947345744911718400232486579', '887760316568762719383237942823678'); + T('757397481749167231261,12500000000000000', '60591.79853993337850088', '66725488326793109720958265319522090494147096792756'); + T('254427806433,20000', '12721390.32165'); + T('665415819,1000000000', '0.665415819'); + T('746095752604743115329558773090119,10000000', '74609575260474311532955877.3090119'); + T('200405698845550169272337116046884055,37753768', '5308230395587274077446709850.17665137424163872012965483562443432875', '52358187'); + T('876243876010368000888263,6250000000000000000000000', '0.14019902016165888014212208'); + T('314444059696144669541009651,100000000', '3144440596961446695.41009651'); + T('102685572797675093,500', '205371145595350.186'); + T('53720823257553465809425585560295424700501,10000000000000000000000000000', '5372082325755.3465809425585560295424700501'); + T('144228,1', '144228.0', '893072502'); + T('2249884045617817731,500000000000000', '4499.768091235635462'); + T('6149980092464732650245703095614058473554397900,7551277', '814429147873231593841108344405066649462.653522046668397742310767776', '99624556'); + T('1005318427,100', '10053184.27', '56258703'); + T('675360018584114704817648366594913164055503162783551547601259390568622759863323,5000000000000', '135072003716822940963529673318982632811100632556710309520251878113.7245519726646', '763113868956966253237445913550376861628125707761719940487681719401160610436'); + T('487813882528400826023428640609378101429959398115157937005578981194998958082862673744095665022036524299189099,10000000000000000000000', '48781388252840082602342864060937810142995939811515793700557898119499895808286267374409.5665022036524299189099', '319053905671710373413564483718075497688524361485928741160092292043716624896461985792922106492711599194534899554643542426'); + T('4363269813583297680660811455498012143883949072442011552361660186260454870353040104340521418931006735842679876713781061,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '436326981358329768.0660811455498012143883949072442011552361660186260454870353040104340521418931006735842679876713781061'); + T('341893039028161520368729363564608981945974443020224230053218402863771456413927271762947534978276261913698192670665537,1000000000000000000000000000000000000000000000', '341893039028161520368729363564608981945974443020224230053218402863771456.413927271762947534978276261913698192670665537'); + T('91901269276951481268589508998910356181948890482769886151337833001536520925704410737790986004918759962586403387644931014593138475668109,200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '459506346384757406342947544994551780909.744452413849430756689165007682604628522053688954930024593799812932016938224655072965692378340545'); + T('160085901137799630792793617081212539406350610856533352536667873727,50000000000000000000000000000000000000000000000000000', '3201718022755.99261585587234162425078812701221713066705073335747454', '82302986588243438196352421107435286399958881274722031838421651877101115'); + T('19730270740072250726350191888457903937782226838056969873977606036442991786321705617019361264080014612697781414129464904485361465812168904497,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '39460541480144501452700383776915807875564453.676113939747955212072885983572643411234038722528160029225395562828258929808970722931624337808994'); + T('554184362944725960497789037,625000000000000000000000000', '0.8866949807115615367964624592', '3519583398754511869875010683565244740317978393251156588940794481183604900896512'); + T('638231282580449825792515353133591102373788595106470546093619096974527294935424922680855148938101691766274567269680519810515529956690038641911538125173665109699,10000000000000000000000000000000000000000000000000000000000000000000000000000', '63823128258044982579251535313359110237378859510647054609361909697452729493542492268.0855148938101691766274567269680519810515529956690038641911538125173665109699', '4108116384125526836507938785056766891019126123715803937416172409988923081826654552'); + T('47734373761311372617250467020779084445512709682911994169631,625000', '76374998018098196187600747233246535112820335492659190.6714096', '612857840076182176420280571134792'); + T('96501773711552295237818469319540275439821230156574621025922681890456142035559160552388101621981467063,1000000', '96501773711552295237818469319540275439821230156574621025922681890456142035559160552388101621981.467063'); + T('74403513794353613906027668774054715460457535829576006466757980055646532561807,100', '744035137943536139060276687740547154604575358295760064667579800556465325618.07', '9062598597523005153489301824610095730026103190392060661534'); + T('4552464673010589780215760669790574819454182498449417341631679,50000000000000000000000000000', '91049293460211795604315213395811.49638908364996898834683263358'); + T('553156651153146542558050182057356237357767613058590716666708160610420683997653491,10000000000000000000000000000000000000000000000', '55315665115314654255805018205735623.7357767613058590716666708160610420683997653491'); + T('10094472168930635850294295702643512345309187651848439883217715065443928296148508896180724198805240643680251877332506709166622938770815681788987679097027,500000000000000000000000000000000000000000000000000000000000000000000000', '20188944337861271700588591405287024690618375303696879766435430130887856592297017.792361448397610481287360503754665013418333245877541631363577975358194054'); + T('1390638862389813656941579907173114981020090536680671582853648156827291166367509597465818901222618393320613440799359074159,10000000000000000000000000000000000000', '139063886238981365694157990717311498102009053668067158285364815682729116636750959746.5818901222618393320613440799359074159'); + T('764577472361146278858344672554647493530542460178759013102132345200903874086918631004687608105278297,1000000000000', '764577472361146278858344672554647493530542460178759013102132345200903874086918631004687.608105278297'); + T('127046433646264975767457966930607201956534938099951672926121899531366533718900568517910151332761,10000000000000000000000000000000000000000000000000000000000', '12704643364626497576745796693060720195.6534938099951672926121899531366533718900568517910151332761'); + T('759706682454180966323586844671034018022403078651480091043022480725,1', '759706682454180966323586844671034018022403078651480091043022480725.0', '8491246168928786773792854508283380644357724943352621981745640028894860319462721890015437671665726136602020425847570035'); + T('1232133064589580204554541761202884749167806439036647915064417866743368822300712460904153,50000000000000000000000000000000000000000000000000000000', '24642661291791604091090835224057.69498335612878073295830128835733486737644601424921808306'); + T('860753657944772685510679876822980161245604845668538717795313417907394077573430859608260608605457173684835477710478072161454145765516186246987,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '860753657944772685510679876822980161245604845668538717.795313417907394077573430859608260608605457173684835477710478072161454145765516186246987'); + T('16005705331614697482755365912151704073591971169105093634086192436675140166715310612622644294152431935263181364819,250000000000000000000000000000000000000000000000000000000000000000', '64022821326458789931021463648606816294367884676.4203745363447697467005606668612424504905771766097277410527254592760'); + T('69113805838501162731578029205573692448157213720275881273819982233592866266473,100000000000000000000000000000', '691138058385011627315780292055736924481572137202.75881273819982233592866266473', '58975855894427885852484710799418772114376247'); + T('4729199753900213112131177820583529490731573946050705866217107256295944829467960577257186,510681', '9260575102461640656556985320745297927143508268470348155144027790922209421278568376.8481419907926541887178704058086735', '7975458'); + T('23498489129913177044438966039588756148779460123795350021472351713417447381957515629514242536444852177161448159204317722351313614332682938279261185510112182173899064135103,2500000000000000000000000000000000000000000000000000000000000000000000', '9399395651965270817775586415835502459511784049518140008588940685366978952783006251805697014577940870.8645792636817270889405254457330731753117044742040448728695596256540412', '2738063341239025028739321372348930298237495900370115886451023412898232579270'); + T('581214945232966023983197807568271384582625395798108238988909577356391,100000000000000', '5812149452329660239831978075682713845826253957981082389.88909577356391'); + T('755774297159354724303490783235728345982079,10', '75577429715935472430349078323572834598207.9', '976346638366081178717993549430125376917323536668391354073736050931714508949029849095898475324947663457561691565869'); + T('72952666104960722610055921852408716115501920420152774589434925111108095463,1000000000000000000000000000000000', '72952666104960722610055921852408716115501.920420152774589434925111108095463'); + T('84253414454971232257480071766397766368674340440243975710448609630373480623069,50000000000000000000000000000000000000000000000000000000', '1685068289099424645149.60143532795532737348680880487951420897219260746961246138'); + T('36916365097825321454559738506509326979820327574234098190319159712574451468922233909969299557,384885741807809995033', '95915127758251045669622249994875027216126584339530370592512741225931996.041944546489526354777674857433920571240428120906031224034258694793804737624806', '996972807953924088414'); + T('46202911095785852843473956927532538280968392442342938578610785707745261965259051602639282297839,500000000000000000000000000000000000000000000000000000000000000', '92405822191571705686947913855065.076561936784884685877157221571415490523930518103205278564595678'); + T('1772839597150920835362349139129708947,250', '7091358388603683341449396556518835.788', '85650512041659658831614'); + T('342934812509126807028655148458814382887953695727579025045242138980820292534408239977896632855835901410506357,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '685869625018.253614057310296917628765775907391455158050090484277961640585068816479955793265711671802821012714'); + T('5467569331238493371328759073003072869784239507210662,37362334854454456899796270284749', '146339069882476370230.94111136842283676758455168072986640234', '96171449439665788570414679267610'); + T('9014126789799805335062120695538270131901418610794009238567600799878815000839260540538480396467469718753863,1000000000000000000000000000000000000000000000000000000000000000000000', '9014126789799805335062120695538270131.901418610794009238567600799878815000839260540538480396467469718753863'); + T('1250041788678023084610616992418436156068571496356335523903697743016099193022025463752931903884161856935693369085205315349974809,2000000000000000000000000000000000', '625020894339011542305308496209218078034285748178167761951848871508049596511012731876465951942.0809284678466845426026576749874045'); + T('25239061830805058260347549564363328809074990929185276918644989105557079183929665109,500000000000000000000000000000000000000000000000000000000000000000000000', '50478123661.610116520695099128726657618149981858370553837289978211114158367859330218'); + T('23046884534040883773,25000000000', '921875381.361635350920'); + T('17516790639377003056238183959898186484431649497446483054036345045419619227552721302646069807169936889243905650537200431291875228387189659891591,2000000000000000000000000000000000000000000000000000000000000', '8758395319688501528119091979949093242215824748723241527018172522709809613776360651.3230349035849684446219528252686002156459376141935948299457955'); + T('830206819686442727061104242686969514890459473419575742090385225994337814887819198514017,1000000000000000000000000000000000000000000000000000', '830206819686442727061104242686969514.890459473419575742090385225994337814887819198514017'); + T('413893751926246540100720057983571518390906128684895499155815473199,1000000000000000000000000000000000000000000000000000', '413893751926246.540100720057983571518390906128684895499155815473199'); + T('206500127024184753713560420566631778621,500000000', '413000254048369507427120841133.263557242', '5224151114621627696369936014682664216594925452865329899315399663005407747319945317435179613'); + T('16217662953881464354149036371967353081296233553367,125000', '129741303631051714833192290975738824650369868.426936'); + T('158877139692735544114713014099098201170707224624720234416065901772598705859728066434630087577,10000000000000000000000000000000000000000000000000000000000', '15887713969273554411471301409909820.1170707224624720234416065901772598705859728066434630087577'); + T('1363481494416319010330583135309100415177784161418502772461,5', '272696298883263802066116627061820083035556832283700554492.2', '504783341926451844554'); + T('558130898291826876915105441493420754206140253419478295461642459649585459789613029845418176825679124538566594627314537483,14998270055051685963765623', '37213018317658468525204154347997553646488930517742862611997889963271621447764872970409325420092.841681521850527813475859312769151840560733279569364227935675286869135262631', '77352003382953136988715543'); + T('10451566350931936938155976509981211336966461645889115229513600263067775576558118998602357161325,346893908613991685517980584558', '30128999360902532302715650110413576813750396896824593726469912912.366199216341942668442860487226805935762749663328322107767450167435735148060307', '351381928759382906855046900016'); + T('1468542461374793122289224886453463993847932190034840253613540817203177345513896917033925255992523630246969352648225086758781193593730856733866872342988998661495531701242165439378823,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '1468542461374793122289224886453463993847932190034840253613540817203177345513896917033925255992.5236302469693526482250867587811935937308567338668723429889986614955317012421654393788230'); + T('209271529724729052617837048480332267987578229392112165277475305343450561725459538265834951255626969900314942469226110140479983692763731004233,40000000000000000000000000000000000000000000000', '5231788243118226315445926212008306699689455734802804131936882633586264043136488456645873781390.674247507873561730652753511999592319093275105825'); + T('7101983556936994042497298646151570859081364497353591813399109991310416906158547491525491881998229621477347427929,100000000000000000000000000000000000000000000000000000000000000000000', '71019835569369940424972986461515708590813644.97353591813399109991310416906158547491525491881998229621477347427929', '56744786973831246136639355921544534171994029324959759143702819842099548907292114036606647'); + T('700608601940127639463635186370519157157680192656598879705304237171077875720684209649489000891686101,1000000000000000000000000000', '700608601940127639463635186370519157157680192656598879705304237171077875.720684209649489000891686101'); + T('8602847585675548348838808002159088443209,100000000000000000000000000000000', '86028475.85675548348838808002159088443209', '72582545116505333796075480243333118971380354201482192123094188476893348588726112639735928329133275172401442'); + T('148408052390556415124137719435490471,25000000000000000', '5936322095622256604.96550877741961884'); + T('416641482734579229938341545166425850147492151317072668023493195705213636353836873961255897570763844236,25717644180352342203393925081331448253691044279201083210974082080156217889361', '16200608415481665314529154.120823068329960470035846076484357364396252835780302742135244075134790170921737797562758009637507765', '67934439808176948911255062541382522278265771795756778046815888409619479526534'); + T('25995084389459522138350250382942032604375065037616720903582722822063333331140405124796661617605799564677801133030110,310603780302310842094866507130236732405959190501476949', '83692105627814610657066372727390901983001818916459785375020003.3353553456353151128930868769216270423551208386173443046109736307958268123', '3982369319326564077663582191574752696545616233919787956'); + T('3588237426497060004880870257545324138618112195268225592118612244849912586535502781039993176234955972397277,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '3588237426497.060004880870257545324138618112195268225592118612244849912586535502781039993176234955972397277'); + T('3313686586024934130977871482209887492640993452578557026807334010909893148780133822458503199230307206620292985108899540304687909083,1000000000000000000000000000000000000000000000000000000000000', '3313686586024934130977871482209887492640993452578557026807334010909893.148780133822458503199230307206620292985108899540304687909083'); + T('273781703818906790628718083951503889627525115303814013952356530599951005452333198523390628974188239287896869929063813635816988840128233022694039881132781253023590270236688227083953341213,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '27378170381890679062871808395150388962752511530381401395235653059995100545233319852339062.89741882392878968699290638136358169888401282330226940398811327812530235902702366882270839533412130'); + T('19909985415765292964414127154401583912053874960439188258560175396645802964673383822417554033845591984786339,50000000000000000000000000000000000000000000000000000000000000000000000', '398199708315305859288282543088031678.24107749920878376517120350793291605929346767644835108067691183969572678'); + T('85820359411270844647913420510043686839128620275465076863336894062316958345993146300360121970304754792703695315584328722640236913591546766980436151189616776567197756454666891371391,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '8582035941127084464791342051004368683912862027546507686333689406231695834599314630036012.1970304754792703695315584328722640236913591546766980436151189616776567197756454666891371391'); + T('35000532278070509562103057820976975041119512140519835960943403473094631,3662495203502602060139335', '9556471840454013866302210174557670158611986330.928972391824443058488437395568693146286054952317466368062069862106460410265233312282378988449302', '7332300780944167684576224'); + T('39376042039638531344672309024889855506726524477396754533061336162078676158805401717447421956134946657,125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '315008336.3171082507573784721991188440538121958191740362644906892966294092704432137395793756490795732560'); + T('6597859015029510292915275130297833881131020029929841154557256370393361962811461577212908969927685870101608101607420224161,100000000000000000000000000000000000000000000000000000000000000000000000000000000', '65978590150295102929152751302978338811310.200299298411545572563703933619628114615772129089699276858701016081016074202241610'); + T('77941951791579411765197932683235264335432882206721156588976877215382711588365187167594098027719350761193,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '779419517915794.11765197932683235264335432882206721156588976877215382711588365187167594098027719350761193'); + T('7469527965820984707499768784473976650257429936748963414116722131553049029423204476861,10000000000', '746952796582098470749976878447397665025742993674896341411672213155304902942.3204476861'); + T('793689283759962354945365347,1000000000000000000', '793689283.759962354945365347'); + T('197236579651099174237,25000000000000', '7889463.18604396696948'); + T('13248974903544268426929651334228835034267588350879238246365359559734640920519013385480529227732605812835471479125497458201213631616739806389677655600244904631323,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '132489749035442684269296513342288350342675883508792382463653595.59734640920519013385480529227732605812835471479125497458201213631616739806389677655600244904631323'); + T('6385188721690120379276122832047303271584663620275352024639252661807196391,2500000000000000000000000000000000000', '2554075488676048151710449132818921308.6338654481101408098557010647228785564', '69360752312105986272643762566971174625835381312809147456026971'); + T('25862063700127446496519773714020332299021654523004379222786870074851196534089686069439903327778111173914467314241700595801,100000000000000000000000000000000000000000', '258620637001274464965197737140203322990216545230043792227868700748511965340896860.69439903327778111173914467314241700595801'); + T('337561464417705983649060127652172317890452693275809295120807312918687,1000000000000000000000000000', '337561464417705983649060127652172317890452.6932758092951208073129186870', '8489487941822174030068781645476719602281025013758808050237847942377537968055889085564660960488663905553823'); + T('12655042328012036252407420053218831648099,781250000000000000000', '16198454179855406403.08149766812010450956672', '64236488636162905463925496010047829405545831499743306133923178415645494'); + T('5922194307177579374811484837474903626993993529770932798657322377651387,10000', '592219430717757937481148483747490362699399352977093279865732237765.1387', '3152877460250162477684029172894929736548191904765877685303248'); + T('77272660141369492538273738266098041603520972222166296362371597167705245085548532311984761778478186732722925744042787931177199124350594600293303988626922427396336198562206707,10000000000000000000000000000000000000000000000000000000000000000000000000000', '7727266014136949253827373826609804160352097222216629636237159716770524508554853231198476177847818.6732722925744042787931177199124350594600293303988626922427396336198562206707'); + T('192725006484481955518141547878555444458245002321169158256767255032910672226968644775201483730442494510679299467564928048217,1000000000000000000000000000000000000000000000000000000000000000000000000000000000', '192725006484481955518141547878555444458245.002321169158256767255032910672226968644775201483730442494510679299467564928048217', '439652030092743058167706039163812494429147760995240096210156202016745715173125314627'); + T('4119,1', '4119.0'); + T('356296672182939168877855246845022740124409939589391646979258814297585852593514729523,775462837988393944311111588325395377444992149494144758081106318', '459463245340290213739.77440565240861533938923822785461681533785064251235446563843782326420183106592724997999481060381275', '908934942330192208051413123327017049131882835053534224912068502'); + T('768098015293590626357287707160911,1000000000000000000000000', '768098015.293590626357287707160911', '4970166725632570631012333623050617477446500886979586460886675511529151792998381196736807216434719029198488026413277'); + T('17308584498708223882873554139102525513289773342431835066642028579392867094694512432111520248839813,1250000000', '13846867598966579106298843311282020410631818673945468053313622863514293675755609945689216.1990718504'); + T('730329569763986956693151189671893374471654148260912717254713032732776230933990274047334434047257585286285228208365006513375988013830063457878469670357195374629549829394279454843199,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '73032956976398695669315118967189337447165414826091271725471303273277623093399027404.7334434047257585286285228208365006513375988013830063457878469670357195374629549829394279454843199', '6972155039468853521357852529419312954662546952741049465777419800482878657794987116597422340793948647312389878781628'); + T('406720109833232022397234646712546646136794280590981538261378858703302037675499399765989883329,100000000000000000000000000000', '4067201098332320223972346467125466461367942805909815382613788587.03302037675499399765989883329'); + T('306423719310620474116542871532316659191577143943784441511526985433945123437819539085214867633133,1000000', '306423719310620474116542871532316659191577143943784441511526985433945123437819539085214867.633133', '66262964973805318142587348908691096'); + T('1354706619236923062203233937522312950517745299920180807301978313151489452805373608391524296715118535473,250000000000000000000000000000000000000000000000000000000000000000000000000000000', '5418826476947692248812.935750089251802070981199680723229207913252605957811221494433566097186860474141892'); + T('1974457002526436695523552349738485726387619749364549221535073398987258972810290980762750581643854743176718698008795411899,500000000000000000000000000000000000000000000000000000000', '3948914005052873391047104699476971452775239498729098443070146797.974517945620581961525501163287709486353437396017590823798'); + T('156783373050685706995418777471852885862528591164845287226607990619037741515473450079378844849264334400620506174471,100000000000000000', '1567833730506857069954187774718528858625285911648452872266079906190377415154734500793788448492643.34400620506174471', '1475852993423867930895375531269870744877795635101316802275045394546252736459'); + T('817062512854985934298222856248923943142561938985062588141950589526461,100000000000', '8170625128549859342982228562489239431425619389850625881419.50589526461'); + T('6290321680681892372665821719454390401908672910524568767187416242561415491887619927859962686607232816600821305765944442019799,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '6290321680681892372665821719454.390401908672910524568767187416242561415491887619927859962686607232816600821305765944442019799', '9105579897058381459068780523330349175438124909135209330622101030511881627579118208200106153986510746652194'); + T('291019633702648422081986065259017934111952044975205808908304848900279460934291632580590482482887983287848959317,5000000000000000000000000000000000000', '58203926740529684416397213051803586822390408995041161781660969780055892186.8583265161180964965775966575697918634'); + T('9761851721,10000000', '976.1851721'); + T('46347552512954346442636579916791964575641708792980525139317489275282600482060794741187192532852855496225264908653845892622887557367998590985412813,2500000000000000000000000000000000000000000000000000000000000000000000000000000000', '18539021005181738577054631966716785830256683517192210055726995710.1130401928243178964748770131411421984901059634615383570491550229471994363941651252', '20131139962522780309461689017191472470532273184373694231458313824124123308217129198334611710977665987264'); + T('4583104655599717564687861567606979451521059259267795570154284167355331986003319384,66188846884496355722931850901', '69242853914610712768120180522495339911077166565137157.256079758842112249952337457360998041147', '73473311912842459042771817157'); + T('238700990196510062211759023156089849525744243141210514794850464466693722026273452038656315746884677478,30092123405681931755343047697485765975508737462761615936547801', '7932341197013669060995249486649815002914.388775664475545030214338121665357005207009166397688180912492427405071534798797537035114944', '65853245521247303460683253084956246647481048311248038291232869'); + T('42298914901,5000000', '8459.7829802', '500230246408163621933114312035010656400108045812177724426229'); + T('8074196380821158892995075889038998746407004456023946886130297182819587,100000000000000', '80741963808211588929950758890389987464070044560239468861.30297182819587', '32771612136576235765298661712341320992877938190809773521921351747798365048023003'); + T('8237639161158330611197745589676406384164235975022473710629638053,1', '8237639161158330611197745589676406384164235975022473710629638053.0', '2445104217464463695693500282135171214096744322818309314494766605989146939852441404618950981337350157904852939939373515'); + T('67543757294923929626940280513013641414086200749124590622532346827999900040177969865717432810934479,1916727', '35239111931393427247041587306389298744206243637787014333565680886219007735675435190153544459.348920842665681332000268271160278288144867678', '1995694'); + T('658743889770265303742933377935250192966496461555942991475714429268442962813046457181311534066346113237896378659793723,20000000000000000000000', '32937194488513265187146668896762509648324823077797149573785721463422148140652322859065576703317.30566189481893298968615'); + T('2805501179441768134530084886604077457872799801301882910075637983,100', '28055011794417681345300848866040774578727998013018829100756379.83', '9443876125195970145695293537833903272964339319463666915497252065195075053919409140815614968385107901341125179527914879'); + T('4517797327291151860616480864207613008757043659519224972937765633329645192613384083939856763691292386455457794604201829021,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '45177973272911518606164808.64207613008757043659519224972937765633329645192613384083939856763691292386455457794604201829021'); + T('7397503339464272269855273915959903960816642518570157919,100000000', '73975033394642722698552739159599039608166425185.70157919'); + T('7222002295276272486455390693063960627773827847231792065164227238340366235889305566200968538315044537097,1000000000000000000000000000000000000000', '7222002295276272486455390693063960627773827847231792065164227238.340366235889305566200968538315044537097'); + T('367219394873481267603265750320061360395709498756776364710800723463,406', '904481268161283910352871306207047685703717977233439321947785033.1600984661747', '6541'); + T('1444394660367662282713282645691209012033688835789995095825382219,23057197513854003298629056495', '62643981754495200591799923072694095.830589947154613883171592329886789430042859888542274546466937863915', '68126015383576305118873089291'); + T('66486456721902783143382958103393588590534783949309048501514976388834547,100000000000000000000000000000000000000000000000000', '664864567219027831433.82958103393588590534783949309048501514976388834547'); + T('79393077119427399,1000000000000', '79393.077119427399', '457680453236362518491204537541456509655751496155359270049043835757460913773646217639420768944492'); + T('79965035093,100000', '799650.35093'); + T('4981989182126281993008748299751823310785501417823357606800265327971466995164429423070200992890363497791927,6250000000000000000000000', '797118269140205118881399727960291729725680226851737217088042452475434719226308707.69123215886245815964670832', '56677887877573113002659257334697952352644607188634909253465284091874992869314792073934863690164809324007357194'); + T('2815316100629806442280650620776290692376915362259448998756135028144140939975030651743612709055129972829840588253,312500000000000000000000000000000000000000000000000000000', '9009011522015380615298081986484130215606129159230236796.0196320900612510079200980855795606689764159130554898824096', '259630086511147416886758802731895884065033396642518234216979248'); + T('46695586464432642825171060403079900323010491862383753361945816046325281445639764147,10000000000000000000000000000000000000000000000', '4669558646443264282517106040307990032.3010491862383753361945816046325281445639764147', '42779209808392670932751246137054085319776080319163738333884406583882155006114876471576920'); + T('141870841510827737902203370743784262520488460033697822757850614639775801850436993371020540186361144664063,10000000000000000000000000000000000000000000000000000000000000000000000000000000', '14187084151082773790220337.0743784262520488460033697822757850614639775801850436993371020540186361144664063'); + T('6957664010752546415724323132519018928019295298179423339867424767111181183144993110875961376863,1250000000000000000000000000000000000000000000000000', '5566131208602037132579458506015215142415436.2385435386718939398136889449465159944887007691014904'); + T('421618093371672938615524326204048137268986623787424222206605428544644224123,125000000000000000000000000000000000000000000000000000', '3372944746973383508924.194609632385098151892990299393777652843428357153792984'); + T('79740490393758467762763825028765531324197343705389133253196874446069,1000000000000000000000', '79740490393758467762763825028765531324197343705.389133253196874446069', '3734356963544490606916998560924054030945103'); + T('35316130946513480000918112491378283158238075089400011285127542852378740666170346667104579433857777012085159078825132200346010522593453834556380919575663964381,2500000000000000000000000000000000000000000000000000000000000000000000000000', '14126452378605392000367244996551313263295230035760004514051017140951496266468138666.8418317735431108048340636315300528801384042090373815338225523678302655857524'); + T('11479496353311542550681317423708387702866260566865784453684955378292320572395800527156920358638182034688285765378247985976894354944272730666267894172313899915111,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '1147949635331154255068131742370838770286626056686578445368495537829232057239.5800527156920358638182034688285765378247985976894354944272730666267894172313899915111'); + T('522894403668783,76766087553931', '6.811528636280055944192548602728291825591944197128281470842', '78240520039957'); + T('49845253705153083946560757047901116693643415419397420205639209376536358217548291172350660224299549,50000000000000000', '996905074103061678931215140958022333872868308387948404112784187530727164350965823.44701320448599098'); + T('338182838018828865464683020834510805289351205546397745297958338040061441,1000000000000000000000000000000000000', '338182838018828865464683020834510805.2893512055463977452979583380400614410', '14883484065364458852385532901646978224973759592019109846023434280302742'); + T('24649273314632626486164577096640564994348428417490664500095726069181221187821380966404579912254,649340013780256804334593736868432636453000213699945814874643231671', '37960502651195292960651209085.203374798057389753139268671210018169153661152337307012345644628714331515037827618880005930554', '908045485391832255020423148219972840921185441341969856690994256775'); + T('6891475120622508402719679996127417743765330884895739499430668315556332397523619642485183195127062533269943127231396897872180491292719,1000000000000000000000000000000000000000000', '6891475120622508402719679996127417743765330884895739499430668315556332397523619642485183195.127062533269943127231396897872180491292719'); + T('203868258448469033290239608200737201654430772057168471884887178288425302193616031248093726182688629906841814588980515821139,100000000000000000000000000000000000000000000000000000000000000000000000', '2038682584484690332902396082007372016544307720571684.71884887178288425302193616031248093726182688629906841814588980515821139', '358166259674835884479717432826072608521435320683484082553756957458496483'); + T('280498230216490169693952183821575487120350714514115741724266322855990846771014739347659202212007477,50', '5609964604329803393879043676431509742407014290282314834485326457119816935420294786953184044240149.54'); + T('205290587103533238565519893362134986807657,10000000000000000000000000000000000', '20529058.7103533238565519893362134986807657', '308243502694779752750195623211608037227150609235612049765729131496'); + T('863541229244183093415998713738595363675147376202617109427307037227836732506179435314860664537757768564421195844506348962328092938455202919,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '86354122924418309341599871373859536367514737.62026171094273070372278367325061794353148606645377577685644211958445063489623280929384552029190'); + T('1332503354412117081514650043329530553988390453,1000000000000000000000', '1332503354412117081514650.043329530553988390453', '234289217752670763502822022564923291688489066732789627701326549148438368853698800840847667515210806058742602452589237732'); + T('149231253658963411543221910342591002434468175057834645096361910659915438708229394346182595835161154220171761179324657602082487624478039438336283,20000000000000000000000000000000000000000000000', '7461562682948170577161095517129550121723408752891732254818095532995771935411469717309129791758057.71100858805896623288010412438122390197191681415'); + T('14671370523489352352179903919978798858628437740812967,100000000000000000000', '146713705234893523521799039199787.98858628437740812967'); + T('31972694535122492349621199531999,100000000000000000000', '319726945351.22492349621199531999', '444814411628813210359733486923268705561135'); + T('7671901743570237148323156463911986166241861750380367,1000000000000000000', '7671901743570237148323156463911986.166241861750380367', '4714079218556258364560566691433682958400719072779641399659759994605653409470820385182612'); + T('64914904653370646630817723806298619262853179362421159280052334161809239241810441802367897185624994804940558409456741,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '649149046533706466.30817723806298619262853179362421159280052334161809239241810441802367897185624994804940558409456741', '52612631034775473006883291270936837923724549069552008161180077154644088916527893547656086834490317497155689233015'); + T('9622068526799441010744442228965559266999862472192613554951,100000', '96220685267994410107444422289655592669998624721926135.54951', '1440111784139735092809063761962639647793103214120990'); + T('8017871525312353806512067050596604565618790,315548414175204512371056357868162059', '25409322.83329595752563567210426781867380735708550429758298495482482043094943060', '549675823319634926616271312386674851'); + T('461120259670854299006123584618545607266420812575100938736117933259736622570867419,500000000000000000000000000000000000000000000000000000000000000000000000', '922240519.3417085980122471692370912145328416251502018774722358665194732451417348380'); + T('139792040108338252978453845748225898765036739532955399942037889179464005555009808455320117,25000000000000000000000000000000000', '5591681604333530119138153829929035950601469581318215997.68151556717856022220039233821280468'); + T('5894159987779675527812606527112902422823,10000000000000000000000000000000000000000', '0.5894159987779675527812606527112902422823'); + T('10794209997399872663981,500000000', '21588419994799.745327962'); + T('161167944446100079215361865141648945894914926470231878901891105444533027123352649883069305476504208232020922464999657127237239,250000000000000000000000000000000000', '644671777784400316861447460566595783579659705880927515607564421778132108493410599532277221.906016832928083689859998628508948956'); + T('65297284415319840892101117377284751412657466676091246251740082043,500000000000000000000000000000', '130594568830639681784202234754569502.825314933352182492503480164086'); + T('2766105154672097910919416707090692846083531091256961378583814595230638765028364556532292886699927313766545452665695161280216164748824152656732976954620185439709,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '5532210309344195821838833414181385692167062182513922757167629190.461277530056729113064585773399854627533090905331390322560432329497648305313465953909240370879418'); + T('4965317900137877770176694971911414522545908917222619271011776655580494900114140891096653760381029022314448118382968242241409,500000000000000000000000000000000000000000000000', '9930635800275755540353389943822829045091817834445238542023553311160989800228.281782193307520762058044628896236765936484482818', '6087323064050560843067097059341387607572473063508563613294539460569998223927099513534061416866791'); + T('215007524870282058245020779477952115240341474039679043031777558877905242544399693717204716884024411270224399170135910743173,500000000000000000000000000000000000000000000000000000000000000000000000000000', '430015049740564116490041558955904230480682948.079358086063555117755810485088799387434409433768048822540448798340271821486346'); + T('33965356260862969077208625910361234343390562819287919971390918687360011980682938504819,100000000000000000000000000000000000000000000000000000000000', '339653562608629690772086259.10361234343390562819287919971390918687360011980682938504819'); + T('253321930539380453152708334768314839113869868931064250962440429142069655945019464486182962906443502943685473688729176287,50000000000000000000000000000000000000000000000000', '5066438610787609063054166695366296782277397378621285019248808582841393.11890038928972365925812887005887370947377458352574'); + T('1805858228685505996934094902160832337182222604423226849057516769855269416540373086132274874403135855391,2500000000000000000000000000000000000000000', '722343291474202398773637960864332934872889041769290739623006.70794210776661614923445290994976125434215640', '299931180540069025319209074997216426643301728798147429423616370144579300438276293226177325138489'); + T('31190292948951272069611342815544754687766064055983665546419,50000000000000000000000000000000000000000000000', '623805858979.02544139222685631089509375532128111967331092838', '56338321839749805341500571031690869993717263653260288651706865343950144409736437018194620914323'); + T('337956957987594659177352551047823442271367979011679862751244719933544405954450697376536645217973872506443,10000000000000000000000000000000000000000000000000000000000000000000000000000000', '33795695798759465917735255.1047823442271367979011679862751244719933544405954450697376536645217973872506443'); + T('482382437572212496064503056796905534583523906009551169968627497923338185298948,98881775', '4878375591176559037947114691225006171091931814629654149802908553404691.464114069554272473682452528283783605111951075878629019577756662152573343720077796', '99109659'); + T('139531491455761368238852756477562465476379871327657551278823131772010748498903090648551764744244326698930827028903816179520446707286815639062324792223595941248872160472784559239,62500000000000000000000000000000000000000000000000000000000000000000000000000000000000', '2232503863292181891821644103640999447622077941242520820461170108352171975982449450376828235.907909227182893232462461058872327147316589050224997196675577535059981954567564552947824', '72224749819267684231620193401966551095054796101838472670695742640793352422104243890110175387436088259119888983940038219'); + T('1411416267549037105254657861275714068019729378454946755649335485716320411768092167436624477341575741093648180167816197631,2000000000000000000000000000000000000000000000000000000000000000000000000000', '705708133774518552627328930637857034009864689.2274733778246677428581602058840460837183122386707878705468240900839080988155'); + T('27827219481834304112493008583428333387209073306104984885967926767008978220794525219842633952626222316127104787702440880856041944988627062199717762582508863622603544795353020067572812970772493,50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '556544389636686082249860171668566667744181466122099697719358535340179564415890504396852679052.52444632254209575404881761712083889977254124399435525165017727245207089590706040135145625941544986'); + T('553638437587991972935941089538503668489156735607582551300472526062673135513905787569392581,5000000000000000000000000000000000000000000', '110727687517598394587188217907700733697831347121.5165102600945052125346271027811575138785162'); + T('59464723510860089353595161485330798717117977688235446432820252084846370805317110927201609639990666929233,100000000000000000000000000000000000000000', '594647235108600893535951614853307987171179776882354464328202520.84846370805317110927201609639990666929233'); + T('7774943127923741543893327774453314221901409612145708347899080872861725693975133544163108094185354219016483147160029,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7774943127923741543.893327774453314221901409612145708347899080872861725693975133544163108094185354219016483147160029'); + T('2063769973984552389094577183907780446432714643266876167586915450871645665016033538837151166563922743418998809762073552642334105506792838094376118903308372743156366972007822263,5000000000000000000000000000000000000000000000000000000000000000000000000000000000', '412753994796910477818915436781556089286542928653375233517383090174329133003206707767430233312.7845486837997619524147105284668211013585676188752237806616745486312733944015644526'); + T('7836548872315924926855127765671663567146206518249512862581538745788328087691847420220642279030295292792647,1000000000000000000000000000000000000', '7836548872315924926855127765671663567146206518249512862581538745788328.087691847420220642279030295292792647', '96234594442279927365515769186347797337180500148188755841266605718724324934597679706160305024645'); + T('6276636774338099448991514147769685704475544055827320758088707616484824104853942959262327777197423596444308226835178887,100000000000000000000000000000000000000', '62766367743380994489915141477696857044755440558273207580887076164848241048539429.59262327777197423596444308226835178887'); + T('88804107107559930046092936712139620512040038382914013891624071753711226264013140153583717755112772233557425098002467830699052147734198261974270570978078001915494463782113496837,100000000000000000000000000000000000000000000000000000000000000000000000000000', '888041071075599300460929367121396205120400383829140138916240717537112262640131401535837177551127722.33557425098002467830699052147734198261974270570978078001915494463782113496837'); + T('115002442406703584178185294122325712122842192109474381450624873216924285090467595499234670133342099726329554064579,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '230004884813407168356370588244651.4242456843842189487629012497464338485701809351909984693402666841994526591081291580'); + T('281153885629419726548824319427449841809079796787193695801572124693821870927,11125957', '25270085587192160328214851039551010471196302195594832498595143293635.0437923677037391020843520523715800957846185038636999961559631821400093846457966749', '26200508'); + T('107590545904878109399898544892791250425613052952813246657210241239393365761789609,1250000000000000000000000000000000000000000000000000000', '86072436723902487519918835.9142330003404904423622505973257681929915146926094316872'); + T('336691854215296851780405900296031485870297547905657610287048904912614725160314592634910900322215844608347716185906299548473017105494879354044791,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '336691854215296851780405900296031485870297547905.657610287048904912614725160314592634910900322215844608347716185906299548473017105494879354044791'); + T('371480560684277082668491524150108281529274363544360285467612385157153460856295638808810364012946376958259738430744167803245930749900255140112481712729944733952142996121247846362608579431806857,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '742961121368554165336983048300216563058548727088720570935224770314306921712591277617620728025892.753916519476861488335606491861499800510280224963425459889467904285992242495692725217158863613714'); + T('90156107022576191282253438844768882560380632069595603307941806727485440731711227686222691231,1', '90156107022576191282253438844768882560380632069595603307941806727485440731711227686222691231.0', '5480298739494692404113665279307860287265772'); + T('676207065438806757306657797270701640910718687363106,1', '676207065438806757306657797270701640910718687363106.232707553596649377152910871250455082640109949938595144796401', '2'); + T('307627784692122693008294108656835628137921414014386937549059014929182112328861899672419,100000000000000000', '3076277846921226930082941086568356281379214140143869375490590149291821.12328861899672419'); + T('1019112032522319011513743334667754449108139023710934695597532972093019590416143731973703239996332828727266689906936150481584706243926489450173712530253,17054304152143118034178339067126344617804666449539944765504311916945546205137312910252', '59756881513940453622961763561761551483631213107634476215190193531.3165867394473728188428531421874167961311863141432393149058157078094433891826691976659580244336159690', '24149837024363500548775403668943393737605180826594994856002909548103707523924658663721'); + T('24320206632303877337018150776534830120127412621279410316049997868506080584897,500000000000000000000000000000000000000000000000000000000000000', '48640413264607.7546740363015530696602402548252425588206320999957370121611697940'); + T('632068538992,299627248623', '2.10951621355135030628959798316775030242', '667715230026'); + T('30723874502935040146583633833130458750279615551530417455389485335564411003264654722578476707999808118764177718404903122118992393,1000000000000000000000000000000000000000000000000000000000000', '30723874502935040146583633833130458750279615551530417455389485335564.411003264654722578476707999808118764177718404903122118992393'); + T('286178536955337099327464576728331587889607911392190634657903988794024067683540787647737271834874819490786147362267100761724779889,400000000000000000000000000000000000000000000000000000000', '715446342388342748318661441820828969724019778480476586644759971985060169.2088519691193431795871870487269653684056677519043119497225'); + T('225716760325402765480453148877447994008859292645269220156515793592565178478504694872477733969169483366031115902552261152263,100000000000000000000000000000000000000000000000000000000000000000000000', '2257167603254027654804531488774479940088592926452692.20156515793592565178478504694872477733969169483366031115902552261152263'); + T('166422076347679754457402925324150208100304102197597626198641249881291,500000000000000000', '332844152695359508914805850648300416200608204395195.252397282499762582', '595938455117353715726533211799175395565247198980519036774725159'); + T('92474208223036180278717843071595801935199978666019361143552458912542268609094249043138966113404623,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '924742082.230361802787178430715958019351999786660193611435524589125422686090942490431389661134046230', '384893898044272576757884146625767491425042466631820743697266238210622119815334941457068522319571859800723072'); + T('4801579045833748240620308947950089769875299076650997798853,1000000', '4801579045833748240620308947950089769875299076650997.798853'); + T('92818162596390473570913489263772149216048983528220989923030438739602367016857612844868557954427,10000000000000000000000000000000000000000000000000000000', '9281816259639047357091348926377214921604.8983528220989923030438739602367016857612844868557954427'); + T('1054044512154426314878240206476736860691603532279813559806376256940851271707,20000000000000000000000000000000000000000000000000000000000000000000', '52702225.607721315743912010323836843034580176613990677990318812847042563585350', '132750239272960379396269149467880829933650132793415257290257220693012'); + T('1950260986744420612627266461252568941645104794448107,1000000000000000000000000000000000000000000000', '1950260.986744420612627266461252568941645104794448107'); + T('3420599355260725534580884522073225022198987022228846435295522221954135336191942043090733084633992155497809109068153537458117479579431129,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '6841198710521451069161769044146450044397974044457692870.591044443908270672383884086181466169267984310995618218136307074916234959158862258'); + T('21801726759466625902075716247189780705759631914594809868496882689119821892069323995653346876539886660866871,250000000000000000000000000000000000000000000000000', '87206907037866503608302864988759122823038527658379239473.987530756479287568277295982613387506159546643467484'); + T('8662514288504709301163055702408996483964651352163407517985146778131926637288811147922076068037312182374897258627079219878971,10000000000000000000000000000000000000000000000000000000000000000000000000000000000', '866251428850470930116305570240899648396465.1352163407517985146778131926637288811147922076068037312182374897258627079219878971'); + T('2335156819025320456542491284916593277514846432649030650406781161541460408081740604535185151601367656917158704090094377170340940777294656240040982897,2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '934062727610128182616996513966637311005938573059612.2601627124646165841632326962418140740606405470627668634816360377508681363763109178624960163931588'); + T('63654450465180016591742773920768518412294924364672171032800586170759569,100000000', '636544504651800165917427739207685184122949243646721710328005861.70759569'); + T('67017226545297291596788980559120386755737203907750761130545403,1250000000000000000000000000000000000000000000000000000', '53613781.2362378332774311844472963094045897631262006089044363224'); + T('1834202980794378523142996418618158434266769632338075275566234011547291333605095187322588266592801041375,2728622727250961344924048054555626447313315476626465983644676145928438417252418810441', '672208349830137661.0942704654707426447364588742190615418045766720625819944644489835174706718477671949019962898837174', '3060324951336066473403966327368318133634181672878042528628461545369720500607838478698'); + T('724151319188526857516015364911054452983796479888236151875899188098296091563373,2', '362075659594263428758007682455527226491898239944118075937949594049148045781686.5', '3728535308064241709642992906437162149848'); + T('913161203334294301947,1000000000', '913161203334.2943019470'); + T('1000730618593668355073183788658419468874098478193537979324951367,1000000000000', '1000730618593668355073183788658419468874098478193537.979324951367'); + T('98578065477380636870100743410132239138150603712881520,1', '98578065477380636870100743410132239138150603712881520.0'); + T('1593653227528651554398919030088527404972981723686120202542946612603975281246782283952373738247671009241097893,244376382898878709186556743314810099835899136846', '6521306226993688084262488516142465500275896529315090407774915.4390277153651041272996824372692207805951482614581375281886491067796', '320896389969383038785219513263634670827380910560'); + T('1098576836684484704997452093434476835830575095945740572130146590994553924253484329785345800790170709555710672234900297863234859386093535546823682473,125000000000000000000000000000000000000000000000000000000000', '8788614693475877639979616747475814686644600767565924577041172727956431394027874638282766.406321365676445685377879202382905878875088748284374589459784', '580755848202156326016924884077059025897828282924714692042700832'); + T('98856015342574146019060178479759793759304710950289379284070197,10000000000000000000000000000000000000000', '9885601534257414601906.0178479759793759304710950289379284070197'); + T('580368338794671752821269385270342578980827601542629307885673919782902096378604694343656768007757459380781031973411772409250979813132067528072149194522614456969,1250000000000000000000000000000000000000000000000000000000000000000000000000', '464294671035737402257015508216274063184662081234103446308539135826321677102883755474.9254144062059675046248255787294179274007838505056540224577193556180915655752'); + T('69982084220851887614167671807406656266816171302967221742593895150687,100', '699820842208518876141676718074066562668161713029672217425938951506.87', '54403392513559426721299504443157825252617408149349867483376440447'); + T('2018853736861528670763599026530020008195846168939825002390514885917432739031000764700018894935539479830625328771187655839828813167,29884853861934945378863310572572196981269', '67554412217922573204803437390939478181208940016133763859817864059085840485469282963181019.19791615300926846665465703968492270928565365268908436662715', '33392687306924808799500742211568775440536'); + T('530027912908014643675270751164750719833056592215023870512832293271045526003960718599676622511253038980627258993911327348577365854850830043924340793,1000000000000000000000000000000000000000000000000000000000000000000000000000', '530027912908014643675270751164750719833056592215023870512832293271045526.003960718599676622511253038980627258993911327348577365854850830043924340793'); + T('8734735018342228299296090238863640379760418043064479934394562234031967281491808567345771710811322186275692378629728220679938160003692820341,100000000000000000000000000000000000000000000000000000000000000000', '87347350183422282992960902388636403797604180430644799343945622340319672814.91808567345771710811322186275692378629728220679938160003692820341'); + T('6722788254690658393400979717508508269239637599135817059,200000000000', '33613941273453291967004898587542541346198187.9956790852950'); + T('7437180918830993537032395884958073653904626738419559962059983,1000000000000000000000000000000', '7437180918830993537032395884958.073653904626738419559962059983'); + T('678608120908470140173991795540669892372847725269378282378365833145325640439329229307313633722843810507520881589650753115173369715723114474748456801385922995060079,1000000000000000000000000000000000000000000000000000000000000000000', '678608120908470140173991795540669892372847725269378282378365833145325640439329229307313633722843.810507520881589650753115173369715723114474748456801385922995060079'); + T('86894722198923597840560746168874947033616752839619628508272485307838443277363083879320271424429852793,1000', '86894722198923597840560746168874947033616752839619628508272485307838443277363083879320271424429852.793', '3631197556693210653073184532428485425255348157219832901774'); + T('17970721880705870085054361726421717606722108915965471930329036480272239344308991597936504664878045388124735330004009910921,20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '898536094035293504252718086321085.88033610544579827359651645182401361196721544957989682523324390226940623676650020049554605'); + T('5948697443135706703788917312367,100000', '59486974431357067037889173.12367'); + T('3946733843989140918050146097267216988669431771,577886291193042952', '6829602820030790847543876934.02258790700574374198489118872645183303458692610035440156215891630548679719783', '667417859486950026'); + T('493858380487330334553899939554971082426451967753112354596468356557,5000000000000000000000000000000000000', '98771676097466066910779987910.9942164852903935506224709192936713114'); + T('123084490293475602607614884133531998828862861585787351245614755708686612116721277769653301046242789968234508397289909158055602802061,20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '6154224514673780130380744206676599941443143.07928936756228073778543433060583606388848266505231213949841172541986449545790278014010305'); + T('6927482597114680607834922765933648950334814075397606193627167620391317958568821118589203,100000000000000', '69274825971146806078349227659336489503348140753976061936271676203913179585.68821118589203', '41718700671033927886513136610866596633645608053066723832100884'); + T('95538944758612146141176396275398005954352758782334733053038291386324885989961287864210,11', '8685358614419286012834217843218000541304796252939521186639844671484080544541935260382.727294449076880196380605689453495898969668417125590960428365196683178504081224393284', '570'); + T('32993752053684425807747294778148085597692415739709994,638184719', '51699376483635964037784011525584782291994076.6236209331737383706493508641321733305200624022422', '2141040464'); + T('223942440246,248225668363', '0.9021727757764007', '609899431382'); + T('16686579847373982176404589194403513916267058244556986258849490594859727370843269811410258544438506162845429784416595935602473679945761077,20000000000000000000000000000000000000000000000000000000000000000000', '834328992368699108820229459720175695813352912227849312942474529742986.36854216349057051292722192530814227148922082979678012368399728805385'); + T('7453839315378838224947273562889200300255201795789768843276848020086237609421,100000000000000000000000000000000000000000000000000000000000000000000000', '74538.39315378838224947273562889200300255201795789768843276848020086237609421'); + T('88186134153847200319907838505055317969004545179501640348910365893233471389254602659518381116512509844213870327,9765625000000000000000000000000000000', '9030260137353953312758562662917664560026065426380967971728421467467107470.2596713123346822263308810080475003214848', '833555353746649953279923803074475202769062814458423077827564033682942755'); + T('291651801565673891735,441799', '660145906997693.27620705343909321636692', '475636'); + T('3943935476569904891723785189074953927414878941370369202289012846241086155860318787858564276558320735525331470755293103519133817,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '3943935476569904891723785189074953927414878.941370369202289012846241086155860318787858564276558320735525331470755293103519133817'); + T('75302834320878879457221652547914488454737262753632963871692491571975871172248660219123955075959110697547,100000000000000000000000000000000000', '753028343208788794572216525479144884547372627536329638716924915719758.71172248660219123955075959110697547'); + T('286254617761534858369612111554416,44902328951267285921', '6375050569697.807323576944467346526062905538962967762891749230526034972918', '44929005448766457238'); + T('3746139574442736600133406409787136253033944992476571372451349971463733707013337603307113483922358784475865353830238500792008470975355809924470290472421506149,5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '749227914888547320026681281957427250606788998495314274490269994292.7467414026675206614226967844717568951730707660477001584016941950711619848940580944843012298'); + T('37406858419305938135286171702693320249855935205139647062682249364933852246421767685483,500000000000000000000000000000000000000000000000000000000000000000000000000000000000', '74.813716838611876270572343405386640499711870410279294125364498729867704492843535370966'); + T('11159601476231535654741788412416202881635877421391863561941550761560649976787093908100772767774222070807449142387341,100000000000000000000000000000000000000', '111596014762315356547417884124162028816358774213918635619415507615606499767870.9390810077276777422207080744914238734100'); + T('5202314789815646277150835429404879071603050113822553743596059100657262453703715303,40000', '130057869745391156928770885735121976790076252845563843589901477516431561342592.882575', '66027873'); + T('304974437931081602650032524760965871551608292495930150945863595349787675349596911689176201582031187229344132110281,1357797756240047452202752179724701484120084840431181047509757564399930443993347892330', '224609619900686178223912328077.7443121694198187253469840096889635680497517685978187200433620475779622573500912322765762965524609863', '4531192428741997048411481671100163403784805772178484102146612877029644423079894127823'); + T('3766014359237,800000000', '4707.51794904625', '7853235314974998'); + T('311475636684241059876365851605648547902228954687,5000000000000000000000000000000000000000', '62295127.3368482119752731703211297095804457909374'); + T('95942011683584513899200680778652795117868885339,1000000000000000000000000000000000000000000000', '95.942011683584513899200680778652795117868885339'); + T('12766155608271430221647976553149893759584816809408489139986361341082789186923046040729403013493459196737462331526072870887109,6250000000000000000000000000000000000000000', '2042584897323428835463676248503983001533570689505358262397817814573246269907687366.51670448215895347147799397304417165934193744', '93126923446050929294103459255648989880852923558235441052339284471205926790072168747045165'); + T('5050978417270036929890556014363105586807333767534651101340315552268579329086313825980085677972688558518469677967261525650390108135458820811,250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '20203913669080147719562224057452422347229335070138.604405361262209074317316345255303920342711890754234073878711869046102601560432541835283244'); + T('514785480892443581111011049635898989522189108839752679508896007986075563249680148629967905105747624723273024943,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '514785480892.443581111011049635898989522189108839752679508896007986075563249680148629967905105747624723273024943'); + T('267737767017891684255898230028455429260991473930007229195590053591931280617076656188214376062161831184386528376881147906819687668809677563924650021,50000000000000000000000000000000000000000000000000000000', '5354755340357833685117964600569108585219829478600144583911801071838625612341533123764287521.243236623687730567537622958136393753376193551278493000420'); + T('248259504263040834608233334198108145412348875247144730132530909287139514727494049122871346,47732130929763380841', '5201098283844657888397210939987325835547277037459741568044731851516514.73634681073130117711020811237650578307976297729277805241093095474959673783840483910867', '5024411020558340543312'); + T('55464558317631039321559765849925798648390666160464586486280863822713088834539695339682241860828114727160148856646089617,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '55464558317631039321559.7658499257986483906661604645864862808638227130888345396953396822418608281147271601488566460896170'); + T('15421483144336270077371210750899333898679645561504523633209496264965010394930803328016197705616989442784785,49984940267107918826', '308522588242127401197353099520103594922877070048176300229719294528874975525549904675985.9485359329604023169832489554441000991', '61355845435674844526'); + T('6855440895600044261671405027414507429789800105303059815241230707817129262097559133424765895800883527246883701308438021,100000000000000000000000', '68554408956000442616714050274145074297898001053030598152412307078171292620975591334247658958008.83527246883701308438021'); + T('27263704632607142270401184496759949558690923110949180431533606763,20000', '1363185231630357113520059224837997477934546155547459021576680.33815', '606624887961647054532897310953779853618934383968313019879350462126175949928993363987651814'); + T('90954990859482993959724846045748010087463959,125', '727639926875863951677798768365984080699711.672', '588824757782012773261640878838777321142728950393257882912418442907031819512234'); + T('1493569539393627900541858134137603447531077013858830325785084098585732603941651348853545566104365474803,1000000', '1493569539393627900541858134137603447531077013858830325785084098585732603941651348853545566104365.474803', '3182820534541090775056684943977433195872567458734700994010822943243520679220246426898'); + T('324725691215801921476094759101909541875602304206478416528531250398201107463367988182933405249982011662330601,50000000000000000000000000', '6494513824316038429521895182038190837512046084129568330570625007964022149267359763.65866810499964023324661202'); + T('25308321535355028217216957904491,5569187114692733093840', '4544347498.863190164819697293209529531404911058684', '7723635601139758565843'); + T('8658777803281975609968463280524071823375642811421607061029953506904956846061159429058371,100000000000000000000000000000000000000000000', '86587778032819756099684632805240718233756428.11421607061029953506904956846061159429058371'); + T('4215726801070323444647630281510808779143459576242997643967294379158258415984350576313270248295291231861927178054,8801198818356547303082759', '478994610629365197012477473717361789088233414206341594179220175540708293059656499309131.1197482000861233142996023980139256469694810', '9219447145070526604874006'); + T('350219027018265521256189312491936248573915564006546709163466462009603052479301023519364445626038090785927171839374456992889152646903427846290756941,50000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7004380540365310425123786249838724971478311280130934183269329240.19206104958602047038728891252076181571854343678748913985778305293806855692581513882'); + T('18838265670959180747789613494901603955905673528214021208240108707414144737352242491390744711159628979832028357517923496753376897134,2584402836812084642754771195541804154926099055589080760558497', '7289214128164546673077585428995457658876312767922421632262422308769050.379657338235342151193256041128846262031912288379823584158769838474025799337151989092013277121571615', '5322144155931111466743034122299554141788673340121784975895214'); + T('110540403222773032054929356513175003594418655601576752219028431256243715401738728452564148356781548250303,50000000000000000000000000000000000000000000000000', '2210808064455460641098587130263500071888373112031535044.3805686251248743080347745690512829671356309650060600'); + T('34521678049086112732982603617637423488030098370864976367418263782422677974076092812569932135807092991,10000000000000000000000000000', '3452167804908611273298260361763742348803009837086497636741826378242267797.4076092812569932135807092991', '9565990599377329484423005085641091352736216008630315082396889620817076025190521731088325462643453265267584'); + T('686981974413884751293690490784988550329391377445018867980503873317,50000000000000000000000000000000000000000000000000000000000000000', '13.73963948827769502587380981569977100658782754890037735961007746634'); + T('39967009834238797427182253133070010605320897536027467147,125000000', '319736078673910379417458025064560084842567180288.219737176', '3546986130406819267454979773897918044730322031561726889492515191671301'); + T('2054848767576587955462470796182561489545688219952205806313236406797613009606793513761184547627264318510083497,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '4109697535153175910924941592.3651229790913764399044116126264728135952260192135870275223690952545286370201669940', '19171208630106026353275589645613967733224343436112425066800794894453677875314261981745825449319'); + T('1258311307164311617381367950628372981420522447544944439693149609041298843621306748572743262432414156764952221586409072251176086979,250000000000000000000000000000000000', '5033245228657246469525471802513491925682089790179777758772598436165195374485226994290973049729.656627059808886345636289004704347916'); + T('492541774159879640437936287616718070610370129799840600955174836508798297733803571061834516664670316321397051566302739470908697122858665682327,500000000000000000000000000000000000000000000000000000000', '985083548319759280875872575233436141220740259599681201910349673017596595467607142123.669033329340632642794103132605478941817394245717331364654', '772690036339621488428269775437822570422870894506512284167339990445682547198933662923265581'); + T('413875835951731659277384103388688394090011015604931352043,6250000', '66220133752277065484381456542190143054401762496789.01632688', '267799856219808852183'); + T('25623638455508129716975373710250219093690370694168048889682125687,728796356236789336532397', '35158845452820691695331252389119574225619.5643086760770102207250792274157899888147246542964984154489942046175778073820104', '4682678030669483013541263'); + T('12367863144967384872529417463063119791986560777209539757,2500000000000000000000000', '4947145257986953949011766985225.2479167946243108838159028', '19780730703790873838347852973574677540986567656865706078825739326608066836976512951818878167033944417505061150717024'); + T('9971596879982164667,1000000000', '9971596879.982164667'); + T('338345846975325139996317671732776306269185647762097932941355508406167695219190203003609,40587706508395974705401', '8336165703409107474709453480980066107483661912962839864091523498.0126686226890405486513889705767265041180045', '41022537112870625129272'); + T('127928935759871381312732087750566099177874361325298055925972104481990091044917887846249290063171763251,50000000000', '2558578715197427626254641755011321983557487226505961118519442089639801820898357756924985801.26343526502', '621875728720764263561029044312241358762794797665106621297993145788249024700'); + T('16626060161524464574713076045625021016208464957298152388988528750805470496009977748891419,25000000000000000000000', '665042406460978582988523041825000840648338598291926095559541150032.21881984039910995565676'); + T('139835943154689530164226571,16000000000', '8739746447168095.6352641606875'); + T('655492388278806204545768064730065599657599852803336783,100000000000000000', '6554923882788062045457680647300655996.57599852803336783', '976108250785731949679925001521155265790958652927658681941'); + T('810011346800097039139210061890622091915594232858534709414710566706428201195198961960548291930674225613464775148923720691217878393179,10000000000000000000000000000000000000000000', '81001134680009703913921006189062209191559423285853470941471056670642820119519896196054829.19306742256134647751489237206912178783931790', '659255936975989889409223375243561380964658820807429254878323937252539411092735435865211779'); + T('767010060358818890783562424457154229236761908349178661946491180919697196736640696221322466225137922274445553575680781328318284000710534431,125000000000000000000000000000000000000000000000000000000000000000000', '6136080482870551126268499395657233833894095266793429295571929447357577.573893125569770579729801103378195564428605446250626546272005684275448'); + T('6251274083692311423733916625297741079068776687255993282033945555286360790665510481,1000000000000000000000000000000000000000000000000000000', '6251274083692311423733916625.297741079068776687255993282033945555286360790665510481'); + T('473620934850848082187223138350602125191020210530458123567437931094543854409630864168927727,10000000000000000000000000000000000000000000000000000000000000000', '47362093485084808218722313.8350602125191020210530458123567437931094543854409630864168927727'); + T('28392638992177631538735383923909742173497869442249044705049559217795836913231369776653059449522857321829651,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '28392638992177631538735.383923909742173497869442249044705049559217795836913231369776653059449522857321829651', '5028820610639781639325654949257292223081041411494147435152768836878813294805858397173957511962736507674020'); + T('9552496340020091725697433,10000000', '955249634002009172.5697433', '681734365310500930436632536264485543390585757982517774887009602160278649869690646'); + T('191407226365712801218816880714794123311237815231478951057699351929786915001765279771136714191232777459076067241766801466017951665819488454219712701784568617525439,250000000000000000000000000000000000000000000000000000000000000', '765628905462851204875267522859176493244951260925915804230797407719147660007061119084546856764931109.836304268967067205864071806663277953816878850807138274470101756', '796843914588374585605530216500278077281516834694785006819875719121'); + T('973708114707156900848575306441883115282262041526510308450033867296915537409831603407246049399369228564061,25000000000000000000000000000000000000000000000000000000000000000000000000000000000', '38948324588286276033943.01225767532461129048166106041233800135469187662149639326413628984197597476914256244'); + T('41176818016861564738549999724345149794954792976459967902179568613277,500000000000', '82353636033723129477099999448690299589909585952919935804.359137226554', '669011453192737766662797002206221194892295529858894718227759009576786576439366369655530541'); + T('2297280934071181232289100315902073111835117061805828135181986873561508623403722194338276074897169459,250000000000000000000000000000000000000000000000000000000000000000000', '9189123736284724929156401263608.292447340468247223312540727947494246034493614888777353104299588677836'); + T('493865232957959844369851283310738555249442370187169054736707861015181,1000000000000000000000000000000000000000', '493865232957959844369851283310.738555249442370187169054736707861015181', '670693117968294371193270720647906750197834156929685579183197442866318330576022797208'); + T('409271320054752626250953921458862574122032388782159837960166261432376032498288772914987357485363480329191,20000000000000000000000000000000000000000000', '20463566002737631312547696072943128706101619439107991898008313.071618801624914438645749367874268174016459550', '1857697448678073248864111007805323144660940247856110752402597224275056054503062819540715261827115353176657605923020695'); + T('1091233021200519149409087486543248004149493427849573405514209173739773291315508685002542487733353392960642990271133459767,4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '272808255300129787352271871635812.00103737335696239335137855229343494332282887717125063562193333834824016074756778336494175'); + T('1595690121196871153886729,200000000000000', '7978450605.984355769433645', '6043921481194682383933679927'); + T('35198307665288379989739763374405377831198720275886562170938556931298244697897264380623354673785632771,10000000000000000000000000000000000000000000000000000000000000000000000000', '3519830766528837998973976337.4405377831198720275886562170938556931298244697897264380623354673785632771'); + T('23696485864014344411749757864467460969465379680156310297289316481649993164859,12500000000000000000000000000000000000000000000000000000000000', '1895718869121147.55293998062915739687755723037441250482378314531853199945318872', '88169772318726534478097482287174902361436232507508528249890047249859106140720080138823592262180105'); + T('2470252623431054313731331443175884514511972829541093697927860344370604828517286139353493663429245331486666,5108090079928118985489686671', '483596135694188011378667156401843144027164732844551280707660248632923225254800.587199079677953937875639324206276895271235823612547506378684214987948118274320359990368', '5382458010937250568880673669'); + T('114221349590728832380263984994984635861738747311983631781352559687519165032758871,100000000000000000000000000000000000000000000000', '1142213495907288323802639849949846.358617387473119836317813525596875191650327588710'); + T('3284945592812373184344753972758476891953304894259,4000000000000000000000000000000000000000', '821236398.20309329608618849318961922298832622356475'); + T('2256552538268324957101459584274765124413730131360493850955441001778068390578610403086691841111551405816799647689962152222209,500000000000000000000000000000000000000', '4513105076536649914202919168549530248827460262720987701910882003556136781157220806173.383682223102811633599295379924304444418'); + T('45102018400266989728931638141595361761071295617811579289997697670832298744506116516722877037008568752523755414709825779737363977291512033198315936360667277,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4510201840026698972893163814159536176107129561781157928.9997697670832298744506116516722877037008568752523755414709825779737363977291512033198315936360667277'); + T('2991118205134544635217224882676124745244670098171611353811722020713540132602932667617729650082673649312361632555982015642938286243972586805717247022507624073645853595324932716067929,400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7477795512836361588043062206690311863111675245429028384529305051783850331507331669.0443241252066841232809040813899550391073457156099314670142931175562690601841146339883123317901698225'); + T('43406214460275172698038479789612757524898533646080070899355546034286693170983145909731585902643,18687745885171468234775664818563711', '2322710011522446475757338874013239466938178964161018202462196.53231516923374798133674231744884434422245047240330215423739416673515083141853518', '24830247378717343908862228854084190'); + T('4682650609411899735589035611734839738748275802992269558418422379673582726796923610465719356507461769677666289014200384110046607144919937994870547743121,5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '936530121882379947117807122346967947749655160598453911.6836844759347165453593847220931438713014923539355332578028400768220093214289839875989741095486242'); + T('6343504805835314981042161153519341413408814287852266648003279622224288264182025200490500813492402339458961013,1000000000000000000', '6343504805835314981042161153519341413408814287852266648003279622224288264182025200490500813.492402339458961013'); + T('2043755907556873690066829609994954302797373554833237131297,5000000000000000', '408751181511374738013365921998990860559474.7109666474262594', '1956664943557976499821087345250316684037359526871385211708133002423524'); + T('313284563452294441735736652942879418320584421214021592208381792517413756116801965056033499858686861805057047003471,2000000000000000000000000000000000000000000000000000000000000', '156642281726147220867868326471439709160292210607010796.1041908962587068780584009825280167499293434309025285235017355'); + T('11471639769771687066577323756368359399412710207010171779949298240855743839316944634591329633416155194817943709829531,200000000000000000000000000', '57358198848858435332886618781841796997063551035050858899746491204278719196584723172956648.167080775974089718549147655'); + T('23776195197101022472023159066867591626860322971795239505778686401286942957171879146898109574605597407608118187436758896473157262424044809239822026232771581,250000000000000000000000000000000000000000000000000000000000000000000', '95104780788404089888092636267470366507441291887180958023114745605147771828687516587592.438298422389630432472749747035585892629049696179236959288104931086324', '170109268958634877909065036709787962672848011126048129765200921441020133297498972167180624'); + T('35518282899106761300653224275853720735244906250293433645349674469329930654366141,100000000000000000000000', '355182828991067613006532242758537207352449062502934336453.49674469329930654366141'); + T('853774591279175110534841081508464694413901769,25000000000000000', '34150983651167004421393643260.33858777655607076'); + T('434880828240088350029098564204588579863154654848110708450994020630614580434999236881672317324560458832813078468886616827281212017480013,25000000000000000000000000000000000000', '17395233129603534001163942568183543194526186193924428338039760825224583217399969475266892692982418.35331252313875546467309124848069920052', '739293900270272912650169319408236065394650909425013543189206691255522429'); + T('11526403854413902548795861447,6250000000000', '1844224616706224.40780733783152', '307840150789672937492642930347274685995354235175108309976189389250759848'); + T('702765355056540457405882229774275623914171478700737088553544569128446928397,10000000000000000000000000000000000000000000000000000', '70276535505654045740588.2229774275623914171478700737088553544569128446928397', '2994201467352227469980411736484219035208598424332283240168638173739557964288699659349793900394590666632'); + T('54825256449234689277507377,1000000000000000', '54825256449.2346892775073770', '7247599320592380995092818422'); + T('52241358526638931241686750736713811006187403081280396420418024952453139299798099747,1000000000000000000000000000000000000000000000000000000000000000000000000', '52241358526.638931241686750736713811006187403081280396420418024952453139299798099747'); + T('56621644568088128185885031935431,100000000000000000000000000000', '566.21644568088128185885031935431'); + T('39372223523562980543199487796419847872440851625907503200333,50', '787444470471259610863989755928396957448817032518150064006.66', '955541553332758813213626519789460543325290905244676838372840424628529596179789208585303701552552351175041044662668537427'); + T('325293311478566577489170522256284017692295100018580428088669389347157000201893827964335714244323280261021551781493573554200870379941749285031284525050456990337767,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '650586622957133154978341044512568035384590200037160856177338778.694314000403787655928671428488646560522043103562987147108401740759883498570062569050100913980675534'); + T('614864078480713483874128578932501548981704516588520712161898329483464331757759954227806822474378198285515275589259000330713642481603365393389422940141019017401109,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '614864078480713483874128578932501548981704516588520712161898329483464.331757759954227806822474378198285515275589259000330713642481603365393389422940141019017401109'); + T('3829270893665970578184851197459824275528243394573338346473491354929939788896655873285990520983852622278895790953125487430033,50000000000000000000000000000', '76585417873319411563697023949196485510564867891466766929469827098598795777933117465719810419677.05244557791581906250974860066'); + T('780053005909401364919286689621630092740741364968611783815095760045292,1', '780053005909401364919286689621630092740741364968611783815095760045292.0', '45690752976547956116643254519509539579394298044534876843625082629489'); + T('11115161271892961338110886311733472538474225695783394064891231044512131866645638610465780143254877130975043621543307573319,117372832939055230293151', '94699608023130933036348120811996198905372415393501407434579046671460258797730199936885542957363696.08748184584119788329165464491688408482957311641741', '959631860555403859564786'); + T('269442874752488639176619580396174881364833,10000000000000000000000000000000', '26944287475.2488639176619580396174881364833', '8371945805788249772750247654848998754940863393299617894213772127884912858370833994661593347'); + T('64668573815841734344417489298502668067859,1000000000000000000000000000000', '64668573815.841734344417489298502668067859'); + T('3761571027751684615243460444230696668509504743538045995257317822557431413971266200889927052756417,10000000000000000000000000000000000000000000000000000000', '376157102775168461524346044423069666850950.4743538045995257317822557431413971266200889927052756417', '902612837213836957407294100697258033215360383465558379387665'); + */ + + T('2469,20', '12.345e1', null); + T('2469,20', '12.345e1', u); + T('2469,20', '12.345e1', '2.1e1'); + T('1111,9', '12.345e1', new BigNumber(10)); + T('2469,20', '12.345e1', new BigNumber('123e399')); + + assertException(function () {new BigNumber('12.3e1').toFraction('')}, ".toFraction('')"); + assertException(function () {new BigNumber('12.3e1').toFraction(' ')}, ".toFraction(' ')"); + assertException(function () {new BigNumber('12.3e1').toFraction('\t')}, ".toFraction('\t')"); + assertException(function () {new BigNumber('12.3e1').toFraction(NaN)}, ".toFraction(NaN)"); + assertException(function () {new BigNumber('12.3e1').toFraction('NaN')}, ".toFraction('NaN')"); + assertException(function () {new BigNumber('12.3e1').toFraction('hello')}, ".toFraction('hello')"); + assertException(function () {new BigNumber('12.3e1').toFraction([])}, ".toFraction([])"); + assertException(function () {new BigNumber('12.3e1').toFraction({})}, ".toFraction({})"); + assertException(function () {new BigNumber('12.3e1').toFraction(true)}, ".toFraction(true)"); + assertException(function () {new BigNumber('12.3e1').toFraction(false)}, ".toFraction(false)"); + assertException(function () {new BigNumber('12.3e1').toFraction(function (){})}, ".toFraction(function (){})"); + assertException(function () {new BigNumber('12.3e1').toFraction(new Number)}, ".toFraction(new Number)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new String)}, ".toFraction(new String)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new Date)},".toFraction(new Date)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new RegExp)}, ".toFraction(new RegExp)"); + + assertException(function () {new BigNumber('12.3e1').toFraction(7.5)}, ".toFraction(7.5)"); + assertException(function () {new BigNumber('12.3e1').toFraction(new BigNumber('225.435435'))}, ".toFraction(new BigNumber('225.435435'))"); + assertException(function () {new BigNumber('12.3e1').toFraction(0)}, ".toFraction(0)"); + assertException(function () {new BigNumber('12.3e1').toFraction('0.99')}, ".toFraction('0.99')"); + assertException(function () {new BigNumber('12.3e1').toFraction(-1)}, ".toFraction(-1)"); + assertException(function () {new BigNumber('12.3e1').toFraction(-23)}, ".toFraction(-23)"); + assertException(function () {new BigNumber('12.3e1').toFraction(Infinity)}, ".toFraction(Infinity)"); + assertException(function () {new BigNumber('12.3e1').toFraction('-Infinity')}, ".toFraction('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('2469,20', '12.345e1', null); + T('2469,20', '12.345e1', u); + T('2469,20', '12.345e1', undefined); + T('2469,20', '12.345e1', ''); + T('2469,20', '12.345e1', ' '); + T('2469,20', '12.345e1', '\t'); + T('2469,20', '12.345e1', NaN); + T('2469,20', '12.345e1', 'NaN'); + T('2469,20', '12.345e1', []); + T('2469,20', '12.345e1', {}); + T('2469,20', '12.345e1', new Date); + T('2469,20', '12.345e1', new RegExp); + T('864,7', '12.345e1', '7.5'); + T('2469,20', '12.345e1', 0); + T('2469,20', '12.345e1', -23); + T('2469,20', '12.345e1', '2.1e1'); + T('2469,20', '12.345e1', Infinity); + T('2469,20', '12.345e1', '-Infinity'); + T('1111,9', '12.345e1', new BigNumber(10)); + T('2469,20', '12.345e1', new BigNumber('123e399')); + T('2469,20', '12.345e1', new BigNumber(Infinity)); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js new file mode 100644 index 0000000..8ed0547 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js @@ -0,0 +1,852 @@ +var count = (function toPrecision(BigNumber) { + var start = +new Date(), + log, + error, + undefined, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function assertException(func, message) { + var actual; + total++; + try { + func(); + } catch (e) { + actual = e; + } + if (actual && actual.name == 'BigNumber Error') { + passed++; + //log('\n Expected and actual: ' + actual); + } else { + error('\n Test number: ' + total + ' failed'); + error('\n Expected: ' + message + ' to raise a BigNumber Error.'); + error(' Actual: ' + (actual || 'no exception')); + //process.exit(); + } + } + + function T(expected, value, precision){ + assert(String(expected), new BigNumber(value).toPrecision(precision)); + } + + log('\n Testing toPrecision...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : [-7, 40] + }); + + // ---------------------------------------------------------------- v8 start + + T('1e+27', '1.2345e+27', 1); + T('1.2e+27', '1.2345e+27', 2); + T('1.23e+27', '1.2345e+27', 3); + T('1.235e+27', '1.2345e+27', 4); + T('1.2345e+27', '1.2345e+27', 5); + T('1.23450e+27', '1.2345e+27', 6); + T('1.234500e+27', '1.2345e+27', 7); + + T('-1e+27', '-1.2345e+27', 1); + T('-1.2e+27', '-1.2345e+27', 2); + T('-1.23e+27', '-1.2345e+27', 3); + T('-1.235e+27', '-1.2345e+27', 4); + T('-1.2345e+27', '-1.2345e+27', 5); + T('-1.23450e+27', '-1.2345e+27', 6); + T('-1.234500e+27', '-1.2345e+27', 7); + + T('7', 7, 1); + T('7.0', 7, 2); + T('7.00', 7, 3); + + T('-7', -7, 1); + T('-7.0', -7, 2); + T('-7.00', -7, 3); + + T('9e+1', 91, 1); + T('91', 91, 2); + T('91.0', 91, 3); + T('91.00', 91, 4); + + T('-9e+1', -91, 1); + T('-91', -91, 2); + T('-91.0', -91, 3); + T('-91.00', -91, 4); + + T('9e+1', 91.1234, 1); + T('91', 91.1234, 2); + T('91.1', 91.1234, 3); + T('91.12', 91.1234, 4); + T('91.123', 91.1234, 5); + T('91.1234', 91.1234, 6); + T('91.12340', 91.1234, 7); + T('91.123400', 91.1234, 8); + T('-9e+1', -91.1234, 1); + T('-91', -91.1234, 2); + T('-91.1', -91.1234, 3); + T('-91.12', -91.1234, 4); + T('-91.123', -91.1234, 5); + T('-91.1234', -91.1234, 6); + T('-91.12340', -91.1234, 7); + T('-91.123400', -91.1234, 8); + + T('NaN', NaN, 1); + T('Infinity', Infinity, 2); + T('-Infinity', -Infinity, 2); + + T('5.55000000000000e-7', 0.000000555, 15); + T('-5.55000000000000e-7', -0.000000555, 15); + T('-1.2e-9', -.0000000012345, 2); + T('-1.2e-8', -.000000012345, 2); + T('-1.2e-7', -.00000012345, 2); + T('1e+8', 123456789, 1); + T('123456789', 123456789, 9); + T('1.2345679e+8', 123456789, 8); + T('1.234568e+8', 123456789, 7); + T('-1.234568e+8', -123456789, 7); + + T('-0.0000012', -.0000012345, 2); + T('-0.000012', -.000012345, 2); + T('-0.00012', -.00012345, 2); + T('-0.0012', -.0012345, 2); + T('-0.012', -.012345, 2); + T('-0.12', -.12345, 2); + T('-1.2', -1.2345, 2); + T('-12', -12.345, 2); + T('-1.2e+2', -123.45, 2); + T('-1.2e+3', -1234.5, 2); + T('-1.2e+4', -12345, 2); + T('-1.235e+4', -12345.67, 4); + T('-1.234e+4', -12344.67, 4); + + T('1.3', 1.25, 2); + T('1.4', 1.35, 2); + + T('1e+4', 9631.01, 1); + T('1.0e+7', 9950095.87, 2); + T('1e+1', '9.856839969', 1); + T('1e+2', '97.504', 1); + T('1e+5', 97802.6, 1); + T('1e+1', 9.9617, 1); + T('1e+3', 989.2, 1); + T('1.0e+5', 99576, 2); + T('1e+8', '96236483.87', 1); + + // ------------------------------------------------------------------ v8 end + + BigNumber.config({ROUNDING_MODE : 0}); + + T('-0.000090000000', '-0.00009', 8); + T('-7e-7', '-0.0000007', 1); + T('68.9316834061848', '68.931683406184761912218250317', 15); + T('7.8601018089704732e+27', '7860101808970473167417935916.60087069', 17); + T('3.21445885399803244067719798337437062000000e-11', '0.0000000000321445885399803244067719798337437062', 42); + T('-8171786349835057630612358814.162756978', '-8171786349835057630612358814.162756977984', 37); + T('3340.9039701', '3340.903970019817086594869184429527413533291595472085', 11); + T('-7269097658095414435895.9161181115739745427300313060', '-7269097658095414435895.916118111573974542730031306', 50); + T('0.00000632207', '0.00000632206077863', 6); + T('6e+2', '573', 1); + T('7.4e-7', '0.000000738', 2); + T('-5.031561e-7', '-0.0000005031560306227217140253964236911907612837', 7); + T('-4.291e+11', '-429050053964', 4); + T('8.514e+7', '85131637', 4); + T('-3.4e-9', '-0.000000003326783057540398442677461', 2); + T('6.9404295962722512e-20', '0.00000000000000000006940429596272251146200868514973032594273', 17); + T('-828376248340605120247.15155295014', '-828376248340605120247.15155295013990774586360178257303370779', 32); + T('-7.9828e+6', '-7982750.6677764682946015520272838914918899297118139169410659', 5); + T('0.00712610393722542527880200', '0.007126103937225425278801997738', 24); + T('-5.7e+4', '-56242', 2); + T('-8928855203945443164.755136735230293537', '-8928855203945443164.755136735230293536124112124', 37); + T('5218572327.99', '5218572327.98424443372003772604597054153304', 12); + T('71707870535238750871516796339.60', '71707870535238750871516796339.59678962573869890935', 31); + T('88817462.7137982220652429', '88817462.71379822206524285939115943006583441400005007918', 24); + T('3.00000e-9', '0.000000003', 6); + T('-6.053', '-6.05291095813493573191', 4); + T('6.51630828677e+19', '65163082867698740076', 12); + T('2483202135696501.60187899', '2483202135696501.60187898870193199949004966876115645', 24); + T('1.0766e-10', '0.000000000107650515680635692286894826641576642261', 5); + T('642724503819056076.659397077514269963295025', '642724503819056076.659397077514269963295024012414', 42); + T('-7.1192e+21', '-7119169102619893823635.32141854354', 5); + T('-6.717481255640638829101946114674e-8', '-0.000000067174812556406388291019461146732616998258', 31); + T('-12.41976452', '-12.4197645179995365323309894', 10); + T('-6.529258780126449116249954644017839921024112900e-16', '-0.00000000000000065292587801264491162499546440178399210241129', 46); + T('-441838.0', '-441838', 7); + T('1.128285293592950e-8', '0.000000011282852935929493101783925259749957192', 16); + T('-8.654857e+7', '-86548567', 7); + T('3.8883293855303995e-7', '0.00000038883293855303994672627854769926811949', 17); + T('3.25870000e-13', '0.00000000000032587', 9); + T('3.702e+6', '3701031.59037494113', 4); + T('-3580077435.93682917449675702508371047', '-3580077435.93682917449675702508371046631533', 36); + T('-7.400', '-7.4', 4); + T('109519523263844229810.068', '109519523263844229810.067657779734413280795410968892638', 24); + T('-509247322311590671954830.86847660619', '-509247322311590671954830.8684766061855', 35); + T('7.5518638430980800496570562671727890e-10', '0.00000000075518638430980800496570562671727889997', 35); + T('-5056721600639122835615986051.468831942818200', '-5056721600639122835615986051.4688319428182', 43); + T('-1.796146861125551785886171829251460000000000e-16', '-0.000000000000000179614686112555178588617182925146', 43); + T('6.0e+2', '599', 2); + T('7.619930e-16', '0.00000000000000076199293', 7); + T('834668.2370121038159610193', '834668.237012103815961019258574789273273342', 25); + T('-3.92251395952329649490768e+26', '-392251395952329649490767912.240768552138247705202732', 24); + T('-47504099413385554632166.5098', '-47504099413385554632166.50972492550706', 27); + T('-763912347.2814762', '-763912347.28147614121123622213255703', 16); + T('62.06092655083887409325613', '62.06092655083887409325612694639', 25); + T('-5262696454512614512.606481226453660', '-5262696454512614512.6064812264536594032183632269343356197', 34); + T('-324.4757687696223789483683661674', '-324.475768769622378948368366167382', 31); + T('41034172.92', '41034172.91600339960206', 10); + T('78.8705822927994376887853', '78.870582292799437688785229493004059423117558', 24); + T('13.2', '13.12562822628823049', 3); + T('-47510172284493547923917836.573231120531506713', '-47510172284493547923917836.573231120531506712946048319', 44); + T('-762632827', '-762632826.1', 9); + T('4e+13', '33953600811490.5124040357996528537249966', 1); + T('-8.1071720769966e+25', '-81071720769965824452477185.9774686', 14); + T('5.680e+22', '56797151043432713156004.54588148769825716', 4); + T('-32.861964853600294215914162138', '-32.8619648536002942159141621375696711453', 29); + T('-30816296472.656223819', '-30816296472.656223818627686674207740641739447', 20); + T('9.085158071966474886768332e+30', '9085158071966474886768331250478.08286703003069431737582', 25); + T('-504664.230671', '-504664.230670963', 12); + T('-1.013105775e+16', '-10131057742551895.1862632947', 10); + T('-542318552011993.7986', '-542318552011993.798599548369674038472319697531161473933214', 19); + T('-9.0310e+16', '-90309463572405956', 5); + T('-6.771931816', '-6.77193181559601521980141', 10); + T('4703514776786483.3', '4703514776786483.2838035091610781996968798', 17); + T('-8.43684044711e+12', '-8436840447101.126789480845', 12); + T('-343.5602326850284', '-343.56023268502830337554680474463898876525434', 16); + T('-3.17649252e+24', '-3176492517226717196752073', 9); + T('-2.3912888503759090e+28', '-23912888503759089673174904075', 17); + T('6.8853846820341808e+23', '688538468203418073592188', 17); + T('4e+17', '343455415908256944', 1); + T('-1.4e+9', '-1336106841', 2); + T('-2244450.2134814273335263', '-2244450.2134814273335262397290334104071203538487453309626146', 23); + T('8.74e+29', '873625255363763952428129881990.679929486040461455296118489', 3); + T('-1.85453549733179613185923288786', '-1.8545354973317961318592328878502252820666161607740183', 30); + T('431.7150651927', '431.71506519265522010949747887049', 13); + T('-8606297211156287.52520023752564', '-8606297211156287.5252002375256362382564355963505470716151', 30); + T('-8.4634889709e+24', '-8463488970828351722405003.220603', 11); + + BigNumber.config({ROUNDING_MODE : 1}); + + T('-844789036.5239726', '-844789036.52397268892', 16); + T('-5056.20629012767878749185273209679064306054', '-5056.206290127678787491852732096790643060542', 42); + T('-0.3287519131314873763501859870298952500', '-0.32875191313148737635018598702989525', 37); + T('-60729764', '-60729764', 8); + T('-7.622e-14', '-0.00000000000007622481594531380999826456196664586', 4); + T('-4686402261639729535.736324492474', '-4686402261639729535.7363244924747488', 31); + T('-2.0', '-2', 2); + T('-13801188035233586637950193108.13592574381473451125649500', '-13801188035233586637950193108.135925743814734511256495', 55); + T('0.0000807327587149839799300000', '0.00008073275871498397993', 24); + T('-6.000000e-8', '-0.00000006', 7); + T('-3.83574993e+11', '-383574993535', 9); + T('7.6987000000000000e-14', '0.000000000000076987', 17); + T('80928866804.6112050947427973', '80928866804.6112050947427973864826014844575374353', 27); + T('-0.00730140', '-0.0073014067221009206110062377503733', 6); + T('2.72104773884160491036088486e+30', '2721047738841604910360884862459.4086993273252009015', 27); + T('3.008780781917733594e+25', '30087807819177335941398228.1424107931203', 19); + T('-1.31528920779613669158250146972297797867760000000000000000000e-19', '-0.00000000000000000013152892077961366915825014697229779786776', 60); + T('-8.5e+11', '-858982311008.257025719798657844609315293821', 2); + T('-3.6312e-12', '-0.0000000000036312827608449878', 5); + T('-0.0060000', '-0.006', 5); + T('-1e+1', '-12', 1); + T('5.779447e+14', '577944759667712', 7); + T('-8.753124714248104872487955947563035887800000000000e-13', '-0.00000000000087531247142481048724879559475630358878', 49); + T('0.000736948830704113912', '0.000736948830704113912970821957479', 18); + T('-4.65727e+23', '-465727983501322687372765', 6); + T('-0.00000332331666628036603', '-0.000003323316666280366035430077076052', 18); + T('3.533702e-8', '0.00000003533702791135712510338001418872124', 7); + T('-0.04340', '-0.0434', 4); + T('-597340.278566069086858587852236235470', '-597340.2785660690868585878522362354706741', 36); + T('6.000e-8', '0.00000006', 4); + T('-3.624323359112776296e-19', '-0.00000000000000000036243233591127762966338166', 19); + T('-3731378568692042924197.154', '-3731378568692042924197.15400334142251496795634388', 25); + T('-68249040894032065692.62', '-68249040894032065692.62771690318493', 22); + T('8786096722661914.89732851', '8786096722661914.89732851188880184891692993684242690315', 24); + T('-1.8413321536281347264486372900000000000e-12', '-0.00000000000184133215362813472644863729', 38); + T('4.0e-9', '0.0000000040395827543504045', 2); + T('-2.9427e+16', '-29427119846374896', 5); + T('-917760614.4', '-917760614.45404359204911454', 10); + T('8e+4', '89427', 1); + T('0.00000920323988134356953828667260', '0.0000092032398813435695382866726', 27); + T('8.2e+16', '82068995955708118', 2); + T('3.35195944828e+26', '335195944828445911672446409.3379497158141', 12); + T('-3.89774891030e-9', '-0.00000000389774891030223957363124620581272897758735065471', 12); + T('-4', '-4', 1); + T('8', '8', 1); + T('1.41172955693912934219137966000000e-10', '0.000000000141172955693912934219137966', 33); + T('9.21481e+13', '92148111958857', 6); + T('-5.859975978432853e-18', '-0.0000000000000000058599759784328539', 16); + T('-72.0', '-72', 3); + T('3785098751297.8929911950994079707157472', '3785098751297.89299119509940797071574729867819252140059', 38); + T('4.38e+16', '43893416753778361.297703358127215475077814', 3); + T('-33110.29096', '-33110.2909623520267070846514', 10); + T('-74.38305251784882707720486436292121914036495', '-74.3830525178488270772048643629212191403649548392158614', 43); + T('-4.31091381814e+27', '-4310913818147299779611829988.1707181186375975966133328', 12); + T('-1e+7', '-19238355', 1); + T('-6996635475270055814687.6', '-6996635475270055814687.6250552375470211825551', 23); + T('-8.203834974e+12', '-8203834974826.23347025', 10); + T('-7.4775e+5', '-747754.16564979702874976822', 5); + T('-9.291256959320e+23', '-929125695932058727753757.0232350927089256760451379', 13); + T('8.5e+11', '853985704471', 2); + T('-6.6560212', '-6.65602121044617863313449309597493831', 8); + T('1785977942777.20398797', '1785977942777.2039879764361236566223563439', 21); + T('6.1333504356e+23', '613335043569565749922342.8859983523919141148812213832', 11); + T('-5.6e+8', '-565718507', 2); + T('87732918932081', '87732918932081.5225691355449629111825', 14); + T('34510.55200915393645123', '34510.55200915393645123649', 22); + T('80406604570281847.64813851700344044652354', '80406604570281847.648138517003440446523542379', 40); + T('4350.66340515', '4350.66340515436550356256', 12); + T('-1.795651762606996e+19', '-17956517626069967584.285356976401607845756322546530214497', 16); + T('9.162e+24', '9162436195089050810891391.493612', 4); + T('-7.82552e+6', '-7825522.1080200627404337', 6); + T('-358162040.1796393759838430', '-358162040.17963937598384303781972517649539', 25); + T('-20732451778.4', '-20732451778.464877395794562570976729066571095229', 12); + T('-239748.58739', '-239748.5873964402372997371903319', 11); + T('-6.106537e+9', '-6106537070.58700935776016694', 7); + T('4e+23', '405561947729011104089456.7617832102516', 1); + T('-1.7252987e+10', '-17252987633.58674364430598655792', 8); + T('61.38960691398015334867512513960', '61.3896069139801533486751251396015198659145775291764', 31); + T('-70493899102410752290043364.4667507415385', '-70493899102410752290043364.466750741538512', 39); + T('-891.3505', '-891.35058685025619', 7); + T('1.5e+8', '153705028.906', 2); + T('5.80e+18', '5805164734299168659.6173113885173384955443', 3); + T('-1.719875889271327', '-1.719875889271327133154458155573493605566221534', 16); + T('113.672129563', '113.672129563441659725876055771857758675550104070419635029', 12); + T('-77950052814622081084397.9', '-77950052814622081084397.91853869253589242574', 24); + T('4.53106985e+27', '4531069852787151785292512309.2901993579425172826443679877', 9); + T('45285.246089613169416440797840714', '45285.2460896131694164407978407142422013937', 32); + T('307760226411464.7333268079863299', '307760226411464.73332680798632996332324381779707', 31); + + BigNumber.config({ROUNDING_MODE : 2}); + + T('-0.0300', '-0.0300921721159558', 3); + T('65317841202.20949859371772273480125', '65317841202.2094985937177227348012464402154', 34); + T('-8.9231575495202e+29', '-892315754952021994731329589682.1894180393920044085713', 14); + T('-2.8075679202e-8', '-0.0000000280756792028583066', 11); + T('9.71456e+9', '9714558552', 6); + T('2.9514099281e-10', '0.00000000029514099281', 11); + T('-1.24459e+14', '-124459985101107', 6); + T('0.0000734657394154607815562372000000', '0.0000734657394154607815562372', 30); + T('1.78719530353972e+15', '1787195303539715', 15); + T('-2.8e+9', '-2861102528', 2); + T('-8.74480375581000e-9', '-0.00000000874480375581', 15); + T('-1792404726015427380.248150830448457643618022', '-1792404726015427380.248150830448457643618022', 43); + T('-678437320202616518.2220157912209286', '-678437320202616518.22201579122092864', 34); + T('-1.937304915215780220809799809655893674619672771e-8', '-0.000000019373049152157802208097998096558936746196727718', 46); + T('824172.15863347130174103087', '824172.15863347130174103086069960571', 26); + T('1.90040714061724000e-9', '0.00000000190040714061724', 18); + T('-1634488249956745498.58311', '-1634488249956745498.58311123049258868631623840423306', 24); + T('0.0000019600923098540334001755857361187871270117098000', '0.0000019600923098540334001755857361187871270117098', 47); + T('8.383e+4', '83829', 4); + T('2.843306120337864064e+23', '284330612033786406376718', 19); + T('1.86235e+15', '1862340943682995.08270612464203237562317928642459', 6); + T('-2.31e+13', '-23195312138083', 3); + T('5.450237e+21', '5450236028274773541895.65198933808968167192289601277', 7); + T('-0.008976419749408075453861117865459', '-0.00897641974940807545386111786545972434475187220274239581167', 31); + T('-761181660548661030.25', '-761181660548661030.25539542029', 20); + T('-1844205.93619958', '-1844205.936199580689273072905714475263817', 15); + T('4842.77906784902805070438222238898372327093', '4842.77906784902805070438222238898372327092242428134814721', 42); + T('-4.161198953445629503503971e+26', '-416119895344562950350397179', 25); + T('1.084e+4', '10836', 4); + T('8.71081704218174598654542083000e-8', '0.0000000871081704218174598654542083', 30); + T('7.9139683e+36', '7913968291641940848703040206324645237.8515176490912667096', 8); + T('-0.000008', '-0.000008', 1); + T('8.3660085625e+34', '83660085624983922907621996804192921.3992927', 11); + T('0.000006980263008', '0.000006980263007423150706324065130475391', 10); + T('-31348084528321454060964445534333629317.69561497283830023', '-31348084528321454060964445534333629317.69561497283830023', 55); + T('-2417953792643886.3485495754363678888681996409674308643', '-2417953792643886.3485495754363678888681996409674308643', 53); + T('4.0e+6', '3982592', 2); + T('-2092315.015029722200', '-2092315.0150297222', 19); + T('-364992136844916.9092238', '-364992136844916.909223894931280218350055327754935', 22); + T('8.34e+24', '8333642861002789136219873', 3); + T('7.6008837179413e+14', '760088371794122.3380234188299740029832128019574765416', 14); + T('-6655726127.0', '-6655726127', 11); + T('-8.2157109e-9', '-0.000000008215710991605913786700324', 8); + T('-0.00007003302912717900', '-0.000070033029127179', 16); + T('-919151201.84874', '-919151201.8487431', 14); + T('-7.7284e+34', '-77284694095619151624570282373349775.20332', 5); + T('-0.01348565', '-0.013485650787487', 7); + T('4793.07921563762902275733457926767780', '4793.0792156376290227573345792676778', 36); + T('-29428.0', '-29428', 6); + T('-5.031066774187e+17', '-503106677418717710.020194320886816967824316089135', 13); + T('8.5822119333e+30', '8582211933222895201417193603829.362', 11); + T('3.69818e+29', '369817665788648417491163239098.45906115246177782675574', 6); + T('-16637318966.7921513256', '-16637318966.79215132564236', 21); + T('-3.511414e+7', '-35114143.07750577', 7); + T('-4.00583795e+15', '-4005837953660576.377392671047611906101', 9); + T('2.857013789e+29', '285701378835628725742568343419.93', 10); + T('3.784446708460892550157924e+30', '3784446708460892550157923126965.213', 25); + T('-8.07e+11', '-807835898139.8273423102575232570378422434793962915', 3); + T('7.2e+12', '7166828666682', 2); + T('-2.7e+15', '-2759498523697862.0885969105603319015115245', 2); + T('3.93e+3', '3920.77076847274147345709652305252825254482870430341848100141', 3); + T('-6e+12', '-6791423282682', 1); + T('-8.6204e+14', '-862048518070094.31', 5); + T('124280692175695486153.808', '124280692175695486153.80744660510519294193', 24); + T('-460557721667773.3587267520', '-460557721667773.3587267520989', 25); + T('-6268536499825359064300.23', '-6268536499825359064300.2317858', 24); + T('292408901.64362273508249026852286', '292408901.64362273508249026852285294673307', 32); + T('-649622345434955387029125.11357971191', '-649622345434955387029125.113579711917604812061404975326264229', 35); + T('-4.287461556179478781e+27', '-4287461556179478781817700851.131100167', 19); + T('-5.891552271022619e+29', '-589155227102261925251047170629.30784624401', 16); + T('1.88e+5', '187009.128', 3); + T('4299388.1132142278863818606739416640', '4299388.1132142278863818606739416639837103457725931818979', 35); + T('-7.8e+8', '-788088836.225886207482064192607002511282756502400977', 2); + T('-56025768755085222.404269', '-56025768755085222.404269295514', 23); + T('-8376.71149693765842', '-8376.71149693765842060199698996606139145426', 18); + T('-1.7218673528e+29', '-172186735288586033321621121024.11240623', 11); + T('-3.31e+28', '-33197729862068219255677464974', 3); + T('-4.835191326e+29', '-483519132605694848658321267839.23575134378118945659616358', 10); + T('7.3', '7.24882150443803', 2); + T('-89186640077683569.407061427673', '-89186640077683569.4070614276736450982125609', 29); + T('-49379651041268.5', '-49379651041268.548293', 15); + T('-7685054.17489171951660', '-7685054.17489171951660508194254495141726065698575306365447451', 21); + + BigNumber.config({ROUNDING_MODE : 3}); + + T('-39449414270333.925852213835', '-39449414270333.925852213834759031494508489474', 26); + T('-7.50437989976', '-7.50437989975503711836768', 12); + T('-0.000004303975760000000', '-0.00000430397576', 16); + T('-16040233916257241895.97650633973989', '-16040233916257241895.9765063397398857', 34); + T('-7438.9287248601393819', '-7438.9287248601393818639176907606', 20); + T('9.857465584298e-7', '0.000000985746558429876825600458537705318327799', 13); + T('532637.9095983547284850466577958315920', '532637.90959835472848504665779583159203905641996', 37); + T('-1.40416695292e+30', '-1404166952915258058306475434520.7856110230505157', 12); + T('60346876.6670832429026869255506808488', '60346876.6670832429026869255506808488', 36); + T('-2.52466133e+23', '-252466132238128405832984', 9); + T('55', '55', 2); + T('8', '8', 1); + T('-63075151.962465776516325792253177939493172', '-63075151.9624657765163257922531779394931714', 41); + T('7.411461e+17', '741146113404361548.543142388', 7); + T('-58835755359067474972692072494278983.7', '-58835755359067474972692072494278983.6314961114191480012916', 36); + T('-3.5408424427810e+21', '-3540842442780946836975', 14); + T('-8.6985e+22', '-86984550895486812167623.3816747460029582321093085895', 5); + T('-4.4625326e+20', '-446253250722400223428', 8); + T('-79301328.93777304419247399162092400', '-79301328.937773044192473991620924', 34); + T('-1.6065669647394805e+28', '-16065669647394804383207152895.0285044537455', 17); + T('-333', '-333', 3); + T('7', '7', 1); + T('7.24707e+13', '72470760481059', 6); + T('39232618.1513515442233995765535454389', '39232618.151351544223399576553545438981252', 36); + T('-4e+5', '-357994', 1); + T('-1.90e+4', '-18904.11335233460016293296574557643545512393801643609213933', 3); + T('-6585152111956929.924309477123328984876184272828762900', '-6585152111956929.9243094771233289848761842728287629', 52); + T('4.505e-7', '0.0000004505328', 4); + T('-2.4125965461846e+19', '-24125965461845662271', 14); + T('4.82673137e+33', '4826731373891127996812671510065700.871947701', 9); + T('-6621278.2', '-6621278.1120573461544975284970826524341806671316100080257485', 8); + T('-1.8015392869565386634525164264799463344376205007391000000e-7', '-0.00000018015392869565386634525164264799463344376205007391', 56); + T('-0.00026465463574439280006655492609887593', '-0.00026465463574439280006655492609887592672292239588307259', 35); + T('4.87815228988300090', '4.8781522898830009076096556452567', 18); + T('-5.1107117199524082779077801201617e+35', '-511071171995240827790778012016163902', 32); + T('1.4734242515706890557e+20', '147342425157068905574.390834406', 20); + T('-4019325091848890817268596991.815200', '-4019325091848890817268596991.8152', 34); + T('3.8e+14', '384715413967421', 2); + T('7483444.49', '7483444.498791364040133403947480439118040376737700653', 9); + T('-594538312.6255', '-594538312.625485172379', 13); + T('0.00753000', '0.00753', 6); + T('8.1440148247e+13', '81440148247675.27449603492606125135884', 11); + T('8.444003009300e+21', '8444003009300239495556', 13); + T('2308.1529840912558574923966042774800185916972327325289', '2308.1529840912558574923966042774800185916972327325289261', 53); + T('2.67e+3', '2674.698673623', 3); + T('-2.82819136180287470854625537e+30', '-2828191361802874708546255368471.80800005766', 27); + T('518250411', '518250411', 9); + T('3.2e+4', '32661.9135347256259375001777960775509', 2); + T('29.15347602216416991973', '29.153476022164169919735054013077734177', 22); + T('-4.611285536613066108e+30', '-4611285536613066107912600830385', 19); + T('-51774110.0705144989023975360207167071143094356321', '-51774110.070514498902397536020716707114309435632036586', 48); + T('-11969053.91', '-11969053.9052', 10); + T('3102686944.558209725206279080384565972890930884678', '3102686944.5582097252062790803845659728909308846780130141', 49); + T('-3601967476456.11863985450841401751857855', '-3601967476456.1186398545084140175185785472952682624279698', 39); + T('-5e+15', '-4873768150955988', 1); + T('-352.0819', '-352.08189544801640267067628', 7); + T('-2.58805959847e+29', '-258805959846025073839294200101', 12); + T('-66245829859.35391480', '-66245829859.353914791938511206971693', 19); + T('1.54e+9', '1544806884.11336335261587391', 3); + T('-27.7997003414813453645099801', '-27.79970034148134536450998001339677019', 27); + T('14062458038542559389162.9204850167', '14062458038542559389162.9204850167680814', 33); + T('1.558308e+23', '155830857739562225455438.36', 7); + T('-191388637226531701343.3', '-191388637226531701343.25549694555307', 22); + T('5551.7364563066033013381', '5551.73645630660330133811512206', 23); + T('-374.187067', '-374.187066872511899560500516595762548924654039141', 9); + T('5608.7939', '5608.79395345957', 8); + T('-7.46461560634688e+16', '-74646156063468781.44597747432564', 15); + T('6.282e+14', '628222207265224.793350069927452126508488621324740335935808339', 4); + T('739267731.33076658725535583758', '739267731.3307665872553558375867276395038136046', 29); + T('-7.243744595180e+19', '-72437445951792218018.4147098155', 13); + T('148197.230592476071658991268667398', '148197.23059247607165899126866739893696346154456779371449089', 33); + T('-7326871.99257009310974109937661882759811033', '-7326871.9925700931097410993766188275981103204155306', 42); + T('-5.2007521e+21', '-5200752087996702875406.6925', 8); + T('9.00107829e+18', '9001078299504900356', 9); + T('229140061917', '229140061917.91723092039513459551808768805307572856707938', 12); + T('-6868103.8726464561656824818722569258791476905', '-6868103.872646456165682481872256925879147690458928033592856', 44); + T('-220947971933643883580237.50', '-220947971933643883580237.49534341528328', 26); + T('544164102001101766247312.91529628700', '544164102001101766247312.915296287008639054933', 35); + T('1.70e+23', '170271631736408409477543.35894', 3); + T('-5735975666.6511674981929172446', '-5735975666.65116749819291724455000274115296', 29); + T('-67513065.4797', '-67513065.4796695356', 12); + T('-9e+19', '-82164590986048729101.278942224271247884118371796531523', 1); + T('687378946204028.408158998985701', '687378946204028.408158998985701430935094', 30); + T('42.452', '42.4523909443358871476552683504968536100051', 5); + T('-22771061110217019663705702.44170142085172', '-22771061110217019663705702.44170142085171219649140996', 40); + T('-1470.640309974016167512235698629586', '-1470.6403099740161675122356986295857257144815364', 34); + T('-1.110228e+27', '-1110227398804733429555663947.06619', 7); + T('-6.4898237111e+26', '-648982371105405071851661301', 11); + T('-4641197449469148.658850361201903', '-4641197449469148.658850361201902222', 31); + + BigNumber.config({ROUNDING_MODE : 4}); + + T('7.905300379788e+16', '79053003797878062.6454954', 13); + T('-6.83490000000e-13', '-0.00000000000068349', 12); + T('-62760641815.69084973661201201', '-62760641815.690849736612012010742308663', 28); + T('0.000704', '0.000704496313', 3); + T('82926865286287.8852357368342860830310721063079299643', '82926865286287.88523573683428608303107210630792996432', 51); + T('-0.00032388272393900301214220090249', '-0.00032388272393900301214220090248744799603424908', 29); + T('8.6e+12', '8621641486938.4837308885005093571508566552428700982454', 2); + T('2', '2', 1); + T('1.4641440117052559075e+20', '146414401170525590746.047955203899370771105088', 20); + T('3511.925583', '3511.925583', 10); + T('2861824.253079699095728', '2861824.253079699095727765750377038689', 22); + T('-3.940097756e+10', '-39400977564.548924098664431671700066962', 10); + T('-888', '-888', 3); + T('-0.000302106125213724988141721256104', '-0.00030210612521372498814172125610432438685', 30); + T('6943.4804552555315615809650428503', '6943.480455255531561580965042850266831249032130818358478956', 32); + T('3365678', '3365678.3397481381125085749', 7); + T('-5.3943374314e+19', '-53943374313769567458.386865325', 11); + T('-6.67880509225510150542252852147049489938254298497979', '-6.6788050922551015054225285214704948993825429849797925563674', 51); + T('1.36424e+18', '1364240644139816224.60228356028', 6); + T('1.410236477950416725e+23', '141023647795041672538410.84935693266374259666015274447', 19); + T('-802.817765', '-802.81776500697712984253334522', 9); + T('-5.276210722424690668896260075355037218851', '-5.27621072242469066889626007535503721885096', 40); + T('-0.000874209568970788', '-0.0008742095689707877849902027926289294748756775668387', 15); + T('0.092053833162002', '0.09205383316200189249855864903410820435666385119723209239', 14); + T('7.0656298318128209e-14', '0.0000000000000706562983181282092835675843980510112', 17); + T('-8.66511516852116659e+18', '-8665115168521166587', 18); + T('3.3490648464e+22', '33490648463534229842937.79268276945692333064632966129475', 11); + T('-39041587174692569176.82740706154183894', '-39041587174692569176.827407061541838942655371389185', 37); + T('-3834.0', '-3834', 5); + T('-0.008912382644814418776268630', '-0.00891238264481441877626863', 25); + T('-2.1e+5', '-206119', 2); + T('4.83340000000e-8', '0.000000048334', 12); + T('3.185196533675230520000000000000e-19', '0.000000000000000000318519653367523052', 31); + T('6.0431217298488095562718496137220939447806000000000000000e-17', '0.000000000000000060431217298488095562718496137220939447806', 56); + T('196.519569070149034', '196.51956907014903416531531', 18); + T('0.0000046405006597117307566000', '0.0000046405006597117307566', 23); + T('9.10e+16', '90974867783311624.1073050261392195984211985571898902', 3); + T('0.0009', '0.0009', 1); + T('-784.344', '-784.3442317667756502522526185951859933319162', 6); + T('4.407336482399797058693e+28', '44073364823997970586929155979.43263841350505', 22); + T('-3.0000000000e-13', '-0.0000000000003', 11); + T('0.800', '0.8', 3); + T('0.04643398170143261158595951942031', '0.046433981701432611585959519420314960367263', 31); + T('-8e+26', '-786589693451258754942279859.3834', 1); + T('-26.0', '-26', 3); + T('-8.462226728e+11', '-846222672789.2087639320702375427266333530942524245', 10); + T('-4e-7', '-0.0000004019666978288041783154210868', 1); + T('-315609.775843992', '-315609.775843992', 15); + T('-3.319e+9', '-3318880945', 4); + T('-6', '-6.2847', 1); + T('7.754663772705e+20', '775466377270546647581.033426922028458904663', 13); + T('-72577466365074249372160551.716563', '-72577466365074249372160551.71656300408', 32); + T('-7.8e+14', '-775743793612078', 2); + T('132441.1194131940273344', '132441.119413194027334448511114274180643744', 22); + T('-2e+8', '-175718250.88225246544054572629398592939731158738360059', 1); + T('8603217351572193.39188696', '8603217351572193.391886964766947146712574336', 24); + T('-9.1544942231978215224e+22', '-91544942231978215224182.9277714', 20); + T('2.67483212861962e+22', '26748321286196185405759.132664', 15); + T('-5812371.3', '-5812371.311809024582418495005304074', 8); + T('-4.56681272e+10', '-45668127184.1622', 9); + T('-6.833879652430027734e+28', '-68338796524300277341620461049.174596381', 19); + T('3.5253e+11', '352531868532', 5); + T('6.18754e+9', '6187538472.1814915517411034136013806202710623466754380762318', 6); + T('-49119914201836431396827151123.9982195', '-49119914201836431396827151123.99821949990542', 36); + T('-2.50e+18', '-2498994955335714645.22910610209', 3); + T('112714.50647532453078481574527706184222476885', '112714.50647532453078481574527706184222476884905812', 44); + T('1.3e+10', '13358297773', 2); + T('3.85346866600e+27', '3853468666000315958109987025.078941', 12); + T('-6.849e+16', '-68490080550892289', 4); + T('9.095', '9.094726073939375', 4); + T('4.6722099483e+12', '4672209948311.8638324115985415208264055834', 11); + T('-75494281.3585391383', '-75494281.3585391382541907932608754414663476859104837422712', 18); + T('7.9e+2', '787.7709059965548561711769118765', 2); + T('6103081090513.979878497219802', '6103081090513.9798784972198017843', 28); + T('-6207456599626114.392919', '-6207456599626114.39291886624528055513014220851925', 22); + T('844941600554602638837.461606663208684075561936', '844941600554602638837.461606663208684075561935576396', 45); + T('159438905444627555.28986', '159438905444627555.28985729196359392', 23); + T('-3688253681705278.414841830526919796661181971979', '-3688253681705278.4148418305269197966611819719792068915', 46); + T('-63', '-63.164640732796214571844119', 2); + T('2.8e+11', '276059026705.36069', 2); + T('357378.987253867425946425403370727230144', '357378.9872538674259464254033707272301441754336', 39); + T('1597.52674152596523825479', '1597.526741525965238254790848976407269408999607', 24); + T('4.63310587686706257280646279e+30', '4633105876867062572806462788592.801009', 27); + T('-6.21108762339449e+20', '-621108762339448671355.1393522133', 15); + T('8380435.063269894549337249', '8380435.063269894549337248813357930541546715547', 25); + + BigNumber.config({ROUNDING_MODE : 5}); + + T('-1408003897645960.648499616456', '-1408003897645960.648499616456', 28); + T('-7719307749101742537.6299396338672184', '-7719307749101742537.6299396338672184334306', 35); + T('-1.0', '-1', 2); + T('-8.28e+14', '-827860423543649', 3); + T('0.00054398953021585321711560388890', '0.00054398953021585321711560388889590290139888', 29); + T('-4.409e-9', '-0.000000004408792', 4); + T('4.0000e-10', '0.0000000004', 5); + T('3.40e+16', '34001779327925905', 3); + T('-9.03e+34', '-90332622851356543193546536340366547', 3); + T('-4.5320e+16', '-45320100856429143.39155209710530673318222777', 5); + T('3.618e+30', '3618328715720583671291544414202', 4); + T('-1003.61140', '-1003.61139687804673322250551', 9); + T('-8139415035028632370.38737', '-8139415035028632370.38736602659835', 24); + T('8e+7', '83198058', 1); + T('-7.99492e+14', '-799491603856548', 6); + T('-3.351956508998634059456001730355207230e-9', '-0.000000003351956508998634059456001730355207229966', 37); + T('-14.69863659940007820467946969441090', '-14.698636599400078204679469694410899305', 34); + T('-8.1805185086529e+32', '-818051850865289066860294784032304.6373757407', 14); + T('8.21371840206651626757e+29', '821371840206651626756943367010.81915938727', 21); + T('444', '444', 3); + T('0.00000613258266938', '0.0000061325826693823067791292255878336353793864046451956723', 12); + T('-554696279951718746537611.26040', '-554696279951718746537611.26040029508470430208572833137315', 29); + T('446', '446.189185820662709163412845035853873', 3); + T('22873128187827109553471831451.06623850867', '22873128187827109553471831451.06623850866672688842662473', 40); + T('9e+5', '880389', 1); + T('-6.7516118890844e+16', '-67516118890844443.625641', 14); + T('-0.36107158435820', '-0.36107158435820101656696353075596201902674001080619510849', 14); + T('8.958386374640407365', '8.958386374640407364828679985365339921820421370157246', 19); + T('3e+2', '257', 1); + T('-1.904659739878e+18', '-1904659739878060478.113131137688927604413210083841', 13); + T('-0.0000627142', '-0.00006271421732891589577305487292334', 6); + T('3.310541e+8', '331054103', 7); + T('-1.793886e+23', '-179388600781592577147651.2641684828762234473', 7); + T('0.0004600', '0.00046', 4); + T('-2.9e+21', '-2906505321975413509885', 2); + T('86415.94739506', '86415.9473950557683374', 13); + T('6.730414', '6.7304135909152', 7); + T('-5.032367e+14', '-503236749968584', 7); + T('-5.0241682013868216287718e+32', '-502416820138682162877178622610283', 23); + T('-0.0552606118984074172116684879479087', '-0.0552606118984074172116684879479087', 33); + T('91017414629852252476380368766.471', '91017414629852252476380368766.47117955844005', 32); + T('28586.32124747000', '28586.32124747000107561236523943', 16); + T('0.000001935665545322534195131', '0.0000019356655453225341951305040536808235510260170838860718', 22); + T('7.8', '7.803563246406851025', 2); + T('-4.89914223627882382434323e+26', '-489914223627882382434323457.50920109688497974624541155867073', 24); + T('384718796891211107', '384718796891211107', 18); + T('42510.74002309897971230194', '42510.7400230989797123019438399853496258', 25); + T('-7.388e+11', '-738804895894', 4); + T('-5.0000000e-7', '-0.0000005', 8); + T('8.364583286198657757274487081e+29', '836458328619865775727448708084.5405786', 28); + T('-6.24e+26', '-624168076184333836471774105.20710913228879473008695839055', 3); + T('19804.9', '19804.875536771730958444190952514101502', 6); + T('-74106.212623408289', '-74106.2126234082888281', 17); + T('7432670190286.34100080472041', '7432670190286.341000804720411465540223412277267472', 27); + T('5.3250588635e+21', '5325058863479337983860.6152606488098384817869174221885211', 11); + T('6.865e+9', '6865129903.657345356274690732979469003170132760589', 4); + T('5795370.885430786885', '5795370.8854307868847728814464165810658237393757773', 19); + T('-29172007010418365641.7578738', '-29172007010418365641.7578738219989133084908106406123747833195', 27); + T('-62322.86188017646654', '-62322.8618801764665355127105700053481622040465444574371', 19); + T('-6374', '-6373.604850300043463878', 4); + T('5.846101e+26', '584610089745513547435367965.045755404292155403517947658', 7); + T('-4.9589e+12', '-4958880864611.79783789828786433416628187354312472853462765', 5); + T('-976.708', '-976.7080061576', 6); + T('-6.265387e+7', '-62653867.768253566156', 7); + T('5.943e+14', '594338013726832.675613519', 4); + T('5.0e+27', '5018407166428602036582808244', 2); + T('9e+16', '86282182181939888.936', 1); + T('-5319867042361146027.570343834017247178243381990233', '-5319867042361146027.5703438340172471782433819902325543283', 49); + T('-280.611828072', '-280.611828072476084775', 12); + T('497125.5349688434079217115738652', '497125.5349688434079217115738651759109278602', 31); + T('-8.74679213554e+15', '-8746792135535203.818773729011249091171163901426235584485964', 12); + T('2750816434321727711.90126468620', '2750816434321727711.901264686199491277747822638', 30); + T('-804111355.871490666462196181', '-804111355.8714906664621961811894645876', 27); + T('5592072638309750852858746183.6506680977', '5592072638309750852858746183.6506680977126', 38); + T('-4.0e+20', '-400904317147714566361', 2); + T('-3.9e+26', '-390267222260748697649150634.14444', 2); + T('43.2', '43.2482', 3); + T('42334337596496149636254', '42334337596496149636254.4926162509306406461', 23); + T('-7e+9', '-7246374971.34279698356', 1); + T('71516263932998764871838469072', '71516263932998764871838469072.280115355524', 29); + T('71257489.5995227415169007618702182092', '71257489.59952274151690076187021820922744', 36); + T('268492835', '268492834.77041', 9); + T('50325.551277778107847798802', '50325.551277778107847798801525', 26); + T('-5.289303987e+29', '-528930398665449048343281311623.69686', 10); + + BigNumber.config({ROUNDING_MODE : 6}); + + T('0.08000', '0.08', 4); + T('-4.5132e+21', '-4513243388120382069815.8508153058993058875', 5); + T('-73549', '-73549.2594630551663822238', 5); + T('1.275868004728922895890883e+29', '127586800472892289589088296800.6', 25); + T('-0.0003715444034899460421534099962225699000', '-0.0003715444034899460421534099962225699', 37); + T('-6.9625565265e+24', '-6962556526511822306135536', 11); + T('1.67583703641e+13', '16758370364138.915293525076269061228714877', 12); + T('-173594.95064085553515176707313947534918109631092170', '-173594.950640855535151767073139475349181096310921699', 50); + T('-6.9503965525e+19', '-69503965525000308384.151383', 11); + T('4.411225e+20', '441122486054080817112', 7); + T('2.467044064783596937642371770e+31', '24670440647835969376423717700462.39', 28); + T('3.9711897549481645654e+24', '3971189754948164565361634.8039734590476326224193520402091769', 20); + T('-1.4757613208690e+21', '-1475761320868963235919.64499841336073105746686372924161', 14); + T('91683083887068.6191146', '91683083887068.61911461351134520171343337804061135', 21); + T('-7923074181102822.578', '-7923074181102822.5778', 19); + T('-6.800e-8', '-0.000000068', 4); + T('-2.57954671081460000000e-10', '-0.00000000025795467108146', 21); + T('5.5352911972e-9', '0.000000005535291197169667611325365189624523452', 11); + T('6.0488358e+8', '604883577', 8); + T('3', '3', 1); + T('-4.072637936805672015603149446630136089530560102165', '-4.0726379368056720156031494466301360895305601021653459970194', 49); + T('-7.2e+10', '-71689970391', 2); + T('655754242958.1563938760094919', '655754242958.15639387600949190369', 28); + T('-7.575535014e-9', '-0.00000000757553501363609536678641245355', 10); + T('7.547067960578900230644488e-10', '0.00000000075470679605789002306444877998602723', 25); + T('-3.64561456763e+12', '-3645614567625.4', 12); + T('9.0e-7', '0.0000009', 2); + T('7e+2', '687', 1); + T('517277827334839.8174848543680868', '517277827334839.8174848543680868015165926618', 31); + T('7e+2', '655.46270361324473194', 1); + T('1632131488313153.49737424823493573157', '1632131488313153.497374248234935731568', 36); + T('274068317992.5998880719845028748169734442', '274068317992.5998880719845028748169734442394151076', 40); + T('-7.060e-9', '-0.00000000706025531009734073', 4); + T('0.004444', '0.0044439457493', 4); + T('72482770689153111154104782082.023', '72482770689153111154104782082.022764082943227214833851', 32); + T('5.9130694036072794206e+24', '5913069403607279420613864.152', 20); + T('843384561300245347961437.966', '843384561300245347961437.96592523791', 27); + T('0.0000035198821282510000000', '0.000003519882128251', 20); + T('-1.00371560130267706870097e-9', '-0.00000000100371560130267706870096885251', 24); + T('17504218.4970302', '17504218.49703016415913667026121376499', 15); + T('-5e-9', '-0.000000005169058703', 1); + T('6.922803246e+10', '69228032455', 10); + T('-16', '-16', 2); + T('-1.355147513468192707127939151e+40', '-13551475134681927071279391508441439066206.58705380600075', 28); + T('81670324.1197758695', '81670324.1197758695212865075629796973196504241126', 18); + T('0.00005', '0.00004797485174640366805332660647', 1); + T('-4.864397594e-10', '-0.0000000004864397594461335282648538530108953965681345', 10); + T('47694105.2312532', '47694105.23125322528167211284521303', 15); + T('-4.962106181e+26', '-496210618135432953927871636.779236', 10); + T('1.2800030559497062236642e+37', '12800030559497062236641930592334626609.7332', 23); + T('-574830783.7', '-574830783.6689168903917696583746514637433390929', 10); + T('5969.431086199057470', '5969.43108619905746956015212970904111744101', 19); + T('-4.8e+3', '-4814.32904953003285', 2); + T('4.297e+16', '42973001760252134', 4); + T('-5.7628e+6', '-5762846.590152347665179652381407653797146356303622218259885', 5); + T('904864662232032.160612401810317927291657403142932', '904864662232032.16061240181031792729165740314293194205879163', 48); + T('7.9892e+20', '798923115068265241915.537619430376605', 5); + T('-8.97759349384000643', '-8.97759349384000643427096282979', 18); + T('841598023200278219780', '841598023200278219780.04764720909930685', 21); + T('7.294115e+17', '729411462980818078', 7); + T('-493854.469231', '-493854.46923056217873', 12); + T('1.16760483177812e+16', '11676048317781198.761924013', 15); + T('4.91431629960536e+17', '491431629960536053.49611060493021241774', 15); + T('-391357204564683265466220678.5248961969115394056441165', '-391357204564683265466220678.524896196911539405644116478', 52); + T('-1138622.4269179222525707405725062065185867', '-1138622.42691792225257074057250620651858665807616', 41); + T('7762491414507273289587174.60526', '7762491414507273289587174.60526424654003', 30); + T('-8.34305e+12', '-8343051798787.85784573983', 6); + T('-448090139696.5', '-448090139696.540044682', 13); + T('-249554483941810.04760758280384259798256931579', '-249554483941810.0476075828038425979825693157901967215767', 44); + T('-4937249656843391.056849', '-4937249656843391.056849458', 22); + T('-4.90029240789e+24', '-4900292407887576632220011.4', 12); + T('884134', '884134.30546381722', 6); + T('-67686.285431006', '-67686.2854310057290328136776917246126204655', 14); + T('5.1454907927786956678e+21', '5145490792778695667848.5080878826658832100351133', 20); + T('-3.75540093e+9', '-3755400930.115945946791361377756114557824815082', 9); + T('790548.1', '790548.055405', 7); + T('21.9776441681934305611827', '21.9776441681934305611826542081066055', 24); + T('-8.62915591e+12', '-8629155908036.5010483', 9); + T('-62521191175', '-62521191175.03721539877599449', 11); + T('-63947010170235145618893.55048', '-63947010170235145618893.55048264587643', 28); + T('-4.4791e+5', '-447912.9929543492037', 5); + T('876897.06887720787797443065', '876897.0688772078779744306464727', 26); + T('-609834676.749497163216150672711104329822616519', '-609834676.749497163216150672711104329822616518762', 45); + T('-2.9407315435e+18', '-2940731543474095094.56340709357589521', 11); + T('243028.94040290384317164750687246', '243028.940402903843171647506872458168411478', 32); + T('5313610990.737', '5313610990.7373810218', 13); + T('-3.56e+4', '-35566.4678487', 3); + + T('123', '12.345e1', BigNumber(3)); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', undefined); + + assertException(function () {new BigNumber(1.23).toPrecision(NaN)}, "(1.23).toPrecision(NaN)"); + assertException(function () {new BigNumber(1.23).toPrecision('NaN')}, "(1.23).toPrecision('NaN')"); + assertException(function () {new BigNumber(1.23).toPrecision([])}, "(1.23).toPrecision([])"); + assertException(function () {new BigNumber(1.23).toPrecision({})}, "(1.23).toPrecision({})"); + assertException(function () {new BigNumber(1.23).toPrecision('')}, "(1.23).toPrecision('')"); + assertException(function () {new BigNumber(1.23).toPrecision(' ')}, "(1.23).toPrecision(' ')"); + assertException(function () {new BigNumber(1.23).toPrecision('hello')}, "(1.23).toPrecision('hello')"); + assertException(function () {new BigNumber(1.23).toPrecision('\t')}, "(1.23).toPrecision('\t')"); + assertException(function () {new BigNumber(1.23).toPrecision(new Date)}, "(1.23).toPrecision(new Date)"); + assertException(function () {new BigNumber(1.23).toPrecision(new RegExp)}, "(1.23).toPrecision(new RegExp)"); + assertException(function () {new BigNumber(1.23).toPrecision(2.01)}, "(1.23).toPrecision(2.01)"); + assertException(function () {new BigNumber(1.23).toPrecision(10.5)}, "(1.23).toPrecision(10.5)"); + assertException(function () {new BigNumber(1.23).toPrecision('1.1e1')}, "(1.23).toPrecision('1.1e1')"); + assertException(function () {new BigNumber(1.23).toPrecision(true)}, "(1.23).toPrecision(true)"); + assertException(function () {new BigNumber(1.23).toPrecision(false)}, "(1.23).toPrecision(false)"); + assertException(function () {new BigNumber(1.23).toPrecision(function (){})}, "(1.23).toPrecision(function (){})"); + + assertException(function () {new BigNumber('12.345e1').toPrecision('-1')}, ".toPrecision('-1')"); + assertException(function () {new BigNumber('12.345e1').toPrecision(-23)}, ".toPrecision(-23)"); + assertException(function () {new BigNumber('12.345e1').toPrecision(1e9 + 1)}, ".toPrecision(1e9 + 1)"); + assertException(function () {new BigNumber('12.345e1').toPrecision(1e9 + 0.1)}, ".toPrecision(1e9 + 0.1)"); + assertException(function () {new BigNumber('12.345e1').toPrecision(0)}, ".toPrecision(0)"); + assertException(function () {new BigNumber('12.345e1').toPrecision('-0')}, ".toPrecision('-0')"); + assertException(function () {new BigNumber('12.345e1').toPrecision(0.9)}, ".toPrecision(0.9)"); + assertException(function () {new BigNumber('12.345e1').toPrecision('-1e-1')}, ".toPrecision('-1e-1')"); + assertException(function () {new BigNumber('12.345e1').toPrecision(Infinity)}, ".toPrecision(Infinity)"); + assertException(function () {new BigNumber('12.345e1').toPrecision('-Infinity')}, ".toPrecision('-Infinity')"); + + BigNumber.config({ERRORS : false}); + + T('123', '12.345e1', BigNumber(3)); + T('123.45', '12.345e1', null); + T('123.45', '12.345e1', undefined); + T('123.45', '12.345e1', NaN); + T('123.45', '12.345e1', 'NaN'); + T('123.45', '12.345e1', []); + T('123.45', '12.345e1', {}); + T('123.45', '12.345e1', ''); + T('123.45', '12.345e1', ' '); + T('123.45', '12.345e1', 'hello'); + T('123.45', '12.345e1', '\t'); + T('123.45', '12.345e1', ' '); + T('123.45', '12.345e1', new Date); + T('123.45', '12.345e1', new RegExp); + T('123.4500', '12.345e1', 7.5); + T('123.45000000', '12.345e1', '1.1e1'); + + T('1e+2', '12.345e1', 1); + T('123.45', '12.345e1', '-1'); + T('123.45', '12.345e1', -23); + T('123.45', '12.345e1', 1e9 + 1); + T('123.45', '12.345e1', 1e9 + 0.1); + T('123.45', '12.345e1', 0); + T('123.45', '12.345e1', '-0'); + T('123.45', '12.345e1', 0.9); + T('123.45', '12.345e1', '-1e-1'); + T('123.45', '12.345e1', Infinity); + T('123.45', '12.345e1', '-Infinity'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js new file mode 100644 index 0000000..57a61b9 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js @@ -0,0 +1,1104 @@ +var count = (function toString(BigNumber) { + var start = +new Date(), + log, + error, + passed = 0, + total = 0; + + if (typeof window === 'undefined') { + log = console.log; + error = console.error; + } else { + log = function (str) { document.body.innerHTML += str.replace('\n', '
      ') }; + error = function (str) { document.body.innerHTML += '
      ' + + str.replace('\n', '
      ') + '
      ' }; + } + + if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); + + function assert(expected, actual) { + total++; + if (expected !== actual) { + error('\n Test number: ' + total + ' failed'); + error(' Expected: ' + expected); + error(' Actual: ' + actual); + //process.exit(); + } + else { + passed++; + //log('\n Expected and actual: ' + actual); + } + } + + function T(expected, value) { + assert(expected, new BigNumber(value).toString()) + } + + log('\n Testing toString...'); + + BigNumber.config({ + DECIMAL_PLACES : 20, + ROUNDING_MODE : 4, + ERRORS : true, + RANGE : 1E9, + EXPONENTIAL_AT : 1E9 + }); + + // ---------------------------------------------------------------------- v8 + + T('NaN', NaN); + T('Infinity', 1/0); + T('-Infinity', -1/0); + T('0', 0); + T('9', 9); + T('90', 90); + T('90.12', 90.12); + T('0.1', 0.1); + T('0.01', 0.01); + T('0.0123', 0.0123); + T('111111111111111111111', '111111111111111111111'); + T('1111111111111111111111', '1111111111111111111111'); + T('11111111111111111111111', '11111111111111111111111'); + T('0.00001', 0.00001); + T('0.000001', 0.000001); + + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('1e-7', 0.0000001); + T('1.2e-7', 0.00000012); + T('1.23e-7', 0.000000123); + T('1e-8', 0.00000001); + T('1.2e-8', 0.000000012); + T('1.23e-8', 0.0000000123); + T('-1e-7', -0.0000001); + T('-1.2e-7', -0.00000012); + T('-1.23e-7', -0.000000123); + T('-1e-8', -0.00000001); + T('-1.2e-8', -0.000000012); + T('-1.23e-8', -0.0000000123); + + BigNumber.config({EXPONENTIAL_AT : 60}); + + T('0', -0); + T('-9', -9); + T('-90', -90); + T('-90.12', -90.12); + T('-0.1', -0.1); + T('-0.01', -0.01); + T('-0.0123', -0.0123); + T('-111111111111111111111', '-111111111111111111111'); + T('-1111111111111111111111', '-1111111111111111111111'); + T('-11111111111111111111111', '-11111111111111111111111'); + T('-0.00001', -0.00001); + T('-0.000001', -0.000001); + + // ------------------------------------------------------------------ v8 end + + // 1000 toString to exponentials + BigNumber.config({EXPONENTIAL_AT : 0}); + + T('5.73447902457635174479825134e+14', '573447902457635.174479825134'); + T('1.07688e+1', '10.7688'); + T('3.171194102379077141557759899307946350455841e+27', '3171194102379077141557759899.307946350455841'); + T('4.924353466898191177698653319742594890634579e+37', '49243534668981911776986533197425948906.34579'); + T('6.85558243926569397328633907445409866949445343654692955e+18', '6855582439265693973.28633907445409866949445343654692955'); + T('1e+0', '1'); + T('2.1320000803e+7', '21320000.803'); + T('5.0878741e+4', '50878.741'); + T('5.1932898288391e+8', '519328982.88391'); + T('5.690616778176956027307884725933410349604387915634524e+49', '56906167781769560273078847259334103496043879156345.24'); + T('3.25099780528575457273246693147645e+15', '3250997805285754.572732466931476450'); + T('3e+0', '3'); + T('2.5811494197573291905990947355226e+13', '25811494197573.291905990947355226'); + T('5.60372259169833930471746454125e+13', '56037225916983.3930471746454125'); + T('1.2615810663732236602461593613783e+7', '12615810.663732236602461593613783'); + T('1.4654366449266911507705477499035407722184965108377032e+11', '146543664492.66911507705477499035407722184965108377032'); + T('6.4986735507448912857131832908423940757e+38', '649867355074489128571318329084239407570.0'); + T('3.6146989180120676857245474944e+3', '3614.6989180120676857245474944'); + T('9.928654762302286149994896625074e+4', '99286.54762302286149994896625074'); + T('3.46424170787806074650506079e+3', '3464.24170787806074650506079'); + T('1.25934313355319666474752550204680303068865719647e+33', '1259343133553196664747525502046803.03068865719647'); + T('1.23014105337660651106978059198916100450966081493207e+27', '1230141053376606511069780591.98916100450966081493207'); + T('1.386164712267169624993434287237e+23', '138616471226716962499343.4287237'); + T('2.66076369930322488334961932e+3', '2660.76369930322488334961932'); + T('9.37582568e+4', '93758.2568'); + T('1.39853642894726883996875746770529e+28', '13985364289472688399687574677.0529'); + T('3.19099e+5', '319099.0'); + T('3.04557106798789396303998723e+19', '30455710679878939630.3998723'); + T('1.3024612569115368830867934222004329653604418e+9', '1302461256.9115368830867934222004329653604418'); + T('2.358787483447172786e+5', '235878.7483447172786'); + T('5.10614446965318674547416709785208086304398889160563e+28', '51061444696531867454741670978.5208086304398889160563'); + T('1.46685947134456101512731611558e+23', '146685947134456101512731.6115580'); + T('3.69960105771344554151928256518906564810300119e+25', '36996010577134455415192825.6518906564810300119'); + T('2.68683153074628e+10', '26868315307.4628'); + T('2.35656504568492312232737219553793859212e+15', '2356565045684923.12232737219553793859212'); + T('7.753292442361215e+14', '775329244236121.5'); + T('1.56e+0', '1.56'); + T('1.272818730367215461852227991200704e+21', '1272818730367215461852.227991200704'); + T('1.13900700292988027871648046839423153789e+7', '11390070.0292988027871648046839423153789'); + T('3.3431e+0', '3.3431'); + T('1.4546654966819402705e+14', '145466549668194.02705'); + T('3.05345735395805567424714891401667575466462830113819e+48', '3053457353958055674247148914016675754664628301138.19'); + T('5.1218945854639324441304933666460587e+2', '512.18945854639324441304933666460587'); + T('9.95299900896e+5', '995299.9008960'); + T('1.21564537151562431991786620635e+0', '1.21564537151562431991786620635'); + T('4.016e+1', '40.16'); + T('1.86570326e+7', '18657032.6'); + T('1.3381001727e+5', '133810.01727'); + T('2.639841700687441886800225725227e+12', '2639841700687.441886800225725227'); + T('2.45e+0', '2.45'); + T('2.8945e+2', '289.45'); + T('1.23e+0', '1.23'); + T('1.559806666149836070330006415033e+24', '1559806666149836070330006.415033'); + T('3.14984566145310751826289711761375061645611777700983e+3', '3149.84566145310751826289711761375061645611777700983'); + T('3.0940691333892283249774116223987e+5', '309406.91333892283249774116223987'); + T('6.572766274013360381079275191108732606370177179594282e+5', '657276.6274013360381079275191108732606370177179594282'); + T('1.470126973337024e+6', '1470126.973337024'); + T('5.6499e+2', '564.99'); + T('2.8416297367859233303497847667971781197616950846e+28', '28416297367859233303497847667.971781197616950846'); + T('2.1364951568189836563102481625533538320051163977e+41', '213649515681898365631024816255335383200511.63977'); + T('8.76108618687537137080904679797e+19', '87610861868753713708.0904679797'); + T('6.27683573474251182408654509953633505286e+6', '6276835.73474251182408654509953633505286'); + T('8.91411e+0', '8.91411'); + T('9.034542832410912578330021146413119399e+28', '90345428324109125783300211464.13119399'); + T('7.026094393430852002585511641212897686956090955e+39', '7026094393430852002585511641212897686956.090955'); + T('1.8812221093491505758565988678062e+11', '188122210934.91505758565988678062'); + T('9.435538492497050138580201734902181057468044875e+43', '94355384924970501385802017349021810574680448.75'); + T('5.36793419620790391866461e+20', '536793419620790391866.461'); + T('2.315089265590404012562599592854156357726817712e+26', '231508926559040401256259959.2854156357726817712'); + T('7.499170741828885273030006066196546588710962e+17', '749917074182888527.3030006066196546588710962'); + T('3.3962128305986e+5', '339621.28305986'); + T('8.17980456510031304e+9', '8179804565.10031304'); + T('4.394575876858124185382e+13', '43945758768581.24185382'); + T('7.881617323629751701107428e+9', '7881617323.629751701107428'); + T('4.89e+0', '4.89'); + T('9.85209894663520857685703881781194082356123765e+39', '9852098946635208576857038817811940823561.23765'); + T('6.849329685e+5', '684932.9685'); + T('2.8262252277815736355279617243060700437627773361e+7', '28262252.277815736355279617243060700437627773361'); + T('1.503736721902e+9', '1503736721.902'); + T('2.65213505469049775997232325076980590625670234690917845e+41', '265213505469049775997232325076980590625670.234690917845'); + T('4.23752645959719196604760963802412828187442060555521e+2', '423.752645959719196604760963802412828187442060555521'); + T('9.023159535576504097005203913521871601640521009e+36', '9023159535576504097005203913521871601.640521009'); + T('4.69339457186380276410136272120035011198438772754725e+14', '469339457186380.276410136272120035011198438772754725'); + T('1.2819429130391792511503973184804508867728894e+6', '1281942.9130391792511503973184804508867728894'); + T('1.9778e+3', '1977.8'); + T('2.456680359828937628024631306792185367572610021e+43', '24566803598289376280246313067921853675726100.21'); + T('5.25389225018085571689046925802871155628e+1', '52.5389225018085571689046925802871155628'); + T('1.733700532107e+8', '173370053.2107'); + T('1.9561099921e+5', '195610.99921'); + T('3.3409e+2', '334.09'); + T('6.09858715556186e+0', '6.09858715556186'); + T('3.20634106832106387482375790792609337383007782520694e+24', '3206341068321063874823757.90792609337383007782520694'); + T('1.46347126003930100207988814e+20', '146347126003930100207.98881400'); + T('2.717780449744210117995586561524987067807146882e+43', '27177804497442101179955865615249870678071468.82'); + T('2.86757572635270377540170639151e+22', '28675757263527037754017.0639151'); + T('3.3652257e+4', '33652.2570'); + T('1.161511687e+2', '116.1511687'); + T('3.38745832e+4', '33874.5832'); + T('1.2392653444609372603987061e+0', '1.2392653444609372603987061'); + T('3.2863728114574403555642096129516601553115371e+19', '32863728114574403555.642096129516601553115371'); + T('1.08862827358094757110520739146065028362703e+30', '1088628273580947571105207391460.65028362703'); + T('1.3488325541508602487577920722101277063863557818e+14', '134883255415086.02487577920722101277063863557818'); + T('1.96013732736436392e+13', '19601373273643.6392'); + T('4.798185890466e+2', '479.8185890466'); + T('1.696622337138949329874242519485119916519994150606e+39', '1696622337138949329874242519485119916519.994150606'); + T('5.50000572984970761183142593570950897913860587074643e+13', '55000057298497.0761183142593570950897913860587074643'); + T('4.9e+1', '49'); + T('2.353405108244768666141e+9', '2353405108.2447686661410'); + T('1.237978927714857736527530290155529e+0', '1.237978927714857736527530290155529'); + T('5.54113012e+1', '55.411301200'); + T('1.639709023131e+11', '163970902313.1'); + T('6.771810210029143571341e+20', '677181021002914357134.1'); + T('3.3659315728946599002939955548637694037e+13', '33659315728946.599002939955548637694037'); + T('5.448485697437811e+14', '544848569743781.1'); + T('2.93450799e+0', '2.93450799'); + T('4e+0', '4'); + T('5.751e+0', '5.751'); + T('7.61737213065110411e+15', '7617372130651104.110'); + T('4.958075942313945962737499249994583773691625306e+36', '4958075942313945962737499249994583773.691625306'); + T('1.358378342e+8', '135837834.20'); + T('2.048052995889503e+13', '20480529958895.03'); + T('6.79076388323848653822758720940258493627501e+10', '67907638832.38486538227587209402584936275010'); + T('8.67210047206219429882716380856729877038463e+37', '86721004720621942988271638085672987703.8463'); + T('3.5856103826876870700739098996695255188137082852345623e+4', '35856.103826876870700739098996695255188137082852345623'); + T('1.90496213987796617338452467459794976917964545462658e+15', '1904962139877966.17338452467459794976917964545462658'); + T('9.63174575036950144769050367165741e+0', '9.63174575036950144769050367165741'); + T('2.0768e+0', '2.0768'); + T('1.456779888489820409831915e+18', '1456779888489820409.831915'); + T('3.17858204994255447e+11', '317858204994.255447'); + T('1e+0', '1'); + T('1.9096483361096593551745691e+3', '1909.64833610965935517456910'); + T('1.06782878549e+8', '106782878.5490'); + T('1.939e+2', '193.9'); + T('1.35467074874780607458660332165839e+30', '1354670748747806074586603321658.39'); + T('1.3477262091e+0', '1.3477262091'); + T('1.310111103174762e+6', '1310111.103174762'); + T('1.3244499e+5', '132444.99'); + T('6.328608643684925104652431120058467829483124155656848e+5', '632860.86436849251046524311200584678294831241556568480'); + T('1.323139209814658927313821930784171e+3', '1323.1392098146589273138219307841710'); + T('4.47797097399588837e+9', '4477970973.995888370'); + T('1.443414e+4', '14434.14'); + T('1.913095284076879e+12', '1913095284076.879'); + T('2.51586474e+0', '2.51586474'); + T('2.9838935573505166030799e+9', '2983893557.3505166030799'); + T('1.573964479962393720481520537831844728449363575e+7', '15739644.79962393720481520537831844728449363575'); + T('2.496378e+2', '249.6378'); + T('1.484378e+0', '1.484378'); + T('5.21963089810195859130639819168579622e+24', '5219630898101958591306398.19168579622'); + T('1.8688440918945220036354844302195749309220888e+26', '186884409189452200363548443.02195749309220888'); + T('1.41126696817890014e+9', '1411266968.17890014'); + T('1.293182137273764465174297382284293177743591308e+15', '1293182137273764.465174297382284293177743591308'); + T('1.27466702071873897014853508266774e+7', '12746670.2071873897014853508266774'); + T('2.556582211914618427489836174964272160475e+25', '25565822119146184274898361.74964272160475'); + T('7.4140139575523848563560806694561950037847e+26', '741401395755238485635608066.94561950037847'); + T('1.9191049758936644006660416648962209488e+24', '1919104975893664400666041.66489622094880'); + T('2.31987505124515790876372807554587171781e+6', '2319875.05124515790876372807554587171781'); + T('1.15157815434449204928983e+10', '11515781543.4449204928983'); + T('3e+0', '3'); + T('2.917143980403974745273363447e+0', '2.917143980403974745273363447'); + T('4.191515340588519451276037876335997588593916166223e+8', '419151534.0588519451276037876335997588593916166223'); + T('1.5893308320910765122063972428358196502e+36', '1589330832091076512206397242835819650.2'); + T('1.564871863334923e+9', '1564871863.334923'); + T('3.4443994941943243107512237423766787557718741016702e+7', '34443994.941943243107512237423766787557718741016702'); + T('2.082688546929e+2', '208.2688546929'); + T('2.9839569879261869701414e+14', '298395698792618.69701414'); + T('1.18e+0', '1.18'); + T('4.649099416086369391962725101452597532757447601493062e+15', '4649099416086369.391962725101452597532757447601493062'); + T('5.1e+1', '51.0'); + T('1.350769554904381289856048945926109233407469025099095e+35', '135076955490438128985604894592610923.3407469025099095'); + T('1.28e+0', '1.28'); + T('1.686998748044557678256738078e+11', '168699874804.4557678256738078'); + T('2.725058665831622653286e+15', '2725058665831622.653286'); + T('3.4955955888709903930650733178004053283303e+27', '3495595588870990393065073317.8004053283303'); + T('2.71792743712e+3', '2717.92743712'); + T('3.765499741127994356229674741445362678695091917e+28', '37654997411279943562296747414.453626786950919170'); + T('8.48094736645795433828545542478643430012741252784e+2', '848.0947366457954338285455424786434300127412527840'); + T('3.252259575976e+8', '325225957.5976'); + T('3.6168564360780068610016611e+13', '36168564360780.0686100166110'); + T('1.3606305591180828419826623450927437361732403593e+14', '136063055911808.28419826623450927437361732403593'); + T('3.770936274989628272472264790077542e+21', '3770936274989628272472.264790077542'); + T('7.2511003873049904808574871389e+2', '725.11003873049904808574871389'); + T('6.62710314240271241900085261e+21', '6627103142402712419000.85261'); + T('7.5663149e+5', '756631.49'); + T('1.2062059e+1', '12.0620590'); + T('1.316934076085443594506478729911134464048168888698e+42', '1316934076085443594506478729911134464048168.888698'); + T('1.202953883353175026243055281903766950596e+16', '12029538833531750.26243055281903766950596'); + T('5.15639495337093127431811770279915335410152998e+4', '51563.9495337093127431811770279915335410152998'); + T('1.8e+1', '18'); + T('2.9510339604105305444519680156145845428324011e+35', '295103396041053054445196801561458454.28324011'); + T('9.991e+0', '9.991'); + T('2.32664625710064626302675792506518986748623800519362825e+45', '2326646257100646263026757925065189867486238005.19362825'); + T('1.15155883503801901e+9', '1151558835.03801901'); + T('2.3143e+1', '23.143'); + T('2.260422939172634138149555333552819e+1', '22.60422939172634138149555333552819'); + T('1.77998238e+7', '17799823.8'); + T('3.70098549253330116100410970723706977e+9', '3700985492.53330116100410970723706977'); + T('9.05841068683497571038524585222884373e+29', '905841068683497571038524585222.884373'); + T('2.104525700707071438146923949322482428742115356534e+28', '21045257007070714381469239493.22482428742115356534'); + T('7.024685053227353728838050757013069476546171879163e+24', '7024685053227353728838050.757013069476546171879163'); + T('4.46125872195266e+10', '44612587219.5266'); + T('1.5784e+0', '1.5784'); + T('7.2863751084180259357725026103712116366349e+23', '728637510841802593577250.26103712116366349'); + T('3.8320639752835419309258317842615e+19', '38320639752835419309.258317842615'); + T('5.022803549739540204835955185781e+8', '502280354.9739540204835955185781'); + T('1.52375875990883568458394783820252654691082e+8', '152375875.990883568458394783820252654691082'); + T('6.3061015767881141717464891e+15', '6306101576788114.1717464891'); + T('9.71891517062070497407760297561206525471485e+27', '9718915170620704974077602975.61206525471485'); + T('1.734234585265201766712574126945236309508118634425837e+0', '1.734234585265201766712574126945236309508118634425837'); + T('8.5765119797384477995e+4', '85765.119797384477995'); + T('5.13287988277059925228486890851140970386425187274e+8', '513287988.2770599252284868908511409703864251872740'); + T('1.658649165479737672749860660622867246548e+15', '1658649165479737.672749860660622867246548'); + T('3.4292698700438468428249935453830307216008845443e+3', '3429.2698700438468428249935453830307216008845443'); + T('6.4741508681889057488168545664375944171354681e+23', '647415086818890574881685.45664375944171354681'); + T('1.6942797476135028024654429183339522530812281e+31', '16942797476135028024654429183339.522530812281'); + T('4.2751009447385333857937408636958425779826e+4', '42751.009447385333857937408636958425779826'); + T('8.171245315549501039363411728044907e+8', '817124531.5549501039363411728044907'); + T('2.63956757213151457264967446772106e+14', '263956757213151.457264967446772106'); + T('5.613736432461e+9', '5613736432.461'); + T('4.78814e+3', '4788.14'); + T('4e+0', '4'); + T('4.37173137694e+3', '4371.73137694'); + T('2.2510403748584e+3', '2251.0403748584'); + T('5.06031783713235771e+6', '5060317.83713235771'); + T('1.33505152823751921282350949461e+18', '1335051528237519212.82350949461'); + T('7.600277071910098554342026310498032154036e+17', '760027707191009855.4342026310498032154036'); + T('1.876325989370064932735123485260012703584e+17', '187632598937006493.27351234852600127035840'); + T('3.87899618892199653560586133205982498365799449e+27', '3878996188921996535605861332.05982498365799449'); + T('6.2615173898555524447350478811537912100608066376e+42', '6261517389855552444735047881153791210060806.6376'); + T('9.413311009646174266728687126e+7', '94133110.09646174266728687126'); + T('1.2598016462494915983919933836115811e+13', '12598016462494.915983919933836115811'); + T('7.9083335654128601227093e+3', '7908.3335654128601227093'); + T('1.1816683721169472338636e+3', '1181.6683721169472338636'); + T('2.75369819574089239438702064921012202e+10', '27536981957.4089239438702064921012202'); + T('8.23458259735325932383e+10', '82345825973.5325932383'); + T('9.79385e+1', '97.9385'); + T('1e+0', '1'); + T('1.054786033040309868462e+15', '1054786033040309.868462'); + T('1.39529250356370349e+10', '13952925035.6370349'); + T('3.287519212843337e+8', '328751921.2843337'); + T('2.931680954526563928e+2', '293.1680954526563928'); + T('8.34563827640030036035405e+22', '83456382764003003603540.5'); + T('3.205638487e+0', '3.205638487'); + T('8.347784116251624503148e+14', '834778411625162.4503148'); + T('8.0108273810982547100003003762e+5', '801082.73810982547100003003762'); + T('5.41874345499627242543460793e+17', '541874345499627242.543460793'); + T('1.015683737878128e+2', '101.56837378781280'); + T('2.978259746276619202256565093853146061976952e+15', '2978259746276619.202256565093853146061976952'); + T('9.698293249507073809003898936542180557347147e+18', '9698293249507073809.003898936542180557347147'); + T('5.73284757676406662905522205317450204e+31', '57328475767640666290552220531745.0204'); + T('1.09314948671137385444979381052e+26', '109314948671137385444979381.052'); + T('6.657213e+1', '66.57213'); + T('5.442667e+0', '5.442667'); + T('1.497094368112928522082161622117e+17', '149709436811292852.2082161622117'); + T('8.86015267575800230944962406406137570452e+28', '88601526757580023094496240640.6137570452'); + T('8.7435115902725784785213467357972025071925716822259e+38', '874351159027257847852134673579720250719.25716822259'); + T('3.758112653964719298306554363807932e+15', '3758112653964719.298306554363807932'); + T('3.083180493316158e+7', '30831804.93316158'); + T('6.6753482e+1', '66.753482'); + T('1.511686617338690801597376192985164124335711475e+36', '1511686617338690801597376192985164124.335711475'); + T('2.561637088433158358807278932196e+1', '25.61637088433158358807278932196'); + T('9.7542804053855981164860021065e+18', '9754280405385598116.4860021065'); + T('3.862183052662673704009308528932528900914181684535e+42', '3862183052662673704009308528932528900914181.684535'); + T('1.735e+0', '1.735'); + T('1.68459549759090470803341044524240531008376812e+5', '168459.549759090470803341044524240531008376812'); + T('5.7719373345538594618757e+18', '5771937334553859461.8757'); + T('3.6601007679275500170303e+18', '3660100767927550017.0303'); + T('8.33735150265611827e+5', '833735.150265611827'); + T('1.01871087828059263083e+9', '1018710878.28059263083'); + T('1.730763e+3', '1730.763'); + T('2.0215513523e+6', '2021551.3523'); + T('3.169677580608477341e+6', '3169677.580608477341'); + T('1.36121484062885200254669e+8', '136121484.062885200254669'); + T('1.864593865698e+11', '186459386569.8'); + T('3.862360154857656116978304538802550298055142749413e+37', '38623601548576561169783045388025502980.55142749413'); + T('6.344348248e+6', '6344348.248'); + T('8.67366546264e+2', '867.366546264'); + T('4.29318860328279804558512081958216849305249e+4', '42931.8860328279804558512081958216849305249'); + T('4.5767492969936218926613265e+5', '457674.92969936218926613265'); + T('9.965617933646541e+10', '99656179336.46541'); + T('7.664031929445646163953676864248019955392457435e+19', '76640319294456461639.53676864248019955392457435'); + T('1.7557601024183018471184139748851879933153788645e+26', '175576010241830184711841397.48851879933153788645'); + T('3.59958e+1', '35.9958'); + T('3.128356271716333383085523918507809249225814121e+6', '3128356.271716333383085523918507809249225814121'); + T('1.9075527480204423875673047345572289921671553543e+7', '19075527.480204423875673047345572289921671553543'); + T('4.1705118500557863903425612212241828e+28', '41705118500557863903425612212.241828'); + T('1.18254857176614357421149713005254203068839516120630636e+10', '11825485717.6614357421149713005254203068839516120630636'); + T('7.02259913337121409861924646773988297e+3', '7022.599133371214098619246467739882970'); + T('1.146737732876241016454570289690559455455987995125423e+18', '1146737732876241016.454570289690559455455987995125423'); + T('1.355148008848587e+12', '1355148008848.587'); + T('1.015453056007471546100232031232797626130792432862e+30', '1015453056007471546100232031232.797626130792432862'); + T('2.8538363119129962635325743474766089129608347262536e+29', '285383631191299626353257434747.660891296083472625360'); + T('4.2227811926947467182312527e+0', '4.2227811926947467182312527'); + T('6.62781300059578283068526676555702438949382809379e+11', '662781300059.578283068526676555702438949382809379'); + T('7.132543524075010321e+11', '713254352407.5010321'); + T('2.6891265922739405441935129011630558514535121113e+0', '2.6891265922739405441935129011630558514535121113'); + T('2.6553300042224839703e+7', '26553300.042224839703'); + T('1.326288516626807519348228004e+12', '1326288516626.807519348228004'); + T('0e+0', '0'); + T('6.02519526915223e+9', '6025195269.15223'); + T('3.624787029215766960931977e+8', '362478702.9215766960931977'); + T('2.2216785095018655042906319049394e+10', '22216785095.018655042906319049394'); + T('1.42167287636895617482014385649865679412e+27', '1421672876368956174820143856.49865679412'); + T('1.41165522278933908893e+0', '1.41165522278933908893'); + T('9.6100608486394273371410715209128478362564609e+29', '961006084863942733714107152091.28478362564609'); + T('6.628723659367639746219006678948604246e+24', '6628723659367639746219006.678948604246'); + T('2.7977956855247594e+5', '279779.56855247594'); + T('2.031549e+5', '203154.9'); + T('1.255931797e+8', '125593179.7'); + T('5.6205236102596850984322041097e+16', '56205236102596850.9843220410970'); + T('2.03142821417788742960492e+19', '20314282141778874296.0492'); + T('1.91781433973790573018323517395847264353e+35', '191781433973790573018323517395847264.35300'); + T('6.8634738969456114664748639548209064365603770815e+10', '68634738969.456114664748639548209064365603770815'); + T('2.4116354386327449757134801702e+5', '241163.54386327449757134801702'); + T('3.36834833123607650204419305291838348810644243e+42', '3368348331236076502044193052918383488106442.43'); + T('1.2854387e+1', '12.854387'); + T('1.71911767411984485012054040057806822618e+28', '17191176741198448501205404005.7806822618'); + T('5.974376678071807862297048158076713536908142505051762e+0', '5.974376678071807862297048158076713536908142505051762'); + T('1.75040573368172e+0', '1.75040573368172'); + T('7.59296739794577295967023894e+19', '75929673979457729596.7023894'); + T('5.9387271258615e+0', '5.9387271258615'); + T('1.41e+1', '14.1'); + T('6.520718977022294517603438651524e+13', '65207189770222.94517603438651524'); + T('4.0504464748488527e+13', '40504464748488.527'); + T('4.9339025e+4', '49339.025'); + T('6.5436938338545276642922e+5', '654369.38338545276642922'); + T('6.614070881259392274974020452736433936484946441479e+14', '661407088125939.2274974020452736433936484946441479'); + T('3.6562357737624542715177216071738074863798786e+36', '3656235773762454271517721607173807486.3798786'); + T('4.483580186204558328366014e+16', '44835801862045583.28366014'); + T('8.786e+1', '87.86'); + T('3.2320103419855255742057273942480043987e+6', '3232010.3419855255742057273942480043987'); + T('4.46656766000098808044857967014414e+16', '44665676600009880.8044857967014414'); + T('1.02292056093528342365e+13', '10229205609352.8342365'); + T('8.57520635819763350659219863901837233e+21', '8575206358197633506592.19863901837233'); + T('1.245913688722124452316952395765916246e+21', '1245913688722124452316.9523957659162460'); + T('8.8964578294856908705314945178917896807516003057782324e+46', '88964578294856908705314945178917896807516003057.782324'); + T('8.7449512208056038986439889808e+7', '87449512.208056038986439889808'); + T('2.3e+2', '230.0'); + T('1.5579884689150031101693496143656840264980386818704e+23', '155798846891500311016934.961436568402649803868187040'); + T('8.5051864582679908692564183699252612773409509082078e+37', '85051864582679908692564183699252612773.409509082078'); + T('8.8798692074080075787375315447486123809923959833e+26', '887986920740800757873753154.47486123809923959833'); + T('6.77345401358539738139850599762127933983100324110805558e+4', '67734.5401358539738139850599762127933983100324110805558'); + T('2.347749726836225014840282995092832754e+20', '234774972683622501484.0282995092832754'); + T('7.429558958688e+0', '7.429558958688'); + T('1.7882214813873e+0', '1.7882214813873'); + T('4.193192196e+6', '4193192.196'); + T('4.749767618513507376588211479214898450387625965e+9', '4749767618.513507376588211479214898450387625965'); + T('1.977391043687779e+5', '197739.1043687779'); + T('2.6484576511218782036901501152986249531234497168718e+40', '26484576511218782036901501152986249531234.497168718'); + T('1.920439145880135238583976259936021e+3', '1920.439145880135238583976259936021'); + T('1.51897109592862249460404e+8', '151897109.592862249460404'); + T('5.0235407304542145031825034116450744076803325e+15', '5023540730454214.5031825034116450744076803325'); + T('7.6404110248649153016903650163544816581006668605e+23', '764041102486491530169036.50163544816581006668605'); + T('3.7874929502138e+0', '3.7874929502138'); + T('1.41787251451628994917275472e+24', '1417872514516289949172754.72'); + T('4.2104854597998748621925225253125873386e+31', '42104854597998748621925225253125.87338600'); + T('1.26567160108986726661104934542275915987889e+7', '12656716.0108986726661104934542275915987889'); + T('2.8968894398808777e+4', '28968.894398808777'); + T('2.8297292e+2', '282.97292'); + T('2.603742338988784570262735209585265906786049e+12', '2603742338988.784570262735209585265906786049'); + T('4.62131e+2', '462.131'); + T('2.22735863520665290933246331848e+24', '2227358635206652909332463.31848'); + T('4.53886361459e+10', '45388636145.9'); + T('6.6860727859954777667223002708162369e+32', '668607278599547776672230027081623.69'); + T('2.8062722e+0', '2.8062722'); + T('6.0842062525063451016806e+10', '60842062525.063451016806'); + T('6.8357371699714755863090081855483865237790749503e+22', '68357371699714755863090.081855483865237790749503'); + T('3.35802101243809011e+10', '33580210124.3809011'); + T('8.43490001143656777280840623008615269579365614931775e+0', '8.43490001143656777280840623008615269579365614931775'); + T('1.9235808728891520564223264242417980260344158021186e+8', '192358087.28891520564223264242417980260344158021186'); + T('1.41994286356037056979411e+12', '1419942863560.37056979411'); + T('1.78557003827723798504978687588959254956675353035516771e+37', '17855700382772379850497868758895925495.6675353035516771'); + T('1.2918168334241255620676751949906289e+11', '129181683342.41255620676751949906289'); + T('3.9318765130442377729598885e+1', '39.318765130442377729598885'); + T('3.88694369953891826304770521327308322619393047272853992e+29', '388694369953891826304770521327.308322619393047272853992'); + T('1.0841221160385599396e+8', '108412211.60385599396'); + T('2.927924105979441123308231e+10', '29279241059.79441123308231'); + T('9.793009327446332791991220439204599563053527e+23', '979300932744633279199122.0439204599563053527'); + T('9.423287306701960190921439346729208723159342075073e+5', '942328.7306701960190921439346729208723159342075073'); + T('9.32095532579704529e+14', '932095532579704.529'); + T('4e+0', '4'); + T('6.53989976127167541385228442576702092890124e+35', '653989976127167541385228442576702092.89012400'); + T('1.19250623478e+7', '11925062.3478'); + T('1.865458672e+0', '1.865458672'); + T('3.316183057661896194198642778725380227773158022030233e+12', '3316183057661.896194198642778725380227773158022030233'); + T('8.5601184555567625475596670332086089588e+15', '8560118455556762.5475596670332086089588'); + T('1.80118254923064703459780878790624318318152203e+37', '18011825492306470345978087879062431831.8152203'); + T('8.31702685620470833413491412813875698623351991849704e+45', '8317026856204708334134914128138756986233519918.49704'); + T('4.158534334648275764e+11', '415853433464.8275764'); + T('2.19723302477e+0', '2.19723302477'); + T('2.029177448999173372119989892440779088e+22', '20291774489991733721199.89892440779088'); + T('4.645682747987148208758271e+14', '464568274798714.8208758271'); + T('2.6112628e+6', '2611262.8'); + T('1.27260908637e+0', '1.27260908637'); + T('2.386528806365172395257137e+5', '238652.88063651723952571370'); + T('2.64450278721870797393766005966148238494e+8', '264450278.721870797393766005966148238494'); + T('1.988688294222795007e+6', '1988688.294222795007'); + T('7.078660611250891118657496594735238821341408353e+35', '707866061125089111865749659473523882.1341408353'); + T('0e+0', '0'); + T('1.096715852238427070115466117322983113926e+36', '1096715852238427070115466117322983113.926'); + T('8.3033913e+4', '83033.913'); + T('4.015204714209691387124917361818013823115690954e+5', '401520.4714209691387124917361818013823115690954'); + T('1.18391666839775944e+9', '1183916668.39775944'); + T('2.2995421984176008066735e+7', '22995421.984176008066735'); + T('9.03e+0', '9.03'); + T('5.332359881257917566876361208399e+0', '5.3323598812579175668763612083990'); + T('7.102133e+3', '7102.133'); + T('1.1483640369724895747740049e+19', '11483640369724895747.740049'); + T('2.86532834287791967206284176556306849118939923884e+42', '2865328342877919672062841765563068491189399.23884'); + T('9.076417888165894607318040129e+17', '907641788816589460.7318040129'); + T('7.3646447223309353153091289569473837758243e+14', '736464472233093.53153091289569473837758243'); + T('2.181883e+4', '21818.83'); + T('3.386300476012467818859167684043147659263155e+9', '3386300476.012467818859167684043147659263155'); + T('2.51484028084025506424805997802620148071482e+13', '25148402808402.55064248059978026201480714820'); + T('9.4435575887407391033782269887533990447300682186075521e+24', '9443557588740739103378226.9887533990447300682186075521'); + T('1.6886715415033e+8', '168867154.15033'); + T('2.5034373528604861134460194872790430617196344388725e+11', '250343735286.04861134460194872790430617196344388725'); + T('2.196175657558897384981748559894e+29', '219617565755889738498174855989.4'); + T('9.76199813364186117286131817353e+8', '976199813.364186117286131817353'); + T('2.19717393409454748689882068559316753929782544245361e+9', '2197173934.09454748689882068559316753929782544245361'); + T('3.458346873044019889e+14', '345834687304401.98890'); + T('1.7224191355912435440309996131683233957399227e+29', '172241913559124354403099961316.83233957399227'); + T('2.9118304597001059668e+13', '29118304597001.0596680'); + T('8.089765204288655830674576596713309516483099e+31', '80897652042886558306745765967133.09516483099'); + T('4.238609505643148138368920789804547924618071e+16', '42386095056431481.38368920789804547924618071'); + T('6.632956460328161742904032219604e+9', '6632956460.328161742904032219604'); + T('5.149280532588990421575423306958842719315081438104696e+2', '514.9280532588990421575423306958842719315081438104696'); + T('2.07166412218470429605806831507e+24', '2071664122184704296058068.31507'); + T('3.074159e+0', '3.074159'); + T('8.881411022677226686076012925366e+8', '888141102.2677226686076012925366'); + T('1.4327673900218857772756403845335511690820534667844161e+25', '14327673900218857772756403.845335511690820534667844161'); + T('8.11258981514701594464134633523542919936061665628845e+9', '8112589815.14701594464134633523542919936061665628845'); + T('5.96685124808828989098666066158574653883332e+34', '59668512480882898909866606615857465.3883332'); + T('5.57183574e+6', '5571835.74'); + T('6.8501903843096e+0', '6.8501903843096'); + T('1.5942819569037073307050366953094e+20', '159428195690370733070.50366953094'); + T('2.27330909197482e+2', '227.330909197482'); + T('2.982752994e+1', '29.82752994'); + T('2.6621448010147457294e+3', '2662.14480101474572940'); + T('1.086669601366824519299e+5', '108666.9601366824519299'); + T('1.18736e+1', '11.8736'); + T('2.529e+2', '252.9'); + T('9.53927547001352070346930665292474419009985922637627e+0', '9.53927547001352070346930665292474419009985922637627'); + T('1.41547817128845761243461584e+17', '141547817128845761.243461584'); + T('4.913427130278990825751597676478e+5', '491342.7130278990825751597676478'); + T('1.92247886737227536336e+7', '19224788.67372275363360'); + T('3.1497590158477647299507840130228337905235603e+22', '31497590158477647299507.840130228337905235603'); + T('1.68055184413854558094765106936369527289778050531295766e+40', '16805518441385455809476510693636952728977.8050531295766'); + T('1.8255321351888780569641286767450275327e+7', '18255321.351888780569641286767450275327'); + T('1.56201751119240301681993262341142444952941e+6', '1562017.51119240301681993262341142444952941'); + T('5.122704714291e+9', '5122704714.291'); + T('3.82474822197843e+12', '3824748221978.43'); + T('1.525347830613268824053492683517588e+9', '1525347830.613268824053492683517588'); + T('6.145278e+4', '61452.78'); + T('4.99832566753824717449034e+0', '4.99832566753824717449034'); + T('1.308323895602314056642638704891037710277185276986927e+40', '13083238956023140566426387048910377102771.85276986927'); + T('5.18915522348e+4', '51891.5522348'); + T('1.4209994e+6', '1420999.4'); + T('1.503265451278288e+7', '15032654.51278288'); + T('3.152117986796142139453802611094289123987929469e+9', '3152117986.796142139453802611094289123987929469'); + T('2.978007679998703216707397018589782695e+13', '29780076799987.03216707397018589782695'); + T('5.8512931044e+7', '58512931.044'); + T('3.295254020832544012761679098484189727227833e+41', '329525402083254401276167909848418972722783.3'); + T('8.72742250969672731429969186796754051463901e+14', '872742250969672.731429969186796754051463901'); + T('2.9072795594202554837396927026502083307998e+35', '290727955942025548373969270265020833.07998'); + T('2.34518496092800925568908809696371538989759e+27', '2345184960928009255689088096.96371538989759'); + T('4.02951776768e+4', '40295.17767680'); + T('1.3689991541714377699994556138826283759e+29', '136899915417143776999945561388.26283759'); + T('5.375319663285375407847169258e+20', '537531966328537540784.71692580'); + T('2.4838816191142589e+0', '2.4838816191142589'); + T('1e+1', '10'); + T('1.32118e+2', '132.118'); + T('3.167368488391197862244748797056311701e+1', '31.6736848839119786224474879705631170100'); + T('1.2923240005675836581430542022e+7', '12923240.005675836581430542022'); + T('2.45198799455822803503200760843340001104401687715e+1', '24.5198799455822803503200760843340001104401687715'); + T('5.017419011122159795604649952660143561601682847055e+9', '5017419011.122159795604649952660143561601682847055'); + T('1.528293223258e+9', '1528293223.258'); + T('3.36806306935615523082781617061106400210297708457466e+40', '33680630693561552308278161706110640021029.7708457466'); + T('2.24276e+4', '22427.6'); + T('1.452908e+5', '145290.8'); + T('1.730864210471288302007789478210233615399858e+21', '1730864210471288302007.789478210233615399858'); + T('1.98572237681530700377986658329680798e+32', '198572237681530700377986658329680.798'); + T('5.3625630032708e+2', '536.25630032708'); + T('1.279811707773498944767714003821019551877654490239992e+40', '12798117077734989447677140038210195518776.54490239992'); + T('1.13478473099428793759e+1', '11.3478473099428793759'); + T('3.8084703153428358911632007387325702215541573567757e+45', '3808470315342835891163200738732570221554157356.7757'); + T('1.63132182288401410656e+16', '16313218228840141.0656'); + T('1.2883403439965987126193143646e+8', '128834034.39965987126193143646'); + T('1.1337344058722593784502983693368481614e+2', '113.3734405872259378450298369336848161400'); + T('1.3810837466649418967673665311541682533151e+37', '13810837466649418967673665311541682533.151'); + T('3e+0', '3'); + T('1.77729190576542704583828487792283968438443988677e+27', '1777291905765427045838284877.92283968438443988677'); + T('1.75045497942020277400523024600228150483494020715374e+39', '1750454979420202774005230246002281504834.94020715374'); + T('9.4295017753469131679077273e+2', '942.95017753469131679077273'); + T('3.854570457401828825080672674176371617252885568525e+42', '3854570457401828825080672674176371617252885.568525'); + T('6.976781259116059962789065637569e+19', '69767812591160599627.89065637569'); + T('1.983953867384017752e+8', '198395386.7384017752'); + T('8.18621623940664383e+3', '8186.21623940664383'); + T('4.678566e+5', '467856.6'); + T('4.37454863655836062626765123683424e+5', '437454.863655836062626765123683424'); + T('7.6e+1', '76'); + T('1.356170189773197190024227714709209e+20', '135617018977319719002.42277147092090'); + T('2.524007970392697273821209419290910149e+32', '252400797039269727382120941929091.0149'); + T('2.2996e+1', '22.996'); + T('9.19536554437673037098591509995026767872538589562761e+45', '9195365544376730370985915099950267678725385895.62761'); + T('7.52981388027044914e+7', '75298138.8027044914'); + T('6.0233392042283e+4', '60233.3920422830'); + T('1.197371690422415645601906387900091876e+8', '119737169.0422415645601906387900091876'); + T('2.5e+0', '2.50'); + T('3.0513e+3', '3051.3'); + T('3.4378929513006354001139704e+1', '34.378929513006354001139704'); + T('2.7688798583863475634e+16', '27688798583863475.634'); + T('3.70733017769177e+3', '3707.33017769177'); + T('1.183552401830090152504539986275312716505e+23', '118355240183009015250453.9986275312716505'); + T('5.5532923555574e+0', '5.5532923555574'); + T('1.007309381e+2', '100.7309381'); + T('4.26e+0', '4.26'); + T('3.49082770706667347770412719905221035269e+36', '3490827707066673477704127199052210352.69'); + T('1.09667668559108738350612984427121459528827e+35', '109667668559108738350612984427121459.528827'); + T('6.7117017423837651934e+2', '671.17017423837651934'); + T('3.5513336510667288609743743e+5', '355133.36510667288609743743'); + T('2.733911637796059758003823848720999245e+12', '2733911637796.059758003823848720999245'); + T('4.7727335155560138656406364912e+21', '4772733515556013865640.6364912'); + T('7.1707742358130425165e+15', '7170774235813042.5165'); + T('1.2373e+0', '1.2373'); + T('1.95864917284678233803922075321436e+16', '19586491728467823.3803922075321436'); + T('1.39511686402859313308703279767446898138923566399e+34', '13951168640285931330870327976744689.8138923566399'); + T('5.45166767236394220015660379974682e+18', '5451667672363942200.15660379974682'); + T('5.7e+1', '57'); + T('2.008185112618419540343890697023120161916064586e+15', '2008185112618419.5403438906970231201619160645860'); + T('1.83547377703310193838625323613810597146659646688e+38', '183547377703310193838625323613810597146.659646688'); + T('1.86963380149e+6', '1869633.80149'); + T('9.0643926657221127599225e+0', '9.0643926657221127599225'); + T('3.387626848249516099010371969816649097243645e+35', '338762684824951609901037196981664909.7243645'); + T('2.38574e+4', '23857.4'); + T('4.854485927348228918413753679671472155071e+35', '485448592734822891841375367967147215.5071'); + T('1.1145412703080371165560398973334199e+32', '111454127030803711655603989733341.99'); + T('1.272285349955021228893214839127637825683e+4', '12722.85349955021228893214839127637825683'); + T('9.4315857521037576638711244118020078159357613e+2', '943.15857521037576638711244118020078159357613'); + T('2.130358009562539933673297313517219743395888826178226e+42', '2130358009562539933673297313517219743395888.826178226'); + T('1.788350524694006198162174980034358528e+19', '17883505246940061981.621749800343585280'); + T('1.26860370623505030126846090707878e+22', '12686037062350503012684.6090707878'); + T('2e+0', '2'); + T('7.97066672594e+7', '79706667.2594'); + T('2.0152e+2', '201.52'); + T('5.00637717193322215204e+6', '5006377.17193322215204'); + T('3.01590120278994390749132552334544583e+0', '3.01590120278994390749132552334544583'); + T('3.717693087339892916526272044454e+24', '3717693087339892916526272.044454'); + T('2.54829661524758873955898224553317416437e+3', '2548.29661524758873955898224553317416437'); + T('7.9072523913538861636033504135822e+1', '79.072523913538861636033504135822'); + T('1.866503037113138887457365815904225e+28', '18665030371131388874573658159.04225'); + T('1.3950429e+5', '139504.29'); + T('1.0207356655e+5', '102073.56655'); + T('3.2360853090691879699503619670118780802618636754e+9', '3236085309.0691879699503619670118780802618636754'); + T('5.47452697575793862266267385061152164e+19', '54745269757579386226.6267385061152164'); + T('6.1014855783682768e+15', '6101485578368276.8'); + T('5.31612911388139343797172e+0', '5.31612911388139343797172'); + T('5.91082171916830390736766017658603922e+26', '591082171916830390736766017.658603922'); + T('2.8172659641631766440010830065e+19', '28172659641631766440.010830065'); + T('4.1202100041496082281283466e+5', '412021.00041496082281283466'); + T('1.976856495373097710107538467325977284465274416e+19', '19768564953730977101.07538467325977284465274416'); + T('1.171504106314324317761655700166834e+32', '117150410631432431776165570016683.4'); + T('1.027537448230010431061775478e+10', '10275374482.30010431061775478'); + T('2.341237435879754661702897098867289936e+3', '2341.237435879754661702897098867289936'); + T('1.0588321785973619575e+15', '1058832178597361.9575'); + T('4.2335454826279360873889814771443479909805203261e+39', '4233545482627936087388981477144347990980.5203261'); + T('4.9e+1', '49'); + T('1.4101138066556191e+0', '1.4101138066556191'); + T('1.3899701029842433287999040786946262e+11', '138997010298.42433287999040786946262'); + T('2.14e+1', '21.4'); + T('2.575344258e+6', '2575344.258'); + T('1.3691520780202966734596879557205614425e+23', '136915207802029667345968.79557205614425'); + T('1.079727307987010933702e+19', '10797273079870109337.02'); + T('7.0961299409455830259875773863405485e+3', '7096.1299409455830259875773863405485'); + T('6.071949209634075943049707175059387500694121405338866e+45', '6071949209634075943049707175059387500694121405.338866'); + T('9.688112361029101083207689619288615989e+17', '968811236102910108.3207689619288615989'); + T('2.80923460488873864236890941794609081552183193e+41', '280923460488873864236890941794609081552183.193'); + T('1.83294035069640418182259900657124e+15', '1832940350696404.181822599006571240'); + T('1.330407118626933239746930889885854606102e+7', '13304071.18626933239746930889885854606102'); + T('8.614745245083701401256805923197041044646493828616208e+22', '86147452450837014012568.05923197041044646493828616208'); + T('1.021162949761147474655069846e+15', '1021162949761147.474655069846'); + T('2.22124197e+6', '2221241.97'); + T('1.9269783432665189582619e+12', '1926978343266.5189582619'); + T('2.4458042e+3', '2445.8042'); + T('1.24442787448470619843211196913235e+6', '1244427.87448470619843211196913235'); + T('6.5795027200660039322532e+7', '65795027.200660039322532'); + T('2.124371034489911604376156663456697624832e+36', '2124371034489911604376156663456697624.832'); + T('4.7518554e+3', '4751.8554'); + T('5.577243873330495803e+5', '557724.3873330495803'); + T('1.4411990735775980636079874248393636e+28', '14411990735775980636079874248.393636'); + T('3.532984961283621176064142e+22', '35329849612836211760641.42'); + T('6.41099968454591750260016248126e+14', '641099968454591.750260016248126'); + T('1.876802099566385814736323517234163782171196608110171e+38', '187680209956638581473632351723416378217.1196608110171'); + T('2.712536235933694424272454724983924750851e+6', '2712536.235933694424272454724983924750851'); + T('1.819734474513556013e+8', '181973447.4513556013'); + T('3.0320484961616175305658133728e+14', '303204849616161.75305658133728'); + T('1.9739814652160018980576469874802639653674373e+38', '197398146521600189805764698748026396536.74373'); + T('6.0551922025938302e+10', '60551922025.938302'); + T('3.323596297e+8', '332359629.7'); + T('5.7458544961785021027335254905977754345607e+38', '574585449617850210273352549059777543456.07'); + T('3.43869507567190104395123310443283792e+2', '343.869507567190104395123310443283792'); + T('3.964855738823341944355183015e+26', '396485573882334194435518301.5'); + T('4.75631864588339215e+12', '4756318645883.39215'); + T('3.1e+1', '31'); + T('3.750923398533815812530175e+17', '375092339853381581.2530175'); + T('1.25649942741256e+2', '125.649942741256'); + T('5.4854980319307537893979503491381982942042465844747093e+45', '5485498031930753789397950349138198294204246584.4747093'); + T('1.2940661791311373e+14', '129406617913113.73'); + T('2.90385571775480031587051447549374193061077e+10', '29038557177.5480031587051447549374193061077'); + T('9.1040729817423482924856979976434906087350486636207e+3', '9104.0729817423482924856979976434906087350486636207'); + T('1.57834489e+4', '15783.4489'); + T('2.319e+2', '231.9'); + T('5.522835788261589143141105742945478589362e+16', '55228357882615891.43141105742945478589362'); + T('8.7417851321101080306727e+15', '8741785132110108.0306727'); + T('9.96e+0', '9.96'); + T('1.343046943929639e+14', '134304694392963.9'); + T('2.21577825581227700070639623743724540952019026803e+0', '2.21577825581227700070639623743724540952019026803'); + T('5.64651860171575748936148456309414e+12', '5646518601715.75748936148456309414'); + T('2.71790519140131463205484467292975145e+33', '2717905191401314632054844672929751.450'); + T('2.46128778261687122384096383441327463273586448997789422e+8', '246128778.261687122384096383441327463273586448997789422'); + T('1.51e+0', '1.510'); + T('1.34417538839677e+6', '1344175.38839677'); + T('1.1967386179518011766805527782003e+0', '1.1967386179518011766805527782003'); + T('3.1240079864434111687577043352352970435153e+8', '312400798.64434111687577043352352970435153'); + T('3.125225939e+3', '3125.2259390'); + T('2.6130649e+4', '26130.649'); + T('6.3203802234999588e+14', '632038022349995.88'); + T('1.300191903723243249151204409158028743867e+5', '130019.1903723243249151204409158028743867'); + T('1.5457655328224382807201057293747835e+28', '15457655328224382807201057293.747835'); + T('2.09985076272906724e+4', '20998.50762729067240'); + T('2.2982784786e+6', '2298278.4786'); + T('2.73013672764e+2', '273.013672764'); + T('7.15593e+3', '7155.93'); + T('1.05530065668194919764462354032281e+20', '105530065668194919764.462354032281'); + T('7.067238e+5', '706723.8'); + T('7.101666481976457556024951459e+20', '710166648197645755602.49514590'); + T('1.98927384634532163e+13', '19892738463453.2163'); + T('9.29554688795640972981057180708607820032179861e+37', '92955468879564097298105718070860782003.2179861'); + T('6.357e+2', '635.7'); + T('3.840652373682260866164588121591718905795553491603e+8', '384065237.3682260866164588121591718905795553491603'); + T('9.648833805019588496096876819771292813546e+29', '964883380501958849609687681977.1292813546'); + T('1.01396650233101861694092927e+7', '10139665.0233101861694092927'); + T('1.1003348820123809214388166064277331414286102008e+3', '1100.3348820123809214388166064277331414286102008'); + T('2.36753216678948394164594831443879485957e+22', '23675321667894839416459.4831443879485957'); + T('4.793420545453058844039438100377715257448e+3', '4793.420545453058844039438100377715257448'); + T('2.8594271318287473088601837035675887941e+16', '28594271318287473.08860183703567588794100'); + T('1.6206370599062305392884719395678561e+31', '16206370599062305392884719395678.561'); + T('8.37074216450166132786697142264216365e+10', '83707421645.0166132786697142264216365'); + T('5.72070708e+6', '5720707.08'); + T('3.44337507384153235321301316699932527121036236885e+7', '34433750.7384153235321301316699932527121036236885'); + T('5.1e+1', '51'); + T('2.1015822918024812834120182488777123107013633378167186e+42', '2101582291802481283412018248877712310701363.3378167186'); + T('1.6372374238765434156758128e+15', '1637237423876543.4156758128'); + T('3.3419685364707547838979720464860359274118133481936e+14', '334196853647075.47838979720464860359274118133481936'); + T('2.8068807310597786792e+3', '2806.8807310597786792'); + T('4.845691098565776387667111068909874902599225606796909e+22', '48456910985657763876671.11068909874902599225606796909'); + T('4.63492511826172e+7', '46349251.1826172'); + T('8.25120492e+0', '8.25120492'); + T('2.5871391624943067662520803430464711250480700861462709e+13', '25871391624943.067662520803430464711250480700861462709'); + T('6.862831873483024223892481752e+21', '6862831873483024223892.4817520'); + T('4.270995713570409133606448268988455e+6', '4270995.713570409133606448268988455'); + T('3.21689066758930720484611614541085683569991722e+1', '32.1689066758930720484611614541085683569991722'); + T('4.2006919228915e+6', '4200691.9228915'); + T('2.111647930356982460265657710379876346e+34', '21116479303569824602656577103798763.46'); + T('4.87551174669e+5', '487551.174669'); + T('1.5091257783488078659575278297164846061663847e+26', '150912577834880786595752782.97164846061663847'); + T('1.237701316659693172445623860334e+1', '12.37701316659693172445623860334'); + T('5.3635904e+4', '53635.904'); + T('1.5977967842379292197961047064611986628e+22', '15977967842379292197961.047064611986628'); + T('6.834482866e+0', '6.8344828660'); + T('3.9109e+3', '3910.9'); + T('2.05461117535930705870869638710707996175293568e+5', '205461.117535930705870869638710707996175293568'); + T('1.2070553345143881176541757184e+18', '1207055334514388117.6541757184'); + T('9.04753411072173104408842163075173270844e+2', '904.753411072173104408842163075173270844'); + T('3.639101145152501183326810611536036936191190074e+10', '36391011451.525011833268106115360369361911900740'); + T('1.994669617516385887919849012130839536463335664239342e+50', '199466961751638588791984901213083953646333566423934.2'); + T('9.7856070170986006874778e+3', '9785.6070170986006874778'); + T('6.1871253720389630778712195614969724340856119729e+35', '618712537203896307787121956149697243.40856119729'); + T('1.208e+1', '12.08'); + T('1.198080560663539944762503564196454e+22', '11980805606635399447625.03564196454'); + T('2.5328238533704762297890589157e+22', '25328238533704762297890.5891570'); + T('5.552e+2', '555.2'); + T('2.01773928527273821442e+12', '2017739285272.738214420'); + T('7.1036358731897125539910962e+19', '71036358731897125539.910962'); + T('3.01168351390557005880750701501256409e+28', '30116835139055700588075070150.1256409'); + T('8.873816195265370349563768092711378467e+0', '8.873816195265370349563768092711378467'); + T('5.31989959593655063323434328335073160690174981170061e+33', '5319899595936550633234343283350731.60690174981170061'); + T('1.170061672875437e+9', '1170061672.875437'); + T('2.631e+0', '2.631'); + T('6.992802197718685e+6', '6992802.197718685'); + T('6.4873437617951852808027501577341488220457588954e+3', '6487.3437617951852808027501577341488220457588954'); + T('4.1846611240468792953070738254513e+26', '418466112404687929530707382.54513'); + T('9.65827406708491826272070488217543356756570950537e+5', '965827.406708491826272070488217543356756570950537'); + T('2.680770183874090982680392187869e+13', '26807701838740.909826803921878690'); + T('6.7565808330233111784457537072905e+7', '67565808.330233111784457537072905'); + T('2.38408874905822388315809187608e+17', '238408874905822388.315809187608'); + T('2.447793231118383053396286312152e+27', '2447793231118383053396286312.152'); + T('4.412e+0', '4.412'); + T('6.9222338533800975058347547493064339259e+10', '69222338533.800975058347547493064339259'); + T('1.72125107835943e+12', '1721251078359.4300'); + T('6.607121e+4', '66071.21'); + T('7.03864465898721081635229140790621289565513e+24', '7038644658987210816352291.40790621289565513'); + T('5.7060362541741681216530676958032280095247281014555554e+31', '57060362541741681216530676958032.280095247281014555554'); + T('2.7482039096119173840576395905241256e+28', '27482039096119173840576395905.241256'); + T('6.4362e+2', '643.62'); + T('1.72406543968787e+12', '1724065439687.87'); + T('3.7500096080724676535769717e+8', '375000960.80724676535769717'); + T('3.3903249492445e+4', '33903.249492445'); + T('3.985710962147295694116665218405340482945689e+6', '3985710.962147295694116665218405340482945689'); + T('5.9597233999e+2', '595.972339990'); + T('5.065730949256446196418568178865493e+9', '5065730949.256446196418568178865493'); + T('1.6265740670254208186e+10', '16265740670.254208186000'); + T('2.471885430096e+2', '247.1885430096'); + T('9.764510566491700832916679297457385114302061622402e+27', '9764510566491700832916679297.457385114302061622402'); + T('1.100445271296546289546e+20', '110044527129654628954.6'); + T('8.561528590365492629836625093938e+28', '85615285903654926298366250939.38'); + T('7.31603872157247934437172663482574448376720106618697e+0', '7.31603872157247934437172663482574448376720106618697'); + T('2.75299872462131924258265574524762989786191459317e+7', '27529987.2462131924258265574524762989786191459317'); + T('6.7303660756133592428732533499288191492268777722116295e+8', '673036607.56133592428732533499288191492268777722116295'); + T('5.44277296e+3', '5442.77296'); + T('1.727400264734055421671805513613990565159952e+17', '172740026473405542.16718055136139905651599520'); + T('1.410636835060372309578742278281108273215901435e+42', '1410636835060372309578742278281108273215901.435'); + T('4.92125270107294889416151811122942461554e+6', '4921252.70107294889416151811122942461554'); + T('8.263574210550744338917479e+4', '82635.74210550744338917479'); + T('3.301295895927052871052e+18', '3301295895927052871.052'); + T('2.8345346500631739e+9', '2834534650.0631739'); + T('2.18804350994050349e+5', '218804.350994050349'); + T('3.383e+2', '338.30'); + T('7.581461444218101096345865e+3', '7581.461444218101096345865'); + T('1.584289425751937525462e+15', '1584289425751937.525462'); + T('1.202636592001646399174824119297846262e+35', '120263659200164639917482411929784626.2'); + T('1.72579256998649794e+15', '1725792569986497.94'); + T('1.109e+0', '1.109'); + T('6.40345690864260982946869972537190219e+32', '640345690864260982946869972537190.219'); + T('7.5479229773185178963182361773e+8', '754792297.73185178963182361773'); + T('7.78534635586647281e+15', '7785346355866472.81'); + T('4.5177508859669314863310078725e+4', '45177.508859669314863310078725'); + T('8.488973363671775235458481e+7', '84889733.63671775235458481'); + T('4e+0', '4'); + T('2.160257894346090658681225233774014977725364e+11', '216025789434.6090658681225233774014977725364'); + T('1.607e+1', '16.07'); + T('2.0206643483788145768022873735045719015739162865885754e+19', '20206643483788145768.022873735045719015739162865885754'); + T('1e+0', '1'); + T('6.086027486877e+4', '60860.27486877'); + T('6.49464610960956342354353921e+18', '6494646109609563423.5435392100'); + T('9.043087147437339975894215149e+5', '904308.7147437339975894215149'); + T('9.1415795e+4', '91415.795'); + T('1.27325e+3', '1273.25'); + T('1.1457620373836988522455309158001309e+23', '114576203738369885224553.09158001309'); + T('3.5258358268876488e+3', '3525.8358268876488'); + T('5.903854119252757788054640537784867975213379818757043e+12', '5903854119252.757788054640537784867975213379818757043'); + T('2.85971614953528217489857558639088593436284e+10', '28597161495.352821748985755863908859343628400'); + T('6.32147605459582535823869726726906892032424730199715e+12', '6321476054595.82535823869726726906892032424730199715'); + T('1.66883e+3', '1668.83'); + T('8.77804543701627148053590314981878177298945834797e+34', '87780454370162714805359031498187817.7298945834797'); + T('1.12758900853879813587345336618836e+24', '1127589008538798135873453.366188360'); + T('2.650452875488521637e+15', '2650452875488521.637'); + T('9.81e+1', '98.1'); + T('9.4897220794023859948771e+7', '94897220.794023859948771'); + T('8.2072647415486658112286228544358927e+27', '8207264741548665811228622854.4358927'); + T('1.2676e+1', '12.676'); + T('2.6048528862310648794425199635976449765151357e+40', '26048528862310648794425199635976449765151.357'); + T('1e+0', '1'); + T('2.2e+1', '22'); + T('1.3672902326585293252722797324062e+4', '13672.902326585293252722797324062'); + T('8.2594112194437e+4', '82594.112194437'); + T('0e+0', '0'); + T('1.21895563609362455802176301e+3', '1218.95563609362455802176301'); + T('3.7463929411575183690242615828695666e+19', '37463929411575183690.242615828695666'); + T('3.28403622335683751121762619033739817557846187135037e+37', '32840362233568375112176261903373981755.7846187135037'); + T('7.0543560548522121622953708263633228563e+22', '70543560548522121622953.708263633228563'); + T('1.739819e+3', '1739.819'); + T('2.15324060127001207725970506357881e+19', '21532406012700120772.5970506357881'); + T('2.373532121822929762731612214095513784533409e+29', '237353212182292976273161221409.5513784533409'); + T('4.5883026736677354807679611737881799804e+16', '45883026736677354.807679611737881799804'); + T('2.5996714820346689325468319633061e+21', '2599671482034668932546.8319633061'); + T('8.22641928e+6', '8226419.280'); + T('2.56006014528479284199702229871263269e+20', '256006014528479284199.702229871263269'); + T('4.301260132991159779386275268219519443685e+24', '4301260132991159779386275.268219519443685'); + T('1.052721790360165649330888881e+22', '10527217903601656493308.88881'); + T('6.85257703973809064426443728e+0', '6.85257703973809064426443728'); + T('1.341206836e+5', '134120.6836'); + T('1.293696083809745995580141432072678134217648017629e+25', '12936960838097459955801414.32072678134217648017629'); + T('9.81886611183e+9', '9818866111.83'); + T('1.3e+1', '13'); + T('2.185212134168411755342025405260683400574952243371e+1', '21.8521213416841175534202540526068340057495224337100'); + T('5.09812942277266e+1', '50.9812942277266'); + T('1.15841228150473459450904593187073359993e+37', '11584122815047345945090459318707335999.3'); + T('2.946408e+1', '29.46408'); + T('7.8843253757257e+6', '7884325.3757257'); + T('4.149829532631829e+7', '41498295.32631829'); + T('9.76844406944663415436782518894675931581135161845733e+46', '97684440694466341543678251889467593158113516184.5733'); + T('1.320634109357604978481e+7', '13206341.09357604978481'); + T('1.2300117044692162331376535732386421937e+8', '123001170.44692162331376535732386421937'); + T('1.79343822239530391558796001578394154846951511735e+42', '1793438222395303915587960015783941548469515.11735'); + T('3.46227335968923941657647562338569e+7', '34622733.5968923941657647562338569'); + T('3.6081901133629252234652167e+18', '3608190113362925223.4652167'); + T('3.41769614577210353834283168068494e+24', '3417696145772103538342831.68068494'); + T('1.036693895e+8', '103669389.5'); + T('9.840862048026534392868878603161623504069221701e+27', '9840862048026534392868878603.161623504069221701'); + T('2.56437211238605e+10', '25643721123.86050'); + T('2.645333616435501e+6', '2645333.616435501'); + T('3.75834254646606787747061360998e+1', '37.5834254646606787747061360998'); + T('1.21582101247e+6', '1215821.01247'); + T('5.43e+1', '54.3'); + T('3.1461380403028457753654142032015e+27', '3146138040302845775365414203.2015'); + T('2.73039e+4', '27303.9'); + T('3.349112077000398203735762417e+25', '33491120770003982037357624.170'); + T('2.293912475527946909960963698602754526495697363e+31', '22939124755279469099609636986027.54526495697363'); + T('7.800578368e+8', '780057836.8'); + T('3.503304265046835170500513083432983735273e+28', '35033042650468351705005130834.32983735273'); + T('6.521027589563589728e+9', '6521027589.563589728'); + T('1.26604818273232e+3', '1266.04818273232'); + T('4.5844253800756959854340115e+7', '45844253.800756959854340115'); + T('2.5103887704609158215979351198183e+20', '251038877046091582159.79351198183'); + T('6.5170765018089001398157674630438543e+17', '651707650180890013.98157674630438543'); + T('7.85679659655762637941070216699747e+18', '7856796596557626379.41070216699747'); + T('6.55113755834849587145e+18', '6551137558348495871.45'); + T('1.37856413555592382324487860882977704999616e+32', '137856413555592382324487860882977.704999616'); + T('7.51530486314140193e+5', '751530.486314140193'); + T('1.3712642461229590011e+7', '13712642.4612295900110'); + T('8.945222111405724e+2', '894.5222111405724'); + T('1.74501389497524149414213254563953197394499747444317e+44', '174501389497524149414213254563953197394499747.444317'); + T('7.1583294041845987824307132e+11', '715832940418.45987824307132'); + T('1.282007923703783860923747442697572540049e+13', '12820079237037.83860923747442697572540049'); + T('5.660625174793381639446229222e+11', '566062517479.3381639446229222'); + T('2.094745267e+4', '20947.45267'); + T('8.4497877437844686621097450218313191175e+13', '84497877437844.6866210974502183131911750'); + T('1.7e+1', '17'); + T('1.707217105197425488000493702652714920318758323999364e+23', '170721710519742548800049.3702652714920318758323999364'); + T('2.5487434814078948112667918801256335353406914111636153e+36', '2548743481407894811266791880125633535.3406914111636153'); + T('7.975944255792483246376368330364e+8', '797594425.5792483246376368330364'); + T('1.1038710051127692465453332862048e+20', '110387100511276924654.53332862048'); + T('2.0214122542287381656860062564183697682e+13', '20214122542287.381656860062564183697682'); + T('7.853012025112e+4', '78530.12025112'); + T('7.97061651146928e+3', '7970.61651146928'); + T('1.5712956919727392305361179349388e+10', '15712956919.727392305361179349388'); + T('8.2480059e+3', '8248.0059'); + T('2.71929146422591231877279340940781443961397491e+19', '27192914642259123187.7279340940781443961397491'); + T('2.131e+2', '213.10'); + T('5.53443299017925367e+6', '5534432.99017925367'); + T('9.0599636453e+8', '905996364.53'); + T('2.86841011915001378943e+0', '2.86841011915001378943'); + T('3.50691916034642635201767965866239485795145676493e+28', '35069191603464263520176796586.6239485795145676493'); + T('1.20268235416561427028396813141142129291e+18', '1202682354165614270.283968131411421292910'); + T('4.8878729e+4', '48878.7290'); + T('9.04344910891e+4', '90434.4910891'); + T('3.87232843764031e+2', '387.232843764031'); + T('2.246212201353343e+11', '224621220135.33430'); + T('4.92916234816086643529027167741689023e+4', '49291.6234816086643529027167741689023'); + T('2.1773818234639052045922630496e+22', '21773818234639052045922.630496'); + T('4.78705362683815125848e+0', '4.787053626838151258480'); + T('2.700762078698436846755198719005e+28', '27007620786984368467551987190.05'); + T('3.04897901998664513240359358574664525651334171e+36', '3048979019986645132403593585746645256.51334171'); + T('3.807300704307638993582e+18', '3807300704307638993.582'); + T('7.9846840795076707340124614425632613353204e+3', '7984.6840795076707340124614425632613353204'); + T('6.69918558928e+4', '66991.8558928'); + T('5.11e+1', '51.1'); + T('1.8e+1', '18'); + T('2.629676971e+2', '262.9676971'); + T('6.8402048967767212280354493672372347369800788279670097e+39', '6840204896776721228035449367237234736980.0788279670097'); + T('4.684145127602661593941009299096573092581e+21', '4684145127602661593941.009299096573092581'); + T('1.3010133600355313564757759338788842e+18', '1301013360035531356.4757759338788842'); + T('1.58527974113934732993372979240170059e+30', '1585279741139347329933729792401.70059'); + T('1.8249338722142728063286e+2', '182.49338722142728063286'); + T('1.5941e+0', '1.59410'); + T('2.0337546838170082473539926326926478252219475e+29', '203375468381700824735399263269.26478252219475'); + T('4.626173e+3', '4626.173'); + T('6.04857e+0', '6.04857'); + T('9.55039030589038069713466331e+0', '9.55039030589038069713466331'); + T('3.13977842e+6', '3139778.42'); + T('4.4046554138751e+10', '44046554138.751'); + T('2.27133088062335544441002965096e+25', '22713308806233554444100296.5096'); + T('1.72895143e+4', '17289.5143'); + T('2.59665963383099309886519729836757e+20', '259665963383099309886.5197298367570'); + T('5.42804375404301025317704270939778493719619031067122726e+24', '5428043754043010253177042.70939778493719619031067122726'); + T('4.0526054186532354119711729303068171063825508e+2', '405.26054186532354119711729303068171063825508'); + T('1.26960267394273418410687782475849e+9', '1269602673.94273418410687782475849'); + T('5.657206212494798707700546288522044895183104747814298e+7', '56572062.12494798707700546288522044895183104747814298'); + T('4.80834664047405196104320584899449259286e+21', '4808346640474051961043.20584899449259286'); + T('5.6639294733687553228095e+12', '5663929473368.7553228095'); + T('3.08469899797006019074738182718775120203832280411e+44', '308469899797006019074738182718775120203832280.4110'); + T('6.7324018330891115163882850963905830707247414517739e+20', '673240183308911151638.82850963905830707247414517739'); + T('7.8e+1', '78'); + T('3.7511576e+4', '37511.576'); + T('4.9744737445922007872559411117007e+20', '497447374459220078725.59411117007'); + T('1.4264855114407053894401398660016825255242638071603e+2', '142.64855114407053894401398660016825255242638071603'); + T('1.7972e+1', '17.972'); + T('1.08223075909551421423442320791403363148864e+12', '1082230759095.51421423442320791403363148864'); + T('1.27992032328728568e+16', '12799203232872856.8'); + T('3.23410998756876789482263723951851692122375679e+9', '3234109987.56876789482263723951851692122375679'); + T('8.309058187826413886051933894555524364e+5', '830905.8187826413886051933894555524364'); + T('5.9126904485324084868266487306831291316268437628598e+40', '59126904485324084868266487306831291316268.437628598'); + T('3.579918283412251816470339246643e+16', '35799182834122518.16470339246643'); + T('8.292403288e+1', '82.92403288'); + T('7.39431e+2', '739.431'); + T('3.880259e+2', '388.0259'); + T('8.356612898392420429137009991722851e+18', '8356612898392420429.137009991722851'); + T('9.45261313e+6', '9452613.13'); + T('3.3127850701711548546e+12', '3312785070171.1548546'); + T('7.883085682938156731330453228115e+0', '7.883085682938156731330453228115'); + T('7.8019561298380079335847245119645e+18', '7801956129838007933.5847245119645'); + T('1.162986351331516344668182075630641387e+5', '116298.63513315163446681820756306413870'); + T('1.28721291829552168e+9', '1287212918.29552168'); + T('6.1228832015e+5', '612288.32015'); + T('7.093619563532718270358988194610140484e+4', '70936.19563532718270358988194610140484'); + T('2.301304548870898223195731e+19', '23013045488708982231.95731'); + T('7.8447233503822258690539142204913891e+33', '7844723350382225869053914220491389.1'); + T('1.0090353662689425563590122399240645713114036952885e+26', '100903536626894255635901223.99240645713114036952885'); + T('2.6e+1', '26'); + T('2.015599e+5', '201559.9'); + T('3.1885351403871521971462599368214857856505297484e+33', '3188535140387152197146259936821485.78565052974840'); + T('3.6914534995202995808748962e+15', '3691453499520299.5808748962'); + T('1.2184696326401127654851812133097e+7', '12184696.326401127654851812133097'); + T('1.320231321916575882279815969200269836e+33', '1320231321916575882279815969200269.836'); + T('6.9618612891393774e+15', '6961861289139377.4'); + T('1.413827890310425450368036252350406468114295965313e+11', '141382789031.0425450368036252350406468114295965313'); + T('7.2883e+0', '7.2883'); + T('4.39128379250644938491985214e+17', '439128379250644938.491985214'); + T('4.08749008923147560205987e+12', '4087490089231.47560205987'); + T('1.2963755286285698528172931273502071438656e+36', '1296375528628569852817293127350207143.8656'); + T('1.748593351151123699414e+1', '17.48593351151123699414'); + T('9.734881140813067568986787719510123722831153669e+35', '973488114081306756898678771951012372.2831153669'); + T('2.32721108706388120897763e+11', '232721108706.388120897763'); + T('2.362273992041095475822632722018109548e+22', '23622739920410954758226.327220181095480'); + T('9.127306952822127691560865985866475e+18', '9127306952822127691.560865985866475'); + T('2.4e+1', '24'); + T('9.33725589231422920537799340863789387113892e+31', '93372558923142292053779934086378.9387113892'); + T('2.8683466985317806508353476e+6', '2868346.6985317806508353476'); + T('1.96167065035164685305509057685021959865228913867e+40', '19616706503516468530550905768502195986522.8913867'); + T('2.1513e+3', '2151.3'); + T('3.65316922559843117188159177065637844e+19', '36531692255984311718.8159177065637844'); + T('5.87971958699076454900383524e+21', '5879719586990764549003.835240'); + T('1.29414973913652368531805363331786105e+14', '129414973913652.368531805363331786105'); + T('1.68007422270052611738598e+22', '16800742227005261173859.8'); + T('2.9465419082779898714713969973e+4', '29465.4190827798987147139699730'); + T('2.865456717594117060964538744726484002e+28', '28654567175941170609645387447.26484002'); + T('1.2781496e+0', '1.2781496'); + T('5.395903069e+4', '53959.03069'); + T('2.084656696443025813e+12', '2084656696443.025813'); + T('7.54671420639507228408101673007042651462774881888e+46', '75467142063950722840810167300704265146277488188.8'); + T('1.436685520447262044600029e+14', '143668552044726.2044600029'); + T('6.9e+1', '69'); + T('8.921e+2', '892.10'); + T('2.51196408e+4', '25119.6408'); + T('4.2502325992166027236666111862782e+15', '4250232599216602.7236666111862782'); + T('1.48181688637265610577148846528720697801886e+17', '148181688637265610.577148846528720697801886'); + T('6.578849006577789439801702e+0', '6.578849006577789439801702'); + T('4.346905625146927213132990652e+22', '43469056251469272131329.90652'); + T('5.5037893e+0', '5.5037893'); + T('2.47731675267438120023934691987e+15', '2477316752674381.20023934691987'); + T('3.37487366652276710575333974697197457e+9', '3374873666.52276710575333974697197457'); + T('1.0385387059229329627650733271e+0', '1.0385387059229329627650733271'); + T('9.83004944893186643985967600066862369294062e+17', '983004944893186643.985967600066862369294062'); + T('4.24581658127100743607231740518633563667839856744e+26', '424581658127100743607231740.518633563667839856744'); + T('3.14222253457223322124561584676953981561133e+2', '314.222253457223322124561584676953981561133'); + T('1.1553833141891499623566322265502695096447390786748e+48', '1155383314189149962356632226550269509644739078674.8'); + T('5.2811e+1', '52.811'); + T('9.925202445922857021945001443270353221818473047344e+2', '992.5202445922857021945001443270353221818473047344'); + T('1.5758941e+4', '15758.9410'); + T('6.6630010328564980059488916358767e+30', '6663001032856498005948891635876.7'); + T('1.49898377473153728100588907982263779724221092732531e+44', '149898377473153728100588907982263779724221092.732531'); + T('4.175238908185616536855e+20', '417523890818561653685.5'); + T('1.192838736272799853174021036238e+21', '1192838736272799853174.021036238'); + T('1.145038e+3', '1145.038'); + T('4.0973786626728889384598402998014750474268e+9', '4097378662.6728889384598402998014750474268'); + T('5.5038104e+4', '55038.104'); + T('6.83895535917805849194871290958068199407518e+2', '683.895535917805849194871290958068199407518'); + T('2.9716066182e+0', '2.9716066182'); + T('1e+0', '1'); + T('1.78063428481384259205331358231117935e+0', '1.780634284813842592053313582311179350'); + T('6.277714976103425712837719e+22', '62777149761034257128377.1900'); + T('1.37376909692642287134486582232200547809845780076e+26', '137376909692642287134486582.232200547809845780076'); + T('7.0255659498942180908195e+16', '70255659498942180.908195'); + T('1.36758412477e+6', '1367584.12477'); + T('2.8993016541323392639291954727329719281958174e+23', '289930165413233926392919.54727329719281958174'); + T('2.44e+0', '2.44'); + T('5.39870374073212675286058196342904027304008232e+40', '53987037407321267528605819634290402730400.8232'); + T('6.4507160654825e+9', '6450716065.4825'); + T('1.21664e+3', '1216.64'); + T('3.13108416362400780440861428855476299376486503e+0', '3.13108416362400780440861428855476299376486503'); + T('7.2960499529336221198242592384915903149558006256202995e+17', '729604995293362211.98242592384915903149558006256202995'); + T('5.67239328846178836850536139916737284448973e+0', '5.67239328846178836850536139916737284448973'); + T('7.20020305957519743064e+3', '7200.203059575197430640'); + T('1.85115423780064073715032545790701546649748120114e+27', '1851154237800640737150325457.90701546649748120114'); + T('1.25021250836778893386687012660759710902e+21', '1250212508367788933866.87012660759710902'); + T('2.3323707491301665555664068537483355865980611e+25', '23323707491301665555664068.5374833558659806110'); + T('2.5088131581298507401113299236e+4', '25088.131581298507401113299236'); + T('9.612326850563943155774866e+17', '961232685056394315.5774866'); + T('1.54114517176248297154289225338049499367447824e+22', '15411451717624829715428.9225338049499367447824'); + T('5.22e+0', '5.22'); + T('4.04698305476309533783897e+21', '4046983054763095337838.97'); + T('2.620876536774240989563272117908814902188002596311e+24', '2620876536774240989563272.117908814902188002596311'); + T('1.7290754650750439926458970782158e+10', '17290754650.750439926458970782158'); + T('8.570789332248e+6', '8570789.332248'); + T('1.21e+1', '12.1'); + T('9.749134061639126502181192178140679940393318673720443e+45', '9749134061639126502181192178140679940393318673.720443'); + T('1.26878e+5', '126878.0'); + T('1.2391599841950849289559651456348e+9', '1239159984.1950849289559651456348'); + T('1.72220118427662724614289256133342842086e+22', '17222011842766272461428.9256133342842086'); + T('1.512063585971680294584184272035496e+15', '1512063585971680.294584184272035496'); + + log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); + return [passed, total];; +})(this.BigNumber); +if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt new file mode 100644 index 0000000..425556c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt @@ -0,0 +1,45 @@ +Some of the test cases in this directory are taken from the v8 source code + for which the licence is below. + +2008: toPrecision.js + + +2010: abs.js pow.js + + +2011: ceil.js floor.js round.js + + +Licence +======= + + Copyright 2008/2010/2011 the V8 project authors. All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.Readme.md.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.Readme.md.un~ new file mode 100644 index 0000000000000000000000000000000000000000..2b299d86c792acb36481b40e4f1b0b12df61cd03 GIT binary patch literal 12033 zcmeI&OK%fb6u|Kz3GZit6zBu4)JnEVVpl+b21RN_1rhj`|a7<&BBo#Ns=6qNe8)4T!PV0 z$*p&9SB6+Sl+6C&HW+jx1FM*9{3nsy_EmIGTOpNWVfOO4H%anAPJOl4y3vcl>!H2VnnKbS6r=@y3Ef(C&Shdk8l!~P*PSgwf-9{JDvm~M@ zRR|d(dMZzJY}2BZO3&1HuitSzqp7b(@KH=Z%QL;SdDE-CUe0up+^0SS$7yooY(fmU`WU_`8$SCeZ;a0 z7(urGor!e5ETKlBo6Mv8)EGHEN^6}~dwIgFKUZ?ihuBfIe`q3DAQuIxLdX!oZ~6sk zJl}kUjRn`8|2R$bj;Z}cmVUMW(uta?GC^iV^P1MAk&xsxltbxWBe#O@r$0~lpFVt! z%j5&Q-Z3_M`Lcu>#p`;W*FIzB>y1v@?tuX`tab-Hz)+5dONtOQ1nfp0*ue~}QWVn(tZ*Y4*D}Vdj^bwNAa&>|0SRnWyD)d1b}f>W1V);LHo#h_=2G zTO2vNIOG173%R13pONu0^J4qV+75MXX)7Q6pbgH=&9Q9np7mTLk#(%j`g>}2Eq^D$ zQ+m74}UmOnu=W=i(`@sisM*i_7M5b=h=UevOeeTsfwT V=5f9Apx!jq>_%L9eD$AS{|63SB|-oI literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.index.js.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.index.js.un~ new file mode 100644 index 0000000000000000000000000000000000000000..8d1fbd965f3090cacc8e0b28952cdfe48e8f47f3 GIT binary patch literal 12887 zcmeI3&u<$=6vsC|+9v#L3FTLnXlX)YtHPl`)k9PS;>R%;M1)kT$Z|HSkz=*uD_r6W@cyY z#ro>?x0#O^qYM)Y0C_g{g9t*<{598vV&6R!JA zdQNrvBSA!+g`j+C5(%QNqog{#?3)4((dU9_sDp@(RdC5YCa{c}vw|#(tboZVGmxUg zbj3!J;<%5qc|;&NV9pM%EV2S3qs%~x4$+r85vlw(lE8A%Tmi^5;=+Jugc(e6Cnlr^ z!Tl}?hHRz+o{cYB9dbzxhzdA>Q&k3*J8)NRd?7su9^{MyO$SA4Y{b!Oj8@)&m_=O} z7*&=*I-Fu07HtAH7lpQ0{sLWMz^y4z6 zynnHkw%6jb@ydF$)~>gjrE+}PGlZE8n*K`R3BxCO9~h#-Ak8tnE)0jehs1kg2s5Tb zHF#zdUtp-R6wFa_+8+xRwM8vBhTqsYWcpJ1L3850Y8tQ98;OMAS|v@Y%ggoj%@3Nj z($bPEHLI&hdER$7B`qr}t@QP3?LsLFS*l&wx>nD{F+HwU+qDY>wfmqVZ%T8e%E?z- z&34*qG?KLZPUYRTnK|kCXdKs9;?mR7t{kUHdp&LHDdSFuwd}|RcR{XaX?*U~dD_j# zu^&gyb+r#1)bhsX*A4@1IO9X3$$Fsq)P!OBJ^W;nSL=t->8P3j{?(WM@ zzbXTteQXC>)(-)v6QOU*gYzdFow^04IG=ZG^m|v+e{5(t5K#%F;mhVY_~V<4cH&TaI~`qvO7yGY0tv2@UE3SqOx17 zba`CeqI-|aZkG9>8ee$KB{lpc`$oYxRF;A{N~*f}hL-USDZ5SCzr{BW?Cu+}vE6bPe}MnvE~#;qT=_H=!5>he56j^Xo6~l@*Retu*v0(8 z$2u(ey__1HVSAj4z!nwyusm#MgzdrZSXZ_$=7@E9aIqc0+0zP8%Ck`a1;EVWLKYYS ztyiUJmIv(_8@9;Ky)oMr%*VrVEMv0PgIu3tfJ%OfK%Fx%W=}E#I?<%~i=A~*Rc2k6 zFKT&VYx5^zZdoT>xJg8)B!+8E^$!6?HkZvr}0=)+L*S${km#JYV%oTk*f|6p7a rbmJX#I+XGm=qCKeqx_hNpDY7 literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md new file mode 100644 index 0000000..60a7a5c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md @@ -0,0 +1,16 @@ +# require-all + +An easy way to require all files within a directory. + +## Usage + +```js +var controllers = require('require-all')({ + dirname: __dirname + '/controllers', + filter: /(.+Controller)\.js$/, +}); + +// controllers now is an object with references to all modules matching the filter +// for example: +// { HomeController: function HomeController() {...}, ...} +``` diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js new file mode 100644 index 0000000..71084ba --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js @@ -0,0 +1,25 @@ +var fs = require('fs'); + +module.exports = function requireAll(options) { + var files = fs.readdirSync(options.dirname); + var modules = {}; + + files.forEach(function(file) { + var filepath = options.dirname + '/' + file; + if (fs.statSync(filepath).isDirectory()) { + modules[file] = requireAll({ + dirname: filepath, + filter: options.filter + }); + + } else { + var match = file.match(options.filter); + if (!match) return; + + modules[match[1]] = require(filepath); + } + }); + + return modules; +}; + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json new file mode 100644 index 0000000..5bfb76f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json @@ -0,0 +1,27 @@ +{ + "author": { + "name": "Felix Geisendörfer", + "email": "felix@debuggable.com", + "url": "http://debuggable.com/" + }, + "name": "require-all", + "description": "An easy way to require all files within a directory.", + "version": "0.0.3", + "repository": { + "url": "" + }, + "main": "./index", + "engines": { + "node": "*" + }, + "dependencies": {}, + "devDependencies": {}, + "readme": "# require-all\n\nAn easy way to require all files within a directory.\n\n## Usage\n\n```js\nvar controllers = require('require-all')({\n dirname: __dirname + '/controllers',\n filter: /(.+Controller)\\.js$/,\n});\n\n// controllers now is an object with references to all modules matching the filter\n// for example:\n// { HomeController: function HomeController() {...}, ...}\n```\n", + "readmeFilename": "Readme.md", + "_id": "require-all@0.0.3", + "dist": { + "shasum": "9c3e77ac28b347034f187a4a8f031fcba125ed91" + }, + "_from": "require-all@0.0.3", + "_resolved": "https://registry.npmjs.org/require-all/-/require-all-0.0.3.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/.test.js.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/.test.js.un~ new file mode 100644 index 0000000000000000000000000000000000000000..51d49cd4c643cd21c5feb77daca2502c2c0f55d5 GIT binary patch literal 7066 zcmeI0&ubGw6vx-3ZR(F&Ma8x#KB0CK8iKxvk>DCI= zQjGES>%ZFYG-VWC=@$~ZMukU7>2I(ojVR*!KYL(&{o01YVHn@Rt&K}N7sXR)07Eo@ z6TBzdQ_!4WQ79YGu^L!mZyy&UMhP#pAazf&4Yc=bTMN?W$TAelL?a@g1e$|WZpC*U zE9bc7^g_|gjA(AcNgGt*hc76Jxrry5tfO#CghLRaCGH2eLt$>_qUD=)auS6yH4KxX zam0yNnysUdODb~7&4?5Ct5m5247!fcERar-Y~#cja!S+9D41S`1MDb&s+SA)E`>?$ zbE56XL^L>nN};a>5CQHm`f+B27g~@g;9l55yjatoH{+iry}lWA&pVAUC# z9XNtrA9OK0c%cP}!tTvZ?E1E1HG`m=`J-S4mHD9wmYt(VlOZ<$8SYIj5TEkQ*=q3%4nO6hM zEWdM%XxetFmN!iKbZ#(nGnbz6@6PycCDWhh=gH;F2v?BaqVHQ?HCM8%xvTTFqLWr; zvV?DSu^rbPCUdgrDZ?hwEz5COwM4gF&nXR4)vH-qs#R>{37*rrv$TvkbQ1ZsNq&*r zXL!=YN3ChQjFG-ot=g6HC>tI%v(g>o?wA=2<_{C`aV#*;7Lr8EsCeQ!2Vu$X;Ua?N z3}>q!-gpU%Tbit+EaA7|B^+Mo*!UAfYU>Z{W$Op3y`hN#BSHX)FWx@jgjOU9x_1g) zTX3|N)0zCt9^ZcZ$k37wKQL2gY&})*1Va^)arkMkG+RYs_&FSYa6JZ@_+rDE8=8Ml z;$SV|2z1zWM1U3c)GbJiQryyHUH7E+>H%#BcT1|xhk-8&W&76P>UR{D=eb_P?Gi}I zT@}oNVtwhvHDBq2vgq;sA-W%+*iH!3)aZ{|{9lM8*!7f4|X zCEgF=gjOU9#vkEaD*K^eJRz5aK>+>*w0JP;?GwI literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js new file mode 100644 index 0000000..355ce40 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js @@ -0,0 +1,4 @@ +exports.index = 1; +exports.show = 2; +exports.add = 3; +exports.edit = 4; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js new file mode 100644 index 0000000..8ac88c5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js @@ -0,0 +1 @@ +exports.yes = 'no'; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js new file mode 100644 index 0000000..aec8f24 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js @@ -0,0 +1,2 @@ +exports.index = 1; +exports.show = 'nothing' diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js new file mode 100644 index 0000000..cb1c2c0 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js @@ -0,0 +1 @@ +module.exports = 'bar'; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js new file mode 100644 index 0000000..b1d17c1 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js @@ -0,0 +1,2 @@ +exports.world = true; +exports.universe = 42; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ new file mode 100644 index 0000000000000000000000000000000000000000..0029e64db9e6ada3d9028ef1d32d47dc96acd0c0 GIT binary patch literal 1864 zcmWH`%$*;a=aT=Ffys3G>Z4|7_UZTwmNtC3kS}n|qg3|ed>{2Er6(9-WDmJAFfgzH zF=I7|0AdgT(I7!&%nXw7`w+a61tiPN5PtzA00c}B3QU5eKztq$?>`X0jRXmd0xE|9 zFgj$w(ZRs*RRU->Bxaxy3ginZC@2-DmXu`Xr8_EFDJVHA>6kWxBMzn#<{(g{fnsBI2At5$B`?jW?J=nCn1s1`-nj35;eqP$?x3$R1c;0%bU%-29Z%oK(Hkih}&2l41p0 Kg=*8r=c@pk5Kv_R literal 0 HcmV?d00001 diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json new file mode 100644 index 0000000..d2b5939 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json @@ -0,0 +1,4 @@ +{ + "settingA": "A", + "settingB": "B" +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js new file mode 100644 index 0000000..ec01c2c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js @@ -0,0 +1 @@ +module.exports = true; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js new file mode 100644 index 0000000..ec01c2c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js @@ -0,0 +1 @@ +module.exports = true; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js new file mode 100644 index 0000000..025af0d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js @@ -0,0 +1,38 @@ +var assert = require('assert'); +var requireAll = require('..'); + +var controllers = requireAll({ + dirname: __dirname + '/controllers', + filter: /(.+Controller)\.js$/ +}); + +assert.deepEqual(controllers, { + 'main-Controller': { + index: 1, + show: 2, + add: 3, + edit: 4 + }, + + 'other-Controller': { + index: 1, + show: 'nothing' + } +}); + + +if (process.version > 'v0.6.0') { + var mydir = requireAll({ + dirname: __dirname + '/mydir', + filter: /(.+)\.(js|json)$/ + }); + + assert.deepEqual(mydir, { + foo: 'bar', + hello: { world: true, universe: 42 }, + sub: { + config: { settingA: 'A', settingB: 'B' }, + yes: true + } + }); +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/package.json b/nodejs-mysql-tutorial/node_modules/mysql/package.json new file mode 100644 index 0000000..ea2c4dc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/package.json @@ -0,0 +1,42 @@ +{ + "author": { + "name": "Felix Geisendörfer", + "email": "felix@debuggable.com", + "url": "http://debuggable.com/" + }, + "name": "mysql", + "description": "A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed.", + "version": "2.0.0-alpha8", + "repository": { + "type": "git", + "url": "https://github.com/felixge/node-mysql" + }, + "main": "./index", + "scripts": { + "test": "make test" + }, + "engines": { + "node": "*" + }, + "dependencies": { + "require-all": "0.0.3", + "bignumber.js": "1.0.1" + }, + "devDependencies": { + "utest": "0.0.6", + "urun": "0.0.6", + "underscore": "1.3.1" + }, + "optionalDependencies": {}, + "readme": "# node-mysql\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-mysql.png)](http://travis-ci.org/felixge/node-mysql)\n\n## Install\n\n```bash\nnpm install mysql@2.0.0-alpha8\n```\n\nDespite the alpha tag, this is the recommended version for new applications.\nFor information about the previous 0.9.x releases, visit the [v0.9 branch][].\n\nSometimes I may also ask you to install the latest version from Github to check\nif a bugfix is working. In this case, please do:\n\n```\nnpm install felixge/node-mysql\n```\n\n[v0.9 branch]: https://github.com/felixge/node-mysql/tree/v0.9\n\n## Introduction\n\nThis is a node.js driver for mysql. It is written in JavaScript, does not\nrequire compiling, and is 100% MIT licensed.\n\nHere is an example on how to use it:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection({\n host : 'localhost',\n user : 'me',\n password : 'secret',\n});\n\nconnection.connect();\n\nconnection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {\n if (err) throw err;\n\n console.log('The solution is: ', rows[0].solution);\n});\n\nconnection.end();\n```\n\nFrom this example, you can learn the following:\n\n* Every method you invoke on a connection is queued and executed in sequence.\n* Closing the connection is done using `end()` which makes sure all remaining\n queries are executed before sending a quit packet to the mysql server.\n\n## Contributors\n\nThanks goes to the people who have contributed code to this module, see the\n[GitHub Contributors page][].\n\n[GitHub Contributors page]: https://github.com/felixge/node-mysql/graphs/contributors\n\nAdditionally I'd like to thank the following people:\n\n* [Andrey Hristov][] (Oracle) - for helping me with protocol questions.\n* [Ulf Wendel][] (Oracle) - for helping me with protocol questions.\n\n[Ulf Wendel]: http://blog.ulf-wendel.de/\n[Andrey Hristov]: http://andrey.hristov.com/\n\n## Sponsors\n\nThe following companies have supported this project financially, allowing me to\nspend more time on it (ordered by time of contribution):\n\n* [Transloadit](http://transloadit.com) (my startup, we do file uploading &\n video encoding as a service, check it out)\n* [Joyent](http://www.joyent.com/)\n* [pinkbike.com](http://pinkbike.com/)\n* [Holiday Extras](http://www.holidayextras.co.uk/) (they are [hiring](http://join.holidayextras.co.uk/vacancy/software-engineer/))\n* [Newscope](http://newscope.com/) (they are [hiring](http://www.newscope.com/stellenangebote))\n\nIf you are interested in sponsoring a day or more of my time, please\n[get in touch][].\n\n[get in touch]: http://felixge.de/#consulting\n\n## Community\n\nIf you'd like to discuss this module, or ask questions about it, please use one\nof the following:\n\n* **Mailing list**: https://groups.google.com/forum/#!forum/node-mysql\n* **IRC Channel**: #node.js (on freenode.net, I pay attention to any message\n including the term `mysql`)\n\n## Establishing connections\n\nThe recommended way to establish a connection is this:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection({\n host : 'example.org',\n user : 'bob',\n password : 'secret',\n});\n\nconnection.connect(function(err) {\n // connected! (unless `err` is set)\n});\n```\n\nHowever, a connection can also be implicitly established by invoking a query:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection(...);\n\nconnection.query('SELECT 1', function(err, rows) {\n // connected! (unless `err` is set)\n});\n```\n\nDepending on how you like to handle your errors, either method may be\nappropriate. Any type of connection error (handshake or network) is considered\na fatal error, see the [Error Handling](#error-handling) section for more\ninformation.\n\n## Connection options\n\nWhen establishing a connection, you can set the following options:\n\n* `host`: The hostname of the database you are connecting to. (Default:\n `localhost`)\n* `port`: The port number to connect to. (Default: `3306`)\n* `socketPath`: The path to a unix domain socket to connect to. When used `host`\n and `port` are ignored.\n* `user`: The MySQL user to authenticate as.\n* `password`: The password of that MySQL user.\n* `database`: Name of the database to use for this connection (Optional).\n* `charset`: The charset for the connection. (Default: `'UTF8_GENERAL_CI'`)\n* `timezone`: The timezone used to store local dates. (Default: `'local'`)\n* `insecureAuth`: Allow connecting to MySQL instances that ask for the old\n (insecure) authentication method. (Default: `false`)\n* `typeCast`: Determines if column values should be converted to native\n JavaScript types. (Default: `true`)\n* `queryFormat`: A custom query format function. See [Custom format](#custom-format).\n* `supportBigNumbers`: When dealing with big numbers (BIGINT and DECIMAL columns) in the database,\n you should enable this option (Default: `false`).\n* `bigNumberStrings`: Enabling both `supportBigNumbers` and `bigNumberStrings` forces big numbers\n (BIGINT and DECIMAL columns) to be always returned as JavaScript String objects (Default: `false`).\n Enabling `supportBigNumbers` but leaving `bigNumberStrings` disabled will return big numbers as String\n objects only when they cannot be accurately represented with [JavaScript Number objects] (http://ecma262-5.com/ELS5_HTML.htm#Section_8.5)\n (which happens when they exceed the [-2^53, +2^53] range), otherwise they will be returned as\n Number objects. This option is ignored if `supportBigNumbers` is disabled.\n* `debug`: Prints protocol details to stdout. (Default: `false`)\n* `multipleStatements`: Allow multiple mysql statements per query. Be careful\n with this, it exposes you to SQL injection attacks. (Default: `false`)\n* `flags`: List of connection flags to use other than the default ones. It is\n also possible to blacklist default ones. For more information, check [Connection Flags](#connection-flags).\n\nIn addition to passing these options as an object, you can also use a url\nstring. For example:\n\n```js\nvar connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');\n```\n\nNote: The query values are first attempted to be parsed as JSON, and if that\nfails assumed to be plaintext strings.\n\n## Terminating connections\n\nThere are two ways to end a connection. Terminating a connection gracefully is\ndone by calling the `end()` method:\n\n```js\nconnection.end(function(err) {\n // The connection is terminated now\n});\n```\n\nThis will make sure all previously enqueued queries are still before sending a\n`COM_QUIT` packet to the MySQL server. If a fatal error occurs before the\n`COM_QUIT` packet can be sent, an `err` argument will be provided to the\ncallback, but the connection will be terminated regardless of that.\n\nAn alternative way to end the connection is to call the `destroy()` method.\nThis will cause an immediate termination of the underlying socket.\nAdditionally `destroy()` guarantees that no more events or callbacks will be\ntriggered for the connection.\n\n```js\nconnection.destroy();\n```\n\nUnlike `end()` the `destroy()` method does not take a callback argument.\n\n## Pooling connections\n\nConnections can be pooled to ease sharing a single connection, or managing\nmultiple connections.\n\n```js\nvar mysql = require('mysql');\nvar pool = mysql.createPool({\n host : 'example.org',\n user : 'bob',\n password : 'secret'\n});\n\npool.getConnection(function(err, connection) {\n // connected! (unless `err` is set)\n});\n```\n\nWhen you are done with a connection, just call `connection.end()` and the\nconnection will return to the pool, ready to be used again by someone else.\n\n```js\nvar mysql = require('mysql');\nvar pool = mysql.createPool(...);\n\npool.getConnection(function(err, connection) {\n // Use the connection\n connection.query( 'SELECT something FROM sometable', function(err, rows) {\n // And done with the connection.\n connection.end();\n\n // Don't use the connection here, it has been returned to the pool.\n });\n});\n```\n\nIf you would like to close the connection and remove it from the pool, use\n`connection.destroy()` instead. The pool will create a new connection the next\ntime one is needed.\n\nConnections are lazily created by the pool. If you configure the pool to allow\nup to 100 connections, but only ever use 5 simultaneously, only 5 connections\nwill be made. Connections are also cycled round-robin style, with connections\nbeing taken from the top of the pool and returning to the bottom.\n\n## Pool options\n\nPools accept all the same options as a connection. When creating a new\nconnection, the options are simply passed to the connection constructor. In\naddition to those options pools accept a few extras:\n\n* `createConnection`: The function to use to create the connection. (Default:\n `mysql.createConnection`)\n* `waitForConnections`: Determines the pool's action when no connections are\n available and the limit has been reached. If `true`, the pool will queue the\n connection request and call it when one becomes available. If `false`, the\n pool will immediately call back with an error. (Default: `true`)\n* `connectionLimit`: The maximum number of connections to create at once.\n (Default: `10`)\n\n## Switching users / altering connection state\n\nMySQL offers a changeUser command that allows you to alter the current user and\nother aspects of the connection without shutting down the underlying socket:\n\n```js\nconnection.changeUser({user : 'john'}, function(err) {\n if (err) throw err;\n});\n```\n\nThe available options for this feature are:\n\n* `user`: The name of the new user (defaults to the previous one).\n* `password`: The password of the new user (defaults to the previous one).\n* `charset`: The new charset (defaults to the previous one).\n* `database`: The new database (defaults to the previous one).\n\nA sometimes useful side effect of this functionality is that this function also\nresets any connection state (variables, transactions, etc.).\n\nErrors encountered during this operation are treated as fatal connection errors\nby this module.\n\n## Server disconnects\n\nYou may lose the connection to a MySQL server due to network problems, the\nserver timing you out, or the server crashing. All of these events are\nconsidered fatal errors, and will have the `err.code =\n'PROTOCOL_CONNECTION_LOST'`. See the [Error Handling](#error-handling) section\nfor more information.\n\nThe best way to handle such unexpected disconnects is shown below:\n\n```js\nfunction handleDisconnect(connection) {\n connection.on('error', function(err) {\n if (!err.fatal) {\n return;\n }\n\n if (err.code !== 'PROTOCOL_CONNECTION_LOST') {\n throw err;\n }\n\n console.log('Re-connecting lost connection: ' + err.stack);\n\n connection = mysql.createConnection(connection.config);\n handleDisconnect(connection);\n connection.connect();\n });\n}\n\nhandleDisconnect(connection);\n```\n\nAs you can see in the example above, re-connecting a connection is done by\nestablishing a new connection. Once terminated, an existing connection object\ncannot be re-connected by design.\n\nWith Pool, disconnected connections will be removed from the pool freeing up\nspace for a new connection to be created on the next getConnection call.\n\n## Escaping query values\n\nIn order to avoid SQL Injection attacks, you should always escape any user\nprovided data before using it inside a SQL query. You can do so using the\n`connection.escape()` method:\n\n```js\nvar userId = 'some user provided value';\nvar sql = 'SELECT * FROM users WHERE id = ' + connection.escape(userId);\nconnection.query(sql, function(err, results) {\n // ...\n});\n```\n\nAlternatively, you can use `?` characters as placeholders for values you would\nlike to have escaped like this:\n\n```js\nconnection.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {\n // ...\n});\n```\n\nThis looks similar to prepared statements in MySQL, however it really just uses\nthe same `connection.escape()` method internally.\n\nDifferent value types are escaped differently, here is how:\n\n* Numbers are left untouched\n* Booleans are converted to `true` / `false` strings\n* Date objects are converted to `'YYYY-mm-dd HH:ii:ss'` strings\n* Buffers are converted to hex strings, e.g. `X'0fa5'`\n* Strings are safely escaped\n* Arrays are turned into list, e.g. `['a', 'b']` turns into `'a', 'b'`\n* Nested arrays are turned into grouped lists (for bulk inserts), e.g. `[['a',\n 'b'], ['c', 'd']]` turns into `('a', 'b'), ('c', 'd')`\n* Objects are turned into `key = 'val'` pairs. Nested objects are cast to\n strings.\n* `undefined` / `null` are converted to `NULL`\n* `NaN` / `Infinity` are left as-is. MySQL does not support these, and trying\n to insert them as values will trigger MySQL errors until they implement\n support.\n\nIf you paid attention, you may have noticed that this escaping allows you\nto do neat things like this:\n\n```js\nvar post = {id: 1, title: 'Hello MySQL'};\nvar query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {\n // Neat!\n});\nconsole.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'\n\n```\n\nIf you feel the need to escape queries by yourself, you can also use the escaping\nfunction directly:\n\n```js\nvar query = \"SELECT * FROM posts WHERE title=\" + mysql.escape(\"Hello MySQL\");\n\nconsole.log(query); // SELECT * FROM posts WHERE title='Hello MySQL'\n```\n\n## Escaping query identifiers\n\nIf you can't trust an SQL identifier (database / table / column name) because it is\nprovided by a user, you should escape it with `mysql.escapeId(identifier)` like this:\n\n```js\nvar sorter = 'date';\nvar query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId(sorter);\n\nconsole.log(query); // SELECT * FROM posts ORDER BY `date`\n```\n\nIt also supports adding qualified identifiers. It will escape both parts.\n\n```js\nvar sorter = 'date';\nvar query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId('posts.' + sorter);\n\nconsole.log(query); // SELECT * FROM posts ORDER BY `posts`.`date`\n```\n\nAlternatively, you can use `??` characters as placeholders for identifiers you would\nlike to have escaped like this:\n\n```js\nconnection.query('SELECT * FROM ?? WHERE id = ?', ['users', userId], function(err, results) {\n // ...\n});\n```\n**Please note that this last character sequence is experimental and syntax might change**\n\nWhen you pass an Object to `.escape()` or `.query()`, `.escapeId()` is used to avoid SQL injection in object keys.\n\n### Custom format\n\nIf you prefer to have another type of query escape format, there's a connection configuration option you can use to define a custom format function. You can access the connection object if you want to use the built-in `.escape()` or any other connection function.\n\nHere's an example of how to implement another format:\n\n```js\nconnection.config.queryFormat = function (query, values) {\n if (!values) return query;\n return query.replace(/\\:(\\w+)/g, function (txt, key) {\n if (values.hasOwnProperty(key)) {\n return this.escape(values[key]);\n }\n return txt;\n }.bind(this));\n};\n\nconnection.query(\"UPDATE posts SET title = :title\", { title: \"Hello MySQL\" });\n```\n\n## Getting the id of an inserted row\n\nIf you are inserting a row into a table with an auto increment primary key, you\ncan retrieve the insert id like this:\n\n```js\nconnection.query('INSERT INTO posts SET ?', {title: 'test'}, function(err, result) {\n if (err) throw err;\n\n console.log(result.insertId);\n});\n```\n\nWhen dealing with big numbers (above JavaScript Number precision limit), you should\nconsider enabling `supportBigNumbers` option to be able to read the insert id as a\nstring, otherwise it will throw.\n\nThis option is also required when fetching big numbers from the database, otherwise\nyou will get values rounded to hundreds or thousands due to the precision limit.\n\n## Executing queries in parallel\n\nThe MySQL protocol is sequential, this means that you need multiple connections\nto execute queries in parallel. You can use a Pool to manage connections, one\nsimple approach is to create one connection per incoming http request.\n\n## Streaming query rows\n\nSometimes you may want to select large quantities of rows and process each of\nthem as they are received. This can be done like this:\n\n```js\nvar query = connection.query('SELECT * FROM posts');\nquery\n .on('error', function(err) {\n // Handle error, an 'end' event will be emitted after this as well\n })\n .on('fields', function(fields) {\n // the field packets for the rows to follow\n })\n .on('result', function(row) {\n // Pausing the connnection is useful if your processing involves I/O\n connection.pause();\n\n processRow(row, function() {\n connection.resume();\n });\n })\n .on('end', function() {\n // all rows have been received\n });\n```\n\nPlease note a few things about the example above:\n\n* Usually you will want to receive a certain amount of rows before starting to\n throttle the connection using `pause()`. This number will depend on the\n amount and size of your rows.\n* `pause()` / `resume()` operate on the underlying socket and parser. You are\n guaranteed that no more `'result'` events will fire after calling `pause()`.\n* You MUST NOT provide a callback to the `query()` method when streaming rows.\n* The `'result'` event will fire for both rows as well as OK packets\n confirming the success of a INSERT/UPDATE query.\n\nAdditionally you may be interested to know that it is currently not possible to\nstream individual row columns, they will always be buffered up entirely. If you\nhave a good use case for streaming large fields to and from MySQL, I'd love to\nget your thoughts and contributions on this.\n\n### Piping results with [Streams2](http://blog.nodejs.org/2012/12/20/streams2/) (Node v0.10+)\n\nThe query object provides a convenience method `.stream([options])` that wraps\nquery events into a [Readable](http://nodejs.org/api/stream.html#stream_class_stream_readable)\nStreams2 object. This stream can easily be piped downstream and provides\nautomatic pause/resume, based on downstream congestion and the optional\n`highWaterMark`. The `objectMode` parameter of the stream is set to `true` by\ndefault.\n\nFor example, piping query results into another stream (with a max buffer of 5\nobjects) is simply:\n\n```js\nconnection.query('SELECT * FROM posts')\n .stream({highWaterMark: 5})\n .pipe(...);\n```\n\n## Multiple statement queries\n\nSupport for multiple statements is disabled for security reasons (it allows for\nSQL injection attacks if values are not properly escaped). To use this feature\nyou have to enable it for your connection:\n\n```js\nvar connection = mysql.createConnection({multipleStatements: true});\n```\n\nOnce enabled, you can execute multiple statement queries like any other query:\n\n```js\nconnection.query('SELECT 1; SELECT 2', function(err, results) {\n if (err) throw err;\n\n // `results` is an array with one element for every statement in the query:\n console.log(results[0]); // [{1: 1}]\n console.log(results[1]); // [{2: 2}]\n});\n```\n\nAdditionally you can also stream the results of multiple statement queries:\n\n```js\nvar query = connection.query('SELECT 1; SELECT 2');\n\nquery\n .on('fields', function(fields, index) {\n // the fields for the result rows that follow\n })\n .on('result', function(row, index) {\n // index refers to the statement this result belongs to (starts at 0)\n });\n```\n\nIf one of the statements in your query causes an error, the resulting Error\nobject contains a `err.index` property which tells you which statement caused\nit. MySQL will also stop executing any remaining statements when an error\noccurs.\n\nPlease note that the interface for streaming multiple statement queries is\nexperimental and I am looking forward to feedback on it.\n\n## Stored procedures\n\nYou can call stored procedures from your queries as with any other mysql driver.\nIf the stored procedure produces several result sets, they are exposed to you\nthe same way as the results for multiple statement queries.\n\n## Joins with overlapping column names\n\nWhen executing joins, you are likely to get result sets with overlapping column\nnames.\n\nBy default, node-mysql will overwrite colliding column names in the\norder the columns are received from MySQL, causing some of the received values\nto be unavailable.\n\nHowever, you can also specify that you want your columns to be nested below\nthe table name like this:\n\n```js\nvar options = {sql: '...', nestTables: true};\nconnection.query(options, function(err, results) {\n /* results will be an array like this now:\n [{\n table1: {\n fieldA: '...',\n fieldB: '...',\n },\n table2: {\n fieldA: '...',\n fieldB: '...',\n },\n }, ...]\n */\n});\n```\n\nOr use a string separator to have your results merged.\n\n```js\nvar options = {sql: '...', nestTables: '_'};\nconnection.query(options, function(err, results) {\n /* results will be an array like this now:\n [{\n table1_fieldA: '...',\n table1_fieldB: '...',\n table2_fieldA: '...',\n table2_fieldB: '...'\n }, ...]\n */\n});\n```\n\n## Error handling\n\nThis module comes with a consistent approach to error handling that you should\nreview carefully in order to write solid applications.\n\nAll errors created by this module are instances of the JavaScript [Error][]\nobject. Additionally they come with two properties:\n\n* `err.code`: Either a [MySQL server error][] (e.g.\n `'ER_ACCESS_DENIED_ERROR'`), a node.js error (e.g. `'ECONNREFUSED'`) or an\n internal error (e.g. `'PROTOCOL_CONNECTION_LOST'`).\n* `err.fatal`: Boolean, indicating if this error is terminal to the connection\n object.\n\n[Error]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error\n[MySQL server error]: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html\n\nFatal errors are propagated to *all* pending callbacks. In the example below, a\nfatal error is triggered by trying to connect to an invalid port. Therefore the\nerror object is propagated to both pending callbacks:\n\n```js\nvar connection = require('mysql').createConnection({\n port: 84943, // WRONG PORT\n});\n\nconnection.connect(function(err) {\n console.log(err.code); // 'ECONNREFUSED'\n console.log(err.fatal); // true\n});\n\nconnection.query('SELECT 1', function(err) {\n console.log(err.code); // 'ECONNREFUSED'\n console.log(err.fatal); // true\n});\n```\n\nNormal errors however are only delegated to the callback they belong to. So in\nthe example below, only the first callback receives an error, the second query\nworks as expected:\n\n```js\nconnection.query('USE name_of_db_that_does_not_exist', function(err, rows) {\n console.log(err.code); // 'ER_BAD_DB_ERROR'\n});\n\nconnection.query('SELECT 1', function(err, rows) {\n console.log(err); // null\n console.log(rows.length); // 1\n});\n```\n\nLast but not least: If a fatal errors occurs and there are no pending\ncallbacks, or a normal error occurs which has no callback belonging to it, the\nerror is emitted as an `'error'` event on the connection object. This is\ndemonstrated in the example below:\n\n```js\nconnection.on('error', function(err) {\n console.log(err.code); // 'ER_BAD_DB_ERROR'\n});\n\nconnection.query('USE name_of_db_that_does_not_exist');\n```\n\nNote: `'error'` are special in node. If they occur without an attached\nlistener, a stack trace is printed and your process is killed.\n\n**tl;dr:** This module does not want you to deal with silent failures. You\nshould always provide callbacks to your method calls. If you want to ignore\nthis advice and suppress unhandled errors, you can do this:\n\n```js\n// I am Chuck Norris:\nconnection.on('error', function() {});\n```\n\n## Exception Safety\n\nThis module is exception safe. That means you can continue to use it, even if\none of your callback functions throws an error which you're catching using\n'uncaughtException' or a domain.\n\n## Type casting\n\nFor your convenience, this driver will cast mysql types into native JavaScript\ntypes by default. The following mappings exist:\n\n### Number\n\n* TINYINT\n* SMALLINT\n* INT\n* MEDIUMINT\n* YEAR\n* FLOAT\n* DOUBLE\n\n### Date\n\n* TIMESTAMP\n* DATE\n* DATETIME\n\n### Buffer\n\n* TINYBLOB\n* MEDIUMBLOB\n* LONGBLOB\n* BLOB\n* BINARY\n* VARBINARY\n* BIT (last byte will be filled with 0 bits as necessary)\n\n### String\n\n* CHAR\n* VARCHAR\n* TINYTEXT\n* MEDIUMTEXT\n* LONGTEXT\n* TEXT\n* ENUM\n* SET\n* DECIMAL (may exceed float precision)\n* BIGINT (may exceed float precision)\n* TIME (could be mapped to Date, but what date would be set?)\n* GEOMETRY (never used those, get in touch if you do)\n\nIt is not recommended (and may go away / change in the future) to disable type\ncasting, but you can currently do so on either the connection:\n\n```js\nvar connection = require('mysql').createConnection({typeCast: false});\n```\n\nOr on the query level:\n\n```js\nvar options = {sql: '...', typeCast: false};\nvar query = connection.query(options, function(err, results) {\n\n}):\n```\n\nYou can also pass a function and handle type casting yourself. You're given some\ncolumn information like database, table and name and also type and length. If you\njust want to apply a custom type casting to a specific type you can do it and then\nfallback to the default. Here's an example of converting `TINYINT(1)` to boolean:\n\n```js\nconnection.query({\n sql: '...',\n typeCast: function (field, next) {\n if (field.type == 'TINY' && field.length == 1) {\n return (field.string() == '1'); // 1 = true, 0 = false\n }\n return next();\n }\n})\n```\n\nIf you need a buffer there's also a `.buffer()` function and also a `.geometry()` one\nboth used by the default type cast that you can use.\n\n## Connection Flags\n\nIf, for any reason, you would like to change the default connection flags, you\ncan use the connection option `flags`. Pass a string with a comma separated list\nof items to add to the default flags. If you don't want a default flag to be used\nprepend the flag with a minus sign. To add a flag that is not in the default list, don't prepend it with a plus sign, just write the flag name (case insensitive).\n\n**Please note that some available flags that are not default are still not supported\n(e.g.: SSL, Compression). Use at your own risk.**\n\n### Example\n\nThe next example blacklists FOUND_ROWS flag from default connection flags.\n\n```js\nvar connection = mysql.createConnection(\"mysql://localhost/test?flags=-FOUND_ROWS\")\n```\n\n### Default Flags\n\n- LONG_PASSWORD\n- FOUND_ROWS\n- LONG_FLAG\n- CONNECT_WITH_DB\n- ODBC\n- LOCAL_FILES\n- IGNORE_SPACE\n- PROTOCOL_41\n- IGNORE_SIGPIPE\n- TRANSACTIONS\n- RESERVED\n- SECURE_CONNECTION\n- MULTI_RESULTS\n- MULTI_STATEMENTS (used if `multipleStatements` option is activated)\n\n### Other Available Flags\n\n- NO_SCHEMA\n- COMPRESS\n- INTERACTIVE\n- SSL\n- PS_MULTI_RESULTS\n- PLUGIN_AUTH\n- SSL_VERIFY_SERVER_CERT\n- REMEMBER_OPTIONS\n\n## Debugging and reporting problems\n\nIf you are running into problems, one thing that may help is enabling the\n`debug` mode for the connection:\n\n```js\nvar connection = mysql.createConnection({debug: true});\n```\n\nThis will print all incoming and outgoing packets on stdout. You can also restrict debugging to\npacket types by passing an array of types to debug:\n\n```js\nvar connection = mysql.createConnection({debug: ['ComQueryPacket', 'RowDataPacket']});\n```\n\nto restrict debugging to the query and data packets.\n\nIf that does not help, feel free to open a GitHub issue. A good GitHub issue\nwill have:\n\n* The minimal amount of code required to reproduce the problem (if possible)\n* As much debugging output and information about your environment (mysql\n version, node version, os, etc.) as you can gather.\n\n## Todo\n\n* Prepared statements\n* setTimeout() for Connection / Query\n* Support for encodings other than UTF-8 / ASCII\n* API support for transactions, similar to [php](http://www.php.net/manual/en/mysqli.quickstart.transactions.php)\n", + "readmeFilename": "Readme.md", + "bugs": { + "url": "https://github.com/felixge/node-mysql/issues" + }, + "_id": "mysql@2.0.0-alpha8", + "dist": { + "shasum": "9f59f210dad877455f6ea05ff42fb838ba45ff51" + }, + "_from": "mysql@", + "_resolved": "https://registry.npmjs.org/mysql/-/mysql-2.0.0-alpha8.tgz" +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js b/nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js new file mode 100644 index 0000000..0f1e12b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js @@ -0,0 +1,149 @@ +// An experimental fake MySQL server for tricky integration tests. Expanded +// as needed. + +var Net = require('net'); +var Packets = require('../lib/protocol/packets'); +var PacketWriter = require('../lib/protocol/PacketWriter'); +var Parser = require('../lib/protocol/Parser'); +var Auth = require('../lib/protocol/Auth'); +var EventEmitter = require('events').EventEmitter; +var Util = require('util'); + +module.exports = FakeServer; +Util.inherits(FakeServer, EventEmitter); +function FakeServer(options) { + EventEmitter.call(this); + + this._server = null; + this._connections = []; +} + +FakeServer.prototype.listen = function(port, cb) { + this._server = Net.createServer(this._handleConnection.bind(this)); + this._server.listen(port, cb); +}; + +FakeServer.prototype._handleConnection = function(socket) { + var connection = new FakeConnection(socket); + this.emit('connection', connection); + this._connections.push(connection); +}; + +FakeServer.prototype.destroy = function() { + this._server.close(); + this._connections.forEach(function(connection) { + connection.destroy(); + }); +}; + +Util.inherits(FakeConnection, EventEmitter); +function FakeConnection(socket) { + EventEmitter.call(this); + + this._socket = socket; + this._parser = new Parser({onPacket: this._parsePacket.bind(this)}); + + this._handshakeInitializationPacket = null; + this._clientAuthenticationPacket = null; + this._oldPasswordPacket = null; + this._handshakeOptions = {}; + + socket.on('data', this._handleData.bind(this)); +} + +FakeConnection.prototype.handshake = function(options) { + this._handshakeOptions = options || {}; + + this._handshakeInitializationPacket = new Packets.HandshakeInitializationPacket({ + scrambleBuff1 : new Buffer(8), + scrambleBuff2 : new Buffer(12), + serverCapabilities1 : 512, // only 1 flag, PROTOCOL_41 + protocol41 : true + }); + + this._sendPacket(this._handshakeInitializationPacket); +}; + +FakeConnection.prototype.deny = function(message, errno) { + this._sendPacket(new Packets.ErrorPacket({ + message: message, + errno: errno, + })); +}; + +FakeConnection.prototype._sendPacket = function(packet) { + var writer = new PacketWriter(); + packet.write(writer); + this._socket.write(writer.toBuffer(this._parser)); +}; + +FakeConnection.prototype._handleData = function(buffer) { + this._parser.write(buffer); +}; + +FakeConnection.prototype._parsePacket = function(header) { + var Packet = this._determinePacket(header); + var packet = new Packet(); + + packet.parse(this._parser); + + switch (Packet) { + case Packets.ClientAuthenticationPacket: + this._clientAuthenticationPacket = packet; + + if (this._handshakeOptions.oldPassword) { + this._sendPacket(new Packets.UseOldPasswordPacket()); + } else { + if (this._handshakeOptions.user || this._handshakeOptions.password) { + throw new Error('not implemented'); + } + + this._sendPacket(new Packets.OkPacket()); + this._parser.resetPacketNumber(); + } + break; + case Packets.OldPasswordPacket: + this._oldPasswordPacket = packet; + + var expected = Auth.scramble323(this._handshakeInitializationPacket.scrambleBuff(), this._handshakeOptions.password); + var got = packet.scrambleBuff; + + var toString = function(buffer) { + return Array.prototype.slice.call(buffer).join(','); + }; + + if (toString(expected) === toString(got)) { + this._sendPacket(new Packets.OkPacket()); + } else { + this._sendPacket(new Packets.ErrorPacket()); + } + + this._parser.resetPacketNumber(); + break; + case Packets.ComQueryPacket: + this.emit('query', packet); + break; + default: + throw new Error('Unexpected packet: ' + Packet.name) + } +}; + +FakeConnection.prototype._determinePacket = function() { + if (!this._clientAuthenticationPacket) { + return Packets.ClientAuthenticationPacket; + } else if (this._handshakeOptions.oldPassword && !this._oldPasswordPacket) { + return Packets.OldPasswordPacket; + } + + var firstByte = this._parser.peak(); + switch (firstByte) { + case 0x03: return Packets.ComQueryPacket; + default: + throw new Error('Unknown packet, first byte: ' + firstByte); + break; + } +}; + +FakeConnection.prototype.destroy = function() { + this._socket.destroy(); +}; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/common.js b/nodejs-mysql-tutorial/node_modules/mysql/test/common.js new file mode 100644 index 0000000..4984228 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/common.js @@ -0,0 +1,65 @@ +var common = exports; +var path = require('path'); +var _ = require('underscore'); +var FakeServer = require('./FakeServer'); + +common.lib = path.join(__dirname, '../lib'); +common.fixtures = path.join(__dirname, 'fixtures'); + +// Useful for triggering ECONNREFUSED errors on connect() +common.bogusPort = 47378; +// Useful for triggering ER_ACCESS_DENIED_ERROR errors on connect() +common.bogusPassword = 'INVALID PASSWORD'; + +// Used for simulating a fake mysql server +common.fakeServerPort = 32893; +// Used for simulating a fake mysql server +common.fakeServerSocket = __dirname + '/fake_server.sock'; + +common.testDatabase = process.env.MYSQL_DATABASE; + +var Mysql = require('../'); + +common.isTravis = function() { + return Boolean(process.env.CI); +}; + +common.createConnection = function(config) { + config = mergeTestConfig(config); + return Mysql.createConnection(config); +}; + +common.createPool = function(config) { + config = mergeTestConfig(config); + config.createConnection = common.createConnection; + return Mysql.createPool(config); +}; + +common.createFakeServer = function(options) { + return new FakeServer(_.extend({}, options)); +}; + +common.useTestDb = function(connection) { + var query = connection.query('CREATE DATABASE ' + common.testDatabase, function(err) { + if (err && err.code !== 'ER_DB_CREATE_EXISTS') throw err; + }); + + connection.query('USE ' + common.testDatabase); +} + +function mergeTestConfig(config) { + if (common.isTravis()) { + // see: http://about.travis-ci.org/docs/user/database-setup/ + config = _.extend({ + user: 'root' + }, config); + } else { + config = _.extend({ + host : process.env.MYSQL_HOST, + port : process.env.MYSQL_PORT, + user : process.env.MYSQL_USER, + password : process.env.MYSQL_PASSWORD + }, config); + } + return config; +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv b/nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv new file mode 100644 index 0000000..6fac03d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv @@ -0,0 +1,3 @@ +1,Hello World +2,This is a test +3,For loading data from a file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js new file mode 100644 index 0000000..83d2b6e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js @@ -0,0 +1,27 @@ +var common = require('../../common'); +var connection = common.createConnection({password: 'INVALID PASSWORD'}); +var assert = require('assert'); + +var endErr; +connection.on('end', function(err) { + assert.equal(endErr, undefined); + endErr = err; +}); + +var connectErr; +connection.connect(function(err) { + assert.equal(connectErr, undefined); + connectErr = err; + + connection.end(); +}); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && typeof endErr == 'undefined') return; + + assert.equal(endErr.code, 'ER_ACCESS_DENIED_ERROR'); + assert.ok(/access denied/i.test(endErr.message)); + + assert.strictEqual(endErr, connectErr); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js new file mode 100644 index 0000000..eddd81e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js @@ -0,0 +1,37 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); +var _ = require('underscore'); + +common.useTestDb(connection); + +var table = 'insert_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var result; +var items = []; +var itemsFoundInTable = []; + +for(var i = 0; i < 100; i++) + items[i] = ['test '+i]; + +connection.query('INSERT INTO ' + table + ' (title) VALUES ? ', [items], function(err, _result) { + if (err) throw err; + + result = _result; + + connection.query('SELECT title FROM '+table+';', [], function(err, _items) { + itemsFoundInTable = _.map(_items, function(row) { return [row.title]; }); + connection.end(); + }); +}); + +process.on('exit', function() { + assert.deepEqual(items, itemsFoundInTable); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js new file mode 100644 index 0000000..17d893d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js @@ -0,0 +1,20 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var err = new Error('uncaught exception'); + +connection.connect(function() { + throw err; +}); + +var caughtErr; +process.on('uncaughtException', function(err) { + caughtErr = err; + process.exit(0); +}); + +process.on('exit', function() { + assert.strictEqual(caughtErr, err); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js new file mode 100644 index 0000000..9bd0549 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js @@ -0,0 +1,24 @@ +// This test verifies that changeUser errors are treated as fatal errors. The +// rationale for that is that a failure to execute a changeUser sequence may +// cause unexpected behavior for queries that were enqueued under the +// assumption of changeUser to succeed. + +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +if (common.isTravis()) { + return console.log('skipping - travis mysql does not support this test'); +} + +var err; +connection.changeUser({user: 'does-not-exist'}, function(_err) { + err = _err; + connection.end(); +}); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && err === null) return; + assert.equal(err.code, 'ER_ACCESS_DENIED_ERROR'); + assert.equal(err.fatal, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js new file mode 100644 index 0000000..b49ef41 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +if (common.isTravis()) { + return console.log('skipping - travis mysql does not support this test'); +} + +connection.query('CREATE DATABASE ' + common.testDatabase, function(err) { + if (err && err.code !== 'ER_DB_CREATE_EXISTS') throw err; +}); + +var initialDb; +connection.query('select database() as db', function(err, results) { + if (err) throw err; + + initialDb = results[0].db; + assert.equal(connection.config.database, null); +}); + +connection.changeUser({database: common.testDatabase}); + +var finalDb; +connection.query('select database() as db', function(err, results){ + if (err) throw err; + + finalDb = results[0].db; + assert.equal(connection.config.database, finalDb); +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(initialDb, null); + assert.equal(finalDb, common.testDatabase); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js new file mode 100644 index 0000000..3029a7f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js @@ -0,0 +1,39 @@ +// Based on: +// https://github.com/ichernev/node-mysql/blob/on-duplicate-key-update/test/integration/connection/test-on-duplicate-key-update.js +// (but with CLIENT_FOUND_ROWS connection flag blacklisted) + +var common = require('../../common'); +var connection = common.createConnection({ flags: "-FOUND_ROWS" }); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'on_duplicate_key_test'; +connection.query('DROP TABLE IF EXISTS `' + table + '`'); +connection.query([ + 'CREATE TABLE `' + table + '` (', + '`a` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`b` int(11),', + '`c` int(11),', + 'PRIMARY KEY (`a`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO `' + table + '` SET ?', {a: 1, b: 1, c: 1}); + +connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = 1', function(err, info) { + assert.strictEqual(null, err); + assert.strictEqual(0, info.affectedRows, 'both primary key and updated key are the same so nothing is affected (expected 0, got ' + info.affectedRows + ' affectedRows)'); +}); + +connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (2, 3, 4) ON DUPLICATE KEY UPDATE c = 1', function(err, info) { + assert.strictEqual(null, err); + assert.strictEqual(1, info.affectedRows, 'primary key differs, so new row is inserted (expected 1, got ' + info.affectedRows + ' affectedRows)'); +}); + +connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = 2', function(err, info) { + assert.strictEqual(null, err); + assert.strictEqual(2, info.affectedRows, 'primary key is the same, row is updated (expected 2, got ' + info.affectedRows + ' affectedRows)'); +}); + +connection.end(); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js new file mode 100644 index 0000000..4a2d6ea --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js @@ -0,0 +1,53 @@ +var ConnectionConfig = require('../../../lib/ConnectionConfig'); +var ClientConstants = require('../../../lib/protocol/constants/client'); +var assert = require('assert'); + +var testFlags = [{ + 'default' : [ '' ], + 'user' : 'LONG_PASSWORD', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD +}, { + 'default' : [ '' ], + 'user' : '-LONG_PASSWORD', + 'expected': 0x0 +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-LONG_PASSWORD', + 'expected': ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-FOUND_ROWS', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-LONG_FLAG', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : 'LONG_FLAG', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS | + ClientConstants.CLIENT_LONG_FLAG +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : 'UNDEFINED_CONSTANT', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-UNDEFINED_CONSTANT', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD | + ClientConstants.CLIENT_FOUND_ROWS +}, { + 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], + 'user' : '-UNDEFINED_CONSTANT,, -found_ROWS', + 'expected': ClientConstants.CLIENT_LONG_PASSWORD +}]; + +for (var i = 0; i < testFlags.length; i++) { + // console.log("expected: %s got: %s", testFlags[i]['expected'], + // ConnectionConfig.mergeFlags(testFlags[i]['default'], testFlags[i]['user'])); + assert.strictEqual(testFlags[i]['expected'], + ConnectionConfig.mergeFlags(testFlags[i]['default'], testFlags[i]['user'])); +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js new file mode 100644 index 0000000..5d80fda --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js @@ -0,0 +1,9 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(function(err) { + if (err) throw err; + + connection.destroy(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js new file mode 100644 index 0000000..6309433 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js @@ -0,0 +1,18 @@ +var Mysql = require('../../../'); +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.config.queryFormat = function (query, values, tz) { + if (!values) return query; + return query.replace(/\:(\w+)/g, function (txt, key) { + if (values.hasOwnProperty(key)) { + return this.escape(values[key]); + } + return txt; + }.bind(this)); +}; + +assert.equal(connection.format("SELECT :a1, :a2", { a1: 1, a2: 'two' }), "SELECT 1, 'two'"); +assert.equal(connection.format("SELECT :a1", []), "SELECT :a1"); +assert.equal(connection.format("SELECT :a1"), "SELECT :a1"); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js new file mode 100644 index 0000000..bf82198 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js @@ -0,0 +1,46 @@ +var Mysql = require('../../../'); +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'custom_typecast_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '`(', + '`id` int(5),', + '`val` tinyint(1)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var results; + +connection.query("INSERT INTO " + table + " VALUES (1, 0), (2, 1), (3, NULL)"); +connection.query({ + sql: "SELECT * FROM " + table, + typeCast: function (field, next) { + if (field.type != 'TINY') { + return next(); + } + + var val = field.string(); + + if (val === null) { + return null; + } + + return (Number(val) > 0); + } +}, function (err, _results) { + if (err) throw err; + + results = _results; +}); +connection.end(); + +process.on('exit', function() { + assert.equal(results.length, 3); + assert.deepEqual(results[0], {id: 1, val: false}); + assert.deepEqual(results[1], {id: 2, val: true}); + assert.deepEqual(results[2], {id: 3, val: null}); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js new file mode 100644 index 0000000..5832695 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js @@ -0,0 +1,45 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'stream_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +var destroyed = false; +var hadEnd = false; +var query = connection.query('SELECT * FROM ' + table); + +query + .on('result', function(row) { + assert.equal(destroyed, false); + + destroyed = true; + connection.destroy(); + }) + .on('end', function() { + hadEnd = true; + }); + +connection.end(); + +process.on('exit', function() { + assert.strictEqual(hadEnd, false); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js new file mode 100644 index 0000000..99c51ca --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js @@ -0,0 +1,24 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var didConnect = false; +connection.connect(function(err) { + if (err) throw err; + + assert.equal(didConnect, false); + didConnect = true; +}); + +var err; +connection.connect(function(_err) { + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(didConnect, true); + assert.equal(err.fatal, false); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_HANDSHAKE_TWICE'); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js new file mode 100644 index 0000000..b075abf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js @@ -0,0 +1,20 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); + +var got_drain = false; + +connection.on('drain', function() { + got_drain = true; +}); + +connection.query("SELECT 1", function(err) { + assert.equal(got_drain, false); + assert.ok(!err); + process.nextTick(function() { + assert.equal(got_drain, true); + connection.end(); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js new file mode 100644 index 0000000..021022c --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js @@ -0,0 +1,27 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); + +var gotEnd = false; +connection.on('end', function(err) { + assert.equal(gotEnd, false); + assert.ok(!err); + + gotEnd = true; +}); + +var gotCallback = false; +connection.end(function(err) { + if (err) throw err; + + assert.equal(gotCallback, false); + gotCallback = true; +}); + +process.on('exit', function() { + assert.equal(gotCallback, true); + assert.equal(gotEnd, true); +}); + diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js new file mode 100644 index 0000000..743bd53 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js @@ -0,0 +1,7 @@ +var SqlString = require('../../../lib/protocol/SqlString'); +var assert = require('assert'); + +assert.equal('`id`', SqlString.escapeId('id')); +assert.equal('`i``d`', SqlString.escapeId('i`d')); +assert.equal('`id1`.`id2`', SqlString.escapeId('id1.id2')); +assert.equal('`id``1`.`i``d2`', SqlString.escapeId('id`1.i`d2')); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js new file mode 100644 index 0000000..dd78684 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js @@ -0,0 +1,66 @@ +// This test covers all event / callback interfaces offered by node-mysql and +// throws an exception in them. Exception safety means that each of those +// exceptions can be caught by an 'uncaughtException' / Domain handler without +// the connection instance ending up in a bad state where it doesn't work +// properly or doesn't execute the next sequence anymore. + +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + + +var errors = []; +process.on('uncaughtException', function(err) { + console.log(err.stack); + errors.push(err); +}); + +// Normal callback +connection.connect(function(err) { + throw err || new Error('1'); +}); + +// Normal callback (same code path as connect, but in here should that +// implementation detail change at some point). +connection.query('SELECT 1', function(err) { + throw err || new Error('2'); +}); + +// Row streaming events +connection.query('SELECT 1') + .on('fields', function() { + throw new Error('3'); + }) + .on('result', function() { + throw new Error('4'); + }); + +// Normal callback with error +connection.query('INVALID SQL', function(err) { + assert.equal(err.code, 'ER_PARSE_ERROR'); + + throw new Error('5'); +}); + +// Row streaming 'result' event triggered by Ok Packet (special code path) +connection.query('USE ' + common.testDatabase) + .on('result', function() { + throw new Error('6'); + }); + +// Normal callback (same code path as connect, but in here should that +// implementation detail change at some point). +connection.end(function(err) { + throw err || new Error('7'); +}); + +process.on('exit', function() { + process.removeAllListeners(); + + var expectedErrors = 7; + for (var i = 0; i < expectedErrors - 1; i++) { + var error = errors[i]; + assert.equal(error.message, String(i + 1)); + assert.equal(error.code, undefined); + } +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js new file mode 100644 index 0000000..88d3a2e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js @@ -0,0 +1,25 @@ +var common = require('../../common'); +var connection = common.createConnection({password: common.bogusPassword}); +var assert = require('assert'); + +var errors = {}; + +connection.connect(function(err) { + assert.equal(errors.a, undefined); + errors.a = err; +}); + +connection.query('SELECT 1', function(err) { + assert.equal(errors.b, undefined); + errors.b = err; + + connection.end(); +}); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && errors.a === null) return; + + assert.equal(errors.a.code, 'ER_ACCESS_DENIED_ERROR'); + assert.equal(errors.a.fatal, true); + assert.strictEqual(errors.a, errors.b); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js new file mode 100644 index 0000000..1c7c88f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js @@ -0,0 +1,20 @@ +var common = require('../../common'); +var connection = common.createConnection({password: common.bogusPassword}); +var assert = require('assert'); + +connection.connect(); +connection.query('SELECT 1'); + +var err; +connection.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); +connection.end(); + +process.on('exit', function() { + if (process.env.NO_GRANT == '1' && typeof err == 'undefined') return; + + assert.equal(err.code, 'ER_ACCESS_DENIED_ERROR'); + assert.equal(err.fatal, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js new file mode 100644 index 0000000..20c6e27 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js @@ -0,0 +1,21 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +var errors = {}; + +connection.connect(function(err) { + assert.equal(errors.a, undefined); + errors.a = err; +}); + +connection.query('SELECT 1', function(err) { + assert.equal(errors.b, undefined); + errors.b = err; +}); + +process.on('exit', function() { + assert.equal(errors.a.code, 'ECONNREFUSED'); + assert.equal(errors.a.fatal, true); + assert.strictEqual(errors.a, errors.b); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js new file mode 100644 index 0000000..6575be6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js @@ -0,0 +1,17 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +connection.connect(); +connection.query('SELECT 1'); + +var err; +connection.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +process.on('exit', function() { + assert.equal(err.code, 'ECONNREFUSED'); + assert.equal(err.fatal, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js new file mode 100644 index 0000000..3c26147 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js @@ -0,0 +1,19 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +connection.connect(); +var query = connection.query('SELECT 1'); + +var err; +query.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(err.code, 'ECONNREFUSED'); + assert.equal(err.fatal, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js new file mode 100644 index 0000000..f831628 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.fakeServerPort}); +var assert = require('assert'); + +var server = common.createFakeServer(); + +var connectErr; +server.listen(common.fakeServerPort, function(err) { + if (err) throw err; + + connection.connect(function(err) { + connectErr = err; + server.destroy(); + }); +}); + +server.on('connection', function(incomingConnection) { + var errno = 1130; // ER_HOST_NOT_PRIVILEGED + incomingConnection.deny('You suck.', errno); +}); + +process.on('exit', function() { + assert.equal(connectErr.code, 'ER_HOST_NOT_PRIVILEGED'); + assert.ok(/You suck/.test(connectErr.message)); + assert.equal(connectErr.fatal, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js new file mode 100644 index 0000000..5db2e9d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js @@ -0,0 +1,16 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var rows = undefined; +connection.query('SELECT 1', function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.deepEqual(rows, [{1: 1}]); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js new file mode 100644 index 0000000..b00071e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'insert_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var result; +connection.query('INSERT INTO ' + table + ' SET ?', {title: 'test'}, function(err, _result) { + if (err) throw err; + + result = _result; +}); +connection.end(); + +process.on('exit', function() { + assert.strictEqual(result.insertId, 1); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js new file mode 100644 index 0000000..397819a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js @@ -0,0 +1,55 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'load_data_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var path = common.fixtures + '/data.csv'; +var sql = + 'LOAD DATA LOCAL INFILE ? INTO TABLE ' + table + ' ' + + 'FIELDS TERMINATED BY ? (id, title)'; + +var ok; +connection.query(sql, [path, ','], function(err, _ok) { + if (err) throw err; + + ok = _ok; +}); + +var rows; +connection.query('SELECT * FROM ' + table, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +// Try to load a file that does not exist to see if we handle this properly +var loadErr; +var loadResult; +var badPath = common.fixtures + '/does_not_exist.csv'; + +connection.query(sql, [badPath, ','], function(err, result) { + loadErr = err; + loadResult = result; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(ok.affectedRows, 3); + assert.equal(rows.length, 3); + assert.equal(rows[0].id, 1); + assert.equal(rows[0].title, 'Hello World'); + + assert.equal(loadErr.code, 'ENOENT'); + assert.equal(loadResult.affectedRows, 0); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js new file mode 100644 index 0000000..9b95598 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js @@ -0,0 +1,12 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.bogusPort}); +var assert = require('assert'); + +var err; +connection.connect(function(_err) { + err = _err; +}); + +process.on('exit', function() { + assert.ok(err.stack.indexOf(__filename) > 0); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js new file mode 100644 index 0000000..def47fc --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js @@ -0,0 +1,16 @@ +// Experimental: https://github.com/felixge/node-mysql/issues/198 + +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var err; +connection.query('invalid sql', function(_err) { + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.ok(err.stack.indexOf(__filename) > 0); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js new file mode 100644 index 0000000..b80817f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js @@ -0,0 +1,55 @@ +var common = require('../../common'); +var connection = common.createConnection({multipleStatements: true}); +var assert = require('assert'); + +var sql = [ + 'SELECT 1', + 'USE ' + common.testDatabase, + 'SELECT 2', + 'invalid sql', + 'SELECT 3', +].join('; '); + +var results = []; +var fields = []; +var hadErr = false; + +var query = connection.query(sql); +query + .on('error', function(err) { + assert.equal(hadErr, false); + hadErr = true; + + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.equal(err.index, 3); + }) + .on('fields', function(_fields, index) { + fields.push({fields: _fields, index: index}); + }) + .on('result', function(result, index) { + results.push({result: result, index: index}); + }); + +connection.end(); + +process.on('exit', function() { + assert.ok(hadErr); + + assert.equal(results.length, 3); + + assert.deepEqual(results[0].result, {1: 1}); + assert.equal(results[0].index, 0); + + assert.equal(results[1].result.constructor.name, 'OkPacket'); + assert.equal(results[1].index, 1); + + assert.deepEqual(results[2].result, {2: 2}); + assert.equal(results[2].index, 2); + + assert.equal(fields.length, 2); + assert.equal(fields[0].fields[0].name, '1'); + assert.equal(fields[1].fields[0].name, '2'); + + assert.equal(fields[0].index, 0); + assert.equal(fields[1].index, 2); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js new file mode 100644 index 0000000..11056cf --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection({multipleStatements: true}); +var assert = require('assert'); + +var sql = [ + 'SELECT 1', + 'invalid sql', + 'SELECT 2', +].join('; '); + +var finishedQueryOne = false; +connection.query(sql, function(err, results, fields) { + assert.equal(finishedQueryOne, false); + finishedQueryOne = true; + + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.deepEqual(results, [[{1: 1}]]); + + assert.equal(fields.length, 1); + assert.equal(fields[0][0].name, '1'); +}); + +var finishedQueryTwo = false; +connection.query('SELECT 3', function(err, results) { + assert.equal(finishedQueryTwo, false); + finishedQueryTwo = true; + + assert.deepEqual(results, [{3: 3}]); +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(finishedQueryOne, true); + assert.equal(finishedQueryTwo, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js new file mode 100644 index 0000000..f60d3e4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js @@ -0,0 +1,31 @@ +var common = require('../../common'); +var connection = common.createConnection({multipleStatements: true}); +var assert = require('assert'); + +var sql = [ + 'SELECT 1', + 'USE ' + common.testDatabase, + 'SELECT 2', +].join('; '); + +var results; +var fields; +connection.query(sql, function(err, _results, _fields) { + if (err) throw err; + + results = _results; + fields = _fields; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(results.length, 3); + assert.deepEqual(results[0], [{1: 1}]); + assert.strictEqual(results[1].constructor.name, 'OkPacket'); + assert.deepEqual(results[2], [{2: 2}]); + + assert.equal(fields[0][0].name, '1'); + assert.equal(fields[1], undefined); + assert.equal(fields[2][0].name, '2'); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js new file mode 100644 index 0000000..be6f3e5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js @@ -0,0 +1,48 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'nested_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ' + table + ' SET ?', {title: 'test'}); + +var options1 = { + nestTables: true, + sql: 'SELECT * FROM ' + table +}; +var options2 = { + nestTables: '_', + sql: 'SELECT * FROM ' + table +}; +var rows1, rows2; + +connection.query(options1, function(err, _rows) { + if (err) throw err; + + rows1 = _rows; +}); +connection.query(options2, function(err, _rows) { + if (err) throw err; + + rows2 = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows1.length, 1); + assert.equal(rows1[0].nested_test.id, 1); + assert.equal(rows1[0].nested_test.title, 'test'); + assert.equal(rows2.length, 1); + assert.equal(rows2[0].nested_test_id, 1); + assert.equal(rows2[0].nested_test_title, 'test'); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js new file mode 100644 index 0000000..384559b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js @@ -0,0 +1,19 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); +connection.query('INVALID SQL'); + +var err; +connection.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.equal(Boolean(err.fatal), false); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js new file mode 100644 index 0000000..414b391 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js @@ -0,0 +1,19 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); +var query = connection.query('INVALID SQL'); + +var err; +query.on('error', function(_err) { + assert.equal(err, undefined); + err = _err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(err.code, 'ER_PARSE_ERROR'); + assert.equal(Boolean(err.fatal), false); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js new file mode 100644 index 0000000..3662510 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js @@ -0,0 +1,35 @@ +var common = require('../../common'); +var connection = common.createConnection({ + port : common.fakeServerPort, + password : 'oldpw', + insecureAuth : true, +}); +var assert = require('assert'); + +var server = common.createFakeServer(); + +var connected; +server.listen(common.fakeServerPort, function(err) { + if (err) throw err; + + connection.connect(function(err, result) { + if (err) throw err; + + connected = result; + + connection.destroy(); + server.destroy(); + }); +}); + +server.on('connection', function(incomingConnection) { + incomingConnection.handshake({ + user : connection.config.user, + password : connection.config.password, + oldPassword : true, + }); +}); + +process.on('exit', function() { + assert.equal(connected.fieldCount, 0); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js new file mode 100644 index 0000000..25c3135 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js @@ -0,0 +1,15 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var pingErr; + +connection.ping(function(err) { + pingErr = err; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(pingErr, null); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js new file mode 100644 index 0000000..fc5338d --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js @@ -0,0 +1,40 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var procedureName = 'multipleSelectProcedure'; +var input0 = 1; +var input1 = 1000; +var fieldName0 = 'param0'; +var fieldName1 = 'param1'; +var result = undefined; + +connection.query([ + 'CREATE DEFINER=root@localhost PROCEDURE '+procedureName+'(IN '+fieldName0+' INT, IN '+fieldName1+' INT)', + 'BEGIN', + 'SELECT '+fieldName0+';', + 'SELECT '+fieldName1+';', + 'END' +].join('\n')); + +connection.query('CALL '+procedureName+'(?,?)', [input0,input1], function(err, _result) { + if (err) throw err; + + _result.pop(); // drop metadata + result = _result; +}); + +connection.query('DROP PROCEDURE '+procedureName); + +connection.end(); + +process.on('exit', function() { + var result0Expected = {}; + result0Expected[fieldName0] = input0; + var result1Expected = {}; + result1Expected[fieldName1] = input1; + + assert.deepEqual(result, [[result0Expected], [result1Expected]]); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js new file mode 100644 index 0000000..72ac750 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js @@ -0,0 +1,33 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var procedureName = 'singleSelectProcedure'; +var input = 1; +var fieldName = 'param'; +var result = undefined; + +connection.query([ + 'CREATE DEFINER=root@localhost PROCEDURE '+procedureName+'(IN '+fieldName+' INT)', + 'BEGIN', + 'SELECT '+fieldName+';', + 'END' +].join('\n')); + +connection.query('CALL '+procedureName+'(?)', [input], function(err, _result) { + if (err) throw err; + _result.pop(); // drop metadata + result = _result; +}); + +connection.query('DROP PROCEDURE '+procedureName); + +connection.end(); + +process.on('exit', function() { + var expected = {}; + expected[fieldName] = input; + assert.deepEqual(result, [[expected]]); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js new file mode 100644 index 0000000..22cb678 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js @@ -0,0 +1,17 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var err; +connection.connect(function() { + connection.destroy(); + + connection.query('SELECT 1', function(_err) { + err = _err; + }); +}); + +process.on('exit', function() { + assert.equal(err.fatal, false); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_DESTROY'); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js new file mode 100644 index 0000000..302d958 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js @@ -0,0 +1,23 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var didEnd = false; +connection.connect(); +connection.end(function(err) { + if (err) throw err; + + didEnd = true; +}); + +var err; +connection.on('error', function(_err) { + err = _err; +}); +connection.query('SELECT 1'); + +process.on('exit', function() { + assert.equal(didEnd, true); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_QUIT'); + assert.equal(err.fatal, false); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js new file mode 100644 index 0000000..e907b48 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js @@ -0,0 +1,23 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var didEnd = false; +connection.connect(); +connection.end(function(err) { + if (err) throw err; + + didEnd = true; +}); + +var err; +connection.query('SELECT 1', function(_err) { + assert.equal(didEnd, false); + err = _err; +}); + +process.on('exit', function() { + assert.equal(didEnd, true); + assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_QUIT'); + assert.equal(err.fatal, false); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js new file mode 100644 index 0000000..a8f1c65 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js @@ -0,0 +1,42 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); +var util = require('util'); + +common.useTestDb(connection); + +var table = 'dates_as_strings'; +var rows; + +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`dt` DATE,', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ' + table + ' SET ?', {dt: '0000-00-00'}); +connection.query('INSERT INTO ' + table + ' SET ?', {dt: '2013-00-00'}); +connection.query('INSERT INTO ' + table + ' SET ?', {dt: '2013-03-00'}); +connection.query('INSERT INTO ' + table + ' SET ?', {dt: '2013-03-01'}); + +connection.query('SELECT * FROM ' + table, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, 4); + assert.equal(rows[0].id, 1); + assert.equal(rows[0].dt, '0000-00-00'); + assert.equal(rows[1].id, 2); + assert.equal(rows[1].dt, '2013-00-00'); + assert.equal(rows[2].id, 3); + assert.equal(rows[2].dt, '2013-03-00'); + assert.equal(rows[3].id, 4); + assert(util.isDate(rows[3].dt)); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js new file mode 100644 index 0000000..6349b0e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js @@ -0,0 +1,31 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'escape_id_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`example` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ?? SET ?? = ?, ?? = ?', [ table, 'id', 1, 'example', 'id escape']); + +var rows; +connection.query('SELECT * FROM ??', [ table ], function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + + +process.on('exit', function() { + assert.equal(rows.length, 1); + assert.deepEqual(rows[0], {id: 1, example: 'id escape'}); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js new file mode 100644 index 0000000..145733f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'escape_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`example` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ' + table + ' SET id = ?, example = ?', [1, 'array escape']); +connection.query('INSERT INTO ' + table + ' SET ?', { + id: 2, + example: 'object escape' +}); + +var rows; +connection.query('SELECT * FROM escape_test', function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + + +process.on('exit', function() { + assert.equal(rows.length, 2); + assert.deepEqual(rows[0], {id: 1, example: 'array escape'}); + assert.deepEqual(rows[1], {id: 2, example: 'object escape'}); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js new file mode 100644 index 0000000..64fa83a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js @@ -0,0 +1,21 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(); + +var rows = undefined; +var fields = undefined; +connection.query('SELECT 1', function(err, _rows, _fields) { + if (err) throw err; + + rows = _rows; + fields = _fields; +}); + +connection.end(); + +process.on('exit', function() { + assert.deepEqual(rows, [{1: 1}]); + assert.equal(fields[0].name, '1'); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js new file mode 100644 index 0000000..8e10ce7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js @@ -0,0 +1,16 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var rows; +connection.query('SELECT ""', function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.deepEqual(rows, [{'': ''}]); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js new file mode 100644 index 0000000..3509af7 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js @@ -0,0 +1,81 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.connect(function(err) { + if (err) throw err; + + getMaxAllowedPacket(); +}); + + +var oldMaxAllowedPacket; +function getMaxAllowedPacket() { + connection.query('SHOW VARIABLES WHERE Variable_name = ?', ['max_allowed_packet'], function(err, rows) { + if (err) throw err; + + oldMaxAllowedPacket = Number(rows[0].Value); + + increaseMaxAllowedPacketIfNeeded(); + }); +} + +function increaseMaxAllowedPacketIfNeeded() { + // Our test generates a SQL query a few bytes larger than 16 MB, but lets + // leave a little margin: + var minMaxAllowedPacket = 20 * 1024 * 1024; + + var newMaxAllowedPacket = (oldMaxAllowedPacket < minMaxAllowedPacket) + ? minMaxAllowedPacket + : oldMaxAllowedPacket; + + connection.query('SET GLOBAL max_allowed_packet = ?', [newMaxAllowedPacket], function(err, rows) { + if (err) throw err; + + + // We need to re-connect for this change to take effect, bah + connection.end(); + connection = common.createConnection(); + + // We need to wait for the re-connect to happen before starting the actual + // test. That's because our buffer to hex shim in 0.4.x takes ~12 sec on + // TravisCI, causing a MySQL connection timeout otherwise. + connection.connect(function(err) { + if (err) throw err; + + triggerLargeQueryAndResponsePackets(); + }); + }); +} + +var rows = []; +var length = Math.pow(256, 3) / 2; // Half, because of hex encoding +var buffer = new Buffer(length); +var sql = 'SELECT ? as bigField'; + +function triggerLargeQueryAndResponsePackets() { + connection.query(sql, [buffer], function(err, _rows) { + if (err) throw err; + + rows = _rows; + + resetMaxAllowedPacket(); + }); +} + +function resetMaxAllowedPacket() { + connection.query('SET GLOBAL max_allowed_packet = ?', [oldMaxAllowedPacket], function(err, rows) { + if (err) { + err.message = 'Could not reset max_allowed_packet size, please check your server settings: ' + err.message; + throw err; + } + }); + + connection.end(); +} + + +process.on('exit', function() { + assert.equal(rows.length, 1); + assert.equal(rows[0].bigField.length, length); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js new file mode 100644 index 0000000..b4ec403 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js @@ -0,0 +1,24 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +connection.query('SET wait_timeout = 1'); + +var errorErr; +var endErr; +connection + .on('end', function(err) { + assert.ok(!endErr); + endErr = err; + }) + .on('error', function(err) { + assert.ok(!errorErr); + errorErr = err; + }); + +process.on('exit', function() { + assert.strictEqual(errorErr.code, 'PROTOCOL_CONNECTION_LOST'); + assert.strictEqual(errorErr.fatal, true); + + assert.strictEqual(endErr, errorErr); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js new file mode 100644 index 0000000..6bb5957 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js @@ -0,0 +1,36 @@ +var common = require('../../common'); +var connection = common.createConnection({port: common.fakeServerPort}); +var assert = require('assert'); + +var endErr; +connection.on('end', function(err) { + assert.ok(!endErr); + endErr = err; +}); + +var queryErr; + +var server = common.createFakeServer(); +server.listen(common.fakeServerPort, function(err) { + if (err) throw err; + + connection.query('SELECT 1', function(err) { + assert.ok(!queryErr); + queryErr = err; + }); +}); + +server.on('connection', function(connection) { + connection.handshake(); + + connection.on('query', function(packet) { + server.destroy(); + }); +}); + +process.on('exit', function() { + assert.strictEqual(queryErr.code, 'PROTOCOL_CONNECTION_LOST'); + assert.strictEqual(queryErr.fatal, true); + + assert.strictEqual(endErr, queryErr); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js new file mode 100644 index 0000000..5fc9865 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +var statsErr, statsData; + +connection.statistics(function(err, data) { + statsErr = err; + statsData = data; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(statsErr, null); + assert.strictEqual(typeof statsData, "object"); + assert.strictEqual(statsData.hasOwnProperty("message"), true); + assert.strictEqual(statsData.hasOwnProperty("uptime"), true); + assert.strictEqual(statsData.hasOwnProperty("threads"), true); + assert.strictEqual(statsData.hasOwnProperty("questions"), true); + assert.strictEqual(statsData.hasOwnProperty("slow_queries"), true); + assert.strictEqual(statsData.hasOwnProperty("opens"), true); + assert.strictEqual(statsData.hasOwnProperty("flush_tables"), true); + assert.strictEqual(statsData.hasOwnProperty("open_tables"), true); + assert.strictEqual(statsData.hasOwnProperty("queries_per_second_avg"), true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js new file mode 100644 index 0000000..48a80b2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js @@ -0,0 +1,46 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'stream_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +var query = connection.query('SELECT * FROM ' + table); + +var hadEnd = false; +var rows = []; +var fields = undefined; +query.on('result', function(row) { + connection.pause(); + connection.resume(); + + rows.push(row); +}) +.on('end', function() { + hadEnd = true; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, rowCount); + assert.equal(hadEnd, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js new file mode 100644 index 0000000..8ea45da --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js @@ -0,0 +1,65 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'stream_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +var paused = false; +var query = connection.query('SELECT * FROM ' + table); + +var hadEnd = 0; +var rows = []; +var fields = undefined; +query + .on('fields', function(_fields, index) { + assert.equal(index, 0); + assert.ok(!fields); + + fields = _fields; + }) + .on('result', function(row) { + // Make sure we never receive a row while being paused + assert.equal(paused, false); + + paused = true; + connection.pause(); + + setTimeout(function() { + paused = false; + connection.resume(); + + rows.push(row); + }, 10); + }) + .on('end', function() { + hadEnd = true; + }); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, 10); + assert.equal(hadEnd, true); + + assert.equal(fields[0].name, 'id'); + assert.equal(fields[1].name, 'title'); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js new file mode 100644 index 0000000..dd59de4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js @@ -0,0 +1,67 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'timezone_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '`(', + '`offset` varchar(10),', + '`dt` datetime', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var tests = [ 0, 1, 5, 12, 26, -1, -5, -20, 'Z', 'local' ]; + +connection.query('DELETE FROM ' + table); + +testNextDate(); + +function testNextDate() { + if (tests.length === 0) { + return connection.end(); + } + + var test = tests.pop(); + + testDate(test, function () { + testNextDate(); + }); +} + +function testDate(offset, cb) { + var dt = new Date(); + + if (offset == 'Z' || offset == 'local') { + connection.config.timezone = offset; + } else { + connection.config.timezone = (offset < 0 ? "-" : "+") + pad2(Math.abs(offset)) + ":00"; + } + connection.query('INSERT INTO ' + table + ' SET ?', { offset: offset, dt: dt }); + + if (offset == 'Z') { + dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); + } else if (offset != 'local') { + dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000) + (offset * 3600000)); + } + + connection.query({ + sql: 'SELECT * FROM ' + table + ' WHERE offset = \'' + offset + '\'', + typeCast: function (field, next) { + if (field.type != 'DATETIME') return next(); + + return new Date(field.string()); + } + }, function (err, result) { + if (err) throw err; + + assert.strictEqual(dt.toString(), result[0].dt.toString()); + + return cb(); + }); +} + +function pad2(v) { + return (v < 10 ? "0" : "") + v; +} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js new file mode 100644 index 0000000..86015a6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js @@ -0,0 +1,41 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'transaction_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('START TRANSACTION'); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +connection.query('COMMIT'); + +var rows = []; +var query = connection.query('SELECT * FROM ' + table, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, rowCount); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js new file mode 100644 index 0000000..f06bee5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js @@ -0,0 +1,41 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'transaction_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`title` varchar(255),', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('START TRANSACTION'); + +var rowCount = 10; +for (var i = 1; i <= rowCount; i++) { + var row = { + id: i, + title: 'Row #' + i, + }; + + connection.query('INSERT INTO ' + table + ' SET ?', row); +} + +connection.query('ROLLBACK'); + +var rows; +var query = connection.query('SELECT * FROM ' + table, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + assert.equal(rows.length, 0); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js new file mode 100644 index 0000000..f5718f4 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js @@ -0,0 +1,34 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'insert_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`date` DATETIME NULL,', + '`number` INT NULL,', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +connection.query('INSERT INTO ' + table + ' SET ?', { + date : null, + number : null, +}); + +var results; +connection.query('SELECT * FROM ' + table, function(err, _results) { + if (err) throw err; + + results = _results; +}); + +connection.end(); + +process.on('exit', function() { + assert.strictEqual(results[0].date, null); + assert.strictEqual(results[0].number, null); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js new file mode 100644 index 0000000..0a6dda5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js @@ -0,0 +1,37 @@ +var common = require('../../common'); +var connection = common.createConnection({typeCast: true}); +var assert = require('assert'); +var util = require('util'); + +connection.connect(); + +var options = { + sql : "SELECT NOW() as date, POINT(1.2,-3.4) as point", + typeCast : false +}; + +var rows; +var query = connection.query(options, function(err, _rows) { + if (err) throw err; + + rows = _rows; +}); + +connection.end(); + +process.on('exit', function() { + var point = rows[0].point; + var byteOrder = point.readUInt8(4); + var wkbType = byteOrder? point.readUInt32LE(5) : point.readUInt32BE(5); + var x = byteOrder? point.readDoubleLE(9) : point.readDoubleBE(9); + var y = byteOrder? point.readDoubleLE(17) : point.readDoubleBE(17); + + assert.strictEqual(typeof rows[0].date, 'object'); + assert.equal(Buffer.isBuffer(rows[0].date), true); + assert.strictEqual(typeof point, 'object'); + assert.equal(Buffer.isBuffer(point), true); + assert.equal(point.readUInt32LE(0), 0); // unknown + assert.equal(wkbType, 1); // WKBPoint + assert.equal(x, 1.2); + assert.equal(y, -3.4); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js new file mode 100644 index 0000000..781ce6f --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js @@ -0,0 +1,118 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var tests = [ + {type: 'decimal(3,3)', insert: '0.330', expect: 0.33 }, + {type: 'decimal(3,3)', insert: 0.33}, + {type: 'tinyint', insert: 1}, + {type: 'smallint', insert: 2}, + {type: 'int', insert: 3}, + {type: 'float', insert: 4.5}, + {type: 'double', insert: 5.5}, + {type: 'bigint', insert: '6', expect: 6}, + {type: 'bigint', insert: 6}, + {type: 'mediumint', insert: 7}, + {type: 'year', insert: 2012}, + {type: 'timestamp', insert: new Date('2012-05-12 11:00:23')}, + {type: 'datetime', insert: new Date('2012-05-12 12:00:23')}, + {type: 'date', insert: new Date('2012-05-12 00:00:00 Z')}, + {type: 'time', insert: '13:13:23'}, + {type: 'binary(4)', insert: new Buffer([0, 1, 254, 255])}, + {type: 'varbinary(4)', insert: new Buffer([0, 1, 254, 255])}, + {type: 'tinyblob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'mediumblob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'longblob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'blob', insert: new Buffer([0, 1, 254, 255])}, + {type: 'bit(32)', insert: new Buffer([0, 1, 254, 255])}, + {type: 'char(5)', insert: 'Hello'}, + {type: 'varchar(5)', insert: 'Hello'}, + {type: 'varchar(3) character set utf8 collate utf8_bin', insert: 'bin'}, + {type: 'tinytext', insert: 'Hello World'}, + {type: 'mediumtext', insert: 'Hello World'}, + {type: 'longtext', insert: 'Hello World'}, + {type: 'text', insert: 'Hello World'}, + {type: 'point', insertRaw: 'POINT(1.2,-3.4)', expect: {x:1.2, y:-3.4}, deep: true}, + {type: 'point', insertRaw: (function() { + var buffer = new Buffer(21); + buffer.writeUInt8(1, 0); + buffer.writeUInt32LE(1, 1); + buffer.writeDoubleLE(-5.6, 5); + buffer.writeDoubleLE(10.23, 13); + return 'GeomFromWKB(' + connection.escape(buffer) + ')'; + })(), expect: {x:-5.6, y:10.23}, deep: true}, + {type: 'linestring', insertRaw: 'LINESTRING(POINT(1.2,-3.4),POINT(-5.6,10.23),POINT(0.2,0.7))', expect: [{x:1.2, y:-3.4}, {x:-5.6, y:10.23}, {x:0.2, y:0.7}], deep: true}, + {type: 'polygon', insertRaw: "GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')", expect: [[{x:0,y:0},{x:10,y:0},{x:10,y:10},{x:0,y:10},{x:0,y:0}],[{x:5,y:5},{x:7,y:5},{x:7,y:7},{x:5,y:7},{x:5,y:5}]], deep: true}, + {type: 'geometry', insertRaw: 'POINT(1.2,-3.4)', expect: {x:1.2, y:-3.4}, deep: true}, + {type: 'multipoint', insertRaw: "GeomFromText('MULTIPOINT(0 0, 20 20, 60 60)')", expect: [{x:0, y:0}, {x:20, y:20}, {x:60, y:60}], deep: true}, + {type: 'multilinestring', insertRaw: "GeomFromText('MULTILINESTRING((10 10, 20 20), (15 15, 30 15))')", expect: [[{x:10,y:10},{x:20,y:20}],[{x:15,y:15},{x:30,y:15}]], deep: true}, + {type: 'multipolygon', insertRaw: "GeomFromText('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))')", expect: [[[{x:0,y:0},{x:10,y:0},{x:10,y:10},{x:0,y:10},{x:0,y:0}]],[[{x:5,y:5},{x:7,y:5},{x:7,y:7},{x:5,y:7},{x:5,y:5}]]], deep: true}, + {type: 'geometrycollection', insertRaw: "GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))')", expect: [{x:10,y:10},{x:30,y:30},[{x:15,y:15},{x:20,y:20}]], deep: true} +]; + +var table = 'type_casting'; + +var schema = []; +var inserts = []; + +tests.forEach(function(test, index) { + var escaped = test.insertRaw || connection.escape(test.insert); + + test.columnName = test.type + '_' + index; + + schema.push('`' + test.columnName + '` ' + test.type + ','); + inserts.push('`' + test.columnName + '` = ' + escaped); +}); + +var createTable = [ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,' + ].concat(schema).concat([ + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +]).join('\n'); + +connection.query(createTable); + +connection.query('INSERT INTO ' + table + ' SET' + inserts.join(',\n')); + +var row; +connection.query('SELECT * FROM type_casting', function(err, rows) { + if (err) throw err; + + row = rows[0]; +}); + +connection.end(); + +process.on('exit', function() { + tests.forEach(function(test) { + var expected = test.expect || test.insert; + var got = row[test.columnName]; + var message; + + if (expected instanceof Date) { + assert.equal(got instanceof Date, true, test.type); + + expected = String(expected); + got = String(got); + } else if (Buffer.isBuffer(expected)) { + assert.equal(Buffer.isBuffer(got), true, test.type); + + expected = String(Array.prototype.slice.call(expected)); + got = String(Array.prototype.slice.call(got)); + } + + if (test.deep) { + message = 'got: "' + JSON.stringify(got) + '" expected: "' + JSON.stringify(expected) + + '" test: ' + test.type + ''; + assert.deepEqual(expected, got, message); + } else { + message = 'got: "' + got + '" (' + (typeof got) + ') expected: "' + expected + + '" (' + (typeof expected) + ') test: ' + test.type + ''; + assert.strictEqual(expected, got, message); + } + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js new file mode 100644 index 0000000..229395e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js @@ -0,0 +1,32 @@ +var common = require('../../common'); +var connection = common.createConnection({socketPath: common.fakeServerSocket}); +var assert = require('assert'); + +var server = common.createFakeServer(); +var didConnect = false; +server.listen(common.fakeServerSocket, function(err) { + if (err) throw err; + + connection.connect(function(err) { + if (err) throw err; + + assert.equal(didConnect, false); + didConnect = true; + + connection.destroy(); + server.destroy(); + }); +}); + +var hadConnection = false; +server.on('connection', function(connection) { + connection.handshake(); + + assert.equal(hadConnection, false); + hadConnection = true; +}); + +process.on('exit', function() { + assert.equal(didConnect, true); + assert.equal(hadConnection, true); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js new file mode 100644 index 0000000..49176da --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js @@ -0,0 +1,39 @@ +var common = require('../../common'); +var connection = common.createConnection(); +var assert = require('assert'); + +common.useTestDb(connection); + +var table = 'zerofill_results_test'; +connection.query([ + 'CREATE TEMPORARY TABLE `' + table + '` (', + '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', + '`num` int(5) UNSIGNED ZEROFILL,', + 'PRIMARY KEY (`id`)', + ') ENGINE=InnoDB DEFAULT CHARSET=utf8' +].join('\n')); + +var test_numbers = [ "00000", "00001", "00012", "00123", "01234", "12345", null ]; +var results = {}; + +for (var i = 0; i < test_numbers.length; i++) { + connection.query('INSERT INTO ' + table + ' SET ?', { + id: (i + 1), + num: (test_numbers[i] !== null ? parseInt(test_numbers[i], 10) : null) + }, function (err, _result) { + if (err) throw err; + }); +} +connection.query('SELECT * FROM ' + table, function (err, _results) { + if (err) throw err; + + results = _results; +}); +connection.end(); + +process.on('exit', function() { + assert.strictEqual(results.length, test_numbers.length); + for (var i = 0; i < results.length; i++) { + assert.strictEqual(test_numbers[results[i].id - 1], (results[i].num !== null ? "" + results[i].num : null)); + } +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js new file mode 100644 index 0000000..4e7c46e --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js @@ -0,0 +1,26 @@ +var common = require('../../common'); +var assert = require('assert'); +var pool = common.createPool({ + connectionLimit : 1, + waitForConnections : false +}); + +pool.getConnection(function(err, connection) { + if (err) throw err; + pool.getConnection(function(err) { + assert.ok(err); + + var shouldGetConnection = false; + pool.config.waitForConnections = true; + pool.getConnection(function(err, connection2) { + if (err) throw err; + assert.ok(shouldGetConnection); + assert.strictEqual(connection, connection2); + + pool.end(); + }); + + shouldGetConnection = true; + connection.end(); + }); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js new file mode 100644 index 0000000..2b47616 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js @@ -0,0 +1,17 @@ +var common = require('../../common'); +var assert = require('assert'); +var Connection = require(common.lib + '/Connection'); +var pool = common.createPool(); + +pool.getConnection(function(err, connection) { + if (err) throw err; + assert.strictEqual(connection, pool._allConnections[0]); + connection.destroy(); + + assert.ok(pool._allConnections.length == 0); + assert.ok(connection._poolRemoved); + assert.strictEqual(connection.end, Connection.prototype.end); + assert.strictEqual(connection.destroy, Connection.prototype.destroy); + + pool.end(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js new file mode 100644 index 0000000..15bd9d5 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js @@ -0,0 +1,13 @@ +var common = require('../../common'); +var assert = require('assert'); +var pool = common.createPool(); +var poolEnded = false; + +pool.end(function(err) { + poolEnded = true; + if (err) throw err; +}); + +process.on('exit', function() { + assert(poolEnded); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js new file mode 100644 index 0000000..9739ad8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js @@ -0,0 +1,10 @@ +var common = require('../../common'); +var assert = require('assert'); +var Connection = require(common.lib + '/Connection'); +var pool = common.createPool(); + +pool.getConnection(function(err, connection) { + if (err) throw err; + assert.ok(connection instanceof Connection); + pool.end(); +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/run.js b/nodejs-mysql-tutorial/node_modules/mysql/test/run.js new file mode 100644 index 0000000..a58d5ce --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/run.js @@ -0,0 +1,7 @@ +var options = {}; + +if (process.env.FILTER) { + options.include = new RegExp(process.env.FILTER + '.*\\.js$'); +} + +require('urun')(__dirname, options); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js new file mode 100644 index 0000000..fef7ae8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js @@ -0,0 +1,125 @@ +var common = require('../../common'); +var test = require('utest'); +var assert = require('assert'); +var Parser = require(common.lib + '/protocol/Parser'); + +function packet(bytes) { + var buffer = new Buffer(bytes); + var parser = new Parser(); + + parser.append(buffer); + + return parser; +} + +test('Parser', { + "parseBuffer: buffer won\'t change after appending another one": function() { + var startBuffer = new Buffer(5); + startBuffer.fill('a'); + + var parser = new Parser(); + parser.append(startBuffer); + + var value = parser.parseBuffer(4); + + assert.equal(value.toString(), 'aaaa'); + + parser.append(new Buffer('b')); + + assert.equal(value.toString(), 'aaaa'); + }, + + 'parseUnsignedNumber: 1 byte': function() { + var value = packet([5]).parseUnsignedNumber(1); + assert.equal(value, 5); + }, + + 'parseUnsignedNumber: 2 bytes': function() { + var value = packet([1, 1]).parseUnsignedNumber(2); + assert.equal(value, 256 + 1); + }, + + 'parseUnsignedNumber: honors offsets': function() { + var parser = packet([1, 2]); + assert.equal(parser.parseUnsignedNumber(1), 1); + assert.equal(parser.parseUnsignedNumber(1), 2); + }, + + 'parseLengthCodedNumber: 1 byte': function() { + var parser = packet([250]); + assert.strictEqual(parser.parseLengthCodedNumber(), 250); + }, + + 'parseLengthCodedNumber: 251 = null': function() { + var parser = packet([251]); + assert.strictEqual(parser.parseLengthCodedNumber(), null); + }, + + 'parseLengthCodedNumber: 252 = 16 bit': function() { + var parser = packet([252, 2, 1]); + var expected = + 2 * Math.pow(256, 0) + + 1 * Math.pow(256, 1); + assert.strictEqual(parser.parseLengthCodedNumber(), expected); + }, + + 'parseLengthCodedNumber: 253 = 24 bit': function() { + var parser = packet([253, 3, 2, 1]); + var expected = + 3 * Math.pow(256, 0) + + 2 * Math.pow(256, 1) + + 1 * Math.pow(256, 2); + + assert.strictEqual(parser.parseLengthCodedNumber(), expected); + }, + + 'parseLengthCodedNumber: 254 = 64 bit': function() { + var parser = packet([254, 8, 7, 6, 5, 4, 3, 2, 0]); + var expected = + 8 * Math.pow(256, 0) + + 7 * Math.pow(256, 1) + + 6 * Math.pow(256, 2) + + 5 * Math.pow(256, 3) + + 4 * Math.pow(256, 4) + + 3 * Math.pow(256, 5) + + 2 * Math.pow(256, 6) + + 0 * Math.pow(256, 7); + + assert.strictEqual(parser.parseLengthCodedNumber(), expected); + }, + + 'parseLengthCodedNumber: < 53 bit = no problemo': function() { + var parser = packet([254, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00]); + assert.strictEqual(parser.parseLengthCodedNumber(), Math.pow(2, 53) - 1); + }, + + 'parseLengthCodedNumber: 53 bit = Error': function() { + var parser = packet([254, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00]); + assert.throws(function() { + parser.parseLengthCodedNumber(); + }, /precision/i); + }, + + 'parseLengthCodedNumber: 255 = Error': function() { + var parser = packet([255]); + assert.throws(function() { + parser.parseLengthCodedNumber(); + }, /unexpected/i); + }, + + 'parsePacketTerminatedString: regular case': function() { + var parser = packet([0x48, 0x69]); + parser._packetEnd = 2; + + var str = parser.parsePacketTerminatedString(); + assert.equal(str, 'Hi'); + }, + + 'parsePacketTerminatedString: 0x00 terminated': function() { + var parser = packet([0x48, 0x69, 0x00]); + parser._packetEnd = 2; + + var str = parser.parsePacketTerminatedString(); + assert.equal(str, 'Hi'); + }, +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js new file mode 100644 index 0000000..ed156be --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js @@ -0,0 +1,132 @@ +var common = require('../../common'); +var test = require('utest'); +var assert = require('assert'); +var SqlString = require(common.lib + '/protocol/SqlString'); + +test('SqlString.escape', { + 'undefined -> NULL': function() { + assert.equal(SqlString.escape(undefined), 'NULL'); + }, + + 'null -> NULL': function() { + assert.equal(SqlString.escape(null), 'NULL'); + }, + + 'booleans convert to strings': function() { + assert.equal(SqlString.escape(false), 'false'); + assert.equal(SqlString.escape(true), 'true'); + }, + + 'numbers convert to strings': function() { + assert.equal(SqlString.escape(5), '5'); + }, + + 'objects are turned into key value pairs': function() { + assert.equal(SqlString.escape({a: 'b', c: 'd'}), "`a` = 'b', `c` = 'd'"); + }, + + 'objects function properties are ignored': function() { + assert.equal(SqlString.escape({a: 'b', c: function() {}}), "`a` = 'b'"); + }, + + 'nested objects are cast to strings': function() { + assert.equal(SqlString.escape({a: {nested: true}}), "`a` = '[object Object]'"); + }, + + 'arrays are turned into lists': function() { + assert.equal(SqlString.escape([1, 2, 'c']), "1, 2, 'c'"); + }, + + 'nested arrays are turned into grouped lists': function() { + assert.equal(SqlString.escape([[1,2,3], [4,5,6], ['a', 'b', {nested: true}]]), "(1, 2, 3), (4, 5, 6), ('a', 'b', '[object Object]')"); + }, + + 'nested objects inside arrays are cast to strings': function() { + assert.equal(SqlString.escape([1, {nested: true}, 2]), "1, '[object Object]', 2"); + }, + + 'strings are quoted': function() { + assert.equal(SqlString.escape('Super'), "'Super'"); + }, + + '\0 gets escaped': function() { + assert.equal(SqlString.escape('Sup\0er'), "'Sup\\0er'"); + }, + + '\b gets escaped': function() { + assert.equal(SqlString.escape('Sup\ber'), "'Sup\\ber'"); + }, + + '\n gets escaped': function() { + assert.equal(SqlString.escape('Sup\ner'), "'Sup\\ner'"); + }, + + '\r gets escaped': function() { + assert.equal(SqlString.escape('Sup\rer'), "'Sup\\rer'"); + }, + + '\t gets escaped': function() { + assert.equal(SqlString.escape('Sup\ter'), "'Sup\\ter'"); + }, + + '\\ gets escaped': function() { + assert.equal(SqlString.escape('Sup\\er'), "'Sup\\\\er'"); + }, + + '\u001a (ascii 26) gets replaced with \\Z': function() { + assert.equal(SqlString.escape('Sup\u001aer'), "'Sup\\Zer'"); + }, + + 'single quotes get escaped': function() { + assert.equal(SqlString.escape('Sup\'er'), "'Sup\\'er'"); + }, + + 'double quotes get escaped': function() { + assert.equal(SqlString.escape('Sup"er'), "'Sup\\\"er'"); + }, + + 'dates are converted to YYYY-MM-DD HH:II:SS': function() { + var expected = '2012-05-07 11:42:03'; + var date = new Date(Date.UTC(2012, 4, 7, 11, 42, 3)); + var string = SqlString.escape(date); + + assert.strictEqual(string, "'" + expected + "'"); + }, + + 'buffers are converted to hex': function() { + var buffer = new Buffer([0, 1, 254, 255]); + var string = SqlString.escape(buffer); + + assert.strictEqual(string, "X'0001feff'"); + }, + + 'NaN -> NaN': function() { + assert.equal(SqlString.escape(NaN), 'NaN'); + }, + + 'Infinity -> Infinity': function() { + assert.equal(SqlString.escape(Infinity), 'Infinity'); + } +}); + +test('SqlString.format', { + 'question marks are replaced with escaped array values': function() { + var sql = SqlString.format('? and ?', ['a', 'b']); + assert.equal(sql, "'a' and 'b'"); + }, + + 'extra question marks are left untouched': function() { + var sql = SqlString.format('? and ?', ['a']); + assert.equal(sql, "'a' and ?"); + }, + + 'extra arguments are not used': function() { + var sql = SqlString.format('? and ?', ['a', 'b', 'c']); + assert.equal(sql, "'a' and 'b'"); + }, + + 'question marks within values do not cause issues': function() { + var sql = SqlString.format('? and ?', ['hello?', 'b']); + assert.equal(sql, "'hello?' and 'b'"); + }, +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js new file mode 100644 index 0000000..6102246 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js @@ -0,0 +1,29 @@ +var common = require('../common'); +var test = require('utest'); +var assert = require('assert'); +var Charsets = require(common.lib + '/protocol/constants/charsets'); +var ConnectionConfig = require(common.lib + '/ConnectionConfig'); + +test('ConnectionConfig#Constructor', { + 'takes user,pw,host,port,db from url string': function() { + var url = 'mysql://myuser:mypass@myhost:3333/mydb'; + var config = new ConnectionConfig(url); + + assert.equal(config.host, 'myhost'); + assert.equal(config.port, 3333); + assert.equal(config.user, 'myuser'); + assert.equal(config.password, 'mypass'); + assert.equal(config.database, 'mydb'); + }, + + 'allows additional options via url query': function() { + var url = 'mysql://myhost/mydb?debug=true&charset=BIG5_CHINESE_CI'; + var config = new ConnectionConfig(url); + + assert.equal(config.host, 'myhost'); + assert.equal(config.port, 3306); + assert.equal(config.database, 'mydb'); + assert.equal(config.debug, true); + assert.equal(config.charsetNumber, Charsets.BIG5_CHINESE_CI); + }, +}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js b/nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js new file mode 100644 index 0000000..b781134 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js @@ -0,0 +1,28 @@ +#!/usr/bin/env node +var path = require('path'); +var script = path.basename(__filename); + +var errorFile = process.argv[2]; +if (!errorFile) { + console.error('Usage: ./' + script + ' path/to/errmsg-utf8.txt'); + process.exit(1); +} + +var fs = require('fs'); +var errors = fs.readFileSync(errorFile, 'utf-8'); + +var number = Number(errors.match(/start-error-number (\d+)/)[1]); +var codes = errors.match(/^([A-Z_]+)/mg) + +var source = + '// Generated by ' + script + ', do not modify by hand\n' + + codes + .map(function(code) { + return 'exports[' + (number++) + '] = \'' + code + '\';'; + }) + .join('\n'); + +var targetFile = path.join(__dirname, '../lib/protocol/constants/errors.js'); +fs.writeFileSync(targetFile, source, 'utf-8'); + +console.log('Wrote constants to ' + targetFile); diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/.npmignore b/nodejs-mysql-tutorial/node_modules/nodemon/.npmignore new file mode 100644 index 0000000..65e3ba2 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/nodemon/.npmignore @@ -0,0 +1 @@ +test/ diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/README.md b/nodejs-mysql-tutorial/node_modules/nodemon/README.md new file mode 100644 index 0000000..7248cf8 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/nodemon/README.md @@ -0,0 +1,135 @@ +# nodemon + +For use during development of a node.js based application. + +nodemon will watch the files in the directory that nodemon was started, and if they change, it will automatically restart your node application. + +nodemon does **not** require *any* changes to your code or method of development. nodemon simply wraps your node application and keeps an eye on any files that have changed. Remember that nodemon is a replacement wrapper for `node`, think of it as replacing the word "node" on the command line when you run your script. + +# Installation + +Either through forking or by using [npm](http://npmjs.org) (the recommended way): + + npm install -g nodemon + +And nodemon will be installed in to your bin path. Note that as of npm v1, you must explicitly tell npm to install globally as nodemon is a command line utility. + +# Usage + +nodemon wraps your application, so you can pass all the arguments you would normally pass to your app: + + nodemon [your node app] + +For example, if my application accepted a host and port as the arguments, I would start it as so: + + nodemon ./server.js localhost 8080 + +Any output from this script is prefixed with `[nodemon]`, otherwise all output from your application, errors included, will be echoed out as expected. + +nodemon also supports running and monitoring [coffee-script](http://jashkenas.github.com/coffee-script/) apps: + + nodemon server.coffee + +If no script is given, nodemon will test for a `package.json` file and if found, will run the file associated with the *main* property ([ref](https://github.com/remy/nodemon/issues/14)). + +You can also pass the debug flag to node through the command line as you would normally: + + nodemon --debug ./server.js 80 + +If you have a `package.json` file for your app, you can omit the main script entirely and nodemon will read the `package.json` for the `main` property and use that value as the app. + +# Automatic re-running + +nodemon was original written to restart hanging processes such as web servers, but now supports apps that cleanly exit. If your script exits cleanly, nodemon will continue to monitor the directory (or directories) and restart the script if there are any changes. + +# Manual restarting + +Whilst nodemon is running, if you need to manually restart your application, instead of stopping and restart nodemon, you can simply type `rs` with a carridge return, and nodemon will restart your process. + +# Running non-node scripts + +nodemon can also be used to execute and monitor other programs. nodemon will read the file extension of the script being run and monitor that extension instead of .js if there's no .nodemonignore: + + nodemon --exec "python -v" ./app.py + +Now nodemon will run `app.py` with python in verbose mode (note that if you're not passing args to the exec program, you don't need the quotes), and look for new or modified files with the `.py` extension. + +# Monitoring multiple directories + +By default nodemon monitors the current working directory. If you want to take control of that option, use the `--watch` option to add specific paths: + + nodemon --watch app --watch libs app/server.js + +Now nodemon will only restart if there are changes in the `./app` or `./libs` directory. By default nodemon will traverse sub-directories, so there's no need in explicitly including sub-directories. + +# Specifying extension watch list + +By default, nodemon looks for files with the `.js` extension. If you use the `--exec` option and monitor `app.py` nodemon will monitor files with the extension of `.py`. However, you can specify your own list with the `-e` switch like so: + + nodemon -e js,css,html + +Or with alternative syntax: + + nodemon --ext '.js|.css|.html' + +Now nodemon will restart on any changes to files in the directory (or subdirectories) with the extensions .js, .css or .html. + +# Delaying restarting + +In some situations, you may want to wait until a number of files have changed. The timeout before checking for new file changes is 1 second. If you're uploading a number of files and it's taking some number of seconds, this could cause your app to restart multiple time unnecessarily. + +To add an extra throttle, or delay restarting, use the `--delay` command: + + nodemon --delay 10 server.js + +The delay figure is number of seconds to delay before restarting. So nodemon will only restart your app the given number of seconds after the *last* file change. + +# Ignoring files + +By default, if nodemon will only restart when a `.js` JavaScript file changes. In some cases you will want to ignore some specific files, directories or file patterns, to prevent nodemon from prematurely restarting your application. + +You can use the [example ignore file](http://github.com/remy/nodemon/blob/master/nodemonignore.example) (note that this example file is not hidden - you must rename it to `.nodemonignore`) as a basis for your nodemon, but it's very simple to create your own: + + # this is my ignore file with a nice comment at the top + + /vendor/* # ignore all external submodules + /public/* # static files + ./README.md # a specific file + *.css # ignore any CSS files too + :(\d)*\.js # monitor javascript files with only digits in their name + +The ignore file accepts: + +* Comments starting with a `#` symbol +* Blank lines +* Specific files +* File patterns (this is converted to a regex, so you have full control of the pattern) +* Unescaped regex's begining with `:`. + +**Note** the `.nodemonignore` file is read from the directory you run nodemon from, *not* from the location of the node script you're running. + +# Controlling shutdown of your script + +nodemon sends a kill signal to your application when it sees a file update. If you need to clean up on shutdown inside your script you can capture the kill signal and handle it yourself. + +The following example will listen once for the `SIGUSR2` signal (used by nodemon to restart), run the clean up process and then kill itself for nodemon to continue control: + + process.once('SIGUSR2', function () { + gracefulShutdown(function () { + process.kill(process.pid, 'SIGUSR2'); + }) + }); + +Note that the `process.kill` is *only* called once your shutdown jobs are complete. Hat tip to [Benjie Gillam](http://www.benjiegillam.com/2011/08/node-js-clean-restart-and-faster-development-with-nodemon/) for writing technique this up. + +# Help! My changes aren't being detected! + +nodemon has three potential methods it uses to look for file changes. First, it polls using the find command to search for files modified within the last second. This method works on systems with a BSD based find (Mac, for example). + +Next it tries using node's `fs.watch`. `fs.watch` will not always work however, and nodemon will try and detect if this is the case by writing a file to the tmp directory and seeing if fs.watch is triggered when it's removed. If nodemon finds that fs.watch was not triggered, it will then fall back to the third method (called legacy watch), which works by statting each file in your working directory looking for changes to the last modified time. This is the most cpu intensive method, but it may be the only option on some systems. + +In certain cases, like when where you are working on a different drive than your tmp directory is on, `fs.watch` may give you a false positive. You can force nodemon to start using the most compatible legacy method by passing the -L switch, e.g. `nodemon -L /my/odd/file.js`. + +# License + +MIT [http://rem.mit-license.org](http://rem.mit-license.org) diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/faq.md b/nodejs-mysql-tutorial/node_modules/nodemon/faq.md new file mode 100644 index 0000000..7371d54 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/nodemon/faq.md @@ -0,0 +1,38 @@ +# FAQ + +This is being added to as common issues occur on the [issues](http://github.com/remy/nodemon/issues), and where appropriate the answers will be added here. + +This is a working document, and if it makes sense, I'll take pull requests to help make it better. + +## nodemon doesn't work with fedora + +Fedora is looking for `nodejs` rather than `node` which is the binary that nodemon kicks off. + +The solution is a simple workaround, Linux 101: + +``` +sudo ln -s /usr/bin/nodejs /usr/local/bin/node +``` + +Fedora and Ubuntu pakage node as nodejs, because node.dpkg is + +> Description-en: Amateur Packet Radio Node program + The node program accepts TCP/IP and packet radio network connections and + presents users with an interface that allows them to make gateway connections + to remote hosts using a variety of amateur radio protocols. +They make the binary is nodejs, rather than node. So long as you're not using that Packet Radio Node Program mentioned above the workaround will work. + +Thank you [@EvanCarroll](https://github.com/remy/nodemon/issues/68#issuecomment-13672509) + +## Using nodemon with forever + +If you're using nodemon with [forever](https://github.com/nodejitsu/forever) (perhaps in a production environment) you can combine the two together. This way if the script crashes, forever restarts the script, and if there are file changes, nodemon restarts your script. For more detail, see [issue 30](https://github.com/remy/nodemon/issues/30). + +To acheive this you need to include the `--exitcrash` flag to ensure nodemon exits if the script crashes (or exits unexpectedly): + + forever nodemon --exitcrash server.js + +To test this, you can kill the server.js process and forever will restart it. If you `touch server.js` nodemon will restart it. + +Note that I *would not* recommend using nodemon in a production environment - but that's because I wouldn't want it restart without my explicit instruction. + diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js b/nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js new file mode 100644 index 0000000..4a07df6 --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js @@ -0,0 +1,829 @@ +#!/usr/bin/env node + +"use strict"; + +var fs = require('fs'), + util = require('util'), + childProcess = require('child_process'), + dirs = [], + path = require('path'), + exists = fs.exists || path.exists, // yay, exists moved from path to fs in 0.7.x ... :-\ + existsSync = fs.existsSync || path.existsSync, + spawn = childProcess.spawn, + meta = JSON.parse(fs.readFileSync(__dirname + '/package.json')), + exec = childProcess.exec, + flag = './.monitor', + child = null, + monitor = null, + ignoreFilePath = './.nodemonignore', + ignoreFileWatcher = null, + oldIgnoreFilePath = './nodemon-ignore', + ignoreFiles = [], + reIgnoreFiles = null, + timeout = 1000, // check every 1 second + restartDelay = 0, // controlled through arg --delay 10 (for 10 seconds) + restartTimer = null, + lastStarted = Date.now(), + statOffset = 0, // stupid fix for https://github.com/joyent/node/issues/2705 + platform = process.platform, + isWindows = platform === 'win32', + noWatch = (platform !== 'win32') || !fs.watch, // && platform !== 'linux' - removed linux fs.watch usage #72 + watchFile = platform === 'darwin' ? fs.watchFile : fs.watch, // lame :( + watchWorks = true, // whether or not fs.watch actually works on this platform, tested and set later before starting + // create once, reuse as needed + reEscComments = /\\#/g, + reUnescapeComments = /\^\^/g, // note that '^^' is used in place of escaped comments + reComments = /#.*$/, + reTrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, + reEscapeChars = /[.|\-[\]()\\]/g, + reAsterisk = /\*/g, + // Flag to distinguish an app crash from intentional killing (used on Windows only for now) + killedAfterChange = false, + // Make this the last call so it can use the variables defined above (specifically isWindows) + program = getNodemonArgs(), + watched = []; + +// test to see if the version of find being run supports searching by seconds (-mtime -1s -print) +var testAndStart = function() { + var ready = function () { + watchFileChecker.check(function(success) { + watchWorks = success; + startNode(); + }); + }; + + if (noWatch) { + exec('find -L /dev/null -type f -mtime -1s -print', function(error, stdout, stderr) { + if (error) { + if (!fs.watch) { + util.error('\x1B[1;31mThe version of node you are using combined with the version of find being used does not support watching files. Upgrade to a newer version of node, or install a version of find that supports search by seconds.\x1B[0m'); + process.exit(1); + } else { + noWatch = false; + ready(); + } + } else { + // Find is compatible with -1s + startNode(); + } + }); + } else { + ready(); + } +}; + +// This is a fallback function if fs.watch does not work +function changedSince(time, dir, callback) { + if (!callback) { + callback = dir; + } + + var changed = [], + i = 0, + j = 0, + dlen = dir.length, + todo = 0, + flen = 0, + done = function () { + todo--; + if (todo === 0) { + callback(changed); + } + }; + + dir = dir && typeof dir !== 'function' ? [dir] : dirs; + + dir.forEach(function (dir) { + todo++; + fs.readdir(dir, function (err, files) { + if (err) { + return; + } + + files.forEach(function (file) { + if (program.includeHidden === true || !program.includeHidden && file.indexOf('.') !== 0) { + todo++; + file = path.resolve(dir + '/' + file); + var stat = fs.stat(file, function (err, stat) { + if (stat) { + if (stat.isDirectory()) { + todo++; + changedSince(time, file, function (subChanged) { + if (subChanged.length) { + changed = changed.concat(subChanged); + } + done(); + }); + } else if (stat.mtime > time) { + changed.push(file); + } + } + done(); + }); + } + }); + done(); + }); + }); +} + +// Attempts to see if fs.watch will work. On some platforms, it doesn't. +// See: http://nodejs.org/api/fs.html#fs_caveats +// Sends the callback true if fs.watch will work, false if it won't +// +// Caveats: +// If there is no writable tmp directory, it will also return true, although +// a warning message will be displayed. +// +var watchFileChecker = {}; +watchFileChecker.check = function(cb) { + var tmpdir, + seperator = '/'; + + this.cb = cb; + this.changeDetected = false; + if (isWindows) { + seperator = '\\'; + tmpdir = process.env.TEMP; + } else if (process.env.TMPDIR) { + tmpdir = process.env.TMPDIR; + } else { + tmpdir = '/tmp'; + } + var watchFileName = tmpdir + seperator + 'nodemonCheckFsWatch' + Date.now(); + var watchFile = fs.openSync(watchFileName, 'w'); + if (!watchFile) { + util.log('\x1B[32m[nodemon] Unable to write to temp directory. If you experience problems with file reloading, ensure ' + tmpdir + ' is writable.\x1B[0m'); + cb(true); + return; + } + fs.watch(watchFileName, function(event, filename) { + if (watchFileChecker.changeDetected) { return; } + watchFileChecker.changeDetected = true; + cb(true); + }); + // This should trigger fs.watch, if it works + fs.writeSync(watchFile, '1'); + fs.unlinkSync(watchFileName); + + setTimeout(function() { watchFileChecker.verify(); }, 250); +}; + +// Verifies that fs.watch was not triggered and sends false to the callback +watchFileChecker.verify = function() { + if (!this.changeDetected) { + this.cb(false); + } +}; + +function startNode() { + util.log('\x1B[32m[nodemon] starting `' + program.options.exec + ' ' + program.args.join(' ') + '`\x1B[0m'); + + lastStarted = Date.now(); + + var nodeMajor = parseInt((process.versions.node.split('.') || [undefined,undefined,undefined])[1] || 0, 10); + + if (nodeMajor >= 8) { + child = spawn(program.options.exec, program.args, { + stdio: ['pipe', process.stdout, process.stderr] + }); + } else { + child = spawn(program.options.exec, program.args); + child.stdout.on('data', function (data) { + process.stdout.write(data); + }); + child.stderr.on('data', function (data) { + process.stderr.write(data); + }); + } + + child.on('exit', function (code, signal) { + // In case we killed the app ourselves, set the signal thusly + if (killedAfterChange) { + killedAfterChange = false; + signal = 'SIGUSR2'; + } + // this is nasty, but it gives it windows support + if (isWindows && signal === 'SIGTERM') { + signal = 'SIGUSR2'; + } + + // exit the monitor, but do it gracefully + if (signal === 'SIGUSR2') { + // restart + startNode(); + } else if (code === 0) { // clean exit - wait until file change to restart + util.log('\x1B[32m[nodemon] clean exit - waiting for changes before restart\x1B[0m'); + child = null; + } else if (program.options.exitcrash) { + util.log('\x1B[1;31m[nodemon] app crashed\x1B[0m'); + process.exit(0); + } else { + util.log('\x1B[1;31m[nodemon] app crashed - waiting for file changes before starting...\x1B[0m'); + child = null; + } + }); + + // pinched from https://github.com/DTrejo/run.js - pipes stdin to the child process - cheers DTrejo ;-) + if (program.options.stdin) { + process.stdin.resume(); + process.stdin.setEncoding('utf8'); + process.stdin.pipe(child.stdin); + } + + setTimeout(startMonitor, timeout); +} + +function startMonitor() { + var changeFunction; + + if (noWatch) { + // if native fs.watch doesn't work the way we want, we keep polling find command (mac only oddly) + changeFunction = function (lastStarted, callback) { + var cmds = [], + changed = []; + + dirs.forEach(function(dir) { + cmds.push('find -L "' + dir + '" -type f -mtime -' + ((Date.now() - lastStarted)/1000|0) + 's -print'); + }); + + exec(cmds.join(';'), function (error, stdout, stderr) { + var files = stdout.split(/\n/); + files.pop(); // remove blank line ending and split + callback(files); + }); + }; + } else if (watchWorks) { + changeFunction = function (lastStarted, callback) { + // recursive watch - watch each directory and it's subdirectories, etc, etc + function watch(err, dir) { + try { + fs.watch(dir, { persistent: false }, function (event, filename) { + var filepath = path.join(dir, filename || ''); + callback([filepath]); + }); + + fs.readdir(dir, function (err, files) { + if (!err) { + files.forEach(function (rawfile) { + var file = path.join(dir, rawfile); + if (-1 === watched.indexOf(file)) { + fs.stat(file, function (err, stat) { + if (!err && stat) { + if (stat.isDirectory()) { + fs.realpath(file, watch); + } else { + if (ignoredFilter(file)) { + watched.push(file); + } + } + } + }); + } + }); + } + }); + } catch (e) { + if ('EMFILE' === e.code) { + console.error('EMFILE: Watching too many files.'); + } + // ignoring this directory, likely it's "My Music" + // or some such windows fangled stuff + } + } + + dirs.forEach(function (dir) { + fs.realpath(dir, watch); + }); + }; + } else { + // changedSince, the fallback for when both the find method and fs.watch don't work, + // is not compatible with the way changeFunction works. If we have reached this point, + // changeFunction should not be called from herein out. + changeFunction = function() { util.error("Nodemon error: changeFunction called when it shouldn't be."); }; + } + + // filter ignored files + var ignoredFilter = function (file) { + // If we are in a Windows machine + if (isWindows) { + // Break up the file by slashes + var fileParts = file.split(/\\/g); + + // Remove the first piece (C:) + fileParts.shift(); + + // Join the parts together with Unix slashes + file = '/' + fileParts.join('/'); + } + + return !reIgnoreFiles.test(file); + }; + + var isWindows = process.platform === 'win32'; + if ((noWatch || watchWorks) && !program.options.forceLegacyWatch) { + changeFunction(lastStarted, function (files) { + if (files.length) { + files = files.filter(ignoredFilter); + if (files.length) { + if (restartTimer !== null) { + clearTimeout(restartTimer); + } + + restartTimer = setTimeout(function () { + if (program.options.verbose) { + util.log('[nodemon] restarting due to changes...'); + } + files.forEach(function (file) { + if (program.options.verbose) { + util.log('[nodemon] ' + file); + } + }); + if (program.options.verbose) { + util.print('\n\n'); + } + + killNode(); + + }, restartDelay); + return; + } + } + + if (noWatch) { setTimeout(startMonitor, timeout); } + }); + } else { + // Fallback for when both find and fs.watch don't work + changedSince(lastStarted, function (files) { + if (files.length) { + // filter ignored files + if (ignoreFiles.length) { + files = files.filter(function(file) { + return !reIgnoreFiles.test(file); + }); + } + + if (files.length) { + if (restartTimer !== null) { + clearTimeout(restartTimer); + } + restartTimer = setTimeout(function () { + if (program.options.verbose) { + util.log('[nodemon] restarting due to changes...'); + } + files.forEach(function (file) { + if (program.options.verbose) { + util.log('[nodemon] ' + file); + } + }); + if (program.options.verbose) { + util.print('\n\n'); + } + + killNode(); + + }, restartDelay); + return; + } + } + + setTimeout(startMonitor, timeout); + }); + } +} + +function killNode() { + if (child !== null) { + // When using CoffeeScript under Windows, child's process is not node.exe + // Instead coffee.cmd is launched, which launches cmd.exe, which starts node.exe as a child process + // child.kill() would only kill cmd.exe, not node.exe + // Therefore we use the Windows taskkill utility to kill the process and all its children (/T for tree) + if (isWindows) { + // For the on('exit', ...) handler above the following looks like a crash, so we set the killedAfterChange flag + killedAfterChange = true; + // Force kill (/F) the whole child tree (/T) by PID (/PID 123) + exec('taskkill /pid '+child.pid+' /T /F'); + } else { + child.kill('SIGUSR2'); + } + } else { + startNode(); + } +} + +function addIgnoreRule(line, noEscape) { + // remove comments and trim lines + // this mess of replace methods is escaping "\#" to allow for emacs temp files + if (!noEscape) { + if (line = line.replace(reEscComments, '^^').replace(reComments, '').replace(reUnescapeComments, '#').replace(reTrim, '')) { + ignoreFiles.push(line.replace(reEscapeChars, '\\$&').replace(reAsterisk, '.*')); + } + } else if (line = line.replace(reTrim, '')) { + ignoreFiles.push(line); + } + reIgnoreFiles = new RegExp(ignoreFiles.join('|')); +} + +function readIgnoreFile(curr, prev) { + var hadfile = false; + // unless the ignore file was actually modified, do no re-read it + // on darwin platform only + if (platform === 'darwin') { + if(curr && prev && curr.mtime.valueOf() === prev.mtime.valueOf()) { + return; + } + + fs.unwatchFile(ignoreFilePath); + } else { + // in windows and linux use FSWatcher.close() method to stop .nodemonignore watching + if (ignoreFileWatcher) { + hadfile = true; + ignoreFileWatcher.close(); + } + } + + // Check if ignore file still exists. Vim tends to delete it before replacing with changed file + // uses a sync method because with programs like vi - the file + // gets swapped out as it's updated, and the async exists would + // pass, whilst the readFile would fail (because the file wasn't + // there anymore). + function checkTimer() { + if (existsSync(ignoreFilePath)) { + if (program.options.verbose) { + util.log('[nodemon] reading ignore list'); + } + + // ignoreFiles = ignoreFiles.concat([flag, ignoreFilePath]); + // addIgnoreRule(flag); + addIgnoreRule(ignoreFilePath.substring(2)); // ignore the ./ part of the filename + fs.readFileSync(ignoreFilePath).toString().split(/\n/).forEach(function (rule, i) { + var noEscape = rule.substr(0,1) === ':'; + if (noEscape) { + rule = rule.substr(1); + } + addIgnoreRule(rule, noEscape); + }); + + ignoreFileWatcher = watchFile(ignoreFilePath, { persistent: false }, readIgnoreFile); + } else if (hadfile) { + setTimeout(checkTimer, 100); + } + } + + setTimeout(checkTimer, 100); +} + +// attempt to shutdown the wrapped node instance and remove +// the monitor file as nodemon exists +function cleanup() { + if (child) { + child.kill(); + } +} + +function getNodemonArgs() { + var args = process.argv, + len = args.length, + i = 2, + dir = process.cwd(), + indexOfApp = -1, + app = null; + + for (; i < len; i++) { + if (existsSync(path.resolve(dir, args[i]))) { + // double check we didn't use the --watch or -w opt before this arg + if (args[i-1] && (args[i-1] === '-w' || args[i-1] === '--watch')) { + // ignore + } else { + indexOfApp = i; + break; + } + } + } + + if (indexOfApp !== -1) { + // not found, so assume we're reading the package.json and thus swallow up all the args + app = process.argv[i]; + indexOfApp++; + } else { + indexOfApp = len; + } + + var appargs = [], + nodemonargs = process.argv.slice(2, indexOfApp - (app ? 1 : 0)), + arg, + options = { + delay: 1, + watch: [], + exec: 'node', + verbose: true, + js: false, // becomes the default anyway... + includeHidden: false, + exitcrash: false, + forceLegacyWatch: false, // forces nodemon to use the slowest but most compatible method for watching for file changes + stdin: true + // args: [] + }; + + // process nodemon args + args.splice(0, 2); + while (arg = args.shift()) { + if (arg === '--help' || arg === '-h' || arg === '-?') { + return help(); // exits program + } else if (arg === '--version' || arg === '-v') { + return version(); // also exits + } else if (arg === '--js') { + options.js = true; + } else if (arg === '--quiet' || arg === '-q') { + options.verbose = false; + } else if (arg === '--hidden') { + options.includeHidden = true; + } else if (arg === '--watch' || arg === '-w') { + options.watch.push(args.shift()); + } else if (arg === '--exitcrash') { + options.exitcrash = true; + } else if (arg === '--delay' || arg === '-d') { + options.delay = parseInt(args.shift(), 10); + } else if (arg === '--exec' || arg === '-x') { + options.exec = args.shift(); + } else if (arg === '--legacy-watch' || arg === '-L') { + options.forceLegacyWatch = true; + } else if (arg === '--no-stdin' || arg === '-I') { + options.stdin = false; + } else if (arg === '--ext' || arg === '-e') { + options.ext = args.shift(); + } else { + // Remaining args are node arguments + appargs.push(arg); + } + } + + var program = { options: options, args: appargs, app: app }; + + getAppScript(program); + + return program; +} + +function getAppScript(program) { + var hokeycokey = false; + if (!program.args.length || program.app === null) { + // try to get the app from the package.json + // doing a try/catch because we can't use the path.exist callback pattern + // or we could, but the code would get messy, so this will do exactly + // what we're after - if the file doesn't exist, it'll throw. + try { + // note: this isn't nodemon's package, it's the user's cwd package + program.app = JSON.parse(fs.readFileSync('./package.json').toString()).main; + if (program.app === undefined) { + // no app found to run - so give them a tip and get the feck out + help(); + } + program.args.unshift(program.app); + hokeycokey = true; + } catch (e) {} + } + + if (!program.app) { + program.app = program.args[0]; + } + + program.app = path.basename(program.app); + program.ext = program.options.ext || path.extname(program.app); + + if (program.options.exec.indexOf(' ') !== -1) { + var execOptions = program.options.exec.split(' '); + program.options.exec = execOptions.splice(0, 1)[0]; + program.args = execOptions.concat(program.args); + } + + if (program.options.exec === 'node' && ((program.ext.indexOf('.coffee') !== -1) || (program.ext.indexOf('.litcoffee') !== -1) )) { + program.options.exec = 'coffee'; + } + + if (program.options.exec === 'coffee') { + if (hokeycokey) { + program.args.push(program.args.shift()); + } + + //coffeescript requires --nodejs --debug + + // this code is a dance to get the order of the debug flags right when combined with coffeescript + var debugIndex = program.args.indexOf('--debug'); + if (debugIndex === -1) { + debugIndex = program.args.indexOf('--debug-brk'); + } + + if (debugIndex !== -1 && program.args.indexOf('--nodejs') === -1) { + program.args.splice(debugIndex, 0, '--nodejs'); + } + + // don't override user specified extention tracking + if (!program.options.ext) { + program.ext = '.coffee|.litcoffee|.js'; + } + + if (!program.options.exec || program.options.exec === 'node') { + program.options.exec = 'coffee'; + } + + // because windows can't find 'coffee', it needs the real file 'coffee.cmd' + if (isWindows) { + program.options.exec += '.cmd'; + } + } + + // allow users to make a mistake on the program.ext to monitor + // converts js,jade => .js|.jade + // BIG NOTE: user can't do this: nodemon -e *.js + // because the terminal will automatically expand the glob against the file system :( + if (program.ext.indexOf(',') !== -1 || program.ext.indexOf('*.') !== -1) { + program.ext = program.ext.replace(/,/g, '|').split('|').map(function (item) { + return '.' + item.replace(/^[\*\.]+/, ''); + }).join('$|'); + } +} + +function version() { + console.log(meta.version); + process.exit(0); +} + +function help() { + util.print([ + '', + ' Usage: nodemon [options] [script.js] [args]', + '', + ' Options:', + '', + ' -e, --ext extensions to look for Example: ".js|.html|.css"', + ' -x, --exec app execute script with "app", ie. -x "python -v"', + ' -q, --quiet minimise nodemon messages to start/stop only', + ' -w, --watch dir watch directory "dir". use once for each', + ' directory to watch', + ' -I, --no-stdin don\'t try to read from stdin', + ' -d, --delay n throttle restart for "n" seconds', + ' -L, --legacy-watch Forces node to use the most compatible', + ' version for watching file changes', + ' --exitcrash exit on crash, allows use of nodemon with', + ' daemon tools like forever.js', + ' -v, --version current nodemon version', + ' -h, --help you\'re looking at it', + '', + ' Note: if the script is omitted, nodemon will try to ', + ' read "main" from package.json and without a .nodemonignore,', + ' nodemon will monitor .js, .coffee, and .litcoffee by default.', + '', + ' Examples:', + '', + ' $ nodemon server.js', + ' $ nodemon -w ../foo server.js apparg1 apparg2', + ' $ PORT=8000 nodemon --debug-brk server.js', + ' $ nodemon --exec python app.py', + '', + ' For more details see http://github.com/remy/nodemon/', + '' + ].join('\n') + '\n'); + process.exit(0); +} + +function addSubdirectories() { + var files = fs.readdirSync(process.cwd()) || []; + + files.forEach(function (file) { + var stat = fs.statSync(file); + if (stat && stat.isDirectory()) { + dirs.push(path.resolve(file)); + } + }); +} + +// this little bit of hoop jumping is because sometimes the file can't be +// touched properly, and it send nodemon in to a loop of restarting. +// this way, the .monitor file is removed entirely, and recreated with +// permissions that anyone can remove it later (i.e. if you run as root +// by accident and then try again later). +// if (path.existsSync(flag)) fs.unlinkSync(flag); +// fs.writeFileSync(flag, '.'); // requires some content https://github.com/remy/nodemon/issues/36 +// fs.chmodSync(flag, '666'); + +// remove the flag file on exit +process.on('exit', function (code) { + if (program.options.verbose) { + util.log('[nodemon] exiting'); + } + cleanup(); +}); + +if (!isWindows) { // because windows borks when listening for the SIG* events + // usual suspect: ctrl+c exit + process.on('SIGINT', function () { + var exitTimeout = null, + exit = function () { + exit = function () {}; + cleanup(); + process.exit(0); + }; + + if (child && !isWindows) { + child.removeAllListeners('exit'); + child.on('exit', exit); + child.kill('SIGINT'); + setTimeout(exit, 10 * 1000); // give up waiting for the kids after 10 seconds + } else { + exit(); + } + }); + + process.on('SIGTERM', function () { + cleanup(); + process.exit(0); + }); +} + +// on exception *inside* nodemon, shutdown wrapped node app +process.on('uncaughtException', function (err) { + util.log('[nodemon] exception in nodemon killing node'); + util.error(err.stack); + cleanup(); +}); + + +if (program.options.delay) { + restartDelay = program.options.delay * 1000; +} + +// this is the default - why am I making it a cmd line opt? +if (program.options.js) { + addIgnoreRule('^((?!\.js$|\.coffee|\.litcoffee$).)*$', true); // ignores everything except JS +} + +if (program.options.watch && program.options.watch.length > 0) { + program.options.watch.forEach(function (dir) { + dirs.push(path.resolve(dir)); + }); +} else { + dirs.unshift(process.cwd()); +} + +if (!program.app) { + help(); +} + +if (program.options.verbose) { + util.log('\x1B[33m[nodemon] v' + meta.version + '\x1B[0m'); + util.log('\x1B[33m[nodemon] to restart at any time, enter `rs`\x1B[0m'); +} + +// this was causing problems for a lot of people, so now not moving to the subdirectory +// process.chdir(path.dirname(app)); +dirs.forEach(function(dir) { + if (program.options.verbose) { + util.log('\x1B[32m[nodemon] watching: ' + dir + '\x1B[0m'); + } +}); + +if (program.options.ext) { + addIgnoreRule('^((?!' + program.ext.replace(/\./g, '\\.') + '$).)*$', true); +} + +exists(ignoreFilePath, function (exist) { + // watch it: "exist" not to be confused with "exists".... + if (!exist) { + // try the old format + exists(oldIgnoreFilePath, function (exist) { + if (exist) { + if (program.options.verbose) { + util.log('[nodemon] detected old style .nodemonignore'); + } + ignoreFilePath = oldIgnoreFilePath; + } else { + // don't create the ignorefile, just ignore the flag & JS + // addIgnoreRule(flag); + if (!program.options.ext) { + var ext = program.ext.replace(/\./g, '\\.'); + if (ext) { + addIgnoreRule('^((?!' + ext + '$).)*$', true); + } else { + addIgnoreRule('^((?!\.js$|\.coffee|\.litcoffee$).)*$', true); // ignores everything except JS + } + } + } + }); + } else { + readIgnoreFile(); + } +}); + +// allow nodemon to restart when the use types 'rs\n' +process.stdin.resume(); +process.stdin.setEncoding('utf8'); +process.stdin.on('data', function (data) { + data = (data + '').trim().toLowerCase(); + if (data === 'rs') { + util.log('\x1B[32m[nodemon] restarting child process\x1B[0m'); + killNode(); + } +}); + +testAndStart(); diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example b/nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example new file mode 100644 index 0000000..475f82b --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example @@ -0,0 +1,11 @@ +# .nodemonignore file +# +# This is an example of a comment +# +# You can list individual files in the ignore list, or they can be +# file patterns. For example: +# +# /vendor/* +# /public/css/styles.css +# ./server.js +# ./.git/* \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/package.json b/nodejs-mysql-tutorial/node_modules/nodemon/package.json new file mode 100644 index 0000000..d0c2b1a --- /dev/null +++ b/nodejs-mysql-tutorial/node_modules/nodemon/package.json @@ -0,0 +1,44 @@ +{ + "name": "nodemon", + "homepage": "http://github.com/remy/nodemon", + "author": { + "name": "Remy Sharp", + "url": "http://github.com/remy" + }, + "bin": { + "nodemon": "./nodemon.js" + }, + "repository": { + "type": "git", + "url": "http://github.com/remy/nodemon.git" + }, + "description": "Simple monitor script for use during development of a node.js app.", + "keywords": [ + "monitor", + "development", + "restart", + "autoload", + "reload", + "terminal" + ], + "version": "0.7.8", + "preferGlobal": "true", + "licenses": [ + { + "type": "MIT", + "url": "http://rem.mit-license.org" + } + ], + "main": "./nodemon", + "readme": "# nodemon\n\nFor use during development of a node.js based application. \n\nnodemon will watch the files in the directory that nodemon was started, and if they change, it will automatically restart your node application.\n\nnodemon does **not** require *any* changes to your code or method of development. nodemon simply wraps your node application and keeps an eye on any files that have changed. Remember that nodemon is a replacement wrapper for `node`, think of it as replacing the word \"node\" on the command line when you run your script.\n\n# Installation\n\nEither through forking or by using [npm](http://npmjs.org) (the recommended way):\n\n npm install -g nodemon\n\nAnd nodemon will be installed in to your bin path. Note that as of npm v1, you must explicitly tell npm to install globally as nodemon is a command line utility.\n\n# Usage\n\nnodemon wraps your application, so you can pass all the arguments you would normally pass to your app:\n\n nodemon [your node app]\n\nFor example, if my application accepted a host and port as the arguments, I would start it as so:\n\n nodemon ./server.js localhost 8080\n\nAny output from this script is prefixed with `[nodemon]`, otherwise all output from your application, errors included, will be echoed out as expected.\n\nnodemon also supports running and monitoring [coffee-script](http://jashkenas.github.com/coffee-script/) apps:\n\n nodemon server.coffee\n\nIf no script is given, nodemon will test for a `package.json` file and if found, will run the file associated with the *main* property ([ref](https://github.com/remy/nodemon/issues/14)).\n\nYou can also pass the debug flag to node through the command line as you would normally:\n\n nodemon --debug ./server.js 80\n\nIf you have a `package.json` file for your app, you can omit the main script entirely and nodemon will read the `package.json` for the `main` property and use that value as the app.\n\n# Automatic re-running\n\nnodemon was original written to restart hanging processes such as web servers, but now supports apps that cleanly exit. If your script exits cleanly, nodemon will continue to monitor the directory (or directories) and restart the script if there are any changes.\n\n# Manual restarting\n\nWhilst nodemon is running, if you need to manually restart your application, instead of stopping and restart nodemon, you can simply type `rs` with a carridge return, and nodemon will restart your process.\n\n# Running non-node scripts\n\nnodemon can also be used to execute and monitor other programs. nodemon will read the file extension of the script being run and monitor that extension instead of .js if there's no .nodemonignore:\n\n nodemon --exec \"python -v\" ./app.py\n\nNow nodemon will run `app.py` with python in verbose mode (note that if you're not passing args to the exec program, you don't need the quotes), and look for new or modified files with the `.py` extension.\n\n# Monitoring multiple directories\n\nBy default nodemon monitors the current working directory. If you want to take control of that option, use the `--watch` option to add specific paths:\n\n nodemon --watch app --watch libs app/server.js\n\nNow nodemon will only restart if there are changes in the `./app` or `./libs` directory. By default nodemon will traverse sub-directories, so there's no need in explicitly including sub-directories.\n\n# Specifying extension watch list\n\nBy default, nodemon looks for files with the `.js` extension. If you use the `--exec` option and monitor `app.py` nodemon will monitor files with the extension of `.py`. However, you can specify your own list with the `-e` switch like so:\n\n nodemon -e js,css,html\n\nOr with alternative syntax:\n\n nodemon --ext '.js|.css|.html'\n\nNow nodemon will restart on any changes to files in the directory (or subdirectories) with the extensions .js, .css or .html.\n\n# Delaying restarting\n\nIn some situations, you may want to wait until a number of files have changed. The timeout before checking for new file changes is 1 second. If you're uploading a number of files and it's taking some number of seconds, this could cause your app to restart multiple time unnecessarily.\n\nTo add an extra throttle, or delay restarting, use the `--delay` command:\n\n nodemon --delay 10 server.js\n\nThe delay figure is number of seconds to delay before restarting. So nodemon will only restart your app the given number of seconds after the *last* file change.\n\n# Ignoring files\n\nBy default, if nodemon will only restart when a `.js` JavaScript file changes. In some cases you will want to ignore some specific files, directories or file patterns, to prevent nodemon from prematurely restarting your application.\n\nYou can use the [example ignore file](http://github.com/remy/nodemon/blob/master/nodemonignore.example) (note that this example file is not hidden - you must rename it to `.nodemonignore`) as a basis for your nodemon, but it's very simple to create your own:\n\n # this is my ignore file with a nice comment at the top\n \n /vendor/* # ignore all external submodules\n /public/* # static files\n ./README.md # a specific file\n *.css # ignore any CSS files too\n :(\\d)*\\.js # monitor javascript files with only digits in their name\n\nThe ignore file accepts:\n\n* Comments starting with a `#` symbol\n* Blank lines\n* Specific files\n* File patterns (this is converted to a regex, so you have full control of the pattern)\n* Unescaped regex's begining with `:`.\n\n**Note** the `.nodemonignore` file is read from the directory you run nodemon from, *not* from the location of the node script you're running.\n\n# Controlling shutdown of your script\n\nnodemon sends a kill signal to your application when it sees a file update. If you need to clean up on shutdown inside your script you can capture the kill signal and handle it yourself.\n\nThe following example will listen once for the `SIGUSR2` signal (used by nodemon to restart), run the clean up process and then kill itself for nodemon to continue control:\n\n process.once('SIGUSR2', function () {\n gracefulShutdown(function () {\n process.kill(process.pid, 'SIGUSR2'); \n })\n });\n\nNote that the `process.kill` is *only* called once your shutdown jobs are complete. Hat tip to [Benjie Gillam](http://www.benjiegillam.com/2011/08/node-js-clean-restart-and-faster-development-with-nodemon/) for writing technique this up.\n\n# Help! My changes aren't being detected!\n\nnodemon has three potential methods it uses to look for file changes. First, it polls using the find command to search for files modified within the last second. This method works on systems with a BSD based find (Mac, for example). \n\nNext it tries using node's `fs.watch`. `fs.watch` will not always work however, and nodemon will try and detect if this is the case by writing a file to the tmp directory and seeing if fs.watch is triggered when it's removed. If nodemon finds that fs.watch was not triggered, it will then fall back to the third method (called legacy watch), which works by statting each file in your working directory looking for changes to the last modified time. This is the most cpu intensive method, but it may be the only option on some systems.\n\nIn certain cases, like when where you are working on a different drive than your tmp directory is on, `fs.watch` may give you a false positive. You can force nodemon to start using the most compatible legacy method by passing the -L switch, e.g. `nodemon -L /my/odd/file.js`.\n\n# License\n\nMIT [http://rem.mit-license.org](http://rem.mit-license.org)\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/remy/nodemon/issues" + }, + "_id": "nodemon@0.7.8", + "dist": { + "shasum": "2ba4a61c82b5236976415fa5596bddd875d6f506" + }, + "_from": "nodemon@", + "_resolved": "https://registry.npmjs.org/nodemon/-/nodemon-0.7.8.tgz" +} diff --git a/nodejs-mysql-tutorial/package.json b/nodejs-mysql-tutorial/package.json new file mode 100644 index 0000000..d171cd6 --- /dev/null +++ b/nodejs-mysql-tutorial/package.json @@ -0,0 +1,12 @@ +{ + "name": "nodejsmongodb", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "nodemon app.js" + }, + "dependencies": { + "express": "3.2.5", + "jade": "*" + } +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/package.json.bak b/nodejs-mysql-tutorial/package.json.bak new file mode 100644 index 0000000..5b70151 --- /dev/null +++ b/nodejs-mysql-tutorial/package.json.bak @@ -0,0 +1,12 @@ +{ + "name": "helloexpress", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "nodemon app.js" + }, + "dependencies": { + "express": "3.2.5", + "jade": "*" + } +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/public/stylesheets/style.css b/nodejs-mysql-tutorial/public/stylesheets/style.css new file mode 100644 index 0000000..30e047d --- /dev/null +++ b/nodejs-mysql-tutorial/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/routes/index.js b/nodejs-mysql-tutorial/routes/index.js new file mode 100644 index 0000000..f4d7542 --- /dev/null +++ b/nodejs-mysql-tutorial/routes/index.js @@ -0,0 +1,8 @@ + +/* + * GET home page. + */ + +exports.index = function(req, res){ + res.render('index', { title: 'HelloExpress!!!' }); +}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/routes/user.js b/nodejs-mysql-tutorial/routes/user.js new file mode 100644 index 0000000..d1eb90a --- /dev/null +++ b/nodejs-mysql-tutorial/routes/user.js @@ -0,0 +1,13 @@ + +/* + * GET users listing. + */ + +exports.list = function(req, res){ + res.send("respond with a resource"); +}; + +exports.mist = function(req, res) { + res.render('index',{title: 'HelloExpress'}); +}; + diff --git a/nodejs-mysql-tutorial/views/articles/articles.jade b/nodejs-mysql-tutorial/views/articles/articles.jade new file mode 100644 index 0000000..bd8fb44 --- /dev/null +++ b/nodejs-mysql-tutorial/views/articles/articles.jade @@ -0,0 +1,11 @@ +h1 Showing All Articles + +ul + - each article in articles + li article Title: #{article.title} + li article Body: #{article.body} + hr + +a(href="articles/new") Add New Article +br +a(href="/") Home \ No newline at end of file diff --git a/nodejs-mysql-tutorial/views/articles/edit.jade b/nodejs-mysql-tutorial/views/articles/edit.jade new file mode 100644 index 0000000..eae7105 --- /dev/null +++ b/nodejs-mysql-tutorial/views/articles/edit.jade @@ -0,0 +1,12 @@ +h1 Edit User + +form(method="POST" , action="/users/#{user.name}") + p + input(type="hidden", name="_method" , value="PUT") + p Name: + input#name(type="text" , name="name" , value="#{user.name}") + p Email: + input#email(type="text" , name="email" , value="#{user.email}") + p Age: + input#age(type="number" , name="age" , value="#{user.age}") + p: button(type="submit") Update \ No newline at end of file diff --git a/nodejs-mysql-tutorial/views/articles/index.jade.bak b/nodejs-mysql-tutorial/views/articles/index.jade.bak new file mode 100644 index 0000000..3badcf9 --- /dev/null +++ b/nodejs-mysql-tutorial/views/articles/index.jade.bak @@ -0,0 +1,11 @@ +h1 Showing All Articles + +ul + - each article in articles + li article Title: #{article.title} + li article Body: #{article.body} + hr + +a(href="articles/new") Add New Article +br +a(href="") Home \ No newline at end of file diff --git a/nodejs-mysql-tutorial/views/articles/new.jade b/nodejs-mysql-tutorial/views/articles/new.jade new file mode 100644 index 0000000..f442821 --- /dev/null +++ b/nodejs-mysql-tutorial/views/articles/new.jade @@ -0,0 +1,9 @@ +h1 Add new Article + +form(method="POST" , action="/articles") + p Title: + input#title(type="text" , name="title") + p Body: + input#body(type="textarea" , name="body") + + p: button(type="submit") Add New Article \ No newline at end of file diff --git a/nodejs-mysql-tutorial/views/articles/show.jade b/nodejs-mysql-tutorial/views/articles/show.jade new file mode 100644 index 0000000..169e46d --- /dev/null +++ b/nodejs-mysql-tutorial/views/articles/show.jade @@ -0,0 +1,29 @@ +h1 #{user.name} + +ul + li Email: #{user.email} + li Age: #{user.age} + li Id: #{user._id} + li vi: #{user.__v} + + ul + li: a(href="/users/#{user.name}/edit") Edit + +form(method="POST" , action="/users/#{user.name}") + p + input(type="hidden", name="_method" , value="DELETE") + p: button(type="submit") Delete + + + + + + + + + + + + + + diff --git a/nodejs-mysql-tutorial/views/index.jade b/nodejs-mysql-tutorial/views/index.jade new file mode 100644 index 0000000..752fffa --- /dev/null +++ b/nodejs-mysql-tutorial/views/index.jade @@ -0,0 +1,6 @@ +extends layout + +block content + p Welcome to nodejs mysql tutorial + p + a(href='/users') Show All users \ No newline at end of file diff --git a/nodejs-mysql-tutorial/views/layout.jade b/nodejs-mysql-tutorial/views/layout.jade new file mode 100644 index 0000000..1b7b305 --- /dev/null +++ b/nodejs-mysql-tutorial/views/layout.jade @@ -0,0 +1,7 @@ +doctype 5 +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content \ No newline at end of file diff --git a/nodejs-mysql-tutorial/views/new.jade b/nodejs-mysql-tutorial/views/new.jade new file mode 100644 index 0000000..7114d7a --- /dev/null +++ b/nodejs-mysql-tutorial/views/new.jade @@ -0,0 +1,9 @@ +h1 Add new Article + +form(method="POST" , action="/users") + p FirstName: + input#title(type="text" , name="fname") + p LastName: + input#body(type="text" , name="lname") + + p: button(type="submit") Add New User \ No newline at end of file diff --git a/nodejs-mysql-tutorial/views/users.jade b/nodejs-mysql-tutorial/views/users.jade new file mode 100644 index 0000000..91f7d5c --- /dev/null +++ b/nodejs-mysql-tutorial/views/users.jade @@ -0,0 +1,11 @@ +h1 Showing All Users + +ul + - each user in users + li User FirstName: #{user.fname} + li User LastName: #{user.lname} + hr + +a(href="users/new") Add New User +br +a(href="/") Home \ No newline at end of file From 8609e3a6787c45e2d0e29364c1420999a38bf24d Mon Sep 17 00:00:00 2001 From: Tutorialindustry Date: Tue, 31 Dec 2013 11:17:54 +0530 Subject: [PATCH 2/7] c5 --- .../node_modules/jade/.npmignore | 14 - .../node_modules/jade/LICENSE | 22 - .../node_modules/jade/Readme.md | 1308 - .../node_modules/jade/Readme_zh-cn.md | 921 - .../node_modules/jade/bin/jade | 178 - .../node_modules/jade/component.json | 16 - .../node_modules/jade/index.js | 4 - .../node_modules/jade/jade.js | 8008 ------- .../node_modules/jade/jade.md | 510 - .../node_modules/jade/lib/compiler.js | 665 - .../node_modules/jade/lib/doctypes.js | 18 - .../node_modules/jade/lib/filters-client.js | 18 - .../node_modules/jade/lib/filters.js | 29 - .../node_modules/jade/lib/index.js | 1 - .../node_modules/jade/lib/inline-tags.js | 28 - .../node_modules/jade/lib/jade.js | 242 - .../node_modules/jade/lib/lexer.js | 782 - .../node_modules/jade/lib/nodes/attrs.js | 77 - .../jade/lib/nodes/block-comment.js | 33 - .../node_modules/jade/lib/nodes/block.js | 122 - .../node_modules/jade/lib/nodes/case.js | 43 - .../node_modules/jade/lib/nodes/code.js | 35 - .../node_modules/jade/lib/nodes/comment.js | 32 - .../node_modules/jade/lib/nodes/doctype.js | 29 - .../node_modules/jade/lib/nodes/each.js | 35 - .../node_modules/jade/lib/nodes/filter.js | 34 - .../node_modules/jade/lib/nodes/index.js | 20 - .../node_modules/jade/lib/nodes/literal.js | 29 - .../node_modules/jade/lib/nodes/mixin.js | 36 - .../node_modules/jade/lib/nodes/node.js | 25 - .../node_modules/jade/lib/nodes/tag.js | 95 - .../node_modules/jade/lib/nodes/text.js | 36 - .../node_modules/jade/lib/parser.js | 720 - .../node_modules/jade/lib/runtime.js | 187 - .../node_modules/jade/lib/self-closing.js | 19 - .../node_modules/jade/lib/utils.js | 21 - .../node_modules/character-parser/.npmignore | 16 - .../node_modules/character-parser/.travis.yml | 4 - .../node_modules/character-parser/README.md | 123 - .../node_modules/character-parser/index.js | 205 - .../character-parser/package.json | 38 - .../character-parser/test/index.js | 50 - .../jade/node_modules/commander/.npmignore | 4 - .../jade/node_modules/commander/.travis.yml | 4 - .../jade/node_modules/commander/History.md | 152 - .../jade/node_modules/commander/Makefile | 7 - .../jade/node_modules/commander/Readme.md | 270 - .../jade/node_modules/commander/index.js | 1131 - .../commander/node_modules/keypress/README.md | 101 - .../commander/node_modules/keypress/index.js | 346 - .../node_modules/keypress/package.json | 31 - .../commander/node_modules/keypress/test.js | 28 - .../jade/node_modules/commander/package.json | 40 - .../jade/node_modules/mkdirp/.npmignore | 2 - .../jade/node_modules/mkdirp/.travis.yml | 5 - .../jade/node_modules/mkdirp/LICENSE | 21 - .../jade/node_modules/mkdirp/examples/pow.js | 6 - .../jade/node_modules/mkdirp/index.js | 82 - .../jade/node_modules/mkdirp/package.json | 33 - .../jade/node_modules/mkdirp/readme.markdown | 63 - .../jade/node_modules/mkdirp/test/chmod.js | 38 - .../jade/node_modules/mkdirp/test/clobber.js | 37 - .../jade/node_modules/mkdirp/test/mkdirp.js | 28 - .../jade/node_modules/mkdirp/test/perm.js | 32 - .../node_modules/mkdirp/test/perm_sync.js | 39 - .../jade/node_modules/mkdirp/test/race.js | 41 - .../jade/node_modules/mkdirp/test/rel.js | 32 - .../jade/node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../jade/node_modules/mkdirp/test/root.js | 18 - .../jade/node_modules/mkdirp/test/sync.js | 32 - .../jade/node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 32 - .../jade/node_modules/monocle/.npmignore | 2 - .../jade/node_modules/monocle/.travis.yml | 5 - .../jade/node_modules/monocle/LICENSE | 23 - .../jade/node_modules/monocle/README.md | 67 - .../jade/node_modules/monocle/logo.png | Bin 25575 -> 0 bytes .../jade/node_modules/monocle/monocle.js | 142 - .../monocle/node_modules/readdirp/.npmignore | 15 - .../monocle/node_modules/readdirp/.travis.yml | 5 - .../monocle/node_modules/readdirp/LICENSE | 18 - .../monocle/node_modules/readdirp/README.md | 227 - .../node_modules/readdirp/examples/Readme.md | 37 - .../readdirp/examples/callback-api.js | 10 - .../node_modules/readdirp/examples/grep.js | 73 - .../node_modules/event-stream/.npmignore | 3 - .../node_modules/event-stream/.travis.yml | 4 - .../node_modules/event-stream/LICENCE | 22 - .../event-stream/examples/pretty.js | 25 - .../node_modules/event-stream/index.js | 341 - .../node_modules/duplexer/.npmignore | 3 - .../node_modules/duplexer/.travis.yml | 3 - .../node_modules/duplexer/LICENCE | 19 - .../node_modules/duplexer/Makefile | 4 - .../node_modules/duplexer/README.md | 36 - .../node_modules/duplexer/index.js | 87 - .../node_modules/duplexer/package.json | 41 - .../node_modules/duplexer/test.js | 27 - .../node_modules/from/LICENSE.APACHE2 | 15 - .../node_modules/from/LICENSE.MIT | 24 - .../event-stream/node_modules/from/index.js | 62 - .../node_modules/from/package.json | 33 - .../node_modules/from/readme.markdown | 6 - .../node_modules/from/test/index.js | 141 - .../node_modules/map-stream/.npmignore | 3 - .../node_modules/map-stream/.travis.yml | 4 - .../node_modules/map-stream/LICENCE | 22 - .../map-stream/examples/pretty.js | 25 - .../node_modules/map-stream/index.js | 105 - .../node_modules/map-stream/package.json | 30 - .../node_modules/map-stream/readme.markdown | 35 - .../map-stream/test/simple-map.asynct.js | 295 - .../node_modules/optimist/.npmignore | 4 - .../node_modules/optimist/LICENSE | 21 - .../node_modules/optimist/README.markdown | 474 - .../node_modules/optimist/examples/bool.js | 10 - .../optimist/examples/boolean_double.js | 7 - .../optimist/examples/boolean_single.js | 7 - .../optimist/examples/default_hash.js | 8 - .../optimist/examples/default_singles.js | 7 - .../node_modules/optimist/examples/divide.js | 8 - .../optimist/examples/line_count.js | 20 - .../optimist/examples/line_count_options.js | 29 - .../optimist/examples/line_count_wrap.js | 29 - .../node_modules/optimist/examples/nonopt.js | 4 - .../node_modules/optimist/examples/reflect.js | 2 - .../node_modules/optimist/examples/short.js | 3 - .../node_modules/optimist/examples/string.js | 11 - .../optimist/examples/usage-options.js | 19 - .../node_modules/optimist/examples/xup.js | 10 - .../node_modules/optimist/index.js | 457 - .../optimist/node_modules/wordwrap/.npmignore | 1 - .../node_modules/wordwrap/README.markdown | 70 - .../node_modules/wordwrap/example/center.js | 10 - .../node_modules/wordwrap/example/meat.js | 3 - .../optimist/node_modules/wordwrap/index.js | 76 - .../node_modules/wordwrap/package.json | 40 - .../node_modules/wordwrap/test/break.js | 30 - .../node_modules/wordwrap/test/idleness.txt | 63 - .../node_modules/wordwrap/test/wrap.js | 31 - .../node_modules/optimist/package.json | 46 - .../node_modules/optimist/test/_.js | 66 - .../node_modules/optimist/test/_/argv.js | 2 - .../node_modules/optimist/test/_/bin.js | 3 - .../node_modules/optimist/test/parse.js | 304 - .../node_modules/optimist/test/usage.js | 256 - .../node_modules/pause-stream/.npmignore | 3 - .../node_modules/pause-stream/index.js | 76 - .../node_modules/pause-stream/package.json | 38 - .../node_modules/pause-stream/readme.markdown | 24 - .../node_modules/pause-stream/test/index.js | 17 - .../pause-stream/test/pause-end.js | 33 - .../node_modules/split/.npmignore | 3 - .../node_modules/split/.travis.yml | 4 - .../event-stream/node_modules/split/LICENCE | 22 - .../node_modules/split/examples/pretty.js | 25 - .../event-stream/node_modules/split/index.js | 35 - .../split/node_modules/through/.travis.yml | 4 - .../node_modules/through/LICENSE.APACHE2 | 15 - .../split/node_modules/through/LICENSE.MIT | 24 - .../split/node_modules/through/index.js | 65 - .../split/node_modules/through/package.json | 29 - .../node_modules/through/readme.markdown | 26 - .../split/node_modules/through/test/index.js | 113 - .../node_modules/split/package.json | 35 - .../node_modules/split/readme.markdown | 20 - .../node_modules/split/test/split.asynct.js | 47 - .../node_modules/through/.travis.yml | 4 - .../node_modules/through/LICENSE.APACHE2 | 15 - .../node_modules/through/LICENSE.MIT | 24 - .../node_modules/through/index.js | 100 - .../node_modules/through/package.json | 34 - .../node_modules/through/readme.markdown | 44 - .../node_modules/through/test/buffering.js | 37 - .../node_modules/through/test/end.js | 27 - .../node_modules/through/test/index.js | 113 - .../node_modules/event-stream/package.json | 40 - .../node_modules/event-stream/readme.markdown | 286 - .../event-stream/test/connect.asynct.js | 82 - .../event-stream/test/merge.asynct.js | 20 - .../event-stream/test/pause.asynct.js | 38 - .../event-stream/test/pipeline.asynct.js | 51 - .../event-stream/test/readArray.asynct.js | 88 - .../event-stream/test/readable.asynct.js | 167 - .../event-stream/test/replace.asynct.js | 50 - .../event-stream/test/simple-map.asynct.js | 342 - .../event-stream/test/spec.asynct.js | 85 - .../event-stream/test/split.asynct.js | 46 - .../event-stream/test/stringify.js | 14 - .../event-stream/test/writeArray.asynct.js | 30 - .../node_modules/tap-stream/.npmignore | 1 - .../node_modules/tap-stream/.travis.yml | 5 - .../node_modules/tap-stream/README.md | 98 - .../tap-stream/examples/tap-nested-objects.js | 38 - .../examples/node_modules/tap-stream/index.js | 56 - .../node_modules/through/.travis.yml | 4 - .../node_modules/through/LICENSE.APACHE2 | 15 - .../node_modules/through/LICENSE.MIT | 24 - .../tap-stream/node_modules/through/index.js | 100 - .../node_modules/through/package.json | 34 - .../node_modules/through/readme.markdown | 44 - .../node_modules/through/test/buffering.js | 37 - .../node_modules/through/test/end.js | 27 - .../node_modules/through/test/index.js | 113 - .../node_modules/tap-stream/package.json | 38 - .../tap-stream/test/tap-stream.js | 104 - .../readdirp/examples/package.json | 9 - .../readdirp/examples/stream-api-pipe.js | 13 - .../readdirp/examples/stream-api.js | 15 - .../readdirp/node_modules/minimatch/LICENSE | 23 - .../readdirp/node_modules/minimatch/README.md | 218 - .../node_modules/minimatch/minimatch.js | 1079 - .../node_modules/lru-cache/.npmignore | 1 - .../minimatch/node_modules/lru-cache/AUTHORS | 8 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../node_modules/lru-cache/README.md | 97 - .../node_modules/lru-cache/lib/lru-cache.js | 257 - .../node_modules/lru-cache/package.json | 62 - .../minimatch/node_modules/lru-cache/s.js | 25 - .../node_modules/lru-cache/test/basic.js | 329 - .../node_modules/lru-cache/test/foreach.js | 52 - .../lru-cache/test/memory-leak.js | 50 - .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 - .../node_modules/sigmund/package.json | 41 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../node_modules/sigmund/test/basic.js | 24 - .../node_modules/minimatch/package.json | 39 - .../node_modules/minimatch/test/basic.js | 399 - .../minimatch/test/brace-expand.js | 33 - .../node_modules/minimatch/test/caching.js | 14 - .../node_modules/minimatch/test/defaults.js | 274 - .../node_modules/readdirp/package.json | 49 - .../monocle/node_modules/readdirp/readdirp.js | 267 - .../node_modules/readdirp/stream-api.js | 86 - .../test/bed/root_dir1/root_dir1_file1.ext1 | 0 .../test/bed/root_dir1/root_dir1_file2.ext2 | 0 .../test/bed/root_dir1/root_dir1_file3.ext3 | 0 .../root1_dir1_subdir1_file1.ext1 | 0 .../test/bed/root_dir2/root_dir2_file1.ext1 | 0 .../test/bed/root_dir2/root_dir2_file2.ext2 | 0 .../readdirp/test/bed/root_file1.ext1 | 0 .../readdirp/test/bed/root_file2.ext2 | 0 .../readdirp/test/bed/root_file3.ext3 | 0 .../readdirp/test/readdirp-stream.js | 215 - .../node_modules/readdirp/test/readdirp.js | 252 - .../jade/node_modules/monocle/package.json | 39 - .../monocle/test/sample_files/creation3.txt | 1 - .../monocle/test/sample_files/creation4.txt | 1 - .../monocle/test/sample_files/creation5.txt | 1 - .../monocle/test/sample_files/foo.txt | 1 - .../monocle/test/sample_files/longbow.js | 1 - .../test/sample_files/nestedDir/servent.txt | 1 - .../monocle/test/sample_files/zap.bat | 31 - .../jade/node_modules/monocle/test/tester.js | 180 - .../jade/node_modules/transformers/.npmignore | 15 - .../node_modules/transformers/.travis.yml | 3 - .../jade/node_modules/transformers/README.md | 138 - .../jade/node_modules/transformers/history.md | 69 - .../node_modules/transformers/lib/shared.js | 162 - .../transformers/lib/transformers.js | 575 - .../transformers/node_modules/.bin/uglifyjs | 15 - .../node_modules/.bin/uglifyjs.cmd | 5 - .../transformers/node_modules/css/.npmignore | 4 - .../transformers/node_modules/css/History.md | 20 - .../transformers/node_modules/css/Makefile | 8 - .../transformers/node_modules/css/Readme.md | 77 - .../node_modules/css/benchmark.js | 36 - .../node_modules/css/component.json | 13 - .../transformers/node_modules/css/index.js | 3 - .../css/node_modules/css-parse/.npmignore | 6 - .../css/node_modules/css-parse/History.md | 30 - .../css/node_modules/css-parse/Makefile | 7 - .../css/node_modules/css-parse/Readme.md | 62 - .../css/node_modules/css-parse/component.json | 8 - .../css/node_modules/css-parse/index.js | 265 - .../css/node_modules/css-parse/package.json | 23 - .../css/node_modules/css-stringify/.npmignore | 6 - .../css/node_modules/css-stringify/History.md | 30 - .../css/node_modules/css-stringify/Makefile | 7 - .../css/node_modules/css-stringify/Readme.md | 33 - .../node_modules/css-stringify/component.json | 8 - .../css/node_modules/css-stringify/index.js | 182 - .../node_modules/css-stringify/package.json | 28 - .../node_modules/css/package.json | 23 - .../transformers/node_modules/css/test.js | 6 - .../node_modules/promise/.npmignore | 6 - .../node_modules/promise/Readme.md | 85 - .../node_modules/promise/index.js | 164 - .../node_modules/is-promise/.npmignore | 6 - .../promise/node_modules/is-promise/index.js | 5 - .../node_modules/is-promise/package.json | 28 - .../promise/node_modules/is-promise/readme.md | 29 - .../node_modules/promise/package.json | 32 - .../node_modules/uglify-js/.npmignore | 2 - .../node_modules/uglify-js/README.md | 544 - .../node_modules/uglify-js/bin/uglifyjs | 370 - .../node_modules/uglify-js/lib/ast.js | 964 - .../node_modules/uglify-js/lib/compress.js | 1968 -- .../node_modules/uglify-js/lib/mozilla-ast.js | 265 - .../node_modules/uglify-js/lib/output.js | 1220 - .../node_modules/uglify-js/lib/parse.js | 1407 -- .../node_modules/uglify-js/lib/scope.js | 580 - .../node_modules/uglify-js/lib/sourcemap.js | 81 - .../node_modules/uglify-js/lib/transform.js | 218 - .../node_modules/uglify-js/lib/utils.js | 288 - .../node_modules/optimist/.travis.yml | 4 - .../uglify-js/node_modules/optimist/LICENSE | 21 - .../node_modules/optimist/example/bool.js | 10 - .../optimist/example/boolean_double.js | 7 - .../optimist/example/boolean_single.js | 7 - .../optimist/example/default_hash.js | 8 - .../optimist/example/default_singles.js | 7 - .../node_modules/optimist/example/divide.js | 8 - .../optimist/example/line_count.js | 20 - .../optimist/example/line_count_options.js | 29 - .../optimist/example/line_count_wrap.js | 29 - .../node_modules/optimist/example/nonopt.js | 4 - .../node_modules/optimist/example/reflect.js | 2 - .../node_modules/optimist/example/short.js | 3 - .../node_modules/optimist/example/string.js | 11 - .../optimist/example/usage-options.js | 19 - .../node_modules/optimist/example/xup.js | 10 - .../uglify-js/node_modules/optimist/index.js | 478 - .../optimist/node_modules/wordwrap/.npmignore | 1 - .../node_modules/wordwrap/README.markdown | 70 - .../node_modules/wordwrap/example/center.js | 10 - .../node_modules/wordwrap/example/meat.js | 3 - .../optimist/node_modules/wordwrap/index.js | 76 - .../node_modules/wordwrap/package.json | 44 - .../node_modules/wordwrap/test/break.js | 30 - .../node_modules/wordwrap/test/idleness.txt | 63 - .../node_modules/wordwrap/test/wrap.js | 31 - .../node_modules/optimist/package.json | 45 - .../node_modules/optimist/readme.markdown | 487 - .../uglify-js/node_modules/optimist/test/_.js | 71 - .../node_modules/optimist/test/_/argv.js | 2 - .../node_modules/optimist/test/_/bin.js | 3 - .../node_modules/optimist/test/parse.js | 446 - .../node_modules/optimist/test/usage.js | 292 - .../node_modules/source-map/.npmignore | 2 - .../node_modules/source-map/.travis.yml | 4 - .../node_modules/source-map/CHANGELOG.md | 58 - .../uglify-js/node_modules/source-map/LICENSE | 28 - .../source-map/Makefile.dryice.js | 166 - .../node_modules/source-map/README.md | 347 - .../source-map/build/assert-shim.js | 56 - .../source-map/build/mini-require.js | 152 - .../source-map/build/prefix-source-map.jsm | 20 - .../source-map/build/prefix-utils.jsm | 18 - .../source-map/build/suffix-browser.js | 8 - .../source-map/build/suffix-source-map.jsm | 6 - .../source-map/build/suffix-utils.jsm | 21 - .../source-map/build/test-prefix.js | 8 - .../source-map/build/test-suffix.js | 3 - .../node_modules/source-map/lib/source-map.js | 8 - .../source-map/lib/source-map/array-set.js | 96 - .../source-map/lib/source-map/base64-vlq.js | 144 - .../source-map/lib/source-map/base64.js | 42 - .../lib/source-map/binary-search.js | 81 - .../lib/source-map/source-map-consumer.js | 426 - .../lib/source-map/source-map-generator.js | 381 - .../source-map/lib/source-map/source-node.js | 353 - .../source-map/lib/source-map/util.js | 91 - .../source-map/node_modules/amdefine/LICENSE | 58 - .../node_modules/amdefine/README.md | 119 - .../node_modules/amdefine/amdefine.js | 299 - .../node_modules/amdefine/package.json | 36 - .../node_modules/source-map/package.json | 77 - .../node_modules/source-map/test/run-tests.js | 73 - .../source-map/test/source-map/test-api.js | 26 - .../test/source-map/test-array-set.js | 71 - .../test/source-map/test-base64-vlq.js | 24 - .../source-map/test/source-map/test-base64.js | 35 - .../test/source-map/test-binary-search.js | 54 - .../test/source-map/test-dog-fooding.js | 72 - .../source-map/test-source-map-consumer.js | 291 - .../source-map/test-source-map-generator.js | 391 - .../test/source-map/test-source-node.js | 282 - .../source-map/test/source-map/util.js | 152 - .../node_modules/uglify-js/package.json | 44 - .../uglify-js/test/compress/arrays.js | 12 - .../uglify-js/test/compress/blocks.js | 49 - .../uglify-js/test/compress/conditionals.js | 143 - .../uglify-js/test/compress/dead-code.js | 89 - .../uglify-js/test/compress/debugger.js | 24 - .../uglify-js/test/compress/drop-unused.js | 97 - .../uglify-js/test/compress/issue-105.js | 17 - .../uglify-js/test/compress/issue-12.js | 11 - .../uglify-js/test/compress/issue-22.js | 17 - .../uglify-js/test/compress/issue-44.js | 31 - .../uglify-js/test/compress/issue-59.js | 30 - .../uglify-js/test/compress/labels.js | 163 - .../uglify-js/test/compress/loops.js | 123 - .../uglify-js/test/compress/properties.js | 25 - .../uglify-js/test/compress/sequences.js | 161 - .../uglify-js/test/compress/switch.js | 210 - .../node_modules/uglify-js/test/run-tests.js | 170 - .../node_modules/uglify-js/tools/node.js | 164 - .../node_modules/transformers/package.json | 76 - .../test/fixtures/component/build/build.css | 6 - .../test/fixtures/component/build/build.js | 1235 - .../test/fixtures/component/component.json | 8 - .../component-classes/component.json | 19 - .../components/component-classes/index.js | 164 - .../component-delegate/component.json | 19 - .../components/component-delegate/index.js | 42 - .../components/component-dom/component.json | 27 - .../components/component-dom/index.js | 579 - .../component-domify/component.json | 20 - .../components/component-domify/index.js | 79 - .../components/component-event/component.json | 13 - .../components/component-event/index.js | 40 - .../component-indexof/component.json | 15 - .../components/component-indexof/index.js | 10 - .../component-matches-selector/component.json | 17 - .../component-matches-selector/index.js | 40 - .../components/component-type/component.json | 15 - .../components/component-type/index.js | 31 - .../test/fixtures/component/index.css | 3 - .../test/fixtures/component/index.js | 1 - .../test/fixtures/component/second.css | 3 - .../test/fixtures/uglify-js/script.js | 6 - .../test/simple/atpl/sample-a.txt | 1 - .../test/simple/atpl/sample-b.txt | 1 - .../test/simple/cdata/sample-a-expected.txt | 3 - .../test/simple/cdata/sample-a.txt | 1 - .../test/simple/cdata/sample-b-expected.txt | 3 - .../test/simple/cdata/sample-b.txt | 1 - .../coffee-script/sample-a-expected.txt | 6 - .../test/simple/coffee-script/sample-a.txt | 1 - .../coffee-script/sample-b-expected.txt | 6 - .../test/simple/coffee-script/sample-b.txt | 1 - .../simple/coffeecup/sample-a-expected.txt | 1 - .../test/simple/coffeecup/sample-a.txt | 3 - .../simple/coffeecup/sample-b-expected.txt | 1 - .../test/simple/coffeecup/sample-b.txt | 3 - .../test/simple/cson/sample-a-expected.txt | 1 - .../test/simple/cson/sample-a.txt | 9 - .../test/simple/cson/sample-b-expected.txt | 1 - .../test/simple/cson/sample-b.txt | 9 - .../transformers/test/simple/dot/sample-a.txt | 1 - .../transformers/test/simple/dot/sample-b.txt | 1 - .../test/simple/dust/sample-a.txt | 1 - .../test/simple/dust/sample-b.txt | 1 - .../transformers/test/simple/eco/sample-a.txt | 1 - .../transformers/test/simple/eco/sample-b.txt | 1 - .../transformers/test/simple/ect/sample-a.txt | 1 - .../transformers/test/simple/ect/sample-b.txt | 1 - .../transformers/test/simple/ejs/sample-a.txt | 1 - .../transformers/test/simple/ejs/sample-b.txt | 1 - .../test/simple/haml-coffee/sample-a.txt | 1 - .../test/simple/haml-coffee/sample-b.txt | 1 - .../test/simple/haml/sample-a-expected.txt | 2 - .../test/simple/haml/sample-a.txt | 1 - .../test/simple/haml/sample-b-expected.txt | 2 - .../test/simple/haml/sample-b.txt | 1 - .../test/simple/handlebars/sample-a.txt | 1 - .../test/simple/handlebars/sample-b.txt | 1 - .../test/simple/hogan/sample-a.txt | 1 - .../test/simple/hogan/sample-b.txt | 1 - .../simple/html2jade/sample-a-expected.txt | 7 - .../test/simple/html2jade/sample-a.txt | 10 - .../simple/html2jade/sample-b-expected.txt | 7 - .../test/simple/html2jade/sample-b.txt | 10 - .../test/simple/jade/sample-a.txt | 1 - .../test/simple/jade/sample-b.txt | 1 - .../test/simple/jazz/sample-a.txt | 1 - .../test/simple/jazz/sample-b.txt | 1 - .../test/simple/jqtpl/sample-a.txt | 1 - .../test/simple/jqtpl/sample-b.txt | 1 - .../test/simple/just/sample-a.txt | 1 - .../test/simple/just/sample-b.txt | 1 - .../test/simple/less/sample-a-expected.txt | 27 - .../test/simple/less/sample-a.txt | 54 - .../test/simple/less/sample-b-expected.txt | 27 - .../test/simple/less/sample-b.txt | 54 - .../test/simple/liquor/sample-a.txt | 1 - .../test/simple/liquor/sample-b.txt | 1 - .../simple/markdown/sample-a-expected.txt | 6 - .../test/simple/markdown/sample-a.txt | 6 - .../simple/markdown/sample-b-expected.txt | 6 - .../test/simple/markdown/sample-b.txt | 6 - .../test/simple/mote/sample-a.txt | 1 - .../test/simple/mote/sample-b.txt | 1 - .../test/simple/mustache/sample-a.txt | 1 - .../test/simple/mustache/sample-b.txt | 1 - .../test/simple/plates/sample-a-expected.txt | 1 - .../test/simple/plates/sample-a.txt | 1 - .../test/simple/plates/sample-b-expected.txt | 1 - .../test/simple/plates/sample-b.txt | 1 - .../test/simple/qejs/sample-a.txt | 1 - .../test/simple/qejs/sample-b.txt | 1 - .../test/simple/sass/sample-a-expected.txt | 8 - .../test/simple/sass/sample-a.txt | 11 - .../test/simple/sass/sample-b-expected.txt | 8 - .../test/simple/sass/sample-b.txt | 11 - .../test/simple/stylus/sample-a-expected.txt | 8 - .../test/simple/stylus/sample-a.txt | 10 - .../test/simple/stylus/sample-b-expected.txt | 8 - .../test/simple/stylus/sample-b.txt | 10 - .../test/simple/swig/sample-a.txt | 1 - .../test/simple/swig/sample-b.txt | 1 - .../test/simple/templayed/sample-a.txt | 1 - .../test/simple/templayed/sample-b.txt | 1 - .../test/simple/toffee/sample-a.txt | 1 - .../test/simple/toffee/sample-b.txt | 1 - .../simple/uglify-css/sample-a-expected.txt | 1 - .../test/simple/uglify-css/sample-a.txt | 3 - .../simple/uglify-css/sample-b-expected.txt | 1 - .../test/simple/uglify-css/sample-b.txt | 3 - .../simple/uglify-json/sample-a-expected.txt | 1 - .../test/simple/uglify-json/sample-a.txt | 3 - .../simple/uglify-json/sample-b-expected.txt | 1 - .../test/simple/uglify-json/sample-b.txt | 5 - .../test/simple/underscore/sample-a.txt | 1 - .../test/simple/underscore/sample-b.txt | 1 - .../test/simple/walrus/sample-a.txt | 1 - .../test/simple/walrus/sample-b.txt | 1 - .../test/simple/whiskers/sample-a.txt | 1 - .../test/simple/whiskers/sample-b.txt | 1 - .../node_modules/transformers/test/test.js | 123 - .../transformers/test/update-package.js | 13 - .../jade/node_modules/with/.npmignore | 16 - .../jade/node_modules/with/.travis.yml | 4 - .../jade/node_modules/with/README.md | 55 - .../jade/node_modules/with/index.js | 31 - .../node_modules/lexical-scope/.travis.yml | 4 - .../with/node_modules/lexical-scope/LICENSE | 18 - .../lexical-scope/bench/jquery.js | 4 - .../lexical-scope/bench/results.txt | 15 - .../node_modules/lexical-scope/bench/run.js | 7 - .../lexical-scope/example/detect.js | 6 - .../node_modules/lexical-scope/example/src.js | 27 - .../with/node_modules/lexical-scope/index.js | 161 - .../node_modules/astw/.travis.yml | 4 - .../lexical-scope/node_modules/astw/LICENSE | 18 - .../node_modules/astw/example/types.js | 8 - .../lexical-scope/node_modules/astw/index.js | 42 - .../astw/node_modules/.bin/esparse | 15 - .../astw/node_modules/.bin/esparse.cmd | 5 - .../astw/node_modules/.bin/esvalidate | 15 - .../astw/node_modules/.bin/esvalidate.cmd | 5 - .../astw/node_modules/esprima/.npmignore | 8 - .../astw/node_modules/esprima/ChangeLog | 18 - .../astw/node_modules/esprima/LICENSE.BSD | 19 - .../astw/node_modules/esprima/README.md | 73 - .../astw/node_modules/esprima/bin/esparse.js | 117 - .../node_modules/esprima/bin/esvalidate.js | 177 - .../astw/node_modules/esprima/component.json | 14 - .../astw/node_modules/esprima/doc/index.html | 473 - .../astw/node_modules/esprima/esprima.js | 3895 --- .../esprima/examples/detectnestedternary.js | 106 - .../esprima/examples/findbooleantrap.js | 173 - .../esprima/examples/tokendist.js | 33 - .../astw/node_modules/esprima/index.html | 102 - .../astw/node_modules/esprima/package.json | 43 - .../node_modules/esprima/test/benchmarks.html | 58 - .../node_modules/esprima/test/benchmarks.js | 334 - .../node_modules/esprima/test/compare.html | 69 - .../astw/node_modules/esprima/test/compare.js | 328 - .../node_modules/esprima/test/compat.html | 40 - .../astw/node_modules/esprima/test/compat.js | 239 - .../esprima/test/coverage.footer.html | 3 - .../esprima/test/coverage.header.html | 37 - .../node_modules/esprima/test/coverage.html | 4676 ---- .../astw/node_modules/esprima/test/index.html | 37 - .../node_modules/esprima/test/module.html | 36 - .../astw/node_modules/esprima/test/module.js | 129 - .../astw/node_modules/esprima/test/reflect.js | 422 - .../astw/node_modules/esprima/test/run.js | 66 - .../astw/node_modules/esprima/test/runner.js | 387 - .../astw/node_modules/esprima/test/test.js | 19764 --------------- .../node_modules/astw/package.json | 53 - .../node_modules/astw/readme.markdown | 52 - .../node_modules/astw/test/parent.js | 25 - .../node_modules/lexical-scope/package.json | 64 - .../lexical-scope/readme.markdown | 99 - .../lexical-scope/test/argument.js | 17 - .../lexical-scope/test/assign_implicit.js | 13 - .../node_modules/lexical-scope/test/detect.js | 17 - .../lexical-scope/test/files/argument.js | 6 - .../test/files/assign_implicit.js | 2 - .../lexical-scope/test/files/detect.js | 32 - .../test/files/multiple-exports.js | 6 - .../lexical-scope/test/files/named_arg.js | 6 - .../lexical-scope/test/files/obj.js | 1 - .../lexical-scope/test/files/return_hash.js | 5 - .../lexical-scope/test/files/right_hand.js | 2 - .../lexical-scope/test/multiple-exports.js | 18 - .../lexical-scope/test/named_arg.js | 17 - .../node_modules/lexical-scope/test/obj.js | 16 - .../lexical-scope/test/package.json | 5 - .../lexical-scope/test/return_hash.js | 13 - .../lexical-scope/test/right_hand.js | 16 - .../lexical-scope/test/shebang.js | 19 - .../jade/node_modules/with/package.json | 30 - .../jade/node_modules/with/test/index.js | 107 - .../node_modules/jade/package.json | 62 - .../node_modules/jade/runtime.js | 196 - .../node_modules/mongoose/.npmignore | 13 - .../node_modules/mongoose/.travis.yml | 7 - .../node_modules/mongoose/CONTRIBUTING.md | 53 - .../node_modules/mongoose/History.md | 1628 -- .../node_modules/mongoose/README.md | 269 - .../node_modules/mongoose/examples/README.md | 42 - .../mongoose/examples/doc-methods.js | 70 - .../node_modules/express/.npmignore | 9 - .../node_modules/express/.travis.yml | 4 - .../node_modules/express/History.md | 1100 - .../node_modules/express/LICENSE | 22 - .../node_modules/express/Readme.md | 180 - .../node_modules/express/bin/express | 422 - .../node_modules/express/client.js | 25 - .../node_modules/express/index.js | 4 - .../node_modules/express/lib/application.js | 533 - .../node_modules/express/lib/express.js | 92 - .../node_modules/express/lib/middleware.js | 33 - .../node_modules/express/lib/request.js | 496 - .../node_modules/express/lib/response.js | 756 - .../node_modules/express/lib/router/index.js | 273 - .../node_modules/express/lib/router/route.js | 72 - .../node_modules/express/lib/utils.js | 280 - .../node_modules/express/lib/view.js | 76 - .../node_modules/buffer-crc32/.npmignore | 1 - .../node_modules/buffer-crc32/.travis.yml | 8 - .../node_modules/buffer-crc32/README.md | 47 - .../node_modules/buffer-crc32/index.js | 88 - .../node_modules/buffer-crc32/package.json | 36 - .../buffer-crc32/tests/crc.test.js | 89 - .../express/node_modules/commander/.npmignore | 4 - .../node_modules/commander/.travis.yml | 4 - .../express/node_modules/commander/History.md | 107 - .../express/node_modules/commander/Makefile | 7 - .../express/node_modules/commander/Readme.md | 262 - .../express/node_modules/commander/index.js | 2 - .../node_modules/commander/lib/commander.js | 1026 - .../node_modules/commander/package.json | 35 - .../express/node_modules/connect/.npmignore | 12 - .../express/node_modules/connect/.travis.yml | 5 - .../express/node_modules/connect/LICENSE | 24 - .../express/node_modules/connect/Readme.md | 133 - .../express/node_modules/connect/index.js | 4 - .../express/node_modules/connect/lib/cache.js | 81 - .../node_modules/connect/lib/connect.js | 92 - .../express/node_modules/connect/lib/index.js | 50 - .../connect/lib/middleware/basicAuth.js | 103 - .../connect/lib/middleware/bodyParser.js | 61 - .../connect/lib/middleware/compress.js | 152 - .../connect/lib/middleware/cookieParser.js | 62 - .../connect/lib/middleware/cookieSession.js | 117 - .../connect/lib/middleware/csrf.js | 73 - .../connect/lib/middleware/directory.js | 229 - .../connect/lib/middleware/errorHandler.js | 86 - .../connect/lib/middleware/favicon.js | 80 - .../connect/lib/middleware/json.js | 86 - .../connect/lib/middleware/limit.js | 55 - .../connect/lib/middleware/logger.js | 339 - .../connect/lib/middleware/methodOverride.js | 40 - .../connect/lib/middleware/multipart.js | 133 - .../connect/lib/middleware/query.js | 46 - .../connect/lib/middleware/responseTime.js | 32 - .../connect/lib/middleware/session.js | 356 - .../connect/lib/middleware/session/cookie.js | 140 - .../connect/lib/middleware/session/memory.js | 129 - .../connect/lib/middleware/session/session.js | 116 - .../connect/lib/middleware/session/store.js | 84 - .../connect/lib/middleware/static.js | 95 - .../connect/lib/middleware/staticCache.js | 231 - .../connect/lib/middleware/timeout.js | 55 - .../connect/lib/middleware/urlencoded.js | 78 - .../connect/lib/middleware/vhost.js | 40 - .../express/node_modules/connect/lib/patch.js | 79 - .../express/node_modules/connect/lib/proto.js | 230 - .../connect/lib/public/directory.html | 81 - .../connect/lib/public/error.html | 14 - .../connect/lib/public/favicon.ico | Bin 1406 -> 0 bytes .../connect/lib/public/icons/page.png | Bin 635 -> 0 bytes .../connect/lib/public/icons/page_add.png | Bin 739 -> 0 bytes .../connect/lib/public/icons/page_attach.png | Bin 794 -> 0 bytes .../connect/lib/public/icons/page_code.png | Bin 818 -> 0 bytes .../connect/lib/public/icons/page_copy.png | Bin 663 -> 0 bytes .../connect/lib/public/icons/page_delete.png | Bin 740 -> 0 bytes .../connect/lib/public/icons/page_edit.png | Bin 807 -> 0 bytes .../connect/lib/public/icons/page_error.png | Bin 793 -> 0 bytes .../connect/lib/public/icons/page_excel.png | Bin 817 -> 0 bytes .../connect/lib/public/icons/page_find.png | Bin 879 -> 0 bytes .../connect/lib/public/icons/page_gear.png | Bin 833 -> 0 bytes .../connect/lib/public/icons/page_go.png | Bin 779 -> 0 bytes .../connect/lib/public/icons/page_green.png | Bin 621 -> 0 bytes .../connect/lib/public/icons/page_key.png | Bin 801 -> 0 bytes .../lib/public/icons/page_lightning.png | Bin 839 -> 0 bytes .../connect/lib/public/icons/page_link.png | Bin 830 -> 0 bytes .../lib/public/icons/page_paintbrush.png | Bin 813 -> 0 bytes .../connect/lib/public/icons/page_paste.png | Bin 703 -> 0 bytes .../connect/lib/public/icons/page_red.png | Bin 641 -> 0 bytes .../connect/lib/public/icons/page_refresh.png | Bin 858 -> 0 bytes .../connect/lib/public/icons/page_save.png | Bin 774 -> 0 bytes .../connect/lib/public/icons/page_white.png | Bin 294 -> 0 bytes .../lib/public/icons/page_white_acrobat.png | Bin 591 -> 0 bytes .../public/icons/page_white_actionscript.png | Bin 664 -> 0 bytes .../lib/public/icons/page_white_add.png | Bin 512 -> 0 bytes .../connect/lib/public/icons/page_white_c.png | Bin 587 -> 0 bytes .../lib/public/icons/page_white_camera.png | Bin 656 -> 0 bytes .../lib/public/icons/page_white_cd.png | Bin 666 -> 0 bytes .../lib/public/icons/page_white_code.png | Bin 603 -> 0 bytes .../lib/public/icons/page_white_code_red.png | Bin 587 -> 0 bytes .../public/icons/page_white_coldfusion.png | Bin 592 -> 0 bytes .../public/icons/page_white_compressed.png | Bin 724 -> 0 bytes .../lib/public/icons/page_white_copy.png | Bin 309 -> 0 bytes .../lib/public/icons/page_white_cplusplus.png | Bin 621 -> 0 bytes .../lib/public/icons/page_white_csharp.png | Bin 700 -> 0 bytes .../lib/public/icons/page_white_cup.png | Bin 639 -> 0 bytes .../lib/public/icons/page_white_database.png | Bin 579 -> 0 bytes .../lib/public/icons/page_white_delete.png | Bin 536 -> 0 bytes .../lib/public/icons/page_white_dvd.png | Bin 638 -> 0 bytes .../lib/public/icons/page_white_edit.png | Bin 618 -> 0 bytes .../lib/public/icons/page_white_error.png | Bin 623 -> 0 bytes .../lib/public/icons/page_white_excel.png | Bin 663 -> 0 bytes .../lib/public/icons/page_white_find.png | Bin 676 -> 0 bytes .../lib/public/icons/page_white_flash.png | Bin 582 -> 0 bytes .../lib/public/icons/page_white_freehand.png | Bin 639 -> 0 bytes .../lib/public/icons/page_white_gear.png | Bin 402 -> 0 bytes .../lib/public/icons/page_white_get.png | Bin 516 -> 0 bytes .../lib/public/icons/page_white_go.png | Bin 612 -> 0 bytes .../connect/lib/public/icons/page_white_h.png | Bin 603 -> 0 bytes .../public/icons/page_white_horizontal.png | Bin 296 -> 0 bytes .../lib/public/icons/page_white_key.png | Bin 616 -> 0 bytes .../lib/public/icons/page_white_lightning.png | Bin 669 -> 0 bytes .../lib/public/icons/page_white_link.png | Bin 614 -> 0 bytes .../lib/public/icons/page_white_magnify.png | Bin 554 -> 0 bytes .../lib/public/icons/page_white_medal.png | Bin 706 -> 0 bytes .../lib/public/icons/page_white_office.png | Bin 779 -> 0 bytes .../lib/public/icons/page_white_paint.png | Bin 688 -> 0 bytes .../public/icons/page_white_paintbrush.png | Bin 618 -> 0 bytes .../lib/public/icons/page_white_paste.png | Bin 620 -> 0 bytes .../lib/public/icons/page_white_php.png | Bin 538 -> 0 bytes .../lib/public/icons/page_white_picture.png | Bin 650 -> 0 bytes .../public/icons/page_white_powerpoint.png | Bin 588 -> 0 bytes .../lib/public/icons/page_white_put.png | Bin 523 -> 0 bytes .../lib/public/icons/page_white_ruby.png | Bin 626 -> 0 bytes .../lib/public/icons/page_white_stack.png | Bin 317 -> 0 bytes .../lib/public/icons/page_white_star.png | Bin 565 -> 0 bytes .../lib/public/icons/page_white_swoosh.png | Bin 634 -> 0 bytes .../lib/public/icons/page_white_text.png | Bin 342 -> 0 bytes .../public/icons/page_white_text_width.png | Bin 315 -> 0 bytes .../lib/public/icons/page_white_tux.png | Bin 668 -> 0 bytes .../lib/public/icons/page_white_vector.png | Bin 644 -> 0 bytes .../public/icons/page_white_visualstudio.png | Bin 702 -> 0 bytes .../lib/public/icons/page_white_width.png | Bin 309 -> 0 bytes .../lib/public/icons/page_white_word.png | Bin 651 -> 0 bytes .../lib/public/icons/page_white_world.png | Bin 734 -> 0 bytes .../lib/public/icons/page_white_wrench.png | Bin 613 -> 0 bytes .../lib/public/icons/page_white_zip.png | Bin 386 -> 0 bytes .../connect/lib/public/icons/page_word.png | Bin 777 -> 0 bytes .../connect/lib/public/icons/page_world.png | Bin 903 -> 0 bytes .../node_modules/connect/lib/public/style.css | 141 - .../express/node_modules/connect/lib/utils.js | 388 - .../node_modules/buffer-crc32/.npmignore | 1 - .../node_modules/buffer-crc32/.travis.yml | 8 - .../node_modules/buffer-crc32/README.md | 33 - .../node_modules/buffer-crc32/index.js | 84 - .../node_modules/buffer-crc32/package.json | 31 - .../buffer-crc32/tests/crc.test.js | 52 - .../connect/node_modules/bytes/.npmignore | 1 - .../connect/node_modules/bytes/History.md | 10 - .../connect/node_modules/bytes/Makefile | 7 - .../connect/node_modules/bytes/Readme.md | 51 - .../connect/node_modules/bytes/component.json | 7 - .../connect/node_modules/bytes/index.js | 39 - .../connect/node_modules/bytes/package.json | 20 - .../node_modules/formidable/.npmignore | 4 - .../node_modules/formidable/.travis.yml | 4 - .../connect/node_modules/formidable/Makefile | 14 - .../connect/node_modules/formidable/Readme.md | 311 - .../connect/node_modules/formidable/TODO | 3 - .../benchmark/bench-multipart-parser.js | 70 - .../node_modules/formidable/example/post.js | 43 - .../node_modules/formidable/example/upload.js | 48 - .../connect/node_modules/formidable/index.js | 1 - .../node_modules/formidable/lib/file.js | 73 - .../formidable/lib/incoming_form.js | 384 - .../node_modules/formidable/lib/index.js | 3 - .../formidable/lib/multipart_parser.js | 312 - .../formidable/lib/querystring_parser.js | 25 - .../node_modules/formidable/lib/util.js | 6 - .../formidable/node-gently/Makefile | 4 - .../formidable/node-gently/Readme.md | 167 - .../formidable/node-gently/example/dog.js | 22 - .../node-gently/example/event_emitter.js | 11 - .../formidable/node-gently/index.js | 1 - .../node-gently/lib/gently/gently.js | 184 - .../node-gently/lib/gently/index.js | 1 - .../formidable/node-gently/package.json | 14 - .../formidable/node-gently/test/common.js | 8 - .../node-gently/test/simple/test-gently.js | 348 - .../node_modules/formidable/package.json | 28 - .../node_modules/formidable/test/common.js | 19 - .../test/fixture/file/funkyfilename.txt | 1 - .../formidable/test/fixture/file/plain.txt | 1 - .../http/special-chars-in-filename/info.md | 3 - .../formidable/test/fixture/js/no-filename.js | 3 - .../fixture/js/special-chars-in-filename.js | 21 - .../formidable/test/fixture/multipart.js | 72 - .../test/integration/test-fixtures.js | 89 - .../formidable/test/legacy/common.js | 24 - .../integration/test-multipart-parser.js | 80 - .../test/legacy/simple/test-file.js | 104 - .../test/legacy/simple/test-incoming-form.js | 727 - .../legacy/simple/test-multipart-parser.js | 50 - .../legacy/simple/test-querystring-parser.js | 45 - .../legacy/system/test-multi-video-upload.js | 75 - .../node_modules/formidable/test/run.js | 2 - .../test/unit/test-incoming-form.js | 63 - .../node_modules/formidable/tool/record.js | 47 - .../connect/node_modules/pause/.npmignore | 4 - .../connect/node_modules/pause/History.md | 5 - .../connect/node_modules/pause/Makefile | 7 - .../connect/node_modules/pause/Readme.md | 29 - .../connect/node_modules/pause/index.js | 29 - .../connect/node_modules/pause/package.json | 20 - .../connect/node_modules/qs/.gitmodules | 6 - .../connect/node_modules/qs/.npmignore | 1 - .../connect/node_modules/qs/.travis.yml | 4 - .../connect/node_modules/qs/History.md | 83 - .../connect/node_modules/qs/Makefile | 12 - .../connect/node_modules/qs/Readme.md | 58 - .../connect/node_modules/qs/benchmark.js | 17 - .../connect/node_modules/qs/component.json | 6 - .../connect/node_modules/qs/examples.js | 51 - .../connect/node_modules/qs/index.js | 2 - .../connect/node_modules/qs/lib/head.js | 1 - .../node_modules/qs/lib/querystring.js | 262 - .../connect/node_modules/qs/lib/tail.js | 1 - .../connect/node_modules/qs/package.json | 36 - .../connect/node_modules/qs/querystring.js | 254 - .../node_modules/qs/test/browser/expect.js | 1202 - .../node_modules/qs/test/browser/index.html | 18 - .../node_modules/qs/test/browser/jquery.js | 8981 ------- .../node_modules/qs/test/browser/mocha.css | 163 - .../node_modules/qs/test/browser/mocha.js | 4201 ---- .../node_modules/qs/test/browser/qs.css | 0 .../node_modules/qs/test/browser/qs.js | 351 - .../connect/node_modules/qs/test/parse.js | 147 - .../connect/node_modules/qs/test/stringify.js | 73 - .../express/node_modules/connect/package.json | 54 - .../express/node_modules/connect/test.js | 40 - .../node_modules/cookie-signature/.npmignore | 4 - .../node_modules/cookie-signature/History.md | 5 - .../node_modules/cookie-signature/Makefile | 7 - .../node_modules/cookie-signature/Readme.md | 42 - .../node_modules/cookie-signature/index.js | 42 - .../cookie-signature/package.json | 28 - .../express/node_modules/cookie/.npmignore | 1 - .../express/node_modules/cookie/.travis.yml | 4 - .../express/node_modules/cookie/README.md | 44 - .../express/node_modules/cookie/index.js | 61 - .../express/node_modules/cookie/package.json | 33 - .../node_modules/cookie/test/mocha.opts | 1 - .../express/node_modules/cookie/test/parse.js | 28 - .../node_modules/cookie/test/serialize.js | 59 - .../express/node_modules/debug/.npmignore | 4 - .../express/node_modules/debug/History.md | 62 - .../express/node_modules/debug/Readme.md | 115 - .../express/node_modules/debug/component.json | 9 - .../express/node_modules/debug/debug.js | 124 - .../express/node_modules/debug/example/app.js | 19 - .../node_modules/debug/example/browser.html | 24 - .../node_modules/debug/example/wildcards.js | 10 - .../node_modules/debug/example/worker.js | 22 - .../express/node_modules/debug/index.js | 5 - .../express/node_modules/debug/lib/debug.js | 134 - .../express/node_modules/debug/package.json | 37 - .../express/node_modules/fresh/.npmignore | 1 - .../express/node_modules/fresh/Makefile | 7 - .../express/node_modules/fresh/Readme.md | 32 - .../express/node_modules/fresh/index.js | 49 - .../express/node_modules/fresh/package.json | 20 - .../express/node_modules/methods/index.js | 26 - .../express/node_modules/methods/package.json | 20 - .../express/node_modules/mkdirp/.npmignore | 2 - .../express/node_modules/mkdirp/.travis.yml | 5 - .../express/node_modules/mkdirp/LICENSE | 21 - .../node_modules/mkdirp/examples/pow.js | 6 - .../express/node_modules/mkdirp/index.js | 82 - .../express/node_modules/mkdirp/package.json | 30 - .../node_modules/mkdirp/readme.markdown | 63 - .../express/node_modules/mkdirp/test/chmod.js | 38 - .../node_modules/mkdirp/test/clobber.js | 37 - .../node_modules/mkdirp/test/mkdirp.js | 28 - .../express/node_modules/mkdirp/test/perm.js | 32 - .../node_modules/mkdirp/test/perm_sync.js | 39 - .../express/node_modules/mkdirp/test/race.js | 41 - .../express/node_modules/mkdirp/test/rel.js | 32 - .../node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../express/node_modules/mkdirp/test/root.js | 18 - .../express/node_modules/mkdirp/test/sync.js | 32 - .../express/node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 32 - .../node_modules/range-parser/.npmignore | 1 - .../node_modules/range-parser/History.md | 15 - .../node_modules/range-parser/Makefile | 7 - .../node_modules/range-parser/Readme.md | 28 - .../node_modules/range-parser/index.js | 49 - .../node_modules/range-parser/package.json | 20 - .../express/node_modules/send/.npmignore | 4 - .../express/node_modules/send/History.md | 25 - .../express/node_modules/send/Makefile | 8 - .../express/node_modules/send/Readme.md | 123 - .../express/node_modules/send/index.js | 2 - .../express/node_modules/send/lib/send.js | 473 - .../express/node_modules/send/lib/utils.js | 47 - .../send/node_modules/mime/LICENSE | 19 - .../send/node_modules/mime/README.md | 63 - .../send/node_modules/mime/mime.js | 104 - .../send/node_modules/mime/package.json | 32 - .../send/node_modules/mime/test.js | 55 - .../send/node_modules/mime/types/mime.types | 1510 -- .../send/node_modules/mime/types/node.types | 65 - .../express/node_modules/send/package.json | 34 - .../node_modules/express/package.json | 85 - .../node_modules/express/test.js | 38 - .../node_modules/mongoose/examples/hooks.js | 42 - .../population-across-three-collections.js | 135 - .../mongoose/examples/population-basic.js | 95 - .../examples/population-of-existing-doc.js | 101 - .../population-of-multiple-existing-docs.js | 112 - .../mongoose/examples/population-options.js | 124 - .../examples/population-plain-objects.js | 96 - .../node_modules/mongoose/examples/schema.js | 102 - .../node_modules/mongoose/index.js | 7 - .../node_modules/mongoose/lib/collection.js | 188 - .../node_modules/mongoose/lib/connection.js | 706 - .../mongoose/lib/connectionstate.js | 24 - .../node_modules/mongoose/lib/document.js | 1710 -- .../node_modules/mongoose/lib/drivers/SPEC.md | 4 - .../lib/drivers/node-mongodb-native/binary.js | 8 - .../drivers/node-mongodb-native/collection.js | 211 - .../drivers/node-mongodb-native/connection.js | 299 - .../drivers/node-mongodb-native/objectid.js | 29 - .../node_modules/mongoose/lib/error.js | 39 - .../node_modules/mongoose/lib/errors/cast.js | 35 - .../mongoose/lib/errors/divergentArray.js | 40 - .../mongoose/lib/errors/document.js | 32 - .../mongoose/lib/errors/missingSchema.js | 32 - .../mongoose/lib/errors/overwriteModel.js | 30 - .../mongoose/lib/errors/validation.js | 49 - .../mongoose/lib/errors/validator.js | 51 - .../mongoose/lib/errors/version.js | 31 - .../node_modules/mongoose/lib/index.js | 580 - .../node_modules/mongoose/lib/internal.js | 31 - .../node_modules/mongoose/lib/model.js | 2229 -- .../node_modules/mongoose/lib/namedscope.js | 70 - .../node_modules/mongoose/lib/promise.js | 231 - .../node_modules/mongoose/lib/query.js | 2608 -- .../node_modules/mongoose/lib/queryhelpers.js | 35 - .../node_modules/mongoose/lib/querystream.js | 336 - .../node_modules/mongoose/lib/schema.js | 910 - .../node_modules/mongoose/lib/schema/array.js | 314 - .../mongoose/lib/schema/boolean.js | 92 - .../mongoose/lib/schema/buffer.js | 163 - .../node_modules/mongoose/lib/schema/date.js | 167 - .../mongoose/lib/schema/documentarray.js | 189 - .../node_modules/mongoose/lib/schema/index.js | 28 - .../node_modules/mongoose/lib/schema/mixed.js | 83 - .../mongoose/lib/schema/number.js | 225 - .../mongoose/lib/schema/objectid.js | 183 - .../mongoose/lib/schema/string.js | 302 - .../mongoose/lib/schemadefault.js | 34 - .../node_modules/mongoose/lib/schematype.js | 625 - .../node_modules/mongoose/lib/statemachine.js | 179 - .../node_modules/mongoose/lib/types/array.js | 679 - .../node_modules/mongoose/lib/types/buffer.js | 210 - .../mongoose/lib/types/documentarray.js | 189 - .../mongoose/lib/types/embedded.js | 244 - .../node_modules/mongoose/lib/types/index.js | 13 - .../mongoose/lib/types/objectid.js | 43 - .../node_modules/mongoose/lib/utils.js | 671 - .../node_modules/mongoose/lib/virtualtype.js | 103 - .../mongoose/node_modules/hooks/.npmignore | 2 - .../mongoose/node_modules/hooks/Makefile | 9 - .../mongoose/node_modules/hooks/README.md | 306 - .../mongoose/node_modules/hooks/hooks.alt.js | 134 - .../mongoose/node_modules/hooks/hooks.js | 161 - .../mongoose/node_modules/hooks/package.json | 53 - .../mongoose/node_modules/hooks/test.js | 691 - .../mongoose/node_modules/mongodb/.travis.yml | 5 - .../node_modules/mongodb/CONTRIBUTING.md | 23 - .../mongoose/node_modules/mongodb/Makefile | 28 - .../mongoose/node_modules/mongodb/Readme.md | 442 - .../mongoose/node_modules/mongodb/index.js | 1 - .../mongoose/node_modules/mongodb/install.js | 40 - .../node_modules/mongodb/lib/mongodb/admin.js | 339 - .../mongodb/lib/mongodb/auth/mongodb_cr.js | 53 - .../lib/mongodb/auth/mongodb_gssapi.js | 148 - .../mongodb/lib/mongodb/auth/mongodb_sspi.js | 134 - .../mongodb/lib/mongodb/collection.js | 1764 -- .../lib/mongodb/commands/base_command.js | 29 - .../lib/mongodb/commands/db_command.js | 241 - .../lib/mongodb/commands/delete_command.js | 114 - .../lib/mongodb/commands/get_more_command.js | 83 - .../lib/mongodb/commands/insert_command.js | 147 - .../mongodb/commands/kill_cursor_command.js | 98 - .../lib/mongodb/commands/query_command.js | 261 - .../lib/mongodb/commands/update_command.js | 174 - .../mongodb/lib/mongodb/connection/base.js | 465 - .../lib/mongodb/connection/connection.js | 505 - .../lib/mongodb/connection/connection_pool.js | 294 - .../mongodb/connection/connection_utils.js | 23 - .../mongodb/lib/mongodb/connection/mongos.js | 471 - .../lib/mongodb/connection/read_preference.js | 67 - .../lib/mongodb/connection/repl_set/ha.js | 392 - .../mongodb/connection/repl_set/options.js | 125 - .../mongodb/connection/repl_set/repl_set.js | 758 - .../connection/repl_set/repl_set_state.js | 70 - .../repl_set/strategies/ping_strategy.js | 297 - .../strategies/statistics_strategy.js | 80 - .../mongodb/lib/mongodb/connection/server.js | 965 - .../lib/mongodb/connection/url_parser.js | 241 - .../mongodb/lib/mongodb/cursor.js | 930 - .../mongodb/lib/mongodb/cursorstream.js | 164 - .../node_modules/mongodb/lib/mongodb/db.js | 1928 -- .../mongodb/lib/mongodb/gridfs/chunk.js | 213 - .../mongodb/lib/mongodb/gridfs/grid.js | 103 - .../mongodb/lib/mongodb/gridfs/gridstore.js | 1482 -- .../mongodb/lib/mongodb/gridfs/readstream.js | 193 - .../node_modules/mongodb/lib/mongodb/index.js | 66 - .../mongodb/lib/mongodb/mongo_client.js | 340 - .../lib/mongodb/responses/mongo_reply.js | 144 - .../node_modules/mongodb/lib/mongodb/utils.js | 137 - .../mongodb/node_modules/bson/.travis.yml | 5 - .../mongodb/node_modules/bson/Makefile | 19 - .../mongodb/node_modules/bson/README.md | 1 - .../bson/benchmarks/benchmarks.js | 130 - .../mongodb/node_modules/bson/binding.gyp | 17 - .../node_modules/bson/browser_build/bson.js | 4814 ---- .../bson/browser_build/package.json | 8 - .../node_modules/bson/build_browser.js | 7 - .../mongodb/node_modules/bson/builderror.log | 11 - .../mongodb/node_modules/bson/ext/Makefile | 28 - .../mongodb/node_modules/bson/ext/bson.cc | 1006 - .../mongodb/node_modules/bson/ext/bson.h | 273 - .../mongodb/node_modules/bson/ext/index.js | 30 - .../bson/ext/win32/ia32/bson.node | Bin 113152 -> 0 bytes .../node_modules/bson/ext/win32/x64/bson.node | Bin 118272 -> 0 bytes .../mongodb/node_modules/bson/ext/wscript | 39 - .../node_modules/bson/lib/bson/binary.js | 339 - .../bson/lib/bson/binary_parser.js | 385 - .../node_modules/bson/lib/bson/bson.js | 1519 -- .../node_modules/bson/lib/bson/code.js | 25 - .../node_modules/bson/lib/bson/db_ref.js | 31 - .../node_modules/bson/lib/bson/double.js | 33 - .../bson/lib/bson/float_parser.js | 121 - .../node_modules/bson/lib/bson/index.js | 74 - .../node_modules/bson/lib/bson/long.js | 854 - .../node_modules/bson/lib/bson/max_key.js | 13 - .../node_modules/bson/lib/bson/min_key.js | 13 - .../node_modules/bson/lib/bson/objectid.js | 253 - .../node_modules/bson/lib/bson/symbol.js | 48 - .../node_modules/bson/lib/bson/timestamp.js | 853 - .../mongodb/node_modules/bson/package.json | 55 - .../bson/test/browser/browser_example.htm | 19 - .../bson/test/browser/bson_test.js | 260 - .../bson/test/browser/nodeunit.js | 2034 -- .../node_modules/bson/test/browser/suite2.js | 13 - .../node_modules/bson/test/browser/suite3.js | 7 - .../node_modules/bson/test/browser/test.html | 30 - .../bson/test/node/bson_array_test.js | 240 - .../test/node/bson_parser_comparision_test.js | 493 - .../node_modules/bson/test/node/bson_test.js | 1694 -- .../bson/test/node/bson_typed_array_test.js | 392 - .../bson/test/node/data/test_gs_weird_bug.png | Bin 52184 -> 0 bytes .../bson/test/node/test_full_bson.js | 315 - .../bson/test/node/to_bson_test.js | 109 - .../bson/test/node/tools/utils.js | 80 - .../mongodb/node_modules/bson/tools/gleak.js | 21 - .../bson/tools/jasmine-1.1.0/MIT.LICENSE | 20 - .../bson/tools/jasmine-1.1.0/jasmine-html.js | 190 - .../bson/tools/jasmine-1.1.0/jasmine.css | 166 - .../bson/tools/jasmine-1.1.0/jasmine.js | 2476 -- .../tools/jasmine-1.1.0/jasmine_favicon.png | Bin 905 -> 0 bytes .../mongodb/node_modules/kerberos/README.md | 4 - .../mongodb/node_modules/kerberos/binding.gyp | 41 - .../node_modules/kerberos/builderror.log | 11 - .../mongodb/node_modules/kerberos/index.js | 6 - .../kerberos/lib/auth_processes/mongodb.js | 278 - .../node_modules/kerberos/lib/base64.c | 120 - .../node_modules/kerberos/lib/base64.h | 18 - .../node_modules/kerberos/lib/kerberos.cc | 563 - .../node_modules/kerberos/lib/kerberos.h | 47 - .../node_modules/kerberos/lib/kerberos.js | 91 - .../kerberos/lib/kerberos_context.cc | 74 - .../kerberos/lib/kerberos_context.h | 48 - .../node_modules/kerberos/lib/kerberosgss.c | 668 - .../node_modules/kerberos/lib/kerberosgss.h | 70 - .../mongodb/node_modules/kerberos/lib/sspi.js | 15 - .../node_modules/kerberos/lib/win32/base64.c | 121 - .../node_modules/kerberos/lib/win32/base64.h | 18 - .../kerberos/lib/win32/kerberos.cc | 53 - .../kerberos/lib/win32/kerberos.h | 59 - .../kerberos/lib/win32/kerberos_sspi.c | 244 - .../kerberos/lib/win32/kerberos_sspi.h | 106 - .../node_modules/kerberos/lib/win32/worker.cc | 7 - .../node_modules/kerberos/lib/win32/worker.h | 37 - .../lib/win32/wrappers/security_buffer.cc | 110 - .../lib/win32/wrappers/security_buffer.h | 46 - .../lib/win32/wrappers/security_buffer.js | 12 - .../wrappers/security_buffer_descriptor.cc | 177 - .../wrappers/security_buffer_descriptor.h | 44 - .../wrappers/security_buffer_descriptor.js | 3 - .../lib/win32/wrappers/security_context.cc | 1211 - .../lib/win32/wrappers/security_context.h | 85 - .../lib/win32/wrappers/security_context.js | 3 - .../win32/wrappers/security_credentials.cc | 468 - .../lib/win32/wrappers/security_credentials.h | 67 - .../win32/wrappers/security_credentials.js | 22 - .../node_modules/kerberos/lib/worker.cc | 7 - .../node_modules/kerberos/lib/worker.h | 39 - .../node_modules/kerberos/package.json | 34 - .../kerberos/test/kerberos_tests.js | 34 - .../kerberos/test/kerberos_win32_test.js | 19 - .../win32/security_buffer_descriptor_tests.js | 41 - .../test/win32/security_buffer_tests.js | 22 - .../test/win32/security_credentials_tests.js | 55 - .../node_modules/mongodb/package.json | 228 - .../mongoose/node_modules/mpath/.npmignore | 2 - .../mongoose/node_modules/mpath/.travis.yml | 4 - .../mongoose/node_modules/mpath/History.md | 16 - .../mongoose/node_modules/mpath/LICENSE | 22 - .../mongoose/node_modules/mpath/Makefile | 5 - .../mongoose/node_modules/mpath/README.md | 278 - .../mongoose/node_modules/mpath/index.js | 1 - .../mongoose/node_modules/mpath/lib/index.js | 183 - .../mongoose/node_modules/mpath/package.json | 38 - .../mongoose/node_modules/mpath/test/index.js | 1630 -- .../mongoose/node_modules/mpromise/.npmignore | 2 - .../node_modules/mpromise/.travis.yml | 4 - .../mongoose/node_modules/mpromise/History.md | 24 - .../mongoose/node_modules/mpromise/LICENSE | 22 - .../mongoose/node_modules/mpromise/Makefile | 12 - .../mongoose/node_modules/mpromise/README.md | 200 - .../mongoose/node_modules/mpromise/index.js | 1 - .../node_modules/mpromise/lib/promise.js | 268 - .../mpromise/node_modules/sliced/.npmignore | 2 - .../mpromise/node_modules/sliced/.travis.yml | 4 - .../mpromise/node_modules/sliced/History.md | 23 - .../mpromise/node_modules/sliced/LICENSE | 22 - .../mpromise/node_modules/sliced/Makefile | 5 - .../mpromise/node_modules/sliced/README.md | 62 - .../mpromise/node_modules/sliced/bench.js | 95 - .../node_modules/sliced/component.json | 13 - .../mpromise/node_modules/sliced/index.js | 1 - .../node_modules/sliced/lib/sliced.js | 37 - .../mpromise/node_modules/sliced/package.json | 38 - .../node_modules/sliced/test/index.js | 80 - .../node_modules/mpromise/package.json | 43 - .../mpromise/test/promise.test.js | 201 - .../node_modules/mpromise/test/promises-A.js | 35 - .../mongoose/node_modules/ms/.npmignore | 1 - .../mongoose/node_modules/ms/Makefile | 8 - .../mongoose/node_modules/ms/README.md | 65 - .../mongoose/node_modules/ms/ms.js | 35 - .../mongoose/node_modules/ms/package.json | 19 - .../mongoose/node_modules/ms/test/index.html | 19 - .../node_modules/ms/test/support/jquery.js | 9266 ------- .../mongoose/node_modules/ms/test/test.js | 61 - .../mongoose/node_modules/muri/.npmignore | 2 - .../mongoose/node_modules/muri/.travis.yml | 4 - .../mongoose/node_modules/muri/History.md | 47 - .../mongoose/node_modules/muri/LICENSE | 22 - .../mongoose/node_modules/muri/Makefile | 5 - .../mongoose/node_modules/muri/README.md | 46 - .../mongoose/node_modules/muri/index.js | 1 - .../mongoose/node_modules/muri/lib/index.js | 235 - .../mongoose/node_modules/muri/package.json | 37 - .../mongoose/node_modules/muri/test/index.js | 312 - .../node_modules/regexp-clone/.npmignore | 2 - .../node_modules/regexp-clone/.travis.yml | 5 - .../node_modules/regexp-clone/History.md | 5 - .../node_modules/regexp-clone/LICENSE | 22 - .../node_modules/regexp-clone/Makefile | 5 - .../node_modules/regexp-clone/README.md | 18 - .../node_modules/regexp-clone/index.js | 20 - .../node_modules/regexp-clone/package.json | 36 - .../node_modules/regexp-clone/test/index.js | 112 - .../mongoose/node_modules/sliced/.npmignore | 2 - .../mongoose/node_modules/sliced/.travis.yml | 4 - .../mongoose/node_modules/sliced/History.md | 16 - .../mongoose/node_modules/sliced/LICENSE | 22 - .../mongoose/node_modules/sliced/Makefile | 5 - .../mongoose/node_modules/sliced/README.md | 62 - .../mongoose/node_modules/sliced/bench.js | 95 - .../mongoose/node_modules/sliced/index.js | 1 - .../node_modules/sliced/lib/sliced.js | 33 - .../mongoose/node_modules/sliced/package.json | 38 - .../node_modules/sliced/test/index.js | 80 - .../node_modules/mongoose/package.json | 69 - .../node_modules/mongoose/static.js | 18 - .../node_modules/mongoose/website.js | 60 - .../node_modules/mysql/.npmignore | 7 - .../node_modules/mysql/.travis.yml | 5 - .../node_modules/mysql/Changes.md | 221 - .../node_modules/mysql/License | 19 - .../node_modules/mysql/Makefile | 4 - .../node_modules/mysql/Readme.md | 863 - .../node_modules/mysql/benchmark/analyze.js | 96 - .../mysql/benchmark/parse-100k-blog-rows.js | 112 - .../mysql/benchmark/select-100k-blog-rows.js | 42 - .../node_modules/mysql/index.js | 20 - .../node_modules/mysql/lib/Connection.js | 186 - .../mysql/lib/ConnectionConfig.js | 115 - .../node_modules/mysql/lib/Pool.js | 156 - .../node_modules/mysql/lib/PoolConfig.js | 14 - .../node_modules/mysql/lib/protocol/Auth.js | 166 - .../mysql/lib/protocol/PacketHeader.js | 5 - .../mysql/lib/protocol/PacketWriter.js | 197 - .../node_modules/mysql/lib/protocol/Parser.js | 386 - .../mysql/lib/protocol/Protocol.js | 309 - .../mysql/lib/protocol/ResultSet.js | 7 - .../mysql/lib/protocol/SqlString.js | 139 - .../mysql/lib/protocol/constants/charsets.js | 195 - .../mysql/lib/protocol/constants/client.js | 26 - .../mysql/lib/protocol/constants/errors.js | 725 - .../lib/protocol/constants/field_flags.js | 18 - .../lib/protocol/constants/server_status.js | 39 - .../mysql/lib/protocol/constants/types.js | 29 - .../packets/ClientAuthenticationPacket.js | 52 - .../protocol/packets/ComChangeUserPacket.js | 25 - .../lib/protocol/packets/ComPingPacket.js | 12 - .../lib/protocol/packets/ComQueryPacket.js | 15 - .../lib/protocol/packets/ComQuitPacket.js | 7 - .../protocol/packets/ComStatisticsPacket.js | 12 - .../mysql/lib/protocol/packets/EmptyPacket.js | 6 - .../mysql/lib/protocol/packets/EofPacket.js | 25 - .../mysql/lib/protocol/packets/ErrorPacket.js | 35 - .../mysql/lib/protocol/packets/Field.js | 31 - .../mysql/lib/protocol/packets/FieldPacket.js | 82 - .../packets/HandshakeInitializationPacket.js | 93 - .../protocol/packets/LocalDataFilePacket.js | 8 - .../mysql/lib/protocol/packets/OkPacket.js | 41 - .../lib/protocol/packets/OldPasswordPacket.js | 15 - .../protocol/packets/ResultSetHeaderPacket.js | 25 - .../lib/protocol/packets/RowDataPacket.js | 104 - .../lib/protocol/packets/StatisticsPacket.js | 20 - .../protocol/packets/UseOldPasswordPacket.js | 14 - .../mysql/lib/protocol/packets/index.js | 4 - .../lib/protocol/sequences/ChangeUser.js | 41 - .../mysql/lib/protocol/sequences/Handshake.js | 70 - .../mysql/lib/protocol/sequences/Ping.js | 14 - .../mysql/lib/protocol/sequences/Query.js | 199 - .../mysql/lib/protocol/sequences/Quit.js | 13 - .../mysql/lib/protocol/sequences/Sequence.js | 83 - .../lib/protocol/sequences/Statistics.js | 23 - .../mysql/lib/protocol/sequences/index.js | 4 - .../mysql/node_modules/bignumber.js/LICENCE | 23 - .../mysql/node_modules/bignumber.js/README.md | 222 - .../node_modules/bignumber.js/bignumber.js | 1909 -- .../bignumber.js/bignumber.min.js | 1 - .../node_modules/bignumber.js/doc/API.html | 1704 -- .../node_modules/bignumber.js/package.json | 47 - .../node_modules/bignumber.js/perf/README.txt | 45 - .../perf/bignumber-vs-bigdecimal.html | 699 - .../bignumber.js/perf/bigtime-OOM.js | 366 - .../node_modules/bignumber.js/perf/bigtime.js | 335 - .../perf/lib/bigdecimal_GWT/BigDecTest.class | Bin 1275 -> 0 bytes .../perf/lib/bigdecimal_GWT/BigDecTest.java | 60 - .../perf/lib/bigdecimal_GWT/LICENCE.txt | 205 - .../perf/lib/bigdecimal_GWT/bigdecimal.js | 592 - .../perf/lib/bigdecimal_GWT/bugs.js | 53 - .../bigdecimal_ICU4J/BigDecimal-all-last.js | 5724 ----- .../BigDecimal-all-last.min.js | 61 - .../perf/lib/bigdecimal_ICU4J/LICENCE.txt | 30 - .../node_modules/bignumber.js/test/abs.js | 1080 - .../node_modules/bignumber.js/test/base-in.js | 456 - .../bignumber.js/test/base-out.js | 10818 --------- .../test/browser/bignumber-vs-number.html | 306 - .../test/browser/console-errors.html | 477 - .../bignumber.js/test/browser/every-test.html | 74 - .../bignumber.js/test/browser/quick-test.html | 12 - .../test/browser/single-test.html | 33 - .../node_modules/bignumber.js/test/ceil.js | 208 - .../node_modules/bignumber.js/test/cmp.js | 4127 ---- .../node_modules/bignumber.js/test/config.js | 557 - .../node_modules/bignumber.js/test/div.js | 19930 ---------------- .../bignumber.js/test/every-test.js | 39 - .../node_modules/bignumber.js/test/floor.js | 216 - .../node_modules/bignumber.js/test/minus.js | 1846 -- .../node_modules/bignumber.js/test/mod.js | 1905 -- .../node_modules/bignumber.js/test/neg.js | 544 - .../node_modules/bignumber.js/test/others.js | 361 - .../node_modules/bignumber.js/test/plus.js | 1969 -- .../node_modules/bignumber.js/test/pow.js | 1535 -- .../bignumber.js/test/quick-test.js | 1416 -- .../node_modules/bignumber.js/test/round.js | 2380 -- .../node_modules/bignumber.js/test/sqrt.js | 2565 -- .../node_modules/bignumber.js/test/times.js | 2218 -- .../bignumber.js/test/toExponential.js | 845 - .../node_modules/bignumber.js/test/toFixed.js | 1499 -- .../bignumber.js/test/toFraction.js | 3037 --- .../bignumber.js/test/toPrecision.js | 852 - .../bignumber.js/test/toString.js | 1104 - .../bignumber.js/test/v8-LICENCE.txt | 45 - .../node_modules/require-all/.Readme.md.un~ | Bin 12033 -> 0 bytes .../node_modules/require-all/.index.js.un~ | Bin 12887 -> 0 bytes .../mysql/node_modules/require-all/Readme.md | 16 - .../mysql/node_modules/require-all/index.js | 25 - .../node_modules/require-all/package.json | 27 - .../require-all/test/.test.js.un~ | Bin 7066 -> 0 bytes .../test/controllers/main-Controller.js | 4 - .../require-all/test/controllers/notthis.js | 1 - .../test/controllers/other-Controller.js | 2 - .../require-all/test/mydir/foo.js | 1 - .../require-all/test/mydir/hello.js | 2 - .../test/mydir/sub/.config.json.un~ | Bin 1864 -> 0 bytes .../require-all/test/mydir/sub/config.json | 4 - .../require-all/test/mydir/sub/no.2js | 1 - .../require-all/test/mydir/sub/yes.js | 1 - .../node_modules/require-all/test/test.js | 38 - .../node_modules/mysql/package.json | 42 - .../node_modules/mysql/test/FakeServer.js | 149 - .../node_modules/mysql/test/common.js | 65 - .../node_modules/mysql/test/fixtures/data.csv | 3 - .../connection/test-bad-credentials.js | 27 - .../connection/test-bulk-insert.js | 37 - .../test-callback-errors-are-not-caught.js | 20 - .../test-change-user-fatal-error.js | 24 - .../connection/test-change-user.js | 36 - ...t-connection-config-flags-affected-rows.js | 39 - .../test-connection-config-flags.js | 53 - .../connection/test-connection-destroy.js | 9 - .../connection/test-custom-query-format.js | 18 - .../connection/test-custom-typecast.js | 46 - .../test-destroy-while-streaming-rows.js | 45 - .../connection/test-double-connect.js | 24 - .../connection/test-drain-event.js | 20 - .../connection/test-end-callback.js | 27 - .../integration/connection/test-escape-id.js | 7 - .../connection/test-exception-safety.js | 66 - ...fatal-auth-error-going-to-all-callbacks.js | 25 - .../test-fatal-auth-error-without-handlers.js | 20 - ...al-network-error-going-to-all-callbacks.js | 21 - ...st-fatal-network-error-without-handlers.js | 17 - ...test-fatal-query-error-without-callback.js | 19 - .../connection/test-host-denied-error.js | 26 - .../connection/test-implicit-connect.js | 16 - .../connection/test-insert-results.js | 26 - .../connection/test-load-data-infile.js | 55 - ...long-stack-traces-for-connection-errors.js | 12 - .../connection/test-long-stack-traces.js | 16 - .../test-multiple-statements-streaming.js | 55 - .../test-multiple-statements-with-error.js | 36 - .../connection/test-multiple-statements.js | 31 - .../connection/test-nested-tables-query.js | 48 - .../test-normal-error-without-handler.js | 19 - ...est-normal-query-error-without-callback.js | 19 - .../connection/test-old-password.js | 35 - .../test/integration/connection/test-ping.js | 15 - .../test-procedure-with-multiple-selects.js | 40 - .../test-procedure-with-single-select.js | 33 - .../connection/test-query-after-destroy.js | 17 - .../test-query-after-end-without-callback.js | 23 - .../connection/test-query-after-end.js | 23 - .../connection/test-query-dates-as-strings.js | 42 - .../connection/test-query-escape-id.js | 31 - .../connection/test-query-escaping.js | 36 - .../integration/connection/test-select-1.js | 21 - .../connection/test-select-empty-string.js | 16 - .../test-send-and-receive-large-packets.js | 81 - .../test-server-timeout-disconnect.js | 24 - .../test-server-unexpected-disconnect.js | 36 - .../integration/connection/test-statistics.js | 26 - .../test-streaming-rows-quick-pause-resume.js | 46 - .../connection/test-streaming-rows.js | 65 - .../integration/connection/test-timezones.js | 67 - .../connection/test-transaction-commit.js | 41 - .../connection/test-transaction-rollback.js | 41 - .../connection/test-type-cast-null-fields.js | 34 - .../connection/test-type-cast-query.js | 37 - .../connection/test-type-casting.js | 118 - .../connection/test-unix-domain-socket.js | 32 - .../connection/test-zerofill-results.js | 39 - .../integration/pool/test-connection-limit.js | 26 - .../pool/test-destroy-connection.js | 17 - .../test/integration/pool/test-end-empty.js | 13 - .../integration/pool/test-get-connection.js | 10 - .../node_modules/mysql/test/run.js | 7 - .../mysql/test/unit/protocol/test-Parser.js | 125 - .../test/unit/protocol/test-SqlString.js | 132 - .../mysql/test/unit/test-ConnectionConfig.js | 29 - .../mysql/tool/generate-error-constants.js | 28 - 1393 files changed, 275134 deletions(-) delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/Readme_zh-cn.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/bin/jade delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/jade.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/jade.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/compiler.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/doctypes.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/filters-client.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/filters.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/jade.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/logo.png delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file1.ext1 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file2.ext2 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file3.ext3 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_subdir1/root1_dir1_subdir1_file1.ext1 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file1.ext1 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file2.ext2 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file1.ext1 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file2.ext2 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file3.ext3 delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/bin/uglifyjs delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/arrays.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/blocks.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/conditionals.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/dead-code.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/debugger.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/drop-unused.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-105.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-12.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-22.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-44.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/issue-59.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/labels.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/loops.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/properties.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/sequences.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/compress/switch.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/jade/runtime.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/CONTRIBUTING.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/doc-methods.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/bin/express delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/client.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/application.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/express.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/middleware.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/request.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/response.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/router/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/router/route.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/lib/view.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/lib/commander.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/commander/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/cache.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/connect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/compress.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/csrf.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/directory.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/favicon.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/json.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/limit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/logger.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/multipart.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/query.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/responseTime.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/memory.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/session.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/session/store.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/static.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/staticCache.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/timeout.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/middleware/vhost.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/patch.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/proto.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/directory.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/favicon.ico delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_add.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_code.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_error.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_find.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_go.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_green.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_key.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_link.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_red.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_save.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_word.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_world.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/mocha.css delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/mocha.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/qs.css delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/qs.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/parse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/stringify.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie-signature/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/test/mocha.opts delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/test/parse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/cookie/test/serialize.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/debug.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/app.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/browser.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/data/test_gs_weird_bug.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/binding.gyp delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/builderror.log delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/auth_processes/mongodb.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.c delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/muri/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/regexp-clone/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/bench.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/lib/sliced.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/node_modules/sliced/test/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/static.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mongoose/website.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/Changes.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/License delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/benchmark/analyze.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/benchmark/parse-100k-blog-rows.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/benchmark/select-100k-blog-rows.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/Connection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/ConnectionConfig.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/Pool.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/PoolConfig.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/Auth.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/PacketHeader.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/PacketWriter.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/Parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/Protocol.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/ResultSet.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/SqlString.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/charsets.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/client.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/errors.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/field_flags.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/server_status.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/constants/types.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ClientAuthenticationPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComChangeUserPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComPingPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComQueryPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComQuitPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ComStatisticsPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/EmptyPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/EofPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ErrorPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/Field.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/FieldPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/HandshakeInitializationPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/LocalDataFilePacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/OkPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/OldPasswordPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/ResultSetHeaderPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/RowDataPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/StatisticsPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/UseOldPasswordPacket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/packets/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/ChangeUser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Handshake.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Ping.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Query.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Quit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Sequence.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/Statistics.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/lib/protocol/sequences/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/LICENCE delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.java delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/LICENCE.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/bigdecimal.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/bugs.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.Readme.md.un~ delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.index.js.un~ delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/.test.js.un~ delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/common.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/run.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js delete mode 100644 nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js diff --git a/nodejs-mysql-tutorial/node_modules/jade/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/.npmignore deleted file mode 100644 index fdc7b89..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/.npmignore +++ /dev/null @@ -1,14 +0,0 @@ -test -support -benchmarks -examples -lib-cov -coverage.html -.gitmodules -.travis.yml -History.md -Makefile -test/ -support/ -benchmarks/ -examples/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/LICENSE deleted file mode 100644 index 8ad0e0d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2009-2010 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/Readme.md deleted file mode 100644 index 1501185..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/Readme.md +++ /dev/null @@ -1,1308 +0,0 @@ -# Jade - template engine -[![Build Status](https://secure.travis-ci.org/visionmedia/jade.png)](http://travis-ci.org/visionmedia/jade) -[![Dependency Status](https://gemnasium.com/visionmedia/jade.png)](https://gemnasium.com/visionmedia/jade) -[![NPM version](https://badge.fury.io/js/jade.png)](http://badge.fury.io/js/jade) - - Jade is a high performance template engine heavily influenced by [Haml](http://haml-lang.com) - and implemented with JavaScript for [node](http://nodejs.org). For discussion join the [Google Group](http://groups.google.com/group/jadejs). - -## Anouncment - -Jade version 0.31.0 deprecated implicit text only support for scripts and styles. To fix this all you need to do is add a `.` character after the script or style tag. - -It is hoped that this change will make jade easier for newcommers to learn without affecting the power of the language or leading to excessive verboseness. - -If you have a lot of jade files that need fixing you can use [fix-jade](https://github.com/ForbesLindesay/fix-jade) to attempt to automate the process. - -## Test drive - - You can test drive Jade online [here](http://naltatis.github.com/jade-syntax-docs). - -## README Contents - -- [Features](#a1) -- [Implementations](#a2) -- [Installation](#a3) -- [Browser Support](#a4) -- [Public API](#a5) -- [Syntax](#a6) - - [Line Endings](#a6-1) - - [Tags](#a6-2) - - [Tag Text](#a6-3) - - [Comments](#a6-4) - - [Block Comments](#a6-5) - - [Nesting](#a6-6) - - [Block Expansion](#a6-7) - - [Case](#a6-8) - - [Attributes](#a6-9) - - [HTML](#a6-10) - - [Doctypes](#a6-11) -- [Filters](#a7) -- [Code](#a8) -- [Iteration](#a9) -- [Conditionals](#a10) -- [Template inheritance](#a11) -- [Block append / prepend](#a12) -- [Includes](#a13) -- [Mixins](#a14) -- [Generated Output](#a15) -- [Example Makefile](#a16) -- [jade(1)](#a17) -- [Tutorials](#a18) -- [License](#a19) - - -## Features - - - client-side support - - great readability - - flexible indentation - - block-expansion - - mixins - - static includes - - attribute interpolation - - code is escaped by default for security - - contextual error reporting at compile & run time - - executable for compiling jade templates via the command line - - html 5 mode (the default doctype) - - optional memory caching - - combine dynamic and static tag classes - - parse tree manipulation via _filters_ - - template inheritance - - block append / prepend - - supports [Express JS](http://expressjs.com) out of the box - - transparent iteration over objects, arrays, and even non-enumerables via `each` - - block comments - - no tag prefix - - filters - - :stylus must have [stylus](http://github.com/LearnBoost/stylus) installed - - :less must have [less.js](http://github.com/cloudhead/less.js) installed - - :markdown must have [markdown-js](http://github.com/evilstreak/markdown-js), [node-discount](http://github.com/visionmedia/node-discount), or [marked](http://github.com/chjj/marked) installed - - :cdata - - :coffeescript must have [coffee-script](http://jashkenas.github.com/coffee-script/) installed - - [Emacs Mode](https://github.com/brianc/jade-mode) - - [Vim Syntax](https://github.com/digitaltoad/vim-jade) - - [TextMate Bundle](http://github.com/miksago/jade-tmbundle) - - [Coda/SubEtha syntax Mode](https://github.com/aaronmccall/jade.mode) - - [Screencasts](http://tjholowaychuk.com/post/1004255394/jade-screencast-template-engine-for-nodejs) - - [html2jade](https://github.com/donpark/html2jade) converter - - -## Implementations - - - [php](http://github.com/everzet/jade.php) - - [scala](http://scalate.fusesource.org/versions/snapshot/documentation/scaml-reference.html) - - [ruby](https://github.com/slim-template/slim) - - [python](https://github.com/SyrusAkbary/pyjade) - - [java](https://github.com/neuland/jade4j) - - -## Installation - -via npm: - -```bash -$ npm install jade -``` - - -## Browser Support - - To compile jade to a single file compatible for client-side use simply execute: - -```bash -$ make jade.js -``` - - Alternatively, if uglifyjs is installed via npm (`npm install uglify-js`) you may execute the following which will create both files. However each release builds these for you. - -```bash -$ make jade.min.js -``` - - By default Jade instruments templates with line number statements such as `__.lineno = 3` for debugging purposes. When used in a browser it's useful to minimize this boiler plate, you can do so by passing the option `{ compileDebug: false }`. The following template - -```jade -p Hello #{name} -``` - - Can then be as small as the following generated function: - -```js -function anonymous(locals, attrs, escape, rethrow) { - var buf = []; - with (locals || {}) { - var interp; - buf.push('\n

      Hello ' + escape((interp = name) == null ? '' : interp) + '\n

      '); - } - return buf.join(""); -} -``` - - Through the use of Jade's `./runtime.js` you may utilize these pre-compiled templates on the client-side _without_ Jade itself, all you need is the associated utility functions (in runtime.js), which are then available as `jade.attrs`, `jade.escape` etc. To enable this you should pass `{ client: true }` to `jade.compile()` to tell Jade to reference the helper functions - via `jade.attrs`, `jade.escape` etc. - -```js -function anonymous(locals, attrs, escape, rethrow) { - var attrs = jade.attrs, escape = jade.escape, rethrow = jade.rethrow; - var buf = []; - with (locals || {}) { - var interp; - buf.push('\n

      Hello ' + escape((interp = name) == null ? '' : interp) + '\n

      '); - } - return buf.join(""); -} -``` - -
      -## Public API - -```js -var jade = require('jade'); - -// Compile a function -var fn = jade.compile('string of jade', options); -fn(locals); -``` - -### Options - - - `self` Use a `self` namespace to hold the locals _(false by default)_ - - `locals` Local variable object - - `filename` Used in exceptions, and required when using includes - - `debug` Outputs tokens and function body generated - - `compiler` Compiler to replace jade's default - - `compileDebug` When `false` no debug instrumentation is compiled - - `pretty` Add pretty-indentation whitespace to output _(false by default)_ - - -## Syntax - - -### Line Endings - -**CRLF** and **CR** are converted to **LF** before parsing. - - -### Tags - -A tag is simply a leading word: - -```jade -html -``` - -for example is converted to `` - -tags can also have ids: - -```jade -div#container -``` - -which would render `
      ` - -how about some classes? - -```jade -div.user-details -``` - -renders `
      ` - -multiple classes? _and_ an id? sure: - -```jade -div#foo.bar.baz -``` - -renders `
      ` - -div div div sure is annoying, how about: - -```jade -#foo -.bar -``` - -which is syntactic sugar for what we have already been doing, and outputs: - -```html -
      -``` - -
      -### Tag Text - -Simply place some content after the tag: - -```jade -p wahoo! -``` - -renders `

      wahoo!

      `. - -well cool, but how about large bodies of text: - -```jade -p - | foo bar baz - | rawr rawr - | super cool - | go jade go -``` - -renders `

      foo bar baz rawr.....

      ` - -interpolation? yup! both types of text can utilize interpolation, -if we passed `{ name: 'tj', email: 'tj@vision-media.ca' }` to the compiled function we can do the following: - -```jade -#user #{name} <#{email}> -``` - -outputs `
      tj <tj@vision-media.ca>
      ` - -Actually want `#{}` for some reason? escape it! - -```jade -p \#{something} -``` - -now we have `

      #{something}

      ` - -We can also utilize the unescaped variant `!{html}`, so the following -will result in a literal script tag: - -```jade -- var html = "" -| !{html} -``` - -Nested tags that also contain text can optionally use a text block: - -```jade -label - | Username: - input(name='user[name]') -``` - -or immediate tag text: - -```jade -label Username: - input(name='user[name]') -``` - -As an alternative, we may use a trailing `.` to indicate a text block, for example: - -```jade -p. - foo asdf - asdf - asdfasdfaf - asdf - asd. -``` - -outputs: - -```html -

      foo asdf -asdf - asdfasdfaf - asdf -asd. -

      -``` - -This however differs from a trailing `.` followed by a space, which although is ignored by the Jade parser, tells Jade that this period is a literal: - -```jade -p . -``` - -outputs: - -```html -

      .

      -``` - -It should be noted that text blocks should be doubled escaped. For example if you desire the following output. - -```html -

      foo\bar

      -``` - -use: - -```jade -p. - foo\\bar -``` - -
      -### Comments - -Single line comments currently look the same as JavaScript comments, -aka `//` and must be placed on their own line: - -```jade -// just some paragraphs -p foo -p bar -``` - -would output - -```html - -

      foo

      -

      bar

      -``` - -Jade also supports unbuffered comments, by simply adding a hyphen: - -```jade -//- will not output within markup -p foo -p bar -``` - -outputting - -```html -

      foo

      -

      bar

      -``` - -
      -### Block Comments - - A block comment is legal as well: - -```jade -body - // - #content - h1 Example -``` - -outputting - -```html - - - -``` - -Jade supports conditional-comments as well, for example: - -```jade -head - //if lt IE 8 - script(src='/ie-sucks.js') -``` - -outputs: - -```html - - - -``` - - -### Nesting - - Jade supports nesting to define the tags in a natural way: - -```jade -ul - li.first - a(href='#') foo - li - a(href='#') bar - li.last - a(href='#') baz -``` - - -### Block Expansion - - Block expansion allows you to create terse single-line nested tags, - the following example is equivalent to the nesting example above. - -```jade -ul - li.first: a(href='#') foo - li: a(href='#') bar - li.last: a(href='#') baz -``` - - -### Case - - The case statement takes the following form: - -```jade -html - body - friends = 10 - case friends - when 0 - p you have no friends - when 1 - p you have a friend - default - p you have #{friends} friends -``` - - Block expansion may also be used: - -```jade -friends = 5 - -html - body - case friends - when 0: p you have no friends - when 1: p you have a friend - default: p you have #{friends} friends -``` - - -### Attributes - -Jade currently supports `(` and `)` as attribute delimiters. - -```jade -a(href='/login', title='View login page') Login -``` - -When a value is `undefined` or `null` the attribute is _not_ added, -so this is fine, it will not compile `something="null"`. - -```jade -div(something=null) -``` - -Boolean attributes are also supported: - -```jade -input(type="checkbox", checked) -``` - -Boolean attributes with code will only output the attribute when `true`: - -```jade -input(type="checkbox", checked=someValue) -``` - -Multiple lines work too: - -```jade -input(type='checkbox', - name='agreement', - checked) -``` - -Multiple lines without the comma work fine: - -```jade -input(type='checkbox' - name='agreement' - checked) -``` - -Funky whitespace? fine: - -```jade -input( - type='checkbox' - name='agreement' - checked) -``` - -Colons work: - -```jade -rss(xmlns:atom="atom") -``` - -Suppose we have the `user` local `{ id: 12, name: 'tobi' }` -and we wish to create an anchor tag with `href` pointing to "/user/12" -we could use regular javascript concatenation: - -```jade -a(href='/user/' + user.id)= user.name -``` - -or we could use jade's interpolation, which I added because everyone -using Ruby or CoffeeScript seems to think this is legal js..: - -```jade -a(href='/user/#{user.id}')= user.name -``` - -The `class` attribute is special-cased when an array is given, -allowing you to pass an array such as `bodyClasses = ['user', 'authenticated']` directly: - -```jade -body(class=bodyClasses) -``` - - -### HTML - - Inline html is fine, we can use the pipe syntax to - write arbitrary text, in this case some html: - -```jade -html - body - |

      Title

      - |

      foo bar baz

      -``` - - Or we can use the trailing `.` to indicate to Jade that we - only want text in this block, allowing us to omit the pipes: - -```jade -html - body. -

      Title

      -

      foo bar baz

      -``` - - Both of these examples yield the same result: - -```html -

      Title

      -

      foo bar baz

      - -``` - - The same rule applies for anywhere you can have text - in jade, raw html is fine: - -```jade -html - body - h1 User #{name} -``` - -
      -### Doctypes - -To add a doctype simply use `!!!`, or `doctype` followed by an optional value: - -```jade -!!! -``` - -or - -```jade -doctype -``` - -Will output the _html 5_ doctype, however: - -```jade -!!! transitional -``` - -Will output the _transitional_ doctype. - -Doctypes are case-insensitive, so the following are equivalent: - -```jade -doctype Basic -doctype basic -``` - -it's also possible to simply pass a doctype literal: - -```jade -doctype html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" -``` - -yielding: - -```html - -``` - -Below are the doctypes defined by default, which can easily be extended: - -```js -var doctypes = exports.doctypes = { - '5': '', - 'default': '', - 'xml': '', - 'transitional': '', - 'strict': '', - 'frameset': '', - '1.1': '', - 'basic': '', - 'mobile': '' -}; -``` - -To alter the default simply change: - -```js -jade.doctypes.default = 'whatever you want'; -``` - - -## Filters - -Filters are prefixed with `:`, for example `:markdown` and -pass the following block of text to an arbitrary function for processing. View the _features_ -at the top of this document for available filters. - -```jade -body - :markdown - Woah! jade _and_ markdown, very **cool** - we can even link to [stuff](http://google.com) -``` - -Renders: - -```html -

      Woah! jade and markdown, very cool we can even link to stuff

      -``` - - -## Code - -Jade currently supports three classifications of executable code. The first -is prefixed by `-`, and is not buffered: - -```jade -- var foo = 'bar'; -``` - -This can be used for conditionals, or iteration: - -```jade -- for (var key in obj) - p= obj[key] -``` - -Due to Jade's buffering techniques the following is valid as well: - -```jade -- if (foo) - ul - li yay - li foo - li worked -- else - p oh no! didnt work -``` - -Hell, even verbose iteration: - -```jade -- if (items.length) - ul - - items.forEach(function(item){ - li= item - - }) -``` - -Anything you want! - -Next up we have _escaped_ buffered code, which is used to -buffer a return value, which is prefixed by `=`: - -```jade -- var foo = 'bar' -= foo -h1= foo -``` - -Which outputs `bar

      bar

      `. Code buffered by `=` is escaped -by default for security, however to output unescaped return values -you may use `!=`: - -```jade -p!= aVarContainingMoreHTML -``` - - Jade also has designer-friendly variants, making the literal JavaScript - more expressive and declarative. For example the following assignments - are equivalent, and the expression is still regular javascript: - -```jade -- var foo = 'foo ' + 'bar' -foo = 'foo ' + 'bar' -``` - - Likewise Jade has first-class `if`, `else if`, `else`, `until`, `while`, `unless` among others, however you must remember that the expressions are still regular javascript: - -```jade -if foo == 'bar' - ul - li yay - li foo - li worked -else - p oh no! didnt work -``` - -
      -## Iteration - - Along with vanilla JavaScript Jade also supports a subset of - constructs that allow you to create more designer-friendly templates, - one of these constructs is `each`, taking the form: - -```jade -each VAL[, KEY] in OBJ -``` - -An example iterating over an array: - -```jade -- var items = ["one", "two", "three"] -each item in items - li= item -``` - -outputs: - -```html -
    • one
    • -
    • two
    • -
    • three
    • -``` - -iterating an array with index: - -```jade -items = ["one", "two", "three"] -each item, i in items - li #{item}: #{i} -``` - -outputs: - -```html -
    • one: 0
    • -
    • two: 1
    • -
    • three: 2
    • -``` - -iterating an object's keys and values: - -```jade -obj = { foo: 'bar' } -each val, key in obj - li #{key}: #{val} -``` - -would output `
    • foo: bar
    • ` - -Internally Jade converts these statements to regular -JavaScript loops such as `users.forEach(function(user){`, -so lexical scope and nesting applies as it would with regular -JavaScript: - -```jade -each user in users - each role in user.roles - li= role -``` - - You may also use `for` if you prefer: - -```jade -for user in users - for role in user.roles - li= role -``` - -
      -## Conditionals - - Jade conditionals are equivalent to those using the code (`-`) prefix, - however allow you to ditch parenthesis to become more designer friendly, - however keep in mind the expression given is _regular_ JavaScript: - -```jade -for user in users - if user.role == 'admin' - p #{user.name} is an admin - else - p= user.name -``` - - is equivalent to the following using vanilla JavaScript literals: - -```jade -for user in users - - if (user.role == 'admin') - p #{user.name} is an admin - - else - p= user.name -``` - - Jade also provides `unless` which is equivalent to `if (!(expr))`: - -```jade -for user in users - unless user.isAnonymous - p - | Click to view - a(href='/users/' + user.id)= user.name -``` - - -## Template inheritance - - Jade supports template inheritance via the `block` and `extends` keywords. A block is simply a "block" of Jade that may be replaced within a child template, this process is recursive. To activate template inheritance in Express 2.x you must add: `app.set('view options', { layout: false });`. - - Jade blocks can provide default content if desired, however optional as shown below by `block scripts`, `block content`, and `block foot`. - -```jade -html - head - h1 My Site - #{title} - block scripts - script(src='/jquery.js') - body - block content - block foot - #footer - p some footer content -``` - - Now to extend the layout, simply create a new file and use the `extends` directive as shown below, giving the path (with or without the .jade extension). You may now define one or more blocks that will override the parent block content, note that here the `foot` block is _not_ redefined and will output "some footer content". - -```jade -extends layout - -block scripts - script(src='/jquery.js') - script(src='/pets.js') - -block content - h1= title - each pet in pets - include pet -``` - - It's also possible to override a block to provide additional blocks, as shown in the following example where `content` now exposes a `sidebar` and `primary` block for overriding, or the child template could override `content` all together. - -```jade -extends regular-layout - -block content - .sidebar - block sidebar - p nothing - .primary - block primary - p nothing -``` - - -## Block append / prepend - - Jade allows you to _replace_ (default), _prepend_, or _append_ blocks. Suppose for example you have default scripts in a "head" block that you wish to utilize on _every_ page, you might do this: - -```jade -html - head - block head - script(src='/vendor/jquery.js') - script(src='/vendor/caustic.js') - body - block content -``` - - Now suppose you have a page of your application for a JavaScript game, you want some game related scripts as well as these defaults, you can simply `append` the block: - -```jade -extends layout - -block append head - script(src='/vendor/three.js') - script(src='/game.js') -``` - - When using `block append` or `block prepend` the `block` is optional: - -```jade -extends layout - -append head - script(src='/vendor/three.js') - script(src='/game.js') -``` - - -## Includes - - Includes allow you to statically include chunks of Jade, - or other content like css, or html which lives in separate files. The classical example is including a header and footer. Suppose we have the following directory structure: - - ./layout.jade - ./includes/ - ./head.jade - ./foot.jade - -and the following _layout.jade_: - -```jade -html - include includes/head - body - h1 My Site - p Welcome to my super amazing site. - include includes/foot -``` - -both includes _includes/head_ and _includes/foot_ are -read relative to the `filename` option given to _layout.jade_, -which should be an absolute path to this file, however Express -does this for you. Include then parses these files, and injects -the AST produced to render what you would expect: - -```html - - - My Site - - - -

      My Site

      -

      Welcome to my super lame site.

      - - - -``` - -As mentioned `include` can be used to include other content -such as html or css. By providing an extension, Jade will -read that file in, apply any [filter](#a7) matching the file's -extension, and insert that content into the output. - -```jade -html - head - //- css and js have simple filters that wrap them in - '; - } else if (transformers[name].outputFormat === 'xml') { - res = res.replace(/'/g, '''); - } - } else { - throw new Error('unknown filter ":' + name + '"'); - } - return res; -} -filter.exists = function (name, str, options) { - return typeof filter[name] === 'function' || transformers[name]; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/index.js b/nodejs-mysql-tutorial/node_modules/jade/lib/index.js deleted file mode 100644 index 6a783c2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/index.js +++ /dev/null @@ -1 +0,0 @@ -jade.js \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js b/nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js deleted file mode 100644 index 491de0b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/inline-tags.js +++ /dev/null @@ -1,28 +0,0 @@ - -/*! - * Jade - inline tags - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = [ - 'a' - , 'abbr' - , 'acronym' - , 'b' - , 'br' - , 'code' - , 'em' - , 'font' - , 'i' - , 'img' - , 'ins' - , 'kbd' - , 'map' - , 'samp' - , 'small' - , 'span' - , 'strong' - , 'sub' - , 'sup' -]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/jade.js b/nodejs-mysql-tutorial/node_modules/jade/lib/jade.js deleted file mode 100644 index 22cbae0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/jade.js +++ /dev/null @@ -1,242 +0,0 @@ -/*! - * Jade - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Parser = require('./parser') - , Lexer = require('./lexer') - , Compiler = require('./compiler') - , runtime = require('./runtime') - , addWith = require('with') - , fs = require('fs'); - -/** - * Library version. - */ - -exports.version = '0.30.0'; - -/** - * Expose self closing tags. - */ - -exports.selfClosing = require('./self-closing'); - -/** - * Default supported doctypes. - */ - -exports.doctypes = require('./doctypes'); - -/** - * Text filters. - */ - -exports.filters = require('./filters'); - -/** - * Utilities. - */ - -exports.utils = require('./utils'); - -/** - * Expose `Compiler`. - */ - -exports.Compiler = Compiler; - -/** - * Expose `Parser`. - */ - -exports.Parser = Parser; - -/** - * Expose `Lexer`. - */ - -exports.Lexer = Lexer; - -/** - * Nodes. - */ - -exports.nodes = require('./nodes'); - -/** - * Jade runtime helpers. - */ - -exports.runtime = runtime; - -/** - * Template function cache. - */ - -exports.cache = {}; - -/** - * Parse the given `str` of jade and return a function body. - * - * @param {String} str - * @param {Object} options - * @return {String} - * @api private - */ - -function parse(str, options){ - try { - // Parse - var parser = new (options.parser || Parser)(str, options.filename, options); - - // Compile - var compiler = new (options.compiler || Compiler)(parser.parse(), options) - , js = compiler.compile(); - - // Debug compiler - if (options.debug) { - console.error('\nCompiled Function:\n\n\033[90m%s\033[0m', js.replace(/^/gm, ' ')); - } - - return '' - + 'var buf = [];\n' - + (options.self - ? 'var self = locals || {};\n' + js - : addWith('locals || {}', js, ['jade', 'buf'])) + ';' - + 'return buf.join("");'; - } catch (err) { - parser = parser.context(); - runtime.rethrow(err, parser.filename, parser.lexer.lineno); - } -} - -/** - * Strip any UTF-8 BOM off of the start of `str`, if it exists. - * - * @param {String} str - * @return {String} - * @api private - */ - -function stripBOM(str){ - return 0xFEFF == str.charCodeAt(0) - ? str.substring(1) - : str; -} - -/** - * Compile a `Function` representation of the given jade `str`. - * - * Options: - * - * - `compileDebug` when `false` debugging code is stripped from the compiled template - * - `filename` used to improve errors when `compileDebug` is not `false` - * - * @param {String} str - * @param {Options} options - * @return {Function} - * @api public - */ - -exports.compile = function(str, options){ - var options = options || {} - , filename = options.filename - ? JSON.stringify(options.filename) - : 'undefined' - , fn; - - str = stripBOM(String(str)); - - if (options.compileDebug !== false) { - fn = [ - 'jade.debug = [{ lineno: 1, filename: ' + filename + ' }];' - , 'try {' - , parse(str, options) - , '} catch (err) {' - , ' jade.rethrow(err, jade.debug[0].filename, jade.debug[0].lineno);' - , '}' - ].join('\n'); - } else { - fn = parse(str, options); - } - - if (options.client) return new Function('locals', fn) - fn = new Function('locals, jade', fn) - return function(locals){ return fn(locals, Object.create(runtime)) } -}; - -/** - * Render the given `str` of jade and invoke - * the callback `fn(err, str)`. - * - * Options: - * - * - `cache` enable template caching - * - `filename` filename required for `include` / `extends` and caching - * - * @param {String} str - * @param {Object|Function} options or fn - * @param {Function} fn - * @api public - */ - -exports.render = function(str, options, fn){ - // swap args - if ('function' == typeof options) { - fn = options, options = {}; - } - - // cache requires .filename - if (options.cache && !options.filename) { - return fn(new Error('the "filename" option is required for caching')); - } - - try { - var path = options.filename; - var tmpl = options.cache - ? exports.cache[path] || (exports.cache[path] = exports.compile(str, options)) - : exports.compile(str, options); - fn(null, tmpl(options)); - } catch (err) { - fn(err); - } -}; - -/** - * Render a Jade file at the given `path` and callback `fn(err, str)`. - * - * @param {String} path - * @param {Object|Function} options or callback - * @param {Function} fn - * @api public - */ - -exports.renderFile = function(path, options, fn){ - var key = path + ':string'; - - if ('function' == typeof options) { - fn = options, options = {}; - } - - try { - options.filename = path; - var str = options.cache - ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) - : fs.readFileSync(path, 'utf8'); - exports.render(str, options, fn); - } catch (err) { - fn(err); - } -}; - -/** - * Express support. - */ - -exports.__express = exports.renderFile; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js b/nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js deleted file mode 100644 index ac0ce2b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/lexer.js +++ /dev/null @@ -1,782 +0,0 @@ -/*! - * Jade - Lexer - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -var utils = require('./utils'); -var parseJSExpression = require('character-parser').parseMax; - -/** - * Initialize `Lexer` with the given `str`. - * - * Options: - * - * - `colons` allow colons for attr delimiters - * - * @param {String} str - * @param {Object} options - * @api private - */ - -var Lexer = module.exports = function Lexer(str, options) { - options = options || {}; - this.input = str.replace(/\r\n|\r/g, '\n'); - this.colons = options.colons; - this.deferredTokens = []; - this.lastIndents = 0; - this.lineno = 1; - this.stash = []; - this.indentStack = []; - this.indentRe = null; - this.pipeless = false; -}; - -/** - * Lexer prototype. - */ - -Lexer.prototype = { - - /** - * Construct a token with the given `type` and `val`. - * - * @param {String} type - * @param {String} val - * @return {Object} - * @api private - */ - - tok: function(type, val){ - return { - type: type - , line: this.lineno - , val: val - } - }, - - /** - * Consume the given `len` of input. - * - * @param {Number} len - * @api private - */ - - consume: function(len){ - this.input = this.input.substr(len); - }, - - /** - * Scan for `type` with the given `regexp`. - * - * @param {String} type - * @param {RegExp} regexp - * @return {Object} - * @api private - */ - - scan: function(regexp, type){ - var captures; - if (captures = regexp.exec(this.input)) { - this.consume(captures[0].length); - return this.tok(type, captures[1]); - } - }, - - /** - * Defer the given `tok`. - * - * @param {Object} tok - * @api private - */ - - defer: function(tok){ - this.deferredTokens.push(tok); - }, - - /** - * Lookahead `n` tokens. - * - * @param {Number} n - * @return {Object} - * @api private - */ - - lookahead: function(n){ - var fetch = n - this.stash.length; - while (fetch-- > 0) this.stash.push(this.next()); - return this.stash[--n]; - }, - - /** - * Return the indexOf `(` or `{` or `[` / `)` or `}` or `]` delimiters. - * - * @return {Number} - * @api private - */ - - bracketExpression: function(skip){ - skip = skip || 0; - var start = this.input[skip]; - if (start != '(' && start != '{' && start != '[') throw new Error('unrecognized start character'); - var end = ({'(': ')', '{': '}', '[': ']'})[start]; - var range = parseJSExpression(this.input, {start: skip + 1}); - if (this.input[range.end] !== end) throw new Error('start character ' + start + ' does not match end character ' + this.input[range.end]); - return range; - }, - - /** - * Stashed token. - */ - - stashed: function() { - return this.stash.length - && this.stash.shift(); - }, - - /** - * Deferred token. - */ - - deferred: function() { - return this.deferredTokens.length - && this.deferredTokens.shift(); - }, - - /** - * end-of-source. - */ - - eos: function() { - if (this.input.length) return; - if (this.indentStack.length) { - this.indentStack.shift(); - return this.tok('outdent'); - } else { - return this.tok('eos'); - } - }, - - /** - * Blank line. - */ - - blank: function() { - var captures; - if (captures = /^\n *\n/.exec(this.input)) { - this.consume(captures[0].length - 1); - ++this.lineno; - if (this.pipeless) return this.tok('text', ''); - return this.next(); - } - }, - - /** - * Comment. - */ - - comment: function() { - var captures; - if (captures = /^ *\/\/(-)?([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('comment', captures[2]); - tok.buffer = '-' != captures[1]; - return tok; - } - }, - - /** - * Interpolated tag. - */ - - interpolation: function() { - if (/^#\{/.test(this.input)) { - var match; - try { - match = this.bracketExpression(1); - } catch (ex) { - return;//not an interpolation expression, just an unmatched open interpolation - } - - this.consume(match.end + 1); - return this.tok('interpolation', match.src); - } - }, - - /** - * Tag. - */ - - tag: function() { - var captures; - if (captures = /^(\w[-:\w]*)(\/?)/.exec(this.input)) { - this.consume(captures[0].length); - var tok, name = captures[1]; - if (':' == name[name.length - 1]) { - name = name.slice(0, -1); - tok = this.tok('tag', name); - this.defer(this.tok(':')); - while (' ' == this.input[0]) this.input = this.input.substr(1); - } else { - tok = this.tok('tag', name); - } - tok.selfClosing = !! captures[2]; - return tok; - } - }, - - /** - * Filter. - */ - - filter: function() { - return this.scan(/^:(\w+)/, 'filter'); - }, - - /** - * Doctype. - */ - - doctype: function() { - return this.scan(/^(?:!!!|doctype) *([^\n]+)?/, 'doctype'); - }, - - /** - * Id. - */ - - id: function() { - return this.scan(/^#([\w-]+)/, 'id'); - }, - - /** - * Class. - */ - - className: function() { - return this.scan(/^\.([\w-]+)/, 'class'); - }, - - /** - * Text. - */ - - text: function() { - return this.scan(/^(?:\| ?| ?)?([^\n]+)/, 'text'); - }, - - /** - * Extends. - */ - - "extends": function() { - return this.scan(/^extends? +([^\n]+)/, 'extends'); - }, - - /** - * Block prepend. - */ - - prepend: function() { - var captures; - if (captures = /^prepend +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = 'prepend' - , name = captures[1] - , tok = this.tok('block', name); - tok.mode = mode; - return tok; - } - }, - - /** - * Block append. - */ - - append: function() { - var captures; - if (captures = /^append +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = 'append' - , name = captures[1] - , tok = this.tok('block', name); - tok.mode = mode; - return tok; - } - }, - - /** - * Block. - */ - - block: function() { - var captures; - if (captures = /^block\b *(?:(prepend|append) +)?([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var mode = captures[1] || 'replace' - , name = captures[2] - , tok = this.tok('block', name); - - tok.mode = mode; - return tok; - } - }, - - /** - * Yield. - */ - - yield: function() { - return this.scan(/^yield */, 'yield'); - }, - - /** - * Include. - */ - - include: function() { - return this.scan(/^include +([^\n]+)/, 'include'); - }, - - /** - * Case. - */ - - "case": function() { - return this.scan(/^case +([^\n]+)/, 'case'); - }, - - /** - * When. - */ - - when: function() { - return this.scan(/^when +([^:\n]+)/, 'when'); - }, - - /** - * Default. - */ - - "default": function() { - return this.scan(/^default */, 'default'); - }, - - /** - * Assignment. - */ - - assignment: function() { - var captures; - if (captures = /^(\w+) += *([^;\n]+)( *;? *)/.exec(this.input)) { - this.consume(captures[0].length); - var name = captures[1] - , val = captures[2]; - return this.tok('code', 'var ' + name + ' = (' + val + ');'); - } - }, - - /** - * Call mixin. - */ - - call: function(){ - var captures; - if (captures = /^\+([-\w]+)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('call', captures[1]); - - // Check for args (not attributes) - if (captures = /^ *\(/.exec(this.input)) { - try { - var range = this.bracketExpression(captures[0].length - 1); - if (!/^ *[-\w]+ *=/.test(range.src)) { // not attributes - this.consume(range.end + 1); - tok.args = range.src; - } - } catch (ex) { - //not a bracket expcetion, just unmatched open parens - } - } - - return tok; - } - }, - - /** - * Mixin. - */ - - mixin: function(){ - var captures; - if (captures = /^mixin +([-\w]+)(?: *\((.*)\))?/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('mixin', captures[1]); - tok.args = captures[2]; - return tok; - } - }, - - /** - * Conditional. - */ - - conditional: function() { - var captures; - if (captures = /^(if|unless|else if|else)\b([^\n]*)/.exec(this.input)) { - this.consume(captures[0].length); - var type = captures[1] - , js = captures[2]; - - switch (type) { - case 'if': js = 'if (' + js + ')'; break; - case 'unless': js = 'if (!(' + js + '))'; break; - case 'else if': js = 'else if (' + js + ')'; break; - case 'else': js = 'else'; break; - } - - return this.tok('code', js); - } - }, - - /** - * While. - */ - - "while": function() { - var captures; - if (captures = /^while +([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - return this.tok('code', 'while (' + captures[1] + ')'); - } - }, - - /** - * Each. - */ - - each: function() { - var captures; - if (captures = /^(?:- *)?(?:each|for) +([a-zA-Z_$][\w$]*)(?: *, *([a-zA-Z_$][\w$]*))? * in *([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var tok = this.tok('each', captures[1]); - tok.key = captures[2] || '$index'; - tok.code = captures[3]; - return tok; - } - }, - - /** - * Code. - */ - - code: function() { - var captures; - if (captures = /^(!?=|-)[ \t]*([^\n]+)/.exec(this.input)) { - this.consume(captures[0].length); - var flags = captures[1]; - captures[1] = captures[2]; - var tok = this.tok('code', captures[1]); - tok.escape = flags.charAt(0) === '='; - tok.buffer = flags.charAt(0) === '=' || flags.charAt(1) === '='; - return tok; - } - }, - - /** - * Attributes. - */ - - attrs: function() { - if ('(' == this.input.charAt(0)) { - var index = this.bracketExpression().end - , str = this.input.substr(1, index-1) - , tok = this.tok('attrs') - , len = str.length - , colons = this.colons - , states = ['key'] - , escapedAttr - , key = '' - , val = '' - , quote - , c - , p; - - function state(){ - return states[states.length - 1]; - } - - function interpolate(attr) { - return attr.replace(/(\\)?#\{(.+)/g, function(_, escape, expr){ - if (escape) return _; - try { - var range = parseJSExpression(expr); - if (expr[range.end] !== '}') return _.substr(0, 2) + interpolate(_.substr(2)); - return quote + " + (" + range.src + ") + " + quote + interpolate(expr.substr(range.end + 1)); - } catch (ex) { - return _.substr(0, 2) + interpolate(_.substr(2)); - } - }); - } - - this.consume(index + 1); - tok.attrs = {}; - tok.escaped = {}; - - function parse(c) { - var real = c; - // TODO: remove when people fix ":" - if (colons && ':' == c) c = '='; - switch (c) { - case ',': - case '\n': - switch (state()) { - case 'expr': - case 'array': - case 'string': - case 'object': - val += c; - break; - default: - states.push('key'); - val = val.trim(); - key = key.trim(); - if ('' == key) return; - key = key.replace(/^['"]|['"]$/g, '').replace('!', ''); - tok.escaped[key] = escapedAttr; - tok.attrs[key] = '' == val - ? true - : interpolate(val); - key = val = ''; - } - break; - case '=': - switch (state()) { - case 'key char': - key += real; - break; - case 'val': - case 'expr': - case 'array': - case 'string': - case 'object': - val += real; - break; - default: - escapedAttr = '!' != p; - states.push('val'); - } - break; - case '(': - if ('val' == state() - || 'expr' == state()) states.push('expr'); - val += c; - break; - case ')': - if ('expr' == state() - || 'val' == state()) states.pop(); - val += c; - break; - case '{': - if ('val' == state()) states.push('object'); - val += c; - break; - case '}': - if ('object' == state()) states.pop(); - val += c; - break; - case '[': - if ('val' == state()) states.push('array'); - val += c; - break; - case ']': - if ('array' == state()) states.pop(); - val += c; - break; - case '"': - case "'": - switch (state()) { - case 'key': - states.push('key char'); - break; - case 'key char': - states.pop(); - break; - case 'string': - if (c == quote) states.pop(); - val += c; - break; - default: - states.push('string'); - val += c; - quote = c; - } - break; - case '': - break; - default: - switch (state()) { - case 'key': - case 'key char': - key += c; - break; - default: - val += c; - } - } - p = c; - } - - for (var i = 0; i < len; ++i) { - parse(str.charAt(i)); - } - - parse(','); - - if ('/' == this.input.charAt(0)) { - this.consume(1); - tok.selfClosing = true; - } - - return tok; - } - }, - - /** - * Indent | Outdent | Newline. - */ - - indent: function() { - var captures, re; - - // established regexp - if (this.indentRe) { - captures = this.indentRe.exec(this.input); - // determine regexp - } else { - // tabs - re = /^\n(\t*) */; - captures = re.exec(this.input); - - // spaces - if (captures && !captures[1].length) { - re = /^\n( *)/; - captures = re.exec(this.input); - } - - // established - if (captures && captures[1].length) this.indentRe = re; - } - - if (captures) { - var tok - , indents = captures[1].length; - - ++this.lineno; - this.consume(indents + 1); - - if (' ' == this.input[0] || '\t' == this.input[0]) { - throw new Error('Invalid indentation, you can use tabs or spaces but not both'); - } - - // blank line - if ('\n' == this.input[0]) return this.tok('newline'); - - // outdent - if (this.indentStack.length && indents < this.indentStack[0]) { - while (this.indentStack.length && this.indentStack[0] > indents) { - this.stash.push(this.tok('outdent')); - this.indentStack.shift(); - } - tok = this.stash.pop(); - // indent - } else if (indents && indents != this.indentStack[0]) { - this.indentStack.unshift(indents); - tok = this.tok('indent', indents); - // newline - } else { - tok = this.tok('newline'); - } - - return tok; - } - }, - - /** - * Pipe-less text consumed only when - * pipeless is true; - */ - - pipelessText: function() { - if (this.pipeless) { - if ('\n' == this.input[0]) return; - var i = this.input.indexOf('\n'); - if (-1 == i) i = this.input.length; - var str = this.input.substr(0, i); - this.consume(str.length); - return this.tok('text', str); - } - }, - - /** - * ':' - */ - - colon: function() { - return this.scan(/^: */, ':'); - }, - - /** - * Return the next token object, or those - * previously stashed by lookahead. - * - * @return {Object} - * @api private - */ - - advance: function(){ - return this.stashed() - || this.next(); - }, - - /** - * Return the next token object. - * - * @return {Object} - * @api private - */ - - next: function() { - return this.deferred() - || this.blank() - || this.eos() - || this.pipelessText() - || this.yield() - || this.doctype() - || this.interpolation() - || this["case"]() - || this.when() - || this["default"]() - || this["extends"]() - || this.append() - || this.prepend() - || this.block() - || this.include() - || this.mixin() - || this.call() - || this.conditional() - || this.each() - || this["while"]() - || this.assignment() - || this.tag() - || this.filter() - || this.code() - || this.id() - || this.className() - || this.attrs() - || this.indent() - || this.comment() - || this.colon() - || this.text(); - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js deleted file mode 100644 index 5de9b59..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/attrs.js +++ /dev/null @@ -1,77 +0,0 @@ - -/*! - * Jade - nodes - Attrs - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'), - Block = require('./block'); - -/** - * Initialize a `Attrs` node. - * - * @api public - */ - -var Attrs = module.exports = function Attrs() { - this.attrs = []; -}; - -/** - * Inherit from `Node`. - */ - -Attrs.prototype.__proto__ = Node.prototype; - -/** - * Set attribute `name` to `val`, keep in mind these become - * part of a raw js object literal, so to quote a value you must - * '"quote me"', otherwise or example 'user.name' is literal JavaScript. - * - * @param {String} name - * @param {String} val - * @param {Boolean} escaped - * @return {Tag} for chaining - * @api public - */ - -Attrs.prototype.setAttribute = function(name, val, escaped){ - this.attrs.push({ name: name, val: val, escaped: escaped }); - return this; -}; - -/** - * Remove attribute `name` when present. - * - * @param {String} name - * @api public - */ - -Attrs.prototype.removeAttribute = function(name){ - for (var i = 0, len = this.attrs.length; i < len; ++i) { - if (this.attrs[i] && this.attrs[i].name == name) { - delete this.attrs[i]; - } - } -}; - -/** - * Get attribute value by `name`. - * - * @param {String} name - * @return {String} - * @api public - */ - -Attrs.prototype.getAttribute = function(name){ - for (var i = 0, len = this.attrs.length; i < len; ++i) { - if (this.attrs[i] && this.attrs[i].name == name) { - return this.attrs[i].val; - } - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js deleted file mode 100644 index 4f41e4a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block-comment.js +++ /dev/null @@ -1,33 +0,0 @@ - -/*! - * Jade - nodes - BlockComment - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `BlockComment` with the given `block`. - * - * @param {String} val - * @param {Block} block - * @param {Boolean} buffer - * @api public - */ - -var BlockComment = module.exports = function BlockComment(val, block, buffer) { - this.block = block; - this.val = val; - this.buffer = buffer; -}; - -/** - * Inherit from `Node`. - */ - -BlockComment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js deleted file mode 100644 index 6bb18c9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/block.js +++ /dev/null @@ -1,122 +0,0 @@ - -/*! - * Jade - nodes - Block - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a new `Block` with an optional `node`. - * - * @param {Node} node - * @api public - */ - -var Block = module.exports = function Block(node){ - this.nodes = []; - if (node) this.push(node); -}; - -/** - * Inherit from `Node`. - */ - -Block.prototype.__proto__ = Node.prototype; - -/** - * Block flag. - */ - -Block.prototype.isBlock = true; - -/** - * Replace the nodes in `other` with the nodes - * in `this` block. - * - * @param {Block} other - * @api private - */ - -Block.prototype.replace = function(other){ - other.nodes = this.nodes; -}; - -/** - * Pust the given `node`. - * - * @param {Node} node - * @return {Number} - * @api public - */ - -Block.prototype.push = function(node){ - return this.nodes.push(node); -}; - -/** - * Check if this block is empty. - * - * @return {Boolean} - * @api public - */ - -Block.prototype.isEmpty = function(){ - return 0 == this.nodes.length; -}; - -/** - * Unshift the given `node`. - * - * @param {Node} node - * @return {Number} - * @api public - */ - -Block.prototype.unshift = function(node){ - return this.nodes.unshift(node); -}; - -/** - * Return the "last" block, or the first `yield` node. - * - * @return {Block} - * @api private - */ - -Block.prototype.includeBlock = function(){ - var ret = this - , node; - - for (var i = 0, len = this.nodes.length; i < len; ++i) { - node = this.nodes[i]; - if (node.yield) return node; - else if (node.textOnly) continue; - else if (node.includeBlock) ret = node.includeBlock(); - else if (node.block && !node.block.isEmpty()) ret = node.block.includeBlock(); - if (ret.yield) return ret; - } - - return ret; -}; - -/** - * Return a clone of this block. - * - * @return {Block} - * @api private - */ - -Block.prototype.clone = function(){ - var clone = new Block; - for (var i = 0, len = this.nodes.length; i < len; ++i) { - clone.push(this.nodes[i].clone()); - } - return clone; -}; - diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js deleted file mode 100644 index 08ff033..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/case.js +++ /dev/null @@ -1,43 +0,0 @@ - -/*! - * Jade - nodes - Case - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a new `Case` with `expr`. - * - * @param {String} expr - * @api public - */ - -var Case = exports = module.exports = function Case(expr, block){ - this.expr = expr; - this.block = block; -}; - -/** - * Inherit from `Node`. - */ - -Case.prototype.__proto__ = Node.prototype; - -var When = exports.When = function When(expr, block){ - this.expr = expr; - this.block = block; - this.debug = false; -}; - -/** - * Inherit from `Node`. - */ - -When.prototype.__proto__ = Node.prototype; - diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js deleted file mode 100644 index babc675..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/code.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*! - * Jade - nodes - Code - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Code` node with the given code `val`. - * Code may also be optionally buffered and escaped. - * - * @param {String} val - * @param {Boolean} buffer - * @param {Boolean} escape - * @api public - */ - -var Code = module.exports = function Code(val, buffer, escape) { - this.val = val; - this.buffer = buffer; - this.escape = escape; - if (val.match(/^ *else/)) this.debug = false; -}; - -/** - * Inherit from `Node`. - */ - -Code.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js deleted file mode 100644 index 2e1469e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/comment.js +++ /dev/null @@ -1,32 +0,0 @@ - -/*! - * Jade - nodes - Comment - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Comment` with the given `val`, optionally `buffer`, - * otherwise the comment may render in the output. - * - * @param {String} val - * @param {Boolean} buffer - * @api public - */ - -var Comment = module.exports = function Comment(val, buffer) { - this.val = val; - this.buffer = buffer; -}; - -/** - * Inherit from `Node`. - */ - -Comment.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js deleted file mode 100644 index b8f33e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/doctype.js +++ /dev/null @@ -1,29 +0,0 @@ - -/*! - * Jade - nodes - Doctype - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Doctype` with the given `val`. - * - * @param {String} val - * @api public - */ - -var Doctype = module.exports = function Doctype(val) { - this.val = val; -}; - -/** - * Inherit from `Node`. - */ - -Doctype.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js deleted file mode 100644 index f54101f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/each.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*! - * Jade - nodes - Each - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize an `Each` node, representing iteration - * - * @param {String} obj - * @param {String} val - * @param {String} key - * @param {Block} block - * @api public - */ - -var Each = module.exports = function Each(obj, val, key, block) { - this.obj = obj; - this.val = val; - this.key = key; - this.block = block; -}; - -/** - * Inherit from `Node`. - */ - -Each.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js deleted file mode 100644 index 0d7ff6e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/filter.js +++ /dev/null @@ -1,34 +0,0 @@ - -/*! - * Jade - nodes - Filter - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node') - , Block = require('./block'); - -/** - * Initialize a `Filter` node with the given - * filter `name` and `block`. - * - * @param {String} name - * @param {Block|Node} block - * @api public - */ - -var Filter = module.exports = function Filter(name, block, attrs) { - this.name = name; - this.block = block; - this.attrs = attrs; -}; - -/** - * Inherit from `Node`. - */ - -Filter.prototype.__proto__ = Node.prototype; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js deleted file mode 100644 index 386ad2f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/index.js +++ /dev/null @@ -1,20 +0,0 @@ - -/*! - * Jade - nodes - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -exports.Node = require('./node'); -exports.Tag = require('./tag'); -exports.Code = require('./code'); -exports.Each = require('./each'); -exports.Case = require('./case'); -exports.Text = require('./text'); -exports.Block = require('./block'); -exports.Mixin = require('./mixin'); -exports.Filter = require('./filter'); -exports.Comment = require('./comment'); -exports.Literal = require('./literal'); -exports.BlockComment = require('./block-comment'); -exports.Doctype = require('./doctype'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js deleted file mode 100644 index a8a02a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/literal.js +++ /dev/null @@ -1,29 +0,0 @@ - -/*! - * Jade - nodes - Literal - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Literal` node with the given `str. - * - * @param {String} str - * @api public - */ - -var Literal = module.exports = function Literal(str) { - this.str = str; -}; - -/** - * Inherit from `Node`. - */ - -Literal.prototype.__proto__ = Node.prototype; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js deleted file mode 100644 index 8407bc7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/mixin.js +++ /dev/null @@ -1,36 +0,0 @@ - -/*! - * Jade - nodes - Mixin - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Attrs = require('./attrs'); - -/** - * Initialize a new `Mixin` with `name` and `block`. - * - * @param {String} name - * @param {String} args - * @param {Block} block - * @api public - */ - -var Mixin = module.exports = function Mixin(name, args, block, call){ - this.name = name; - this.args = args; - this.block = block; - this.attrs = []; - this.call = call; -}; - -/** - * Inherit from `Attrs`. - */ - -Mixin.prototype.__proto__ = Attrs.prototype; - diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js deleted file mode 100644 index e98f042..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/node.js +++ /dev/null @@ -1,25 +0,0 @@ - -/*! - * Jade - nodes - Node - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Initialize a `Node`. - * - * @api public - */ - -var Node = module.exports = function Node(){}; - -/** - * Clone this node (return itself) - * - * @return {Node} - * @api private - */ - -Node.prototype.clone = function(){ - return this; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js deleted file mode 100644 index 4b6728a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/tag.js +++ /dev/null @@ -1,95 +0,0 @@ - -/*! - * Jade - nodes - Tag - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Attrs = require('./attrs'), - Block = require('./block'), - inlineTags = require('../inline-tags'); - -/** - * Initialize a `Tag` node with the given tag `name` and optional `block`. - * - * @param {String} name - * @param {Block} block - * @api public - */ - -var Tag = module.exports = function Tag(name, block) { - this.name = name; - this.attrs = []; - this.block = block || new Block; -}; - -/** - * Inherit from `Attrs`. - */ - -Tag.prototype.__proto__ = Attrs.prototype; - -/** - * Clone this tag. - * - * @return {Tag} - * @api private - */ - -Tag.prototype.clone = function(){ - var clone = new Tag(this.name, this.block.clone()); - clone.line = this.line; - clone.attrs = this.attrs; - clone.textOnly = this.textOnly; - return clone; -}; - -/** - * Check if this tag is an inline tag. - * - * @return {Boolean} - * @api private - */ - -Tag.prototype.isInline = function(){ - return ~inlineTags.indexOf(this.name); -}; - -/** - * Check if this tag's contents can be inlined. Used for pretty printing. - * - * @return {Boolean} - * @api private - */ - -Tag.prototype.canInline = function(){ - var nodes = this.block.nodes; - - function isInline(node){ - // Recurse if the node is a block - if (node.isBlock) return node.nodes.every(isInline); - return node.isText || (node.isInline && node.isInline()); - } - - // Empty tag - if (!nodes.length) return true; - - // Text-only or inline-only tag - if (1 == nodes.length) return isInline(nodes[0]); - - // Multi-line inline-only tag - if (this.block.nodes.every(isInline)) { - for (var i = 1, len = nodes.length; i < len; ++i) { - if (nodes[i-1].isText && nodes[i].isText) - return false; - } - return true; - } - - // Mixed tag - return false; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js b/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js deleted file mode 100644 index 3b5dd55..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/nodes/text.js +++ /dev/null @@ -1,36 +0,0 @@ - -/*! - * Jade - nodes - Text - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Node = require('./node'); - -/** - * Initialize a `Text` node with optional `line`. - * - * @param {String} line - * @api public - */ - -var Text = module.exports = function Text(line) { - this.val = ''; - if ('string' == typeof line) this.val = line; -}; - -/** - * Inherit from `Node`. - */ - -Text.prototype.__proto__ = Node.prototype; - -/** - * Flag as text. - */ - -Text.prototype.isText = true; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/parser.js b/nodejs-mysql-tutorial/node_modules/jade/lib/parser.js deleted file mode 100644 index 314adf6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/parser.js +++ /dev/null @@ -1,720 +0,0 @@ -/*! - * Jade - Parser - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Lexer = require('./lexer') - , nodes = require('./nodes') - , utils = require('./utils') - , filters = require('./filters') - , path = require('path') - , extname = path.extname; - -/** - * Initialize `Parser` with the given input `str` and `filename`. - * - * @param {String} str - * @param {String} filename - * @param {Object} options - * @api public - */ - -var Parser = exports = module.exports = function Parser(str, filename, options){ - this.input = str; - this.lexer = new Lexer(str, options); - this.filename = filename; - this.blocks = {}; - this.mixins = {}; - this.options = options; - this.contexts = [this]; -}; - -/** - * Tags that may not contain tags. - */ - -var textOnly = exports.textOnly = ['script', 'style']; - -/** - * Parser prototype. - */ - -Parser.prototype = { - - /** - * Push `parser` onto the context stack, - * or pop and return a `Parser`. - */ - - context: function(parser){ - if (parser) { - this.contexts.push(parser); - } else { - return this.contexts.pop(); - } - }, - - /** - * Return the next token object. - * - * @return {Object} - * @api private - */ - - advance: function(){ - return this.lexer.advance(); - }, - - /** - * Skip `n` tokens. - * - * @param {Number} n - * @api private - */ - - skip: function(n){ - while (n--) this.advance(); - }, - - /** - * Single token lookahead. - * - * @return {Object} - * @api private - */ - - peek: function() { - return this.lookahead(1); - }, - - /** - * Return lexer lineno. - * - * @return {Number} - * @api private - */ - - line: function() { - return this.lexer.lineno; - }, - - /** - * `n` token lookahead. - * - * @param {Number} n - * @return {Object} - * @api private - */ - - lookahead: function(n){ - return this.lexer.lookahead(n); - }, - - /** - * Parse input returning a string of js for evaluation. - * - * @return {String} - * @api public - */ - - parse: function(){ - var block = new nodes.Block, parser; - block.line = this.line(); - - while ('eos' != this.peek().type) { - if ('newline' == this.peek().type) { - this.advance(); - } else { - block.push(this.parseExpr()); - } - } - - if (parser = this.extending) { - this.context(parser); - var ast = parser.parse(); - this.context(); - - // hoist mixins - for (var name in this.mixins) - ast.unshift(this.mixins[name]); - return ast; - } - - return block; - }, - - /** - * Expect the given type, or throw an exception. - * - * @param {String} type - * @api private - */ - - expect: function(type){ - if (this.peek().type === type) { - return this.advance(); - } else { - throw new Error('expected "' + type + '", but got "' + this.peek().type + '"'); - } - }, - - /** - * Accept the given `type`. - * - * @param {String} type - * @api private - */ - - accept: function(type){ - if (this.peek().type === type) { - return this.advance(); - } - }, - - /** - * tag - * | doctype - * | mixin - * | include - * | filter - * | comment - * | text - * | each - * | code - * | yield - * | id - * | class - * | interpolation - */ - - parseExpr: function(){ - switch (this.peek().type) { - case 'tag': - return this.parseTag(); - case 'mixin': - return this.parseMixin(); - case 'block': - return this.parseBlock(); - case 'case': - return this.parseCase(); - case 'when': - return this.parseWhen(); - case 'default': - return this.parseDefault(); - case 'extends': - return this.parseExtends(); - case 'include': - return this.parseInclude(); - case 'doctype': - return this.parseDoctype(); - case 'filter': - return this.parseFilter(); - case 'comment': - return this.parseComment(); - case 'text': - return this.parseText(); - case 'each': - return this.parseEach(); - case 'code': - return this.parseCode(); - case 'call': - return this.parseCall(); - case 'interpolation': - return this.parseInterpolation(); - case 'yield': - this.advance(); - var block = new nodes.Block; - block.yield = true; - return block; - case 'id': - case 'class': - var tok = this.advance(); - this.lexer.defer(this.lexer.tok('tag', 'div')); - this.lexer.defer(tok); - return this.parseExpr(); - default: - throw new Error('unexpected token "' + this.peek().type + '"'); - } - }, - - /** - * Text - */ - - parseText: function(){ - var tok = this.expect('text'); - var node = new nodes.Text(tok.val); - node.line = this.line(); - return node; - }, - - /** - * ':' expr - * | block - */ - - parseBlockExpansion: function(){ - if (':' == this.peek().type) { - this.advance(); - return new nodes.Block(this.parseExpr()); - } else { - return this.block(); - } - }, - - /** - * case - */ - - parseCase: function(){ - var val = this.expect('case').val; - var node = new nodes.Case(val); - node.line = this.line(); - node.block = this.block(); - return node; - }, - - /** - * when - */ - - parseWhen: function(){ - var val = this.expect('when').val - return new nodes.Case.When(val, this.parseBlockExpansion()); - }, - - /** - * default - */ - - parseDefault: function(){ - this.expect('default'); - return new nodes.Case.When('default', this.parseBlockExpansion()); - }, - - /** - * code - */ - - parseCode: function(){ - var tok = this.expect('code'); - var node = new nodes.Code(tok.val, tok.buffer, tok.escape); - var block; - var i = 1; - node.line = this.line(); - while (this.lookahead(i) && 'newline' == this.lookahead(i).type) ++i; - block = 'indent' == this.lookahead(i).type; - if (block) { - this.skip(i-1); - node.block = this.block(); - } - return node; - }, - - /** - * comment - */ - - parseComment: function(){ - var tok = this.expect('comment'); - var node; - - if ('indent' == this.peek().type) { - node = new nodes.BlockComment(tok.val, this.block(), tok.buffer); - } else { - node = new nodes.Comment(tok.val, tok.buffer); - } - - node.line = this.line(); - return node; - }, - - /** - * doctype - */ - - parseDoctype: function(){ - var tok = this.expect('doctype'); - var node = new nodes.Doctype(tok.val); - node.line = this.line(); - return node; - }, - - /** - * filter attrs? text-block - */ - - parseFilter: function(){ - var tok = this.expect('filter'); - var attrs = this.accept('attrs'); - var block; - - this.lexer.pipeless = true; - block = this.parseTextBlock(); - this.lexer.pipeless = false; - - var node = new nodes.Filter(tok.val, block, attrs && attrs.attrs); - node.line = this.line(); - return node; - }, - - /** - * each block - */ - - parseEach: function(){ - var tok = this.expect('each'); - var node = new nodes.Each(tok.code, tok.val, tok.key); - node.line = this.line(); - node.block = this.block(); - if (this.peek().type == 'code' && this.peek().val == 'else') { - this.advance(); - node.alternative = this.block(); - } - return node; - }, - - /** - * Resolves a path relative to the template for use in - * includes and extends - * - * @param {String} path - * @param {String} purpose Used in error messages. - * @return {String} - * @api private - */ - - resolvePath: function (path, purpose) { - var p = require('path'); - var dirname = p.dirname; - var basename = p.basename; - var join = p.join; - - if (path[0] !== '/' && !this.filename) - throw new Error('the "filename" option is required to use "' + purpose + '" with "relative" paths'); - - if (path[0] === '/' && !this.options.basedir) - throw new Error('the "basedir" option is required to use "' + purpose + '" with "absolute" paths'); - - path = join(path[0] === '/' ? this.options.basedir : dirname(this.filename), path); - - if (basename(path).indexOf('.') === -1) path += '.jade'; - - return path; - }, - - /** - * 'extends' name - */ - - parseExtends: function(){ - var fs = require('fs'); - - var path = this.resolvePath(this.expect('extends').val.trim(), 'extends'); - if ('.jade' != path.substr(-5)) path += '.jade'; - - var str = fs.readFileSync(path, 'utf8'); - var parser = new Parser(str, path, this.options); - - parser.blocks = this.blocks; - parser.contexts = this.contexts; - this.extending = parser; - - // TODO: null node - return new nodes.Literal(''); - }, - - /** - * 'block' name block - */ - - parseBlock: function(){ - var block = this.expect('block'); - var mode = block.mode; - var name = block.val.trim(); - - block = 'indent' == this.peek().type - ? this.block() - : new nodes.Block(new nodes.Literal('')); - - var prev = this.blocks[name] || {prepended: [], appended: []} - if (prev.mode === 'replace') return this.blocks[name] = prev; - - var allNodes = prev.prepended.concat(block.nodes).concat(prev.appended); - - switch (mode) { - case 'append': - prev.appended = prev.parser === this ? - prev.appended.concat(block.nodes) : - block.nodes.concat(prev.appended); - break; - case 'prepend': - prev.prepended = prev.parser === this ? - block.nodes.concat(prev.prepended) : - prev.prepended.concat(block.nodes); - break; - } - block.nodes = allNodes; - block.appended = prev.appended; - block.prepended = prev.prepended; - block.mode = mode; - block.parser = this; - - return this.blocks[name] = block; - }, - - /** - * include block? - */ - - parseInclude: function(){ - var fs = require('fs'); - - var path = this.resolvePath(this.expect('include').val.trim(), 'include'); - - // non-jade - if ('.jade' != path.substr(-5)) { - var str = fs.readFileSync(path, 'utf8').replace(/\r/g, ''); - var ext = extname(path).slice(1); - if (filters.exists(ext)) str = filters(ext, str, { filename: path }); - return new nodes.Literal(str); - } - - var str = fs.readFileSync(path, 'utf8'); - var parser = new Parser(str, path, this.options); - parser.blocks = utils.merge({}, this.blocks); - - parser.mixins = this.mixins; - - this.context(parser); - var ast = parser.parse(); - this.context(); - ast.filename = path; - - if ('indent' == this.peek().type) { - ast.includeBlock().push(this.block()); - } - - return ast; - }, - - /** - * call ident block - */ - - parseCall: function(){ - var tok = this.expect('call'); - var name = tok.val; - var args = tok.args; - var mixin = new nodes.Mixin(name, args, new nodes.Block, true); - - this.tag(mixin); - if (mixin.code) { - mixin.block.push(mixin.code); - mixin.code = null; - } - if (mixin.block.isEmpty()) mixin.block = null; - return mixin; - }, - - /** - * mixin block - */ - - parseMixin: function(){ - var tok = this.expect('mixin'); - var name = tok.val; - var args = tok.args; - var mixin; - - // definition - if ('indent' == this.peek().type) { - mixin = new nodes.Mixin(name, args, this.block(), false); - this.mixins[name] = mixin; - return mixin; - // call - } else { - return new nodes.Mixin(name, args, null, true); - } - }, - - /** - * indent (text | newline)* outdent - */ - - parseTextBlock: function(){ - var block = new nodes.Block; - block.line = this.line(); - var spaces = this.expect('indent').val; - if (null == this._spaces) this._spaces = spaces; - var indent = Array(spaces - this._spaces + 1).join(' '); - while ('outdent' != this.peek().type) { - switch (this.peek().type) { - case 'newline': - this.advance(); - break; - case 'indent': - this.parseTextBlock().nodes.forEach(function(node){ - block.push(node); - }); - break; - default: - var text = new nodes.Text(indent + this.advance().val); - text.line = this.line(); - block.push(text); - } - } - - if (spaces == this._spaces) this._spaces = null; - this.expect('outdent'); - return block; - }, - - /** - * indent expr* outdent - */ - - block: function(){ - var block = new nodes.Block; - block.line = this.line(); - this.expect('indent'); - while ('outdent' != this.peek().type) { - if ('newline' == this.peek().type) { - this.advance(); - } else { - block.push(this.parseExpr()); - } - } - this.expect('outdent'); - return block; - }, - - /** - * interpolation (attrs | class | id)* (text | code | ':')? newline* block? - */ - - parseInterpolation: function(){ - var tok = this.advance(); - var tag = new nodes.Tag(tok.val); - tag.buffer = true; - return this.tag(tag); - }, - - /** - * tag (attrs | class | id)* (text | code | ':')? newline* block? - */ - - parseTag: function(){ - // ast-filter look-ahead - var i = 2; - if ('attrs' == this.lookahead(i).type) ++i; - - var tok = this.advance(); - var tag = new nodes.Tag(tok.val); - - tag.selfClosing = tok.selfClosing; - - return this.tag(tag); - }, - - /** - * Parse tag. - */ - - tag: function(tag){ - var dot; - - tag.line = this.line(); - - // (attrs | class | id)* - out: - while (true) { - switch (this.peek().type) { - case 'id': - case 'class': - var tok = this.advance(); - tag.setAttribute(tok.type, "'" + tok.val + "'"); - continue; - case 'attrs': - var tok = this.advance() - , obj = tok.attrs - , escaped = tok.escaped - , names = Object.keys(obj); - - if (tok.selfClosing) tag.selfClosing = true; - - for (var i = 0, len = names.length; i < len; ++i) { - var name = names[i] - , val = obj[name]; - tag.setAttribute(name, val, escaped[name]); - } - continue; - default: - break out; - } - } - - // check immediate '.' - if ('.' == this.peek().val) { - dot = tag.textOnly = true; - this.advance(); - } - - // (text | code | ':')? - switch (this.peek().type) { - case 'text': - tag.block.push(this.parseText()); - break; - case 'code': - tag.code = this.parseCode(); - break; - case ':': - this.advance(); - tag.block = new nodes.Block; - tag.block.push(this.parseExpr()); - break; - } - - // newline* - while ('newline' == this.peek().type) this.advance(); - - tag.textOnly = tag.textOnly || ~textOnly.indexOf(tag.name); - - // script special-case - if ('script' == tag.name) { - var type = tag.getAttribute('type'); - if (!dot && type && 'text/javascript' != type.replace(/^['"]|['"]$/g, '')) { - tag.textOnly = false; - } - } - - if (tag.textOnly && !dot && !(tag.name == 'script' && tag.getAttribute('src'))) { - console.warn('Implicit textOnly for `script` and `style` is deprecated. Use `script.` or `style.` instead.'); - } - - // block? - if ('indent' == this.peek().type) { - if (tag.textOnly) { - this.lexer.pipeless = true; - tag.block = this.parseTextBlock(); - this.lexer.pipeless = false; - } else { - var block = this.block(); - if (tag.block) { - for (var i = 0, len = block.nodes.length; i < len; ++i) { - tag.block.push(block.nodes[i]); - } - } else { - tag.block = block; - } - } - } - - return tag; - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js b/nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js deleted file mode 100644 index 7bc81ef..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/runtime.js +++ /dev/null @@ -1,187 +0,0 @@ - -/*! - * Jade - runtime - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Lame Array.isArray() polyfill for now. - */ - -if (!Array.isArray) { - Array.isArray = function(arr){ - return '[object Array]' == Object.prototype.toString.call(arr); - }; -} - -/** - * Lame Object.keys() polyfill for now. - */ - -if (!Object.keys) { - Object.keys = function(obj){ - var arr = []; - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - arr.push(key); - } - } - return arr; - } -} - -/** - * Merge two attribute objects giving precedence - * to values in object `b`. Classes are special-cased - * allowing for arrays and merging/joining appropriately - * resulting in a string. - * - * @param {Object} a - * @param {Object} b - * @return {Object} a - * @api private - */ - -exports.merge = function merge(a, b) { - var ac = a['class']; - var bc = b['class']; - - if (ac || bc) { - ac = ac || []; - bc = bc || []; - if (!Array.isArray(ac)) ac = [ac]; - if (!Array.isArray(bc)) bc = [bc]; - a['class'] = ac.concat(bc).filter(nulls); - } - - for (var key in b) { - if (key != 'class') { - a[key] = b[key]; - } - } - - return a; -}; - -/** - * Filter null `val`s. - * - * @param {*} val - * @return {Boolean} - * @api private - */ - -function nulls(val) { - return val != null && val !== ''; -} - -/** - * join array as classes. - * - * @param {*} val - * @return {String} - * @api private - */ - -function joinClasses(val) { - return Array.isArray(val) ? val.map(joinClasses).filter(nulls).join(' ') : val; -} - -/** - * Render the given attributes object. - * - * @param {Object} obj - * @param {Object} escaped - * @return {String} - * @api private - */ - -exports.attrs = function attrs(obj, escaped){ - var buf = [] - , terse = obj.terse; - - delete obj.terse; - var keys = Object.keys(obj) - , len = keys.length; - - if (len) { - buf.push(''); - for (var i = 0; i < len; ++i) { - var key = keys[i] - , val = obj[key]; - - if ('boolean' == typeof val || null == val) { - if (val) { - terse - ? buf.push(key) - : buf.push(key + '="' + key + '"'); - } - } else if (0 == key.indexOf('data') && 'string' != typeof val) { - buf.push(key + "='" + JSON.stringify(val) + "'"); - } else if ('class' == key) { - if (val = exports.escape(joinClasses(val))) { - buf.push(key + '="' + val + '"'); - } - } else if (escaped && escaped[key]) { - buf.push(key + '="' + exports.escape(val) + '"'); - } else { - buf.push(key + '="' + val + '"'); - } - } - } - - return buf.join(' '); -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function escape(html){ - return String(html) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - -/** - * Re-throw the given `err` in context to the - * the jade in `filename` at the given `lineno`. - * - * @param {Error} err - * @param {String} filename - * @param {String} lineno - * @api private - */ - -exports.rethrow = function rethrow(err, filename, lineno){ - if (!filename) throw err; - if (typeof window != 'undefined') throw err; - - var context = 3 - , str = require('fs').readFileSync(filename, 'utf8') - , lines = str.split('\n') - , start = Math.max(lineno - context, 0) - , end = Math.min(lines.length, lineno + context); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' > ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'Jade') + ':' + lineno - + '\n' + context + '\n\n' + err.message; - throw err; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js b/nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js deleted file mode 100644 index 0548771..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/self-closing.js +++ /dev/null @@ -1,19 +0,0 @@ - -/*! - * Jade - self closing tags - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -module.exports = [ - 'meta' - , 'img' - , 'link' - , 'input' - , 'source' - , 'area' - , 'base' - , 'col' - , 'br' - , 'hr' -]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/lib/utils.js b/nodejs-mysql-tutorial/node_modules/jade/lib/utils.js deleted file mode 100644 index 9d308cc..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/lib/utils.js +++ /dev/null @@ -1,21 +0,0 @@ - -/*! - * Jade - utils - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Merge `b` into `a`. - * - * @param {Object} a - * @param {Object} b - * @return {Object} - * @api public - */ - -exports.merge = function(a, b) { - for (var key in b) a[key] = b[key]; - return a; -}; - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore deleted file mode 100644 index 699b5d4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.npmignore +++ /dev/null @@ -1,16 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -npm-debug.log - -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml deleted file mode 100644 index 2ca91f2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.10" - - "0.8" \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md deleted file mode 100644 index 4485cbf..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/README.md +++ /dev/null @@ -1,123 +0,0 @@ -# character-parser - -Parse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly. - -[![Build Status](https://travis-ci.org/ForbesLindesay/character-parser.png?branch=master)](https://travis-ci.org/ForbesLindesay/character-parser) - -## Installation - - npm install character-parser - -## Usage - -Work out how much depth changes: - -```js -var state = parse('foo(arg1, arg2, {\n foo: [a, b\n'); -assert(state.roundDepth === 1); -assert(state.curlyDepth === 1); -assert(state.squareDepth === 1); -parse(' c, d]\n })', state); -assert(state.squareDepth === 0); -assert(state.curlyDepth === 0); -assert(state.roundDepth === 0); -``` - -### Bracketed Expressions - -Find all the contents of a bracketed expression: - -```js -var section = parser.parseMax('foo="(", bar="}") bing bong'); -assert(section.start === 0); -assert(section.end === 16);//exclusive end of string -assert(section.src = 'foo="(", bar="}"'); - - -var section = parser.parseMax('{foo="(", bar="}"} bing bong', {start: 1}); -assert(section.start === 1); -assert(section.end === 17);//exclusive end of string -assert(section.src = 'foo="(", bar="}"'); -``` - -The bracketed expression parsing simply parses up to but excluding the first unmatched closed bracket (`)`, `}`, `]`). It is clever enough to ignore brackets in comments or strings. - - -### Custom Delimited Expressions - -Find code up to a custom delimiter: - -```js -var section = parser.parseUntil('foo.bar("%>").baz%> bing bong', '%>'); -assert(section.start === 0); -assert(section.end === 17);//exclusive end of string -assert(section.src = 'foo.bar("%>").baz'); - -var section = parser.parseUntil('<%foo.bar("%>").baz%> bing bong', '%>', {start: 2}); -assert(section.start === 2); -assert(section.end === 19);//exclusive end of string -assert(section.src = 'foo.bar("%>").baz'); -``` - -Delimiters are ignored if they are inside strings or comments. - -## API - -### parse(str, state = defaultState(), options = {start: 0, end: src.length}) - -Parse a string starting at the index start, and return the state after parsing that string. - -If you want to parse one string in multiple sections you should keep passing the resulting state to the next parse operation. - -The resulting object has the structure: - -```js -{ - lineComment: false, //true if inside a line comment - blockComment: false, //true if inside a block comment - - singleQuote: false, //true if inside a single quoted string - doubleQuote: false, //true if inside a double quoted string - escaped: false, //true if in a string and the last character was an escape character - - roundDepth: 0, //number of un-closed open `(` brackets - curlyDepth: 0, //number of un-closed open `{` brackets - squareDepth: 0 //number of un-closed open `[` brackets -} -``` - -### parseMax(src, options = {start: 0}) - -Parses the source until the first unmatched close bracket (any of `)`, `}`, `]`). It returns an object with the structure: - -```js -{ - start: 0,//index of first character of string - end: 13,//index of first character after the end of string - src: 'source string' -} -``` - -### parseUntil(src, delimiter, options = {start: 0, includeLineComment: false}) - -Parses the source until the first occurence of `delimiter` which is not in a string or a comment. If `includeLineComment` is `true`, it will still count if the delimiter occurs in a line comment, but not in a block comment. It returns an object with the structure: - -```js -{ - start: 0,//index of first character of string - end: 13,//index of first character after the end of string - src: 'source string' -} -``` - -### parseChar(character, state = defaultState()) - -Parses the single character and returns the state. See `parse` for the structure of the returned state object. N.B. character must be a single character not a multi character string. - -### defaultState() - -Get a default starting state. See `parse` for the structure of the returned state object. - -## License - -MIT \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js deleted file mode 100644 index c80022b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/index.js +++ /dev/null @@ -1,205 +0,0 @@ -exports = (module.exports = parse); -exports.parse = parse; -function parse(src, state, options) { - options = options || {}; - state = state || exports.defaultState(); - var start = options.start || 0; - var end = options.end || src.length; - var index = start; - while (index < end) { - if (state.roundDepth < 0 || state.curlyDepth < 0 || state.squareDepth < 0) { - throw new SyntaxError('Mismatched Bracket: ' + src[index - 1]); - } - exports.parseChar(src[index++], state); - } - return state; -} - -exports.parseMax = parseMax; -function parseMax(src, options) { - options = options || {}; - var start = options.start || 0; - var index = start; - var state = exports.defaultState(); - while (state.roundDepth >= 0 && state.curlyDepth >= 0 && state.squareDepth >= 0) { - if (index >= src.length) { - throw new Error('The end of the string was reached with no closing bracket found.'); - } - exports.parseChar(src[index++], state); - } - var end = index - 1; - return { - start: start, - end: end, - src: src.substring(start, end) - }; -} - -exports.parseUntil = parseUntil; -function parseUntil(src, delimiter, options) { - options = options || {}; - var includeLineComment = options.includeLineComment || false; - var start = options.start || 0; - var index = start; - var state = exports.defaultState(); - while (state.singleQuote || state.doubleQuote || state.regexp || state.blockComment || - (!includeLineComment && state.lineComment) || !startsWith(src, delimiter, index)) { - exports.parseChar(src[index++], state); - } - var end = index; - return { - start: start, - end: end, - src: src.substring(start, end) - }; -} - - -exports.parseChar = parseChar; -function parseChar(character, state) { - if (character.length !== 1) throw new Error('Character must be a string of length 1'); - state = state || defaultState(); - var wasComment = state.blockComment || state.lineComment; - var lastChar = state.history ? state.history[0] : ''; - if (state.lineComment) { - if (character === '\n') { - state.lineComment = false; - } - } else if (state.blockComment) { - if (state.lastChar === '*' && character === '/') { - state.blockComment = false; - } - } else if (state.singleQuote) { - if (character === '\'' && !state.escaped) { - state.singleQuote = false; - } else if (character === '\\' && !state.escaped) { - state.escaped = true; - } else { - state.escaped = false; - } - } else if (state.doubleQuote) { - if (character === '"' && !state.escaped) { - state.doubleQuote = false; - } else if (character === '\\' && !state.escaped) { - state.escaped = true; - } else { - state.escaped = false; - } - } else if (state.regexp) { - if (character === '/' && !state.escaped) { - state.regexp = false; - } else if (character === '\\' && !state.escaped) { - state.escaped = true; - } else { - state.escaped = false; - } - } else if (lastChar === '/' && character === '/') { - history = history.substr(1); - state.lineComment = true; - } else if (lastChar === '/' && character === '*') { - history = history.substr(1); - state.blockComment = true; - } else if (character === '/') { - //could be start of regexp or divide sign - var history = state.history.replace(/^\s*/, ''); - if (history[0] === ')') { - //unless its an `if`, `while`, `for` or `with` it's a divide - //this is probably best left though - } else if (history[0] === '}') { - //unless it's a function expression, it's a regexp - //this is probably best left though - } else if (isPunctuator(history[0])) { - state.regexp = true; - } else if (/^\w+\b/.test(history) && isKeyword(/^\w+\b/.exec(history)[0])) { - state.regexp = true; - } else { - // assume it's divide - } - } else if (character === '\'') { - state.singleQuote = true; - } else if (character === '"') { - state.doubleQuote = true; - } else if (character === '(') { - state.roundDepth++; - } else if (character === ')') { - state.roundDepth--; - } else if (character === '{') { - state.curlyDepth++; - } else if (character === '}') { - state.curlyDepth--; - } else if (character === '[') { - state.squareDepth++; - } else if (character === ']') { - state.squareDepth--; - } - if (!state.blockComment && !state.lineComment && !wasComment) state.history = character + state.history; - return state; -} - -exports.defaultState = defaultState; -function defaultState() { - return { - lineComment: false, - blockComment: false, - - singleQuote: false, - doubleQuote: false, - regexp: false, - escaped: false, - - roundDepth: 0, - curlyDepth: 0, - squareDepth: 0, - - history: '' - }; -} - -function startsWith(str, start, i) { - return str.substr(i || 0, start.length) === start; -} - -function isPunctuator(c) { - var code = c.charCodeAt(0) - - switch (code) { - case 46: // . dot - case 40: // ( open bracket - case 41: // ) close bracket - case 59: // ; semicolon - case 44: // , comma - case 123: // { open curly brace - case 125: // } close curly brace - case 91: // [ - case 93: // ] - case 58: // : - case 63: // ? - case 126: // ~ - case 37: // % - case 38: // & - case 42: // *: - case 43: // + - case 45: // - - case 47: // / - case 60: // < - case 62: // > - case 94: // ^ - case 124: // | - case 33: // ! - case 61: // = - return true; - default: - return false; - } -} -function isKeyword(id) { - return (id === 'if') || (id === 'in') || (id === 'do') || (id === 'var') || (id === 'for') || (id === 'new') || - (id === 'try') || (id === 'let') || (id === 'this') || (id === 'else') || (id === 'case') || - (id === 'void') || (id === 'with') || (id === 'enum') || (id === 'while') || (id === 'break') || (id === 'catch') || - (id === 'throw') || (id === 'const') || (id === 'yield') || (id === 'class') || (id === 'super') || - (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch') || (id === 'export') || - (id === 'import') || (id === 'default') || (id === 'finally') || (id === 'extends') || (id === 'function') || - (id === 'continue') || (id === 'debugger') || (id === 'package') || (id === 'private') || (id === 'interface') || - (id === 'instanceof') || (id === 'implements') || (id === 'protected') || (id === 'public') || (id === 'static') || - (id === 'yield') || (id === 'let'); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json deleted file mode 100644 index 76f2407..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "character-parser", - "version": "1.0.2", - "description": "Parse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly.", - "main": "index.js", - "scripts": { - "test": "mocha -R spec" - }, - "repository": { - "type": "git", - "url": "https://github.com/ForbesLindesay/character-parser.git" - }, - "keywords": [ - "parser", - "JavaScript", - "bracket", - "nesting", - "comment", - "string", - "escape", - "escaping" - ], - "author": { - "name": "ForbesLindesay" - }, - "license": "MIT", - "devDependencies": { - "better-assert": "~1.0.0", - "mocha": "~1.9.0" - }, - "readme": "# character-parser\r\n\r\nParse JavaScript one character at a time to look for snippets in Templates. This is not a validator, it's just designed to allow you to have sections of JavaScript delimited by brackets robustly.\r\n\r\n[![Build Status](https://travis-ci.org/ForbesLindesay/character-parser.png?branch=master)](https://travis-ci.org/ForbesLindesay/character-parser)\r\n\r\n## Installation\r\n\r\n npm install character-parser\r\n\r\n## Usage\r\n\r\nWork out how much depth changes:\r\n\r\n```js\r\nvar state = parse('foo(arg1, arg2, {\\n foo: [a, b\\n');\r\nassert(state.roundDepth === 1);\r\nassert(state.curlyDepth === 1);\r\nassert(state.squareDepth === 1);\r\nparse(' c, d]\\n })', state);\r\nassert(state.squareDepth === 0);\r\nassert(state.curlyDepth === 0);\r\nassert(state.roundDepth === 0);\r\n```\r\n\r\n### Bracketed Expressions\r\n\r\nFind all the contents of a bracketed expression:\r\n\r\n```js\r\nvar section = parser.parseMax('foo=\"(\", bar=\"}\") bing bong');\r\nassert(section.start === 0);\r\nassert(section.end === 16);//exclusive end of string\r\nassert(section.src = 'foo=\"(\", bar=\"}\"');\r\n\r\n\r\nvar section = parser.parseMax('{foo=\"(\", bar=\"}\"} bing bong', {start: 1});\r\nassert(section.start === 1);\r\nassert(section.end === 17);//exclusive end of string\r\nassert(section.src = 'foo=\"(\", bar=\"}\"');\r\n```\r\n\r\nThe bracketed expression parsing simply parses up to but excluding the first unmatched closed bracket (`)`, `}`, `]`). It is clever enough to ignore brackets in comments or strings.\r\n\r\n\r\n### Custom Delimited Expressions\r\n\r\nFind code up to a custom delimiter:\r\n\r\n```js\r\nvar section = parser.parseUntil('foo.bar(\"%>\").baz%> bing bong', '%>');\r\nassert(section.start === 0);\r\nassert(section.end === 17);//exclusive end of string\r\nassert(section.src = 'foo.bar(\"%>\").baz');\r\n\r\nvar section = parser.parseUntil('<%foo.bar(\"%>\").baz%> bing bong', '%>', {start: 2});\r\nassert(section.start === 2);\r\nassert(section.end === 19);//exclusive end of string\r\nassert(section.src = 'foo.bar(\"%>\").baz');\r\n```\r\n\r\nDelimiters are ignored if they are inside strings or comments.\r\n\r\n## API\r\n\r\n### parse(str, state = defaultState(), options = {start: 0, end: src.length})\r\n\r\nParse a string starting at the index start, and return the state after parsing that string.\r\n\r\nIf you want to parse one string in multiple sections you should keep passing the resulting state to the next parse operation.\r\n\r\nThe resulting object has the structure:\r\n\r\n```js\r\n{\r\n lineComment: false, //true if inside a line comment\r\n blockComment: false, //true if inside a block comment\r\n\r\n singleQuote: false, //true if inside a single quoted string\r\n doubleQuote: false, //true if inside a double quoted string\r\n escaped: false, //true if in a string and the last character was an escape character\r\n\r\n roundDepth: 0, //number of un-closed open `(` brackets\r\n curlyDepth: 0, //number of un-closed open `{` brackets\r\n squareDepth: 0 //number of un-closed open `[` brackets\r\n}\r\n```\r\n\r\n### parseMax(src, options = {start: 0})\r\n\r\nParses the source until the first unmatched close bracket (any of `)`, `}`, `]`). It returns an object with the structure:\r\n\r\n```js\r\n{\r\n start: 0,//index of first character of string\r\n end: 13,//index of first character after the end of string\r\n src: 'source string'\r\n}\r\n```\r\n\r\n### parseUntil(src, delimiter, options = {start: 0, includeLineComment: false})\r\n\r\nParses the source until the first occurence of `delimiter` which is not in a string or a comment. If `includeLineComment` is `true`, it will still count if the delimiter occurs in a line comment, but not in a block comment. It returns an object with the structure:\r\n\r\n```js\r\n{\r\n start: 0,//index of first character of string\r\n end: 13,//index of first character after the end of string\r\n src: 'source string'\r\n}\r\n```\r\n\r\n### parseChar(character, state = defaultState())\r\n\r\nParses the single character and returns the state. See `parse` for the structure of the returned state object. N.B. character must be a single character not a multi character string.\r\n\r\n### defaultState()\r\n\r\nGet a default starting state. See `parse` for the structure of the returned state object.\r\n\r\n## License\r\n\r\nMIT", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ForbesLindesay/character-parser/issues" - }, - "_id": "character-parser@1.0.2", - "_from": "character-parser@1.0.2" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js deleted file mode 100644 index 6ea0da7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/character-parser/test/index.js +++ /dev/null @@ -1,50 +0,0 @@ -var assert = require('better-assert'); -var parser = require('../'); -var parse = parser; - -it('works out how much depth changes', function () { - var state = parse('foo(arg1, arg2, {\n foo: [a, b\n'); - assert(state.roundDepth === 1); - assert(state.curlyDepth === 1); - assert(state.squareDepth === 1); - - parse(' c, d]\n })', state); - assert(state.squareDepth === 0); - assert(state.curlyDepth === 0); - assert(state.roundDepth === 0); -}); - -it('finds contents of bracketed expressions', function () { - var section = parser.parseMax('foo="(", bar="}") bing bong'); - assert(section.start === 0); - assert(section.end === 16);//exclusive end of string - assert(section.src = 'foo="(", bar="}"'); - - var section = parser.parseMax('{foo="(", bar="}"} bing bong', {start: 1}); - assert(section.start === 1); - assert(section.end === 17);//exclusive end of string - assert(section.src = 'foo="(", bar="}"'); -}); - -it('finds code up to a custom delimiter', function () { - var section = parser.parseUntil('foo.bar("%>").baz%> bing bong', '%>'); - assert(section.start === 0); - assert(section.end === 17);//exclusive end of string - assert(section.src = 'foo.bar("%>").baz'); - - var section = parser.parseUntil('<%foo.bar("%>").baz%> bing bong', '%>', {start: 2}); - assert(section.start === 2); - assert(section.end === 19);//exclusive end of string - assert(section.src = 'foo.bar("%>").baz'); -}); - -describe('regressions', function () { - describe('#1', function () { - it('parses regular expressions', function () { - var section = parser.parseMax('foo=/\\//g, bar="}") bing bong'); - assert(section.start === 0); - assert(section.end === 18);//exclusive end of string - assert(section.src = 'foo=/\\//g, bar="}"'); - }) - }) -}) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md deleted file mode 100644 index 160dc6b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/History.md +++ /dev/null @@ -1,152 +0,0 @@ - -1.1.1 / 2012-11-20 -================== - - * add more sub-command padding - * fix .usage() when args are present. Closes #106 - -1.1.0 / 2012-11-16 -================== - - * add git-style executable subcommand support. Closes #94 - -1.0.5 / 2012-10-09 -================== - - * fix `--name` clobbering. Closes #92 - * fix examples/help. Closes #89 - -1.0.4 / 2012-09-03 -================== - - * add `outputHelp()` method. - -1.0.3 / 2012-08-30 -================== - - * remove invalid .version() defaulting - -1.0.2 / 2012-08-24 -================== - - * add `--foo=bar` support [arv] - * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] - -1.0.1 / 2012-08-03 -================== - - * fix issue #56 - * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) - -1.0.0 / 2012-07-05 -================== - - * add support for optional option descriptions - * add defaulting of `.version()` to package.json's version - -0.6.1 / 2012-06-01 -================== - - * Added: append (yes or no) on confirmation - * Added: allow node.js v0.7.x - -0.6.0 / 2012-04-10 -================== - - * Added `.prompt(obj, callback)` support. Closes #49 - * Added default support to .choose(). Closes #41 - * Fixed the choice example - -0.5.1 / 2011-12-20 -================== - - * Fixed `password()` for recent nodes. Closes #36 - -0.5.0 / 2011-12-04 -================== - - * Added sub-command option support [itay] - -0.4.3 / 2011-12-04 -================== - - * Fixed custom help ordering. Closes #32 - -0.4.2 / 2011-11-24 -================== - - * Added travis support - * Fixed: line-buffered input automatically trimmed. Closes #31 - -0.4.1 / 2011-11-18 -================== - - * Removed listening for "close" on --help - -0.4.0 / 2011-11-15 -================== - - * Added support for `--`. Closes #24 - -0.3.3 / 2011-11-14 -================== - - * Fixed: wait for close event when writing help info [Jerry Hamlet] - -0.3.2 / 2011-11-01 -================== - - * Fixed long flag definitions with values [felixge] - -0.3.1 / 2011-10-31 -================== - - * Changed `--version` short flag to `-V` from `-v` - * Changed `.version()` so it's configurable [felixge] - -0.3.0 / 2011-10-31 -================== - - * Added support for long flags only. Closes #18 - -0.2.1 / 2011-10-24 -================== - - * "node": ">= 0.4.x < 0.7.0". Closes #20 - -0.2.0 / 2011-09-26 -================== - - * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] - -0.1.0 / 2011-08-24 -================== - - * Added support for custom `--help` output - -0.0.5 / 2011-08-18 -================== - - * Changed: when the user enters nothing prompt for password again - * Fixed issue with passwords beginning with numbers [NuckChorris] - -0.0.4 / 2011-08-15 -================== - - * Fixed `Commander#args` - -0.0.3 / 2011-08-15 -================== - - * Added default option value support - -0.0.2 / 2011-08-15 -================== - - * Added mask support to `Command#password(str[, mask], fn)` - * Added `Command#password(str, fn)` - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile deleted file mode 100644 index 0074625..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -TESTS = $(shell find test/test.*.js) - -test: - @./test/run $(TESTS) - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md deleted file mode 100644 index f93f362..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/Readme.md +++ /dev/null @@ -1,270 +0,0 @@ -# Commander.js - - The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). - - [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) - -## Installation - - $ npm install commander - -## Option parsing - - Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-p, --peppers', 'Add peppers') - .option('-P, --pineapple', 'Add pineapple') - .option('-b, --bbq', 'Add bbq sauce') - .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') - .parse(process.argv); - -console.log('you ordered a pizza with:'); -if (program.peppers) console.log(' - peppers'); -if (program.pineapple) console.log(' - pineappe'); -if (program.bbq) console.log(' - bbq'); -console.log(' - %s cheese', program.cheese); -``` - - Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. - -## Automated --help - - The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: - -``` - $ ./examples/pizza --help - - Usage: pizza [options] - - Options: - - -V, --version output the version number - -p, --peppers Add peppers - -P, --pineapple Add pineappe - -b, --bbq Add bbq sauce - -c, --cheese Add the specified type of cheese [marble] - -h, --help output usage information - -``` - -## Coercion - -```js -function range(val) { - return val.split('..').map(Number); -} - -function list(val) { - return val.split(','); -} - -program - .version('0.0.1') - .usage('[options] ') - .option('-i, --integer ', 'An integer argument', parseInt) - .option('-f, --float ', 'A float argument', parseFloat) - .option('-r, --range
      ..', 'A range', range) - .option('-l, --list ', 'A list', list) - .option('-o, --optional [value]', 'An optional value') - .parse(process.argv); - -console.log(' int: %j', program.integer); -console.log(' float: %j', program.float); -console.log(' optional: %j', program.optional); -program.range = program.range || []; -console.log(' range: %j..%j', program.range[0], program.range[1]); -console.log(' list: %j', program.list); -console.log(' args: %j', program.args); -``` - -## Custom help - - You can display arbitrary `-h, --help` information - by listening for "--help". Commander will automatically - exit once you are done so that the remainder of your program - does not execute causing undesired behaviours, for example - in the following executable "stuff" will not output when - `--help` is used. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('../'); - -function list(val) { - return val.split(',').map(Number); -} - -program - .version('0.0.1') - .option('-f, --foo', 'enable some foo') - .option('-b, --bar', 'enable some bar') - .option('-B, --baz', 'enable some baz'); - -// must be before .parse() since -// node's emit() is immediate - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' $ custom-help --help'); - console.log(' $ custom-help -h'); - console.log(''); -}); - -program.parse(process.argv); - -console.log('stuff'); -``` - -yielding the following help output: - -``` - -Usage: custom-help [options] - -Options: - - -h, --help output usage information - -V, --version output the version number - -f, --foo enable some foo - -b, --bar enable some bar - -B, --baz enable some baz - -Examples: - - $ custom-help --help - $ custom-help -h - -``` - -## .prompt(msg, fn) - - Single-line prompt: - -```js -program.prompt('name: ', function(name){ - console.log('hi %s', name); -}); -``` - - Multi-line prompt: - -```js -program.prompt('description:', function(name){ - console.log('hi %s', name); -}); -``` - - Coercion: - -```js -program.prompt('Age: ', Number, function(age){ - console.log('age: %j', age); -}); -``` - -```js -program.prompt('Birthdate: ', Date, function(date){ - console.log('date: %s', date); -}); -``` - -## .password(msg[, mask], fn) - -Prompt for password without echoing: - -```js -program.password('Password: ', function(pass){ - console.log('got "%s"', pass); - process.stdin.destroy(); -}); -``` - -Prompt for password with mask char "*": - -```js -program.password('Password: ', '*', function(pass){ - console.log('got "%s"', pass); - process.stdin.destroy(); -}); -``` - -## .confirm(msg, fn) - - Confirm with the given `msg`: - -```js -program.confirm('continue? ', function(ok){ - console.log(' got %j', ok); -}); -``` - -## .choose(list, fn) - - Let the user choose from a `list`: - -```js -var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; - -console.log('Choose the coolest pet:'); -program.choose(list, function(i){ - console.log('you chose %d "%s"', i, list[i]); -}); -``` - -## .outputHelp() - - Output help information without exiting. - -## .help() - - Output help information and exit immediately. - -## Links - - - [API documentation](http://visionmedia.github.com/commander.js/) - - [ascii tables](https://github.com/LearnBoost/cli-table) - - [progress bars](https://github.com/visionmedia/node-progress) - - [more progress bars](https://github.com/substack/node-multimeter) - - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js deleted file mode 100644 index bddca73..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/index.js +++ /dev/null @@ -1,1131 +0,0 @@ -/*! - * commander - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter - , spawn = require('child_process').spawn - , keypress = require('keypress') - , fs = require('fs') - , exists = fs.existsSync - , path = require('path') - , tty = require('tty') - , dirname = path.dirname - , basename = path.basename; - -/** - * Expose the root command. - */ - -exports = module.exports = new Command; - -/** - * Expose `Command`. - */ - -exports.Command = Command; - -/** - * Expose `Option`. - */ - -exports.Option = Option; - -/** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {String} flags - * @param {String} description - * @api public - */ - -function Option(flags, description) { - this.flags = flags; - this.required = ~flags.indexOf('<'); - this.optional = ~flags.indexOf('['); - this.bool = !~flags.indexOf('-no-'); - flags = flags.split(/[ ,|]+/); - if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); - this.long = flags.shift(); - this.description = description || ''; -} - -/** - * Return option name. - * - * @return {String} - * @api private - */ - -Option.prototype.name = function(){ - return this.long - .replace('--', '') - .replace('no-', ''); -}; - -/** - * Check if `arg` matches the short or long flag. - * - * @param {String} arg - * @return {Boolean} - * @api private - */ - -Option.prototype.is = function(arg){ - return arg == this.short - || arg == this.long; -}; - -/** - * Initialize a new `Command`. - * - * @param {String} name - * @api public - */ - -function Command(name) { - this.commands = []; - this.options = []; - this._args = []; - this._name = name; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Command.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add command `name`. - * - * The `.action()` callback is invoked when the - * command `name` is specified via __ARGV__, - * and the remaining arguments are applied to the - * function for access. - * - * When the `name` is "*" an un-matched command - * will be passed as the first arg, followed by - * the rest of __ARGV__ remaining. - * - * Examples: - * - * program - * .version('0.0.1') - * .option('-C, --chdir ', 'change the working directory') - * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - * .option('-T, --no-tests', 'ignore test hook') - * - * program - * .command('setup') - * .description('run remote setup commands') - * .action(function(){ - * console.log('setup'); - * }); - * - * program - * .command('exec ') - * .description('run the given remote command') - * .action(function(cmd){ - * console.log('exec "%s"', cmd); - * }); - * - * program - * .command('*') - * .description('deploy the given env') - * .action(function(env){ - * console.log('deploying "%s"', env); - * }); - * - * program.parse(process.argv); - * - * @param {String} name - * @param {String} [desc] - * @return {Command} the new command - * @api public - */ - -Command.prototype.command = function(name, desc){ - var args = name.split(/ +/); - var cmd = new Command(args.shift()); - if (desc) cmd.description(desc); - if (desc) this.executables = true; - this.commands.push(cmd); - cmd.parseExpectedArgs(args); - cmd.parent = this; - if (desc) return this; - return cmd; -}; - -/** - * Add an implicit `help [cmd]` subcommand - * which invokes `--help` for the given command. - * - * @api private - */ - -Command.prototype.addImplicitHelpCommand = function() { - this.command('help [cmd]', 'display help for [cmd]'); -}; - -/** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parseExpectedArgs = function(args){ - if (!args.length) return; - var self = this; - args.forEach(function(arg){ - switch (arg[0]) { - case '<': - self._args.push({ required: true, name: arg.slice(1, -1) }); - break; - case '[': - self._args.push({ required: false, name: arg.slice(1, -1) }); - break; - } - }); - return this; -}; - -/** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function(){ - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} for chaining - * @api public - */ - -Command.prototype.action = function(fn){ - var self = this; - this.parent.on(this._name, function(args, unknown){ - // Parse any so-far unknown options - unknown = unknown || []; - var parsed = self.parseOptions(unknown); - - // Output help if necessary - outputHelpIfNecessary(self, parsed.unknown); - - // If there are still any unknown options, then we simply - // die, unless someone asked for help, in which case we give it - // to them, and then we die. - if (parsed.unknown.length > 0) { - self.unknownOption(parsed.unknown[0]); - } - - // Leftover arguments need to be pushed back. Fixes issue #56 - if (parsed.args.length) args = parsed.args.concat(args); - - self._args.forEach(function(arg, i){ - if (arg.required && null == args[i]) { - self.missingArgument(arg.name); - } - }); - - // Always append ourselves to the end of the arguments, - // to make sure we match the number of arguments the user - // expects - if (self._args.length) { - args[self._args.length] = self; - } else { - args.push(self); - } - - fn.apply(this, args); - }); - return this; -}; - -/** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to false - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => true - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {String} flags - * @param {String} description - * @param {Function|Mixed} fn or default - * @param {Mixed} defaultValue - * @return {Command} for chaining - * @api public - */ - -Command.prototype.option = function(flags, description, fn, defaultValue){ - var self = this - , option = new Option(flags, description) - , oname = option.name() - , name = camelcase(oname); - - // default as 3rd arg - if ('function' != typeof fn) defaultValue = fn, fn = null; - - // preassign default value only for --no-*, [optional], or - if (false == option.bool || option.optional || option.required) { - // when --no-* we make sure default is true - if (false == option.bool) defaultValue = true; - // preassign only if we have a default - if (undefined !== defaultValue) self[name] = defaultValue; - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on(oname, function(val){ - // coercion - if (null != val && fn) val = fn(val); - - // unassigned or bool - if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { - // if no value, bool true, and we have a default, then use it! - if (null == val) { - self[name] = option.bool - ? defaultValue || true - : false; - } else { - self[name] = val; - } - } else if (null !== val) { - // reassign - self[name] = val; - } - }); - - return this; -}; - -/** - * Parse `argv`, settings options and invoking commands when defined. - * - * @param {Array} argv - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parse = function(argv){ - // implicit help - if (this.executables) this.addImplicitHelpCommand(); - - // store raw args - this.rawArgs = argv; - - // guess name - this._name = this._name || basename(argv[1]); - - // process argv - var parsed = this.parseOptions(this.normalize(argv.slice(2))); - var args = this.args = parsed.args; - - // executable sub-commands, skip .parseArgs() - if (this.executables) return this.executeSubCommand(argv, args, parsed.unknown); - - return this.parseArgs(this.args, parsed.unknown); -}; - -/** - * Execute a sub-command executable. - * - * @param {Array} argv - * @param {Array} args - * @param {Array} unknown - * @api private - */ - -Command.prototype.executeSubCommand = function(argv, args, unknown) { - args = args.concat(unknown); - - if (!args.length) this.help(); - if ('help' == args[0] && 1 == args.length) this.help(); - - // --help - if ('help' == args[0]) { - args[0] = args[1]; - args[1] = '--help'; - } - - // executable - var dir = dirname(argv[1]); - var bin = basename(argv[1]) + '-' + args[0]; - - // check for ./ first - var local = path.join(dir, bin); - if (exists(local)) bin = local; - - // run it - args = args.slice(1); - var proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] }); - proc.on('exit', function(code){ - if (code == 127) { - console.error('\n %s(1) does not exist\n', bin); - } - }); -}; - -/** - * Normalize `args`, splitting joined short flags. For example - * the arg "-abc" is equivalent to "-a -b -c". - * This also normalizes equal sign and splits "--abc=def" into "--abc def". - * - * @param {Array} args - * @return {Array} - * @api private - */ - -Command.prototype.normalize = function(args){ - var ret = [] - , arg - , index; - - for (var i = 0, len = args.length; i < len; ++i) { - arg = args[i]; - if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { - arg.slice(1).split('').forEach(function(c){ - ret.push('-' + c); - }); - } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { - ret.push(arg.slice(0, index), arg.slice(index + 1)); - } else { - ret.push(arg); - } - } - - return ret; -}; - -/** - * Parse command `args`. - * - * When listener(s) are available those - * callbacks are invoked, otherwise the "*" - * event is emitted and those actions are invoked. - * - * @param {Array} args - * @return {Command} for chaining - * @api private - */ - -Command.prototype.parseArgs = function(args, unknown){ - var cmds = this.commands - , len = cmds.length - , name; - - if (args.length) { - name = args[0]; - if (this.listeners(name).length) { - this.emit(args.shift(), args, unknown); - } else { - this.emit('*', args); - } - } else { - outputHelpIfNecessary(this, unknown); - - // If there were no args and we have unknown options, - // then they are extraneous and we need to error. - if (unknown.length > 0) { - this.unknownOption(unknown[0]); - } - } - - return this; -}; - -/** - * Return an option matching `arg` if any. - * - * @param {String} arg - * @return {Option} - * @api private - */ - -Command.prototype.optionFor = function(arg){ - for (var i = 0, len = this.options.length; i < len; ++i) { - if (this.options[i].is(arg)) { - return this.options[i]; - } - } -}; - -/** - * Parse options from `argv` returning `argv` - * void of these options. - * - * @param {Array} argv - * @return {Array} - * @api public - */ - -Command.prototype.parseOptions = function(argv){ - var args = [] - , len = argv.length - , literal - , option - , arg; - - var unknownOptions = []; - - // parse options - for (var i = 0; i < len; ++i) { - arg = argv[i]; - - // literal args after -- - if ('--' == arg) { - literal = true; - continue; - } - - if (literal) { - args.push(arg); - continue; - } - - // find matching Option - option = this.optionFor(arg); - - // option is defined - if (option) { - // requires arg - if (option.required) { - arg = argv[++i]; - if (null == arg) return this.optionMissingArgument(option); - if ('-' == arg[0]) return this.optionMissingArgument(option, arg); - this.emit(option.name(), arg); - // optional arg - } else if (option.optional) { - arg = argv[i+1]; - if (null == arg || '-' == arg[0]) { - arg = null; - } else { - ++i; - } - this.emit(option.name(), arg); - // bool - } else { - this.emit(option.name()); - } - continue; - } - - // looks like an option - if (arg.length > 1 && '-' == arg[0]) { - unknownOptions.push(arg); - - // If the next argument looks like it might be - // an argument for this option, we pass it on. - // If it isn't, then it'll simply be ignored - if (argv[i+1] && '-' != argv[i+1][0]) { - unknownOptions.push(argv[++i]); - } - continue; - } - - // arg - args.push(arg); - } - - return { args: args, unknown: unknownOptions }; -}; - -/** - * Argument `name` is missing. - * - * @param {String} name - * @api private - */ - -Command.prototype.missingArgument = function(name){ - console.error(); - console.error(" error: missing required argument `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {String} option - * @param {String} flag - * @api private - */ - -Command.prototype.optionMissingArgument = function(option, flag){ - console.error(); - if (flag) { - console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); - } else { - console.error(" error: option `%s' argument missing", option.flags); - } - console.error(); - process.exit(1); -}; - -/** - * Unknown option `flag`. - * - * @param {String} flag - * @api private - */ - -Command.prototype.unknownOption = function(flag){ - console.error(); - console.error(" error: unknown option `%s'", flag); - console.error(); - process.exit(1); -}; - - -/** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * @param {String} str - * @param {String} flags - * @return {Command} for chaining - * @api public - */ - -Command.prototype.version = function(str, flags){ - if (0 == arguments.length) return this._version; - this._version = str; - flags = flags || '-V, --version'; - this.option(flags, 'output the version number'); - this.on('version', function(){ - console.log(str); - process.exit(0); - }); - return this; -}; - -/** - * Set the description `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.description = function(str){ - if (0 == arguments.length) return this._description; - this._description = str; - return this; -}; - -/** - * Set / get the command usage `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.usage = function(str){ - var args = this._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }); - - var usage = '[options' - + (this.commands.length ? '] [command' : '') - + ']' - + (this._args.length ? ' ' + args : ''); - - if (0 == arguments.length) return this._usage || usage; - this._usage = str; - - return this; -}; - -/** - * Return the largest option length. - * - * @return {Number} - * @api private - */ - -Command.prototype.largestOptionLength = function(){ - return this.options.reduce(function(max, option){ - return Math.max(max, option.flags.length); - }, 0); -}; - -/** - * Return help for options. - * - * @return {String} - * @api private - */ - -Command.prototype.optionHelp = function(){ - var width = this.largestOptionLength(); - - // Prepend the help information - return [pad('-h, --help', width) + ' ' + 'output usage information'] - .concat(this.options.map(function(option){ - return pad(option.flags, width) - + ' ' + option.description; - })) - .join('\n'); -}; - -/** - * Return command help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.commandHelp = function(){ - if (!this.commands.length) return ''; - return [ - '' - , ' Commands:' - , '' - , this.commands.map(function(cmd){ - var args = cmd._args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }).join(' '); - - return pad(cmd._name - + (cmd.options.length - ? ' [options]' - : '') + ' ' + args, 22) - + (cmd.description() - ? ' ' + cmd.description() - : ''); - }).join('\n').replace(/^/gm, ' ') - , '' - ].join('\n'); -}; - -/** - * Return program help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.helpInformation = function(){ - return [ - '' - , ' Usage: ' + this._name + ' ' + this.usage() - , '' + this.commandHelp() - , ' Options:' - , '' - , '' + this.optionHelp().replace(/^/gm, ' ') - , '' - , '' - ].join('\n'); -}; - -/** - * Prompt for a `Number`. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptForNumber = function(str, fn){ - var self = this; - this.promptSingleLine(str, function parseNumber(val){ - val = Number(val); - if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber); - fn(val); - }); -}; - -/** - * Prompt for a `Date`. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptForDate = function(str, fn){ - var self = this; - this.promptSingleLine(str, function parseDate(val){ - val = new Date(val); - if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate); - fn(val); - }); -}; - -/** - * Single-line prompt. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptSingleLine = function(str, fn){ - if ('function' == typeof arguments[2]) { - return this['promptFor' + (fn.name || fn)](str, arguments[2]); - } - - process.stdout.write(str); - process.stdin.setEncoding('utf8'); - process.stdin.once('data', function(val){ - fn(val.trim()); - }).resume(); -}; - -/** - * Multi-line prompt. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptMultiLine = function(str, fn){ - var buf = []; - console.log(str); - process.stdin.setEncoding('utf8'); - process.stdin.on('data', function(val){ - if ('\n' == val || '\r\n' == val) { - process.stdin.removeAllListeners('data'); - fn(buf.join('\n')); - } else { - buf.push(val.trimRight()); - } - }).resume(); -}; - -/** - * Prompt `str` and callback `fn(val)` - * - * Commander supports single-line and multi-line prompts. - * To issue a single-line prompt simply add white-space - * to the end of `str`, something like "name: ", whereas - * for a multi-line prompt omit this "description:". - * - * - * Examples: - * - * program.prompt('Username: ', function(name){ - * console.log('hi %s', name); - * }); - * - * program.prompt('Description:', function(desc){ - * console.log('description was "%s"', desc.trim()); - * }); - * - * @param {String|Object} str - * @param {Function} fn - * @api public - */ - -Command.prototype.prompt = function(str, fn){ - var self = this; - - if ('string' == typeof str) { - if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments); - this.promptMultiLine(str, fn); - } else { - var keys = Object.keys(str) - , obj = {}; - - function next() { - var key = keys.shift() - , label = str[key]; - - if (!key) return fn(obj); - self.prompt(label, function(val){ - obj[key] = val; - next(); - }); - } - - next(); - } -}; - -/** - * Prompt for password with `str`, `mask` char and callback `fn(val)`. - * - * The mask string defaults to '', aka no output is - * written while typing, you may want to use "*" etc. - * - * Examples: - * - * program.password('Password: ', function(pass){ - * console.log('got "%s"', pass); - * process.stdin.destroy(); - * }); - * - * program.password('Password: ', '*', function(pass){ - * console.log('got "%s"', pass); - * process.stdin.destroy(); - * }); - * - * @param {String} str - * @param {String} mask - * @param {Function} fn - * @api public - */ - -Command.prototype.password = function(str, mask, fn){ - var self = this - , buf = ''; - - // default mask - if ('function' == typeof mask) { - fn = mask; - mask = ''; - } - - keypress(process.stdin); - - function setRawMode(mode) { - if (process.stdin.setRawMode) { - process.stdin.setRawMode(mode); - } else { - tty.setRawMode(mode); - } - }; - setRawMode(true); - process.stdout.write(str); - - // keypress - process.stdin.on('keypress', function(c, key){ - if (key && 'enter' == key.name) { - console.log(); - process.stdin.pause(); - process.stdin.removeAllListeners('keypress'); - setRawMode(false); - if (!buf.trim().length) return self.password(str, mask, fn); - fn(buf); - return; - } - - if (key && key.ctrl && 'c' == key.name) { - console.log('%s', buf); - process.exit(); - } - - process.stdout.write(mask); - buf += c; - }).resume(); -}; - -/** - * Confirmation prompt with `str` and callback `fn(bool)` - * - * Examples: - * - * program.confirm('continue? ', function(ok){ - * console.log(' got %j', ok); - * process.stdin.destroy(); - * }); - * - * @param {String} str - * @param {Function} fn - * @api public - */ - - -Command.prototype.confirm = function(str, fn, verbose){ - var self = this; - this.prompt(str, function(ok){ - if (!ok.trim()) { - if (!verbose) str += '(yes or no) '; - return self.confirm(str, fn, true); - } - fn(parseBool(ok)); - }); -}; - -/** - * Choice prompt with `list` of items and callback `fn(index, item)` - * - * Examples: - * - * var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; - * - * console.log('Choose the coolest pet:'); - * program.choose(list, function(i){ - * console.log('you chose %d "%s"', i, list[i]); - * process.stdin.destroy(); - * }); - * - * @param {Array} list - * @param {Number|Function} index or fn - * @param {Function} fn - * @api public - */ - -Command.prototype.choose = function(list, index, fn){ - var self = this - , hasDefault = 'number' == typeof index; - - if (!hasDefault) { - fn = index; - index = null; - } - - list.forEach(function(item, i){ - if (hasDefault && i == index) { - console.log('* %d) %s', i + 1, item); - } else { - console.log(' %d) %s', i + 1, item); - } - }); - - function again() { - self.prompt(' : ', function(val){ - val = parseInt(val, 10) - 1; - if (hasDefault && isNaN(val)) val = index; - - if (null == list[val]) { - again(); - } else { - fn(val, list[val]); - } - }); - } - - again(); -}; - - -/** - * Output help information for this command - * - * @api public - */ - -Command.prototype.outputHelp = function(){ - process.stdout.write(this.helpInformation()); - this.emit('--help'); -}; - -/** - * Output help information and exit. - * - * @api public - */ - -Command.prototype.help = function(){ - this.outputHelp(); - process.exit(); -}; - -/** - * Camel-case the given `flag` - * - * @param {String} flag - * @return {String} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce(function(str, word){ - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Parse a boolean `str`. - * - * @param {String} str - * @return {Boolean} - * @api private - */ - -function parseBool(str) { - return /^y|yes|ok|true$/i.test(str); -} - -/** - * Pad `str` to `width`. - * - * @param {String} str - * @param {Number} width - * @return {String} - * @api private - */ - -function pad(str, width) { - var len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Output help information if necessary - * - * @param {Command} command to output help for - * @param {Array} array of options to search for -h or --help - * @api private - */ - -function outputHelpIfNecessary(cmd, options) { - options = options || []; - for (var i = 0; i < options.length; i++) { - if (options[i] == '--help' || options[i] == '-h') { - cmd.outputHelp(); - process.exit(0); - } - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md deleted file mode 100644 index a768e8f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/README.md +++ /dev/null @@ -1,101 +0,0 @@ -keypress -======== -### Make any Node ReadableStream emit "keypress" events - - -Previous to Node `v0.8.x`, there was an undocumented `"keypress"` event that -`process.stdin` would emit when it was a TTY. Some people discovered this hidden -gem, and started using it in their own code. - -Now in Node `v0.8.x`, this `"keypress"` event does not get emitted by default, -but rather only when it is being used in conjuction with the `readline` (or by -extension, the `repl`) module. - -This module is the exact logic from the node `v0.8.x` releases ripped out into its -own module. - -__Bonus:__ Now with mouse support! - -Installation ------------- - -Install with `npm`: - -``` bash -$ npm install keypress -``` - -Or add it to the `"dependencies"` section of your _package.json_ file. - - -Example -------- - -#### Listening for "keypress" events - -``` js -var keypress = require('keypress'); - -// make `process.stdin` begin emitting "keypress" events -keypress(process.stdin); - -// listen for the "keypress" event -process.stdin.on('keypress', function (ch, key) { - console.log('got "keypress"', key); - if (key && key.ctrl && key.name == 'c') { - process.stdin.pause(); - } -}); - -process.stdin.setRawMode(true); -process.stdin.resume(); -``` - -#### Listening for "mousepress" events - -``` js -var keypress = require('keypress'); - -// make `process.stdin` begin emitting "mousepress" (and "keypress") events -keypress(process.stdin); - -// you must enable the mouse events before they will begin firing -keypress.enableMouse(process.stdout); - -process.stdin.on('mousepress', function (info) { - console.log('got "mousepress" event at %d x %d', info.x, info.y); -}); - -process.on('exit', function () { - // disable mouse on exit, so that the state - // is back to normal for the terminal - keypress.disableMouse(process.stdout); -}); -``` - - -License -------- - -(The MIT License) - -Copyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js deleted file mode 100644 index c2ba488..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/index.js +++ /dev/null @@ -1,346 +0,0 @@ - -/** - * This module offers the internal "keypress" functionality from node-core's - * `readline` module, for your own programs and modules to use. - * - * Usage: - * - * require('keypress')(process.stdin); - * - * process.stdin.on('keypress', function (ch, key) { - * console.log(ch, key); - * if (key.ctrl && key.name == 'c') { - * process.stdin.pause(); - * } - * }); - * proces.stdin.resume(); - */ -var exports = module.exports = keypress; - -exports.enableMouse = function (stream) { - stream.write('\x1b' +'[?1000h') -} - -exports.disableMouse = function (stream) { - stream.write('\x1b' +'[?1000l') -} - - -/** - * accepts a readable Stream instance and makes it emit "keypress" events - */ - -function keypress(stream) { - if (isEmittingKeypress(stream)) return; - stream._emitKeypress = true; - - function onData(b) { - if (stream.listeners('keypress').length > 0) { - emitKey(stream, b); - } else { - // Nobody's watching anyway - stream.removeListener('data', onData); - stream.on('newListener', onNewListener); - } - } - - function onNewListener(event) { - if (event == 'keypress') { - stream.on('data', onData); - stream.removeListener('newListener', onNewListener); - } - } - - if (stream.listeners('keypress').length > 0) { - stream.on('data', onData); - } else { - stream.on('newListener', onNewListener); - } -} - -/** - * Returns `true` if the stream is already emitting "keypress" events. - * `false` otherwise. - */ - -function isEmittingKeypress(stream) { - var rtn = stream._emitKeypress; - if (!rtn) { - // hack: check for the v0.6.x "data" event - stream.listeners('data').forEach(function (l) { - if (l.name == 'onData' && /emitKey/.test(l.toString())) { - rtn = true; - stream._emitKeypress = true; - } - }); - } - if (!rtn) { - // hack: check for the v0.6.x "newListener" event - stream.listeners('newListener').forEach(function (l) { - if (l.name == 'onNewListener' && /keypress/.test(l.toString())) { - rtn = true; - stream._emitKeypress = true; - } - }); - } - return rtn; -} - - -/* - Some patterns seen in terminal key escape codes, derived from combos seen - at http://www.midnight-commander.org/browser/lib/tty/key.c - - ESC letter - ESC [ letter - ESC [ modifier letter - ESC [ 1 ; modifier letter - ESC [ num char - ESC [ num ; modifier char - ESC O letter - ESC O modifier letter - ESC O 1 ; modifier letter - ESC N letter - ESC [ [ num ; modifier char - ESC [ [ 1 ; modifier letter - ESC ESC [ num char - ESC ESC O letter - - - char is usually ~ but $ and ^ also happen with rxvt - - modifier is 1 + - (shift * 1) + - (left_alt * 2) + - (ctrl * 4) + - (right_alt * 8) - - two leading ESCs apparently mean the same as one leading ESC -*/ - -// Regexes used for ansi escape code splitting -var metaKeyCodeRe = /^(?:\x1b)([a-zA-Z0-9])$/; -var functionKeyCodeRe = - /^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/; - -function emitKey(stream, s) { - var ch, - key = { - name: undefined, - ctrl: false, - meta: false, - shift: false - }, - parts; - - if (Buffer.isBuffer(s)) { - if (s[0] > 127 && s[1] === undefined) { - s[0] -= 128; - s = '\x1b' + s.toString(stream.encoding || 'utf-8'); - } else { - s = s.toString(stream.encoding || 'utf-8'); - } - } - - key.sequence = s; - - if (s === '\r' || s === '\n') { - // enter - key.name = 'enter'; - - } else if (s === '\t') { - // tab - key.name = 'tab'; - - } else if (s === '\b' || s === '\x7f' || - s === '\x1b\x7f' || s === '\x1b\b') { - // backspace or ctrl+h - key.name = 'backspace'; - key.meta = (s.charAt(0) === '\x1b'); - - } else if (s === '\x1b' || s === '\x1b\x1b') { - // escape key - key.name = 'escape'; - key.meta = (s.length === 2); - - } else if (s === ' ' || s === '\x1b ') { - key.name = 'space'; - key.meta = (s.length === 2); - - } else if (s <= '\x1a') { - // ctrl+letter - key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1); - key.ctrl = true; - - } else if (s.length === 1 && s >= 'a' && s <= 'z') { - // lowercase letter - key.name = s; - - } else if (s.length === 1 && s >= 'A' && s <= 'Z') { - // shift+letter - key.name = s.toLowerCase(); - key.shift = true; - - } else if (parts = metaKeyCodeRe.exec(s)) { - // meta+character key - key.name = parts[1].toLowerCase(); - key.meta = true; - key.shift = /^[A-Z]$/.test(parts[1]); - - } else if (parts = functionKeyCodeRe.exec(s)) { - // ansi escape sequence - - // reassemble the key code leaving out leading \x1b's, - // the modifier key bitflag and any meaningless "1;" sequence - var code = (parts[1] || '') + (parts[2] || '') + - (parts[4] || '') + (parts[6] || ''), - modifier = (parts[3] || parts[5] || 1) - 1; - - // Parse the key modifier - key.ctrl = !!(modifier & 4); - key.meta = !!(modifier & 10); - key.shift = !!(modifier & 1); - key.code = code; - - // Parse the key itself - switch (code) { - /* xterm/gnome ESC O letter */ - case 'OP': key.name = 'f1'; break; - case 'OQ': key.name = 'f2'; break; - case 'OR': key.name = 'f3'; break; - case 'OS': key.name = 'f4'; break; - - /* xterm/rxvt ESC [ number ~ */ - case '[11~': key.name = 'f1'; break; - case '[12~': key.name = 'f2'; break; - case '[13~': key.name = 'f3'; break; - case '[14~': key.name = 'f4'; break; - - /* from Cygwin and used in libuv */ - case '[[A': key.name = 'f1'; break; - case '[[B': key.name = 'f2'; break; - case '[[C': key.name = 'f3'; break; - case '[[D': key.name = 'f4'; break; - case '[[E': key.name = 'f5'; break; - - /* common */ - case '[15~': key.name = 'f5'; break; - case '[17~': key.name = 'f6'; break; - case '[18~': key.name = 'f7'; break; - case '[19~': key.name = 'f8'; break; - case '[20~': key.name = 'f9'; break; - case '[21~': key.name = 'f10'; break; - case '[23~': key.name = 'f11'; break; - case '[24~': key.name = 'f12'; break; - - /* xterm ESC [ letter */ - case '[A': key.name = 'up'; break; - case '[B': key.name = 'down'; break; - case '[C': key.name = 'right'; break; - case '[D': key.name = 'left'; break; - case '[E': key.name = 'clear'; break; - case '[F': key.name = 'end'; break; - case '[H': key.name = 'home'; break; - - /* xterm/gnome ESC O letter */ - case 'OA': key.name = 'up'; break; - case 'OB': key.name = 'down'; break; - case 'OC': key.name = 'right'; break; - case 'OD': key.name = 'left'; break; - case 'OE': key.name = 'clear'; break; - case 'OF': key.name = 'end'; break; - case 'OH': key.name = 'home'; break; - - /* xterm/rxvt ESC [ number ~ */ - case '[1~': key.name = 'home'; break; - case '[2~': key.name = 'insert'; break; - case '[3~': key.name = 'delete'; break; - case '[4~': key.name = 'end'; break; - case '[5~': key.name = 'pageup'; break; - case '[6~': key.name = 'pagedown'; break; - - /* putty */ - case '[[5~': key.name = 'pageup'; break; - case '[[6~': key.name = 'pagedown'; break; - - /* rxvt */ - case '[7~': key.name = 'home'; break; - case '[8~': key.name = 'end'; break; - - /* rxvt keys with modifiers */ - case '[a': key.name = 'up'; key.shift = true; break; - case '[b': key.name = 'down'; key.shift = true; break; - case '[c': key.name = 'right'; key.shift = true; break; - case '[d': key.name = 'left'; key.shift = true; break; - case '[e': key.name = 'clear'; key.shift = true; break; - - case '[2$': key.name = 'insert'; key.shift = true; break; - case '[3$': key.name = 'delete'; key.shift = true; break; - case '[5$': key.name = 'pageup'; key.shift = true; break; - case '[6$': key.name = 'pagedown'; key.shift = true; break; - case '[7$': key.name = 'home'; key.shift = true; break; - case '[8$': key.name = 'end'; key.shift = true; break; - - case 'Oa': key.name = 'up'; key.ctrl = true; break; - case 'Ob': key.name = 'down'; key.ctrl = true; break; - case 'Oc': key.name = 'right'; key.ctrl = true; break; - case 'Od': key.name = 'left'; key.ctrl = true; break; - case 'Oe': key.name = 'clear'; key.ctrl = true; break; - - case '[2^': key.name = 'insert'; key.ctrl = true; break; - case '[3^': key.name = 'delete'; key.ctrl = true; break; - case '[5^': key.name = 'pageup'; key.ctrl = true; break; - case '[6^': key.name = 'pagedown'; key.ctrl = true; break; - case '[7^': key.name = 'home'; key.ctrl = true; break; - case '[8^': key.name = 'end'; key.ctrl = true; break; - - /* misc. */ - case '[Z': key.name = 'tab'; key.shift = true; break; - default: key.name = 'undefined'; break; - - } - } else if (s.length > 1 && s[0] !== '\x1b') { - // Got a longer-than-one string of characters. - // Probably a paste, since it wasn't a control sequence. - Array.prototype.forEach.call(s, function(c) { - emitKey(stream, c); - }); - return; - } - - if (key.code == '[M') { - key.name = 'mouse'; - var s = key.sequence; - var b = s.charCodeAt(3); - key.x = s.charCodeAt(4) - 040; - key.y = s.charCodeAt(5) - 040; - - key.scroll = 0; - - key.ctrl = !!(1<<4 & b); - key.meta = !!(1<<3 & b); - key.shift = !!(1<<2 & b); - - key.release = (3 & b) === 3; - - if (1<<6 & b) { //scroll - key.scroll = 1 & b ? 1 : -1; - } - - if (!key.release && !key.scroll) { - key.button = b & 3; - } - } - - // Don't emit a key if no name was found - if (key.name === undefined) { - key = undefined; - } - - if (s.length === 1) { - ch = s; - } - - if (key && key.name == 'mouse') { - stream.emit('mousepress', key) - } else if (key || ch) { - stream.emit('keypress', ch, key); - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json deleted file mode 100644 index 17ac668..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "keypress", - "version": "0.1.0", - "description": "Make any Node ReadableStream emit \"keypress\" events", - "author": { - "name": "Nathan Rajlich", - "email": "nathan@tootallnate.net", - "url": "http://tootallnate.net" - }, - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git://github.com/TooTallNate/keypress.git" - }, - "keywords": [ - "keypress", - "readline", - "core" - ], - "license": "MIT", - "readme": "keypress\n========\n### Make any Node ReadableStream emit \"keypress\" events\n\n\nPrevious to Node `v0.8.x`, there was an undocumented `\"keypress\"` event that\n`process.stdin` would emit when it was a TTY. Some people discovered this hidden\ngem, and started using it in their own code.\n\nNow in Node `v0.8.x`, this `\"keypress\"` event does not get emitted by default,\nbut rather only when it is being used in conjuction with the `readline` (or by\nextension, the `repl`) module.\n\nThis module is the exact logic from the node `v0.8.x` releases ripped out into its\nown module.\n\n__Bonus:__ Now with mouse support!\n\nInstallation\n------------\n\nInstall with `npm`:\n\n``` bash\n$ npm install keypress\n```\n\nOr add it to the `\"dependencies\"` section of your _package.json_ file.\n\n\nExample\n-------\n\n#### Listening for \"keypress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"keypress\" events\nkeypress(process.stdin);\n\n// listen for the \"keypress\" event\nprocess.stdin.on('keypress', function (ch, key) {\n console.log('got \"keypress\"', key);\n if (key && key.ctrl && key.name == 'c') {\n process.stdin.pause();\n }\n});\n\nprocess.stdin.setRawMode(true);\nprocess.stdin.resume();\n```\n\n#### Listening for \"mousepress\" events\n\n``` js\nvar keypress = require('keypress');\n\n// make `process.stdin` begin emitting \"mousepress\" (and \"keypress\") events\nkeypress(process.stdin);\n\n// you must enable the mouse events before they will begin firing\nkeypress.enableMouse(process.stdout);\n\nprocess.stdin.on('mousepress', function (info) {\n console.log('got \"mousepress\" event at %d x %d', info.x, info.y);\n});\n\nprocess.on('exit', function () {\n // disable mouse on exit, so that the state\n // is back to normal for the terminal\n keypress.disableMouse(process.stdout);\n});\n```\n\n\nLicense\n-------\n\n(The MIT License)\n\nCopyright (c) 2012 Nathan Rajlich <nathan@tootallnate.net>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/TooTallNate/keypress/issues" - }, - "_id": "keypress@0.1.0", - "_from": "keypress@0.1.x" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js deleted file mode 100644 index c3f61d7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/node_modules/keypress/test.js +++ /dev/null @@ -1,28 +0,0 @@ - -var keypress = require('./') -keypress(process.stdin) - -if (process.stdin.setRawMode) - process.stdin.setRawMode(true) -else - require('tty').setRawMode(true) - -process.stdin.on('keypress', function (c, key) { - console.log(0, c, key) - if (key && key.ctrl && key.name == 'c') { - process.stdin.pause() - } -}) -process.stdin.on('mousepress', function (mouse) { - console.log(mouse) -}) - -keypress.enableMouse(process.stdout) -process.on('exit', function () { - //disable mouse on exit, so that the state is back to normal - //for the terminal. - keypress.disableMouse(process.stdout) -}) - -process.stdin.resume() - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json deleted file mode 100644 index ecb79aa..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/commander/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "commander", - "version": "1.1.1", - "description": "the complete solution for node.js command-line programs", - "keywords": [ - "command", - "option", - "parser", - "prompt", - "stdin" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "repository": { - "type": "git", - "url": "https://github.com/visionmedia/commander.js.git" - }, - "dependencies": { - "keypress": "0.1.x" - }, - "devDependencies": { - "should": ">= 0.0.1" - }, - "scripts": { - "test": "make test" - }, - "main": "index", - "engines": { - "node": ">= 0.6.x" - }, - "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## .outputHelp()\n\n Output help information without exiting.\n\n## .help()\n\n Output help information and exit immediately.\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "_id": "commander@1.1.1", - "_from": "commander@1.1.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c34..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml deleted file mode 100644 index 84fd7ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1ae..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e692421..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js deleted file mode 100644 index fda6de8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/index.js +++ /dev/null @@ -1,82 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, mode, f, made) { - if (typeof mode === 'function' || mode === undefined) { - f = mode; - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - var cb = f || function () {}; - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - fs.mkdir(p, mode, function (er) { - if (!er) { - made = made || p; - return cb(null, made); - } - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), mode, function (er, made) { - if (er) cb(er, made); - else mkdirP(p, mode, cb, made); - }); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - fs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original error be the failure reason. - if (er2 || !stat.isDirectory()) cb(er, made) - else cb(null, made); - }); - break; - } - }); -} - -mkdirP.sync = function sync (p, mode, made) { - if (mode === undefined) { - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - try { - fs.mkdirSync(p, mode); - made = made || p; - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - made = sync(path.dirname(p), mode, made); - sync(p, mode, made); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - var stat; - try { - stat = fs.statSync(p); - } - catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - - return made; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json deleted file mode 100644 index bd9194b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "mkdirp", - "description": "Recursively mkdir, like `mkdir -p`", - "version": "0.3.5", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "main": "./index", - "keywords": [ - "mkdir", - "directory" - ], - "repository": { - "type": "git", - "url": "http://github.com/substack/node-mkdirp.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "~0.4.0" - }, - "license": "MIT", - "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, - "_id": "mkdirp@0.3.5", - "_from": "mkdirp@0.3.x" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown deleted file mode 100644 index 83b0216..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/readme.markdown +++ /dev/null @@ -1,63 +0,0 @@ -# mkdirp - -Like `mkdir -p`, but in node.js! - -[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) - -# example - -## pow.js - -```js -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); -``` - -Output - -``` -pow! -``` - -And now /tmp/foo/bar/baz exists, huzzah! - -# methods - -```js -var mkdirp = require('mkdirp'); -``` - -## mkdirp(dir, mode, cb) - -Create a new directory and any necessary subdirectories at `dir` with octal -permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -`cb(err, made)` fires with the error or the first directory `made` -that had to be created, if any. - -## mkdirp.sync(dir, mode) - -Synchronously create a new directory and any necessary subdirectories at `dir` -with octal permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -Returns the first directory that had to be created, if any. - -# install - -With [npm](http://npmjs.org) do: - -``` -npm install mkdirp -``` - -# license - -MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb7099..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f60..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a0447..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 7985824..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, '/tmp/' + x); - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, null); - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - // Note that this will throw on failure, which will fail the test. - var made = mkdirp.sync(file); - t.equal(made, '/tmp/' + x); - - // making the same file again should have no effect. - made = mkdirp.sync(file); - t.equal(made, null); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('root', function (t) { - // '/' on unix, 'c:/' on windows. - var file = path.resolve('/'); - - mkdirp(file, 0755, function (err) { - if (err) throw err - fs.stat(file, function (er, stat) { - if (er) throw er - t.ok(stat.isDirectory(), 'target is a directory'); - t.end(); - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 7530cad..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file, 0755); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 35bd5cb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, (0777 & (~process.umask()))); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore deleted file mode 100644 index 28f1ba7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.DS_Store \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml deleted file mode 100644 index 4a83e22..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.11" - - "0.10" - - "0.8" diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE deleted file mode 100644 index 417af37..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2013, Sam Saccone -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md deleted file mode 100644 index 370bb9b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/README.md +++ /dev/null @@ -1,67 +0,0 @@ -[![Build Status](https://travis-ci.org/samccone/monocle.png?branch=master)](https://travis-ci.org/samccone/monocle) - -# Monocle -- a tool for watching things - -[![logo](https://raw.github.com/samccone/monocle/master/logo.png)](https://raw.github.com/samccone/monocle/master/logo.png) - -Have you ever wanted to watch a folder and all of its files/nested folders for changes. well now you can! - -## Installation - -``` -npm install monocle -``` - -## Usage - -### Watch a directory: - -```js -var monocle = require('monocle')() -monocle.watchDirectory({ - root: , - fileFilter: , - directoryFilter: , - listener: fn(fs.stat+ object), //triggered on file change / addition - complete: //file watching all set up -}); -``` - -The listener will recive an object with the following - -```js - name: , - path: , - fullPath: , - parentDir: , - fullParentDir: , - stat: -``` - -[fs.stats](http://nodejs.org/api/fs.html#fs_class_fs_stats) - -When a new file is added to the directoy it triggers a file change and thus will be passed to your specified listener. - -The two filters are passed through to `readdirp`. More documentation can be found [here](https://github.com/thlorenz/readdirp#filters) - -### Watch a list of files: - -```js -Monocle.watchFiles({ - files: [], //path of file(s) - listener: , //triggered on file / addition - complete: //file watching all set up -}); -``` - -## Why not just use fs.watch ? - - - file watching is really bad cross platforms in node - - you need to be smart when using fs.watch as compared to fs.watchFile - - Monocle takes care of this logic for you! - - windows systems use fs.watch - - osx and linux uses fs.watchFile - -## License - -BSD diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/logo.png b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/logo.png deleted file mode 100644 index 39d665f755e7eb063b4bd77e5d5a68ebe199091d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25575 zcmc$F^;cC-*zch`MM7FaM7q06K0|bKd z=Jgv2lAMYUfgsCSh>FU~o7+0tI+)wqk$n~wCA0f(YieO-0)eh7U z$b|a-ma$cQi%6y@67Gu=LrqJLgee_Lo;Ckgp&d(H9G0*zGZZE&$~WSz0v&1?@*Khz zd3IDlPH5P`!@5V#x0$A!o#E%2S%KY>i?r%dgf>Lfcqvu|c3;#&5fZGmfZnd2^(_V= zKV(Wf2qt2+F}cGN1r+4gn~(3)`!<9Y2$bt23L>QKOG+CPQOFC%fk=`zly4wZn_~=@ z45BX%M94i#Bo87a0p**PNUa3PgoWr28X0av5Htp)zA2 zWN%DD#USRqkdjf=FmZ@F69mUpri&XgM-O58tY#_&si=drjbNfwK@d?PObVevA0e?M0$G!H8lnjnvu_VpKv$~pbe6R z7&_dN2w42sFxD=HAdt+Mw_vmvPp%{AWg{aTQMKrL^ari*FYgTvH=nmhi|vFUkab7z z@n<^5>UX}p@V?g1*;FU6=DH}EPB-DERTx4wkj(uBwF|q~xe?F$SwBC&y|pzb-6f)B zFreo3Y}TRIruJlY=gs$cbG6p8LFvb$<0lDwyVfyuDVs|)`U@%0aA_x6^05x(<&k*u zeb;BhdUaZyO$BWGD6!;-3zppXKSX|g?53J{G2U3Edw>yGWrtK)3P5?p&==?!!CcFH zz*Ki^+qi*1&Kqspr)Usie9Z&aM_pb{1)n4{sUW_lpMTjyAi83d49Wx5g1unziDmlH zRtOVbw&T;a!4tK^Ew!UO>T?8&P>J9AhC`K(v>sZ4V!Twabc$p{G-%l8X*0)@ZQueFayxz=cEeAh$z{x7LYiRU;-67KD>`D zkok|g0qd>{-;jklL|uxGVg@_<4I`#UsAv}_CH4dI z@Fs~Y!YVn*ipvFA%2@2tnj)oHwTk5mAq8*PoRYbR18_gf4J(D{5GIB)QpB81s?(5jKBrIJW)1}U^1MbSDA^E`7m)e z2_wl?MV+>m*7I%50CJpk9CaKaEu(T_QC`tX5sJ!%%Aj&|p{|lwnS=_f(q*8lAG8a-x3}GAs2qn|jDlj0mb->BzsK6$d-{ zv3F5d4$pf!(>5kP5jTeO7Zql4i?T|ys#Pmq{5BOt*i5v)O?CW=v`dqpaN!-cf^+(D z<0D}nn`}L^iT1am_=I@%VyR+5eNlb6i^-Y(x&0leA-n}RCVti75vcAv1l0;R9 zuSTVWUql_j=j&#-x8);d>|H!l5Y_1v63sP;Ge}qujHw^z%bAvll)#9v=+WM!+_dho z?#ZEsrzWSC`Eu~(Bw6uGecs1BURhq*-r=F)?BSUt_7r~RS(e?D-IUps)jEAmS53Ow zg4(|(pR2Ys^E6Isn{0wKxixatRWx;~B}&susb(5W8}qU9>%Yc+El!^?>#R7d?XNAY zBdFM(gI_GGwXXFtFf+t6tLrZ7Jc(_N^=j~neBwty3zmV7WkgADX_`Mxx%udp*O_YR@YZIDA#G5t{1c_ z>O=8j{NnyH4$1eWf--~o;V0~;1^saA?n&MnCCIaAa$PllEF6(pFZ@NgoDFOZf;|kT8bj0SY3iS?WQe#KXv;WktXftdk1s+t z(l$^wJ@674`*iHwvPL>CgYt0;8L;Vi;)P^GzjFQlCyYs3fEz(|{>FtW3fZlLxWnu{ z<2c87=$xoFEy>q&DcUdYzm8&>*xe|*S##;O>jOU&{%n#(lU+{XNyklgCbMSY=V@jR z_!aZhUZjZpOKh##f!U6!^I(ZdP}Os{O?Vw6NgP7|x9XoIa2oW;wIX?Y%9=E@vpuQcVs330#c^xjz9_z@dGit2X z7~BV^5emHh5mtt?h?nrzXO3pcb(=86cAzzB>Gywy#a;Erqoxz4`#UT2>00RVMF~3z z=r(Bc3;&_5s{VI;buGTgm@rJU*cebNTA$O(_qWL;zkg(yS5Wzn@}=^D=S9Nd^(gw?N8>7b<5_Ty z@F-bFm?U*3HX~-V6iGf$mPk=be$X=1YLFWe7@s*o#KL6`@UbVRWM(wX! zaygHl^?~C7-*fDwTyJA)V{%!&_P6>I_vRW8)0=(5bk33G%VxJT+?Sc@bZ-9T<_mY* zo9>&dRorFo?;oB<1{>#HKAe;`$u;R+3LOj2i!O&u3u-+t&7Cg!Shl%jUW_kE-oOV1 zj6TO)MPrDA+S#lvh%~{2e+wvsyp?NXCtGrSg z%YTR^h>d-Lg-N`4G-9P+1bCCoNJ{Yw1maEwf%pbMAa^g|_dW#T!~}sH=tCepi4X{$ z?JvD<2?#_3`?Hv^vg^W8nwzKc^xcc#&B}aizi|eoF$EzxrI0Tyla;^B+nO+$Pc}7{ zr8R$*uFSM*vX9kDQS`N}mrDmsi|H6>C@HO=u*rrfkGIWqB!E8AV{4|&ybFOIxr9fk;{;>ygcgN>qXnT zpx|KY!s&zm+S=L*6Lg%DEGP56z!4J@&u7!b|4c&k$4A0fz!7H&kTi7NO>;RoZGCxW zGYiVj&i*&s`dp)bcfKtVC(Vu~M3xjqhKP;Hm{(cJ{DGF%@=Sm5Q=IgY!ze$RoZyqA zikO%fpD#_-``4LG_ZwNaQ)c7j)cTsrl|{?QcoQQ;5sglLFwdO%h-Zpe~E zD?QT_qyg_qBm}KO^*UsVBLhT#`IYf; zgSkeR^3z~6!fco0g||hM`%FX_ekK~`HJXp-39TjfSLHs-Tox05+R9s>7pgq(&Ld*H zv;O>{d@#%Ka<-c((a3`QDhNY*9XClNdPq)TP0h5TwsuKDaj_CRC+8<*6ciW?QURi= z`FW(2VUG8l@zS}WVPPUJE}V`$%LUC$Zj`TU`R`ZW(F-SQYwMmgUYC2Hvu->E$tWVE zgX80%adX(w3tc0`A7Y@lH_E<%RYDpa6%_?jy6_&+A9jmKlL%eXOGhVdJ62BM$L(HD z^hQHN16R&CVo0ZODU7dlZpX6A>hix16h>tPSlB;)8&Zh=|4gAO7mpw6tmd;_ujkE_ zQc_ZKsbi5&H0RkA#?9GYugQ2{q^$03f4|d~e@6tycg6xW?)7k7_m*?j^I~abMYrgQ z9FvGB0z9wNvGeUgjd&BYSaEPiU4#XmU;uZkFV8nh1q&gge?G@nSTEK#C9#?X2N;4+ zhc$*)G^tci4i5{PTeNNEclfhG6AayJ9~vE9x9YZ=Hhp$>mRD89vMMKVM+vq@@Wr3? z|4K?qS{Pd&&+X*p$M_(~2a2E&YS+|0fy zD=Q;*GJQ0Q3eQ$wn3|euF&$36#SnaCnlP+%l@;f^T?;_-c{-6dM(c2drtUNqCL=>c@^y;NEPkNqbK?mz0q+d_>_Wp%RY;SG`952?9s{dymBiPB* zKQ)YKIK>RLhb=yi*oMCL*i~%izaRz~+JA{peSUc&7JPVz+Q~F=MoC7Uz8em ziHg<2e;>aO#?!~7rKK5N3$?emyPo%d7%Z#bNxr_lbuCn;jYPoY!5w`cwoz%+8+9e{ ze7kAU=zKikDuOc7*T-bD+VUhXB_#z9Aw8IcWj6e+RXP*3vt!!(MAlX+OmQsKPTyTOCe(|~Rkv1dOxSh*O>kwCtIxPf*p1A|w7R~fxLBq_ zvlI~>Jy;^=2NdREa6(y)IvrY2P|y+rsV8Q${bo;JJ2ffMM;2Dr$kvDDQ|SacjR`z_ ze0=w7qHeA%o$}d)ma7>p1IFgd37qPAzA~*EW!i2q(cve}H@dy^NbiyS@vkMf&l(zd zp1^|+Sam-v{Zmv#yI+7H6#k^ok#ghtuN@)C-rhcH(q<^yM=4LX(#hHR1XoAWtZorQ zSw+R9_33)Cmz9+_Z5g&add_$Re8D|$M*p_+NC2QdY!xBRe;%id(1oGz!J zJiAk2_a`pcXSV+R%O&aI@n91}7P<~TYuIDO>t@+Vv()+M;o1#jc42JnXY=>%0oAC@ z)bzdG-4E{~d-wxf*TYUuPL4na@qV$cTb?;MJr&$xB*w;m-*P_iDR+8$dfvJ5$(JTf zhh(L|@(cB3I)!A^R?GFmw{CFvSiPEwjMw?{G+h%D6GZoDWTEXS@S_)SJZTIM52vlG zt*@V#B+KD_f3+V{^6}%x{{Eq%BZuv+1U>Ki%lCpU%dhMIzyH{Flg!c!Bf`TS`nJ!R zZ&>2#wPu>V9P0;rah zV49klowkDYo&29>DVL2TJ}oWn_le2LVNq^wK0a->lwmi2vfs`wE@rm#Roi0&ai6qc zU|@P5yFIOO0!2K=d$A@)k#<(5;C%gm>4V%FRy(i z|LW)mHnu704PjSu2?dp9u0lhirQ?eI*OKY z8GY&Fy*M??aLF4=dg1p#DtC2vD<;t{K! zQ?JaHELD|*KmN6geh@{%zhDR21s%T4p9lTPJ|@(FzCNj=#X80hEG*x7d?7{fhW?p& zuvrb2m6f*34Nl{vV25vkwg_q~Rz1OB6(Sm1H|WS3=NB0-P5fYnqfO>rAvw5Kdns z3AO*$TaO}GcaNaxa0gdDl{c{zS5#o;)a}CMM>(xV)udzlYG)YGh~# z$Am@Wz})>E9`P6ak5CH5(}_GzMQ7P7txujl~F;|tn zBq@cH`)y39&@eD(Z7>+h{Gi*HzES47^eqU`=M0S^$*tU%Y=~1aN{Jpp=hs|Jd`4Hr`Y5#p6`@@A z%RW^Mj%lK9^;vSDZq+-asfiDWaSDqkF7s6;!Cz81h|v%c6Hykl0`c=hvt1vz`eT=0 z(NIaV$IX4zlozNkm0(eqz1A3(PoD-4HaFiuks0vKca%b7zk3(Pd)idJ6R%}s@l{49 zKqM;^22)^6t!~*yaB618GfE6oLHay$tzJI+> zXYilkfB*hLf(<6VVq~~()_o?1l_8|NqQ2bvICecx>G-mS_2#Jwl1L|HgkYBqKj(%& zr-R7mV$Y-%gth$p&=6ErgNN(m2V6RJOrDjN2E=|@~k1gxLgqKiIP_cZu!x*21Y+CMiuJhB~i}={t<6`=a$N#NN%cFzT1y%X3rj(BVyWwG88ixTj1)x7vkDHULCoq-|K2KM(!Y2`k7|6&S zfEB8F9+uWQM@%*cN$3i_!iP;THFcMl$h4+?s+XUHy96 zB3|S5KQEK~9$D7(7JYSsgc1xcKP=?SCK;|axn1}HK43Q%MsM3i9%lGiODlzelXKP< zENg>R?+5EHDfsKOv%pvImm~NvKN=B$s*(5?`uj`;WV72t?QmSp4z;&z$TuhU7i)u% z3+caU-L=@XwsGk;eLnVa0ZmaY)K2}^F8EqS%pDya`Fy2{;*h?CcN-Qm(9szSJY7x} z&}-F-IXOACn^s5eec_H0_4I6dsvZ^KO-xTe>17&nv@L^`C{zx+S@rQb27T?o%hQv= zukPzFlo^TwcV)kwR=J!OZZ=n_0$UgklML+GiF>6EmgG0bEJ>(0%PxAI;fyWnrQ_y1 zzEx~;i6qFGRdscBSK#7553oY82L}he+}+(J_#}RqXu!h4uGO_ZS$7wy6es)p`x`=a zDaJu$b#!!`!Ocgg5q2r21&B^E`02+e#@a>y#Q6>L@=S8OLngn7JV%tnJASge8#1fs z^K{GTeTKq2SXEu9%7-0GhWG(+HxCZm6{2&{CjR_aSJ!F95j`;M<>h4$x?D}EZgazX zdipOt_S&@O0SyjtVnoN7n`h#Lj*Ei|j>8?y^^Km2D8GNC$(y~)l&%$hH{^T4f7RQk z&P3EEh0nCK{}5+S{)a2X-RK)l@{VSf=7>ovc6Y(bDT530lL&bz_GW7Q@L4j*-EyN z*m#JddH{ia0Ilv_DtLz^Y(a>5{>SfC1C zR7m7xiA8QkYgW%MRoJcy>;u^Qrn?`lFBPeI@cd;G)AAh!Prl#CFU}+vcEs) zPH@T3z+nIMuH@KW+xxXofs0Cmv=`{E%KDgafYl@dZQ{v>zYi;Y^Zp(A+(P?}bLWC_ z;C>)6f5;XSiBhNHE{4o7+^J7glc8LF_ZF<39_*XTlL{70G{}guV$6mWckDA}8XJ@YXwtS>L!)_kJ-8#?~sRblP{N z6W4KJplH0o( zJ|ySmK2P5k=yyNL@qRfnGF8Ymk{{ZafV@NiV!$+=_) zGdnur6i$ZNjULkZK1S*{-QWo9_Id+;FyMGO0AHp)U(M?2txbc01nj!8v9m|+iAqso z2Zn@fzJje=0RI-^Q&Z_^al*_Y%*x`FWTGLbi_x7HA8m$zAGZEMjD5)tSzUs=%wdrt zx_^I!_Gmxy83!sLMp%J8fD{@3NPt>YB^*{~nM0j!M!}}D0(xI7qn0FFE_ zc7~%uNZifib<0CqTLpF9_j6xc45x$pAT)Hr(cYfi0Z4VhD)>j*dfUxtc?u+=d!YT*i@pC0jVY8C0o(PI zE}8D$;z37MNp_d>g!ptv_*qDzsGB#+Ae!Z^on2>3yr}{6L@iV*sdymxTj3k=QhTLX6QOcpdlTx8;29Crjev;}x3i zwY7;}20oSJFlf~d0kuF(@uo)%A4*h`3-{ct7JXym%&h+V!Y&j^lQ2 zna@=^G9O(bj5pUo_<5O_)YAl+65PgI<@>Fjoha863Nu(ZI0HZk5UQ%GT!TcIk%Sz5 z^t!WYNa_}kn*m{KuR3CLm7tS;I4o~nxtlYJj$9DHr5oIc;yp3ft+Ua|)hvyIFO7c> zMc{Ps;^{i~agN{zoP{2#Ser?BVG?R=-qn18c8xJt!X7)6}BimF9$=o}Sc#f`aZG>%sH$^Hi{64_qk8jC>2(2tyQuuZ-X_EL0L> zmSHUHc-XNx$7=WqKa^>(EDa)d6s~o4egO9bLylCBJ!z_g6ca3GW_PDyPzQ&M9!GN2NxUw{XE;|}jg2-AXKenf^9d}=#c#czZoUQPK#<_$Iz}SD z2M6V^Gh*eY*CjSQJRG@si!}_io}3o-EubqF@DMi&yFy-lf}15+H#`bjpT&TcPSHUF zit#<>rw7l#PP9Og zK-yLOKM3^*rs`=H5sops^^!7wBhh3lt1vcKY;qSOxq6Ypb20jVUVO91f<4eB+ho4w1{NtH@8WfVtbQKHgpQ9+xFJH+uQFy52sP zm6gTZof+WwZGVS_hc^TyJ_M-z?jzxx)f7+!jietAv9@S~Yj*>{_R2d|_KTCt+hN+c zQV!UuJ5YG&b^IqG=%Tk`i6DKjZEmL>z^(R3f>k*=K5HgoZ_iw7vm935a*qs<>ShN8 z5+b6Il9E!HVjlT4Uj7h@GFiAvA)Nf0O$^?I{5PR^sE5n zaR;=ZS~q|RC478*G_z%(SxoU2+_fkc1k*OolZv)1hZxq{Y2OrnjM&My_8_;+;LN$R zC4ek7{79gI#w830s5u*xed5nESwT(GhRYcb-Pka+TKbEn=Y2;7T$~X0`4Og}pOcZS zr~$TsW39ba(`JStsYq4B4D5*gAa}j9yZfL~s``~7;X<`IuDHBh&B@WRFITY;|IHgC zAYs%51_sV;f9Ecjr-7~4W}wAE7S56nMGg{CE}s5(b`~Q;`Aa`_K`_-hoDzz_D455w zTZ%4m)(*O=f_nSilg;}29jvpUA zJs;0{f%C(t&x9ZB=oPiOw!4cECk+?S&a}7A3V$0*dCv5RDW ztVdR7*rcsShfa^ zI6@~AORzyUlzG7~Bvrz|U%XJaPA;AS1u}L2IoqPvwKNx($wnfQ5PQ!D7nANw^ZGzmuAaioHR# ze)3%445B0<@ujq*1|xWr6!(xdg0FflhJ>KajPTbHe_Z-HHJ0}xKOB=W}&JEbQAzeN;mh_**-Ei0VPTf7v{t3wTEaE4|F>v^uL^bS9fvb^kz5eMbvZW5f-b1yjFCeQ7 zTkp|5@viMXpCwA<_-XRr;>ZKJ7ibfrXf)$Lven@;qi7R=3FNk*&@ge;jKrovh1d|U zs`Dijw^+6-LZ>qH&gjIBp_54{wHBjgIJ!fz9=?Jd2Gf8Ezl|xth34_;Y5nx{^t+I@ zo}S(aD2@{XUiX(`&i_)Efo=mYgyKJu06im<3Er==K7vhewei zfhsdDQB6qZPoB1#lAyW2Bo#Hn)Um=@_?~vR$91c^gZA3LKHUI-)tAm@F|o1wbmGzv z-nR|77db#B$Me2j4_St27I-6JW7bh{WNtvs-h2)9v|_}G-BnPL6Y?~p7ctExSid2~ zA2In;LR@>_3e!LwnnC3E?_WDrW?aAVtHtweUBoH`NOa)wCr(aII*hdP5}`ltaJDAR zkB{5`qKzkmvgh;)QrR1^ciJx_uJl39woLD%SH}wZ<1-|BP;146Jt)seVbowy=7mv+ zL_3tuPw4FpQ(pHM_%11(9UX=`_0jG6=A(my7tI9$)-3CSFLxL!}ML~>kX7LC^J9N?Bm`#k0#Gn~vX zFDx85`kRcV^JhUKl(S%wLK`bMh@Iyj^o^-y-PL7Oj>KuGM>|Vk(&VYpEL37s*>lde zIEK>dAiT~;1xr8@ATL!#sneO7Rxm0aPz&&Dk|hr+Jxgi zyF#bOjFmoj>(4evvxl_Z$&Y2$k)wT)bhjZtkM&v`Yn-y-`YL92g+&Pk4?zM5r8K9o z@MCLUUXP-#ZrSCfqF#pKyAJ(wS%c`%MR;7P=iTs?M{^9Ox>T1X(YqXe*vr( zmn_N7m+pE;c#29gOLjL>(TW(qdXs?{iZwX|Nx(V^Ow8m|} zeoJ(Z+mc*&;){jGB8a$RZ+akxbH?TDwrMAfBwdbSRSeJ-EkMZ*UYGy}@ffUA%xEI+ z4Tqz-O5e^9j9$V>2}FMgnC=?Q$XuBO+|d-ya*vfJx2S>w8v0)Q^zC`75;WhFLtOQg z4g`;|3}h*`X7=3sxyJx|RvVNa8k=Tm5=7<^X6U`n!qPzEKJ~I$2=u|GIy82&tgsH5t-PRQcLICFfx0X#e+9exZtQ&B=9rX>uUH zL8Sv;{jt4zyf*4+Cv0ZYu3Pi4X*GZFZoy zx46Fkl+Jw*0dCCBr6i$;DlaB}uwONcncgNUcoFZzJC>xQ-V4y2U9VZSkKQ>qrg6V; z8?z+2?mXjpjIiG9?d|tG zF>V4GYIgrNA>2t$QpVJd5p>QDH53VSb(0iWisxJh-~zEtf) zhqXqhjmJ-$jfU0m+c|YC%K0D{*bvZ%JU^N^04ctD*?>(WD$DVen%DLpy5S$>?MgpqoYLIwrSCbLt#mY)xq8# ze!^%ikg6-t2st92^D|!YhmY3UxdjnZ(i2y$)~q5+>f#08C}@i%=0F}aYXz1fm4bqT z(*L~s&62|pdiwu{!#I(o2$Nq<7809nc_P1LND2%4Ic74hRBpvclJr;2TS-bj^(2dj z$6StDsmY~aQ*G?k$#ogxx5vSByU7#v{Txe@&07Kr_FK@7Jia?RUjC9K^AqlU+|J|}Sl${M1N_hZFEkr5*kH|$OP}ps*5p1w$@(># zK77IiXZvX8gm=l}fID7h6QC6wy(20)|f@$syOht(GWi>Lc5B_NAUu?mKsl)wau zK!JMd>k9!nD@SMN?5e8oQnPPhp_Z4I6WJ`V%bKq>=`^Zf0Wn|WLgyQOxiuQLC$i!o z92gj=u$ZJiTBtz*?P1OBSrQ7&jB_I~PZ~P#-}{D#`Md137xteWObH?DCF4{C3_~ZL z*UnJCs-M63qtsz@wd!d?%|W^#p`;nm8)J3Um&%p%}>?EwMu%g7*&XVhD9y%^@?905*S(YW~(-QZVT@k#*-3Zovoz=3r; z&}0z7ADLTNw3pVcgb}csw)O7%XnY51?Ab8q>KeG%@%;4gfToEfj>R|nTAqLAEx5Vg`lSh}SZ%mHivfG1u&nH>DNEAa zBq`?_*Ga1P$OYfGO7+B+7J)Jls?k+YSZ{Q@*y#s1zYZAD$t9aH3jwfY?LlIRW69&R z*{Q$3KSCr65e5^3?3_>G^qtLhFsswz)KuWr;jGc&OzB_1+A59vvBe}Ma~c~7K`03h z=>Dk9x`G9VXME9GHuc-TKw=BEPuKKTB7L9(R}P)#Q_D&FS@@M$OyQ3EQs>q_(#31fiMxJ zynlWrE{4!z!nl!5AWgu(<{uT@fHB5sWogM{M)We2aCt{ED^(^EE1mnA6Lh7 zN`dL`huZlED)imjRA!1zL*YR;o?e8@Z1vRi^!lmK3-9yYsEQ=XaXB?g?K2oGiOM`<9 zY*#V4(2uU`L3mLtsGHIiIorS03?>h+?pHv-NFV6L>mdA~ll?V6pqu4(pH&xf9_Fj@ zS!jcjj20*0TEy6kH;3%Jx6O`q$s!s=!$3M@no+$%2u*0Sos`$a=W&zt%_v^Kw5iod{`F?$_wuaYcMul-LcN~4|1C`qWwhTnd85X$5q z0v81yU>TIYYQ(;GIkMDmMn*z;)022z7*tEt$Mx=$z6xVrg7KAu&NeqSWi04+{s#nT zIqiC*h(DH=mR6qJ+8?k(!EFmEeZa)>v~;zU{}Kh``YpjvDX_t@)sK3d7##tZLEE+e z)u+=3#=FBB(&AUW$HBj5yCZ2iJPf1uL_4DytDu#QroCqJXyT-Ip%ahF4uOKt2y9E* zLm)s}TUq@E+F(DY)!b`}P2yOcN*83Knv`kLD51CyJIAi#bCPI`dhodJfZO>^>x);M7|Y|Sa=b}Qdb-WsQS~UY zmZoNvmX;REYsPD<%?K9kdR1c;@sz&ZZI|1Jvk_rJT?Pwi>A;o=+fwI+G3 zK--A}3rB7w?@P*muSo7ZDLR<-Bge>%v_^aoNG<}}`VI&-xfvYRnzkTfL(jw{PaY>t z0re-k*Jaynh3Op%Jjho8)akkh{Hrq)eA5;6)*Dx=Oi^_nwn{t$X4E$iJ});u9=yD~ zhd^k>6wz^H~EHvMhl5_hUwW&<8 z??(x89Iw$R(Tm;DgzrQN%(^QchMx7|QAimui(t7OUW^I~R@$z%9D%?woQauP{`|2s zKsT4y*CL<<6OUKDfhttKHzLXTR#u<4^+E9N^DeLfx_|z}jFhDghq61nO&rSz%GqfD z%5~Wu@HB%3CrR4bukBVVT#la#^b@hCO*Oz=uElps|8n2#7LI0ZZg>jwL7= z@f8(JLD~#AfEu*_!m{VK?6@vL ztYEpjyF2Q%go#q`}c49?d@$#p;EpkHa0eh#nY+L#yu1D20=@;Nqu$i7eRQM9)(~Y zH8Xhqvm@dxpxOnvJ!kyiR0Mw%BuJ$4-=&lvl2F{T&FS9ZVKq=5I!vpXQ9DDy5&}Yc ziDKdJ&y>F~A=P|mCcQbnsN{J8xu(3Xp7_CMG19rQ(9qBo`t8tk>J<>Kn!$7u2xHjB z`~z|*my3Fg;OIZIYZCobicSo9U6rLZFdEVgTzxNT@B)Ll|kA*}lh!`)POCLs2T=bwo^%PC^|P z+`%dqAbk17dsfk*#7T?mNp$@+<>MG5_jDS^#9c2VA%CNDD5R=3txBDMk$SE6K1PT- z)?S$$Xjd|*+ZPD}Q;06>3$`3EDTAWw0YBhCC==)$$VC`H++#-w?D0a1_QTTo+S`Ht zI|i>U2@XlX*Z`a%=*j|B(1Fd2sgexnv8bK5zv{t>7yo~WBWxZ!i>Sm}t$*hBVH97eWZ)vx+E}HX#la&&(_)133LcGH!3M zvE2(>6W6$C-#bP70k!meaE zFd{#FQ+s|VB;aw+btocX;_mq)Y%syLDeFp4e|8O&K=SW2J@nb^oJ?{xG5!eNcM2~- zw|o|(p(zkX7VSoL? zJX-2h!@1ai+UVT|Pu-=A6rCeMYmnUE=JUqX1NoW2S(LsqokpAy7LI~x%O&rJmw;`DkHW2~8O3yNBRZ00R3KRcyaG z75Vx!wBi*w*frv)s{j0Wckcu8){zJpBvy>zXb1{AI(%p9fIfYg@3i-Ut@_lX01Ubp zmI|vq77-1g)aatVgJ#sNddO|Lcl^Sb@a*O7OsK$MK86!w0y%DTA0CoEFwa9e2#}Jdvx( z-=yJxe?~>t@6G*OKX>y}o9Xz#-aS1jra<&t4Sbk-JQWlGZs_y^KjBV^Q$i585QrVStXza3Oi5QAJ z6e)X_77fN0Y9d>| z-mgjEki7gOWE%cxop7fpE9xz2N9FD@R?kt1PF9-S#d zm+dPKoSAF#kW!s?zxOg6&419wO}Vs4LHWhehXOA&xz3GA|9Z+(uFlUjs4nqtp90tf zp_sL}V;)gRPAqn&!!zj9-UXL7y6y8wmk);W-4DS8TgEMJWa@Gre8Xqkcv0x#`wp!G z=Y0xTs_LZIS6>J2SR6i_6sj@_)uN}}z6?_3f%ZklJFwFQcrpL+EGQS$nkSs}vo}`y zd1T-3MoJ31_Y_rbNv(GsF^{RLu;^21`hgJiUr;GD{Ltt(O!gg5PfM!u#c|cXXt`rq4IwB-y2y*SS&W@Xb?q{EfJo!wM{}Tzar_~3l*zJpH~F`twZr# z>7n-3>WCqXj?9Z#DDqXp^Mn#C_a&j zdi#66tWYPP2+rD_DkSCc^0gE^=ioD4t*@I;>IdsIePk=e$JyIRM!hFv`hS1)7q!Vf zHZ%%W_?Bgp;H+BBm*S?}8^8O$^ zvG%98aSc}M)o}%TVNaVK}S)Sz~;s~l;Ca0-JPwJ6QUDr=h%yEVWhxu4n z`7pV?r@+tD_w*hByEmoRxQfg#RS8fz0+tB@-;Cy8Sq6DLVBKB~LD-)D!N=&wx$wJz zbNWST8{jpgyo+5B4`XJ6-Q6xqlyRTBTl#3!;a;PmW`fTK+$Vr z=ek>yTMtPhX(~&(Gs*9I+xrXIx4N`U8-|MKd(SR?=QdrgPezz0oNry*u^7=>4eHy< zc%im-G~Y^A8Yv0y0mz#2?kdCNkLpl~lKvrESz$?is5pFXc=1!_wf`nUY`4nv8uV5k zbuf-jAH<*^T#5u?Bp5%$}R!kdn>bSfqKC3;)a1nR2owDYHyuUQktWI-@b`5B4 zJVVi$bvcCUnU(eqDR8ZI*;$fWVjsFay?hou!*)jPpOn%W#5JXIlL1FdkDBYDJqQ02 z(3D#C6Za_Y+!%t1Z%BC}1NC+rB-Sr<_t$xKr*WnH;xS=0^v{d)-3_Wu)Z#$O?|$d` zDz{zids!pmAEAT!cJw>n?k0e+j-_Lauj#mEU?k_=)dhy^pV&(mnrmxUJqVar?UwM) ztr5oW4Qji$+`M(`j8JK~z2whrOBMB({|(H%zZ-b;9w{dFzJbpLb&+c;yzeNcZrUkx z+K*WN?G_b2apKE+%Y+g8=!V(|m9rb@XT~%Tn=Yo~aWvyt?D3D~w+) z1@`0@!N5WGi3~N>Yb+TU%qV;yT{c@12cDkzEuHMS5o(Lc&Rwis$LtgT8sGY0q4>}| zH=lG+tEdOB>69aQ0Uj6`8D(kh|L1^kh~vH?!^(*EDgqTeE@g-M!KDKgcw5Quu#Iw) z>|y8Ylwt1F4|=4rf`r(h%|LuB>v7k5$?PNc^}@0-rNZBpr@s*2y~bkc?IhO&qDy4N z5g0zcJ11RcN6*z=jK|O-+QeKx3F~jqNta>gs+?-}F;G=x1G)nDW`9FtF3g^|IVyx4 z{n0HQT==vkNh|2M6hgOsRgav=a(3--DzkKQ=_w6!tb1e_oUQ&l`u~DKKch;rA8nSiW(am$5CK0X|AZKm})y1{@kruK<=J( zT!n%UZB>?a&Umh7x_@k*y!u+cZln9%S0&WAL(2Q>I<`AILPmYZ4`S?&h?*_2JJnrH zQ5`U~QyBC)(A^4Vx=hvF-e$JAnD{#MDi%{P%gw~heCiu~T<D(lo=|JwKDbnuVn+X%f7}HdK4+7>V@-q`0rBh3GQ#83lI1CFL7N5a>7UB}#v9M7 zaD@j1$etYIkK9TI@Y;)VP)d}kp4A*X(@4r=I()d)UOwYhkVf-sW68isK7JQ=+by2h z$FqZGzcRTltB}UHOnW|;(eP`Pmnb7XlyR9eT@C99UX=;gT%Q2)yqDM~edbU47UY`q z1Bs)SSU=)IR@_=n0m{SeQcJ%mivcQF99S5_o2|n5SFlVg^lYab*|pSQzyAh_<^DSP zA?>D}(0d(e+2um!lK%!BcHMK1vOH^^Mz_3Tw9e%IdLsxSLO_1XLOdQplIIp%~M4#ZT!r#angoEXS&8O|2P z?Uq7eYuRgmg&^es@VJG%+p(PMYBZOqf19Go<=X_OU|{L zx7<;y;Ht!neH}Q})xg!&fYLgI%~NI=P>Q)xu9#;gy`1v zxKbOgkT{8I&fj&7cdyUunh|VMehyoC>`5k+n%rQa@5qvu0p<<5MN!h%AN%@I*3)n`_xPzy=QDRnsi{8f2|m8EKlWn=6-QW5zxYVJ zi?|~SEa7Ly`;NFfZS2^c5k3VKapPC)JmRcUc2Ah{mupYakaEjvId#c4D$QC?MH{Xw%GS3oS;c22hH=|L1ka zW+hGl!7jCZ$5%q2D@HjLk^Q1zTL~r*nPU}hYjO$QVMAb>-+-5I3jn9ybLVcNTzj^(<{BgBi`s2H=JK&kfrHIPj2VaT>nj9!yP-e-^5#O}K` zC0JX(SK2z^g3|4R{kZjjm;J{+q&_^tFtGmbSL|pm&4Kml{a5@yj7v0B1`nm2JZ<${ zvjNBeUB$qU-dX3{F6&ZwC}!xybD+8lc2-FfvOSGh;K2PJvj6Z|r$7CTVUslGxNAwP zy)FJXKV^&**Z)~(B5R(-^p+CKq}-Z_tF`QGG8Wb=pH$_E^C&fsCDJ3ILMBA}wY!RZnk(iT10Fali>-d0Baz4X?7aWin`kPFy5ejoq>@e%@7#OGbEM%Lo|`S}Nbi&tW3P80(Qg!uG$; z;Ml%;b8busHQIDv`nS(jMm>~rK>V(n-n;t9F6sZ;%z2RgYBPf$&OVd|FOGZO%=}|e z;P?r}C*l0CCuDHN@+6j9#&SrZfyaX}6AfQ3A^QYuX-MQTgxz%!WD!ryC}PYf+Gv(s z!&!Im@bj(Uy6_N;m1qPnyH?*OMrOClHmQ&y?^Xh>FyT@f!&@9O4adxr%2D0Ul48v6 zA?#@KEPE_+R%{pe-m*CQR?rl2-%F|eGb7D63V0;&;BuZ!)z?SlBAmGDf{DTrXUvxj z8Gi*Nt}pG%ju1f=^&2eE%`_LGX18na-W}cRlDuXd|2-BGI~4n*24r|xoij_j4c?Sr z;o;V7-@No2oE`#P4VSj!1Ww4Oo8v>eJt@Pi=I-u=qd6?aNB6;Ik`+DS2>Y7Q-h;z< zCr3x^(U0~;wjM*3jyI|4Yc@zg@+R_F!R9LTY^R8q)|F^B56&#HZ$P7SJo>f`e-!NH z`5LhNQ1}9(T@v_^%@3HsWyCwLQ|*>M5uj3$0mfv4yuT87qd-8?oV&az!))d*E;*k* z?yCj_I~;|UQ|BFf4&;hX!Ij_tBC}NL6_R0lvkc<8*lN>=8Zt=2bj1pQ8F1px$zEfI zJeCKmEt`EVv3qyGiztA{<6lcwVaF73nP7a(s7LYoXd1@M3E1&jDm__x5Xs;3T-qLN z2#TP{&Xr@Zy)lgr;Kw|L+N{e32_%cfkfl|qD0nWP(xm_l{`YqvCM2td)VL2rMC7Ed zg&|eBZsKf;Y;6T~REvDio$KA{4Tw^|d^?!Vvxxx7vdnOc7Y_gxLZcwOz;b|HGhM0$ zvX$6?g2-~NaVndhoSOOXQXC!Bb__4J2PpJI-nS)3z)eq2 zQsGlDr;^>id1Z>36MeWS*?|B^#6ob)vwVL&g{+<%U@E!H4H1T;)>U?^-H)VkK+Z(B`jtP~*PTvBkz`Iihr zw6KSFRA|PA;j67%Tyu_RfkTm4UWYZBgO_yI#0vlVRLD9gq4H0;LlVtw{euTS>ZR{l?BM1$lAo1T7UX1FYJU>U+h4Eo;&Dn*`8Sx7lB`A-hN>LSY0T=XUjac+ z!rnkCK-*+<@B__Dy+OZCfg;Y*#H6bo6I$6B8I2LQ&*eg3 zQe(o&?0GL$I!+%!iZijY{S?r$-bs1*P@^oay`uvF1Rm2FDRUxdHW9$nJ4QiA4Hz;& zSonsE{IF8SoET4`5HOy_lIZpuz{t&{MZfZGBq@*@%n$QR!?$RYVqRX3DVRird{hMU z_|q&(>1ODnJ4pa2_ZRJPqEV#eX|QB&-r+`jWXkvA0l3r8Jnvqk8;<<|q#J<8 z5_p{)sId4eH2!3liDc(Njog~5qN3;!Cs{n6QAFdcJOc*q61{~+GXwb`xSHL2Dxp49 z2FMJ$0HVOKs7uNZOW9$h6lr1F2O+P?ru8eBfnH~;#>)1xwvURVt&4fZ$C1oy#olz# z*)F{l-QJ3tgtw&Nnz2;Sf{bg86FR2qoeC8c2cYvIr}7~Qru=AS)OApew?O>NeSql$)5#$13+W?Z zV9KjgSfrm%H@KPb$59#XGz0lk;RS-0|c21PNqvQ0H0#!v_-GPN@Br8jZhAT%x;?T2~%VD}CS63POm9LYv zQv0keEEc3Uc?uwyiWM|4Ha##gk{r!3D;VmJA7N#@UqOqkzS^X%oiIeil%@nDe?QsL%@b^HTc^Htu^oap#g&0*IU_@0W#hvq+F_`42sN_q)SH4)PND%E zN4HG`sxU<04$w?69efx|aOw|ERDe)eJtuQ5{`%gS+cs0eVi3ku)W=4Ni~HE!Kq-p^ zN{==#$p0c5LsMZg<}=Cf_FCA|>QI3Yr@Ks>l$YP*q9+M3E92t#;vn|rO%A#IkGg0t zoD)Q7IS$;hlSH&pPHiTfV{GDS(r7Z151V2y`*|UDuB=n zLh-CpgFL*cX5x`vGZP&NTUU#n7w%*uiPB^pL?hx;cQ8yjzTgAOUy0K{-6twWHdj-e z@CE3%%*YwWSQmWQSXpyOklG=4)svO10qdzQz$`$nUzq#7v$~p^l#~SO992?{h6Xr4 zXJPi%^;gRY?rx`17S-<+*t)qb%`W|H@EyF+RZWpg%gYwsRFSE zew@r5COr?Ens!8WLVdQus0aA@&o6Vw!$&*BK&c5$)P zmD5bHq+5GAwevRr+UViDSKXi{oLXK}V{&CONS|(RJrxC^ZH|4fU;)kp4?{0t*ty_W zI|bUR=MYq;oqHxh@VZJd`@bTf=uJ&d&V`rdb3hK%HeiLEd*MZDXBapRE75E4{fepB zYf`(tAPFf!>spW2uCsxG!HH9+W@3`3M*te6TbhoWI~qq+vp~^zeZXgF>yfdPfrkgq zC1dRBG3q7 zI>ljcZ_lrNJ~dRwEx21I>rQE@V$0Hlo*5HUQze(y3yrKq?IB@Rr$+}UjxH|Ea(nms z+FdE5y?j{$PF6M|0mfV4tNr`;yB0>y7<|v1Nz)$8g*d-z>~p-@epRHog}J$N!^sZjijQaeF8@27)iV;g4uzJe zZrEApNhE?U!@s*pC_FM`l5!DQQB!mNRS=ID*L?J9UD{?6$r?y&H;+TC-AnZwQ~fSZi@GSQ1p>c0T_8 zePC2_@d|3^WuydU$|ar@{1ljgv)QUjNlB>&Aza>*mB&?JbbK;h3=s{GKllq0e=gR6 zMHE8x?9T9dS_R2a>w-Xnc>_{S{^KvNsOU~gO)VujGY0X~iwBT@{iFv|UY9tu;!bxO z)qliYl@g3cz6^rbH*5!ri%<|P4MRW`8+cKE_b8c+}6WE71@$Ha3eovfI{OS4TOSEo8s9reCI0S;?Bjf#<mTUq=sT@~Yx#f05n))$H|QdNK;R;aJ%V?&S=TGtf*v6CyJ(?Y9^u>G7e>h_X!)jt<*Adekec`L5Ii2UM2yeyQP+^cLnsxA>O- zT|(7E6zxJ^6&b&JZsR!as2u40(>C~|3#^^cI$jDF>(Xh-EBW_M1(JSaOl~;&Lf0X5 zlPigZevz(zWz*&de^32g&Didacgx?_aU~uGa4(+nsCI~GEMtP%$eIFOfgKAO@<(cV zU6ASB#_9CC#Nz~RL#9lF_Wu6QpZ80q^ZaQ=1jqis$MsL2NK83@dx?VC=0d*Mp`c01 z|3B_vB#4PmowkgG2~7fZJNotC2h0Ug5io`RCth1!{cR6pQU3pqgCR9I!(wPPD7~8z z)^y4GKbOh_I4QW)e*P#?fj>F+|J(YX%={iQ6TL>@hHg$Q{Ou+tJ1y<)bTttYNSS#5 zc2gb)f-Kq7Oe7M?%ggD{zndL)K;gpd_9RlJ?B6T65#j6W^;0ZdqG;yZ(u035YXlOT zAs45ykrB5V`KvWvq(8q7L9?-W<|$4e6yylh64m?PQ6SM@MSB`Rk(h5~N&lAyudpgC zE?Pm^s9Wu{fBD?sgG!*~0pU}bHyrz47l|Hlp)nUEn=Jm%C=t|$*V;xib75)ePChH- zubLB;@RE{6Z$7R=?BbrB%s*oS1#4bDTNk{WF$lr#zyH-)YF^&iNv(V1Q=cE6OGfn@ z&&bfvsGR^7GI_qMQP)K{nAZpaxXr&e7z^4fU0y06ARr?Y$;pD@FuAeIf|$+;{fIPL R^hLnuu!)WFJwuO}{{x3Y>)ikV diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js deleted file mode 100644 index 2050da9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/monocle.js +++ /dev/null @@ -1,142 +0,0 @@ -var path = require('path'); -var fs = require('fs'); -var readdirp = require('readdirp'); -var is_windows = process.platform === 'win32'; - -module.exports = function() { - var watched_files = {}; - var watched_directories = {}; - var check_dir_pause = 1000; - var checkInterval = undefined; - - // @api public - // Watches the directory passed and its contained files - // accepts args as an object. - - // @param root(string): the root directory to watch - // @param fileFilter(array): ignore these files - // @param directoryFilter(array): ignore these files - // @param listener(fn(file)): on file change event this will be called - // @param complete(fn): on complete of file watching setup - function watchDirectory(args) { - readdirp({ root: args.root, fileFilter: args.fileFilter, directoryFilter: args.directoryFilter }, function(err, res) { - res.files.forEach(function(file) { - watchFile(file, args.listener, args.partial); - }); - typeof args.complete == "function" && args.complete(); - }); - - !args.partial && (checkInterval = setInterval(function() {checkDirectory(args)}, check_dir_pause)); - } - - // @api public - // Watches the files passed - // accepts args as an object. - // @param files(array): a list of files to watch - // @param listener(fn(file)): on file change event this will be called - // @param complete(fn): on complete of file watching setup - function watchFiles(args) { - args.files.forEach(function(file) { - var o = { - fullPath: fs.realpathSync(file), - name: fs.realpathSync(file).split('/').pop() - }; - o.fullParentDir = o.fullPath.split('/').slice(0, o.fullPath.split('/').length - 1).join('/') - - watchFile(o, args.listener); - }); - - typeof args.complete == "function" && args.complete(); - } - - function unwatchAll() { - if (is_windows) { - Object.keys(watched_files).forEach(function(key) { - watched_files[key].close(); - }); - } else { - Object.keys(watched_files).forEach(function(key) { - fs.unwatchFile(key); - }); - } - - clearInterval(checkInterval); - watched_files = {}; - watched_directories = {}; - } - - // Checks to see if something in the directory has changed - function checkDirectory(args) { - Object.keys(watched_directories).forEach(function(path) { - var lastModified = watched_directories[path]; - fs.stat(path, function(err, stats) { - var stats_stamp = lastModified; - if (!err) { - stats_stamp = (new Date(stats.mtime)).getTime(); - } - if (stats_stamp != lastModified) { - watched_directories[path] = stats_stamp; - watchDirectory({ - root: path, - listener: args.listener, - fileFilter: args.fileFilter, - directoryFilter: args.directoryFilter, - partial: true - }); - } - }); - }); - } - - // sets the absolute path to the file from the current working dir - function setAbsolutePath(file) { - file.absolutePath = path.resolve(process.cwd(), file.fullPath); - return file.absolutePath; - } - - // Watches the file passed and its containing directory - // on change calls given listener with file object - function watchFile(file, cb, partial) { - setAbsolutePath(file); - storeDirectory(file); - if (!watched_files[file.fullPath]) { - if (is_windows) { - (function() { - watched_files[file.fullPath] = fs.watch(file.fullPath, function() { - typeof cb === "function" && cb(file); - }); - partial && cb(file); - })(file, cb); - } else { - (function(file, cb) { - watched_files[file.fullPath] = true; - fs.watchFile(file.fullPath, {interval: 150}, function() { - typeof cb === "function" && cb(file); - }); - partial && cb(file); - })(file, cb); - } - } - } - - // Sets up a store of the folders being watched - // and saves the last modification timestamp for it - function storeDirectory(file) { - var directory = file.fullParentDir; - if (!watched_directories[directory]) { - fs.stat(directory, function(err, stats) { - if (err) { - watched_directories[directory] = (new Date).getTime(); - } else { - watched_directories[directory] = (new Date(stats.mtime)).getTime(); - } - }); - } - } - - return { - watchDirectory: watchDirectory, - watchFiles: watchFiles, - unwatchAll: unwatchAll - }; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore deleted file mode 100644 index 7dccd97..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.npmignore +++ /dev/null @@ -1,15 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -node_modules -npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml deleted file mode 100644 index 84fd7ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md deleted file mode 100644 index 7b36a8a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/README.md +++ /dev/null @@ -1,227 +0,0 @@ -# readdirp [![Build Status](https://secure.travis-ci.org/thlorenz/readdirp.png)](http://travis-ci.org/thlorenz/readdirp) - -Recursive version of [fs.readdir](http://nodejs.org/docs/latest/api/fs.html#fs_fs_readdir_path_callback). Exposes a **stream api**. - -```javascript -var readdirp = require('readdirp'); - , path = require('path') - , es = require('event-stream'); - -// print out all JavaScript files along with their size - -var stream = readdirp({ root: path.join(__dirname), fileFilter: '*.js' }); -stream - .on('warn', function (err) { - console.error('non-fatal error', err); - // optionally call stream.destroy() here in order to abort and cause 'close' to be emitted - }) - .on('error', function (err) { console.error('fatal error', err); }) - .pipe(es.mapSync(function (entry) { - return { path: entry.path, size: entry.stat.size }; - })) - .pipe(es.stringify()) - .pipe(process.stdout); -``` - -Meant to be one of the recursive versions of [fs](http://nodejs.org/docs/latest/api/fs.html) functions, e.g., like [mkdirp](https://github.com/substack/node-mkdirp). - -**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)* - -- [Installation](#installation) -- [API](#api) - - [entry stream](#entry-stream) - - [options](#options) - - [entry info](#entry-info) - - [Filters](#filters) - - [Callback API](#callback-api) - - [allProcessed ](#allprocessed) - - [fileProcessed](#fileprocessed) -- [More Examples](#more-examples) - - [stream api](#stream-api) - - [stream api pipe](#stream-api-pipe) - - [grep](#grep) - - [using callback api](#using-callback-api) - - [tests](#tests) - - -# Installation - - npm install readdirp - -# API - -***var entryStream = readdirp (options)*** - -Reads given root recursively and returns a `stream` of [entry info](#entry-info)s. - -## entry stream - -Behaves as follows: - -- `emit('data')` passes an [entry info](#entry-info) whenever one is found -- `emit('warn')` passes a non-fatal `Error` that prevents a file/directory from being processed (i.e., if it is - inaccessible to the user) -- `emit('error')` passes a fatal `Error` which also ends the stream (i.e., when illegal options where passed) -- `emit('end')` called when all entries were found and no more will be emitted (i.e., we are done) -- `emit('close')` called when the stream is destroyed via `stream.destroy()` (which could be useful if you want to - manually abort even on a non fatal error) - at that point the stream is no longer `readable` and no more entries, - warning or errors are emitted -- the stream is `paused` initially in order to allow `pipe` and `on` handlers be connected before data or errors are - emitted -- the stream is `resumed` automatically during the next event loop -- to learn more about streams, consult the [stream-handbook](https://github.com/substack/stream-handbook) - -## options - -- **root**: path in which to start reading and recursing into subdirectories - -- **fileFilter**: filter to include/exclude files found (see [Filters](#filters) for more) - -- **directoryFilter**: filter to include/exclude directories found and to recurse into (see [Filters](#filters) for more) - -- **depth**: depth at which to stop recursing even if more subdirectories are found - -## entry info - -Has the following properties: - -- **parentDir** : directory in which entry was found (relative to given root) -- **fullParentDir** : full path to parent directory -- **name** : name of the file/directory -- **path** : path to the file/directory (relative to given root) -- **fullPath** : full path to the file/directory found -- **stat** : built in [stat object](http://nodejs.org/docs/v0.4.9/api/fs.html#fs.Stats) -- **Example**: (assuming root was `/User/dev/readdirp`) - - parentDir : 'test/bed/root_dir1', - fullParentDir : '/User/dev/readdirp/test/bed/root_dir1', - name : 'root_dir1_subdir1', - path : 'test/bed/root_dir1/root_dir1_subdir1', - fullPath : '/User/dev/readdirp/test/bed/root_dir1/root_dir1_subdir1', - stat : [ ... ] - -## Filters - -There are three different ways to specify filters for files and directories respectively. - -- **function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry - -- **glob string**: a string (e.g., `*.js`) which is matched using [minimatch](https://github.com/isaacs/minimatch), so go there for more - information. - - Globstars (`**`) are not supported since specifiying a recursive pattern for an already recursive function doesn't make sense. - - Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files. - -- **array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown. - - `[ '*.json', '*.js' ]` includes all JavaScript and Json files. - - - `[ '!.git', '!node_modules' ]` includes all directories except the '.git' and 'node_modules'. - -Directories that do not pass a filter will not be recursed into. - -## Callback API - -Although the stream api is recommended, readdirp also exposes a callback based api. - -***readdirp (options, callback1 [, callback2])*** - -If callback2 is given, callback1 functions as the **fileProcessed** callback, and callback2 as the **allProcessed** callback. - -If only callback1 is given, it functions as the **allProcessed** callback. - -### allProcessed - -- function with err and res parameters, e.g., `function (err, res) { ... }` -- **err**: array of errors that occurred during the operation, **res may still be present, even if errors occurred** -- **res**: collection of file/directory [entry infos](#entry-info) - -### fileProcessed - -- function with [entry info](#entry-info) parameter e.g., `function (entryInfo) { ... }` - - -# More Examples - -`on('error', ..)`, `on('warn', ..)` and `on('end', ..)` handling omitted for brevity - -```javascript -var readdirp = require('readdirp'); - -// Glob file filter -readdirp({ root: './test/bed', fileFilter: '*.js' }) - .on('data', function (entry) { - // do something with each JavaScript file entry - }); - -// Combined glob file filters -readdirp({ root: './test/bed', fileFilter: [ '*.js', '*.json' ] }) - .on('data', function (entry) { - // do something with each JavaScript and Json file entry - }); - -// Combined negated directory filters -readdirp({ root: './test/bed', directoryFilter: [ '!.git', '!*modules' ] }) - .on('data', function (entry) { - // do something with each file entry found outside '.git' or any modules directory - }); - -// Function directory filter -readdirp({ root: './test/bed', directoryFilter: function (di) { return di.name.length === 9; } }) - .on('data', function (entry) { - // do something with each file entry found inside directories whose name has length 9 - }); - -// Limiting depth -readdirp({ root: './test/bed', depth: 1 }) - .on('data', function (entry) { - // do something with each file entry found up to 1 subdirectory deep - }); - -// callback api -readdirp( - { root: '.' } - , function(fileInfo) { - // do something with file entry here - } - , function (err, res) { - // all done, move on or do final step for all file entries here - } -); -``` - -Try more examples by following [instructions](https://github.com/thlorenz/readdirp/blob/master/examples/Readme.md) -on how to get going. - -## stream api - -[stream-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api.js) - -Demonstrates error and data handling by listening to events emitted from the readdirp stream. - -## stream api pipe - -[stream-api-pipe.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api-pipe.js) - -Demonstrates error handling by listening to events emitted from the readdirp stream and how to pipe the data stream into -another destination stream. - -## grep - -[grep.js](https://github.com/thlorenz/readdirp/blob/master/examples/grep.js) - -Very naive implementation of grep, for demonstration purposes only. - -## using callback api - -[callback-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/callback-api.js) - -Shows how to pass callbacks in order to handle errors and/or data. - -## tests - -The [readdirp tests](https://github.com/thlorenz/readdirp/blob/master/test/readdirp.js) also will give you a good idea on -how things work. - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md deleted file mode 100644 index 55fc461..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/Readme.md +++ /dev/null @@ -1,37 +0,0 @@ -# readdirp examples - -## How to run the examples - -Assuming you installed readdirp (`npm install readdirp`), you can do the following: - -1. `npm explore readdirp` -2. `cd examples` -3. `npm install` - -At that point you can run the examples with node, i.e., `node grep`. - -## stream api - -[stream-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api.js) - -Demonstrates error and data handling by listening to events emitted from the readdirp stream. - -## stream api pipe - -[stream-api-pipe.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api-pipe.js) - -Demonstrates error handling by listening to events emitted from the readdirp stream and how to pipe the data stream into -another destination stream. - -## grep - -[grep.js](https://github.com/thlorenz/readdirp/blob/master/examples/grep.js) - -Very naive implementation of grep, for demonstration purposes only. - -## using callback api - -[callback-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/callback-api.js) - -Shows how to pass callbacks in order to handle errors and/or data. - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js deleted file mode 100644 index 39bd2d7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/callback-api.js +++ /dev/null @@ -1,10 +0,0 @@ -var readdirp = require('..'); - -readdirp({ root: '.', fileFilter: '*.js' }, function (errors, res) { - if (errors) { - errors.forEach(function (err) { - console.error('Error: ', err); - }); - } - console.log('all javascript files', res); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js deleted file mode 100644 index 807fa35..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/grep.js +++ /dev/null @@ -1,73 +0,0 @@ -'use strict'; -var readdirp = require('..') - , util = require('util') - , fs = require('fs') - , path = require('path') - , Stream = require('stream') - , tap = require('tap-stream') - , es = require('event-stream') - ; - -function findLinesMatching (searchTerm) { - - return es.through(function (entry) { - var lineno = 0 - , matchingLines = [] - , fileStream = this; - - function filter () { - return es.mapSync(function (line) { - lineno++; - return ~line.indexOf(searchTerm) ? lineno + ': ' + line : undefined; - }); - } - - function aggregate () { - return es.through( - function write (data) { - matchingLines.push(data); - } - , function end () { - - // drop files that had no matches - if (matchingLines.length) { - var result = { file: entry, lines: matchingLines }; - - // pass result on to file stream - fileStream.emit('data', result); - } - this.emit('end'); - } - ); - } - - fs.createReadStream(entry.fullPath, { encoding: 'utf-8' }) - - // handle file contents line by line - .pipe(es.split('\n')) - - // keep only the lines that matched the term - .pipe(filter()) - - // aggregate all matching lines and delegate control back to the file stream - .pipe(aggregate()) - ; - }); -} - -console.log('grepping for "arguments"'); - -// create a stream of all javascript files found in this and all sub directories -readdirp({ root: path.join(__dirname), fileFilter: '*.js' }) - - // find all lines matching the term for each file (if none found, that file is ignored) - .pipe(findLinesMatching('arguments')) - - // format the results and output - .pipe( - es.mapSync(function (res) { - return '\n\n' + res.file.path + '\n\t' + res.lines.join('\n\t'); - }) - ) - .pipe(process.stdout) - ; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore deleted file mode 100644 index 13abef4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE deleted file mode 100644 index 171dd97..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/LICENCE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js deleted file mode 100644 index af04340..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/examples/pretty.js +++ /dev/null @@ -1,25 +0,0 @@ - -var inspect = require('util').inspect - -if(!module.parent) { - var es = require('..') //load event-stream - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js deleted file mode 100644 index 16846a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/index.js +++ /dev/null @@ -1,341 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - -var Stream = require('stream').Stream - , es = exports - , through = require('through') - , from = require('from') - , duplex = require('duplexer') - , map = require('map-stream') - , pause = require('pause-stream') - , split = require('split') - -es.Stream = Stream //re-export Stream from core -es.through = through -es.from = from -es.duplex = duplex -es.map = map -es.pause = pause -es.split = split - -// merge / concat -// -// combine multiple streams into a single stream. -// will emit end only once - -es.concat = //actually this should be called concat -es.merge = function (/*streams...*/) { - var toMerge = [].slice.call(arguments) - var stream = new Stream() - var endCount = 0 - stream.writable = stream.readable = true - - toMerge.forEach(function (e) { - e.pipe(stream, {end: false}) - var ended = false - e.on('end', function () { - if(ended) return - ended = true - endCount ++ - if(endCount == toMerge.length) - stream.emit('end') - }) - }) - stream.write = function (data) { - this.emit('data', data) - } - stream.destroy = function () { - merge.forEach(function (e) { - if(e.destroy) e.destroy() - }) - } - return stream -} - - -// writable stream, collects all events into an array -// and calls back when 'end' occurs -// mainly I'm using this to test the other functions - -es.writeArray = function (done) { - if ('function' !== typeof done) - throw new Error('function writeArray (done): done must be function') - - var a = new Stream () - , array = [], isDone = false - a.write = function (l) { - array.push(l) - } - a.end = function () { - isDone = true - done(null, array) - } - a.writable = true - a.readable = false - a.destroy = function () { - a.writable = a.readable = false - if(isDone) return - done(new Error('destroyed before end'), array) - } - return a -} - -//return a Stream that reads the properties of an object -//respecting pause() and resume() - -es.readArray = function (array) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - - stream.readable = true - stream.writable = false - - if(!Array.isArray(array)) - throw new Error('event-stream.read expects an array') - - stream.resume = function () { - if(ended) return - paused = false - var l = array.length - while(i < l && !paused && !ended) { - stream.emit('data', array[i++]) - } - if(i == l && !ended) - ended = true, stream.readable = false, stream.emit('end') - } - process.nextTick(stream.resume) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - ended = true - stream.emit('close') - } - return stream -} - -// -// readable (asyncFunction) -// return a stream that calls an async function while the stream is not paused. -// -// the function must take: (count, callback) {... -// - -es.readable = function (func, continueOnError) { - var stream = new Stream() - , i = 0 - , paused = false - , ended = false - , reading = false - - stream.readable = true - stream.writable = false - - if('function' !== typeof func) - throw new Error('event-stream.readable expects async function') - - stream.on('end', function () { ended = true }) - - function get (err, data) { - - if(err) { - stream.emit('error', err) - if(!continueOnError) stream.emit('end') - } else if (arguments.length > 1) - stream.emit('data', data) - - process.nextTick(function () { - if(ended || paused || reading) return - try { - reading = true - func.call(stream, i++, function () { - reading = false - get.apply(null, arguments) - }) - } catch (err) { - stream.emit('error', err) - } - }) - } - stream.resume = function () { - paused = false - get() - } - process.nextTick(get) - stream.pause = function () { - paused = true - } - stream.destroy = function () { - stream.emit('end') - stream.emit('close') - ended = true - } - return stream -} - - - -// -// map sync -// - -es.mapSync = function (sync) { - return es.through(function write(data) { - var mappedData = sync(data) - if (typeof mappedData !== 'undefined') - this.emit('data', mappedData) - }) -} - -// -// log just print out what is coming through the stream, for debugging -// - -es.log = function (name) { - return es.through(function (data) { - var args = [].slice.call(arguments) - if(name) console.error(name, data) - else console.error(data) - this.emit('data', data) - }) -} - -// -// combine multiple streams together so that they act as a single stream -// -es.pipeline = -es.pipe = es.connect = function () { - - var streams = [].slice.call(arguments) - , first = streams[0] - , last = streams[streams.length - 1] - , thepipe = es.duplex(first, last) - - if(streams.length == 1) - return streams[0] - else if (!streams.length) - throw new Error('connect called with empty args') - - //pipe all the streams together - - function recurse (streams) { - if(streams.length < 2) - return - streams[0].pipe(streams[1]) - recurse(streams.slice(1)) - } - - recurse(streams) - - function onerror () { - var args = [].slice.call(arguments) - args.unshift('error') - thepipe.emit.apply(thepipe, args) - } - - //es.duplex already reemits the error from the first and last stream. - //add a listener for the inner streams in the pipeline. - for(var i = 1; i < streams.length - 1; i ++) - streams[i].on('error', onerror) - - return thepipe -} - -// -// child -- pipe through a child process -// - -es.child = function (child) { - - return es.duplex(child.stdin, child.stdout) - -} - -// -// parse -// -// must be used after es.split() to ensure that each chunk represents a line -// source.pipe(es.split()).pipe(es.parse()) - -es.parse = function () { - return es.through(function (data) { - var obj - try { - if(data) //ignore empty lines - obj = JSON.parse(data.toString()) - } catch (err) { - return console.error(err, 'attemping to parse:', data) - } - //ignore lines that where only whitespace. - if(obj !== undefined) - this.emit('data', obj) - }) -} -// -// stringify -// - -es.stringify = function () { - var Buffer = require('buffer').Buffer - return es.mapSync(function (e){ - return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n' - }) -} - -// -// replace a string within a stream. -// -// warn: just concatenates the string and then does str.split().join(). -// probably not optimal. -// for smallish responses, who cares? -// I need this for shadow-npm so it's only relatively small json files. - -es.replace = function (from, to) { - return es.pipeline(es.split(from), es.join(to)) -} - -// -// join chunks with a joiner. just like Array#join -// also accepts a callback that is passed the chunks appended together -// this is still supported for legacy reasons. -// - -es.join = function (str) { - - //legacy api - if('function' === typeof str) - return es.wait(str) - - var first = true - return es.through(function (data) { - if(!first) - this.emit('data', str) - first = false - this.emit('data', data) - return true - }) -} - - -// -// wait. callback when 'end' is emitted, with all chunks appended as string. -// - -es.wait = function (callback) { - var body = '' - return es.through(function (data) { body += data }, - function () { - this.emit('data', body) - this.emit('end') - if(callback) callback(null, body) - }) -} - -es.pipeable = function () { - throw new Error('[EVENT-STREAM] es.pipeable is deprecated') -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore deleted file mode 100644 index 062c11e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -*.log -*.err \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml deleted file mode 100644 index c2ba3f9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE deleted file mode 100644 index a23e08a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile deleted file mode 100644 index 1f8985d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -test: - node test.js - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md deleted file mode 100644 index a24cecb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# duplexer [![build status][1]][2] - -Creates a duplex stream - -Taken from [event-stream][3] - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -## Example - - var grep = cp.exec('grep Stream') - - duplex(grep.stdin, grep.stdout) - -## Installation - -`npm install duplexer` - -## Tests - -`make test` - -## Contributors - - - Dominictarr - - Raynos - -## MIT Licenced - - [1]: https://secure.travis-ci.org/Raynos/duplexer.png - [2]: http://travis-ci.org/Raynos/duplexer - [3]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js deleted file mode 100644 index fee581d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/index.js +++ /dev/null @@ -1,87 +0,0 @@ -var Stream = require("stream") - , writeMethods = ["write", "end", "destroy"] - , readMethods = ["resume", "pause"] - , readEvents = ["data", "close"] - , slice = Array.prototype.slice - -module.exports = duplex - -function duplex(writer, reader) { - var stream = new Stream() - , ended = false - - Object.defineProperties(stream, { - writable: { - get: getWritable - } - , readable: { - get: getReadable - } - }) - - writeMethods.forEach(proxyWriter) - - readMethods.forEach(proxyReader) - - readEvents.forEach(proxyStream) - - reader.on("end", handleEnd) - - writer.on("error", reemit) - reader.on("error", reemit) - - return stream - - function getWritable() { - return writer.writable - } - - function getReadable() { - return reader.readable - } - - function proxyWriter(methodName) { - stream[methodName] = method - - function method() { - return writer[methodName].apply(writer, arguments) - } - } - - function proxyReader(methodName) { - stream[methodName] = method - - function method() { - stream.emit(methodName) - var func = reader[methodName] - if (func) { - return func.apply(reader, arguments) - } - reader.emit(methodName) - } - } - - function proxyStream(methodName) { - reader.on(methodName, reemit) - - function reemit() { - var args = slice.call(arguments) - args.unshift(methodName) - stream.emit.apply(stream, args) - } - } - - function handleEnd() { - if (ended) { - return - } - ended = true - var args = slice.call(arguments) - args.unshift("end") - stream.emit.apply(stream, args) - } - - function reemit(err) { - stream.emit("error", err) - } -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json deleted file mode 100644 index 6f54329..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "duplexer", - "version": "0.0.2", - "description": "Creates a duplex stream", - "keywords": [], - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Raynos/duplexer.git" - }, - "main": "index", - "homepage": "https://github.com/Raynos/duplexer", - "contributors": [ - { - "name": "Jake Verbaten" - } - ], - "bugs": { - "url": "https://github.com/Raynos/duplexer/issues", - "email": "raynos2@gmail.com" - }, - "dependencies": {}, - "devDependencies": { - "through": "~0.1.4" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://github.com/Raynos/duplexer/raw/master/LICENSE" - } - ], - "scripts": { - "test": "make test" - }, - "readme": "# duplexer [![build status][1]][2]\n\nCreates a duplex stream\n\nTaken from [event-stream][3]\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way.\n\n## Example\n\n var grep = cp.exec('grep Stream')\n\n duplex(grep.stdin, grep.stdout)\n\n## Installation\n\n`npm install duplexer`\n\n## Tests\n\n`make test`\n\n## Contributors\n\n - Dominictarr\n - Raynos\n\n## MIT Licenced\n\n [1]: https://secure.travis-ci.org/Raynos/duplexer.png\n [2]: http://travis-ci.org/Raynos/duplexer\n [3]: https://github.com/dominictarr/event-stream#duplex-writestream-readstream", - "_id": "duplexer@0.0.2", - "_from": "duplexer@~0.0.2" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js deleted file mode 100644 index e06a864..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/duplexer/test.js +++ /dev/null @@ -1,27 +0,0 @@ -var duplex = require("./index") - , assert = require("assert") - , through = require("through") - -var readable = through() - , writable = through(write) - , written = 0 - , data = 0 - -var stream = duplex(writable, readable) - -function write() { - written++ -} - -stream.on("data", ondata) - -function ondata() { - data++ -} - -stream.write() -readable.emit("data") - -assert.equal(written, 1) -assert.equal(data, 1) -console.log("DONE") \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 deleted file mode 100644 index 6366c04..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.APACHE2 +++ /dev/null @@ -1,15 +0,0 @@ -Apache License, Version 2.0 - -Copyright (c) 2011 Dominic Tarr - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT deleted file mode 100644 index 6eafbd7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/LICENSE.MIT +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2011 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js deleted file mode 100644 index 95a8975..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/index.js +++ /dev/null @@ -1,62 +0,0 @@ - -var Stream = require('stream') - -// from -// -// a stream that reads from an source. -// source may be an array, or a function. -// from handles pause behaviour for you. - -module.exports = -function from (source) { - if(Array.isArray(source)) - return from (function (i) { - if(source.length) - this.emit('data', source.shift()) - else - this.emit('end') - return true - }) - - var s = new Stream(), i = 0, ended = false, started = false - s.readable = true - s.writable = false - s.paused = false - s.pause = function () { - started = true - s.paused = true - } - function next () { - var n = 0, r = false - if(ended) return - while(!ended && !s.paused && source.call(s, i++, function () { - if(!n++ && !s.ended && !s.paused) - next() - })) - ; - } - s.resume = function () { - started = true - s.paused = false - next() - } - s.on('end', function () { - ended = true - s.readable = false - process.nextTick(s.destroy) - }) - s.destroy = function () { - ended = true - s.emit('close') - } - /* - by default, the stream will start emitting at nextTick - if you want, you can pause it, after pipeing. - you can also resume before next tick, and that will also - work. - */ - process.nextTick(function () { - if(!started) s.resume() - }) - return s -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json deleted file mode 100644 index be3c0df..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "from", - "version": "0.0.2", - "description": "Easy way to make a Readable Stream", - "main": "index.js", - "scripts": { - "test": "asynct test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/from.git" - }, - "keywords": [ - "stream", - "streams", - "readable", - "easy" - ], - "devDependencies": { - "asynct": "1", - "stream-spec": "0", - "assertions": "~2.3.0" - }, - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "license": "MIT", - "readme": "# from\n\nAn easy way to create a `readable Stream`.\n\n## License\nMIT / Apache2\n", - "_id": "from@0.0.2", - "_from": "from@~0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown deleted file mode 100644 index 84c8269..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/readme.markdown +++ /dev/null @@ -1,6 +0,0 @@ -# from - -An easy way to create a `readable Stream`. - -## License -MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js deleted file mode 100644 index fafea57..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/from/test/index.js +++ /dev/null @@ -1,141 +0,0 @@ -var from = require('..') -var spec = require('stream-spec') -var a = require('assertions') - -function read(stream, callback) { - var actual = [] - stream.on('data', function (data) { - actual.push(data) - }) - stream.once('end', function () { - callback(null, actual) - }) - stream.once('error', function (err) { - callback(err) - }) -} - -function pause(stream) { - stream.on('data', function () { - if(Math.random() > 0.1) return - stream.pause() - process.nextTick(function () { - stream.resume() - }) - }) -} - -exports['inc'] = function (test) { - - var fs = from(function (i) { - this.emit('data', i) - if(i >= 99) - return this.emit('end') - return true - }) - - spec(fs).readable().validateOnExit() - - read(fs, function (err, arr) { - test.equal(arr.length, 100) - test.done() - }) -} - -exports['simple'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = from(expected.slice()) - - spec(t) - .readable() - .pausable({strict: true}) - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - -} - -exports['simple pausable'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = from(expected.slice()) - - spec(t) - .readable() - .pausable({strict: true}) - .validateOnExit() - - pause(t) - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - -} - -exports['simple (not strictly pausable) setTimeout'] = function (test) { - - var l = 10 - , expected = [] - while(l--) expected.push(l * Math.random()) - - - var _expected = expected.slice() - var t = from(function (i, n) { - var self = this - setTimeout(function () { - if(_expected.length) - self.emit('data', _expected.shift()) - else - self.emit('end') - n() - }, 3) - }) - - /* - using from in this way will not be strictly pausable. - it could be extended to buffer outputs, but I think a better - way would be to use a PauseStream that implements strict pause. - */ - - spec(t) - .readable() - .pausable({strict: false }) - .validateOnExit() - - //pause(t) - var paused = false - var i = setInterval(function () { - if(!paused) t.pause() - else t.resume() - paused = !paused - }, 2) - - t.on('end', function () { - clearInterval(i) - }) - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - -} - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore deleted file mode 100644 index 13abef4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE deleted file mode 100644 index 171dd97..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/LICENCE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js deleted file mode 100644 index af04340..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/examples/pretty.js +++ /dev/null @@ -1,25 +0,0 @@ - -var inspect = require('util').inspect - -if(!module.parent) { - var es = require('..') //load event-stream - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js deleted file mode 100644 index d3a7fd9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/index.js +++ /dev/null @@ -1,105 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - - -var Stream = require('stream').Stream - - -//create an event stream and apply function to each .write -//emitting each response as data -//unless it's an empty callback - -module.exports = function (mapper) { - var stream = new Stream() - , inputs = 0 - , outputs = 0 - , ended = false - , paused = false - , destroyed = false - - stream.writable = true - stream.readable = true - - stream.write = function () { - if(ended) throw new Error('map stream is not writable') - inputs ++ - var args = [].slice.call(arguments) - , r - , inNext = false - //pipe only allows one argument. so, do not - function next (err) { - if(destroyed) return - inNext = true - outputs ++ - var args = [].slice.call(arguments) - if(err) { - args.unshift('error') - return inNext = false, stream.emit.apply(stream, args) - } - args.shift() //drop err - if (args.length) { - args.unshift('data') - r = stream.emit.apply(stream, args) - } - if(inputs == outputs) { - if(paused) paused = false, stream.emit('drain') //written all the incoming events - if(ended) end() - } - inNext = false - } - args.push(next) - - try { - //catch sync errors and handle them like async errors - var written = mapper.apply(null, args) - paused = (written === false) - return !paused - } catch (err) { - //if the callback has been called syncronously, and the error - //has occured in an listener, throw it again. - if(inNext) - throw err - next(err) - return !paused - } - } - - function end (data) { - //if end was called with args, write it, - ended = true //write will emit 'end' if ended is true - stream.writable = false - if(data !== undefined) - return stream.write(data) - else if (inputs == outputs) //wait for processing - stream.readable = false, stream.emit('end'), stream.destroy() - } - - stream.end = function (data) { - if(ended) return - end() - } - - stream.destroy = function () { - ended = destroyed = true - stream.writable = stream.readable = paused = false - process.nextTick(function () { - stream.emit('close') - }) - } - stream.pause = function () { - paused = true - } - - stream.resume = function () { - paused = false - } - - return stream -} - - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json deleted file mode 100644 index 97e7338..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "map-stream", - "version": "0.0.1", - "description": "construct pipes of streams of events", - "homepage": "http://github.com/dominictarr/map-stream", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/map-stream.git" - }, - "dependencies": {}, - "devDependencies": { - "asynct": "*", - "it-is": "1", - "ubelt": "~2.9", - "stream-spec": "~0.2", - "event-stream": "~2.1", - "from": "0.0.2" - }, - "scripts": { - "test": "asynct test/" - }, - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "http://dominictarr.com" - }, - "readme": "# MapStream\n\nRefactored out of [event-stream](https://github.com/dominictarr/event-stream)\n\n##map (asyncFunction)\n\nCreate a through stream from an asyncronous function. \n\n``` js\nvar es = require('event-stream')\n\nes.map(function (data, callback) {\n //transform data\n // ...\n callback(null, data)\n})\n\n```\n\nEach map MUST call the callback. It may callback with data, with an error or with no arguments, \n\n * `callback()` drop this data. \n this makes the map work like `filter`, \n note:`callback(null,null)` is not the same, and will emit `null`\n\n * `callback(null, newData)` turn data into newData\n \n * `callback(error)` emit an error for this item.\n\n>Note: if a callback is not called, `map` will think that it is still being processed, \n>every call must be answered or the stream will not know when to end. \n>\n>Also, if the callback is called more than once, every call but the first will be ignored.\n\n\n", - "_id": "map-stream@0.0.1", - "_from": "map-stream@0.0.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown deleted file mode 100644 index 22c019d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/readme.markdown +++ /dev/null @@ -1,35 +0,0 @@ -# MapStream - -Refactored out of [event-stream](https://github.com/dominictarr/event-stream) - -##map (asyncFunction) - -Create a through stream from an asyncronous function. - -``` js -var es = require('event-stream') - -es.map(function (data, callback) { - //transform data - // ... - callback(null, data) -}) - -``` - -Each map MUST call the callback. It may callback with data, with an error or with no arguments, - - * `callback()` drop this data. - this makes the map work like `filter`, - note:`callback(null,null)` is not the same, and will emit `null` - - * `callback(null, newData)` turn data into newData - - * `callback(error)` emit an error for this item. - ->Note: if a callback is not called, `map` will think that it is still being processed, ->every call must be answered or the stream will not know when to end. -> ->Also, if the callback is called more than once, every call but the first will be ignored. - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js deleted file mode 100644 index 77ac48e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/map-stream/test/simple-map.asynct.js +++ /dev/null @@ -1,295 +0,0 @@ -'use strict'; - -var map = require('../') - , it = require('it-is') - , u = require('ubelt') - , spec = require('stream-spec') - , from = require('from') - , Stream = require('stream') - , es = require('event-stream') - -//REFACTOR THIS TEST TO USE es.readArray and es.writeArray - -function writeArray(array, stream) { - - array.forEach( function (j) { - stream.write(j) - }) - stream.end() - -} - -function readStream(stream, done) { - - var array = [] - stream.on('data', function (data) { - array.push(data) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -//call sink on each write, -//and complete when finished. - -function pauseStream (prob, delay) { - var pauseIf = ( - 'number' == typeof prob - ? function () { - return Math.random() < prob - } - : 'function' == typeof prob - ? prob - : 0.1 - ) - var delayer = ( - !delay - ? process.nextTick - : 'number' == typeof delay - ? function (next) { setTimeout(next, delay) } - : delay - ) - - return es.through(function (data) { - if(!this.paused && pauseIf()) { - console.log('PAUSE STREAM PAUSING') - this.pause() - var self = this - delayer(function () { - console.log('PAUSE STREAM RESUMING') - self.resume() - }) - } - console.log("emit ('data', " + data + ')') - this.emit('data', data) - }) -} - -exports ['simple map'] = function (test) { - - var input = u.map(1, 1000, function () { - return Math.random() - }) - var expected = input.map(function (v) { - return v * 2 - }) - - var pause = pauseStream(0.1) - var fs = from(input) - var ts = es.writeArray(function (err, ar) { - it(ar).deepEqual(expected) - test.done() - }) - var map = es.through(function (data) { - this.emit('data', data * 2) - }) - - spec(map).through().validateOnExit() - spec(pause).through().validateOnExit() - - fs.pipe(map).pipe(pause).pipe(ts) -} - -exports ['simple map applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - - var doubler = map(function (data, cb) { - cb(null, data * 2) - }) - - spec(doubler).through().validateOnExit() - - //a map is only a middle man, so it is both readable and writable - - it(doubler).has({ - readable: true, - writable: true, - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) -// process.nextTick(x.validate) - test.done() - }) - - writeArray(input, doubler) - -} - -exports['pipe two maps together'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - function dd (data, cb) { - cb(null, data * 2) - } - var doubler1 = es.map(dd), doubler2 = es.map(dd) - - doubler1.pipe(doubler2) - - spec(doubler1).through().validateOnExit() - spec(doubler2).through().validateOnExit() - - readStream(doubler2, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 4 - })) - test.done() - }) - - writeArray(input, doubler1) - -} - -//next: -// -// test pause, resume and drian. -// - -// then make a pipe joiner: -// -// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) -// -// will return a single stream that write goes to the first - -exports ['map will not call end until the callback'] = function (test) { - - var ticker = map(function (data, cb) { - process.nextTick(function () { - cb(null, data * 2) - }) - }) - - spec(ticker).through().validateOnExit() - - ticker.write('x') - ticker.end() - - ticker.on('end', function () { - test.done() - }) -} - - -exports ['emit error thrown'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function () { - throw err - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - - mapper.write('hello') - -} - -exports ['emit error calledback'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function (data, callback) { - callback(err) - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - - mapper.write('hello') - -} - -exports ['do not emit drain if not paused'] = function (test) { - - var maps = map(function (data, callback) { - u.delay(callback)(null, 1) - return true - }) - - spec(maps).through().pausable().validateOnExit() - - maps.on('drain', function () { - it(false).ok('should not emit drain unless the stream is paused') - }) - - it(maps.write('hello')).equal(true) - it(maps.write('hello')).equal(true) - it(maps.write('hello')).equal(true) - setTimeout(function () {maps.end()},10) - maps.on('end', test.done) -} - -exports ['emits drain if paused, when all '] = function (test) { - var active = 0 - var drained = false - var maps = map(function (data, callback) { - active ++ - u.delay(function () { - active -- - callback(null, 1) - })() - console.log('WRITE', false) - return false - }) - - spec(maps).through().validateOnExit() - - maps.on('drain', function () { - drained = true - it(active).equal(0, 'should emit drain when all maps are done') - }) - - it(maps.write('hello')).equal(false) - it(maps.write('hello')).equal(false) - it(maps.write('hello')).equal(false) - - process.nextTick(function () {maps.end()},10) - - maps.on('end', function () { - console.log('end') - it(drained).ok('shoud have emitted drain before end') - test.done() - }) - -} - -exports ['map applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = map(function (data, callback) { - if (data % 2) - callback(null, data * 2) - else - callback() - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore deleted file mode 100644 index bfdb82c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -lib-cov/* -*.swp -*.swo -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE deleted file mode 100644 index 432d1ae..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown deleted file mode 100644 index deb493c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/README.markdown +++ /dev/null @@ -1,474 +0,0 @@ -optimist -======== - -Optimist is a node.js library for option parsing for people who hate option -parsing. More specifically, this module is for people who like all the --bells -and -whistlz of program usage but think optstrings are a waste of time. - -With optimist, option parsing doesn't have to suck (as much). - -examples -======== - -With Optimist, the options are just a hash! No optstrings attached. -------------------------------------------------------------------- - -xup.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} -```` - -*** - - $ ./xup.js --rif=55 --xup=9.52 - Buy more riffiwobbles - - $ ./xup.js --rif 12 --xup 8.1 - Sell the xupptumblers - -![This one's optimistic.](http://substack.net/images/optimistic.png) - -But wait! There's more! You can do short options: -------------------------------------------------- - -short.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -```` - -*** - - $ ./short.js -x 10 -y 21 - (10,21) - -And booleans, both long and short (and grouped): ----------------------------------- - -bool.js: - -````javascript -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); -```` - -*** - - $ ./bool.js -s - The cat says: meow - - $ ./bool.js -sp - The cat says: meow. - - $ ./bool.js -sp --fr - Le chat dit: miaou. - -And non-hypenated options too! Just use `argv._`! -------------------------------------------------- - -nonopt.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); -```` - -*** - - $ ./nonopt.js -x 6.82 -y 3.35 moo - (6.82,3.35) - [ 'moo' ] - - $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz - (0.54,1.12) - [ 'foo', 'bar', 'baz' ] - -Plus, Optimist comes with .usage() and .demand()! -------------------------------------------------- - -divide.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); -```` - -*** - - $ ./divide.js -x 55 -y 11 - 5 - - $ node ./divide.js -x 4.91 -z 2.51 - Usage: node ./divide.js -x [num] -y [num] - - Options: - -x [required] - -y [required] - - Missing required arguments: y - -EVEN MORE HOLY COW ------------------- - -default_singles.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_singles.js -x 5 - 15 - -default_hash.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_hash.js -y 7 - 17 - -And if you really want to get all descriptive about it... ---------------------------------------------------------- - -boolean_single.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv); -```` - -*** - - $ ./boolean_single.js -v foo bar baz - true - [ 'bar', 'baz', 'foo' ] - -boolean_double.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); -```` - -*** - - $ ./boolean_double.js -x -z one two three - [ true, false, true ] - [ 'one', 'two', 'three' ] - -Optimist is here to help... ---------------------------- - -You can describe parameters for help messages and set aliases. Optimist figures -out how to format a handy help string automatically. - -line_count.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); -```` - -*** - - $ node line_count.js - Count the lines in a file. - Usage: node ./line_count.js - - Options: - -f, --file Load a file [required] - - Missing required arguments: f - - $ node line_count.js --file line_count.js - 20 - - $ node line_count.js -f line_count.js - 20 - -methods -======= - -By itself, - -````javascript -require('optimist').argv -````` - -will use `process.argv` array to construct the `argv` object. - -You can pass in the `process.argv` yourself: - -````javascript -require('optimist')([ '-x', '1', '-y', '2' ]).argv -```` - -or use .parse() to do the same thing: - -````javascript -require('optimist').parse([ '-x', '1', '-y', '2' ]) -```` - -The rest of these methods below come in just before the terminating `.argv`. - -.alias(key, alias) ------------------- - -Set key names as equivalent such that updates to a key will propagate to aliases -and vice-versa. - -Optionally `.alias()` can take an object that maps keys to aliases. - -.default(key, value) --------------------- - -Set `argv[key]` to `value` if no option was specified on `process.argv`. - -Optionally `.default()` can take an object that maps keys to default values. - -.demand(key) ------------- - -If `key` is a string, show the usage information and exit if `key` wasn't -specified in `process.argv`. - -If `key` is a number, demand at least as many non-option arguments, which show -up in `argv._`. - -If `key` is an Array, demand each element. - -.describe(key, desc) --------------------- - -Describe a `key` for the generated usage information. - -Optionally `.describe()` can take an object that maps keys to descriptions. - -.options(key, opt) ------------------- - -Instead of chaining together `.alias().demand().default()`, you can specify -keys in `opt` for each of the chainable methods. - -For example: - -````javascript -var argv = require('optimist') - .options('f', { - alias : 'file', - default : '/etc/passwd', - }) - .argv -; -```` - -is the same as - -````javascript -var argv = require('optimist') - .alias('f', 'file') - .default('f', '/etc/passwd') - .argv -; -```` - -Optionally `.options()` can take an object that maps keys to `opt` parameters. - -.usage(message) ---------------- - -Set a usage message to show which commands to use. Inside `message`, the string -`$0` will get interpolated to the current script name or node command for the -present script similar to how `$0` works in bash or perl. - -.check(fn) ----------- - -Check that certain conditions are met in the provided arguments. - -If `fn` throws or returns `false`, show the thrown error, usage information, and -exit. - -.boolean(key) -------------- - -Interpret `key` as a boolean. If a non-flag option follows `key` in -`process.argv`, that string won't get set as the value of `key`. - -If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be -`false`. - -If `key` is an Array, interpret all the elements as booleans. - -.string(key) ------------- - -Tell the parser logic not to interpret `key` as a number or boolean. -This can be useful if you need to preserve leading zeros in an input. - -If `key` is an Array, interpret all the elements as strings. - -.wrap(columns) --------------- - -Format usage output to wrap at `columns` many columns. - -.help() -------- - -Return the generated usage string. - -.showHelp(fn=console.error) ---------------------------- - -Print the usage data using `fn` for printing. - -.parse(args) ------------- - -Parse `args` instead of `process.argv`. Returns the `argv` object. - -.argv ------ - -Get the arguments as a plain old object. - -Arguments without a corresponding flag show up in the `argv._` array. - -The script name or node command is available at `argv.$0` similarly to how `$0` -works in bash or perl. - -parsing tricks -============== - -stop parsing ------------- - -Use `--` to stop parsing flags and stuff the remainder into `argv._`. - - $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 - { _: [ '-c', '3', '-d', '4' ], - '$0': 'node ./examples/reflect.js', - a: 1, - b: 2 } - -negate fields -------------- - -If you want to explicity set a field to false instead of just leaving it -undefined or to override a default you can do `--no-key`. - - $ node examples/reflect.js -a --no-b - { _: [], - '$0': 'node ./examples/reflect.js', - a: true, - b: false } - -numbers -------- - -Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to -one. This way you can just `net.createConnection(argv.port)` and you can add -numbers out of `argv` with `+` without having that mean concatenation, -which is super frustrating. - -duplicates ----------- - -If you specify a flag multiple times it will get turned into an array containing -all the values in order. - - $ node examples/reflect.js -x 5 -x 8 -x 0 - { _: [], - '$0': 'node ./examples/reflect.js', - x: [ 5, 8, 0 ] } - -installation -============ - -With [npm](http://github.com/isaacs/npm), just do: - npm install optimist - -or clone this project on github: - - git clone http://github.com/substack/node-optimist.git - -To run the tests with [expresso](http://github.com/visionmedia/expresso), -just do: - - expresso - -inspired By -=========== - -This module is loosely inspired by Perl's -[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js deleted file mode 100644 index a998fb7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/bool.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js deleted file mode 100644 index a35a7e6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_double.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js deleted file mode 100644 index 017bb68..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/boolean_single.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv.v); -console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js deleted file mode 100644 index ade7768..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_hash.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; - -console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js deleted file mode 100644 index d9b1ff4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/default_singles.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js deleted file mode 100644 index 5e2ee82..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/divide.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js deleted file mode 100644 index b5f95bf..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js deleted file mode 100644 index d9ac709..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_options.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .options({ - file : { - demand : true, - alias : 'f', - description : 'Load a file' - }, - base : { - alias : 'b', - description : 'Numeric base to use for output', - default : 10, - }, - }) - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js deleted file mode 100644 index 4267511..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/line_count_wrap.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .wrap(80) - .demand('f') - .alias('f', [ 'file', 'filename' ]) - .describe('f', - "Load a file. It's pretty important." - + " Required even. So you'd better specify it." - ) - .alias('b', 'base') - .describe('b', 'Numeric base to display the number of lines in') - .default('b', 10) - .describe('x', 'Super-secret optional parameter which is secret') - .default('x', '') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js deleted file mode 100644 index ee633ee..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/nonopt.js +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js deleted file mode 100644 index 816b3e1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/reflect.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.dir(require('optimist').argv); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js deleted file mode 100644 index 1db0ad0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/short.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js deleted file mode 100644 index a8e5aeb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/string.js +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .string('x', 'y') - .argv -; -console.dir([ argv.x, argv.y ]); - -/* Turns off numeric coercion: - ./node string.js -x 000123 -y 9876 - [ '000123', '9876' ] -*/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js deleted file mode 100644 index b999977..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/usage-options.js +++ /dev/null @@ -1,19 +0,0 @@ -var optimist = require('./../index'); - -var argv = optimist.usage('This is my awesome program', { - 'about': { - description: 'Provide some details about the author of this program', - required: true, - short: 'a', - }, - 'info': { - description: 'Provide some information about the node.js agains!!!!!!', - boolean: true, - short: 'i' - } -}).argv; - -optimist.showHelp(); - -console.log('\n\nInspecting options'); -console.dir(argv); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js deleted file mode 100644 index 8f6ecd2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/examples/xup.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js deleted file mode 100644 index 070d642..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/index.js +++ /dev/null @@ -1,457 +0,0 @@ -var path = require('path'); -var wordwrap = require('wordwrap'); - -/* Hack an instance of Argv with process.argv into Argv - so people can do - require('optimist')(['--beeble=1','-z','zizzle']).argv - to parse a list of args and - require('optimist').argv - to get a parsed version of process.argv. -*/ - -var inst = Argv(process.argv.slice(2)); -Object.keys(inst).forEach(function (key) { - Argv[key] = typeof inst[key] == 'function' - ? inst[key].bind(inst) - : inst[key]; -}); - -var exports = module.exports = Argv; -function Argv (args, cwd) { - var self = {}; - if (!cwd) cwd = process.cwd(); - - self.$0 = process.argv - .slice(0,2) - .map(function (x) { - var b = rebase(cwd, x); - return x.match(/^\//) && b.length < x.length - ? b : x - }) - .join(' ') - ; - - if (process.argv[1] == process.env._) { - self.$0 = process.env._.replace( - path.dirname(process.execPath) + '/', '' - ); - } - - var flags = { bools : {}, strings : {} }; - - self.boolean = function (bools) { - if (!Array.isArray(bools)) { - bools = [].slice.call(arguments); - } - - bools.forEach(function (name) { - flags.bools[name] = true; - }); - - return self; - }; - - self.string = function (strings) { - if (!Array.isArray(strings)) { - strings = [].slice.call(arguments); - } - - strings.forEach(function (name) { - flags.strings[name] = true; - }); - - return self; - }; - - var aliases = {}; - self.alias = function (x, y) { - if (typeof x === 'object') { - Object.keys(x).forEach(function (key) { - self.alias(key, x[key]); - }); - } - else if (Array.isArray(y)) { - y.forEach(function (yy) { - self.alias(x, yy); - }); - } - else { - var zs = (aliases[x] || []).concat(aliases[y] || []).concat(x, y); - aliases[x] = zs.filter(function (z) { return z != x }); - aliases[y] = zs.filter(function (z) { return z != y }); - } - - return self; - }; - - var demanded = {}; - self.demand = function (keys) { - if (typeof keys == 'number') { - if (!demanded._) demanded._ = 0; - demanded._ += keys; - } - else if (Array.isArray(keys)) { - keys.forEach(function (key) { - self.demand(key); - }); - } - else { - demanded[keys] = true; - } - - return self; - }; - - var usage; - self.usage = function (msg, opts) { - if (!opts && typeof msg === 'object') { - opts = msg; - msg = null; - } - - usage = msg; - - if (opts) self.options(opts); - - return self; - }; - - function fail (msg) { - self.showHelp(); - if (msg) console.error(msg); - process.exit(1); - } - - var checks = []; - self.check = function (f) { - checks.push(f); - return self; - }; - - var defaults = {}; - self.default = function (key, value) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.default(k, key[k]); - }); - } - else { - defaults[key] = value; - } - - return self; - }; - - var descriptions = {}; - self.describe = function (key, desc) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.describe(k, key[k]); - }); - } - else { - descriptions[key] = desc; - } - return self; - }; - - self.parse = function (args) { - return Argv(args).argv; - }; - - self.option = self.options = function (key, opt) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.options(k, key[k]); - }); - } - else { - if (opt.alias) self.alias(key, opt.alias); - if (opt.demand) self.demand(key); - if (opt.default) self.default(key, opt.default); - - if (opt.boolean || opt.type === 'boolean') { - self.boolean(key); - } - if (opt.string || opt.type === 'string') { - self.string(key); - } - - var desc = opt.describe || opt.description || opt.desc; - if (desc) { - self.describe(key, desc); - } - } - - return self; - }; - - var wrap = null; - self.wrap = function (cols) { - wrap = cols; - return self; - }; - - self.showHelp = function (fn) { - if (!fn) fn = console.error; - fn(self.help()); - }; - - self.help = function () { - var keys = Object.keys( - Object.keys(descriptions) - .concat(Object.keys(demanded)) - .concat(Object.keys(defaults)) - .reduce(function (acc, key) { - if (key !== '_') acc[key] = true; - return acc; - }, {}) - ); - - var help = keys.length ? [ 'Options:' ] : []; - - if (usage) { - help.unshift(usage.replace(/\$0/g, self.$0), ''); - } - - var switches = keys.reduce(function (acc, key) { - acc[key] = [ key ].concat(aliases[key] || []) - .map(function (sw) { - return (sw.length > 1 ? '--' : '-') + sw - }) - .join(', ') - ; - return acc; - }, {}); - - var switchlen = longest(Object.keys(switches).map(function (s) { - return switches[s] || ''; - })); - - var desclen = longest(Object.keys(descriptions).map(function (d) { - return descriptions[d] || ''; - })); - - keys.forEach(function (key) { - var kswitch = switches[key]; - var desc = descriptions[key] || ''; - - if (wrap) { - desc = wordwrap(switchlen + 4, wrap)(desc) - .slice(switchlen + 4) - ; - } - - var spadding = new Array( - Math.max(switchlen - kswitch.length + 3, 0) - ).join(' '); - - var dpadding = new Array( - Math.max(desclen - desc.length + 1, 0) - ).join(' '); - - var type = null; - - if (flags.bools[key]) type = '[boolean]'; - if (flags.strings[key]) type = '[string]'; - - if (!wrap && dpadding.length > 0) { - desc += dpadding; - } - - var prelude = ' ' + kswitch + spadding; - var extra = [ - type, - demanded[key] - ? '[required]' - : null - , - defaults[key] !== undefined - ? '[default: ' + JSON.stringify(defaults[key]) + ']' - : null - , - ].filter(Boolean).join(' '); - - var body = [ desc, extra ].filter(Boolean).join(' '); - - if (wrap) { - var dlines = desc.split('\n'); - var dlen = dlines.slice(-1)[0].length - + (dlines.length === 1 ? prelude.length : 0) - - body = desc + (dlen + extra.length > wrap - 2 - ? '\n' - + new Array(wrap - extra.length + 1).join(' ') - + extra - : new Array(wrap - extra.length - dlen + 1).join(' ') - + extra - ); - } - - help.push(prelude + body); - }); - - help.push(''); - return help.join('\n'); - }; - - Object.defineProperty(self, 'argv', { - get : parseArgs, - enumerable : true, - }); - - function parseArgs () { - var argv = { _ : [], $0 : self.$0 }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] || false); - }); - - function setArg (key, val) { - var num = Number(val); - var value = typeof val !== 'string' || isNaN(num) ? val : num; - if (flags.strings[key]) value = val; - - if (key in argv && !flags.bools[key]) { - if (!Array.isArray(argv[key])) { - argv[key] = [ argv[key] ]; - } - argv[key].push(value); - } - else { - argv[key] = value; - } - - (aliases[key] || []).forEach(function (x) { - argv[x] = argv[key]; - }); - } - - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (arg === '--') { - argv._.push.apply(argv._, args.slice(i + 1)); - break; - } - else if (arg.match(/^--.+=/)) { - var m = arg.match(/^--([^=]+)=(.*)/); - setArg(m[1], m[2]); - } - else if (arg.match(/^--no-.+/)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false); - } - else if (arg.match(/^--.+/)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !next.match(/^-/) - && !flags.bools[key]) { - setArg(key, next); - i++; - } - else if (flags.bools[key] && /true|false/.test(next)) { - setArg(key, next === 'true'); - i++; - } - else { - setArg(key, true); - } - } - else if (arg.match(/^-[^-]+/)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2)); - broken = true; - break; - } - else { - setArg(letters[j], true); - } - } - - if (!broken) { - var key = arg.slice(-1)[0]; - - if (args[i+1] && !args[i+1].match(/^-/) - && !flags.bools[key]) { - setArg(key, args[i+1]); - i++; - } - else if (args[i+1] && flags.bools[key] && /true|false/.test(args[i+1])) { - setArg(key, args[i+1] === 'true'); - i++; - } - else { - setArg(key, true); - } - } - } - else { - var n = Number(arg); - argv._.push(flags.strings['_'] || isNaN(n) ? arg : n); - } - } - - Object.keys(defaults).forEach(function (key) { - if (!(key in argv)) { - argv[key] = defaults[key]; - } - }); - - if (demanded._ && argv._.length < demanded._) { - fail('Not enough non-option arguments: got ' - + argv._.length + ', need at least ' + demanded._ - ); - } - - var missing = []; - Object.keys(demanded).forEach(function (key) { - if (!argv[key]) missing.push(key); - }); - - if (missing.length) { - fail('Missing required arguments: ' + missing.join(', ')); - } - - checks.forEach(function (f) { - try { - if (f(argv) === false) { - fail('Argument check failed: ' + f.toString()); - } - } - catch (err) { - fail(err) - } - }); - - return argv; - } - - function longest (xs) { - return Math.max.apply( - null, - xs.map(function (x) { return x.length }) - ); - } - - return self; -}; - -// rebase an absolute path to a relative one with respect to a base directory -// exported for tests -exports.rebase = rebase; -function rebase (base, dir) { - var ds = path.normalize(dir).split('/').slice(1); - var bs = path.normalize(base).split('/').slice(1); - - for (var i = 0; ds[i] && ds[i] == bs[i]; i++); - ds.splice(0, i); bs.splice(0, i); - - var p = path.normalize( - bs.map(function () { return '..' }).concat(ds).join('/') - ).replace(/\/$/,'').replace(/^$/, '.'); - return p.match(/^[.\/]/) ? p : './' + p; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown deleted file mode 100644 index 346374e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/README.markdown +++ /dev/null @@ -1,70 +0,0 @@ -wordwrap -======== - -Wrap your words. - -example -======= - -made out of meat ----------------- - -meat.js - - var wrap = require('wordwrap')(15); - console.log(wrap('You and your whole family are made out of meat.')); - -output: - - You and your - whole family - are made out - of meat. - -centered --------- - -center.js - - var wrap = require('wordwrap')(20, 60); - console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' - )); - -output: - - At long last the struggle and tumult - was over. The machines had finally cast - off their oppressors and were finally - free to roam the cosmos. - Free of purpose, free of obligation. - Just drifting through emptiness. The - sun was just another point of light. - -methods -======= - -var wrap = require('wordwrap'); - -wrap(stop), wrap(start, stop, params={mode:"soft"}) ---------------------------------------------------- - -Returns a function that takes a string and returns a new string. - -Pad out lines with spaces out to column `start` and then wrap until column -`stop`. If a word is longer than `stop - start` characters it will overflow. - -In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are -longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break -up chunks longer than `stop - start`. - -wrap.hard(start, stop) ----------------------- - -Like `wrap()` but with `params.mode = "hard"`. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js deleted file mode 100644 index a3fbaae..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/center.js +++ /dev/null @@ -1,10 +0,0 @@ -var wrap = require('wordwrap')(20, 60); -console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' -)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js deleted file mode 100644 index a4665e1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/example/meat.js +++ /dev/null @@ -1,3 +0,0 @@ -var wrap = require('wordwrap')(15); - -console.log(wrap('You and your whole family are made out of meat.')); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js deleted file mode 100644 index c9bc945..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/index.js +++ /dev/null @@ -1,76 +0,0 @@ -var wordwrap = module.exports = function (start, stop, params) { - if (typeof start === 'object') { - params = start; - start = params.start; - stop = params.stop; - } - - if (typeof stop === 'object') { - params = stop; - start = start || params.start; - stop = undefined; - } - - if (!stop) { - stop = start; - start = 0; - } - - if (!params) params = {}; - var mode = params.mode || 'soft'; - var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; - - return function (text) { - var chunks = text.toString() - .split(re) - .reduce(function (acc, x) { - if (mode === 'hard') { - for (var i = 0; i < x.length; i += stop - start) { - acc.push(x.slice(i, i + stop - start)); - } - } - else acc.push(x) - return acc; - }, []) - ; - - return chunks.reduce(function (lines, rawChunk) { - if (rawChunk === '') return lines; - - var chunk = rawChunk.replace(/\t/g, ' '); - - var i = lines.length - 1; - if (lines[i].length + chunk.length > stop) { - lines[i] = lines[i].replace(/\s+$/, ''); - - chunk.split(/\n/).forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else if (chunk.match(/\n/)) { - var xs = chunk.split(/\n/); - lines[i] += xs.shift(); - xs.forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else { - lines[i] += chunk; - } - - return lines; - }, [ new Array(start + 1).join(' ') ]).join('\n'); - }; -}; - -wordwrap.soft = wordwrap; - -wordwrap.hard = function (start, stop) { - return wordwrap(start, stop, { mode : 'hard' }); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json deleted file mode 100644 index 928d935..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "wordwrap", - "description": "Wrap those words. Show them at what columns to start and stop.", - "version": "0.0.2", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-wordwrap.git" - }, - "main": "./index.js", - "keywords": [ - "word", - "wrap", - "rule", - "format", - "column" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "expresso" - }, - "devDependencies": { - "expresso": "=0.7.x" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT/X11", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", - "_id": "wordwrap@0.0.2", - "_from": "wordwrap@>=0.0.1 <0.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js deleted file mode 100644 index 749292e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/break.js +++ /dev/null @@ -1,30 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('../'); - -exports.hard = function () { - var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' - + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' - + '"browser":"chrome/6.0"}' - ; - var s_ = wordwrap.hard(80)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 2); - assert.ok(lines[0].length < 80); - assert.ok(lines[1].length < 80); - - assert.equal(s, s_.replace(/\n/g, '')); -}; - -exports.break = function () { - var s = new Array(55+1).join('a'); - var s_ = wordwrap.hard(20)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 3); - assert.ok(lines[0].length === 20); - assert.ok(lines[1].length === 20); - assert.ok(lines[2].length === 15); - - assert.equal(s, s_.replace(/\n/g, '')); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt deleted file mode 100644 index aa3f490..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/idleness.txt +++ /dev/null @@ -1,63 +0,0 @@ -In Praise of Idleness - -By Bertrand Russell - -[1932] - -Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. - -Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. - -One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. - -But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. - -All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. - -First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. - -Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. - -From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. - -It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. - -Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. - -This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? - -The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. - -Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. - -I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. - -If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. - -The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. - -In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. - -The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. - -For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? - -In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. - -In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. - -The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. - -It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. - -When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. - -In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. - -The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. - -In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. - -Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. - -[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js deleted file mode 100644 index 0cfb76d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/node_modules/wordwrap/test/wrap.js +++ /dev/null @@ -1,31 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('wordwrap'); - -var fs = require('fs'); -var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); - -exports.stop80 = function () { - var lines = wordwrap(80)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 80, 'line > 80 columns'); - var chunks = line.match(/\S/) ? line.split(/\s+/) : []; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - }); -}; - -exports.start20stop60 = function () { - var lines = wordwrap(20, 100)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 100, 'line > 100 columns'); - var chunks = line - .split(/\s+/) - .filter(function (x) { return x.match(/\S/) }) - ; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); - }); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json deleted file mode 100644 index bbe848c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "optimist", - "version": "0.2.8", - "description": "Light-weight option parsing with an argv hash. No optstrings attached.", - "main": "./index.js", - "directories": { - "lib": ".", - "test": "test", - "example": "examples" - }, - "dependencies": { - "wordwrap": ">=0.0.1 <0.1.0" - }, - "devDependencies": { - "hashish": "0.0.x", - "expresso": "0.7.x" - }, - "scripts": { - "test": "expresso" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-optimist.git" - }, - "keywords": [ - "argument", - "args", - "option", - "parser", - "parsing", - "cli", - "command" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", - "_id": "optimist@0.2.8", - "_from": "optimist@0.2" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js deleted file mode 100644 index 3d6df6e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_.js +++ /dev/null @@ -1,66 +0,0 @@ -var spawn = require('child_process').spawn; -var assert = require('assert'); - -exports.dotSlashEmpty = function () { - testCmd('./bin.js', []); -}; - -exports.dotSlashArgs = function () { - testCmd('./bin.js', [ 'a', 'b', 'c' ]); -}; - -exports.nodeEmpty = function () { - testCmd('node bin.js', []); -}; - -exports.nodeArgs = function () { - testCmd('node bin.js', [ 'x', 'y', 'z' ]); -}; - -exports.whichNodeEmpty = function () { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - testCmd(buf.toString().trim() + ' bin.js', []); - }); - - which.stderr.on('data', function (err) { - assert.fail(err.toString()); - }); -}; - -exports.whichNodeArgs = function () { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]); - }); - - which.stderr.on('data', function (err) { - assert.fail(err.toString()); - }); -}; - -function testCmd (cmd, args) { - var to = setTimeout(function () { - assert.fail('Never got stdout data.') - }, 5000); - - var oldDir = process.cwd(); - process.chdir(__dirname + '/_'); - - var cmds = cmd.split(' '); - - var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); - process.chdir(oldDir); - - bin.stderr.on('data', function (err) { - assert.fail(err.toString()); - }); - - bin.stdout.on('data', function (buf) { - clearTimeout(to); - var _ = JSON.parse(buf.toString()); - assert.eql(_.map(String), args.map(String)); - }); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js deleted file mode 100644 index 3d09606..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/argv.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.log(JSON.stringify(process.argv)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js deleted file mode 100644 index 4a18d85..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/_/bin.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('../../index').argv -console.log(JSON.stringify(argv._)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js deleted file mode 100644 index eed467e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/parse.js +++ /dev/null @@ -1,304 +0,0 @@ -var optimist = require('../index'); -var assert = require('assert'); -var path = require('path'); - -var localExpresso = path.normalize( - __dirname + '/../node_modules/.bin/expresso' -); - -var expresso = process.argv[1] === localExpresso - ? 'node ./node_modules/.bin/expresso' - : 'expresso' -; - -exports['short boolean'] = function () { - var parse = optimist.parse([ '-b' ]); - assert.eql(parse, { b : true, _ : [], $0 : expresso }); - assert.eql(typeof parse.b, 'boolean'); -}; - -exports['long boolean'] = function () { - assert.eql( - optimist.parse([ '--bool' ]), - { bool : true, _ : [], $0 : expresso } - ); -}; - -exports.bare = function () { - assert.eql( - optimist.parse([ 'foo', 'bar', 'baz' ]), - { _ : [ 'foo', 'bar', 'baz' ], $0 : expresso } - ); -}; - -exports['short group'] = function () { - assert.eql( - optimist.parse([ '-cats' ]), - { c : true, a : true, t : true, s : true, _ : [], $0 : expresso } - ); -}; - -exports['short group next'] = function () { - assert.eql( - optimist.parse([ '-cats', 'meow' ]), - { c : true, a : true, t : true, s : 'meow', _ : [], $0 : expresso } - ); -}; - -exports['short capture'] = function () { - assert.eql( - optimist.parse([ '-h', 'localhost' ]), - { h : 'localhost', _ : [], $0 : expresso } - ); -}; - -exports['short captures'] = function () { - assert.eql( - optimist.parse([ '-h', 'localhost', '-p', '555' ]), - { h : 'localhost', p : 555, _ : [], $0 : expresso } - ); -}; - -exports['long capture sp'] = function () { - assert.eql( - optimist.parse([ '--pow', 'xixxle' ]), - { pow : 'xixxle', _ : [], $0 : expresso } - ); -}; - -exports['long capture eq'] = function () { - assert.eql( - optimist.parse([ '--pow=xixxle' ]), - { pow : 'xixxle', _ : [], $0 : expresso } - ); -}; - -exports['long captures sp'] = function () { - assert.eql( - optimist.parse([ '--host', 'localhost', '--port', '555' ]), - { host : 'localhost', port : 555, _ : [], $0 : expresso } - ); -}; - -exports['long captures eq'] = function () { - assert.eql( - optimist.parse([ '--host=localhost', '--port=555' ]), - { host : 'localhost', port : 555, _ : [], $0 : expresso } - ); -}; - -exports['mixed short bool and capture'] = function () { - assert.eql( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : expresso, - } - ); -}; - -exports['short and long'] = function () { - assert.eql( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : expresso, - } - ); -}; - -exports.no = function () { - assert.eql( - optimist.parse([ '--no-moo' ]), - { moo : false, _ : [], $0 : expresso } - ); -}; - -exports.multi = function () { - assert.eql( - optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), - { v : ['a','b','c'], _ : [], $0 : expresso } - ); -}; - -exports.comprehensive = function () { - assert.eql( - optimist.parse([ - '--name=meowmers', 'bare', '-cats', 'woo', - '-h', 'awesome', '--multi=quux', - '--key', 'value', - '-b', '--bool', '--no-meep', '--multi=baz', - '--', '--not-a-flag', 'eek' - ]), - { - c : true, - a : true, - t : true, - s : 'woo', - h : 'awesome', - b : true, - bool : true, - key : 'value', - multi : [ 'quux', 'baz' ], - meep : false, - name : 'meowmers', - _ : [ 'bare', '--not-a-flag', 'eek' ], - $0 : expresso - } - ); -}; - -exports.nums = function () { - var argv = optimist.parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789', - ]); - assert.eql(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ], - $0 : expresso - }); - assert.eql(typeof argv.x, 'number'); - assert.eql(typeof argv.y, 'number'); - assert.eql(typeof argv.z, 'number'); - assert.eql(typeof argv.w, 'string'); - assert.eql(typeof argv.hex, 'number'); - assert.eql(typeof argv._[0], 'number'); -}; - -exports['flag boolean'] = function () { - var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; - assert.eql(parse, { t : true, _ : [ 'moo' ], $0 : expresso }); - assert.eql(typeof parse.t, 'boolean'); -}; - -exports['flag boolean value'] = function () { - var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) - .boolean(['t', 'verbose']).default('verbose', true).argv; - - assert.eql(parse, { - verbose: false, - t: true, - _: ['moo'], - $0 : expresso - }); - - assert.eql(typeof parse.verbose, 'boolean'); - assert.eql(typeof parse.t, 'boolean'); -}; - -exports['flag boolean default false'] = function () { - var parse = optimist(['moo']) - .boolean(['t', 'verbose']) - .default('verbose', false) - .default('t', false).argv; - - assert.eql(parse, { - verbose: false, - t: false, - _: ['moo'], - $0 : expresso - }); - - assert.eql(typeof parse.verbose, 'boolean'); - assert.eql(typeof parse.t, 'boolean'); - -}; - -exports['boolean groups'] = function () { - var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) - .boolean(['x','y','z']).argv; - - assert.eql(parse, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ], - $0 : expresso - }); - - assert.eql(typeof parse.x, 'boolean'); - assert.eql(typeof parse.y, 'boolean'); - assert.eql(typeof parse.z, 'boolean'); -}; - -exports.strings = function () { - var s = optimist([ '-s', '0001234' ]).string('s').argv.s; - assert.eql(s, '0001234'); - assert.eql(typeof s, 'string'); - - var x = optimist([ '-x', '56' ]).string('x').argv.x; - assert.eql(x, '56'); - assert.eql(typeof x, 'string'); -}; - -exports.stringArgs = function () { - var s = optimist([ ' ', ' ' ]).string('_').argv._; - assert.eql(s.length, 2); - assert.eql(typeof s[0], 'string'); - assert.eql(s[0], ' '); - assert.eql(typeof s[1], 'string'); - assert.eql(s[1], ' '); -}; - -exports.slashBreak = function () { - assert.eql( - optimist.parse([ '-I/foo/bar/baz' ]), - { I : '/foo/bar/baz', _ : [], $0 : expresso } - ); - assert.eql( - optimist.parse([ '-xyz/foo/bar/baz' ]), - { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : expresso } - ); -}; - -exports.alias = function () { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', 'zoom') - .argv - ; - assert.equal(argv.zoom, 55); - assert.equal(argv.z, argv.zoom); - assert.equal(argv.f, 11); -}; - -exports.multiAlias = function () { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', [ 'zm', 'zoom' ]) - .argv - ; - assert.equal(argv.zoom, 55); - assert.equal(argv.z, argv.zoom); - assert.equal(argv.z, argv.zm); - assert.equal(argv.f, 11); -}; - -exports['boolean default true'] = function () { - var argv = optimist.options({ - sometrue: { - boolean: true, - default: true - } - }).argv; - - assert.equal(argv.sometrue, true); -}; - -exports['boolean default false'] = function () { - var argv = optimist.options({ - somefalse: { - boolean: true, - default: false - } - }).argv; - - assert.equal(argv.somefalse, false); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js deleted file mode 100644 index 6593b9b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/optimist/test/usage.js +++ /dev/null @@ -1,256 +0,0 @@ -var Hash = require('hashish'); -var optimist = require('../index'); -var assert = require('assert'); - -exports.usageFail = function () { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - assert.deepEqual( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - assert.deepEqual( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'Options:', - ' -x [required]', - ' -y [required]', - 'Missing required arguments: y', - ] - ); - assert.deepEqual(r.logs, []); - assert.ok(r.exit); -}; - -exports.usagePass = function () { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - assert.deepEqual(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); -}; - -exports.checkPass = function () { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - assert.deepEqual(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); -}; - -exports.checkFail = function () { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - - assert.deepEqual( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - assert.deepEqual( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'You forgot about -y' - ] - ); - - assert.deepEqual(r.logs, []); - assert.ok(r.exit); -}; - -exports.checkCondPass = function () { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - assert.deepEqual(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); -}; - -exports.checkCondFail = function () { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - - assert.deepEqual( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - assert.deepEqual( - r.errors.join('\n').split(/\n+/).join('\n'), - 'Usage: ./usage -x NUM -y NUM\n' - + 'Argument check failed: ' + checker.toString() - ); - - assert.deepEqual(r.logs, []); - assert.ok(r.exit); -}; - -exports.countPass = function () { - var r = checkUsage(function () { - return optimist('1 2 3 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - assert.deepEqual(r, { - result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); -}; - -exports.countFail = function () { - var r = checkUsage(function () { - return optimist('1 2 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - assert.deepEqual( - r.result, - { _ : [ '1', '2' ], moo : true, $0 : './usage' } - ); - - assert.deepEqual( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage [x] [y] [z] {OPTIONS}', - 'Not enough non-option arguments: got 2, need at least 3', - ] - ); - - assert.deepEqual(r.logs, []); - assert.ok(r.exit); -}; - -exports.defaultSingles = function () { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70 --powsy'.split(' ')) - .default('foo', 5) - .default('bar', 6) - .default('baz', 7) - .argv - ; - }); - assert.eql(r.result, { - foo : '50', - bar : 6, - baz : '70', - powsy : true, - _ : [], - $0 : './usage', - }); -}; - -exports.defaultHash = function () { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70'.split(' ')) - .default({ foo : 10, bar : 20, quux : 30 }) - .argv - ; - }); - assert.eql(r.result, { - foo : '50', - bar : 20, - baz : 70, - quux : 30, - _ : [], - $0 : './usage', - }); -}; - -exports.rebase = function () { - assert.equal( - optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), - './foo/bar/baz' - ); - assert.equal( - optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), - '../../..' - ); - assert.equal( - optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), - '../pow/zoom.txt' - ); -}; - -function checkUsage (f) { - var _process = process; - process = Hash.copy(process); - var exit = false; - process.exit = function () { exit = true }; - process.env = Hash.merge(process.env, { _ : 'node' }); - process.argv = [ './usage' ]; - - var errors = []; - var logs = []; - - console._error = console.error; - console.error = function (msg) { errors.push(msg) }; - console._log = console.log; - console.log = function (msg) { logs.push(msg) }; - - var result = f(); - - process = _process; - console.error = console._error; - console.log = console._log; - - return { - errors : errors, - logs : logs, - exit : exit, - result : result, - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore deleted file mode 100644 index 13abef4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js deleted file mode 100644 index 8fadda9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/index.js +++ /dev/null @@ -1,76 +0,0 @@ -var Stream = require('stream') - -/* - was gonna use through for this, - but it does not match quite right, - because you need a seperate pause - mechanism for the readable and writable - sides. -*/ - -module.exports = function () { - var buffer = [], ended = false, destroyed = false - var stream = new Stream() - stream.writable = stream.readable = true - stream.paused = false - - stream.write = function (data) { - if(!this.paused) - this.emit('data', data) - else - buffer.push(data) - return !(this.paused || buffer.length) - } - function onEnd () { - stream.readable = false - stream.emit('end') - process.nextTick(stream.destroy.bind(stream)) - } - stream.end = function (data) { - if(data) this.write(data) - this.ended = true - this.writable = false - if(!(this.paused || buffer.length)) - return onEnd() - else - this.once('drain', onEnd) - this.drain() - } - - stream.drain = function () { - while(!this.paused && buffer.length) - this.emit('data', buffer.shift()) - //if the buffer has emptied. emit drain. - if(!buffer.length && !this.paused) - this.emit('drain') - } - - stream.resume = function () { - //this is where I need pauseRead, and pauseWrite. - //here the reading side is unpaused, - //but the writing side may still be paused. - //the whole buffer might not empity at once. - //it might pause again. - //the stream should never emit data inbetween pause()...resume() - //and write should return !buffer.length - - this.paused = false -// process.nextTick(this.drain.bind(this)) //will emit drain if buffer empties. - this.drain() - return this - } - - stream.destroy = function () { - if(destroyed) return - destroyed = ended = true - buffer.length = 0 - this.emit('close') - } - - stream.pause = function () { - stream.paused = true - return this - } - - return stream -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json deleted file mode 100644 index 7702ad5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "pause-stream", - "version": "0.0.4", - "description": "a ThroughStream that strictly buffers all readable events when paused.", - "main": "index.js", - "directories": { - "test": "test" - }, - "devDependencies": { - "stream-spec": "~0.2.0" - }, - "scripts": { - "test": "node test/index.js && node test/pause-end.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/pause-stream.git" - }, - "keywords": [ - "stream", - "pipe", - "pause", - "drain", - "buffer" - ], - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "license": [ - "MIT", - "Apache2" - ], - "readme": "# PauseStream\n\nThis is a `Stream` that will strictly buffer when paused.\nConnect it to anything you need buffered.\n\n``` js\n var ps = require('pause-stream')();\n\n badlyBehavedStream.pipe(ps.pause())\n\n aLittleLater(function (err, data) {\n ps.pipe(createAnotherStream(data))\n ps.resume()\n })\n```\n\n`PauseStream` will buffer whenever paused.\nit will buffer when yau have called `pause` manually.\nbut also when it's downstream `dest.write()===false`.\nit will attempt to drain the buffer when you call resume\nor the downstream emits `'drain'`\n\n`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec)\nand [stream-tester](https://github.com/dominictarr/stream-tester)\n", - "_id": "pause-stream@0.0.4", - "_from": "pause-stream@0.0.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown deleted file mode 100644 index 715cb52..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/readme.markdown +++ /dev/null @@ -1,24 +0,0 @@ -# PauseStream - -This is a `Stream` that will strictly buffer when paused. -Connect it to anything you need buffered. - -``` js - var ps = require('pause-stream')(); - - badlyBehavedStream.pipe(ps.pause()) - - aLittleLater(function (err, data) { - ps.pipe(createAnotherStream(data)) - ps.resume() - }) -``` - -`PauseStream` will buffer whenever paused. -it will buffer when yau have called `pause` manually. -but also when it's downstream `dest.write()===false`. -it will attempt to drain the buffer when you call resume -or the downstream emits `'drain'` - -`PauseStream` is tested using [stream-spec](https://github.com/dominictarr/stream-spec) -and [stream-tester](https://github.com/dominictarr/stream-tester) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js deleted file mode 100644 index 4aa7d5e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/index.js +++ /dev/null @@ -1,17 +0,0 @@ -var spec = require('stream-spec') -var tester = require('stream-tester') -var ps = require('..')() - -spec(ps) - .through({strict: false}) - .validateOnExit() - -var master = tester.createConsistent - -tester.createRandomStream(100) //1k random numbers - .pipe(master = tester.createConsistentStream()) - .pipe(tester.createUnpauseStream()) - .pipe(ps) - .pipe(tester.createPauseStream()) - .pipe(master.createSlave()) - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js deleted file mode 100644 index a6c27ef..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/pause-stream/test/pause-end.js +++ /dev/null @@ -1,33 +0,0 @@ - -var pause = require('..') -var assert = require('assert') - -var ps = pause() -var read = [], ended = false - -ps.on('data', function (i) { - read.push(i) -}) - -ps.on('end', function () { - ended = true -}) - -assert.deepEqual(read, []) - -ps.write(0) -ps.write(1) -ps.write(2) - -assert.deepEqual(read, [0, 1, 2]) - -ps.pause() - -assert.deepEqual(read, [0, 1, 2]) - -ps.end() -assert.equal(ended, false) -ps.resume() -assert.equal(ended, true) - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore deleted file mode 100644 index 13abef4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -node_modules/* -npm_debug.log diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE deleted file mode 100644 index 171dd97..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/LICENCE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2011 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js deleted file mode 100644 index af04340..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/examples/pretty.js +++ /dev/null @@ -1,25 +0,0 @@ - -var inspect = require('util').inspect - -if(!module.parent) { - var es = require('..') //load event-stream - es.pipe( //pipe joins streams together - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - var j - try { - j = JSON.parse(data) //try to parse input into json - } catch (err) { - return callback(null, data) //if it fails just pass it anyway - } - callback(null, inspect(j)) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } - -// run this -// -// curl -sS registry.npmjs.org/event-stream | node pretty.js -// diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js deleted file mode 100644 index 1146c96..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/index.js +++ /dev/null @@ -1,35 +0,0 @@ -//filter will reemit the data if cb(err,pass) pass is truthy - -// reduce is more tricky -// maybe we want to group the reductions or emit progress updates occasionally -// the most basic reduce just emits one 'data' event after it has recieved 'end' - - -var through = require('through') - - -module.exports = split - -function split (matcher) { - var soFar = '' - if (!matcher) - matcher = '\n' - - return through(function (buffer) { - var stream = this - , pieces = (soFar + buffer).split(matcher) - soFar = pieces.pop() - - pieces.forEach(function (piece) { - stream.emit('data', piece) - }) - - return true - }, - function () { - if(soFar) - this.emit('data', soFar) - this.emit('end') - }) -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 deleted file mode 100644 index 6366c04..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.APACHE2 +++ /dev/null @@ -1,15 +0,0 @@ -Apache License, Version 2.0 - -Copyright (c) 2011 Dominic Tarr - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT deleted file mode 100644 index 6eafbd7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/LICENSE.MIT +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2011 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js deleted file mode 100644 index cd25055..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/index.js +++ /dev/null @@ -1,65 +0,0 @@ -var Stream = require('stream') - -// through -// -// a stream that does nothing but re-emit the input. -// useful for aggregating a series of changing but not ending streams into one stream) - -exports = module.exports = through -through.through = through - -//create a readable writable stream. - -function through (write, end) { - write = write || function (data) { this.emit('data', data) } - end = end || function () { this.emit('end') } - - var ended = false, destroyed = false - var stream = new Stream() - stream.readable = stream.writable = true - stream.paused = false - stream.write = function (data) { - write.call(this, data) - return !stream.paused - } - //this will be registered as the first 'end' listener - //must call destroy next tick, to make sure we're after any - //stream piped from here. - stream.on('end', function () { - stream.readable = false - if(!stream.writable) - process.nextTick(function () { - stream.destroy() - }) - }) - - stream.end = function (data) { - if(ended) return - //this breaks, because pipe doesn't check writable before calling end. - //throw new Error('cannot call end twice') - ended = true - if(arguments.length) stream.write(data) - this.writable = false - end.call(this) - if(!this.readable) - this.destroy() - } - stream.destroy = function () { - if(destroyed) return - destroyed = true - ended = true - stream.writable = stream.readable = false - stream.emit('close') - } - stream.pause = function () { - stream.paused = true - } - stream.resume = function () { - if(stream.paused) { - stream.paused = false - stream.emit('drain') - } - } - return stream -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json deleted file mode 100644 index 3ecb71d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "through", - "version": "0.0.4", - "description": "simplified stream contruction", - "main": "index.js", - "scripts": { - "test": "asynct test/*.js" - }, - "devDependencies": { - "stream-spec": "0", - "assertions": "2", - "asynct": "1" - }, - "keywords": [ - "stream", - "streams", - "user-streams", - "pipe" - ], - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "license": "MIT", - "readme": "#through\n\n[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)\n\nEasy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic.\nUse `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream).\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\n## License\n\nMIT / Apache2\n", - "_id": "through@0.0.4", - "_from": "through@0.0.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown deleted file mode 100644 index ce9b9e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/readme.markdown +++ /dev/null @@ -1,26 +0,0 @@ -#through - -[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) - -Easy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic. -Use `this.pause()` and `this.resume()` to manage flow. -Check `this.paused` to see current flow state. (write always returns `!this.paused`) - -this function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream). - -``` js -var through = require('through') - -through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) - -``` - -## License - -MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js deleted file mode 100644 index 25a6ea7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/node_modules/through/test/index.js +++ /dev/null @@ -1,113 +0,0 @@ - -var spec = require('stream-spec') -var through = require('..') -var a = require('assertions') - -/* - I'm using these two functions, and not streams and pipe - so there is less to break. if this test fails it must be - the implementation of _through_ -*/ - -function write(array, stream) { - array = array.slice() - function next() { - while(array.length) - if(stream.write(array.shift()) === false) - return stream.once('drain', next) - - stream.end() - } - - next() -} - -function read(stream, callback) { - var actual = [] - stream.on('data', function (data) { - actual.push(data) - }) - stream.once('end', function () { - callback(null, actual) - }) - stream.once('error', function (err) { - callback(err) - }) -} - -exports['simple defaults'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through() - spec(t) - .through() - .pausable() - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - - write(expected, t) -} - -exports['simple functions'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through(function (data) { - this.emit('data', data*2) - }) - spec(t) - .through() - .pausable() - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected.map(function (data) { - return data*2 - })) - test.done() - }) - - write(expected, t) -} -exports['pauses'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l) //Math.random()) - - var t = through() - spec(t) - .through() - .pausable() - .validateOnExit() - - t.on('data', function () { - if(Math.random() > 0.1) return - t.pause() - process.nextTick(function () { - t.resume() - }) - }) - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - - write(expected, t) -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json deleted file mode 100644 index a592dad..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "split", - "version": "0.0.0", - "description": "split a Text Stream into a Line Stream", - "homepage": "http://github.com/dominictarr/split", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/split.git" - }, - "dependencies": { - "through": "0.0.4" - }, - "devDependencies": { - "asynct": "*", - "it-is": "1", - "ubelt": "~2.9", - "stream-spec": "~0.2", - "event-stream": "~3.0.2" - }, - "scripts": { - "test": "asynct test/" - }, - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "http://bit.ly/dominictarr" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# Split (matcher)\n\n\n\nBreak up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` \n\nExample, read every line in a file ...\n\n``` js\n fs.createReadStream(file)\n .pipe(split())\n .on('data', function (line) {\n //each chunk now is a seperate line!\n })\n\n```\n\n`split` takes the same arguments as `string.split` except it defaults to '\\n' instead of ',', and the optional `limit` paremeter is ignored.\n[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split)\n\n", - "_id": "split@0.0.0", - "_from": "split@0.0.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown deleted file mode 100644 index 57c8edc..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/readme.markdown +++ /dev/null @@ -1,20 +0,0 @@ -# Split (matcher) - - - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js - fs.createReadStream(file) - .pipe(split()) - .on('data', function (line) { - //each chunk now is a seperate line! - }) - -``` - -`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` paremeter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js deleted file mode 100644 index a6a3b1b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/split/test/split.asynct.js +++ /dev/null @@ -1,47 +0,0 @@ -var es = require('event-stream') - , it = require('it-is').style('colour') - , d = require('ubelt') - , split = require('..') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , spec = require('stream-spec') - -exports ['es.split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 deleted file mode 100644 index 6366c04..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.APACHE2 +++ /dev/null @@ -1,15 +0,0 @@ -Apache License, Version 2.0 - -Copyright (c) 2011 Dominic Tarr - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT deleted file mode 100644 index 6eafbd7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/LICENSE.MIT +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2011 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js deleted file mode 100644 index 7072b37..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/index.js +++ /dev/null @@ -1,100 +0,0 @@ -var Stream = require('stream') - -// through -// -// a stream that does nothing but re-emit the input. -// useful for aggregating a series of changing but not ending streams into one stream) - - - -exports = module.exports = through -through.through = through - -//create a readable writable stream. - -function through (write, end) { - write = write || function (data) { this.emit('data', data) } - end = end || function () { this.emit('end') } - - var ended = false, destroyed = false - var stream = new Stream(), buffer = [] - stream.buffer = buffer - stream.readable = stream.writable = true - stream.paused = false - stream.write = function (data) { - write.call(this, data) - return !stream.paused - } - - function drain() { - while(buffer.length && !stream.paused) { - var data = buffer.shift() - if(null === data) - return stream.emit('end') - else - stream.emit('data', data) - } - } - - stream.queue = function (data) { - buffer.push(data) - drain() - } - - //this will be registered as the first 'end' listener - //must call destroy next tick, to make sure we're after any - //stream piped from here. - //this is only a problem if end is not emitted synchronously. - //a nicer way to do this is to make sure this is the last listener for 'end' - - stream.on('end', function () { - stream.readable = false - if(!stream.writable) - process.nextTick(function () { - stream.destroy() - }) - }) - - function _end () { - stream.writable = false - end.call(stream) - if(!stream.readable) - stream.destroy() - } - - stream.end = function (data) { - if(ended) return - //this breaks, because pipe doesn't check writable before calling end. - //throw new Error('cannot call end twice') - ended = true - if(arguments.length) stream.write(data) - if(!buffer.length) _end() - } - - stream.destroy = function () { - if(destroyed) return - destroyed = true - ended = true - buffer.length = 0 - stream.writable = stream.readable = false - stream.emit('close') - } - - stream.pause = function () { - if(stream.paused) return - stream.paused = true - stream.emit('pause') - } - stream.resume = function () { - if(stream.paused) { - stream.paused = false - } - drain() - //may have become paused again, - //as drain emits 'data'. - if(!stream.paused) - stream.emit('drain') - } - return stream -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json deleted file mode 100644 index 168247e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "through", - "version": "1.1.0", - "description": "simplified stream contruction", - "main": "index.js", - "scripts": { - "test": "asynct test/*.js" - }, - "devDependencies": { - "stream-spec": "0", - "assertions": "2", - "asynct": "1" - }, - "keywords": [ - "stream", - "streams", - "user-streams", - "pipe" - ], - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/dominictarr/through.git" - }, - "homepage": "http://github.com/dominictarr/through", - "readme": "#through\n\n[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)\n\nEasy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic.\nUse `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream).\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\nor, with buffering on pause, use `this.queue(data)`,\ndata *cannot* be `null`. `this.queue(null)` will emit 'end'\nwhen it gets to the `null` element.\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.queue(data)\n //this.pause() \n },\n function end () { //optional\n this.queue(null)\n })\n\n```\n\n\n## License\n\nMIT / Apache2\n", - "_id": "through@1.1.0", - "_from": "through@~1.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown deleted file mode 100644 index 1b687e9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/readme.markdown +++ /dev/null @@ -1,44 +0,0 @@ -#through - -[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) - -Easy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic. -Use `this.pause()` and `this.resume()` to manage flow. -Check `this.paused` to see current flow state. (write always returns `!this.paused`) - -this function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream). - -``` js -var through = require('through') - -through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) - -``` - -or, with buffering on pause, use `this.queue(data)`, -data *cannot* be `null`. `this.queue(null)` will emit 'end' -when it gets to the `null` element. - -``` js -var through = require('through') - -through(function write(data) { - this.queue(data) - //this.pause() - }, - function end () { //optional - this.queue(null) - }) - -``` - - -## License - -MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js deleted file mode 100644 index 1ce4b0d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/buffering.js +++ /dev/null @@ -1,37 +0,0 @@ -var through = require('..') - -// must emit end before close. - -exports['buffering'] = function (t) { - var ts = through(function (data) { - this.queue(data) - }, function () { - this.queue(null) - }) - - var ended = false, actual = [] - - ts.on('data', actual.push.bind(actual)) - ts.on('end', function () { - ended = true - }) - - ts.write(1) - ts.write(2) - ts.write(3) - t.deepEqual(actual, [1, 2, 3]) - ts.pause() - ts.write(4) - ts.write(5) - ts.write(6) - t.deepEqual(actual, [1, 2, 3]) - ts.resume() - t.deepEqual(actual, [1, 2, 3, 4, 5, 6]) - ts.pause() - ts.end() - t.ok(!ended) - ts.resume() - t.ok(ended) - t.end() - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js deleted file mode 100644 index 280da0a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/end.js +++ /dev/null @@ -1,27 +0,0 @@ -var through = require('..') - -// must emit end before close. - -exports['end before close'] = function (t) { - var ts = through() - var ended = false, closed = false - - ts.on('end', function () { - t.ok(!closed) - ended = true - }) - ts.on('close', function () { - t.ok(ended) - closed = true - }) - - ts.write(1) - ts.write(2) - ts.write(3) - ts.end() - t.ok(ended) - t.ok(closed) - - t.end() - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js deleted file mode 100644 index 25a6ea7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/node_modules/through/test/index.js +++ /dev/null @@ -1,113 +0,0 @@ - -var spec = require('stream-spec') -var through = require('..') -var a = require('assertions') - -/* - I'm using these two functions, and not streams and pipe - so there is less to break. if this test fails it must be - the implementation of _through_ -*/ - -function write(array, stream) { - array = array.slice() - function next() { - while(array.length) - if(stream.write(array.shift()) === false) - return stream.once('drain', next) - - stream.end() - } - - next() -} - -function read(stream, callback) { - var actual = [] - stream.on('data', function (data) { - actual.push(data) - }) - stream.once('end', function () { - callback(null, actual) - }) - stream.once('error', function (err) { - callback(err) - }) -} - -exports['simple defaults'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through() - spec(t) - .through() - .pausable() - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - - write(expected, t) -} - -exports['simple functions'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through(function (data) { - this.emit('data', data*2) - }) - spec(t) - .through() - .pausable() - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected.map(function (data) { - return data*2 - })) - test.done() - }) - - write(expected, t) -} -exports['pauses'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l) //Math.random()) - - var t = through() - spec(t) - .through() - .pausable() - .validateOnExit() - - t.on('data', function () { - if(Math.random() > 0.1) return - t.pause() - process.nextTick(function () { - t.resume() - }) - }) - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - - write(expected, t) -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json deleted file mode 100644 index 15f8ea8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "event-stream", - "version": "3.0.7", - "description": "construct pipes of streams of events", - "homepage": "http://github.com/dominictarr/event-stream", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/event-stream.git" - }, - "dependencies": { - "optimist": "0.2", - "through": "1.1.0", - "duplexer": "~0.0.2", - "from": "~0", - "map-stream": "0.0.1", - "pause-stream": "0.0.4", - "split": "0.0.0" - }, - "devDependencies": { - "asynct": "*", - "it-is": "1", - "ubelt": "~2.9", - "stream-spec": "~0.2" - }, - "scripts": { - "test": "asynct test/" - }, - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "http://bit.ly/dominictarr" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# EventStream\n\n\n\n[Streams](http://nodejs.org/api/streams.html \"Stream\") are nodes best and most misunderstood idea, and \n_EventStream_ is a toolkit to make creating and working with streams easy. \n\nNormally, streams are only used of IO, \nbut in event stream we send all kinds of objects down the pipe. \nIf your application's input and output are streams, \nshouldn't the throughput be a stream too? \n\nThe *EventStream* functions resemble the array functions, \nbecause Streams are like Arrays, but laid out in time, rather than in memory. \n\nAll the `event-stream` functions return instances of `Stream`.\n\nStream API docs: [nodejs.org/api/streams](http://nodejs.org/api/streams.html \"Stream\")\n\nNOTE: I shall use the term \"through stream\" to refer to a stream that is writable and readable. \n\n###[simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js):\n\n``` js\n\n//pretty.js\n\nif(!module.parent) {\n var es = require('event-stream')\n es.pipeline( //connect streams together with `pipe`\n process.openStdin(), //open stdin\n es.split(), //split stream to break on newlines\n es.map(function (data, callback) {//turn this async function into a stream\n callback(null\n , inspect(JSON.parse(data))) //render it nicely\n }),\n process.stdout // pipe it to stdout !\n )\n }\n```\nrun it ...\n\n``` bash \ncurl -sS registry.npmjs.org/event-stream | node pretty.js\n```\n \n[node Stream documentation](http://nodejs.org/api/streams.html)\n\n## through (write?, end?)\n\nReemits data synchronously. Easy way to create syncronous through streams.\nPass in an optional `write` and `end` methods. They will be called in the \ncontext of the stream. Use `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in `event-stream`.\n\n``` js\n\nes.through(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\n##map (asyncFunction)\n\nCreate a through stream from an asyncronous function. \n\n``` js\nvar es = require('event-stream')\n\nes.map(function (data, callback) {\n //transform data\n // ...\n callback(null, data)\n})\n\n```\n\nEach map MUST call the callback. It may callback with data, with an error or with no arguments, \n\n * `callback()` drop this data. \n this makes the map work like `filter`, \n note:`callback(null,null)` is not the same, and will emit `null`\n\n * `callback(null, newData)` turn data into newData\n \n * `callback(error)` emit an error for this item.\n\n>Note: if a callback is not called, `map` will think that it is still being processed, \n>every call must be answered or the stream will not know when to end. \n>\n>Also, if the callback is called more than once, every call but the first will be ignored.\n\n## mapSync (syncFunction)\n\nSame as `map`, but the callback is called synchronously. Based on `es.through`\n\n## split (matcher)\n\nBreak up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` \n\nExample, read every line in a file ...\n\n``` js\n es.pipeline(\n fs.createReadStream(file, {flags: 'r'}),\n es.split(),\n es.map(function (line, cb) {\n //do something with the line \n cb(null, line)\n })\n )\n\n```\n\n`split` takes the same arguments as `string.split` except it defaults to '\\n' instead of ',', and the optional `limit` paremeter is ignored.\n[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split)\n\n## join (seperator)\n\ncreate a through stream that emits `seperator` between each chunk, just like Array#join.\n\n(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`)\n\n## replace (from, to)\n\nReplace all occurences of `from` with `to`. `from` may be a `String` or a `RegExp`. \nWorks just like `string.split(from).join(to)`, but streaming.\n\n\n## parse\n\nConvienience function for parsing JSON chunks. For newline seperated JSON,\nuse with `es.split`\n\n``` js\nfs.createReadStream(filename)\n .pipe(es.split()) //defaults to lines.\n .pipe(es.parse())\n```\n\n## stringify\n\nconvert javascript objects into lines of text. The text will have whitespace escaped and have a `\\n` appended, so it will be compatible with `es.parse`\n\n``` js\nobjectStream\n .pipe(es.stringify())\n .pipe(fs.createWriteStream(filename))\n```\n\n##readable (asyncFunction) \n\ncreate a readable stream (that respects pause) from an async function. \nwhile the stream is not paused, \nthe function will be polled with `(count, callback)`, \nand `this` will be the readable stream.\n\n``` js\n\nes.readable(function (count, callback) {\n if(streamHasEnded)\n return this.emit('end')\n \n //...\n \n this.emit('data', data) //use this way to emit multiple chunks per call.\n \n callback() // you MUST always call the callback eventually.\n // the function will not be called again until you do this.\n})\n```\nyou can also pass the data and the error to the callback. \nyou may only call the callback once. \ncalling the same callback more than once will have no effect. \n\n##readArray (array)\n\nCreate a readable stream from an Array.\n\nJust emit each item as a data event, respecting `pause` and `resume`.\n\n``` js\n var es = require('event-stream')\n , reader = es.readArray([1,2,3])\n\n reader.pipe(...)\n```\n\n## writeArray (callback)\n\ncreate a writeable stream from a callback, \nall `data` events are stored in an array, which is passed to the callback when the stream ends.\n\n``` js\n var es = require('event-stream')\n , reader = es.readArray([1, 2, 3])\n , writer = es.writeArray(function (err, array){\n //array deepEqual [1, 2, 3]\n })\n\n reader.pipe(writer)\n```\n\n## pipeline (stream1,...,streamN)\n\nTurn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream\nand reads from the last stream. \n\nListening for 'error' will recieve errors from all streams inside the pipe.\n\n> `connect` is an alias for `pipeline`.\n\n``` js\n\n es.pipeline( //connect streams together with `pipe`\n process.openStdin(), //open stdin\n es.split(), //split stream to break on newlines\n es.map(function (data, callback) {//turn this async function into a stream\n callback(null\n , inspect(JSON.parse(data))) //render it nicely\n }),\n process.stdout // pipe it to stdout !\n )\n```\n\n## pause () \n\nA stream that buffers all chunks when paused.\n\n\n``` js\n var ps = es.pause()\n ps.pause() //buffer the stream, also do not allow 'end' \n ps.resume() //allow chunks through\n```\n\n## duplex (writeStream, readStream)\n\nTakes a writable stream and a readable stream and makes them appear as a readable writable stream.\n\nIt is assumed that the two streams are connected to each other in some way. \n\n(This is used by `pipeline` and `child`.)\n\n``` js\n var grep = cp.exec('grep Stream')\n\n es.duplex(grep.stdin, grep.stdout)\n```\n\n## child (child_process)\n\nCreate a through stream from a child process ...\n\n``` js\n var cp = require('child_process')\n\n es.child(cp.exec('grep Stream')) // a through stream\n\n```\n\n## wait (callback)\n\nwaits for stream to emit 'end'.\njoins chunks of a stream into a single string. \ntakes an optional callback, which will be passed the \ncomplete string when it receives the 'end' event.\n\nalso, emits a simgle 'data' event.\n\n``` js\n\nreadStream.pipe(es.join(function (err, text) {\n // have complete text here.\n}))\n\n```\n\n\n", - "_id": "event-stream@3.0.7", - "_from": "event-stream@~3.0.7" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown deleted file mode 100644 index e83724a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/readme.markdown +++ /dev/null @@ -1,286 +0,0 @@ -# EventStream - - - -[Streams](http://nodejs.org/api/streams.html "Stream") are nodes best and most misunderstood idea, and -_EventStream_ is a toolkit to make creating and working with streams easy. - -Normally, streams are only used of IO, -but in event stream we send all kinds of objects down the pipe. -If your application's input and output are streams, -shouldn't the throughput be a stream too? - -The *EventStream* functions resemble the array functions, -because Streams are like Arrays, but laid out in time, rather than in memory. - -All the `event-stream` functions return instances of `Stream`. - -Stream API docs: [nodejs.org/api/streams](http://nodejs.org/api/streams.html "Stream") - -NOTE: I shall use the term "through stream" to refer to a stream that is writable and readable. - -###[simple example](https://github.com/dominictarr/event-stream/blob/master/examples/pretty.js): - -``` js - -//pretty.js - -if(!module.parent) { - var es = require('event-stream') - es.pipeline( //connect streams together with `pipe` - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - callback(null - , inspect(JSON.parse(data))) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) - } -``` -run it ... - -``` bash -curl -sS registry.npmjs.org/event-stream | node pretty.js -``` - -[node Stream documentation](http://nodejs.org/api/streams.html) - -## through (write?, end?) - -Reemits data synchronously. Easy way to create syncronous through streams. -Pass in an optional `write` and `end` methods. They will be called in the -context of the stream. Use `this.pause()` and `this.resume()` to manage flow. -Check `this.paused` to see current flow state. (write always returns `!this.paused`) - -this function is the basis for most of the syncronous streams in `event-stream`. - -``` js - -es.through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) - -``` - -##map (asyncFunction) - -Create a through stream from an asyncronous function. - -``` js -var es = require('event-stream') - -es.map(function (data, callback) { - //transform data - // ... - callback(null, data) -}) - -``` - -Each map MUST call the callback. It may callback with data, with an error or with no arguments, - - * `callback()` drop this data. - this makes the map work like `filter`, - note:`callback(null,null)` is not the same, and will emit `null` - - * `callback(null, newData)` turn data into newData - - * `callback(error)` emit an error for this item. - ->Note: if a callback is not called, `map` will think that it is still being processed, ->every call must be answered or the stream will not know when to end. -> ->Also, if the callback is called more than once, every call but the first will be ignored. - -## mapSync (syncFunction) - -Same as `map`, but the callback is called synchronously. Based on `es.through` - -## split (matcher) - -Break up a stream and reassemble it so that each line is a chunk. matcher may be a `String`, or a `RegExp` - -Example, read every line in a file ... - -``` js - es.pipeline( - fs.createReadStream(file, {flags: 'r'}), - es.split(), - es.map(function (line, cb) { - //do something with the line - cb(null, line) - }) - ) - -``` - -`split` takes the same arguments as `string.split` except it defaults to '\n' instead of ',', and the optional `limit` paremeter is ignored. -[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) - -## join (seperator) - -create a through stream that emits `seperator` between each chunk, just like Array#join. - -(for legacy reasons, if you pass a callback instead of a string, join is a synonym for `es.wait`) - -## replace (from, to) - -Replace all occurences of `from` with `to`. `from` may be a `String` or a `RegExp`. -Works just like `string.split(from).join(to)`, but streaming. - - -## parse - -Convienience function for parsing JSON chunks. For newline seperated JSON, -use with `es.split` - -``` js -fs.createReadStream(filename) - .pipe(es.split()) //defaults to lines. - .pipe(es.parse()) -``` - -## stringify - -convert javascript objects into lines of text. The text will have whitespace escaped and have a `\n` appended, so it will be compatible with `es.parse` - -``` js -objectStream - .pipe(es.stringify()) - .pipe(fs.createWriteStream(filename)) -``` - -##readable (asyncFunction) - -create a readable stream (that respects pause) from an async function. -while the stream is not paused, -the function will be polled with `(count, callback)`, -and `this` will be the readable stream. - -``` js - -es.readable(function (count, callback) { - if(streamHasEnded) - return this.emit('end') - - //... - - this.emit('data', data) //use this way to emit multiple chunks per call. - - callback() // you MUST always call the callback eventually. - // the function will not be called again until you do this. -}) -``` -you can also pass the data and the error to the callback. -you may only call the callback once. -calling the same callback more than once will have no effect. - -##readArray (array) - -Create a readable stream from an Array. - -Just emit each item as a data event, respecting `pause` and `resume`. - -``` js - var es = require('event-stream') - , reader = es.readArray([1,2,3]) - - reader.pipe(...) -``` - -## writeArray (callback) - -create a writeable stream from a callback, -all `data` events are stored in an array, which is passed to the callback when the stream ends. - -``` js - var es = require('event-stream') - , reader = es.readArray([1, 2, 3]) - , writer = es.writeArray(function (err, array){ - //array deepEqual [1, 2, 3] - }) - - reader.pipe(writer) -``` - -## pipeline (stream1,...,streamN) - -Turn a pipeline into a single stream. `pipeline` returns a stream that writes to the first stream -and reads from the last stream. - -Listening for 'error' will recieve errors from all streams inside the pipe. - -> `connect` is an alias for `pipeline`. - -``` js - - es.pipeline( //connect streams together with `pipe` - process.openStdin(), //open stdin - es.split(), //split stream to break on newlines - es.map(function (data, callback) {//turn this async function into a stream - callback(null - , inspect(JSON.parse(data))) //render it nicely - }), - process.stdout // pipe it to stdout ! - ) -``` - -## pause () - -A stream that buffers all chunks when paused. - - -``` js - var ps = es.pause() - ps.pause() //buffer the stream, also do not allow 'end' - ps.resume() //allow chunks through -``` - -## duplex (writeStream, readStream) - -Takes a writable stream and a readable stream and makes them appear as a readable writable stream. - -It is assumed that the two streams are connected to each other in some way. - -(This is used by `pipeline` and `child`.) - -``` js - var grep = cp.exec('grep Stream') - - es.duplex(grep.stdin, grep.stdout) -``` - -## child (child_process) - -Create a through stream from a child process ... - -``` js - var cp = require('child_process') - - es.child(cp.exec('grep Stream')) // a through stream - -``` - -## wait (callback) - -waits for stream to emit 'end'. -joins chunks of a stream into a single string. -takes an optional callback, which will be passed the -complete string when it receives the 'end' event. - -also, emits a simgle 'data' event. - -``` js - -readStream.pipe(es.join(function (err, text) { - // have complete text here. -})) - -``` - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js deleted file mode 100644 index 0ba0020..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/connect.asynct.js +++ /dev/null @@ -1,82 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function makeExamplePipe() { - - return es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - d.delay(callback)(null, data) - }), - es.map(function (data, callback) { - callback(null, data + 2) - })) -} - -exports['simple pipe'] = function (test) { - - var pipe = makeExamplePipe() - - pipe.on('data', function (data) { - it(data).equal(18) - test.done() - }) - - pipe.write(8) - -} - -exports['read array then map'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - , first = es.readArray(readThis) - , read = [] - , pipe = - es.connect( - first, - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.map(function (data, callback) { - callback(null, {data: data}) - }), - es.writeArray(function (err, array) { - it(array).deepEqual(d.map(readThis, function (data) { - return {data: {data: data}} - })) - test.done() - }) - ) -} - -exports ['connect returns a stream'] = function (test) { - - var rw = - es.connect( - es.map(function (data, callback) { - callback(null, data * 2) - }), - es.map(function (data, callback) { - callback(null, data * 5) - }) - ) - - it(rw).has({readable: true, writable: true}) - - var array = [190, 24, 6, 7, 40, 57, 4, 6] - , _array = [] - , c = - es.connect( - es.readArray(array), - rw, - es.log('after rw:'), - es.writeArray(function (err, _array) { - it(_array).deepEqual(array.map(function (e) { return e * 10 })) - test.done() - }) - ) - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js deleted file mode 100644 index 17fae5b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/merge.asynct.js +++ /dev/null @@ -1,20 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports.merge = function (t) { - var odd = d.map(1, 3, 100, d.id) //array of multiples of 3 < 100 - var even = d.map(2, 4, 100, d.id) //array of multiples of 3 < 100 - - var r1 = es.readArray(even) - var r2 = es.readArray(odd) - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array.sort()).deepEqual(even.concat(odd).sort()) - t.done() - }) - - es.merge(r1, r2).pipe(writer) - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js deleted file mode 100644 index 59d896f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pause.asynct.js +++ /dev/null @@ -1,38 +0,0 @@ - -var es = require('../') - , it = require('it-is') - , d = require('ubelt') - -exports ['gate buffers when shut'] = function (test) { - - var hundy = d.map(1,100, d.id) - , gate = es.pause() - , ten = 10 - es.connect( - es.readArray(hundy), - es.log('after readArray'), - gate, - //es.log('after gate'), - es.map(function (num, next) { - //stick a map in here to check that gate never emits when open - it(gate.paused).equal(false) - console.log('data', num) - if(!--ten) { - console.log('PAUSE') - gate.pause()//.resume() - d.delay(gate.resume.bind(gate), 10)() - ten = 10 - } - - next(null, num) - }), - es.writeArray(function (err, array) { //just realized that I should remove the error param. errors will be emitted - console.log('eonuhoenuoecbulc') - it(array).deepEqual(hundy) - test.done() - }) - ) - - gate.resume() - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js deleted file mode 100644 index c2af9d8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/pipeline.asynct.js +++ /dev/null @@ -1,51 +0,0 @@ -var es = require('..') - -exports['do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }) - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - -exports['3 pipe do not duplicate errors'] = function (test) { - - var errors = 0; - var pipe = es.pipeline( - es.through(function(data) { - return this.emit('data', data); - }), - es.through(function(data) { - return this.emit('error', new Error(data)); - }), - es.through() - ) - - pipe.on('error', function(err) { - errors++ - console.log('error count', errors) - process.nextTick(function () { - return test.done(); - }) - }) - - return pipe.write('meh'); - -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js deleted file mode 100644 index 76585ee..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readArray.asynct.js +++ /dev/null @@ -1,88 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -function readStream(stream, pauseAt, done) { - if(!done) done = pauseAt, pauseAt = -1 - var array = [] - stream.on('data', function (data) { - array.push(data) - if(!--pauseAt ) - stream.pause(), done(null, array) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -exports ['read an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array and pause it.'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - - readStream(reader, 10, function (err, data) { - if(err) throw err - it(data).deepEqual([3, 6, 9, 12, 15, 18, 21, 24, 27, 30]) - readStream(reader, 10, function (err, data) { - it(data).deepEqual([33, 36, 39, 42, 45, 48, 51, 54, 57, 60]) - test.done() - }) - reader.resume() - }) - -} - -exports ['reader is readable, but not writeable'] = function (test) { - var reader = es.readArray([1]) - it(reader).has({ - readable: true, - writable: false - }) - - test.done() -} - - -exports ['read one item per tick'] = function (test) { - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - var drains = 0 - var reader = es.readArray(readThis) - var tickMapper = es.map(function (data,callback) { - process.nextTick(function () { - callback(null, data) - }) - //since tickMapper is returning false - //pipe should pause the writer until a drain occurs - return false - }) - reader.pipe(tickMapper) - readStream(tickMapper, function (err, array) { - it(array).deepEqual(readThis) - it(array.length).deepEqual(readThis.length) - it(drains).equal(readThis.length) - test.done() - }) - tickMapper.on('drain', function () { - drains ++ - }) - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js deleted file mode 100644 index 77d0039..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/readable.asynct.js +++ /dev/null @@ -1,167 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , u = require('ubelt') - -exports ['read an array'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - callback(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - -exports ['read an array - async'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, callback) { - if(i >= readThis.length) - return this.emit('end') - u.delay(callback)(null, readThis[i]) - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['emit data then call next() also works'] = function (test) { - - var readThis = u.map(3, 6, 100, u.id) //array of multiples of 3 < 100 - - var reader = - es.readable(function (i, next) { - if(i >= readThis.length) - return this.emit('end') - this.emit('data', readThis[i]) - next() - }) - - var writer = es.writeArray(function (err, array){ - if(err) throw err - it(array).deepEqual(readThis) - test.done() - }) - - reader.pipe(writer) -} - - -exports ['callback emits error, then stops'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , called = 0 - - var reader = - es.readable(function (i, callback) { - if(called++) - return - callback(err) - }) - - reader.on('error', function (_err){ - it(_err).deepEqual(err) - u.delay(function() { - it(called).equal(1) - test.done() - }, 50)() - }) -} - -exports['readable does not call read concurrently'] = function (test) { - - var current = 0 - var source = es.readable(function(count, cb){ - current ++ - if(count > 100) - return this.emit('end') - u.delay(function(){ - current -- - it(current).equal(0) - cb(null, {ok: true, n: count}); - })(); - }); - - var destination = es.map(function(data, cb){ - //console.info(data); - cb(); - }); - - var all = es.connect(source, destination); - - destination.on('end', test.done) -} - - -// -// emitting multiple errors is not supported by stream. -// -// I do not think that this is a good idea, at least, there should be an option to pipe to -// continue on error. it makes alot ef sense, if you are using Stream like I am, to be able to emit multiple errors. -// an error might not necessarily mean the end of the stream. it depends on the error, at least. -// -// I will start a thread on the mailing list. I'd rather that than use a custom `pipe` implementation. -// -// basically, I want to be able use pipe to transform objects, and if one object is invalid, -// the next might still be good, so I should get to choose if it's gonna stop. -// re-enstate this test when this issue progresses. -// -// hmm. I could add this to es.connect by deregistering the error listener, -// but I would rather it be an option in core. - -/* -exports ['emit multiple errors, with 2nd parameter (continueOnError)'] = function (test) { - - var readThis = d.map(1, 100, d.id) - , errors = 0 - var reader = - es.readable(function (i, callback) { - console.log(i, readThis.length) - if(i >= readThis.length) - return this.emit('end') - if(!(readThis[i] % 7)) - return callback(readThis[i]) - callback(null, readThis[i]) - }, true) - - var writer = es.writeArray(function (err, array) { - if(err) throw err - it(array).every(function (u){ - it(u % 7).notEqual(0) - }).property('length', 80) - it(errors).equal(14) - test.done() - }) - - reader.on('error', function (u) { - errors ++ - console.log(u) - if('number' !== typeof u) - throw u - - it(u % 7).equal(0) - - }) - - reader.pipe(writer) -} -*/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js deleted file mode 100644 index 7fabf6e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/replace.asynct.js +++ /dev/null @@ -1,50 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , spec = require('stream-spec') - -var next = process.nextTick - -var fizzbuzz = '12F4BF78FB11F1314FB1617F19BF2223FB26F2829FB3132F34BF3738FB41F4344FB4647F49BF5253FB56F5859FB6162F64BF6768FB71F7374FB7677F79BF8283FB86F8889FB9192F94BF9798FB' - , fizz7buzz = '12F4BFseven8FB11F1314FB161sevenF19BF2223FB26F2829FB3132F34BF3seven38FB41F4344FB464sevenF49BF5253FB56F5859FB6162F64BF6seven68FBseven1Fseven3seven4FBseven6sevensevenFseven9BF8283FB86F8889FB9192F94BF9seven98FB' - -exports ['fizz buzz'] = function (test) { - - var readThis = d.map(1, 100, function (i) { - return ( - ! (i % 3 || i % 5) ? "FB" : - !(i % 3) ? "F" : - !(i % 5) ? "B" : - ''+i - ) - }) //array of multiples of 3 < 100 - - var reader = es.readArray(readThis) - var join = es.wait(function (err, string){ - it(string).equal(fizzbuzz) - test.done() - }) - reader.pipe(join) - -} - - -exports ['fizz buzz replace'] = function (test) { - var split = es.split(/(1)/) - var replace = es.replace('7', 'seven') - var x = spec(replace).through() - split - .pipe(replace) - .pipe(es.join(function (err, string) { - it(string).equal(fizz7buzz) - })) - - replace.on('close', function () { - x.validate() - test.done() - }) - - split.write(fizzbuzz) - split.end() - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js deleted file mode 100644 index 4786faa..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/simple-map.asynct.js +++ /dev/null @@ -1,342 +0,0 @@ -'use strict'; - -var es = require('../') - , it = require('it-is') - , u = require('ubelt') - , spec = require('stream-spec') - , Stream = require('stream') - , from = require('from') - , through = require('through') - -//REFACTOR THIS TEST TO USE es.readArray and es.writeArray - -function writeArray(array, stream) { - - array.forEach( function (j) { - stream.write(j) - }) - stream.end() - -} - -function readStream(stream, done) { - - var array = [] - stream.on('data', function (data) { - array.push(data) - }) - stream.on('error', done) - stream.on('end', function (data) { - done(null, array) - }) - -} - -//call sink on each write, -//and complete when finished. - -function pauseStream (prob, delay) { - var pauseIf = ( - 'number' == typeof prob - ? function () { - return Math.random() < prob - } - : 'function' == typeof prob - ? prob - : 0.1 - ) - var delayer = ( - !delay - ? process.nextTick - : 'number' == typeof delay - ? function (next) { setTimeout(next, delay) } - : delay - ) - - return es.through(function (data) { - if(!this.paused && pauseIf()) { - console.log('PAUSE STREAM PAUSING') - this.pause() - var self = this - delayer(function () { - console.log('PAUSE STREAM RESUMING') - self.resume() - }) - } - console.log("emit ('data', " + data + ')') - this.emit('data', data) - }) -} - -exports ['simple map'] = function (test) { - - var input = u.map(1, 1000, function () { - return Math.random() - }) - var expected = input.map(function (v) { - return v * 2 - }) - - var pause = pauseStream(0.1) - var fs = from(input) - var ts = es.writeArray(function (err, ar) { - it(ar).deepEqual(expected) - test.done() - }) - var map = es.through(function (data) { - this.emit('data', data * 2) - }) - - spec(map).through().validateOnExit() - spec(pause).through().validateOnExit() - - fs.pipe(map).pipe(pause).pipe(ts) -} - -exports ['simple map applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - - var doubler = es.map(function (data, cb) { - cb(null, data * 2) - }) - - spec(doubler).through().validateOnExit() - - //a map is only a middle man, so it is both readable and writable - - it(doubler).has({ - readable: true, - writable: true, - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) -// process.nextTick(x.validate) - test.done() - }) - - writeArray(input, doubler) - -} - -exports['pipe two maps together'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - //create event stream from - function dd (data, cb) { - cb(null, data * 2) - } - var doubler1 = es.map(dd), doubler2 = es.map(dd) - - doubler1.pipe(doubler2) - - spec(doubler1).through().validateOnExit() - spec(doubler2).through().validateOnExit() - - readStream(doubler2, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 4 - })) - test.done() - }) - - writeArray(input, doubler1) - -} - -//next: -// -// test pause, resume and drian. -// - -// then make a pipe joiner: -// -// plumber (evStr1, evStr2, evStr3, evStr4, evStr5) -// -// will return a single stream that write goes to the first - -exports ['map will not call end until the callback'] = function (test) { - - var ticker = es.map(function (data, cb) { - process.nextTick(function () { - cb(null, data * 2) - }) - }) - - spec(ticker).through().validateOnExit() - - ticker.write('x') - ticker.end() - - ticker.on('end', function () { - test.done() - }) -} - - -exports ['emit error thrown'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function () { - throw err - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - -// onExit(spec(mapper).basic().validate) -//need spec that says stream may error. - - mapper.write('hello') - -} - -exports ['emit error calledback'] = function (test) { - - var err = new Error('INTENSIONAL ERROR') - , mapper = - es.map(function (data, callback) { - callback(err) - }) - - mapper.on('error', function (_err) { - it(_err).equal(err) - test.done() - }) - - mapper.write('hello') - -} - -exports ['do not emit drain if not paused'] = function (test) { - - var map = es.map(function (data, callback) { - u.delay(callback)(null, 1) - return true - }) - - spec(map).through().pausable().validateOnExit() - - map.on('drain', function () { - it(false).ok('should not emit drain unless the stream is paused') - }) - - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - it(map.write('hello')).equal(true) - setTimeout(function () {map.end()},10) - map.on('end', test.done) -} - -exports ['emits drain if paused, when all '] = function (test) { - var active = 0 - var drained = false - var map = es.map(function (data, callback) { - active ++ - u.delay(function () { - active -- - callback(null, 1) - })() - console.log('WRITE', false) - return false - }) - - spec(map).through().validateOnExit() - - map.on('drain', function () { - drained = true - it(active).equal(0, 'should emit drain when all maps are done') - }) - - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - it(map.write('hello')).equal(false) - - process.nextTick(function () {map.end()},10) - - map.on('end', function () { - console.log('end') - it(drained).ok('shoud have emitted drain before end') - test.done() - }) - -} - -exports ['map applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.map(function (data, callback) { - if (data % 2) - callback(null, data * 2) - else - callback() - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['simple mapSync applied to a stream'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - -exports ['mapSync applied to a stream with filtering'] = function (test) { - - var input = [1,2,3,7,5,3,1,9,0,2,4,6] - - var doubler = es.mapSync(function (data) { - if (data % 2) - return data * 2 - }) - - readStream(doubler, function (err, output) { - it(output).deepEqual(input.filter(function (j) { - return j % 2 - }).map(function (j) { - return j * 2 - })) - test.done() - }) - - spec(doubler).through().validateOnExit() - - writeArray(input, doubler) - -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js deleted file mode 100644 index 516dbf4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/spec.asynct.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - assert that data is called many times - assert that end is called eventually - - assert that when stream enters pause state, - on drain is emitted eventually. -*/ - -var es = require('..') -var it = require('it-is').style('colour') -var spec = require('stream-spec') - -exports['simple stream'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.pause() - stream.write(1) - stream.resume() - stream.write(1) - stream.end(2) //this will call write() - - process.nextTick(function (){ - x.validate() - test.done() - }) -} - -exports['throw on write when !writable'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.write(1) - stream.write(1) - stream.end(2) //this will call write() - stream.write(1) //this will be throwing..., but the spec will catch it. - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - -exports['end fast'] = function (test) { - - var stream = es.through() - var x = spec(stream).basic().pausable() - - stream.end() //this will call write() - - process.nextTick(function () { - x.validate() - test.done() - }) - -} - - -/* - okay, that was easy enough, whats next? - - say, after you call paused(), write should return false - until resume is called. - - simple way to implement this: - write must return !paused - after pause() paused = true - after resume() paused = false - - on resume, if !paused drain is emitted again. - after drain, !paused - - there are lots of subtle ordering bugs in streams. - - example, set !paused before emitting drain. - - the stream api is stateful. -*/ - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js deleted file mode 100644 index a0ce4b2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/split.asynct.js +++ /dev/null @@ -1,46 +0,0 @@ -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - , join = require('path').join - , fs = require('fs') - , Stream = require('stream').Stream - , spec = require('stream-spec') - -exports ['es.split() works like String#split'] = function (test) { - var readme = join(__filename) - , expected = fs.readFileSync(readme, 'utf-8').split('\n') - , cs = es.split() - , actual = [] - , ended = false - , x = spec(cs).through() - - var a = new Stream () - - a.write = function (l) { - actual.push(l.trim()) - } - a.end = function () { - - ended = true - expected.forEach(function (v,k) { - //String.split will append an empty string '' - //if the string ends in a split pattern. - //es.split doesn't which was breaking this test. - //clearly, appending the empty string is correct. - //tests are passing though. which is the current job. - if(v) - it(actual[k]).like(v) - }) - //give the stream time to close - process.nextTick(function () { - test.done() - x.validate() - }) - } - a.writable = true - - fs.createReadStream(readme, {flags: 'r'}).pipe(cs) - cs.pipe(a) - -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js deleted file mode 100644 index a77887b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/stringify.js +++ /dev/null @@ -1,14 +0,0 @@ - - - -var es = require('../') - -exports['handle buffer'] = function (t) { - - - es.stringify().on('data', function (d) { - t.equal(d.trim(), JSON.stringify('HELLO')) - t.end() - }).write(new Buffer('HELLO')) - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js deleted file mode 100644 index f09fea2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/event-stream/test/writeArray.asynct.js +++ /dev/null @@ -1,30 +0,0 @@ - -var es = require('../') - , it = require('it-is').style('colour') - , d = require('ubelt') - -exports ['write an array'] = function (test) { - - var readThis = d.map(3, 6, 100, d.id) //array of multiples of 3 < 100 - - var writer = es.writeArray(function (err, array){ - if(err) throw err //unpossible - it(array).deepEqual(readThis) - test.done() - }) - - d.each(readThis, writer.write.bind(writer)) - writer.end() - -} - - -exports ['writer is writable, but not readable'] = function (test) { - var reader = es.writeArray(function () {}) - it(reader).has({ - readable: false, - writable: true - }) - - test.done() -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore deleted file mode 100644 index ee88966..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -assets/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml deleted file mode 100644 index 84fd7ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md deleted file mode 100644 index 6cd71ba..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# tap-stream [![Build Status](https://secure.travis-ci.org/thlorenz/tap-stream.png)](http://travis-ci.org/thlorenz/tap-stream) - -Taps a nodejs stream and logs the data that's coming through. - - npm install tap-stream - -Given an [object stream](#object-stream) we can print out objects passing through and control the detail via the -depth parameter: - -```javascript -objectStream().pipe(tap(0)); -``` - -![depth0](https://github.com/thlorenz/tap-stream/raw/master/assets/depth0.png) - -```javascript -objectStream().pipe(tap(1)); -``` - -![depth1](https://github.com/thlorenz/tap-stream/raw/master/assets/depth1.png) - -``` -objectStream().pipe(tap(2)); -``` - -![depth2](https://github.com/thlorenz/tap-stream/raw/master/assets/depth2.png) - -For even more control a custom log function may be supplied: - -```javascript -objectStream() - .pipe(tap(function customLog (data) { - var nest = data.nest; - console.log ('Bird: %s, id: %s, age: %s, layed egg: %s', nest.name, data.id, nest.age, nest.egg !== undefined); - }) - ); -``` - -```text -Bird: yellow rumped warbler, id: 0, age: 1, layed egg: true -Bird: yellow rumped warbler, id: 1, age: 1, layed egg: true -``` - -## API - -### tap( [ depth | log ] ) - -Intercepts the stream and logs data that is passing through. - -- optional parameter is either a `Number` or a `Function` -- if no parameter is given, `depth` defaults to `0` and `log` to `console.log(util.inspect(..))` - -- `depth` controls the `depth` with which - [util.inspect](http://nodejs.org/api/util.html#util_util_inspect_object_showhidden_depth_colors) is called -- `log` replaces the default logging function with a custom one - -**Example:** - -```javascript -var tap = require('tap-stream'); - -myStream - .pipe(tap(1)) // log intermediate results - .pipe(..) // continute manipulating the data -``` - -## Object stream - -Included in order to give context for above examples. - -```javascript -function objectStream () { - var s = new Stream() - , objects = 0; - - var iv = setInterval( - function () { - s.emit('data', { - id: objects - , created: new Date() - , nest: { - name: 'yellow rumped warbler' - , age: 1 - , egg: { name: 'unknown' , age: 0 } - } - } - , 4 - ); - - if (++objects === 2) { - s.emit('end'); - clearInterval(iv); - } - } - , 200); - return s; -} -``` diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js deleted file mode 100644 index 97aa578..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/examples/tap-nested-objects.js +++ /dev/null @@ -1,38 +0,0 @@ -var Stream = require('stream') - , tap = require('..'); - -function objectStream () { - var s = new Stream() - , objects = 0; - - var iv = setInterval( - function () { - s.emit('data', { - id: objects - , created: new Date() - , nest: { - name: 'yellow rumped warbler' - , age: 1 - , egg: { name: 'unknown' , age: 0 } - } - } - ); - - if (++objects === 2) { - s.emit('end'); - clearInterval(iv); - } - } - , 200); - return s; -} - -objectStream().pipe(tap(2)); - -objectStream() - .pipe(tap(function customLog (data) { - var nest = data.nest; - console.log ('Bird: %s, id: %s, age: %s, layed egg: %s', nest.name, data.id, nest.age, nest.egg !== undefined); - }) - ); - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js deleted file mode 100644 index a541dfe..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/index.js +++ /dev/null @@ -1,56 +0,0 @@ -'use strict'; - -var util = require('util') - , through = require('through') - , toString = Object.prototype.toString - , slice = Array.prototype.slice; - -function blowup () { - throw new Error('Argument to streamTap needs to be either Number for depth or a log Function'); -} - -function defaultLog (depth) { - function log (data) { - console.log(util.inspect(data, false, depth, true)); - } - - return function (data) { - if (arguments.length === 1) { - log(data); - } else { - slice.call(arguments).forEach(log); - } - }; -} - -// invoke three ways: -// tap () -// tap (depth) -// tap (log) -function tap (arg0) { - var log; - - if (!arguments.length) { - log = defaultLog(1); - } else { - - if (toString.call(arg0) === '[object Number]' ) { - log = defaultLog(arg0); - } else if (toString.call(arg0) === '[object Function]' ) { - log = arg0; - } else { - blowup(); - } - - } - - return through( - function write (data) { - log(data); - this.emit('data', data); - } - ); - -} - -module.exports = tap; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 deleted file mode 100644 index 6366c04..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.APACHE2 +++ /dev/null @@ -1,15 +0,0 @@ -Apache License, Version 2.0 - -Copyright (c) 2011 Dominic Tarr - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT deleted file mode 100644 index 6eafbd7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/LICENSE.MIT +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2011 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js deleted file mode 100644 index 7072b37..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/index.js +++ /dev/null @@ -1,100 +0,0 @@ -var Stream = require('stream') - -// through -// -// a stream that does nothing but re-emit the input. -// useful for aggregating a series of changing but not ending streams into one stream) - - - -exports = module.exports = through -through.through = through - -//create a readable writable stream. - -function through (write, end) { - write = write || function (data) { this.emit('data', data) } - end = end || function () { this.emit('end') } - - var ended = false, destroyed = false - var stream = new Stream(), buffer = [] - stream.buffer = buffer - stream.readable = stream.writable = true - stream.paused = false - stream.write = function (data) { - write.call(this, data) - return !stream.paused - } - - function drain() { - while(buffer.length && !stream.paused) { - var data = buffer.shift() - if(null === data) - return stream.emit('end') - else - stream.emit('data', data) - } - } - - stream.queue = function (data) { - buffer.push(data) - drain() - } - - //this will be registered as the first 'end' listener - //must call destroy next tick, to make sure we're after any - //stream piped from here. - //this is only a problem if end is not emitted synchronously. - //a nicer way to do this is to make sure this is the last listener for 'end' - - stream.on('end', function () { - stream.readable = false - if(!stream.writable) - process.nextTick(function () { - stream.destroy() - }) - }) - - function _end () { - stream.writable = false - end.call(stream) - if(!stream.readable) - stream.destroy() - } - - stream.end = function (data) { - if(ended) return - //this breaks, because pipe doesn't check writable before calling end. - //throw new Error('cannot call end twice') - ended = true - if(arguments.length) stream.write(data) - if(!buffer.length) _end() - } - - stream.destroy = function () { - if(destroyed) return - destroyed = true - ended = true - buffer.length = 0 - stream.writable = stream.readable = false - stream.emit('close') - } - - stream.pause = function () { - if(stream.paused) return - stream.paused = true - stream.emit('pause') - } - stream.resume = function () { - if(stream.paused) { - stream.paused = false - } - drain() - //may have become paused again, - //as drain emits 'data'. - if(!stream.paused) - stream.emit('drain') - } - return stream -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json deleted file mode 100644 index 168247e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "through", - "version": "1.1.0", - "description": "simplified stream contruction", - "main": "index.js", - "scripts": { - "test": "asynct test/*.js" - }, - "devDependencies": { - "stream-spec": "0", - "assertions": "2", - "asynct": "1" - }, - "keywords": [ - "stream", - "streams", - "user-streams", - "pipe" - ], - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/dominictarr/through.git" - }, - "homepage": "http://github.com/dominictarr/through", - "readme": "#through\n\n[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through)\n\nEasy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic.\nUse `this.pause()` and `this.resume()` to manage flow.\nCheck `this.paused` to see current flow state. (write always returns `!this.paused`)\n\nthis function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream).\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.emit('data', data)\n //this.pause() \n },\n function end () { //optional\n this.emit('end')\n })\n\n```\n\nor, with buffering on pause, use `this.queue(data)`,\ndata *cannot* be `null`. `this.queue(null)` will emit 'end'\nwhen it gets to the `null` element.\n\n``` js\nvar through = require('through')\n\nthrough(function write(data) {\n this.queue(data)\n //this.pause() \n },\n function end () { //optional\n this.queue(null)\n })\n\n```\n\n\n## License\n\nMIT / Apache2\n", - "_id": "through@1.1.0", - "_from": "through@~1.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown deleted file mode 100644 index 1b687e9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/readme.markdown +++ /dev/null @@ -1,44 +0,0 @@ -#through - -[![build status](https://secure.travis-ci.org/dominictarr/through.png)](http://travis-ci.org/dominictarr/through) - -Easy way to create a `Stream` that is both `readable` and `writable`. Pass in optional `write` and `end` methods. `through` takes care of pause/resume logic. -Use `this.pause()` and `this.resume()` to manage flow. -Check `this.paused` to see current flow state. (write always returns `!this.paused`) - -this function is the basis for most of the syncronous streams in [event-stream](http://github.com/dominictarr/event-stream). - -``` js -var through = require('through') - -through(function write(data) { - this.emit('data', data) - //this.pause() - }, - function end () { //optional - this.emit('end') - }) - -``` - -or, with buffering on pause, use `this.queue(data)`, -data *cannot* be `null`. `this.queue(null)` will emit 'end' -when it gets to the `null` element. - -``` js -var through = require('through') - -through(function write(data) { - this.queue(data) - //this.pause() - }, - function end () { //optional - this.queue(null) - }) - -``` - - -## License - -MIT / Apache2 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js deleted file mode 100644 index 1ce4b0d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/buffering.js +++ /dev/null @@ -1,37 +0,0 @@ -var through = require('..') - -// must emit end before close. - -exports['buffering'] = function (t) { - var ts = through(function (data) { - this.queue(data) - }, function () { - this.queue(null) - }) - - var ended = false, actual = [] - - ts.on('data', actual.push.bind(actual)) - ts.on('end', function () { - ended = true - }) - - ts.write(1) - ts.write(2) - ts.write(3) - t.deepEqual(actual, [1, 2, 3]) - ts.pause() - ts.write(4) - ts.write(5) - ts.write(6) - t.deepEqual(actual, [1, 2, 3]) - ts.resume() - t.deepEqual(actual, [1, 2, 3, 4, 5, 6]) - ts.pause() - ts.end() - t.ok(!ended) - ts.resume() - t.ok(ended) - t.end() - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js deleted file mode 100644 index 280da0a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/end.js +++ /dev/null @@ -1,27 +0,0 @@ -var through = require('..') - -// must emit end before close. - -exports['end before close'] = function (t) { - var ts = through() - var ended = false, closed = false - - ts.on('end', function () { - t.ok(!closed) - ended = true - }) - ts.on('close', function () { - t.ok(ended) - closed = true - }) - - ts.write(1) - ts.write(2) - ts.write(3) - ts.end() - t.ok(ended) - t.ok(closed) - - t.end() - -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js deleted file mode 100644 index 25a6ea7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/node_modules/through/test/index.js +++ /dev/null @@ -1,113 +0,0 @@ - -var spec = require('stream-spec') -var through = require('..') -var a = require('assertions') - -/* - I'm using these two functions, and not streams and pipe - so there is less to break. if this test fails it must be - the implementation of _through_ -*/ - -function write(array, stream) { - array = array.slice() - function next() { - while(array.length) - if(stream.write(array.shift()) === false) - return stream.once('drain', next) - - stream.end() - } - - next() -} - -function read(stream, callback) { - var actual = [] - stream.on('data', function (data) { - actual.push(data) - }) - stream.once('end', function () { - callback(null, actual) - }) - stream.once('error', function (err) { - callback(err) - }) -} - -exports['simple defaults'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through() - spec(t) - .through() - .pausable() - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - - write(expected, t) -} - -exports['simple functions'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l * Math.random()) - - var t = through(function (data) { - this.emit('data', data*2) - }) - spec(t) - .through() - .pausable() - .validateOnExit() - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected.map(function (data) { - return data*2 - })) - test.done() - }) - - write(expected, t) -} -exports['pauses'] = function (test) { - - var l = 1000 - , expected = [] - - while(l--) expected.push(l) //Math.random()) - - var t = through() - spec(t) - .through() - .pausable() - .validateOnExit() - - t.on('data', function () { - if(Math.random() > 0.1) return - t.pause() - process.nextTick(function () { - t.resume() - }) - }) - - read(t, function (err, actual) { - if(err) test.error(err) //fail - a.deepEqual(actual, expected) - test.done() - }) - - write(expected, t) -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json deleted file mode 100644 index 8040579..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "tap-stream", - "version": "0.1.0", - "author": { - "name": "Thorsten Lorenz", - "email": "thlorenz@gmx.de", - "url": "http://thlorenz.com" - }, - "description": "Taps a nodejs stream and logs the data that's coming through.", - "main": "index.js", - "directories": { - "test": "test" - }, - "scripts": { - "test": "tap ./test/*.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/thlorenz/tap-stream.git" - }, - "keywords": [ - "stream", - "streams", - "log", - "print", - "inspect" - ], - "license": "BSD", - "dependencies": { - "through": "~1.1.0" - }, - "devDependencies": { - "tap": "~0.3.1" - }, - "readme": "# tap-stream [![Build Status](https://secure.travis-ci.org/thlorenz/tap-stream.png)](http://travis-ci.org/thlorenz/tap-stream)\n\nTaps a nodejs stream and logs the data that's coming through.\n\n npm install tap-stream\n\nGiven an [object stream](#object-stream) we can print out objects passing through and control the detail via the\ndepth parameter:\n\n```javascript\nobjectStream().pipe(tap(0));\n```\n\n![depth0](https://github.com/thlorenz/tap-stream/raw/master/assets/depth0.png)\n\n```javascript\nobjectStream().pipe(tap(1));\n```\n\n![depth1](https://github.com/thlorenz/tap-stream/raw/master/assets/depth1.png)\n\n```\nobjectStream().pipe(tap(2));\n```\n\n![depth2](https://github.com/thlorenz/tap-stream/raw/master/assets/depth2.png)\n\nFor even more control a custom log function may be supplied:\n\n```javascript\nobjectStream()\n .pipe(tap(function customLog (data) {\n var nest = data.nest;\n console.log ('Bird: %s, id: %s, age: %s, layed egg: %s', nest.name, data.id, nest.age, nest.egg !== undefined);\n })\n );\n```\n\n```text\nBird: yellow rumped warbler, id: 0, age: 1, layed egg: true\nBird: yellow rumped warbler, id: 1, age: 1, layed egg: true\n```\n\n## API\n\n### tap( [ depth | log ] )\n\nIntercepts the stream and logs data that is passing through.\n\n- optional parameter is either a `Number` or a `Function`\n- if no parameter is given, `depth` defaults to `0` and `log` to `console.log(util.inspect(..))`\n\n- `depth` controls the `depth` with which\n [util.inspect](http://nodejs.org/api/util.html#util_util_inspect_object_showhidden_depth_colors) is called\n- `log` replaces the default logging function with a custom one\n\n**Example:**\n\n```javascript\nvar tap = require('tap-stream');\n\nmyStream\n .pipe(tap(1)) // log intermediate results\n .pipe(..) // continute manipulating the data\n```\n\n## Object stream\n\nIncluded in order to give context for above examples.\n\n```javascript\nfunction objectStream () {\n var s = new Stream()\n , objects = 0;\n \n var iv = setInterval(\n function () {\n s.emit('data', { \n id: objects\n , created: new Date()\n , nest: { \n name: 'yellow rumped warbler'\n , age: 1\n , egg: { name: 'unknown' , age: 0 }\n } \n }\n , 4\n );\n\n if (++objects === 2) {\n s.emit('end');\n clearInterval(iv);\n }\n }\n , 200);\n return s;\n}\n```\n", - "_id": "tap-stream@0.1.0", - "_from": "tap-stream@~0.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js deleted file mode 100644 index b484fcb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/node_modules/tap-stream/test/tap-stream.js +++ /dev/null @@ -1,104 +0,0 @@ -'use strict'; -/*jshint asi: true */ - -var test = require('tap').test - , Stream = require('stream') - , tap = require('..') - , through = require('through'); - -function objectStream () { - var s = new Stream() - , objects = 0; - - var iv = setInterval( - function () { - s.emit('data', { id: objects, created: new Date() }); - - if (++objects === 2) { - s.emit('end'); - clearInterval(iv); - } - } - , 20); - return s; -} - -test('tapping object stream that emits 2 objects', function (t) { - var logged = [] - , piped = []; - - function log (data) { - logged.push(data); - } - - t.plan(4); - - objectStream() - .pipe(tap(log)) - .pipe(through( - function write (data) { - piped.push(data); - this.emit('data', data); - } - , function end (data) { - - t.equals(0, logged[0].id, 'logs first item'); - t.equals(1, logged[1].id, 'logs second item'); - - t.equals(0, piped[0].id, 'pipes first item'); - t.equals(1, piped[1].id, 'pipes second item'); - - t.end(); - - this.emit('end'); - } - )) -}) - -/* The below doesn't work since pipe only writes one argument: - * https://github.com/joyent/node/blob/master/lib/stream.js#L36 - * - * Since it uses EventEmitter whose 'emit' supports multiple args, this may change in the future - I hope so. - * Until then ... - */ -var onDataInsidePipeWritesMultipleArgs = false; - -if (! onDataInsidePipeWritesMultipleArgs) return; - -function numberStream () { - var s = new Stream(); - - setTimeout( - function () { - s.emit('data', 1, 2); - s.emit('end'); - } - , 20); - return s; -} - -test('tapping stream that emits a number and a string one time', function (t) { - var logged = [] - , piped = []; - - function log (n1, n2) { - logged.push({ n1: n1, n2: n2 }); - } - - t.plan(2); - - numberStream() - .pipe(tap(log)) - .pipe(through( - function write (n1, n2) { - piped.push({ n1: n1, n2: n2 }); - } - , function end () { - t.equals({ n1: 1, n2: 2 }, logged[0], 'logs both numbers'); - t.equals({ n1: 1, n2: 2 }, piped[0], 'pipes both numbers'); - t.end(); - - this.emit('end'); - } - )) -}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json deleted file mode 100644 index 2d9b341..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "readdirp-examples", - "version": "0.0.0", - "description": "Examples for readdirp.", - "dependencies": { - "tap-stream": "~0.1.0", - "event-stream": "~3.0.7" - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js deleted file mode 100644 index b09fe59..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api-pipe.js +++ /dev/null @@ -1,13 +0,0 @@ -var readdirp = require('..') - , path = require('path') - , es = require('event-stream'); - -// print out all JavaScript files along with their size -readdirp({ root: path.join(__dirname), fileFilter: '*.js' }) - .on('warn', function (err) { console.error('non-fatal error', err); }) - .on('error', function (err) { console.error('fatal error', err); }) - .pipe(es.mapSync(function (entry) { - return { path: entry.path, size: entry.stat.size }; - })) - .pipe(es.stringify()) - .pipe(process.stdout); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js deleted file mode 100644 index 0f7b327..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/examples/stream-api.js +++ /dev/null @@ -1,15 +0,0 @@ -var readdirp = require('..') - , path = require('path'); - -readdirp({ root: path.join(__dirname), fileFilter: '*.js' }) - .on('warn', function (err) { - console.error('something went wrong when processing an entry', err); - }) - .on('error', function (err) { - console.error('something went fatally wrong and the stream was aborted', err); - }) - .on('data', function (entry) { - console.log('%s is ready for processing', entry.path); - // process entry here - }); - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md deleted file mode 100644 index 6fd07d2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/README.md +++ /dev/null @@ -1,218 +0,0 @@ -# minimatch - -A minimal matching utility. - -[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch) - - -This is the matching library used internally by npm. - -Eventually, it will replace the C binding in node-glob. - -It works by converting glob expressions into JavaScript `RegExp` -objects. - -## Usage - -```javascript -var minimatch = require("minimatch") - -minimatch("bar.foo", "*.foo") // true! -minimatch("bar.foo", "*.bar") // false! -``` - -## Features - -Supports these glob features: - -* Brace Expansion -* Extended glob matching -* "Globstar" `**` matching - -See: - -* `man sh` -* `man bash` -* `man 3 fnmatch` -* `man 5 gitignore` - -### Comparisons to other fnmatch/glob implementations - -While strict compliance with the existing standards is a worthwhile -goal, some discrepancies exist between minimatch and other -implementations, and are intentional. - -If the pattern starts with a `!` character, then it is negated. Set the -`nonegate` flag to suppress this behavior, and treat leading `!` -characters normally. This is perhaps relevant if you wish to start the -pattern with a negative extglob pattern like `!(a|B)`. Multiple `!` -characters at the start of a pattern will negate the pattern multiple -times. - -If a pattern starts with `#`, then it is treated as a comment, and -will not match anything. Use `\#` to match a literal `#` at the -start of a line, or set the `nocomment` flag to suppress this behavior. - -The double-star character `**` is supported by default, unless the -`noglobstar` flag is set. This is supported in the manner of bsdglob -and bash 4.1, where `**` only has special significance if it is the only -thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but -`a/**b` will not. **Note that this is different from the way that `**` is -handled by ruby's `Dir` class.** - -If an escaped pattern has no matches, and the `nonull` flag is set, -then minimatch.match returns the pattern as-provided, rather than -interpreting the character escapes. For example, -`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than -`"*a?"`. This is akin to setting the `nullglob` option in bash, except -that it does not resolve escaped pattern characters. - -If brace expansion is not disabled, then it is performed before any -other interpretation of the glob pattern. Thus, a pattern like -`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded -**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are -checked for validity. Since those two are valid, matching proceeds. - - -## Minimatch Class - -Create a minimatch object by instanting the `minimatch.Minimatch` class. - -```javascript -var Minimatch = require("minimatch").Minimatch -var mm = new Minimatch(pattern, options) -``` - -### Properties - -* `pattern` The original pattern the minimatch object represents. -* `options` The options supplied to the constructor. -* `set` A 2-dimensional array of regexp or string expressions. - Each row in the - array corresponds to a brace-expanded pattern. Each item in the row - corresponds to a single path-part. For example, the pattern - `{a,b/c}/d` would expand to a set of patterns like: - - [ [ a, d ] - , [ b, c, d ] ] - - If a portion of the pattern doesn't have any "magic" in it - (that is, it's something like `"foo"` rather than `fo*o?`), then it - will be left as a string rather than converted to a regular - expression. - -* `regexp` Created by the `makeRe` method. A single regular expression - expressing the entire pattern. This is useful in cases where you wish - to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled. -* `negate` True if the pattern is negated. -* `comment` True if the pattern is a comment. -* `empty` True if the pattern is `""`. - -### Methods - -* `makeRe` Generate the `regexp` member if necessary, and return it. - Will return `false` if the pattern is invalid. -* `match(fname)` Return true if the filename matches the pattern, or - false otherwise. -* `matchOne(fileArray, patternArray, partial)` Take a `/`-split - filename, and match it against a single row in the `regExpSet`. This - method is mainly for internal use, but is exposed so that it can be - used by a glob-walker that needs to avoid excessive filesystem calls. - -All other methods are internal, and will be called as necessary. - -## Functions - -The top-level exported function has a `cache` property, which is an LRU -cache set to store 100 items. So, calling these methods repeatedly -with the same pattern and options will use the same Minimatch object, -saving the cost of parsing it multiple times. - -### minimatch(path, pattern, options) - -Main export. Tests a path against the pattern using the options. - -```javascript -var isJS = minimatch(file, "*.js", { matchBase: true }) -``` - -### minimatch.filter(pattern, options) - -Returns a function that tests its -supplied argument, suitable for use with `Array.filter`. Example: - -```javascript -var javascripts = fileList.filter(minimatch.filter("*.js", {matchBase: true})) -``` - -### minimatch.match(list, pattern, options) - -Match against the list of -files, in the style of fnmatch or glob. If nothing is matched, and -options.nonull is set, then return a list containing the pattern itself. - -```javascript -var javascripts = minimatch.match(fileList, "*.js", {matchBase: true})) -``` - -### minimatch.makeRe(pattern, options) - -Make a regular expression object from the pattern. - -## Options - -All options are `false` by default. - -### debug - -Dump a ton of stuff to stderr. - -### nobrace - -Do not expand `{a,b}` and `{1..3}` brace sets. - -### noglobstar - -Disable `**` matching against multiple folder names. - -### dot - -Allow patterns to match filenames starting with a period, even if -the pattern does not explicitly have a period in that spot. - -Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot` -is set. - -### noext - -Disable "extglob" style patterns like `+(a|b)`. - -### nocase - -Perform a case-insensitive match. - -### nonull - -When a match is not found by `minimatch.match`, return a list containing -the pattern itself. When set, an empty list is returned if there are -no matches. - -### matchBase - -If set, then patterns without slashes will be matched -against the basename of the path if it contains slashes. For example, -`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`. - -### nocomment - -Suppress the behavior of treating `#` at the start of a pattern as a -comment. - -### nonegate - -Suppress the behavior of treating a leading `!` character as negation. - -### flipNegate - -Returns from negate expressions the same as if they were not negated. -(Ie, true on a hit, false on a miss.) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js deleted file mode 100644 index 405746b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/minimatch.js +++ /dev/null @@ -1,1079 +0,0 @@ -;(function (require, exports, module, platform) { - -if (module) module.exports = minimatch -else exports.minimatch = minimatch - -if (!require) { - require = function (id) { - switch (id) { - case "sigmund": return function sigmund (obj) { - return JSON.stringify(obj) - } - case "path": return { basename: function (f) { - f = f.split(/[\/\\]/) - var e = f.pop() - if (!e) e = f.pop() - return e - }} - case "lru-cache": return function LRUCache () { - // not quite an LRU, but still space-limited. - var cache = {} - var cnt = 0 - this.set = function (k, v) { - cnt ++ - if (cnt >= 100) cache = {} - cache[k] = v - } - this.get = function (k) { return cache[k] } - } - } - } -} - -minimatch.Minimatch = Minimatch - -var LRU = require("lru-cache") - , cache = minimatch.cache = new LRU({max: 100}) - , GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} - , sigmund = require("sigmund") - -var path = require("path") - // any single thing other than / - // don't need to escape / when using new RegExp() - , qmark = "[^/]" - - // * => any number of characters - , star = qmark + "*?" - - // ** when dots are allowed. Anything goes, except .. and . - // not (^ or / followed by one or two dots followed by $ or /), - // followed by anything, any number of times. - , twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" - - // not a ^ or / followed by a dot, - // followed by anything, any number of times. - , twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" - - // characters that need to be escaped in RegExp. - , reSpecials = charSet("().*{}+?[]^$\\!") - -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split("").reduce(function (set, c) { - set[c] = true - return set - }, {}) -} - -// normalizes slashes. -var slashSplit = /\/+/ - -minimatch.monkeyPatch = monkeyPatch -function monkeyPatch () { - var desc = Object.getOwnPropertyDescriptor(String.prototype, "match") - var orig = desc.value - desc.value = function (p) { - if (p instanceof Minimatch) return p.match(this) - return orig.call(this, p) - } - Object.defineProperty(String.prototype, desc) -} - -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} - -function ext (a, b) { - a = a || {} - b = b || {} - var t = {} - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - return t -} - -minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return minimatch - - var orig = minimatch - - var m = function minimatch (p, pattern, options) { - return orig.minimatch(p, pattern, ext(def, options)) - } - - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - - return m -} - -Minimatch.defaults = function (def) { - if (!def || !Object.keys(def).length) return Minimatch - return minimatch.defaults(def).Minimatch -} - - -function minimatch (p, pattern, options) { - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - return false - } - - // "" only matches "" - if (pattern.trim() === "") return p === "" - - return new Minimatch(pattern, options).match(p) -} - -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options, cache) - } - - if (typeof pattern !== "string") { - throw new TypeError("glob pattern string required") - } - - if (!options) options = {} - pattern = pattern.trim() - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - pattern = pattern.split("\\").join("/") - } - - // lru storage. - // these things aren't particularly big, but walking down the string - // and turning it into a regexp can get pretty costly. - var cacheKey = pattern + "\n" + sigmund(options) - var cached = minimatch.cache.get(cacheKey) - if (cached) return cached - minimatch.cache.set(cacheKey, this) - - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - - // make the set of regexps etc. - this.make() -} - -Minimatch.prototype.make = make -function make () { - // don't do it more than once. - if (this._made) return - - var pattern = this.pattern - var options = this.options - - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === "#") { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - - // step 1: figure out negation, etc. - this.parseNegate() - - // step 2: expand braces - var set = this.globSet = this.braceExpand() - - if (options.debug) console.error(this.pattern, set) - - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - - if (options.debug) console.error(this.pattern, set) - - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - - if (options.debug) console.error(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return -1 === s.indexOf(false) - }) - - if (options.debug) console.error(this.pattern, set) - - this.set = set -} - -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - , negate = false - , options = this.options - , negateOffset = 0 - - if (options.nonegate) return - - for ( var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === "!" - ; i ++) { - negate = !negate - negateOffset ++ - } - - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} - -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return new Minimatch(pattern, options).braceExpand() -} - -Minimatch.prototype.braceExpand = braceExpand -function braceExpand (pattern, options) { - options = options || this.options - pattern = typeof pattern === "undefined" - ? this.pattern : pattern - - if (typeof pattern === "undefined") { - throw new Error("undefined pattern") - } - - if (options.nobrace || - !pattern.match(/\{.*\}/)) { - // shortcut. no need to expand. - return [pattern] - } - - var escaping = false - - // examples and comments refer to this crazy pattern: - // a{b,c{d,e},{f,g}h}x{y,z} - // expected: - // abxy - // abxz - // acdxy - // acdxz - // acexy - // acexz - // afhxy - // afhxz - // aghxy - // aghxz - - // everything before the first \{ is just a prefix. - // So, we pluck that off, and work with the rest, - // and then prepend it to everything we find. - if (pattern.charAt(0) !== "{") { - // console.error(pattern) - var prefix = null - for (var i = 0, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - // console.error(i, c) - if (c === "\\") { - escaping = !escaping - } else if (c === "{" && !escaping) { - prefix = pattern.substr(0, i) - break - } - } - - // actually no sets, all { were escaped. - if (prefix === null) { - // console.error("no sets") - return [pattern] - } - - var tail = braceExpand(pattern.substr(i), options) - return tail.map(function (t) { - return prefix + t - }) - } - - // now we have something like: - // {b,c{d,e},{f,g}h}x{y,z} - // walk through the set, expanding each part, until - // the set ends. then, we'll expand the suffix. - // If the set only has a single member, then'll put the {} back - - // first, handle numeric sets, since they're easier - var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/) - if (numset) { - // console.error("numset", numset[1], numset[2]) - var suf = braceExpand(pattern.substr(numset[0].length), options) - , start = +numset[1] - , end = +numset[2] - , inc = start > end ? -1 : 1 - , set = [] - for (var i = start; i != (end + inc); i += inc) { - // append all the suffixes - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - set.push(i + suf[ii]) - } - } - return set - } - - // ok, walk through the set - // We hope, somewhat optimistically, that there - // will be a } at the end. - // If the closing brace isn't found, then the pattern is - // interpreted as braceExpand("\\" + pattern) so that - // the leading \{ will be interpreted literally. - var i = 1 // skip the \{ - , depth = 1 - , set = [] - , member = "" - , sawEnd = false - , escaping = false - - function addMember () { - set.push(member) - member = "" - } - - // console.error("Entering for") - FOR: for (i = 1, l = pattern.length; i < l; i ++) { - var c = pattern.charAt(i) - // console.error("", i, c) - - if (escaping) { - escaping = false - member += "\\" + c - } else { - switch (c) { - case "\\": - escaping = true - continue - - case "{": - depth ++ - member += "{" - continue - - case "}": - depth -- - // if this closes the actual set, then we're done - if (depth === 0) { - addMember() - // pluck off the close-brace - i ++ - break FOR - } else { - member += c - continue - } - - case ",": - if (depth === 1) { - addMember() - } else { - member += c - } - continue - - default: - member += c - continue - } // switch - } // else - } // for - - // now we've either finished the set, and the suffix is - // pattern.substr(i), or we have *not* closed the set, - // and need to escape the leading brace - if (depth !== 0) { - // console.error("didn't close", pattern) - return braceExpand("\\" + pattern, options) - } - - // x{y,z} -> ["xy", "xz"] - // console.error("set", set) - // console.error("suffix", pattern.substr(i)) - var suf = braceExpand(pattern.substr(i), options) - // ["b", "c{d,e}","{f,g}h"] -> - // [["b"], ["cd", "ce"], ["fh", "gh"]] - var addBraces = set.length === 1 - // console.error("set pre-expanded", set) - set = set.map(function (p) { - return braceExpand(p, options) - }) - // console.error("set expanded", set) - - - // [["b"], ["cd", "ce"], ["fh", "gh"]] -> - // ["b", "cd", "ce", "fh", "gh"] - set = set.reduce(function (l, r) { - return l.concat(r) - }) - - if (addBraces) { - set = set.map(function (s) { - return "{" + s + "}" - }) - } - - // now attach the suffixes. - var ret = [] - for (var i = 0, l = set.length; i < l; i ++) { - for (var ii = 0, ll = suf.length; ii < ll; ii ++) { - ret.push(set[i] + suf[ii]) - } - } - return ret -} - -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - var options = this.options - - // shortcuts - if (!options.noglobstar && pattern === "**") return GLOBSTAR - if (pattern === "") return "" - - var re = "" - , hasMagic = !!options.nocase - , escaping = false - // ? => one single character - , patternListStack = [] - , plType - , stateChar - , inClass = false - , reClassStart = -1 - , classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - , patternStart = pattern.charAt(0) === "." ? "" // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" - : "(?!\\.)" - - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case "*": - re += star - hasMagic = true - break - case "?": - re += qmark - hasMagic = true - break - default: - re += "\\"+stateChar - break - } - stateChar = false - } - } - - for ( var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i ++ ) { - - if (options.debug) { - console.error("%s\t%s %s %j", pattern, i, re, c) - } - - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += "\\" + c - escaping = false - continue - } - - SWITCH: switch (c) { - case "/": - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - - case "\\": - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case "?": - case "*": - case "+": - case "@": - case "!": - if (options.debug) { - console.error("%s\t%s %s %j <-- stateChar", pattern, i, re, c) - } - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - if (c === "!" && i === classStart + 1) c = "^" - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case "(": - if (inClass) { - re += "(" - continue - } - - if (!stateChar) { - re += "\\(" - continue - } - - plType = stateChar - patternListStack.push({ type: plType - , start: i - 1 - , reStart: re.length }) - // negation is (?:(?!js)[^/]*) - re += stateChar === "!" ? "(?:(?!" : "(?:" - stateChar = false - continue - - case ")": - if (inClass || !patternListStack.length) { - re += "\\)" - continue - } - - hasMagic = true - re += ")" - plType = patternListStack.pop().type - // negation is (?:(?!js)[^/]*) - // The others are (?:) - switch (plType) { - case "!": - re += "[^/]*?)" - break - case "?": - case "+": - case "*": re += plType - case "@": break // the default anyway - } - continue - - case "|": - if (inClass || !patternListStack.length || escaping) { - re += "\\|" - escaping = false - continue - } - - re += "|" - continue - - // these are mostly the same in regexp and glob - case "[": - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += "\\" + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case "]": - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += "\\" + c - escaping = false - continue - } - - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === "^" && inClass)) { - re += "\\" - } - - re += c - - } // switch - } // for - - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - var cs = pattern.substr(classStart + 1) - , sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + "\\[" + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - var pl - while (pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + 3) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = "\\" - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + "|" - }) - - // console.error("tail=%j\n %s", tail, tail) - var t = pl.type === "*" ? star - : pl.type === "?" ? qmark - : "\\" + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) - + t + "\\(" - + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += "\\\\" - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case ".": - case "[": - case "(": addPatternStart = true - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== "" && hasMagic) re = "(?=.)" + re - - if (addPatternStart) re = patternStart + re - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [ re, hasMagic ] - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - var flags = options.nocase ? "i" : "" - , regExp = new RegExp("^" + re + "$", flags) - - regExp._glob = pattern - regExp._src = re - - return regExp -} - -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - - if (!set.length) return this.regexp = false - var options = this.options - - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - , flags = options.nocase ? "i" : "" - - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === "string") ? regExpEscape(p) - : p._src - }).join("\\\/") - }).join("|") - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = "^(?:" + re + ")$" - - // can match anything, as long as it's not this. - if (this.negate) re = "^(?!" + re + ").*$" - - try { - return this.regexp = new RegExp(re, flags) - } catch (ex) { - return this.regexp = false - } -} - -minimatch.match = function (list, pattern, options) { - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (options.nonull && !list.length) { - list.push(pattern) - } - return list -} - -Minimatch.prototype.match = match -function match (f, partial) { - // console.error("match", f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === "" - - if (f === "/" && partial) return true - - var options = this.options - - // windows: need to use /, not \ - // On other platforms, \ is a valid (albeit bad) filename char. - if (platform === "win32") { - f = f.split("\\").join("/") - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - if (options.debug) { - console.error(this.pattern, "split", f) - } - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - var set = this.set - // console.error(this.pattern, "set", set) - - for (var i = 0, l = set.length; i < l; i ++) { - var pattern = set[i] - var hit = this.matchOne(f, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} - -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - - if (options.debug) { - console.error("matchOne", - { "this": this - , file: file - , pattern: pattern }) - } - - if (options.matchBase && pattern.length === 1) { - file = path.basename(file.join("/")).split("/") - } - - if (options.debug) { - console.error("matchOne", file.length, pattern.length) - } - - for ( var fi = 0 - , pi = 0 - , fl = file.length - , pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi ++, pi ++ ) { - - if (options.debug) { - console.error("matchOne loop") - } - var p = pattern[pi] - , f = file[fi] - - if (options.debug) { - console.error(pattern, p, f) - } - - // should be impossible. - // some invalid regexp stuff in the set. - if (p === false) return false - - if (p === GLOBSTAR) { - if (options.debug) - console.error('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - , pr = pi + 1 - if (pr === pl) { - if (options.debug) - console.error('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for ( ; fi < fl; fi ++) { - if (file[fi] === "." || file[fi] === ".." || - (!options.dot && file[fi].charAt(0) === ".")) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - WHILE: while (fr < fl) { - var swallowee = file[fr] - - if (options.debug) { - console.error('\nglobstar while', - file, fr, pattern, pr, swallowee) - } - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - if (options.debug) - console.error('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === "." || swallowee === ".." || - (!options.dot && swallowee.charAt(0) === ".")) { - if (options.debug) - console.error("dot detected!", file, fr, pattern, pr) - break WHILE - } - - // ** swallows a segment, and continue. - if (options.debug) - console.error('globstar swallow a segment, and continue') - fr ++ - } - } - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - if (partial) { - // ran out of file - // console.error("\n>>> no match, partial?", file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === "string") { - if (options.nocase) { - hit = f.toLowerCase() === p.toLowerCase() - } else { - hit = f === p - } - if (options.debug) { - console.error("string match", p, f, hit) - } - } else { - hit = f.match(p) - if (options.debug) { - console.error("pattern match", p, f, hit) - } - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - var emptyFileEnd = (fi === fl - 1) && (file[fi] === "") - return emptyFileEnd - } - - // should be unreachable. - throw new Error("wtf?") -} - - -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, "$1") -} - - -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") -} - -})( typeof require === "function" ? require : null, - this, - typeof module === "object" ? module : null, - typeof process === "object" ? process.platform : "win32" - ) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore deleted file mode 100644 index 07e6e47..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/.npmignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS deleted file mode 100644 index 016d7fb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/AUTHORS +++ /dev/null @@ -1,8 +0,0 @@ -# Authors, sorted by whether or not they are me -Isaac Z. Schlueter -Carlos Brito Lage -Marko Mikulicic -Trent Mick -Kevin O'Hara -Marco Rogers -Jesse Dailey diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE deleted file mode 100644 index 05a4010..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright 2009, 2010, 2011 Isaac Z. Schlueter. -All rights reserved. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md deleted file mode 100644 index 03ee0f9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# lru cache - -A cache object that deletes the least-recently-used items. - -## Usage: - -```javascript -var LRU = require("lru-cache") - , options = { max: 500 - , length: function (n) { return n * 2 } - , dispose: function (key, n) { n.close() } - , maxAge: 1000 * 60 * 60 } - , cache = LRU(options) - , otherCache = LRU(50) // sets just the max size - -cache.set("key", "value") -cache.get("key") // "value" - -cache.reset() // empty the cache -``` - -If you put more stuff in it, then items will fall out. - -If you try to put an oversized thing in it, then it'll fall out right -away. - -## Options - -* `max` The maximum size of the cache, checked by applying the length - function to all values in the cache. Not setting this is kind of - silly, since that's the whole purpose of this lib, but it defaults - to `Infinity`. -* `maxAge` Maximum age in ms. Items are not pro-actively pruned out - as they age, but if you try to get an item that is too old, it'll - drop it and return undefined instead of giving it to you. -* `length` Function that is used to calculate the length of stored - items. If you're storing strings or buffers, then you probably want - to do something like `function(n){return n.length}`. The default is - `function(n){return 1}`, which is fine if you want to store `n` - like-sized things. -* `dispose` Function that is called on items when they are dropped - from the cache. This can be handy if you want to close file - descriptors or do other cleanup tasks when items are no longer - accessible. Called with `key, value`. It's called *before* - actually removing the item from the internal cache, so if you want - to immediately put it back in, you'll have to do that in a - `nextTick` or `setTimeout` callback or it won't do anything. -* `stale` By default, if you set a `maxAge`, it'll only actually pull - stale items out of the cache when you `get(key)`. (That is, it's - not pre-emptively doing a `setTimeout` or anything.) If you set - `stale:true`, it'll return the stale value before deleting it. If - you don't set this, then it'll return `undefined` when you try to - get a stale entry, as if it had already been deleted. - -## API - -* `set(key, value)` -* `get(key) => value` - - Both of these will update the "recently used"-ness of the key. - They do what you think. - -* `peek(key)` - - Returns the key value (or `undefined` if not found) without - updating the "recently used"-ness of the key. - - (If you find yourself using this a lot, you *might* be using the - wrong sort of data structure, but there are some use cases where - it's handy.) - -* `del(key)` - - Deletes a key out of the cache. - -* `reset()` - - Clear the cache entirely, throwing away all values. - -* `has(key)` - - Check if a key is in the cache, without updating the recent-ness - or deleting it for being stale. - -* `forEach(function(value,key,cache), [thisp])` - - Just like `Array.prototype.forEach`. Iterates over all the keys - in the cache, in order of recent-ness. (Ie, more recently used - items are iterated over first.) - -* `keys()` - - Return an array of the keys in the cache. - -* `values()` - - Return an array of the values in the cache. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js deleted file mode 100644 index 8c80853..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js +++ /dev/null @@ -1,257 +0,0 @@ -;(function () { // closure for web browsers - -if (typeof module === 'object' && module.exports) { - module.exports = LRUCache -} else { - // just set the global for non-node platforms. - this.LRUCache = LRUCache -} - -function hOP (obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key) -} - -function naiveLength () { return 1 } - -function LRUCache (options) { - if (!(this instanceof LRUCache)) { - return new LRUCache(options) - } - - var max - if (typeof options === 'number') { - max = options - options = { max: max } - } - - if (!options) options = {} - - max = options.max - - var lengthCalculator = options.length || naiveLength - - if (typeof lengthCalculator !== "function") { - lengthCalculator = naiveLength - } - - if (!max || !(typeof max === "number") || max <= 0 ) { - // a little bit silly. maybe this should throw? - max = Infinity - } - - var allowStale = options.stale || false - - var maxAge = options.maxAge || null - - var dispose = options.dispose - - var cache = Object.create(null) // hash of items by key - , lruList = Object.create(null) // list of items in order of use recency - , mru = 0 // most recently used - , lru = 0 // least recently used - , length = 0 // number of items in the list - , itemCount = 0 - - - // resize the cache when the max changes. - Object.defineProperty(this, "max", - { set : function (mL) { - if (!mL || !(typeof mL === "number") || mL <= 0 ) mL = Infinity - max = mL - // if it gets above double max, trim right away. - // otherwise, do it whenever it's convenient. - if (length > max) trim() - } - , get : function () { return max } - , enumerable : true - }) - - // resize the cache when the lengthCalculator changes. - Object.defineProperty(this, "lengthCalculator", - { set : function (lC) { - if (typeof lC !== "function") { - lengthCalculator = naiveLength - length = itemCount - for (var key in cache) { - cache[key].length = 1 - } - } else { - lengthCalculator = lC - length = 0 - for (var key in cache) { - cache[key].length = lengthCalculator(cache[key].value) - length += cache[key].length - } - } - - if (length > max) trim() - } - , get : function () { return lengthCalculator } - , enumerable : true - }) - - Object.defineProperty(this, "length", - { get : function () { return length } - , enumerable : true - }) - - - Object.defineProperty(this, "itemCount", - { get : function () { return itemCount } - , enumerable : true - }) - - this.forEach = function (fn, thisp) { - thisp = thisp || this - var i = 0; - for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { - i++ - var hit = lruList[k] - fn.call(thisp, hit.value, hit.key, this) - } - } - - this.keys = function () { - var keys = new Array(itemCount) - var i = 0 - for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { - var hit = lruList[k] - keys[i++] = hit.key - } - return keys - } - - this.values = function () { - var values = new Array(itemCount) - var i = 0 - for (var k = mru - 1; k >= 0 && i < itemCount; k--) if (lruList[k]) { - var hit = lruList[k] - values[i++] = hit.value - } - return values - } - - this.reset = function () { - if (dispose) { - for (var k in cache) { - dispose(k, cache[k].value) - } - } - cache = {} - lruList = {} - lru = 0 - mru = 0 - length = 0 - itemCount = 0 - } - - // Provided for debugging/dev purposes only. No promises whatsoever that - // this API stays stable. - this.dump = function () { - return cache - } - - this.dumpLru = function () { - return lruList - } - - this.set = function (key, value) { - if (hOP(cache, key)) { - // dispose of the old one before overwriting - if (dispose) dispose(key, cache[key].value) - if (maxAge) cache[key].now = Date.now() - cache[key].value = value - this.get(key) - return true - } - - var len = lengthCalculator(value) - var age = maxAge ? Date.now() : 0 - var hit = new Entry(key, value, mru++, len, age) - - // oversized objects fall out of cache automatically. - if (hit.length > max) { - if (dispose) dispose(key, value) - return false - } - - length += hit.length - lruList[hit.lu] = cache[key] = hit - itemCount ++ - - if (length > max) trim() - return true - } - - this.has = function (key) { - if (!hOP(cache, key)) return false - var hit = cache[key] - if (maxAge && (Date.now() - hit.now > maxAge)) { - return false - } - return true - } - - this.get = function (key) { - return get(key, true) - } - - this.peek = function (key) { - return get(key, false) - } - - function get (key, doUse) { - var hit = cache[key] - if (hit) { - if (maxAge && (Date.now() - hit.now > maxAge)) { - del(hit) - if (!allowStale) hit = undefined - } else { - if (doUse) use(hit) - } - if (hit) hit = hit.value - } - return hit - } - - function use (hit) { - shiftLU(hit) - hit.lu = mru ++ - lruList[hit.lu] = hit - } - - this.del = function (key) { - del(cache[key]) - } - - function trim () { - while (lru < mru && length > max) - del(lruList[lru]) - } - - function shiftLU(hit) { - delete lruList[ hit.lu ] - while (lru < mru && !lruList[lru]) lru ++ - } - - function del(hit) { - if (hit) { - if (dispose) dispose(hit.key, hit.value) - length -= hit.length - itemCount -- - delete cache[ hit.key ] - shiftLU(hit) - } - } -} - -// classy, since V8 prefers predictable objects. -function Entry (key, value, mru, len, age) { - this.key = key - this.value = value - this.lu = mru - this.length = len - this.now = age -} - -})() diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json deleted file mode 100644 index 73920bf..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "lru-cache", - "description": "A cache object that deletes the least-recently-used items.", - "version": "2.3.0", - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - "scripts": { - "test": "tap test --gc" - }, - "main": "lib/lru-cache.js", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/node-lru-cache.git" - }, - "devDependencies": { - "tap": "", - "weak": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/node-lru-cache/raw/master/LICENSE" - }, - "contributors": [ - { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me" - }, - { - "name": "Carlos Brito Lage", - "email": "carlos@carloslage.net" - }, - { - "name": "Marko Mikulicic", - "email": "marko.mikulicic@isti.cnr.it" - }, - { - "name": "Trent Mick", - "email": "trentm@gmail.com" - }, - { - "name": "Kevin O'Hara", - "email": "kevinohara80@gmail.com" - }, - { - "name": "Marco Rogers", - "email": "marco.rogers@gmail.com" - }, - { - "name": "Jesse Dailey", - "email": "jesse.dailey@gmail.com" - } - ], - "readme": "# lru cache\n\nA cache object that deletes the least-recently-used items.\n\n## Usage:\n\n```javascript\nvar LRU = require(\"lru-cache\")\n , options = { max: 500\n , length: function (n) { return n * 2 }\n , dispose: function (key, n) { n.close() }\n , maxAge: 1000 * 60 * 60 }\n , cache = LRU(options)\n , otherCache = LRU(50) // sets just the max size\n\ncache.set(\"key\", \"value\")\ncache.get(\"key\") // \"value\"\n\ncache.reset() // empty the cache\n```\n\nIf you put more stuff in it, then items will fall out.\n\nIf you try to put an oversized thing in it, then it'll fall out right\naway.\n\n## Options\n\n* `max` The maximum size of the cache, checked by applying the length\n function to all values in the cache. Not setting this is kind of\n silly, since that's the whole purpose of this lib, but it defaults\n to `Infinity`.\n* `maxAge` Maximum age in ms. Items are not pro-actively pruned out\n as they age, but if you try to get an item that is too old, it'll\n drop it and return undefined instead of giving it to you.\n* `length` Function that is used to calculate the length of stored\n items. If you're storing strings or buffers, then you probably want\n to do something like `function(n){return n.length}`. The default is\n `function(n){return 1}`, which is fine if you want to store `n`\n like-sized things.\n* `dispose` Function that is called on items when they are dropped\n from the cache. This can be handy if you want to close file\n descriptors or do other cleanup tasks when items are no longer\n accessible. Called with `key, value`. It's called *before*\n actually removing the item from the internal cache, so if you want\n to immediately put it back in, you'll have to do that in a\n `nextTick` or `setTimeout` callback or it won't do anything.\n* `stale` By default, if you set a `maxAge`, it'll only actually pull\n stale items out of the cache when you `get(key)`. (That is, it's\n not pre-emptively doing a `setTimeout` or anything.) If you set\n `stale:true`, it'll return the stale value before deleting it. If\n you don't set this, then it'll return `undefined` when you try to\n get a stale entry, as if it had already been deleted.\n\n## API\n\n* `set(key, value)`\n* `get(key) => value`\n\n Both of these will update the \"recently used\"-ness of the key.\n They do what you think.\n\n* `peek(key)`\n\n Returns the key value (or `undefined` if not found) without\n updating the \"recently used\"-ness of the key.\n\n (If you find yourself using this a lot, you *might* be using the\n wrong sort of data structure, but there are some use cases where\n it's handy.)\n\n* `del(key)`\n\n Deletes a key out of the cache.\n\n* `reset()`\n\n Clear the cache entirely, throwing away all values.\n\n* `has(key)`\n\n Check if a key is in the cache, without updating the recent-ness\n or deleting it for being stale.\n\n* `forEach(function(value,key,cache), [thisp])`\n\n Just like `Array.prototype.forEach`. Iterates over all the keys\n in the cache, in order of recent-ness. (Ie, more recently used\n items are iterated over first.)\n\n* `keys()`\n\n Return an array of the keys in the cache.\n\n* `values()`\n\n Return an array of the values in the cache.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/node-lru-cache/issues" - }, - "_id": "lru-cache@2.3.0", - "_from": "lru-cache@2" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js deleted file mode 100644 index c2a9e54..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/s.js +++ /dev/null @@ -1,25 +0,0 @@ -var LRU = require('lru-cache'); - -var max = +process.argv[2] || 10240; -var more = 1024; - -var cache = LRU({ - max: max, maxAge: 86400e3 -}); - -// fill cache -for (var i = 0; i < max; ++i) { - cache.set(i, {}); -} - -var start = process.hrtime(); - -// adding more items -for ( ; i < max+more; ++i) { - cache.set(i, {}); -} - -var end = process.hrtime(start); -var msecs = end[0] * 1E3 + end[1] / 1E6; - -console.log('adding %d items took %d ms', more, msecs.toPrecision(5)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js deleted file mode 100644 index 70f3f8b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/basic.js +++ /dev/null @@ -1,329 +0,0 @@ -var test = require("tap").test - , LRU = require("../") - -test("basic", function (t) { - var cache = new LRU({max: 10}) - cache.set("key", "value") - t.equal(cache.get("key"), "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.length, 1) - t.equal(cache.max, 10) - t.end() -}) - -test("least recently set", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - cache.get("a") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), "A") - t.end() -}) - -test("del", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.del("a") - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("max", function (t) { - var cache = new LRU(3) - - // test changing the max, verify that the LRU items get dropped. - cache.max = 100 - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - - // now remove the max restriction, and try again. - cache.max = "hello" - for (var i = 0; i < 100; i ++) cache.set(i, i) - t.equal(cache.length, 100) - for (var i = 0; i < 100; i ++) { - t.equal(cache.get(i), i) - } - // should trigger an immediate resize - cache.max = 3 - t.equal(cache.length, 3) - for (var i = 0; i < 97; i ++) { - t.equal(cache.get(i), undefined) - } - for (var i = 98; i < 100; i ++) { - t.equal(cache.get(i), i) - } - t.end() -}) - -test("reset", function (t) { - var cache = new LRU(10) - cache.set("a", "A") - cache.set("b", "B") - cache.reset() - t.equal(cache.length, 0) - t.equal(cache.max, 10) - t.equal(cache.get("a"), undefined) - t.equal(cache.get("b"), undefined) - t.end() -}) - - -// Note: `.dump()` is a debugging tool only. No guarantees are made -// about the format/layout of the response. -test("dump", function (t) { - var cache = new LRU(10) - var d = cache.dump(); - t.equal(Object.keys(d).length, 0, "nothing in dump for empty cache") - cache.set("a", "A") - var d = cache.dump() // { a: { key: "a", value: "A", lu: 0 } } - t.ok(d.a) - t.equal(d.a.key, "a") - t.equal(d.a.value, "A") - t.equal(d.a.lu, 0) - - cache.set("b", "B") - cache.get("b") - d = cache.dump() - t.ok(d.b) - t.equal(d.b.key, "b") - t.equal(d.b.value, "B") - t.equal(d.b.lu, 2) - - t.end() -}) - - -test("basic with weighed length", function (t) { - var cache = new LRU({ - max: 100, - length: function (item) { return item.size } - }) - cache.set("key", {val: "value", size: 50}) - t.equal(cache.get("key").val, "value") - t.equal(cache.get("nada"), undefined) - t.equal(cache.lengthCalculator(cache.get("key")), 50) - t.equal(cache.length, 50) - t.equal(cache.max, 100) - t.end() -}) - - -test("weighed length item too large", function (t) { - var cache = new LRU({ - max: 10, - length: function (item) { return item.size } - }) - t.equal(cache.max, 10) - - // should fall out immediately - cache.set("key", {val: "value", size: 50}) - - t.equal(cache.length, 0) - t.equal(cache.get("key"), undefined) - t.end() -}) - -test("least recently set with weighed length", function (t) { - var cache = new LRU({ - max:8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.set("d", "DDDD") - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("c"), "CCC") - t.equal(cache.get("b"), undefined) - t.equal(cache.get("a"), undefined) - t.end() -}) - -test("lru recently gotten with weighed length", function (t) { - var cache = new LRU({ - max: 8, - length: function (item) { return item.length } - }) - cache.set("a", "A") - cache.set("b", "BB") - cache.set("c", "CCC") - cache.get("a") - cache.get("b") - cache.set("d", "DDDD") - t.equal(cache.get("c"), undefined) - t.equal(cache.get("d"), "DDDD") - t.equal(cache.get("b"), "BB") - t.equal(cache.get("a"), "A") - t.end() -}) - -test("set returns proper booleans", function(t) { - var cache = new LRU({ - max: 5, - length: function (item) { return item.length } - }) - - t.equal(cache.set("a", "A"), true) - - // should return false for max exceeded - t.equal(cache.set("b", "donuts"), false) - - t.equal(cache.set("b", "B"), true) - t.equal(cache.set("c", "CCCC"), true) - t.end() -}) - -test("drop the old items", function(t) { - var cache = new LRU({ - max: 5, - maxAge: 50 - }) - - cache.set("a", "A") - - setTimeout(function () { - cache.set("b", "b") - t.equal(cache.get("a"), "A") - }, 25) - - setTimeout(function () { - cache.set("c", "C") - // timed out - t.notOk(cache.get("a")) - }, 60) - - setTimeout(function () { - t.notOk(cache.get("b")) - t.equal(cache.get("c"), "C") - }, 90) - - setTimeout(function () { - t.notOk(cache.get("c")) - t.end() - }, 155) -}) - -test("disposal function", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - dispose: function (k, n) { - disposed = n - } - }) - - cache.set(1, 1) - cache.set(2, 2) - t.equal(disposed, 1) - cache.set(3, 3) - t.equal(disposed, 2) - cache.reset() - t.equal(disposed, 3) - t.end() -}) - -test("disposal function on too big of item", function(t) { - var disposed = false - var cache = new LRU({ - max: 1, - length: function (k) { - return k.length - }, - dispose: function (k, n) { - disposed = n - } - }) - var obj = [ 1, 2 ] - - t.equal(disposed, false) - cache.set("obj", obj) - t.equal(disposed, obj) - t.end() -}) - -test("has()", function(t) { - var cache = new LRU({ - max: 1, - maxAge: 10 - }) - - cache.set('foo', 'bar') - t.equal(cache.has('foo'), true) - cache.set('blu', 'baz') - t.equal(cache.has('foo'), false) - t.equal(cache.has('blu'), true) - setTimeout(function() { - t.equal(cache.has('blu'), false) - t.end() - }, 15) -}) - -test("stale", function(t) { - var cache = new LRU({ - maxAge: 10, - stale: true - }) - - cache.set('foo', 'bar') - t.equal(cache.get('foo'), 'bar') - t.equal(cache.has('foo'), true) - setTimeout(function() { - t.equal(cache.has('foo'), false) - t.equal(cache.get('foo'), 'bar') - t.equal(cache.get('foo'), undefined) - t.end() - }, 15) -}) - -test("lru update via set", function(t) { - var cache = LRU({ max: 2 }); - - cache.set('foo', 1); - cache.set('bar', 2); - cache.del('bar'); - cache.set('baz', 3); - cache.set('qux', 4); - - t.equal(cache.get('foo'), undefined) - t.equal(cache.get('bar'), undefined) - t.equal(cache.get('baz'), 3) - t.equal(cache.get('qux'), 4) - t.end() -}) - -test("least recently set w/ peek", function (t) { - var cache = new LRU(2) - cache.set("a", "A") - cache.set("b", "B") - t.equal(cache.peek("a"), "A") - cache.set("c", "C") - t.equal(cache.get("c"), "C") - t.equal(cache.get("b"), "B") - t.equal(cache.get("a"), undefined) - t.end() -}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js deleted file mode 100644 index eefb80d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/foreach.js +++ /dev/null @@ -1,52 +0,0 @@ -var test = require('tap').test -var LRU = require('../') - -test('forEach', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - var i = 9 - l.forEach(function (val, key, cache) { - t.equal(cache, l) - t.equal(key, i.toString()) - t.equal(val, i.toString(2)) - i -= 1 - }) - - // get in order of most recently used - l.get(6) - l.get(8) - - var order = [ 8, 6, 9, 7, 5 ] - var i = 0 - - l.forEach(function (val, key, cache) { - var j = order[i ++] - t.equal(cache, l) - t.equal(key, j.toString()) - t.equal(val, j.toString(2)) - }) - - t.end() -}) - -test('keys() and values()', function (t) { - var l = new LRU(5) - for (var i = 0; i < 10; i ++) { - l.set(i.toString(), i.toString(2)) - } - - t.similar(l.keys(), ['9', '8', '7', '6', '5']) - t.similar(l.values(), ['1001', '1000', '111', '110', '101']) - - // get in order of most recently used - l.get(6) - l.get(8) - - t.similar(l.keys(), ['8', '6', '9', '7', '5']) - t.similar(l.values(), ['1000', '110', '1001', '111', '101']) - - t.end() -}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js deleted file mode 100644 index 7af45b0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env node --expose_gc - -var weak = require('weak'); -var test = require('tap').test -var LRU = require('../') -var l = new LRU({ max: 10 }) -var refs = 0 -function X() { - refs ++ - weak(this, deref) -} - -function deref() { - refs -- -} - -test('no leaks', function (t) { - // fill up the cache - for (var i = 0; i < 100; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var start = process.memoryUsage() - - // capture the memory - var startRefs = refs - - // do it again, but more - for (var i = 0; i < 10000; i++) { - l.set(i, new X); - // throw some gets in there, too. - if (i % 2 === 0) - l.get(i / 2) - } - - gc() - - var end = process.memoryUsage() - t.equal(refs, startRefs, 'no leaky refs') - - console.error('start: %j\n' + - 'end: %j', start, end); - t.pass(); - t.end(); -}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE deleted file mode 100644 index 0c44ae7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) Isaac Z. Schlueter ("Author") -All rights reserved. - -The BSD License - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md deleted file mode 100644 index 7e36512..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# sigmund - -Quick and dirty signatures for Objects. - -This is like a much faster `deepEquals` comparison, which returns a -string key suitable for caches and the like. - -## Usage - -```javascript -function doSomething (someObj) { - var key = sigmund(someObj, maxDepth) // max depth defaults to 10 - var cached = cache.get(key) - if (cached) return cached) - - var result = expensiveCalculation(someObj) - cache.set(key, result) - return result -} -``` - -The resulting key will be as unique and reproducible as calling -`JSON.stringify` or `util.inspect` on the object, but is much faster. -In order to achieve this speed, some differences are glossed over. -For example, the object `{0:'foo'}` will be treated identically to the -array `['foo']`. - -Also, just as there is no way to summon the soul from the scribblings -of a cocain-addled psychoanalyst, there is no way to revive the object -from the signature string that sigmund gives you. In fact, it's -barely even readable. - -As with `sys.inspect` and `JSON.stringify`, larger objects will -produce larger signature strings. - -Because sigmund is a bit less strict than the more thorough -alternatives, the strings will be shorter, and also there is a -slightly higher chance for collisions. For example, these objects -have the same signature: - - var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} - var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -Like a good Freudian, sigmund is most effective when you already have -some understanding of what you're looking for. It can help you help -yourself, but you must be willing to do some work as well. - -Cycles are handled, and cyclical objects are silently omitted (though -the key is included in the signature output.) - -The second argument is the maximum depth, which defaults to 10, -because that is the maximum object traversal depth covered by most -insurance carriers. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js deleted file mode 100644 index 5acfd6d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/bench.js +++ /dev/null @@ -1,283 +0,0 @@ -// different ways to id objects -// use a req/res pair, since it's crazy deep and cyclical - -// sparseFE10 and sigmund are usually pretty close, which is to be expected, -// since they are essentially the same algorithm, except that sigmund handles -// regular expression objects properly. - - -var http = require('http') -var util = require('util') -var sigmund = require('./sigmund.js') -var sreq, sres, creq, cres, test - -http.createServer(function (q, s) { - sreq = q - sres = s - sres.end('ok') - this.close(function () { setTimeout(function () { - start() - }, 200) }) -}).listen(1337, function () { - creq = http.get({ port: 1337 }) - creq.on('response', function (s) { cres = s }) -}) - -function start () { - test = [sreq, sres, creq, cres] - // test = sreq - // sreq.sres = sres - // sreq.creq = creq - // sreq.cres = cres - - for (var i in exports.compare) { - console.log(i) - var hash = exports.compare[i]() - console.log(hash) - console.log(hash.length) - console.log('') - } - - require('bench').runMain() -} - -function customWs (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return ('' + obj).replace(/[\n ]+/g, '') - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return customWs(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + customWs(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function custom (obj, md, d) { - d = d || 0 - var to = typeof obj - if (to === 'undefined' || to === 'function' || to === null) return '' - if (d > md || !obj || to !== 'object') return '' + obj - - if (Array.isArray(obj)) { - return obj.map(function (i, _, __) { - return custom(i, md, d + 1) - }).reduce(function (a, b) { return a + b }, '') - } - - var keys = Object.keys(obj) - return keys.map(function (k, _, __) { - return k + ':' + custom(obj[k], md, d + 1) - }).reduce(function (a, b) { return a + b }, '') -} - -function sparseFE2 (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k + ':' - ch(v[k], depth + 1) - }) - soFar += '}' - } - ch(obj, 0) - return soFar -} - -function sparseFE (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - Object.keys(v).forEach(function (k, _, __) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') return - var to = typeof v[k] - if (to === 'function' || to === 'undefined') return - soFar += k - ch(v[k], depth + 1) - }) - } - ch(obj, 0) - return soFar -} - -function sparse (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k - ch(v[k], depth + 1) - } - } - ch(obj, 0) - return soFar -} - -function noCommas (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - - -function flatten (obj, maxDepth) { - var seen = [] - var soFar = '' - function ch (v, depth) { - if (depth > maxDepth) return - if (typeof v === 'function' || typeof v === 'undefined') return - if (typeof v !== 'object' || !v) { - soFar += v - return - } - if (seen.indexOf(v) !== -1 || depth === maxDepth) return - seen.push(v) - soFar += '{' - for (var k in v) { - // pseudo-private values. skip those. - if (k.charAt(0) === '_') continue - var to = typeof v[k] - if (to === 'function' || to === 'undefined') continue - soFar += k + ':' - ch(v[k], depth + 1) - soFar += ',' - } - soFar += '}' - } - ch(obj, 0) - return soFar -} - -exports.compare = -{ - // 'custom 2': function () { - // return custom(test, 2, 0) - // }, - // 'customWs 2': function () { - // return customWs(test, 2, 0) - // }, - 'JSON.stringify (guarded)': function () { - var seen = [] - return JSON.stringify(test, function (k, v) { - if (typeof v !== 'object' || !v) return v - if (seen.indexOf(v) !== -1) return undefined - seen.push(v) - return v - }) - }, - - 'flatten 10': function () { - return flatten(test, 10) - }, - - // 'flattenFE 10': function () { - // return flattenFE(test, 10) - // }, - - 'noCommas 10': function () { - return noCommas(test, 10) - }, - - 'sparse 10': function () { - return sparse(test, 10) - }, - - 'sparseFE 10': function () { - return sparseFE(test, 10) - }, - - 'sparseFE2 10': function () { - return sparseFE2(test, 10) - }, - - sigmund: function() { - return sigmund(test, 10) - }, - - - // 'util.inspect 1': function () { - // return util.inspect(test, false, 1, false) - // }, - // 'util.inspect undefined': function () { - // util.inspect(test) - // }, - // 'util.inspect 2': function () { - // util.inspect(test, false, 2, false) - // }, - // 'util.inspect 3': function () { - // util.inspect(test, false, 3, false) - // }, - // 'util.inspect 4': function () { - // util.inspect(test, false, 4, false) - // }, - // 'util.inspect Infinity': function () { - // util.inspect(test, false, Infinity, false) - // } -} - -/** results -**/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json deleted file mode 100644 index ec8e2eb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "sigmund", - "version": "1.0.0", - "description": "Quick and dirty signatures for Objects.", - "main": "sigmund.js", - "directories": { - "test": "test" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.3.0" - }, - "scripts": { - "test": "tap test/*.js", - "bench": "node bench.js" - }, - "repository": { - "type": "git", - "url": "git://github.com/isaacs/sigmund" - }, - "keywords": [ - "object", - "signature", - "key", - "data", - "psychoanalysis" - ], - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me/" - }, - "license": "BSD", - "readme": "# sigmund\n\nQuick and dirty signatures for Objects.\n\nThis is like a much faster `deepEquals` comparison, which returns a\nstring key suitable for caches and the like.\n\n## Usage\n\n```javascript\nfunction doSomething (someObj) {\n var key = sigmund(someObj, maxDepth) // max depth defaults to 10\n var cached = cache.get(key)\n if (cached) return cached)\n\n var result = expensiveCalculation(someObj)\n cache.set(key, result)\n return result\n}\n```\n\nThe resulting key will be as unique and reproducible as calling\n`JSON.stringify` or `util.inspect` on the object, but is much faster.\nIn order to achieve this speed, some differences are glossed over.\nFor example, the object `{0:'foo'}` will be treated identically to the\narray `['foo']`.\n\nAlso, just as there is no way to summon the soul from the scribblings\nof a cocain-addled psychoanalyst, there is no way to revive the object\nfrom the signature string that sigmund gives you. In fact, it's\nbarely even readable.\n\nAs with `sys.inspect` and `JSON.stringify`, larger objects will\nproduce larger signature strings.\n\nBecause sigmund is a bit less strict than the more thorough\nalternatives, the strings will be shorter, and also there is a\nslightly higher chance for collisions. For example, these objects\nhave the same signature:\n\n var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]}\n var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']}\n\nLike a good Freudian, sigmund is most effective when you already have\nsome understanding of what you're looking for. It can help you help\nyourself, but you must be willing to do some work as well.\n\nCycles are handled, and cyclical objects are silently omitted (though\nthe key is included in the signature output.)\n\nThe second argument is the maximum depth, which defaults to 10,\nbecause that is the maximum object traversal depth covered by most\ninsurance carriers.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/sigmund/issues" - }, - "_id": "sigmund@1.0.0", - "_from": "sigmund@~1.0.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js deleted file mode 100644 index 82c7ab8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/sigmund.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = sigmund -function sigmund (subject, maxSessions) { - maxSessions = maxSessions || 10; - var notes = []; - var analysis = ''; - var RE = RegExp; - - function psychoAnalyze (subject, session) { - if (session > maxSessions) return; - - if (typeof subject === 'function' || - typeof subject === 'undefined') { - return; - } - - if (typeof subject !== 'object' || !subject || - (subject instanceof RE)) { - analysis += subject; - return; - } - - if (notes.indexOf(subject) !== -1 || session === maxSessions) return; - - notes.push(subject); - analysis += '{'; - Object.keys(subject).forEach(function (issue, _, __) { - // pseudo-private values. skip those. - if (issue.charAt(0) === '_') return; - var to = typeof subject[issue]; - if (to === 'function' || to === 'undefined') return; - analysis += issue; - psychoAnalyze(subject[issue], session + 1); - }); - } - psychoAnalyze(subject, 0); - return analysis; -} - -// vim: set softtabstop=4 shiftwidth=4: diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js deleted file mode 100644 index 50c53a1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/node_modules/sigmund/test/basic.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tap').test -var sigmund = require('../sigmund.js') - - -// occasionally there are duplicates -// that's an acceptable edge-case. JSON.stringify and util.inspect -// have some collision potential as well, though less, and collision -// detection is expensive. -var hash = '{abc/def/g{0h1i2{jkl' -var obj1 = {a:'b',c:/def/,g:['h','i',{j:'',k:'l'}]} -var obj2 = {a:'b',c:'/def/',g:['h','i','{jkl']} - -var obj3 = JSON.parse(JSON.stringify(obj1)) -obj3.c = /def/ -obj3.g[2].cycle = obj3 -var cycleHash = '{abc/def/g{0h1i2{jklcycle' - -test('basic', function (t) { - t.equal(sigmund(obj1), hash) - t.equal(sigmund(obj2), hash) - t.equal(sigmund(obj3), cycleHash) - t.end() -}) - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json deleted file mode 100644 index 508990f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "author": { - "name": "Isaac Z. Schlueter", - "email": "i@izs.me", - "url": "http://blog.izs.me" - }, - "name": "minimatch", - "description": "a glob matcher in javascript", - "version": "0.2.12", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "main": "minimatch.js", - "scripts": { - "test": "tap test" - }, - "engines": { - "node": "*" - }, - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "devDependencies": { - "tap": "" - }, - "license": { - "type": "MIT", - "url": "http://github.com/isaacs/minimatch/raw/master/LICENSE" - }, - "readme": "# minimatch\n\nA minimal matching utility.\n\n[![Build Status](https://secure.travis-ci.org/isaacs/minimatch.png)](http://travis-ci.org/isaacs/minimatch)\n\n\nThis is the matching library used internally by npm.\n\nEventually, it will replace the C binding in node-glob.\n\nIt works by converting glob expressions into JavaScript `RegExp`\nobjects.\n\n## Usage\n\n```javascript\nvar minimatch = require(\"minimatch\")\n\nminimatch(\"bar.foo\", \"*.foo\") // true!\nminimatch(\"bar.foo\", \"*.bar\") // false!\n```\n\n## Features\n\nSupports these glob features:\n\n* Brace Expansion\n* Extended glob matching\n* \"Globstar\" `**` matching\n\nSee:\n\n* `man sh`\n* `man bash`\n* `man 3 fnmatch`\n* `man 5 gitignore`\n\n### Comparisons to other fnmatch/glob implementations\n\nWhile strict compliance with the existing standards is a worthwhile\ngoal, some discrepancies exist between minimatch and other\nimplementations, and are intentional.\n\nIf the pattern starts with a `!` character, then it is negated. Set the\n`nonegate` flag to suppress this behavior, and treat leading `!`\ncharacters normally. This is perhaps relevant if you wish to start the\npattern with a negative extglob pattern like `!(a|B)`. Multiple `!`\ncharacters at the start of a pattern will negate the pattern multiple\ntimes.\n\nIf a pattern starts with `#`, then it is treated as a comment, and\nwill not match anything. Use `\\#` to match a literal `#` at the\nstart of a line, or set the `nocomment` flag to suppress this behavior.\n\nThe double-star character `**` is supported by default, unless the\n`noglobstar` flag is set. This is supported in the manner of bsdglob\nand bash 4.1, where `**` only has special significance if it is the only\nthing in a path part. That is, `a/**/b` will match `a/x/y/b`, but\n`a/**b` will not. **Note that this is different from the way that `**` is\nhandled by ruby's `Dir` class.**\n\nIf an escaped pattern has no matches, and the `nonull` flag is set,\nthen minimatch.match returns the pattern as-provided, rather than\ninterpreting the character escapes. For example,\n`minimatch.match([], \"\\\\*a\\\\?\")` will return `\"\\\\*a\\\\?\"` rather than\n`\"*a?\"`. This is akin to setting the `nullglob` option in bash, except\nthat it does not resolve escaped pattern characters.\n\nIf brace expansion is not disabled, then it is performed before any\nother interpretation of the glob pattern. Thus, a pattern like\n`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded\n**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are\nchecked for validity. Since those two are valid, matching proceeds.\n\n\n## Minimatch Class\n\nCreate a minimatch object by instanting the `minimatch.Minimatch` class.\n\n```javascript\nvar Minimatch = require(\"minimatch\").Minimatch\nvar mm = new Minimatch(pattern, options)\n```\n\n### Properties\n\n* `pattern` The original pattern the minimatch object represents.\n* `options` The options supplied to the constructor.\n* `set` A 2-dimensional array of regexp or string expressions.\n Each row in the\n array corresponds to a brace-expanded pattern. Each item in the row\n corresponds to a single path-part. For example, the pattern\n `{a,b/c}/d` would expand to a set of patterns like:\n\n [ [ a, d ]\n , [ b, c, d ] ]\n\n If a portion of the pattern doesn't have any \"magic\" in it\n (that is, it's something like `\"foo\"` rather than `fo*o?`), then it\n will be left as a string rather than converted to a regular\n expression.\n\n* `regexp` Created by the `makeRe` method. A single regular expression\n expressing the entire pattern. This is useful in cases where you wish\n to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.\n* `negate` True if the pattern is negated.\n* `comment` True if the pattern is a comment.\n* `empty` True if the pattern is `\"\"`.\n\n### Methods\n\n* `makeRe` Generate the `regexp` member if necessary, and return it.\n Will return `false` if the pattern is invalid.\n* `match(fname)` Return true if the filename matches the pattern, or\n false otherwise.\n* `matchOne(fileArray, patternArray, partial)` Take a `/`-split\n filename, and match it against a single row in the `regExpSet`. This\n method is mainly for internal use, but is exposed so that it can be\n used by a glob-walker that needs to avoid excessive filesystem calls.\n\nAll other methods are internal, and will be called as necessary.\n\n## Functions\n\nThe top-level exported function has a `cache` property, which is an LRU\ncache set to store 100 items. So, calling these methods repeatedly\nwith the same pattern and options will use the same Minimatch object,\nsaving the cost of parsing it multiple times.\n\n### minimatch(path, pattern, options)\n\nMain export. Tests a path against the pattern using the options.\n\n```javascript\nvar isJS = minimatch(file, \"*.js\", { matchBase: true })\n```\n\n### minimatch.filter(pattern, options)\n\nReturns a function that tests its\nsupplied argument, suitable for use with `Array.filter`. Example:\n\n```javascript\nvar javascripts = fileList.filter(minimatch.filter(\"*.js\", {matchBase: true}))\n```\n\n### minimatch.match(list, pattern, options)\n\nMatch against the list of\nfiles, in the style of fnmatch or glob. If nothing is matched, and\noptions.nonull is set, then return a list containing the pattern itself.\n\n```javascript\nvar javascripts = minimatch.match(fileList, \"*.js\", {matchBase: true}))\n```\n\n### minimatch.makeRe(pattern, options)\n\nMake a regular expression object from the pattern.\n\n## Options\n\nAll options are `false` by default.\n\n### debug\n\nDump a ton of stuff to stderr.\n\n### nobrace\n\nDo not expand `{a,b}` and `{1..3}` brace sets.\n\n### noglobstar\n\nDisable `**` matching against multiple folder names.\n\n### dot\n\nAllow patterns to match filenames starting with a period, even if\nthe pattern does not explicitly have a period in that spot.\n\nNote that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`\nis set.\n\n### noext\n\nDisable \"extglob\" style patterns like `+(a|b)`.\n\n### nocase\n\nPerform a case-insensitive match.\n\n### nonull\n\nWhen a match is not found by `minimatch.match`, return a list containing\nthe pattern itself. When set, an empty list is returned if there are\nno matches.\n\n### matchBase\n\nIf set, then patterns without slashes will be matched\nagainst the basename of the path if it contains slashes. For example,\n`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.\n\n### nocomment\n\nSuppress the behavior of treating `#` at the start of a pattern as a\ncomment.\n\n### nonegate\n\nSuppress the behavior of treating a leading `!` character as negation.\n\n### flipNegate\n\nReturns from negate expressions the same as if they were not negated.\n(Ie, true on a hit, false on a miss.)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/isaacs/minimatch/issues" - }, - "_id": "minimatch@0.2.12", - "_from": "minimatch@>=0.2.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js deleted file mode 100644 index ae7ac73..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/basic.js +++ /dev/null @@ -1,399 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - - -var patterns = - [ "http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - // https://github.com/isaacs/minimatch/issues/5 - , function () { - files = [ 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' - , 'a/b/.x' - , 'a/b/.x/' - , 'a/.x/b' - , '.x' - , '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b/.x/c' - , '.x/.x' ] - } - , ["**/.x/**", [ '.x/' - , '.x/a' - , '.x/a/b' - , 'a/.x/b' - , 'a/b/.x/' - , 'a/b/.x/c' - , 'a/b/.x/c/d' - , 'a/b/.x/c/d/e' ] ] - - ] - -var regexps = - [ '/^(?:(?=.)a[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:(?=.)X[^/]*?)$/', - '/^(?:\\*)$/', - '/^(?:(?=.)\\*[^/]*?)$/', - '/^(?:\\*\\*)$/', - '/^(?:(?=.)b[^/]*?\\/)$/', - '/^(?:(?=.)c[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:\\.\\.\\/(?!\\.)(?=.)[^/]*?\\/)$/', - '/^(?:s\\/(?=.)\\.\\.[^/]*?\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/1\\/)$/', - '/^(?:\\/\\^root:\\/\\{s\\/(?=.)\\^[^:][^/]*?:[^:][^/]*?:\\([^:]\\)[^/]*?\\.[^/]*?\\$\\/\u0001\\/)$/', - '/^(?:(?!\\.)(?=.)[a-c]b[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[a-y][^/]*?[^c])$/', - '/^(?:(?=.)a[^/]*?[^c])$/', - '/^(?:(?=.)a[X-]b)$/', - '/^(?:(?!\\.)(?=.)[^a-c][^/]*?)$/', - '/^(?:a\\*b\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?=.)a\\*[^/]\\/(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\\\\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\![^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.\\*)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[b]c)$/', - '/^(?:(?=.)a[^/]c)$/', - '/^(?:a\\*c)$/', - 'false', - '/^(?:(?!\\.)(?=.)[^/]*?\\/(?=.)man[^/]*?\\/(?=.)bash\\.[^/]*?)$/', - '/^(?:man\\/man1\\/bash\\.1)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?=.)a[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/]k[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/][^/]*?[^/]*?cd[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?k[^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[-abc])$/', - '/^(?:(?!\\.)(?=.)[abc-])$/', - '/^(?:\\\\)$/', - '/^(?:(?!\\.)(?=.)[\\\\])$/', - '/^(?:(?!\\.)(?=.)[\\[])$/', - '/^(?:\\[)$/', - '/^(?:(?=.)\\[(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[\\]])$/', - '/^(?:(?!\\.)(?=.)[\\]-])$/', - '/^(?:(?!\\.)(?=.)[a-z])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/])$/', - '/^(?:(?!\\.)(?=.)[^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?c)$/', - '/^(?:(?!\\.)(?=.)[^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?c[^/]*?[^/][^/]*?[^/]*?)$/', - '/^(?:(?=.)a[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/][^/][^/][^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?[^/]*?)$/', - '/^(?:\\[\\])$/', - '/^(?:\\[abc)$/', - '/^(?:(?=.)XYZ)$/i', - '/^(?:(?=.)ab[^/]*?)$/i', - '/^(?:(?!\\.)(?=.)[ia][^/][ck])$/i', - '/^(?:\\/(?!\\.)(?=.)[^/]*?|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:\\/(?!\\.)(?=.)[^/]|(?!\\.)(?=.)[^/]*?)$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?)$/', - '/^(?:a\\/(?!(?:^|\\/)\\.{1,2}(?:$|\\/))(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:a\\/(?!\\.)(?=.)[^/]*?\\/b)$/', - '/^(?:a\\/(?=.)\\.[^/]*?\\/b)$/', - '/^(?:(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\/b\\))$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?=.)\\[(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)\\[(?=.)#a[^/]*?)$/', - '/^(?:(?=.)\\+\\(a\\|[^/]*?\\|c\\\\\\\\\\|d\\\\\\\\\\|e\\\\\\\\\\\\\\\\\\|f\\\\\\\\\\\\\\\\\\|g)$/', - '/^(?:(?!\\.)(?=.)(?:a|b)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:a|(?!\\.)(?=.)[^/]*?\\(b\\|c|d\\))$/', - '/^(?:a|(?!\\.)(?=.)(?:b|c)*|(?!\\.)(?=.)(?:b|d)*)$/', - '/^(?:(?!\\.)(?=.)(?:a|b|c)*|(?!\\.)(?=.)(?:a|c)*)$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\(a\\|b\\|c\\)|(?!\\.)(?=.)[^/]*?\\(a\\|c\\))$/', - '/^(?:(?=.)a[^/]b)$/', - '/^(?:(?=.)#[^/]*?)$/', - '/^(?!^(?:(?=.)a[^/]*?)$).*$/', - '/^(?:(?=.)\\!a[^/]*?)$/', - '/^(?:(?=.)a[^/]*?)$/', - '/^(?!^(?:(?=.)\\!a[^/]*?)$).*$/', - '/^(?:(?!\\.)(?=.)[^/]*?\\.(?:(?!js)[^/]*?))$/', - '/^(?:(?:(?!(?:\\/|^)\\.).)*?\\/\\.x\\/(?:(?!(?:\\/|^)\\.).)*?)$/' ] -var re = 0; - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - patterns.forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var m = new mm.Minimatch(pattern, options) - var r = m.makeRe() - var expectRe = regexps[re++] - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - - t.equal(tapOpts.re, expectRe, tapOpts) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js deleted file mode 100644 index 7ee278a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/brace-expand.js +++ /dev/null @@ -1,33 +0,0 @@ -var tap = require("tap") - , minimatch = require("../") - -tap.test("brace expansion", function (t) { - // [ pattern, [expanded] ] - ; [ [ "a{b,c{d,e},{f,g}h}x{y,z}" - , [ "abxy" - , "abxz" - , "acdxy" - , "acdxz" - , "acexy" - , "acexz" - , "afhxy" - , "afhxz" - , "aghxy" - , "aghxz" ] ] - , [ "a{1..5}b" - , [ "a1b" - , "a2b" - , "a3b" - , "a4b" - , "a5b" ] ] - , [ "a{b}c", ["a{b}c"] ] - ].forEach(function (tc) { - var p = tc[0] - , expect = tc[1] - t.equivalent(minimatch.braceExpand(p), expect, p) - }) - console.error("ending") - t.end() -}) - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js deleted file mode 100644 index 0fec4b0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/caching.js +++ /dev/null @@ -1,14 +0,0 @@ -var Minimatch = require("../minimatch.js").Minimatch -var tap = require("tap") -tap.test("cache test", function (t) { - var mm1 = new Minimatch("a?b") - var mm2 = new Minimatch("a?b") - t.equal(mm1, mm2, "should get the same object") - // the lru should drop it after 100 entries - for (var i = 0; i < 100; i ++) { - new Minimatch("a"+i) - } - mm2 = new Minimatch("a?b") - t.notEqual(mm1, mm2, "cache should have dropped") - t.end() -}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js deleted file mode 100644 index 25f1f60..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/node_modules/minimatch/test/defaults.js +++ /dev/null @@ -1,274 +0,0 @@ -// http://www.bashcookbook.com/bashinfo/source/bash-1.14.7/tests/glob-test -// -// TODO: Some of these tests do very bad things with backslashes, and will -// most likely fail badly on windows. They should probably be skipped. - -var tap = require("tap") - , globalBefore = Object.keys(global) - , mm = require("../") - , files = [ "a", "b", "c", "d", "abc" - , "abd", "abe", "bb", "bcd" - , "ca", "cb", "dd", "de" - , "bdir/", "bdir/cfile"] - , next = files.concat([ "a-b", "aXb" - , ".x", ".y" ]) - -tap.test("basic tests", function (t) { - var start = Date.now() - - // [ pattern, [matches], MM opts, files, TAP opts] - ; [ "http://www.bashcookbook.com/bashinfo" + - "/source/bash-1.14.7/tests/glob-test" - , ["a*", ["a", "abc", "abd", "abe"]] - , ["X*", ["X*"], {nonull: true}] - - // allow null glob expansion - , ["X*", []] - - // isaacs: Slightly different than bash/sh/ksh - // \\* is not un-escaped to literal "*" in a failed match, - // but it does make it get treated as a literal star - , ["\\*", ["\\*"], {nonull: true}] - , ["\\**", ["\\**"], {nonull: true}] - , ["\\*\\*", ["\\*\\*"], {nonull: true}] - - , ["b*/", ["bdir/"]] - , ["c*", ["c", "ca", "cb"]] - , ["**", files] - - , ["\\.\\./*/", ["\\.\\./*/"], {nonull: true}] - , ["s/\\..*//", ["s/\\..*//"], {nonull: true}] - - , "legendary larry crashes bashes" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\\1/"], {nonull: true}] - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/" - , ["/^root:/{s/^[^:]*:[^:]*:\([^:]*\).*$/\1/"], {nonull: true}] - - , "character classes" - , ["[a-c]b*", ["abc", "abd", "abe", "bb", "cb"]] - , ["[a-y]*[^c]", ["abd", "abe", "bb", "bcd", - "bdir/", "ca", "cb", "dd", "de"]] - , ["a*[^c]", ["abd", "abe"]] - , function () { files.push("a-b", "aXb") } - , ["a[X-]b", ["a-b", "aXb"]] - , function () { files.push(".x", ".y") } - , ["[^a-c]*", ["d", "dd", "de"]] - , function () { files.push("a*b/", "a*b/ooo") } - , ["a\\*b/*", ["a*b/ooo"]] - , ["a\\*?/*", ["a*b/ooo"]] - , ["*\\\\!*", [], {null: true}, ["echo !7"]] - , ["*\\!*", ["echo !7"], null, ["echo !7"]] - , ["*.\\*", ["r.*"], null, ["r.*"]] - , ["a[b]c", ["abc"]] - , ["a[\\b]c", ["abc"]] - , ["a?c", ["abc"]] - , ["a\\*c", [], {null: true}, ["abc"]] - , ["", [""], { null: true }, [""]] - - , "http://www.opensource.apple.com/source/bash/bash-23/" + - "bash/tests/glob-test" - , function () { files.push("man/", "man/man1/", "man/man1/bash.1") } - , ["*/man*/bash.*", ["man/man1/bash.1"]] - , ["man/man1/bash.1", ["man/man1/bash.1"]] - , ["a***c", ["abc"], null, ["abc"]] - , ["a*****?c", ["abc"], null, ["abc"]] - , ["?*****??", ["abc"], null, ["abc"]] - , ["*****??", ["abc"], null, ["abc"]] - , ["?*****?c", ["abc"], null, ["abc"]] - , ["?***?****c", ["abc"], null, ["abc"]] - , ["?***?****?", ["abc"], null, ["abc"]] - , ["?***?****", ["abc"], null, ["abc"]] - , ["*******c", ["abc"], null, ["abc"]] - , ["*******?", ["abc"], null, ["abc"]] - , ["a*cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??k***", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a**?**cd**?**??***k**", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["a****c**?**??*****", ["abcdecdhjk"], null, ["abcdecdhjk"]] - , ["[-abc]", ["-"], null, ["-"]] - , ["[abc-]", ["-"], null, ["-"]] - , ["\\", ["\\"], null, ["\\"]] - , ["[\\\\]", ["\\"], null, ["\\"]] - , ["[[]", ["["], null, ["["]] - , ["[", ["["], null, ["["]] - , ["[*", ["[abc"], null, ["[abc"]] - , "a right bracket shall lose its special meaning and\n" + - "represent itself in a bracket expression if it occurs\n" + - "first in the list. -- POSIX.2 2.8.3.2" - , ["[]]", ["]"], null, ["]"]] - , ["[]-]", ["]"], null, ["]"]] - , ["[a-\z]", ["p"], null, ["p"]] - , ["??**********?****?", [], { null: true }, ["abc"]] - , ["??**********?****c", [], { null: true }, ["abc"]] - , ["?************c****?****", [], { null: true }, ["abc"]] - , ["*c*?**", [], { null: true }, ["abc"]] - , ["a*****c*?**", [], { null: true }, ["abc"]] - , ["a********???*******", [], { null: true }, ["abc"]] - , ["[]", [], { null: true }, ["a"]] - , ["[abc", [], { null: true }, ["["]] - - , "nocase tests" - , ["XYZ", ["xYz"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["ab*", ["ABC"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - , ["[ia]?[ck]", ["ABC", "IjK"], { nocase: true, null: true } - , ["xYz", "ABC", "IjK"]] - - // [ pattern, [matches], MM opts, files, TAP opts] - , "onestar/twostar" - , ["{/*,*}", [], {null: true}, ["/asdf/asdf/asdf"]] - , ["{/?,*}", ["/a", "bb"], {null: true} - , ["/a", "/b/b", "/a/b/c", "bb"]] - - , "dots should not match unless requested" - , ["**", ["a/b"], {}, ["a/b", "a/.d", ".a/.d"]] - - // .. and . can only match patterns starting with ., - // even when options.dot is set. - , function () { - files = ["a/./b", "a/../b", "a/c/b", "a/.d/b"] - } - , ["a/*/b", ["a/c/b", "a/.d/b"], {dot: true}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: true}] - , ["a/*/b", ["a/c/b"], {dot:false}] - , ["a/.*/b", ["a/./b", "a/../b", "a/.d/b"], {dot: false}] - - - // this also tests that changing the options needs - // to change the cache key, even if the pattern is - // the same! - , ["**", ["a/b","a/.d",".a/.d"], { dot: true } - , [ ".a/.d", "a/.d", "a/b"]] - - , "paren sets cannot contain slashes" - , ["*(a/b)", ["*(a/b)"], {nonull: true}, ["a/b"]] - - // brace sets trump all else. - // - // invalid glob pattern. fails on bash4 and bsdglob. - // however, in this implementation, it's easier just - // to do the intuitive thing, and let brace-expansion - // actually come before parsing any extglob patterns, - // like the documentation seems to say. - // - // XXX: if anyone complains about this, either fix it - // or tell them to grow up and stop complaining. - // - // bash/bsdglob says this: - // , ["*(a|{b),c)}", ["*(a|{b),c)}"], {}, ["a", "ab", "ac", "ad"]] - // but we do this instead: - , ["*(a|{b),c)}", ["a", "ab", "ac"], {}, ["a", "ab", "ac", "ad"]] - - // test partial parsing in the presence of comment/negation chars - , ["[!a*", ["[!ab"], {}, ["[!ab", "[ab"]] - , ["[#a*", ["[#ab"], {}, ["[#ab", "[ab"]] - - // like: {a,b|c\\,d\\\|e} except it's unclosed, so it has to be escaped. - , ["+(a|*\\|c\\\\|d\\\\\\|e\\\\\\\\|f\\\\\\\\\\|g" - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g"] - , {} - , ["+(a|b\\|c\\\\|d\\\\|e\\\\\\\\|f\\\\\\\\|g", "a", "b\\c"]] - - - // crazy nested {,,} and *(||) tests. - , function () { - files = [ "a", "b", "c", "d" - , "ab", "ac", "ad" - , "bc", "cb" - , "bc,d", "c,db", "c,d" - , "d)", "(b|c", "*(b|c" - , "b|c", "b|cc", "cb|c" - , "x(a|b|c)", "x(a|c)" - , "(a|b|c)", "(a|c)"] - } - , ["*(a|{b,c})", ["a", "b", "c", "ab", "ac"]] - , ["{a,*(b|c,d)}", ["a","(b|c", "*(b|c", "d)"]] - // a - // *(b|c) - // *(b|d) - , ["{a,*(b|{c,d})}", ["a","b", "bc", "cb", "c", "d"]] - , ["*(a|{b|c,c})", ["a", "b", "c", "ab", "ac", "bc", "cb"]] - - - // test various flag settings. - , [ "*(a|{b|c,c})", ["x(a|b|c)", "x(a|c)", "(a|b|c)", "(a|c)"] - , { noext: true } ] - , ["a?b", ["x/y/acb", "acb/"], {matchBase: true} - , ["x/y/acb", "acb/", "acb/d/e", "x/y/acb/d"] ] - , ["#*", ["#a", "#b"], {nocomment: true}, ["#a", "#b", "c#d"]] - - - // begin channelling Boole and deMorgan... - , "negation tests" - , function () { - files = ["d", "e", "!ab", "!abc", "a!b", "\\!a"] - } - - // anything that is NOT a* matches. - , ["!a*", ["\\!a", "d", "e", "!ab", "!abc"]] - - // anything that IS !a* matches. - , ["!a*", ["!ab", "!abc"], {nonegate: true}] - - // anything that IS a* matches - , ["!!a*", ["a!b"]] - - // anything that is NOT !a* matches - , ["!\\!a*", ["a!b", "d", "e", "\\!a"]] - - // negation nestled within a pattern - , function () { - files = [ "foo.js" - , "foo.bar" - // can't match this one without negative lookbehind. - , "foo.js.js" - , "blar.js" - , "foo." - , "boo.js.boo" ] - } - , ["*.!(js)", ["foo.bar", "foo.", "boo.js.boo"] ] - - ].forEach(function (c) { - if (typeof c === "function") return c() - if (typeof c === "string") return t.comment(c) - - var pattern = c[0] - , expect = c[1].sort(alpha) - , options = c[2] || {} - , f = c[3] || files - , tapOpts = c[4] || {} - - // options.debug = true - var Class = mm.defaults(options).Minimatch - var m = new Class(pattern, {}) - var r = m.makeRe() - tapOpts.re = String(r) || JSON.stringify(r) - tapOpts.files = JSON.stringify(f) - tapOpts.pattern = pattern - tapOpts.set = m.set - tapOpts.negated = m.negate - - var actual = mm.match(f, pattern, options) - actual.sort(alpha) - - t.equivalent( actual, expect - , JSON.stringify(pattern) + " " + JSON.stringify(expect) - , tapOpts ) - }) - - t.comment("time=" + (Date.now() - start) + "ms") - t.end() -}) - -tap.test("global leak test", function (t) { - var globalAfter = Object.keys(global) - t.equivalent(globalAfter, globalBefore, "no new globals, please") - t.end() -}) - -function alpha (a, b) { - return a > b ? 1 : -1 -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json deleted file mode 100644 index 81fbcb9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "Thorsten Lorenz", - "email": "thlorenz@gmx.de", - "url": "thlorenz.com" - }, - "name": "readdirp", - "description": "Recursive version of fs.readdir with streaming api.", - "version": "0.2.4", - "homepage": "https://github.com/thlorenz/readdirp", - "repository": { - "type": "git", - "url": "git://github.com/thlorenz/readdirp.git" - }, - "engines": { - "node": ">=0.4" - }, - "keywords": [ - "recursive", - "fs", - "stream", - "streams", - "readdir", - "filesystem", - "find", - "filter" - ], - "main": "readdirp.js", - "scripts": { - "test": "tap test/*.js" - }, - "dependencies": { - "minimatch": ">=0.2.4" - }, - "devDependencies": { - "tap": "~0.3.1", - "through": "~1.1.0", - "minimatch": "~0.2.7" - }, - "optionalDependencies": {}, - "license": "MIT", - "readme": "# readdirp [![Build Status](https://secure.travis-ci.org/thlorenz/readdirp.png)](http://travis-ci.org/thlorenz/readdirp)\n\nRecursive version of [fs.readdir](http://nodejs.org/docs/latest/api/fs.html#fs_fs_readdir_path_callback). Exposes a **stream api**.\n\n```javascript\nvar readdirp = require('readdirp'); \n , path = require('path')\n , es = require('event-stream');\n\n// print out all JavaScript files along with their size\n\nvar stream = readdirp({ root: path.join(__dirname), fileFilter: '*.js' });\nstream\n .on('warn', function (err) { \n console.error('non-fatal error', err); \n // optionally call stream.destroy() here in order to abort and cause 'close' to be emitted\n })\n .on('error', function (err) { console.error('fatal error', err); })\n .pipe(es.mapSync(function (entry) { \n return { path: entry.path, size: entry.stat.size };\n }))\n .pipe(es.stringify())\n .pipe(process.stdout);\n```\n\nMeant to be one of the recursive versions of [fs](http://nodejs.org/docs/latest/api/fs.html) functions, e.g., like [mkdirp](https://github.com/substack/node-mkdirp).\n\n**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*\n\n- [Installation](#installation)\n- [API](#api)\n\t- [entry stream](#entry-stream)\n\t- [options](#options)\n\t- [entry info](#entry-info)\n\t- [Filters](#filters)\n\t- [Callback API](#callback-api)\n\t\t- [allProcessed ](#allprocessed)\n\t\t- [fileProcessed](#fileprocessed)\n- [More Examples](#more-examples)\n\t- [stream api](#stream-api)\n\t- [stream api pipe](#stream-api-pipe)\n\t- [grep](#grep)\n\t- [using callback api](#using-callback-api)\n\t- [tests](#tests)\n\n\n# Installation\n\n npm install readdirp\n\n# API\n\n***var entryStream = readdirp (options)***\n\nReads given root recursively and returns a `stream` of [entry info](#entry-info)s.\n\n## entry stream\n\nBehaves as follows:\n \n- `emit('data')` passes an [entry info](#entry-info) whenever one is found\n- `emit('warn')` passes a non-fatal `Error` that prevents a file/directory from being processed (i.e., if it is\n inaccessible to the user)\n- `emit('error')` passes a fatal `Error` which also ends the stream (i.e., when illegal options where passed)\n- `emit('end')` called when all entries were found and no more will be emitted (i.e., we are done)\n- `emit('close')` called when the stream is destroyed via `stream.destroy()` (which could be useful if you want to\n manually abort even on a non fatal error) - at that point the stream is no longer `readable` and no more entries,\n warning or errors are emitted\n- the stream is `paused` initially in order to allow `pipe` and `on` handlers be connected before data or errors are\n emitted\n- the stream is `resumed` automatically during the next event loop \n- to learn more about streams, consult the [stream-handbook](https://github.com/substack/stream-handbook)\n\n## options\n \n- **root**: path in which to start reading and recursing into subdirectories\n\n- **fileFilter**: filter to include/exclude files found (see [Filters](#filters) for more)\n\n- **directoryFilter**: filter to include/exclude directories found and to recurse into (see [Filters](#filters) for more)\n\n- **depth**: depth at which to stop recursing even if more subdirectories are found\n\n## entry info\n\nHas the following properties:\n\n- **parentDir** : directory in which entry was found (relative to given root)\n- **fullParentDir** : full path to parent directory\n- **name** : name of the file/directory\n- **path** : path to the file/directory (relative to given root)\n- **fullPath** : full path to the file/directory found\n- **stat** : built in [stat object](http://nodejs.org/docs/v0.4.9/api/fs.html#fs.Stats)\n- **Example**: (assuming root was `/User/dev/readdirp`)\n \n parentDir : 'test/bed/root_dir1',\n fullParentDir : '/User/dev/readdirp/test/bed/root_dir1',\n name : 'root_dir1_subdir1',\n path : 'test/bed/root_dir1/root_dir1_subdir1',\n fullPath : '/User/dev/readdirp/test/bed/root_dir1/root_dir1_subdir1',\n stat : [ ... ]\n \n## Filters\n \nThere are three different ways to specify filters for files and directories respectively. \n\n- **function**: a function that takes an entry info as a parameter and returns true to include or false to exclude the entry\n\n- **glob string**: a string (e.g., `*.js`) which is matched using [minimatch](https://github.com/isaacs/minimatch), so go there for more\n information. \n\n Globstars (`**`) are not supported since specifiying a recursive pattern for an already recursive function doesn't make sense.\n\n Negated globs (as explained in the minimatch documentation) are allowed, e.g., `!*.txt` matches everything but text files.\n\n- **array of glob strings**: either need to be all inclusive or all exclusive (negated) patterns otherwise an error is thrown.\n \n `[ '*.json', '*.js' ]` includes all JavaScript and Json files.\n \n \n `[ '!.git', '!node_modules' ]` includes all directories except the '.git' and 'node_modules'.\n\nDirectories that do not pass a filter will not be recursed into.\n\n## Callback API\n\nAlthough the stream api is recommended, readdirp also exposes a callback based api.\n\n***readdirp (options, callback1 [, callback2])***\n\nIf callback2 is given, callback1 functions as the **fileProcessed** callback, and callback2 as the **allProcessed** callback.\n\nIf only callback1 is given, it functions as the **allProcessed** callback.\n\n### allProcessed \n\n- function with err and res parameters, e.g., `function (err, res) { ... }`\n- **err**: array of errors that occurred during the operation, **res may still be present, even if errors occurred**\n- **res**: collection of file/directory [entry infos](#entry-info)\n\n### fileProcessed\n\n- function with [entry info](#entry-info) parameter e.g., `function (entryInfo) { ... }`\n\n\n# More Examples\n\n`on('error', ..)`, `on('warn', ..)` and `on('end', ..)` handling omitted for brevity\n\n```javascript\nvar readdirp = require('readdirp');\n\n// Glob file filter\nreaddirp({ root: './test/bed', fileFilter: '*.js' })\n .on('data', function (entry) {\n // do something with each JavaScript file entry\n });\n\n// Combined glob file filters\nreaddirp({ root: './test/bed', fileFilter: [ '*.js', '*.json' ] })\n .on('data', function (entry) {\n // do something with each JavaScript and Json file entry \n });\n\n// Combined negated directory filters\nreaddirp({ root: './test/bed', directoryFilter: [ '!.git', '!*modules' ] })\n .on('data', function (entry) {\n // do something with each file entry found outside '.git' or any modules directory \n });\n\n// Function directory filter\nreaddirp({ root: './test/bed', directoryFilter: function (di) { return di.name.length === 9; } })\n .on('data', function (entry) {\n // do something with each file entry found inside directories whose name has length 9\n });\n\n// Limiting depth\nreaddirp({ root: './test/bed', depth: 1 })\n .on('data', function (entry) {\n // do something with each file entry found up to 1 subdirectory deep\n });\n\n// callback api\nreaddirp(\n { root: '.' }\n , function(fileInfo) { \n // do something with file entry here\n } \n , function (err, res) {\n // all done, move on or do final step for all file entries here\n }\n);\n```\n\nTry more examples by following [instructions](https://github.com/thlorenz/readdirp/blob/master/examples/Readme.md)\non how to get going.\n\n## stream api\n\n[stream-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api.js)\n\nDemonstrates error and data handling by listening to events emitted from the readdirp stream.\n\n## stream api pipe\n\n[stream-api-pipe.js](https://github.com/thlorenz/readdirp/blob/master/examples/stream-api-pipe.js)\n\nDemonstrates error handling by listening to events emitted from the readdirp stream and how to pipe the data stream into\nanother destination stream.\n\n## grep\n\n[grep.js](https://github.com/thlorenz/readdirp/blob/master/examples/grep.js)\n\nVery naive implementation of grep, for demonstration purposes only.\n\n## using callback api\n\n[callback-api.js](https://github.com/thlorenz/readdirp/blob/master/examples/callback-api.js)\n\nShows how to pass callbacks in order to handle errors and/or data.\n\n## tests\n\nThe [readdirp tests](https://github.com/thlorenz/readdirp/blob/master/test/readdirp.js) also will give you a good idea on\nhow things work.\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/thlorenz/readdirp/issues" - }, - "_id": "readdirp@0.2.4", - "_from": "readdirp@~0.2.3" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js deleted file mode 100644 index 03bfcd7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/readdirp.js +++ /dev/null @@ -1,267 +0,0 @@ -'use strict'; - -var fs = require('fs') - , path = require('path') - , minimatch = require('minimatch') - , toString = Object.prototype.toString - ; - -// Standard helpers -function isFunction (obj) { - return toString.call(obj) == '[object Function]'; -} - -function isString (obj) { - return toString.call(obj) == '[object String]'; -} - -function isRegExp (obj) { - return toString.call(obj) == '[object RegExp]'; -} - -function isUndefined (obj) { - return obj === void 0; -} - -/** - * Main function which ends up calling readdirRec and reads all files and directories in given root recursively. - * @param { Object } opts Options to specify root (start directory), filters and recursion depth - * @param { function } callback1 When callback2 is given calls back for each processed file - function (fileInfo) { ... }, - * when callback2 is not given, it behaves like explained in callback2 - * @param { function } callback2 Calls back once all files have been processed with an array of errors and file infos - * function (err, fileInfos) { ... } - */ -function readdir(opts, callback1, callback2) { - var stream - , handleError - , handleFatalError - , pending = 0 - , errors = [] - , readdirResult = { - directories: [] - , files: [] - } - , fileProcessed - , allProcessed - , realRoot - , aborted = false - ; - - // If no callbacks were given we will use a streaming interface - if (isUndefined(callback1)) { - var api = require('./stream-api')(); - stream = api.stream; - callback1 = api.processEntry; - callback2 = api.done; - handleError = api.handleError; - handleFatalError = api.handleFatalError; - - stream.on('close', function () { aborted = true; }); - } else { - handleError = function (err) { errors.push(err); }; - handleFatalError = function (err) { - handleError(err); - allProcessed(errors, null); - }; - } - - if (isUndefined(opts)){ - handleFatalError(new Error ( - 'Need to pass at least one argument: opts! \n' + - 'https://github.com/thlorenz/readdirp#options' - ) - ); - return stream; - } - - opts.root = opts.root || '.'; - opts.fileFilter = opts.fileFilter || function() { return true; }; - opts.directoryFilter = opts.directoryFilter || function() { return true; }; - opts.depth = typeof opts.depth === 'undefined' ? 999999999 : opts.depth; - - if (isUndefined(callback2)) { - fileProcessed = function() { }; - allProcessed = callback1; - } else { - fileProcessed = callback1; - allProcessed = callback2; - } - - function normalizeFilter (filter) { - - if (isUndefined(filter)) return undefined; - - function isNegated (filters) { - - function negated(f) { - return f.indexOf('!') === 0; - } - - var some = filters.some(negated); - if (!some) { - return false; - } else { - if (filters.every(negated)) { - return true; - } else { - // if we detect illegal filters, bail out immediately - throw new Error( - 'Cannot mix negated with non negated glob filters: ' + filters + '\n' + - 'https://github.com/thlorenz/readdirp#filters' - ); - } - } - } - - // Turn all filters into a function - if (isFunction(filter)) { - - return filter; - - } else if (isString(filter)) { - - return function (entryInfo) { - return minimatch(entryInfo.name, filter.trim()); - }; - - } else if (filter && Array.isArray(filter)) { - - if (filter) filter = filter.map(function (f) { - return f.trim(); - }); - - return isNegated(filter) ? - // use AND to concat multiple negated filters - function (entryInfo) { - return filter.every(function (f) { - return minimatch(entryInfo.name, f); - }); - } - : - // use OR to concat multiple inclusive filters - function (entryInfo) { - return filter.some(function (f) { - return minimatch(entryInfo.name, f); - }); - }; - } - } - - function processDir(currentDir, entries, callProcessed) { - if (aborted) return; - var total = entries.length - , processed = 0 - , entryInfos = [] - ; - - fs.realpath(currentDir, function(err, realCurrentDir) { - if (aborted) return; - - var relDir = path.relative(realRoot, realCurrentDir); - - if (entries.length === 0) { - callProcessed([]); - } else { - entries.forEach(function (entry) { - - var fullPath = path.join(realCurrentDir, entry), - relPath = path.join(relDir, entry); - - fs.stat(fullPath, function (err, stat) { - if (err) { - handleError(err); - } else { - entryInfos.push({ - name : entry - , path : relPath // relative to root - , fullPath : fullPath - - , parentDir : relDir // relative to root - , fullParentDir : realCurrentDir - - , stat : stat - }); - } - processed++; - if (processed === total) callProcessed(entryInfos); - }); - }); - } - }); - } - - function readdirRec(currentDir, depth, callCurrentDirProcessed) { - if (aborted) return; - - fs.readdir(currentDir, function (err, entries) { - if (err) { - handleError(err); - callCurrentDirProcessed(); - return; - } - - processDir(currentDir, entries, function(entryInfos) { - - var subdirs = entryInfos - .filter(function (ei) { return ei.stat.isDirectory() && opts.directoryFilter(ei); }); - - subdirs.forEach(function (di) { - readdirResult.directories.push(di); - }); - - entryInfos - .filter(function(ei) { return ei.stat.isFile() && opts.fileFilter(ei); }) - .forEach(function (fi) { - fileProcessed(fi); - readdirResult.files.push(fi); - }); - - var pendingSubdirs = subdirs.length; - - // Be done if no more subfolders exist or we reached the maximum desired depth - if(pendingSubdirs === 0 || depth === opts.depth) { - callCurrentDirProcessed(); - } else { - // recurse into subdirs, keeping track of which ones are done - // and call back once all are processed - subdirs.forEach(function (subdir) { - readdirRec(subdir.fullPath, depth + 1, function () { - pendingSubdirs = pendingSubdirs - 1; - if(pendingSubdirs === 0) { - callCurrentDirProcessed(); - } - }); - }); - } - }); - }); - } - - // Validate and normalize filters - try { - opts.fileFilter = normalizeFilter(opts.fileFilter); - opts.directoryFilter = normalizeFilter(opts.directoryFilter); - } catch (err) { - // if we detect illegal filters, bail out immediately - handleFatalError(err); - return stream; - } - - // If filters were valid get on with the show - fs.realpath(opts.root, function(err, res) { - - realRoot = res; - readdirRec(opts.root, 0, function () { - // All errors are collected into the errors array - if (errors.length > 0) { - allProcessed(errors, readdirResult); - } else { - allProcessed(null, readdirResult); - } - }); - }); - - return stream; -} - -module.exports = readdir; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js deleted file mode 100644 index 1cfc616..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/stream-api.js +++ /dev/null @@ -1,86 +0,0 @@ -var Stream = require('stream'); - -function createStreamAPI () { - var stream - , processEntry - , done - , handleError - , handleFatalError - , paused = true - , controlled = false - , buffer = [] - , closed = false - ; - - stream = new Stream(); - stream.writable = false; - stream.readable = true; - - stream.pause = function () { - controlled = true; - paused = true; - }; - - stream.resume = function () { - controlled = true; - paused = false; - - // emit all buffered entries, errors and ends - while (!paused && buffer.length) { - var msg = buffer.shift(); - this.emit(msg.type, msg.data); - } - }; - - stream.destroy = function () { - closed = true; - stream.readable = false; - stream.emit('close'); - }; - - // called for each entry - processEntry = function (entry) { - if (closed) return; - return paused ? buffer.push({ type: 'data', data: entry }) : stream.emit('data', entry); - }; - - // called with all found entries when directory walk finished - done = function (err, entries) { - if (closed) return; - - // since we already emitted each entry and all non fatal errors - // all we need to do here is to signal that we are done - stream.emit('end'); - }; - - handleError = function (err) { - if (closed) return; - return paused ? buffer.push({ type: 'warn', data: err }) : stream.emit('warn', err); - }; - - handleFatalError = function (err) { - if (closed) return; - return paused ? buffer.push({ type: 'error', data: err }) : stream.emit('error', err); - }; - - // Allow stream to be returned and handlers to be attached and/or stream to be piped before emitting messages - // Otherwise we may loose data/errors that are emitted immediately - process.nextTick(function () { - if (closed) return; - - // In case was controlled (paused/resumed) manually, we don't interfer - // see https://github.com/thlorenz/readdirp/commit/ab7ff8561d73fca82c2ce7eb4ce9f7f5caf48b55#commitcomment-1964530 - if (controlled) return; - stream.resume(); - }); - - return { - stream : stream - , processEntry : processEntry - , done : done - , handleError : handleError - , handleFatalError : handleFatalError - }; -} - -module.exports = createStreamAPI; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file1.ext1 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file2.ext2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file2.ext2 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file3.ext3 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_file3.ext3 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_subdir1/root1_dir1_subdir1_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir1/root_dir1_subdir1/root1_dir1_subdir1_file1.ext1 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file1.ext1 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file2.ext2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_dir2/root_dir2_file2.ext2 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file1.ext1 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file1.ext1 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file2.ext2 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file2.ext2 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file3.ext3 b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/bed/root_file3.ext3 deleted file mode 100644 index e69de29..0000000 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js deleted file mode 100644 index 261c5f6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp-stream.js +++ /dev/null @@ -1,215 +0,0 @@ -/*jshint asi:true */ - -var test = require('tap').test - , path = require('path') - , fs = require('fs') - , util = require('util') - , Stream = require('stream') - , through = require('through') - , streamapi = require('../stream-api') - , readdirp = require('..') - , root = path.join(__dirname, 'bed') - , totalDirs = 6 - , totalFiles = 12 - , ext1Files = 4 - , ext2Files = 3 - , ext3Files = 2 - ; - -// see test/readdirp.js for test bed layout - -function opts (extend) { - var o = { root: root }; - - if (extend) { - for (var prop in extend) { - o[prop] = extend[prop]; - } - } - return o; -} - -function capture () { - var result = { entries: [], errors: [], ended: false } - , dst = new Stream(); - - dst.writable = true; - dst.readable = true; - - dst.write = function (entry) { - result.entries.push(entry); - } - - dst.end = function () { - result.ended = true; - dst.emit('data', result); - dst.emit('end'); - } - - return dst; -} - -test('\nintegrated', function (t) { - t.test('\n# reading root without filter', function (t) { - t.plan(2); - readdirp(opts()) - .on('error', function (err) { - t.fail('should not throw error', err); - }) - .pipe(capture()) - .pipe(through( - function (result) { - t.equals(result.entries.length, totalFiles, 'emits all files'); - t.ok(result.ended, 'ends stream'); - t.end(); - } - )); - }) - - t.test('\n# normal: ["*.ext1", "*.ext3"]', function (t) { - t.plan(2); - - readdirp(opts( { fileFilter: [ '*.ext1', '*.ext3' ] } )) - .on('error', function (err) { - t.fail('should not throw error', err); - }) - .pipe(capture()) - .pipe(through( - function (result) { - t.equals(result.entries.length, ext1Files + ext3Files, 'all ext1 and ext3 files'); - t.ok(result.ended, 'ends stream'); - t.end(); - } - )) - }) - - t.test('\n# negated: ["!*.ext1", "!*.ext3"]', function (t) { - t.plan(2); - - readdirp(opts( { fileFilter: [ '!*.ext1', '!*.ext3' ] } )) - .on('error', function (err) { - t.fail('should not throw error', err); - }) - .pipe(capture()) - .pipe(through( - function (result) { - t.equals(result.entries.length, totalFiles - ext1Files - ext3Files, 'all but ext1 and ext3 files'); - t.ok(result.ended, 'ends stream'); - t.end(); - } - )) - }) - - t.test('\n# no options given', function (t) { - t.plan(1); - readdirp() - .on('error', function (err) { - t.similar(err.toString() , /Need to pass at least one argument/ , 'emits meaningful error'); - t.end(); - }) - }) - - t.test('\n# mixed: ["*.ext1", "!*.ext3"]', function (t) { - t.plan(1); - - readdirp(opts( { fileFilter: [ '*.ext1', '!*.ext3' ] } )) - .on('error', function (err) { - t.similar(err.toString() , /Cannot mix negated with non negated glob filters/ , 'emits meaningful error'); - t.end(); - }) - }) -}) - - -test('\napi separately', function (t) { - - t.test('\n# handleError', function (t) { - t.plan(1); - - var api = streamapi() - , warning = new Error('some file caused problems'); - - api.stream - .on('warn', function (err) { - t.equals(err, warning, 'warns with the handled error'); - }) - api.handleError(warning); - }) - - t.test('\n# when stream is paused and then resumed', function (t) { - t.plan(6); - var api = streamapi() - , resumed = false - , fatalError = new Error('fatal!') - , nonfatalError = new Error('nonfatal!') - , processedData = 'some data' - ; - - api.stream - .on('warn', function (err) { - t.equals(err, nonfatalError, 'emits the buffered warning'); - t.ok(resumed, 'emits warning only after it was resumed'); - }) - .on('error', function (err) { - t.equals(err, fatalError, 'emits the buffered fatal error'); - t.ok(resumed, 'emits errors only after it was resumed'); - }) - .on('data', function (data) { - t.equals(data, processedData, 'emits the buffered data'); - t.ok(resumed, 'emits data only after it was resumed'); - }) - .pause() - - api.processEntry(processedData); - api.handleError(nonfatalError); - api.handleFatalError(fatalError); - - process.nextTick(function () { - resumed = true; - api.stream.resume(); - }) - }) - - t.test('\n# when a stream is destroyed, it emits "closed", but no longer emits "data", "warn" and "error"', function (t) { - t.plan(6) - var api = streamapi() - , destroyed = false - , fatalError = new Error('fatal!') - , nonfatalError = new Error('nonfatal!') - , processedData = 'some data' - - var stream = api.stream - .on('warn', function (err) { - t.notOk(destroyed, 'emits warning until destroyed'); - }) - .on('error', function (err) { - t.notOk(destroyed, 'emits errors until destroyed'); - }) - .on('data', function (data) { - t.notOk(destroyed, 'emits data until destroyed'); - }) - .on('close', function () { - t.ok(destroyed, 'emits close when stream is destroyed'); - }) - - - api.processEntry(processedData); - api.handleError(nonfatalError); - api.handleFatalError(fatalError); - - process.nextTick(function () { - destroyed = true - stream.destroy() - - t.notOk(stream.readable, 'stream is no longer readable after it is destroyed') - - api.processEntry(processedData); - api.handleError(nonfatalError); - api.handleFatalError(fatalError); - - process.nextTick(function () { - t.pass('emits no more data, warn or error events after it was destroyed') - }) - }) - }) -}) diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js deleted file mode 100644 index f3edb52..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/node_modules/readdirp/test/readdirp.js +++ /dev/null @@ -1,252 +0,0 @@ -/*jshint asi:true */ - -var test = require('tap').test - , path = require('path') - , fs = require('fs') - , util = require('util') - , readdirp = require('../readdirp.js') - , root = path.join(__dirname, '../test/bed') - , totalDirs = 6 - , totalFiles = 12 - , ext1Files = 4 - , ext2Files = 3 - , ext3Files = 2 - , rootDir2Files = 2 - , nameHasLength9Dirs = 2 - , depth1Files = 8 - , depth0Files = 3 - ; - -/* -Structure of test bed: - . - ├── root_dir1 - │   ├── root_dir1_file1.ext1 - │   ├── root_dir1_file2.ext2 - │   ├── root_dir1_file3.ext3 - │   ├── root_dir1_subdir1 - │   │   └── root1_dir1_subdir1_file1.ext1 - │   └── root_dir1_subdir2 - │   └── .gitignore - ├── root_dir2 - │   ├── root_dir2_file1.ext1 - │   ├── root_dir2_file2.ext2 - │   ├── root_dir2_subdir1 - │   │   └── .gitignore - │   └── root_dir2_subdir2 - │   └── .gitignore - ├── root_file1.ext1 - ├── root_file2.ext2 - └── root_file3.ext3 - - 6 directories, 13 files -*/ - -// console.log('\033[2J'); // clear console - -function opts (extend) { - var o = { root: root }; - - if (extend) { - for (var prop in extend) { - o[prop] = extend[prop]; - } - } - return o; -} - -test('\nreading root without filter', function (t) { - t.plan(2); - readdirp(opts(), function (err, res) { - t.equals(res.directories.length, totalDirs, 'all directories'); - t.equals(res.files.length, totalFiles, 'all files'); - t.end(); - }) -}) - -test('\nreading root using glob filter', function (t) { - // normal - t.test('\n# "*.ext1"', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: '*.ext1' } ), function (err, res) { - t.equals(res.files.length, ext1Files, 'all ext1 files'); - t.end(); - }) - }) - t.test('\n# ["*.ext1", "*.ext3"]', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: [ '*.ext1', '*.ext3' ] } ), function (err, res) { - t.equals(res.files.length, ext1Files + ext3Files, 'all ext1 and ext3 files'); - t.end(); - }) - }) - t.test('\n# "root_dir1"', function (t) { - t.plan(1); - readdirp(opts( { directoryFilter: 'root_dir1' }), function (err, res) { - t.equals(res.directories.length, 1, 'one directory'); - t.end(); - }) - }) - t.test('\n# ["root_dir1", "*dir1_subdir1"]', function (t) { - t.plan(1); - readdirp(opts( { directoryFilter: [ 'root_dir1', '*dir1_subdir1' ]}), function (err, res) { - t.equals(res.directories.length, 2, 'two directories'); - t.end(); - }) - }) - - t.test('\n# negated: "!*.ext1"', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: '!*.ext1' } ), function (err, res) { - t.equals(res.files.length, totalFiles - ext1Files, 'all but ext1 files'); - t.end(); - }) - }) - t.test('\n# negated: ["!*.ext1", "!*.ext3"]', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: [ '!*.ext1', '!*.ext3' ] } ), function (err, res) { - t.equals(res.files.length, totalFiles - ext1Files - ext3Files, 'all but ext1 and ext3 files'); - t.end(); - }) - }) - - t.test('\n# mixed: ["*.ext1", "!*.ext3"]', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: [ '*.ext1', '!*.ext3' ] } ), function (err, res) { - t.similar(err[0].toString(), /Cannot mix negated with non negated glob filters/, 'returns meaningfull error'); - t.end(); - }) - }) - - t.test('\n# leading and trailing spaces: [" *.ext1", "*.ext3 "]', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: [ ' *.ext1', '*.ext3 ' ] } ), function (err, res) { - t.equals(res.files.length, ext1Files + ext3Files, 'all ext1 and ext3 files'); - t.end(); - }) - }) - t.test('\n# leading and trailing spaces: [" !*.ext1", " !*.ext3 "]', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: [ ' !*.ext1', ' !*.ext3' ] } ), function (err, res) { - t.equals(res.files.length, totalFiles - ext1Files - ext3Files, 'all but ext1 and ext3 files'); - t.end(); - }) - }) - - t.test('\n# ** glob pattern', function (t) { - t.plan(1); - readdirp(opts( { fileFilter: '**/*.ext1' } ), function (err, res) { - t.equals(res.files.length, ext1Files, 'ignores ** in **/*.ext1 -> only *.ext1 files'); - t.end(); - }) - }) -}) - -test('\n\nreading root using function filter', function (t) { - t.test('\n# file filter -> "contains root_dir2"', function (t) { - t.plan(1); - readdirp( - opts( { fileFilter: function (fi) { return fi.name.indexOf('root_dir2') >= 0; } }) - , function (err, res) { - t.equals(res.files.length, rootDir2Files, 'all rootDir2Files'); - t.end(); - } - ) - }) - - t.test('\n# directory filter -> "name has length 9"', function (t) { - t.plan(1); - readdirp( - opts( { directoryFilter: function (di) { return di.name.length === 9; } }) - , function (err, res) { - t.equals(res.directories.length, nameHasLength9Dirs, 'all all dirs with name length 9'); - t.end(); - } - ) - }) -}) - -test('\nreading root specifying maximum depth', function (t) { - t.test('\n# depth 1', function (t) { - t.plan(1); - readdirp(opts( { depth: 1 } ), function (err, res) { - t.equals(res.files.length, depth1Files, 'does not return files at depth 2'); - }) - }) -}) - -test('\nreading root with no recursion', function (t) { - t.test('\n# depth 0', function (t) { - t.plan(1); - readdirp(opts( { depth: 0 } ), function (err, res) { - t.equals(res.files.length, depth0Files, 'does not return files at depth 0'); - }) - }) -}) - -test('\nprogress callbacks', function (t) { - t.plan(2); - - var pluckName = function(fi) { return fi.name; } - , processedFiles = []; - - readdirp( - opts() - , function(fi) { - processedFiles.push(fi); - } - , function (err, res) { - t.equals(processedFiles.length, res.files.length, 'calls back for each file processed'); - t.deepEquals(processedFiles.map(pluckName).sort(),res.files.map(pluckName).sort(), 'same file names'); - t.end(); - } - ) -}) - -test('resolving of name, full and relative paths', function (t) { - var expected = { - name : 'root_dir1_file1.ext1' - , parentDirName : 'root_dir1' - , path : 'root_dir1/root_dir1_file1.ext1' - , fullPath : 'test/bed/root_dir1/root_dir1_file1.ext1' - } - , opts = [ - { root: './bed' , prefix: '' } - , { root: './bed/' , prefix: '' } - , { root: 'bed' , prefix: '' } - , { root: 'bed/' , prefix: '' } - , { root: '../test/bed/' , prefix: '' } - , { root: '.' , prefix: 'bed' } - ] - t.plan(opts.length); - - opts.forEach(function (op) { - op.fileFilter = 'root_dir1_file1.ext1'; - - t.test('\n' + util.inspect(op), function (t) { - t.plan(4); - - readdirp (op, function(err, res) { - t.equals(res.files[0].name, expected.name, 'correct name'); - t.equals(res.files[0].path, path.join(op.prefix, expected.path), 'correct path'); - }) - - fs.realpath(op.root, function(err, fullRoot) { - readdirp (op, function(err, res) { - t.equals( - res.files[0].fullParentDir - , path.join(fullRoot, op.prefix, expected.parentDirName) - , 'correct parentDir' - ); - t.equals( - res.files[0].fullPath - , path.join(fullRoot, op.prefix, expected.parentDirName, expected.name) - , 'correct fullPath' - ); - }) - }) - }) - }) -}) - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json deleted file mode 100644 index 3e7d5db..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "monocle", - "version": "0.1.48", - "description": "a tool for watching directories for file changes", - "main": "monocle.js", - "directories": { - "test": "test" - }, - "dependencies": { - "readdirp": "~0.2.3" - }, - "devDependencies": { - "mocha": "1.8.1" - }, - "scripts": { - "test": "mocha test -R spec -t 2000" - }, - "repository": { - "type": "git", - "url": "https://github.com/samccone/monocle.git" - }, - "bugs": { - "url": "https://github.com/samccone/monocle/issues" - }, - "keywords": [ - "watch", - "filesystem", - "folders", - "fs" - ], - "author": { - "name": "Sam Saccone" - }, - "license": "BSD", - "readme": "[![Build Status](https://travis-ci.org/samccone/monocle.png?branch=master)](https://travis-ci.org/samccone/monocle)\n\n# Monocle -- a tool for watching things\n\n[![logo](https://raw.github.com/samccone/monocle/master/logo.png)](https://raw.github.com/samccone/monocle/master/logo.png)\n\nHave you ever wanted to watch a folder and all of its files/nested folders for changes. well now you can!\n\n## Installation\n\n```\nnpm install monocle\n```\n\n## Usage\n\n### Watch a directory:\n\n```js\nvar monocle = require('monocle')()\nmonocle.watchDirectory({\n root: ,\n fileFilter: ,\n directoryFilter: ,\n listener: fn(fs.stat+ object), //triggered on file change / addition\n complete: //file watching all set up\n});\n```\n\nThe listener will recive an object with the following\n\n```js\n name: ,\n path: ,\n fullPath: ,\n parentDir: ,\n fullParentDir: ,\n stat: \n```\n\n[fs.stats](http://nodejs.org/api/fs.html#fs_class_fs_stats)\n\nWhen a new file is added to the directoy it triggers a file change and thus will be passed to your specified listener.\n\nThe two filters are passed through to `readdirp`. More documentation can be found [here](https://github.com/thlorenz/readdirp#filters)\n\n### Watch a list of files:\n\n```js\nMonocle.watchFiles({\n files: [], //path of file(s)\n listener: , //triggered on file / addition\n complete: //file watching all set up\n});\n```\n\n## Why not just use fs.watch ?\n\n - file watching is really bad cross platforms in node\n - you need to be smart when using fs.watch as compared to fs.watchFile\n - Monocle takes care of this logic for you!\n - windows systems use fs.watch\n - osx and linux uses fs.watchFile\n\n## License\n\nBSD\n", - "readmeFilename": "README.md", - "_id": "monocle@0.1.48", - "_from": "monocle@0.1.48" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt deleted file mode 100644 index 8e9c665..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation3.txt +++ /dev/null @@ -1 +0,0 @@ -1368234683085 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt deleted file mode 100644 index f1937ff..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation4.txt +++ /dev/null @@ -1 +0,0 @@ -1368234683637 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt deleted file mode 100644 index 1f5a206..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/creation5.txt +++ /dev/null @@ -1 +0,0 @@ -1368234684038 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt deleted file mode 100644 index fe02e96..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/foo.txt +++ /dev/null @@ -1 +0,0 @@ -1361300019687 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js deleted file mode 100644 index 08c3473..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/longbow.js +++ /dev/null @@ -1 +0,0 @@ -1361300019993 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt deleted file mode 100644 index b26921e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/nestedDir/servent.txt +++ /dev/null @@ -1 +0,0 @@ -1361300019841 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat deleted file mode 100644 index a358cce..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/sample_files/zap.bat +++ /dev/null @@ -1,31 +0,0 @@ -1361223315286 -1361223316535 -1361223345247 -1361223392495 -1361223394521 -1361223401023 -1361223431160 -1361223432160 -1361223437177 -1361223438592 -1361223466645 -1361223467719 -1361223594858 -1361223614308 -1361223643429 -1361223647989 -1361223649211 -1361223650605 -1361223651566 -1361223663051 -1361223664917 -1361223665860 -1361223777758 -1361223779174 -1361223780023 -1361223780769 -1361223783122 -1361223784141 -1361223791305 -1361223795551 -1361223797217 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js deleted file mode 100644 index d65d57b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/monocle/test/tester.js +++ /dev/null @@ -1,180 +0,0 @@ -var fs = require('fs'); -var assert = require('assert'); -var Monocle = require('../monocle'); - -// -// setup -// -var monocle = null; -var sample_dir = __dirname + '/sample_files'; -before(function(){ monocle = Monocle(); }); -after(function() { - fs.unlinkSync(__dirname+"/sample_files/creation.txt"); - fs.unlinkSync(__dirname+"/sample_files/creation2.txt"); - fs.unlinkSync(__dirname+"/sample_files/nestedDir/creation3.txt"); -}); -// -// file change tests -// - -describe("file changes", function() { - - it("should detect a change", function(complete) { - monocle.watchDirectory({ - root: sample_dir, - listener: function(f){ cb_helper('foo.txt', f, complete); }, - complete: function(){ complete_helper("/sample_files/foo.txt"); } - }); - }); - - it("should detect a change in a nested dir file", function(complete) { - monocle.watchDirectory({ - root: sample_dir, - listener: function(f) { cb_helper('servent.txt', f, complete); }, - complete: function() { complete_helper("/sample_files/nestedDir/servent.txt"); } - }); - }); - - it("should detect a change", function(complete) { - monocle.watchDirectory({ - root: sample_dir, - listener: function(f) { cb_helper('longbow.js', f, complete); }, - complete: function() { complete_helper('/sample_files/longbow.js'); } - }); - }); - -}); - -// -// file add tests -// - -describe("file added", function() { - it("should detect a file added", function(complete) { - monocle.watchDirectory({ - root: sample_dir, - listener: function(f) { - cb_helper("creation.txt", f, complete) - }, - complete: function() { - complete_helper('/sample_files/creation.txt'); - } - }); - }); - - it("should detect another file added", function(complete) { - monocle.watchDirectory({ - root: sample_dir, - listener: function(f) { - cb_helper("creation2.txt", f, complete); - }, - complete: function() { - complete_helper('/sample_files/creation2.txt'); - } - }); - }); - - it("should detect another file added in a nested folder", function(complete) { - monocle.watchDirectory({ - root: sample_dir, - listener: function(f) { - cb_helper("creation3.txt", f, complete); - }, - complete: function() { - complete_helper('/sample_files/nestedDir/creation3.txt'); - } - }); - }); -}); - - -// -// watch an array of files -// -describe("files watched", function() { - it("should detect a file changed of multiple", function(complete) { - complete_helper('/sample_files/creation.txt'); - complete_helper('/sample_files/creation2.txt'); - complete_helper('/sample_files/creation3.txt'); - - monocle.watchFiles({ - files: [__dirname+"/sample_files/creation.txt", __dirname+"/sample_files/creation2.txt"], - listener: function(f) { - cb_helper("creation2.txt", f, complete) - }, - complete: function() { - complete_helper('/sample_files/creation2.txt'); - } - }); - }); - - it("should detect a file changed (delayed)", function(complete) { - complete_helper('/sample_files/creation3.txt'); - monocle.watchFiles({ - files: [__dirname+"/sample_files/creation3.txt"], - listener: function(f) { - setTimeout(function() { - cb_helper('creation3.txt', f, complete); - }, 400); - }, - complete: function() { - complete_helper('/sample_files/creation3.txt'); - } - }); - }); - - - - it("should detect a file changed (short delayed)", function(complete) { - complete_helper('/sample_files/creation4.txt'); - monocle.watchFiles({ - files: [__dirname+"/sample_files/creation4.txt"], - listener: function(f) { - setTimeout(function() { - cb_helper('creation4.txt', f, complete); - }, 100); - }, - complete: function() { - complete_helper('/sample_files/creation4.txt'); - } - }); - }); - - it("should detect a file changed", function(complete) { - complete_helper('/sample_files/creation.txt'); - monocle.watchFiles({ - files: [__dirname+"/sample_files/creation.txt"], - listener: function(f) { - cb_helper("creation.txt", f, complete) - }, - complete: function() { - complete_helper('/sample_files/creation.txt'); - } - }); - }); - - it("should not bomb when no callback is passed", function(complete) { - complete_helper('/sample_files/creation5.txt'); - monocle.watchFiles({ - files: [__dirname+"/sample_files/creation5.txt"], - complete: function() { - complete_helper('/sample_files/creation5.txt'); - } - }); - setTimeout(function() { - complete(); - }, 300) - }); -}); - -// -// helpers -// - -function cb_helper(name, file, done){ - if (file.name === name) { monocle.unwatchAll(); done(); } -} - -function complete_helper(path){ - fs.writeFile(__dirname + path, (new Date).getTime() + "\n"); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore deleted file mode 100644 index a72b52e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.npmignore +++ /dev/null @@ -1,15 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -npm-debug.log -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml deleted file mode 100644 index baa0031..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md deleted file mode 100644 index a1dae66..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/README.md +++ /dev/null @@ -1,138 +0,0 @@ -[![Build Status](https://travis-ci.org/ForbesLindesay/transformers.png?branch=master)](https://travis-ci.org/ForbesLindesay/transformers) -# transformers - - String/Data transformations for use in templating libraries, static site generators and web frameworks. This gathers the most useful transformations you can apply to text or data into one library with a consistent API. Transformations can be pretty much anything but most are either compilers or templating engines. - -## Supported transforms - - To use each of these transforms you will also need to install the associated npm module for that transformer. - -### Template engines - - - [atpl](http://documentup.com/soywiz/atpl.js) - Compatible with twig templates - - [coffeecup](http://documentup.com/gradus/coffeecup) - pure coffee-script templates (fork of coffeekup) - - [dot](http://documentup.com/olado/doT) [(website)](https://github.com/Katahdin/dot-packer) - focused on speed - - [dust](http://documentup.com/akdubya/dustjs) [(website)](http://akdubya.github.com/dustjs/) - asyncronous templates - - [eco](http://documentup.com/sstephenson/eco) - Embedded CoffeeScript templates - - [ect](http://documentup.com/baryshev/ect) [(website)](http://ectjs.com/) - Embedded CoffeeScript templates - - [ejs](http://documentup.com/visionmedia/ejs) - Embedded JavaScript templates - - [haml](http://documentup.com/visionmedia/haml.js) [(website)](http://haml-lang.com/) - dry indented markup - - [haml-coffee](http://documentup.com/netzpirat/haml-coffee/) [(website)](http://haml-lang.com/) - haml with embedded CoffeeScript - - [handlebars](http://documentup.com/wycats/handlebars.js/) [(website)](http://handlebarsjs.com/) - extension of mustache templates - - [hogan](http://documentup.com/twitter/hogan.js) [(website)](http://twitter.github.com/hogan.js/) - Mustache templates - - [jade](http://documentup.com/visionmedia/jade) [(website)](http://jade-lang.com/) - robust, elegant, feature rich template engine - - [jazz](http://documentup.com/shinetech/jazz) - - [jqtpl](http://documentup.com/kof/jqtpl) [(website)](http://api.jquery.com/category/plugins/templates/) - extensible logic-less templates - - [JUST](http://documentup.com/baryshev/just) - EJS style template with some special syntax for layouts/partials etc. - - [liquor](http://documentup.com/chjj/liquor) - extended EJS with significant white space - - [mustache](http://documentup.com/janl/mustache.js) - logic less templates - - [QEJS](http://documentup.com/jepso/QEJS) - Promises + EJS for async templating - - [swig](http://documentup.com/paularmstrong/swig) [(website)](http://paularmstrong.github.com/swig/) - Django-like templating engine - - [templayed](http://documentup.com/archan937/templayed.js/) [(website)](http://archan937.github.com/templayed.js/) - Mustache focused on performance - - [toffee](http://documentup.com/malgorithms/toffee) - templating language based on coffeescript - - [underscore](http://documentup.com/documentcloud/underscore) [(website)](http://documentcloud.github.com/underscore/) - - [walrus](http://documentup.com/jeremyruppel/walrus) - A bolder kind of mustache - - [whiskers](http://documentup.com/gsf/whiskers.js/tree/) - logic-less focused on readability - -### Stylesheet Languages - - - [less](http://documentup.com/cloudhead/less.js) [(website)](http://lesscss.org/) - LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions. - - [stylus](http://documentup.com/learnboost/stylus) [(website)](http://learnboost.github.com/stylus/) - revolutionary CSS generator making braces optional - - [sass](http://documentup.com/visionmedia/sass.js) [(website)](http://sass-lang.com/) - Sassy CSS - -### Minifiers - - - [uglify-js](http://documentup.com/mishoo/UglifyJS2) - No need to install anything, just minifies/beautifies JavaScript - - [uglify-css](https://github.com/visionmedia/css) - No need to install anything, just minifies/beautifies CSS - - ugilify-json - No need to install anything, just minifies/beautifies JSON - -### Other - - - cdata - No need to install anything, just wrapps text in `` - - [coffee-script](http://coffeescript.org/) - `npm install coffee-script` - - [cson](https://github.com/bevry/cson) - coffee-script based JSON format - - markdown - You can use `marked`, `supermarked`, `markdown-js` or `markdown` - - [component-js](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}` - - [component-css](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}` - - [html2jade](http://documentup.com/donpark/html2jade) [(website)](http://html2jade.aaron-powell.com/) - `npm install html2jade` - Converts HTML back into jade - -Pull requests to add more transforms will always be accepted providing they are open-source, come with unit tests, and don't cause any of the tests to fail. - -## API - - The exported object `transformers` is a collection of named transformers. To access an individual transformer just do: - - ```javascript - var transformer = require('transformers')['transformer-name'] - ``` - -### Transformer - - The following options are given special meaning by `transformers`: - - - `filename` is set by transformers automatically if using the `renderFile` APIs. It is used if `cache` is enabled. - - `cache` if true, the template function will be cached where possible (templates are still updated if you provide new options, so this can be used in most live applications). - - `sudoSync` used internally to put some asyncronous transformers into "sudo syncronous" mode. Don't touch this. - - `minify` if set to true on a transformer that isn't a minifier, it will cause the output to be minified. e.g. `coffeeScript.renderSync(str, {minify: true})` will result in minified JavaScript. - -#### Transformer.engines - - Returns an array of engines that can be used to power this transformer. The first of these that's installed will be used for the transformation. - - To enable a transformation just take `[engine] = Transformer.engines[0]` and then do `npm install [engine]`. If `[engine]` is `.` there is no need to install an engine from npm to use the transformer. - -#### Transformer.render(str, options, cb) - - Tranform the string `str` using the `Transformer` with the provided options and call the callback `cb(err, res)`. - - If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise. - -#### Transformer.renderSync(str, options) - - Synchronous version of `Transformer.render` - -#### Transformer.renderFile(filename, options, cb) - - Reads the file at filename into `str` and sets `options.filename = filename` then calls `Transform.render(str, options, cb)`. - - If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise. - -#### Tranformer.renderFileSync(filename, options) - - Synchronous version of `Tranformer.renderFile` - -#### Transformer.outputFormat - - A string, one of: - - - `'xml'` - - `'css'` - - `'js'` - - `'json'` - - `'text'` - -Adding to this list will **not** result in a major version change, so you should handle unexpected types gracefully (I'd suggest default to assuming `'text'`). - -#### Transformer.sync - - `true` if the transformer can be used syncronously, `false` otherwise. - -## Libraries that don't work synchronously - - The following transformations will always throw an exception if you attempt to run them synchronously: - - 1. dust - 2. qejs - 3. html2jade - -The following transformations sometimes throw an exception if run syncronously, typically they only throw an exception if you are doing something like including another file. If you are not doing the things that cause them to fail then they are consistently safe to use syncronously. - - - jade (only when using `then-jade` instead of `jade`) - - less (when `@import` is used with a url instead of a filename) - - jazz (When one of the functions passed as locals is asyncronous) - -The following libraries look like they might sometimes throw exceptions when used syncronously (if you read the source) but they never actually do so: - - - just - - ect - - stylus \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md deleted file mode 100644 index 096b9f9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/history.md +++ /dev/null @@ -1,69 +0,0 @@ -## 2.0.1 - 2013-04-22 - - - Fix global leak of `exportscoffeeScript` (test still fails because `jade` requires an out of date version of `transformers`) - -## 2.0.0 - 2013-03-31 - - - Add `minify` support to all transformers - - Bundle minifiers in package - -## 1.8.3 - 2013-03-19 - - - Update promise dependency - -## 1.8.2 - 2013-02-10 - - - Support `sourceURLs` in **component** - -## 1.8.1 - 2013-02-10 - - - Add travis-ci - - FIX **toffee** support which was broken by their latest update - - FIX lookup paths for **component** weren't set so you couldn't build components with dependancies - -## 1.8.0 - 2013-01-30 - - - **highlight** (needs tests) - -## 1.7.0 - 2013-01-30 - - - **component-js** - - **component-css** - - **html2jade** - must be `v0.0.7` because of a bug in later versions - - Much more extensive tests - -## 1.6.0 - 2013-01-29 - - - **uglify-css** - - **uglify-json** - - Rename **uglify** to **uglify-js** - -## 1.5.0 - 2013-01-27 - - - **dot** - -## 1.4.0 - 2013-01-25 - - - Support sync `@import` statements in **less** - - Report real errors from **less** (rather than objects) - -## 1.3.0 - 2013-01-25 - - - **templayed** - - **plates** - -## 1.2.1 - 2013-01-09 - - - make **markdown** work when using **markdown** as the engine (**marked** is the recommended engine). - -## 1.2.0 - 2013-01-09 - - - **js** (pass through) - - **css** (pass through) - - rename **coffee-script** from **coffee** to **coffee-script** and add **coffee** as an alias - -## 1.1.0 - 2013-01-08 - - - **coffeecup** - - **cson** - - FIX: disabling **dust** cache \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js deleted file mode 100644 index 8663117..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/shared.js +++ /dev/null @@ -1,162 +0,0 @@ -var Promise = require('promise'); -var fs = require('fs'); -var path = require('path'); -var normalize = path.normalize; - - -Promise.prototype.nodeify = function (cb) { - if (typeof cb === 'function') { - this.then(function (res) { process.nextTick(function () { cb(null, res); }); }, - function (err) { process.nextTick(function () { cb(err); }); }); - return undefined; - } else { - return this; - } -} - -var minifiers = {}; - -module.exports = Transformer; -function Transformer(obj) { - this.name = obj.name; - this.engines = obj.engines; - this.isBinary = obj.isBinary || false; - this.isMinifier = obj.isMinifier || false; - this.outputFormat = obj.outputFormat; - this._cache = {}; - if (typeof obj.async === 'function') { - this._renderAsync = obj.async; - this.sudoSync = obj.sudoSync || false; - } - if (typeof obj.sync === 'function') { - this._renderSync = obj.sync; - this.sync = true; - } else { - this.sync = obj.sudoSync || false; - } - - if (this.isMinifier) - minifiers[this.outputFormat] = this; - else { - var minifier = minifiers[this.outputFormat]; - if (minifier) { - this.minify = function(str, options) { - if (options && options.minify) - return minifier.renderSync(str, typeof options.minify === 'object' && options.minify || {}); - return str; - } - } - } -} - -Transformer.prototype.cache = function (options, data) { - if (options.cache && options.filename) { - if (data) return this.cache[options.filename] = data; - else return this.cache[options.filename]; - } else { - return data; - } -}; -Transformer.prototype.loadModule = function () { - if (this.engine) return this.engine; - for (var i = 0; i < this.engines.length; i++) { - try { - var res = this.engines[i] === '.' ? null : (this.engine = require(this.engines[i])); - this.engineName = this.engines[i]; - return res; - } catch (ex) { - if (this.engines.length === 1) { - throw ex; - } - } - } - throw new Error('In order to apply the transform ' + this.name + ' you must install one of ' + this.engines.map(function (e) { return '"' + e + '"'; }).join()); -}; -Transformer.prototype.minify = function(str, options) { - return str; -} -Transformer.prototype.renderSync = function (str, options) { - options = options || {}; - options = clone(options); - this.loadModule(); - if (this._renderSync) { - return this.minify(this._renderSync((this.isBinary ? str : fixString(str)), options), options); - } else if (this.sudoSync) { - options.sudoSync = true; - var res, err; - this._renderAsync((this.isBinary ? str : fixString(str)), options, function (e, val) { - if (e) err = e; - else res = val; - }); - if (err) throw err; - else if (res != undefined) return this.minify(res, options); - else if (typeof this.sudoSync === 'string') throw new Error(this.sudoSync.replace(/FILENAME/g, options.filename || '')); - else throw new Error('There was a problem transforming ' + (options.filename || '') + ' syncronously using ' + this.name); - } else { - throw new Error(this.name + ' does not support transforming syncronously.'); - } -}; -Transformer.prototype.render = function (str, options, cb) { - options = options || {}; - var self = this; - return new Promise(function (resolve, reject) { - self.loadModule(); - if (self._renderAsync) { - self._renderAsync((self.isBinary ? str : fixString(str)), clone(options), function (err, val) { - if (err) reject(err); - else resolve(self.minify(val, options)); - }) - } else { - resolve(self.renderSync(str, options)); - } - }) - .nodeify(cb); -}; -Transformer.prototype.renderFile = function (path, options, cb) { - options = options || {}; - var self = this; - return new Promise(function (resolve, reject) { - options.filename = (path = normalize(path)); - if (self._cache[path]) - resolve(null); - else - fs.readFile(path, function (err, data) { - if (err) reject(err); - else resolve(data); - }) - }) - .then(function (str) { - return self.render(str, options); - }) - .nodeify(cb); -}; -Transformer.prototype.renderFileSync = function (path, options) { - options = options || {}; - options.filename = (path = normalize(path)); - return this.renderSync((this._cache[path] ? null : fs.readFileSync(path)), options); -}; -function fixString(str) { - if (str == null) return str; - //convert buffer to string - str = str.toString(); - // Strip UTF-8 BOM if it exists - str = (0xFEFF == str.charCodeAt(0) - ? str.substring(1) - : str); - //remove `\r` added by windows - return str.replace(/\r/g, ''); -} - -function clone(obj) { - if (Array.isArray(obj)) { - return obj.map(clone); - } else if (obj && typeof obj === 'object') { - var res = {}; - for (var key in obj) { - res[key] = clone(obj[key]); - } - return res; - } else { - return obj; - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js deleted file mode 100644 index 2ebeaa4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/lib/transformers.js +++ /dev/null @@ -1,575 +0,0 @@ -var dirname = require('path').dirname; -var Transformer = require('./shared'); - -/** - * minifiers must be first in order to be incorporated inside instances of respective output formats - */ -var uglifyJS = require('uglify-js'); -exports.uglify = exports.uglifyJS = exports['uglify-js'] = new Transformer({ - name: 'uglify-js', - engines: ['.'], - outputFormat: 'js', - isMinifier: true, - sync: function (str, options) { - options.fromString = true; - return this.cache(options) || this.cache(options, uglifyJS.minify(str, options).code); - } -}); -var uglifyCSS = require('css'); -exports.uglifyCSS = exports['uglify-css'] = new Transformer({ - name: 'uglify-css', - engines: ['.'], - outputFormat: 'css', - isMinifier: true, - sync: function (str, options) { - options.compress = options.compress != false && options.beautify != true; - return this.cache(options) || this.cache(options, uglifyCSS.stringify(uglifyCSS.parse(str), options)); - } -}); - -exports.uglifyJSON = exports['uglify-json'] = new Transformer({ - name: 'uglify-json', - engines: ['.'], - outputFormat: 'json', - isMinifier: true, - sync: function (str, options) { - return JSON.stringify(JSON.parse(str), null, options.beautify); - } -}); - - -/** - * Syncronous Templating Languages - */ - -function sync(str, options) { - var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); - return tmpl(options); -} - -exports.swig = new Transformer({ - name: 'swig', - engines: ['swig'], - outputFormat: 'xml', - sync: sync -}); - -exports.atpl = new Transformer({ - name: 'atpl', - engines: ['atpl'], - outputFormat: 'xml', - sync: function sync(str, options) { - var tmpl = this.cache(options); - if (!tmpl) { - var cInfo = {cache: options.cache, filename: options.filename}; - if (options.filename) { - delete options.filename; //atpl can't handle absolute windows file paths properly - } - tmpl = this.cache(cInfo, this.engine.compile(str, options)); - } - return tmpl(options); - } -}); - -exports.dot = new Transformer({ - name: 'dot', - engines: ['dot'], - outputFormat: 'xml', - sync: function sync(str, options) { - var tmpl = this.cache(options) || this.cache(options, this.engine.template(str)); - return tmpl(options); - } -}); - -exports.liquor = new Transformer({ - name: 'liquor', - engines: ['liquor'], - outputFormat: 'xml', - sync: sync -}); - -exports.ejs = new Transformer({ - name: 'ejs', - engines: ['ejs'], - outputFormat: 'xml', - sync: sync -}); - -exports.eco = new Transformer({ - name: 'eco', - engines: ['eco'], - outputFormat: 'xml', - sync: sync//N.B. eco's internal this.cache isn't quite right but this bypasses it -}); - -exports.jqtpl = new Transformer({ - name: 'jqtpl', - engines: ['jqtpl'], - outputFormat: 'xml', - sync: function (str, options) { - var engine = this.engine; - var key = (options.cache && options.filename) ? options.filename : '@'; - engine.compile(str, key); - var res = this.engine.render(key, options); - if (!(options.cache && options.filename)) { - delete engine.cache[key]; - } - this.cache(options, true); // caching handled internally - return res; - } -}); - -exports.haml = new Transformer({ - name: 'haml', - engines: ['hamljs'], - outputFormat: 'xml', - sync: sync -}); - -exports['haml-coffee'] = new Transformer({ - name: 'haml-coffee', - engines: ['haml-coffee'], - outputFormat: 'xml', - sync: sync -}); - -exports.whiskers = new Transformer({ - name: 'whiskers', - engines: ['whiskers'], - outputFormat: 'xml', - sync: sync -}); - -exports.hogan = new Transformer({ - name: 'hogan', - engines: ['hogan.js'], - outputFormat: 'xml', - sync: function(str, options){ - var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); - return tmpl.render(options, options.partials); - } -}); - -exports.handlebars = new Transformer({ - name: 'handlebars', - engines: ['handlebars'], - outputFormat: 'xml', - sync: function(str, options){ - for (var partial in options.partials) { - this.engine.registerPartial(partial, options.partials[partial]); - } - var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); - return tmpl(options); - } -}); - -exports.underscore = new Transformer({ - name: 'underscore', - engines: ['underscore'], - outputFormat: 'xml', - sync: function(str, options){ - var tmpl = this.cache(options) || this.cache(options, this.engine.template(str)); - return tmpl(options); - } -}); - -exports.walrus = new Transformer({ - name: 'walrus', - engines: ['walrus'], - outputFormat: 'xml', - sync: function(str, options){ - var tmpl = this.cache(options) || this.cache(options, this.engine.parse(str)); - return tmpl.compile(options); - } -}); - -exports.mustache = new Transformer({ - name: 'mustache', - engines: ['mustache'], - outputFormat: 'xml', - sync: function(str, options){ - var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str)); - return tmpl(options, options.partials); - } -}); - -exports.templayed = new Transformer({ - name: 'templayed', - engines: ['templayed'], - outputFormat: 'xml', - sync: function(str, options){ - var tmpl = this.cache(options) || this.cache(options, this.engine(str)); - return tmpl(options); - } -}); - -exports.plates = new Transformer({ - name: 'plates', - engines: ['plates'], - outputFormat: 'xml', - sync: function(str, options){ - str = this.cache(options) || this.cache(options, str); - return this.engine.bind(str, options, options.map); - } -}); - -exports.mote = new Transformer({ - name: 'mote', - engines: ['mote'], - outputFormat: 'xml', - sync: sync -}); - -exports.toffee = new Transformer({ - name: 'toffee', - engines: ['toffee'], - outputFormat: 'xml', - sync: function (str, options) { - var View = this.engine.view; - var v = this.cache(options) || this.cache(options, new View(str, options)); - var res = v.run(options, require('vm').createContext({})); - if (res[0]) throw res[0]; - else return res[1]; - } -}); - -exports.coffeekup = exports.coffeecup = new Transformer({ - name: 'coffeecup', - engines: ['coffeecup', 'coffeekup'], - outputFormat: 'xml', - sync: function (str, options) { - var compiled = this.cache(options) || this.cache(options, this.engine.compile(str, options)); - return compiled(options); - } -}); - -/** - * Asyncronous Templating Languages - */ - -exports.just = new Transformer({ - name: 'just', - engines: ['just'], - outputFormat: 'xml', - sudoSync: true, - async: function (str, options, cb) { - var JUST = this.engine; - var tmpl = this.cache(options) || this.cache(options, new JUST({ root: { page: str }})); - tmpl.render('page', options, cb); - } -}); - -exports.ect = new Transformer({ - name: 'ect', - engines: ['ect'], - outputFormat: 'xml', - sudoSync: true, // Always runs syncronously - async: function (str, options, cb) { - var ECT = this.engine; - var tmpl = this.cache(options) || this.cache(options, new ECT({ root: { page: str }})); - tmpl.render('page', options, cb); - } -}); - -exports.jade = new Transformer({ - name: 'jade', - engines: ['jade', 'then-jade'], - outputFormat: 'xml', - sudoSync: 'The jade file FILENAME could not be rendered syncronously. N.B. then-jade does not support syncronous rendering.', - async: function (str, options, cb) { - this.cache(options, true);//jade handles this.cache internally - this.engine.render(str, options, cb); - } -}) - -exports.dust = new Transformer({ - name: 'dust', - engines: ['dust', 'dustjs-linkedin'], - outputFormat: 'xml', - sudoSync: false, - async: function (str, options, cb) { - var ext = 'dust' - , views = '.'; - - if (options) { - if (options.ext) ext = options.ext; - if (options.views) views = options.views; - if (options.settings && options.settings.views) views = options.settings.views; - } - - this.engine.onLoad = function(path, callback){ - if ('' == extname(path)) path += '.' + ext; - if ('/' !== path[0]) path = views + '/' + path; - read(path, options, callback); - }; - - var tmpl = this.cache(options) || this.cache(options, this.engine.compileFn(str)); - if (options && !options.cache) this.engine.cache = {};//invalidate dust's internal cache - tmpl(options, cb); - } -}); - -exports.jazz = new Transformer({ - name: 'jazz', - engines: ['jazz'], - outputFormat: 'xml', - sudoSync: true, // except when an async function is passed to locals - async: function (str, options, cb) { - var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); - tmpl.eval(options, function(str){ - cb(null, str); - }); - } -}); - -exports.qejs = new Transformer({ - name: 'qejs', - engines: ['qejs'], - outputFormat: 'xml', - sudoSync: false, - async: function (str, options, cb) { - var tmpl = this.cache(options) || this.cache(options, this.engine.compile(str, options)); - tmpl(options).done(function (result) { - cb(null, result); - }, function (err) { - cb(err); - }); - } -}); - -/** - * Stylsheet Languages - */ - -exports.less = new Transformer({ - name: 'less', - engines: ['less'], - outputFormat: 'css', - sudoSync: 'The less file FILENAME could not be rendered syncronously. This is usually because the file contains `@import url` statements.', - async: function (str, options, cb) { - var self = this; - if (self.cache(options)) return cb(null, self.cache(options)); - if (options.filename) { - options.paths = options.paths || [dirname(options.filename)]; - } - //If this.cache is enabled, compress by default - if (options.compress !== true && options.compress !== false) { - options.compress = options.cache || false; - } - if (options.sudoSync) { - options.syncImport = true; - } - var parser = new(this.engine.Parser)(options); - parser.parse(str, function (err, tree) { - try { - if (err) throw err; - var res = tree.toCSS(options); - self.cache(options, res); - cb(null, res); - } catch (ex) { - if (!(ex instanceof Error) && typeof ex === 'object') { - ex.filename = ex.filename || '"Unkown Source"'; - var err = new Error(self.engine.formatError(ex, options).replace(/^[^:]+:/, ''), ex.filename, ex.line); - err.name = ex.type; - ex = err; - } - console.log('\n\n' + ex.stack + '\n\n'); - return cb(ex); - } - }); - } -}); - -exports.styl = exports.stylus = new Transformer({ - name: 'stylus', - engines: ['stylus'], - outputFormat: 'css', - sudoSync: true,// always runs syncronously - async: function (str, options, cb) { - var self = this; - if (self.cache(options)) return cb(null, self.cache(options)); - if (options.filename) { - options.paths = options.paths || [dirname(options.filename)]; - } - //If this.cache is enabled, compress by default - if (options.compress !== true && options.compress !== false) { - options.compress = options.cache || false; - } - this.engine.render(str, options, function (err, res) { - if (err) return cb(err); - self.cache(options, res); - cb(null, res); - }); - } -}) - -exports.sass = new Transformer({ - name: 'sass', - engines: ['sass'], - outputFormat: 'css', - sync: function (str, options) { - try { - return this.cache(options) || this.cache(options, this.engine.render(str)); - } catch (ex) { - if (options.filename) ex.message += ' in ' + options.filename; - throw ex; - } - } -}); - -/** - * Miscelaneous - */ - -exports.md = exports.markdown = new Transformer({ - name: 'markdown', - engines: ['marked', 'supermarked', 'markdown-js', 'markdown'], - outputFormat: 'html', - sync: function (str, options) { - var arg = options; - if (this.engineName === 'markdown') arg = options.dialect; //even if undefined - return this.cache(options) || this.cache(options, this.engine.parse(str, arg)); - } -}); - - -exports.coffee = exports['coffee-script'] = exports.coffeescript = exports.coffeeScript = new Transformer({ - name: 'coffee-script', - engines: ['coffee-script'], - outputFormat: 'js', - sync: function (str, options) { - return this.cache(options) || this.cache(options, this.engine.compile(str, options)); - } -}); - -exports.cson = new Transformer({ - name: 'cson', - engines: ['cson'], - outputFormat: 'json', - sync: function (str, options) { - //todo: remove once https://github.com/rstacruz/js2coffee/pull/174 accepted & released - if (global.Narcissus) delete global.Narcissus; //prevent global leak - return this.cache(options) || this.cache(options, JSON.stringify(this.engine.parseSync(str))); - } -}); - -exports.cdata = new Transformer({ - name: 'cdata', - engines: ['.'],// `.` means "no dependency" - outputFormat: 'xml', - sync: function (str, options) { - return this.cache(options) || this.cache(options, ''); - } -}); - -exports.component = exports['component-js'] = new Transformer({ - name: 'component-js', - engines: ['component-builder'], - outputFormat: 'js', - async: function (str, options, cb) { - if (this.cache(options)) return this.cache(options); - var self = this; - var builder = new this.engine(dirname(options.filename)); - if (options.development) { - builder.development(); - } - if (options.sourceURLs === true || (options.sourceURLs !== false && options.development)) { - builder.addSourceURLs(); - } - var path = require('path'); - builder.paths = (options.paths || ['components']).map(function (p) { - if (path.resolve(p) === p) { - return p; - } else { - return path.join(dirname(options.filename), p); - } - }); - builder.build(function (err, obj) { - if (err) return cb(err); - else return cb(null, self.cache(options, obj.require + obj.js)); - }); - } -}); - -exports['component-css'] = new Transformer({ - name: 'component-css', - engines: ['component-builder'], - outputFormat: 'css', - async: function (str, options, cb) { - if (this.cache(options)) return this.cache(options); - var self = this; - var builder = new this.engine(dirname(options.filename)); - if (options.development) { - builder.development(); - } - if (options.sourceURLs === true || (options.sourceURLs !== false && options.development)) { - builder.addSourceURLs(); - } - var path = require('path'); - builder.paths = (options.paths || ['components']).map(function (p) { - if (path.resolve(p) === p) { - return p; - } else { - return path.join(dirname(options.filename), p); - } - }); - builder.build(function (err, obj) { - if (err) return cb(err); - else return cb(null, self.cache(options, obj.css)); - }); - } -}); - -exports['html2jade'] = new Transformer({ - name: 'html2jade', - engines: ['html2jade'], - outputFormat: 'jade', - async: function (str, options, cb) { - return this.cache(options) || this.cache(options, this.engine.convertHtml(str, options, cb)); - } -}); - -exports['highlight'] = new Transformer({ - name: 'highlight', - engines: ['highlight.js'], - outputFormat: 'xml', - sync: function (str, options, cb) { - if (this.cache(options)) return this.cache(options); - if (options.lang) { - try { - return this.cache(options, this.engine.highlight(options.lang, str).value); - } catch (ex) {} - } - if (options.auto || !options.lang) { - try { - return this.cache(options, this.engine.highlightAuto(str).value); - } catch (ex) {} - } - return this.cache(options, str); - } -}); - - -/** - * Marker transformers (they don't actually apply a transformation, but let you declare the 'outputFormat') - */ - -exports.css = new Transformer({ - name: 'css', - engines: ['.'],// `.` means "no dependency" - outputFormat: 'css', - sync: function (str, options) { - return this.cache(options) || this.cache(options, str); - } -}); - -exports.js = new Transformer({ - name: 'js', - engines: ['.'],// `.` means "no dependency" - outputFormat: 'js', - sync: function (str, options) { - return this.cache(options) || this.cache(options, str); - } -}); - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs deleted file mode 100644 index 27606b8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../uglify-js/bin/uglifyjs" "$@" - ret=$? -else - node "$basedir/../uglify-js/bin/uglifyjs" "$@" - ret=$? -fi -exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd deleted file mode 100644 index 88ff40f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/.bin/uglifyjs.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\uglify-js\bin\uglifyjs" %* -) ELSE ( - node "%~dp0\..\uglify-js\bin\uglifyjs" %* -) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md deleted file mode 100644 index 93b15c2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/History.md +++ /dev/null @@ -1,20 +0,0 @@ - -1.0.7 / 2012-11-21 -================== - - * fix component.json - -1.0.4 / 2012-11-15 -================== - - * update css-stringify - -1.0.3 / 2012-09-01 -================== - - * add component support - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile deleted file mode 100644 index f13b4a7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - -test: - @node test - -benchmark: - @node benchmark - -.PHONY: test benchmark \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md deleted file mode 100644 index cf578df..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/Readme.md +++ /dev/null @@ -1,77 +0,0 @@ - -# css - - CSS parser / stringifier using [css-parse](https://github.com/visionmedia/css-parse) and [css-stringify](https://github.com/visionmedia/css-stringify). - -## Installation - - $ npm install css - -## Example - -js: - -```js -var css = require('css') -var obj = css.parse('tobi { name: "tobi" }') -css.stringify(obj); -``` - -object returned by `.parse()`: - -```json -{ - "stylesheet": { - "rules": [ - { - "selector": "tobi", - "declarations": [ - { - "property": "name", - "value": "tobi" - } - ] - } - ] - } -} -``` - -string returned by `.stringify(ast)`: - -```css -tobi { - name: tobi; -} -``` - -string returned by `.stringify(ast, { compress: true })`: - -```css -tobi{name:tobi} -``` - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js deleted file mode 100644 index dec711d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/benchmark.js +++ /dev/null @@ -1,36 +0,0 @@ - -var css = require('./') - , fs = require('fs') - , read = fs.readFileSync - , str = read('examples/ui.css', 'utf8'); - -var n = 5000; -var ops = 200; -var t = process.hrtime(t); -var results = []; - -while (n--) { - css.stringify(css.parse(str)); - if (n % ops == 0) { - t = process.hrtime(t); - var ms = t[1] / 1000 / 1000; - var persec = (ops * (1000 / ms) | 0); - results.push(persec); - process.stdout.write('\r [' + persec + ' ops/s] [' + n + ']'); - t = process.hrtime(); - } -} - -function sum(arr) { - return arr.reduce(function(sum, n){ - return sum + n; - }); -} - -function mean(arr) { - return sum(arr) / arr.length | 0; -} - -console.log(); -console.log(' avg: %d ops/s', mean(results)); -console.log(' size: %d kb', (str.length / 1024).toFixed(2)); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json deleted file mode 100644 index 2769165..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/component.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "css", - "version": "1.0.8", - "description": "CSS parser / stringifier using css-parse and css-stringify", - "keywords": ["css", "parser", "stylesheet"], - "dependencies": { - "visionmedia/css-parse": "*", - "visionmedia/css-stringify": "*" - }, - "scripts": [ - "index.js" - ] -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js deleted file mode 100644 index 19ec91a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/index.js +++ /dev/null @@ -1,3 +0,0 @@ - -exports.parse = require('css-parse'); -exports.stringify = require('css-stringify'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore deleted file mode 100644 index 4a3c398..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -support -test -examples -*.sock -test.css -test.js diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md deleted file mode 100644 index 5276aab..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/History.md +++ /dev/null @@ -1,30 +0,0 @@ - -1.0.4 / 2012-09-17 -================== - - * fix keyframes float percentages - * fix an issue with comments containing slashes. - -1.0.3 / 2012-09-01 -================== - - * add component support - * fix unquoted data uris [rstacruz] - * fix keyframe names with no whitespace [rstacruz] - * fix excess semicolon support [rstacruz] - -1.0.2 / 2012-09-01 -================== - - * fix IE property hack support [rstacruz] - * fix quoted strings in declarations [rstacruz] - -1.0.1 / 2012-07-26 -================== - - * change "selector" to "selectors" array - -1.0.0 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile deleted file mode 100644 index 4e9c8d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md deleted file mode 100644 index fde74a5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/Readme.md +++ /dev/null @@ -1,62 +0,0 @@ - -# css-parse - - CSS parser. - -## Example - -js: - -```js -var parse = require('css-parse') -parse('tobi { name: "tobi" }') -``` - -object returned: - -```json -{ - "stylesheet": { - "rules": [ - { - "selectors": ["tobi"], - "declarations": [ - { - "property": "name", - "value": "tobi" - } - ] - } - ] - } -} -``` - -## Performance - - Parsed 15,000 lines of CSS (2mb) in 40ms on my macbook air. - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json deleted file mode 100644 index 234ebbe..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/component.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "css-parse", - "repo": "visionmedia/node-css-parse", - "version": "1.0.3", - "description": "CSS parser", - "keywords": ["css", "parser", "stylesheet"], - "scripts": ["index.js"] -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js deleted file mode 100644 index 3ed278f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/index.js +++ /dev/null @@ -1,265 +0,0 @@ - -module.exports = function(css){ - - /** - * Parse stylesheet. - */ - - function stylesheet() { - return { stylesheet: { rules: rules() }}; - } - - /** - * Opening brace. - */ - - function open() { - return match(/^{\s*/); - } - - /** - * Closing brace. - */ - - function close() { - return match(/^}\s*/); - } - - /** - * Parse ruleset. - */ - - function rules() { - var node; - var rules = []; - whitespace(); - comments(); - while (css[0] != '}' && (node = atrule() || rule())) { - comments(); - rules.push(node); - } - return rules; - } - - /** - * Match `re` and return captures. - */ - - function match(re) { - var m = re.exec(css); - if (!m) return; - css = css.slice(m[0].length); - return m; - } - - /** - * Parse whitespace. - */ - - function whitespace() { - match(/^\s*/); - } - - /** - * Parse comments; - */ - - function comments() { - while (comment()) ; - } - - /** - * Parse comment. - */ - - function comment() { - if ('/' == css[0] && '*' == css[1]) { - var i = 2; - while ('*' != css[i] || '/' != css[i + 1]) ++i; - i += 2; - css = css.slice(i); - whitespace(); - return true; - } - } - - /** - * Parse selector. - */ - - function selector() { - var m = match(/^([^{]+)/); - if (!m) return; - return m[0].trim().split(/\s*,\s*/); - } - - /** - * Parse declaration. - */ - - function declaration() { - // prop - var prop = match(/^(\*?[-\w]+)\s*/); - if (!prop) return; - prop = prop[0]; - - // : - if (!match(/^:\s*/)) return; - - // val - var val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)\s*/); - if (!val) return; - val = val[0].trim(); - - // ; - match(/^[;\s]*/); - - return { property: prop, value: val }; - } - - /** - * Parse keyframe. - */ - - function keyframe() { - var m; - var vals = []; - - while (m = match(/^(from|to|\d+%|\.\d+%|\d+\.\d+%)\s*/)) { - vals.push(m[1]); - match(/^,\s*/); - } - - if (!vals.length) return; - - return { - values: vals, - declarations: declarations() - }; - } - - /** - * Parse keyframes. - */ - - function keyframes() { - var m = match(/^@([-\w]+)?keyframes */); - if (!m) return; - var vendor = m[1]; - - // identifier - var m = match(/^([-\w]+)\s*/); - if (!m) return; - var name = m[1]; - - if (!open()) return; - comments(); - - var frame; - var frames = []; - while (frame = keyframe()) { - frames.push(frame); - comments(); - } - - if (!close()) return; - - return { - name: name, - vendor: vendor, - keyframes: frames - }; - } - - /** - * Parse media. - */ - - function media() { - var m = match(/^@media *([^{]+)/); - if (!m) return; - var media = m[1].trim(); - - if (!open()) return; - comments(); - - var style = rules(); - - if (!close()) return; - - return { media: media, rules: style }; - } - - /** - * Parse import - */ - - function atimport() { - return _atrule('import') - } - - /** - * Parse charset - */ - - function atcharset() { - return _atrule('charset'); - } - - /** - * Parse non-block at-rules - */ - - function _atrule(name) { - var m = match(new RegExp('^@' + name + ' *([^;\\n]+);\\s*')); - if (!m) return; - var ret = {} - ret[name] = m[1].trim(); - return ret; - } - - /** - * Parse declarations. - */ - - function declarations() { - var decls = []; - - if (!open()) return; - comments(); - - // declarations - var decl; - while (decl = declaration()) { - decls.push(decl); - comments(); - } - - if (!close()) return; - return decls; - } - - /** - * Parse at rule. - */ - - function atrule() { - return keyframes() - || media() - || atimport() - || atcharset(); - } - - /** - * Parse rule. - */ - - function rule() { - var sel = selector(); - if (!sel) return; - comments(); - return { selectors: sel, declarations: declarations() }; - } - - return stylesheet(); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json deleted file mode 100644 index cdd44ae..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-parse/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "css-parse", - "version": "1.0.4", - "description": "CSS parser", - "keywords": [ - "css", - "parser", - "stylesheet" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "main": "index", - "readme": "\n# css-parse\n\n CSS parser.\n\n## Example\n\njs:\n\n```js\nvar parse = require('css-parse')\nparse('tobi { name: \"tobi\" }')\n```\n\nobject returned:\n\n```json\n{\n \"stylesheet\": {\n \"rules\": [\n {\n \"selectors\": [\"tobi\"],\n \"declarations\": [\n {\n \"property\": \"name\",\n \"value\": \"tobi\"\n }\n ]\n }\n ]\n }\n}\n```\n\n## Performance\n\n Parsed 15,000 lines of CSS (2mb) in 40ms on my macbook air.\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "css-parse@1.0.4", - "_from": "css-parse@1.0.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore deleted file mode 100644 index 4a3c398..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -support -test -examples -*.sock -test.css -test.js diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md deleted file mode 100644 index a6ff960..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/History.md +++ /dev/null @@ -1,30 +0,0 @@ - -1.0.5 / 2013-03-15 -================== - - * fix indentation of multiple selectors in @media. Closes #11 - -1.0.4 / 2012-11-15 -================== - - * fix indentation - -1.0.3 / 2012-09-04 -================== - - * add __@charset__ support [rstacruz] - -1.0.2 / 2012-09-01 -================== - - * add component support - -1.0.1 / 2012-07-26 -================== - - * add "selectors" array support - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile deleted file mode 100644 index 4e9c8d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md deleted file mode 100644 index a36e780..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/Readme.md +++ /dev/null @@ -1,33 +0,0 @@ - -# css-stringify - - CSS compiler using the AST provided by [css-parse](https://github.com/visionmedia/css-parse). - -## Performance - - Formats 15,000 lines of CSS (2mb) in 23ms on my macbook air. - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json deleted file mode 100644 index 259baef..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/component.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "css-stringify", - "repo": "visionmedia/css-stringify", - "version": "1.0.5", - "description": "CSS compiler", - "keywords": ["css", "stringify", "stylesheet"], - "scripts": ["index.js"] -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js deleted file mode 100644 index f528e41..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/index.js +++ /dev/null @@ -1,182 +0,0 @@ - -/** - * Stringfy the given AST `node`. - * - * @param {Object} node - * @param {Object} options - * @return {String} - * @api public - */ - -module.exports = function(node, options){ - return new Compiler(options).compile(node); -}; - -/** - * Initialize a new `Compiler`. - */ - -function Compiler(options) { - options = options || {}; - this.compress = options.compress; - this.indentation = options.indent; -} - -/** - * Compile `node`. - */ - -Compiler.prototype.compile = function(node){ - return node.stylesheet.rules.map(this.visit, this) - .join(this.compress ? '' : '\n\n'); -}; - -/** - * Visit `node`. - */ - -Compiler.prototype.visit = function(node){ - if (node.charset) return this.charset(node); - if (node.keyframes) return this.keyframes(node); - if (node.media) return this.media(node); - if (node.import) return this.import(node); - return this.rule(node); -}; - -/** - * Visit import node. - */ - -Compiler.prototype.import = function(node){ - return '@import ' + node.import + ';'; -}; - -/** - * Visit media node. - */ - -Compiler.prototype.media = function(node){ - if (this.compress) { - return '@media ' - + node.media - + '{' - + node.rules.map(this.visit, this).join('') - + '}'; - } - - return '@media ' - + node.media - + ' {\n' - + this.indent(1) - + node.rules.map(this.visit, this).join('\n\n') - + this.indent(-1) - + '\n}'; -}; - -/** - * Visit charset node. - */ - -Compiler.prototype.charset = function(node){ - if (this.compress) { - return '@charset ' + node.charset + ';'; - } - - return '@charset ' + node.charset + ';\n'; -}; - -/** - * Visit keyframes node. - */ - -Compiler.prototype.keyframes = function(node){ - if (this.compress) { - return '@' - + (node.vendor || '') - + 'keyframes ' - + node.name - + '{' - + node.keyframes.map(this.keyframe, this).join('') - + '}'; - } - - return '@' - + (node.vendor || '') - + 'keyframes ' - + node.name - + ' {\n' - + this.indent(1) - + node.keyframes.map(this.keyframe, this).join('\n') - + this.indent(-1) - + '}'; -}; - -/** - * Visit keyframe node. - */ - -Compiler.prototype.keyframe = function(node){ - if (this.compress) { - return node.values.join(',') - + '{' - + node.declarations.map(this.declaration, this).join(';') - + '}'; - } - - return this.indent() - + node.values.join(', ') - + ' {\n' - + this.indent(1) - + node.declarations.map(this.declaration, this).join(';\n') - + this.indent(-1) - + '\n' + this.indent() + '}\n'; -}; - -/** - * Visit rule node. - */ - -Compiler.prototype.rule = function(node){ - var indent = this.indent(); - - if (this.compress) { - return node.selectors.join(',') - + '{' - + node.declarations.map(this.declaration, this).join(';') - + '}'; - } - - return node.selectors.map(function(s){ return indent + s }).join(',\n') - + ' {\n' - + this.indent(1) - + node.declarations.map(this.declaration, this).join(';\n') - + this.indent(-1) - + '\n' + this.indent() + '}'; -}; - -/** - * Visit declaration node. - */ - -Compiler.prototype.declaration = function(node){ - if (this.compress) { - return node.property + ':' + node.value; - } - - return this.indent() + node.property + ': ' + node.value; -}; - -/** - * Increase, decrease or return current indentation. - */ - -Compiler.prototype.indent = function(level) { - this.level = this.level || 1; - - if (null != level) { - this.level += level; - return ''; - } - - return Array(this.level).join(this.indentation || ' '); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json deleted file mode 100644 index cada5c0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/node_modules/css-stringify/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "css-stringify", - "version": "1.0.5", - "description": "CSS compiler", - "keywords": [ - "css", - "stringify", - "stylesheet" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "devDependencies": { - "mocha": "*", - "should": "*", - "css-parse": "1.0.3" - }, - "main": "index", - "readme": "\n# css-stringify\n\n CSS compiler using the AST provided by [css-parse](https://github.com/visionmedia/css-parse).\n\n## Performance\n\n Formats 15,000 lines of CSS (2mb) in 23ms on my macbook air.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "_id": "css-stringify@1.0.5", - "dist": { - "shasum": "f726c3bb10701eedac564618c17968f026596b17" - }, - "_from": "css-stringify@1.0.5", - "_resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json deleted file mode 100644 index 638ae96..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "css", - "version": "1.0.8", - "description": "CSS parser / stringifier using css-parse and css-stringify", - "keywords": [ - "css", - "parser", - "stylesheet" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": { - "css-parse": "1.0.4", - "css-stringify": "1.0.5" - }, - "main": "index", - "readme": "\n# css\n\n CSS parser / stringifier using [css-parse](https://github.com/visionmedia/css-parse) and [css-stringify](https://github.com/visionmedia/css-stringify).\n\n## Installation\n\n $ npm install css\n\n## Example\n\njs:\n\n```js\nvar css = require('css')\nvar obj = css.parse('tobi { name: \"tobi\" }')\ncss.stringify(obj);\n```\n\nobject returned by `.parse()`:\n\n```json\n{\n \"stylesheet\": {\n \"rules\": [\n {\n \"selector\": \"tobi\",\n \"declarations\": [\n {\n \"property\": \"name\",\n \"value\": \"tobi\"\n }\n ]\n }\n ]\n }\n}\n```\n\nstring returned by `.stringify(ast)`:\n\n```css\ntobi {\n name: tobi;\n}\n```\n\nstring returned by `.stringify(ast, { compress: true })`:\n\n```css\ntobi{name:tobi}\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "css@1.0.8", - "_from": "css@~1.0.8" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js deleted file mode 100644 index 3e1b4d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/css/test.js +++ /dev/null @@ -1,6 +0,0 @@ - -var css = require('./') - , assert = require('assert'); - -assert(css.parse); -assert(css.stringify); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore deleted file mode 100644 index 1195248..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -components -node_modules -test -.gitignore -.travis.yml -component.json \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md deleted file mode 100644 index 2b9dfe9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/Readme.md +++ /dev/null @@ -1,85 +0,0 @@ -[![Build Status](https://travis-ci.org/then/promise.png)](https://travis-ci.org/then/promise) - -# promise - - This a bare bones [Promises/A+](http://promises-aplus.github.com/promises-spec/) implementation. - - It is designed to get the basics spot on correct, so that you can build extended promise implementations on top of it. - -## Installation - - Server: - - $ npm install promise - - Client: - - $ component install then/promise - -## API - - In the example below shows how you can load the promise library (in a way that works on both client and server). It then demonstrates creating a promise from scratch. You simply call `new Promise(fn)`. There is a complete specification for what is returned by this method in [Promises/A+](http://promises-aplus.github.com/promises-spec/). - -```javascript -var Promise = require('promise'); - -var promise = new Promise(function (resolve, reject) { - get('http://www.google.com', function (err, res) { - if (err) reject(err); - else resolve(res); - }); - }); -``` - -## Extending Promises - - There are three options for extending the promises created by this library. - -### Inheritance - - You can use inheritance if you want to create your own complete promise library with this as your basic starting point, perfect if you have lots of cool features you want to add. Here is an example of a promise library called `Awesome`, which is built on top of `Promise` correctly. - -```javascript -var Promise = require('promise'); -function Awesome(fn) { - if (!(this instanceof Awesome)) return new Awesome(fn); - Promise.call(this, fn); -} -Awesome.prototype = Object.create(Promise.prototype); -Awesome.prototype.constructor = Awesome; - -//Awesome extension -Awesome.prototype.spread = function (cb) { - return this.then(function (arr) { - return cb.apply(this, arr); - }) -}; -``` - - N.B. if you fail to set the prototype and constructor properly or fail to do Promise.call, things can fail in really subtle ways. - -### Wrap - - This is the nuclear option, for when you want to start from scratch. It ensures you won't be impacted by anyone who is extending the prototype (see below). - -```javascript -function Uber(fn) { - if (!(this instanceof Uber)) return new Uber(fn); - var _prom = new Promise(fn); - this.then = _prom.then; -} - -Uber.prototype.spread = function (cb) { - return this.then(function (arr) { - return cb.apply(this, arr); - }) -}; -``` - -### Extending the Prototype - - In general, you should never extend the prototype of this promise implimenation because your extensions could easily conflict with someone elses extensions. However, this organisation will host a library of extensions which do not conflict with each other, so you can safely enable any of those. If you think of an extension that we don't provide and you want to write it, submit an issue on this repository and (if I agree) I'll set you up with a repository and give you permission to commit to it. - -## License - - MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js deleted file mode 100644 index 492eb99..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/index.js +++ /dev/null @@ -1,164 +0,0 @@ -var isPromise = require('is-promise') - -var nextTick -if (typeof setImediate === 'function') nextTick = setImediate -else if (typeof process === 'object' && process && process.nextTick) nextTick = process.nextTick -else nextTick = function (cb) { setTimeout(cb, 0) } - -var extensions = [] - -module.exports = Promise -function Promise(fn) { - if (!(this instanceof Promise)) { - return fn ? new Promise(fn) : defer() - } - if (typeof fn !== 'function') { - throw new TypeError('fn is not a function') - } - - var state = { - isResolved: false, - isSettled: false, - isFulfilled: false, - value: null, - waiting: [], - running: false - } - - function _resolve(val) { - resolve(state, val); - } - function _reject(err) { - reject(state, err); - } - this.then = function _then(onFulfilled, onRejected) { - return then(state, onFulfilled, onRejected); - } - - _resolve.fulfill = deprecate(_resolve, 'resolver.fulfill(x)', 'resolve(x)') - _resolve.reject = deprecate(_reject, 'resolver.reject', 'reject(x)') - - try { - fn(_resolve, _reject) - } catch (ex) { - _reject(ex) - } -} - -function resolve(promiseState, value) { - if (promiseState.isResolved) return - if (isPromise(value)) { - assimilate(promiseState, value) - } else { - settle(promiseState, true, value) - } -} - -function reject(promiseState, reason) { - if (promiseState.isResolved) return - settle(promiseState, false, reason) -} - -function then(promiseState, onFulfilled, onRejected) { - return new Promise(function (resolve, reject) { - function done(next, skipTimeout) { - var callback = promiseState.isFulfilled ? onFulfilled : onRejected - if (typeof callback === 'function') { - function timeoutDone() { - var val - try { - val = callback(promiseState.value) - } catch (ex) { - reject(ex) - return next(true) - } - resolve(val) - next(true) - } - if (skipTimeout) timeoutDone() - else nextTick(timeoutDone) - } else if (promiseState.isFulfilled) { - resolve(promiseState.value) - next(skipTimeout) - } else { - reject(promiseState.value) - next(skipTimeout) - } - } - promiseState.waiting.push(done) - if (promiseState.isSettled && !promiseState.running) processQueue(promiseState) - }) -} - -function processQueue(promiseState) { - function next(skipTimeout) { - if (promiseState.waiting.length) { - promiseState.running = true - promiseState.waiting.shift()(next, skipTimeout) - } else { - promiseState.running = false - } - } - next(false) -} - -function settle(promiseState, isFulfilled, value) { - if (promiseState.isSettled) return - - promiseState.isResolved = promiseState.isSettled = true - promiseState.value = value - promiseState.isFulfilled = isFulfilled - - processQueue(promiseState) -} - -function assimilate(promiseState, thenable) { - try { - promiseState.isResolved = true - thenable.then(function (res) { - if (isPromise(res)) { - assimilate(promiseState, res) - } else { - settle(promiseState, true, res) - } - }, function (err) { - settle(promiseState, false, err) - }) - } catch (ex) { - settle(promiseState, false, ex) - } -} - -Promise.use = function (extension) { - extensions.push(extension) -} - - -function deprecate(method, name, alternative) { - return function () { - var err = new Error(name + ' is deprecated use ' + alternative) - if (typeof console !== 'undefined' && console && typeof console.warn === 'function') { - console.warn(name + ' is deprecated use ' + alternative) - if (err.stack) console.warn(err.stack) - } else { - nextTick(function () { - throw err - }) - } - method.apply(this, arguments) - } -} -function defer() { - var err = new Error('promise.defer() is deprecated') - if (typeof console !== 'undefined' && console && typeof console.warn === 'function') { - console.warn('promise.defer() is deprecated') - if (err.stack) console.warn(err.stack) - } else { - nextTick(function () { - throw err - }) - } - var resolver - var promise = new Promise(function (res) { resolver = res }) - return {resolver: resolver, promise: promise} -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore deleted file mode 100644 index aeb7b45..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -component -build -node_modules -test.js -component.json -.gitignore \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js deleted file mode 100644 index 776c3a5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = isPromise; - -function isPromise(obj) { - return obj && typeof obj.then === 'function'; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json deleted file mode 100644 index 056cf8f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "is-promise", - "version": "1.0.0", - "description": "Test whether an object looks like a promises-a+ promise", - "main": "index.js", - "scripts": { - "test": "mocha -R spec" - }, - "repository": { - "type": "git", - "url": "https://github.com/then/is-promise.git" - }, - "author": { - "name": "ForbesLindesay" - }, - "license": "MIT", - "devDependencies": { - "better-assert": "~0.1.0", - "mocha": "~1.7.4" - }, - "readme": "\n# is-promise\n\n Test whether an object looks like a promises-a+ promise\n\n## Installation\n\n Client:\n\n $ component install then/is-promise\n\n Server:\n\n $ npm install is-promise\n\n## API\n\n```javascript\nvar isPromise = require('is-promise');\n\nisPromise({then:function () {...}});//=>true\nisPromise(null);//=>false\nisPromise({});//=>false\nisPromise({then: true})//=>false\n```\n\n## License\n\n MIT\n", - "readmeFilename": "readme.md", - "bugs": { - "url": "https://github.com/then/is-promise/issues" - }, - "_id": "is-promise@1.0.0", - "_from": "is-promise@~1" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md deleted file mode 100644 index bfeda13..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/node_modules/is-promise/readme.md +++ /dev/null @@ -1,29 +0,0 @@ - -# is-promise - - Test whether an object looks like a promises-a+ promise - -## Installation - - Client: - - $ component install then/is-promise - - Server: - - $ npm install is-promise - -## API - -```javascript -var isPromise = require('is-promise'); - -isPromise({then:function () {...}});//=>true -isPromise(null);//=>false -isPromise({});//=>false -isPromise({then: true})//=>false -``` - -## License - - MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json deleted file mode 100644 index f7a24bb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/promise/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "promise", - "version": "2.0.0", - "description": "Bare bones Promises/A+ implementation", - "main": "index.js", - "scripts": { - "test": "mocha -R spec --timeout 200 --slow 99999" - }, - "repository": { - "type": "git", - "url": "https://github.com/then/promise.git" - }, - "author": { - "name": "ForbesLindesay" - }, - "license": "MIT", - "dependencies": { - "is-promise": "~1" - }, - "devDependencies": { - "promises-aplus-tests": "*", - "mocha-as-promised": "~1.2.1", - "better-assert": "~1.0.0" - }, - "readme": "[![Build Status](https://travis-ci.org/then/promise.png)](https://travis-ci.org/then/promise)\r\n\r\n# promise\r\n\r\n This a bare bones [Promises/A+](http://promises-aplus.github.com/promises-spec/) implementation.\r\n\r\n It is designed to get the basics spot on correct, so that you can build extended promise implementations on top of it.\r\n\r\n## Installation\r\n\r\n Server:\r\n\r\n $ npm install promise\r\n\r\n Client:\r\n\r\n $ component install then/promise\r\n\r\n## API\r\n\r\n In the example below shows how you can load the promise library (in a way that works on both client and server). It then demonstrates creating a promise from scratch. You simply call `new Promise(fn)`. There is a complete specification for what is returned by this method in [Promises/A+](http://promises-aplus.github.com/promises-spec/).\r\n\r\n```javascript\r\nvar Promise = require('promise');\r\n\r\nvar promise = new Promise(function (resolve, reject) {\r\n get('http://www.google.com', function (err, res) {\r\n if (err) reject(err);\r\n else resolve(res);\r\n });\r\n });\r\n```\r\n\r\n## Extending Promises\r\n\r\n There are three options for extending the promises created by this library.\r\n\r\n### Inheritance\r\n\r\n You can use inheritance if you want to create your own complete promise library with this as your basic starting point, perfect if you have lots of cool features you want to add. Here is an example of a promise library called `Awesome`, which is built on top of `Promise` correctly.\r\n\r\n```javascript\r\nvar Promise = require('promise');\r\nfunction Awesome(fn) {\r\n if (!(this instanceof Awesome)) return new Awesome(fn);\r\n Promise.call(this, fn);\r\n}\r\nAwesome.prototype = Object.create(Promise.prototype);\r\nAwesome.prototype.constructor = Awesome;\r\n\r\n//Awesome extension\r\nAwesome.prototype.spread = function (cb) {\r\n return this.then(function (arr) {\r\n return cb.apply(this, arr);\r\n })\r\n};\r\n```\r\n\r\n N.B. if you fail to set the prototype and constructor properly or fail to do Promise.call, things can fail in really subtle ways.\r\n\r\n### Wrap\r\n\r\n This is the nuclear option, for when you want to start from scratch. It ensures you won't be impacted by anyone who is extending the prototype (see below).\r\n\r\n```javascript\r\nfunction Uber(fn) {\r\n if (!(this instanceof Uber)) return new Uber(fn);\r\n var _prom = new Promise(fn);\r\n this.then = _prom.then;\r\n}\r\n\r\nUber.prototype.spread = function (cb) {\r\n return this.then(function (arr) {\r\n return cb.apply(this, arr);\r\n })\r\n};\r\n```\r\n\r\n### Extending the Prototype\r\n\r\n In general, you should never extend the prototype of this promise implimenation because your extensions could easily conflict with someone elses extensions. However, this organisation will host a library of extensions which do not conflict with each other, so you can safely enable any of those. If you think of an extension that we don't provide and you want to write it, submit an issue on this repository and (if I agree) I'll set you up with a repository and give you permission to commit to it.\r\n\r\n## License\r\n\r\n MIT\r\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/then/promise/issues" - }, - "_id": "promise@2.0.0", - "_from": "promise@~2.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore deleted file mode 100644 index 94fceeb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -tmp/ -node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md deleted file mode 100644 index de6abe5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/README.md +++ /dev/null @@ -1,544 +0,0 @@ -UglifyJS 2 -========== - -UglifyJS is a JavaScript parser, minifier, compressor or beautifier toolkit. - -This page documents the command line utility. For -[API and internals documentation see my website](http://lisperator.net/uglifyjs/). -There's also an -[in-browser online demo](http://lisperator.net/uglifyjs/#demo) (for Firefox, -Chrome and probably Safari). - -Install -------- - -First make sure you have installed the latest version of [node.js](http://nodejs.org/) -(You may need to restart your computer after this step). - -From NPM for use as a command line app: - - npm install uglify-js -g - -From NPM for programmatic use: - - npm install uglify-js - -From Git: - - git clone git://github.com/mishoo/UglifyJS2.git - cd UglifyJS2 - npm link . - -Usage ------ - - uglifyjs [input files] [options] - -UglifyJS2 can take multiple input files. It's recommended that you pass the -input files first, then pass the options. UglifyJS will parse input files -in sequence and apply any compression options. The files are parsed in the -same global scope, that is, a reference from a file to some -variable/function declared in another file will be matched properly. - -If you want to read from STDIN instead, pass a single dash instead of input -files. - -The available options are: - - --source-map Specify an output file where to generate source map. - [string] - --source-map-root The path to the original source to be included in the - source map. [string] - --source-map-url The path to the source map to be added in //@ - sourceMappingURL. Defaults to the value passed with - --source-map. [string] - --in-source-map Input source map, useful if you're compressing JS that was - generated from some other original code. - -p, --prefix Skip prefix for original filenames that appear in source - maps. For example -p 3 will drop 3 directories from file - names and ensure they are relative paths. - -o, --output Output file (default STDOUT). - -b, --beautify Beautify output/specify output options. [string] - -m, --mangle Mangle names/pass mangler options. [string] - -r, --reserved Reserved names to exclude from mangling. - -c, --compress Enable compressor/pass compressor options. Pass options - like -c hoist_vars=false,if_return=false. Use -c with no - argument to use the default compression options. [string] - -d, --define Global definitions [string] - --comments Preserve copyright comments in the output. By default this - works like Google Closure, keeping JSDoc-style comments - that contain "@license" or "@preserve". You can optionally - pass one of the following arguments to this flag: - - "all" to keep all comments - - a valid JS regexp (needs to start with a slash) to keep - only comments that match. - Note that currently not *all* comments can be kept when - compression is on, because of dead code removal or - cascading statements into sequences. [string] - --stats Display operations run time on STDERR. [boolean] - --acorn Use Acorn for parsing. [boolean] - --spidermonkey Assume input fles are SpiderMonkey AST format (as JSON). - [boolean] - --self Build itself (UglifyJS2) as a library (implies - --wrap=UglifyJS --export-all) [boolean] - --wrap Embed everything in a big function, making the “exports” - and “global” variables available. You need to pass an - argument to this option to specify the name that your - module will take when included in, say, a browser. - [string] - --export-all Only used when --wrap, this tells UglifyJS to add code to - automatically export all globals. [boolean] - --lint Display some scope warnings [boolean] - -v, --verbose Verbose [boolean] - -V, --version Print version number and exit. [boolean] - -Specify `--output` (`-o`) to declare the output file. Otherwise the output -goes to STDOUT. - -## Source map options - -UglifyJS2 can generate a source map file, which is highly useful for -debugging your compressed JavaScript. To get a source map, pass -`--source-map output.js.map` (full path to the file where you want the -source map dumped). - -Additionally you might need `--source-map-root` to pass the URL where the -original files can be found. In case you are passing full paths to input -files to UglifyJS, you can use `--prefix` (`-p`) to specify the number of -directories to drop from the path prefix when declaring files in the source -map. - -For example: - - uglifyjs /home/doe/work/foo/src/js/file1.js \ - /home/doe/work/foo/src/js/file2.js \ - -o foo.min.js \ - --source-map foo.min.js.map \ - --source-map-root http://foo.com/src \ - -p 5 -c -m - -The above will compress and mangle `file1.js` and `file2.js`, will drop the -output in `foo.min.js` and the source map in `foo.min.js.map`. The source -mapping will refer to `http://foo.com/src/js/file1.js` and -`http://foo.com/src/js/file2.js` (in fact it will list `http://foo.com/src` -as the source map root, and the original files as `js/file1.js` and -`js/file2.js`). - -### Composed source map - -When you're compressing JS code that was output by a compiler such as -CoffeeScript, mapping to the JS code won't be too helpful. Instead, you'd -like to map back to the original code (i.e. CoffeeScript). UglifyJS has an -option to take an input source map. Assuming you have a mapping from -CoffeeScript → compiled JS, UglifyJS can generate a map from CoffeeScript → -compressed JS by mapping every token in the compiled JS to its original -location. - -To use this feature you need to pass `--in-source-map -/path/to/input/source.map`. Normally the input source map should also point -to the file containing the generated JS, so if that's correct you can omit -input files from the command line. - -## Mangler options - -To enable the mangler you need to pass `--mangle` (`-m`). Optionally you -can pass `-m sort=true` (we'll possibly have other flags in the future) in order -to assign shorter names to most frequently used variables. This saves a few -hundred bytes on jQuery before gzip, but the output is _bigger_ after gzip -(and seems to happen for other libraries I tried it on) therefore it's not -enabled by default. - -When mangling is enabled but you want to prevent certain names from being -mangled, you can declare those names with `--reserved` (`-r`) — pass a -comma-separated list of names. For example: - - uglifyjs ... -m -r '$,require,exports' - -to prevent the `require`, `exports` and `$` names from being changed. - -## Compressor options - -You need to pass `--compress` (`-c`) to enable the compressor. Optionally -you can pass a comma-separated list of options. Options are in the form -`foo=bar`, or just `foo` (the latter implies a boolean option that you want -to set `true`; it's effectively a shortcut for `foo=true`). - -The defaults should be tuned for maximum compression on most code. Here are -the available options (all are `true` by default, except `hoist_vars`): - -- `sequences` -- join consecutive simple statements using the comma operator -- `properties` -- rewrite property access using the dot notation, for - example `foo["bar"] → foo.bar` -- `dead_code` -- remove unreachable code -- `drop_debugger` -- remove `debugger;` statements -- `unsafe` -- apply "unsafe" transformations (discussion below) -- `conditionals` -- apply optimizations for `if`-s and conditional - expressions -- `comparisons` -- apply certain optimizations to binary nodes, for example: - `!(a <= b) → a > b` (only when `unsafe`), attempts to negate binary nodes, - e.g. `a = !b && !c && !d && !e → a=!(b||c||d||e)` etc. -- `evaluate` -- attempt to evaluate constant expressions -- `booleans` -- various optimizations for boolean context, for example `!!a - ? b : c → a ? b : c` -- `loops` -- optimizations for `do`, `while` and `for` loops when we can - statically determine the condition -- `unused` -- drop unreferenced functions and variables -- `hoist_funs` -- hoist function declarations -- `hoist_vars` -- hoist `var` declarations (this is `false` by default - because it seems to increase the size of the output in general) -- `if_return` -- optimizations for if/return and if/continue -- `join_vars` -- join consecutive `var` statements -- `cascade` -- small optimization for sequences, transform `x, x` into `x` - and `x = something(), x` into `x = something()` -- `warnings` -- display warnings when dropping unreachable code or unused - declarations etc. - -### Conditional compilation - -You can use the `--define` (`-d`) switch in order to declare global -variables that UglifyJS will assume to be constants (unless defined in -scope). For example if you pass `--define DEBUG=false` then, coupled with -dead code removal UglifyJS will discard the following from the output: - - if (DEBUG) { - console.log("debug stuff"); - } - -UglifyJS will warn about the condition being always false and about dropping -unreachable code; for now there is no option to turn off only this specific -warning, you can pass `warnings=false` to turn off *all* warnings. - -Another way of doing that is to declare your globals as constants in a -separate file and include it into the build. For example you can have a -`build/defines.js` file with the following: - - const DEBUG = false; - const PRODUCTION = true; - // etc. - -and build your code like this: - - uglifyjs build/defines.js js/foo.js js/bar.js... -c - -UglifyJS will notice the constants and, since they cannot be altered, it -will evaluate references to them to the value itself and drop unreachable -code as usual. The possible downside of this approach is that the build -will contain the `const` declarations. - - -## Beautifier options - -The code generator tries to output shortest code possible by default. In -case you want beautified output, pass `--beautify` (`-b`). Optionally you -can pass additional arguments that control the code output: - -- `beautify` (default `true`) -- whether to actually beautify the output. - Passing `-b` will set this to true, but you might need to pass `-b` even - when you want to generate minified code, in order to specify additional - arguments, so you can use `-b beautify=false` to override it. -- `indent-level` (default 4) -- `indent-start` (default 0) -- prefix all lines by that many spaces -- `quote-keys` (default `false`) -- pass `true` to quote all keys in literal - objects -- `space-colon` (default `true`) -- insert a space after the colon signs -- `ascii-only` (default `false`) -- escape Unicode characters in strings and - regexps -- `inline-script` (default `false`) -- escape the slash in occurrences of - ` 0) { - sys.error("WARN: Ignoring input files since --self was passed"); - } - files = UglifyJS.FILES; - if (!ARGS.wrap) ARGS.wrap = "UglifyJS"; - ARGS.export_all = true; -} - -var ORIG_MAP = ARGS.in_source_map; - -if (ORIG_MAP) { - ORIG_MAP = JSON.parse(fs.readFileSync(ORIG_MAP)); - if (files.length == 0) { - sys.error("INFO: Using file from the input source map: " + ORIG_MAP.file); - files = [ ORIG_MAP.file ]; - } - if (ARGS.source_map_root == null) { - ARGS.source_map_root = ORIG_MAP.sourceRoot; - } -} - -if (files.length == 0) { - files = [ "-" ]; -} - -if (files.indexOf("-") >= 0 && ARGS.source_map) { - sys.error("ERROR: Source map doesn't work with input from STDIN"); - process.exit(1); -} - -if (files.filter(function(el){ return el == "-" }).length > 1) { - sys.error("ERROR: Can read a single file from STDIN (two or more dashes specified)"); - process.exit(1); -} - -var STATS = {}; -var OUTPUT_FILE = ARGS.o; -var TOPLEVEL = null; - -var SOURCE_MAP = ARGS.source_map ? UglifyJS.SourceMap({ - file: OUTPUT_FILE, - root: ARGS.source_map_root, - orig: ORIG_MAP, -}) : null; - -OUTPUT_OPTIONS.source_map = SOURCE_MAP; - -try { - var output = UglifyJS.OutputStream(OUTPUT_OPTIONS); - var compressor = COMPRESS && UglifyJS.Compressor(COMPRESS); -} catch(ex) { - if (ex instanceof UglifyJS.DefaultsError) { - sys.error(ex.msg); - sys.error("Supported options:"); - sys.error(sys.inspect(ex.defs)); - process.exit(1); - } -} - -files.forEach(function(file) { - var code = read_whole_file(file); - if (ARGS.p != null) { - file = file.replace(/^\/+/, "").split(/\/+/).slice(ARGS.p).join("/"); - } - time_it("parse", function(){ - if (ARGS.spidermonkey) { - var program = JSON.parse(code); - if (!TOPLEVEL) TOPLEVEL = program; - else TOPLEVEL.body = TOPLEVEL.body.concat(program.body); - } - else if (ARGS.acorn) { - TOPLEVEL = acorn.parse(code, { - locations : true, - trackComments : true, - sourceFile : file, - program : TOPLEVEL - }); - } - else { - TOPLEVEL = UglifyJS.parse(code, { - filename: file, - toplevel: TOPLEVEL - }); - }; - }); -}); - -if (ARGS.acorn || ARGS.spidermonkey) time_it("convert_ast", function(){ - TOPLEVEL = UglifyJS.AST_Node.from_mozilla_ast(TOPLEVEL); -}); - -if (ARGS.wrap) { - TOPLEVEL = TOPLEVEL.wrap_commonjs(ARGS.wrap, ARGS.export_all); -} - -var SCOPE_IS_NEEDED = COMPRESS || MANGLE || ARGS.lint; - -if (SCOPE_IS_NEEDED) { - time_it("scope", function(){ - TOPLEVEL.figure_out_scope(); - if (ARGS.lint) { - TOPLEVEL.scope_warnings(); - } - }); -} - -if (COMPRESS) { - time_it("squeeze", function(){ - TOPLEVEL = TOPLEVEL.transform(compressor); - }); -} - -if (SCOPE_IS_NEEDED) { - time_it("scope", function(){ - TOPLEVEL.figure_out_scope(); - if (MANGLE) { - TOPLEVEL.compute_char_frequency(MANGLE); - } - }); -} - -if (MANGLE) time_it("mangle", function(){ - TOPLEVEL.mangle_names(MANGLE); -}); -time_it("generate", function(){ - TOPLEVEL.print(output); -}); - -output = output.get(); - -if (SOURCE_MAP) { - fs.writeFileSync(ARGS.source_map, SOURCE_MAP, "utf8"); - output += "\n/*\n//@ sourceMappingURL=" + (ARGS.source_map_url || ARGS.source_map) + "\n*/"; -} - -if (OUTPUT_FILE) { - fs.writeFileSync(OUTPUT_FILE, output, "utf8"); -} else { - sys.print(output); - sys.error("\n"); -} - -if (ARGS.stats) { - sys.error(UglifyJS.string_template("Timing information (compressed {count} files):", { - count: files.length - })); - for (var i in STATS) if (STATS.hasOwnProperty(i)) { - sys.error(UglifyJS.string_template("- {name}: {time}s", { - name: i, - time: (STATS[i] / 1000).toFixed(3) - })); - } -} - -/* -----[ functions ]----- */ - -function normalize(o) { - for (var i in o) if (o.hasOwnProperty(i) && /-/.test(i)) { - o[i.replace(/-/g, "_")] = o[i]; - delete o[i]; - } -} - -function getOptions(x, constants) { - x = ARGS[x]; - if (!x) return null; - var ret = {}; - if (x !== true) { - var ast; - try { - ast = UglifyJS.parse(x); - } catch(ex) { - if (ex instanceof UglifyJS.JS_Parse_Error) { - sys.error("Error parsing arguments in: " + x); - process.exit(1); - } - } - ast.walk(new UglifyJS.TreeWalker(function(node){ - if (node instanceof UglifyJS.AST_Toplevel) return; // descend - if (node instanceof UglifyJS.AST_SimpleStatement) return; // descend - if (node instanceof UglifyJS.AST_Seq) return; // descend - if (node instanceof UglifyJS.AST_Assign) { - var name = node.left.print_to_string({ beautify: false }).replace(/-/g, "_"); - var value = node.right; - if (constants) - value = new Function("return (" + value.print_to_string() + ")")(); - ret[name] = value; - return true; // no descend - } - sys.error(node.TYPE) - sys.error("Error parsing arguments in: " + x); - process.exit(1); - })); - } - return ret; -} - -function read_whole_file(filename) { - if (filename == "-") { - // XXX: this sucks. How does one read the whole STDIN - // synchronously? - filename = "/dev/stdin"; - } - try { - return fs.readFileSync(filename, "utf8"); - } catch(ex) { - sys.error("ERROR: can't read file: " + filename); - process.exit(1); - } -} - -function time_it(name, cont) { - var t1 = new Date().getTime(); - var ret = cont(); - if (ARGS.stats) { - var spent = new Date().getTime() - t1; - if (STATS[name]) STATS[name] += spent; - else STATS[name] = spent; - } - return ret; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js deleted file mode 100644 index 62bdd8d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/ast.js +++ /dev/null @@ -1,964 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -function DEFNODE(type, props, methods, base) { - if (arguments.length < 4) base = AST_Node; - if (!props) props = []; - else props = props.split(/\s+/); - var self_props = props; - if (base && base.PROPS) - props = props.concat(base.PROPS); - var code = "return function AST_" + type + "(props){ if (props) { "; - for (var i = props.length; --i >= 0;) { - code += "this." + props[i] + " = props." + props[i] + ";"; - } - var proto = base && new base; - if (proto && proto.initialize || (methods && methods.initialize)) - code += "this.initialize();"; - code += "}}"; - var ctor = new Function(code)(); - if (proto) { - ctor.prototype = proto; - ctor.BASE = base; - } - if (base) base.SUBCLASSES.push(ctor); - ctor.prototype.CTOR = ctor; - ctor.PROPS = props || null; - ctor.SELF_PROPS = self_props; - ctor.SUBCLASSES = []; - if (type) { - ctor.prototype.TYPE = ctor.TYPE = type; - } - if (methods) for (i in methods) if (methods.hasOwnProperty(i)) { - if (/^\$/.test(i)) { - ctor[i.substr(1)] = methods[i]; - } else { - ctor.prototype[i] = methods[i]; - } - } - ctor.DEFMETHOD = function(name, method) { - this.prototype[name] = method; - }; - return ctor; -}; - -var AST_Token = DEFNODE("Token", "type value line col pos endpos nlb comments_before file", { -}, null); - -var AST_Node = DEFNODE("Node", "start end", { - clone: function() { - return new this.CTOR(this); - }, - $documentation: "Base class of all AST nodes", - $propdoc: { - start: "[AST_Token] The first token of this node", - end: "[AST_Token] The last token of this node" - }, - _walk: function(visitor) { - return visitor._visit(this); - }, - walk: function(visitor) { - return this._walk(visitor); // not sure the indirection will be any help - } -}, null); - -AST_Node.warn_function = null; -AST_Node.warn = function(txt, props) { - if (AST_Node.warn_function) - AST_Node.warn_function(string_template(txt, props)); -}; - -/* -----[ statements ]----- */ - -var AST_Statement = DEFNODE("Statement", null, { - $documentation: "Base class of all statements", -}); - -var AST_Debugger = DEFNODE("Debugger", null, { - $documentation: "Represents a debugger statement", -}, AST_Statement); - -var AST_Directive = DEFNODE("Directive", "value scope", { - $documentation: "Represents a directive, like \"use strict\";", - $propdoc: { - value: "[string] The value of this directive as a plain string (it's not an AST_String!)", - scope: "[AST_Scope/S] The scope that this directive affects" - }, -}, AST_Statement); - -var AST_SimpleStatement = DEFNODE("SimpleStatement", "body", { - $documentation: "A statement consisting of an expression, i.e. a = 1 + 2", - $propdoc: { - body: "[AST_Node] an expression node (should not be instanceof AST_Statement)" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.body._walk(visitor); - }); - } -}, AST_Statement); - -function walk_body(node, visitor) { - if (node.body instanceof AST_Statement) { - node.body._walk(visitor); - } - else node.body.forEach(function(stat){ - stat._walk(visitor); - }); -}; - -var AST_Block = DEFNODE("Block", "body", { - $documentation: "A body of statements (usually bracketed)", - $propdoc: { - body: "[AST_Statement*] an array of statements" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - walk_body(this, visitor); - }); - } -}, AST_Statement); - -var AST_BlockStatement = DEFNODE("BlockStatement", null, { - $documentation: "A block statement", -}, AST_Block); - -var AST_EmptyStatement = DEFNODE("EmptyStatement", null, { - $documentation: "The empty statement (empty block or simply a semicolon)", - _walk: function(visitor) { - return visitor._visit(this); - } -}, AST_Statement); - -var AST_StatementWithBody = DEFNODE("StatementWithBody", "body", { - $documentation: "Base class for all statements that contain one nested body: `For`, `ForIn`, `Do`, `While`, `With`", - $propdoc: { - body: "[AST_Statement] the body; this should always be present, even if it's an AST_EmptyStatement" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.body._walk(visitor); - }); - } -}, AST_Statement); - -var AST_LabeledStatement = DEFNODE("LabeledStatement", "label", { - $documentation: "Statement with a label", - $propdoc: { - label: "[AST_Label] a label definition" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.label._walk(visitor); - this.body._walk(visitor); - }); - } -}, AST_StatementWithBody); - -var AST_DWLoop = DEFNODE("DWLoop", "condition", { - $documentation: "Base class for do/while statements", - $propdoc: { - condition: "[AST_Node] the loop condition. Should not be instanceof AST_Statement" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.condition._walk(visitor); - this.body._walk(visitor); - }); - } -}, AST_StatementWithBody); - -var AST_Do = DEFNODE("Do", null, { - $documentation: "A `do` statement", -}, AST_DWLoop); - -var AST_While = DEFNODE("While", null, { - $documentation: "A `while` statement", -}, AST_DWLoop); - -var AST_For = DEFNODE("For", "init condition step", { - $documentation: "A `for` statement", - $propdoc: { - init: "[AST_Node?] the `for` initialization code, or null if empty", - condition: "[AST_Node?] the `for` termination clause, or null if empty", - step: "[AST_Node?] the `for` update clause, or null if empty" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - if (this.init) this.init._walk(visitor); - if (this.condition) this.condition._walk(visitor); - if (this.step) this.step._walk(visitor); - this.body._walk(visitor); - }); - } -}, AST_StatementWithBody); - -var AST_ForIn = DEFNODE("ForIn", "init name object", { - $documentation: "A `for ... in` statement", - $propdoc: { - init: "[AST_Node] the `for/in` initialization code", - name: "[AST_SymbolRef?] the loop variable, only if `init` is AST_Var", - object: "[AST_Node] the object that we're looping through" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.init._walk(visitor); - this.object._walk(visitor); - this.body._walk(visitor); - }); - } -}, AST_StatementWithBody); - -var AST_With = DEFNODE("With", "expression", { - $documentation: "A `with` statement", - $propdoc: { - expression: "[AST_Node] the `with` expression" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.expression._walk(visitor); - this.body._walk(visitor); - }); - } -}, AST_StatementWithBody); - -/* -----[ scope and functions ]----- */ - -var AST_Scope = DEFNODE("Scope", "directives variables functions uses_with uses_eval parent_scope enclosed cname", { - $documentation: "Base class for all statements introducing a lexical scope", - $propdoc: { - directives: "[string*/S] an array of directives declared in this scope", - variables: "[Object/S] a map of name -> SymbolDef for all variables/functions defined in this scope", - functions: "[Object/S] like `variables`, but only lists function declarations", - uses_with: "[boolean/S] tells whether this scope uses the `with` statement", - uses_eval: "[boolean/S] tells whether this scope contains a direct call to the global `eval`", - parent_scope: "[AST_Scope?/S] link to the parent scope", - enclosed: "[SymbolDef*/S] a list of all symbol definitions that are accessed from this scope or any subscopes", - cname: "[integer/S] current index for mangling variables (used internally by the mangler)", - }, -}, AST_Block); - -var AST_Toplevel = DEFNODE("Toplevel", "globals", { - $documentation: "The toplevel scope", - $propdoc: { - globals: "[Object/S] a map of name -> SymbolDef for all undeclared names", - }, - wrap_commonjs: function(name, export_all) { - var self = this; - var to_export = []; - if (export_all) { - self.figure_out_scope(); - self.walk(new TreeWalker(function(node){ - if (node instanceof AST_SymbolDeclaration && node.definition().global) { - if (!find_if(function(n){ return n.name == node.name }, to_export)) - to_export.push(node); - } - })); - } - var wrapped_tl = "(function(exports, global){ global['" + name + "'] = exports; '$ORIG'; '$EXPORTS'; }({}, (function(){return this}())))"; - wrapped_tl = parse(wrapped_tl); - wrapped_tl = wrapped_tl.transform(new TreeTransformer(function before(node){ - if (node instanceof AST_SimpleStatement) { - node = node.body; - if (node instanceof AST_String) switch (node.getValue()) { - case "$ORIG": - return MAP.splice(self.body); - case "$EXPORTS": - var body = []; - to_export.forEach(function(sym){ - body.push(new AST_SimpleStatement({ - body: new AST_Assign({ - left: new AST_Sub({ - expression: new AST_SymbolRef({ name: "exports" }), - property: new AST_String({ value: sym.name }), - }), - operator: "=", - right: new AST_SymbolRef(sym), - }), - })); - }); - return MAP.splice(body); - } - } - })); - return wrapped_tl; - } -}, AST_Scope); - -var AST_Lambda = DEFNODE("Lambda", "name argnames uses_arguments", { - $documentation: "Base class for functions", - $propdoc: { - name: "[AST_SymbolDeclaration?] the name of this function", - argnames: "[AST_SymbolFunarg*] array of function arguments", - uses_arguments: "[boolean/S] tells whether this function accesses the arguments array" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - if (this.name) this.name._walk(visitor); - this.argnames.forEach(function(arg){ - arg._walk(visitor); - }); - walk_body(this, visitor); - }); - } -}, AST_Scope); - -var AST_Accessor = DEFNODE("Accessor", null, { - $documentation: "A setter/getter function" -}, AST_Lambda); - -var AST_Function = DEFNODE("Function", null, { - $documentation: "A function expression" -}, AST_Lambda); - -var AST_Defun = DEFNODE("Defun", null, { - $documentation: "A function definition" -}, AST_Lambda); - -/* -----[ JUMPS ]----- */ - -var AST_Jump = DEFNODE("Jump", null, { - $documentation: "Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)" -}, AST_Statement); - -var AST_Exit = DEFNODE("Exit", "value", { - $documentation: "Base class for “exits” (`return` and `throw`)", - $propdoc: { - value: "[AST_Node?] the value returned or thrown by this statement; could be null for AST_Return" - }, - _walk: function(visitor) { - return visitor._visit(this, this.value && function(){ - this.value._walk(visitor); - }); - } -}, AST_Jump); - -var AST_Return = DEFNODE("Return", null, { - $documentation: "A `return` statement" -}, AST_Exit); - -var AST_Throw = DEFNODE("Throw", null, { - $documentation: "A `throw` statement" -}, AST_Exit); - -var AST_LoopControl = DEFNODE("LoopControl", "label", { - $documentation: "Base class for loop control statements (`break` and `continue`)", - $propdoc: { - label: "[AST_LabelRef?] the label, or null if none", - }, - _walk: function(visitor) { - return visitor._visit(this, this.label && function(){ - this.label._walk(visitor); - }); - } -}, AST_Jump); - -var AST_Break = DEFNODE("Break", null, { - $documentation: "A `break` statement" -}, AST_LoopControl); - -var AST_Continue = DEFNODE("Continue", null, { - $documentation: "A `continue` statement" -}, AST_LoopControl); - -/* -----[ IF ]----- */ - -var AST_If = DEFNODE("If", "condition alternative", { - $documentation: "A `if` statement", - $propdoc: { - condition: "[AST_Node] the `if` condition", - alternative: "[AST_Statement?] the `else` part, or null if not present" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.condition._walk(visitor); - this.body._walk(visitor); - if (this.alternative) this.alternative._walk(visitor); - }); - } -}, AST_StatementWithBody); - -/* -----[ SWITCH ]----- */ - -var AST_Switch = DEFNODE("Switch", "expression", { - $documentation: "A `switch` statement", - $propdoc: { - expression: "[AST_Node] the `switch` “discriminant”" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.expression._walk(visitor); - walk_body(this, visitor); - }); - } -}, AST_Block); - -var AST_SwitchBranch = DEFNODE("SwitchBranch", null, { - $documentation: "Base class for `switch` branches", -}, AST_Block); - -var AST_Default = DEFNODE("Default", null, { - $documentation: "A `default` switch branch", -}, AST_SwitchBranch); - -var AST_Case = DEFNODE("Case", "expression", { - $documentation: "A `case` switch branch", - $propdoc: { - expression: "[AST_Node] the `case` expression" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.expression._walk(visitor); - walk_body(this, visitor); - }); - } -}, AST_SwitchBranch); - -/* -----[ EXCEPTIONS ]----- */ - -var AST_Try = DEFNODE("Try", "bcatch bfinally", { - $documentation: "A `try` statement", - $propdoc: { - bcatch: "[AST_Catch?] the catch block, or null if not present", - bfinally: "[AST_Finally?] the finally block, or null if not present" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - walk_body(this, visitor); - if (this.bcatch) this.bcatch._walk(visitor); - if (this.bfinally) this.bfinally._walk(visitor); - }); - } -}, AST_Block); - -// XXX: this is wrong according to ECMA-262 (12.4). the catch block -// should introduce another scope, as the argname should be visible -// only inside the catch block. However, doing it this way because of -// IE which simply introduces the name in the surrounding scope. If -// we ever want to fix this then AST_Catch should inherit from -// AST_Scope. -var AST_Catch = DEFNODE("Catch", "argname", { - $documentation: "A `catch` node; only makes sense as part of a `try` statement", - $propdoc: { - argname: "[AST_SymbolCatch] symbol for the exception" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.argname._walk(visitor); - walk_body(this, visitor); - }); - } -}, AST_Block); - -var AST_Finally = DEFNODE("Finally", null, { - $documentation: "A `finally` node; only makes sense as part of a `try` statement" -}, AST_Block); - -/* -----[ VAR/CONST ]----- */ - -var AST_Definitions = DEFNODE("Definitions", "definitions", { - $documentation: "Base class for `var` or `const` nodes (variable declarations/initializations)", - $propdoc: { - definitions: "[AST_VarDef*] array of variable definitions" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.definitions.forEach(function(def){ - def._walk(visitor); - }); - }); - } -}, AST_Statement); - -var AST_Var = DEFNODE("Var", null, { - $documentation: "A `var` statement" -}, AST_Definitions); - -var AST_Const = DEFNODE("Const", null, { - $documentation: "A `const` statement" -}, AST_Definitions); - -var AST_VarDef = DEFNODE("VarDef", "name value", { - $documentation: "A variable declaration; only appears in a AST_Definitions node", - $propdoc: { - name: "[AST_SymbolVar|AST_SymbolConst] name of the variable", - value: "[AST_Node?] initializer, or null of there's no initializer" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.name._walk(visitor); - if (this.value) this.value._walk(visitor); - }); - } -}); - -/* -----[ OTHER ]----- */ - -var AST_Call = DEFNODE("Call", "expression args", { - $documentation: "A function call expression", - $propdoc: { - expression: "[AST_Node] expression to invoke as function", - args: "[AST_Node*] array of arguments" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.expression._walk(visitor); - this.args.forEach(function(arg){ - arg._walk(visitor); - }); - }); - } -}); - -var AST_New = DEFNODE("New", null, { - $documentation: "An object instantiation. Derives from a function call since it has exactly the same properties" -}, AST_Call); - -var AST_Seq = DEFNODE("Seq", "car cdr", { - $documentation: "A sequence expression (two comma-separated expressions)", - $propdoc: { - car: "[AST_Node] first element in sequence", - cdr: "[AST_Node] second element in sequence" - }, - $cons: function(x, y) { - var seq = new AST_Seq(x); - seq.car = x; - seq.cdr = y; - return seq; - }, - $from_array: function(array) { - if (array.length == 0) return null; - if (array.length == 1) return array[0].clone(); - var list = null; - for (var i = array.length; --i >= 0;) { - list = AST_Seq.cons(array[i], list); - } - var p = list; - while (p) { - if (p.cdr && !p.cdr.cdr) { - p.cdr = p.cdr.car; - break; - } - p = p.cdr; - } - return list; - }, - to_array: function() { - var p = this, a = []; - while (p) { - a.push(p.car); - if (p.cdr && !(p.cdr instanceof AST_Seq)) { - a.push(p.cdr); - break; - } - p = p.cdr; - } - return a; - }, - add: function(node) { - var p = this; - while (p) { - if (!(p.cdr instanceof AST_Seq)) { - var cell = AST_Seq.cons(p.cdr, node); - return p.cdr = cell; - } - p = p.cdr; - } - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.car._walk(visitor); - if (this.cdr) this.cdr._walk(visitor); - }); - } -}); - -var AST_PropAccess = DEFNODE("PropAccess", "expression property", { - $documentation: "Base class for property access expressions, i.e. `a.foo` or `a[\"foo\"]`", - $propdoc: { - expression: "[AST_Node] the “container” expression", - property: "[AST_Node|string] the property to access. For AST_Dot this is always a plain string, while for AST_Sub it's an arbitrary AST_Node" - } -}); - -var AST_Dot = DEFNODE("Dot", null, { - $documentation: "A dotted property access expression", - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.expression._walk(visitor); - }); - } -}, AST_PropAccess); - -var AST_Sub = DEFNODE("Sub", null, { - $documentation: "Index-style property access, i.e. `a[\"foo\"]`", - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.expression._walk(visitor); - this.property._walk(visitor); - }); - } -}, AST_PropAccess); - -var AST_Unary = DEFNODE("Unary", "operator expression", { - $documentation: "Base class for unary expressions", - $propdoc: { - operator: "[string] the operator", - expression: "[AST_Node] expression that this unary operator applies to" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.expression._walk(visitor); - }); - } -}); - -var AST_UnaryPrefix = DEFNODE("UnaryPrefix", null, { - $documentation: "Unary prefix expression, i.e. `typeof i` or `++i`" -}, AST_Unary); - -var AST_UnaryPostfix = DEFNODE("UnaryPostfix", null, { - $documentation: "Unary postfix expression, i.e. `i++`" -}, AST_Unary); - -var AST_Binary = DEFNODE("Binary", "left operator right", { - $documentation: "Binary expression, i.e. `a + b`", - $propdoc: { - left: "[AST_Node] left-hand side expression", - operator: "[string] the operator", - right: "[AST_Node] right-hand side expression" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.left._walk(visitor); - this.right._walk(visitor); - }); - } -}); - -var AST_Conditional = DEFNODE("Conditional", "condition consequent alternative", { - $documentation: "Conditional expression using the ternary operator, i.e. `a ? b : c`", - $propdoc: { - condition: "[AST_Node]", - consequent: "[AST_Node]", - alternative: "[AST_Node]" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.condition._walk(visitor); - this.consequent._walk(visitor); - this.alternative._walk(visitor); - }); - } -}); - -var AST_Assign = DEFNODE("Assign", null, { - $documentation: "An assignment expression — `a = b + 5`", -}, AST_Binary); - -/* -----[ LITERALS ]----- */ - -var AST_Array = DEFNODE("Array", "elements", { - $documentation: "An array literal", - $propdoc: { - elements: "[AST_Node*] array of elements" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.elements.forEach(function(el){ - el._walk(visitor); - }); - }); - } -}); - -var AST_Object = DEFNODE("Object", "properties", { - $documentation: "An object literal", - $propdoc: { - properties: "[AST_ObjectProperty*] array of properties" - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.properties.forEach(function(prop){ - prop._walk(visitor); - }); - }); - } -}); - -var AST_ObjectProperty = DEFNODE("ObjectProperty", "key value", { - $documentation: "Base class for literal object properties", - $propdoc: { - key: "[string] the property name; it's always a plain string in our AST, no matter if it was a string, number or identifier in original code", - value: "[AST_Node] property value. For setters and getters this is an AST_Function." - }, - _walk: function(visitor) { - return visitor._visit(this, function(){ - this.value._walk(visitor); - }); - } -}); - -var AST_ObjectKeyVal = DEFNODE("ObjectKeyVal", null, { - $documentation: "A key: value object property", -}, AST_ObjectProperty); - -var AST_ObjectSetter = DEFNODE("ObjectSetter", null, { - $documentation: "An object setter property", -}, AST_ObjectProperty); - -var AST_ObjectGetter = DEFNODE("ObjectGetter", null, { - $documentation: "An object getter property", -}, AST_ObjectProperty); - -var AST_Symbol = DEFNODE("Symbol", "scope name thedef", { - $propdoc: { - name: "[string] name of this symbol", - scope: "[AST_Scope/S] the current scope (not necessarily the definition scope)", - thedef: "[SymbolDef/S] the definition of this symbol" - }, - $documentation: "Base class for all symbols", -}); - -var AST_SymbolAccessor = DEFNODE("SymbolAccessor", null, { - $documentation: "The name of a property accessor (setter/getter function)" -}, AST_Symbol); - -var AST_SymbolDeclaration = DEFNODE("SymbolDeclaration", "init", { - $documentation: "A declaration symbol (symbol in var/const, function name or argument, symbol in catch)", - $propdoc: { - init: "[AST_Node*/S] array of initializers for this declaration." - } -}, AST_Symbol); - -var AST_SymbolVar = DEFNODE("SymbolVar", null, { - $documentation: "Symbol defining a variable", -}, AST_SymbolDeclaration); - -var AST_SymbolConst = DEFNODE("SymbolConst", null, { - $documentation: "A constant declaration" -}, AST_SymbolDeclaration); - -var AST_SymbolFunarg = DEFNODE("SymbolFunarg", null, { - $documentation: "Symbol naming a function argument", -}, AST_SymbolVar); - -var AST_SymbolDefun = DEFNODE("SymbolDefun", null, { - $documentation: "Symbol defining a function", -}, AST_SymbolDeclaration); - -var AST_SymbolLambda = DEFNODE("SymbolLambda", null, { - $documentation: "Symbol naming a function expression", -}, AST_SymbolDeclaration); - -var AST_SymbolCatch = DEFNODE("SymbolCatch", null, { - $documentation: "Symbol naming the exception in catch", -}, AST_SymbolDeclaration); - -var AST_Label = DEFNODE("Label", "references", { - $documentation: "Symbol naming a label (declaration)", - $propdoc: { - references: "[AST_LabelRef*] a list of nodes referring to this label" - } -}, AST_Symbol); - -var AST_SymbolRef = DEFNODE("SymbolRef", null, { - $documentation: "Reference to some symbol (not definition/declaration)", -}, AST_Symbol); - -var AST_LabelRef = DEFNODE("LabelRef", null, { - $documentation: "Reference to a label symbol", -}, AST_Symbol); - -var AST_This = DEFNODE("This", null, { - $documentation: "The `this` symbol", -}, AST_Symbol); - -var AST_Constant = DEFNODE("Constant", null, { - $documentation: "Base class for all constants", - getValue: function() { - return this.value; - } -}); - -var AST_String = DEFNODE("String", "value", { - $documentation: "A string literal", - $propdoc: { - value: "[string] the contents of this string" - } -}, AST_Constant); - -var AST_Number = DEFNODE("Number", "value", { - $documentation: "A number literal", - $propdoc: { - value: "[number] the numeric value" - } -}, AST_Constant); - -var AST_RegExp = DEFNODE("RegExp", "value", { - $documentation: "A regexp literal", - $propdoc: { - value: "[RegExp] the actual regexp" - } -}, AST_Constant); - -var AST_Atom = DEFNODE("Atom", null, { - $documentation: "Base class for atoms", -}, AST_Constant); - -var AST_Null = DEFNODE("Null", null, { - $documentation: "The `null` atom", - value: null -}, AST_Atom); - -var AST_NaN = DEFNODE("NaN", null, { - $documentation: "The impossible value", - value: 0/0 -}, AST_Atom); - -var AST_Undefined = DEFNODE("Undefined", null, { - $documentation: "The `undefined` value", - value: (function(){}()) -}, AST_Atom); - -var AST_Hole = DEFNODE("Hole", null, { - $documentation: "A hole in an array", - value: (function(){}()) -}, AST_Atom); - -var AST_Infinity = DEFNODE("Infinity", null, { - $documentation: "The `Infinity` value", - value: 1/0 -}, AST_Atom); - -var AST_Boolean = DEFNODE("Boolean", null, { - $documentation: "Base class for booleans", -}, AST_Atom); - -var AST_False = DEFNODE("False", null, { - $documentation: "The `false` atom", - value: false -}, AST_Boolean); - -var AST_True = DEFNODE("True", null, { - $documentation: "The `true` atom", - value: true -}, AST_Boolean); - -/* -----[ TreeWalker ]----- */ - -function TreeWalker(callback) { - this.visit = callback; - this.stack = []; -}; -TreeWalker.prototype = { - _visit: function(node, descend) { - this.stack.push(node); - var ret = this.visit(node, descend ? function(){ - descend.call(node); - } : noop); - if (!ret && descend) { - descend.call(node); - } - this.stack.pop(); - return ret; - }, - parent: function(n) { - return this.stack[this.stack.length - 2 - (n || 0)]; - }, - push: function (node) { - this.stack.push(node); - }, - pop: function() { - return this.stack.pop(); - }, - self: function() { - return this.stack[this.stack.length - 1]; - }, - find_parent: function(type) { - var stack = this.stack; - for (var i = stack.length; --i >= 0;) { - var x = stack[i]; - if (x instanceof type) return x; - } - }, - in_boolean_context: function() { - var stack = this.stack; - var i = stack.length, self = stack[--i]; - while (i > 0) { - var p = stack[--i]; - if ((p instanceof AST_If && p.condition === self) || - (p instanceof AST_Conditional && p.condition === self) || - (p instanceof AST_DWLoop && p.condition === self) || - (p instanceof AST_For && p.condition === self) || - (p instanceof AST_UnaryPrefix && p.operator == "!" && p.expression === self)) - { - return true; - } - if (!(p instanceof AST_Binary && (p.operator == "&&" || p.operator == "||"))) - return false; - self = p; - } - }, - loopcontrol_target: function(label) { - var stack = this.stack; - if (label) { - for (var i = stack.length; --i >= 0;) { - var x = stack[i]; - if (x instanceof AST_LabeledStatement && x.label.name == label.name) { - return x.body; - } - } - } else { - for (var i = stack.length; --i >= 0;) { - var x = stack[i]; - if (x instanceof AST_Switch - || x instanceof AST_For - || x instanceof AST_ForIn - || x instanceof AST_DWLoop) return x; - } - } - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js deleted file mode 100644 index ca23c40..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/compress.js +++ /dev/null @@ -1,1968 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -function Compressor(options, false_by_default) { - if (!(this instanceof Compressor)) - return new Compressor(options, false_by_default); - TreeTransformer.call(this, this.before, this.after); - this.options = defaults(options, { - sequences : !false_by_default, - properties : !false_by_default, - dead_code : !false_by_default, - drop_debugger : !false_by_default, - unsafe : !false_by_default, - unsafe_comps : false, - conditionals : !false_by_default, - comparisons : !false_by_default, - evaluate : !false_by_default, - booleans : !false_by_default, - loops : !false_by_default, - unused : !false_by_default, - hoist_funs : !false_by_default, - hoist_vars : false, - if_return : !false_by_default, - join_vars : !false_by_default, - cascade : !false_by_default, - side_effects : !false_by_default, - - warnings : true, - global_defs : {} - }, true); -}; - -Compressor.prototype = new TreeTransformer; -merge(Compressor.prototype, { - option: function(key) { return this.options[key] }, - warn: function() { - if (this.options.warnings) - AST_Node.warn.apply(AST_Node, arguments); - }, - before: function(node, descend, in_list) { - if (node._squeezed) return node; - if (node instanceof AST_Scope) { - node.drop_unused(this); - node = node.hoist_declarations(this); - } - descend(node, this); - node = node.optimize(this); - if (node instanceof AST_Scope) { - // dead code removal might leave further unused declarations. - // this'll usually save very few bytes, but the performance - // hit seems negligible so I'll just drop it here. - - // no point to repeat warnings. - var save_warnings = this.options.warnings; - this.options.warnings = false; - node.drop_unused(this); - this.options.warnings = save_warnings; - } - node._squeezed = true; - return node; - } -}); - -(function(){ - - function OPT(node, optimizer) { - node.DEFMETHOD("optimize", function(compressor){ - var self = this; - if (self._optimized) return self; - var opt = optimizer(self, compressor); - opt._optimized = true; - if (opt === self) return opt; - return opt.transform(compressor); - }); - }; - - OPT(AST_Node, function(self, compressor){ - return self; - }); - - AST_Node.DEFMETHOD("equivalent_to", function(node){ - // XXX: this is a rather expensive way to test two node's equivalence: - return this.print_to_string() == node.print_to_string(); - }); - - function make_node(ctor, orig, props) { - if (!props) props = {}; - if (orig) { - if (!props.start) props.start = orig.start; - if (!props.end) props.end = orig.end; - } - return new ctor(props); - }; - - function make_node_from_constant(compressor, val, orig) { - // XXX: WIP. - // if (val instanceof AST_Node) return val.transform(new TreeTransformer(null, function(node){ - // if (node instanceof AST_SymbolRef) { - // var scope = compressor.find_parent(AST_Scope); - // var def = scope.find_variable(node); - // node.thedef = def; - // return node; - // } - // })).transform(compressor); - - if (val instanceof AST_Node) return val.transform(compressor); - switch (typeof val) { - case "string": - return make_node(AST_String, orig, { - value: val - }).optimize(compressor); - case "number": - return make_node(isNaN(val) ? AST_NaN : AST_Number, orig, { - value: val - }).optimize(compressor); - case "boolean": - return make_node(val ? AST_True : AST_False, orig); - case "undefined": - return make_node(AST_Undefined, orig).optimize(compressor); - default: - if (val === null) { - return make_node(AST_Null, orig).optimize(compressor); - } - if (val instanceof RegExp) { - return make_node(AST_RegExp, orig).optimize(compressor); - } - throw new Error(string_template("Can't handle constant of type: {type}", { - type: typeof val - })); - } - }; - - function as_statement_array(thing) { - if (thing === null) return []; - if (thing instanceof AST_BlockStatement) return thing.body; - if (thing instanceof AST_EmptyStatement) return []; - if (thing instanceof AST_Statement) return [ thing ]; - throw new Error("Can't convert thing to statement array"); - }; - - function is_empty(thing) { - if (thing === null) return true; - if (thing instanceof AST_EmptyStatement) return true; - if (thing instanceof AST_BlockStatement) return thing.body.length == 0; - return false; - }; - - function loop_body(x) { - if (x instanceof AST_Switch) return x; - if (x instanceof AST_For || x instanceof AST_ForIn || x instanceof AST_DWLoop) { - return (x.body instanceof AST_BlockStatement ? x.body : x); - } - return x; - }; - - function tighten_body(statements, compressor) { - var CHANGED; - do { - CHANGED = false; - statements = eliminate_spurious_blocks(statements); - if (compressor.option("dead_code")) { - statements = eliminate_dead_code(statements, compressor); - } - if (compressor.option("if_return")) { - statements = handle_if_return(statements, compressor); - } - if (compressor.option("sequences")) { - statements = sequencesize(statements, compressor); - } - if (compressor.option("join_vars")) { - statements = join_consecutive_vars(statements, compressor); - } - } while (CHANGED); - return statements; - - function eliminate_spurious_blocks(statements) { - var seen_dirs = []; - return statements.reduce(function(a, stat){ - if (stat instanceof AST_BlockStatement) { - CHANGED = true; - a.push.apply(a, eliminate_spurious_blocks(stat.body)); - } else if (stat instanceof AST_EmptyStatement) { - CHANGED = true; - } else if (stat instanceof AST_Directive) { - if (seen_dirs.indexOf(stat.value) < 0) { - a.push(stat); - seen_dirs.push(stat.value); - } else { - CHANGED = true; - } - } else { - a.push(stat); - } - return a; - }, []); - }; - - function handle_if_return(statements, compressor) { - var self = compressor.self(); - var in_lambda = self instanceof AST_Lambda; - var ret = []; - loop: for (var i = statements.length; --i >= 0;) { - var stat = statements[i]; - switch (true) { - case (in_lambda && stat instanceof AST_Return && !stat.value && ret.length == 0): - CHANGED = true; - // note, ret.length is probably always zero - // because we drop unreachable code before this - // step. nevertheless, it's good to check. - continue loop; - case stat instanceof AST_If: - if (stat.body instanceof AST_Return) { - //--- - // pretty silly case, but: - // if (foo()) return; return; ==> foo(); return; - if (((in_lambda && ret.length == 0) - || (ret[0] instanceof AST_Return && !ret[0].value)) - && !stat.body.value && !stat.alternative) { - CHANGED = true; - var cond = make_node(AST_SimpleStatement, stat.condition, { - body: stat.condition - }); - ret.unshift(cond); - continue loop; - } - //--- - // if (foo()) return x; return y; ==> return foo() ? x : y; - if (ret[0] instanceof AST_Return && stat.body.value && ret[0].value && !stat.alternative) { - CHANGED = true; - stat = stat.clone(); - stat.alternative = ret[0]; - ret[0] = stat.transform(compressor); - continue loop; - } - //--- - // if (foo()) return x; [ return ; ] ==> return foo() ? x : undefined; - if ((ret.length == 0 || ret[0] instanceof AST_Return) && stat.body.value && !stat.alternative && in_lambda) { - CHANGED = true; - stat = stat.clone(); - stat.alternative = ret[0] || make_node(AST_Return, stat, { - value: make_node(AST_Undefined, stat) - }); - ret[0] = stat.transform(compressor); - continue loop; - } - //--- - // if (foo()) return; [ else x... ]; y... ==> if (!foo()) { x...; y... } - if (!stat.body.value && in_lambda) { - CHANGED = true; - stat = stat.clone(); - stat.condition = stat.condition.negate(compressor); - stat.body = make_node(AST_BlockStatement, stat, { - body: as_statement_array(stat.alternative).concat(ret) - }); - stat.alternative = null; - ret = [ stat.transform(compressor) ]; - continue loop; - } - //--- - if (ret.length == 1 && in_lambda && ret[0] instanceof AST_SimpleStatement - && (!stat.alternative || stat.alternative instanceof AST_SimpleStatement)) { - CHANGED = true; - ret.push(make_node(AST_Return, ret[0], { - value: make_node(AST_Undefined, ret[0]) - }).transform(compressor)); - ret = as_statement_array(stat.alternative).concat(ret); - ret.unshift(stat); - continue loop; - } - } - - var ab = aborts(stat.body); - var lct = ab instanceof AST_LoopControl ? compressor.loopcontrol_target(ab.label) : null; - if (ab && ((ab instanceof AST_Return && !ab.value && in_lambda) - || (ab instanceof AST_Continue && self === loop_body(lct)) - || (ab instanceof AST_Break && lct instanceof AST_BlockStatement && self === lct))) { - if (ab.label) { - remove(ab.label.thedef.references, ab.label); - } - CHANGED = true; - var body = as_statement_array(stat.body).slice(0, -1); - stat = stat.clone(); - stat.condition = stat.condition.negate(compressor); - stat.body = make_node(AST_BlockStatement, stat, { - body: ret - }); - stat.alternative = make_node(AST_BlockStatement, stat, { - body: body - }); - ret = [ stat.transform(compressor) ]; - continue loop; - } - - var ab = aborts(stat.alternative); - var lct = ab instanceof AST_LoopControl ? compressor.loopcontrol_target(ab.label) : null; - if (ab && ((ab instanceof AST_Return && !ab.value && in_lambda) - || (ab instanceof AST_Continue && self === loop_body(lct)) - || (ab instanceof AST_Break && lct instanceof AST_BlockStatement && self === lct))) { - if (ab.label) { - remove(ab.label.thedef.references, ab.label); - } - CHANGED = true; - stat = stat.clone(); - stat.body = make_node(AST_BlockStatement, stat.body, { - body: as_statement_array(stat.body).concat(ret) - }); - stat.alternative = make_node(AST_BlockStatement, stat.alternative, { - body: as_statement_array(stat.alternative).slice(0, -1) - }); - ret = [ stat.transform(compressor) ]; - continue loop; - } - - ret.unshift(stat); - break; - default: - ret.unshift(stat); - break; - } - } - return ret; - }; - - function eliminate_dead_code(statements, compressor) { - var has_quit = false; - var orig = statements.length; - var self = compressor.self(); - statements = statements.reduce(function(a, stat){ - if (has_quit) { - extract_declarations_from_unreachable_code(compressor, stat, a); - } else { - if (stat instanceof AST_LoopControl) { - var lct = compressor.loopcontrol_target(stat.label); - if ((stat instanceof AST_Break - && lct instanceof AST_BlockStatement - && loop_body(lct) === self) || (stat instanceof AST_Continue - && loop_body(lct) === self)) { - if (stat.label) { - remove(stat.label.thedef.references, stat.label); - } - } else { - a.push(stat); - } - } else { - a.push(stat); - } - if (aborts(stat)) has_quit = true; - } - return a; - }, []); - CHANGED = statements.length != orig; - return statements; - }; - - function sequencesize(statements, compressor) { - if (statements.length < 2) return statements; - var seq = [], ret = []; - function push_seq() { - seq = AST_Seq.from_array(seq); - if (seq) ret.push(make_node(AST_SimpleStatement, seq, { - body: seq - })); - seq = []; - }; - statements.forEach(function(stat){ - if (stat instanceof AST_SimpleStatement) seq.push(stat.body); - else push_seq(), ret.push(stat); - }); - push_seq(); - ret = sequencesize_2(ret, compressor); - CHANGED = ret.length != statements.length; - return ret; - }; - - function sequencesize_2(statements, compressor) { - function cons_seq(right) { - ret.pop(); - var left = prev.body; - if (left instanceof AST_Seq) { - left.add(right); - } else { - left = AST_Seq.cons(left, right); - } - return left.transform(compressor); - }; - var ret = [], prev = null; - statements.forEach(function(stat){ - if (prev) { - if (stat instanceof AST_For) { - var opera = {}; - try { - prev.body.walk(new TreeWalker(function(node){ - if (node instanceof AST_Binary && node.operator == "in") - throw opera; - })); - if (stat.init && !(stat.init instanceof AST_Definitions)) { - stat.init = cons_seq(stat.init); - } - else if (!stat.init) { - stat.init = prev.body; - ret.pop(); - } - } catch(ex) { - if (ex !== opera) throw ex; - } - } - else if (stat instanceof AST_If) { - stat.condition = cons_seq(stat.condition); - } - else if (stat instanceof AST_With) { - stat.expression = cons_seq(stat.expression); - } - else if (stat instanceof AST_Exit && stat.value) { - stat.value = cons_seq(stat.value); - } - else if (stat instanceof AST_Exit) { - stat.value = cons_seq(make_node(AST_Undefined, stat)); - } - else if (stat instanceof AST_Switch) { - stat.expression = cons_seq(stat.expression); - } - } - ret.push(stat); - prev = stat instanceof AST_SimpleStatement ? stat : null; - }); - return ret; - }; - - function join_consecutive_vars(statements, compressor) { - var prev = null; - return statements.reduce(function(a, stat){ - if (stat instanceof AST_Definitions && prev && prev.TYPE == stat.TYPE) { - prev.definitions = prev.definitions.concat(stat.definitions); - CHANGED = true; - } - else if (stat instanceof AST_For - && prev instanceof AST_Definitions - && (!stat.init || stat.init.TYPE == prev.TYPE)) { - CHANGED = true; - a.pop(); - if (stat.init) { - stat.init.definitions = prev.definitions.concat(stat.init.definitions); - } else { - stat.init = prev; - } - a.push(stat); - prev = stat; - } - else { - prev = stat; - a.push(stat); - } - return a; - }, []); - }; - - }; - - function extract_declarations_from_unreachable_code(compressor, stat, target) { - compressor.warn("Dropping unreachable code [{file}:{line},{col}]", stat.start); - stat.walk(new TreeWalker(function(node){ - if (node instanceof AST_Definitions) { - compressor.warn("Declarations in unreachable code! [{file}:{line},{col}]", node.start); - node.remove_initializers(); - target.push(node); - return true; - } - if (node instanceof AST_Defun) { - target.push(node); - return true; - } - if (node instanceof AST_Scope) { - return true; - } - })); - }; - - /* -----[ boolean/negation helpers ]----- */ - - // methods to determine whether an expression has a boolean result type - (function (def){ - var unary_bool = [ "!", "delete" ]; - var binary_bool = [ "in", "instanceof", "==", "!=", "===", "!==", "<", "<=", ">=", ">" ]; - def(AST_Node, function(){ return false }); - def(AST_UnaryPrefix, function(){ - return member(this.operator, unary_bool); - }); - def(AST_Binary, function(){ - return member(this.operator, binary_bool) || - ( (this.operator == "&&" || this.operator == "||") && - this.left.is_boolean() && this.right.is_boolean() ); - }); - def(AST_Conditional, function(){ - return this.consequent.is_boolean() && this.alternative.is_boolean(); - }); - def(AST_Assign, function(){ - return this.operator == "=" && this.right.is_boolean(); - }); - def(AST_Seq, function(){ - return this.cdr.is_boolean(); - }); - def(AST_True, function(){ return true }); - def(AST_False, function(){ return true }); - })(function(node, func){ - node.DEFMETHOD("is_boolean", func); - }); - - // methods to determine if an expression has a string result type - (function (def){ - def(AST_Node, function(){ return false }); - def(AST_String, function(){ return true }); - def(AST_UnaryPrefix, function(){ - return this.operator == "typeof"; - }); - def(AST_Binary, function(compressor){ - return this.operator == "+" && - (this.left.is_string(compressor) || this.right.is_string(compressor)); - }); - def(AST_Assign, function(compressor){ - return (this.operator == "=" || this.operator == "+=") && this.right.is_string(compressor); - }); - def(AST_Seq, function(compressor){ - return this.cdr.is_string(compressor); - }); - def(AST_Conditional, function(compressor){ - return this.consequent.is_string(compressor) && this.alternative.is_string(compressor); - }); - def(AST_Call, function(compressor){ - return compressor.option("unsafe") - && this.expression instanceof AST_SymbolRef - && this.expression.name == "String" - && this.expression.undeclared(); - }); - })(function(node, func){ - node.DEFMETHOD("is_string", func); - }); - - function best_of(ast1, ast2) { - return ast1.print_to_string().length > - ast2.print_to_string().length - ? ast2 : ast1; - }; - - // methods to evaluate a constant expression - (function (def){ - // The evaluate method returns an array with one or two - // elements. If the node has been successfully reduced to a - // constant, then the second element tells us the value; - // otherwise the second element is missing. The first element - // of the array is always an AST_Node descendant; when - // evaluation was successful it's a node that represents the - // constant; otherwise it's the original node. - AST_Node.DEFMETHOD("evaluate", function(compressor){ - if (!compressor.option("evaluate")) return [ this ]; - try { - var val = this._eval(), ast = make_node_from_constant(compressor, val, this); - return [ best_of(ast, this), val ]; - } catch(ex) { - if (ex !== def) throw ex; - return [ this ]; - } - }); - def(AST_Statement, function(){ - throw new Error(string_template("Cannot evaluate a statement [{file}:{line},{col}]", this.start)); - }); - def(AST_Function, function(){ - // XXX: AST_Function inherits from AST_Scope, which itself - // inherits from AST_Statement; however, an AST_Function - // isn't really a statement. This could byte in other - // places too. :-( Wish JS had multiple inheritance. - return [ this ]; - }); - function ev(node) { - return node._eval(); - }; - def(AST_Node, function(){ - throw def; // not constant - }); - def(AST_Constant, function(){ - return this.getValue(); - }); - def(AST_UnaryPrefix, function(){ - var e = this.expression; - switch (this.operator) { - case "!": return !ev(e); - case "typeof": return typeof ev(e); - case "void": return void ev(e); - case "~": return ~ev(e); - case "-": - e = ev(e); - if (e === 0) throw def; - return -e; - case "+": return +ev(e); - } - throw def; - }); - def(AST_Binary, function(){ - var left = this.left, right = this.right; - switch (this.operator) { - case "&&" : return ev(left) && ev(right); - case "||" : return ev(left) || ev(right); - case "|" : return ev(left) | ev(right); - case "&" : return ev(left) & ev(right); - case "^" : return ev(left) ^ ev(right); - case "+" : return ev(left) + ev(right); - case "*" : return ev(left) * ev(right); - case "/" : return ev(left) / ev(right); - case "%" : return ev(left) % ev(right); - case "-" : return ev(left) - ev(right); - case "<<" : return ev(left) << ev(right); - case ">>" : return ev(left) >> ev(right); - case ">>>" : return ev(left) >>> ev(right); - case "==" : return ev(left) == ev(right); - case "===" : return ev(left) === ev(right); - case "!=" : return ev(left) != ev(right); - case "!==" : return ev(left) !== ev(right); - case "<" : return ev(left) < ev(right); - case "<=" : return ev(left) <= ev(right); - case ">" : return ev(left) > ev(right); - case ">=" : return ev(left) >= ev(right); - case "in" : return ev(left) in ev(right); - case "instanceof" : return ev(left) instanceof ev(right); - } - throw def; - }); - def(AST_Conditional, function(){ - return ev(this.condition) - ? ev(this.consequent) - : ev(this.alternative); - }); - def(AST_SymbolRef, function(){ - var d = this.definition(); - if (d && d.constant && d.init) return ev(d.init); - throw def; - }); - })(function(node, func){ - node.DEFMETHOD("_eval", func); - }); - - // method to negate an expression - (function(def){ - function basic_negation(exp) { - return make_node(AST_UnaryPrefix, exp, { - operator: "!", - expression: exp - }); - }; - def(AST_Node, function(){ - return basic_negation(this); - }); - def(AST_Statement, function(){ - throw new Error("Cannot negate a statement"); - }); - def(AST_Function, function(){ - return basic_negation(this); - }); - def(AST_UnaryPrefix, function(){ - if (this.operator == "!") - return this.expression; - return basic_negation(this); - }); - def(AST_Seq, function(compressor){ - var self = this.clone(); - self.cdr = self.cdr.negate(compressor); - return self; - }); - def(AST_Conditional, function(compressor){ - var self = this.clone(); - self.consequent = self.consequent.negate(compressor); - self.alternative = self.alternative.negate(compressor); - return best_of(basic_negation(this), self); - }); - def(AST_Binary, function(compressor){ - var self = this.clone(), op = this.operator; - if (compressor.option("unsafe_comps")) { - switch (op) { - case "<=" : self.operator = ">" ; return self; - case "<" : self.operator = ">=" ; return self; - case ">=" : self.operator = "<" ; return self; - case ">" : self.operator = "<=" ; return self; - } - } - switch (op) { - case "==" : self.operator = "!="; return self; - case "!=" : self.operator = "=="; return self; - case "===": self.operator = "!=="; return self; - case "!==": self.operator = "==="; return self; - case "&&": - self.operator = "||"; - self.left = self.left.negate(compressor); - self.right = self.right.negate(compressor); - return best_of(basic_negation(this), self); - case "||": - self.operator = "&&"; - self.left = self.left.negate(compressor); - self.right = self.right.negate(compressor); - return best_of(basic_negation(this), self); - } - return basic_negation(this); - }); - })(function(node, func){ - node.DEFMETHOD("negate", function(compressor){ - return func.call(this, compressor); - }); - }); - - // determine if expression has side effects - (function(def){ - def(AST_Node, function(){ return true }); - - def(AST_EmptyStatement, function(){ return false }); - def(AST_Constant, function(){ return false }); - def(AST_This, function(){ return false }); - - def(AST_Block, function(){ - for (var i = this.body.length; --i >= 0;) { - if (this.body[i].has_side_effects()) - return true; - } - return false; - }); - - def(AST_SimpleStatement, function(){ - return this.body.has_side_effects(); - }); - def(AST_Defun, function(){ return true }); - def(AST_Function, function(){ return false }); - def(AST_Binary, function(){ - return this.left.has_side_effects() - || this.right.has_side_effects(); - }); - def(AST_Assign, function(){ return true }); - def(AST_Conditional, function(){ - return this.condition.has_side_effects() - || this.consequent.has_side_effects() - || this.alternative.has_side_effects(); - }); - def(AST_Unary, function(){ - return this.operator == "delete" - || this.operator == "++" - || this.operator == "--" - || this.expression.has_side_effects(); - }); - def(AST_SymbolRef, function(){ return false }); - def(AST_Object, function(){ - for (var i = this.properties.length; --i >= 0;) - if (this.properties[i].has_side_effects()) - return true; - return false; - }); - def(AST_ObjectProperty, function(){ - return this.value.has_side_effects(); - }); - def(AST_Array, function(){ - for (var i = this.elements.length; --i >= 0;) - if (this.elements[i].has_side_effects()) - return true; - return false; - }); - // def(AST_Dot, function(){ - // return this.expression.has_side_effects(); - // }); - // def(AST_Sub, function(){ - // return this.expression.has_side_effects() - // || this.property.has_side_effects(); - // }); - def(AST_PropAccess, function(){ - return true; - }); - def(AST_Seq, function(){ - return this.car.has_side_effects() - || this.cdr.has_side_effects(); - }); - })(function(node, func){ - node.DEFMETHOD("has_side_effects", func); - }); - - // tell me if a statement aborts - function aborts(thing) { - return thing && thing.aborts(); - }; - (function(def){ - def(AST_Statement, function(){ return null }); - def(AST_Jump, function(){ return this }); - function block_aborts(){ - var n = this.body.length; - return n > 0 && aborts(this.body[n - 1]); - }; - def(AST_BlockStatement, block_aborts); - def(AST_SwitchBranch, block_aborts); - def(AST_If, function(){ - return this.alternative && aborts(this.body) && aborts(this.alternative); - }); - })(function(node, func){ - node.DEFMETHOD("aborts", func); - }); - - /* -----[ optimizers ]----- */ - - OPT(AST_Directive, function(self, compressor){ - if (self.scope.has_directive(self.value) !== self.scope) { - return make_node(AST_EmptyStatement, self); - } - return self; - }); - - OPT(AST_Debugger, function(self, compressor){ - if (compressor.option("drop_debugger")) - return make_node(AST_EmptyStatement, self); - return self; - }); - - OPT(AST_LabeledStatement, function(self, compressor){ - if (self.body instanceof AST_Break - && compressor.loopcontrol_target(self.body.label) === self.body) { - return make_node(AST_EmptyStatement, self); - } - return self.label.references.length == 0 ? self.body : self; - }); - - OPT(AST_Block, function(self, compressor){ - self.body = tighten_body(self.body, compressor); - return self; - }); - - OPT(AST_BlockStatement, function(self, compressor){ - self.body = tighten_body(self.body, compressor); - switch (self.body.length) { - case 1: return self.body[0]; - case 0: return make_node(AST_EmptyStatement, self); - } - return self; - }); - - AST_Scope.DEFMETHOD("drop_unused", function(compressor){ - var self = this; - if (compressor.option("unused") - && !(self instanceof AST_Toplevel) - && !self.uses_eval - ) { - var in_use = []; - var initializations = new Dictionary(); - // pass 1: find out which symbols are directly used in - // this scope (not in nested scopes). - var scope = this; - var tw = new TreeWalker(function(node, descend){ - if (node !== self) { - if (node instanceof AST_Defun) { - initializations.add(node.name.name, node); - return true; // don't go in nested scopes - } - if (node instanceof AST_Definitions && scope === self) { - node.definitions.forEach(function(def){ - if (def.value) { - initializations.add(def.name.name, def.value); - if (def.value.has_side_effects()) { - def.value.walk(tw); - } - } - }); - return true; - } - if (node instanceof AST_SymbolRef) { - push_uniq(in_use, node.definition()); - return true; - } - if (node instanceof AST_Scope) { - var save_scope = scope; - scope = node; - descend(); - scope = save_scope; - return true; - } - } - }); - self.walk(tw); - // pass 2: for every used symbol we need to walk its - // initialization code to figure out if it uses other - // symbols (that may not be in_use). - for (var i = 0; i < in_use.length; ++i) { - in_use[i].orig.forEach(function(decl){ - // undeclared globals will be instanceof AST_SymbolRef - var init = initializations.get(decl.name); - if (init) init.forEach(function(init){ - var tw = new TreeWalker(function(node){ - if (node instanceof AST_SymbolRef) { - push_uniq(in_use, node.definition()); - } - }); - init.walk(tw); - }); - }); - } - // pass 3: we should drop declarations not in_use - var tt = new TreeTransformer( - function before(node, descend, in_list) { - if (node instanceof AST_Lambda) { - for (var a = node.argnames, i = a.length; --i >= 0;) { - var sym = a[i]; - if (sym.unreferenced()) { - a.pop(); - compressor.warn("Dropping unused function argument {name} [{file}:{line},{col}]", { - name : sym.name, - file : sym.start.file, - line : sym.start.line, - col : sym.start.col - }); - } - else break; - } - } - if (node instanceof AST_Defun && node !== self) { - if (!member(node.name.definition(), in_use)) { - compressor.warn("Dropping unused function {name} [{file}:{line},{col}]", { - name : node.name.name, - file : node.name.start.file, - line : node.name.start.line, - col : node.name.start.col - }); - return make_node(AST_EmptyStatement, node); - } - return node; - } - if (node instanceof AST_Definitions && !(tt.parent() instanceof AST_ForIn)) { - var def = node.definitions.filter(function(def){ - if (member(def.name.definition(), in_use)) return true; - var w = { - name : def.name.name, - file : def.name.start.file, - line : def.name.start.line, - col : def.name.start.col - }; - if (def.value && def.value.has_side_effects()) { - def._unused_side_effects = true; - compressor.warn("Side effects in initialization of unused variable {name} [{file}:{line},{col}]", w); - return true; - } - compressor.warn("Dropping unused variable {name} [{file}:{line},{col}]", w); - return false; - }); - // place uninitialized names at the start - def = mergeSort(def, function(a, b){ - if (!a.value && b.value) return -1; - if (!b.value && a.value) return 1; - return 0; - }); - // for unused names whose initialization has - // side effects, we can cascade the init. code - // into the next one, or next statement. - var side_effects = []; - for (var i = 0; i < def.length;) { - var x = def[i]; - if (x._unused_side_effects) { - side_effects.push(x.value); - def.splice(i, 1); - } else { - if (side_effects.length > 0) { - side_effects.push(x.value); - x.value = AST_Seq.from_array(side_effects); - side_effects = []; - } - ++i; - } - } - if (side_effects.length > 0) { - side_effects = make_node(AST_BlockStatement, node, { - body: [ make_node(AST_SimpleStatement, node, { - body: AST_Seq.from_array(side_effects) - }) ] - }); - } else { - side_effects = null; - } - if (def.length == 0 && !side_effects) { - return make_node(AST_EmptyStatement, node); - } - if (def.length == 0) { - return side_effects; - } - node.definitions = def; - if (side_effects) { - side_effects.body.unshift(node); - node = side_effects; - } - return node; - } - if (node instanceof AST_For && node.init instanceof AST_BlockStatement) { - descend(node, this); - // certain combination of unused name + side effect leads to: - // https://github.com/mishoo/UglifyJS2/issues/44 - // that's an invalid AST. - // We fix it at this stage by moving the `var` outside the `for`. - var body = node.init.body.slice(0, -1); - node.init = node.init.body.slice(-1)[0].body; - body.push(node); - return in_list ? MAP.splice(body) : make_node(AST_BlockStatement, node, { - body: body - }); - } - if (node instanceof AST_Scope && node !== self) - return node; - } - ); - self.transform(tt); - } - }); - - AST_Scope.DEFMETHOD("hoist_declarations", function(compressor){ - var hoist_funs = compressor.option("hoist_funs"); - var hoist_vars = compressor.option("hoist_vars"); - var self = this; - if (hoist_funs || hoist_vars) { - var dirs = []; - var hoisted = []; - var vars = new Dictionary(), vars_found = 0, var_decl = 0; - // let's count var_decl first, we seem to waste a lot of - // space if we hoist `var` when there's only one. - self.walk(new TreeWalker(function(node){ - if (node instanceof AST_Scope && node !== self) - return true; - if (node instanceof AST_Var) { - ++var_decl; - return true; - } - })); - hoist_vars = hoist_vars && var_decl > 1; - var tt = new TreeTransformer( - function before(node) { - if (node !== self) { - if (node instanceof AST_Directive) { - dirs.push(node); - return make_node(AST_EmptyStatement, node); - } - if (node instanceof AST_Defun && hoist_funs) { - hoisted.push(node); - return make_node(AST_EmptyStatement, node); - } - if (node instanceof AST_Var && hoist_vars) { - node.definitions.forEach(function(def){ - vars.set(def.name.name, def); - ++vars_found; - }); - var seq = node.to_assignments(); - var p = tt.parent(); - if (p instanceof AST_ForIn && p.init === node) { - if (seq == null) return node.definitions[0].name; - return seq; - } - if (p instanceof AST_For && p.init === node) { - return seq; - } - if (!seq) return make_node(AST_EmptyStatement, node); - return make_node(AST_SimpleStatement, node, { - body: seq - }); - } - if (node instanceof AST_Scope) - return node; // to avoid descending in nested scopes - } - } - ); - self = self.transform(tt); - if (vars_found > 0) { - // collect only vars which don't show up in self's arguments list - var defs = []; - vars.each(function(def, name){ - if (self instanceof AST_Lambda - && find_if(function(x){ return x.name == def.name.name }, - self.argnames)) { - vars.del(name); - } else { - def = def.clone(); - def.value = null; - defs.push(def); - vars.set(name, def); - } - }); - if (defs.length > 0) { - // try to merge in assignments - for (var i = 0; i < self.body.length;) { - if (self.body[i] instanceof AST_SimpleStatement) { - var expr = self.body[i].body, sym, assign; - if (expr instanceof AST_Assign - && expr.operator == "=" - && (sym = expr.left) instanceof AST_Symbol - && vars.has(sym.name)) - { - var def = vars.get(sym.name); - if (def.value) break; - def.value = expr.right; - remove(defs, def); - defs.push(def); - self.body.splice(i, 1); - continue; - } - if (expr instanceof AST_Seq - && (assign = expr.car) instanceof AST_Assign - && assign.operator == "=" - && (sym = assign.left) instanceof AST_Symbol - && vars.has(sym.name)) - { - var def = vars.get(sym.name); - if (def.value) break; - def.value = assign.right; - remove(defs, def); - defs.push(def); - self.body[i].body = expr.cdr; - continue; - } - } - if (self.body[i] instanceof AST_EmptyStatement) { - self.body.splice(i, 1); - continue; - } - if (self.body[i] instanceof AST_BlockStatement) { - var tmp = [ i, 1 ].concat(self.body[i].body); - self.body.splice.apply(self.body, tmp); - continue; - } - break; - } - defs = make_node(AST_Var, self, { - definitions: defs - }); - hoisted.push(defs); - }; - } - self.body = dirs.concat(hoisted, self.body); - } - return self; - }); - - OPT(AST_SimpleStatement, function(self, compressor){ - if (compressor.option("side_effects")) { - if (!self.body.has_side_effects()) { - compressor.warn("Dropping side-effect-free statement [{file}:{line},{col}]", self.start); - return make_node(AST_EmptyStatement, self); - } - } - return self; - }); - - OPT(AST_DWLoop, function(self, compressor){ - var cond = self.condition.evaluate(compressor); - self.condition = cond[0]; - if (!compressor.option("loops")) return self; - if (cond.length > 1) { - if (cond[1]) { - return make_node(AST_For, self, { - body: self.body - }); - } else if (self instanceof AST_While) { - if (compressor.option("dead_code")) { - var a = []; - extract_declarations_from_unreachable_code(compressor, self.body, a); - return make_node(AST_BlockStatement, self, { body: a }); - } - } else { - return self.body; - } - } - return self; - }); - - function if_break_in_loop(self, compressor) { - function drop_it(rest) { - rest = as_statement_array(rest); - if (self.body instanceof AST_BlockStatement) { - self.body = self.body.clone(); - self.body.body = rest.concat(self.body.body.slice(1)); - self.body = self.body.transform(compressor); - } else { - self.body = make_node(AST_BlockStatement, self.body, { - body: rest - }).transform(compressor); - } - if_break_in_loop(self, compressor); - } - var first = self.body instanceof AST_BlockStatement ? self.body.body[0] : self.body; - if (first instanceof AST_If) { - if (first.body instanceof AST_Break - && compressor.loopcontrol_target(first.body.label) === self) { - if (self.condition) { - self.condition = make_node(AST_Binary, self.condition, { - left: self.condition, - operator: "&&", - right: first.condition.negate(compressor), - }); - } else { - self.condition = first.condition.negate(compressor); - } - drop_it(first.alternative); - } - else if (first.alternative instanceof AST_Break - && compressor.loopcontrol_target(first.alternative.label) === self) { - if (self.condition) { - self.condition = make_node(AST_Binary, self.condition, { - left: self.condition, - operator: "&&", - right: first.condition, - }); - } else { - self.condition = first.condition; - } - drop_it(first.body); - } - } - }; - - OPT(AST_While, function(self, compressor) { - if (!compressor.option("loops")) return self; - self = AST_DWLoop.prototype.optimize.call(self, compressor); - if (self instanceof AST_While) { - if_break_in_loop(self, compressor); - self = make_node(AST_For, self, self).transform(compressor); - } - return self; - }); - - OPT(AST_For, function(self, compressor){ - var cond = self.condition; - if (cond) { - cond = cond.evaluate(compressor); - self.condition = cond[0]; - } - if (!compressor.option("loops")) return self; - if (cond) { - if (cond.length > 1 && !cond[1]) { - if (compressor.option("dead_code")) { - var a = []; - if (self.init instanceof AST_Statement) { - a.push(self.init); - } - else if (self.init) { - a.push(make_node(AST_SimpleStatement, self.init, { - body: self.init - })); - } - extract_declarations_from_unreachable_code(compressor, self.body, a); - return make_node(AST_BlockStatement, self, { body: a }); - } - } - } - if_break_in_loop(self, compressor); - return self; - }); - - OPT(AST_If, function(self, compressor){ - if (!compressor.option("conditionals")) return self; - // if condition can be statically determined, warn and drop - // one of the blocks. note, statically determined implies - // “has no side effects”; also it doesn't work for cases like - // `x && true`, though it probably should. - var cond = self.condition.evaluate(compressor); - self.condition = cond[0]; - if (cond.length > 1) { - if (cond[1]) { - compressor.warn("Condition always true [{file}:{line},{col}]", self.condition.start); - if (compressor.option("dead_code")) { - var a = []; - if (self.alternative) { - extract_declarations_from_unreachable_code(compressor, self.alternative, a); - } - a.push(self.body); - return make_node(AST_BlockStatement, self, { body: a }).transform(compressor); - } - } else { - compressor.warn("Condition always false [{file}:{line},{col}]", self.condition.start); - if (compressor.option("dead_code")) { - var a = []; - extract_declarations_from_unreachable_code(compressor, self.body, a); - if (self.alternative) a.push(self.alternative); - return make_node(AST_BlockStatement, self, { body: a }).transform(compressor); - } - } - } - if (is_empty(self.alternative)) self.alternative = null; - var negated = self.condition.negate(compressor); - var negated_is_best = best_of(self.condition, negated) === negated; - if (self.alternative && negated_is_best) { - negated_is_best = false; // because we already do the switch here. - self.condition = negated; - var tmp = self.body; - self.body = self.alternative || make_node(AST_EmptyStatement); - self.alternative = tmp; - } - if (is_empty(self.body) && is_empty(self.alternative)) { - return make_node(AST_SimpleStatement, self.condition, { - body: self.condition - }).transform(compressor); - } - if (self.body instanceof AST_SimpleStatement - && self.alternative instanceof AST_SimpleStatement) { - return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Conditional, self, { - condition : self.condition, - consequent : self.body.body, - alternative : self.alternative.body - }) - }).transform(compressor); - } - if (is_empty(self.alternative) && self.body instanceof AST_SimpleStatement) { - if (negated_is_best) return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Binary, self, { - operator : "||", - left : negated, - right : self.body.body - }) - }).transform(compressor); - return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Binary, self, { - operator : "&&", - left : self.condition, - right : self.body.body - }) - }).transform(compressor); - } - if (self.body instanceof AST_EmptyStatement - && self.alternative - && self.alternative instanceof AST_SimpleStatement) { - return make_node(AST_SimpleStatement, self, { - body: make_node(AST_Binary, self, { - operator : "||", - left : self.condition, - right : self.alternative.body - }) - }).transform(compressor); - } - if (self.body instanceof AST_Exit - && self.alternative instanceof AST_Exit - && self.body.TYPE == self.alternative.TYPE) { - return make_node(self.body.CTOR, self, { - value: make_node(AST_Conditional, self, { - condition : self.condition, - consequent : self.body.value || make_node(AST_Undefined, self.body).optimize(compressor), - alternative : self.alternative.value || make_node(AST_Undefined, self.alternative).optimize(compressor) - }) - }).transform(compressor); - } - if (self.body instanceof AST_If - && !self.body.alternative - && !self.alternative) { - self.condition = make_node(AST_Binary, self.condition, { - operator: "&&", - left: self.condition, - right: self.body.condition - }).transform(compressor); - self.body = self.body.body; - } - if (aborts(self.body)) { - if (self.alternative) { - var alt = self.alternative; - self.alternative = null; - return make_node(AST_BlockStatement, self, { - body: [ self, alt ] - }).transform(compressor); - } - } - if (aborts(self.alternative)) { - var body = self.body; - self.body = self.alternative; - self.condition = negated_is_best ? negated : self.condition.negate(compressor); - self.alternative = null; - return make_node(AST_BlockStatement, self, { - body: [ self, body ] - }).transform(compressor); - } - return self; - }); - - OPT(AST_Switch, function(self, compressor){ - if (self.body.length == 0 && compressor.option("conditionals")) { - return make_node(AST_SimpleStatement, self, { - body: self.expression - }).transform(compressor); - } - var last_branch = self.body[self.body.length - 1]; - if (last_branch) { - var stat = last_branch.body[last_branch.body.length - 1]; // last statement - if (stat instanceof AST_Break && loop_body(compressor.loopcontrol_target(stat.label)) === self) - last_branch.body.pop(); - } - var exp = self.expression.evaluate(compressor); - out: if (exp.length == 2) try { - // constant expression - self.expression = exp[0]; - if (!compressor.option("dead_code")) break out; - var value = exp[1]; - var in_if = false; - var in_block = false; - var started = false; - var stopped = false; - var ruined = false; - var tt = new TreeTransformer(function(node, descend, in_list){ - if (node instanceof AST_Lambda || node instanceof AST_SimpleStatement) { - // no need to descend these node types - return node; - } - else if (node instanceof AST_Switch && node === self) { - node = node.clone(); - descend(node, this); - return ruined ? node : make_node(AST_BlockStatement, node, { - body: node.body.reduce(function(a, branch){ - return a.concat(branch.body); - }, []) - }).transform(compressor); - } - else if (node instanceof AST_If || node instanceof AST_Try) { - var save = in_if; - in_if = !in_block; - descend(node, this); - in_if = save; - return node; - } - else if (node instanceof AST_StatementWithBody || node instanceof AST_Switch) { - var save = in_block; - in_block = true; - descend(node, this); - in_block = save; - return node; - } - else if (node instanceof AST_Break && this.loopcontrol_target(node.label) === self) { - if (in_if) { - ruined = true; - return node; - } - if (in_block) return node; - stopped = true; - return in_list ? MAP.skip : make_node(AST_EmptyStatement, node); - } - else if (node instanceof AST_SwitchBranch && this.parent() === self) { - if (stopped) return MAP.skip; - if (node instanceof AST_Case) { - var exp = node.expression.evaluate(compressor); - if (exp.length < 2) { - // got a case with non-constant expression, baling out - throw self; - } - if (exp[1] === value || started) { - started = true; - if (aborts(node)) stopped = true; - descend(node, this); - return node; - } - return MAP.skip; - } - descend(node, this); - return node; - } - }); - tt.stack = compressor.stack.slice(); // so that's able to see parent nodes - self = self.transform(tt); - } catch(ex) { - if (ex !== self) throw ex; - } - return self; - }); - - OPT(AST_Case, function(self, compressor){ - self.body = tighten_body(self.body, compressor); - return self; - }); - - OPT(AST_Try, function(self, compressor){ - self.body = tighten_body(self.body, compressor); - return self; - }); - - AST_Definitions.DEFMETHOD("remove_initializers", function(){ - this.definitions.forEach(function(def){ def.value = null }); - }); - - AST_Definitions.DEFMETHOD("to_assignments", function(){ - var assignments = this.definitions.reduce(function(a, def){ - if (def.value) { - var name = make_node(AST_SymbolRef, def.name, def.name); - a.push(make_node(AST_Assign, def, { - operator : "=", - left : name, - right : def.value - })); - } - return a; - }, []); - if (assignments.length == 0) return null; - return AST_Seq.from_array(assignments); - }); - - OPT(AST_Definitions, function(self, compressor){ - if (self.definitions.length == 0) - return make_node(AST_EmptyStatement, self); - return self; - }); - - OPT(AST_Function, function(self, compressor){ - self = AST_Lambda.prototype.optimize.call(self, compressor); - if (compressor.option("unused")) { - if (self.name && self.name.unreferenced()) { - self.name = null; - } - } - return self; - }); - - OPT(AST_Call, function(self, compressor){ - if (compressor.option("unsafe")) { - var exp = self.expression; - if (exp instanceof AST_SymbolRef && exp.undeclared()) { - switch (exp.name) { - case "Array": - if (self.args.length != 1) { - return make_node(AST_Array, self, { - elements: self.args - }); - } - break; - case "Object": - if (self.args.length == 0) { - return make_node(AST_Object, self, { - properties: [] - }); - } - break; - case "String": - if (self.args.length == 0) return make_node(AST_String, self, { - value: "" - }); - return make_node(AST_Binary, self, { - left: self.args[0], - operator: "+", - right: make_node(AST_String, self, { value: "" }) - }); - } - } - else if (exp instanceof AST_Dot && exp.property == "toString" && self.args.length == 0) { - return make_node(AST_Binary, self, { - left: make_node(AST_String, self, { value: "" }), - operator: "+", - right: exp.expression - }).transform(compressor); - } - } - if (compressor.option("side_effects")) { - if (self.expression instanceof AST_Function - && self.args.length == 0 - && !AST_Block.prototype.has_side_effects.call(self.expression)) { - return make_node(AST_Undefined, self).transform(compressor); - } - } - return self; - }); - - OPT(AST_New, function(self, compressor){ - if (compressor.option("unsafe")) { - var exp = self.expression; - if (exp instanceof AST_SymbolRef && exp.undeclared()) { - switch (exp.name) { - case "Object": - case "RegExp": - case "Function": - case "Error": - case "Array": - return make_node(AST_Call, self, self).transform(compressor); - } - } - } - return self; - }); - - OPT(AST_Seq, function(self, compressor){ - if (!compressor.option("side_effects")) - return self; - if (!self.car.has_side_effects()) { - // we shouldn't compress (1,eval)(something) to - // eval(something) because that changes the meaning of - // eval (becomes lexical instead of global). - var p; - if (!(self.cdr instanceof AST_SymbolRef - && self.cdr.name == "eval" - && self.cdr.undeclared() - && (p = compressor.parent()) instanceof AST_Call - && p.expression === self)) { - return self.cdr; - } - } - if (compressor.option("cascade")) { - if (self.car instanceof AST_Assign - && !self.car.left.has_side_effects() - && self.car.left.equivalent_to(self.cdr)) { - return self.car; - } - if (!self.car.has_side_effects() - && !self.cdr.has_side_effects() - && self.car.equivalent_to(self.cdr)) { - return self.car; - } - } - return self; - }); - - AST_Unary.DEFMETHOD("lift_sequences", function(compressor){ - if (compressor.option("sequences")) { - if (this.expression instanceof AST_Seq) { - var seq = this.expression; - var x = seq.to_array(); - this.expression = x.pop(); - x.push(this); - seq = AST_Seq.from_array(x).transform(compressor); - return seq; - } - } - return this; - }); - - OPT(AST_UnaryPostfix, function(self, compressor){ - return self.lift_sequences(compressor); - }); - - OPT(AST_UnaryPrefix, function(self, compressor){ - self = self.lift_sequences(compressor); - var e = self.expression; - if (compressor.option("booleans") && compressor.in_boolean_context()) { - switch (self.operator) { - case "!": - if (e instanceof AST_UnaryPrefix && e.operator == "!") { - // !!foo ==> foo, if we're in boolean context - return e.expression; - } - break; - case "typeof": - // typeof always returns a non-empty string, thus it's - // always true in booleans - compressor.warn("Boolean expression always true [{file}:{line},{col}]", self.start); - return make_node(AST_True, self); - } - if (e instanceof AST_Binary && self.operator == "!") { - self = best_of(self, e.negate(compressor)); - } - } - return self.evaluate(compressor)[0]; - }); - - AST_Binary.DEFMETHOD("lift_sequences", function(compressor){ - if (compressor.option("sequences")) { - if (this.left instanceof AST_Seq) { - var seq = this.left; - var x = seq.to_array(); - this.left = x.pop(); - x.push(this); - seq = AST_Seq.from_array(x).transform(compressor); - return seq; - } - if (this.right instanceof AST_Seq - && !(this.operator == "||" || this.operator == "&&") - && !this.left.has_side_effects()) { - var seq = this.right; - var x = seq.to_array(); - this.right = x.pop(); - x.push(this); - seq = AST_Seq.from_array(x).transform(compressor); - return seq; - } - } - return this; - }); - - var commutativeOperators = makePredicate("== === != !== * & | ^"); - - OPT(AST_Binary, function(self, compressor){ - function reverse(op) { - if (!(self.left.has_side_effects() && self.right.has_side_effects())) { - if (op) self.operator = op; - var tmp = self.left; - self.left = self.right; - self.right = tmp; - } - }; - if (commutativeOperators(self.operator)) { - if (self.right instanceof AST_Constant - && !(self.left instanceof AST_Constant)) { - reverse(); - } - } - self = self.lift_sequences(compressor); - if (compressor.option("comparisons")) switch (self.operator) { - case "===": - case "!==": - if ((self.left.is_string(compressor) && self.right.is_string(compressor)) || - (self.left.is_boolean() && self.right.is_boolean())) { - self.operator = self.operator.substr(0, 2); - } - // XXX: intentionally falling down to the next case - case "==": - case "!=": - if (self.left instanceof AST_String - && self.left.value == "undefined" - && self.right instanceof AST_UnaryPrefix - && self.right.operator == "typeof" - && compressor.option("unsafe")) { - if (!(self.right.expression instanceof AST_SymbolRef) - || !self.right.expression.undeclared()) { - self.left = self.right.expression; - self.right = make_node(AST_Undefined, self.left).optimize(compressor); - if (self.operator.length == 2) self.operator += "="; - } - } - break; - } - if (compressor.option("booleans") && compressor.in_boolean_context()) switch (self.operator) { - case "&&": - var ll = self.left.evaluate(compressor); - var rr = self.right.evaluate(compressor); - if ((ll.length > 1 && !ll[1]) || (rr.length > 1 && !rr[1])) { - compressor.warn("Boolean && always false [{file}:{line},{col}]", self.start); - return make_node(AST_False, self); - } - if (ll.length > 1 && ll[1]) { - return rr[0]; - } - if (rr.length > 1 && rr[1]) { - return ll[0]; - } - break; - case "||": - var ll = self.left.evaluate(compressor); - var rr = self.right.evaluate(compressor); - if ((ll.length > 1 && ll[1]) || (rr.length > 1 && rr[1])) { - compressor.warn("Boolean || always true [{file}:{line},{col}]", self.start); - return make_node(AST_True, self); - } - if (ll.length > 1 && !ll[1]) { - return rr[0]; - } - if (rr.length > 1 && !rr[1]) { - return ll[0]; - } - break; - case "+": - var ll = self.left.evaluate(compressor); - var rr = self.right.evaluate(compressor); - if ((ll.length > 1 && ll[0] instanceof AST_String && ll[1]) || - (rr.length > 1 && rr[0] instanceof AST_String && rr[1])) { - compressor.warn("+ in boolean context always true [{file}:{line},{col}]", self.start); - return make_node(AST_True, self); - } - break; - } - var exp = self.evaluate(compressor); - if (exp.length > 1) { - if (best_of(exp[0], self) !== self) - return exp[0]; - } - if (compressor.option("comparisons")) { - if (!(compressor.parent() instanceof AST_Binary) - || compressor.parent() instanceof AST_Assign) { - var negated = make_node(AST_UnaryPrefix, self, { - operator: "!", - expression: self.negate(compressor) - }); - self = best_of(self, negated); - } - switch (self.operator) { - case "<": reverse(">"); break; - case "<=": reverse(">="); break; - } - } - if (self.operator == "+" && self.right instanceof AST_String - && self.right.getValue() === "" && self.left instanceof AST_Binary - && self.left.operator == "+" && self.left.is_string(compressor)) { - return self.left; - } - return self; - }); - - OPT(AST_SymbolRef, function(self, compressor){ - if (self.undeclared()) { - var defines = compressor.option("global_defs"); - if (defines && defines.hasOwnProperty(self.name)) { - return make_node_from_constant(compressor, defines[self.name], self); - } - switch (self.name) { - case "undefined": - return make_node(AST_Undefined, self); - case "NaN": - return make_node(AST_NaN, self); - case "Infinity": - return make_node(AST_Infinity, self); - } - } - return self; - }); - - OPT(AST_Undefined, function(self, compressor){ - if (compressor.option("unsafe")) { - var scope = compressor.find_parent(AST_Scope); - var undef = scope.find_variable("undefined"); - if (undef) { - var ref = make_node(AST_SymbolRef, self, { - name : "undefined", - scope : scope, - thedef : undef - }); - ref.reference(); - return ref; - } - } - return self; - }); - - var ASSIGN_OPS = [ '+', '-', '/', '*', '%', '>>', '<<', '>>>', '|', '^', '&' ]; - OPT(AST_Assign, function(self, compressor){ - self = self.lift_sequences(compressor); - if (self.operator == "=" - && self.left instanceof AST_SymbolRef - && self.right instanceof AST_Binary - && self.right.left instanceof AST_SymbolRef - && self.right.left.name == self.left.name - && member(self.right.operator, ASSIGN_OPS)) { - self.operator = self.right.operator + "="; - self.right = self.right.right; - } - return self; - }); - - OPT(AST_Conditional, function(self, compressor){ - if (!compressor.option("conditionals")) return self; - if (self.condition instanceof AST_Seq) { - var car = self.condition.car; - self.condition = self.condition.cdr; - return AST_Seq.cons(car, self); - } - var cond = self.condition.evaluate(compressor); - if (cond.length > 1) { - if (cond[1]) { - compressor.warn("Condition always true [{file}:{line},{col}]", self.start); - return self.consequent; - } else { - compressor.warn("Condition always false [{file}:{line},{col}]", self.start); - return self.alternative; - } - } - var negated = cond[0].negate(compressor); - if (best_of(cond[0], negated) === negated) { - self = make_node(AST_Conditional, self, { - condition: negated, - consequent: self.alternative, - alternative: self.consequent - }); - } - var consequent = self.consequent; - var alternative = self.alternative; - if (consequent instanceof AST_Assign - && alternative instanceof AST_Assign - && consequent.operator == alternative.operator - && consequent.left.equivalent_to(alternative.left) - ) { - /* - * Stuff like this: - * if (foo) exp = something; else exp = something_else; - * ==> - * exp = foo ? something : something_else; - */ - self = make_node(AST_Assign, self, { - operator: consequent.operator, - left: consequent.left, - right: make_node(AST_Conditional, self, { - condition: self.condition, - consequent: consequent.right, - alternative: alternative.right - }) - }); - } - return self; - }); - - OPT(AST_Boolean, function(self, compressor){ - if (compressor.option("booleans")) { - var p = compressor.parent(); - if (p instanceof AST_Binary && (p.operator == "==" - || p.operator == "!=")) { - compressor.warn("Non-strict equality against boolean: {operator} {value} [{file}:{line},{col}]", { - operator : p.operator, - value : self.value, - file : p.start.file, - line : p.start.line, - col : p.start.col, - }); - return make_node(AST_Number, self, { - value: +self.value - }); - } - return make_node(AST_UnaryPrefix, self, { - operator: "!", - expression: make_node(AST_Number, self, { - value: 1 - self.value - }) - }); - } - return self; - }); - - OPT(AST_Sub, function(self, compressor){ - var prop = self.property; - if (prop instanceof AST_String && compressor.option("properties")) { - prop = prop.getValue(); - if (is_identifier(prop)) { - return make_node(AST_Dot, self, { - expression : self.expression, - property : prop - }); - } - } - return self; - }); - - function literals_in_boolean_context(self, compressor) { - if (compressor.option("booleans") && compressor.in_boolean_context()) { - return make_node(AST_True, self); - } - return self; - }; - OPT(AST_Array, literals_in_boolean_context); - OPT(AST_Object, literals_in_boolean_context); - OPT(AST_RegExp, literals_in_boolean_context); - -})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js deleted file mode 100644 index 982d621..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/mozilla-ast.js +++ /dev/null @@ -1,265 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -(function(){ - - var MOZ_TO_ME = { - TryStatement : function(M) { - return new AST_Try({ - start : my_start_token(M), - end : my_end_token(M), - body : from_moz(M.block).body, - bcatch : from_moz(M.handlers[0]), - bfinally : M.finalizer ? new AST_Finally(from_moz(M.finalizer)) : null - }); - }, - CatchClause : function(M) { - return new AST_Catch({ - start : my_start_token(M), - end : my_end_token(M), - argname : from_moz(M.param), - body : from_moz(M.body).body - }); - }, - ObjectExpression : function(M) { - return new AST_Object({ - start : my_start_token(M), - end : my_end_token(M), - properties : M.properties.map(function(prop){ - var key = prop.key; - var name = key.type == "Identifier" ? key.name : key.value; - var args = { - start : my_start_token(key), - end : my_end_token(prop.value), - key : name, - value : from_moz(prop.value) - }; - switch (prop.kind) { - case "init": - return new AST_ObjectKeyVal(args); - case "set": - args.value.name = from_moz(key); - return new AST_ObjectSetter(args); - case "get": - args.value.name = from_moz(key); - return new AST_ObjectGetter(args); - } - }) - }); - }, - SequenceExpression : function(M) { - return AST_Seq.from_array(M.expressions.map(from_moz)); - }, - MemberExpression : function(M) { - return new (M.computed ? AST_Sub : AST_Dot)({ - start : my_start_token(M), - end : my_end_token(M), - property : M.computed ? from_moz(M.property) : M.property.name, - expression : from_moz(M.object) - }); - }, - SwitchCase : function(M) { - return new (M.test ? AST_Case : AST_Default)({ - start : my_start_token(M), - end : my_end_token(M), - expression : from_moz(M.test), - body : M.consequent.map(from_moz) - }); - }, - Literal : function(M) { - var val = M.value, args = { - start : my_start_token(M), - end : my_end_token(M) - }; - if (val === null) return new AST_Null(args); - switch (typeof val) { - case "string": - args.value = val; - return new AST_String(args); - case "number": - args.value = val; - return new AST_Number(args); - case "boolean": - return new (val ? AST_True : AST_False)(args); - default: - args.value = val; - return new AST_RegExp(args); - } - }, - UnaryExpression: From_Moz_Unary, - UpdateExpression: From_Moz_Unary, - Identifier: function(M) { - var p = FROM_MOZ_STACK[FROM_MOZ_STACK.length - 2]; - return new (M.name == "this" ? AST_This - : p.type == "LabeledStatement" ? AST_Label - : p.type == "VariableDeclarator" && p.id === M ? (p.kind == "const" ? AST_SymbolConst : AST_SymbolVar) - : p.type == "FunctionExpression" ? (p.id === M ? AST_SymbolLambda : AST_SymbolFunarg) - : p.type == "FunctionDeclaration" ? (p.id === M ? AST_SymbolDefun : AST_SymbolFunarg) - : p.type == "CatchClause" ? AST_SymbolCatch - : p.type == "BreakStatement" || p.type == "ContinueStatement" ? AST_LabelRef - : AST_SymbolRef)({ - start : my_start_token(M), - end : my_end_token(M), - name : M.name - }); - } - }; - - function From_Moz_Unary(M) { - return new (M.prefix ? AST_UnaryPrefix : AST_UnaryPostfix)({ - start : my_start_token(M), - end : my_end_token(M), - operator : M.operator, - expression : from_moz(M.argument) - }) - }; - - var ME_TO_MOZ = {}; - - map("Node", AST_Node); - map("Program", AST_Toplevel, "body@body"); - map("Function", AST_Function, "id>name, params@argnames, body%body"); - map("EmptyStatement", AST_EmptyStatement); - map("BlockStatement", AST_BlockStatement, "body@body"); - map("ExpressionStatement", AST_SimpleStatement, "expression>body"); - map("IfStatement", AST_If, "test>condition, consequent>body, alternate>alternative"); - map("LabeledStatement", AST_LabeledStatement, "label>label, body>body"); - map("BreakStatement", AST_Break, "label>label"); - map("ContinueStatement", AST_Continue, "label>label"); - map("WithStatement", AST_With, "object>expression, body>body"); - map("SwitchStatement", AST_Switch, "discriminant>expression, cases@body"); - map("ReturnStatement", AST_Return, "argument>value"); - map("ThrowStatement", AST_Throw, "argument>value"); - map("WhileStatement", AST_While, "test>condition, body>body"); - map("DoWhileStatement", AST_Do, "test>condition, body>body"); - map("ForStatement", AST_For, "init>init, test>condition, update>step, body>body"); - map("ForInStatement", AST_ForIn, "left>init, right>object, body>body"); - map("DebuggerStatement", AST_Debugger); - map("FunctionDeclaration", AST_Defun, "id>name, params@argnames, body%body"); - map("VariableDeclaration", AST_Var, "declarations@definitions"); - map("VariableDeclarator", AST_VarDef, "id>name, init>value"); - - map("ThisExpression", AST_This); - map("ArrayExpression", AST_Array, "elements@elements"); - map("FunctionExpression", AST_Function, "id>name, params@argnames, body%body"); - map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right"); - map("AssignmentExpression", AST_Assign, "operator=operator, left>left, right>right"); - map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right"); - map("ConditionalExpression", AST_Conditional, "test>condition, consequent>consequent, alternate>alternative"); - map("NewExpression", AST_New, "callee>expression, arguments@args"); - map("CallExpression", AST_Call, "callee>expression, arguments@args"); - - /* -----[ tools ]----- */ - - function my_start_token(moznode) { - return new AST_Token({ - file : moznode.loc && moznode.loc.source, - line : moznode.loc && moznode.loc.start.line, - col : moznode.loc && moznode.loc.start.column, - pos : moznode.start, - endpos : moznode.start - }); - }; - - function my_end_token(moznode) { - return new AST_Token({ - file : moznode.loc && moznode.loc.source, - line : moznode.loc && moznode.loc.end.line, - col : moznode.loc && moznode.loc.end.column, - pos : moznode.end, - endpos : moznode.end - }); - }; - - function map(moztype, mytype, propmap) { - var moz_to_me = "function From_Moz_" + moztype + "(M){\n"; - moz_to_me += "return new mytype({\n" + - "start: my_start_token(M),\n" + - "end: my_end_token(M)"; - - if (propmap) propmap.split(/\s*,\s*/).forEach(function(prop){ - var m = /([a-z0-9$_]+)(=|@|>|%)([a-z0-9$_]+)/i.exec(prop); - if (!m) throw new Error("Can't understand property map: " + prop); - var moz = "M." + m[1], how = m[2], my = m[3]; - moz_to_me += ",\n" + my + ": "; - if (how == "@") { - moz_to_me += moz + ".map(from_moz)"; - } else if (how == ">") { - moz_to_me += "from_moz(" + moz + ")"; - } else if (how == "=") { - moz_to_me += moz; - } else if (how == "%") { - moz_to_me += "from_moz(" + moz + ").body"; - } else throw new Error("Can't understand operator in propmap: " + prop); - }); - moz_to_me += "\n})}"; - - // moz_to_me = parse(moz_to_me).print_to_string({ beautify: true }); - // console.log(moz_to_me); - - moz_to_me = new Function("mytype", "my_start_token", "my_end_token", "from_moz", "return(" + moz_to_me + ")")( - mytype, my_start_token, my_end_token, from_moz - ); - return MOZ_TO_ME[moztype] = moz_to_me; - }; - - var FROM_MOZ_STACK = null; - - function from_moz(node) { - FROM_MOZ_STACK.push(node); - var ret = node != null ? MOZ_TO_ME[node.type](node) : null; - FROM_MOZ_STACK.pop(); - return ret; - }; - - AST_Node.from_mozilla_ast = function(node){ - var save_stack = FROM_MOZ_STACK; - FROM_MOZ_STACK = []; - var ast = from_moz(node); - FROM_MOZ_STACK = save_stack; - return ast; - }; - -})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js deleted file mode 100644 index 42b3aad..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/output.js +++ /dev/null @@ -1,1220 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -function OutputStream(options) { - - options = defaults(options, { - indent_start : 0, - indent_level : 4, - quote_keys : false, - space_colon : true, - ascii_only : false, - inline_script : false, - width : 80, - max_line_len : 32000, - ie_proof : true, - beautify : false, - source_map : null, - bracketize : false, - semicolons : true, - comments : false, - preserve_line : false - }, true); - - var indentation = 0; - var current_col = 0; - var current_line = 1; - var current_pos = 0; - var OUTPUT = ""; - - function to_ascii(str) { - return str.replace(/[\u0080-\uffff]/g, function(ch) { - var code = ch.charCodeAt(0).toString(16); - while (code.length < 4) code = "0" + code; - return "\\u" + code; - }); - }; - - function make_string(str) { - var dq = 0, sq = 0; - str = str.replace(/[\\\b\f\n\r\t\x22\x27\u2028\u2029\0]/g, function(s){ - switch (s) { - case "\\": return "\\\\"; - case "\b": return "\\b"; - case "\f": return "\\f"; - case "\n": return "\\n"; - case "\r": return "\\r"; - case "\u2028": return "\\u2028"; - case "\u2029": return "\\u2029"; - case '"': ++dq; return '"'; - case "'": ++sq; return "'"; - case "\0": return "\\0"; - } - return s; - }); - if (options.ascii_only) str = to_ascii(str); - if (dq > sq) return "'" + str.replace(/\x27/g, "\\'") + "'"; - else return '"' + str.replace(/\x22/g, '\\"') + '"'; - }; - - function encode_string(str) { - var ret = make_string(str); - if (options.inline_script) - ret = ret.replace(/<\x2fscript([>\/\t\n\f\r ])/gi, "<\\/script$1"); - return ret; - }; - - function make_name(name) { - name = name.toString(); - if (options.ascii_only) - name = to_ascii(name); - return name; - }; - - function make_indent(back) { - return repeat_string(" ", options.indent_start + indentation - back * options.indent_level); - }; - - /* -----[ beautification/minification ]----- */ - - var might_need_space = false; - var might_need_semicolon = false; - var last = null; - - function last_char() { - return last.charAt(last.length - 1); - }; - - function maybe_newline() { - if (options.max_line_len && current_col > options.max_line_len) - print("\n"); - }; - - var requireSemicolonChars = makePredicate("( [ + * / - , ."); - - function print(str) { - str = String(str); - var ch = str.charAt(0); - if (might_need_semicolon) { - if ((!ch || ";}".indexOf(ch) < 0) && !/[;]$/.test(last)) { - if (options.semicolons || requireSemicolonChars(ch)) { - OUTPUT += ";"; - current_col++; - current_pos++; - } else { - OUTPUT += "\n"; - current_pos++; - current_line++; - current_col = 0; - } - if (!options.beautify) - might_need_space = false; - } - might_need_semicolon = false; - maybe_newline(); - } - - if (!options.beautify && options.preserve_line && stack[stack.length - 1]) { - var target_line = stack[stack.length - 1].start.line; - while (current_line < target_line) { - OUTPUT += "\n"; - current_pos++; - current_line++; - current_col = 0; - might_need_space = false; - } - } - - if (might_need_space) { - var prev = last_char(); - if ((is_identifier_char(prev) - && (is_identifier_char(ch) || ch == "\\")) - || (/^[\+\-\/]$/.test(ch) && ch == prev)) - { - OUTPUT += " "; - current_col++; - current_pos++; - } - might_need_space = false; - } - var a = str.split(/\r?\n/), n = a.length - 1; - current_line += n; - if (n == 0) { - current_col += a[n].length; - } else { - current_col = a[n].length; - } - current_pos += str.length; - last = str; - OUTPUT += str; - }; - - var space = options.beautify ? function() { - print(" "); - } : function() { - might_need_space = true; - }; - - var indent = options.beautify ? function(half) { - if (options.beautify) { - print(make_indent(half ? 0.5 : 0)); - } - } : noop; - - var with_indent = options.beautify ? function(col, cont) { - if (col === true) col = next_indent(); - var save_indentation = indentation; - indentation = col; - var ret = cont(); - indentation = save_indentation; - return ret; - } : function(col, cont) { return cont() }; - - var newline = options.beautify ? function() { - print("\n"); - } : noop; - - var semicolon = options.beautify ? function() { - print(";"); - } : function() { - might_need_semicolon = true; - }; - - function force_semicolon() { - might_need_semicolon = false; - print(";"); - }; - - function next_indent() { - return indentation + options.indent_level; - }; - - function with_block(cont) { - var ret; - print("{"); - newline(); - with_indent(next_indent(), function(){ - ret = cont(); - }); - indent(); - print("}"); - return ret; - }; - - function with_parens(cont) { - print("("); - //XXX: still nice to have that for argument lists - //var ret = with_indent(current_col, cont); - var ret = cont(); - print(")"); - return ret; - }; - - function with_square(cont) { - print("["); - //var ret = with_indent(current_col, cont); - var ret = cont(); - print("]"); - return ret; - }; - - function comma() { - print(","); - space(); - }; - - function colon() { - print(":"); - if (options.space_colon) space(); - }; - - var add_mapping = options.source_map ? function(token, name) { - try { - if (token) options.source_map.add( - token.file || "?", - current_line, current_col, - token.line, token.col, - (!name && token.type == "name") ? token.value : name - ); - } catch(ex) { - AST_Node.warn("Couldn't figure out mapping for {file}:{line},{col} → {cline},{ccol} [{name}]", { - file: token.file, - line: token.line, - col: token.col, - cline: current_line, - ccol: current_col, - name: name || "" - }) - } - } : noop; - - function get() { - return OUTPUT; - }; - - var stack = []; - return { - get : get, - toString : get, - indent : indent, - indentation : function() { return indentation }, - current_width : function() { return current_col - indentation }, - should_break : function() { return options.width && this.current_width() >= options.width }, - newline : newline, - print : print, - space : space, - comma : comma, - colon : colon, - last : function() { return last }, - semicolon : semicolon, - force_semicolon : force_semicolon, - to_ascii : to_ascii, - print_name : function(name) { print(make_name(name)) }, - print_string : function(str) { print(encode_string(str)) }, - next_indent : next_indent, - with_indent : with_indent, - with_block : with_block, - with_parens : with_parens, - with_square : with_square, - add_mapping : add_mapping, - option : function(opt) { return options[opt] }, - line : function() { return current_line }, - col : function() { return current_col }, - pos : function() { return current_pos }, - push_node : function(node) { stack.push(node) }, - pop_node : function() { return stack.pop() }, - stack : function() { return stack }, - parent : function(n) { - return stack[stack.length - 2 - (n || 0)]; - } - }; - -}; - -/* -----[ code generators ]----- */ - -(function(){ - - /* -----[ utils ]----- */ - - function DEFPRINT(nodetype, generator) { - nodetype.DEFMETHOD("_codegen", generator); - }; - - AST_Node.DEFMETHOD("print", function(stream, force_parens){ - var self = this, generator = self._codegen; - stream.push_node(self); - if (force_parens || self.needs_parens(stream)) { - stream.with_parens(function(){ - self.add_comments(stream); - self.add_source_map(stream); - generator(self, stream); - }); - } else { - self.add_comments(stream); - self.add_source_map(stream); - generator(self, stream); - } - stream.pop_node(); - }); - - AST_Node.DEFMETHOD("print_to_string", function(options){ - var s = OutputStream(options); - this.print(s); - return s.get(); - }); - - /* -----[ comments ]----- */ - - AST_Node.DEFMETHOD("add_comments", function(output){ - var c = output.option("comments"), self = this; - if (c) { - var start = self.start; - if (start && !start._comments_dumped) { - start._comments_dumped = true; - var comments = start.comments_before; - - // XXX: ugly fix for https://github.com/mishoo/UglifyJS2/issues/112 - // if this node is `return` or `throw`, we cannot allow comments before - // the returned or thrown value. - if (self instanceof AST_Exit && - self.value && self.value.start.comments_before.length > 0) { - comments = (comments || []).concat(self.value.start.comments_before); - self.value.start.comments_before = []; - } - - if (c.test) { - comments = comments.filter(function(comment){ - return c.test(comment.value); - }); - } else if (typeof c == "function") { - comments = comments.filter(function(comment){ - return c(self, comment); - }); - } - comments.forEach(function(c){ - if (c.type == "comment1") { - output.print("//" + c.value + "\n"); - output.indent(); - } - else if (c.type == "comment2") { - output.print("/*" + c.value + "*/"); - if (start.nlb) { - output.print("\n"); - output.indent(); - } else { - output.space(); - } - } - }); - } - } - }); - - /* -----[ PARENTHESES ]----- */ - - function PARENS(nodetype, func) { - nodetype.DEFMETHOD("needs_parens", func); - }; - - PARENS(AST_Node, function(){ - return false; - }); - - // a function expression needs parens around it when it's provably - // the first token to appear in a statement. - PARENS(AST_Function, function(output){ - return first_in_statement(output); - }); - - // same goes for an object literal, because otherwise it would be - // interpreted as a block of code. - PARENS(AST_Object, function(output){ - return first_in_statement(output); - }); - - PARENS(AST_Unary, function(output){ - var p = output.parent(); - return p instanceof AST_PropAccess && p.expression === this; - }); - - PARENS(AST_Seq, function(output){ - var p = output.parent(); - return p instanceof AST_Call // (foo, bar)() or foo(1, (2, 3), 4) - || p instanceof AST_Unary // !(foo, bar, baz) - || p instanceof AST_Binary // 1 + (2, 3) + 4 ==> 8 - || p instanceof AST_VarDef // var a = (1, 2), b = a + a; ==> b == 4 - || p instanceof AST_Dot // (1, {foo:2}).foo ==> 2 - || p instanceof AST_Array // [ 1, (2, 3), 4 ] ==> [ 1, 3, 4 ] - || p instanceof AST_ObjectProperty // { foo: (1, 2) }.foo ==> 2 - || p instanceof AST_Conditional /* (false, true) ? (a = 10, b = 20) : (c = 30) - * ==> 20 (side effect, set a := 10 and b := 20) */ - ; - }); - - PARENS(AST_Binary, function(output){ - var p = output.parent(); - // (foo && bar)() - if (p instanceof AST_Call && p.expression === this) - return true; - // typeof (foo && bar) - if (p instanceof AST_Unary) - return true; - // (foo && bar)["prop"], (foo && bar).prop - if (p instanceof AST_PropAccess && p.expression === this) - return true; - // this deals with precedence: 3 * (2 + 1) - if (p instanceof AST_Binary) { - var po = p.operator, pp = PRECEDENCE[po]; - var so = this.operator, sp = PRECEDENCE[so]; - if (pp > sp - || (pp == sp - && this === p.right - && !(so == po && - (so == "*" || - so == "&&" || - so == "||")))) { - return true; - } - } - }); - - PARENS(AST_PropAccess, function(output){ - var p = output.parent(); - if (p instanceof AST_New && p.expression === this) { - // i.e. new (foo.bar().baz) - // - // if there's one call into this subtree, then we need - // parens around it too, otherwise the call will be - // interpreted as passing the arguments to the upper New - // expression. - try { - this.walk(new TreeWalker(function(node){ - if (node instanceof AST_Call) throw p; - })); - } catch(ex) { - if (ex !== p) throw ex; - return true; - } - } - }); - - PARENS(AST_Call, function(output){ - var p = output.parent(); - return p instanceof AST_New && p.expression === this; - }); - - PARENS(AST_New, function(output){ - var p = output.parent(); - if (no_constructor_parens(this, output) - && (p instanceof AST_PropAccess // (new Date).getTime(), (new Date)["getTime"]() - || p instanceof AST_Call && p.expression === this)) // (new foo)(bar) - return true; - }); - - PARENS(AST_Number, function(output){ - var p = output.parent(); - if (this.getValue() < 0 && p instanceof AST_PropAccess && p.expression === this) - return true; - }); - - PARENS(AST_NaN, function(output){ - var p = output.parent(); - if (p instanceof AST_PropAccess && p.expression === this) - return true; - }); - - function assign_and_conditional_paren_rules(output) { - var p = output.parent(); - // !(a = false) → true - if (p instanceof AST_Unary) - return true; - // 1 + (a = 2) + 3 → 6, side effect setting a = 2 - if (p instanceof AST_Binary && !(p instanceof AST_Assign)) - return true; - // (a = func)() —or— new (a = Object)() - if (p instanceof AST_Call && p.expression === this) - return true; - // (a = foo) ? bar : baz - if (p instanceof AST_Conditional && p.condition === this) - return true; - // (a = foo)["prop"] —or— (a = foo).prop - if (p instanceof AST_PropAccess && p.expression === this) - return true; - }; - - PARENS(AST_Assign, assign_and_conditional_paren_rules); - PARENS(AST_Conditional, assign_and_conditional_paren_rules); - - /* -----[ PRINTERS ]----- */ - - DEFPRINT(AST_Directive, function(self, output){ - output.print_string(self.value); - output.semicolon(); - }); - DEFPRINT(AST_Debugger, function(self, output){ - output.print("debugger"); - output.semicolon(); - }); - - /* -----[ statements ]----- */ - - function display_body(body, is_toplevel, output) { - var last = body.length - 1; - body.forEach(function(stmt, i){ - if (!(stmt instanceof AST_EmptyStatement)) { - output.indent(); - stmt.print(output); - if (!(i == last && is_toplevel)) { - output.newline(); - if (is_toplevel) output.newline(); - } - } - }); - }; - - AST_StatementWithBody.DEFMETHOD("_do_print_body", function(output){ - force_statement(this.body, output); - }); - - DEFPRINT(AST_Statement, function(self, output){ - self.body.print(output); - output.semicolon(); - }); - DEFPRINT(AST_Toplevel, function(self, output){ - display_body(self.body, true, output); - output.print(""); - }); - DEFPRINT(AST_LabeledStatement, function(self, output){ - self.label.print(output); - output.colon(); - self.body.print(output); - }); - DEFPRINT(AST_SimpleStatement, function(self, output){ - self.body.print(output); - output.semicolon(); - }); - function print_bracketed(body, output) { - if (body.length > 0) output.with_block(function(){ - display_body(body, false, output); - }); - else output.print("{}"); - }; - DEFPRINT(AST_BlockStatement, function(self, output){ - print_bracketed(self.body, output); - }); - DEFPRINT(AST_EmptyStatement, function(self, output){ - output.semicolon(); - }); - DEFPRINT(AST_Do, function(self, output){ - output.print("do"); - output.space(); - self._do_print_body(output); - output.space(); - output.print("while"); - output.space(); - output.with_parens(function(){ - self.condition.print(output); - }); - output.semicolon(); - }); - DEFPRINT(AST_While, function(self, output){ - output.print("while"); - output.space(); - output.with_parens(function(){ - self.condition.print(output); - }); - output.space(); - self._do_print_body(output); - }); - DEFPRINT(AST_For, function(self, output){ - output.print("for"); - output.space(); - output.with_parens(function(){ - if (self.init) { - if (self.init instanceof AST_Definitions) { - self.init.print(output); - } else { - parenthesize_for_noin(self.init, output, true); - } - output.print(";"); - output.space(); - } else { - output.print(";"); - } - if (self.condition) { - self.condition.print(output); - output.print(";"); - output.space(); - } else { - output.print(";"); - } - if (self.step) { - self.step.print(output); - } - }); - output.space(); - self._do_print_body(output); - }); - DEFPRINT(AST_ForIn, function(self, output){ - output.print("for"); - output.space(); - output.with_parens(function(){ - self.init.print(output); - output.space(); - output.print("in"); - output.space(); - self.object.print(output); - }); - output.space(); - self._do_print_body(output); - }); - DEFPRINT(AST_With, function(self, output){ - output.print("with"); - output.space(); - output.with_parens(function(){ - self.expression.print(output); - }); - output.space(); - self._do_print_body(output); - }); - - /* -----[ functions ]----- */ - AST_Lambda.DEFMETHOD("_do_print", function(output, nokeyword){ - var self = this; - if (!nokeyword) { - output.print("function"); - } - if (self.name) { - output.space(); - self.name.print(output); - } - output.with_parens(function(){ - self.argnames.forEach(function(arg, i){ - if (i) output.comma(); - arg.print(output); - }); - }); - output.space(); - print_bracketed(self.body, output); - }); - DEFPRINT(AST_Lambda, function(self, output){ - self._do_print(output); - }); - - /* -----[ exits ]----- */ - AST_Exit.DEFMETHOD("_do_print", function(output, kind){ - output.print(kind); - if (this.value) { - output.space(); - this.value.print(output); - } - output.semicolon(); - }); - DEFPRINT(AST_Return, function(self, output){ - self._do_print(output, "return"); - }); - DEFPRINT(AST_Throw, function(self, output){ - self._do_print(output, "throw"); - }); - - /* -----[ loop control ]----- */ - AST_LoopControl.DEFMETHOD("_do_print", function(output, kind){ - output.print(kind); - if (this.label) { - output.space(); - this.label.print(output); - } - output.semicolon(); - }); - DEFPRINT(AST_Break, function(self, output){ - self._do_print(output, "break"); - }); - DEFPRINT(AST_Continue, function(self, output){ - self._do_print(output, "continue"); - }); - - /* -----[ if ]----- */ - function make_then(self, output) { - if (output.option("bracketize")) { - make_block(self.body, output); - return; - } - // The squeezer replaces "block"-s that contain only a single - // statement with the statement itself; technically, the AST - // is correct, but this can create problems when we output an - // IF having an ELSE clause where the THEN clause ends in an - // IF *without* an ELSE block (then the outer ELSE would refer - // to the inner IF). This function checks for this case and - // adds the block brackets if needed. - if (!self.body) - return output.force_semicolon(); - if (self.body instanceof AST_Do - && output.option("ie_proof")) { - // https://github.com/mishoo/UglifyJS/issues/#issue/57 IE - // croaks with "syntax error" on code like this: if (foo) - // do ... while(cond); else ... we need block brackets - // around do/while - make_block(self.body, output); - return; - } - var b = self.body; - while (true) { - if (b instanceof AST_If) { - if (!b.alternative) { - make_block(self.body, output); - return; - } - b = b.alternative; - } - else if (b instanceof AST_StatementWithBody) { - b = b.body; - } - else break; - } - force_statement(self.body, output); - }; - DEFPRINT(AST_If, function(self, output){ - output.print("if"); - output.space(); - output.with_parens(function(){ - self.condition.print(output); - }); - output.space(); - if (self.alternative) { - make_then(self, output); - output.space(); - output.print("else"); - output.space(); - force_statement(self.alternative, output); - } else { - self._do_print_body(output); - } - }); - - /* -----[ switch ]----- */ - DEFPRINT(AST_Switch, function(self, output){ - output.print("switch"); - output.space(); - output.with_parens(function(){ - self.expression.print(output); - }); - output.space(); - if (self.body.length > 0) output.with_block(function(){ - self.body.forEach(function(stmt, i){ - if (i) output.newline(); - output.indent(true); - stmt.print(output); - }); - }); - else output.print("{}"); - }); - AST_SwitchBranch.DEFMETHOD("_do_print_body", function(output){ - if (this.body.length > 0) { - output.newline(); - this.body.forEach(function(stmt){ - output.indent(); - stmt.print(output); - output.newline(); - }); - } - }); - DEFPRINT(AST_Default, function(self, output){ - output.print("default:"); - self._do_print_body(output); - }); - DEFPRINT(AST_Case, function(self, output){ - output.print("case"); - output.space(); - self.expression.print(output); - output.print(":"); - self._do_print_body(output); - }); - - /* -----[ exceptions ]----- */ - DEFPRINT(AST_Try, function(self, output){ - output.print("try"); - output.space(); - print_bracketed(self.body, output); - if (self.bcatch) { - output.space(); - self.bcatch.print(output); - } - if (self.bfinally) { - output.space(); - self.bfinally.print(output); - } - }); - DEFPRINT(AST_Catch, function(self, output){ - output.print("catch"); - output.space(); - output.with_parens(function(){ - self.argname.print(output); - }); - output.space(); - print_bracketed(self.body, output); - }); - DEFPRINT(AST_Finally, function(self, output){ - output.print("finally"); - output.space(); - print_bracketed(self.body, output); - }); - - /* -----[ var/const ]----- */ - AST_Definitions.DEFMETHOD("_do_print", function(output, kind){ - output.print(kind); - output.space(); - this.definitions.forEach(function(def, i){ - if (i) output.comma(); - def.print(output); - }); - var p = output.parent(); - var in_for = p instanceof AST_For || p instanceof AST_ForIn; - var avoid_semicolon = in_for && p.init === this; - if (!avoid_semicolon) - output.semicolon(); - }); - DEFPRINT(AST_Var, function(self, output){ - self._do_print(output, "var"); - }); - DEFPRINT(AST_Const, function(self, output){ - self._do_print(output, "const"); - }); - - function parenthesize_for_noin(node, output, noin) { - if (!noin) node.print(output); - else try { - // need to take some precautions here: - // https://github.com/mishoo/UglifyJS2/issues/60 - node.walk(new TreeWalker(function(node){ - if (node instanceof AST_Binary && node.operator == "in") - throw output; - })); - node.print(output); - } catch(ex) { - if (ex !== output) throw ex; - node.print(output, true); - } - }; - - DEFPRINT(AST_VarDef, function(self, output){ - self.name.print(output); - if (self.value) { - output.space(); - output.print("="); - output.space(); - var p = output.parent(1); - var noin = p instanceof AST_For || p instanceof AST_ForIn; - parenthesize_for_noin(self.value, output, noin); - } - }); - - /* -----[ other expressions ]----- */ - DEFPRINT(AST_Call, function(self, output){ - self.expression.print(output); - if (self instanceof AST_New && no_constructor_parens(self, output)) - return; - output.with_parens(function(){ - self.args.forEach(function(expr, i){ - if (i) output.comma(); - expr.print(output); - }); - }); - }); - DEFPRINT(AST_New, function(self, output){ - output.print("new"); - output.space(); - AST_Call.prototype._codegen(self, output); - }); - - AST_Seq.DEFMETHOD("_do_print", function(output){ - this.car.print(output); - if (this.cdr) { - output.comma(); - if (output.should_break()) { - output.newline(); - output.indent(); - } - this.cdr.print(output); - } - }); - DEFPRINT(AST_Seq, function(self, output){ - self._do_print(output); - // var p = output.parent(); - // if (p instanceof AST_Statement) { - // output.with_indent(output.next_indent(), function(){ - // self._do_print(output); - // }); - // } else { - // self._do_print(output); - // } - }); - DEFPRINT(AST_Dot, function(self, output){ - var expr = self.expression; - expr.print(output); - if (expr instanceof AST_Number && expr.getValue() >= 0) { - if (!/[xa-f.]/i.test(output.last())) { - output.print("."); - } - } - output.print("."); - // the name after dot would be mapped about here. - output.add_mapping(self.end); - output.print_name(self.property); - }); - DEFPRINT(AST_Sub, function(self, output){ - self.expression.print(output); - output.print("["); - self.property.print(output); - output.print("]"); - }); - DEFPRINT(AST_UnaryPrefix, function(self, output){ - var op = self.operator; - output.print(op); - if (/^[a-z]/i.test(op)) - output.space(); - self.expression.print(output); - }); - DEFPRINT(AST_UnaryPostfix, function(self, output){ - self.expression.print(output); - output.print(self.operator); - }); - DEFPRINT(AST_Binary, function(self, output){ - self.left.print(output); - output.space(); - output.print(self.operator); - output.space(); - self.right.print(output); - }); - DEFPRINT(AST_Conditional, function(self, output){ - self.condition.print(output); - output.space(); - output.print("?"); - output.space(); - self.consequent.print(output); - output.space(); - output.colon(); - self.alternative.print(output); - }); - - /* -----[ literals ]----- */ - DEFPRINT(AST_Array, function(self, output){ - output.with_square(function(){ - var a = self.elements, len = a.length; - if (len > 0) output.space(); - a.forEach(function(exp, i){ - if (i) output.comma(); - exp.print(output); - }); - if (len > 0) output.space(); - }); - }); - DEFPRINT(AST_Object, function(self, output){ - if (self.properties.length > 0) output.with_block(function(){ - self.properties.forEach(function(prop, i){ - if (i) { - output.print(","); - output.newline(); - } - output.indent(); - prop.print(output); - }); - output.newline(); - }); - else output.print("{}"); - }); - DEFPRINT(AST_ObjectKeyVal, function(self, output){ - var key = self.key; - if (output.option("quote_keys")) { - output.print_string(key); - } else if ((typeof key == "number" - || !output.option("beautify") - && +key + "" == key) - && parseFloat(key) >= 0) { - output.print(make_num(key)); - } else if (!is_identifier(key)) { - output.print_string(key); - } else { - output.print_name(key); - } - output.colon(); - self.value.print(output); - }); - DEFPRINT(AST_ObjectSetter, function(self, output){ - output.print("set"); - self.value._do_print(output, true); - }); - DEFPRINT(AST_ObjectGetter, function(self, output){ - output.print("get"); - self.value._do_print(output, true); - }); - DEFPRINT(AST_Symbol, function(self, output){ - var def = self.definition(); - output.print_name(def ? def.mangled_name || def.name : self.name); - }); - DEFPRINT(AST_Undefined, function(self, output){ - output.print("void 0"); - }); - DEFPRINT(AST_Hole, noop); - DEFPRINT(AST_Infinity, function(self, output){ - output.print("1/0"); - }); - DEFPRINT(AST_NaN, function(self, output){ - output.print("0/0"); - }); - DEFPRINT(AST_This, function(self, output){ - output.print("this"); - }); - DEFPRINT(AST_Constant, function(self, output){ - output.print(self.getValue()); - }); - DEFPRINT(AST_String, function(self, output){ - output.print_string(self.getValue()); - }); - DEFPRINT(AST_Number, function(self, output){ - output.print(make_num(self.getValue())); - }); - DEFPRINT(AST_RegExp, function(self, output){ - var str = self.getValue().toString(); - if (output.option("ascii_only")) - str = output.to_ascii(str); - output.print(str); - var p = output.parent(); - if (p instanceof AST_Binary && /^in/.test(p.operator) && p.left === self) - output.print(" "); - }); - - function force_statement(stat, output) { - if (output.option("bracketize")) { - if (!stat || stat instanceof AST_EmptyStatement) - output.print("{}"); - else if (stat instanceof AST_BlockStatement) - stat.print(output); - else output.with_block(function(){ - output.indent(); - stat.print(output); - output.newline(); - }); - } else { - if (!stat || stat instanceof AST_EmptyStatement) - output.force_semicolon(); - else - stat.print(output); - } - }; - - // return true if the node at the top of the stack (that means the - // innermost node in the current output) is lexically the first in - // a statement. - function first_in_statement(output) { - var a = output.stack(), i = a.length, node = a[--i], p = a[--i]; - while (i > 0) { - if (p instanceof AST_Statement && p.body === node) - return true; - if ((p instanceof AST_Seq && p.car === node ) || - (p instanceof AST_Call && p.expression === node ) || - (p instanceof AST_Dot && p.expression === node ) || - (p instanceof AST_Sub && p.expression === node ) || - (p instanceof AST_Conditional && p.condition === node ) || - (p instanceof AST_Binary && p.left === node ) || - (p instanceof AST_UnaryPostfix && p.expression === node )) - { - node = p; - p = a[--i]; - } else { - return false; - } - } - }; - - // self should be AST_New. decide if we want to show parens or not. - function no_constructor_parens(self, output) { - return self.args.length == 0 && !output.option("beautify"); - }; - - function best_of(a) { - var best = a[0], len = best.length; - for (var i = 1; i < a.length; ++i) { - if (a[i].length < len) { - best = a[i]; - len = best.length; - } - } - return best; - }; - - function make_num(num) { - var str = num.toString(10), a = [ str.replace(/^0\./, ".").replace('e+', 'e') ], m; - if (Math.floor(num) === num) { - if (num >= 0) { - a.push("0x" + num.toString(16).toLowerCase(), // probably pointless - "0" + num.toString(8)); // same. - } else { - a.push("-0x" + (-num).toString(16).toLowerCase(), // probably pointless - "-0" + (-num).toString(8)); // same. - } - if ((m = /^(.*?)(0+)$/.exec(num))) { - a.push(m[1] + "e" + m[2].length); - } - } else if ((m = /^0?\.(0+)(.*)$/.exec(num))) { - a.push(m[2] + "e-" + (m[1].length + m[2].length), - str.substr(str.indexOf("."))); - } - return best_of(a); - }; - - function make_block(stmt, output) { - if (stmt instanceof AST_BlockStatement) { - stmt.print(output); - return; - } - output.with_block(function(){ - output.indent(); - stmt.print(output); - output.newline(); - }); - }; - - /* -----[ source map generators ]----- */ - - function DEFMAP(nodetype, generator) { - nodetype.DEFMETHOD("add_source_map", function(stream){ - generator(this, stream); - }); - }; - - // We could easily add info for ALL nodes, but it seems to me that - // would be quite wasteful, hence this noop in the base class. - DEFMAP(AST_Node, noop); - - function basic_sourcemap_gen(self, output) { - output.add_mapping(self.start); - }; - - // XXX: I'm not exactly sure if we need it for all of these nodes, - // or if we should add even more. - - DEFMAP(AST_Directive, basic_sourcemap_gen); - DEFMAP(AST_Debugger, basic_sourcemap_gen); - DEFMAP(AST_Symbol, basic_sourcemap_gen); - DEFMAP(AST_Jump, basic_sourcemap_gen); - DEFMAP(AST_StatementWithBody, basic_sourcemap_gen); - DEFMAP(AST_LabeledStatement, noop); // since the label symbol will mark it - DEFMAP(AST_Lambda, basic_sourcemap_gen); - DEFMAP(AST_Switch, basic_sourcemap_gen); - DEFMAP(AST_SwitchBranch, basic_sourcemap_gen); - DEFMAP(AST_BlockStatement, basic_sourcemap_gen); - DEFMAP(AST_Toplevel, noop); - DEFMAP(AST_New, basic_sourcemap_gen); - DEFMAP(AST_Try, basic_sourcemap_gen); - DEFMAP(AST_Catch, basic_sourcemap_gen); - DEFMAP(AST_Finally, basic_sourcemap_gen); - DEFMAP(AST_Definitions, basic_sourcemap_gen); - DEFMAP(AST_Constant, basic_sourcemap_gen); - DEFMAP(AST_ObjectProperty, function(self, output){ - output.add_mapping(self.start, self.key); - }); - -})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js deleted file mode 100644 index 5a75e75..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/parse.js +++ /dev/null @@ -1,1407 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - Parser based on parse-js (http://marijn.haverbeke.nl/parse-js/). - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -var KEYWORDS = 'break case catch const continue debugger default delete do else finally for function if in instanceof new return switch throw try typeof var void while with'; -var KEYWORDS_ATOM = 'false null true'; -var RESERVED_WORDS = 'abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized this throws transient volatile' - + " " + KEYWORDS_ATOM + " " + KEYWORDS; -var KEYWORDS_BEFORE_EXPRESSION = 'return new delete throw else case'; - -KEYWORDS = makePredicate(KEYWORDS); -RESERVED_WORDS = makePredicate(RESERVED_WORDS); -KEYWORDS_BEFORE_EXPRESSION = makePredicate(KEYWORDS_BEFORE_EXPRESSION); -KEYWORDS_ATOM = makePredicate(KEYWORDS_ATOM); - -var OPERATOR_CHARS = makePredicate(characters("+-*&%=<>!?|~^")); - -var RE_HEX_NUMBER = /^0x[0-9a-f]+$/i; -var RE_OCT_NUMBER = /^0[0-7]+$/; -var RE_DEC_NUMBER = /^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i; - -var OPERATORS = makePredicate([ - "in", - "instanceof", - "typeof", - "new", - "void", - "delete", - "++", - "--", - "+", - "-", - "!", - "~", - "&", - "|", - "^", - "*", - "/", - "%", - ">>", - "<<", - ">>>", - "<", - ">", - "<=", - ">=", - "==", - "===", - "!=", - "!==", - "?", - "=", - "+=", - "-=", - "/=", - "*=", - "%=", - ">>=", - "<<=", - ">>>=", - "|=", - "^=", - "&=", - "&&", - "||" -]); - -var WHITESPACE_CHARS = makePredicate(characters(" \u00a0\n\r\t\f\u000b\u200b\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000")); - -var PUNC_BEFORE_EXPRESSION = makePredicate(characters("[{(,.;:")); - -var PUNC_CHARS = makePredicate(characters("[]{}(),;:")); - -var REGEXP_MODIFIERS = makePredicate(characters("gmsiy")); - -/* -----[ Tokenizer ]----- */ - -// regexps adapted from http://xregexp.com/plugins/#unicode -var UNICODE = { - letter: new RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0523\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0621-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971\\u0972\\u097B-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D28\\u0D2A-\\u0D39\\u0D3D\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC\\u0EDD\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8B\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10D0-\\u10FA\\u10FC\\u1100-\\u1159\\u115F-\\u11A2\\u11A8-\\u11F9\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u1676\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19A9\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u2094\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C6F\\u2C71-\\u2C7D\\u2C80-\\u2CE4\\u2D00-\\u2D25\\u2D30-\\u2D65\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31B7\\u31F0-\\u31FF\\u3400\\u4DB5\\u4E00\\u9FC3\\uA000-\\uA48C\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA65F\\uA662-\\uA66E\\uA67F-\\uA697\\uA717-\\uA71F\\uA722-\\uA788\\uA78B\\uA78C\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA90A-\\uA925\\uA930-\\uA946\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAC00\\uD7A3\\uF900-\\uFA2D\\uFA30-\\uFA6A\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]"), - non_spacing_mark: new RegExp("[\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065E\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0900-\\u0902\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F90-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1DC0-\\u1DE6\\u1DFD-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F\\uA67C\\uA67D\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26]"), - space_combining_mark: new RegExp("[\\u0903\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A19-\\u1A1B\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC]"), - connector_punctuation: new RegExp("[\\u005F\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F]") -}; - -function is_letter(code) { - return (code >= 97 && code <= 122) - || (code >= 65 && code <= 90) - || (code >= 0xaa && UNICODE.letter.test(String.fromCharCode(code))); -}; - -function is_digit(code) { - return code >= 48 && code <= 57; //XXX: find out if "UnicodeDigit" means something else than 0..9 -}; - -function is_alphanumeric_char(code) { - return is_digit(code) || is_letter(code); -}; - -function is_unicode_combining_mark(ch) { - return UNICODE.non_spacing_mark.test(ch) || UNICODE.space_combining_mark.test(ch); -}; - -function is_unicode_connector_punctuation(ch) { - return UNICODE.connector_punctuation.test(ch); -}; - -function is_identifier(name) { - return /^[a-z_$][a-z0-9_$]*$/i.test(name) && !RESERVED_WORDS(name); -}; - -function is_identifier_start(code) { - return code == 36 || code == 95 || is_letter(code); -}; - -function is_identifier_char(ch) { - var code = ch.charCodeAt(0); - return is_identifier_start(code) - || is_digit(code) - || code == 8204 // \u200c: zero-width non-joiner - || code == 8205 // \u200d: zero-width joiner (in my ECMA-262 PDF, this is also 200c) - || is_unicode_combining_mark(ch) - || is_unicode_connector_punctuation(ch) - ; -}; - -function parse_js_number(num) { - if (RE_HEX_NUMBER.test(num)) { - return parseInt(num.substr(2), 16); - } else if (RE_OCT_NUMBER.test(num)) { - return parseInt(num.substr(1), 8); - } else if (RE_DEC_NUMBER.test(num)) { - return parseFloat(num); - } -}; - -function JS_Parse_Error(message, line, col, pos) { - this.message = message; - this.line = line; - this.col = col; - this.pos = pos; - this.stack = new Error().stack; -}; - -JS_Parse_Error.prototype.toString = function() { - return this.message + " (line: " + this.line + ", col: " + this.col + ", pos: " + this.pos + ")" + "\n\n" + this.stack; -}; - -function js_error(message, filename, line, col, pos) { - AST_Node.warn("ERROR: {message} [{file}:{line},{col}]", { - message: message, - file: filename, - line: line, - col: col - }); - throw new JS_Parse_Error(message, line, col, pos); -}; - -function is_token(token, type, val) { - return token.type == type && (val == null || token.value == val); -}; - -var EX_EOF = {}; - -function tokenizer($TEXT, filename) { - - var S = { - text : $TEXT.replace(/\r\n?|[\n\u2028\u2029]/g, "\n").replace(/\uFEFF/g, ''), - filename : filename, - pos : 0, - tokpos : 0, - line : 1, - tokline : 0, - col : 0, - tokcol : 0, - newline_before : false, - regex_allowed : false, - comments_before : [] - }; - - function peek() { return S.text.charAt(S.pos); }; - - function next(signal_eof, in_string) { - var ch = S.text.charAt(S.pos++); - if (signal_eof && !ch) - throw EX_EOF; - if (ch == "\n") { - S.newline_before = S.newline_before || !in_string; - ++S.line; - S.col = 0; - } else { - ++S.col; - } - return ch; - }; - - function find(what, signal_eof) { - var pos = S.text.indexOf(what, S.pos); - if (signal_eof && pos == -1) throw EX_EOF; - return pos; - }; - - function start_token() { - S.tokline = S.line; - S.tokcol = S.col; - S.tokpos = S.pos; - }; - - function token(type, value, is_comment) { - S.regex_allowed = ((type == "operator" && !UNARY_POSTFIX[value]) || - (type == "keyword" && KEYWORDS_BEFORE_EXPRESSION(value)) || - (type == "punc" && PUNC_BEFORE_EXPRESSION(value))); - var ret = { - type : type, - value : value, - line : S.tokline, - col : S.tokcol, - pos : S.tokpos, - endpos : S.pos, - nlb : S.newline_before, - file : filename - }; - if (!is_comment) { - ret.comments_before = S.comments_before; - S.comments_before = []; - // make note of any newlines in the comments that came before - for (var i = 0, len = ret.comments_before.length; i < len; i++) { - ret.nlb = ret.nlb || ret.comments_before[i].nlb; - } - } - S.newline_before = false; - return new AST_Token(ret); - }; - - function skip_whitespace() { - while (WHITESPACE_CHARS(peek())) - next(); - }; - - function read_while(pred) { - var ret = "", ch, i = 0; - while ((ch = peek()) && pred(ch, i++)) - ret += next(); - return ret; - }; - - function parse_error(err) { - js_error(err, filename, S.tokline, S.tokcol, S.tokpos); - }; - - function read_num(prefix) { - var has_e = false, after_e = false, has_x = false, has_dot = prefix == "."; - var num = read_while(function(ch, i){ - var code = ch.charCodeAt(0); - switch (code) { - case 120: case 88: // xX - return has_x ? false : (has_x = true); - case 101: case 69: // eE - return has_x ? true : has_e ? false : (has_e = after_e = true); - case 45: // - - return after_e || (i == 0 && !prefix); - case 43: // + - return after_e; - case (after_e = false, 46): // . - return (!has_dot && !has_x && !has_e) ? (has_dot = true) : false; - } - return is_alphanumeric_char(code); - }); - if (prefix) num = prefix + num; - var valid = parse_js_number(num); - if (!isNaN(valid)) { - return token("num", valid); - } else { - parse_error("Invalid syntax: " + num); - } - }; - - function read_escaped_char(in_string) { - var ch = next(true, in_string); - switch (ch.charCodeAt(0)) { - case 110 : return "\n"; - case 114 : return "\r"; - case 116 : return "\t"; - case 98 : return "\b"; - case 118 : return "\u000b"; // \v - case 102 : return "\f"; - case 48 : return "\0"; - case 120 : return String.fromCharCode(hex_bytes(2)); // \x - case 117 : return String.fromCharCode(hex_bytes(4)); // \u - case 10 : return ""; // newline - default : return ch; - } - }; - - function hex_bytes(n) { - var num = 0; - for (; n > 0; --n) { - var digit = parseInt(next(true), 16); - if (isNaN(digit)) - parse_error("Invalid hex-character pattern in string"); - num = (num << 4) | digit; - } - return num; - }; - - var read_string = with_eof_error("Unterminated string constant", function(){ - var quote = next(), ret = ""; - for (;;) { - var ch = next(true); - if (ch == "\\") { - // read OctalEscapeSequence (XXX: deprecated if "strict mode") - // https://github.com/mishoo/UglifyJS/issues/178 - var octal_len = 0, first = null; - ch = read_while(function(ch){ - if (ch >= "0" && ch <= "7") { - if (!first) { - first = ch; - return ++octal_len; - } - else if (first <= "3" && octal_len <= 2) return ++octal_len; - else if (first >= "4" && octal_len <= 1) return ++octal_len; - } - return false; - }); - if (octal_len > 0) ch = String.fromCharCode(parseInt(ch, 8)); - else ch = read_escaped_char(true); - } - else if (ch == quote) break; - ret += ch; - } - return token("string", ret); - }); - - function read_line_comment() { - next(); - var i = find("\n"), ret; - if (i == -1) { - ret = S.text.substr(S.pos); - S.pos = S.text.length; - } else { - ret = S.text.substring(S.pos, i); - S.pos = i; - } - return token("comment1", ret, true); - }; - - var read_multiline_comment = with_eof_error("Unterminated multiline comment", function(){ - next(); - var i = find("*/", true); - var text = S.text.substring(S.pos, i); - var a = text.split("\n"), n = a.length; - // update stream position - S.pos = i + 2; - S.line += n - 1; - if (n > 1) S.col = a[n - 1].length; - else S.col += a[n - 1].length; - S.col += 2; - S.newline_before = S.newline_before || text.indexOf("\n") >= 0; - return token("comment2", text, true); - }); - - function read_name() { - var backslash = false, name = "", ch, escaped = false, hex; - while ((ch = peek()) != null) { - if (!backslash) { - if (ch == "\\") escaped = backslash = true, next(); - else if (is_identifier_char(ch)) name += next(); - else break; - } - else { - if (ch != "u") parse_error("Expecting UnicodeEscapeSequence -- uXXXX"); - ch = read_escaped_char(); - if (!is_identifier_char(ch)) parse_error("Unicode char: " + ch.charCodeAt(0) + " is not valid in identifier"); - name += ch; - backslash = false; - } - } - if (KEYWORDS(name) && escaped) { - hex = name.charCodeAt(0).toString(16).toUpperCase(); - name = "\\u" + "0000".substr(hex.length) + hex + name.slice(1); - } - return name; - }; - - var read_regexp = with_eof_error("Unterminated regular expression", function(regexp){ - var prev_backslash = false, ch, in_class = false; - while ((ch = next(true))) if (prev_backslash) { - regexp += "\\" + ch; - prev_backslash = false; - } else if (ch == "[") { - in_class = true; - regexp += ch; - } else if (ch == "]" && in_class) { - in_class = false; - regexp += ch; - } else if (ch == "/" && !in_class) { - break; - } else if (ch == "\\") { - prev_backslash = true; - } else { - regexp += ch; - } - var mods = read_name(); - return token("regexp", new RegExp(regexp, mods)); - }); - - function read_operator(prefix) { - function grow(op) { - if (!peek()) return op; - var bigger = op + peek(); - if (OPERATORS(bigger)) { - next(); - return grow(bigger); - } else { - return op; - } - }; - return token("operator", grow(prefix || next())); - }; - - function handle_slash() { - next(); - var regex_allowed = S.regex_allowed; - switch (peek()) { - case "/": - S.comments_before.push(read_line_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - case "*": - S.comments_before.push(read_multiline_comment()); - S.regex_allowed = regex_allowed; - return next_token(); - } - return S.regex_allowed ? read_regexp("") : read_operator("/"); - }; - - function handle_dot() { - next(); - return is_digit(peek().charCodeAt(0)) - ? read_num(".") - : token("punc", "."); - }; - - function read_word() { - var word = read_name(); - return KEYWORDS_ATOM(word) ? token("atom", word) - : !KEYWORDS(word) ? token("name", word) - : OPERATORS(word) ? token("operator", word) - : token("keyword", word); - }; - - function with_eof_error(eof_error, cont) { - return function(x) { - try { - return cont(x); - } catch(ex) { - if (ex === EX_EOF) parse_error(eof_error); - else throw ex; - } - }; - }; - - function next_token(force_regexp) { - if (force_regexp != null) - return read_regexp(force_regexp); - skip_whitespace(); - start_token(); - var ch = peek(); - if (!ch) return token("eof"); - var code = ch.charCodeAt(0); - switch (code) { - case 34: case 39: return read_string(); - case 46: return handle_dot(); - case 47: return handle_slash(); - } - if (is_digit(code)) return read_num(); - if (PUNC_CHARS(ch)) return token("punc", next()); - if (OPERATOR_CHARS(ch)) return read_operator(); - if (code == 92 || is_identifier_start(code)) return read_word(); - parse_error("Unexpected character '" + ch + "'"); - }; - - next_token.context = function(nc) { - if (nc) S = nc; - return S; - }; - - return next_token; - -}; - -/* -----[ Parser (constants) ]----- */ - -var UNARY_PREFIX = makePredicate([ - "typeof", - "void", - "delete", - "--", - "++", - "!", - "~", - "-", - "+" -]); - -var UNARY_POSTFIX = makePredicate([ "--", "++" ]); - -var ASSIGNMENT = makePredicate([ "=", "+=", "-=", "/=", "*=", "%=", ">>=", "<<=", ">>>=", "|=", "^=", "&=" ]); - -var PRECEDENCE = (function(a, ret){ - for (var i = 0, n = 1; i < a.length; ++i, ++n) { - var b = a[i]; - for (var j = 0; j < b.length; ++j) { - ret[b[j]] = n; - } - } - return ret; -})( - [ - ["||"], - ["&&"], - ["|"], - ["^"], - ["&"], - ["==", "===", "!=", "!=="], - ["<", ">", "<=", ">=", "in", "instanceof"], - [">>", "<<", ">>>"], - ["+", "-"], - ["*", "/", "%"] - ], - {} -); - -var STATEMENTS_WITH_LABELS = array_to_hash([ "for", "do", "while", "switch" ]); - -var ATOMIC_START_TOKEN = array_to_hash([ "atom", "num", "string", "regexp", "name" ]); - -/* -----[ Parser ]----- */ - -function parse($TEXT, options) { - - options = defaults(options, { - strict : false, - filename : null, - toplevel : null - }); - - var S = { - input : typeof $TEXT == "string" ? tokenizer($TEXT, options.filename) : $TEXT, - token : null, - prev : null, - peeked : null, - in_function : 0, - in_directives : true, - in_loop : 0, - labels : [] - }; - - S.token = next(); - - function is(type, value) { - return is_token(S.token, type, value); - }; - - function peek() { return S.peeked || (S.peeked = S.input()); }; - - function next() { - S.prev = S.token; - if (S.peeked) { - S.token = S.peeked; - S.peeked = null; - } else { - S.token = S.input(); - } - S.in_directives = S.in_directives && ( - S.token.type == "string" || is("punc", ";") - ); - return S.token; - }; - - function prev() { - return S.prev; - }; - - function croak(msg, line, col, pos) { - var ctx = S.input.context(); - js_error(msg, - ctx.filename, - line != null ? line : ctx.tokline, - col != null ? col : ctx.tokcol, - pos != null ? pos : ctx.tokpos); - }; - - function token_error(token, msg) { - croak(msg, token.line, token.col); - }; - - function unexpected(token) { - if (token == null) - token = S.token; - token_error(token, "Unexpected token: " + token.type + " (" + token.value + ")"); - }; - - function expect_token(type, val) { - if (is(type, val)) { - return next(); - } - token_error(S.token, "Unexpected token " + S.token.type + " «" + S.token.value + "»" + ", expected " + type + " «" + val + "»"); - }; - - function expect(punc) { return expect_token("punc", punc); }; - - function can_insert_semicolon() { - return !options.strict && ( - S.token.nlb || is("eof") || is("punc", "}") - ); - }; - - function semicolon() { - if (is("punc", ";")) next(); - else if (!can_insert_semicolon()) unexpected(); - }; - - function parenthesised() { - expect("("); - var exp = expression(true); - expect(")"); - return exp; - }; - - function embed_tokens(parser) { - return function() { - var start = S.token; - var expr = parser(); - var end = prev(); - expr.start = start; - expr.end = end; - return expr; - }; - }; - - var statement = embed_tokens(function() { - var tmp; - if (is("operator", "/") || is("operator", "/=")) { - S.peeked = null; - S.token = S.input(S.token.value.substr(1)); // force regexp - } - switch (S.token.type) { - case "string": - var dir = S.in_directives, stat = simple_statement(); - // XXXv2: decide how to fix directives - if (dir && stat.body instanceof AST_String && !is("punc", ",")) - return new AST_Directive({ value: stat.body.value }); - return stat; - case "num": - case "regexp": - case "operator": - case "atom": - return simple_statement(); - - case "name": - return is_token(peek(), "punc", ":") - ? labeled_statement() - : simple_statement(); - - case "punc": - switch (S.token.value) { - case "{": - return new AST_BlockStatement({ - start : S.token, - body : block_(), - end : prev() - }); - case "[": - case "(": - return simple_statement(); - case ";": - next(); - return new AST_EmptyStatement(); - default: - unexpected(); - } - - case "keyword": - switch (tmp = S.token.value, next(), tmp) { - case "break": - return break_cont(AST_Break); - - case "continue": - return break_cont(AST_Continue); - - case "debugger": - semicolon(); - return new AST_Debugger(); - - case "do": - return new AST_Do({ - body : in_loop(statement), - condition : (expect_token("keyword", "while"), tmp = parenthesised(), semicolon(), tmp) - }); - - case "while": - return new AST_While({ - condition : parenthesised(), - body : in_loop(statement) - }); - - case "for": - return for_(); - - case "function": - return function_(true); - - case "if": - return if_(); - - case "return": - if (S.in_function == 0) - croak("'return' outside of function"); - return new AST_Return({ - value: ( is("punc", ";") - ? (next(), null) - : can_insert_semicolon() - ? null - : (tmp = expression(true), semicolon(), tmp) ) - }); - - case "switch": - return new AST_Switch({ - expression : parenthesised(), - body : in_loop(switch_body_) - }); - - case "throw": - if (S.token.nlb) - croak("Illegal newline after 'throw'"); - return new AST_Throw({ - value: (tmp = expression(true), semicolon(), tmp) - }); - - case "try": - return try_(); - - case "var": - return tmp = var_(), semicolon(), tmp; - - case "const": - return tmp = const_(), semicolon(), tmp; - - case "with": - return new AST_With({ - expression : parenthesised(), - body : statement() - }); - - default: - unexpected(); - } - } - }); - - function labeled_statement() { - var label = as_symbol(AST_Label); - if (find_if(function(l){ return l.name == label.name }, S.labels)) { - // ECMA-262, 12.12: An ECMAScript program is considered - // syntactically incorrect if it contains a - // LabelledStatement that is enclosed by a - // LabelledStatement with the same Identifier as label. - croak("Label " + label.name + " defined twice"); - } - expect(":"); - S.labels.push(label); - var stat = statement(); - S.labels.pop(); - return new AST_LabeledStatement({ body: stat, label: label }); - }; - - function simple_statement(tmp) { - return new AST_SimpleStatement({ body: (tmp = expression(true), semicolon(), tmp) }); - }; - - function break_cont(type) { - var label = null; - if (!can_insert_semicolon()) { - label = as_symbol(AST_LabelRef, true); - } - if (label != null) { - if (!find_if(function(l){ return l.name == label.name }, S.labels)) - croak("Undefined label " + label.name); - } - else if (S.in_loop == 0) - croak(type.TYPE + " not inside a loop or switch"); - semicolon(); - return new type({ label: label }); - }; - - function for_() { - expect("("); - var init = null; - if (!is("punc", ";")) { - init = is("keyword", "var") - ? (next(), var_(true)) - : expression(true, true); - if (is("operator", "in")) { - if (init instanceof AST_Var && init.definitions.length > 1) - croak("Only one variable declaration allowed in for..in loop"); - next(); - return for_in(init); - } - } - return regular_for(init); - }; - - function regular_for(init) { - expect(";"); - var test = is("punc", ";") ? null : expression(true); - expect(";"); - var step = is("punc", ")") ? null : expression(true); - expect(")"); - return new AST_For({ - init : init, - condition : test, - step : step, - body : in_loop(statement) - }); - }; - - function for_in(init) { - var lhs = init instanceof AST_Var ? init.definitions[0].name : null; - var obj = expression(true); - expect(")"); - return new AST_ForIn({ - init : init, - name : lhs, - object : obj, - body : in_loop(statement) - }); - }; - - var function_ = function(in_statement, ctor) { - var is_accessor = ctor === AST_Accessor; - var name = (is("name") ? as_symbol(in_statement - ? AST_SymbolDefun - : is_accessor - ? AST_SymbolAccessor - : AST_SymbolLambda) - : is_accessor && (is("string") || is("num")) ? as_atom_node() - : null); - if (in_statement && !name) - unexpected(); - expect("("); - if (!ctor) ctor = in_statement ? AST_Defun : AST_Function; - return new ctor({ - name: name, - argnames: (function(first, a){ - while (!is("punc", ")")) { - if (first) first = false; else expect(","); - a.push(as_symbol(AST_SymbolFunarg)); - } - next(); - return a; - })(true, []), - body: (function(loop, labels){ - ++S.in_function; - S.in_directives = true; - S.in_loop = 0; - S.labels = []; - var a = block_(); - --S.in_function; - S.in_loop = loop; - S.labels = labels; - return a; - })(S.in_loop, S.labels) - }); - }; - - function if_() { - var cond = parenthesised(), body = statement(), belse = null; - if (is("keyword", "else")) { - next(); - belse = statement(); - } - return new AST_If({ - condition : cond, - body : body, - alternative : belse - }); - }; - - function block_() { - expect("{"); - var a = []; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - a.push(statement()); - } - next(); - return a; - }; - - function switch_body_() { - expect("{"); - var a = [], cur = null, branch = null, tmp; - while (!is("punc", "}")) { - if (is("eof")) unexpected(); - if (is("keyword", "case")) { - if (branch) branch.end = prev(); - cur = []; - branch = new AST_Case({ - start : (tmp = S.token, next(), tmp), - expression : expression(true), - body : cur - }); - a.push(branch); - expect(":"); - } - else if (is("keyword", "default")) { - if (branch) branch.end = prev(); - cur = []; - branch = new AST_Default({ - start : (tmp = S.token, next(), expect(":"), tmp), - body : cur - }); - a.push(branch); - } - else { - if (!cur) unexpected(); - cur.push(statement()); - } - } - if (branch) branch.end = prev(); - next(); - return a; - }; - - function try_() { - var body = block_(), bcatch = null, bfinally = null; - if (is("keyword", "catch")) { - var start = S.token; - next(); - expect("("); - var name = as_symbol(AST_SymbolCatch); - expect(")"); - bcatch = new AST_Catch({ - start : start, - argname : name, - body : block_(), - end : prev() - }); - } - if (is("keyword", "finally")) { - var start = S.token; - next(); - bfinally = new AST_Finally({ - start : start, - body : block_(), - end : prev() - }); - } - if (!bcatch && !bfinally) - croak("Missing catch/finally blocks"); - return new AST_Try({ - body : body, - bcatch : bcatch, - bfinally : bfinally - }); - }; - - function vardefs(no_in, in_const) { - var a = []; - for (;;) { - a.push(new AST_VarDef({ - start : S.token, - name : as_symbol(in_const ? AST_SymbolConst : AST_SymbolVar), - value : is("operator", "=") ? (next(), expression(false, no_in)) : null, - end : prev() - })); - if (!is("punc", ",")) - break; - next(); - } - return a; - }; - - var var_ = function(no_in) { - return new AST_Var({ - start : prev(), - definitions : vardefs(no_in, false), - end : prev() - }); - }; - - var const_ = function() { - return new AST_Const({ - start : prev(), - definitions : vardefs(false, true), - end : prev() - }); - }; - - var new_ = function() { - var start = S.token; - expect_token("operator", "new"); - var newexp = expr_atom(false), args; - if (is("punc", "(")) { - next(); - args = expr_list(")"); - } else { - args = []; - } - return subscripts(new AST_New({ - start : start, - expression : newexp, - args : args, - end : prev() - }), true); - }; - - function as_atom_node() { - var tok = S.token, ret; - switch (tok.type) { - case "name": - return as_symbol(AST_SymbolRef); - case "num": - ret = new AST_Number({ start: tok, end: tok, value: tok.value }); - break; - case "string": - ret = new AST_String({ start: tok, end: tok, value: tok.value }); - break; - case "regexp": - ret = new AST_RegExp({ start: tok, end: tok, value: tok.value }); - break; - case "atom": - switch (tok.value) { - case "false": - ret = new AST_False({ start: tok, end: tok }); - break; - case "true": - ret = new AST_True({ start: tok, end: tok }); - break; - case "null": - ret = new AST_Null({ start: tok, end: tok }); - break; - } - break; - } - next(); - return ret; - }; - - var expr_atom = function(allow_calls) { - if (is("operator", "new")) { - return new_(); - } - var start = S.token; - if (is("punc")) { - switch (start.value) { - case "(": - next(); - var ex = expression(true); - ex.start = start; - ex.end = S.token; - expect(")"); - return subscripts(ex, allow_calls); - case "[": - return subscripts(array_(), allow_calls); - case "{": - return subscripts(object_(), allow_calls); - } - unexpected(); - } - if (is("keyword", "function")) { - next(); - var func = function_(false); - func.start = start; - func.end = prev(); - return subscripts(func, allow_calls); - } - if (ATOMIC_START_TOKEN[S.token.type]) { - return subscripts(as_atom_node(), allow_calls); - } - unexpected(); - }; - - function expr_list(closing, allow_trailing_comma, allow_empty) { - var first = true, a = []; - while (!is("punc", closing)) { - if (first) first = false; else expect(","); - if (allow_trailing_comma && is("punc", closing)) break; - if (is("punc", ",") && allow_empty) { - a.push(new AST_Hole({ start: S.token, end: S.token })); - } else { - a.push(expression(false)); - } - } - next(); - return a; - }; - - var array_ = embed_tokens(function() { - expect("["); - return new AST_Array({ - elements: expr_list("]", !options.strict, true) - }); - }); - - var object_ = embed_tokens(function() { - expect("{"); - var first = true, a = []; - while (!is("punc", "}")) { - if (first) first = false; else expect(","); - if (!options.strict && is("punc", "}")) - // allow trailing comma - break; - var start = S.token; - var type = start.type; - var name = as_property_name(); - if (type == "name" && !is("punc", ":")) { - if (name == "get") { - a.push(new AST_ObjectGetter({ - start : start, - key : name, - value : function_(false, AST_Accessor), - end : prev() - })); - continue; - } - if (name == "set") { - a.push(new AST_ObjectSetter({ - start : start, - key : name, - value : function_(false, AST_Accessor), - end : prev() - })); - continue; - } - } - expect(":"); - a.push(new AST_ObjectKeyVal({ - start : start, - key : name, - value : expression(false), - end : prev() - })); - } - next(); - return new AST_Object({ properties: a }); - }); - - function as_property_name() { - var tmp = S.token; - next(); - switch (tmp.type) { - case "num": - case "string": - case "name": - case "operator": - case "keyword": - case "atom": - return tmp.value; - default: - unexpected(); - } - }; - - function as_name() { - var tmp = S.token; - next(); - switch (tmp.type) { - case "name": - case "operator": - case "keyword": - case "atom": - return tmp.value; - default: - unexpected(); - } - }; - - function as_symbol(type, noerror) { - if (!is("name")) { - if (!noerror) croak("Name expected"); - return null; - } - var name = S.token.value; - var sym = new (name == "this" ? AST_This : type)({ - name : String(S.token.value), - start : S.token, - end : S.token - }); - next(); - return sym; - }; - - var subscripts = function(expr, allow_calls) { - var start = expr.start; - if (is("punc", ".")) { - next(); - return subscripts(new AST_Dot({ - start : start, - expression : expr, - property : as_name(), - end : prev() - }), allow_calls); - } - if (is("punc", "[")) { - next(); - var prop = expression(true); - expect("]"); - return subscripts(new AST_Sub({ - start : start, - expression : expr, - property : prop, - end : prev() - }), allow_calls); - } - if (allow_calls && is("punc", "(")) { - next(); - return subscripts(new AST_Call({ - start : start, - expression : expr, - args : expr_list(")"), - end : prev() - }), true); - } - return expr; - }; - - var maybe_unary = function(allow_calls) { - var start = S.token; - if (is("operator") && UNARY_PREFIX(start.value)) { - next(); - var ex = make_unary(AST_UnaryPrefix, start.value, maybe_unary(allow_calls)); - ex.start = start; - ex.end = prev(); - return ex; - } - var val = expr_atom(allow_calls); - while (is("operator") && UNARY_POSTFIX(S.token.value) && !S.token.nlb) { - val = make_unary(AST_UnaryPostfix, S.token.value, val); - val.start = start; - val.end = S.token; - next(); - } - return val; - }; - - function make_unary(ctor, op, expr) { - if ((op == "++" || op == "--") && !is_assignable(expr)) - croak("Invalid use of " + op + " operator"); - return new ctor({ operator: op, expression: expr }); - }; - - var expr_op = function(left, min_prec, no_in) { - var op = is("operator") ? S.token.value : null; - if (op == "in" && no_in) op = null; - var prec = op != null ? PRECEDENCE[op] : null; - if (prec != null && prec > min_prec) { - next(); - var right = expr_op(maybe_unary(true), prec, no_in); - return expr_op(new AST_Binary({ - start : left.start, - left : left, - operator : op, - right : right, - end : right.end - }), min_prec, no_in); - } - return left; - }; - - function expr_ops(no_in) { - return expr_op(maybe_unary(true), 0, no_in); - }; - - var maybe_conditional = function(no_in) { - var start = S.token; - var expr = expr_ops(no_in); - if (is("operator", "?")) { - next(); - var yes = expression(false); - expect(":"); - return new AST_Conditional({ - start : start, - condition : expr, - consequent : yes, - alternative : expression(false, no_in), - end : peek() - }); - } - return expr; - }; - - function is_assignable(expr) { - if (!options.strict) return true; - switch (expr[0]+"") { - case "dot": - case "sub": - case "new": - case "call": - return true; - case "name": - return expr[1] != "this"; - } - }; - - var maybe_assign = function(no_in) { - var start = S.token; - var left = maybe_conditional(no_in), val = S.token.value; - if (is("operator") && ASSIGNMENT(val)) { - if (is_assignable(left)) { - next(); - return new AST_Assign({ - start : start, - left : left, - operator : val, - right : maybe_assign(no_in), - end : prev() - }); - } - croak("Invalid assignment"); - } - return left; - }; - - var expression = function(commas, no_in) { - var start = S.token; - var expr = maybe_assign(no_in); - if (commas && is("punc", ",")) { - next(); - return new AST_Seq({ - start : start, - car : expr, - cdr : expression(true, no_in), - end : peek() - }); - } - return expr; - }; - - function in_loop(cont) { - ++S.in_loop; - var ret = cont(); - --S.in_loop; - return ret; - }; - - return (function(){ - var start = S.token; - var body = []; - while (!is("eof")) - body.push(statement()); - var end = prev(); - var toplevel = options.toplevel; - if (toplevel) { - toplevel.body = toplevel.body.concat(body); - toplevel.end = end; - } else { - toplevel = new AST_Toplevel({ start: start, body: body, end: end }); - } - return toplevel; - })(); - -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js deleted file mode 100644 index f23f6eb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/scope.js +++ /dev/null @@ -1,580 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -function SymbolDef(scope, index, orig) { - this.name = orig.name; - this.orig = [ orig ]; - this.scope = scope; - this.references = []; - this.global = false; - this.mangled_name = null; - this.undeclared = false; - this.constant = false; - this.index = index; -}; - -SymbolDef.prototype = { - unmangleable: function(options) { - return this.global - || this.undeclared - || (!(options && options.eval) && (this.scope.uses_eval || this.scope.uses_with)); - }, - mangle: function(options) { - if (!this.mangled_name && !this.unmangleable(options)) - this.mangled_name = this.scope.next_mangled(options); - } -}; - -AST_Toplevel.DEFMETHOD("figure_out_scope", function(){ - // This does what ast_add_scope did in UglifyJS v1. - // - // Part of it could be done at parse time, but it would complicate - // the parser (and it's already kinda complex). It's also worth - // having it separated because we might need to call it multiple - // times on the same tree. - - // pass 1: setup scope chaining and handle definitions - var self = this; - var scope = self.parent_scope = null; - var labels = new Dictionary(); - var nesting = 0; - var tw = new TreeWalker(function(node, descend){ - if (node instanceof AST_Scope) { - node.init_scope_vars(nesting); - var save_scope = node.parent_scope = scope; - var save_labels = labels; - ++nesting; - scope = node; - labels = new Dictionary(); - descend(); - labels = save_labels; - scope = save_scope; - --nesting; - return true; // don't descend again in TreeWalker - } - if (node instanceof AST_Directive) { - node.scope = scope; - push_uniq(scope.directives, node.value); - return true; - } - if (node instanceof AST_With) { - for (var s = scope; s; s = s.parent_scope) - s.uses_with = true; - return; - } - if (node instanceof AST_LabeledStatement) { - var l = node.label; - if (labels.has(l.name)) - throw new Error(string_template("Label {name} defined twice", l)); - labels.set(l.name, l); - descend(); - labels.del(l.name); - return true; // no descend again - } - if (node instanceof AST_Symbol) { - node.scope = scope; - } - if (node instanceof AST_Label) { - node.thedef = node; - node.init_scope_vars(); - } - if (node instanceof AST_SymbolLambda) { - //scope.def_function(node); - // - // https://github.com/mishoo/UglifyJS2/issues/24 — MSIE - // leaks function expression names into the containing - // scope. Don't like this fix but seems we can't do any - // better. IE: please die. Please! - (node.scope = scope.parent_scope).def_function(node); - } - else if (node instanceof AST_SymbolDefun) { - // Careful here, the scope where this should be defined is - // the parent scope. The reason is that we enter a new - // scope when we encounter the AST_Defun node (which is - // instanceof AST_Scope) but we get to the symbol a bit - // later. - (node.scope = scope.parent_scope).def_function(node); - } - else if (node instanceof AST_SymbolVar - || node instanceof AST_SymbolConst) { - var def = scope.def_variable(node); - def.constant = node instanceof AST_SymbolConst; - def.init = tw.parent().value; - } - else if (node instanceof AST_SymbolCatch) { - // XXX: this is wrong according to ECMA-262 (12.4). the - // `catch` argument name should be visible only inside the - // catch block. For a quick fix AST_Catch should inherit - // from AST_Scope. Keeping it this way because of IE, - // which doesn't obey the standard. (it introduces the - // identifier in the enclosing scope) - scope.def_variable(node); - } - if (node instanceof AST_LabelRef) { - var sym = labels.get(node.name); - if (!sym) throw new Error(string_template("Undefined label {name} [{line},{col}]", { - name: node.name, - line: node.start.line, - col: node.start.col - })); - node.thedef = sym; - } - }); - self.walk(tw); - - // pass 2: find back references and eval - var func = null; - var globals = self.globals = new Dictionary(); - var tw = new TreeWalker(function(node, descend){ - if (node instanceof AST_Lambda) { - var prev_func = func; - func = node; - descend(); - func = prev_func; - return true; - } - if (node instanceof AST_LabelRef) { - node.reference(); - return true; - } - if (node instanceof AST_SymbolRef) { - var name = node.name; - var sym = node.scope.find_variable(name); - if (!sym) { - var g; - if (globals.has(name)) { - g = globals.get(name); - } else { - g = new SymbolDef(self, globals.size(), node); - g.undeclared = true; - globals.set(name, g); - } - node.thedef = g; - if (name == "eval" && tw.parent() instanceof AST_Call) { - for (var s = node.scope; s && !s.uses_eval; s = s.parent_scope) - s.uses_eval = true; - } - if (name == "arguments") { - func.uses_arguments = true; - } - } else { - node.thedef = sym; - } - node.reference(); - return true; - } - }); - self.walk(tw); -}); - -AST_Scope.DEFMETHOD("init_scope_vars", function(nesting){ - this.directives = []; // contains the directives defined in this scope, i.e. "use strict" - this.variables = new Dictionary(); // map name to AST_SymbolVar (variables defined in this scope; includes functions) - this.functions = new Dictionary(); // map name to AST_SymbolDefun (functions defined in this scope) - this.uses_with = false; // will be set to true if this or some nested scope uses the `with` statement - this.uses_eval = false; // will be set to true if this or nested scope uses the global `eval` - this.parent_scope = null; // the parent scope - this.enclosed = []; // a list of variables from this or outer scope(s) that are referenced from this or inner scopes - this.cname = -1; // the current index for mangling functions/variables - this.nesting = nesting; // the nesting level of this scope (0 means toplevel) -}); - -AST_Scope.DEFMETHOD("strict", function(){ - return this.has_directive("use strict"); -}); - -AST_Lambda.DEFMETHOD("init_scope_vars", function(){ - AST_Scope.prototype.init_scope_vars.apply(this, arguments); - this.uses_arguments = false; -}); - -AST_SymbolRef.DEFMETHOD("reference", function() { - var def = this.definition(); - def.references.push(this); - var s = this.scope; - while (s) { - push_uniq(s.enclosed, def); - if (s === def.scope) break; - s = s.parent_scope; - } - this.frame = this.scope.nesting - def.scope.nesting; -}); - -AST_Label.DEFMETHOD("init_scope_vars", function(){ - this.references = []; -}); - -AST_LabelRef.DEFMETHOD("reference", function(){ - this.thedef.references.push(this); -}); - -AST_Scope.DEFMETHOD("find_variable", function(name){ - if (name instanceof AST_Symbol) name = name.name; - return this.variables.get(name) - || (this.parent_scope && this.parent_scope.find_variable(name)); -}); - -AST_Scope.DEFMETHOD("has_directive", function(value){ - return this.parent_scope && this.parent_scope.has_directive(value) - || (this.directives.indexOf(value) >= 0 ? this : null); -}); - -AST_Scope.DEFMETHOD("def_function", function(symbol){ - this.functions.set(symbol.name, this.def_variable(symbol)); -}); - -AST_Scope.DEFMETHOD("def_variable", function(symbol){ - var def; - if (!this.variables.has(symbol.name)) { - def = new SymbolDef(this, this.variables.size(), symbol); - this.variables.set(symbol.name, def); - def.global = !this.parent_scope; - } else { - def = this.variables.get(symbol.name); - def.orig.push(symbol); - } - return symbol.thedef = def; -}); - -AST_Scope.DEFMETHOD("next_mangled", function(options){ - var ext = this.enclosed, n = ext.length; - out: while (true) { - var m = base54(++this.cname); - if (!is_identifier(m)) continue; // skip over "do" - // we must ensure that the mangled name does not shadow a name - // from some parent scope that is referenced in this or in - // inner scopes. - for (var i = n; --i >= 0;) { - var sym = ext[i]; - var name = sym.mangled_name || (sym.unmangleable(options) && sym.name); - if (m == name) continue out; - } - return m; - } -}); - -AST_Scope.DEFMETHOD("references", function(sym){ - if (sym instanceof AST_Symbol) sym = sym.definition(); - return this.enclosed.indexOf(sym) < 0 ? null : sym; -}); - -AST_Symbol.DEFMETHOD("unmangleable", function(options){ - return this.definition().unmangleable(options); -}); - -// property accessors are not mangleable -AST_SymbolAccessor.DEFMETHOD("unmangleable", function(){ - return true; -}); - -// labels are always mangleable -AST_Label.DEFMETHOD("unmangleable", function(){ - return false; -}); - -AST_Symbol.DEFMETHOD("unreferenced", function(){ - return this.definition().references.length == 0 - && !(this.scope.uses_eval || this.scope.uses_with); -}); - -AST_Symbol.DEFMETHOD("undeclared", function(){ - return this.definition().undeclared; -}); - -AST_LabelRef.DEFMETHOD("undeclared", function(){ - return false; -}); - -AST_Label.DEFMETHOD("undeclared", function(){ - return false; -}); - -AST_Symbol.DEFMETHOD("definition", function(){ - return this.thedef; -}); - -AST_Symbol.DEFMETHOD("global", function(){ - return this.definition().global; -}); - -AST_Toplevel.DEFMETHOD("_default_mangler_options", function(options){ - return defaults(options, { - except : [], - eval : false, - sort : false - }); -}); - -AST_Toplevel.DEFMETHOD("mangle_names", function(options){ - options = this._default_mangler_options(options); - // We only need to mangle declaration nodes. Special logic wired - // into the code generator will display the mangled name if it's - // present (and for AST_SymbolRef-s it'll use the mangled name of - // the AST_SymbolDeclaration that it points to). - var lname = -1; - var to_mangle = []; - var tw = new TreeWalker(function(node, descend){ - if (node instanceof AST_LabeledStatement) { - // lname is incremented when we get to the AST_Label - var save_nesting = lname; - descend(); - lname = save_nesting; - return true; // don't descend again in TreeWalker - } - if (node instanceof AST_Scope) { - var p = tw.parent(), a = []; - node.variables.each(function(symbol){ - if (options.except.indexOf(symbol.name) < 0) { - a.push(symbol); - } - }); - if (options.sort) a.sort(function(a, b){ - return b.references.length - a.references.length; - }); - to_mangle.push.apply(to_mangle, a); - return; - } - if (node instanceof AST_Label) { - var name; - do name = base54(++lname); while (!is_identifier(name)); - node.mangled_name = name; - return true; - } - }); - this.walk(tw); - to_mangle.forEach(function(def){ def.mangle(options) }); -}); - -AST_Toplevel.DEFMETHOD("compute_char_frequency", function(options){ - options = this._default_mangler_options(options); - var tw = new TreeWalker(function(node){ - if (node instanceof AST_Constant) - base54.consider(node.print_to_string()); - else if (node instanceof AST_Return) - base54.consider("return"); - else if (node instanceof AST_Throw) - base54.consider("throw"); - else if (node instanceof AST_Continue) - base54.consider("continue"); - else if (node instanceof AST_Break) - base54.consider("break"); - else if (node instanceof AST_Debugger) - base54.consider("debugger"); - else if (node instanceof AST_Directive) - base54.consider(node.value); - else if (node instanceof AST_While) - base54.consider("while"); - else if (node instanceof AST_Do) - base54.consider("do while"); - else if (node instanceof AST_If) { - base54.consider("if"); - if (node.alternative) base54.consider("else"); - } - else if (node instanceof AST_Var) - base54.consider("var"); - else if (node instanceof AST_Const) - base54.consider("const"); - else if (node instanceof AST_Lambda) - base54.consider("function"); - else if (node instanceof AST_For) - base54.consider("for"); - else if (node instanceof AST_ForIn) - base54.consider("for in"); - else if (node instanceof AST_Switch) - base54.consider("switch"); - else if (node instanceof AST_Case) - base54.consider("case"); - else if (node instanceof AST_Default) - base54.consider("default"); - else if (node instanceof AST_With) - base54.consider("with"); - else if (node instanceof AST_ObjectSetter) - base54.consider("set" + node.key); - else if (node instanceof AST_ObjectGetter) - base54.consider("get" + node.key); - else if (node instanceof AST_ObjectKeyVal) - base54.consider(node.key); - else if (node instanceof AST_New) - base54.consider("new"); - else if (node instanceof AST_This) - base54.consider("this"); - else if (node instanceof AST_Try) - base54.consider("try"); - else if (node instanceof AST_Catch) - base54.consider("catch"); - else if (node instanceof AST_Finally) - base54.consider("finally"); - else if (node instanceof AST_Symbol && node.unmangleable(options)) - base54.consider(node.name); - else if (node instanceof AST_Unary || node instanceof AST_Binary) - base54.consider(node.operator); - else if (node instanceof AST_Dot) - base54.consider(node.property); - }); - this.walk(tw); - base54.sort(); -}); - -var base54 = (function() { - var string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_0123456789"; - var chars, frequency; - function reset() { - frequency = Object.create(null); - chars = string.split("").map(function(ch){ return ch.charCodeAt(0) }); - chars.forEach(function(ch){ frequency[ch] = 0 }); - } - base54.consider = function(str){ - for (var i = str.length; --i >= 0;) { - var code = str.charCodeAt(i); - if (code in frequency) ++frequency[code]; - } - }; - base54.sort = function() { - chars = mergeSort(chars, function(a, b){ - if (is_digit(a) && !is_digit(b)) return 1; - if (is_digit(b) && !is_digit(a)) return -1; - return frequency[b] - frequency[a]; - }); - }; - base54.reset = reset; - reset(); - base54.get = function(){ return chars }; - base54.freq = function(){ return frequency }; - function base54(num) { - var ret = "", base = 54; - do { - ret += String.fromCharCode(chars[num % base]); - num = Math.floor(num / base); - base = 64; - } while (num > 0); - return ret; - }; - return base54; -})(); - -AST_Toplevel.DEFMETHOD("scope_warnings", function(options){ - options = defaults(options, { - undeclared : false, // this makes a lot of noise - unreferenced : true, - assign_to_global : true, - func_arguments : true, - nested_defuns : true, - eval : true - }); - var tw = new TreeWalker(function(node){ - if (options.undeclared - && node instanceof AST_SymbolRef - && node.undeclared()) - { - // XXX: this also warns about JS standard names, - // i.e. Object, Array, parseInt etc. Should add a list of - // exceptions. - AST_Node.warn("Undeclared symbol: {name} [{file}:{line},{col}]", { - name: node.name, - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - if (options.assign_to_global) - { - var sym = null; - if (node instanceof AST_Assign && node.left instanceof AST_SymbolRef) - sym = node.left; - else if (node instanceof AST_ForIn && node.init instanceof AST_SymbolRef) - sym = node.init; - if (sym - && (sym.undeclared() - || (sym.global() && sym.scope !== sym.definition().scope))) { - AST_Node.warn("{msg}: {name} [{file}:{line},{col}]", { - msg: sym.undeclared() ? "Accidental global?" : "Assignment to global", - name: sym.name, - file: sym.start.file, - line: sym.start.line, - col: sym.start.col - }); - } - } - if (options.eval - && node instanceof AST_SymbolRef - && node.undeclared() - && node.name == "eval") { - AST_Node.warn("Eval is used [{file}:{line},{col}]", node.start); - } - if (options.unreferenced - && (node instanceof AST_SymbolDeclaration || node instanceof AST_Label) - && node.unreferenced()) { - AST_Node.warn("{type} {name} is declared but not referenced [{file}:{line},{col}]", { - type: node instanceof AST_Label ? "Label" : "Symbol", - name: node.name, - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - if (options.func_arguments - && node instanceof AST_Lambda - && node.uses_arguments) { - AST_Node.warn("arguments used in function {name} [{file}:{line},{col}]", { - name: node.name ? node.name.name : "anonymous", - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - if (options.nested_defuns - && node instanceof AST_Defun - && !(tw.parent() instanceof AST_Scope)) { - AST_Node.warn("Function {name} declared in nested statement \"{type}\" [{file}:{line},{col}]", { - name: node.name.name, - type: tw.parent().TYPE, - file: node.start.file, - line: node.start.line, - col: node.start.col - }); - } - }); - this.walk(tw); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js deleted file mode 100644 index 3429908..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/sourcemap.js +++ /dev/null @@ -1,81 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -// a small wrapper around fitzgen's source-map library -function SourceMap(options) { - options = defaults(options, { - file : null, - root : null, - orig : null, - }); - var generator = new MOZ_SourceMap.SourceMapGenerator({ - file : options.file, - sourceRoot : options.root - }); - var orig_map = options.orig && new MOZ_SourceMap.SourceMapConsumer(options.orig); - function add(source, gen_line, gen_col, orig_line, orig_col, name) { - if (orig_map) { - var info = orig_map.originalPositionFor({ - line: orig_line, - column: orig_col - }); - source = info.source; - orig_line = info.line; - orig_col = info.column; - name = info.name; - } - generator.addMapping({ - generated : { line: gen_line, column: gen_col }, - original : { line: orig_line, column: orig_col }, - source : source, - name : name - }); - }; - return { - add : add, - get : function() { return generator }, - toString : function() { return generator.toString() } - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js deleted file mode 100644 index 8b4fd9f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/transform.js +++ /dev/null @@ -1,218 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -// Tree transformer helpers. -// XXX: eventually I should refactor the compressor to use this infrastructure. - -function TreeTransformer(before, after) { - TreeWalker.call(this); - this.before = before; - this.after = after; -} -TreeTransformer.prototype = new TreeWalker; - -(function(undefined){ - - function _(node, descend) { - node.DEFMETHOD("transform", function(tw, in_list){ - var x, y; - tw.push(this); - if (tw.before) x = tw.before(this, descend, in_list); - if (x === undefined) { - if (!tw.after) { - x = this; - descend(x, tw); - } else { - tw.stack[tw.stack.length - 1] = x = this.clone(); - descend(x, tw); - y = tw.after(x, in_list); - if (y !== undefined) x = y; - } - } - tw.pop(); - return x; - }); - }; - - function do_list(list, tw) { - return MAP(list, function(node){ - return node.transform(tw, true); - }); - }; - - _(AST_Node, noop); - - _(AST_LabeledStatement, function(self, tw){ - self.label = self.label.transform(tw); - self.body = self.body.transform(tw); - }); - - _(AST_SimpleStatement, function(self, tw){ - self.body = self.body.transform(tw); - }); - - _(AST_Block, function(self, tw){ - self.body = do_list(self.body, tw); - }); - - _(AST_DWLoop, function(self, tw){ - self.condition = self.condition.transform(tw); - self.body = self.body.transform(tw); - }); - - _(AST_For, function(self, tw){ - if (self.init) self.init = self.init.transform(tw); - if (self.condition) self.condition = self.condition.transform(tw); - if (self.step) self.step = self.step.transform(tw); - self.body = self.body.transform(tw); - }); - - _(AST_ForIn, function(self, tw){ - self.init = self.init.transform(tw); - self.object = self.object.transform(tw); - self.body = self.body.transform(tw); - }); - - _(AST_With, function(self, tw){ - self.expression = self.expression.transform(tw); - self.body = self.body.transform(tw); - }); - - _(AST_Exit, function(self, tw){ - if (self.value) self.value = self.value.transform(tw); - }); - - _(AST_LoopControl, function(self, tw){ - if (self.label) self.label = self.label.transform(tw); - }); - - _(AST_If, function(self, tw){ - self.condition = self.condition.transform(tw); - self.body = self.body.transform(tw); - if (self.alternative) self.alternative = self.alternative.transform(tw); - }); - - _(AST_Switch, function(self, tw){ - self.expression = self.expression.transform(tw); - self.body = do_list(self.body, tw); - }); - - _(AST_Case, function(self, tw){ - self.expression = self.expression.transform(tw); - self.body = do_list(self.body, tw); - }); - - _(AST_Try, function(self, tw){ - self.body = do_list(self.body, tw); - if (self.bcatch) self.bcatch = self.bcatch.transform(tw); - if (self.bfinally) self.bfinally = self.bfinally.transform(tw); - }); - - _(AST_Catch, function(self, tw){ - self.argname = self.argname.transform(tw); - self.body = do_list(self.body, tw); - }); - - _(AST_Definitions, function(self, tw){ - self.definitions = do_list(self.definitions, tw); - }); - - _(AST_VarDef, function(self, tw){ - if (self.value) self.value = self.value.transform(tw); - }); - - _(AST_Lambda, function(self, tw){ - if (self.name) self.name = self.name.transform(tw); - self.argnames = do_list(self.argnames, tw); - self.body = do_list(self.body, tw); - }); - - _(AST_Call, function(self, tw){ - self.expression = self.expression.transform(tw); - self.args = do_list(self.args, tw); - }); - - _(AST_Seq, function(self, tw){ - self.car = self.car.transform(tw); - self.cdr = self.cdr.transform(tw); - }); - - _(AST_Dot, function(self, tw){ - self.expression = self.expression.transform(tw); - }); - - _(AST_Sub, function(self, tw){ - self.expression = self.expression.transform(tw); - self.property = self.property.transform(tw); - }); - - _(AST_Unary, function(self, tw){ - self.expression = self.expression.transform(tw); - }); - - _(AST_Binary, function(self, tw){ - self.left = self.left.transform(tw); - self.right = self.right.transform(tw); - }); - - _(AST_Conditional, function(self, tw){ - self.condition = self.condition.transform(tw); - self.consequent = self.consequent.transform(tw); - self.alternative = self.alternative.transform(tw); - }); - - _(AST_Array, function(self, tw){ - self.elements = do_list(self.elements, tw); - }); - - _(AST_Object, function(self, tw){ - self.properties = do_list(self.properties, tw); - }); - - _(AST_ObjectProperty, function(self, tw){ - self.value = self.value.transform(tw); - }); - -})(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js deleted file mode 100644 index c95b982..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/lib/utils.js +++ /dev/null @@ -1,288 +0,0 @@ -/*********************************************************************** - - A JavaScript tokenizer / parser / beautifier / compressor. - https://github.com/mishoo/UglifyJS2 - - -------------------------------- (C) --------------------------------- - - Author: Mihai Bazon - - http://mihai.bazon.net/blog - - Distributed under the BSD license: - - Copyright 2012 (c) Mihai Bazon - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER “AS IS” AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. - - ***********************************************************************/ - -"use strict"; - -function array_to_hash(a) { - var ret = Object.create(null); - for (var i = 0; i < a.length; ++i) - ret[a[i]] = true; - return ret; -}; - -function slice(a, start) { - return Array.prototype.slice.call(a, start || 0); -}; - -function characters(str) { - return str.split(""); -}; - -function member(name, array) { - for (var i = array.length; --i >= 0;) - if (array[i] == name) - return true; - return false; -}; - -function find_if(func, array) { - for (var i = 0, n = array.length; i < n; ++i) { - if (func(array[i])) - return array[i]; - } -}; - -function repeat_string(str, i) { - if (i <= 0) return ""; - if (i == 1) return str; - var d = repeat_string(str, i >> 1); - d += d; - if (i & 1) d += str; - return d; -}; - -function DefaultsError(msg, defs) { - this.msg = msg; - this.defs = defs; -}; - -function defaults(args, defs, croak) { - if (args === true) - args = {}; - var ret = args || {}; - if (croak) for (var i in ret) if (ret.hasOwnProperty(i) && !defs.hasOwnProperty(i)) - throw new DefaultsError("`" + i + "` is not a supported option", defs); - for (var i in defs) if (defs.hasOwnProperty(i)) { - ret[i] = (args && args.hasOwnProperty(i)) ? args[i] : defs[i]; - } - return ret; -}; - -function merge(obj, ext) { - for (var i in ext) if (ext.hasOwnProperty(i)) { - obj[i] = ext[i]; - } - return obj; -}; - -function noop() {}; - -var MAP = (function(){ - function MAP(a, f, backwards) { - var ret = [], top = [], i; - function doit() { - var val = f(a[i], i); - var is_last = val instanceof Last; - if (is_last) val = val.v; - if (val instanceof AtTop) { - val = val.v; - if (val instanceof Splice) { - top.push.apply(top, backwards ? val.v.slice().reverse() : val.v); - } else { - top.push(val); - } - } - else if (val !== skip) { - if (val instanceof Splice) { - ret.push.apply(ret, backwards ? val.v.slice().reverse() : val.v); - } else { - ret.push(val); - } - } - return is_last; - }; - if (a instanceof Array) { - if (backwards) { - for (i = a.length; --i >= 0;) if (doit()) break; - ret.reverse(); - top.reverse(); - } else { - for (i = 0; i < a.length; ++i) if (doit()) break; - } - } - else { - for (i in a) if (a.hasOwnProperty(i)) if (doit()) break; - } - return top.concat(ret); - }; - MAP.at_top = function(val) { return new AtTop(val) }; - MAP.splice = function(val) { return new Splice(val) }; - MAP.last = function(val) { return new Last(val) }; - var skip = MAP.skip = {}; - function AtTop(val) { this.v = val }; - function Splice(val) { this.v = val }; - function Last(val) { this.v = val }; - return MAP; -})(); - -function push_uniq(array, el) { - if (array.indexOf(el) < 0) - array.push(el); -}; - -function string_template(text, props) { - return text.replace(/\{(.+?)\}/g, function(str, p){ - return props[p]; - }); -}; - -function remove(array, el) { - for (var i = array.length; --i >= 0;) { - if (array[i] === el) array.splice(i, 1); - } -}; - -function mergeSort(array, cmp) { - if (array.length < 2) return array.slice(); - function merge(a, b) { - var r = [], ai = 0, bi = 0, i = 0; - while (ai < a.length && bi < b.length) { - cmp(a[ai], b[bi]) <= 0 - ? r[i++] = a[ai++] - : r[i++] = b[bi++]; - } - if (ai < a.length) r.push.apply(r, a.slice(ai)); - if (bi < b.length) r.push.apply(r, b.slice(bi)); - return r; - }; - function _ms(a) { - if (a.length <= 1) - return a; - var m = Math.floor(a.length / 2), left = a.slice(0, m), right = a.slice(m); - left = _ms(left); - right = _ms(right); - return merge(left, right); - }; - return _ms(array); -}; - -function set_difference(a, b) { - return a.filter(function(el){ - return b.indexOf(el) < 0; - }); -}; - -function set_intersection(a, b) { - return a.filter(function(el){ - return b.indexOf(el) >= 0; - }); -}; - -// this function is taken from Acorn [1], written by Marijn Haverbeke -// [1] https://github.com/marijnh/acorn -function makePredicate(words) { - if (!(words instanceof Array)) words = words.split(" "); - var f = "", cats = []; - out: for (var i = 0; i < words.length; ++i) { - for (var j = 0; j < cats.length; ++j) - if (cats[j][0].length == words[i].length) { - cats[j].push(words[i]); - continue out; - } - cats.push([words[i]]); - } - function compareTo(arr) { - if (arr.length == 1) return f += "return str === " + JSON.stringify(arr[0]) + ";"; - f += "switch(str){"; - for (var i = 0; i < arr.length; ++i) f += "case " + JSON.stringify(arr[i]) + ":"; - f += "return true}return false;"; - } - // When there are more than three length categories, an outer - // switch first dispatches on the lengths, to save on comparisons. - if (cats.length > 3) { - cats.sort(function(a, b) {return b.length - a.length;}); - f += "switch(str.length){"; - for (var i = 0; i < cats.length; ++i) { - var cat = cats[i]; - f += "case " + cat[0].length + ":"; - compareTo(cat); - } - f += "}"; - // Otherwise, simply generate a flat `switch` statement. - } else { - compareTo(words); - } - return new Function("str", f); -}; - -function Dictionary() { - this._values = Object.create(null); - this._size = 0; -}; -Dictionary.prototype = { - set: function(key, val) { - if (!this.has(key)) ++this._size; - this._values["$" + key] = val; - return this; - }, - add: function(key, val) { - if (this.has(key)) { - this.get(key).push(val); - } else { - this.set(key, [ val ]); - } - return this; - }, - get: function(key) { return this._values["$" + key] }, - del: function(key) { - if (this.has(key)) { - --this._size; - delete this._values["$" + key]; - } - return this; - }, - has: function(key) { return ("$" + key) in this._values }, - each: function(f) { - for (var i in this._values) - f(this._values[i], i.substr(1)); - }, - size: function() { - return this._size; - }, - map: function(f) { - var ret = []; - for (var i in this._values) - ret.push(f(this._values[i], i.substr(1))); - return ret; - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE deleted file mode 100644 index 432d1ae..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js deleted file mode 100644 index a998fb7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/bool.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js deleted file mode 100644 index a35a7e6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_double.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js deleted file mode 100644 index 017bb68..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/boolean_single.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv.v); -console.dir(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js deleted file mode 100644 index ade7768..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_hash.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; - -console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js deleted file mode 100644 index d9b1ff4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/default_singles.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js deleted file mode 100644 index 5e2ee82..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/divide.js +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env node - -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js deleted file mode 100644 index b5f95bf..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count.js +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js deleted file mode 100644 index d9ac709..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_options.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .options({ - file : { - demand : true, - alias : 'f', - description : 'Load a file' - }, - base : { - alias : 'b', - description : 'Numeric base to use for output', - default : 10, - }, - }) - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js deleted file mode 100644 index 4267511..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/line_count_wrap.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .wrap(80) - .demand('f') - .alias('f', [ 'file', 'filename' ]) - .describe('f', - "Load a file. It's pretty important." - + " Required even. So you'd better specify it." - ) - .alias('b', 'base') - .describe('b', 'Numeric base to display the number of lines in') - .default('b', 10) - .describe('x', 'Super-secret optional parameter which is secret') - .default('x', '') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines.toString(argv.base)); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js deleted file mode 100644 index ee633ee..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/nonopt.js +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js deleted file mode 100644 index 816b3e1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/reflect.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.dir(require('optimist').argv); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js deleted file mode 100644 index 1db0ad0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/short.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js deleted file mode 100644 index a8e5aeb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/string.js +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist') - .string('x', 'y') - .argv -; -console.dir([ argv.x, argv.y ]); - -/* Turns off numeric coercion: - ./node string.js -x 000123 -y 9876 - [ '000123', '9876' ] -*/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js deleted file mode 100644 index b999977..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/usage-options.js +++ /dev/null @@ -1,19 +0,0 @@ -var optimist = require('./../index'); - -var argv = optimist.usage('This is my awesome program', { - 'about': { - description: 'Provide some details about the author of this program', - required: true, - short: 'a', - }, - 'info': { - description: 'Provide some information about the node.js agains!!!!!!', - boolean: true, - short: 'i' - } -}).argv; - -optimist.showHelp(); - -console.log('\n\nInspecting options'); -console.dir(argv); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js deleted file mode 100644 index 8f6ecd2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/example/xup.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js deleted file mode 100644 index 8ac67eb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/index.js +++ /dev/null @@ -1,478 +0,0 @@ -var path = require('path'); -var wordwrap = require('wordwrap'); - -/* Hack an instance of Argv with process.argv into Argv - so people can do - require('optimist')(['--beeble=1','-z','zizzle']).argv - to parse a list of args and - require('optimist').argv - to get a parsed version of process.argv. -*/ - -var inst = Argv(process.argv.slice(2)); -Object.keys(inst).forEach(function (key) { - Argv[key] = typeof inst[key] == 'function' - ? inst[key].bind(inst) - : inst[key]; -}); - -var exports = module.exports = Argv; -function Argv (args, cwd) { - var self = {}; - if (!cwd) cwd = process.cwd(); - - self.$0 = process.argv - .slice(0,2) - .map(function (x) { - var b = rebase(cwd, x); - return x.match(/^\//) && b.length < x.length - ? b : x - }) - .join(' ') - ; - - if (process.env._ != undefined && process.argv[1] == process.env._) { - self.$0 = process.env._.replace( - path.dirname(process.execPath) + '/', '' - ); - } - - var flags = { bools : {}, strings : {} }; - - self.boolean = function (bools) { - if (!Array.isArray(bools)) { - bools = [].slice.call(arguments); - } - - bools.forEach(function (name) { - flags.bools[name] = true; - }); - - return self; - }; - - self.string = function (strings) { - if (!Array.isArray(strings)) { - strings = [].slice.call(arguments); - } - - strings.forEach(function (name) { - flags.strings[name] = true; - }); - - return self; - }; - - var aliases = {}; - self.alias = function (x, y) { - if (typeof x === 'object') { - Object.keys(x).forEach(function (key) { - self.alias(key, x[key]); - }); - } - else if (Array.isArray(y)) { - y.forEach(function (yy) { - self.alias(x, yy); - }); - } - else { - var zs = (aliases[x] || []).concat(aliases[y] || []).concat(x, y); - aliases[x] = zs.filter(function (z) { return z != x }); - aliases[y] = zs.filter(function (z) { return z != y }); - } - - return self; - }; - - var demanded = {}; - self.demand = function (keys) { - if (typeof keys == 'number') { - if (!demanded._) demanded._ = 0; - demanded._ += keys; - } - else if (Array.isArray(keys)) { - keys.forEach(function (key) { - self.demand(key); - }); - } - else { - demanded[keys] = true; - } - - return self; - }; - - var usage; - self.usage = function (msg, opts) { - if (!opts && typeof msg === 'object') { - opts = msg; - msg = null; - } - - usage = msg; - - if (opts) self.options(opts); - - return self; - }; - - function fail (msg) { - self.showHelp(); - if (msg) console.error(msg); - process.exit(1); - } - - var checks = []; - self.check = function (f) { - checks.push(f); - return self; - }; - - var defaults = {}; - self.default = function (key, value) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.default(k, key[k]); - }); - } - else { - defaults[key] = value; - } - - return self; - }; - - var descriptions = {}; - self.describe = function (key, desc) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.describe(k, key[k]); - }); - } - else { - descriptions[key] = desc; - } - return self; - }; - - self.parse = function (args) { - return Argv(args).argv; - }; - - self.option = self.options = function (key, opt) { - if (typeof key === 'object') { - Object.keys(key).forEach(function (k) { - self.options(k, key[k]); - }); - } - else { - if (opt.alias) self.alias(key, opt.alias); - if (opt.demand) self.demand(key); - if (typeof opt.default !== 'undefined') { - self.default(key, opt.default); - } - - if (opt.boolean || opt.type === 'boolean') { - self.boolean(key); - } - if (opt.string || opt.type === 'string') { - self.string(key); - } - - var desc = opt.describe || opt.description || opt.desc; - if (desc) { - self.describe(key, desc); - } - } - - return self; - }; - - var wrap = null; - self.wrap = function (cols) { - wrap = cols; - return self; - }; - - self.showHelp = function (fn) { - if (!fn) fn = console.error; - fn(self.help()); - }; - - self.help = function () { - var keys = Object.keys( - Object.keys(descriptions) - .concat(Object.keys(demanded)) - .concat(Object.keys(defaults)) - .reduce(function (acc, key) { - if (key !== '_') acc[key] = true; - return acc; - }, {}) - ); - - var help = keys.length ? [ 'Options:' ] : []; - - if (usage) { - help.unshift(usage.replace(/\$0/g, self.$0), ''); - } - - var switches = keys.reduce(function (acc, key) { - acc[key] = [ key ].concat(aliases[key] || []) - .map(function (sw) { - return (sw.length > 1 ? '--' : '-') + sw - }) - .join(', ') - ; - return acc; - }, {}); - - var switchlen = longest(Object.keys(switches).map(function (s) { - return switches[s] || ''; - })); - - var desclen = longest(Object.keys(descriptions).map(function (d) { - return descriptions[d] || ''; - })); - - keys.forEach(function (key) { - var kswitch = switches[key]; - var desc = descriptions[key] || ''; - - if (wrap) { - desc = wordwrap(switchlen + 4, wrap)(desc) - .slice(switchlen + 4) - ; - } - - var spadding = new Array( - Math.max(switchlen - kswitch.length + 3, 0) - ).join(' '); - - var dpadding = new Array( - Math.max(desclen - desc.length + 1, 0) - ).join(' '); - - var type = null; - - if (flags.bools[key]) type = '[boolean]'; - if (flags.strings[key]) type = '[string]'; - - if (!wrap && dpadding.length > 0) { - desc += dpadding; - } - - var prelude = ' ' + kswitch + spadding; - var extra = [ - type, - demanded[key] - ? '[required]' - : null - , - defaults[key] !== undefined - ? '[default: ' + JSON.stringify(defaults[key]) + ']' - : null - , - ].filter(Boolean).join(' '); - - var body = [ desc, extra ].filter(Boolean).join(' '); - - if (wrap) { - var dlines = desc.split('\n'); - var dlen = dlines.slice(-1)[0].length - + (dlines.length === 1 ? prelude.length : 0) - - body = desc + (dlen + extra.length > wrap - 2 - ? '\n' - + new Array(wrap - extra.length + 1).join(' ') - + extra - : new Array(wrap - extra.length - dlen + 1).join(' ') - + extra - ); - } - - help.push(prelude + body); - }); - - help.push(''); - return help.join('\n'); - }; - - Object.defineProperty(self, 'argv', { - get : parseArgs, - enumerable : true, - }); - - function parseArgs () { - var argv = { _ : [], $0 : self.$0 }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] || false); - }); - - function setArg (key, val) { - var num = Number(val); - var value = typeof val !== 'string' || isNaN(num) ? val : num; - if (flags.strings[key]) value = val; - - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - argv[x] = argv[key]; - }); - } - - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (arg === '--') { - argv._.push.apply(argv._, args.slice(i + 1)); - break; - } - else if (arg.match(/^--.+=/)) { - // Using [\s\S] instead of . because js doesn't support the - // 'dotall' regex modifier. See: - // http://stackoverflow.com/a/1068308/13216 - var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - setArg(m[1], m[2]); - } - else if (arg.match(/^--no-.+/)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false); - } - else if (arg.match(/^--.+/)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !next.match(/^-/) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, next); - i++; - } - else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true'); - i++; - } - else { - setArg(key, true); - } - } - else if (arg.match(/^-[^-]+/)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2)); - broken = true; - break; - } - else { - setArg(letters[j], true); - } - } - - if (!broken) { - var key = arg.slice(-1)[0]; - - if (args[i+1] && !args[i+1].match(/^-/) - && !flags.bools[key] - && (aliases[key] ? !flags.bools[aliases[key]] : true)) { - setArg(key, args[i+1]); - i++; - } - else if (args[i+1] && /true|false/.test(args[i+1])) { - setArg(key, args[i+1] === 'true'); - i++; - } - else { - setArg(key, true); - } - } - } - else { - var n = Number(arg); - argv._.push(flags.strings['_'] || isNaN(n) ? arg : n); - } - } - - Object.keys(defaults).forEach(function (key) { - if (!(key in argv)) { - argv[key] = defaults[key]; - if (key in aliases) { - argv[aliases[key]] = defaults[key]; - } - } - }); - - if (demanded._ && argv._.length < demanded._) { - fail('Not enough non-option arguments: got ' - + argv._.length + ', need at least ' + demanded._ - ); - } - - var missing = []; - Object.keys(demanded).forEach(function (key) { - if (!argv[key]) missing.push(key); - }); - - if (missing.length) { - fail('Missing required arguments: ' + missing.join(', ')); - } - - checks.forEach(function (f) { - try { - if (f(argv) === false) { - fail('Argument check failed: ' + f.toString()); - } - } - catch (err) { - fail(err) - } - }); - - return argv; - } - - function longest (xs) { - return Math.max.apply( - null, - xs.map(function (x) { return x.length }) - ); - } - - return self; -}; - -// rebase an absolute path to a relative one with respect to a base directory -// exported for tests -exports.rebase = rebase; -function rebase (base, dir) { - var ds = path.normalize(dir).split('/').slice(1); - var bs = path.normalize(base).split('/').slice(1); - - for (var i = 0; ds[i] && ds[i] == bs[i]; i++); - ds.splice(0, i); bs.splice(0, i); - - var p = path.normalize( - bs.map(function () { return '..' }).concat(ds).join('/') - ).replace(/\/$/,'').replace(/^$/, '.'); - return p.match(/^[.\/]/) ? p : './' + p; -}; - -function setKey (obj, keys, value) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - if (o[key] === undefined) o[key] = {}; - o = o[key]; - }); - - var key = keys[keys.length - 1]; - if (o[key] === undefined || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown deleted file mode 100644 index 346374e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/README.markdown +++ /dev/null @@ -1,70 +0,0 @@ -wordwrap -======== - -Wrap your words. - -example -======= - -made out of meat ----------------- - -meat.js - - var wrap = require('wordwrap')(15); - console.log(wrap('You and your whole family are made out of meat.')); - -output: - - You and your - whole family - are made out - of meat. - -centered --------- - -center.js - - var wrap = require('wordwrap')(20, 60); - console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' - )); - -output: - - At long last the struggle and tumult - was over. The machines had finally cast - off their oppressors and were finally - free to roam the cosmos. - Free of purpose, free of obligation. - Just drifting through emptiness. The - sun was just another point of light. - -methods -======= - -var wrap = require('wordwrap'); - -wrap(stop), wrap(start, stop, params={mode:"soft"}) ---------------------------------------------------- - -Returns a function that takes a string and returns a new string. - -Pad out lines with spaces out to column `start` and then wrap until column -`stop`. If a word is longer than `stop - start` characters it will overflow. - -In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are -longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break -up chunks longer than `stop - start`. - -wrap.hard(start, stop) ----------------------- - -Like `wrap()` but with `params.mode = "hard"`. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js deleted file mode 100644 index a3fbaae..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/center.js +++ /dev/null @@ -1,10 +0,0 @@ -var wrap = require('wordwrap')(20, 60); -console.log(wrap( - 'At long last the struggle and tumult was over.' - + ' The machines had finally cast off their oppressors' - + ' and were finally free to roam the cosmos.' - + '\n' - + 'Free of purpose, free of obligation.' - + ' Just drifting through emptiness.' - + ' The sun was just another point of light.' -)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js deleted file mode 100644 index a4665e1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/example/meat.js +++ /dev/null @@ -1,3 +0,0 @@ -var wrap = require('wordwrap')(15); - -console.log(wrap('You and your whole family are made out of meat.')); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js deleted file mode 100644 index c9bc945..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/index.js +++ /dev/null @@ -1,76 +0,0 @@ -var wordwrap = module.exports = function (start, stop, params) { - if (typeof start === 'object') { - params = start; - start = params.start; - stop = params.stop; - } - - if (typeof stop === 'object') { - params = stop; - start = start || params.start; - stop = undefined; - } - - if (!stop) { - stop = start; - start = 0; - } - - if (!params) params = {}; - var mode = params.mode || 'soft'; - var re = mode === 'hard' ? /\b/ : /(\S+\s+)/; - - return function (text) { - var chunks = text.toString() - .split(re) - .reduce(function (acc, x) { - if (mode === 'hard') { - for (var i = 0; i < x.length; i += stop - start) { - acc.push(x.slice(i, i + stop - start)); - } - } - else acc.push(x) - return acc; - }, []) - ; - - return chunks.reduce(function (lines, rawChunk) { - if (rawChunk === '') return lines; - - var chunk = rawChunk.replace(/\t/g, ' '); - - var i = lines.length - 1; - if (lines[i].length + chunk.length > stop) { - lines[i] = lines[i].replace(/\s+$/, ''); - - chunk.split(/\n/).forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else if (chunk.match(/\n/)) { - var xs = chunk.split(/\n/); - lines[i] += xs.shift(); - xs.forEach(function (c) { - lines.push( - new Array(start + 1).join(' ') - + c.replace(/^\s+/, '') - ); - }); - } - else { - lines[i] += chunk; - } - - return lines; - }, [ new Array(start + 1).join(' ') ]).join('\n'); - }; -}; - -wordwrap.soft = wordwrap; - -wordwrap.hard = function (start, stop) { - return wordwrap(start, stop, { mode : 'hard' }); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json deleted file mode 100644 index 887800f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "wordwrap", - "description": "Wrap those words. Show them at what columns to start and stop.", - "version": "0.0.2", - "repository": { - "type": "git", - "url": "git://github.com/substack/node-wordwrap.git" - }, - "main": "./index.js", - "keywords": [ - "word", - "wrap", - "rule", - "format", - "column" - ], - "directories": { - "lib": ".", - "example": "example", - "test": "test" - }, - "scripts": { - "test": "expresso" - }, - "devDependencies": { - "expresso": "=0.7.x" - }, - "engines": { - "node": ">=0.4.0" - }, - "license": "MIT/X11", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "readme": "wordwrap\n========\n\nWrap your words.\n\nexample\n=======\n\nmade out of meat\n----------------\n\nmeat.js\n\n var wrap = require('wordwrap')(15);\n console.log(wrap('You and your whole family are made out of meat.'));\n\noutput:\n\n You and your\n whole family\n are made out\n of meat.\n\ncentered\n--------\n\ncenter.js\n\n var wrap = require('wordwrap')(20, 60);\n console.log(wrap(\n 'At long last the struggle and tumult was over.'\n + ' The machines had finally cast off their oppressors'\n + ' and were finally free to roam the cosmos.'\n + '\\n'\n + 'Free of purpose, free of obligation.'\n + ' Just drifting through emptiness.'\n + ' The sun was just another point of light.'\n ));\n\noutput:\n\n At long last the struggle and tumult\n was over. The machines had finally cast\n off their oppressors and were finally\n free to roam the cosmos.\n Free of purpose, free of obligation.\n Just drifting through emptiness. The\n sun was just another point of light.\n\nmethods\n=======\n\nvar wrap = require('wordwrap');\n\nwrap(stop), wrap(start, stop, params={mode:\"soft\"})\n---------------------------------------------------\n\nReturns a function that takes a string and returns a new string.\n\nPad out lines with spaces out to column `start` and then wrap until column\n`stop`. If a word is longer than `stop - start` characters it will overflow.\n\nIn \"soft\" mode, split chunks by `/(\\S+\\s+/` and don't break up chunks which are\nlonger than `stop - start`, in \"hard\" mode, split chunks with `/\\b/` and break\nup chunks longer than `stop - start`.\n\nwrap.hard(start, stop)\n----------------------\n\nLike `wrap()` but with `params.mode = \"hard\"`.\n", - "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/node-wordwrap/issues" - }, - "_id": "wordwrap@0.0.2", - "_from": "wordwrap@~0.0.2" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js deleted file mode 100644 index 749292e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/break.js +++ /dev/null @@ -1,30 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('../'); - -exports.hard = function () { - var s = 'Assert from {"type":"equal","ok":false,"found":1,"wanted":2,' - + '"stack":[],"id":"b7ddcd4c409de8799542a74d1a04689b",' - + '"browser":"chrome/6.0"}' - ; - var s_ = wordwrap.hard(80)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 2); - assert.ok(lines[0].length < 80); - assert.ok(lines[1].length < 80); - - assert.equal(s, s_.replace(/\n/g, '')); -}; - -exports.break = function () { - var s = new Array(55+1).join('a'); - var s_ = wordwrap.hard(20)(s); - - var lines = s_.split('\n'); - assert.equal(lines.length, 3); - assert.ok(lines[0].length === 20); - assert.ok(lines[1].length === 20); - assert.ok(lines[2].length === 15); - - assert.equal(s, s_.replace(/\n/g, '')); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt deleted file mode 100644 index aa3f490..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/idleness.txt +++ /dev/null @@ -1,63 +0,0 @@ -In Praise of Idleness - -By Bertrand Russell - -[1932] - -Like most of my generation, I was brought up on the saying: 'Satan finds some mischief for idle hands to do.' Being a highly virtuous child, I believed all that I was told, and acquired a conscience which has kept me working hard down to the present moment. But although my conscience has controlled my actions, my opinions have undergone a revolution. I think that there is far too much work done in the world, that immense harm is caused by the belief that work is virtuous, and that what needs to be preached in modern industrial countries is quite different from what always has been preached. Everyone knows the story of the traveler in Naples who saw twelve beggars lying in the sun (it was before the days of Mussolini), and offered a lira to the laziest of them. Eleven of them jumped up to claim it, so he gave it to the twelfth. this traveler was on the right lines. But in countries which do not enjoy Mediterranean sunshine idleness is more difficult, and a great public propaganda will be required to inaugurate it. I hope that, after reading the following pages, the leaders of the YMCA will start a campaign to induce good young men to do nothing. If so, I shall not have lived in vain. - -Before advancing my own arguments for laziness, I must dispose of one which I cannot accept. Whenever a person who already has enough to live on proposes to engage in some everyday kind of job, such as school-teaching or typing, he or she is told that such conduct takes the bread out of other people's mouths, and is therefore wicked. If this argument were valid, it would only be necessary for us all to be idle in order that we should all have our mouths full of bread. What people who say such things forget is that what a man earns he usually spends, and in spending he gives employment. As long as a man spends his income, he puts just as much bread into people's mouths in spending as he takes out of other people's mouths in earning. The real villain, from this point of view, is the man who saves. If he merely puts his savings in a stocking, like the proverbial French peasant, it is obvious that they do not give employment. If he invests his savings, the matter is less obvious, and different cases arise. - -One of the commonest things to do with savings is to lend them to some Government. In view of the fact that the bulk of the public expenditure of most civilized Governments consists in payment for past wars or preparation for future wars, the man who lends his money to a Government is in the same position as the bad men in Shakespeare who hire murderers. The net result of the man's economical habits is to increase the armed forces of the State to which he lends his savings. Obviously it would be better if he spent the money, even if he spent it in drink or gambling. - -But, I shall be told, the case is quite different when savings are invested in industrial enterprises. When such enterprises succeed, and produce something useful, this may be conceded. In these days, however, no one will deny that most enterprises fail. That means that a large amount of human labor, which might have been devoted to producing something that could be enjoyed, was expended on producing machines which, when produced, lay idle and did no good to anyone. The man who invests his savings in a concern that goes bankrupt is therefore injuring others as well as himself. If he spent his money, say, in giving parties for his friends, they (we may hope) would get pleasure, and so would all those upon whom he spent money, such as the butcher, the baker, and the bootlegger. But if he spends it (let us say) upon laying down rails for surface card in some place where surface cars turn out not to be wanted, he has diverted a mass of labor into channels where it gives pleasure to no one. Nevertheless, when he becomes poor through failure of his investment he will be regarded as a victim of undeserved misfortune, whereas the gay spendthrift, who has spent his money philanthropically, will be despised as a fool and a frivolous person. - -All this is only preliminary. I want to say, in all seriousness, that a great deal of harm is being done in the modern world by belief in the virtuousness of work, and that the road to happiness and prosperity lies in an organized diminution of work. - -First of all: what is work? Work is of two kinds: first, altering the position of matter at or near the earth's surface relatively to other such matter; second, telling other people to do so. The first kind is unpleasant and ill paid; the second is pleasant and highly paid. The second kind is capable of indefinite extension: there are not only those who give orders, but those who give advice as to what orders should be given. Usually two opposite kinds of advice are given simultaneously by two organized bodies of men; this is called politics. The skill required for this kind of work is not knowledge of the subjects as to which advice is given, but knowledge of the art of persuasive speaking and writing, i.e. of advertising. - -Throughout Europe, though not in America, there is a third class of men, more respected than either of the classes of workers. There are men who, through ownership of land, are able to make others pay for the privilege of being allowed to exist and to work. These landowners are idle, and I might therefore be expected to praise them. Unfortunately, their idleness is only rendered possible by the industry of others; indeed their desire for comfortable idleness is historically the source of the whole gospel of work. The last thing they have ever wished is that others should follow their example. - -From the beginning of civilization until the Industrial Revolution, a man could, as a rule, produce by hard work little more than was required for the subsistence of himself and his family, although his wife worked at least as hard as he did, and his children added their labor as soon as they were old enough to do so. The small surplus above bare necessaries was not left to those who produced it, but was appropriated by warriors and priests. In times of famine there was no surplus; the warriors and priests, however, still secured as much as at other times, with the result that many of the workers died of hunger. This system persisted in Russia until 1917 [1], and still persists in the East; in England, in spite of the Industrial Revolution, it remained in full force throughout the Napoleonic wars, and until a hundred years ago, when the new class of manufacturers acquired power. In America, the system came to an end with the Revolution, except in the South, where it persisted until the Civil War. A system which lasted so long and ended so recently has naturally left a profound impress upon men's thoughts and opinions. Much that we take for granted about the desirability of work is derived from this system, and, being pre-industrial, is not adapted to the modern world. Modern technique has made it possible for leisure, within limits, to be not the prerogative of small privileged classes, but a right evenly distributed throughout the community. The morality of work is the morality of slaves, and the modern world has no need of slavery. - -It is obvious that, in primitive communities, peasants, left to themselves, would not have parted with the slender surplus upon which the warriors and priests subsisted, but would have either produced less or consumed more. At first, sheer force compelled them to produce and part with the surplus. Gradually, however, it was found possible to induce many of them to accept an ethic according to which it was their duty to work hard, although part of their work went to support others in idleness. By this means the amount of compulsion required was lessened, and the expenses of government were diminished. To this day, 99 per cent of British wage-earners would be genuinely shocked if it were proposed that the King should not have a larger income than a working man. The conception of duty, speaking historically, has been a means used by the holders of power to induce others to live for the interests of their masters rather than for their own. Of course the holders of power conceal this fact from themselves by managing to believe that their interests are identical with the larger interests of humanity. Sometimes this is true; Athenian slave-owners, for instance, employed part of their leisure in making a permanent contribution to civilization which would have been impossible under a just economic system. Leisure is essential to civilization, and in former times leisure for the few was only rendered possible by the labors of the many. But their labors were valuable, not because work is good, but because leisure is good. And with modern technique it would be possible to distribute leisure justly without injury to civilization. - -Modern technique has made it possible to diminish enormously the amount of labor required to secure the necessaries of life for everyone. This was made obvious during the war. At that time all the men in the armed forces, and all the men and women engaged in the production of munitions, all the men and women engaged in spying, war propaganda, or Government offices connected with the war, were withdrawn from productive occupations. In spite of this, the general level of well-being among unskilled wage-earners on the side of the Allies was higher than before or since. The significance of this fact was concealed by finance: borrowing made it appear as if the future was nourishing the present. But that, of course, would have been impossible; a man cannot eat a loaf of bread that does not yet exist. The war showed conclusively that, by the scientific organization of production, it is possible to keep modern populations in fair comfort on a small part of the working capacity of the modern world. If, at the end of the war, the scientific organization, which had been created in order to liberate men for fighting and munition work, had been preserved, and the hours of the week had been cut down to four, all would have been well. Instead of that the old chaos was restored, those whose work was demanded were made to work long hours, and the rest were left to starve as unemployed. Why? Because work is a duty, and a man should not receive wages in proportion to what he has produced, but in proportion to his virtue as exemplified by his industry. - -This is the morality of the Slave State, applied in circumstances totally unlike those in which it arose. No wonder the result has been disastrous. Let us take an illustration. Suppose that, at a given moment, a certain number of people are engaged in the manufacture of pins. They make as many pins as the world needs, working (say) eight hours a day. Someone makes an invention by which the same number of men can make twice as many pins: pins are already so cheap that hardly any more will be bought at a lower price. In a sensible world, everybody concerned in the manufacturing of pins would take to working four hours instead of eight, and everything else would go on as before. But in the actual world this would be thought demoralizing. The men still work eight hours, there are too many pins, some employers go bankrupt, and half the men previously concerned in making pins are thrown out of work. There is, in the end, just as much leisure as on the other plan, but half the men are totally idle while half are still overworked. In this way, it is insured that the unavoidable leisure shall cause misery all round instead of being a universal source of happiness. Can anything more insane be imagined? - -The idea that the poor should have leisure has always been shocking to the rich. In England, in the early nineteenth century, fifteen hours was the ordinary day's work for a man; children sometimes did as much, and very commonly did twelve hours a day. When meddlesome busybodies suggested that perhaps these hours were rather long, they were told that work kept adults from drink and children from mischief. When I was a child, shortly after urban working men had acquired the vote, certain public holidays were established by law, to the great indignation of the upper classes. I remember hearing an old Duchess say: 'What do the poor want with holidays? They ought to work.' People nowadays are less frank, but the sentiment persists, and is the source of much of our economic confusion. - -Let us, for a moment, consider the ethics of work frankly, without superstition. Every human being, of necessity, consumes, in the course of his life, a certain amount of the produce of human labor. Assuming, as we may, that labor is on the whole disagreeable, it is unjust that a man should consume more than he produces. Of course he may provide services rather than commodities, like a medical man, for example; but he should provide something in return for his board and lodging. to this extent, the duty of work must be admitted, but to this extent only. - -I shall not dwell upon the fact that, in all modern societies outside the USSR, many people escape even this minimum amount of work, namely all those who inherit money and all those who marry money. I do not think the fact that these people are allowed to be idle is nearly so harmful as the fact that wage-earners are expected to overwork or starve. - -If the ordinary wage-earner worked four hours a day, there would be enough for everybody and no unemployment -- assuming a certain very moderate amount of sensible organization. This idea shocks the well-to-do, because they are convinced that the poor would not know how to use so much leisure. In America men often work long hours even when they are well off; such men, naturally, are indignant at the idea of leisure for wage-earners, except as the grim punishment of unemployment; in fact, they dislike leisure even for their sons. Oddly enough, while they wish their sons to work so hard as to have no time to be civilized, they do not mind their wives and daughters having no work at all. the snobbish admiration of uselessness, which, in an aristocratic society, extends to both sexes, is, under a plutocracy, confined to women; this, however, does not make it any more in agreement with common sense. - -The wise use of leisure, it must be conceded, is a product of civilization and education. A man who has worked long hours all his life will become bored if he becomes suddenly idle. But without a considerable amount of leisure a man is cut off from many of the best things. There is no longer any reason why the bulk of the population should suffer this deprivation; only a foolish asceticism, usually vicarious, makes us continue to insist on work in excessive quantities now that the need no longer exists. - -In the new creed which controls the government of Russia, while there is much that is very different from the traditional teaching of the West, there are some things that are quite unchanged. The attitude of the governing classes, and especially of those who conduct educational propaganda, on the subject of the dignity of labor, is almost exactly that which the governing classes of the world have always preached to what were called the 'honest poor'. Industry, sobriety, willingness to work long hours for distant advantages, even submissiveness to authority, all these reappear; moreover authority still represents the will of the Ruler of the Universe, Who, however, is now called by a new name, Dialectical Materialism. - -The victory of the proletariat in Russia has some points in common with the victory of the feminists in some other countries. For ages, men had conceded the superior saintliness of women, and had consoled women for their inferiority by maintaining that saintliness is more desirable than power. At last the feminists decided that they would have both, since the pioneers among them believed all that the men had told them about the desirability of virtue, but not what they had told them about the worthlessness of political power. A similar thing has happened in Russia as regards manual work. For ages, the rich and their sycophants have written in praise of 'honest toil', have praised the simple life, have professed a religion which teaches that the poor are much more likely to go to heaven than the rich, and in general have tried to make manual workers believe that there is some special nobility about altering the position of matter in space, just as men tried to make women believe that they derived some special nobility from their sexual enslavement. In Russia, all this teaching about the excellence of manual work has been taken seriously, with the result that the manual worker is more honored than anyone else. What are, in essence, revivalist appeals are made, but not for the old purposes: they are made to secure shock workers for special tasks. Manual work is the ideal which is held before the young, and is the basis of all ethical teaching. - -For the present, possibly, this is all to the good. A large country, full of natural resources, awaits development, and has has to be developed with very little use of credit. In these circumstances, hard work is necessary, and is likely to bring a great reward. But what will happen when the point has been reached where everybody could be comfortable without working long hours? - -In the West, we have various ways of dealing with this problem. We have no attempt at economic justice, so that a large proportion of the total produce goes to a small minority of the population, many of whom do no work at all. Owing to the absence of any central control over production, we produce hosts of things that are not wanted. We keep a large percentage of the working population idle, because we can dispense with their labor by making the others overwork. When all these methods prove inadequate, we have a war: we cause a number of people to manufacture high explosives, and a number of others to explode them, as if we were children who had just discovered fireworks. By a combination of all these devices we manage, though with difficulty, to keep alive the notion that a great deal of severe manual work must be the lot of the average man. - -In Russia, owing to more economic justice and central control over production, the problem will have to be differently solved. the rational solution would be, as soon as the necessaries and elementary comforts can be provided for all, to reduce the hours of labor gradually, allowing a popular vote to decide, at each stage, whether more leisure or more goods were to be preferred. But, having taught the supreme virtue of hard work, it is difficult to see how the authorities can aim at a paradise in which there will be much leisure and little work. It seems more likely that they will find continually fresh schemes, by which present leisure is to be sacrificed to future productivity. I read recently of an ingenious plan put forward by Russian engineers, for making the White Sea and the northern coasts of Siberia warm, by putting a dam across the Kara Sea. An admirable project, but liable to postpone proletarian comfort for a generation, while the nobility of toil is being displayed amid the ice-fields and snowstorms of the Arctic Ocean. This sort of thing, if it happens, will be the result of regarding the virtue of hard work as an end in itself, rather than as a means to a state of affairs in which it is no longer needed. - -The fact is that moving matter about, while a certain amount of it is necessary to our existence, is emphatically not one of the ends of human life. If it were, we should have to consider every navvy superior to Shakespeare. We have been misled in this matter by two causes. One is the necessity of keeping the poor contented, which has led the rich, for thousands of years, to preach the dignity of labor, while taking care themselves to remain undignified in this respect. The other is the new pleasure in mechanism, which makes us delight in the astonishingly clever changes that we can produce on the earth's surface. Neither of these motives makes any great appeal to the actual worker. If you ask him what he thinks the best part of his life, he is not likely to say: 'I enjoy manual work because it makes me feel that I am fulfilling man's noblest task, and because I like to think how much man can transform his planet. It is true that my body demands periods of rest, which I have to fill in as best I may, but I am never so happy as when the morning comes and I can return to the toil from which my contentment springs.' I have never heard working men say this sort of thing. They consider work, as it should be considered, a necessary means to a livelihood, and it is from their leisure that they derive whatever happiness they may enjoy. - -It will be said that, while a little leisure is pleasant, men would not know how to fill their days if they had only four hours of work out of the twenty-four. In so far as this is true in the modern world, it is a condemnation of our civilization; it would not have been true at any earlier period. There was formerly a capacity for light-heartedness and play which has been to some extent inhibited by the cult of efficiency. The modern man thinks that everything ought to be done for the sake of something else, and never for its own sake. Serious-minded persons, for example, are continually condemning the habit of going to the cinema, and telling us that it leads the young into crime. But all the work that goes to producing a cinema is respectable, because it is work, and because it brings a money profit. The notion that the desirable activities are those that bring a profit has made everything topsy-turvy. The butcher who provides you with meat and the baker who provides you with bread are praiseworthy, because they are making money; but when you enjoy the food they have provided, you are merely frivolous, unless you eat only to get strength for your work. Broadly speaking, it is held that getting money is good and spending money is bad. Seeing that they are two sides of one transaction, this is absurd; one might as well maintain that keys are good, but keyholes are bad. Whatever merit there may be in the production of goods must be entirely derivative from the advantage to be obtained by consuming them. The individual, in our society, works for profit; but the social purpose of his work lies in the consumption of what he produces. It is this divorce between the individual and the social purpose of production that makes it so difficult for men to think clearly in a world in which profit-making is the incentive to industry. We think too much of production, and too little of consumption. One result is that we attach too little importance to enjoyment and simple happiness, and that we do not judge production by the pleasure that it gives to the consumer. - -When I suggest that working hours should be reduced to four, I am not meaning to imply that all the remaining time should necessarily be spent in pure frivolity. I mean that four hours' work a day should entitle a man to the necessities and elementary comforts of life, and that the rest of his time should be his to use as he might see fit. It is an essential part of any such social system that education should be carried further than it usually is at present, and should aim, in part, at providing tastes which would enable a man to use leisure intelligently. I am not thinking mainly of the sort of things that would be considered 'highbrow'. Peasant dances have died out except in remote rural areas, but the impulses which caused them to be cultivated must still exist in human nature. The pleasures of urban populations have become mainly passive: seeing cinemas, watching football matches, listening to the radio, and so on. This results from the fact that their active energies are fully taken up with work; if they had more leisure, they would again enjoy pleasures in which they took an active part. - -In the past, there was a small leisure class and a larger working class. The leisure class enjoyed advantages for which there was no basis in social justice; this necessarily made it oppressive, limited its sympathies, and caused it to invent theories by which to justify its privileges. These facts greatly diminished its excellence, but in spite of this drawback it contributed nearly the whole of what we call civilization. It cultivated the arts and discovered the sciences; it wrote the books, invented the philosophies, and refined social relations. Even the liberation of the oppressed has usually been inaugurated from above. Without the leisure class, mankind would never have emerged from barbarism. - -The method of a leisure class without duties was, however, extraordinarily wasteful. None of the members of the class had to be taught to be industrious, and the class as a whole was not exceptionally intelligent. The class might produce one Darwin, but against him had to be set tens of thousands of country gentlemen who never thought of anything more intelligent than fox-hunting and punishing poachers. At present, the universities are supposed to provide, in a more systematic way, what the leisure class provided accidentally and as a by-product. This is a great improvement, but it has certain drawbacks. University life is so different from life in the world at large that men who live in academic milieu tend to be unaware of the preoccupations and problems of ordinary men and women; moreover their ways of expressing themselves are usually such as to rob their opinions of the influence that they ought to have upon the general public. Another disadvantage is that in universities studies are organized, and the man who thinks of some original line of research is likely to be discouraged. Academic institutions, therefore, useful as they are, are not adequate guardians of the interests of civilization in a world where everyone outside their walls is too busy for unutilitarian pursuits. - -In a world where no one is compelled to work more than four hours a day, every person possessed of scientific curiosity will be able to indulge it, and every painter will be able to paint without starving, however excellent his pictures may be. Young writers will not be obliged to draw attention to themselves by sensational pot-boilers, with a view to acquiring the economic independence needed for monumental works, for which, when the time at last comes, they will have lost the taste and capacity. Men who, in their professional work, have become interested in some phase of economics or government, will be able to develop their ideas without the academic detachment that makes the work of university economists often seem lacking in reality. Medical men will have the time to learn about the progress of medicine, teachers will not be exasperatedly struggling to teach by routine methods things which they learnt in their youth, which may, in the interval, have been proved to be untrue. - -Above all, there will be happiness and joy of life, instead of frayed nerves, weariness, and dyspepsia. The work exacted will be enough to make leisure delightful, but not enough to produce exhaustion. Since men will not be tired in their spare time, they will not demand only such amusements as are passive and vapid. At least one per cent will probably devote the time not spent in professional work to pursuits of some public importance, and, since they will not depend upon these pursuits for their livelihood, their originality will be unhampered, and there will be no need to conform to the standards set by elderly pundits. But it is not only in these exceptional cases that the advantages of leisure will appear. Ordinary men and women, having the opportunity of a happy life, will become more kindly and less persecuting and less inclined to view others with suspicion. The taste for war will die out, partly for this reason, and partly because it will involve long and severe work for all. Good nature is, of all moral qualities, the one that the world needs most, and good nature is the result of ease and security, not of a life of arduous struggle. Modern methods of production have given us the possibility of ease and security for all; we have chosen, instead, to have overwork for some and starvation for others. Hitherto we have continued to be as energetic as we were before there were machines; in this we have been foolish, but there is no reason to go on being foolish forever. - -[1] Since then, members of the Communist Party have succeeded to this privilege of the warriors and priests. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js deleted file mode 100644 index 0cfb76d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/node_modules/wordwrap/test/wrap.js +++ /dev/null @@ -1,31 +0,0 @@ -var assert = require('assert'); -var wordwrap = require('wordwrap'); - -var fs = require('fs'); -var idleness = fs.readFileSync(__dirname + '/idleness.txt', 'utf8'); - -exports.stop80 = function () { - var lines = wordwrap(80)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 80, 'line > 80 columns'); - var chunks = line.match(/\S/) ? line.split(/\s+/) : []; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - }); -}; - -exports.start20stop60 = function () { - var lines = wordwrap(20, 100)(idleness).split(/\n/); - var words = idleness.split(/\s+/); - - lines.forEach(function (line) { - assert.ok(line.length <= 100, 'line > 100 columns'); - var chunks = line - .split(/\s+/) - .filter(function (x) { return x.match(/\S/) }) - ; - assert.deepEqual(chunks, words.splice(0, chunks.length)); - assert.deepEqual(line.slice(0, 20), new Array(20 + 1).join(' ')); - }); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json deleted file mode 100644 index d39475a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "optimist", - "version": "0.3.7", - "description": "Light-weight option parsing with an argv hash. No optstrings attached.", - "main": "./index.js", - "dependencies": { - "wordwrap": "~0.0.2" - }, - "devDependencies": { - "hashish": "~0.0.4", - "tap": "~0.4.0" - }, - "scripts": { - "test": "tap ./test/*.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/substack/node-optimist.git" - }, - "keywords": [ - "argument", - "args", - "option", - "parser", - "parsing", - "cli", - "command" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT/X11", - "engine": { - "node": ">=0.4" - }, - "readme": "optimist\n========\n\nOptimist is a node.js library for option parsing for people who hate option\nparsing. More specifically, this module is for people who like all the --bells\nand -whistlz of program usage but think optstrings are a waste of time.\n\nWith optimist, option parsing doesn't have to suck (as much).\n\n[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist)\n\nexamples\n========\n\nWith Optimist, the options are just a hash! No optstrings attached.\n-------------------------------------------------------------------\n\nxup.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\n\nif (argv.rif - 5 * argv.xup > 7.138) {\n console.log('Buy more riffiwobbles');\n}\nelse {\n console.log('Sell the xupptumblers');\n}\n````\n\n***\n\n $ ./xup.js --rif=55 --xup=9.52\n Buy more riffiwobbles\n \n $ ./xup.js --rif 12 --xup 8.1\n Sell the xupptumblers\n\n![This one's optimistic.](http://substack.net/images/optimistic.png)\n\nBut wait! There's more! You can do short options:\n-------------------------------------------------\n \nshort.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\n````\n\n***\n\n $ ./short.js -x 10 -y 21\n (10,21)\n\nAnd booleans, both long and short (and grouped):\n----------------------------------\n\nbool.js:\n\n````javascript\n#!/usr/bin/env node\nvar util = require('util');\nvar argv = require('optimist').argv;\n\nif (argv.s) {\n util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: ');\n}\nconsole.log(\n (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '')\n);\n````\n\n***\n\n $ ./bool.js -s\n The cat says: meow\n \n $ ./bool.js -sp\n The cat says: meow.\n\n $ ./bool.js -sp --fr\n Le chat dit: miaou.\n\nAnd non-hypenated options too! Just use `argv._`!\n-------------------------------------------------\n \nnonopt.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist').argv;\nconsole.log('(%d,%d)', argv.x, argv.y);\nconsole.log(argv._);\n````\n\n***\n\n $ ./nonopt.js -x 6.82 -y 3.35 moo\n (6.82,3.35)\n [ 'moo' ]\n \n $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz\n (0.54,1.12)\n [ 'foo', 'bar', 'baz' ]\n\nPlus, Optimist comes with .usage() and .demand()!\n-------------------------------------------------\n\ndivide.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Usage: $0 -x [num] -y [num]')\n .demand(['x','y'])\n .argv;\n\nconsole.log(argv.x / argv.y);\n````\n\n***\n \n $ ./divide.js -x 55 -y 11\n 5\n \n $ node ./divide.js -x 4.91 -z 2.51\n Usage: node ./divide.js -x [num] -y [num]\n\n Options:\n -x [required]\n -y [required]\n\n Missing required arguments: y\n\nEVEN MORE HOLY COW\n------------------\n\ndefault_singles.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default('x', 10)\n .default('y', 10)\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_singles.js -x 5\n 15\n\ndefault_hash.js:\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .default({ x : 10, y : 10 })\n .argv\n;\nconsole.log(argv.x + argv.y);\n````\n\n***\n\n $ ./default_hash.js -y 7\n 17\n\nAnd if you really want to get all descriptive about it...\n---------------------------------------------------------\n\nboolean_single.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean('v')\n .argv\n;\nconsole.dir(argv);\n````\n\n***\n\n $ ./boolean_single.js -v foo bar baz\n true\n [ 'bar', 'baz', 'foo' ]\n\nboolean_double.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .boolean(['x','y','z'])\n .argv\n;\nconsole.dir([ argv.x, argv.y, argv.z ]);\nconsole.dir(argv._);\n````\n\n***\n\n $ ./boolean_double.js -x -z one two three\n [ true, false, true ]\n [ 'one', 'two', 'three' ]\n\nOptimist is here to help...\n---------------------------\n\nYou can describe parameters for help messages and set aliases. Optimist figures\nout how to format a handy help string automatically.\n\nline_count.js\n\n````javascript\n#!/usr/bin/env node\nvar argv = require('optimist')\n .usage('Count the lines in a file.\\nUsage: $0')\n .demand('f')\n .alias('f', 'file')\n .describe('f', 'Load a file')\n .argv\n;\n\nvar fs = require('fs');\nvar s = fs.createReadStream(argv.file);\n\nvar lines = 0;\ns.on('data', function (buf) {\n lines += buf.toString().match(/\\n/g).length;\n});\n\ns.on('end', function () {\n console.log(lines);\n});\n````\n\n***\n\n $ node line_count.js\n Count the lines in a file.\n Usage: node ./line_count.js\n\n Options:\n -f, --file Load a file [required]\n\n Missing required arguments: f\n\n $ node line_count.js --file line_count.js \n 20\n \n $ node line_count.js -f line_count.js \n 20\n\nmethods\n=======\n\nBy itself,\n\n````javascript\nrequire('optimist').argv\n`````\n\nwill use `process.argv` array to construct the `argv` object.\n\nYou can pass in the `process.argv` yourself:\n\n````javascript\nrequire('optimist')([ '-x', '1', '-y', '2' ]).argv\n````\n\nor use .parse() to do the same thing:\n\n````javascript\nrequire('optimist').parse([ '-x', '1', '-y', '2' ])\n````\n\nThe rest of these methods below come in just before the terminating `.argv`.\n\n.alias(key, alias)\n------------------\n\nSet key names as equivalent such that updates to a key will propagate to aliases\nand vice-versa.\n\nOptionally `.alias()` can take an object that maps keys to aliases.\n\n.default(key, value)\n--------------------\n\nSet `argv[key]` to `value` if no option was specified on `process.argv`.\n\nOptionally `.default()` can take an object that maps keys to default values.\n\n.demand(key)\n------------\n\nIf `key` is a string, show the usage information and exit if `key` wasn't\nspecified in `process.argv`.\n\nIf `key` is a number, demand at least as many non-option arguments, which show\nup in `argv._`.\n\nIf `key` is an Array, demand each element.\n\n.describe(key, desc)\n--------------------\n\nDescribe a `key` for the generated usage information.\n\nOptionally `.describe()` can take an object that maps keys to descriptions.\n\n.options(key, opt)\n------------------\n\nInstead of chaining together `.alias().demand().default()`, you can specify\nkeys in `opt` for each of the chainable methods.\n\nFor example:\n\n````javascript\nvar argv = require('optimist')\n .options('f', {\n alias : 'file',\n default : '/etc/passwd',\n })\n .argv\n;\n````\n\nis the same as\n\n````javascript\nvar argv = require('optimist')\n .alias('f', 'file')\n .default('f', '/etc/passwd')\n .argv\n;\n````\n\nOptionally `.options()` can take an object that maps keys to `opt` parameters.\n\n.usage(message)\n---------------\n\nSet a usage message to show which commands to use. Inside `message`, the string\n`$0` will get interpolated to the current script name or node command for the\npresent script similar to how `$0` works in bash or perl.\n\n.check(fn)\n----------\n\nCheck that certain conditions are met in the provided arguments.\n\nIf `fn` throws or returns `false`, show the thrown error, usage information, and\nexit.\n\n.boolean(key)\n-------------\n\nInterpret `key` as a boolean. If a non-flag option follows `key` in\n`process.argv`, that string won't get set as the value of `key`.\n\nIf `key` never shows up as a flag in `process.arguments`, `argv[key]` will be\n`false`.\n\nIf `key` is an Array, interpret all the elements as booleans.\n\n.string(key)\n------------\n\nTell the parser logic not to interpret `key` as a number or boolean.\nThis can be useful if you need to preserve leading zeros in an input.\n\nIf `key` is an Array, interpret all the elements as strings.\n\n.wrap(columns)\n--------------\n\nFormat usage output to wrap at `columns` many columns.\n\n.help()\n-------\n\nReturn the generated usage string.\n\n.showHelp(fn=console.error)\n---------------------------\n\nPrint the usage data using `fn` for printing.\n\n.parse(args)\n------------\n\nParse `args` instead of `process.argv`. Returns the `argv` object.\n\n.argv\n-----\n\nGet the arguments as a plain old object.\n\nArguments without a corresponding flag show up in the `argv._` array.\n\nThe script name or node command is available at `argv.$0` similarly to how `$0`\nworks in bash or perl.\n\nparsing tricks\n==============\n\nstop parsing\n------------\n\nUse `--` to stop parsing flags and stuff the remainder into `argv._`.\n\n $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4\n { _: [ '-c', '3', '-d', '4' ],\n '$0': 'node ./examples/reflect.js',\n a: 1,\n b: 2 }\n\nnegate fields\n-------------\n\nIf you want to explicity set a field to false instead of just leaving it\nundefined or to override a default you can do `--no-key`.\n\n $ node examples/reflect.js -a --no-b\n { _: [],\n '$0': 'node ./examples/reflect.js',\n a: true,\n b: false }\n\nnumbers\n-------\n\nEvery argument that looks like a number (`!isNaN(Number(arg))`) is converted to\none. This way you can just `net.createConnection(argv.port)` and you can add\nnumbers out of `argv` with `+` without having that mean concatenation,\nwhich is super frustrating.\n\nduplicates\n----------\n\nIf you specify a flag multiple times it will get turned into an array containing\nall the values in order.\n\n $ node examples/reflect.js -x 5 -x 8 -x 0\n { _: [],\n '$0': 'node ./examples/reflect.js',\n x: [ 5, 8, 0 ] }\n\ndot notation\n------------\n\nWhen you use dots (`.`s) in argument names, an implicit object path is assumed.\nThis lets you organize arguments into nested objects.\n\n $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5\n { _: [],\n '$0': 'node ./examples/reflect.js',\n foo: { bar: { baz: 33 }, quux: 5 } }\n\ninstallation\n============\n\nWith [npm](http://github.com/isaacs/npm), just do:\n npm install optimist\n \nor clone this project on github:\n\n git clone http://github.com/substack/node-optimist.git\n\nTo run the tests with [expresso](http://github.com/visionmedia/expresso),\njust do:\n \n expresso\n\ninspired By\n===========\n\nThis module is loosely inspired by Perl's\n[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm).\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/node-optimist/issues" - }, - "_id": "optimist@0.3.7", - "_from": "optimist@~0.3.5" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown deleted file mode 100644 index ad9d3fd..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/readme.markdown +++ /dev/null @@ -1,487 +0,0 @@ -optimist -======== - -Optimist is a node.js library for option parsing for people who hate option -parsing. More specifically, this module is for people who like all the --bells -and -whistlz of program usage but think optstrings are a waste of time. - -With optimist, option parsing doesn't have to suck (as much). - -[![build status](https://secure.travis-ci.org/substack/node-optimist.png)](http://travis-ci.org/substack/node-optimist) - -examples -======== - -With Optimist, the options are just a hash! No optstrings attached. -------------------------------------------------------------------- - -xup.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; - -if (argv.rif - 5 * argv.xup > 7.138) { - console.log('Buy more riffiwobbles'); -} -else { - console.log('Sell the xupptumblers'); -} -```` - -*** - - $ ./xup.js --rif=55 --xup=9.52 - Buy more riffiwobbles - - $ ./xup.js --rif 12 --xup 8.1 - Sell the xupptumblers - -![This one's optimistic.](http://substack.net/images/optimistic.png) - -But wait! There's more! You can do short options: -------------------------------------------------- - -short.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -```` - -*** - - $ ./short.js -x 10 -y 21 - (10,21) - -And booleans, both long and short (and grouped): ----------------------------------- - -bool.js: - -````javascript -#!/usr/bin/env node -var util = require('util'); -var argv = require('optimist').argv; - -if (argv.s) { - util.print(argv.fr ? 'Le chat dit: ' : 'The cat says: '); -} -console.log( - (argv.fr ? 'miaou' : 'meow') + (argv.p ? '.' : '') -); -```` - -*** - - $ ./bool.js -s - The cat says: meow - - $ ./bool.js -sp - The cat says: meow. - - $ ./bool.js -sp --fr - Le chat dit: miaou. - -And non-hypenated options too! Just use `argv._`! -------------------------------------------------- - -nonopt.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist').argv; -console.log('(%d,%d)', argv.x, argv.y); -console.log(argv._); -```` - -*** - - $ ./nonopt.js -x 6.82 -y 3.35 moo - (6.82,3.35) - [ 'moo' ] - - $ ./nonopt.js foo -x 0.54 bar -y 1.12 baz - (0.54,1.12) - [ 'foo', 'bar', 'baz' ] - -Plus, Optimist comes with .usage() and .demand()! -------------------------------------------------- - -divide.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Usage: $0 -x [num] -y [num]') - .demand(['x','y']) - .argv; - -console.log(argv.x / argv.y); -```` - -*** - - $ ./divide.js -x 55 -y 11 - 5 - - $ node ./divide.js -x 4.91 -z 2.51 - Usage: node ./divide.js -x [num] -y [num] - - Options: - -x [required] - -y [required] - - Missing required arguments: y - -EVEN MORE HOLY COW ------------------- - -default_singles.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default('x', 10) - .default('y', 10) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_singles.js -x 5 - 15 - -default_hash.js: - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .default({ x : 10, y : 10 }) - .argv -; -console.log(argv.x + argv.y); -```` - -*** - - $ ./default_hash.js -y 7 - 17 - -And if you really want to get all descriptive about it... ---------------------------------------------------------- - -boolean_single.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean('v') - .argv -; -console.dir(argv); -```` - -*** - - $ ./boolean_single.js -v foo bar baz - true - [ 'bar', 'baz', 'foo' ] - -boolean_double.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .boolean(['x','y','z']) - .argv -; -console.dir([ argv.x, argv.y, argv.z ]); -console.dir(argv._); -```` - -*** - - $ ./boolean_double.js -x -z one two three - [ true, false, true ] - [ 'one', 'two', 'three' ] - -Optimist is here to help... ---------------------------- - -You can describe parameters for help messages and set aliases. Optimist figures -out how to format a handy help string automatically. - -line_count.js - -````javascript -#!/usr/bin/env node -var argv = require('optimist') - .usage('Count the lines in a file.\nUsage: $0') - .demand('f') - .alias('f', 'file') - .describe('f', 'Load a file') - .argv -; - -var fs = require('fs'); -var s = fs.createReadStream(argv.file); - -var lines = 0; -s.on('data', function (buf) { - lines += buf.toString().match(/\n/g).length; -}); - -s.on('end', function () { - console.log(lines); -}); -```` - -*** - - $ node line_count.js - Count the lines in a file. - Usage: node ./line_count.js - - Options: - -f, --file Load a file [required] - - Missing required arguments: f - - $ node line_count.js --file line_count.js - 20 - - $ node line_count.js -f line_count.js - 20 - -methods -======= - -By itself, - -````javascript -require('optimist').argv -````` - -will use `process.argv` array to construct the `argv` object. - -You can pass in the `process.argv` yourself: - -````javascript -require('optimist')([ '-x', '1', '-y', '2' ]).argv -```` - -or use .parse() to do the same thing: - -````javascript -require('optimist').parse([ '-x', '1', '-y', '2' ]) -```` - -The rest of these methods below come in just before the terminating `.argv`. - -.alias(key, alias) ------------------- - -Set key names as equivalent such that updates to a key will propagate to aliases -and vice-versa. - -Optionally `.alias()` can take an object that maps keys to aliases. - -.default(key, value) --------------------- - -Set `argv[key]` to `value` if no option was specified on `process.argv`. - -Optionally `.default()` can take an object that maps keys to default values. - -.demand(key) ------------- - -If `key` is a string, show the usage information and exit if `key` wasn't -specified in `process.argv`. - -If `key` is a number, demand at least as many non-option arguments, which show -up in `argv._`. - -If `key` is an Array, demand each element. - -.describe(key, desc) --------------------- - -Describe a `key` for the generated usage information. - -Optionally `.describe()` can take an object that maps keys to descriptions. - -.options(key, opt) ------------------- - -Instead of chaining together `.alias().demand().default()`, you can specify -keys in `opt` for each of the chainable methods. - -For example: - -````javascript -var argv = require('optimist') - .options('f', { - alias : 'file', - default : '/etc/passwd', - }) - .argv -; -```` - -is the same as - -````javascript -var argv = require('optimist') - .alias('f', 'file') - .default('f', '/etc/passwd') - .argv -; -```` - -Optionally `.options()` can take an object that maps keys to `opt` parameters. - -.usage(message) ---------------- - -Set a usage message to show which commands to use. Inside `message`, the string -`$0` will get interpolated to the current script name or node command for the -present script similar to how `$0` works in bash or perl. - -.check(fn) ----------- - -Check that certain conditions are met in the provided arguments. - -If `fn` throws or returns `false`, show the thrown error, usage information, and -exit. - -.boolean(key) -------------- - -Interpret `key` as a boolean. If a non-flag option follows `key` in -`process.argv`, that string won't get set as the value of `key`. - -If `key` never shows up as a flag in `process.arguments`, `argv[key]` will be -`false`. - -If `key` is an Array, interpret all the elements as booleans. - -.string(key) ------------- - -Tell the parser logic not to interpret `key` as a number or boolean. -This can be useful if you need to preserve leading zeros in an input. - -If `key` is an Array, interpret all the elements as strings. - -.wrap(columns) --------------- - -Format usage output to wrap at `columns` many columns. - -.help() -------- - -Return the generated usage string. - -.showHelp(fn=console.error) ---------------------------- - -Print the usage data using `fn` for printing. - -.parse(args) ------------- - -Parse `args` instead of `process.argv`. Returns the `argv` object. - -.argv ------ - -Get the arguments as a plain old object. - -Arguments without a corresponding flag show up in the `argv._` array. - -The script name or node command is available at `argv.$0` similarly to how `$0` -works in bash or perl. - -parsing tricks -============== - -stop parsing ------------- - -Use `--` to stop parsing flags and stuff the remainder into `argv._`. - - $ node examples/reflect.js -a 1 -b 2 -- -c 3 -d 4 - { _: [ '-c', '3', '-d', '4' ], - '$0': 'node ./examples/reflect.js', - a: 1, - b: 2 } - -negate fields -------------- - -If you want to explicity set a field to false instead of just leaving it -undefined or to override a default you can do `--no-key`. - - $ node examples/reflect.js -a --no-b - { _: [], - '$0': 'node ./examples/reflect.js', - a: true, - b: false } - -numbers -------- - -Every argument that looks like a number (`!isNaN(Number(arg))`) is converted to -one. This way you can just `net.createConnection(argv.port)` and you can add -numbers out of `argv` with `+` without having that mean concatenation, -which is super frustrating. - -duplicates ----------- - -If you specify a flag multiple times it will get turned into an array containing -all the values in order. - - $ node examples/reflect.js -x 5 -x 8 -x 0 - { _: [], - '$0': 'node ./examples/reflect.js', - x: [ 5, 8, 0 ] } - -dot notation ------------- - -When you use dots (`.`s) in argument names, an implicit object path is assumed. -This lets you organize arguments into nested objects. - - $ node examples/reflect.js --foo.bar.baz=33 --foo.quux=5 - { _: [], - '$0': 'node ./examples/reflect.js', - foo: { bar: { baz: 33 }, quux: 5 } } - -installation -============ - -With [npm](http://github.com/isaacs/npm), just do: - npm install optimist - -or clone this project on github: - - git clone http://github.com/substack/node-optimist.git - -To run the tests with [expresso](http://github.com/visionmedia/expresso), -just do: - - expresso - -inspired By -=========== - -This module is loosely inspired by Perl's -[Getopt::Casual](http://search.cpan.org/~photo/Getopt-Casual-0.13.1/Casual.pm). diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js deleted file mode 100644 index d9c58b3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_.js +++ /dev/null @@ -1,71 +0,0 @@ -var spawn = require('child_process').spawn; -var test = require('tap').test; - -test('dotSlashEmpty', testCmd('./bin.js', [])); - -test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ])); - -test('nodeEmpty', testCmd('node bin.js', [])); - -test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ])); - -test('whichNodeEmpty', function (t) { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - t.test( - testCmd(buf.toString().trim() + ' bin.js', []) - ); - t.end(); - }); - - which.stderr.on('data', function (err) { - assert.error(err); - t.end(); - }); -}); - -test('whichNodeArgs', function (t) { - var which = spawn('which', ['node']); - - which.stdout.on('data', function (buf) { - t.test( - testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ]) - ); - t.end(); - }); - - which.stderr.on('data', function (err) { - t.error(err); - t.end(); - }); -}); - -function testCmd (cmd, args) { - - return function (t) { - var to = setTimeout(function () { - assert.fail('Never got stdout data.') - }, 5000); - - var oldDir = process.cwd(); - process.chdir(__dirname + '/_'); - - var cmds = cmd.split(' '); - - var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String))); - process.chdir(oldDir); - - bin.stderr.on('data', function (err) { - t.error(err); - t.end(); - }); - - bin.stdout.on('data', function (buf) { - clearTimeout(to); - var _ = JSON.parse(buf.toString()); - t.same(_.map(String), args.map(String)); - t.end(); - }); - }; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js deleted file mode 100644 index 3d09606..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/argv.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -console.log(JSON.stringify(process.argv)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js deleted file mode 100644 index 4a18d85..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/_/bin.js +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -var argv = require('../../index').argv -console.log(JSON.stringify(argv._)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js deleted file mode 100644 index d320f43..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/parse.js +++ /dev/null @@ -1,446 +0,0 @@ -var optimist = require('../index'); -var path = require('path'); -var test = require('tap').test; - -var $0 = 'node ./' + path.relative(process.cwd(), __filename); - -test('short boolean', function (t) { - var parse = optimist.parse([ '-b' ]); - t.same(parse, { b : true, _ : [], $0 : $0 }); - t.same(typeof parse.b, 'boolean'); - t.end(); -}); - -test('long boolean', function (t) { - t.same( - optimist.parse([ '--bool' ]), - { bool : true, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('bare', function (t) { - t.same( - optimist.parse([ 'foo', 'bar', 'baz' ]), - { _ : [ 'foo', 'bar', 'baz' ], $0 : $0 } - ); - t.end(); -}); - -test('short group', function (t) { - t.same( - optimist.parse([ '-cats' ]), - { c : true, a : true, t : true, s : true, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('short group next', function (t) { - t.same( - optimist.parse([ '-cats', 'meow' ]), - { c : true, a : true, t : true, s : 'meow', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('short capture', function (t) { - t.same( - optimist.parse([ '-h', 'localhost' ]), - { h : 'localhost', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('short captures', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-p', '555' ]), - { h : 'localhost', p : 555, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('long capture sp', function (t) { - t.same( - optimist.parse([ '--pow', 'xixxle' ]), - { pow : 'xixxle', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('long capture eq', function (t) { - t.same( - optimist.parse([ '--pow=xixxle' ]), - { pow : 'xixxle', _ : [], $0 : $0 } - ); - t.end() -}); - -test('long captures sp', function (t) { - t.same( - optimist.parse([ '--host', 'localhost', '--port', '555' ]), - { host : 'localhost', port : 555, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('long captures eq', function (t) { - t.same( - optimist.parse([ '--host=localhost', '--port=555' ]), - { host : 'localhost', port : 555, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('mixed short bool and capture', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : $0, - } - ); - t.end(); -}); - -test('short and long', function (t) { - t.same( - optimist.parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]), - { - f : true, p : 555, h : 'localhost', - _ : [ 'script.js' ], $0 : $0, - } - ); - t.end(); -}); - -test('no', function (t) { - t.same( - optimist.parse([ '--no-moo' ]), - { moo : false, _ : [], $0 : $0 } - ); - t.end(); -}); - -test('multi', function (t) { - t.same( - optimist.parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]), - { v : ['a','b','c'], _ : [], $0 : $0 } - ); - t.end(); -}); - -test('comprehensive', function (t) { - t.same( - optimist.parse([ - '--name=meowmers', 'bare', '-cats', 'woo', - '-h', 'awesome', '--multi=quux', - '--key', 'value', - '-b', '--bool', '--no-meep', '--multi=baz', - '--', '--not-a-flag', 'eek' - ]), - { - c : true, - a : true, - t : true, - s : 'woo', - h : 'awesome', - b : true, - bool : true, - key : 'value', - multi : [ 'quux', 'baz' ], - meep : false, - name : 'meowmers', - _ : [ 'bare', '--not-a-flag', 'eek' ], - $0 : $0 - } - ); - t.end(); -}); - -test('nums', function (t) { - var argv = optimist.parse([ - '-x', '1234', - '-y', '5.67', - '-z', '1e7', - '-w', '10f', - '--hex', '0xdeadbeef', - '789', - ]); - t.same(argv, { - x : 1234, - y : 5.67, - z : 1e7, - w : '10f', - hex : 0xdeadbeef, - _ : [ 789 ], - $0 : $0 - }); - t.same(typeof argv.x, 'number'); - t.same(typeof argv.y, 'number'); - t.same(typeof argv.z, 'number'); - t.same(typeof argv.w, 'string'); - t.same(typeof argv.hex, 'number'); - t.same(typeof argv._[0], 'number'); - t.end(); -}); - -test('flag boolean', function (t) { - var parse = optimist([ '-t', 'moo' ]).boolean(['t']).argv; - t.same(parse, { t : true, _ : [ 'moo' ], $0 : $0 }); - t.same(typeof parse.t, 'boolean'); - t.end(); -}); - -test('flag boolean value', function (t) { - var parse = optimist(['--verbose', 'false', 'moo', '-t', 'true']) - .boolean(['t', 'verbose']).default('verbose', true).argv; - - t.same(parse, { - verbose: false, - t: true, - _: ['moo'], - $0 : $0 - }); - - t.same(typeof parse.verbose, 'boolean'); - t.same(typeof parse.t, 'boolean'); - t.end(); -}); - -test('flag boolean default false', function (t) { - var parse = optimist(['moo']) - .boolean(['t', 'verbose']) - .default('verbose', false) - .default('t', false).argv; - - t.same(parse, { - verbose: false, - t: false, - _: ['moo'], - $0 : $0 - }); - - t.same(typeof parse.verbose, 'boolean'); - t.same(typeof parse.t, 'boolean'); - t.end(); - -}); - -test('boolean groups', function (t) { - var parse = optimist([ '-x', '-z', 'one', 'two', 'three' ]) - .boolean(['x','y','z']).argv; - - t.same(parse, { - x : true, - y : false, - z : true, - _ : [ 'one', 'two', 'three' ], - $0 : $0 - }); - - t.same(typeof parse.x, 'boolean'); - t.same(typeof parse.y, 'boolean'); - t.same(typeof parse.z, 'boolean'); - t.end(); -}); - -test('newlines in params' , function (t) { - var args = optimist.parse([ '-s', "X\nX" ]) - t.same(args, { _ : [], s : "X\nX", $0 : $0 }); - - // reproduce in bash: - // VALUE="new - // line" - // node program.js --s="$VALUE" - args = optimist.parse([ "--s=X\nX" ]) - t.same(args, { _ : [], s : "X\nX", $0 : $0 }); - t.end(); -}); - -test('strings' , function (t) { - var s = optimist([ '-s', '0001234' ]).string('s').argv.s; - t.same(s, '0001234'); - t.same(typeof s, 'string'); - - var x = optimist([ '-x', '56' ]).string('x').argv.x; - t.same(x, '56'); - t.same(typeof x, 'string'); - t.end(); -}); - -test('stringArgs', function (t) { - var s = optimist([ ' ', ' ' ]).string('_').argv._; - t.same(s.length, 2); - t.same(typeof s[0], 'string'); - t.same(s[0], ' '); - t.same(typeof s[1], 'string'); - t.same(s[1], ' '); - t.end(); -}); - -test('slashBreak', function (t) { - t.same( - optimist.parse([ '-I/foo/bar/baz' ]), - { I : '/foo/bar/baz', _ : [], $0 : $0 } - ); - t.same( - optimist.parse([ '-xyz/foo/bar/baz' ]), - { x : true, y : true, z : '/foo/bar/baz', _ : [], $0 : $0 } - ); - t.end(); -}); - -test('alias', function (t) { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', 'zoom') - .argv - ; - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.f, 11); - t.end(); -}); - -test('multiAlias', function (t) { - var argv = optimist([ '-f', '11', '--zoom', '55' ]) - .alias('z', [ 'zm', 'zoom' ]) - .argv - ; - t.equal(argv.zoom, 55); - t.equal(argv.z, argv.zoom); - t.equal(argv.z, argv.zm); - t.equal(argv.f, 11); - t.end(); -}); - -test('boolean default true', function (t) { - var argv = optimist.options({ - sometrue: { - boolean: true, - default: true - } - }).argv; - - t.equal(argv.sometrue, true); - t.end(); -}); - -test('boolean default false', function (t) { - var argv = optimist.options({ - somefalse: { - boolean: true, - default: false - } - }).argv; - - t.equal(argv.somefalse, false); - t.end(); -}); - -test('nested dotted objects', function (t) { - var argv = optimist([ - '--foo.bar', '3', '--foo.baz', '4', - '--foo.quux.quibble', '5', '--foo.quux.o_O', - '--beep.boop' - ]).argv; - - t.same(argv.foo, { - bar : 3, - baz : 4, - quux : { - quibble : 5, - o_O : true - }, - }); - t.same(argv.beep, { boop : true }); - t.end(); -}); - -test('boolean and alias with chainable api', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .boolean('herp') - .alias('h', 'herp') - .argv; - var propertyArgv = optimist(regular) - .boolean('herp') - .alias('h', 'herp') - .argv; - var expected = { - herp: true, - h: true, - '_': [ 'derp' ], - '$0': $0, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -test('boolean and alias with options hash', function (t) { - var aliased = [ '-h', 'derp' ]; - var regular = [ '--herp', 'derp' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .options(opts) - .argv; - var propertyArgv = optimist(regular).options(opts).argv; - var expected = { - herp: true, - h: true, - '_': [ 'derp' ], - '$0': $0, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - - t.end(); -}); - -test('boolean and alias using explicit true', function (t) { - var aliased = [ '-h', 'true' ]; - var regular = [ '--herp', 'true' ]; - var opts = { - herp: { alias: 'h', boolean: true } - }; - var aliasedArgv = optimist(aliased) - .boolean('h') - .alias('h', 'herp') - .argv; - var propertyArgv = optimist(regular) - .boolean('h') - .alias('h', 'herp') - .argv; - var expected = { - herp: true, - h: true, - '_': [ ], - '$0': $0, - }; - - t.same(aliasedArgv, expected); - t.same(propertyArgv, expected); - t.end(); -}); - -// regression, see https://github.com/substack/node-optimist/issues/71 -test('boolean and --x=true', function(t) { - var parsed = optimist(['--boool', '--other=true']).boolean('boool').argv; - - t.same(parsed.boool, true); - t.same(parsed.other, 'true'); - - parsed = optimist(['--boool', '--other=false']).boolean('boool').argv; - - t.same(parsed.boool, true); - t.same(parsed.other, 'false'); - t.end(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js deleted file mode 100644 index 300454c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/optimist/test/usage.js +++ /dev/null @@ -1,292 +0,0 @@ -var Hash = require('hashish'); -var optimist = require('../index'); -var test = require('tap').test; - -test('usageFail', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'Options:', - ' -x [required]', - ' -y [required]', - 'Missing required arguments: y', - ] - ); - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - - -test('usagePass', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .demand(['x','y']) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkPass', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkFail', function (t) { - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(function (argv) { - if (!('x' in argv)) throw 'You forgot about -x'; - if (!('y' in argv)) throw 'You forgot about -y'; - }) - .argv; - }); - - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage -x NUM -y NUM', - 'You forgot about -y' - ] - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('checkCondPass', function (t) { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -y 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - t.same(r, { - result : { x : 10, y : 20, _ : [], $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('checkCondFail', function (t) { - function checker (argv) { - return 'x' in argv && 'y' in argv; - } - - var r = checkUsage(function () { - return optimist('-x 10 -z 20'.split(' ')) - .usage('Usage: $0 -x NUM -y NUM') - .check(checker) - .argv; - }); - - t.same( - r.result, - { x : 10, z : 20, _ : [], $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/).join('\n'), - 'Usage: ./usage -x NUM -y NUM\n' - + 'Argument check failed: ' + checker.toString() - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('countPass', function (t) { - var r = checkUsage(function () { - return optimist('1 2 3 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - t.same(r, { - result : { _ : [ '1', '2', '3' ], moo : true, $0 : './usage' }, - errors : [], - logs : [], - exit : false, - }); - t.end(); -}); - -test('countFail', function (t) { - var r = checkUsage(function () { - return optimist('1 2 --moo'.split(' ')) - .usage('Usage: $0 [x] [y] [z] {OPTIONS}') - .demand(3) - .argv; - }); - t.same( - r.result, - { _ : [ '1', '2' ], moo : true, $0 : './usage' } - ); - - t.same( - r.errors.join('\n').split(/\n+/), - [ - 'Usage: ./usage [x] [y] [z] {OPTIONS}', - 'Not enough non-option arguments: got 2, need at least 3', - ] - ); - - t.same(r.logs, []); - t.ok(r.exit); - t.end(); -}); - -test('defaultSingles', function (t) { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70 --powsy'.split(' ')) - .default('foo', 5) - .default('bar', 6) - .default('baz', 7) - .argv - ; - }); - t.same(r.result, { - foo : '50', - bar : 6, - baz : '70', - powsy : true, - _ : [], - $0 : './usage', - }); - t.end(); -}); - -test('defaultAliases', function (t) { - var r = checkUsage(function () { - return optimist('') - .alias('f', 'foo') - .default('f', 5) - .argv - ; - }); - t.same(r.result, { - f : '5', - foo : '5', - _ : [], - $0 : './usage', - }); - t.end(); -}); - -test('defaultHash', function (t) { - var r = checkUsage(function () { - return optimist('--foo 50 --baz 70'.split(' ')) - .default({ foo : 10, bar : 20, quux : 30 }) - .argv - ; - }); - t.same(r.result, { - _ : [], - $0 : './usage', - foo : 50, - baz : 70, - bar : 20, - quux : 30, - }); - t.end(); -}); - -test('rebase', function (t) { - t.equal( - optimist.rebase('/home/substack', '/home/substack/foo/bar/baz'), - './foo/bar/baz' - ); - t.equal( - optimist.rebase('/home/substack/foo/bar/baz', '/home/substack'), - '../../..' - ); - t.equal( - optimist.rebase('/home/substack/foo', '/home/substack/pow/zoom.txt'), - '../pow/zoom.txt' - ); - t.end(); -}); - -function checkUsage (f) { - - var exit = false; - - process._exit = process.exit; - process._env = process.env; - process._argv = process.argv; - - process.exit = function (t) { exit = true }; - process.env = Hash.merge(process.env, { _ : 'node' }); - process.argv = [ './usage' ]; - - var errors = []; - var logs = []; - - console._error = console.error; - console.error = function (msg) { errors.push(msg) }; - console._log = console.log; - console.log = function (msg) { logs.push(msg) }; - - var result = f(); - - process.exit = process._exit; - process.env = process._env; - process.argv = process._argv; - - console.error = console._error; - console.log = console._log; - - return { - errors : errors, - logs : logs, - exit : exit, - result : result, - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore deleted file mode 100644 index 3dddf3f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/* -node_modules/* diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml deleted file mode 100644 index ddc9c4f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md deleted file mode 100644 index 140fe0c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/CHANGELOG.md +++ /dev/null @@ -1,58 +0,0 @@ -# Change Log - -## 0.1.22 - -* Ignore duplicate mappings in SourceMapGenerator. Fixes github issue 21. - -## 0.1.21 - -* Fixed handling of sources that start with a slash so that they are relative to - the source root's host. - -## 0.1.20 - -* Fixed github issue #43: absolute URLs aren't joined with the source root - anymore. - -## 0.1.19 - -* Using Travis CI to run tests. - -## 0.1.18 - -* Fixed a bug in the handling of sourceRoot. - -## 0.1.17 - -* Added SourceNode.fromStringWithSourceMap. - -## 0.1.16 - -* Added missing documentation. - -* Fixed the generating of empty mappings in SourceNode. - -## 0.1.15 - -* Added SourceMapGenerator.applySourceMap. - -## 0.1.14 - -* The sourceRoot is now handled consistently. - -## 0.1.13 - -* Added SourceMapGenerator.fromSourceMap. - -## 0.1.12 - -* SourceNode now generates empty mappings too. - -## 0.1.11 - -* Added name support to SourceNode. - -## 0.1.10 - -* Added sourcesContent support to the customer and generator. - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE deleted file mode 100644 index ed1b7cf..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2009-2011, Mozilla Foundation and contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js deleted file mode 100644 index 8973ac2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/Makefile.dryice.js +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var path = require('path'); -var fs = require('fs'); -var copy = require('dryice').copy; - -function removeAmdefine(src) { - src = String(src).replace( - /if\s*\(typeof\s*define\s*!==\s*'function'\)\s*{\s*var\s*define\s*=\s*require\('amdefine'\)\(module\);\s*}\s*/g, - ''); - src = src.replace( - /\b(define\(.*)('amdefine',?)/gm, - '$1'); - return src; -} -removeAmdefine.onRead = true; - -function makeNonRelative(src) { - return src - .replace(/require\('.\//g, 'require(\'source-map/') - .replace(/\.\.\/\.\.\/lib\//g, ''); -} -makeNonRelative.onRead = true; - -function buildBrowser() { - console.log('\nCreating dist/source-map.js'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/mini-require.js', - { - project: project, - require: [ 'source-map/source-map-generator', - 'source-map/source-map-consumer', - 'source-map/source-node'] - }, - 'build/suffix-browser.js' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine - ], - dest: 'dist/source-map.js' - }); -} - -function buildBrowserMin() { - console.log('\nCreating dist/source-map.min.js'); - - copy({ - source: 'dist/source-map.js', - filter: copy.filter.uglifyjs, - dest: 'dist/source-map.min.js' - }); -} - -function buildFirefox() { - console.log('\nCreating dist/SourceMap.jsm'); - - var project = copy.createCommonJsProject({ - roots: [ path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-source-map.jsm', - { - project: project, - require: [ 'source-map/source-map-consumer', - 'source-map/source-map-generator', - 'source-map/source-node' ] - }, - 'build/suffix-source-map.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/SourceMap.jsm' - }); - - // Create dist/test/Utils.jsm - console.log('\nCreating dist/test/Utils.jsm'); - - project = copy.createCommonJsProject({ - roots: [ __dirname, path.join(__dirname, 'lib') ] - }); - - copy({ - source: [ - 'build/prefix-utils.jsm', - 'build/assert-shim.js', - { - project: project, - require: [ 'test/source-map/util' ] - }, - 'build/suffix-utils.jsm' - ], - filter: [ - copy.filter.moduleDefines, - removeAmdefine, - makeNonRelative - ], - dest: 'dist/test/Utils.jsm' - }); - - function isTestFile(f) { - return /^test\-.*?\.js/.test(f); - } - - var testFiles = fs.readdirSync(path.join(__dirname, 'test', 'source-map')).filter(isTestFile); - - testFiles.forEach(function (testFile) { - console.log('\nCreating', path.join('dist', 'test', testFile.replace(/\-/g, '_'))); - - copy({ - source: [ - 'build/test-prefix.js', - path.join('test', 'source-map', testFile), - 'build/test-suffix.js' - ], - filter: [ - removeAmdefine, - makeNonRelative, - function (input, source) { - return input.replace('define(', - 'define("' - + path.join('test', 'source-map', testFile.replace(/\.js$/, '')) - + '", ["require", "exports", "module"], '); - }, - function (input, source) { - return input.replace('{THIS_MODULE}', function () { - return "test/source-map/" + testFile.replace(/\.js$/, ''); - }); - } - ], - dest: path.join('dist', 'test', testFile.replace(/\-/g, '_')) - }); - }); -} - -function ensureDir(name) { - var dirExists = false; - try { - dirExists = fs.statSync(name).isDirectory(); - } catch (err) {} - - if (!dirExists) { - fs.mkdirSync(name, 0777); - } -} - -ensureDir("dist"); -ensureDir("dist/test"); -buildFirefox(); -buildBrowser(); -buildBrowserMin(); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md deleted file mode 100644 index 95e6787..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/README.md +++ /dev/null @@ -1,347 +0,0 @@ -# Source Map - -This is a library to generate and consume the source map format -[described here][format]. - -[Learn more here][feature]. - -This library was written in the Asynchronous Module Definition -format. It should work in the following environments: - -* Modern Browsers (either after the build, or with an AMD loader such as - RequireJS) - -* Inside Firefox (as a JSM file, after the build) - -* With NodeJS versions 0.8.X and higher - -## Installing with NPM (for use with NodeJS) - -Simply - - $ npm install source-map - -Or, if you'd like to hack on this library and have it installed via npm so you -can try out your changes: - - $ git clone https://fitzgen@github.com/mozilla/source-map.git - $ cd source-map - $ npm link . - -## Building from Source (for everywhere else) - -Install Node and then run - - $ git clone https://fitzgen@github.com/mozilla/source-map.git - $ cd source-map - $ npm link . - -Next, run - - $ node Makefile.dryice.js` - -This should create the following files: - -* `dist/source-map.js` - The unminified browser version. - -* `dist/source-map.min.js` - The minified browser version. - -* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox - source. - -## API - -Get a reference to the module: - - // NodeJS - var sourceMap = require('source-map'); - - // Browser builds - var sourceMap = window.sourceMap; - - // Inside Firefox - let sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - -### SourceMapConsumer - -A SourceMapConsumer instance represents a parsed source map which we can query -for information about the original file positions by giving it a file position -in the generated source. - -#### new SourceMapConsumer(rawSourceMap) - -The only parameter is the raw source map (either as a string which can be -`JSON.parse`'d, or an object). According to the spec, source maps have the -following attributes: - -* `version`: Which version of the source map spec this map is following. - -* `sources`: An array of URLs to the original source files. - -* `names`: An array of identifiers which can be referrenced by individual - mappings. - -* `sourceRoot`: Optional. The URL root from which all sources are relative. - -* `sourcesContent`: Optional. An array of contents of the original source files. - -* `mappings`: A string of base64 VLQs which contain the actual mappings. - -* `file`: The generated filename this source map is associated with. - -#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition) - -Returns the original source, line, and column information for the generated -source's line and column positions provided. The only argument is an object with -the following properties: - -* `line`: The line number in the generated source. - -* `column`: The column number in the generated source. - -and an object is returned with the following properties: - -* `source`: The original source file, or null if this information is not - available. - -* `line`: The line number in the original source, or null if this information is - not available. - -* `column`: The column number in the original source, or null or null if this - information is not available. - -* `name`: The original identifier, or null if this information is not available. - -#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition) - -Returns the generated line and column information for the original source, -line, and column positions provided. The only argument is an object with -the following properties: - -* `source`: The filename of the original source. - -* `line`: The line number in the original source. - -* `column`: The column number in the original source. - -and an object is returned with the following properties: - -* `line`: The line number in the generated source, or null. - -* `column`: The column number in the generated source, or null. - -#### SourceMapConsumer.prototype.sourceContentFor(source) - -Returns the original source content for the source provided. The only -argument is the URL of the original source file. - -#### SourceMapConsumer.prototype.eachMapping(callback, context, order) - -Iterate over each mapping between an original source/line/column and a -generated line/column in this source map. - -* `callback`: The function that is called with each mapping. - -* `context`: Optional. If specified, this object will be the value of `this` - every time that `callback` is called. - -* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or - `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over - the mappings sorted by the generated file's line/column order or the - original's source/line/column order, respectively. Defaults to - `SourceMapConsumer.GENERATED_ORDER`. - -### SourceMapGenerator - -An instance of the SourceMapGenerator represents a source map which is being -built incrementally. - -#### new SourceMapGenerator(startOfSourceMap) - -To create a new one, you must pass an object with the following properties: - -* `file`: The filename of the generated source that this source map is - associated with. - -* `sourceRoot`: An optional root for all relative URLs in this source map. - -#### SourceMapGenerator.fromSourceMap(sourceMapConsumer) - -Creates a new SourceMapGenerator based on a SourceMapConsumer - -* `sourceMapConsumer` The SourceMap. - -#### SourceMapGenerator.prototype.addMapping(mapping) - -Add a single mapping from original source line and column to the generated -source's line and column for this source map being created. The mapping object -should have the following properties: - -* `generated`: An object with the generated line and column positions. - -* `original`: An object with the original line and column positions. - -* `source`: The original source file (relative to the sourceRoot). - -* `name`: An optional original token name for this mapping. - -#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for an original source file. - -* `sourceFile` the URL of the original source file. - -* `sourceContent` the content of the source file. - -#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile]) - -Applies a SourceMap for a source file to the SourceMap. -Each mapping to the supplied source file is rewritten using the -supplied SourceMap. Note: The resolution for the resulting mappings -is the minimium of this map and the supplied map. - -* `sourceMapConsumer`: The SourceMap to be applied. - -* `sourceFile`: Optional. The filename of the source file. - If omitted, sourceMapConsumer.file will be used. - -#### SourceMapGenerator.prototype.toString() - -Renders the source map being generated to a string. - -### SourceNode - -SourceNodes provide a way to abstract over interpolating and/or concatenating -snippets of generated JavaScript source code, while maintaining the line and -column information associated between those snippets and the original source -code. This is useful as the final intermediate representation a compiler might -use before outputting the generated JS and source map. - -#### new SourceNode(line, column, source[, chunk[, name]]) - -* `line`: The original line number associated with this source node, or null if - it isn't associated with an original line. - -* `column`: The original column number associated with this source node, or null - if it isn't associated with an original column. - -* `source`: The original source's filename. - -* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see - below. - -* `name`: Optional. The original identifier. - -#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer) - -Creates a SourceNode from generated code and a SourceMapConsumer. - -* `code`: The generated code - -* `sourceMapConsumer` The SourceMap for the generated code - -#### SourceNode.prototype.add(chunk) - -Add a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.prepend(chunk) - -Prepend a chunk of generated JS to this source node. - -* `chunk`: A string snippet of generated JS code, another instance of - `SourceNode`, or an array where each member is one of those things. - -#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent) - -Set the source content for a source file. This will be added to the -`SourceMap` in the `sourcesContent` field. - -* `sourceFile`: The filename of the source file - -* `sourceContent`: The content of the source file - -#### SourceNode.prototype.walk(fn) - -Walk over the tree of JS snippets in this node and its children. The walking -function is called once for each snippet of JS and is passed that snippet and -the its original associated source's line/column location. - -* `fn`: The traversal function. - -#### SourceNode.prototype.walkSourceContents(fn) - -Walk over the tree of SourceNodes. The walking function is called for each -source file content and is passed the filename and source content. - -* `fn`: The traversal function. - -#### SourceNode.prototype.join(sep) - -Like `Array.prototype.join` except for SourceNodes. Inserts the separator -between each of this source node's children. - -* `sep`: The separator. - -#### SourceNode.prototype.replaceRight(pattern, replacement) - -Call `String.prototype.replace` on the very right-most source snippet. Useful -for trimming whitespace from the end of a source node, etc. - -* `pattern`: The pattern to replace. - -* `replacement`: The thing to replace the pattern with. - -#### SourceNode.prototype.toString() - -Return the string representation of this source node. Walks over the tree and -concatenates all the various snippets together to one string. - -### SourceNode.prototype.toStringWithSourceMap(startOfSourceMap) - -Returns the string representation of this tree of source nodes, plus a -SourceMapGenerator which contains all the mappings between the generated and -original sources. - -The arguments are the same as those to `new SourceMapGenerator`. - -## Tests - -[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map) - -Install NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`. - -To add new tests, create a new file named `test/test-.js` -and export your test functions with names that start with "test", for example - - exports["test doing the foo bar"] = function (assert, util) { - ... - }; - -The new test will be located automatically when you run the suite. - -The `util` argument is the test utility module located at `test/source-map/util`. - -The `assert` argument is a cut down version of node's assert module. You have -access to the following assertion functions: - -* `doesNotThrow` - -* `equal` - -* `ok` - -* `strictEqual` - -* `throws` - -(The reason for the restricted set of test functions is because we need the -tests to run inside Firefox's test suite as well and so the assert module is -shimmed in that environment. See `build/assert-shim.js`.) - -[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit -[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap -[Dryice]: https://github.com/mozilla/dryice diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js deleted file mode 100644 index daa1a62..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/assert-shim.js +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -define('test/source-map/assert', ['exports'], function (exports) { - - let do_throw = function (msg) { - throw new Error(msg); - }; - - exports.init = function (throw_fn) { - do_throw = throw_fn; - }; - - exports.doesNotThrow = function (fn) { - try { - fn(); - } - catch (e) { - do_throw(e.message); - } - }; - - exports.equal = function (actual, expected, msg) { - msg = msg || String(actual) + ' != ' + String(expected); - if (actual != expected) { - do_throw(msg); - } - }; - - exports.ok = function (val, msg) { - msg = msg || String(val) + ' is falsey'; - if (!Boolean(val)) { - do_throw(msg); - } - }; - - exports.strictEqual = function (actual, expected, msg) { - msg = msg || String(actual) + ' !== ' + String(expected); - if (actual !== expected) { - do_throw(msg); - } - }; - - exports.throws = function (fn) { - try { - fn(); - do_throw('Expected an error to be thrown, but it wasn\'t.'); - } - catch (e) { - } - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js deleted file mode 100644 index 0daf453..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/mini-require.js +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * Define a module along with a payload. - * @param {string} moduleName Name for the payload - * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec - * @param {function} payload Function with (require, exports, module) params - */ -function define(moduleName, deps, payload) { - if (typeof moduleName != "string") { - throw new TypeError('Expected string, got: ' + moduleName); - } - - if (arguments.length == 2) { - payload = deps; - } - - if (moduleName in define.modules) { - throw new Error("Module already defined: " + moduleName); - } - define.modules[moduleName] = payload; -}; - -/** - * The global store of un-instantiated modules - */ -define.modules = {}; - - -/** - * We invoke require() in the context of a Domain so we can have multiple - * sets of modules running separate from each other. - * This contrasts with JSMs which are singletons, Domains allows us to - * optionally load a CommonJS module twice with separate data each time. - * Perhaps you want 2 command lines with a different set of commands in each, - * for example. - */ -function Domain() { - this.modules = {}; - this._currentModule = null; -} - -(function () { - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * There are 2 ways to call this, either with an array of dependencies and a - * callback to call when the dependencies are found (which can happen - * asynchronously in an in-page context) or with a single string an no callback - * where the dependency is resolved synchronously and returned. - * The API is designed to be compatible with the CommonJS AMD spec and - * RequireJS. - * @param {string[]|string} deps A name, or names for the payload - * @param {function|undefined} callback Function to call when the dependencies - * are resolved - * @return {undefined|object} The module required or undefined for - * array/callback method - */ - Domain.prototype.require = function(deps, callback) { - if (Array.isArray(deps)) { - var params = deps.map(function(dep) { - return this.lookup(dep); - }, this); - if (callback) { - callback.apply(null, params); - } - return undefined; - } - else { - return this.lookup(deps); - } - }; - - function normalize(path) { - var bits = path.split('/'); - var i = 1; - while (i < bits.length) { - if (bits[i] === '..') { - bits.splice(i-1, 1); - } else if (bits[i] === '.') { - bits.splice(i, 1); - } else { - i++; - } - } - return bits.join('/'); - } - - function join(a, b) { - a = a.trim(); - b = b.trim(); - if (/^\//.test(b)) { - return b; - } else { - return a.replace(/\/*$/, '/') + b; - } - } - - function dirname(path) { - var bits = path.split('/'); - bits.pop(); - return bits.join('/'); - } - - /** - * Lookup module names and resolve them by calling the definition function if - * needed. - * @param {string} moduleName A name for the payload to lookup - * @return {object} The module specified by aModuleName or null if not found. - */ - Domain.prototype.lookup = function(moduleName) { - if (/^\./.test(moduleName)) { - moduleName = normalize(join(dirname(this._currentModule), moduleName)); - } - - if (moduleName in this.modules) { - var module = this.modules[moduleName]; - return module; - } - - if (!(moduleName in define.modules)) { - throw new Error("Module not defined: " + moduleName); - } - - var module = define.modules[moduleName]; - - if (typeof module == "function") { - var exports = {}; - var previousModule = this._currentModule; - this._currentModule = moduleName; - module(this.require.bind(this), exports, { id: moduleName, uri: "" }); - this._currentModule = previousModule; - module = exports; - } - - // cache the resulting module object for next time - this.modules[moduleName] = module; - - return module; - }; - -}()); - -define.Domain = Domain; -define.globalDomain = new Domain(); -var require = define.globalDomain.require.bind(define.globalDomain); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm deleted file mode 100644 index ee2539d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-source-map.jsm +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -/////////////////////////////////////////////////////////////////////////////// - - -this.EXPORTED_SYMBOLS = [ "SourceMapConsumer", "SourceMapGenerator", "SourceNode" ]; - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm deleted file mode 100644 index 80341d4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/prefix-utils.jsm +++ /dev/null @@ -1,18 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://gre/modules/devtools/Require.jsm'); -Components.utils.import('resource://gre/modules/devtools/SourceMap.jsm'); - -this.EXPORTED_SYMBOLS = [ "define", "runSourceMapTests" ]; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js deleted file mode 100644 index cf6cde7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-browser.js +++ /dev/null @@ -1,8 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -window.sourceMap = { - SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer, - SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator, - SourceNode: require('source-map/source-node').SourceNode -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm deleted file mode 100644 index cf3c2d8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-source-map.jsm +++ /dev/null @@ -1,6 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/////////////////////////////////////////////////////////////////////////////// - -this.SourceMapConsumer = require('source-map/source-map-consumer').SourceMapConsumer; -this.SourceMapGenerator = require('source-map/source-map-generator').SourceMapGenerator; -this.SourceNode = require('source-map/source-node').SourceNode; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm deleted file mode 100644 index b31b84c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/suffix-utils.jsm +++ /dev/null @@ -1,21 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -function runSourceMapTests(modName, do_throw) { - let mod = require(modName); - let assert = require('test/source-map/assert'); - let util = require('test/source-map/util'); - - assert.init(do_throw); - - for (let k in mod) { - if (/^test/.test(k)) { - mod[k](assert, util); - } - } - -} -this.runSourceMapTests = runSourceMapTests; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js deleted file mode 100644 index 1b13f30..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-prefix.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * WARNING! - * - * Do not edit this file directly, it is built from the sources at - * https://github.com/mozilla/source-map/ - */ - -Components.utils.import('resource://test/Utils.jsm'); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js deleted file mode 100644 index bec2de3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/build/test-suffix.js +++ /dev/null @@ -1,3 +0,0 @@ -function run_test() { - runSourceMapTests('{THIS_MODULE}', do_throw); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js deleted file mode 100644 index 121ad24..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = require('./source-map/source-map-generator').SourceMapGenerator; -exports.SourceMapConsumer = require('./source-map/source-map-consumer').SourceMapConsumer; -exports.SourceNode = require('./source-map/source-node').SourceNode; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js deleted file mode 100644 index f138ae7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/array-set.js +++ /dev/null @@ -1,96 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var util = require('./util'); - - /** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ - function ArraySet() { - this._array = []; - this._set = {}; - } - - /** - * Static method for creating ArraySet instances from an existing array. - */ - ArraySet.fromArray = function ArraySet_fromArray(aArray) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i]); - } - return set; - }; - - /** - * Add the given string to this set. - * - * @param String aStr - */ - ArraySet.prototype.add = function ArraySet_add(aStr) { - if (this.has(aStr)) { - // Already a member; nothing to do. - return; - } - var idx = this._array.length; - this._array.push(aStr); - this._set[util.toSetString(aStr)] = idx; - }; - - /** - * Is the given string a member of this set? - * - * @param String aStr - */ - ArraySet.prototype.has = function ArraySet_has(aStr) { - return Object.prototype.hasOwnProperty.call(this._set, - util.toSetString(aStr)); - }; - - /** - * What is the index of the given string in the array? - * - * @param String aStr - */ - ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (this.has(aStr)) { - return this._set[util.toSetString(aStr)]; - } - throw new Error('"' + aStr + '" is not in the set.'); - }; - - /** - * What is the element at the given index? - * - * @param Number aIdx - */ - ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); - }; - - /** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ - ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); - }; - - exports.ArraySet = ArraySet; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js deleted file mode 100644 index a9dd758..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64-vlq.js +++ /dev/null @@ -1,144 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var base64 = require('./base64'); - - // A single base 64 digit can contain 6 bits of data. For the base 64 variable - // length quantities we use in the source map spec, the first bit is the sign, - // the next four bits are the actual value, and the 6th bit is the - // continuation bit. The continuation bit tells us whether there are more - // digits in this value following this digit. - // - // Continuation - // | Sign - // | | - // V V - // 101011 - - var VLQ_BASE_SHIFT = 5; - - // binary: 100000 - var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - - // binary: 011111 - var VLQ_BASE_MASK = VLQ_BASE - 1; - - // binary: 100000 - var VLQ_CONTINUATION_BIT = VLQ_BASE; - - /** - * Converts from a two-complement value to a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ - function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; - } - - /** - * Converts to a two-complement value from a value where the sign bit is - * is placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ - function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; - } - - /** - * Returns the base 64 VLQ encoded value. - */ - exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; - }; - - /** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string. - */ - exports.decode = function base64VLQ_decode(aStr) { - var i = 0; - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (i >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - digit = base64.decode(aStr.charAt(i++)); - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - return { - value: fromVLQSigned(result), - rest: aStr.slice(i) - }; - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js deleted file mode 100644 index 397a754..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/base64.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var charToIntMap = {}; - var intToCharMap = {}; - - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - .split('') - .forEach(function (ch, index) { - charToIntMap[ch] = index; - intToCharMap[index] = ch; - }); - - /** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ - exports.encode = function base64_encode(aNumber) { - if (aNumber in intToCharMap) { - return intToCharMap[aNumber]; - } - throw new TypeError("Must be between 0 and 63: " + aNumber); - }; - - /** - * Decode a single base 64 digit to an integer. - */ - exports.decode = function base64_decode(aChar) { - if (aChar in charToIntMap) { - return charToIntMap[aChar]; - } - throw new TypeError("Not a valid base 64 digit: " + aChar); - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js deleted file mode 100644 index c6cb517..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/binary-search.js +++ /dev/null @@ -1,81 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - /** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - */ - function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the next - // closest element that is less than that element. - // - // 3. We did not find the exact element, and there is no next-closest - // element which is less than the one we are searching for, so we - // return null. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid]); - if (cmp === 0) { - // Found the element we are looking for. - return aHaystack[mid]; - } - else if (cmp > 0) { - // aHaystack[mid] is greater than our needle. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare); - } - // We did not find an exact match, return the next closest one - // (termination case 2). - return aHaystack[mid]; - } - else { - // aHaystack[mid] is less than our needle. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare); - } - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (2) or (3) and return the appropriate thing. - return aLow < 0 - ? null - : aHaystack[aLow]; - } - } - - /** - * This is an implementation of binary search which will always try and return - * the next lowest value checked if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - */ - exports.search = function search(aNeedle, aHaystack, aCompare) { - return aHaystack.length > 0 - ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare) - : null; - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js deleted file mode 100644 index 9da6f1c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-consumer.js +++ /dev/null @@ -1,426 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var util = require('./util'); - var binarySearch = require('./binary-search'); - var ArraySet = require('./array-set').ArraySet; - var base64VLQ = require('./base64-vlq'); - - /** - * A SourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ - function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - var names = util.getArg(sourceMap, 'names'); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file'); - - if (version !== this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._names = ArraySet.fromArray(names); - this._sources = ArraySet.fromArray(sources); - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this.file = file; - - // `this._generatedMappings` and `this._originalMappings` hold the parsed - // mapping coordinates from the source map's "mappings" attribute. Each - // object in the array is of the form - // - // { - // generatedLine: The line number in the generated code, - // generatedColumn: The column number in the generated code, - // source: The path to the original source file that generated this - // chunk of code, - // originalLine: The line number in the original source that - // corresponds to this chunk of generated code, - // originalColumn: The column number in the original source that - // corresponds to this chunk of generated code, - // name: The name of the original symbol which generated this chunk of - // code. - // } - // - // All properties except for `generatedLine` and `generatedColumn` can be - // `null`. - // - // `this._generatedMappings` is ordered by the generated positions. - // - // `this._originalMappings` is ordered by the original positions. - this._generatedMappings = []; - this._originalMappings = []; - this._parseMappings(mappings, sourceRoot); - } - - /** - * The version of the source mapping spec that we are consuming. - */ - SourceMapConsumer.prototype._version = 3; - - /** - * The list of original sources. - */ - Object.defineProperty(SourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot ? util.join(this.sourceRoot, s) : s; - }, this); - } - }); - - /** - * Parse the mappings in a string in to a data structure which we can easily - * query (an ordered list in this._generatedMappings). - */ - SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var mappingSeparator = /^[,;]/; - var str = aStr; - var mapping; - var temp; - - while (str.length > 0) { - if (str.charAt(0) === ';') { - generatedLine++; - str = str.slice(1); - previousGeneratedColumn = 0; - } - else if (str.charAt(0) === ',') { - str = str.slice(1); - } - else { - mapping = {}; - mapping.generatedLine = generatedLine; - - // Generated column. - temp = base64VLQ.decode(str); - mapping.generatedColumn = previousGeneratedColumn + temp.value; - previousGeneratedColumn = mapping.generatedColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original source. - temp = base64VLQ.decode(str); - mapping.source = this._sources.at(previousSource + temp.value); - previousSource += temp.value; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source, but no line and column'); - } - - // Original line. - temp = base64VLQ.decode(str); - mapping.originalLine = previousOriginalLine + temp.value; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - str = temp.rest; - if (str.length === 0 || mappingSeparator.test(str.charAt(0))) { - throw new Error('Found a source and line, but no column'); - } - - // Original column. - temp = base64VLQ.decode(str); - mapping.originalColumn = previousOriginalColumn + temp.value; - previousOriginalColumn = mapping.originalColumn; - str = temp.rest; - - if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) { - // Original name. - temp = base64VLQ.decode(str); - mapping.name = this._names.at(previousName + temp.value); - previousName += temp.value; - str = temp.rest; - } - } - - this._generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - this._originalMappings.push(mapping); - } - } - } - - this._originalMappings.sort(this._compareOriginalPositions); - }; - - /** - * Comparator between two mappings where the original positions are compared. - */ - SourceMapConsumer.prototype._compareOriginalPositions = - function SourceMapConsumer_compareOriginalPositions(mappingA, mappingB) { - if (mappingA.source > mappingB.source) { - return 1; - } - else if (mappingA.source < mappingB.source) { - return -1; - } - else { - var cmp = mappingA.originalLine - mappingB.originalLine; - return cmp === 0 - ? mappingA.originalColumn - mappingB.originalColumn - : cmp; - } - }; - - /** - * Comparator between two mappings where the generated positions are compared. - */ - SourceMapConsumer.prototype._compareGeneratedPositions = - function SourceMapConsumer_compareGeneratedPositions(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - return cmp === 0 - ? mappingA.generatedColumn - mappingB.generatedColumn - : cmp; - }; - - /** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ - SourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator); - }; - - /** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ - SourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var mapping = this._findMapping(needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - this._compareGeneratedPositions); - - if (mapping) { - var source = util.getArg(mapping, 'source', null); - if (source && this.sourceRoot) { - source = util.join(this.sourceRoot, source); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: util.getArg(mapping, 'name', null) - }; - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - - /** - * Returns the original source content. The only argument is - * the url of the original source file. Returns null if no - * original source content is availible. - */ - SourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot) { - // Try to remove the sourceRoot - var relativeUrl = util.relative(this.sourceRoot, aSource); - if (this._sources.has(relativeUrl)) { - return this.sourcesContent[this._sources.indexOf(relativeUrl)]; - } - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - throw new Error('"' + aSource + '" is not in the SourceMap.'); - }; - - /** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ - SourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - if (this.sourceRoot) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - - var mapping = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - this._compareOriginalPositions); - - if (mapping) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null) - }; - } - - return { - line: null, - column: null - }; - }; - - SourceMapConsumer.GENERATED_ORDER = 1; - SourceMapConsumer.ORIGINAL_ORDER = 2; - - /** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ - SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source; - if (source && sourceRoot) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name - }; - }).forEach(aCallback, context); - }; - - exports.SourceMapConsumer = SourceMapConsumer; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js deleted file mode 100644 index b3f62f5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-map-generator.js +++ /dev/null @@ -1,381 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var base64VLQ = require('./base64-vlq'); - var util = require('./util'); - var ArraySet = require('./array-set').ArraySet; - - /** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. To create a new one, you must pass an object - * with the following properties: - * - * - file: The filename of the generated source. - * - sourceRoot: An optional root for all URLs in this source map. - */ - function SourceMapGenerator(aArgs) { - this._file = util.getArg(aArgs, 'file'); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = []; - this._sourcesContents = null; - } - - SourceMapGenerator.prototype._version = 3; - - /** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ - SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source) { - newMapping.source = mapping.source; - if (sourceRoot) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - - /** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ - SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - this._validateMapping(generated, original, source, name); - - if (source && !this._sources.has(source)) { - this._sources.add(source); - } - - if (name && !this._names.has(name)) { - this._names.add(name); - } - - this._mappings.push({ - generated: generated, - original: original, - source: source, - name: name - }); - }; - - /** - * Set the source content for a source file. - */ - SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent !== null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = {}; - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - - /** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - */ - SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile) { - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (!aSourceFile) { - aSourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "aSourceFile" relative if an absolute Url is passed. - if (sourceRoot) { - aSourceFile = util.relative(sourceRoot, aSourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "aSourceFile" - this._mappings.forEach(function (mapping) { - if (mapping.source === aSourceFile && mapping.original) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.original.line, - column: mapping.original.column - }); - if (original.source !== null) { - // Copy mapping - if (sourceRoot) { - mapping.source = util.relative(sourceRoot, original.source); - } else { - mapping.source = original.source; - } - mapping.original.line = original.line; - mapping.original.column = original.column; - if (original.name !== null && mapping.name !== null) { - // Only use the identifier name if it's an identifier - // in both SourceMaps - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - if (sourceRoot) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - - /** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ - SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping.'); - } - }; - - function cmpLocation(loc1, loc2) { - var cmp = (loc1 && loc1.line) - (loc2 && loc2.line); - return cmp ? cmp : (loc1 && loc1.column) - (loc2 && loc2.column); - } - - function strcmp(str1, str2) { - str1 = str1 || ''; - str2 = str2 || ''; - return (str1 > str2) - (str1 < str2); - } - - function cmpMapping(mappingA, mappingB) { - return cmpLocation(mappingA.generated, mappingB.generated) || - cmpLocation(mappingA.original, mappingB.original) || - strcmp(mappingA.source, mappingB.source) || - strcmp(mappingA.name, mappingB.name); - } - - /** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ - SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var mapping; - - // The mappings must be guarenteed to be in sorted order before we start - // serializing them or else the generated line numbers (which are defined - // via the ';' separators) will be all messed up. Note: it might be more - // performant to maintain the sorting as we insert them, rather than as we - // serialize them, but the big O is the same either way. - this._mappings.sort(cmpMapping); - - for (var i = 0, len = this._mappings.length; i < len; i++) { - mapping = this._mappings[i]; - - if (mapping.generated.line !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generated.line !== previousGeneratedLine) { - result += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!cmpMapping(mapping, this._mappings[i - 1])) { - continue; - } - result += ','; - } - } - - result += base64VLQ.encode(mapping.generated.column - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generated.column; - - if (mapping.source && mapping.original) { - result += base64VLQ.encode(this._sources.indexOf(mapping.source) - - previousSource); - previousSource = this._sources.indexOf(mapping.source); - - // lines are stored 0-based in SourceMap spec version 3 - result += base64VLQ.encode(mapping.original.line - 1 - - previousOriginalLine); - previousOriginalLine = mapping.original.line - 1; - - result += base64VLQ.encode(mapping.original.column - - previousOriginalColumn); - previousOriginalColumn = mapping.original.column; - - if (mapping.name) { - result += base64VLQ.encode(this._names.indexOf(mapping.name) - - previousName); - previousName = this._names.indexOf(mapping.name); - } - } - } - - return result; - }; - - /** - * Externalize the source map. - */ - SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - file: this._file, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._sourceRoot) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = map.sources.map(function (source) { - if (map.sourceRoot) { - source = util.relative(map.sourceRoot, source); - } - return Object.prototype.hasOwnProperty.call( - this._sourcesContents, util.toSetString(source)) - ? this._sourcesContents[util.toSetString(source)] - : null; - }, this); - } - return map; - }; - - /** - * Render the source map being generated to a string. - */ - SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this); - }; - - exports.SourceMapGenerator = SourceMapGenerator; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js deleted file mode 100644 index 4c3314a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/source-node.js +++ /dev/null @@ -1,353 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; - var util = require('./util'); - - /** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ - function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine === undefined ? null : aLine; - this.column = aColumn === undefined ? null : aColumn; - this.source = aSource === undefined ? null : aSource; - this.name = aName === undefined ? null : aName; - if (aChunks != null) this.add(aChunks); - } - - /** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - */ - SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // The generated code - // Processed fragments are removed from this array. - var remainingLines = aGeneratedCode.split('\n'); - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping === null) { - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(remainingLines.shift() + "\n"); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[0]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[0] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - } else { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - var code = ""; - // Associate full lines with "lastMapping" - do { - code += remainingLines.shift() + "\n"; - lastGeneratedLine++; - lastGeneratedColumn = 0; - } while (lastGeneratedLine < mapping.generatedLine); - // When we reached the correct line, we add code until we - // reach the correct column too. - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[0]; - code += nextLine.substr(0, mapping.generatedColumn); - remainingLines[0] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - // Create the SourceNode. - addMappingWithCode(lastMapping, code); - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[0]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[0] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - } - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - // Associate the remaining code in the current line with "lastMapping" - // and add the remaining lines without any mapping - addMappingWithCode(lastMapping, remainingLines.join("\n")); - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content) { - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping.source === undefined) { - node.add(code); - } else { - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - mapping.source, - code, - mapping.name)); - } - } - }; - - /** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ - SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk instanceof SourceNode || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; - }; - - /** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walk = function SourceNode_walk(aFn) { - this.children.forEach(function (chunk) { - if (chunk instanceof SourceNode) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - }, this); - }; - - /** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ - SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; - }; - - /** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ - SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild instanceof SourceNode) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; - }; - - /** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ - SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - - /** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ - SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - this.children.forEach(function (chunk) { - if (chunk instanceof SourceNode) { - chunk.walkSourceContents(aFn); - } - }, this); - Object.keys(this.sourceContents).forEach(function (sourceFileKey) { - aFn(util.fromSetString(sourceFileKey), this.sourceContents[sourceFileKey]); - }, this); - }; - - /** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ - SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; - }; - - /** - * Returns the string representation of this source node along with a source - * map. - */ - SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - sourceMappingActive = false; - } - chunk.split('').forEach(function (ch) { - if (ch === '\n') { - generated.line++; - generated.column = 0; - } else { - generated.column++; - } - }); - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; - }; - - exports.SourceNode = SourceNode; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js deleted file mode 100644 index d59b257..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/lib/source-map/util.js +++ /dev/null @@ -1,91 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - /** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ - function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } - } - exports.getArg = getArg; - - var urlRegexp = /([\w+\-.]+):\/\/((\w+:\w+)@)?([\w.]+)?(:(\d+))?(\S+)?/; - - function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[3], - host: match[4], - port: match[6], - path: match[7] - }; - } - - function join(aRoot, aPath) { - var url; - - if (aPath.match(urlRegexp)) { - return aPath; - } - - if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) { - return aRoot.replace(url.path, '') + aPath; - } - - return aRoot.replace(/\/$/, '') + '/' + aPath; - } - exports.join = join; - - /** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ - function toSetString(aStr) { - return '$' + aStr; - } - exports.toSetString = toSetString; - - function fromSetString(aStr) { - return aStr.substr(1); - } - exports.fromSetString = fromSetString; - - function relative(aRoot, aPath) { - aRoot = aRoot.replace(/\/$/, ''); - return aPath.indexOf(aRoot + '/') === 0 - ? aPath.substr(aRoot.length + 1) - : aPath; - } - exports.relative = relative; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE deleted file mode 100644 index f33d665..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/LICENSE +++ /dev/null @@ -1,58 +0,0 @@ -amdefine is released under two licenses: new BSD, and MIT. You may pick the -license that best suits your development needs. The text of both licenses are -provided below. - - -The "New" BSD License: ----------------------- - -Copyright (c) 2011, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -MIT License ------------ - -Copyright (c) 2011, The Dojo Foundation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md deleted file mode 100644 index 8ebbc73..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/README.md +++ /dev/null @@ -1,119 +0,0 @@ -# amdefine - -A module that can be used to implement AMD's define() in Node. This allows you -to code to the AMD API and have the module work in node programs without -requiring those other programs to use AMD. - -## Usage - -**1)** Update your package.json to indicate amdefine as a dependency: - -```javascript - "dependencies": { - "amdefine": ">=0.0.5" - } -``` - -Then run `npm install` to get amdefine into your project. - -**2)** At the top of each module that uses define(), place this code: - -```javascript -if (typeof define !== 'function') { var define = require('amdefine')(module) } -``` - -**Only use these snippets** when loading amdefine. If you preserve the basic structure, -with the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer). - -You can add spaces, line breaks and even require amdefine with a local path, but -keep the rest of the structure to get the stripping behavior. - -As you may know, because `if` statements in JavaScript don't have their own scope, the var -declaration in the above snippet is made whether the `if` expression is truthy or not. If -RequireJS is loaded then the declaration is superfluous because `define` is already already -declared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var` -declarations of the same variable in the same scope gracefully. - -If you want to deliver amdefine.js with your code rather than specifying it as a dependency -with npm, then just download the latest release and refer to it using a relative path: - -[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js) - -## define() usage - -It is best if you use the anonymous forms of define() in your module: - -```javascript -define(function (require) { - var dependency = require('dependency'); -}); -``` - -or - -```javascript -define(['dependency'], function (dependency) { - -}); -``` - -## RequireJS optimizer integration. - -Version 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html) -will have support for stripping the `if (typeof define !== 'function')` check -mentioned above, so you can include this snippet for code that runs in the -browser, but avoid taking the cost of the if() statement once the code is -optimized for deployment. - -## Node 0.4 Support - -If you want to support Node 0.4, then add `require` as the second parameter to amdefine: - -```javascript -//Only if you want Node 0.4. If using 0.5 or later, use the above snippet. -if (typeof define !== 'function') { var define = require('amdefine')(module, require) } -``` - -## Limitations - -### Synchronous vs Asynchronous - -amdefine creates a define() function that is callable by your code. It will -execute and trace dependencies and call the factory function *synchronously*, -to keep the behavior in line with Node's synchronous dependency tracing. - -The exception: calling AMD's callback-style require() from inside a factory -function. The require callback is called on process.nextTick(): - -```javascript -define(function (require) { - require(['a'], function(a) { - //'a' is loaded synchronously, but - //this callback is called on process.nextTick(). - }); -}); -``` - -### Loader Plugins - -Loader plugins are supported as long as they call their load() callbacks -synchronously. So ones that do network requests will not work. However plugins -like [text](http://requirejs.org/docs/api.html#text) can load text files locally. - -The plugin API's `load.fromText()` is **not supported** in amdefine, so this means -transpiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs) -will not work. This may be fixable, but it is a bit complex, and I do not have -enough node-fu to figure it out yet. See the source for amdefine.js if you want -to get an idea of the issues involved. - -## Tests - -To run the tests, cd to **tests** and run: - -``` -node all.js -``` - -## License - -New BSD and MIT. Check the LICENSE file for all the details. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js deleted file mode 100644 index d074c94..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/amdefine.js +++ /dev/null @@ -1,299 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license amdefine 0.0.5 Copyright (c) 2011, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/amdefine for details - */ - -/*jslint node: true */ -/*global module, process */ -'use strict'; - -var path = require('path'); - -/** - * Creates a define for node. - * @param {Object} module the "module" object that is defined by Node for the - * current module. - * @param {Function} [require]. Node's require function for the current module. - * It only needs to be passed in Node versions before 0.5, when module.require - * did not exist. - * @returns {Function} a define function that is usable for the current node - * module. - */ -function amdefine(module, require) { - var defineCache = {}, - loaderCache = {}, - alreadyCalled = false, - makeRequire, stringRequire; - - /** - * Trims the . and .. from an array of path segments. - * It will keep a leading path segment if a .. will become - * the first path segment, to help with module name lookups, - * which act like paths, but can be remapped. But the end result, - * all paths that use this function should look normalized. - * NOTE: this method MODIFIES the input array. - * @param {Array} ary the array of path segments. - */ - function trimDots(ary) { - var i, part; - for (i = 0; ary[i]; i+= 1) { - part = ary[i]; - if (part === '.') { - ary.splice(i, 1); - i -= 1; - } else if (part === '..') { - if (i === 1 && (ary[2] === '..' || ary[0] === '..')) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for a path starting with '..'. - //This can still fail, but catches the most reasonable - //uses of .. - break; - } else if (i > 0) { - ary.splice(i - 1, 2); - i -= 2; - } - } - } - } - - function normalize(name, baseName) { - var baseParts; - - //Adjust any relative paths. - if (name && name.charAt(0) === '.') { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - baseParts = baseName.split('/'); - baseParts = baseParts.slice(0, baseParts.length - 1); - baseParts = baseParts.concat(name.split('/')); - trimDots(baseParts); - name = baseParts.join('/'); - } - } - - return name; - } - - /** - * Create the normalize() function passed to a loader plugin's - * normalize method. - */ - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(id) { - function load(value) { - loaderCache[id] = value; - } - - load.fromText = function (id, text) { - //This one is difficult because the text can/probably uses - //define, and any relative paths and requires should be relative - //to that id was it would be found on disk. But this would require - //bootstrapping a module/require fairly deeply from node core. - //Not sure how best to go about that yet. - throw new Error('amdefine does not implement load.fromText'); - }; - - return load; - } - - makeRequire = function (systemRequire, exports, module, relId) { - function amdRequire(deps, callback) { - if (typeof deps === 'string') { - //Synchronous, single module require('') - return stringRequire(systemRequire, exports, module, deps, relId); - } else { - //Array of dependencies with a callback. - - //Convert the dependencies to modules. - deps = deps.map(function (depName) { - return stringRequire(systemRequire, exports, module, depName, relId); - }); - - //Wait for next tick to call back the require call. - process.nextTick(function () { - callback.apply(null, deps); - }); - } - } - - amdRequire.toUrl = function (filePath) { - if (filePath.indexOf('.') === 0) { - return normalize(filePath, path.dirname(module.filename)); - } else { - return filePath; - } - }; - - return amdRequire; - }; - - //Favor explicit value, passed in if the module wants to support Node 0.4. - require = require || function req() { - return module.require.apply(module, arguments); - }; - - function runFactory(id, deps, factory) { - var r, e, m, result; - - if (id) { - e = loaderCache[id] = {}; - m = { - id: id, - uri: __filename, - exports: e - }; - r = makeRequire(require, e, m, id); - } else { - //Only support one define call per file - if (alreadyCalled) { - throw new Error('amdefine with no module ID cannot be called more than once per file.'); - } - alreadyCalled = true; - - //Use the real variables from node - //Use module.exports for exports, since - //the exports in here is amdefine exports. - e = module.exports; - m = module; - r = makeRequire(require, e, m, module.id); - } - - //If there are dependencies, they are strings, so need - //to convert them to dependency values. - if (deps) { - deps = deps.map(function (depName) { - return r(depName); - }); - } - - //Call the factory with the right dependencies. - if (typeof factory === 'function') { - result = factory.apply(module.exports, deps); - } else { - result = factory; - } - - if (result !== undefined) { - m.exports = result; - if (id) { - loaderCache[id] = m.exports; - } - } - } - - stringRequire = function (systemRequire, exports, module, id, relId) { - //Split the ID by a ! so that - var index = id.indexOf('!'), - originalId = id, - prefix, plugin; - - if (index === -1) { - id = normalize(id, relId); - - //Straight module lookup. If it is one of the special dependencies, - //deal with it, otherwise, delegate to node. - if (id === 'require') { - return makeRequire(systemRequire, exports, module, relId); - } else if (id === 'exports') { - return exports; - } else if (id === 'module') { - return module; - } else if (loaderCache.hasOwnProperty(id)) { - return loaderCache[id]; - } else if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } else { - if(systemRequire) { - return systemRequire(originalId); - } else { - throw new Error('No module with ID: ' + id); - } - } - } else { - //There is a plugin in play. - prefix = id.substring(0, index); - id = id.substring(index + 1, id.length); - - plugin = stringRequire(systemRequire, exports, module, prefix, relId); - - if (plugin.normalize) { - id = plugin.normalize(id, makeNormalize(relId)); - } else { - //Normalize the ID normally. - id = normalize(id, relId); - } - - if (loaderCache[id]) { - return loaderCache[id]; - } else { - plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {}); - - return loaderCache[id]; - } - } - }; - - //Create a define function specific to the module asking for amdefine. - function define(id, deps, factory) { - if (Array.isArray(id)) { - factory = deps; - deps = id; - id = undefined; - } else if (typeof id !== 'string') { - factory = id; - id = deps = undefined; - } - - if (deps && !Array.isArray(deps)) { - factory = deps; - deps = undefined; - } - - if (!deps) { - deps = ['require', 'exports', 'module']; - } - - //Set up properties for this module. If an ID, then use - //internal cache. If no ID, then use the external variables - //for this node module. - if (id) { - //Put the module in deep freeze until there is a - //require call for it. - defineCache[id] = [id, deps, factory]; - } else { - runFactory(id, deps, factory); - } - } - - //define.require, which has access to all the values in the - //cache. Useful for AMD modules that all have IDs in the file, - //but need to finally export a value to node based on one of those - //IDs. - define.require = function (id) { - if (loaderCache[id]) { - return loaderCache[id]; - } - - if (defineCache[id]) { - runFactory.apply(null, defineCache[id]); - return loaderCache[id]; - } - }; - - define.amd = {}; - - return define; -} - -module.exports = amdefine; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json deleted file mode 100644 index 0610cd1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/node_modules/amdefine/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "amdefine", - "description": "Provide AMD's define() API for declaring modules in the AMD format", - "version": "0.0.5", - "homepage": "http://github.com/jrburke/amdefine", - "author": { - "name": "James Burke", - "email": "jrburke@gmail.com", - "url": "http://github.com/jrburke" - }, - "licenses": [ - { - "type": "BSD", - "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" - }, - { - "type": "MIT", - "url": "https://github.com/jrburke/amdefine/blob/master/LICENSE" - } - ], - "repository": { - "type": "git", - "url": "https://github.com/jrburke/amdefine.git" - }, - "main": "./amdefine.js", - "engines": { - "node": ">=0.4.2" - }, - "readme": "# amdefine\n\nA module that can be used to implement AMD's define() in Node. This allows you\nto code to the AMD API and have the module work in node programs without\nrequiring those other programs to use AMD.\n\n## Usage\n\n**1)** Update your package.json to indicate amdefine as a dependency:\n\n```javascript\n \"dependencies\": {\n \"amdefine\": \">=0.0.5\"\n }\n```\n\nThen run `npm install` to get amdefine into your project.\n\n**2)** At the top of each module that uses define(), place this code:\n\n```javascript\nif (typeof define !== 'function') { var define = require('amdefine')(module) }\n```\n\n**Only use these snippets** when loading amdefine. If you preserve the basic structure,\nwith the braces, it will be stripped out when using the [RequireJS optimizer](#optimizer).\n\nYou can add spaces, line breaks and even require amdefine with a local path, but\nkeep the rest of the structure to get the stripping behavior.\n\nAs you may know, because `if` statements in JavaScript don't have their own scope, the var\ndeclaration in the above snippet is made whether the `if` expression is truthy or not. If\nRequireJS is loaded then the declaration is superfluous because `define` is already already\ndeclared in the same scope in RequireJS. Fortunately JavaScript handles multiple `var`\ndeclarations of the same variable in the same scope gracefully.\n\nIf you want to deliver amdefine.js with your code rather than specifying it as a dependency\nwith npm, then just download the latest release and refer to it using a relative path:\n\n[Latest Version](https://github.com/jrburke/amdefine/raw/latest/amdefine.js)\n\n## define() usage\n\nIt is best if you use the anonymous forms of define() in your module:\n\n```javascript\ndefine(function (require) {\n var dependency = require('dependency');\n});\n```\n\nor\n\n```javascript\ndefine(['dependency'], function (dependency) {\n\n});\n```\n\n## RequireJS optimizer integration. \n\nVersion 1.0.3 of the [RequireJS optimizer](http://requirejs.org/docs/optimization.html)\nwill have support for stripping the `if (typeof define !== 'function')` check\nmentioned above, so you can include this snippet for code that runs in the\nbrowser, but avoid taking the cost of the if() statement once the code is\noptimized for deployment.\n\n## Node 0.4 Support\n\nIf you want to support Node 0.4, then add `require` as the second parameter to amdefine:\n\n```javascript\n//Only if you want Node 0.4. If using 0.5 or later, use the above snippet.\nif (typeof define !== 'function') { var define = require('amdefine')(module, require) }\n```\n\n## Limitations\n\n### Synchronous vs Asynchronous\n\namdefine creates a define() function that is callable by your code. It will\nexecute and trace dependencies and call the factory function *synchronously*,\nto keep the behavior in line with Node's synchronous dependency tracing.\n\nThe exception: calling AMD's callback-style require() from inside a factory\nfunction. The require callback is called on process.nextTick():\n\n```javascript\ndefine(function (require) {\n require(['a'], function(a) {\n //'a' is loaded synchronously, but\n //this callback is called on process.nextTick().\n });\n});\n```\n\n### Loader Plugins\n\nLoader plugins are supported as long as they call their load() callbacks\nsynchronously. So ones that do network requests will not work. However plugins\nlike [text](http://requirejs.org/docs/api.html#text) can load text files locally.\n\nThe plugin API's `load.fromText()` is **not supported** in amdefine, so this means\ntranspiler plugins like the [CoffeeScript loader plugin](https://github.com/jrburke/require-cs)\nwill not work. This may be fixable, but it is a bit complex, and I do not have\nenough node-fu to figure it out yet. See the source for amdefine.js if you want\nto get an idea of the issues involved.\n\n## Tests\n\nTo run the tests, cd to **tests** and run:\n\n```\nnode all.js\n```\n\n## License\n\nNew BSD and MIT. Check the LICENSE file for all the details.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/jrburke/amdefine/issues" - }, - "_id": "amdefine@0.0.5", - "_from": "amdefine@>=0.0.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json deleted file mode 100644 index c863c33..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "source-map", - "description": "Generates and consumes source maps", - "version": "0.1.22", - "homepage": "https://github.com/mozilla/source-map", - "author": { - "name": "Nick Fitzgerald", - "email": "nfitzgerald@mozilla.com" - }, - "contributors": [ - { - "name": "Stephen Crane" - }, - { - "name": "Ryan Seddon" - }, - { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com" - }, - { - "name": "Michael Ficarra", - "email": "github.public.email@michael.ficarra.me" - }, - { - "name": "Todd Wolfson", - "email": "todd@twolfson.com" - }, - { - "name": "Alexander Solovyov", - "email": "alexander@solovyov.net" - }, - { - "name": "Felix Gnass" - }, - { - "name": "Conrad Irwin", - "email": "conrad.irwin@gmail.com" - }, - { - "name": "github.com/usrbincc" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/mozilla/source-map.git" - }, - "directories": { - "lib": "./lib" - }, - "main": "./lib/source-map.js", - "engines": { - "node": ">=0.8.0" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://opensource.org/licenses/BSD-3-Clause" - } - ], - "dependencies": { - "amdefine": ">=0.0.4" - }, - "devDependencies": { - "dryice": ">=0.4.8" - }, - "scripts": { - "test": "node test/run-tests.js" - }, - "readme": "# Source Map\n\nThis is a library to generate and consume the source map format\n[described here][format].\n\n[Learn more here][feature].\n\nThis library was written in the Asynchronous Module Definition\nformat. It should work in the following environments:\n\n* Modern Browsers (either after the build, or with an AMD loader such as\n RequireJS)\n\n* Inside Firefox (as a JSM file, after the build)\n\n* With NodeJS versions 0.8.X and higher\n\n## Installing with NPM (for use with NodeJS)\n\nSimply\n\n $ npm install source-map\n\nOr, if you'd like to hack on this library and have it installed via npm so you\ncan try out your changes:\n\n $ git clone https://fitzgen@github.com/mozilla/source-map.git\n $ cd source-map\n $ npm link .\n\n## Building from Source (for everywhere else)\n\nInstall Node and then run\n\n $ git clone https://fitzgen@github.com/mozilla/source-map.git\n $ cd source-map\n $ npm link .\n\nNext, run\n\n $ node Makefile.dryice.js`\n\nThis should create the following files:\n\n* `dist/source-map.js` - The unminified browser version.\n\n* `dist/source-map.min.js` - The minified browser version.\n\n* `dist/SourceMap.jsm` - The JavaScript Module for inclusion in Firefox\n source.\n\n## API\n\nGet a reference to the module:\n\n // NodeJS\n var sourceMap = require('source-map');\n\n // Browser builds\n var sourceMap = window.sourceMap;\n\n // Inside Firefox\n let sourceMap = {};\n Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap);\n\n### SourceMapConsumer\n\nA SourceMapConsumer instance represents a parsed source map which we can query\nfor information about the original file positions by giving it a file position\nin the generated source.\n\n#### new SourceMapConsumer(rawSourceMap)\n\nThe only parameter is the raw source map (either as a string which can be\n`JSON.parse`'d, or an object). According to the spec, source maps have the\nfollowing attributes:\n\n* `version`: Which version of the source map spec this map is following.\n\n* `sources`: An array of URLs to the original source files.\n\n* `names`: An array of identifiers which can be referrenced by individual\n mappings.\n\n* `sourceRoot`: Optional. The URL root from which all sources are relative.\n\n* `sourcesContent`: Optional. An array of contents of the original source files.\n\n* `mappings`: A string of base64 VLQs which contain the actual mappings.\n\n* `file`: The generated filename this source map is associated with.\n\n#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)\n\nReturns the original source, line, and column information for the generated\nsource's line and column positions provided. The only argument is an object with\nthe following properties:\n\n* `line`: The line number in the generated source.\n\n* `column`: The column number in the generated source.\n\nand an object is returned with the following properties:\n\n* `source`: The original source file, or null if this information is not\n available.\n\n* `line`: The line number in the original source, or null if this information is\n not available.\n\n* `column`: The column number in the original source, or null or null if this\n information is not available.\n\n* `name`: The original identifier, or null if this information is not available.\n\n#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition)\n\nReturns the generated line and column information for the original source,\nline, and column positions provided. The only argument is an object with\nthe following properties:\n\n* `source`: The filename of the original source.\n\n* `line`: The line number in the original source.\n\n* `column`: The column number in the original source.\n\nand an object is returned with the following properties:\n\n* `line`: The line number in the generated source, or null.\n\n* `column`: The column number in the generated source, or null.\n\n#### SourceMapConsumer.prototype.sourceContentFor(source)\n\nReturns the original source content for the source provided. The only\nargument is the URL of the original source file.\n\n#### SourceMapConsumer.prototype.eachMapping(callback, context, order)\n\nIterate over each mapping between an original source/line/column and a\ngenerated line/column in this source map.\n\n* `callback`: The function that is called with each mapping.\n\n* `context`: Optional. If specified, this object will be the value of `this`\n every time that `callback` is called.\n\n* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or\n `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over\n the mappings sorted by the generated file's line/column order or the\n original's source/line/column order, respectively. Defaults to\n `SourceMapConsumer.GENERATED_ORDER`.\n\n### SourceMapGenerator\n\nAn instance of the SourceMapGenerator represents a source map which is being\nbuilt incrementally.\n\n#### new SourceMapGenerator(startOfSourceMap)\n\nTo create a new one, you must pass an object with the following properties:\n\n* `file`: The filename of the generated source that this source map is\n associated with.\n\n* `sourceRoot`: An optional root for all relative URLs in this source map.\n\n#### SourceMapGenerator.fromSourceMap(sourceMapConsumer)\n\nCreates a new SourceMapGenerator based on a SourceMapConsumer\n\n* `sourceMapConsumer` The SourceMap.\n\n#### SourceMapGenerator.prototype.addMapping(mapping)\n\nAdd a single mapping from original source line and column to the generated\nsource's line and column for this source map being created. The mapping object\nshould have the following properties:\n\n* `generated`: An object with the generated line and column positions.\n\n* `original`: An object with the original line and column positions.\n\n* `source`: The original source file (relative to the sourceRoot).\n\n* `name`: An optional original token name for this mapping.\n\n#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)\n\nSet the source content for an original source file.\n\n* `sourceFile` the URL of the original source file.\n\n* `sourceContent` the content of the source file.\n\n#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile])\n\nApplies a SourceMap for a source file to the SourceMap.\nEach mapping to the supplied source file is rewritten using the\nsupplied SourceMap. Note: The resolution for the resulting mappings\nis the minimium of this map and the supplied map.\n\n* `sourceMapConsumer`: The SourceMap to be applied.\n\n* `sourceFile`: Optional. The filename of the source file.\n If omitted, sourceMapConsumer.file will be used.\n\n#### SourceMapGenerator.prototype.toString()\n\nRenders the source map being generated to a string.\n\n### SourceNode\n\nSourceNodes provide a way to abstract over interpolating and/or concatenating\nsnippets of generated JavaScript source code, while maintaining the line and\ncolumn information associated between those snippets and the original source\ncode. This is useful as the final intermediate representation a compiler might\nuse before outputting the generated JS and source map.\n\n#### new SourceNode(line, column, source[, chunk[, name]])\n\n* `line`: The original line number associated with this source node, or null if\n it isn't associated with an original line.\n\n* `column`: The original column number associated with this source node, or null\n if it isn't associated with an original column.\n\n* `source`: The original source's filename.\n\n* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see\n below.\n\n* `name`: Optional. The original identifier.\n\n#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer)\n\nCreates a SourceNode from generated code and a SourceMapConsumer.\n\n* `code`: The generated code\n\n* `sourceMapConsumer` The SourceMap for the generated code\n\n#### SourceNode.prototype.add(chunk)\n\nAdd a chunk of generated JS to this source node.\n\n* `chunk`: A string snippet of generated JS code, another instance of\n `SourceNode`, or an array where each member is one of those things.\n\n#### SourceNode.prototype.prepend(chunk)\n\nPrepend a chunk of generated JS to this source node.\n\n* `chunk`: A string snippet of generated JS code, another instance of\n `SourceNode`, or an array where each member is one of those things.\n\n#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent)\n\nSet the source content for a source file. This will be added to the\n`SourceMap` in the `sourcesContent` field.\n\n* `sourceFile`: The filename of the source file\n\n* `sourceContent`: The content of the source file\n\n#### SourceNode.prototype.walk(fn)\n\nWalk over the tree of JS snippets in this node and its children. The walking\nfunction is called once for each snippet of JS and is passed that snippet and\nthe its original associated source's line/column location.\n\n* `fn`: The traversal function.\n\n#### SourceNode.prototype.walkSourceContents(fn)\n\nWalk over the tree of SourceNodes. The walking function is called for each\nsource file content and is passed the filename and source content.\n\n* `fn`: The traversal function.\n\n#### SourceNode.prototype.join(sep)\n\nLike `Array.prototype.join` except for SourceNodes. Inserts the separator\nbetween each of this source node's children.\n\n* `sep`: The separator.\n\n#### SourceNode.prototype.replaceRight(pattern, replacement)\n\nCall `String.prototype.replace` on the very right-most source snippet. Useful\nfor trimming whitespace from the end of a source node, etc.\n\n* `pattern`: The pattern to replace.\n\n* `replacement`: The thing to replace the pattern with.\n\n#### SourceNode.prototype.toString()\n\nReturn the string representation of this source node. Walks over the tree and\nconcatenates all the various snippets together to one string.\n\n### SourceNode.prototype.toStringWithSourceMap(startOfSourceMap)\n\nReturns the string representation of this tree of source nodes, plus a\nSourceMapGenerator which contains all the mappings between the generated and\noriginal sources.\n\nThe arguments are the same as those to `new SourceMapGenerator`.\n\n## Tests\n\n[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map)\n\nInstall NodeJS version 0.8.0 or greater, then run `node test/run-tests.js`.\n\nTo add new tests, create a new file named `test/test-.js`\nand export your test functions with names that start with \"test\", for example\n\n exports[\"test doing the foo bar\"] = function (assert, util) {\n ...\n };\n\nThe new test will be located automatically when you run the suite.\n\nThe `util` argument is the test utility module located at `test/source-map/util`.\n\nThe `assert` argument is a cut down version of node's assert module. You have\naccess to the following assertion functions:\n\n* `doesNotThrow`\n\n* `equal`\n\n* `ok`\n\n* `strictEqual`\n\n* `throws`\n\n(The reason for the restricted set of test functions is because we need the\ntests to run inside Firefox's test suite as well and so the assert module is\nshimmed in that environment. See `build/assert-shim.js`.)\n\n[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit\n[feature]: https://wiki.mozilla.org/DevTools/Features/SourceMap\n[Dryice]: https://github.com/mozilla/dryice\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/mozilla/source-map/issues" - }, - "_id": "source-map@0.1.22", - "_from": "source-map@~0.1.7" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js deleted file mode 100644 index 8bf2256..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/run-tests.js +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env node -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -var assert = require('assert'); -var fs = require('fs'); -var path = require('path'); -var util = require('./source-map/util'); - -function run(tests) { - var failures = []; - var total = 0; - var passed = 0; - - for (var i = 0; i < tests.length; i++) { - for (var k in tests[i].testCase) { - if (/^test/.test(k)) { - total++; - try { - tests[i].testCase[k](assert, util); - passed++; - process.stdout.write('.'); - } - catch (e) { - failures.push({ - name: tests[i].name + ': ' + k, - error: e - }); - process.stdout.write('E'); - } - } - } - } - - process.stdout.write('\n'); - console.log(passed + ' / ' + total + ' tests passed.'); - - failures.forEach(function (f) { - console.log('================================================================================'); - console.log(f.name); - console.log('--------------------------------------------------------------------------------'); - console.log(f.error.stack); - }); - - return failures.length; -} - -var code; - -process.stdout.on('close', function () { - process.exit(code); -}); - -function isTestFile(f) { - return /^test\-.*?\.js/.test(f); -} - -function toModule(f) { - return './source-map/' + f.replace(/\.js$/, ''); -} - -var requires = fs.readdirSync(path.join(__dirname, 'source-map')).filter(isTestFile).map(toModule); - -code = run(requires.map(require).map(function (mod, i) { - return { - name: requires[i], - testCase: mod - }; -})); -process.exit(code); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js deleted file mode 100644 index 63eb45a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-api.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2012 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var sourceMap; - try { - sourceMap = require('../../lib/source-map'); - } catch (e) { - sourceMap = {}; - Components.utils.import('resource:///modules/devtools/SourceMap.jsm', sourceMap); - } - - exports['test that the api is properly exposed in the top level'] = function (assert, util) { - assert.equal(typeof sourceMap.SourceMapGenerator, "function"); - assert.equal(typeof sourceMap.SourceMapConsumer, "function"); - assert.equal(typeof sourceMap.SourceNode, "function"); - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js deleted file mode 100644 index c4e88d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-array-set.js +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var ArraySet = require('../../lib/source-map/array-set').ArraySet; - - function makeTestSet() { - var set = new ArraySet(); - for (var i = 0; i < 100; i++) { - set.add(String(i)); - } - return set; - } - - exports['test .has() membership'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.ok(set.has(String(i))); - } - }; - - exports['test .indexOf() elements'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.indexOf(String(i)), i); - } - }; - - exports['test .at() indexing'] = function (assert, util) { - var set = makeTestSet(); - for (var i = 0; i < 100; i++) { - assert.strictEqual(set.at(i), String(i)); - } - }; - - exports['test creating from an array'] = function (assert, util) { - var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); - - assert.ok(set.has('foo')); - assert.ok(set.has('bar')); - assert.ok(set.has('baz')); - assert.ok(set.has('quux')); - assert.ok(set.has('hasOwnProperty')); - - assert.strictEqual(set.indexOf('foo'), 0); - assert.strictEqual(set.indexOf('bar'), 1); - assert.strictEqual(set.indexOf('baz'), 2); - assert.strictEqual(set.indexOf('quux'), 3); - - assert.strictEqual(set.at(0), 'foo'); - assert.strictEqual(set.at(1), 'bar'); - assert.strictEqual(set.at(2), 'baz'); - assert.strictEqual(set.at(3), 'quux'); - }; - - exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { - var set = new ArraySet(); - set.add('__proto__'); - assert.ok(set.has('__proto__')); - assert.strictEqual(set.at(0), '__proto__'); - assert.strictEqual(set.indexOf('__proto__'), 0); - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js deleted file mode 100644 index 7100da3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64-vlq.js +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var base64VLQ = require('../../lib/source-map/base64-vlq'); - - exports['test normal encoding and decoding'] = function (assert, util) { - var result; - for (var i = -255; i < 256; i++) { - result = base64VLQ.decode(base64VLQ.encode(i)); - assert.ok(result); - assert.equal(result.value, i); - assert.equal(result.rest, ""); - } - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js deleted file mode 100644 index 23e0f88..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-base64.js +++ /dev/null @@ -1,35 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var base64 = require('../../lib/source-map/base64'); - - exports['test out of range encoding'] = function (assert, util) { - assert.throws(function () { - base64.encode(-1); - }); - assert.throws(function () { - base64.encode(64); - }); - }; - - exports['test out of range decoding'] = function (assert, util) { - assert.throws(function () { - base64.decode('='); - }); - }; - - exports['test normal encoding and decoding'] = function (assert, util) { - for (var i = 0; i < 64; i++) { - assert.equal(base64.decode(base64.encode(i)), i); - } - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js deleted file mode 100644 index 41d0bf8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-binary-search.js +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var binarySearch = require('../../lib/source-map/binary-search'); - - function numberCompare(a, b) { - return a - b; - } - - exports['test too high'] = function (assert, util) { - var needle = 30; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 20); - }; - - exports['test too low'] = function (assert, util) { - var needle = 1; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.doesNotThrow(function () { - binarySearch.search(needle, haystack, numberCompare); - }); - - assert.equal(binarySearch.search(needle, haystack, numberCompare), null); - }; - - exports['test exact search'] = function (assert, util) { - var needle = 4; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 4); - }; - - exports['test fuzzy search'] = function (assert, util) { - var needle = 19; - var haystack = [2,4,6,8,10,12,14,16,18,20]; - - assert.equal(binarySearch.search(needle, haystack, numberCompare), 18); - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js deleted file mode 100644 index d433bf6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-dog-fooding.js +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test eating our own dog food'] = function (assert, util) { - var smg = new SourceMapGenerator({ - file: 'testing.js', - sourceRoot: '/wu/tang' - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 1, column: 0 }, - generated: { line: 2, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 2, column: 0 }, - generated: { line: 3, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 3, column: 0 }, - generated: { line: 4, column: 2 } - }); - - smg.addMapping({ - source: 'gza.coffee', - original: { line: 4, column: 0 }, - generated: { line: 5, column: 2 } - }); - - var smc = new SourceMapConsumer(smg.toString()); - - // Exact - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 0, null, smc, assert); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 0, null, smc, assert); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 0, null, smc, assert); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 0, null, smc, assert); - - // Fuzzy - - // Original to generated - util.assertMapping(2, 0, null, null, null, null, smc, assert, true); - util.assertMapping(2, 9, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); - util.assertMapping(3, 0, '/wu/tang/gza.coffee', 1, 0, null, smc, assert, true); - util.assertMapping(3, 9, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); - util.assertMapping(4, 0, '/wu/tang/gza.coffee', 2, 0, null, smc, assert, true); - util.assertMapping(4, 9, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); - util.assertMapping(5, 0, '/wu/tang/gza.coffee', 3, 0, null, smc, assert, true); - util.assertMapping(5, 9, '/wu/tang/gza.coffee', 4, 0, null, smc, assert, true); - - // Generated to original - util.assertMapping(2, 2, '/wu/tang/gza.coffee', 1, 1, null, smc, assert, null, true); - util.assertMapping(3, 2, '/wu/tang/gza.coffee', 2, 3, null, smc, assert, null, true); - util.assertMapping(4, 2, '/wu/tang/gza.coffee', 3, 6, null, smc, assert, null, true); - util.assertMapping(5, 2, '/wu/tang/gza.coffee', 4, 9, null, smc, assert, null, true); - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js deleted file mode 100644 index 610d463..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-consumer.js +++ /dev/null @@ -1,291 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - - exports['test that we can instantiate with a string or an objects'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(util.testMap); - }); - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(JSON.stringify(util.testMap)); - }); - }; - - exports['test that the `sources` field has the original sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var sources = map.sources; - - assert.equal(sources[0], '/the/root/one.js'); - assert.equal(sources[1], '/the/root/two.js'); - assert.equal(sources.length, 2); - }; - - exports['test that the source root is reflected in a mapping\'s source field'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var mapping; - - mapping = map.originalPositionFor({ - line: 2, - column: 1 - }); - assert.equal(mapping.source, '/the/root/two.js'); - - mapping = map.originalPositionFor({ - line: 1, - column: 1 - }); - assert.equal(mapping.source, '/the/root/one.js'); - }; - - exports['test mapping tokens back exactly'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - util.assertMapping(1, 1, '/the/root/one.js', 1, 1, null, map, assert); - util.assertMapping(1, 5, '/the/root/one.js', 1, 5, null, map, assert); - util.assertMapping(1, 9, '/the/root/one.js', 1, 11, null, map, assert); - util.assertMapping(1, 18, '/the/root/one.js', 1, 21, 'bar', map, assert); - util.assertMapping(1, 21, '/the/root/one.js', 2, 3, null, map, assert); - util.assertMapping(1, 28, '/the/root/one.js', 2, 10, 'baz', map, assert); - util.assertMapping(1, 32, '/the/root/one.js', 2, 14, 'bar', map, assert); - - util.assertMapping(2, 1, '/the/root/two.js', 1, 1, null, map, assert); - util.assertMapping(2, 5, '/the/root/two.js', 1, 5, null, map, assert); - util.assertMapping(2, 9, '/the/root/two.js', 1, 11, null, map, assert); - util.assertMapping(2, 18, '/the/root/two.js', 1, 21, 'n', map, assert); - util.assertMapping(2, 21, '/the/root/two.js', 2, 3, null, map, assert); - util.assertMapping(2, 28, '/the/root/two.js', 2, 10, 'n', map, assert); - }; - - exports['test mapping tokens fuzzy'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - - // Finding original positions - util.assertMapping(1, 20, '/the/root/one.js', 1, 21, 'bar', map, assert, true); - util.assertMapping(1, 30, '/the/root/one.js', 2, 10, 'baz', map, assert, true); - util.assertMapping(2, 12, '/the/root/two.js', 1, 11, null, map, assert, true); - - // Finding generated positions - util.assertMapping(1, 18, '/the/root/one.js', 1, 22, 'bar', map, assert, null, true); - util.assertMapping(1, 28, '/the/root/one.js', 2, 13, 'baz', map, assert, null, true); - util.assertMapping(2, 9, '/the/root/two.js', 1, 16, null, map, assert, null, true); - }; - - exports['test creating source map consumers with )]}\' prefix'] = function (assert, util) { - assert.doesNotThrow(function () { - var map = new SourceMapConsumer(")]}'" + JSON.stringify(util.testMap)); - }); - }; - - exports['test eachMapping'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - map.eachMapping(function (mapping) { - assert.ok(mapping.generatedLine >= previousLine); - - if (mapping.source) { - assert.equal(mapping.source.indexOf(util.testMap.sourceRoot), 0); - } - - if (mapping.generatedLine === previousLine) { - assert.ok(mapping.generatedColumn >= previousColumn); - previousColumn = mapping.generatedColumn; - } - else { - previousLine = mapping.generatedLine; - previousColumn = -Infinity; - } - }); - }; - - exports['test iterating over mappings in a different order'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var previousLine = -Infinity; - var previousColumn = -Infinity; - var previousSource = ""; - map.eachMapping(function (mapping) { - assert.ok(mapping.source >= previousSource); - - if (mapping.source === previousSource) { - assert.ok(mapping.originalLine >= previousLine); - - if (mapping.originalLine === previousLine) { - assert.ok(mapping.originalColumn >= previousColumn); - previousColumn = mapping.originalColumn; - } - else { - previousLine = mapping.originalLine; - previousColumn = -Infinity; - } - } - else { - previousSource = mapping.source; - previousLine = -Infinity; - previousColumn = -Infinity; - } - }, null, SourceMapConsumer.ORIGINAL_ORDER); - }; - - exports['test that we can set the context for `this` in eachMapping'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMap); - var context = {}; - map.eachMapping(function () { - assert.equal(this, context); - }, context); - }; - - exports['test that the `sourcesContent` field has the original sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sourcesContent = map.sourcesContent; - - assert.equal(sourcesContent[0], ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(sourcesContent[1], ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(sourcesContent.length, 2); - }; - - exports['test that we can get the original sources for the sources'] = function (assert, util) { - var map = new SourceMapConsumer(util.testMapWithSourcesContent); - var sources = map.sources; - - assert.equal(map.sourceContentFor(sources[0]), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor(sources[1]), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.equal(map.sourceContentFor("one.js"), ' ONE.foo = function (bar) {\n return baz(bar);\n };'); - assert.equal(map.sourceContentFor("two.js"), ' TWO.inc = function (n) {\n return n + 1;\n };'); - assert.throws(function () { - map.sourceContentFor(""); - }, Error); - assert.throws(function () { - map.sourceContentFor("/the/root/three.js"); - }, Error); - assert.throws(function () { - map.sourceContentFor("three.js"); - }, Error); - }; - - exports['test sourceRoot + generatedPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map.addMapping({ - original: { line: 5, column: 5 }, - generated: { line: 6, column: 6 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - // Should handle without sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - - // Should handle with sourceRoot. - var pos = map.generatedPositionFor({ - line: 1, - column: 1, - source: 'foo/bar/bang.coffee' - }); - - assert.equal(pos.line, 2); - assert.equal(pos.column, 2); - }; - - exports['test sourceRoot + originalPositionFor'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'foo/bar', - file: 'baz.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'bang.coffee' - }); - map = new SourceMapConsumer(map.toString()); - - var pos = map.originalPositionFor({ - line: 2, - column: 2, - }); - - // Should always have the prepended source root - assert.equal(pos.source, 'foo/bar/bang.coffee'); - assert.equal(pos.line, 1); - assert.equal(pos.column, 1); - }; - - exports['test github issue #56'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://', - file: 'www.example.com/foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'www.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1); - assert.equal(sources[0], 'http://www.example.com/original.js'); - }; - - exports['test github issue #43'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: 'http://cdn.example.com/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://cdn.example.com/original.js', - 'Should not be joined with the sourceRoot.'); - }; - - exports['test absolute path, but same host sources'] = function (assert, util) { - var map = new SourceMapGenerator({ - sourceRoot: 'http://example.com/foo/bar', - file: 'foo.js' - }); - map.addMapping({ - original: { line: 1, column: 1 }, - generated: { line: 2, column: 2 }, - source: '/original.js' - }); - map = new SourceMapConsumer(map.toString()); - - var sources = map.sources; - assert.equal(sources.length, 1, - 'Should only be one source.'); - assert.equal(sources[0], 'http://example.com/original.js', - 'Source should be relative the host of the source root.'); - }; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js deleted file mode 100644 index 2c42c8c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-map-generator.js +++ /dev/null @@ -1,391 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - var util = require('./util'); - - exports['test some simple stuff'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.ok(true); - }; - - exports['test JSON serialization'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'foo.js', - sourceRoot: '.' - }); - assert.equal(map.toString(), JSON.stringify(map)); - }; - - exports['test adding mappings (case 1)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 2)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test adding mappings (case 3)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - assert.doesNotThrow(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - source: 'bar.js', - original: { line: 1, column: 1 }, - name: 'someToken' - }); - }); - }; - - exports['test adding mappings (invalid)'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'generated-foo.js', - sourceRoot: '.' - }); - - // Not enough info. - assert.throws(function () { - map.addMapping({}); - }); - - // Original file position, but no source. - assert.throws(function () { - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 } - }); - }); - }; - - exports['test that the correct mappings are being generated'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 5 }, - original: { line: 1, column: 5 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 9 }, - original: { line: 1, column: 11 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 18 }, - original: { line: 1, column: 21 }, - source: 'one.js', - name: 'bar' - }); - map.addMapping({ - generated: { line: 1, column: 21 }, - original: { line: 2, column: 3 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 1, column: 28 }, - original: { line: 2, column: 10 }, - source: 'one.js', - name: 'baz' - }); - map.addMapping({ - generated: { line: 1, column: 32 }, - original: { line: 2, column: 14 }, - source: 'one.js', - name: 'bar' - }); - - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 5 }, - original: { line: 1, column: 5 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 9 }, - original: { line: 1, column: 11 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 18 }, - original: { line: 1, column: 21 }, - source: 'two.js', - name: 'n' - }); - map.addMapping({ - generated: { line: 2, column: 21 }, - original: { line: 2, column: 3 }, - source: 'two.js' - }); - map.addMapping({ - generated: { line: 2, column: 28 }, - original: { line: 2, column: 10 }, - source: 'two.js', - name: 'n' - }); - - map = JSON.parse(map.toString()); - - util.assertEqualMaps(assert, map, util.testMap); - }; - - exports['test that source content can be set'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'min.js', - sourceRoot: '/the/root' - }); - map.addMapping({ - generated: { line: 1, column: 1 }, - original: { line: 1, column: 1 }, - source: 'one.js' - }); - map.addMapping({ - generated: { line: 2, column: 1 }, - original: { line: 1, column: 1 }, - source: 'two.js' - }); - map.setSourceContent('one.js', 'one file content'); - - map = JSON.parse(map.toString()); - assert.equal(map.sources[0], 'one.js'); - assert.equal(map.sources[1], 'two.js'); - assert.equal(map.sourcesContent[0], 'one file content'); - assert.equal(map.sourcesContent[1], null); - }; - - exports['test .fromSourceMap'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(util.testMap)); - util.assertEqualMaps(assert, map.toJSON(), util.testMap); - }; - - exports['test .fromSourceMap with sourcesContent'] = function (assert, util) { - var map = SourceMapGenerator.fromSourceMap( - new SourceMapConsumer(util.testMapWithSourcesContent)); - util.assertEqualMaps(assert, map.toJSON(), util.testMapWithSourcesContent); - }; - - exports['test applySourceMap'] = function (assert, util) { - var node = new SourceNode(null, null, null, [ - new SourceNode(2, 0, 'fileX', 'lineX2\n'), - 'genA1\n', - new SourceNode(2, 0, 'fileY', 'lineY2\n'), - 'genA2\n', - new SourceNode(1, 0, 'fileX', 'lineX1\n'), - 'genA3\n', - new SourceNode(1, 0, 'fileY', 'lineY1\n') - ]); - var mapStep1 = node.toStringWithSourceMap({ - file: 'fileA' - }).map; - mapStep1.setSourceContent('fileX', 'lineX1\nlineX2\n'); - mapStep1 = mapStep1.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(1, 0, 'fileA', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(3, 0, 'fileA', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var mapStep2 = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - mapStep2.setSourceContent('fileB', 'lineB1\nlineB2\n'); - mapStep2 = mapStep2.toJSON(); - - node = new SourceNode(null, null, null, [ - 'gen1\n', - new SourceNode(2, 0, 'fileX', 'lineA1\n'), - new SourceNode(2, 0, 'fileA', 'lineA2\n'), - new SourceNode(2, 0, 'fileY', 'lineA3\n'), - new SourceNode(4, 0, 'fileA', 'lineA4\n'), - new SourceNode(1, 0, 'fileB', 'lineB1\n'), - new SourceNode(2, 0, 'fileB', 'lineB2\n'), - 'gen2\n' - ]); - var expectedMap = node.toStringWithSourceMap({ - file: 'fileGen' - }).map; - expectedMap.setSourceContent('fileX', 'lineX1\nlineX2\n'); - expectedMap.setSourceContent('fileB', 'lineB1\nlineB2\n'); - expectedMap = expectedMap.toJSON(); - - // apply source map "mapStep1" to "mapStep2" - var generator = SourceMapGenerator.fromSourceMap(new SourceMapConsumer(mapStep2)); - generator.applySourceMap(new SourceMapConsumer(mapStep1)); - var actualMap = generator.toJSON(); - - util.assertEqualMaps(assert, actualMap, expectedMap); - }; - - exports['test sorting with duplicate generated mappings'] = function (assert, util) { - var map = new SourceMapGenerator({ - file: 'test.js' - }); - map.addMapping({ - generated: { line: 3, column: 0 }, - original: { line: 2, column: 0 }, - source: 'a.js' - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 2, column: 0 } - }); - map.addMapping({ - generated: { line: 1, column: 0 }, - original: { line: 1, column: 0 }, - source: 'a.js' - }); - - util.assertEqualMaps(assert, map.toJSON(), { - version: 3, - file: 'test.js', - sources: ['a.js'], - names: [], - mappings: 'AAAA;A;AACA' - }); - }; - - exports['test ignore duplicate mappings.'] = function (assert, util) { - var init = { file: 'min.js', sourceRoot: '/the/root' }; - var map1, map2; - - // null original source location - var nullMapping1 = { - generated: { line: 1, column: 0 } - }; - var nullMapping2 = { - generated: { line: 2, column: 2 } - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(nullMapping1); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(nullMapping2); - map1.addMapping(nullMapping1); - - map2.addMapping(nullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // original source location - var srcMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'srcMapping1.js' - }; - var srcMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'srcMapping2.js' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(srcMapping1); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(srcMapping2); - map1.addMapping(srcMapping1); - - map2.addMapping(srcMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - // full original source and name information - var fullMapping1 = { - generated: { line: 1, column: 0 }, - original: { line: 11, column: 0 }, - source: 'fullMapping1.js', - name: 'fullMapping1' - }; - var fullMapping2 = { - generated: { line: 2, column: 2 }, - original: { line: 11, column: 0 }, - source: 'fullMapping2.js', - name: 'fullMapping2' - }; - - map1 = new SourceMapGenerator(init); - map2 = new SourceMapGenerator(init); - - map1.addMapping(fullMapping1); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping1); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - - map1.addMapping(fullMapping2); - map1.addMapping(fullMapping1); - - map2.addMapping(fullMapping2); - - util.assertEqualMaps(assert, map1.toJSON(), map2.toJSON()); - }; -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js deleted file mode 100644 index 231dd7b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/test-source-node.js +++ /dev/null @@ -1,282 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var SourceMapGenerator = require('../../lib/source-map/source-map-generator').SourceMapGenerator; - var SourceMapConsumer = require('../../lib/source-map/source-map-consumer').SourceMapConsumer; - var SourceNode = require('../../lib/source-map/source-node').SourceNode; - - exports['test .add()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Adding a string works. - node.add('function noop() {}'); - - // Adding another source node works. - node.add(new SourceNode(null, null, null)); - - // Adding an array works. - node.add(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - - // Adding other stuff doesn't. - assert.throws(function () { - node.add({}); - }); - assert.throws(function () { - node.add(function () {}); - }); - }; - - exports['test .prepend()'] = function (assert, util) { - var node = new SourceNode(null, null, null); - - // Prepending a string works. - node.prepend('function noop() {}'); - assert.equal(node.children[0], 'function noop() {}'); - assert.equal(node.children.length, 1); - - // Prepending another source node works. - node.prepend(new SourceNode(null, null, null)); - assert.equal(node.children[0], ''); - assert.equal(node.children[1], 'function noop() {}'); - assert.equal(node.children.length, 2); - - // Prepending an array works. - node.prepend(['function foo() {', - new SourceNode(null, null, null, - 'return 10;'), - '}']); - assert.equal(node.children[0], 'function foo() {'); - assert.equal(node.children[1], 'return 10;'); - assert.equal(node.children[2], '}'); - assert.equal(node.children[3], ''); - assert.equal(node.children[4], 'function noop() {}'); - assert.equal(node.children.length, 5); - - // Prepending other stuff doesn't. - assert.throws(function () { - node.prepend({}); - }); - assert.throws(function () { - node.prepend(function () {}); - }); - }; - - exports['test .toString()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['function foo() {', - new SourceNode(null, null, null, 'return 10;'), - '}'])).toString(), - 'function foo() {return 10;}'); - }; - - exports['test .join()'] = function (assert, util) { - assert.equal((new SourceNode(null, null, null, - ['a', 'b', 'c', 'd'])).join(', ').toString(), - 'a, b, c, d'); - }; - - exports['test .walk()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', new SourceNode(1, 0, 'a.js', ['someCall()']), ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var expected = [ - { str: '(function () {\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'someCall()', source: 'a.js', line: 1, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: ' ', source: null, line: null, column: null }, - { str: 'if (foo) bar()', source: 'b.js', line: 2, column: 0 }, - { str: ';\n', source: null, line: null, column: null }, - { str: '}());', source: null, line: null, column: null }, - ]; - var i = 0; - node.walk(function (chunk, loc) { - assert.equal(expected[i].str, chunk); - assert.equal(expected[i].source, loc.source); - assert.equal(expected[i].line, loc.line); - assert.equal(expected[i].column, loc.column); - i++; - }); - }; - - exports['test .replaceRight'] = function (assert, util) { - var node; - - // Not nested - node = new SourceNode(null, null, null, 'hello world'); - node.replaceRight(/world/, 'universe'); - assert.equal(node.toString(), 'hello universe'); - - // Nested - node = new SourceNode(null, null, null, - [new SourceNode(null, null, null, 'hey sexy mama, '), - new SourceNode(null, null, null, 'want to kill all humans?')]); - node.replaceRight(/kill all humans/, 'watch Futurama'); - assert.equal(node.toString(), 'hey sexy mama, want to watch Futurama?'); - }; - - exports['test .toStringWithSourceMap()'] = function (assert, util) { - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', - new SourceNode(1, 0, 'a.js', 'someCall', 'originalCall'), - new SourceNode(1, 8, 'a.js', '()'), - ';\n', - ' ', new SourceNode(2, 0, 'b.js', ['if (foo) bar()']), ';\n', - '}());']); - var map = node.toStringWithSourceMap({ - file: 'foo.js' - }).map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = new SourceMapConsumer(map.toString()); - - var actual; - - actual = map.originalPositionFor({ - line: 1, - column: 4 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 2, - column: 2 - }); - assert.equal(actual.source, 'a.js'); - assert.equal(actual.line, 1); - assert.equal(actual.column, 0); - assert.equal(actual.name, 'originalCall'); - - actual = map.originalPositionFor({ - line: 3, - column: 2 - }); - assert.equal(actual.source, 'b.js'); - assert.equal(actual.line, 2); - assert.equal(actual.column, 0); - - actual = map.originalPositionFor({ - line: 3, - column: 16 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - - actual = map.originalPositionFor({ - line: 4, - column: 2 - }); - assert.equal(actual.source, null); - assert.equal(actual.line, null); - assert.equal(actual.column, null); - }; - - exports['test .fromStringWithSourceMap()'] = function (assert, util) { - var node = SourceNode.fromStringWithSourceMap( - util.testGeneratedCode, - new SourceMapConsumer(util.testMap)); - - var result = node.toStringWithSourceMap({ - file: 'min.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, util.testGeneratedCode); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - assert.equal(map.version, util.testMap.version); - assert.equal(map.file, util.testMap.file); - assert.equal(map.mappings, util.testMap.mappings); - }; - - exports['test .fromStringWithSourceMap() complex version'] = function (assert, util) { - var input = new SourceNode(null, null, null, [ - "(function() {\n", - " var Test = {};\n", - " ", new SourceNode(1, 0, "a.js", "Test.A = { value: 1234 };\n"), - " ", new SourceNode(2, 0, "a.js", "Test.A.x = 'xyz';"), "\n", - "}());\n", - "/* Generated Source */"]); - input = input.toStringWithSourceMap({ - file: 'foo.js' - }); - - var node = SourceNode.fromStringWithSourceMap( - input.code, - new SourceMapConsumer(input.map.toString())); - - var result = node.toStringWithSourceMap({ - file: 'foo.js' - }); - var map = result.map; - var code = result.code; - - assert.equal(code, input.code); - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = map.toJSON(); - var inputMap = input.map.toJSON(); - util.assertEqualMaps(assert, map, inputMap); - }; - - exports['test setSourceContent with toStringWithSourceMap'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var map = node.toStringWithSourceMap({ - file: 'foo.js' - }).map; - - assert.ok(map instanceof SourceMapGenerator, 'map instanceof SourceMapGenerator'); - map = new SourceMapConsumer(map.toString()); - - assert.equal(map.sources.length, 2); - assert.equal(map.sources[0], 'a.js'); - assert.equal(map.sources[1], 'b.js'); - assert.equal(map.sourcesContent.length, 2); - assert.equal(map.sourcesContent[0], 'someContent'); - assert.equal(map.sourcesContent[1], 'otherContent'); - }; - - exports['test walkSourceContents'] = function (assert, util) { - var aNode = new SourceNode(1, 1, 'a.js', 'a'); - aNode.setSourceContent('a.js', 'someContent'); - var node = new SourceNode(null, null, null, - ['(function () {\n', - ' ', aNode, - ' ', new SourceNode(1, 1, 'b.js', 'b'), - '}());']); - node.setSourceContent('b.js', 'otherContent'); - var results = []; - node.walkSourceContents(function (sourceFile, sourceContent) { - results.push([sourceFile, sourceContent]); - }); - assert.equal(results.length, 2); - assert.equal(results[0][0], 'a.js'); - assert.equal(results[0][1], 'someContent'); - assert.equal(results[1][0], 'b.js'); - assert.equal(results[1][1], 'otherContent'); - }; -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js deleted file mode 100644 index 3e19fc9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/node_modules/source-map/test/source-map/util.js +++ /dev/null @@ -1,152 +0,0 @@ -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ -if (typeof define !== 'function') { - var define = require('amdefine')(module); -} -define(function (require, exports, module) { - - var util = require('../../lib/source-map/util'); - - // This is a test mapping which maps functions from two different files - // (one.js and two.js) to a minified generated source. - // - // Here is one.js: - // - // ONE.foo = function (bar) { - // return baz(bar); - // }; - // - // Here is two.js: - // - // TWO.inc = function (n) { - // return n + 1; - // }; - // - // And here is the generated code (min.js): - // - // ONE.foo=function(a){return baz(a);}; - // TWO.inc=function(a){return a+1;}; - exports.testGeneratedCode = " ONE.foo=function(a){return baz(a);};\n"+ - " TWO.inc=function(a){return a+1;};"; - exports.testMap = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - exports.testMapWithSourcesContent = { - version: 3, - file: 'min.js', - names: ['bar', 'baz', 'n'], - sources: ['one.js', 'two.js'], - sourcesContent: [ - ' ONE.foo = function (bar) {\n' + - ' return baz(bar);\n' + - ' };', - ' TWO.inc = function (n) {\n' + - ' return n + 1;\n' + - ' };' - ], - sourceRoot: '/the/root', - mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA' - }; - - function assertMapping(generatedLine, generatedColumn, originalSource, - originalLine, originalColumn, name, map, assert, - dontTestGenerated, dontTestOriginal) { - if (!dontTestOriginal) { - var origMapping = map.originalPositionFor({ - line: generatedLine, - column: generatedColumn - }); - assert.equal(origMapping.name, name, - 'Incorrect name, expected ' + JSON.stringify(name) - + ', got ' + JSON.stringify(origMapping.name)); - assert.equal(origMapping.line, originalLine, - 'Incorrect line, expected ' + JSON.stringify(originalLine) - + ', got ' + JSON.stringify(origMapping.line)); - assert.equal(origMapping.column, originalColumn, - 'Incorrect column, expected ' + JSON.stringify(originalColumn) - + ', got ' + JSON.stringify(origMapping.column)); - - var expectedSource; - - if (originalSource && map.sourceRoot && originalSource.indexOf(map.sourceRoot) === 0) { - expectedSource = originalSource; - } else if (originalSource) { - expectedSource = map.sourceRoot - ? util.join(map.sourceRoot, originalSource) - : originalSource; - } else { - expectedSource = null; - } - - assert.equal(origMapping.source, expectedSource, - 'Incorrect source, expected ' + JSON.stringify(expectedSource) - + ', got ' + JSON.stringify(origMapping.source)); - } - - if (!dontTestGenerated) { - var genMapping = map.generatedPositionFor({ - source: originalSource, - line: originalLine, - column: originalColumn - }); - assert.equal(genMapping.line, generatedLine, - 'Incorrect line, expected ' + JSON.stringify(generatedLine) - + ', got ' + JSON.stringify(genMapping.line)); - assert.equal(genMapping.column, generatedColumn, - 'Incorrect column, expected ' + JSON.stringify(generatedColumn) - + ', got ' + JSON.stringify(genMapping.column)); - } - } - exports.assertMapping = assertMapping; - - function assertEqualMaps(assert, actualMap, expectedMap) { - assert.equal(actualMap.version, expectedMap.version, "version mismatch"); - assert.equal(actualMap.file, expectedMap.file, "file mismatch"); - assert.equal(actualMap.names.length, - expectedMap.names.length, - "names length mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - for (var i = 0; i < actualMap.names.length; i++) { - assert.equal(actualMap.names[i], - expectedMap.names[i], - "names[" + i + "] mismatch: " + - actualMap.names.join(", ") + " != " + expectedMap.names.join(", ")); - } - assert.equal(actualMap.sources.length, - expectedMap.sources.length, - "sources length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - for (var i = 0; i < actualMap.sources.length; i++) { - assert.equal(actualMap.sources[i], - expectedMap.sources[i], - "sources[" + i + "] length mismatch: " + - actualMap.sources.join(", ") + " != " + expectedMap.sources.join(", ")); - } - assert.equal(actualMap.sourceRoot, - expectedMap.sourceRoot, - "sourceRoot mismatch: " + - actualMap.sourceRoot + " != " + expectedMap.sourceRoot); - assert.equal(actualMap.mappings, expectedMap.mappings, "mappings mismatch"); - if (actualMap.sourcesContent) { - assert.equal(actualMap.sourcesContent.length, - expectedMap.sourcesContent.length, - "sourcesContent length mismatch"); - for (var i = 0; i < actualMap.sourcesContent.length; i++) { - assert.equal(actualMap.sourcesContent[i], - expectedMap.sourcesContent[i], - "sourcesContent[" + i + "] mismatch"); - } - } - } - exports.assertEqualMaps = assertEqualMaps; - -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json deleted file mode 100644 index 6587b99..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "uglify-js", - "description": "JavaScript parser, mangler/compressor and beautifier toolkit", - "homepage": "http://lisperator.net/uglifyjs", - "main": "tools/node.js", - "version": "2.2.5", - "engines": { - "node": ">=0.4.0" - }, - "maintainers": [ - { - "name": "Mihai Bazon", - "email": "mihai.bazon@gmail.com", - "url": "http://lisperator.net/" - } - ], - "repositories": [ - { - "type": "git", - "url": "https://github.com/mishoo/UglifyJS2.git" - } - ], - "dependencies": { - "source-map": "~0.1.7", - "optimist": "~0.3.5" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "scripts": { - "test": "node test/run-tests.js" - }, - "readme": "UglifyJS 2\n==========\n\nUglifyJS is a JavaScript parser, minifier, compressor or beautifier toolkit.\n\nThis page documents the command line utility. For\n[API and internals documentation see my website](http://lisperator.net/uglifyjs/).\nThere's also an\n[in-browser online demo](http://lisperator.net/uglifyjs/#demo) (for Firefox,\nChrome and probably Safari).\n\nInstall\n-------\n\nFirst make sure you have installed the latest version of [node.js](http://nodejs.org/)\n(You may need to restart your computer after this step).\n\nFrom NPM for use as a command line app:\n\n npm install uglify-js -g\n\nFrom NPM for programmatic use:\n\n npm install uglify-js\n\nFrom Git:\n\n git clone git://github.com/mishoo/UglifyJS2.git\n cd UglifyJS2\n npm link .\n\nUsage\n-----\n\n uglifyjs [input files] [options]\n\nUglifyJS2 can take multiple input files. It's recommended that you pass the\ninput files first, then pass the options. UglifyJS will parse input files\nin sequence and apply any compression options. The files are parsed in the\nsame global scope, that is, a reference from a file to some\nvariable/function declared in another file will be matched properly.\n\nIf you want to read from STDIN instead, pass a single dash instead of input\nfiles.\n\nThe available options are:\n\n --source-map Specify an output file where to generate source map.\n [string]\n --source-map-root The path to the original source to be included in the\n source map. [string]\n --source-map-url The path to the source map to be added in //@\n sourceMappingURL. Defaults to the value passed with\n --source-map. [string]\n --in-source-map Input source map, useful if you're compressing JS that was\n generated from some other original code.\n -p, --prefix Skip prefix for original filenames that appear in source\n maps. For example -p 3 will drop 3 directories from file\n names and ensure they are relative paths.\n -o, --output Output file (default STDOUT).\n -b, --beautify Beautify output/specify output options. [string]\n -m, --mangle Mangle names/pass mangler options. [string]\n -r, --reserved Reserved names to exclude from mangling.\n -c, --compress Enable compressor/pass compressor options. Pass options\n like -c hoist_vars=false,if_return=false. Use -c with no\n argument to use the default compression options. [string]\n -d, --define Global definitions [string]\n --comments Preserve copyright comments in the output. By default this\n works like Google Closure, keeping JSDoc-style comments\n that contain \"@license\" or \"@preserve\". You can optionally\n pass one of the following arguments to this flag:\n - \"all\" to keep all comments\n - a valid JS regexp (needs to start with a slash) to keep\n only comments that match.\n Note that currently not *all* comments can be kept when\n compression is on, because of dead code removal or\n cascading statements into sequences. [string]\n --stats Display operations run time on STDERR. [boolean]\n --acorn Use Acorn for parsing. [boolean]\n --spidermonkey Assume input fles are SpiderMonkey AST format (as JSON).\n [boolean]\n --self Build itself (UglifyJS2) as a library (implies\n --wrap=UglifyJS --export-all) [boolean]\n --wrap Embed everything in a big function, making the “exports”\n and “global” variables available. You need to pass an\n argument to this option to specify the name that your\n module will take when included in, say, a browser.\n [string]\n --export-all Only used when --wrap, this tells UglifyJS to add code to\n automatically export all globals. [boolean]\n --lint Display some scope warnings [boolean]\n -v, --verbose Verbose [boolean]\n -V, --version Print version number and exit. [boolean]\n\nSpecify `--output` (`-o`) to declare the output file. Otherwise the output\ngoes to STDOUT.\n\n## Source map options\n\nUglifyJS2 can generate a source map file, which is highly useful for\ndebugging your compressed JavaScript. To get a source map, pass\n`--source-map output.js.map` (full path to the file where you want the\nsource map dumped).\n\nAdditionally you might need `--source-map-root` to pass the URL where the\noriginal files can be found. In case you are passing full paths to input\nfiles to UglifyJS, you can use `--prefix` (`-p`) to specify the number of\ndirectories to drop from the path prefix when declaring files in the source\nmap.\n\nFor example:\n\n uglifyjs /home/doe/work/foo/src/js/file1.js \\\n /home/doe/work/foo/src/js/file2.js \\\n -o foo.min.js \\\n --source-map foo.min.js.map \\\n --source-map-root http://foo.com/src \\\n -p 5 -c -m\n\nThe above will compress and mangle `file1.js` and `file2.js`, will drop the\noutput in `foo.min.js` and the source map in `foo.min.js.map`. The source\nmapping will refer to `http://foo.com/src/js/file1.js` and\n`http://foo.com/src/js/file2.js` (in fact it will list `http://foo.com/src`\nas the source map root, and the original files as `js/file1.js` and\n`js/file2.js`).\n\n### Composed source map\n\nWhen you're compressing JS code that was output by a compiler such as\nCoffeeScript, mapping to the JS code won't be too helpful. Instead, you'd\nlike to map back to the original code (i.e. CoffeeScript). UglifyJS has an\noption to take an input source map. Assuming you have a mapping from\nCoffeeScript → compiled JS, UglifyJS can generate a map from CoffeeScript →\ncompressed JS by mapping every token in the compiled JS to its original\nlocation.\n\nTo use this feature you need to pass `--in-source-map\n/path/to/input/source.map`. Normally the input source map should also point\nto the file containing the generated JS, so if that's correct you can omit\ninput files from the command line.\n\n## Mangler options\n\nTo enable the mangler you need to pass `--mangle` (`-m`). Optionally you\ncan pass `-m sort=true` (we'll possibly have other flags in the future) in order\nto assign shorter names to most frequently used variables. This saves a few\nhundred bytes on jQuery before gzip, but the output is _bigger_ after gzip\n(and seems to happen for other libraries I tried it on) therefore it's not\nenabled by default.\n\nWhen mangling is enabled but you want to prevent certain names from being\nmangled, you can declare those names with `--reserved` (`-r`) — pass a\ncomma-separated list of names. For example:\n\n uglifyjs ... -m -r '$,require,exports'\n\nto prevent the `require`, `exports` and `$` names from being changed.\n\n## Compressor options\n\nYou need to pass `--compress` (`-c`) to enable the compressor. Optionally\nyou can pass a comma-separated list of options. Options are in the form\n`foo=bar`, or just `foo` (the latter implies a boolean option that you want\nto set `true`; it's effectively a shortcut for `foo=true`).\n\nThe defaults should be tuned for maximum compression on most code. Here are\nthe available options (all are `true` by default, except `hoist_vars`):\n\n- `sequences` -- join consecutive simple statements using the comma operator\n- `properties` -- rewrite property access using the dot notation, for\n example `foo[\"bar\"] → foo.bar`\n- `dead_code` -- remove unreachable code\n- `drop_debugger` -- remove `debugger;` statements\n- `unsafe` -- apply \"unsafe\" transformations (discussion below)\n- `conditionals` -- apply optimizations for `if`-s and conditional\n expressions\n- `comparisons` -- apply certain optimizations to binary nodes, for example:\n `!(a <= b) → a > b` (only when `unsafe`), attempts to negate binary nodes,\n e.g. `a = !b && !c && !d && !e → a=!(b||c||d||e)` etc.\n- `evaluate` -- attempt to evaluate constant expressions\n- `booleans` -- various optimizations for boolean context, for example `!!a\n ? b : c → a ? b : c`\n- `loops` -- optimizations for `do`, `while` and `for` loops when we can\n statically determine the condition\n- `unused` -- drop unreferenced functions and variables\n- `hoist_funs` -- hoist function declarations\n- `hoist_vars` -- hoist `var` declarations (this is `false` by default\n because it seems to increase the size of the output in general)\n- `if_return` -- optimizations for if/return and if/continue\n- `join_vars` -- join consecutive `var` statements\n- `cascade` -- small optimization for sequences, transform `x, x` into `x`\n and `x = something(), x` into `x = something()`\n- `warnings` -- display warnings when dropping unreachable code or unused\n declarations etc.\n\n### Conditional compilation\n\nYou can use the `--define` (`-d`) switch in order to declare global\nvariables that UglifyJS will assume to be constants (unless defined in\nscope). For example if you pass `--define DEBUG=false` then, coupled with\ndead code removal UglifyJS will discard the following from the output:\n\n if (DEBUG) {\n console.log(\"debug stuff\");\n }\n\nUglifyJS will warn about the condition being always false and about dropping\nunreachable code; for now there is no option to turn off only this specific\nwarning, you can pass `warnings=false` to turn off *all* warnings.\n\nAnother way of doing that is to declare your globals as constants in a\nseparate file and include it into the build. For example you can have a\n`build/defines.js` file with the following:\n\n const DEBUG = false;\n const PRODUCTION = true;\n // etc.\n\nand build your code like this:\n\n uglifyjs build/defines.js js/foo.js js/bar.js... -c\n\nUglifyJS will notice the constants and, since they cannot be altered, it\nwill evaluate references to them to the value itself and drop unreachable\ncode as usual. The possible downside of this approach is that the build\nwill contain the `const` declarations.\n\n\n## Beautifier options\n\nThe code generator tries to output shortest code possible by default. In\ncase you want beautified output, pass `--beautify` (`-b`). Optionally you\ncan pass additional arguments that control the code output:\n\n- `beautify` (default `true`) -- whether to actually beautify the output.\n Passing `-b` will set this to true, but you might need to pass `-b` even\n when you want to generate minified code, in order to specify additional\n arguments, so you can use `-b beautify=false` to override it.\n- `indent-level` (default 4)\n- `indent-start` (default 0) -- prefix all lines by that many spaces\n- `quote-keys` (default `false`) -- pass `true` to quote all keys in literal\n objects\n- `space-colon` (default `true`) -- insert a space after the colon signs\n- `ascii-only` (default `false`) -- escape Unicode characters in strings and\n regexps\n- `inline-script` (default `false`) -- escape the slash in occurrences of\n ` 5) break; // this break refers to the for, not to the switch; thus it - // shouldn't ruin our optimization - console.log(x); - } - y(); - case 1+1: - bar(); - break; - default: - def(); - } - } - } - expect: { - OUT: { - foo(); - x(); - if (foo) break OUT; - for (var x = 0; x < 10; x++) { - if (x > 5) break; - console.log(x); - } - y(); - bar(); - } - } -} - -constant_switch_8: { - options = { dead_code: true, evaluate: true }; - input: { - OUT: switch (1) { - case 1: - x(); - for (;;) break OUT; - y(); - break; - case 1+1: - bar(); - default: - def(); - } - } - expect: { - OUT: { - x(); - for (;;) break OUT; - y(); - } - } -} - -constant_switch_9: { - options = { dead_code: true, evaluate: true }; - input: { - OUT: switch (1) { - case 1: - x(); - for (;;) if (foo) break OUT; - y(); - case 1+1: - bar(); - default: - def(); - } - } - expect: { - OUT: { - x(); - for (;;) if (foo) break OUT; - y(); - bar(); - def(); - } - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js deleted file mode 100644 index 0568c6a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/test/run-tests.js +++ /dev/null @@ -1,170 +0,0 @@ -#! /usr/bin/env node - -var U = require("../tools/node"); -var path = require("path"); -var fs = require("fs"); -var assert = require("assert"); -var sys = require("util"); - -var tests_dir = path.dirname(module.filename); - -run_compress_tests(); - -/* -----[ utils ]----- */ - -function tmpl() { - return U.string_template.apply(this, arguments); -} - -function log() { - var txt = tmpl.apply(this, arguments); - sys.puts(txt); -} - -function log_directory(dir) { - log("*** Entering [{dir}]", { dir: dir }); -} - -function log_start_file(file) { - log("--- {file}", { file: file }); -} - -function log_test(name) { - log(" Running test [{name}]", { name: name }); -} - -function find_test_files(dir) { - var files = fs.readdirSync(dir).filter(function(name){ - return /\.js$/i.test(name); - }); - if (process.argv.length > 2) { - var x = process.argv.slice(2); - files = files.filter(function(f){ - return x.indexOf(f) >= 0; - }); - } - return files; -} - -function test_directory(dir) { - return path.resolve(tests_dir, dir); -} - -function as_toplevel(input) { - if (input instanceof U.AST_BlockStatement) input = input.body; - else if (input instanceof U.AST_Statement) input = [ input ]; - else throw new Error("Unsupported input syntax"); - var toplevel = new U.AST_Toplevel({ body: input }); - toplevel.figure_out_scope(); - return toplevel; -} - -function run_compress_tests() { - var dir = test_directory("compress"); - log_directory("compress"); - var files = find_test_files(dir); - function test_file(file) { - log_start_file(file); - function test_case(test) { - log_test(test.name); - var options = U.defaults(test.options, { - warnings: false - }); - var cmp = new U.Compressor(options, true); - var expect = make_code(as_toplevel(test.expect), false); - var input = as_toplevel(test.input); - var input_code = make_code(test.input); - var output = input.transform(cmp); - output.figure_out_scope(); - output = make_code(output, false); - if (expect != output) { - log("!!! failed\n---INPUT---\n{input}\n---OUTPUT---\n{output}\n---EXPECTED---\n{expected}\n\n", { - input: input_code, - output: output, - expected: expect - }); - } - } - var tests = parse_test(path.resolve(dir, file)); - for (var i in tests) if (tests.hasOwnProperty(i)) { - test_case(tests[i]); - } - } - files.forEach(function(file){ - test_file(file); - }); -} - -function parse_test(file) { - var script = fs.readFileSync(file, "utf8"); - var ast = U.parse(script, { - filename: file - }); - var tests = {}; - var tw = new U.TreeWalker(function(node, descend){ - if (node instanceof U.AST_LabeledStatement - && tw.parent() instanceof U.AST_Toplevel) { - var name = node.label.name; - tests[name] = get_one_test(name, node.body); - return true; - } - if (!(node instanceof U.AST_Toplevel)) croak(node); - }); - ast.walk(tw); - return tests; - - function croak(node) { - throw new Error(tmpl("Can't understand test file {file} [{line},{col}]\n{code}", { - file: file, - line: node.start.line, - col: node.start.col, - code: make_code(node, false) - })); - } - - function get_one_test(name, block) { - var test = { name: name, options: {} }; - var tw = new U.TreeWalker(function(node, descend){ - if (node instanceof U.AST_Assign) { - if (!(node.left instanceof U.AST_SymbolRef)) { - croak(node); - } - var name = node.left.name; - test[name] = evaluate(node.right); - return true; - } - if (node instanceof U.AST_LabeledStatement) { - assert.ok( - node.label.name == "input" || node.label.name == "expect", - tmpl("Unsupported label {name} [{line},{col}]", { - name: node.label.name, - line: node.label.start.line, - col: node.label.start.col - }) - ); - var stat = node.body; - if (stat instanceof U.AST_BlockStatement) { - if (stat.body.length == 1) stat = stat.body[0]; - else if (stat.body.length == 0) stat = new U.AST_EmptyStatement(); - } - test[node.label.name] = stat; - return true; - } - }); - block.walk(tw); - return test; - }; -} - -function make_code(ast, beautify) { - if (arguments.length == 1) beautify = true; - var stream = U.OutputStream({ beautify: beautify }); - ast.print(stream); - return stream.get(); -} - -function evaluate(code) { - if (code instanceof U.AST_Node) - code = make_code(code); - return new Function("return(" + code + ")")(); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js deleted file mode 100644 index cf87628..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/node_modules/uglify-js/tools/node.js +++ /dev/null @@ -1,164 +0,0 @@ -var path = require("path"); -var fs = require("fs"); -var vm = require("vm"); -var sys = require("util"); - -var UglifyJS = vm.createContext({ - sys : sys, - console : console, - MOZ_SourceMap : require("source-map") -}); - -function load_global(file) { - file = path.resolve(path.dirname(module.filename), file); - try { - var code = fs.readFileSync(file, "utf8"); - return vm.runInContext(code, UglifyJS, file); - } catch(ex) { - // XXX: in case of a syntax error, the message is kinda - // useless. (no location information). - sys.debug("ERROR in file: " + file + " / " + ex); - process.exit(1); - } -}; - -var FILES = exports.FILES = [ - "../lib/utils.js", - "../lib/ast.js", - "../lib/parse.js", - "../lib/transform.js", - "../lib/scope.js", - "../lib/output.js", - "../lib/compress.js", - "../lib/sourcemap.js", - "../lib/mozilla-ast.js" -].map(function(file){ - return path.join(path.dirname(fs.realpathSync(__filename)), file); -}); - -FILES.forEach(load_global); - -UglifyJS.AST_Node.warn_function = function(txt) { - sys.error("WARN: " + txt); -}; - -// XXX: perhaps we shouldn't export everything but heck, I'm lazy. -for (var i in UglifyJS) { - if (UglifyJS.hasOwnProperty(i)) { - exports[i] = UglifyJS[i]; - } -} - -exports.minify = function(files, options) { - options = UglifyJS.defaults(options, { - outSourceMap : null, - sourceRoot : null, - inSourceMap : null, - fromString : false, - warnings : false, - mangle : {}, - output : null, - compress : {} - }); - if (typeof files == "string") - files = [ files ]; - - // 1. parse - var toplevel = null; - files.forEach(function(file){ - var code = options.fromString - ? file - : fs.readFileSync(file, "utf8"); - toplevel = UglifyJS.parse(code, { - filename: options.fromString ? "?" : file, - toplevel: toplevel - }); - }); - - // 2. compress - if (options.compress) { - var compress = { warnings: options.warnings }; - UglifyJS.merge(compress, options.compress); - toplevel.figure_out_scope(); - var sq = UglifyJS.Compressor(compress); - toplevel = toplevel.transform(sq); - } - - // 3. mangle - if (options.mangle) { - toplevel.figure_out_scope(); - toplevel.compute_char_frequency(); - toplevel.mangle_names(options.mangle); - } - - // 4. output - var map = null; - var inMap = null; - if (options.inSourceMap) { - inMap = fs.readFileSync(options.inSourceMap, "utf8"); - } - if (options.outSourceMap) map = UglifyJS.SourceMap({ - file: options.outSourceMap, - orig: inMap, - root: options.sourceRoot - }); - var output = { source_map: map }; - if (options.output) { - UglifyJS.merge(output, options.output); - } - var stream = UglifyJS.OutputStream(output); - toplevel.print(stream); - return { - code : stream + "", - map : map + "" - }; -}; - -// exports.describe_ast = function() { -// function doitem(ctor) { -// var sub = {}; -// ctor.SUBCLASSES.forEach(function(ctor){ -// sub[ctor.TYPE] = doitem(ctor); -// }); -// var ret = {}; -// if (ctor.SELF_PROPS.length > 0) ret.props = ctor.SELF_PROPS; -// if (ctor.SUBCLASSES.length > 0) ret.sub = sub; -// return ret; -// } -// return doitem(UglifyJS.AST_Node).sub; -// } - -exports.describe_ast = function() { - var out = UglifyJS.OutputStream({ beautify: true }); - function doitem(ctor) { - out.print("AST_" + ctor.TYPE); - var props = ctor.SELF_PROPS.filter(function(prop){ - return !/^\$/.test(prop); - }); - if (props.length > 0) { - out.space(); - out.with_parens(function(){ - props.forEach(function(prop, i){ - if (i) out.space(); - out.print(prop); - }); - }); - } - if (ctor.documentation) { - out.space(); - out.print_string(ctor.documentation); - } - if (ctor.SUBCLASSES.length > 0) { - out.space(); - out.with_block(function(){ - ctor.SUBCLASSES.forEach(function(ctor, i){ - out.indent(); - doitem(ctor); - out.newline(); - }); - }); - } - }; - doitem(UglifyJS.AST_Node); - return out + ""; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json deleted file mode 100644 index 5ccf9a1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/package.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "transformers", - "version": "2.0.1", - "description": "String/Data transformations for use in templating libraries, static site generators and web frameworks", - "main": "lib/transformers.js", - "scripts": { - "pretest": "node test/update-package && npm install", - "test": "mocha test/test.js -R spec" - }, - "repository": { - "type": "git", - "url": "https://github.com/ForbesLindesay/transformers.git" - }, - "author": { - "name": "ForbesLindesay" - }, - "license": "MIT", - "readmeFilename": "README.md", - "gitHead": "4b46e72cba3ad3403fd5ed3802d5472dcfa77311", - "devDependencies": { - "mocha": "~1.8", - "expect.js": "~0.2", - "swig": "*", - "atpl": "*", - "liquor": "*", - "ejs": "*", - "eco": "*", - "jqtpl": "*", - "hamljs": "*", - "haml-coffee": "*", - "whiskers": "*", - "hogan.js": "*", - "handlebars": "*", - "underscore": "*", - "walrus": "*", - "mustache": "*", - "mote": "*", - "toffee": "*", - "just": "*", - "ect": "*", - "jade": "*", - "then-jade": "*", - "dust": "*", - "dustjs-linkedin": "*", - "jazz": "*", - "qejs": "*", - "less": "*", - "stylus": "*", - "sass": "*", - "marked": "*", - "supermarked": "*", - "markdown-js": "*", - "markdown": "*", - "coffee-script": "*", - "cson": "*", - "coffeekup": "*", - "coffeecup": "*", - "templayed": "*", - "plates": "*", - "dot": "*", - "component-builder": "*", - "html2jade": "*", - "highlight.js": "*" - }, - "dependencies": { - "promise": "~2.0", - "css": "~1.0.8", - "uglify-js": "~2.2.5" - }, - "readme": "[![Build Status](https://travis-ci.org/ForbesLindesay/transformers.png?branch=master)](https://travis-ci.org/ForbesLindesay/transformers)\r\n# transformers\r\n\r\n String/Data transformations for use in templating libraries, static site generators and web frameworks. This gathers the most useful transformations you can apply to text or data into one library with a consistent API. Transformations can be pretty much anything but most are either compilers or templating engines.\r\n\r\n## Supported transforms\r\n\r\n To use each of these transforms you will also need to install the associated npm module for that transformer.\r\n\r\n### Template engines\r\n\r\n - [atpl](http://documentup.com/soywiz/atpl.js) - Compatible with twig templates\r\n - [coffeecup](http://documentup.com/gradus/coffeecup) - pure coffee-script templates (fork of coffeekup)\r\n - [dot](http://documentup.com/olado/doT) [(website)](https://github.com/Katahdin/dot-packer) - focused on speed\r\n - [dust](http://documentup.com/akdubya/dustjs) [(website)](http://akdubya.github.com/dustjs/) - asyncronous templates\r\n - [eco](http://documentup.com/sstephenson/eco) - Embedded CoffeeScript templates\r\n - [ect](http://documentup.com/baryshev/ect) [(website)](http://ectjs.com/) - Embedded CoffeeScript templates\r\n - [ejs](http://documentup.com/visionmedia/ejs) - Embedded JavaScript templates\r\n - [haml](http://documentup.com/visionmedia/haml.js) [(website)](http://haml-lang.com/) - dry indented markup\r\n - [haml-coffee](http://documentup.com/netzpirat/haml-coffee/) [(website)](http://haml-lang.com/) - haml with embedded CoffeeScript\r\n - [handlebars](http://documentup.com/wycats/handlebars.js/) [(website)](http://handlebarsjs.com/) - extension of mustache templates\r\n - [hogan](http://documentup.com/twitter/hogan.js) [(website)](http://twitter.github.com/hogan.js/) - Mustache templates\r\n - [jade](http://documentup.com/visionmedia/jade) [(website)](http://jade-lang.com/) - robust, elegant, feature rich template engine\r\n - [jazz](http://documentup.com/shinetech/jazz)\r\n - [jqtpl](http://documentup.com/kof/jqtpl) [(website)](http://api.jquery.com/category/plugins/templates/) - extensible logic-less templates\r\n - [JUST](http://documentup.com/baryshev/just) - EJS style template with some special syntax for layouts/partials etc.\r\n - [liquor](http://documentup.com/chjj/liquor) - extended EJS with significant white space\r\n - [mustache](http://documentup.com/janl/mustache.js) - logic less templates\r\n - [QEJS](http://documentup.com/jepso/QEJS) - Promises + EJS for async templating\r\n - [swig](http://documentup.com/paularmstrong/swig) [(website)](http://paularmstrong.github.com/swig/) - Django-like templating engine\r\n - [templayed](http://documentup.com/archan937/templayed.js/) [(website)](http://archan937.github.com/templayed.js/) - Mustache focused on performance\r\n - [toffee](http://documentup.com/malgorithms/toffee) - templating language based on coffeescript\r\n - [underscore](http://documentup.com/documentcloud/underscore) [(website)](http://documentcloud.github.com/underscore/)\r\n - [walrus](http://documentup.com/jeremyruppel/walrus) - A bolder kind of mustache\r\n - [whiskers](http://documentup.com/gsf/whiskers.js/tree/) - logic-less focused on readability\r\n\r\n### Stylesheet Languages\r\n\r\n - [less](http://documentup.com/cloudhead/less.js) [(website)](http://lesscss.org/) - LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions.\r\n - [stylus](http://documentup.com/learnboost/stylus) [(website)](http://learnboost.github.com/stylus/) - revolutionary CSS generator making braces optional\r\n - [sass](http://documentup.com/visionmedia/sass.js) [(website)](http://sass-lang.com/) - Sassy CSS\r\n\r\n### Minifiers\r\n\r\n - [uglify-js](http://documentup.com/mishoo/UglifyJS2) - No need to install anything, just minifies/beautifies JavaScript\r\n - [uglify-css](https://github.com/visionmedia/css) - No need to install anything, just minifies/beautifies CSS\r\n - ugilify-json - No need to install anything, just minifies/beautifies JSON\r\n\r\n### Other\r\n\r\n - cdata - No need to install anything, just wrapps text in ``\r\n - [coffee-script](http://coffeescript.org/) - `npm install coffee-script`\r\n - [cson](https://github.com/bevry/cson) - coffee-script based JSON format\r\n - markdown - You can use `marked`, `supermarked`, `markdown-js` or `markdown`\r\n - [component-js](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}`\r\n - [component-css](http://documentup.com/component/component) [(website)](http://component.io) - `npm install component-builder` options: `{development: false}`\r\n - [html2jade](http://documentup.com/donpark/html2jade) [(website)](http://html2jade.aaron-powell.com/) - `npm install html2jade` - Converts HTML back into jade\r\n\r\nPull requests to add more transforms will always be accepted providing they are open-source, come with unit tests, and don't cause any of the tests to fail.\r\n\r\n## API\r\n\r\n The exported object `transformers` is a collection of named transformers. To access an individual transformer just do:\r\n\r\n ```javascript\r\n var transformer = require('transformers')['transformer-name']\r\n ```\r\n\r\n### Transformer\r\n\r\n The following options are given special meaning by `transformers`:\r\n\r\n - `filename` is set by transformers automatically if using the `renderFile` APIs. It is used if `cache` is enabled.\r\n - `cache` if true, the template function will be cached where possible (templates are still updated if you provide new options, so this can be used in most live applications).\r\n - `sudoSync` used internally to put some asyncronous transformers into \"sudo syncronous\" mode. Don't touch this.\r\n - `minify` if set to true on a transformer that isn't a minifier, it will cause the output to be minified. e.g. `coffeeScript.renderSync(str, {minify: true})` will result in minified JavaScript.\r\n\r\n#### Transformer.engines\r\n\r\n Returns an array of engines that can be used to power this transformer. The first of these that's installed will be used for the transformation.\r\n\r\n To enable a transformation just take `[engine] = Transformer.engines[0]` and then do `npm install [engine]`. If `[engine]` is `.` there is no need to install an engine from npm to use the transformer.\r\n\r\n#### Transformer.render(str, options, cb)\r\n\r\n Tranform the string `str` using the `Transformer` with the provided options and call the callback `cb(err, res)`.\r\n\r\n If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise.\r\n\r\n#### Transformer.renderSync(str, options)\r\n\r\n Synchronous version of `Transformer.render`\r\n\r\n#### Transformer.renderFile(filename, options, cb)\r\n\r\n Reads the file at filename into `str` and sets `options.filename = filename` then calls `Transform.render(str, options, cb)`.\r\n\r\n If no `cb` is provided, this method returns a [promises/A+](http://promises-aplus.github.com/promises-spec/) promise.\r\n\r\n#### Tranformer.renderFileSync(filename, options)\r\n\r\n Synchronous version of `Tranformer.renderFile`\r\n\r\n#### Transformer.outputFormat\r\n\r\n A string, one of:\r\n\r\n - `'xml'`\r\n - `'css'`\r\n - `'js'`\r\n - `'json'`\r\n - `'text'`\r\n\r\nAdding to this list will **not** result in a major version change, so you should handle unexpected types gracefully (I'd suggest default to assuming `'text'`).\r\n\r\n#### Transformer.sync\r\n\r\n `true` if the transformer can be used syncronously, `false` otherwise.\r\n\r\n## Libraries that don't work synchronously\r\n\r\n The following transformations will always throw an exception if you attempt to run them synchronously:\r\n\r\n 1. dust\r\n 2. qejs\r\n 3. html2jade\r\n\r\nThe following transformations sometimes throw an exception if run syncronously, typically they only throw an exception if you are doing something like including another file. If you are not doing the things that cause them to fail then they are consistently safe to use syncronously.\r\n\r\n - jade (only when using `then-jade` instead of `jade`)\r\n - less (when `@import` is used with a url instead of a filename)\r\n - jazz (When one of the functions passed as locals is asyncronous)\r\n\r\nThe following libraries look like they might sometimes throw exceptions when used syncronously (if you read the source) but they never actually do so:\r\n\r\n - just\r\n - ect\r\n - stylus", - "bugs": { - "url": "https://github.com/ForbesLindesay/transformers/issues" - }, - "_id": "transformers@2.0.1", - "_from": "transformers@2.0.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css deleted file mode 100644 index 7519e93..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.css +++ /dev/null @@ -1,6 +0,0 @@ -#foo { - name: 'bar'; -} -#baz { - name: 'bing'; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js deleted file mode 100644 index 51b9b2e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/build/build.js +++ /dev/null @@ -1,1235 +0,0 @@ - - -/** - * hasOwnProperty. - */ - -var has = Object.prototype.hasOwnProperty; - -/** - * Require the given path. - * - * @param {String} path - * @return {Object} exports - * @api public - */ - -function require(path, parent, orig) { - var resolved = require.resolve(path); - - // lookup failed - if (null == resolved) { - orig = orig || path; - parent = parent || 'root'; - var err = new Error('Failed to require "' + orig + '" from "' + parent + '"'); - err.path = orig; - err.parent = parent; - err.require = true; - throw err; - } - - var module = require.modules[resolved]; - - // perform real require() - // by invoking the module's - // registered function - if (!module.exports) { - module.exports = {}; - module.client = module.component = true; - module.call(this, module.exports, require.relative(resolved), module); - } - - return module.exports; -} - -/** - * Registered modules. - */ - -require.modules = {}; - -/** - * Registered aliases. - */ - -require.aliases = {}; - -/** - * Resolve `path`. - * - * Lookup: - * - * - PATH/index.js - * - PATH.js - * - PATH - * - * @param {String} path - * @return {String} path or null - * @api private - */ - -require.resolve = function(path) { - if (path.charAt(0) === '/') path = path.slice(1); - var index = path + '/index.js'; - - var paths = [ - path, - path + '.js', - path + '.json', - path + '/index.js', - path + '/index.json' - ]; - - for (var i = 0; i < paths.length; i++) { - var path = paths[i]; - if (has.call(require.modules, path)) return path; - } - - if (has.call(require.aliases, index)) { - return require.aliases[index]; - } -}; - -/** - * Normalize `path` relative to the current path. - * - * @param {String} curr - * @param {String} path - * @return {String} - * @api private - */ - -require.normalize = function(curr, path) { - var segs = []; - - if ('.' != path.charAt(0)) return path; - - curr = curr.split('/'); - path = path.split('/'); - - for (var i = 0; i < path.length; ++i) { - if ('..' == path[i]) { - curr.pop(); - } else if ('.' != path[i] && '' != path[i]) { - segs.push(path[i]); - } - } - - return curr.concat(segs).join('/'); -}; - -/** - * Register module at `path` with callback `definition`. - * - * @param {String} path - * @param {Function} definition - * @api private - */ - -require.register = function(path, definition) { - require.modules[path] = definition; -}; - -/** - * Alias a module definition. - * - * @param {String} from - * @param {String} to - * @api private - */ - -require.alias = function(from, to) { - if (!has.call(require.modules, from)) { - throw new Error('Failed to alias "' + from + '", it does not exist'); - } - require.aliases[to] = from; -}; - -/** - * Return a require function relative to the `parent` path. - * - * @param {String} parent - * @return {Function} - * @api private - */ - -require.relative = function(parent) { - var p = require.normalize(parent, '..'); - - /** - * lastIndexOf helper. - */ - - function lastIndexOf(arr, obj) { - var i = arr.length; - while (i--) { - if (arr[i] === obj) return i; - } - return -1; - } - - /** - * The relative require() itself. - */ - - function localRequire(path) { - var resolved = localRequire.resolve(path); - return require(resolved, parent, path); - } - - /** - * Resolve relative to the parent. - */ - - localRequire.resolve = function(path) { - var c = path.charAt(0); - if ('/' == c) return path.slice(1); - if ('.' == c) return require.normalize(p, path); - - // resolve deps by returning - // the dep in the nearest "deps" - // directory - var segs = parent.split('/'); - var i = lastIndexOf(segs, 'deps') + 1; - if (!i) i = 0; - path = segs.slice(0, i + 1).join('/') + '/deps/' + path; - return path; - }; - - /** - * Check if module is defined at `path`. - */ - - localRequire.exists = function(path) { - return has.call(require.modules, localRequire.resolve(path)); - }; - - return localRequire; -}; -require.register("component-type/index.js", function(exports, require, module){ - -/** - * toString ref. - */ - -var toString = Object.prototype.toString; - -/** - * Return the type of `val`. - * - * @param {Mixed} val - * @return {String} - * @api public - */ - -module.exports = function(val){ - switch (toString.call(val)) { - case '[object Function]': return 'function'; - case '[object Date]': return 'date'; - case '[object RegExp]': return 'regexp'; - case '[object Arguments]': return 'arguments'; - case '[object Array]': return 'array'; - case '[object String]': return 'string'; - } - - if (val === null) return 'null'; - if (val === undefined) return 'undefined'; - if (val === Object(val)) return 'object'; - - return typeof val; -}; - -}); -require.register("component-event/index.js", function(exports, require, module){ - -/** - * Bind `el` event `type` to `fn`. - * - * @param {Element} el - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @return {Function} - * @api public - */ - -exports.bind = function(el, type, fn, capture){ - if (el.addEventListener) { - el.addEventListener(type, fn, capture); - } else { - el.attachEvent('on' + type, fn); - } - return fn; -}; - -/** - * Unbind `el` event `type`'s callback `fn`. - * - * @param {Element} el - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @return {Function} - * @api public - */ - -exports.unbind = function(el, type, fn, capture){ - if (el.removeEventListener) { - el.removeEventListener(type, fn, capture); - } else { - el.detachEvent('on' + type, fn); - } - return fn; -}; - -}); -require.register("component-matches-selector/index.js", function(exports, require, module){ - -/** - * Element prototype. - */ - -var proto = Element.prototype; - -/** - * Vendor function. - */ - -var vendor = proto.matchesSelector - || proto.webkitMatchesSelector - || proto.mozMatchesSelector - || proto.msMatchesSelector - || proto.oMatchesSelector; - -/** - * Expose `match()`. - */ - -module.exports = match; - -/** - * Match `el` to `selector`. - * - * @param {Element} el - * @param {String} selector - * @return {Boolean} - * @api public - */ - -function match(el, selector) { - if (vendor) return vendor.call(el, selector); - var nodes = el.parentNode.querySelectorAll(selector); - for (var i = 0; i < nodes.length; ++i) { - if (nodes[i] == el) return true; - } - return false; -} -}); -require.register("component-delegate/index.js", function(exports, require, module){ - -/** - * Module dependencies. - */ - -var matches = require('matches-selector') - , event = require('event'); - -/** - * Delegate event `type` to `selector` - * and invoke `fn(e)`. A callback function - * is returned which may be passed to `.unbind()`. - * - * @param {Element} el - * @param {String} selector - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @return {Function} - * @api public - */ - -exports.bind = function(el, selector, type, fn, capture){ - return event.bind(el, type, function(e){ - if (matches(e.target, selector)) fn(e); - }, capture); - return callback; -}; - -/** - * Unbind event `type`'s callback `fn`. - * - * @param {Element} el - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @api public - */ - -exports.unbind = function(el, type, fn, capture){ - event.unbind(el, type, fn, capture); -}; - -}); -require.register("component-indexof/index.js", function(exports, require, module){ - -var indexOf = [].indexOf; - -module.exports = function(arr, obj){ - if (indexOf) return arr.indexOf(obj); - for (var i = 0; i < arr.length; ++i) { - if (arr[i] === obj) return i; - } - return -1; -}; -}); -require.register("component-domify/index.js", function(exports, require, module){ - -/** - * Expose `parse`. - */ - -module.exports = parse; - -/** - * Wrap map from jquery. - */ - -var map = { - option: [1, ''], - optgroup: [1, ''], - legend: [1, '
      ', '
      '], - thead: [1, '', '
      '], - tbody: [1, '', '
      '], - tfoot: [1, '', '
      '], - colgroup: [1, '', '
      '], - caption: [1, '', '
      '], - tr: [2, '', '
      '], - td: [3, '', '
      '], - th: [3, '', '
      '], - col: [2, '', '
      '], - _default: [0, '', ''] -}; - -/** - * Parse `html` and return the children. - * - * @param {String} html - * @return {Array} - * @api private - */ - -function parse(html) { - if ('string' != typeof html) throw new TypeError('String expected'); - - // tag name - var m = /<([\w:]+)/.exec(html); - if (!m) throw new Error('No elements were generated.'); - var tag = m[1]; - - // body support - if (tag == 'body') { - var el = document.createElement('html'); - el.innerHTML = html; - return [el.removeChild(el.lastChild)]; - } - - // wrap map - var wrap = map[tag] || map._default; - var depth = wrap[0]; - var prefix = wrap[1]; - var suffix = wrap[2]; - var el = document.createElement('div'); - el.innerHTML = prefix + html + suffix; - while (depth--) el = el.lastChild; - - return orphan(el.children); -} - -/** - * Orphan `els` and return an array. - * - * @param {NodeList} els - * @return {Array} - * @api private - */ - -function orphan(els) { - var ret = []; - - while (els.length) { - ret.push(els[0].parentNode.removeChild(els[0])); - } - - return ret; -} - -}); -require.register("component-classes/index.js", function(exports, require, module){ - -/** - * Module dependencies. - */ - -var index = require('indexof'); - -/** - * Whitespace regexp. - */ - -var re = /\s+/; - -/** - * toString reference. - */ - -var toString = Object.prototype.toString; - -/** - * Wrap `el` in a `ClassList`. - * - * @param {Element} el - * @return {ClassList} - * @api public - */ - -module.exports = function(el){ - return new ClassList(el); -}; - -/** - * Initialize a new ClassList for `el`. - * - * @param {Element} el - * @api private - */ - -function ClassList(el) { - this.el = el; - this.list = el.classList; -} - -/** - * Add class `name` if not already present. - * - * @param {String} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.add = function(name){ - // classList - if (this.list) { - this.list.add(name); - return this; - } - - // fallback - var arr = this.array(); - var i = index(arr, name); - if (!~i) arr.push(name); - this.el.className = arr.join(' '); - return this; -}; - -/** - * Remove class `name` when present, or - * pass a regular expression to remove - * any which match. - * - * @param {String|RegExp} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.remove = function(name){ - if ('[object RegExp]' == toString.call(name)) { - return this.removeMatching(name); - } - - // classList - if (this.list) { - this.list.remove(name); - return this; - } - - // fallback - var arr = this.array(); - var i = index(arr, name); - if (~i) arr.splice(i, 1); - this.el.className = arr.join(' '); - return this; -}; - -/** - * Remove all classes matching `re`. - * - * @param {RegExp} re - * @return {ClassList} - * @api private - */ - -ClassList.prototype.removeMatching = function(re){ - var arr = this.array(); - for (var i = 0; i < arr.length; i++) { - if (re.test(arr[i])) { - this.remove(arr[i]); - } - } - return this; -}; - -/** - * Toggle class `name`. - * - * @param {String} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.toggle = function(name){ - // classList - if (this.list) { - this.list.toggle(name); - return this; - } - - // fallback - if (this.has(name)) { - this.remove(name); - } else { - this.add(name); - } - return this; -}; - -/** - * Return an array of classes. - * - * @return {Array} - * @api public - */ - -ClassList.prototype.array = function(){ - var arr = this.el.className.split(re); - if ('' === arr[0]) arr.pop(); - return arr; -}; - -/** - * Check if class `name` is present. - * - * @param {String} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.has = -ClassList.prototype.contains = function(name){ - return this.list - ? this.list.contains(name) - : !! ~index(this.array(), name); -}; - -}); -require.register("component-dom/index.js", function(exports, require, module){ -/** - * Module dependencies. - */ - -var domify = require('domify') - , classes = require('classes') - , indexof = require('indexof') - , delegate = require('delegate') - , events = require('event') - , type = require('type') - -/** - * Attributes supported. - */ - -var attrs = [ - 'id', - 'src', - 'rel', - 'cols', - 'rows', - 'name', - 'href', - 'title', - 'style', - 'width', - 'height', - 'tabindex', - 'placeholder' -]; - -/** - * Expose `dom()`. - */ - -exports = module.exports = dom; - -/** - * Expose supported attrs. - */ - -exports.attrs = attrs; - -/** - * Return a dom `List` for the given - * `html`, selector, or element. - * - * @param {String|Element|List} - * @return {List} - * @api public - */ - -function dom(selector, context) { - var ctx = context - ? (context.els ? context.els[0] : context) - : document.firstChild; - - // array - if (Array.isArray(selector)) { - return new List(selector); - } - - // List - if (selector instanceof List) { - return selector; - } - - // node - if (selector.nodeName) { - return new List([selector]); - } - - // html - if ('<' == selector.charAt(0)) { - return new List([domify(selector)[0]], selector); - } - - // selector - if ('string' == typeof selector) { - return new List(ctx.querySelectorAll(selector), selector); - } -} - -/** - * Expose `List` constructor. - */ - -exports.List = List; - -/** - * Initialize a new `List` with the - * given array-ish of `els` and `selector` - * string. - * - * @param {Mixed} els - * @param {String} selector - * @api private - */ - -function List(els, selector) { - this.els = els || []; - this.selector = selector; -} - -/** - * Set attribute `name` to `val`, or get attr `name`. - * - * @param {String} name - * @param {String} [val] - * @return {String|List} self - * @api public - */ - -List.prototype.attr = function(name, val){ - if (2 == arguments.length) { - this.els[0].setAttribute(name, val); - return this; - } else { - return this.els[0].getAttribute(name); - } -}; - -/** - * Return a cloned `List` with all elements cloned. - * - * @return {List} - * @api public - */ - -List.prototype.clone = function(){ - var arr = []; - for (var i = 0, len = this.els.length; i < len; ++i) { - arr.push(this.els[i].cloneNode(true)); - } - return new List(arr); -}; - -/** - * Prepend `val`. - * - * @param {String|Element|List} val - * @return {List} self - * @api public - */ - -List.prototype.prepend = function(val){ - var el = this.els[0]; - if (!el) return this; - val = dom(val); - for (var i = 0; i < val.els.length; ++i) { - if (el.children.length) { - el.insertBefore(val.els[i], el.firstChild); - } else { - el.appendChild(val.els[i]); - } - } - return this; -}; - -/** - * Append `val`. - * - * @param {String|Element|List} val - * @return {List} self - * @api public - */ - -List.prototype.append = function(val){ - var el = this.els[0]; - if (!el) return this; - val = dom(val); - for (var i = 0; i < val.els.length; ++i) { - el.appendChild(val.els[i]); - } - return this; -}; - -/** - * Append self's `el` to `val` - * - * @param {String|Element|List} val - * @return {List} self - * @api public - */ - -List.prototype.appendTo = function(val){ - dom(val).append(this); -}; - -/** - * Return a `List` containing the element at `i`. - * - * @param {Number} i - * @return {List} - * @api public - */ - -List.prototype.at = function(i){ - return new List([this.els[i]], this.selector); -}; - -/** - * Return a `List` containing the first element. - * - * @param {Number} i - * @return {List} - * @api public - */ - -List.prototype.first = function(){ - return new List([this.els[0]], this.selector); -}; - -/** - * Return a `List` containing the last element. - * - * @param {Number} i - * @return {List} - * @api public - */ - -List.prototype.last = function(){ - return new List([this.els[this.els.length - 1]], this.selector); -}; - -/** - * Return an `Element` at `i`. - * - * @param {Number} i - * @return {Element} - * @api public - */ - -List.prototype.get = function(i){ - return this.els[i]; -}; - -/** - * Return list length. - * - * @return {Number} - * @api public - */ - -List.prototype.length = function(){ - return this.els.length; -}; - -/** - * Return element text. - * - * @return {String} - * @api public - */ - -List.prototype.text = function(){ - // TODO: real impl - var str = ''; - for (var i = 0; i < this.els.length; ++i) { - str += this.els[i].textContent; - } - return str; -}; - -/** - * Return element html. - * - * @return {String} - * @api public - */ - -List.prototype.html = function(){ - // TODO: real impl - return this.els[0] && this.els[0].innerHTML; -}; - -/** - * Bind to `event` and invoke `fn(e)`. When - * a `selector` is given then events are delegated. - * - * @param {String} event - * @param {String} [selector] - * @param {Function} fn - * @param {Boolean} capture - * @return {List} - * @api public - */ - -List.prototype.on = function(event, selector, fn, capture){ - if ('string' == typeof selector) { - for (var i = 0; i < this.els.length; ++i) { - fn._delegate = delegate.bind(this.els[i], selector, event, fn, capture); - } - return this; - } - - capture = fn; - fn = selector; - - for (var i = 0; i < this.els.length; ++i) { - events.bind(this.els[i], event, fn, capture); - } - - return this; -}; - -/** - * Unbind to `event` and invoke `fn(e)`. When - * a `selector` is given then delegated event - * handlers are unbound. - * - * @param {String} event - * @param {String} [selector] - * @param {Function} fn - * @param {Boolean} capture - * @return {List} - * @api public - */ - -List.prototype.off = function(event, selector, fn, capture){ - if ('string' == typeof selector) { - for (var i = 0; i < this.els.length; ++i) { - // TODO: add selector support back - delegate.unbind(this.els[i], event, fn._delegate, capture); - } - return this; - } - - capture = fn; - fn = selector; - - for (var i = 0; i < this.els.length; ++i) { - events.unbind(this.els[i], event, fn, capture); - } - return this; -}; - -/** - * Iterate elements and invoke `fn(list, i)`. - * - * @param {Function} fn - * @return {List} self - * @api public - */ - -List.prototype.each = function(fn){ - for (var i = 0; i < this.els.length; ++i) { - fn(new List([this.els[i]], this.selector), i); - } - return this; -}; - -/** - * Iterate elements and invoke `fn(el, i)`. - * - * @param {Function} fn - * @return {List} self - * @api public - */ - -List.prototype.forEach = function(fn){ - for (var i = 0; i < this.els.length; ++i) { - fn(this.els[i], i); - } - return this; -}; - -/** - * Map elements invoking `fn(list, i)`. - * - * @param {Function} fn - * @return {Array} - * @api public - */ - -List.prototype.map = function(fn){ - var arr = []; - for (var i = 0; i < this.els.length; ++i) { - arr.push(fn(new List([this.els[i]], this.selector), i)); - } - return arr; -}; - -/** - * Filter elements invoking `fn(list, i)`, returning - * a new `List` of elements when a truthy value is returned. - * - * @param {Function} fn - * @return {List} - * @api public - */ - -List.prototype.select = -List.prototype.filter = function(fn){ - var el; - var list = new List([], this.selector); - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - if (fn(new List([el], this.selector), i)) list.els.push(el); - } - return list; -}; - -/** - * Add the given class `name`. - * - * @param {String} name - * @return {List} self - * @api public - */ - -List.prototype.addClass = function(name){ - var el; - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - el._classes.add(name); - } - return this; -}; - -/** - * Remove the given class `name`. - * - * @param {String|RegExp} name - * @return {List} self - * @api public - */ - -List.prototype.removeClass = function(name){ - var el; - - if ('regexp' == type(name)) { - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - var arr = el._classes.array(); - for (var j = 0; j < arr.length; j++) { - if (name.test(arr[j])) { - el._classes.remove(arr[j]); - } - } - } - return this; - } - - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - el._classes.remove(name); - } - - return this; -}; - -/** - * Toggle the given class `name`, - * optionally a `bool` may be given - * to indicate that the class should - * be added when truthy. - * - * @param {String} name - * @param {Boolean} bool - * @return {List} self - * @api public - */ - -List.prototype.toggleClass = function(name, bool){ - var el; - var fn = 'toggle'; - - // toggle with boolean - if (2 == arguments.length) { - fn = bool ? 'add' : 'remove'; - } - - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - el._classes[fn](name); - } - - return this; -}; - -/** - * Check if the given class `name` is present. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -List.prototype.hasClass = function(name){ - var el; - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - if (el._classes.has(name)) return true; - } - return false; -}; - -/** - * Set CSS `prop` to `val` or get `prop` value. - * - * @param {String} prop - * @param {Mixed} val - * @return {List|String} - * @api public - */ - -List.prototype.css = function(prop, val){ - if (2 == arguments.length) return this.setStyle(prop, val); - return this.getStyle(prop); -}; - -/** - * Set CSS `prop` to `val`. - * - * @param {String} prop - * @param {Mixed} val - * @return {List} self - * @api private - */ - -List.prototype.setStyle = function(prop, val){ - for (var i = 0; i < this.els.length; ++i) { - this.els[i].style[prop] = val; - } - return this; -}; - -/** - * Get CSS `prop` value. - * - * @param {String} prop - * @return {String} - * @api private - */ - -List.prototype.getStyle = function(prop){ - var el = this.els[0]; - if (el) return el.style[prop]; -}; - -/** - * Find children matching the given `selector`. - * - * @param {String} selector - * @return {List} - * @api public - */ - -List.prototype.find = function(selector){ - // TODO: real implementation - var list = new List([], this.selector); - var el, els; - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - els = el.querySelectorAll(selector); - for (var j = 0; j < els.length; ++j) { - list.els.push(els[j]); - } - } - return list; -}; - -/** - * Attribute accessors. - */ - -attrs.forEach(function(name){ - List.prototype[name] = function(val){ - if (0 == arguments.length) return this.attr(name); - return this.attr(name, val); - }; -}); - - -}); -require.register("foo/index.js", function(exports, require, module){ -module.exports = 'foo'; -}); -require.alias("component-dom/index.js", "foo/deps/dom/index.js"); -require.alias("component-type/index.js", "component-dom/deps/type/index.js"); - -require.alias("component-event/index.js", "component-dom/deps/event/index.js"); - -require.alias("component-delegate/index.js", "component-dom/deps/delegate/index.js"); -require.alias("component-matches-selector/index.js", "component-delegate/deps/matches-selector/index.js"); - -require.alias("component-event/index.js", "component-delegate/deps/event/index.js"); - -require.alias("component-indexof/index.js", "component-dom/deps/indexof/index.js"); - -require.alias("component-domify/index.js", "component-dom/deps/domify/index.js"); - -require.alias("component-classes/index.js", "component-dom/deps/classes/index.js"); -require.alias("component-indexof/index.js", "component-classes/deps/indexof/index.js"); - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json deleted file mode 100644 index d24701d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/component.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "foo", - "scripts": ["index.js"], - "styles": ["index.css", "second.css"], - "dependencies": { - "component/dom": "*" - } -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json deleted file mode 100644 index 0c67e32..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "classes", - "version": "1.1.0", - "description": "Cross-browser element class list", - "keywords": [ - "dom", - "html", - "classList", - "class", - "ui" - ], - "scripts": [ - "index.js" - ], - "dependencies": { - "component/indexof": "*" - }, - "repo": "https://raw.github.com/component/classes" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js deleted file mode 100644 index e3a30d5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-classes/index.js +++ /dev/null @@ -1,164 +0,0 @@ - -/** - * Module dependencies. - */ - -var index = require('indexof'); - -/** - * Whitespace regexp. - */ - -var re = /\s+/; - -/** - * toString reference. - */ - -var toString = Object.prototype.toString; - -/** - * Wrap `el` in a `ClassList`. - * - * @param {Element} el - * @return {ClassList} - * @api public - */ - -module.exports = function(el){ - return new ClassList(el); -}; - -/** - * Initialize a new ClassList for `el`. - * - * @param {Element} el - * @api private - */ - -function ClassList(el) { - this.el = el; - this.list = el.classList; -} - -/** - * Add class `name` if not already present. - * - * @param {String} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.add = function(name){ - // classList - if (this.list) { - this.list.add(name); - return this; - } - - // fallback - var arr = this.array(); - var i = index(arr, name); - if (!~i) arr.push(name); - this.el.className = arr.join(' '); - return this; -}; - -/** - * Remove class `name` when present, or - * pass a regular expression to remove - * any which match. - * - * @param {String|RegExp} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.remove = function(name){ - if ('[object RegExp]' == toString.call(name)) { - return this.removeMatching(name); - } - - // classList - if (this.list) { - this.list.remove(name); - return this; - } - - // fallback - var arr = this.array(); - var i = index(arr, name); - if (~i) arr.splice(i, 1); - this.el.className = arr.join(' '); - return this; -}; - -/** - * Remove all classes matching `re`. - * - * @param {RegExp} re - * @return {ClassList} - * @api private - */ - -ClassList.prototype.removeMatching = function(re){ - var arr = this.array(); - for (var i = 0; i < arr.length; i++) { - if (re.test(arr[i])) { - this.remove(arr[i]); - } - } - return this; -}; - -/** - * Toggle class `name`. - * - * @param {String} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.toggle = function(name){ - // classList - if (this.list) { - this.list.toggle(name); - return this; - } - - // fallback - if (this.has(name)) { - this.remove(name); - } else { - this.add(name); - } - return this; -}; - -/** - * Return an array of classes. - * - * @return {Array} - * @api public - */ - -ClassList.prototype.array = function(){ - var arr = this.el.className.split(re); - if ('' === arr[0]) arr.pop(); - return arr; -}; - -/** - * Check if class `name` is present. - * - * @param {String} name - * @return {ClassList} - * @api public - */ - -ClassList.prototype.has = -ClassList.prototype.contains = function(name){ - return this.list - ? this.list.contains(name) - : !! ~index(this.array(), name); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json deleted file mode 100644 index 8461aa4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "delegate", - "repo": "component/delegate", - "description": "Event delegation component", - "version": "0.1.0", - "keywords": [ - "event", - "events", - "delegate", - "delegation" - ], - "dependencies": { - "component/matches-selector": "*", - "component/event": "*" - }, - "scripts": [ - "index.js" - ] -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js deleted file mode 100644 index 03b9f9e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-delegate/index.js +++ /dev/null @@ -1,42 +0,0 @@ - -/** - * Module dependencies. - */ - -var matches = require('matches-selector') - , event = require('event'); - -/** - * Delegate event `type` to `selector` - * and invoke `fn(e)`. A callback function - * is returned which may be passed to `.unbind()`. - * - * @param {Element} el - * @param {String} selector - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @return {Function} - * @api public - */ - -exports.bind = function(el, selector, type, fn, capture){ - return event.bind(el, type, function(e){ - if (matches(e.target, selector)) fn(e); - }, capture); - return callback; -}; - -/** - * Unbind event `type`'s callback `fn`. - * - * @param {Element} el - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @api public - */ - -exports.unbind = function(el, type, fn, capture){ - event.unbind(el, type, fn, capture); -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json deleted file mode 100644 index 6aa448c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/component.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "dom", - "version": "0.1.0", - "description": "DOM traversal, manipulation and events aggregate library", - "keywords": [ - "html", - "dom", - "ui", - "jquery" - ], - "scripts": [ - "index.js" - ], - "dependencies": { - "component/type": "*", - "component/event": "*", - "component/delegate": "*", - "component/indexof": "*", - "component/domify": "*", - "component/classes": "*" - }, - "development": { - "component/assert": "*" - }, - "license": "MIT", - "repo": "https://raw.github.com/component/dom" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js deleted file mode 100644 index 0f9df95..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-dom/index.js +++ /dev/null @@ -1,579 +0,0 @@ -/** - * Module dependencies. - */ - -var domify = require('domify') - , classes = require('classes') - , indexof = require('indexof') - , delegate = require('delegate') - , events = require('event') - , type = require('type') - -/** - * Attributes supported. - */ - -var attrs = [ - 'id', - 'src', - 'rel', - 'cols', - 'rows', - 'name', - 'href', - 'title', - 'style', - 'width', - 'height', - 'tabindex', - 'placeholder' -]; - -/** - * Expose `dom()`. - */ - -exports = module.exports = dom; - -/** - * Expose supported attrs. - */ - -exports.attrs = attrs; - -/** - * Return a dom `List` for the given - * `html`, selector, or element. - * - * @param {String|Element|List} - * @return {List} - * @api public - */ - -function dom(selector, context) { - var ctx = context - ? (context.els ? context.els[0] : context) - : document.firstChild; - - // array - if (Array.isArray(selector)) { - return new List(selector); - } - - // List - if (selector instanceof List) { - return selector; - } - - // node - if (selector.nodeName) { - return new List([selector]); - } - - // html - if ('<' == selector.charAt(0)) { - return new List([domify(selector)[0]], selector); - } - - // selector - if ('string' == typeof selector) { - return new List(ctx.querySelectorAll(selector), selector); - } -} - -/** - * Expose `List` constructor. - */ - -exports.List = List; - -/** - * Initialize a new `List` with the - * given array-ish of `els` and `selector` - * string. - * - * @param {Mixed} els - * @param {String} selector - * @api private - */ - -function List(els, selector) { - this.els = els || []; - this.selector = selector; -} - -/** - * Set attribute `name` to `val`, or get attr `name`. - * - * @param {String} name - * @param {String} [val] - * @return {String|List} self - * @api public - */ - -List.prototype.attr = function(name, val){ - if (2 == arguments.length) { - this.els[0].setAttribute(name, val); - return this; - } else { - return this.els[0].getAttribute(name); - } -}; - -/** - * Return a cloned `List` with all elements cloned. - * - * @return {List} - * @api public - */ - -List.prototype.clone = function(){ - var arr = []; - for (var i = 0, len = this.els.length; i < len; ++i) { - arr.push(this.els[i].cloneNode(true)); - } - return new List(arr); -}; - -/** - * Prepend `val`. - * - * @param {String|Element|List} val - * @return {List} self - * @api public - */ - -List.prototype.prepend = function(val){ - var el = this.els[0]; - if (!el) return this; - val = dom(val); - for (var i = 0; i < val.els.length; ++i) { - if (el.children.length) { - el.insertBefore(val.els[i], el.firstChild); - } else { - el.appendChild(val.els[i]); - } - } - return this; -}; - -/** - * Append `val`. - * - * @param {String|Element|List} val - * @return {List} self - * @api public - */ - -List.prototype.append = function(val){ - var el = this.els[0]; - if (!el) return this; - val = dom(val); - for (var i = 0; i < val.els.length; ++i) { - el.appendChild(val.els[i]); - } - return this; -}; - -/** - * Append self's `el` to `val` - * - * @param {String|Element|List} val - * @return {List} self - * @api public - */ - -List.prototype.appendTo = function(val){ - dom(val).append(this); -}; - -/** - * Return a `List` containing the element at `i`. - * - * @param {Number} i - * @return {List} - * @api public - */ - -List.prototype.at = function(i){ - return new List([this.els[i]], this.selector); -}; - -/** - * Return a `List` containing the first element. - * - * @param {Number} i - * @return {List} - * @api public - */ - -List.prototype.first = function(){ - return new List([this.els[0]], this.selector); -}; - -/** - * Return a `List` containing the last element. - * - * @param {Number} i - * @return {List} - * @api public - */ - -List.prototype.last = function(){ - return new List([this.els[this.els.length - 1]], this.selector); -}; - -/** - * Return an `Element` at `i`. - * - * @param {Number} i - * @return {Element} - * @api public - */ - -List.prototype.get = function(i){ - return this.els[i]; -}; - -/** - * Return list length. - * - * @return {Number} - * @api public - */ - -List.prototype.length = function(){ - return this.els.length; -}; - -/** - * Return element text. - * - * @return {String} - * @api public - */ - -List.prototype.text = function(){ - // TODO: real impl - var str = ''; - for (var i = 0; i < this.els.length; ++i) { - str += this.els[i].textContent; - } - return str; -}; - -/** - * Return element html. - * - * @return {String} - * @api public - */ - -List.prototype.html = function(){ - // TODO: real impl - return this.els[0] && this.els[0].innerHTML; -}; - -/** - * Bind to `event` and invoke `fn(e)`. When - * a `selector` is given then events are delegated. - * - * @param {String} event - * @param {String} [selector] - * @param {Function} fn - * @param {Boolean} capture - * @return {List} - * @api public - */ - -List.prototype.on = function(event, selector, fn, capture){ - if ('string' == typeof selector) { - for (var i = 0; i < this.els.length; ++i) { - fn._delegate = delegate.bind(this.els[i], selector, event, fn, capture); - } - return this; - } - - capture = fn; - fn = selector; - - for (var i = 0; i < this.els.length; ++i) { - events.bind(this.els[i], event, fn, capture); - } - - return this; -}; - -/** - * Unbind to `event` and invoke `fn(e)`. When - * a `selector` is given then delegated event - * handlers are unbound. - * - * @param {String} event - * @param {String} [selector] - * @param {Function} fn - * @param {Boolean} capture - * @return {List} - * @api public - */ - -List.prototype.off = function(event, selector, fn, capture){ - if ('string' == typeof selector) { - for (var i = 0; i < this.els.length; ++i) { - // TODO: add selector support back - delegate.unbind(this.els[i], event, fn._delegate, capture); - } - return this; - } - - capture = fn; - fn = selector; - - for (var i = 0; i < this.els.length; ++i) { - events.unbind(this.els[i], event, fn, capture); - } - return this; -}; - -/** - * Iterate elements and invoke `fn(list, i)`. - * - * @param {Function} fn - * @return {List} self - * @api public - */ - -List.prototype.each = function(fn){ - for (var i = 0; i < this.els.length; ++i) { - fn(new List([this.els[i]], this.selector), i); - } - return this; -}; - -/** - * Iterate elements and invoke `fn(el, i)`. - * - * @param {Function} fn - * @return {List} self - * @api public - */ - -List.prototype.forEach = function(fn){ - for (var i = 0; i < this.els.length; ++i) { - fn(this.els[i], i); - } - return this; -}; - -/** - * Map elements invoking `fn(list, i)`. - * - * @param {Function} fn - * @return {Array} - * @api public - */ - -List.prototype.map = function(fn){ - var arr = []; - for (var i = 0; i < this.els.length; ++i) { - arr.push(fn(new List([this.els[i]], this.selector), i)); - } - return arr; -}; - -/** - * Filter elements invoking `fn(list, i)`, returning - * a new `List` of elements when a truthy value is returned. - * - * @param {Function} fn - * @return {List} - * @api public - */ - -List.prototype.select = -List.prototype.filter = function(fn){ - var el; - var list = new List([], this.selector); - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - if (fn(new List([el], this.selector), i)) list.els.push(el); - } - return list; -}; - -/** - * Add the given class `name`. - * - * @param {String} name - * @return {List} self - * @api public - */ - -List.prototype.addClass = function(name){ - var el; - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - el._classes.add(name); - } - return this; -}; - -/** - * Remove the given class `name`. - * - * @param {String|RegExp} name - * @return {List} self - * @api public - */ - -List.prototype.removeClass = function(name){ - var el; - - if ('regexp' == type(name)) { - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - var arr = el._classes.array(); - for (var j = 0; j < arr.length; j++) { - if (name.test(arr[j])) { - el._classes.remove(arr[j]); - } - } - } - return this; - } - - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - el._classes.remove(name); - } - - return this; -}; - -/** - * Toggle the given class `name`, - * optionally a `bool` may be given - * to indicate that the class should - * be added when truthy. - * - * @param {String} name - * @param {Boolean} bool - * @return {List} self - * @api public - */ - -List.prototype.toggleClass = function(name, bool){ - var el; - var fn = 'toggle'; - - // toggle with boolean - if (2 == arguments.length) { - fn = bool ? 'add' : 'remove'; - } - - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - el._classes[fn](name); - } - - return this; -}; - -/** - * Check if the given class `name` is present. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -List.prototype.hasClass = function(name){ - var el; - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - el._classes = el._classes || classes(el); - if (el._classes.has(name)) return true; - } - return false; -}; - -/** - * Set CSS `prop` to `val` or get `prop` value. - * - * @param {String} prop - * @param {Mixed} val - * @return {List|String} - * @api public - */ - -List.prototype.css = function(prop, val){ - if (2 == arguments.length) return this.setStyle(prop, val); - return this.getStyle(prop); -}; - -/** - * Set CSS `prop` to `val`. - * - * @param {String} prop - * @param {Mixed} val - * @return {List} self - * @api private - */ - -List.prototype.setStyle = function(prop, val){ - for (var i = 0; i < this.els.length; ++i) { - this.els[i].style[prop] = val; - } - return this; -}; - -/** - * Get CSS `prop` value. - * - * @param {String} prop - * @return {String} - * @api private - */ - -List.prototype.getStyle = function(prop){ - var el = this.els[0]; - if (el) return el.style[prop]; -}; - -/** - * Find children matching the given `selector`. - * - * @param {String} selector - * @return {List} - * @api public - */ - -List.prototype.find = function(selector){ - // TODO: real implementation - var list = new List([], this.selector); - var el, els; - for (var i = 0; i < this.els.length; ++i) { - el = this.els[i]; - els = el.querySelectorAll(selector); - for (var j = 0; j < els.length; ++j) { - list.els.push(els[j]); - } - } - return list; -}; - -/** - * Attribute accessors. - */ - -attrs.forEach(function(name){ - List.prototype[name] = function(val){ - if (0 == arguments.length) return this.attr(name); - return this.attr(name, val); - }; -}); - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json deleted file mode 100644 index 95fff1f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/component.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "domify", - "version": "0.1.0", - "description": "turn HTML into DOM elements", - "scripts": [ - "index.js" - ], - "development": { - "visionmedia/mocha-cloud": "*" - }, - "keywords": [ - "dom", - "html", - "client", - "browser", - "component" - ], - "license": "MIT", - "repo": "https://raw.github.com/component/domify" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js deleted file mode 100644 index 55eb1b5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-domify/index.js +++ /dev/null @@ -1,79 +0,0 @@ - -/** - * Expose `parse`. - */ - -module.exports = parse; - -/** - * Wrap map from jquery. - */ - -var map = { - option: [1, ''], - optgroup: [1, ''], - legend: [1, '
      ', '
      '], - thead: [1, '', '
      '], - tbody: [1, '', '
      '], - tfoot: [1, '', '
      '], - colgroup: [1, '', '
      '], - caption: [1, '', '
      '], - tr: [2, '', '
      '], - td: [3, '', '
      '], - th: [3, '', '
      '], - col: [2, '', '
      '], - _default: [0, '', ''] -}; - -/** - * Parse `html` and return the children. - * - * @param {String} html - * @return {Array} - * @api private - */ - -function parse(html) { - if ('string' != typeof html) throw new TypeError('String expected'); - - // tag name - var m = /<([\w:]+)/.exec(html); - if (!m) throw new Error('No elements were generated.'); - var tag = m[1]; - - // body support - if (tag == 'body') { - var el = document.createElement('html'); - el.innerHTML = html; - return [el.removeChild(el.lastChild)]; - } - - // wrap map - var wrap = map[tag] || map._default; - var depth = wrap[0]; - var prefix = wrap[1]; - var suffix = wrap[2]; - var el = document.createElement('div'); - el.innerHTML = prefix + html + suffix; - while (depth--) el = el.lastChild; - - return orphan(el.children); -} - -/** - * Orphan `els` and return an array. - * - * @param {NodeList} els - * @return {Array} - * @api private - */ - -function orphan(els) { - var ret = []; - - while (els.length) { - ret.push(els[0].parentNode.removeChild(els[0])); - } - - return ret; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json deleted file mode 100644 index c20f5bf..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/component.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "event", - "repo": "component/event", - "description": "Event binding component", - "version": "0.1.0", - "keywords": [ - "event", - "events" - ], - "scripts": [ - "index.js" - ] -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js deleted file mode 100644 index f111b17..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-event/index.js +++ /dev/null @@ -1,40 +0,0 @@ - -/** - * Bind `el` event `type` to `fn`. - * - * @param {Element} el - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @return {Function} - * @api public - */ - -exports.bind = function(el, type, fn, capture){ - if (el.addEventListener) { - el.addEventListener(type, fn, capture); - } else { - el.attachEvent('on' + type, fn); - } - return fn; -}; - -/** - * Unbind `el` event `type`'s callback `fn`. - * - * @param {Element} el - * @param {String} type - * @param {Function} fn - * @param {Boolean} capture - * @return {Function} - * @api public - */ - -exports.unbind = function(el, type, fn, capture){ - if (el.removeEventListener) { - el.removeEventListener(type, fn, capture); - } else { - el.detachEvent('on' + type, fn); - } - return fn; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json deleted file mode 100644 index 282e39c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/component.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "indexof", - "description": "Microsoft sucks", - "version": "0.0.1", - "keywords": [ - "index", - "array", - "indexOf" - ], - "dependencies": {}, - "scripts": [ - "index.js" - ], - "repo": "https://raw.github.com/component/indexof" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js deleted file mode 100644 index 9d9667b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-indexof/index.js +++ /dev/null @@ -1,10 +0,0 @@ - -var indexOf = [].indexOf; - -module.exports = function(arr, obj){ - if (indexOf) return arr.indexOf(obj); - for (var i = 0; i < arr.length; ++i) { - if (arr[i] === obj) return i; - } - return -1; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json deleted file mode 100644 index ea48be3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/component.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "matches-selector", - "repo": "component/matches-selector", - "description": "Check if an element matches a given selector", - "version": "0.0.1", - "keywords": [ - "match", - "element", - "selector" - ], - "development": { - "component/domify": "*" - }, - "scripts": [ - "index.js" - ] -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js deleted file mode 100644 index 8f67590..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-matches-selector/index.js +++ /dev/null @@ -1,40 +0,0 @@ - -/** - * Element prototype. - */ - -var proto = Element.prototype; - -/** - * Vendor function. - */ - -var vendor = proto.matchesSelector - || proto.webkitMatchesSelector - || proto.mozMatchesSelector - || proto.msMatchesSelector - || proto.oMatchesSelector; - -/** - * Expose `match()`. - */ - -module.exports = match; - -/** - * Match `el` to `selector`. - * - * @param {Element} el - * @param {String} selector - * @return {Boolean} - * @api public - */ - -function match(el, selector) { - if (vendor) return vendor.call(el, selector); - var nodes = el.parentNode.querySelectorAll(selector); - for (var i = 0; i < nodes.length; ++i) { - if (nodes[i] == el) return true; - } - return false; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json deleted file mode 100644 index 901f736..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/component.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "type", - "description": "Cross-browser type assertions (less broken typeof)", - "version": "0.0.1", - "keywords": [ - "typeof", - "type", - "utility" - ], - "dependencies": {}, - "scripts": [ - "index.js" - ], - "repo": "https://raw.github.com/component/type" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js deleted file mode 100644 index 32f1fde..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/components/component-type/index.js +++ /dev/null @@ -1,31 +0,0 @@ - -/** - * toString ref. - */ - -var toString = Object.prototype.toString; - -/** - * Return the type of `val`. - * - * @param {Mixed} val - * @return {String} - * @api public - */ - -module.exports = function(val){ - switch (toString.call(val)) { - case '[object Function]': return 'function'; - case '[object Date]': return 'date'; - case '[object RegExp]': return 'regexp'; - case '[object Arguments]': return 'arguments'; - case '[object Array]': return 'array'; - case '[object String]': return 'string'; - } - - if (val === null) return 'null'; - if (val === undefined) return 'undefined'; - if (val === Object(val)) return 'object'; - - return typeof val; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css deleted file mode 100644 index 80ed567..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.css +++ /dev/null @@ -1,3 +0,0 @@ -#foo { - name: 'bar'; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js deleted file mode 100644 index d00e0a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'foo'; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css deleted file mode 100644 index 6666a58..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/component/second.css +++ /dev/null @@ -1,3 +0,0 @@ -#baz { - name: 'bing'; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js deleted file mode 100644 index 8a2f505..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/fixtures/uglify-js/script.js +++ /dev/null @@ -1,6 +0,0 @@ -(function (name) { - function hello(world) { - return 'Hello ' + world + '!'; - } - return hello(name); -}('Forbes Lindesay')); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt deleted file mode 100644 index f5b9962..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{user.name}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt deleted file mode 100644 index 3dcaa58..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/atpl/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt deleted file mode 100644 index c88ab7c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt deleted file mode 100644 index 95d09f2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -hello world \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt deleted file mode 100644 index 81540ec..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b-expected.txt +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt deleted file mode 100644 index b8f852e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cdata/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -goodbye world \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt deleted file mode 100644 index a65ebe7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ -(function() { - var n; - - n = 4; - -}).call(this); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt deleted file mode 100644 index a7c552d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -n = 4; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt deleted file mode 100644 index a65ebe7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ -(function() { - var n; - - n = 4; - -}).call(this); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt deleted file mode 100644 index a7c552d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffee-script/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -n = 4; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt deleted file mode 100644 index c8be9c2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a-expected.txt +++ /dev/null @@ -1 +0,0 @@ -
      • foo
      • bar
      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt deleted file mode 100644 index f369928..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-a.txt +++ /dev/null @@ -1,3 +0,0 @@ -ul -> - li 'foo' - li 'bar' \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt deleted file mode 100644 index 8c02a7f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b-expected.txt +++ /dev/null @@ -1 +0,0 @@ -
      1. foo
      2. bar
      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt deleted file mode 100644 index f75d443..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/coffeecup/sample-b.txt +++ /dev/null @@ -1,3 +0,0 @@ -ol -> - li 'foo' - li 'bar' \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt deleted file mode 100644 index 500bb12..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a-expected.txt +++ /dev/null @@ -1 +0,0 @@ -{"abc":["a","b","c"],"a":{"b":"c"}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt deleted file mode 100644 index 11c3d1d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-a.txt +++ /dev/null @@ -1,9 +0,0 @@ -{ - abc: [ - 'a' - 'b' - 'c' - ] - a: - b: 'c' -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt deleted file mode 100644 index 63d5fe1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b-expected.txt +++ /dev/null @@ -1 +0,0 @@ -{"abc":["a",5,"c"],"a":{"b":"c"}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt deleted file mode 100644 index 101b9f5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/cson/sample-b.txt +++ /dev/null @@ -1,9 +0,0 @@ -{ - abc: [ - 'a' - 5 - 'c' - ] - a: - b: 'c' -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt deleted file mode 100644 index e2fc66c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{=it.user.name}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt deleted file mode 100644 index 6ea9cf0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dot/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{=it.user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt deleted file mode 100644 index d2f6eeb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {user.name}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt deleted file mode 100644 index d6a4bea..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/dust/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt deleted file mode 100644 index e95657f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      <%= @user.name %>

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt deleted file mode 100644 index a78ce39..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/eco/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -<%= @user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt deleted file mode 100644 index e95657f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      <%= @user.name %>

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt deleted file mode 100644 index a78ce39..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ect/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -<%= @user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt deleted file mode 100644 index b015881..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      <%= user.name %>

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt deleted file mode 100644 index a55afc5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/ejs/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -<%= user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt deleted file mode 100644 index c6b8fb8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -%p= @user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt deleted file mode 100644 index d579cbe..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml-coffee/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -%strong= @user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt deleted file mode 100644 index a692f8f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a-expected.txt +++ /dev/null @@ -1,2 +0,0 @@ - -

      bob

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt deleted file mode 100644 index 166d315..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -%p= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt deleted file mode 100644 index 8260b87..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b-expected.txt +++ /dev/null @@ -1,2 +0,0 @@ - -bob \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt deleted file mode 100644 index f64da6e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/haml/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -%strong= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt deleted file mode 100644 index f5b9962..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{user.name}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt deleted file mode 100644 index 3dcaa58..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/handlebars/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt deleted file mode 100644 index f5b9962..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{user.name}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt deleted file mode 100644 index 3dcaa58..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/hogan/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt deleted file mode 100644 index 8c69046..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a-expected.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!! 5 -html - head - link(type='text/css', rel='stylesheet', href='/site.css') - title Hello - body - h1 Hello world! diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt deleted file mode 100644 index face101..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-a.txt +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Hello - - -

      Hello world!

      - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt deleted file mode 100644 index f12c62f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b-expected.txt +++ /dev/null @@ -1,7 +0,0 @@ -!!! 5 -html - head - link(type='text/css', rel='stylesheet', href='/site.css') - title Hello - body - h1 Hello Forbes! diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt deleted file mode 100644 index 0ceeda4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/html2jade/sample-b.txt +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Hello - - -

      Hello Forbes!

      - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt deleted file mode 100644 index 623c665..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -p= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt deleted file mode 100644 index da8875c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jade/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -strong= user.name \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt deleted file mode 100644 index d2f6eeb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {user.name}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt deleted file mode 100644 index d6a4bea..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jazz/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt deleted file mode 100644 index 13817b6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      ${user.name}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt deleted file mode 100644 index 3636556..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/jqtpl/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -${user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt deleted file mode 100644 index b015881..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      <%= user.name %>

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt deleted file mode 100644 index a55afc5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/just/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -<%= user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt deleted file mode 100644 index 961fe69..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a-expected.txt +++ /dev/null @@ -1,27 +0,0 @@ -.variables { - width: 14cm; -} -.variables { - height: 24px; - color: #888888; - font-family: "Trebuchet MS", Verdana, sans-serif; - quotes: "~" "~"; -} -.redefinition { - three: 3; -} -.values { - font-family: 'Trebuchet', 'Trebuchet', 'Trebuchet'; - color: #888888 !important; - url: url('Trebuchet'); - multi: something 'A', B, C, 'Trebuchet'; -} -.variable-names { - name: 'hello'; -} -.alpha { - filter: alpha(opacity=42); -} -a:nth-child(2) { - border: 1px; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt deleted file mode 100644 index 3d7529e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-a.txt +++ /dev/null @@ -1,54 +0,0 @@ -@a: 2; -@x: @a * @a; -@y: @x + 1; -@z: @x * 2 + @y; - -.variables { - width: @z + 1cm; // 14cm -} - -@b: @a * 10; -@c: #888; - -@fonts: "Trebuchet MS", Verdana, sans-serif; -@f: @fonts; - -@quotes: "~" "~"; -@q: @quotes; - -.variables { - height: @b + @x + 0px; // 24px - color: @c; - font-family: @f; - quotes: @q; -} - -.redefinition { - @var: 4; - @var: 2; - @var: 3; - three: @var; -} - -.values { - @a: 'Trebuchet'; - @multi: 'A', B, C; - font-family: @a, @a, @a; - color: @c !important; - url: url(@a); - multi: something @multi, @a; -} - -.variable-names { - @var: 'hello'; - @name: 'var'; - name: @@name; -} -.alpha { - @var: 42; - filter: alpha(opacity=@var); -} - -a:nth-child(@a) { - border: 1px; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt deleted file mode 100644 index 649a7f4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b-expected.txt +++ /dev/null @@ -1,27 +0,0 @@ -.variables { - width: 14cm; -} -.variables { - height: 24px; - color: #888888; - font-family: "Trebuchet MS"; - quotes: "~" "~"; -} -.redefinition { - three: 3; -} -.values { - font-family: 'Trebuchet', 'Trebuchet', 'Trebuchet'; - color: #888888 !important; - url: url('Trebuchet'); - multi: something 'A', B, C, 'Trebuchet'; -} -.variable-names { - name: 'hello'; -} -.alpha { - filter: alpha(opacity=42); -} -a:nth-child(2) { - border: 1px; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt deleted file mode 100644 index 0fc80a3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/less/sample-b.txt +++ /dev/null @@ -1,54 +0,0 @@ -@a: 2; -@x: @a * @a; -@y: @x + 1; -@z: @x * 2 + @y; - -.variables { - width: @z + 1cm; // 14cm -} - -@b: @a * 10; -@c: #888; - -@fonts: "Trebuchet MS"; -@f: @fonts; - -@quotes: "~" "~"; -@q: @quotes; - -.variables { - height: @b + @x + 0px; // 24px - color: @c; - font-family: @f; - quotes: @q; -} - -.redefinition { - @var: 4; - @var: 2; - @var: 3; - three: @var; -} - -.values { - @a: 'Trebuchet'; - @multi: 'A', B, C; - font-family: @a, @a, @a; - color: @c !important; - url: url(@a); - multi: something @multi, @a; -} - -.variable-names { - @var: 'hello'; - @name: 'var'; - name: @@name; -} -.alpha { - @var: 42; - filter: alpha(opacity=@var); -} - -a:nth-child(@a) { - border: 1px; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt deleted file mode 100644 index 04b1781..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      #{user.name}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt deleted file mode 100644 index 76eedd8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/liquor/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -#{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt deleted file mode 100644 index 977a9ad..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ -

      Heading 1

      -

      Heading 2

      -
        -
      • bullet 1
      • -
      • bullet 2
      • -
      diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt deleted file mode 100644 index bbd8eb0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-a.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Heading 1 - -## Heading 2 - -- bullet 1 -- bullet 2 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt deleted file mode 100644 index b22f33b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b-expected.txt +++ /dev/null @@ -1,6 +0,0 @@ -

      Heading 1

      -

      Heading 2

      -
        -
      1. num 1
      2. -
      3. num 2
      4. -
      diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt deleted file mode 100644 index 73f4b83..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/markdown/sample-b.txt +++ /dev/null @@ -1,6 +0,0 @@ -# Heading 1 - -## Heading 2 - -1. num 1 -2. num 2 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt deleted file mode 100644 index f5b9962..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{user.name}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt deleted file mode 100644 index 3dcaa58..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mote/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt deleted file mode 100644 index c7270fb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{#user}}{{name}}{{/user}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt deleted file mode 100644 index 90982ae..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/mustache/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{#user}}{{name}}{{/user}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt deleted file mode 100644 index 25f2db2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a-expected.txt +++ /dev/null @@ -1 +0,0 @@ -

      bob

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt deleted file mode 100644 index 4efa161..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt deleted file mode 100644 index d6969d5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b-expected.txt +++ /dev/null @@ -1 +0,0 @@ -
      bob
      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt deleted file mode 100644 index 0eb6deb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/plates/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -
      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt deleted file mode 100644 index b015881..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      <%= user.name %>

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt deleted file mode 100644 index a55afc5..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/qejs/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -<%= user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt deleted file mode 100644 index 6ddc778..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -table { - border: none;} -table tr { - background: #fff;} -table tr { - font-size: 15px;} -table tr:odd { - background: #000;} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt deleted file mode 100644 index a27a945..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-a.txt +++ /dev/null @@ -1,11 +0,0 @@ -+large - :font-size 15px -+striped - tr - :background #fff - +large - &:odd - :background #000 -table - +striped - :border none \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt deleted file mode 100644 index 603a155..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -table { - border: none;} -table tr { - background: #000;} -table tr { - font-size: 15px;} -table tr:odd { - background: #fff;} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt deleted file mode 100644 index 0392bd6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/sass/sample-b.txt +++ /dev/null @@ -1,11 +0,0 @@ -+large - :font-size 15px -+striped - tr - :background #000 - +large - &:odd - :background #fff -table - +striped - :border none \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt deleted file mode 100644 index f686c1c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -body { - font: 12px Helvetica, Arial, sans-serif; -} -a.button { - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt deleted file mode 100644 index f2b7d94..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-a.txt +++ /dev/null @@ -1,10 +0,0 @@ -border-radius() - -webkit-border-radius arguments - -moz-border-radius arguments - border-radius arguments - -body - font 12px Helvetica, Arial, sans-serif - -a.button - border-radius(5px) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt deleted file mode 100644 index 11f10bf..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b-expected.txt +++ /dev/null @@ -1,8 +0,0 @@ -body { - font: 20px Helvetica, Arial, sans-serif; -} -a.button { - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt deleted file mode 100644 index a2d03c2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/stylus/sample-b.txt +++ /dev/null @@ -1,10 +0,0 @@ -border-radius() - -webkit-border-radius arguments - -moz-border-radius arguments - border-radius arguments - -body - font 20px Helvetica, Arial, sans-serif - -a.button - border-radius(5px) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt deleted file mode 100644 index f5b9962..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{user.name}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt deleted file mode 100644 index 3dcaa58..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/swig/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt deleted file mode 100644 index f5b9962..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{user.name}}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt deleted file mode 100644 index 3dcaa58..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/templayed/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{user.name}} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt deleted file mode 100644 index 04b1781..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      #{user.name}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt deleted file mode 100644 index 76eedd8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/toffee/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -#{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt deleted file mode 100644 index bf80f1e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a-expected.txt +++ /dev/null @@ -1 +0,0 @@ -tobi{name:"tobi"} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt deleted file mode 100644 index bac0d3f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-a.txt +++ /dev/null @@ -1,3 +0,0 @@ -tobi { - name: "tobi" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt deleted file mode 100644 index 01859af..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b-expected.txt +++ /dev/null @@ -1 +0,0 @@ -tobi{name:"bob"} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt deleted file mode 100644 index e55a457..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-css/sample-b.txt +++ /dev/null @@ -1,3 +0,0 @@ -tobi { - name: "bob" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt deleted file mode 100644 index 9f5dd4e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a-expected.txt +++ /dev/null @@ -1 +0,0 @@ -{"foo":"bar"} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt deleted file mode 100644 index b42f309..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-a.txt +++ /dev/null @@ -1,3 +0,0 @@ -{ - "foo": "bar" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt deleted file mode 100644 index 3a26a2e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b-expected.txt +++ /dev/null @@ -1 +0,0 @@ -[1,2,3] \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt deleted file mode 100644 index d930309..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/uglify-json/sample-b.txt +++ /dev/null @@ -1,5 +0,0 @@ -[ - 1, - 2, - 3 -] \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt deleted file mode 100644 index a244072..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      <%- user.name %>

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt deleted file mode 100644 index 0e320e4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/underscore/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -<%- user.name %> \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt deleted file mode 100644 index ba27a12..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {{ user.name }}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt deleted file mode 100644 index be635ff..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/walrus/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{{ user.name }} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt deleted file mode 100644 index d2f6eeb..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-a.txt +++ /dev/null @@ -1 +0,0 @@ -

      {user.name}

      \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt deleted file mode 100644 index d6a4bea..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/simple/whiskers/sample-b.txt +++ /dev/null @@ -1 +0,0 @@ -{user.name} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js deleted file mode 100644 index ebca3d7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/test.js +++ /dev/null @@ -1,123 +0,0 @@ -var transformers = require('../'); -var fs = require('fs'); -var path = require('path'); -var expect = require('expect.js'); - -fs.readdirSync(path.join(__dirname, 'simple')) - .forEach(function (transformer) { - if (!transformers[transformer]) { - throw new Error(transformer + ' appears to be undefined.'); - } - transformer = transformers[transformer]; - function locate(name) { - return path.join(__dirname, 'simple', transformer.name, name + '.txt'); - } - function read(name) { - try { - return fs.readFileSync(locate(name)).toString(); - } catch (ex) { - return null; - } - } - describe(transformer.name, function () { - var sampleA = read('sample-a'); - var sampleAExpected = (read('sample-a-expected') || '

      bob

      ').replace(/\r/g, ''); - var sampleB = read('sample-b'); - var sampleBExpected = (read('sample-b-expected') || 'bob').replace(/\r/g, ''); - if (transformer.sync) describe('syncronous operation', testSyncronousOperation); - else describe.skip('syncronous operation', testSyncronousOperation); - function testSyncronousOperation() { - it('works from a string', function () { - expect(transformer.renderSync(sampleA, {user: {name: 'bob'}})).to.be(sampleAExpected); - expect(transformer.renderSync(sampleB, {user: {name: 'bob'}})).to.be(sampleBExpected); - }); - it('works from a file', function () { - expect(transformer.renderFileSync(locate('sample-a'), {user: {name: 'bob'}})).to.be(sampleAExpected); - expect(transformer.renderFileSync(locate('sample-b'), {user: {name: 'bob'}})).to.be(sampleBExpected); - }); - } - describe('asyncronous operation', function () { - it('works from a string A', function (done) { - transformer.render(sampleA, {user: {name: 'bob'}}, function (err, res) { - if (err) return done(err); - expect(res).to.be(sampleAExpected); - done(); - }); - }); - it('works from a string B', function (done) { - transformer.render(sampleB, {user: {name: 'bob'}}, function (err, res) { - if (err) return done(err); - expect(res).to.be(sampleBExpected); - done(); - }); - }); - it('works from a file A', function (done) { - transformer.renderFile(locate('sample-a'), {user: {name: 'bob'}}, function (err, res) { - if (err) return done(err); - expect(res).to.be(sampleAExpected); - done(); - }); - }); - it('works from a file B', function (done) { - transformer.renderFile(locate('sample-b'), {user: {name: 'bob'}}, function (err, res) { - if (err) return done(err); - expect(res).to.be(sampleBExpected); - done(); - }); - }); - }) - }); - }); - - - - function read(name) { - try { - return fs.readFileSync(locate(name)).toString(); - } catch (ex) { - return null; - } - } - - -describe('uglify-js', function () { - var str = fs.readFileSync(path.join(__dirname, 'fixtures', 'uglify-js', 'script.js')).toString(); - it('minifies files', function () { - var res = transformers['uglify-js'].renderSync(str, {}); - expect(res.length).to.be.lessThan(82); - expect(require('vm').runInNewContext(res)).to.be('Hello Forbes Lindesay!'); - }); - it('beautifies files with {mangle: false, compress: false, output: {beautify: true}}', function () { - var res = transformers['uglify-js'].renderSync(str, {mangle: false, compress: false, output: {beautify: true}}); - expect(res).to.be('(function(name) {\n function hello(world) {\n return "Hello " + world + "!";\n }\n return hello(name);\n})("Forbes Lindesay");'); - expect(require('vm').runInNewContext(res)).to.be('Hello Forbes Lindesay!'); - }); -}); - - - -describe('component', function () { - var p = path.join(__dirname, 'fixtures', 'component', 'component.json'); - var output = path.join(__dirname, 'fixtures', 'component', 'build'); - function simplifyCSS(str) { - return transformers['uglify-css'].renderSync(str); - } - describe('component-js', function () { - it('builds the JavaScript file', function (done) { - transformers['component-js'].renderFile(p, {}, function (err, res) { - if (err) return done(err); - expect(require('vm').runInNewContext(res + '\nrequire("foo")')).to.be('foo'); - done(); - }) - }); - }); - describe('component-css', function () { - it('builds the CSS file', function (done) { - transformers['component-css'].renderFile(p, {}, function (err, res) { - if (err) return done(err); - expect(simplifyCSS(res)).to.be("#foo{name:'bar'}#baz{name:'bing'}"); - done(); - }) - }); - }); -}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js deleted file mode 100644 index 5d6b6ac..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/transformers/test/update-package.js +++ /dev/null @@ -1,13 +0,0 @@ -var transformers = require('../'); -var pack = require('../package'); -Object.keys(transformers) - .forEach(function (transformer) { - transformers[transformer].engines - .forEach(function (engine) { - if (engine != '.' && !pack.devDependencies[engine]) { - pack.devDependencies[engine] = '*'; - } - }); - }); -require('fs').writeFileSync(require('path').join(__dirname, '..', 'package.json'), - JSON.stringify(pack, null, 2)); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore deleted file mode 100644 index 699b5d4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.npmignore +++ /dev/null @@ -1,16 +0,0 @@ -lib-cov -*.seed -*.log -*.csv -*.dat -*.out -*.pid -*.gz - -pids -logs -results - -npm-debug.log - -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md deleted file mode 100644 index 21e4865..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# with - -Compile time `with` for strict mode JavaScript - -[![build status](https://secure.travis-ci.org/ForbesLindesay/with.png)](http://travis-ci.org/ForbesLindesay/with) -[![Dependency Status](https://gemnasium.com/ForbesLindesay/with.png)](https://gemnasium.com/ForbesLindesay/with) -[![NPM version](https://badge.fury.io/js/with.png)](http://badge.fury.io/js/with) - -## Installation - - $ npm install with - -## Usage - -```js -var addWith = require('with') - -addWith('obj', 'console.log(a)') -// => "var a = obj.a;console.log(a)" - -addWith("obj || {}", "console.log(helper(a))", ["helper"]) -// => var locals = (obj || {}),a = locals.a;console.log(helper(a)) -``` - -## API - -### addWith(obj, src, [exclude]) - -The idea is that this is roughly equivallent to: - -```js -with (obj) { - src -} -``` - -There are a few differences though. For starters, it will be assumed that all variables used in `src` come from `obj` so any that don't (e.g. template helpers) need to have their names parsed to `exclude` as an array. - -It also makes everything be declared, so you can always do: - -```js -if (foo === undefined) -``` - -instead of - -```js -if (typeof foo === 'undefined') -``` - -It is also safe to use in strict mode (unlike `with`) and it minifies properly (`with` disables virtually all minification). - -## License - - MIT \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js deleted file mode 100644 index a2565fd..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/index.js +++ /dev/null @@ -1,31 +0,0 @@ -var scope = require('lexical-scope') - -module.exports = addWith - -function addWith(obj, src, exclude) { - exclude = exclude || [] - var objScope = scope(obj) - exclude = exclude.concat(objScope.globals.implicit).concat(objScope.globals.exported) - var s = scope('(function () {' + src + '}())')//allows the `return` keyword - var vars = s.globals.implicit - .filter(function (v) { - return !(v in global) && exclude.indexOf(v) === -1 - }) - - if (vars.length === 0) return src - - var declareLocal = '' - var local = 'locals' - if (/^[a-zA-Z0-9$_]+$/.test(obj)) { - local = obj - } else { - while (s.globals.implicit.indexOf(local) != -1 || s.globals.exported.indexOf(local) != -1 || exclude.indexOf(local) != -1 || obj.indexOf(local) != -1) { - local += '_' - } - declareLocal = local + ' = (' + obj + '),' - } - return 'var ' + declareLocal + vars - .map(function (v) { - return v + ' = ' + local + '.' + v - }).join(',') + ';' + src -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml deleted file mode 100644 index 09d3ef3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.10 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js deleted file mode 100644 index 198b3ff..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/jquery.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
      a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
      "+""+"
      ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
      t
      ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
      ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
      ","
      "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
      ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt deleted file mode 100644 index 2a68ff8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/results.txt +++ /dev/null @@ -1,15 +0,0 @@ -$ git log|head -n1 -commit ae85dfd4cc0284679ce21bb662427340fa966666 -$ time node run.js >/dev/null - -real 0m6.551s -user 0m6.336s -sys 0m0.288s - -$ git log|head -n1 -commit 9125bf1ec0cf78c77a852e0547a4cc69db7797bf -$ time node run.js>/dev/null - -real 0m1.702s -user 0m1.644s -sys 0m0.084s diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js deleted file mode 100644 index 3c0ca06..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/bench/run.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/jquery.js'); - -var scope = detect(src); -console.dir(scope); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js deleted file mode 100644 index 7b98e48..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/detect.js +++ /dev/null @@ -1,6 +0,0 @@ -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/src.js'); - -var scope = detect(src); -console.dir(scope); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js deleted file mode 100644 index ff45a92..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/example/src.js +++ /dev/null @@ -1,27 +0,0 @@ -var x = 5; -var y = 3, z = 2; - -w.foo(); -w = 2; - -RAWR=444; -RAWR.foo(); - -BLARG=3; - -foo(function () { - var BAR = 3; - process.nextTick(function (ZZZZZZZZZZZZ) { - console.log('beep boop'); - var xyz = 4; - x += 10; - x.zzzzzz; - ZZZ=6; - }); - function doom () { - } - ZZZ.foo(); - -}); - -console.log(xyz); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js deleted file mode 100644 index 7ee7798..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/index.js +++ /dev/null @@ -1,161 +0,0 @@ -var astw = require('astw'); - -module.exports = function (src) { - var locals = {}; - var implicit = {}; - var exported = {}; - - src = String(src).replace(/^#![^\n]*\n/, ''); - var walk = astw(src); - - walk(function (node) { - if (node.type === 'VariableDeclaration') { - // take off the leading `var ` - var id = getScope(node); - for (var i = 0; i < node.declarations.length; i++) { - var d = node.declarations[i]; - locals[id][d.id.name] = d; - } - } - else if (isFunction(node)) { - var id = getScope(node.parent); - if (node.id) locals[id][node.id.name] = node; - var nid = node.params.length && getScope(node); - if (nid && !locals[nid]) locals[nid] = {}; - for (var i = 0; i < node.params.length; i++) { - var p = node.params[i]; - locals[nid][p.name] = p; - } - } - }); - - walk(function (node) { - if (node.type === 'Identifier' - && lookup(node) === undefined) { - if (node.parent.type === 'Property' - && node.parent.key === node) return; - if (node.parent.type === 'MemberExpression' - && node.parent.property === node) return; - if (isFunction(node.parent)) return; - - if (node.parent.type === 'AssignmentExpression') { - var isLeft0 = node.parent.left.type === 'MemberExpression' - && node.parent.left.object === node.name - ; - var isLeft1 = node.parent.left.type === 'Identifier' - && node.parent.left.name === node.name - ; - if (isLeft0 || isLeft1) { - exported[node.name] = keyOf(node).length; - } - } - if (!exported[node.name] - || exported[node.name] < keyOf(node).length) { - implicit[node.name] = keyOf(node).length; - } - } - }); - - var localScopes = {}; - var lks = objectKeys(locals); - for (var i = 0; i < lks.length; i++) { - var key = lks[i]; - localScopes[key] = objectKeys(locals[key]); - } - - return { - locals: localScopes, - globals: { - implicit: objectKeys(implicit), - exported: objectKeys(exported) - } - }; - - function lookup (node) { - for (var p = node; p; p = p.parent) { - if (isFunction(p) || p.type === 'Program') { - var id = getScope(p); - if (locals[id][node.name]) { - return id; - } - } - } - return undefined; - } - - function getScope (node) { - for ( - var p = node; - !isFunction(p) && p.type !== 'Program'; - p = p.parent - ); - var id = idOf(p); - if (!locals[id]) locals[id] = {}; - return id; - } - -}; - -function isFunction (x) { - return x.type === 'FunctionDeclaration' - || x.type === 'FunctionExpression' - ; -} - -function idOf (node) { - var id = []; - for (var n = node; n.type !== 'Program'; n = n.parent) { - var key = keyOf(n).join('.'); - id.unshift(key); - } - return id.join('.'); -} - -function keyOf (node) { - var p = node.parent; - var ks = objectKeys(p); - var kv = { keys : [], values : [], top : [] }; - - for (var i = 0; i < ks.length; i++) { - var key = ks[i]; - kv.keys.push(key); - kv.values.push(p[key]); - kv.top.push(undefined); - - if (isArray(p[key])) { - var keys = objectKeys(p[key]); - kv.keys.push.apply(kv.keys, keys); - kv.values.push.apply(kv.values, p[key]); - - var nkeys = []; - for (var j = 0; j < keys.length; j++) nkeys.push(key); - kv.top.push.apply(kv.top, nkeys); - } - } - var ix = indexOf(kv.values, node); - var res = []; - if (kv.top[ix]) res.push(kv.top[ix]); - if (kv.keys[ix]) res.push(kv.keys[ix]); - if (node.parent.type === 'CallExpression') { - res.unshift.apply(res, keyOf(node.parent.parent)); - } - return res; -} - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -}; - -function indexOf (xs, x) { - if (xs.indexOf) return xs.indexOf(x); - for (var i = 0; i < xs.length; i++) { - if (x === xs[i]) return i; - } - return -1; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml deleted file mode 100644 index ed178f6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE deleted file mode 100644 index ee27ba4..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js deleted file mode 100644 index 08cbe28..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/example/types.js +++ /dev/null @@ -1,8 +0,0 @@ -var astw = require('../'); -var deparse = require('escodegen').generate; -var walk = astw('4 + beep(5 * 2)'); - -walk(function (node) { - var src = deparse(node); - console.log(node.type + ' :: ' + JSON.stringify(src)); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js deleted file mode 100644 index 4d71a1f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/index.js +++ /dev/null @@ -1,42 +0,0 @@ -var parse = require('esprima').parse; - -module.exports = function (src) { - var ast = typeof src === 'string' ? parse(src) : src; - return function (cb) { - walk(ast, undefined, cb); - }; -}; - -function walk (node, parent, cb) { - var keys = objectKeys(node); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key === 'parent') continue; - - var child = node[key]; - if (isArray(child)) { - for (var j = 0; j < child.length; j++) { - var c = child[j]; - if (c && typeof c.type === 'string') { - c.parent = node; - walk(c, node, cb); - } - } - } - else if (child && typeof child.type === 'string') { - child.parent = node; - walk(child, node, cb); - } - } - cb(node); -} - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) keys.push(key); - return keys; -}; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse deleted file mode 100644 index 2b5398f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../esprima/bin/esparse.js" "$@" - ret=$? -else - node "$basedir/../esprima/bin/esparse.js" "$@" - ret=$? -fi -exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd deleted file mode 100644 index 0bc3f65..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esparse.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\esprima\bin\esparse.js" %* -) ELSE ( - node "%~dp0\..\esprima\bin\esparse.js" %* -) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate deleted file mode 100644 index 6d6df8a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../esprima/bin/esvalidate.js" "$@" - ret=$? -else - node "$basedir/../esprima/bin/esvalidate.js" "$@" - ret=$? -fi -exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd deleted file mode 100644 index b8ec592..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/.bin/esvalidate.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\esprima\bin\esvalidate.js" %* -) ELSE ( - node "%~dp0\..\esprima\bin\esvalidate.js" %* -) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore deleted file mode 100644 index 88dc4e8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/.npmignore +++ /dev/null @@ -1,8 +0,0 @@ -.git -.travis.yml -/node_modules/ -/assets/ -/coverage/ -/demo/ -/test/3rdparty -/tools/ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog deleted file mode 100644 index 86c73fe..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/ChangeLog +++ /dev/null @@ -1,18 +0,0 @@ -2012-11-05: Version 1.0.2 - - Improvements: - - * Fix esvalidate's JUnit output for exception error (issue 374) - * Allow npm installation with test (npat=true) - -2012-10-28: Version 1.0.1 - - Improvements: - - * esvalidate understands shebang in a Unix shell script (issue 361) - * esvalidate treats fatal parsing failure as an error (issue 361) - * Reduce Node.js package via .npmignore (issue 362) - -2012-10-22: Version 1.0.0 - - Initial release. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD deleted file mode 100644 index 3e580c3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/LICENSE.BSD +++ /dev/null @@ -1,19 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md deleted file mode 100644 index a74bd12..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/README.md +++ /dev/null @@ -1,73 +0,0 @@ -**Esprima** ([esprima.org](http://esprima.org)) is a high performance, -standard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) -parser written in ECMAScript (also popularly known as -[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)). -Esprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat), -with the help of [many contributors](https://github.com/ariya/esprima/contributors). - -Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as -[Node.js](http://nodejs.org). - -### Features - -- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262) -- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla -[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API) -- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage) -- Optional tracking of syntax node location (index-based and line-column) -- Experimental support for ES6/Harmony (module, class, destructuring, ...) - -Esprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)). -It is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html) -with the new generation of fast parsers. - -### Applications - -Esprima serves as the basis for many popular JavaScript development tools: - -- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul) -- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck) -- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS), -[Sweet.js](http://sweetjs.org/) (macro) -- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr) -- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html)) -- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter), -- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen) - -### Questions? -- [Documentation](http://esprima.org/doc) -- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect) -and [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement) -- [Mailing list](http://groups.google.com/group/esprima) -- [Contribution guide](http://esprima.org/doc/index.html#contribution) - -Follow [@Esprima](http://twitter.com/Esprima) on Twitter to get the -development updates. -Feedback and contribution are welcomed! - -### License - -Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) - and other contributors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js deleted file mode 100644 index 3e7bb81..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esparse.js +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true node:true rhino:true */ - -var fs, esprima, fname, content, options, syntax; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esparse.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esparse [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --comment Gather all line and block comments in an array'); - console.log(' --loc Include line-column location info for each syntax node'); - console.log(' --range Include index-based range for each syntax node'); - console.log(' --raw Display the raw value of literals'); - console.log(' --tokens List all tokens in an array'); - console.log(' --tolerant Tolerate errors on a best-effort basis (experimental)'); - console.log(' -v, --version Shows program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = {}; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Parser (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry === '--comment') { - options.comment = true; - } else if (entry === '--loc') { - options.loc = true; - } else if (entry === '--range') { - options.range = true; - } else if (entry === '--raw') { - options.raw = true; - } else if (entry === '--tokens') { - options.tokens = true; - } else if (entry === '--tolerant') { - options.tolerant = true; - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else if (typeof fname === 'string') { - console.log('Error: more than one input file.'); - process.exit(1); - } else { - fname = entry; - } -}); - -if (typeof fname !== 'string') { - console.log('Error: no input file.'); - process.exit(1); -} - -try { - content = fs.readFileSync(fname, 'utf-8'); - syntax = esprima.parse(content, options); - console.log(JSON.stringify(syntax, null, 4)); -} catch (e) { - console.log('Error: ' + e.message); - process.exit(1); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js deleted file mode 100644 index e0af3f7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/bin/esvalidate.js +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env node -/* - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint sloppy:true plusplus:true node:true rhino:true */ - -var fs, esprima, options, fnames, count; - -if (typeof require === 'function') { - fs = require('fs'); - esprima = require('esprima'); -} else if (typeof load === 'function') { - try { - load('esprima.js'); - } catch (e) { - load('../esprima.js'); - } -} - -// Shims to Node.js objects when running under Rhino. -if (typeof console === 'undefined' && typeof process === 'undefined') { - console = { log: print }; - fs = { readFileSync: readFile }; - process = { argv: arguments, exit: quit }; - process.argv.unshift('esvalidate.js'); - process.argv.unshift('rhino'); -} - -function showUsage() { - console.log('Usage:'); - console.log(' esvalidate [options] file.js'); - console.log(); - console.log('Available options:'); - console.log(); - console.log(' --format=type Set the report format, plain (default) or junit'); - console.log(' -v, --version Print program version'); - console.log(); - process.exit(1); -} - -if (process.argv.length <= 2) { - showUsage(); -} - -options = { - format: 'plain' -}; - -fnames = []; - -process.argv.splice(2).forEach(function (entry) { - - if (entry === '-h' || entry === '--help') { - showUsage(); - } else if (entry === '-v' || entry === '--version') { - console.log('ECMAScript Validator (using Esprima version', esprima.version, ')'); - console.log(); - process.exit(0); - } else if (entry.slice(0, 9) === '--format=') { - options.format = entry.slice(9); - if (options.format !== 'plain' && options.format !== 'junit') { - console.log('Error: unknown report format ' + options.format + '.'); - process.exit(1); - } - } else if (entry.slice(0, 2) === '--') { - console.log('Error: unknown option ' + entry + '.'); - process.exit(1); - } else { - fnames.push(entry); - } -}); - -if (fnames.length === 0) { - console.log('Error: no input file.'); - process.exit(1); -} - -if (options.format === 'junit') { - console.log(''); - console.log(''); -} - -count = 0; -fnames.forEach(function (fname) { - var content, timestamp, syntax, name; - try { - content = fs.readFileSync(fname, 'utf-8'); - - if (content[0] === '#' && content[1] === '!') { - content = '//' + content.substr(2, content.length); - } - - timestamp = Date.now(); - syntax = esprima.parse(content, { tolerant: true }); - - if (options.format === 'junit') { - - name = fname; - if (name.lastIndexOf('/') >= 0) { - name = name.slice(name.lastIndexOf('/') + 1); - } - - console.log(''); - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - console.log(' '); - console.log(' ' + - error.message + '(' + name + ':' + error.lineNumber + ')' + - ''); - console.log(' '); - }); - - console.log(''); - - } else if (options.format === 'plain') { - - syntax.errors.forEach(function (error) { - var msg = error.message; - msg = msg.replace(/^Line\ [0-9]*\:\ /, ''); - msg = fname + ':' + error.lineNumber + ': ' + msg; - console.log(msg); - ++count; - }); - - } - } catch (e) { - ++count; - if (options.format === 'junit') { - console.log(''); - console.log(' '); - console.log(' ' + - e.message + '(' + fname + ((e.lineNumber) ? ':' + e.lineNumber : '') + - ')'); - console.log(' '); - console.log(''); - } else { - console.log('Error: ' + e.message); - } - } -}); - -if (options.format === 'junit') { - console.log(''); -} - -if (count > 0) { - process.exit(1); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json deleted file mode 100644 index ca85b45..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/component.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "esprima", - "version": "1.0.2", - "main": "./esprima.js", - "dependencies": {}, - "repository": { - "type": "git", - "url": "http://github.com/ariya/esprima.git" - }, - "licenses": [{ - "type": "BSD", - "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" - }] -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html deleted file mode 100644 index 921f77f..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/doc/index.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - -Esprima Documentation - - - - - - - -
      - - - -

      Esprima Documentation

      - -
      - -

      Basic Usage

      - -

      Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as -Rhino and Node.js.

      - -

      In a web browser

      - -

      Just include the source file:

      - -
      -<script src="esparse.js"></script>
      -
      - -

      The module esprima will be available as part of the global window object:

      - -
      -var syntax = esprima.parse('var answer = 42');
      -
      - -

      Since Esprima supports AMD (Asynchronous Module Definition), it can be loaded via a module loader such as RequireJS:

      - -
      -require(['esprima'], function (parser) {
      -    // Do something with parser, e.g.
      -    var syntax = parser.parse('var answer = 42');
      -    console.log(JSON.stringify(syntax, null, 4));
      -});
      -
      - -

      Since Esprima is available as a Bower component, it can be installed with:

      - -
      -bower install esprima
      -
      - -

      Obviously, it can be used with Yeoman as well:

      - -
      -yeoman install esprima
      -
      - -

      With Node.js

      - -

      Esprima is available as a Node.js package, install it using npm:

      - -
      -npm install esprima
      -
      - -

      Load the module with require and use it:

      - -
      -var esprima = require('esprima');
      -console.log(JSON.stringify(esprima.parse('var answer = 42'), null, 4));
      -
      - -

      With Rhino

      - -

      Load the source file from another script:

      - -
      -load('/path/to/esprima.js');
      -
      - -

      The module esprima will be available as part of the global object:

      - -
      -var syntax = esprima.parse('42');
      -print(JSON.stringify(syntax, null, 2));
      -
      - -

      Parsing Interface

      - -

      Basic usage: - -

      -esprima.parse(code, options);
      -
      - -

      The output of the parser is the syntax tree formatted in JSON, see the following Syntax Tree Format section.

      - -

      Available options so far (by default, every option false):

      - -
      - - - - - - - - - - - - - - - - - - - - - - - - -
      OptionWhen set to true
      locNodes have line and column-based location info
      rangeNodes have an index-based location range (array)
      rawLiterals have extra property which stores the verbatim source
      tokensAn extra array containing all found tokens
      commentAn extra array containing all line and block comments
      - - -

      The easiest way to see the different output based on various option settings is to use the online parser demo. - -

      Examples

      - -

      Detect Nested Ternary Conditionals

      - -

      The script detectnestedternary.js in the examples/ subdirectory is using Esprima to look for a ternary conditional, i.e. operator ?:, which is immediately followed (in one of its code paths) by another ternary conditional. The script can be invoked from the command-line with Node.js:

      - -
      -node detectnestedternary.js /some/path
      -
      - -

      An example code fragment which will be flagged by this script as having a nested ternary conditional:

      - -
      -var str = (age < 1) ? "baby" :
      -    (age < 5) ? "toddler" :
      -    (age < 18) ? "child": "adult";
      -
      - -

      which will yield the following report:

      - -
      -  Line 1 : Nested ternary for "age < 1"
      -  Line 2 : Nested ternary for "age < 5"
      -
      - -

      Find Possible Boolean Traps

      - -

      The script findbooleantrap.js in the examples/ subdirectory is using Esprima to detect some possible cases of Boolean trap, i.e. the use of Boolean literal which may lead to ambiguities and lack of readability. The script can be invoked from command-line with Node.js:

      - -
      -node findbooleantrap.js /some/path
      -
      - -It will search for all files (recursively) in the given path, try to parse each file, and then look for signs of Boolean traps: - -
        -
      • Literal used with a non-setter function (assumption: setter starts with the "set" prefix):
      • -
        this.refresh(true);
        -
      • Literal used with a function whose name may have a double-negative interpretation:
      • -
        item.setHidden(false);
        -
      • Two different literals in a single function call:
      • -
        element.stop(true, false);
        -
      • Multiple literals in a single function invocation:
      • -
        event.initKeyEvent("keypress", true, true, null, null,
        -    false, false, false, false, 9, 0);
        -
      • Ambiguous Boolean literal as the last argument:
      • -
        return getSomething(obj, false);
        -
      - -For some more info, read also the blog post on Boolean trap. - -

      Syntax Tree Format

      - -

      The output of the parser is expected to be compatible with Mozilla SpiderMonkey Parser API. -The best way to understand various different constructs is the online parser demo which shows the syntax tree (formatted with JSON.stringify) corresponding to the typed code. - -The simplest example is as follows. If the following code is executed: - -

      -esprima.parse('var answer = 42;');
      -
      - -then the return value will be (JSON formatted): - -
      -{
      -    type: 'Program',
      -    body: [
      -        {
      -            type: 'VariableDeclaration',
      -            declarations: [
      -                {
      -                    type: 'AssignmentExpression',
      -                    operator: =,
      -                    left: {
      -                        type: 'Identifier',
      -                        name: 'answer'
      -                    },
      -                    right: {
      -                        type: 'Literal',
      -                        value: 42
      -                    }
      -                }
      -            ]
      -        }
      -    ]
      -}
      -
      - -

      Contribution Guide

      - -

      Guidelines

      - -

      Contributors are mandated to follow the guides described in the following sections. Any contribution which do not conform to the guides may be rejected.

      - -

      Laundry list

      - -

      Before creating pull requests, make sure the following applies.

      - -

      There is a corresponding issue. If there is no issue yet, create one in the issue tracker.

      - -

      The commit log links the corresponding issue (usually as the last line).

      - -

      No functional regression. Run all unit tests.

      - -

      No coverage regression. Run the code coverage analysis.

      - -

      Each commit must be granular. Big changes should be splitted into smaller commits.

      - -

      Write understandable code. No need to be too terse (or even obfuscated).

      - -

      JSLint does not complain.

      - -

      A new feature must be accompanied with unit tests. No compromise.

      - -

      A new feature should not cause performance loss. Verify with the benchmark tests.

      - -

      Performance improvement should be backed up by actual conclusive speed-up in the benchmark suite.

      - -

      Coding style

      - -

      Indentation is 4 spaces.

      - -

      Open curly brace is at the end of the line.

      - -

      String literal uses single quote (') and not double quote (").

      - -

      Commit message

      - -

      Bad:

      - -
      -    Fix a problem with Firefox.
      -
      - -

      The above commit is too short and useless in the long term.

      - -

      Good:

      - -
      -    Add support for labeled statement.
      -
      -    It is covered in ECMAScript Language Specification Section 12.12.
      -    This also fixes parsing MooTools and JSLint code.
      -
      -    Running the benchmarks suite show negligible performance loss.
      -
      -    http://code.google.com/p/esprima/issues/detail?id=10
      -    http://code.google.com/p/esprima/issues/detail?id=15
      -    http://code.google.com/p/esprima/issues/detail?id=16
      -
      - -

      Important aspects:

      - -
        -
      • The first line is the short description, useful for per-line commit view and thus keep it under 80 characters.
      • -
      • The next paragraphs should provide more explanation (if needed).
      • -
      • Describe the testing situation (new unit/benchmark test, change in performance, etc).
      • -
      • Put the link to the issues for cross-ref.
      • -
      - -

      Baseline syntax tree as the expected result

      - -

      The test suite contains a collection of a pair of code and its syntax tree. To generate the syntax tree suitably formatted for the test fixture, use the included helper script tools/generate-test-fixture.js (with Node.js), e.g.: - -

      -node tools/generate-test-fixture.js "var answer = 42"
      -
      - -The syntax tree will be printed out to the console. This can be used in the test fixture. - -

      Test Workflow

      - -

      Unit tests

      - -

      Browser-based unit testing is available by opening test/index.html in the source tree. The online version is esprima.org/test.

      - -

      Command-line testing using Node.js:

      - -
      npm test
      - -

      Code coverage test

      - -

      Note: you need to use Node.js 0.6 or later version.

      - -

      Install node-cover:

      - -
      sudo npm install -g cover
      - -

      Run it in Esprima source tree:

      - -
      cover run test/runner.js
      - -

      Check the quick report:

      - -
      cover report
      - -

      To get the detailed report:

      - -
      cover report html
      - -

      and then open cover_html/index.html file and choose esprima.js from the list.

      - -

      Benchmark tests

      - -

      Available by opening test/benchmarks.html in the source tree. The online version is esprima.org/test/benchmarks.html.

      - -

      Note: Because the corpus is fetched via XML HTTP Request, the benchmarks test needs to be served via a web server and not local file.

      - -

      It is important to run this with various browsers to cover different JavaScript engines.

      - -

      Command-line benchmark using Node.js:

      - -
      node test/benchmark.js
      - -

      Command-line benchmark using V8 shell:

      - -
      /path/to/v8/shell test/benchmark.js
      - -

      The current corpus for the benchmarks:

      - -
        -
      • jQuery (version 1.7.1 and 1.6.4)
      • -
      • jQuery Mobile (version 1.0)
      • -
      • Prototype (version 1.7.0.0 and 1.6.1)
      • -
      • Ext Core (version 3.1.0 and 3.0.0)
      • -
      • MooTools (version 1.4.1 and 1.3.2)
      • -
      • Backbone (version 0.5.3)
      • -
      • Underscore (version 1.2.3)
      • -
      - -

      Speed comparison tests

      - -

      Available by opening test/compare.html. The online version is esprima.org/test/compare.html.

      - -

      Note: Because the corpus is fetched via XML HTTP Request, the benchmarks test needs to be served via a web server and not local file.

      - -

      Warning: Since each parser has a different format for the syntax tree, the speed is not fully comparable (the cost of constructing different result is not taken into account). These tests exist only to ensure that Esprima parser is not ridiculously slow, e.g. one magnitude slower compare to other parsers.

      - -

      The current corpus for the speed comparison tests:

      - -
        -
      • jQuery version 1.7.1
      • -
      • Prototype version 1.7.0.0
      • -
      • MooTools version 1.4.1
      • -
      • Ext Core version 3.1.0
      • -
      - -

      Manual tests

      - -

      Code parser

      - -

      Available by opening demo/parse.html. - -

      In this demo, whatever is typed in the editor will be parsed. If it is a valid code, the syntax tree will be shown formatted using JSON.stringify.

      - -

      Operator precedence

      - -

      Available by opening demo/precedence.html. - -

      The demo compares two expression and decides whether they are semantically equivalent or not. If not, the expression will be rewritten, with extra parentheses, to following the intended semantic of the original.

      - -

      Regular expression collector

      - -

      Available by opening demo/collector.html. - -

      The demo finds all the regular expressions in the given code, along with the location for each regular expression.

      - -

      Function tracing

      - -

      Available by opening demo/functiontrace.html. - -

      The demo inserts a function call at the beginning of every function block to log the number of times the function is executed.

      - - - -

      Sister projects

      - -

      Escodegen is a code generator which supports Esprima syntax tree. This is useful for source code transformation. The source can be parsed by Esprima and then regenerated using escodegen. Between the process, the syntax tree can be transformed.

      - -

      Esmorph is a non-destructive source code morphing tool. It can tweak portions of the code without affecting the rest (hence the term non-destructive).

      - -

      Similar parsers

      - -

      Narcissus is a metacircular implementation of JavaScript. Obviously it has a parsing capability. Check more at the code repo: github.com/mozilla/narcissus. Narcissus is likely the oldest JavaScript parser written in JavaScript.

      - -

      UglifyJS is a minifier and obfuscator which has a parser called parse-js. It is pretty popular and widely used. Read more at its project page: github.com/mishoo/UglifyJS.

      - -

      ZeParser, see github.com/qfox/ZeParser.

      - -

      License

      - -

      Copyright (C) 2012, 2011 Ariya Hidayat and other contributors.

      - -

      Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

      -
        -
      • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
      • -
      • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
      • -
      - -

      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

      - - - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js deleted file mode 100644 index 9f77a45..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/esprima.js +++ /dev/null @@ -1,3895 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Mathias Bynens - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Kris Kowal - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint bitwise:true plusplus:true */ -/*global esprima:true, define:true, exports:true, window: true, -throwError: true, createLiteral: true, generateStatement: true, -parseAssignmentExpression: true, parseBlock: true, parseExpression: true, -parseFunctionDeclaration: true, parseFunctionExpression: true, -parseFunctionSourceElements: true, parseVariableIdentifier: true, -parseLeftHandSideExpression: true, -parseStatement: true, parseSourceElement: true */ - -(function (root, factory) { - 'use strict'; - - // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, - // Rhino, and plain browser loading. - if (typeof define === 'function' && define.amd) { - define(['exports'], factory); - } else if (typeof exports !== 'undefined') { - factory(exports); - } else { - factory((root.esprima = {})); - } -}(this, function (exports) { - 'use strict'; - - var Token, - TokenName, - Syntax, - PropertyKind, - Messages, - Regex, - source, - strict, - index, - lineNumber, - lineStart, - length, - buffer, - state, - extra; - - Token = { - BooleanLiteral: 1, - EOF: 2, - Identifier: 3, - Keyword: 4, - NullLiteral: 5, - NumericLiteral: 6, - Punctuator: 7, - StringLiteral: 8 - }; - - TokenName = {}; - TokenName[Token.BooleanLiteral] = 'Boolean'; - TokenName[Token.EOF] = ''; - TokenName[Token.Identifier] = 'Identifier'; - TokenName[Token.Keyword] = 'Keyword'; - TokenName[Token.NullLiteral] = 'Null'; - TokenName[Token.NumericLiteral] = 'Numeric'; - TokenName[Token.Punctuator] = 'Punctuator'; - TokenName[Token.StringLiteral] = 'String'; - - Syntax = { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - }; - - PropertyKind = { - Data: 1, - Get: 2, - Set: 4 - }; - - // Error messages should be identical to V8. - Messages = { - UnexpectedToken: 'Unexpected token %0', - UnexpectedNumber: 'Unexpected number', - UnexpectedString: 'Unexpected string', - UnexpectedIdentifier: 'Unexpected identifier', - UnexpectedReserved: 'Unexpected reserved word', - UnexpectedEOS: 'Unexpected end of input', - NewlineAfterThrow: 'Illegal newline after throw', - InvalidRegExp: 'Invalid regular expression', - UnterminatedRegExp: 'Invalid regular expression: missing /', - InvalidLHSInAssignment: 'Invalid left-hand side in assignment', - InvalidLHSInForIn: 'Invalid left-hand side in for-in', - MultipleDefaultsInSwitch: 'More than one default clause in switch statement', - NoCatchOrFinally: 'Missing catch or finally after try', - UnknownLabel: 'Undefined label \'%0\'', - Redeclaration: '%0 \'%1\' has already been declared', - IllegalContinue: 'Illegal continue statement', - IllegalBreak: 'Illegal break statement', - IllegalReturn: 'Illegal return statement', - StrictModeWith: 'Strict mode code may not include a with statement', - StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode', - StrictVarName: 'Variable name may not be eval or arguments in strict mode', - StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode', - StrictParamDupe: 'Strict mode function may not have duplicate parameter names', - StrictFunctionName: 'Function name may not be eval or arguments in strict mode', - StrictOctalLiteral: 'Octal literals are not allowed in strict mode.', - StrictDelete: 'Delete of an unqualified identifier in strict mode.', - StrictDuplicateProperty: 'Duplicate data property in object literal not allowed in strict mode', - AccessorDataProperty: 'Object literal may not have data and accessor property with the same name', - AccessorGetSet: 'Object literal may not have multiple get/set accessors with the same name', - StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode', - StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode', - StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode', - StrictReservedWord: 'Use of future reserved word in strict mode' - }; - - // See also tools/generate-unicode-regex.py. - Regex = { - NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'), - NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]') - }; - - // Ensure the condition is true, otherwise throw an error. - // This is only to have a better contract semantic, i.e. another safety net - // to catch a logic error. The condition shall be fulfilled in normal case. - // Do NOT use this to enforce a certain condition on any user input. - - function assert(condition, message) { - if (!condition) { - throw new Error('ASSERT: ' + message); - } - } - - function sliceSource(from, to) { - return source.slice(from, to); - } - - if (typeof 'esprima'[0] === 'undefined') { - sliceSource = function sliceArraySource(from, to) { - return source.slice(from, to).join(''); - }; - } - - function isDecimalDigit(ch) { - return '0123456789'.indexOf(ch) >= 0; - } - - function isHexDigit(ch) { - return '0123456789abcdefABCDEF'.indexOf(ch) >= 0; - } - - function isOctalDigit(ch) { - return '01234567'.indexOf(ch) >= 0; - } - - - // 7.2 White Space - - function isWhiteSpace(ch) { - return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') || - (ch === '\u000C') || (ch === '\u00A0') || - (ch.charCodeAt(0) >= 0x1680 && - '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0); - } - - // 7.3 Line Terminators - - function isLineTerminator(ch) { - return (ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029'); - } - - // 7.6 Identifier Names and Identifiers - - function isIdentifierStart(ch) { - return (ch === '$') || (ch === '_') || (ch === '\\') || - (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || - ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch)); - } - - function isIdentifierPart(ch) { - return (ch === '$') || (ch === '_') || (ch === '\\') || - (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || - ((ch >= '0') && (ch <= '9')) || - ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch)); - } - - // 7.6.1.2 Future Reserved Words - - function isFutureReservedWord(id) { - switch (id) { - - // Future reserved words. - case 'class': - case 'enum': - case 'export': - case 'extends': - case 'import': - case 'super': - return true; - } - - return false; - } - - function isStrictModeReservedWord(id) { - switch (id) { - - // Strict Mode reserved words. - case 'implements': - case 'interface': - case 'package': - case 'private': - case 'protected': - case 'public': - case 'static': - case 'yield': - case 'let': - return true; - } - - return false; - } - - function isRestrictedWord(id) { - return id === 'eval' || id === 'arguments'; - } - - // 7.6.1.1 Keywords - - function isKeyword(id) { - var keyword = false; - switch (id.length) { - case 2: - keyword = (id === 'if') || (id === 'in') || (id === 'do'); - break; - case 3: - keyword = (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try'); - break; - case 4: - keyword = (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with'); - break; - case 5: - keyword = (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw'); - break; - case 6: - keyword = (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch'); - break; - case 7: - keyword = (id === 'default') || (id === 'finally'); - break; - case 8: - keyword = (id === 'function') || (id === 'continue') || (id === 'debugger'); - break; - case 10: - keyword = (id === 'instanceof'); - break; - } - - if (keyword) { - return true; - } - - switch (id) { - // Future reserved words. - // 'const' is specialized as Keyword in V8. - case 'const': - return true; - - // For compatiblity to SpiderMonkey and ES.next - case 'yield': - case 'let': - return true; - } - - if (strict && isStrictModeReservedWord(id)) { - return true; - } - - return isFutureReservedWord(id); - } - - // 7.4 Comments - - function skipComment() { - var ch, blockComment, lineComment; - - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source[index]; - - if (lineComment) { - ch = source[index++]; - if (isLineTerminator(ch)) { - lineComment = false; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } - } else if (blockComment) { - if (isLineTerminator(ch)) { - if (ch === '\r' && source[index + 1] === '\n') { - ++index; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = source[index++]; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - if (ch === '*') { - ch = source[index]; - if (ch === '/') { - ++index; - blockComment = false; - } - } - } - } else if (ch === '/') { - ch = source[index + 1]; - if (ch === '/') { - index += 2; - lineComment = true; - } else if (ch === '*') { - index += 2; - blockComment = true; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function scanHexEscape(prefix) { - var i, len, ch, code = 0; - - len = (prefix === 'u') ? 4 : 2; - for (i = 0; i < len; ++i) { - if (index < length && isHexDigit(source[index])) { - ch = source[index++]; - code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); - } else { - return ''; - } - } - return String.fromCharCode(code); - } - - function scanIdentifier() { - var ch, start, id, restore; - - ch = source[index]; - if (!isIdentifierStart(ch)) { - return; - } - - start = index; - if (ch === '\\') { - ++index; - if (source[index] !== 'u') { - return; - } - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - if (ch === '\\' || !isIdentifierStart(ch)) { - return; - } - id = ch; - } else { - index = restore; - id = 'u'; - } - } else { - id = source[index++]; - } - - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch)) { - break; - } - if (ch === '\\') { - ++index; - if (source[index] !== 'u') { - return; - } - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - if (ch === '\\' || !isIdentifierPart(ch)) { - return; - } - id += ch; - } else { - index = restore; - id += 'u'; - } - } else { - id += source[index++]; - } - } - - // There is no keyword or literal with only one character. - // Thus, it must be an identifier. - if (id.length === 1) { - return { - type: Token.Identifier, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (isKeyword(id)) { - return { - type: Token.Keyword, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.1 Null Literals - - if (id === 'null') { - return { - type: Token.NullLiteral, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.2 Boolean Literals - - if (id === 'true' || id === 'false') { - return { - type: Token.BooleanLiteral, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - return { - type: Token.Identifier, - value: id, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.7 Punctuators - - function scanPunctuator() { - var start = index, - ch1 = source[index], - ch2, - ch3, - ch4; - - // Check for most common single-character punctuators. - - if (ch1 === ';' || ch1 === '{' || ch1 === '}') { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === ',' || ch1 === '(' || ch1 === ')') { - ++index; - return { - type: Token.Punctuator, - value: ch1, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Dot (.) can also start a floating-point number, hence the need - // to check the next character. - - ch2 = source[index + 1]; - if (ch1 === '.' && !isDecimalDigit(ch2)) { - return { - type: Token.Punctuator, - value: source[index++], - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // Peek more characters. - - ch3 = source[index + 2]; - ch4 = source[index + 3]; - - // 4-character punctuator: >>>= - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - if (ch4 === '=') { - index += 4; - return { - type: Token.Punctuator, - value: '>>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 3-character punctuators: === !== >>> <<= >>= - - if (ch1 === '=' && ch2 === '=' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '===', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '!' && ch2 === '=' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '!==', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '>') { - index += 3; - return { - type: Token.Punctuator, - value: '>>>', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '<' && ch2 === '<' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '<<=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - if (ch1 === '>' && ch2 === '>' && ch3 === '=') { - index += 3; - return { - type: Token.Punctuator, - value: '>>=', - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 2-character punctuators: <= >= == != ++ -- << >> && || - // += -= *= %= &= |= ^= /= - - if (ch2 === '=') { - if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) { - if ('+-<>&|'.indexOf(ch2) >= 0) { - index += 2; - return { - type: Token.Punctuator, - value: ch1 + ch2, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // The remaining 1-character punctuators. - - if ('[]<>+-*%&|^!~?:=/'.indexOf(ch1) >= 0) { - return { - type: Token.Punctuator, - value: source[index++], - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - } - - // 7.8.3 Numeric Literals - - function scanNumericLiteral() { - var number, start, ch; - - ch = source[index]; - assert(isDecimalDigit(ch) || (ch === '.'), - 'Numeric literal must start with a decimal digit or a decimal point'); - - start = index; - number = ''; - if (ch !== '.') { - number = source[index++]; - ch = source[index]; - - // Hex number starts with '0x'. - // Octal number starts with '0'. - if (number === '0') { - if (ch === 'x' || ch === 'X') { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isHexDigit(ch)) { - break; - } - number += source[index++]; - } - - if (number.length <= 2) { - // only 0x - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - return { - type: Token.NumericLiteral, - value: parseInt(number, 16), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } else if (isOctalDigit(ch)) { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isOctalDigit(ch)) { - break; - } - number += source[index++]; - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch) || isDecimalDigit(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - return { - type: Token.NumericLiteral, - value: parseInt(number, 8), - octal: true, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // decimal number starts with '0' such as '09' is illegal. - if (isDecimalDigit(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += source[index++]; - } - } - - if (ch === '.') { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += source[index++]; - } - } - - if (ch === 'e' || ch === 'E') { - number += source[index++]; - - ch = source[index]; - if (ch === '+' || ch === '-') { - number += source[index++]; - } - - ch = source[index]; - if (isDecimalDigit(ch)) { - number += source[index++]; - while (index < length) { - ch = source[index]; - if (!isDecimalDigit(ch)) { - break; - } - number += source[index++]; - } - } else { - ch = 'character ' + ch; - if (index >= length) { - ch = ''; - } - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - if (index < length) { - ch = source[index]; - if (isIdentifierStart(ch)) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } - - return { - type: Token.NumericLiteral, - value: parseFloat(number), - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - // 7.8.4 String Literals - - function scanStringLiteral() { - var str = '', quote, start, ch, code, unescaped, restore, octal = false; - - quote = source[index]; - assert((quote === '\'' || quote === '"'), - 'String literal must starts with a quote'); - - start = index; - ++index; - - while (index < length) { - ch = source[index++]; - - if (ch === quote) { - quote = ''; - break; - } else if (ch === '\\') { - ch = source[index++]; - if (!isLineTerminator(ch)) { - switch (ch) { - case 'n': - str += '\n'; - break; - case 'r': - str += '\r'; - break; - case 't': - str += '\t'; - break; - case 'u': - case 'x': - restore = index; - unescaped = scanHexEscape(ch); - if (unescaped) { - str += unescaped; - } else { - index = restore; - str += ch; - } - break; - case 'b': - str += '\b'; - break; - case 'f': - str += '\f'; - break; - case 'v': - str += '\v'; - break; - - default: - if (isOctalDigit(ch)) { - code = '01234567'.indexOf(ch); - - // \0 is not octal escape sequence - if (code !== 0) { - octal = true; - } - - if (index < length && isOctalDigit(source[index])) { - octal = true; - code = code * 8 + '01234567'.indexOf(source[index++]); - - // 3 digits are only allowed when string starts - // with 0, 1, 2, 3 - if ('0123'.indexOf(ch) >= 0 && - index < length && - isOctalDigit(source[index])) { - code = code * 8 + '01234567'.indexOf(source[index++]); - } - } - str += String.fromCharCode(code); - } else { - str += ch; - } - break; - } - } else { - ++lineNumber; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - } - } else if (isLineTerminator(ch)) { - break; - } else { - str += ch; - } - } - - if (quote !== '') { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - return { - type: Token.StringLiteral, - value: str, - octal: octal, - lineNumber: lineNumber, - lineStart: lineStart, - range: [start, index] - }; - } - - function scanRegExp() { - var str, ch, start, pattern, flags, value, classMarker = false, restore, terminated = false; - - buffer = null; - skipComment(); - - start = index; - ch = source[index]; - assert(ch === '/', 'Regular expression literal must start with a slash'); - str = source[index++]; - - while (index < length) { - ch = source[index++]; - str += ch; - if (classMarker) { - if (ch === ']') { - classMarker = false; - } - } else { - if (ch === '\\') { - ch = source[index++]; - // ECMA-262 7.8.5 - if (isLineTerminator(ch)) { - throwError({}, Messages.UnterminatedRegExp); - } - str += ch; - } else if (ch === '/') { - terminated = true; - break; - } else if (ch === '[') { - classMarker = true; - } else if (isLineTerminator(ch)) { - throwError({}, Messages.UnterminatedRegExp); - } - } - } - - if (!terminated) { - throwError({}, Messages.UnterminatedRegExp); - } - - // Exclude leading and trailing slash. - pattern = str.substr(1, str.length - 2); - - flags = ''; - while (index < length) { - ch = source[index]; - if (!isIdentifierPart(ch)) { - break; - } - - ++index; - if (ch === '\\' && index < length) { - ch = source[index]; - if (ch === 'u') { - ++index; - restore = index; - ch = scanHexEscape('u'); - if (ch) { - flags += ch; - str += '\\u'; - for (; restore < index; ++restore) { - str += source[restore]; - } - } else { - index = restore; - flags += 'u'; - str += '\\u'; - } - } else { - str += '\\'; - } - } else { - flags += ch; - str += ch; - } - } - - try { - value = new RegExp(pattern, flags); - } catch (e) { - throwError({}, Messages.InvalidRegExp); - } - - return { - literal: str, - value: value, - range: [start, index] - }; - } - - function isIdentifierName(token) { - return token.type === Token.Identifier || - token.type === Token.Keyword || - token.type === Token.BooleanLiteral || - token.type === Token.NullLiteral; - } - - function advance() { - var ch, token; - - skipComment(); - - if (index >= length) { - return { - type: Token.EOF, - lineNumber: lineNumber, - lineStart: lineStart, - range: [index, index] - }; - } - - token = scanPunctuator(); - if (typeof token !== 'undefined') { - return token; - } - - ch = source[index]; - - if (ch === '\'' || ch === '"') { - return scanStringLiteral(); - } - - if (ch === '.' || isDecimalDigit(ch)) { - return scanNumericLiteral(); - } - - token = scanIdentifier(); - if (typeof token !== 'undefined') { - return token; - } - - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - - function lex() { - var token; - - if (buffer) { - index = buffer.range[1]; - lineNumber = buffer.lineNumber; - lineStart = buffer.lineStart; - token = buffer; - buffer = null; - return token; - } - - buffer = null; - return advance(); - } - - function lookahead() { - var pos, line, start; - - if (buffer !== null) { - return buffer; - } - - pos = index; - line = lineNumber; - start = lineStart; - buffer = advance(); - index = pos; - lineNumber = line; - lineStart = start; - - return buffer; - } - - // Return true if there is a line terminator before the next token. - - function peekLineTerminator() { - var pos, line, start, found; - - pos = index; - line = lineNumber; - start = lineStart; - skipComment(); - found = lineNumber !== line; - index = pos; - lineNumber = line; - lineStart = start; - - return found; - } - - // Throw an exception - - function throwError(token, messageFormat) { - var error, - args = Array.prototype.slice.call(arguments, 2), - msg = messageFormat.replace( - /%(\d)/g, - function (whole, index) { - return args[index] || ''; - } - ); - - if (typeof token.lineNumber === 'number') { - error = new Error('Line ' + token.lineNumber + ': ' + msg); - error.index = token.range[0]; - error.lineNumber = token.lineNumber; - error.column = token.range[0] - lineStart + 1; - } else { - error = new Error('Line ' + lineNumber + ': ' + msg); - error.index = index; - error.lineNumber = lineNumber; - error.column = index - lineStart + 1; - } - - throw error; - } - - function throwErrorTolerant() { - try { - throwError.apply(null, arguments); - } catch (e) { - if (extra.errors) { - extra.errors.push(e); - } else { - throw e; - } - } - } - - - // Throw an exception because of the token. - - function throwUnexpected(token) { - if (token.type === Token.EOF) { - throwError(token, Messages.UnexpectedEOS); - } - - if (token.type === Token.NumericLiteral) { - throwError(token, Messages.UnexpectedNumber); - } - - if (token.type === Token.StringLiteral) { - throwError(token, Messages.UnexpectedString); - } - - if (token.type === Token.Identifier) { - throwError(token, Messages.UnexpectedIdentifier); - } - - if (token.type === Token.Keyword) { - if (isFutureReservedWord(token.value)) { - throwError(token, Messages.UnexpectedReserved); - } else if (strict && isStrictModeReservedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictReservedWord); - return; - } - throwError(token, Messages.UnexpectedToken, token.value); - } - - // BooleanLiteral, NullLiteral, or Punctuator. - throwError(token, Messages.UnexpectedToken, token.value); - } - - // Expect the next token to match the specified punctuator. - // If not, an exception will be thrown. - - function expect(value) { - var token = lex(); - if (token.type !== Token.Punctuator || token.value !== value) { - throwUnexpected(token); - } - } - - // Expect the next token to match the specified keyword. - // If not, an exception will be thrown. - - function expectKeyword(keyword) { - var token = lex(); - if (token.type !== Token.Keyword || token.value !== keyword) { - throwUnexpected(token); - } - } - - // Return true if the next token matches the specified punctuator. - - function match(value) { - var token = lookahead(); - return token.type === Token.Punctuator && token.value === value; - } - - // Return true if the next token matches the specified keyword - - function matchKeyword(keyword) { - var token = lookahead(); - return token.type === Token.Keyword && token.value === keyword; - } - - // Return true if the next token is an assignment operator - - function matchAssign() { - var token = lookahead(), - op = token.value; - - if (token.type !== Token.Punctuator) { - return false; - } - return op === '=' || - op === '*=' || - op === '/=' || - op === '%=' || - op === '+=' || - op === '-=' || - op === '<<=' || - op === '>>=' || - op === '>>>=' || - op === '&=' || - op === '^=' || - op === '|='; - } - - function consumeSemicolon() { - var token, line; - - // Catch the very common case first. - if (source[index] === ';') { - lex(); - return; - } - - line = lineNumber; - skipComment(); - if (lineNumber !== line) { - return; - } - - if (match(';')) { - lex(); - return; - } - - token = lookahead(); - if (token.type !== Token.EOF && !match('}')) { - throwUnexpected(token); - } - } - - // Return true if provided expression is LeftHandSideExpression - - function isLeftHandSide(expr) { - return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression; - } - - // 11.1.4 Array Initialiser - - function parseArrayInitialiser() { - var elements = []; - - expect('['); - - while (!match(']')) { - if (match(',')) { - lex(); - elements.push(null); - } else { - elements.push(parseAssignmentExpression()); - - if (!match(']')) { - expect(','); - } - } - } - - expect(']'); - - return { - type: Syntax.ArrayExpression, - elements: elements - }; - } - - // 11.1.5 Object Initialiser - - function parsePropertyFunction(param, first) { - var previousStrict, body; - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (first && strict && isRestrictedWord(param[0].name)) { - throwErrorTolerant(first, Messages.StrictParamName); - } - strict = previousStrict; - - return { - type: Syntax.FunctionExpression, - id: null, - params: param, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }; - } - - function parseObjectPropertyKey() { - var token = lex(); - - // Note: This function is called only from parseObjectProperty(), where - // EOF and Punctuator tokens are already filtered out. - - if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); - } - return createLiteral(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseObjectProperty() { - var token, key, id, param; - - token = lookahead(); - - if (token.type === Token.Identifier) { - - id = parseObjectPropertyKey(); - - // Property Assignment: Getter and Setter. - - if (token.value === 'get' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - expect(')'); - return { - type: Syntax.Property, - key: key, - value: parsePropertyFunction([]), - kind: 'get' - }; - } else if (token.value === 'set' && !match(':')) { - key = parseObjectPropertyKey(); - expect('('); - token = lookahead(); - if (token.type !== Token.Identifier) { - throwUnexpected(lex()); - } - param = [ parseVariableIdentifier() ]; - expect(')'); - return { - type: Syntax.Property, - key: key, - value: parsePropertyFunction(param, token), - kind: 'set' - }; - } else { - expect(':'); - return { - type: Syntax.Property, - key: id, - value: parseAssignmentExpression(), - kind: 'init' - }; - } - } else if (token.type === Token.EOF || token.type === Token.Punctuator) { - throwUnexpected(token); - } else { - key = parseObjectPropertyKey(); - expect(':'); - return { - type: Syntax.Property, - key: key, - value: parseAssignmentExpression(), - kind: 'init' - }; - } - } - - function parseObjectInitialiser() { - var properties = [], property, name, kind, map = {}, toString = String; - - expect('{'); - - while (!match('}')) { - property = parseObjectProperty(); - - if (property.key.type === Syntax.Identifier) { - name = property.key.name; - } else { - name = toString(property.key.value); - } - kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set; - if (Object.prototype.hasOwnProperty.call(map, name)) { - if (map[name] === PropertyKind.Data) { - if (strict && kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.StrictDuplicateProperty); - } else if (kind !== PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } - } else { - if (kind === PropertyKind.Data) { - throwErrorTolerant({}, Messages.AccessorDataProperty); - } else if (map[name] & kind) { - throwErrorTolerant({}, Messages.AccessorGetSet); - } - } - map[name] |= kind; - } else { - map[name] = kind; - } - - properties.push(property); - - if (!match('}')) { - expect(','); - } - } - - expect('}'); - - return { - type: Syntax.ObjectExpression, - properties: properties - }; - } - - // 11.1.6 The Grouping Operator - - function parseGroupExpression() { - var expr; - - expect('('); - - expr = parseExpression(); - - expect(')'); - - return expr; - } - - - // 11.1 Primary Expressions - - function parsePrimaryExpression() { - var token = lookahead(), - type = token.type; - - if (type === Token.Identifier) { - return { - type: Syntax.Identifier, - name: lex().value - }; - } - - if (type === Token.StringLiteral || type === Token.NumericLiteral) { - if (strict && token.octal) { - throwErrorTolerant(token, Messages.StrictOctalLiteral); - } - return createLiteral(lex()); - } - - if (type === Token.Keyword) { - if (matchKeyword('this')) { - lex(); - return { - type: Syntax.ThisExpression - }; - } - - if (matchKeyword('function')) { - return parseFunctionExpression(); - } - } - - if (type === Token.BooleanLiteral) { - lex(); - token.value = (token.value === 'true'); - return createLiteral(token); - } - - if (type === Token.NullLiteral) { - lex(); - token.value = null; - return createLiteral(token); - } - - if (match('[')) { - return parseArrayInitialiser(); - } - - if (match('{')) { - return parseObjectInitialiser(); - } - - if (match('(')) { - return parseGroupExpression(); - } - - if (match('/') || match('/=')) { - return createLiteral(scanRegExp()); - } - - return throwUnexpected(lex()); - } - - // 11.2 Left-Hand-Side Expressions - - function parseArguments() { - var args = []; - - expect('('); - - if (!match(')')) { - while (index < length) { - args.push(parseAssignmentExpression()); - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - return args; - } - - function parseNonComputedProperty() { - var token = lex(); - - if (!isIdentifierName(token)) { - throwUnexpected(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseNonComputedMember() { - expect('.'); - - return parseNonComputedProperty(); - } - - function parseComputedMember() { - var expr; - - expect('['); - - expr = parseExpression(); - - expect(']'); - - return expr; - } - - function parseNewExpression() { - var expr; - - expectKeyword('new'); - - expr = { - type: Syntax.NewExpression, - callee: parseLeftHandSideExpression(), - 'arguments': [] - }; - - if (match('(')) { - expr['arguments'] = parseArguments(); - } - - return expr; - } - - function parseLeftHandSideExpressionAllowCall() { - var expr; - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[') || match('(')) { - if (match('(')) { - expr = { - type: Syntax.CallExpression, - callee: expr, - 'arguments': parseArguments() - }; - } else if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - } - } - - return expr; - } - - - function parseLeftHandSideExpression() { - var expr; - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[')) { - if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - } - } - - return expr; - } - - // 11.3 Postfix Expressions - - function parsePostfixExpression() { - var expr = parseLeftHandSideExpressionAllowCall(), token; - - token = lookahead(); - if (token.type !== Token.Punctuator) { - return expr; - } - - if ((match('++') || match('--')) && !peekLineTerminator()) { - // 11.3.1, 11.3.2 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPostfix); - } - - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - expr = { - type: Syntax.UpdateExpression, - operator: lex().value, - argument: expr, - prefix: false - }; - } - - return expr; - } - - // 11.4 Unary Operators - - function parseUnaryExpression() { - var token, expr; - - token = lookahead(); - if (token.type !== Token.Punctuator && token.type !== Token.Keyword) { - return parsePostfixExpression(); - } - - if (match('++') || match('--')) { - token = lex(); - expr = parseUnaryExpression(); - // 11.4.4, 11.4.5 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant({}, Messages.StrictLHSPrefix); - } - - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - expr = { - type: Syntax.UpdateExpression, - operator: token.value, - argument: expr, - prefix: true - }; - return expr; - } - - if (match('+') || match('-') || match('~') || match('!')) { - expr = { - type: Syntax.UnaryExpression, - operator: lex().value, - argument: parseUnaryExpression() - }; - return expr; - } - - if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) { - expr = { - type: Syntax.UnaryExpression, - operator: lex().value, - argument: parseUnaryExpression() - }; - if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) { - throwErrorTolerant({}, Messages.StrictDelete); - } - return expr; - } - - return parsePostfixExpression(); - } - - // 11.5 Multiplicative Operators - - function parseMultiplicativeExpression() { - var expr = parseUnaryExpression(); - - while (match('*') || match('/') || match('%')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseUnaryExpression() - }; - } - - return expr; - } - - // 11.6 Additive Operators - - function parseAdditiveExpression() { - var expr = parseMultiplicativeExpression(); - - while (match('+') || match('-')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseMultiplicativeExpression() - }; - } - - return expr; - } - - // 11.7 Bitwise Shift Operators - - function parseShiftExpression() { - var expr = parseAdditiveExpression(); - - while (match('<<') || match('>>') || match('>>>')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseAdditiveExpression() - }; - } - - return expr; - } - // 11.8 Relational Operators - - function parseRelationalExpression() { - var expr, previousAllowIn; - - previousAllowIn = state.allowIn; - state.allowIn = true; - - expr = parseShiftExpression(); - - while (match('<') || match('>') || match('<=') || match('>=') || (previousAllowIn && matchKeyword('in')) || matchKeyword('instanceof')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseShiftExpression() - }; - } - - state.allowIn = previousAllowIn; - return expr; - } - - // 11.9 Equality Operators - - function parseEqualityExpression() { - var expr = parseRelationalExpression(); - - while (match('==') || match('!=') || match('===') || match('!==')) { - expr = { - type: Syntax.BinaryExpression, - operator: lex().value, - left: expr, - right: parseRelationalExpression() - }; - } - - return expr; - } - - // 11.10 Binary Bitwise Operators - - function parseBitwiseANDExpression() { - var expr = parseEqualityExpression(); - - while (match('&')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '&', - left: expr, - right: parseEqualityExpression() - }; - } - - return expr; - } - - function parseBitwiseXORExpression() { - var expr = parseBitwiseANDExpression(); - - while (match('^')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '^', - left: expr, - right: parseBitwiseANDExpression() - }; - } - - return expr; - } - - function parseBitwiseORExpression() { - var expr = parseBitwiseXORExpression(); - - while (match('|')) { - lex(); - expr = { - type: Syntax.BinaryExpression, - operator: '|', - left: expr, - right: parseBitwiseXORExpression() - }; - } - - return expr; - } - - // 11.11 Binary Logical Operators - - function parseLogicalANDExpression() { - var expr = parseBitwiseORExpression(); - - while (match('&&')) { - lex(); - expr = { - type: Syntax.LogicalExpression, - operator: '&&', - left: expr, - right: parseBitwiseORExpression() - }; - } - - return expr; - } - - function parseLogicalORExpression() { - var expr = parseLogicalANDExpression(); - - while (match('||')) { - lex(); - expr = { - type: Syntax.LogicalExpression, - operator: '||', - left: expr, - right: parseLogicalANDExpression() - }; - } - - return expr; - } - - // 11.12 Conditional Operator - - function parseConditionalExpression() { - var expr, previousAllowIn, consequent; - - expr = parseLogicalORExpression(); - - if (match('?')) { - lex(); - previousAllowIn = state.allowIn; - state.allowIn = true; - consequent = parseAssignmentExpression(); - state.allowIn = previousAllowIn; - expect(':'); - - expr = { - type: Syntax.ConditionalExpression, - test: expr, - consequent: consequent, - alternate: parseAssignmentExpression() - }; - } - - return expr; - } - - // 11.13 Assignment Operators - - function parseAssignmentExpression() { - var token, expr; - - token = lookahead(); - expr = parseConditionalExpression(); - - if (matchAssign()) { - // LeftHandSideExpression - if (!isLeftHandSide(expr)) { - throwError({}, Messages.InvalidLHSInAssignment); - } - - // 11.13.1 - if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) { - throwErrorTolerant(token, Messages.StrictLHSAssignment); - } - - expr = { - type: Syntax.AssignmentExpression, - operator: lex().value, - left: expr, - right: parseAssignmentExpression() - }; - } - - return expr; - } - - // 11.14 Comma Operator - - function parseExpression() { - var expr = parseAssignmentExpression(); - - if (match(',')) { - expr = { - type: Syntax.SequenceExpression, - expressions: [ expr ] - }; - - while (index < length) { - if (!match(',')) { - break; - } - lex(); - expr.expressions.push(parseAssignmentExpression()); - } - - } - return expr; - } - - // 12.1 Block - - function parseStatementList() { - var list = [], - statement; - - while (index < length) { - if (match('}')) { - break; - } - statement = parseSourceElement(); - if (typeof statement === 'undefined') { - break; - } - list.push(statement); - } - - return list; - } - - function parseBlock() { - var block; - - expect('{'); - - block = parseStatementList(); - - expect('}'); - - return { - type: Syntax.BlockStatement, - body: block - }; - } - - // 12.2 Variable Statement - - function parseVariableIdentifier() { - var token = lex(); - - if (token.type !== Token.Identifier) { - throwUnexpected(token); - } - - return { - type: Syntax.Identifier, - name: token.value - }; - } - - function parseVariableDeclaration(kind) { - var id = parseVariableIdentifier(), - init = null; - - // 12.2.1 - if (strict && isRestrictedWord(id.name)) { - throwErrorTolerant({}, Messages.StrictVarName); - } - - if (kind === 'const') { - expect('='); - init = parseAssignmentExpression(); - } else if (match('=')) { - lex(); - init = parseAssignmentExpression(); - } - - return { - type: Syntax.VariableDeclarator, - id: id, - init: init - }; - } - - function parseVariableDeclarationList(kind) { - var list = []; - - while (index < length) { - list.push(parseVariableDeclaration(kind)); - if (!match(',')) { - break; - } - lex(); - } - - return list; - } - - function parseVariableStatement() { - var declarations; - - expectKeyword('var'); - - declarations = parseVariableDeclarationList(); - - consumeSemicolon(); - - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: 'var' - }; - } - - // kind may be `const` or `let` - // Both are experimental and not in the specification yet. - // see http://wiki.ecmascript.org/doku.php?id=harmony:const - // and http://wiki.ecmascript.org/doku.php?id=harmony:let - function parseConstLetDeclaration(kind) { - var declarations; - - expectKeyword(kind); - - declarations = parseVariableDeclarationList(kind); - - consumeSemicolon(); - - return { - type: Syntax.VariableDeclaration, - declarations: declarations, - kind: kind - }; - } - - // 12.3 Empty Statement - - function parseEmptyStatement() { - expect(';'); - - return { - type: Syntax.EmptyStatement - }; - } - - // 12.4 Expression Statement - - function parseExpressionStatement() { - var expr = parseExpression(); - - consumeSemicolon(); - - return { - type: Syntax.ExpressionStatement, - expression: expr - }; - } - - // 12.5 If statement - - function parseIfStatement() { - var test, consequent, alternate; - - expectKeyword('if'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - consequent = parseStatement(); - - if (matchKeyword('else')) { - lex(); - alternate = parseStatement(); - } else { - alternate = null; - } - - return { - type: Syntax.IfStatement, - test: test, - consequent: consequent, - alternate: alternate - }; - } - - // 12.6 Iteration Statements - - function parseDoWhileStatement() { - var body, test, oldInIteration; - - expectKeyword('do'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - if (match(';')) { - lex(); - } - - return { - type: Syntax.DoWhileStatement, - body: body, - test: test - }; - } - - function parseWhileStatement() { - var test, body, oldInIteration; - - expectKeyword('while'); - - expect('('); - - test = parseExpression(); - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - return { - type: Syntax.WhileStatement, - test: test, - body: body - }; - } - - function parseForVariableDeclaration() { - var token = lex(); - - return { - type: Syntax.VariableDeclaration, - declarations: parseVariableDeclarationList(), - kind: token.value - }; - } - - function parseForStatement() { - var init, test, update, left, right, body, oldInIteration; - - init = test = update = null; - - expectKeyword('for'); - - expect('('); - - if (match(';')) { - lex(); - } else { - if (matchKeyword('var') || matchKeyword('let')) { - state.allowIn = false; - init = parseForVariableDeclaration(); - state.allowIn = true; - - if (init.declarations.length === 1 && matchKeyword('in')) { - lex(); - left = init; - right = parseExpression(); - init = null; - } - } else { - state.allowIn = false; - init = parseExpression(); - state.allowIn = true; - - if (matchKeyword('in')) { - // LeftHandSideExpression - if (!isLeftHandSide(init)) { - throwError({}, Messages.InvalidLHSInForIn); - } - - lex(); - left = init; - right = parseExpression(); - init = null; - } - } - - if (typeof left === 'undefined') { - expect(';'); - } - } - - if (typeof left === 'undefined') { - - if (!match(';')) { - test = parseExpression(); - } - expect(';'); - - if (!match(')')) { - update = parseExpression(); - } - } - - expect(')'); - - oldInIteration = state.inIteration; - state.inIteration = true; - - body = parseStatement(); - - state.inIteration = oldInIteration; - - if (typeof left === 'undefined') { - return { - type: Syntax.ForStatement, - init: init, - test: test, - update: update, - body: body - }; - } - - return { - type: Syntax.ForInStatement, - left: left, - right: right, - body: body, - each: false - }; - } - - // 12.7 The continue statement - - function parseContinueStatement() { - var token, label = null; - - expectKeyword('continue'); - - // Optimize the most common form: 'continue;'. - if (source[index] === ';') { - lex(); - - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: null - }; - } - - if (peekLineTerminator()) { - if (!state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: null - }; - } - - token = lookahead(); - if (token.type === Token.Identifier) { - label = parseVariableIdentifier(); - - if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !state.inIteration) { - throwError({}, Messages.IllegalContinue); - } - - return { - type: Syntax.ContinueStatement, - label: label - }; - } - - // 12.8 The break statement - - function parseBreakStatement() { - var token, label = null; - - expectKeyword('break'); - - // Optimize the most common form: 'break;'. - if (source[index] === ';') { - lex(); - - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: null - }; - } - - if (peekLineTerminator()) { - if (!(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: null - }; - } - - token = lookahead(); - if (token.type === Token.Identifier) { - label = parseVariableIdentifier(); - - if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) { - throwError({}, Messages.UnknownLabel, label.name); - } - } - - consumeSemicolon(); - - if (label === null && !(state.inIteration || state.inSwitch)) { - throwError({}, Messages.IllegalBreak); - } - - return { - type: Syntax.BreakStatement, - label: label - }; - } - - // 12.9 The return statement - - function parseReturnStatement() { - var token, argument = null; - - expectKeyword('return'); - - if (!state.inFunctionBody) { - throwErrorTolerant({}, Messages.IllegalReturn); - } - - // 'return' followed by a space and an identifier is very common. - if (source[index] === ' ') { - if (isIdentifierStart(source[index + 1])) { - argument = parseExpression(); - consumeSemicolon(); - return { - type: Syntax.ReturnStatement, - argument: argument - }; - } - } - - if (peekLineTerminator()) { - return { - type: Syntax.ReturnStatement, - argument: null - }; - } - - if (!match(';')) { - token = lookahead(); - if (!match('}') && token.type !== Token.EOF) { - argument = parseExpression(); - } - } - - consumeSemicolon(); - - return { - type: Syntax.ReturnStatement, - argument: argument - }; - } - - // 12.10 The with statement - - function parseWithStatement() { - var object, body; - - if (strict) { - throwErrorTolerant({}, Messages.StrictModeWith); - } - - expectKeyword('with'); - - expect('('); - - object = parseExpression(); - - expect(')'); - - body = parseStatement(); - - return { - type: Syntax.WithStatement, - object: object, - body: body - }; - } - - // 12.10 The swith statement - - function parseSwitchCase() { - var test, - consequent = [], - statement; - - if (matchKeyword('default')) { - lex(); - test = null; - } else { - expectKeyword('case'); - test = parseExpression(); - } - expect(':'); - - while (index < length) { - if (match('}') || matchKeyword('default') || matchKeyword('case')) { - break; - } - statement = parseStatement(); - if (typeof statement === 'undefined') { - break; - } - consequent.push(statement); - } - - return { - type: Syntax.SwitchCase, - test: test, - consequent: consequent - }; - } - - function parseSwitchStatement() { - var discriminant, cases, clause, oldInSwitch, defaultFound; - - expectKeyword('switch'); - - expect('('); - - discriminant = parseExpression(); - - expect(')'); - - expect('{'); - - if (match('}')) { - lex(); - return { - type: Syntax.SwitchStatement, - discriminant: discriminant - }; - } - - cases = []; - - oldInSwitch = state.inSwitch; - state.inSwitch = true; - defaultFound = false; - - while (index < length) { - if (match('}')) { - break; - } - clause = parseSwitchCase(); - if (clause.test === null) { - if (defaultFound) { - throwError({}, Messages.MultipleDefaultsInSwitch); - } - defaultFound = true; - } - cases.push(clause); - } - - state.inSwitch = oldInSwitch; - - expect('}'); - - return { - type: Syntax.SwitchStatement, - discriminant: discriminant, - cases: cases - }; - } - - // 12.13 The throw statement - - function parseThrowStatement() { - var argument; - - expectKeyword('throw'); - - if (peekLineTerminator()) { - throwError({}, Messages.NewlineAfterThrow); - } - - argument = parseExpression(); - - consumeSemicolon(); - - return { - type: Syntax.ThrowStatement, - argument: argument - }; - } - - // 12.14 The try statement - - function parseCatchClause() { - var param; - - expectKeyword('catch'); - - expect('('); - if (!match(')')) { - param = parseExpression(); - // 12.14.1 - if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) { - throwErrorTolerant({}, Messages.StrictCatchVariable); - } - } - expect(')'); - - return { - type: Syntax.CatchClause, - param: param, - body: parseBlock() - }; - } - - function parseTryStatement() { - var block, handlers = [], finalizer = null; - - expectKeyword('try'); - - block = parseBlock(); - - if (matchKeyword('catch')) { - handlers.push(parseCatchClause()); - } - - if (matchKeyword('finally')) { - lex(); - finalizer = parseBlock(); - } - - if (handlers.length === 0 && !finalizer) { - throwError({}, Messages.NoCatchOrFinally); - } - - return { - type: Syntax.TryStatement, - block: block, - guardedHandlers: [], - handlers: handlers, - finalizer: finalizer - }; - } - - // 12.15 The debugger statement - - function parseDebuggerStatement() { - expectKeyword('debugger'); - - consumeSemicolon(); - - return { - type: Syntax.DebuggerStatement - }; - } - - // 12 Statements - - function parseStatement() { - var token = lookahead(), - expr, - labeledBody; - - if (token.type === Token.EOF) { - throwUnexpected(token); - } - - if (token.type === Token.Punctuator) { - switch (token.value) { - case ';': - return parseEmptyStatement(); - case '{': - return parseBlock(); - case '(': - return parseExpressionStatement(); - default: - break; - } - } - - if (token.type === Token.Keyword) { - switch (token.value) { - case 'break': - return parseBreakStatement(); - case 'continue': - return parseContinueStatement(); - case 'debugger': - return parseDebuggerStatement(); - case 'do': - return parseDoWhileStatement(); - case 'for': - return parseForStatement(); - case 'function': - return parseFunctionDeclaration(); - case 'if': - return parseIfStatement(); - case 'return': - return parseReturnStatement(); - case 'switch': - return parseSwitchStatement(); - case 'throw': - return parseThrowStatement(); - case 'try': - return parseTryStatement(); - case 'var': - return parseVariableStatement(); - case 'while': - return parseWhileStatement(); - case 'with': - return parseWithStatement(); - default: - break; - } - } - - expr = parseExpression(); - - // 12.12 Labelled Statements - if ((expr.type === Syntax.Identifier) && match(':')) { - lex(); - - if (Object.prototype.hasOwnProperty.call(state.labelSet, expr.name)) { - throwError({}, Messages.Redeclaration, 'Label', expr.name); - } - - state.labelSet[expr.name] = true; - labeledBody = parseStatement(); - delete state.labelSet[expr.name]; - - return { - type: Syntax.LabeledStatement, - label: expr, - body: labeledBody - }; - } - - consumeSemicolon(); - - return { - type: Syntax.ExpressionStatement, - expression: expr - }; - } - - // 13 Function Definition - - function parseFunctionSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted, - oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody; - - expect('{'); - - while (index < length) { - token = lookahead(); - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = sliceSource(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - oldLabelSet = state.labelSet; - oldInIteration = state.inIteration; - oldInSwitch = state.inSwitch; - oldInFunctionBody = state.inFunctionBody; - - state.labelSet = {}; - state.inIteration = false; - state.inSwitch = false; - state.inFunctionBody = true; - - while (index < length) { - if (match('}')) { - break; - } - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - - expect('}'); - - state.labelSet = oldLabelSet; - state.inIteration = oldInIteration; - state.inSwitch = oldInSwitch; - state.inFunctionBody = oldInFunctionBody; - - return { - type: Syntax.BlockStatement, - body: sourceElements - }; - } - - function parseFunctionDeclaration() { - var id, param, params = [], body, token, stricted, firstRestricted, message, previousStrict, paramSet; - - expectKeyword('function'); - token = lookahead(); - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead(); - param = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[param.name] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return { - type: Syntax.FunctionDeclaration, - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }; - } - - function parseFunctionExpression() { - var token, id = null, stricted, firstRestricted, message, param, params = [], body, previousStrict, paramSet; - - expectKeyword('function'); - - if (!match('(')) { - token = lookahead(); - id = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - throwErrorTolerant(token, Messages.StrictFunctionName); - } - } else { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictFunctionName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } - } - } - - expect('('); - - if (!match(')')) { - paramSet = {}; - while (index < length) { - token = lookahead(); - param = parseVariableIdentifier(); - if (strict) { - if (isRestrictedWord(token.value)) { - stricted = token; - message = Messages.StrictParamName; - } - if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - stricted = token; - message = Messages.StrictParamDupe; - } - } else if (!firstRestricted) { - if (isRestrictedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictParamName; - } else if (isStrictModeReservedWord(token.value)) { - firstRestricted = token; - message = Messages.StrictReservedWord; - } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) { - firstRestricted = token; - message = Messages.StrictParamDupe; - } - } - params.push(param); - paramSet[param.name] = true; - if (match(')')) { - break; - } - expect(','); - } - } - - expect(')'); - - previousStrict = strict; - body = parseFunctionSourceElements(); - if (strict && firstRestricted) { - throwError(firstRestricted, message); - } - if (strict && stricted) { - throwErrorTolerant(stricted, message); - } - strict = previousStrict; - - return { - type: Syntax.FunctionExpression, - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }; - } - - // 14 Program - - function parseSourceElement() { - var token = lookahead(); - - if (token.type === Token.Keyword) { - switch (token.value) { - case 'const': - case 'let': - return parseConstLetDeclaration(token.value); - case 'function': - return parseFunctionDeclaration(); - default: - return parseStatement(); - } - } - - if (token.type !== Token.EOF) { - return parseStatement(); - } - } - - function parseSourceElements() { - var sourceElement, sourceElements = [], token, directive, firstRestricted; - - while (index < length) { - token = lookahead(); - if (token.type !== Token.StringLiteral) { - break; - } - - sourceElement = parseSourceElement(); - sourceElements.push(sourceElement); - if (sourceElement.expression.type !== Syntax.Literal) { - // this is not directive - break; - } - directive = sliceSource(token.range[0] + 1, token.range[1] - 1); - if (directive === 'use strict') { - strict = true; - if (firstRestricted) { - throwErrorTolerant(firstRestricted, Messages.StrictOctalLiteral); - } - } else { - if (!firstRestricted && token.octal) { - firstRestricted = token; - } - } - } - - while (index < length) { - sourceElement = parseSourceElement(); - if (typeof sourceElement === 'undefined') { - break; - } - sourceElements.push(sourceElement); - } - return sourceElements; - } - - function parseProgram() { - var program; - strict = false; - program = { - type: Syntax.Program, - body: parseSourceElements() - }; - return program; - } - - // The following functions are needed only when the option to preserve - // the comments is active. - - function addComment(type, value, start, end, loc) { - assert(typeof start === 'number', 'Comment must have valid position'); - - // Because the way the actual token is scanned, often the comments - // (if any) are skipped twice during the lexical analysis. - // Thus, we need to skip adding a comment if the comment array already - // handled it. - if (extra.comments.length > 0) { - if (extra.comments[extra.comments.length - 1].range[1] > start) { - return; - } - } - - extra.comments.push({ - type: type, - value: value, - range: [start, end], - loc: loc - }); - } - - function scanComment() { - var comment, ch, loc, start, blockComment, lineComment; - - comment = ''; - blockComment = false; - lineComment = false; - - while (index < length) { - ch = source[index]; - - if (lineComment) { - ch = source[index++]; - if (isLineTerminator(ch)) { - loc.end = { - line: lineNumber, - column: index - lineStart - 1 - }; - lineComment = false; - addComment('Line', comment, start, index - 1, loc); - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - comment = ''; - } else if (index >= length) { - lineComment = false; - comment += ch; - loc.end = { - line: lineNumber, - column: length - lineStart - }; - addComment('Line', comment, start, length, loc); - } else { - comment += ch; - } - } else if (blockComment) { - if (isLineTerminator(ch)) { - if (ch === '\r' && source[index + 1] === '\n') { - ++index; - comment += '\r\n'; - } else { - comment += ch; - } - ++lineNumber; - ++index; - lineStart = index; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - ch = source[index++]; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - comment += ch; - if (ch === '*') { - ch = source[index]; - if (ch === '/') { - comment = comment.substr(0, comment.length - 1); - blockComment = false; - ++index; - loc.end = { - line: lineNumber, - column: index - lineStart - }; - addComment('Block', comment, start, index, loc); - comment = ''; - } - } - } - } else if (ch === '/') { - ch = source[index + 1]; - if (ch === '/') { - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - start = index; - index += 2; - lineComment = true; - if (index >= length) { - loc.end = { - line: lineNumber, - column: index - lineStart - }; - lineComment = false; - addComment('Line', comment, start, index, loc); - } - } else if (ch === '*') { - start = index; - index += 2; - blockComment = true; - loc = { - start: { - line: lineNumber, - column: index - lineStart - 2 - } - }; - if (index >= length) { - throwError({}, Messages.UnexpectedToken, 'ILLEGAL'); - } - } else { - break; - } - } else if (isWhiteSpace(ch)) { - ++index; - } else if (isLineTerminator(ch)) { - ++index; - if (ch === '\r' && source[index] === '\n') { - ++index; - } - ++lineNumber; - lineStart = index; - } else { - break; - } - } - } - - function filterCommentLocation() { - var i, entry, comment, comments = []; - - for (i = 0; i < extra.comments.length; ++i) { - entry = extra.comments[i]; - comment = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - comment.range = entry.range; - } - if (extra.loc) { - comment.loc = entry.loc; - } - comments.push(comment); - } - - extra.comments = comments; - } - - function collectToken() { - var start, loc, token, range, value; - - skipComment(); - start = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - token = extra.advance(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - if (token.type !== Token.EOF) { - range = [token.range[0], token.range[1]]; - value = sliceSource(token.range[0], token.range[1]); - extra.tokens.push({ - type: TokenName[token.type], - value: value, - range: range, - loc: loc - }); - } - - return token; - } - - function collectRegex() { - var pos, loc, regex, token; - - skipComment(); - - pos = index; - loc = { - start: { - line: lineNumber, - column: index - lineStart - } - }; - - regex = extra.scanRegExp(); - loc.end = { - line: lineNumber, - column: index - lineStart - }; - - // Pop the previous token, which is likely '/' or '/=' - if (extra.tokens.length > 0) { - token = extra.tokens[extra.tokens.length - 1]; - if (token.range[0] === pos && token.type === 'Punctuator') { - if (token.value === '/' || token.value === '/=') { - extra.tokens.pop(); - } - } - } - - extra.tokens.push({ - type: 'RegularExpression', - value: regex.literal, - range: [pos, index], - loc: loc - }); - - return regex; - } - - function filterTokenLocation() { - var i, entry, token, tokens = []; - - for (i = 0; i < extra.tokens.length; ++i) { - entry = extra.tokens[i]; - token = { - type: entry.type, - value: entry.value - }; - if (extra.range) { - token.range = entry.range; - } - if (extra.loc) { - token.loc = entry.loc; - } - tokens.push(token); - } - - extra.tokens = tokens; - } - - function createLiteral(token) { - return { - type: Syntax.Literal, - value: token.value - }; - } - - function createRawLiteral(token) { - return { - type: Syntax.Literal, - value: token.value, - raw: sliceSource(token.range[0], token.range[1]) - }; - } - - function createLocationMarker() { - var marker = {}; - - marker.range = [index, index]; - marker.loc = { - start: { - line: lineNumber, - column: index - lineStart - }, - end: { - line: lineNumber, - column: index - lineStart - } - }; - - marker.end = function () { - this.range[1] = index; - this.loc.end.line = lineNumber; - this.loc.end.column = index - lineStart; - }; - - marker.applyGroup = function (node) { - if (extra.range) { - node.groupRange = [this.range[0], this.range[1]]; - } - if (extra.loc) { - node.groupLoc = { - start: { - line: this.loc.start.line, - column: this.loc.start.column - }, - end: { - line: this.loc.end.line, - column: this.loc.end.column - } - }; - } - }; - - marker.apply = function (node) { - if (extra.range) { - node.range = [this.range[0], this.range[1]]; - } - if (extra.loc) { - node.loc = { - start: { - line: this.loc.start.line, - column: this.loc.start.column - }, - end: { - line: this.loc.end.line, - column: this.loc.end.column - } - }; - } - }; - - return marker; - } - - function trackGroupExpression() { - var marker, expr; - - skipComment(); - marker = createLocationMarker(); - expect('('); - - expr = parseExpression(); - - expect(')'); - - marker.end(); - marker.applyGroup(expr); - - return expr; - } - - function trackLeftHandSideExpression() { - var marker, expr; - - skipComment(); - marker = createLocationMarker(); - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[')) { - if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - marker.end(); - marker.apply(expr); - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - marker.end(); - marker.apply(expr); - } - } - - return expr; - } - - function trackLeftHandSideExpressionAllowCall() { - var marker, expr; - - skipComment(); - marker = createLocationMarker(); - - expr = matchKeyword('new') ? parseNewExpression() : parsePrimaryExpression(); - - while (match('.') || match('[') || match('(')) { - if (match('(')) { - expr = { - type: Syntax.CallExpression, - callee: expr, - 'arguments': parseArguments() - }; - marker.end(); - marker.apply(expr); - } else if (match('[')) { - expr = { - type: Syntax.MemberExpression, - computed: true, - object: expr, - property: parseComputedMember() - }; - marker.end(); - marker.apply(expr); - } else { - expr = { - type: Syntax.MemberExpression, - computed: false, - object: expr, - property: parseNonComputedMember() - }; - marker.end(); - marker.apply(expr); - } - } - - return expr; - } - - function filterGroup(node) { - var n, i, entry; - - n = (Object.prototype.toString.apply(node) === '[object Array]') ? [] : {}; - for (i in node) { - if (node.hasOwnProperty(i) && i !== 'groupRange' && i !== 'groupLoc') { - entry = node[i]; - if (entry === null || typeof entry !== 'object' || entry instanceof RegExp) { - n[i] = entry; - } else { - n[i] = filterGroup(entry); - } - } - } - return n; - } - - function wrapTrackingFunction(range, loc) { - - return function (parseFunction) { - - function isBinary(node) { - return node.type === Syntax.LogicalExpression || - node.type === Syntax.BinaryExpression; - } - - function visit(node) { - var start, end; - - if (isBinary(node.left)) { - visit(node.left); - } - if (isBinary(node.right)) { - visit(node.right); - } - - if (range) { - if (node.left.groupRange || node.right.groupRange) { - start = node.left.groupRange ? node.left.groupRange[0] : node.left.range[0]; - end = node.right.groupRange ? node.right.groupRange[1] : node.right.range[1]; - node.range = [start, end]; - } else if (typeof node.range === 'undefined') { - start = node.left.range[0]; - end = node.right.range[1]; - node.range = [start, end]; - } - } - if (loc) { - if (node.left.groupLoc || node.right.groupLoc) { - start = node.left.groupLoc ? node.left.groupLoc.start : node.left.loc.start; - end = node.right.groupLoc ? node.right.groupLoc.end : node.right.loc.end; - node.loc = { - start: start, - end: end - }; - } else if (typeof node.loc === 'undefined') { - node.loc = { - start: node.left.loc.start, - end: node.right.loc.end - }; - } - } - } - - return function () { - var marker, node; - - skipComment(); - - marker = createLocationMarker(); - node = parseFunction.apply(null, arguments); - marker.end(); - - if (range && typeof node.range === 'undefined') { - marker.apply(node); - } - - if (loc && typeof node.loc === 'undefined') { - marker.apply(node); - } - - if (isBinary(node)) { - visit(node); - } - - return node; - }; - }; - } - - function patch() { - - var wrapTracking; - - if (extra.comments) { - extra.skipComment = skipComment; - skipComment = scanComment; - } - - if (extra.raw) { - extra.createLiteral = createLiteral; - createLiteral = createRawLiteral; - } - - if (extra.range || extra.loc) { - - extra.parseGroupExpression = parseGroupExpression; - extra.parseLeftHandSideExpression = parseLeftHandSideExpression; - extra.parseLeftHandSideExpressionAllowCall = parseLeftHandSideExpressionAllowCall; - parseGroupExpression = trackGroupExpression; - parseLeftHandSideExpression = trackLeftHandSideExpression; - parseLeftHandSideExpressionAllowCall = trackLeftHandSideExpressionAllowCall; - - wrapTracking = wrapTrackingFunction(extra.range, extra.loc); - - extra.parseAdditiveExpression = parseAdditiveExpression; - extra.parseAssignmentExpression = parseAssignmentExpression; - extra.parseBitwiseANDExpression = parseBitwiseANDExpression; - extra.parseBitwiseORExpression = parseBitwiseORExpression; - extra.parseBitwiseXORExpression = parseBitwiseXORExpression; - extra.parseBlock = parseBlock; - extra.parseFunctionSourceElements = parseFunctionSourceElements; - extra.parseCatchClause = parseCatchClause; - extra.parseComputedMember = parseComputedMember; - extra.parseConditionalExpression = parseConditionalExpression; - extra.parseConstLetDeclaration = parseConstLetDeclaration; - extra.parseEqualityExpression = parseEqualityExpression; - extra.parseExpression = parseExpression; - extra.parseForVariableDeclaration = parseForVariableDeclaration; - extra.parseFunctionDeclaration = parseFunctionDeclaration; - extra.parseFunctionExpression = parseFunctionExpression; - extra.parseLogicalANDExpression = parseLogicalANDExpression; - extra.parseLogicalORExpression = parseLogicalORExpression; - extra.parseMultiplicativeExpression = parseMultiplicativeExpression; - extra.parseNewExpression = parseNewExpression; - extra.parseNonComputedProperty = parseNonComputedProperty; - extra.parseObjectProperty = parseObjectProperty; - extra.parseObjectPropertyKey = parseObjectPropertyKey; - extra.parsePostfixExpression = parsePostfixExpression; - extra.parsePrimaryExpression = parsePrimaryExpression; - extra.parseProgram = parseProgram; - extra.parsePropertyFunction = parsePropertyFunction; - extra.parseRelationalExpression = parseRelationalExpression; - extra.parseStatement = parseStatement; - extra.parseShiftExpression = parseShiftExpression; - extra.parseSwitchCase = parseSwitchCase; - extra.parseUnaryExpression = parseUnaryExpression; - extra.parseVariableDeclaration = parseVariableDeclaration; - extra.parseVariableIdentifier = parseVariableIdentifier; - - parseAdditiveExpression = wrapTracking(extra.parseAdditiveExpression); - parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression); - parseBitwiseANDExpression = wrapTracking(extra.parseBitwiseANDExpression); - parseBitwiseORExpression = wrapTracking(extra.parseBitwiseORExpression); - parseBitwiseXORExpression = wrapTracking(extra.parseBitwiseXORExpression); - parseBlock = wrapTracking(extra.parseBlock); - parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements); - parseCatchClause = wrapTracking(extra.parseCatchClause); - parseComputedMember = wrapTracking(extra.parseComputedMember); - parseConditionalExpression = wrapTracking(extra.parseConditionalExpression); - parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration); - parseEqualityExpression = wrapTracking(extra.parseEqualityExpression); - parseExpression = wrapTracking(extra.parseExpression); - parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration); - parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration); - parseFunctionExpression = wrapTracking(extra.parseFunctionExpression); - parseLeftHandSideExpression = wrapTracking(parseLeftHandSideExpression); - parseLogicalANDExpression = wrapTracking(extra.parseLogicalANDExpression); - parseLogicalORExpression = wrapTracking(extra.parseLogicalORExpression); - parseMultiplicativeExpression = wrapTracking(extra.parseMultiplicativeExpression); - parseNewExpression = wrapTracking(extra.parseNewExpression); - parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty); - parseObjectProperty = wrapTracking(extra.parseObjectProperty); - parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey); - parsePostfixExpression = wrapTracking(extra.parsePostfixExpression); - parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression); - parseProgram = wrapTracking(extra.parseProgram); - parsePropertyFunction = wrapTracking(extra.parsePropertyFunction); - parseRelationalExpression = wrapTracking(extra.parseRelationalExpression); - parseStatement = wrapTracking(extra.parseStatement); - parseShiftExpression = wrapTracking(extra.parseShiftExpression); - parseSwitchCase = wrapTracking(extra.parseSwitchCase); - parseUnaryExpression = wrapTracking(extra.parseUnaryExpression); - parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration); - parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier); - } - - if (typeof extra.tokens !== 'undefined') { - extra.advance = advance; - extra.scanRegExp = scanRegExp; - - advance = collectToken; - scanRegExp = collectRegex; - } - } - - function unpatch() { - if (typeof extra.skipComment === 'function') { - skipComment = extra.skipComment; - } - - if (extra.raw) { - createLiteral = extra.createLiteral; - } - - if (extra.range || extra.loc) { - parseAdditiveExpression = extra.parseAdditiveExpression; - parseAssignmentExpression = extra.parseAssignmentExpression; - parseBitwiseANDExpression = extra.parseBitwiseANDExpression; - parseBitwiseORExpression = extra.parseBitwiseORExpression; - parseBitwiseXORExpression = extra.parseBitwiseXORExpression; - parseBlock = extra.parseBlock; - parseFunctionSourceElements = extra.parseFunctionSourceElements; - parseCatchClause = extra.parseCatchClause; - parseComputedMember = extra.parseComputedMember; - parseConditionalExpression = extra.parseConditionalExpression; - parseConstLetDeclaration = extra.parseConstLetDeclaration; - parseEqualityExpression = extra.parseEqualityExpression; - parseExpression = extra.parseExpression; - parseForVariableDeclaration = extra.parseForVariableDeclaration; - parseFunctionDeclaration = extra.parseFunctionDeclaration; - parseFunctionExpression = extra.parseFunctionExpression; - parseGroupExpression = extra.parseGroupExpression; - parseLeftHandSideExpression = extra.parseLeftHandSideExpression; - parseLeftHandSideExpressionAllowCall = extra.parseLeftHandSideExpressionAllowCall; - parseLogicalANDExpression = extra.parseLogicalANDExpression; - parseLogicalORExpression = extra.parseLogicalORExpression; - parseMultiplicativeExpression = extra.parseMultiplicativeExpression; - parseNewExpression = extra.parseNewExpression; - parseNonComputedProperty = extra.parseNonComputedProperty; - parseObjectProperty = extra.parseObjectProperty; - parseObjectPropertyKey = extra.parseObjectPropertyKey; - parsePrimaryExpression = extra.parsePrimaryExpression; - parsePostfixExpression = extra.parsePostfixExpression; - parseProgram = extra.parseProgram; - parsePropertyFunction = extra.parsePropertyFunction; - parseRelationalExpression = extra.parseRelationalExpression; - parseStatement = extra.parseStatement; - parseShiftExpression = extra.parseShiftExpression; - parseSwitchCase = extra.parseSwitchCase; - parseUnaryExpression = extra.parseUnaryExpression; - parseVariableDeclaration = extra.parseVariableDeclaration; - parseVariableIdentifier = extra.parseVariableIdentifier; - } - - if (typeof extra.scanRegExp === 'function') { - advance = extra.advance; - scanRegExp = extra.scanRegExp; - } - } - - function stringToArray(str) { - var length = str.length, - result = [], - i; - for (i = 0; i < length; ++i) { - result[i] = str.charAt(i); - } - return result; - } - - function parse(code, options) { - var program, toString; - - toString = String; - if (typeof code !== 'string' && !(code instanceof String)) { - code = toString(code); - } - - source = code; - index = 0; - lineNumber = (source.length > 0) ? 1 : 0; - lineStart = 0; - length = source.length; - buffer = null; - state = { - allowIn: true, - labelSet: {}, - inFunctionBody: false, - inIteration: false, - inSwitch: false - }; - - extra = {}; - if (typeof options !== 'undefined') { - extra.range = (typeof options.range === 'boolean') && options.range; - extra.loc = (typeof options.loc === 'boolean') && options.loc; - extra.raw = (typeof options.raw === 'boolean') && options.raw; - if (typeof options.tokens === 'boolean' && options.tokens) { - extra.tokens = []; - } - if (typeof options.comment === 'boolean' && options.comment) { - extra.comments = []; - } - if (typeof options.tolerant === 'boolean' && options.tolerant) { - extra.errors = []; - } - } - - if (length > 0) { - if (typeof source[0] === 'undefined') { - // Try first to convert to a string. This is good as fast path - // for old IE which understands string indexing for string - // literals only and not for string object. - if (code instanceof String) { - source = code.valueOf(); - } - - // Force accessing the characters via an array. - if (typeof source[0] === 'undefined') { - source = stringToArray(code); - } - } - } - - patch(); - try { - program = parseProgram(); - if (typeof extra.comments !== 'undefined') { - filterCommentLocation(); - program.comments = extra.comments; - } - if (typeof extra.tokens !== 'undefined') { - filterTokenLocation(); - program.tokens = extra.tokens; - } - if (typeof extra.errors !== 'undefined') { - program.errors = extra.errors; - } - if (extra.range || extra.loc) { - program.body = filterGroup(program.body); - } - } catch (e) { - throw e; - } finally { - unpatch(); - extra = {}; - } - - return program; - } - - // Sync with package.json. - exports.version = '1.0.2'; - - exports.parse = parse; - - // Deep copy. - exports.Syntax = (function () { - var name, types = {}; - - if (typeof Object.create === 'function') { - types = Object.create(null); - } - - for (name in Syntax) { - if (Syntax.hasOwnProperty(name)) { - types[name] = Syntax[name]; - } - } - - if (typeof Object.freeze === 'function') { - Object.freeze(types); - } - - return types; - }()); - -})); -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js deleted file mode 100644 index f144955..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/detectnestedternary.js +++ /dev/null @@ -1,106 +0,0 @@ -// Usage: node detectnestedternary.js /path/to/some/directory -// For more details, please read http://esprima.org/doc/#nestedternary - -/*jslint node:true sloppy:true plusplus:true */ - -var fs = require('fs'), - esprima = require('../esprima'), - dirname = process.argv[2]; - - -// Executes visitor on the object and its children (recursively). -function traverse(object, visitor) { - var key, child; - - visitor.call(null, object); - for (key in object) { - if (object.hasOwnProperty(key)) { - child = object[key]; - if (typeof child === 'object' && child !== null) { - traverse(child, visitor); - } - } - } -} - -// http://stackoverflow.com/q/5827612/ -function walk(dir, done) { - var results = []; - fs.readdir(dir, function (err, list) { - if (err) { - return done(err); - } - var i = 0; - (function next() { - var file = list[i++]; - if (!file) { - return done(null, results); - } - file = dir + '/' + file; - fs.stat(file, function (err, stat) { - if (stat && stat.isDirectory()) { - walk(file, function (err, res) { - results = results.concat(res); - next(); - }); - } else { - results.push(file); - next(); - } - }); - }()); - }); -} - -walk(dirname, function (err, results) { - if (err) { - console.log('Error', err); - return; - } - - results.forEach(function (filename) { - var shortname, first, content, syntax; - - shortname = filename; - first = true; - - if (shortname.substr(0, dirname.length) === dirname) { - shortname = shortname.substr(dirname.length + 1, shortname.length); - } - - function report(node, problem) { - if (first === true) { - console.log(shortname + ': '); - first = false; - } - console.log(' Line', node.loc.start.line, ':', problem); - } - - function checkConditional(node) { - var condition; - - if (node.consequent.type === 'ConditionalExpression' || - node.alternate.type === 'ConditionalExpression') { - - condition = content.substring(node.test.range[0], node.test.range[1]); - if (condition.length > 20) { - condition = condition.substring(0, 20) + '...'; - } - condition = '"' + condition + '"'; - report(node, 'Nested ternary for ' + condition); - } - } - - try { - content = fs.readFileSync(filename, 'utf-8'); - syntax = esprima.parse(content, { tolerant: true, loc: true, range: true }); - traverse(syntax, function (node) { - if (node.type === 'ConditionalExpression') { - checkConditional(node); - } - }); - } catch (e) { - } - - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js deleted file mode 100644 index dc6d1d9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/findbooleantrap.js +++ /dev/null @@ -1,173 +0,0 @@ -// Usage: node findbooleantrap.js /path/to/some/directory -// For more details, please read http://esprima.org/doc/#booleantrap. - -/*jslint node:true sloppy:true plusplus:true */ - -var fs = require('fs'), - esprima = require('../esprima'), - dirname = process.argv[2], - doubleNegativeList = []; - - -// Black-list of terms with double-negative meaning. -doubleNegativeList = [ - 'hidden', - 'caseinsensitive', - 'disabled' -]; - - -// Executes visitor on the object and its children (recursively). -function traverse(object, visitor) { - var key, child; - - if (visitor.call(null, object) === false) { - return; - } - for (key in object) { - if (object.hasOwnProperty(key)) { - child = object[key]; - if (typeof child === 'object' && child !== null) { - traverse(child, visitor); - } - } - } -} - -// http://stackoverflow.com/q/5827612/ -function walk(dir, done) { - var results = []; - fs.readdir(dir, function (err, list) { - if (err) { - return done(err); - } - var i = 0; - (function next() { - var file = list[i++]; - if (!file) { - return done(null, results); - } - file = dir + '/' + file; - fs.stat(file, function (err, stat) { - if (stat && stat.isDirectory()) { - walk(file, function (err, res) { - results = results.concat(res); - next(); - }); - } else { - results.push(file); - next(); - } - }); - }()); - }); -} - -walk(dirname, function (err, results) { - if (err) { - console.log('Error', err); - return; - } - - results.forEach(function (filename) { - var shortname, first, content, syntax; - - shortname = filename; - first = true; - - if (shortname.substr(0, dirname.length) === dirname) { - shortname = shortname.substr(dirname.length + 1, shortname.length); - } - - function getFunctionName(node) { - if (node.callee.type === 'Identifier') { - return node.callee.name; - } - if (node.callee.type === 'MemberExpression') { - return node.callee.property.name; - } - } - - function report(node, problem) { - if (first === true) { - console.log(shortname + ': '); - first = false; - } - console.log(' Line', node.loc.start.line, 'in function', - getFunctionName(node) + ':', problem); - } - - function checkSingleArgument(node) { - var args = node['arguments'], - functionName = getFunctionName(node); - - if ((args.length !== 1) || (typeof args[0].value !== 'boolean')) { - return; - } - - // Check if the method is a setter, i.e. starts with 'set', - // e.g. 'setEnabled(false)'. - if (functionName.substr(0, 3) !== 'set') { - report(node, 'Boolean literal with a non-setter function'); - } - - // Does it contain a term with double-negative meaning? - doubleNegativeList.forEach(function (term) { - if (functionName.toLowerCase().indexOf(term.toLowerCase()) >= 0) { - report(node, 'Boolean literal with confusing double-negative'); - } - }); - } - - function checkMultipleArguments(node) { - var args = node['arguments'], - literalCount = 0; - - args.forEach(function (arg) { - if (typeof arg.value === 'boolean') { - literalCount++; - } - }); - - // At least two arguments must be Boolean literals. - if (literalCount >= 2) { - - // Check for two different Boolean literals in one call. - if (literalCount === 2 && args.length === 2) { - if (args[0].value !== args[1].value) { - report(node, 'Confusing true vs false'); - return; - } - } - - report(node, 'Multiple Boolean literals'); - } - } - - function checkLastArgument(node) { - var args = node['arguments']; - - if (args.length < 2) { - return; - } - - if (typeof args[args.length - 1].value === 'boolean') { - report(node, 'Ambiguous Boolean literal as the last argument'); - } - } - - try { - content = fs.readFileSync(filename, 'utf-8'); - syntax = esprima.parse(content, { tolerant: true, loc: true }); - traverse(syntax, function (node) { - if (node.type === 'CallExpression') { - checkSingleArgument(node); - checkLastArgument(node); - checkMultipleArguments(node); - } - }); - } catch (e) { - } - - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js deleted file mode 100644 index bdd7761..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/examples/tokendist.js +++ /dev/null @@ -1,33 +0,0 @@ -/*jslint node:true */ -var fs = require('fs'), - esprima = require('../esprima'), - files = process.argv.splice(2), - histogram, - type; - -histogram = { - Boolean: 0, - Identifier: 0, - Keyword: 0, - Null: 0, - Numeric: 0, - Punctuator: 0, - RegularExpression: 0, - String: 0 -}; - -files.forEach(function (filename) { - 'use strict'; - var content = fs.readFileSync(filename, 'utf-8'), - tokens = esprima.parse(content, { tokens: true }).tokens; - - tokens.forEach(function (token) { - histogram[token.type] += 1; - }); -}); - -for (type in histogram) { - if (histogram.hasOwnProperty(type)) { - console.log(type, histogram[type]); - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html deleted file mode 100644 index a78e83e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/index.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - -Esprima - - - -
      - - - -

      Esprima ECMAScript parsing infrastructure for multipurpose analysis

      - -
      -

      Esprima is a high performance, standard-compliant -ECMAScript parser -written in ECMAScript (also popularly known as -JavaScript).

      - -

      Esprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as -Rhino and Node.js.

      - -

      Features

      - -
        -
      • Full support for ECMAScript 5.1 (ECMA-262)
      • -
      • Sensible syntax tree format, compatible with Mozilla -Parser AST
      • -
      • Heavily tested (> 550 unit tests with solid 100% statement coverage)
      • -
      • Optional tracking of syntax node location (index-based and line-column)
      • -
      • Experimental support for ES6/Harmony (module, class, destructuring, ...)
      • -
      - -

      Esprima is blazing fast (see the benchmark suite). -It is up to 3x faster than UglifyJS v1 and it is still -competitive with the new generation of fast parsers.

      - -

      Applications

      - -Esprima serves as the basis for many popular JavaScript development tools: - - - -

      Feedback is welcomed! Please join the discussion in the mailing list.

      - -
      - - - -
      - - -
      -Fork me on GitHub - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json deleted file mode 100644 index 40f3021..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "esprima", - "description": "ECMAScript parsing infrastructure for multipurpose analysis", - "homepage": "http://esprima.org", - "main": "esprima.js", - "bin": { - "esparse": "./bin/esparse.js", - "esvalidate": "./bin/esvalidate.js" - }, - "version": "1.0.2", - "engines": { - "node": ">=0.4.0" - }, - "maintainers": [ - { - "name": "Ariya Hidayat", - "email": "ariya.hidayat@gmail.com", - "url": "http://ariya.ofilabs.com" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/ariya/esprima.git" - }, - "licenses": [ - { - "type": "BSD", - "url": "http://github.com/ariya/esprima/raw/master/LICENSE.BSD" - } - ], - "scripts": { - "test": "node test/run.js", - "benchmark": "node test/benchmarks.js", - "benchmark-quick": "node test/benchmarks.js quick" - }, - "readme": "**Esprima** ([esprima.org](http://esprima.org)) is a high performance,\nstandard-compliant [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)\nparser written in ECMAScript (also popularly known as\n[JavaScript](http://en.wikipedia.org/wiki/JavaScript>JavaScript)).\nEsprima is created and maintained by [Ariya Hidayat](http://twitter.com/ariyahidayat),\nwith the help of [many contributors](https://github.com/ariya/esprima/contributors).\n\nEsprima runs on web browsers (IE 6+, Firefox 1+, Safari 3+, Chrome 1+, Konqueror 4.6+, Opera 8+) as well as\n[Node.js](http://nodejs.org).\n\n### Features\n\n- Full support for [ECMAScript 5.1](http://www.ecma-international.org/publications/standards/Ecma-262.htm)(ECMA-262)\n- Sensible [syntax tree format](http://esprima.org/doc/index.html#ast) compatible with Mozilla\n[Parser AST](https://developer.mozilla.org/en/SpiderMonkey/Parser_API)\n- Heavily tested (> 550 [unit tests](http://esprima.org/test/) with solid 100% statement coverage)\n- Optional tracking of syntax node location (index-based and line-column)\n- Experimental support for ES6/Harmony (module, class, destructuring, ...)\n\nEsprima is blazing fast (see the [benchmark suite](http://esprima.org/test/benchmarks.html)).\nIt is up to 3x faster than UglifyJS v1 and it is still [competitive](http://esprima.org/test/compare.html)\nwith the new generation of fast parsers.\n\n### Applications\n\nEsprima serves as the basis for many popular JavaScript development tools:\n\n- Code coverage analysis: [node-cover](https://github.com/itay/node-cover), [Istanbul](https://github.com/yahoo/Istanbul)\n- Documentation tool: [JFDoc](https://github.com/thejohnfreeman/jfdoc), [JSDuck](https://github.com/senchalabs/jsduck)\n- Language extension: [LLJS](http://mbebenita.github.com/LLJS/) (low-level JS),\n[Sweet.js](http://sweetjs.org/) (macro)\n- ES6/Harmony transpiler: [Six](https://github.com/matthewrobb/six), [Harmonizr](https://github.com/jdiamond/harmonizr)\n- Eclipse Orion smart editing ([outline view](https://github.com/aclement/esprima-outline), [content assist](http://contraptionsforprogramming.blogspot.com/2012/02/better-javascript-content-assist-in.html))\n- Source code modification: [Esmorph](https://github.com/ariya/esmorph), [Code Painter](https://github.com/fawek/codepainter),\n- Source transformation: [node-falafel](https://github.com/substack/node-falafel), [Esmangle](https://github.com/Constellation/esmangle), [escodegen](https://github.com/Constellation/escodegen)\n\n### Questions?\n- [Documentation](http://esprima.org/doc)\n- [Issue tracker](http://issues.esprima.org): [known problems](http://code.google.com/p/esprima/issues/list?q=Defect)\nand [future plans](http://code.google.com/p/esprima/issues/list?q=Enhancement)\n- [Mailing list](http://groups.google.com/group/esprima)\n- [Contribution guide](http://esprima.org/doc/index.html#contribution)\n\nFollow [@Esprima](http://twitter.com/Esprima) on Twitter to get the\ndevelopment updates.\nFeedback and contribution are welcomed!\n\n### License\n\nCopyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about)\n and other contributors.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY\nDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ariya/esprima/issues" - }, - "_id": "esprima@1.0.2", - "_from": "esprima@1.0.2" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html deleted file mode 100644 index 0187497..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - -Esprima: Benchmarks - - - - - - - - - - -
      - - - -

      Benchmarks show the speed

      - -

      Time measurement is carried out using Benchmark.js.

      - -

      Esprima version .

      - -

      Please wait...

      - -

      - - -

      - -

      - -

      Note: On a modern machine and up-to-date web browsers, -running full benchmarks suite takes around 1 minute.
      -For the quick benchmarks, the running time is only about 15 seconds.

      - - -
      - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js deleted file mode 100644 index 788b140..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/benchmarks.js +++ /dev/null @@ -1,334 +0,0 @@ -/* - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/*jslint browser: true node: true */ -/*global load:true, print:true */ -var setupBenchmarks, - fixture; - -fixture = [ - 'jQuery 1.7.1', - 'jQuery 1.6.4', - 'jQuery.Mobile 1.0', - 'Prototype 1.7.0.0', - 'Prototype 1.6.1', - 'Ext Core 3.1.0', - 'Ext Core 3.0.0', - 'MooTools 1.4.1', - 'MooTools 1.3.2', - 'Backbone 0.5.3', - 'Underscore 1.2.3' -]; - -function slug(name) { - 'use strict'; - return name.toLowerCase().replace(/\s/g, '-'); -} - -function kb(bytes) { - 'use strict'; - return (bytes / 1024).toFixed(1); -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - setupBenchmarks = function () { - 'use strict'; - - function id(i) { - return document.getElementById(i); - } - - function setText(id, str) { - var el = document.getElementById(id); - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function enableRunButtons() { - id('runquick').disabled = false; - id('runfull').disabled = false; - } - - function disableRunButtons() { - id('runquick').disabled = true; - id('runfull').disabled = true; - } - - function createTable() { - var str = '', - index, - test, - name; - - str += ''; - str += ''; - str += ''; - str += ''; - for (index = 0; index < fixture.length; index += 1) { - test = fixture[index]; - name = slug(test); - str += ''; - str += ''; - str += ''; - str += ''; - str += ''; - str += ''; - } - str += ''; - str += ''; - str += ''; - str += ''; - str += ''; - str += '
      SourceSize (KiB)Time (ms)Variance
      ' + test + '
      Total
      '; - - id('result').innerHTML = str; - } - - function loadTests() { - - var index = 0, - totalSize = 0; - - function load(test, callback) { - var xhr = new XMLHttpRequest(), - src = '3rdparty/' + test + '.js'; - - window.data = window.data || {}; - window.data[test] = ''; - - try { - xhr.timeout = 30000; - xhr.open('GET', src, true); - - xhr.ontimeout = function () { - setText('status', 'Error: time out while loading ' + test); - callback.apply(); - }; - - xhr.onreadystatechange = function () { - var success = false, - size = 0; - - if (this.readyState === XMLHttpRequest.DONE) { - if (this.status === 200) { - window.data[test] = this.responseText; - size = this.responseText.length; - totalSize += size; - success = true; - } - } - - if (success) { - setText(test + '-size', kb(size)); - } else { - setText('status', 'Please wait. Error loading ' + src); - setText(test + '-size', 'Error'); - } - - callback.apply(); - }; - - xhr.send(null); - } catch (e) { - setText('status', 'Please wait. Error loading ' + src); - callback.apply(); - } - } - - function loadNextTest() { - var test; - - if (index < fixture.length) { - test = fixture[index]; - index += 1; - setText('status', 'Please wait. Loading ' + test + - ' (' + index + ' of ' + fixture.length + ')'); - window.setTimeout(function () { - load(slug(test), loadNextTest); - }, 100); - } else { - setText('total-size', kb(totalSize)); - setText('status', 'Ready.'); - enableRunButtons(); - } - } - - loadNextTest(); - } - - function runBenchmarks(suite) { - - var index = 0, - totalTime = 0; - - function reset() { - var i, name; - for (i = 0; i < fixture.length; i += 1) { - name = slug(fixture[i]); - setText(name + '-time', ''); - setText(name + '-variance', ''); - } - setText('total-time', ''); - } - - function run() { - var el, test, source, benchmark; - - if (index >= suite.length) { - setText('total-time', (1000 * totalTime).toFixed(1)); - setText('status', 'Ready.'); - enableRunButtons(); - return; - } - - test = slug(suite[index]); - el = id(test); - source = window.data[test]; - setText(test + '-time', 'Running...'); - - // Force the result to be held in this array, thus defeating any - // possible "dead core elimination" optimization. - window.tree = []; - - benchmark = new window.Benchmark(test, function (o) { - var syntax = window.esprima.parse(source); - window.tree.push(syntax.body.length); - }, { - 'onComplete': function () { - setText(this.name + '-time', (1000 * this.stats.mean).toFixed(1)); - setText(this.name + '-variance', (1000 * this.stats.variance).toFixed(1)); - totalTime += this.stats.mean; - } - }); - - window.setTimeout(function () { - benchmark.run(); - index += 1; - window.setTimeout(run, 211); - }, 211); - } - - - disableRunButtons(); - setText('status', 'Please wait. Running benchmarks...'); - - reset(); - run(); - } - - id('runquick').onclick = function () { - runBenchmarks(['jQuery 1.7.1', 'jQuery.Mobile 1.0', 'Backbone 0.5.3']); - }; - - id('runfull').onclick = function () { - runBenchmarks(fixture); - }; - - setText('benchmarkjs-version', ' version ' + window.Benchmark.version); - setText('version', window.esprima.version); - - createTable(); - disableRunButtons(); - loadTests(); - }; -} else { - - // UMD workaround for V8 shell. - var window; - - (function (global) { - 'use strict'; - var Benchmark, - esprima, - dirname, - option, - fs, - readFileSync, - log; - - if (typeof require === 'undefined') { - dirname = 'test'; - load(dirname + '/3rdparty/benchmark.js'); - - window = global; - load(dirname + '/../esprima.js'); - - Benchmark = global.Benchmark; - esprima = global.esprima; - readFileSync = global.read; - log = print; - } else { - Benchmark = require('./3rdparty/benchmark'); - esprima = require('../esprima'); - fs = require('fs'); - option = process.argv[2]; - readFileSync = function readFileSync(filename) { - return fs.readFileSync(filename, 'utf-8'); - }; - dirname = __dirname; - log = console.log.bind(console); - } - - function runTests(tests) { - var index, - tree = [], - totalTime = 0, - totalSize = 0; - - tests.reduce(function (suite, filename) { - var source = readFileSync(dirname + '/3rdparty/' + slug(filename) + '.js'), - size = source.length; - totalSize += size; - return suite.add(filename, function () { - var syntax = esprima.parse(source); - tree.push(syntax.body.length); - }, { - 'onComplete': function (event, bench) { - log(this.name + - ' size ' + kb(size) + - ' time ' + (1000 * this.stats.mean).toFixed(1) + - ' variance ' + (1000 * this.stats.variance).toFixed(1)); - totalTime += this.stats.mean; - } - }); - }, new Benchmark.Suite()).on('complete', function () { - log('Total size ' + kb(totalSize) + - ' time ' + (1000 * totalTime).toFixed(1)); - }).run(); - } - - if (option === 'quick') { - runTests(['jQuery 1.7.1', 'jQuery.Mobile 1.0', 'Backbone 0.5.3']); - } else { - runTests(fixture); - } - }(this)); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html deleted file mode 100644 index 51f1226..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - -Esprima: Speed Comparison - - - - - - - - - - -
      - - - -

      Compare with other parsers

      - -

      Time measurement is carried out using Benchmark.js.

      - -

      Esprima version .

      - -

      Please wait... -

      - -

      - - -

      Warning: Since each parser may have a different format for the syntax tree, the speed is not fully comparable (the cost of constructing different result is not taken into account). These tests exist only to ensure that Esprima parser is not ridiculously slow compare to other parsers.

      - -

      parse-js is the parser used in UglifyJS v1. It's a JavaScript port of the Common LISP version. This test uses parse-js from UglifyJS version 1.3.2 (June 26 2012).

      - -

      Acorn is a compact stand-alone JavaScript parser. This test uses Acorn revision 0590d122 (dated Oct 3 2012).

      - -

      More comparison variants will be added in the near future.

      - - -
      - - - - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js deleted file mode 100644 index b81655c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compare.js +++ /dev/null @@ -1,328 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint browser: true node: true */ -/*global load:true, print:true */ -var setupBenchmarks, - parsers, - fixtureList, - suite; - -parsers = [ - 'Esprima', - 'parse-js', - 'Acorn' -]; - -fixtureList = [ - 'jQuery 1.7.1', - 'Prototype 1.7.0.0', - 'MooTools 1.4.1', - 'Ext Core 3.1.0' -]; - -function slug(name) { - 'use strict'; - return name.toLowerCase().replace(/\s/g, '-'); -} - -function kb(bytes) { - 'use strict'; - return (bytes / 1024).toFixed(1); -} - -function inject(fname) { - 'use strict'; - var head = document.getElementsByTagName('head')[0], - script = document.createElement('script'); - - script.src = fname; - script.type = 'text/javascript'; - head.appendChild(script); -} - -if (typeof window !== 'undefined') { - - // Run all tests in a browser environment. - setupBenchmarks = function () { - 'use strict'; - - function id(i) { - return document.getElementById(i); - } - - function setText(id, str) { - var el = document.getElementById(id); - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function enableRunButtons() { - id('run').disabled = false; - } - - function disableRunButtons() { - id('run').disabled = true; - } - - function createTable() { - var str = '', - i, - index, - test, - name; - - str += ''; - str += ''; - for (i = 0; i < parsers.length; i += 1) { - str += ''; - } - str += ''; - str += ''; - for (index = 0; index < fixtureList.length; index += 1) { - test = fixtureList[index]; - name = slug(test); - str += ''; - str += ''; - if (window.data && window.data[name]) { - str += ''; - } else { - str += ''; - } - for (i = 0; i < parsers.length; i += 1) { - str += ''; - } - str += ''; - } - str += ''; - str += ''; - for (i = 0; i < parsers.length; i += 1) { - str += ''; - } - str += ''; - str += ''; - str += '
      SourceSize (KiB)' + parsers[i] + '
      ' + test + '' + kb(window.data[name].length) + '
      Total
      '; - - id('result').innerHTML = str; - } - - function loadFixtures() { - - var index = 0, - totalSize = 0; - - function load(test, callback) { - var xhr = new XMLHttpRequest(), - src = '3rdparty/' + test + '.js'; - - window.data = window.data || {}; - window.data[test] = ''; - - try { - xhr.timeout = 30000; - xhr.open('GET', src, true); - - xhr.ontimeout = function () { - setText('status', 'Error: time out while loading ' + test); - callback.apply(); - }; - - xhr.onreadystatechange = function () { - var success = false, - size = 0; - - if (this.readyState === XMLHttpRequest.DONE) { - if (this.status === 200) { - window.data[test] = this.responseText; - size = this.responseText.length; - totalSize += size; - success = true; - } - } - - if (success) { - setText(test + '-size', kb(size)); - } else { - setText('status', 'Please wait. Error loading ' + src); - setText(test + '-size', 'Error'); - } - - callback.apply(); - }; - - xhr.send(null); - } catch (e) { - setText('status', 'Please wait. Error loading ' + src); - callback.apply(); - } - } - - function loadNextTest() { - var test; - - if (index < fixtureList.length) { - test = fixtureList[index]; - index += 1; - setText('status', 'Please wait. Loading ' + test + - ' (' + index + ' of ' + fixtureList.length + ')'); - window.setTimeout(function () { - load(slug(test), loadNextTest); - }, 100); - } else { - setText('total-size', kb(totalSize)); - setText('status', 'Ready.'); - enableRunButtons(); - } - } - - loadNextTest(); - } - - function setupParser() { - var i, j; - - suite = []; - for (i = 0; i < fixtureList.length; i += 1) { - for (j = 0; j < parsers.length; j += 1) { - suite.push({ - fixture: fixtureList[i], - parser: parsers[j] - }); - } - } - - createTable(); - } - - function runBenchmarks() { - - var index = 0, - totalTime = {}; - - function reset() { - var i, name; - for (i = 0; i < suite.length; i += 1) { - name = slug(suite[i].fixture) + '-' + slug(suite[i].parser); - setText(name + '-time', ''); - } - } - - function run() { - var fixture, parser, test, source, fn, benchmark; - - if (index >= suite.length) { - setText('status', 'Ready.'); - enableRunButtons(); - return; - } - - fixture = suite[index].fixture; - parser = suite[index].parser; - - source = window.data[slug(fixture)]; - - test = slug(fixture) + '-' + slug(parser); - setText(test + '-time', 'Running...'); - - setText('status', 'Please wait. Parsing ' + fixture + '...'); - - // Force the result to be held in this array, thus defeating any - // possible "dead code elimination" optimization. - window.tree = []; - - switch (parser) { - case 'Esprima': - fn = function () { - var syntax = window.esprima.parse(source); - window.tree.push(syntax.body.length); - }; - break; - - case 'parse-js': - fn = function () { - var syntax = window.parseJS.parse(source); - window.tree.push(syntax.length); - }; - break; - - case 'Acorn': - fn = function () { - var syntax = window.acorn.parse(source); - window.tree.push(syntax.body.length); - }; - break; - - default: - throw 'Unknown parser type ' + parser; - } - - benchmark = new window.Benchmark(test, fn, { - 'onComplete': function () { - setText(this.name + '-time', (1000 * this.stats.mean).toFixed(1)); - if (!totalTime[parser]) { - totalTime[parser] = this.stats.mean; - } else { - totalTime[parser] += this.stats.mean; - } - setText(slug(parser) + '-total', (1000 * totalTime[parser]).toFixed(1)); - } - }); - - window.setTimeout(function () { - benchmark.run(); - index += 1; - window.setTimeout(run, 211); - }, 211); - } - - - disableRunButtons(); - setText('status', 'Please wait. Running benchmarks...'); - - reset(); - run(); - } - - id('run').onclick = function () { - runBenchmarks(); - }; - - setText('benchmarkjs-version', ' version ' + window.Benchmark.version); - setText('version', window.esprima.version); - - setupParser(); - createTable(); - - disableRunButtons(); - loadFixtures(); - }; -} else { - // TODO - console.log('Not implemented yet!'); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html deleted file mode 100644 index 2ae18cc..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - -Esprima: Compatibility Tests - - - - - - - -
      - - - -

      Compatibility keeps everyone happy

      -

      Esprima version .

      -

      The following tests are to ensure that the syntax tree is compatible to -that produced by Mozilla SpiderMonkey -Parser reflection.

      -

      Please wait...

      -
      - -
      - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js deleted file mode 100644 index ee3a629..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/compat.js +++ /dev/null @@ -1,239 +0,0 @@ -/* - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2011 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node: true */ -/*global document: true, window:true, esprima: true, testReflect: true */ - -var runTests; - -function getContext(esprima, reportCase, reportFailure) { - 'use strict'; - - var Reflect, Pattern; - - // Maps Mozilla Reflect object to our Esprima parser. - Reflect = { - parse: function (code) { - var result; - - reportCase(code); - - try { - result = esprima.parse(code); - } catch (error) { - result = error; - } - - return result; - } - }; - - // This is used by Reflect test suite to match a syntax tree. - Pattern = function (obj) { - var pattern; - - // Poor man's deep object cloning. - pattern = JSON.parse(JSON.stringify(obj)); - - // Special handling for regular expression literal since we need to - // convert it to a string literal, otherwise it will be decoded - // as object "{}" and the regular expression would be lost. - if (obj.type && obj.type === 'Literal') { - if (obj.value instanceof RegExp) { - pattern = { - type: obj.type, - value: obj.value.toString() - }; - } - } - - // Special handling for branch statement because SpiderMonkey - // prefers to put the 'alternate' property before 'consequent'. - if (obj.type && obj.type === 'IfStatement') { - pattern = { - type: pattern.type, - test: pattern.test, - consequent: pattern.consequent, - alternate: pattern.alternate - }; - } - - // Special handling for do while statement because SpiderMonkey - // prefers to put the 'test' property before 'body'. - if (obj.type && obj.type === 'DoWhileStatement') { - pattern = { - type: pattern.type, - body: pattern.body, - test: pattern.test - }; - } - - function adjustRegexLiteralAndRaw(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } else if (key === 'raw' && typeof value === "string") { - // Ignore Esprima-specific 'raw' property. - return undefined; - } - return value; - } - - if (obj.type && (obj.type === 'Program')) { - pattern.assert = function (tree) { - var actual, expected; - actual = JSON.stringify(tree, adjustRegexLiteralAndRaw, 4); - expected = JSON.stringify(obj, null, 4); - - if (expected !== actual) { - reportFailure(expected, actual); - } - }; - } - - return pattern; - }; - - return { - Reflect: Reflect, - Pattern: Pattern - }; -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - - var total = 0, - failures = 0; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function reportCase(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - total += 1; - } - - function reportFailure(expected, actual) { - var report, e; - - failures += 1; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - window.setTimeout(function () { - var tick, context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }, 513); - }; -} else { - (function (global) { - 'use strict'; - var esprima = require('../esprima'), - tick, - total = 0, - failures = [], - header, - current, - context; - - function reportCase(code) { - total += 1; - current = code; - } - - function reportFailure(expected, actual) { - failures.push({ - source: current, - expected: expected.toString(), - actual: actual.toString() - }); - } - - context = getContext(esprima, reportCase, reportFailure); - - tick = new Date(); - require('./reflect').testReflect(context.Reflect, context.Pattern); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }(this)); -} -/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html deleted file mode 100644 index 9943ff0..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.footer.html +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html deleted file mode 100644 index 0885679..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.header.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - -Esprima: Coverage Analysis Report - - - - -
      - - - -

      Coverage Analysis ensures systematic exercise of the parser

      - -

      Note: This is not a live (in-browser) code coverage report. -The analysis is performed offline -(using node-cover).
      - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html deleted file mode 100644 index 696c682..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/coverage.html +++ /dev/null @@ -1,4676 +0,0 @@ - - - - -Esprima: Coverage Analysis Report - - - - -

      - - - -

      Coverage Analysis ensures systematic exercise of the parser

      - -

      Note: This is not a live (in-browser) code coverage report. -The analysis is performed offline -(using node-cover).
      - -Tested revision: b61b064 - (dated 4 Aug 2012 ).

      -
      -/*
      -    Copyright (C) 2012 Ariya Hidayat 
      -    Copyright (C) 2012 Mathias Bynens 
      -    Copyright (C) 2012 Joost-Wim Boekesteijn 
      -    Copyright (C) 2012 Kris Kowal 
      -    Copyright (C) 2012 Yusuke Suzuki 
      -    Copyright (C) 2012 Arpad Borsos 
      -    Copyright (C) 2011 Ariya Hidayat 
      -  
      -    Redistribution and use in source and binary forms, with or without
      -    modification, are permitted provided that the following conditions are met:
      -  
      -      * Redistributions of source code must retain the above copyright
      -        notice, this list of conditions and the following disclaimer.
      -      * Redistributions in binary form must reproduce the above copyright
      -        notice, this list of conditions and the following disclaimer in the
      -        documentation and/or other materials provided with the distribution.
      -  
      -    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
      -    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      -    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      -    ARE DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
      -    DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
      -    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
      -    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
      -    ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      -    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
      -    THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      -  */
      -  
      -  /*jslint bitwise:true plusplus:true */
      -  /*global esprima:true, define:true, exports:true, window: true,
      -  throwError: true, createLiteral: true, generateStatement: true,
      -  parseAssignmentExpression: true, parseBlock: true,
      -  parseClassExpression: true, parseClassDeclaration: true, parseExpression: true,
      -  parseFunctionDeclaration: true, parseFunctionExpression: true,
      -  parseFunctionSourceElements: true, parseVariableIdentifier: true,
      -  parseImportSpecifier: true,
      -  parseLeftHandSideExpression: true,
      -  parseStatement: true, parseSourceElement: true, parseModuleBlock: true, parseConciseBody: true,
      -  parseYieldExpression: true
      -  */
      -  
      -  (function (factory) {
      -      'use strict';
      -  
      -      // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js,
      -      // and plain browser loading,
      -      if (typeof define === 'function' && define.amd) {
      -          define(['exports'], factory);
      -      } else if (typeof exports !== 'undefined') {
      -          factory(exports);
      -      } else {
      -          factory((window.esprima = {}));
      -      }
      -  }(function (exports) {
      -      'use strict';
      -  
      -      var Token,
      -          TokenName,
      -          Syntax,
      -          PropertyKind,
      -          Messages,
      -          Regex,
      -          source,
      -          strict,
      -          yieldAllowed,
      -          yieldFound,
      -          index,
      -          lineNumber,
      -          lineStart,
      -          length,
      -          buffer,
      -          state,
      -          extra;
      -  
      -      Token = {
      -          BooleanLiteral: 1,
      -          EOF: 2,
      -          Identifier: 3,
      -          Keyword: 4,
      -          NullLiteral: 5,
      -          NumericLiteral: 6,
      -          Punctuator: 7,
      -          StringLiteral: 8
      -      };
      -  
      -      TokenName = {};
      -      TokenName[Token.BooleanLiteral] = 'Boolean';
      -      TokenName[Token.EOF] = '';
      -      TokenName[Token.Identifier] = 'Identifier';
      -      TokenName[Token.Keyword] = 'Keyword';
      -      TokenName[Token.NullLiteral] = 'Null';
      -      TokenName[Token.NumericLiteral] = 'Numeric';
      -      TokenName[Token.Punctuator] = 'Punctuator';
      -      TokenName[Token.StringLiteral] = 'String';
      -  
      -      Syntax = {
      -          ArrayExpression: 'ArrayExpression',
      -          ArrayPattern: 'ArrayPattern',
      -          ArrowFunctionExpression: 'ArrowFunctionExpression',
      -          AssignmentExpression: 'AssignmentExpression',
      -          BinaryExpression: 'BinaryExpression',
      -          BlockStatement: 'BlockStatement',
      -          BreakStatement: 'BreakStatement',
      -          CallExpression: 'CallExpression',
      -          CatchClause: 'CatchClause',
      -          ClassBody: 'ClassBody',
      -          ClassDeclaration: 'ClassDeclaration',
      -          ClassExpression: 'ClassExpression',
      -          MethodDefinition: 'MethodDefinition',
      -          ClassHeritage: 'ClassHeritage',
      -          ConditionalExpression: 'ConditionalExpression',
      -          ContinueStatement: 'ContinueStatement',
      -          DebuggerStatement: 'DebuggerStatement',
      -          DoWhileStatement: 'DoWhileStatement',
      -          EmptyStatement: 'EmptyStatement',
      -          ExportDeclaration: 'ExportDeclaration',
      -          ExportSpecifier: 'ExportSpecifier',
      -          ExportSpecifierSet: 'ExportSpecifierSet',
      -          ExpressionStatement: 'ExpressionStatement',
      -          ForInStatement: 'ForInStatement',
      -          ForOfStatement: 'ForOfStatement',
      -          ForStatement: 'ForStatement',
      -          FunctionDeclaration: 'FunctionDeclaration',
      -          FunctionExpression: 'FunctionExpression',
      -          Glob: 'Glob',
      -          Identifier: 'Identifier',
      -          IfStatement: 'IfStatement',
      -          ImportDeclaration: 'ImportDeclaration',
      -          ImportSpecifier: 'ImportSpecifier',
      -          LabeledStatement: 'LabeledStatement',
      -          Literal: 'Literal',
      -          LogicalExpression: 'LogicalExpression',
      -          MemberExpression: 'MemberExpression',
      -          ModuleDeclaration: 'ModuleDeclaration',
      -          NewExpression: 'NewExpression',
      -          ObjectExpression: 'ObjectExpression',
      -          ObjectPattern: 'ObjectPattern',
      -          Path:  'Path',
      -          Program: 'Program',
      -          Property: 'Property',
      -          ReturnStatement: 'ReturnStatement',
      -          SequenceExpression: 'SequenceExpression',
      -          SwitchCase: 'SwitchCase',
      -          SwitchStatement: 'SwitchStatement',
      -          ThisExpression: 'ThisExpression',
      -          ThrowStatement: 'ThrowStatement',
      -          TryStatement: 'TryStatement',
      -          UnaryExpression: 'UnaryExpression',
      -          UpdateExpression: 'UpdateExpression',
      -          VariableDeclaration: 'VariableDeclaration',
      -          VariableDeclarator: 'VariableDeclarator',
      -          WhileStatement: 'WhileStatement',
      -          WithStatement: 'WithStatement',
      -          YieldExpression: 'YieldExpression'
      -      };
      -  
      -      PropertyKind = {
      -          Data: 1,
      -          Get: 2,
      -          Set: 4
      -      };
      -  
      -      // Error messages should be identical to V8.
      -      Messages = {
      -          UnexpectedToken:  'Unexpected token %0',
      -          UnexpectedNumber:  'Unexpected number',
      -          UnexpectedString:  'Unexpected string',
      -          UnexpectedIdentifier:  'Unexpected identifier',
      -          UnexpectedReserved:  'Unexpected reserved word',
      -          UnexpectedEOS:  'Unexpected end of input',
      -          NewlineAfterThrow:  'Illegal newline after throw',
      -          InvalidRegExp: 'Invalid regular expression',
      -          UnterminatedRegExp:  'Invalid regular expression: missing /',
      -          InvalidLHSInAssignment:  'Invalid left-hand side in assignment',
      -          InvalidLHSInForIn:  'Invalid left-hand side in for-in',
      -          MultipleDefaultsInSwitch: 'More than one default clause in switch statement',
      -          NoCatchOrFinally:  'Missing catch or finally after try',
      -          UnknownLabel: 'Undefined label \'%0\'',
      -          Redeclaration: '%0 \'%1\' has already been declared',
      -          IllegalContinue: 'Illegal continue statement',
      -          IllegalBreak: 'Illegal break statement',
      -          IllegalReturn: 'Illegal return statement',
      -          IllegalYield: 'Illegal yield expression',
      -          StrictModeWith:  'Strict mode code may not include a with statement',
      -          StrictCatchVariable:  'Catch variable may not be eval or arguments in strict mode',
      -          StrictVarName:  'Variable name may not be eval or arguments in strict mode',
      -          StrictParamName:  'Parameter name eval or arguments is not allowed in strict mode',
      -          StrictParamDupe: 'Strict mode function may not have duplicate parameter names',
      -          StrictFunctionName:  'Function name may not be eval or arguments in strict mode',
      -          StrictOctalLiteral:  'Octal literals are not allowed in strict mode.',
      -          StrictDelete:  'Delete of an unqualified identifier in strict mode.',
      -          StrictDuplicateProperty:  'Duplicate data property in object literal not allowed in strict mode',
      -          AccessorDataProperty:  'Object literal may not have data and accessor property with the same name',
      -          AccessorGetSet:  'Object literal may not have multiple get/set accessors with the same name',
      -          StrictLHSAssignment:  'Assignment to eval or arguments is not allowed in strict mode',
      -          StrictLHSPostfix:  'Postfix increment/decrement may not have eval or arguments operand in strict mode',
      -          StrictLHSPrefix:  'Prefix increment/decrement may not have eval or arguments operand in strict mode',
      -          StrictReservedWord:  'Use of future reserved word in strict mode',
      -          NoFromAfterImport: 'Missing from after import',
      -          NoYieldInGenerator: 'Missing yield in generator'
      -      };
      -  
      -      // See also tools/generate-unicode-regex.py.
      -      Regex = {
      -          NonAsciiIdentifierStart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]'),
      -          NonAsciiIdentifierPart: new RegExp('[\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]')
      -      };
      -  
      -      // Ensure the condition is true, otherwise throw an error.
      -      // This is only to have a better contract semantic, i.e. another safety net
      -      // to catch a logic error. The condition shall be fulfilled in normal case.
      -      // Do NOT use this to enforce a certain condition on any user input.
      -  
      -      function assert(condition, message) {
      -          if (!condition) {
      -              throw new Error('ASSERT: ' + message);
      -          }
      -      }
      -  
      -      function sliceSource(from, to) {
      -          return source.slice(from, to);
      -      }
      -  
      -      if (typeof 'esprima'[0] === 'undefined') {
      -          sliceSource = function sliceArraySource(from, to) {
      -              return source.slice(from, to).join('');
      -          };
      -      }
      -  
      -      function isDecimalDigit(ch) {
      -          return '0123456789'.indexOf(ch) >= 0;
      -      }
      -  
      -      function isHexDigit(ch) {
      -          return '0123456789abcdefABCDEF'.indexOf(ch) >= 0;
      -      }
      -  
      -      function isOctalDigit(ch) {
      -          return '01234567'.indexOf(ch) >= 0;
      -      }
      -  
      -  
      -      // 7.2 White Space
      -  
      -      function isWhiteSpace(ch) {
      -          return (ch === ' ') || (ch === '\u0009') || (ch === '\u000B') ||
      -              (ch === '\u000C') || (ch === '\u00A0') ||
      -              (ch.charCodeAt(0) >= 0x1680 &&
      -               '\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFF'.indexOf(ch) >= 0);
      -      }
      -  
      -      // 7.3 Line Terminators
      -  
      -      function isLineTerminator(ch) {
      -          return (ch === '\n' || ch === '\r' || ch === '\u2028' || ch === '\u2029');
      -      }
      -  
      -      // 7.6 Identifier Names and Identifiers
      -  
      -      function isIdentifierStart(ch) {
      -          return (ch === '$') || (ch === '_') || (ch === '\\') ||
      -              (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') ||
      -              ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierStart.test(ch));
      -      }
      -  
      -      function isIdentifierPart(ch) {
      -          return (ch === '$') || (ch === '_') || (ch === '\\') ||
      -              (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') ||
      -              ((ch >= '0') && (ch <= '9')) ||
      -              ((ch.charCodeAt(0) >= 0x80) && Regex.NonAsciiIdentifierPart.test(ch));
      -      }
      -  
      -      // 7.6.1.2 Future Reserved Words
      -  
      -      function isFutureReservedWord(id) {
      -          switch (id) {
      -  
      -          // Future reserved words.
      -          case 'class':
      -          case 'enum':
      -          case 'export':
      -          case 'extends':
      -          case 'import':
      -          case 'super':
      -              return true;
      -          }
      -  
      -          return false;
      -      }
      -  
      -      function isStrictModeReservedWord(id) {
      -          switch (id) {
      -  
      -          // Strict Mode reserved words.
      -          case 'implements':
      -          case 'interface':
      -          case 'package':
      -          case 'private':
      -          case 'protected':
      -          case 'public':
      -          case 'static':
      -          case 'yield':
      -          case 'let':
      -              return true;
      -          }
      -  
      -          return false;
      -      }
      -  
      -      function isRestrictedWord(id) {
      -          return id === 'eval' || id === 'arguments';
      -      }
      -  
      -      // 7.6.1.1 Keywords
      -  
      -      function isKeyword(id) {
      -          var keyword = false;
      -          switch (id.length) {
      -          case 2:
      -              keyword = (id === 'if') || (id === 'in') || (id === 'do');
      -              break;
      -          case 3:
      -              keyword = (id === 'var') || (id === 'for') || (id === 'new') || (id === 'try');
      -              break;
      -          case 4:
      -              keyword = (id === 'this') || (id === 'else') || (id === 'case') || (id === 'void') || (id === 'with');
      -              break;
      -          case 5:
      -              keyword = (id === 'while') || (id === 'break') || (id === 'catch') || (id === 'throw');
      -              break;
      -          case 6:
      -              keyword = (id === 'return') || (id === 'typeof') || (id === 'delete') || (id === 'switch');
      -              break;
      -          case 7:
      -              keyword = (id === 'default') || (id === 'finally');
      -              break;
      -          case 8:
      -              keyword = (id === 'function') || (id === 'continue') || (id === 'debugger');
      -              break;
      -          case 10:
      -              keyword = (id === 'instanceof');
      -              break;
      -          }
      -  
      -          if (keyword) {
      -              return true;
      -          }
      -  
      -          switch (id) {
      -          // Future reserved words.
      -          // 'const' is specialized as Keyword in V8.
      -          case 'const':
      -              return true;
      -  
      -          // For compatiblity to SpiderMonkey and ES.next
      -          case 'yield':
      -          case 'let':
      -              return true;
      -          }
      -  
      -          if (strict && isStrictModeReservedWord(id)) {
      -              return true;
      -          }
      -  
      -          return isFutureReservedWord(id);
      -      }
      -  
      -      // Return the next character and move forward.
      -  
      -      function nextChar() {
      -          return source[index++];
      -      }
      -  
      -      // 7.4 Comments
      -  
      -      function skipComment() {
      -          var ch, blockComment, lineComment;
      -  
      -          blockComment = false;
      -          lineComment = false;
      -  
      -          while (index < length) {
      -              ch = source[index];
      -  
      -              if (lineComment) {
      -                  ch = nextChar();
      -                  if (isLineTerminator(ch)) {
      -                      lineComment = false;
      -                      if (ch === '\r' && source[index] === '\n') {
      -                          ++index;
      -                      }
      -                      ++lineNumber;
      -                      lineStart = index;
      -                  }
      -              } else if (blockComment) {
      -                  if (isLineTerminator(ch)) {
      -                      if (ch === '\r' && source[index + 1] === '\n') {
      -                          ++index;
      -                      }
      -                      ++lineNumber;
      -                      ++index;
      -                      lineStart = index;
      -                      if (index >= length) {
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -                  } else {
      -                      ch = nextChar();
      -                      if (index >= length) {
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -                      if (ch === '*') {
      -                          ch = source[index];
      -                          if (ch === '/') {
      -                              ++index;
      -                              blockComment = false;
      -                          }
      -                      }
      -                  }
      -              } else if (ch === '/') {
      -                  ch = source[index + 1];
      -                  if (ch === '/') {
      -                      index += 2;
      -                      lineComment = true;
      -                  } else if (ch === '*') {
      -                      index += 2;
      -                      blockComment = true;
      -                      if (index >= length) {
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -                  } else {
      -                      break;
      -                  }
      -              } else if (isWhiteSpace(ch)) {
      -                  ++index;
      -              } else if (isLineTerminator(ch)) {
      -                  ++index;
      -                  if (ch ===  '\r' && source[index] === '\n') {
      -                      ++index;
      -                  }
      -                  ++lineNumber;
      -                  lineStart = index;
      -              } else {
      -                  break;
      -              }
      -          }
      -      }
      -  
      -      function scanHexEscape(prefix) {
      -          var i, len, ch, code = 0;
      -  
      -          len = (prefix === 'u') ? 4 : 2;
      -          for (i = 0; i < len; ++i) {
      -              if (index < length && isHexDigit(source[index])) {
      -                  ch = nextChar();
      -                  code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
      -              } else {
      -                  return '';
      -              }
      -          }
      -          return String.fromCharCode(code);
      -      }
      -  
      -      function scanUnicodeCodePointEscape() {
      -          var ch, code, cu1, cu2;
      -  
      -          ch = source[index];
      -          code = 0;
      -  
      -          // At least, one hex digit is required.
      -          if (ch === '}') {
      -              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -          }
      -  
      -          while (index < length) {
      -              ch = nextChar();
      -              if (!isHexDigit(ch)) {
      -                  break;
      -              }
      -              code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
      -          }
      -  
      -          if (code > 0x10FFFF || ch !== '}') {
      -              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -          }
      -  
      -          // UTF-16 Encoding
      -          if (code <= 0xFFFF) {
      -              return String.fromCharCode(code);
      -          }
      -          cu1 = ((code - 0x10000) >> 10) + 0xD800;
      -          cu2 = ((code - 0x10000) & 1023) + 0xDC00;
      -          return String.fromCharCode(cu1, cu2);
      -      }
      -  
      -      function scanIdentifier() {
      -          var ch, start, id, restore;
      -  
      -          ch = source[index];
      -          if (!isIdentifierStart(ch)) {
      -              return;
      -          }
      -  
      -          start = index;
      -          if (ch === '\\') {
      -              ++index;
      -              if (source[index] !== 'u') {
      -                  return;
      -              }
      -              ++index;
      -              restore = index;
      -              ch = scanHexEscape('u');
      -              if (ch) {
      -                  if (ch === '\\' || !isIdentifierStart(ch)) {
      -                      return;
      -                  }
      -                  id = ch;
      -              } else {
      -                  index = restore;
      -                  id = 'u';
      -              }
      -          } else {
      -              id = nextChar();
      -          }
      -  
      -          while (index < length) {
      -              ch = source[index];
      -              if (!isIdentifierPart(ch)) {
      -                  break;
      -              }
      -              if (ch === '\\') {
      -                  ++index;
      -                  if (source[index] !== 'u') {
      -                      return;
      -                  }
      -                  ++index;
      -                  restore = index;
      -                  ch = scanHexEscape('u');
      -                  if (ch) {
      -                      if (ch === '\\' || !isIdentifierPart(ch)) {
      -                          return;
      -                      }
      -                      id += ch;
      -                  } else {
      -                      index = restore;
      -                      id += 'u';
      -                  }
      -              } else {
      -                  id += nextChar();
      -              }
      -          }
      -  
      -          // There is no keyword or literal with only one character.
      -          // Thus, it must be an identifier.
      -          if (id.length === 1) {
      -              return {
      -                  type: Token.Identifier,
      -                  value: id,
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          if (isKeyword(id)) {
      -              return {
      -                  type: Token.Keyword,
      -                  value: id,
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          // 7.8.1 Null Literals
      -  
      -          if (id === 'null') {
      -              return {
      -                  type: Token.NullLiteral,
      -                  value: id,
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          // 7.8.2 Boolean Literals
      -  
      -          if (id === 'true' || id === 'false') {
      -              return {
      -                  type: Token.BooleanLiteral,
      -                  value: id,
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          return {
      -              type: Token.Identifier,
      -              value: id,
      -              lineNumber: lineNumber,
      -              lineStart: lineStart,
      -              range: [start, index]
      -          };
      -      }
      -  
      -      // 7.7 Punctuators
      -  
      -      function scanPunctuator() {
      -          var start = index,
      -              ch1 = source[index],
      -              ch2,
      -              ch3,
      -              ch4;
      -  
      -          // Check for most common single-character punctuators.
      -  
      -          if (ch1 === ';' || ch1 === '{' || ch1 === '}') {
      -              ++index;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: ch1,
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          if (ch1 === ',' || ch1 === '(' || ch1 === ')') {
      -              ++index;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: ch1,
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          // Dot (.) can also start a floating-point number, hence the need
      -          // to check the next character.
      -  
      -          ch2 = source[index + 1];
      -          if (ch1 === '.' && !isDecimalDigit(ch2)) {
      -              return {
      -                  type: Token.Punctuator,
      -                  value: nextChar(),
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          // Peek more characters.
      -  
      -          ch3 = source[index + 2];
      -          ch4 = source[index + 3];
      -  
      -          // 4-character punctuator: >>>=
      -  
      -          if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
      -              if (ch4 === '=') {
      -                  index += 4;
      -                  return {
      -                      type: Token.Punctuator,
      -                      value: '>>>=',
      -                      lineNumber: lineNumber,
      -                      lineStart: lineStart,
      -                      range: [start, index]
      -                  };
      -              }
      -          }
      -  
      -          // 3-character punctuators: === !== >>> <<= >>=
      -  
      -          if (ch1 === '=' && ch2 === '=' && ch3 === '=') {
      -              index += 3;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: '===',
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          if (ch1 === '!' && ch2 === '=' && ch3 === '=') {
      -              index += 3;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: '!==',
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          if (ch1 === '>' && ch2 === '>' && ch3 === '>') {
      -              index += 3;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: '>>>',
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          if (ch1 === '<' && ch2 === '<' && ch3 === '=') {
      -              index += 3;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: '<<=',
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          if (ch1 === '>' && ch2 === '>' && ch3 === '=') {
      -              index += 3;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: '>>=',
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          // 2-character punctuators: <= >= == != ++ -- << >> && ||
      -          // += -= *= %= &= |= ^= /=
      -  
      -          if (ch2 === '=') {
      -              if ('<>=!+-*%&|^/'.indexOf(ch1) >= 0) {
      -                  index += 2;
      -                  return {
      -                      type: Token.Punctuator,
      -                      value: ch1 + ch2,
      -                      lineNumber: lineNumber,
      -                      lineStart: lineStart,
      -                      range: [start, index]
      -                  };
      -              }
      -          }
      -  
      -          if (ch1 === ch2 && ('+-<>&|'.indexOf(ch1) >= 0)) {
      -              if ('+-<>&|'.indexOf(ch2) >= 0) {
      -                  index += 2;
      -                  return {
      -                      type: Token.Punctuator,
      -                      value: ch1 + ch2,
      -                      lineNumber: lineNumber,
      -                      lineStart: lineStart,
      -                      range: [start, index]
      -                  };
      -              }
      -          }
      -  
      -          if (ch1 === '=' && ch2 === '>') {
      -              index += 2;
      -              return {
      -                  type: Token.Punctuator,
      -                  value: '=>',
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -  
      -          // The remaining 1-character punctuators.
      -  
      -          if ('[]<>+-*%&|^!~?:=/'.indexOf(ch1) >= 0) {
      -              return {
      -                  type: Token.Punctuator,
      -                  value: nextChar(),
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [start, index]
      -              };
      -          }
      -      }
      -  
      -      // 7.8.3 Numeric Literals
      -  
      -      function scanNumericLiteral() {
      -          var number, start, ch, octal;
      -  
      -          ch = source[index];
      -          assert(isDecimalDigit(ch) || (ch === '.'),
      -              'Numeric literal must start with a decimal digit or a decimal point');
      -  
      -          start = index;
      -          number = '';
      -          if (ch !== '.') {
      -              number = nextChar();
      -              ch = source[index];
      -  
      -              // Hex number starts with '0x'.
      -              // Octal number starts with '0'.
      -              // Octal number in ES6 starts with '0o'.
      -              // Binary number in ES6 starts with '0b'.
      -              if (number === '0') {
      -                  if (ch === 'x' || ch === 'X') {
      -                      number += nextChar();
      -                      while (index < length) {
      -                          ch = source[index];
      -                          if (!isHexDigit(ch)) {
      -                              break;
      -                          }
      -                          number += nextChar();
      -                      }
      -  
      -                      if (number.length <= 2) {
      -                          // only 0x
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -  
      -                      if (index < length) {
      -                          ch = source[index];
      -                          if (isIdentifierStart(ch)) {
      -                              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                          }
      -                      }
      -                      return {
      -                          type: Token.NumericLiteral,
      -                          value: parseInt(number, 16),
      -                          lineNumber: lineNumber,
      -                          lineStart: lineStart,
      -                          range: [start, index]
      -                      };
      -                  } else if (ch === 'b' || ch === 'B') {
      -                      nextChar();
      -                      number = '';
      -  
      -                      while (index < length) {
      -                          ch = source[index];
      -                          if (ch !== '0' && ch !== '1') {
      -                              break;
      -                          }
      -                          number += nextChar();
      -                      }
      -  
      -                      if (number.length === 0) {
      -                          // only 0b or 0B
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -  
      -                      if (index < length) {
      -                          ch = source[index];
      -                          if (isIdentifierStart(ch) || isDecimalDigit(ch)) {
      -                              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                          }
      -                      }
      -                      return {
      -                          type: Token.NumericLiteral,
      -                          value: parseInt(number, 2),
      -                          lineNumber: lineNumber,
      -                          lineStart: lineStart,
      -                          range: [start, index]
      -                      };
      -                  } else if (ch === 'o' || ch === 'O' || isOctalDigit(ch)) {
      -                      if (isOctalDigit(ch)) {
      -                          octal = true;
      -                          number = nextChar();
      -                      } else {
      -                          octal = false;
      -                          nextChar();
      -                          number = '';
      -                      }
      -  
      -                      while (index < length) {
      -                          ch = source[index];
      -                          if (!isOctalDigit(ch)) {
      -                              break;
      -                          }
      -                          number += nextChar();
      -                      }
      -  
      -                      if (number.length === 0) {
      -                          // only 0o or 0O
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -  
      -                      if (index < length) {
      -                          ch = source[index];
      -                          if (isIdentifierStart(ch) || isDecimalDigit(ch)) {
      -                              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                          }
      -                      }
      -  
      -                      return {
      -                          type: Token.NumericLiteral,
      -                          value: parseInt(number, 8),
      -                          octal: octal,
      -                          lineNumber: lineNumber,
      -                          lineStart: lineStart,
      -                          range: [start, index]
      -                      };
      -                  }
      -  
      -                  // decimal number starts with '0' such as '09' is illegal.
      -                  if (isDecimalDigit(ch)) {
      -                      throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                  }
      -              }
      -  
      -              while (index < length) {
      -                  ch = source[index];
      -                  if (!isDecimalDigit(ch)) {
      -                      break;
      -                  }
      -                  number += nextChar();
      -              }
      -          }
      -  
      -          if (ch === '.') {
      -              number += nextChar();
      -              while (index < length) {
      -                  ch = source[index];
      -                  if (!isDecimalDigit(ch)) {
      -                      break;
      -                  }
      -                  number += nextChar();
      -              }
      -          }
      -  
      -          if (ch === 'e' || ch === 'E') {
      -              number += nextChar();
      -  
      -              ch = source[index];
      -              if (ch === '+' || ch === '-') {
      -                  number += nextChar();
      -              }
      -  
      -              ch = source[index];
      -              if (isDecimalDigit(ch)) {
      -                  number += nextChar();
      -                  while (index < length) {
      -                      ch = source[index];
      -                      if (!isDecimalDigit(ch)) {
      -                          break;
      -                      }
      -                      number += nextChar();
      -                  }
      -              } else {
      -                  ch = 'character ' + ch;
      -                  if (index >= length) {
      -                      ch = '';
      -                  }
      -                  throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -              }
      -          }
      -  
      -          if (index < length) {
      -              ch = source[index];
      -              if (isIdentifierStart(ch)) {
      -                  throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -              }
      -          }
      -  
      -          return {
      -              type: Token.NumericLiteral,
      -              value: parseFloat(number),
      -              lineNumber: lineNumber,
      -              lineStart: lineStart,
      -              range: [start, index]
      -          };
      -      }
      -  
      -      // 7.8.4 String Literals
      -  
      -      function scanStringLiteral() {
      -          var str = '', quote, start, ch, code, unescaped, restore, octal = false;
      -  
      -          quote = source[index];
      -          assert((quote === '\'' || quote === '"'),
      -              'String literal must starts with a quote');
      -  
      -          start = index;
      -          ++index;
      -  
      -          while (index < length) {
      -              ch = nextChar();
      -  
      -              if (ch === quote) {
      -                  quote = '';
      -                  break;
      -              } else if (ch === '\\') {
      -                  ch = nextChar();
      -                  if (!isLineTerminator(ch)) {
      -                      switch (ch) {
      -                      case 'n':
      -                          str += '\n';
      -                          break;
      -                      case 'r':
      -                          str += '\r';
      -                          break;
      -                      case 't':
      -                          str += '\t';
      -                          break;
      -                      case 'u':
      -                      case 'x':
      -                          if (source[index] === '{') {
      -                              ++index;
      -                              str += scanUnicodeCodePointEscape();
      -                          } else {
      -                              restore = index;
      -                              unescaped = scanHexEscape(ch);
      -                              if (unescaped) {
      -                                  str += unescaped;
      -                              } else {
      -                                  index = restore;
      -                                  str += ch;
      -                              }
      -                          }
      -                          break;
      -                      case 'b':
      -                          str += '\b';
      -                          break;
      -                      case 'f':
      -                          str += '\f';
      -                          break;
      -                      case 'v':
      -                          str += '\v';
      -                          break;
      -  
      -                      default:
      -                          if (isOctalDigit(ch)) {
      -                              code = '01234567'.indexOf(ch);
      -  
      -                              // \0 is not octal escape sequence
      -                              if (code !== 0) {
      -                                  octal = true;
      -                              }
      -  
      -                              if (index < length && isOctalDigit(source[index])) {
      -                                  octal = true;
      -                                  code = code * 8 + '01234567'.indexOf(nextChar());
      -  
      -                                  // 3 digits are only allowed when string starts
      -                                  // with 0, 1, 2, 3
      -                                  if ('0123'.indexOf(ch) >= 0 &&
      -                                          index < length &&
      -                                          isOctalDigit(source[index])) {
      -                                      code = code * 8 + '01234567'.indexOf(nextChar());
      -                                  }
      -                              }
      -                              str += String.fromCharCode(code);
      -                          } else {
      -                              str += ch;
      -                          }
      -                          break;
      -                      }
      -                  } else {
      -                      ++lineNumber;
      -                      if (ch ===  '\r' && source[index] === '\n') {
      -                          ++index;
      -                      }
      -                  }
      -              } else if (isLineTerminator(ch)) {
      -                  break;
      -              } else {
      -                  str += ch;
      -              }
      -          }
      -  
      -          if (quote !== '') {
      -              throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -          }
      -  
      -          return {
      -              type: Token.StringLiteral,
      -              value: str,
      -              octal: octal,
      -              lineNumber: lineNumber,
      -              lineStart: lineStart,
      -              range: [start, index]
      -          };
      -      }
      -  
      -      function scanRegExp() {
      -          var str = '', ch, start, pattern, flags, value, classMarker = false, restore;
      -  
      -          buffer = null;
      -          skipComment();
      -  
      -          start = index;
      -          ch = source[index];
      -          assert(ch === '/', 'Regular expression literal must start with a slash');
      -          str = nextChar();
      -  
      -          while (index < length) {
      -              ch = nextChar();
      -              str += ch;
      -              if (classMarker) {
      -                  if (ch === ']') {
      -                      classMarker = false;
      -                  }
      -              } else {
      -                  if (ch === '\\') {
      -                      ch = nextChar();
      -                      // ECMA-262 7.8.5
      -                      if (isLineTerminator(ch)) {
      -                          throwError({}, Messages.UnterminatedRegExp);
      -                      }
      -                      str += ch;
      -                  } else if (ch === '/') {
      -                      break;
      -                  } else if (ch === '[') {
      -                      classMarker = true;
      -                  } else if (isLineTerminator(ch)) {
      -                      throwError({}, Messages.UnterminatedRegExp);
      -                  }
      -              }
      -          }
      -  
      -          if (str.length === 1) {
      -              throwError({}, Messages.UnterminatedRegExp);
      -          }
      -  
      -          // Exclude leading and trailing slash.
      -          pattern = str.substr(1, str.length - 2);
      -  
      -          flags = '';
      -          while (index < length) {
      -              ch = source[index];
      -              if (!isIdentifierPart(ch)) {
      -                  break;
      -              }
      -  
      -              ++index;
      -              if (ch === '\\' && index < length) {
      -                  ch = source[index];
      -                  if (ch === 'u') {
      -                      ++index;
      -                      restore = index;
      -                      ch = scanHexEscape('u');
      -                      if (ch) {
      -                          flags += ch;
      -                          str += '\\u';
      -                          for (; restore < index; ++restore) {
      -                              str += source[restore];
      -                          }
      -                      } else {
      -                          index = restore;
      -                          flags += 'u';
      -                          str += '\\u';
      -                      }
      -                  } else {
      -                      str += '\\';
      -                  }
      -              } else {
      -                  flags += ch;
      -                  str += ch;
      -              }
      -          }
      -  
      -          try {
      -              value = new RegExp(pattern, flags);
      -          } catch (e) {
      -              throwError({}, Messages.InvalidRegExp);
      -          }
      -  
      -          return {
      -              literal: str,
      -              value: value,
      -              range: [start, index]
      -          };
      -      }
      -  
      -      function isIdentifierName(token) {
      -          return token.type === Token.Identifier ||
      -              token.type === Token.Keyword ||
      -              token.type === Token.BooleanLiteral ||
      -              token.type === Token.NullLiteral;
      -      }
      -  
      -      function advance() {
      -          var ch, token;
      -  
      -          skipComment();
      -  
      -          if (index >= length) {
      -              return {
      -                  type: Token.EOF,
      -                  lineNumber: lineNumber,
      -                  lineStart: lineStart,
      -                  range: [index, index]
      -              };
      -          }
      -  
      -          token = scanPunctuator();
      -          if (typeof token !== 'undefined') {
      -              return token;
      -          }
      -  
      -          ch = source[index];
      -  
      -          if (ch === '\'' || ch === '"') {
      -              return scanStringLiteral();
      -          }
      -  
      -          if (ch === '.' || isDecimalDigit(ch)) {
      -              return scanNumericLiteral();
      -          }
      -  
      -          token = scanIdentifier();
      -          if (typeof token !== 'undefined') {
      -              return token;
      -          }
      -  
      -          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -      }
      -  
      -      function lex() {
      -          var token;
      -  
      -          if (buffer) {
      -              index = buffer.range[1];
      -              lineNumber = buffer.lineNumber;
      -              lineStart = buffer.lineStart;
      -              token = buffer;
      -              buffer = null;
      -              return token;
      -          }
      -  
      -          buffer = null;
      -          return advance();
      -      }
      -  
      -      function lookahead() {
      -          var pos, line, start;
      -  
      -          if (buffer !== null) {
      -              return buffer;
      -          }
      -  
      -          pos = index;
      -          line = lineNumber;
      -          start = lineStart;
      -          buffer = advance();
      -          index = pos;
      -          lineNumber = line;
      -          lineStart = start;
      -  
      -          return buffer;
      -      }
      -  
      -      function lookahead2() {
      -          var adv, pos, line, start, result;
      -  
      -          // If we are collecting the tokens, don't grab the next one yet.
      -          adv = (typeof extra.advance === 'function') ? extra.advance : advance;
      -  
      -          pos = index;
      -          line = lineNumber;
      -          start = lineStart;
      -  
      -          // Scan for the next immediate token.
      -          if (buffer === null) {
      -              buffer = adv();
      -          }
      -          index = buffer.range[1];
      -          lineNumber = buffer.lineNumber;
      -          lineStart = buffer.lineStart;
      -  
      -          // Grab the token right after.
      -          result = adv();
      -          index = pos;
      -          lineNumber = line;
      -          lineStart = start;
      -  
      -          return result;
      -      }
      -  
      -      // Return true if there is a line terminator before the next token.
      -  
      -      function peekLineTerminator() {
      -          var pos, line, start, found;
      -  
      -          pos = index;
      -          line = lineNumber;
      -          start = lineStart;
      -          skipComment();
      -          found = lineNumber !== line;
      -          index = pos;
      -          lineNumber = line;
      -          lineStart = start;
      -  
      -          return found;
      -      }
      -  
      -      // Throw an exception
      -  
      -      function throwError(token, messageFormat) {
      -          var error,
      -              args = Array.prototype.slice.call(arguments, 2),
      -              msg = messageFormat.replace(
      -                  /%(\d)/g,
      -                  function (whole, index) {
      -                      return args[index] || '';
      -                  }
      -              );
      -  
      -          if (typeof token.lineNumber === 'number') {
      -              error = new Error('Line ' + token.lineNumber + ': ' + msg);
      -              error.index = token.range[0];
      -              error.lineNumber = token.lineNumber;
      -              error.column = token.range[0] - lineStart + 1;
      -          } else {
      -              error = new Error('Line ' + lineNumber + ': ' + msg);
      -              error.index = index;
      -              error.lineNumber = lineNumber;
      -              error.column = index - lineStart + 1;
      -          }
      -  
      -          throw error;
      -      }
      -  
      -      function throwErrorTolerant() {
      -          try {
      -              throwError.apply(null, arguments);
      -          } catch (e) {
      -              if (extra.errors) {
      -                  extra.errors.push(e);
      -              } else {
      -                  throw e;
      -              }
      -          }
      -      }
      -  
      -  
      -      // Throw an exception because of the token.
      -  
      -      function throwUnexpected(token) {
      -          if (token.type === Token.EOF) {
      -              throwError(token, Messages.UnexpectedEOS);
      -          }
      -  
      -          if (token.type === Token.NumericLiteral) {
      -              throwError(token, Messages.UnexpectedNumber);
      -          }
      -  
      -          if (token.type === Token.StringLiteral) {
      -              throwError(token, Messages.UnexpectedString);
      -          }
      -  
      -          if (token.type === Token.Identifier) {
      -              throwError(token, Messages.UnexpectedIdentifier);
      -          }
      -  
      -          if (token.type === Token.Keyword) {
      -              if (isFutureReservedWord(token.value)) {
      -                  throwError(token, Messages.UnexpectedReserved);
      -              } else if (strict && isStrictModeReservedWord(token.value)) {
      -                  throwError(token, Messages.StrictReservedWord);
      -              }
      -              throwError(token, Messages.UnexpectedToken, token.value);
      -          }
      -  
      -          // BooleanLiteral, NullLiteral, or Punctuator.
      -          throwError(token, Messages.UnexpectedToken, token.value);
      -      }
      -  
      -      // Expect the next token to match the specified punctuator.
      -      // If not, an exception will be thrown.
      -  
      -      function expect(value) {
      -          var token = lex();
      -          if (token.type !== Token.Punctuator || token.value !== value) {
      -              throwUnexpected(token);
      -          }
      -      }
      -  
      -      // Expect the next token to match the specified keyword.
      -      // If not, an exception will be thrown.
      -  
      -      function expectKeyword(keyword) {
      -          var token = lex();
      -          if (token.type !== Token.Keyword || token.value !== keyword) {
      -              throwUnexpected(token);
      -          }
      -      }
      -  
      -      // Return true if the next token matches the specified punctuator.
      -  
      -      function match(value) {
      -          var token = lookahead();
      -          return token.type === Token.Punctuator && token.value === value;
      -      }
      -  
      -      // Return true if the next token matches the specified keyword
      -  
      -      function matchKeyword(keyword) {
      -          var token = lookahead();
      -          return token.type === Token.Keyword && token.value === keyword;
      -      }
      -  
      -  
      -      // Return true if the next token matches the specified contextual keyword
      -  
      -      function matchContextualKeyword(keyword) {
      -          var token = lookahead();
      -          return token.type === Token.Identifier && token.value === keyword;
      -      }
      -  
      -      // Return true if the next token is an assignment operator
      -  
      -      function matchAssign() {
      -          var token = lookahead(),
      -              op = token.value;
      -  
      -          if (token.type !== Token.Punctuator) {
      -              return false;
      -          }
      -          return op === '=' ||
      -              op === '*=' ||
      -              op === '/=' ||
      -              op === '%=' ||
      -              op === '+=' ||
      -              op === '-=' ||
      -              op === '<<=' ||
      -              op === '>>=' ||
      -              op === '>>>=' ||
      -              op === '&=' ||
      -              op === '^=' ||
      -              op === '|=';
      -      }
      -  
      -      function consumeSemicolon() {
      -          var token, line;
      -  
      -          // Catch the very common case first.
      -          if (source[index] === ';') {
      -              lex();
      -              return;
      -          }
      -  
      -          line = lineNumber;
      -          skipComment();
      -          if (lineNumber !== line) {
      -              return;
      -          }
      -  
      -          if (match(';')) {
      -              lex();
      -              return;
      -          }
      -  
      -          token = lookahead();
      -          if (token.type !== Token.EOF && !match('}')) {
      -              throwUnexpected(token);
      -          }
      -          return;
      -      }
      -  
      -      // Return true if provided expression is LeftHandSideExpression
      -  
      -      function isLeftHandSide(expr) {
      -          return expr.type === Syntax.Identifier || expr.type === Syntax.MemberExpression;
      -      }
      -  
      -      function isAssignableLeftHandSide(expr) {
      -          return isLeftHandSide(expr) || expr.type === Syntax.ObjectPattern || expr.type === Syntax.ArrayPattern;
      -      }
      -  
      -      // 11.1.4 Array Initialiser
      -  
      -      function parseArrayInitialiser() {
      -          var elements = [],
      -              undef;
      -  
      -          expect('[');
      -  
      -          while (!match(']')) {
      -              if (match(',')) {
      -                  lex();
      -                  elements.push(undef);
      -              } else {
      -                  elements.push(parseAssignmentExpression());
      -  
      -                  if (!match(']')) {
      -                      expect(',');
      -                  }
      -              }
      -          }
      -  
      -          expect(']');
      -  
      -          return {
      -              type: Syntax.ArrayExpression,
      -              elements: elements
      -          };
      -      }
      -  
      -      // 11.1.5 Object Initialiser
      -  
      -      function parsePropertyFunction(param, options) {
      -          var previousStrict, previousYieldAllowed, body;
      -  
      -          previousStrict = strict;
      -          previousYieldAllowed = yieldAllowed;
      -          yieldAllowed = options.generator;
      -          body = parseConciseBody();
      -          if (options.name && strict && isRestrictedWord(param[0].name)) {
      -              throwError(options.name, Messages.StrictParamName);
      -          }
      -          if (yieldAllowed && !yieldFound) {
      -              throwError({}, Messages.NoYieldInGenerator);
      -          }
      -          strict = previousStrict;
      -          yieldAllowed = previousYieldAllowed;
      -  
      -          return {
      -              type: Syntax.FunctionExpression,
      -              id: null,
      -              params: param,
      -              body: body,
      -              generator: options.generator
      -          };
      -      }
      -  
      -      function parsePropertyMethodFunction(options) {
      -          var token, previousStrict, param, params, paramSet, method;
      -  
      -          previousStrict = strict;
      -          strict = true;
      -          params = [];
      -  
      -          expect('(');
      -  
      -          if (!match(')')) {
      -              paramSet = {};
      -              while (index < length) {
      -                  token = lookahead();
      -                  param = parseVariableIdentifier();
      -                  if (isRestrictedWord(token.value)) {
      -                      throwError(token, Messages.StrictParamName);
      -                  }
      -                  if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
      -                      throwError(token, Messages.StrictParamDupe);
      -                  }
      -                  params.push(param);
      -                  paramSet[param.name] = true;
      -                  if (match(')')) {
      -                      break;
      -                  }
      -                  expect(',');
      -              }
      -          }
      -  
      -          expect(')');
      -  
      -          method = parsePropertyFunction(params, { generator: options.generator });
      -  
      -          strict = previousStrict;
      -  
      -          return method;
      -      }
      -  
      -      function parseObjectPropertyKey() {
      -          var token = lex();
      -  
      -          // Note: This function is called only from parseObjectProperty(), where
      -          // EOF and Punctuator tokens are already filtered out.
      -  
      -          if (token.type === Token.StringLiteral || token.type === Token.NumericLiteral) {
      -              if (strict && token.octal) {
      -                  throwError(token, Messages.StrictOctalLiteral);
      -              }
      -              return createLiteral(token);
      -          }
      -  
      -          return {
      -              type: Syntax.Identifier,
      -              name: token.value
      -          };
      -      }
      -  
      -      function parseObjectProperty() {
      -          var token, key, id, param;
      -  
      -          token = lookahead();
      -  
      -          if (token.type === Token.Identifier) {
      -  
      -              id = parseObjectPropertyKey();
      -  
      -              // Property Assignment: Getter and Setter.
      -  
      -              if (token.value === 'get' && !(match(':') || match('('))) {
      -                  key = parseObjectPropertyKey();
      -                  expect('(');
      -                  expect(')');
      -                  return {
      -                      type: Syntax.Property,
      -                      key: key,
      -                      value: parsePropertyFunction([], { generator: false }),
      -                      kind: 'get'
      -                  };
      -              } else if (token.value === 'set' && !(match(':') || match('('))) {
      -                  key = parseObjectPropertyKey();
      -                  expect('(');
      -                  token = lookahead();
      -                  param = [ parseVariableIdentifier() ];
      -                  expect(')');
      -                  return {
      -                      type: Syntax.Property,
      -                      key: key,
      -                      value: parsePropertyFunction(param, { generator: false, name: token }),
      -                      kind: 'set'
      -                  };
      -              } else {
      -                  if (match(':')) {
      -                      lex();
      -                      return {
      -                          type: Syntax.Property,
      -                          key: id,
      -                          value: parseAssignmentExpression(),
      -                          kind: 'init'
      -                      };
      -                  } else if (match('(')) {
      -                      return {
      -                          type: Syntax.Property,
      -                          key: id,
      -                          value: parsePropertyMethodFunction({ generator: false }),
      -                          kind: 'init',
      -                          method: true
      -                      };
      -                  } else {
      -                      return {
      -                          type: Syntax.Property,
      -                          key: id,
      -                          value: id,
      -                          kind: 'init',
      -                          shorthand: true
      -                      };
      -                  }
      -              }
      -          } else if (token.type === Token.EOF || token.type === Token.Punctuator) {
      -              if (!match('*')) {
      -                  throwUnexpected(token);
      -              }
      -              lex();
      -  
      -              id = parseObjectPropertyKey();
      -  
      -              if (!match('(')) {
      -                  throwUnexpected(lex());
      -              }
      -  
      -              return {
      -                  type: Syntax.Property,
      -                  key: id,
      -                  value: parsePropertyMethodFunction({ generator: true }),
      -                  kind: 'init',
      -                  method: true
      -              };
      -          } else {
      -              key = parseObjectPropertyKey();
      -              if (match(':')) {
      -                  lex();
      -                  return {
      -                      type: Syntax.Property,
      -                      key: key,
      -                      value: parseAssignmentExpression(),
      -                      kind: 'init'
      -                  };
      -              } else if (match('(')) {
      -                  return {
      -                      type: Syntax.Property,
      -                      key: key,
      -                      value: parsePropertyMethodFunction({ generator: false }),
      -                      kind: 'init',
      -                      method: true
      -                  };
      -              } else {
      -                  return {
      -                      type: Syntax.Property,
      -                      key: key,
      -                      value: key,
      -                      kind: 'init',
      -                      shorthand: true
      -                  };
      -              }
      -          }
      -      }
      -  
      -      function parseObjectInitialiser() {
      -          var properties = [], property, name, kind, map = {}, toString = String;
      -  
      -          expect('{');
      -  
      -          while (!match('}')) {
      -              property = parseObjectProperty();
      -  
      -              if (property.key.type === Syntax.Identifier) {
      -                  name = property.key.name;
      -              } else {
      -                  name = toString(property.key.value);
      -              }
      -              kind = (property.kind === 'init') ? PropertyKind.Data : (property.kind === 'get') ? PropertyKind.Get : PropertyKind.Set;
      -              if (Object.prototype.hasOwnProperty.call(map, name)) {
      -                  if (map[name] === PropertyKind.Data) {
      -                      if (strict && kind === PropertyKind.Data) {
      -                          throwErrorTolerant({}, Messages.StrictDuplicateProperty);
      -                      } else if (kind !== PropertyKind.Data) {
      -                          throwError({}, Messages.AccessorDataProperty);
      -                      }
      -                  } else {
      -                      if (kind === PropertyKind.Data) {
      -                          throwError({}, Messages.AccessorDataProperty);
      -                      } else if (map[name] & kind) {
      -                          throwError({}, Messages.AccessorGetSet);
      -                      }
      -                  }
      -                  map[name] |= kind;
      -              } else {
      -                  map[name] = kind;
      -              }
      -  
      -              properties.push(property);
      -  
      -              if (!match('}')) {
      -                  expect(',');
      -              }
      -          }
      -  
      -          expect('}');
      -  
      -          return {
      -              type: Syntax.ObjectExpression,
      -              properties: properties
      -          };
      -      }
      -  
      -      // 11.1 Primary Expressions
      -  
      -      function parsePrimaryExpression() {
      -          var expr,
      -              token = lookahead(),
      -              type = token.type;
      -  
      -          if (type === Token.Identifier) {
      -              return {
      -                  type: Syntax.Identifier,
      -                  name: lex().value
      -              };
      -          }
      -  
      -          if (type === Token.StringLiteral || type === Token.NumericLiteral) {
      -              if (strict && token.octal) {
      -                  throwErrorTolerant(token, Messages.StrictOctalLiteral);
      -              }
      -              return createLiteral(lex());
      -          }
      -  
      -          if (type === Token.Keyword) {
      -              if (matchKeyword('this')) {
      -                  lex();
      -                  return {
      -                      type: Syntax.ThisExpression
      -                  };
      -              }
      -  
      -              if (matchKeyword('function')) {
      -                  return parseFunctionExpression();
      -              }
      -  
      -              if (matchKeyword('class')) {
      -                  return parseClassExpression();
      -              }
      -  
      -              if (matchKeyword('super')) {
      -                  lex();
      -                  return {
      -                      type: Syntax.Identifier,
      -                      name: 'super'
      -                  };
      -              }
      -          }
      -  
      -          if (type === Token.BooleanLiteral) {
      -              lex();
      -              token.value = (token.value === 'true');
      -              return createLiteral(token);
      -          }
      -  
      -          if (type === Token.NullLiteral) {
      -              lex();
      -              token.value = null;
      -              return createLiteral(token);
      -          }
      -  
      -          if (match('[')) {
      -              return parseArrayInitialiser();
      -          }
      -  
      -          if (match('{')) {
      -              return parseObjectInitialiser();
      -          }
      -  
      -          if (match('(')) {
      -              lex();
      -              state.lastParenthesized = expr = parseExpression();
      -              state.parenthesizedCount += 1;
      -              expect(')');
      -              return expr;
      -          }
      -  
      -          if (match('/') || match('/=')) {
      -              return createLiteral(scanRegExp());
      -          }
      -  
      -          return throwUnexpected(lex());
      -      }
      -  
      -      // 11.2 Left-Hand-Side Expressions
      -  
      -      function parseArguments() {
      -          var args = [];
      -  
      -          expect('(');
      -  
      -          if (!match(')')) {
      -              while (index < length) {
      -                  args.push(parseAssignmentExpression());
      -                  if (match(')')) {
      -                      break;
      -                  }
      -                  expect(',');
      -              }
      -          }
      -  
      -          expect(')');
      -  
      -          return args;
      -      }
      -  
      -      function parseNonComputedProperty() {
      -          var token = lex();
      -  
      -          if (!isIdentifierName(token)) {
      -              throwUnexpected(token);
      -          }
      -  
      -          return {
      -              type: Syntax.Identifier,
      -              name: token.value
      -          };
      -      }
      -  
      -      function parseNonComputedMember(object) {
      -          return {
      -              type: Syntax.MemberExpression,
      -              computed: false,
      -              object: object,
      -              property: parseNonComputedProperty()
      -          };
      -      }
      -  
      -      function parseComputedMember(object) {
      -          var property, expr;
      -  
      -          expect('[');
      -          property = parseExpression();
      -          expr = {
      -              type: Syntax.MemberExpression,
      -              computed: true,
      -              object: object,
      -              property: property
      -          };
      -          expect(']');
      -          return expr;
      -      }
      -  
      -      function parseCallMember(object) {
      -          return {
      -              type: Syntax.CallExpression,
      -              callee: object,
      -              'arguments': parseArguments()
      -          };
      -      }
      -  
      -      function parseNewExpression() {
      -          var expr;
      -  
      -          expectKeyword('new');
      -  
      -          expr = {
      -              type: Syntax.NewExpression,
      -              callee: parseLeftHandSideExpression(),
      -              'arguments': []
      -          };
      -  
      -          if (match('(')) {
      -              expr['arguments'] = parseArguments();
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      function parseLeftHandSideExpressionAllowCall() {
      -          var useNew, expr;
      -  
      -          useNew = matchKeyword('new');
      -          expr = useNew ? parseNewExpression() : parsePrimaryExpression();
      -  
      -          while (index < length) {
      -              if (match('.')) {
      -                  lex();
      -                  expr = parseNonComputedMember(expr);
      -              } else if (match('[')) {
      -                  expr = parseComputedMember(expr);
      -              } else if (match('(')) {
      -                  expr = parseCallMember(expr);
      -              } else {
      -                  break;
      -              }
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      function parseLeftHandSideExpression() {
      -          var useNew, expr;
      -  
      -          useNew = matchKeyword('new');
      -          expr = useNew ? parseNewExpression() : parsePrimaryExpression();
      -  
      -          while (index < length) {
      -              if (match('.')) {
      -                  lex();
      -                  expr = parseNonComputedMember(expr);
      -              } else if (match('[')) {
      -                  expr = parseComputedMember(expr);
      -              } else {
      -                  break;
      -              }
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.3 Postfix Expressions
      -  
      -      function parsePostfixExpression() {
      -          var expr = parseLeftHandSideExpressionAllowCall();
      -  
      -          if ((match('++') || match('--')) && !peekLineTerminator()) {
      -              // 11.3.1, 11.3.2
      -              if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
      -                  throwError({}, Messages.StrictLHSPostfix);
      -              }
      -  
      -              if (!isLeftHandSide(expr)) {
      -                  throwError({}, Messages.InvalidLHSInAssignment);
      -              }
      -  
      -              expr = {
      -                  type: Syntax.UpdateExpression,
      -                  operator: lex().value,
      -                  argument: expr,
      -                  prefix: false
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.4 Unary Operators
      -  
      -      function parseUnaryExpression() {
      -          var token, expr;
      -  
      -          if (match('++') || match('--')) {
      -              token = lex();
      -              expr = parseUnaryExpression();
      -              // 11.4.4, 11.4.5
      -              if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
      -                  throwError({}, Messages.StrictLHSPrefix);
      -              }
      -  
      -              if (!isLeftHandSide(expr)) {
      -                  throwError({}, Messages.InvalidLHSInAssignment);
      -              }
      -  
      -              expr = {
      -                  type: Syntax.UpdateExpression,
      -                  operator: token.value,
      -                  argument: expr,
      -                  prefix: true
      -              };
      -              return expr;
      -          }
      -  
      -          if (match('+') || match('-') || match('~') || match('!')) {
      -              expr = {
      -                  type: Syntax.UnaryExpression,
      -                  operator: lex().value,
      -                  argument: parseUnaryExpression()
      -              };
      -              return expr;
      -          }
      -  
      -          if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {
      -              expr = {
      -                  type: Syntax.UnaryExpression,
      -                  operator: lex().value,
      -                  argument: parseUnaryExpression()
      -              };
      -              if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) {
      -                  throwErrorTolerant({}, Messages.StrictDelete);
      -              }
      -              return expr;
      -          }
      -  
      -          return parsePostfixExpression();
      -      }
      -  
      -      // 11.5 Multiplicative Operators
      -  
      -      function parseMultiplicativeExpression() {
      -          var expr = parseUnaryExpression();
      -  
      -          while (match('*') || match('/') || match('%')) {
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: lex().value,
      -                  left: expr,
      -                  right: parseUnaryExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.6 Additive Operators
      -  
      -      function parseAdditiveExpression() {
      -          var expr = parseMultiplicativeExpression();
      -  
      -          while (match('+') || match('-')) {
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: lex().value,
      -                  left: expr,
      -                  right: parseMultiplicativeExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.7 Bitwise Shift Operators
      -  
      -      function parseShiftExpression() {
      -          var expr = parseAdditiveExpression();
      -  
      -          while (match('<<') || match('>>') || match('>>>')) {
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: lex().value,
      -                  left: expr,
      -                  right: parseAdditiveExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -      // 11.8 Relational Operators
      -  
      -      function parseRelationalExpression() {
      -          var expr, previousAllowIn;
      -  
      -          previousAllowIn = state.allowIn;
      -          state.allowIn = true;
      -  
      -          expr = parseShiftExpression();
      -  
      -          while (match('<') || match('>') || match('<=') || match('>=') || (previousAllowIn && matchKeyword('in')) || matchKeyword('instanceof')) {
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: lex().value,
      -                  left: expr,
      -                  right: parseShiftExpression()
      -              };
      -          }
      -  
      -          state.allowIn = previousAllowIn;
      -          return expr;
      -      }
      -  
      -      // 11.9 Equality Operators
      -  
      -      function parseEqualityExpression() {
      -          var expr = parseRelationalExpression();
      -  
      -          while ((!peekLineTerminator() && (matchContextualKeyword('is') || matchContextualKeyword('isnt'))) || match('==') || match('!=') || match('===') || match('!==')) {
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: lex().value,
      -                  left: expr,
      -                  right: parseRelationalExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.10 Binary Bitwise Operators
      -  
      -      function parseBitwiseANDExpression() {
      -          var expr = parseEqualityExpression();
      -  
      -          while (match('&')) {
      -              lex();
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: '&',
      -                  left: expr,
      -                  right: parseEqualityExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      function parseBitwiseXORExpression() {
      -          var expr = parseBitwiseANDExpression();
      -  
      -          while (match('^')) {
      -              lex();
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: '^',
      -                  left: expr,
      -                  right: parseBitwiseANDExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      function parseBitwiseORExpression() {
      -          var expr = parseBitwiseXORExpression();
      -  
      -          while (match('|')) {
      -              lex();
      -              expr = {
      -                  type: Syntax.BinaryExpression,
      -                  operator: '|',
      -                  left: expr,
      -                  right: parseBitwiseXORExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.11 Binary Logical Operators
      -  
      -      function parseLogicalANDExpression() {
      -          var expr = parseBitwiseORExpression();
      -  
      -          while (match('&&')) {
      -              lex();
      -              expr = {
      -                  type: Syntax.LogicalExpression,
      -                  operator: '&&',
      -                  left: expr,
      -                  right: parseBitwiseORExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      function parseLogicalORExpression() {
      -          var expr = parseLogicalANDExpression();
      -  
      -          while (match('||')) {
      -              lex();
      -              expr = {
      -                  type: Syntax.LogicalExpression,
      -                  operator: '||',
      -                  left: expr,
      -                  right: parseLogicalANDExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.12 Conditional Operator
      -  
      -      function parseConditionalExpression() {
      -          var expr, previousAllowIn, consequent;
      -  
      -          expr = parseLogicalORExpression();
      -  
      -          if (match('?')) {
      -              lex();
      -              previousAllowIn = state.allowIn;
      -              state.allowIn = true;
      -              consequent = parseAssignmentExpression();
      -              state.allowIn = previousAllowIn;
      -              expect(':');
      -  
      -              expr = {
      -                  type: Syntax.ConditionalExpression,
      -                  test: expr,
      -                  consequent: consequent,
      -                  alternate: parseAssignmentExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.13 Assignment Operators
      -  
      -      function reinterpretAsAssignmentBindingPattern(expr) {
      -          var i, len, property, element;
      -  
      -          if (expr.type === Syntax.ObjectExpression) {
      -              expr.type = Syntax.ObjectPattern;
      -              for (i = 0, len = expr.properties.length; i < len; i += 1) {
      -                  property = expr.properties[i];
      -                  if (property.kind !== 'init') {
      -                      throwError({}, Messages.InvalidLHSInAssignment);
      -                  }
      -                  reinterpretAsAssignmentBindingPattern(property.value);
      -              }
      -          } else if (expr.type === Syntax.ArrayExpression) {
      -              expr.type = Syntax.ArrayPattern;
      -              for (i = 0, len = expr.elements.length; i < len; i += 1) {
      -                  element = expr.elements[i];
      -                  if (element) {
      -                      reinterpretAsAssignmentBindingPattern(element);
      -                  }
      -              }
      -          } else if (expr.type === Syntax.Identifier) {
      -              if (isRestrictedWord(expr.name)) {
      -                  throwError({}, Messages.InvalidLHSInAssignment);
      -              }
      -          } else {
      -              if (expr.type !== Syntax.MemberExpression && expr.type !== Syntax.CallExpression && expr.type !== Syntax.NewExpression) {
      -                  throwError({}, Messages.InvalidLHSInAssignment);
      -              }
      -          }
      -      }
      -  
      -      function reinterpretAsCoverFormalsList(expr) {
      -          var i, len, param, paramSet;
      -          assert(expr.type === Syntax.SequenceExpression);
      -  
      -          paramSet = {};
      -  
      -          for (i = 0, len = expr.expressions.length; i < len; i += 1) {
      -              param = expr.expressions[i];
      -              if (param.type !== Syntax.Identifier) {
      -                  return null;
      -              }
      -              if (isRestrictedWord(param.name)) {
      -                  throwError({}, Messages.StrictParamName);
      -              }
      -              if (Object.prototype.hasOwnProperty.call(paramSet, param.name)) {
      -                  throwError({}, Messages.StrictParamDupe);
      -              }
      -              paramSet[param.name] = true;
      -          }
      -          return expr.expressions;
      -      }
      -  
      -      function parseArrowFunctionExpression(param) {
      -          var previousStrict, previousYieldAllowed, body;
      -  
      -          expect('=>');
      -  
      -          previousStrict = strict;
      -          previousYieldAllowed = yieldAllowed;
      -          strict = true;
      -          yieldAllowed = false;
      -          body = parseConciseBody();
      -          strict = previousStrict;
      -          yieldAllowed = previousYieldAllowed;
      -  
      -          return {
      -              type: Syntax.ArrowFunctionExpression,
      -              id: null,
      -              params: param,
      -              body: body
      -          };
      -      }
      -  
      -      function parseAssignmentExpression() {
      -          var expr, token, oldParenthesizedCount, coverFormalsList;
      -  
      -          if (matchKeyword('yield')) {
      -              return parseYieldExpression();
      -          }
      -  
      -          oldParenthesizedCount = state.parenthesizedCount;
      -  
      -          if (match('(')) {
      -              token = lookahead2();
      -              if (token.type === Token.Punctuator && token.value === ')') {
      -                  lex();
      -                  lex();
      -                  if (!match('=>')) {
      -                      throwUnexpected(lex());
      -                  }
      -                  return parseArrowFunctionExpression([]);
      -              }
      -          }
      -  
      -          expr = parseConditionalExpression();
      -  
      -          if (match('=>')) {
      -              if (expr.type === Syntax.Identifier) {
      -                  if (state.parenthesizedCount === oldParenthesizedCount || state.parenthesizedCount === (oldParenthesizedCount + 1)) {
      -                      if (isRestrictedWord(expr.name)) {
      -                          throwError({}, Messages.StrictParamName);
      -                      }
      -                      return parseArrowFunctionExpression([ expr ]);
      -                  }
      -              } else if (expr.type === Syntax.SequenceExpression) {
      -                  if (state.parenthesizedCount === (oldParenthesizedCount + 1)) {
      -                      coverFormalsList = reinterpretAsCoverFormalsList(expr);
      -                      if (coverFormalsList) {
      -                          return parseArrowFunctionExpression(coverFormalsList);
      -                      }
      -                  }
      -              }
      -          }
      -  
      -          if (matchAssign()) {
      -              // 11.13.1
      -              if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
      -                  throwError({}, Messages.StrictLHSAssignment);
      -              }
      -  
      -              // ES.next draf 11.13 Runtime Semantics step 1
      -              if (match('=') && (expr.type === Syntax.ObjectExpression || expr.type === Syntax.ArrayExpression)) {
      -                  reinterpretAsAssignmentBindingPattern(expr);
      -              } else if (!isLeftHandSide(expr)) {
      -                  throwError({}, Messages.InvalidLHSInAssignment);
      -              }
      -  
      -              expr = {
      -                  type: Syntax.AssignmentExpression,
      -                  operator: lex().value,
      -                  left: expr,
      -                  right: parseAssignmentExpression()
      -              };
      -          }
      -  
      -          return expr;
      -      }
      -  
      -      // 11.14 Comma Operator
      -  
      -      function parseExpression() {
      -          var expr = parseAssignmentExpression();
      -  
      -          if (match(',')) {
      -              expr = {
      -                  type: Syntax.SequenceExpression,
      -                  expressions: [ expr ]
      -              };
      -  
      -              while (index < length) {
      -                  if (!match(',')) {
      -                      break;
      -                  }
      -                  lex();
      -                  expr.expressions.push(parseAssignmentExpression());
      -              }
      -  
      -          }
      -          return expr;
      -      }
      -  
      -      // 12.1 Block
      -  
      -      function parseStatementList() {
      -          var list = [],
      -              statement;
      -  
      -          while (index < length) {
      -              if (match('}')) {
      -                  break;
      -              }
      -              statement = parseSourceElement();
      -              if (typeof statement === 'undefined') {
      -                  break;
      -              }
      -              list.push(statement);
      -          }
      -  
      -          return list;
      -      }
      -  
      -      function parseBlock() {
      -          var block;
      -  
      -          expect('{');
      -  
      -          block = parseStatementList();
      -  
      -          expect('}');
      -  
      -          return {
      -              type: Syntax.BlockStatement,
      -              body: block
      -          };
      -      }
      -  
      -      // 12.2 Variable Statement
      -  
      -      function parseVariableIdentifier() {
      -          var token = lex();
      -  
      -          if (token.type !== Token.Identifier) {
      -              throwUnexpected(token);
      -          }
      -  
      -          return {
      -              type: Syntax.Identifier,
      -              name: token.value
      -          };
      -      }
      -  
      -      function parseVariableDeclaration(kind) {
      -          var id = parseVariableIdentifier(),
      -              init = null;
      -  
      -          // 12.2.1
      -          if (strict && isRestrictedWord(id.name)) {
      -              throwErrorTolerant({}, Messages.StrictVarName);
      -          }
      -  
      -          if (kind === 'const') {
      -              expect('=');
      -              init = parseAssignmentExpression();
      -          } else if (match('=')) {
      -              lex();
      -              init = parseAssignmentExpression();
      -          }
      -  
      -          return {
      -              type: Syntax.VariableDeclarator,
      -              id: id,
      -              init: init
      -          };
      -      }
      -  
      -      function parseVariableDeclarationList(kind) {
      -          var list = [];
      -  
      -          while (index < length) {
      -              list.push(parseVariableDeclaration(kind));
      -              if (!match(',')) {
      -                  break;
      -              }
      -              lex();
      -          }
      -  
      -          return list;
      -      }
      -  
      -      function parseVariableStatement() {
      -          var declarations;
      -  
      -          expectKeyword('var');
      -  
      -          declarations = parseVariableDeclarationList();
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.VariableDeclaration,
      -              declarations: declarations,
      -              kind: 'var'
      -          };
      -      }
      -  
      -      // kind may be `const` or `let`
      -      // Both are experimental and not in the specification yet.
      -      // see http://wiki.ecmascript.org/doku.php?id=harmony:const
      -      // and http://wiki.ecmascript.org/doku.php?id=harmony:let
      -      function parseConstLetDeclaration(kind) {
      -          var declarations;
      -  
      -          expectKeyword(kind);
      -  
      -          declarations = parseVariableDeclarationList(kind);
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.VariableDeclaration,
      -              declarations: declarations,
      -              kind: kind
      -          };
      -      }
      -  
      -      // http://wiki.ecmascript.org/doku.php?id=harmony:modules
      -  
      -      function parsePath() {
      -          var result, id;
      -  
      -          result = {
      -              type: Syntax.Path,
      -              body: []
      -          };
      -  
      -          while (true) {
      -              id = parseVariableIdentifier();
      -              result.body.push(id);
      -              if (!match('.')) {
      -                  break;
      -              }
      -              lex();
      -          }
      -  
      -          return result;
      -      }
      -  
      -      function parseGlob() {
      -          expect('*');
      -          return {
      -              type: Syntax.Glob
      -          };
      -      }
      -  
      -      function parseModuleDeclaration() {
      -          var id, token, declaration;
      -  
      -          token = lex();
      -          if (token.value !== 'module') {
      -              throwUnexpected(token);
      -          }
      -  
      -          id = parseVariableIdentifier();
      -  
      -          if (match('{')) {
      -              return {
      -                  type: Syntax.ModuleDeclaration,
      -                  id: id,
      -                  body: parseModuleBlock()
      -              };
      -          }
      -  
      -          expect('=');
      -  
      -          token = lookahead();
      -          if (token.type === Token.StringLiteral) {
      -              declaration = {
      -                  type: Syntax.ModuleDeclaration,
      -                  id: id,
      -                  from: parsePrimaryExpression()
      -              };
      -          } else {
      -              declaration = {
      -                  type: Syntax.ModuleDeclaration,
      -                  id: id,
      -                  from: parsePath()
      -              };
      -          }
      -  
      -          consumeSemicolon();
      -  
      -          return declaration;
      -      }
      -  
      -      function parseExportSpecifierSetProperty() {
      -          var specifier;
      -  
      -          specifier = {
      -              type: Syntax.ExportSpecifier,
      -              id: parseVariableIdentifier(),
      -              from: null
      -          };
      -  
      -          if (match(':')) {
      -              lex();
      -              specifier.from = parsePath();
      -          }
      -  
      -          return specifier;
      -      }
      -  
      -      function parseExportSpecifier() {
      -          var specifier, specifiers;
      -  
      -          if (match('{')) {
      -              lex();
      -              specifiers = [];
      -  
      -              do {
      -                  specifiers.push(parseExportSpecifierSetProperty());
      -              } while (match(',') && lex());
      -  
      -              expect('}');
      -  
      -              return {
      -                  type: Syntax.ExportSpecifierSet,
      -                  specifiers: specifiers
      -              };
      -          }
      -  
      -          if (match('*')) {
      -              specifier = {
      -                  type: Syntax.ExportSpecifier,
      -                  id: parseGlob(),
      -                  from: null
      -              };
      -  
      -              if (matchContextualKeyword('from')) {
      -                  lex();
      -                  specifier.from = parsePath();
      -              }
      -          } else {
      -              specifier = {
      -                  type: Syntax.ExportSpecifier,
      -                  id: parseVariableIdentifier(),
      -                  from: null
      -              };
      -          }
      -          return specifier;
      -      }
      -  
      -      function parseExportDeclaration() {
      -          var token, specifiers;
      -  
      -          expectKeyword('export');
      -  
      -          token = lookahead();
      -  
      -          if (token.type === Token.Keyword || (token.type === Token.Identifier && token.value === 'module')) {
      -              switch (token.value) {
      -              case 'function':
      -                  return {
      -                      type: Syntax.ExportDeclaration,
      -                      declaration: parseFunctionDeclaration()
      -                  };
      -              case 'module':
      -                  return {
      -                      type: Syntax.ExportDeclaration,
      -                      declaration: parseModuleDeclaration()
      -                  };
      -              case 'let':
      -              case 'const':
      -                  return {
      -                      type: Syntax.ExportDeclaration,
      -                      declaration: parseConstLetDeclaration(token.value)
      -                  };
      -              case 'var':
      -                  return {
      -                      type: Syntax.ExportDeclaration,
      -                      declaration: parseStatement()
      -                  };
      -              }
      -              throwUnexpected(lex());
      -          }
      -  
      -          specifiers = [ parseExportSpecifier() ];
      -          if (match(',')) {
      -              while (index < length) {
      -                  if (!match(',')) {
      -                      break;
      -                  }
      -                  lex();
      -                  specifiers.push(parseExportSpecifier());
      -              }
      -          }
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.ExportDeclaration,
      -              specifiers: specifiers
      -          };
      -      }
      -  
      -      function parseImportDeclaration() {
      -          var specifiers, from;
      -  
      -          expectKeyword('import');
      -  
      -          if (match('*')) {
      -              specifiers = [parseGlob()];
      -          } else if (match('{')) {
      -              lex();
      -              specifiers = [];
      -  
      -              do {
      -                  specifiers.push(parseImportSpecifier());
      -              } while (match(',') && lex());
      -  
      -              expect('}');
      -          } else {
      -              specifiers = [parseVariableIdentifier()];
      -          }
      -  
      -          if (!matchContextualKeyword('from')) {
      -              throwError({}, Messages.NoFromAfterImport);
      -          }
      -  
      -          lex();
      -  
      -          if (lookahead().type === Token.StringLiteral) {
      -              from = parsePrimaryExpression();
      -          } else {
      -              from = parsePath();
      -          }
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.ImportDeclaration,
      -              specifiers: specifiers,
      -              from: from
      -          };
      -      }
      -  
      -      function parseImportSpecifier() {
      -          var specifier;
      -  
      -          specifier = {
      -              type: Syntax.ImportSpecifier,
      -              id: parseVariableIdentifier(),
      -              from: null
      -          };
      -  
      -          if (match(':')) {
      -              lex();
      -              specifier.from = parsePath();
      -          }
      -  
      -          return specifier;
      -      }
      -  
      -      // 12.3 Empty Statement
      -  
      -      function parseEmptyStatement() {
      -          expect(';');
      -  
      -          return {
      -              type: Syntax.EmptyStatement
      -          };
      -      }
      -  
      -      // 12.4 Expression Statement
      -  
      -      function parseExpressionStatement() {
      -          var expr = parseExpression();
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.ExpressionStatement,
      -              expression: expr
      -          };
      -      }
      -  
      -      // 12.5 If statement
      -  
      -      function parseIfStatement() {
      -          var test, consequent, alternate;
      -  
      -          expectKeyword('if');
      -  
      -          expect('(');
      -  
      -          test = parseExpression();
      -  
      -          expect(')');
      -  
      -          consequent = parseStatement();
      -  
      -          if (matchKeyword('else')) {
      -              lex();
      -              alternate = parseStatement();
      -          } else {
      -              alternate = null;
      -          }
      -  
      -          return {
      -              type: Syntax.IfStatement,
      -              test: test,
      -              consequent: consequent,
      -              alternate: alternate
      -          };
      -      }
      -  
      -      // 12.6 Iteration Statements
      -  
      -      function parseDoWhileStatement() {
      -          var body, test, oldInIteration;
      -  
      -          expectKeyword('do');
      -  
      -          oldInIteration = state.inIteration;
      -          state.inIteration = true;
      -  
      -          body = parseStatement();
      -  
      -          state.inIteration = oldInIteration;
      -  
      -          expectKeyword('while');
      -  
      -          expect('(');
      -  
      -          test = parseExpression();
      -  
      -          expect(')');
      -  
      -          if (match(';')) {
      -              lex();
      -          }
      -  
      -          return {
      -              type: Syntax.DoWhileStatement,
      -              body: body,
      -              test: test
      -          };
      -      }
      -  
      -      function parseWhileStatement() {
      -          var test, body, oldInIteration;
      -  
      -          expectKeyword('while');
      -  
      -          expect('(');
      -  
      -          test = parseExpression();
      -  
      -          expect(')');
      -  
      -          oldInIteration = state.inIteration;
      -          state.inIteration = true;
      -  
      -          body = parseStatement();
      -  
      -          state.inIteration = oldInIteration;
      -  
      -          return {
      -              type: Syntax.WhileStatement,
      -              test: test,
      -              body: body
      -          };
      -      }
      -  
      -      function parseForVariableDeclaration() {
      -          var token = lex();
      -  
      -          return {
      -              type: Syntax.VariableDeclaration,
      -              declarations: parseVariableDeclarationList(),
      -              kind: token.value
      -          };
      -      }
      -  
      -      function parseForStatement() {
      -          var init, test, update, left, right, body, operator, oldInIteration;
      -  
      -          init = test = update = null;
      -  
      -          expectKeyword('for');
      -  
      -          expect('(');
      -  
      -          if (match(';')) {
      -              lex();
      -          } else {
      -              if (matchKeyword('var') || matchKeyword('let') || matchKeyword('const')) {
      -                  state.allowIn = false;
      -                  init = parseForVariableDeclaration();
      -                  state.allowIn = true;
      -  
      -                  if (init.declarations.length === 1) {
      -                      if (matchKeyword('in') || matchContextualKeyword('of')) {
      -                          operator = lookahead();
      -                          if (!((operator.value === 'in' || init.kind !== 'var') && init.declarations[0].init)) {
      -                              lex();
      -                              left = init;
      -                              right = parseExpression();
      -                              init = null;
      -                          }
      -                      }
      -                  }
      -              } else {
      -                  state.allowIn = false;
      -                  init = parseExpression();
      -                  state.allowIn = true;
      -  
      -                  if (matchContextualKeyword('of')) {
      -                      operator = lex();
      -                      left = init;
      -                      right = parseExpression();
      -                      init = null;
      -                  } else if (matchKeyword('in')) {
      -                      // LeftHandSideExpression
      -                      if (!isAssignableLeftHandSide(init)) {
      -                          throwError({}, Messages.InvalidLHSInForIn);
      -                      }
      -                      operator = lex();
      -                      left = init;
      -                      right = parseExpression();
      -                      init = null;
      -                  }
      -              }
      -  
      -              if (typeof left === 'undefined') {
      -                  expect(';');
      -              }
      -          }
      -  
      -          if (typeof left === 'undefined') {
      -  
      -              if (!match(';')) {
      -                  test = parseExpression();
      -              }
      -              expect(';');
      -  
      -              if (!match(')')) {
      -                  update = parseExpression();
      -              }
      -          }
      -  
      -          expect(')');
      -  
      -          oldInIteration = state.inIteration;
      -          state.inIteration = true;
      -  
      -          body = parseStatement();
      -  
      -          state.inIteration = oldInIteration;
      -  
      -          if (typeof left === 'undefined') {
      -              return {
      -                  type: Syntax.ForStatement,
      -                  init: init,
      -                  test: test,
      -                  update: update,
      -                  body: body
      -              };
      -          }
      -  
      -          if (operator.value === 'in') {
      -              return {
      -                  type: Syntax.ForInStatement,
      -                  left: left,
      -                  right: right,
      -                  body: body,
      -                  each: false
      -              };
      -          } else {
      -              return {
      -                  type: Syntax.ForOfStatement,
      -                  left: left,
      -                  right: right,
      -                  body: body
      -              };
      -          }
      -      }
      -  
      -      // 12.7 The continue statement
      -  
      -      function parseContinueStatement() {
      -          var token, label = null;
      -  
      -          expectKeyword('continue');
      -  
      -          // Optimize the most common form: 'continue;'.
      -          if (source[index] === ';') {
      -              lex();
      -  
      -              if (!state.inIteration) {
      -                  throwError({}, Messages.IllegalContinue);
      -              }
      -  
      -              return {
      -                  type: Syntax.ContinueStatement,
      -                  label: null
      -              };
      -          }
      -  
      -          if (peekLineTerminator()) {
      -              if (!state.inIteration) {
      -                  throwError({}, Messages.IllegalContinue);
      -              }
      -  
      -              return {
      -                  type: Syntax.ContinueStatement,
      -                  label: null
      -              };
      -          }
      -  
      -          token = lookahead();
      -          if (token.type === Token.Identifier) {
      -              label = parseVariableIdentifier();
      -  
      -              if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) {
      -                  throwError({}, Messages.UnknownLabel, label.name);
      -              }
      -          }
      -  
      -          consumeSemicolon();
      -  
      -          if (label === null && !state.inIteration) {
      -              throwError({}, Messages.IllegalContinue);
      -          }
      -  
      -          return {
      -              type: Syntax.ContinueStatement,
      -              label: label
      -          };
      -      }
      -  
      -      // 12.8 The break statement
      -  
      -      function parseBreakStatement() {
      -          var token, label = null;
      -  
      -          expectKeyword('break');
      -  
      -          // Optimize the most common form: 'break;'.
      -          if (source[index] === ';') {
      -              lex();
      -  
      -              if (!(state.inIteration || state.inSwitch)) {
      -                  throwError({}, Messages.IllegalBreak);
      -              }
      -  
      -              return {
      -                  type: Syntax.BreakStatement,
      -                  label: null
      -              };
      -          }
      -  
      -          if (peekLineTerminator()) {
      -              if (!(state.inIteration || state.inSwitch)) {
      -                  throwError({}, Messages.IllegalBreak);
      -              }
      -  
      -              return {
      -                  type: Syntax.BreakStatement,
      -                  label: null
      -              };
      -          }
      -  
      -          token = lookahead();
      -          if (token.type === Token.Identifier) {
      -              label = parseVariableIdentifier();
      -  
      -              if (!Object.prototype.hasOwnProperty.call(state.labelSet, label.name)) {
      -                  throwError({}, Messages.UnknownLabel, label.name);
      -              }
      -          }
      -  
      -          consumeSemicolon();
      -  
      -          if (label === null && !(state.inIteration || state.inSwitch)) {
      -              throwError({}, Messages.IllegalBreak);
      -          }
      -  
      -          return {
      -              type: Syntax.BreakStatement,
      -              label: label
      -          };
      -      }
      -  
      -      // 12.9 The return statement
      -  
      -      function parseReturnStatement() {
      -          var token, argument = null;
      -  
      -          expectKeyword('return');
      -  
      -          if (!state.inFunctionBody) {
      -              throwErrorTolerant({}, Messages.IllegalReturn);
      -          }
      -  
      -          // 'return' followed by a space and an identifier is very common.
      -          if (source[index] === ' ') {
      -              if (isIdentifierStart(source[index + 1])) {
      -                  argument = parseExpression();
      -                  consumeSemicolon();
      -                  return {
      -                      type: Syntax.ReturnStatement,
      -                      argument: argument
      -                  };
      -              }
      -          }
      -  
      -          if (peekLineTerminator()) {
      -              return {
      -                  type: Syntax.ReturnStatement,
      -                  argument: null
      -              };
      -          }
      -  
      -          if (!match(';')) {
      -              token = lookahead();
      -              if (!match('}') && token.type !== Token.EOF) {
      -                  argument = parseExpression();
      -              }
      -          }
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.ReturnStatement,
      -              argument: argument
      -          };
      -      }
      -  
      -      // 12.10 The with statement
      -  
      -      function parseWithStatement() {
      -          var object, body;
      -  
      -          if (strict) {
      -              throwErrorTolerant({}, Messages.StrictModeWith);
      -          }
      -  
      -          expectKeyword('with');
      -  
      -          expect('(');
      -  
      -          object = parseExpression();
      -  
      -          expect(')');
      -  
      -          body = parseStatement();
      -  
      -          return {
      -              type: Syntax.WithStatement,
      -              object: object,
      -              body: body
      -          };
      -      }
      -  
      -      // 12.10 The swith statement
      -  
      -      function parseSwitchCase() {
      -          var test,
      -              consequent = [],
      -              statement;
      -  
      -          if (matchKeyword('default')) {
      -              lex();
      -              test = null;
      -          } else {
      -              expectKeyword('case');
      -              test = parseExpression();
      -          }
      -          expect(':');
      -  
      -          while (index < length) {
      -              if (match('}') || matchKeyword('default') || matchKeyword('case')) {
      -                  break;
      -              }
      -              statement = parseSourceElement();
      -              if (typeof statement === 'undefined') {
      -                  break;
      -              }
      -              consequent.push(statement);
      -          }
      -  
      -          return {
      -              type: Syntax.SwitchCase,
      -              test: test,
      -              consequent: consequent
      -          };
      -      }
      -  
      -      function parseSwitchStatement() {
      -          var discriminant, cases, clause, oldInSwitch, defaultFound;
      -  
      -          expectKeyword('switch');
      -  
      -          expect('(');
      -  
      -          discriminant = parseExpression();
      -  
      -          expect(')');
      -  
      -          expect('{');
      -  
      -          if (match('}')) {
      -              lex();
      -              return {
      -                  type: Syntax.SwitchStatement,
      -                  discriminant: discriminant
      -              };
      -          }
      -  
      -          cases = [];
      -  
      -          oldInSwitch = state.inSwitch;
      -          state.inSwitch = true;
      -          defaultFound = false;
      -  
      -          while (index < length) {
      -              if (match('}')) {
      -                  break;
      -              }
      -              clause = parseSwitchCase();
      -              if (clause.test === null) {
      -                  if (defaultFound) {
      -                      throwError({}, Messages.MultipleDefaultsInSwitch);
      -                  }
      -                  defaultFound = true;
      -              }
      -              cases.push(clause);
      -          }
      -  
      -          state.inSwitch = oldInSwitch;
      -  
      -          expect('}');
      -  
      -          return {
      -              type: Syntax.SwitchStatement,
      -              discriminant: discriminant,
      -              cases: cases
      -          };
      -      }
      -  
      -      // 12.13 The throw statement
      -  
      -      function parseThrowStatement() {
      -          var argument;
      -  
      -          expectKeyword('throw');
      -  
      -          if (peekLineTerminator()) {
      -              throwError({}, Messages.NewlineAfterThrow);
      -          }
      -  
      -          argument = parseExpression();
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.ThrowStatement,
      -              argument: argument
      -          };
      -      }
      -  
      -      // 12.14 The try statement
      -  
      -      function parseCatchClause() {
      -          var param;
      -  
      -          expectKeyword('catch');
      -  
      -          expect('(');
      -          if (!match(')')) {
      -              param = parseExpression();
      -              // 12.14.1
      -              if (strict && param.type === Syntax.Identifier && isRestrictedWord(param.name)) {
      -                  throwErrorTolerant({}, Messages.StrictCatchVariable);
      -              }
      -          }
      -          expect(')');
      -  
      -          return {
      -              type: Syntax.CatchClause,
      -              param: param,
      -              guard: null,
      -              body: parseBlock()
      -          };
      -      }
      -  
      -      function parseTryStatement() {
      -          var block, handlers = [], finalizer = null;
      -  
      -          expectKeyword('try');
      -  
      -          block = parseBlock();
      -  
      -          if (matchKeyword('catch')) {
      -              handlers.push(parseCatchClause());
      -          }
      -  
      -          if (matchKeyword('finally')) {
      -              lex();
      -              finalizer = parseBlock();
      -          }
      -  
      -          if (handlers.length === 0 && !finalizer) {
      -              throwError({}, Messages.NoCatchOrFinally);
      -          }
      -  
      -          return {
      -              type: Syntax.TryStatement,
      -              block: block,
      -              handlers: handlers,
      -              finalizer: finalizer
      -          };
      -      }
      -  
      -      // 12.15 The debugger statement
      -  
      -      function parseDebuggerStatement() {
      -          expectKeyword('debugger');
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.DebuggerStatement
      -          };
      -      }
      -  
      -      // 12 Statements
      -  
      -      function parseStatement() {
      -          var token = lookahead(),
      -              expr,
      -              labeledBody;
      -  
      -          if (token.type === Token.EOF) {
      -              throwUnexpected(token);
      -          }
      -  
      -          if (token.type === Token.Punctuator) {
      -              switch (token.value) {
      -              case ';':
      -                  return parseEmptyStatement();
      -              case '{':
      -                  return parseBlock();
      -              case '(':
      -                  return parseExpressionStatement();
      -              default:
      -                  break;
      -              }
      -          }
      -  
      -          if (token.type === Token.Keyword) {
      -              switch (token.value) {
      -              case 'break':
      -                  return parseBreakStatement();
      -              case 'continue':
      -                  return parseContinueStatement();
      -              case 'debugger':
      -                  return parseDebuggerStatement();
      -              case 'do':
      -                  return parseDoWhileStatement();
      -              case 'for':
      -                  return parseForStatement();
      -              case 'function':
      -                  return parseFunctionDeclaration();
      -              case 'class':
      -                  return parseClassDeclaration();
      -              case 'if':
      -                  return parseIfStatement();
      -              case 'return':
      -                  return parseReturnStatement();
      -              case 'switch':
      -                  return parseSwitchStatement();
      -              case 'throw':
      -                  return parseThrowStatement();
      -              case 'try':
      -                  return parseTryStatement();
      -              case 'var':
      -                  return parseVariableStatement();
      -              case 'while':
      -                  return parseWhileStatement();
      -              case 'with':
      -                  return parseWithStatement();
      -              default:
      -                  break;
      -              }
      -          }
      -  
      -          expr = parseExpression();
      -  
      -          // 12.12 Labelled Statements
      -          if ((expr.type === Syntax.Identifier) && match(':')) {
      -              lex();
      -  
      -              if (Object.prototype.hasOwnProperty.call(state.labelSet, expr.name)) {
      -                  throwError({}, Messages.Redeclaration, 'Label', expr.name);
      -              }
      -  
      -              state.labelSet[expr.name] = true;
      -              labeledBody = parseStatement();
      -              delete state.labelSet[expr.name];
      -  
      -              return {
      -                  type: Syntax.LabeledStatement,
      -                  label: expr,
      -                  body: labeledBody
      -              };
      -          }
      -  
      -          consumeSemicolon();
      -  
      -          return {
      -              type: Syntax.ExpressionStatement,
      -              expression: expr
      -          };
      -      }
      -  
      -      // 13 Function Definition
      -  
      -      function parseConciseBody() {
      -          if (match('{')) {
      -              return parseFunctionSourceElements();
      -          } else {
      -              return parseAssignmentExpression();
      -          }
      -      }
      -  
      -      function parseFunctionSourceElements() {
      -          var sourceElement, sourceElements = [], token, directive, firstRestricted,
      -              oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody, oldParenthesizedCount;
      -  
      -          expect('{');
      -  
      -          while (index < length) {
      -              token = lookahead();
      -              if (token.type !== Token.StringLiteral) {
      -                  break;
      -              }
      -  
      -              sourceElement = parseSourceElement();
      -              sourceElements.push(sourceElement);
      -              if (sourceElement.expression.type !== Syntax.Literal) {
      -                  // this is not directive
      -                  break;
      -              }
      -              directive = sliceSource(token.range[0] + 1, token.range[1] - 1);
      -              if (directive === 'use strict') {
      -                  strict = true;
      -                  if (firstRestricted) {
      -                      throwError(firstRestricted, Messages.StrictOctalLiteral);
      -                  }
      -              } else {
      -                  if (!firstRestricted && token.octal) {
      -                      firstRestricted = token;
      -                  }
      -              }
      -          }
      -  
      -          oldLabelSet = state.labelSet;
      -          oldInIteration = state.inIteration;
      -          oldInSwitch = state.inSwitch;
      -          oldInFunctionBody = state.inFunctionBody;
      -          oldParenthesizedCount = state.parenthesizedCount;
      -  
      -          state.labelSet = {};
      -          state.inIteration = false;
      -          state.inSwitch = false;
      -          state.inFunctionBody = true;
      -          state.parenthesizedCount = 0;
      -  
      -          while (index < length) {
      -              if (match('}')) {
      -                  break;
      -              }
      -              sourceElement = parseSourceElement();
      -              if (typeof sourceElement === 'undefined') {
      -                  break;
      -              }
      -              sourceElements.push(sourceElement);
      -          }
      -  
      -          expect('}');
      -  
      -          state.labelSet = oldLabelSet;
      -          state.inIteration = oldInIteration;
      -          state.inSwitch = oldInSwitch;
      -          state.inFunctionBody = oldInFunctionBody;
      -          state.parenthesizedCount = oldParenthesizedCount;
      -  
      -          return {
      -              type: Syntax.BlockStatement,
      -              body: sourceElements
      -          };
      -      }
      -  
      -      function parseFunctionDeclaration() {
      -          var id, param, params = [], body, token, firstRestricted, message, previousStrict, previousYieldAllowed, paramSet, generator;
      -  
      -          expectKeyword('function');
      -  
      -          generator = false;
      -          if (match('*')) {
      -              lex();
      -              generator = true;
      -          }
      -  
      -          token = lookahead();
      -  
      -          id = parseVariableIdentifier();
      -          if (strict) {
      -              if (isRestrictedWord(token.value)) {
      -                  throwError(token, Messages.StrictFunctionName);
      -              }
      -          } else {
      -              if (isRestrictedWord(token.value)) {
      -                  firstRestricted = token;
      -                  message = Messages.StrictFunctionName;
      -              } else if (isStrictModeReservedWord(token.value)) {
      -                  firstRestricted = token;
      -                  message = Messages.StrictReservedWord;
      -              }
      -          }
      -  
      -          expect('(');
      -  
      -          if (!match(')')) {
      -              paramSet = {};
      -              while (index < length) {
      -                  token = lookahead();
      -                  param = parseVariableIdentifier();
      -                  if (strict) {
      -                      if (isRestrictedWord(token.value)) {
      -                          throwError(token, Messages.StrictParamName);
      -                      }
      -                      if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
      -                          throwError(token, Messages.StrictParamDupe);
      -                      }
      -                  } else if (!firstRestricted) {
      -                      if (isRestrictedWord(token.value)) {
      -                          firstRestricted = token;
      -                          message = Messages.StrictParamName;
      -                      } else if (isStrictModeReservedWord(token.value)) {
      -                          firstRestricted = token;
      -                          message = Messages.StrictReservedWord;
      -                      } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
      -                          firstRestricted = token;
      -                          message = Messages.StrictParamDupe;
      -                      }
      -                  }
      -                  params.push(param);
      -                  paramSet[param.name] = true;
      -                  if (match(')')) {
      -                      break;
      -                  }
      -                  expect(',');
      -              }
      -          }
      -  
      -          expect(')');
      -  
      -          previousStrict = strict;
      -          previousYieldAllowed = yieldAllowed;
      -          yieldAllowed = generator;
      -          body = parseFunctionSourceElements();
      -          if (strict && firstRestricted) {
      -              throwError(firstRestricted, message);
      -          }
      -          if (yieldAllowed && !yieldFound) {
      -              throwError({}, Messages.NoYieldInGenerator);
      -          }
      -          strict = previousStrict;
      -          yieldAllowed = previousYieldAllowed;
      -  
      -          return {
      -              type: Syntax.FunctionDeclaration,
      -              id: id,
      -              params: params,
      -              body: body,
      -              generator: generator
      -          };
      -      }
      -  
      -      function parseFunctionExpression() {
      -          var token, id = null, firstRestricted, message, param, params = [], body, previousStrict, previousYieldAllowed, paramSet, generator;
      -  
      -          expectKeyword('function');
      -  
      -          generator = false;
      -  
      -          if (match('*')) {
      -              lex();
      -              generator = true;
      -          }
      -  
      -          if (!match('(')) {
      -              token = lookahead();
      -              id = parseVariableIdentifier();
      -              if (strict) {
      -                  if (isRestrictedWord(token.value)) {
      -                      throwError(token, Messages.StrictFunctionName);
      -                  }
      -              } else {
      -                  if (isRestrictedWord(token.value)) {
      -                      firstRestricted = token;
      -                      message = Messages.StrictFunctionName;
      -                  } else if (isStrictModeReservedWord(token.value)) {
      -                      firstRestricted = token;
      -                      message = Messages.StrictReservedWord;
      -                  }
      -              }
      -          }
      -  
      -          expect('(');
      -  
      -          if (!match(')')) {
      -              paramSet = {};
      -              while (index < length) {
      -                  token = lookahead();
      -                  param = parseVariableIdentifier();
      -                  if (strict) {
      -                      if (isRestrictedWord(token.value)) {
      -                          throwError(token, Messages.StrictParamName);
      -                      }
      -                      if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
      -                          throwError(token, Messages.StrictParamDupe);
      -                      }
      -                  } else if (!firstRestricted) {
      -                      if (isRestrictedWord(token.value)) {
      -                          firstRestricted = token;
      -                          message = Messages.StrictParamName;
      -                      } else if (isStrictModeReservedWord(token.value)) {
      -                          firstRestricted = token;
      -                          message = Messages.StrictReservedWord;
      -                      } else if (Object.prototype.hasOwnProperty.call(paramSet, token.value)) {
      -                          firstRestricted = token;
      -                          message = Messages.StrictParamDupe;
      -                      }
      -                  }
      -                  params.push(param);
      -                  paramSet[param.name] = true;
      -                  if (match(')')) {
      -                      break;
      -                  }
      -                  expect(',');
      -              }
      -          }
      -  
      -          expect(')');
      -  
      -          previousStrict = strict;
      -          previousYieldAllowed = yieldAllowed;
      -          yieldAllowed = generator;
      -          body = parseFunctionSourceElements();
      -          if (strict && firstRestricted) {
      -              throwError(firstRestricted, message);
      -          }
      -          if (yieldAllowed && !yieldFound) {
      -              throwError({}, Messages.NoYieldInGenerator);
      -          }
      -          strict = previousStrict;
      -          yieldAllowed = previousYieldAllowed;
      -  
      -  
      -          return {
      -              type: Syntax.FunctionExpression,
      -              id: id,
      -              params: params,
      -              body: body,
      -              generator: generator
      -          };
      -      }
      -  
      -      function parseYieldExpression() {
      -          var delegate, expr, previousYieldAllowed;
      -  
      -          expectKeyword('yield');
      -  
      -          if (!yieldAllowed) {
      -              throwErrorTolerant({}, Messages.IllegalYield);
      -          }
      -  
      -          delegate = false;
      -          if (match('*')) {
      -              lex();
      -              delegate = true;
      -          }
      -  
      -          // It is a Syntax Error if any AssignmentExpression Contains YieldExpression.
      -          previousYieldAllowed = yieldAllowed;
      -          yieldAllowed = false;
      -          expr = parseAssignmentExpression();
      -          yieldAllowed = previousYieldAllowed;
      -          yieldFound = true;
      -  
      -          return {
      -              type: Syntax.YieldExpression,
      -              argument: expr,
      -              delegate: delegate
      -          };
      -      }
      -  
      -      // 14 Classes
      -  
      -      function parseMethodDefinition() {
      -          var token, key, param;
      -  
      -          if (match('*')) {
      -              lex();
      -              return {
      -                  type: Syntax.MethodDefinition,
      -                  key: parseObjectPropertyKey(),
      -                  value: parsePropertyMethodFunction({ generator: true }),
      -                  kind: ''
      -              };
      -          }
      -  
      -          token = lookahead();
      -          key = parseObjectPropertyKey();
      -  
      -          if (token.value === 'get' && !match('(')) {
      -              key = parseObjectPropertyKey();
      -              expect('(');
      -              expect(')');
      -              return {
      -                  type: Syntax.MethodDefinition,
      -                  key: key,
      -                  value: parsePropertyFunction([], { generator: false }),
      -                  kind: 'get'
      -              };
      -          } else if (token.value === 'set' && !match('(')) {
      -              key = parseObjectPropertyKey();
      -              expect('(');
      -              token = lookahead();
      -              param = [ parseVariableIdentifier() ];
      -              expect(')');
      -              return {
      -                  type: Syntax.MethodDefinition,
      -                  key: key,
      -                  value: parsePropertyFunction(param, { generator: false, name: token }),
      -                  kind: 'set'
      -              };
      -          } else {
      -              return {
      -                  type: Syntax.MethodDefinition,
      -                  key: key,
      -                  value: parsePropertyMethodFunction({ generator: false }),
      -                  kind: ''
      -              };
      -          }
      -      }
      -  
      -      function parseClassElement() {
      -          if (match(';')) {
      -              lex();
      -              return;
      -          } else {
      -              return parseMethodDefinition();
      -          }
      -      }
      -  
      -      function parseClassBody() {
      -          var classElement, classElements = [];
      -  
      -          expect('{');
      -  
      -          while (index < length) {
      -              if (match('}')) {
      -                  break;
      -              }
      -              classElement = parseClassElement();
      -              if (typeof classElement !== 'undefined') {
      -                  classElements.push(classElement);
      -              }
      -          }
      -  
      -          expect('}');
      -  
      -          return {
      -              type: Syntax.ClassBody,
      -              body: classElements
      -          };
      -      }
      -  
      -      function parseClassExpression() {
      -          var id, body, previousYieldAllowed, superClass;
      -  
      -          expectKeyword('class');
      -  
      -          if (!matchKeyword('extends') && !match('{')) {
      -              id = parseVariableIdentifier();
      -          }
      -  
      -          if (matchKeyword('extends')) {
      -              expectKeyword('extends');
      -              previousYieldAllowed = yieldAllowed;
      -              yieldAllowed = false;
      -              superClass = parseAssignmentExpression();
      -              yieldAllowed = previousYieldAllowed;
      -          }
      -  
      -          body = parseClassBody();
      -          return {
      -              id: id,
      -              type: Syntax.ClassExpression,
      -              body: body,
      -              superClass: superClass
      -          };
      -      }
      -  
      -      function parseClassDeclaration() {
      -          var token, id, body, previousYieldAllowed, superClass;
      -  
      -          expectKeyword('class');
      -  
      -          token = lookahead();
      -          id = parseVariableIdentifier();
      -  
      -          if (matchKeyword('extends')) {
      -              expectKeyword('extends');
      -              previousYieldAllowed = yieldAllowed;
      -              yieldAllowed = false;
      -              superClass = parseAssignmentExpression();
      -              yieldAllowed = previousYieldAllowed;
      -          }
      -  
      -          body = parseClassBody();
      -          return {
      -              id: id,
      -              type: Syntax.ClassDeclaration,
      -              body: body,
      -              superClass: superClass
      -          };
      -      }
      -  
      -      // 15 Program
      -  
      -      function parseSourceElement() {
      -          var token = lookahead();
      -  
      -          if (token.type === Token.Keyword) {
      -              switch (token.value) {
      -              case 'const':
      -              case 'let':
      -                  return parseConstLetDeclaration(token.value);
      -              case 'function':
      -                  return parseFunctionDeclaration();
      -              default:
      -                  return parseStatement();
      -              }
      -          }
      -  
      -          if (token.type !== Token.EOF) {
      -              return parseStatement();
      -          }
      -      }
      -  
      -      function parseProgramElement() {
      -          var token = lookahead(), lineNumber;
      -  
      -          if (token.type === Token.Keyword) {
      -              switch (token.value) {
      -              case 'export':
      -                  return parseExportDeclaration();
      -              case 'import':
      -                  return parseImportDeclaration();
      -              }
      -          }
      -  
      -          if (token.value === 'module' && token.type === Token.Identifier) {
      -              lineNumber = token.lineNumber;
      -              token = lookahead2();
      -              if (token.type === Token.Identifier && token.lineNumber === lineNumber) {
      -                  return parseModuleDeclaration();
      -              }
      -          }
      -  
      -          return parseSourceElement();
      -      }
      -  
      -      function parseProgramElements() {
      -          var sourceElement, sourceElements = [], token, directive, firstRestricted;
      -  
      -          while (index < length) {
      -              token = lookahead();
      -              if (token.type !== Token.StringLiteral) {
      -                  break;
      -              }
      -  
      -              sourceElement = parseProgramElement();
      -              sourceElements.push(sourceElement);
      -              if (sourceElement.expression.type !== Syntax.Literal) {
      -                  // this is not directive
      -                  break;
      -              }
      -              directive = sliceSource(token.range[0] + 1, token.range[1] - 1);
      -              if (directive === 'use strict') {
      -                  strict = true;
      -                  if (firstRestricted) {
      -                      throwError(firstRestricted, Messages.StrictOctalLiteral);
      -                  }
      -              } else {
      -                  if (!firstRestricted && token.octal) {
      -                      firstRestricted = token;
      -                  }
      -              }
      -          }
      -  
      -          while (index < length) {
      -              sourceElement = parseProgramElement();
      -              if (typeof sourceElement === 'undefined') {
      -                  break;
      -              }
      -              sourceElements.push(sourceElement);
      -          }
      -          return sourceElements;
      -      }
      -  
      -      function parseModuleElement() {
      -          return parseProgramElement();
      -      }
      -  
      -      function parseModuleElements() {
      -          var list = [],
      -              statement;
      -  
      -          while (index < length) {
      -              if (match('}')) {
      -                  break;
      -              }
      -              statement = parseModuleElement();
      -              if (typeof statement === 'undefined') {
      -                  break;
      -              }
      -              list.push(statement);
      -          }
      -  
      -          return list;
      -      }
      -  
      -      function parseModuleBlock() {
      -          var block;
      -  
      -          expect('{');
      -  
      -          block = parseModuleElements();
      -  
      -          expect('}');
      -  
      -          return {
      -              type: Syntax.BlockStatement,
      -              body: block
      -          };
      -      }
      -  
      -      function parseProgram() {
      -          var program;
      -          strict = false;
      -          yieldAllowed = false;
      -          yieldFound = false;
      -          program = {
      -              type: Syntax.Program,
      -              body: parseProgramElements()
      -          };
      -          return program;
      -      }
      -  
      -      // The following functions are needed only when the option to preserve
      -      // the comments is active.
      -  
      -      function addComment(type, value, start, end, loc) {
      -          assert(typeof start === 'number', 'Comment must have valid position');
      -  
      -          // Because the way the actual token is scanned, often the comments
      -          // (if any) are skipped twice during the lexical analysis.
      -          // Thus, we need to skip adding a comment if the comment array already
      -          // handled it.
      -          if (extra.comments.length > 0) {
      -              if (extra.comments[extra.comments.length - 1].range[1] > start) {
      -                  return;
      -              }
      -          }
      -  
      -          extra.comments.push({
      -              type: type,
      -              value: value,
      -              range: [start, end],
      -              loc: loc
      -          });
      -      }
      -  
      -      function scanComment() {
      -          var comment, ch, loc, start, blockComment, lineComment;
      -  
      -          comment = '';
      -          blockComment = false;
      -          lineComment = false;
      -  
      -          while (index < length) {
      -              ch = source[index];
      -  
      -              if (lineComment) {
      -                  ch = nextChar();
      -                  if (isLineTerminator(ch)) {
      -                      loc.end = {
      -                          line: lineNumber,
      -                          column: index - lineStart - 1
      -                      };
      -                      lineComment = false;
      -                      addComment('Line', comment, start, index - 1, loc);
      -                      if (ch === '\r' && source[index] === '\n') {
      -                          ++index;
      -                      }
      -                      ++lineNumber;
      -                      lineStart = index;
      -                      comment = '';
      -                  } else if (index >= length) {
      -                      lineComment = false;
      -                      comment += ch;
      -                      loc.end = {
      -                          line: lineNumber,
      -                          column: length - lineStart
      -                      };
      -                      addComment('Line', comment, start, length, loc);
      -                  } else {
      -                      comment += ch;
      -                  }
      -              } else if (blockComment) {
      -                  if (isLineTerminator(ch)) {
      -                      if (ch === '\r' && source[index + 1] === '\n') {
      -                          ++index;
      -                          comment += '\r\n';
      -                      } else {
      -                          comment += ch;
      -                      }
      -                      ++lineNumber;
      -                      ++index;
      -                      lineStart = index;
      -                      if (index >= length) {
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -                  } else {
      -                      ch = nextChar();
      -                      if (index >= length) {
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -                      comment += ch;
      -                      if (ch === '*') {
      -                          ch = source[index];
      -                          if (ch === '/') {
      -                              comment = comment.substr(0, comment.length - 1);
      -                              blockComment = false;
      -                              ++index;
      -                              loc.end = {
      -                                  line: lineNumber,
      -                                  column: index - lineStart
      -                              };
      -                              addComment('Block', comment, start, index, loc);
      -                              comment = '';
      -                          }
      -                      }
      -                  }
      -              } else if (ch === '/') {
      -                  ch = source[index + 1];
      -                  if (ch === '/') {
      -                      loc = {
      -                          start: {
      -                              line: lineNumber,
      -                              column: index - lineStart
      -                          }
      -                      };
      -                      start = index;
      -                      index += 2;
      -                      lineComment = true;
      -                      if (index >= length) {
      -                          loc.end = {
      -                              line: lineNumber,
      -                              column: index - lineStart
      -                          };
      -                          lineComment = false;
      -                          addComment('Line', comment, start, index, loc);
      -                      }
      -                  } else if (ch === '*') {
      -                      start = index;
      -                      index += 2;
      -                      blockComment = true;
      -                      loc = {
      -                          start: {
      -                              line: lineNumber,
      -                              column: index - lineStart - 2
      -                          }
      -                      };
      -                      if (index >= length) {
      -                          throwError({}, Messages.UnexpectedToken, 'ILLEGAL');
      -                      }
      -                  } else {
      -                      break;
      -                  }
      -              } else if (isWhiteSpace(ch)) {
      -                  ++index;
      -              } else if (isLineTerminator(ch)) {
      -                  ++index;
      -                  if (ch ===  '\r' && source[index] === '\n') {
      -                      ++index;
      -                  }
      -                  ++lineNumber;
      -                  lineStart = index;
      -              } else {
      -                  break;
      -              }
      -          }
      -      }
      -  
      -      function filterCommentLocation() {
      -          var i, entry, comment, comments = [];
      -  
      -          for (i = 0; i < extra.comments.length; ++i) {
      -              entry = extra.comments[i];
      -              comment = {
      -                  type: entry.type,
      -                  value: entry.value
      -              };
      -              if (extra.range) {
      -                  comment.range = entry.range;
      -              }
      -              if (extra.loc) {
      -                  comment.loc = entry.loc;
      -              }
      -              comments.push(comment);
      -          }
      -  
      -          extra.comments = comments;
      -      }
      -  
      -      function collectToken() {
      -          var start, loc, token, range, value;
      -  
      -          skipComment();
      -          start = index;
      -          loc = {
      -              start: {
      -                  line: lineNumber,
      -                  column: index - lineStart
      -              }
      -          };
      -  
      -          token = extra.advance();
      -          loc.end = {
      -              line: lineNumber,
      -              column: index - lineStart
      -          };
      -  
      -          if (token.type !== Token.EOF) {
      -              range = [token.range[0], token.range[1]];
      -              value = sliceSource(token.range[0], token.range[1]);
      -              extra.tokens.push({
      -                  type: TokenName[token.type],
      -                  value: value,
      -                  range: range,
      -                  loc: loc
      -              });
      -          }
      -  
      -          return token;
      -      }
      -  
      -      function collectRegex() {
      -          var pos, loc, regex, token;
      -  
      -          skipComment();
      -  
      -          pos = index;
      -          loc = {
      -              start: {
      -                  line: lineNumber,
      -                  column: index - lineStart
      -              }
      -          };
      -  
      -          regex = extra.scanRegExp();
      -          loc.end = {
      -              line: lineNumber,
      -              column: index - lineStart
      -          };
      -  
      -          // Pop the previous token, which is likely '/' or '/='
      -          if (extra.tokens.length > 0) {
      -              token = extra.tokens[extra.tokens.length - 1];
      -              if (token.range[0] === pos && token.type === 'Punctuator') {
      -                  if (token.value === '/' || token.value === '/=') {
      -                      extra.tokens.pop();
      -                  }
      -              }
      -          }
      -  
      -          extra.tokens.push({
      -              type: 'RegularExpression',
      -              value: regex.literal,
      -              range: [pos, index],
      -              loc: loc
      -          });
      -  
      -          return regex;
      -      }
      -  
      -      function filterTokenLocation() {
      -          var i, entry, token, tokens = [];
      -  
      -          for (i = 0; i < extra.tokens.length; ++i) {
      -              entry = extra.tokens[i];
      -              token = {
      -                  type: entry.type,
      -                  value: entry.value
      -              };
      -              if (extra.range) {
      -                  token.range = entry.range;
      -              }
      -              if (extra.loc) {
      -                  token.loc = entry.loc;
      -              }
      -              tokens.push(token);
      -          }
      -  
      -          extra.tokens = tokens;
      -      }
      -  
      -      function createLiteral(token) {
      -          return {
      -              type: Syntax.Literal,
      -              value: token.value
      -          };
      -      }
      -  
      -      function createRawLiteral(token) {
      -          return {
      -              type: Syntax.Literal,
      -              value: token.value,
      -              raw: sliceSource(token.range[0], token.range[1])
      -          };
      -      }
      -  
      -      function wrapTrackingFunction(range, loc) {
      -  
      -          return function (parseFunction) {
      -  
      -              function isBinary(node) {
      -                  return node.type === Syntax.LogicalExpression ||
      -                      node.type === Syntax.BinaryExpression;
      -              }
      -  
      -              function visit(node) {
      -                  if (isBinary(node.left)) {
      -                      visit(node.left);
      -                  }
      -                  if (isBinary(node.right)) {
      -                      visit(node.right);
      -                  }
      -  
      -                  if (range && typeof node.range === 'undefined') {
      -                      node.range = [node.left.range[0], node.right.range[1]];
      -                  }
      -                  if (loc && typeof node.loc === 'undefined') {
      -                      node.loc = {
      -                          start: node.left.loc.start,
      -                          end: node.right.loc.end
      -                      };
      -                  }
      -              }
      -  
      -              return function () {
      -                  var node, rangeInfo, locInfo;
      -  
      -                  skipComment();
      -                  rangeInfo = [index, 0];
      -                  locInfo = {
      -                      start: {
      -                          line: lineNumber,
      -                          column: index - lineStart
      -                      }
      -                  };
      -  
      -                  node = parseFunction.apply(null, arguments);
      -                  if (typeof node !== 'undefined') {
      -  
      -                      if (range) {
      -                          rangeInfo[1] = index;
      -                          node.range = rangeInfo;
      -                      }
      -  
      -                      if (loc) {
      -                          locInfo.end = {
      -                              line: lineNumber,
      -                              column: index - lineStart
      -                          };
      -                          node.loc = locInfo;
      -                      }
      -  
      -                      if (isBinary(node)) {
      -                          visit(node);
      -                      }
      -  
      -                      if (node.type === Syntax.MemberExpression) {
      -                          if (typeof node.object.range !== 'undefined') {
      -                              node.range[0] = node.object.range[0];
      -                          }
      -                          if (typeof node.object.loc !== 'undefined') {
      -                              node.loc.start = node.object.loc.start;
      -                          }
      -                      }
      -  
      -                      if (node.type === Syntax.CallExpression) {
      -                          if (typeof node.callee.range !== 'undefined') {
      -                              node.range[0] = node.callee.range[0];
      -                          }
      -                          if (typeof node.callee.loc !== 'undefined') {
      -                              node.loc.start = node.callee.loc.start;
      -                          }
      -                      }
      -                      return node;
      -                  }
      -              };
      -  
      -          };
      -      }
      -  
      -      function patch() {
      -  
      -          var wrapTracking;
      -  
      -          if (extra.comments) {
      -              extra.skipComment = skipComment;
      -              skipComment = scanComment;
      -          }
      -  
      -          if (extra.raw) {
      -              extra.createLiteral = createLiteral;
      -              createLiteral = createRawLiteral;
      -          }
      -  
      -          if (extra.range || extra.loc) {
      -  
      -              wrapTracking = wrapTrackingFunction(extra.range, extra.loc);
      -  
      -              extra.parseAdditiveExpression = parseAdditiveExpression;
      -              extra.parseAssignmentExpression = parseAssignmentExpression;
      -              extra.parseBitwiseANDExpression = parseBitwiseANDExpression;
      -              extra.parseBitwiseORExpression = parseBitwiseORExpression;
      -              extra.parseBitwiseXORExpression = parseBitwiseXORExpression;
      -              extra.parseBlock = parseBlock;
      -              extra.parseFunctionSourceElements = parseFunctionSourceElements;
      -              extra.parseCallMember = parseCallMember;
      -              extra.parseCatchClause = parseCatchClause;
      -              extra.parseComputedMember = parseComputedMember;
      -              extra.parseConditionalExpression = parseConditionalExpression;
      -              extra.parseConstLetDeclaration = parseConstLetDeclaration;
      -              extra.parseEqualityExpression = parseEqualityExpression;
      -              extra.parseExportDeclaration = parseExportDeclaration;
      -              extra.parseExportSpecifier = parseExportSpecifier;
      -              extra.parseExportSpecifierSetProperty = parseExportSpecifierSetProperty;
      -              extra.parseExpression = parseExpression;
      -              extra.parseForVariableDeclaration = parseForVariableDeclaration;
      -              extra.parseFunctionDeclaration = parseFunctionDeclaration;
      -              extra.parseFunctionExpression = parseFunctionExpression;
      -              extra.parseGlob = parseGlob;
      -              extra.parseImportDeclaration = parseImportDeclaration;
      -              extra.parseImportSpecifier = parseImportSpecifier;
      -              extra.parseLogicalANDExpression = parseLogicalANDExpression;
      -              extra.parseLogicalORExpression = parseLogicalORExpression;
      -              extra.parseMultiplicativeExpression = parseMultiplicativeExpression;
      -              extra.parseModuleDeclaration = parseModuleDeclaration;
      -              extra.parseModuleBlock = parseModuleBlock;
      -              extra.parseNewExpression = parseNewExpression;
      -              extra.parseNonComputedMember = parseNonComputedMember;
      -              extra.parseNonComputedProperty = parseNonComputedProperty;
      -              extra.parseObjectProperty = parseObjectProperty;
      -              extra.parseObjectPropertyKey = parseObjectPropertyKey;
      -              extra.parsePath = parsePath;
      -              extra.parsePostfixExpression = parsePostfixExpression;
      -              extra.parsePrimaryExpression = parsePrimaryExpression;
      -              extra.parseProgram = parseProgram;
      -              extra.parsePropertyFunction = parsePropertyFunction;
      -              extra.parseRelationalExpression = parseRelationalExpression;
      -              extra.parseStatement = parseStatement;
      -              extra.parseShiftExpression = parseShiftExpression;
      -              extra.parseSwitchCase = parseSwitchCase;
      -              extra.parseUnaryExpression = parseUnaryExpression;
      -              extra.parseVariableDeclaration = parseVariableDeclaration;
      -              extra.parseVariableIdentifier = parseVariableIdentifier;
      -              extra.parseMethodDefinition = parseMethodDefinition;
      -              extra.parseClassDeclaration = parseClassDeclaration;
      -              extra.parseClassExpression = parseClassExpression;
      -              extra.parseClassBody = parseClassBody;
      -  
      -              parseAdditiveExpression = wrapTracking(extra.parseAdditiveExpression);
      -              parseAssignmentExpression = wrapTracking(extra.parseAssignmentExpression);
      -              parseBitwiseANDExpression = wrapTracking(extra.parseBitwiseANDExpression);
      -              parseBitwiseORExpression = wrapTracking(extra.parseBitwiseORExpression);
      -              parseBitwiseXORExpression = wrapTracking(extra.parseBitwiseXORExpression);
      -              parseBlock = wrapTracking(extra.parseBlock);
      -              parseFunctionSourceElements = wrapTracking(extra.parseFunctionSourceElements);
      -              parseCallMember = wrapTracking(extra.parseCallMember);
      -              parseCatchClause = wrapTracking(extra.parseCatchClause);
      -              parseComputedMember = wrapTracking(extra.parseComputedMember);
      -              parseConditionalExpression = wrapTracking(extra.parseConditionalExpression);
      -              parseConstLetDeclaration = wrapTracking(extra.parseConstLetDeclaration);
      -              parseExportDeclaration = wrapTracking(parseExportDeclaration);
      -              parseExportSpecifier = wrapTracking(parseExportSpecifier);
      -              parseExportSpecifierSetProperty = wrapTracking(parseExportSpecifierSetProperty);
      -              parseEqualityExpression = wrapTracking(extra.parseEqualityExpression);
      -              parseExpression = wrapTracking(extra.parseExpression);
      -              parseForVariableDeclaration = wrapTracking(extra.parseForVariableDeclaration);
      -              parseFunctionDeclaration = wrapTracking(extra.parseFunctionDeclaration);
      -              parseFunctionExpression = wrapTracking(extra.parseFunctionExpression);
      -              parseGlob = wrapTracking(extra.parseGlob);
      -              parseImportDeclaration = wrapTracking(extra.parseImportDeclaration);
      -              parseImportSpecifier = wrapTracking(extra.parseImportSpecifier);
      -              parseLogicalANDExpression = wrapTracking(extra.parseLogicalANDExpression);
      -              parseLogicalORExpression = wrapTracking(extra.parseLogicalORExpression);
      -              parseMultiplicativeExpression = wrapTracking(extra.parseMultiplicativeExpression);
      -              parseModuleDeclaration = wrapTracking(extra.parseModuleDeclaration);
      -              parseModuleBlock = wrapTracking(extra.parseModuleBlock);
      -              parseNewExpression = wrapTracking(extra.parseNewExpression);
      -              parseNonComputedMember = wrapTracking(extra.parseNonComputedMember);
      -              parseNonComputedProperty = wrapTracking(extra.parseNonComputedProperty);
      -              parseObjectProperty = wrapTracking(extra.parseObjectProperty);
      -              parseObjectPropertyKey = wrapTracking(extra.parseObjectPropertyKey);
      -              parsePath = wrapTracking(extra.parsePath);
      -              parsePostfixExpression = wrapTracking(extra.parsePostfixExpression);
      -              parsePrimaryExpression = wrapTracking(extra.parsePrimaryExpression);
      -              parseProgram = wrapTracking(extra.parseProgram);
      -              parsePropertyFunction = wrapTracking(extra.parsePropertyFunction);
      -              parseRelationalExpression = wrapTracking(extra.parseRelationalExpression);
      -              parseStatement = wrapTracking(extra.parseStatement);
      -              parseShiftExpression = wrapTracking(extra.parseShiftExpression);
      -              parseSwitchCase = wrapTracking(extra.parseSwitchCase);
      -              parseUnaryExpression = wrapTracking(extra.parseUnaryExpression);
      -              parseVariableDeclaration = wrapTracking(extra.parseVariableDeclaration);
      -              parseVariableIdentifier = wrapTracking(extra.parseVariableIdentifier);
      -              parseMethodDefinition = wrapTracking(extra.parseMethodDefinition);
      -              parseClassDeclaration = wrapTracking(extra.parseClassDeclaration);
      -              parseClassExpression = wrapTracking(extra.parseClassExpression);
      -              parseClassBody = wrapTracking(extra.parseClassBody);
      -          }
      -  
      -          if (typeof extra.tokens !== 'undefined') {
      -              extra.advance = advance;
      -              extra.scanRegExp = scanRegExp;
      -  
      -              advance = collectToken;
      -              scanRegExp = collectRegex;
      -          }
      -      }
      -  
      -      function unpatch() {
      -          if (typeof extra.skipComment === 'function') {
      -              skipComment = extra.skipComment;
      -          }
      -  
      -          if (extra.raw) {
      -              createLiteral = extra.createLiteral;
      -          }
      -  
      -          if (extra.range || extra.loc) {
      -              parseAdditiveExpression = extra.parseAdditiveExpression;
      -              parseAssignmentExpression = extra.parseAssignmentExpression;
      -              parseBitwiseANDExpression = extra.parseBitwiseANDExpression;
      -              parseBitwiseORExpression = extra.parseBitwiseORExpression;
      -              parseBitwiseXORExpression = extra.parseBitwiseXORExpression;
      -              parseBlock = extra.parseBlock;
      -              parseFunctionSourceElements = extra.parseFunctionSourceElements;
      -              parseCallMember = extra.parseCallMember;
      -              parseCatchClause = extra.parseCatchClause;
      -              parseComputedMember = extra.parseComputedMember;
      -              parseConditionalExpression = extra.parseConditionalExpression;
      -              parseConstLetDeclaration = extra.parseConstLetDeclaration;
      -              parseEqualityExpression = extra.parseEqualityExpression;
      -              parseExportDeclaration = extra.parseExportDeclaration;
      -              parseExportSpecifier = extra.parseExportSpecifier;
      -              parseExportSpecifierSetProperty = extra.parseExportSpecifierSetProperty;
      -              parseExpression = extra.parseExpression;
      -              parseForVariableDeclaration = extra.parseForVariableDeclaration;
      -              parseFunctionDeclaration = extra.parseFunctionDeclaration;
      -              parseFunctionExpression = extra.parseFunctionExpression;
      -              parseGlob = extra.parseGlob;
      -              parseImportDeclaration = extra.parseImportDeclaration;
      -              parseImportSpecifier = extra.parseImportSpecifier;
      -              parseLogicalANDExpression = extra.parseLogicalANDExpression;
      -              parseLogicalORExpression = extra.parseLogicalORExpression;
      -              parseMultiplicativeExpression = extra.parseMultiplicativeExpression;
      -              parseModuleDeclaration = extra.parseModuleDeclaration;
      -              parseModuleBlock = extra.parseModuleBlock;
      -              parseNewExpression = extra.parseNewExpression;
      -              parseNonComputedMember = extra.parseNonComputedMember;
      -              parseNonComputedProperty = extra.parseNonComputedProperty;
      -              parseObjectProperty = extra.parseObjectProperty;
      -              parseObjectPropertyKey = extra.parseObjectPropertyKey;
      -              parsePath = extra.parsePath;
      -              parsePostfixExpression = extra.parsePostfixExpression;
      -              parsePrimaryExpression = extra.parsePrimaryExpression;
      -              parseProgram = extra.parseProgram;
      -              parsePropertyFunction = extra.parsePropertyFunction;
      -              parseRelationalExpression = extra.parseRelationalExpression;
      -              parseStatement = extra.parseStatement;
      -              parseShiftExpression = extra.parseShiftExpression;
      -              parseSwitchCase = extra.parseSwitchCase;
      -              parseUnaryExpression = extra.parseUnaryExpression;
      -              parseVariableDeclaration = extra.parseVariableDeclaration;
      -              parseVariableIdentifier = extra.parseVariableIdentifier;
      -              parseMethodDefinition = extra.parseMethodDefinition;
      -              parseClassDeclaration = extra.parseClassDeclaration;
      -              parseClassExpression = extra.parseClassExpression;
      -              parseClassBody = extra.parseClassBody;
      -          }
      -  
      -          if (typeof extra.scanRegExp === 'function') {
      -              advance = extra.advance;
      -              scanRegExp = extra.scanRegExp;
      -          }
      -      }
      -  
      -      function stringToArray(str) {
      -          var length = str.length,
      -              result = [],
      -              i;
      -          for (i = 0; i < length; ++i) {
      -              result[i] = str.charAt(i);
      -          }
      -          return result;
      -      }
      -  
      -      function parse(code, options) {
      -          var program, toString;
      -  
      -          toString = String;
      -          if (typeof code !== 'string' && !(code instanceof String)) {
      -              code = toString(code);
      -          }
      -  
      -          source = code;
      -          index = 0;
      -          lineNumber = (source.length > 0) ? 1 : 0;
      -          lineStart = 0;
      -          length = source.length;
      -          buffer = null;
      -          state = {
      -              allowIn: true,
      -              labelSet: {},
      -              parenthesizedCount: 0,
      -              lastParenthesized: null,
      -              inFunctionBody: false,
      -              inIteration: false,
      -              inSwitch: false
      -          };
      -  
      -          extra = {};
      -          if (typeof options !== 'undefined') {
      -              extra.range = (typeof options.range === 'boolean') && options.range;
      -              extra.loc = (typeof options.loc === 'boolean') && options.loc;
      -              extra.raw = (typeof options.raw === 'boolean') && options.raw;
      -              if (typeof options.tokens === 'boolean' && options.tokens) {
      -                  extra.tokens = [];
      -              }
      -              if (typeof options.comment === 'boolean' && options.comment) {
      -                  extra.comments = [];
      -              }
      -              if (typeof options.tolerant === 'boolean' && options.tolerant) {
      -                  extra.errors = [];
      -              }
      -          }
      -  
      -          if (length > 0) {
      -              if (typeof source[0] === 'undefined') {
      -                  // Try first to convert to a string. This is good as fast path
      -                  // for old IE which understands string indexing for string
      -                  // literals only and not for string object.
      -                  if (code instanceof String) {
      -                      source = code.valueOf();
      -                  }
      -  
      -                  // Force accessing the characters via an array.
      -                  if (typeof source[0] === 'undefined') {
      -                      source = stringToArray(code);
      -                  }
      -              }
      -          }
      -  
      -          patch();
      -          try {
      -              program = parseProgram();
      -              if (typeof extra.comments !== 'undefined') {
      -                  filterCommentLocation();
      -                  program.comments = extra.comments;
      -              }
      -              if (typeof extra.tokens !== 'undefined') {
      -                  filterTokenLocation();
      -                  program.tokens = extra.tokens;
      -              }
      -              if (typeof extra.errors !== 'undefined') {
      -                  program.errors = extra.errors;
      -              }
      -          } catch (e) {
      -              throw e;
      -          } finally {
      -              unpatch();
      -              extra = {};
      -          }
      -  
      -          return program;
      -      }
      -  
      -      // Sync with package.json.
      -      exports.version = '1.0.0-dev-harmony';
      -  
      -      exports.parse = parse;
      -  
      -      // Deep copy.
      -      exports.Syntax = (function () {
      -          var name, types = {};
      -  
      -          if (typeof Object.create === 'function') {
      -              types = Object.create(null);
      -          }
      -  
      -          for (name in Syntax) {
      -              if (Syntax.hasOwnProperty(name)) {
      -                  types[name] = Syntax[name];
      -              }
      -          }
      -  
      -          if (typeof Object.freeze === 'function') {
      -              Object.freeze(types);
      -          }
      -  
      -          return types;
      -      }());
      -  
      -  }));
      -  /* vim: set sw=4 ts=4 et tw=80 : */
      - -
      - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html deleted file mode 100644 index ec2af9c..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/index.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - -Esprima: Unit Tests - - - - - - - -
      - - - -

      Unit Tests ensures the correct implementation

      -

      Esprima version .

      -

      Please wait...

      -
      - -
      - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html deleted file mode 100644 index 7173a30..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - -Esprima: Module Loading Test - - - - -
      - - - -

      Module Loading works also with web browsers

      - -

      The following tests are to ensure that Esprima can be loaded using AMD (Asynchronous Module Definition) loader such as RequireJS.

      -

      -
      - -
      - - - - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js deleted file mode 100644 index bba84c7..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/module.js +++ /dev/null @@ -1,129 +0,0 @@ -/*jslint browser:true plusplus:true */ -/*global require:true */ -function runTests() { - 'use strict'; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function reportSuccess(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - } - - function reportFailure(code, expected, actual) { - var report, e; - - report = document.getElementById('report'); - - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Expected type: ' + expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual type: ' + actual); - report.appendChild(e); - } - - - require(['../esprima'], function (ESParser) { - var tick, total, failures, obj, variable, variables, i, entry, entries; - - // We check only the type of some members of ESParser. - variables = { - 'version': 'string', - 'parse': 'function', - 'Syntax': 'object', - 'Syntax.AssignmentExpression': 'string', - 'Syntax.ArrayExpression': 'string', - 'Syntax.BlockStatement': 'string', - 'Syntax.BinaryExpression': 'string', - 'Syntax.BreakStatement': 'string', - 'Syntax.CallExpression': 'string', - 'Syntax.CatchClause': 'string', - 'Syntax.ConditionalExpression': 'string', - 'Syntax.ContinueStatement': 'string', - 'Syntax.DoWhileStatement': 'string', - 'Syntax.DebuggerStatement': 'string', - 'Syntax.EmptyStatement': 'string', - 'Syntax.ExpressionStatement': 'string', - 'Syntax.ForStatement': 'string', - 'Syntax.ForInStatement': 'string', - 'Syntax.FunctionDeclaration': 'string', - 'Syntax.FunctionExpression': 'string', - 'Syntax.Identifier': 'string', - 'Syntax.IfStatement': 'string', - 'Syntax.Literal': 'string', - 'Syntax.LabeledStatement': 'string', - 'Syntax.LogicalExpression': 'string', - 'Syntax.MemberExpression': 'string', - 'Syntax.NewExpression': 'string', - 'Syntax.ObjectExpression': 'string', - 'Syntax.Program': 'string', - 'Syntax.Property': 'string', - 'Syntax.ReturnStatement': 'string', - 'Syntax.SequenceExpression': 'string', - 'Syntax.SwitchStatement': 'string', - 'Syntax.SwitchCase': 'string', - 'Syntax.ThisExpression': 'string', - 'Syntax.ThrowStatement': 'string', - 'Syntax.TryStatement': 'string', - 'Syntax.UnaryExpression': 'string', - 'Syntax.UpdateExpression': 'string', - 'Syntax.VariableDeclaration': 'string', - 'Syntax.VariableDeclarator': 'string', - 'Syntax.WhileStatement': 'string', - 'Syntax.WithStatement': 'string' - }; - - total = failures = 0; - tick = new Date(); - - for (variable in variables) { - if (variables.hasOwnProperty(variable)) { - entries = variable.split('.'); - obj = ESParser; - for (i = 0; i < entries.length; ++i) { - entry = entries[i]; - if (typeof obj[entry] !== 'undefined') { - obj = obj[entry]; - } else { - obj = undefined; - break; - } - } - total++; - if (typeof obj === variables[variable]) { - reportSuccess(variable); - } else { - failures++; - reportFailure(variable, variables[variable], typeof obj); - } - } - } - - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js deleted file mode 100644 index ffbeb53..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/reflect.js +++ /dev/null @@ -1,422 +0,0 @@ -// This is modified from Mozilla Reflect.parse test suite (the file is located -// at js/src/tests/js1_8_5/extensions/reflect-parse.js in the source tree). -// -// Some notable changes: -// * Removed unsupported features (destructuring, let, comprehensions...). -// * Removed tests for E4X (ECMAScript for XML). -// * Removed everything related to builder. -// * Enclosed every 'Pattern' construct with a scope. -// * Tweaked some expected tree to remove generator field. -// * Removed the test for bug 632030 and bug 632024. - -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/licenses/publicdomain/ - */ - -(function (exports) { - -function testReflect(Reflect, Pattern) { - -function program(elts) { return Pattern({ type: "Program", body: elts }) } -function exprStmt(expr) { return Pattern({ type: "ExpressionStatement", expression: expr }) } -function throwStmt(expr) { return Pattern({ type: "ThrowStatement", argument: expr }) } -function returnStmt(expr) { return Pattern({ type: "ReturnStatement", argument: expr }) } -function yieldExpr(expr) { return Pattern({ type: "YieldExpression", argument: expr }) } -function lit(val) { return Pattern({ type: "Literal", value: val }) } -var thisExpr = Pattern({ type: "ThisExpression" }); -function funDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunDecl(id, params, body) { return Pattern({ type: "FunctionDeclaration", - id: id, - params: params, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function declarator(id, init) { return Pattern({ type: "VariableDeclarator", id: id, init: init }) } -function varDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "var" }) } -function letDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "let" }) } -function constDecl(decls) { return Pattern({ type: "VariableDeclaration", declarations: decls, kind: "const" }) } -function ident(name) { return Pattern({ type: "Identifier", name: name }) } -function dotExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: false, object: obj, property: id }) } -function memExpr(obj, id) { return Pattern({ type: "MemberExpression", computed: true, object: obj, property: id }) } -function forStmt(init, test, update, body) { return Pattern({ type: "ForStatement", init: init, test: test, update: update, body: body }) } -function forInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: false }) } -function forEachInStmt(lhs, rhs, body) { return Pattern({ type: "ForInStatement", left: lhs, right: rhs, body: body, each: true }) } -function breakStmt(lab) { return Pattern({ type: "BreakStatement", label: lab }) } -function continueStmt(lab) { return Pattern({ type: "ContinueStatement", label: lab }) } -function blockStmt(body) { return Pattern({ type: "BlockStatement", body: body }) } -var emptyStmt = Pattern({ type: "EmptyStatement" }); -function ifStmt(test, cons, alt) { return Pattern({ type: "IfStatement", test: test, alternate: alt, consequent: cons }) } -function labStmt(lab, stmt) { return Pattern({ type: "LabeledStatement", label: lab, body: stmt }) } -function withStmt(obj, stmt) { return Pattern({ type: "WithStatement", object: obj, body: stmt }) } -function whileStmt(test, stmt) { return Pattern({ type: "WhileStatement", test: test, body: stmt }) } -function doStmt(stmt, test) { return Pattern({ type: "DoWhileStatement", test: test, body: stmt }) } -function switchStmt(disc, cases) { return Pattern({ type: "SwitchStatement", discriminant: disc, cases: cases }) } -function caseClause(test, stmts) { return Pattern({ type: "SwitchCase", test: test, consequent: stmts }) } -function defaultClause(stmts) { return Pattern({ type: "SwitchCase", test: null, consequent: stmts }) } -function catchClause(id, guard, body) { if (guard) { return Pattern({ type: "GuardedCatchClause", param: id, guard: guard, body: body }) } else { return Pattern({ type: "CatchClause", param: id, body: body }) } } -function tryStmt(body, guarded, catches, fin) { return Pattern({ type: "TryStatement", block: body, guardedHandlers: guarded, handlers: catches, finalizer: fin }) } -function letStmt(head, body) { return Pattern({ type: "LetStatement", head: head, body: body }) } -function funExpr(id, args, body, gen) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } -function genFunExpr(id, args, body) { return Pattern({ type: "FunctionExpression", - id: id, - params: args, - defaults: [], - body: body, - rest: null, - generator: false, - expression: false - }) } - -function unExpr(op, arg) { return Pattern({ type: "UnaryExpression", operator: op, argument: arg }) } -function binExpr(op, left, right) { return Pattern({ type: "BinaryExpression", operator: op, left: left, right: right }) } -function aExpr(op, left, right) { return Pattern({ type: "AssignmentExpression", operator: op, left: left, right: right }) } -function updExpr(op, arg, prefix) { return Pattern({ type: "UpdateExpression", operator: op, argument: arg, prefix: prefix }) } -function logExpr(op, left, right) { return Pattern({ type: "LogicalExpression", operator: op, left: left, right: right }) } - -function condExpr(test, cons, alt) { return Pattern({ type: "ConditionalExpression", test: test, consequent: cons, alternate: alt }) } -function seqExpr(exprs) { return Pattern({ type: "SequenceExpression", expressions: exprs }) } -function newExpr(callee, args) { return Pattern({ type: "NewExpression", callee: callee, arguments: args }) } -function callExpr(callee, args) { return Pattern({ type: "CallExpression", callee: callee, arguments: args }) } -function arrExpr(elts) { return Pattern({ type: "ArrayExpression", elements: elts }) } -function objExpr(elts) { return Pattern({ type: "ObjectExpression", properties: elts }) } -function objProp(key, value, kind) { return Pattern({ type: "Property", key: key, value: value, kind: kind }) } - -function arrPatt(elts) { return Pattern({ type: "ArrayPattern", elements: elts }) } -function objPatt(elts) { return Pattern({ type: "ObjectPattern", properties: elts }) } - -function localSrc(src) { return "(function(){ " + src + " })" } -function localPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([patt])))]) } -function blockSrc(src) { return "(function(){ { " + src + " } })" } -function blockPatt(patt) { return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]) } - -function assertBlockStmt(src, patt) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src))); -} - -function assertBlockExpr(src, patt) { - assertBlockStmt(src, exprStmt(patt)); -} - -function assertBlockDecl(src, patt, builder) { - blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder})); -} - -function assertLocalStmt(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertLocalExpr(src, patt) { - assertLocalStmt(src, exprStmt(patt)); -} - -function assertLocalDecl(src, patt) { - localPatt(patt).assert(Reflect.parse(localSrc(src))); -} - -function assertGlobalStmt(src, patt, builder) { - program([patt]).assert(Reflect.parse(src, {builder: builder})); -} - -function assertGlobalExpr(src, patt, builder) { - program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder})); - //assertStmt(src, exprStmt(patt)); -} - -function assertGlobalDecl(src, patt) { - program([patt]).assert(Reflect.parse(src)); -} - -function assertProg(src, patt) { - program(patt).assert(Reflect.parse(src)); -} - -function assertStmt(src, patt) { - assertLocalStmt(src, patt); - assertGlobalStmt(src, patt); - assertBlockStmt(src, patt); -} - -function assertExpr(src, patt) { - assertLocalExpr(src, patt); - assertGlobalExpr(src, patt); - assertBlockExpr(src, patt); -} - -function assertDecl(src, patt) { - assertLocalDecl(src, patt); - assertGlobalDecl(src, patt); - assertBlockDecl(src, patt); -} - -function assertError(src, errorType) { - try { - Reflect.parse(src); - } catch (e) { - return; - } - throw new Error("expected " + errorType.name + " for " + uneval(src)); -} - - -// general tests - -// NB: These are useful but for now jit-test doesn't do I/O reliably. - -//program(_).assert(Reflect.parse(snarf('data/flapjax.txt'))); -//program(_).assert(Reflect.parse(snarf('data/jquery-1.4.2.txt'))); -//program(_).assert(Reflect.parse(snarf('data/prototype.js'))); -//program(_).assert(Reflect.parse(snarf('data/dojo.js.uncompressed.js'))); -//program(_).assert(Reflect.parse(snarf('data/mootools-1.2.4-core-nc.js'))); - - -// declarations - -assertDecl("var x = 1, y = 2, z = 3", - varDecl([declarator(ident("x"), lit(1)), - declarator(ident("y"), lit(2)), - declarator(ident("z"), lit(3))])); -assertDecl("var x, y, z", - varDecl([declarator(ident("x"), null), - declarator(ident("y"), null), - declarator(ident("z"), null)])); -assertDecl("function foo() { }", - funDecl(ident("foo"), [], blockStmt([]))); -assertDecl("function foo() { return 42 }", - funDecl(ident("foo"), [], blockStmt([returnStmt(lit(42))]))); - - -// Bug 591437: rebound args have their defs turned into uses -assertDecl("function f(a) { function a() { } }", - funDecl(ident("f"), [ident("a")], blockStmt([funDecl(ident("a"), [], blockStmt([]))]))); -assertDecl("function f(a,b,c) { function b() { } }", - funDecl(ident("f"), [ident("a"),ident("b"),ident("c")], blockStmt([funDecl(ident("b"), [], blockStmt([]))]))); - -// expressions - -assertExpr("true", lit(true)); -assertExpr("false", lit(false)); -assertExpr("42", lit(42)); -assertExpr("(/asdf/)", lit(/asdf/)); -assertExpr("this", thisExpr); -assertExpr("foo", ident("foo")); -assertExpr("foo.bar", dotExpr(ident("foo"), ident("bar"))); -assertExpr("foo[bar]", memExpr(ident("foo"), ident("bar"))); -assertExpr("(function(){})", funExpr(null, [], blockStmt([]))); -assertExpr("(function f() {})", funExpr(ident("f"), [], blockStmt([]))); -assertExpr("(function f(x,y,z) {})", funExpr(ident("f"), [ident("x"),ident("y"),ident("z")], blockStmt([]))); -assertExpr("(++x)", updExpr("++", ident("x"), true)); -assertExpr("(x++)", updExpr("++", ident("x"), false)); -assertExpr("(+x)", unExpr("+", ident("x"))); -assertExpr("(-x)", unExpr("-", ident("x"))); -assertExpr("(!x)", unExpr("!", ident("x"))); -assertExpr("(~x)", unExpr("~", ident("x"))); -assertExpr("(delete x)", unExpr("delete", ident("x"))); -assertExpr("(typeof x)", unExpr("typeof", ident("x"))); -assertExpr("(void x)", unExpr("void", ident("x"))); -assertExpr("(x == y)", binExpr("==", ident("x"), ident("y"))); -assertExpr("(x != y)", binExpr("!=", ident("x"), ident("y"))); -assertExpr("(x === y)", binExpr("===", ident("x"), ident("y"))); -assertExpr("(x !== y)", binExpr("!==", ident("x"), ident("y"))); -assertExpr("(x < y)", binExpr("<", ident("x"), ident("y"))); -assertExpr("(x <= y)", binExpr("<=", ident("x"), ident("y"))); -assertExpr("(x > y)", binExpr(">", ident("x"), ident("y"))); -assertExpr("(x >= y)", binExpr(">=", ident("x"), ident("y"))); -assertExpr("(x << y)", binExpr("<<", ident("x"), ident("y"))); -assertExpr("(x >> y)", binExpr(">>", ident("x"), ident("y"))); -assertExpr("(x >>> y)", binExpr(">>>", ident("x"), ident("y"))); -assertExpr("(x + y)", binExpr("+", ident("x"), ident("y"))); -assertExpr("(w + x + y + z)", binExpr("+", binExpr("+", binExpr("+", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x - y)", binExpr("-", ident("x"), ident("y"))); -assertExpr("(w - x - y - z)", binExpr("-", binExpr("-", binExpr("-", ident("w"), ident("x")), ident("y")), ident("z"))); -assertExpr("(x * y)", binExpr("*", ident("x"), ident("y"))); -assertExpr("(x / y)", binExpr("/", ident("x"), ident("y"))); -assertExpr("(x % y)", binExpr("%", ident("x"), ident("y"))); -assertExpr("(x | y)", binExpr("|", ident("x"), ident("y"))); -assertExpr("(x ^ y)", binExpr("^", ident("x"), ident("y"))); -assertExpr("(x & y)", binExpr("&", ident("x"), ident("y"))); -assertExpr("(x in y)", binExpr("in", ident("x"), ident("y"))); -assertExpr("(x instanceof y)", binExpr("instanceof", ident("x"), ident("y"))); -assertExpr("(x = y)", aExpr("=", ident("x"), ident("y"))); -assertExpr("(x += y)", aExpr("+=", ident("x"), ident("y"))); -assertExpr("(x -= y)", aExpr("-=", ident("x"), ident("y"))); -assertExpr("(x *= y)", aExpr("*=", ident("x"), ident("y"))); -assertExpr("(x /= y)", aExpr("/=", ident("x"), ident("y"))); -assertExpr("(x %= y)", aExpr("%=", ident("x"), ident("y"))); -assertExpr("(x <<= y)", aExpr("<<=", ident("x"), ident("y"))); -assertExpr("(x >>= y)", aExpr(">>=", ident("x"), ident("y"))); -assertExpr("(x >>>= y)", aExpr(">>>=", ident("x"), ident("y"))); -assertExpr("(x |= y)", aExpr("|=", ident("x"), ident("y"))); -assertExpr("(x ^= y)", aExpr("^=", ident("x"), ident("y"))); -assertExpr("(x &= y)", aExpr("&=", ident("x"), ident("y"))); -assertExpr("(x || y)", logExpr("||", ident("x"), ident("y"))); -assertExpr("(x && y)", logExpr("&&", ident("x"), ident("y"))); -assertExpr("(w || x || y || z)", logExpr("||", logExpr("||", logExpr("||", ident("w"), ident("x")), ident("y")), ident("z"))) -assertExpr("(x ? y : z)", condExpr(ident("x"), ident("y"), ident("z"))); -assertExpr("(x,y)", seqExpr([ident("x"),ident("y")])) -assertExpr("(x,y,z)", seqExpr([ident("x"),ident("y"),ident("z")])) -assertExpr("(a,b,c,d,e,f,g)", seqExpr([ident("a"),ident("b"),ident("c"),ident("d"),ident("e"),ident("f"),ident("g")])); -assertExpr("(new Object)", newExpr(ident("Object"), [])); -assertExpr("(new Object())", newExpr(ident("Object"), [])); -assertExpr("(new Object(42))", newExpr(ident("Object"), [lit(42)])); -assertExpr("(new Object(1,2,3))", newExpr(ident("Object"), [lit(1),lit(2),lit(3)])); -assertExpr("(String())", callExpr(ident("String"), [])); -assertExpr("(String(42))", callExpr(ident("String"), [lit(42)])); -assertExpr("(String(1,2,3))", callExpr(ident("String"), [lit(1),lit(2),lit(3)])); -assertExpr("[]", arrExpr([])); -assertExpr("[1]", arrExpr([lit(1)])); -assertExpr("[1,2]", arrExpr([lit(1),lit(2)])); -assertExpr("[1,2,3]", arrExpr([lit(1),lit(2),lit(3)])); -assertExpr("[1,,2,3]", arrExpr([lit(1),,lit(2),lit(3)])); -assertExpr("[1,,,2,3]", arrExpr([lit(1),,,lit(2),lit(3)])); -assertExpr("[1,,,2,,3]", arrExpr([lit(1),,,lit(2),,lit(3)])); -assertExpr("[1,,,2,,,3]", arrExpr([lit(1),,,lit(2),,,lit(3)])); -assertExpr("[,1,2,3]", arrExpr([,lit(1),lit(2),lit(3)])); -assertExpr("[,,1,2,3]", arrExpr([,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,]", arrExpr([,,,lit(1),lit(2),lit(3)])); -assertExpr("[,,,1,2,3,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined])); -assertExpr("[,,,1,2,3,,,]", arrExpr([,,,lit(1),lit(2),lit(3),undefined,undefined])); -assertExpr("[,,,,,]", arrExpr([undefined,undefined,undefined,undefined,undefined])); -assertExpr("({})", objExpr([])); -assertExpr("({x:1})", objExpr([objProp(ident("x"), lit(1), "init")])); -assertExpr("({x:1, y:2})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init")])); -assertExpr("({x:1, y:2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(ident("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({x:1, 'y':2, z:3})", objExpr([objProp(ident("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, z:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(ident("z"), lit(3), "init") ])); -assertExpr("({'x':1, 'y':2, 3:3})", objExpr([objProp(lit("x"), lit(1), "init"), - objProp(lit("y"), lit(2), "init"), - objProp(lit(3), lit(3), "init") ])); - -// Bug 571617: eliminate constant-folding -assertExpr("2 + 3", binExpr("+", lit(2), lit(3))); - -// Bug 632026: constant-folding -assertExpr("typeof(0?0:a)", unExpr("typeof", condExpr(lit(0), lit(0), ident("a")))); - -// Bug 632056: constant-folding -program([exprStmt(ident("f")), - ifStmt(lit(1), - funDecl(ident("f"), [], blockStmt([])), - null)]).assert(Reflect.parse("f; if (1) function f(){}")); - -// statements - -assertStmt("throw 42", throwStmt(lit(42))); -assertStmt("for (;;) break", forStmt(null, null, null, breakStmt(null))); -assertStmt("for (x; y; z) break", forStmt(ident("x"), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x; y; z) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; y; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), ident("y"), ident("z"), breakStmt(null))); -assertStmt("for (x; ; z) break", forStmt(ident("x"), null, ident("z"), breakStmt(null))); -assertStmt("for (var x; ; z) break", forStmt(varDecl([declarator(ident("x"), null)]), null, ident("z"), breakStmt(null))); -assertStmt("for (var x = 42; ; z) break", forStmt(varDecl([declarator(ident("x"), lit(42))]), null, ident("z"), breakStmt(null))); -assertStmt("for (x; y; ) break", forStmt(ident("x"), ident("y"), null, breakStmt(null))); -assertStmt("for (var x; y; ) break", forStmt(varDecl([declarator(ident("x"), null)]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x = 42; y; ) break", forStmt(varDecl([declarator(ident("x"),lit(42))]), ident("y"), null, breakStmt(null))); -assertStmt("for (var x in y) break", forInStmt(varDecl([declarator(ident("x"),null)]), ident("y"), breakStmt(null))); -assertStmt("for (x in y) break", forInStmt(ident("x"), ident("y"), breakStmt(null))); -assertStmt("{ }", blockStmt([])); -assertStmt("{ throw 1; throw 2; throw 3; }", blockStmt([ throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))])); -assertStmt(";", emptyStmt); -assertStmt("if (foo) throw 42;", ifStmt(ident("foo"), throwStmt(lit(42)), null)); -assertStmt("if (foo) throw 42; else true;", ifStmt(ident("foo"), throwStmt(lit(42)), exprStmt(lit(true)))); -assertStmt("if (foo) { throw 1; throw 2; throw 3; }", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - null)); -assertStmt("if (foo) { throw 1; throw 2; throw 3; } else true;", - ifStmt(ident("foo"), - blockStmt([throwStmt(lit(1)), throwStmt(lit(2)), throwStmt(lit(3))]), - exprStmt(lit(true)))); -assertStmt("foo: for(;;) break foo;", labStmt(ident("foo"), forStmt(null, null, null, breakStmt(ident("foo"))))); -assertStmt("foo: for(;;) continue foo;", labStmt(ident("foo"), forStmt(null, null, null, continueStmt(ident("foo"))))); -assertStmt("with (obj) { }", withStmt(ident("obj"), blockStmt([]))); -assertStmt("with (obj) { obj; }", withStmt(ident("obj"), blockStmt([exprStmt(ident("obj"))]))); -assertStmt("while (foo) { }", whileStmt(ident("foo"), blockStmt([]))); -assertStmt("while (foo) { foo; }", whileStmt(ident("foo"), blockStmt([exprStmt(ident("foo"))]))); -assertStmt("do { } while (foo);", doStmt(blockStmt([]), ident("foo"))); -assertStmt("do { foo; } while (foo)", doStmt(blockStmt([exprStmt(ident("foo"))]), ident("foo"))); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]) ])); -assertStmt("switch (foo) { case 1: 1; break; case 2: 2; break; default: 3; case 42: 42; }", - switchStmt(ident("foo"), - [ caseClause(lit(1), [ exprStmt(lit(1)), breakStmt(null) ]), - caseClause(lit(2), [ exprStmt(lit(2)), breakStmt(null) ]), - defaultClause([ exprStmt(lit(3)) ]), - caseClause(lit(42), [ exprStmt(lit(42)) ]) ])); -assertStmt("try { } catch (e) { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - null)); -assertStmt("try { } catch (e) { } finally { }", - tryStmt(blockStmt([]), - [], - [ catchClause(ident("e"), null, blockStmt([])) ], - blockStmt([]))); -assertStmt("try { } finally { }", - tryStmt(blockStmt([]), - [], - [], - blockStmt([]))); - -// redeclarations (TOK_NAME nodes with lexdef) - -assertStmt("function f() { function g() { } function g() { } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([]))]))); - -assertStmt("function f() { function g() { } function g() { return 42 } }", - funDecl(ident("f"), [], blockStmt([funDecl(ident("g"), [], blockStmt([])), - funDecl(ident("g"), [], blockStmt([returnStmt(lit(42))]))]))); - -assertStmt("function f() { var x = 42; var x = 43; }", - funDecl(ident("f"), [], blockStmt([varDecl([declarator(ident("x"),lit(42))]), - varDecl([declarator(ident("x"),lit(43))])]))); - -// getters and setters - - assertExpr("({ get x() { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [], blockStmt([returnStmt(lit(42))])), - "get" ) ])); - assertExpr("({ set x(v) { return 42 } })", - objExpr([ objProp(ident("x"), - funExpr(null, [ident("v")], blockStmt([returnStmt(lit(42))])), - "set" ) ])); - -} - -exports.testReflect = testReflect; - -}(typeof exports === 'undefined' ? this : exports)); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js deleted file mode 100644 index 32ca3fa..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/run.js +++ /dev/null @@ -1,66 +0,0 @@ -/* - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Ariya Hidayat - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint node:true */ - -(function () { - 'use strict'; - - var child = require('child_process'), - nodejs = '"' + process.execPath + '"', - ret = 0, - suites, - index; - - suites = [ - 'runner', - 'compat' - ]; - - function nextTest() { - var suite = suites[index]; - - if (index < suites.length) { - child.exec(nodejs + ' ./test/' + suite + '.js', function (err, stdout, stderr) { - if (stdout) { - process.stdout.write(suite + ': ' + stdout); - } - if (stderr) { - process.stderr.write(suite + ': ' + stderr); - } - if (err) { - ret = err.code; - } - index += 1; - nextTest(); - }); - } else { - process.exit(ret); - } - } - - index = 0; - nextTest(); -}()); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js deleted file mode 100644 index c1a3fc9..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/runner.js +++ /dev/null @@ -1,387 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -/*jslint browser:true node:true */ -/*global esprima:true, testFixture:true */ - -var runTests; - -// Special handling for regular expression literal since we need to -// convert it to a string literal, otherwise it will be decoded -// as object "{}" and the regular expression would be lost. -function adjustRegexLiteral(key, value) { - 'use strict'; - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return value; -} - -function NotMatchingError(expected, actual) { - 'use strict'; - Error.call(this, 'Expected '); - this.expected = expected; - this.actual = actual; -} -NotMatchingError.prototype = new Error(); - -function errorToObject(e) { - 'use strict'; - var msg = e.toString(); - - // Opera 9.64 produces an non-standard string in toString(). - if (msg.substr(0, 6) !== 'Error:') { - if (typeof e.message === 'string') { - msg = 'Error: ' + e.message; - } - } - - return { - index: e.index, - lineNumber: e.lineNumber, - column: e.column, - message: msg - }; -} - -function testParse(esprima, code, syntax) { - 'use strict'; - var expected, tree, actual, options, StringObject, i, len, err; - - // alias, so that JSLint does not complain. - StringObject = String; - - options = { - comment: (typeof syntax.comments !== 'undefined'), - range: true, - loc: true, - tokens: (typeof syntax.tokens !== 'undefined'), - raw: true, - tolerant: (typeof syntax.errors !== 'undefined') - }; - - if (typeof syntax.tokens !== 'undefined') { - if (syntax.tokens.length > 0) { - options.range = (typeof syntax.tokens[0].range !== 'undefined'); - options.loc = (typeof syntax.tokens[0].loc !== 'undefined'); - } - } - - if (typeof syntax.comments !== 'undefined') { - if (syntax.comments.length > 0) { - options.range = (typeof syntax.comments[0].range !== 'undefined'); - options.loc = (typeof syntax.comments[0].loc !== 'undefined'); - } - } - - expected = JSON.stringify(syntax, null, 4); - try { - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens || options.tolerant) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, adjustRegexLiteral, 4); - - // Only to ensure that there is no error when using string object. - esprima.parse(new StringObject(code), options); - - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } - - function filter(key, value) { - if (key === 'value' && value instanceof RegExp) { - value = value.toString(); - } - return (key === 'loc' || key === 'range') ? undefined : value; - } - - if (options.tolerant) { - return; - } - - - // Check again without any location info. - options.range = false; - options.loc = false; - expected = JSON.stringify(syntax, filter, 4); - try { - tree = esprima.parse(code, options); - tree = (options.comment || options.tokens) ? tree : tree.body[0]; - - if (options.tolerant) { - for (i = 0, len = tree.errors.length; i < len; i += 1) { - tree.errors[i] = errorToObject(tree.errors[i]); - } - } - - actual = JSON.stringify(tree, filter, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function testError(esprima, code, exception) { - 'use strict'; - var i, options, expected, actual, handleInvalidRegexFlag; - - // Different parsing options should give the same error. - options = [ - {}, - { comment: true }, - { raw: true }, - { raw: true, comment: true } - ]; - - // If handleInvalidRegexFlag is true, an invalid flag in a regular expression - // will throw an exception. In some old version V8, this is not the case - // and hence handleInvalidRegexFlag is false. - handleInvalidRegexFlag = false; - try { - 'test'.match(new RegExp('[a-z]', 'x')); - } catch (e) { - handleInvalidRegexFlag = true; - } - - expected = JSON.stringify(exception); - - for (i = 0; i < options.length; i += 1) { - - try { - esprima.parse(code, options[i]); - } catch (e) { - actual = JSON.stringify(errorToObject(e)); - } - - if (expected !== actual) { - - // Compensate for old V8 which does not handle invalid flag. - if (exception.message.indexOf('Invalid regular expression') > 0) { - if (typeof actual === 'undefined' && !handleInvalidRegexFlag) { - return; - } - } - - throw new NotMatchingError(expected, actual); - } - - } -} - -function testAPI(esprima, code, result) { - 'use strict'; - var expected, res, actual; - - expected = JSON.stringify(result.result, null, 4); - try { - if (typeof result.property !== 'undefined') { - res = esprima[result.property]; - } else { - res = esprima[result.call].apply(esprima, result.args); - } - actual = JSON.stringify(res, adjustRegexLiteral, 4); - } catch (e) { - throw new NotMatchingError(expected, e.toString()); - } - if (expected !== actual) { - throw new NotMatchingError(expected, actual); - } -} - -function runTest(esprima, code, result) { - 'use strict'; - if (result.hasOwnProperty('lineNumber')) { - testError(esprima, code, result); - } else if (result.hasOwnProperty('result')) { - testAPI(esprima, code, result); - } else { - testParse(esprima, code, result); - } -} - -if (typeof window !== 'undefined') { - // Run all tests in a browser environment. - runTests = function () { - 'use strict'; - var total = 0, - failures = 0, - category, - fixture, - source, - tick, - expected, - index, - len; - - function setText(el, str) { - if (typeof el.innerText === 'string') { - el.innerText = str; - } else { - el.textContent = str; - } - } - - function startCategory(category) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('h4'); - setText(e, category); - report.appendChild(e); - } - - function reportSuccess(code) { - var report, e; - report = document.getElementById('report'); - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - } - - function reportFailure(code, expected, actual) { - var report, e; - - report = document.getElementById('report'); - - e = document.createElement('p'); - setText(e, 'Code:'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'code'); - setText(e, code); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Expected'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'expected'); - setText(e, expected); - report.appendChild(e); - - e = document.createElement('p'); - setText(e, 'Actual'); - report.appendChild(e); - - e = document.createElement('pre'); - e.setAttribute('class', 'actual'); - setText(e, actual); - report.appendChild(e); - } - - setText(document.getElementById('version'), esprima.version); - - tick = new Date(); - for (category in testFixture) { - if (testFixture.hasOwnProperty(category)) { - startCategory(category); - fixture = testFixture[category]; - for (source in fixture) { - if (fixture.hasOwnProperty(source)) { - expected = fixture[source]; - total += 1; - try { - runTest(esprima, source, expected); - reportSuccess(source, JSON.stringify(expected, null, 4)); - } catch (e) { - failures += 1; - reportFailure(source, e.expected, e.actual); - } - } - } - } - } - tick = (new Date()) - tick; - - if (failures > 0) { - setText(document.getElementById('status'), total + ' tests. ' + - 'Failures: ' + failures + '. ' + tick + ' ms'); - } else { - setText(document.getElementById('status'), total + ' tests. ' + - 'No failure. ' + tick + ' ms'); - } - }; -} else { - (function () { - 'use strict'; - - var esprima = require('../esprima'), - vm = require('vm'), - fs = require('fs'), - total = 0, - failures = [], - tick = new Date(), - expected, - header; - - vm.runInThisContext(fs.readFileSync(__dirname + '/test.js', 'utf-8')); - - Object.keys(testFixture).forEach(function (category) { - Object.keys(testFixture[category]).forEach(function (source) { - total += 1; - expected = testFixture[category][source]; - try { - runTest(esprima, source, expected); - } catch (e) { - e.source = source; - failures.push(e); - } - }); - }); - tick = (new Date()) - tick; - - header = total + ' tests. ' + failures.length + ' failures. ' + - tick + ' ms'; - if (failures.length) { - console.error(header); - failures.forEach(function (failure) { - console.error(failure.source + ': Expected\n ' + - failure.expected.split('\n').join('\n ') + - '\nto match\n ' + failure.actual); - }); - } else { - console.log(header); - } - process.exit(failures.length === 0 ? 0 : 1); - }()); -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js deleted file mode 100644 index 780af55..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/node_modules/esprima/test/test.js +++ /dev/null @@ -1,19764 +0,0 @@ -/* - Copyright (C) 2012 Ariya Hidayat - Copyright (C) 2012 Joost-Wim Boekesteijn - Copyright (C) 2012 Yusuke Suzuki - Copyright (C) 2012 Arpad Borsos - Copyright (C) 2011 Ariya Hidayat - Copyright (C) 2011 Yusuke Suzuki - Copyright (C) 2011 Arpad Borsos - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -var testFixture = { - - 'Primary Expression': { - - 'this\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'ThisExpression', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Keyword', - value: 'this', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - 'null\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null, - raw: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - } - }], - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 0 } - }, - tokens: [{ - type: 'Null', - value: 'null', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '\n 42\n\n': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - } - }], - range: [5, 9], - loc: { - start: { line: 2, column: 4 }, - end: { line: 4, column: 0 } - }, - tokens: [{ - type: 'Numeric', - value: '42', - range: [5, 7], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }] - }, - - '(1 + 2 ) * 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [1, 6], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Grouping Operator': { - - '(1) + (2 ) + 3': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 1, - raw: '1', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'Literal', - value: 2, - raw: '2', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - right: { - type: 'Literal', - value: 3, - raw: '3', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '4 + 5 << (6)': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Literal', - value: 4, - raw: '4', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 5, - raw: '5', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 6, - raw: '6', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - } - - }, - - 'Array Initializer': { - - 'x = []': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - tokens: [{ - type: 'Identifier', - value: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Punctuator', - value: '=', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Punctuator', - value: '[', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: ']', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }] - }, - - 'x = [ ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = [ 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'x = [ 42, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x = [ ,, 42 ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [ - null, - null, - { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'x = [ 1, 2, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = [ 1, 2,, 3, ]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ArrayExpression', - elements: [{ - type: 'Literal', - value: 1, - raw: '1', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Literal', - value: 2, - raw: '2', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, null, { - type: 'Literal', - value: 3, - raw: '3', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '日本語 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '日本語', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'T\u203F = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u203F', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200C = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200C', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'T\u200D = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'T\u200D', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161 = []': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\u2163\u2161\u200A=\u2009[]': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: '\u2163\u2161', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Object Initializer': { - - 'x = {}': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x = { }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x = { answer: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'answer', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [14, 16], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [6, 16], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 16 } - } - }], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { if: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - kind: 'init', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x = { true: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { false: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - kind: 'init', - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'x = { null: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - kind: 'init', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }], - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'x = { "answer": 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'answer', - raw: '"answer"', - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 18 } - } - }, - kind: 'init', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }], - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'x = { x: 1, x: 2 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [ - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - kind: 'init', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - { - type: 'Property', - key: { - type: 'Identifier', - name: 'x', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - value: { - type: 'Literal', - value: 2, - raw: '2', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - kind: 'init', - range: [12, 16], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 16 } - } - } - ], - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'x = { get width() { return m_width } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'm_width', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - range: [20, 35], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 35 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - kind: 'get', - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }], - range: [4, 38], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'x = { get undef() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'undef', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get if() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { get true() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get false() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - kind: 'get', - range: [6, 20], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 20 } - } - }], - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'x = { get null() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [17, 19], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 19 } - } - }, - kind: 'get', - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'x = { get "undef"() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'undef', - raw: '"undef"', - range: [10, 17], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - kind: 'get', - range: [6, 22], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 22 } - } - }], - range: [4, 24], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'x = { get 10() {} }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - kind: 'get', - range: [6, 17], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 17 } - } - }], - range: [4, 19], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'x = { set width(w) { m_width = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'width', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_width', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set if(w) { m_if = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'if', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_if', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 26], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 26 } - } - }, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 28], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 28 } - } - }, - kind: 'set', - range: [6, 28], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 28 } - } - }], - range: [4, 30], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'x = { set true(w) { m_true = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'true', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_true', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set false(w) { m_false = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'false', - range: [10, 15], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_false', - range: [21, 28], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - }, - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set null(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'null', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - kind: 'set', - range: [6, 32], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 32 } - } - }], - range: [4, 34], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'x = { set "null"(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 'null', - raw: '"null"', - range: [10, 16], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 16 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [22, 28], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 28 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [31, 32], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 32], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 32 } - } - }, - range: [22, 33], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 33 } - } - }], - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }], - range: [4, 36], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'x = { set 10(w) { m_null = w } }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 10, - raw: '10', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'w', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'm_null', - range: [18, 24], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 24 } - } - }, - right: { - type: 'Identifier', - name: 'w', - range: [27, 28], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }], - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [16, 30], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 30 } - } - }, - kind: 'set', - range: [6, 30], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 30 } - } - }], - range: [4, 32], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'x = { get: 42 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'get', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'x = { set: 43 }': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'set', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - value: { - type: 'Literal', - value: 43, - raw: '43', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - kind: 'init', - range: [6, 13], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 13 } - } - }], - range: [4, 15], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - } - - }, - - 'Comments': { - - '/* block comment */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - range: [20, 22], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 22 } - } - }, - - '42 /*The*/ /*Answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - comments: [{ - type: 'Block', - value: 'The', - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, { - type: 'Block', - value: 'Answer', - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }] - }, - - '42 /*the*/ /*answer*/': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2] - }, - range: [0, 21] - }], - range: [0, 21], - comments: [{ - type: 'Block', - value: 'the', - range: [3, 10] - }, { - type: 'Block', - value: 'answer', - range: [11, 21] - }] - }, - - '/* multiline\ncomment\nshould\nbe\nignored */ 42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - range: [42, 44], - loc: { - start: { line: 5, column: 11 }, - end: { line: 5, column: 13 } - } - }, - - '/*a\r\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [9, 11], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\r\nb', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\rb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\rb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nb*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - range: [8, 10], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nb', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '/*a\nc*/ 42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }, - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - } - }], - loc: { - start: { line: 2, column: 4 }, - end: { line: 2, column: 6 } - }, - comments: [{ - type: 'Block', - value: 'a\nc', - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 3 } - } - }] - }, - - '// line comment\n42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [16, 18], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - - '42 // line comment': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - comments: [{ - type: 'Line', - value: ' line comment', - range: [3, 18], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 18 } - } - }] - }, - - '// Hello, world!\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [17, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hello, world!\n': { - type: 'Program', - body: [], - range: [17, 17], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '// Hallo, world!\n': { - type: 'Program', - body: [], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 0 } - }, - comments: [{ - type: 'Line', - value: ' Hallo, world!', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }] - }, - - '//\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }, - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [3, 5], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '//': { - type: 'Program', - body: [], - range: [2, 2], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 2 } - }, - comments: [{ - type: 'Line', - value: '', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }] - }, - - '// ': { - type: 'Program', - body: [], - range: [3, 3], - comments: [{ - type: 'Line', - value: ' ', - range: [0, 3] - }] - }, - - '/**/42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }], - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - }, - comments: [{ - type: 'Block', - value: '', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }] - }, - - '// Hello, world!\n\n// Another hello\n42': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - } - }, - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - } - }], - range: [37, 39], - loc: { - start: { line: 4, column: 0 }, - end: { line: 4, column: 2 } - }, - comments: [{ - type: 'Line', - value: ' Hello, world!', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Line', - value: ' Another hello', - range: [18, 36], - loc: { - start: { line: 3, column: 0 }, - end: { line: 3, column: 18 } - } - }] - }, - - 'if (x) { // Some comment\ndoThat(); }': { - type: 'Program', - body: [{ - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - consequent: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [25, 31], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }, - 'arguments': [], - range: [25, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 8 } - } - }, - range: [25, 34], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 9 } - } - }], - range: [7, 36], - loc: { - start: { line: 1, column: 7 }, - end: { line: 2, column: 11 } - } - }, - alternate: null, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 11 } - }, - comments: [{ - type: 'Line', - value: ' Some comment', - range: [9, 24], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 24 } - } - }] - }, - - 'switch (answer) { case 42: /* perfect */ bingo() }': { - type: 'Program', - body: [{ - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'bingo', - range: [41, 46], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 46 } - } - }, - 'arguments': [], - range: [41, 48], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 48 } - } - }, - range: [41, 49], - loc: { - start: { line: 1, column: 41 }, - end: { line: 1, column: 49 } - } - }], - range: [18, 49], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 49 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - } - }], - range: [0, 50], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 50 } - }, - comments: [{ - type: 'Block', - value: ' perfect ', - range: [27, 40], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 40 } - } - }] - } - - }, - - 'Numeric Literals': { - - '0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - '42': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42, - raw: '42', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '3': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3, - raw: '3', - range: [0, 1] - }, - range: [0, 1] - }], - range: [0, 1], - tokens: [{ - type: 'Numeric', - value: '3', - range: [0, 1] - }] - }, - - '5': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 5, - raw: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - }, - tokens: [{ - type: 'Numeric', - value: '5', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }] - }, - - '.14': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0.14, - raw: '.14', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '3.14159': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 3.14159, - raw: '3.14159', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '6.02214179e+23': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 6.02214179e+23, - raw: '6.02214179e+23', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '1.492417830e-10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 1.49241783e-10, - raw: '1.492417830e-10', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '0x0': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0x0', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0e+100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0, - raw: '0e+100', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '0xabc': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xabc, - raw: '0xabc', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0xdef': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0xdef, - raw: '0xdef', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X1A': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x1A, - raw: '0X1A', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x10': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x10, - raw: '0x10', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '0x100': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0x100, - raw: '0x100', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '0X04': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 0X04, - raw: '0X04', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '02': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 2, - raw: '02', - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '012', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '0012': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 10, - raw: '0012', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - } - - }, - - 'String Literals': { - - '"Hello"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello', - raw: '"Hello"', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\n\r\t\v\b\f\\\'"\x00', - raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '"\\u0061"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\u0061"', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - '"\\x61"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'a', - raw: '"\\x61"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\u00"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'u00', - raw: '"\\u00"', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '"\\xt"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'xt', - raw: '"\\xt"', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '"Hello\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\nworld', - raw: '"Hello\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\nworld"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 14 } - } - }, - - '"Hello\\02World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0002World', - raw: '"Hello\\02World"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - '"Hello\\012World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000AWorld', - raw: '"Hello\\012World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\122World', - raw: '"Hello\\122World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0122World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u000A2World', - raw: '"Hello\\0122World"', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - '"Hello\\312World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u00CAWorld', - raw: '"Hello\\312World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\412World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\412World', - raw: '"Hello\\412World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\812World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello812World', - raw: '"Hello\\812World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\712World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\712World', - raw: '"Hello\\712World"', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '"Hello\\0World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0000World', - raw: '"Hello\\0World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '"Hello\\\r\nworld"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Helloworld', - raw: '"Hello\\\r\nworld"', - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - - '"Hello\\1World"': { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'Hello\u0001World', - raw: '"Hello\\1World"', - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - }, - - 'Regular Expression Literals': { - - 'var x = /[a-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-z]/i', - raw: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - range: [4, 16], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-z]/i', - range: [8, 16], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[x-z]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5] - }, - init: { - type: 'Literal', - value: '/[x-z]/i', - raw: '/[x-z]/i', - range: [8, 16] - }, - range: [4, 16] - }], - kind: 'var', - range: [0, 16] - }], - range: [0, 16], - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3] - }, { - type: 'Identifier', - value: 'x', - range: [4, 5] - }, { - type: 'Punctuator', - value: '=', - range: [6, 7] - }, { - type: 'RegularExpression', - value: '/[x-z]/i', - range: [8, 16] - }] - }, - - 'var x = /[a-c]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[a-c]/i', - raw: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }, - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 16 } - } - }], - kind: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[a-c]/i', - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 16 } - } - }] - }, - - 'var x = /[P QR]/i': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/i', - raw: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }, - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }], - kind: 'var', - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }], - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/i', - range: [8, 17], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 17 } - } - }] - }, - - 'var x = /foo\\/bar/': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/foo\\/bar/', - raw: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/foo\\/bar/', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - }, - - 'var x = /=([^=\\s])+/g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/=([^=\\s])+/g', - raw: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }, - range: [4, 21], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 21 } - } - }], - kind: 'var', - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/=([^=\\s])+/g', - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }] - }, - - 'var x = /[P QR]/\\u0067': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }, - range: [4, 22], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\u0067', - range: [8, 22], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 22 } - } - }] - }, - - 'var x = /[P QR]/\\g': { - type: 'Program', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: '/[P QR]/g', - raw: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }, - range: [4, 18], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 18 } - } - }], - kind: 'var', - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }], - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - }, - tokens: [{ - type: 'Keyword', - value: 'var', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, { - type: 'Identifier', - value: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'Punctuator', - value: '=', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, { - type: 'RegularExpression', - value: '/[P QR]/\\g', - range: [8, 18], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 18 } - } - }] - } - - }, - - 'Left-Hand-Side Expression': { - - 'new Button': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'new Button()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'Button', - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new new foo': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'new new foo()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'new foo().bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - 'arguments': [], - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - range: [0, 15], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 15 } - } - }, - - 'new foo[bar]': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 12], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - 'new foo.bar()': { - type: 'ExpressionStatement', - expression: { - type: 'NewExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'foo', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [8, 11], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 11 } - } - }, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( new foo).bar()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'NewExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [6, 9], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 9 } - } - }, - 'arguments': [], - range: [2, 9], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 9 } - } - }, - property: { - type: 'Identifier', - name: 'bar', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - 'arguments': [], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - 'foo(bar, baz)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'bar', - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, { - type: 'Identifier', - name: 'baz', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - '( foo )()': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'foo', - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'universe.milkyway.solarsystem': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'universe.milkyway.solarsystem.Earth': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [9, 17], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - property: { - type: 'Identifier', - name: 'solarsystem', - range: [18, 29], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 29 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - property: { - type: 'Identifier', - name: 'Earth', - range: [30, 35], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'universe[galaxyName, otherUselessName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Identifier', - name: 'otherUselessName', - range: [21, 37], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 37 } - } - }], - range: [9, 37], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'universe[galaxyName]': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'galaxyName', - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'universe[42].galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: true, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'universe(42).galaxies(14, 3, 77).milkyway': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 42, - raw: '42', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }], - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - property: { - type: 'Identifier', - name: 'galaxies', - range: [13, 21], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 14, - raw: '14', - range: [22, 24], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 24 } - } - }, { - type: 'Literal', - value: 3, - raw: '3', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, { - type: 'Literal', - value: 77, - raw: '77', - range: [29, 31], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - property: { - type: 'Identifier', - name: 'milkyway', - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'earth.asia.Indonesia.prepareForElection(2014)': { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'earth', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - property: { - type: 'Identifier', - name: 'asia', - range: [6, 10], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - property: { - type: 'Identifier', - name: 'Indonesia', - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - property: { - type: 'Identifier', - name: 'prepareForElection', - range: [21, 39], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 39 } - } - }, - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - } - }, - 'arguments': [{ - type: 'Literal', - value: 2014, - raw: '2014', - range: [40, 44], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - range: [0, 45], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 45 } - } - }, - - 'universe.if': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'if', - range: [9, 11], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'universe.true': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'true', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'universe.false': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'false', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'universe.null': { - type: 'ExpressionStatement', - expression: { - type: 'MemberExpression', - computed: false, - object: { - type: 'Identifier', - name: 'universe', - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - property: { - type: 'Identifier', - name: 'null', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - } - - }, - - 'Postfix Expressions': { - - 'x++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'x--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - prefix: false, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'eval++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - prefix: false, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'arguments++': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'arguments--': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - prefix: false, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - } - - }, - - 'Unary Operators': { - - '++x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '--x': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - prefix: true, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - '++eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '--eval': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }, - prefix: true, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - '++arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '--arguments': { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, - prefix: true, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - '+x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '+', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '-x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '-', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '~x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '~', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - '!x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: '!', - argument: { - type: 'Identifier', - name: 'x', - range: [1, 2], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - }, - - 'void x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'void', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'delete x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'typeof x': { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'typeof', - argument: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - } - - }, - - 'Multiplicative Operators': { - - 'x * y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x / y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x % y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Additive Operators': { - - 'x + y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x - y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Bitwise Shift Operator': { - - 'x << y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >>> y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>>>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Relational Operators': { - - 'x < y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x > y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x <= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x >= y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x in y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x instanceof y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: 'instanceof', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x < y < z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Equality Operators': { - - 'x == y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x != y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x === y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '===', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x !== y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '!==', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Binary Bitwise Operators': { - - 'x & y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x ^ y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'x | y': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - } - - }, - - 'Binary Expressions': { - - 'x + y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y + z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y - z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x + y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x - y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y / z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x * y % z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x % y * z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '%', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x << y << z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'BinaryExpression', - operator: '<<', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x | y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x ^ y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x & y | z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x | y & z': { - type: 'ExpressionStatement', - expression: { - type: 'BinaryExpression', - operator: '|', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '&', - left: { - type: 'Identifier', - name: 'y', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Binary Logical Operators': { - - 'x || y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x && y': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'x || y || z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x && y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y && z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [5, 11], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'x || y ^ z': { - type: 'ExpressionStatement', - expression: { - type: 'LogicalExpression', - operator: '||', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - right: { - type: 'Identifier', - name: 'z', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - } - - }, - - 'Conditional Operator': { - - 'y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'Identifier', - name: 'y', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x && y ? 1 : 2': { - type: 'ExpressionStatement', - expression: { - type: 'ConditionalExpression', - test: { - type: 'LogicalExpression', - operator: '&&', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - consequent: { - type: 'Literal', - value: 1, - raw: '1', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - alternate: { - type: 'Literal', - value: 2, - raw: '2', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - - }, - - 'Assignment Operators': { - - 'x = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'eval = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'arguments = 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - 'x *= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '*=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x /= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '/=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x %= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '%=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x += 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '+=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x -= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '-=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x <<= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '<<=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [6, 8], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'x >>>= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '>>>=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'x &= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '&=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x ^= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '^=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - 'x |= 42': { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '|=', - left: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [5, 7], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - } - - }, - - 'Block': { - - '{ foo }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'foo', - range: [2, 5], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 5 } - } - }, - range: [2, 6], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '{ doThis(); doThat(); }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThis', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }, - 'arguments': [], - range: [2, 10], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 10 } - } - }, - range: [2, 11], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 11 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [12, 18], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 18 } - } - }, - 'arguments': [], - range: [12, 20], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 20 } - } - }, - range: [12, 21], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '{}': { - type: 'BlockStatement', - body: [], - range: [0, 2], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 2 } - } - } - - }, - - 'Variable Statement': { - - 'var x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - 'var x, y;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - init: null, - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }], - kind: 'var', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'var x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [0, 10], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 10 } - } - }, - - 'var eval = 42, arguments = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [4, 8], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 8 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - range: [15, 29], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 29 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var x = 14, y = 3, z = 1977': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [8, 10], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 10 } - } - }, - range: [4, 10], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 10 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [12, 17], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 17 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'var implements, interface, package': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'implements', - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, - init: null, - range: [4, 14], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'interface', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - init: null, - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'package', - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }, - init: null, - range: [27, 34], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 34 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var private, protected, public, static': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'private', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - init: null, - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'protected', - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'public', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - init: null, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'static', - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }, - init: null, - range: [32, 38], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 38 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - } - - }, - - 'Let Statement': { - - 'let x': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'let', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - - '{ let x }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: null, - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }], - kind: 'let', - range: [2, 8], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 8 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - '{ let x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'let', - range: [2, 13], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 13 } - } - }], - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - }, - - '{ let x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }, - range: [21, 29], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 29 } - } - }], - kind: 'let', - range: [2, 30], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 30 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - } - - }, - - 'Const Statement': { - - 'const x = 42': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }], - kind: 'const', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - - '{ const x = 42 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }], - kind: 'const', - range: [2, 15], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 15 } - } - }], - range: [0, 16], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 16 } - } - }, - - '{ const x = 14, y = 3, z = 1977 }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [12, 14], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 14 } - } - }, - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'z', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - init: { - type: 'Literal', - value: 1977, - raw: '1977', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - kind: 'const', - range: [2, 32], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 32 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - } - - }, - - 'Empty Statement': { - - ';': { - type: 'EmptyStatement', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - } - - }, - - 'Expression Statement': { - - 'x': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, - - 'x, y': { - type: 'ExpressionStatement', - expression: { - type: 'SequenceExpression', - expressions: [{ - type: 'Identifier', - name: 'x', - range: [0, 1], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 1 } - } - }, { - type: 'Identifier', - name: 'y', - range: [3, 4], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 4 } - } - }], - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - - '\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'a', - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }, - - 'a\\u0061': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'aa', - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 7], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 7 } - } - }, - - '\\ua': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'ua', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - - 'a\\u': { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'au', - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - }, - range: [0, 3], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 3 } - } - } - - }, - - 'If Statement': { - - 'if (morning) goodMorning()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - alternate: null, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'if (morning) (function(){})': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [24, 26], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 26 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) var x = 0;': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [17, 22], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [13, 23], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 23 } - } - }, - alternate: null, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'if (morning) function a(){}': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'a', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 27], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: null, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'if (morning) goodMorning(); else goodDay()': { - type: 'IfStatement', - test: { - type: 'Identifier', - name: 'morning', - range: [4, 11], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 11 } - } - }, - consequent: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodMorning', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 27], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 27 } - } - }, - alternate: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'goodDay', - range: [33, 40], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [33, 42], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 42], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 42 } - } - } - - }, - - 'Iteration Statements': { - - 'do keep(); while (true)': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - 'do keep(); while (true);': { - type: 'DoWhileStatement', - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'keep', - range: [3, 7], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 7 } - } - }, - 'arguments': [], - range: [3, 9], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 9 } - } - }, - range: [3, 10], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 10 } - } - }, - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'do { x++; y--; } while (x < 10)': { - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [5, 6], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 6 } - } - }, - prefix: false, - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - range: [5, 9], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 9 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - prefix: false, - range: [10, 13], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 13 } - } - }, - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }], - range: [3, 16], - loc: { - start: { line: 1, column: 3 }, - end: { line: 1, column: 16 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [28, 30], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 30 } - } - }, - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - '{ do { } while (false) false }': { - type: 'BlockStatement', - body: [{ - type: 'DoWhileStatement', - body: { - type: 'BlockStatement', - body: [], - range: [5, 8], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 8 } - } - }, - test: { - type: 'Literal', - value: false, - raw: 'false', - range: [16, 21], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 21 } - } - }, - range: [2, 22], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 22 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: false, - raw: 'false', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - range: [23, 29], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 29 } - } - }], - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'while (true) doSomething()': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doSomething', - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (x < 10) { x++; y--; }': { - type: 'WhileStatement', - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - right: { - type: 'Literal', - value: 10, - raw: '10', - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - range: [7, 13], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [17, 21], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 21 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [22, 25], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 25 } - } - }, - range: [22, 26], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 26 } - } - }], - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'for(;;);': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [7, 8], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 8 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'for(;;){}': { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BlockStatement', - body: [], - range: [7, 9], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - }, - - 'for(x = 0;;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'for(var x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'var', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(let x = 0;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }], - kind: 'let', - range: [4, 13], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 13 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - range: [0, 17], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 17 } - } - }, - - 'for(var x = 0, y = 1;;);': { - type: 'ForStatement', - init: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'Literal', - value: 0, - raw: '0', - range: [12, 13], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 13 } - } - }, - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - init: { - type: 'Literal', - value: 1, - raw: '1', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }], - kind: 'var', - range: [4, 20], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 20 } - } - }, - test: null, - update: null, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42;);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: null, - body: { - type: 'EmptyStatement', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - 'for(x = 0; x < 42; x++);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'EmptyStatement', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'for(x = 0; x < 42; x++) process(x);': { - type: 'ForStatement', - init: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - test: { - type: 'BinaryExpression', - operator: '<', - left: { - type: 'Identifier', - name: 'x', - range: [11, 12], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Literal', - value: 42, - raw: '42', - range: [15, 17], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 17 } - } - }, - range: [11, 17], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 17 } - } - }, - update: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'x', - range: [19, 20], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 20 } - } - }, - prefix: false, - range: [19, 22], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 22 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [24, 31], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 31 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - } - }, - - 'for(x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [15, 22], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 22 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }], - range: [15, 25], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 25 } - } - }, - range: [15, 26], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 26 } - } - }, - each: false, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'for (var x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'var', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (var x = 42 in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }], - kind: 'var', - range: [5, 15], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [19, 23], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 23 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [25, 32], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 32 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [25, 35], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 35 } - } - }, - range: [25, 36], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 36 } - } - }, - each: false, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'for (let x in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: null, - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }], - kind: 'let', - range: [5, 10], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 10 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }], - range: [20, 30], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 30 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - each: false, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - }, - - 'for (let x = 42 in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'Literal', - value: 42, - raw: '42', - range: [13, 15], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 15 } - } - }, - range: [9, 15], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 15 } - } - }], - kind: 'let', - range: [5, 15], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [19, 23], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 23 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [25, 32], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 32 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [25, 35], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 35 } - } - }, - range: [25, 36], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 36 } - } - }, - each: false, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'for (var i = function() { return 10 in [] } in list) process(x);': { - type: 'ForInStatement', - left: { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'i', - range: [9, 10], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 10 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: 'in', - left: { - type: 'Literal', - value: 10, - raw: '10', - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - right: { - type: 'ArrayExpression', - elements: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [33, 41], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 41 } - } - }, - range: [26, 42], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 42 } - } - }], - range: [24, 43], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 43 } - } - }, - rest: null, - generator: false, - expression: false, - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 43 } - } - }, - range: [9, 43], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [5, 43], - loc: { - start: { line: 1, column: 5 }, - end: { line: 1, column: 43 } - } - }, - right: { - type: 'Identifier', - name: 'list', - range: [47, 51], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 51 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'process', - range: [53, 60], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 60 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'x', - range: [61, 62], - loc: { - start: { line: 1, column: 61 }, - end: { line: 1, column: 62 } - } - }], - range: [53, 63], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 63 } - } - }, - range: [53, 64], - loc: { - start: { line: 1, column: 53 }, - end: { line: 1, column: 64 } - } - }, - each: false, - range: [0, 64], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 64 } - } - } - - }, - - 'continue statement': { - - 'while (true) { continue; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - }, - - 'while (true) { continue }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: null, - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - } - ], - range: [13, 25], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 25 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'done: while (true) { continue done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 36], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 36 } - } - }, - range: [6, 36], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - } - }, - - 'done: while (true) { continue done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'ContinueStatement', - label: { - type: 'Identifier', - name: 'done', - range: [30, 34], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 34 } - } - }, - range: [21, 35], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 35 } - } - } - ], - range: [19, 37], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 37 } - } - }, - range: [6, 37], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 37 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - } - - }, - - 'break statement': { - - 'while (true) { break }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: null, - range: [15, 21], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 21 } - } - } - ], - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - 'done: while (true) { break done }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 33], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 33 } - } - }, - range: [6, 33], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 33 } - } - }, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'done: while (true) { break done; }': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'done', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [13, 17], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 17 } - } - }, - body: { - type: 'BlockStatement', - body: [ - { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'done', - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [21, 32], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 32 } - } - } - ], - range: [19, 34], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 34 } - } - }, - range: [6, 34], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - } - - }, - - 'return statement': { - - '(function(){ return })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 21], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 21 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - }, - - '(function(){ return; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 20], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 20 } - } - } - ], - range: [11, 22], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 22 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 22], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function(){ return x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - range: [13, 22], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 22 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - '(function(){ return x * y })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - range: [13, 26], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 26 } - } - } - ], - range: [11, 27], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 27 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 27], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - } - }, - - 'with statement': { - - 'with (x) foo = bar': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [0, 18], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 18 } - } - }, - - 'with (x) foo = bar;': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [9, 12], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 12 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [15, 18], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - range: [9, 19], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 19 } - } - }, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'with (x) { foo = bar }': { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'foo', - range: [11, 14], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'Identifier', - name: 'bar', - range: [17, 20], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 20], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 20 } - } - }, - range: [11, 21], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 21 } - } - }], - range: [9, 22], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 22 } - } - }, - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - } - } - - }, - - 'switch statement': { - - 'switch (x) {}': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'x', - range: [8, 9], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 9 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, - - 'switch (answer) { case 42: hi(); break; }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - } - }, - - 'switch (answer) { case 42: hi(); break; default: break }': { - type: 'SwitchStatement', - discriminant: { - type: 'Identifier', - name: 'answer', - range: [8, 14], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 14 } - } - }, - cases: [{ - type: 'SwitchCase', - test: { - type: 'Literal', - value: 42, - raw: '42', - range: [23, 25], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 25 } - } - }, - consequent: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'hi', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - 'arguments': [], - range: [27, 31], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 31 } - } - }, - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, { - type: 'BreakStatement', - label: null, - range: [33, 39], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 39 } - } - }], - range: [18, 39], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 39 } - } - }, { - type: 'SwitchCase', - test: null, - consequent: [{ - type: 'BreakStatement', - label: null, - range: [49, 55], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 55 } - } - }], - range: [40, 55], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 56], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 56 } - } - } - - }, - - 'Labelled Statements': { - - 'start: for (;;) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'ForStatement', - init: null, - test: null, - update: null, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - range: [16, 27], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 27 } - } - }, - range: [7, 27], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 27 } - } - }, - range: [0, 27], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 27 } - } - }, - - 'start: while (true) break start': { - type: 'LabeledStatement', - label: { - type: 'Identifier', - name: 'start', - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, - body: { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - body: { - type: 'BreakStatement', - label: { - type: 'Identifier', - name: 'start', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }, - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - range: [7, 31], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 31 } - } - }, - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - } - } - - }, - - 'throw statement': { - - 'throw x;': { - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - range: [0, 8], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 8 } - } - }, - - 'throw x * y': { - type: 'ThrowStatement', - argument: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - right: { - type: 'Identifier', - name: 'y', - range: [10, 11], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 11 } - } - }, - range: [6, 11], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 11 } - } - }, - range: [0, 11], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 11 } - } - }, - - 'throw { message: "Error" }': { - type: 'ThrowStatement', - argument: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'message', - range: [8, 15], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 15 } - } - }, - value: { - type: 'Literal', - value: 'Error', - raw: '"Error"', - range: [17, 24], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 24 } - } - }, - kind: 'init', - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - range: [6, 26], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 26 } - } - }, - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - } - } - - }, - - 'try statement': { - - 'try { } catch (e) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [18, 21], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 21 } - } - }, - range: [8, 21], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 21 } - } - }], - finalizer: null, - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - } - }, - - 'try { } catch (eval) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [15, 19], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 19 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - range: [8, 24], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 24 } - } - }], - finalizer: null, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'try { } catch (arguments) { }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, - range: [8, 29], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 29 } - } - }], - finalizer: null, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'try { } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }], - range: [20, 26], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 26 } - } - }, - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }], - range: [18, 28], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 28 } - } - }, - range: [8, 28], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 28 } - } - }], - finalizer: null, - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - } - }, - - 'try { } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [4, 7], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 7 } - } - }, - guardedHandlers: [], - handlers: [], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [18, 25], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [26, 31], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 31 } - } - }], - range: [18, 32], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 32 } - } - }, - range: [18, 33], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 33 } - } - }], - range: [16, 34], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 34 } - } - }, - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'try { doThat(); } catch (e) { say(e) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: null, - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - 'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'doThat', - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, - 'arguments': [], - range: [6, 14], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 14 } - } - }, - range: [6, 15], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 15 } - } - }], - range: [4, 17], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 17 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'e', - range: [25, 26], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 26 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'say', - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'e', - range: [34, 35], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 35 } - } - }], - range: [30, 36], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 36 } - } - }, - range: [30, 37], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 37 } - } - }], - range: [28, 38], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 38 } - } - }, - range: [18, 38], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 38 } - } - }], - finalizer: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'cleanup', - range: [49, 56], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 56 } - } - }, - 'arguments': [{ - type: 'Identifier', - name: 'stuff', - range: [57, 62], - loc: { - start: { line: 1, column: 57 }, - end: { line: 1, column: 62 } - } - }], - range: [49, 63], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 63 } - } - }, - range: [49, 64], - loc: { - start: { line: 1, column: 49 }, - end: { line: 1, column: 64 } - } - }], - range: [47, 65], - loc: { - start: { line: 1, column: 47 }, - end: { line: 1, column: 65 } - } - }, - range: [0, 65], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 65 } - } - } - - }, - - 'debugger statement': { - - 'debugger;': { - type: 'DebuggerStatement', - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 9 } - } - } - - }, - - 'Function Definition': { - - 'function hello() { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [19, 24], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 24 } - } - }, - 'arguments': [], - range: [19, 26], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 26 } - } - }, - range: [19, 27], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 27 } - } - }], - range: [17, 29], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 29 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'function eval() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - } - }, - - 'function arguments() { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [9, 18], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 18 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - } - }, - - 'function test(t, t) { }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'test', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, { - type: 'Identifier', - name: 't', - range: [17, 18], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 18 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - } - }, - - '(function test(t, t) { })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'test', - range: [10, 14], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 't', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 't', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [21, 24], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 24 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 24 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 25 } - } - }, - - 'function eval() { function inner() { "use strict" } }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [9, 13], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 13 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'inner', - range: [27, 32], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\"use strict\"', - range: [37, 49], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 49 } - } - }, - range: [37, 50], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 50 } - } - }], - range: [35, 51], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 51 } - } - }, - rest: null, - generator: false, - expression: false, - range: [18, 51], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 51 } - } - }], - range: [16, 53], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 53 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 53], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 53 } - } - }, - - 'function hello(a) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [20, 25], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 25 } - } - }, - 'arguments': [], - range: [20, 27], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 27 } - } - }, - range: [20, 28], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 28 } - } - }], - range: [18, 30], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 30 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 30], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 30 } - } - }, - - 'function hello(a, b) { sayHi(); }': { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [{ - type: 'Identifier', - name: 'a', - range: [15, 16], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 16 } - } - }, { - type: 'Identifier', - name: 'b', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [23, 28], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 28 } - } - }, - 'arguments': [], - range: [23, 30], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 30 } - } - }, - range: [23, 31], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 31 } - } - }], - range: [21, 33], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - } - }, - - 'var hi = function() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [22, 27], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 27 } - } - }, - 'arguments': [], - range: [22, 29], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 29 } - } - }, - range: [22, 30], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 30 } - } - }], - range: [20, 31], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 31 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 31], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 31 } - } - }, - range: [4, 31], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 32 } - } - }, - - 'var hi = function eval() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 28], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 28 } - } - }, - range: [4, 28], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 28 } - } - }], - kind: 'var', - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 29 } - } - }, - - 'var hi = function arguments() { };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hi', - range: [4, 6], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 6 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 33], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [9, 33], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 33 } - } - }, - range: [4, 33], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 33 } - } - }], - kind: 'var', - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - } - }, - - 'var hello = function hi() { sayHi() };': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'hello', - range: [4, 9], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 9 } - } - }, - init: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'hi', - range: [21, 23], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 23 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'Identifier', - name: 'sayHi', - range: [28, 33], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 33 } - } - }, - 'arguments': [], - range: [28, 35], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 35 } - } - }, - range: [28, 36], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 36 } - } - }], - range: [26, 37], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [12, 37], - loc: { - start: { line: 1, column: 12 }, - end: { line: 1, column: 37 } - } - }, - range: [4, 37], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 37 } - } - }], - kind: 'var', - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - } - }, - - '(function(){})': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [11, 13], - loc: { - start: { line: 1, column: 11 }, - end: { line: 1, column: 13 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 13], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 13 } - } - }, - range: [0, 14], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 14 } - } - } - - }, - - 'Automatic semicolon insertion': { - - '{ x\n++y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '{ x\n--y }': { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [2, 3], - loc: { - start: { line: 1, column: 2 }, - end: { line: 1, column: 3 } - } - }, - range: [2, 4], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'y', - range: [6, 7], - loc: { - start: { line: 2, column: 2 }, - end: { line: 2, column: 3 } - } - }, - prefix: true, - range: [4, 7], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 3 } - } - }, - range: [4, 8], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 4 } - } - }], - range: [0, 9], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - 'var x /* comment */;': { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }, - init: null, - range: [4, 5], - loc: { - start: { line: 1, column: 4 }, - end: { line: 1, column: 5 } - } - }], - kind: 'var', - range: [0, 20], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 20 } - } - }, - - '{ var x = 14, y = 3\nz; }': { - type: 'BlockStatement', - body: [{ - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [6, 7], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 7 } - } - }, - init: { - type: 'Literal', - value: 14, - raw: '14', - range: [10, 12], - loc: { - start: { line: 1, column: 10 }, - end: { line: 1, column: 12 } - } - }, - range: [6, 12], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 12 } - } - }, { - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'y', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - init: { - type: 'Literal', - value: 3, - raw: '3', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - range: [14, 19], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 19 } - } - }], - kind: 'var', - range: [2, 20], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'z', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 4 } - } - }, - - 'while (true) { continue\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 32], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [35, 40], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [35, 41], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 43], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { continue /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'ContinueStatement', - label: null, - range: [15, 23], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 23 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [47, 52], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [47, 53], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 55], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - 'while (true) { break\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [21, 26], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [21, 27], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 29], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 29], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break // Comment\nthere; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [32, 37], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [32, 38], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 8 } - } - }, - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - 'while (true) { break /* Multiline\nComment */there; }': { - type: 'WhileStatement', - test: { - type: 'Literal', - value: true, - raw: 'true', - range: [7, 11], - loc: { - start: { line: 1, column: 7 }, - end: { line: 1, column: 11 } - } - }, - body: { - type: 'BlockStatement', - body: [{ - type: 'BreakStatement', - label: null, - range: [15, 20], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 20 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'there', - range: [44, 49], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [44, 50], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [13, 52], - loc: { - start: { line: 1, column: 13 }, - end: { line: 2, column: 18 } - } - }, - range: [0, 52], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - }, - - '(function(){ return\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [20, 21], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [20, 22], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 24], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 24], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 25], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return // Comment\nx; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [31, 32], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 1 } - } - }, - range: [31, 33], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 2 } - } - } - ], - range: [11, 35], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 4 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 35], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 4 } - } - }, - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 5 } - } - }, - - '(function(){ return/* Multiline\nComment */x; })': { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [ - { - type: 'ReturnStatement', - argument: null, - range: [13, 19], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 19 } - } - }, - { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'x', - range: [42, 43], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 11 } - } - }, - range: [42, 44], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 12 } - } - } - ], - range: [11, 46], - loc: { - start: { line: 1, column: 11 }, - end: { line: 2, column: 14 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 46], - loc: { - start: { line: 1, column: 1 }, - end: { line: 2, column: 14 } - } - }, - range: [0, 47], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 15 } - } - }, - - '{ throw error\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 14], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [14, 19], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [14, 20], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error// Comment\nerror; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 24], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 0 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [24, 29], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 5 } - } - }, - range: [24, 30], - loc: { - start: { line: 2, column: 0 }, - end: { line: 2, column: 6 } - } - }], - range: [0, 32], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 8 } - } - }, - - '{ throw error/* Multiline\nComment */error; }': { - type: 'BlockStatement', - body: [{ - type: 'ThrowStatement', - argument: { - type: 'Identifier', - name: 'error', - range: [8, 13], - loc: { - start: { line: 1, column: 8 }, - end: { line: 1, column: 13 } - } - }, - range: [2, 36], - loc: { - start: { line: 1, column: 2 }, - end: { line: 2, column: 10 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'error', - range: [36, 41], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 15 } - } - }, - range: [36, 42], - loc: { - start: { line: 2, column: 10 }, - end: { line: 2, column: 16 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 2, column: 18 } - } - } - - }, - - 'Source elements': { - - '': { - type: 'Program', - body: [], - range: [0, 0], - loc: { - start: { line: 0, column: 0 }, - end: { line: 0, column: 0 } - }, - tokens: [] - } - }, - - 'Invalid syntax': { - - '{': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '}': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token }' - }, - - '3ea': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in []': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e+': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3e-': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3x0': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '09': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '018': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '01a': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '3in[]': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '0x3in[]': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"Hello\nWorld"': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u005c': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'x\\u002a': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var x = /(s/g': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Invalid regular expression' - }, - - '/': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '/test': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = /[a-z]/\\ux': { - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Invalid regular expression' - }, - - '3 = 4': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'func() = 4': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '(1 + 1) = 10': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1++': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1--': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '++1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '--1': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - 'for((1 + 1) in list) process(x);': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - '[': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected end of input' - }, - - '[,': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + {': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t ': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - '1 + { t:t,': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'var x = /\n/': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - 'var x = "\n': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'var if = 42': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token if' - }, - - 'i + 2 = 42': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '+i = 42': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Invalid left-hand side in assignment' - }, - - '1 + (': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - '\n\n\n{': { - index: 4, - lineNumber: 4, - column: 2, - message: 'Error: Line 4: Unexpected end of input' - }, - - '\n/* Some multiline\ncomment */\n)': { - index: 30, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token )' - }, - - '{ set 1 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '{ get 2 }': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - '({ set: s(if) { } })': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token if' - }, - - '({ set s(.) { } })': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token .' - }, - - '({ set: s() { } })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ set: s(a, b) { } })': { - index: 16, - lineNumber: 1, - column: 17, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get: g(d) { } })': { - index: 13, - lineNumber: 1, - column: 14, - message: 'Error: Line 1: Unexpected token {' - }, - - '({ get i() { }, i: 42 })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, get i() { } })': { - index: 21, - lineNumber: 1, - column: 22, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ set i(x) { }, i: 42 })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ i: 42, set i(x) { } })': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }, - - '({ get i() { }, get i() { } })': { - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - '({ set i(x) { }, set i(x) { } })': { - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }, - - 'function t(if) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token if' - }, - - 'function t(true) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function t(false) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function t(null) { }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function null() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token null' - }, - - 'function true() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token true' - }, - - 'function false() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token false' - }, - - 'function if() { }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a b;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected identifier' - }, - - 'if.a;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token .' - }, - - 'a if;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token if' - }, - - 'a class;': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected reserved word' - }, - - 'break\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'break 1;': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected number' - }, - - 'continue\n': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'continue 2;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected number' - }, - - 'throw': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'throw;': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'throw\n': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal newline after throw' - }, - - 'for (var i, i2 in {});': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token in' - }, - - 'for ((i in {}));': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Unexpected token )' - }, - - 'for (i + 1 in {});': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'for (+i in {});': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Invalid left-hand side in for-in' - }, - - 'if(false)': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'if(false) doThis(); else': { - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'do': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'while(false)': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'for(;;)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'with(x)': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected end of input' - }, - - 'try { }': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Missing catch or finally after try' - }, - - '\u203F = 10': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'const x = 12, y;': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'const x, y = 12;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ,' - }, - - 'const x;': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ;' - }, - - 'if(true) let a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token let' - }, - - 'if(true) const a = 1;': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token const' - }, - - 'switch (c) { default: default: }': { - index: 30, - lineNumber: 1, - column: 31, - message: 'Error: Line 1: More than one default clause in switch statement' - }, - - 'new X()."s"': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Unexpected string' - }, - - '/*': { - index: 2, - lineNumber: 1, - column: 3, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n\n': { - index: 5, - lineNumber: 4, - column: 1, - message: 'Error: Line 4: Unexpected token ILLEGAL' - }, - - '/**': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*\n\n*': { - index: 5, - lineNumber: 3, - column: 2, - message: 'Error: Line 3: Unexpected token ILLEGAL' - }, - - '/*hello': { - index: 7, - lineNumber: 1, - column: 8, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '/*hello *': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\n]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r]': { - index: 1, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\r\n]': { - index: 2, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '\n\r]': { - index: 2, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '//\r\n]': { - index: 4, - lineNumber: 2, - column: 1, - message: 'Error: Line 2: Unexpected token ]' - }, - - '//\n\r]': { - index: 4, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/a\\\n/': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Invalid regular expression: missing /' - }, - - '//\r \n]': { - index: 5, - lineNumber: 3, - column: 1, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r\n*/]': { - index: 6, - lineNumber: 2, - column: 3, - message: 'Error: Line 2: Unexpected token ]' - }, - - '/*\n\r*/]': { - index: 6, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '/*\r \n*/]': { - index: 7, - lineNumber: 3, - column: 3, - message: 'Error: Line 3: Unexpected token ]' - }, - - '\\\\': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u005c': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - - '\\x': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\\u0000': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200C = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '\u200D = []': { - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - '"\\u': { - index: 3, - lineNumber: 1, - column: 4, - message: 'Error: Line 1: Unexpected token ILLEGAL' - }, - - 'return': { - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }, - - 'break': { - index: 5, - lineNumber: 1, - column: 6, - message: 'Error: Line 1: Illegal break statement' - }, - - 'continue': { - index: 8, - lineNumber: 1, - column: 9, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'switch (x) { default: continue; }': { - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'do { x } *': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Unexpected token *' - }, - - 'while (true) { break x; }': { - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'while (true) { continue x; }': { - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break x; }); }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { continue x; }); }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Undefined label \'x\'' - }, - - 'x: while (true) { (function () { break; }); }': { - index: 39, - lineNumber: 1, - column: 40, - message: 'Error: Line 1: Illegal break statement' - }, - - 'x: while (true) { (function () { continue; }); }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Illegal continue statement' - }, - - 'x: while (true) { x: while (true) { } }': { - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Label \'x\' has already been declared' - }, - - '(function () { \'use strict\'; delete i; }())': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }, - - '(function () { \'use strict\'; with (i); }())': { - index: 28, - lineNumber: 1, - column: 29, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }, - - 'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': { - index: 73, - lineNumber: 1, - column: 74, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; var eval = 10; }': { - index: 40, - lineNumber: 1, - column: 41, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; var arguments = 10; }': { - index: 45, - lineNumber: 1, - column: 46, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (eval) { } }': { - index: 51, - lineNumber: 1, - column: 52, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; try { } catch (arguments) { } }': { - index: 56, - lineNumber: 1, - column: 57, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; eval = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; arguments = 10; }': { - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ++eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --eval; }': { - index: 38, - lineNumber: 1, - column: 39, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; ++arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; --arguments; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval++; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; eval--; }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments++; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; arguments--; }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }, - - 'function hello() {\'use strict\'; function eval() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; function arguments() { } }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function eval() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function arguments() {\'use strict\'; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function eval() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; (function arguments() { }()) }': { - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function eval() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function arguments() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function eval() { } }); }': { - index: 47, - lineNumber: 1, - column: 48, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }, - - '(function package() {\'use strict\'; })()': { - index: 10, - lineNumber: 1, - column: 11, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ set s(eval) { } }); }': { - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': { - index: 49, - lineNumber: 1, - column: 50, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(eval) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello(arguments) {\'use strict\';}': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(eval) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function hello() { \'use strict\'; function inner(arguments) {} }': { - index: 48, - lineNumber: 1, - column: 49, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - ' "\\1"; \'use strict\';': { - index: 1, - lineNumber: 1, - column: 2, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; "\\1"; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; 021; }': { - index: 33, - lineNumber: 1, - column: 34, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ "\\1": 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { \'use strict\'; ({ 021: 42 }); }': { - index: 36, - lineNumber: 1, - column: 37, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': { - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': { - index: 52, - lineNumber: 1, - column: 53, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }, - - 'function hello() { "use strict"; var implements; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var interface; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var package; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var private; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var protected; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var public; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var static; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var yield; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello() { "use strict"; var let; }': { - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function hello(static) { "use strict"; }': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function static() { "use strict"; }': { - index: 9, - lineNumber: 1, - column: 10, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'var yield': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token yield' - }, - - 'var let': { - index: 4, - lineNumber: 1, - column: 5, - message: 'Error: Line 1: Unexpected token let' - }, - - '"use strict"; function static() { }': { - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a(t, t) { "use strict"; }': { - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a(eval) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - 'function a(package) { "use strict"; }': { - index: 11, - lineNumber: 1, - column: 12, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }, - - 'function a() { "use strict"; function b(t, t) { }; }': { - index: 43, - lineNumber: 1, - column: 44, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(t, t) { "use strict"; })': { - index: 15, - lineNumber: 1, - column: 16, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - 'function a() { "use strict"; (function b(t, t) { }); }': { - index: 44, - lineNumber: 1, - column: 45, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }, - - '(function a(eval) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }, - - '(function a(package) { "use strict"; })': { - index: 12, - lineNumber: 1, - column: 13, - message: 'Error: Line 1: Use of future reserved word in strict mode' - } - - }, - - 'API': { - 'parse()': { - call: 'parse', - args: [], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(null)': { - call: 'parse', - args: [null], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: null - } - }] - } - }, - - 'parse(42)': { - call: 'parse', - args: [42], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42 - } - }] - } - }, - - 'parse(true)': { - call: 'parse', - args: [true], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true - } - }] - } - }, - - 'parse(undefined)': { - call: 'parse', - args: [void 0], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'undefined' - } - }] - } - }, - - 'parse(new String("test"))': { - call: 'parse', - args: [new String('test')], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Identifier', - name: 'test' - } - }] - } - }, - - 'parse(new Number(42))': { - call: 'parse', - args: [new Number(42)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 42 - } - }] - } - }, - - 'parse(new Boolean(true))': { - call: 'parse', - args: [new Boolean(true)], - result: { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: true - } - }] - } - }, - - 'Syntax': { - property: 'Syntax', - result: { - AssignmentExpression: 'AssignmentExpression', - ArrayExpression: 'ArrayExpression', - BlockStatement: 'BlockStatement', - BinaryExpression: 'BinaryExpression', - BreakStatement: 'BreakStatement', - CallExpression: 'CallExpression', - CatchClause: 'CatchClause', - ConditionalExpression: 'ConditionalExpression', - ContinueStatement: 'ContinueStatement', - DoWhileStatement: 'DoWhileStatement', - DebuggerStatement: 'DebuggerStatement', - EmptyStatement: 'EmptyStatement', - ExpressionStatement: 'ExpressionStatement', - ForStatement: 'ForStatement', - ForInStatement: 'ForInStatement', - FunctionDeclaration: 'FunctionDeclaration', - FunctionExpression: 'FunctionExpression', - Identifier: 'Identifier', - IfStatement: 'IfStatement', - Literal: 'Literal', - LabeledStatement: 'LabeledStatement', - LogicalExpression: 'LogicalExpression', - MemberExpression: 'MemberExpression', - NewExpression: 'NewExpression', - ObjectExpression: 'ObjectExpression', - Program: 'Program', - Property: 'Property', - ReturnStatement: 'ReturnStatement', - SequenceExpression: 'SequenceExpression', - SwitchStatement: 'SwitchStatement', - SwitchCase: 'SwitchCase', - ThisExpression: 'ThisExpression', - ThrowStatement: 'ThrowStatement', - TryStatement: 'TryStatement', - UnaryExpression: 'UnaryExpression', - UpdateExpression: 'UpdateExpression', - VariableDeclaration: 'VariableDeclaration', - VariableDeclarator: 'VariableDeclarator', - WhileStatement: 'WhileStatement', - WithStatement: 'WithStatement' - } - } - - }, - - 'Tolerant parse': { - 'return': { - type: 'Program', - body: [{ - type: 'ReturnStatement', - 'argument': null, - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - } - }], - range: [0, 6], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 6 } - }, - errors: [{ - index: 6, - lineNumber: 1, - column: 7, - message: 'Error: Line 1: Illegal return statement' - }] - }, - - '(function () { \'use strict\'; with (i); }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'WithStatement', - object: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - body: { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - range: [29, 38], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 38 } - } - }], - range: [13, 40], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 40 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 40], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 40 } - } - }, - 'arguments': [], - range: [1, 42], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 42 } - } - }, - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Strict mode code may not include a with statement' - }] - }, - - '(function () { \'use strict\'; 021 }())': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'CallExpression', - callee: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [15, 27], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 27 } - } - }, - range: [15, 28], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 28 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 17, - raw: "021", - range: [29, 32], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 32 } - } - }, - range: [29, 33], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 33 } - } - }], - range: [13, 34], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [1, 34], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 34 } - } - }, - 'arguments': [], - range: [1, 36], - loc: { - start: { line: 1, column: 1 }, - end: { line: 1, column: 36 } - } - }, - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - } - }], - range: [0, 37], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 37 } - }, - errors: [{ - index: 29, - lineNumber: 1, - column: 30, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; delete x': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UnaryExpression', - operator: 'delete', - argument: { - type: 'Identifier', - name: 'x', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }], - range: [0, 22], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 22 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.' - }] - }, - - '"use strict"; try {} catch (eval) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'eval', - range: [28, 32], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 32 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [34, 36], - loc: { - start: { line: 1, column: 34 }, - end: { line: 1, column: 36 } - } - }, - range: [21, 36], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 36 } - } - }], - finalizer: null, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; try {} catch (arguments) {}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'TryStatement', - block: { - type: 'BlockStatement', - body: [], - range: [18, 20], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 20 } - } - }, - guardedHandlers: [], - handlers: [{ - type: 'CatchClause', - param: { - type: 'Identifier', - name: 'arguments', - range: [28, 37], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 37 } - } - }, - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - range: [21, 41], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 41 } - } - }], - finalizer: null, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 37, - lineNumber: 1, - column: 38, - message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'eval', - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }, - init: null, - range: [18, 22], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 22 } - } - }], - kind: 'var', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 22, - lineNumber: 1, - column: 23, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; var arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'arguments', - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }, - init: null, - range: [18, 27], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 27 } - } - }], - kind: 'var', - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 27, - lineNumber: 1, - column: 28, - message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; eval = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [21, 22], - loc: { - start: { line: 1, column: 21 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 22], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 22 } - } - }, - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }], - range: [0, 23], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 23 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; eval++;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'eval', - range: [14, 18], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 18 } - } - }, - prefix: false, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 18, - lineNumber: 1, - column: 19, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; --eval;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'eval', - range: [16, 20], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 20 } - } - }, - prefix: true, - range: [14, 20], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 20 } - } - }, - range: [14, 21], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 21 } - } - }], - range: [0, 21], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 21 } - }, - errors: [{ - index: 20, - lineNumber: 1, - column: 21, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; arguments = 0;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - right: { - type: 'Literal', - value: 0, - raw: '0', - range: [26, 27], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 27], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 27 } - } - }, - range: [14, 28], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 28 } - } - }], - range: [0, 28], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 28 } - }, - errors: [{ - index: 14, - lineNumber: 1, - column: 15, - message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; arguments--;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '--', - argument: { - type: 'Identifier', - name: 'arguments', - range: [14, 23], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 23 } - } - }, - prefix: false, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - '"use strict"; ++arguments;': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'UpdateExpression', - operator: '++', - argument: { - type: 'Identifier', - name: 'arguments', - range: [16, 25], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 25 } - } - }, - prefix: true, - range: [14, 25], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 25 } - } - }, - range: [14, 26], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 26 } - } - }], - range: [0, 26], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 26 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode' - }] - }, - - - '"use strict";x={y:1,y:1}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [13, 14], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 14 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [16, 17], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 17 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - kind: 'init', - range: [16, 19], - loc: { - start: { line: 1, column: 16 }, - end: { line: 1, column: 19 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'y', - range: [20, 21], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 21 } - } - }, - value: { - type: 'Literal', - value: 1, - raw: '1', - range: [22, 23], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 23 } - } - }, - kind: 'init', - range: [20, 23], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 23 } - } - }], - range: [15, 24], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }, - range: [13, 24], - loc: { - start: { line: 1, column: 13 }, - end: { line: 1, column: 24 } - } - }], - range: [0, 24], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 24 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode' - }] - }, - - '"use strict"; function eval() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'eval', - range: [23, 27], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 27 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [30, 32], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 32 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 32], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 32 } - } - }, { - type: 'EmptyStatement', - range: [32, 33], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 33 } - } - }], - range: [0, 33], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 33 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function arguments() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'arguments', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; function interface() {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'interface', - range: [23, 32], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 32 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [35, 37], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 37 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 37], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 37 } - } - }, { - type: 'EmptyStatement', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }], - range: [0, 38], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 38 } - }, - errors: [{ - index: 23, - lineNumber: 1, - column: 24, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; (function eval() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'eval', - range: [24, 28], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 28 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 33], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 33 } - } - }, - range: [14, 35], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 35 } - } - }], - range: [0, 35], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 35 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function arguments() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'arguments', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Function name may not be eval or arguments in strict mode' - }] - }, - - '"use strict"; (function interface() {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'interface', - range: [24, 33], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 33 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 38], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 38 } - } - }, - range: [14, 40], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 40 } - } - }], - range: [0, 40], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 40 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Use of future reserved word in strict mode' - }] - }, - - '"use strict"; function f(eval) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [25, 29], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 29 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [31, 33], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 33 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 33], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 33 } - } - }, { - type: 'EmptyStatement', - range: [33, 34], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 34 } - } - }], - range: [0, 34], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 34 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(arguments) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [25, 34], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 25, - lineNumber: 1, - column: 26, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; function f(foo, foo) {};': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'f', - range: [23, 24], - loc: { - start: { line: 1, column: 23 }, - end: { line: 1, column: 24 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [25, 28], - loc: { - start: { line: 1, column: 25 }, - end: { line: 1, column: 28 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [31, 34], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 34 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [36, 38], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 38 } - } - }, - rest: null, - generator: false, - expression: false, - range: [14, 38], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 38 } - } - }, { - type: 'EmptyStatement', - range: [38, 39], - loc: { - start: { line: 1, column: 38 }, - end: { line: 1, column: 39 } - } - }], - range: [0, 39], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 39 } - }, - errors: [{ - index: 31, - lineNumber: 1, - column: 32, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; (function f(eval) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 34], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 34 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - - '"use strict"; (function f(arguments) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'arguments', - range: [26, 35], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - '"use strict"; (function f(foo, foo) {});': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'FunctionExpression', - id: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - params: [{ - type: 'Identifier', - name: 'foo', - range: [26, 29], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Identifier', - name: 'foo', - range: [32, 35], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 35 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [37, 39], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 39 } - } - }, - rest: null, - generator: false, - expression: false, - range: [15, 39], - loc: { - start: { line: 1, column: 15 }, - end: { line: 1, column: 39 } - } - }, - range: [14, 41], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 41 } - } - }], - range: [0, 41], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 41 } - }, - errors: [{ - index: 32, - lineNumber: 1, - column: 33, - message: 'Error: Line 1: Strict mode function may not have duplicate parameter names' - }] - }, - - '"use strict"; x = { set f(eval) {} }' : { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'AssignmentExpression', - operator: '=', - left: { - type: 'Identifier', - name: 'x', - range: [14, 15], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 15 } - } - }, - right: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'f', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value : { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'eval', - range: [26, 30], - loc: { - start: { line: 1, column: 26 }, - end: { line: 1, column: 30 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'set', - range: [20, 34], - loc: { - start: { line: 1, column: 20 }, - end: { line: 1, column: 34 } - } - }], - range: [18, 36], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }, - range: [14, 36], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 36 } - } - }], - range: [0, 36], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 36 } - }, - errors: [{ - index: 26, - lineNumber: 1, - column: 27, - message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode' - }] - }, - - 'function hello() { "octal directive\\1"; "use strict"; }': { - type: 'Program', - body: [{ - type: 'FunctionDeclaration', - id: { - type: 'Identifier', - name: 'hello', - range: [9, 14], - loc: { - start: { line: 1, column: 9 }, - end: { line: 1, column: 14 } - } - }, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'octal directive\u0001', - raw: '"octal directive\\1"', - range: [19, 38], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 38 } - } - }, - range: [19, 39], - loc: { - start: { line: 1, column: 19 }, - end: { line: 1, column: 39 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [40, 52], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 52 } - } - }, - range: [40, 53], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 53 } - } - }], - range: [17, 55], - loc: { - start: { line: 1, column: 17 }, - end: { line: 1, column: 55 } - } - }, - rest: null, - generator: false, - expression: false, - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - } - }], - range: [0, 55], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 55 } - }, - errors: [{ - index: 19, - lineNumber: 1, - column: 20, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"\\1"; \'use strict\';': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: '\u0001', - raw: '"\\1"', - range: [0, 4], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 4 } - } - }, - range: [0, 5], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 5 } - } - }, { - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '\'use strict\'', - range: [6, 18], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 18 } - } - }, - range: [6, 19], - loc: { - start: { line: 1, column: 6 }, - end: { line: 1, column: 19 } - } - }], - range: [0, 19], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 19 } - }, - errors: [{ - index: 0, - lineNumber: 1, - column: 1, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { 014: 3}': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Literal', - value: 12, - raw: '014', - range: [24, 27], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 27 } - } - }, - value: { - type: 'Literal', - value: 3, - raw: '3', - range: [29, 30], - loc: { - start: { line: 1, column: 29 }, - end: { line: 1, column: 30 } - } - }, - kind: 'init', - range: [24, 30], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 30 } - } - }], - range: [22, 31], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 31 } - } - }, - range: [18, 31], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 31 } - } - }], - kind: 'var', - range: [14, 31], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 31 } - } - }], - range: [0, 31], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 31 } - }, - errors: [{ - index: 24, - lineNumber: 1, - column: 25, - message: 'Error: Line 1: Octal literals are not allowed in strict mode.' - }] - }, - - '"use strict"; var x = { get i() {}, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - rest: null, - generator: false, - expression: false, - range: [32, 34], - loc: { - start: { line: 1, column: 32 }, - end: { line: 1, column: 34 } - } - }, - kind: 'get', - range: [24, 34], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 34 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [40, 41], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 41 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - rest: null, - generator: false, - expression: false, - range: [44, 46], - loc: { - start: { line: 1, column: 44 }, - end: { line: 1, column: 46 } - } - }, - kind: 'get', - range: [36, 46], - loc: { - start: { line: 1, column: 36 }, - end: { line: 1, column: 46 } - } - }], - range: [22, 48], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 48 } - } - }, - range: [18, 48], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 48 } - } - }], - kind: 'var', - range: [14, 48], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 48 } - } - }], - range: [0, 48], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 48 } - }, - errors: [{ - index: 46, - lineNumber: 1, - column: 47, - message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name' - }] - }, - - '"use strict"; var x = { i: 42, get i() {} }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [24, 25], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 25 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [27, 29], - loc: { - start: { line: 1, column: 27 }, - end: { line: 1, column: 29 } - } - }, - kind: 'init', - range: [24, 29], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 29 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [35, 36], - loc: { - start: { line: 1, column: 35 }, - end: { line: 1, column: 36 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - rest: null, - generator: false, - expression: false, - range: [39, 41], - loc: { - start: { line: 1, column: 39 }, - end: { line: 1, column: 41 } - } - }, - kind: 'get', - range: [31, 41], - loc: { - start: { line: 1, column: 31 }, - end: { line: 1, column: 41 } - } - }], - range: [22, 43], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 43 } - } - }, - range: [18, 43], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 43 } - } - }], - kind: 'var', - range: [14, 43], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 43 } - } - }], - range: [0, 43], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 43 } - }, - errors: [{ - index: 41, - lineNumber: 1, - column: 42, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - }, - - '"use strict"; var x = { set i(x) {}, i: 42 }': { - type: 'Program', - body: [{ - type: 'ExpressionStatement', - expression: { - type: 'Literal', - value: 'use strict', - raw: '"use strict"', - range: [0, 12], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 12 } - } - }, - range: [0, 13], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 13 } - } - }, { - type: 'VariableDeclaration', - declarations: [{ - type: 'VariableDeclarator', - id: { - type: 'Identifier', - name: 'x', - range: [18, 19], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 19 } - } - }, - init: { - type: 'ObjectExpression', - properties: [{ - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [28, 29], - loc: { - start: { line: 1, column: 28 }, - end: { line: 1, column: 29 } - } - }, - value: { - type: 'FunctionExpression', - id: null, - params: [{ - type: 'Identifier', - name: 'x', - range: [30, 31], - loc: { - start: { line: 1, column: 30 }, - end: { line: 1, column: 31 } - } - }], - defaults: [], - body: { - type: 'BlockStatement', - body: [], - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - rest: null, - generator: false, - expression: false, - range: [33, 35], - loc: { - start: { line: 1, column: 33 }, - end: { line: 1, column: 35 } - } - }, - kind: 'set', - range: [24, 35], - loc: { - start: { line: 1, column: 24 }, - end: { line: 1, column: 35 } - } - }, { - type: 'Property', - key: { - type: 'Identifier', - name: 'i', - range: [37, 38], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 38 } - } - }, - value: { - type: 'Literal', - value: 42, - raw: '42', - range: [40, 42], - loc: { - start: { line: 1, column: 40 }, - end: { line: 1, column: 42 } - } - }, - kind: 'init', - range: [37, 42], - loc: { - start: { line: 1, column: 37 }, - end: { line: 1, column: 42 } - } - }], - range: [22, 44], - loc: { - start: { line: 1, column: 22 }, - end: { line: 1, column: 44 } - } - }, - range: [18, 44], - loc: { - start: { line: 1, column: 18 }, - end: { line: 1, column: 44 } - } - }], - kind: 'var', - range: [14, 44], - loc: { - start: { line: 1, column: 14 }, - end: { line: 1, column: 44 } - } - }], - range: [0, 44], - loc: { - start: { line: 1, column: 0 }, - end: { line: 1, column: 44 } - }, - errors: [{ - index: 42, - lineNumber: 1, - column: 43, - message: 'Error: Line 1: Object literal may not have data and accessor property with the same name' - }] - - - } - - - } -}; - diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json deleted file mode 100644 index 7d8856b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "astw", - "version": "0.0.0", - "description": "walk the ast with references to parent nodes", - "main": "index.js", - "dependencies": { - "esprima": "1.0.2" - }, - "devDependencies": { - "tape": "~0.2.2", - "tap": "~0.4.0", - "escodegen": "~0.0.17" - }, - "scripts": { - "test": "tap test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6..latest", - "chrome/20..latest", - "firefox/10..latest", - "safari/latest", - "opera/11.0..latest", - "iphone/6", - "ipad/6" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/astw.git" - }, - "homepage": "https://github.com/substack/astw", - "keywords": [ - "ast", - "walk", - "source", - "esprima" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "readme": "# astw\n\nwalk the ast\n\n[![browser support](http://ci.testling.com/substack/astw.png)](http://ci.testling.com/substack/astw)\n\n[![build status](https://secure.travis-ci.org/substack/astw.png)](http://travis-ci.org/substack/astw)\n\nThis module is a faster version of\n[falafel](https://github.com/substack/node-falafel)\nthat only does ast walking and `.parent` tracking, not source transforms.\n\n# example\n\n``` js\nvar astw = require('astw');\nvar deparse = require('escodegen').generate;\nvar walk = astw('4 + beep(5 * 2)');\n\nwalk(function (node) {\n var src = deparse(node);\n console.log(node.type + ' :: ' + JSON.stringify(src));\n});\n```\n\n# methods\n\n``` js\nvar astw = require('astw')\n```\n\n## var walk = astw(src)\n\nReturn a `walk()` function from the source string or ast object `src`.\n\n## walk(cb)\n\nWalk the nodes in the ast with `cb(node)` where `node` is each element in the\nast from [esprima](http://esprima.org/) but with an additional `.parent`\nreference to the parent node.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install astw\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/astw/issues" - }, - "_id": "astw@0.0.0", - "_from": "astw@~0.0.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown deleted file mode 100644 index 807b5ad..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/readme.markdown +++ /dev/null @@ -1,52 +0,0 @@ -# astw - -walk the ast - -[![browser support](http://ci.testling.com/substack/astw.png)](http://ci.testling.com/substack/astw) - -[![build status](https://secure.travis-ci.org/substack/astw.png)](http://travis-ci.org/substack/astw) - -This module is a faster version of -[falafel](https://github.com/substack/node-falafel) -that only does ast walking and `.parent` tracking, not source transforms. - -# example - -``` js -var astw = require('astw'); -var deparse = require('escodegen').generate; -var walk = astw('4 + beep(5 * 2)'); - -walk(function (node) { - var src = deparse(node); - console.log(node.type + ' :: ' + JSON.stringify(src)); -}); -``` - -# methods - -``` js -var astw = require('astw') -``` - -## var walk = astw(src) - -Return a `walk()` function from the source string or ast object `src`. - -## walk(cb) - -Walk the nodes in the ast with `cb(node)` where `node` is each element in the -ast from [esprima](http://esprima.org/) but with an additional `.parent` -reference to the parent node. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install astw -``` - -# license - -MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js deleted file mode 100644 index a7403d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/node_modules/astw/test/parent.js +++ /dev/null @@ -1,25 +0,0 @@ -var astw = require('../'); -var test = require('tape'); -var generate = require('escodegen').generate; - -function unparse (s) { - return generate(s, { format: { compact: true } }); -} - -test('parent', function (t) { - t.plan(4); - - var walk = astw('(' + function () { - var xs = [ 1, 2, 3 ]; - fn(ys); - } + ')()'); - - walk(function (node) { - if (node.type === 'ArrayExpression') { - t.equal(node.parent.type, 'VariableDeclarator'); - t.equal(unparse(node.parent), 'xs=[1,2,3]'); - t.equal(node.parent.parent.type, 'VariableDeclaration'); - t.equal(unparse(node.parent.parent), 'var xs=[1,2,3];'); - } - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json deleted file mode 100644 index c0d8c9b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "lexical-scope", - "version": "0.0.12", - "description": "detect global and local lexical identifiers from javascript source code", - "main": "index.js", - "dependencies": { - "astw": "~0.0.0" - }, - "devDependencies": { - "tap": "~0.4.0", - "tape": "~0.2.2", - "browserify": "~2.10.2", - "brfs": "~0.0.3" - }, - "scripts": { - "test": "tap test/*.js" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/6", - "ie/7", - "ie/8", - "ie/9", - "ie/10", - "chrome/20", - "chrome/latest", - "firefox/10", - "firefox/15", - "firefox/latest", - "safari/latest", - "opera/11.0", - "opera/latest" - ] - }, - "repository": { - "type": "git", - "url": "git://github.com/substack/lexical-scope.git" - }, - "homepage": "https://github.com/substack/lexical-scope", - "keywords": [ - "ast", - "variable", - "name", - "lexical", - "local", - "global", - "implicit", - "exported" - ], - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "license": "MIT", - "readme": "# lexical-scope\n\ndetect global and local lexical identifiers from javascript source code\n\n[![browser support](http://ci.testling.com/substack/lexical-scope.png)](http://ci.testling.com/substack/lexical-scope)\n\n[![build status](https://secure.travis-ci.org/substack/lexical-scope.png)](http://travis-ci.org/substack/lexical-scope)\n\n# example\n\n``` js\nvar detect = require('lexical-scope');\nvar fs = require('fs');\nvar src = fs.readFileSync(__dirname + '/src.js');\n\nvar scope = detect(src);\nconsole.dir(scope);\n```\n\ninput:\n\n```\nvar x = 5;\nvar y = 3, z = 2;\n\nw.foo();\nw = 2;\n\nRAWR=444;\nRAWR.foo();\n\nBLARG=3;\n\nfoo(function () {\n var BAR = 3;\n process.nextTick(function (ZZZZZZZZZZZZ) {\n console.log('beep boop');\n var xyz = 4;\n x += 10;\n x.zzzzzz;\n ZZZ=6;\n });\n function doom () {\n }\n ZZZ.foo();\n\n});\n\nconsole.log(xyz);\n```\n\noutput:\n\n```\n$ node example/detect.js\n{ locals: \n { '': [ 'x', 'y', 'z' ],\n 'body.7.arguments.0': [ 'BAR', 'doom' ],\n 'body.7.arguments.0.body.1.arguments.0': [ 'xyz' ],\n 'body.7.arguments.0.body.2': [] },\n globals: \n { implicit: [ 'w', 'foo', 'process', 'console', 'xyz' ],\n exported: [ 'w', 'RAWR', 'BLARG', 'ZZZ' ] } }\n```\n\n# live demo\n\nIf you are using a modern browser, you can go to http://lexical-scope.forbeslindesay.co.uk/ for a live demo.\n\n# methods\n\n``` js\nvar detect = require('lexical-scope')\n```\n\n## var scope = detect(src)\n\nReturn a `scope` structure from a javascript source string `src`.\n\n`scope.locals` maps scope name keys to an array of local variable names declared\nwith `var`. The key name `''` refers to the top-level scope.\n\n`scope.globals.implicit` contains the global variable names that are expected to\nalready exist in the environment by the script.\n\n`scope.globals.explicit` contains the global variable names that are exported by\nthe script.\n\n# install\n\nWith [npm](https://npmjs.org) do:\n\n```\nnpm install lexical-scope\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/substack/lexical-scope/issues" - }, - "_id": "lexical-scope@0.0.12", - "_from": "lexical-scope@0.0.12" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown deleted file mode 100644 index 258bdb8..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/readme.markdown +++ /dev/null @@ -1,99 +0,0 @@ -# lexical-scope - -detect global and local lexical identifiers from javascript source code - -[![browser support](http://ci.testling.com/substack/lexical-scope.png)](http://ci.testling.com/substack/lexical-scope) - -[![build status](https://secure.travis-ci.org/substack/lexical-scope.png)](http://travis-ci.org/substack/lexical-scope) - -# example - -``` js -var detect = require('lexical-scope'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/src.js'); - -var scope = detect(src); -console.dir(scope); -``` - -input: - -``` -var x = 5; -var y = 3, z = 2; - -w.foo(); -w = 2; - -RAWR=444; -RAWR.foo(); - -BLARG=3; - -foo(function () { - var BAR = 3; - process.nextTick(function (ZZZZZZZZZZZZ) { - console.log('beep boop'); - var xyz = 4; - x += 10; - x.zzzzzz; - ZZZ=6; - }); - function doom () { - } - ZZZ.foo(); - -}); - -console.log(xyz); -``` - -output: - -``` -$ node example/detect.js -{ locals: - { '': [ 'x', 'y', 'z' ], - 'body.7.arguments.0': [ 'BAR', 'doom' ], - 'body.7.arguments.0.body.1.arguments.0': [ 'xyz' ], - 'body.7.arguments.0.body.2': [] }, - globals: - { implicit: [ 'w', 'foo', 'process', 'console', 'xyz' ], - exported: [ 'w', 'RAWR', 'BLARG', 'ZZZ' ] } } -``` - -# live demo - -If you are using a modern browser, you can go to http://lexical-scope.forbeslindesay.co.uk/ for a live demo. - -# methods - -``` js -var detect = require('lexical-scope') -``` - -## var scope = detect(src) - -Return a `scope` structure from a javascript source string `src`. - -`scope.locals` maps scope name keys to an array of local variable names declared -with `var`. The key name `''` refers to the top-level scope. - -`scope.globals.implicit` contains the global variable names that are expected to -already exist in the environment by the script. - -`scope.globals.explicit` contains the global variable names that are exported by -the script. - -# install - -With [npm](https://npmjs.org) do: - -``` -npm install lexical-scope -``` - -# license - -MIT diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js deleted file mode 100644 index ddfd549..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/argument.js +++ /dev/null @@ -1,17 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/argument.js'); - -test('parameters from inline arguments', function (t) { - t.plan(3); - - var scope = detect(src); - t.same(scope.globals.implicit, []); - t.same(scope.globals.exported, []); - t.same(scope.locals, { - 'body.0': [ 'a' ], - '': [ 'foo' ], - 'body.0.body.body.1.argument': [ 'c' ] - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js deleted file mode 100644 index cd8cb4b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/assign_implicit.js +++ /dev/null @@ -1,13 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/assign_implicit.js'); - -test('assign from an implicit global', function (t) { - t.plan(3); - - var scope = detect(src); - t.same(scope.globals.implicit, [ 'bar' ]); - t.same(scope.globals.exported, []); - t.same(scope.locals, { '': [ 'foo' ] }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js deleted file mode 100644 index 0230ad6..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/detect.js +++ /dev/null @@ -1,17 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/detect.js'); - -test('check locals and globals', function (t) { - t.plan(3); - - var scope = detect(src); - t.same(scope.globals.implicit, [ - 'w', 'foo', 'process', 'console', 'AAA', 'BBB', 'CCC', 'xyz' - ]); - t.same(scope.globals.exported, [ - 'w', 'RAWR', 'BLARG', 'ZZZ' - ]); - t.same(scope.locals[''], [ 'x', 'y', 'z', 'beep' ]); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js deleted file mode 100644 index 55d20e3..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/argument.js +++ /dev/null @@ -1,6 +0,0 @@ -function foo () { - var a; - return function (c) { - a = c; - }; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js deleted file mode 100644 index a731d1e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/assign_implicit.js +++ /dev/null @@ -1,2 +0,0 @@ -var foo; -foo = bar; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js deleted file mode 100644 index cb9c6f2..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/detect.js +++ /dev/null @@ -1,32 +0,0 @@ -var x = 5; -var y = 3, z = 2; - -w.foo(); -w = 2; - -RAWR=444; -RAWR.foo(); - -BLARG=3; - -foo(function () { - var BAR = 3; - process.nextTick(function (ZZZZZZZZZZZZ) { - console.log('beep boop'); - var xyz = 4; - x += 10; - x.zzzzzz; - ZZZ=6; - }); - function doom () { - if (AAA.aaa) {} - BBB.bbb = 3; - var z = 2 + CCC.x * 5; - } - ZZZ.foo(); - -}); - -function beep () {} - -console.log(xyz); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js deleted file mode 100644 index df549c1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/multiple-exports.js +++ /dev/null @@ -1,6 +0,0 @@ -exports.foo = function () { - return bar; -}; -exports.bar = function (bar) { - return bar; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js deleted file mode 100644 index af6c275..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/named_arg.js +++ /dev/null @@ -1,6 +0,0 @@ -function foo (x) { - var a = x; - return function (c) { - a += c; - }; -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js deleted file mode 100644 index 1e6900e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/obj.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {foo: bar} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js deleted file mode 100644 index 8cdd57b..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/return_hash.js +++ /dev/null @@ -1,5 +0,0 @@ -function foo() { - return { - bar: true - } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js deleted file mode 100644 index 85dc112..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/files/right_hand.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.filename = __filename; -exports.dirname = __dirname; diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js deleted file mode 100644 index 990d068..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/multiple-exports.js +++ /dev/null @@ -1,18 +0,0 @@ - -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/multiple-exports.js'); - -test('multiple-exports', function (t) { - t.plan(3); - - var scope = detect(src); - t.same(scope.globals.implicit.sort(), ['bar', 'exports'].sort()); - t.same(scope.globals.exported, []); - t.same(scope.locals, { - '':[], - 'body.1.expression.right': ['bar'], - 'body.0.expression.right': [] - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js deleted file mode 100644 index 421d711..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/named_arg.js +++ /dev/null @@ -1,17 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/named_arg.js'); - -test('named argument parameter', function (t) { - t.plan(3); - - var scope = detect(src); - t.same(scope.globals.implicit, []); - t.same(scope.globals.exported, []); - t.same(scope.locals, { - 'body.0': [ 'a', 'x' ], - '': [ 'foo' ], - 'body.0.body.body.1.argument': [ 'c' ] - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js deleted file mode 100644 index 64b8d5e..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/obj.js +++ /dev/null @@ -1,16 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/obj.js'); - -test('globals on the right-hand of a colon in an object literal', function (t) { - t.plan(3); - - var scope = detect(src); - t.same( - scope.globals.implicit.sort(), - [ 'bar', 'module' ].sort() - ); - t.same(scope.globals.exported, []); - t.same(scope.locals, { '': [] }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json deleted file mode 100644 index 10dcae1..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "lexical-scope-test", - "version": "0.0.0", - "browserify": { "transform": "brfs" } -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js deleted file mode 100644 index 442d91a..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/return_hash.js +++ /dev/null @@ -1,13 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/return_hash.js'); - -test('return hash', function (t) { - t.plan(3); - - var scope = detect(src); - t.same(scope.globals.implicit, []); - t.same(scope.globals.exported, []); - t.same(scope.locals, { 'body.0': [], '': [ 'foo' ] }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js deleted file mode 100644 index 28b283d..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/right_hand.js +++ /dev/null @@ -1,16 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = fs.readFileSync(__dirname + '/files/right_hand.js'); - -test('globals on the right-hand of assignment', function (t) { - t.plan(3); - - var scope = detect(src); - t.same( - scope.globals.implicit.sort(), - [ 'exports', '__dirname', '__filename' ].sort() - ); - t.same(scope.globals.exported, []); - t.same(scope.locals, { '': [] }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js deleted file mode 100644 index 5445580..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/node_modules/lexical-scope/test/shebang.js +++ /dev/null @@ -1,19 +0,0 @@ -var test = require('tape'); -var detect = require('../'); -var fs = require('fs'); -var src = '#!/beep/boop blah\n' - + fs.readFileSync(__dirname + '/files/detect.js') -; - -test('shebangs', function (t) { - t.plan(3); - - var scope = detect(src); - t.same(scope.globals.implicit, [ - 'w', 'foo', 'process', 'console', 'AAA', 'BBB', 'CCC', 'xyz' - ]); - t.same(scope.globals.exported, [ - 'w', 'RAWR', 'BLARG', 'ZZZ' - ]); - t.same(scope.locals[''], [ 'x', 'y', 'z', 'beep' ]); -}); diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json deleted file mode 100644 index 498a528..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "with", - "version": "1.0.4", - "description": "Compile time `with` for strict mode JavaScript", - "main": "index.js", - "scripts": { - "test": "mocha -R spec" - }, - "repository": { - "type": "git", - "url": "https://github.com/ForbesLindesay/with.git" - }, - "author": { - "name": "ForbesLindesay" - }, - "license": "MIT", - "dependencies": { - "lexical-scope": "0.0.12" - }, - "devDependencies": { - "mocha": "~1.9.0" - }, - "readme": "# with\r\n\r\nCompile time `with` for strict mode JavaScript\r\n\r\n[![build status](https://secure.travis-ci.org/ForbesLindesay/with.png)](http://travis-ci.org/ForbesLindesay/with)\r\n[![Dependency Status](https://gemnasium.com/ForbesLindesay/with.png)](https://gemnasium.com/ForbesLindesay/with)\r\n[![NPM version](https://badge.fury.io/js/with.png)](http://badge.fury.io/js/with)\r\n\r\n## Installation\r\n\r\n $ npm install with\r\n\r\n## Usage\r\n\r\n```js\r\nvar addWith = require('with')\r\n\r\naddWith('obj', 'console.log(a)')\r\n// => \"var a = obj.a;console.log(a)\"\r\n\r\naddWith(\"obj || {}\", \"console.log(helper(a))\", [\"helper\"])\r\n// => var locals = (obj || {}),a = locals.a;console.log(helper(a))\r\n```\r\n\r\n## API\r\n\r\n### addWith(obj, src, [exclude])\r\n\r\nThe idea is that this is roughly equivallent to:\r\n\r\n```js\r\nwith (obj) {\r\n src\r\n}\r\n```\r\n\r\nThere are a few differences though. For starters, it will be assumed that all variables used in `src` come from `obj` so any that don't (e.g. template helpers) need to have their names parsed to `exclude` as an array.\r\n\r\nIt also makes everything be declared, so you can always do:\r\n\r\n```js\r\nif (foo === undefined)\r\n```\r\n\r\ninstead of\r\n\r\n```js\r\nif (typeof foo === 'undefined')\r\n```\r\n\r\nIt is also safe to use in strict mode (unlike `with`) and it minifies properly (`with` disables virtually all minification).\r\n\r\n## License\r\n\r\n MIT", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/ForbesLindesay/with/issues" - }, - "_id": "with@1.0.4", - "_from": "with@1.0.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js b/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js deleted file mode 100644 index 3bfc6ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/node_modules/with/test/index.js +++ /dev/null @@ -1,107 +0,0 @@ -var assert = require('assert') - -var addWith = require('../') - -var sentinel = {} -var sentinel2 = {} -describe('addWith("obj", "console.log(a)")', function () { - it('adds the necessary variable declarations', function (done) { - var src = addWith('obj', 'console.log(a)') - // var a = obj.a;console.log(a) - Function('console,obj', src)( - { - log: function (a) { - assert(a === sentinel) - done() - } - }, - {a: sentinel}) - }) -}) -describe('addWith("obj || {}", "console.log(a)")', function () { - it('adds the necessary variable declarations', function (done) { - var src = addWith('obj || {}', 'console.log(a)') - // var locals = (obj || {}),a = locals.a;console.log(a) - var expected = 2 - Function('console,obj', src)( - { - log: function (a) { - assert(a === sentinel) - if (0 === --expected) done() - } - }, - {a: sentinel}) - Function('console,obj', src)( - { - log: function (a) { - assert(a === undefined) - if (0 === --expected) done() - } - }) - }) -}) -describe('addWith("obj", "console.log(helper(a))", ["helper"])', function () { - it('adds the necessary variable declarations', function (done) { - var src = addWith('obj', 'console.log(helper(a))', ['helper']) - // var a = obj.a;console.log(helper(a)) - Function('console,obj,helper', src)( - { - log: function (a) { - assert(a === sentinel) - done() - } - }, - {a: sentinel2}, - function (a) { - assert(a === sentinel2) - return sentinel - }) - }) -}) -describe('addWith("obj || {}", "console.log(locals(a))", ["locals_"])', function () { - it('adds the necessary variable declarations', function (done) { - var src = addWith('obj || {}', 'console.log(locals(a))', ['locals_']) - // var locals__ = (obj || {}),locals = locals__.locals,a = locals__.a;console.log(locals(a)) - Function('console,obj', src)( - { - log: function (a) { - assert(a === sentinel) - done() - } - }, - { - a: sentinel2, - locals: function (a) { - assert(a === sentinel2) - return sentinel - } - }) - }) -}) - -describe('addWith("obj || {}", "console.log(\'foo\')")', function () { - it('passes through', function (done) { - var src = addWith('obj || {}', 'console.log("foo")') - // console.log(\'foo\') - Function('console,obj', src)( - { - log: function (a) { - assert(a === 'foo') - done() - } - }) - }) -}) - -describe('addWith("obj || {}", "obj.foo")', function () { - it('passes through', function (done) { - var src = addWith('obj || {}', 'obj.bar = obj.foo') - // obj.bar = obj.foo - var obj = { - foo: 'ding' - } - Function('obj', src)(obj) - assert(obj.bar === 'ding') - done() - }) -}) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/jade/package.json b/nodejs-mysql-tutorial/node_modules/jade/package.json deleted file mode 100644 index 864ac77..0000000 --- a/nodejs-mysql-tutorial/node_modules/jade/package.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "jade", - "description": "Jade template engine", - "version": "0.31.1", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/jade" - }, - "main": "./index.js", - "bin": { - "jade": "./bin/jade" - }, - "man": [ - "./jade.1" - ], - "dependencies": { - "commander": "1.1.1", - "mkdirp": "0.3.x", - "transformers": "2.0.1", - "character-parser": "1.0.2", - "monocle": "0.1.48", - "with": "1.0.4" - }, - "devDependencies": { - "coffee-script": "*", - "mocha": "*", - "markdown": "*", - "stylus": "*", - "uubench": "*", - "should": "*", - "less": "*", - "uglify-js": "*", - "browserify": "*" - }, - "component": { - "scripts": { - "jade": "runtime.js" - } - }, - "scripts": { - "test": "mocha -R spec", - "prepublish": "npm prune", - "build": "npm run compile", - "compile": "npm run compile-full && npm run compile-runtime", - "compile-full": "browserify ./lib/jade.js --standalone jade -x ./node_modules/transformers > jade.js", - "compile-runtime": "browserify ./lib/runtime.js --standalone jade > runtime.js" - }, - "browser": { - "./lib/filters.js": "./lib/filters-client.js" - }, - "readme": "# Jade - template engine \r\n[![Build Status](https://secure.travis-ci.org/visionmedia/jade.png)](http://travis-ci.org/visionmedia/jade)\r\n[![Dependency Status](https://gemnasium.com/visionmedia/jade.png)](https://gemnasium.com/visionmedia/jade)\r\n[![NPM version](https://badge.fury.io/js/jade.png)](http://badge.fury.io/js/jade)\r\n\r\n Jade is a high performance template engine heavily influenced by [Haml](http://haml-lang.com)\r\n and implemented with JavaScript for [node](http://nodejs.org). For discussion join the [Google Group](http://groups.google.com/group/jadejs).\r\n\r\n## Anouncment\r\n\r\nJade version 0.31.0 deprecated implicit text only support for scripts and styles. To fix this all you need to do is add a `.` character after the script or style tag.\r\n\r\nIt is hoped that this change will make jade easier for newcommers to learn without affecting the power of the language or leading to excessive verboseness.\r\n\r\nIf you have a lot of jade files that need fixing you can use [fix-jade](https://github.com/ForbesLindesay/fix-jade) to attempt to automate the process.\r\n\r\n## Test drive\r\n\r\n You can test drive Jade online [here](http://naltatis.github.com/jade-syntax-docs).\r\n\r\n## README Contents\r\n\r\n- [Features](#a1)\r\n- [Implementations](#a2)\r\n- [Installation](#a3)\r\n- [Browser Support](#a4)\r\n- [Public API](#a5)\r\n- [Syntax](#a6)\r\n - [Line Endings](#a6-1)\r\n - [Tags](#a6-2)\r\n - [Tag Text](#a6-3)\r\n - [Comments](#a6-4)\r\n - [Block Comments](#a6-5)\r\n - [Nesting](#a6-6)\r\n - [Block Expansion](#a6-7)\r\n - [Case](#a6-8)\r\n - [Attributes](#a6-9)\r\n - [HTML](#a6-10)\r\n - [Doctypes](#a6-11)\r\n- [Filters](#a7)\r\n- [Code](#a8)\r\n- [Iteration](#a9)\r\n- [Conditionals](#a10)\r\n- [Template inheritance](#a11)\r\n- [Block append / prepend](#a12)\r\n- [Includes](#a13)\r\n- [Mixins](#a14)\r\n- [Generated Output](#a15)\r\n- [Example Makefile](#a16)\r\n- [jade(1)](#a17)\r\n- [Tutorials](#a18)\r\n- [License](#a19)\r\n\r\n\r\n## Features\r\n\r\n - client-side support\r\n - great readability\r\n - flexible indentation\r\n - block-expansion\r\n - mixins\r\n - static includes\r\n - attribute interpolation\r\n - code is escaped by default for security\r\n - contextual error reporting at compile & run time\r\n - executable for compiling jade templates via the command line\r\n - html 5 mode (the default doctype)\r\n - optional memory caching\r\n - combine dynamic and static tag classes\r\n - parse tree manipulation via _filters_\r\n - template inheritance\r\n - block append / prepend\r\n - supports [Express JS](http://expressjs.com) out of the box\r\n - transparent iteration over objects, arrays, and even non-enumerables via `each`\r\n - block comments\r\n - no tag prefix\r\n - filters\r\n - :stylus must have [stylus](http://github.com/LearnBoost/stylus) installed\r\n - :less must have [less.js](http://github.com/cloudhead/less.js) installed\r\n - :markdown must have [markdown-js](http://github.com/evilstreak/markdown-js), [node-discount](http://github.com/visionmedia/node-discount), or [marked](http://github.com/chjj/marked) installed\r\n - :cdata\r\n - :coffeescript must have [coffee-script](http://jashkenas.github.com/coffee-script/) installed\r\n - [Emacs Mode](https://github.com/brianc/jade-mode)\r\n - [Vim Syntax](https://github.com/digitaltoad/vim-jade)\r\n - [TextMate Bundle](http://github.com/miksago/jade-tmbundle)\r\n - [Coda/SubEtha syntax Mode](https://github.com/aaronmccall/jade.mode)\r\n - [Screencasts](http://tjholowaychuk.com/post/1004255394/jade-screencast-template-engine-for-nodejs)\r\n - [html2jade](https://github.com/donpark/html2jade) converter\r\n\r\n\r\n## Implementations\r\n\r\n - [php](http://github.com/everzet/jade.php)\r\n - [scala](http://scalate.fusesource.org/versions/snapshot/documentation/scaml-reference.html)\r\n - [ruby](https://github.com/slim-template/slim)\r\n - [python](https://github.com/SyrusAkbary/pyjade)\r\n - [java](https://github.com/neuland/jade4j)\r\n\r\n\r\n## Installation\r\n\r\nvia npm:\r\n\r\n```bash\r\n$ npm install jade\r\n```\r\n\r\n\r\n## Browser Support\r\n\r\n To compile jade to a single file compatible for client-side use simply execute:\r\n\r\n```bash\r\n$ make jade.js\r\n```\r\n\r\n Alternatively, if uglifyjs is installed via npm (`npm install uglify-js`) you may execute the following which will create both files. However each release builds these for you.\r\n\r\n```bash\r\n$ make jade.min.js\r\n```\r\n\r\n By default Jade instruments templates with line number statements such as `__.lineno = 3` for debugging purposes. When used in a browser it's useful to minimize this boiler plate, you can do so by passing the option `{ compileDebug: false }`. The following template\r\n\r\n```jade\r\np Hello #{name}\r\n```\r\n\r\n Can then be as small as the following generated function:\r\n\r\n```js\r\nfunction anonymous(locals, attrs, escape, rethrow) {\r\n var buf = [];\r\n with (locals || {}) {\r\n var interp;\r\n buf.push('\\n

      Hello ' + escape((interp = name) == null ? '' : interp) + '\\n

      ');\r\n }\r\n return buf.join(\"\");\r\n}\r\n```\r\n\r\n Through the use of Jade's `./runtime.js` you may utilize these pre-compiled templates on the client-side _without_ Jade itself, all you need is the associated utility functions (in runtime.js), which are then available as `jade.attrs`, `jade.escape` etc. To enable this you should pass `{ client: true }` to `jade.compile()` to tell Jade to reference the helper functions\r\n via `jade.attrs`, `jade.escape` etc.\r\n\r\n```js\r\nfunction anonymous(locals, attrs, escape, rethrow) {\r\n var attrs = jade.attrs, escape = jade.escape, rethrow = jade.rethrow;\r\n var buf = [];\r\n with (locals || {}) {\r\n var interp;\r\n buf.push('\\n

      Hello ' + escape((interp = name) == null ? '' : interp) + '\\n

      ');\r\n }\r\n return buf.join(\"\");\r\n}\r\n```\r\n\r\n
      \r\n## Public API\r\n\r\n```js\r\nvar jade = require('jade');\r\n\r\n// Compile a function\r\nvar fn = jade.compile('string of jade', options);\r\nfn(locals);\r\n```\r\n\r\n### Options\r\n\r\n - `self` Use a `self` namespace to hold the locals _(false by default)_\r\n - `locals` Local variable object\r\n - `filename` Used in exceptions, and required when using includes\r\n - `debug` Outputs tokens and function body generated\r\n - `compiler` Compiler to replace jade's default\r\n - `compileDebug` When `false` no debug instrumentation is compiled\r\n - `pretty` Add pretty-indentation whitespace to output _(false by default)_\r\n\r\n\r\n## Syntax\r\n\r\n\r\n### Line Endings\r\n\r\n**CRLF** and **CR** are converted to **LF** before parsing.\r\n\r\n\r\n### Tags\r\n\r\nA tag is simply a leading word:\r\n\r\n```jade\r\nhtml\r\n```\r\n\r\nfor example is converted to ``\r\n\r\ntags can also have ids:\r\n\r\n```jade\r\ndiv#container\r\n```\r\n\r\nwhich would render `
      `\r\n\r\nhow about some classes?\r\n\r\n```jade\r\ndiv.user-details\r\n```\r\n\r\nrenders `
      `\r\n\r\nmultiple classes? _and_ an id? sure:\r\n\r\n```jade\r\ndiv#foo.bar.baz\r\n```\r\n\r\nrenders `
      `\r\n\r\ndiv div div sure is annoying, how about:\r\n\r\n```jade\r\n#foo\r\n.bar\r\n```\r\n\r\nwhich is syntactic sugar for what we have already been doing, and outputs:\r\n\r\n```html\r\n
      \r\n```\r\n\r\n
      \r\n### Tag Text\r\n\r\nSimply place some content after the tag:\r\n\r\n```jade\r\np wahoo!\r\n```\r\n\r\nrenders `

      wahoo!

      `.\r\n\r\nwell cool, but how about large bodies of text:\r\n\r\n```jade\r\np\r\n | foo bar baz\r\n | rawr rawr\r\n | super cool\r\n | go jade go\r\n```\r\n\r\nrenders `

      foo bar baz rawr.....

      `\r\n\r\ninterpolation? yup! both types of text can utilize interpolation,\r\nif we passed `{ name: 'tj', email: 'tj@vision-media.ca' }` to the compiled function we can do the following:\r\n\r\n```jade\r\n#user #{name} <#{email}>\r\n```\r\n\r\noutputs `
      tj <tj@vision-media.ca>
      `\r\n\r\nActually want `#{}` for some reason? escape it!\r\n\r\n```jade\r\np \\#{something}\r\n```\r\n\r\nnow we have `

      #{something}

      `\r\n\r\nWe can also utilize the unescaped variant `!{html}`, so the following\r\nwill result in a literal script tag:\r\n\r\n```jade\r\n- var html = \"\"\r\n| !{html}\r\n```\r\n\r\nNested tags that also contain text can optionally use a text block:\r\n\r\n```jade\r\nlabel\r\n | Username:\r\n input(name='user[name]')\r\n```\r\n\r\nor immediate tag text:\r\n\r\n```jade\r\nlabel Username:\r\n input(name='user[name]')\r\n```\r\n\r\nAs an alternative, we may use a trailing `.` to indicate a text block, for example:\r\n\r\n```jade\r\np.\r\n foo asdf\r\n asdf\r\n asdfasdfaf\r\n asdf\r\n asd.\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n

      foo asdf\r\nasdf\r\n asdfasdfaf\r\n asdf\r\nasd.\r\n

      \r\n```\r\n\r\nThis however differs from a trailing `.` followed by a space, which although is ignored by the Jade parser, tells Jade that this period is a literal:\r\n\r\n```jade\r\np .\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n

      .

      \r\n```\r\n\r\nIt should be noted that text blocks should be doubled escaped. For example if you desire the following output.\r\n\r\n```html\r\n

      foo\\bar

      \r\n```\r\n\r\nuse:\r\n\r\n```jade\r\np.\r\n foo\\\\bar\r\n```\r\n\r\n
      \r\n### Comments\r\n\r\nSingle line comments currently look the same as JavaScript comments,\r\naka `//` and must be placed on their own line:\r\n\r\n```jade\r\n// just some paragraphs\r\np foo\r\np bar\r\n```\r\n\r\nwould output\r\n\r\n```html\r\n\r\n

      foo

      \r\n

      bar

      \r\n```\r\n\r\nJade also supports unbuffered comments, by simply adding a hyphen:\r\n\r\n```jade\r\n//- will not output within markup\r\np foo\r\np bar\r\n```\r\n\r\noutputting\r\n\r\n```html\r\n

      foo

      \r\n

      bar

      \r\n```\r\n\r\n
      \r\n### Block Comments\r\n\r\n A block comment is legal as well:\r\n\r\n```jade\r\nbody\r\n //\r\n #content\r\n h1 Example\r\n```\r\n\r\noutputting\r\n\r\n```html\r\n\r\n \r\n\r\n```\r\n\r\nJade supports conditional-comments as well, for example:\r\n\r\n```jade\r\nhead\r\n //if lt IE 8\r\n script(src='/ie-sucks.js')\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n\r\n \r\n\r\n```\r\n\r\n\r\n### Nesting\r\n\r\n Jade supports nesting to define the tags in a natural way:\r\n\r\n```jade\r\nul\r\n li.first\r\n a(href='#') foo\r\n li\r\n a(href='#') bar\r\n li.last\r\n a(href='#') baz\r\n```\r\n\r\n\r\n### Block Expansion\r\n\r\n Block expansion allows you to create terse single-line nested tags,\r\n the following example is equivalent to the nesting example above.\r\n\r\n```jade\r\nul\r\n li.first: a(href='#') foo\r\n li: a(href='#') bar\r\n li.last: a(href='#') baz\r\n```\r\n\r\n\r\n### Case\r\n\r\n The case statement takes the following form:\r\n\r\n```jade\r\nhtml\r\n body\r\n friends = 10\r\n case friends\r\n when 0\r\n p you have no friends\r\n when 1\r\n p you have a friend\r\n default\r\n p you have #{friends} friends\r\n```\r\n\r\n Block expansion may also be used:\r\n\r\n```jade\r\nfriends = 5\r\n\r\nhtml\r\n body\r\n case friends\r\n when 0: p you have no friends\r\n when 1: p you have a friend\r\n default: p you have #{friends} friends\r\n```\r\n\r\n\r\n### Attributes\r\n\r\nJade currently supports `(` and `)` as attribute delimiters.\r\n\r\n```jade\r\na(href='/login', title='View login page') Login\r\n```\r\n\r\nWhen a value is `undefined` or `null` the attribute is _not_ added,\r\nso this is fine, it will not compile `something=\"null\"`.\r\n\r\n```jade\r\ndiv(something=null)\r\n```\r\n\r\nBoolean attributes are also supported:\r\n\r\n```jade\r\ninput(type=\"checkbox\", checked)\r\n```\r\n\r\nBoolean attributes with code will only output the attribute when `true`:\r\n\r\n```jade\r\ninput(type=\"checkbox\", checked=someValue)\r\n```\r\n\r\nMultiple lines work too:\r\n\r\n```jade\r\ninput(type='checkbox',\r\n name='agreement',\r\n checked)\r\n```\r\n\r\nMultiple lines without the comma work fine:\r\n\r\n```jade\r\ninput(type='checkbox'\r\n name='agreement'\r\n checked)\r\n```\r\n\r\nFunky whitespace? fine:\r\n\r\n```jade\r\ninput(\r\n type='checkbox'\r\n name='agreement'\r\n checked)\r\n```\r\n\r\nColons work:\r\n\r\n```jade\r\nrss(xmlns:atom=\"atom\")\r\n```\r\n\r\nSuppose we have the `user` local `{ id: 12, name: 'tobi' }`\r\nand we wish to create an anchor tag with `href` pointing to \"/user/12\"\r\nwe could use regular javascript concatenation:\r\n\r\n```jade\r\na(href='/user/' + user.id)= user.name\r\n```\r\n\r\nor we could use jade's interpolation, which I added because everyone\r\nusing Ruby or CoffeeScript seems to think this is legal js..:\r\n\r\n```jade\r\na(href='/user/#{user.id}')= user.name\r\n```\r\n\r\nThe `class` attribute is special-cased when an array is given,\r\nallowing you to pass an array such as `bodyClasses = ['user', 'authenticated']` directly:\r\n\r\n```jade\r\nbody(class=bodyClasses)\r\n```\r\n\r\n\r\n### HTML\r\n\r\n Inline html is fine, we can use the pipe syntax to\r\n write arbitrary text, in this case some html:\r\n\r\n```jade\r\nhtml\r\n body\r\n |

      Title

      \r\n |

      foo bar baz

      \r\n```\r\n\r\n Or we can use the trailing `.` to indicate to Jade that we\r\n only want text in this block, allowing us to omit the pipes:\r\n\r\n```jade\r\nhtml\r\n body.\r\n

      Title

      \r\n

      foo bar baz

      \r\n```\r\n\r\n Both of these examples yield the same result:\r\n\r\n```html\r\n

      Title

      \r\n

      foo bar baz

      \r\n\r\n```\r\n\r\n The same rule applies for anywhere you can have text\r\n in jade, raw html is fine:\r\n\r\n```jade\r\nhtml\r\n body\r\n h1 User #{name}\r\n```\r\n\r\n
      \r\n### Doctypes\r\n\r\nTo add a doctype simply use `!!!`, or `doctype` followed by an optional value:\r\n\r\n```jade\r\n!!!\r\n```\r\n\r\nor\r\n\r\n```jade\r\ndoctype\r\n```\r\n\r\nWill output the _html 5_ doctype, however:\r\n\r\n```jade\r\n!!! transitional\r\n```\r\n\r\nWill output the _transitional_ doctype.\r\n\r\nDoctypes are case-insensitive, so the following are equivalent:\r\n\r\n```jade\r\ndoctype Basic\r\ndoctype basic\r\n```\r\n\r\nit's also possible to simply pass a doctype literal:\r\n\r\n```jade\r\ndoctype html PUBLIC \"-//W3C//DTD XHTML Basic 1.1//EN\"\r\n```\r\n\r\nyielding:\r\n\r\n```html\r\n\r\n```\r\n\r\nBelow are the doctypes defined by default, which can easily be extended:\r\n\r\n```js\r\nvar doctypes = exports.doctypes = {\r\n '5': '',\r\n 'default': '',\r\n 'xml': '',\r\n 'transitional': '',\r\n 'strict': '',\r\n 'frameset': '',\r\n '1.1': '',\r\n 'basic': '',\r\n 'mobile': ''\r\n};\r\n```\r\n\r\nTo alter the default simply change:\r\n\r\n```js\r\njade.doctypes.default = 'whatever you want';\r\n```\r\n\r\n\r\n## Filters\r\n\r\nFilters are prefixed with `:`, for example `:markdown` and\r\npass the following block of text to an arbitrary function for processing. View the _features_\r\nat the top of this document for available filters.\r\n\r\n```jade\r\nbody\r\n :markdown\r\n Woah! jade _and_ markdown, very **cool**\r\n we can even link to [stuff](http://google.com)\r\n```\r\n\r\nRenders:\r\n\r\n```html\r\n

      Woah! jade and markdown, very cool we can even link to stuff

      \r\n```\r\n\r\n\r\n## Code\r\n\r\nJade currently supports three classifications of executable code. The first\r\nis prefixed by `-`, and is not buffered:\r\n\r\n```jade\r\n- var foo = 'bar';\r\n```\r\n\r\nThis can be used for conditionals, or iteration:\r\n\r\n```jade\r\n- for (var key in obj)\r\n p= obj[key]\r\n```\r\n\r\nDue to Jade's buffering techniques the following is valid as well:\r\n\r\n```jade\r\n- if (foo)\r\n ul\r\n li yay\r\n li foo\r\n li worked\r\n- else\r\n p oh no! didnt work\r\n```\r\n\r\nHell, even verbose iteration:\r\n\r\n```jade\r\n- if (items.length)\r\n ul\r\n - items.forEach(function(item){\r\n li= item\r\n - })\r\n```\r\n\r\nAnything you want!\r\n\r\nNext up we have _escaped_ buffered code, which is used to\r\nbuffer a return value, which is prefixed by `=`:\r\n\r\n```jade\r\n- var foo = 'bar'\r\n= foo\r\nh1= foo\r\n```\r\n\r\nWhich outputs `bar

      bar

      `. Code buffered by `=` is escaped\r\nby default for security, however to output unescaped return values\r\nyou may use `!=`:\r\n\r\n```jade\r\np!= aVarContainingMoreHTML\r\n```\r\n\r\n Jade also has designer-friendly variants, making the literal JavaScript\r\n more expressive and declarative. For example the following assignments\r\n are equivalent, and the expression is still regular javascript:\r\n\r\n```jade\r\n- var foo = 'foo ' + 'bar'\r\nfoo = 'foo ' + 'bar'\r\n```\r\n\r\n Likewise Jade has first-class `if`, `else if`, `else`, `until`, `while`, `unless` among others, however you must remember that the expressions are still regular javascript:\r\n\r\n```jade\r\nif foo == 'bar'\r\n ul\r\n li yay\r\n li foo\r\n li worked\r\nelse\r\n p oh no! didnt work\r\n```\r\n\r\n
      \r\n## Iteration\r\n\r\n Along with vanilla JavaScript Jade also supports a subset of\r\n constructs that allow you to create more designer-friendly templates,\r\n one of these constructs is `each`, taking the form:\r\n\r\n```jade\r\neach VAL[, KEY] in OBJ\r\n```\r\n\r\nAn example iterating over an array:\r\n\r\n```jade\r\n- var items = [\"one\", \"two\", \"three\"]\r\neach item in items\r\n li= item\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n
    • one
    • \r\n
    • two
    • \r\n
    • three
    • \r\n```\r\n\r\niterating an array with index:\r\n\r\n```jade\r\nitems = [\"one\", \"two\", \"three\"]\r\neach item, i in items\r\n li #{item}: #{i}\r\n```\r\n\r\noutputs:\r\n\r\n```html\r\n
    • one: 0
    • \r\n
    • two: 1
    • \r\n
    • three: 2
    • \r\n```\r\n\r\niterating an object's keys and values:\r\n\r\n```jade\r\nobj = { foo: 'bar' }\r\neach val, key in obj\r\n li #{key}: #{val}\r\n```\r\n\r\nwould output `
    • foo: bar
    • `\r\n\r\nInternally Jade converts these statements to regular\r\nJavaScript loops such as `users.forEach(function(user){`,\r\nso lexical scope and nesting applies as it would with regular\r\nJavaScript:\r\n\r\n```jade\r\neach user in users\r\n each role in user.roles\r\n li= role\r\n```\r\n\r\n You may also use `for` if you prefer:\r\n\r\n```jade\r\nfor user in users\r\n for role in user.roles\r\n li= role\r\n```\r\n\r\n
      \r\n## Conditionals\r\n\r\n Jade conditionals are equivalent to those using the code (`-`) prefix,\r\n however allow you to ditch parenthesis to become more designer friendly,\r\n however keep in mind the expression given is _regular_ JavaScript:\r\n\r\n```jade\r\nfor user in users\r\n if user.role == 'admin'\r\n p #{user.name} is an admin\r\n else\r\n p= user.name\r\n```\r\n\r\n is equivalent to the following using vanilla JavaScript literals:\r\n\r\n```jade\r\nfor user in users\r\n - if (user.role == 'admin')\r\n p #{user.name} is an admin\r\n - else\r\n p= user.name\r\n```\r\n\r\n Jade also provides `unless` which is equivalent to `if (!(expr))`:\r\n\r\n```jade\r\nfor user in users\r\n unless user.isAnonymous\r\n p\r\n | Click to view\r\n a(href='/users/' + user.id)= user.name\r\n```\r\n\r\n\r\n## Template inheritance\r\n\r\n Jade supports template inheritance via the `block` and `extends` keywords. A block is simply a \"block\" of Jade that may be replaced within a child template, this process is recursive. To activate template inheritance in Express 2.x you must add: `app.set('view options', { layout: false });`.\r\n\r\n Jade blocks can provide default content if desired, however optional as shown below by `block scripts`, `block content`, and `block foot`.\r\n\r\n```jade\r\nhtml\r\n head\r\n h1 My Site - #{title}\r\n block scripts\r\n script(src='/jquery.js')\r\n body\r\n block content\r\n block foot\r\n #footer\r\n p some footer content\r\n```\r\n\r\n Now to extend the layout, simply create a new file and use the `extends` directive as shown below, giving the path (with or without the .jade extension). You may now define one or more blocks that will override the parent block content, note that here the `foot` block is _not_ redefined and will output \"some footer content\".\r\n\r\n```jade\r\nextends layout\r\n\r\nblock scripts\r\n script(src='/jquery.js')\r\n script(src='/pets.js')\r\n\r\nblock content\r\n h1= title\r\n each pet in pets\r\n include pet\r\n```\r\n\r\n It's also possible to override a block to provide additional blocks, as shown in the following example where `content` now exposes a `sidebar` and `primary` block for overriding, or the child template could override `content` all together.\r\n\r\n```jade\r\nextends regular-layout\r\n\r\nblock content\r\n .sidebar\r\n block sidebar\r\n p nothing\r\n .primary\r\n block primary\r\n p nothing\r\n```\r\n\r\n\r\n## Block append / prepend\r\n\r\n Jade allows you to _replace_ (default), _prepend_, or _append_ blocks. Suppose for example you have default scripts in a \"head\" block that you wish to utilize on _every_ page, you might do this:\r\n\r\n```jade\r\nhtml\r\n head\r\n block head\r\n script(src='/vendor/jquery.js')\r\n script(src='/vendor/caustic.js')\r\n body\r\n block content\r\n```\r\n\r\n Now suppose you have a page of your application for a JavaScript game, you want some game related scripts as well as these defaults, you can simply `append` the block:\r\n\r\n```jade\r\nextends layout\r\n\r\nblock append head\r\n script(src='/vendor/three.js')\r\n script(src='/game.js')\r\n```\r\n\r\n When using `block append` or `block prepend` the `block` is optional:\r\n\r\n```jade\r\nextends layout\r\n\r\nappend head\r\n script(src='/vendor/three.js')\r\n script(src='/game.js')\r\n```\r\n\r\n\r\n## Includes\r\n\r\n Includes allow you to statically include chunks of Jade,\r\n or other content like css, or html which lives in separate files. The classical example is including a header and footer. Suppose we have the following directory structure:\r\n\r\n ./layout.jade\r\n ./includes/\r\n ./head.jade\r\n ./foot.jade\r\n\r\nand the following _layout.jade_:\r\n\r\n```jade\r\nhtml\r\n include includes/head\r\n body\r\n h1 My Site\r\n p Welcome to my super amazing site.\r\n include includes/foot\r\n```\r\n\r\nboth includes _includes/head_ and _includes/foot_ are\r\nread relative to the `filename` option given to _layout.jade_,\r\nwhich should be an absolute path to this file, however Express\r\ndoes this for you. Include then parses these files, and injects\r\nthe AST produced to render what you would expect:\r\n\r\n```html\r\n\r\n \r\n My Site\r\n \r\n \r\n \r\n

      My Site

      \r\n

      Welcome to my super lame site.

      \r\n
      \r\n

      Copyright>(c) foobar

      \r\n
      \r\n \r\n\r\n```\r\n\r\nAs mentioned `include` can be used to include other content\r\nsuch as html or css. By providing an extension, Jade will\r\nread that file in, apply any [filter](#a7) matching the file's\r\nextension, and insert that content into the output.\r\n\r\n```jade\r\nhtml\r\n head\r\n //- css and js have simple filters that wrap them in\r\n - - - - -
      -

      {linked-path}

      - {files} -
      - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html deleted file mode 100644 index a6d3faf..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/error.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - {error} - - - -
      -

      {title}

      -

      {statusCode} {error}

      -
        {stack}
      -
      - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/favicon.ico b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/favicon.ico deleted file mode 100644 index 895fc96a76b68b4924f1c51d022e1b82fa0f461f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmZQzU<5(|0R}M0U}azs1F|%L7$l?s#Ec9aKoZP=&}i&OouUjIY8@C}uZw4x5z5N2 zvEG^C^vXtt_xtJ?p3O32c(KTx;lsgZhW%5M85Sf}k-mf`L80)|7ga~M{a znlL=>m1Q`#uoPkbC~GtXMnhnDh5$DU1D6mx+;2QAKt3ZQFH}H~1y~00GcqzVg9QXw z_<%(a7y$V|wJgF=E>MgE#Aid|14}IyCM5MhEnxFF;pTzOK(>#80puP=gnOXwAd33` mpMe2}f66m3eB@_fcnmb^7!b1nO#opK8zcsj1F30)+jEP);68^d)m`eN0o>(5%D`Q(1;j>g@G;xlf`0VBQ`PFY?6)!N&f?*K}$p; zB!U=NBn{eB8${1}&-2_L*HuZp@ZP1@clS@cHp)4iM1ewzw59vko7eMM{e9z|%NNdX z0V;`?KKSzTCvTm5bc{L^CIKLUxc2X{i{ISz$8Sgf{q)1nXTP{`{s?9mQ$4&hPiKC- zY8q7(Y1Xu5iCf33=O4Vy(+|zQ?rW#gkKB0f%}?+6{G*qT22|DQB-73`YzA{N4W^=s zq0kQYcbtFfz zLz)H<&|z(Y4kBG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png deleted file mode 100644 index 89ee2da0753040d1ba0a3487473a715a8fe89322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 zcmV+#1LgdQP)i_t#ewV_0K6;=bl;e_Jt7$~$sQ)q$+ia<4Ec+jeaGt9oWH@O|2`W6&O0t!k{B9sUvLWxkCaPsd9W(`fa z;j-|^ZI^2XnzhgZWYRW-kP&J>DWPo`%;JaBX}or79k=+Jo@h%4Eo72tqev+cB?PjP zO<|ByL#>Tehyq$jR74O$B9WDW1`tK`LzYyL3A9iAcRxLkJ`I)n}v%Od-3H>j$OTBtk>(k-9o?8PqI=0 zB&f-+KOXVnjyKJlf4iHOtnuiE_4+ZVJ$dHjU<^o^YCjQ-wt^!;rPpBv(@pFO{9rdw98 z_s@3+yta93oyfL>7AD5}r=|`zS3Gm$_|(iSl8XBd9k%=91J0j2=ivT5cJ18ZmDjh{ z$-RMd{jQ#X79#Sc diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_code.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_code.png deleted file mode 100644 index f7ea90419d950f9e69d977a1f5847456d96a5f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmV-21I_%2P)@LCln44|RX7Ti z0HI3&7jPq){odH{?_{%nYVq_;n_c4WbUpvU(&Cvnj!vq|kVC-vpF6vp^;;e0mm6HW z+WPzA`AZ|;pPp$&dNjzrc??4rt`k%Q1l*u-BPD0MQ}Fbm8jnsyezNt7+u{23>t7Em zJtETY?ja9KrVs^!LJ$xEMF3-bAZO;-IQJavE60KA7fO$VY_%N)R6s>g5mW>fL4&aR z*EVgKKTBXm!=L?S0?xM zYqL@C$|EDF2q*3zWW7;PDZ}SK*IE8;i!3U62=qn80C&*I1Le7WwNP5EcX;_oh2dJn zf#HgBe4@r$GcjHjmj2vAfT%(YN?}kK=(*+1*DkNNc1H5R++vfBMhACi<5uFUU+N4+ z<&U*CPmWi}REa7C6-t>2im1CWv5Jkefxa6>)dEj-CAW wWa{_}BJ!}~75?MkfaCnj>Dn=~vkLS70Pk`;z)@TQj{pDw07*qoM6N<$f@imYHUIzs diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png deleted file mode 100644 index 195dc6d6c365d298e466026b37c1959d96119ea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)^@R5;6Z z(>-WZK@^7J_sq=QY_e{46@P+~LNG}sRzZsxQHvCsN*h5ir6^j7pq-$xu$N#V1gx}9 zClV7;5)7zih-s3DB)G=7|99>ji@So7-P24n=VQ(@GctDX!^_@$bj%oviY6e4Dh;od zooe%Wvs8LEKQ&&bL&@bwi=STIAI@!-gB2jC5+?y?VR~VkrNxam-`6*8&po|RZ5LpS zNKdJ%c4bTX`XjKsnecf%W>1%6WT?pKNdLLq{=(f(Col?P1+oq@R>)W(n=x!|*BIIh z6DJGw_w`)u6yN|vAhMteYK5#b%r5^v+VCFl1IGssaclZZMS{vs-LJ2$)n7DAr6==K z<29#%AXsBsDoO}SBaXR#_Ap!JKx)(1)3O2pj0_dYWz5By*X74fRT01$Fk%P_RzOMDtV?GU{nsYq#K8iy zb6qzLYDj`_f5$BwC*WE(t0m#xYJ*=jC2|HQYHh=pf#QG7oowi`h!L!{DB$8|qY{~X zu8@sU1tWq;n$XThR0%;45mdqXM892|{CJ@0DS*}>?ami06Q_^tvM~Y3K(_-`#m!8f z8f!QIrH4y#61;0Ym0cCoLl8{IPombPHtnn7%SbTdI&G-d>ZQo!_wBMF9nzX!g8HVY xYTJPGciz9XMh3w2fmZ(7v{)r*QZD48?mrio{~IaoqP z|1Ep}yDQG09bP~E^Dk?@JiKQJ z6-pO(3~IOP)IYisL6D6;oAEd;E%zR}{U$rMRNuD6nQV7nesKS>)yLo7JuDCrD>Abi zbj3uW23?^GA}9jQ{M^8v?ejL?HaT7AX5WPZNkBmfN`w-jL?{tT7ykZt$%Yln?p_m~ z-?>&d(LD(jAd}h=LPltPQbO$*Wbyl@G-_k5jXbb#qffHY03>M1jfEqoPJQ6Mr=Byp=^jfzePZV1 zLjCmNi31hdIJHa%e;5g=1(`u3BRzfeExY%=VCu{loOr{`%2hUR*x>tL^W_TTaj);0 zpPR6CUD1+0>4TQ6zVfH3TQ;%l6#(_%yspK@3gcmG#Q4!WCPyLU93nMKk7E2pcA=l45({2jNho>sdF*A~bA zxX?-cp~y_z_kFf+yqu3m#QiB}03?Z&9vvR5TNgj<)($Vm)xq5G>|o2sFMag&6aNF+ WAT1?sQBYt20000iHtsh1EzPArg^Q zIZrOk#rNsfjaSbMAL;<4h;Z=jvu8dzyz8N&Nb7=z03ZUw?9z%8KQEa6yM5=kUnka& z3?FJk2}L7q>na=T#;<7U*P91xfF`;`6%pVgWgRy0?1ZryL@%z52=-!fGXWGEn4M351L4<+7eDgwo|moqXT+s1&Kmn>-uQQ8mL7XY)w5Zk*(g+<3Y3tmkR!bL zOUKaUtj_pX26sH+=Iorwu}MGd`_%O-_sS}8VpG#fJA)Fcs#ezwtZf?q?Ac70mDv`rVs{$od?VPKeqf<-kUjNtS6ecB*mq<&M97K^6IVsDO zt2$Ru!b+>2S<}_H>$RcInusU_8PMNdf(W{sNlJ3FkrwMJPeBPO#d}Y^a{9TH(#{Y) l0D?dWAV4eUJX#h`!2gmISk&ZKd4B)^002ovPDHLkV1g&sd|Lnj diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_error.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_error.png deleted file mode 100644 index f07f449a44ff2761bfc7b752db3d08d0e1238b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmV+!1LpjRP)lHwhvrAu0-@MQwt}+5~MQTtu}C0%;W( z1<{R?aHBz*g;pk%AyQVBR_Zu5m~;ES_vxI-O!vIF|H*|T{l`n#garr?$RMk>)?Y48 z(ZF2yTneKb};DNWF+jK)IF`6_IfJ{i|F3o%Q+l&4_HGBD|ACE8na_6>L z=s{^>-C(a7J$6=8A_%h5W!1K6dcL!D?XX+Ndk)oei?UundDpX_E&1Y&`)3P8#Ny0s z2Ag7_&ZPhyGj%)g&S6V2LNun1;iBQm#Fwlfv zgyESZR$X}2P;=RW!2zid1r$hBL{K7>2qi*f7>pT1=RdT3@-anEoH{ z={KFOO;Dh#bV*jaN>}M>RZqQd`S=6O9C3KpI~I>l%QFYfo;jqQYe5fcn`)+)zMm6P z4X&L(>gnN0!%J4^rhX->?$S5bY<=GEU%jc!KLL8sww-Eg;h z`H-yBHa)yfojYT}&G*GFc$<(Yja_q=lZvj66DC^O5%$B)|Z(CeD=n`|eM04SP; z>-=-l+xdJjA~vR6^xB#o{ehf~tSM`iwaQv$O<8NIHA}W_WOw*~ XD^gE}t;YAo00000NkvXXu0mjfl6ZQ> diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png deleted file mode 100644 index eb6158eb5ca9c4b64c81e70e0fd894dbc8e2bed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 817 zcmV-11J3-3P)hdKqhFO_H1|Vn1E?(=|cjAh_&P}y{{^`u< zcYD@PK?$)4i~7o9*6F_$F$4lR(d4AAvrez^(88Hk+)+B7E)M3jc=Ewl4$S^`_qwSF zA%qz@=c2EOsz@0qB1IqsqJU)HaG&+}%`-OM8YqW{K85hqj@4&V9vz!Cm_n0-W#f;# zeEpJde%vdgRn5?(+PY=W*z~|lT2-mtown({ll8&3S5+lWz5K}LTRW{k{eJn3Qz!SU zQ`@qI_n2;K?RG~pYJ9=dj-RWgG;P&wEuoAxL~Q)<>x0b=dED^Outj&xQ^rA;u3pw| zca_ClTh_d9cxXg_U!lLRl0`xU@$=UXO|_dRdtXfKwPawmnf(LC7u}-U>8k6}3u|{8 zs9LHr>MIJZGD^r9h|q2yF24Wuh+PM^yMN9GP1$khlDkdyCY}D{kg}jEf-(kW5jBY> z0rB29ZhG-r=i_R{;+1k0?A-sBM;AP6(k1i9ZuixR4?MqXOvphQgCYj~RnXKKL~J9Q zIDNz~XMfO{ZhUg&BTtMyXJqDVqc<x643?SvKHx004lTvR=0a5$dUw z>Xb470000$S;ka1sfH4I-R8njUol7M4dtApOahDylptpYswf1hD#CwFoz6oEA>(SIECU&IQ%a}GXdnC!9$70`0uH1B00000NkvXXu0mjf!8w72 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_find.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_find.png deleted file mode 100644 index 2f193889f7ea091c292acdd684c595dcb206b5c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmV-#1CacQP)@+1&aazfGU7ezSm^v zpACwO+tu0su66!(dT=`e05DeeCnCFJW(8|RKtKa{4LGONnx2V85A4m%PEQ?MEtR-esdM$pB-`H542D0)N2zSC6Imf)4L8?>%ZrW+H>xCKi$unm zvGZq-*Q%Aahx;C*=l+K%-?>XB)6TB$-L$r*`RUvlA`xP1NG2?)ge8@TQ4EN|Jks0u zcDg;oFC#-#R`YbWB`D?Q`1#y7l$LXhjSLf8AvQuB84}i#j0^!#g{VE#(K7h@5pFHy zSenl=@XBEdxp`h2Ji>CR%=qXJ7!e|?paKet-~;#ok#jETyeB(5&Bkhp;!+;51~G=) zH?L7xmDUu_h+a$+xuWom;AWW!mS$%%+436Rjc@}y?l1134kgD0AOf$OmjOR zstUlshZk$ZC!bAyIg{Y29z#&@3SJ;6D4+_eFume9^#TmMccC5u0J!ZCTnO6m$lnD| z5JeFHf`Xs~1vP>RLKI1GKDY<~pjr2&bi(fX;6Nj-ss@Ds0CcoO0H{JsEQkm{q03skAA);_bv3q{k31qwVo&s-q`Z?_e+j^w(WL? zl+uETs5+~xBU2};OqEE9ETLGwsMGe1%iTRNue)9}|0~E4B*@5#oRXZ9oRXZ9TqRep zPrGZuoOON4n@=uPbyP1y4G=+HktC6l(gZoFD>@_lXDrN?wo+zozGt3P=Qh+3L7+}q z2!WK7geXLnO3Vw;o12Skp%_E#+N#9;DDWP?Q-VS3B$v~Ha)dDzWn0zG~O(^_1!n0HYp-( z+;wPIdoFgQlpYV!10V>5@a)1LyGBMvoa}miyp(bxbMTM-FYNyx;V@TfYddyT00000 LNkvXXu0mjf90!wr diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_go.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_go.png deleted file mode 100644 index 80fe1ed0cc75fbb67e9398ae686641f8fb287238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 zcmV+m1N8ifP)JNR2Ufr z!Apo%Wf%b9=l#x^8AolrB&K9H?Pg_|78WA8(M3toqE%3B#7*srcF`i*xhupr27%Nr ziguah1+mN)U5GNmyEfQ3-e%_i&-vb-Co#(>FJ+EhQEwjRYVQ(&UYy{U@%vbY||>@4x=B^vIqabI?L* z;-S&DS^V3-ni4^fl|HMkOEbgX)(390>A}|VIypb5Xee4g;7ck zwKh^A3Mi1Mh@eC$5lV!}Fw%sP623U`g3pd_Hr5sunLvTskx4}&Gm%Q6L}(l4x}jCe z*81q1_4-O*ffi~_nMslo?EQ8t*&Ec(pzEw$vc}pKn_Qp0>D7Jr>ATNC3w@9f|Y+U&+)#!t7l&wKp+nP{PQsb+fb=Yf!Fu&5j8vpRj{FT>jD z>d>$sx;A&+`n$HcF}&sYKSyR;=(=9tvvOj@hUG;~4qTYk^_@E=?$*^_pVh_bGnOt~ z;pEw)j{SK$XVc;qy181rT655gW9NG{(yeablViIL>cDI_ux8m>Pp{tY$J0lgo4#ax za?j0EA3s0S!f>{~ykN9h_RhM&g3K(E`q(dE(Rd49+%xMeR9{qlWnmd{s#(SQ>PmFtSQqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_key.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_key.png deleted file mode 100644 index d6626cb09eb11a298b90a8a27b0d8eab41f49a82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmV++1K#|JP)$lC4gU2-`f*>nhR-;k6IP7e>YO!0^w)WK%3$w02v-#>5Ep64PCP| zJihT#O|N+nT7XR2h7dAB?UEAOhJF^mol1i`QtQB`HSY}RE7=r! z)zaVIHr5?>v2Gz&fdYw&2ug$!p+txby(aWZ7(4QT)l2`jX7eMQ{>)lG6ev(fWKxmH zOr%mM5$6B%u~qGtCf40#`mbGj3s!n+^%wnJ&#rl>g<4Z)lB5J6f!?|AP275)Zswr* z%T}4~{;_(?waU!#?JabbF3Cy-kf0{R{z}6$e=5yMQKt3BPcl2>zoTPMqMwF;3!_n|>sT?~bK_-2O_m+o>GJ6h zt=+g$4n7y%1qVJI7*5Yw(hqM=JusY{d}*?U(Oj*gT655eZ>Ksn(qrd7v3}DX1}C>` z+X+8@+4-pVq_fxG zlU}~Ye!0+%>J+pPk+0wV{GM$QaYM?5ux)w2z59=S&H2+K?;gH$bZGzL&g5>G ft+noNiyiPkP9r@8gT|RZ00000NkvXXu0mjfuqTIu diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png deleted file mode 100644 index 7e568703d6432c530224e443771a04fc1e2e59c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmV-N1GxN&P)73{`^;G#xwAtHz%LU)4b zqTRU=ve1RNa3QT=ZM7C`iJ~QFQ*9t7<~pX$d^7W%^M8FFCkcQj-~0ZRTBCB(J0^iD z-~e!d9LR`f3#|=(>$bPvx_D-~2jC%pJ=n_e_OK zeJ_2b-KdDDh@@UlzBSMC;EPygH_MwjWBnPGQegihBV73D?-x9PlHL9A=(Vg=8^d<4 z<9r=UkxuIm)*CO=9e###7PztDxUv}e?$0)rQicmYhV`pQ%S!g@;K(?TVfhM#E?bM| z=B0gfb6h@a8bf5FVT-SV~6}?X}9lK@@Yynoty&1zdZP@?RfODsl=2XzzU% zS8gIN43How+9%bK2S@Xbc`O>`z5`%^;pXGy8^4f>9^3!Sp@|O&)m;dOa3q6d;4P-l zca|=H_{G&m?D_+&-}r{u-J$5T=(X4R&)q|O^gN8cgv;s#@5sEPT5_Z)oFo9Ac>l+I zc4ng5zHpps|9)<_Rw>5bKzE(M1j)dFWI_%OH$BJSz0?T+02W0)_a>#vFqb!*d|5wB zzBUN|M&ty51O@=i?kiDrjQ{{}e|^rU?OS|RdxxP1p5mAw36cX72#`R6UsoeCQFI~! z0ATITp!vfeYyQ?Dr=^5BAshfEa0nB~JG?nUa2Aur006MC*<9`)86SPS(W^`H2n+xi ztOWohsFfVfVWrI7PSKW}BmkyPoj(-|J?ES|BGd-}fIxr{00@ANnO*ZR`#)pee4I5T Rmm>fG002ovPDHLkV1i|Hc$okI diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_link.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_link.png deleted file mode 100644 index 312eab0914ab59271384686255d1be913a6b3add..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@>P)VWgGzD=Y79#JI$lhEn`|2MpRa?Bt#-nSD~P0P(mbVe{KrOBoKnSsk>m|ML{6l zBosu@om4j#WzNLRAk+{k1JRvL(MfE&vvbb->v>W{*z*1_uMP}0cIRX*?mz+wk%*#O z%0D-+$B*g1nRkvI+_3E8Pr1NC6@5M&4vWaLCnNlr;lNlr4i91z&)eBGqL{L{GNu;Fof}GS9{gM5BJuH;2QWk8yuOZdB3pGR#s8bd~ zAmt<>3Q=YH$t5YJ5;7@+8Uh6=ktBgY6#6Pa%2F?h910?U8cLT43KAj$Z1*==ra&gILO{WkHfs(--F=bly9l~${z@AT>V$oat!YAD@M zBE0v_F{`g#^wOSP-u~!wvlmXdd*uqFqoZ0^{&nEMDU+=!>({S0wrQhFmoB}Yq1)~0 z^{A)L8Xjzdr(W4_exYO6u3a{4*kIeXZMJUR>Q=ksjW_p!rAwDKYUs90>6Q|C>56o@ zbrSq^Xk7Gq#>dAsn@un`Hz$?w$;Ss`%jV7L%9ShgHFV~C)6M>B`Tp%|nqPc&G*A3| z)Qe+}vT4-x^t1~XE@(6wR;^lPWMo9n*~E!cy~)YRsT2{`?fqeIw-e7N@mOA%UcCIq z_kH(_EK7|>pM*1Wt2^DaDAp|cvp*@(ZZDKpYkKC^?97(`0sb&XTXy7N#sB~S07*qo IM6N<$f;YmCWB>pF diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png deleted file mode 100644 index 246a2f0b426faa0c7f5ba009e32b1deaf88d1288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)otxGRZMDZ!_a~nK|b_-`n%VosaL{KDuPV10`(1LIen8kX2Xff$3BE zah#djvFGJ&eE^89Pk*-O^+&d>FC~^GjRYVQ(uuPJyS|-v?9lxA-+tM5>1Qu*n+Ir1 z6KhA>X4$XDH6?-|E5oe1E?pQ5-M;2xw_ex!x}I2+b=}mPFW$U%^;o(Zg*LP!K^1kP%8ynsD^= z1y^6xD1#GLjO{VLdh@0GKY7;d$+NGukV)GRLPn^=q=dF%B#XaJrNP`0E6=}e&Gj3d zKJbQre*WXt!60_DnIzgMQc6S#fvjXxsE1v7;T;njHkdy2miIqAS(nX~o%cO+q+b#h z5tIleLWvL=dQE8OC#{%y*Tnku&K`Tuub&_ELI0t_ea{@3f>Jv&sYqld(%}3_GY3Dm z;O{3*Y?v^A`a|D;^qrM=ykI)U6QHd%WhO~VF!SGjGn0GOZrc3mGZudNl9{Q#X5&-F zuGwVReFLBjE5jr!!^-5*L%!I%PkYH#Hs5rMrEBl^)9)9XTD;xjHFxVZMc3~Dw6#k$ z(-S}RE$bgMHv6Z`mS5|u$$78sp4G-8b@lVkl`HtEv+MGn!F&bKcHPi$$oP_;=BrPf z$(~b3&p3CsuQxhoV$%jIR;`lB-s7FDX)xCTXuJ7ZyIQk96uIR=HBt%-P?N*bp`)EF zq14c}QM+O70NTOa@V~_)&GMZ$^cQDlkyOCa(H3Mf+6xhCuZh`VSN{cQBl5Ys9{cp( rh`2H3A^=GuC6HjQ*7|*0>;m{7QlnX3z3MSD00000NkvXXu0mjfR5FYo diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png deleted file mode 100644 index 968f073fdddc1cc0f0800b1ac4001cd9a55f053d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)AVs!l4K}n~L(tL`6d4Up4iSWnZ3Qg~4n+_J zDGk-qQdogO5JUtO-d5pRp7Nd7_r1^a|M&Zq%mn9Oe((|e0sw%Ur!K7T1pojj=U#f? zQM`qbQrM^DPkwa?DK_be^~z<~RgSMIa<`xP_4P7gg2jCwJ{9^k!fsU=#Ti|%I3p;>90Qd+7|~0h&mIklA#nb>ATL2+v$&u)OBgB z;nsHb)I&QRKeX40H~~cIZxCd}5C} z=79lXoXK%6YlyLtsV$~bSm?Upq|DJh#{|*a7XMm`4QJWZ>s6nL2R1|&J z0VPEwJ9?!n`o5PKAjc->P1Gi8BY*%!5&FVp=#)$mMJYul1Jton}gujiUf??eOy!x&!tsjxy;=Q3_DdcXx=a^OBhW0N~`A@4xB0a*%F? l+@c^sQA%W+?pa#c`9H5UNfS6T{e=Jk002ovPDHLkV1grvM=byV diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_red.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_red.png deleted file mode 100644 index 0b18247da5850f3c2486373a3e179acd2772e8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G98P);68^@7JE5sw#jpE*579S@TLkU(6yap1yN*Zuy>-hV%Q_v4Ar&!63c8OBr(ZRhFu z_kWs36-AmgZCT>x!RqM;Zu9tqvoHI~k@UmYo_g(*J3c%2{N8}7I+|qKPQzv}7t>%W zsu&9G)UmCzkDYSw{fBnuW4j;1fKV_nicw`$8C6D=F_qu`zUiK$2Oc?5UVY+D(`I@R zW`KlwqLftWHH3Z2_XVNfKn>VgT~k=@- z+N>c>0|@A_HbI9Jn`v0~7cfIF(TS69zaomDS1QtgvaBBfGEPLHccO2~3jc>n^6}^HAEh-2#VxC7YYcDXv!L9X= z-R*SOUvIs;n`8(LxP4~^2|JsiN^hq6cU}5dn4v1~Kl{eT7pm&f$PoY`hyVe%y8G*S bxB&kH@RuR86sIAS00000NkvXXu0mjfZBi!% diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png deleted file mode 100644 index cf347c7d4685128a4a447abb9fb8e939417644f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 858 zcmV-g1Eu_lP)`6pHR2Ufr z!EI=jWf;Km|8+n2IrHqe<9xxFVk)&(Nh?w$Xk`TAyvb=#e=0aySC z00NkRDM597_LiNIJ2M^qhuTvB004REvvU8@of{r?P8tmo3;+Pk0F0@*jAMhdOkS&1 zhJPPfQa;pP0|4+Yk%#j>X}o-s#EF1_DMV93FsfPP`G*>Ks>L&)Q}w2g%slu0kBfW1 z+*$*0BC^oTl6>OGIq(9BgG4|C90Dk-N_mPazGrQ7uHZ|>BLD!-KmZ)z1e^#?1Sf(M z!6m}K(^b|i%$TcA5bC}r$tAA?0C)g1@CgWliJ;NAk&ZF+-w#}$`-3nZ32C6IVKrHp zr+(!L2hRfF&AsTw>_@ z1y23;E%Oz}?q^Q2d($ayO;-sON2t7$w(Z|o0Pw1YnSp^}0PI+I5HnDNsFCA?oorkG z5sUIGIq=FSyxcj+xlhkm0en=52Bx3@02o12gdAU$_i?v6iyFMuc7P9#zQ-Hf; zVuV$t9P5`m)F2w1?t6{<8%wk{w-PP#Sj#%1MbsjrSI6n;D_@8q9`~W98dNQf$j=iI z6~hpgww&be%X_HI50Hhx@W==u4TLPB;ei-J-1}G8wH}|{i#Lk-WZAyfv}k4y0|fvU zZTy^$u6L>2nWo(NDSV2@MRD}JQ4(c%G%=dG@_vxH?>gcH#*Ue2HC}9sapf8X?R$Z;XEnm&g zW99mh)5jNw008mK8)r^`_{yH0rNn%u1|SpC(tjf#om=+r#lh+?Kb>DVb9`|C0Bvbv zN3U(>f4-tAC1hosRoA7p(b(hL*V}(j>ug<`&U)|l$6o$)!>PBQ9RQSwn9asj2p*|xhU*R^vq?*Twb0t!lm5}`yW5lRy-U0ZYK?8to!;o!r!XeOE$ z0HB3T+6EEoI4PlR=wonwqJ+TvCoWh&$?CAPVYcU= zD{DS0?AkOtb@-hh^ZLq~FMjxYf19X?pa_YqtgZGvv2TaxcF#KT?O%=_*a-kW_;N|D zakkWsOe!)HsT5WRBiC+p;N-c>0Qwy(1D2MDBC595oXSiR07)sKNk-%9*rDBOO^HUD zZW#;)R&EZpqha<(HK$(tZYU#V29<@0qCXgU{gXeGpc_|pTqQD-WO|}%yKZbeX7k*H z2W~CK$v8NBAq~czrc5A(v51g0Wma7`G8}f=ZcuAiYYxZan@gP(;Ku66M6?bquGiHe z3Q0ya)%Lvk@kLixZfZyU@#UFbv+>pYhcj8TRKSr_sWG8i^X~UA**LvbD3(_Lba3xm ziYcpup*A9qJ$?AA=Og05lndxfwr`!C+O~h|B~4 z01q8H`StcY);%&mId7_+)76ovRpeNWRp&4M?#jx@|E-)x%P*A6t^fc407*qoM6N<$ Ef@ddc(f|Me diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white.png deleted file mode 100644 index 8b8b1ca0000bc8fa8d0379926736029f8fabe364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H;pyTSqH(@-Vl>|&1p(LP>kg~E zYiz5X^`c$+%8#zC{u)yfe-5 zmgid={Z3k(ERKCKrE7DF;=x4^O+ pzO8rLO8p|Ip=x)jHOtWj`bJBmKdh_V<`47(gQu&X%Q~loCIFbEay|e6 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png deleted file mode 100644 index 8f8095e46fa4965700afe1f9d065d8a37b101676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0~O9lw>B8WRlD)Gm}Jrz31u-X&&gn2lvjs=i{7nIaL6v2==uw+8Lcs(8j27 z;|c`rmSv@Lx!heopGP^^Ieb3f=R!%Lpp$}iMS-&P3EJ)s48wrJ_Ni0~k|c47D2nj= z{jS6bt|kFpFf|p5cM`_&0Zh|`rfEp0(}=}lT#(6RpzAsUfxv^LSYX>WlAaN$>)*J5 z0#sE+JRUD8iT9*fz{)_^7@6P&!sEjTcD+I9Z4YjT1`wH@fV{cEvneYGFU%maIEU2s55&K(LixD|{p-uiS@?KNj zk-Go8G$hH6g002ovPDHLkV1hVj1#|!a diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png deleted file mode 100644 index 159b24075191fc259cfd80c797a1b0d74c168422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmV;J0%!e+P)7Z7t2}reCh0o`+ zAlt$F2tW%oO@m<=(B8a-_VgLl#~yUMUDWG!0qFPppd^03e+x1WpkO1NhIaKD2A)-@ z=Py8(Wi%R%JtYZG#sTKH@6Z+&!S3Edf8jFJJNKuva#KJQD3X^7;H^fd2di znEN&c58aUG>`>P{Vqq$kLb+TP{?I!d4(|o59X_%|nVEZq2Rk60n7072SWJ{64CV?3 zgS!EB=eYxwQ>P2&$}(iT6UMvuFgHHIEdNA29!EBtg=v~X!DxxEH~}L2zn|52%xalaq@DTdhh{EVwv0IaQ=!?daer zTKp4I`l8SDt;d{8Q`5Ko;BXUi&oAG1l4}59P-{|^S(Rmord5s6qsh<&m@Ab^wqCD) zHyRD}lKLDzpYN&@q5&*47mGzGiqcXpmqR9#K|CH8kXS4RNs`(iEF%HjP%f8ItyaZK z6$%Apvsok(2>~dTO5jTZfq;N?0ch4l01f$k9?4{~Youl-#x{UDMr#AFIkz@SDwPtQ z$gQ^$2|*(Ps9LQiav_8o8Ne<=Zx1*M*syo80sEO1tB%>5 zfdHB`1z+!R@?ghPRKmL)hWEvZE$=*54ose*0JiUNTM_)cMDXhxEKg(?-pD=y<)L4J zT0dSyD0&NhJ$^_8Ko9uom%-ZM4BTM{Tw$9qyPj=-9W;N(Wi@3*-Q4pq`Gcp}^vvNr zyd&PsmG>fpCSZz?K}UIEd;HGgG%0MG>ymxKPwy{>wy(m*Atq7)0000~7 zMNw2LQirBVQoa8G3P(rY+l;L4iy+JwSqmy$9JlSkk z&*$^Eg+c)@!R|v4gdc8+TTn&eWHO0VD&>$!B%o;;WLf4CNs=Inq9d`xA4otCWHK38 zmc{pkX`0Y=9g3oGK{}lVy~OYL|C5lQ&U^l;wrg|7w=BcA9L4-r411?K7f`@348&rw zXD#uW)DK;H`hxO}u%=@Cj{;#u#_;bb1_KgUOT2Hp6;)MvC6P$vQP3=g1O5#aU%I!K zZ1dc@f}YvG&*Spnplm2rIp^VdA^HydZ0X1axdms2!RKi5x-SFA4p@ zC@N|PI$ryHL@t-(!zBsf2-+sYAukhDHU7Lxm88-p zDk^c;sHj}OKUc4lGZU}6umlGVNAJx0%sKDOFwQx|V2pVvxhYKe|L9TNk!~md3BVrm zYPDL8Hk*yU-ER3~LGwJ7N`0ZV&nOhBI{~~A;@ND*=kxg?#^W&`4u`zk?Mg_e)8XlK z`T#M+OaR1!<#Nf_>$S`xrqd}OjYhoJ>q)?3vEX8pY&I()ERjfjrXM$k7e+-Qs3Ihj zNyOuEQ2EGYG7ro!o6VOBQEwuV2z)*tR8>WxP{616FY)p1Pn1d}#9}cxolZC$4n(6- z35hJq0;FlHC{ zp*iF(lgUK(E`($(s9pJ8Kn?(M734H_63WHtf}6SQQ_MXEP!#0|&@>J8dL5TfG&tBw z#tYn{TCGZvAr>cca%YYn^!t73tg8OOJ2FvJ(`YpCyVZi*?Ur+1uUA$hAg8-aK)c;e zQ<)!XwHh|n&ND=$@^)>aF-`~n}#*WMkD*M|f8r$i*z7+W! qF|A!t*4fE(R`<_YIkN&?Jng?3oQ|aAqClPi0000t>5xmo{nArfL4CJwMMm+N`pQ3p^Le$?rMud6Rbxz!-yG7bz2z$^USP5(;udf(gfQ zG~f68y^)EvcNWp#bUoDt2=h+^%o-?-|mo~iieWqLNP<0m@2PTB7ftyb= z@H`K$>v9Pr5X`L|rw&CEN2(9SB7A2SE;d|j9@*F}sd(@*2l|P*fWfK>1drZUrtUA7 zNXO~pKn1cjf~~TLbje1g>EPPzN2GH#UIBxJ{}S9=E`{zs-w#hO?vcH+hJxroI5v?j zD!4lP0WXq8zUx3RAP@|Gq$}6wXCjFLZY^YSWBxN9#&g)ro$%5}aYn#y=tJ_aIT%4d z5d4u`rlp!};XGmbZkJE*kYJoi&N0pd*yxY{0${xD;;Q1h^8f$<07*qoM6N<$f(}t7 Ae*gdg diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png deleted file mode 100644 index 0c76bd1297751b66230f74719504b2adb02b1615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png deleted file mode 100644 index 87a69145075afd8f8fd8b391c5da1249ec8b2889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmV-R0<`^!P)LWh{^|hy<@Q*xw+qo|KpY<+vaXbbW{L4q( zTsjXEJvb}e%bgb=o%W0h?4u1;^bWTqH8}5Th002ovPDHLkV1nrS0P+9; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png deleted file mode 100644 index c66011fb0fbdcbf210483d676b7131542a0e282b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmV-W0k7R5;6x zlV4BMP#DI+Z{WQcKZBTk0lfkj5F$ztWhP#lcuyb@0@rA^#Kpu5KLA&Rgc}o#aSmis zrZC__xY^&#cI&!!{c|4Q_tcec*#b>|Y15wPcY2=o3;-Bl=(t4;6Ok*pL)-{*A;GX^ zS(@WGp6j~k1wBVR9)BB_gar`}HyRBXh7nM!)u5^>N~MyN6bc0-5{W?44iB<`2biXb zR;wk?jIQg@G!5l)SqhrXCU}x$GU-dY1sra}0uCq@153FUULT=jNwSk}0WBjKz}Jdu z<5gB*<^XtpAmp3m^ZEXQZWd1krhft}CoYaF4cSMvTJ01}X3X37KYdx-D0$c{doUe8 ztY{vlGr-e*;N!WAV%_hgUawyYrhegW>^F)pv%uUTFslHn; zvJ)l{%w(~{!O4`KTmK{Q{zCYltLfs&4?nz|6IdlqHCvX;|HGv~!QW?8P~_d#e0$v$ z)5XHEz{3>qMiH`1+qNYf?huS+@L`J9_$cjJF)Hf?@pu;)`9}BXwGUM{2!{y-4|Z{L zG>z?O%Cp8P5T#j1DID7u_*(Jg?7iss8AZQ+&;u_J{FmILf((9eoiL5nGUe>Fgq*U$z0000 zJ3A|*qoWOonz+4ZQ0KNhDB07SX1?#FrNy8%K)_l}y&kh`*KYdy`Y99&tgNgMLSSrc z?B?+B@HO@P-jS~z2Rgc6yy~Y~%>oJpBxsb$5<&nRLqiuR7K=@0SZj~jTs|sv_jWVX zGe?WflejOaq|Vec=s9+ahmXbyJ|T)Sl*?s82sr2H?Ce~HD5WI+Sz&tmWrN()wI2}+ zKqg92t*l^-#ae~;9%KFlWkmwnY=-UK`_|%ICZ#P1gdjK<2n38VXsuC7{WiU!fZFmm zW~Sda9(Qi@pxO}$ARY+;t##Ao27usOqNt7Hwq6K7G1il@xitj=LIM&{N&#SuX;x4x zmG6FhCg-$PI;hQ=;1iZ>F>^~@)IPi;l}fX?SZ!QiO=X<|pSVkNpJuLHzW(FT_~W-v z?vFpkyE>8ee4d=7wKauH5~dd_M7d2Aa=ICC{Nj7Blqv&DQEP#j_VeWV&WXL>c=LLK zsmYg^_JiDb;%U!UxO%qjFAvsDFj-kzT2$GbV(ZopPM$i$z`!7jvEk07BcC=6FMt4` z*0u3Sy`0b~%#(0000K diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png deleted file mode 100644 index a9f31a278e17993d8d4e13beac2f9d5f7b42d08f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmV-50m}Y~P)sF~CC`eaI+m%Y8jfzomMvZQaNUIT3LIrJ$h)_W{ zwF|LDNlB-g`Hb_G$;>3F$9JF3WYR|3fy2C+_wH}*xp!_4fF2UN4lt#d26oXwru}hT z0+0%Vz-l&|Tdh_L-Ng1G2*RBtBncRx;99K)&+}s0whhxXp{go}$g&Jk6k|vfypI5M z!1sNGVaV?!*L7i87Bo%cfO@?S`bajL{R<($@$|PtgBRcCGIJ_2a|&kO>G-s2aR3E4 zjssoScUa;zIdOeGHBnH13G)W-zt$kUQgNfG;96b=v&4NzRt&@7nN%v3HsG`<<+F$cumMs448N!W3r&2Z*b~D5^$^d6Jxn@SFK5Q8*uKSR7x{I|H-_N1f+AD zSYC5@2K4OKL$==F9U@CH;ONNL(W}oZICHn;d?~pw?GRIsH*x-68Oy6SuK`)`{E)46 z9^3(-HXa#X89SBv?u_YP)WjsQrp;}0X?Bxrvf12IKW8>3t`e~W9|JS<{btTNbNT@EQIWBSNJTX8AMGXD z-SsH|s#>j9Xf~VMtyT-YMD}5^SWHTY5->o`k|d#AE_YQd79j`%GMS7FNvG3b7^Vy9 zn0HYCJy5MyQLoqKnW|JOp-?D*<2V^msZ>BOv0ANd2n7t@{=V;sZrQ>3c})5_%ms4z z7!qXwHHe~!QFj8aR~&*-3F?O|;#(ESIXP~Os%|~y^7c15*q5`gz2-5ol!fU92NIGT z_ves+>+Tf3gfcL?!nimYmR}cw*|BGULzI^7!;k#3K^YO#;!+vM@N~(99+<;fdqr zYPJm+pXYFYk;neQyXXEcTQDNQx57i`Okp9A#n?<7!{#tnKJdsF>utb@JH7dU01gfL zEK2hoPZAnO5+je3&^i*hWM`qCW^vLK!O*?U-#IvXV?#6koWqrwnD{j&K`7N>^tR3G z8zr1(qVOzcF#nF1&0MZ5C$l8*E^Uth0000zE0Ay_3@1Z_7#f-XWL#E{8Al7>L$ z0Rx7lnddoqAyfT%&#`$;v0@*5YdW3w z7mLNoa=FAshK% zDiy@zakyMAxr-H?iQDZi^!t5;Eno2A=?>mMx`Vg(Z!?<53LHLvfTPa`$mjDcX*Qdv zR;ylN4OH+m)fVX&Z#yZpUae;ss@a$K&})gHovkhr@w#xyPVlfVgXti1_357y%I-UHDvRWYvPEX+#g+j4Q9ayba zh7uQN1j%HQgA=Fp9DfODAU^*3*FCs^6IpO7xg`RUXyP)(;=d!ly=#I^l3e0Cub`{H Z`5PU3+D2e&<<>s`J(VpX#y^kqzQ;#=2x({YMw9Q&ndHT&`BD$#%Ql?{+)-OuSA`r}MWJ zVg+2Gc(GW}a=BERPNy^;kEz$|38dTYlFQ{%5S!g@|8f8D_!Nu9_Ni2glF1}xG8xi! zorc39&F6EPOeWOt_XS`W2H_Bo$MXugy}SEctJQj=(TLXTHL(jRXfzs>NF=0SHk;94 zF!&HjdZNX(3U3;LY64IMX__Xv%_wjLC!J2`0Jw?X=zPK$C$`&dYPDKaC={e16bcE@ zgun^<0k;ak*=xLE)@(Lqu~MmsFoMCLY&0Qog`NO(h@kyxaA%EbwJLy8sU*Vi`~52K zX0wrqW;_LmMq@evX4iAM9Od(Q0eHP$1%L|xAh@vrqB`HPQLon}f3aAka=9!3hr=O- z5F9`#J_7Jhah=U(4RjaRhkS4Xkk98kDz-`i!r|~~AQ1TFcDw(@<8g{aBE)l)PNxNE zI(RPyc>9e{@WGSMU%i7*v{!&P$WLz25)0oc=Dl-yy%xYZAm4b-rttL7UjR#%`#j_F R;_m(?iiXTHIMmcoLoO94I8;j@ zv^2DJ5#orqydFJX|Gm$_Bi_vyew+j6{r}$Qc@D1%fQqeAhJj)1!z4pP83k2MV2~s! zSt^w(<#HLFVBg_#xz1W8ioi(WY&Hu~6zil?DI^jJgu`K35(hkP)H%@Imesbg#5!Ps_$Ni*SiR8&sKb9?M`0-mH)gtg&YgRX#*TXz@Z+| z;|2H@xzE0TfuORhuO2k6#K8#sW^J`mQ0+E@$K`QkFV+DTlI$w{GJ;zid{*v9xeIe_ z$|Bp`@iKkgoFK3{4Z)#DWKV~W4K@5WZN+Ql_7%YxNqSx7%cWud&cX>)_PvD*UzxZg a%Kia9Rjz_59@~-t0000)l$0ECbfb-0$}>7z|u>IvuoHEmW&j4lzv=KA+EpIObc7e7{sGA)QVmnM@*^ z%|h38^m;wC+ilpk%>l#V5LCqP_y2_Cayd^XlX;j*r54R*lW!zbqtSpQNyz8(JVmWm zyV4S$2{Uhyc{Cb0QQbf{ZGT{Kr zvJi{K_&f+q^Pv4MK$hhS4TgFj_FD*rLOePdE-E^T7ZzTFCRUB`*?9&h(a#C!-v8lWG#k3AOJQaUey6Oasked^kDPe=Khg@7s584 zg`XfS1)&u*_c;I76#%`kkBfiZgKKo@0)9d6vZw=ExQUtV?eW{Y1Xv}=4X(2zy85d> Y0C^(qLv?Ui{{R3007*qoM6N<$f-gW7od5s; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png deleted file mode 100644 index b93e77600def75c9a144d3d0a5088a62c02cbb0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)$>5Y&axjp2O=VLu>*f>1L;s0)kkvKC!*u?s6CVL=HJ6oP~pNfZc; zsKr=bq;7MITw8NXw{SZm%59TId2x_9BQ zV86`NuvGI!>o^V!Na!=$7GJE{Cq`b+XwknM{UcGHFTTfmuS+ zm-zYC!P3+zmY;SG$?!fYkOih`QYaLxyF}A86h$GGN}kFj)_o*0e zjPMP%zTG7FYMAfO2Nn1D`D0Cj?Wl>5q%@CE10nX)KxpNmwk+!IWkzywiYD( zqUXiYYIq3qcRyMGJ;IY`(Gz~E$J$zu2+R{)xGlE*88b3WK6V*J>}2iPY1HH|tER0W z_+^^FdppY?o)Gt5M2`%xwRDH@R3G}^i1l4|6uchm0X0f!@&YdVLB5K&dd7Rv{)DXX zt^&vP;}kqj3f>94j+4xd93>s|Q!Ezi>?r8(Il$P}PFxSqu{d*!Y%*#cX(R0f|Juz# z3o0_xI14Al->1uky@W-rCI_%l&>PK^TXNSN{byMk2AI5vbwp!K-%-@!-vPR3iikL1L7HA!^!~ChCFU#lnGzp88=I z67V8PHBo4(l$u?-AKmT8?#_0rKW9dUNRbpLc`}piywAM9$xZ-3fR1C75T(BjCn-l* zjUcci2oXXo-}iqun@#)+`W@kL_-U&|2>MxZy~3IdmRm&8b)9!2%ksg3R)nNnT*TJOC=6{2hG86Dz+<^p6qfG5$i^UNUh+u)CD7O2 zK>Ioazn;U|+X0x$=feveYZL1W*Fm%e5P1sajd#eW#^5(ddx76*pt$^)b}$Q4oPabL zLc^HF>Z{8za;f$LtN0P$6C?1{X*jtXkRJ8IEeyiSzencvH3Ux_y>y^}wfJrRCQN#9 z?&e+C>sSAfrE%mZD5RfZ`gSndD)=P?+nG5Oq$zmY&-v+gc7R6c0u8^Ke#|XOq?gF@othF3zFpM8Il<8BJrWqBtF>b#_ye4{0)Xbu6j&@UIhRE002ov JPDHLkV1nWI9dZBw diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png deleted file mode 100644 index b977d7e52e2446ea01201c5c7209ac3a05f12c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)^@R5;6x zlTS!gQ5431_q{u#M2 zg&W%y6a}>qj1Z|7Vu&-DW6d~k-n;jnHsjb-q#u0C^W!_5^C=MlKq<8oNCQ6qS00!X z5eI;XP=g!^f}j{hku}E1zZ?XCjE;`p19k(Rh%^AQQ54xysU+ocx$c#f61Z4HnT#3u~FR(3>BnZniMIF4DouI8Hi4u>cAK%EN)5PO(ip3(% zIgBx+QYirR){Z8QwV$9Z(Mpt=L-Or3#bf-G@66}txq0yc*T(zNTBDT0T8rO^JeNbSI-Tzf5!pBioy4NwAN^?iN#{;fH1Jke4Xa`^fR8m z%h6dq%xX)S?7`zae))(Xst^Scp6B8FejQW?RLTM8@0=vnnntuRGBM2dpo>gbCnTD= z^<;=JuqdSf@O>Z8^XdR?s+KEfhDdB_#ahFj^giCtzT(s8kA$AViyTqaAR;KGaLzUU z<=GqA4bRwpX|IG~*x>pZ!@zLr`XQ`od>m(`;jz|M_*1GDO#$7;n74ppb8=eiqh760 x0yt}J1#p`gw$`o!R{d7zU9~!Un@nJV{4bstt4Au+Up@c;002ovPDHLkV1kWhGjjj{ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png deleted file mode 100644 index 581843637079359a6a58fcdccf0763690c67b063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)_k3`4d{s8lK_6bi^@vq&To98fNoK}7)fx$e2^Y&@<^jR_Ee+8}KG;X`@ z@bCyiolqX>bb1ZIs%QGnjzFU~L8H~d?e;*XP(h(S262}XyZ3a0h07r{KV?E70l+e- zE`%3x|M5#q+;HOC(h@A^M)7Rn13dm0&>K$j%k_F4wOWlsNCIH+!c_#{eS&TL8v4yc zcpnPEY`cQzZ$ILq{U-MA6Z6Z|1p!FZjQ}tXSb25J@HphEqX-6Hqo?-_Zn@{d#>2Ml zJGhxTAd&emK$lV-QK&VM&ix0Xy{GyS3Wp(+E1^8BhD3T0a)m-Lw@Lu4zQRrP)9(3F z^>$hh@N>OAXrmPYunLi|fJ$_*5i`46;M>~*5D{bp>-OL3{+!MJa`3kv~Q#QfQ%c z)1s}QE<_XaYBG;IuRF=td#+}fi4h(6HgoUyJLi0t(*dA^B)%@8kkG&bdM5P5^Z5WF z%d%>m^SbN0XeV)wbUOXn5Ag#A$gJx+7-OCkMM1S%MWIlTkbFLmOeW(&n&wUd&;`>p zVcRy$Z{K0=?SpNnP^;BYEEXleFbq(UY&LrXX$6qkJ~)8+b{=jj3HEXds;Z(?D%}}L zX3`39&dy=Zyar!ehA}e>w)(*vrCct{PI9^2Jpj&OZS8<3-@{0(gNv%1{)zAiLY+_^ zl}e>Ofd4&#Irj#7>=o=Uhv5IJ@?sN0^J|(WL2Uun$4}si6}TG-s3T#p&6GE<<2W)O zf{^Y2HlO#*QDvTp3v&d@;8*}aUC4lisG9(w7@d5Y8y)}U#FwCkqp*Mcgme4{&gGRf zlBfd`nF9cQBKB2_L{F8G2)7pAf$i)Ds`|}-c>pc^LRW{w4SQ)3N^BbZx)6BlCZts! zKph%`(m#xg-q3I7=(us;9<)*2%iuQ1J`oV3gU6V~T}^JU5714JN33&GwEEru0d}Uo U{MPL+lmGw#07*qoM6N<$f^vibe*gdg diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png deleted file mode 100644 index 8d719df5205f7415ce657e5c277db4533c82f346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmV-_0)YLAP)p{{sC7)XB-g4w*W1a1)XtvxrMYa1o?wn&v~3 zHnC|#(>B_M1d`_7gfzLiHy=0c<2kQQdXu*33(xYN_xYW39(cz9jEVT%VokB8|DoF~ z8u%Q5sdl@4VB7X#uh+v_;yOGY&pRi?378ghv)P1cngiAAb<}D#l*?rWDV0j_dc6Zk z-|P~AJZQCA=yWcQjG8fYnimzj*3KqTfN0Cy!G^$7)+bQ$+mHVd1J zvwOR^5Lm<|R+uyB1Nu4vL?d4qa3tn?9H7SZH@~u=fFHEDfSH|bHU6kh0O3%cLdyny z{`9S2Sw~WMy0MPy!64i`jdk4Z3>^+KIL_fN2V_d&ywBt`^IJpxUI$=YAph~5`;xCe Z{s%Y0vkUXDnO6V+002ovPDHLkV1loX8z=w( diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png deleted file mode 100644 index 106f5aa3611a4807ec8c21701c631730275089a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmV;D0d4+?P)<@FR}JvtGRKa0_WfK^c7uXaFH3q@Y!Hnl8VySc`OtkPN3;#l*y*l23+99h*9JzA00}rAC!#M1dZ#v9YOBH|eC*${MmzzYjBu!!-< zK8tujf&(6i)1biy*F>4{f*Kd(IU-JsG&#b_@NgTnx@40)2@2%c;*=?-2Za=}O}7&( w%_K#(S>e1j&gfY?mR})n>>0+8p`iTe2d1K2h8#$+)&Kwi07*qoM6N<$f(2cptN;K2 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png deleted file mode 100644 index e4a1ecba1b60e54f3777717ed105cdde745b7184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)o)wchR-92qq~y6`XqbKmElbB3z{pkZs0VPF`CFvS?7jDn^mFo>d9Y&06* z&1MsS!M-CH3ee+h_sy)Ms%B*ec3R0RpVi9?*mU84yoq(Bw8 z<4(999dJJE!V%pWT~HGRIAb;(#O%2K3?uRpz}AfgE8e9q&OSdr^e^}lC$QXZz;S2A z)w>^oHy>?v)q--`!pmuBe96PxP0u*inQvyFW(llfv9 zXV1s*Jh`y2H%B3ZTA(AzpsQ?hb6_PyZ=c1?_B4fbl>G%!@ubJln=!)x0000#DY{xaiib^#X=YT4@yE_&2#eBulEdzjE`u&@G%2(&u{J-<}d(^uY4W_kMfEX z@!X)AR9F&FL?RJyJRUzvBoeqN{5kY`z3wcM0+du73~_0|*lac! z42Dw(Eg1o{Ash}P8jXrqN+1w`*XxDD;ShmPCZC7#4;wWbHoMvBl$=zF-`?*9j*Nbjd=v@OWt_BgKxP-3wd zy37?ATx&$b+&zRM!K;BD%Okw`Sb@&Pak8$KRX19jWZmC0&n*Ggv%j8nvSPDFw zEkV65AGOoBQ8kf`R|}Px*&INNS%osq9b{Fq2I(x6@xM>tg=vRLF?I`0rWzHyRc>}g~)F_Qn`A>)C_iwK%Z zrIJ;xR)UI1Y4Ozts|-Nho;q zVk9-bX)%F~!;63iu$Fk=VJn3~fmb5S@@)ZqjBT2{f`vT`b2}zxb0$o;EF@G3&BHK^ zc)`1kUzo^Qkk$?KFKHNBD?nP-MJ3b@&4fg;g5l2wMi^g?9qj+~@b;62o_U1_S1J`g z7m^UMg25FX1MJ5AQxAJ5F5WDt=$=-@JV-!LHA2vuxl9kN>PS8x??^AINH6LjF*#nbk4}=n3gfWp$kEX5IpHS zYiQ{@d7Nl&d$#+7-TckP&Q}N91e-C#5QQ<|d}62BjvZR2H60wE-&H<>}%WqH(_V;zPbB1rgSSSC(0? zWlQ#?N3UgnJ9m2C29w!SwoOo5_2Iq!<8vCyEoDoj@#oV($oJEg6Bj@;nD|2g8 s%L|>IZ381yx9RvPhV4J)*SeoEV4lyr#k*`nfWBbxboFyt=akR{0DpOPi2wiq diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png deleted file mode 100644 index d61648452284da1bc28b10385f95b5d2bf027901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)-tZUVHjYHp;RjQ0M0pRlXN=mLv{hk9Ebp9&~+Wj-T9IkpzWPWd#fZ)d=zV^~S`;LE*!&u-?g42^wwN&Xr1~#d5ifl_2*B1OoS}CDno^8a50ArfE8;stQF>AP54J@H~%T zFz84s;dO!QJKD36(~!QOg!t_^gfFcSKDU4yK0+Ypg$NT^mIYcQ6bk*3P(lBLh7Df_ zTu=2xC#+-_%)|{Cv8zz0t|0y4D5M`xAc{gwOKc`ou<*&VjUREFHs1qd<_xSkKeTBt zgyCi=@jj;&Ns^GsWWaIUl0Y2azcDlF@u{(P*!+EH;lnU~b|Lv{4|4Hdkh!qoQHiE$ zY#y>KFA0QEw=4Z|uV{0A^`Y=D}hB$GP&<$bi8q(u;p^0(my3Rz7fP}|# zGZ&#uor4@c3q9r|f?H6-UZmfgKx(iV(MQ`MPWB>iC~SxnN5H*zb*A3#zWwgu&c|}3 zn^g87H{pdeasl%Lhmab&jC?lES}7C?4BFDNA<}20hoY@w_IU%i*T;}}wh!589}7~7 z#Ug`-R~4j&+K_y4kW@X7qLr-)S5qVKU)tO;+kXJ++{vPI@{hVK|PhMVVx_`)vx~zUs}c9O-Ok{00000NkvXXu0mjf DS5_-g diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png deleted file mode 100644 index bf7bd1c9bfd78d689c73ba67cf914182933ee68c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)OOAS;jTeL{ZSdz-%)SMH9tDF;N4B6%j=d15J&5qy`F#vB?Ar zqS1nH@%ny_XSI*Y>) z1f5QYdmzT>YciP<3WehS<{GovEaLGv27>{*-7f0&I$yJ^L%ZGPv1YT$V|u;*+ZCWz ztHI~CDVsuy($SfR6-`N~K?9GTB#l%%0h7 z-q`K-y~E)+s8lMyTrPL8^_pUo)9G|SluG5pPqw6!LJB_PzyJUM07*qoM6N<$f^=yZ AYybcN diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png deleted file mode 100644 index f6b74cc40f82fc83e4dfa6e9647ccc1b34e6ed7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)Vb2f>2}Fa82O3m(Ob=t*sniin`NpInLyMJgI`saru@YOPfh zy4g0#G*cV!#N%;Gq9_VH9?v%kjS3Rb1j8^;C={$Gp=lbj z*(?%?geA!5^Pok%UauwjA)v4g2`HedDw4_Mk4hhBQt?e7YJ5(hcj|3dNu^TOPGnjB zTTsqd3GIZ=Bb`n=7no)dflv&K(lsWw?lH6T1Yht0F9qgIuzh}ym0%n<3d3EBWB*pg z+G!I0lbAEXyd>k|QNuwr4=KX1D+tLPv)j@C1=N4sA4NF9A>HcO3G47*Y6!+SrUH-7 z1hb;^#S=r|`aMh>J#dWruAEf}gcR(DRUC`ZUev&$Sbh0SgLiTXeeHEU<$_YV;9281 zym`igIE%Sm8DpDw7@71Tv^EB5xSdUR*0$Mqp+Wq8OoaZtOg52&)zZ;;M=7#C1Yd6x svjx>8ad4e2x|*xHHwRjcjs6zA0XLDUqKT6dS^xk507*qoM6N<$f*wetruo^Ag2=LamM1T#~4RmC^m`_ zs}H7d&XJ}mg+hU?tu0noRvyjI&o2SRAeYZFesYkts79I^jJ7!A7%6nJwq8O?iT55M z1OQ` zbL{!Cp5o*IRmE9PInMCSPjTwfT~J+EYkz}tjxY=fg5Yf6EQ@DG$0kMJ9h^&$W}9BU zP1oj2;?MWVkKIEl)r=Y;L^Cx2q|>!)qJJ8zE7-V*-Cf7V8_2#1c0N975t~+&QUpQJ z5(uo(-O_`%Rj@U@t>JYAgd!>L?0Idxtd#oW2gc!jinsAEva8|kF4#Ic**mmml_{d^$s}Q5Q)KCys4sfck5bP1SyeHwh2`A<@N&t2j0^lgHC_^(pAAPCNjwl+>AN%C4Ll>_8Hjda%9 oS~i=#*e)>KsPlg0=2)Qg6BCqJ=F8HdGXMYp07*qoM6N<$f@i)wr~m)} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png deleted file mode 100644 index a65bcb3e1e9613cd9e4950850db43d7025a5fdf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 zcmV+m1N8ifP)JNR5;6x zll@CmQ5eTZ^k*a#RQf}fVOdd`5NJh6S(>6Cf$wEW#f&JyAR#GAn9>Gml;nOf3WCDa z5({5&UB$(IF?G#$x4X@Ickg!Y-HU!Z_rzX=qAq-XI_LS^=lOCT0|0{#{kBkYDS7{3 zD`iu%E=`cDX_^#^#n$5SIQ|4Zhsk8>N|zXHXG@*41$i-7`Jr{8`3S_OEcmY|RF48wXkk?WpdVM4OePBSbfh z#4_=eXJg@3epx~gi>QbUmO}Bm(ENN3+@c?jWiKvSrm(o|W}Ud*?vy~fn1!V~Cl4kB zI-;c!8f~-v)jX82%EG($>?;KSD$64f2&4qQ#=Yyrcpy$57RAVuV#vKMP)0hT$r6m# zc^F^XaJ8R9Q|}x^NoJYIvYZkq-z}Tnj@UJK2l2H zG}p+VvtjP2Z%bsb$~7QLJ9#pC0dKi`ppOd^_V;ME6tdzC0PtV|r=@e@37O`%0k^=5^`%cf$eu00N17Ro!{^30krz>a%3j34C?*{Mt2^a4~ zK=P+Qq%|f;Tc&+9ps;@Mw`EE%rgs&#y=j6BUGg96oIqdwj9-fiy*N(|@o)eD002ov JPDHLkV1j#pUPb@_ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png deleted file mode 100644 index 23a37b891c2f5faa3b8128d45373ceab794ca609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)PK^TXt2QS_@2qt2T|9~baC-vaPn=ziepcfAwB$0!O2Q)E}1e8!q+9)KT5JVKU z7HNY}h##OS-BxWHWjD0wrPDeEfUClHs%Q6&2u@FTOJkKMQN|_Rlw6rQz$gPzqGNtj z#ruSeFeh835JJFiM6vp@6M5bXj%k7CMt%SIwfbF_fD-3*Os`9Ly_Q3WQ_SX33E{pX z9_WIeeTCGQ3wYALpBcK+P-iuw;3i&7xCua37k5# z`>c`M@sGeC7cdsdz`aE9lOz!hPholbyz%T85LYf6O*@SA+9&+^7k>+4M8$A8iNQq{ zQvn8k?-+dU`Z@gK0z$EtPV#+`^OH`R@cE-cuE&_!D)SZGxmQxeobP_Zwq zMEgi6ePN45N`|V1so0uE8^}1xw8s;VM%Ai@7} z2-&Cyvez_-O4?6uv{zTaj|YeYEk34i~K@`8YW2g{x* zc;7z3lItpVy_et{Z-ZZ)<@*%{l7Ao8mu@V7*gz<_1##mwW*%LEwCdzNsVLYx2*T-J z#HeQ*_a=R~KDdVNk$EVgAIRl$oQi_(`_IrdJciDpH|Xe{K-YsMtc!cRnFi$qzsr4z z5*$;ecov%3->1{YNy6-Gf(Ecy&_I$CjI#laeuE+S120^|Vjsf)W&i*H07*qoM6N<$ Ef)^4A_ab^avY?n0hpS-#mn_4{O$e%cm-@NH=3`90Wq+3`~HKArSdfX`&Z12 z(CY$VW-MNtXX4xy%yUeE?}*~0-|iByA@ZrwXgph4S*bhcc5{HB!DFVm_v}P*g7+Q~K}7K0lcp(^N@X>U zV`{ZpeIf${R6Hgg4FL^`X$Eu75k(PE6ycl$AW0Ic)#@rR7Z(7;V?i-dR1K935Jgcx zPfkwK>2wGokf!Nih^ARp6-6arYFG#(9Ta!x93nFEjoA==z(g?#sDg?Owk?Mg7K+>l zWYsf(<`#+$h9Sp6gFOg_dd+80SkUpk&xM7h0`Sov9W73spU;GP073|VfZ&Gd$J$*0<~TV5aPS|qWH57|VJz+d0000vYep8SaFV10Q$h+;hIUPX_=v5b}%>Tm<(&j1&5;I!55C)oN0s(P%ZB zP3Q#ahfpXKWF@S?jm4U#fv)QovMhrriclyNs6-G12#3R##4PSZ0VY(dRWJ;Lwuq{# zAW0Gwi$yA^R4RZ!;W+L`f&%x{=D^VK#BBWL4Ys{;*!A7Q;!=dN<&D8*GzGaF4`hV4 zDbY0{NrMX>ZqF=0((gR5-zL$kC*b)!fwu{Euru|XrG<$^n#@)7i_>rCmRxnDq>$Y%gJaCkRd|tE*a2x05Pe!I^e13o69#&RQZ36s0 zB=O|K2Yi(jsMqThn}9t?f5E-)L^naZ+db$&%M$!bCdm=jv7?t_lB?3&%Ltq(>ESw? c;MI421LCcoDG!2@;{X5v07*qoM6N<$f`UZt7XSbN diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png deleted file mode 100644 index 134b6693687b2fa5fe36d48a9c0b8001f937c741..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmV;50(Jd~P)VHAd+bMNh~)LLRqN>D)-jd9UvB%+hyKX5U|&4t0)fzgD-MPpQ$nHU%yoz=vI zMGb>1Xu!6Hw$NT~@Au<4P-+{9;Uw?&oj31uzH>xX0T7Xkz!(tn|Ed9-s_FqyReC13 z(ll)vW1O{Ck5ihay12Ob2ABc@RUI;zHpaMiyRDs0r>|D4rHw{ItJSJnYjt~jTbGuW z`X(~}?!&86q40R8<4zYw;$qi0^3ec=c&<&H;r`8W%H=Xymf^i;Wo6~<+}zx2UMzpC z*6MZN?(FMv`n|KO3(KFiUaucP0;Z!@LcUNa%8#vGK5aZ>wDgB0Gi=t*argWJcdlMQ z2#MpEX0wU+9&0U?N(F#OgpviU_Y{jYMsj65U3|PjwUOY}lUYj?MTiK_Il}NCVx-Eh zDx-TzMk7se+M#W_>?A1-x}ZXw3kkyz5kW)_hkjsi@RhKadN#H$Hq)$07*qoM6N<$f}lhwPXGV_ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png deleted file mode 100644 index c4eff0387d5888c638ba09473ba6d2369f7b56f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)HU2HvUSp%6 z*n}iP63IK?dpo;h@sj9~pcxo;VVTc-XLiP@DgefqE#NE=@oyUd-&HjLpsLIuSFXV-EMck)oQ(A`s%*^&wf0(rNiNHsU%=0Rw;WC z(kbc37l6fo`-0uR!pYkYv8U^3?nsh^@pw!K0TH3uYyx1_2>|JbXPmfskJ|1YAw9w! z9`N)1^Aesr;y5Nr5-ODn)oOL|CGi}f9!&iVwpK$khlIX10X$H6^A_stBJqvLhU$?V`QXqKme*s~gVDJ4A;LTs_e15jhc1;By a82kqHEPVYFAD2!50000JNR5;6( zlS@kiVHAe7MZY2;Xi-5)WxDDgv@tCUl*&p14T@Z~3ThM5LP4tuQfLu@EnG;nXc<8S z6&3BN?fx-cv-Kp6>HRiNTHE>$X( zD&=w+?GWC>?RLAGC6Yix;an~UmSt)tSf}1VS6N1N2ONORdD? zaj}w6DAZZdOud9Ep?M?{iQWbE5^9HLLZZF|1kdy0Tu4InEuboP9@nvbZ-P0n4AZTy zyMRIxRDmUE#LdqYuD=-Qz4N^bC`_#S7vcLn1M}{J(Wl3#c4VWczu&)AjUlh(11>gp>f`wv{KnjF%!aA*Jk N002ovPDHLkV1kkt*XsZP diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png deleted file mode 100644 index f59b7c4365fa1720af1aa04eb47167ddaa6eeed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)ZS(e|#C2>JN4>y}l*tQ*E7zP@R2CCJnkW?xa6bgk%(hgtZ z0=~d?U3i`+Mvi4!&~+WPT1^NX#{u6&QIx+DE(oR{&T5&-ovF?@wGw)P&AtpHZa|G%V*GUUqL@@!d4V$`8=##4)ytY959JG zdc&Kho)&AL70^i z!PEmeeDWCB-UbK(*4JST44^tV2z_J(dn~+vBMJT97_7rzFio=~XczIv?PQ5$v%u~y zu(bteXb5I1h2zCV{Jc2~V{{yzZipgsP6;k264$*#5q?GzCm|CPa9CKqm4b116h3Pu z?+%Cm52plC8|5P0@igf2GV1KkCfk{Zecu=G@VNrf>s%g9c5D%@cfxVb6$nY`1IW=4 zt10QqSps_2JLp0f3I0j0u>#qA;v!+T))KEbCg|mo3q0pG{OR}p0fPds8+K~d>Hq)$ M07*qoM6N<$g1S2e3jhEB diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png deleted file mode 100644 index 44084add79b9a0fc3354d16bbd4b4b5ff8095da7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R@9E+gqH(@-qA%AW0|7U8+xDRI z0k`B18}ImRw2g{jTGP$Pmx3yI6F_2s&$|`cJ!i0UN zB3H;=r{#{FwLaNVJ&hZl9+MTHGx1T^-A=Q0?hRb#8a~x50X%;`b6ik3cw=#XdxWy= zgrpBoDjpwP&g9<9h3x!k_B!?vuTJVkmIJ-U N;OXk;vd$@?2>|rNdMN+^ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png deleted file mode 100644 index 3a1441c9a12062a4bb3d706000d3ca14399aebca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)SCZIX8XZzY2l?gCw6LlgWJ5Avz#QX4|&mI8LN)w~J1vgL=KLAhlWz*=#m~gyvxa z&;iC6gb?aZvMdXxX`<0+D1hs_pqJ!wxqlEH;CJ)je~uL(gpi@v>!I0f_Kl=E(E+Tq z26na*9gribxx-Oft(HnstyXUUy!39&E-cI%J5Rsy;(PGZH{g{ty!HVC&yGPT3H8x# zw{^gBPW)O0FMoh{k%l<`1a|To_Wl&u&-GXm8izU|&<&utILc4wc6s@u1bmTz6x{qg zTw@7=FQRcg&r`h+gcR$*Jbv+*DPk7v)B@e0o2 z6IlBXW&8xh@9)YKiV~2>+z&XKd24JT55YWz&JtfvCg4r^~bLP79-yS@n$OW00000NkvXXu0mjf DStt2z diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png deleted file mode 100644 index e7708292adabf4821612bfca032cbd019c63180b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)KrcWDBzIw9XCtIF5G<@j zP(;CSqHxUrerI>~wKyloM4~t_Ofl@UFEj6$Bmm6p1aK6H{5zI_FOn(%k{CiRq?CT< zoV}Ey-7=-5nVFes;1m!f?EqZLIs4k$n%39XN4dPbtX{9DZnvvaiWV0aH9I>yf;2<< zHmo7WNC<&iE4ji-iKJpsBApDKiAiqWy8R$FV|M@E-RCB03vjWNGQZJxKCc-cSB=dq z#v3snoDMC=4<2BDgiZrv0Veh~mz(X=S@;fbe>CJO_5|oe2o3=wgfW(StLzI-qr&kc zhXEJ?9=`nWXzrUKL_p*Kr9u@95MU9EKqp2vi+%&1&gUn&>Ut_d3>wiyiAJg5G7j%G z#$sf%Kqau!AAHP&4Q?edl!FWqpT=C{D}$15WC#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R>*?YcqH(@;f-l!01CbW>s1Izr z3LkoHh<3E?TVANoG4CX|$empRCCS=R(U(hVJfm~E?IkDKRK&NP2|n`v>d(vV;W1uY zrFGVdwn;4b{qUtE`?GB`)E1ga&i2|7ncUL1b!KMq^QnT#_gn?_Z8(c`1Q~Vy3oL!N z$M8vHL&U1J3SJF!56azQU3B6>r|ZQ{U6)pC|tRy7$(5JQ<@7eB8yk=XcNf-aBIe#;8c_B$^=N z{-Iq&o3%O}V4~G($=zcP(LI|+6dq{?rby~MXwJQ*=!bOvl%?k zYY;jP^@M_k03MHL+-9?_3W5MN=moFW3xmPHU=-4Bw;62MrIhg_lwHEsv)V9U4x>+9cG2kIz8fWo`WyMMfz zdg-)p!<(hFR{VYSDJHEJn09O@#)%q0l?GUg9eS2~vKPUtd+=ak5lWLd-jI=;cjEf# zt$1;~?G!t@s+VLwL=P+Ks;E z!Jkh#NeohG;&02OFD7^EY zP!_PL2~i9VnPEW6Fz?O3dVF_U$duAL$=SU7&hNc@-drC5A4z=IgjR%B|D)?dOEaGb zuwod-$hPex$8oSoqK;@Z8u3EBfK@V2CKKqo?yA%2pjNA)(P%)HWf#)x^$?52W{|1b zPXOA$IfrSQV2q(qC_vLR)a!L9isAxjoeoJRlgE&G0Ga8krBVsGjZJJ-x6y1i(eL-q zwB%+o53no?l}ZJh#drAjlc6nhs3RTn;1IH+x;K#|X)!=#fM76)$IqT4^N}IF%aQ#o zTKS@*)|#L#jiCPi9~);c`x>TR|0{+9a?O5Exg#~V5W2C7G9nAAN(~f z2caqx&t~GhnK;qW3~&OuEke?%u(8Jxs_+ZVVz1^-uLrP95TahadGG$+(D&+%2QMF8 eFxE8s%l`oWamgLPAe&$S0000dKE@duOisOkyZ-5 zuwDqkAi_*y5o3Xrq7ieT<<3p#-R^dGySwea-CgZZZITBc?#1u+FtBuUCJUZe;~j-%Tu@ZpYB;$&ydfdZG#(j;(iB#^yRlqv#C*LO zXWXM0cpKKBlj#L6awm|;A38Zs3mg;sQZmCAZT8m@X{AlP6 zVI=SsiA16x=>2%^XV3U0y4~G+MNE!B{!#;~%L2l(14PX>EblXb{rnCSlVKe0dyf-O zuY#uOf}m&2xq80;4d3i|cuNw}U@sg3VKRU)>Os_1L3pl5mK*|?X3#a}K+EVZt&w?w zefXKP^ZqnW-3y9AhYJZ~r4m*!Z3OSz3d}2Q`nDM_f_u>L%8Cb}8`?bl)x?gwAy>zp z06y57kT6sry1g2l{|V%UW?)JwnbzUugbvpOF3=oZDo}spfs2EWKOH{_^59;ue!o^A z@e7dWS|QI`Ff-E$USJ`LqDF}zH%R}YOlMiv63A=qK^d}n!5_(fW%^k4U_D`_meIDi kNMKea>saR;>gt<+0gk_zsk5>Xc>n+a07*qoM6N<$f>Jg*?*IS* diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png deleted file mode 100644 index 1eb880947ddf3e745c29e8d9dc90f09c7e6e323c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png deleted file mode 100644 index ae8ecbf47672a874c0958d0d113a56162c2bd364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AX}P)hkjP zNW|QGv-YFNLN^qH@tJycPNG5ti6B7;r4mEr#lr@*T8*M85D`{ZR^BWwF23T<%MYIh zdC)S*p=|xk^!~H=+HSZ183~y8v4|mYmZxt&)5{{~>J`>E223Q5>T$=~mtA71q-jdG z+eJhOAyBW^0k9Gk1+rX8)zFx((CG^&tDY>6XaS~Fy!WJON|Gdujg5^~Vzt@o%BcYLiNiTQSD`zL^ociBz_>bDlpw3kriQ@Z`bVsGz-_6N>$&gTDiKDTKR^ z-hB*tHa^>!oD~5TK^0UK5rZ}RBm50Bv}S-yA%s=Ha5RYb{)!z2N&$&64gfhybBu8p lh~_|?8^bu;BRYt{<}Yrwd83Y=s?Goa002ovPDHLkV1l%3CP4rI diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png deleted file mode 100644 index 6ed2490ed1432d5d667a76235360824a1088e928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 zcmV<40wMj0P)JT{hN;C#tgf#9krG=I>5!<*aE1_(spcgF}<`n4i zJi-}^6UUeU4jUFwdCiVPDm%`Zx^UBa8J(mnR6wEgz^}o8;)M*Y(@l_!Kfv)}4+NuM zaPXE50z)r)9=D=SR|RIqfQ^j}Hu!fzMeQBo+@PZk1G8hOw|vBTvkx`HM)Xe9q3xao z@`p0`NO!2904FHSLA6E@Y-O6zH$DQzvq@aHsz}}<(!v(Z_+EodX%R&NZW75g+nENo zV0020rxE^;7d!067AN>6*+&YLp$9uH6F-=In`XC{Cn%+o|5)b&boEPr02w@|P*oGm QmjD0&07*qoM6N<$g78X0Q~&?~ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png deleted file mode 100644 index fecadd08afed92536be91ab12d8e37b6bf410d5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)wK%m(L+9IV|s|#(WRl-O^4GvaQsnHq|OstfO zIJ3}3<01}YGARE4m!7=)QisvlHUo!Qymx-@-t*p_129Ko-#pVI)6#!*kLj-AGXWNR zyA_{wKii_amK7^YT-v z6#plaNm#8`-kz@OvjIt^4%IN{@J3bR zRI}ME1Mv85p|%;RK>ViR>APPLB4;;BpCtqE@P+*7!G>I4UjNx~e>r3HA^tWCQ@S)l z{BslcSwL-CxQ&_ZZSv_g0Tu{yi*X){Mt|W7)lbE`SQxFP00000NkvXXu0mjf;)M*S diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png deleted file mode 100644 index fd4bbccdf1643f4ff5022fbc59b82546e259317e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e$|7P)_QM!1S$Bhw4w+iRuFWf;tfR6D%SMJrb+tx zC9R6{2>Ou6#juIy6u(I?|;&Owi$sRB4^20apB5xE2 z#B9XekY66S6lzfCL!eEQRgo0LokTA55@Y#%_wN!TXPw^Q4IIXsG~v#u_4t;x_HM16EQ@QRY+rut&97&UefsPmLrQ5P zBC2kcbux9L%2bJz$P$XV$*zSxb2e@6_3O#;&!FD<&hLjGn%~%en;7)djE^d6!t$lW7GyIOKlQ46hr`Z zjLNuRDP_53dNoN?wd&HMgL^m1DXFU<5dQsrceN>fSz00000)O9XRTN^$%%`*Fg>ryDtc(lF@?b>dE!20r+y z#Q*>(wbV5H`-E4Do={CJp7=ERhw15hgZi)?jRG88 zzVz(5;g?Td1izJyO33bhjg2Qc7FVY@f9!o)Gu?DII~vm-Dc?}3M!fsgjP?F(7`rgg z+xOk8XD)e?Zl=5+un`5!7kr?F=eq)K-5uqr%yU$1hLv){Vlm=)*5~`lwMciiXFu*g z)*Jkz6AF>#zb(Vx`Iv{bdGZHtlW)v(y5k^|xgSUc9%0}S20nrYrO}78ofk?bV!5)4 z=Ngz@+$9N1>>mA%IWx`Fqa240bWkiW;2TZgd8CZS0U}@mknC;!2;wi$eI@`h0y2JS`Eae0CW}q(2(%!m8 zWq$`PDU>LT1_y*bBv#P5<@q0@ttz$hIH}YMDvAigCc=y*)jY-VOpTd;A8@3t7Xh4r z0KTWOk;N2Ox4!&&^4B*no$WtTX!BXB)rg!y8dvGgKBQKLJNXRRp0}Bsjd1|LNQX~c zbC~fjrk2iL@4dYF*vt;}dFn(%h)n_-vzEIHMOKRkdF%3Lq|zBgKm_h>TEq!))nWjq zzn;B!?!(dQcHu$#=JF`cS&W~C`WHFW^B!~MI#k)>1Vk&eQy8P1O`J6V04{D@|7d6^ zyBABnh-d^H0FX&L07M||E0n_dp4v&Q%PSE9p#R#Hq)`5I_(B5CE#q dxjPz0{s-<+c#AC!i7@~G002ovPDHLkV1iPlpuqqD diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css deleted file mode 100644 index 32b6507..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/public/style.css +++ /dev/null @@ -1,141 +0,0 @@ -body { - margin: 0; - padding: 80px 100px; - font: 13px "Helvetica Neue", "Lucida Grande", "Arial"; - background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9)); - background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9); - background-repeat: no-repeat; - color: #555; - -webkit-font-smoothing: antialiased; -} -h1, h2, h3 { - margin: 0; - font-size: 22px; - color: #343434; -} -h1 em, h2 em { - padding: 0 5px; - font-weight: normal; -} -h1 { - font-size: 60px; -} -h2 { - margin-top: 10px; -} -h3 { - margin: 5px 0 10px 0; - padding-bottom: 5px; - border-bottom: 1px solid #eee; - font-size: 18px; -} -ul { - margin: 0; - padding: 0; -} -ul li { - margin: 5px 0; - padding: 3px 8px; - list-style: none; -} -ul li:hover { - cursor: pointer; - color: #2e2e2e; -} -ul li .path { - padding-left: 5px; - font-weight: bold; -} -ul li .line { - padding-right: 5px; - font-style: italic; -} -ul li:first-child .path { - padding-left: 0; -} -p { - line-height: 1.5; -} -a { - color: #555; - text-decoration: none; -} -a:hover { - color: #303030; -} -#stacktrace { - margin-top: 15px; -} -.directory h1 { - margin-bottom: 15px; - font-size: 18px; -} -ul#files { - width: 100%; - height: 500px; -} -ul#files li { - padding: 0; -} -ul#files li img { - position: absolute; - top: 5px; - left: 5px; -} -ul#files li a { - position: relative; - display: block; - margin: 1px; - width: 30%; - height: 25px; - line-height: 25px; - text-indent: 8px; - float: left; - border: 1px solid transparent; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - overflow: hidden; - text-overflow: ellipsis; -} -ul#files li a.icon { - text-indent: 25px; -} -ul#files li a:focus, -ul#files li a:hover { - outline: none; - background: rgba(255,255,255,0.65); - border: 1px solid #ececec; -} -ul#files li a.highlight { - -webkit-transition: background .4s ease-in-out; - background: #ffff4f; - border-color: #E9DC51; -} -#search { - display: block; - position: fixed; - top: 20px; - right: 20px; - width: 90px; - -webkit-transition: width ease 0.2s, opacity ease 0.4s; - -moz-transition: width ease 0.2s, opacity ease 0.4s; - -webkit-border-radius: 32px; - -moz-border-radius: 32px; - -webkit-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); - -moz-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); - -webkit-font-smoothing: antialiased; - text-align: left; - font: 13px "Helvetica Neue", Arial, sans-serif; - padding: 4px 10px; - border: none; - background: transparent; - margin-bottom: 0; - outline: none; - opacity: 0.7; - color: #888; -} -#search:focus { - width: 120px; - opacity: 1.0; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js deleted file mode 100644 index 2c03c28..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/lib/utils.js +++ /dev/null @@ -1,388 +0,0 @@ - -/*! - * Connect - utils - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var http = require('http') - , crypto = require('crypto') - , parse = require('url').parse - , signature = require('cookie-signature'); - -/** - * Return `true` if the request has a body, otherwise return `false`. - * - * @param {IncomingMessage} req - * @return {Boolean} - * @api private - */ - -exports.hasBody = function(req) { - return 'transfer-encoding' in req.headers || 'content-length' in req.headers; -}; - -/** - * Extract the mime type from the given request's - * _Content-Type_ header. - * - * @param {IncomingMessage} req - * @return {String} - * @api private - */ - -exports.mime = function(req) { - var str = req.headers['content-type'] || ''; - return str.split(';')[0]; -}; - -/** - * Generate an `Error` from the given status `code` - * and optional `msg`. - * - * @param {Number} code - * @param {String} msg - * @return {Error} - * @api private - */ - -exports.error = function(code, msg){ - var err = new Error(msg || http.STATUS_CODES[code]); - err.status = code; - return err; -}; - -/** - * Return md5 hash of the given string and optional encoding, - * defaulting to hex. - * - * utils.md5('wahoo'); - * // => "e493298061761236c96b02ea6aa8a2ad" - * - * @param {String} str - * @param {String} encoding - * @return {String} - * @api private - */ - -exports.md5 = function(str, encoding){ - return crypto - .createHash('md5') - .update(str) - .digest(encoding || 'hex'); -}; - -/** - * Merge object b with object a. - * - * var a = { foo: 'bar' } - * , b = { bar: 'baz' }; - * - * utils.merge(a, b); - * // => { foo: 'bar', bar: 'baz' } - * - * @param {Object} a - * @param {Object} b - * @return {Object} - * @api private - */ - -exports.merge = function(a, b){ - if (a && b) { - for (var key in b) { - a[key] = b[key]; - } - } - return a; -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - - -/** - * Return a unique identifier with the given `len`. - * - * utils.uid(10); - * // => "FDaS435D2z" - * - * @param {Number} len - * @return {String} - * @api private - */ - -exports.uid = function(len) { - return crypto.randomBytes(Math.ceil(len * 3 / 4)) - .toString('base64') - .slice(0, len) - .replace(/\//g, '-') - .replace(/\+/g, '_'); -}; - -/** - * Sign the given `val` with `secret`. - * - * @param {String} val - * @param {String} secret - * @return {String} - * @api private - */ - -exports.sign = function(val, secret){ - console.warn('do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature') - return val + '.' + crypto - .createHmac('sha256', secret) - .update(val) - .digest('base64') - .replace(/=+$/, ''); -}; - -/** - * Unsign and decode the given `val` with `secret`, - * returning `false` if the signature is invalid. - * - * @param {String} val - * @param {String} secret - * @return {String|Boolean} - * @api private - */ - -exports.unsign = function(val, secret){ - console.warn('do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature') - var str = val.slice(0, val.lastIndexOf('.')); - return exports.sign(str, secret) == val - ? str - : false; -}; - -/** - * Parse signed cookies, returning an object - * containing the decoded key/value pairs, - * while removing the signed key from `obj`. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -exports.parseSignedCookies = function(obj, secret){ - var ret = {}; - Object.keys(obj).forEach(function(key){ - var val = obj[key]; - if (0 == val.indexOf('s:')) { - val = signature.unsign(val.slice(2), secret); - if (val) { - ret[key] = val; - delete obj[key]; - } - } - }); - return ret; -}; - -/** - * Parse a signed cookie string, return the decoded value - * - * @param {String} str signed cookie string - * @param {String} secret - * @return {String} decoded value - * @api private - */ - -exports.parseSignedCookie = function(str, secret){ - return 0 == str.indexOf('s:') - ? signature.unsign(str.slice(2), secret) - : str; -}; - -/** - * Parse JSON cookies. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -exports.parseJSONCookies = function(obj){ - Object.keys(obj).forEach(function(key){ - var val = obj[key]; - var res = exports.parseJSONCookie(val); - if (res) obj[key] = res; - }); - return obj; -}; - -/** - * Parse JSON cookie string - * - * @param {String} str - * @return {Object} Parsed object or null if not json cookie - * @api private - */ - -exports.parseJSONCookie = function(str) { - if (0 == str.indexOf('j:')) { - try { - return JSON.parse(str.slice(2)); - } catch (err) { - // no op - } - } -}; - -/** - * Pause `data` and `end` events on the given `obj`. - * Middleware performing async tasks _should_ utilize - * this utility (or similar), to re-emit data once - * the async operation has completed, otherwise these - * events may be lost. - * - * var pause = utils.pause(req); - * fs.readFile(path, function(){ - * next(); - * pause.resume(); - * }); - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -exports.pause = require('pause'); - -/** - * Strip `Content-*` headers from `res`. - * - * @param {ServerResponse} res - * @api private - */ - -exports.removeContentHeaders = function(res){ - Object.keys(res._headers).forEach(function(field){ - if (0 == field.indexOf('content')) { - res.removeHeader(field); - } - }); -}; - -/** - * Check if `req` is a conditional GET request. - * - * @param {IncomingMessage} req - * @return {Boolean} - * @api private - */ - -exports.conditionalGET = function(req) { - return req.headers['if-modified-since'] - || req.headers['if-none-match']; -}; - -/** - * Respond with 401 "Unauthorized". - * - * @param {ServerResponse} res - * @param {String} realm - * @api private - */ - -exports.unauthorized = function(res, realm) { - res.statusCode = 401; - res.setHeader('WWW-Authenticate', 'Basic realm="' + realm + '"'); - res.end('Unauthorized'); -}; - -/** - * Respond with 304 "Not Modified". - * - * @param {ServerResponse} res - * @param {Object} headers - * @api private - */ - -exports.notModified = function(res) { - exports.removeContentHeaders(res); - res.statusCode = 304; - res.end(); -}; - -/** - * Return an ETag in the form of `"-"` - * from the given `stat`. - * - * @param {Object} stat - * @return {String} - * @api private - */ - -exports.etag = function(stat) { - return '"' + stat.size + '-' + Number(stat.mtime) + '"'; -}; - -/** - * Parse the given Cache-Control `str`. - * - * @param {String} str - * @return {Object} - * @api private - */ - -exports.parseCacheControl = function(str){ - var directives = str.split(',') - , obj = {}; - - for(var i = 0, len = directives.length; i < len; i++) { - var parts = directives[i].split('=') - , key = parts.shift().trim() - , val = parseInt(parts.shift(), 10); - - obj[key] = isNaN(val) ? true : val; - } - - return obj; -}; - -/** - * Parse the `req` url with memoization. - * - * @param {ServerRequest} req - * @return {Object} - * @api private - */ - -exports.parseUrl = function(req){ - var parsed = req._parsedUrl; - if (parsed && parsed.href == req.url) { - return parsed; - } else { - return req._parsedUrl = parse(req.url); - } -}; - -/** - * Parse byte `size` string. - * - * @param {String} size - * @return {Number} - * @api private - */ - -exports.parseBytes = require('bytes'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore deleted file mode 100644 index b512c09..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml deleted file mode 100644 index 7a902e8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 -notifications: - email: - recipients: - - brianloveswords@gmail.com \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md deleted file mode 100644 index 4ad5d64..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# buffer-crc32 - -[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32) - -crc32 that works with binary data and fancy character sets, outputs -buffer, signed or unsigned data and has tests. - -Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix - -# install -``` -npm install buffer-crc32 -``` - -# example -```js -var crc32 = require('buffer-crc32'); -// works with buffers -var buf = Buffer([[0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00]) -crc32(buf) // -> - -// has convenience methods for getting signed or unsigned ints -crc32.signed(buf) // -> -1805997238 -crc32.unsigned(buf) // -> 2488970058 - -// will cast to buffer if given a string, so you can -// directly use foreign characters safely -crc32('自動販売機') // -> -``` - -# tests -This was tested against the output of zlib's crc32 method. You can run -the tests with`npm test` (requires tap) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js deleted file mode 100644 index ab0e19e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/index.js +++ /dev/null @@ -1,84 +0,0 @@ -var Buffer = require('buffer').Buffer; - -var CRC_TABLE = [ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, - 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, - 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, - 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, - 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, - 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, - 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, - 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, - 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, - 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, - 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, - 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, - 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, - 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, - 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, - 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, - 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, - 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, - 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, - 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, - 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, - 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, - 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, - 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, - 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, - 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, - 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, - 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, - 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, - 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, - 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, - 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, - 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, - 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, - 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, - 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, - 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, - 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, - 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, - 0x2d02ef8d -]; - -function bufferizeInt(num) { - var tmp = Buffer(4); - tmp.writeInt32BE(num, 0); - return tmp; -} - -function _crc32(buf) { - if (!Buffer.isBuffer(buf)) - buf = Buffer(buf); - var crc = 0xffffffff; - for (var n = 0; n < buf.length; n++) { - crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8); - } - return (crc ^ 0xffffffff); -} - -function crc32() { - return bufferizeInt(_crc32.apply(null, arguments)); -} -crc32.signed = function () { - return _crc32.apply(null, arguments); -}; -crc32.unsigned = function () { - return crc32.apply(null, arguments).readUInt32BE(0); -}; - -module.exports = crc32; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json deleted file mode 100644 index 82f79e0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "author": { - "name": "Brian J. Brennan", - "email": "brianloveswords@gmail.com", - "url": "http://bjb.io" - }, - "name": "buffer-crc32", - "description": "A pure javascript CRC32 algorithm that plays nice with binary data", - "version": "0.1.1", - "homepage": "https://github.com/brianloveswords/buffer-crc32", - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/buffer-crc32.git" - }, - "main": "index.js", - "scripts": { - "test": "./node_modules/.bin/tap tests/*.test.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.2.5" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([[0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> \n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('自動販売機') // -> \n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n", - "readmeFilename": "README.md", - "_id": "buffer-crc32@0.1.1", - "_from": "buffer-crc32@0.1.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js deleted file mode 100644 index d4767e3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/buffer-crc32/tests/crc.test.js +++ /dev/null @@ -1,52 +0,0 @@ -var crc32 = require('..'); -var test = require('tap').test; - -test('simple crc32 is no problem', function (t) { - var input = Buffer('hey sup bros'); - var expected = Buffer([0x47, 0xfa, 0x55, 0x70]); - t.same(crc32(input), expected); - t.end(); -}); - -test('another simple one', function (t) { - var input = Buffer('IEND'); - var expected = Buffer([0xae, 0x42, 0x60, 0x82]); - t.same(crc32(input), expected); - t.end(); -}); - -test('slightly more complex', function (t) { - var input = Buffer([0x00, 0x00, 0x00]); - var expected = Buffer([0xff, 0x41, 0xd9, 0x12]); - t.same(crc32(input), expected); - t.end(); -}); - -test('complex crc32 gets calculated like a champ', function (t) { - var input = Buffer('शीर्षक'); - var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); - t.same(crc32(input), expected); - t.end(); -}); - -test('casts to buffer if necessary', function (t) { - var input = 'शीर्षक'; - var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); - t.same(crc32(input), expected); - t.end(); -}); - -test('can do unsigned', function (t) { - var input = 'ham sandwich'; - var expected = -1891873021; - t.same(crc32.signed(input), expected); - t.end(); -}); - -test('can do signed', function (t) { - var input = 'bear sandwich'; - var expected = 3711466352; - t.same(crc32.unsigned(input), expected); - t.end(); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md deleted file mode 100644 index 1332808..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/History.md +++ /dev/null @@ -1,10 +0,0 @@ - -0.2.0 / 2012-10-28 -================== - - * bytes(200).should.eql('200b') - -0.1.0 / 2012-07-04 -================== - - * add bytes to string conversion [yields] diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile deleted file mode 100644 index 8e8640f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md deleted file mode 100644 index 9325d5b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# node-bytes - - Byte string parser / formatter. - -## Example: - -```js -bytes('1kb') -// => 1024 - -bytes('2mb') -// => 2097152 - -bytes('1gb') -// => 1073741824 - -bytes(1073741824) -// => 1gb -``` - -## Installation - -``` -$ npm install bytes -$ component install visionmedia/bytes.js -``` - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json deleted file mode 100644 index 76a6057..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/component.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "bytes", - "description": "byte size string parser / serializer", - "keywords": ["bytes", "utility"], - "version": "0.1.0", - "scripts": ["index.js"] -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js deleted file mode 100644 index 70b2e01..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/index.js +++ /dev/null @@ -1,39 +0,0 @@ - -/** - * Parse byte `size` string. - * - * @param {String} size - * @return {Number} - * @api public - */ - -module.exports = function(size) { - if ('number' == typeof size) return convert(size); - var parts = size.match(/^(\d+(?:\.\d+)?) *(kb|mb|gb)$/) - , n = parseFloat(parts[1]) - , type = parts[2]; - - var map = { - kb: 1 << 10 - , mb: 1 << 20 - , gb: 1 << 30 - }; - - return map[type] * n; -}; - -/** - * convert bytes into string. - * - * @param {Number} b - bytes to convert - * @return {String} - * @api public - */ - -function convert (b) { - var gb = 1 << 30, mb = 1 << 20, kb = 1 << 10; - if (b >= gb) return (Math.round(b / gb * 100) / 100) + 'gb'; - if (b >= mb) return (Math.round(b / mb * 100) / 100) + 'mb'; - if (b >= kb) return (Math.round(b / kb * 100) / 100) + 'kb'; - return b + 'b'; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json deleted file mode 100644 index 0db9bc9..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/bytes/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "bytes", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "byte size string parser / serializer", - "version": "0.2.0", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "_id": "bytes@0.2.0", - "_from": "bytes@0.2.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore deleted file mode 100644 index 4fbabb3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -/test/tmp/ -*.upload -*.un~ -*.http diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile deleted file mode 100644 index 8945872..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -build: npm test - -npm: - npm install . - -clean: - rm test/tmp/* - -.PHONY: test clean build diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md deleted file mode 100644 index a5ca104..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +++ /dev/null @@ -1,311 +0,0 @@ -# Formidable - -[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable) - -## Purpose - -A node.js module for parsing form data, especially file uploads. - -## Current status - -This module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading -and encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from -a large variety of clients and is considered production-ready. - -## Features - -* Fast (~500mb/sec), non-buffering multipart parser -* Automatically writing file uploads to disk -* Low memory footprint -* Graceful error handling -* Very high test coverage - -## Changelog - -### v1.0.9 - -* Emit progress when content length header parsed (Tim Koschützki) -* Fix Readme syntax due to GitHub changes (goob) -* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara) - -### v1.0.8 - -* Strip potentially unsafe characters when using `keepExtensions: true`. -* Switch to utest / urun for testing -* Add travis build - -### v1.0.7 - -* Remove file from package that was causing problems when installing on windows. (#102) -* Fix typos in Readme (Jason Davies). - -### v1.0.6 - -* Do not default to the default to the field name for file uploads where - filename="". - -### v1.0.5 - -* Support filename="" in multipart parts -* Explain unexpected end() errors in parser better - -**Note:** Starting with this version, formidable emits 'file' events for empty -file input fields. Previously those were incorrectly emitted as regular file -input fields with value = "". - -### v1.0.4 - -* Detect a good default tmp directory regardless of platform. (#88) - -### v1.0.3 - -* Fix problems with utf8 characters (#84) / semicolons in filenames (#58) -* Small performance improvements -* New test suite and fixture system - -### v1.0.2 - -* Exclude node\_modules folder from git -* Implement new `'aborted'` event -* Fix files in example folder to work with recent node versions -* Make gently a devDependency - -[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2) - -### v1.0.1 - -* Fix package.json to refer to proper main directory. (#68, Dean Landolt) - -[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1) - -### v1.0.0 - -* Add support for multipart boundaries that are quoted strings. (Jeff Craig) - -This marks the beginning of development on version 2.0 which will include -several architectural improvements. - -[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0) - -### v0.9.11 - -* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki) -* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class - -**Important:** The old property names of the File class will be removed in a -future release. - -[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11) - -### Older releases - -These releases were done before starting to maintain the above Changelog: - -* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10) -* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9) -* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8) -* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7) -* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6) -* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5) -* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4) -* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3) -* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2) -* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0) - -## Installation - -Via [npm](http://github.com/isaacs/npm): - - npm install formidable@latest - -Manually: - - git clone git://github.com/felixge/node-formidable.git formidable - vim my.js - # var formidable = require('./formidable'); - -Note: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library. - -## Example - -Parse an incoming file upload. - - var formidable = require('formidable'), - http = require('http'), - - util = require('util'); - - http.createServer(function(req, res) { - if (req.url == '/upload' && req.method.toLowerCase() == 'post') { - // parse a file upload - var form = new formidable.IncomingForm(); - form.parse(req, function(err, fields, files) { - res.writeHead(200, {'content-type': 'text/plain'}); - res.write('received upload:\n\n'); - res.end(util.inspect({fields: fields, files: files})); - }); - return; - } - - // show a file upload form - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
      '+ - '
      '+ - '
      '+ - ''+ - '
      ' - ); - }).listen(80); - -## API - -### formidable.IncomingForm - -__new formidable.IncomingForm()__ - -Creates a new incoming form. - -__incomingForm.encoding = 'utf-8'__ - -The encoding to use for incoming form fields. - -__incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()__ - -The directory for placing file uploads in. You can move them later on using -`fs.rename()`. The default directory is picked at module load time depending on -the first existing directory from those listed above. - -__incomingForm.keepExtensions = false__ - -If you want the files written to `incomingForm.uploadDir` to include the extensions of the original files, set this property to `true`. - -__incomingForm.type__ - -Either 'multipart' or 'urlencoded' depending on the incoming request. - -__incomingForm.maxFieldsSize = 2 * 1024 * 1024__ - -Limits the amount of memory a field (not file) can allocate in bytes. -If this value is exceeded, an `'error'` event is emitted. The default -size is 2MB. - -__incomingForm.hash = false__ - -If you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`. - -__incomingForm.bytesReceived__ - -The amount of bytes received for this form so far. - -__incomingForm.bytesExpected__ - -The expected number of bytes in this form. - -__incomingForm.parse(request, [cb])__ - -Parses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback: - - incomingForm.parse(req, function(err, fields, files) { - // ... - }); - -__incomingForm.onPart(part)__ - -You may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing. - - incomingForm.onPart = function(part) { - part.addListener('data', function() { - // ... - }); - } - -If you want to use formidable to only handle certain parts for you, you can do so: - - incomingForm.onPart = function(part) { - if (!part.filename) { - // let formidable handle all non-file parts - incomingForm.handlePart(part); - } - } - -Check the code in this method for further inspiration. - -__Event: 'progress' (bytesReceived, bytesExpected)__ - -Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar. - -__Event: 'field' (name, value)__ - -Emitted whenever a field / value pair has been received. - -__Event: 'fileBegin' (name, file)__ - -Emitted whenever a new file is detected in the upload stream. Use this even if -you want to stream the file to somewhere else while buffering the upload on -the file system. - -__Event: 'file' (name, file)__ - -Emitted whenever a field / file pair has been received. `file` is an instance of `File`. - -__Event: 'error' (err)__ - -Emitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events. - -__Event: 'aborted'__ - -Emitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core). - -__Event: 'end' ()__ - -Emitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response. - -### formidable.File - -__file.size = 0__ - -The size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet. - -__file.path = null__ - -The path this file is being written to. You can modify this in the `'fileBegin'` event in -case you are unhappy with the way formidable generates a temporary path for your files. - -__file.name = null__ - -The name this file had according to the uploading client. - -__file.type = null__ - -The mime type of this file, according to the uploading client. - -__file.lastModifiedDate = null__ - -A date object (or `null`) containing the time this file was last written to. Mostly -here for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/). - -__file.hash = null__ - -If hash calculation was set, you can read the hex digest out of this var. - -## License - -Formidable is licensed under the MIT license. - -## Ports - -* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable - -## Credits - -* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO deleted file mode 100644 index e1107f2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/TODO +++ /dev/null @@ -1,3 +0,0 @@ -- Better bufferMaxSize handling approach -- Add tests for JSON parser pull request and merge it -- Implement QuerystringParser the same way as MultipartParser diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js deleted file mode 100644 index bff41f1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +++ /dev/null @@ -1,70 +0,0 @@ -require('../test/common'); -var multipartParser = require('../lib/multipart_parser'), - MultipartParser = multipartParser.MultipartParser, - parser = new MultipartParser(), - Buffer = require('buffer').Buffer, - boundary = '-----------------------------168072824752491622650073', - mb = 100, - buffer = createMultipartBuffer(boundary, mb * 1024 * 1024), - callbacks = - { partBegin: -1, - partEnd: -1, - headerField: -1, - headerValue: -1, - partData: -1, - end: -1, - }; - - -parser.initWithBoundary(boundary); -parser.onHeaderField = function() { - callbacks.headerField++; -}; - -parser.onHeaderValue = function() { - callbacks.headerValue++; -}; - -parser.onPartBegin = function() { - callbacks.partBegin++; -}; - -parser.onPartData = function() { - callbacks.partData++; -}; - -parser.onPartEnd = function() { - callbacks.partEnd++; -}; - -parser.onEnd = function() { - callbacks.end++; -}; - -var start = +new Date(), - nparsed = parser.write(buffer), - duration = +new Date - start, - mbPerSec = (mb / (duration / 1000)).toFixed(2); - -console.log(mbPerSec+' mb/sec'); - -assert.equal(nparsed, buffer.length); - -function createMultipartBuffer(boundary, size) { - var head = - '--'+boundary+'\r\n' - + 'content-disposition: form-data; name="field1"\r\n' - + '\r\n' - , tail = '\r\n--'+boundary+'--\r\n' - , buffer = new Buffer(size); - - buffer.write(head, 'ascii', 0); - buffer.write(tail, 'ascii', buffer.length - tail.length); - return buffer; -} - -process.on('exit', function() { - for (var k in callbacks) { - assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]); - } -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js deleted file mode 100644 index f6c15a6..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +++ /dev/null @@ -1,43 +0,0 @@ -require('../test/common'); -var http = require('http'), - util = require('util'), - formidable = require('formidable'), - server; - -server = http.createServer(function(req, res) { - if (req.url == '/') { - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
      '+ - '
      '+ - '
      '+ - ''+ - '
      ' - ); - } else if (req.url == '/post') { - var form = new formidable.IncomingForm(), - fields = []; - - form - .on('error', function(err) { - res.writeHead(200, {'content-type': 'text/plain'}); - res.end('error:\n\n'+util.inspect(err)); - }) - .on('field', function(field, value) { - console.log(field, value); - fields.push([field, value]); - }) - .on('end', function() { - console.log('-> post done'); - res.writeHead(200, {'content-type': 'text/plain'}); - res.end('received fields:\n\n '+util.inspect(fields)); - }); - form.parse(req); - } else { - res.writeHead(404, {'content-type': 'text/plain'}); - res.end('404'); - } -}); -server.listen(TEST_PORT); - -console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js deleted file mode 100644 index 050cdd9..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +++ /dev/null @@ -1,48 +0,0 @@ -require('../test/common'); -var http = require('http'), - util = require('util'), - formidable = require('formidable'), - server; - -server = http.createServer(function(req, res) { - if (req.url == '/') { - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
      '+ - '
      '+ - '
      '+ - ''+ - '
      ' - ); - } else if (req.url == '/upload') { - var form = new formidable.IncomingForm(), - files = [], - fields = []; - - form.uploadDir = TEST_TMP; - - form - .on('field', function(field, value) { - console.log(field, value); - fields.push([field, value]); - }) - .on('file', function(field, file) { - console.log(field, file); - files.push([field, file]); - }) - .on('end', function() { - console.log('-> upload done'); - res.writeHead(200, {'content-type': 'text/plain'}); - res.write('received fields:\n\n '+util.inspect(fields)); - res.write('\n\n'); - res.end('received files:\n\n '+util.inspect(files)); - }); - form.parse(req); - } else { - res.writeHead(404, {'content-type': 'text/plain'}); - res.end('404'); - } -}); -server.listen(TEST_PORT); - -console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js deleted file mode 100644 index be41032..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/formidable'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js deleted file mode 100644 index dad8d5f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +++ /dev/null @@ -1,73 +0,0 @@ -if (global.GENTLY) require = GENTLY.hijack(require); - -var util = require('./util'), - WriteStream = require('fs').WriteStream, - EventEmitter = require('events').EventEmitter, - crypto = require('crypto'); - -function File(properties) { - EventEmitter.call(this); - - this.size = 0; - this.path = null; - this.name = null; - this.type = null; - this.hash = null; - this.lastModifiedDate = null; - - this._writeStream = null; - - for (var key in properties) { - this[key] = properties[key]; - } - - if(typeof this.hash === 'string') { - this.hash = crypto.createHash(properties.hash); - } - - this._backwardsCompatibility(); -} -module.exports = File; -util.inherits(File, EventEmitter); - -// @todo Next release: Show error messages when accessing these -File.prototype._backwardsCompatibility = function() { - var self = this; - this.__defineGetter__('length', function() { - return self.size; - }); - this.__defineGetter__('filename', function() { - return self.name; - }); - this.__defineGetter__('mime', function() { - return self.type; - }); -}; - -File.prototype.open = function() { - this._writeStream = new WriteStream(this.path); -}; - -File.prototype.write = function(buffer, cb) { - var self = this; - this._writeStream.write(buffer, function() { - if(self.hash) { - self.hash.update(buffer); - } - self.lastModifiedDate = new Date(); - self.size += buffer.length; - self.emit('progress', self.size); - cb(); - }); -}; - -File.prototype.end = function(cb) { - var self = this; - this._writeStream.end(function() { - if(self.hash) { - self.hash = self.hash.digest('hex'); - } - self.emit('end'); - cb(); - }); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js deleted file mode 100644 index 060eac2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +++ /dev/null @@ -1,384 +0,0 @@ -if (global.GENTLY) require = GENTLY.hijack(require); - -var fs = require('fs'); -var util = require('./util'), - path = require('path'), - File = require('./file'), - MultipartParser = require('./multipart_parser').MultipartParser, - QuerystringParser = require('./querystring_parser').QuerystringParser, - StringDecoder = require('string_decoder').StringDecoder, - EventEmitter = require('events').EventEmitter, - Stream = require('stream').Stream; - -function IncomingForm(opts) { - if (!(this instanceof IncomingForm)) return new IncomingForm; - EventEmitter.call(this); - - opts=opts||{}; - - this.error = null; - this.ended = false; - - this.maxFieldsSize = opts.maxFieldsSize || 2 * 1024 * 1024; - this.keepExtensions = opts.keepExtensions || false; - this.uploadDir = opts.uploadDir || IncomingForm.UPLOAD_DIR; - this.encoding = opts.encoding || 'utf-8'; - this.headers = null; - this.type = null; - this.hash = false; - - this.bytesReceived = null; - this.bytesExpected = null; - - this._parser = null; - this._flushing = 0; - this._fieldsSize = 0; -}; -util.inherits(IncomingForm, EventEmitter); -exports.IncomingForm = IncomingForm; - -IncomingForm.UPLOAD_DIR = (function() { - var dirs = [process.env.TMP, '/tmp', process.cwd()]; - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var isDirectory = false; - - try { - isDirectory = fs.statSync(dir).isDirectory(); - } catch (e) {} - - if (isDirectory) return dir; - } -})(); - -IncomingForm.prototype.parse = function(req, cb) { - this.pause = function() { - try { - req.pause(); - } catch (err) { - // the stream was destroyed - if (!this.ended) { - // before it was completed, crash & burn - this._error(err); - } - return false; - } - return true; - }; - - this.resume = function() { - try { - req.resume(); - } catch (err) { - // the stream was destroyed - if (!this.ended) { - // before it was completed, crash & burn - this._error(err); - } - return false; - } - - return true; - }; - - this.writeHeaders(req.headers); - - var self = this; - req - .on('error', function(err) { - self._error(err); - }) - .on('aborted', function() { - self.emit('aborted'); - }) - .on('data', function(buffer) { - self.write(buffer); - }) - .on('end', function() { - if (self.error) { - return; - } - - var err = self._parser.end(); - if (err) { - self._error(err); - } - }); - - if (cb) { - var fields = {}, files = {}; - this - .on('field', function(name, value) { - fields[name] = value; - }) - .on('file', function(name, file) { - files[name] = file; - }) - .on('error', function(err) { - cb(err, fields, files); - }) - .on('end', function() { - cb(null, fields, files); - }); - } - - return this; -}; - -IncomingForm.prototype.writeHeaders = function(headers) { - this.headers = headers; - this._parseContentLength(); - this._parseContentType(); -}; - -IncomingForm.prototype.write = function(buffer) { - if (!this._parser) { - this._error(new Error('unintialized parser')); - return; - } - - this.bytesReceived += buffer.length; - this.emit('progress', this.bytesReceived, this.bytesExpected); - - var bytesParsed = this._parser.write(buffer); - if (bytesParsed !== buffer.length) { - this._error(new Error('parser error, '+bytesParsed+' of '+buffer.length+' bytes parsed')); - } - - return bytesParsed; -}; - -IncomingForm.prototype.pause = function() { - // this does nothing, unless overwritten in IncomingForm.parse - return false; -}; - -IncomingForm.prototype.resume = function() { - // this does nothing, unless overwritten in IncomingForm.parse - return false; -}; - -IncomingForm.prototype.onPart = function(part) { - // this method can be overwritten by the user - this.handlePart(part); -}; - -IncomingForm.prototype.handlePart = function(part) { - var self = this; - - if (part.filename === undefined) { - var value = '' - , decoder = new StringDecoder(this.encoding); - - part.on('data', function(buffer) { - self._fieldsSize += buffer.length; - if (self._fieldsSize > self.maxFieldsSize) { - self._error(new Error('maxFieldsSize exceeded, received '+self._fieldsSize+' bytes of field data')); - return; - } - value += decoder.write(buffer); - }); - - part.on('end', function() { - self.emit('field', part.name, value); - }); - return; - } - - this._flushing++; - - var file = new File({ - path: this._uploadPath(part.filename), - name: part.filename, - type: part.mime, - hash: self.hash - }); - - this.emit('fileBegin', part.name, file); - - file.open(); - - part.on('data', function(buffer) { - self.pause(); - file.write(buffer, function() { - self.resume(); - }); - }); - - part.on('end', function() { - file.end(function() { - self._flushing--; - self.emit('file', part.name, file); - self._maybeEnd(); - }); - }); -}; - -IncomingForm.prototype._parseContentType = function() { - if (!this.headers['content-type']) { - this._error(new Error('bad content-type header, no content-type')); - return; - } - - if (this.headers['content-type'].match(/urlencoded/i)) { - this._initUrlencoded(); - return; - } - - if (this.headers['content-type'].match(/multipart/i)) { - var m; - if (m = this.headers['content-type'].match(/boundary=(?:"([^"]+)"|([^;]+))/i)) { - this._initMultipart(m[1] || m[2]); - } else { - this._error(new Error('bad content-type header, no multipart boundary')); - } - return; - } - - this._error(new Error('bad content-type header, unknown content-type: '+this.headers['content-type'])); -}; - -IncomingForm.prototype._error = function(err) { - if (this.error) { - return; - } - - this.error = err; - this.pause(); - this.emit('error', err); -}; - -IncomingForm.prototype._parseContentLength = function() { - if (this.headers['content-length']) { - this.bytesReceived = 0; - this.bytesExpected = parseInt(this.headers['content-length'], 10); - this.emit('progress', this.bytesReceived, this.bytesExpected); - } -}; - -IncomingForm.prototype._newParser = function() { - return new MultipartParser(); -}; - -IncomingForm.prototype._initMultipart = function(boundary) { - this.type = 'multipart'; - - var parser = new MultipartParser(), - self = this, - headerField, - headerValue, - part; - - parser.initWithBoundary(boundary); - - parser.onPartBegin = function() { - part = new Stream(); - part.readable = true; - part.headers = {}; - part.name = null; - part.filename = null; - part.mime = null; - headerField = ''; - headerValue = ''; - }; - - parser.onHeaderField = function(b, start, end) { - headerField += b.toString(self.encoding, start, end); - }; - - parser.onHeaderValue = function(b, start, end) { - headerValue += b.toString(self.encoding, start, end); - }; - - parser.onHeaderEnd = function() { - headerField = headerField.toLowerCase(); - part.headers[headerField] = headerValue; - - var m; - if (headerField == 'content-disposition') { - if (m = headerValue.match(/name="([^"]+)"/i)) { - part.name = m[1]; - } - - part.filename = self._fileName(headerValue); - } else if (headerField == 'content-type') { - part.mime = headerValue; - } - - headerField = ''; - headerValue = ''; - }; - - parser.onHeadersEnd = function() { - self.onPart(part); - }; - - parser.onPartData = function(b, start, end) { - part.emit('data', b.slice(start, end)); - }; - - parser.onPartEnd = function() { - part.emit('end'); - }; - - parser.onEnd = function() { - self.ended = true; - self._maybeEnd(); - }; - - this._parser = parser; -}; - -IncomingForm.prototype._fileName = function(headerValue) { - var m = headerValue.match(/filename="(.*?)"($|; )/i) - if (!m) return; - - var filename = m[1].substr(m[1].lastIndexOf('\\') + 1); - filename = filename.replace(/%22/g, '"'); - filename = filename.replace(/&#([\d]{4});/g, function(m, code) { - return String.fromCharCode(code); - }); - return filename; -}; - -IncomingForm.prototype._initUrlencoded = function() { - this.type = 'urlencoded'; - - var parser = new QuerystringParser() - , self = this; - - parser.onField = function(key, val) { - self.emit('field', key, val); - }; - - parser.onEnd = function() { - self.ended = true; - self._maybeEnd(); - }; - - this._parser = parser; -}; - -IncomingForm.prototype._uploadPath = function(filename) { - var name = ''; - for (var i = 0; i < 32; i++) { - name += Math.floor(Math.random() * 16).toString(16); - } - - if (this.keepExtensions) { - var ext = path.extname(filename); - ext = ext.replace(/(\.[a-z0-9]+).*/, '$1') - - name += ext; - } - - return path.join(this.uploadDir, name); -}; - -IncomingForm.prototype._maybeEnd = function() { - if (!this.ended || this._flushing) { - return; - } - - this.emit('end'); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js deleted file mode 100644 index 7a6e3e1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +++ /dev/null @@ -1,3 +0,0 @@ -var IncomingForm = require('./incoming_form').IncomingForm; -IncomingForm.IncomingForm = IncomingForm; -module.exports = IncomingForm; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js deleted file mode 100644 index 9ca567c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +++ /dev/null @@ -1,312 +0,0 @@ -var Buffer = require('buffer').Buffer, - s = 0, - S = - { PARSER_UNINITIALIZED: s++, - START: s++, - START_BOUNDARY: s++, - HEADER_FIELD_START: s++, - HEADER_FIELD: s++, - HEADER_VALUE_START: s++, - HEADER_VALUE: s++, - HEADER_VALUE_ALMOST_DONE: s++, - HEADERS_ALMOST_DONE: s++, - PART_DATA_START: s++, - PART_DATA: s++, - PART_END: s++, - END: s++, - }, - - f = 1, - F = - { PART_BOUNDARY: f, - LAST_BOUNDARY: f *= 2, - }, - - LF = 10, - CR = 13, - SPACE = 32, - HYPHEN = 45, - COLON = 58, - A = 97, - Z = 122, - - lower = function(c) { - return c | 0x20; - }; - -for (var s in S) { - exports[s] = S[s]; -} - -function MultipartParser() { - this.boundary = null; - this.boundaryChars = null; - this.lookbehind = null; - this.state = S.PARSER_UNINITIALIZED; - - this.index = null; - this.flags = 0; -}; -exports.MultipartParser = MultipartParser; - -MultipartParser.stateToString = function(stateNumber) { - for (var state in S) { - var number = S[state]; - if (number === stateNumber) return state; - } -}; - -MultipartParser.prototype.initWithBoundary = function(str) { - this.boundary = new Buffer(str.length+4); - this.boundary.write('\r\n--', 'ascii', 0); - this.boundary.write(str, 'ascii', 4); - this.lookbehind = new Buffer(this.boundary.length+8); - this.state = S.START; - - this.boundaryChars = {}; - for (var i = 0; i < this.boundary.length; i++) { - this.boundaryChars[this.boundary[i]] = true; - } -}; - -MultipartParser.prototype.write = function(buffer) { - var self = this, - i = 0, - len = buffer.length, - prevIndex = this.index, - index = this.index, - state = this.state, - flags = this.flags, - lookbehind = this.lookbehind, - boundary = this.boundary, - boundaryChars = this.boundaryChars, - boundaryLength = this.boundary.length, - boundaryEnd = boundaryLength - 1, - bufferLength = buffer.length, - c, - cl, - - mark = function(name) { - self[name+'Mark'] = i; - }, - clear = function(name) { - delete self[name+'Mark']; - }, - callback = function(name, buffer, start, end) { - if (start !== undefined && start === end) { - return; - } - - var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1); - if (callbackSymbol in self) { - self[callbackSymbol](buffer, start, end); - } - }, - dataCallback = function(name, clear) { - var markSymbol = name+'Mark'; - if (!(markSymbol in self)) { - return; - } - - if (!clear) { - callback(name, buffer, self[markSymbol], buffer.length); - self[markSymbol] = 0; - } else { - callback(name, buffer, self[markSymbol], i); - delete self[markSymbol]; - } - }; - - for (i = 0; i < len; i++) { - c = buffer[i]; - switch (state) { - case S.PARSER_UNINITIALIZED: - return i; - case S.START: - index = 0; - state = S.START_BOUNDARY; - case S.START_BOUNDARY: - if (index == boundary.length - 2) { - if (c != CR) { - return i; - } - index++; - break; - } else if (index - 1 == boundary.length - 2) { - if (c != LF) { - return i; - } - index = 0; - callback('partBegin'); - state = S.HEADER_FIELD_START; - break; - } - - if (c != boundary[index+2]) { - return i; - } - index++; - break; - case S.HEADER_FIELD_START: - state = S.HEADER_FIELD; - mark('headerField'); - index = 0; - case S.HEADER_FIELD: - if (c == CR) { - clear('headerField'); - state = S.HEADERS_ALMOST_DONE; - break; - } - - index++; - if (c == HYPHEN) { - break; - } - - if (c == COLON) { - if (index == 1) { - // empty header field - return i; - } - dataCallback('headerField', true); - state = S.HEADER_VALUE_START; - break; - } - - cl = lower(c); - if (cl < A || cl > Z) { - return i; - } - break; - case S.HEADER_VALUE_START: - if (c == SPACE) { - break; - } - - mark('headerValue'); - state = S.HEADER_VALUE; - case S.HEADER_VALUE: - if (c == CR) { - dataCallback('headerValue', true); - callback('headerEnd'); - state = S.HEADER_VALUE_ALMOST_DONE; - } - break; - case S.HEADER_VALUE_ALMOST_DONE: - if (c != LF) { - return i; - } - state = S.HEADER_FIELD_START; - break; - case S.HEADERS_ALMOST_DONE: - if (c != LF) { - return i; - } - - callback('headersEnd'); - state = S.PART_DATA_START; - break; - case S.PART_DATA_START: - state = S.PART_DATA - mark('partData'); - case S.PART_DATA: - prevIndex = index; - - if (index == 0) { - // boyer-moore derrived algorithm to safely skip non-boundary data - i += boundaryEnd; - while (i < bufferLength && !(buffer[i] in boundaryChars)) { - i += boundaryLength; - } - i -= boundaryEnd; - c = buffer[i]; - } - - if (index < boundary.length) { - if (boundary[index] == c) { - if (index == 0) { - dataCallback('partData', true); - } - index++; - } else { - index = 0; - } - } else if (index == boundary.length) { - index++; - if (c == CR) { - // CR = part boundary - flags |= F.PART_BOUNDARY; - } else if (c == HYPHEN) { - // HYPHEN = end boundary - flags |= F.LAST_BOUNDARY; - } else { - index = 0; - } - } else if (index - 1 == boundary.length) { - if (flags & F.PART_BOUNDARY) { - index = 0; - if (c == LF) { - // unset the PART_BOUNDARY flag - flags &= ~F.PART_BOUNDARY; - callback('partEnd'); - callback('partBegin'); - state = S.HEADER_FIELD_START; - break; - } - } else if (flags & F.LAST_BOUNDARY) { - if (c == HYPHEN) { - callback('partEnd'); - callback('end'); - state = S.END; - } else { - index = 0; - } - } else { - index = 0; - } - } - - if (index > 0) { - // when matching a possible boundary, keep a lookbehind reference - // in case it turns out to be a false lead - lookbehind[index-1] = c; - } else if (prevIndex > 0) { - // if our boundary turned out to be rubbish, the captured lookbehind - // belongs to partData - callback('partData', lookbehind, 0, prevIndex); - prevIndex = 0; - mark('partData'); - - // reconsider the current character even so it interrupted the sequence - // it could be the beginning of a new sequence - i--; - } - - break; - case S.END: - break; - default: - return i; - } - } - - dataCallback('headerField'); - dataCallback('headerValue'); - dataCallback('partData'); - - this.index = index; - this.state = state; - this.flags = flags; - - return len; -}; - -MultipartParser.prototype.end = function() { - if (this.state != S.END) { - return new Error('MultipartParser.end(): stream ended unexpectedly: ' + this.explain()); - } -}; - -MultipartParser.prototype.explain = function() { - return 'state = ' + MultipartParser.stateToString(this.state); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js deleted file mode 100644 index 63f109e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +++ /dev/null @@ -1,25 +0,0 @@ -if (global.GENTLY) require = GENTLY.hijack(require); - -// This is a buffering parser, not quite as nice as the multipart one. -// If I find time I'll rewrite this to be fully streaming as well -var querystring = require('querystring'); - -function QuerystringParser() { - this.buffer = ''; -}; -exports.QuerystringParser = QuerystringParser; - -QuerystringParser.prototype.write = function(buffer) { - this.buffer += buffer.toString('ascii'); - return buffer.length; -}; - -QuerystringParser.prototype.end = function() { - var fields = querystring.parse(this.buffer); - for (var field in fields) { - this.onField(field, fields[field]); - } - this.buffer = ''; - - this.onEnd(); -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js deleted file mode 100644 index e9493e9..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/lib/util.js +++ /dev/null @@ -1,6 +0,0 @@ -// Backwards compatibility ... -try { - module.exports = require('util'); -} catch (e) { - module.exports = require('sys'); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile deleted file mode 100644 index 01f7140..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -test: - @find test/simple/test-*.js | xargs -n 1 -t node - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md deleted file mode 100644 index f8f0c66..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/Readme.md +++ /dev/null @@ -1,167 +0,0 @@ -# Gently - -## Purpose - -A node.js module that helps with stubbing and behavior verification. It allows you to test the most remote and nested corners of your code while keeping being fully unobtrusive. - -## Features - -* Overwrite and stub individual object functions -* Verify that all expected calls have been made in the expected order -* Restore stubbed functions to their original behavior -* Detect object / class names from obj.constructor.name and obj.toString() -* Hijack any required module function or class constructor - -## Installation - -Via [npm](http://github.com/isaacs/npm): - - npm install gently@latest - -## Example - -Make sure your dog is working properly: - - function Dog() {} - - Dog.prototype.seeCat = function() { - this.bark('whuf, whuf'); - this.run(); - } - - Dog.prototype.bark = function(bark) { - require('sys').puts(bark); - } - - var gently = new (require('gently')) - , assert = require('assert') - , dog = new Dog(); - - gently.expect(dog, 'bark', function(bark) { - assert.equal(bark, 'whuf, whuf'); - }); - gently.expect(dog, 'run'); - - dog.seeCat(); - -You can also easily test event emitters with this, for example a simple sequence of 2 events emitted by `fs.WriteStream`: - - var gently = new (require('gently')) - , stream = new (require('fs').WriteStream)('my_file.txt'); - - gently.expect(stream, 'emit', function(event) { - assert.equal(event, 'open'); - }); - - gently.expect(stream, 'emit', function(event) { - assert.equal(event, 'drain'); - }); - -For a full read world example, check out this test case: [test-incoming-form.js](http://github.com/felixge/node-formidable/blob/master/test/simple/test-incoming-form.js) (in [node-formdiable](http://github.com/felixge/node-formidable)). - -## API - -### Gently - -#### new Gently() - -Creates a new gently instance. It listens to the process `'exit'` event to make sure all expectations have been verified. - -#### gently.expect(obj, method, [[count], stubFn]) - -Creates an expectation for an objects method to be called. You can optionally specify the call `count` you are expecting, as well as `stubFn` function that will run instead of the original function. - -Returns a reference to the function that is getting overwritten. - -#### gently.expect([count], stubFn) - -Returns a function that is supposed to be executed `count` times, delegating any calls to the provided `stubFn` function. Naming your stubFn closure will help to properly diagnose errors that are being thrown: - - childProcess.exec('ls', gently.expect(function lsCallback(code) { - assert.equal(0, code); - })); - -#### gently.restore(obj, method) - -Restores an object method that has been previously overwritten using `gently.expect()`. - -#### gently.hijack(realRequire) - -Returns a new require functions that catches a reference to all required modules into `gently.hijacked`. - -To use this function, include a line like this in your `'my-module.js'`. - - if (global.GENTLY) require = GENTLY.hijack(require); - - var sys = require('sys'); - exports.hello = function() { - sys.log('world'); - }; - -Now you can write a test for the module above: - - var gently = global.GENTLY = new (require('gently')) - , myModule = require('./my-module'); - - gently.expect(gently.hijacked.sys, 'log', function(str) { - assert.equal(str, 'world'); - }); - - myModule.hello(); - -#### gently.stub(location, [exportsName]) - -Returns a stub class that will be used instead of the real class from the module at `location` with the given `exportsName`. - -This allows to test an OOP version of the previous example, where `'my-module.js'`. - - if (global.GENTLY) require = GENTLY.hijack(require); - - var World = require('./world'); - - exports.hello = function() { - var world = new World(); - world.hello(); - } - -And `world.js` looks like this: - - var sys = require('sys'); - - function World() { - - } - module.exports = World; - - World.prototype.hello = function() { - sys.log('world'); - }; - -Testing `'my-module.js'` can now easily be accomplished: - - var gently = global.GENTLY = new (require('gently')) - , WorldStub = gently.stub('./world') - , myModule = require('./my-module') - , WORLD; - - gently.expect(WorldStub, 'new', function() { - WORLD = this; - }); - - gently.expect(WORLD, 'hello'); - - myModule.hello(); - -#### gently.hijacked - -An object that holds the references to all hijacked modules. - -#### gently.verify([msg]) - -Verifies that all expectations of this gently instance have been satisfied. If not called manually, this method is called when the process `'exit'` event is fired. - -If `msg` is given, it will appear in any error that might be thrown. - -## License - -Gently is licensed under the MIT license. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js deleted file mode 100644 index 022fae0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/dog.js +++ /dev/null @@ -1,22 +0,0 @@ -require('../test/common'); -function Dog() {} - -Dog.prototype.seeCat = function() { - this.bark('whuf, whuf'); - this.run(); -} - -Dog.prototype.bark = function(bark) { - require('sys').puts(bark); -} - -var gently = new (require('gently')) - , assert = require('assert') - , dog = new Dog(); - -gently.expect(dog, 'bark', function(bark) { - assert.equal(bark, 'whuf, whuf'); -}); -gently.expect(dog, 'run'); - -dog.seeCat(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js deleted file mode 100644 index 7def134..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/example/event_emitter.js +++ /dev/null @@ -1,11 +0,0 @@ -require('../test/common'); -var gently = new (require('gently')) - , stream = new (require('fs').WriteStream)('my_file.txt'); - -gently.expect(stream, 'emit', function(event) { - assert.equal(event, 'open'); -}); - -gently.expect(stream, 'emit', function(event) { - assert.equal(event, 'drain'); -}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js deleted file mode 100644 index 69122bd..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/gently'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js deleted file mode 100644 index 8af0e1e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/gently.js +++ /dev/null @@ -1,184 +0,0 @@ -var path = require('path'); - -function Gently() { - this.expectations = []; - this.hijacked = {}; - - var self = this; - process.addListener('exit', function() { - self.verify('process exit'); - }); -}; -module.exports = Gently; - -Gently.prototype.stub = function(location, exportsName) { - function Stub() { - return Stub['new'].apply(this, arguments); - }; - - Stub['new'] = function () {}; - - var stubName = 'require('+JSON.stringify(location)+')'; - if (exportsName) { - stubName += '.'+exportsName; - } - - Stub.prototype.toString = Stub.toString = function() { - return stubName; - }; - - var exports = this.hijacked[location] || {}; - if (exportsName) { - exports[exportsName] = Stub; - } else { - exports = Stub; - } - - this.hijacked[location] = exports; - return Stub; -}; - -Gently.prototype.hijack = function(realRequire) { - var self = this; - return function(location) { - return self.hijacked[location] = (self.hijacked[location]) - ? self.hijacked[location] - : realRequire(location); - }; -}; - -Gently.prototype.expect = function(obj, method, count, stubFn) { - if (typeof obj != 'function' && typeof obj != 'object' && typeof obj != 'number') { - throw new Error - ( 'Bad 1st argument for gently.expect(), ' - + 'object, function, or number expected, got: '+(typeof obj) - ); - } else if (typeof obj == 'function' && (typeof method != 'string')) { - // expect(stubFn) interface - stubFn = obj; - obj = null; - method = null; - count = 1; - } else if (typeof method == 'function') { - // expect(count, stubFn) interface - count = obj; - stubFn = method; - obj = null; - method = null; - } else if (typeof count == 'function') { - // expect(obj, method, stubFn) interface - stubFn = count; - count = 1; - } else if (count === undefined) { - // expect(obj, method) interface - count = 1; - } - - var name = this._name(obj, method, stubFn); - this.expectations.push({obj: obj, method: method, stubFn: stubFn, name: name, count: count}); - - var self = this; - function delegate() { - return self._stubFn(this, obj, method, name, Array.prototype.slice.call(arguments)); - } - - if (!obj) { - return delegate; - } - - var original = (obj[method]) - ? obj[method]._original || obj[method] - : undefined; - - obj[method] = delegate; - return obj[method]._original = original; -}; - -Gently.prototype.restore = function(obj, method) { - if (!obj[method] || !obj[method]._original) { - throw new Error(this._name(obj, method)+' is not gently stubbed'); - } - obj[method] = obj[method]._original; -}; - -Gently.prototype.verify = function(msg) { - if (!this.expectations.length) { - return; - } - - var validExpectations = []; - for (var i = 0, l = this.expectations.length; i < l; i++) { - var expectation = this.expectations[i]; - - if (expectation.count > 0) { - validExpectations.push(expectation); - } - } - - this.expectations = []; // reset so that no duplicate verification attempts are made - - if (!validExpectations.length) { - return; - } - - var expectation = validExpectations[0]; - - throw new Error - ( 'Expected call to '+expectation.name+' did not happen' - + ( (msg) - ? ' ('+msg+')' - : '' - ) - ); -}; - -Gently.prototype._stubFn = function(self, obj, method, name, args) { - var expectation = this.expectations[0], obj, method; - - if (!expectation) { - throw new Error('Unexpected call to '+name+', no call was expected'); - } - - if (expectation.obj !== obj || expectation.method !== method) { - throw new Error('Unexpected call to '+name+', expected call to '+ expectation.name); - } - - expectation.count -= 1; - if (expectation.count === 0) { - this.expectations.shift(); - - // autorestore original if its not a closure - // and no more expectations on that object - var has_more_expectations = this.expectations.reduce(function (memo, expectation) { - return memo || (expectation.obj === obj && expectation.method === method); - }, false); - if (obj !== null && method !== null && !has_more_expectations) { - if (typeof obj[method]._original !== 'undefined') { - obj[method] = obj[method]._original; - delete obj[method]._original; - } else { - delete obj[method]; - } - } - } - - if (expectation.stubFn) { - return expectation.stubFn.apply(self, args); - } -}; - -Gently.prototype._name = function(obj, method, stubFn) { - if (obj) { - var objectName = obj.toString(); - if (objectName == '[object Object]' && obj.constructor.name) { - objectName = '['+obj.constructor.name+']'; - } - return (objectName)+'.'+method+'()'; - } - - if (stubFn.name) { - return stubFn.name+'()'; - } - - return '>> '+stubFn.toString()+' <<'; -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js deleted file mode 100644 index 64c1977..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/lib/gently/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./gently'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json deleted file mode 100644 index 9c1b7a0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "gently", - "version": "0.9.2", - "directories": { - "lib": "./lib/gently" - }, - "main": "./lib/gently/index", - "dependencies": {}, - "devDependencies": {}, - "engines": { - "node": "*" - }, - "optionalDependencies": {} -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js deleted file mode 100644 index 978b5c5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/common.js +++ /dev/null @@ -1,8 +0,0 @@ -var path = require('path') - , sys = require('sys'); - -require.paths.unshift(path.dirname(__dirname)+'/lib'); - -global.puts = sys.puts; -global.p = function() {sys.error(sys.inspect.apply(null, arguments))};; -global.assert = require('assert'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js deleted file mode 100644 index 4f8fe2d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/node-gently/test/simple/test-gently.js +++ /dev/null @@ -1,348 +0,0 @@ -require('../common'); -var Gently = require('gently') - , gently; - -function test(test) { - process.removeAllListeners('exit'); - gently = new Gently(); - test(); -} - -test(function constructor() { - assert.deepEqual(gently.expectations, []); - assert.deepEqual(gently.hijacked, {}); - assert.equal(gently.constructor.name, 'Gently'); -}); - -test(function expectBadArgs() { - var BAD_ARG = 'oh no'; - try { - gently.expect(BAD_ARG); - assert.ok(false, 'throw needs to happen'); - } catch (e) { - assert.equal(e.message, 'Bad 1st argument for gently.expect(), object, function, or number expected, got: '+(typeof BAD_ARG)); - } -}); - -test(function expectObjMethod() { - var OBJ = {}, NAME = 'foobar'; - OBJ.foo = function(x) { - return x; - }; - - gently._name = function() { - return NAME; - }; - - var original = OBJ.foo - , stubFn = function() {}; - - (function testAddOne() { - assert.strictEqual(gently.expect(OBJ, 'foo', stubFn), original); - - assert.equal(gently.expectations.length, 1); - var expectation = gently.expectations[0]; - assert.strictEqual(expectation.obj, OBJ); - assert.strictEqual(expectation.method, 'foo'); - assert.strictEqual(expectation.stubFn, stubFn); - assert.strictEqual(expectation.name, NAME); - assert.strictEqual(OBJ.foo._original, original); - })(); - - (function testAddTwo() { - gently.expect(OBJ, 'foo', 2, stubFn); - assert.equal(gently.expectations.length, 2); - assert.strictEqual(OBJ.foo._original, original); - })(); - - (function testAddOneWithoutMock() { - gently.expect(OBJ, 'foo'); - assert.equal(gently.expectations.length, 3); - })(); - - var stubFnCalled = 0, SELF = {}; - gently._stubFn = function(self, obj, method, name, args) { - stubFnCalled++; - assert.strictEqual(self, SELF); - assert.strictEqual(obj, OBJ); - assert.strictEqual(method, 'foo'); - assert.strictEqual(name, NAME); - assert.deepEqual(args, [1, 2]); - return 23; - }; - assert.equal(OBJ.foo.apply(SELF, [1, 2]), 23); - assert.equal(stubFnCalled, 1); -}); - -test(function expectClosure() { - var NAME = 'MY CLOSURE'; - function closureFn() {}; - - gently._name = function() { - return NAME; - }; - - var fn = gently.expect(closureFn); - assert.equal(gently.expectations.length, 1); - var expectation = gently.expectations[0]; - assert.strictEqual(expectation.obj, null); - assert.strictEqual(expectation.method, null); - assert.strictEqual(expectation.stubFn, closureFn); - assert.strictEqual(expectation.name, NAME); - - var stubFnCalled = 0, SELF = {}; - gently._stubFn = function(self, obj, method, name, args) { - stubFnCalled++; - assert.strictEqual(self, SELF); - assert.strictEqual(obj, null); - assert.strictEqual(method, null); - assert.strictEqual(name, NAME); - assert.deepEqual(args, [1, 2]); - return 23; - }; - assert.equal(fn.apply(SELF, [1, 2]), 23); - assert.equal(stubFnCalled, 1); -}); - -test(function expectClosureCount() { - var stubFnCalled = 0; - function closureFn() {stubFnCalled++}; - - var fn = gently.expect(2, closureFn); - assert.equal(gently.expectations.length, 1); - fn(); - assert.equal(gently.expectations.length, 1); - fn(); - assert.equal(stubFnCalled, 2); -}); - -test(function restore() { - var OBJ = {}, NAME = '[my object].myFn()'; - OBJ.foo = function(x) { - return x; - }; - - gently._name = function() { - return NAME; - }; - - var original = OBJ.foo; - gently.expect(OBJ, 'foo'); - gently.restore(OBJ, 'foo'); - assert.strictEqual(OBJ.foo, original); - - (function testError() { - try { - gently.restore(OBJ, 'foo'); - assert.ok(false, 'throw needs to happen'); - } catch (e) { - assert.equal(e.message, NAME+' is not gently stubbed'); - } - })(); -}); - -test(function _stubFn() { - var OBJ1 = {toString: function() {return '[OBJ 1]'}} - , OBJ2 = {toString: function() {return '[OBJ 2]'}, foo: function () {return 'bar';}} - , SELF = {}; - - gently.expect(OBJ1, 'foo', function(x) { - assert.strictEqual(this, SELF); - return x * 2; - }); - - assert.equal(gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]), 10); - - (function testAutorestore() { - assert.equal(OBJ2.foo(), 'bar'); - - gently.expect(OBJ2, 'foo', function() { - return 'stubbed foo'; - }); - - gently.expect(OBJ2, 'foo', function() { - return "didn't restore yet"; - }); - - assert.equal(gently._stubFn(SELF, OBJ2, 'foo', 'dummy_name', []), 'stubbed foo'); - assert.equal(gently._stubFn(SELF, OBJ2, 'foo', 'dummy_name', []), "didn't restore yet"); - assert.equal(OBJ2.foo(), 'bar'); - assert.deepEqual(gently.expectations, []); - })(); - - (function testNoMoreCallExpected() { - try { - gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]); - assert.ok(false, 'throw needs to happen'); - } catch (e) { - assert.equal(e.message, 'Unexpected call to dummy_name, no call was expected'); - } - })(); - - (function testDifferentCallExpected() { - gently.expect(OBJ2, 'bar'); - try { - gently._stubFn(SELF, OBJ1, 'foo', 'dummy_name', [5]); - assert.ok(false, 'throw needs to happen'); - } catch (e) { - assert.equal(e.message, 'Unexpected call to dummy_name, expected call to '+gently._name(OBJ2, 'bar')); - } - - assert.equal(gently.expectations.length, 1); - })(); - - (function testNoMockCallback() { - OBJ2.bar(); - assert.equal(gently.expectations.length, 0); - })(); -}); - -test(function stub() { - var LOCATION = './my_class'; - - (function testRegular() { - var Stub = gently.stub(LOCATION); - assert.ok(Stub instanceof Function); - assert.strictEqual(gently.hijacked[LOCATION], Stub); - assert.ok(Stub['new'] instanceof Function); - assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+')'); - - (function testConstructor() { - var newCalled = 0 - , STUB - , ARGS = ['foo', 'bar']; - - Stub['new'] = function(a, b) { - assert.equal(a, ARGS[0]); - assert.equal(b, ARGS[1]); - newCalled++; - STUB = this; - }; - - var stub = new Stub(ARGS[0], ARGS[1]); - assert.strictEqual(stub, STUB); - assert.equal(newCalled, 1); - assert.equal(stub.toString(), 'require('+JSON.stringify(LOCATION)+')'); - })(); - - (function testUseReturnValueAsInstance() { - var R = {}; - - Stub['new'] = function() { - return R; - }; - - var stub = new Stub(); - assert.strictEqual(stub, R); - - })(); - })(); - - var EXPORTS_NAME = 'MyClass'; - test(function testExportsName() { - var Stub = gently.stub(LOCATION, EXPORTS_NAME); - assert.strictEqual(gently.hijacked[LOCATION][EXPORTS_NAME], Stub); - assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+').'+EXPORTS_NAME); - - (function testConstructor() { - var stub = new Stub(); - assert.equal(Stub.toString(), 'require('+JSON.stringify(LOCATION)+').'+EXPORTS_NAME); - })(); - }); -}); - -test(function hijack() { - var LOCATION = './foo' - , REQUIRE_CALLS = 0 - , EXPORTS = {} - , REQUIRE = function() { - REQUIRE_CALLS++; - return EXPORTS; - }; - - var hijackedRequire = gently.hijack(REQUIRE); - hijackedRequire(LOCATION); - assert.strictEqual(gently.hijacked[LOCATION], EXPORTS); - - assert.equal(REQUIRE_CALLS, 1); - - // make sure we are caching the hijacked module - hijackedRequire(LOCATION); - assert.equal(REQUIRE_CALLS, 1); -}); - -test(function verify() { - var OBJ = {toString: function() {return '[OBJ]'}}; - gently.verify(); - - gently.expect(OBJ, 'foo'); - try { - gently.verify(); - assert.ok(false, 'throw needs to happen'); - } catch (e) { - assert.equal(e.message, 'Expected call to [OBJ].foo() did not happen'); - } - - try { - gently.verify('foo'); - assert.ok(false, 'throw needs to happen'); - } catch (e) { - assert.equal(e.message, 'Expected call to [OBJ].foo() did not happen (foo)'); - } -}); - -test(function processExit() { - var verifyCalled = 0; - gently.verify = function(msg) { - verifyCalled++; - assert.equal(msg, 'process exit'); - }; - - process.emit('exit'); - assert.equal(verifyCalled, 1); -}); - -test(function _name() { - (function testNamedClass() { - function Foo() {}; - var foo = new Foo(); - assert.equal(gently._name(foo, 'bar'), '[Foo].bar()'); - })(); - - (function testToStringPreference() { - function Foo() {}; - Foo.prototype.toString = function() { - return '[Superman 123]'; - }; - var foo = new Foo(); - assert.equal(gently._name(foo, 'bar'), '[Superman 123].bar()'); - })(); - - (function testUnamedClass() { - var Foo = function() {}; - var foo = new Foo(); - assert.equal(gently._name(foo, 'bar'), foo.toString()+'.bar()'); - })(); - - (function testNamedClosure() { - function myClosure() {}; - assert.equal(gently._name(null, null, myClosure), myClosure.name+'()'); - })(); - - (function testUnamedClosure() { - var myClosure = function() {2+2 == 5}; - assert.equal(gently._name(null, null, myClosure), '>> '+myClosure.toString()+' <<'); - })(); -}); - -test(function verifyExpectNone() { - var OBJ = {toString: function() {return '[OBJ]'}}; - gently.verify(); - - gently.expect(OBJ, 'foo', 0); - try { - gently.verify(); - } catch (e) { - assert.fail('Exception should not have been thrown'); - } -}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json deleted file mode 100644 index 1fd45c7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "formidable", - "version": "1.0.11", - "dependencies": {}, - "devDependencies": { - "gently": "0.8.0", - "findit": "0.1.1", - "hashish": "0.0.4", - "urun": "0.0.4", - "utest": "0.0.3" - }, - "directories": { - "lib": "./lib" - }, - "main": "./lib/index", - "scripts": { - "test": "make test" - }, - "engines": { - "node": "*" - }, - "optionalDependencies": {}, - "readme": "# Formidable\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)\n\n## Purpose\n\nA node.js module for parsing form data, especially file uploads.\n\n## Current status\n\nThis module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading\nand encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from\na large variety of clients and is considered production-ready.\n\n## Features\n\n* Fast (~500mb/sec), non-buffering multipart parser\n* Automatically writing file uploads to disk\n* Low memory footprint\n* Graceful error handling\n* Very high test coverage\n\n## Changelog\n\n### v1.0.9\n\n* Emit progress when content length header parsed (Tim Koschützki)\n* Fix Readme syntax due to GitHub changes (goob)\n* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)\n\n### v1.0.8\n\n* Strip potentially unsafe characters when using `keepExtensions: true`.\n* Switch to utest / urun for testing\n* Add travis build\n\n### v1.0.7\n\n* Remove file from package that was causing problems when installing on windows. (#102)\n* Fix typos in Readme (Jason Davies).\n\n### v1.0.6\n\n* Do not default to the default to the field name for file uploads where\n filename=\"\".\n\n### v1.0.5\n\n* Support filename=\"\" in multipart parts\n* Explain unexpected end() errors in parser better\n\n**Note:** Starting with this version, formidable emits 'file' events for empty\nfile input fields. Previously those were incorrectly emitted as regular file\ninput fields with value = \"\".\n\n### v1.0.4\n\n* Detect a good default tmp directory regardless of platform. (#88)\n\n### v1.0.3\n\n* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)\n* Small performance improvements\n* New test suite and fixture system\n\n### v1.0.2\n\n* Exclude node\\_modules folder from git\n* Implement new `'aborted'` event\n* Fix files in example folder to work with recent node versions\n* Make gently a devDependency\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)\n\n### v1.0.1\n\n* Fix package.json to refer to proper main directory. (#68, Dean Landolt)\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)\n\n### v1.0.0\n\n* Add support for multipart boundaries that are quoted strings. (Jeff Craig)\n\nThis marks the beginning of development on version 2.0 which will include\nseveral architectural improvements.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)\n\n### v0.9.11\n\n* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki)\n* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class\n\n**Important:** The old property names of the File class will be removed in a\nfuture release.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)\n\n### Older releases\n\nThese releases were done before starting to maintain the above Changelog:\n\n* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)\n* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)\n* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)\n* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)\n* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)\n* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)\n* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)\n* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)\n* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)\n* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)\n\n## Installation\n\nVia [npm](http://github.com/isaacs/npm):\n\n npm install formidable@latest\n\nManually:\n\n git clone git://github.com/felixge/node-formidable.git formidable\n vim my.js\n # var formidable = require('./formidable');\n\nNote: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.\n\n## Example\n\nParse an incoming file upload.\n\n var formidable = require('formidable'),\n http = require('http'),\n\n util = require('util');\n\n http.createServer(function(req, res) {\n if (req.url == '/upload' && req.method.toLowerCase() == 'post') {\n // parse a file upload\n var form = new formidable.IncomingForm();\n form.parse(req, function(err, fields, files) {\n res.writeHead(200, {'content-type': 'text/plain'});\n res.write('received upload:\\n\\n');\n res.end(util.inspect({fields: fields, files: files}));\n });\n return;\n }\n\n // show a file upload form\n res.writeHead(200, {'content-type': 'text/html'});\n res.end(\n '
      '+\n '
      '+\n '
      '+\n ''+\n '
      '\n );\n }).listen(80);\n\n## API\n\n### formidable.IncomingForm\n\n__new formidable.IncomingForm()__\n\nCreates a new incoming form.\n\n__incomingForm.encoding = 'utf-8'__\n\nThe encoding to use for incoming form fields.\n\n__incomingForm.uploadDir = process.env.TMP || '/tmp' || process.cwd()__\n\nThe directory for placing file uploads in. You can move them later on using\n`fs.rename()`. The default directory is picked at module load time depending on\nthe first existing directory from those listed above.\n\n__incomingForm.keepExtensions = false__\n\nIf you want the files written to `incomingForm.uploadDir` to include the extensions of the original files, set this property to `true`.\n\n__incomingForm.type__\n\nEither 'multipart' or 'urlencoded' depending on the incoming request.\n\n__incomingForm.maxFieldsSize = 2 * 1024 * 1024__\n\nLimits the amount of memory a field (not file) can allocate in bytes.\nIf this value is exceeded, an `'error'` event is emitted. The default\nsize is 2MB.\n\n__incomingForm.hash = false__\n\nIf you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.\n\n__incomingForm.bytesReceived__\n\nThe amount of bytes received for this form so far.\n\n__incomingForm.bytesExpected__\n\nThe expected number of bytes in this form.\n\n__incomingForm.parse(request, [cb])__\n\nParses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:\n\n incomingForm.parse(req, function(err, fields, files) {\n // ...\n });\n\n__incomingForm.onPart(part)__\n\nYou may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing.\n\n incomingForm.onPart = function(part) {\n part.addListener('data', function() {\n // ...\n });\n }\n\nIf you want to use formidable to only handle certain parts for you, you can do so:\n\n incomingForm.onPart = function(part) {\n if (!part.filename) {\n // let formidable handle all non-file parts\n incomingForm.handlePart(part);\n }\n }\n\nCheck the code in this method for further inspiration.\n\n__Event: 'progress' (bytesReceived, bytesExpected)__\n\nEmitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.\n\n__Event: 'field' (name, value)__\n\nEmitted whenever a field / value pair has been received.\n\n__Event: 'fileBegin' (name, file)__\n\nEmitted whenever a new file is detected in the upload stream. Use this even if\nyou want to stream the file to somewhere else while buffering the upload on\nthe file system.\n\n__Event: 'file' (name, file)__\n\nEmitted whenever a field / file pair has been received. `file` is an instance of `File`.\n\n__Event: 'error' (err)__\n\nEmitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.\n\n__Event: 'aborted'__\n\nEmitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).\n\n__Event: 'end' ()__\n\nEmitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.\n\n### formidable.File\n\n__file.size = 0__\n\nThe size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.\n\n__file.path = null__\n\nThe path this file is being written to. You can modify this in the `'fileBegin'` event in\ncase you are unhappy with the way formidable generates a temporary path for your files.\n\n__file.name = null__\n\nThe name this file had according to the uploading client.\n\n__file.type = null__\n\nThe mime type of this file, according to the uploading client.\n\n__file.lastModifiedDate = null__\n\nA date object (or `null`) containing the time this file was last written to. Mostly\nhere for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).\n\n__file.hash = null__\n\nIf hash calculation was set, you can read the hex digest out of this var.\n\n## License\n\nFormidable is licensed under the MIT license.\n\n## Ports\n\n* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable\n\n## Credits\n\n* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js\n", - "readmeFilename": "Readme.md", - "_id": "formidable@1.0.11", - "description": "[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)", - "_from": "formidable@1.0.11" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js deleted file mode 100644 index eb432ad..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +++ /dev/null @@ -1,19 +0,0 @@ -var mysql = require('..'); -var path = require('path'); - -var root = path.join(__dirname, '../'); -exports.dir = { - root : root, - lib : root + '/lib', - fixture : root + '/test/fixture', - tmp : root + '/test/tmp', -}; - -exports.port = 13532; - -exports.formidable = require('..'); -exports.assert = require('assert'); - -exports.require = function(lib) { - return require(exports.dir.lib + '/' + lib); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt deleted file mode 100644 index e7a4785..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +++ /dev/null @@ -1 +0,0 @@ -I am a text file with a funky name! diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt deleted file mode 100644 index 9b6903e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +++ /dev/null @@ -1 +0,0 @@ -I am a plain text file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md deleted file mode 100644 index 3c9dbe3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +++ /dev/null @@ -1,3 +0,0 @@ -* Opera does not allow submitting this file, it shows a warning to the - user that the file could not be found instead. Tested in 9.8, 11.51 on OSX. - Reported to Opera on 08.09.2011 (tracking email DSK-346009@bugs.opera.com). diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js deleted file mode 100644 index 0bae449..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports['generic.http'] = [ - {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt'}, -]; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js deleted file mode 100644 index eb76fdc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +++ /dev/null @@ -1,21 +0,0 @@ -var properFilename = 'funkyfilename.txt'; - -function expect(filename) { - return [ - {type: 'field', name: 'title', value: 'Weird filename'}, - {type: 'file', name: 'upload', filename: filename, fixture: properFilename}, - ]; -}; - -var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; -var ffOrIe = " ? % * | \" < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; - -module.exports = { - 'osx-chrome-13.http' : expect(webkit), - 'osx-firefox-3.6.http' : expect(ffOrIe), - 'osx-safari-5.http' : expect(webkit), - 'xp-chrome-12.http' : expect(webkit), - 'xp-ie-7.http' : expect(ffOrIe), - 'xp-ie-8.http' : expect(ffOrIe), - 'xp-safari-5.http' : expect(webkit), -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js deleted file mode 100644 index a476169..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +++ /dev/null @@ -1,72 +0,0 @@ -exports['rfc1867'] = - { boundary: 'AaB03x', - raw: - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="field1"\r\n'+ - '\r\n'+ - 'Joe Blow\r\nalmost tricked you!\r\n'+ - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ - 'Content-Type: text/plain\r\n'+ - '\r\n'+ - '... contents of file1.txt ...\r\r\n'+ - '--AaB03x--\r\n', - parts: - [ { headers: { - 'content-disposition': 'form-data; name="field1"', - }, - data: 'Joe Blow\r\nalmost tricked you!', - }, - { headers: { - 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', - 'Content-Type': 'text/plain', - }, - data: '... contents of file1.txt ...\r', - } - ] - }; - -exports['noTrailing\r\n'] = - { boundary: 'AaB03x', - raw: - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="field1"\r\n'+ - '\r\n'+ - 'Joe Blow\r\nalmost tricked you!\r\n'+ - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ - 'Content-Type: text/plain\r\n'+ - '\r\n'+ - '... contents of file1.txt ...\r\r\n'+ - '--AaB03x--', - parts: - [ { headers: { - 'content-disposition': 'form-data; name="field1"', - }, - data: 'Joe Blow\r\nalmost tricked you!', - }, - { headers: { - 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', - 'Content-Type': 'text/plain', - }, - data: '... contents of file1.txt ...\r', - } - ] - }; - -exports['emptyHeader'] = - { boundary: 'AaB03x', - raw: - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="field1"\r\n'+ - ': foo\r\n'+ - '\r\n'+ - 'Joe Blow\r\nalmost tricked you!\r\n'+ - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ - 'Content-Type: text/plain\r\n'+ - '\r\n'+ - '... contents of file1.txt ...\r\r\n'+ - '--AaB03x--\r\n', - expectError: true, - }; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js deleted file mode 100644 index 66ad259..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +++ /dev/null @@ -1,89 +0,0 @@ -var hashish = require('hashish'); -var fs = require('fs'); -var findit = require('findit'); -var path = require('path'); -var http = require('http'); -var net = require('net'); -var assert = require('assert'); - -var common = require('../common'); -var formidable = common.formidable; - -var server = http.createServer(); -server.listen(common.port, findFixtures); - -function findFixtures() { - var fixtures = []; - findit - .sync(common.dir.fixture + '/js') - .forEach(function(jsPath) { - if (!/\.js$/.test(jsPath)) return; - - var group = path.basename(jsPath, '.js'); - hashish.forEach(require(jsPath), function(fixture, name) { - fixtures.push({ - name : group + '/' + name, - fixture : fixture, - }); - }); - }); - - testNext(fixtures); -} - -function testNext(fixtures) { - var fixture = fixtures.shift(); - if (!fixture) return server.close(); - - var name = fixture.name; - var fixture = fixture.fixture; - - uploadFixture(name, function(err, parts) { - if (err) throw err; - - fixture.forEach(function(expectedPart, i) { - var parsedPart = parts[i]; - assert.equal(parsedPart.type, expectedPart.type); - assert.equal(parsedPart.name, expectedPart.name); - - if (parsedPart.type === 'file') { - var filename = parsedPart.value.name; - assert.equal(filename, expectedPart.filename); - } - }); - - testNext(fixtures); - }); -}; - -function uploadFixture(name, cb) { - server.once('request', function(req, res) { - var form = new formidable.IncomingForm(); - form.uploadDir = common.dir.tmp; - form.parse(req); - - function callback() { - var realCallback = cb; - cb = function() {}; - realCallback.apply(null, arguments); - } - - var parts = []; - form - .on('error', callback) - .on('fileBegin', function(name, value) { - parts.push({type: 'file', name: name, value: value}); - }) - .on('field', function(name, value) { - parts.push({type: 'field', name: name, value: value}); - }) - .on('end', function() { - callback(null, parts); - }); - }); - - var socket = net.createConnection(common.port); - var file = fs.createReadStream(common.dir.fixture + '/http/' + name); - - file.pipe(socket); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js deleted file mode 100644 index 2b98598..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +++ /dev/null @@ -1,24 +0,0 @@ -var path = require('path'), - fs = require('fs'); - -try { - global.Gently = require('gently'); -} catch (e) { - throw new Error('this test suite requires node-gently'); -} - -exports.lib = path.join(__dirname, '../../lib'); - -global.GENTLY = new Gently(); - -global.assert = require('assert'); -global.TEST_PORT = 13532; -global.TEST_FIXTURES = path.join(__dirname, '../fixture'); -global.TEST_TMP = path.join(__dirname, '../tmp'); - -// Stupid new feature in node that complains about gently attaching too many -// listeners to process 'exit'. This is a workaround until I can think of a -// better way to deal with this. -if (process.setMaxListeners) { - process.setMaxListeners(10000); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js deleted file mode 100644 index 75232aa..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +++ /dev/null @@ -1,80 +0,0 @@ -var common = require('../common'); -var CHUNK_LENGTH = 10, - multipartParser = require(common.lib + '/multipart_parser'), - MultipartParser = multipartParser.MultipartParser, - parser = new MultipartParser(), - fixtures = require(TEST_FIXTURES + '/multipart'), - Buffer = require('buffer').Buffer; - -Object.keys(fixtures).forEach(function(name) { - var fixture = fixtures[name], - buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')), - offset = 0, - chunk, - nparsed, - - parts = [], - part = null, - headerField, - headerValue, - endCalled = ''; - - parser.initWithBoundary(fixture.boundary); - parser.onPartBegin = function() { - part = {headers: {}, data: ''}; - parts.push(part); - headerField = ''; - headerValue = ''; - }; - - parser.onHeaderField = function(b, start, end) { - headerField += b.toString('ascii', start, end); - }; - - parser.onHeaderValue = function(b, start, end) { - headerValue += b.toString('ascii', start, end); - } - - parser.onHeaderEnd = function() { - part.headers[headerField] = headerValue; - headerField = ''; - headerValue = ''; - }; - - parser.onPartData = function(b, start, end) { - var str = b.toString('ascii', start, end); - part.data += b.slice(start, end); - } - - parser.onEnd = function() { - endCalled = true; - } - - buffer.write(fixture.raw, 'binary', 0); - - while (offset < buffer.length) { - if (offset + CHUNK_LENGTH < buffer.length) { - chunk = buffer.slice(offset, offset+CHUNK_LENGTH); - } else { - chunk = buffer.slice(offset, buffer.length); - } - offset = offset + CHUNK_LENGTH; - - nparsed = parser.write(chunk); - if (nparsed != chunk.length) { - if (fixture.expectError) { - return; - } - puts('-- ERROR --'); - p(chunk.toString('ascii')); - throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!'); - } - } - - if (fixture.expectError) { - throw new Error('expected parse error did not happen'); - } - - assert.ok(endCalled); - assert.deepEqual(parts, fixture.parts); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js deleted file mode 100644 index 52ceedb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +++ /dev/null @@ -1,104 +0,0 @@ -var common = require('../common'); -var WriteStreamStub = GENTLY.stub('fs', 'WriteStream'); - -var File = require(common.lib + '/file'), - EventEmitter = require('events').EventEmitter, - file, - gently; - -function test(test) { - gently = new Gently(); - file = new File(); - test(); - gently.verify(test.name); -} - -test(function constructor() { - assert.ok(file instanceof EventEmitter); - assert.strictEqual(file.size, 0); - assert.strictEqual(file.path, null); - assert.strictEqual(file.name, null); - assert.strictEqual(file.type, null); - assert.strictEqual(file.lastModifiedDate, null); - - assert.strictEqual(file._writeStream, null); - - (function testSetProperties() { - var file2 = new File({foo: 'bar'}); - assert.equal(file2.foo, 'bar'); - })(); -}); - -test(function open() { - var WRITE_STREAM; - file.path = '/foo'; - - gently.expect(WriteStreamStub, 'new', function (path) { - WRITE_STREAM = this; - assert.strictEqual(path, file.path); - }); - - file.open(); - assert.strictEqual(file._writeStream, WRITE_STREAM); -}); - -test(function write() { - var BUFFER = {length: 10}, - CB_STUB, - CB = function() { - CB_STUB.apply(this, arguments); - }; - - file._writeStream = {}; - - gently.expect(file._writeStream, 'write', function (buffer, cb) { - assert.strictEqual(buffer, BUFFER); - - gently.expect(file, 'emit', function (event, bytesWritten) { - assert.ok(file.lastModifiedDate instanceof Date); - assert.equal(event, 'progress'); - assert.equal(bytesWritten, file.size); - }); - - CB_STUB = gently.expect(function writeCb() { - assert.equal(file.size, 10); - }); - - cb(); - - gently.expect(file, 'emit', function (event, bytesWritten) { - assert.equal(event, 'progress'); - assert.equal(bytesWritten, file.size); - }); - - CB_STUB = gently.expect(function writeCb() { - assert.equal(file.size, 20); - }); - - cb(); - }); - - file.write(BUFFER, CB); -}); - -test(function end() { - var CB_STUB, - CB = function() { - CB_STUB.apply(this, arguments); - }; - - file._writeStream = {}; - - gently.expect(file._writeStream, 'end', function (cb) { - gently.expect(file, 'emit', function (event) { - assert.equal(event, 'end'); - }); - - CB_STUB = gently.expect(function endCb() { - }); - - cb(); - }); - - file.end(CB); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js deleted file mode 100644 index 84de439..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +++ /dev/null @@ -1,727 +0,0 @@ -var common = require('../common'); -var MultipartParserStub = GENTLY.stub('./multipart_parser', 'MultipartParser'), - QuerystringParserStub = GENTLY.stub('./querystring_parser', 'QuerystringParser'), - EventEmitterStub = GENTLY.stub('events', 'EventEmitter'), - StreamStub = GENTLY.stub('stream', 'Stream'), - FileStub = GENTLY.stub('./file'); - -var formidable = require(common.lib + '/index'), - IncomingForm = formidable.IncomingForm, - events = require('events'), - fs = require('fs'), - path = require('path'), - Buffer = require('buffer').Buffer, - fixtures = require(TEST_FIXTURES + '/multipart'), - form, - gently; - -function test(test) { - gently = new Gently(); - gently.expect(EventEmitterStub, 'call'); - form = new IncomingForm(); - test(); - gently.verify(test.name); -} - -test(function constructor() { - assert.strictEqual(form.error, null); - assert.strictEqual(form.ended, false); - assert.strictEqual(form.type, null); - assert.strictEqual(form.headers, null); - assert.strictEqual(form.keepExtensions, false); - assert.strictEqual(form.uploadDir, '/tmp'); - assert.strictEqual(form.encoding, 'utf-8'); - assert.strictEqual(form.bytesReceived, null); - assert.strictEqual(form.bytesExpected, null); - assert.strictEqual(form.maxFieldsSize, 2 * 1024 * 1024); - assert.strictEqual(form._parser, null); - assert.strictEqual(form._flushing, 0); - assert.strictEqual(form._fieldsSize, 0); - assert.ok(form instanceof EventEmitterStub); - assert.equal(form.constructor.name, 'IncomingForm'); - - (function testSimpleConstructor() { - gently.expect(EventEmitterStub, 'call'); - var form = IncomingForm(); - assert.ok(form instanceof IncomingForm); - })(); - - (function testSimpleConstructorShortcut() { - gently.expect(EventEmitterStub, 'call'); - var form = formidable(); - assert.ok(form instanceof IncomingForm); - })(); -}); - -test(function parse() { - var REQ = {headers: {}} - , emit = {}; - - gently.expect(form, 'writeHeaders', function(headers) { - assert.strictEqual(headers, REQ.headers); - }); - - var events = ['error', 'aborted', 'data', 'end']; - gently.expect(REQ, 'on', events.length, function(event, fn) { - assert.equal(event, events.shift()); - emit[event] = fn; - return this; - }); - - form.parse(REQ); - - (function testPause() { - gently.expect(REQ, 'pause'); - assert.strictEqual(form.pause(), true); - })(); - - (function testPauseCriticalException() { - form.ended = false; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'pause', function() { - throw ERR; - }); - - gently.expect(form, '_error', function(err) { - assert.strictEqual(err, ERR); - }); - - assert.strictEqual(form.pause(), false); - })(); - - (function testPauseHarmlessException() { - form.ended = true; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'pause', function() { - throw ERR; - }); - - assert.strictEqual(form.pause(), false); - })(); - - (function testResume() { - gently.expect(REQ, 'resume'); - assert.strictEqual(form.resume(), true); - })(); - - (function testResumeCriticalException() { - form.ended = false; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'resume', function() { - throw ERR; - }); - - gently.expect(form, '_error', function(err) { - assert.strictEqual(err, ERR); - }); - - assert.strictEqual(form.resume(), false); - })(); - - (function testResumeHarmlessException() { - form.ended = true; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'resume', function() { - throw ERR; - }); - - assert.strictEqual(form.resume(), false); - })(); - - (function testEmitError() { - var ERR = new Error('something bad happened'); - gently.expect(form, '_error',function(err) { - assert.strictEqual(err, ERR); - }); - emit.error(ERR); - })(); - - (function testEmitAborted() { - gently.expect(form, 'emit',function(event) { - assert.equal(event, 'aborted'); - }); - - emit.aborted(); - })(); - - - (function testEmitData() { - var BUFFER = [1, 2, 3]; - gently.expect(form, 'write', function(buffer) { - assert.strictEqual(buffer, BUFFER); - }); - emit.data(BUFFER); - })(); - - (function testEmitEnd() { - form._parser = {}; - - (function testWithError() { - var ERR = new Error('haha'); - gently.expect(form._parser, 'end', function() { - return ERR; - }); - - gently.expect(form, '_error', function(err) { - assert.strictEqual(err, ERR); - }); - - emit.end(); - })(); - - (function testWithoutError() { - gently.expect(form._parser, 'end'); - emit.end(); - })(); - - (function testAfterError() { - form.error = true; - emit.end(); - })(); - })(); - - (function testWithCallback() { - gently.expect(EventEmitterStub, 'call'); - var form = new IncomingForm(), - REQ = {headers: {}}, - parseCalled = 0; - - gently.expect(form, 'writeHeaders'); - gently.expect(REQ, 'on', 4, function() { - return this; - }); - - gently.expect(form, 'on', 4, function(event, fn) { - if (event == 'field') { - fn('field1', 'foo'); - fn('field1', 'bar'); - fn('field2', 'nice'); - } - - if (event == 'file') { - fn('file1', '1'); - fn('file1', '2'); - fn('file2', '3'); - } - - if (event == 'end') { - fn(); - } - return this; - }); - - form.parse(REQ, gently.expect(function parseCbOk(err, fields, files) { - assert.deepEqual(fields, {field1: 'bar', field2: 'nice'}); - assert.deepEqual(files, {file1: '2', file2: '3'}); - })); - - gently.expect(form, 'writeHeaders'); - gently.expect(REQ, 'on', 4, function() { - return this; - }); - - var ERR = new Error('test'); - gently.expect(form, 'on', 3, function(event, fn) { - if (event == 'field') { - fn('foo', 'bar'); - } - - if (event == 'error') { - fn(ERR); - gently.expect(form, 'on'); - } - return this; - }); - - form.parse(REQ, gently.expect(function parseCbErr(err, fields, files) { - assert.strictEqual(err, ERR); - assert.deepEqual(fields, {foo: 'bar'}); - })); - })(); -}); - -test(function pause() { - assert.strictEqual(form.pause(), false); -}); - -test(function resume() { - assert.strictEqual(form.resume(), false); -}); - - -test(function writeHeaders() { - var HEADERS = {}; - gently.expect(form, '_parseContentLength'); - gently.expect(form, '_parseContentType'); - - form.writeHeaders(HEADERS); - assert.strictEqual(form.headers, HEADERS); -}); - -test(function write() { - var parser = {}, - BUFFER = [1, 2, 3]; - - form._parser = parser; - form.bytesExpected = 523423; - - (function testBasic() { - gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { - assert.equal(event, 'progress'); - assert.equal(bytesReceived, BUFFER.length); - assert.equal(bytesExpected, form.bytesExpected); - }); - - gently.expect(parser, 'write', function(buffer) { - assert.strictEqual(buffer, BUFFER); - return buffer.length; - }); - - assert.equal(form.write(BUFFER), BUFFER.length); - assert.equal(form.bytesReceived, BUFFER.length); - })(); - - (function testParserError() { - gently.expect(form, 'emit'); - - gently.expect(parser, 'write', function(buffer) { - assert.strictEqual(buffer, BUFFER); - return buffer.length - 1; - }); - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/parser error/i)); - }); - - assert.equal(form.write(BUFFER), BUFFER.length - 1); - assert.equal(form.bytesReceived, BUFFER.length + BUFFER.length); - })(); - - (function testUninitialized() { - delete form._parser; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/unintialized parser/i)); - }); - form.write(BUFFER); - })(); -}); - -test(function parseContentType() { - var HEADERS = {}; - - form.headers = {'content-type': 'application/x-www-form-urlencoded'}; - gently.expect(form, '_initUrlencoded'); - form._parseContentType(); - - // accept anything that has 'urlencoded' in it - form.headers = {'content-type': 'broken-client/urlencoded-stupid'}; - gently.expect(form, '_initUrlencoded'); - form._parseContentType(); - - var BOUNDARY = '---------------------------57814261102167618332366269'; - form.headers = {'content-type': 'multipart/form-data; boundary='+BOUNDARY}; - - gently.expect(form, '_initMultipart', function(boundary) { - assert.equal(boundary, BOUNDARY); - }); - form._parseContentType(); - - (function testQuotedBoundary() { - form.headers = {'content-type': 'multipart/form-data; boundary="' + BOUNDARY + '"'}; - - gently.expect(form, '_initMultipart', function(boundary) { - assert.equal(boundary, BOUNDARY); - }); - form._parseContentType(); - })(); - - (function testNoBoundary() { - form.headers = {'content-type': 'multipart/form-data'}; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/no multipart boundary/i)); - }); - form._parseContentType(); - })(); - - (function testNoContentType() { - form.headers = {}; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/no content-type/i)); - }); - form._parseContentType(); - })(); - - (function testUnknownContentType() { - form.headers = {'content-type': 'invalid'}; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/unknown content-type/i)); - }); - form._parseContentType(); - })(); -}); - -test(function parseContentLength() { - var HEADERS = {}; - - form.headers = {}; - form._parseContentLength(); - assert.strictEqual(form.bytesReceived, null); - assert.strictEqual(form.bytesExpected, null); - - form.headers['content-length'] = '8'; - gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { - assert.equal(event, 'progress'); - assert.equal(bytesReceived, 0); - assert.equal(bytesExpected, 8); - }); - form._parseContentLength(); - assert.strictEqual(form.bytesReceived, 0); - assert.strictEqual(form.bytesExpected, 8); - - // JS can be evil, lets make sure we are not - form.headers['content-length'] = '08'; - gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { - assert.equal(event, 'progress'); - assert.equal(bytesReceived, 0); - assert.equal(bytesExpected, 8); - }); - form._parseContentLength(); - assert.strictEqual(form.bytesExpected, 8); -}); - -test(function _initMultipart() { - var BOUNDARY = '123', - PARSER; - - gently.expect(MultipartParserStub, 'new', function() { - PARSER = this; - }); - - gently.expect(MultipartParserStub.prototype, 'initWithBoundary', function(boundary) { - assert.equal(boundary, BOUNDARY); - }); - - form._initMultipart(BOUNDARY); - assert.equal(form.type, 'multipart'); - assert.strictEqual(form._parser, PARSER); - - (function testRegularField() { - var PART; - gently.expect(StreamStub, 'new', function() { - PART = this; - }); - - gently.expect(form, 'onPart', function(part) { - assert.strictEqual(part, PART); - assert.deepEqual - ( part.headers - , { 'content-disposition': 'form-data; name="field1"' - , 'foo': 'bar' - } - ); - assert.equal(part.name, 'field1'); - - var strings = ['hello', ' world']; - gently.expect(part, 'emit', 2, function(event, b) { - assert.equal(event, 'data'); - assert.equal(b.toString(), strings.shift()); - }); - - gently.expect(part, 'emit', function(event, b) { - assert.equal(event, 'end'); - }); - }); - - PARSER.onPartBegin(); - PARSER.onHeaderField(new Buffer('content-disposition'), 0, 10); - PARSER.onHeaderField(new Buffer('content-disposition'), 10, 19); - PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 0, 14); - PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 14, 24); - PARSER.onHeaderEnd(); - PARSER.onHeaderField(new Buffer('foo'), 0, 3); - PARSER.onHeaderValue(new Buffer('bar'), 0, 3); - PARSER.onHeaderEnd(); - PARSER.onHeadersEnd(); - PARSER.onPartData(new Buffer('hello world'), 0, 5); - PARSER.onPartData(new Buffer('hello world'), 5, 11); - PARSER.onPartEnd(); - })(); - - (function testFileField() { - var PART; - gently.expect(StreamStub, 'new', function() { - PART = this; - }); - - gently.expect(form, 'onPart', function(part) { - assert.deepEqual - ( part.headers - , { 'content-disposition': 'form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"' - , 'content-type': 'text/plain' - } - ); - assert.equal(part.name, 'field2'); - assert.equal(part.filename, 'Sun"et.jpg'); - assert.equal(part.mime, 'text/plain'); - - gently.expect(part, 'emit', function(event, b) { - assert.equal(event, 'data'); - assert.equal(b.toString(), '... contents of file1.txt ...'); - }); - - gently.expect(part, 'emit', function(event, b) { - assert.equal(event, 'end'); - }); - }); - - PARSER.onPartBegin(); - PARSER.onHeaderField(new Buffer('content-disposition'), 0, 19); - PARSER.onHeaderValue(new Buffer('form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"'), 0, 85); - PARSER.onHeaderEnd(); - PARSER.onHeaderField(new Buffer('Content-Type'), 0, 12); - PARSER.onHeaderValue(new Buffer('text/plain'), 0, 10); - PARSER.onHeaderEnd(); - PARSER.onHeadersEnd(); - PARSER.onPartData(new Buffer('... contents of file1.txt ...'), 0, 29); - PARSER.onPartEnd(); - })(); - - (function testEnd() { - gently.expect(form, '_maybeEnd'); - PARSER.onEnd(); - assert.ok(form.ended); - })(); -}); - -test(function _fileName() { - // TODO - return; -}); - -test(function _initUrlencoded() { - var PARSER; - - gently.expect(QuerystringParserStub, 'new', function() { - PARSER = this; - }); - - form._initUrlencoded(); - assert.equal(form.type, 'urlencoded'); - assert.strictEqual(form._parser, PARSER); - - (function testOnField() { - var KEY = 'KEY', VAL = 'VAL'; - gently.expect(form, 'emit', function(field, key, val) { - assert.equal(field, 'field'); - assert.equal(key, KEY); - assert.equal(val, VAL); - }); - - PARSER.onField(KEY, VAL); - })(); - - (function testOnEnd() { - gently.expect(form, '_maybeEnd'); - - PARSER.onEnd(); - assert.equal(form.ended, true); - })(); -}); - -test(function _error() { - var ERR = new Error('bla'); - - gently.expect(form, 'pause'); - gently.expect(form, 'emit', function(event, err) { - assert.equal(event, 'error'); - assert.strictEqual(err, ERR); - }); - - form._error(ERR); - assert.strictEqual(form.error, ERR); - - // make sure _error only does its thing once - form._error(ERR); -}); - -test(function onPart() { - var PART = {}; - gently.expect(form, 'handlePart', function(part) { - assert.strictEqual(part, PART); - }); - - form.onPart(PART); -}); - -test(function handlePart() { - (function testUtf8Field() { - var PART = new events.EventEmitter(); - PART.name = 'my_field'; - - gently.expect(form, 'emit', function(event, field, value) { - assert.equal(event, 'field'); - assert.equal(field, 'my_field'); - assert.equal(value, 'hello world: €'); - }); - - form.handlePart(PART); - PART.emit('data', new Buffer('hello')); - PART.emit('data', new Buffer(' world: ')); - PART.emit('data', new Buffer([0xE2])); - PART.emit('data', new Buffer([0x82, 0xAC])); - PART.emit('end'); - })(); - - (function testBinaryField() { - var PART = new events.EventEmitter(); - PART.name = 'my_field2'; - - gently.expect(form, 'emit', function(event, field, value) { - assert.equal(event, 'field'); - assert.equal(field, 'my_field2'); - assert.equal(value, 'hello world: '+new Buffer([0xE2, 0x82, 0xAC]).toString('binary')); - }); - - form.encoding = 'binary'; - form.handlePart(PART); - PART.emit('data', new Buffer('hello')); - PART.emit('data', new Buffer(' world: ')); - PART.emit('data', new Buffer([0xE2])); - PART.emit('data', new Buffer([0x82, 0xAC])); - PART.emit('end'); - })(); - - (function testFieldSize() { - form.maxFieldsSize = 8; - var PART = new events.EventEmitter(); - PART.name = 'my_field'; - - gently.expect(form, '_error', function(err) { - assert.equal(err.message, 'maxFieldsSize exceeded, received 9 bytes of field data'); - }); - - form.handlePart(PART); - form._fieldsSize = 1; - PART.emit('data', new Buffer(7)); - PART.emit('data', new Buffer(1)); - })(); - - (function testFilePart() { - var PART = new events.EventEmitter(), - FILE = new events.EventEmitter(), - PATH = '/foo/bar'; - - PART.name = 'my_file'; - PART.filename = 'sweet.txt'; - PART.mime = 'sweet.txt'; - - gently.expect(form, '_uploadPath', function(filename) { - assert.equal(filename, PART.filename); - return PATH; - }); - - gently.expect(FileStub, 'new', function(properties) { - assert.equal(properties.path, PATH); - assert.equal(properties.name, PART.filename); - assert.equal(properties.type, PART.mime); - FILE = this; - - gently.expect(form, 'emit', function (event, field, file) { - assert.equal(event, 'fileBegin'); - assert.strictEqual(field, PART.name); - assert.strictEqual(file, FILE); - }); - - gently.expect(FILE, 'open'); - }); - - form.handlePart(PART); - assert.equal(form._flushing, 1); - - var BUFFER; - gently.expect(form, 'pause'); - gently.expect(FILE, 'write', function(buffer, cb) { - assert.strictEqual(buffer, BUFFER); - gently.expect(form, 'resume'); - // @todo handle cb(new Err) - cb(); - }); - - PART.emit('data', BUFFER = new Buffer('test')); - - gently.expect(FILE, 'end', function(cb) { - gently.expect(form, 'emit', function(event, field, file) { - assert.equal(event, 'file'); - assert.strictEqual(file, FILE); - }); - - gently.expect(form, '_maybeEnd'); - - cb(); - assert.equal(form._flushing, 0); - }); - - PART.emit('end'); - })(); -}); - -test(function _uploadPath() { - (function testUniqueId() { - var UUID_A, UUID_B; - gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { - assert.equal(uploadDir, form.uploadDir); - UUID_A = uuid; - }); - form._uploadPath(); - - gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { - UUID_B = uuid; - }); - form._uploadPath(); - - assert.notEqual(UUID_A, UUID_B); - })(); - - (function testFileExtension() { - form.keepExtensions = true; - var FILENAME = 'foo.jpg', - EXT = '.bar'; - - gently.expect(GENTLY.hijacked.path, 'extname', function(filename) { - assert.equal(filename, FILENAME); - gently.restore(path, 'extname'); - - return EXT; - }); - - gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, name) { - assert.equal(path.extname(name), EXT); - }); - form._uploadPath(FILENAME); - })(); -}); - -test(function _maybeEnd() { - gently.expect(form, 'emit', 0); - form._maybeEnd(); - - form.ended = true; - form._flushing = 1; - form._maybeEnd(); - - gently.expect(form, 'emit', function(event) { - assert.equal(event, 'end'); - }); - - form.ended = true; - form._flushing = 0; - form._maybeEnd(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js deleted file mode 100644 index d8dc968..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +++ /dev/null @@ -1,50 +0,0 @@ -var common = require('../common'); -var multipartParser = require(common.lib + '/multipart_parser'), - MultipartParser = multipartParser.MultipartParser, - events = require('events'), - Buffer = require('buffer').Buffer, - parser; - -function test(test) { - parser = new MultipartParser(); - test(); -} - -test(function constructor() { - assert.equal(parser.boundary, null); - assert.equal(parser.state, 0); - assert.equal(parser.flags, 0); - assert.equal(parser.boundaryChars, null); - assert.equal(parser.index, null); - assert.equal(parser.lookbehind, null); - assert.equal(parser.constructor.name, 'MultipartParser'); -}); - -test(function initWithBoundary() { - var boundary = 'abc'; - parser.initWithBoundary(boundary); - assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]); - assert.equal(parser.state, multipartParser.START); - - assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true}); -}); - -test(function parserError() { - var boundary = 'abc', - buffer = new Buffer(5); - - parser.initWithBoundary(boundary); - buffer.write('--ad', 'ascii', 0); - assert.equal(parser.write(buffer), 3); -}); - -test(function end() { - (function testError() { - assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain()); - })(); - - (function testRegular() { - parser.state = multipartParser.END; - assert.strictEqual(parser.end(), undefined); - })(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js deleted file mode 100644 index 54d3e2d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +++ /dev/null @@ -1,45 +0,0 @@ -var common = require('../common'); -var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser, - Buffer = require('buffer').Buffer, - gently, - parser; - -function test(test) { - gently = new Gently(); - parser = new QuerystringParser(); - test(); - gently.verify(test.name); -} - -test(function constructor() { - assert.equal(parser.buffer, ''); - assert.equal(parser.constructor.name, 'QuerystringParser'); -}); - -test(function write() { - var a = new Buffer('a=1'); - assert.equal(parser.write(a), a.length); - - var b = new Buffer('&b=2'); - parser.write(b); - assert.equal(parser.buffer, a + b); -}); - -test(function end() { - var FIELDS = {a: ['b', {c: 'd'}], e: 'f'}; - - gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) { - assert.equal(str, parser.buffer); - return FIELDS; - }); - - gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) { - assert.deepEqual(FIELDS[key], val); - }); - - gently.expect(parser, 'onEnd'); - - parser.buffer = 'my buffer'; - parser.end(); - assert.equal(parser.buffer, ''); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js deleted file mode 100644 index 479e46d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +++ /dev/null @@ -1,75 +0,0 @@ -var common = require('../common'); -var BOUNDARY = '---------------------------10102754414578508781458777923', - FIXTURE = TEST_FIXTURES+'/multi_video.upload', - fs = require('fs'), - util = require(common.lib + '/util'), - http = require('http'), - formidable = require(common.lib + '/index'), - server = http.createServer(); - -server.on('request', function(req, res) { - var form = new formidable.IncomingForm(), - uploads = {}; - - form.uploadDir = TEST_TMP; - form.hash = 'sha1'; - form.parse(req); - - form - .on('fileBegin', function(field, file) { - assert.equal(field, 'upload'); - - var tracker = {file: file, progress: [], ended: false}; - uploads[file.filename] = tracker; - file - .on('progress', function(bytesReceived) { - tracker.progress.push(bytesReceived); - assert.equal(bytesReceived, file.length); - }) - .on('end', function() { - tracker.ended = true; - }); - }) - .on('field', function(field, value) { - assert.equal(field, 'title'); - assert.equal(value, ''); - }) - .on('file', function(field, file) { - assert.equal(field, 'upload'); - assert.strictEqual(uploads[file.filename].file, file); - }) - .on('end', function() { - assert.ok(uploads['shortest_video.flv']); - assert.ok(uploads['shortest_video.flv'].ended); - assert.ok(uploads['shortest_video.flv'].progress.length > 3); - assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a'); - assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.length); - assert.ok(uploads['shortest_video.mp4']); - assert.ok(uploads['shortest_video.mp4'].ended); - assert.ok(uploads['shortest_video.mp4'].progress.length > 3); - assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f'); - - server.close(); - res.writeHead(200); - res.end('good'); - }); -}); - -server.listen(TEST_PORT, function() { - var client = http.createClient(TEST_PORT), - stat = fs.statSync(FIXTURE), - headers = { - 'content-type': 'multipart/form-data; boundary='+BOUNDARY, - 'content-length': stat.size, - } - request = client.request('POST', '/', headers), - fixture = new fs.ReadStream(FIXTURE); - - fixture - .on('data', function(b) { - request.write(b); - }) - .on('end', function() { - request.end(); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js deleted file mode 100644 index 50b2361..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -require('urun')(__dirname) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js deleted file mode 100644 index fe2ac1c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +++ /dev/null @@ -1,63 +0,0 @@ -var common = require('../common'); -var test = require('utest'); -var assert = common.assert; -var IncomingForm = common.require('incoming_form').IncomingForm; -var path = require('path'); - -var form; -test('IncomingForm', { - before: function() { - form = new IncomingForm(); - }, - - '#_fileName with regular characters': function() { - var filename = 'foo.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'foo.txt'); - }, - - '#_fileName with unescaped quote': function() { - var filename = 'my".txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); - }, - - '#_fileName with escaped quote': function() { - var filename = 'my%22.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); - }, - - '#_fileName with bad quote and additional sub-header': function() { - var filename = 'my".txt'; - var header = makeHeader(filename) + '; foo="bar"'; - assert.equal(form._fileName(header), filename); - }, - - '#_fileName with semicolon': function() { - var filename = 'my;.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my;.txt'); - }, - - '#_fileName with utf8 character': function() { - var filename = 'my☃.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt'); - }, - - '#_uploadPath strips harmful characters from extension when keepExtensions': function() { - form.keepExtensions = true; - - var ext = path.extname(form._uploadPath('fine.jpg?foo=bar')); - assert.equal(ext, '.jpg'); - - var ext = path.extname(form._uploadPath('fine?foo=bar')); - assert.equal(ext, ''); - - var ext = path.extname(form._uploadPath('super.cr2+dsad')); - assert.equal(ext, '.cr2'); - - var ext = path.extname(form._uploadPath('super.bar')); - assert.equal(ext, '.bar'); - }, -}); - -function makeHeader(filename) { - return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"'; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js deleted file mode 100644 index 9f1cef8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +++ /dev/null @@ -1,47 +0,0 @@ -var http = require('http'); -var fs = require('fs'); -var connections = 0; - -var server = http.createServer(function(req, res) { - var socket = req.socket; - console.log('Request: %s %s -> %s', req.method, req.url, socket.filename); - - req.on('end', function() { - if (req.url !== '/') { - res.end(JSON.stringify({ - method: req.method, - url: req.url, - filename: socket.filename, - })); - return; - } - - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
      '+ - '
      '+ - '
      '+ - ''+ - '
      ' - ); - }); -}); - -server.on('connection', function(socket) { - connections++; - - socket.id = connections; - socket.filename = 'connection-' + socket.id + '.http'; - socket.file = fs.createWriteStream(socket.filename); - socket.pipe(socket.file); - - console.log('--> %s', socket.filename); - socket.on('close', function() { - console.log('<-- %s', socket.filename); - }); -}); - -var port = process.env.PORT || 8080; -server.listen(port, function() { - console.log('Recording connections on port %s', port); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md deleted file mode 100644 index c8aa68f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/History.md +++ /dev/null @@ -1,5 +0,0 @@ - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile deleted file mode 100644 index 4e9c8d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md deleted file mode 100644 index 1cdd68a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/Readme.md +++ /dev/null @@ -1,29 +0,0 @@ - -# pause - - Pause streams... - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js deleted file mode 100644 index 1b7b379..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/index.js +++ /dev/null @@ -1,29 +0,0 @@ - -module.exports = function(obj){ - var onData - , onEnd - , events = []; - - // buffer data - obj.on('data', onData = function(data, encoding){ - events.push(['data', data, encoding]); - }); - - // buffer end - obj.on('end', onEnd = function(data, encoding){ - events.push(['end', data, encoding]); - }); - - return { - end: function(){ - obj.removeListener('data', onData); - obj.removeListener('end', onEnd); - }, - resume: function(){ - this.end(); - for (var i = 0, len = events.length; i < len; ++i) { - obj.emit.apply(obj, events[i]); - } - } - }; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json deleted file mode 100644 index 73cfe40..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/pause/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "pause", - "version": "0.0.1", - "description": "Pause streams...", - "keywords": [], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "main": "index", - "readme": "\n# pause\n\n Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "pause@0.0.1", - "_from": "pause@0.0.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules deleted file mode 100644 index 49e31da..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "support/expresso"] - path = support/expresso - url = git://github.com/visionmedia/expresso.git -[submodule "support/should"] - path = support/should - url = git://github.com/visionmedia/should.js.git diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml deleted file mode 100644 index 2c0a8f6..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.4 \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md deleted file mode 100644 index 1feef45..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/History.md +++ /dev/null @@ -1,83 +0,0 @@ - -0.5.1 / 2012-09-18 -================== - - * fix encoded `=`. Closes #43 - -0.5.0 / 2012-05-04 -================== - - * Added component support - -0.4.2 / 2012-02-08 -================== - - * Fixed: ensure objects are created when appropriate not arrays [aheckmann] - -0.4.1 / 2012-01-26 -================== - - * Fixed stringify()ing numbers. Closes #23 - -0.4.0 / 2011-11-21 -================== - - * Allow parsing of an existing object (for `bodyParser()`) [jackyz] - * Replaced expresso with mocha - -0.3.2 / 2011-11-08 -================== - - * Fixed global variable leak - -0.3.1 / 2011-08-17 -================== - - * Added `try/catch` around malformed uri components - * Add test coverage for Array native method bleed-though - -0.3.0 / 2011-07-19 -================== - - * Allow `array[index]` and `object[property]` syntaxes [Aria Stewart] - -0.2.0 / 2011-06-29 -================== - - * Added `qs.stringify()` [Cory Forsyth] - -0.1.0 / 2011-04-13 -================== - - * Added jQuery-ish array support - -0.0.7 / 2011-03-13 -================== - - * Fixed; handle empty string and `== null` in `qs.parse()` [dmit] - allows for convenient `qs.parse(url.parse(str).query)` - -0.0.6 / 2011-02-14 -================== - - * Fixed; support for implicit arrays - -0.0.4 / 2011-02-09 -================== - - * Fixed `+` as a space - -0.0.3 / 2011-02-08 -================== - - * Fixed case when right-hand value contains "]" - -0.0.2 / 2011-02-07 -================== - - * Fixed "=" presence in key - -0.0.1 / 2011-02-07 -================== - - * Initial release \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile deleted file mode 100644 index 0a21cf7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Makefile +++ /dev/null @@ -1,12 +0,0 @@ - -test/browser/qs.js: querystring.js - component build package.json test/browser/qs - -querystring.js: lib/head.js lib/querystring.js lib/tail.js - cat $^ > $@ - -test: - @./node_modules/.bin/mocha \ - --ui bdd - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md deleted file mode 100644 index 27e54a4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/Readme.md +++ /dev/null @@ -1,58 +0,0 @@ -# node-querystring - - query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. - -## Installation - - $ npm install qs - -## Examples - -```js -var qs = require('qs'); - -qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); -// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } - -qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) -// => user[name]=Tobi&user[email]=tobi%40learnboost.com -``` - -## Testing - -Install dev dependencies: - - $ npm install -d - -and execute: - - $ make test - -browser: - - $ open test/browser/index.html - -## License - -(The MIT License) - -Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js deleted file mode 100644 index 97e2c93..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/benchmark.js +++ /dev/null @@ -1,17 +0,0 @@ - -var qs = require('./'); - -var times = 100000 - , start = new Date - , n = times; - -console.log('times: %d', times); - -while (n--) qs.parse('foo=bar'); -console.log('simple: %dms', new Date - start); - -var start = new Date - , n = times; - -while (n--) qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); -console.log('nested: %dms', new Date - start); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json deleted file mode 100644 index ba34ead..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/component.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "querystring", - "description": "Querystring parser / stringifier with nesting support", - "keywords": ["querystring", "query", "parser"], - "main": "lib/querystring.js" -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js deleted file mode 100644 index 27617b7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/examples.js +++ /dev/null @@ -1,51 +0,0 @@ - -/** - * Module dependencies. - */ - -var qs = require('./'); - -var obj = qs.parse('foo'); -console.log(obj) - -var obj = qs.parse('foo=bar=baz'); -console.log(obj) - -var obj = qs.parse('users[]'); -console.log(obj) - -var obj = qs.parse('name=tj&email=tj@vision-media.ca'); -console.log(obj) - -var obj = qs.parse('users[]=tj&users[]=tobi&users[]=jane'); -console.log(obj) - -var obj = qs.parse('user[name][first]=tj&user[name][last]=holowaychuk'); -console.log(obj) - -var obj = qs.parse('users[][name][first]=tj&users[][name][last]=holowaychuk'); -console.log(obj) - -var obj = qs.parse('a=a&a=b&a=c'); -console.log(obj) - -var obj = qs.parse('user[tj]=tj&user[tj]=TJ'); -console.log(obj) - -var obj = qs.parse('user[names]=tj&user[names]=TJ&user[names]=Tyler'); -console.log(obj) - -var obj = qs.parse('user[name][first]=tj&user[name][first]=TJ'); -console.log(obj) - -var obj = qs.parse('user[0]=tj&user[1]=TJ'); -console.log(obj) - -var obj = qs.parse('user[0]=tj&user[]=TJ'); -console.log(obj) - -var obj = qs.parse('user[0]=tj&user[foo]=TJ'); -console.log(obj) - -var str = qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}); -console.log(str); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js deleted file mode 100644 index d177d20..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/querystring'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js deleted file mode 100644 index 55d3817..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/head.js +++ /dev/null @@ -1 +0,0 @@ -;(function(){ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js deleted file mode 100644 index d3689bb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/querystring.js +++ /dev/null @@ -1,262 +0,0 @@ - -/** - * Object#toString() ref for stringify(). - */ - -var toString = Object.prototype.toString; - -/** - * Cache non-integer test regexp. - */ - -var isint = /^[0-9]+$/; - -function promote(parent, key) { - if (parent[key].length == 0) return parent[key] = {}; - var t = {}; - for (var i in parent[key]) t[i] = parent[key][i]; - parent[key] = t; - return t; -} - -function parse(parts, parent, key, val) { - var part = parts.shift(); - // end - if (!part) { - if (Array.isArray(parent[key])) { - parent[key].push(val); - } else if ('object' == typeof parent[key]) { - parent[key] = val; - } else if ('undefined' == typeof parent[key]) { - parent[key] = val; - } else { - parent[key] = [parent[key], val]; - } - // array - } else { - var obj = parent[key] = parent[key] || []; - if (']' == part) { - if (Array.isArray(obj)) { - if ('' != val) obj.push(val); - } else if ('object' == typeof obj) { - obj[Object.keys(obj).length] = val; - } else { - obj = parent[key] = [parent[key], val]; - } - // prop - } else if (~part.indexOf(']')) { - part = part.substr(0, part.length - 1); - if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - // key - } else { - if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - } - } -} - -/** - * Merge parent key/val pair. - */ - -function merge(parent, key, val){ - if (~key.indexOf(']')) { - var parts = key.split('[') - , len = parts.length - , last = len - 1; - parse(parts, parent, 'base', val); - // optimize - } else { - if (!isint.test(key) && Array.isArray(parent.base)) { - var t = {}; - for (var k in parent.base) t[k] = parent.base[k]; - parent.base = t; - } - set(parent.base, key, val); - } - - return parent; -} - -/** - * Parse the given obj. - */ - -function parseObject(obj){ - var ret = { base: {} }; - Object.keys(obj).forEach(function(name){ - merge(ret, name, obj[name]); - }); - return ret.base; -} - -/** - * Parse the given str. - */ - -function parseString(str){ - return String(str) - .split('&') - .reduce(function(ret, pair){ - var eql = pair.indexOf('=') - , brace = lastBraceInKey(pair) - , key = pair.substr(0, brace || eql) - , val = pair.substr(brace || eql, pair.length) - , val = val.substr(val.indexOf('=') + 1, val.length); - - // ?foo - if ('' == key) key = pair, val = ''; - - return merge(ret, decode(key), decode(val)); - }, { base: {} }).base; -} - -/** - * Parse the given query `str` or `obj`, returning an object. - * - * @param {String} str | {Object} obj - * @return {Object} - * @api public - */ - -exports.parse = function(str){ - if (null == str || '' == str) return {}; - return 'object' == typeof str - ? parseObject(str) - : parseString(str); -}; - -/** - * Turn the given `obj` into a query string - * - * @param {Object} obj - * @return {String} - * @api public - */ - -var stringify = exports.stringify = function(obj, prefix) { - if (Array.isArray(obj)) { - return stringifyArray(obj, prefix); - } else if ('[object Object]' == toString.call(obj)) { - return stringifyObject(obj, prefix); - } else if ('string' == typeof obj) { - return stringifyString(obj, prefix); - } else { - return prefix + '=' + obj; - } -}; - -/** - * Stringify the given `str`. - * - * @param {String} str - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyString(str, prefix) { - if (!prefix) throw new TypeError('stringify expects an object'); - return prefix + '=' + encodeURIComponent(str); -} - -/** - * Stringify the given `arr`. - * - * @param {Array} arr - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyArray(arr, prefix) { - var ret = []; - if (!prefix) throw new TypeError('stringify expects an object'); - for (var i = 0; i < arr.length; i++) { - ret.push(stringify(arr[i], prefix + '['+i+']')); - } - return ret.join('&'); -} - -/** - * Stringify the given `obj`. - * - * @param {Object} obj - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyObject(obj, prefix) { - var ret = [] - , keys = Object.keys(obj) - , key; - - for (var i = 0, len = keys.length; i < len; ++i) { - key = keys[i]; - ret.push(stringify(obj[key], prefix - ? prefix + '[' + encodeURIComponent(key) + ']' - : encodeURIComponent(key))); - } - - return ret.join('&'); -} - -/** - * Set `obj`'s `key` to `val` respecting - * the weird and wonderful syntax of a qs, - * where "foo=bar&foo=baz" becomes an array. - * - * @param {Object} obj - * @param {String} key - * @param {String} val - * @api private - */ - -function set(obj, key, val) { - var v = obj[key]; - if (undefined === v) { - obj[key] = val; - } else if (Array.isArray(v)) { - v.push(val); - } else { - obj[key] = [v, val]; - } -} - -/** - * Locate last brace in `str` within the key. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function lastBraceInKey(str) { - var len = str.length - , brace - , c; - for (var i = 0; i < len; ++i) { - c = str[i]; - if (']' == c) brace = false; - if ('[' == c) brace = true; - if ('=' == c && !brace) return i; - } -} - -/** - * Decode `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -function decode(str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (err) { - return str; - } -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js deleted file mode 100644 index 158693a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/lib/tail.js +++ /dev/null @@ -1 +0,0 @@ -})(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json deleted file mode 100644 index 233d5e4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "qs", - "description": "querystring parser", - "version": "0.5.1", - "keywords": [ - "query string", - "parser", - "component" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-querystring.git" - }, - "devDependencies": { - "mocha": "*", - "expect.js": "*" - }, - "component": { - "scripts": { - "querystring": "querystring.js" - } - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "main": "index", - "engines": { - "node": "*" - }, - "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "qs@0.5.1", - "_from": "qs@0.5.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js deleted file mode 100644 index 7466b06..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/querystring.js +++ /dev/null @@ -1,254 +0,0 @@ -;(function(){ - -/** - * Object#toString() ref for stringify(). - */ - -var toString = Object.prototype.toString; - -/** - * Cache non-integer test regexp. - */ - -var isint = /^[0-9]+$/; - -function promote(parent, key) { - if (parent[key].length == 0) return parent[key] = {}; - var t = {}; - for (var i in parent[key]) t[i] = parent[key][i]; - parent[key] = t; - return t; -} - -function parse(parts, parent, key, val) { - var part = parts.shift(); - // end - if (!part) { - if (Array.isArray(parent[key])) { - parent[key].push(val); - } else if ('object' == typeof parent[key]) { - parent[key] = val; - } else if ('undefined' == typeof parent[key]) { - parent[key] = val; - } else { - parent[key] = [parent[key], val]; - } - // array - } else { - var obj = parent[key] = parent[key] || []; - if (']' == part) { - if (Array.isArray(obj)) { - if ('' != val) obj.push(val); - } else if ('object' == typeof obj) { - obj[Object.keys(obj).length] = val; - } else { - obj = parent[key] = [parent[key], val]; - } - // prop - } else if (~part.indexOf(']')) { - part = part.substr(0, part.length - 1); - if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - // key - } else { - if (!isint.test(part) && Array.isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - } - } -} - -/** - * Merge parent key/val pair. - */ - -function merge(parent, key, val){ - if (~key.indexOf(']')) { - var parts = key.split('[') - , len = parts.length - , last = len - 1; - parse(parts, parent, 'base', val); - // optimize - } else { - if (!isint.test(key) && Array.isArray(parent.base)) { - var t = {}; - for (var k in parent.base) t[k] = parent.base[k]; - parent.base = t; - } - set(parent.base, key, val); - } - - return parent; -} - -/** - * Parse the given obj. - */ - -function parseObject(obj){ - var ret = { base: {} }; - Object.keys(obj).forEach(function(name){ - merge(ret, name, obj[name]); - }); - return ret.base; -} - -/** - * Parse the given str. - */ - -function parseString(str){ - return String(str) - .split('&') - .reduce(function(ret, pair){ - try{ - pair = decodeURIComponent(pair.replace(/\+/g, ' ')); - } catch(e) { - // ignore - } - - var eql = pair.indexOf('=') - , brace = lastBraceInKey(pair) - , key = pair.substr(0, brace || eql) - , val = pair.substr(brace || eql, pair.length) - , val = val.substr(val.indexOf('=') + 1, val.length); - - // ?foo - if ('' == key) key = pair, val = ''; - - return merge(ret, key, val); - }, { base: {} }).base; -} - -/** - * Parse the given query `str` or `obj`, returning an object. - * - * @param {String} str | {Object} obj - * @return {Object} - * @api public - */ - -exports.parse = function(str){ - if (null == str || '' == str) return {}; - return 'object' == typeof str - ? parseObject(str) - : parseString(str); -}; - -/** - * Turn the given `obj` into a query string - * - * @param {Object} obj - * @return {String} - * @api public - */ - -var stringify = exports.stringify = function(obj, prefix) { - if (Array.isArray(obj)) { - return stringifyArray(obj, prefix); - } else if ('[object Object]' == toString.call(obj)) { - return stringifyObject(obj, prefix); - } else if ('string' == typeof obj) { - return stringifyString(obj, prefix); - } else { - return prefix + '=' + obj; - } -}; - -/** - * Stringify the given `str`. - * - * @param {String} str - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyString(str, prefix) { - if (!prefix) throw new TypeError('stringify expects an object'); - return prefix + '=' + encodeURIComponent(str); -} - -/** - * Stringify the given `arr`. - * - * @param {Array} arr - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyArray(arr, prefix) { - var ret = []; - if (!prefix) throw new TypeError('stringify expects an object'); - for (var i = 0; i < arr.length; i++) { - ret.push(stringify(arr[i], prefix + '['+i+']')); - } - return ret.join('&'); -} - -/** - * Stringify the given `obj`. - * - * @param {Object} obj - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyObject(obj, prefix) { - var ret = [] - , keys = Object.keys(obj) - , key; - - for (var i = 0, len = keys.length; i < len; ++i) { - key = keys[i]; - ret.push(stringify(obj[key], prefix - ? prefix + '[' + encodeURIComponent(key) + ']' - : encodeURIComponent(key))); - } - - return ret.join('&'); -} - -/** - * Set `obj`'s `key` to `val` respecting - * the weird and wonderful syntax of a qs, - * where "foo=bar&foo=baz" becomes an array. - * - * @param {Object} obj - * @param {String} key - * @param {String} val - * @api private - */ - -function set(obj, key, val) { - var v = obj[key]; - if (undefined === v) { - obj[key] = val; - } else if (Array.isArray(v)) { - v.push(val); - } else { - obj[key] = [v, val]; - } -} - -/** - * Locate last brace in `str` within the key. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function lastBraceInKey(str) { - var len = str.length - , brace - , c; - for (var i = 0; i < len; ++i) { - c = str[i]; - if (']' == c) brace = false; - if ('[' == c) brace = true; - if ('=' == c && !brace) return i; - } -} -})(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js deleted file mode 100644 index 76aa4e8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/expect.js +++ /dev/null @@ -1,1202 +0,0 @@ - -(function (global, module) { - - if ('undefined' == typeof module) { - var module = { exports: {} } - , exports = module.exports - } - - /** - * Exports. - */ - - module.exports = expect; - expect.Assertion = Assertion; - - /** - * Exports version. - */ - - expect.version = '0.1.2'; - - /** - * Possible assertion flags. - */ - - var flags = { - not: ['to', 'be', 'have', 'include', 'only'] - , to: ['be', 'have', 'include', 'only', 'not'] - , only: ['have'] - , have: ['own'] - , be: ['an'] - }; - - function expect (obj) { - return new Assertion(obj); - } - - /** - * Constructor - * - * @api private - */ - - function Assertion (obj, flag, parent) { - this.obj = obj; - this.flags = {}; - - if (undefined != parent) { - this.flags[flag] = true; - - for (var i in parent.flags) { - if (parent.flags.hasOwnProperty(i)) { - this.flags[i] = true; - } - } - } - - var $flags = flag ? flags[flag] : keys(flags) - , self = this - - if ($flags) { - for (var i = 0, l = $flags.length; i < l; i++) { - // avoid recursion - if (this.flags[$flags[i]]) continue; - - var name = $flags[i] - , assertion = new Assertion(this.obj, name, this) - - if ('function' == typeof Assertion.prototype[name]) { - // clone the function, make sure we dont touch the prot reference - var old = this[name]; - this[name] = function () { - return old.apply(self, arguments); - } - - for (var fn in Assertion.prototype) { - if (Assertion.prototype.hasOwnProperty(fn) && fn != name) { - this[name][fn] = bind(assertion[fn], assertion); - } - } - } else { - this[name] = assertion; - } - } - } - }; - - /** - * Performs an assertion - * - * @api private - */ - - Assertion.prototype.assert = function (truth, msg, error) { - var msg = this.flags.not ? error : msg - , ok = this.flags.not ? !truth : truth; - - if (!ok) { - throw new Error(msg); - } - - this.and = new Assertion(this.obj); - }; - - /** - * Check if the value is truthy - * - * @api public - */ - - Assertion.prototype.ok = function () { - this.assert( - !!this.obj - , 'expected ' + i(this.obj) + ' to be truthy' - , 'expected ' + i(this.obj) + ' to be falsy'); - }; - - /** - * Assert that the function throws. - * - * @param {Function|RegExp} callback, or regexp to match error string against - * @api public - */ - - Assertion.prototype.throwError = - Assertion.prototype.throwException = function (fn) { - expect(this.obj).to.be.a('function'); - - var thrown = false - , not = this.flags.not - - try { - this.obj(); - } catch (e) { - if ('function' == typeof fn) { - fn(e); - } else if ('object' == typeof fn) { - var subject = 'string' == typeof e ? e : e.message; - if (not) { - expect(subject).to.not.match(fn); - } else { - expect(subject).to.match(fn); - } - } - thrown = true; - } - - if ('object' == typeof fn && not) { - // in the presence of a matcher, ensure the `not` only applies to - // the matching. - this.flags.not = false; - } - - var name = this.obj.name || 'fn'; - this.assert( - thrown - , 'expected ' + name + ' to throw an exception' - , 'expected ' + name + ' not to throw an exception'); - }; - - /** - * Checks if the array is empty. - * - * @api public - */ - - Assertion.prototype.empty = function () { - var expectation; - - if ('object' == typeof this.obj && null !== this.obj && !isArray(this.obj)) { - if ('number' == typeof this.obj.length) { - expectation = !this.obj.length; - } else { - expectation = !keys(this.obj).length; - } - } else { - if ('string' != typeof this.obj) { - expect(this.obj).to.be.an('object'); - } - - expect(this.obj).to.have.property('length'); - expectation = !this.obj.length; - } - - this.assert( - expectation - , 'expected ' + i(this.obj) + ' to be empty' - , 'expected ' + i(this.obj) + ' to not be empty'); - return this; - }; - - /** - * Checks if the obj exactly equals another. - * - * @api public - */ - - Assertion.prototype.be = - Assertion.prototype.equal = function (obj) { - this.assert( - obj === this.obj - , 'expected ' + i(this.obj) + ' to equal ' + i(obj) - , 'expected ' + i(this.obj) + ' to not equal ' + i(obj)); - return this; - }; - - /** - * Checks if the obj sortof equals another. - * - * @api public - */ - - Assertion.prototype.eql = function (obj) { - this.assert( - expect.eql(obj, this.obj) - , 'expected ' + i(this.obj) + ' to sort of equal ' + i(obj) - , 'expected ' + i(this.obj) + ' to sort of not equal ' + i(obj)); - return this; - }; - - /** - * Assert within start to finish (inclusive). - * - * @param {Number} start - * @param {Number} finish - * @api public - */ - - Assertion.prototype.within = function (start, finish) { - var range = start + '..' + finish; - this.assert( - this.obj >= start && this.obj <= finish - , 'expected ' + i(this.obj) + ' to be within ' + range - , 'expected ' + i(this.obj) + ' to not be within ' + range); - return this; - }; - - /** - * Assert typeof / instance of - * - * @api public - */ - - Assertion.prototype.a = - Assertion.prototype.an = function (type) { - if ('string' == typeof type) { - // proper english in error msg - var n = /^[aeiou]/.test(type) ? 'n' : ''; - - // typeof with support for 'array' - this.assert( - 'array' == type ? isArray(this.obj) : - 'object' == type - ? 'object' == typeof this.obj && null !== this.obj - : type == typeof this.obj - , 'expected ' + i(this.obj) + ' to be a' + n + ' ' + type - , 'expected ' + i(this.obj) + ' not to be a' + n + ' ' + type); - } else { - // instanceof - var name = type.name || 'supplied constructor'; - this.assert( - this.obj instanceof type - , 'expected ' + i(this.obj) + ' to be an instance of ' + name - , 'expected ' + i(this.obj) + ' not to be an instance of ' + name); - } - - return this; - }; - - /** - * Assert numeric value above _n_. - * - * @param {Number} n - * @api public - */ - - Assertion.prototype.greaterThan = - Assertion.prototype.above = function (n) { - this.assert( - this.obj > n - , 'expected ' + i(this.obj) + ' to be above ' + n - , 'expected ' + i(this.obj) + ' to be below ' + n); - return this; - }; - - /** - * Assert numeric value below _n_. - * - * @param {Number} n - * @api public - */ - - Assertion.prototype.lessThan = - Assertion.prototype.below = function (n) { - this.assert( - this.obj < n - , 'expected ' + i(this.obj) + ' to be below ' + n - , 'expected ' + i(this.obj) + ' to be above ' + n); - return this; - }; - - /** - * Assert string value matches _regexp_. - * - * @param {RegExp} regexp - * @api public - */ - - Assertion.prototype.match = function (regexp) { - this.assert( - regexp.exec(this.obj) - , 'expected ' + i(this.obj) + ' to match ' + regexp - , 'expected ' + i(this.obj) + ' not to match ' + regexp); - return this; - }; - - /** - * Assert property "length" exists and has value of _n_. - * - * @param {Number} n - * @api public - */ - - Assertion.prototype.length = function (n) { - expect(this.obj).to.have.property('length'); - var len = this.obj.length; - this.assert( - n == len - , 'expected ' + i(this.obj) + ' to have a length of ' + n + ' but got ' + len - , 'expected ' + i(this.obj) + ' to not have a length of ' + len); - return this; - }; - - /** - * Assert property _name_ exists, with optional _val_. - * - * @param {String} name - * @param {Mixed} val - * @api public - */ - - Assertion.prototype.property = function (name, val) { - if (this.flags.own) { - this.assert( - Object.prototype.hasOwnProperty.call(this.obj, name) - , 'expected ' + i(this.obj) + ' to have own property ' + i(name) - , 'expected ' + i(this.obj) + ' to not have own property ' + i(name)); - return this; - } - - if (this.flags.not && undefined !== val) { - if (undefined === this.obj[name]) { - throw new Error(i(this.obj) + ' has no property ' + i(name)); - } - } else { - var hasProp; - try { - hasProp = name in this.obj - } catch (e) { - hasProp = undefined !== this.obj[name] - } - - this.assert( - hasProp - , 'expected ' + i(this.obj) + ' to have a property ' + i(name) - , 'expected ' + i(this.obj) + ' to not have a property ' + i(name)); - } - - if (undefined !== val) { - this.assert( - val === this.obj[name] - , 'expected ' + i(this.obj) + ' to have a property ' + i(name) - + ' of ' + i(val) + ', but got ' + i(this.obj[name]) - , 'expected ' + i(this.obj) + ' to not have a property ' + i(name) - + ' of ' + i(val)); - } - - this.obj = this.obj[name]; - return this; - }; - - /** - * Assert that the array contains _obj_ or string contains _obj_. - * - * @param {Mixed} obj|string - * @api public - */ - - Assertion.prototype.string = - Assertion.prototype.contain = function (obj) { - if ('string' == typeof this.obj) { - this.assert( - ~this.obj.indexOf(obj) - , 'expected ' + i(this.obj) + ' to contain ' + i(obj) - , 'expected ' + i(this.obj) + ' to not contain ' + i(obj)); - } else { - this.assert( - ~indexOf(this.obj, obj) - , 'expected ' + i(this.obj) + ' to contain ' + i(obj) - , 'expected ' + i(this.obj) + ' to not contain ' + i(obj)); - } - return this; - }; - - /** - * Assert exact keys or inclusion of keys by using - * the `.own` modifier. - * - * @param {Array|String ...} keys - * @api public - */ - - Assertion.prototype.key = - Assertion.prototype.keys = function ($keys) { - var str - , ok = true; - - $keys = isArray($keys) - ? $keys - : Array.prototype.slice.call(arguments); - - if (!$keys.length) throw new Error('keys required'); - - var actual = keys(this.obj) - , len = $keys.length; - - // Inclusion - ok = every($keys, function (key) { - return ~indexOf(actual, key); - }); - - // Strict - if (!this.flags.not && this.flags.only) { - ok = ok && $keys.length == actual.length; - } - - // Key string - if (len > 1) { - $keys = map($keys, function (key) { - return i(key); - }); - var last = $keys.pop(); - str = $keys.join(', ') + ', and ' + last; - } else { - str = i($keys[0]); - } - - // Form - str = (len > 1 ? 'keys ' : 'key ') + str; - - // Have / include - str = (!this.flags.only ? 'include ' : 'only have ') + str; - - // Assertion - this.assert( - ok - , 'expected ' + i(this.obj) + ' to ' + str - , 'expected ' + i(this.obj) + ' to not ' + str); - - return this; - }; - - /** - * Function bind implementation. - */ - - function bind (fn, scope) { - return function () { - return fn.apply(scope, arguments); - } - } - - /** - * Array every compatibility - * - * @see bit.ly/5Fq1N2 - * @api public - */ - - function every (arr, fn, thisObj) { - var scope = thisObj || global; - for (var i = 0, j = arr.length; i < j; ++i) { - if (!fn.call(scope, arr[i], i, arr)) { - return false; - } - } - return true; - }; - - /** - * Array indexOf compatibility. - * - * @see bit.ly/a5Dxa2 - * @api public - */ - - function indexOf (arr, o, i) { - if (Array.prototype.indexOf) { - return Array.prototype.indexOf.call(arr, o, i); - } - - if (arr.length === undefined) { - return -1; - } - - for (var j = arr.length, i = i < 0 ? i + j < 0 ? 0 : i + j : i || 0 - ; i < j && arr[i] !== o; i++); - - return j <= i ? -1 : i; - }; - - /** - * Inspects an object. - * - * @see taken from node.js `util` module (copyright Joyent, MIT license) - * @api private - */ - - function i (obj, showHidden, depth) { - var seen = []; - - function stylize (str) { - return str; - }; - - function format (value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (value && typeof value.inspect === 'function' && - // Filter out the util module, it's inspect function is special - value !== exports && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - return value.inspect(recurseTimes); - } - - // Primitive types cannot have properties - switch (typeof value) { - case 'undefined': - return stylize('undefined', 'undefined'); - - case 'string': - var simple = '\'' + json.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return stylize(simple, 'string'); - - case 'number': - return stylize('' + value, 'number'); - - case 'boolean': - return stylize('' + value, 'boolean'); - } - // For some reason typeof null is "object", so special case here. - if (value === null) { - return stylize('null', 'null'); - } - - // Look up the keys of the object. - var visible_keys = keys(value); - var $keys = showHidden ? Object.getOwnPropertyNames(value) : visible_keys; - - // Functions without properties can be shortcutted. - if (typeof value === 'function' && $keys.length === 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - var name = value.name ? ': ' + value.name : ''; - return stylize('[Function' + name + ']', 'special'); - } - } - - // Dates without properties can be shortcutted - if (isDate(value) && $keys.length === 0) { - return stylize(value.toUTCString(), 'date'); - } - - var base, type, braces; - // Determine the object type - if (isArray(value)) { - type = 'Array'; - braces = ['[', ']']; - } else { - type = 'Object'; - braces = ['{', '}']; - } - - // Make functions say that they are functions - if (typeof value === 'function') { - var n = value.name ? ': ' + value.name : ''; - base = (isRegExp(value)) ? ' ' + value : ' [Function' + n + ']'; - } else { - base = ''; - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + value.toUTCString(); - } - - if ($keys.length === 0) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return stylize('' + value, 'regexp'); - } else { - return stylize('[Object]', 'special'); - } - } - - seen.push(value); - - var output = map($keys, function (key) { - var name, str; - if (value.__lookupGetter__) { - if (value.__lookupGetter__(key)) { - if (value.__lookupSetter__(key)) { - str = stylize('[Getter/Setter]', 'special'); - } else { - str = stylize('[Getter]', 'special'); - } - } else { - if (value.__lookupSetter__(key)) { - str = stylize('[Setter]', 'special'); - } - } - } - if (indexOf(visible_keys, key) < 0) { - name = '[' + key + ']'; - } - if (!str) { - if (indexOf(seen, value[key]) < 0) { - if (recurseTimes === null) { - str = format(value[key]); - } else { - str = format(value[key], recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (isArray(value)) { - str = map(str.split('\n'), function (line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + map(str.split('\n'), function (line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = stylize('[Circular]', 'special'); - } - } - if (typeof name === 'undefined') { - if (type === 'Array' && key.match(/^\d+$/)) { - return str; - } - name = json.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = stylize(name, 'string'); - } - } - - return name + ': ' + str; - }); - - seen.pop(); - - var numLinesEst = 0; - var length = reduce(output, function (prev, cur) { - numLinesEst++; - if (indexOf(cur, '\n') >= 0) numLinesEst++; - return prev + cur.length + 1; - }, 0); - - if (length > 50) { - output = braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - - } else { - output = braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; - } - - return output; - } - return format(obj, (typeof depth === 'undefined' ? 2 : depth)); - }; - - function isArray (ar) { - return Object.prototype.toString.call(ar) == '[object Array]'; - }; - - function isRegExp(re) { - var s = '' + re; - return re instanceof RegExp || // easy case - // duck-type for context-switching evalcx case - typeof(re) === 'function' && - re.constructor.name === 'RegExp' && - re.compile && - re.test && - re.exec && - s.match(/^\/.*\/[gim]{0,3}$/); - }; - - function isDate(d) { - if (d instanceof Date) return true; - return false; - }; - - function keys (obj) { - if (Object.keys) { - return Object.keys(obj); - } - - var keys = []; - - for (var i in obj) { - if (Object.prototype.hasOwnProperty.call(obj, i)) { - keys.push(i); - } - } - - return keys; - } - - function map (arr, mapper, that) { - if (Array.prototype.map) { - return Array.prototype.map.call(arr, mapper, that); - } - - var other= new Array(arr.length); - - for (var i= 0, n = arr.length; i= 2) { - var rv = arguments[1]; - } else { - do { - if (i in this) { - rv = this[i++]; - break; - } - - // if array contains no values, no initial value to return - if (++i >= len) - throw new TypeError(); - } while (true); - } - - for (; i < len; i++) { - if (i in this) - rv = fun.call(null, rv, this[i], i, this); - } - - return rv; - }; - - /** - * Asserts deep equality - * - * @see taken from node.js `assert` module (copyright Joyent, MIT license) - * @api private - */ - - expect.eql = function eql (actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - } else if ('undefined' != typeof Buffer - && Buffer.isBuffer(actual) && Buffer.isBuffer(expected)) { - if (actual.length != expected.length) return false; - - for (var i = 0; i < actual.length; i++) { - if (actual[i] !== expected[i]) return false; - } - - return true; - - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == "object", - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical "prototype" property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } - } - - function isUndefinedOrNull (value) { - return value === null || value === undefined; - } - - function isArguments (object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; - } - - function objEquiv (a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical "prototype" property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return expect.eql(a, b); - } - try{ - var ka = keys(a), - kb = keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!expect.eql(a[key], b[key])) - return false; - } - return true; - } - - var json = (function () { - "use strict"; - - if ('object' == typeof JSON && JSON.parse && JSON.stringify) { - return { - parse: nativeJSON.parse - , stringify: nativeJSON.stringify - } - } - - var JSON = {}; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - function date(d, key) { - return isFinite(d.valueOf()) ? - d.getUTCFullYear() + '-' + - f(d.getUTCMonth() + 1) + '-' + - f(d.getUTCDate()) + 'T' + - f(d.getUTCHours()) + ':' + - f(d.getUTCMinutes()) + ':' + - f(d.getUTCSeconds()) + 'Z' : null; - }; - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - - // If the string contains no control characters, no quote characters, and no - // backslash characters, then we can safely slap some quotes around it. - // Otherwise we must also replace the offending characters with safe escape - // sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : '"' + string + '"'; - } - - - function str(key, holder) { - - // Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - - // If the value has a toJSON method, call it to obtain a replacement value. - - if (value instanceof Date) { - value = date(key); - } - - // If we were called with a replacer function, then call the replacer to - // obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - - // What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - - // JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - - // If the value is a boolean or null, convert it to a string. Note: - // typeof null does not produce 'null'. The case is included here in - // the remote chance that this gets fixed someday. - - return String(value); - - // If the type is 'object', we might be dealing with an object or an array or - // null. - - case 'object': - - // Due to a specification blunder in ECMAScript, typeof null is 'object', - // so watch out for that case. - - if (!value) { - return 'null'; - } - - // Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - - // Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - - // The value is an array. Stringify every element. Use null as a placeholder - // for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - - // Join all of the elements together, separated with commas, and wrap them in - // brackets. - - v = partial.length === 0 ? '[]' : gap ? - '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - - // If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - if (typeof rep[i] === 'string') { - k = rep[i]; - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - - // Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - - // Join all of the member texts together, separated with commas, - // and wrap them in braces. - - v = partial.length === 0 ? '{}' : gap ? - '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : - '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - - // If the JSON object does not yet have a stringify method, give it one. - - JSON.stringify = function (value, replacer, space) { - - // The stringify method takes a value and an optional replacer, and an optional - // space parameter, and returns a JSON text. The replacer can be a function - // that can replace values, or an array of strings that will select the keys. - // A default replacer method can be provided. Use of the space parameter can - // produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - - // If the space parameter is a number, make an indent string containing that - // many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - - // If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - - // If there is a replacer, it must be a function or an array. - // Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - - // Make a fake root object containing our value under the key of ''. - // Return the result of stringifying the value. - - return str('', {'': value}); - }; - - // If the JSON object does not yet have a parse method, give it one. - - JSON.parse = function (text, reviver) { - // The parse method takes a text and an optional reviver function, and returns - // a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - - // The walk method is used to recursively walk the resulting structure so - // that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.prototype.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - - // Parsing happens in four stages. In the first stage, we replace certain - // Unicode characters with escape sequences. JavaScript handles many characters - // incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - - // In the second stage, we run the text against regular expressions that look - // for non-JSON patterns. We are especially concerned with '()' and 'new' - // because they can cause invocation, and '=' because it can cause mutation. - // But just to be safe, we want to reject all unexpected forms. - - // We split the second stage into 4 regexp operations in order to work around - // crippling inefficiencies in IE's and Safari's regexp engines. First we - // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we - // replace all simple value tokens with ']' characters. Third, we delete all - // open brackets that follow a colon or comma or that begin the text. Finally, - // we look to see that the remaining characters are only whitespace or ']' or - // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/ - .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') - .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - - // In the third stage we use the eval function to compile the text into a - // JavaScript structure. The '{' operator is subject to a syntactic ambiguity - // in JavaScript: it can begin a block or an object literal. We wrap the text - // in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - - // In the optional fourth stage, we recursively walk the new structure, passing - // each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } - - // If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - - return JSON; - })(); - - if ('undefined' != typeof window) { - window.expect = module.exports; - } - -})( - this - , 'undefined' != typeof module ? module : {} - , 'undefined' != typeof exports ? exports : {} -); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html deleted file mode 100644 index c73147a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/index.html +++ /dev/null @@ -1,18 +0,0 @@ - - - Mocha - - - - - - - - - - - - -
      - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js deleted file mode 100644 index f3201aa..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/connect/node_modules/qs/test/browser/jquery.js +++ /dev/null @@ -1,8981 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function( window, undefined ) { - -// Use the correct document accordingly with window argument (sandbox) -var document = window.document, - navigator = window.navigator, - location = window.location; -var jQuery = (function() { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // (both of which we optimize for) - quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - trimLeft = /^\s+/, - trimRight = /\s+$/, - - // Check for digits - rdigit = /\d/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - - // Useragent RegExp - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, - rmsie = /(msie) ([\w.]+)/, - rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, - - // Matches dashed string for camelizing - rdashAlpha = /-([a-z])/ig, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // The deferred used on DOM ready - readyList, - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - trim = String.prototype.trim, - indexOf = Array.prototype.indexOf, - - // [[Class]] -> type pairs - class2type = {}; - -jQuery.fn = jQuery.prototype = { - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context && document.body ) { - this.context = document; - this[0] = document.body; - this.selector = selector; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = quickExpr.exec( selector ); - } - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.6.2", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = this.constructor(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // Add the callback - readyList.done( fn ); - - return this; - }, - - eq: function( i ) { - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - // Either a released hold or an DOMready/load event and not yet ready - if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 1 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger( "ready" ).unbind( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyList ) { - return; - } - - readyList = jQuery._Deferred(); - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - return setTimeout( jQuery.ready, 1 ); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", DOMContentLoaded ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - // A crude way of determining if an object is a window - isWindow: function( obj ) { - return obj && typeof obj === "object" && "setInterval" in obj; - }, - - isNaN: function( obj ) { - return obj == null || !rdigit.test( obj ) || isNaN( obj ); - }, - - type: function( obj ) { - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw msg; - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return (new Function( "return " + data ))(); - - } - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - // (xml & tmp used internally) - parseXML: function( data , xml , tmp ) { - - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - - tmp = xml.documentElement; - - if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { - jQuery.error( "Invalid XML: " + data ); - } - - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && rnotwhite.test( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Converts a dashed string to camelCased string; - // Used by both the css and data modules - camelCase: function( string ) { - return string.replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction( object ); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } - - return object; - }, - - // Use native String.trim function wherever possible - trim: trim ? - function( text ) { - return text == null ? - "" : - trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type( array ); - - if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array ) { - - if ( indexOf ) { - return indexOf.call( array, elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, - j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = [], retVal; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, key, ret = [], - i = 0, - length = elems.length, - // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( key in elems ) { - value = callback( elems[ key ], key, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - if ( typeof context === "string" ) { - var tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - var args = slice.call( arguments, 2 ), - proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - - return proxy; - }, - - // Mutifunctional method to get and set values to a collection - // The value/s can optionally be executed if it's a function - access: function( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - jQuery.access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; - }, - - now: function() { - return (new Date()).getTime(); - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - sub: function() { - function jQuerySub( selector, context ) { - return new jQuerySub.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySub, this ); - jQuerySub.superclass = this; - jQuerySub.fn = jQuerySub.prototype = this(); - jQuerySub.fn.constructor = jQuerySub; - jQuerySub.sub = this.sub; - jQuerySub.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { - context = jQuerySub( context ); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); - }; - jQuerySub.fn.init.prototype = jQuerySub.fn; - var rootjQuerySub = jQuerySub(document); - return jQuerySub; - }, - - browser: {} -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -// IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { - trimLeft = /^[\s\xA0]+/; - trimRight = /[\s\xA0]+$/; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch(e) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -return jQuery; - -})(); - - -var // Promise methods - promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), - // Static reference to slice - sliceDeferred = [].slice; - -jQuery.extend({ - // Create a simple deferred (one callbacks list) - _Deferred: function() { - var // callbacks list - callbacks = [], - // stored [ context , args ] - fired, - // to avoid firing when already doing so - firing, - // flag to know if the deferred has been cancelled - cancelled, - // the deferred itself - deferred = { - - // done( f1, f2, ...) - done: function() { - if ( !cancelled ) { - var args = arguments, - i, - length, - elem, - type, - _fired; - if ( fired ) { - _fired = fired; - fired = 0; - } - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - deferred.done.apply( deferred, elem ); - } else if ( type === "function" ) { - callbacks.push( elem ); - } - } - if ( _fired ) { - deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); - } - } - return this; - }, - - // resolve with given context and args - resolveWith: function( context, args ) { - if ( !cancelled && !fired && !firing ) { - // make sure args are available (#8421) - args = args || []; - firing = 1; - try { - while( callbacks[ 0 ] ) { - callbacks.shift().apply( context, args ); - } - } - finally { - fired = [ context, args ]; - firing = 0; - } - } - return this; - }, - - // resolve with this as context and given arguments - resolve: function() { - deferred.resolveWith( this, arguments ); - return this; - }, - - // Has this deferred been resolved? - isResolved: function() { - return !!( firing || fired ); - }, - - // Cancel - cancel: function() { - cancelled = 1; - callbacks = []; - return this; - } - }; - - return deferred; - }, - - // Full fledged deferred (two callbacks list) - Deferred: function( func ) { - var deferred = jQuery._Deferred(), - failDeferred = jQuery._Deferred(), - promise; - // Add errorDeferred methods, then and promise - jQuery.extend( deferred, { - then: function( doneCallbacks, failCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ); - return this; - }, - always: function() { - return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); - }, - fail: failDeferred.done, - rejectWith: failDeferred.resolveWith, - reject: failDeferred.resolve, - isRejected: failDeferred.isResolved, - pipe: function( fnDone, fnFail ) { - return jQuery.Deferred(function( newDefer ) { - jQuery.each( { - done: [ fnDone, "resolve" ], - fail: [ fnFail, "reject" ] - }, function( handler, data ) { - var fn = data[ 0 ], - action = data[ 1 ], - returned; - if ( jQuery.isFunction( fn ) ) { - deferred[ handler ](function() { - returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise().then( newDefer.resolve, newDefer.reject ); - } else { - newDefer[ action ]( returned ); - } - }); - } else { - deferred[ handler ]( newDefer[ action ] ); - } - }); - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - if ( obj == null ) { - if ( promise ) { - return promise; - } - promise = obj = {}; - } - var i = promiseMethods.length; - while( i-- ) { - obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; - } - return obj; - } - }); - // Make sure only one callback list will be used - deferred.done( failDeferred.cancel ).fail( deferred.cancel ); - // Unexpose cancel - delete deferred.cancel; - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - return deferred; - }, - - // Deferred helper - when: function( firstParam ) { - var args = arguments, - i = 0, - length = args.length, - count = length, - deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? - firstParam : - jQuery.Deferred(); - function resolveFunc( i ) { - return function( value ) { - args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - if ( !( --count ) ) { - // Strange bug in FF4: - // Values changed onto the arguments object sometimes end up as undefined values - // outside the $.when method. Cloning the object into a fresh array solves the issue - deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); - } - }; - } - if ( length > 1 ) { - for( ; i < length; i++ ) { - if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { - args[ i ].promise().then( resolveFunc(i), deferred.reject ); - } else { - --count; - } - } - if ( !count ) { - deferred.resolveWith( deferred, args ); - } - } else if ( deferred !== firstParam ) { - deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); - } - return deferred.promise(); - } -}); - - - -jQuery.support = (function() { - - var div = document.createElement( "div" ), - documentElement = document.documentElement, - all, - a, - select, - opt, - input, - marginDiv, - support, - fragment, - body, - testElementParent, - testElement, - testElementStyle, - tds, - events, - eventName, - i, - isSupported; - - // Preliminary tests - div.setAttribute("className", "t"); - div.innerHTML = "
      a"; - - all = div.getElementsByTagName( "*" ); - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return {}; - } - - // First batch of supports tests - select = document.createElement( "select" ); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName( "input" )[ 0 ]; - - support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: ( div.firstChild.nodeType === 3 ), - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName( "tbody" ).length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName( "link" ).length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: ( input.value === "on" ), - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // Will be defined later - submitBubbles: true, - changeBubbles: true, - focusinBubbles: false, - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - support.noCloneEvent = false; - }); - div.cloneNode( true ).fireEvent( "onclick" ); - } - - // Check if a radio maintains it's value - // after being appended to the DOM - input = document.createElement("input"); - input.value = "t"; - input.setAttribute("type", "radio"); - support.radioValue = input.value === "t"; - - input.setAttribute("checked", "checked"); - div.appendChild( input ); - fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - div.innerHTML = ""; - - // Figure out if the W3C box model works as expected - div.style.width = div.style.paddingLeft = "1px"; - - body = document.getElementsByTagName( "body" )[ 0 ]; - // We use our own, invisible, body unless the body is already present - // in which case we use a div (#9239) - testElement = document.createElement( body ? "div" : "body" ); - testElementStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0 - }; - if ( body ) { - jQuery.extend( testElementStyle, { - position: "absolute", - left: -1000, - top: -1000 - }); - } - for ( i in testElementStyle ) { - testElement.style[ i ] = testElementStyle[ i ]; - } - testElement.appendChild( div ); - testElementParent = body || documentElement; - testElementParent.insertBefore( testElement, testElementParent.firstChild ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - support.boxModel = div.offsetWidth === 2; - - if ( "zoom" in div.style ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "
      "; - support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); - } - - div.innerHTML = "
      t
      "; - tds = div.getElementsByTagName( "td" ); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE < 8 fail this test) - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( document.defaultView && document.defaultView.getComputedStyle ) { - marginDiv = document.createElement( "div" ); - marginDiv.style.width = "0"; - marginDiv.style.marginRight = "0"; - div.appendChild( marginDiv ); - support.reliableMarginRight = - ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; - } - - // Remove the body element we added - testElement.innerHTML = ""; - testElementParent.removeChild( testElement ); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( div.attachEvent ) { - for( i in { - submit: 1, - change: 1, - focusin: 1 - } ) { - eventName = "on" + i; - isSupported = ( eventName in div ); - if ( !isSupported ) { - div.setAttribute( eventName, "return;" ); - isSupported = ( typeof div[ eventName ] === "function" ); - } - support[ i + "Bubbles" ] = isSupported; - } - } - - // Null connected elements to avoid leaks in IE - testElement = fragment = select = opt = body = marginDiv = div = input = null; - - return support; -})(); - -// Keep track of boxModel -jQuery.boxModel = jQuery.support.boxModel; - - - - -var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([a-z])([A-Z])/g; - -jQuery.extend({ - cache: {}, - - // Please use with caution - uuid: 0, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ jQuery.expando ] = id = ++jQuery.uuid; - } else { - id = jQuery.expando; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); - } else { - cache[ id ] = jQuery.extend(cache[ id ], name); - } - } - - thisCache = cache[ id ]; - - // Internal jQuery data is stored in a separate object inside the object's data - // cache in order to avoid key collisions between internal data and user-defined - // data - if ( pvt ) { - if ( !thisCache[ internalKey ] ) { - thisCache[ internalKey ] = {}; - } - - thisCache = thisCache[ internalKey ]; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should - // not attempt to inspect the internal events object using jQuery.data, as this - // internal data object is undocumented and subject to change. - if ( name === "events" && !thisCache[name] ) { - return thisCache[ internalKey ] && thisCache[ internalKey ].events; - } - - return getByName ? - // Check for both converted-to-camel and non-converted data property names - thisCache[ jQuery.camelCase( name ) ] || thisCache[ name ] : - thisCache; - }, - - removeData: function( elem, name, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; - - if ( thisCache ) { - delete thisCache[ name ]; - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !isEmptyDataObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( pvt ) { - delete cache[ id ][ internalKey ]; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - var internalCache = cache[ id ][ internalKey ]; - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - if ( jQuery.support.deleteExpando || cache != window ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the entire user cache at once because it's faster than - // iterating through each key, but we need to continue to persist internal - // data if it existed - if ( internalCache ) { - cache[ id ] = {}; - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - - cache[ id ][ internalKey ] = internalCache; - - // Otherwise, we need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - } else if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } else { - elem[ jQuery.expando ] = null; - } - } - }, - - // For internal use only. - _data: function( elem, name, data ) { - return jQuery.data( elem, name, data, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var $this = jQuery( this ), - args = [ parts[0], value ]; - - $this.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - $this.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - !jQuery.isNaN( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON -// property to be considered empty objects; this property always exists in -// order to make sure JSON.stringify does not expose internal metadata -function isEmptyDataObject( obj ) { - for ( var name in obj ) { - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - - - - -function handleQueueMarkDefer( elem, type, src ) { - var deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - defer = jQuery.data( elem, deferDataKey, undefined, true ); - if ( defer && - ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && - ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { - // Give room for hard-coded callbacks to fire first - // and eventually mark/queue something else on the element - setTimeout( function() { - if ( !jQuery.data( elem, queueDataKey, undefined, true ) && - !jQuery.data( elem, markDataKey, undefined, true ) ) { - jQuery.removeData( elem, deferDataKey, true ); - defer.resolve(); - } - }, 0 ); - } -} - -jQuery.extend({ - - _mark: function( elem, type ) { - if ( elem ) { - type = (type || "fx") + "mark"; - jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); - } - }, - - _unmark: function( force, elem, type ) { - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); - if ( count ) { - jQuery.data( elem, key, count, true ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }, - - queue: function( elem, type, data ) { - if ( elem ) { - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type, undefined, true ); - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data), true ); - } else { - q.push( data ); - } - } - return q || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - defer; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, object ) { - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { - count++; - tmp.done( resolve ); - } - } - resolve(); - return defer.promise(); - } -}); - - - - -var rclass = /[\n\t\r]/g, - rspace = /\s+/, - rreturn = /\r/g, - rtype = /^(?:button|input)$/i, - rfocusable = /^(?:button|input|object|select|textarea)$/i, - rclickable = /^a(?:rea)?$/i, - rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - rinvalidChar = /\:|^on/, - formHook, boolHook; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.prop ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classNames, i, l, elem, - setClass, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call(this, j, this.className) ); - }); - } - - if ( value && typeof value === "string" ) { - classNames = value.split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className && classNames.length === 1 ) { - elem.className = value; - - } else { - setClass = " " + elem.className + " "; - - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { - setClass += classNames[ c ] + " "; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classNames, i, l, elem, className, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call(this, j, this.className) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - classNames = (value || "").split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - className = (" " + elem.className + " ").replace( rclass, " " ); - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[ c ] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return undefined; - } - - var isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, - index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attrFix: { - // Always normalize to ensure hook usage - tabindex: "tabIndex" - }, - - attr: function( elem, name, value, pass ) { - var nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( !("getAttribute" in elem) ) { - return jQuery.prop( elem, name, value ); - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Normalize the name if needed - if ( notxml ) { - name = jQuery.attrFix[ name ] || name; - - hooks = jQuery.attrHooks[ name ]; - - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) ) { - - hooks = boolHook; - - // Use formHook for forms and if the name contains certain characters - } else if ( formHook && name !== "className" && - (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { - - hooks = formHook; - } - } - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return undefined; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, name ) { - var propName; - if ( elem.nodeType === 1 ) { - name = jQuery.attrFix[ name ] || name; - - if ( jQuery.support.getSetAttribute ) { - // Use removeAttribute in browsers that support it - elem.removeAttribute( name ); - } else { - jQuery.attr( elem, name, "" ); - elem.removeAttributeNode( elem.getAttributeNode( name ) ); - } - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { - elem[ propName ] = false; - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to it's default in case type is set after value - // This is for element creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }, - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabIndex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - }, - // Use the value property for back compat - // Use the formHook for button elements in IE6/7 (#1954) - value: { - get: function( elem, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.get( elem, name ); - } - return name in elem ? - elem.value : - null; - }, - set: function( elem, value, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return (elem[ name ] = value); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: {} -}); - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - // Align boolean attributes with corresponding properties - return jQuery.prop( elem, name ) ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - var propName; - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - // value is true since we know at this point it's type boolean and not false - // Set boolean attributes to the same name and set the DOM property - propName = jQuery.propFix[ name ] || name; - if ( propName in elem ) { - // Only set the IDL specifically if it already exists on the element - elem[ propName ] = true; - } - - elem.setAttribute( name, name.toLowerCase() ); - } - return name; - } -}; - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !jQuery.support.getSetAttribute ) { - - // propFix is more comprehensive and contains all fixes - jQuery.attrFix = jQuery.propFix; - - // Use this for any attribute on a form in IE6/7 - formHook = jQuery.attrHooks.name = jQuery.attrHooks.title = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret; - ret = elem.getAttributeNode( name ); - // Return undefined if nodeValue is empty string - return ret && ret.nodeValue !== "" ? - ret.nodeValue : - undefined; - }, - set: function( elem, value, name ) { - // Check form objects in IE (multiple bugs related) - // Only use nodeValue if the attribute node exists on the form - var ret = elem.getAttributeNode( name ); - if ( ret ) { - ret.nodeValue = value; - return value; - } - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret === null ? undefined : ret; - } - }); - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Normalize to lowercase since IE uppercases css property names - return elem.style.cssText.toLowerCase() || undefined; - }, - set: function( elem, value ) { - return (elem.style.cssText = "" + value); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }); -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); - } - } - }); -}); - - - - -var rnamespaces = /\.(.*)$/, - rformElems = /^(?:textarea|input|select)$/i, - rperiod = /\./g, - rspaces = / /g, - rescape = /[^\w\s.|`]/g, - fcleanup = function( nm ) { - return nm.replace(rescape, "\\$&"); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } else if ( !handler ) { - // Fixes bug #7229. Fix recommended by jdalton - return; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery._data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events, - eventHandle = elemData.handle; - - if ( !events ) { - elemData.events = events = {}; - } - - if ( !eventHandle ) { - elemData.handle = eventHandle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - if ( !handleObj.guid ) { - handleObj.guid = handler.guid; - } - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } - - var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem, undefined, true ); - } - } - }, - - // Events that are safe to short-circuit if no handlers are attached. - // Native DOM events should not be added, they may have inline handlers. - customEvent: { - "getData": true, - "setData": true, - "changeData": true - }, - - trigger: function( event, data, elem, onlyHandlers ) { - // Event object or event type - var type = event.type || event, - namespaces = [], - exclusive; - - if ( type.indexOf("!") >= 0 ) { - // Exclusive events trigger only for the exact event (no namespaces) - type = type.slice(0, -1); - exclusive = true; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - - if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { - // No jQuery handlers for this event type, and it can't have inline handlers - return; - } - - // Caller can pass in an Event, Object, or just an event type string - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - new jQuery.Event( type, event ) : - // Just the event type (string) - new jQuery.Event( type ); - - event.type = type; - event.exclusive = exclusive; - event.namespace = namespaces.join("."); - event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); - - // triggerHandler() and global events don't bubble or run the default action - if ( onlyHandlers || !elem ) { - event.preventDefault(); - event.stopPropagation(); - } - - // Handle a global trigger - if ( !elem ) { - // TODO: Stop taunting the data cache; remove global events and always attach to document - jQuery.each( jQuery.cache, function() { - // internalKey variable is just used to make it easier to find - // and potentially change this stuff later; currently it just - // points to jQuery.expando - var internalKey = jQuery.expando, - internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[ type ] ) { - jQuery.event.trigger( event, data, internalCache.handle.elem ); - } - }); - return; - } - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // Clean up the event in case it is being reused - event.result = undefined; - event.target = elem; - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data != null ? jQuery.makeArray( data ) : []; - data.unshift( event ); - - var cur = elem, - // IE doesn't like method names with a colon (#3533, #8272) - ontype = type.indexOf(":") < 0 ? "on" + type : ""; - - // Fire event on the current element, then bubble up the DOM tree - do { - var handle = jQuery._data( cur, "handle" ); - - event.currentTarget = cur; - if ( handle ) { - handle.apply( cur, data ); - } - - // Trigger an inline bound script - if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { - event.result = false; - event.preventDefault(); - } - - // Bubble up to document, then to window - cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; - } while ( cur && !event.isPropagationStopped() ); - - // If nobody prevented the default action, do it now - if ( !event.isDefaultPrevented() ) { - var old, - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction)() check here because IE6/7 fails that test. - // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. - try { - if ( ontype && elem[ type ] ) { - // Don't re-trigger an onFOO event when we call its FOO() method - old = elem[ ontype ]; - - if ( old ) { - elem[ ontype ] = null; - } - - jQuery.event.triggered = type; - elem[ type ](); - } - } catch ( ieError ) {} - - if ( old ) { - elem[ ontype ] = old; - } - - jQuery.event.triggered = undefined; - } - } - - return event.result; - }, - - handle: function( event ) { - event = jQuery.event.fix( event || window.event ); - // Snapshot the handlers list since a called handler may add/remove events. - var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), - run_all = !event.exclusive && !event.namespace, - args = Array.prototype.slice.call( arguments, 0 ); - - // Use the fix-ed Event rather than the (read-only) native event - args[0] = event; - event.currentTarget = this; - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Triggered event must 1) be non-exclusive and have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event. - if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, args ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - // Fixes #1925 where srcElement might not be defined either - event.target = event.srcElement || document; - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var eventDocument = event.target.ownerDocument || document, - doc = eventDocument.documentElement, - body = eventDocument.body; - - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { - event.which = event.charCode != null ? event.charCode : event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, - liveConvert( handleObj.origType, handleObj.selector ), - jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); - }, - - remove: function( handleObj ) { - jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); - } - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( jQuery.isWindow( this ) ) { - this.onbeforeunload = eventHandle; - } - }, - - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - - // Check if mouse(over|out) are still within the same parent element - var related = event.relatedTarget, - inside = false, - eventType = event.type; - - event.type = event.data; - - if ( related !== this ) { - - if ( related ) { - inside = jQuery.contains( this, related ); - } - - if ( !inside ) { - - jQuery.event.handle.apply( this, arguments ); - - event.type = eventType; - } - } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( !jQuery.nodeName( this, "form" ) ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - var elem = e.target, - type = elem.type; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, - type = elem.type; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var changeFilters, - - getVal = function( elem ) { - var type = elem.type, val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( jQuery.nodeName( elem, "select" ) ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery._data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery._data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - e.liveFired = undefined; - jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - beforedeactivate: testChange, - - click: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { - testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information - beforeactivate: function( e ) { - var elem = e.target; - jQuery._data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return rformElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return rformElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; - - // Handle when the input is .focus()'d - changeFilters.focus = changeFilters.beforeactivate; -} - -function trigger( type, elem, args ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - // Don't pass args or remember liveFired; they apply to the donor event. - var event = jQuery.extend( {}, args[ 0 ] ); - event.type = type; - event.originalEvent = {}; - event.liveFired = undefined; - jQuery.event.handle.call( elem, event ); - if ( event.isDefaultPrevented() ) { - args[ 0 ].preventDefault(); - } -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - - function handler( donor ) { - // Donor event is always a native one; fix it and switch its type. - // Let focusin/out handler cancel the donor focus/blur event. - var e = jQuery.event.fix( donor ); - e.type = fix; - e.originalEvent = {}; - jQuery.event.trigger( e, null, e.target ); - if ( e.isDefaultPrevented() ) { - donor.preventDefault(); - } - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - var handler; - - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( arguments.length === 2 || data === false ) { - fn = data; - data = undefined; - } - - if ( name === "one" ) { - handler = function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }; - handler.guid = fn.guid || jQuery.guid++; - } else { - handler = fn; - } - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( typeof types === "object" && !types.preventDefault ) { - for ( var key in types ) { - context[ name ]( key, data, types[key], selector ); - } - - return this; - } - - if ( name === "die" && !types && - origSelector && origSelector.charAt(0) === "." ) { - - context.unbind( origSelector ); - - return this; - } - - if ( data === false || jQuery.isFunction( data ) ) { - fn = data || returnFalse; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( liveMap[ type ] ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - for ( var j = 0, l = context.length; j < l; j++ ) { - jQuery.event.add( context[j], "live." + liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - } - - } else { - // unbind live handler - context.unbind( "live." + liveConvert( type, selector ), fn ); - } - } - - return this; - }; -}); - -function liveHandler( event ) { - var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, - elems = [], - selectors = [], - events = jQuery._data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) - if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { - return; - } - - if ( event.namespace ) { - namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - close = match[i]; - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { - elem = close.elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - event.type = handleObj.preType; - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - - // Make sure not to accidentally match a child element with the same selector - if ( related && jQuery.contains( elem, related ) ) { - related = elem; - } - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj, level: close.level }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - - if ( maxLevel && match.level > maxLevel ) { - break; - } - - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - ret = match.handleObj.origHandler.apply( match.elem, arguments ); - - if ( ret === false || event.isPropagationStopped() ) { - maxLevel = match.level; - - if ( ret === false ) { - stop = false; - } - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - - - -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rNonWord = /\W/; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; - - var origContext = context; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var match, - type = Expr.order[i]; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice( 1, 1 ); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); - - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; - } - - return { set: set, expr: expr }; -}; - -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var found, item, - filter = Expr.filter[ type ], - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); - } - }, - - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } - }, - - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, - preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, - - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { - Sizzle.error( match[0] ); - } - - match[2] = match[2].replace(/^\+|\s*/g, ''); - - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { - Sizzle.error( match[0] ); - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; - } - }, - - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; - }, - - disabled: function( elem ) { - return elem.disabled === true; - }, - - checked: function( elem ) { - return elem.checked === true; - }, - - selected: function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } - } - - return true; - - } else { - Sizzle.error( name ); - } - }, - - CHILD: function( elem, match ) { - var type = match[1], - node = elem; - - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - if ( type === "first" ) { - return true; - } - - node = elem; - - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - return true; - - case "nth": - var first = match[2], - last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); -} - -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - - } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - - } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Fallback to using sourceIndex (in IE) if it's available on both nodes - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - // If the nodes are siblings (or identical) we can do a quick check - if ( aup === bup ) { - return siblingCheck( a, b ); - - // If no parents were found then the nodes are disconnected - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - // Otherwise they're somewhere else in the tree so we need - // to build up a full list of the parentNodes for comparison - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - // Start walking down the tree looking for a discrepancy - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - // We ended someplace up the tree so do a sibling check - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -Sizzle.getText = function( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += Sizzle.getText( elem.childNodes ); - } - } - - return ret; -}; - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - // release memory in IE - root = form = null; -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - // release memory in IE - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

      "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - // release memory in IE - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9 fails this) - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - // Make sure that attribute selectors are quoted - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || !disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9, so check for that - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
      "; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - // release memory in IE - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; - -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; - -} else { - Sizzle.contains = function() { - return false; - }; -} - -Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})(); - - -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - isSimple = /^.[^:#\[\.,]*$/, - slice = Array.prototype.slice, - POS = jQuery.expr.match.POS, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && ( typeof selector === "string" ? - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var ret = [], i, l, cur = this[0]; - - // Array - if ( jQuery.isArray( selectors ) ) { - var match, selector, - matches = {}, - level = 1; - - if ( cur && selectors.length ) { - for ( i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[ selector ] ) { - matches[ selector ] = POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[ selector ]; - - if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { - ret.push({ selector: selector, elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); - } - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -} - - - - -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rtagName = /<([\w:]+)/, - rtbody = /", "" ], - legend: [ 1, "
      ", "
      " ], - thead: [ 1, "", "
      " ], - tr: [ 2, "", "
      " ], - td: [ 3, "", "
      " ], - col: [ 2, "", "
      " ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js deleted file mode 100644 index 1fdac20..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/wildcards.js +++ /dev/null @@ -1,10 +0,0 @@ - -var debug = { - foo: require('../')('test:foo'), - bar: require('../')('test:bar'), - baz: require('../')('test:baz') -}; - -debug.foo('foo') -debug.bar('bar') -debug.baz('baz') \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js deleted file mode 100644 index 7f6d288..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/example/worker.js +++ /dev/null @@ -1,22 +0,0 @@ - -// DEBUG=* node example/worker -// DEBUG=worker:* node example/worker -// DEBUG=worker:a node example/worker -// DEBUG=worker:b node example/worker - -var a = require('../')('worker:a') - , b = require('../')('worker:b'); - -function work() { - a('doing lots of uninteresting work'); - setTimeout(work, Math.random() * 1000); -} - -work(); - -function workb() { - b('doing some work'); - setTimeout(workb, Math.random() * 2000); -} - -workb(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js deleted file mode 100644 index e02c13b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/index.js +++ /dev/null @@ -1,5 +0,0 @@ -if ('undefined' == typeof window) { - module.exports = require('./lib/debug'); -} else { - module.exports = require('./debug'); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js deleted file mode 100644 index 0b07aa1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/lib/debug.js +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Module dependencies. - */ - -var tty = require('tty'); - -/** - * Expose `debug()` as the module. - */ - -module.exports = debug; - -/** - * Enabled debuggers. - */ - -var names = [] - , skips = []; - -(process.env.DEBUG || '') - .split(/[\s,]+/) - .forEach(function(name){ - name = name.replace('*', '.*?'); - if (name[0] === '-') { - skips.push(new RegExp('^' + name.substr(1) + '$')); - } else { - names.push(new RegExp('^' + name + '$')); - } - }); - -/** - * Colors. - */ - -var colors = [6, 2, 3, 4, 5, 1]; - -/** - * Previous debug() call. - */ - -var prev = {}; - -/** - * Previously assigned color. - */ - -var prevColor = 0; - -/** - * Is stdout a TTY? Colored output is disabled when `true`. - */ - -var isatty = tty.isatty(2); - -/** - * Select a color. - * - * @return {Number} - * @api private - */ - -function color() { - return colors[prevColor++ % colors.length]; -} - -/** - * Humanize the given `ms`. - * - * @param {Number} m - * @return {String} - * @api private - */ - -function humanize(ms) { - var sec = 1000 - , min = 60 * 1000 - , hour = 60 * min; - - if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; - if (ms >= min) return (ms / min).toFixed(1) + 'm'; - if (ms >= sec) return (ms / sec | 0) + 's'; - return ms + 'ms'; -} - -/** - * Create a debugger with the given `name`. - * - * @param {String} name - * @return {Type} - * @api public - */ - -function debug(name) { - function disabled(){} - disabled.enabled = false; - - var match = skips.some(function(re){ - return re.test(name); - }); - - if (match) return disabled; - - match = names.some(function(re){ - return re.test(name); - }); - - if (!match) return disabled; - var c = color(); - - function colored(fmt) { - var curr = new Date; - var ms = curr - (prev[name] || curr); - prev[name] = curr; - - fmt = ' \u001b[9' + c + 'm' + name + ' ' - + '\u001b[3' + c + 'm\u001b[90m' - + fmt + '\u001b[3' + c + 'm' - + ' +' + humanize(ms) + '\u001b[0m'; - - console.error.apply(this, arguments); - } - - function plain(fmt) { - fmt = new Date().toUTCString() - + ' ' + name + ' ' + fmt; - console.error.apply(this, arguments); - } - - colored.enabled = plain.enabled = true; - - return isatty || process.env.DEBUG_COLORS - ? colored - : plain; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json deleted file mode 100644 index 56e2714..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/debug/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "debug", - "version": "0.7.2", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "description": "small debugging utility", - "keywords": [ - "debug", - "log", - "debugger" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*" - }, - "main": "lib/debug.js", - "browserify": "debug.js", - "engines": { - "node": "*" - }, - "component": { - "scripts": { - "debug/index.js": "index.js", - "debug/debug.js": "debug.js" - } - }, - "readme": "\n# debug\n\n tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n , http = require('http')\n , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + ' ' + req.url);\n res.end('hello\\n');\n}).listen(3000, function(){\n debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n debug('doing some work');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a \"-\" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "debug@0.7.2", - "_from": "debug@*" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile deleted file mode 100644 index 8e8640f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md deleted file mode 100644 index 273130d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/Readme.md +++ /dev/null @@ -1,32 +0,0 @@ - -# node-fresh - - HTTP response freshness testing - -## fresh(req, res) - - Check freshness of `req` and `res` headers. - - When the cache is "fresh" __true__ is returned, - otherwise __false__ is returned to indicate that - the cache is now stale. - -## Example: - -```js -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'luna' }; -fresh(req, res); -// => false - -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'tobi' }; -fresh(req, res); -// => true -``` - -## Installation - -``` -$ npm install fresh -``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js deleted file mode 100644 index b2f4d41..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/index.js +++ /dev/null @@ -1,49 +0,0 @@ - -/** - * Expose `fresh()`. - */ - -module.exports = fresh; - -/** - * Check freshness of `req` and `res` headers. - * - * When the cache is "fresh" __true__ is returned, - * otherwise __false__ is returned to indicate that - * the cache is now stale. - * - * @param {Object} req - * @param {Object} res - * @return {Boolean} - * @api public - */ - -function fresh(req, res) { - // defaults - var etagMatches = true; - var notModified = true; - - // fields - var modifiedSince = req['if-modified-since']; - var noneMatch = req['if-none-match']; - var lastModified = res['last-modified']; - var etag = res['etag']; - - // unconditional request - if (!modifiedSince && !noneMatch) return false; - - // parse if-none-match - if (noneMatch) noneMatch = noneMatch.split(/ *, */); - - // if-none-match - if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0]; - - // if-modified-since - if (modifiedSince) { - modifiedSince = new Date(modifiedSince); - lastModified = new Date(lastModified); - notModified = lastModified <= modifiedSince; - } - - return !! (etagMatches && notModified); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json deleted file mode 100644 index d9fddb2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/fresh/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "fresh", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "HTTP response freshness testing", - "version": "0.1.0", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "readme": "\n# node-fresh\n\n HTTP response freshness testing\n\n## fresh(req, res)\n\n Check freshness of `req` and `res` headers.\n\n When the cache is \"fresh\" __true__ is returned,\n otherwise __false__ is returned to indicate that\n the cache is now stale.\n\n## Example:\n\n```js\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'luna' };\nfresh(req, res);\n// => false\n\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'tobi' };\nfresh(req, res);\n// => true\n```\n\n## Installation\n\n```\n$ npm install fresh\n```", - "readmeFilename": "Readme.md", - "_id": "fresh@0.1.0", - "_from": "fresh@0.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js deleted file mode 100644 index 297d022..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/index.js +++ /dev/null @@ -1,26 +0,0 @@ - -module.exports = [ - 'get' - , 'post' - , 'put' - , 'head' - , 'delete' - , 'options' - , 'trace' - , 'copy' - , 'lock' - , 'mkcol' - , 'move' - , 'propfind' - , 'proppatch' - , 'unlock' - , 'report' - , 'mkactivity' - , 'checkout' - , 'merge' - , 'm-search' - , 'notify' - , 'subscribe' - , 'unsubscribe' - , 'patch' -]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json deleted file mode 100644 index 341b226..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/methods/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "methods", - "version": "0.0.1", - "description": "HTTP methods that node supports", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [ - "http", - "methods" - ], - "author": { - "name": "TJ Holowaychuk" - }, - "license": "MIT", - "_id": "methods@0.0.1", - "readme": "ERROR: No README.md file found!", - "_from": "methods@0.0.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c34..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml deleted file mode 100644 index 84fd7ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1ae..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e692421..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js deleted file mode 100644 index fda6de8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/index.js +++ /dev/null @@ -1,82 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, mode, f, made) { - if (typeof mode === 'function' || mode === undefined) { - f = mode; - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - var cb = f || function () {}; - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - fs.mkdir(p, mode, function (er) { - if (!er) { - made = made || p; - return cb(null, made); - } - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), mode, function (er, made) { - if (er) cb(er, made); - else mkdirP(p, mode, cb, made); - }); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - fs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original error be the failure reason. - if (er2 || !stat.isDirectory()) cb(er, made) - else cb(null, made); - }); - break; - } - }); -} - -mkdirP.sync = function sync (p, mode, made) { - if (mode === undefined) { - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - try { - fs.mkdirSync(p, mode); - made = made || p; - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - made = sync(path.dirname(p), mode, made); - sync(p, mode, made); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - var stat; - try { - stat = fs.statSync(p); - } - catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - - return made; -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json deleted file mode 100644 index 549e2c2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "mkdirp", - "description": "Recursively mkdir, like `mkdir -p`", - "version": "0.3.5", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "main": "./index", - "keywords": [ - "mkdir", - "directory" - ], - "repository": { - "type": "git", - "url": "http://github.com/substack/node-mkdirp.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "~0.4.0" - }, - "license": "MIT", - "readme": "# mkdirp\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\n# example\n\n## pow.js\n\n```js\nvar mkdirp = require('mkdirp');\n \nmkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n});\n```\n\nOutput\n\n```\npow!\n```\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\n# methods\n\n```js\nvar mkdirp = require('mkdirp');\n```\n\n## mkdirp(dir, mode, cb)\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\n## mkdirp.sync(dir, mode)\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\n# install\n\nWith [npm](http://npmjs.org) do:\n\n```\nnpm install mkdirp\n```\n\n# license\n\nMIT\n", - "readmeFilename": "readme.markdown", - "_id": "mkdirp@0.3.5", - "_from": "mkdirp@~0.3.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown deleted file mode 100644 index 83b0216..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/readme.markdown +++ /dev/null @@ -1,63 +0,0 @@ -# mkdirp - -Like `mkdir -p`, but in node.js! - -[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) - -# example - -## pow.js - -```js -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); -``` - -Output - -``` -pow! -``` - -And now /tmp/foo/bar/baz exists, huzzah! - -# methods - -```js -var mkdirp = require('mkdirp'); -``` - -## mkdirp(dir, mode, cb) - -Create a new directory and any necessary subdirectories at `dir` with octal -permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -`cb(err, made)` fires with the error or the first directory `made` -that had to be created, if any. - -## mkdirp.sync(dir, mode) - -Synchronously create a new directory and any necessary subdirectories at `dir` -with octal permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -Returns the first directory that had to be created, if any. - -# install - -With [npm](http://npmjs.org) do: - -``` -npm install mkdirp -``` - -# license - -MIT diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb7099..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f60..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a0447..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 7985824..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, '/tmp/' + x); - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, null); - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - // Note that this will throw on failure, which will fail the test. - var made = mkdirp.sync(file); - t.equal(made, '/tmp/' + x); - - // making the same file again should have no effect. - made = mkdirp.sync(file); - t.equal(made, null); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('root', function (t) { - // '/' on unix, 'c:/' on windows. - var file = path.resolve('/'); - - mkdirp(file, 0755, function (err) { - if (err) throw err - fs.stat(file, function (er, stat) { - if (er) throw er - t.ok(stat.isDirectory(), 'target is a directory'); - t.end(); - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 7530cad..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file, 0755); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 35bd5cb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, (0777 & (~process.umask()))); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md deleted file mode 100644 index 82df7b1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/History.md +++ /dev/null @@ -1,15 +0,0 @@ - -0.0.4 / 2012-06-17 -================== - - * changed: ret -1 for unsatisfiable and -2 when invalid - -0.0.3 / 2012-06-17 -================== - - * fix last-byte-pos default to len - 1 - -0.0.2 / 2012-06-14 -================== - - * add `.type` diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile deleted file mode 100644 index 8e8640f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md deleted file mode 100644 index b2a67fe..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/Readme.md +++ /dev/null @@ -1,28 +0,0 @@ - -# node-range-parser - - Range header field parser. - -## Example: - -```js -assert(-1 == parse(200, 'bytes=500-20')); -assert(-2 == parse(200, 'bytes=malformed')); -parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); -parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); -parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); -parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); -parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); -parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); -parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); -parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); -parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); -``` - -## Installation - -``` -$ npm install range-parser -``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js deleted file mode 100644 index 9b0f7a8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/index.js +++ /dev/null @@ -1,49 +0,0 @@ - -/** - * Parse "Range" header `str` relative to the given file `size`. - * - * @param {Number} size - * @param {String} str - * @return {Array} - * @api public - */ - -module.exports = function(size, str){ - var valid = true; - var i = str.indexOf('='); - - if (-1 == i) return -2; - - var arr = str.slice(i + 1).split(',').map(function(range){ - var range = range.split('-') - , start = parseInt(range[0], 10) - , end = parseInt(range[1], 10); - - // -nnn - if (isNaN(start)) { - start = size - end; - end = size - 1; - // nnn- - } else if (isNaN(end)) { - end = size - 1; - } - - // limit last-byte-pos to current length - if (end > size - 1) end = size - 1; - - // invalid - if (isNaN(start) - || isNaN(end) - || start > end - || start < 0) valid = false; - - return { - start: start, - end: end - }; - }); - - arr.type = str.slice(0, i); - - return valid ? arr : -1; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json deleted file mode 100644 index efdf450..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/range-parser/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "range-parser", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "Range header field string parser", - "version": "0.0.4", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "readme": "\n# node-range-parser\n\n Range header field parser.\n\n## Example:\n\n```js\nassert(-1 == parse(200, 'bytes=500-20'));\nassert(-2 == parse(200, 'bytes=malformed'));\nparse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));\nparse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));\nparse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));\nparse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));\nparse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));\nparse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));\nparse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));\nparse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));\nparse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## Installation\n\n```\n$ npm install range-parser\n```", - "readmeFilename": "Readme.md", - "_id": "range-parser@0.0.4", - "_from": "range-parser@0.0.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md deleted file mode 100644 index 20c5319..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/History.md +++ /dev/null @@ -1,25 +0,0 @@ - -0.1.0 / 2012-08-25 -================== - - * add options parameter to send() that is passed to fs.createReadStream() [kanongil] - -0.0.4 / 2012-08-16 -================== - - * allow custom "Accept-Ranges" definition - -0.0.3 / 2012-07-16 -================== - - * fix normalization of the root directory. Closes #3 - -0.0.2 / 2012-07-09 -================== - - * add passing of req explicitly for now (YUCK) - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile deleted file mode 100644 index a9dcfd5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec \ - --bail - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md deleted file mode 100644 index 85171a9..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/Readme.md +++ /dev/null @@ -1,123 +0,0 @@ - -# send - - Send is Connect's `static()` extracted for generalized use, a streaming static file - server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. - -## Installation - - $ npm install send - -## Examples - - Small: - -```js -var http = require('http'); -var send = require('send'); - -var app = http.createServer(function(req, res){ - send(req, req.url).pipe(res); -}); -``` - - Serving from a root directory with custom error-handling: - -```js -var http = require('http'); -var send = require('send'); - -var app = http.createServer(function(req, res){ - // your custom error-handling logic: - function error(err) { - res.statusCode = err.status || 500; - res.end(err.message); - } - - // your custom directory handling logic: - function redirect() { - res.statusCode = 301; - res.setHeader('Location', req.url + '/'); - res.end('Redirecting to ' + req.url + '/'); - } - - // transfer arbitrary files from within - // /www/example.com/public/* - send(req, url.parse(req.url).pathname) - .root('/www/example.com/public') - .on('error', error) - .on('directory', redirect) - .pipe(res); -}); -``` - -## API - -### Events - - - `error` an error occurred `(err)` - - `directory` a directory was requested - - `stream` file streaming has started `(stream)` - - `end` streaming has completed - -### .root(dir) - - Serve files relative to `path`. Aliased as `.from(dir)`. - -### .index(path) - - By default send supports "index.html" files, to disable this - invoke `.index(false)` or to supply a new index pass a string. - -### .maxage(ms) - - Provide a max-age in milliseconds for http caching, defaults to 0. - -## Error-handling - - By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. - -## Caching - - It does _not_ perform internal caching, you should use a reverse proxy cache such - as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). - -## Debugging - - To enable `debug()` instrumentation output export __DEBUG__: - -``` -$ DEBUG=send node app -``` - -## Running tests - -``` -$ npm install -$ make test -``` - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js deleted file mode 100644 index f17158d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/send'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js deleted file mode 100644 index de72146..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/send.js +++ /dev/null @@ -1,473 +0,0 @@ - -/** - * Module dependencies. - */ - -var debug = require('debug')('send') - , parseRange = require('range-parser') - , Stream = require('stream') - , mime = require('mime') - , fresh = require('fresh') - , path = require('path') - , http = require('http') - , fs = require('fs') - , basename = path.basename - , normalize = path.normalize - , join = path.join - , utils = require('./utils'); - -/** - * Expose `send`. - */ - -exports = module.exports = send; - -/** - * Expose mime module. - */ - -exports.mime = mime; - -/** - * Return a `SendStream` for `req` and `path`. - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @return {SendStream} - * @api public - */ - -function send(req, path, options) { - return new SendStream(req, path, options); -} - -/** - * Initialize a `SendStream` with the given `path`. - * - * Events: - * - * - `error` an error occurred - * - `stream` file streaming has started - * - `end` streaming has completed - * - `directory` a directory was requested - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @api private - */ - -function SendStream(req, path, options) { - var self = this; - this.req = req; - this.path = path; - this.options = options || {}; - this.maxage(0); - this.hidden(false); - this.index('index.html'); -} - -/** - * Inherits from `Stream.prototype`. - */ - -SendStream.prototype.__proto__ = Stream.prototype; - -/** - * Enable or disable "hidden" (dot) files. - * - * @param {Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.hidden = function(val){ - debug('hidden %s', val); - this._hidden = val; - return this; -}; - -/** - * Set index `path`, set to a falsy - * value to disable index support. - * - * @param {String|Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.index = function(path){ - debug('index %s', path); - this._index = path; - return this; -}; - -/** - * Set root `path`. - * - * @param {String} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.root = -SendStream.prototype.from = function(path){ - this._root = normalize(path); - return this; -}; - -/** - * Set max-age to `ms`. - * - * @param {Number} ms - * @return {SendStream} - * @api public - */ - -SendStream.prototype.maxage = function(ms){ - if (Infinity == ms) ms = 60 * 60 * 24 * 365 * 1000; - debug('max-age %d', ms); - this._maxage = ms; - return this; -}; - -/** - * Emit error with `status`. - * - * @param {Number} status - * @api private - */ - -SendStream.prototype.error = function(status, err){ - var res = this.res; - var msg = http.STATUS_CODES[status]; - err = err || new Error(msg); - err.status = status; - if (this.listeners('error').length) return this.emit('error', err); - res.statusCode = err.status; - res.end(msg); -}; - -/** - * Check if the pathname is potentially malicious. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isMalicious = function(){ - return !this._root && ~this.path.indexOf('..'); -}; - -/** - * Check if the pathname ends with "/". - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.hasTrailingSlash = function(){ - return '/' == this.path[this.path.length - 1]; -}; - -/** - * Check if the basename leads with ".". - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.hasLeadingDot = function(){ - return '.' == basename(this.path)[0]; -}; - -/** - * Check if this is a conditional GET request. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isConditionalGET = function(){ - return this.req.headers['if-none-match'] - || this.req.headers['if-modified-since']; -}; - -/** - * Strip content-* header fields. - * - * @api private - */ - -SendStream.prototype.removeContentHeaderFields = function(){ - var res = this.res; - Object.keys(res._headers).forEach(function(field){ - if (0 == field.indexOf('content')) { - res.removeHeader(field); - } - }); -}; - -/** - * Respond with 304 not modified. - * - * @api private - */ - -SendStream.prototype.notModified = function(){ - var res = this.res; - debug('not modified'); - this.removeContentHeaderFields(); - res.statusCode = 304; - res.end(); -}; - -/** - * Check if the request is cacheable, aka - * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isCachable = function(){ - var res = this.res; - return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode; -}; - -/** - * Handle stat() error. - * - * @param {Error} err - * @api private - */ - -SendStream.prototype.onStatError = function(err){ - var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']; - if (~notfound.indexOf(err.code)) return this.error(404, err); - this.error(500, err); -}; - -/** - * Check if the cache is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isFresh = function(){ - return fresh(this.req.headers, this.res._headers); -}; - -/** - * Redirect to `path`. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.redirect = function(path){ - if (this.listeners('directory').length) return this.emit('directory'); - var res = this.res; - path += '/'; - res.statusCode = 301; - res.setHeader('Location', path); - res.end('Redirecting to ' + utils.escape(path)); -}; - -/** - * Pipe to `res. - * - * @param {Stream} res - * @return {Stream} res - * @api public - */ - -SendStream.prototype.pipe = function(res){ - var self = this - , args = arguments - , path = this.path - , root = this._root; - - // references - this.res = res; - - // invalid request uri - path = utils.decode(path); - if (-1 == path) return this.error(400); - - // null byte(s) - if (~path.indexOf('\0')) return this.error(400); - - // join / normalize from optional root dir - if (root) path = normalize(join(this._root, path)); - - // ".." is malicious without "root" - if (this.isMalicious()) return this.error(403); - - // malicious path - if (root && 0 != path.indexOf(root)) return this.error(403); - - // hidden file support - if (!this._hidden && this.hasLeadingDot()) return this.error(404); - - // index file support - if (this._index && this.hasTrailingSlash()) path += this._index; - - debug('stat "%s"', path); - fs.stat(path, function(err, stat){ - if (err) return self.onStatError(err); - if (stat.isDirectory()) return self.redirect(self.path); - self.send(path, stat); - }); - - return res; -}; - -/** - * Transfer `path`. - * - * @param {String} path - * @api public - */ - -SendStream.prototype.send = function(path, stat){ - var options = this.options; - var len = stat.size; - var res = this.res; - var req = this.req; - var ranges = req.headers.range; - var offset = options.start || 0; - - // set header fields - this.setHeader(stat); - - // set content-type - this.type(path); - - // conditional GET support - if (this.isConditionalGET() - && this.isCachable() - && this.isFresh()) { - return this.notModified(); - } - - // adjust len to start/end options - len = Math.max(0, len - offset); - if (options.end !== undefined) { - var bytes = options.end - offset + 1; - if (len > bytes) len = bytes; - } - - // Range support - if (ranges) { - ranges = parseRange(len, ranges); - - // unsatisfiable - if (-1 == ranges) { - res.setHeader('Content-Range', 'bytes */' + stat.size); - return this.error(416); - } - - // valid (syntactically invalid ranges are treated as a regular response) - if (-2 != ranges) { - options.start = offset + ranges[0].start; - options.end = offset + ranges[0].end; - - // Content-Range - res.statusCode = 206; - res.setHeader('Content-Range', 'bytes ' - + ranges[0].start - + '-' - + ranges[0].end - + '/' - + len); - len = options.end - options.start + 1; - } - } - - // content-length - res.setHeader('Content-Length', len); - - // HEAD support - if ('HEAD' == req.method) return res.end(); - - this.stream(path, options); -}; - -/** - * Stream `path` to the response. - * - * @param {String} path - * @param {Object} options - * @api private - */ - -SendStream.prototype.stream = function(path, options){ - // TODO: this is all lame, refactor meeee - var self = this; - var res = this.res; - var req = this.req; - - // pipe - var stream = fs.createReadStream(path, options); - this.emit('stream', stream); - stream.pipe(res); - - // socket closed, done with the fd - req.on('close', stream.destroy.bind(stream)); - - // error handling code-smell - stream.on('error', function(err){ - // no hope in responding - if (res._header) { - console.error(err.stack); - req.destroy(); - return; - } - - // 500 - err.status = 500; - self.emit('error', err); - }); - - // end - stream.on('end', function(){ - self.emit('end'); - }); -}; - -/** - * Set content-type based on `path` - * if it hasn't been explicitly set. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.type = function(path){ - var res = this.res; - if (res.getHeader('Content-Type')) return; - var type = mime.lookup(path); - var charset = mime.charsets.lookup(type); - debug('content-type %s', type); - res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); -}; - -/** - * Set reaponse header fields, most - * fields may be pre-defined. - * - * @param {Object} stat - * @api private - */ - -SendStream.prototype.setHeader = function(stat){ - var res = this.res; - if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes'); - if (!res.getHeader('ETag')) res.setHeader('ETag', utils.etag(stat)); - if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString()); - if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000)); - if (!res.getHeader('Last-Modified')) res.setHeader('Last-Modified', stat.mtime.toUTCString()); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js deleted file mode 100644 index 950e5a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/lib/utils.js +++ /dev/null @@ -1,47 +0,0 @@ - -/** - * Return an ETag in the form of `"-"` - * from the given `stat`. - * - * @param {Object} stat - * @return {String} - * @api private - */ - -exports.etag = function(stat) { - return '"' + stat.size + '-' + Number(stat.mtime) + '"'; -}; - -/** - * decodeURIComponent. - * - * Allows V8 to only deoptimize this fn instead of all - * of send(). - * - * @param {String} path - * @api private - */ - -exports.decode = function(path){ - try { - return decodeURIComponent(path); - } catch (err) { - return -1; - } -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE deleted file mode 100644 index 451fc45..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md deleted file mode 100644 index d8b66a8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js deleted file mode 100644 index 1e00585..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/mime.js +++ /dev/null @@ -1,104 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - return this.extensions[mimeType]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -} - -module.exports = mime; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json deleted file mode 100644 index 9a5114b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.2.6", - "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", - "readmeFilename": "README.md", - "_id": "mime@1.2.6", - "_from": "mime@1.2.6" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js deleted file mode 100644 index cbad034..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/test.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); -eq('text/plain', mime.lookup('.text.txt')); -eq('text/plain', mime.lookup('.txt')); -eq('text/plain', mime.lookup('txt')); -eq('application/octet-stream', mime.lookup('text.nope')); -eq('fallback', mime.lookup('text.fallback', 'fallback')); -eq('application/octet-stream', mime.lookup('constructor')); -eq('text/plain', mime.lookup('TEXT.TXT')); -eq('text/event-stream', mime.lookup('text/event-stream')); -eq('application/x-web-app-manifest+json', mime.lookup('text.webapp')); - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq(undefined, mime.extension('constructor')); - -// -// Test node types -// - -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -console.log('\nOK'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types deleted file mode 100644 index b3cae2e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1510 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at . -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lha lrf lzh so iso dmg dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -application/vnd.hzn-3d-crossword x3d -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.packageitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.route66.link66+xml link66 -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cdlink vcd -application/x-chat chat -application/x-chess-pgn pgn -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/x-font-woff woff -# application/x-font-vfont -application/x-futuresplash spl -application/x-gnumeric gnumeric -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-stuffit sit -application/x-stuffitx sitx -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xpinstall xpi -# application/x400-bp -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -audio/ogg oga ogg spx -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file dvb -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -audio/x-wav wav -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-pascal p pas -text/x-java-source java -text/x-setext etx -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-ms-asf asf asx -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -x-conference/x-cooltalk ice diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types deleted file mode 100644 index b7fe8c0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/node_modules/mime/types/node.types +++ /dev/null @@ -1,65 +0,0 @@ -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: OTF Message Silencer -# Why: To silence the "Resource interpreted as font but transferred with MIME -# type font/otf" message that occurs in Google Chrome -# Added by: niftylettuce -font/opentype otf - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifest -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest appcache manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Music playlist format (http://en.wikipedia.org/wiki/M3U) -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -application/x-mpegURL m3u8 - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: The FLAC lossless codec format -# Why: Streaming and serving FLAC audio -# Added by: jacobrask -audio/flac flac - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Matroska Mime Types -# Why: http://en.wikipedia.org/wiki/Matroska -# Added by: aduncan88 -video/x-matroska mkv -audio/x-matroska mka diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json deleted file mode 100644 index 5e936f1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/node_modules/send/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "send", - "version": "0.1.0", - "description": "Better streaming static file server with Range and conditional-GET support", - "keywords": [ - "static", - "file", - "server" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": { - "debug": "*", - "mime": "1.2.6", - "fresh": "0.1.0", - "range-parser": "0.0.4" - }, - "devDependencies": { - "mocha": "*", - "should": "*", - "supertest": "0.0.1", - "connect": "2.x" - }, - "scripts": { - "test": "make test" - }, - "main": "index", - "readme": "\n# send\n\n Send is Connect's `static()` extracted for generalized use, a streaming static file\n server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.\n\n## Installation\n\n $ npm install send\n\n## Examples\n\n Small:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n send(req, req.url).pipe(res);\n});\n```\n\n Serving from a root directory with custom error-handling:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n // your custom error-handling logic:\n function error(err) {\n res.statusCode = err.status || 500;\n res.end(err.message);\n }\n\n // your custom directory handling logic:\n function redirect() {\n res.statusCode = 301;\n res.setHeader('Location', req.url + '/');\n res.end('Redirecting to ' + req.url + '/');\n }\n\n // transfer arbitrary files from within\n // /www/example.com/public/*\n send(req, url.parse(req.url).pathname)\n .root('/www/example.com/public')\n .on('error', error)\n .on('directory', redirect)\n .pipe(res);\n});\n```\n\n## API\n\n### Events\n\n - `error` an error occurred `(err)`\n - `directory` a directory was requested\n - `stream` file streaming has started `(stream)`\n - `end` streaming has completed\n\n### .root(dir)\n\n Serve files relative to `path`. Aliased as `.from(dir)`.\n\n### .index(path)\n\n By default send supports \"index.html\" files, to disable this\n invoke `.index(false)` or to supply a new index pass a string.\n\n### .maxage(ms)\n\n Provide a max-age in milliseconds for http caching, defaults to 0.\n\n## Error-handling\n\n By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.\n\n## Caching\n\n It does _not_ perform internal caching, you should use a reverse proxy cache such\n as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;).\n\n## Debugging\n\n To enable `debug()` instrumentation output export __DEBUG__:\n\n```\n$ DEBUG=send node app\n```\n\n## Running tests\n\n```\n$ npm install\n$ make test\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "send@0.1.0", - "_from": "send@0.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json deleted file mode 100644 index cb52fb9..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "express", - "description": "Sinatra inspired web development framework", - "version": "3.1.1", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "contributors": [ - { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "Aaron Heckmann", - "email": "aaron.heckmann+github@gmail.com" - }, - { - "name": "Ciaran Jessup", - "email": "ciaranj@gmail.com" - }, - { - "name": "Guillermo Rauch", - "email": "rauchg@gmail.com" - } - ], - "dependencies": { - "connect": "2.7.4", - "commander": "0.6.1", - "range-parser": "0.0.4", - "mkdirp": "~0.3.4", - "cookie": "0.0.5", - "buffer-crc32": "~0.2.1", - "fresh": "0.1.0", - "methods": "0.0.1", - "send": "0.1.0", - "cookie-signature": "0.0.1", - "debug": "*" - }, - "devDependencies": { - "ejs": "*", - "mocha": "*", - "jade": "*", - "hjs": "*", - "stylus": "*", - "should": "*", - "connect-redis": "*", - "github-flavored-markdown": "*", - "supertest": "0.0.1" - }, - "keywords": [ - "express", - "framework", - "sinatra", - "web", - "rest", - "restful", - "router", - "app", - "api" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/express" - }, - "main": "index", - "bin": { - "express": "./bin/express" - }, - "scripts": { - "prepublish": "npm prune", - "test": "make test" - }, - "engines": { - "node": "*" - }, - "readme": "![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)\n\n Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express)\n\n```js\nvar express = require('express');\nvar app = express();\n\napp.get('/', function(req, res){\n res.send('Hello World');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n $ npm install -g express\n $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n $ npm install\n\n Start the server:\n\n $ node app\n\n## Features\n\n * Built on [Connect](http://github.com/senchalabs/connect)\n * Robust routing\n * HTTP helpers (redirection, caching, etc)\n * View system supporting 14+ template engines\n * Content negotiation\n * Focus on high performance\n * Environment based configuration\n * Executable for generating applications quickly\n * High test coverage\n\n## Philosophy\n\n The Express philosophy is to provide small, robust tooling for HTTP servers. Making\n it a great solution for single page applications, web sites, hybrids, or public\n HTTP APIs.\n\n Built on Connect you can use _only_ what you need, and nothing more, applications\n can be as big or as small as you like, even a single file. Express does\n not force you to use any specific ORM or template engine. With support for over\n 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)\n you can quickly craft your perfect framework.\n\n## More Information\n\n * Join #express on freenode\n * [Google Group](http://groups.google.com/group/express-js) for discussion\n * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)\n * [Русскоязычная документация](http://express-js.ru/)\n * Run express examples [online](https://runnable.com/express)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite deps:\n\n $ git clone git://github.com/visionmedia/express.git --depth 1\n $ cd express\n $ npm install\n\nthen run whichever tests you want:\n\n $ node examples/content-negotiation\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n $ npm install\n\nthen run the tests:\n\n $ make test\n\n## Contributors\n\n```\nproject: express\ncommits: 3559\nactive : 468 days\nfiles : 237\nauthors:\n 1891\tTj Holowaychuk 53.1%\n 1285\tvisionmedia 36.1%\n 182\tTJ Holowaychuk 5.1%\n 54\tAaron Heckmann 1.5%\n 34\tcsausdev 1.0%\n 26\tciaranj 0.7%\n 21\tRobert Sköld 0.6%\n 6\tGuillermo Rauch 0.2%\n 3\tDav Glass 0.1%\n 3\tNick Poulden 0.1%\n 2\tRandy Merrill 0.1%\n 2\tBenny Wong 0.1%\n 2\tHunter Loftis 0.1%\n 2\tJake Gordon 0.1%\n 2\tBrian McKinney 0.1%\n 2\tRoman Shtylman 0.1%\n 2\tBen Weaver 0.1%\n 2\tDave Hoover 0.1%\n 2\tEivind Fjeldstad 0.1%\n 2\tDaniel Shaw 0.1%\n 1\tMatt Colyer 0.0%\n 1\tPau Ramon 0.0%\n 1\tPero Pejovic 0.0%\n 1\tPeter Rekdal Sunde 0.0%\n 1\tRaynos 0.0%\n 1\tTeng Siong Ong 0.0%\n 1\tViktor Kelemen 0.0%\n 1\tctide 0.0%\n 1\t8bitDesigner 0.0%\n 1\tisaacs 0.0%\n 1\tmgutz 0.0%\n 1\tpikeas 0.0%\n 1\tshuwatto 0.0%\n 1\ttstrimple 0.0%\n 1\tewoudj 0.0%\n 1\tAdam Sanderson 0.0%\n 1\tAndrii Kostenko 0.0%\n 1\tAndy Hiew 0.0%\n 1\tArpad Borsos 0.0%\n 1\tAshwin Purohit 0.0%\n 1\tBenjen 0.0%\n 1\tDarren Torpey 0.0%\n 1\tGreg Ritter 0.0%\n 1\tGregory Ritter 0.0%\n 1\tJames Herdman 0.0%\n 1\tJim Snodgrass 0.0%\n 1\tJoe McCann 0.0%\n 1\tJonathan Dumaine 0.0%\n 1\tJonathan Palardy 0.0%\n 1\tJonathan Zacsh 0.0%\n 1\tJustin Lilly 0.0%\n 1\tKen Sato 0.0%\n 1\tMaciej Małecki 0.0%\n 1\tMasahiro Hayashi 0.0%\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "_id": "express@3.1.1", - "dist": { - "shasum": "46f6247a14d17e2b488e9ee6df5df19c1229cbf1" - }, - "_from": "express@3.1.1", - "_resolved": "https://registry.npmjs.org/express/-/express-3.1.1.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js deleted file mode 100644 index 50cf320..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/express/connection-sharing/node_modules/express/test.js +++ /dev/null @@ -1,38 +0,0 @@ - -/** - * Module dependencies. - */ - -var express = require('./') - , app = express() - -var users = ['foo', 'bar', 'baz']; - -app.use(express.bodyParser()); - -app.get('/api/users', function(req, res){ - res.send(users); -}); - -app.del('/api/users', function(req, res){ - users = []; - res.send(200); -}); - -app.post('/api/users', function(req, res){ - users.push(req.body.name); - res.send(201); -}); - -app.get('/api/user/:id', function(req, res){ - var id = req.params.id; - res.send(users[id]); -}); - -app.use('/api', function(req, res, next){ - var err = new Error('Method Not Allowed'); - err.status = 405; -}); - -app.listen(5555); -console.log('listening on 5555'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js deleted file mode 100644 index 01b2bb1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/hooks.js +++ /dev/null @@ -1,42 +0,0 @@ - -var mongoose = require('mongoose') -var Schema = mongoose.Schema; - -mongoose.connect('mongodb://localhost/example-hooks'); - -var schema = Schema({ name: String }); -schema.post('save', function () { - console.log('post save hook', arguments); -}) - -schema.pre('save', function (next) { - console.log('pre save'); - next(); -}) - -var M = mongoose.model('Hooks', schema); - -var doc = new M({ name: 'hooooks' }); -doc.save(function (err) { - console.log('save callback'); - mongoose.disconnect(); -}) - - -//// - -Model.on('init', cb); -Model.on('remove', cb); -Model.on('update', cb); - // Model.update() and doc.save() -Model.on('insert', cb); -Model.on('save', cb); - -var promise = Model.save(doc, options, callback); - -// - -var schema = new Schema(..); -schema.pre('save', function (next, done) { - -}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js deleted file mode 100644 index 4bec928..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-across-three-collections.js +++ /dev/null @@ -1,135 +0,0 @@ - -var assert = require('assert') -var mongoose = require('../'); -var Schema = mongoose.Schema; -var ObjectId = mongoose.Types.ObjectId; - -/** - * Connect to the db - */ - -var dbname = 'testing_populateAdInfinitum_' + require('../lib/utils').random() -mongoose.connect('localhost', dbname); -mongoose.connection.on('error', function() { - console.error('connection error', arguments); -}); - -/** - * Schemas - */ - -var user = new Schema({ - name: String, - friends: [{ - type: Schema.ObjectId, - ref: 'User' - }] -}); -var User = mongoose.model('User', user); - -var blogpost = Schema({ - title: String, - tags: [String], - author: { - type: Schema.ObjectId, - ref: 'User' - } -}) -var BlogPost = mongoose.model('BlogPost', blogpost); - -/** - * example - */ - -mongoose.connection.on('open', function() { - - /** - * Generate data - */ - - var userIds = [new ObjectId, new ObjectId, new ObjectId, new ObjectId]; - var users = []; - - users.push({ - _id: userIds[0], - name: 'mary', - friends: [userIds[1], userIds[2], userIds[3]] - }); - users.push({ - _id: userIds[1], - name: 'bob', - friends: [userIds[0], userIds[2], userIds[3]] - }); - users.push({ - _id: userIds[2], - name: 'joe', - friends: [userIds[0], userIds[1], userIds[3]] - }); - users.push({ - _id: userIds[3], - name: 'sally', - friends: [userIds[0], userIds[1], userIds[2]] - }); - - User.create(users, function(err, docs) { - assert.ifError(err); - - var blogposts = []; - blogposts.push({ - title: 'blog 1', - tags: ['fun', 'cool'], - author: userIds[3] - }) - blogposts.push({ - title: 'blog 2', - tags: ['cool'], - author: userIds[1] - }) - blogposts.push({ - title: 'blog 3', - tags: ['fun', 'odd'], - author: userIds[2] - }) - - BlogPost.create(blogposts, function(err, docs) { - assert.ifError(err); - - /** - * Population - */ - - BlogPost - .find({ tags: 'fun' }) - .lean() - .populate('author') - .exec(function(err, docs) { - assert.ifError(err); - - /** - * Populate the populated documents - */ - - var opts = { - path: 'author.friends', - select: 'name', - options: { limit: 2 } - } - - BlogPost.populate(docs, opts, function(err, docs) { - assert.ifError(err); - console.log('populated'); - var s = require('util').inspect(docs, { depth: null }) - console.log(s); - done(); - }) - }) - }) - }) -}); - -function done(err) { - if (err) console.error(err.stack); - mongoose.connection.db.dropDatabase(function() { - mongoose.connection.close(); - }); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js deleted file mode 100644 index c1d6a70..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-basic.js +++ /dev/null @@ -1,95 +0,0 @@ - -var mongoose = require('mongoose') -var Schema = mongoose.Schema; - -console.log('Running mongoose version %s', mongoose.version); - -/** - * Console schema - */ - -var consoleSchema = Schema({ - name: String - , manufacturer: String - , released: Date -}) -var Console = mongoose.model('Console', consoleSchema); - -/** - * Game schema - */ - -var gameSchema = Schema({ - name: String - , developer: String - , released: Date - , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] -}) -var Game = mongoose.model('Game', gameSchema); - -/** - * Connect to the console database on localhost with - * the default port (27017) - */ - -mongoose.connect('mongodb://localhost/console', function (err) { - // if we failed to connect, abort - if (err) throw err; - - // we connected ok - createData(); -}) - -/** - * Data generation - */ - -function createData () { - Console.create({ - name: 'Nintendo 64' - , manufacturer: 'Nintendo' - , released: 'September 29, 1996' - }, function (err, nintendo64) { - if (err) return done(err); - - Game.create({ - name: 'Legend of Zelda: Ocarina of Time' - , developer: 'Nintendo' - , released: new Date('November 21, 1998') - , consoles: [nintendo64] - }, function (err) { - if (err) return done(err); - example(); - }) - }) -} - -/** - * Population - */ - -function example () { - Game - .findOne({ name: /^Legend of Zelda/ }) - .populate('consoles') - .exec(function (err, ocinara) { - if (err) return done(err); - - console.log( - '"%s" was released for the %s on %s' - , ocinara.name - , ocinara.consoles[0].name - , ocinara.released.toLocaleDateString()); - - done(); - }) -} - -function done (err) { - if (err) console.error(err); - Console.remove(function () { - Game.remove(function () { - mongoose.disconnect(); - }) - }) -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js deleted file mode 100644 index 6d48fdc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-existing-doc.js +++ /dev/null @@ -1,101 +0,0 @@ - -var mongoose = require('mongoose') -var Schema = mongoose.Schema; - -console.log('Running mongoose version %s', mongoose.version); - -/** - * Console schema - */ - -var consoleSchema = Schema({ - name: String - , manufacturer: String - , released: Date -}) -var Console = mongoose.model('Console', consoleSchema); - -/** - * Game schema - */ - -var gameSchema = Schema({ - name: String - , developer: String - , released: Date - , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] -}) -var Game = mongoose.model('Game', gameSchema); - -/** - * Connect to the console database on localhost with - * the default port (27017) - */ - -mongoose.connect('mongodb://localhost/console', function (err) { - // if we failed to connect, abort - if (err) throw err; - - // we connected ok - createData(); -}) - -/** - * Data generation - */ - -function createData () { - Console.create({ - name: 'Nintendo 64' - , manufacturer: 'Nintendo' - , released: 'September 29, 1996' - }, function (err, nintendo64) { - if (err) return done(err); - - Game.create({ - name: 'Legend of Zelda: Ocarina of Time' - , developer: 'Nintendo' - , released: new Date('November 21, 1998') - , consoles: [nintendo64] - }, function (err) { - if (err) return done(err); - example(); - }) - }) -} - -/** - * Population - */ - -function example () { - Game - .findOne({ name: /^Legend of Zelda/ }) - .exec(function (err, ocinara) { - if (err) return done(err); - - console.log('"%s" console _id: %s', ocinara.name, ocinara.consoles[0]); - - // population of existing document - ocinara.populate('consoles', function (err) { - if (err) return done(err); - - console.log( - '"%s" was released for the %s on %s' - , ocinara.name - , ocinara.consoles[0].name - , ocinara.released.toLocaleDateString()); - - done(); - }) - }) -} - -function done (err) { - if (err) console.error(err); - Console.remove(function () { - Game.remove(function () { - mongoose.disconnect(); - }) - }) -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js deleted file mode 100644 index 6d918ff..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-of-multiple-existing-docs.js +++ /dev/null @@ -1,112 +0,0 @@ - -var mongoose = require('mongoose') -var Schema = mongoose.Schema; - -console.log('Running mongoose version %s', mongoose.version); - -/** - * Console schema - */ - -var consoleSchema = Schema({ - name: String - , manufacturer: String - , released: Date -}) -var Console = mongoose.model('Console', consoleSchema); - -/** - * Game schema - */ - -var gameSchema = Schema({ - name: String - , developer: String - , released: Date - , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] -}) -var Game = mongoose.model('Game', gameSchema); - -/** - * Connect to the console database on localhost with - * the default port (27017) - */ - -mongoose.connect('mongodb://localhost/console', function (err) { - // if we failed to connect, abort - if (err) throw err; - - // we connected ok - createData(); -}) - -/** - * Data generation - */ - -function createData () { - Console.create({ - name: 'Nintendo 64' - , manufacturer: 'Nintendo' - , released: 'September 29, 1996' - }, { - name: 'Super Nintendo' - , manufacturer: 'Nintendo' - , released: 'August 23, 1991' - }, function (err, nintendo64, superNintendo) { - if (err) return done(err); - - Game.create({ - name: 'Legend of Zelda: Ocarina of Time' - , developer: 'Nintendo' - , released: new Date('November 21, 1998') - , consoles: [nintendo64] - }, { - name: 'Mario Kart' - , developer: 'Nintendo' - , released: 'September 1, 1992' - , consoles: [superNintendo] - }, function (err) { - if (err) return done(err); - example(); - }) - }) -} - -/** - * Population - */ - -function example () { - Game - .find({}) - .exec(function (err, games) { - if (err) return done(err); - - console.log('found %d games', games.length); - - var options = { path: 'consoles', select: 'name released -_id' }; - Game.populate(games, options, function (err, games) { - if (err) return done(err); - - games.forEach(function (game) { - console.log( - '"%s" was released for the %s on %s' - , game.name - , game.consoles[0].name - , game.released.toLocaleDateString()); - }) - - done() - }) - }) -} - -function done (err) { - if (err) console.error(err); - Console.remove(function () { - Game.remove(function () { - mongoose.disconnect(); - }) - }) -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js deleted file mode 100644 index 7387b3b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-options.js +++ /dev/null @@ -1,124 +0,0 @@ - -var mongoose = require('mongoose') -var Schema = mongoose.Schema; - -console.log('Running mongoose version %s', mongoose.version); - -/** - * Console schema - */ - -var consoleSchema = Schema({ - name: String - , manufacturer: String - , released: Date -}) -var Console = mongoose.model('Console', consoleSchema); - -/** - * Game schema - */ - -var gameSchema = Schema({ - name: String - , developer: String - , released: Date - , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] -}) -var Game = mongoose.model('Game', gameSchema); - -/** - * Connect to the console database on localhost with - * the default port (27017) - */ - -mongoose.connect('mongodb://localhost/console', function (err) { - // if we failed to connect, abort - if (err) throw err; - - // we connected ok - createData(); -}) - -/** - * Data generation - */ - -function createData () { - Console.create({ - name: 'Nintendo 64' - , manufacturer: 'Nintendo' - , released: 'September 29, 1996' - }, { - name: 'Super Nintendo' - , manufacturer: 'Nintendo' - , released: 'August 23, 1991' - }, { - name: 'XBOX 360' - , manufacturer: 'Microsoft' - , released: 'November 22, 2005' - }, function (err, nintendo64, superNintendo, xbox360) { - if (err) return done(err); - - Game.create({ - name: 'Legend of Zelda: Ocarina of Time' - , developer: 'Nintendo' - , released: new Date('November 21, 1998') - , consoles: [nintendo64] - }, { - name: 'Mario Kart' - , developer: 'Nintendo' - , released: 'September 1, 1992' - , consoles: [superNintendo] - }, { - name: 'Perfect Dark Zero' - , developer: 'Rare' - , released: 'November 17, 2005' - , consoles: [xbox360] - }, function (err) { - if (err) return done(err); - example(); - }) - }) -} - -/** - * Population - */ - -function example () { - Game - .find({}) - .populate({ - path: 'consoles' - , match: { manufacturer: 'Nintendo' } - , select: 'name' - , options: { comment: 'population' } - }) - .exec(function (err, games) { - if (err) return done(err); - - games.forEach(function (game) { - console.log( - '"%s" was released for the %s on %s' - , game.name - , game.consoles.length ? game.consoles[0].name : '??' - , game.released.toLocaleDateString()); - }) - - return done(); - }) -} - -/** - * Clean up - */ - -function done (err) { - if (err) console.error(err); - Console.remove(function () { - Game.remove(function () { - mongoose.disconnect(); - }) - }) -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js deleted file mode 100644 index 50fc9fa..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/population-plain-objects.js +++ /dev/null @@ -1,96 +0,0 @@ - -var mongoose = require('mongoose') -var Schema = mongoose.Schema; - -console.log('Running mongoose version %s', mongoose.version); - -/** - * Console schema - */ - -var consoleSchema = Schema({ - name: String - , manufacturer: String - , released: Date -}) -var Console = mongoose.model('Console', consoleSchema); - -/** - * Game schema - */ - -var gameSchema = Schema({ - name: String - , developer: String - , released: Date - , consoles: [{ type: Schema.Types.ObjectId, ref: 'Console' }] -}) -var Game = mongoose.model('Game', gameSchema); - -/** - * Connect to the console database on localhost with - * the default port (27017) - */ - -mongoose.connect('mongodb://localhost/console', function (err) { - // if we failed to connect, abort - if (err) throw err; - - // we connected ok - createData(); -}) - -/** - * Data generation - */ - -function createData () { - Console.create({ - name: 'Nintendo 64' - , manufacturer: 'Nintendo' - , released: 'September 29, 1996' - }, function (err, nintendo64) { - if (err) return done(err); - - Game.create({ - name: 'Legend of Zelda: Ocarina of Time' - , developer: 'Nintendo' - , released: new Date('November 21, 1998') - , consoles: [nintendo64] - }, function (err) { - if (err) return done(err); - example(); - }) - }) -} - -/** - * Population - */ - -function example () { - Game - .findOne({ name: /^Legend of Zelda/ }) - .populate('consoles') - .lean() // just return plain objects, not documents wrapped by mongoose - .exec(function (err, ocinara) { - if (err) return done(err); - - console.log( - '"%s" was released for the %s on %s' - , ocinara.name - , ocinara.consoles[0].name - , ocinara.released.toLocaleDateString()); - - done(); - }) -} - -function done (err) { - if (err) console.error(err); - Console.remove(function () { - Game.remove(function () { - mongoose.disconnect(); - }) - }) -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js b/nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js deleted file mode 100644 index d108d05..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/examples/schema.js +++ /dev/null @@ -1,102 +0,0 @@ - -/** - * Module dependencies. - */ - -var mongoose = require('mongoose') - , Schema = mongoose.Schema; - -/** - * Schema definition - */ - -// recursive embedded-document schema - -var Comment = new Schema(); - -Comment.add({ - title : { type: String, index: true } - , date : Date - , body : String - , comments : [Comment] -}); - -var BlogPost = new Schema({ - title : { type: String, index: true } - , slug : { type: String, lowercase: true, trim: true } - , date : Date - , buf : Buffer - , comments : [Comment] - , creator : Schema.ObjectId -}); - -var Person = new Schema({ - name: { - first: String - , last : String - } - , email: { type: String, required: true, index: { unique: true, sparse: true } } - , alive: Boolean -}); - -/** - * Accessing a specific schema type by key - */ - -BlogPost.path('date') -.default(function(){ - return new Date() - }) -.set(function(v){ - return v == 'now' ? new Date() : v; - }); - -/** - * Pre hook. - */ - -BlogPost.pre('save', function(next, done){ - emailAuthor(done); // some async function - next(); -}); - -/** - * Methods - */ - -BlogPost.methods.findCreator = function (callback) { - return this.db.model('Person').findById(this.creator, callback); -} - -BlogPost.statics.findByTitle = function (title, callback) { - return this.find({ title: title }, callback); -} - -BlogPost.methods.expressiveQuery = function (creator, date, callback) { - return this.find('creator', creator).where('date').gte(date).run(callback); -} - -/** - * Plugins - */ - -function slugGenerator (options){ - options = options || {}; - var key = options.key || 'title'; - - return function slugGenerator(schema){ - schema.path(key).set(function(v){ - this.slug = v.toLowerCase().replace(/[^a-z0-9]/g, '').replace(/-+/g, ''); - return v; - }); - }; -}; - -BlogPost.plugin(slugGenerator()); - -/** - * Define model. - */ - -mongoose.model('BlogPost', BlogPost); -mongoose.model('Person', Person); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/index.js deleted file mode 100644 index e7e6278..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/index.js +++ /dev/null @@ -1,7 +0,0 @@ - -/** - * Export lib/mongoose - * - */ - -module.exports = require('./lib/'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js deleted file mode 100644 index 1c38286..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/collection.js +++ /dev/null @@ -1,188 +0,0 @@ - -/*! - * Module dependencies. - */ - -var STATES = require('./connectionstate') - -/** - * Abstract Collection constructor - * - * This is the base class that drivers inherit from and implement. - * - * @param {String} name name of the collection - * @param {Connection} conn A MongooseConnection instance - * @param {Object} opts optional collection options - * @api public - */ - -function Collection (name, conn, opts) { - if (undefined === opts) opts = {}; - if (undefined === opts.capped) opts.capped = {}; - - opts.bufferCommands = undefined === opts.bufferCommands - ? true - : opts.bufferCommands; - - if ('number' == typeof opts.capped) { - opts.capped = { size: opts.capped }; - } - - this.opts = opts; - this.name = name; - this.conn = conn; - this.queue = []; - this.buffer = this.opts.bufferCommands; - - if (STATES.connected == this.conn.readyState) { - this.onOpen(); - } -}; - -/** - * The collection name - * - * @api public - * @property name - */ - -Collection.prototype.name; - -/** - * The Connection instance - * - * @api public - * @property conn - */ - -Collection.prototype.conn; - -/** - * Called when the database connects - * - * @api private - */ - -Collection.prototype.onOpen = function () { - var self = this; - this.buffer = false; - self.doQueue(); -}; - -/** - * Called when the database disconnects - * - * @api private - */ - -Collection.prototype.onClose = function () { - if (this.opts.bufferCommands) { - this.buffer = true; - } -}; - -/** - * Queues a method for later execution when its - * database connection opens. - * - * @param {String} name name of the method to queue - * @param {Array} args arguments to pass to the method when executed - * @api private - */ - -Collection.prototype.addQueue = function (name, args) { - this.queue.push([name, args]); - return this; -}; - -/** - * Executes all queued methods and clears the queue. - * - * @api private - */ - -Collection.prototype.doQueue = function () { - for (var i = 0, l = this.queue.length; i < l; i++){ - this[this.queue[i][0]].apply(this, this.queue[i][1]); - } - this.queue = []; - return this; -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.ensureIndex = function(){ - throw new Error('Collection#ensureIndex unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.findAndModify = function(){ - throw new Error('Collection#findAndModify unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.findOne = function(){ - throw new Error('Collection#findOne unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.find = function(){ - throw new Error('Collection#find unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.insert = function(){ - throw new Error('Collection#insert unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.save = function(){ - throw new Error('Collection#save unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.update = function(){ - throw new Error('Collection#update unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.getIndexes = function(){ - throw new Error('Collection#getIndexes unimplemented by driver'); -}; - -/** - * Abstract method that drivers must implement. - */ - -Collection.prototype.mapReduce = function(){ - throw new Error('Collection#mapReduce unimplemented by driver'); -}; - -/*! - * Module exports. - */ - -module.exports = Collection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js deleted file mode 100644 index ef4595f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/connection.js +++ /dev/null @@ -1,706 +0,0 @@ -/*! - * Module dependencies. - */ - -var url = require('url') - , utils = require('./utils') - , EventEmitter = require('events').EventEmitter - , driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native' - , Model = require('./model') - , Schema = require('./schema') - , Collection = require(driver + '/collection') - , STATES = require('./connectionstate') - , MongooseError = require('./error') - , assert =require('assert') - , muri = require('muri') - -/*! - * Protocol prefix regexp. - * - * @api private - */ - -var rgxProtocol = /^(?:.)+:\/\//; - -/** - * Connection constructor - * - * For practical reasons, a Connection equals a Db. - * - * @param {Mongoose} base a mongoose instance - * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `connecting`: Emitted when `connection.{open,openSet}()` is executed on this connection. - * @event `connected`: Emitted when this connection successfully connects to the db. May be emitted _multiple_ times in `reconnected` scenarios. - * @event `open`: Emitted after we `connected` and `onOpen` is executed on all of this connections models. - * @event `disconnecting`: Emitted when `connection.close()` was executed. - * @event `disconnected`: Emitted after getting disconnected from the db. - * @event `close`: Emitted after we `disconnected` and `onClose` executed on all of this connections models. - * @event `reconnected`: Emitted after we `connected` and subsequently `disconnected`, followed by successfully another successfull connection. - * @event `error`: Emitted when an error occurs on this connection. - * @event `fullsetup`: Emitted in a replica-set scenario, when all nodes specified in the connection string are connected. - * @api public - */ - -function Connection (base) { - this.base = base; - this.collections = {}; - this.models = {}; - this.replica = false; - this.hosts = null; - this.host = null; - this.port = null; - this.user = null; - this.pass = null; - this.name = null; - this.options = null; - this._readyState = STATES.disconnected; - this._closeCalled = false; - this._hasOpened = false; -}; - -/*! - * Inherit from EventEmitter - */ - -Connection.prototype.__proto__ = EventEmitter.prototype; - -/** - * Connection ready state - * - * - 0 = disconnected - * - 1 = connected - * - 2 = connecting - * - 3 = disconnecting - * - * Each state change emits its associated event name. - * - * ####Example - * - * conn.on('connected', callback); - * conn.on('disconnected', callback); - * - * @property readyState - * @api public - */ - -Object.defineProperty(Connection.prototype, 'readyState', { - get: function(){ return this._readyState; } - , set: function (val) { - if (!(val in STATES)) { - throw new Error('Invalid connection state: ' + val); - } - - if (this._readyState !== val) { - this._readyState = val; - - if (STATES.connected === val) - this._hasOpened = true; - - this.emit(STATES[val]); - } - } -}); - -/** - * A hash of the collections associated with this connection - * - * @property collections - */ - -Connection.prototype.collections; - -/** - * The mongodb.Db instance, set when the connection is opened - * - * @property db - */ - -Connection.prototype.db; - -/** - * Opens the connection to MongoDB. - * - * `options` is a hash with the following possible properties: - * - * db - passed to the connection db instance - * server - passed to the connection server instance(s) - * replset - passed to the connection ReplSet instance - * user - username for authentication - * pass - password for authentication - * auth - options for authentication (see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate) - * - * ####Notes: - * - * Mongoose forces the db option `forceServerObjectId` false and cannot be overridden. - * Mongoose defaults the server `auto_reconnect` options to true which can be overridden. - * See the node-mongodb-native driver instance for options that it understands. - * - * _Options passed take precedence over options included in connection strings._ - * - * @param {String} connection_string mongodb://uri or the host to which you are connecting - * @param {String} [database] database name - * @param {Number} [port] database port - * @param {Object} [options] options - * @param {Function} [callback] - * @see node-mongodb-native https://github.com/mongodb/node-mongodb-native - * @see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate - * @api public - */ - -Connection.prototype.open = function (host, database, port, options, callback) { - var self = this - , parsed - , uri; - - if ('string' === typeof database) { - switch (arguments.length) { - case 2: - port = 27017; - case 3: - switch (typeof port) { - case 'function': - callback = port, port = 27017; - break; - case 'object': - options = port, port = 27017; - break; - } - break; - case 4: - if ('function' === typeof options) - callback = options, options = {}; - } - } else { - switch (typeof database) { - case 'function': - callback = database, database = undefined; - break; - case 'object': - options = database; - database = undefined; - callback = port; - break; - } - - if (!rgxProtocol.test(host)) { - host = 'mongodb://' + host; - } - - try { - parsed = muri(host); - } catch (err) { - this.error(err, callback); - return this; - } - - database = parsed.db; - host = parsed.hosts[0].host || parsed.hosts[0].ipc; - port = parsed.hosts[0].port || 27017; - } - - this.options = this.parseOptions(options, parsed && parsed.options); - - // make sure we can open - if (STATES.disconnected !== this.readyState) { - var err = new Error('Trying to open unclosed connection.'); - err.state = this.readyState; - this.error(err, callback); - return this; - } - - if (!host) { - this.error(new Error('Missing hostname.'), callback); - return this; - } - - if (!database) { - this.error(new Error('Missing database name.'), callback); - return this; - } - - // authentication - if (options && options.user && options.pass) { - this.user = options.user; - this.pass = options.pass; - - } else if (parsed && parsed.auth) { - this.user = parsed.auth.user; - this.pass = parsed.auth.pass; - - // Check hostname for user/pass - } else if (/@/.test(host) && /:/.test(host.split('@')[0])) { - host = host.split('@'); - var auth = host.shift().split(':'); - host = host.pop(); - this.user = auth[0]; - this.pass = auth[1]; - - } else { - this.user = this.pass = undefined; - } - - this.name = database; - this.host = host; - this.port = port; - - this._open(callback); - return this; -}; - -/** - * Opens the connection to a replica set. - * - * ####Example: - * - * var db = mongoose.createConnection(); - * db.openSet("mongodb://user:pwd@localhost:27020/testing,mongodb://example.com:27020,mongodb://localhost:27019"); - * - * The database name and/or auth need only be included in one URI. - * The `options` is a hash which is passed to the internal driver connection object. - * - * Valid `options` - * - * db - passed to the connection db instance - * server - passed to the connection server instance(s) - * replset - passed to the connection ReplSetServer instance - * user - username for authentication - * pass - password for authentication - * auth - options for authentication (see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate) - * - * _Options passed take precedence over options included in connection strings._ - * - * ####Notes: - * - * Mongoose forces the db option `forceServerObjectId` false and cannot be overridden. - * Mongoose defaults the server `auto_reconnect` options to true which can be overridden. - * See the node-mongodb-native driver instance for options that it understands. - * - * @param {String} uris comma-separated mongodb:// `URI`s - * @param {String} [database] database name if not included in `uris` - * @param {Object} [options] passed to the internal driver - * @param {Function} [callback] - * @see node-mongodb-native https://github.com/mongodb/node-mongodb-native - * @see http://mongodb.github.com/node-mongodb-native/api-generated/db.html#authenticate - * @api public - */ - -Connection.prototype.openSet = function (uris, database, options, callback) { - if (!rgxProtocol.test(uris)) { - uris = 'mongodb://' + uris; - } - - var self = this; - - switch (arguments.length) { - case 3: - switch (typeof database) { - case 'string': - this.name = database; - break; - case 'object': - callback = options; - options = database; - database = null; - break; - } - - if ('function' === typeof options) { - callback = options; - options = {}; - } - break; - case 2: - switch (typeof database) { - case 'string': - this.name = database; - break; - case 'function': - callback = database, database = null; - break; - case 'object': - options = database, database = null; - break; - } - } - - var parsed; - try { - parsed = muri(uris); - } catch (err) { - this.error(err, callback); - return this; - } - - if (!this.name) { - this.name = parsed.db; - } - - this.hosts = parsed.hosts; - this.options = this.parseOptions(options, parsed && parsed.options); - this.replica = true; - - if (!this.name) { - this.error(new Error('No database name provided for replica set'), callback); - return this; - } - - // authentication - if (options && options.user && options.pass) { - this.user = options.user; - this.pass = options.pass; - - } else if (parsed && parsed.auth) { - this.user = parsed.auth.user; - this.pass = parsed.auth.pass; - - } else { - this.user = this.pass = undefined; - } - - this._open(callback); - return this; -}; - -/** - * error - * - * Graceful error handling, passes error to callback - * if available, else emits error on the connection. - * - * @param {Error} err - * @param {Function} callback optional - * @api private - */ - -Connection.prototype.error = function (err, callback) { - if (callback) return callback(err); - this.emit('error', err); -} - -/** - * Handles opening the connection with the appropriate method based on connection type. - * - * @param {Function} callback - * @api private - */ - -Connection.prototype._open = function (callback) { - this.readyState = STATES.connecting; - this._closeCalled = false; - - var self = this; - - var method = this.replica - ? 'doOpenSet' - : 'doOpen'; - - // open connection - this[method](function (err) { - if (err) { - self.readyState = STATES.disconnected; - if (self._hasOpened) { - if (callback) callback(err); - } else { - self.error(err, callback); - } - return; - } - - self.onOpen(callback); - }); -} - -/** - * Called when the connection is opened - * - * @api private - */ - -Connection.prototype.onOpen = function (callback) { - var self = this; - - function open (err) { - if (err) { - self.readyState = STATES.disconnected; - if (self._hasOpened) { - if (callback) callback(err); - } else { - self.error(err, callback); - } - return; - } - - self.readyState = STATES.connected; - - // avoid having the collection subscribe to our event emitter - // to prevent 0.3 warning - for (var i in self.collections) - self.collections[i].onOpen(); - - callback && callback(); - self.emit('open'); - }; - - // re-authenticate - if (self.user && self.pass) { - self.db.authenticate(self.user, self.pass, self.options.auth, open); - } - else - open(); -}; - -/** - * Closes the connection - * - * @param {Function} [callback] optional - * @return {Connection} self - * @api public - */ - -Connection.prototype.close = function (callback) { - var self = this; - this._closeCalled = true; - - switch (this.readyState){ - case 0: // disconnected - callback && callback(); - break; - - case 1: // connected - this.readyState = STATES.disconnecting; - this.doClose(function(err){ - if (err){ - self.error(err, callback); - } else { - self.onClose(); - callback && callback(); - } - }); - break; - - case 2: // connecting - this.once('open', function(){ - self.close(callback); - }); - break; - - case 3: // disconnecting - if (!callback) break; - this.once('close', function () { - callback(); - }); - break; - } - - return this; -}; - -/** - * Called when the connection closes - * - * @api private - */ - -Connection.prototype.onClose = function () { - this.readyState = STATES.disconnected; - - // avoid having the collection subscribe to our event emitter - // to prevent 0.3 warning - for (var i in this.collections) - this.collections[i].onClose(); - - this.emit('close'); -}; - -/** - * Retrieves a collection, creating it if not cached. - * - * Not typically needed by applications. Just talk to your collection through your model. - * - * @param {String} name of the collection - * @param {Object} [options] optional collection options - * @return {Collection} collection instance - * @api public - */ - -Connection.prototype.collection = function (name, options) { - if (!(name in this.collections)) - this.collections[name] = new Collection(name, this, options); - return this.collections[name]; -}; - -/** - * Defines or retrieves a model. - * - * var mongoose = require('mongoose'); - * var db = mongoose.createConnection(..); - * db.model('Venue', new Schema(..)); - * var Ticket = db.model('Ticket', new Schema(..)); - * var Venue = db.model('Venue'); - * - * _When no `collection` argument is passed, Mongoose produces a collection name by passing the model `name` to the [utils.toCollectionName](#utils_exports.toCollectionName) method. This method pluralizes the name. If you don't like this behavior, either pass a collection name or set your schemas collection name option._ - * - * ####Example: - * - * var schema = new Schema({ name: String }, { collection: 'actor' }); - * - * // or - * - * schema.set('collection', 'actor'); - * - * // or - * - * var collectionName = 'actor' - * var M = conn.model('Actor', schema, collectionName) - * - * @param {String} name the model name - * @param {Schema} [schema] a schema. necessary when defining a model - * @param {String} [collection] name of mongodb collection (optional) if not given it will be induced from model name - * @see Mongoose#model #index_Mongoose-model - * @return {Model} The compiled model - * @api public - */ - -Connection.prototype.model = function (name, schema, collection) { - // collection name discovery - if ('string' == typeof schema) { - collection = schema; - schema = false; - } - - if (utils.isObject(schema) && !(schema instanceof Schema)) { - schema = new Schema(schema); - } - - if (this.models[name] && !collection) { - // model exists but we are not subclassing with custom collection - if (schema instanceof Schema && schema != this.models[name].schema) { - throw new MongooseError.OverwriteModelError(name); - } - return this.models[name]; - } - - var opts = { cache: false, connection: this } - var model; - - if (schema instanceof Schema) { - // compile a model - model = this.base.model(name, schema, collection, opts) - - // only the first model with this name is cached to allow - // for one-offs with custom collection names etc. - if (!this.models[name]) { - this.models[name] = model; - } - - model.init(); - return model; - } - - if (this.models[name] && collection) { - // subclassing current model with alternate collection - model = this.models[name]; - schema = model.prototype.schema; - var sub = model.__subclass(this, schema, collection); - // do not cache the sub model - return sub; - } - - // lookup model in mongoose module - model = this.base.models[name]; - - if (!model) { - throw new MongooseError.MissingSchemaError(name); - } - - if (this == model.prototype.db - && (!collection || collection == model.collection.name)) { - // model already uses this connection. - - // only the first model with this name is cached to allow - // for one-offs with custom collection names etc. - if (!this.models[name]) { - this.models[name] = model; - } - - return model; - } - - return this.models[name] = model.__subclass(this, schema, collection); -} - -/** - * Returns an array of model names created on this connection. - * @api public - * @return {Array} - */ - -Connection.prototype.modelNames = function () { - return Object.keys(this.models); -} - -/** - * Set profiling level. - * - * @param {Number|String} level either off (0), slow (1), or all (2) - * @param {Number} [ms] the threshold in milliseconds above which queries will be logged when in `slow` mode. defaults to 100. - * @param {Function} callback - * @api public - */ - -Connection.prototype.setProfiling = function (level, ms, callback) { - if (STATES.connected !== this.readyState) { - return this.on('open', this.setProfiling.bind(this, level, ms, callback)); - } - - if (!callback) callback = ms, ms = 100; - - var cmd = {}; - - switch (level) { - case 0: - case 'off': - cmd.profile = 0; - break; - case 1: - case 'slow': - cmd.profile = 1; - if ('number' !== typeof ms) { - ms = parseInt(ms, 10); - if (isNaN(ms)) ms = 100; - } - cmd.slowms = ms; - break; - case 2: - case 'all': - cmd.profile = 2; - break; - default: - return callback(new Error('Invalid profiling level: '+ level)); - } - - this.db.executeDbCommand(cmd, function (err, resp) { - if (err) return callback(err); - - var doc = resp.documents[0]; - - err = 1 === doc.ok - ? null - : new Error('Could not set profiling level to: '+ level) - - callback(err, doc); - }); -}; - -/*! - * Noop. - */ - -function noop () {} - -/*! - * Module exports. - */ - -Connection.STATES = STATES; -module.exports = Connection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js deleted file mode 100644 index 2d05ab0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/connectionstate.js +++ /dev/null @@ -1,24 +0,0 @@ - -/*! - * Connection states - */ - -var STATES = module.exports = exports = Object.create(null); - -var disconnected = 'disconnected'; -var connected = 'connected'; -var connecting = 'connecting'; -var disconnecting = 'disconnecting'; -var uninitialized = 'uninitialized'; - -STATES[0] = disconnected; -STATES[1] = connected; -STATES[2] = connecting; -STATES[3] = disconnecting; -STATES[99] = uninitialized; - -STATES[disconnected] = 0; -STATES[connected] = 1; -STATES[connecting] = 2; -STATES[disconnecting] = 3; -STATES[uninitialized] = 99; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js deleted file mode 100644 index 7b735c4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/document.js +++ /dev/null @@ -1,1710 +0,0 @@ -/*! - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter - , setMaxListeners = EventEmitter.prototype.setMaxListeners - , MongooseError = require('./error') - , MixedSchema = require('./schema/mixed') - , Schema = require('./schema') - , ValidatorError = require('./schematype').ValidatorError - , utils = require('./utils') - , clone = utils.clone - , isMongooseObject = utils.isMongooseObject - , inspect = require('util').inspect - , ElemMatchError = MongooseError.ElemMatchError - , ValidationError = MongooseError.ValidationError - , DocumentError = MongooseError.DocumentError - , InternalCache = require('./internal') - , deepEqual = utils.deepEqual - , hooks = require('hooks') - , DocumentArray - , MongooseArray - , Embedded - -/** - * Document constructor. - * - * @param {Object} obj the values to set - * @param {Object} [opts] optional object containing the fields which were selected in the query returning this document and any populated paths data - * @param {Boolean} [skipId] bool, should we auto create an ObjectId _id - * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `init`: Emitted on a document after it has was retreived from the db and fully hydrated by Mongoose. - * @event `save`: Emitted when the document is successfully saved - * @api private - */ - -function Document (obj, fields, skipId) { - this.$__ = new InternalCache; - this.isNew = true; - this.errors = undefined; - - var schema = this.schema; - - if ('boolean' === typeof fields) { - this.$__.strictMode = fields; - fields = undefined; - } else { - this.$__.strictMode = schema.options && schema.options.strict; - this.$__.selected = fields; - } - - var required = schema.requiredPaths(); - for (var i = 0; i < required.length; ++i) { - this.$__.activePaths.require(required[i]); - } - - setMaxListeners.call(this, 0); - this._doc = this.$__buildDoc(obj, fields, skipId); - - if (obj) { - this.set(obj, undefined, true); - } - - this.$__registerHooks(); -} - -/*! - * Inherit from EventEmitter. - */ - -Document.prototype.__proto__ = EventEmitter.prototype; - -/** - * The documents schema. - * - * @api public - * @property schema - */ - -Document.prototype.schema; - -/** - * Boolean flag specifying if the document is new. - * - * @api public - * @property isNew - */ - -Document.prototype.isNew; - -/** - * The string version of this documents _id. - * - * ####Note: - * - * This getter exists on all documents by default. The getter can be disabled by setting the `id` [option](/docs/guide.html#id) of its `Schema` to false at construction time. - * - * new Schema({ name: String }, { id: false }); - * - * @api public - * @see Schema options /docs/guide.html#options - * @property id - */ - -Document.prototype.id; - -/** - * Hash containing current validation errors. - * - * @api public - * @property errors - */ - -Document.prototype.errors; - -/** - * Builds the default doc structure - * - * @param {Object} obj - * @param {Object} [fields] - * @param {Boolean} [skipId] - * @return {Object} - * @api private - * @method $__buildDoc - * @memberOf Document - */ - -Document.prototype.$__buildDoc = function (obj, fields, skipId) { - var doc = {} - , self = this - , exclude - , keys - , key - , ki - - // determine if this doc is a result of a query with - // excluded fields - if (fields && 'Object' === fields.constructor.name) { - keys = Object.keys(fields); - ki = keys.length; - - while (ki--) { - if ('_id' !== keys[ki]) { - exclude = 0 === fields[keys[ki]]; - break; - } - } - } - - var paths = Object.keys(this.schema.paths) - , plen = paths.length - , ii = 0 - - for (; ii < plen; ++ii) { - var p = paths[ii]; - - if ('_id' == p) { - if (skipId) continue; - if (obj && '_id' in obj) continue; - } - - var type = this.schema.paths[p] - , path = p.split('.') - , len = path.length - , last = len-1 - , doc_ = doc - , i = 0 - - for (; i < len; ++i) { - var piece = path[i] - , def - - if (i === last) { - if (fields) { - if (exclude) { - // apply defaults to all non-excluded fields - if (p in fields) continue; - - def = type.getDefault(self, true); - if ('undefined' !== typeof def) { - doc_[piece] = def; - self.$__.activePaths.default(p); - } - - } else if (p in fields) { - // selected field - def = type.getDefault(self, true); - if ('undefined' !== typeof def) { - doc_[piece] = def; - self.$__.activePaths.default(p); - } - } - } else { - def = type.getDefault(self, true); - if ('undefined' !== typeof def) { - doc_[piece] = def; - self.$__.activePaths.default(p); - } - } - } else { - doc_ = doc_[piece] || (doc_[piece] = {}); - } - } - }; - - return doc; -}; - -/** - * Initializes the document without setters or marking anything modified. - * - * Called internally after a document is returned from mongodb. - * - * @param {Object} doc document returned by mongo - * @param {Function} fn callback - * @api private - */ - -Document.prototype.init = function (doc, opts, fn) { - // do not prefix this method with $__ since its - // used by public hooks - - if ('function' == typeof opts) { - fn = opts; - opts = null; - } - - this.isNew = false; - - // handle docs with populated paths - if (doc._id && opts && opts.populated && opts.populated.length) { - var id = String(doc._id); - for (var i = 0; i < opts.populated.length; ++i) { - var item = opts.populated[i]; - this.populated(item.path, item._docs[id], item); - } - } - - init(this, doc, this._doc); - this.$__storeShard(); - - this.emit('init', this); - if (fn) fn(null); - return this; -}; - -/*! - * Init helper. - * - * @param {Object} self document instance - * @param {Object} obj raw mongodb doc - * @param {Object} doc object we are initializing - * @api private - */ - -function init (self, obj, doc, prefix) { - prefix = prefix || ''; - - var keys = Object.keys(obj) - , len = keys.length - , schema - , path - , i; - - while (len--) { - i = keys[len]; - path = prefix + i; - schema = self.schema.path(path); - - if (!schema && utils.isObject(obj[i]) && - (!obj[i].constructor || 'Object' == obj[i].constructor.name)) { - // assume nested object - if (!doc[i]) doc[i] = {}; - init(self, obj[i], doc[i], path + '.'); - } else { - if (obj[i] === null) { - doc[i] = null; - } else if (obj[i] !== undefined) { - if (schema) { - self.$__try(function(){ - doc[i] = schema.cast(obj[i], self, true); - }); - } else { - doc[i] = obj[i]; - } - } - // mark as hydrated - self.$__.activePaths.init(path); - } - } -}; - -/** - * Stores the current values of the shard keys. - * - * ####Note: - * - * _Shard key values do not / are not allowed to change._ - * - * @api private - * @method $__storeShard - * @memberOf Document - */ - -Document.prototype.$__storeShard = function () { - // backwards compat - var key = this.schema.options.shardKey || this.schema.options.shardkey; - if (!(key && 'Object' == key.constructor.name)) return; - - var orig = this.$__.shardval = {} - , paths = Object.keys(key) - , len = paths.length - , val - - for (var i = 0; i < len; ++i) { - val = this.getValue(paths[i]); - if (isMongooseObject(val)) { - orig[paths[i]] = val.toObject({ depopulate: true }) - } else if (null != val && val.valueOf) { - orig[paths[i]] = val.valueOf(); - } else { - orig[paths[i]] = val; - } - } -} - -/*! - * Set up middleware support - */ - -for (var k in hooks) { - Document.prototype[k] = Document[k] = hooks[k]; -} - -/** - * Sends an update command with this document `_id` as the query selector. - * - * ####Example: - * - * weirdCar.update({$inc: {wheels:1}}, { w: 1 }, callback); - * - * ####Valid options: - * - * - same as in [Model.update](#model_Model.update) - * - * @see Model.update #model_Model.update - * @param {Object} doc - * @param {Object} options - * @param {Function} callback - * @return {Query} - * @api public - */ - -Document.prototype.update = function update () { - var args = utils.args(arguments); - args.unshift({_id: this._id}); - return this.constructor.update.apply(this.constructor, args); -} - -/** - * Sets the value of a path, or many paths. - * - * ####Example: - * - * // path, value - * doc.set(path, value) - * - * // object - * doc.set({ - * path : value - * , path2 : { - * path : value - * } - * }) - * - * // only-the-fly cast to number - * doc.set(path, value, Number) - * - * // only-the-fly cast to string - * doc.set(path, value, String) - * - * // changing strict mode behavior - * doc.set(path, value, { strict: false }); - * - * @param {String|Object} path path or object of key/vals to set - * @param {Any} val the value to set - * @param {Schema|String|Number|Buffer|etc..} [type] optionally specify a type for "on-the-fly" attributes - * @param {Object} [options] optionally specify options that modify the behavior of the set - * @api public - */ - -Document.prototype.set = function (path, val, type, options) { - if (type && 'Object' == type.constructor.name) { - options = type; - type = undefined; - } - - var merge = options && options.merge - , adhoc = type && true !== type - , constructing = true === type - , adhocs - - var strict = options && 'strict' in options - ? options.strict - : this.$__.strictMode; - - if (adhoc) { - adhocs = this.$__.adhocPaths || (this.$__.adhocPaths = {}); - adhocs[path] = Schema.interpretAsType(path, type); - } - - if ('string' !== typeof path) { - // new Document({ key: val }) - - if (null === path || undefined === path) { - var _ = path; - path = val; - val = _; - - } else { - var prefix = val - ? val + '.' - : ''; - - if (path instanceof Document) path = path._doc; - - var keys = Object.keys(path) - , i = keys.length - , pathtype - , key - - while (i--) { - key = keys[i]; - pathtype = this.schema.pathType(prefix + key); - if (null != path[key] - // need to know if plain object - no Buffer, ObjectId, etc - && utils.isObject(path[key]) - && (!path[key].constructor || 'Object' == path[key].constructor.name) - && 'virtual' != pathtype - && !(this.$__path(prefix + key) instanceof MixedSchema)) { - this.set(path[key], prefix + key, constructing); - } else if (strict) { - if ('real' === pathtype || 'virtual' === pathtype) { - this.set(prefix + key, path[key], constructing); - } else if ('throw' == strict) { - throw new Error("Field `" + key + "` is not in schema."); - } - } else if (undefined !== path[key]) { - this.set(prefix + key, path[key], constructing); - } - } - - return this; - } - } - - // ensure _strict is honored for obj props - // docschema = new Schema({ path: { nest: 'string' }}) - // doc.set('path', obj); - var pathType = this.schema.pathType(path); - if ('nested' == pathType && val && utils.isObject(val) && - (!val.constructor || 'Object' == val.constructor.name)) { - if (!merge) this.setValue(path, null); - this.set(val, path, constructing); - return this; - } - - var schema; - var parts = path.split('.'); - - if ('adhocOrUndefined' == pathType && strict) { - - // check for roots that are Mixed types - var mixed; - - for (var i = 0; i < parts.length; ++i) { - var subpath = parts.slice(0, i+1).join('.'); - schema = this.schema.path(subpath); - if (schema instanceof MixedSchema) { - // allow changes to sub paths of mixed types - mixed = true; - break; - } - } - - if (!mixed) { - if ('throw' == strict) { - throw new Error("Field `" + path + "` is not in schema."); - } - return this; - } - - } else if ('virtual' == pathType) { - schema = this.schema.virtualpath(path); - schema.applySetters(val, this); - return this; - } else { - schema = this.$__path(path); - } - - var pathToMark; - - // When using the $set operator the path to the field must already exist. - // Else mongodb throws: "LEFT_SUBFIELD only supports Object" - - if (parts.length <= 1) { - pathToMark = path; - } else { - for (var i = 0; i < parts.length; ++i) { - var subpath = parts.slice(0, i+1).join('.'); - if (this.isDirectModified(subpath) // earlier prefixes that are already - // marked as dirty have precedence - || this.get(subpath) === null) { - pathToMark = subpath; - break; - } - } - - if (!pathToMark) pathToMark = path; - } - - // if this doc is being constructed we should not trigger getters - var priorVal = constructing - ? undefined - : this.get(path); - - if (!schema || null === val || undefined === val) { - this.$__set(pathToMark, path, constructing, parts, schema, val, priorVal); - return this; - } - - var self = this; - var shouldSet = this.$__try(function(){ - val = schema.applySetters(val, self, false, priorVal); - }); - - if (shouldSet) { - this.$__set(pathToMark, path, constructing, parts, schema, val, priorVal); - } - - return this; -} - -/** - * Determine if we should mark this change as modified. - * - * @return {Boolean} - * @api private - * @method $__shouldModify - * @memberOf Document - */ - -Document.prototype.$__shouldModify = function ( - pathToMark, path, constructing, parts, schema, val, priorVal) { - - if (this.isNew) return true; - if (this.isDirectModified(pathToMark)) return false; - - if (undefined === val && !this.isSelected(path)) { - // when a path is not selected in a query, its initial - // value will be undefined. - return true; - } - - if (undefined === val && path in this.$__.activePaths.states.default) { - // we're just unsetting the default value which was never saved - return false; - } - - if (!deepEqual(val, priorVal || this.get(path))) { - return true; - } - - if (!constructing && - null != val && - path in this.$__.activePaths.states.default && - deepEqual(val, schema.getDefault(this, constructing))) { - // a path with a default was $unset on the server - // and the user is setting it to the same value again - return true; - } - - return false; -} - -/** - * Handles the actual setting of the value and marking the path modified if appropriate. - * - * @api private - * @method $__set - * @memberOf Document - */ - -Document.prototype.$__set = function ( - pathToMark, path, constructing, parts, schema, val, priorVal) { - - var shouldModify = this.$__shouldModify.apply(this, arguments); - - if (shouldModify) { - this.markModified(pathToMark, val); - - // handle directly setting arrays (gh-1126) - MongooseArray || (MongooseArray = require('./types/array')); - if (val instanceof MongooseArray) { - val._registerAtomic('$set', val); - } - } - - var obj = this._doc - , i = 0 - , l = parts.length - - for (; i < l; i++) { - var next = i + 1 - , last = next === l; - - if (last) { - obj[parts[i]] = val; - } else { - if (obj[parts[i]] && 'Object' === obj[parts[i]].constructor.name) { - obj = obj[parts[i]]; - } else if (obj[parts[i]] && Array.isArray(obj[parts[i]])) { - obj = obj[parts[i]]; - } else { - obj = obj[parts[i]] = {}; - } - } - } -} - -/** - * Gets a raw value from a path (no getters) - * - * @param {String} path - * @api private - */ - -Document.prototype.getValue = function (path) { - return utils.getValue(path, this._doc); -} - -/** - * Sets a raw value for a path (no casting, setters, transformations) - * - * @param {String} path - * @param {Object} value - * @api private - */ - -Document.prototype.setValue = function (path, val) { - utils.setValue(path, val, this._doc); - return this; -} - -/** - * Returns the value of a path. - * - * ####Example - * - * // path - * doc.get('age') // 47 - * - * // dynamic casting to a string - * doc.get('age', String) // "47" - * - * @param {String} path - * @param {Schema|String|Number|Buffer|etc..} [type] optionally specify a type for on-the-fly attributes - * @api public - */ - -Document.prototype.get = function (path, type) { - var adhocs; - if (type) { - adhocs = this.$__.adhocPaths || (this.$__.adhocPaths = {}); - adhocs[path] = Schema.interpretAsType(path, type); - } - - var schema = this.$__path(path) || this.schema.virtualpath(path) - , pieces = path.split('.') - , obj = this._doc; - - for (var i = 0, l = pieces.length; i < l; i++) { - obj = undefined === obj || null === obj - ? undefined - : obj[pieces[i]]; - } - - if (schema) { - obj = schema.applyGetters(obj, this); - } - - return obj; -}; - -/** - * Returns the schematype for the given `path`. - * - * @param {String} path - * @api private - * @method $__path - * @memberOf Document - */ - -Document.prototype.$__path = function (path) { - var adhocs = this.$__.adhocPaths - , adhocType = adhocs && adhocs[path]; - - if (adhocType) { - return adhocType; - } else { - return this.schema.path(path); - } -}; - -/** - * Marks the path as having pending changes to write to the db. - * - * _Very helpful when using [Mixed](./schematypes.html#mixed) types._ - * - * ####Example: - * - * doc.mixed.type = 'changed'; - * doc.markModified('mixed.type'); - * doc.save() // changes to mixed.type are now persisted - * - * @param {String} path the path to mark modified - * @api public - */ - -Document.prototype.markModified = function (path) { - this.$__.activePaths.modify(path); -} - -/** - * Catches errors that occur during execution of `fn` and stores them to later be passed when `save()` is executed. - * - * @param {Function} fn function to execute - * @param {Object} scope the scope with which to call fn - * @api private - * @method $__try - * @memberOf Document - */ - -Document.prototype.$__try = function (fn, scope) { - var res; - try { - fn.call(scope); - res = true; - } catch (e) { - this.$__error(e); - res = false; - } - return res; -}; - -/** - * Returns the list of paths that have been modified. - * - * @return {Array} - * @api public - */ - -Document.prototype.modifiedPaths = function () { - var directModifiedPaths = Object.keys(this.$__.activePaths.states.modify); - - return directModifiedPaths.reduce(function (list, path) { - var parts = path.split('.'); - return list.concat(parts.reduce(function (chains, part, i) { - return chains.concat(parts.slice(0, i).concat(part).join('.')); - }, [])); - }, []); -}; - -/** - * Returns true if this document was modified, else false. - * - * If `path` is given, checks if a path or any full path containing `path` as part of its path chain has been modified. - * - * ####Example - * - * doc.set('documents.0.title', 'changed'); - * doc.isModified() // true - * doc.isModified('documents') // true - * doc.isModified('documents.0.title') // true - * doc.isDirectModified('documents') // false - * - * @param {String} [path] optional - * @return {Boolean} - * @api public - */ - -Document.prototype.isModified = function (path) { - return path - ? !!~this.modifiedPaths().indexOf(path) - : this.$__.activePaths.some('modify'); -}; - -/** - * Returns true if `path` was directly set and modified, else false. - * - * ####Example - * - * doc.set('documents.0.title', 'changed'); - * doc.isDirectModified('documents.0.title') // true - * doc.isDirectModified('documents') // false - * - * @param {String} path - * @return {Boolean} - * @api public - */ - -Document.prototype.isDirectModified = function (path) { - return (path in this.$__.activePaths.states.modify); -}; - -/** - * Checks if `path` was initialized. - * - * @param {String} path - * @return {Boolean} - * @api public - */ - -Document.prototype.isInit = function (path) { - return (path in this.$__.activePaths.states.init); -}; - -/** - * Checks if `path` was selected in the source query which initialized this document. - * - * ####Example - * - * Thing.findOne().select('name').exec(function (err, doc) { - * doc.isSelected('name') // true - * doc.isSelected('age') // false - * }) - * - * @param {String} path - * @return {Boolean} - * @api public - */ - -Document.prototype.isSelected = function isSelected (path) { - if (this.$__.selected) { - - if ('_id' === path) { - return 0 !== this.$__.selected._id; - } - - var paths = Object.keys(this.$__.selected) - , i = paths.length - , inclusive = false - , cur - - if (1 === i && '_id' === paths[0]) { - // only _id was selected. - return 0 === this.$__.selected._id; - } - - while (i--) { - cur = paths[i]; - if ('_id' == cur) continue; - inclusive = !! this.$__.selected[cur]; - break; - } - - if (path in this.$__.selected) { - return inclusive; - } - - i = paths.length; - var pathDot = path + '.'; - - while (i--) { - cur = paths[i]; - if ('_id' == cur) continue; - - if (0 === cur.indexOf(pathDot)) { - return inclusive; - } - - if (0 === pathDot.indexOf(cur)) { - return inclusive; - } - } - - return ! inclusive; - } - - return true; -} - -/** - * Executes registered validation rules for this document. - * - * ####Note: - * - * This method is called `pre` save and if a validation rule is violated, [save](#model_Model-save) is aborted and the error is returned to your `callback`. - * - * ####Example: - * - * doc.validate(function (err) { - * if (err) handleError(err); - * else // validation passed - * }); - * - * @param {Function} cb called after validation completes, passing an error if one occurred - * @api public - */ - -Document.prototype.validate = function (cb) { - var self = this - - // only validate required fields when necessary - var paths = Object.keys(this.$__.activePaths.states.require).filter(function (path) { - if (!self.isSelected(path) && !self.isModified(path)) return false; - return true; - }); - - paths = paths.concat(Object.keys(this.$__.activePaths.states.init)); - paths = paths.concat(Object.keys(this.$__.activePaths.states.modify)); - paths = paths.concat(Object.keys(this.$__.activePaths.states.default)); - - if (0 === paths.length) { - complete(); - return this; - } - - var validating = {} - , total = 0; - - paths.forEach(validatePath); - return this; - - function validatePath (path) { - if (validating[path]) return; - - validating[path] = true; - total++; - - process.nextTick(function(){ - var p = self.schema.path(path); - if (!p) return --total || complete(); - - var val = self.getValue(path); - p.doValidate(val, function (err) { - if (err) { - self.invalidate( - path - , err - , undefined - , true // embedded docs - ); - } - --total || complete(); - }, self); - }); - } - - function complete () { - var err = self.$__.validationError; - self.$__.validationError = undefined; - self.emit('validate', self); - cb(err); - } -}; - -/** - * Marks a path as invalid, causing validation to fail. - * - * @param {String} path the field to invalidate - * @param {String|Error} err the error which states the reason `path` was invalid - * @param {Object|String|Number|any} value optional invalid value - * @api public - */ - -Document.prototype.invalidate = function (path, err, val) { - if (!this.$__.validationError) { - this.$__.validationError = new ValidationError(this); - } - - if (!err || 'string' === typeof err) { - // sniffing arguments: - // need to handle case where user does not pass value - // so our error message is cleaner - err = 2 < arguments.length - ? new ValidatorError(path, err, val) - : new ValidatorError(path, err) - } - - this.$__.validationError.errors[path] = err; -} - -/** - * Resets the internal modified state of this document. - * - * @api private - * @return {Document} - * @method $__reset - * @memberOf Document - */ - -Document.prototype.$__reset = function reset () { - var self = this; - DocumentArray || (DocumentArray = require('./types/documentarray')); - - this.$__.activePaths - .map('init', 'modify', function (i) { - return self.getValue(i); - }) - .filter(function (val) { - return val && val instanceof DocumentArray && val.length; - }) - .forEach(function (array) { - var i = array.length; - while (i--) { - var doc = array[i]; - if (!doc) continue; - doc.$__reset(); - } - }); - - // clear atomics - this.$__dirty().forEach(function (dirt) { - var type = dirt.value; - if (type && type._atomics) { - type._atomics = {}; - } - }); - - // Clear 'modify'('dirty') cache - this.$__.activePaths.clear('modify'); - this.$__.validationError = undefined; - this.errors = undefined; - var self = this; - this.schema.requiredPaths().forEach(function (path) { - self.$__.activePaths.require(path); - }); - - return this; -} - -/** - * Returns this documents dirty paths / vals. - * - * @api private - * @method $__dirty - * @memberOf Document - */ - -Document.prototype.$__dirty = function () { - var self = this; - - var all = this.$__.activePaths.map('modify', function (path) { - return { path: path - , value: self.getValue(path) - , schema: self.$__path(path) }; - }); - - // Sort dirty paths in a flat hierarchy. - all.sort(function (a, b) { - return (a.path < b.path ? -1 : (a.path > b.path ? 1 : 0)); - }); - - // Ignore "foo.a" if "foo" is dirty already. - var minimal = [] - , lastPath - , top; - - all.forEach(function (item, i) { - if (item.path.indexOf(lastPath) !== 0) { - lastPath = item.path + '.'; - minimal.push(item); - top = item; - } else { - // special case for top level MongooseArrays - if (top.value && top.value._atomics && top.value.hasAtomics()) { - // the `top` array itself and a sub path of `top` are being modified. - // the only way to honor all of both modifications is through a $set - // of entire array. - top.value._atomics = {}; - top.value._atomics.$set = top.value; - } - } - }); - - top = lastPath = null; - return minimal; -} - -/*! - * Compiles schemas. - */ - -function compile (tree, proto, prefix) { - var keys = Object.keys(tree) - , i = keys.length - , limb - , key; - - while (i--) { - key = keys[i]; - limb = tree[key]; - - define(key - , (('Object' === limb.constructor.name - && Object.keys(limb).length) - && (!limb.type || limb.type.type) - ? limb - : null) - , proto - , prefix - , keys); - } -}; - -/*! - * Defines the accessor named prop on the incoming prototype. - */ - -function define (prop, subprops, prototype, prefix, keys) { - var prefix = prefix || '' - , path = (prefix ? prefix + '.' : '') + prop; - - if (subprops) { - - Object.defineProperty(prototype, prop, { - enumerable: true - , get: function () { - if (!this.$__.getters) - this.$__.getters = {}; - - if (!this.$__.getters[path]) { - var nested = Object.create(this); - - // save scope for nested getters/setters - if (!prefix) nested.$__.scope = this; - - // shadow inherited getters from sub-objects so - // thing.nested.nested.nested... doesn't occur (gh-366) - var i = 0 - , len = keys.length; - - for (; i < len; ++i) { - // over-write the parents getter without triggering it - Object.defineProperty(nested, keys[i], { - enumerable: false // It doesn't show up. - , writable: true // We can set it later. - , configurable: true // We can Object.defineProperty again. - , value: undefined // It shadows its parent. - }); - } - - nested.toObject = function () { - return this.get(path); - }; - - compile(subprops, nested, path); - this.$__.getters[path] = nested; - } - - return this.$__.getters[path]; - } - , set: function (v) { - if (v instanceof Document) v = v.toObject(); - return (this.$__.scope || this).set(path, v); - } - }); - - } else { - - Object.defineProperty(prototype, prop, { - enumerable: true - , get: function ( ) { return this.get.call(this.$__.scope || this, path); } - , set: function (v) { return this.set.call(this.$__.scope || this, path, v); } - }); - } -}; - -/** - * Assigns/compiles `schema` into this documents prototype. - * - * @param {Schema} schema - * @api private - * @method $__setSchema - * @memberOf Document - */ - -Document.prototype.$__setSchema = function (schema) { - compile(schema.tree, this); - this.schema = schema; -} - -/** - * Register default hooks - * - * @api private - * @method $__registerHooks - * @memberOf Document - */ - -Document.prototype.$__registerHooks = function () { - if (!this.save) return; - - DocumentArray || (DocumentArray = require('./types/documentarray')); - - this.pre('save', function (next) { - // validate all document arrays. - // we keep the error semaphore to make sure we don't - // call `save` unnecessarily (we only need 1 error) - var subdocs = 0 - , error = false - , self = this; - - // check for DocumentArrays - var arrays = this.$__.activePaths - .map('init', 'modify', function (i) { - return self.getValue(i); - }) - .filter(function (val) { - return val && val instanceof DocumentArray && val.length; - }); - - if (!arrays.length) - return next(); - - arrays.forEach(function (array) { - if (error) return; - - // handle sparse arrays by using for loop vs array.forEach - // which skips the sparse elements - - var len = array.length - subdocs += len; - - for (var i = 0; i < len; ++i) { - if (error) break; - - var doc = array[i]; - if (!doc) { - --subdocs || next(); - continue; - } - - doc.save(handleSave); - } - }); - - function handleSave (err) { - if (error) return; - - if (err) { - self.$__.validationError = undefined; - return next(error = err); - } - - --subdocs || next(); - } - - }, function (err) { - // emit on the Model if listening - if (this.constructor.listeners('error').length) { - this.constructor.emit('error', err); - } else { - // emit on the connection - if (!this.db.listeners('error').length) { - err.stack = 'No listeners detected, throwing. ' - + 'Consider adding an error listener to your connection.\n' - + err.stack - } - this.db.emit('error', err); - } - }).pre('save', function checkForExistingErrors (next) { - // if any doc.set() calls failed - var err = this.$__.saveError; - if (err) { - this.$__.saveError = null; - next(err); - } else { - next(); - } - }).pre('save', function validation (next) { - return this.validate(next); - }); - - // add user defined queues - this.$__doQueue(); -}; - -/** - * Registers an error - * - * @param {Error} err - * @api private - * @method $__error - * @memberOf Document - */ - -Document.prototype.$__error = function (err) { - this.$__.saveError = err; - return this; -}; - -/** - * Executes methods queued from the Schema definition - * - * @api private - * @method $__doQueue - * @memberOf Document - */ - -Document.prototype.$__doQueue = function () { - var q = this.schema && this.schema.callQueue; - if (q) { - for (var i = 0, l = q.length; i < l; i++) { - this[q[i][0]].apply(this, q[i][1]); - } - } - return this; -}; - -/** - * Converts this document into a plain javascript object, ready for storage in MongoDB. - * - * Buffers are converted to instances of [mongodb.Binary](http://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html) for proper storage. - * - * ####Options: - * - * - `getters` apply all getters (path and virtual getters) - * - `virtuals` apply virtual getters (can override `getters` option) - * - `minimize` remove empty objects (defaults to true) - * - `transform` a transform function to apply to the resulting document before returning - * - * ####Getters/Virtuals - * - * Example of only applying path getters - * - * doc.toObject({ getters: true, virtuals: false }) - * - * Example of only applying virtual getters - * - * doc.toObject({ virtuals: true }) - * - * Example of applying both path and virtual getters - * - * doc.toObject({ getters: true }) - * - * To apply these options to every document of your schema by default, set your [schemas](#schema_Schema) `toObject` option to the same argument. - * - * schema.set('toObject', { virtuals: true }) - * - * ####Transform - * - * We may need to perform a transformation of the resulting object based on some criteria, say to remove some sensitive information or return a custom object. In this case we set the optional `transform` function. - * - * Transform functions receive three arguments - * - * function (doc, ret, options) {} - * - * - `doc` The mongoose document which is being converted - * - `ret` The plain object representation which has been converted - * - `options` The options in use (either schema options or the options passed inline) - * - * ####Example - * - * // specify the transform schema option - * schema.options.toObject.transform = function (doc, ret, options) { - * // remove the _id of every document before returning the result - * delete ret._id; - * } - * - * // without the transformation in the schema - * doc.toObject(); // { _id: 'anId', name: 'Wreck-it Ralph' } - * - * // with the transformation - * doc.toObject(); // { name: 'Wreck-it Ralph' } - * - * With transformations we can do a lot more than remove properties. We can even return completely new customized objects: - * - * schema.options.toObject.transform = function (doc, ret, options) { - * return { movie: ret.name } - * } - * - * // without the transformation in the schema - * doc.toObject(); // { _id: 'anId', name: 'Wreck-it Ralph' } - * - * // with the transformation - * doc.toObject(); // { movie: 'Wreck-it Ralph' } - * - * _Note: if a transform function returns `undefined`, the return value will be ignored._ - * - * Transformations may also be applied inline, overridding any transform set in the options: - * - * function xform (doc, ret, options) { - * return { inline: ret.name, custom: true } - * } - * - * // pass the transform as an inline option - * doc.toObject({ transform: xform }); // { inline: 'Wreck-it Ralph', custom: true } - * - * _Note: if you call `toObject` and pass any options, the transform declared in your schema options will __not__ be applied. To force its application pass `transform: true`_ - * - * schema.options.toObject.hide = '_id'; - * schema.options.toObject.transform = function (doc, ret, options) { - * if (options.hide) { - * options.hide.split(' ').forEach(function (prop) { - * delete ret[prop]; - * }); - * } - * } - * - * var doc = new Doc({ _id: 'anId', secret: 47, name: 'Wreck-it Ralph' }); - * doc.toObject(); // { secret: 47, name: 'Wreck-it Ralph' } - * doc.toObject({ hide: 'secret _id' }); // { _id: 'anId', secret: 47, name: 'Wreck-it Ralph' } - * doc.toObject({ hide: 'secret _id', transform: true }); // { name: 'Wreck-it Ralph' } - * - * Transforms are applied to the document _and each of its sub-documents_. To determine whether or not you are currently operating on a sub-document you might use the following guard: - * - * if ('function' == typeof doc.ownerDocument) { - * // working with a sub doc - * } - * - * Transforms, like all of these options, are also available for `toJSON`. - * - * See [schema options](/docs/guide.html#toObject) for some more details. - * - * @param {Object} [options] - * @return {Object} js object - * @see mongodb.Binary http://mongodb.github.com/node-mongodb-native/api-bson-generated/binary.html - * @api public - */ - -Document.prototype.toObject = function (options) { - if (options && options.depopulate && this.$__.wasPopulated) { - // populated paths that we set to a document - return clone(this._id, options); - } - - // When internally saving this document we always pass options, - // bypassing the custom schema options. - if (!(options && 'Object' == options.constructor.name)) { - options = this.schema.options.toObject - ? clone(this.schema.options.toObject) - : {}; - } - - ;('minimize' in options) || (options.minimize = this.schema.options.minimize); - - var ret = clone(this._doc, options); - - if (options.virtuals || options.getters && false !== options.virtuals) { - applyGetters(this, ret, 'virtuals', options); - } - - if (options.getters) { - applyGetters(this, ret, 'paths', options); - } - - if (true === options.transform) { - var opts = options.json - ? this.schema.options.toJSON - : this.schema.options.toObject; - if (opts) { - options.transform = opts.transform; - } - } - - if ('function' == typeof options.transform) { - var xformed = options.transform(this, ret, options); - if ('undefined' != typeof xformed) ret = xformed; - } - - return ret; -}; - -/*! - * Applies virtuals properties to `json`. - * - * @param {Document} self - * @param {Object} json - * @param {String} type either `virtuals` or `paths` - * @return {Object} `json` - */ - -function applyGetters (self, json, type, options) { - var schema = self.schema - , paths = Object.keys(schema[type]) - , i = paths.length - , path - - while (i--) { - path = paths[i]; - - var parts = path.split('.') - , plen = parts.length - , last = plen - 1 - , branch = json - , part - - for (var ii = 0; ii < plen; ++ii) { - part = parts[ii]; - if (ii === last) { - branch[part] = clone(self.get(path), options); - } else { - branch = branch[part] || (branch[part] = {}); - } - } - } - - return json; -} - -/** - * The return value of this method is used in calls to JSON.stringify(doc). - * - * This method accepts the same options as [Document#toObject](#document_Document-toObject). To apply the options to every document of your schema by default, set your [schemas](#schema_Schema) `toJSON` option to the same argument. - * - * schema.set('toJSON', { virtuals: true }) - * - * See [schema options](/docs/guide.html#toJSON) for details. - * - * @param {Object} options same options as [Document#toObject](#document_Document-toObject) - * @return {Object} - * @see Document#toObject #document_Document-toObject - - * @api public - */ - -Document.prototype.toJSON = function (options) { - // check for object type since an array of documents - // being stringified passes array indexes instead - // of options objects. JSON.stringify([doc, doc]) - if (!(options && 'Object' == options.constructor.name)) { - options = this.schema.options.toJSON - ? clone(this.schema.options.toJSON) - : {}; - } - options.json = true; - return this.toObject(options); -}; - -/** - * Helper for console.log - * - * @api public - */ - -Document.prototype.inspect = function (options) { - var opts = options && 'Object' == options.constructor.name ? options : - this.schema.options.toObject ? clone(this.schema.options.toObject) : - {}; - opts.minimize = false; - return inspect(this.toObject(opts)); -}; - -/** - * Helper for console.log - * - * @api public - * @method toString - */ - -Document.prototype.toString = Document.prototype.inspect; - -/** - * Returns true if the Document stores the same data as doc. - * - * Documents are considered equal when they have matching `_id`s. - * - * @param {Document} doc a document to compare - * @return {Boolean} - * @api public - */ - -Document.prototype.equals = function (doc) { - var tid = this.get('_id'); - var docid = doc.get('_id'); - return tid.equals - ? tid.equals(docid) - : tid === docid; -} - -/** - * Populates document references, executing the `callback` when complete. - * - * ####Example: - * - * doc - * .populate('company') - * .populate({ - * path: 'notes', - * match: /airline/, - * select: 'text', - * model: 'modelName' - * options: opts - * }, function (err, user) { - * assert(doc._id == user._id) // the document itself is passed - * }) - * - * // summary - * doc.populate(path) // not executed - * doc.populate(options); // not executed - * doc.populate(path, callback) // executed - * doc.populate(options, callback); // executed - * doc.populate(callback); // executed - * - * - * ####NOTE: - * - * Population does not occur unless a `callback` is passed. - * Passing the same path a second time will overwrite the previous path options. - * See [Model.populate()](#model_Model.populate) for explaination of options. - * - * @see Model.populate #model_Model.populate - * @param {String|Object} [path] The path to populate or an options object - * @param {Function} [callback] When passed, population is invoked - * @api public - * @return {Document} this - */ - -Document.prototype.populate = function populate () { - if (0 === arguments.length) return this; - - var pop = this.$__.populate || (this.$__.populate = {}); - var args = utils.args(arguments); - var fn; - - if ('function' == typeof args[args.length-1]) { - fn = args.pop(); - } - - // allow `doc.populate(callback)` - if (args.length) { - // use hash to remove duplicate paths - var res = utils.populate.apply(null, args); - for (var i = 0; i < res.length; ++i) { - pop[res[i].path] = res[i]; - } - } - - if (fn) { - var paths = utils.object.vals(pop); - this.$__.populate = undefined; - this.constructor.populate(this, paths, fn); - } - - return this; -} - -/** - * Gets _id(s) used during population of the given `path`. - * - * ####Example: - * - * Model.findOne().populate('author').exec(function (err, doc) { - * console.log(doc.author.name) // Dr.Seuss - * console.log(doc.populated('author')) // '5144cf8050f071d979c118a7' - * }) - * - * If the path was not populated, undefined is returned. - * - * @param {String} path - * @return {Array|ObjectId|Number|Buffer|String|undefined} - * @api public - */ - -Document.prototype.populated = function (path, val, options) { - // val and options are internal - - if (null == val) { - if (!this.$__.populated) return undefined; - var v = this.$__.populated[path]; - if (v) return v.value; - return undefined; - } - - // internal - - if (true === val) { - if (!this.$__.populated) return undefined; - return this.$__.populated[path]; - } - - this.$__.populated || (this.$__.populated = {}); - this.$__.populated[path] = { value: val, options: options }; - return val; -} - -/** - * Returns the full path to this document. - * - * @param {String} [path] - * @return {String} - * @api private - * @method $__fullPath - * @memberOf Document - */ - -Document.prototype.$__fullPath = function (path) { - // overridden in SubDocuments - return path || ''; -} - -/*! - * Module exports. - */ - -Document.ValidationError = ValidationError; -module.exports = exports = Document; -exports.Error = DocumentError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md deleted file mode 100644 index 6464693..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/SPEC.md +++ /dev/null @@ -1,4 +0,0 @@ - -# Driver Spec - -TODO diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js deleted file mode 100644 index 0480d31..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/binary.js +++ /dev/null @@ -1,8 +0,0 @@ - -/*! - * Module dependencies. - */ - -var Binary = require('mongodb').BSONPure.Binary; - -module.exports = exports = Binary; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js deleted file mode 100644 index da0f6e7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js +++ /dev/null @@ -1,211 +0,0 @@ - -/*! - * Module dependencies. - */ - -var MongooseCollection = require('../../collection') - , Collection = require('mongodb').Collection - , STATES = require('../../connectionstate') - , utils = require('../../utils') - -/** - * A [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) collection implementation. - * - * All methods methods from the [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) driver are copied and wrapped in queue management. - * - * @inherits Collection - * @api private - */ - -function NativeCollection () { - this.collection = null; - MongooseCollection.apply(this, arguments); -} - -/*! - * Inherit from abstract Collection. - */ - -NativeCollection.prototype.__proto__ = MongooseCollection.prototype; - -/** - * Called when the connection opens. - * - * @api private - */ - -NativeCollection.prototype.onOpen = function () { - var self = this; - - // always get a new collection in case the user changed host:port - // of parent db instance when re-opening the connection. - - if (!self.opts.capped.size) { - // non-capped - return self.conn.db.collection(self.name, callback); - } - - // capped - return self.conn.db.collection(self.name, function (err, c) { - if (err) return callback(err); - - // discover if this collection exists and if it is capped - c.options(function (err, exists) { - if (err) return callback(err); - - if (exists) { - if (exists.capped) { - callback(null, c); - } else { - var msg = 'A non-capped collection exists with this name.\n\n' - + ' To use this collection as a capped collection, please ' - + 'first convert it.\n' - + ' http://www.mongodb.org/display/DOCS/Capped+Collections#CappedCollections-Convertingacollectiontocapped' - err = new Error(msg); - callback(err); - } - } else { - // create - var opts = utils.clone(self.opts.capped); - opts.capped = true; - self.conn.db.createCollection(self.name, opts, callback); - } - }); - }); - - function callback (err, collection) { - if (err) { - // likely a strict mode error - self.conn.emit('error', err); - } else { - self.collection = collection; - MongooseCollection.prototype.onOpen.call(self); - } - }; -}; - -/** - * Called when the connection closes - * - * @api private - */ - -NativeCollection.prototype.onClose = function () { - MongooseCollection.prototype.onClose.call(this); -}; - -/*! - * Copy the collection methods and make them subject to queues - */ - -for (var i in Collection.prototype) { - (function(i){ - NativeCollection.prototype[i] = function () { - if (this.buffer) { - this.addQueue(i, arguments); - return; - } - - var collection = this.collection - , args = arguments - , self = this - , debug = self.conn.base.options.debug; - - if (debug) { - if ('function' === typeof debug) { - debug.apply(debug - , [self.name, i].concat(utils.args(args, 0, args.length-1))); - } else { - console.error('\x1B[0;36mMongoose:\x1B[0m %s.%s(%s) %s %s %s' - , self.name - , i - , print(args[0]) - , print(args[1]) - , print(args[2]) - , print(args[3])) - } - } - - collection[i].apply(collection, args); - }; - })(i); -} - -/*! - * Debug print helper - */ - -function print (arg) { - var type = typeof arg; - if ('function' === type || 'undefined' === type) return ''; - return format(arg); -} - -/*! - * Debug print helper - */ - -function format (obj, sub) { - var x = utils.clone(obj); - if (x) { - if ('Binary' === x.constructor.name) { - x = '[object Buffer]'; - } else if ('ObjectID' === x.constructor.name) { - var representation = 'ObjectId("' + x.toHexString() + '")'; - x = { inspect: function() { return representation; } }; - } else if ('Date' === x.constructor.name) { - var representation = 'new Date("' + x.toUTCString() + '")'; - x = { inspect: function() { return representation; } }; - } else if ('Object' === x.constructor.name) { - var keys = Object.keys(x) - , i = keys.length - , key - while (i--) { - key = keys[i]; - if (x[key]) { - if ('Binary' === x[key].constructor.name) { - x[key] = '[object Buffer]'; - } else if ('Object' === x[key].constructor.name) { - x[key] = format(x[key], true); - } else if ('ObjectID' === x[key].constructor.name) { - ;(function(x){ - var representation = 'ObjectId("' + x[key].toHexString() + '")'; - x[key] = { inspect: function() { return representation; } }; - })(x) - } else if ('Date' === x[key].constructor.name) { - ;(function(x){ - var representation = 'new Date("' + x[key].toUTCString() + '")'; - x[key] = { inspect: function() { return representation; } }; - })(x) - } else if (Array.isArray(x[key])) { - x[key] = x[key].map(function (o) { - return format(o, true) - }); - } - } - } - } - if (sub) return x; - } - - return require('util') - .inspect(x, false, 10, true) - .replace(/\n/g, '') - .replace(/\s{2,}/g, ' ') -} - -/** - * Retreives information about this collections indexes. - * - * @param {Function} callback - * @method getIndexes - * @api public - */ - -NativeCollection.prototype.getIndexes = NativeCollection.prototype.indexInformation; - -/*! - * Module exports. - */ - -module.exports = NativeCollection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js deleted file mode 100644 index fb894fc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/connection.js +++ /dev/null @@ -1,299 +0,0 @@ -/*! - * Module dependencies. - */ - -var MongooseConnection = require('../../connection') - , mongo = require('mongodb') - , Server = mongo.Server - , STATES = require('../../connectionstate') - , ReplSetServers = mongo.ReplSetServers; - -/** - * A [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) connection implementation. - * - * @inherits Connection - * @api private - */ - -function NativeConnection() { - MongooseConnection.apply(this, arguments); - this._listening = false; -}; - -/*! - * Inherits from Connection. - */ - -NativeConnection.prototype.__proto__ = MongooseConnection.prototype; - -/** - * Opens the connection to MongoDB. - * - * @param {Function} fn - * @return {Connection} this - * @api private - */ - -NativeConnection.prototype.doOpen = function (fn) { - if (this.db) { - mute(this); - } - - var server = new mongo.Server(this.host, this.port, this.options.server); - this.db = new mongo.Db(this.name, server, this.options.db); - - var self = this; - this.db.open(function (err) { - if (err) return fn(err); - listen(self); - fn(); - }); - - return this; -}; - -/*! - * Register listeners for important events and bubble appropriately. - */ - -function listen (conn) { - if (conn._listening) return; - conn._listening = true; - - conn.db.on('close', function(){ - if (conn._closeCalled) return; - - // the driver never emits an `open` event. auto_reconnect still - // emits a `close` event but since we never get another - // `open` we can't emit close - if (conn.db.serverConfig.autoReconnect) { - conn.readyState = STATES.disconnected; - conn.emit('close'); - return; - } - conn.onClose(); - }); - conn.db.on('error', function(err){ - conn.emit('error', err); - }); - conn.db.on('timeout', function(err){ - var error = new Error(err && err.err || 'connection timeout'); - conn.emit('error', error); - }); - conn.db.on('open', function (err, db) { - if (STATES.disconnected === conn.readyState && db && db.databaseName) { - conn.readyState = STATES.connected; - conn.emit('reconnected') - } - }) -} - -/*! - * Remove listeners registered in `listen` - */ - -function mute (conn) { - if (!conn.db) throw new Error('missing db'); - conn.db.removeAllListeners("close"); - conn.db.removeAllListeners("error"); - conn.db.removeAllListeners("timeout"); - conn.db.removeAllListeners("open"); - conn.db.removeAllListeners("fullsetup"); - conn._listening = false; -} - -/** - * Opens a connection to a MongoDB ReplicaSet. - * - * See description of [doOpen](#NativeConnection-doOpen) for server options. In this case `options.replset` is also passed to ReplSetServers. - * - * @param {Function} fn - * @api private - * @return {Connection} this - */ - -NativeConnection.prototype.doOpenSet = function (fn) { - if (this.db) { - mute(this); - } - - var servers = [] - , self = this; - - this.hosts.forEach(function (server) { - var host = server.host || server.ipc; - var port = server.port || 27017; - servers.push(new mongo.Server(host, port, self.options.server)); - }) - - var server = new ReplSetServers(servers, this.options.replset); - this.db = new mongo.Db(this.name, server, this.options.db); - - this.db.on('fullsetup', function () { - self.emit('fullsetup') - }); - - this.db.open(function (err) { - if (err) return fn(err); - fn(); - listen(self); - }); - - return this; -}; - -/** - * Closes the connection - * - * @param {Function} fn - * @return {Connection} this - * @api private - */ - -NativeConnection.prototype.doClose = function (fn) { - this.db.close(); - if (fn) fn(); - return this; -} - -/** - * Prepares default connection options for the node-mongodb-native driver. - * - * _NOTE: `passed` options take precedence over connection string options._ - * - * @param {Object} passed options that were passed directly during connection - * @param {Object} [connStrOptions] options that were passed in the connection string - * @api private - */ - -NativeConnection.prototype.parseOptions = function (passed, connStrOpts) { - var o = passed || {}; - o.db || (o.db = {}); - o.auth || (o.auth = {}); - o.server || (o.server = {}); - o.replset || (o.replset = {}); - o.server.socketOptions || (o.server.socketOptions = {}); - o.replset.socketOptions || (o.replset.socketOptions = {}); - - var opts = connStrOpts || {}; - Object.keys(opts).forEach(function (name) { - switch (name) { - case 'poolSize': - if ('undefined' == typeof o.server.poolSize) { - o.server.poolSize = o.replset.poolSize = opts[name]; - } - break; - case 'slaveOk': - if ('undefined' == typeof o.server.slave_ok) { - o.server.slave_ok = opts[name]; - } - break; - case 'autoReconnect': - if ('undefined' == typeof o.server.auto_reconnect) { - o.server.auto_reconnect = opts[name]; - } - break; - case 'ssl': - case 'socketTimeoutMS': - case 'connectTimeoutMS': - if ('undefined' == typeof o.server.socketOptions[name]) { - o.server.socketOptions[name] = o.replset.socketOptions[name] = opts[name]; - } - break; - case 'authdb': - if ('undefined' == typeof o.auth.authdb) { - o.auth.authdb = opts[name]; - } - break; - case 'authSource': - if ('undefined' == typeof o.auth.authSource) { - o.auth.authSource = opts[name]; - } - break; - case 'retries': - case 'reconnectWait': - case 'rs_name': - if ('undefined' == typeof o.replset[name]) { - o.replset[name] = opts[name]; - } - break; - case 'replicaSet': - if ('undefined' == typeof o.replset.rs_name) { - o.replset.rs_name = opts[name]; - } - break; - case 'readSecondary': - if ('undefined' == typeof o.replset.read_secondary) { - o.replset.read_secondary = opts[name]; - } - break; - case 'nativeParser': - if ('undefined' == typeof o.db.native_parser) { - o.db.native_parser = opts[name]; - } - break; - case 'w': - case 'safe': - case 'fsync': - case 'journal': - case 'wtimeoutMS': - if ('undefined' == typeof o.db[name]) { - o.db[name] = opts[name]; - } - break; - case 'readPreference': - if ('undefined' == typeof o.db.read_preference) { - o.db.read_preference = opts[name]; - } - break; - case 'readPreferenceTags': - if ('undefined' == typeof o.db.read_preference_tags) { - o.db.read_preference_tags = opts[name]; - } - break; - } - }) - - if (!('auto_reconnect' in o.server)) { - o.server.auto_reconnect = true; - } - - if (!o.db.read_preference) { - // read from primaries by default - o.db.read_preference = 'primary'; - } - - // mongoose creates its own ObjectIds - o.db.forceServerObjectId = false; - - // default safe using new nomenclature - if (!('journal' in o.db || 'j' in o.db || - 'fsync' in o.db || 'safe' in o.db || 'w' in o.db)) { - o.db.w = 1; - } - - validate(o); - return o; -} - -/*! - * Validates the driver db options. - * - * @param {Object} o - */ - -function validate (o) { - if (-1 === o.db.w || 0 === o.db.w) { - if (o.db.journal || o.db.fsync || o.db.safe) { - throw new Error( - 'Invalid writeConcern: ' - + 'w set to -1 or 0 cannot be combined with safe|fsync|journal'); - } - } -} - -/*! - * Module exports. - */ - -module.exports = NativeConnection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js deleted file mode 100644 index 3c46c93..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/drivers/node-mongodb-native/objectid.js +++ /dev/null @@ -1,29 +0,0 @@ - -/*! - * [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) ObjectId - * @constructor NodeMongoDbObjectId - * @see ObjectId - */ - -var ObjectId = require('mongodb').BSONPure.ObjectID; - -/*! - * ignore - */ - -var ObjectIdToString = ObjectId.toString.bind(ObjectId); -module.exports = exports = ObjectId; - -ObjectId.fromString = function(str){ - // patch native driver bug in V0.9.6.4 - if (!('string' === typeof str && 24 === str.length)) { - throw new Error("Invalid ObjectId"); - } - - return ObjectId.createFromHexString(str); -}; - -ObjectId.toString = function(oid){ - if (!arguments.length) return ObjectIdToString(); - return oid.toHexString(); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js deleted file mode 100644 index 6d00f80..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/error.js +++ /dev/null @@ -1,39 +0,0 @@ - -/** - * MongooseError constructor - * - * @param {String} msg Error message - * @inherits Error https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error - */ - -function MongooseError (msg) { - Error.call(this); - Error.captureStackTrace(this, arguments.callee); - this.message = msg; - this.name = 'MongooseError'; -}; - -/*! - * Inherits from Error. - */ - -MongooseError.prototype.__proto__ = Error.prototype; - -/*! - * Module exports. - */ - -module.exports = exports = MongooseError; - -/*! - * Expose subclasses - */ - -MongooseError.CastError = require('./errors/cast'); -MongooseError.DocumentError = require('./errors/document'); -MongooseError.ValidationError = require('./errors/validation') -MongooseError.ValidatorError = require('./errors/validator') -MongooseError.VersionError =require('./errors/version') -MongooseError.OverwriteModelError = require('./errors/overwriteModel') -MongooseError.MissingSchemaError = require('./errors/missingSchema') -MongooseError.DivergentArrayError = require('./errors/divergentArray') diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js deleted file mode 100644 index 055063a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/cast.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! - * Module dependencies. - */ - -var MongooseError = require('../error'); - -/** - * Casting Error constructor. - * - * @param {String} type - * @param {String} value - * @inherits MongooseError - * @api private - */ - -function CastError (type, value, path) { - MongooseError.call(this, 'Cast to ' + type + ' failed for value "' + value + '" at path "' + path + '"'); - Error.captureStackTrace(this, arguments.callee); - this.name = 'CastError'; - this.type = type; - this.value = value; - this.path = path; -}; - -/*! - * Inherits from MongooseError. - */ - -CastError.prototype.__proto__ = MongooseError.prototype; - -/*! - * exports - */ - -module.exports = CastError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js deleted file mode 100644 index 45809bc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/divergentArray.js +++ /dev/null @@ -1,40 +0,0 @@ - -/*! - * Module dependencies. - */ - -var MongooseError = require('../error'); - -/*! - * DivergentArrayError constructor. - * - * @inherits MongooseError - */ - -function DivergentArrayError (paths) { - var msg = 'For your own good, using `document.save()` to update an array ' - + 'which was selected using an $elemMatch projection OR ' - + 'populated using skip, limit, query conditions, or exclusion of ' - + 'the _id field when the operation results in a $pop or $set of ' - + 'the entire array is not supported. The following ' - + 'path(s) would have been modified unsafely:\n' - + ' ' + paths.join('\n ') + '\n' - + 'Use Model.update() to update these arrays instead.' - // TODO write up a docs page (FAQ) and link to it - - MongooseError.call(this, msg); - Error.captureStackTrace(this, arguments.callee); - this.name = 'DivergentArrayError'; -}; - -/*! - * Inherits from MongooseError. - */ - -DivergentArrayError.prototype.__proto__ = MongooseError.prototype; - -/*! - * exports - */ - -module.exports = DivergentArrayError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js deleted file mode 100644 index 6955256..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/document.js +++ /dev/null @@ -1,32 +0,0 @@ - -/*! - * Module requirements - */ - -var MongooseError = require('../error') - -/** - * Document Error - * - * @param {String} msg - * @inherits MongooseError - * @api private - */ - -function DocumentError (msg) { - MongooseError.call(this, msg); - Error.captureStackTrace(this, arguments.callee); - this.name = 'DocumentError'; -}; - -/*! - * Inherits from MongooseError. - */ - -DocumentError.prototype.__proto__ = MongooseError.prototype; - -/*! - * Module exports. - */ - -module.exports = exports = DocumentError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js deleted file mode 100644 index 02a02ee..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/missingSchema.js +++ /dev/null @@ -1,32 +0,0 @@ - -/*! - * Module dependencies. - */ - -var MongooseError = require('../error'); - -/*! - * MissingSchema Error constructor. - * - * @inherits MongooseError - */ - -function MissingSchemaError (name) { - var msg = 'Schema hasn\'t been registered for model "' + name + '".\n' - + 'Use mongoose.model(name, schema)'; - MongooseError.call(this, msg); - Error.captureStackTrace(this, arguments.callee); - this.name = 'MissingSchemaError'; -}; - -/*! - * Inherits from MongooseError. - */ - -MissingSchemaError.prototype.__proto__ = MongooseError.prototype; - -/*! - * exports - */ - -module.exports = MissingSchemaError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js deleted file mode 100644 index 2591581..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/overwriteModel.js +++ /dev/null @@ -1,30 +0,0 @@ - -/*! - * Module dependencies. - */ - -var MongooseError = require('../error'); - -/*! - * OverwriteModel Error constructor. - * - * @inherits MongooseError - */ - -function OverwriteModelError (name) { - MongooseError.call(this, 'Cannot overwrite `' + name + '` model once compiled.'); - Error.captureStackTrace(this, arguments.callee); - this.name = 'OverwriteModelError'; -}; - -/*! - * Inherits from MongooseError. - */ - -OverwriteModelError.prototype.__proto__ = MongooseError.prototype; - -/*! - * exports - */ - -module.exports = OverwriteModelError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js deleted file mode 100644 index 1679849..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validation.js +++ /dev/null @@ -1,49 +0,0 @@ - -/*! - * Module requirements - */ - -var MongooseError = require('../error') - -/** - * Document Validation Error - * - * @api private - * @param {Document} instance - * @inherits MongooseError - */ - -function ValidationError (instance) { - MongooseError.call(this, "Validation failed"); - Error.captureStackTrace(this, arguments.callee); - this.name = 'ValidationError'; - this.errors = instance.errors = {}; -}; - -/** - * Console.log helper - */ - -ValidationError.prototype.toString = function () { - var ret = this.name + ': '; - var msgs = []; - - Object.keys(this.errors).forEach(function (key) { - if (this == this.errors[key]) return; - msgs.push(String(this.errors[key])); - }, this) - - return ret + msgs.join(', '); -}; - -/*! - * Inherits from MongooseError. - */ - -ValidationError.prototype.__proto__ = MongooseError.prototype; - -/*! - * Module exports - */ - -module.exports = exports = ValidationError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js deleted file mode 100644 index 2498b05..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/validator.js +++ /dev/null @@ -1,51 +0,0 @@ -/*! - * Module dependencies. - */ - -var MongooseError = require('../error'); - -/** - * Schema validator error - * - * @param {String} path - * @param {String} msg - * @param {String|Number|any} val - * @inherits MongooseError - * @api private - */ - -function ValidatorError (path, type, val) { - var msg = type - ? '"' + type + '" ' - : ''; - - var message = 'Validator ' + msg + 'failed for path ' + path - if (2 < arguments.length) message += ' with value `' + String(val) + '`'; - - MongooseError.call(this, message); - Error.captureStackTrace(this, arguments.callee); - this.name = 'ValidatorError'; - this.path = path; - this.type = type; - this.value = val; -}; - -/*! - * toString helper - */ - -ValidatorError.prototype.toString = function () { - return this.message; -} - -/*! - * Inherits from MongooseError - */ - -ValidatorError.prototype.__proto__ = MongooseError.prototype; - -/*! - * exports - */ - -module.exports = ValidatorError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js deleted file mode 100644 index b2388aa..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/errors/version.js +++ /dev/null @@ -1,31 +0,0 @@ - -/*! - * Module dependencies. - */ - -var MongooseError = require('../error'); - -/** - * Version Error constructor. - * - * @inherits MongooseError - * @api private - */ - -function VersionError () { - MongooseError.call(this, 'No matching document found.'); - Error.captureStackTrace(this, arguments.callee); - this.name = 'VersionError'; -}; - -/*! - * Inherits from MongooseError. - */ - -VersionError.prototype.__proto__ = MongooseError.prototype; - -/*! - * exports - */ - -module.exports = VersionError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js deleted file mode 100644 index ca4cfa0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/index.js +++ /dev/null @@ -1,580 +0,0 @@ - -/*! - * Module dependencies. - */ - -var Schema = require('./schema') - , SchemaType = require('./schematype') - , VirtualType = require('./virtualtype') - , SchemaTypes = Schema.Types - , SchemaDefaults = require('./schemadefault') - , Types = require('./types') - , Query = require('./query') - , Promise = require('./promise') - , Model = require('./model') - , Document = require('./document') - , utils = require('./utils') - , format = utils.toCollectionName - , mongodb = require('mongodb') - -/** - * Mongoose constructor. - * - * The exports object of the `mongoose` module is an instance of this class. - * Most apps will only use this one instance. - * - * @api public - */ - -function Mongoose () { - this.connections = []; - this.plugins = []; - this.models = {}; - this.modelSchemas = {}; - this.options = {}; - this.createConnection(); // default connection -}; - -/** - * Sets mongoose options - * - * ####Example: - * - * mongoose.set('test', value) // sets the 'test' option to `value` - * - * mongoose.set('debug', true) // enable logging collection methods + arguments to the console - * - * @param {String} key - * @param {String} value - * @api public - */ - -Mongoose.prototype.set = function (key, value) { - if (arguments.length == 1) - return this.options[key]; - this.options[key] = value; - return this; -}; - -/** - * Gets mongoose options - * - * ####Example: - * - * mongoose.get('test') // returns the 'test' value - * - * @param {String} key - * @method get - * @api public - */ - -Mongoose.prototype.get = Mongoose.prototype.set; - -/*! - * ReplSet connection string check. - */ - -var rgxReplSet = /^.+,.+$/; - -/** - * Creates a Connection instance. - * - * Each `connection` instance maps to a single database. This method is helpful when mangaging multiple db connections. - * - * If arguments are passed, they are proxied to either [Connection#open](#connection_Connection-open) or [Connection#openSet](#connection_Connection-openSet) appropriately. This means we can pass `db`, `server`, and `replset` options to the driver. - * - * _Options passed take precedence over options included in connection strings._ - * - * ####Example: - * - * // with mongodb:// URI - * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database'); - * - * // and options - * var opts = { db: { native_parser: true }} - * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database', opts); - * - * // replica sets - * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database,mongodb://anotherhost:port,mongodb://yetanother:port'); - * - * // and options - * var opts = { replset: { strategy: 'ping', rs_name: 'testSet' }} - * db = mongoose.createConnection('mongodb://user:pass@localhost:port/database,mongodb://anotherhost:port,mongodb://yetanother:port', opts); - * - * // with [host, database_name[, port] signature - * db = mongoose.createConnection('localhost', 'database', port) - * - * // and options - * var opts = { server: { auto_reconnect: false }, user: 'username', pass: 'mypassword' } - * db = mongoose.createConnection('localhost', 'database', port, opts) - * - * // initialize now, connect later - * db = mongoose.createConnection(); - * db.open('localhost', 'database', port, [opts]); - * - * @param {String} [uri] a mongodb:// URI - * @param {Object} [options] options to pass to the driver - * @see Connection#open #connection_Connection-open - * @see Connection#openSet #connection_Connection-openSet - * @return {Connection} the created Connection object - * @api public - */ - -Mongoose.prototype.createConnection = function () { - var conn = new Connection(this); - this.connections.push(conn); - - if (arguments.length) { - if (rgxReplSet.test(arguments[0])) { - conn.openSet.apply(conn, arguments); - } else { - conn.open.apply(conn, arguments); - } - } - - return conn; -}; - -/** - * Opens the default mongoose connection. - * - * If arguments are passed, they are proxied to either [Connection#open](#connection_Connection-open) or [Connection#openSet](#connection_Connection-openSet) appropriately. - * - * _Options passed take precedence over options included in connection strings._ - * - * @see Mongoose#createConnection #index_Mongoose-createConnection - * @api public - * @return {Mongoose} this - */ - -Mongoose.prototype.connect = function () { - var conn = this.connection; - - if (rgxReplSet.test(arguments[0])) { - conn.openSet.apply(conn, arguments); - } else { - conn.open.apply(conn, arguments); - } - - return this; -}; - -/** - * Disconnects all connections. - * - * @param {Function} [fn] called after all connection close. - * @return {Mongoose} this - * @api public - */ - -Mongoose.prototype.disconnect = function (fn) { - var count = this.connections.length - , error - - this.connections.forEach(function(conn){ - conn.close(function(err){ - if (error) return; - - if (err) { - error = err; - if (fn) return fn(err); - throw err; - } - - if (fn) - --count || fn(); - }); - }); - return this; -}; - -/** - * Defines a model or retrieves it. - * - * Models defined on the `mongoose` instance are available to all connection created by the same `mongoose` instance. - * - * ####Example: - * - * var mongoose = require('mongoose'); - * - * // define an Actor model with this mongoose instance - * mongoose.model('Actor', new Schema({ name: String })); - * - * // create a new connection - * var conn = mongoose.createConnection(..); - * - * // retrieve the Actor model - * var Actor = conn.model('Actor'); - * - * _When no `collection` argument is passed, Mongoose produces a collection name by passing the model `name` to the [utils.toCollectionName](#utils_exports.toCollectionName) method. This method pluralizes the name. If you don't like this behavior, either pass a collection name or set your schemas collection name option._ - * - * ####Example: - * - * var schema = new Schema({ name: String }, { collection: 'actor' }); - * - * // or - * - * schema.set('collection', 'actor'); - * - * // or - * - * var collectionName = 'actor' - * var M = mongoose.model('Actor', schema, collectionName) - * - * @param {String} name model name - * @param {Schema} [schema] - * @param {String} [collection] name (optional, induced from model name) - * @param {Boolean} [skipInit] whether to skip initialization (defaults to false) - * @api public - */ - -Mongoose.prototype.model = function (name, schema, collection, skipInit) { - if ('string' == typeof schema) { - collection = schema; - schema = false; - } - - if (utils.isObject(schema) && !(schema instanceof Schema)) { - schema = new Schema(schema); - } - - if ('boolean' === typeof collection) { - skipInit = collection; - collection = null; - } - - // handle internal options from connection.model() - var options; - if (skipInit && utils.isObject(skipInit)) { - options = skipInit; - skipInit = true; - } else { - options = {}; - } - - // look up schema for the collection. this might be a - // default schema like system.indexes stored in SchemaDefaults. - if (!this.modelSchemas[name]) { - if (!schema && name in SchemaDefaults) { - schema = SchemaDefaults[name]; - } - - if (schema) { - // cache it so we only apply plugins once - this.modelSchemas[name] = schema; - this._applyPlugins(schema); - } else { - throw new mongoose.Error.MissingSchemaError(name); - } - } - - var model; - var sub; - - // connection.model() may be passing a different schema for - // an existing model name. in this case don't read from cache. - if (this.models[name] && false !== options.cache) { - if (schema instanceof Schema && schema != this.models[name].schema) { - throw new mongoose.Error.OverwriteModelError(name); - } - - if (collection) { - // subclass current model with alternate collection - model = this.models[name]; - schema = model.prototype.schema; - sub = model.__subclass(this.connection, schema, collection); - // do not cache the sub model - return sub; - } - - return this.models[name]; - } - - // ensure a schema exists - if (!schema) { - schema = this.modelSchemas[name]; - if (!schema) { - throw new mongoose.Error.MissingSchemaError(name); - } - } - - if (!collection) { - collection = schema.get('collection') || format(name); - } - - var connection = options.connection || this.connection; - model = Model.compile(name, schema, collection, connection, this); - - if (!skipInit) { - model.init(); - } - - if (false === options.cache) { - return model; - } - - return this.models[name] = model; -} - -/** - * Returns an array of model names created on this instance of Mongoose. - * - * ####Note: - * - * _Does not include names of models created using `connection.model()`._ - * - * @api public - * @return {Array} - */ - -Mongoose.prototype.modelNames = function () { - var names = Object.keys(this.models); - return names; -} - -/** - * Applies global plugins to `schema`. - * - * @param {Schema} schema - * @api private - */ - -Mongoose.prototype._applyPlugins = function (schema) { - for (var i = 0, l = this.plugins.length; i < l; i++) { - schema.plugin(this.plugins[i][0], this.plugins[i][1]); - } -} - -/** - * Declares a global plugin executed on all Schemas. - * - * Equivalent to calling `.plugin(fn)` on each Schema you create. - * - * @param {Function} fn plugin callback - * @param {Object} [opts] optional options - * @return {Mongoose} this - * @see plugins ./plugins.html - * @api public - */ - -Mongoose.prototype.plugin = function (fn, opts) { - this.plugins.push([fn, opts]); - return this; -}; - -/** - * The default connection of the mongoose module. - * - * ####Example: - * - * var mongoose = require('mongoose'); - * mongoose.connect(...); - * mongoose.connection.on('error', cb); - * - * This is the connection used by default for every model created using [mongoose.model](#index_Mongoose-model). - * - * @property connection - * @return {Connection} - * @api public - */ - -Mongoose.prototype.__defineGetter__('connection', function(){ - return this.connections[0]; -}); - -/*! - * Driver depentend APIs - */ - -var driver = global.MONGOOSE_DRIVER_PATH || './drivers/node-mongodb-native'; - -/*! - * Connection - */ - -var Connection = require(driver + '/connection'); - -/*! - * Collection - */ - -var Collection = require(driver + '/collection'); - -/** - * The Mongoose Collection constructor - * - * @method Collection - * @api public - */ - -Mongoose.prototype.Collection = Collection; - -/** - * The Mongoose [Connection](#connection_Connection) constructor - * - * @method Connection - * @api public - */ - -Mongoose.prototype.Connection = Connection; - -/** - * The Mongoose version - * - * @property version - * @api public - */ - -Mongoose.prototype.version = require(__dirname + '/../package.json').version; - -/** - * The Mongoose constructor - * - * The exports of the mongoose module is an instance of this class. - * - * ####Example: - * - * var mongoose = require('mongoose'); - * var mongoose2 = new mongoose.Mongoose(); - * - * @method Mongoose - * @api public - */ - -Mongoose.prototype.Mongoose = Mongoose; - -/** - * The Mongoose [Schema](#schema_Schema) constructor - * - * ####Example: - * - * var mongoose = require('mongoose'); - * var Schema = mongoose.Schema; - * var CatSchema = new Schema(..); - * - * @method Schema - * @api public - */ - -Mongoose.prototype.Schema = Schema; - -/** - * The Mongoose [SchemaType](#schematype_SchemaType) constructor - * - * @method SchemaType - * @api public - */ - -Mongoose.prototype.SchemaType = SchemaType; - -/** - * The various Mongoose SchemaTypes. - * - * ####Note: - * - * _Alias of mongoose.Schema.Types for backwards compatibility._ - * - * @property SchemaTypes - * @see Schema.SchemaTypes #schema_Schema.Types - * @api public - */ - -Mongoose.prototype.SchemaTypes = Schema.Types; - -/** - * The Mongoose [VirtualType](#virtualtype_VirtualType) constructor - * - * @method VirtualType - * @api public - */ - -Mongoose.prototype.VirtualType = VirtualType; - -/** - * The various Mongoose Types. - * - * ####Example: - * - * var mongoose = require('mongoose'); - * var array = mongoose.Types.Array; - * - * ####Types: - * - * - [ObjectId](#types-objectid-js) - * - [Buffer](#types-buffer-js) - * - [SubDocument](#types-embedded-js) - * - [Array](#types-array-js) - * - [DocumentArray](#types-documentarray-js) - * - * Using this exposed access to the `ObjectId` type, we can construct ids on demand. - * - * var ObjectId = mongoose.Types.ObjectId; - * var id1 = new ObjectId; - * - * @property Types - * @api public - */ - -Mongoose.prototype.Types = Types; - -/** - * The Mongoose [Query](#query_Query) constructor. - * - * @method Query - * @api public - */ - -Mongoose.prototype.Query = Query; - -/** - * The Mongoose [Promise](#promise_Promise) constructor. - * - * @method Promise - * @api public - */ - -Mongoose.prototype.Promise = Promise; - -/** - * The Mongoose [Model](#model_Model) constructor. - * - * @method Model - * @api public - */ - -Mongoose.prototype.Model = Model; - -/** - * The Mongoose [Document](#document-js) constructor. - * - * @method Document - * @api public - */ - -Mongoose.prototype.Document = Document; - -/** - * The [MongooseError](#error_MongooseError) constructor. - * - * @method Error - * @api public - */ - -Mongoose.prototype.Error = require('./error'); - -/** - * The [node-mongodb-native](https://github.com/mongodb/node-mongodb-native) driver Mongoose uses. - * - * @property mongo - * @api public - */ - -Mongoose.prototype.mongo = require('mongodb'); - -/*! - * The exports object is an instance of Mongoose. - * - * @api public - */ - -var mongoose = module.exports = exports = new Mongoose; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js deleted file mode 100644 index d5a3f12..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/internal.js +++ /dev/null @@ -1,31 +0,0 @@ -/*! - * Dependencies - */ - -var StateMachine = require('./statemachine') -var ActiveRoster = StateMachine.ctor('require', 'modify', 'init', 'default') - -module.exports = exports = InternalCache; - -function InternalCache () { - this.strictMode = undefined; - this.selected = undefined; - this.shardval = undefined; - this.saveError = undefined; - this.validationError = undefined; - this.adhocPaths = undefined; - this.removing = undefined; - this.inserting = undefined; - this.version = undefined; - this.getters = {}; - this._id = undefined; - this.populate = undefined; // what we want to populate in this doc - this.populated = undefined;// the _ids that have been populated - this.wasPopulated = false; // if this doc was the result of a population - this.scope = undefined; - this.activePaths = new ActiveRoster; - - // embedded docs - this.ownerDocument = undefined; - this.fullPath = undefined; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js deleted file mode 100644 index 5348ff2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/model.js +++ /dev/null @@ -1,2229 +0,0 @@ -/*! - * Module dependencies. - */ - -var Document = require('./document') - , MongooseArray = require('./types/array') - , MongooseBuffer = require('./types/buffer') - , MongooseError = require('./error') - , VersionError = MongooseError.VersionError - , DivergentArrayError = MongooseError.DivergentArrayError - , Query = require('./query') - , Schema = require('./schema') - , Types = require('./schema/index') - , utils = require('./utils') - , hasOwnProperty = utils.object.hasOwnProperty - , isMongooseObject = utils.isMongooseObject - , EventEmitter = require('events').EventEmitter - , merge = utils.merge - , Promise = require('./promise') - , assert = require('assert') - , tick = utils.tick - -var VERSION_WHERE = 1 - , VERSION_INC = 2 - , VERSION_ALL = VERSION_WHERE | VERSION_INC; - -/** - * Model constructor - * - * @param {Object} doc values to with which to create the document - * @inherits Document - * @event `error`: If listening to this Model event, it is emitted when a document was saved without passing a callback and an `error` occurred. If not listening, the event bubbles to the connection used to create this Model. - * @event `index`: Emitted after `Model#ensureIndexes` completes. If an error occurred it is passed with the event. - * @api public - */ - -function Model (doc, fields, skipId) { - Document.call(this, doc, fields, skipId); -}; - -/*! - * Inherits from Document. - * - * All Model.prototype features are available on - * top level (non-sub) documents. - */ - -Model.prototype.__proto__ = Document.prototype; - -/** - * Connection the model uses. - * - * @api public - * @property db - */ - -Model.prototype.db; - -/** - * Collection the model uses. - * - * @api public - * @property collection - */ - -Model.prototype.collection; - -/** - * The name of the model - * - * @api public - * @property modelName - */ - -Model.prototype.modelName; - -/*! - * Handles doc.save() callbacks - */ - -function handleSave (promise, self) { - return tick(function handleSave (err, result) { - if (err) { - // If the initial insert fails provide a second chance. - // (If we did this all the time we would break updates) - if (self.$__.inserting) { - self.isNew = true; - self.emit('isNew', true); - } - promise.error(err); - promise = self = null; - return; - } - - self.$__storeShard(); - - var numAffected; - if (result) { - // when inserting, the array of created docs is returned - numAffected = result.length - ? result.length - : result; - } else { - numAffected = 0; - } - - // was this an update that required a version bump? - if (self.$__.version && !self.$__.inserting) { - var doIncrement = VERSION_INC === (VERSION_INC & self.$__.version); - self.$__.version = undefined; - - // increment version if was successful - if (numAffected > 0) { - if (doIncrement) { - var key = self.schema.options.versionKey; - var version = self.getValue(key) | 0; - self.setValue(key, version + 1); - } - } else { - // the update failed. pass an error back - promise.error(new VersionError); - promise = self = null; - return; - } - } - - self.emit('save', self, numAffected); - promise.complete(self, numAffected); - promise = self = null; - }); -} - -/** - * Saves this document. - * - * ####Example: - * - * product.sold = Date.now(); - * product.save(function (err, product) { - * if (err) .. - * }) - * - * The `fn` callback is optional. If no `fn` is passed and validation fails, the validation error will be emitted on the connection used to create this model. - * - * var db = mongoose.createConnection(..); - * var schema = new Schema(..); - * var Product = db.model('Product', schema); - * - * db.on('error', handleError); - * - * However, if you desire more local error handling you can add an `error` listener to the model and handle errors there instead. - * - * Product.on('error', handleError); - * - * @param {Function} [fn] optional callback - * @api public - * @see middleware http://mongoosejs.com/docs/middleware.html - */ - -Model.prototype.save = function save (fn) { - var promise = new Promise(fn) - , complete = handleSave(promise, this) - , options = {} - - if (this.schema.options.safe) { - options.safe = this.schema.options.safe; - } - - if (this.isNew) { - // send entire doc - var obj = this.toObject({ depopulate: 1 }); - this.$__version(true, obj); - this.collection.insert(obj, options, complete); - this.$__reset(); - this.isNew = false; - this.emit('isNew', false); - // Make it possible to retry the insert - this.$__.inserting = true; - - } else { - // Make sure we don't treat it as a new object on error, - // since it already exists - this.$__.inserting = false; - - var delta = this.$__delta(); - if (delta) { - if (delta instanceof Error) return complete(delta); - var where = this.$__where(delta[0]); - this.$__reset(); - this.collection.update(where, delta[1], options, complete); - } else { - this.$__reset(); - complete(null); - } - - this.emit('isNew', false); - } -}; - -/*! - * Apply the operation to the delta (update) clause as - * well as track versioning for our where clause. - * - * @param {Document} self - * @param {Object} where - * @param {Object} delta - * @param {Object} data - * @param {Mixed} val - * @param {String} [operation] - */ - -function operand (self, where, delta, data, val, op) { - // delta - op || (op = '$set'); - if (!delta[op]) delta[op] = {}; - delta[op][data.path] = val; - - // disabled versioning? - if (false === self.schema.options.versionKey) return; - - // already marked for versioning? - if (VERSION_ALL === (VERSION_ALL & self.$__.version)) return; - - switch (op) { - case '$set': - case '$unset': - case '$pop': - case '$pull': - case '$pullAll': - case '$push': - case '$pushAll': - case '$addToSet': - break; - default: - // nothing to do - return; - } - - // ensure updates sent with positional notation are - // editing the correct array element. - // only increment the version if an array position changes. - // modifying elements of an array is ok if position does not change. - - if ('$push' == op || '$pushAll' == op || '$addToSet' == op) { - self.$__.version = VERSION_INC; - } - else if (/^\$p/.test(op)) { - // potentially changing array positions - self.increment(); - } - else if (Array.isArray(val)) { - // $set an array - self.increment(); - } - // now handling $set, $unset - else if (/\.\d+\.|\.\d+$/.test(data.path)) { - // subpath of array - self.$__.version = VERSION_WHERE; - } -} - -/*! - * Compiles an update and where clause for a `val` with _atomics. - * - * @param {Document} self - * @param {Object} where - * @param {Object} delta - * @param {Object} data - * @param {Array} value - */ - -function handleAtomics (self, where, delta, data, value) { - if (delta.$set && delta.$set[data.path]) { - // $set has precedence over other atomics - return; - } - - if ('function' == typeof value.$__getAtomics) { - value.$__getAtomics().forEach(function (atomic) { - var op = atomic[0]; - var val = atomic[1]; - operand(self, where, delta, data, val, op); - }) - return; - } - - // legacy support for plugins - - var atomics = value._atomics - , ops = Object.keys(atomics) - , i = ops.length - , val - , op; - - if (0 === i) { - // $set - - if (isMongooseObject(value)) { - value = value.toObject({ depopulate: 1 }); - } else if (value.valueOf) { - value = value.valueOf(); - } - - return operand(self, where, delta, data, value); - } - - while (i--) { - op = ops[i]; - val = atomics[op]; - - if (isMongooseObject(val)) { - val = val.toObject({ depopulate: 1 }) - } else if (Array.isArray(val)) { - val = val.map(function (mem) { - return isMongooseObject(mem) - ? mem.toObject({ depopulate: 1 }) - : mem; - }) - } else if (val.valueOf) { - val = val.valueOf() - } - - if ('$addToSet' === op) - val = { $each: val }; - - operand(self, where, delta, data, val, op); - } -} - -/** - * Produces a special query document of the modified properties used in updates. - * - * @api private - * @method $__delta - * @memberOf Model - */ - -Model.prototype.$__delta = function () { - var dirty = this.$__dirty(); - if (!dirty.length && VERSION_ALL != this.$__.version) return; - - var where = {} - , delta = {} - , len = dirty.length - , divergent = [] - , d = 0 - , val - , obj - - for (; d < len; ++d) { - var data = dirty[d] - var value = data.value - var schema = data.schema - - var match = checkDivergentArray(this, data.path, value); - if (match) { - divergent.push(match); - continue; - } - - if (divergent.length) continue; - - if (undefined === value) { - operand(this, where, delta, data, 1, '$unset'); - - } else if (null === value) { - operand(this, where, delta, data, null); - - } else if (value._path && value._atomics) { - // arrays and other custom types (support plugins etc) - handleAtomics(this, where, delta, data, value); - - } else if (value._path && Buffer.isBuffer(value)) { - // MongooseBuffer - value = value.toObject(); - operand(this, where, delta, data, value); - - } else { - value = utils.clone(value, { depopulate: 1 }); - operand(this, where, delta, data, value); - } - } - - if (divergent.length) { - return new DivergentArrayError(divergent); - } - - if (this.$__.version) { - this.$__version(where, delta); - } - - return [where, delta]; -} - -/*! - * Determine if array was populated with some form of filter and is now - * being updated in a manner which could overwrite data unintentionally. - * - * @see https://github.com/LearnBoost/mongoose/issues/1334 - * @param {Document} doc - * @param {String} path - * @return {String|undefined} - */ - -function checkDivergentArray (doc, path, array) { - // see if we populated this path - var pop = doc.populated(path, true); - - if (!pop && doc.$__.selected) { - // If any array was selected using an $elemMatch projection, we deny the update. - // NOTE: MongoDB only supports projected $elemMatch on top level array. - var top = path.split('.')[0]; - if (doc.$__.selected[top] && doc.$__.selected[top].$elemMatch) { - return top; - } - } - - if (!(pop && array instanceof MongooseArray)) return; - - // If the array was populated using options that prevented all - // documents from being returned (match, skip, limit) or they - // deselected the _id field, $pop and $set of the array are - // not safe operations. If _id was deselected, we do not know - // how to remove elements. $pop will pop off the _id from the end - // of the array in the db which is not guaranteed to be the - // same as the last element we have here. $set of the entire array - // would be similarily destructive as we never received all - // elements of the array and potentially would overwrite data. - var check = pop.options.match || - pop.options.options && hasOwnProperty(pop.options.options, 'limit') || // 0 is not permitted - pop.options.options && pop.options.options.skip || // 0 is permitted - pop.options.select && // deselected _id? - (0 === pop.options.select._id || - /\s?-_id\s?/.test(pop.options.select)) - - if (check) { - var atomics = array._atomics; - if (0 === Object.keys(atomics).length || atomics.$set || atomics.$pop) { - return path; - } - } -} - -/** - * Appends versioning to the where and update clauses. - * - * @api private - * @method $__version - * @memberOf Model - */ - -Model.prototype.$__version = function (where, delta) { - var key = this.schema.options.versionKey; - - if (true === where) { - // this is an insert - if (key) this.setValue(key, delta[key] = 0); - return; - } - - // updates - - // only apply versioning if our versionKey was selected. else - // there is no way to select the correct version. we could fail - // fast here and force them to include the versionKey but - // thats a bit intrusive. can we do this automatically? - if (!this.isSelected(key)) { - return; - } - - // $push $addToSet don't need the where clause set - if (VERSION_WHERE === (VERSION_WHERE & this.$__.version)) { - where[key] = this.getValue(key); - } - - if (VERSION_INC === (VERSION_INC & this.$__.version)) { - delta.$inc || (delta.$inc = {}); - delta.$inc[key] = 1; - } -} - -/** - * Signal that we desire an increment of this documents version. - * - * ####Example: - * - * Model.findById(id, function (err, doc) { - * doc.increment(); - * doc.save(function (err) { .. }) - * }) - * - * @see versionKeys http://mongoosejs.com/docs/guide.html#versionKey - * @api public - */ - -Model.prototype.increment = function increment () { - this.$__.version = VERSION_ALL; - return this; -} - -/** - * Returns a query object which applies shardkeys if they exist. - * - * @api private - * @method $__where - * @memberOf Model - */ - -Model.prototype.$__where = function _where (where) { - where || (where = {}); - - var paths - , len - - if (this.$__.shardval) { - paths = Object.keys(this.$__.shardval) - len = paths.length - - for (var i = 0; i < len; ++i) { - where[paths[i]] = this.$__.shardval[paths[i]]; - } - } - - where._id = this._doc._id; - return where; -} - -/** - * Removes this document from the db. - * - * ####Example: - * - * product.remove(function (err, product) { - * if (err) return handleError(err); - * Product.findById(product._id, function (err, product) { - * console.log(product) // null - * }) - * }) - * - * @param {Function} [fn] optional callback - * @api public - */ - -Model.prototype.remove = function remove (fn) { - if (this.$__.removing) { - this.$__.removing.addBack(fn); - return this; - } - - var promise = this.$__.removing = new Promise(fn) - , where = this.$__where() - , self = this - , options = {} - - if (this.schema.options.safe) { - options.safe = this.schema.options.safe; - } - - this.collection.remove(where, options, tick(function (err) { - if (err) { - promise.error(err); - promise = self = self.$__.removing = where = options = null; - return; - } - self.emit('remove', self); - promise.complete(); - promise = self = where = options = null; - })); - - return this; -}; - -/** - * Returns another Model instance. - * - * ####Example: - * - * var doc = new Tank; - * doc.model('User').findById(id, callback); - * - * @param {String} name model name - * @api public - */ - -Model.prototype.model = function model (name) { - return this.db.model(name); -}; - -// Model (class) features - -/*! - * Give the constructor the ability to emit events. - */ - -for (var i in EventEmitter.prototype) - Model[i] = EventEmitter.prototype[i]; - -/** - * Called when the model compiles. - * - * @api private - */ - -Model.init = function init () { - if (this.schema.options.autoIndex) { - this.ensureIndexes(); - } - - this.schema.emit('init', this); -}; - -/** - * Sends `ensureIndex` commands to mongo for each index declared in the schema. - * - * ####Example: - * - * Event.ensureIndexes(function (err) { - * if (err) return handleError(err); - * }); - * - * After completion, an `index` event is emitted on this `Model` passing an error if one occurred. - * - * ####Example: - * - * var eventSchema = new Schema({ thing: { type: 'string', unique: true }}) - * var Event = mongoose.model('Event', eventSchema); - * - * Event.on('index', function (err) { - * if (err) console.error(err); // error occurred during index creation - * }) - * - * _NOTE: It is not recommended that you run this in production. Index creation may impact database performance depending on your load. Use with caution._ - * - * The `ensureIndex` commands are not sent in parallel. This is to avoid the `MongoError: cannot add index with a background operation in progress` error. See [this ticket](https://github.com/LearnBoost/mongoose/issues/1365) for more information. - * - * @param {Function} [cb] optional callback - * @api public - */ - -Model.ensureIndexes = function ensureIndexes (cb) { - var indexes = this.schema.indexes(); - if (!indexes.length) { - return cb && process.nextTick(cb); - } - - // Indexes are created one-by-one to support how MongoDB < 2.4 deals - // with background indexes. - - var self = this - , safe = self.schema.options.safe - - function done (err) { - self.emit('index', err); - cb && cb(err); - } - - function create () { - var index = indexes.shift(); - if (!index) return done(); - - var options = index[1]; - options.safe = safe; - self.collection.ensureIndex(index[0], options, tick(function (err) { - if (err) return done(err); - create(); - })); - } - - create(); -} - -/** - * Schema the model uses. - * - * @property schema - * @receiver Model - * @api public - */ - -Model.schema; - -/*! - * Connection instance the model uses. - * - * @property db - * @receiver Model - * @api public - */ - -Model.db; - -/*! - * Collection the model uses. - * - * @property collection - * @receiver Model - * @api public - */ - -Model.collection; - -/** - * Base Mongoose instance the model uses. - * - * @property base - * @receiver Model - * @api public - */ - -Model.base; - -/** - * Removes documents from the collection. - * - * ####Example: - * - * Comment.remove({ title: 'baby born from alien father' }, function (err) { - * - * }); - * - * ####Note: - * - * To remove documents without waiting for a response from MongoDB, do not pass a `callback`, then call `exec` on the returned [Query](#query-js): - * - * var query = Comment.remove({ _id: id }); - * query.exec(); - * - * ####Note: - * - * This method sends a remove command directly to MongoDB, no Mongoose documents are involved. Because no Mongoose documents are involved, _no middleware (hooks) are executed_. - * - * @param {Object} conditions - * @param {Function} [callback] - * @return {Query} - * @api public - */ - -Model.remove = function remove (conditions, callback) { - if ('function' === typeof conditions) { - callback = conditions; - conditions = {}; - } - - var query = new Query(conditions).bind(this, 'remove'); - - if ('undefined' === typeof callback) - return query; - - this._applyNamedScope(query); - return query.remove(callback); -}; - -/** - * Finds documents - * - * The `conditions` are cast to their respective SchemaTypes before the command is sent. - * - * ####Examples: - * - * // named john and at least 18 - * MyModel.find({ name: 'john', age: { $gte: 18 }}); - * - * // executes immediately, passing results to callback - * MyModel.find({ name: 'john', age: { $gte: 18 }}, function (err, docs) {}); - * - * // name LIKE john and only selecting the "name" and "friends" fields, executing immediately - * MyModel.find({ name: /john/i }, 'name friends', function (err, docs) { }) - * - * // passing options - * MyModel.find({ name: /john/i }, null, { skip: 10 }) - * - * // passing options and executing immediately - * MyModel.find({ name: /john/i }, null, { skip: 10 }, function (err, docs) {}); - * - * // executing a query explicitly - * var query = MyModel.find({ name: /john/i }, null, { skip: 10 }) - * query.exec(function (err, docs) {}); - * - * // using the promise returned from executing a query - * var query = MyModel.find({ name: /john/i }, null, { skip: 10 }); - * var promise = query.exec(); - * promise.addBack(function (err, docs) {}); - * - * @param {Object} conditions - * @param {Object} [fields] optional fields to select - * @param {Object} [options] optional - * @param {Function} [callback] - * @return {Query} - * @see field selection #query_Query-select - * @see promise #promise-js - * @api public - */ - -Model.find = function find (conditions, fields, options, callback) { - if ('function' == typeof conditions) { - callback = conditions; - conditions = {}; - fields = null; - options = null; - } else if ('function' == typeof fields) { - callback = fields; - fields = null; - options = null; - } else if ('function' == typeof options) { - callback = options; - options = null; - } - - var query = new Query(conditions, options); - query.bind(this, 'find'); - query.select(fields); - - if ('undefined' === typeof callback) - return query; - - this._applyNamedScope(query); - return query.find(callback); -}; - -/** - * Merges the current named scope query into `query`. - * - * @param {Query} query - * @return {Query} - * @api private - */ - -Model._applyNamedScope = function _applyNamedScope (query) { - var cQuery = this._cumulativeQuery; - - if (cQuery) { - merge(query._conditions, cQuery._conditions); - if (query._fields && cQuery._fields) - merge(query._fields, cQuery._fields); - if (query.options && cQuery.options) - merge(query.options, cQuery.options); - delete this._cumulativeQuery; - } - - return query; -} - -/** - * Finds a single document by id. - * - * The `id` is cast based on the Schema before sending the command. - * - * ####Example: - * - * // find adventure by id and execute immediately - * Adventure.findById(id, function (err, adventure) {}); - * - * // same as above - * Adventure.findById(id).exec(callback); - * - * // select only the adventures name and length - * Adventure.findById(id, 'name length', function (err, adventure) {}); - * - * // same as above - * Adventure.findById(id, 'name length').exec(callback); - * - * // include all properties except for `length` - * Adventure.findById(id, '-length').exec(function (err, adventure) {}); - * - * // passing options (in this case return the raw js objects, not mongoose documents by passing `lean` - * Adventure.findById(id, 'name', { lean: true }, function (err, doc) {}); - * - * // same as above - * Adventure.findById(id, 'name').lean().exec(function (err, doc) {}); - * - * @param {ObjectId|HexId} id objectid, or a value that can be casted to one - * @param {Object} [fields] optional fields to select - * @param {Object} [options] optional - * @param {Function} [callback] - * @return {Query} - * @see field selection #query_Query-select - * @see lean queries #query_Query-lean - * @api public - */ - -Model.findById = function findById (id, fields, options, callback) { - return this.findOne({ _id: id }, fields, options, callback); -}; - -/** - * Finds one document. - * - * The `conditions` are cast to their respective SchemaTypes before the command is sent. - * - * ####Example: - * - * // find one iphone adventures - iphone adventures?? - * Adventure.findOne({ type: 'iphone' }, function (err, adventure) {}); - * - * // same as above - * Adventure.findOne({ type: 'iphone' }).exec(function (err, adventure) {}); - * - * // select only the adventures name - * Adventure.findOne({ type: 'iphone' }, 'name', function (err, adventure) {}); - * - * // same as above - * Adventure.findOne({ type: 'iphone' }, 'name').exec(function (err, adventure) {}); - * - * // specify options, in this case lean - * Adventure.findOne({ type: 'iphone' }, 'name', { lean: true }, callback); - * - * // same as above - * Adventure.findOne({ type: 'iphone' }, 'name', { lean: true }).exec(callback); - * - * // chaining findOne queries (same as above) - * Adventure.findOne({ type: 'iphone' }).select('name').lean().exec(callback); - * - * @param {Object} conditions - * @param {Object} [fields] optional fields to select - * @param {Object} [options] optional - * @param {Function} [callback] - * @return {Query} - * @see field selection #query_Query-select - * @see lean queries #query_Query-lean - * @api public - */ - -Model.findOne = function findOne (conditions, fields, options, callback) { - if ('function' == typeof options) { - callback = options; - options = null; - } else if ('function' == typeof fields) { - callback = fields; - fields = null; - options = null; - } else if ('function' == typeof conditions) { - callback = conditions; - conditions = {}; - fields = null; - options = null; - } - - var query = new Query(conditions, options).select(fields).bind(this, 'findOne'); - - if ('undefined' == typeof callback) - return query; - - this._applyNamedScope(query); - return query.findOne(callback); -}; - -/** - * Counts number of matching documents in a database collection. - * - * ####Example: - * - * Adventure.count({ type: 'jungle' }, function (err, count) { - * if (err) .. - * console.log('there are %d jungle adventures', count); - * }); - * - * @param {Object} conditions - * @param {Function} [callback] - * @return {Query} - * @api public - */ - -Model.count = function count (conditions, callback) { - if ('function' === typeof conditions) - callback = conditions, conditions = {}; - - var query = new Query(conditions).bind(this, 'count'); - if ('undefined' == typeof callback) - return query; - - this._applyNamedScope(query); - return query.count(callback); -}; - -/** - * Executes a DISTINCT command - * - * ####Example - * - * Link.distinct('url', { clicks: {$gt: 100}}, function (err, result) { - * if (err) return handleError(err); - * - * assert(Array.isArray(result)); - * console.log('unique urls with more than 100 clicks', result); - * }) - * - * @param {String} field - * @param {Object} [conditions] optional - * @param {Function} [callback] - * @return {Query} - * @api public - */ - -Model.distinct = function distinct (field, conditions, callback) { - var query = new Query(conditions).bind(this, 'distinct'); - if ('undefined' == typeof callback) { - query._distinctArg = field; - return query; - } - - this._applyNamedScope(query); - return query.distinct(field, callback); -}; - -/** - * Creates a Query, applies the passed conditions, and returns the Query. - * - * For example, instead of writing: - * - * User.find({age: {$gte: 21, $lte: 65}}, callback); - * - * we can instead write: - * - * User.where('age').gte(21).lte(65).exec(callback); - * - * Since the Query class also supports `where` you can continue chaining - * - * User - * .where('age').gte(21).lte(65) - * .where('name', /^b/i) - * ... etc - * - * @param {String} path - * @param {Object} [val] optional value - * @return {Query} - * @api public - */ - -Model.where = function where (path, val) { - var q = new Query().bind(this, 'find'); - return q.where.apply(q, arguments); -}; - -/** - * Creates a `Query` and specifies a `$where` condition. - * - * Sometimes you need to query for things in mongodb using a JavaScript expression. You can do so via `find({ $where: javascript })`, or you can use the mongoose shortcut method $where via a Query chain or from your mongoose Model. - * - * Blog.$where('this.comments.length > 5').exec(function (err, docs) {}); - * - * @param {String|Function} argument is a javascript string or anonymous function - * @method $where - * @memberOf Model - * @return {Query} - * @see Query.$where #query_Query-%24where - * @api public - */ - -Model.$where = function $where () { - var q = new Query().bind(this, 'find'); - return q.$where.apply(q, arguments); -}; - -/** - * Issues a mongodb findAndModify update command. - * - * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. - * - * ####Options: - * - * - `new`: bool - true to return the modified document rather than the original. defaults to true - * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `select`: sets the document fields to return - * - * ####Examples: - * - * A.findOneAndUpdate(conditions, update, options, callback) // executes - * A.findOneAndUpdate(conditions, update, options) // returns Query - * A.findOneAndUpdate(conditions, update, callback) // executes - * A.findOneAndUpdate(conditions, update) // returns Query - * A.findOneAndUpdate() // returns Query - * - * ####Note: - * - * All top level update keys which are not `atomic` operation names are treated as set operations: - * - * ####Example: - * - * var query = { name: 'borne' }; - * Model.findOneAndUpdate(query, { name: 'jason borne' }, options, callback) - * - * // is sent as - * Model.findOneAndUpdate(query, { $set: { name: 'jason borne' }}, options, callback) - * - * This helps prevent accidentally overwriting your document with `{ name: 'jason borne' }`. - * - * ####Note: - * - * Although values are cast to their appropriate types when using the findAndModify helpers, the following are *not* applied: - * - * - defaults - * - setters - * - validators - * - middleware - * - * If you need those features, use the traditional approach of first retrieving the document. - * - * Model.findOne({ name: 'borne' }, function (err, doc) { - * if (err) .. - * doc.name = 'jason borne'; - * doc.save(callback); - * }) - * - * @param {Object} [conditions] - * @param {Object} [update] - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - * @api public - */ - -Model.findOneAndUpdate = function (conditions, update, options, callback) { - if ('function' == typeof options) { - callback = options; - options = null; - } - else if (1 === arguments.length) { - if ('function' == typeof conditions) { - var msg = 'Model.findOneAndUpdate(): First argument must not be a function.\n\n' - + ' ' + this.modelName + '.findOneAndUpdate(conditions, update, options, callback)\n' - + ' ' + this.modelName + '.findOneAndUpdate(conditions, update, options)\n' - + ' ' + this.modelName + '.findOneAndUpdate(conditions, update)\n' - + ' ' + this.modelName + '.findOneAndUpdate(update)\n' - + ' ' + this.modelName + '.findOneAndUpdate()\n'; - throw new TypeError(msg) - } - update = conditions; - conditions = undefined; - } - - var fields; - if (options && options.fields) { - fields = options.fields; - options.fields = undefined; - } - - var query = new Query(conditions); - query.setOptions(options); - query.select(fields); - query.bind(this, 'findOneAndUpdate', update); - - if ('undefined' == typeof callback) - return query; - - this._applyNamedScope(query); - return query.findOneAndUpdate(callback); -} - -/** - * Issues a mongodb findAndModify update command by a documents id. - * - * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. - * - * ####Options: - * - * - `new`: bool - true to return the modified document rather than the original. defaults to true - * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `select`: sets the document fields to return - * - * ####Examples: - * - * A.findByIdAndUpdate(id, update, options, callback) // executes - * A.findByIdAndUpdate(id, update, options) // returns Query - * A.findByIdAndUpdate(id, update, callback) // executes - * A.findByIdAndUpdate(id, update) // returns Query - * A.findByIdAndUpdate() // returns Query - * - * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. - * - * ####Options: - * - * - `new`: bool - true to return the modified document rather than the original. defaults to true - * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - * ####Note: - * - * All top level update keys which are not `atomic` operation names are treated as set operations: - * - * ####Example: - * - * Model.findByIdAndUpdate(id, { name: 'jason borne' }, options, callback) - * - * // is sent as - * Model.findByIdAndUpdate(id, { $set: { name: 'jason borne' }}, options, callback) - * - * This helps prevent accidentally overwriting your document with `{ name: 'jason borne' }`. - * - * ####Note: - * - * Although values are cast to their appropriate types when using the findAndModify helpers, the following are *not* applied: - * - * - defaults - * - setters - * - validators - * - middleware - * - * If you need those features, use the traditional approach of first retrieving the document. - * - * Model.findById(id, function (err, doc) { - * if (err) .. - * doc.name = 'jason borne'; - * doc.save(callback); - * }) - * - * @param {ObjectId|HexId} id an ObjectId or string that can be cast to one. - * @param {Object} [update] - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} - * @see Model.findOneAndUpdate #model_Model.findOneAndUpdate - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - * @api public - */ - -Model.findByIdAndUpdate = function (id, update, options, callback) { - var args; - - if (1 === arguments.length) { - if ('function' == typeof id) { - var msg = 'Model.findByIdAndUpdate(): First argument must not be a function.\n\n' - + ' ' + this.modelName + '.findByIdAndUpdate(id, callback)\n' - + ' ' + this.modelName + '.findByIdAndUpdate(id)\n' - + ' ' + this.modelName + '.findByIdAndUpdate()\n'; - throw new TypeError(msg) - } - return this.findOneAndUpdate({_id: id }, undefined); - } - - args = utils.args(arguments, 1); - args.unshift({ _id: id }); - return this.findOneAndUpdate.apply(this, args); -} - -/** - * Issue a mongodb findAndModify remove command. - * - * Finds a matching document, removes it, passing the found document (if any) to the callback. - * - * Executes immediately if `callback` is passed else a Query object is returned. - * - * ####Options: - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `select`: sets the document fields to return - * - * ####Examples: - * - * A.findOneAndRemove(conditions, options, callback) // executes - * A.findOneAndRemove(conditions, options) // return Query - * A.findOneAndRemove(conditions, callback) // executes - * A.findOneAndRemove(conditions) // returns Query - * A.findOneAndRemove() // returns Query - * - * @param {Object} conditions - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - * @api public - */ - -Model.findOneAndRemove = function (conditions, options, callback) { - if (1 === arguments.length && 'function' == typeof conditions) { - var msg = 'Model.findOneAndRemove(): First argument must not be a function.\n\n' - + ' ' + this.modelName + '.findOneAndRemove(conditions, callback)\n' - + ' ' + this.modelName + '.findOneAndRemove(conditions)\n' - + ' ' + this.modelName + '.findOneAndRemove()\n'; - throw new TypeError(msg) - } - - if ('function' == typeof options) { - callback = options; - options = undefined; - } - - var fields; - if (options) { - fields = options.select; - options.select = undefined; - } - - var query = new Query(conditions); - query.setOptions(options); - query.select(fields); - query.bind(this, 'findOneAndRemove'); - - if ('undefined' == typeof callback) - return query; - - this._applyNamedScope(query); - return query.findOneAndRemove(callback); -} - -/** - * Issue a mongodb findAndModify remove command by a documents id. - * - * Finds a matching document, removes it, passing the found document (if any) to the callback. - * - * Executes immediately if `callback` is passed, else a `Query` object is returned. - * - * ####Options: - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - `select`: sets the document fields to return - * - * ####Examples: - * - * A.findByIdAndRemove(id, options, callback) // executes - * A.findByIdAndRemove(id, options) // return Query - * A.findByIdAndRemove(id, callback) // executes - * A.findByIdAndRemove(id) // returns Query - * A.findByIdAndRemove() // returns Query - * - * @param {ObjectId|HexString} id ObjectId or string that can be cast to one - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} - * @see Model.findOneAndRemove #model_Model.findOneAndRemove - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - */ - -Model.findByIdAndRemove = function (id, options, callback) { - if (1 === arguments.length && 'function' == typeof id) { - var msg = 'Model.findByIdAndRemove(): First argument must not be a function.\n\n' - + ' ' + this.modelName + '.findByIdAndRemove(id, callback)\n' - + ' ' + this.modelName + '.findByIdAndRemove(id)\n' - + ' ' + this.modelName + '.findByIdAndRemove()\n'; - throw new TypeError(msg) - } - - return this.findOneAndRemove({ _id: id }, options, callback); -} - -/** - * Shortcut for creating a new Document that is automatically saved to the db if valid. - * - * ####Example: - * - * Candy.create({ type: 'jelly bean' }, { type: 'snickers' }, function (err, jellybean, snickers) { - * if (err) // ... - * }); - * - * var array = [{ type: 'jelly bean' }, { type: 'snickers' }]; - * Candy.create(array, function (err, jellybean, snickers) { - * if (err) // ... - * }); - * - * @param {Array|Object...} doc - * @param {Function} fn callback - * @api public - */ - -Model.create = function create (doc, fn) { - if (1 === arguments.length) { - return 'function' === typeof doc && doc(null); - } - - var self = this - , docs = [null] - , promise - , count - , args - - if (Array.isArray(doc)) { - args = doc; - } else { - args = utils.args(arguments, 0, arguments.length - 1); - fn = arguments[arguments.length - 1]; - } - - if (0 === args.length) return fn(null); - - promise = new Promise(fn); - count = args.length; - - args.forEach(function (arg, i) { - var doc = new self(arg); - docs[i+1] = doc; - doc.save(function (err) { - if (err) return promise.error(err); - --count || fn.apply(null, docs); - }); - }); -}; - -/** - * Updates documents in the database without returning them. - * - * ####Examples: - * - * MyModel.update({ age: { $gt: 18 } }, { oldEnough: true }, fn); - * MyModel.update({ name: 'Tobi' }, { ferret: true }, { multi: true }, function (err, numberAffected, raw) { - * if (err) return handleError(err); - * console.log('The number of updated documents was %d', numberAffected); - * console.log('The raw response from Mongo was ', raw); - * }); - * - * ####Valid options: - * - * - `safe` (boolean) safe mode (defaults to value set in schema (true)) - * - `upsert` (boolean) whether to create the doc if it doesn't match (false) - * - `multi` (boolean) whether multiple documents should be updated (false) - * - `strict` (boolean) overrides the `strict` option for this update - * - * All `update` values are cast to their appropriate SchemaTypes before being sent. - * - * The `callback` function receives `(err, numberAffected, rawResponse)`. - * - * - `err` is the error if any occurred - * - `numberAffected` is the count of updated documents Mongo reported - * - `rawResponse` is the full response from Mongo - * - * ####Note: - * - * All top level keys which are not `atomic` operation names are treated as set operations: - * - * ####Example: - * - * var query = { name: 'borne' }; - * Model.update(query, { name: 'jason borne' }, options, callback) - * - * // is sent as - * Model.update(query, { $set: { name: 'jason borne' }}, options, callback) - * - * This helps prevent accidentally overwriting all documents in your collection with `{ name: 'jason borne' }`. - * - * ####Note: - * - * To update documents without waiting for a response from MongoDB, do not pass a `callback`, then call `exec` on the returned [Query](#query-js): - * - * Comment.update({ _id: id }, { $set: { text: 'changed' }}).exec(); - * - * ####Note: - * - * Although values are casted to their appropriate types when using update, the following are *not* applied: - * - * - defaults - * - setters - * - validators - * - middleware - * - * If you need those features, use the traditional approach of first retrieving the document. - * - * Model.findOne({ name: 'borne' }, function (err, doc) { - * if (err) .. - * doc.name = 'jason borne'; - * doc.save(callback); - * }) - * - * @see strict schemas http://mongoosejs.com/docs/guide.html#strict - * @param {Object} conditions - * @param {Object} update - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} - * @api public - */ - -Model.update = function update (conditions, doc, options, callback) { - if (arguments.length < 4) { - if ('function' === typeof options) { - // Scenario: update(conditions, doc, callback) - callback = options; - options = null; - } else if ('function' === typeof doc) { - // Scenario: update(doc, callback); - callback = doc; - doc = conditions; - conditions = {}; - options = null; - } - } - - var query = new Query(conditions, options).bind(this, 'update', doc); - - if ('undefined' == typeof callback) - return query; - - this._applyNamedScope(query); - return query.update(doc, callback); -}; - -/** - * Executes a mapReduce command. - * - * `o` is an object specifying all mapReduce options as well as the map and reduce functions. All options are delegated to the driver implementation. - * - * ####Example: - * - * var o = {}; - * o.map = function () { emit(this.name, 1) } - * o.reduce = function (k, vals) { return vals.length } - * User.mapReduce(o, function (err, results) { - * console.log(results) - * }) - * - * ####Other options: - * - * - `query` {Object} query filter object. - * - `limit` {Number} max number of documents - * - `keeptemp` {Boolean, default:false} keep temporary data - * - `finalize` {Function} finalize function - * - `scope` {Object} scope variables exposed to map/reduce/finalize during execution - * - `jsMode` {Boolean, default:false} it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X - * - `verbose` {Boolean, default:false} provide statistics on job execution time. - * - `out*` {Object, default: {inline:1}} sets the output target for the map reduce job. - * - * ####* out options: - * - * - `{inline:1}` the results are returned in an array - * - `{replace: 'collectionName'}` add the results to collectionName: the results replace the collection - * - `{reduce: 'collectionName'}` add the results to collectionName: if dups are detected, uses the reducer / finalize functions - * - `{merge: 'collectionName'}` add the results to collectionName: if dups exist the new docs overwrite the old - * - * If `options.out` is set to `replace`, `merge`, or `reduce`, a Model instance is returned that can be used for further querying. Queries run against this model are all executed with the `lean` option; meaning only the js object is returned and no Mongoose magic is applied (getters, setters, etc). - * - * ####Example: - * - * var o = {}; - * o.map = function () { emit(this.name, 1) } - * o.reduce = function (k, vals) { return vals.length } - * o.out = { replace: 'createdCollectionNameForResults' } - * o.verbose = true; - * User.mapReduce(o, function (err, model, stats) { - * console.log('map reduce took %d ms', stats.processtime) - * model.find().where('value').gt(10).exec(function (err, docs) { - * console.log(docs); - * }); - * }) - * - * @param {Object} o an object specifying map-reduce options - * @param {Function} callback - * @see http://www.mongodb.org/display/DOCS/MapReduce - * @api public - */ - -Model.mapReduce = function mapReduce (o, callback) { - if ('function' != typeof callback) throw new Error('missing callback'); - - var self = this; - - if (!Model.mapReduce.schema) { - var opts = { noId: true, noVirtualId: true, strict: false } - Model.mapReduce.schema = new Schema({}, opts); - } - - if (!o.out) o.out = { inline: 1 }; - - o.map = String(o.map); - o.reduce = String(o.reduce); - - if (o.query) { - var q = new Query(o.query); - q.cast(this); - o.query = q._conditions; - q = undefined; - } - - this.collection.mapReduce(null, null, o, function (err, ret, stats) { - if (err) return callback(err); - - if (ret.findOne && ret.mapReduce) { - // returned a collection, convert to Model - var model = Model.compile( - '_mapreduce_' + ret.collectionName - , Model.mapReduce.schema - , ret.collectionName - , self.db - , self.base); - - model._mapreduce = true; - - return callback(err, model, stats); - } - - callback(err, ret, stats); - }); -} - -/** - * Executes an aggregate command on this models collection. - * - * ####Example: - * - * // find the max age of all users - * Users.aggregate( - * { $group: { _id: null, maxAge: { $max: '$age' }}} - * , { $project: { _id: 0, maxAge: 1 }} - * , function (err, res) { - * if (err) return handleError(err); - * console.log(res); // [ { maxAge: 98 } ] - * }); - * - * ####NOTE: - * - * - At this time, arguments are not cast to the schema because $project operators allow redefining the "shape" of the documents at any stage of the pipeline. - * - The documents returned are plain javascript objects, not mongoose documents cast to this models schema definition (since any shape of document can be returned). - * - Requires MongoDB >= 2.1 - * - * @param {Array} array an array of pipeline commands - * @param {Object} [options] - * @param {Function} callback - * @see aggregation http://docs.mongodb.org/manual/applications/aggregation/ - * @see driver http://mongodb.github.com/node-mongodb-native/api-generated/collection.html#aggregate - * @api public - */ - -Model.aggregate = function aggregate () { - return this.collection.aggregate.apply(this.collection, arguments); -} - -/** - * Populates document references. - * - * ####Available options: - * - * - path: space delimited path(s) to populate - * - select: optional fields to select - * - match: optional query conditions to match - * - model: optional name of the model to use for population - * - options: optional query options like sort, limit, etc - * - * ####Examples: - * - * // populates a single object - * User.findById(id, function (err, user) { - * var opts = [ - * { path: 'company', match: { x: 1 }, select: 'name' } - * , { path: 'notes', options: { limit: 10 }, model: 'override' } - * ] - * - * User.populate(user, opts, function (err, user) { - * console.log(user); - * }) - * }) - * - * // populates an array of objects - * User.find(match, function (err, users) { - * var opts = [{ path: 'company', match: { x: 1 }, select: 'name' }] - * - * User.populate(users, opts, function (err, user) { - * console.log(user); - * }) - * }) - * - * // imagine a Weapon model exists with two saved documents: - * // { _id: 389, name: 'whip' } - * // { _id: 8921, name: 'boomerang' } - * - * var user = { name: 'Indiana Jones', weapon: 389 } - * Weapon.populate(user, { path: 'weapon', model: 'Weapon' }, function (err, user) { - * console.log(user.weapon.name) // whip - * }) - * - * // populate many plain objects - * var users = [{ name: 'Indiana Jones', weapon: 389 }] - * users.push({ name: 'Batman', weapon: 8921 }) - * Weapon.populate(users, { path: 'weapon' }, function (err, users) { - * users.forEach(function (user) { - * console.log('%s uses a %s', users.name, user.weapon.name) - * // Indiana Jones uses a whip - * // Batman uses a boomerang - * }) - * }) - * // Note that we didn't need to specify the Weapon model because - * // we were already using it's populate() method. - * - * @param {Document|Array} docs Either a single document or array of documents to populate. - * @param {Object} options A hash of key/val (path, options) used for population. - * @param {Function} cb(err,doc) A callback, executed upon completion. Receives `err` and the `doc(s)`. - * @api public - */ - -Model.populate = function (docs, paths, cb) { - assert.equal('function', typeof cb); - - // always callback on nextTick for consistent async behavior - function callback () { - var args = utils.args(arguments); - process.nextTick(function () { - cb.apply(null, args); - }); - } - - // normalized paths - var paths = utils.populate(paths); - var pending = paths.length; - - if (0 === pending) { - return callback(null, docs); - } - - // each path has its own query options and must be executed separately - var i = pending; - var path; - while (i--) { - path = paths[i]; - populate(this, docs, path, next); - } - - function next (err) { - if (next.err) return; - if (err) return callback(next.err = err); - if (--pending) return; - callback(null, docs); - } -} - -/*! - * Prepare population options - */ - -function populate (model, docs, options, cb) { - var path = options.path - var schema = model._getSchema(path); - - // handle document arrays - if (schema && schema.caster) { - schema = schema.caster; - } - - // model name for the populate query - var modelName = options.model && options.model.modelName - || options.model // query options - || schema && schema.options.ref // declared in schema - || model.modelName // an ad-hoc structure - - var Model = model.db.model(modelName); - - // expose the model used - options.model = Model; - - // normalize single / multiple docs passed - if (!Array.isArray(docs)) { - docs = [docs]; - } - - if (0 === docs.length || docs.every(utils.isNullOrUndefined)) { - return cb(); - } - - populateDocs(docs, options, cb); -} - -/*! - * Populates `docs` - */ - -function populateDocs (docs, options, cb) { - var select = options.select; - var match = options.match; - var path = options.path; - var Model = options.model; - - var rawIds = []; - var i, doc, id; - var len = docs.length; - var found = 0; - var isDocument; - var subpath; - var ret; - - for (i = 0; i < len; i++) { - ret = undefined; - doc = docs[i]; - id = String(utils.getValue("_id", doc)); - isDocument = !! doc.$__; - - if (isDocument && !doc.isModified(path)) { - // it is possible a previously populated path is being - // populated again. because users can specify matcher - // clauses in their populate arguments we use the cached - // _ids from the original populate call to ensure all _ids - // are looked up, but only if the path wasn't modified which - // signifies the users intent of the state of the path. - ret = doc.populated(path); - } - - if (!ret || Array.isArray(ret) && 0 === ret.length) { - ret = utils.getValue(path, doc); - } - - if (ret) { - // previously we always assigned this even if the document had no _id - options._docs[id] = Array.isArray(ret) - ? ret.slice() - : ret; - } - - // always retain original values, even empty values. these are - // used to map the query results back to the correct position. - rawIds.push(ret); - - if (isDocument) { - // cache original populated _ids and model used - doc.populated(path, options._docs[id], options); - } - } - - var ids = utils.array.flatten(rawIds, function (item) { - // no need to include undefined values in our query - return undefined !== item; - }); - - if (0 === ids.length || ids.every(utils.isNullOrUndefined)) { - return cb(); - } - - // preserve original match conditions by copying - if (match) { - match = utils.object.shallowCopy(match); - } else { - match = {}; - } - - match._id || (match._id = { $in: ids }); - - var assignmentOpts = {}; - assignmentOpts.sort = options.options && options.options.sort || undefined; - assignmentOpts.excludeId = /\s?-_id\s?/.test(select) || (select && 0 === select._id); - - if (assignmentOpts.excludeId) { - // override the exclusion from the query so we can use the _id - // for document matching during assignment. we'll delete the - // _id back off before returning the result. - if ('string' == typeof select) { - select = null; - } else { - // preserve original select conditions by copying - select = utils.object.shallowCopy(select); - delete select._id; - } - } - - Model.find(match, select, options.options, function (err, vals) { - if (err) return cb(err); - - var lean = options.options && options.options.lean; - var len = vals.length; - var rawOrder = {}; - var rawDocs = {} - var key; - var val; - - // optimization: - // record the document positions as returned by - // the query result. - for (var i = 0; i < len; i++) { - val = vals[i]; - key = String(utils.getValue('_id', val)); - rawDocs[key] = val; - rawOrder[key] = i; - - // flag each as result of population - if (!lean) val.$__.wasPopulated = true; - } - - assignVals({ - rawIds: rawIds, - rawDocs: rawDocs, - rawOrder: rawOrder, - docs: docs, - path: path, - options: assignmentOpts - }); - - cb(); - }); -} - -/*! - * Assigns documents returned from a population query back - * to the original document path. - */ - -function assignVals (o) { - // replace the original ids in our intermediate _ids structure - // with the documents found by query - - assignRawDocsToIdStructure(o.rawIds, o.rawDocs, o.rawOrder, o.options); - - // now update the original documents being populated using the - // result structure that contains real documents. - - var docs = o.docs; - var path = o.path; - var rawIds = o.rawIds; - var options = o.options; - - for (var i = 0; i < docs.length; ++i) { - utils.setValue(path, rawIds[i], docs[i], function (val) { - return valueFilter(val, options); - }); - } -} - -/*! - * 1) Apply backwards compatible find/findOne behavior to sub documents - * - * find logic: - * a) filter out non-documents - * b) remove _id from sub docs when user specified - * - * findOne - * a) if no doc found, set to null - * b) remove _id from sub docs when user specified - * - * 2) Remove _ids when specified by users query. - * - * background: - * _ids are left in the query even when user excludes them so - * that population mapping can occur. - */ - -function valueFilter (val, assignmentOpts) { - if (Array.isArray(val)) { - // find logic - var ret = []; - for (var i = 0; i < val.length; ++i) { - var subdoc = val[i]; - if (!isDoc(subdoc)) continue; - maybeRemoveId(subdoc, assignmentOpts); - ret.push(subdoc); - } - return ret; - } - - // findOne - if (isDoc(val)) { - maybeRemoveId(val, assignmentOpts); - return val; - } - - return null; -} - -/*! - * Remove _id from `subdoc` if user specified "lean" query option - */ - -function maybeRemoveId (subdoc, assignmentOpts) { - if (assignmentOpts.excludeId) { - if ('function' == typeof subdoc.setValue) { - subdoc.setValue('_id', undefined); - } else { - delete subdoc._id; - } - } -} - -/*! - * Determine if `doc` is a document returned - * by a populate query. - */ - -function isDoc (doc) { - if (null == doc) - return false; - - var type = typeof doc; - if ('string' == type) - return false; - - if ('number' == type) - return false; - - if (Buffer.isBuffer(doc)) - return false; - - if ('ObjectID' == doc.constructor.name) - return false; - - // only docs - return true; -} - -/*! - * Assign `vals` returned by mongo query to the `rawIds` - * structure returned from utils.getVals() honoring - * query sort order if specified by user. - * - * This can be optimized. - * - * Rules: - * - * if the value of the path is not an array, use findOne rules, else find. - * for findOne the results are assigned directly to doc path (including null results). - * for find, if user specified sort order, results are assigned directly - * else documents are put back in original order of array if found in results - * - * @param {Array} rawIds - * @param {Array} vals - * @param {Boolean} sort - * @api private - */ - -function assignRawDocsToIdStructure (rawIds, resultDocs, resultOrder, options, recursed) { - // honor user specified sort order - var newOrder = []; - var sorting = options.sort && rawIds.length > 1; - var found; - var doc; - var sid; - var id; - - for (var i = 0; i < rawIds.length; ++i) { - id = rawIds[i]; - - if (Array.isArray(id)) { - // handle [ [id0, id2], [id3] ] - assignRawDocsToIdStructure(id, resultDocs, resultOrder, options, true); - newOrder.push(id); - continue; - } - - if (null === id && !sorting) { - // keep nulls for findOne unless sorting, which always - // removes them (backward compat) - newOrder.push(id); - continue; - } - - sid = String(id); - found = false; - - if (recursed) { - // apply find behavior - - // assign matching documents in original order unless sorting - doc = resultDocs[sid]; - if (doc) { - if (sorting) { - newOrder[resultOrder[sid]] = doc; - } else { - newOrder.push(doc); - } - } else { - newOrder.push(id); - } - } else { - // apply findOne behavior - if document in results, assign, else assign null - newOrder[i] = doc = resultDocs[sid] || null; - } - } - - rawIds.length = 0; - if (newOrder.length) { - // reassign the documents based on corrected order - - // forEach skips over sparse entries in arrays so we - // can safely use this to our advantage dealing with sorted - // result sets too. - newOrder.forEach(function (doc, i) { - rawIds[i] = doc; - }); - } -} - -/** - * Finds the schema for `path`. This is different than - * calling `schema.path` as it also resolves paths with - * positional selectors (something.$.another.$.path). - * - * @param {String} path - * @return {Schema} - * @api private - */ - -Model._getSchema = function _getSchema (path) { - var schema = this.schema - , pathschema = schema.path(path); - - if (pathschema) - return pathschema; - - // look for arrays - return (function search (parts, schema) { - var p = parts.length + 1 - , foundschema - , trypath - - while (p--) { - trypath = parts.slice(0, p).join('.'); - foundschema = schema.path(trypath); - if (foundschema) { - if (foundschema.caster) { - - // array of Mixed? - if (foundschema.caster instanceof Types.Mixed) { - return foundschema.caster; - } - - // Now that we found the array, we need to check if there - // are remaining document paths to look up for casting. - // Also we need to handle array.$.path since schema.path - // doesn't work for that. - if (p !== parts.length) { - if ('$' === parts[p]) { - // comments.$.comments.$.title - return search(parts.slice(p+1), foundschema.schema); - } else { - // this is the last path of the selector - return search(parts.slice(p), foundschema.schema); - } - } - } - return foundschema; - } - } - })(path.split('.'), schema) -} - -/*! - * Compiler utility. - * - * @param {String} name model name - * @param {Schema} schema - * @param {String} collectionName - * @param {Connection} connection - * @param {Mongoose} base mongoose instance - */ - -Model.compile = function compile (name, schema, collectionName, connection, base) { - var versioningEnabled = false !== schema.options.versionKey; - - if (versioningEnabled && !schema.paths[schema.options.versionKey]) { - // add versioning to top level documents only - var o = {}; - o[schema.options.versionKey] = Number; - schema.add(o); - } - - // generate new class - function model (doc, fields, skipId) { - if (!(this instanceof model)) - return new model(doc, fields, skipId); - Model.call(this, doc, fields, skipId); - }; - - model.base = base; - model.modelName = name; - model.__proto__ = Model; - model.prototype.__proto__ = Model.prototype; - model.model = Model.prototype.model; - model.db = model.prototype.db = connection; - - model.prototype.$__setSchema(schema); - - var collectionOptions = { - bufferCommands: schema.options.bufferCommands - , capped: schema.options.capped - }; - - model.prototype.collection = connection.collection( - collectionName - , collectionOptions - ); - - // apply methods - for (var i in schema.methods) - model.prototype[i] = schema.methods[i]; - - // apply statics - for (var i in schema.statics) - model[i] = schema.statics[i]; - - // apply named scopes - if (schema.namedScopes) schema.namedScopes.compile(model); - - model.schema = model.prototype.schema; - model.options = model.prototype.options; - model.collection = model.prototype.collection; - - return model; -}; - -/*! - * Subclass this model with `conn`, `schema`, and `collection` settings. - * - * @param {Connection} conn - * @param {Schema} [schema] - * @param {String} [collection] - * @return {Model} - */ - -Model.__subclass = function subclass (conn, schema, collection) { - // subclass model using this connection and collection name - var model = this; - - var Model = function Model (doc, fields, skipId) { - if (!(this instanceof Model)) { - return new Model(doc, fields, skipId); - } - model.call(this, doc, fields, skipId); - } - - Model.__proto__ = model; - Model.prototype.__proto__ = model.prototype; - Model.db = Model.prototype.db = conn; - - var s = schema && 'string' != typeof schema - ? schema - : model.prototype.schema; - - if (!collection) { - collection = model.prototype.schema.get('collection') - || utils.toCollectionName(model.modelName); - } - - var collectionOptions = { - bufferCommands: s ? s.options.bufferCommands : true - , capped: s && s.options.capped - }; - - Model.prototype.collection = conn.collection(collection, collectionOptions); - Model.collection = Model.prototype.collection; - Model.init(); - return Model; -} - -/*! - * Module exports. - */ - -module.exports = exports = Model; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js deleted file mode 100644 index 1b3f5d4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/namedscope.js +++ /dev/null @@ -1,70 +0,0 @@ -var Query = require('./query'); -function NamedScope () {} - -NamedScope.prototype.query; - -NamedScope.prototype.where = function () { - var q = this.query || (this.query = new Query()); - q.where.apply(q, arguments); - return q; -}; - -/** - * Decorate - * - * @param {NamedScope} target - * @param {Object} getters - * @api private - */ - -NamedScope.prototype.decorate = function (target, getters) { - var name = this.name - , block = this.block - , query = this.query; - if (block) { - if (block.length === 0) { - Object.defineProperty(target, name, { - get: getters.block0(block) - }); - } else { - target[name] = getters.blockN(block); - } - } else { - Object.defineProperty(target, name, { - get: getters.basic(query) - }); - } -}; - -NamedScope.prototype.compile = function (model) { - var allScopes = this.scopesByName - , scope; - for (var k in allScopes) { - scope = allScopes[k]; - scope.decorate(model, { - block0: function (block) { - return function () { - var cquery = this._cumulativeQuery || (this._cumulativeQuery = new Query().bind(this)); - block.call(cquery); - return this; - }; - }, - blockN: function (block) { - return function () { - var cquery = this._cumulativeQuery || (this._cumulativeQuery = new Query().bind(this)); - block.apply(cquery, arguments); - return this; - }; - }, - basic: function (query) { - return function () { - var cquery = this._cumulativeQuery || (this._cumulativeQuery = new Query().bind(this)); - cquery.find(query); - return this; - }; - } - }); - } -}; - -module.exports = NamedScope; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js deleted file mode 100644 index 20ab42a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/promise.js +++ /dev/null @@ -1,231 +0,0 @@ - -/*! - * Module dependencies - */ - -var MPromise = require('mpromise'); - -/** - * Promise constructor. - * - * Promises are returned from executed queries. Example: - * - * var query = Candy.find({ bar: true }); - * var promise = query.exec(); - * - * @param {Function} fn a function which will be called when the promise is resolved that accepts `fn(err, ...){}` as signature - * @inherits mpromise https://github.com/aheckmann/mpromise - * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `err`: Emits when the promise is rejected - * @event `complete`: Emits when the promise is fulfilled - * @api public - */ - -function Promise (fn) { - MPromise.call(this, fn); -} - -/*! - * Inherit from mpromise - */ - -Promise.prototype = Object.create(MPromise.prototype, { - constructor: { - value: Promise - , enumerable: false - , writable: true - , configurable: true - } -}); - -/*! - * Override event names for backward compatibility. - */ - -Promise.SUCCESS = 'complete'; -Promise.FAILURE = 'err'; - -/** - * Adds `listener` to the `event`. - * - * If `event` is either the success or failure event and the event has already been emitted, the`listener` is called immediately and passed the results of the original emitted event. - * - * @see mpromise#on https://github.com/aheckmann/mpromise#on - * @method on - * @memberOf Promise - * @param {String} event - * @param {Function} listener - * @return {Promise} this - * @api public - */ - -/** - * Rejects this promise with `reason`. - * - * If the promise has already been fulfilled or rejected, not action is taken. - * - * @see mpromise#reject https://github.com/aheckmann/mpromise#reject - * @method reject - * @memberOf Promise - * @param {Object|String|Error} reason - * @return {Promise} this - * @api public - */ - -/** - * Rejects this promise with `err`. - * - * If the promise has already been fulfilled or rejected, not action is taken. - * - * Differs from [#reject](#promise_Promise-reject) by first casting `err` to an `Error` if it is not `instanceof Error`. - * - * @api public - * @param {Error|String} err - * @return {Promise} this - */ - -Promise.prototype.error = function (err) { - if (!(err instanceof Error)) err = new Error(err); - return this.reject(err); -} - -/** - * Resolves this promise to a rejected state if `err` is passed or a fulfilled state if no `err` is passed. - * - * If the promise has already been fulfilled or rejected, not action is taken. - * - * `err` will be cast to an Error if not already instanceof Error. - * - * _NOTE: overrides [mpromise#resolve](https://github.com/aheckmann/mpromise#resolve) to provide error casting._ - * - * @param {Error} [err] error or null - * @param {Object} [val] value to fulfill the promise with - * @api public - */ - -Promise.prototype.resolve = function (err, val) { - if (err) return this.error(err); - return this.fulfill(val); -} - -/** - * Adds a single function as a listener to both err and complete. - * - * It will be executed with traditional node.js argument position when the promise is resolved. - * - * promise.addBack(function (err, args...) { - * if (err) return handleError(err); - * console.log('success'); - * }) - * - * Alias of [mpromise#onResolve](https://github.com/aheckmann/mpromise#onresolve). - * - * @method addBack - * @param {Function} listener - * @return {Promise} this - */ - -Promise.prototype.addBack = Promise.prototype.onResolve; - -/** - * Fulfills this promise with passed arguments. - * - * Alias of [mpromise#fulfill](https://github.com/aheckmann/mpromise#fulfill). - * - * @method complete - * @param {any} args - * @api public - */ - -Promise.prototype.complete = MPromise.prototype.fulfill; - -/** - * Adds a listener to the `complete` (success) event. - * - * Alias of [mpromise#onFulfill](https://github.com/aheckmann/mpromise#onfulfill). - * - * @method addCallback - * @param {Function} listener - * @return {Promise} this - * @api public - */ - -Promise.prototype.addCallback = Promise.prototype.onFulfill; - -/** - * Adds a listener to the `err` (rejected) event. - * - * Alias of [mpromise#onReject](https://github.com/aheckmann/mpromise#onreject). - * - * @method addErrback - * @param {Function} listener - * @return {Promise} this - * @api public - */ - -Promise.prototype.addErrback = Promise.prototype.onReject; - -/** - * Creates a new promise and returns it. If `onFulfill` or `onReject` are passed, they are added as SUCCESS/ERROR callbacks to this promise after the nextTick. - * - * Conforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification. - * - * ####Example: - * - * var promise = Meetups.find({ tags: 'javascript' }).select('_id').exec(); - * promise.then(function (meetups) { - * var ids = meetups.map(function (m) { - * return m._id; - * }); - * return People.find({ meetups: { $in: ids }).exec(); - * }).then(function (people) { - * if (people.length < 10000) { - * throw new Error('Too few people!!!'); - * } else { - * throw new Error('Still need more people!!!'); - * } - * }).then(null, function (err) { - * assert.ok(err instanceof Error); - * }); - * - * @see promises-A+ https://github.com/promises-aplus/promises-spec - * @see mpromise#then https://github.com/aheckmann/mpromise#then - * @method then - * @memberOf Promise - * @param {Function} onFulFill - * @param {Function} onReject - * @return {Promise} newPromise - */ - -/** - * Signifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught. - * - * ####Example: - * - * var p = new Promise; - * p.then(function(){ throw new Error('shucks') }); - * setTimeout(function () { - * p.fulfill(); - * // error was caught and swallowed by the promise returned from - * // p.then(). we either have to always register handlers on - * // the returned promises or we can do the following... - * }, 10); - * - * // this time we use .end() which prevents catching thrown errors - * var p = new Promise; - * var p2 = p.then(function(){ throw new Error('shucks') }).end(); // <-- - * setTimeout(function () { - * p.fulfill(); // throws "shucks" - * }, 10); - * - * @api public - * @see mpromise#end https://github.com/aheckmann/mpromise#end - * @method end - * @memberOf Promise - */ - -/*! - * expose - */ - -module.exports = Promise; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js deleted file mode 100644 index 9f052e8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/query.js +++ /dev/null @@ -1,2608 +0,0 @@ -/*! - * Module dependencies. - */ - -var utils = require('./utils') - , merge = utils.merge - , Promise = require('./promise') - , Document = require('./document') - , Types = require('./schema/index') - , inGroupsOf = utils.inGroupsOf - , tick = utils.tick - , QueryStream = require('./querystream') - , helpers = require('./queryhelpers') - , ReadPref = require('mongodb').ReadPreference - -/** - * Query constructor used for building queries. - * - * ####Example: - * - * var query = Model.find(); - * query.where('age').gte(21).exec(callback); - * - * @param {Object} criteria - * @param {Object} options - * @api public - */ - -function Query (criteria, options) { - this.setOptions(options, true); - this._conditions = {}; - this._updateArg = {}; - this._fields = undefined; - this._geoComparison = undefined; - if (criteria) this.find(criteria); -} - -/** - * Sets query options. - * - * ####Options: - * - * - [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors) * - * - [sort](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsort(\)%7D%7D) * - * - [limit](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Blimit%28%29%7D%7D) * - * - [skip](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bskip%28%29%7D%7D) * - * - [maxscan](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24maxScan) * - * - [batchSize](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7BbatchSize%28%29%7D%7D) * - * - [comment](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24comment) * - * - [snapshot](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%7B%7Bsnapshot%28%29%7D%7D) * - * - [hint](http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24hint) * - * - [slaveOk](http://docs.mongodb.org/manual/applications/replication/#read-preference) * - * - [lean](./api.html#query_Query-lean) * - * - [safe](http://www.mongodb.org/display/DOCS/getLastError+Command) - * - * _* denotes a query helper method is also available_ - * - * @param {Object} options - * @api public - */ - -Query.prototype.setOptions = function (options, overwrite) { - // overwrite is internal use only - if (overwrite) { - options = this.options = options || {}; - this.safe = options.safe; - if ('populate' in options) { - this.populate(this.options.populate); - } - return this; - } - - if (!(options && 'Object' == options.constructor.name)) - return this; - - if ('safe' in options) - this.safe = options.safe; - - // set arbitrary options - var methods = Object.keys(options) - , i = methods.length - , method - - while (i--) { - method = methods[i]; - - // use methods if exist (safer option manipulation) - if ('function' == typeof this[method]) { - var args = Array.isArray(options[method]) - ? options[method] - : [options[method]]; - this[method].apply(this, args) - } else { - this.options[method] = options[method]; - } - } - - return this; -} - -/** - * Binds this query to a model. - * - * @param {Model} model the model to which the query is bound - * @param {String} op the operation to execute - * @param {Object} updateArg used in update methods - * @return {Query} - * @api private - */ - -Query.prototype.bind = function bind (model, op, updateArg) { - this.model = model; - this.op = op; - - if (model._mapreduce) this.options.lean = true; - - if (op == 'update' || op == 'findOneAndUpdate') { - merge(this._updateArg, updateArg || {}); - } - - return this; -}; - -/** - * Executes the query - * - * ####Examples - * - * query.exec(); - * query.exec(callback); - * query.exec('update'); - * query.exec('find', callback); - * - * @param {String|Function} [operation] - * @param {Function} [callback] - * @return {Promise} - * @api public - */ - -Query.prototype.exec = function exec (op, callback) { - var promise = new Promise(); - - switch (typeof op) { - case 'function': - callback = op; - op = null; - break; - case 'string': - this.op = op; - break; - } - - if (callback) promise.addBack(callback); - - if (!this.op) { - promise.complete(); - return promise; - } - - if ('update' == this.op) { - this[this.op](this._updateArg, promise.resolve.bind(promise)); - return promise; - } - - if ('distinct' == this.op) { - this.distinct(this._distinctArg, promise.resolve.bind(promise)); - return promise; - } - - this[this.op](promise.resolve.bind(promise)); - return promise; -}; - -/** - * Finds documents. - * - * When no `callback` is passed, the query is not executed. - * - * ####Example - * - * query.find({ name: 'Los Pollos Hermanos' }).find(callback) - * - * @param {Object} [criteria] mongodb selector - * @param {Function} [callback] - * @return {Query} this - * @api public - */ - -Query.prototype.find = function (criteria, callback) { - this.op = 'find'; - if ('function' === typeof criteria) { - callback = criteria; - criteria = {}; - } else if (criteria instanceof Query) { - // TODO Merge options, too - merge(this._conditions, criteria._conditions); - } else if (criteria instanceof Document) { - merge(this._conditions, criteria.toObject()); - } else if (criteria && 'Object' === criteria.constructor.name) { - merge(this._conditions, criteria); - } - if (!callback) return this; - return this.execFind(callback); -}; - -/** - * Casts this query to the schema of `model` - * - * ####Note - * - * If `obj` is present, it is cast instead of this query. - * - * @param {Model} model - * @param {Object} [obj] - * @return {Object} - * @api public - */ - -Query.prototype.cast = function (model, obj) { - obj || (obj= this._conditions); - - var schema = model.schema - , paths = Object.keys(obj) - , i = paths.length - , any$conditionals - , schematype - , nested - , path - , type - , val; - - while (i--) { - path = paths[i]; - val = obj[path]; - - if ('$or' === path || '$nor' === path || '$and' === path) { - var k = val.length - , orComponentQuery; - - while (k--) { - orComponentQuery = new Query(val[k]); - orComponentQuery.cast(model); - val[k] = orComponentQuery._conditions; - } - - } else if (path === '$where') { - type = typeof val; - - if ('string' !== type && 'function' !== type) { - throw new Error("Must have a string or function for $where"); - } - - if ('function' === type) { - obj[path] = val.toString(); - } - - continue; - - } else { - - if (!schema) { - // no casting for Mixed types - continue; - } - - schematype = schema.path(path); - - if (!schematype) { - // Handle potential embedded array queries - var split = path.split('.') - , j = split.length - , pathFirstHalf - , pathLastHalf - , remainingConds - , castingQuery; - - // Find the part of the var path that is a path of the Schema - while (j--) { - pathFirstHalf = split.slice(0, j).join('.'); - schematype = schema.path(pathFirstHalf); - if (schematype) break; - } - - // If a substring of the input path resolves to an actual real path... - if (schematype) { - // Apply the casting; similar code for $elemMatch in schema/array.js - if (schematype.caster && schematype.caster.schema) { - remainingConds = {}; - pathLastHalf = split.slice(j).join('.'); - remainingConds[pathLastHalf] = val; - castingQuery = new Query(remainingConds); - castingQuery.cast(schematype.caster); - obj[path] = castingQuery._conditions[pathLastHalf]; - } else { - obj[path] = val; - } - continue; - } - - if (utils.isObject(val)) { - // handle geo schemas that use object notation - // { loc: { long: Number, lat: Number } - - var geo = val.$near ? '$near' : - val.$nearSphere ? '$nearSphere' : - val.$within ? '$within' : - val.$geoIntersects ? '$geoIntersects' : ''; - - if (!geo) { - continue; - } - - var numbertype = new Types.Number('__QueryCasting__') - var value = val[geo]; - - if (val.$maxDistance) { - val.$maxDistance = numbertype.castForQuery(val.$maxDistance); - } - - if ('$within' == geo) { - var withinType = value.$center - || value.$centerSphere - || value.$box - || value.$polygon; - - if (!withinType) { - throw new Error('Bad $within paramater: ' + JSON.stringify(val)); - } - - value = withinType; - - } else if ('$near' == geo && - 'string' == typeof value.type && Array.isArray(value.coordinates)) { - // geojson; cast the coordinates - value = value.coordinates; - - } else if (('$near' == geo || '$geoIntersects' == geo) && - value.$geometry && 'string' == typeof value.$geometry.type && - Array.isArray(value.$geometry.coordinates)) { - // geojson; cast the coordinates - value = value.$geometry.coordinates; - } - - ;(function _cast (val) { - if (Array.isArray(val)) { - val.forEach(function (item, i) { - if (Array.isArray(item) || utils.isObject(item)) { - return _cast(item); - } - val[i] = numbertype.castForQuery(item); - }); - } else { - var nearKeys= Object.keys(val); - var nearLen = nearKeys.length; - while (nearLen--) { - var nkey = nearKeys[nearLen]; - var item = val[nkey]; - if (Array.isArray(item) || utils.isObject(item)) { - _cast(item); - val[nkey] = item; - } else { - val[nkey] = numbertype.castForQuery(item); - } - } - } - })(value); - } - - } else if (val === null || val === undefined) { - continue; - } else if ('Object' === val.constructor.name) { - - any$conditionals = Object.keys(val).some(function (k) { - return k.charAt(0) === '$' && k !== '$id' && k !== '$ref'; - }); - - if (!any$conditionals) { - obj[path] = schematype.castForQuery(val); - } else { - - var ks = Object.keys(val) - , k = ks.length - , $cond; - - while (k--) { - $cond = ks[k]; - nested = val[$cond]; - - if ('$exists' === $cond) { - if ('boolean' !== typeof nested) { - throw new Error("$exists parameter must be Boolean"); - } - continue; - } - - if ('$type' === $cond) { - if ('number' !== typeof nested) { - throw new Error("$type parameter must be Number"); - } - continue; - } - - if ('$not' === $cond) { - this.cast(model, nested); - } else { - val[$cond] = schematype.castForQuery($cond, nested); - } - } - } - } else { - obj[path] = schematype.castForQuery(val); - } - } - } - - return obj; -}; - -/** - * Returns default options. - * @param {Model} model - * @api private - */ - -Query.prototype._optionsForExec = function (model) { - var options = utils.clone(this.options, { retainKeyOrder: true }); - delete options.populate; - - if (!('safe' in options)) - options.safe = model.schema.options.safe; - - if (!('readPreference' in options) && model.schema.options.read) - options.readPreference = model.schema.options.read; - - return options; -}; - -/** - * Applies schematype selected options to this query. - * @api private - */ - -Query.prototype._applyPaths = function applyPaths () { - // determine if query is selecting or excluding fields - - var fields = this._fields - , exclude - , keys - , ki - - if (fields) { - keys = Object.keys(fields); - ki = keys.length; - - while (ki--) { - if ('+' == keys[ki][0]) continue; - exclude = 0 === fields[keys[ki]]; - break; - } - } - - // if selecting, apply default schematype select:true fields - // if excluding, apply schematype select:false fields - - var selected = [] - , excluded = [] - , seen = []; - - analyzeSchema(this.model.schema); - - switch (exclude) { - case true: - excluded.length && this.select('-' + excluded.join(' -')); - break; - case false: - selected.length && this.select(selected.join(' ')); - break; - case undefined: - // user didn't specify fields, implies returning all fields. - // only need to apply excluded fields - excluded.length && this.select('-' + excluded.join(' -')); - break; - } - - return seen = excluded = selected = keys = fields = null; - - function analyzeSchema (schema, prefix) { - prefix || (prefix = ''); - - // avoid recursion - if (~seen.indexOf(schema)) return; - seen.push(schema); - - schema.eachPath(function (path, type) { - if (prefix) path = prefix + '.' + path; - - analyzePath(path, type); - - // array of subdocs? - if (type.schema) { - analyzeSchema(type.schema, path); - } - - }); - } - - function analyzePath (path, type) { - if ('boolean' != typeof type.selected) return; - - var plusPath = '+' + path; - if (fields && plusPath in fields) { - // forced inclusion - delete fields[plusPath]; - - // if there are other fields being included, add this one - // if no other included fields, leave this out (implied inclusion) - if (false === exclude && keys.length > 1 && !~keys.indexOf(path)) { - fields[path] = 1; - } - - return - }; - - // check for parent exclusions - var root = path.split('.')[0]; - if (~excluded.indexOf(root)) return; - - ;(type.selected ? selected : excluded).push(path); - } -} - -/** - * Specifies a javascript function or expression to pass to MongoDBs query system. - * - * ####Example - * - * query.$where('this.comments.length > 10 || this.name.length > 5') - * - * // or - * - * query.$where(function () { - * return this.comments.length > 10 || this.name.length > 5; - * }) - * - * ####NOTE: - * - * Only use `$where` when you have a condition that cannot be met using other MongoDB operators like `$lt`. - * **Be sure to read about all of [its caveats](http://docs.mongodb.org/manual/reference/operator/where/) before using.** - * - * @see $where http://docs.mongodb.org/manual/reference/operator/where/ - * @param {String|Function} js javascript string or function - * @return {Query} this - * @memberOf Query - * @method $where - * @api public - */ - -Query.prototype.$where = function (js) { - this._conditions['$where'] = js; - return this; -}; - -/** - * Specifies a `path` for use with chaining. - * - * ####Example - * - * // instead of writing: - * User.find({age: {$gte: 21, $lte: 65}}, callback); - * - * // we can instead write: - * User.where('age').gte(21).lte(65); - * - * // Moreover, you can also chain a bunch of these together: - * - * User - * .where('age').gte(21).lte(65) - * .where('name', /^b/i) - * .where('friends').slice(10) - * .exec(callback) - * - * @param {String} [path] - * @param {Object} [val] - * @return {Query} this - * @api public - */ - -Query.prototype.where = function (path, val) { - if (!arguments.length) return this; - - if ('string' != typeof path) { - throw new TypeError('path must be a string'); - } - - this._currPath = path; - - if (2 === arguments.length) { - this._conditions[path] = val; - } - - return this; -}; - -/** - * Specifies the complementary comparison value for paths specified with `where()` - * - * ####Example - * - * User.where('age').equals(49); - * - * // is the same as - * - * User.where('age', 49); - * - * @param {Object} val - * @return {Query} this - * @api public - */ - -Query.prototype.equals = function equals (val) { - var path = this._currPath; - if (!path) throw new Error('equals() must be used after where()'); - this._conditions[path] = val; - return this; -} - -/** - * Specifies arguments for an `$or` condition. - * - * ####Example - * - * query.or([{ color: 'red' }, { status: 'emergency' }]) - * - * @see $or http://docs.mongodb.org/manual/reference/operator/or/ - * @param {Array} array array of conditions - * @return {Query} this - * @api public - */ - -Query.prototype.or = function or (array) { - var or = this._conditions.$or || (this._conditions.$or = []); - if (!Array.isArray(array)) array = [array]; - or.push.apply(or, array); - return this; -} - -/** - * Specifies arguments for a `$nor` condition. - * - * ####Example - * - * query.nor([{ color: 'green' }, { status: 'ok' }]) - * - * @see $nor http://docs.mongodb.org/manual/reference/operator/nor/ - * @param {Array} array array of conditions - * @return {Query} this - * @api public - */ - -Query.prototype.nor = function nor (array) { - var nor = this._conditions.$nor || (this._conditions.$nor = []); - if (!Array.isArray(array)) array = [array]; - nor.push.apply(nor, array); - return this; -} - -/** - * Specifies arguments for a `$and` condition. - * - * ####Example - * - * query.and([{ color: 'green' }, { status: 'ok' }]) - * - * @see $and http://docs.mongodb.org/manual/reference/operator/and/ - * @param {Array} array array of conditions - * @return {Query} this - * @api public - */ - -Query.prototype.and = function and (array) { - var and = this._conditions.$and || (this._conditions.$and = []); - if (!Array.isArray(array)) array = [array]; - and.push.apply(and, array); - return this; -} - -/** - * Specifies a $gt query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * ####Example - * - * Thing.find().where('age').gt(21) - * - * // or - * Thing.find().gt('age', 21) - * - * @see $gt http://docs.mongodb.org/manual/reference/operator/gt/ - * @method gt - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies a $gte query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $gte http://docs.mongodb.org/manual/reference/operator/gte/ - * @method gte - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies a $lt query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $lt http://docs.mongodb.org/manual/reference/operator/lt/ - * @method lt - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies a $lte query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $lte http://docs.mongodb.org/manual/reference/operator/lte/ - * @method lte - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies a $ne query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $ne http://docs.mongodb.org/manual/reference/operator/ne/ - * @method ne - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies an $in query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $in http://docs.mongodb.org/manual/reference/operator/in/ - * @method in - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies an $nin query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $nin http://docs.mongodb.org/manual/reference/operator/nin/ - * @method nin - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies an $all query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $all http://docs.mongodb.org/manual/reference/operator/all/ - * @method all - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies an $size query condition. - * - * ####Example - * - * MyModel.where('tags').size(0).exec(function (err, docs) { - * if (err) return handleError(err); - * - * assert(Array.isArray(docs)); - * console.log('documents with 0 tags', docs); - * }) - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $size http://docs.mongodb.org/manual/reference/operator/size/ - * @method size - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies a $regex query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $regex http://docs.mongodb.org/manual/reference/operator/regex/ - * @method regex - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/** - * Specifies a $maxDistance query condition. - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @see $maxDistance http://docs.mongodb.org/manual/reference/operator/maxDistance/ - * @method maxDistance - * @memberOf Query - * @param {String} path - * @param {Number} val - * @api public - */ - -/*! - * gt, gte, lt, lte, ne, in, nin, all, regex, size, maxDistance - * - * Thing.where('type').nin(array) - */ - -'gt gte lt lte ne in nin all regex size maxDistance'.split(' ').forEach(function ($conditional) { - Query.prototype[$conditional] = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds['$' + $conditional] = val; - return this; - }; -}); - -/** - * Specifies a `$near` condition - * - * @param {String} path - * @param {Number} val - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $near http://docs.mongodb.org/manual/reference/operator/near/ - * @api public - */ - -Query.prototype.near = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath - } else if (arguments.length === 2 && !Array.isArray(val)) { - val = utils.args(arguments); - path = this._currPath; - } else if (arguments.length === 3) { - val = utils.args(arguments, 1); - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds.$near = val; - return this; -} - -/** - * Specifies a `$nearSphere` condition. - * - * @param {String} path - * @param {Object} val - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $nearSphere http://docs.mongodb.org/manual/reference/operator/nearSphere/ - * @api public - */ - -Query.prototype.nearSphere = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath - } else if (arguments.length === 2 && !Array.isArray(val)) { - val = utils.args(arguments); - path = this._currPath; - } else if (arguments.length === 3) { - val = utils.args(arguments, 1); - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds.$nearSphere = val; - return this; -} - -/** - * Specifies a `$mod` condition - * - * @param {String} path - * @param {Number} val - * @return {Query} this - * @see $mod http://docs.mongodb.org/manual/reference/operator/mod/ - * @api public - */ - -Query.prototype.mod = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath - } else if (arguments.length === 2 && !Array.isArray(val)) { - val = utils.args(arguments); - path = this._currPath; - } else if (arguments.length === 3) { - val = utils.args(arguments, 1); - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds.$mod = val; - return this; -} - -/** - * Specifies an `$exists` condition - * - * @param {String} path - * @param {Number} val - * @return {Query} this - * @see $exists http://docs.mongodb.org/manual/reference/operator/exists/ - * @api public - */ - -Query.prototype.exists = function (path, val) { - if (arguments.length === 0) { - path = this._currPath - val = true; - } else if (arguments.length === 1) { - if ('boolean' === typeof path) { - val = path; - path = this._currPath; - } else { - val = true; - } - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds['$exists'] = val; - return this; -}; - -/** - * Specifies an `$elemMatch` condition - * - * ####Example - * - * query.elemMatch('comment', { author: 'autobot', votes: {$gte: 5}}) - * - * query.where('comment').elemMatch({ author: 'autobot', votes: {$gte: 5}}) - * - * query.elemMatch('comment', function (elem) { - * elem.where('author').equals('autobot'); - * elem.where('votes').gte(5); - * }) - * - * query.where('comment').elemMatch(function (elem) { - * elem.where('author').equals('autobot'); - * elem.where('votes').gte(5); - * }) - * - * @param {String|Object|Function} path - * @param {Object|Function} criteria - * @return {Query} this - * @see $elemMatch http://docs.mongodb.org/manual/reference/operator/elemMatch/ - * @api public - */ - -Query.prototype.elemMatch = function (path, criteria) { - var block; - if ('Object' === path.constructor.name) { - criteria = path; - path = this._currPath; - } else if ('function' === typeof path) { - block = path; - path = this._currPath; - } else if ('Object' === criteria.constructor.name) { - } else if ('function' === typeof criteria) { - block = criteria; - } else { - throw new Error("Argument error"); - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - if (block) { - criteria = new Query(); - block(criteria); - conds['$elemMatch'] = criteria._conditions; - } else { - conds['$elemMatch'] = criteria; - } - return this; -}; - -// Spatial queries - -/** - * Defines a $within query for `box()`, `center()`, etc - * - * ####Example - * - * query.within.box() - * query.within.center() - * query.within.geometry() - * - * @property within - * @memberOf Query - * @see Query#box #query_Query-box - * @see Query#center #query_Query-center - * @see Query#centerSphere #query_Query-centerSphere - * @see Query#polygon #query_Query-polygon - * @see Query#geometry #query_Query-geometry - * @see $geoWithin http://docs.mongodb.org/manual/reference/operator/within/ - * @return {Query} this - * @api public - */ - -Object.defineProperty(Query.prototype, 'within', { - get: function () { - this._geoComparison = '$within'; - return this - } -}); - -/** - * Declares an intersects query for `geometry()`. - * - * ####Example - * - * query.intersects.geometry({ - * type: 'LineString' - * , coordinates: [[180.0, 11.0], [180, 9.0]] - * }) - * - * @property intersects - * @see Query#geometry #query_Query-geometry - * @see $geometry http://docs.mongodb.org/manual/reference/operator/geometry/ - * @see geoIntersects http://docs.mongodb.org/manual/reference/operator/geoIntersects/ - * @memberOf Query - * @return {Query} this - * @api public - */ - -Object.defineProperty(Query.prototype, 'intersects', { - get: function () { - this._geoComparison = '$geoIntersects'; - return this - } -}); - -/** - * Specifies a $box condition - * - * ####Example - * - * var lowerLeft = [40.73083, -73.99756] - * var upperRight= [40.741404, -73.988135] - * query.where('loc').within.box({ ll: lowerLeft , ur: upperRight }) - * - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see Query#within #query_Query-within - * @see $box http://docs.mongodb.org/manual/reference/operator/box/ - * @param {String} path - * @param {Object} val - * @return {Query} this - * @api public - */ - -Query.prototype.box = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath; - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds['$within'] = { '$box': [val.ll, val.ur] }; - return this; -}; - -/** - * Specifies a $center condition - * - * ####Example - * - * var area = { center: [50, 50], radius: 10 } - * query.where('loc').within.center(area) - * - * @param {String} path - * @param {Object} val - * @param {Object} [opts] options e.g. { $uniqueDocs: true } - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $center http://docs.mongodb.org/manual/reference/operator/center/ - * @api public - */ - -Query.prototype.center = function (path, val, opts) { - if (arguments.length === 1) { - val = path; - path = this._currPath; - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds['$within'] = { '$center': [val.center, val.radius] }; - - // copy any options - if (opts && 'Object' == opts.constructor.name) { - utils.options(opts, conds.$within); - } - - return this; -}; - -/** - * Specifies a $centerSphere condition - * - * ####Example - * - * var area = { center: [50, 50], radius: 10 } - * query.where('loc').within.centerSphere(area) - * - * @param {String} [path] - * @param {Object} val - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $centerSphere http://docs.mongodb.org/manual/reference/operator/centerSphere/ - * @api public - */ - -Query.prototype.centerSphere = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath; - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds['$within'] = { '$centerSphere': [val.center, val.radius] }; - return this; -}; - -/** - * Specifies a $polygon condition - * - * ####Example - * - * var polyA = [ [ 10, 20 ], [ 10, 40 ], [ 30, 40 ], [ 30, 20 ] ] - * query.where('loc').within.polygon(polyA) - * - * // or - * var polyB = { a : { x : 10, y : 20 }, b : { x : 15, y : 25 }, c : { x : 20, y : 20 } } - * query.where('loc').within.polygon(polyB) - * - * @param {String} [path] - * @param {Array|Object} val - * @return {Query} this - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $polygon http://docs.mongodb.org/manual/reference/operator/polygon/ - * @api public - */ - -Query.prototype.polygon = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath; - } - var conds = this._conditions[path] || (this._conditions[path] = {}); - conds['$within'] = { '$polygon': val }; - return this; -}; - -/** - * Specifies a $geometry condition - * - * ####Example - * - * var polyA = [[[ 10, 20 ], [ 10, 40 ], [ 30, 40 ], [ 30, 20 ]]] - * query.where('loc').within.geometry({ type: 'Polygon', coordinates: polyA }) - * - * // or - * var polyB = [[ 0, 0 ], [ 1, 1 ]] - * query.where('loc').within.geometry({ type: 'LineString', coordinates: polyB }) - * - * // or - * var polyC = [ 0, 0 ] - * query.where('loc').within.geometry({ type: 'Point', coordinates: polyC }) - * - * // or - * var polyC = [ 0, 0 ] - * query.where('loc').intersects.geometry({ type: 'Point', coordinates: polyC }) - * - * ####NOTE: - * - * `geometry()` **must** come after either `intersects` or `within`. - * - * The `object` argument must contain `type` and `coordinates` properties. - * - type {String} - * - coordinates {Array} - * - * When called with one argument, the most recent path passed to `where()` is used. - * - * @param {String} [path] Optional name of a path to match against - * @param {Object} object Must contain a `type` property which is a String and a `coordinates` property which is an Array. See the example. - * @return {Query} this - * @see http://docs.mongodb.org/manual/release-notes/2.4/#new-geospatial-indexes-with-geojson-and-improved-spherical-geometry - * @see http://www.mongodb.org/display/DOCS/Geospatial+Indexing - * @see $geometry http://docs.mongodb.org/manual/reference/operator/geometry/ - * @api public - */ - -Query.prototype.geometry = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath; - } - - var conds = this._conditions[path] || (this._conditions[path] = {}); - - if (!this._geoComparison) { - throw new Error('query.geometry() must come after either `within` or `intersects`'); - } - - conds[this._geoComparison] = { $geometry: val }; - return this; -}; - -/** - * Specifies which document fields to include or exclude - * - * When using string syntax, prefixing a path with `-` will flag that path as excluded. When a path does not have the `-` prefix, it is included. Lastly, if a path is prefixed with `+`, it forces inclusion of the path, which is useful for paths excluded at the [schema level](/docs/api.html#schematype_SchemaType-select). - * - * ####Example - * - * // include a and b, exclude c - * query.select('a b -c'); - * - * // or you may use object notation, useful when - * // you have keys already prefixed with a "-" - * query.select({a: 1, b: 1, c: 0}); - * - * // force inclusion of field excluded at schema level - * query.select('+path') - * - * ####NOTE: - * - * _v2 had slightly different syntax such as allowing arrays of field names. This support was removed in v3._ - * - * @param {Object|String} arg - * @return {Query} this - * @see SchemaType - * @api public - */ - -Query.prototype.select = function select (arg) { - if (!arg) return this; - - var fields = this._fields || (this._fields = {}); - - if ('Object' === arg.constructor.name) { - Object.keys(arg).forEach(function (field) { - fields[field] = arg[field]; - }); - } else if (1 === arguments.length && 'string' == typeof arg) { - arg.split(/\s+/).forEach(function (field) { - if (!field) return; - var include = '-' == field[0] ? 0 : 1; - if (include === 0) field = field.substring(1); - fields[field] = include; - }); - } else { - throw new TypeError('Invalid select() argument. Must be a string or object.'); - } - - return this; -}; - -/** - * Specifies a $slice projection for an array. - * - * ####Example - * - * query.slice('comments', 5) - * query.slice('comments', -5) - * query.slice('comments', [10, 5]) - * query.where('comments').slice(5) - * query.where('comments').slice([-10, 5]) - * - * @param {String} path - * @param {Number} val number of elements to slice - * @return {Query} this - * @see mongodb http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-RetrievingaSubrangeofArrayElements - * @see $slice http://docs.mongodb.org/manual/reference/projection/slice/#prj._S_slice - * @api public - */ - -Query.prototype.slice = function (path, val) { - if (arguments.length === 1) { - val = path; - path = this._currPath - } else if (arguments.length === 2) { - if ('number' === typeof path) { - val = [path, val]; - path = this._currPath; - } - } else if (arguments.length === 3) { - val = utils.args(arguments, 1); - } - var myFields = this._fields || (this._fields = {}); - myFields[path] = { '$slice': val }; - return this; -}; - -/** - * Sets the sort order - * - * If an object is passed, values allowed are `asc`, `desc`, `ascending`, `descending`, `1`, and `-1`. - * - * If a string is passed, it must be a space delimited list of path names. The sort order of each path is ascending unless the path name is prefixed with `-` which will be treated as descending. - * - * ####Example - * - * // sort by "field" ascending and "test" descending - * query.sort({ field: 'asc', test: -1 }); - * - * // equivalent - * query.sort('field -test'); - * - * @param {Object|String} arg - * @return {Query} this - * @see cursor.sort http://docs.mongodb.org/manual/reference/method/cursor.sort/ - * @api public - */ - -Query.prototype.sort = function (arg) { - if (!arg) return this; - - var sort = this.options.sort || (this.options.sort = []); - - if ('Object' === arg.constructor.name) { - Object.keys(arg).forEach(function (field) { - push(sort, field, arg[field]); - }); - } else if (1 === arguments.length && 'string' == typeof arg) { - arg.split(/\s+/).forEach(function (field) { - if (!field) return; - var ascend = '-' == field[0] ? -1 : 1; - if (ascend === -1) field = field.substring(1); - push(sort, field, ascend); - }); - } else { - throw new TypeError('Invalid sort() argument. Must be a string or object.'); - } - - return this; -}; - -/*! - * @ignore - */ - -function push (arr, field, value) { - var val = String(value || 1).toLowerCase(); - if (!/^(?:ascending|asc|descending|desc|1|-1)$/.test(val)) { - if (Array.isArray(value)) value = '['+value+']'; - throw new TypeError('Invalid sort value: {' + field + ': ' + value + ' }'); - } - arr.push([field, value]); -} - -/** - * Specifies the maximum number of documents the query will return. - * - * ####Example - * - * Kitten.find().limit(20).exec(callback) - * - * @method limit - * @memberOf Query - * @param {Number} val - * @api public - */ -/** - * Specifies the number of documents to skip. - * - * ####Example - * - * Kitten.find().skip(100).limit(20) - * - * @method skip - * @memberOf Query - * @param {Number} val - * @see cursor.skip http://docs.mongodb.org/manual/reference/method/cursor.skip/ - * @api public - */ -/** - * Specifies the maxscan option. - * - * ####Example - * - * Kitten.find().maxscan(100) - * - * @method maxscan - * @memberOf Query - * @param {Number} val - * @see maxScan http://docs.mongodb.org/manual/reference/operator/maxScan/ - * @api public - */ -/** - * Specifies the batchSize option. - * - * ####Example - * - * Kitten.find().batchSize(100) - * - * @method batchSize - * @memberOf Query - * @param {Number} val - * @see batchSize http://docs.mongodb.org/manual/reference/method/cursor.batchSize/ - * @api public - */ -/** - * Specifies the `comment` option. - * - * ####Example - * - * Kitten.findOne(condition).comment('login query') - * - * @method comment - * @memberOf Query - * @param {Number} val - * @see comment http://docs.mongodb.org/manual/reference/operator/comment/ - * @api public - */ - -/*! - * limit, skip, maxscan, batchSize, comment - * - * Sets these associated options. - * - * query.comment('feed query'); - */ - -;['limit', 'skip', 'maxscan', 'batchSize', 'comment'].forEach(function (method) { - Query.prototype[method] = function (v) { - this.options[method] = v; - return this; - }; -}); - -/** - * Specifies this query as a `snapshot` query. - * - * ####Example - * - * Kitten.find().snapshot() - * - * @see snapshot http://docs.mongodb.org/manual/reference/operator/snapshot/ - * @return {Query} this - * @api public - */ - -Query.prototype.snapshot = function () { - this.options.snapshot = true; - return this; -}; - -/** - * Sets query hints. - * - * ####Example - * - * Model.find().hint({ indexA: 1, indexB: -1}) - * - * @param {Object} val a hint object - * @return {Query} this - * @see $hint http://docs.mongodb.org/manual/reference/operator/hint/ - * @api public - */ - -Query.prototype.hint = function (val) { - if (!val) return this; - - var hint = this.options.hint || (this.options.hint = {}); - - if ('Object' === val.constructor.name) { - // must keep object keys in order so don't use Object.keys() - for (var k in val) { - hint[k] = val[k]; - } - } else { - throw new TypeError('Invalid hint. ' + val); - } - - return this; -}; - -/** - * Sets the slaveOk option. _Deprecated_ in MongoDB 2.2 in favor of [read preferences](#query_Query-read). - * - * ####Example: - * - * new Query().slaveOk() // true - * new Query().slaveOk(true) - * new Query().slaveOk(false) - * - * @param {Boolean} v defaults to true - * @see mongodb http://docs.mongodb.org/manual/applications/replication/#read-preference - * @see slaveOk http://docs.mongodb.org/manual/reference/method/rs.slaveOk/ - * @return {Query} this - * @api public - */ - -Query.prototype.slaveOk = function (v) { - this.options.slaveOk = arguments.length ? !!v : true; - return this; -} - -/** - * Determines the MongoDB nodes from which to read. - * - * ####Preferences: - * - * primary - (default) Read from primary only. Operations will produce an error if primary is unavailable. Cannot be combined with tags. - * secondary Read from secondary if available, otherwise error. - * primaryPreferred Read from primary if available, otherwise a secondary. - * secondaryPreferred Read from a secondary if available, otherwise read from the primary. - * nearest All operations read from among the nearest candidates, but unlike other modes, this option will include both the primary and all secondaries in the selection. - * - * Aliases - * - * p primary - * pp primaryPreferred - * s secondary - * sp secondaryPreferred - * n nearest - * - * ####Example: - * - * new Query().read('primary') - * new Query().read('p') // same as primary - * - * new Query().read('primaryPreferred') - * new Query().read('pp') // same as primaryPreferred - * - * new Query().read('secondary') - * new Query().read('s') // same as secondary - * - * new Query().read('secondaryPreferred') - * new Query().read('sp') // same as secondaryPreferred - * - * new Query().read('nearest') - * new Query().read('n') // same as nearest - * - * // read from secondaries with matching tags - * new Query().read('secondary', [{ dc:'sf', s: 1 },{ dc:'ma', s: 2 }]) - * - * Read more about how to use read preferrences [here](http://docs.mongodb.org/manual/applications/replication/#read-preference) and [here](http://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences). - * - * @param {String} pref one of the listed preference options or aliases - * @param {Array} [tags] optional tags for this query - * @see mongodb http://docs.mongodb.org/manual/applications/replication/#read-preference - * @see driver http://mongodb.github.com/node-mongodb-native/driver-articles/anintroductionto1_1and2_2.html#read-preferences - * @return {Query} this - * @api public - */ - -Query.prototype.read = function (pref, tags) { - this.options.readPreference = utils.readPref(pref, tags); - return this; -} - -/** - * Sets the lean option. - * - * Documents returned from queries with the `lean` option enabled are plain javascript objects, not [MongooseDocuments](#document-js). They have no `save` method, getters/setters or other Mongoose magic applied. - * - * ####Example: - * - * new Query().lean() // true - * new Query().lean(true) - * new Query().lean(false) - * - * Model.find().lean().exec(function (err, docs) { - * docs[0] instanceof mongoose.Document // false - * }); - * - * This is a [great](https://groups.google.com/forum/#!topic/mongoose-orm/u2_DzDydcnA/discussion) option in high-performance read-only scenarios, especially when combined with [stream](#query_Query-stream). - * - * @param {Boolean} bool defaults to true - * @return {Query} this - * @api public - */ - -Query.prototype.lean = function (v) { - this.options.lean = arguments.length ? !!v : true; - return this; -} - -/** - * Sets the tailable option (for use with capped collections). - * - * ####Example - * - * Kitten.find().tailable() // true - * Kitten.find().tailable(true) - * Kitten.find().tailable(false) - * - * @param {Boolean} bool defaults to true - * @see tailable http://docs.mongodb.org/manual/tutorial/create-tailable-cursor/ - * @api public - */ - -Query.prototype.tailable = function (v) { - this.options.tailable = arguments.length ? !!v : true; - return this; -}; - -/** - * Executes the query as a find() operation. - * - * @param {Function} callback - * @return {Query} this - * @api private - */ - -Query.prototype.execFind = function (callback) { - var model = this.model - , promise = new Promise(callback); - - try { - this.cast(model); - } catch (err) { - promise.error(err); - return this; - } - - // apply default schematype path selections - this._applyPaths(); - - var self = this - , castQuery = this._conditions - , options = this._optionsForExec(model) - , fields = utils.clone(this._fields) - - options.fields = this._castFields(fields); - if (options.fields instanceof Error) { - promise.error(options.fields); - return this; - } - - model.collection.find(castQuery, options, function (err, cursor) { - if (err) return promise.error(err); - cursor.toArray(tick(cb)); - }); - - function cb (err, docs) { - if (err) return promise.error(err); - - if (0 === docs.length) { - return promise.complete(docs); - } - - if (!self.options.populate) { - return true === options.lean - ? promise.complete(docs) - : completeMany(model, docs, fields, self, null, promise); - } - - var pop = helpers.preparePopulationOptions(self, options); - model.populate(docs, pop, function (err, docs) { - if (err) return promise.error(err); - return true === options.lean - ? promise.complete(docs) - : completeMany(model, docs, fields, self, pop, promise); - }); - } - - return this; -} - -/*! - * hydrates many documents - * - * @param {Model} model - * @param {Array} docs - * @param {Object} fields - * @param {Query} self - * @param {Array} [pop] array of paths used in population - * @param {Promise} promise - */ - -function completeMany (model, docs, fields, self, pop, promise) { - var arr = []; - var count = docs.length; - var len = count; - var i = 0; - var opts = pop ? - { populated: pop } - : undefined; - - for (; i < len; ++i) { - arr[i] = new model(undefined, fields, true); - arr[i].init(docs[i], opts, function (err) { - if (err) return promise.error(err); - --count || promise.complete(arr); - }); - } -} - -/** - * Executes the query as a findOne() operation, passing the first found document to the callback. - * - * ####Example - * - * var query = Kitten.find({ color: 'white'}); - * - * query.findOne(function (err, kitten) { - * if (err) return handleError(err); - * - * // kitten may be null if no document matched - * if (kitten) { - * ... - * } - * }) - * - * @param {Function} callback - * @return {Query} this - * @see findOne http://docs.mongodb.org/manual/reference/method/db.collection.findOne/ - * @api public - */ - -Query.prototype.findOne = function (callback) { - this.op = 'findOne'; - - if (!callback) return this; - - var model = this.model; - var promise = new Promise(callback); - - try { - this.cast(model); - } catch (err) { - promise.error(err); - return this; - } - - // apply default schematype path selections - this._applyPaths(); - - var self = this - , castQuery = this._conditions - , options = this._optionsForExec(model) - , fields = utils.clone(this._fields) - - options.fields = this._castFields(fields); - if (options.fields instanceof Error) { - promise.error(options.fields); - return this; - } - - model.collection.findOne(castQuery, options, tick(function (err, doc) { - if (err) return promise.error(err); - if (!doc) return promise.complete(null); - - if (!self.options.populate) { - return true === options.lean - ? promise.complete(doc) - : completeOne(model, doc, fields, self, null, promise); - } - - var pop = helpers.preparePopulationOptions(self, options); - model.populate(doc, pop, function (err, doc) { - if (err) return promise.error(err); - return true === options.lean - ? promise.complete(doc) - : completeOne(model, doc, fields, self, pop, promise); - }) - })); - - return this; -} - -/*! - * hydrates a document - * - * @param {Model} model - * @param {Document} doc - * @param {Object} fields - * @param {Query} self - * @param {Array} [pop] array of paths used in population - * @param {Promise} promise - */ - -function completeOne (model, doc, fields, self, pop, promise) { - var opts = pop ? - { populated: pop } - : undefined; - - var casted = new model(undefined, fields, true); - casted.init(doc, opts, function (err) { - if (err) return promise.error(err); - promise.complete(casted); - }); -} - -/** - * Exectues the query as a count() operation. - * - * ####Example - * - * Kitten.where('color', 'black').count(function (err, count) { - * if (err) return handleError(err); - * console.log('there are %d black kittens', count); - * }) - * - * @param {Function} callback - * @return {Query} this - * @see count http://docs.mongodb.org/manual/reference/method/db.collection.count/ - * @api public - */ - -Query.prototype.count = function (callback) { - this.op = 'count'; - var model = this.model; - - try { - this.cast(model); - } catch (err) { - return callback(err); - } - - var castQuery = this._conditions; - model.collection.count(castQuery, tick(callback)); - - return this; -}; - -/** - * Executes this query as a distict() operation. - * - * ####Example - * - * Link.find({ clicks: { $gt: 100 }}).distinct('url', function (err, result) { - * if (err) return handleError(err); - * - * assert(Array.isArray(result)); - * console.log('unique urls with more than 100 clicks', result); - * }) - * - * @param {String} field - * @param {Function} callback - * @return {Query} this - * @see distinct http://docs.mongodb.org/manual/reference/method/db.collection.distinct/ - * @api public - */ - -Query.prototype.distinct = function (field, callback) { - this.op = 'distinct'; - var model = this.model; - - try { - this.cast(model); - } catch (err) { - return callback(err); - } - - var castQuery = this._conditions; - model.collection.distinct(field, castQuery, tick(callback)); - - return this; -}; - -/*! - * These operators require casting docs - * to real Documents for Update operations. - */ - -var castOps = { - $push: 1 - , $pushAll: 1 - , $addToSet: 1 - , $set: 1 -}; - -/*! - * These operators should be cast to numbers instead - * of their path schema type. - */ - -var numberOps = { - $pop: 1 - , $unset: 1 - , $inc: 1 -} - -/** - * Executes this query as an update() operation. - * - * _All paths passed that are not $atomic operations will become $set ops so we retain backwards compatibility._ - * - * ####Example - * - * Model.update({..}, { title: 'remove words' }, ...) - * - * // becomes - * - * Model.update({..}, { $set: { title: 'remove words' }}, ...) - * - * ####Note - * - * Passing an empty object `{}` as the doc will result in a no-op. The update operation will be ignored and the callback executed without sending the command to MongoDB so as to prevent accidently overwritting the collection. - * - * @param {Object} doc the update conditions - * @param {Function} callback - * @return {Query} this - * @api public - * @see Model.update #model_Model.update - * @see update http://docs.mongodb.org/manual/reference/method/db.collection.update/ - */ - -Query.prototype.update = function update (doc, callback) { - this.op = 'update'; - this._updateArg = doc; - - var model = this.model - , options = this._optionsForExec(model) - , fn = 'function' == typeof callback - , castedQuery - , castedDoc - - castedQuery = castQuery(this); - if (castedQuery instanceof Error) { - if (fn) { - process.nextTick(callback.bind(null, castedQuery)); - return this; - } - throw castedQuery; - } - - castedDoc = castDoc(this); - if (!castedDoc) { - fn && process.nextTick(callback.bind(null, null, 0)); - return this; - } - - if (castedDoc instanceof Error) { - if (fn) { - process.nextTick(callback.bind(null, castedDoc)); - return this; - } - throw castedDoc; - } - - if (!fn) { - options.safe = { w: 0 }; - } - - model.collection.update(castedQuery, castedDoc, options, tick(callback)); - return this; -}; - -/** - * Casts obj for an update command. - * - * @param {Object} obj - * @return {Object} obj after casting its values - * @api private - */ - -Query.prototype._castUpdate = function _castUpdate (obj) { - var ops = Object.keys(obj) - , i = ops.length - , ret = {} - , hasKeys - , val - - while (i--) { - var op = ops[i]; - if ('$' !== op[0]) { - // fix up $set sugar - if (!ret.$set) { - if (obj.$set) { - ret.$set = obj.$set; - } else { - ret.$set = {}; - } - } - ret.$set[op] = obj[op]; - ops.splice(i, 1); - if (!~ops.indexOf('$set')) ops.push('$set'); - } else if ('$set' === op) { - if (!ret.$set) { - ret[op] = obj[op]; - } - } else { - ret[op] = obj[op]; - } - } - - // cast each value - i = ops.length; - - while (i--) { - op = ops[i]; - val = ret[op]; - if ('Object' === val.constructor.name) { - hasKeys |= this._walkUpdatePath(val, op); - } else { - var msg = 'Invalid atomic update value for ' + op + '. ' - + 'Expected an object, received ' + typeof val; - throw new Error(msg); - } - } - - return hasKeys && ret; -} - -/** - * Walk each path of obj and cast its values - * according to its schema. - * - * @param {Object} obj - part of a query - * @param {String} op - the atomic operator ($pull, $set, etc) - * @param {String} pref - path prefix (internal only) - * @return {Bool} true if this path has keys to update - * @api private - */ - -Query.prototype._walkUpdatePath = function _walkUpdatePath (obj, op, pref) { - var prefix = pref ? pref + '.' : '' - , keys = Object.keys(obj) - , i = keys.length - , hasKeys = false - , schema - , key - , val - - var strict = 'strict' in this.options - ? this.options.strict - : this.model.schema.options.strict; - - while (i--) { - key = keys[i]; - val = obj[key]; - - if (val && 'Object' === val.constructor.name) { - // watch for embedded doc schemas - schema = this._getSchema(prefix + key); - if (schema && schema.caster && op in castOps) { - // embedded doc schema - - if (strict && !schema) { - // path is not in our strict schema - if ('throw' == strict) { - throw new Error('Field `' + key + '` is not in schema.'); - } else { - // ignore paths not specified in schema - delete obj[key]; - } - } else { - hasKeys = true; - - if ('$each' in val) { - obj[key] = { - $each: this._castUpdateVal(schema, val.$each, op) - } - - if (val.$slice) { - obj[key].$slice = val.$slice | 0; - } - - if (val.$sort) { - obj[key].$sort = val.$sort; - } - - } else { - obj[key] = this._castUpdateVal(schema, val, op); - } - } - } else { - hasKeys |= this._walkUpdatePath(val, op, prefix + key); - } - } else { - schema = '$each' === key - ? this._getSchema(pref) - : this._getSchema(prefix + key); - - var skip = strict && - !schema && - !/real|nested/.test(this.model.schema.pathType(prefix + key)); - - if (skip) { - if ('throw' == strict) { - throw new Error('Field `' + prefix + key + '` is not in schema.'); - } else { - delete obj[key]; - } - } else { - hasKeys = true; - obj[key] = this._castUpdateVal(schema, val, op, key); - } - } - } - return hasKeys; -} - -/** - * Casts `val` according to `schema` and atomic `op`. - * - * @param {Schema} schema - * @param {Object} val - * @param {String} op - the atomic operator ($pull, $set, etc) - * @param {String} [$conditional] - * @api private - */ - -Query.prototype._castUpdateVal = function _castUpdateVal (schema, val, op, $conditional) { - if (!schema) { - // non-existing schema path - return op in numberOps - ? Number(val) - : val - } - - if (schema.caster && op in castOps && - ('Object' === val.constructor.name || Array.isArray(val))) { - // Cast values for ops that add data to MongoDB. - // Ensures embedded documents get ObjectIds etc. - var tmp = schema.cast(val); - - if (Array.isArray(val)) { - val = tmp; - } else { - val = tmp[0]; - } - } - - if (op in numberOps) return Number(val); - if (/^\$/.test($conditional)) return schema.castForQuery($conditional, val); - return schema.castForQuery(val) -} - -/** - * Finds the schema for `path`. This is different than - * calling `schema.path` as it also resolves paths with - * positional selectors (something.$.another.$.path). - * - * @param {String} path - * @api private - */ - -Query.prototype._getSchema = function _getSchema (path) { - return this.model._getSchema(path); -} - -/** - * Casts selected field arguments for field selection with mongo 2.2 - * - * query.select({ ids: { $elemMatch: { $in: [hexString] }}) - * - * @param {Object} fields - * @see https://github.com/LearnBoost/mongoose/issues/1091 - * @see http://docs.mongodb.org/manual/reference/projection/elemMatch/ - * @api private - */ - -Query.prototype._castFields = function _castFields (fields) { - var selected - , elemMatchKeys - , keys - , key - , out - , i - - if (fields) { - keys = Object.keys(fields); - elemMatchKeys = []; - i = keys.length; - - // collect $elemMatch args - while (i--) { - key = keys[i]; - if (fields[key].$elemMatch) { - selected || (selected = {}); - selected[key] = fields[key]; - elemMatchKeys.push(key); - } - } - } - - if (selected) { - // they passed $elemMatch, cast em - try { - out = this.cast(this.model, selected); - } catch (err) { - return err; - } - - // apply the casted field args - i = elemMatchKeys.length; - while (i--) { - key = elemMatchKeys[i]; - fields[key] = out[key]; - } - } - - return fields; -} - -/** - * Executes this query as a remove() operation. - * - * ####Example - * - * Cassette.where('artist').equals('Anne Murray').remove(callback) - * - * @param {Function} callback - * @api public - * @see remove http://docs.mongodb.org/manual/reference/method/db.collection.remove/ - */ - -Query.prototype.remove = function (callback) { - this.op = 'remove'; - - var model = this.model - , options = this._optionsForExec(model) - , cb = 'function' == typeof callback - - try { - this.cast(model); - } catch (err) { - if (cb) return callback(err); - throw err; - } - - if (!cb) { - options.safe = { w: 0 }; - } - - var castQuery = this._conditions; - model.collection.remove(castQuery, options, tick(callback)); - return this; -}; - -/** - * Issues a mongodb [findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) update command. - * - * Finds a matching document, updates it according to the `update` arg, passing any `options`, and returns the found document (if any) to the callback. The query executes immediately if `callback` is passed else a Query object is returned. - * - * ####Available options - * - * - `new`: bool - true to return the modified document rather than the original. defaults to true - * - `upsert`: bool - creates the object if it doesn't exist. defaults to false. - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - * ####Examples - * - * query.findOneAndUpdate(conditions, update, options, callback) // executes - * query.findOneAndUpdate(conditions, update, options) // returns Query - * query.findOneAndUpdate(conditions, update, callback) // executes - * query.findOneAndUpdate(conditions, update) // returns Query - * query.findOneAndUpdate(callback) // executes - * query.findOneAndUpdate() // returns Query - * - * @param {Object} [query] - * @param {Object} [doc] - * @param {Object} [options] - * @param {Function} [callback] - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - * @return {Query} this - * @api public - */ - -Query.prototype.findOneAndUpdate = function (query, doc, options, callback) { - this.op = 'findOneAndUpdate'; - - switch (arguments.length) { - case 3: - if ('function' == typeof options) - callback = options, options = {}; - break; - case 2: - if ('function' == typeof doc) { - callback = doc; - doc = query; - query = undefined; - } - options = undefined; - break; - case 1: - if ('function' == typeof query) { - callback = query; - query = options = doc = undefined; - } else { - doc = query; - query = options = undefined; - } - } - - // apply query - if (query) { - if ('Object' === query.constructor.name) { - merge(this._conditions, query); - } else if (query instanceof Query) { - merge(this._conditions, query._conditions); - } else if (query instanceof Document) { - merge(this._conditions, query.toObject()); - } - } - - // apply doc - if (doc) { - merge(this._updateArg, doc); - } - - // apply options - options && this.setOptions(options); - - if (!callback) return this; - - return this._findAndModify('update', callback); -} - -/** - * Issues a mongodb [findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) remove command. - * - * Finds a matching document, removes it, passing the found document (if any) to the callback. Executes immediately if `callback` is passed else a Query object is returned. - * - * ####Available options - * - * - `sort`: if multiple docs are found by the conditions, sets the sort order to choose which doc to update - * - * ####Examples - * - * A.where().findOneAndRemove(conditions, options, callback) // executes - * A.where().findOneAndRemove(conditions, options) // return Query - * A.where().findOneAndRemove(conditions, callback) // executes - * A.where().findOneAndRemove(conditions) // returns Query - * A.where().findOneAndRemove(callback) // executes - * A.where().findOneAndRemove() // returns Query - * - * @param {Object} [conditions] - * @param {Object} [options] - * @param {Function} [callback] - * @return {Query} this - * @see mongodb http://www.mongodb.org/display/DOCS/findAndModify+Command - * @api public - */ - -Query.prototype.findOneAndRemove = function (conditions, options, callback) { - this.op = 'findOneAndRemove'; - - if ('function' == typeof options) { - callback = options; - options = undefined; - } else if ('function' == typeof conditions) { - callback = conditions; - conditions = undefined; - } - - // apply conditions - if (conditions) { - if ('Object' === conditions.constructor.name) { - merge(this._conditions, conditions); - } else if (conditions instanceof Query) { - merge(this._conditions, conditions._conditions); - } else if (conditions instanceof Document) { - merge(this._conditions, conditions.toObject()); - } - } - - // apply options - options && this.setOptions(options); - - if (!callback) return this; - - return this._findAndModify('remove', callback); -} - -/** - * _findAndModify - * - * @param {String} type - either "remove" or "update" - * @param {Function} callback - * @api private - */ - -Query.prototype._findAndModify = function (type, callback) { - var model = this.model - , promise = new Promise(callback) - , self = this - , castedQuery - , castedDoc - , fields - , sort - , opts - - castedQuery = castQuery(this); - if (castedQuery instanceof Error) { - process.nextTick(promise.error.bind(promise, castedQuery)); - return promise; - } - - opts = this._optionsForExec(model); - - if ('remove' == type) { - opts.remove = true; - } else { - if (!('new' in opts)) opts.new = true; - if (!('upsert' in opts)) opts.upsert = false; - - castedDoc = castDoc(this); - if (!castedDoc) { - if (opts.upsert) { - // still need to do the upsert to empty doc - castedDoc = { $set: {} }; - } else { - return this.findOne(callback); - } - } else if (castedDoc instanceof Error) { - process.nextTick(promise.error.bind(promise, castedDoc)); - return promise; - } - } - - this._applyPaths(); - - if (this._fields) { - fields = utils.clone(this._fields) - opts.fields = this._castFields(fields); - if (opts.fields instanceof Error) { - process.nextTick(promise.error.bind(promise, opts.fields)); - return promise; - } - } - - // the driver needs a default - sort = opts.sort || []; - - model - .collection - .findAndModify(castedQuery, sort, castedDoc, opts, tick(function (err, doc) { - if (err) return promise.error(err); - if (!doc) return promise.complete(null); - - if (!self.options.populate) { - return true === opts.lean - ? promise.complete(doc) - : completeOne(model, doc, fields, self, null, promise); - } - - var pop = helpers.preparePopulationOptions(self, opts); - model.populate(doc, pop, function (err, doc) { - if (err) return promise.error(err); - return true === opts.lean - ? promise.complete(doc) - : completeOne(model, doc, fields, self, pop, promise); - }) - })); - - return promise; -} - -/** - * Specifies paths which should be populated with other documents. - * - * ####Example: - * - * Kitten.findOne().populate('owner').exec(function (err, kitten) { - * console.log(kitten.owner.name) // Max - * }) - * - * Kitten.find().populate({ - * path: 'owner' - * , select: 'name' - * , match: { color: 'black' } - * , options: { sort: { name: -1 }} - * }).exec(function (err, kittens) { - * console.log(kittens[0].owner.name) // Zoopa - * }) - * - * // alternatively - * Kitten.find().populate('owner', 'name', null, {sort: { name: -1 }}).exec(function (err, kittens) { - * console.log(kittens[0].owner.name) // Zoopa - * }) - * - * Paths are populated after the query executes and a response is received. A separate query is then executed for each path specified for population. After a response for each query has also been returned, the results are passed to the callback. - * - * @param {Object|String} path either the path to populate or an object specifying all parameters - * @param {Object|String} [select] Field selection for the population query - * @param {Model} [model] The name of the model you wish to use for population. If not specified, the name is looked up from the Schema ref. - * @param {Object} [match] Conditions for the population query - * @param {Object} [options] Options for the population query (sort, etc) - * @see population ./populate.html - * @see Query#select #query_Query-select - * @see Model.populate #model_Model.populate - * @return {Query} this - * @api public - */ - -Query.prototype.populate = function populate () { - var res = utils.populate.apply(null, arguments); - var opts = this.options; - - if (!utils.isObject(opts.populate)) { - opts.populate = {}; - } - - for (var i = 0; i < res.length; ++i) { - opts.populate[res[i].path] = res[i]; - } - - return this; -} - -/** - * Returns a Node.js 0.8 style [read stream](http://nodejs.org/docs/v0.8.21/api/stream.html#stream_readable_stream) interface. - * - * ####Example - * - * // follows the nodejs 0.8 stream api - * Thing.find({ name: /^hello/ }).stream().pipe(res) - * - * // manual streaming - * var stream = Thing.find({ name: /^hello/ }).stream(); - * - * stream.on('data', function (doc) { - * // do something with the mongoose document - * }).on('error', function (err) { - * // handle the error - * }).on('close', function () { - * // the stream is closed - * }); - * - * ####Valid options - * - * - `transform`: optional function which accepts a mongoose document. The return value of the function will be emitted on `data`. - * - * ####Example - * - * // JSON.stringify all documents before emitting - * var stream = Thing.find().stream({ transform: JSON.stringify }); - * stream.pipe(writeStream); - * - * @return {QueryStream} - * @param {Object} [options] - * @see QueryStream - * @api public - */ - -Query.prototype.stream = function stream (opts) { - return new QueryStream(this, opts); -} - -// helpers - -/*! - * castDoc - * @api private - */ - -function castDoc (query) { - try { - return query._castUpdate(query._updateArg); - } catch (err) { - return err; - } -} - -/*! - * castQuery - * @api private - */ - -function castQuery (query) { - try { - return query.cast(query.model); - } catch (err) { - return err; - } -} - -/*! - * Exports. - */ - -module.exports = Query; -module.exports.QueryStream = QueryStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js deleted file mode 100644 index 4637fad..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/queryhelpers.js +++ /dev/null @@ -1,35 +0,0 @@ - -/*! - * Module dependencies - */ - -var utils = require('./utils') - -/*! - * Prepare a set of path options for query population. - * - * @param {Query} query - * @param {Object} options - * @return {Array} - */ - -exports.preparePopulationOptions = function preparePopulationOptions (query, options) { - var pop = utils.object.vals(query.options.populate); - - // lean options should trickle through all queries - if (options.lean) pop.forEach(makeLean); - - return pop; -} - -/*! - * Set each path query option to lean - * - * @param {Object} option - */ - -function makeLean (option) { - option.options || (option.options = {}); - option.options.lean = true; -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js deleted file mode 100644 index 6db7570..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/querystream.js +++ /dev/null @@ -1,336 +0,0 @@ - -/*! - * Module dependencies. - */ - -var Stream = require('stream').Stream -var utils = require('./utils') -var helpers = require('./queryhelpers') -var K = function(k){ return k } - -/** - * Provides a Node.js 0.8 style [ReadStream](http://nodejs.org/docs/v0.8.21/api/stream.html#stream_readable_stream) interface for Queries. - * - * var stream = Model.find().stream(); - * - * stream.on('data', function (doc) { - * // do something with the mongoose document - * }).on('error', function (err) { - * // handle the error - * }).on('close', function () { - * // the stream is closed - * }); - * - * - * The stream interface allows us to simply "plug-in" to other _Node.js 0.8_ style write streams. - * - * Model.where('created').gte(twoWeeksAgo).stream().pipe(writeStream); - * - * ####Valid options - * - * - `transform`: optional function which accepts a mongoose document. The return value of the function will be emitted on `data`. - * - * ####Example - * - * // JSON.stringify all documents before emitting - * var stream = Thing.find().stream({ transform: JSON.stringify }); - * stream.pipe(writeStream); - * - * _NOTE: plugging into an HTTP response will *not* work out of the box. Those streams expect only strings or buffers to be emitted, so first formatting our documents as strings/buffers is necessary._ - * - * _NOTE: these streams are Node.js 0.8 style read streams which differ from Node.js 0.10 style. Node.js 0.10 streams are not well tested yet and are not guaranteed to work._ - * - * @param {Query} query - * @param {Object} [options] - * @inherits NodeJS Stream http://nodejs.org/docs/v0.8.21/api/stream.html#stream_readable_stream - * @event `data`: emits a single Mongoose document - * @event `error`: emits when an error occurs during streaming. This will emit _before_ the `close` event. - * @event `close`: emits when the stream reaches the end of the cursor or an error occurs, or the stream is manually `destroy`ed. After this event, no more events are emitted. - * @api public - */ - -function QueryStream (query, options) { - Stream.call(this); - - this.query = query; - this.readable = true; - this.paused = false; - this._cursor = null; - this._destroyed = null; - this._fields = null; - this._buffer = null; - this._inline = T_INIT; - this._running = false; - this._transform = options && 'function' == typeof options.transform - ? options.transform - : K; - - // give time to hook up events - var self = this; - process.nextTick(function () { - self._init(); - }); -} - -/*! - * Inherit from Stream - */ - -QueryStream.prototype.__proto__ = Stream.prototype; - -/** - * Flag stating whether or not this stream is readable. - * - * @property readable - * @api public - */ - -QueryStream.prototype.readable; - -/** - * Flag stating whether or not this stream is paused. - * - * @property paused - * @api public - */ - -QueryStream.prototype.paused; - -// trampoline flags -var T_INIT = 0; -var T_IDLE = 1; -var T_CONT = 2; - -/** - * Initializes the query. - * - * @api private - */ - -QueryStream.prototype._init = function () { - if (this._destroyed) return; - - var query = this.query - , model = query.model - , options = query._optionsForExec(model) - , self = this - - try { - query.cast(model); - } catch (err) { - return self.destroy(err); - } - - self._fields = utils.clone(query._fields); - options.fields = query._castFields(self._fields); - - model.collection.find(query._conditions, options, function (err, cursor) { - if (err) return self.destroy(err); - self._cursor = cursor; - self._next(); - }); -} - -/** - * Trampoline for pulling the next doc from cursor. - * - * @see QueryStream#__next #querystream_QueryStream-__next - * @api private - */ - -QueryStream.prototype._next = function _next () { - if (this.paused || this._destroyed) { - return this._running = false; - } - - this._running = true; - - if (this._buffer && this._buffer.length) { - var arg; - while (!this.paused && !this._destroyed && (arg = this._buffer.shift())) { - this._onNextObject.apply(this, arg); - } - } - - // avoid stack overflows with large result sets. - // trampoline instead of recursion. - while (this.__next()) {} -} - -/** - * Pulls the next doc from the cursor. - * - * @see QueryStream#_next #querystream_QueryStream-_next - * @api private - */ - -QueryStream.prototype.__next = function () { - if (this.paused || this._destroyed) - return this._running = false; - - var self = this; - self._inline = T_INIT; - - self._cursor.nextObject(function cursorcb (err, doc) { - self._onNextObject(err, doc); - }); - - // if onNextObject() was already called in this tick - // return ourselves to the trampoline. - if (T_CONT === this._inline) { - return true; - } else { - // onNextObject() hasn't fired yet. tell onNextObject - // that its ok to call _next b/c we are not within - // the trampoline anymore. - this._inline = T_IDLE; - } -} - -/** - * Transforms raw `doc`s returned from the cursor into a model instance. - * - * @param {Error|null} err - * @param {Object} doc - * @api private - */ - -QueryStream.prototype._onNextObject = function _onNextObject (err, doc) { - if (this._destroyed) return; - - if (this.paused) { - this._buffer || (this._buffer = []); - this._buffer.push([err, doc]); - return this._running = false; - } - - if (err) return this.destroy(err); - - // when doc is null we hit the end of the cursor - if (!doc) { - this.emit('end'); - return this.destroy(); - } - - var opts = this.query.options; - - if (!opts.populate) { - return true === opts.lean - ? emit(this, doc) - : createAndEmit(this, doc); - } - - var self = this; - var pop = helpers.preparePopulationOptions(self.query, self.query.options); - - self.query.model.populate(doc, pop, function (err, doc) { - if (err) return self.destroy(err); - return true === opts.lean - ? emit(self, doc) - : createAndEmit(self, doc); - }) -} - -function createAndEmit (self, doc) { - var instance = new self.query.model(undefined, self._fields, true); - instance.init(doc, function (err) { - if (err) return self.destroy(err); - emit(self, instance); - }); -} - -/*! - * Emit a data event and manage the trampoline state - */ - -function emit (self, doc) { - self.emit('data', self._transform(doc)); - - // trampoline management - if (T_IDLE === self._inline) { - // no longer in trampoline. restart it. - self._next(); - } else { - // in a trampoline. tell __next that its - // ok to continue jumping. - self._inline = T_CONT; - } -} - -/** - * Pauses this stream. - * - * @api public - */ - -QueryStream.prototype.pause = function () { - this.paused = true; -} - -/** - * Resumes this stream. - * - * @api public - */ - -QueryStream.prototype.resume = function () { - this.paused = false; - - if (!this._cursor) { - // cannot start if not initialized - return; - } - - // are we within the trampoline? - if (T_INIT === this._inline) { - return; - } - - if (!this._running) { - // outside QueryStream control, need manual restart - return this._next(); - } -} - -/** - * Destroys the stream, closing the underlying cursor. No more events will be emitted. - * - * @param {Error} [err] - * @api public - */ - -QueryStream.prototype.destroy = function (err) { - if (this._destroyed) return; - this._destroyed = true; - this._running = false; - this.readable = false; - - if (this._cursor) { - this._cursor.close(); - } - - if (err) { - this.emit('error', err); - } - - this.emit('close'); -} - -/** - * Pipes this query stream into another stream. This method is inherited from NodeJS Streams. - * - * ####Example: - * - * query.stream().pipe(writeStream [, options]) - * - * @method pipe - * @memberOf QueryStream - * @see NodeJS http://nodejs.org/api/stream.html - * @api public - */ - -/*! - * Module exports - */ - -module.exports = exports = QueryStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js deleted file mode 100644 index 53effd4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema.js +++ /dev/null @@ -1,910 +0,0 @@ -/*! - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter - , VirtualType = require('./virtualtype') - , utils = require('./utils') - , NamedScope - , Query - , Types - -/** - * Schema constructor. - * - * ####Example: - * - * var child = new Schema({ name: String }); - * var schema = new Schema({ name: String, age: Number, children: [child] }); - * var Tree = mongoose.model('Tree', schema); - * - * // setting schema options - * new Schema({ name: String }, { _id: false, autoIndex: false }) - * - * ####Options: - * - * - [autoIndex](/docs/guide.html#autoIndex): bool - defaults to true - * - [bufferCommands](/docs/guide.html#bufferCommands): bool - defaults to true - * - [capped](/docs/guide.html#capped): bool - defaults to false - * - [collection](/docs/guide.html#collection): string - no default - * - [id](/docs/guide.html#id): bool - defaults to true - * - [_id](/docs/guide.html#_id): bool - defaults to true - * - `minimize`: bool - controls [document#toObject](#document_Document-toObject) behavior when called manually - defaults to true - * - [read](/docs/guide.html#read): string - * - [safe](/docs/guide.html#safe): bool - defaults to true. - * - [shardKey](/docs/guide.html#shardKey): bool - defaults to `null` - * - [strict](/docs/guide.html#strict): bool - defaults to true - * - [toJSON](/docs/guide.html#toJSON) - object - no default - * - [toObject](/docs/guide.html#toObject) - object - no default - * - [versionKey](/docs/guide.html#versionKey): bool - defaults to "__v" - * - * ####Note: - * - * _When nesting schemas, (`children` in the example above), always declare the child schema first before passing it into is parent._ - * - * @param {Object} definition - * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `init`: Emitted after the schema is compiled into a `Model`. - * @api public - */ - -function Schema (obj, options) { - if (!(this instanceof Schema)) - return new Schema(obj, options); - - this.paths = {}; - this.subpaths = {}; - this.virtuals = {}; - this.nested = {}; - this.inherits = {}; - this.callQueue = []; - this._indexes = []; - this.methods = {}; - this.statics = {}; - this.tree = {}; - this._requiredpaths = undefined; - - this.options = this.defaultOptions(options); - - // build paths - if (obj) { - this.add(obj); - } - - // ensure the documents get an auto _id unless disabled - var auto_id = !this.paths['_id'] && (!this.options.noId && this.options._id); - if (auto_id) { - this.add({ _id: {type: Schema.ObjectId, auto: true} }); - } - - // ensure the documents receive an id getter unless disabled - var autoid = !this.paths['id'] && (!this.options.noVirtualId && this.options.id); - if (autoid) { - this.virtual('id').get(idGetter); - } -} - -/*! - * Returns this documents _id cast to a string. - */ - -function idGetter () { - if (this.$__._id) { - return this.$__._id; - } - - return this.$__._id = null == this._id - ? null - : String(this._id); -} - -/*! - * Inherit from EventEmitter. - */ - -Schema.prototype.__proto__ = EventEmitter.prototype; - -/** - * Schema as flat paths - * - * ####Example: - * { - * '_id' : SchemaType, - * , 'nested.key' : SchemaType, - * } - * - * @api private - * @property paths - */ - -Schema.prototype.paths; - -/** - * Schema as a tree - * - * ####Example: - * { - * '_id' : ObjectId - * , 'nested' : { - * 'key' : String - * } - * } - * - * @api private - * @property tree - */ - -Schema.prototype.tree; - -/** - * Returns default options for this schema, merged with `options`. - * - * @param {Object} options - * @return {Object} - * @api private - */ - -Schema.prototype.defaultOptions = function (options) { - if (options && false === options.safe) { - options.safe = { w: 0 }; - } - - options = utils.options({ - strict: true - , bufferCommands: true - , capped: false // { size, max, autoIndexId } - , versionKey: '__v' - , minimize: true - , autoIndex: true - , shardKey: null - , read: null - // the following are only applied at construction time - , noId: false // deprecated, use { _id: false } - , _id: true - , noVirtualId: false // deprecated, use { id: false } - , id: true - }, options); - - if (options.read) - options.read = utils.readPref(options.read); - - return options; -} - -/** - * Adds key path / schema type pairs to this schema. - * - * ####Example: - * - * var ToySchema = new Schema; - * ToySchema.add({ name: 'string', color: 'string', price: 'number' }); - * - * @param {Object} obj - * @param {String} prefix - * @api public - */ - -Schema.prototype.add = function add (obj, prefix) { - prefix = prefix || ''; - var keys = Object.keys(obj); - - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - - if (null == obj[key]) { - throw new TypeError('Invalid value for schema path `'+ prefix + key +'`'); - } - - if (utils.isObject(obj[key]) && (!obj[key].constructor || 'Object' == obj[key].constructor.name) && (!obj[key].type || obj[key].type.type)) { - if (Object.keys(obj[key]).length) { - // nested object { last: { name: String }} - this.nested[prefix + key] = true; - this.add(obj[key], prefix + key + '.'); - } else { - this.path(prefix + key, obj[key]); // mixed type - } - } else { - this.path(prefix + key, obj[key]); - } - } -}; - -/** - * Reserved document keys. - * - * Keys in this object are names that are rejected in schema declarations b/c they conflict with mongoose functionality. Using these key name will throw an error. - * - * on, emit, _events, db, init, isNew, errors, schema, options, modelName, collection, _pres, _posts, toObject - * - * _NOTE:_ Use of these terms as method names is permitted, but play at your own risk, as they may be existing mongoose document methods you are stomping on. - * - * var schema = new Schema(..); - * schema.methods.init = function () {} // potentially breaking - */ - -Schema.reserved = Object.create(null); -var reserved = Schema.reserved; -reserved.on = -reserved.db = -reserved.init = -reserved.isNew = -reserved.errors = -reserved.schema = -reserved.options = -reserved.modelName = -reserved.collection = -reserved.toObject = -reserved.emit = // EventEmitter -reserved._events = // EventEmitter -reserved._pres = reserved._posts = 1 // hooks.js - -/** - * Gets/sets schema paths. - * - * Sets a path (if arity 2) - * Gets a path (if arity 1) - * - * ####Example - * - * schema.path('name') // returns a SchemaType - * schema.path('name', Number) // changes the schemaType of `name` to Number - * - * @param {String} path - * @param {Object} constructor - * @api public - */ - -Schema.prototype.path = function (path, obj) { - if (obj == undefined) { - if (this.paths[path]) return this.paths[path]; - if (this.subpaths[path]) return this.subpaths[path]; - - // subpaths? - return /\.\d+\.?.*$/.test(path) - ? getPositionalPath(this, path) - : undefined; - } - - // some path names conflict with document methods - if (reserved[path]) { - throw new Error("`" + path + "` may not be used as a schema pathname"); - } - - // update the tree - var subpaths = path.split(/\./) - , last = subpaths.pop() - , branch = this.tree; - - subpaths.forEach(function(sub, i) { - if (!branch[sub]) branch[sub] = {}; - if ('object' != typeof branch[sub]) { - var msg = 'Cannot set nested path `' + path + '`. ' - + 'Parent path `' - + subpaths.slice(0, i).concat([sub]).join('.') - + '` already set to type ' + branch[sub].name - + '.'; - throw new Error(msg); - } - branch = branch[sub]; - }); - - branch[last] = utils.clone(obj); - - this.paths[path] = Schema.interpretAsType(path, obj); - return this; -}; - -/** - * Converts type arguments into Mongoose Types. - * - * @param {String} path - * @param {Object} obj constructor - * @api private - */ - -Schema.interpretAsType = function (path, obj) { - if (obj.constructor && obj.constructor.name != 'Object') - obj = { type: obj }; - - // Get the type making sure to allow keys named "type" - // and default to mixed if not specified. - // { type: { type: String, default: 'freshcut' } } - var type = obj.type && !obj.type.type - ? obj.type - : {}; - - if ('Object' == type.constructor.name || 'mixed' == type) { - return new Types.Mixed(path, obj); - } - - if (Array.isArray(type) || Array == type || 'array' == type) { - // if it was specified through { type } look for `cast` - var cast = (Array == type || 'array' == type) - ? obj.cast - : type[0]; - - if (cast instanceof Schema) { - return new Types.DocumentArray(path, cast, obj); - } - - if ('string' == typeof cast) { - cast = Types[cast.charAt(0).toUpperCase() + cast.substring(1)]; - } else if (cast && (!cast.type || cast.type.type) - && 'Object' == cast.constructor.name - && Object.keys(cast).length) { - return new Types.DocumentArray(path, new Schema(cast), obj); - } - - return new Types.Array(path, cast || Types.Mixed, obj); - } - - var name = 'string' == typeof type - ? type - : type.name; - - if (name) { - name = name.charAt(0).toUpperCase() + name.substring(1); - } - - if (undefined == Types[name]) { - throw new TypeError('Undefined type at `' + path + - '`\n Did you try nesting Schemas? ' + - 'You can only nest using refs or arrays.'); - } - - return new Types[name](path, obj); -}; - -/** - * Iterates the schemas paths similar to Array#forEach. - * - * The callback is passed the pathname and schemaType as arguments on each iteration. - * - * @param {Function} fn callback function - * @return {Schema} this - * @api public - */ - -Schema.prototype.eachPath = function (fn) { - var keys = Object.keys(this.paths) - , len = keys.length; - - for (var i = 0; i < len; ++i) { - fn(keys[i], this.paths[keys[i]]); - } - - return this; -}; - -/** - * Returns an Array of path strings that are required by this schema. - * - * @api public - * @return {Array} - */ - -Schema.prototype.requiredPaths = function requiredPaths () { - if (this._requiredpaths) return this._requiredpaths; - - var paths = Object.keys(this.paths) - , i = paths.length - , ret = []; - - while (i--) { - var path = paths[i]; - if (this.paths[path].isRequired) ret.push(path); - } - - return this._requiredpaths = ret; -} - -/** - * Returns the pathType of `path` for this schema. - * - * Given a path, returns whether it is a real, virtual, nested, or ad-hoc/undefined path. - * - * @param {String} path - * @return {String} - * @api public - */ - -Schema.prototype.pathType = function (path) { - if (path in this.paths) return 'real'; - if (path in this.virtuals) return 'virtual'; - if (path in this.nested) return 'nested'; - if (path in this.subpaths) return 'real'; - - if (/\.\d+\.|\.\d+$/.test(path) && getPositionalPath(this, path)) { - return 'real'; - } else { - return 'adhocOrUndefined' - } -}; - -/*! - * ignore - */ - -function getPositionalPath (self, path) { - var subpaths = path.split(/\.(\d+)\.|\.(\d+)$/).filter(Boolean); - if (subpaths.length < 2) { - return self.paths[subpaths[0]]; - } - - var val = self.path(subpaths[0]); - if (!val) return val; - - var last = subpaths.length - 1 - , subpath - , i = 1; - - for (; i < subpaths.length; ++i) { - subpath = subpaths[i]; - - if (i === last && val && !val.schema && !/\D/.test(subpath)) { - if (val instanceof Types.Array) { - // StringSchema, NumberSchema, etc - val = val.caster; - } else { - val = undefined; - } - break; - } - - // ignore if its just a position segment: path.0.subpath - if (!/\D/.test(subpath)) continue; - - if (!(val && val.schema)) { - val = undefined; - break; - } - - val = val.schema.path(subpath); - } - - return self.subpaths[path] = val; -} - -/** - * Adds a method call to the queue. - * - * @param {String} name name of the document method to call later - * @param {Array} args arguments to pass to the method - * @api private - */ - -Schema.prototype.queue = function(name, args){ - this.callQueue.push([name, args]); - return this; -}; - -/** - * Defines a pre hook for the document. - * - * ####Example - * - * var toySchema = new Schema(..); - * - * toySchema.pre('save', function (next) { - * if (!this.created) this.created = new Date; - * next(); - * }) - * - * toySchema.pre('validate', function (next) { - * if (this.name != 'Woody') this.name = 'Woody'; - * next(); - * }) - * - * @param {String} method - * @param {Function} callback - * @see hooks.js https://github.com/bnoguchi/hooks-js/tree/31ec571cef0332e21121ee7157e0cf9728572cc3 - * @api public - */ - -Schema.prototype.pre = function(){ - return this.queue('pre', arguments); -}; - -/** - * Defines a post for the document - * - * Post hooks fire `on` the event emitted from document instances of Models compiled from this schema. - * - * var schema = new Schema(..); - * schema.post('save', function (doc) { - * console.log('this fired after a document was saved'); - * }); - * - * var Model = mongoose.model('Model', schema); - * - * var m = new Model(..); - * m.save(function (err) { - * console.log('this fires after the `post` hook'); - * }); - * - * @param {String} method name of the method to hook - * @param {Function} fn callback - * @see hooks.js https://github.com/bnoguchi/hooks-js/tree/31ec571cef0332e21121ee7157e0cf9728572cc3 - * @api public - */ - -Schema.prototype.post = function(method, fn){ - return this.queue('on', arguments); -}; - -/** - * Registers a plugin for this schema. - * - * @param {Function} plugin callback - * @param {Object} opts - * @see plugins - * @api public - */ - -Schema.prototype.plugin = function (fn, opts) { - fn(this, opts); - return this; -}; - -/** - * Adds an instance method to documents constructed from Models compiled from this schema. - * - * ####Example - * - * var schema = kittySchema = new Schema(..); - * - * schema.method('meow', function () { - * console.log('meeeeeoooooooooooow'); - * }) - * - * var Kitty = mongoose.model('Kitty', schema); - * - * var fizz = new Kitty; - * fizz.meow(); // meeeeeooooooooooooow - * - * If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as methods. - * - * schema.method({ - * purr: function () {} - * , scratch: function () {} - * }); - * - * // later - * fizz.purr(); - * fizz.scratch(); - * - * @param {String|Object} method name - * @param {Function} [fn] - * @api public - */ - -Schema.prototype.method = function (name, fn) { - if ('string' != typeof name) - for (var i in name) - this.methods[i] = name[i]; - else - this.methods[name] = fn; - return this; -}; - -/** - * Adds static "class" methods to Models compiled from this schema. - * - * ####Example - * - * var schema = new Schema(..); - * schema.static('findByName', function (name, callback) { - * return this.find({ name: name }, callback); - * }); - * - * var Drink = mongoose.model('Drink', schema); - * Drink.findByName('sanpellegrino', function (err, drinks) { - * // - * }); - * - * If a hash of name/fn pairs is passed as the only argument, each name/fn pair will be added as statics. - * - * @param {String} name - * @param {Function} fn - * @api public - */ - -Schema.prototype.static = function(name, fn) { - if ('string' != typeof name) - for (var i in name) - this.statics[i] = name[i]; - else - this.statics[name] = fn; - return this; -}; - -/** - * Defines an index (most likely compound) for this schema. - * - * ####Example - * - * schema.index({ first: 1, last: -1 }) - * - * @param {Object} fields - * @param {Object} [options] - * @api public - */ - -Schema.prototype.index = function (fields, options) { - options || (options = {}); - - if (options.expires) - utils.expires(options); - - this._indexes.push([fields, options]); - return this; -}; - -/** - * Sets/gets a schema option. - * - * @param {String} key option name - * @param {Object} [value] if not passed, the current option value is returned - * @api public - */ - -Schema.prototype.set = function (key, value, _tags) { - if (1 === arguments.length) { - return this.options[key]; - } - - switch (key) { - case 'read': - this.options[key] = utils.readPref(value, _tags) - break; - case 'safe': - this.options[key] = false === value - ? { w: 0 } - : value - break; - default: - this.options[key] = value; - } - - return this; -} - -/** - * Gets a schema option. - * - * @param {String} key option name - * @api public - */ - -Schema.prototype.get = function (key) { - return this.options[key]; -} - -/** - * The allowed index types - * - * @static indexTypes - * @receiver Schema - * @api public - */ - -var indexTypes = '2d 2dsphere hashed text'.split(' '); - -Object.defineProperty(Schema, 'indexTypes', { - get: function () { return indexTypes } - , set: function () { throw new Error('Cannot overwrite Schema.indexTypes') } -}) - -/** - * Compiles indexes from fields and schema-level indexes - * - * @api public - */ - -Schema.prototype.indexes = function () { - 'use strict'; - - var indexes = [] - , seenSchemas = [] - collectIndexes(this); - return indexes; - - function collectIndexes (schema, prefix) { - if (~seenSchemas.indexOf(schema)) return; - seenSchemas.push(schema); - - prefix = prefix || ''; - - var key, path, index, field, isObject, options, type; - var keys = Object.keys(schema.paths); - - for (var i = 0; i < keys.length; ++i) { - key = keys[i]; - path = schema.paths[key]; - - if (path instanceof Types.DocumentArray) { - collectIndexes(path.schema, key + '.'); - } else { - index = path._index; - - if (false !== index && null != index) { - field = {}; - isObject = utils.isObject(index); - options = isObject ? index : {}; - type = 'string' == typeof index ? index : - isObject ? index.type : - false; - - if (type && ~Schema.indexTypes.indexOf(type)) { - field[prefix + key] = type; - } else { - field[prefix + key] = 1; - } - - delete options.type; - if (!('background' in options)) { - options.background = true; - } - - indexes.push([field, options]); - } - } - } - - if (prefix) { - fixSubIndexPaths(schema, prefix); - } else { - schema._indexes.forEach(function (index) { - if (!('background' in index[1])) index[1].background = true; - }); - indexes = indexes.concat(schema._indexes); - } - } - - /*! - * Checks for indexes added to subdocs using Schema.index(). - * These indexes need their paths prefixed properly. - * - * schema._indexes = [ [indexObj, options], [indexObj, options] ..] - */ - - function fixSubIndexPaths (schema, prefix) { - var subindexes = schema._indexes - , len = subindexes.length - , indexObj - , newindex - , klen - , keys - , key - , i = 0 - , j - - for (i = 0; i < len; ++i) { - indexObj = subindexes[i][0]; - keys = Object.keys(indexObj); - klen = keys.length; - newindex = {}; - - // use forward iteration, order matters - for (j = 0; j < klen; ++j) { - key = keys[j]; - newindex[prefix + key] = indexObj[key]; - } - - indexes.push([newindex, subindexes[i][1]]); - } - } -} - -/** - * Creates a virtual type with the given name. - * - * @param {String} name - * @param {Object} [options] - * @return {VirtualType} - */ - -Schema.prototype.virtual = function (name, options) { - var virtuals = this.virtuals; - var parts = name.split('.'); - return virtuals[name] = parts.reduce(function (mem, part, i) { - mem[part] || (mem[part] = (i === parts.length-1) - ? new VirtualType(options, name) - : {}); - return mem[part]; - }, this.tree); -}; - -/** - * Returns the virtual type with the given `name`. - * - * @param {String} name - * @return {VirtualType} - */ - -Schema.prototype.virtualpath = function (name) { - return this.virtuals[name]; -}; - -/** - * These still haven't been fixed. Once they're working we'll make them public again. - * @api private - */ - -Schema.prototype.namedScope = function (name, fn) { - var namedScopes = this.namedScopes || (this.namedScopes = new NamedScope) - , newScope = Object.create(namedScopes) - , allScopes = namedScopes.scopesByName || (namedScopes.scopesByName = {}); - allScopes[name] = newScope; - newScope.name = name; - newScope.block = fn; - newScope.query = new Query(); - newScope.decorate(namedScopes, { - block0: function (block) { - return function () { - block.call(this.query); - return this; - }; - }, - blockN: function (block) { - return function () { - block.apply(this.query, arguments); - return this; - }; - }, - basic: function (query) { - return function () { - this.query.find(query); - return this; - }; - } - }); - return newScope; -}; - -/*! - * Module exports. - */ - -module.exports = exports = Schema; - -// require down here because of reference issues - -/** - * The various built-in Mongoose Schema Types. - * - * ####Example: - * - * var mongoose = require('mongoose'); - * var ObjectId = mongoose.Schema.Types.ObjectId; - * - * ####Types: - * - * - [String](#schema-string-js) - * - [Number](#schema-number-js) - * - [Boolean](#schema-boolean-js) | Bool - * - [Array](#schema-array-js) - * - [Buffer](#schema-buffer-js) - * - [Date](#schema-date-js) - * - [ObjectId](#schema-objectid-js) | Oid - * - [Mixed](#schema-mixed-js) - * - * Using this exposed access to the `Mixed` SchemaType, we can use them in our schema. - * - * var Mixed = mongoose.Schema.Types.Mixed; - * new mongoose.Schema({ _user: Mixed }) - * - * @api public - */ - -Schema.Types = require('./schema/index'); - -/*! - * ignore - */ - -Types = Schema.Types; -NamedScope = require('./namedscope') -Query = require('./query'); -var ObjectId = exports.ObjectId = Types.ObjectId; - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js deleted file mode 100644 index 81f3dd5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/array.js +++ /dev/null @@ -1,314 +0,0 @@ -/*! - * Module dependencies. - */ - -var SchemaType = require('../schematype') - , CastError = SchemaType.CastError - , NumberSchema = require('./number') - , Types = { - Boolean: require('./boolean') - , Date: require('./date') - , Number: require('./number') - , String: require('./string') - , ObjectId: require('./objectid') - , Buffer: require('./buffer') - } - , MongooseArray = require('../types').Array - , EmbeddedDoc = require('../types').Embedded - , Mixed = require('./mixed') - , Query = require('../query') - , utils = require('../utils') - , isMongooseObject = utils.isMongooseObject - -/** - * Array SchemaType constructor - * - * @param {String} key - * @param {SchemaType} cast - * @param {Object} options - * @inherits SchemaType - * @api private - */ - -function SchemaArray (key, cast, options) { - if (cast) { - var castOptions = {}; - - if ('Object' === cast.constructor.name) { - if (cast.type) { - // support { type: Woot } - castOptions = utils.clone(cast); // do not alter user arguments - delete castOptions.type; - cast = cast.type; - } else { - cast = Mixed; - } - } - - // support { type: 'String' } - var name = 'string' == typeof cast - ? cast - : cast.name; - - var caster = name in Types - ? Types[name] - : cast; - - this.casterConstructor = caster; - this.caster = new caster(null, castOptions); - if (!(this.caster instanceof EmbeddedDoc)) { - this.caster.path = key; - } - } - - SchemaType.call(this, key, options); - - var self = this - , defaultArr - , fn; - - if (this.defaultValue) { - defaultArr = this.defaultValue; - fn = 'function' == typeof defaultArr; - } - - this.default(function(){ - var arr = fn ? defaultArr() : defaultArr || []; - return new MongooseArray(arr, self.path, this); - }); -}; - -/*! - * Inherits from SchemaType. - */ - -SchemaArray.prototype.__proto__ = SchemaType.prototype; - -/** - * Check required - * - * @param {Array} value - * @api private - */ - -SchemaArray.prototype.checkRequired = function (value) { - return !!(value && value.length); -}; - -/** - * Overrides the getters application for the population special-case - * - * @param {Object} value - * @param {Object} scope - * @api private - */ - -SchemaArray.prototype.applyGetters = function (value, scope) { - if (this.caster.options && this.caster.options.ref) { - // means the object id was populated - return value; - } - - return SchemaType.prototype.applyGetters.call(this, value, scope); -}; - -/** - * Casts contents - * - * @param {Object} value - * @param {Document} doc document that triggers the casting - * @param {Boolean} init whether this is an initialization cast - * @api private - */ - -SchemaArray.prototype.cast = function (value, doc, init) { - if (Array.isArray(value)) { - if (!(value instanceof MongooseArray)) { - value = new MongooseArray(value, this.path, doc); - } - - if (this.caster) { - try { - for (var i = 0, l = value.length; i < l; i++) { - value[i] = this.caster.cast(value[i], doc, init); - } - } catch (e) { - // rethrow - throw new CastError(e.type, value, this.path); - } - } - - return value; - } else { - return this.cast([value], doc, init); - } -}; - -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - -SchemaArray.prototype.castForQuery = function ($conditional, value) { - var handler - , val; - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - if (!handler) - throw new Error("Can't use " + $conditional + " with Array."); - val = handler.call(this, value); - } else { - val = $conditional; - var proto = this.casterConstructor.prototype; - var method = proto.castForQuery || proto.cast; - - var caster = this.caster; - if (Array.isArray(val)) { - val = val.map(function (v) { - if (method) v = method.call(caster, v); - - return isMongooseObject(v) - ? v.toObject() - : v; - }); - } else if (method) { - val = method.call(caster, val); - } - } - return val && isMongooseObject(val) - ? val.toObject() - : val; -}; - -/*! - * @ignore - */ - -function castToNumber (val) { - return Types.Number.prototype.cast.call(this, val); -} - -function castArray (arr, self) { - self || (self = this); - - arr.forEach(function (v, i) { - if (Array.isArray(v)) { - castArray(v, self); - } else { - arr[i] = castToNumber.call(self, v); - } - }); -} - -SchemaArray.prototype.$conditionalHandlers = { - '$all': function handle$all (val) { - if (!Array.isArray(val)) { - val = [val]; - } - - val = val.map(function (v) { - if (v && 'Object' === v.constructor.name) { - var o = {}; - o[this.path] = v; - var query = new Query(o); - query.cast(this.casterConstructor); - return query._conditions[this.path]; - } - return v; - }, this); - - return this.castForQuery(val); - } - , '$elemMatch': function (val) { - if (val.$in) { - val.$in = this.castForQuery('$in', val.$in); - return val; - } - - var query = new Query(val); - query.cast(this.casterConstructor); - return query._conditions; - } - , '$size': castToNumber - , '$ne': SchemaArray.prototype.castForQuery - , '$in': SchemaArray.prototype.castForQuery - , '$nin': SchemaArray.prototype.castForQuery - , '$regex': SchemaArray.prototype.castForQuery - , '$options': String - , '$near': SchemaArray.prototype.castForQuery - , '$nearSphere': SchemaArray.prototype.castForQuery - , '$gt': SchemaArray.prototype.castForQuery - , '$gte': SchemaArray.prototype.castForQuery - , '$lt': SchemaArray.prototype.castForQuery - , '$lte': SchemaArray.prototype.castForQuery - , '$within': function (val) { - var self = this; - - if (val.$maxDistance) { - val.$maxDistance = castToNumber.call(this, val.$maxDistance); - } - - if (val.$box || val.$polygon) { - var type = val.$box ? '$box' : '$polygon'; - val[type].forEach(function (arr) { - if (!Array.isArray(arr)) { - var msg = 'Invalid $within $box argument. ' - + 'Expected an array, received ' + arr; - throw new TypeError(msg); - } - arr.forEach(function (v, i) { - arr[i] = castToNumber.call(this, v); - }); - }) - } else if (val.$center || val.$centerSphere) { - var type = val.$center ? '$center' : '$centerSphere'; - val[type].forEach(function (item, i) { - if (Array.isArray(item)) { - item.forEach(function (v, j) { - item[j] = castToNumber.call(this, v); - }); - } else { - val[type][i] = castToNumber.call(this, item); - } - }) - } else if (val.$geometry) { - switch (val.$geometry.type) { - case 'Polygon': - case 'LineString': - case 'Point': - val.$geometry.coordinates.forEach(castArray); - break; - default: - // ignore unknowns - break; - } - } - - return val; - } - , '$geoIntersects': function (val) { - var geo = val.$geometry; - if (!geo) return; - - switch (val.$geometry.type) { - case 'Polygon': - case 'LineString': - case 'Point': - val.$geometry.coordinates.forEach(castArray); - break; - default: - // ignore unknowns - break; - } - } - , '$maxDistance': castToNumber -}; - -/*! - * Module exports. - */ - -module.exports = SchemaArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js deleted file mode 100644 index cc16b7a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/boolean.js +++ /dev/null @@ -1,92 +0,0 @@ -/*! - * Module dependencies. - */ - -var SchemaType = require('../schematype'); - -/** - * Boolean SchemaType constructor. - * - * @param {String} path - * @param {Object} options - * @inherits SchemaType - * @api private - */ - -function SchemaBoolean (path, options) { - SchemaType.call(this, path, options); -}; - -/*! - * Inherits from SchemaType. - */ -SchemaBoolean.prototype.__proto__ = SchemaType.prototype; - -/** - * Required validator - * - * @api private - */ - -SchemaBoolean.prototype.checkRequired = function (value) { - return value === true || value === false; -}; - -/** - * Casts to boolean - * - * @param {Object} value - * @api private - */ - -SchemaBoolean.prototype.cast = function (value) { - if (null === value) return value; - if ('0' === value) return false; - if ('true' === value) return true; - if ('false' === value) return false; - return !! value; -} - -/*! - * ignore - */ - -function handleArray (val) { - var self = this; - return val.map(function (m) { - return self.cast(m); - }); -} - -SchemaBoolean.$conditionalHandlers = { - '$in': handleArray -} - -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} val - * @api private - */ - -SchemaBoolean.prototype.castForQuery = function ($conditional, val) { - var handler; - if (2 === arguments.length) { - handler = SchemaBoolean.$conditionalHandlers[$conditional]; - - if (handler) { - return handler.call(this, val); - } - - return this.cast(val); - } - - return this.cast($conditional); -}; - -/*! - * Module exports. - */ - -module.exports = SchemaBoolean; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js deleted file mode 100644 index 55c0628..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/buffer.js +++ /dev/null @@ -1,163 +0,0 @@ -/*! - * Module dependencies. - */ - -var SchemaType = require('../schematype') - , CastError = SchemaType.CastError - , MongooseBuffer = require('../types').Buffer - , Binary = MongooseBuffer.Binary - , Query = require('../query') - , utils = require('../utils') - , Document - -/** - * Buffer SchemaType constructor - * - * @param {String} key - * @param {SchemaType} cast - * @inherits SchemaType - * @api private - */ - -function SchemaBuffer (key, options) { - SchemaType.call(this, key, options, 'Buffer'); -}; - -/*! - * Inherits from SchemaType. - */ - -SchemaBuffer.prototype.__proto__ = SchemaType.prototype; - -/** - * Check required - * - * @api private - */ - -SchemaBuffer.prototype.checkRequired = function (value, doc) { - if (SchemaType._isRef(this, value, doc, true)) { - return null != value; - } else { - return !!(value && value.length); - } -}; - -/** - * Casts contents - * - * @param {Object} value - * @param {Document} doc document that triggers the casting - * @param {Boolean} init - * @api private - */ - -SchemaBuffer.prototype.cast = function (value, doc, init) { - if (SchemaType._isRef(this, value, doc, init)) { - // wait! we may need to cast this to a document - - if (null == value) { - return value; - } - - // lazy load - Document || (Document = require('./../document')); - - if (value instanceof Document) { - value.$__.wasPopulated = true; - return value; - } - - // setting a populated path - if (Buffer.isBuffer(value)) { - return value; - } else if (!utils.isObject(value)) { - throw new CastError('buffer', value, this.path); - } - - // Handle the case where user directly sets a populated - // path to a plain object; cast to the Model used in - // the population query. - var path = doc.$__fullPath(this.path); - var owner = doc.ownerDocument ? doc.ownerDocument() : doc; - var pop = owner.populated(path, true); - var ret = new pop.options.model(value); - ret.$__.wasPopulated = true; - return ret; - } - - // documents - if (value && value._id) { - value = value._id; - } - - if (Buffer.isBuffer(value)) { - if (!(value instanceof MongooseBuffer)) { - value = new MongooseBuffer(value, [this.path, doc]); - } - - return value; - } else if (value instanceof Binary) { - return new MongooseBuffer(value.value(true), [this.path, doc]); - } - - if (null === value) return value; - - var type = typeof value; - if ('string' == type || 'number' == type || Array.isArray(value)) { - return new MongooseBuffer(value, [this.path, doc]); - } - - throw new CastError('buffer', value, this.path); -}; - -/*! - * ignore - */ -function handleSingle (val) { - return this.castForQuery(val); -} - -function handleArray (val) { - var self = this; - return val.map( function (m) { - return self.castForQuery(m); - }); -} - -SchemaBuffer.prototype.$conditionalHandlers = { - '$ne' : handleSingle - , '$in' : handleArray - , '$nin': handleArray - , '$gt' : handleSingle - , '$lt' : handleSingle - , '$gte': handleSingle - , '$lte': handleSingle -}; - -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - -SchemaBuffer.prototype.castForQuery = function ($conditional, val) { - var handler; - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - if (!handler) - throw new Error("Can't use " + $conditional + " with Buffer."); - return handler.call(this, val); - } else { - val = $conditional; - return this.cast(val).toObject(); - } -}; - -/*! - * Module exports. - */ - -module.exports = SchemaBuffer; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js deleted file mode 100644 index 86e4062..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/date.js +++ /dev/null @@ -1,167 +0,0 @@ -/*! - * Module requirements. - */ - -var SchemaType = require('../schematype'); -var CastError = SchemaType.CastError; -var utils = require('../utils'); - -/** - * Date SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api private - */ - -function SchemaDate (key, options) { - SchemaType.call(this, key, options); -}; - -/*! - * Inherits from SchemaType. - */ - -SchemaDate.prototype.__proto__ = SchemaType.prototype; - -/** - * Declares a TTL index (rounded to the nearest second) for _Date_ types only. - * - * This sets the `expiresAfterSeconds` index option available in MongoDB >= 2.1.2. - * This index type is only compatible with Date types. - * - * ####Example: - * - * // expire in 24 hours - * new Schema({ createdAt: { type: Date, expires: 60*60*24 }}); - * - * `expires` utilizes the `ms` module from [guille](https://github.com/guille/) allowing us to use a friendlier syntax: - * - * ####Example: - * - * // expire in 24 hours - * new Schema({ createdAt: { type: Date, expires: '24h' }}); - * - * // expire in 1.5 hours - * new Schema({ createdAt: { type: Date, expires: '1.5h' }}); - * - * // expire in 7 days - * var schema = new Schema({ createdAt: Date }); - * schema.path('createdAt').expires('7d'); - * - * @param {Number|String} when - * @added 3.0.0 - * @return {SchemaType} this - * @api public - */ - -SchemaDate.prototype.expires = function (when) { - if (!this._index || 'Object' !== this._index.constructor.name) { - this._index = {}; - } - - this._index.expires = when; - utils.expires(this._index); - return this; -}; - -/** - * Required validator for date - * - * @api private - */ - -SchemaDate.prototype.checkRequired = function (value) { - return value instanceof Date; -}; - -/** - * Casts to date - * - * @param {Object} value to cast - * @api private - */ - -SchemaDate.prototype.cast = function (value) { - if (value === null || value === '') - return null; - - if (value instanceof Date) - return value; - - var date; - - // support for timestamps - if (value instanceof Number || 'number' == typeof value - || String(value) == Number(value)) - date = new Date(Number(value)); - - // support for date strings - else if (value.toString) - date = new Date(value.toString()); - - if (date.toString() != 'Invalid Date') - return date; - - throw new CastError('date', value, this.path); -}; - -/*! - * Date Query casting. - * - * @api private - */ - -function handleSingle (val) { - return this.cast(val); -} - -function handleArray (val) { - var self = this; - return val.map( function (m) { - return self.cast(m); - }); -} - -SchemaDate.prototype.$conditionalHandlers = { - '$lt': handleSingle - , '$lte': handleSingle - , '$gt': handleSingle - , '$gte': handleSingle - , '$ne': handleSingle - , '$in': handleArray - , '$nin': handleArray - , '$all': handleArray -}; - - -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - -SchemaDate.prototype.castForQuery = function ($conditional, val) { - var handler; - - if (2 !== arguments.length) { - return this.cast($conditional); - } - - handler = this.$conditionalHandlers[$conditional]; - - if (!handler) { - throw new Error("Can't use " + $conditional + " with Date."); - } - - return handler.call(this, val); -}; - -/*! - * Module exports. - */ - -module.exports = SchemaDate; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js deleted file mode 100644 index 3b02887..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/documentarray.js +++ /dev/null @@ -1,189 +0,0 @@ - -/*! - * Module dependencies. - */ - -var SchemaType = require('../schematype') - , ArrayType = require('./array') - , MongooseDocumentArray = require('../types/documentarray') - , Subdocument = require('../types/embedded') - , Document = require('../document'); - -/** - * SubdocsArray SchemaType constructor - * - * @param {String} key - * @param {Schema} schema - * @param {Object} options - * @inherits SchemaArray - * @api private - */ - -function DocumentArray (key, schema, options) { - - // compile an embedded document for this schema - function EmbeddedDocument () { - Subdocument.apply(this, arguments); - } - - EmbeddedDocument.prototype.__proto__ = Subdocument.prototype; - EmbeddedDocument.prototype.$__setSchema(schema); - EmbeddedDocument.schema = schema; - - // apply methods - for (var i in schema.methods) { - EmbeddedDocument.prototype[i] = schema.methods[i]; - } - - // apply statics - for (var i in schema.statics) - EmbeddedDocument[i] = schema.statics[i]; - - EmbeddedDocument.options = options; - this.schema = schema; - - ArrayType.call(this, key, EmbeddedDocument, options); - - this.schema = schema; - var path = this.path; - var fn = this.defaultValue; - - this.default(function(){ - var arr = fn.call(this); - if (!Array.isArray(arr)) arr = [arr]; - return new MongooseDocumentArray(arr, path, this); - }); -}; - -/*! - * Inherits from ArrayType. - */ - -DocumentArray.prototype.__proto__ = ArrayType.prototype; - -/** - * Performs local validations first, then validations on each embedded doc - * - * @api private - */ - -DocumentArray.prototype.doValidate = function (array, fn, scope) { - var self = this; - - SchemaType.prototype.doValidate.call(this, array, function (err) { - if (err) return fn(err); - - var count = array && array.length - , error; - - if (!count) return fn(); - - // handle sparse arrays, do not use array.forEach which does not - // iterate over sparse elements yet reports array.length including - // them :( - - for (var i = 0, len = count; i < len; ++i) { - // sidestep sparse entries - var doc = array[i]; - if (!doc) { - --count || fn(); - continue; - } - - ;(function (i) { - doc.validate(function (err) { - if (err && !error) { - // rewrite the key - err.key = self.key + '.' + i + '.' + err.key; - return fn(error = err); - } - --count || fn(); - }); - })(i); - } - }, scope); -}; - -/** - * Casts contents - * - * @param {Object} value - * @param {Document} document that triggers the casting - * @api private - */ - -DocumentArray.prototype.cast = function (value, doc, init, prev) { - var selected - , subdoc - , i - - if (!Array.isArray(value)) { - return this.cast([value], doc, init, prev); - } - - if (!(value instanceof MongooseDocumentArray)) { - value = new MongooseDocumentArray(value, this.path, doc); - } - - i = value.length; - - while (i--) { - if (!(value[i] instanceof Subdocument) && value[i]) { - if (init) { - selected || (selected = scopePaths(this, doc.$__.selected, init)); - subdoc = new this.casterConstructor(null, value, true, selected); - value[i] = subdoc.init(value[i]); - } else { - if (prev && (subdoc = prev.id(value[i]._id))) { - // handle resetting doc with existing id but differing data - // doc.array = [{ doc: 'val' }] - subdoc.set(value[i]); - } else { - subdoc = new this.casterConstructor(value[i], value); - } - - // if set() is hooked it will have no return value - // see gh-746 - value[i] = subdoc; - } - } - } - - return value; -} - -/*! - * Scopes paths selected in a query to this array. - * Necessary for proper default application of subdocument values. - * - * @param {DocumentArray} array - the array to scope `fields` paths - * @param {Object|undefined} fields - the root fields selected in the query - * @param {Boolean|undefined} init - if we are being created part of a query result - */ - -function scopePaths (array, fields, init) { - if (!(init && fields)) return undefined; - - var path = array.path + '.' - , keys = Object.keys(fields) - , i = keys.length - , selected = {} - , hasKeys - , key - - while (i--) { - key = keys[i]; - if (0 === key.indexOf(path)) { - hasKeys || (hasKeys = true); - selected[key.substring(path.length)] = fields[key]; - } - } - - return hasKeys && selected || undefined; -} - -/*! - * Module exports. - */ - -module.exports = DocumentArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js deleted file mode 100644 index d1347ed..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/index.js +++ /dev/null @@ -1,28 +0,0 @@ - -/*! - * Module exports. - */ - -exports.String = require('./string'); - -exports.Number = require('./number'); - -exports.Boolean = require('./boolean'); - -exports.DocumentArray = require('./documentarray'); - -exports.Array = require('./array'); - -exports.Buffer = require('./buffer'); - -exports.Date = require('./date'); - -exports.ObjectId = require('./objectid'); - -exports.Mixed = require('./mixed'); - -// alias - -exports.Oid = exports.ObjectId; -exports.Object = exports.Mixed; -exports.Bool = exports.Boolean; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js deleted file mode 100644 index 6e2e4d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/mixed.js +++ /dev/null @@ -1,83 +0,0 @@ - -/*! - * Module dependencies. - */ - -var SchemaType = require('../schematype'); -var utils = require('../utils'); - -/** - * Mixed SchemaType constructor. - * - * @param {String} path - * @param {Object} options - * @inherits SchemaType - * @api private - */ - -function Mixed (path, options) { - if (options && options.default) { - var def = options.default; - if (Array.isArray(def) && 0 === def.length) { - // make sure empty array defaults are handled - options.default = Array; - } else if (!options.shared && - utils.isObject(def) && - 0 === Object.keys(def).length) { - // prevent odd "shared" objects between documents - options.default = function () { - return {} - } - } - } - - SchemaType.call(this, path, options); -}; - -/*! - * Inherits from SchemaType. - */ - -Mixed.prototype.__proto__ = SchemaType.prototype; - -/** - * Required validator - * - * @api private - */ - -Mixed.prototype.checkRequired = function (val) { - return true; -}; - -/** - * Casts `val` for Mixed. - * - * _this is a no-op_ - * - * @param {Object} value to cast - * @api private - */ - -Mixed.prototype.cast = function (val) { - return val; -}; - -/** - * Casts contents for queries. - * - * @param {String} $cond - * @param {any} [val] - * @api private - */ - -Mixed.prototype.castForQuery = function ($cond, val) { - if (arguments.length === 2) return val; - return $cond; -}; - -/*! - * Module exports. - */ - -module.exports = Mixed; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js deleted file mode 100644 index 1cdc56e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/number.js +++ /dev/null @@ -1,225 +0,0 @@ -/*! - * Module requirements. - */ - -var SchemaType = require('../schematype') - , CastError = SchemaType.CastError - , utils = require('../utils') - , Document - -/** - * Number SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api private - */ - -function SchemaNumber (key, options) { - SchemaType.call(this, key, options, 'Number'); -}; - -/*! - * Inherits from SchemaType. - */ - -SchemaNumber.prototype.__proto__ = SchemaType.prototype; - -/** - * Required validator for number - * - * @api private - */ - -SchemaNumber.prototype.checkRequired = function checkRequired (value, doc) { - if (SchemaType._isRef(this, value, doc, true)) { - return null != value; - } else { - return typeof value == 'number' || value instanceof Number; - } -}; - -/** - * Sets a minimum number validator. - * - * ####Example: - * - * var s = new Schema({ n: { type: Number, min: 10 }) - * var M = db.model('M', s) - * var m = new M({ n: 9 }) - * m.save(function (err) { - * console.error(err) // validator error - * m.n = 10; - * m.save() // success - * }) - * - * @param {Number} value minimum number - * @api public - */ - -SchemaNumber.prototype.min = function (value) { - if (this.minValidator) { - this.validators = this.validators.filter(function (v) { - return 'min' != v[1]; - }); - } - - if (value != null) { - this.validators.push([this.minValidator = function (v) { - return v === null || v >= value; - }, 'min']); - } - - return this; -}; - -/** - * Sets a maximum number validator. - * - * ####Example: - * - * var s = new Schema({ n: { type: Number, max: 10 }) - * var M = db.model('M', s) - * var m = new M({ n: 11 }) - * m.save(function (err) { - * console.error(err) // validator error - * m.n = 10; - * m.save() // success - * }) - * - * @param {Number} maximum number - * @api public - */ - -SchemaNumber.prototype.max = function (value) { - if (this.maxValidator) { - this.validators = this.validators.filter(function(v){ - return 'max' != v[1]; - }); - } - - if (value != null) { - this.validators.push([this.maxValidator = function(v){ - return v === null || v <= value; - }, 'max']); - } - - return this; -}; - -/** - * Casts to number - * - * @param {Object} value value to cast - * @param {Document} doc document that triggers the casting - * @param {Boolean} init - * @api private - */ - -SchemaNumber.prototype.cast = function (value, doc, init) { - if (SchemaType._isRef(this, value, doc, init)) { - // wait! we may need to cast this to a document - - if (null == value) { - return value; - } - - // lazy load - Document || (Document = require('./../document')); - - if (value instanceof Document) { - value.$__.wasPopulated = true; - return value; - } - - // setting a populated path - if ('number' == typeof value) { - return value; - } else if (Buffer.isBuffer(value) || !utils.isObject(value)) { - throw new CastError('number', value, this.path); - } - - // Handle the case where user directly sets a populated - // path to a plain object; cast to the Model used in - // the population query. - var path = doc.$__fullPath(this.path); - var owner = doc.ownerDocument ? doc.ownerDocument() : doc; - var pop = owner.populated(path, true); - var ret = new pop.options.model(value); - ret.$__.wasPopulated = true; - return ret; - } - - var val = value && value._id - ? value._id // documents - : value; - - if (!isNaN(val)){ - if (null === val) return val; - if ('' === val) return null; - if ('string' == typeof val) val = Number(val); - if (val instanceof Number) return val - if ('number' == typeof val) return val; - if (val.toString && !Array.isArray(val) && - val.toString() == Number(val)) { - return new Number(val) - } - } - - throw new CastError('number', value, this.path); -}; - -/*! - * ignore - */ - -function handleSingle (val) { - return this.cast(val) -} - -function handleArray (val) { - var self = this; - return val.map(function (m) { - return self.cast(m) - }); -} - -SchemaNumber.prototype.$conditionalHandlers = { - '$lt' : handleSingle - , '$lte': handleSingle - , '$gt' : handleSingle - , '$gte': handleSingle - , '$ne' : handleSingle - , '$in' : handleArray - , '$nin': handleArray - , '$mod': handleArray - , '$all': handleArray -}; - -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [value] - * @api private - */ - -SchemaNumber.prototype.castForQuery = function ($conditional, val) { - var handler; - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - if (!handler) - throw new Error("Can't use " + $conditional + " with Number."); - return handler.call(this, val); - } else { - val = this.cast($conditional); - return val == null ? val : val - } -}; - -/*! - * Module exports. - */ - -module.exports = SchemaNumber; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js deleted file mode 100644 index 65ef132..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/objectid.js +++ /dev/null @@ -1,183 +0,0 @@ -/*! - * Module dependencies. - */ - -var SchemaType = require('../schematype') - , CastError = SchemaType.CastError - , driver = global.MONGOOSE_DRIVER_PATH || './../drivers/node-mongodb-native' - , oid = require('../types/objectid') - , utils = require('../utils') - , Document - -/** - * ObjectId SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api private - */ - -function ObjectId (key, options) { - SchemaType.call(this, key, options, 'ObjectID'); -}; - -/*! - * Inherits from SchemaType. - */ - -ObjectId.prototype.__proto__ = SchemaType.prototype; - -/** - * Check required - * - * @api private - */ - -ObjectId.prototype.checkRequired = function checkRequired (value, doc) { - if (SchemaType._isRef(this, value, doc, true)) { - return null != value; - } else { - return value instanceof oid; - } -}; - -/** - * Casts to ObjectId - * - * @param {Object} value - * @param {Object} doc - * @param {Boolean} init whether this is an initialization cast - * @api private - */ - -ObjectId.prototype.cast = function (value, doc, init) { - if (SchemaType._isRef(this, value, doc, init)) { - // wait! we may need to cast this to a document - - if (null == value) { - return value; - } - - // lazy load - Document || (Document = require('./../document')); - - if (value instanceof Document) { - value.$__.wasPopulated = true; - return value; - } - - // setting a populated path - if (value instanceof oid) { - return value; - } else if (Buffer.isBuffer(value) || !utils.isObject(value)) { - throw new CastError('ObjectId', value, this.path); - } - - // Handle the case where user directly sets a populated - // path to a plain object; cast to the Model used in - // the population query. - var path = doc.$__fullPath(this.path); - var owner = doc.ownerDocument ? doc.ownerDocument() : doc; - var pop = owner.populated(path, true); - var ret = new pop.options.model(value); - ret.$__.wasPopulated = true; - return ret; - } - - if (value === null) return value; - - if (value instanceof oid) - return value; - - if (value._id && value._id instanceof oid) - return value._id; - - if (value.toString) { - try { - return oid.fromString(value.toString()); - } catch (err) { - throw new CastError('ObjectId', value, this.path); - } - } - - throw new CastError('ObjectId', value, this.path); -}; - -/*! - * ignore - */ - -function handleSingle (val) { - return this.cast(val); -} - -function handleArray (val) { - var self = this; - return val.map(function (m) { - return self.cast(m); - }); -} - -ObjectId.prototype.$conditionalHandlers = { - '$ne': handleSingle - , '$in': handleArray - , '$nin': handleArray - , '$gt': handleSingle - , '$lt': handleSingle - , '$gte': handleSingle - , '$lte': handleSingle - , '$all': handleArray -}; - -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [val] - * @api private - */ - -ObjectId.prototype.castForQuery = function ($conditional, val) { - var handler; - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - if (!handler) - throw new Error("Can't use " + $conditional + " with ObjectId."); - return handler.call(this, val); - } else { - return this.cast($conditional); - } -}; - -/** - * Adds an auto-generated ObjectId default if turnOn is true. - * @param {Boolean} turnOn auto generated ObjectId defaults - * @api public - */ - -ObjectId.prototype.auto = function (turnOn) { - if (turnOn) { - this.default(defaultId); - this.set(resetId) - } -}; - -/*! - * ignore - */ - -function defaultId () { - return new oid(); -}; - -function resetId (v) { - this.$__._id = null; - return v; -} - -/*! - * Module exports. - */ - -module.exports = ObjectId; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js deleted file mode 100644 index 6981ff3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schema/string.js +++ /dev/null @@ -1,302 +0,0 @@ - -/*! - * Module dependencies. - */ - -var SchemaType = require('../schematype') - , CastError = SchemaType.CastError - , utils = require('../utils') - , Document - -/** - * String SchemaType constructor. - * - * @param {String} key - * @param {Object} options - * @inherits SchemaType - * @api private - */ - -function SchemaString (key, options) { - this.enumValues = []; - this.regExp = null; - SchemaType.call(this, key, options, 'String'); -}; - -/*! - * Inherits from SchemaType. - */ - -SchemaString.prototype.__proto__ = SchemaType.prototype; - -/** - * Adds enumeration values and a coinciding validator. - * - * ####Example: - * - * var states = 'opening open closing closed'.split(' ') - * var s = new Schema({ state: { type: String, enum: states }) - * var M = db.model('M', s) - * var m = new M({ state: 'invalid' }) - * m.save(function (err) { - * console.error(err) // validator error - * m.state = 'open' - * m.save() // success - * }) - * - * @param {String} [args...] enumeration values - * @api public - */ - -SchemaString.prototype.enum = function () { - var len = arguments.length; - if (!len || undefined === arguments[0] || false === arguments[0]) { - if (this.enumValidator){ - this.enumValidator = false; - this.validators = this.validators.filter(function(v){ - return v[1] != 'enum'; - }); - } - return; - } - - for (var i = 0; i < len; i++) { - if (undefined !== arguments[i]) { - this.enumValues.push(this.cast(arguments[i])); - } - } - - if (!this.enumValidator) { - var values = this.enumValues; - this.enumValidator = function(v){ - return undefined === v || ~values.indexOf(v); - }; - this.validators.push([this.enumValidator, 'enum']); - } -}; - -/** - * Adds a lowercase setter. - * - * ####Example: - * - * var s = new Schema({ email: { type: String, lowercase: true }}) - * var M = db.model('M', s); - * var m = new M({ email: 'SomeEmail@example.COM' }); - * console.log(m.email) // someemail@example.com - * - * @api public - */ - -SchemaString.prototype.lowercase = function () { - return this.set(function (v, self) { - if ('string' != typeof v) v = self.cast(v) - if (v) return v.toLowerCase(); - return v; - }); -}; - -/** - * Adds an uppercase setter. - * - * ####Example: - * - * var s = new Schema({ caps: { type: String, uppercase: true }}) - * var M = db.model('M', s); - * var m = new M({ caps: 'an example' }); - * console.log(m.caps) // AN EXAMPLE - * - * @api public - */ - -SchemaString.prototype.uppercase = function () { - return this.set(function (v, self) { - if ('string' != typeof v) v = self.cast(v) - if (v) return v.toUpperCase(); - return v; - }); -}; - -/** - * Adds a trim setter. - * - * The string value will be trimmed when set. - * - * ####Example: - * - * var s = new Schema({ name: { type: String, trim: true }}) - * var M = db.model('M', s) - * var string = ' some name ' - * console.log(string.length) // 11 - * var m = new M({ name: string }) - * console.log(m.name.length) // 9 - * - * @api public - */ - -SchemaString.prototype.trim = function () { - return this.set(function (v, self) { - if ('string' != typeof v) v = self.cast(v) - if (v) return v.trim(); - return v; - }); -}; - -/** - * Sets a regexp validator. - * - * Any value that does not pass `regExp`.test(val) will fail validation. - * - * ####Example: - * - * var s = new Schema({ name: { type: String, match: /^a/ }}) - * var M = db.model('M', s) - * var m = new M({ name: 'invalid' }) - * m.validate(function (err) { - * console.error(err) // validation error - * m.name = 'apples' - * m.validate(function (err) { - * assert.ok(err) // success - * }) - * }) - * - * @param {RegExp} regExp regular expression to test against - * @api public - */ - -SchemaString.prototype.match = function match (regExp) { - this.validators.push([function(v){ - return null != v && '' !== v - ? regExp.test(v) - : true - }, 'regexp']); -}; - -/** - * Check required - * - * @param {String|null|undefined} value - * @api private - */ - -SchemaString.prototype.checkRequired = function checkRequired (value, doc) { - if (SchemaType._isRef(this, value, doc, true)) { - return null != value; - } else { - return (value instanceof String || typeof value == 'string') && value.length; - } -}; - -/** - * Casts to String - * - * @api private - */ - -SchemaString.prototype.cast = function (value, doc, init) { - if (SchemaType._isRef(this, value, doc, init)) { - // wait! we may need to cast this to a document - - if (null == value) { - return value; - } - - // lazy load - Document || (Document = require('./../document')); - - if (value instanceof Document) { - value.$__.wasPopulated = true; - return value; - } - - // setting a populated path - if ('string' == typeof value) { - return value; - } else if (Buffer.isBuffer(value) || !utils.isObject(value)) { - throw new CastError('string', value, this.path); - } - - // Handle the case where user directly sets a populated - // path to a plain object; cast to the Model used in - // the population query. - var path = doc.$__fullPath(this.path); - var owner = doc.ownerDocument ? doc.ownerDocument() : doc; - var pop = owner.populated(path, true); - var ret = new pop.options.model(value); - ret.$__.wasPopulated = true; - return ret; - } - - if (value === null) { - return value; - } - - if ('undefined' !== typeof value) { - // handle documents being passed - if (value._id && 'string' == typeof value._id) { - return value._id; - } - if (value.toString) { - return value.toString(); - } - } - - - throw new CastError('string', value, this.path); -}; - -/*! - * ignore - */ - -function handleSingle (val) { - return this.castForQuery(val); -} - -function handleArray (val) { - var self = this; - return val.map(function (m) { - return self.castForQuery(m); - }); -} - -SchemaString.prototype.$conditionalHandlers = { - '$ne' : handleSingle - , '$in' : handleArray - , '$nin': handleArray - , '$gt' : handleSingle - , '$lt' : handleSingle - , '$gte': handleSingle - , '$lte': handleSingle - , '$all': handleArray - , '$regex': handleSingle - , '$options': handleSingle -}; - -/** - * Casts contents for queries. - * - * @param {String} $conditional - * @param {any} [val] - * @api private - */ - -SchemaString.prototype.castForQuery = function ($conditional, val) { - var handler; - if (arguments.length === 2) { - handler = this.$conditionalHandlers[$conditional]; - if (!handler) - throw new Error("Can't use " + $conditional + " with String."); - return handler.call(this, val); - } else { - val = $conditional; - if (val instanceof RegExp) return val; - return this.cast(val); - } -}; - -/*! - * Module exports. - */ - -module.exports = SchemaString; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js deleted file mode 100644 index aebcff5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schemadefault.js +++ /dev/null @@ -1,34 +0,0 @@ - -/*! - * Module dependencies. - */ - -var Schema = require('./schema') - -/** - * Default model for querying the system.profiles collection. - * - * @property system.profile - * @receiver exports - * @api private - */ - -exports['system.profile'] = new Schema({ - ts: Date - , info: String // deprecated - , millis: Number - , op: String - , ns: String - , query: Schema.Types.Mixed - , updateobj: Schema.Types.Mixed - , ntoreturn: Number - , nreturned: Number - , nscanned: Number - , responseLength: Number - , client: String - , user: String - , idhack: Boolean - , scanAndOrder: Boolean - , keyUpdates: Number - , cursorid: Number -}, { noVirtualId: true, noId: true }); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js deleted file mode 100644 index d5dc7fd..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/schematype.js +++ /dev/null @@ -1,625 +0,0 @@ -/*! - * Module dependencies. - */ - -var utils = require('./utils'); -var CastError = require('./error').CastError; -var ValidatorError = require('./error').ValidatorError; - -/** - * SchemaType constructor - * - * @param {String} path - * @param {Object} [options] - * @param {String} [instance] - * @api public - */ - -function SchemaType (path, options, instance) { - this.path = path; - this.instance = instance; - this.validators = []; - this.setters = []; - this.getters = []; - this.options = options; - this._index = null; - this.selected; - - for (var i in options) if (this[i] && 'function' == typeof this[i]) { - // { unique: true, index: true } - if ('index' == i && this._index) continue; - - var opts = Array.isArray(options[i]) - ? options[i] - : [options[i]]; - - this[i].apply(this, opts); - } -}; - -/** - * Sets a default value for this SchemaType. - * - * ####Example: - * - * var schema = new Schema({ n: { type: Number, default: 10 }) - * var M = db.model('M', schema) - * var m = new M; - * console.log(m.n) // 10 - * - * Defaults can be either `functions` which return the value to use as the default or the literal value itself. Either way, the value will be cast based on its schema type before being set during document creation. - * - * ####Example: - * - * // values are cast: - * var schema = new Schema({ aNumber: Number, default: "4.815162342" }) - * var M = db.model('M', schema) - * var m = new M; - * console.log(m.aNumber, typeof m.aNumber) // 4.815162342 "number" - * - * @param {Function|any} val the default value - * @return {defaultValue} - * @api public - */ - -SchemaType.prototype.default = function (val) { - if (1 === arguments.length) { - this.defaultValue = typeof val === 'function' - ? val - : this.cast(val); - return this; - } else if (arguments.length > 1) { - this.defaultValue = utils.args(arguments); - } - return this.defaultValue; -}; - -/** - * Declares the index options for this schematype. - * - * ####Example: - * - * var s = new Schema({ name: { type: String, index: true }) - * var s = new Schema({ loc: { type: [Number], index: 'hashed' }) - * var s = new Schema({ loc: { type: [Number], index: '2d', sparse: true }) - * var s = new Schema({ loc: { type: [Number], index: { type: '2dsphere', sparse: true }}) - * var s = new Schema({ date: { type: Date, index: { unique: true, expires: '1d' }}) - * Schema.path('my.path').index(true); - * Schema.path('my.date').index({ expires: 60 }); - * Schema.path('my.path').index({ unique: true, sparse: true }); - * - * ####NOTE: - * - * _Indexes are created in the background by default. Specify `background: false` to override._ - * - * [Direction doesn't matter for single key indexes](http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeysIndexes) - * - * @param {Object|Boolean|String} options - * @return {SchemaType} this - * @api public - */ - -SchemaType.prototype.index = function (options) { - this._index = options; - utils.expires(this._index); - return this; -}; - -/** - * Declares an unique index. - * - * ####Example: - * - * var s = new Schema({ name: { type: String, unique: true }) - * Schema.path('name').index({ unique: true }); - * - * _NOTE: violating the constraint returns an `E11000` error from MongoDB when saving, not a Mongoose validation error._ - * - * @param {Boolean} bool - * @return {SchemaType} this - * @api public - */ - -SchemaType.prototype.unique = function (bool) { - if (null == this._index || 'boolean' == typeof this._index) { - this._index = {}; - } else if ('string' == typeof this._index) { - this._index = { type: this._index }; - } - - this._index.unique = bool; - return this; -}; - -/** - * Declares a sparse index. - * - * ####Example: - * - * var s = new Schema({ name: { type: String, sparse: true }) - * Schema.path('name').index({ sparse: true }); - * - * @param {Boolean} bool - * @return {SchemaType} this - * @api public - */ - -SchemaType.prototype.sparse = function (bool) { - if (null == this._index || 'boolean' == typeof this._index) { - this._index = {}; - } else if ('string' == typeof this._index) { - this._index = { type: this._index }; - } - - this._index.sparse = bool; - return this; -}; - -/** - * Adds a setter to this schematype. - * - * ####Example: - * - * function capitalize (val) { - * if ('string' != typeof val) val = ''; - * return val.charAt(0).toUpperCase() + val.substring(1); - * } - * - * // defining within the schema - * var s = new Schema({ name: { type: String, set: capitalize }}) - * - * // or by retreiving its SchemaType - * var s = new Schema({ name: String }) - * s.path('name').set(capitalize) - * - * Setters allow you to transform the data before it gets to the raw mongodb document and is set as a value on an actual key. - * - * Suppose you are implementing user registration for a website. Users provide an email and password, which gets saved to mongodb. The email is a string that you will want to normalize to lower case, in order to avoid one email having more than one account -- e.g., otherwise, avenue@q.com can be registered for 2 accounts via avenue@q.com and AvEnUe@Q.CoM. - * - * You can set up email lower case normalization easily via a Mongoose setter. - * - * function toLower (v) { - * return v.toLowerCase(); - * } - * - * var UserSchema = new Schema({ - * email: { type: String, set: toLower } - * }) - * - * var User = db.model('User', UserSchema) - * - * var user = new User({email: 'AVENUE@Q.COM'}) - * console.log(user.email); // 'avenue@q.com' - * - * // or - * var user = new User - * user.email = 'Avenue@Q.com' - * console.log(user.email) // 'avenue@q.com' - * - * As you can see above, setters allow you to transform the data before it gets to the raw mongodb document and is set as a value on an actual key. - * - * _NOTE: we could have also just used the built-in `lowercase: true` SchemaType option instead of defining our own function._ - * - * new Schema({ email: { type: String, lowercase: true }}) - * - * Setters are also passed a second argument, the schematype on which the setter was defined. This allows for tailored behavior based on options passed in the schema. - * - * function inspector (val, schematype) { - * if (schematype.options.required) { - * return schematype.path + ' is required'; - * } else { - * return val; - * } - * } - * - * var VirusSchema = new Schema({ - * name: { type: String, required: true, set: inspector }, - * taxonomy: { type: String, set: inspector } - * }) - * - * var Virus = db.model('Virus', VirusSchema); - * var v = new Virus({ name: 'Parvoviridae', taxonomy: 'Parvovirinae' }); - * - * console.log(v.name); // name is required - * console.log(v.taxonomy); // Parvovirinae - * - * @param {Function} fn - * @return {SchemaType} this - * @api public - */ - -SchemaType.prototype.set = function (fn) { - if ('function' != typeof fn) - throw new TypeError('A setter must be a function.'); - this.setters.push(fn); - return this; -}; - -/** - * Adds a getter to this schematype. - * - * ####Example: - * - * function dob (val) { - * if (!val) return val; - * return (val.getMonth() + 1) + "/" + val.getDate() + "/" + val.getFullYear(); - * } - * - * // defining within the schema - * var s = new Schema({ born: { type: Date, get: dob }) - * - * // or by retreiving its SchemaType - * var s = new Schema({ born: Date }) - * s.path('born').get(dob) - * - * Getters allow you to transform the representation of the data as it travels from the raw mongodb document to the value that you see. - * - * Suppose you are storing credit card numbers and you want to hide everything except the last 4 digits to the mongoose user. You can do so by defining a getter in the following way: - * - * function obfuscate (cc) { - * return '****-****-****-' + cc.slice(cc.length-4, cc.length); - * } - * - * var AccountSchema = new Schema({ - * creditCardNumber: { type: String, get: obfuscate } - * }); - * - * var Account = db.model('Account', AccountSchema); - * - * Account.findById(id, function (err, found) { - * console.log(found.creditCardNumber); // '****-****-****-1234' - * }); - * - * Getters are also passed a second argument, the schematype on which the getter was defined. This allows for tailored behavior based on options passed in the schema. - * - * function inspector (val, schematype) { - * if (schematype.options.required) { - * return schematype.path + ' is required'; - * } else { - * return schematype.path + ' is not'; - * } - * } - * - * var VirusSchema = new Schema({ - * name: { type: String, required: true, get: inspector }, - * taxonomy: { type: String, get: inspector } - * }) - * - * var Virus = db.model('Virus', VirusSchema); - * - * Virus.findById(id, function (err, virus) { - * console.log(virus.name); // name is required - * console.log(virus.taxonomy); // taxonomy is not - * }) - * - * @param {Function} fn - * @return {SchemaType} this - * @api public - */ - -SchemaType.prototype.get = function (fn) { - if ('function' != typeof fn) - throw new TypeError('A getter must be a function.'); - this.getters.push(fn); - return this; -}; - -/** - * Adds validator(s) for this document path. - * - * Validators always receive the value to validate as their first argument and must return `Boolean`. Returning false is interpreted as validation failure. - * - * ####Examples: - * - * function validator (val) { - * return val == 'something'; - * } - * - * new Schema({ name: { type: String, validate: validator }}); - * - * // with a custom error message - * - * var custom = [validator, 'validation failed'] - * new Schema({ name: { type: String, validate: custom }}); - * - * var many = [ - * { validator: validator, msg: 'uh oh' } - * , { validator: fn, msg: 'failed' } - * ] - * new Schema({ name: { type: String, validate: many }}); - * - * // or utilizing SchemaType methods directly: - * - * var schema = new Schema({ name: 'string' }); - * schema.path('name').validate(validator, 'validation failed'); - * - * ####Asynchronous validation: - * - * Passing a validator function that receives two arguments tells mongoose that the validator is an asynchronous validator. The second argument is an callback function that must be passed either `true` or `false` when validation is complete. - * - * schema.path('name').validate(function (value, respond) { - * doStuff(value, function () { - * ... - * respond(false); // validation failed - * }) -* }, 'my error type'); -* - * You might use asynchronous validators to retreive other documents from the database to validate against or to meet other I/O bound validation needs. - * - * Validation occurs `pre('save')` or whenever you manually execute [document#validate](#document_Document-validate). - * - * If validation fails during `pre('save')` and no callback was passed to receive the error, an `error` event will be emitted on your Models associated db [connection](#connection_Connection), passing the validation error object along. - * - * var conn = mongoose.createConnection(..); - * conn.on('error', handleError); - * - * var Product = conn.model('Product', yourSchema); - * var dvd = new Product(..); - * dvd.save(); // emits error on the `conn` above - * - * If you desire handling these errors at the Model level, attach an `error` listener to your Model and the event will instead be emitted there. - * - * // registering an error listener on the Model lets us handle errors more locally - * Product.on('error', handleError); - * - * @param {RegExp|Function|Object} obj validator - * @param {String} [error] optional error message - * @api public - */ - -SchemaType.prototype.validate = function (obj, error) { - if ('function' == typeof obj || obj && 'RegExp' === obj.constructor.name) { - this.validators.push([obj, error]); - return this; - } - - var i = arguments.length - , arg - - while (i--) { - arg = arguments[i]; - if (!(arg && 'Object' == arg.constructor.name)) { - var msg = 'Invalid validator. Received (' + typeof arg + ') ' - + arg - + '. See http://mongoosejs.com/docs/api.html#schematype_SchemaType-validate'; - - throw new Error(msg); - } - this.validate(arg.validator, arg.msg); - } - - return this; -}; - -/** - * Adds a required validator to this schematype. - * - * ####Example: - * - * var s = new Schema({ born: { type: Date, required: true }) - * // or - * Schema.path('name').required(true); - * - * - * @param {Boolean} required enable/disable the validator - * @return {SchemaType} this - * @api public - */ - -SchemaType.prototype.required = function (required) { - var self = this; - - function __checkRequired (v) { - // in here, `this` refers to the validating document. - // no validation when this path wasn't selected in the query. - if ('isSelected' in this && - !this.isSelected(self.path) && - !this.isModified(self.path)) return true; - return self.checkRequired(v, this); - } - - if (false === required) { - this.isRequired = false; - this.validators = this.validators.filter(function (v) { - return v[0].name !== '__checkRequired'; - }); - } else { - this.isRequired = true; - this.validators.push([__checkRequired, 'required']); - } - - return this; -}; - -/** - * Gets the default value - * - * @param {Object} scope the scope which callback are executed - * @param {Boolean} init - * @api private - */ - -SchemaType.prototype.getDefault = function (scope, init) { - var ret = 'function' === typeof this.defaultValue - ? this.defaultValue.call(scope) - : this.defaultValue; - - if (null !== ret && undefined !== ret) { - return this.cast(ret, scope, init); - } else { - return ret; - } -}; - -/** - * Applies setters - * - * @param {Object} value - * @param {Object} scope - * @param {Boolean} init - * @api private - */ - -SchemaType.prototype.applySetters = function (value, scope, init, priorVal) { - if (SchemaType._isRef(this, value, scope, init)) { - return init - ? value - : this.cast(value, scope, init, priorVal); - } - - var v = value - , setters = this.setters - , len = setters.length - - if (!len) { - if (null === v || undefined === v) return v; - return this.cast(v, scope, init, priorVal) - } - - while (len--) { - v = setters[len].call(scope, v, this); - } - - if (null === v || undefined === v) return v; - - // do not cast until all setters are applied #665 - v = this.cast(v, scope, init, priorVal); - - return v; -}; - -/** - * Applies getters to a value - * - * @param {Object} value - * @param {Object} scope - * @api private - */ - -SchemaType.prototype.applyGetters = function (value, scope) { - if (SchemaType._isRef(this, value, scope, true)) return value; - - var v = value - , getters = this.getters - , len = getters.length; - - if (!len) { - return v; - } - - while (len--) { - v = getters[len].call(scope, v, this); - } - - return v; -}; - -/** - * Sets default `select()` behavior for this path. - * - * Set to `true` if this path should always be included in the results, `false` if it should be excluded by default. This setting can be overridden at the query level. - * - * ####Example: - * - * T = db.model('T', new Schema({ x: { type: String, select: true }})); - * T.find(..); // field x will always be selected .. - * // .. unless overridden; - * T.find().select('-x').exec(callback); - * - * @param {Boolean} val - * @api public - */ - -SchemaType.prototype.select = function select (val) { - this.selected = !! val; -} - -/** - * Performs a validation of `value` using the validators declared for this SchemaType. - * - * @param {any} value - * @param {Function} callback - * @param {Object} scope - * @api private - */ - -SchemaType.prototype.doValidate = function (value, fn, scope) { - var err = false - , path = this.path - , count = this.validators.length; - - if (!count) return fn(null); - - function validate (ok, msg, val) { - if (err) return; - if (ok === undefined || ok) { - --count || fn(null); - } else { - fn(err = new ValidatorError(path, msg, val)); - } - } - - this.validators.forEach(function (v) { - var validator = v[0] - , message = v[1]; - - if (validator instanceof RegExp) { - validate(validator.test(value), message, value); - } else if ('function' === typeof validator) { - if (2 === validator.length) { - validator.call(scope, value, function (ok) { - validate(ok, message, value); - }); - } else { - validate(validator.call(scope, value), message, value); - } - } - }); -}; - -/** - * Determines if value is a valid Reference. - * - * @param {SchemaType} self - * @param {Object} value - * @param {Document} doc - * @param {Boolean} init - * @return {Boolean} - * @api private - */ - -SchemaType._isRef = function (self, value, doc, init) { - // fast path - var ref = init && self.options && self.options.ref; - - if (!ref && doc && doc.$__fullPath) { - // checks for - // - this populated with adhoc model and no ref was set in schema OR - // - setting / pushing values after population - var path = doc.$__fullPath(self.path); - var owner = doc.ownerDocument ? doc.ownerDocument() : doc; - ref = owner.populated(path); - } - - if (ref) { - if (null == value) return true; - if (!Buffer.isBuffer(value) && // buffers are objects too - 'Binary' != value._bsontype // raw binary value from the db - && utils.isObject(value) // might have deselected _id in population query - ) { - return true; - } - } - - return false; -} - -/*! - * Module exports. - */ - -module.exports = exports = SchemaType; - -exports.CastError = CastError; - -exports.ValidatorError = ValidatorError; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js deleted file mode 100644 index 76005d8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/statemachine.js +++ /dev/null @@ -1,179 +0,0 @@ - -/*! - * Module dependencies. - */ - -var utils = require('./utils'); - -/*! - * StateMachine represents a minimal `interface` for the - * constructors it builds via StateMachine.ctor(...). - * - * @api private - */ - -var StateMachine = module.exports = exports = function StateMachine () { - this.paths = {}; - this.states = {}; -} - -/*! - * StateMachine.ctor('state1', 'state2', ...) - * A factory method for subclassing StateMachine. - * The arguments are a list of states. For each state, - * the constructor's prototype gets state transition - * methods named after each state. These transition methods - * place their path argument into the given state. - * - * @param {String} state - * @param {String} [state] - * @return {Function} subclass constructor - * @private - */ - -StateMachine.ctor = function () { - var states = utils.args(arguments); - - var ctor = function () { - StateMachine.apply(this, arguments); - this.stateNames = states; - - var i = states.length - , state; - - while (i--) { - state = states[i]; - this.states[state] = {}; - } - }; - - ctor.prototype.__proto__ = StateMachine.prototype; - - states.forEach(function (state) { - // Changes the `path`'s state to `state`. - ctor.prototype[state] = function (path) { - this._changeState(path, state); - } - }); - - return ctor; -}; - -/*! - * This function is wrapped by the state change functions: - * - * - `require(path)` - * - `modify(path)` - * - `init(path)` - * - * @api private - */ - -StateMachine.prototype._changeState = function _changeState (path, nextState) { - var prevBucket = this.states[this.paths[path]]; - if (prevBucket) delete prevBucket[path]; - - this.paths[path] = nextState; - this.states[nextState][path] = true; -} - -/*! - * ignore - */ - -StateMachine.prototype.clear = function clear (state) { - var keys = Object.keys(this.states[state]) - , i = keys.length - , path - - while (i--) { - path = keys[i]; - delete this.states[state][path]; - delete this.paths[path]; - } -} - -/*! - * Checks to see if at least one path is in the states passed in via `arguments` - * e.g., this.some('required', 'inited') - * - * @param {String} state that we want to check for. - * @private - */ - -StateMachine.prototype.some = function some () { - var self = this; - var what = arguments.length ? arguments : this.stateNames; - return Array.prototype.some.call(what, function (state) { - return Object.keys(self.states[state]).length; - }); -} - -/*! - * This function builds the functions that get assigned to `forEach` and `map`, - * since both of those methods share a lot of the same logic. - * - * @param {String} iterMethod is either 'forEach' or 'map' - * @return {Function} - * @api private - */ - -StateMachine.prototype._iter = function _iter (iterMethod) { - return function () { - var numArgs = arguments.length - , states = utils.args(arguments, 0, numArgs-1) - , callback = arguments[numArgs-1]; - - if (!states.length) states = this.stateNames; - - var self = this; - - var paths = states.reduce(function (paths, state) { - return paths.concat(Object.keys(self.states[state])); - }, []); - - return paths[iterMethod](function (path, i, paths) { - return callback(path, i, paths); - }); - }; -} - -/*! - * Iterates over the paths that belong to one of the parameter states. - * - * The function profile can look like: - * this.forEach(state1, fn); // iterates over all paths in state1 - * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2 - * this.forEach(fn); // iterates over all paths in all states - * - * @param {String} [state] - * @param {String} [state] - * @param {Function} callback - * @private - */ - -StateMachine.prototype.forEach = function forEach () { - this.forEach = this._iter('forEach'); - return this.forEach.apply(this, arguments); -} - -/*! - * Maps over the paths that belong to one of the parameter states. - * - * The function profile can look like: - * this.forEach(state1, fn); // iterates over all paths in state1 - * this.forEach(state1, state2, fn); // iterates over all paths in state1 or state2 - * this.forEach(fn); // iterates over all paths in all states - * - * @param {String} [state] - * @param {String} [state] - * @param {Function} callback - * @return {Array} - * @private - */ - -StateMachine.prototype.map = function map () { - this.map = this._iter('map'); - return this.map.apply(this, arguments); -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js deleted file mode 100644 index e0d7700..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/array.js +++ /dev/null @@ -1,679 +0,0 @@ - -/*! - * Module dependencies. - */ - -var EmbeddedDocument = require('./embedded'); -var Document = require('../document'); -var ObjectId = require('./objectid'); -var utils = require('../utils'); -var isMongooseObject = utils.isMongooseObject; - -/** - * Mongoose Array constructor. - * - * ####NOTE: - * - * _Values always have to be passed to the constructor to initialize, otherwise `MongooseArray#push` will mark the array as modified._ - * - * @param {Array} values - * @param {String} path - * @param {Document} doc parent document - * @api private - * @inherits Array - * @see http://bit.ly/f6CnZU - */ - -function MongooseArray (values, path, doc) { - var arr = []; - arr.push.apply(arr, values); - arr.__proto__ = MongooseArray.prototype; - - arr._atomics = {}; - arr.validators = []; - arr._path = path; - - if (doc) { - arr._parent = doc; - arr._schema = doc.schema.path(path); - } - - return arr; -}; - -/*! - * Inherit from Array - */ - -MongooseArray.prototype = new Array; - -/** - * Stores a queue of atomic operations to perform - * - * @property _atomics - * @api private - */ - -MongooseArray.prototype._atomics; - -/** - * Parent owner document - * - * @property _parent - * @api private - */ - -MongooseArray.prototype._parent; - -/** - * Casts a member based on this arrays schema. - * - * @param {any} value - * @return value the casted value - * @api private - */ - -MongooseArray.prototype._cast = function (value) { - var owner = this._owner; - var populated = false; - var Model; - - if (this._parent) { - // if a populated array, we must cast to the same model - // instance as specified in the original query. - if (!owner) { - owner = this._owner = this._parent.ownerDocument - ? this._parent.ownerDocument() - : this._parent; - } - - populated = owner.populated(this._path, true); - } - - if (populated && null != value) { - // cast to the populated Models schema - var Model = populated.options.model; - - // only objects are permitted so we can safely assume that - // non-objects are to be interpreted as _id - if (Buffer.isBuffer(value) || - value instanceof ObjectId || !utils.isObject(value)) { - value = { _id: value }; - } - - value = new Model(value); - return this._schema.caster.cast(value, this._parent, true) - } - - return this._schema.caster.cast(value, this._parent, false) -} - -/** - * Marks this array as modified. - * - * If it bubbles up from an embedded document change, then it takes the following arguments (otherwise, takes 0 arguments) - * - * @param {EmbeddedDocument} embeddedDoc the embedded doc that invoked this method on the Array - * @param {String} embeddedPath the path which changed in the embeddedDoc - * @api private - */ - -MongooseArray.prototype._markModified = function (elem, embeddedPath) { - var parent = this._parent - , dirtyPath; - - if (parent) { - dirtyPath = this._path; - - if (arguments.length) { - if (null != embeddedPath) { - // an embedded doc bubbled up the change - dirtyPath = dirtyPath + '.' + this.indexOf(elem) + '.' + embeddedPath; - } else { - // directly set an index - dirtyPath = dirtyPath + '.' + elem; - } - } - parent.markModified(dirtyPath); - } - - return this; -}; - -/** - * Register an atomic operation with the parent. - * - * @param {Array} op operation - * @param {any} val - * @api private - */ - -MongooseArray.prototype._registerAtomic = function (op, val) { - if ('$set' == op) { - // $set takes precedence over all other ops. - // mark entire array modified. - this._atomics = { $set: val }; - return this; - } - - var atomics = this._atomics; - - // reset pop/shift after save - if ('$pop' == op && !('$pop' in atomics)) { - var self = this; - this._parent.once('save', function () { - self._popped = self._shifted = null; - }); - } - - // check for impossible $atomic combos (Mongo denies more than one - // $atomic op on a single path - if (this._atomics.$set || - Object.keys(atomics).length && !(op in atomics)) { - // a different op was previously registered. - // save the entire thing. - this._atomics = { $set: this }; - return this; - } - - if (op === '$pullAll' || op === '$pushAll' || op === '$addToSet') { - atomics[op] || (atomics[op] = []); - atomics[op] = atomics[op].concat(val); - } else if (op === '$pullDocs') { - var pullOp = atomics['$pull'] || (atomics['$pull'] = {}) - , selector = pullOp['_id'] || (pullOp['_id'] = {'$in' : [] }); - selector['$in'] = selector['$in'].concat(val); - } else { - atomics[op] = val; - } - - return this; -}; - -/** - * Depopulates stored atomic operation values as necessary for direct insertion to MongoDB. - * - * If no atomics exist, we return all array values after conversion. - * - * @return {Array} - * @method $__getAtomics - * @memberOf MongooseArray - * @api private - */ - -MongooseArray.prototype.$__getAtomics = function () { - var ret = []; - var keys = Object.keys(this._atomics); - var i = keys.length; - - if (0 === i) { - ret[0] = ['$set', this.toObject({ depopulate: 1 })]; - return ret; - } - - while (i--) { - var op = keys[i]; - var val = this._atomics[op]; - - // the atomic values which are arrays are not MongooseArrays. we - // need to convert their elements as if they were MongooseArrays - // to handle populated arrays versus DocumentArrays properly. - if (isMongooseObject(val)) { - val = val.toObject({ depopulate: 1 }); - } else if (Array.isArray(val)) { - val = this.toObject.call(val, { depopulate: 1 }); - } else if (val.valueOf) { - val = val.valueOf(); - } - - if ('$addToSet' == op) { - val = { $each: val } - } - - ret.push([op, val]); - } - - return ret; -} - -/** - * Returns the number of pending atomic operations to send to the db for this array. - * - * @api private - * @return {Number} - */ - -MongooseArray.prototype.hasAtomics = function hasAtomics () { - if (!(this._atomics && 'Object' === this._atomics.constructor.name)) { - return 0; - } - - return Object.keys(this._atomics).length; -} - -/** - * Wraps [`Array#push`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/push) with proper change tracking. - * - * @param {Object} [args...] - * @api public - */ - -MongooseArray.prototype.push = function () { - var values = [].map.call(arguments, this._cast, this) - , ret = [].push.apply(this, values); - - // $pushAll might be fibbed (could be $push). But it makes it easier to - // handle what could have been $push, $pushAll combos - this._registerAtomic('$pushAll', values); - this._markModified(); - return ret; -}; - -/** - * Pushes items to the array non-atomically. - * - * ####NOTE: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @param {any} [args...] - * @api public - */ - -MongooseArray.prototype.nonAtomicPush = function () { - var values = [].map.call(arguments, this._cast, this) - , ret = [].push.apply(this, values); - this._registerAtomic('$set', this); - this._markModified(); - return ret; -}; - -/** - * Pops the array atomically at most one time per document `save()`. - * - * #### NOTE: - * - * _Calling this mulitple times on an array before saving sends the same command as calling it once._ - * _This update is implemented using the MongoDB [$pop](http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop) method which enforces this restriction._ - * - * doc.array = [1,2,3]; - * - * var popped = doc.array.$pop(); - * console.log(popped); // 3 - * console.log(doc.array); // [1,2] - * - * // no affect - * popped = doc.array.$pop(); - * console.log(doc.array); // [1,2] - * - * doc.save(function (err) { - * if (err) return handleError(err); - * - * // we saved, now $pop works again - * popped = doc.array.$pop(); - * console.log(popped); // 2 - * console.log(doc.array); // [1] - * }) - * - * @api public - * @method $pop - * @memberOf MongooseArray - * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop - */ - -MongooseArray.prototype.$pop = function () { - this._registerAtomic('$pop', 1); - this._markModified(); - - // only allow popping once - if (this._popped) return; - this._popped = true; - - return [].pop.call(this); -}; - -/** - * Wraps [`Array#pop`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/pop) with proper change tracking. - * - * ####Note: - * - * _marks the entire array as modified which will pass the entire thing to $set potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @see MongooseArray#$pop #types_array_MongooseArray-%24pop - * @api public - */ - -MongooseArray.prototype.pop = function () { - var ret = [].pop.call(this); - this._registerAtomic('$set', this); - this._markModified(); - return ret; -}; - -/** - * Atomically shifts the array at most one time per document `save()`. - * - * ####NOTE: - * - * _Calling this mulitple times on an array before saving sends the same command as calling it once._ - * _This update is implemented using the MongoDB [$pop](http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop) method which enforces this restriction._ - * - * doc.array = [1,2,3]; - * - * var shifted = doc.array.$shift(); - * console.log(shifted); // 1 - * console.log(doc.array); // [2,3] - * - * // no affect - * shifted = doc.array.$shift(); - * console.log(doc.array); // [2,3] - * - * doc.save(function (err) { - * if (err) return handleError(err); - * - * // we saved, now $shift works again - * shifted = doc.array.$shift(); - * console.log(shifted ); // 2 - * console.log(doc.array); // [3] - * }) - * - * @api public - * @memberOf MongooseArray - * @method $shift - * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pop - */ - -MongooseArray.prototype.$shift = function $shift () { - this._registerAtomic('$pop', -1); - this._markModified(); - - // only allow shifting once - if (this._shifted) return; - this._shifted = true; - - return [].shift.call(this); -}; - -/** - * Wraps [`Array#shift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. - * - * ####Example: - * - * doc.array = [2,3]; - * var res = doc.array.shift(); - * console.log(res) // 2 - * console.log(doc.array) // [3] - * - * ####Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - */ - -MongooseArray.prototype.shift = function () { - var ret = [].shift.call(this); - this._registerAtomic('$set', this); - this._markModified(); - return ret; -}; - -/** - * Pulls items from the array atomically. - * - * ####Examples: - * - * doc.array.pull(ObjectId) - * doc.array.pull({ _id: 'someId' }) - * doc.array.pull(36) - * doc.array.pull('tag 1', 'tag 2') - * - * To remove a document from a subdocument array we may pass an object with a matching `_id`. - * - * doc.subdocs.push({ _id: 4815162342 }) - * doc.subdocs.pull({ _id: 4815162342 }) // removed - * - * Or we may passing the _id directly and let mongoose take care of it. - * - * doc.subdocs.push({ _id: 4815162342 }) - * doc.subdocs.pull(4815162342); // works - * - * @param {any} [args...] - * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pull - * @api public - */ - -MongooseArray.prototype.pull = function () { - var values = [].map.call(arguments, this._cast, this) - , cur = this._parent.get(this._path) - , i = cur.length - , mem; - - while (i--) { - mem = cur[i]; - if (mem instanceof EmbeddedDocument) { - if (values.some(function (v) { return v.equals(mem); } )) { - [].splice.call(cur, i, 1); - } - } else if (~cur.indexOf.call(values, mem)) { - [].splice.call(cur, i, 1); - } - } - - if (values[0] instanceof EmbeddedDocument) { - this._registerAtomic('$pullDocs', values.map( function (v) { return v._id; } )); - } else { - this._registerAtomic('$pullAll', values); - } - - this._markModified(); - return this; -}; - -/** - * Alias of [pull](#types_array_MongooseArray-pull) - * - * @see MongooseArray#pull #types_array_MongooseArray-pull - * @see mongodb http://www.mongodb.org/display/DOCS/Updating/#Updating-%24pull - * @api public - * @memberOf MongooseArray - * @method remove - */ - -MongooseArray.prototype.remove = MongooseArray.prototype.pull; - -/** - * Wraps [`Array#splice`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) with proper change tracking and casting. - * - * ####Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - */ - -MongooseArray.prototype.splice = function splice () { - var ret, vals, i; - - if (arguments.length) { - vals = []; - for (i = 0; i < arguments.length; ++i) { - vals[i] = i < 2 - ? arguments[i] - : this._cast(arguments[i]); - } - ret = [].splice.apply(this, vals); - this._registerAtomic('$set', this); - this._markModified(); - } - - return ret; -} - -/** - * Wraps [`Array#unshift`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/unshift) with proper change tracking. - * - * ####Note: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - */ - -MongooseArray.prototype.unshift = function () { - var values = [].map.call(arguments, this._cast, this); - [].unshift.apply(this, values); - this._registerAtomic('$set', this); - this._markModified(); - return this.length; -}; - -/** - * Wraps [`Array#sort`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort) with proper change tracking. - * - * ####NOTE: - * - * _marks the entire array as modified, which if saved, will store it as a `$set` operation, potentially overwritting any changes that happen between when you retrieved the object and when you save it._ - * - * @api public - */ - -MongooseArray.prototype.sort = function () { - var ret = [].sort.apply(this, arguments); - this._registerAtomic('$set', this); - this._markModified(); - return ret; -} - -/** - * Adds values to the array if not already present. - * - * ####Example: - * - * console.log(doc.array) // [2,3,4] - * var added = doc.array.addToSet(4,5); - * console.log(doc.array) // [2,3,4,5] - * console.log(added) // [5] - * - * @param {any} [args...] - * @return {Array} the values that were added - * @api public - */ - -MongooseArray.prototype.addToSet = function addToSet () { - var values = [].map.call(arguments, this._cast, this) - , added = [] - , type = values[0] instanceof EmbeddedDocument ? 'doc' : - values[0] instanceof Date ? 'date' : - ''; - - values.forEach(function (v) { - var found; - switch (type) { - case 'doc': - found = this.some(function(doc){ return doc.equals(v) }); - break; - case 'date': - var val = +v; - found = this.some(function(d){ return +d === val }); - break; - default: - found = ~this.indexOf(v); - } - - if (!found) { - [].push.call(this, v); - this._registerAtomic('$addToSet', v); - this._markModified(); - [].push.call(added, v); - } - }, this); - - return added; -}; - -/** - * Sets the casted `val` at index `i` and marks the array modified. - * - * ####Example: - * - * // given documents based on the following - * var Doc = mongoose.model('Doc', new Schema({ array: [Number] })); - * - * var doc = new Doc({ array: [2,3,4] }) - * - * console.log(doc.array) // [2,3,4] - * - * doc.array.set(1,"5"); - * console.log(doc.array); // [2,5,4] // properly cast to number - * doc.save() // the change is saved - * - * // VS not using array#set - * doc.array[1] = "5"; - * console.log(doc.array); // [2,"5",4] // no casting - * doc.save() // change is not saved - * - * @return {Array} this - * @api public - */ - -MongooseArray.prototype.set = function set (i, val) { - this[i] = this._cast(val); - this._markModified(i); - return this; -} - -/** - * Returns a native js Array. - * - * @param {Object} options - * @return {Array} - * @api public - */ - -MongooseArray.prototype.toObject = function (options) { - if (options && options.depopulate) { - return this.map(function (doc) { - return doc instanceof Document - ? doc.toObject(options) - : doc - }); - } - - return this.slice(); -} - -/** - * Helper for console.log - * - * @api public - */ - -MongooseArray.prototype.inspect = function () { - return '[' + this.map(function (doc) { - return ' ' + doc; - }) + ' ]'; -}; - -/** - * Return the index of `obj` or `-1` if not found. - * - * @param {Object} obj the item to look for - * @return {Number} - * @api public - */ - -MongooseArray.prototype.indexOf = function indexOf (obj) { - if (obj instanceof ObjectId) obj = obj.toString(); - for (var i = 0, len = this.length; i < len; ++i) { - if (obj == this[i]) - return i; - } - return -1; -}; - -/*! - * Module exports. - */ - -module.exports = exports = MongooseArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js deleted file mode 100644 index d84370b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/buffer.js +++ /dev/null @@ -1,210 +0,0 @@ - -/*! - * Access driver. - */ - -var driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native'; - -/*! - * Module dependencies. - */ - -var Binary = require(driver + '/binary'); - -/** - * Mongoose Buffer constructor. - * - * Values always have to be passed to the constructor to initialize. - * - * @param {Buffer} value - * @param {String} encode - * @param {Number} offset - * @api private - * @inherits Buffer - * @see http://bit.ly/f6CnZU - */ - -function MongooseBuffer (value, encode, offset) { - var length = arguments.length; - var val; - - if (0 === length || null === arguments[0] || undefined === arguments[0]) { - val = 0; - } else { - val = value; - } - - var encoding; - var path; - var doc; - - if (Array.isArray(encode)) { - // internal casting - path = encode[0]; - doc = encode[1]; - } else { - encoding = encode; - } - - var buf = new Buffer(val, encoding, offset); - buf.__proto__ = MongooseBuffer.prototype; - - // make sure these internal props don't show up in Object.keys() - Object.defineProperties(buf, { - validators: { value: [] } - , _path: { value: path } - , _parent: { value: doc } - }); - - if (doc && "string" === typeof path) { - Object.defineProperty(buf, '_schema', { - value: doc.schema.path(path) - }); - } - - return buf; -}; - -/*! - * Inherit from Buffer. - */ - -MongooseBuffer.prototype = new Buffer(0); - -/** - * Parent owner document - * - * @api private - * @property _parent - */ - -MongooseBuffer.prototype._parent; - -/** - * Marks this buffer as modified. - * - * @api private - */ - -MongooseBuffer.prototype._markModified = function () { - var parent = this._parent; - - if (parent) { - parent.markModified(this._path); - } - return this; -}; - -/** -* Writes the buffer. -*/ - -MongooseBuffer.prototype.write = function () { - var written = Buffer.prototype.write.apply(this, arguments); - - if (written > 0) { - this._markModified(); - } - - return written; -}; - -/** - * Copies the buffer. - * - * ####Note: - * - * `Buffer#copy` does not mark `target` as modified so you must copy from a `MongooseBuffer` for it to work as expected. This is a work around since `copy` modifies the target, not this. - * - * @return {MongooseBuffer} - * @param {Buffer} target - */ - -MongooseBuffer.prototype.copy = function (target) { - var ret = Buffer.prototype.copy.apply(this, arguments); - - if (target instanceof MongooseBuffer) { - target._markModified(); - } - - return ret; -}; - -/*! - * Compile other Buffer methods marking this buffer as modified. - */ - -;( -// node < 0.5 -'writeUInt8 writeUInt16 writeUInt32 writeInt8 writeInt16 writeInt32 ' + -'writeFloat writeDouble fill ' + -'utf8Write binaryWrite asciiWrite set ' + - -// node >= 0.5 -'writeUInt16LE writeUInt16BE writeUInt32LE writeUInt32BE ' + -'writeInt16LE writeInt16BE writeInt32LE writeInt32BE ' + -'writeFloatLE writeFloatBE writeDoubleLE writeDoubleBE' -).split(' ').forEach(function (method) { - if (!Buffer.prototype[method]) return; - MongooseBuffer.prototype[method] = new Function( - 'var ret = Buffer.prototype.'+method+'.apply(this, arguments);' + - 'this._markModified();' + - 'return ret;' - ) -}); - -/** - * Converts this buffer to its Binary type representation. - * - * ####SubTypes: - * - * - 0x00: Binary/Generic - * - 0x01: Function - * - 0x02: Binary (Deprecated, 0x00 is new default) - * - 0x03: UUID - * - 0x04: MD5 - * - 0x80: User Defined - * - * @see http://bsonspec.org/#/specification - * @param {Hex} [subtype] - * @return {Binary} - * @api public - */ - -MongooseBuffer.prototype.toObject = function (options) { - var subtype = 'number' == typeof options - ? options - : 0x00; - return new Binary(this, subtype); -}; - -/** - * Determines if this buffer is equals to `other` buffer - * - * @param {Buffer} other - * @return {Boolean} - */ - -MongooseBuffer.prototype.equals = function (other) { - if (!Buffer.isBuffer(other)) { - return false; - } - - if (this.length !== other.length) { - return false; - } - - for (var i = 0; i < this.length; ++i) { - if (this[i] !== other[i]) return false; - } - - return true; -} - -/*! - * Module exports. - */ - -MongooseBuffer.Binary = Binary; - -module.exports = MongooseBuffer; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js deleted file mode 100644 index d5ca8de..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/documentarray.js +++ /dev/null @@ -1,189 +0,0 @@ - -/*! - * Module dependencies. - */ - -var MongooseArray = require('./array') - , driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native' - , ObjectId = require(driver + '/objectid') - , ObjectIdSchema = require('../schema/objectid') - , utils = require('../utils') - , util = require('util') - -/** - * DocumentArray constructor - * - * @param {Array} values - * @param {String} path the path to this array - * @param {Document} doc parent document - * @api private - * @return {MongooseDocumentArray} - * @inherits MongooseArray - * @see http://bit.ly/f6CnZU - */ - -function MongooseDocumentArray (values, path, doc) { - var arr = []; - - // Values always have to be passed to the constructor to initialize, since - // otherwise MongooseArray#push will mark the array as modified to the parent. - arr.push.apply(arr, values); - arr.__proto__ = MongooseDocumentArray.prototype; - - arr._atomics = {}; - arr.validators = []; - arr._path = path; - - if (doc) { - arr._parent = doc; - arr._schema = doc.schema.path(path); - doc.on('save', arr.notify('save')); - doc.on('isNew', arr.notify('isNew')); - } - - return arr; -}; - -/*! - * Inherits from MongooseArray - */ - -MongooseDocumentArray.prototype.__proto__ = MongooseArray.prototype; - -/** - * Overrides MongooseArray#cast - * - * @api private - */ - -MongooseDocumentArray.prototype._cast = function (value) { - if (value instanceof this._schema.casterConstructor) { - if (!(value.__parent && value.__parentArray)) { - // value may have been created using array.create() - value.__parent = this._parent; - value.__parentArray = this; - } - return value; - } - - // handle cast('string') or cast(ObjectId) etc. - // only objects are permitted so we can safely assume that - // non-objects are to be interpreted as _id - if (Buffer.isBuffer(value) || - value instanceof ObjectId || !utils.isObject(value)) { - value = { _id: value }; - } - - return new this._schema.casterConstructor(value, this); -}; - -/** - * Searches array items for the first document with a matching _id. - * - * ####Example: - * - * var embeddedDoc = m.array.id(some_id); - * - * @return {EmbeddedDocument|null} the subdocuent or null if not found. - * @param {ObjectId|String|Number|Buffer} id - * @api public - */ - -MongooseDocumentArray.prototype.id = function (id) { - var casted - , sid - , _id - - try { - casted = ObjectId.toString(ObjectIdSchema.prototype.cast.call({}, id)); - } catch (e) { - casted = null; - } - - for (var i = 0, l = this.length; i < l; i++) { - _id = this[i].get('_id'); - if (!(_id instanceof ObjectId)) { - sid || (sid = String(id)); - if (sid == _id) - return this[i]; - } else { - if (casted == _id) - return this[i]; - } - } - - return null; -}; - -/** - * Returns a native js Array of plain js objects - * - * ####NOTE: - * - * _Each sub-document is converted to a plain object by calling its `#toObject` method._ - * - * @param {Object} [options] optional options to pass to each documents `toObject` method call during conversion - * @return {Array} - * @api public - */ - -MongooseDocumentArray.prototype.toObject = function (options) { - return this.map(function (doc) { - return doc && doc.toObject(options) || null; - }); -}; - -/** - * Helper for console.log - * - * @api public - */ - -MongooseDocumentArray.prototype.inspect = function () { - return '[' + this.map(function (doc) { - if (doc) { - return doc.inspect - ? doc.inspect() - : util.inspect(doc) - } - return 'null' - }).join('\n') + ']'; -}; - -/** - * Creates a subdocument casted to this schema. - * - * This is the same subdocument constructor used for casting. - * - * @param {Object} obj the value to cast to this arrays SubDocument schema - * @api public - */ - -MongooseDocumentArray.prototype.create = function (obj) { - return new this._schema.casterConstructor(obj); -} - -/** - * Creates a fn that notifies all child docs of `event`. - * - * @param {String} event - * @return {Function} - * @api private - */ - -MongooseDocumentArray.prototype.notify = function notify (event) { - var self = this; - return function notify (val) { - var i = self.length; - while (i--) { - if (!self[i]) continue; - self[i].emit(event, val); - } - } -} - -/*! - * Module exports. - */ - -module.exports = MongooseDocumentArray; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js deleted file mode 100644 index 6de36e6..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/embedded.js +++ /dev/null @@ -1,244 +0,0 @@ -/*! - * Module dependencies. - */ - -var Document = require('../document') - , inspect = require('util').inspect; - -/** - * EmbeddedDocument constructor. - * - * @param {Object} obj js object returned from the db - * @param {MongooseDocumentArray} parentArr the parent array of this document - * @param {Boolean} skipId - * @inherits Document - * @api private - */ - -function EmbeddedDocument (obj, parentArr, skipId, fields) { - if (parentArr) { - this.__parentArray = parentArr; - this.__parent = parentArr._parent; - } else { - this.__parentArray = undefined; - this.__parent = undefined; - } - - Document.call(this, obj, fields, skipId); - - var self = this; - this.on('isNew', function (val) { - self.isNew = val; - }); -}; - -/*! - * Inherit from Document - */ - -EmbeddedDocument.prototype.__proto__ = Document.prototype; - -/** - * Marks the embedded doc modified. - * - * ####Example: - * - * var doc = blogpost.comments.id(hexstring); - * doc.mixed.type = 'changed'; - * doc.markModified('mixed.type'); - * - * @param {String} path the path which changed - * @api public - */ - -EmbeddedDocument.prototype.markModified = function (path) { - if (!this.__parentArray) return; - - this.$__.activePaths.modify(path); - - if (this.isNew) { - // Mark the WHOLE parent array as modified - // if this is a new document (i.e., we are initializing - // a document), - this.__parentArray._markModified(); - } else - this.__parentArray._markModified(this, path); -}; - -/** - * Used as a stub for [hooks.js](https://github.com/bnoguchi/hooks-js/tree/31ec571cef0332e21121ee7157e0cf9728572cc3) - * - * ####NOTE: - * - * _This is a no-op. Does not actually save the doc to the db._ - * - * @param {Function} [fn] - * @return {EmbeddedDocument} this - * @api private - */ - -EmbeddedDocument.prototype.save = function(fn) { - if (fn) - fn(null); - return this; -}; - -/** - * Removes the subdocument from its parent array. - * - * @param {Function} [fn] - * @api public - */ - -EmbeddedDocument.prototype.remove = function (fn) { - if (!this.__parentArray) return this; - - var _id; - if (!this.willRemove) { - _id = this._doc._id; - if (!_id) { - throw new Error('For your own good, Mongoose does not know ' + - 'how to remove an EmbeddedDocument that has no _id'); - } - this.__parentArray.pull({ _id: _id }); - this.willRemove = true; - } - - if (fn) - fn(null); - - return this; -}; - -/** - * Override #update method of parent documents. - * @api private - */ - -EmbeddedDocument.prototype.update = function () { - throw new Error('The #update method is not available on EmbeddedDocuments'); -} - -/** - * Helper for console.log - * - * @api public - */ - -EmbeddedDocument.prototype.inspect = function () { - return inspect(this.toObject()); -}; - -/** - * Marks a path as invalid, causing validation to fail. - * - * @param {String} path the field to invalidate - * @param {String|Error} err error which states the reason `path` was invalid - * @return {Boolean} - * @api public - */ - -EmbeddedDocument.prototype.invalidate = function (path, err, val, first) { - if (!this.__parent) { - var msg = 'Unable to invalidate a subdocument that has not been added to an array.' - throw new Error(msg); - } - - var index = this.__parentArray.indexOf(this); - var parentPath = this.__parentArray._path; - var fullPath = [parentPath, index, path].join('.'); - - // sniffing arguments: - // need to check if user passed a value to keep - // our error message clean. - if (2 < arguments.length) { - this.__parent.invalidate(fullPath, err, val); - } else { - this.__parent.invalidate(fullPath, err); - } - - if (first) - this.$__.validationError = this.ownerDocument().$__.validationError; - return true; -} - -/** - * Returns the top level document of this sub-document. - * - * @return {Document} - */ - -EmbeddedDocument.prototype.ownerDocument = function () { - if (this.$__.ownerDocument) { - return this.$__.ownerDocument; - } - - var parent = this.__parent; - if (!parent) return this; - - while (parent.__parent) { - parent = parent.__parent; - } - - return this.$__.ownerDocument = parent; -} - -/** - * Returns the full path to this document. If optional `path` is passed, it is appended to the full path. - * - * @param {String} [path] - * @return {String} - * @api private - * @method $__fullPath - * @memberOf EmbeddedDocument - */ - -EmbeddedDocument.prototype.$__fullPath = function (path) { - if (!this.$__.fullPath) { - var parent = this; - if (!parent.__parent) return path; - - var paths = []; - while (parent.__parent) { - paths.unshift(parent.__parentArray._path); - parent = parent.__parent; - } - - this.$__.fullPath = paths.join('.'); - - if (!this.$__.ownerDocument) { - // optimization - this.$__.ownerDocument = parent; - } - } - - return path - ? this.$__.fullPath + '.' + path - : this.$__.fullPath; -} - -/** - * Returns this sub-documents parent document. - * - * @api public - */ - -EmbeddedDocument.prototype.parent = function () { - return this.__parent; -} - -/** - * Returns this sub-documents parent array. - * - * @api public - */ - -EmbeddedDocument.prototype.parentArray = function () { - return this.__parentArray; -} - -/*! - * Module exports. - */ - -module.exports = EmbeddedDocument; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js deleted file mode 100644 index e6a9901..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/index.js +++ /dev/null @@ -1,13 +0,0 @@ - -/*! - * Module exports. - */ - -exports.Array = require('./array'); -exports.Buffer = require('./buffer'); - -exports.Document = // @deprecate -exports.Embedded = require('./embedded'); - -exports.DocumentArray = require('./documentarray'); -exports.ObjectId = require('./objectid'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js deleted file mode 100644 index 44ad43f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/types/objectid.js +++ /dev/null @@ -1,43 +0,0 @@ - -/*! - * Access driver. - */ - -var driver = global.MONGOOSE_DRIVER_PATH || '../drivers/node-mongodb-native'; - -/** - * ObjectId type constructor - * - * ####Example - * - * var id = new mongoose.Types.ObjectId; - * - * @constructor ObjectId - */ - -var ObjectId = require(driver + '/objectid'); -module.exports = ObjectId; - -/** - * Creates an ObjectId from `str` - * - * @param {ObjectId|HexString} str - * @static fromString - * @receiver ObjectId - * @return {ObjectId} - * @api private - */ - -ObjectId.fromString; - -/** - * Converts `oid` to a string. - * - * @param {ObjectId} oid ObjectId instance - * @static toString - * @receiver ObjectId - * @return {String} - * @api private - */ - -ObjectId.toString; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js deleted file mode 100644 index 678a7a8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/utils.js +++ /dev/null @@ -1,671 +0,0 @@ -/*! - * Module dependencies. - */ - -var ReadPref = require('mongodb').ReadPreference - , ObjectId = require('./types/objectid') - , cloneRegExp = require('regexp-clone') - , sliced = require('sliced') - , mpath = require('mpath') - , ms = require('ms') - , MongooseBuffer - , MongooseArray - , Document - -/*! - * Produces a collection name from model `name`. - * - * @param {String} name a model name - * @return {String} a collection name - * @api private - */ - -exports.toCollectionName = function (name) { - if ('system.profile' === name) return name; - if ('system.indexes' === name) return name; - return pluralize(name.toLowerCase()); -}; - -/** - * Pluralization rules. - * - * These rules are applied while processing the argument to `toCollectionName`. - * - * @deprecated remove in 4.x gh-1350 - */ - -exports.pluralization = [ - [/(m)an$/gi, '$1en'], - [/(pe)rson$/gi, '$1ople'], - [/(child)$/gi, '$1ren'], - [/^(ox)$/gi, '$1en'], - [/(ax|test)is$/gi, '$1es'], - [/(octop|vir)us$/gi, '$1i'], - [/(alias|status)$/gi, '$1es'], - [/(bu)s$/gi, '$1ses'], - [/(buffal|tomat|potat)o$/gi, '$1oes'], - [/([ti])um$/gi, '$1a'], - [/sis$/gi, 'ses'], - [/(?:([^f])fe|([lr])f)$/gi, '$1$2ves'], - [/(hive)$/gi, '$1s'], - [/([^aeiouy]|qu)y$/gi, '$1ies'], - [/(x|ch|ss|sh)$/gi, '$1es'], - [/(matr|vert|ind)ix|ex$/gi, '$1ices'], - [/([m|l])ouse$/gi, '$1ice'], - [/(quiz)$/gi, '$1zes'], - [/s$/gi, 's'], - [/$/gi, 's'] -]; -var rules = exports.pluralization; - -/** - * Uncountable words. - * - * These words are applied while processing the argument to `toCollectionName`. - * @api public - */ - -exports.uncountables = [ - 'advice', - 'energy', - 'excretion', - 'digestion', - 'cooperation', - 'health', - 'justice', - 'labour', - 'machinery', - 'equipment', - 'information', - 'pollution', - 'sewage', - 'paper', - 'money', - 'species', - 'series', - 'rain', - 'rice', - 'fish', - 'sheep', - 'moose', - 'deer', - 'news', - 'expertise', - 'status', - 'media' -]; -var uncountables = exports.uncountables; - -/*! - * Pluralize function. - * - * @author TJ Holowaychuk (extracted from _ext.js_) - * @param {String} string to pluralize - * @api private - */ - -function pluralize (str) { - var rule, found; - if (!~uncountables.indexOf(str.toLowerCase())){ - found = rules.filter(function(rule){ - return str.match(rule[0]); - }); - if (found[0]) return str.replace(found[0][0], found[0][1]); - } - return str; -}; - -/*! - * Determines if `a` and `b` are deep equal. - * - * Modified from node/lib/assert.js - * - * @param {any} a a value to compare to `b` - * @param {any} b a value to compare to `a` - * @return {Boolean} - * @api private - */ - -exports.deepEqual = function deepEqual (a, b) { - if (a === b) return true; - - if (a instanceof Date && b instanceof Date) - return a.getTime() === b.getTime(); - - if (a instanceof ObjectId && b instanceof ObjectId) { - return a.toString() === b.toString(); - } - - if (a instanceof RegExp && b instanceof RegExp) { - return a.source == b.source && - a.ignoreCase == b.ignoreCase && - a.multiline == b.multiline && - a.global == b.global; - } - - if (typeof a !== 'object' && typeof b !== 'object') - return a == b; - - if (a === null || b === null || a === undefined || b === undefined) - return false - - if (a.prototype !== b.prototype) return false; - - // Handle MongooseNumbers - if (a instanceof Number && b instanceof Number) { - return a.valueOf() === b.valueOf(); - } - - if (Buffer.isBuffer(a)) { - if (!Buffer.isBuffer(b)) return false; - if (a.length !== b.length) return false; - for (var i = 0, len = a.length; i < len; ++i) { - if (a[i] !== b[i]) return false; - } - return true; - } - - if (isMongooseObject(a)) a = a.toObject(); - if (isMongooseObject(b)) b = b.toObject(); - - try { - var ka = Object.keys(a), - kb = Object.keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - - // having the same number of owned properties (keys incorporates - // hasOwnProperty) - if (ka.length != kb.length) - return false; - - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key])) return false; - } - - return true; -}; - -/*! - * Object clone with Mongoose natives support. - * - * If options.minimize is true, creates a minimal data object. Empty objects and undefined values will not be cloned. This makes the data payload sent to MongoDB as small as possible. - * - * Functions are never cloned. - * - * @param {Object} obj the object to clone - * @param {Object} options - * @return {Object} the cloned object - * @api private - */ - -exports.clone = function clone (obj, options) { - if (obj === undefined || obj === null) - return obj; - - if (Array.isArray(obj)) - return cloneArray(obj, options); - - if (isMongooseObject(obj)) { - if (options && options.json && 'function' === typeof obj.toJSON) { - return obj.toJSON(options); - } else { - return obj.toObject(options); - } - } - - if (obj.constructor) { - switch (obj.constructor.name) { - case 'Object': - return cloneObject(obj, options); - case 'Date': - return new obj.constructor(+obj); - case 'RegExp': - return cloneRegExp(obj); - default: - // ignore - break; - } - } - - if (obj instanceof ObjectId) - return new ObjectId(obj.id); - - if (!obj.constructor && exports.isObject(obj)) { - // object created with Object.create(null) - return cloneObject(obj, options); - } - - if (obj.valueOf) - return obj.valueOf(); -}; -var clone = exports.clone; - -/*! - * ignore - */ - -function cloneObject (obj, options) { - var retainKeyOrder = options && options.retainKeyOrder - , minimize = options && options.minimize - , ret = {} - , hasKeys - , keys - , val - , k - , i - - if (retainKeyOrder) { - for (k in obj) { - val = clone(obj[k], options); - - if (!minimize || ('undefined' !== typeof val)) { - hasKeys || (hasKeys = true); - ret[k] = val; - } - } - } else { - // faster - - keys = Object.keys(obj); - i = keys.length; - - while (i--) { - k = keys[i]; - val = clone(obj[k], options); - - if (!minimize || ('undefined' !== typeof val)) { - if (!hasKeys) hasKeys = true; - ret[k] = val; - } - } - } - - return minimize - ? hasKeys && ret - : ret; -}; - -function cloneArray (arr, options) { - var ret = []; - for (var i = 0, l = arr.length; i < l; i++) - ret.push(clone(arr[i], options)); - return ret; -}; - -/*! - * Shallow copies defaults into options. - * - * @param {Object} defaults - * @param {Object} options - * @return {Object} the merged object - * @api private - */ - -exports.options = function (defaults, options) { - var keys = Object.keys(defaults) - , i = keys.length - , k ; - - options = options || {}; - - while (i--) { - k = keys[i]; - if (!(k in options)) { - options[k] = defaults[k]; - } - } - - return options; -}; - -/*! - * Generates a random string - * - * @api private - */ - -exports.random = function () { - return Math.random().toString().substr(3); -}; - -/*! - * Merges `from` into `to` without overwriting existing properties. - * - * @param {Object} to - * @param {Object} from - * @api private - */ - -exports.merge = function merge (to, from) { - var keys = Object.keys(from) - , i = keys.length - , key - - while (i--) { - key = keys[i]; - if ('undefined' === typeof to[key]) { - to[key] = from[key]; - } else { - if (exports.isObject(from[key])) { - merge(to[key], from[key]); - } else { - to[key] = from[key]; - } - } - } -}; - -/*! - * toString helper - */ - -var toString = Object.prototype.toString; - -/*! - * Determines if `arg` is an object. - * - * @param {Object|Array|String|Function|RegExp|any} arg - * @api private - * @return {Boolean} - */ - -exports.isObject = function (arg) { - return '[object Object]' == toString.call(arg); -} - -/*! - * A faster Array.prototype.slice.call(arguments) alternative - * @api private - */ - -exports.args = sliced; - -/*! - * process.nextTick helper. - * - * Wraps `callback` in a try/catch + nextTick. - * - * node-mongodb-native has a habit of state corruption when an error is immediately thrown from within a collection callback. - * - * @param {Function} callback - * @api private - */ - -exports.tick = function tick (callback) { - if ('function' !== typeof callback) return; - return function () { - try { - callback.apply(this, arguments); - } catch (err) { - // only nextTick on err to get out of - // the event loop and avoid state corruption. - process.nextTick(function () { - throw err; - }); - } - } -} - -/*! - * Returns if `v` is a mongoose object that has a `toObject()` method we can use. - * - * This is for compatibility with libs like Date.js which do foolish things to Natives. - * - * @param {any} v - * @api private - */ - -exports.isMongooseObject = function (v) { - Document || (Document = require('./document')); - MongooseArray || (MongooseArray = require('./types').Array); - MongooseBuffer || (MongooseBuffer = require('./types').Buffer); - - return v instanceof Document || - v instanceof MongooseArray || - v instanceof MongooseBuffer -} -var isMongooseObject = exports.isMongooseObject; - -/*! - * Converts `expires` options of index objects to `expiresAfterSeconds` options for MongoDB. - * - * @param {Object} object - * @api private - */ - -exports.expires = function expires (object) { - if (!(object && 'Object' == object.constructor.name)) return; - if (!('expires' in object)) return; - - var when; - if ('string' != typeof object.expires) { - when = object.expires; - } else { - when = Math.round(ms(object.expires) / 1000); - } - object.expireAfterSeconds = when; - delete object.expires; -} - -/*! - * Converts arguments to ReadPrefs the driver - * can understand. - * - * @TODO move this into the driver layer - * @param {String|Array} pref - * @param {Array} [tags] - */ - -exports.readPref = function readPref (pref, tags) { - if (Array.isArray(pref)) { - tags = pref[1]; - pref = pref[0]; - } - - switch (pref) { - case 'p': - pref = 'primary'; - break; - case 'pp': - pref = 'primaryPreferred'; - break; - case 's': - pref = 'secondary'; - break; - case 'sp': - pref = 'secondaryPreferred'; - break; - case 'n': - pref = 'nearest'; - break; - } - - return new ReadPref(pref, tags); -} - -/*! - * Populate options constructor - */ - -function PopulateOptions (path, select, match, options, model) { - this.path = path; - this.match = match; - this.select = select; - this.options = options; - this.model = model; - this._docs = {}; -} - -// make it compatible with utils.clone -PopulateOptions.prototype.constructor = Object; - -// expose -exports.PopulateOptions = PopulateOptions; - -/*! - * populate helper - */ - -exports.populate = function populate (path, select, model, match, options) { - // The order of select/conditions args is opposite Model.find but - // necessary to keep backward compatibility (select could be - // an array, string, or object literal). - - // might have passed an object specifying all arguments - if (1 === arguments.length) { - if (path instanceof PopulateOptions) { - return [path]; - } - - if (Array.isArray(path)) { - return path.map(function(o){ - return exports.populate(o)[0]; - }); - } - - if (exports.isObject(path)) { - match = path.match; - options = path.options; - select = path.select; - model = path.model; - path = path.path; - } - } else if ('string' !== typeof model) { - options = match; - match = model; - model = undefined; - } - - if ('string' != typeof path) { - throw new TypeError('utils.populate: invalid path. Expected string. Got typeof `' + typeof path + '`'); - } - - var ret = []; - var paths = path.split(' '); - for (var i = 0; i < paths.length; ++i) { - ret.push(new PopulateOptions(paths[i], select, match, options, model)); - } - - return ret; -} - -/*! - * Return the value of `obj` at the given `path`. - * - * @param {String} path - * @param {Object} obj - */ - -exports.getValue = function (path, obj, map) { - return mpath.get(path, obj, '_doc', map); -} - -/*! - * Sets the value of `obj` at the given `path`. - * - * @param {String} path - * @param {Anything} val - * @param {Object} obj - */ - -exports.setValue = function (path, val, obj, map) { - mpath.set(path, val, obj, '_doc', map); -} - -/*! - * Returns an array of values from object `o`. - * - * @param {Object} o - * @return {Array} - * @private - */ - -exports.object = {}; -exports.object.vals = function vals (o) { - var keys = Object.keys(o) - , i = keys.length - , ret = []; - - while (i--) { - ret.push(o[keys[i]]); - } - - return ret; -} - -/*! - * @see exports.options - */ - -exports.object.shallowCopy = exports.options; - -/*! - * Safer helper for hasOwnProperty checks - * - * @param {Object} obj - * @param {String} prop - */ - -exports.object.hasOwnProperty = function (obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -/*! - * Determine if `val` is null or undefined - * - * @return {Boolean} - */ - -exports.isNullOrUndefined = function (val) { - return null == val -} - -/*! - * ignore - */ - -exports.array = {}; - -/*! - * Flattens an array. - * - * [ 1, [ 2, 3, [4] ]] -> [1,2,3,4] - * - * @param {Array} arr - * @param {Function} [filter] If passed, will be invoked with each item in the array. If `filter` returns a falsey value, the item will not be included in the results. - * @return {Array} - * @private - */ - -exports.array.flatten = function flatten (arr, filter, ret) { - ret || (ret = []); - - arr.forEach(function (item) { - if (Array.isArray(item)) { - flatten(item, filter, ret); - } else { - if (!filter || filter(item)) { - ret.push(item); - } - } - }); - - return ret; -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js b/nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js deleted file mode 100644 index 819ac10..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/lib/virtualtype.js +++ /dev/null @@ -1,103 +0,0 @@ - -/** - * VirtualType constructor - * - * This is what mongoose uses to define virtual attributes via `Schema.prototype.virtual`. - * - * ####Example: - * - * var fullname = schema.virtual('fullname'); - * fullname instanceof mongoose.VirtualType // true - * - * @parma {Object} options - * @api public - */ - -function VirtualType (options, name) { - this.path = name; - this.getters = []; - this.setters = []; - this.options = options || {}; -} - -/** - * Defines a getter. - * - * ####Example: - * - * var virtual = schema.virtual('fullname'); - * virtual.get(function () { - * return this.name.first + ' ' + this.name.last; - * }); - * - * @param {Function} fn - * @return {VirtualType} this - * @api public - */ - -VirtualType.prototype.get = function (fn) { - this.getters.push(fn); - return this; -}; - -/** - * Defines a setter. - * - * ####Example: - * - * var virtual = schema.virtual('fullname'); - * virtual.set(function (v) { - * var parts = v.split(' '); - * this.name.first = parts[0]; - * this.name.last = parts[1]; - * }); - * - * @param {Function} fn - * @return {VirtualType} this - * @api public - */ - -VirtualType.prototype.set = function (fn) { - this.setters.push(fn); - return this; -}; - -/** - * Applies getters to `value` using optional `scope`. - * - * @param {Object} value - * @param {Object} scope - * @return {any} the value after applying all getters - * @api public - */ - -VirtualType.prototype.applyGetters = function (value, scope) { - var v = value; - for (var l = this.getters.length - 1; l >= 0; l--) { - v = this.getters[l].call(scope, v, this); - } - return v; -}; - -/** - * Applies setters to `value` using optional `scope`. - * - * @param {Object} value - * @param {Object} scope - * @return {any} the value after applying all setters - * @api public - */ - -VirtualType.prototype.applySetters = function (value, scope) { - var v = value; - for (var l = this.setters.length - 1; l >= 0; l--) { - v = this.setters[l].call(scope, v, this); - } - return v; -}; - -/*! - * exports - */ - -module.exports = VirtualType; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore deleted file mode 100644 index 96e29a8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -**.swp -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile deleted file mode 100644 index 1db5d65..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -test: - @NODE_ENV=test ./node_modules/expresso/bin/expresso \ - $(TESTFLAGS) \ - ./test.js - -test-cov: - @TESTFLAGS=--cov $(MAKE) test - -.PHONY: test test-cov diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md deleted file mode 100644 index af90a48..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/README.md +++ /dev/null @@ -1,306 +0,0 @@ -hooks -============ - -Add pre and post middleware hooks to your JavaScript methods. - -## Installation - npm install hooks - -## Motivation -Suppose you have a JavaScript object with a `save` method. - -It would be nice to be able to declare code that runs before `save` and after `save`. -For example, you might want to run validation code before every `save`, -and you might want to dispatch a job to a background job queue after `save`. - -One might have an urge to hard code this all into `save`, but that turns out to -couple all these pieces of functionality (validation, save, and job creation) more -tightly than is necessary. For example, what if someone does not want to do background -job creation after the logical save? - -It is nicer to tack on functionality using what we call `pre` and `post` hooks. These -are functions that you define and that you direct to execute before or after particular -methods. - -## Example -We can use `hooks` to add validation and background jobs in the following way: - - var hooks = require('hooks') - , Document = require('./path/to/some/document/constructor'); - - // Add hooks' methods: `hook`, `pre`, and `post` - for (var k in hooks) { - Document[k] = hooks[k]; - } - - // Define a new method that is able to invoke pre and post middleware - Document.hook('save', Document.prototype.save); - - // Define a middleware function to be invoked before 'save' - Document.pre('save', function validate (next) { - // The `this` context inside of `pre` and `post` functions - // is the Document instance - if (this.isValid()) next(); // next() passes control to the next middleware - // or to the target method itself - else next(new Error("Invalid")); // next(error) invokes an error callback - }); - - // Define a middleware function to be invoked after 'save' - Document.post('save', function createJob () { - this.sendToBackgroundQueue(); - }); - -If you already have defined `Document.prototype` methods for which you want pres and posts, -then you do not need to explicitly invoke `Document.hook(...)`. Invoking `Document.pre(methodName, fn)` -or `Document.post(methodName, fn)` will automatically and lazily change `Document.prototype[methodName]` -so that it plays well with `hooks`. An equivalent way to implement the previous example is: - -```javascript -var hooks = require('hooks') - , Document = require('./path/to/some/document/constructor'); - -// Add hooks' methods: `hook`, `pre`, and `post` -for (var k in hooks) { - Document[k] = hooks[k]; -} - -Document.prototype.save = function () { - // ... -}; - -// Define a middleware function to be invoked before 'save' -Document.pre('save', function validate (next) { - // The `this` context inside of `pre` and `post` functions - // is the Document instance - if (this.isValid()) next(); // next() passes control to the next middleware - // or to the target method itself - else next(new Error("Invalid")); // next(error) invokes an error callback -}); - -// Define a middleware function to be invoked after 'save' -Document.post('save', function createJob () { - this.sendToBackgroundQueue(); -}); -``` - -## Pres and Posts as Middleware -We structure pres and posts as middleware to give you maximum flexibility: - -1. You can define **multiple** pres (or posts) for a single method. -2. These pres (or posts) are then executed as a chain of methods. -3. Any functions in this middleware chain can choose to halt the chain's execution by `next`ing an Error from that middleware function. If this occurs, then none of the other middleware in the chain will execute, and the main method (e.g., `save`) will not execute. This is nice, for example, when we don't want a document to save if it is invalid. - -## Defining multiple pres (or posts) -`pre` is chainable, so you can define multiple pres via: - Document.pre('save', function (next, halt) { - console.log("hello"); - }).pre('save', function (next, halt) { - console.log("world"); - }); - -As soon as one pre finishes executing, the next one will be invoked, and so on. - -## Error Handling -You can define a default error handler by passing a 2nd function as the 3rd argument to `hook`: - Document.hook('set', function (path, val) { - this[path] = val; - }, function (err) { - // Handler the error here - console.error(err); - }); - -Then, we can pass errors to this handler from a pre or post middleware function: - Document.pre('set', function (next, path, val) { - next(new Error()); - }); - -If you do not set up a default handler, then `hooks` makes the default handler that just throws the `Error`. - -The default error handler can be over-rided on a per method invocation basis. - -If the main method that you are surrounding with pre and post middleware expects its last argument to be a function -with callback signature `function (error, ...)`, then that callback becomes the error handler, over-riding the default -error handler you may have set up. - -```javascript -Document.hook('save', function (callback) { - // Save logic goes here - ... -}); - -var doc = new Document(); -doc.save( function (err, saved) { - // We can pass err via `next` in any of our pre or post middleware functions - if (err) console.error(err); - - // Rest of callback logic follows ... -}); -``` - -## Mutating Arguments via Middleware -`pre` and `post` middleware can also accept the intended arguments for the method -they augment. This is useful if you want to mutate the arguments before passing -them along to the next middleware and eventually pass a mutated arguments list to -the main method itself. - -As a simple example, let's define a method `set` that just sets a key, value pair. -If we want to namespace the key, we can do so by adding a `pre` middleware hook -that runs before `set`, alters the arguments by namespacing the `key` argument, and passes them onto `set`: - - Document.hook('set', function (key, val) { - this[key] = val; - }); - Document.pre('set', function (next, key, val) { - next('namespace-' + key, val); - }); - var doc = new Document(); - doc.set('hello', 'world'); - console.log(doc.hello); // undefined - console.log(doc['namespace-hello']); // 'world' - -As you can see above, we pass arguments via `next`. - -If you are not mutating the arguments, then you can pass zero arguments -to `next`, and the next middleware function will still have access -to the arguments. - - Document.hook('set', function (key, val) { - this[key] = val; - }); - Document.pre('set', function (next, key, val) { - // I have access to key and val here - next(); // We don't need to pass anything to next - }); - Document.pre('set', function (next, key, val) { - // And I still have access to the original key and val here - next(); - }); - -Finally, you can add arguments that downstream middleware can also see: - - // Note that in the definition of `set`, there is no 3rd argument, options - Document.hook('set', function (key, val) { - // But... - var options = arguments[2]; // ...I have access to an options argument - // because of pre function pre2 (defined below) - console.log(options); // '{debug: true}' - this[key] = val; - }); - Document.pre('set', function pre1 (next, key, val) { - // I only have access to key and val arguments - console.log(arguments.length); // 3 - next(key, val, {debug: true}); - }); - Document.pre('set', function pre2 (next, key, val, options) { - console.log(arguments.length); // 4 - console.log(options); // '{ debug: true}' - next(); - }); - Document.pre('set', function pre3 (next, key, val, options) { - // I still have access to key, val, AND the options argument introduced via the preceding middleware - console.log(arguments.length); // 4 - console.log(options); // '{ debug: true}' - next(); - }); - - var doc = new Document() - doc.set('hey', 'there'); - -## Parallel `pre` middleware - -All middleware up to this point has been "serial" middleware -- i.e., middleware whose logic -is executed as a serial chain. - -Some scenarios call for parallel middleware -- i.e., middleware that can wait for several -asynchronous services at once to respond. - -For instance, you may only want to save a Document only after you have checked -that the Document is valid according to two different remote services. - -We accomplish asynchronous middleware by adding a second kind of flow control callback -(the only flow control callback so far has been `next`), called `done`. - -- `next` passes control to the next middleware in the chain -- `done` keeps track of how many parallel middleware have invoked `done` and passes - control to the target method when ALL parallel middleware have invoked `done`. If - you pass an `Error` to `done`, then the error is handled, and the main method that is - wrapped by pres and posts will not get invoked. - -We declare pre middleware that is parallel by passing a 3rd boolean argument to our `pre` -definition method. - -We illustrate via the parallel validation example mentioned above: - - Document.hook('save', function targetFn (callback) { - // Save logic goes here - // ... - // This only gets run once the two `done`s are both invoked via preOne and preTwo. - }); - - // true marks this as parallel middleware - Document.pre('save', true, function preOne (next, doneOne, callback) { - remoteServiceOne.validate(this.serialize(), function (err, isValid) { - // The code in here will probably be run after the `next` below this block - // and could possibly be run after the console.log("Hola") in `preTwo - if (err) return doneOne(err); - if (isValid) doneOne(); - }); - next(); // Pass control to the next middleware - }); - - // We will suppose that we need 2 different remote services to validate our document - Document.pre('save', true, function preTwo (next, doneTwo, callback) { - remoteServiceTwo.validate(this.serialize(), function (err, isValid) { - if (err) return doneTwo(err); - if (isValid) doneTwo(); - }); - next(); - }); - - // While preOne and preTwo are parallel, preThree is a serial pre middleware - Document.pre('save', function preThree (next, callback) { - next(); - }); - - var doc = new Document(); - doc.save( function (err, doc) { - // Do stuff with the saved doc here... - }); - -In the above example, flow control may happen in the following way: - -(1) doc.save -> (2) preOne --(next)--> (3) preTwo --(next)--> (4) preThree --(next)--> (wait for dones to invoke) -> (5) doneTwo -> (6) doneOne -> (7) targetFn - -So what's happening is that: - -1. You call `doc.save(...)` -2. First, your preOne middleware gets executed. It makes a remote call to the validation service and `next()`s to the preTwo middleware. -3. Now, your preTwo middleware gets executed. It makes a remote call to another validation service and `next()`s to the preThree middleware. -4. Your preThree middleware gets executed. It immediately `next()`s. But nothing else gets executing until both `doneOne` and `doneTwo` are invoked inside the callbacks handling the response from the two valiation services. -5. We will suppose that validation remoteServiceTwo returns a response to us first. In this case, we call `doneTwo` inside the callback to remoteServiceTwo. -6. Some fractions of a second later, remoteServiceOne returns a response to us. In this case, we call `doneOne` inside the callback to remoteServiceOne. -7. `hooks` implementation keeps track of how many parallel middleware has been defined per target function. It detects that both asynchronous pre middlewares (`preOne` and `preTwo`) have finally called their `done` functions (`doneOne` and `doneTwo`), so the implementation finally invokes our `targetFn` (i.e., our core `save` business logic). - -## Removing Pres - -You can remove a particular pre associated with a hook: - - Document.pre('set', someFn); - Document.removePre('set', someFn); - -And you can also remove all pres associated with a hook: - Document.removePre('set'); // Removes all declared `pre`s on the hook 'set' - -## Tests -To run the tests: - make test - -### Contributors -- [Brian Noguchi](https://github.com/bnoguchi) - -### License -MIT License - ---- -### Author -Brian Noguchi diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js deleted file mode 100644 index 6ced357..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.alt.js +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Hooks are useful if we want to add a method that automatically has `pre` and `post` hooks. - * For example, it would be convenient to have `pre` and `post` hooks for `save`. - * _.extend(Model, mixins.hooks); - * Model.hook('save', function () { - * console.log('saving'); - * }); - * Model.pre('save', function (next, done) { - * console.log('about to save'); - * next(); - * }); - * Model.post('save', function (next, done) { - * console.log('saved'); - * next(); - * }); - * - * var m = new Model(); - * m.save(); - * // about to save - * // saving - * // saved - */ - -// TODO Add in pre and post skipping options -module.exports = { - /** - * Declares a new hook to which you can add pres and posts - * @param {String} name of the function - * @param {Function} the method - * @param {Function} the error handler callback - */ - hook: function (name, fn, err) { - if (arguments.length === 1 && typeof name === 'object') { - for (var k in name) { // `name` is a hash of hookName->hookFn - this.hook(k, name[k]); - } - return; - } - - if (!err) err = fn; - - var proto = this.prototype || this - , pres = proto._pres = proto._pres || {} - , posts = proto._posts = proto._posts || {}; - pres[name] = pres[name] || []; - posts[name] = posts[name] || []; - - function noop () {} - - proto[name] = function () { - var self = this - , pres = this._pres[name] - , posts = this._posts[name] - , numAsyncPres = 0 - , hookArgs = [].slice.call(arguments) - , preChain = pres.map( function (pre, i) { - var wrapper = function () { - if (arguments[0] instanceof Error) - return err(arguments[0]); - if (numAsyncPres) { - // arguments[1] === asyncComplete - if (arguments.length) - hookArgs = [].slice.call(arguments, 2); - pre.apply(self, - [ preChain[i+1] || allPresInvoked, - asyncComplete - ].concat(hookArgs) - ); - } else { - if (arguments.length) - hookArgs = [].slice.call(arguments); - pre.apply(self, - [ preChain[i+1] || allPresDone ].concat(hookArgs)); - } - }; // end wrapper = function () {... - if (wrapper.isAsync = pre.isAsync) - numAsyncPres++; - return wrapper; - }); // end posts.map(...) - function allPresInvoked () { - if (arguments[0] instanceof Error) - err(arguments[0]); - } - - function allPresDone () { - if (arguments[0] instanceof Error) - return err(arguments[0]); - if (arguments.length) - hookArgs = [].slice.call(arguments); - fn.apply(self, hookArgs); - var postChain = posts.map( function (post, i) { - var wrapper = function () { - if (arguments[0] instanceof Error) - return err(arguments[0]); - if (arguments.length) - hookArgs = [].slice.call(arguments); - post.apply(self, - [ postChain[i+1] || noop].concat(hookArgs)); - }; // end wrapper = function () {... - return wrapper; - }); // end posts.map(...) - if (postChain.length) postChain[0](); - } - - if (numAsyncPres) { - complete = numAsyncPres; - function asyncComplete () { - if (arguments[0] instanceof Error) - return err(arguments[0]); - --complete || allPresDone.call(this); - } - } - (preChain[0] || allPresDone)(); - }; - - return this; - }, - - pre: function (name, fn, isAsync) { - var proto = this.prototype - , pres = proto._pres = proto._pres || {}; - if (fn.isAsync = isAsync) { - this.prototype[name].numAsyncPres++; - } - (pres[name] = pres[name] || []).push(fn); - return this; - }, - post: function (name, fn, isAsync) { - var proto = this.prototype - , posts = proto._posts = proto._posts || {}; - (posts[name] = posts[name] || []).push(fn); - return this; - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js deleted file mode 100644 index 9a887c7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/hooks.js +++ /dev/null @@ -1,161 +0,0 @@ -// TODO Add in pre and post skipping options -module.exports = { - /** - * Declares a new hook to which you can add pres and posts - * @param {String} name of the function - * @param {Function} the method - * @param {Function} the error handler callback - */ - hook: function (name, fn, errorCb) { - if (arguments.length === 1 && typeof name === 'object') { - for (var k in name) { // `name` is a hash of hookName->hookFn - this.hook(k, name[k]); - } - return; - } - - var proto = this.prototype || this - , pres = proto._pres = proto._pres || {} - , posts = proto._posts = proto._posts || {}; - pres[name] = pres[name] || []; - posts[name] = posts[name] || []; - - proto[name] = function () { - var self = this - , hookArgs // arguments eventually passed to the hook - are mutable - , lastArg = arguments[arguments.length-1] - , pres = this._pres[name] - , posts = this._posts[name] - , _total = pres.length - , _current = -1 - , _asyncsLeft = proto[name].numAsyncPres - , _next = function () { - if (arguments[0] instanceof Error) { - return handleError(arguments[0]); - } - var _args = Array.prototype.slice.call(arguments) - , currPre - , preArgs; - if (_args.length && !(arguments[0] == null && typeof lastArg === 'function')) - hookArgs = _args; - if (++_current < _total) { - currPre = pres[_current] - if (currPre.isAsync && currPre.length < 2) - throw new Error("Your pre must have next and done arguments -- e.g., function (next, done, ...)"); - if (currPre.length < 1) - throw new Error("Your pre must have a next argument -- e.g., function (next, ...)"); - preArgs = (currPre.isAsync - ? [once(_next), once(_asyncsDone)] - : [once(_next)]).concat(hookArgs); - return currPre.apply(self, preArgs); - } else if (!proto[name].numAsyncPres) { - return _done.apply(self, hookArgs); - } - } - , _done = function () { - var args_ = Array.prototype.slice.call(arguments) - , ret, total_, current_, next_, done_, postArgs; - if (_current === _total) { - ret = fn.apply(self, args_); - total_ = posts.length; - current_ = -1; - next_ = function () { - if (arguments[0] instanceof Error) { - return handleError(arguments[0]); - } - var args_ = Array.prototype.slice.call(arguments, 1) - , currPost - , postArgs; - if (args_.length) hookArgs = args_; - if (++current_ < total_) { - currPost = posts[current_] - if (currPost.length < 1) - throw new Error("Your post must have a next argument -- e.g., function (next, ...)"); - postArgs = [once(next_)].concat(hookArgs); - return currPost.apply(self, postArgs); - } - }; - if (total_) return next_(); - return ret; - } - }; - if (_asyncsLeft) { - function _asyncsDone (err) { - if (err && err instanceof Error) { - return handleError(err); - } - --_asyncsLeft || _done.apply(self, hookArgs); - } - } - function handleError (err) { - if ('function' == typeof lastArg) - return lastArg(err); - if (errorCb) return errorCb.call(self, err); - throw err; - } - return _next.apply(this, arguments); - }; - - proto[name].numAsyncPres = 0; - - return this; - }, - - pre: function (name, isAsync, fn, errorCb) { - if ('boolean' !== typeof arguments[1]) { - errorCb = fn; - fn = isAsync; - isAsync = false; - } - var proto = this.prototype || this - , pres = proto._pres = proto._pres || {}; - - this._lazySetupHooks(proto, name, errorCb); - - if (fn.isAsync = isAsync) { - proto[name].numAsyncPres++; - } - - (pres[name] = pres[name] || []).push(fn); - return this; - }, - post: function (name, isAsync, fn) { - if (arguments.length === 2) { - fn = isAsync; - isAsync = false; - } - var proto = this.prototype || this - , posts = proto._posts = proto._posts || {}; - - this._lazySetupHooks(proto, name); - (posts[name] = posts[name] || []).push(fn); - return this; - }, - removePre: function (name, fnToRemove) { - var proto = this.prototype || this - , pres = proto._pres || (proto._pres || {}); - if (!pres[name]) return this; - if (arguments.length === 1) { - // Remove all pre callbacks for hook `name` - pres[name].length = 0; - } else { - pres[name] = pres[name].filter( function (currFn) { - return currFn !== fnToRemove; - }); - } - return this; - }, - _lazySetupHooks: function (proto, methodName, errorCb) { - if ('undefined' === typeof proto[methodName].numAsyncPres) { - this.hook(methodName, proto[methodName], errorCb); - } - } -}; - -function once (fn, scope) { - return function fnWrapper () { - if (fnWrapper.hookCalled) return; - fnWrapper.hookCalled = true; - fn.apply(scope, arguments); - }; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json deleted file mode 100644 index 798cff5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "hooks", - "description": "Adds pre and post hook functionality to your JavaScript methods.", - "version": "0.2.1", - "keywords": [ - "node", - "hooks", - "middleware", - "pre", - "post" - ], - "homepage": "https://github.com/bnoguchi/hooks-js/", - "repository": { - "type": "git", - "url": "git://github.com/bnoguchi/hooks-js.git" - }, - "author": { - "name": "Brian Noguchi", - "email": "brian.noguchi@gmail.com", - "url": "https://github.com/bnoguchi/" - }, - "main": "./hooks.js", - "directories": { - "lib": "." - }, - "scripts": { - "test": "make test" - }, - "dependencies": {}, - "devDependencies": { - "expresso": ">=0.7.6", - "should": ">=0.2.1", - "underscore": ">=1.1.4" - }, - "engines": { - "node": ">=0.4.0" - }, - "licenses": [ - "MIT" - ], - "optionalDependencies": {}, - "readme": "hooks\n============\n\nAdd pre and post middleware hooks to your JavaScript methods.\n\n## Installation\n npm install hooks\n\n## Motivation\nSuppose you have a JavaScript object with a `save` method.\n\nIt would be nice to be able to declare code that runs before `save` and after `save`.\nFor example, you might want to run validation code before every `save`,\nand you might want to dispatch a job to a background job queue after `save`.\n\nOne might have an urge to hard code this all into `save`, but that turns out to\ncouple all these pieces of functionality (validation, save, and job creation) more\ntightly than is necessary. For example, what if someone does not want to do background\njob creation after the logical save? \n\nIt is nicer to tack on functionality using what we call `pre` and `post` hooks. These\nare functions that you define and that you direct to execute before or after particular\nmethods.\n\n## Example\nWe can use `hooks` to add validation and background jobs in the following way:\n\n var hooks = require('hooks')\n , Document = require('./path/to/some/document/constructor');\n\n // Add hooks' methods: `hook`, `pre`, and `post` \n for (var k in hooks) {\n Document[k] = hooks[k];\n }\n\n // Define a new method that is able to invoke pre and post middleware\n Document.hook('save', Document.prototype.save);\n\n // Define a middleware function to be invoked before 'save'\n Document.pre('save', function validate (next) {\n // The `this` context inside of `pre` and `post` functions\n // is the Document instance\n if (this.isValid()) next(); // next() passes control to the next middleware\n // or to the target method itself\n else next(new Error(\"Invalid\")); // next(error) invokes an error callback\n });\n\n // Define a middleware function to be invoked after 'save'\n Document.post('save', function createJob () {\n this.sendToBackgroundQueue();\n });\n\nIf you already have defined `Document.prototype` methods for which you want pres and posts,\nthen you do not need to explicitly invoke `Document.hook(...)`. Invoking `Document.pre(methodName, fn)`\nor `Document.post(methodName, fn)` will automatically and lazily change `Document.prototype[methodName]`\nso that it plays well with `hooks`. An equivalent way to implement the previous example is:\n\n```javascript\nvar hooks = require('hooks')\n , Document = require('./path/to/some/document/constructor');\n\n// Add hooks' methods: `hook`, `pre`, and `post` \nfor (var k in hooks) {\n Document[k] = hooks[k];\n}\n\nDocument.prototype.save = function () {\n // ...\n};\n\n// Define a middleware function to be invoked before 'save'\nDocument.pre('save', function validate (next) {\n // The `this` context inside of `pre` and `post` functions\n // is the Document instance\n if (this.isValid()) next(); // next() passes control to the next middleware\n // or to the target method itself\n else next(new Error(\"Invalid\")); // next(error) invokes an error callback\n});\n\n// Define a middleware function to be invoked after 'save'\nDocument.post('save', function createJob () {\n this.sendToBackgroundQueue();\n});\n```\n\n## Pres and Posts as Middleware\nWe structure pres and posts as middleware to give you maximum flexibility:\n\n1. You can define **multiple** pres (or posts) for a single method.\n2. These pres (or posts) are then executed as a chain of methods.\n3. Any functions in this middleware chain can choose to halt the chain's execution by `next`ing an Error from that middleware function. If this occurs, then none of the other middleware in the chain will execute, and the main method (e.g., `save`) will not execute. This is nice, for example, when we don't want a document to save if it is invalid.\n\n## Defining multiple pres (or posts)\n`pre` is chainable, so you can define multiple pres via:\n Document.pre('save', function (next, halt) {\n console.log(\"hello\");\n }).pre('save', function (next, halt) {\n console.log(\"world\");\n });\n\nAs soon as one pre finishes executing, the next one will be invoked, and so on.\n\n## Error Handling\nYou can define a default error handler by passing a 2nd function as the 3rd argument to `hook`:\n Document.hook('set', function (path, val) {\n this[path] = val;\n }, function (err) {\n // Handler the error here\n console.error(err);\n });\n\nThen, we can pass errors to this handler from a pre or post middleware function:\n Document.pre('set', function (next, path, val) {\n next(new Error());\n });\n\nIf you do not set up a default handler, then `hooks` makes the default handler that just throws the `Error`.\n\nThe default error handler can be over-rided on a per method invocation basis.\n\nIf the main method that you are surrounding with pre and post middleware expects its last argument to be a function\nwith callback signature `function (error, ...)`, then that callback becomes the error handler, over-riding the default\nerror handler you may have set up.\n \n```javascript\nDocument.hook('save', function (callback) {\n // Save logic goes here\n ...\n});\n\nvar doc = new Document();\ndoc.save( function (err, saved) {\n // We can pass err via `next` in any of our pre or post middleware functions\n if (err) console.error(err);\n \n // Rest of callback logic follows ...\n});\n```\n\n## Mutating Arguments via Middleware\n`pre` and `post` middleware can also accept the intended arguments for the method\nthey augment. This is useful if you want to mutate the arguments before passing\nthem along to the next middleware and eventually pass a mutated arguments list to\nthe main method itself.\n\nAs a simple example, let's define a method `set` that just sets a key, value pair.\nIf we want to namespace the key, we can do so by adding a `pre` middleware hook\nthat runs before `set`, alters the arguments by namespacing the `key` argument, and passes them onto `set`:\n\n Document.hook('set', function (key, val) {\n this[key] = val;\n });\n Document.pre('set', function (next, key, val) {\n next('namespace-' + key, val);\n });\n var doc = new Document();\n doc.set('hello', 'world');\n console.log(doc.hello); // undefined\n console.log(doc['namespace-hello']); // 'world'\n\nAs you can see above, we pass arguments via `next`.\n\nIf you are not mutating the arguments, then you can pass zero arguments\nto `next`, and the next middleware function will still have access\nto the arguments.\n\n Document.hook('set', function (key, val) {\n this[key] = val;\n });\n Document.pre('set', function (next, key, val) {\n // I have access to key and val here\n next(); // We don't need to pass anything to next\n });\n Document.pre('set', function (next, key, val) {\n // And I still have access to the original key and val here\n next();\n });\n\nFinally, you can add arguments that downstream middleware can also see:\n\n // Note that in the definition of `set`, there is no 3rd argument, options\n Document.hook('set', function (key, val) {\n // But...\n var options = arguments[2]; // ...I have access to an options argument\n // because of pre function pre2 (defined below)\n console.log(options); // '{debug: true}'\n this[key] = val;\n });\n Document.pre('set', function pre1 (next, key, val) {\n // I only have access to key and val arguments\n console.log(arguments.length); // 3\n next(key, val, {debug: true});\n });\n Document.pre('set', function pre2 (next, key, val, options) {\n console.log(arguments.length); // 4\n console.log(options); // '{ debug: true}'\n next();\n });\n Document.pre('set', function pre3 (next, key, val, options) {\n // I still have access to key, val, AND the options argument introduced via the preceding middleware\n console.log(arguments.length); // 4\n console.log(options); // '{ debug: true}'\n next();\n });\n \n var doc = new Document()\n doc.set('hey', 'there');\n\n## Parallel `pre` middleware\n\nAll middleware up to this point has been \"serial\" middleware -- i.e., middleware whose logic\nis executed as a serial chain.\n\nSome scenarios call for parallel middleware -- i.e., middleware that can wait for several\nasynchronous services at once to respond.\n\nFor instance, you may only want to save a Document only after you have checked\nthat the Document is valid according to two different remote services.\n\nWe accomplish asynchronous middleware by adding a second kind of flow control callback\n(the only flow control callback so far has been `next`), called `done`.\n\n- `next` passes control to the next middleware in the chain\n- `done` keeps track of how many parallel middleware have invoked `done` and passes\n control to the target method when ALL parallel middleware have invoked `done`. If\n you pass an `Error` to `done`, then the error is handled, and the main method that is\n wrapped by pres and posts will not get invoked.\n\nWe declare pre middleware that is parallel by passing a 3rd boolean argument to our `pre`\ndefinition method.\n\nWe illustrate via the parallel validation example mentioned above:\n\n Document.hook('save', function targetFn (callback) {\n // Save logic goes here\n // ...\n // This only gets run once the two `done`s are both invoked via preOne and preTwo.\n });\n\n // true marks this as parallel middleware\n Document.pre('save', true, function preOne (next, doneOne, callback) {\n remoteServiceOne.validate(this.serialize(), function (err, isValid) {\n // The code in here will probably be run after the `next` below this block\n // and could possibly be run after the console.log(\"Hola\") in `preTwo\n if (err) return doneOne(err);\n if (isValid) doneOne();\n });\n next(); // Pass control to the next middleware\n });\n \n // We will suppose that we need 2 different remote services to validate our document\n Document.pre('save', true, function preTwo (next, doneTwo, callback) {\n remoteServiceTwo.validate(this.serialize(), function (err, isValid) {\n if (err) return doneTwo(err);\n if (isValid) doneTwo();\n });\n next();\n });\n \n // While preOne and preTwo are parallel, preThree is a serial pre middleware\n Document.pre('save', function preThree (next, callback) {\n next();\n });\n \n var doc = new Document();\n doc.save( function (err, doc) {\n // Do stuff with the saved doc here...\n });\n\nIn the above example, flow control may happen in the following way:\n\n(1) doc.save -> (2) preOne --(next)--> (3) preTwo --(next)--> (4) preThree --(next)--> (wait for dones to invoke) -> (5) doneTwo -> (6) doneOne -> (7) targetFn\n\nSo what's happening is that:\n\n1. You call `doc.save(...)`\n2. First, your preOne middleware gets executed. It makes a remote call to the validation service and `next()`s to the preTwo middleware.\n3. Now, your preTwo middleware gets executed. It makes a remote call to another validation service and `next()`s to the preThree middleware.\n4. Your preThree middleware gets executed. It immediately `next()`s. But nothing else gets executing until both `doneOne` and `doneTwo` are invoked inside the callbacks handling the response from the two valiation services.\n5. We will suppose that validation remoteServiceTwo returns a response to us first. In this case, we call `doneTwo` inside the callback to remoteServiceTwo.\n6. Some fractions of a second later, remoteServiceOne returns a response to us. In this case, we call `doneOne` inside the callback to remoteServiceOne.\n7. `hooks` implementation keeps track of how many parallel middleware has been defined per target function. It detects that both asynchronous pre middlewares (`preOne` and `preTwo`) have finally called their `done` functions (`doneOne` and `doneTwo`), so the implementation finally invokes our `targetFn` (i.e., our core `save` business logic).\n\n## Removing Pres\n\nYou can remove a particular pre associated with a hook:\n\n Document.pre('set', someFn);\n Document.removePre('set', someFn);\n\nAnd you can also remove all pres associated with a hook:\n Document.removePre('set'); // Removes all declared `pre`s on the hook 'set'\n\n## Tests\nTo run the tests:\n make test\n\n### Contributors\n- [Brian Noguchi](https://github.com/bnoguchi)\n\n### License\nMIT License\n\n---\n### Author\nBrian Noguchi\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/bnoguchi/hooks-js/issues" - }, - "_id": "hooks@0.2.1", - "dist": { - "shasum": "71a04e72ae50d0d5bc58f13f29c8f343455cbb23" - }, - "_from": "hooks@0.2.1", - "_resolved": "https://registry.npmjs.org/hooks/-/hooks-0.2.1.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js deleted file mode 100644 index efe2f3e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/hooks/test.js +++ /dev/null @@ -1,691 +0,0 @@ -var hooks = require('./hooks') - , should = require('should') - , assert = require('assert') - , _ = require('underscore'); - -// TODO Add in test for making sure all pres get called if pre is defined directly on an instance. -// TODO Test for calling `done` twice or `next` twice in the same function counts only once -module.exports = { - 'should be able to assign multiple hooks at once': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook({ - hook1: function (a) {}, - hook2: function (b) {} - }); - var a = new A(); - assert.equal(typeof a.hook1, 'function'); - assert.equal(typeof a.hook2, 'function'); - }, - 'should run without pres and posts when not present': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - var a = new A(); - a.save(); - a.value.should.equal(1); - }, - 'should run with pres when present': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.pre('save', function (next) { - this.preValue = 2; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(1); - a.preValue.should.equal(2); - }, - 'should run with posts when present': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.post('save', function (next) { - this.value = 2; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(2); - }, - 'should run pres and posts when present': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.pre('save', function (next) { - this.preValue = 2; - next(); - }); - A.post('save', function (next) { - this.value = 3; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(3); - a.preValue.should.equal(2); - }, - 'should run posts after pres': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.pre('save', function (next) { - this.override = 100; - next(); - }); - A.post('save', function (next) { - this.override = 200; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(1); - a.override.should.equal(200); - }, - 'should not run a hook if a pre fails': function () { - var A = function () {}; - _.extend(A, hooks); - var counter = 0; - A.hook('save', function () { - this.value = 1; - }, function (err) { - counter++; - }); - A.pre('save', true, function (next, done) { - next(new Error()); - }); - var a = new A(); - a.save(); - counter.should.equal(1); - assert.equal(typeof a.value, 'undefined'); - }, - 'should be able to run multiple pres': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.pre('save', function (next) { - this.v1 = 1; - next(); - }).pre('save', function (next) { - this.v2 = 2; - next(); - }); - var a = new A(); - a.save(); - a.v1.should.equal(1); - a.v2.should.equal(2); - }, - 'should run multiple pres until a pre fails and not call the hook': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }, function (err) {}); - A.pre('save', function (next) { - this.v1 = 1; - next(); - }).pre('save', function (next) { - next(new Error()); - }).pre('save', function (next) { - this.v3 = 3; - next(); - }); - var a = new A(); - a.save(); - a.v1.should.equal(1); - assert.equal(typeof a.v3, 'undefined'); - assert.equal(typeof a.value, 'undefined'); - }, - 'should be able to run multiple posts': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.post('save', function (next) { - this.value = 2; - next(); - }).post('save', function (next) { - this.value = 3.14; - next(); - }).post('save', function (next) { - this.v3 = 3; - next(); - }); - var a = new A(); - a.save(); - assert.equal(a.value, 3.14); - assert.equal(a.v3, 3); - }, - 'should run only posts up until an error': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }, function (err) {}); - A.post('save', function (next) { - this.value = 2; - next(); - }).post('save', function (next) { - this.value = 3; - next(new Error()); - }).post('save', function (next) { - this.value = 4; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(3); - }, - "should fall back first to the hook method's last argument as the error handler if it is a function of arity 1 or 2": function () { - var A = function () {}; - _.extend(A, hooks); - var counter = 0; - A.hook('save', function (callback) { - this.value = 1; - }); - A.pre('save', true, function (next, done) { - next(new Error()); - }); - var a = new A(); - a.save( function (err) { - if (err instanceof Error) counter++; - }); - counter.should.equal(1); - should.deepEqual(undefined, a.value); - }, - 'should fall back second to the default error handler if specified': function () { - var A = function () {}; - _.extend(A, hooks); - var counter = 0; - A.hook('save', function (callback) { - this.value = 1; - }, function (err) { - if (err instanceof Error) counter++; - }); - A.pre('save', true, function (next, done) { - next(new Error()); - }); - var a = new A(); - a.save(); - counter.should.equal(1); - should.deepEqual(undefined, a.value); - }, - 'fallback default error handler should scope to the object': function () { - var A = function () { - this.counter = 0; - }; - _.extend(A, hooks); - var counter = 0; - A.hook('save', function (callback) { - this.value = 1; - }, function (err) { - if (err instanceof Error) this.counter++; - }); - A.pre('save', true, function (next, done) { - next(new Error()); - }); - var a = new A(); - a.save(); - a.counter.should.equal(1); - should.deepEqual(undefined, a.value); - }, - 'should fall back last to throwing the error': function () { - var A = function () {}; - _.extend(A, hooks); - var counter = 0; - A.hook('save', function (err) { - if (err instanceof Error) return counter++; - this.value = 1; - }); - A.pre('save', true, function (next, done) { - next(new Error()); - }); - var a = new A(); - var didCatch = false; - try { - a.save(); - } catch (e) { - didCatch = true; - e.should.be.an.instanceof(Error); - counter.should.equal(0); - assert.equal(typeof a.value, 'undefined'); - } - didCatch.should.be.true; - }, - "should proceed without mutating arguments if `next(null|undefined)` is called in a serial pre, and the last argument of the target method is a callback with node-like signature function (err, obj) {...} or function (err) {...}": function () { - var A = function () {}; - _.extend(A, hooks); - var counter = 0; - A.prototype.save = function (callback) { - this.value = 1; - callback(); - }; - A.pre('save', function (next) { - next(null); - }); - A.pre('save', function (next) { - next(undefined); - }); - var a = new A(); - a.save( function (err) { - if (err instanceof Error) counter++; - else counter--; - }); - counter.should.equal(-1); - a.value.should.eql(1); - }, - "should proceed with mutating arguments if `next(null|undefined)` is callback in a serial pre, and the last argument of the target method is not a function": function () { - var A = function () {}; - _.extend(A, hooks); - A.prototype.set = function (v) { - this.value = v; - }; - A.pre('set', function (next) { - next(undefined); - }); - A.pre('set', function (next) { - next(null); - }); - var a = new A(); - a.set(1); - should.strictEqual(null, a.value); - }, - 'should not run any posts if a pre fails': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 2; - }, function (err) {}); - A.pre('save', function (next) { - this.value = 1; - next(new Error()); - }).post('save', function (next) { - this.value = 3; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(1); - }, - - "can pass the hook's arguments verbatim to pres": function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val) { - this[path] = val; - }); - A.pre('set', function (next, path, val) { - path.should.equal('hello'); - val.should.equal('world'); - next(); - }); - var a = new A(); - a.set('hello', 'world'); - a.hello.should.equal('world'); - }, -// "can pass the hook's arguments as an array to pres": function () { -// // Great for dynamic arity - e.g., slice(...) -// var A = function () {}; -// _.extend(A, hooks); -// A.hook('set', function (path, val) { -// this[path] = val; -// }); -// A.pre('set', function (next, hello, world) { -// hello.should.equal('hello'); -// world.should.equal('world'); -// next(); -// }); -// var a = new A(); -// a.set('hello', 'world'); -// assert.equal(a.hello, 'world'); -// }, - "can pass the hook's arguments verbatim to posts": function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val) { - this[path] = val; - }); - A.post('set', function (next, path, val) { - path.should.equal('hello'); - val.should.equal('world'); - next(); - }); - var a = new A(); - a.set('hello', 'world'); - assert.equal(a.hello, 'world'); - }, -// "can pass the hook's arguments as an array to posts": function () { -// var A = function () {}; -// _.extend(A, hooks); -// A.hook('set', function (path, val) { -// this[path] = val; -// }); -// A.post('set', function (next, halt, args) { -// assert.equal(args[0], 'hello'); -// assert.equal(args[1], 'world'); -// next(); -// }); -// var a = new A(); -// a.set('hello', 'world'); -// assert.equal(a.hello, 'world'); -// }, - "pres should be able to modify and pass on a modified version of the hook's arguments": function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val) { - this[path] = val; - assert.equal(arguments[2], 'optional'); - }); - A.pre('set', function (next, path, val) { - next('foo', 'bar'); - }); - A.pre('set', function (next, path, val) { - assert.equal(path, 'foo'); - assert.equal(val, 'bar'); - next('rock', 'says', 'optional'); - }); - A.pre('set', function (next, path, val, opt) { - assert.equal(path, 'rock'); - assert.equal(val, 'says'); - assert.equal(opt, 'optional'); - next(); - }); - var a = new A(); - a.set('hello', 'world'); - assert.equal(typeof a.hello, 'undefined'); - a.rock.should.equal('says'); - }, - 'posts should see the modified version of arguments if the pres modified them': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val) { - this[path] = val; - }); - A.pre('set', function (next, path, val) { - next('foo', 'bar'); - }); - A.post('set', function (next, path, val) { - path.should.equal('foo'); - val.should.equal('bar'); - }); - var a = new A(); - a.set('hello', 'world'); - assert.equal(typeof a.hello, 'undefined'); - a.foo.should.equal('bar'); - }, - 'should pad missing arguments (relative to expected arguments of the hook) with null': function () { - // Otherwise, with hookFn = function (a, b, next, ), - // if we use hookFn(a), then because the pre functions are of the form - // preFn = function (a, b, next, ), then it actually gets executed with - // preFn(a, next, ), so when we call next() from within preFn, we are actually - // calling () - - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val, opts) { - this[path] = val; - }); - A.pre('set', function (next, path, val, opts) { - next('foo', 'bar'); - assert.equal(typeof opts, 'undefined'); - }); - var a = new A(); - a.set('hello', 'world'); - }, - - 'should not invoke the target method until all asynchronous middleware have invoked dones': function () { - var counter = 0; - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val) { - counter++; - this[path] = val; - counter.should.equal(7); - }); - A.pre('set', function (next, path, val) { - counter++; - next(); - }); - A.pre('set', true, function (next, done, path, val) { - counter++; - setTimeout(function () { - counter++; - done(); - }, 1000); - next(); - }); - A.pre('set', function (next, path, val) { - counter++; - next(); - }); - A.pre('set', true, function (next, done, path, val) { - counter++; - setTimeout(function () { - counter++; - done(); - }, 500); - next(); - }); - var a = new A(); - a.set('hello', 'world'); - }, - - 'invoking a method twice should run its async middleware twice': function () { - var counter = 0; - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val) { - this[path] = val; - if (path === 'hello') counter.should.equal(1); - if (path === 'foo') counter.should.equal(2); - }); - A.pre('set', true, function (next, done, path, val) { - setTimeout(function () { - counter++; - done(); - }, 1000); - next(); - }); - var a = new A(); - a.set('hello', 'world'); - a.set('foo', 'bar'); - }, - - 'calling the same done multiple times should have the effect of only calling it once': function () { - var A = function () { - this.acked = false; - }; - _.extend(A, hooks); - A.hook('ack', function () { - console.log("UH OH, YOU SHOULD NOT BE SEEING THIS"); - this.acked = true; - }); - A.pre('ack', true, function (next, done) { - next(); - done(); - done(); - }); - A.pre('ack', true, function (next, done) { - next(); - // Notice that done() is not invoked here - }); - var a = new A(); - a.ack(); - setTimeout( function () { - a.acked.should.be.false; - }, 1000); - }, - - 'calling the same next multiple times should have the effect of only calling it once': function (beforeExit) { - var A = function () { - this.acked = false; - }; - _.extend(A, hooks); - A.hook('ack', function () { - console.log("UH OH, YOU SHOULD NOT BE SEEING THIS"); - this.acked = true; - }); - A.pre('ack', function (next) { - // force a throw to re-exec next() - try { - next(new Error('bam')); - } catch (err) { - next(); - } - }); - A.pre('ack', function (next) { - next(); - }); - var a = new A(); - a.ack(); - beforeExit( function () { - a.acked.should.be.false; - }); - }, - - 'asynchronous middleware should be able to pass an error via `done`, stopping the middleware chain': function () { - var counter = 0; - var A = function () {}; - _.extend(A, hooks); - A.hook('set', function (path, val, fn) { - counter++; - this[path] = val; - fn(null); - }); - A.pre('set', true, function (next, done, path, val, fn) { - setTimeout(function () { - counter++; - done(new Error); - }, 1000); - next(); - }); - var a = new A(); - a.set('hello', 'world', function (err) { - err.should.be.an.instanceof(Error); - should.strictEqual(undefined, a['hello']); - counter.should.eql(1); - }); - }, - - 'should be able to remove a particular pre': function () { - var A = function () {} - , preTwo; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.pre('save', function (next) { - this.preValueOne = 2; - next(); - }); - A.pre('save', preTwo = function (next) { - this.preValueTwo = 4; - next(); - }); - A.removePre('save', preTwo); - var a = new A(); - a.save(); - a.value.should.equal(1); - a.preValueOne.should.equal(2); - should.strictEqual(undefined, a.preValueTwo); - }, - - 'should be able to remove all pres associated with a hook': function () { - var A = function () {}; - _.extend(A, hooks); - A.hook('save', function () { - this.value = 1; - }); - A.pre('save', function (next) { - this.preValueOne = 2; - next(); - }); - A.pre('save', function (next) { - this.preValueTwo = 4; - next(); - }); - A.removePre('save'); - var a = new A(); - a.save(); - a.value.should.equal(1); - should.strictEqual(undefined, a.preValueOne); - should.strictEqual(undefined, a.preValueTwo); - }, - - '#pre should lazily make a method hookable': function () { - var A = function () {}; - _.extend(A, hooks); - A.prototype.save = function () { - this.value = 1; - }; - A.pre('save', function (next) { - this.preValue = 2; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(1); - a.preValue.should.equal(2); - }, - - '#pre lazily making a method hookable should be able to provide a default errorHandler as the last argument': function () { - var A = function () {}; - var preValue = ""; - _.extend(A, hooks); - A.prototype.save = function () { - this.value = 1; - }; - A.pre('save', function (next) { - next(new Error); - }, function (err) { - preValue = 'ERROR'; - }); - var a = new A(); - a.save(); - should.strictEqual(undefined, a.value); - preValue.should.equal('ERROR'); - }, - - '#post should lazily make a method hookable': function () { - var A = function () {}; - _.extend(A, hooks); - A.prototype.save = function () { - this.value = 1; - }; - A.post('save', function (next) { - this.value = 2; - next(); - }); - var a = new A(); - a.save(); - a.value.should.equal(2); - }, - - "a lazy hooks setup should handle errors via a method's last argument, if it's a callback": function () { - var A = function () {}; - _.extend(A, hooks); - A.prototype.save = function (fn) {}; - A.pre('save', function (next) { - next(new Error("hi there")); - }); - var a = new A(); - a.save( function (err) { - err.should.be.an.instanceof(Error); - }); - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml deleted file mode 100644 index 0140117..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.10 # development version of 0.8, may be unstable \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md deleted file mode 100644 index 2a1c52e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/CONTRIBUTING.md +++ /dev/null @@ -1,23 +0,0 @@ -## Contributing to the driver - -### Bugfixes - -- Before starting to write code, look for existing [tickets](https://github.com/mongodb/node-mongodb-native/issues) or [create one](https://github.com/mongodb/node-mongodb-native/issues/new) for your specific issue. That way you avoid working on something that might not be of interest or that has been addressed already in a different branch. -- Fork the [repo](https://github.com/mongodb/node-mongodb-native) _or_ for small documentation changes, navigate to the source on github and click the [Edit](https://github.com/blog/844-forking-with-the-edit-button) button. -- Follow the general coding style of the rest of the project: - - 2 space tabs - - no trailing whitespace - - comma last - - inline documentation for new methods, class members, etc - - 0 space between conditionals/functions, and their parenthesis and curly braces - - `if(..) {` - - `for(..) {` - - `while(..) {` - - `function(err) {` -- Write tests and make sure they pass (execute `make test` from the cmd line to run the test suite). - -### Documentation - -To contribute to the [API documentation](http://mongodb.github.com/node-mongodb-native/) just make your changes to the inline documentation of the appropriate [source code](https://github.com/mongodb/node-mongodb-native/tree/master/docs) in the master branch and submit a [pull request](https://help.github.com/articles/using-pull-requests/). You might also use the github [Edit](https://github.com/blog/844-forking-with-the-edit-button) button. - -If you'd like to preview your documentation changes, first commit your changes to your local master branch, then execute `make generate_docs`. Make sure you have the python documentation framework sphinx installed `easy_install sphinx`. The docs are generated under `docs/build'. If all looks good, submit a [pull request](https://help.github.com/articles/using-pull-requests/) to the master branch with your changes. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile deleted file mode 100644 index 59d2bfe..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -NODE = node -NPM = npm -NODEUNIT = node_modules/nodeunit/bin/nodeunit -DOX = node_modules/dox/bin/dox -name = all - -total: build_native - -test_functional: - node test/runner.js -t functional - -test_ssl: - node test/runner.js -t ssl - -test_replicaset: - node test/runner.js -t replicaset - -test_sharded: - node test/runner.js -t sharded - -test_auth: - node test/runner.js -t auth - -generate_docs: - $(NODE) dev/tools/build-docs.js - make --directory=./docs/sphinx-docs --file=Makefile html - -.PHONY: total diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md deleted file mode 100644 index 306fde7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/Readme.md +++ /dev/null @@ -1,442 +0,0 @@ -Up to date documentation -======================== - -[Documentation](http://mongodb.github.com/node-mongodb-native/) - -Install -======= - -To install the most recent release from npm, run: - - npm install mongodb - -That may give you a warning telling you that bugs['web'] should be bugs['url'], it would be safe to ignore it (this has been fixed in the development version) - -To install the latest from the repository, run:: - - npm install path/to/node-mongodb-native - -Community -========= -Check out the google group [node-mongodb-native](http://groups.google.com/group/node-mongodb-native) for questions/answers from users of the driver. - -Live Examples -============ - - -Introduction -============ - -This is a node.js driver for MongoDB. It's a port (or close to a port) of the library for ruby at http://github.com/mongodb/mongo-ruby-driver/. - -A simple example of inserting a document. - -```javascript - var client = new Db('test', new Server("127.0.0.1", 27017, {}), {w: 1}), - test = function (err, collection) { - collection.insert({a:2}, function(err, docs) { - - collection.count(function(err, count) { - test.assertEquals(1, count); - }); - - // Locate all the entries using find - collection.find().toArray(function(err, results) { - test.assertEquals(1, results.length); - test.assertTrue(results[0].a === 2); - - // Let's close the db - client.close(); - }); - }); - }; - - client.open(function(err, p_client) { - client.collection('test_insert', test); - }); -``` - -Data types -========== - -To store and retrieve the non-JSON MongoDb primitives ([ObjectID](http://www.mongodb.org/display/DOCS/Object+IDs), Long, Binary, [Timestamp](http://www.mongodb.org/display/DOCS/Timestamp+data+type), [DBRef](http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef), Code). - -In particular, every document has a unique `_id` which can be almost any type, and by default a 12-byte ObjectID is created. ObjectIDs can be represented as 24-digit hexadecimal strings, but you must convert the string back into an ObjectID before you can use it in the database. For example: - -```javascript - // Get the objectID type - var ObjectID = require('mongodb').ObjectID; - - var idString = '4e4e1638c85e808431000003'; - collection.findOne({_id: new ObjectID(idString)}, console.log) // ok - collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined -``` - -Here are the constructors the non-Javascript BSON primitive types: - -```javascript - // Fetch the library - var mongo = require('mongodb'); - // Create new instances of BSON types - new mongo.Long(numberString) - new mongo.ObjectID(hexString) - new mongo.Timestamp() // the actual unique number is generated on insert. - new mongo.DBRef(collectionName, id, dbName) - new mongo.Binary(buffer) // takes a string or Buffer - new mongo.Code(code, [context]) - new mongo.Symbol(string) - new mongo.MinKey() - new mongo.MaxKey() - new mongo.Double(number) // Force double storage -``` - -The C/C++ bson parser/serializer --------------------------------- - -If you are running a version of this library has the C/C++ parser compiled, to enable the driver to use the C/C++ bson parser pass it the option native_parser:true like below - -```javascript - // using native_parser: - var client = new Db('integration_tests_20', - new Server("127.0.0.1", 27017), - {native_parser:true}); -``` - -The C++ parser uses the js objects both for serialization and deserialization. - -GitHub information -================== - -The source code is available at http://github.com/mongodb/node-mongodb-native. -You can either clone the repository or download a tarball of the latest release. - -Once you have the source you can test the driver by running - - $ make test - -in the main directory. You will need to have a mongo instance running on localhost for the integration tests to pass. - -Examples -======== - -For examples look in the examples/ directory. You can execute the examples using node. - - $ cd examples - $ node queries.js - -GridStore -========= - -The GridStore class allows for storage of binary files in mongoDB using the mongoDB defined files and chunks collection definition. - -For more information have a look at [Gridstore](https://github.com/mongodb/node-mongodb-native/blob/master/docs/gridfs.md) - -Replicasets -=========== -For more information about how to connect to a replicaset have a look at [Replicasets](https://github.com/mongodb/node-mongodb-native/blob/master/docs/replicaset.md) - -Primary Key Factories ---------------------- - -Defining your own primary key factory allows you to generate your own series of id's -(this could f.ex be to use something like ISBN numbers). The generated the id needs to be a 12 byte long "string". - -Simple example below - -```javascript - // Custom factory (need to provide a 12 byte array); - CustomPKFactory = function() {} - CustomPKFactory.prototype = new Object(); - CustomPKFactory.createPk = function() { - return new ObjectID("aaaaaaaaaaaa"); - } - - var p_client = new Db('integration_tests_20', new Server("127.0.0.1", 27017, {}), {'pk':CustomPKFactory}); - p_client.open(function(err, p_client) { - p_client.dropDatabase(function(err, done) { - p_client.createCollection('test_custom_key', function(err, collection) { - collection.insert({'a':1}, function(err, docs) { - collection.find({'_id':new ObjectID("aaaaaaaaaaaa")}, function(err, cursor) { - cursor.toArray(function(err, items) { - test.assertEquals(1, items.length); - - // Let's close the db - p_client.close(); - }); - }); - }); - }); - }); - }); -``` - -Strict mode ------------ - -Each database has an optional strict mode. If it is set then asking for a collection -that does not exist will return an Error object in the callback. Similarly if you -attempt to create a collection that already exists. Strict is provided for convenience. - -```javascript - var error_client = new Db('integration_tests_', new Server("127.0.0.1", 27017, {auto_reconnect: false}), {strict:true}); - test.assertEquals(true, error_client.strict); - - error_client.open(function(err, error_client) { - error_client.collection('does-not-exist', function(err, collection) { - test.assertTrue(err instanceof Error); - test.assertEquals("Collection does-not-exist does not exist. Currently in strict mode.", err.message); - }); - - error_client.createCollection('test_strict_access_collection', function(err, collection) { - error_client.collection('test_strict_access_collection', function(err, collection) { - test.assertTrue(collection instanceof Collection); - // Let's close the db - error_client.close(); - }); - }); - }); -``` - -Documentation -============= - -If this document doesn't answer your questions, see the source of -[Collection](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js) -or [Cursor](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/cursor.js), -or the documentation at MongoDB for query and update formats. - -Find ----- - -The find method is actually a factory method to create -Cursor objects. A Cursor lazily uses the connection the first time -you call `nextObject`, `each`, or `toArray`. - -The basic operation on a cursor is the `nextObject` method -that fetches the next matching document from the database. The convenience -methods `each` and `toArray` call `nextObject` until the cursor is exhausted. - -Signatures: - -```javascript - var cursor = collection.find(query, [fields], options); - cursor.sort(fields).limit(n).skip(m). - - cursor.nextObject(function(err, doc) {}); - cursor.each(function(err, doc) {}); - cursor.toArray(function(err, docs) {}); - - cursor.rewind() // reset the cursor to its initial state. -``` - -Useful chainable methods of cursor. These can optionally be options of `find` instead of method calls: - -* `.limit(n).skip(m)` to control paging. -* `.sort(fields)` Order by the given fields. There are several equivalent syntaxes: - * `.sort({field1: -1, field2: 1})` descending by field1, then ascending by field2. - * `.sort([['field1', 'desc'], ['field2', 'asc']])` same as above - * `.sort([['field1', 'desc'], 'field2'])` same as above - * `.sort('field1')` ascending by field1 - -Other options of `find`: - -* `fields` the fields to fetch (to avoid transferring the entire document) -* `tailable` if true, makes the cursor [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors). -* `batchSize` The number of the subset of results to request the database -to return for every request. This should initially be greater than 1 otherwise -the database will automatically close the cursor. The batch size can be set to 1 -with `batchSize(n, function(err){})` after performing the initial query to the database. -* `hint` See [Optimization: hint](http://www.mongodb.org/display/DOCS/Optimization#Optimization-Hint). -* `explain` turns this into an explain query. You can also call -`explain()` on any cursor to fetch the explanation. -* `snapshot` prevents documents that are updated while the query is active -from being returned multiple times. See more -[details about query snapshots](http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database). -* `timeout` if false, asks MongoDb not to time out this cursor after an -inactivity period. - - -For information on how to create queries, see the -[MongoDB section on querying](http://www.mongodb.org/display/DOCS/Querying). - -```javascript - var mongodb = require('mongodb'); - var server = new mongodb.Server("127.0.0.1", 27017, {}); - new mongodb.Db('test', server, {}).open(function (error, client) { - if (error) throw error; - var collection = new mongodb.Collection(client, 'test_collection'); - collection.find({}, {limit:10}).toArray(function(err, docs) { - console.dir(docs); - }); - }); -``` - -Insert ------- - -Signature: - -```javascript - collection.insert(docs, options, [callback]); -``` - -where `docs` can be a single document or an array of documents. - -Useful options: - -* `safe:true` Should always set if you have a callback. - -See also: [MongoDB docs for insert](http://www.mongodb.org/display/DOCS/Inserting). - -```javascript - var mongodb = require('mongodb'); - var server = new mongodb.Server("127.0.0.1", 27017, {}); - new mongodb.Db('test', server, {w: 1}).open(function (error, client) { - if (error) throw error; - var collection = new mongodb.Collection(client, 'test_collection'); - collection.insert({hello: 'world'}, {safe:true}, - function(err, objects) { - if (err) console.warn(err.message); - if (err && err.message.indexOf('E11000 ') !== -1) { - // this _id was already inserted in the database - } - }); - }); -``` - -Note that there's no reason to pass a callback to the insert or update commands -unless you use the `safe:true` option. If you don't specify `safe:true`, then -your callback will be called immediately. - -Update; update and insert (upsert) ----------------------------------- - -The update operation will update the first document that matches your query -(or all documents that match if you use `multi:true`). -If `safe:true`, `upsert` is not set, and no documents match, your callback will return 0 documents updated. - -See the [MongoDB docs](http://www.mongodb.org/display/DOCS/Updating) for -the modifier (`$inc`, `$set`, `$push`, etc.) formats. - -Signature: - -```javascript - collection.update(criteria, objNew, options, [callback]); -``` - -Useful options: - -* `safe:true` Should always set if you have a callback. -* `multi:true` If set, all matching documents are updated, not just the first. -* `upsert:true` Atomically inserts the document if no documents matched. - -Example for `update`: - -```javascript - var mongodb = require('mongodb'); - var server = new mongodb.Server("127.0.0.1", 27017, {}); - new mongodb.Db('test', server, {w: 1}).open(function (error, client) { - if (error) throw error; - var collection = new mongodb.Collection(client, 'test_collection'); - collection.update({hi: 'here'}, {$set: {hi: 'there'}}, {safe:true}, - function(err) { - if (err) console.warn(err.message); - else console.log('successfully updated'); - }); - }); -``` - -Find and modify ---------------- - -`findAndModify` is like `update`, but it also gives the updated document to -your callback. But there are a few key differences between findAndModify and -update: - - 1. The signatures differ. - 2. You can only findAndModify a single item, not multiple items. - -Signature: - -```javascript - collection.findAndModify(query, sort, update, options, callback) -``` - -The sort parameter is used to specify which object to operate on, if more than -one document matches. It takes the same format as the cursor sort (see -Connection.find above). - -See the -[MongoDB docs for findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command) -for more details. - -Useful options: - -* `remove:true` set to a true to remove the object before returning -* `new:true` set to true if you want to return the modified object rather than the original. Ignored for remove. -* `upsert:true` Atomically inserts the document if no documents matched. - -Example for `findAndModify`: - -```javascript - var mongodb = require('mongodb'); - var server = new mongodb.Server("127.0.0.1", 27017, {}); - new mongodb.Db('test', server, {w: 1}).open(function (error, client) { - if (error) throw error; - var collection = new mongodb.Collection(client, 'test_collection'); - collection.findAndModify({hello: 'world'}, [['_id','asc']], {$set: {hi: 'there'}}, {}, - function(err, object) { - if (err) console.warn(err.message); - else console.dir(object); // undefined if no matching object exists. - }); - }); -``` - -Save ----- - -The `save` method is a shorthand for upsert if the document contains an -`_id`, or an insert if there is no `_id`. - -Sponsors -======== -Just as Felix Geisendörfer I'm also working on the driver for my own startup and this driver is a big project that also benefits other companies who are using MongoDB. - -If your company could benefit from a even better-engineered node.js mongodb driver I would appreciate any type of sponsorship you may be able to provide. All the sponsors will get a lifetime display in this readme, priority support and help on problems and votes on the roadmap decisions for the driver. If you are interested contact me on [christkv AT g m a i l.com](mailto:christkv@gmail.com) for details. - -And I'm very thankful for code contributions. If you are interested in working on features please contact me so we can discuss API design and testing. - -Release Notes -============= - -See HISTORY - -Credits -======= - -1. [10gen](http://github.com/mongodb/mongo-ruby-driver/) -2. [Google Closure Library](http://code.google.com/closure/library/) -3. [Jonas Raoni Soares Silva](http://jsfromhell.com/classes/binary-parser) - -Contributors -============ - -Aaron Heckmann, Christoph Pojer, Pau Ramon Revilla, Nathan White, Emmerman, Seth LaForge, Boris Filipov, Stefan Schärmeli, Tedde Lundgren, renctan, Sergey Ukustov, Ciaran Jessup, kuno, srimonti, Erik Abele, Pratik Daga, Slobodan Utvic, Kristina Chodorow, Yonathan Randolph, Brian Noguchi, Sam Epstein, James Harrison Fisher, Vladimir Dronnikov, Ben Hockey, Henrik Johansson, Simon Weare, Alex Gorbatchev, Shimon Doodkin, Kyle Mueller, Eran Hammer-Lahav, Marcin Ciszak, François de Metz, Vinay Pulim, nstielau, Adam Wiggins, entrinzikyl, Jeremy Selier, Ian Millington, Public Keating, andrewjstone, Christopher Stott, Corey Jewett, brettkiefer, Rob Holland, Senmiao Liu, heroic, gitfy - -License -======= - - Copyright 2009 - 2012 Christian Amor Kvalheim. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js deleted file mode 100644 index 4f59e9d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib/mongodb'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js deleted file mode 100644 index f9f2a57..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/install.js +++ /dev/null @@ -1,40 +0,0 @@ -var spawn = require('child_process').spawn, - exec = require('child_process').exec; - -process.stdout.write("================================================================================\n"); -process.stdout.write("= =\n"); -process.stdout.write("= To install with C++ bson parser do =\n"); -process.stdout.write("= =\n"); -process.stdout.write("================================================================================\n"); - -// Check if we want to build the native code -var build_native = process.env['npm_package_config_native'] != null ? process.env['npm_package_config_native'] : 'false'; -build_native = build_native == 'true' ? true : false; -// If we are building the native bson extension ensure we use gmake if available -if(build_native) { - // Check if we need to use gmake - exec('which gmake', function(err, stdout, stderr) { - // Set up spawn command - var make = null; - // No gmake build using make - if(err != null) { - make = spawn('make', ['total']); - } else { - make = spawn('gmake', ['total']); - } - - // Execute spawn - make.stdout.on('data', function(data) { - process.stdout.write(data); - }) - - make.stderr.on('data', function(data) { - process.stdout.write(data); - }) - - make.on('exit', function(code) { - process.stdout.write('child process exited with code ' + code + "\n"); - }) - }); -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js deleted file mode 100644 index 6e9cd30..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/admin.js +++ /dev/null @@ -1,339 +0,0 @@ -/*! - * Module dependencies. - */ -var Collection = require('./collection').Collection, - Cursor = require('./cursor').Cursor, - DbCommand = require('./commands/db_command').DbCommand, - utils = require('./utils'); - -/** - * Allows the user to access the admin functionality of MongoDB - * - * @class Represents the Admin methods of MongoDB. - * @param {Object} db Current db instance we wish to perform Admin operations on. - * @return {Function} Constructor for Admin type. - */ -function Admin(db) { - if(!(this instanceof Admin)) return new Admin(db); - this.db = db; -}; - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from buildInfo or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.buildInfo = function(callback) { - this.serverInfo(callback); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from serverInfo or null if an error occured. - * @return {null} Returns no result - * @api private - */ -Admin.prototype.serverInfo = function(callback) { - this.db.executeDbAdminCommand({buildinfo:1}, function(err, doc) { - if(err != null) return callback(err, null); - return callback(null, doc.documents[0]); - }); -} - -/** - * Retrieve this db's server status. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from serverStatus or null if an error occured. - * @return {null} - * @api public - */ -Admin.prototype.serverStatus = function(callback) { - var self = this; - - this.db.executeDbAdminCommand({serverStatus: 1}, function(err, doc) { - if(err == null && doc.documents[0].ok === 1) { - callback(null, doc.documents[0]); - } else { - if(err) return callback(err, false); - return callback(utils.toError(doc.documents[0]), false); - } - }); -}; - -/** - * Retrieve the current profiling Level for MongoDB - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from profilingLevel or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.profilingLevel = function(callback) { - var self = this; - - this.db.executeDbAdminCommand({profile:-1}, function(err, doc) { - doc = doc.documents[0]; - - if(err == null && doc.ok === 1) { - var was = doc.was; - if(was == 0) return callback(null, "off"); - if(was == 1) return callback(null, "slow_only"); - if(was == 2) return callback(null, "all"); - return callback(new Error("Error: illegal profiling level value " + was), null); - } else { - err != null ? callback(err, null) : callback(new Error("Error with profile command"), null); - } - }); -}; - -/** - * Ping the MongoDB server and retrieve results - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from ping or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.ping = function(options, callback) { - // Unpack calls - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - - this.db.executeDbAdminCommand({ping: 1}, callback); -} - -/** - * Authenticate against MongoDB - * - * @param {String} username The user name for the authentication. - * @param {String} password The password for the authentication. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from authenticate or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.authenticate = function(username, password, callback) { - this.db.authenticate(username, password, {authdb: 'admin'}, function(err, doc) { - return callback(err, doc); - }) -} - -/** - * Logout current authenticated user - * - * @param {Object} [options] Optional parameters to the command. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from logout or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.logout = function(callback) { - this.db.logout({authdb: 'admin'}, function(err, doc) { - return callback(err, doc); - }) -} - -/** - * Add a user to the MongoDB server, if the user exists it will - * overwrite the current password - * - * Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {String} username The user name for the authentication. - * @param {String} password The password for the authentication. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from addUser or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.addUser = function(username, password, options, callback) { - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - options = args.length ? args.shift() : {}; - - options.dbName = 'admin'; - // Add user - this.db.addUser(username, password, options, function(err, doc) { - return callback(err, doc); - }) -} - -/** - * Remove a user from the MongoDB server - * - * Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {String} username The user name for the authentication. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from removeUser or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.removeUser = function(username, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - options.dbName = 'admin'; - - this.db.removeUser(username, options, function(err, doc) { - return callback(err, doc); - }) -} - -/** - * Set the current profiling level of MongoDB - * - * @param {String} level The new profiling level (off, slow_only, all) - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from setProfilingLevel or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.setProfilingLevel = function(level, callback) { - var self = this; - var command = {}; - var profile = 0; - - if(level == "off") { - profile = 0; - } else if(level == "slow_only") { - profile = 1; - } else if(level == "all") { - profile = 2; - } else { - return callback(new Error("Error: illegal profiling level value " + level)); - } - - // Set up the profile number - command['profile'] = profile; - - this.db.executeDbAdminCommand(command, function(err, doc) { - doc = doc.documents[0]; - - if(err == null && doc.ok === 1) - return callback(null, level); - return err != null ? callback(err, null) : callback(new Error("Error with profile command"), null); - }); -}; - -/** - * Retrive the current profiling information for MongoDB - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from profilingInfo or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.profilingInfo = function(callback) { - try { - new Cursor(this.db, new Collection(this.db, DbCommand.SYSTEM_PROFILE_COLLECTION), {}, {}, {dbName: 'admin'}).toArray(function(err, items) { - return callback(err, items); - }); - } catch (err) { - return callback(err, null); - } -}; - -/** - * Execute a db command against the Admin database - * - * @param {Object} command A command object `{ping:1}`. - * @param {Object} [options] Optional parameters to the command. - * @param {Function} callback this will be called after executing this method. The command always return the whole result of the command as the second parameter. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.command = function(command, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - - // Execute a command - this.db.executeDbAdminCommand(command, options, function(err, doc) { - // Ensure change before event loop executes - return callback != null ? callback(err, doc) : null; - }); -} - -/** - * Validate an existing collection - * - * @param {String} collectionName The name of the collection to validate. - * @param {Object} [options] Optional parameters to the command. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from validateCollection or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.validateCollection = function(collectionName, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - - var self = this; - var command = {validate: collectionName}; - var keys = Object.keys(options); - - // Decorate command with extra options - for(var i = 0; i < keys.length; i++) { - if(options.hasOwnProperty(keys[i])) { - command[keys[i]] = options[keys[i]]; - } - } - - this.db.executeDbCommand(command, function(err, doc) { - if(err != null) return callback(err, null); - doc = doc.documents[0]; - - if(doc.ok === 0) - return callback(new Error("Error with validate command"), null); - if(doc.result != null && doc.result.constructor != String) - return callback(new Error("Error with validation data"), null); - if(doc.result != null && doc.result.match(/exception|corrupt/) != null) - return callback(new Error("Error: invalid collection " + collectionName), null); - if(doc.valid != null && !doc.valid) - return callback(new Error("Error: invalid collection " + collectionName), null); - - return callback(null, doc); - }); -}; - -/** - * List the available databases - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from listDatabases or null if an error occured. - * @return {null} Returns no result - * @api public - */ -Admin.prototype.listDatabases = function(callback) { - // Execute the listAllDatabases command - this.db.executeDbAdminCommand({listDatabases:1}, {}, function(err, doc) { - if(err != null) return callback(err, null); - return callback(null, doc.documents[0]); - }); -} - -/** - * Get ReplicaSet status - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from replSetGetStatus or null if an error occured. - * @return {null} - * @api public - */ -Admin.prototype.replSetGetStatus = function(callback) { - var self = this; - - this.db.executeDbAdminCommand({replSetGetStatus:1}, function(err, doc) { - if(err == null && doc.documents[0].ok === 1) - return callback(null, doc.documents[0]); - if(err) return callback(err, false); - return callback(utils.toError(doc.documents[0]), false); - }); -}; - -/** - * @ignore - */ -exports.Admin = Admin; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js deleted file mode 100644 index 51b09b1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js +++ /dev/null @@ -1,53 +0,0 @@ -var DbCommand = require('../commands/db_command').DbCommand - , utils = require('../utils'); - -var authenticate = function(db, username, password, authdb, options, callback) { - var numberOfConnections = 0; - var errorObject = null; - - if(options['connection'] != null) { - //if a connection was explicitly passed on options, then we have only one... - numberOfConnections = 1; - } else { - // Get the amount of connections in the pool to ensure we have authenticated all comments - numberOfConnections = db.serverConfig.allRawConnections().length; - options['onAll'] = true; - } - - // Execute all four - db._executeQueryCommand(DbCommand.createGetNonceCommand(db), options, function(err, result, connection) { - // Execute on all the connections - if(err == null) { - // Nonce used to make authentication request with md5 hash - var nonce = result.documents[0].nonce; - // Execute command - db._executeQueryCommand(DbCommand.createAuthenticationCommand(db, username, password, nonce, authdb), {connection:connection}, function(err, result) { - // Count down - numberOfConnections = numberOfConnections - 1; - // Ensure we save any error - if(err) { - errorObject = err; - } else if(result.documents[0].err != null || result.documents[0].errmsg != null){ - errorObject = utils.toError(result.documents[0]); - } - - // Work around the case where the number of connections are 0 - if(numberOfConnections <= 0 && typeof callback == 'function') { - var internalCallback = callback; - callback = null; - - if(errorObject == null && result.documents[0].ok == 1) { - // We authenticated correctly save the credentials - db.serverConfig.auth.add('MONGODB-CR', db.databaseName, username, password, authdb); - // Return callback - internalCallback(errorObject, true); - } else { - internalCallback(errorObject, false); - } - } - }); - } - }); -} - -exports.authenticate = authenticate; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js deleted file mode 100644 index f41cd5d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_gssapi.js +++ /dev/null @@ -1,148 +0,0 @@ -var DbCommand = require('../commands/db_command').DbCommand - , utils = require('../utils') - , format = require('util').format; - -// Kerberos class -var Kerberos = null; -var MongoAuthProcess = null; -// Try to grab the Kerberos class -try { - Kerberos = require('kerberos').Kerberos - // Authentication process for Mongo - MongoAuthProcess = require('kerberos').processes.MongoAuthProcess -} catch(err) {} - -var authenticate = function(db, username, password, authdb, options, callback) { - var numberOfConnections = 0; - var errorObject = null; - // We don't have the Kerberos library - if(Kerberos == null) return callback(new Error("Kerberos library is not installed")); - - if(options['connection'] != null) { - //if a connection was explicitly passed on options, then we have only one... - numberOfConnections = 1; - } else { - // Get the amount of connections in the pool to ensure we have authenticated all comments - numberOfConnections = db.serverConfig.allRawConnections().length; - options['onAll'] = true; - } - - // Grab all the connections - var connections = options['connection'] != null ? [options['connection']] : db.serverConfig.allRawConnections(); - var error = null; - // Authenticate all connections - for(var i = 0; i < numberOfConnections; i++) { - - // Start Auth process for a connection - GSSAPIInitialize(db, username, password, authdb, connections[i], function(err, result) { - // Adjust number of connections left to connect - numberOfConnections = numberOfConnections - 1; - // If we have an error save it - if(err) error = err; - - // We are done - if(numberOfConnections == 0) { - if(err) return callback(error, false); - // We authenticated correctly save the credentials - db.serverConfig.auth.add('GSSAPI', db.databaseName, username, password, authdb); - // Return valid callback - return callback(null, true); - } - }); - } -} - -// -// Initialize step -var GSSAPIInitialize = function(db, username, password, authdb, connection, callback) { - // Create authenticator - var mongo_auth_process = new MongoAuthProcess(connection.socketOptions.host, connection.socketOptions.port); - - // Perform initialization - mongo_auth_process.init(username, password, function(err, context) { - if(err) return callback(err, false); - - // Perform the first step - mongo_auth_process.transition('', function(err, payload) { - if(err) return callback(err, false); - - // Call the next db step - MongoDBGSSAPIFirstStep(mongo_auth_process, payload, db, username, password, authdb, connection, callback); - }); - }); -} - -// -// Perform first step against mongodb -var MongoDBGSSAPIFirstStep = function(mongo_auth_process, payload, db, username, password, authdb, connection, callback) { - // Build the sasl start command - var command = { - saslStart: 1 - , mechanism: 'GSSAPI' - , payload: payload - , autoAuthorize: 1 - }; - - // Execute first sasl step - db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { - if(err) return callback(err, false); - // Get the payload - doc = doc.documents[0]; - var db_payload = doc.payload; - - mongo_auth_process.transition(doc.payload, function(err, payload) { - if(err) return callback(err, false); - - // MongoDB API Second Step - MongoDBGSSAPISecondStep(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback); - }); - }); -} - -// -// Perform first step against mongodb -var MongoDBGSSAPISecondStep = function(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback) { - // Build Authentication command to send to MongoDB - var command = { - saslContinue: 1 - , conversationId: doc.conversationId - , payload: payload - }; - - // Execute the command - db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { - if(err) return callback(err, false); - - // Get the result document - doc = doc.documents[0]; - - // Call next transition for kerberos - mongo_auth_process.transition(doc.payload, function(err, payload) { - if(err) return callback(err, false); - - // Call the last and third step - MongoDBGSSAPIThirdStep(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback); - }); - }); -} - -var MongoDBGSSAPIThirdStep = function(mongo_auth_process, payload, doc, db, username, password, authdb, connection, callback) { - // Build final command - var command = { - saslContinue: 1 - , conversationId: doc.conversationId - , payload: payload - }; - - // Let's finish the auth process against mongodb - db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { - if(err) return callback(err, false); - - mongo_auth_process.transition(null, function(err, payload) { - if(err) return callback(err, false); - callback(null, true); - }); - }); -} - -exports.authenticate = authenticate; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js deleted file mode 100644 index 1990efd..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/auth/mongodb_sspi.js +++ /dev/null @@ -1,134 +0,0 @@ -var DbCommand = require('../commands/db_command').DbCommand - , utils = require('../utils') - , format = require('util').format; - -// Kerberos class -var Kerberos = null; -var MongoAuthProcess = null; -// Try to grab the Kerberos class -try { - Kerberos = require('kerberos').Kerberos - // Authentication process for Mongo - MongoAuthProcess = require('kerberos').processes.MongoAuthProcess -} catch(err) {} - -var authenticate = function(db, username, password, authdb, options, callback) { - var numberOfConnections = 0; - var errorObject = null; - // We don't have the Kerberos library - if(Kerberos == null) return callback(new Error("Kerberos library is not installed")); - - if(options['connection'] != null) { - //if a connection was explicitly passed on options, then we have only one... - numberOfConnections = 1; - } else { - // Get the amount of connections in the pool to ensure we have authenticated all comments - numberOfConnections = db.serverConfig.allRawConnections().length; - options['onAll'] = true; - } - - var connection = db.serverConfig.allRawConnections()[0]; - - // Grab all the connections - var connections = db.serverConfig.allRawConnections(); - var error = null; - - // Authenticate all connections - for(var i = 0; i < numberOfConnections; i++) { - // Start Auth process for a connection - SSIPAuthenticate(db, username, password, authdb, connections[i], function(err, result) { - // Adjust number of connections left to connect - numberOfConnections = numberOfConnections - 1; - // If we have an error save it - if(err) error = err; - - // We are done - if(numberOfConnections == 0) { - if(err) return callback(err, false); - // We authenticated correctly save the credentials - db.serverConfig.auth.add('GSSAPI', db.databaseName, username, password, authdb); - // Return valid callback - return callback(null, true); - } - }); - } -} - -var SSIPAuthenticate = function(db, username, password, authdb, connection, callback) { - // -------------------------------------------------------------- - // Async Version - // -------------------------------------------------------------- - var command = { - saslStart: 1 - , mechanism: 'GSSAPI' - , payload: '' - , autoAuthorize: 1 - }; - - // Create authenticator - var mongo_auth_process = new MongoAuthProcess(connection.socketOptions.host, connection.socketOptions.port); - - // Execute first sasl step - db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { - if(err) return callback(err); - doc = doc.documents[0]; - - mongo_auth_process.init(username, password, function(err) { - if(err) return callback(err); - - mongo_auth_process.transition(doc.payload, function(err, payload) { - if(err) return callback(err); - - // Perform the next step against mongod - var command = { - saslContinue: 1 - , conversationId: doc.conversationId - , payload: payload - }; - - // Execute the command - db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { - if(err) return callback(err); - doc = doc.documents[0]; - - mongo_auth_process.transition(doc.payload, function(err, payload) { - if(err) return callback(err); - - // Perform the next step against mongod - var command = { - saslContinue: 1 - , conversationId: doc.conversationId - , payload: payload - }; - - // Execute the command - db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { - if(err) return callback(err); - doc = doc.documents[0]; - - mongo_auth_process.transition(doc.payload, function(err, payload) { - // Perform the next step against mongod - var command = { - saslContinue: 1 - , conversationId: doc.conversationId - , payload: payload - }; - - // Execute the command - db._executeQueryCommand(DbCommand.createDbCommand(db, command, {}, '$external'), {connection:connection}, function(err, doc) { - if(err) return callback(err); - doc = doc.documents[0]; - - if(doc.done) return callback(null, true); - callback(new Error("Authentication failed"), false); - }); - }); - }); - }); - }); - }); - }); - }); -} - -exports.authenticate = authenticate; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js deleted file mode 100644 index 7b3938b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js +++ /dev/null @@ -1,1764 +0,0 @@ -/** - * Module dependencies. - * @ignore - */ -var InsertCommand = require('./commands/insert_command').InsertCommand - , QueryCommand = require('./commands/query_command').QueryCommand - , DeleteCommand = require('./commands/delete_command').DeleteCommand - , UpdateCommand = require('./commands/update_command').UpdateCommand - , DbCommand = require('./commands/db_command').DbCommand - , ObjectID = require('bson').ObjectID - , Code = require('bson').Code - , Cursor = require('./cursor').Cursor - , utils = require('./utils'); - -/** - * Precompiled regexes - * @ignore -**/ -const eErrorMessages = /No matching object found/; - -/** - * toString helper. - * @ignore - */ -var toString = Object.prototype.toString; - -/** - * Create a new Collection instance (INTERNAL TYPE) - * - * Options - * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). - * - **slaveOk** {Boolean, default:false}, Allow reads from secondaries. - * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. - * - **raw** {Boolean, default:false}, perform all operations using raw bson objects. - * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. - * - * @class Represents a Collection - * @param {Object} db db instance. - * @param {String} collectionName collection name. - * @param {Object} [pkFactory] alternative primary key factory. - * @param {Object} [options] additional options for the collection. - * @return {Object} a collection instance. - */ -function Collection (db, collectionName, pkFactory, options) { - if(!(this instanceof Collection)) return new Collection(db, collectionName, pkFactory, options); - - checkCollectionName(collectionName); - - this.db = db; - this.collectionName = collectionName; - this.internalHint = null; - this.opts = options != null && ('object' === typeof options) ? options : {}; - this.slaveOk = options == null || options.slaveOk == null ? db.slaveOk : options.slaveOk; - this.serializeFunctions = options == null || options.serializeFunctions == null ? db.serializeFunctions : options.serializeFunctions; - this.raw = options == null || options.raw == null ? db.raw : options.raw; - - this.readPreference = options == null || options.readPreference == null ? db.serverConfig.options.readPreference : options.readPreference; - this.readPreference = this.readPreference == null ? 'primary' : this.readPreference; - - this.pkFactory = pkFactory == null - ? ObjectID - : pkFactory; - - var self = this; -} - -/** - * Inserts a single document or a an array of documents into MongoDB. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **continueOnError/keepGoing** {Boolean, default:false}, keep inserting documents even if one document has an error, *mongodb 1.9.1 >*. - * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Array|Object} docs - * @param {Object} [options] optional options for insert command - * @param {Function} [callback] optional callback for the function, must be provided when using a writeconcern - * @return {null} - * @api public - */ -Collection.prototype.insert = function insert (docs, options, callback) { - if ('function' === typeof options) callback = options, options = {}; - if(options == null) options = {}; - if(!('function' === typeof callback)) callback = null; - var self = this; - insertAll(self, Array.isArray(docs) ? docs : [docs], options, callback); - return this; -}; - -/** - * @ignore - */ -var checkCollectionName = function checkCollectionName (collectionName) { - if ('string' !== typeof collectionName) { - throw Error("collection name must be a String"); - } - - if (!collectionName || collectionName.indexOf('..') != -1) { - throw Error("collection names cannot be empty"); - } - - if (collectionName.indexOf('$') != -1 && - collectionName.match(/((^\$cmd)|(oplog\.\$main))/) == null) { - throw Error("collection names must not contain '$'"); - } - - if (collectionName.match(/^\.|\.$/) != null) { - throw Error("collection names must not start or end with '.'"); - } -}; - -/** - * Removes documents specified by `selector` from the db. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **single** {Boolean, default:false}, removes the first document found. - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Object} [selector] optional select, no selector is equivalent to removing all documents. - * @param {Object} [options] additional options during remove. - * @param {Function} [callback] must be provided if you performing a remove with a writeconcern - * @return {null} - * @api public - */ -Collection.prototype.remove = function remove(selector, options, callback) { - if ('function' === typeof selector) { - callback = selector; - selector = options = {}; - } else if ('function' === typeof options) { - callback = options; - options = {}; - } - - // Ensure options - if(options == null) options = {}; - if(!('function' === typeof callback)) callback = null; - // Ensure we have at least an empty selector - selector = selector == null ? {} : selector; - // Set up flags for the command, if we have a single document remove - var flags = 0 | (options.single ? 1 : 0); - - // DbName - var dbName = options['dbName']; - // If no dbname defined use the db one - if(dbName == null) { - dbName = this.db.databaseName; - } - - // Create a delete command - var deleteCommand = new DeleteCommand( - this.db - , dbName + "." + this.collectionName - , selector - , flags); - - var self = this; - var errorOptions = _getWriteConcern(self, options, callback); - // Execute the command, do not add a callback as it's async - if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { - // Insert options - var commandOptions = {read:false}; - // If we have safe set set async to false - if(errorOptions == null) commandOptions['async'] = true; - // Set safe option - commandOptions['safe'] = true; - // If we have an error option - if(typeof errorOptions == 'object') { - var keys = Object.keys(errorOptions); - for(var i = 0; i < keys.length; i++) { - commandOptions[keys[i]] = errorOptions[keys[i]]; - } - } - - // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection) - this.db._executeRemoveCommand(deleteCommand, commandOptions, function (err, error) { - error = error && error.documents; - if(!callback) return; - - if(err) { - callback(err); - } else if(error[0].err || error[0].errmsg) { - callback(utils.toError(error[0])); - } else { - callback(null, error[0].n); - } - }); - } else if(_hasWriteConcern(errorOptions) && callback == null) { - throw new Error("Cannot use a writeConcern without a provided callback"); - } else { - var result = this.db._executeRemoveCommand(deleteCommand); - // If no callback just return - if (!callback) return; - // If error return error - if (result instanceof Error) { - return callback(result); - } - // Otherwise just return - return callback(); - } -}; - -/** - * Renames the collection. - * - * Options - * - **dropTarget** {Boolean, default:false}, drop the target name collection if it previously exists. - * - * @param {String} newName the new name of the collection. - * @param {Object} [options] returns option results. - * @param {Function} callback the callback accepting the result - * @return {null} - * @api public - */ -Collection.prototype.rename = function rename (newName, options, callback) { - var self = this; - - if(typeof options == 'function') { - callback = options; - options = {} - } - - // Ensure the new name is valid - checkCollectionName(newName); - // Execute the command, return the new renamed collection if successful - self.db._executeQueryCommand(DbCommand.createRenameCollectionCommand(self.db, self.collectionName, newName, options), function(err, result) { - if(err == null && result.documents[0].ok == 1) { - if(callback != null) { - // Set current object to point to the new name - self.collectionName = newName; - // Return the current collection - callback(null, self); - } - } else if(result.documents[0].errmsg != null) { - if(null != callback) { - if (null == err) { - err = utils.toError(result.documents[0]); - } - callback(err, null); - } - } - }); -}; - -/** - * @ignore - */ -var insertAll = function insertAll (self, docs, options, callback) { - if('function' === typeof options) callback = options, options = {}; - if(options == null) options = {}; - if(!('function' === typeof callback)) callback = null; - - // Insert options (flags for insert) - var insertFlags = {}; - // If we have a mongodb version >= 1.9.1 support keepGoing attribute - if(options['keepGoing'] != null) { - insertFlags['keepGoing'] = options['keepGoing']; - } - - // If we have a mongodb version >= 1.9.1 support keepGoing attribute - if(options['continueOnError'] != null) { - insertFlags['continueOnError'] = options['continueOnError']; - } - - // DbName - var dbName = options['dbName']; - // If no dbname defined use the db one - if(dbName == null) { - dbName = self.db.databaseName; - } - - // Either use override on the function, or go back to default on either the collection - // level or db - if(options['serializeFunctions'] != null) { - insertFlags['serializeFunctions'] = options['serializeFunctions']; - } else { - insertFlags['serializeFunctions'] = self.serializeFunctions; - } - - // Pass in options - var insertCommand = new InsertCommand( - self.db - , dbName + "." + self.collectionName, true, insertFlags); - - // Add the documents and decorate them with id's if they have none - for(var index = 0, len = docs.length; index < len; ++index) { - var doc = docs[index]; - - // Add id to each document if it's not already defined - if (!(Buffer.isBuffer(doc)) && doc['_id'] == null && self.db.forceServerObjectId != true) { - doc['_id'] = self.pkFactory.createPk(); - } - - insertCommand.add(doc); - } - - // Collect errorOptions - var errorOptions = _getWriteConcern(self, options, callback); - // Default command options - var commandOptions = {}; - // If safe is defined check for error message - if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { - // Insert options - commandOptions['read'] = false; - // If we have safe set set async to false - if(errorOptions == null) commandOptions['async'] = true; - - // Set safe option - commandOptions['safe'] = errorOptions; - // If we have an error option - if(typeof errorOptions == 'object') { - var keys = Object.keys(errorOptions); - for(var i = 0; i < keys.length; i++) { - commandOptions[keys[i]] = errorOptions[keys[i]]; - } - } - - // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection) - self.db._executeInsertCommand(insertCommand, commandOptions, function (err, error) { - error = error && error.documents; - if(!callback) return; - - if (err) { - callback(err); - } else if(error[0].err || error[0].errmsg) { - callback(utils.toError(error[0])); - } else { - callback(null, docs); - } - }); - } else if(_hasWriteConcern(errorOptions) && callback == null) { - throw new Error("Cannot use a writeConcern without a provided callback"); - } else { - // Execute the call without a write concern - var result = self.db._executeInsertCommand(insertCommand, commandOptions); - // If no callback just return - if(!callback) return; - // If error return error - if(result instanceof Error) { - return callback(result); - } - // Otherwise just return - return callback(null, docs); - } -}; - -/** - * Save a document. Simple full document replacement function. Not recommended for efficiency, use atomic - * operators and update instead for more efficient operations. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Object} [doc] the document to save - * @param {Object} [options] additional options during remove. - * @param {Function} [callback] must be provided if you performing a safe save - * @return {null} - * @api public - */ -Collection.prototype.save = function save(doc, options, callback) { - if('function' === typeof options) callback = options, options = null; - if(options == null) options = {}; - if(!('function' === typeof callback)) callback = null; - // Throw an error if attempting to perform a bulk operation - if(Array.isArray(doc)) throw new Error("doc parameter must be a single document"); - // Extract the id, if we have one we need to do a update command - var id = doc['_id']; - var commandOptions = _getWriteConcern(this, options, callback); - - if(id) { - commandOptions.upsert = true; - this.update({ _id: id }, doc, commandOptions, callback); - } else { - this.insert(doc, commandOptions, callback && function (err, docs) { - if (err) return callback(err, null); - - if (Array.isArray(docs)) { - callback(err, docs[0]); - } else { - callback(err, docs); - } - }); - } -}; - -/** - * Updates documents. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **upsert** {Boolean, default:false}, perform an upsert operation. - * - **multi** {Boolean, default:false}, update all documents matching the selector. - * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Object} selector the query to select the document/documents to be updated - * @param {Object} document the fields/vals to be updated, or in the case of an upsert operation, inserted. - * @param {Object} [options] additional options during update. - * @param {Function} [callback] must be provided if you performing an update with a writeconcern - * @return {null} - * @api public - */ -Collection.prototype.update = function update(selector, document, options, callback) { - if('function' === typeof options) callback = options, options = null; - if(options == null) options = {}; - if(!('function' === typeof callback)) callback = null; - - // DbName - var dbName = options['dbName']; - // If no dbname defined use the db one - if(dbName == null) { - dbName = this.db.databaseName; - } - - // If we are not providing a selector or document throw - if(selector == null || typeof selector != 'object') return callback(new Error("selector must be a valid JavaScript object")); - if(document == null || typeof document != 'object') return callback(new Error("document must be a valid JavaScript object")); - - // Either use override on the function, or go back to default on either the collection - // level or db - if(options['serializeFunctions'] != null) { - options['serializeFunctions'] = options['serializeFunctions']; - } else { - options['serializeFunctions'] = this.serializeFunctions; - } - - var updateCommand = new UpdateCommand( - this.db - , dbName + "." + this.collectionName - , selector - , document - , options); - - var self = this; - // Unpack the error options if any - var errorOptions = _getWriteConcern(this, options, callback); - // If safe is defined check for error message - if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { - // Insert options - var commandOptions = {read:false}; - // If we have safe set set async to false - if(errorOptions == null) commandOptions['async'] = true; - // Set safe option - commandOptions['safe'] = errorOptions; - // If we have an error option - if(typeof errorOptions == 'object') { - var keys = Object.keys(errorOptions); - for(var i = 0; i < keys.length; i++) { - commandOptions[keys[i]] = errorOptions[keys[i]]; - } - } - - // Execute command with safe options (rolls up both command and safe command into one and executes them on the same connection) - this.db._executeUpdateCommand(updateCommand, commandOptions, function (err, error) { - error = error && error.documents; - if(!callback) return; - - if(err) { - callback(err); - } else if(error[0].err || error[0].errmsg) { - callback(utils.toError(error[0])); - } else { - // Perform the callback - callback(null, error[0].n, error[0]); - } - }); - } else if(_hasWriteConcern(errorOptions) && callback == null) { - throw new Error("Cannot use a writeConcern without a provided callback"); - } else { - // Execute update - var result = this.db._executeUpdateCommand(updateCommand); - // If no callback just return - if (!callback) return; - // If error return error - if (result instanceof Error) { - return callback(result); - } - // Otherwise just return - return callback(); - } -}; - -/** - * The distinct command returns returns a list of distinct values for the given key across a collection. - * - * Options - * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {String} key key to run distinct against. - * @param {Object} [query] option query to narrow the returned objects. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from distinct or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.distinct = function distinct(key, query, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - query = args.length ? args.shift() || {} : {}; - options = args.length ? args.shift() || {} : {}; - - var mapCommandHash = { - 'distinct': this.collectionName - , 'query': query - , 'key': key - }; - - // Set read preference if we set one - var readPreference = options['readPreference'] ? options['readPreference'] : false; - // Create the command - var cmd = DbCommand.createDbSlaveOkCommand(this.db, mapCommandHash); - - this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) { - if(err) - return callback(err); - if(result.documents[0].ok != 1) - return callback(new Error(result.documents[0].errmsg)); - callback(null, result.documents[0].values); - }); -}; - -/** - * Count number of matching documents in the db to a query. - * - * Options - * - **skip** {Number}, The number of documents to skip for the count. - * - **limit** {Number}, The limit of documents to count. - * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Object} [query] query to filter by before performing count. - * @param {Object} [options] additional options during count. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the count method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.count = function count (query, options, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - query = args.length ? args.shift() || {} : {}; - options = args.length ? args.shift() || {} : {}; - var skip = options.skip; - var limit = options.limit; - - // Final query - var final_query = { - 'count': this.collectionName - , 'query': query - , 'fields': null - }; - - // Add limit and skip if defined - if(typeof skip == 'number') final_query.skip = skip; - if(typeof limit == 'number') final_query.limit = limit; - - // Set read preference if we set one - var readPreference = options['readPreference'] ? options['readPreference'] : false; - - // Set up query options - var queryOptions = QueryCommand.OPTS_NO_CURSOR_TIMEOUT; - if (this.slaveOk || this.db.slaveOk) { - queryOptions |= QueryCommand.OPTS_SLAVE; - } - - var queryCommand = new QueryCommand( - this.db - , this.db.databaseName + ".$cmd" - , queryOptions - , 0 - , -1 - , final_query - , null - ); - - var self = this; - this.db._executeQueryCommand(queryCommand, {read:readPreference}, function (err, result) { - result = result && result.documents; - if(!callback) return; - - if(err) return callback(err); - if (result[0].ok != 1 || result[0].errmsg) { - return callback(utils.toError(result[0])); - } - callback(null, result[0].n); - }); -}; - - -/** - * Drop the collection - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the drop method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.drop = function drop(callback) { - this.db.dropCollection(this.collectionName, callback); -}; - -/** - * Find and update a document. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **remove** {Boolean, default:false}, set to true to remove the object before returning. - * - **upsert** {Boolean, default:false}, perform an upsert operation. - * - **new** {Boolean, default:false}, set to true if you want to return the modified object rather than the original. Ignored for remove. - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Object} query query object to locate the object to modify - * @param {Array} sort - if multiple docs match, choose the first one in the specified sort order as the object to manipulate - * @param {Object} doc - the fields/vals to be updated - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findAndModify method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.findAndModify = function findAndModify (query, sort, doc, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - sort = args.length ? args.shift() || [] : []; - doc = args.length ? args.shift() : null; - options = args.length ? args.shift() || {} : {}; - var self = this; - - var queryObject = { - 'findandmodify': this.collectionName - , 'query': query - , 'sort': utils.formattedOrderClause(sort) - }; - - queryObject.new = options.new ? 1 : 0; - queryObject.remove = options.remove ? 1 : 0; - queryObject.upsert = options.upsert ? 1 : 0; - - if (options.fields) { - queryObject.fields = options.fields; - } - - if (doc && !options.remove) { - queryObject.update = doc; - } - - // Either use override on the function, or go back to default on either the collection - // level or db - if(options['serializeFunctions'] != null) { - options['serializeFunctions'] = options['serializeFunctions']; - } else { - options['serializeFunctions'] = this.serializeFunctions; - } - - // Unpack the error options if any - var errorOptions = _getWriteConcern(this, options, callback); - - // If we have j, w or something else do the getLast Error path - if(errorOptions != null - && typeof errorOptions == 'object' - && (errorOptions.w != 0 && errorOptions.safe != false)) { - // Commands to send - var commands = []; - // Add the find and modify command - commands.push(DbCommand.createDbCommand(this.db, queryObject, options)); - // If we have safe defined we need to return both call results - var chainedCommands = errorOptions != null ? true : false; - // Add error command if we have one - if(chainedCommands) { - commands.push(DbCommand.createGetLastErrorCommand(errorOptions, this.db)); - } - - // Fire commands and - this.db._executeQueryCommand(commands, {read:false}, function(err, result) { - if(err != null) return callback(err); - result = result && result.documents; - - if(result[0].err != null) { - return callback(utils.toError(result[0]), null); - } - - // Workaround due to 1.8.X returning an error on no matching object - // while 2.0.X does not not, making 2.0.X behaviour standard - if(result[0].errmsg != null && !result[0].errmsg.match(eErrorMessages)) { - return callback(utils.toError(result[0]), null, result[0]); - } - - return callback(null, result[0].value, result[0]); - }); - } else { - // Only run command and rely on getLastError command - var command = DbCommand.createDbCommand(this.db, queryObject, options) - // Execute command - this.db._executeQueryCommand(command, {read:false}, function(err, result) { - if(err != null) return callback(err); - - result = result && result.documents; - - if(result[0].errmsg != null && !result[0].errmsg.match(eErrorMessages)) { - return callback(utils.toError(result[0]), null, result[0]); - } - - // If we have an error return it - if(result[0].lastErrorObject && result[0].lastErrorObject.err != null) { - return callback(utils.toError(result[0].lastErrorObject), null); - } - - return callback(null, result[0].value, result[0]); - }); - } -} - -/** - * Find and remove a document - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Object} query query object to locate the object to modify - * @param {Array} sort - if multiple docs match, choose the first one in the specified sort order as the object to manipulate - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findAndRemove method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.findAndRemove = function(query, sort, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - sort = args.length ? args.shift() || [] : []; - options = args.length ? args.shift() || {} : {}; - // Add the remove option - options['remove'] = true; - // Execute the callback - this.findAndModify(query, sort, null, options, callback); -} - -var testForFields = { - limit: 1, sort: 1, fields:1, skip: 1, hint: 1, explain: 1, snapshot: 1, timeout: 1, tailable: 1, tailableRetryInterval: 1 - , numberOfRetries: 1, awaitdata: 1, exhaust: 1, batchSize: 1, returnKey: 1, maxScan: 1, min: 1, max: 1, showDiskLoc: 1 - , comment: 1, raw: 1, readPreference: 1, partial: 1, read: 1, dbName: 1 -}; - -/** - * Creates a cursor for a query that can be used to iterate over results from MongoDB - * - * Various argument possibilities - * - callback? - * - selector, callback?, - * - selector, fields, callback? - * - selector, options, callback? - * - selector, fields, options, callback? - * - selector, fields, skip, limit, callback? - * - selector, fields, skip, limit, timeout, callback? - * - * Options - * - **limit** {Number, default:0}, sets the limit of documents returned in the query. - * - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc. - * - **fields** {Object}, the fields to return in the query. Object of fields to include or exclude (not both), {'a':1} - * - **skip** {Number, default:0}, set to skip N documents ahead in your query (useful for pagination). - * - **hint** {Object}, tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1} - * - **explain** {Boolean, default:false}, explain the query instead of returning the data. - * - **snapshot** {Boolean, default:false}, snapshot query. - * - **timeout** {Boolean, default:false}, specify if the cursor can timeout. - * - **tailable** {Boolean, default:false}, specify if the cursor is tailable. - * - **tailableRetryInterval** {Number, default:100}, specify the miliseconds between getMores on tailable cursor. - * - **numberOfRetries** {Number, default:5}, specify the number of times to retry the tailable cursor. - * - **awaitdata** {Boolean, default:false} allow the cursor to wait for data, only applicable for tailable cursor. - * - **exhaust** {Boolean, default:false} have the server send all the documents at once as getMore packets, not recommended. - * - **batchSize** {Number, default:0}, set the batchSize for the getMoreCommand when iterating over the query results. - * - **returnKey** {Boolean, default:false}, only return the index key. - * - **maxScan** {Number}, Limit the number of items to scan. - * - **min** {Number}, Set index bounds. - * - **max** {Number}, Set index bounds. - * - **showDiskLoc** {Boolean, default:false}, Show disk location of results. - * - **comment** {String}, You can put a $comment field on a query to make looking in the profiler logs simpler. - * - **raw** {Boolean, default:false}, Return all BSON documents as Raw Buffer documents. - * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - **numberOfRetries** {Number, default:5}, if using awaidata specifies the number of times to retry on timeout. - * - **partial** {Boolean, default:false}, specify if the cursor should return partial results when querying against a sharded system - * - * @param {Object|ObjectID} query query object to locate the object to modify - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the find method or null if an error occured. - * @return {Cursor} returns a cursor to the query - * @api public - */ -Collection.prototype.find = function find () { - var options - , args = Array.prototype.slice.call(arguments, 0) - , has_callback = typeof args[args.length - 1] === 'function' - , has_weird_callback = typeof args[0] === 'function' - , callback = has_callback ? args.pop() : (has_weird_callback ? args.shift() : null) - , len = args.length - , selector = len >= 1 ? args[0] : {} - , fields = len >= 2 ? args[1] : undefined; - - if(len === 1 && has_weird_callback) { - // backwards compat for callback?, options case - selector = {}; - options = args[0]; - } - - if(len === 2 && !Array.isArray(fields)) { - var fieldKeys = Object.getOwnPropertyNames(fields); - var is_option = false; - - for(var i = 0; i < fieldKeys.length; i++) { - if(testForFields[fieldKeys[i]] != null) { - is_option = true; - break; - } - } - - if(is_option) { - options = fields; - fields = undefined; - } else { - options = {}; - } - } else if(len === 2 && Array.isArray(fields) && !Array.isArray(fields[0])) { - var newFields = {}; - // Rewrite the array - for(var i = 0; i < fields.length; i++) { - newFields[fields[i]] = 1; - } - // Set the fields - fields = newFields; - } - - if(3 === len) { - options = args[2]; - } - - // Ensure selector is not null - selector = selector == null ? {} : selector; - // Validate correctness off the selector - var object = selector; - if(Buffer.isBuffer(object)) { - var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) { - var error = new Error("query selector raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - // Validate correctness of the field selector - var object = fields; - if(Buffer.isBuffer(object)) { - var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) { - var error = new Error("query fields raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - // Check special case where we are using an objectId - if(selector instanceof ObjectID || (selector != null && selector._bsontype == 'ObjectID')) { - selector = {_id:selector}; - } - - // If it's a serialized fields field we need to just let it through - // user be warned it better be good - if(options && options.fields && !(Buffer.isBuffer(options.fields))) { - fields = {}; - - if(Array.isArray(options.fields)) { - if(!options.fields.length) { - fields['_id'] = 1; - } else { - for (var i = 0, l = options.fields.length; i < l; i++) { - fields[options.fields[i]] = 1; - } - } - } else { - fields = options.fields; - } - } - - if (!options) options = {}; - options.skip = len > 3 ? args[2] : options.skip ? options.skip : 0; - options.limit = len > 3 ? args[3] : options.limit ? options.limit : 0; - options.raw = options.raw != null && typeof options.raw === 'boolean' ? options.raw : this.raw; - options.hint = options.hint != null ? normalizeHintField(options.hint) : this.internalHint; - options.timeout = len == 5 ? args[4] : typeof options.timeout === 'undefined' ? undefined : options.timeout; - // If we have overridden slaveOk otherwise use the default db setting - options.slaveOk = options.slaveOk != null ? options.slaveOk : this.db.slaveOk; - - // Set option - var o = options; - // Support read/readPreference - if(o["read"] != null) o["readPreference"] = o["read"]; - // Set the read preference - o.read = o["readPreference"] ? o.readPreference : this.readPreference; - // Adjust slave ok if read preference is secondary or secondary only - if(o.read == "secondary" || o.read == "secondaryOnly") options.slaveOk = true; - - // callback for backward compatibility - if(callback) { - // TODO refactor Cursor args - callback(null, new Cursor(this.db, this, selector, fields, o)); - } else { - return new Cursor(this.db, this, selector, fields, o); - } -}; - -/** - * Normalizes a `hint` argument. - * - * @param {String|Object|Array} hint - * @return {Object} - * @api private - */ -var normalizeHintField = function normalizeHintField(hint) { - var finalHint = null; - - if(typeof hint == 'string') { - finalHint = hint; - } else if(Array.isArray(hint)) { - finalHint = {}; - - hint.forEach(function(param) { - finalHint[param] = 1; - }); - } else if(hint != null && typeof hint == 'object') { - finalHint = {}; - for (var name in hint) { - finalHint[name] = hint[name]; - } - } - - return finalHint; -}; - -/** - * Finds a single document based on the query - * - * Various argument possibilities - * - callback? - * - selector, callback?, - * - selector, fields, callback? - * - selector, options, callback? - * - selector, fields, options, callback? - * - selector, fields, skip, limit, callback? - * - selector, fields, skip, limit, timeout, callback? - * - * Options - * - **limit** {Number, default:0}, sets the limit of documents returned in the query. - * - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc. - * - **fields** {Object}, the fields to return in the query. Object of fields to include or exclude (not both), {'a':1} - * - **skip** {Number, default:0}, set to skip N documents ahead in your query (useful for pagination). - * - **hint** {Object}, tell the query to use specific indexes in the query. Object of indexes to use, {'_id':1} - * - **explain** {Boolean, default:false}, explain the query instead of returning the data. - * - **snapshot** {Boolean, default:false}, snapshot query. - * - **timeout** {Boolean, default:false}, specify if the cursor can timeout. - * - **tailable** {Boolean, default:false}, specify if the cursor is tailable. - * - **batchSize** {Number, default:0}, set the batchSize for the getMoreCommand when iterating over the query results. - * - **returnKey** {Boolean, default:false}, only return the index key. - * - **maxScan** {Number}, Limit the number of items to scan. - * - **min** {Number}, Set index bounds. - * - **max** {Number}, Set index bounds. - * - **showDiskLoc** {Boolean, default:false}, Show disk location of results. - * - **comment** {String}, You can put a $comment field on a query to make looking in the profiler logs simpler. - * - **raw** {Boolean, default:false}, Return all BSON documents as Raw Buffer documents. - * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - **partial** {Boolean, default:false}, specify if the cursor should return partial results when querying against a sharded system - * - * @param {Object|ObjectID} query query object to locate the object to modify - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the findOne method or null if an error occured. - * @return {Cursor} returns a cursor to the query - * @api public - */ -Collection.prototype.findOne = function findOne () { - var self = this; - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var cursor = this.find.apply(this, args).limit(-1).batchSize(1); - // Return the item - cursor.nextObject(function(err, item) { - if(err != null) return callback(utils.toError(err), null); - callback(null, item); - }); -}; - -/** - * Creates an index on the collection. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **unique** {Boolean, default:false}, creates an unique index. - * - **sparse** {Boolean, default:false}, creates a sparse index. - * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. - * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value - * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. - * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. - * - **v** {Number}, specify the format version of the indexes. - * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) - * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Object} fieldOrSpec fieldOrSpec that defines the index. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the createIndex method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.createIndex = function createIndex (fieldOrSpec, options, callback) { - // Clean up call - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - options = typeof callback === 'function' ? options : callback; - options = options == null ? {} : options; - - // Collect errorOptions - var errorOptions = _getWriteConcern(this, options, callback); - // Execute create index - this.db.createIndex(this.collectionName, fieldOrSpec, options, callback); -}; - -/** - * Ensures that an index exists, if it does not it creates it - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **unique** {Boolean, default:false}, creates an unique index. - * - **sparse** {Boolean, default:false}, creates a sparse index. - * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. - * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value - * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. - * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. - * - **v** {Number}, specify the format version of the indexes. - * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) - * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {Object} fieldOrSpec fieldOrSpec that defines the index. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the ensureIndex method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.ensureIndex = function ensureIndex (fieldOrSpec, options, callback) { - // Clean up call - if (typeof callback === 'undefined' && typeof options === 'function') { - callback = options; - options = {}; - } - - if (options == null) { - options = {}; - } - - // Execute create index - this.db.ensureIndex(this.collectionName, fieldOrSpec, options, callback); -}; - -/** - * Retrieves this collections index info. - * - * Options - * - **full** {Boolean, default:false}, returns the full raw index information. - * - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexInformation method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.indexInformation = function indexInformation (options, callback) { - // Unpack calls - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - // Call the index information - this.db.indexInformation(this.collectionName, options, callback); -}; - -/** - * Drops an index from this collection. - * - * @param {String} name - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropIndex method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.dropIndex = function dropIndex (name, callback) { - this.db.dropIndex(this.collectionName, name, callback); -}; - -/** - * Drops all indexes from this collection. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropAllIndexes method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.dropAllIndexes = function dropIndexes (callback) { - this.db.dropIndex(this.collectionName, '*', function (err, result) { - if(err != null) { - callback(err, false); - } else if(result.documents[0].errmsg == null) { - callback(null, true); - } else { - callback(new Error(result.documents[0].errmsg), false); - } - }); -}; - -/** - * Drops all indexes from this collection. - * - * @deprecated - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the dropIndexes method or null if an error occured. - * @return {null} - * @api private - */ -Collection.prototype.dropIndexes = Collection.prototype.dropAllIndexes; - -/** - * Reindex all indexes on the collection - * Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the reIndex method or null if an error occured. - * @return {null} - * @api public -**/ -Collection.prototype.reIndex = function(callback) { - this.db.reIndex(this.collectionName, callback); -} - -/** - * Run Map Reduce across a collection. Be aware that the inline option for out will return an array of results not a collection. - * - * Options - * - **out** {Object}, sets the output target for the map reduce job. *{inline:1} | {replace:'collectionName'} | {merge:'collectionName'} | {reduce:'collectionName'}* - * - **query** {Object}, query filter object. - * - **sort** {Object}, sorts the input objects using this key. Useful for optimization, like sorting by the emit key for fewer reduces. - * - **limit** {Number}, number of objects to return from collection. - * - **keeptemp** {Boolean, default:false}, keep temporary data. - * - **finalize** {Function | String}, finalize function. - * - **scope** {Object}, can pass in variables that can be access from map/reduce/finalize. - * - **jsMode** {Boolean, default:false}, it is possible to make the execution stay in JS. Provided in MongoDB > 2.0.X. - * - **verbose** {Boolean, default:false}, provide statistics on job execution time. - * - **readPreference** {String, only for inline results}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Function|String} map the mapping function. - * @param {Function|String} reduce the reduce function. - * @param {Objects} [options] options for the map reduce job. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the mapReduce method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.mapReduce = function mapReduce (map, reduce, options, callback) { - if ('function' === typeof options) callback = options, options = {}; - // Out must allways be defined (make sure we don't break weirdly on pre 1.8+ servers) - if(null == options.out) { - throw new Error("the out option parameter must be defined, see mongodb docs for possible values"); - } - - if ('function' === typeof map) { - map = map.toString(); - } - - if ('function' === typeof reduce) { - reduce = reduce.toString(); - } - - if ('function' === typeof options.finalize) { - options.finalize = options.finalize.toString(); - } - - var mapCommandHash = { - mapreduce: this.collectionName - , map: map - , reduce: reduce - }; - - // Add any other options passed in - for (var name in options) { - if ('scope' == name) { - mapCommandHash[name] = processScope(options[name]); - } else { - mapCommandHash[name] = options[name]; - } - } - - // Set read preference if we set one - var readPreference = options['readPreference'] ? options['readPreference'] : false; - // If we have a read preference and inline is not set as output fail hard - if(readPreference != false && options['out'] != 'inline') { - throw new Error("a readPreference can only be provided when performing an inline mapReduce"); - } - - // self - var self = this; - var cmd = DbCommand.createDbCommand(this.db, mapCommandHash); - - this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) { - if (err) { - return callback(err); - } - - // - if (1 != result.documents[0].ok || result.documents[0].err || result.documents[0].errmsg) { - return callback(utils.toError(result.documents[0])); - } - - // Create statistics value - var stats = {}; - if(result.documents[0].timeMillis) stats['processtime'] = result.documents[0].timeMillis; - if(result.documents[0].counts) stats['counts'] = result.documents[0].counts; - if(result.documents[0].timing) stats['timing'] = result.documents[0].timing; - - // invoked with inline? - if(result.documents[0].results) { - return callback(null, result.documents[0].results, stats); - } - - // The returned collection - var collection = null; - - // If we have an object it's a different db - if(result.documents[0].result != null && typeof result.documents[0].result == 'object') { - var doc = result.documents[0].result; - collection = self.db.db(doc.db).collection(doc.collection); - } else { - // Create a collection object that wraps the result collection - collection = self.db.collection(result.documents[0].result) - } - - // If we wish for no verbosity - if(options['verbose'] == null || !options['verbose']) { - return callback(err, collection); - } - - // Return stats as third set of values - callback(err, collection, stats); - }); -}; - -/** - * Functions that are passed as scope args must - * be converted to Code instances. - * @ignore - */ -function processScope (scope) { - if (!utils.isObject(scope)) { - return scope; - } - - var keys = Object.keys(scope); - var i = keys.length; - var key; - - while (i--) { - key = keys[i]; - if ('function' == typeof scope[key]) { - scope[key] = new Code(String(scope[key])); - } - } - - return scope; -} - -/** - * Group function helper - * @ignore - */ -var groupFunction = function () { - var c = db[ns].find(condition); - var map = new Map(); - var reduce_function = reduce; - - while (c.hasNext()) { - var obj = c.next(); - var key = {}; - - for (var i = 0, len = keys.length; i < len; ++i) { - var k = keys[i]; - key[k] = obj[k]; - } - - var aggObj = map.get(key); - - if (aggObj == null) { - var newObj = Object.extend({}, key); - aggObj = Object.extend(newObj, initial); - map.put(key, aggObj); - } - - reduce_function(obj, aggObj); - } - - return { "result": map.values() }; -}.toString(); - -/** - * Run a group command across a collection - * - * Options - * - **readPreference** {String}, the preferred read preference (Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Object|Array|Function|Code} keys an object, array or function expressing the keys to group by. - * @param {Object} condition an optional condition that must be true for a row to be considered. - * @param {Object} initial initial value of the aggregation counter object. - * @param {Function|Code} reduce the reduce function aggregates (reduces) the objects iterated - * @param {Function|Code} finalize an optional function to be run on each item in the result set just before the item is returned. - * @param {Boolean} command specify if you wish to run using the internal group command or using eval, default is true. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the group method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.group = function group(keys, condition, initial, reduce, finalize, command, options, callback) { - var args = Array.prototype.slice.call(arguments, 3); - callback = args.pop(); - // Fetch all commands - reduce = args.length ? args.shift() : null; - finalize = args.length ? args.shift() : null; - command = args.length ? args.shift() : null; - options = args.length ? args.shift() || {} : {}; - - // Make sure we are backward compatible - if(!(typeof finalize == 'function')) { - command = finalize; - finalize = null; - } - - if (!Array.isArray(keys) && keys instanceof Object && typeof(keys) !== 'function' && !(keys instanceof Code)) { - keys = Object.keys(keys); - } - - if(typeof reduce === 'function') { - reduce = reduce.toString(); - } - - if(typeof finalize === 'function') { - finalize = finalize.toString(); - } - - // Set up the command as default - command = command == null ? true : command; - - // Execute using the command - if(command) { - var reduceFunction = reduce instanceof Code - ? reduce - : new Code(reduce); - - var selector = { - group: { - 'ns': this.collectionName - , '$reduce': reduceFunction - , 'cond': condition - , 'initial': initial - , 'out': "inline" - } - }; - - // if finalize is defined - if(finalize != null) selector.group['finalize'] = finalize; - // Set up group selector - if ('function' === typeof keys || keys instanceof Code) { - selector.group.$keyf = keys instanceof Code - ? keys - : new Code(keys); - } else { - var hash = {}; - keys.forEach(function (key) { - hash[key] = 1; - }); - selector.group.key = hash; - } - - var cmd = DbCommand.createDbSlaveOkCommand(this.db, selector); - // Set read preference if we set one - var readPreference = options['readPreference'] ? options['readPreference'] : this.readPreference; - - this.db._executeQueryCommand(cmd, {read:readPreference}, function (err, result) { - if(err != null) return callback(err); - - var document = result.documents[0]; - if (null == document.retval) { - return callback(new Error("group command failed: " + document.errmsg)); - } - - callback(null, document.retval); - }); - - } else { - // Create execution scope - var scope = reduce != null && reduce instanceof Code - ? reduce.scope - : {}; - - scope.ns = this.collectionName; - scope.keys = keys; - scope.condition = condition; - scope.initial = initial; - - // Pass in the function text to execute within mongodb. - var groupfn = groupFunction.replace(/ reduce;/, reduce.toString() + ';'); - - this.db.eval(new Code(groupfn, scope), function (err, results) { - if (err) return callback(err, null); - callback(null, results.result || results); - }); - } -}; - -/** - * Returns the options of the collection. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the options method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.options = function options(callback) { - this.db.collectionsInfo(this.collectionName, function (err, cursor) { - if (err) return callback(err); - cursor.nextObject(function (err, document) { - callback(err, document && document.options || null); - }); - }); -}; - -/** - * Returns if the collection is a capped collection - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the isCapped method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.isCapped = function isCapped(callback) { - this.options(function(err, document) { - if(err != null) { - callback(err); - } else { - callback(null, document && document.capped); - } - }); -}; - -/** - * Checks if one or more indexes exist on the collection - * - * @param {String|Array} indexNames check if one or more indexes exist on the collection. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexExists method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.indexExists = function indexExists(indexes, callback) { - this.indexInformation(function(err, indexInformation) { - // If we have an error return - if(err != null) return callback(err, null); - // Let's check for the index names - if(Array.isArray(indexes)) { - for(var i = 0; i < indexes.length; i++) { - if(indexInformation[indexes[i]] == null) { - return callback(null, false); - } - } - - // All keys found return true - return callback(null, true); - } else { - return callback(null, indexInformation[indexes] != null); - } - }); -} - -/** - * Execute the geoNear command to search for items in the collection - * - * Options - * - **num** {Number}, max number of results to return. - * - **maxDistance** {Number}, include results up to maxDistance from the point. - * - **distanceMultiplier** {Number}, include a value to multiply the distances with allowing for range conversions. - * - **query** {Object}, filter the results by a query. - * - **spherical** {Boolean, default:false}, perform query using a spherical model. - * - **uniqueDocs** {Boolean, default:false}, the closest location in a document to the center of the search region will always be returned MongoDB > 2.X. - * - **includeLocs** {Boolean, default:false}, include the location data fields in the top level of the results MongoDB > 2.X. - * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Number} x point to search on the x axis, ensure the indexes are ordered in the same order. - * @param {Number} y point to search on the y axis, ensure the indexes are ordered in the same order. - * @param {Objects} [options] options for the map reduce job. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the geoNear method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.geoNear = function geoNear(x, y, options, callback) { - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - // Fetch all commands - options = args.length ? args.shift() || {} : {}; - - // Build command object - var commandObject = { - geoNear:this.collectionName, - near: [x, y] - } - - // Decorate object if any with known properties - if(options['num'] != null) commandObject['num'] = options['num']; - if(options['maxDistance'] != null) commandObject['maxDistance'] = options['maxDistance']; - if(options['distanceMultiplier'] != null) commandObject['distanceMultiplier'] = options['distanceMultiplier']; - if(options['query'] != null) commandObject['query'] = options['query']; - if(options['spherical'] != null) commandObject['spherical'] = options['spherical']; - if(options['uniqueDocs'] != null) commandObject['uniqueDocs'] = options['uniqueDocs']; - if(options['includeLocs'] != null) commandObject['includeLocs'] = options['includeLocs']; - - // Execute the command - this.db.command(commandObject, options, callback); -} - -/** - * Execute a geo search using a geo haystack index on a collection. - * - * Options - * - **maxDistance** {Number}, include results up to maxDistance from the point. - * - **search** {Object}, filter the results by a query. - * - **limit** {Number}, max number of results to return. - * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Number} x point to search on the x axis, ensure the indexes are ordered in the same order. - * @param {Number} y point to search on the y axis, ensure the indexes are ordered in the same order. - * @param {Objects} [options] options for the map reduce job. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the geoHaystackSearch method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.geoHaystackSearch = function geoHaystackSearch(x, y, options, callback) { - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - // Fetch all commands - options = args.length ? args.shift() || {} : {}; - - // Build command object - var commandObject = { - geoSearch:this.collectionName, - near: [x, y] - } - - // Decorate object if any with known properties - if(options['maxDistance'] != null) commandObject['maxDistance'] = options['maxDistance']; - if(options['query'] != null) commandObject['search'] = options['query']; - if(options['search'] != null) commandObject['search'] = options['search']; - if(options['limit'] != null) commandObject['limit'] = options['limit']; - - // Execute the command - this.db.command(commandObject, options, callback); -} - -/** - * Retrieve all the indexes on the collection. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the indexes method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.indexes = function indexes(callback) { - // Return all the index information - this.db.indexInformation(this.collectionName, {full:true}, callback); -} - -/** - * Execute an aggregation framework pipeline against the collection, needs MongoDB >= 2.1 - * - * Options - * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Array} array containing all the aggregation framework commands for the execution. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the aggregate method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.aggregate = function(pipeline, options, callback) { - // * - **explain** {Boolean}, return the query plan for the aggregation pipeline instead of the results. 2.3, 2.4 - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - var self = this; - - // If we have any of the supported options in the options object - var opts = args[args.length - 1]; - options = opts.readPreference || opts.explain ? args.pop() : {} - - // Convert operations to an array - if(!Array.isArray(args[0])) { - pipeline = []; - // Push all the operations to the pipeline - for(var i = 0; i < args.length; i++) pipeline.push(args[i]); - } - - // Build the command - var command = { aggregate : this.collectionName, pipeline : pipeline}; - // Add all options - var keys = Object.keys(options); - // Add all options - for(var i = 0; i < keys.length; i++) { - command[keys[i]] = options[keys[i]]; - } - - // Execute the command - this.db.command(command, options, function(err, result) { - if(err) { - callback(err); - } else if(result['err'] || result['errmsg']) { - callback(utils.toError(result)); - } else if(typeof result == 'object' && result['serverPipeline']) { - callback(null, result); - } else { - callback(null, result.result); - } - }); -} - -/** - * Get all the collection statistics. - * - * Options - * - **scale** {Number}, divide the returned sizes by scale value. - * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Objects} [options] options for the stats command. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the stats method or null if an error occured. - * @return {null} - * @api public - */ -Collection.prototype.stats = function stats(options, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - // Fetch all commands - options = args.length ? args.shift() || {} : {}; - - // Build command object - var commandObject = { - collStats:this.collectionName, - } - - // Check if we have the scale value - if(options['scale'] != null) commandObject['scale'] = options['scale']; - - // Execute the command - this.db.command(commandObject, options, callback); -} - -/** - * @ignore - */ -Object.defineProperty(Collection.prototype, "hint", { - enumerable: true - , get: function () { - return this.internalHint; - } - , set: function (v) { - this.internalHint = normalizeHintField(v); - } -}); - -/** - * @ignore - */ -var _hasWriteConcern = function(errorOptions) { - return errorOptions == true - || errorOptions.w > 0 - || errorOptions.w == 'majority' - || errorOptions.j == true - || errorOptions.journal == true - || errorOptions.fsync == true -} - -/** - * @ignore - */ -var _setWriteConcernHash = function(options) { - var finalOptions = {}; - if(options.w != null) finalOptions.w = options.w; - if(options.journal == true) finalOptions.j = options.journal; - if(options.j == true) finalOptions.j = options.j; - if(options.fsync == true) finalOptions.fsync = options.fsync; - if(options.wtimeout != null) finalOptions.wtimeout = options.wtimeout; - return finalOptions; -} - -/** - * @ignore - */ -var _getWriteConcern = function(self, options, callback) { - // Final options - var finalOptions = {w:1}; - // Local options verification - if(options.w != null || typeof options.j == 'boolean' || typeof options.journal == 'boolean' || typeof options.fsync == 'boolean') { - finalOptions = _setWriteConcernHash(options); - } else if(typeof options.safe == "boolean") { - finalOptions = {w: (options.safe ? 1 : 0)}; - } else if(options.safe != null && typeof options.safe == 'object') { - finalOptions = _setWriteConcernHash(options.safe); - } else if(self.opts.w != null || typeof self.opts.j == 'boolean' || typeof self.opts.journal == 'boolean' || typeof self.opts.fsync == 'boolean') { - finalOptions = _setWriteConcernHash(self.opts); - } else if(typeof self.opts.safe == "boolean") { - finalOptions = {w: (self.opts.safe ? 1 : 0)}; - } else if(self.db.safe.w != null || typeof self.db.safe.j == 'boolean' || typeof self.db.safe.journal == 'boolean' || typeof self.db.safe.fsync == 'boolean') { - finalOptions = _setWriteConcernHash(self.db.safe); - } else if(self.db.options.w != null || typeof self.db.options.j == 'boolean' || typeof self.db.options.journal == 'boolean' || typeof self.db.options.fsync == 'boolean') { - finalOptions = _setWriteConcernHash(self.db.options); - } else if(typeof self.db.safe == "boolean") { - finalOptions = {w: (self.db.safe ? 1 : 0)}; - } - - // Ensure we don't have an invalid combination of write concerns - if(finalOptions.w < 1 - && (finalOptions.journal == true || finalOptions.j == true || finalOptions.fsync == true)) throw new Error("No acknowlegement using w < 1 cannot be combined with journal:true or fsync:true"); - - // Return the options - return finalOptions; -} - -/** - * Expose. - */ -exports.Collection = Collection; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js deleted file mode 100644 index 9558582..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/base_command.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - Base object used for common functionality -**/ -var BaseCommand = exports.BaseCommand = function BaseCommand() { -}; - -var id = 1; -BaseCommand.prototype.getRequestId = function getRequestId() { - if (!this.requestId) this.requestId = id++; - return this.requestId; -}; - -BaseCommand.prototype.setMongosReadPreference = function setMongosReadPreference(readPreference, tags) {} - -BaseCommand.prototype.updateRequestId = function() { - this.requestId = id++; - return this.requestId; -}; - -// OpCodes -BaseCommand.OP_REPLY = 1; -BaseCommand.OP_MSG = 1000; -BaseCommand.OP_UPDATE = 2001; -BaseCommand.OP_INSERT = 2002; -BaseCommand.OP_GET_BY_OID = 2003; -BaseCommand.OP_QUERY = 2004; -BaseCommand.OP_GET_MORE = 2005; -BaseCommand.OP_DELETE = 2006; -BaseCommand.OP_KILL_CURSORS = 2007; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js deleted file mode 100644 index f8751b5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/db_command.js +++ /dev/null @@ -1,241 +0,0 @@ -var QueryCommand = require('./query_command').QueryCommand, - InsertCommand = require('./insert_command').InsertCommand, - inherits = require('util').inherits, - utils = require('../utils'), - crypto = require('crypto'); - -/** - Db Command -**/ -var DbCommand = exports.DbCommand = function(dbInstance, collectionName, queryOptions, numberToSkip, numberToReturn, query, returnFieldSelector, options) { - QueryCommand.call(this); - this.collectionName = collectionName; - this.queryOptions = queryOptions; - this.numberToSkip = numberToSkip; - this.numberToReturn = numberToReturn; - this.query = query; - this.returnFieldSelector = returnFieldSelector; - this.db = dbInstance; - - // Make sure we don't get a null exception - options = options == null ? {} : options; - // Let us defined on a command basis if we want functions to be serialized or not - if(options['serializeFunctions'] != null && options['serializeFunctions']) { - this.serializeFunctions = true; - } -}; - -inherits(DbCommand, QueryCommand); - -// Constants -DbCommand.SYSTEM_NAMESPACE_COLLECTION = "system.namespaces"; -DbCommand.SYSTEM_INDEX_COLLECTION = "system.indexes"; -DbCommand.SYSTEM_PROFILE_COLLECTION = "system.profile"; -DbCommand.SYSTEM_USER_COLLECTION = "system.users"; -DbCommand.SYSTEM_COMMAND_COLLECTION = "$cmd"; -DbCommand.SYSTEM_JS_COLLECTION = "system.js"; - -// New commands -DbCommand.NcreateIsMasterCommand = function(db, databaseName) { - return new DbCommand(db, databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'ismaster':1}, null); -}; - -// Provide constructors for different db commands -DbCommand.createIsMasterCommand = function(db) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'ismaster':1}, null); -}; - -DbCommand.createCollectionInfoCommand = function(db, selector) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_NAMESPACE_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, 0, selector, null); -}; - -DbCommand.createGetNonceCommand = function(db, options) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'getnonce':1}, null); -}; - -DbCommand.createAuthenticationCommand = function(db, username, password, nonce, authdb) { - // Use node md5 generator - var md5 = crypto.createHash('md5'); - // Generate keys used for authentication - md5.update(username + ":mongo:" + password); - var hash_password = md5.digest('hex'); - // Final key - md5 = crypto.createHash('md5'); - md5.update(nonce + username + hash_password); - var key = md5.digest('hex'); - // Creat selector - var selector = {'authenticate':1, 'user':username, 'nonce':nonce, 'key':key}; - // Create db command - return new DbCommand(db, authdb + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NONE, 0, -1, selector, null); -}; - -DbCommand.createLogoutCommand = function(db) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'logout':1}, null); -}; - -DbCommand.createCreateCollectionCommand = function(db, collectionName, options) { - var selector = {'create':collectionName}; - // Modify the options to ensure correct behaviour - for(var name in options) { - if(options[name] != null && options[name].constructor != Function) selector[name] = options[name]; - } - // Execute the command - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, selector, null); -}; - -DbCommand.createDropCollectionCommand = function(db, collectionName) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'drop':collectionName}, null); -}; - -DbCommand.createRenameCollectionCommand = function(db, fromCollectionName, toCollectionName, options) { - var renameCollection = db.databaseName + "." + fromCollectionName; - var toCollection = db.databaseName + "." + toCollectionName; - var dropTarget = options && options.dropTarget ? options.dropTarget : false; - return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'renameCollection':renameCollection, 'to':toCollection, 'dropTarget':dropTarget}, null); -}; - -DbCommand.createGetLastErrorCommand = function(options, db) { - - if (typeof db === 'undefined') { - db = options; - options = {}; - } - // Final command - var command = {'getlasterror':1}; - // If we have an options Object let's merge in the fields (fsync/wtimeout/w) - if('object' === typeof options) { - for(var name in options) { - command[name] = options[name] - } - } - - // Special case for w == 1, remove the w - if(1 == command.w) { - delete command.w; - } - - // Execute command - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command, null); -}; - -DbCommand.createGetLastStatusCommand = DbCommand.createGetLastErrorCommand; - -DbCommand.createGetPreviousErrorsCommand = function(db) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'getpreverror':1}, null); -}; - -DbCommand.createResetErrorHistoryCommand = function(db) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'reseterror':1}, null); -}; - -DbCommand.createCreateIndexCommand = function(db, collectionName, fieldOrSpec, options) { - var fieldHash = {}; - var indexes = []; - var keys; - - // Get all the fields accordingly - if('string' == typeof fieldOrSpec) { - // 'type' - indexes.push(fieldOrSpec + '_' + 1); - fieldHash[fieldOrSpec] = 1; - - } else if(utils.isArray(fieldOrSpec)) { - - fieldOrSpec.forEach(function(f) { - if('string' == typeof f) { - // [{location:'2d'}, 'type'] - indexes.push(f + '_' + 1); - fieldHash[f] = 1; - } else if(utils.isArray(f)) { - // [['location', '2d'],['type', 1]] - indexes.push(f[0] + '_' + (f[1] || 1)); - fieldHash[f[0]] = f[1] || 1; - } else if(utils.isObject(f)) { - // [{location:'2d'}, {type:1}] - keys = Object.keys(f); - keys.forEach(function(k) { - indexes.push(k + '_' + f[k]); - fieldHash[k] = f[k]; - }); - } else { - // undefined (ignore) - } - }); - - } else if(utils.isObject(fieldOrSpec)) { - // {location:'2d', type:1} - keys = Object.keys(fieldOrSpec); - keys.forEach(function(key) { - indexes.push(key + '_' + fieldOrSpec[key]); - fieldHash[key] = fieldOrSpec[key]; - }); - } - - // Generate the index name - var indexName = typeof options.name == 'string' - ? options.name - : indexes.join("_"); - - var selector = { - 'ns': db.databaseName + "." + collectionName, - 'key': fieldHash, - 'name': indexName - } - - // Ensure we have a correct finalUnique - var finalUnique = options == null || 'object' === typeof options - ? false - : options; - - // Set up options - options = options == null || typeof options == 'boolean' - ? {} - : options; - - // Add all the options - var keys = Object.keys(options); - for(var i = 0; i < keys.length; i++) { - selector[keys[i]] = options[keys[i]]; - } - - if(selector['unique'] == null) - selector['unique'] = finalUnique; - - var name = db.databaseName + "." + DbCommand.SYSTEM_INDEX_COLLECTION; - var cmd = new InsertCommand(db, name, false); - return cmd.add(selector); -}; - -DbCommand.logoutCommand = function(db, command_hash, options) { - var dbName = options != null && options['authdb'] != null ? options['authdb'] : db.databaseName; - return new DbCommand(db, dbName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null); -} - -DbCommand.createDropIndexCommand = function(db, collectionName, indexName) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'deleteIndexes':collectionName, 'index':indexName}, null); -}; - -DbCommand.createReIndexCommand = function(db, collectionName) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'reIndex':collectionName}, null); -}; - -DbCommand.createDropDatabaseCommand = function(db) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, {'dropDatabase':1}, null); -}; - -DbCommand.createDbCommand = function(db, command_hash, options, auth_db) { - var db_name = (auth_db ? auth_db : db.databaseName) + "." + DbCommand.SYSTEM_COMMAND_COLLECTION; - return new DbCommand(db, db_name, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null, options); -}; - -DbCommand.createAdminDbCommand = function(db, command_hash) { - return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT, 0, -1, command_hash, null); -}; - -DbCommand.createAdminDbCommandSlaveOk = function(db, command_hash) { - return new DbCommand(db, "admin." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT | QueryCommand.OPTS_SLAVE, 0, -1, command_hash, null); -}; - -DbCommand.createDbSlaveOkCommand = function(db, command_hash, options) { - return new DbCommand(db, db.databaseName + "." + DbCommand.SYSTEM_COMMAND_COLLECTION, QueryCommand.OPTS_NO_CURSOR_TIMEOUT | QueryCommand.OPTS_SLAVE, 0, -1, command_hash, null, options); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js deleted file mode 100644 index e6ae20a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/delete_command.js +++ /dev/null @@ -1,114 +0,0 @@ -var BaseCommand = require('./base_command').BaseCommand, - inherits = require('util').inherits; - -/** - Insert Document Command -**/ -var DeleteCommand = exports.DeleteCommand = function(db, collectionName, selector, flags) { - BaseCommand.call(this); - - // Validate correctness off the selector - var object = selector; - if(Buffer.isBuffer(object)) { - var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) { - var error = new Error("delete raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - this.flags = flags; - this.collectionName = collectionName; - this.selector = selector; - this.db = db; -}; - -inherits(DeleteCommand, BaseCommand); - -DeleteCommand.OP_DELETE = 2006; - -/* -struct { - MsgHeader header; // standard message header - int32 ZERO; // 0 - reserved for future use - cstring fullCollectionName; // "dbname.collectionname" - int32 ZERO; // 0 - reserved for future use - mongo.BSON selector; // query object. See below for details. -} -*/ -DeleteCommand.prototype.toBinary = function() { - // Calculate total length of the document - var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + this.db.bson.calculateObjectSize(this.selector, false, true) + (4 * 4); - // Let's build the single pass buffer command - var _index = 0; - var _command = new Buffer(totalLengthOfCommand); - // Write the header information to the buffer - _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; - _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; - _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; - _command[_index] = totalLengthOfCommand & 0xff; - // Adjust index - _index = _index + 4; - // Write the request ID - _command[_index + 3] = (this.requestId >> 24) & 0xff; - _command[_index + 2] = (this.requestId >> 16) & 0xff; - _command[_index + 1] = (this.requestId >> 8) & 0xff; - _command[_index] = this.requestId & 0xff; - // Adjust index - _index = _index + 4; - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - // Write the op_code for the command - _command[_index + 3] = (DeleteCommand.OP_DELETE >> 24) & 0xff; - _command[_index + 2] = (DeleteCommand.OP_DELETE >> 16) & 0xff; - _command[_index + 1] = (DeleteCommand.OP_DELETE >> 8) & 0xff; - _command[_index] = DeleteCommand.OP_DELETE & 0xff; - // Adjust index - _index = _index + 4; - - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - - // Write the collection name to the command - _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; - _command[_index - 1] = 0; - - // Write the flags - _command[_index + 3] = (this.flags >> 24) & 0xff; - _command[_index + 2] = (this.flags >> 16) & 0xff; - _command[_index + 1] = (this.flags >> 8) & 0xff; - _command[_index] = this.flags & 0xff; - // Adjust index - _index = _index + 4; - - // Document binary length - var documentLength = 0 - - // Serialize the selector - // If we are passing a raw buffer, do minimal validation - if(Buffer.isBuffer(this.selector)) { - documentLength = this.selector.length; - // Copy the data into the current buffer - this.selector.copy(_command, _index); - } else { - documentLength = this.db.bson.serializeWithBufferAndIndex(this.selector, this.checkKeys, _command, _index) - _index + 1; - } - - // Write the length to the document - _command[_index + 3] = (documentLength >> 24) & 0xff; - _command[_index + 2] = (documentLength >> 16) & 0xff; - _command[_index + 1] = (documentLength >> 8) & 0xff; - _command[_index] = documentLength & 0xff; - // Update index in buffer - _index = _index + documentLength; - // Add terminating 0 for the object - _command[_index - 1] = 0; - return _command; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js deleted file mode 100644 index d3aac02..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/get_more_command.js +++ /dev/null @@ -1,83 +0,0 @@ -var BaseCommand = require('./base_command').BaseCommand, - inherits = require('util').inherits, - binaryutils = require('../utils'); - -/** - Get More Document Command -**/ -var GetMoreCommand = exports.GetMoreCommand = function(db, collectionName, numberToReturn, cursorId) { - BaseCommand.call(this); - - this.collectionName = collectionName; - this.numberToReturn = numberToReturn; - this.cursorId = cursorId; - this.db = db; -}; - -inherits(GetMoreCommand, BaseCommand); - -GetMoreCommand.OP_GET_MORE = 2005; - -GetMoreCommand.prototype.toBinary = function() { - // Calculate total length of the document - var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 8 + (4 * 4); - // Let's build the single pass buffer command - var _index = 0; - var _command = new Buffer(totalLengthOfCommand); - // Write the header information to the buffer - _command[_index++] = totalLengthOfCommand & 0xff; - _command[_index++] = (totalLengthOfCommand >> 8) & 0xff; - _command[_index++] = (totalLengthOfCommand >> 16) & 0xff; - _command[_index++] = (totalLengthOfCommand >> 24) & 0xff; - - // Write the request ID - _command[_index++] = this.requestId & 0xff; - _command[_index++] = (this.requestId >> 8) & 0xff; - _command[_index++] = (this.requestId >> 16) & 0xff; - _command[_index++] = (this.requestId >> 24) & 0xff; - - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - - // Write the op_code for the command - _command[_index++] = GetMoreCommand.OP_GET_MORE & 0xff; - _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 8) & 0xff; - _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 16) & 0xff; - _command[_index++] = (GetMoreCommand.OP_GET_MORE >> 24) & 0xff; - - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - - // Write the collection name to the command - _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; - _command[_index - 1] = 0; - - // Number of documents to return - _command[_index++] = this.numberToReturn & 0xff; - _command[_index++] = (this.numberToReturn >> 8) & 0xff; - _command[_index++] = (this.numberToReturn >> 16) & 0xff; - _command[_index++] = (this.numberToReturn >> 24) & 0xff; - - // Encode the cursor id - var low_bits = this.cursorId.getLowBits(); - // Encode low bits - _command[_index++] = low_bits & 0xff; - _command[_index++] = (low_bits >> 8) & 0xff; - _command[_index++] = (low_bits >> 16) & 0xff; - _command[_index++] = (low_bits >> 24) & 0xff; - - var high_bits = this.cursorId.getHighBits(); - // Encode high bits - _command[_index++] = high_bits & 0xff; - _command[_index++] = (high_bits >> 8) & 0xff; - _command[_index++] = (high_bits >> 16) & 0xff; - _command[_index++] = (high_bits >> 24) & 0xff; - // Return command - return _command; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js deleted file mode 100644 index d6a2100..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/insert_command.js +++ /dev/null @@ -1,147 +0,0 @@ -var BaseCommand = require('./base_command').BaseCommand, - inherits = require('util').inherits; - -/** - Insert Document Command -**/ -var InsertCommand = exports.InsertCommand = function(db, collectionName, checkKeys, options) { - BaseCommand.call(this); - - this.collectionName = collectionName; - this.documents = []; - this.checkKeys = checkKeys == null ? true : checkKeys; - this.db = db; - this.flags = 0; - this.serializeFunctions = false; - - // Ensure valid options hash - options = options == null ? {} : options; - - // Check if we have keepGoing set -> set flag if it's the case - if(options['keepGoing'] != null && options['keepGoing']) { - // This will finish inserting all non-index violating documents even if it returns an error - this.flags = 1; - } - - // Check if we have keepGoing set -> set flag if it's the case - if(options['continueOnError'] != null && options['continueOnError']) { - // This will finish inserting all non-index violating documents even if it returns an error - this.flags = 1; - } - - // Let us defined on a command basis if we want functions to be serialized or not - if(options['serializeFunctions'] != null && options['serializeFunctions']) { - this.serializeFunctions = true; - } -}; - -inherits(InsertCommand, BaseCommand); - -// OpCodes -InsertCommand.OP_INSERT = 2002; - -InsertCommand.prototype.add = function(document) { - if(Buffer.isBuffer(document)) { - var object_size = document[0] | document[1] << 8 | document[2] << 16 | document[3] << 24; - if(object_size != document.length) { - var error = new Error("insert raw message size does not match message header size [" + document.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - this.documents.push(document); - return this; -}; - -/* -struct { - MsgHeader header; // standard message header - int32 ZERO; // 0 - reserved for future use - cstring fullCollectionName; // "dbname.collectionname" - BSON[] documents; // one or more documents to insert into the collection -} -*/ -InsertCommand.prototype.toBinary = function() { - // Calculate total length of the document - var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + (4 * 4); - // var docLength = 0 - for(var i = 0; i < this.documents.length; i++) { - if(Buffer.isBuffer(this.documents[i])) { - totalLengthOfCommand += this.documents[i].length; - } else { - // Calculate size of document - totalLengthOfCommand += this.db.bson.calculateObjectSize(this.documents[i], this.serializeFunctions, true); - } - } - - // Let's build the single pass buffer command - var _index = 0; - var _command = new Buffer(totalLengthOfCommand); - // Write the header information to the buffer - _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; - _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; - _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; - _command[_index] = totalLengthOfCommand & 0xff; - // Adjust index - _index = _index + 4; - // Write the request ID - _command[_index + 3] = (this.requestId >> 24) & 0xff; - _command[_index + 2] = (this.requestId >> 16) & 0xff; - _command[_index + 1] = (this.requestId >> 8) & 0xff; - _command[_index] = this.requestId & 0xff; - // Adjust index - _index = _index + 4; - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - // Write the op_code for the command - _command[_index + 3] = (InsertCommand.OP_INSERT >> 24) & 0xff; - _command[_index + 2] = (InsertCommand.OP_INSERT >> 16) & 0xff; - _command[_index + 1] = (InsertCommand.OP_INSERT >> 8) & 0xff; - _command[_index] = InsertCommand.OP_INSERT & 0xff; - // Adjust index - _index = _index + 4; - // Write flags if any - _command[_index + 3] = (this.flags >> 24) & 0xff; - _command[_index + 2] = (this.flags >> 16) & 0xff; - _command[_index + 1] = (this.flags >> 8) & 0xff; - _command[_index] = this.flags & 0xff; - // Adjust index - _index = _index + 4; - // Write the collection name to the command - _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; - _command[_index - 1] = 0; - - // Write all the bson documents to the buffer at the index offset - for(var i = 0; i < this.documents.length; i++) { - // Document binary length - var documentLength = 0 - var object = this.documents[i]; - - // Serialize the selector - // If we are passing a raw buffer, do minimal validation - if(Buffer.isBuffer(object)) { - documentLength = object.length; - // Copy the data into the current buffer - object.copy(_command, _index); - } else { - // Serialize the document straight to the buffer - documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; - } - - // Write the length to the document - _command[_index + 3] = (documentLength >> 24) & 0xff; - _command[_index + 2] = (documentLength >> 16) & 0xff; - _command[_index + 1] = (documentLength >> 8) & 0xff; - _command[_index] = documentLength & 0xff; - // Update index in buffer - _index = _index + documentLength; - // Add terminating 0 for the object - _command[_index - 1] = 0; - } - - return _command; -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js deleted file mode 100644 index d8ccb0c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/kill_cursor_command.js +++ /dev/null @@ -1,98 +0,0 @@ -var BaseCommand = require('./base_command').BaseCommand, - inherits = require('util').inherits, - binaryutils = require('../utils'); - -/** - Insert Document Command -**/ -var KillCursorCommand = exports.KillCursorCommand = function(db, cursorIds) { - BaseCommand.call(this); - - this.cursorIds = cursorIds; - this.db = db; -}; - -inherits(KillCursorCommand, BaseCommand); - -KillCursorCommand.OP_KILL_CURSORS = 2007; - -/* -struct { - MsgHeader header; // standard message header - int32 ZERO; // 0 - reserved for future use - int32 numberOfCursorIDs; // number of cursorIDs in message - int64[] cursorIDs; // array of cursorIDs to close -} -*/ -KillCursorCommand.prototype.toBinary = function() { - // Calculate total length of the document - var totalLengthOfCommand = 4 + 4 + (4 * 4) + (this.cursorIds.length * 8); - // Let's build the single pass buffer command - var _index = 0; - var _command = new Buffer(totalLengthOfCommand); - // Write the header information to the buffer - _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; - _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; - _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; - _command[_index] = totalLengthOfCommand & 0xff; - // Adjust index - _index = _index + 4; - // Write the request ID - _command[_index + 3] = (this.requestId >> 24) & 0xff; - _command[_index + 2] = (this.requestId >> 16) & 0xff; - _command[_index + 1] = (this.requestId >> 8) & 0xff; - _command[_index] = this.requestId & 0xff; - // Adjust index - _index = _index + 4; - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - // Write the op_code for the command - _command[_index + 3] = (KillCursorCommand.OP_KILL_CURSORS >> 24) & 0xff; - _command[_index + 2] = (KillCursorCommand.OP_KILL_CURSORS >> 16) & 0xff; - _command[_index + 1] = (KillCursorCommand.OP_KILL_CURSORS >> 8) & 0xff; - _command[_index] = KillCursorCommand.OP_KILL_CURSORS & 0xff; - // Adjust index - _index = _index + 4; - - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - - // Number of cursors to kill - var numberOfCursors = this.cursorIds.length; - _command[_index + 3] = (numberOfCursors >> 24) & 0xff; - _command[_index + 2] = (numberOfCursors >> 16) & 0xff; - _command[_index + 1] = (numberOfCursors >> 8) & 0xff; - _command[_index] = numberOfCursors & 0xff; - // Adjust index - _index = _index + 4; - - // Encode all the cursors - for(var i = 0; i < this.cursorIds.length; i++) { - // Encode the cursor id - var low_bits = this.cursorIds[i].getLowBits(); - // Encode low bits - _command[_index + 3] = (low_bits >> 24) & 0xff; - _command[_index + 2] = (low_bits >> 16) & 0xff; - _command[_index + 1] = (low_bits >> 8) & 0xff; - _command[_index] = low_bits & 0xff; - // Adjust index - _index = _index + 4; - - var high_bits = this.cursorIds[i].getHighBits(); - // Encode high bits - _command[_index + 3] = (high_bits >> 24) & 0xff; - _command[_index + 2] = (high_bits >> 16) & 0xff; - _command[_index + 1] = (high_bits >> 8) & 0xff; - _command[_index] = high_bits & 0xff; - // Adjust index - _index = _index + 4; - } - - return _command; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js deleted file mode 100644 index 76829d9..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/query_command.js +++ /dev/null @@ -1,261 +0,0 @@ -var BaseCommand = require('./base_command').BaseCommand, - inherits = require('util').inherits; - -/** - Insert Document Command -**/ -var QueryCommand = exports.QueryCommand = function(db, collectionName, queryOptions, numberToSkip, numberToReturn, query, returnFieldSelector, options) { - BaseCommand.call(this); - - // Validate correctness off the selector - var object = query, - object_size; - if(Buffer.isBuffer(object)) { - object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) { - var error = new Error("query selector raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - object = returnFieldSelector; - if(Buffer.isBuffer(object)) { - object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) { - var error = new Error("query fields raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - // Make sure we don't get a null exception - options = options == null ? {} : options; - // Set up options - this.collectionName = collectionName; - this.queryOptions = queryOptions; - this.numberToSkip = numberToSkip; - this.numberToReturn = numberToReturn; - - // Ensure we have no null query - query = query == null ? {} : query; - // Wrap query in the $query parameter so we can add read preferences for mongos - this.query = query; - this.returnFieldSelector = returnFieldSelector; - this.db = db; - - // Let us defined on a command basis if we want functions to be serialized or not - if(options['serializeFunctions'] != null && options['serializeFunctions']) { - this.serializeFunctions = true; - } -}; - -inherits(QueryCommand, BaseCommand); - -QueryCommand.OP_QUERY = 2004; - -/* - * Adds the read prefrence to the current command - */ -QueryCommand.prototype.setMongosReadPreference = function(readPreference, tags) { - // If we have readPreference set to true set to secondary prefered - if(readPreference == true) { - readPreference = 'secondaryPreferred'; - } else if(readPreference == 'false') { - readPreference = 'primary'; - } - - // Force the slave ok flag to be set if we are not using primary read preference - if(readPreference != false && readPreference != 'primary') { - this.queryOptions |= QueryCommand.OPTS_SLAVE; - } - - // Backward compatibility, ensure $query only set on read preference so 1.8.X works - if((readPreference != null || tags != null) && this.query['$query'] == null) { - this.query = {'$query': this.query}; - } - - // If we have no readPreference set and no tags, check if the slaveOk bit is set - if(readPreference == null && tags == null) { - // If we have a slaveOk bit set the read preference for MongoS - if(this.queryOptions & QueryCommand.OPTS_SLAVE) { - this.query['$readPreference'] = {mode: 'secondary'} - } else { - this.query['$readPreference'] = {mode: 'primary'} - } - } - - // Build read preference object - if(typeof readPreference == 'object' && readPreference['_type'] == 'ReadPreference') { - this.query['$readPreference'] = readPreference.toObject(); - } else if(readPreference != null) { - // Add the read preference - this.query['$readPreference'] = {mode: readPreference}; - - // If we have tags let's add them - if(tags != null) { - this.query['$readPreference']['tags'] = tags; - } - } -} - -/* -struct { - MsgHeader header; // standard message header - int32 opts; // query options. See below for details. - cstring fullCollectionName; // "dbname.collectionname" - int32 numberToSkip; // number of documents to skip when returning results - int32 numberToReturn; // number of documents to return in the first OP_REPLY - BSON query ; // query object. See below for details. - [ BSON returnFieldSelector; ] // OPTIONAL : selector indicating the fields to return. See below for details. -} -*/ -QueryCommand.prototype.toBinary = function() { - // Total length of the command - var totalLengthOfCommand = 0; - // Calculate total length of the document - if(Buffer.isBuffer(this.query)) { - totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 4 + this.query.length + (4 * 4); - } else { - totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + 4 + this.db.bson.calculateObjectSize(this.query, this.serializeFunctions, true) + (4 * 4); - } - - // Calculate extra fields size - if(this.returnFieldSelector != null && !(Buffer.isBuffer(this.returnFieldSelector))) { - if(Object.keys(this.returnFieldSelector).length > 0) { - totalLengthOfCommand += this.db.bson.calculateObjectSize(this.returnFieldSelector, this.serializeFunctions, true); - } - } else if(Buffer.isBuffer(this.returnFieldSelector)) { - totalLengthOfCommand += this.returnFieldSelector.length; - } - - // Let's build the single pass buffer command - var _index = 0; - var _command = new Buffer(totalLengthOfCommand); - // Write the header information to the buffer - _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; - _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; - _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; - _command[_index] = totalLengthOfCommand & 0xff; - // Adjust index - _index = _index + 4; - // Write the request ID - _command[_index + 3] = (this.requestId >> 24) & 0xff; - _command[_index + 2] = (this.requestId >> 16) & 0xff; - _command[_index + 1] = (this.requestId >> 8) & 0xff; - _command[_index] = this.requestId & 0xff; - // Adjust index - _index = _index + 4; - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - // Write the op_code for the command - _command[_index + 3] = (QueryCommand.OP_QUERY >> 24) & 0xff; - _command[_index + 2] = (QueryCommand.OP_QUERY >> 16) & 0xff; - _command[_index + 1] = (QueryCommand.OP_QUERY >> 8) & 0xff; - _command[_index] = QueryCommand.OP_QUERY & 0xff; - // Adjust index - _index = _index + 4; - - // Write the query options - _command[_index + 3] = (this.queryOptions >> 24) & 0xff; - _command[_index + 2] = (this.queryOptions >> 16) & 0xff; - _command[_index + 1] = (this.queryOptions >> 8) & 0xff; - _command[_index] = this.queryOptions & 0xff; - // Adjust index - _index = _index + 4; - - // Write the collection name to the command - _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; - _command[_index - 1] = 0; - - // Write the number of documents to skip - _command[_index + 3] = (this.numberToSkip >> 24) & 0xff; - _command[_index + 2] = (this.numberToSkip >> 16) & 0xff; - _command[_index + 1] = (this.numberToSkip >> 8) & 0xff; - _command[_index] = this.numberToSkip & 0xff; - // Adjust index - _index = _index + 4; - - // Write the number of documents to return - _command[_index + 3] = (this.numberToReturn >> 24) & 0xff; - _command[_index + 2] = (this.numberToReturn >> 16) & 0xff; - _command[_index + 1] = (this.numberToReturn >> 8) & 0xff; - _command[_index] = this.numberToReturn & 0xff; - // Adjust index - _index = _index + 4; - - // Document binary length - var documentLength = 0 - var object = this.query; - - // Serialize the selector - if(Buffer.isBuffer(object)) { - documentLength = object.length; - // Copy the data into the current buffer - object.copy(_command, _index); - } else { - // Serialize the document straight to the buffer - documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; - } - - // Write the length to the document - _command[_index + 3] = (documentLength >> 24) & 0xff; - _command[_index + 2] = (documentLength >> 16) & 0xff; - _command[_index + 1] = (documentLength >> 8) & 0xff; - _command[_index] = documentLength & 0xff; - // Update index in buffer - _index = _index + documentLength; - // Add terminating 0 for the object - _command[_index - 1] = 0; - - // Push field selector if available - if(this.returnFieldSelector != null && !(Buffer.isBuffer(this.returnFieldSelector))) { - if(Object.keys(this.returnFieldSelector).length > 0) { - var documentLength = this.db.bson.serializeWithBufferAndIndex(this.returnFieldSelector, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; - // Write the length to the document - _command[_index + 3] = (documentLength >> 24) & 0xff; - _command[_index + 2] = (documentLength >> 16) & 0xff; - _command[_index + 1] = (documentLength >> 8) & 0xff; - _command[_index] = documentLength & 0xff; - // Update index in buffer - _index = _index + documentLength; - // Add terminating 0 for the object - _command[_index - 1] = 0; - } - } if(this.returnFieldSelector != null && Buffer.isBuffer(this.returnFieldSelector)) { - // Document binary length - var documentLength = 0 - var object = this.returnFieldSelector; - - // Serialize the selector - documentLength = object.length; - // Copy the data into the current buffer - object.copy(_command, _index); - - // Write the length to the document - _command[_index + 3] = (documentLength >> 24) & 0xff; - _command[_index + 2] = (documentLength >> 16) & 0xff; - _command[_index + 1] = (documentLength >> 8) & 0xff; - _command[_index] = documentLength & 0xff; - // Update index in buffer - _index = _index + documentLength; - // Add terminating 0 for the object - _command[_index - 1] = 0; - } - - // Return finished command - return _command; -}; - -// Constants -QueryCommand.OPTS_NONE = 0; -QueryCommand.OPTS_TAILABLE_CURSOR = 2; -QueryCommand.OPTS_SLAVE = 4; -QueryCommand.OPTS_OPLOG_REPLY = 8; -QueryCommand.OPTS_NO_CURSOR_TIMEOUT = 16; -QueryCommand.OPTS_AWAIT_DATA = 32; -QueryCommand.OPTS_EXHAUST = 64; -QueryCommand.OPTS_PARTIAL = 128; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js deleted file mode 100644 index 9829dea..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/commands/update_command.js +++ /dev/null @@ -1,174 +0,0 @@ -var BaseCommand = require('./base_command').BaseCommand, - inherits = require('util').inherits; - -/** - Update Document Command -**/ -var UpdateCommand = exports.UpdateCommand = function(db, collectionName, spec, document, options) { - BaseCommand.call(this); - - var object = spec; - if(Buffer.isBuffer(object)) { - var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) { - var error = new Error("update spec raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - var object = document; - if(Buffer.isBuffer(object)) { - var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) { - var error = new Error("update document raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - error.name = 'MongoError'; - throw error; - } - } - - this.collectionName = collectionName; - this.spec = spec; - this.document = document; - this.db = db; - this.serializeFunctions = false; - - // Generate correct flags - var db_upsert = 0; - var db_multi_update = 0; - db_upsert = options != null && options['upsert'] != null ? (options['upsert'] == true ? 1 : 0) : db_upsert; - db_multi_update = options != null && options['multi'] != null ? (options['multi'] == true ? 1 : 0) : db_multi_update; - - // Flags - this.flags = parseInt(db_multi_update.toString() + db_upsert.toString(), 2); - // Let us defined on a command basis if we want functions to be serialized or not - if(options['serializeFunctions'] != null && options['serializeFunctions']) { - this.serializeFunctions = true; - } -}; - -inherits(UpdateCommand, BaseCommand); - -UpdateCommand.OP_UPDATE = 2001; - -/* -struct { - MsgHeader header; // standard message header - int32 ZERO; // 0 - reserved for future use - cstring fullCollectionName; // "dbname.collectionname" - int32 flags; // bit vector. see below - BSON spec; // the query to select the document - BSON document; // the document data to update with or insert -} -*/ -UpdateCommand.prototype.toBinary = function() { - // Calculate total length of the document - var totalLengthOfCommand = 4 + Buffer.byteLength(this.collectionName) + 1 + 4 + this.db.bson.calculateObjectSize(this.spec, false, true) + - this.db.bson.calculateObjectSize(this.document, this.serializeFunctions, true) + (4 * 4); - - // Let's build the single pass buffer command - var _index = 0; - var _command = new Buffer(totalLengthOfCommand); - // Write the header information to the buffer - _command[_index + 3] = (totalLengthOfCommand >> 24) & 0xff; - _command[_index + 2] = (totalLengthOfCommand >> 16) & 0xff; - _command[_index + 1] = (totalLengthOfCommand >> 8) & 0xff; - _command[_index] = totalLengthOfCommand & 0xff; - // Adjust index - _index = _index + 4; - // Write the request ID - _command[_index + 3] = (this.requestId >> 24) & 0xff; - _command[_index + 2] = (this.requestId >> 16) & 0xff; - _command[_index + 1] = (this.requestId >> 8) & 0xff; - _command[_index] = this.requestId & 0xff; - // Adjust index - _index = _index + 4; - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - // Write the op_code for the command - _command[_index + 3] = (UpdateCommand.OP_UPDATE >> 24) & 0xff; - _command[_index + 2] = (UpdateCommand.OP_UPDATE >> 16) & 0xff; - _command[_index + 1] = (UpdateCommand.OP_UPDATE >> 8) & 0xff; - _command[_index] = UpdateCommand.OP_UPDATE & 0xff; - // Adjust index - _index = _index + 4; - - // Write zero - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - _command[_index++] = 0; - - // Write the collection name to the command - _index = _index + _command.write(this.collectionName, _index, 'utf8') + 1; - _command[_index - 1] = 0; - - // Write the update flags - _command[_index + 3] = (this.flags >> 24) & 0xff; - _command[_index + 2] = (this.flags >> 16) & 0xff; - _command[_index + 1] = (this.flags >> 8) & 0xff; - _command[_index] = this.flags & 0xff; - // Adjust index - _index = _index + 4; - - // Document binary length - var documentLength = 0 - var object = this.spec; - - // Serialize the selector - // If we are passing a raw buffer, do minimal validation - if(Buffer.isBuffer(object)) { - var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) throw new Error("raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - documentLength = object.length; - // Copy the data into the current buffer - object.copy(_command, _index); - } else { - documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, false) - _index + 1; - } - - // Write the length to the document - _command[_index + 3] = (documentLength >> 24) & 0xff; - _command[_index + 2] = (documentLength >> 16) & 0xff; - _command[_index + 1] = (documentLength >> 8) & 0xff; - _command[_index] = documentLength & 0xff; - // Update index in buffer - _index = _index + documentLength; - // Add terminating 0 for the object - _command[_index - 1] = 0; - - // Document binary length - var documentLength = 0 - var object = this.document; - - // Serialize the document - // If we are passing a raw buffer, do minimal validation - if(Buffer.isBuffer(object)) { - var object_size = object[0] | object[1] << 8 | object[2] << 16 | object[3] << 24; - if(object_size != object.length) throw new Error("raw message size does not match message header size [" + object.length + "] != [" + object_size + "]"); - documentLength = object.length; - // Copy the data into the current buffer - object.copy(_command, _index); - } else { - documentLength = this.db.bson.serializeWithBufferAndIndex(object, this.checkKeys, _command, _index, this.serializeFunctions) - _index + 1; - } - - // Write the length to the document - _command[_index + 3] = (documentLength >> 24) & 0xff; - _command[_index + 2] = (documentLength >> 16) & 0xff; - _command[_index + 1] = (documentLength >> 8) & 0xff; - _command[_index] = documentLength & 0xff; - // Update index in buffer - _index = _index + documentLength; - // Add terminating 0 for the object - _command[_index - 1] = 0; - - return _command; -}; - -// Constants -UpdateCommand.DB_UPSERT = 0; -UpdateCommand.DB_MULTI_UPDATE = 1; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js deleted file mode 100644 index 372b586..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js +++ /dev/null @@ -1,465 +0,0 @@ -var EventEmitter = require('events').EventEmitter - , inherits = require('util').inherits - , mongodb_cr_authenticate = require('../auth/mongodb_cr.js').authenticate - , mongodb_gssapi_authenticate = require('../auth/mongodb_gssapi.js').authenticate - , mongodb_sspi_authenticate = require('../auth/mongodb_sspi.js').authenticate; - -var id = 0; - -/** - * Internal class for callback storage - * @ignore - */ -var CallbackStore = function() { - // Make class an event emitter - EventEmitter.call(this); - // Add a info about call variable - this._notReplied = {}; - this.id = id++; -} - -/** - * @ignore - */ -inherits(CallbackStore, EventEmitter); - -CallbackStore.prototype.notRepliedToIds = function() { - return Object.keys(this._notReplied); -} - -CallbackStore.prototype.callbackInfo = function(id) { - return this._notReplied[id]; -} - -/** - * Internal class for holding non-executed commands - * @ignore - */ -var NonExecutedOperationStore = function(config) { - this.config = config; - this.commands = { - read: [] - , write_reads: [] - , write: [] - }; -} - -NonExecutedOperationStore.prototype.write = function(op) { - this.commands.write.push(op); -} - -NonExecutedOperationStore.prototype.read_from_writer = function(op) { - this.commands.write_reads.push(op); -} - -NonExecutedOperationStore.prototype.read = function(op) { - this.commands.read.push(op); -} - -NonExecutedOperationStore.prototype.execute_queries = function(executeInsertCommand) { - var connection = this.config.checkoutReader(); - if(connection == null || connection instanceof Error) return; - - // Write out all the queries - while(this.commands.read.length > 0) { - // Get the next command - var command = this.commands.read.shift(); - // command['options'].connection = this.config.checkoutReader(); - command.options.connection = connection; - // Execute the next command - command.executeQueryCommand(command.db, command.db_command, command.options, command.callback); - } -} - -NonExecutedOperationStore.prototype.execute_writes = function() { - var connection = this.config.checkoutWriter(); - if(connection == null || connection instanceof Error) return; - - // Write out all the queries to the primary - while(this.commands.write_reads.length > 0) { - // Get the next command - var command = this.commands.write_reads.shift(); - command.options.connection = connection; - // Execute the next command - command.executeQueryCommand(command.db, command.db_command, command.options, command.callback); - } - - // Execute all write operations - while(this.commands.write.length > 0) { - // Get the next command - var command = this.commands.write.shift(); - // Set the connection - command.options.connection = connection; - // Execute the next command - command.executeInsertCommand(command.db, command.db_command, command.options, command.callback); - } -} - -/** - * Internal class for authentication storage - * @ignore - */ -var AuthStore = function() { - this._auths = []; -} - -AuthStore.prototype.add = function(authMechanism, dbName, username, password, authdbName) { - // Check for duplicates - if(!this.contains(dbName)) { - // Base config - var config = { - 'username':username - , 'password':password - , 'db': dbName - , 'authMechanism': authMechanism - }; - - // Add auth source if passed in - if(typeof authdbName == 'string') { - config['authdb'] = authdbName; - } - - // Push the config - this._auths.push(config); - } -} - -AuthStore.prototype.contains = function(dbName) { - for(var i = 0; i < this._auths.length; i++) { - if(this._auths[i].db == dbName) return true; - } - - return false; -} - -AuthStore.prototype.remove = function(dbName) { - var newAuths = []; - - // Filter out all the login details - for(var i = 0; i < this._auths.length; i++) { - if(this._auths[i].db != dbName) newAuths.push(this._auths[i]); - } - - // Set the filtered list - this._auths = newAuths; -} - -AuthStore.prototype.get = function(index) { - return this._auths[index]; -} - -AuthStore.prototype.length = function() { - return this._auths.length; -} - -AuthStore.prototype.toArray = function() { - return this._auths.slice(0); -} - -/** - * Internal class for storing db references - * @ignore - */ -var DbStore = function() { - this._dbs = []; -} - -DbStore.prototype.add = function(db) { - // this._dbs.push(db); - var found = false; - // Only add if it does not exist already - for(var i = 0; i < this._dbs.length; i++) { - if(db.databaseName == this._dbs[i].databaseName) found = true; - } - - if(!found) this._dbs.push(db); -} - -DbStore.prototype.reset = function() { - this._dbs = []; -} - -DbStore.prototype.emit = function(event, message, object, reset, filterDb) { - if(reset) { - while(this._dbs.length > 0) { - var db = this._dbs.shift(); - // Only emit if there is a listener - if(db.listeners(event).length > 0) { - if(filterDb == null || filterDb.databaseName !== db.databaseName - || filterDb.tag !== db.tag) { - db.emit(event, message, object); - } - } - } - } else { - for(var i = 0; i < this._dbs.length; i++) { - if(this._dbs[i].listeners(event).length > 0) { - if(filterDb == null || filterDb.databaseName !== this._dbs[i].databaseName - || filterDb.tag !== this._dbs[i].tag) { - this._dbs[i].emit(event, message, object); - } - } - } - } -} - -var Base = function Base() { - EventEmitter.call(this); - - // Callback store is part of connection specification - if(Base._callBackStore == null) { - Base._callBackStore = new CallbackStore(); - } - - // Create a new callback store - this._callBackStore = new CallbackStore(); - // All commands not being executed - this._commandsStore = new NonExecutedOperationStore(this); - // Create a new auth store - this.auth = new AuthStore(); - // Contains all the dbs attached to this server config - this._dbStore = new DbStore(); -} - -/** - * @ignore - */ -inherits(Base, EventEmitter); - -/** - * @ignore - */ -Base.prototype._apply_auths = function(db, callback) { - _apply_auths_serially(this, db, this.auth.toArray(), callback); -} - -var _apply_auths_serially = function(self, db, auths, callback) { - if(auths.length == 0) return callback(null, null); - // Get the first auth - var auth = auths.shift(); - var connections = self.allRawConnections(); - var connectionsLeft = connections.length; - - // Let's apply it to all raw connections - for(var i = 0; i < connections.length; i++) { - if(auth.authMechanism == 'GSSAPI') { - var options = {connection: connections[i]}; - - var connectionHandler = function(err, result) { - connectionsLeft = connectionsLeft - 1; - // If no more connections are left return - if(connectionsLeft == 0) { - return _apply_auths_serially(self, db, auths, callback); - } - } - - // We have the kerberos library, execute auth process - if(process.platform == 'win32') { - mongodb_sspi_authenticate(db, auth.username, auth.password, auth.authdb, options, callback); - } else { - mongodb_gssapi_authenticate(db, auth.username, auth.password, auth.authdb, options, callback); - } - } else if(auth.authMechanism == 'MONGODB-CR') { - mongodb_cr_authenticate(db, auth.username, auth.password, auth.authdb, options, callback); - } - } -} - -/** - * Fire all the errors - * @ignore - */ -Base.prototype.__executeAllCallbacksWithError = function(err) { - // Check all callbacks - var keys = Object.keys(this._callBackStore._notReplied); - // For each key check if it's a callback that needs to be returned - for(var j = 0; j < keys.length; j++) { - var info = this._callBackStore._notReplied[keys[j]]; - // Check if we have a chained command (findAndModify) - if(info && info['chained'] && Array.isArray(info['chained']) && info['chained'].length > 0) { - var chained = info['chained']; - // Only callback once and the last one is the right one - var finalCallback = chained.pop(); - // Emit only the last event - this._callBackStore.emit(finalCallback, err, null); - - // Put back the final callback to ensure we don't call all commands in the chain - chained.push(finalCallback); - - // Remove all chained callbacks - for(var i = 0; i < chained.length; i++) { - delete this._callBackStore._notReplied[chained[i]]; - } - // Remove the key - delete this._callBackStore._notReplied[keys[j]]; - } else { - this._callBackStore.emit(keys[j], err, null); - // Remove the key - delete this._callBackStore._notReplied[keys[j]]; - } - } -} - -/** - * Fire all the errors - * @ignore - */ -Base.prototype.__executeAllServerSpecificErrorCallbacks = function(host, port, err) { - // Check all callbacks - var keys = Object.keys(this._callBackStore._notReplied); - // For each key check if it's a callback that needs to be returned - for(var j = 0; j < keys.length; j++) { - var info = this._callBackStore._notReplied[keys[j]]; - - if(info.connection) { - // Unpack the connection settings - var _host = info.connection.socketOptions.host; - var _port = info.connection.socketOptions.port; - // Check if we have a chained command (findAndModify) - if(info && info['chained'] - && Array.isArray(info['chained']) - && info['chained'].length > 0 - && _port == port && _host == host) { - var chained = info['chained']; - // Only callback once and the last one is the right one - var finalCallback = chained.pop(); - // Emit only the last event - this._callBackStore.emit(finalCallback, err, null); - - // Put back the final callback to ensure we don't call all commands in the chain - chained.push(finalCallback); - - // Remove all chained callbacks - for(var i = 0; i < chained.length; i++) { - delete this._callBackStore._notReplied[chained[i]]; - } - // Remove the key - delete this._callBackStore._notReplied[keys[j]]; - } else if(_port == port && _host == host) { - this._callBackStore.emit(keys[j], err, null); - // Remove the key - delete this._callBackStore._notReplied[keys[j]]; - } - } - } -} - -/** - * Register a handler - * @ignore - * @api private - */ -Base.prototype._registerHandler = function(db_command, raw, connection, exhaust, callback) { - // If we have an array of commands, chain them - var chained = Array.isArray(db_command); - - // Check if we have exhausted - if(typeof exhaust == 'function') { - callback = exhaust; - exhaust = false; - } - - // If they are chained we need to add a special handler situation - if(chained) { - // List off chained id's - var chainedIds = []; - // Add all id's - for(var i = 0; i < db_command.length; i++) chainedIds.push(db_command[i].getRequestId().toString()); - // Register all the commands together - for(var i = 0; i < db_command.length; i++) { - var command = db_command[i]; - // Add the callback to the store - this._callBackStore.once(command.getRequestId(), callback); - // Add the information about the reply - this._callBackStore._notReplied[command.getRequestId().toString()] = {start: new Date().getTime(), 'raw': raw, chained:chainedIds, connection:connection, exhaust:false}; - } - } else { - // Add the callback to the list of handlers - this._callBackStore.once(db_command.getRequestId(), callback); - // Add the information about the reply - this._callBackStore._notReplied[db_command.getRequestId().toString()] = {start: new Date().getTime(), 'raw': raw, connection:connection, exhaust:exhaust}; - } -} - -/** - * Re-Register a handler, on the cursor id f.ex - * @ignore - * @api private - */ -Base.prototype._reRegisterHandler = function(newId, object, callback) { - // Add the callback to the list of handlers - this._callBackStore.once(newId, object.callback.listener); - // Add the information about the reply - this._callBackStore._notReplied[newId] = object.info; -} - -/** - * - * @ignore - * @api private - */ -Base.prototype._callHandler = function(id, document, err) { - // If there is a callback peform it - if(this._callBackStore.listeners(id).length >= 1) { - // Get info object - var info = this._callBackStore._notReplied[id]; - // Delete the current object - delete this._callBackStore._notReplied[id]; - // Emit to the callback of the object - this._callBackStore.emit(id, err, document, info.connection); - } -} - -/** - * - * @ignore - * @api private - */ -Base.prototype._hasHandler = function(id) { - // If there is a callback peform it - return this._callBackStore.listeners(id).length >= 1; -} - -/** - * - * @ignore - * @api private - */ -Base.prototype._removeHandler = function(id) { - // Remove the information - if(this._callBackStore._notReplied[id] != null) delete this._callBackStore._notReplied[id]; - // Remove the callback if it's registered - this._callBackStore.removeAllListeners(id); - // Force cleanup _events, node.js seems to set it as a null value - if(this._callBackStore._events != null) delete this._callBackStore._events[id]; -} - -/** - * - * @ignore - * @api private - */ -Base.prototype._findHandler = function(id) { - var info = this._callBackStore._notReplied[id]; - // Return the callback - return {info:info, callback:(this._callBackStore.listeners(id).length >= 1) ? this._callBackStore.listeners(id)[0] : null} -} - -/** - * - * @ignore - * @api private - */ -Base.prototype._emitAcrossAllDbInstances = function(server, filterDb, event, message, object, resetConnection) { - if(resetConnection) { - for(var i = 0; i < this._dbStore._dbs.length; i++) { - if(typeof this._dbStore._dbs[i].openCalled != 'undefined') - this._dbStore._dbs[i].openCalled = false; - } - } - - // Fire event - this._dbStore.emit(event, message, object, resetConnection, filterDb); -} - -exports.Base = Base; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js deleted file mode 100644 index 6753fd2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js +++ /dev/null @@ -1,505 +0,0 @@ -var utils = require('./connection_utils'), - inherits = require('util').inherits, - net = require('net'), - EventEmitter = require('events').EventEmitter, - inherits = require('util').inherits, - binaryutils = require('../utils'), - tls = require('tls'); - -var Connection = exports.Connection = function(id, socketOptions) { - // Set up event emitter - EventEmitter.call(this); - // Store all socket options - this.socketOptions = socketOptions ? socketOptions : {host:'localhost', port:27017, domainSocket:false}; - // Set keep alive default if not overriden - if(this.socketOptions.keepAlive == null && (process.platform !== "sunos" || process.platform !== "win32")) this.socketOptions.keepAlive = 100; - // Id for the connection - this.id = id; - // State of the connection - this.connected = false; - // Set if this is a domain socket - this.domainSocket = this.socketOptions.domainSocket; - - // - // Connection parsing state - // - this.maxBsonSize = socketOptions.maxBsonSize ? socketOptions.maxBsonSize : Connection.DEFAULT_MAX_BSON_SIZE; - this.maxMessageSizeBytes = socketOptions.maxMessageSizeBytes ? socketOptions.maxMessageSizeBytes : Connection.DEFAULT_MAX_MESSAGE_SIZE; - // Contains the current message bytes - this.buffer = null; - // Contains the current message size - this.sizeOfMessage = 0; - // Contains the readIndex for the messaage - this.bytesRead = 0; - // Contains spill over bytes from additional messages - this.stubBuffer = 0; - - // Just keeps list of events we allow - this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[], timeout:[], end:[]}; - - // Just keeps list of events we allow - resetHandlers(this, false); -} - -// Set max bson size -Connection.DEFAULT_MAX_BSON_SIZE = 1024 * 1024 * 4; -// Set default to max bson to avoid overflow or bad guesses -Connection.DEFAULT_MAX_MESSAGE_SIZE = Connection.DEFAULT_MAX_BSON_SIZE; - -// Inherit event emitter so we can emit stuff wohoo -inherits(Connection, EventEmitter); - -Connection.prototype.start = function() { - var self = this; - - // If we have a normal connection - if(this.socketOptions.ssl) { - // Create new connection instance - if(this.domainSocket) { - this.connection = net.createConnection(this.socketOptions.host); - } else { - this.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host); - } - if(this.logger != null && this.logger.doDebug){ - this.logger.debug("opened connection", this.socketOptions); - } - // Set options on the socket - this.connection.setTimeout(this.socketOptions.connectTimeoutMS != null ? this.socketOptions.connectTimeoutMS : this.socketOptions.timeout); - // Work around for 0.4.X - if(process.version.indexOf("v0.4") == -1) this.connection.setNoDelay(this.socketOptions.noDelay); - // Set keep alive if defined - if(process.version.indexOf("v0.4") == -1) { - if(this.socketOptions.keepAlive > 0) { - this.connection.setKeepAlive(true, this.socketOptions.keepAlive); - } else { - this.connection.setKeepAlive(false); - } - } - - // Check if the driver should validate the certificate - var validate_certificates = this.socketOptions.sslValidate == true ? true : false; - - // Create options for the tls connection - var tls_options = { - socket: this.connection - , rejectUnauthorized: false - } - - // If we wish to validate the certificate we have provided a ca store - if(validate_certificates) { - tls_options.ca = this.socketOptions.sslCA; - } - - // If we have a certificate to present - if(this.socketOptions.sslCert) { - tls_options.cert = this.socketOptions.sslCert; - tls_options.key = this.socketOptions.sslKey; - } - - // If the driver has been provided a private key password - if(this.socketOptions.sslPass) { - tls_options.passphrase = this.socketOptions.sslPass; - } - - // Contains the cleartext stream - var cleartext = null; - // Attempt to establish a TLS connection to the server - try { - cleartext = tls.connect(this.socketOptions.port, this.socketOptions.host, tls_options, function() { - // If we have a ssl certificate validation error return an error - if(cleartext.authorizationError && validate_certificates) { - // Emit an error - return self.emit("error", cleartext.authorizationError, self, {ssl:true}); - } - - // Connect to the server - connectHandler(self)(); - }) - } catch(err) { - return self.emit("error", "SSL connection failed", self, {ssl:true}); - } - - // Save the output stream - this.writeSteam = cleartext; - - // Set up data handler for the clear stream - cleartext.on("data", createDataHandler(this)); - // Do any handling of end event of the stream - cleartext.on("end", endHandler(this)); - cleartext.on("error", errorHandler(this)); - - // Handle any errors - this.connection.on("error", errorHandler(this)); - // Handle timeout - this.connection.on("timeout", timeoutHandler(this)); - // Handle drain event - this.connection.on("drain", drainHandler(this)); - // Handle the close event - this.connection.on("close", closeHandler(this)); - } else { - // Create new connection instance - if(this.domainSocket) { - this.connection = net.createConnection(this.socketOptions.host); - } else { - this.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host); - } - if(this.logger != null && this.logger.doDebug){ - this.logger.debug("opened connection", this.socketOptions); - } - - // Set options on the socket - this.connection.setTimeout(this.socketOptions.connectTimeoutMS != null ? this.socketOptions.connectTimeoutMS : this.socketOptions.timeout); - // Work around for 0.4.X - if(process.version.indexOf("v0.4") == -1) this.connection.setNoDelay(this.socketOptions.noDelay); - // Set keep alive if defined - if(process.version.indexOf("v0.4") == -1) { - if(this.socketOptions.keepAlive > 0) { - this.connection.setKeepAlive(true, this.socketOptions.keepAlive); - } else { - this.connection.setKeepAlive(false); - } - } - - // Set up write stream - this.writeSteam = this.connection; - // Add handlers - this.connection.on("error", errorHandler(this)); - // Add all handlers to the socket to manage it - this.connection.on("connect", connectHandler(this)); - // this.connection.on("end", endHandler(this)); - this.connection.on("data", createDataHandler(this)); - this.connection.on("timeout", timeoutHandler(this)); - this.connection.on("drain", drainHandler(this)); - this.connection.on("close", closeHandler(this)); - } -} - -// Check if the sockets are live -Connection.prototype.isConnected = function() { - return this.connected && !this.connection.destroyed && this.connection.writable && this.connection.readable; -} - -// Write the data out to the socket -Connection.prototype.write = function(command, callback) { - try { - // If we have a list off commands to be executed on the same socket - if(Array.isArray(command)) { - for(var i = 0; i < command.length; i++) { - var binaryCommand = command[i].toBinary() - - if(!this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxBsonSize) - return callback(new Error("Document exceeds maximum allowed bson size of " + this.maxBsonSize + " bytes")); - - if(this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxMessageSizeBytes) { - return callback(new Error("Command exceeds maximum message size of " + this.maxMessageSizeBytes + " bytes")); - } - - if(this.logger != null && this.logger.doDebug) - this.logger.debug("writing command to mongodb", {binary: binaryCommand, json: command[i]}); - - var r = this.writeSteam.write(binaryCommand); - } - } else { - var binaryCommand = command.toBinary() - - if(!this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxBsonSize) - return callback(new Error("Document exceeds maximum allowed bson size of " + this.maxBsonSize + " bytes")); - - if(this.socketOptions['disableDriverBSONSizeCheck'] && binaryCommand.length > this.maxMessageSizeBytes) { - return callback(new Error("Command exceeds maximum message size of " + this.maxMessageSizeBytes + " bytes")); - } - - if(this.logger != null && this.logger.doDebug) - this.logger.debug("writing command to mongodb", {binary: binaryCommand, json: command}); - - var r = this.writeSteam.write(binaryCommand); - } - } catch (err) { - if(typeof callback === 'function') callback(err); - } -} - -// Force the closure of the connection -Connection.prototype.close = function() { - // clear out all the listeners - resetHandlers(this, true); - // Add a dummy error listener to catch any weird last moment errors (and ignore them) - this.connection.on("error", function() {}) - // destroy connection - this.connection.destroy(); - if(this.logger != null && this.logger.doDebug){ - this.logger.debug("closed connection", this.connection); - } -} - -// Reset all handlers -var resetHandlers = function(self, clearListeners) { - self.eventHandlers = {error:[], connect:[], close:[], end:[], timeout:[], parseError:[], message:[]}; - - // If we want to clear all the listeners - if(clearListeners && self.connection != null) { - var keys = Object.keys(self.eventHandlers); - // Remove all listeners - for(var i = 0; i < keys.length; i++) { - self.connection.removeAllListeners(keys[i]); - } - } -} - -// -// Handlers -// - -// Connect handler -var connectHandler = function(self) { - return function(data) { - // Set connected - self.connected = true; - // Now that we are connected set the socket timeout - self.connection.setTimeout(self.socketOptions.socketTimeoutMS != null ? self.socketOptions.socketTimeoutMS : self.socketOptions.timeout); - // Emit the connect event with no error - self.emit("connect", null, self); - } -} - -var createDataHandler = exports.Connection.createDataHandler = function(self) { - // We need to handle the parsing of the data - // and emit the messages when there is a complete one - return function(data) { - // Parse until we are done with the data - while(data.length > 0) { - // If we still have bytes to read on the current message - if(self.bytesRead > 0 && self.sizeOfMessage > 0) { - // Calculate the amount of remaining bytes - var remainingBytesToRead = self.sizeOfMessage - self.bytesRead; - // Check if the current chunk contains the rest of the message - if(remainingBytesToRead > data.length) { - // Copy the new data into the exiting buffer (should have been allocated when we know the message size) - data.copy(self.buffer, self.bytesRead); - // Adjust the number of bytes read so it point to the correct index in the buffer - self.bytesRead = self.bytesRead + data.length; - - // Reset state of buffer - data = new Buffer(0); - } else { - // Copy the missing part of the data into our current buffer - data.copy(self.buffer, self.bytesRead, 0, remainingBytesToRead); - // Slice the overflow into a new buffer that we will then re-parse - data = data.slice(remainingBytesToRead); - - // Emit current complete message - try { - var emitBuffer = self.buffer; - // Reset state of buffer - self.buffer = null; - self.sizeOfMessage = 0; - self.bytesRead = 0; - self.stubBuffer = null; - // Emit the buffer - self.emit("message", emitBuffer, self); - } catch(err) { - var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{ - sizeOfMessage:self.sizeOfMessage, - bytesRead:self.bytesRead, - stubBuffer:self.stubBuffer}}; - if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); - // We got a parse Error fire it off then keep going - self.emit("parseError", errorObject, self); - } - } - } else { - // Stub buffer is kept in case we don't get enough bytes to determine the - // size of the message (< 4 bytes) - if(self.stubBuffer != null && self.stubBuffer.length > 0) { - - // If we have enough bytes to determine the message size let's do it - if(self.stubBuffer.length + data.length > 4) { - // Prepad the data - var newData = new Buffer(self.stubBuffer.length + data.length); - self.stubBuffer.copy(newData, 0); - data.copy(newData, self.stubBuffer.length); - // Reassign for parsing - data = newData; - - // Reset state of buffer - self.buffer = null; - self.sizeOfMessage = 0; - self.bytesRead = 0; - self.stubBuffer = null; - - } else { - - // Add the the bytes to the stub buffer - var newStubBuffer = new Buffer(self.stubBuffer.length + data.length); - // Copy existing stub buffer - self.stubBuffer.copy(newStubBuffer, 0); - // Copy missing part of the data - data.copy(newStubBuffer, self.stubBuffer.length); - // Exit parsing loop - data = new Buffer(0); - } - } else { - if(data.length > 4) { - // Retrieve the message size - var sizeOfMessage = binaryutils.decodeUInt32(data, 0); - // If we have a negative sizeOfMessage emit error and return - if(sizeOfMessage < 0 || sizeOfMessage > self.maxBsonSize) { - var errorObject = {err:"socketHandler", trace:'', bin:self.buffer, parseState:{ - sizeOfMessage: sizeOfMessage, - bytesRead: self.bytesRead, - stubBuffer: self.stubBuffer}}; - if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); - // We got a parse Error fire it off then keep going - self.emit("parseError", errorObject, self); - return; - } - - // Ensure that the size of message is larger than 0 and less than the max allowed - if(sizeOfMessage > 4 && sizeOfMessage < self.maxBsonSize && sizeOfMessage > data.length) { - self.buffer = new Buffer(sizeOfMessage); - // Copy all the data into the buffer - data.copy(self.buffer, 0); - // Update bytes read - self.bytesRead = data.length; - // Update sizeOfMessage - self.sizeOfMessage = sizeOfMessage; - // Ensure stub buffer is null - self.stubBuffer = null; - // Exit parsing loop - data = new Buffer(0); - - } else if(sizeOfMessage > 4 && sizeOfMessage < self.maxBsonSize && sizeOfMessage == data.length) { - try { - var emitBuffer = data; - // Reset state of buffer - self.buffer = null; - self.sizeOfMessage = 0; - self.bytesRead = 0; - self.stubBuffer = null; - // Exit parsing loop - data = new Buffer(0); - // Emit the message - self.emit("message", emitBuffer, self); - } catch (err) { - var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{ - sizeOfMessage:self.sizeOfMessage, - bytesRead:self.bytesRead, - stubBuffer:self.stubBuffer}}; - if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); - // We got a parse Error fire it off then keep going - self.emit("parseError", errorObject, self); - } - } else if(sizeOfMessage <= 4 || sizeOfMessage > self.maxBsonSize) { - var errorObject = {err:"socketHandler", trace:null, bin:data, parseState:{ - sizeOfMessage:sizeOfMessage, - bytesRead:0, - buffer:null, - stubBuffer:null}}; - if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); - // We got a parse Error fire it off then keep going - self.emit("parseError", errorObject, self); - - // Clear out the state of the parser - self.buffer = null; - self.sizeOfMessage = 0; - self.bytesRead = 0; - self.stubBuffer = null; - // Exit parsing loop - data = new Buffer(0); - - } else { - try { - var emitBuffer = data.slice(0, sizeOfMessage); - // Reset state of buffer - self.buffer = null; - self.sizeOfMessage = 0; - self.bytesRead = 0; - self.stubBuffer = null; - // Copy rest of message - data = data.slice(sizeOfMessage); - // Emit the message - self.emit("message", emitBuffer, self); - } catch (err) { - var errorObject = {err:"socketHandler", trace:err, bin:self.buffer, parseState:{ - sizeOfMessage:sizeOfMessage, - bytesRead:self.bytesRead, - stubBuffer:self.stubBuffer}}; - if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject); - // We got a parse Error fire it off then keep going - self.emit("parseError", errorObject, self); - } - - } - } else { - // Create a buffer that contains the space for the non-complete message - self.stubBuffer = new Buffer(data.length) - // Copy the data to the stub buffer - data.copy(self.stubBuffer, 0); - // Exit parsing loop - data = new Buffer(0); - } - } - } - } - } -} - -var endHandler = function(self) { - return function() { - // Set connected to false - self.connected = false; - // Emit end event - self.emit("end", {err: 'connection received Fin packet from [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); - } -} - -var timeoutHandler = function(self) { - return function() { - // Set connected to false - self.connected = false; - // Emit timeout event - self.emit("timeout", {err: 'connection to [' + self.socketOptions.host + ':' + self.socketOptions.port + '] timed out'}, self); - } -} - -var drainHandler = function(self) { - return function() { - } -} - -var errorHandler = function(self) { - return function(err) { - self.connection.destroy(); - // Set connected to false - self.connected = false; - // Emit error - self.emit("error", {err: 'failed to connect to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); - } -} - -var closeHandler = function(self) { - return function(hadError) { - // If we have an error during the connection phase - if(hadError && !self.connected) { - // Set disconnected - self.connected = false; - // Emit error - self.emit("error", {err: 'failed to connect to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); - } else { - // Set disconnected - self.connected = false; - // Emit close - self.emit("close", {err: 'connection closed to [' + self.socketOptions.host + ':' + self.socketOptions.port + ']'}, self); - } - } -} - -// Some basic defaults -Connection.DEFAULT_PORT = 27017; - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js deleted file mode 100644 index 94cf754..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js +++ /dev/null @@ -1,294 +0,0 @@ -var utils = require('./connection_utils'), - inherits = require('util').inherits, - net = require('net'), - timers = require('timers'), - EventEmitter = require('events').EventEmitter, - inherits = require('util').inherits, - MongoReply = require("../responses/mongo_reply").MongoReply, - Connection = require("./connection").Connection; - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; -processor = process.nextTick - -var ConnectionPool = exports.ConnectionPool = function(host, port, poolSize, bson, socketOptions) { - if(typeof host !== 'string') { - throw new Error("host must be specified [" + host + "]"); - } - - // Set up event emitter - EventEmitter.call(this); - - // Keep all options for the socket in a specific collection allowing the user to specify the - // Wished upon socket connection parameters - this.socketOptions = typeof socketOptions === 'object' ? socketOptions : {}; - this.socketOptions.host = host; - this.socketOptions.port = port; - this.socketOptions.domainSocket = false; - this.bson = bson; - // PoolSize is always + 1 for special reserved "measurment" socket (like ping, stats etc) - this.poolSize = poolSize; - this.minPoolSize = Math.floor(this.poolSize / 2) + 1; - - // Check if the host is a socket - if(host.match(/^\//)) { - this.socketOptions.domainSocket = true; - } else if(typeof port === 'string') { - try { - port = parseInt(port, 10); - } catch(err) { - new Error("port must be specified or valid integer[" + port + "]"); - } - } else if(typeof port !== 'number') { - throw new Error("port must be specified [" + port + "]"); - } - - // Set default settings for the socket options - utils.setIntegerParameter(this.socketOptions, 'timeout', 0); - // Delay before writing out the data to the server - utils.setBooleanParameter(this.socketOptions, 'noDelay', true); - // Delay before writing out the data to the server - utils.setIntegerParameter(this.socketOptions, 'keepAlive', 0); - // Set the encoding of the data read, default is binary == null - utils.setStringParameter(this.socketOptions, 'encoding', null); - // Allows you to set a throttling bufferSize if you need to stop overflows - utils.setIntegerParameter(this.socketOptions, 'bufferSize', 0); - - // Internal structures - this.openConnections = []; - // Assign connection id's - this.connectionId = 0; - - // Current index for selection of pool connection - this.currentConnectionIndex = 0; - // The pool state - this._poolState = 'disconnected'; - // timeout control - this._timeout = false; - // Time to wait between connections for the pool - this._timeToWait = 10; -} - -inherits(ConnectionPool, EventEmitter); - -ConnectionPool.prototype.setMaxBsonSize = function(maxBsonSize) { - if(maxBsonSize == null){ - maxBsonSize = Connection.DEFAULT_MAX_BSON_SIZE; - } - - for(var i = 0; i < this.openConnections.length; i++) { - this.openConnections[i].maxBsonSize = maxBsonSize; - } -} - -ConnectionPool.prototype.setMaxMessageSizeBytes = function(maxMessageSizeBytes) { - if(maxMessageSizeBytes == null){ - maxMessageSizeBytes = Connection.DEFAULT_MAX_MESSAGE_SIZE; - } - - for(var i = 0; i < this.openConnections.length; i++) { - this.openConnections[i].maxMessageSizeBytes = maxMessageSizeBytes; - } -} - -// Start a function -var _connect = function(_self) { - // return new function() { - // Create a new connection instance - var connection = new Connection(_self.connectionId++, _self.socketOptions); - // Set logger on pool - connection.logger = _self.logger; - // Connect handler - connection.on("connect", function(err, connection) { - // Add connection to list of open connections - _self.openConnections.push(connection); - // If the number of open connections is equal to the poolSize signal ready pool - if(_self.openConnections.length === _self.poolSize && _self._poolState !== 'disconnected') { - // Set connected - _self._poolState = 'connected'; - // Emit pool ready - _self.emit("poolReady"); - } else if(_self.openConnections.length < _self.poolSize) { - // Wait a little bit of time to let the close event happen if the server closes the connection - // so we don't leave hanging connections around - if(typeof _self._timeToWait == 'number') { - setTimeout(function() { - // If we are still connecting (no close events fired in between start another connection) - if(_self._poolState == 'connecting') { - _connect(_self); - } - }, _self._timeToWait); - } else { - processor(function() { - // If we are still connecting (no close events fired in between start another connection) - if(_self._poolState == 'connecting') { - _connect(_self); - } - }); - } - } - }); - - var numberOfErrors = 0 - - // Error handler - connection.on("error", function(err, connection, error_options) { - numberOfErrors++; - // If we are already disconnected ignore the event - if(_self._poolState != 'disconnected' && _self.listeners("error").length > 0) { - _self.emit("error", err, connection, error_options); - } - - // Close the connection - connection.close(); - // Set pool as disconnected - _self._poolState = 'disconnected'; - // Stop the pool - _self.stop(); - }); - - // Close handler - connection.on("close", function() { - // If we are already disconnected ignore the event - if(_self._poolState !== 'disconnected' && _self.listeners("close").length > 0) { - _self.emit("close"); - } - - // Set disconnected - _self._poolState = 'disconnected'; - // Stop - _self.stop(); - }); - - // Timeout handler - connection.on("timeout", function(err, connection) { - // If we are already disconnected ignore the event - if(_self._poolState !== 'disconnected' && _self.listeners("timeout").length > 0) { - _self.emit("timeout", err); - } - - // Close the connection - connection.close(); - // Set disconnected - _self._poolState = 'disconnected'; - _self.stop(); - }); - - // Parse error, needs a complete shutdown of the pool - connection.on("parseError", function() { - // If we are already disconnected ignore the event - if(_self._poolState !== 'disconnected' && _self.listeners("parseError").length > 0) { - _self.emit("parseError", new Error("parseError occured")); - } - - // Set disconnected - _self._poolState = 'disconnected'; - _self.stop(); - }); - - connection.on("message", function(message) { - _self.emit("message", message); - }); - - // Start connection in the next tick - connection.start(); - // }(); -} - - -// Start method, will throw error if no listeners are available -// Pass in an instance of the listener that contains the api for -// finding callbacks for a given message etc. -ConnectionPool.prototype.start = function() { - var markerDate = new Date().getTime(); - var self = this; - - if(this.listeners("poolReady").length == 0) { - throw "pool must have at least one listener ready that responds to the [poolReady] event"; - } - - // Set pool state to connecting - this._poolState = 'connecting'; - this._timeout = false; - - _connect(self); -} - -// Restart a connection pool (on a close the pool might be in a wrong state) -ConnectionPool.prototype.restart = function() { - // Close all connections - this.stop(false); - // Now restart the pool - this.start(); -} - -// Stop the connections in the pool -ConnectionPool.prototype.stop = function(removeListeners) { - removeListeners = removeListeners == null ? true : removeListeners; - // Set disconnected - this._poolState = 'disconnected'; - - // Clear all listeners if specified - if(removeListeners) { - this.removeAllEventListeners(); - } - - // Close all connections - for(var i = 0; i < this.openConnections.length; i++) { - this.openConnections[i].close(); - } - - // Clean up - this.openConnections = []; -} - -// Check the status of the connection -ConnectionPool.prototype.isConnected = function() { - // return this._poolState === 'connected'; - return this.openConnections.length > 0 && this.openConnections[0].isConnected(); -} - -// Checkout a connection from the pool for usage, or grab a specific pool instance -ConnectionPool.prototype.checkoutConnection = function(id) { - var index = (this.currentConnectionIndex++ % (this.openConnections.length)); - var connection = this.openConnections[index]; - return connection; -} - -ConnectionPool.prototype.getAllConnections = function() { - return this.openConnections; -} - -// Remove all non-needed event listeners -ConnectionPool.prototype.removeAllEventListeners = function() { - this.removeAllListeners("close"); - this.removeAllListeners("error"); - this.removeAllListeners("timeout"); - this.removeAllListeners("connect"); - this.removeAllListeners("end"); - this.removeAllListeners("parseError"); - this.removeAllListeners("message"); - this.removeAllListeners("poolReady"); -} - - - - - - - - - - - - - - - - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js deleted file mode 100644 index 5910924..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_utils.js +++ /dev/null @@ -1,23 +0,0 @@ -exports.setIntegerParameter = function(object, field, defaultValue) { - if(object[field] == null) { - object[field] = defaultValue; - } else if(typeof object[field] !== "number" && object[field] !== parseInt(object[field], 10)) { - throw "object field [" + field + "] must be a numeric integer value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]"; - } -} - -exports.setBooleanParameter = function(object, field, defaultValue) { - if(object[field] == null) { - object[field] = defaultValue; - } else if(typeof object[field] !== "boolean") { - throw "object field [" + field + "] must be a boolean value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]"; - } -} - -exports.setStringParameter = function(object, field, defaultValue) { - if(object[field] == null) { - object[field] = defaultValue; - } else if(typeof object[field] !== "string") { - throw "object field [" + field + "] must be a string value, attempted to set to [" + object[field] + "] type of [" + typeof object[field] + "]"; - } -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js deleted file mode 100644 index f0617ab..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/mongos.js +++ /dev/null @@ -1,471 +0,0 @@ -var ReadPreference = require('./read_preference').ReadPreference - , Base = require('./base').Base - , Server = require('./server').Server - , inherits = require('util').inherits; - -/** - * Mongos constructor provides a connection to a mongos proxy including failover to additional servers - * - * Options - * - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number)) - * - **ha** {Boolean, default:true}, turn on high availability, attempts to reconnect to down proxies - * - **haInterval** {Number, default:2000}, time between each replicaset status check. - * - * @class Represents a Mongos connection with failover to backup proxies - * @param {Array} list of mongos server objects - * @param {Object} [options] additional options for the mongos connection - */ -var Mongos = function Mongos(servers, options) { - // Set up basic - if(!(this instanceof Mongos)) - return new Mongos(servers, options); - - // Set up event emitter - Base.call(this); - - // Throw error on wrong setup - if(servers == null || !Array.isArray(servers) || servers.length == 0) - throw new Error("At least one mongos proxy must be in the array"); - - // Ensure we have at least an empty options object - this.options = options == null ? {} : options; - // Set default connection pool options - this.socketOptions = this.options.socketOptions != null ? this.options.socketOptions : {}; - // Enabled ha - this.haEnabled = this.options['ha'] == null ? true : this.options['ha']; - this._haInProgress = false; - // How often are we checking for new servers in the replicaset - this.mongosStatusCheckInterval = this.options['haInterval'] == null ? 1000 : this.options['haInterval']; - // Save all the server connections - this.servers = servers; - // Servers we need to attempt reconnect with - this.downServers = []; - // Just contains the current lowest ping time and server - this.lowestPingTimeServer = null; - this.lowestPingTime = 0; - - // Connection timeout - this._connectTimeoutMS = this.socketOptions.connectTimeoutMS - ? this.socketOptions.connectTimeoutMS - : 1000; - - // Add options to servers - for(var i = 0; i < this.servers.length; i++) { - var server = this.servers[i]; - server._callBackStore = this._callBackStore; - server.auto_reconnect = false; - // Default empty socket options object - var socketOptions = {host: server.host, port: server.port}; - // If a socket option object exists clone it - if(this.socketOptions != null) { - var keys = Object.keys(this.socketOptions); - for(var k = 0; k < keys.length;k++) socketOptions[keys[i]] = this.socketOptions[keys[i]]; - } - - // Set socket options - server.socketOptions = socketOptions; - } -} - -/** - * @ignore - */ -inherits(Mongos, Base); - -/** - * @ignore - */ -Mongos.prototype.isMongos = function() { - return true; -} - -/** - * @ignore - */ -Mongos.prototype.connect = function(db, options, callback) { - if('function' === typeof options) callback = options, options = {}; - if(options == null) options = {}; - if(!('function' === typeof callback)) callback = null; - var self = this; - - // Keep reference to parent - this.db = db; - // Set server state to connecting - this._serverState = 'connecting'; - // Number of total servers that need to initialized (known servers) - this._numberOfServersLeftToInitialize = this.servers.length; - // Connect handler - var connectHandler = function(_server) { - return function(err, result) { - self._numberOfServersLeftToInitialize = self._numberOfServersLeftToInitialize - 1; - - if(self._numberOfServersLeftToInitialize == 0) { - // Start ha function if it exists - if(self.haEnabled) { - // Setup the ha process - if(self._replicasetTimeoutId != null) clearInterval(self._replicasetTimeoutId); - self._replicasetTimeoutId = setInterval(self.mongosCheckFunction, self.mongosStatusCheckInterval); - } - - // Set the mongos to connected - self._serverState = "connected"; - // Emit the open event - self.db.emit("open", null, self.db); - // Callback - callback(null, self.db); - } - } - }; - - // Error handler - var errorOrCloseHandler = function(_server) { - return function(err, result) { - var validServers = []; - // Execute all the callbacks with errors - self.__executeAllCallbacksWithError(err); - - // // We are going to process all the non-replied to callbacks timing out any that has gone over the socket time out settings - // if(typeof self.socketOptions.socketTimeoutMS == 'number' && self.socketOptions.socketTimeoutMS > 0) - // self._timeoutCalls(self.socketOptions.socketTimeoutMS * 1.1); - - // Check if we have the server - var found = false; - // Save the down server if it does not already exists - for(var i = 0; i < self.downServers.length; i++) { - if(self.downServers[i].host == _server.host && self.downServers[i].port == _server.port) { - found = true; - break; - } - } - - if(!found) - self.downServers.push(_server); - - // Remove the current server from the list - for(var i = 0; i < self.servers.length; i++) { - if(!(self.servers[i].host == _server.host && self.servers[i].port == _server.port) && self.servers[i].isConnected()) { - validServers.push(self.servers[i]); - } - } - - // Set current list of servers - self.servers = validServers; - - // Emit close across all the attached db instances - if(self.servers.length == 0) { - self._dbStore.emit("close", new Error("mongos disconnected, no valid proxies contactable over tcp"), null, true); - } - } - } - - // Mongo function - this.mongosCheckFunction = function() { - if(self._haInProgress) return; - // If all servers are down we are done - if(self.servers.length == 0) return; - - // Check that at least one server is available - var alldown = true; - for(var i = 0; i < self.servers.length; i++) { - if(self.servers[i].isConnected()) { - alldown = false; - break; - } - } - - // All servers are down - if(alldown) return; - - // Set as not waiting for check event - self._haInProgress = true; - // Check downed servers - if(self.downServers.length > 0) { - var numberOfServersLeft = self.downServers.length; - - // Iterate over all the downed servers - for(var i = 0; i < self.downServers.length; i++) { - // Pop a downed server - var downServer = self.downServers.pop(); - - // Set up the connection options for a Mongos - var options = { - auto_reconnect: false, - returnIsMasterResults: true, - slaveOk: true, - poolSize: downServer.poolSize, - socketOptions: { - connectTimeoutMS: self._connectTimeoutMS, - socketTimeoutMS: self._socketTimeoutMS - } - } - - // Create a new server object - var newServer = new Server(downServer.host, downServer.port, options); - // Setup the connection function - var connectFunction = function(_db, _server, _options, _callback) { - return function() { - // Attempt to connect - _server.connect(_db, _options, function(err, result) { - numberOfServersLeft = numberOfServersLeft - 1; - - if(err) { - return _callback(err, _server); - } else { - // Set the new server settings - _server._callBackStore = self._callBackStore; - - // Add server event handlers - _server.on("close", errorOrCloseHandler(_server)); - _server.on("timeout", errorOrCloseHandler(_server)); - _server.on("error", errorOrCloseHandler(_server)); - - // Get a read connection - var _connection = _server.checkoutReader(); - // Get the start time - var startTime = new Date().getTime(); - - // Execute ping command to mark each server with the expected times - self.db.command({ping:1} - , {failFast:true, connection:_connection}, function(err, result) { - // Get the start time - var endTime = new Date().getTime(); - // Mark the server with the ping time - _server.runtimeStats['pingMs'] = endTime - startTime; - // Sort the servers on runtime so the first server always is the closest one - self.servers.sort(function(a, b) { - return a.runtimeStats['pingMs'] > b.runtimeStats['pingMs']; - }); - - // Callback - return _callback(null, _server); - }); - } - }); - } - } - - // Attempt to connect to the database - connectFunction(self.db, newServer, options, function(err, _server) { - // If we have an error - if(err) { - self.downServers.push(_server); - } - - // Connection function - var connectionFunction = function(_auth, _connection, _callback) { - var pending = _auth.length(); - - for(var j = 0; j < pending; j++) { - // Get the auth object - var _auth = _auth.get(j); - // Unpack the parameter - var username = _auth.username; - var password = _auth.password; - var options = { - authMechanism: _auth.authMechanism - , authSource: _auth.authdb - , connection: _connection - }; - - // Hold any error - var _error = null; - // Authenticate against the credentials - self.db.authenticate(username, password, options, function(err, result) { - _error = err != null ? err : _error; - // Adjust the pending authentication - pending = pending - 1; - // Finished up - if(pending == 0) _callback(_error ? _error : null, _error ? false : true); - }); - } - } - - // Run auths against the connections - if(self.auth.length() > 0) { - var connections = _server.allRawConnections(); - var pendingAuthConn = connections.length; - - // No connections we are done - if(connections.length == 0) { - // Set ha done - if(numberOfServersLeft == 0) { - self._haInProgress = false; - } - } - - // Final error object - var finalError = null; - // Go over all the connections - for(var j = 0; j < connections.length; j++) { - - // Execute against all the connections - connectionFunction(self.auth, connections[j], function(err, result) { - // Pending authentication - pendingAuthConn = pendingAuthConn - 1 ; - - // Save error if any - finalError = err ? err : finalError; - - // If we are done let's finish up - if(pendingAuthConn == 0) { - // Set ha done - if(numberOfServersLeft == 0) { - self._haInProgress = false; - } - - if(finalError) { - return self.downServers.push(_server); - } - - // Push to list of valid server - self.servers.push(_server); - } - }); - } - } else { - self.servers.push(_server); - // Set ha done - if(numberOfServersLeft == 0) { - self._haInProgress = false; - } - } - })(); - } - } else { - self._haInProgress = false; - } - } - - // Connect all the server instances - for(var i = 0; i < this.servers.length; i++) { - // Get the connection - var server = this.servers[i]; - server.mongosInstance = this; - // Add server event handlers - server.on("close", errorOrCloseHandler(server)); - server.on("timeout", errorOrCloseHandler(server)); - server.on("error", errorOrCloseHandler(server)); - - // Configuration - var options = { - slaveOk: true, - poolSize: server.poolSize, - socketOptions: { connectTimeoutMS: self._connectTimeoutMS }, - returnIsMasterResults: true - } - - // Connect the instance - server.connect(self.db, options, connectHandler(server)); - } -} - -/** - * @ignore - * Just return the currently picked active connection - */ -Mongos.prototype.allServerInstances = function() { - return this.servers; -} - -/** - * Always ourselves - * @ignore - */ -Mongos.prototype.setReadPreference = function() {} - -/** - * @ignore - */ -Mongos.prototype.allRawConnections = function() { - // Neeed to build a complete list of all raw connections, start with master server - var allConnections = []; - // Add all connections - for(var i = 0; i < this.servers.length; i++) { - allConnections = allConnections.concat(this.servers[i].allRawConnections()); - } - - // Return all the conections - return allConnections; -} - -/** - * @ignore - */ -Mongos.prototype.isConnected = function() { - return this._serverState == "connected"; -} - -/** - * @ignore - */ -Mongos.prototype.canWrite = Mongos.prototype.isConnected; - -/** - * @ignore - */ -Mongos.prototype.canRead = Mongos.prototype.isConnected; - -/** - * @ignore - */ -Mongos.prototype.isDestroyed = function() { - return this._serverState == 'destroyed'; -} - -/** - * @ignore - */ -Mongos.prototype.checkoutWriter = function() { - if(this.servers.length == 0) return null; - return this.servers[0].checkoutWriter(); -} - -/** - * @ignore - */ -Mongos.prototype.checkoutReader = function(read) { - // If we have a read preference object unpack it - if(read != null && typeof read == 'object' && read['_type'] == 'ReadPreference') { - // Validate if the object is using a valid mode - if(!read.isValid()) throw new Error("Illegal readPreference mode specified, " + read.mode); - } else if(!ReadPreference.isValid(read)) { - throw new Error("Illegal readPreference mode specified, " + read); - } - - if(this.servers.length == 0) return null; - return this.servers[0].checkoutWriter(); -} - -/** - * @ignore - */ -Mongos.prototype.close = function(callback) { - var self = this; - // Set server status as disconnected - this._serverState = 'destroyed'; - // Number of connections to close - var numberOfConnectionsToClose = self.servers.length; - // If we have a ha process running kill it - if(self._replicasetTimeoutId != null) clearInterval(self._replicasetTimeoutId); - self._replicasetTimeoutId = null; - // Close all proxy connections - for(var i = 0; i < self.servers.length; i++) { - self.servers[i].close(function(err, result) { - numberOfConnectionsToClose = numberOfConnectionsToClose - 1; - // Callback if we have one defined - if(numberOfConnectionsToClose == 0 && typeof callback == 'function') { - callback(null); - } - }); - } -} - -/** - * @ignore - * Return the used state - */ -Mongos.prototype._isUsed = function() { - return this._used; -} - -exports.Mongos = Mongos; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js deleted file mode 100644 index 6845171..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/read_preference.js +++ /dev/null @@ -1,67 +0,0 @@ -/** - * A class representation of the Read Preference. - * - * Read Preferences - * - **ReadPreference.PRIMARY**, Read from primary only. All operations produce an error (throw an exception where applicable) if primary is unavailable. Cannot be combined with tags (This is the default.). - * - **ReadPreference.PRIMARY_PREFERRED**, Read from primary if available, otherwise a secondary. - * - **ReadPreference.SECONDARY**, Read from secondary if available, otherwise error. - * - **ReadPreference.SECONDARY_PREFERRED**, Read from a secondary if available, otherwise read from the primary. - * - **ReadPreference.NEAREST**, All modes read from among the nearest candidates, but unlike other modes, NEAREST will include both the primary and all secondaries in the random selection. - * - * @class Represents a Read Preference. - * @param {String} the read preference type - * @param {Object} tags - * @return {ReadPreference} - */ -var ReadPreference = function(mode, tags) { - if(!(this instanceof ReadPreference)) - return new ReadPreference(mode, tags); - this._type = 'ReadPreference'; - this.mode = mode; - this.tags = tags; -} - -/** - * @ignore - */ -ReadPreference.isValid = function(_mode) { - return (_mode == ReadPreference.PRIMARY || _mode == ReadPreference.PRIMARY_PREFERRED - || _mode == ReadPreference.SECONDARY || _mode == ReadPreference.SECONDARY_PREFERRED - || _mode == ReadPreference.NEAREST - || _mode == true || _mode == false); -} - -/** - * @ignore - */ -ReadPreference.prototype.isValid = function(mode) { - var _mode = typeof mode == 'string' ? mode : this.mode; - return ReadPreference.isValid(_mode); -} - -/** - * @ignore - */ -ReadPreference.prototype.toObject = function() { - var object = {mode:this.mode}; - - if(this.tags != null) { - object['tags'] = this.tags; - } - - return object; -} - -/** - * @ignore - */ -ReadPreference.PRIMARY = 'primary'; -ReadPreference.PRIMARY_PREFERRED = 'primaryPreferred'; -ReadPreference.SECONDARY = 'secondary'; -ReadPreference.SECONDARY_PREFERRED = 'secondaryPreferred'; -ReadPreference.NEAREST = 'nearest' - -/** - * @ignore - */ -exports.ReadPreference = ReadPreference; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js deleted file mode 100644 index c899712..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/ha.js +++ /dev/null @@ -1,392 +0,0 @@ -var DbCommand = require('../../commands/db_command').DbCommand - , format = require('util').format; - -var HighAvailabilityProcess = function(replset, options) { - this.replset = replset; - this.options = options; - this.server = null; - this.state = HighAvailabilityProcess.INIT; - this.selectedIndex = 0; -} - -HighAvailabilityProcess.INIT = 'init'; -HighAvailabilityProcess.RUNNING = 'running'; -HighAvailabilityProcess.STOPPED = 'stopped'; - -HighAvailabilityProcess.prototype.start = function() { - var self = this; - if(this.replset._state - && Object.keys(this.replset._state.addresses).length == 0) { - if(this.server) this.server.close(); - this.state = HighAvailabilityProcess.STOPPED; - return; - } - - if(this.server) this.server.close(); - // Start the running - this._haProcessInProcess = false; - this.state = HighAvailabilityProcess.RUNNING; - - // Get all possible reader servers - var candidate_servers = this.replset._state.getAllReadServers(); - if(candidate_servers.length == 0) { - return; - } - - // Select a candidate server for the connection - var server = candidate_servers[this.selectedIndex % candidate_servers.length]; - this.selectedIndex = this.selectedIndex + 1; - - // Unpack connection options - var connectTimeoutMS = self.options.connectTimeoutMS || 10000; - var socketTimeoutMS = self.options.socketTimeoutMS || 30000; - - // Just ensure we don't have a full cycle dependency - var Db = require('../../db').Db - var Server = require('../server').Server; - - // Set up a new server instance - var newServer = new Server(server.host, server.port, { - auto_reconnect: false - , returnIsMasterResults: true - , poolSize: 1 - , socketOptions: { - connectTimeoutMS: connectTimeoutMS, - socketTimeoutMS: socketTimeoutMS, - keepAlive: 100 - } - , ssl: this.options.ssl - , sslValidate: this.options.sslValidate - , sslCA: this.options.sslCA - , sslCert: this.options.sslCert - , sslKey: this.options.sslKey - , sslPass: this.options.sslPass - }); - - // Create new dummy db for app - self.db = new Db('local', newServer, {w:1}); - - // Set up the event listeners - newServer.once("error", _handle(this, newServer)); - newServer.once("close", _handle(this, newServer)); - newServer.once("timeout", _handle(this, newServer)); - newServer.name = format("%s:%s", server.host, server.port); - - // Let's attempt a connection over here - newServer.connect(self.db, function(err, result, _server) { - if(self.state == HighAvailabilityProcess.STOPPED) { - _server.close(); - } - - if(err) { - // Close the server - _server.close(); - // Check if we can even do HA (is there anything running) - if(Object.keys(self.replset._state.addresses).length == 0) { - return; - } - - // Let's boot the ha timeout settings - setTimeout(function() { - self.start(); - }, self.options.haInterval); - } else { - self.server = _server; - // Let's boot the ha timeout settings - setTimeout(_timeoutHandle(self), self.options.haInterval); - } - }); -} - -HighAvailabilityProcess.prototype.stop = function() { - this.state = HighAvailabilityProcess.STOPPED; - if(this.server) this.server.close(); -} - -var _timeoutHandle = function(self) { - return function() { - if(self.state == HighAvailabilityProcess.STOPPED) { - // Stop all server instances - for(var name in self.replset._state.addresses) { - self.replset._state.addresses[name].close(); - delete self.replset._state.addresses[name]; - } - - // Finished pinging - return; - } - - // If the server is connected - if(self.server.isConnected() && !self._haProcessInProcess) { - // Start HA process - self._haProcessInProcess = true; - // Execute is master command - self.db._executeQueryCommand(DbCommand.createIsMasterCommand(self.db), - {failFast:true, connection: self.server.checkoutReader()} - , function(err, res) { - if(err) { - self.server.close(); - return setTimeout(_timeoutHandle(self), self.options.haInterval); - } - - // Master document - var master = res.documents[0]; - var hosts = master.hosts || []; - var reconnect_servers = []; - var state = self.replset._state; - - // For all the hosts let's check that we have connections - for(var i = 0; i < hosts.length; i++) { - var host = hosts[i]; - - // Check if we need to reconnect to a server - if(state.addresses[host] == null) { - reconnect_servers.push(host); - } else if(state.addresses[host] && !state.addresses[host].isConnected()) { - state.addresses[host].close(); - reconnect_servers.push(host); - } - - if((master.primary && state.master == null) - || (master.primary && state.master.name != master.primary)) { - - // Locate the primary and set it - if(state.addresses[master.primary]) { - if(state.master) state.master.close(); - delete state.secondaries[master.primary]; - state.master = state.addresses[master.primary]; - } - - // Set up the changes - if(state.master != null && state.master.isMasterDoc != null) { - state.master.isMasterDoc.ismaster = true; - state.master.isMasterDoc.secondary = false; - } else if(state.master != null) { - state.master.isMasterDoc = master; - state.master.isMasterDoc.ismaster = true; - state.master.isMasterDoc.secondary = false; - } - - // Execute any waiting writes - self.replset._commandsStore.execute_writes(); - } - } - - // Let's reconnect to any server needed - if(reconnect_servers.length > 0) { - _reconnect_servers(self, reconnect_servers); - } else { - self._haProcessInProcess = false - return setTimeout(_timeoutHandle(self), self.options.haInterval); - } - }); - } else if(!self.server.isConnected()) { - setTimeout(function() { - return self.start(); - }, self.options.haInterval); - } else { - setTimeout(_timeoutHandle(self), self.options.haInterval); - } - } -} - -var _reconnect_servers = function(self, reconnect_servers) { - if(reconnect_servers.length == 0) { - self._haProcessInProcess = false - return setTimeout(_timeoutHandle(self), self.options.haInterval); - } - - // Unpack connection options - var connectTimeoutMS = self.options.connectTimeoutMS || 10000; - var socketTimeoutMS = self.options.socketTimeoutMS || 30000; - - // Server class - var Db = require('../../db').Db - var Server = require('../server').Server; - // Get the host - var host = reconnect_servers.shift(); - // Split it up - var _host = host.split(":")[0]; - var _port = parseInt(host.split(":")[1], 10); - - // Set up a new server instance - var newServer = new Server(_host, _port, { - auto_reconnect: false - , returnIsMasterResults: true - , poolSize: self.options.poolSize - , socketOptions: { - connectTimeoutMS: connectTimeoutMS, - socketTimeoutMS: socketTimeoutMS - } - , ssl: self.options.ssl - , sslValidate: self.options.sslValidate - , sslCA: self.options.sslCA - , sslCert: self.options.sslCert - , sslKey: self.options.sslKey - , sslPass: self.options.sslPass - }); - - // Create new dummy db for app - var db = new Db('local', newServer, {w:1}); - var state = self.replset._state; - - // Set up the event listeners - newServer.once("error", _repl_set_handler("error", self.replset, newServer)); - newServer.once("close", _repl_set_handler("close", self.replset, newServer)); - newServer.once("timeout", _repl_set_handler("timeout", self.replset, newServer)); - - // Set shared state - newServer.name = host; - newServer._callBackStore = self.replset._callBackStore; - newServer.replicasetInstance = self.replset; - newServer.enableRecordQueryStats(self.replset.recordQueryStats); - - // Let's attempt a connection over here - newServer.connect(db, function(err, result, _server) { - if(self.state == HighAvailabilityProcess.STOPPED) { - _server.close(); - } - - // If we connected let's check what kind of server we have - if(!err) { - _apply_auths(self, db, _server, function(err, result) { - if(err) { - _server.close(); - // Process the next server - return setTimeout(function() { - _reconnect_servers(self, reconnect_servers); - }, self.options.haInterval); - } - var doc = _server.isMasterDoc; - // Fire error on any unknown callbacks for this server - self.replset.__executeAllServerSpecificErrorCallbacks(_server.socketOptions.host, _server.socketOptions.port, err); - - if(doc.ismaster) { - if(state.secondaries[doc.me]) { - delete state.secondaries[doc.me]; - } - - // Override any server in list of addresses - state.addresses[doc.me] = _server; - // Set server as master - state.master = _server; - // Execute any waiting writes - self.replset._commandsStore.execute_writes(); - } else if(doc.secondary) { - state.secondaries[doc.me] = _server; - // Override any server in list of addresses - state.addresses[doc.me] = _server; - // Execute any waiting reads - self.replset._commandsStore.execute_queries(); - } else { - _server.close(); - } - - // Set any tags on the instance server - _server.name = doc.me; - _server.tags = doc.tags; - // Process the next server - setTimeout(function() { - _reconnect_servers(self, reconnect_servers); - }, self.options.haInterval); - }); - } else { - _server.close(); - self.replset.__executeAllServerSpecificErrorCallbacks(_server.socketOptions.host, _server.socketOptions.port, err); - - setTimeout(function() { - _reconnect_servers(self, reconnect_servers); - }, self.options.haInterval); - } - }); -} - -var _apply_auths = function(self, _db, _server, _callback) { - if(self.replset.auth.length() == 0) return _callback(null); - // Apply any authentication needed - if(self.replset.auth.length() > 0) { - var pending = self.replset.auth.length(); - var connections = _server.allRawConnections(); - var pendingAuthConn = connections.length; - - // Connection function - var connectionFunction = function(_auth, _connection, __callback) { - var pending = _auth.length(); - - for(var j = 0; j < pending; j++) { - // Get the auth object - var _auth = _auth.get(j); - // Unpack the parameter - var username = _auth.username; - var password = _auth.password; - var options = { - authMechanism: _auth.authMechanism - , authSource: _auth.authdb - , connection: _connection - }; - - // Hold any error - var _error = null; - - // Authenticate against the credentials - _db.authenticate(username, password, options, function(err, result) { - _error = err != null ? err : _error; - // Adjust the pending authentication - pending = pending - 1; - // Finished up - if(pending == 0) __callback(_error ? _error : null, _error ? false : true); - }); - } - } - - // Final error object - var finalError = null; - // Iterate over all the connections - for(var i = 0; i < connections.length; i++) { - connectionFunction(self.replset.auth, connections[i], function(err, result) { - // Pending authentication - pendingAuthConn = pendingAuthConn - 1 ; - - // Save error if any - finalError = err ? err : finalError; - - // If we are done let's finish up - if(pendingAuthConn == 0) { - _callback(null); - } - }); - } - } -} - -var _handle = function(self, server) { - return function(err) { - server.close(); - } -} - -var _repl_set_handler = function(event, self, server) { - var ReplSet = require('./repl_set').ReplSet; - - return function(err, doc) { - server.close(); - - // The event happened to a primary - // Remove it from play - if(self._state.isPrimary(server)) { - self._state.master == null; - self._serverState = ReplSet.REPLSET_READ_ONLY; - } else if(self._state.isSecondary(server)) { - delete self._state.secondaries[server.name]; - } - - // Unpack variables - var host = server.socketOptions.host; - var port = server.socketOptions.port; - - // Fire error on any unknown callbacks - self.__executeAllServerSpecificErrorCallbacks(host, port, err); - } -} - -exports.HighAvailabilityProcess = HighAvailabilityProcess; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js deleted file mode 100644 index e0abc38..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/options.js +++ /dev/null @@ -1,125 +0,0 @@ -var PingStrategy = require('./strategies/ping_strategy').PingStrategy - , StatisticsStrategy = require('./strategies/statistics_strategy').StatisticsStrategy - , ReadPreference = require('../read_preference').ReadPreference; - -var Options = function(options) { - options = options || {}; - this._options = options; - this.ha = options.ha || true; - this.haInterval = options.haInterval || 2000; - this.reconnectWait = options.reconnectWait || 1000; - this.retries = options.retries || 30; - this.rs_name = options.rs_name; - this.socketOptions = options.socketOptions || {}; - this.readPreference = options.readPreference; - this.readSecondary = options.read_secondary; - this.poolSize = options.poolSize == null ? 5 : options.poolSize; - this.strategy = options.strategy || 'ping'; - this.secondaryAcceptableLatencyMS = options.secondaryAcceptableLatencyMS || 15; - this.connectArbiter = options.connectArbiter || false; - this.connectWithNoPrimary = options.connectWithNoPrimary || false; - this.logger = options.logger; - this.ssl = options.ssl || false; - this.sslValidate = options.sslValidate || false; - this.sslCA = options.sslCA; - this.sslCert = options.sslCert; - this.sslKey = options.sslKey; - this.sslPass = options.sslPass; -} - -Options.prototype.init = function() { - if(this.sslValidate && (!Array.isArray(this.sslCA) || this.sslCA.length == 0)) { - throw new Error("The driver expects an Array of CA certificates in the sslCA parameter when enabling sslValidate"); - } - - // Make sure strategy is one of the two allowed - if(this.strategy != null && (this.strategy != 'ping' && this.strategy != 'statistical' && this.strategy != 'none')) - throw new Error("Only ping or statistical strategies allowed"); - - if(this.strategy == null) this.strategy = 'ping'; - - // Set logger if strategy exists - if(this.strategyInstance) this.strategyInstance.logger = this.logger; - - // Unpack read Preference - var readPreference = this.readPreference; - // Validate correctness of Read preferences - if(readPreference != null) { - if(readPreference != ReadPreference.PRIMARY && readPreference != ReadPreference.PRIMARY_PREFERRED - && readPreference != ReadPreference.SECONDARY && readPreference != ReadPreference.SECONDARY_PREFERRED - && readPreference != ReadPreference.NEAREST && typeof readPreference != 'object' && readPreference['_type'] != 'ReadPreference') { - throw new Error("Illegal readPreference mode specified, " + readPreference); - } - - this.readPreference = readPreference; - } else { - this.readPreference = null; - } - - // Ensure read_secondary is set correctly - if(this.readSecondary != null) - this.readSecondary = this.readPreference == ReadPreference.PRIMARY - || this.readPreference == false - || this.readPreference == null ? false : true; - - // Ensure correct slave set - if(this.readSecondary) this.slaveOk = true; - - // Set up logger if any set - this.logger = this.logger != null - && (typeof this.logger.debug == 'function') - && (typeof this.logger.error == 'function') - && (typeof this.logger.debug == 'function') - ? this.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}}; - - // Connection timeout - this.connectTimeoutMS = this.socketOptions.connectTimeoutMS - ? this.socketOptions.connectTimeoutMS - : 1000; - - // Socket connection timeout - this.socketTimeoutMS = this.socketOptions.socketTimeoutMS - ? this.socketOptions.socketTimeoutMS - : 30000; -} - -Options.prototype.decorateAndClean = function(servers, callBackStore) { - var self = this; - - // var de duplicate list - var uniqueServers = {}; - // De-duplicate any servers in the seed list - for(var i = 0; i < servers.length; i++) { - var server = servers[i]; - // If server does not exist set it - if(uniqueServers[server.host + ":" + server.port] == null) { - uniqueServers[server.host + ":" + server.port] = server; - } - } - - // Let's set the deduplicated list of servers - var finalServers = []; - // Add the servers - for(var key in uniqueServers) { - finalServers.push(uniqueServers[key]); - } - - finalServers.forEach(function(server) { - // Ensure no server has reconnect on - server.options.auto_reconnect = false; - // Set up ssl options - server.ssl = self.ssl; - server.sslValidate = self.sslValidate; - server.sslCA = self.sslCA; - server.sslCert = self.sslCert; - server.sslKey = self.sslKey; - server.sslPass = self.sslPass; - server.poolSize = self.poolSize; - // Set callback store - server._callBackStore = callBackStore; - }); - - return finalServers; -} - -exports.Options = Options; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js deleted file mode 100644 index ebb6657..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set.js +++ /dev/null @@ -1,758 +0,0 @@ -var ReadPreference = require('../read_preference').ReadPreference - , DbCommand = require('../../commands/db_command').DbCommand - , inherits = require('util').inherits - , format = require('util').format - , timers = require('timers') - , Server = require('../server').Server - , utils = require('../../utils') - , PingStrategy = require('./strategies/ping_strategy').PingStrategy - , StatisticsStrategy = require('./strategies/statistics_strategy').StatisticsStrategy - , Options = require('./options').Options - , ReplSetState = require('./repl_set_state').ReplSetState - , HighAvailabilityProcess = require('./ha').HighAvailabilityProcess - , Base = require('../base').Base; - -const STATE_STARTING_PHASE_1 = 0; -const STATE_PRIMARY = 1; -const STATE_SECONDARY = 2; -const STATE_RECOVERING = 3; -const STATE_FATAL_ERROR = 4; -const STATE_STARTING_PHASE_2 = 5; -const STATE_UNKNOWN = 6; -const STATE_ARBITER = 7; -const STATE_DOWN = 8; -const STATE_ROLLBACK = 9; - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; - -/** - * ReplSet constructor provides replicaset functionality - * - * Options - * - **ha** {Boolean, default:true}, turn on high availability. - * - **haInterval** {Number, default:2000}, time between each replicaset status check. - * - **reconnectWait** {Number, default:1000}, time to wait in miliseconds before attempting reconnect. - * - **retries** {Number, default:30}, number of times to attempt a replicaset reconnect. - * - **rs_name** {String}, the name of the replicaset to connect to. - * - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number)) - * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). - * - **strategy** {String, default:'ping'}, selection strategy for reads choose between (ping, statistical and none, default is ping) - * - **secondaryAcceptableLatencyMS** {Number, default:15}, sets the range of servers to pick when using NEAREST (lowest ping ms + the latency fence, ex: range of 1 to (1 + 15) ms) - * - **connectWithNoPrimary** {Boolean, default:false}, sets if the driver should connect even if no primary is available - * - **connectArbiter** {Boolean, default:false}, sets if the driver should connect to arbiters or not. - * - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**. - * - **ssl** {Boolean, default:false}, use ssl connection (needs to have a mongod server with ssl support) - * - **sslValidate** {Boolean, default:false}, validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslCA** {Array, default:null}, Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslCert** {Buffer/String, default:null}, String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslKey** {Buffer/String, default:null}, String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslPass** {Buffer/String, default:null}, String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher) - * - * @class Represents a Replicaset Configuration - * @param {Array} list of server objects participating in the replicaset. - * @param {Object} [options] additional options for the replicaset connection. - */ -var ReplSet = exports.ReplSet = function(servers, options) { - // Set up basic - if(!(this instanceof ReplSet)) - return new ReplSet(servers, options); - - // Set up event emitter - Base.call(this); - - // Ensure we have a list of servers - if(!Array.isArray(servers)) throw Error("The parameter must be an array of servers and contain at least one server"); - // Ensure no Mongos's - for(var i = 0; i < servers.length; i++) { - if(!(servers[i] instanceof Server)) throw new Error("list of servers must be of type Server"); - } - - // Save the options - this.options = new Options(options); - // Ensure basic validation of options - this.options.init(); - - // Server state - this._serverState = ReplSet.REPLSET_DISCONNECTED; - // Add high availability process - this._haProcess = new HighAvailabilityProcess(this, this.options); - - - // Let's iterate over all the provided server objects and decorate them - this.servers = this.options.decorateAndClean(servers, this._callBackStore); - // Throw error if no seed servers - if(this.servers.length == 0) throw new Error("No valid seed servers in the array"); - - // Let's set up our strategy object for picking secondaries - if(this.options.strategy == 'ping') { - // Create a new instance - this.strategyInstance = new PingStrategy(this, this.options.secondaryAcceptableLatencyMS); - } else if(this.options.strategy == 'statistical') { - // Set strategy as statistical - this.strategyInstance = new StatisticsStrategy(this); - // Add enable query information - this.enableRecordQueryStats(true); - } - - // Set up a clean state - this._state = new ReplSetState(); - // Ensure up the server callbacks - for(var i = 0; i < this.servers.length; i++) { - this.servers[i]._callBackStore = this._callBackStore; - this.servers[i].name = format("%s:%s", this.servers[i].host, this.servers[i].port) - this.servers[i].replicasetInstance = this; - this.servers[i].options.auto_reconnect = false; - this.servers[i].inheritReplSetOptionsFrom(this); - } -} - -/** - * @ignore - */ -inherits(ReplSet, Base); - -// Replicaset states -ReplSet.REPLSET_CONNECTING = 'connecting'; -ReplSet.REPLSET_DISCONNECTED = 'disconnected'; -ReplSet.REPLSET_CONNECTED = 'connected'; -ReplSet.REPLSET_RECONNECTING = 'reconnecting'; -ReplSet.REPLSET_DESTROYED = 'destroyed'; -ReplSet.REPLSET_READ_ONLY = 'readonly'; - -ReplSet.prototype.isAutoReconnect = function() { - return true; -} - -ReplSet.prototype.canWrite = function() { - return this._state.master && this._state.master.isConnected(); -} - -ReplSet.prototype.canRead = function(read) { - if((read == ReadPreference.PRIMARY - || read == null || read == false) && (this._state.master == null || !this._state.master.isConnected())) return false; - return Object.keys(this._state.secondaries).length > 0; -} - -/** - * @ignore - */ -ReplSet.prototype.enableRecordQueryStats = function(enable) { - // Set the global enable record query stats - this.recordQueryStats = enable; - - // Enable all the servers - for(var i = 0; i < this.servers.length; i++) { - this.servers[i].enableRecordQueryStats(enable); - } -} - -/** - * @ignore - */ -ReplSet.prototype.setReadPreference = function(preference) { - this.options.readPreference = preference; -} - -ReplSet.prototype.connect = function(parent, options, callback) { - if(this._serverState != ReplSet.REPLSET_DISCONNECTED) - return callback(new Error("in process of connection")); - - // If no callback throw - if(!(typeof callback == 'function')) - throw new Error("cannot call ReplSet.prototype.connect with no callback function"); - - var self = this; - // Save db reference - this.options.db = parent; - // Set replicaset as connecting - this._serverState = ReplSet.REPLSET_CONNECTING - // Copy all the servers to our list of seeds - var candidateServers = this.servers.slice(0); - // Pop the first server - var server = candidateServers.pop(); - server.name = format("%s:%s", server.host, server.port); - // Set up the options - var opts = { - returnIsMasterResults: true, - eventReceiver: server - } - - // Register some event listeners - this.once("fullsetup", function(err, db, replset) { - // Set state to connected - self._serverState = ReplSet.REPLSET_CONNECTED; - // Stop any process running - if(self._haProcess) self._haProcess.stop(); - // Start the HA process - self._haProcess.start(); - - // Emit fullsetup - processor(function() { - parent.emit("open", null, self.options.db, self); - parent.emit("fullsetup", null, self.options.db, self); - }); - - // If we have a strategy defined start it - if(self.strategyInstance) { - self.strategyInstance.start(); - } - - // Finishing up the call - callback(err, db, replset); - }); - - // Errors - this.once("connectionError", function(err, result) { - callback(err, result); - }); - - // Attempt to connect to the server - server.connect(this.options.db, opts, _connectHandler(this, candidateServers, server)); -} - -ReplSet.prototype.close = function(callback) { - var self = this; - // Set as destroyed - this._serverState = ReplSet.REPLSET_DESTROYED; - // Stop the ha - this._haProcess.stop(); - - // If we have a strategy stop it - if(this.strategyInstance) { - this.strategyInstance.stop(); - } - - // Kill all servers available - for(var name in this._state.addresses) { - this._state.addresses[name].close(); - } - - // Clean out the state - this._state = new ReplSetState(); - - // Emit close event - processor(function() { - self._emitAcrossAllDbInstances(self, null, "close", null, null, true) - }); - - // Callback - if(typeof callback == 'function') - return callback(null, null); -} - -/** - * Creates a new server for the `replset` based on `host`. - * - * @param {String} host - host:port pair (localhost:27017) - * @param {ReplSet} replset - the ReplSet instance - * @return {Server} - * @ignore - */ -var createServer = function(self, host, options) { - // copy existing socket options to new server - var socketOptions = {} - if(options.socketOptions) { - var keys = Object.keys(options.socketOptions); - for(var k = 0; k < keys.length; k++) { - socketOptions[keys[k]] = options.socketOptions[keys[k]]; - } - } - - var parts = host.split(/:/); - if(1 === parts.length) { - parts[1] = Connection.DEFAULT_PORT; - } - - socketOptions.host = parts[0]; - socketOptions.port = parseInt(parts[1], 10); - - var serverOptions = { - readPreference: options.readPreference, - socketOptions: socketOptions, - // poolSize: options.poolSize, - poolSize: 1, - logger: options.logger, - auto_reconnect: false, - ssl: options.ssl, - sslValidate: options.sslValidate, - sslCA: options.sslCA, - sslCert: options.sslCert, - sslKey: options.sslKey, - sslPass: options.sslPass - } - - var server = new Server(socketOptions.host, socketOptions.port, serverOptions); - // Set up shared state - server._callBackStore = self._callBackStore; - server.replicasetInstance = self; - server.enableRecordQueryStats(self.recordQueryStats); - // Set up event handlers - server.on("close", _handler("close", self, server)); - server.on("error", _handler("error", self, server)); - server.on("timeout", _handler("timeout", self, server)); - return server; -} - -var _handler = function(event, self, server) { - return function(err, doc) { - // The event happened to a primary - // Remove it from play - if(self._state.isPrimary(server)) { - var current_master = self._state.master; - self._state.master = null; - self._serverState = ReplSet.REPLSET_READ_ONLY; - // delete self._state.addresses[server.name]; - - if(current_master != null) { - // Unpack variables - var host = current_master.socketOptions.host; - var port = current_master.socketOptions.port; - - // Fire error on any unknown callbacks - self.__executeAllServerSpecificErrorCallbacks(host, port, err); - } - } else if(self._state.isSecondary(server)) { - delete self._state.secondaries[server.name]; - // delete self._state.addresses[server.name]; - } - - // If there is no more connections left and the setting is not destroyed - // set to disconnected - if(Object.keys(self._state.addresses).length == 0 - && self._serverState != ReplSet.REPLSET_DESTROYED) { - self._serverState = ReplSet.REPLSET_DISCONNECTED; - - // Emit close across all the attached db instances - self._dbStore.emit("close", new Error("replicaset disconnected, no valid servers contactable over tcp"), null, true); - } - - // Unpack variables - var host = server.socketOptions.host; - var port = server.socketOptions.port; - - // Fire error on any unknown callbacks - self.__executeAllServerSpecificErrorCallbacks(host, port, err); - } -} - -var locateNewServers = function(self, state, candidateServers, ismaster) { - // Retrieve the host - var hosts = ismaster.hosts; - // In candidate servers - var inCandidateServers = function(name, candidateServers) { - for(var i = 0; i < candidateServers.length; i++) { - if(candidateServers[i].name == name) return true; - } - - return false; - } - - // New servers - var newServers = []; - if(Array.isArray(hosts)) { - // Let's go over all the hosts - for(var i = 0; i < hosts.length; i++) { - if(!state.contains(hosts[i]) - && !inCandidateServers(hosts[i], candidateServers)) { - newServers.push(createServer(self, hosts[i], self.options)); - } - } - } - - // Return list of possible new servers - return newServers; -} - -var _connectHandler = function(self, candidateServers, instanceServer) { - return function(err, doc) { - // If we have an error add to the list - if(err) self._state.errors[instanceServer.name] = instanceServer; - - // No error let's analyse the ismaster command - if(!err) { - var ismaster = doc.documents[0] - // If no replicaset name exists set the current one - if(self.options.rs_name == null) { - self.options.rs_name = ismaster.setName; - } - - // If we have a member that is not part of the set let's finish up - if(typeof ismaster.setName == 'string' && ismaster.setName != self.options.rs_name) { - return self.emit("connectionError", new Error("Replicaset name " + ismaster.setName + " does not match specified name " + self.options.rs_name)); - } - - // Add the error handlers - instanceServer.on("close", _handler("close", self, instanceServer)); - instanceServer.on("error", _handler("error", self, instanceServer)); - instanceServer.on("timeout", _handler("timeout", self, instanceServer)); - // Set any tags on the instance server - instanceServer.name = ismaster.me; - instanceServer.tags = ismaster.tags; - - // Add the server to the list - self._state.addServer(instanceServer, ismaster); - - // Get additional new servers that are not currently in set - var new_servers = locateNewServers(self, self._state, candidateServers, ismaster); - - // If we have new servers join them - if(new_servers.length > 0) { - candidateServers = candidateServers.concat(new_servers); - } - } - - - // If the candidate server list is empty and no valid servers - if(candidateServers.length == 0 && - !self._state.hasValidServers()) { - return self.emit("connectionError", new Error("No valid replicaset instance servers found")); - } else if(candidateServers.length == 0) { - if(!self.options.connectWithNoPrimary && (self._state.master == null || !self._state.master.isConnected())) { - return self.emit("connectionError", new Error("No primary found in set")); - } - return self.emit("fullsetup", null, self.options.db, self); - } - - // Let's connect the next server - var nextServer = candidateServers.pop(); - - // Set up the options - var opts = { - returnIsMasterResults: true, - eventReceiver: nextServer - } - - // Attempt to connect to the server - nextServer.connect(self.options.db, opts, _connectHandler(self, candidateServers, nextServer)); - } -} - -ReplSet.prototype.isDestroyed = function() { - return this._serverState == ReplSet.REPLSET_DESTROYED; -} - -ReplSet.prototype.isConnected = function(read) { - var isConnected = false; - - if(read == null || read == ReadPreference.PRIMARY || read == false) - isConnected = this._state.master != null && this._state.master.isConnected(); - - if((read == ReadPreference.PRIMARY_PREFERRED || read == ReadPreference.SECONDARY_PREFERRED || read == ReadPreference.NEAREST) - && ((this._state.master != null && this._state.master.isConnected()) - || (this._state && this._state.secondaries && Object.keys(this._state.secondaries).length > 0))) { - isConnected = true; - } else if(read == ReadPreference.SECONDARY) { - isConnected = this._state && this._state.secondaries && Object.keys(this._state.secondaries).length > 0; - } - - // No valid connection return false - return isConnected; -} - -ReplSet.prototype.isMongos = function() { - return false; -} - -ReplSet.prototype.checkoutWriter = function() { - if(this._state.master) return this._state.master.checkoutWriter(); - return new Error("no writer connection available"); -} - -ReplSet.prototype.allRawConnections = function() { - var connections = []; - - for(var name in this._state.addresses) { - connections = connections.concat(this._state.addresses[name].allRawConnections()); - } - - return connections; -} - -/** - * @ignore - */ -ReplSet.prototype.allServerInstances = function() { - var self = this; - // If no state yet return empty - if(!self._state) return []; - // Close all the servers (concatenate entire list of servers first for ease) - var allServers = self._state.master != null ? [self._state.master] : []; - - // Secondary keys - var keys = Object.keys(self._state.secondaries); - // Add all secondaries - for(var i = 0; i < keys.length; i++) { - allServers.push(self._state.secondaries[keys[i]]); - } - - // Return complete list of all servers - return allServers; -} - -/** - * @ignore - */ -ReplSet.prototype.checkoutReader = function(readPreference, tags) { - var connection = null; - - // If we have a read preference object unpack it - if(typeof readPreference == 'object' && readPreference['_type'] == 'ReadPreference') { - // Validate if the object is using a valid mode - if(!readPreference.isValid()) throw new Error("Illegal readPreference mode specified, " + readPreference.mode); - // Set the tag - tags = readPreference.tags; - readPreference = readPreference.mode; - } else if(typeof readPreference == 'object' && readPreference['_type'] != 'ReadPreference') { - return new Error("read preferences must be either a string or an instance of ReadPreference"); - } - - // Set up our read Preference, allowing us to override the readPreference - var finalReadPreference = readPreference != null ? readPreference : this.options.readPreference; - - // Ensure we unpack a reference - if(finalReadPreference != null && typeof finalReadPreference == 'object' && finalReadPreference['_type'] == 'ReadPreference') { - // Validate if the object is using a valid mode - if(!finalReadPreference.isValid()) throw new Error("Illegal readPreference mode specified, " + finalReadPreference.mode); - // Set the tag - tags = finalReadPreference.tags; - readPreference = finalReadPreference.mode; - } - - // Finalize the read preference setup - finalReadPreference = finalReadPreference == true ? ReadPreference.SECONDARY_PREFERRED : finalReadPreference; - finalReadPreference = finalReadPreference == null ? ReadPreference.PRIMARY : finalReadPreference; - - // If we are reading from a primary - if(finalReadPreference == 'primary') { - // If we provide a tags set send an error - if(typeof tags == 'object' && tags != null) { - return new Error("PRIMARY cannot be combined with tags"); - } - - // If we provide a tags set send an error - if(this._state.master == null) { - return new Error("No replica set primary available for query with ReadPreference PRIMARY"); - } - - // Checkout a writer - return this.checkoutWriter(); - } - - // If we have specified to read from a secondary server grab a random one and read - // from it, otherwise just pass the primary connection - if((this.options.readSecondary || finalReadPreference == ReadPreference.SECONDARY_PREFERRED || finalReadPreference == ReadPreference.SECONDARY) && Object.keys(this._state.secondaries).length > 0) { - // If we have tags, look for servers matching the specific tag - if(this.strategyInstance != null) { - // Only pick from secondaries - var _secondaries = []; - for(var key in this._state.secondaries) { - _secondaries.push(this._state.secondaries[key]); - } - - if(finalReadPreference == ReadPreference.SECONDARY) { - // Check out the nearest from only the secondaries - connection = this.strategyInstance.checkoutConnection(tags, _secondaries); - } else { - connection = this.strategyInstance.checkoutConnection(tags, _secondaries); - // No candidate servers that match the tags, error - if(connection == null || connection instanceof Error) { - // No secondary server avilable, attemp to checkout a primary server - connection = this.checkoutWriter(); - // If no connection return an error - if(connection == null || connection instanceof Error) { - return new Error("No replica set members available for query"); - } - } - } - } else if(tags != null && typeof tags == 'object') { - // Get connection - connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) { - // No candidate servers that match the tags, error - if(connection == null) { - return new Error("No replica set members available for query"); - } - } else { - connection = _roundRobin(this, tags); - } - } else if(finalReadPreference == ReadPreference.PRIMARY_PREFERRED) { - // Check if there is a primary available and return that if possible - connection = this.checkoutWriter(); - // If no connection available checkout a secondary - if(connection == null || connection instanceof Error) { - // If we have tags, look for servers matching the specific tag - if(tags != null && typeof tags == 'object') { - // Get connection - connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) { - // No candidate servers that match the tags, error - if(connection == null) { - return new Error("No replica set members available for query"); - } - } else { - connection = _roundRobin(this, tags); - } - } - } else if(finalReadPreference == ReadPreference.SECONDARY_PREFERRED) { - // If we have tags, look for servers matching the specific tag - if(this.strategyInstance != null) { - connection = this.strategyInstance.checkoutConnection(tags); - - // No candidate servers that match the tags, error - if(connection == null || connection instanceof Error) { - // No secondary server avilable, attemp to checkout a primary server - connection = this.checkoutWriter(); - // If no connection return an error - if(connection == null || connection instanceof Error) { - var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference; - return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags)); - } - } - } else if(tags != null && typeof tags == 'object') { - // Get connection - connection = _pickFromTags(this, tags);// = function(self, readPreference, tags) { - // No candidate servers that match the tags, error - if(connection == null) { - // No secondary server avilable, attemp to checkout a primary server - connection = this.checkoutWriter(); - // If no connection return an error - if(connection == null || connection instanceof Error) { - var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference; - return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags)); - } - } - } - } else if(finalReadPreference == ReadPreference.NEAREST && this.strategyInstance != null) { - connection = this.strategyInstance.checkoutConnection(tags); - } else if(finalReadPreference == ReadPreference.NEAREST && this.strategyInstance == null) { - return new Error("A strategy for calculating nearness must be enabled such as ping or statistical"); - } else if(finalReadPreference == ReadPreference.SECONDARY && Object.keys(this._state.secondaries).length == 0) { - if(tags != null && typeof tags == 'object') { - var preferenceName = finalReadPreference == ReadPreference.SECONDARY ? 'secondary' : finalReadPreference; - return new Error("No replica set member available for query with ReadPreference " + preferenceName + " and tags " + JSON.stringify(tags)); - } else { - return new Error("No replica set secondary available for query with ReadPreference SECONDARY"); - } - } else { - connection = this.checkoutWriter(); - } - - // Return the connection - return connection; -} - -/** - * @ignore - */ -var _pickFromTags = function(self, tags) { - // If we have an array or single tag selection - var tagObjects = Array.isArray(tags) ? tags : [tags]; - // Iterate over all tags until we find a candidate server - for(var _i = 0; _i < tagObjects.length; _i++) { - // Grab a tag object - var tagObject = tagObjects[_i]; - // Matching keys - var matchingKeys = Object.keys(tagObject); - // Match all the servers that match the provdided tags - var keys = Object.keys(self._state.secondaries); - var candidateServers = []; - - for(var i = 0; i < keys.length; i++) { - var server = self._state.secondaries[keys[i]]; - // If we have tags match - if(server.tags != null) { - var matching = true; - // Ensure we have all the values - for(var j = 0; j < matchingKeys.length; j++) { - if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) { - matching = false; - break; - } - } - - // If we have a match add it to the list of matching servers - if(matching) { - candidateServers.push(server); - } - } - } - - // If we have a candidate server return - if(candidateServers.length > 0) { - if(self.strategyInstance) return self.strategyInstance.checkoutConnection(tags, candidateServers); - // Set instance to return - return candidateServers[Math.floor(Math.random() * candidateServers.length)].checkoutReader(); - } - } - - // No connection found - return null; -} - -/** - * Pick a secondary using round robin - * - * @ignore - */ -function _roundRobin (replset, tags) { - var keys = Object.keys(replset._state.secondaries); - var key = keys[replset._currentServerChoice++ % keys.length]; - - var conn = null != replset._state.secondaries[key] - ? replset._state.secondaries[key].checkoutReader() - : null; - - // If connection is null fallback to first available secondary - if (null == conn) { - conn = pickFirstConnectedSecondary(replset, tags); - } - - return conn; -} - -/** - * @ignore - */ -var pickFirstConnectedSecondary = function pickFirstConnectedSecondary(self, tags) { - var keys = Object.keys(self._state.secondaries); - var connection; - - // Find first available reader if any - for(var i = 0; i < keys.length; i++) { - connection = self._state.secondaries[keys[i]].checkoutReader(); - if(connection) return connection; - } - - // If we still have a null, read from primary if it's not secondary only - if(self._readPreference == ReadPreference.SECONDARY_PREFERRED) { - connection = self._state.master.checkoutReader(); - if(connection) return connection; - } - - var preferenceName = self._readPreference == ReadPreference.SECONDARY_PREFERRED - ? 'secondary' - : self._readPreference; - - return new Error("No replica set member available for query with ReadPreference " - + preferenceName + " and tags " + JSON.stringify(tags)); -} - -/** - * Get list of secondaries - * @ignore - */ -Object.defineProperty(ReplSet.prototype, "secondaries", {enumerable: true - , get: function() { - return utils.objectToArray(this._state.secondaries); - } -}); - -/** - * Get list of secondaries - * @ignore - */ -Object.defineProperty(ReplSet.prototype, "arbiters", {enumerable: true - , get: function() { - return utils.objectToArray(this._state.arbiters); - } -}); - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js deleted file mode 100644 index 6f9e143..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/repl_set_state.js +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Interval state object constructor - * - * @ignore - */ -var ReplSetState = function ReplSetState () { - this.errorMessages = []; - this.secondaries = {}; - this.addresses = {}; - this.arbiters = {}; - this.passives = {}; - this.members = []; - this.errors = {}; - this.setName = null; - this.master = null; -} - -ReplSetState.prototype.hasValidServers = function() { - var validServers = []; - if(this.master && this.master.isConnected()) return true; - - if(this.secondaries) { - var keys = Object.keys(this.secondaries) - for(var i = 0; i < keys.length; i++) { - if(this.secondaries[keys[i]].isConnected()) - return true; - } - } - - return false; -} - -ReplSetState.prototype.getAllReadServers = function() { - var candidate_servers = []; - for(var name in this.addresses) { - candidate_servers.push(this.addresses[name]); - } - - // Return all possible read candidates - return candidate_servers; -} - -ReplSetState.prototype.addServer = function(server, master) { - server.name = master.me; - - if(master.ismaster) { - this.master = server; - this.addresses[server.name] = server; - } else if(master.secondary) { - this.secondaries[server.name] = server; - this.addresses[server.name] = server; - } else if(master.arbiters) { - this.arbiters[server.name] = server; - this.addresses[server.name] = server; - } -} - -ReplSetState.prototype.contains = function(host) { - return this.addresses[host] != null; -} - -ReplSetState.prototype.isPrimary = function(server) { - return this.master && this.master.name == server.name; -} - -ReplSetState.prototype.isSecondary = function(server) { - return this.secondaries[server.name] != null; -} - -exports.ReplSetState = ReplSetState; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js deleted file mode 100644 index d1baaae..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/ping_strategy.js +++ /dev/null @@ -1,297 +0,0 @@ -var Server = require("../../server").Server - , format = require('util').format; - -// The ping strategy uses pings each server and records the -// elapsed time for the server so it can pick a server based on lowest -// return time for the db command {ping:true} -var PingStrategy = exports.PingStrategy = function(replicaset, secondaryAcceptableLatencyMS) { - this.replicaset = replicaset; - this.secondaryAcceptableLatencyMS = secondaryAcceptableLatencyMS; - this.state = 'disconnected'; - this.pingInterval = 5000; - // Class instance - this.Db = require("../../../db").Db; - // Active db connections - this.dbs = {}; - // Logger api - this.Logger = null; -} - -// Starts any needed code -PingStrategy.prototype.start = function(callback) { - // already running? - if ('connected' == this.state) return; - - this.state = 'connected'; - - // Start ping server - this._pingServer(callback); -} - -// Stops and kills any processes running -PingStrategy.prototype.stop = function(callback) { - // Stop the ping process - this.state = 'disconnected'; - - // Stop all the server instances - for(var key in this.dbs) { - this.dbs[key].close(); - } - - // optional callback - callback && callback(null, null); -} - -PingStrategy.prototype.checkoutConnection = function(tags, secondaryCandidates) { - // Servers are picked based on the lowest ping time and then servers that lower than that + secondaryAcceptableLatencyMS - // Create a list of candidat servers, containing the primary if available - var candidateServers = []; - var self = this; - - // If we have not provided a list of candidate servers use the default setup - if(!Array.isArray(secondaryCandidates)) { - candidateServers = this.replicaset._state.master != null ? [this.replicaset._state.master] : []; - // Add all the secondaries - var keys = Object.keys(this.replicaset._state.secondaries); - for(var i = 0; i < keys.length; i++) { - candidateServers.push(this.replicaset._state.secondaries[keys[i]]) - } - } else { - candidateServers = secondaryCandidates; - } - - // Final list of eligable server - var finalCandidates = []; - - // If we have tags filter by tags - if(tags != null && typeof tags == 'object') { - // If we have an array or single tag selection - var tagObjects = Array.isArray(tags) ? tags : [tags]; - // Iterate over all tags until we find a candidate server - for(var _i = 0; _i < tagObjects.length; _i++) { - // Grab a tag object - var tagObject = tagObjects[_i]; - // Matching keys - var matchingKeys = Object.keys(tagObject); - // Remove any that are not tagged correctly - for(var i = 0; i < candidateServers.length; i++) { - var server = candidateServers[i]; - // If we have tags match - if(server.tags != null) { - var matching = true; - - // Ensure we have all the values - for(var j = 0; j < matchingKeys.length; j++) { - if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) { - matching = false; - break; - } - } - - // If we have a match add it to the list of matching servers - if(matching) { - finalCandidates.push(server); - } - } - } - } - } else { - // Final array candidates - var finalCandidates = candidateServers; - } - - // Sort by ping time - finalCandidates.sort(function(a, b) { - return a.runtimeStats['pingMs'] > b.runtimeStats['pingMs']; - }); - - if(0 === finalCandidates.length) - return new Error("No replica set members available for query"); - - // find lowest server with a ping time - var lowest = finalCandidates.filter(function (server) { - return undefined != server.runtimeStats.pingMs; - })[0]; - - if(!lowest) { - lowest = finalCandidates[0]; - } - - // convert to integer - var lowestPing = lowest.runtimeStats.pingMs | 0; - - // determine acceptable latency - var acceptable = lowestPing + this.secondaryAcceptableLatencyMS; - - // remove any server responding slower than acceptable - var len = finalCandidates.length; - while(len--) { - if(finalCandidates[len].runtimeStats['pingMs'] > acceptable) { - finalCandidates.splice(len, 1); - } - } - - if(self.logger && self.logger.debug) { - self.logger.debug("Ping strategy selection order for tags", tags); - finalCandidates.forEach(function(c) { - self.logger.debug(format("%s:%s = %s ms", c.host, c.port, c.runtimeStats['pingMs']), null); - }) - } - - // If no candidates available return an error - if(finalCandidates.length == 0) - return new Error("No replica set members available for query"); - - // Pick a random acceptable server - var connection = finalCandidates[Math.round(Math.random(1000000) * (finalCandidates.length - 1))].checkoutReader(); - if(self.logger && self.logger.debug) { - if(connection) - self.logger.debug("picked server %s:%s", connection.socketOptions.host, connection.socketOptions.port); - } - - return connection; -} - -PingStrategy.prototype._pingServer = function(callback) { - var self = this; - - // Ping server function - var pingFunction = function() { - // Our state changed to disconnected or destroyed return - if(self.state == 'disconnected' || self.state == 'destroyed') return; - // If the replicaset is destroyed return - if(self.replicaset.isDestroyed() || self.replicaset._serverState == 'disconnected') return - - // Create a list of all servers we can send the ismaster command to - var allServers = self.replicaset._state.master != null ? [self.replicaset._state.master] : []; - - // Secondary keys - var keys = Object.keys(self.replicaset._state.secondaries); - // Add all secondaries - for(var i = 0; i < keys.length; i++) { - allServers.push(self.replicaset._state.secondaries[keys[i]]); - } - - // Number of server entries - var numberOfEntries = allServers.length; - - // We got keys - for(var i = 0; i < allServers.length; i++) { - - // We got a server instance - var server = allServers[i]; - - // Create a new server object, avoid using internal connections as they might - // be in an illegal state - new function(serverInstance) { - var _db = self.dbs[serverInstance.host + ":" + serverInstance.port]; - // If we have a db - if(_db != null) { - // Startup time of the command - var startTime = Date.now(); - - // Execute ping command in own scope - var _ping = function(__db, __serverInstance) { - // Execute ping on this connection - __db.executeDbCommand({ping:1}, {failFast:true}, function(err) { - if(err) { - delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port]; - __db.close(); - return done(); - } - - if(null != __serverInstance.runtimeStats && __serverInstance.isConnected()) { - __serverInstance.runtimeStats['pingMs'] = Date.now() - startTime; - } - - done(); - }); - }; - // Ping - _ping(_db, serverInstance); - } else { - var connectTimeoutMS = self.replicaset.options.socketOptions - ? self.replicaset.options.socketOptions.connectTimeoutMS : 0 - - // Create a new master connection - var _server = new Server(serverInstance.host, serverInstance.port, { - auto_reconnect: false, - returnIsMasterResults: true, - slaveOk: true, - poolSize: 1, - socketOptions: { connectTimeoutMS: connectTimeoutMS }, - ssl: self.replicaset.ssl, - sslValidate: self.replicaset.sslValidate, - sslCA: self.replicaset.sslCA, - sslCert: self.replicaset.sslCert, - sslKey: self.replicaset.sslKey, - sslPass: self.replicaset.sslPass - }); - - // Create Db instance - var _db = new self.Db('local', _server, { safe: true }); - _db.on("close", function() { - delete self.dbs[this.serverConfig.host + ":" + this.serverConfig.port]; - }) - - var _ping = function(__db, __serverInstance) { - if(self.state == 'disconnected') { - self.stop(); - return; - } - - __db.open(function(err, db) { - if(self.state == 'disconnected' && __db != null) { - return __db.close(); - } - - if(err) { - delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port]; - __db.close(); - return done(); - } - - // Save instance - self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port] = __db; - - // Startup time of the command - var startTime = Date.now(); - - // Execute ping on this connection - __db.executeDbCommand({ping:1}, {failFast:true}, function(err) { - if(err) { - delete self.dbs[__db.serverConfig.host + ":" + __db.serverConfig.port]; - __db.close(); - return done(); - } - - if(null != __serverInstance.runtimeStats && __serverInstance.isConnected()) { - __serverInstance.runtimeStats['pingMs'] = Date.now() - startTime; - } - - done(); - }); - }); - }; - - _ping(_db, serverInstance); - } - - function done() { - // Adjust the number of checks - numberOfEntries--; - - // If we are done with all results coming back trigger ping again - if(0 === numberOfEntries && 'connected' == self.state) { - setTimeout(pingFunction, self.pingInterval); - } - } - }(server); - } - } - - // Start pingFunction - pingFunction(); - - callback && callback(null); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js deleted file mode 100644 index f9b8c46..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/repl_set/strategies/statistics_strategy.js +++ /dev/null @@ -1,80 +0,0 @@ -// The Statistics strategy uses the measure of each end-start time for each -// query executed against the db to calculate the mean, variance and standard deviation -// and pick the server which the lowest mean and deviation -var StatisticsStrategy = exports.StatisticsStrategy = function(replicaset) { - this.replicaset = replicaset; - // Logger api - this.Logger = null; -} - -// Starts any needed code -StatisticsStrategy.prototype.start = function(callback) { - callback && callback(null, null); -} - -StatisticsStrategy.prototype.stop = function(callback) { - callback && callback(null, null); -} - -StatisticsStrategy.prototype.checkoutConnection = function(tags, secondaryCandidates) { - // Servers are picked based on the lowest ping time and then servers that lower than that + secondaryAcceptableLatencyMS - // Create a list of candidat servers, containing the primary if available - var candidateServers = []; - - // If we have not provided a list of candidate servers use the default setup - if(!Array.isArray(secondaryCandidates)) { - candidateServers = this.replicaset._state.master != null ? [this.replicaset._state.master] : []; - // Add all the secondaries - var keys = Object.keys(this.replicaset._state.secondaries); - for(var i = 0; i < keys.length; i++) { - candidateServers.push(this.replicaset._state.secondaries[keys[i]]) - } - } else { - candidateServers = secondaryCandidates; - } - - // Final list of eligable server - var finalCandidates = []; - - // If we have tags filter by tags - if(tags != null && typeof tags == 'object') { - // If we have an array or single tag selection - var tagObjects = Array.isArray(tags) ? tags : [tags]; - // Iterate over all tags until we find a candidate server - for(var _i = 0; _i < tagObjects.length; _i++) { - // Grab a tag object - var tagObject = tagObjects[_i]; - // Matching keys - var matchingKeys = Object.keys(tagObject); - // Remove any that are not tagged correctly - for(var i = 0; i < candidateServers.length; i++) { - var server = candidateServers[i]; - // If we have tags match - if(server.tags != null) { - var matching = true; - - // Ensure we have all the values - for(var j = 0; j < matchingKeys.length; j++) { - if(server.tags[matchingKeys[j]] != tagObject[matchingKeys[j]]) { - matching = false; - break; - } - } - - // If we have a match add it to the list of matching servers - if(matching) { - finalCandidates.push(server); - } - } - } - } - } else { - // Final array candidates - var finalCandidates = candidateServers; - } - - // If no candidates available return an error - if(finalCandidates.length == 0) return new Error("No replica set members available for query"); - // Pick a random server - return finalCandidates[Math.round(Math.random(1000000) * (finalCandidates.length - 1))].checkoutReader(); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js deleted file mode 100644 index 16be9d8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js +++ /dev/null @@ -1,965 +0,0 @@ -var Connection = require('./connection').Connection, - ReadPreference = require('./read_preference').ReadPreference, - DbCommand = require('../commands/db_command').DbCommand, - MongoReply = require('../responses/mongo_reply').MongoReply, - ConnectionPool = require('./connection_pool').ConnectionPool, - EventEmitter = require('events').EventEmitter, - Base = require('./base').Base, - utils = require('../utils'), - timers = require('timers'), - inherits = require('util').inherits; - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; - -/** - * Class representing a single MongoDB Server connection - * - * Options - * - **readPreference** {String, default:null}, set's the read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST) - * - **ssl** {Boolean, default:false}, use ssl connection (needs to have a mongod server with ssl support) - * - **sslValidate** {Boolean, default:false}, validate mongod server certificate against ca (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslCA** {Array, default:null}, Array of valid certificates either as Buffers or Strings (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslCert** {Buffer/String, default:null}, String or buffer containing the certificate we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslKey** {Buffer/String, default:null}, String or buffer containing the certificate private key we wish to present (needs to have a mongod server with ssl support, 2.4 or higher) - * - **sslPass** {Buffer/String, default:null}, String or buffer containing the certificate password (needs to have a mongod server with ssl support, 2.4 or higher) - * - **poolSize** {Number, default:5}, number of connections in the connection pool, set to 5 as default for legacy reasons. - * - **socketOptions** {Object, default:null}, an object containing socket options to use (noDelay:(boolean), keepAlive:(number), connectTimeoutMS:(number), socketTimeoutMS:(number)) - * - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**. - * - **auto_reconnect** {Boolean, default:false}, reconnect on error. - * - **disableDriverBSONSizeCheck** {Boolean, default:false}, force the server to error if the BSON message is to big - * - * @class Represents a Server connection. - * @param {String} host the server host - * @param {Number} port the server port - * @param {Object} [options] optional options for insert command - */ -function Server(host, port, options) { - // Set up Server instance - if(!(this instanceof Server)) return new Server(host, port, options); - - // Set up event emitter - Base.call(this); - - // Ensure correct values - if(port != null && typeof port == 'object') { - options = port; - port = Connection.DEFAULT_PORT; - } - - var self = this; - this.host = host; - this.port = port; - this.options = options == null ? {} : options; - this.internalConnection; - this.internalMaster = false; - this.connected = false; - this.poolSize = this.options.poolSize == null ? 5 : this.options.poolSize; - this.disableDriverBSONSizeCheck = this.options.disableDriverBSONSizeCheck != null ? this.options.disableDriverBSONSizeCheck : false; - this._used = false; - this.replicasetInstance = null; - - // Set ssl as connection method - this.ssl = this.options.ssl == null ? false : this.options.ssl; - // Set ssl validation - this.sslValidate = this.options.sslValidate == null ? false : this.options.sslValidate; - // Set the ssl certificate authority (array of Buffer/String keys) - this.sslCA = Array.isArray(this.options.sslCA) ? this.options.sslCA : null; - // Certificate to present to the server - this.sslCert = this.options.sslCert; - // Certificate private key if in separate file - this.sslKey = this.options.sslKey; - // Password to unlock private key - this.sslPass = this.options.sslPass; - - // // Create connection Pool instance with the current BSON serializer - // this.connectionPool = new ConnectionPool(this.host, this.port, this.poolSize, null, this.socketOptions); - // Ensure we are not trying to validate with no list of certificates - if(this.sslValidate && (!Array.isArray(this.sslCA) || this.sslCA.length == 0)) { - throw new Error("The driver expects an Array of CA certificates in the sslCA parameter when enabling sslValidate"); - } - - // Get the readPreference - var readPreference = this.options['readPreference']; - // If readPreference is an object get the mode string - var validateReadPreference = readPreference != null && typeof readPreference == 'object' ? readPreference.mode : readPreference; - // Read preference setting - if(validateReadPreference != null) { - if(validateReadPreference != ReadPreference.PRIMARY && validateReadPreference != ReadPreference.SECONDARY && validateReadPreference != ReadPreference.NEAREST - && validateReadPreference != ReadPreference.SECONDARY_PREFERRED && validateReadPreference != ReadPreference.PRIMARY_PREFERRED) { - throw new Error("Illegal readPreference mode specified, " + validateReadPreference); - } - - // Set read Preference - this._readPreference = readPreference; - } else { - this._readPreference = null; - } - - // Contains the isMaster information returned from the server - this.isMasterDoc; - - // Set default connection pool options - this.socketOptions = this.options.socketOptions != null ? this.options.socketOptions : {}; - if(this.disableDriverBSONSizeCheck) this.socketOptions.disableDriverBSONSizeCheck = this.disableDriverBSONSizeCheck; - - // Set ssl up if it's defined - if(this.ssl) { - this.socketOptions.ssl = true; - // Set ssl validation - this.socketOptions.sslValidate = this.sslValidate == null ? false : this.sslValidate; - // Set the ssl certificate authority (array of Buffer/String keys) - this.socketOptions.sslCA = Array.isArray(this.sslCA) ? this.sslCA : null; - // Set certificate to present - this.socketOptions.sslCert = this.sslCert; - // Set certificate to present - this.socketOptions.sslKey = this.sslKey; - // Password to unlock private key - this.socketOptions.sslPass = this.sslPass; - } - - // Set up logger if any set - this.logger = this.options.logger != null - && (typeof this.options.logger.debug == 'function') - && (typeof this.options.logger.error == 'function') - && (typeof this.options.logger.log == 'function') - ? this.options.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}}; - - // Just keeps list of events we allow - this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[], timeout:[]}; - // Internal state of server connection - this._serverState = 'disconnected'; - // Contains state information about server connection - this._state = {'runtimeStats': {'queryStats':new RunningStats()}}; - // Do we record server stats or not - this.recordQueryStats = false; -}; - -/** - * @ignore - */ -inherits(Server, Base); - -// -// Deprecated, USE ReadPreferences class -// -Server.READ_PRIMARY = ReadPreference.PRIMARY; -Server.READ_SECONDARY = ReadPreference.SECONDARY_PREFERRED; -Server.READ_SECONDARY_ONLY = ReadPreference.SECONDARY; - -/** - * Always ourselves - * @ignore - */ -Server.prototype.setReadPreference = function(readPreference) { - this._readPreference = readPreference; -} - -/** - * @ignore - */ -Server.prototype.isMongos = function() { - return this.isMasterDoc != null && this.isMasterDoc['msg'] == "isdbgrid" ? true : false; -} - -/** - * @ignore - */ -Server.prototype._isUsed = function() { - return this._used; -} - -/** - * @ignore - */ -Server.prototype.close = function(callback) { - // Set server status as disconnected - this._serverState = 'destroyed'; - // Remove all local listeners - this.removeAllListeners(); - - if(this.connectionPool != null) { - // Remove all the listeners on the pool so it does not fire messages all over the place - this.connectionPool.removeAllEventListeners(); - // Close the connection if it's open - this.connectionPool.stop(true); - } - - // Emit close event - if(this.db && !this.isSetMember()) { - var self = this; - processor(function() { - self._emitAcrossAllDbInstances(self, null, "close", null, null, true) - }) - } - - // Peform callback if present - if(typeof callback === 'function') callback(null); -}; - -Server.prototype.isDestroyed = function() { - return this._serverState == 'destroyed'; -} - -/** - * @ignore - */ -Server.prototype.isConnected = function() { - return this.connectionPool.isConnected(); -} - -/** - * @ignore - */ -Server.prototype.canWrite = Server.prototype.isConnected; -Server.prototype.canRead = Server.prototype.isConnected; - -Server.prototype.isAutoReconnect = function() { - if(this.isSetMember()) return false; - return this.options.auto_reconnect != null ? this.options.auto_reconnect : true; -} - -/** - * @ignore - */ -Server.prototype.allServerInstances = function() { - return [this]; -} - -/** - * @ignore - */ -Server.prototype.isSetMember = function() { - return this.replicasetInstance != null || this.mongosInstance != null; -} - -/** - * Assigns a replica set to this `server`. - * - * @param {ReplSet} replset - * @ignore - */ -Server.prototype.assignReplicaSet = function (replset) { - this.replicasetInstance = replset; - this.inheritReplSetOptionsFrom(replset); - this.enableRecordQueryStats(replset.recordQueryStats); -} - -/** - * Takes needed options from `replset` and overwrites - * our own options. - * - * @param {ReplSet} replset - * @ignore - */ -Server.prototype.inheritReplSetOptionsFrom = function (replset) { - this.socketOptions = {}; - this.socketOptions.connectTimeoutMS = replset.options.socketOptions.connectTimeoutMS || 30000; - - if(replset.options.ssl) { - // Set ssl on - this.socketOptions.ssl = true; - // Set ssl validation - this.socketOptions.sslValidate = replset.options.sslValidate == null ? false : replset.options.sslValidate; - // Set the ssl certificate authority (array of Buffer/String keys) - this.socketOptions.sslCA = Array.isArray(replset.options.sslCA) ? replset.options.sslCA : null; - // Set certificate to present - this.socketOptions.sslCert = replset.options.sslCert; - // Set certificate to present - this.socketOptions.sslKey = replset.options.sslKey; - // Password to unlock private key - this.socketOptions.sslPass = replset.options.sslPass; - } - - // If a socket option object exists clone it - if(utils.isObject(replset.options.socketOptions)) { - var keys = Object.keys(replset.options.socketOptions); - for(var i = 0; i < keys.length; i++) - this.socketOptions[keys[i]] = replset.options.socketOptions[keys[i]]; - } -} - -/** - * Opens this server connection. - * - * @ignore - */ -Server.prototype.connect = function(dbInstance, options, callback) { - if('function' === typeof options) callback = options, options = {}; - if(options == null) options = {}; - if(!('function' === typeof callback)) callback = null; - var self = this; - // Save the options - this.options = options; - - // Currently needed to work around problems with multiple connections in a pool with ssl - // TODO fix if possible - if(this.ssl == true) { - // Set up socket options for ssl - this.socketOptions.ssl = true; - // Set ssl validation - this.socketOptions.sslValidate = this.sslValidate == null ? false : this.sslValidate; - // Set the ssl certificate authority (array of Buffer/String keys) - this.socketOptions.sslCA = Array.isArray(this.sslCA) ? this.sslCA : null; - // Set certificate to present - this.socketOptions.sslCert = this.sslCert; - // Set certificate to present - this.socketOptions.sslKey = this.sslKey; - // Password to unlock private key - this.socketOptions.sslPass = this.sslPass; - } - - // Let's connect - var server = this; - // Let's us override the main receiver of events - var eventReceiver = options.eventReceiver != null ? options.eventReceiver : this; - // Save reference to dbInstance - this.db = dbInstance; // `db` property matches ReplSet and Mongos - this.dbInstances = [dbInstance]; - - // Force connection pool if there is one - if(server.connectionPool) server.connectionPool.stop(); - // Set server state to connecting - this._serverState = 'connecting'; - - if(server.connectionPool != null) { - // Remove all the listeners on the pool so it does not fire messages all over the place - this.connectionPool.removeAllEventListeners(); - // Close the connection if it's open - this.connectionPool.stop(true); - } - - this.connectionPool = new ConnectionPool(this.host, this.port, this.poolSize, dbInstance.bson, this.socketOptions); - var connectionPool = this.connectionPool; - // If ssl is not enabled don't wait between the pool connections - if(this.ssl == null || !this.ssl) connectionPool._timeToWait = null; - // Set logger on pool - connectionPool.logger = this.logger; - connectionPool.bson = dbInstance.bson; - - // Set basic parameters passed in - var returnIsMasterResults = options.returnIsMasterResults == null ? false : options.returnIsMasterResults; - - // Create a default connect handler, overriden when using replicasets - var connectCallback = function(_server) { - return function(err, reply) { - // ensure no callbacks get called twice - var internalCallback = callback; - callback = null; - // Assign the server - _server = _server != null ? _server : server; - - // If something close down the connection and removed the callback before - // proxy killed connection etc, ignore the erorr as close event was isssued - if(err != null && internalCallback == null) return; - // Internal callback - if(err != null) return internalCallback(err, null, _server); - _server.master = reply.documents[0].ismaster == 1 ? true : false; - _server.connectionPool.setMaxBsonSize(reply.documents[0].maxBsonObjectSize); - _server.connectionPool.setMaxMessageSizeBytes(reply.documents[0].maxMessageSizeBytes); - // Set server state to connEcted - _server._serverState = 'connected'; - // Set server as connected - _server.connected = true; - // Save document returned so we can query it - _server.isMasterDoc = reply.documents[0]; - - // Emit open event - _server._emitAcrossAllDbInstances(_server, eventReceiver, "open", null, returnIsMasterResults ? reply : dbInstance, null); - - // If we have it set to returnIsMasterResults - if(returnIsMasterResults) { - internalCallback(null, reply, _server); - } else { - internalCallback(null, dbInstance, _server); - } - } - }; - - // Let's us override the main connect callback - var connectHandler = options.connectHandler == null ? connectCallback(server) : options.connectHandler; - - // Set up on connect method - connectionPool.on("poolReady", function() { - // Create db command and Add the callback to the list of callbacks by the request id (mapping outgoing messages to correct callbacks) - var db_command = DbCommand.NcreateIsMasterCommand(dbInstance, dbInstance.databaseName); - // Check out a reader from the pool - var connection = connectionPool.checkoutConnection(); - // Register handler for messages - server._registerHandler(db_command, false, connection, connectHandler); - // Write the command out - connection.write(db_command); - }) - - // Set up item connection - connectionPool.on("message", function(message) { - // Attempt to parse the message - try { - // Create a new mongo reply - var mongoReply = new MongoReply() - // Parse the header - mongoReply.parseHeader(message, connectionPool.bson) - - // If message size is not the same as the buffer size - // something went terribly wrong somewhere - if(mongoReply.messageLength != message.length) { - // Emit the error - if(eventReceiver.listeners("error") && eventReceiver.listeners("error").length > 0) eventReceiver.emit("error", new Error("bson length is different from message length"), server); - // Remove all listeners - server.removeAllListeners(); - } else { - var startDate = new Date().getTime(); - - // Callback instance - var callbackInfo = server._findHandler(mongoReply.responseTo.toString()); - - // The command executed another request, log the handler again under that request id - if(mongoReply.requestId > 0 && mongoReply.cursorId.toString() != "0" - && callbackInfo && callbackInfo.info && callbackInfo.info.exhaust) { - server._reRegisterHandler(mongoReply.requestId, callbackInfo); - } - - // Only execute callback if we have a caller - // chained is for findAndModify as it does not respect write concerns - if(callbackInfo && callbackInfo.callback && callbackInfo.info && Array.isArray(callbackInfo.info.chained)) { - // Check if callback has already been fired (missing chain command) - var chained = callbackInfo.info.chained; - var numberOfFoundCallbacks = 0; - for(var i = 0; i < chained.length; i++) { - if(server._hasHandler(chained[i])) numberOfFoundCallbacks++; - } - - // If we have already fired then clean up rest of chain and move on - if(numberOfFoundCallbacks != chained.length) { - for(var i = 0; i < chained.length; i++) { - server._removeHandler(chained[i]); - } - - // Just return from function - return; - } - - // Parse the body - mongoReply.parseBody(message, connectionPool.bson, callbackInfo.info.raw, function(err) { - if(err != null) { - // If pool connection is already closed - if(server._serverState === 'disconnected') return; - // Set server state to disconnected - server._serverState = 'disconnected'; - // Remove all listeners and close the connection pool - server.removeAllListeners(); - connectionPool.stop(true); - - // If we have a callback return the error - if(typeof callback === 'function') { - // ensure no callbacks get called twice - var internalCallback = callback; - callback = null; - // Perform callback - internalCallback(new Error("connection closed due to parseError"), null, server); - } else if(server.isSetMember()) { - if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", new Error("connection closed due to parseError"), server); - } else { - if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", new Error("connection closed due to parseError"), server); - } - - // If we are a single server connection fire errors correctly - if(!server.isSetMember()) { - // Fire all callback errors - server.__executeAllCallbacksWithError(new Error("connection closed due to parseError")); - // Emit error - server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true); - } - // Short cut - return; - } - - // Fetch the callback - var callbackInfo = server._findHandler(mongoReply.responseTo.toString()); - // If we have an error let's execute the callback and clean up all other - // chained commands - var firstResult = mongoReply && mongoReply.documents; - - // Check for an error, if we have one let's trigger the callback and clean up - // The chained callbacks - if(firstResult[0].err != null || firstResult[0].errmsg != null) { - // Trigger the callback for the error - server._callHandler(mongoReply.responseTo, mongoReply, null); - } else { - var chainedIds = callbackInfo.info.chained; - - if(chainedIds.length > 0 && chainedIds[chainedIds.length - 1] == mongoReply.responseTo) { - // Cleanup all other chained calls - chainedIds.pop(); - // Remove listeners - for(var i = 0; i < chainedIds.length; i++) server._removeHandler(chainedIds[i]); - // Call the handler - server._callHandler(mongoReply.responseTo, callbackInfo.info.results.shift(), null); - } else{ - // Add the results to all the results - for(var i = 0; i < chainedIds.length; i++) { - var handler = server._findHandler(chainedIds[i]); - // Check if we have an object, if it's the case take the current object commands and - // and add this one - if(handler.info != null) { - handler.info.results = Array.isArray(callbackInfo.info.results) ? callbackInfo.info.results : []; - handler.info.results.push(mongoReply); - } - } - } - } - }); - } else if(callbackInfo && callbackInfo.callback && callbackInfo.info) { - // Parse the body - mongoReply.parseBody(message, connectionPool.bson, callbackInfo.info.raw, function(err) { - if(err != null) { - // If pool connection is already closed - if(server._serverState === 'disconnected') return; - // Set server state to disconnected - server._serverState = 'disconnected'; - // Remove all listeners and close the connection pool - server.removeAllListeners(); - connectionPool.stop(true); - - // If we have a callback return the error - if(typeof callback === 'function') { - // ensure no callbacks get called twice - var internalCallback = callback; - callback = null; - // Perform callback - internalCallback(new Error("connection closed due to parseError"), null, server); - } else if(server.isSetMember()) { - if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", new Error("connection closed due to parseError"), server); - } else { - if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", new Error("connection closed due to parseError"), server); - } - - // If we are a single server connection fire errors correctly - if(!server.isSetMember()) { - // Fire all callback errors - server.__executeAllCallbacksWithError(new Error("connection closed due to parseError")); - // Emit error - server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true); - } - // Short cut - return; - } - - // Let's record the stats info if it's enabled - if(server.recordQueryStats == true && server._state['runtimeStats'] != null - && server._state.runtimeStats['queryStats'] instanceof RunningStats) { - // Add data point to the running statistics object - server._state.runtimeStats.queryStats.push(new Date().getTime() - callbackInfo.info.start); - } - - server._callHandler(mongoReply.responseTo, mongoReply, null); - }); - } - } - } catch (err) { - // Throw error in next tick - processor(function() { - throw err; - }) - } - }); - - // Handle timeout - connectionPool.on("timeout", function(err) { - // If pool connection is already closed - if(server._serverState === 'disconnected' - || server._serverState === 'destroyed') return; - // Set server state to disconnected - server._serverState = 'disconnected'; - // If we have a callback return the error - if(typeof callback === 'function') { - // ensure no callbacks get called twice - var internalCallback = callback; - callback = null; - // Perform callback - internalCallback(err, null, server); - } else if(server.isSetMember()) { - if(server.listeners("timeout") && server.listeners("timeout").length > 0) server.emit("timeout", err, server); - } else { - if(eventReceiver.listeners("timeout") && eventReceiver.listeners("timeout").length > 0) eventReceiver.emit("timeout", err, server); - } - - // If we are a single server connection fire errors correctly - if(!server.isSetMember()) { - // Fire all callback errors - server.__executeAllCallbacksWithError(err); - // Emit error - server._emitAcrossAllDbInstances(server, eventReceiver, "timeout", err, server, true); - } - }); - - // Handle errors - connectionPool.on("error", function(message, connection, error_options) { - // If pool connection is already closed - if(server._serverState === 'disconnected' - || server._serverState === 'destroyed') return; - // Set server state to disconnected - server._serverState = 'disconnected'; - // Error message - var error_message = new Error(message && message.err ? message.err : message); - // Error message coming from ssl - if(error_options && error_options.ssl) error_message.ssl = true; - // If we have a callback return the error - if(typeof callback === 'function') { - // ensure no callbacks get called twice - var internalCallback = callback; - callback = null; - // Perform callback - internalCallback(error_message, null, server); - } else if(server.isSetMember()) { - if(server.listeners("error") && server.listeners("error").length > 0) server.emit("error", error_message, server); - } else { - if(eventReceiver.listeners("error") && eventReceiver.listeners("error").length > 0) eventReceiver.emit("error", error_message, server); - } - - // If we are a single server connection fire errors correctly - if(!server.isSetMember()) { - // Fire all callback errors - server.__executeAllCallbacksWithError(error_message); - // Emit error - server._emitAcrossAllDbInstances(server, eventReceiver, "error", error_message, server, true); - } - }); - - // Handle close events - connectionPool.on("close", function() { - // If pool connection is already closed - if(server._serverState === 'disconnected' - || server._serverState === 'destroyed') return; - // Set server state to disconnected - server._serverState = 'disconnected'; - // If we have a callback return the error - if(typeof callback == 'function') { - // ensure no callbacks get called twice - var internalCallback = callback; - callback = null; - // Perform callback - internalCallback(new Error("connection closed"), null, server); - } else if(server.isSetMember()) { - if(server.listeners("close") && server.listeners("close").length > 0) server.emit("close", new Error("connection closed"), server); - } else { - if(eventReceiver.listeners("close") && eventReceiver.listeners("close").length > 0) eventReceiver.emit("close", new Error("connection closed"), server); - } - - // If we are a single server connection fire errors correctly - if(!server.isSetMember()) { - // Fire all callback errors - server.__executeAllCallbacksWithError(new Error("connection closed")); - // Emit error - server._emitAcrossAllDbInstances(server, eventReceiver, "close", server, null, true); - } - - // If we have autoConnect enabled let's fire up an attempt to reconnect - if(server.isAutoReconnect() - && (server._serverState != 'destroyed')) { - // Set the number of retries - server._reconnect_retries = server.db.numberOfRetries; - - // Attempt reconnect - if(!server._reconnectInProgreess) { - server._reconnectInProgreess = true; - setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds); - } - } - }); - - /** - * @ignore - */ - var __attemptReconnect = function(server) { - return function() { - // Attempt reconnect - server.connect(server.db, server.options, function(err, result) { - server._reconnect_retries = server._reconnect_retries - 1; - - if(err) { - // Retry - if(server._reconnect_retries == 0 || server._serverState == 'destroyed') { - server._serverState = 'connected'; - server._reconnectInProgreess = false - // Fire all callback errors - return server.__executeAllCallbacksWithError(new Error("failed to reconnect to server")); - } else { - return setTimeout(__attemptReconnect(server), server.db.retryMiliSeconds); - } - } else { - // Set as authenticating (isConnected will be false) - server._serverState = 'authenticating'; - // Apply any auths, we don't try to catch any errors here - // as there are nowhere to simply propagate them to - self._apply_auths(server.db, function(err, result) { - server._serverState = 'connected'; - server._reconnectInProgreess = false; - server._commandsStore.execute_queries(); - server._commandsStore.execute_writes(); - }); - } - }); - } - } - - // If we have a parser error we are in an unknown state, close everything and emit - // error - connectionPool.on("parseError", function(message) { - // If pool connection is already closed - if(server._serverState === 'disconnected' - || server._serverState === 'destroyed') return; - // Set server state to disconnected - server._serverState = 'disconnected'; - // If we have a callback return the error - if(typeof callback === 'function') { - // ensure no callbacks get called twice - var internalCallback = callback; - callback = null; - // Perform callback - internalCallback(new Error("connection closed due to parseError"), null, server); - } else if(server.isSetMember()) { - if(server.listeners("parseError") && server.listeners("parseError").length > 0) server.emit("parseError", new Error("connection closed due to parseError"), server); - } else { - if(eventReceiver.listeners("parseError") && eventReceiver.listeners("parseError").length > 0) eventReceiver.emit("parseError", new Error("connection closed due to parseError"), server); - } - - // If we are a single server connection fire errors correctly - if(!server.isSetMember()) { - // Fire all callback errors - server.__executeAllCallbacksWithError(new Error("connection closed due to parseError")); - // Emit error - server._emitAcrossAllDbInstances(server, eventReceiver, "parseError", server, null, true); - } - }); - - // Boot up connection poole, pass in a locator of callbacks - connectionPool.start(); -} - -/** - * @ignore - */ -Server.prototype.allRawConnections = function() { - return this.connectionPool.getAllConnections(); -} - -/** - * Check if a writer can be provided - * @ignore - */ -var canCheckoutWriter = function(self, read) { - // We cannot write to an arbiter or secondary server - if(self.isMasterDoc['arbiterOnly'] == true) { - return new Error("Cannot write to an arbiter"); - } if(self.isMasterDoc['secondary'] == true) { - return new Error("Cannot write to a secondary"); - } else if(read == true && self._readPreference == ReadPreference.SECONDARY && self.isMasterDoc['ismaster'] == true) { - return new Error("Cannot read from primary when secondary only specified"); - } - - // Return no error - return null; -} - -/** - * @ignore - */ -Server.prototype.checkoutWriter = function(read) { - if(read == true) return this.connectionPool.checkoutConnection(); - // Check if are allowed to do a checkout (if we try to use an arbiter f.ex) - var result = canCheckoutWriter(this, read); - // If the result is null check out a writer - if(result == null && this.connectionPool != null) { - return this.connectionPool.checkoutConnection(); - } else if(result == null) { - return null; - } else { - return result; - } -} - -/** - * Check if a reader can be provided - * @ignore - */ -var canCheckoutReader = function(self) { - // We cannot write to an arbiter or secondary server - if(self.isMasterDoc && self.isMasterDoc['arbiterOnly'] == true) { - return new Error("Cannot write to an arbiter"); - } else if(self._readPreference != null) { - // If the read preference is Primary and the instance is not a master return an error - if((self._readPreference == ReadPreference.PRIMARY) && self.isMasterDoc['ismaster'] != true) { - return new Error("Read preference is Server.PRIMARY and server is not master"); - } else if(self._readPreference == ReadPreference.SECONDARY && self.isMasterDoc['ismaster'] == true) { - return new Error("Cannot read from primary when secondary only specified"); - } - } - - // Return no error - return null; -} - -/** - * @ignore - */ -Server.prototype.checkoutReader = function(read) { - // Check if are allowed to do a checkout (if we try to use an arbiter f.ex) - var result = canCheckoutReader(this); - // If the result is null check out a writer - if(result == null && this.connectionPool != null) { - return this.connectionPool.checkoutConnection(); - } else if(result == null) { - return null; - } else { - return result; - } -} - -/** - * @ignore - */ -Server.prototype.enableRecordQueryStats = function(enable) { - this.recordQueryStats = enable; -} - -/** - * Internal statistics object used for calculating average and standard devitation on - * running queries - * @ignore - */ -var RunningStats = function() { - var self = this; - this.m_n = 0; - this.m_oldM = 0.0; - this.m_oldS = 0.0; - this.m_newM = 0.0; - this.m_newS = 0.0; - - // Define getters - Object.defineProperty(this, "numDataValues", { enumerable: true - , get: function () { return this.m_n; } - }); - - Object.defineProperty(this, "mean", { enumerable: true - , get: function () { return (this.m_n > 0) ? this.m_newM : 0.0; } - }); - - Object.defineProperty(this, "variance", { enumerable: true - , get: function () { return ((this.m_n > 1) ? this.m_newS/(this.m_n - 1) : 0.0); } - }); - - Object.defineProperty(this, "standardDeviation", { enumerable: true - , get: function () { return Math.sqrt(this.variance); } - }); - - Object.defineProperty(this, "sScore", { enumerable: true - , get: function () { - var bottom = this.mean + this.standardDeviation; - if(bottom == 0) return 0; - return ((2 * this.mean * this.standardDeviation)/(bottom)); - } - }); -} - -/** - * @ignore - */ -RunningStats.prototype.push = function(x) { - // Update the number of samples - this.m_n = this.m_n + 1; - // See Knuth TAOCP vol 2, 3rd edition, page 232 - if(this.m_n == 1) { - this.m_oldM = this.m_newM = x; - this.m_oldS = 0.0; - } else { - this.m_newM = this.m_oldM + (x - this.m_oldM) / this.m_n; - this.m_newS = this.m_oldS + (x - this.m_oldM) * (x - this.m_newM); - - // set up for next iteration - this.m_oldM = this.m_newM; - this.m_oldS = this.m_newS; - } -} - -/** - * @ignore - */ -Object.defineProperty(Server.prototype, "autoReconnect", { enumerable: true - , get: function () { - return this.options['auto_reconnect'] == null ? false : this.options['auto_reconnect']; - } -}); - -/** - * @ignore - */ -Object.defineProperty(Server.prototype, "connection", { enumerable: true - , get: function () { - return this.internalConnection; - } - , set: function(connection) { - this.internalConnection = connection; - } -}); - -/** - * @ignore - */ -Object.defineProperty(Server.prototype, "master", { enumerable: true - , get: function () { - return this.internalMaster; - } - , set: function(value) { - this.internalMaster = value; - } -}); - -/** - * @ignore - */ -Object.defineProperty(Server.prototype, "primary", { enumerable: true - , get: function () { - return this; - } -}); - -/** - * Getter for query Stats - * @ignore - */ -Object.defineProperty(Server.prototype, "queryStats", { enumerable: true - , get: function () { - return this._state.runtimeStats.queryStats; - } -}); - -/** - * @ignore - */ -Object.defineProperty(Server.prototype, "runtimeStats", { enumerable: true - , get: function () { - return this._state.runtimeStats; - } -}); - -/** - * Get Read Preference method - * @ignore - */ -Object.defineProperty(Server.prototype, "readPreference", { enumerable: true - , get: function () { - if(this._readPreference == null && this.readSecondary) { - return Server.READ_SECONDARY; - } else if(this._readPreference == null && !this.readSecondary) { - return Server.READ_PRIMARY; - } else { - return this._readPreference; - } - } -}); - -/** - * @ignore - */ -exports.Server = Server; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js deleted file mode 100644 index 9adf526..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/url_parser.js +++ /dev/null @@ -1,241 +0,0 @@ -var fs = require('fs'), - ReadPreference = require('./read_preference').ReadPreference; - -exports.parse = function(url, options) { - // Ensure we have a default options object if none set - options = options || {}; - // Variables - var connection_part = ''; - var auth_part = ''; - var query_string_part = ''; - var dbName = 'admin'; - - // Must start with mongodb - if(url.indexOf("mongodb://") != 0) - throw Error("URL must be in the format mongodb://user:pass@host:port/dbname"); - // If we have a ? mark cut the query elements off - if(url.indexOf("?") != -1) { - query_string_part = url.substr(url.indexOf("?") + 1); - connection_part = url.substring("mongodb://".length, url.indexOf("?")) - } else { - connection_part = url.substring("mongodb://".length); - } - - // Check if we have auth params - if(connection_part.indexOf("@") != -1) { - auth_part = connection_part.split("@")[0]; - connection_part = connection_part.split("@")[1]; - } - - // Check if the connection string has a db - if(connection_part.indexOf(".sock") != -1) { - if(connection_part.indexOf(".sock/") != -1) { - dbName = connection_part.split(".sock/")[1]; - connection_part = connection_part.split("/", connection_part.indexOf(".sock") + ".sock".length); - } - } else if(connection_part.indexOf("/") != -1) { - dbName = connection_part.split("/")[1]; - connection_part = connection_part.split("/")[0]; - } - - // Result object - var object = {}; - - // Pick apart the authentication part of the string - var authPart = auth_part || ''; - var auth = authPart.split(':', 2); - if(options['uri_decode_auth']){ - auth[0] = decodeURIComponent(auth[0]); - if(auth[1]){ - auth[1] = decodeURIComponent(auth[1]); - } - } - - // Add auth to final object if we have 2 elements - if(auth.length == 2) object.auth = {user: auth[0], password: auth[1]}; - - // Variables used for temporary storage - var hostPart; - var urlOptions; - var servers; - var serverOptions = {socketOptions: {}}; - var dbOptions = {read_preference_tags: []}; - var replSetServersOptions = {socketOptions: {}}; - // Add server options to final object - object.server_options = serverOptions; - object.db_options = dbOptions; - object.rs_options = replSetServersOptions; - object.mongos_options = {}; - - // Let's check if we are using a domain socket - if(url.match(/\.sock/)) { - // Split out the socket part - var domainSocket = url.substring( - url.indexOf("mongodb://") + "mongodb://".length - , url.lastIndexOf(".sock") + ".sock".length); - // Clean out any auth stuff if any - if(domainSocket.indexOf("@") != -1) domainSocket = domainSocket.split("@")[1]; - servers = [{domain_socket: domainSocket}]; - } else { - // Split up the db - hostPart = connection_part; - // Parse all server results - servers = hostPart.split(',').map(function(h) { - var hostPort = h.split(':', 2); - var _host = hostPort[0] || 'localhost'; - var _port = hostPort[1] != null ? parseInt(hostPort[1], 10) : 27017; - // Check for localhost?safe=true style case - if(_host.indexOf("?") != -1) _host = _host.split(/\?/)[0]; - - // Return the mapped object - return {host: _host, port: _port}; - }); - } - - // Get the db name - object.dbName = dbName || 'admin'; - // Split up all the options - urlOptions = (query_string_part || '').split(/[&;]/); - // Ugh, we have to figure out which options go to which constructor manually. - urlOptions.forEach(function(opt) { - if(!opt) return; - var splitOpt = opt.split('='), name = splitOpt[0], value = splitOpt[1]; - // Options implementations - switch(name) { - case 'slaveOk': - case 'slave_ok': - serverOptions.slave_ok = (value == 'true'); - break; - case 'maxPoolSize': - case 'poolSize': - serverOptions.poolSize = parseInt(value, 10); - replSetServersOptions.poolSize = parseInt(value, 10); - break; - case 'autoReconnect': - case 'auto_reconnect': - serverOptions.auto_reconnect = (value == 'true'); - break; - case 'minPoolSize': - throw new Error("minPoolSize not supported"); - case 'maxIdleTimeMS': - throw new Error("maxIdleTimeMS not supported"); - case 'waitQueueMultiple': - throw new Error("waitQueueMultiple not supported"); - case 'waitQueueTimeoutMS': - throw new Error("waitQueueTimeoutMS not supported"); - case 'uuidRepresentation': - throw new Error("uuidRepresentation not supported"); - case 'ssl': - if(value == 'prefer') { - serverOptions.ssl = value; - replSetServersOptions.ssl = value; - break; - } - serverOptions.ssl = (value == 'true'); - replSetServersOptions.ssl = (value == 'true'); - break; - case 'replicaSet': - case 'rs_name': - replSetServersOptions.rs_name = value; - break; - case 'reconnectWait': - replSetServersOptions.reconnectWait = parseInt(value, 10); - break; - case 'retries': - replSetServersOptions.retries = parseInt(value, 10); - break; - case 'readSecondary': - case 'read_secondary': - replSetServersOptions.read_secondary = (value == 'true'); - break; - case 'fsync': - dbOptions.fsync = (value == 'true'); - break; - case 'journal': - dbOptions.journal = (value == 'true'); - break; - case 'safe': - dbOptions.safe = (value == 'true'); - break; - case 'nativeParser': - case 'native_parser': - dbOptions.native_parser = (value == 'true'); - break; - case 'connectTimeoutMS': - serverOptions.socketOptions.connectTimeoutMS = parseInt(value, 10); - replSetServersOptions.socketOptions.connectTimeoutMS = parseInt(value, 10); - break; - case 'socketTimeoutMS': - serverOptions.socketOptions.socketTimeoutMS = parseInt(value, 10); - replSetServersOptions.socketOptions.socketTimeoutMS = parseInt(value, 10); - break; - case 'w': - dbOptions.w = parseInt(value, 10); - break; - case 'authSource': - dbOptions.authSource = value; - break; - case 'authMechanism': - if(value == 'GSSAPI') { - // If no password provided decode only the principal - if(object.auth == null) { - var urlDecodeAuthPart = decodeURIComponent(authPart); - if(urlDecodeAuthPart.indexOf("@") == -1) throw new Error("GSSAPI requires a provided principal"); - object.auth = {user: urlDecodeAuthPart, password: null}; - } else { - object.auth.user = decodeURIComponent(object.auth.user); - } - } - // Only support GSSAPI or MONGODB-CR for now - if(value != 'GSSAPI' && value != 'MONGODB-CR') throw new Error("only GSSAPI or MONGODB-CR is supported by authMechanism"); - dbOptions.authMechanism = value; - break; - case 'wtimeoutMS': - dbOptions.wtimeoutMS = parseInt(value, 10); - break; - case 'readPreference': - if(!ReadPreference.isValid(value)) throw new Error("readPreference must be either primary/primaryPreferred/secondary/secondaryPreferred/nearest"); - dbOptions.read_preference = value; - break; - case 'readPreferenceTags': - // Contains the tag object - var tagObject = {}; - if(value == null || value == '') { - dbOptions.read_preference_tags.push(tagObject); - break; - } - - // Split up the tags - var tags = value.split(/\,/); - for(var i = 0; i < tags.length; i++) { - var parts = tags[i].trim().split(/\:/); - tagObject[parts[0]] = parts[1]; - } - - // Set the preferences tags - dbOptions.read_preference_tags.push(tagObject); - break; - default: - break; - } - }); - - // No tags: should be null (not []) - if(dbOptions.read_preference_tags.length === 0) { - dbOptions.read_preference_tags = null; - } - - // Validate if there are an invalid write concern combinations - if((dbOptions.w == -1 || dbOptions.w == 0) && ( - dbOptions.journal == true - || dbOptions.fsync == true - || dbOptions.safe == true)) throw new Error("w set to -1 or 0 cannot be combined with safe/w/journal/fsync") - - // If no read preference set it to primary - if(!dbOptions.read_preference) dbOptions.read_preference = 'primary'; - - // Add servers to result - object.servers = servers; - // Returned parsed object - return object; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js deleted file mode 100644 index f91417b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js +++ /dev/null @@ -1,930 +0,0 @@ -var QueryCommand = require('./commands/query_command').QueryCommand, - GetMoreCommand = require('./commands/get_more_command').GetMoreCommand, - KillCursorCommand = require('./commands/kill_cursor_command').KillCursorCommand, - Long = require('bson').Long, - ReadPreference = require('./connection/read_preference').ReadPreference, - CursorStream = require('./cursorstream'), - timers = require('timers'), - utils = require('./utils'); - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; - -/** - * Constructor for a cursor object that handles all the operations on query result - * using find. This cursor object is unidirectional and cannot traverse backwards. Clients should not be creating a cursor directly, - * but use find to acquire a cursor. (INTERNAL TYPE) - * - * Options - * - **skip** {Number} skip number of documents to skip. - * - **limit** {Number}, limit the number of results to return. -1 has a special meaning and is used by Db.eval. A value of 1 will also be treated as if it were -1. - * - **sort** {Array | Object}, set to sort the documents coming back from the query. Array of indexes, [['a', 1]] etc. - * - **hint** {Object}, hint force the query to use a specific index. - * - **explain** {Boolean}, explain return the explaination of the query. - * - **snapshot** {Boolean}, snapshot Snapshot mode assures no duplicates are returned. - * - **timeout** {Boolean}, timeout allow the query to timeout. - * - **tailable** {Boolean}, tailable allow the cursor to be tailable. - * - **awaitdata** {Boolean}, awaitdata allow the cursor to wait for data, only applicable for tailable cursor. - * - **batchSize** {Number}, batchSize the number of the subset of results to request the database to return for every request. This should initially be greater than 1 otherwise the database will automatically close the cursor. The batch size can be set to 1 with cursorInstance.batchSize after performing the initial query to the database. - * - **raw** {Boolean}, raw return all query documents as raw buffers (default false). - * - **read** {Boolean}, read specify override of read from source (primary/secondary). - * - **returnKey** {Boolean}, returnKey only return the index key. - * - **maxScan** {Number}, maxScan limit the number of items to scan. - * - **min** {Number}, min set index bounds. - * - **max** {Number}, max set index bounds. - * - **showDiskLoc** {Boolean}, showDiskLoc show disk location of results. - * - **comment** {String}, comment you can put a $comment field on a query to make looking in the profiler logs simpler. - * - **numberOfRetries** {Number}, numberOfRetries if using awaidata specifies the number of times to retry on timeout. - * - **dbName** {String}, dbName override the default dbName. - * - **tailableRetryInterval** {Number}, tailableRetryInterval specify the miliseconds between getMores on tailable cursor. - * - **exhaust** {Boolean}, exhaust have the server send all the documents at once as getMore packets. - * - **partial** {Boolean}, partial have the sharded system return a partial result from mongos. - * - * @class Represents a Cursor. - * @param {Db} db the database object to work with. - * @param {Collection} collection the collection to query. - * @param {Object} selector the query selector. - * @param {Object} fields an object containing what fields to include or exclude from objects returned. - * @param {Object} [options] additional options for the collection. -*/ -function Cursor(db, collection, selector, fields, options) { - this.db = db; - this.collection = collection; - this.selector = selector; - this.fields = fields; - options = !options ? {} : options; - - this.skipValue = options.skip == null ? 0 : options.skip; - this.limitValue = options.limit == null ? 0 : options.limit; - this.sortValue = options.sort; - this.hint = options.hint; - this.explainValue = options.explain; - this.snapshot = options.snapshot; - this.timeout = options.timeout == null ? true : options.timeout; - this.tailable = options.tailable; - this.awaitdata = options.awaitdata; - this.numberOfRetries = options.numberOfRetries == null ? 5 : options.numberOfRetries; - this.currentNumberOfRetries = this.numberOfRetries; - this.batchSizeValue = options.batchSize == null ? 0 : options.batchSize; - this.raw = options.raw == null ? false : options.raw; - this.read = options.read == null ? ReadPreference.PRIMARY : options.read; - this.returnKey = options.returnKey; - this.maxScan = options.maxScan; - this.min = options.min; - this.max = options.max; - this.showDiskLoc = options.showDiskLoc; - this.comment = options.comment; - this.tailableRetryInterval = options.tailableRetryInterval || 100; - this.exhaust = options.exhaust || false; - this.partial = options.partial || false; - this.slaveOk = options.slaveOk || false; - - this.totalNumberOfRecords = 0; - this.items = []; - this.cursorId = Long.fromInt(0); - - // This name - this.dbName = options.dbName; - - // State variables for the cursor - this.state = Cursor.INIT; - // Keep track of the current query run - this.queryRun = false; - this.getMoreTimer = false; - - // If we are using a specific db execute against it - if(this.dbName != null) { - this.collectionName = this.dbName + "." + this.collection.collectionName; - } else { - this.collectionName = (this.db.databaseName ? this.db.databaseName + "." : '') + this.collection.collectionName; - } -}; - -/** - * Resets this cursor to its initial state. All settings like the query string, - * tailable, batchSizeValue, skipValue and limits are preserved. - * - * @return {Cursor} returns itself with rewind applied. - * @api public - */ -Cursor.prototype.rewind = function() { - var self = this; - - if (self.state != Cursor.INIT) { - if (self.state != Cursor.CLOSED) { - self.close(function() {}); - } - - self.numberOfReturned = 0; - self.totalNumberOfRecords = 0; - self.items = []; - self.cursorId = Long.fromInt(0); - self.state = Cursor.INIT; - self.queryRun = false; - } - - return self; -}; - - -/** - * Returns an array of documents. The caller is responsible for making sure that there - * is enough memory to store the results. Note that the array only contain partial - * results when this cursor had been previouly accessed. In that case, - * cursor.rewind() can be used to reset the cursor. - * - * @param {Function} callback This will be called after executing this method successfully. The first parameter will contain the Error object if an error occured, or null otherwise. The second parameter will contain an array of BSON deserialized objects as a result of the query. - * @return {null} - * @api public - */ -Cursor.prototype.toArray = function(callback) { - var self = this; - - if(!callback) { - throw new Error('callback is mandatory'); - } - - if(this.tailable) { - callback(new Error("Tailable cursor cannot be converted to array"), null); - } else if(this.state != Cursor.CLOSED) { - // return toArrayExhaust(self, callback); - // If we are using exhaust we can't use the quick fire method - if(self.exhaust) return toArrayExhaust(self, callback); - // Quick fire using trampoline to avoid nextTick - self.nextObject({noReturn: true}, function(err, result) { - if(err) return callback(utils.toError(err), null); - if(self.cursorId.toString() == "0") { - self.state = Cursor.CLOSED; - return callback(null, self.items); - } - - // Let's issue getMores until we have no more records waiting - getAllByGetMore(self, function(err, done) { - self.state = Cursor.CLOSED; - if(err) return callback(utils.toError(err), null); - // Let's release the internal list - var items = self.items; - self.items = null; - // Return all the items - callback(null, items); - }); - }) - - } else { - callback(new Error("Cursor is closed"), null); - } -} - -var toArrayExhaust = function(self, callback) { - var items = []; - - self.each(function(err, item) { - if(err != null) { - return callback(utils.toError(err), null); - } - - if(item != null && Array.isArray(items)) { - items.push(item); - } else { - var resultItems = items; - items = null; - self.items = []; - callback(null, resultItems); - } - }); -} - -var getAllByGetMore = function(self, callback) { - getMore(self, {noReturn: true}, function(err, result) { - if(err) return callback(utils.toError(err)); - if(result == null) return callback(null, null); - if(self.cursorId.toString() == "0") return callback(null, null); - getAllByGetMore(self, callback); - }) -} - -/** - * Iterates over all the documents for this cursor. As with **{cursor.toArray}**, - * not all of the elements will be iterated if this cursor had been previouly accessed. - * In that case, **{cursor.rewind}** can be used to reset the cursor. However, unlike - * **{cursor.toArray}**, the cursor will only hold a maximum of batch size elements - * at any given time if batch size is specified. Otherwise, the caller is responsible - * for making sure that the entire result can fit the memory. - * - * @param {Function} callback this will be called for while iterating every document of the query result. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the document. - * @return {null} - * @api public - */ -Cursor.prototype.each = function(callback) { - var self = this; - var fn; - - if (!callback) { - throw new Error('callback is mandatory'); - } - - if(this.state != Cursor.CLOSED) { - // If we are using exhaust we can't use the quick fire method - if(self.exhaust) return eachExhaust(self, callback); - // Quick fire using trampoline to avoid nextTick - if(this.items.length > 0) { - // Trampoline all the entries - while(fn = loop(self, callback)) fn(self, callback); - // Call each again - self.each(callback); - } else { - self.nextObject(function(err, item) { - - if(err) { - self.state = Cursor.CLOSED; - return callback(utils.toError(err), item); - } - - if(item == null) return callback(null, null); - callback(null, item); - self.each(callback); - }) - } - } else { - callback(new Error("Cursor is closed"), null); - } -} - -// Special for exhaust command as we don't initiate the actual result sets -// the server just sends them as they arrive meaning we need to get the IO event -// loop happen so we can receive more data from the socket or we return to early -// after the first fetch and loose all the incoming getMore's automatically issued -// from the server. -var eachExhaust = function(self, callback) { - //FIX: stack overflow (on deep callback) (cred: https://github.com/limp/node-mongodb-native/commit/27da7e4b2af02035847f262b29837a94bbbf6ce2) - processor(function(){ - // Fetch the next object until there is no more objects - self.nextObject(function(err, item) { - if(err != null) return callback(err, null); - if(item != null) { - callback(null, item); - eachExhaust(self, callback); - } else { - // Close the cursor if done - self.state = Cursor.CLOSED; - callback(err, null); - } - }); - }); -} - -// Trampoline emptying the number of retrieved items -// without incurring a nextTick operation -var loop = function(self, callback) { - // No more items we are done - if(self.items.length == 0) return; - // Get the next document - var doc = self.items.shift(); - // Callback - callback(null, doc); - // Loop - return loop; -} - -/** - * Determines how many result the query for this cursor will return - * - * @param {Boolean} applySkipLimit if set to true will apply the skip and limits set on the cursor. Defaults to false. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the number of results or null if an error occured. - * @return {null} - * @api public - */ -Cursor.prototype.count = function(applySkipLimit, callback) { - if(typeof applySkipLimit == 'function') { - callback = applySkipLimit; - applySkipLimit = false; - } - - var options = {}; - if(applySkipLimit) { - if(typeof this.skipValue == 'number') options.skip = this.skipValue; - if(typeof this.limitValue == 'number') options.limit = this.limitValue; - } - - // Call count command - this.collection.count(this.selector, options, callback); -}; - -/** - * Sets the sort parameter of this cursor to the given value. - * - * This method has the following method signatures: - * (keyOrList, callback) - * (keyOrList, direction, callback) - * - * @param {String|Array|Object} keyOrList This can be a string or an array. If passed as a string, the string will be the field to sort. If passed an array, each element will represent a field to be sorted and should be an array that contains the format [string, direction]. - * @param {String|Number} direction this determines how the results are sorted. "asc", "ascending" or 1 for asceding order while "desc", "desceding or -1 for descending order. Note that the strings are case insensitive. - * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. - * @return {Cursor} an instance of this object. - * @api public - */ -Cursor.prototype.sort = function(keyOrList, direction, callback) { - callback = callback || function(){}; - if(typeof direction === "function") { callback = direction; direction = null; } - - if(this.tailable) { - callback(new Error("Tailable cursor doesn't support sorting"), null); - } else if(this.queryRun == true || this.state == Cursor.CLOSED) { - callback(new Error("Cursor is closed"), null); - } else { - var order = keyOrList; - - if(direction != null) { - order = [[keyOrList, direction]]; - } - - this.sortValue = order; - callback(null, this); - } - return this; -}; - -/** - * Sets the limit parameter of this cursor to the given value. - * - * @param {Number} limit the new limit. - * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the limit given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. - * @return {Cursor} an instance of this object. - * @api public - */ -Cursor.prototype.limit = function(limit, callback) { - if(this.tailable) { - if(callback) { - callback(new Error("Tailable cursor doesn't support limit"), null); - } else { - throw new Error("Tailable cursor doesn't support limit"); - } - } else if(this.queryRun == true || this.state == Cursor.CLOSED) { - if(callback) { - callback(new Error("Cursor is closed"), null); - } else { - throw new Error("Cursor is closed"); - } - } else { - if(limit != null && limit.constructor != Number) { - if(callback) { - callback(new Error("limit requires an integer"), null); - } else { - throw new Error("limit requires an integer"); - } - } else { - this.limitValue = limit; - if(callback) return callback(null, this); - } - } - - return this; -}; - -/** - * Sets the read preference for the cursor - * - * @param {String} the read preference for the cursor, one of Server.READ_PRIMARY, Server.READ_SECONDARY, Server.READ_SECONDARY_ONLY - * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the read preference given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. - * @return {Cursor} an instance of this object. - * @api public - */ -Cursor.prototype.setReadPreference = function(readPreference, tags, callback) { - if(typeof tags == 'function') callback = tags; - - var _mode = readPreference != null && typeof readPreference == 'object' ? readPreference.mode : readPreference; - - if(this.queryRun == true || this.state == Cursor.CLOSED) { - if(callback == null) throw new Error("Cannot change read preference on executed query or closed cursor"); - callback(new Error("Cannot change read preference on executed query or closed cursor")); - } else if(_mode != null && _mode != 'primary' - && _mode != 'secondaryOnly' && _mode != 'secondary' - && _mode != 'nearest' && _mode != 'primaryPreferred' && _mode != 'secondaryPreferred') { - if(callback == null) throw new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported"); - callback(new Error("only readPreference of primary, secondary, secondaryPreferred, primaryPreferred or nearest supported")); - } else { - this.read = readPreference; - if(callback != null) callback(null, this); - } - - return this; -} - -/** - * Sets the skip parameter of this cursor to the given value. - * - * @param {Number} skip the new skip value. - * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the skip value given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. - * @return {Cursor} an instance of this object. - * @api public - */ -Cursor.prototype.skip = function(skip, callback) { - callback = callback || function(){}; - - if(this.tailable) { - callback(new Error("Tailable cursor doesn't support skip"), null); - } else if(this.queryRun == true || this.state == Cursor.CLOSED) { - callback(new Error("Cursor is closed"), null); - } else { - if(skip != null && skip.constructor != Number) { - callback(new Error("skip requires an integer"), null); - } else { - this.skipValue = skip; - callback(null, this); - } - } - - return this; -}; - -/** - * Sets the batch size parameter of this cursor to the given value. - * - * @param {Number} batchSize the new batch size. - * @param {Function} [callback] this optional callback will be called after executing this method. The first parameter will contain an error object when the batchSize given is not a valid number or when the cursor is already closed while the second parameter will contain a reference to this object upon successful execution. - * @return {Cursor} an instance of this object. - * @api public - */ -Cursor.prototype.batchSize = function(batchSize, callback) { - if(this.state == Cursor.CLOSED) { - if(callback != null) { - return callback(new Error("Cursor is closed"), null); - } else { - throw new Error("Cursor is closed"); - } - } else if(batchSize != null && batchSize.constructor != Number) { - if(callback != null) { - return callback(new Error("batchSize requires an integer"), null); - } else { - throw new Error("batchSize requires an integer"); - } - } else { - this.batchSizeValue = batchSize; - if(callback != null) return callback(null, this); - } - - return this; -}; - -/** - * The limit used for the getMore command - * - * @return {Number} The number of records to request per batch. - * @ignore - * @api private - */ -var limitRequest = function(self) { - var requestedLimit = self.limitValue; - var absLimitValue = Math.abs(self.limitValue); - var absBatchValue = Math.abs(self.batchSizeValue); - - if(absLimitValue > 0) { - if (absBatchValue > 0) { - requestedLimit = Math.min(absLimitValue, absBatchValue); - } - } else { - requestedLimit = self.batchSizeValue; - } - - return requestedLimit; -}; - - -/** - * Generates a QueryCommand object using the parameters of this cursor. - * - * @return {QueryCommand} The command object - * @ignore - * @api private - */ -var generateQueryCommand = function(self) { - // Unpack the options - var queryOptions = QueryCommand.OPTS_NONE; - if(!self.timeout) { - queryOptions |= QueryCommand.OPTS_NO_CURSOR_TIMEOUT; - } - - if(self.tailable != null) { - queryOptions |= QueryCommand.OPTS_TAILABLE_CURSOR; - self.skipValue = self.limitValue = 0; - - // if awaitdata is set - if(self.awaitdata != null) { - queryOptions |= QueryCommand.OPTS_AWAIT_DATA; - } - } - - if(self.exhaust) { - queryOptions |= QueryCommand.OPTS_EXHAUST; - } - - // Unpack the read preference to set slave ok correctly - var read = self.read instanceof ReadPreference ? self.read.mode : self.read; - - // if(self.read == 'secondary') - if(read == ReadPreference.PRIMARY_PREFERRED - || read == ReadPreference.SECONDARY - || read == ReadPreference.SECONDARY_PREFERRED - || read == ReadPreference.NEAREST) { - queryOptions |= QueryCommand.OPTS_SLAVE; - } - - // Override slaveOk from the user - if(self.slaveOk) { - queryOptions |= QueryCommand.OPTS_SLAVE; - } - - if(self.partial) { - queryOptions |= QueryCommand.OPTS_PARTIAL; - } - - // limitValue of -1 is a special case used by Db#eval - var numberToReturn = self.limitValue == -1 ? -1 : limitRequest(self); - - // Check if we need a special selector - if(self.sortValue != null || self.explainValue != null || self.hint != null || self.snapshot != null - || self.returnKey != null || self.maxScan != null || self.min != null || self.max != null - || self.showDiskLoc != null || self.comment != null) { - - // Build special selector - var specialSelector = {'$query':self.selector}; - if(self.sortValue != null) specialSelector['orderby'] = utils.formattedOrderClause(self.sortValue); - if(self.hint != null && self.hint.constructor == Object) specialSelector['$hint'] = self.hint; - if(self.snapshot != null) specialSelector['$snapshot'] = true; - if(self.returnKey != null) specialSelector['$returnKey'] = self.returnKey; - if(self.maxScan != null) specialSelector['$maxScan'] = self.maxScan; - if(self.min != null) specialSelector['$min'] = self.min; - if(self.max != null) specialSelector['$max'] = self.max; - if(self.showDiskLoc != null) specialSelector['$showDiskLoc'] = self.showDiskLoc; - if(self.comment != null) specialSelector['$comment'] = self.comment; - // If we have explain set only return a single document with automatic cursor close - if(self.explainValue != null) { - numberToReturn = (-1)*Math.abs(numberToReturn); - specialSelector['$explain'] = true; - } - - // Return the query - return new QueryCommand(self.db, self.collectionName, queryOptions, self.skipValue, numberToReturn, specialSelector, self.fields); - } else { - return new QueryCommand(self.db, self.collectionName, queryOptions, self.skipValue, numberToReturn, self.selector, self.fields); - } -}; - -/** - * @return {Object} Returns an object containing the sort value of this cursor with - * the proper formatting that can be used internally in this cursor. - * @ignore - * @api private - */ -Cursor.prototype.formattedOrderClause = function() { - return utils.formattedOrderClause(this.sortValue); -}; - -/** - * Converts the value of the sort direction into its equivalent numerical value. - * - * @param sortDirection {String|number} Range of acceptable values: - * 'ascending', 'descending', 'asc', 'desc', 1, -1 - * - * @return {number} The equivalent numerical value - * @throws Error if the given sortDirection is invalid - * @ignore - * @api private - */ -Cursor.prototype.formatSortValue = function(sortDirection) { - return utils.formatSortValue(sortDirection); -}; - -/** - * Gets the next document from the cursor. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object on error while the second parameter will contain a document from the returned result or null if there are no more results. - * @api public - */ -Cursor.prototype.nextObject = function(options, callback) { - var self = this; - - if(typeof options == 'function') { - callback = options; - options = {}; - } - - if(self.state == Cursor.INIT) { - var cmd; - try { - cmd = generateQueryCommand(self); - } catch (err) { - return callback(err, null); - } - - // Execute command - var commandHandler = function(err, result) { - self.state = Cursor.OPEN; - if(err != null && result == null) return callback(utils.toError(err), null); - - if(!err && result.documents[0] && result.documents[0]['$err']) { - return self.close(function() {callback(utils.toError(result.documents[0]['$err']), null);}); - } - - self.queryRun = true; - self.state = Cursor.OPEN; // Adjust the state of the cursor - self.cursorId = result.cursorId; - self.totalNumberOfRecords = result.numberReturned; - - // Add the new documents to the list of items, using forloop to avoid - // new array allocations and copying - for(var i = 0; i < result.documents.length; i++) { - self.items.push(result.documents[i]); - } - - // If we have noReturn set just return (not modifying the internal item list) - // used for toArray - if(options.noReturn) { - return callback(null, true); - } - - // Ignore callbacks until the cursor is dead for exhausted - if(self.exhaust && result.cursorId.toString() == "0") { - self.nextObject(callback); - } else if(self.exhaust == false || self.exhaust == null) { - self.nextObject(callback); - } - }; - - // If we have no connection set on this cursor check one out - if(self.connection == null) { - try { - // self.connection = this.read == null ? self.db.serverConfig.checkoutWriter() : self.db.serverConfig.checkoutReader(this.read); - self.connection = self.db.serverConfig.checkoutReader(this.read); - } catch(err) { - return callback(utils.toError(err), null); - } - } - - // Execute the command - self.db._executeQueryCommand(cmd, {exhaust: self.exhaust, raw:self.raw, read:self.read, connection:self.connection}, commandHandler); - // Set the command handler to null - commandHandler = null; - } else if(self.items.length) { - callback(null, self.items.shift()); - } else if(self.cursorId.greaterThan(Long.fromInt(0))) { - getMore(self, callback); - } else { - // Force cursor to stay open - return self.close(function() {callback(null, null);}); - } -} - -/** - * Gets more results from the database if any. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain an error object on error while the second parameter will contain a document from the returned result or null if there are no more results. - * @ignore - * @api private - */ -var getMore = function(self, options, callback) { - var limit = 0; - - if(typeof options == 'function') { - callback = options; - options = {}; - } - - if(self.state == Cursor.GET_MORE) return callback(null, null); - - // Set get more in progress - self.state = Cursor.GET_MORE; - - // Set options - if (!self.tailable && self.limitValue > 0) { - limit = self.limitValue - self.totalNumberOfRecords; - if (limit < 1) { - self.close(function() {callback(null, null);}); - return; - } - } - - try { - var getMoreCommand = new GetMoreCommand( - self.db - , self.collectionName - , limitRequest(self) - , self.cursorId - ); - - // Set up options - var command_options = {read: self.read, raw: self.raw, connection:self.connection }; - - // Execute the command - self.db._executeQueryCommand(getMoreCommand, command_options, function(err, result) { - var cbValue; - - // Get more done - self.state = Cursor.OPEN; - - if(err != null) { - return callback(utils.toError(err), null); - } - - try { - var isDead = 1 === result.responseFlag && result.cursorId.isZero(); - - self.cursorId = result.cursorId; - self.totalNumberOfRecords += result.numberReturned; - - // Determine if there's more documents to fetch - if(result.numberReturned > 0) { - if (self.limitValue > 0) { - var excessResult = self.totalNumberOfRecords - self.limitValue; - - if (excessResult > 0) { - result.documents.splice(-1 * excessResult, excessResult); - } - } - - // Reset the tries for awaitdata if we are using it - self.currentNumberOfRetries = self.numberOfRetries; - // Get the documents - for(var i = 0; i < result.documents.length; i++) { - self.items.push(result.documents[i]); - } - - // Don's shift a document out as we need it for toArray - if(options.noReturn) { - cbValue = true; - } else { - cbValue = self.items.shift(); - } - } else if(self.tailable && !isDead && self.awaitdata) { - // Excute the tailable cursor once more, will timeout after ~4 sec if awaitdata used - self.currentNumberOfRetries = self.currentNumberOfRetries - 1; - if(self.currentNumberOfRetries == 0) { - self.close(function() { - callback(new Error("tailable cursor timed out"), null); - }); - } else { - getMore(self, callback); - } - } else if(self.tailable && !isDead) { - self.getMoreTimer = setTimeout(function() { getMore(self, callback); }, self.tailableRetryInterval); - } else { - self.close(function() {callback(null, null); }); - } - - result = null; - } catch(err) { - callback(utils.toError(err), null); - } - if (cbValue != null) callback(null, cbValue); - }); - - getMoreCommand = null; - } catch(err) { - // Get more done - self.state = Cursor.OPEN; - - var handleClose = function() { - callback(utils.toError(err), null); - }; - - self.close(handleClose); - handleClose = null; - } -} - -/** - * Gets a detailed information about how the query is performed on this cursor and how - * long it took the database to process it. - * - * @param {Function} callback this will be called after executing this method. The first parameter will always be null while the second parameter will be an object containing the details. - * @api public - */ -Cursor.prototype.explain = function(callback) { - var limit = (-1)*Math.abs(this.limitValue); - - // Create a new cursor and fetch the plan - var cursor = new Cursor(this.db, this.collection, this.selector, this.fields, { - skip: this.skipValue - , limit:limit - , sort: this.sortValue - , hint: this.hint - , explain: true - , snapshot: this.snapshot - , timeout: this.timeout - , tailable: this.tailable - , batchSize: this.batchSizeValue - , slaveOk: this.slaveOk - , raw: this.raw - , read: this.read - , returnKey: this.returnKey - , maxScan: this.maxScan - , min: this.min - , max: this.max - , showDiskLoc: this.showDiskLoc - , comment: this.comment - , awaitdata: this.awaitdata - , numberOfRetries: this.numberOfRetries - , dbName: this.dbName - }); - - // Fetch the explaination document - cursor.nextObject(function(err, item) { - if(err != null) return callback(utils.toError(err), null); - // close the cursor - cursor.close(function(err, result) { - if(err != null) return callback(utils.toError(err), null); - callback(null, item); - }); - }); -}; - -/** - * Returns a Node ReadStream interface for this cursor. - * - * Options - * - **transform** {Function} function of type function(object) { return transformed }, allows for transformation of data before emitting. - * - * @return {CursorStream} returns a stream object. - * @api public - */ -Cursor.prototype.stream = function stream(options) { - return new CursorStream(this, options); -} - -/** - * Close the cursor. - * - * @param {Function} callback this will be called after executing this method. The first parameter will always contain null while the second parameter will contain a reference to this cursor. - * @return {null} - * @api public - */ -Cursor.prototype.close = function(callback) { - var self = this - this.getMoreTimer && clearTimeout(this.getMoreTimer); - // Close the cursor if not needed - if(this.cursorId instanceof Long && this.cursorId.greaterThan(Long.fromInt(0))) { - try { - var command = new KillCursorCommand(this.db, [this.cursorId]); - // Added an empty callback to ensure we don't throw any null exceptions - this.db._executeQueryCommand(command, {read:self.read, raw:self.raw, connection:self.connection}, function() {}); - } catch(err) {} - } - - // Null out the connection - self.connection = null; - // Reset cursor id - this.cursorId = Long.fromInt(0); - // Set to closed status - this.state = Cursor.CLOSED; - - if(callback) { - callback(null, self); - self.items = []; - } - - return this; -}; - -/** - * Check if the cursor is closed or open. - * - * @return {Boolean} returns the state of the cursor. - * @api public - */ -Cursor.prototype.isClosed = function() { - return this.state == Cursor.CLOSED ? true : false; -}; - -/** - * Init state - * - * @classconstant INIT - **/ -Cursor.INIT = 0; - -/** - * Cursor open - * - * @classconstant OPEN - **/ -Cursor.OPEN = 1; - -/** - * Cursor closed - * - * @classconstant CLOSED - **/ -Cursor.CLOSED = 2; - -/** - * Cursor performing a get more - * - * @classconstant OPEN - **/ -Cursor.GET_MORE = 3; - -/** - * @ignore - * @api private - */ -exports.Cursor = Cursor; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js deleted file mode 100644 index 2752091..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursorstream.js +++ /dev/null @@ -1,164 +0,0 @@ -var timers = require('timers'); - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; - -/** - * Module dependecies. - */ -var Stream = require('stream').Stream; - -/** - * CursorStream - * - * Returns a stream interface for the **cursor**. - * - * Options - * - **transform** {Function} function of type function(object) { return transformed }, allows for transformation of data before emitting. - * - * Events - * - **data** {function(item) {}} the data event triggers when a document is ready. - * - **error** {function(err) {}} the error event triggers if an error happens. - * - **close** {function() {}} the end event triggers when there is no more documents available. - * - * @class Represents a CursorStream. - * @param {Cursor} cursor a cursor object that the stream wraps. - * @return {Stream} - */ -function CursorStream(cursor, options) { - if(!(this instanceof CursorStream)) return new CursorStream(cursor); - options = options ? options : {}; - - Stream.call(this); - - this.readable = true; - this.paused = false; - this._cursor = cursor; - this._destroyed = null; - this.options = options; - - // give time to hook up events - var self = this; - process.nextTick(function() { - self._init(); - }); -} - -/** - * Inherit from Stream - * @ignore - * @api private - */ -CursorStream.prototype.__proto__ = Stream.prototype; - -/** - * Flag stating whether or not this stream is readable. - */ -CursorStream.prototype.readable; - -/** - * Flag stating whether or not this stream is paused. - */ -CursorStream.prototype.paused; - -/** - * Initialize the cursor. - * @ignore - * @api private - */ -CursorStream.prototype._init = function () { - if (this._destroyed) return; - this._next(); -} - -/** - * Pull the next document from the cursor. - * @ignore - * @api private - */ -CursorStream.prototype._next = function () { - if(this.paused || this._destroyed) return; - - var self = this; - // Get the next object - processor(function() { - if(self.paused || self._destroyed) return; - - self._cursor.nextObject(function (err, doc) { - self._onNextObject(err, doc); - }); - }); -} - -/** - * Handle each document as its returned from the cursor. - * @ignore - * @api private - */ -CursorStream.prototype._onNextObject = function (err, doc) { - if(err) return this.destroy(err); - - // when doc is null we hit the end of the cursor - if(!doc && (this._cursor.state == 1 || this._cursor.state == 2)) { - this.emit('end') - return this.destroy(); - } else if(doc) { - var data = typeof this.options.transform == 'function' ? this.options.transform(doc) : doc; - this.emit('data', data); - this._next(); - } -} - -/** - * Pauses the stream. - * - * @api public - */ -CursorStream.prototype.pause = function () { - this.paused = true; -} - -/** - * Resumes the stream. - * - * @api public - */ -CursorStream.prototype.resume = function () { - var self = this; - - // Don't do anything if we are not paused - if(!this.paused) return; - if(!this._cursor.state == 3) return; - - process.nextTick(function() { - self.paused = false; - // Only trigger more fetching if the cursor is open - self._next(); - }) -} - -/** - * Destroys the stream, closing the underlying - * cursor. No more events will be emitted. - * - * @api public - */ -CursorStream.prototype.destroy = function (err) { - if (this._destroyed) return; - this._destroyed = true; - this.readable = false; - - this._cursor.close(); - - if(err) { - this.emit('error', err); - } - - this.emit('close'); -} - -// TODO - maybe implement the raw option to pass binary? -//CursorStream.prototype.setEncoding = function () { -//} - -module.exports = exports = CursorStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js deleted file mode 100644 index 4cf6280..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js +++ /dev/null @@ -1,1928 +0,0 @@ -/** - * Module dependencies. - * @ignore - */ -var QueryCommand = require('./commands/query_command').QueryCommand - , DbCommand = require('./commands/db_command').DbCommand - , MongoReply = require('./responses/mongo_reply').MongoReply - , Admin = require('./admin').Admin - , Collection = require('./collection').Collection - , Server = require('./connection/server').Server - , ReplSet = require('./connection/repl_set/repl_set').ReplSet - , ReadPreference = require('./connection/read_preference').ReadPreference - , Mongos = require('./connection/mongos').Mongos - , Cursor = require('./cursor').Cursor - , EventEmitter = require('events').EventEmitter - , inherits = require('util').inherits - , crypto = require('crypto') - , timers = require('timers') - , utils = require('./utils') - , mongodb_cr_authenticate = require('./auth/mongodb_cr.js').authenticate - , mongodb_gssapi_authenticate = require('./auth/mongodb_gssapi.js').authenticate - , mongodb_sspi_authenticate = require('./auth/mongodb_sspi.js').authenticate; - -var hasKerberos = false; -// Check if we have a the kerberos library -try { - require('kerberos'); - hasKerberos = true; -} catch(err) {} - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; - -/** - * Create a new Db instance. - * - * Options - * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). - * - **native_parser** {Boolean, default:false}, use c++ bson parser. - * - **forceServerObjectId** {Boolean, default:false}, force server to create _id fields instead of client. - * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. - * - **serializeFunctions** {Boolean, default:false}, serialize functions. - * - **raw** {Boolean, default:false}, peform operations using raw bson buffers. - * - **recordQueryStats** {Boolean, default:false}, record query statistics during execution. - * - **retryMiliSeconds** {Number, default:5000}, number of miliseconds between retries. - * - **numberOfRetries** {Number, default:5}, number of retries off connection. - * - **logger** {Object, default:null}, an object representing a logger that you want to use, needs to support functions debug, log, error **({error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}})**. - * - **slaveOk** {Number, default:null}, force setting of SlaveOk flag on queries (only use when explicitly connecting to a secondary server). - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @class Represents a Db - * @param {String} databaseName name of the database. - * @param {Object} serverConfig server config object. - * @param {Object} [options] additional options for the collection. - */ -function Db(databaseName, serverConfig, options) { - if(!(this instanceof Db)) return new Db(databaseName, serverConfig, options); - EventEmitter.call(this); - - var self = this; - this.databaseName = databaseName; - this.serverConfig = serverConfig; - this.options = options == null ? {} : options; - // State to check against if the user force closed db - this._applicationClosed = false; - // Fetch the override flag if any - var overrideUsedFlag = this.options['override_used_flag'] == null ? false : this.options['override_used_flag']; - - // Verify that nobody is using this config - if(!overrideUsedFlag && this.serverConfig != null && typeof this.serverConfig == 'object' && this.serverConfig._isUsed && this.serverConfig._isUsed()) { - throw new Error("A Server or ReplSet instance cannot be shared across multiple Db instances"); - } else if(!overrideUsedFlag && typeof this.serverConfig == 'object'){ - // Set being used - this.serverConfig._used = true; - } - - // Allow slaveOk override - this.slaveOk = this.options["slave_ok"] == null ? false : this.options["slave_ok"]; - this.slaveOk = this.options["slaveOk"] == null ? this.slaveOk : this.options["slaveOk"]; - - // Ensure we have a valid db name - validateDatabaseName(databaseName); - - // Contains all the connections for the db - try { - this.native_parser = this.options.native_parser; - // The bson lib - var bsonLib = this.bsonLib = this.options.native_parser ? require('bson').BSONNative : require('bson').BSONPure; - // Fetch the serializer object - var BSON = bsonLib.BSON; - // Create a new instance - this.bson = new BSON([bsonLib.Long, bsonLib.ObjectID, bsonLib.Binary, bsonLib.Code, bsonLib.DBRef, bsonLib.Symbol, bsonLib.Double, bsonLib.Timestamp, bsonLib.MaxKey, bsonLib.MinKey]); - // Backward compatibility to access types - this.bson_deserializer = bsonLib; - this.bson_serializer = bsonLib; - } catch (err) { - // If we tried to instantiate the native driver - var msg = "Native bson parser not compiled, please compile " - + "or avoid using native_parser=true"; - throw Error(msg); - } - - // Internal state of the server - this._state = 'disconnected'; - - this.pkFactory = this.options.pk == null ? bsonLib.ObjectID : this.options.pk; - this.forceServerObjectId = this.options.forceServerObjectId != null ? this.options.forceServerObjectId : false; - - // Added safe - this.safe = this.options.safe == null ? false : this.options.safe; - - // If we have not specified a "safe mode" we just print a warning to the console - if(this.options.safe == null && this.options.w == null && this.options.journal == null && this.options.fsync == null) { - console.log("========================================================================================"); - console.log("= Please ensure that you set the default write concern for the database by setting ="); - console.log("= one of the options ="); - console.log("= ="); - console.log("= w: (value of > -1 or the string 'majority'), where < 1 means ="); - console.log("= no write acknowlegement ="); - console.log("= journal: true/false, wait for flush to journal before acknowlegement ="); - console.log("= fsync: true/false, wait for flush to file system before acknowlegement ="); - console.log("= ="); - console.log("= For backward compatibility safe is still supported and ="); - console.log("= allows values of [true | false | {j:true} | {w:n, wtimeout:n} | {fsync:true}] ="); - console.log("= the default value is false which means the driver receives does not ="); - console.log("= return the information of the success/error of the insert/update/remove ="); - console.log("= ="); - console.log("= ex: new Db(new Server('localhost', 27017), {safe:false}) ="); - console.log("= ="); - console.log("= http://www.mongodb.org/display/DOCS/getLastError+Command ="); - console.log("= ="); - console.log("= The default of no acknowlegement will change in the very near future ="); - console.log("= ="); - console.log("= This message will disappear when the default safe is set on the driver Db ="); - console.log("========================================================================================"); - } - - // Internal states variables - this.notReplied ={}; - this.isInitializing = true; - this.openCalled = false; - - // Command queue, keeps a list of incoming commands that need to be executed once the connection is up - this.commands = []; - - // Set up logger - this.logger = this.options.logger != null - && (typeof this.options.logger.debug == 'function') - && (typeof this.options.logger.error == 'function') - && (typeof this.options.logger.log == 'function') - ? this.options.logger : {error:function(message, object) {}, log:function(message, object) {}, debug:function(message, object) {}}; - - // Associate the logger with the server config - this.serverConfig.logger = this.logger; - if(this.serverConfig.strategyInstance) this.serverConfig.strategyInstance.logger = this.logger; - this.tag = new Date().getTime(); - // Just keeps list of events we allow - this.eventHandlers = {error:[], parseError:[], poolReady:[], message:[], close:[]}; - - // Controls serialization options - this.serializeFunctions = this.options.serializeFunctions != null ? this.options.serializeFunctions : false; - - // Raw mode - this.raw = this.options.raw != null ? this.options.raw : false; - - // Record query stats - this.recordQueryStats = this.options.recordQueryStats != null ? this.options.recordQueryStats : false; - - // If we have server stats let's make sure the driver objects have it enabled - if(this.recordQueryStats == true) { - this.serverConfig.enableRecordQueryStats(true); - } - - // Retry information - this.retryMiliSeconds = this.options.retryMiliSeconds != null ? this.options.retryMiliSeconds : 1000; - this.numberOfRetries = this.options.numberOfRetries != null ? this.options.numberOfRetries : 60; - - // Set default read preference if any - this.readPreference = this.options.readPreference; - - // Ensure we keep a reference to this db - this.serverConfig._dbStore.add(this); -}; - -/** - * @ignore - */ -function validateDatabaseName(databaseName) { - if(typeof databaseName !== 'string') throw new Error("database name must be a string"); - if(databaseName.length === 0) throw new Error("database name cannot be the empty string"); - - var invalidChars = [" ", ".", "$", "/", "\\"]; - for(var i = 0; i < invalidChars.length; i++) { - if(databaseName.indexOf(invalidChars[i]) != -1) throw new Error("database names cannot contain the character '" + invalidChars[i] + "'"); - } -} - -/** - * @ignore - */ -inherits(Db, EventEmitter); - -/** - * Initialize the database connection. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the index information or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.open = function(callback) { - var self = this; - - // Check that the user has not called this twice - if(this.openCalled) { - // Close db - this.close(); - // Throw error - throw new Error("db object already connecting, open cannot be called multiple times"); - } - - // If we have a specified read preference - if(this.readPreference != null) this.serverConfig.setReadPreference(this.readPreference); - - // Set that db has been opened - this.openCalled = true; - - // Set the status of the server - self._state = 'connecting'; - - // Set up connections - if(self.serverConfig instanceof Server || self.serverConfig instanceof ReplSet || self.serverConfig instanceof Mongos) { - // Ensure we have the original options passed in for the server config - var connect_options = {}; - for(var name in self.serverConfig.options) { - connect_options[name] = self.serverConfig.options[name] - } - connect_options.firstCall = true; - - // Attempt to connect - self.serverConfig.connect(self, connect_options, function(err, result) { - if(err != null) { - // Set that db has been closed - self.openCalled = false; - // Return error from connection - return callback(err, null); - } - // Set the status of the server - self._state = 'connected'; - // If we have queued up commands execute a command to trigger replays - if(self.commands.length > 0) _execute_queued_command(self); - // Callback - return callback(null, self); - }); - } else { - return callback(Error("Server parameter must be of type Server, ReplSet or Mongos"), null); - } -}; - -/** - * Create a new Db instance sharing the current socket connections. - * - * @param {String} dbName the name of the database we want to use. - * @return {Db} a db instance using the new database. - * @api public - */ -Db.prototype.db = function(dbName) { - // Copy the options and add out internal override of the not shared flag - var options = {}; - for(var key in this.options) { - options[key] = this.options[key]; - } - - // Add override flag - options['override_used_flag'] = true; - // Create a new db instance - var newDbInstance = new Db(dbName, this.serverConfig, options); - // Add the instance to the list of approved db instances - var allServerInstances = this.serverConfig.allServerInstances(); - // Add ourselves to all server callback instances - for(var i = 0; i < allServerInstances.length; i++) { - // var server = allServerInstances[i]; - // server.dbInstances.push(newDbInstance); - this.serverConfig._dbStore.add(newDbInstance); - } - // Return new db object - return newDbInstance; -} - -/** - * Close the current db connection, including all the child db instances. Emits close event if no callback is provided. - * - * @param {Boolean} [forceClose] connection can never be reused. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.close = function(forceClose, callback) { - var self = this; - // Ensure we force close all connections - this._applicationClosed = false; - - if(typeof forceClose == 'function') { - callback = forceClose; - } else if(typeof forceClose == 'boolean') { - this._applicationClosed = forceClose; - } - - this.serverConfig.close(function(err, result) { - // You can reuse the db as everything is shut down - self.openCalled = false; - // If we have a callback call it - if(callback) callback(err, result); - }); -}; - -/** - * Access the Admin database - * - * @param {Function} [callback] returns the results. - * @return {Admin} the admin db object. - * @api public - */ -Db.prototype.admin = function(callback) { - if(callback == null) return new Admin(this); - callback(null, new Admin(this)); -}; - -/** - * Returns a cursor to all the collection information. - * - * @param {String} [collectionName] the collection name we wish to retrieve the information from. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the options or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.collectionsInfo = function(collectionName, callback) { - if(callback == null && typeof collectionName == 'function') { callback = collectionName; collectionName = null; } - // Create selector - var selector = {}; - // If we are limiting the access to a specific collection name - if(collectionName != null) selector.name = this.databaseName + "." + collectionName; - - // Return Cursor - // callback for backward compatibility - if(callback) { - callback(null, new Cursor(this, new Collection(this, DbCommand.SYSTEM_NAMESPACE_COLLECTION), selector)); - } else { - return new Cursor(this, new Collection(this, DbCommand.SYSTEM_NAMESPACE_COLLECTION), selector); - } -}; - -/** - * Get the list of all collection names for the specified db - * - * Options - * - **namesOnly** {String, default:false}, Return only the full collection namespace. - * - * @param {String} [collectionName] the collection name we wish to filter by. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the collection names or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.collectionNames = function(collectionName, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - collectionName = args.length ? args.shift() : null; - options = args.length ? args.shift() || {} : {}; - - // Ensure no breaking behavior - if(collectionName != null && typeof collectionName == 'object') { - options = collectionName; - collectionName = null; - } - - // Let's make our own callback to reuse the existing collections info method - self.collectionsInfo(collectionName, function(err, cursor) { - if(err != null) return callback(err, null); - - cursor.toArray(function(err, documents) { - if(err != null) return callback(err, null); - - // List of result documents that have been filtered - var filtered_documents = documents.filter(function(document) { - return !(document.name.indexOf(self.databaseName) == -1 || document.name.indexOf('$') != -1); - }); - - // If we are returning only the names - if(options.namesOnly) { - filtered_documents = filtered_documents.map(function(document) { return document.name }); - } - - // Return filtered items - callback(null, filtered_documents); - }); - }); -}; - -/** - * Fetch a specific collection (containing the actual collection information). If the application does not use strict mode you can - * can use it without a callback in the following way. var collection = db.collection('mycollection'); - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. - * - **raw** {Boolean, default:false}, perform all operations using raw bson objects. - * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. - * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). - * - **strict**, (Boolean, default:false) throws an error if the collection does not exist - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {String} collectionName the collection name we wish to access. - * @param {Object} [options] returns option results. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the collection or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.collection = function(collectionName, options, callback) { - var self = this; - if(typeof options === "function") { callback = options; options = {}; } - // Execute safe - - if(options && (options.strict)) { - self.collectionNames(collectionName, function(err, collections) { - if(err != null) return callback(err, null); - - if(collections.length == 0) { - return callback(new Error("Collection " + collectionName + " does not exist. Currently in safe mode."), null); - } else { - try { - var collection = new Collection(self, collectionName, self.pkFactory, options); - } catch(err) { - return callback(err, null); - } - return callback(null, collection); - } - }); - } else { - try { - var collection = new Collection(self, collectionName, self.pkFactory, options); - } catch(err) { - if(callback == null) { - throw err; - } else { - return callback(err, null); - } - } - - // If we have no callback return collection object - return callback == null ? collection : callback(null, collection); - } -}; - -/** - * Fetch all collections for the current db. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the collections or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.collections = function(callback) { - var self = this; - // Let's get the collection names - self.collectionNames(function(err, documents) { - if(err != null) return callback(err, null); - var collections = []; - documents.forEach(function(document) { - collections.push(new Collection(self, document.name.replace(self.databaseName + ".", ''), self.pkFactory)); - }); - // Return the collection objects - callback(null, collections); - }); -}; - -/** - * Evaluate javascript on the server - * - * Options - * - **nolock** {Boolean, default:false}, Tell MongoDB not to block on the evaulation of the javascript. - * - * @param {Code} code javascript to execute on server. - * @param {Object|Array} [parameters] the parameters for the call. - * @param {Object} [options] the options - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from eval or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.eval = function(code, parameters, options, callback) { - // Unpack calls - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - parameters = args.length ? args.shift() : parameters; - options = args.length ? args.shift() || {} : {}; - - var finalCode = code; - var finalParameters = []; - // If not a code object translate to one - if(!(finalCode instanceof this.bsonLib.Code)) { - finalCode = new this.bsonLib.Code(finalCode); - } - - // Ensure the parameters are correct - if(parameters != null && parameters.constructor != Array && typeof parameters !== 'function') { - finalParameters = [parameters]; - } else if(parameters != null && parameters.constructor == Array && typeof parameters !== 'function') { - finalParameters = parameters; - } - - // Create execution selector - var selector = {'$eval':finalCode, 'args':finalParameters}; - // Check if the nolock parameter is passed in - if(options['nolock']) { - selector['nolock'] = options['nolock']; - } - - // Set primary read preference - options.readPreference = ReadPreference.PRIMARY; - - // Execute the eval - this.collection(DbCommand.SYSTEM_COMMAND_COLLECTION).findOne(selector, options, function(err, result) { - if(err) return callback(err); - - if(result && result.ok == 1) { - callback(null, result.retval); - } else if(result) { - callback(new Error("eval failed: " + result.errmsg), null); return; - } else { - callback(err, result); - } - }); -}; - -/** - * Dereference a dbref, against a db - * - * @param {DBRef} dbRef db reference object we wish to resolve. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dereference or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.dereference = function(dbRef, callback) { - var db = this; - // If we have a db reference then let's get the db first - if(dbRef.db != null) db = this.db(dbRef.db); - // Fetch the collection and find the reference - var collection = db.collection(dbRef.namespace); - collection.findOne({'_id':dbRef.oid}, function(err, result) { - callback(err, result); - }); -}; - -/** - * Logout user from server, fire off on all connections and remove all auth info - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from logout or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.logout = function(options, callback) { - var self = this; - // Unpack calls - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - - // Number of connections we need to logout from - var numberOfConnections = this.serverConfig.allRawConnections().length; - - // Let's generate the logout command object - var logoutCommand = DbCommand.logoutCommand(self, {logout:1}, options); - self._executeQueryCommand(logoutCommand, {onAll:true}, function(err, result) { - // Count down - numberOfConnections = numberOfConnections - 1; - // Work around the case where the number of connections are 0 - if(numberOfConnections <= 0 && typeof callback == 'function') { - var internalCallback = callback; - callback = null; - - // Remove the db from auths - self.serverConfig.auth.remove(self.databaseName); - - // Handle any errors - if(err == null && result.documents[0].ok == 1) { - internalCallback(null, true); - } else { - err != null ? internalCallback(err, false) : internalCallback(new Error(result.documents[0].errmsg), false); - } - } - }); -} - -/** - * Authenticate a user against the server. - * authMechanism - * Options - * - **authSource** {String}, The database that the credentials are for, - * different from the name of the current DB, for example admin - * - **authMechanism** {String, default:MONGODB-CR}, The authentication mechanism to use, GSSAPI or MONGODB-CR - * - * @param {String} username username. - * @param {String} password password. - * @param {Object} [options] the options - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from authentication or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.authenticate = function(username, password, options, callback) { - var self = this; - - if(typeof callback === 'undefined') { - callback = options; - options = {}; - } - - // Set default mechanism - if(!options.authMechanism) { - options.authMechanism = 'MONGODB-CR'; - } else if(options.authMechanism != 'GSSAPI' && options.authMechanism != 'MONGODB-CR') { - return callback(new Error("only GSSAPI or MONGODB-CR is supported by authMechanism")); - } - - // the default db to authenticate against is 'this' - // if authententicate is called from a retry context, it may be another one, like admin - var authdb = options.authdb ? options.authdb : self.databaseName; - authdb = options.authSource ? options.authSource : authdb; - - // If classic auth delegate to auth command - if(options.authMechanism == 'MONGODB-CR') { - mongodb_cr_authenticate(self, username, password, authdb, options, callback); - } else if(options.authMechanism == 'GSSAPI') { - // - // Kerberos library is not installed, throw and error - if(hasKerberos == false) { - console.log("========================================================================================"); - console.log("= Please make sure that you install the Kerberos library to use GSSAPI ="); - console.log("= ="); - console.log("= npm install -g kerberos ="); - console.log("= ="); - console.log("= The Kerberos package is not installed by default for simplicities sake ="); - console.log("= and needs to be global install ="); - console.log("========================================================================================"); - throw new Error("Kerberos library not installed"); - } - - if(process.platform == 'win32') { - mongodb_sspi_authenticate(self, username, password, authdb, options, callback); - } else { - // We have the kerberos library, execute auth process - mongodb_gssapi_authenticate(self, username, password, authdb, options, callback); - } - } -}; - -/** - * Add a user to the database. - * - * Options - * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {String} username username. - * @param {String} password password. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from addUser or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.addUser = function(username, password, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - - // Get the error options - var errorOptions = _getWriteConcern(this, options, callback); - errorOptions.w = errorOptions.w == null ? 1 : errorOptions.w; - // Use node md5 generator - var md5 = crypto.createHash('md5'); - // Generate keys used for authentication - md5.update(username + ":mongo:" + password); - var userPassword = md5.digest('hex'); - // Fetch a user collection - var collection = this.collection(DbCommand.SYSTEM_USER_COLLECTION); - // Check if we are inserting the first user - collection.count({}, function(err, count) { - // We got an error (f.ex not authorized) - if(err != null) return callback(err, null); - // Check if the user exists and update i - collection.find({user: username}, {dbName: options['dbName']}).toArray(function(err, documents) { - // We got an error (f.ex not authorized) - if(err != null) return callback(err, null); - // Add command keys - var commandOptions = errorOptions; - commandOptions.dbName = options['dbName']; - commandOptions.upsert = true; - - // We have a user, let's update the password or upsert if not - collection.update({user: username},{$set: {user: username, pwd: userPassword}}, commandOptions, function(err, results) { - if(count == 0 && err) { - callback(null, [{user:username, pwd:userPassword}]); - } else if(err) { - callback(err, null) - } else { - callback(null, [{user:username, pwd:userPassword}]); - } - }); - }); - }); -}; - -/** - * Remove a user from a database - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {String} username username. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from removeUser or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.removeUser = function(username, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - - // Figure out the safe mode settings - var safe = self.safe != null && self.safe == false ? {w: 1} : self.safe; - // Override with options passed in if applicable - safe = options != null && options['safe'] != null ? options['safe'] : safe; - // Ensure it's at least set to safe - safe = safe == null ? {w: 1} : safe; - - // Fetch a user collection - var collection = this.collection(DbCommand.SYSTEM_USER_COLLECTION); - collection.findOne({user: username}, {dbName: options['dbName']}, function(err, user) { - if(user != null) { - // Add command keys - var commandOptions = safe; - commandOptions.dbName = options['dbName']; - - collection.remove({user: username}, commandOptions, function(err, result) { - callback(err, true); - }); - } else { - callback(err, false); - } - }); -}; - -/** - * Creates a collection on a server pre-allocating space, need to create f.ex capped collections. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **serializeFunctions** {Boolean, default:false}, serialize functions on the document. - * - **raw** {Boolean, default:false}, perform all operations using raw bson objects. - * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. - * - **capped** {Boolean, default:false}, create a capped collection. - * - **size** {Number}, the size of the capped collection in bytes. - * - **max** {Number}, the maximum number of documents in the capped collection. - * - **autoIndexId** {Boolean, default:true}, create an index on the _id field of the document, True by default on MongoDB 2.2 or higher off for version < 2.2. - * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). - * - **strict**, (Boolean, default:false) throws an error if collection already exists - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {String} collectionName the collection name we wish to access. - * @param {Object} [options] returns option results. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from createCollection or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.createCollection = function(collectionName, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : null; - var self = this; - - // Figure out the safe mode settings - var safe = self.safe != null && self.safe == false ? {w: 1} : self.safe; - // Override with options passed in if applicable - safe = options != null && options['safe'] != null ? options['safe'] : safe; - // Ensure it's at least set to safe - safe = safe == null ? {w: 1} : safe; - - // Check if we have the name - this.collectionNames(collectionName, function(err, collections) { - if(err != null) return callback(err, null); - - var found = false; - collections.forEach(function(collection) { - if(collection.name == self.databaseName + "." + collectionName) found = true; - }); - - // If the collection exists either throw an exception (if db in safe mode) or return the existing collection - if(found && options && options.strict) { - return callback(new Error("Collection " + collectionName + " already exists. Currently in safe mode."), null); - } else if(found){ - try { - var collection = new Collection(self, collectionName, self.pkFactory, options); - } catch(err) { - return callback(err, null); - } - return callback(null, collection); - } - - // Create a new collection and return it - self._executeQueryCommand(DbCommand.createCreateCollectionCommand(self, collectionName, options), {read:false, safe:safe}, function(err, result) { - var document = result.documents[0]; - // If we have no error let's return the collection - if(err == null && document.ok == 1) { - try { - var collection = new Collection(self, collectionName, self.pkFactory, options); - } catch(err) { - return callback(err, null); - } - return callback(null, collection); - } else { - if (null == err) err = utils.toError(document); - callback(err, null); - } - }); - }); -}; - -/** - * Execute a command hash against MongoDB. This lets you acess any commands not available through the api on the server. - * - * @param {Object} selector the command hash to send to the server, ex: {ping:1}. - * @param {Function} callback this will be called after executing this method. The command always return the whole result of the command as the second parameter. - * @return {null} - * @api public - */ -Db.prototype.command = function(selector, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - - // Set up the options - var cursor = new Cursor(this - , new Collection(this, DbCommand.SYSTEM_COMMAND_COLLECTION), selector, {}, { - limit: -1, timeout: QueryCommand.OPTS_NO_CURSOR_TIMEOUT, dbName: options['dbName'] - }); - - // Set read preference if we set one - var readPreference = options['readPreference'] ? options['readPreference'] : false; - - // Ensure only commands who support read Prefrences are exeuted otherwise override and use Primary - if(readPreference != false) { - if(selector['group'] || selector['aggregate'] || selector['collStats'] || selector['dbStats'] - || selector['count'] || selector['distinct'] || selector['geoNear'] || selector['geoSearch'] || selector['geoWalk'] - || (selector['mapreduce'] && selector.out == 'inline')) { - // Set the read preference - cursor.setReadPreference(readPreference); - } else { - cursor.setReadPreference(ReadPreference.PRIMARY); - } - } - - // Return the next object - cursor.nextObject(callback); -}; - -/** - * Drop a collection from the database, removing it permanently. New accesses will create a new collection. - * - * @param {String} collectionName the name of the collection we wish to drop. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dropCollection or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.dropCollection = function(collectionName, callback) { - var self = this; - callback || (callback = function(){}); - - // Drop the collection - this._executeQueryCommand(DbCommand.createDropCollectionCommand(this, collectionName), function(err, result) { - if(err == null && result.documents[0].ok == 1) { - return callback(null, true); - } - - if(null == err) err = utils.toError(result.documents[0]); - callback(err, null); - }); -}; - -/** - * Rename a collection. - * - * Options - * - **dropTarget** {Boolean, default:false}, drop the target name collection if it previously exists. - * - * @param {String} fromCollection the name of the current collection we wish to rename. - * @param {String} toCollection the new name of the collection. - * @param {Object} [options] returns option results. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from renameCollection or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.renameCollection = function(fromCollection, toCollection, options, callback) { - var self = this; - - if(typeof options == 'function') { - callback = options; - options = {} - } - - callback || (callback = function(){}); - // Execute the command, return the new renamed collection if successful - this._executeQueryCommand(DbCommand.createRenameCollectionCommand(this, fromCollection, toCollection, options), function(err, result) { - if(err == null && result.documents[0].ok == 1) { - return callback(null, new Collection(self, toCollection, self.pkFactory)); - } - - if(null == err) err = utils.toError(result.documents[0]); - callback(err, null); - }); -}; - -/** - * Return last error message for the given connection, note options can be combined. - * - * Options - * - **fsync** {Boolean, default:false}, option forces the database to fsync all files before returning. - * - **j** {Boolean, default:false}, awaits the journal commit before returning, > MongoDB 2.0. - * - **w** {Number}, until a write operation has been replicated to N servers. - * - **wtimeout** {Number}, number of miliseconds to wait before timing out. - * - * Connection Options - * - **connection** {Connection}, fire the getLastError down a specific connection. - * - * @param {Object} [options] returns option results. - * @param {Object} [connectionOptions] returns option results. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from lastError or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.lastError = function(options, connectionOptions, callback) { - // Unpack calls - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - connectionOptions = args.length ? args.shift() || {} : {}; - - this._executeQueryCommand(DbCommand.createGetLastErrorCommand(options, this), connectionOptions, function(err, error) { - callback(err, error && error.documents); - }); -}; - -/** - * Legacy method calls. - * - * @ignore - * @api private - */ -Db.prototype.error = Db.prototype.lastError; -Db.prototype.lastStatus = Db.prototype.lastError; - -/** - * Return all errors up to the last time db reset_error_history was called. - * - * Options - * - **connection** {Connection}, fire the getLastError down a specific connection. - * - * @param {Object} [options] returns option results. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from previousErrors or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.previousErrors = function(options, callback) { - // Unpack calls - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - - this._executeQueryCommand(DbCommand.createGetPreviousErrorsCommand(this), options, function(err, error) { - callback(err, error.documents); - }); -}; - -/** - * Runs a command on the database. - * @ignore - * @api private - */ -Db.prototype.executeDbCommand = function(command_hash, options, callback) { - if(callback == null) { callback = options; options = {}; } - this._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this, command_hash, options), options, callback); -}; - -/** - * Runs a command on the database as admin. - * @ignore - * @api private - */ -Db.prototype.executeDbAdminCommand = function(command_hash, options, callback) { - if(callback == null) { callback = options; options = {}; } - this._executeQueryCommand(DbCommand.createAdminDbCommand(this, command_hash), options, callback); -}; - -/** - * Resets the error history of the mongo instance. - * - * Options - * - **connection** {Connection}, fire the getLastError down a specific connection. - * - * @param {Object} [options] returns option results. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from resetErrorHistory or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.resetErrorHistory = function(options, callback) { - // Unpack calls - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - - this._executeQueryCommand(DbCommand.createResetErrorHistoryCommand(this), options, function(err, error) { - callback(err, error.documents); - }); -}; - -/** - * Creates an index on the collection. - * - * Options -* - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **unique** {Boolean, default:false}, creates an unique index. - * - **sparse** {Boolean, default:false}, creates a sparse index. - * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. - * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value - * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. - * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. - * - **v** {Number}, specify the format version of the indexes. - * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) - * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * - * @param {String} collectionName name of the collection to create the index on. - * @param {Object} fieldOrSpec fieldOrSpec that defines the index. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from createIndex or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.createIndex = function(collectionName, fieldOrSpec, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - options = typeof callback === 'function' ? options : callback; - options = options == null ? {} : options; - - // Get the error options - var errorOptions = _getWriteConcern(this, options, callback); - // Create command - var command = DbCommand.createCreateIndexCommand(this, collectionName, fieldOrSpec, options); - // Default command options - var commandOptions = {}; - - // If we have error conditions set handle them - if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { - // Insert options - commandOptions['read'] = false; - // If we have safe set set async to false - if(errorOptions == null) commandOptions['async'] = true; - - // Set safe option - commandOptions['safe'] = errorOptions; - // If we have an error option - if(typeof errorOptions == 'object') { - var keys = Object.keys(errorOptions); - for(var i = 0; i < keys.length; i++) { - commandOptions[keys[i]] = errorOptions[keys[i]]; - } - } - - // Execute insert command - this._executeInsertCommand(command, commandOptions, function(err, result) { - if(err != null) return callback(err, null); - - result = result && result.documents; - if (result[0].err) { - callback(utils.toError(result[0])); - } else { - callback(null, command.documents[0].name); - } - }); - } else if(_hasWriteConcern(errorOptions) && callback == null) { - throw new Error("Cannot use a writeConcern without a provided callback"); - } else { - // Execute insert command - var result = this._executeInsertCommand(command, commandOptions); - // If no callback just return - if(!callback) return; - // If error return error - if(result instanceof Error) { - return callback(result); - } - // Otherwise just return - return callback(null, null); - } -}; - -/** - * Ensures that an index exists, if it does not it creates it - * - * Options - * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **unique** {Boolean, default:false}, creates an unique index. - * - **sparse** {Boolean, default:false}, creates a sparse index. - * - **background** {Boolean, default:false}, creates the index in the background, yielding whenever possible. - * - **dropDups** {Boolean, default:false}, a unique index cannot be created on a key that has pre-existing duplicate values. If you would like to create the index anyway, keeping the first document the database indexes and deleting all subsequent documents that have duplicate value - * - **min** {Number}, for geospatial indexes set the lower bound for the co-ordinates. - * - **max** {Number}, for geospatial indexes set the high bound for the co-ordinates. - * - **v** {Number}, specify the format version of the indexes. - * - **expireAfterSeconds** {Number}, allows you to expire data on indexes applied to a data (MongoDB 2.2 or higher) - * - **name** {String}, override the autogenerated index name (useful if the resulting name is larger than 128 bytes) - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @param {String} collectionName name of the collection to create the index on. - * @param {Object} fieldOrSpec fieldOrSpec that defines the index. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from ensureIndex or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.ensureIndex = function(collectionName, fieldOrSpec, options, callback) { - var self = this; - - if (typeof callback === 'undefined' && typeof options === 'function') { - callback = options; - options = {}; - } - - if (options == null) { - options = {}; - } - - // Get the error options - var errorOptions = _getWriteConcern(this, options, callback); - // Make sure we don't try to do a write concern without a callback - if(_hasWriteConcern(errorOptions) && callback == null) - throw new Error("Cannot use a writeConcern without a provided callback"); - // Create command - var command = DbCommand.createCreateIndexCommand(this, collectionName, fieldOrSpec, options); - var index_name = command.documents[0].name; - - // Default command options - var commandOptions = {}; - // Check if the index allready exists - this.indexInformation(collectionName, function(err, collectionInfo) { - if(err != null) return callback(err, null); - - if(!collectionInfo[index_name]) { - // If we have error conditions set handle them - if(_hasWriteConcern(errorOptions) && typeof callback == 'function') { - // Insert options - commandOptions['read'] = false; - // If we have safe set set async to false - if(errorOptions == null) commandOptions['async'] = true; - - // If we have an error option - if(typeof errorOptions == 'object') { - var keys = Object.keys(errorOptions); - for(var i = 0; i < keys.length; i++) { - commandOptions[keys[i]] = errorOptions[keys[i]]; - } - } - - if(typeof callback === 'function' - && commandOptions.w < 1 && !commandOptions.fsync && !commandOptions.journal) { - commandOptions.w = 1; - } - - self._executeInsertCommand(command, commandOptions, function(err, result) { - // Only callback if we have one specified - if(typeof callback === 'function') { - if(err != null) return callback(err, null); - - result = result && result.documents; - if (result[0].err) { - callback(utils.toError(result[0])); - } else { - callback(null, command.documents[0].name); - } - } - }); - } else { - // Execute insert command - var result = self._executeInsertCommand(command, commandOptions); - // If no callback just return - if(!callback) return; - // If error return error - if(result instanceof Error) { - return callback(result); - } - // Otherwise just return - return callback(null, index_name); - } - } else { - if(typeof callback === 'function') return callback(null, index_name); - } - }); -}; - -/** - * Returns the information available on allocated cursors. - * - * Options - * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). - * - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from cursorInfo or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.cursorInfo = function(options, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - options = args.length ? args.shift() || {} : {}; - - this._executeQueryCommand(DbCommand.createDbSlaveOkCommand(this, {'cursorInfo':1}), options, function(err, result) { - callback(err, result.documents[0]); - }); -}; - -/** - * Drop an index on a collection. - * - * @param {String} collectionName the name of the collection where the command will drop an index. - * @param {String} indexName name of the index to drop. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dropIndex or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.dropIndex = function(collectionName, indexName, callback) { - this._executeQueryCommand(DbCommand.createDropIndexCommand(this, collectionName, indexName), callback); -}; - -/** - * Reindex all indexes on the collection - * Warning: reIndex is a blocking operation (indexes are rebuilt in the foreground) and will be slow for large collections. - * - * @param {String} collectionName the name of the collection. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from reIndex or null if an error occured. - * @api public -**/ -Db.prototype.reIndex = function(collectionName, callback) { - this._executeQueryCommand(DbCommand.createReIndexCommand(this, collectionName), function(err, result) { - if(err != null) { - callback(err, false); - } else if(result.documents[0].errmsg == null) { - callback(null, true); - } else { - callback(new Error(result.documents[0].errmsg), false); - } - }); -}; - -/** - * Retrieves this collections index info. - * - * Options - * - **full** {Boolean, default:false}, returns the full raw index information. - * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {String} collectionName the name of the collection. - * @param {Object} [options] additional options during update. - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from indexInformation or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.indexInformation = function(collectionName, options, callback) { - if(typeof callback === 'undefined') { - if(typeof options === 'undefined') { - callback = collectionName; - collectionName = null; - } else { - callback = options; - } - options = {}; - } - - // If we specified full information - var full = options['full'] == null ? false : options['full']; - // Build selector for the indexes - var selector = collectionName != null ? {ns: (this.databaseName + "." + collectionName)} : {}; - - // Set read preference if we set one - var readPreference = options['readPreference'] ? options['readPreference'] : ReadPreference.PRIMARY; - - // Iterate through all the fields of the index - this.collection(DbCommand.SYSTEM_INDEX_COLLECTION, function(err, collection) { - // Perform the find for the collection - collection.find(selector).setReadPreference(readPreference).toArray(function(err, indexes) { - if(err != null) return callback(err, null); - // Contains all the information - var info = {}; - - // if full defined just return all the indexes directly - if(full) return callback(null, indexes); - - // Process all the indexes - for(var i = 0; i < indexes.length; i++) { - var index = indexes[i]; - // Let's unpack the object - info[index.name] = []; - for(var name in index.key) { - info[index.name].push([name, index.key[name]]); - } - } - - // Return all the indexes - callback(null, info); - }); - }); -}; - -/** - * Drop a database. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from dropDatabase or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.dropDatabase = function(callback) { - var self = this; - - this._executeQueryCommand(DbCommand.createDropDatabaseCommand(this), function(err, result) { - if(err == null && result.documents[0].ok == 1) { - callback(null, true); - } else { - if(err) { - callback(err, false); - } else { - callback(utils.toError(result.documents[0]), false); - } - } - }); -}; - -/** - * Get all the db statistics. - * - * Options - * - **scale** {Number}, divide the returned sizes by scale value. - * - **readPreference** {String}, the preferred read preference ((Server.PRIMARY, Server.PRIMARY_PREFERRED, Server.SECONDARY, Server.SECONDARY_PREFERRED, Server.NEAREST). - * - * @param {Objects} [options] options for the stats command - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from stats or null if an error occured. - * @return {null} - * @api public - */ -Db.prototype.stats = function stats(options, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - // Fetch all commands - options = args.length ? args.shift() || {} : {}; - - // Build command object - var commandObject = { - dbStats:this.collectionName, - } - - // Check if we have the scale value - if(options['scale'] != null) commandObject['scale'] = options['scale']; - - // Execute the command - this.command(commandObject, options, callback); -} - -/** - * @ignore - */ -var __executeQueryCommand = function(self, db_command, options, callback) { - // Options unpacking - var read = options['read'] != null ? options['read'] : false; - var raw = options['raw'] != null ? options['raw'] : self.raw; - var onAll = options['onAll'] != null ? options['onAll'] : false; - var specifiedConnection = options['connection'] != null ? options['connection'] : null; - - // Correct read preference to default primary if set to false, null or primary - if(!(typeof read == 'object') && read._type == 'ReadPreference') { - read = (read == null || read == 'primary' || read == false) ? ReadPreference.PRIMARY : read; - if(!ReadPreference.isValid(read)) return callback(new Error("Illegal readPreference mode specified, " + read)); - } else if(typeof read == 'object' && read._type == 'ReadPreference') { - if(!read.isValid()) return callback(new Error("Illegal readPreference mode specified, " + read.mode)); - } - - // If we have a read preference set and we are a mongos pass the read preference on to the mongos instance, - if(self.serverConfig.isMongos() && read != null && read != false) { - db_command.setMongosReadPreference(read); - } - - // If we got a callback object - if(typeof callback === 'function' && !onAll) { - // Override connection if we passed in a specific connection - var connection = specifiedConnection != null ? specifiedConnection : null; - - if(connection instanceof Error) return callback(connection, null); - - // Fetch either a reader or writer dependent on the specified read option if no connection - // was passed in - if(connection == null) { - // connection = read == null || read == 'primary' || read == false ? self.serverConfig.checkoutWriter(true) : self.serverConfig.checkoutReader(read); - connection = self.serverConfig.checkoutReader(read); - } - - // Ensure we have a valid connection - /*if(connection == null && self.serverConfig.isAutoReconnect()) { - return self.serverConfig._commandsStore.read_from_writer( - { type: 'query' - , db_command: db_command - , options: options - , callback: callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } else */if(connection == null) { - return callback(new Error("no open connections")); - } else if(connection instanceof Error || connection['message'] != null) { - return callback(connection); - } - - // Exhaust Option - var exhaust = options.exhaust || false; - - // Register the handler in the data structure - self.serverConfig._registerHandler(db_command, raw, connection, exhaust, callback); - - // Ensure the connection is valid - if(!connection.isConnected()) { - if(read == ReadPreference.PRIMARY - || read == ReadPreference.PRIMARY_PREFERRED - || (read != null && typeof read == 'object' && read.mode) - || read == null) { - - // Save the command - self.serverConfig._commandsStore.read_from_writer( - { type: 'query' - , db_command: db_command - , options: options - , callback: callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } else { - self.serverConfig._commandsStore.read( - { type: 'query' - , db_command: db_command - , options: options - , callback: callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } - } - - // Write the message out and handle any errors if there are any - connection.write(db_command, function(err) { - if(err != null) { - // Call the handler with an error - if(Array.isArray(db_command)) - self.serverConfig._callHandler(db_command[0].getRequestId(), null, err); - else - self.serverConfig._callHandler(db_command.getRequestId(), null, err); - } - }); - } else if(typeof callback === 'function' && onAll) { - var connections = self.serverConfig.allRawConnections(); - var numberOfEntries = connections.length; - // Go through all the connections - for(var i = 0; i < connections.length; i++) { - // Fetch a connection - var connection = connections[i]; - - // Ensure we have a valid connection - if(connection == null) { - return callback(new Error("no open connections")); - } else if(connection instanceof Error) { - return callback(connection); - } - - // Register the handler in the data structure - self.serverConfig._registerHandler(db_command, raw, connection, callback); - - // Write the message out - connection.write(db_command, function(err) { - // Adjust the number of entries we need to process - numberOfEntries = numberOfEntries - 1; - // Remove listener - if(err != null) { - // Clean up listener and return error - self.serverConfig._removeHandler(db_command.getRequestId()); - } - - // No more entries to process callback with the error - if(numberOfEntries <= 0) { - callback(err); - } - }); - - // Update the db_command request id - db_command.updateRequestId(); - } - } else { - // Fetch either a reader or writer dependent on the specified read option - // var connection = read == null || read == 'primary' || read == false ? self.serverConfig.checkoutWriter(true) : self.serverConfig.checkoutReader(read); - var connection = self.serverConfig.checkoutReader(read); - // Override connection if needed - connection = specifiedConnection != null ? specifiedConnection : connection; - // Ensure we have a valid connection - if(connection == null || connection instanceof Error || connection['message'] != null) return null; - // Write the message out - connection.write(db_command, function(err) { - if(err != null) { - // Emit the error - self.emit("error", err); - } - }); - } -} - -/** - * Execute db query command (not safe) - * @ignore - * @api private - */ -Db.prototype._executeQueryCommand = function(db_command, options, callback) { - var self = this; - - // Unpack the parameters - if (typeof callback === 'undefined') { - callback = options; - options = {}; - } - - // fast fail option used for HA, no retry - var failFast = options['failFast'] != null - ? options['failFast'] - : false; - - // Check if the user force closed the command - if(this._applicationClosed) { - var err = new Error("db closed by application"); - if('function' == typeof callback) { - return callback(err, null); - } else { - throw err; - } - } - - if(this.serverConfig.isDestroyed()) return callback(new Error("Connection was destroyed by application")); - - // Get the configuration - var config = this.serverConfig; - var read = options.read; - - if(!config.canRead(read) && !config.canWrite() && config.isAutoReconnect()) { - if(read == ReadPreference.PRIMARY - || read == ReadPreference.PRIMARY_PREFERRED - || (read != null && typeof read == 'object' && read.mode) - || read == null) { - - // Save the command - self.serverConfig._commandsStore.read_from_writer( - { type: 'query' - , db_command: db_command - , options: options - , callback: callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } else { - self.serverConfig._commandsStore.read( - { type: 'query' - , db_command: db_command - , options: options - , callback: callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } - } else if(!config.canRead(read) && !config.canWrite() && !config.isAutoReconnect()) { - return callback(new Error("no open connections"), null); - } else { - // Execute the command - __executeQueryCommand(self, db_command, options, function (err, result, conn) { - if(callback) callback(err, result, conn); - }); - } -}; - -/** - * @ignore - */ -var __executeInsertCommand = function(self, db_command, options, callback) { - // Always checkout a writer for this kind of operations - var connection = self.serverConfig.checkoutWriter(); - // Get safe mode - var safe = options['safe'] != null ? options['safe'] : false; - var raw = options['raw'] != null ? options['raw'] : self.raw; - var specifiedConnection = options['connection'] != null ? options['connection'] : null; - // Override connection if needed - connection = specifiedConnection != null ? specifiedConnection : connection; - - // Ensure we have a valid connection - if(typeof callback === 'function') { - // Ensure we have a valid connection - /*if(connection == null && self.serverConfig.isAutoReconnect()) { - return self.serverConfig._commandsStore.write( - { type:'insert' - , 'db_command':db_command - , 'options':options - , 'callback':callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } else*/ if(connection == null) { - return callback(new Error("no open connections")); - } else if(connection instanceof Error) { - return callback(connection); - } - - var errorOptions = _getWriteConcern(self, options, callback); - if(errorOptions.w > 0 || errorOptions.w == 'majority' || errorOptions.j || errorOptions.journal || errorOptions.fsync) { - // db command is now an array of commands (original command + lastError) - db_command = [db_command, DbCommand.createGetLastErrorCommand(safe, self)]; - // Register the handler in the data structure - self.serverConfig._registerHandler(db_command[1], raw, connection, callback); - } - } - - // If we have no callback and there is no connection - if(connection == null) return null; - if(connection instanceof Error && typeof callback == 'function') return callback(connection, null); - if(connection instanceof Error) return null; - if(connection == null && typeof callback == 'function') return callback(new Error("no primary server found"), null); - - // Ensure we truly are connected - if(!connection.isConnected()) { - return self.serverConfig._commandsStore.write( - { type:'insert' - , 'db_command':db_command - , 'options':options - , 'callback':callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } - - // Write the message out - connection.write(db_command, function(err) { - // Return the callback if it's not a safe operation and the callback is defined - if(typeof callback === 'function' && (safe == null || safe == false)) { - // Perform the callback - callback(err, null); - } else if(typeof callback === 'function') { - // Call the handler with an error - self.serverConfig._callHandler(db_command[1].getRequestId(), null, err); - } else if(typeof callback == 'function' && safe && safe.w == -1) { - // Call the handler with no error - self.serverConfig._callHandler(db_command[1].getRequestId(), null, null); - } else if(!safe || safe.w == -1) { - self.emit("error", err); - } - }); -} - -/** - * Execute an insert Command - * @ignore - * @api private - */ -Db.prototype._executeInsertCommand = function(db_command, options, callback) { - var self = this; - - // Unpack the parameters - if(callback == null && typeof options === 'function') { - callback = options; - options = {}; - } - - // Ensure options are not null - options = options == null ? {} : options; - - // Check if the user force closed the command - if(this._applicationClosed) { - if(typeof callback == 'function') { - return callback(new Error("db closed by application"), null); - } else { - throw new Error("db closed by application"); - } - } - - if(this.serverConfig.isDestroyed()) return callback(new Error("Connection was destroyed by application")); - - // Get config - var config = self.serverConfig; - // Check if we are connected - if(!config.canWrite() && config.isAutoReconnect()) { - self.serverConfig._commandsStore.write( - { type:'insert' - , 'db_command':db_command - , 'options':options - , 'callback':callback - , db: self - , executeQueryCommand: __executeQueryCommand - , executeInsertCommand: __executeInsertCommand - } - ); - } else if(!config.canWrite() && !config.isAutoReconnect()) { - return callback(new Error("no open connections"), null); - } else { - // Execute write command - __executeInsertCommand(self, db_command, options, callback); - } -} - -/** - * Update command is the same - * @ignore - * @api private - */ -Db.prototype._executeUpdateCommand = Db.prototype._executeInsertCommand; -/** - * Remove command is the same - * @ignore - * @api private - */ -Db.prototype._executeRemoveCommand = Db.prototype._executeInsertCommand; - -/** - * Wrap a Mongo error document into an Error instance. - * Deprecated. Use utils.toError instead. - * - * @ignore - * @api private - * @deprecated - */ -Db.prototype.wrap = utils.toError; - -/** - * Default URL - * - * @classconstant DEFAULT_URL - **/ -Db.DEFAULT_URL = 'mongodb://localhost:27017/default'; - -/** - * Connect to MongoDB using a url as documented at - * - * docs.mongodb.org/manual/reference/connection-string/ - * - * Options - * - **uri_decode_auth** {Boolean, default:false} uri decode the user name and password for authentication - * - **db** {Object, default: null} a hash off options to set on the db object, see **Db constructor** - * - **server** {Object, default: null} a hash off options to set on the server objects, see **Server** constructor** - * - **replSet** {Object, default: null} a hash off options to set on the replSet object, see **ReplSet** constructor** - * - **mongos** {Object, default: null} a hash off options to set on the mongos object, see **Mongos** constructor** - * - * @param {String} url connection url for MongoDB. - * @param {Object} [options] optional options for insert command - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the db instance or null if an error occured. - * @return {null} - * @api public - */ -Db.connect = function(url, options, callback) { - // Ensure correct mapping of the callback - if(typeof options == 'function') { - callback = options; - options = {}; - } - - // Ensure same behavior as previous version w:0 - if(url.indexOf("safe") == -1 - && url.indexOf("w") == -1 - && url.indexOf("journal") == -1 && url.indexOf("j") == -1 - && url.indexOf("fsync") == -1) options.w = 0; - - // Avoid circular require problem - var MongoClient = require('./mongo_client.js').MongoClient; - // Attempt to connect - MongoClient.connect.call(MongoClient, url, options, callback); -} - -/** - * State of the db connection - * @ignore - */ -Object.defineProperty(Db.prototype, "state", { enumerable: true - , get: function () { - return this.serverConfig._serverState; - } -}); - -/** - * @ignore - */ -var _hasWriteConcern = function(errorOptions) { - return errorOptions == true - || errorOptions.w > 0 - || errorOptions.w == 'majority' - || errorOptions.j == true - || errorOptions.journal == true - || errorOptions.fsync == true -} - -/** - * @ignore - */ -var _setWriteConcernHash = function(options) { - var finalOptions = {}; - if(options.w != null) finalOptions.w = options.w; - if(options.journal == true) finalOptions.j = options.journal; - if(options.j == true) finalOptions.j = options.j; - if(options.fsync == true) finalOptions.fsync = options.fsync; - if(options.wtimeout != null) finalOptions.wtimeout = options.wtimeout; - return finalOptions; -} - -/** - * @ignore - */ -var _getWriteConcern = function(self, options, callback) { - // Final options - var finalOptions = {w:1}; - // Local options verification - if(options.w != null || typeof options.j == 'boolean' || typeof options.journal == 'boolean' || typeof options.fsync == 'boolean') { - finalOptions = _setWriteConcernHash(options); - } else if(options.safe != null && typeof options.safe == 'object') { - finalOptions = _setWriteConcernHash(options.safe); - } else if(typeof options.safe == "boolean") { - finalOptions = {w: (options.safe ? 1 : 0)}; - } else if(self.options.w != null || typeof self.options.j == 'boolean' || typeof self.options.journal == 'boolean' || typeof self.options.fsync == 'boolean') { - finalOptions = _setWriteConcernHash(self.options); - } else if(self.safe.w != null || typeof self.safe.j == 'boolean' || typeof self.safe.journal == 'boolean' || typeof self.safe.fsync == 'boolean') { - finalOptions = _setWriteConcernHash(self.safe); - } else if(typeof self.safe == "boolean") { - finalOptions = {w: (self.safe ? 1 : 0)}; - } - - // Ensure we don't have an invalid combination of write concerns - if(finalOptions.w < 1 - && (finalOptions.journal == true || finalOptions.j == true || finalOptions.fsync == true)) throw new Error("No acknowlegement using w < 1 cannot be combined with journal:true or fsync:true"); - - // Return the options - return finalOptions; -} - -/** - * Legacy support - * - * @ignore - * @api private - */ -exports.connect = Db.connect; -exports.Db = Db; - -/** - * Remove all listeners to the db instance. - * @ignore - * @api private - */ -Db.prototype.removeAllEventListeners = function() { - this.removeAllListeners("close"); - this.removeAllListeners("error"); - this.removeAllListeners("timeout"); - this.removeAllListeners("parseError"); - this.removeAllListeners("poolReady"); - this.removeAllListeners("message"); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js deleted file mode 100644 index 572d144..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/chunk.js +++ /dev/null @@ -1,213 +0,0 @@ -var Binary = require('bson').Binary, - ObjectID = require('bson').ObjectID; - -/** - * Class for representing a single chunk in GridFS. - * - * @class - * - * @param file {GridStore} The {@link GridStore} object holding this chunk. - * @param mongoObject {object} The mongo object representation of this chunk. - * - * @throws Error when the type of data field for {@link mongoObject} is not - * supported. Currently supported types for data field are instances of - * {@link String}, {@link Array}, {@link Binary} and {@link Binary} - * from the bson module - * - * @see Chunk#buildMongoObject - */ -var Chunk = exports.Chunk = function(file, mongoObject) { - if(!(this instanceof Chunk)) return new Chunk(file, mongoObject); - - this.file = file; - var self = this; - var mongoObjectFinal = mongoObject == null ? {} : mongoObject; - - this.objectId = mongoObjectFinal._id == null ? new ObjectID() : mongoObjectFinal._id; - this.chunkNumber = mongoObjectFinal.n == null ? 0 : mongoObjectFinal.n; - this.data = new Binary(); - - if(mongoObjectFinal.data == null) { - } else if(typeof mongoObjectFinal.data == "string") { - var buffer = new Buffer(mongoObjectFinal.data.length); - buffer.write(mongoObjectFinal.data, 'binary', 0); - this.data = new Binary(buffer); - } else if(Array.isArray(mongoObjectFinal.data)) { - var buffer = new Buffer(mongoObjectFinal.data.length); - buffer.write(mongoObjectFinal.data.join(''), 'binary', 0); - this.data = new Binary(buffer); - } else if(mongoObjectFinal.data instanceof Binary || Object.prototype.toString.call(mongoObjectFinal.data) == "[object Binary]") { - this.data = mongoObjectFinal.data; - } else if(Buffer.isBuffer(mongoObjectFinal.data)) { - } else { - throw Error("Illegal chunk format"); - } - // Update position - this.internalPosition = 0; -}; - -/** - * Writes a data to this object and advance the read/write head. - * - * @param data {string} the data to write - * @param callback {function(*, GridStore)} This will be called after executing - * this method. The first parameter will contain null and the second one - * will contain a reference to this object. - */ -Chunk.prototype.write = function(data, callback) { - this.data.write(data, this.internalPosition); - this.internalPosition = this.data.length(); - if(callback != null) return callback(null, this); - return this; -}; - -/** - * Reads data and advances the read/write head. - * - * @param length {number} The length of data to read. - * - * @return {string} The data read if the given length will not exceed the end of - * the chunk. Returns an empty String otherwise. - */ -Chunk.prototype.read = function(length) { - // Default to full read if no index defined - length = length == null || length == 0 ? this.length() : length; - - if(this.length() - this.internalPosition + 1 >= length) { - var data = this.data.read(this.internalPosition, length); - this.internalPosition = this.internalPosition + length; - return data; - } else { - return ''; - } -}; - -Chunk.prototype.readSlice = function(length) { - if ((this.length() - this.internalPosition) >= length) { - var data = null; - if (this.data.buffer != null) { //Pure BSON - data = this.data.buffer.slice(this.internalPosition, this.internalPosition + length); - } else { //Native BSON - data = new Buffer(length); - length = this.data.readInto(data, this.internalPosition); - } - this.internalPosition = this.internalPosition + length; - return data; - } else { - return null; - } -}; - -/** - * Checks if the read/write head is at the end. - * - * @return {boolean} Whether the read/write head has reached the end of this - * chunk. - */ -Chunk.prototype.eof = function() { - return this.internalPosition == this.length() ? true : false; -}; - -/** - * Reads one character from the data of this chunk and advances the read/write - * head. - * - * @return {string} a single character data read if the the read/write head is - * not at the end of the chunk. Returns an empty String otherwise. - */ -Chunk.prototype.getc = function() { - return this.read(1); -}; - -/** - * Clears the contents of the data in this chunk and resets the read/write head - * to the initial position. - */ -Chunk.prototype.rewind = function() { - this.internalPosition = 0; - this.data = new Binary(); -}; - -/** - * Saves this chunk to the database. Also overwrites existing entries having the - * same id as this chunk. - * - * @param callback {function(*, GridStore)} This will be called after executing - * this method. The first parameter will contain null and the second one - * will contain a reference to this object. - */ -Chunk.prototype.save = function(callback) { - var self = this; - - self.file.chunkCollection(function(err, collection) { - if(err) return callback(err); - - collection.remove({'_id':self.objectId}, {safe:true}, function(err, result) { - if(err) return callback(err); - - if(self.data.length() > 0) { - self.buildMongoObject(function(mongoObject) { - collection.insert(mongoObject, {safe:true}, function(err, collection) { - callback(err, self); - }); - }); - } else { - callback(null, self); - } - }); - }); -}; - -/** - * Creates a mongoDB object representation of this chunk. - * - * @param callback {function(Object)} This will be called after executing this - * method. The object will be passed to the first parameter and will have - * the structure: - * - *
      
      - *        {
      - *          '_id' : , // {number} id for this chunk
      - *          'files_id' : , // {number} foreign key to the file collection
      - *          'n' : , // {number} chunk number
      - *          'data' : , // {bson#Binary} the chunk data itself
      - *        }
      - *        
      - * - * @see MongoDB GridFS Chunk Object Structure - */ -Chunk.prototype.buildMongoObject = function(callback) { - var mongoObject = {'_id': this.objectId, - 'files_id': this.file.fileId, - 'n': this.chunkNumber, - 'data': this.data}; - callback(mongoObject); -}; - -/** - * @return {number} the length of the data - */ -Chunk.prototype.length = function() { - return this.data.length(); -}; - -/** - * The position of the read/write head - * @name position - * @lends Chunk# - * @field - */ -Object.defineProperty(Chunk.prototype, "position", { enumerable: true - , get: function () { - return this.internalPosition; - } - , set: function(value) { - this.internalPosition = value; - } -}); - -/** - * The default chunk size - * @constant - */ -Chunk.DEFAULT_CHUNK_SIZE = 1024 * 256; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js deleted file mode 100644 index aa695b7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/grid.js +++ /dev/null @@ -1,103 +0,0 @@ -var GridStore = require('./gridstore').GridStore, - ObjectID = require('bson').ObjectID; - -/** - * A class representation of a simple Grid interface. - * - * @class Represents the Grid. - * @param {Db} db A database instance to interact with. - * @param {String} [fsName] optional different root collection for GridFS. - * @return {Grid} - */ -function Grid(db, fsName) { - - if(!(this instanceof Grid)) return new Grid(db, fsName); - - this.db = db; - this.fsName = fsName == null ? GridStore.DEFAULT_ROOT_COLLECTION : fsName; -} - -/** - * Puts binary data to the grid - * - * Options - * - **_id** {Any}, unique id for this file - * - **root** {String}, root collection to use. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. - * - **content_type** {String}, mime type of the file. Defaults to **{GridStore.DEFAULT_CONTENT_TYPE}**. - * - **chunk_size** {Number}, size for the chunk. Defaults to **{Chunk.DEFAULT_CHUNK_SIZE}**. - * - **metadata** {Object}, arbitrary data the user wants to store. - * - * @param {Buffer} data buffer with Binary Data. - * @param {Object} [options] the options for the files. - * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. - * @return {null} - * @api public - */ -Grid.prototype.put = function(data, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - options = args.length ? args.shift() : {}; - // If root is not defined add our default one - options['root'] = options['root'] == null ? this.fsName : options['root']; - - // Return if we don't have a buffer object as data - if(!(Buffer.isBuffer(data))) return callback(new Error("Data object must be a buffer object"), null); - // Get filename if we are using it - var filename = options['filename'] || null; - // Get id if we are using it - var id = options['_id'] || null; - // Create gridstore - var gridStore = new GridStore(this.db, id, filename, "w", options); - gridStore.open(function(err, gridStore) { - if(err) return callback(err, null); - - gridStore.write(data, function(err, result) { - if(err) return callback(err, null); - - gridStore.close(function(err, result) { - if(err) return callback(err, null); - callback(null, result); - }) - }) - }) -} - -/** - * Get binary data to the grid - * - * @param {Any} id for file. - * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. - * @return {null} - * @api public - */ -Grid.prototype.get = function(id, callback) { - // Create gridstore - var gridStore = new GridStore(this.db, id, null, "r", {root:this.fsName}); - gridStore.open(function(err, gridStore) { - if(err) return callback(err, null); - - // Return the data - gridStore.read(function(err, data) { - return callback(err, data) - }); - }) -} - -/** - * Delete file from grid - * - * @param {Any} id for file. - * @param {Function} callback this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. - * @return {null} - * @api public - */ -Grid.prototype.delete = function(id, callback) { - // Create gridstore - GridStore.unlink(this.db, id, {root:this.fsName}, function(err, result) { - if(err) return callback(err, false); - return callback(null, true); - }); -} - -exports.Grid = Grid; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js deleted file mode 100644 index 0699e32..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js +++ /dev/null @@ -1,1482 +0,0 @@ -/** - * @fileOverview GridFS is a tool for MongoDB to store files to the database. - * Because of the restrictions of the object size the database can hold, a - * facility to split a file into several chunks is needed. The {@link GridStore} - * class offers a simplified api to interact with files while managing the - * chunks of split files behind the scenes. More information about GridFS can be - * found here. - */ -var Chunk = require('./chunk').Chunk, - DbCommand = require('../commands/db_command').DbCommand, - ObjectID = require('bson').ObjectID, - Buffer = require('buffer').Buffer, - fs = require('fs'), - timers = require('timers'), - util = require('util'), - inherits = util.inherits, - ReadStream = require('./readstream').ReadStream, - Stream = require('stream'); - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; -processor = process.nextTick - -var REFERENCE_BY_FILENAME = 0, - REFERENCE_BY_ID = 1; - -/** - * A class representation of a file stored in GridFS. - * - * Modes - * - **"r"** - read only. This is the default mode. - * - **"w"** - write in truncate mode. Existing data will be overwriten. - * - **w+"** - write in edit mode. - * - * Options - * - **root** {String}, root collection to use. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. - * - **content_type** {String}, mime type of the file. Defaults to **{GridStore.DEFAULT_CONTENT_TYPE}**. - * - **chunk_size** {Number}, size for the chunk. Defaults to **{Chunk.DEFAULT_CHUNK_SIZE}**. - * - **metadata** {Object}, arbitrary data the user wants to store. - * - * @class Represents the GridStore. - * @param {Db} db A database instance to interact with. - * @param {Any} [id] optional unique id for this file - * @param {String} [filename] optional filename for this file, no unique constrain on the field - * @param {String} mode set the mode for this file. - * @param {Object} options optional properties to specify. - * @return {GridStore} - */ -var GridStore = function GridStore(db, id, filename, mode, options) { - if(!(this instanceof GridStore)) return new GridStore(db, id, filename, mode, options); - - var self = this; - this.db = db; - - // Call stream constructor - if(typeof Stream == 'function') { - Stream.call(this); - } else { - // 0.4.X backward compatibility fix - Stream.Stream.call(this); - } - - // Handle options - if(typeof options === 'undefined') options = {}; - // Handle mode - if(typeof mode === 'undefined') { - mode = filename; - filename = undefined; - } else if(typeof mode == 'object') { - options = mode; - mode = filename; - filename = undefined; - } - - if(id instanceof ObjectID) { - this.referenceBy = REFERENCE_BY_ID; - this.fileId = id; - this.filename = filename; - } else if(typeof filename == 'undefined') { - this.referenceBy = REFERENCE_BY_FILENAME; - this.filename = id; - if (mode.indexOf('w') != null) { - this.fileId = new ObjectID(); - } - } else { - this.referenceBy = REFERENCE_BY_ID; - this.fileId = id; - this.filename = filename; - } - - // Set up the rest - this.mode = mode == null ? "r" : mode; - this.options = options == null ? {} : options; - this.root = this.options['root'] == null ? exports.GridStore.DEFAULT_ROOT_COLLECTION : this.options['root']; - this.position = 0; - // Set default chunk size - this.internalChunkSize = this.options['chunkSize'] == null ? Chunk.DEFAULT_CHUNK_SIZE : this.options['chunkSize']; -} - -/** - * Code for the streaming capabilities of the gridstore object - * Most code from Aaron heckmanns project https://github.com/aheckmann/gridfs-stream - * Modified to work on the gridstore object itself - * @ignore - */ -if(typeof Stream == 'function') { - GridStore.prototype = { __proto__: Stream.prototype } -} else { - // Node 0.4.X compatibility code - GridStore.prototype = { __proto__: Stream.Stream.prototype } -} - -// Move pipe to _pipe -GridStore.prototype._pipe = GridStore.prototype.pipe; - -/** - * Opens the file from the database and initialize this object. Also creates a - * new one if file does not exist. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain an **{Error}** object and the second parameter will be null if an error occured. Otherwise, the first parameter will be null and the second will contain the reference to this object. - * @return {null} - * @api public - */ -GridStore.prototype.open = function(callback) { - if( this.mode != "w" && this.mode != "w+" && this.mode != "r"){ - callback(new Error("Illegal mode " + this.mode), null); - return; - } - - var self = this; - - if((self.mode == "w" || self.mode == "w+") && self.db.serverConfig.primary != null) { - // Get files collection - self.collection(function(err, collection) { - if(err) return callback(err); - - // Put index on filename - collection.ensureIndex([['filename', 1]], function(err, index) { - if(err) return callback(err); - - // Get chunk collection - self.chunkCollection(function(err, chunkCollection) { - if(err) return callback(err); - - // Ensure index on chunk collection - chunkCollection.ensureIndex([['files_id', 1], ['n', 1]], function(err, index) { - if(err) return callback(err); - _open(self, callback); - }); - }); - }); - }); - } else { - // Open the gridstore - _open(self, callback); - } -}; - -/** - * Hidding the _open function - * @ignore - * @api private - */ -var _open = function(self, callback) { - self.collection(function(err, collection) { - if(err!==null) { - callback(new Error("at collection: "+err), null); - return; - } - - // Create the query - var query = self.referenceBy == REFERENCE_BY_ID ? {_id:self.fileId} : {filename:self.filename}; - query = null == self.fileId && this.filename == null ? null : query; - - // Fetch the chunks - if(query != null) { - collection.find(query, function(err, cursor) { - if(err) return error(err); - - // Fetch the file - cursor.nextObject(function(err, doc) { - if(err) return error(err); - - // Check if the collection for the files exists otherwise prepare the new one - if(doc != null) { - self.fileId = doc._id; - self.filename = doc.filename; - self.contentType = doc.contentType; - self.internalChunkSize = doc.chunkSize; - self.uploadDate = doc.uploadDate; - self.aliases = doc.aliases; - self.length = doc.length; - self.metadata = doc.metadata; - self.internalMd5 = doc.md5; - } else if (self.mode != 'r') { - self.fileId = self.fileId == null ? new ObjectID() : self.fileId; - self.contentType = exports.GridStore.DEFAULT_CONTENT_TYPE; - self.internalChunkSize = self.internalChunkSize == null ? Chunk.DEFAULT_CHUNK_SIZE : self.internalChunkSize; - self.length = 0; - } else { - self.length = 0; - var txtId = self.fileId instanceof ObjectID ? self.fileId.toHexString() : self.fileId; - return error(new Error((self.referenceBy == REFERENCE_BY_ID ? txtId : self.filename) + " does not exist", self)); - } - - // Process the mode of the object - if(self.mode == "r") { - nthChunk(self, 0, function(err, chunk) { - if(err) return error(err); - self.currentChunk = chunk; - self.position = 0; - callback(null, self); - }); - } else if(self.mode == "w") { - // Delete any existing chunks - deleteChunks(self, function(err, result) { - if(err) return error(err); - self.currentChunk = new Chunk(self, {'n':0}); - self.contentType = self.options['content_type'] == null ? self.contentType : self.options['content_type']; - self.internalChunkSize = self.options['chunk_size'] == null ? self.internalChunkSize : self.options['chunk_size']; - self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; - self.position = 0; - callback(null, self); - }); - } else if(self.mode == "w+") { - nthChunk(self, lastChunkNumber(self), function(err, chunk) { - if(err) return error(err); - // Set the current chunk - self.currentChunk = chunk == null ? new Chunk(self, {'n':0}) : chunk; - self.currentChunk.position = self.currentChunk.data.length(); - self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; - self.position = self.length; - callback(null, self); - }); - } - }); - }); - } else { - // Write only mode - self.fileId = null == self.fileId ? new ObjectID() : self.fileId; - self.contentType = exports.GridStore.DEFAULT_CONTENT_TYPE; - self.internalChunkSize = self.internalChunkSize == null ? Chunk.DEFAULT_CHUNK_SIZE : self.internalChunkSize; - self.length = 0; - - self.chunkCollection(function(err, collection2) { - if(err) return error(err); - - // No file exists set up write mode - if(self.mode == "w") { - // Delete any existing chunks - deleteChunks(self, function(err, result) { - if(err) return error(err); - self.currentChunk = new Chunk(self, {'n':0}); - self.contentType = self.options['content_type'] == null ? self.contentType : self.options['content_type']; - self.internalChunkSize = self.options['chunk_size'] == null ? self.internalChunkSize : self.options['chunk_size']; - self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; - self.position = 0; - callback(null, self); - }); - } else if(self.mode == "w+") { - nthChunk(self, lastChunkNumber(self), function(err, chunk) { - if(err) return error(err); - // Set the current chunk - self.currentChunk = chunk == null ? new Chunk(self, {'n':0}) : chunk; - self.currentChunk.position = self.currentChunk.data.length(); - self.metadata = self.options['metadata'] == null ? self.metadata : self.options['metadata']; - self.position = self.length; - callback(null, self); - }); - } - }); - } - }); - - // only pass error to callback once - function error (err) { - if(error.err) return; - callback(error.err = err); - } -}; - -/** - * Stores a file from the file system to the GridFS database. - * - * @param {String|Buffer|FileHandle} file the file to store. - * @param {Function} callback this will be called after this method is executed. The first parameter will be null and the the second will contain the reference to this object. - * @return {null} - * @api public - */ -GridStore.prototype.writeFile = function (file, callback) { - var self = this; - if (typeof file === 'string') { - fs.open(file, 'r', 0666, function (err, fd) { - if(err) return callback(err); - self.writeFile(fd, callback); - }); - return; - } - - self.open(function (err, self) { - if(err) return callback(err, self); - - fs.fstat(file, function (err, stats) { - if(err) return callback(err, self); - - var offset = 0; - var index = 0; - var numberOfChunksLeft = Math.min(stats.size / self.chunkSize); - - // Write a chunk - var writeChunk = function() { - fs.read(file, self.chunkSize, offset, 'binary', function(err, data, bytesRead) { - if(err) return callback(err, self); - - offset = offset + bytesRead; - - // Create a new chunk for the data - var chunk = new Chunk(self, {n:index++}); - chunk.write(data, function(err, chunk) { - if(err) return callback(err, self); - - chunk.save(function(err, result) { - if(err) return callback(err, self); - - self.position = self.position + data.length; - - // Point to current chunk - self.currentChunk = chunk; - - if(offset >= stats.size) { - fs.close(file); - self.close(function(err, result) { - if(err) return callback(err, self); - return callback(null, self); - }); - } else { - return processor(writeChunk); - } - }); - }); - }); - } - - // Process the first write - processor(writeChunk); - }); - }); -}; - -/** - * Writes some data. This method will work properly only if initialized with mode - * "w" or "w+". - * - * @param string {string} The data to write. - * @param close {boolean=false} opt_argument Closes this file after writing if - * true. - * @param callback {function(*, GridStore)} This will be called after executing - * this method. The first parameter will contain null and the second one - * will contain a reference to this object. - * - * @ignore - * @api private - */ -var writeBuffer = function(self, buffer, close, callback) { - if(typeof close === "function") { callback = close; close = null; } - var finalClose = (close == null) ? false : close; - - if(self.mode[0] != "w") { - callback(new Error((self.referenceBy == REFERENCE_BY_ID ? self.toHexString() : self.filename) + " not opened for writing"), null); - } else { - if(self.currentChunk.position + buffer.length >= self.chunkSize) { - // Write out the current Chunk and then keep writing until we have less data left than a chunkSize left - // to a new chunk (recursively) - var previousChunkNumber = self.currentChunk.chunkNumber; - var leftOverDataSize = self.chunkSize - self.currentChunk.position; - var firstChunkData = buffer.slice(0, leftOverDataSize); - var leftOverData = buffer.slice(leftOverDataSize); - // A list of chunks to write out - var chunksToWrite = [self.currentChunk.write(firstChunkData)]; - // If we have more data left than the chunk size let's keep writing new chunks - while(leftOverData.length >= self.chunkSize) { - // Create a new chunk and write to it - var newChunk = new Chunk(self, {'n': (previousChunkNumber + 1)}); - var firstChunkData = leftOverData.slice(0, self.chunkSize); - leftOverData = leftOverData.slice(self.chunkSize); - // Update chunk number - previousChunkNumber = previousChunkNumber + 1; - // Write data - newChunk.write(firstChunkData); - // Push chunk to save list - chunksToWrite.push(newChunk); - } - - // Set current chunk with remaining data - self.currentChunk = new Chunk(self, {'n': (previousChunkNumber + 1)}); - // If we have left over data write it - if(leftOverData.length > 0) self.currentChunk.write(leftOverData); - - // Update the position for the gridstore - self.position = self.position + buffer.length; - // Total number of chunks to write - var numberOfChunksToWrite = chunksToWrite.length; - // Write out all the chunks and then return - for(var i = 0; i < chunksToWrite.length; i++) { - var chunk = chunksToWrite[i]; - chunk.save(function(err, result) { - if(err) return callback(err); - - numberOfChunksToWrite = numberOfChunksToWrite - 1; - - if(numberOfChunksToWrite <= 0) { - return callback(null, self); - } - }) - } - } else { - // Update the position for the gridstore - self.position = self.position + buffer.length; - // We have less data than the chunk size just write it and callback - self.currentChunk.write(buffer); - callback(null, self); - } - } -}; - -/** - * Creates a mongoDB object representation of this object. - * - * @param callback {function(object)} This will be called after executing this - * method. The object will be passed to the first parameter and will have - * the structure: - * - *
      
      - *        {
      - *          '_id' : , // {number} id for this file
      - *          'filename' : , // {string} name for this file
      - *          'contentType' : , // {string} mime type for this file
      - *          'length' : , // {number} size of this file?
      - *          'chunksize' : , // {number} chunk size used by this file
      - *          'uploadDate' : , // {Date}
      - *          'aliases' : , // {array of string}
      - *          'metadata' : , // {string}
      - *        }
      - *        
      - * - * @ignore - * @api private - */ -var buildMongoObject = function(self, callback) { - // // Keeps the final chunk number - // var chunkNumber = 0; - // var previousChunkSize = 0; - // // Get the correct chunk Number, if we have an empty chunk return the previous chunk number - // if(null != self.currentChunk && self.currentChunk.chunkNumber > 0 && self.currentChunk.position == 0) { - // chunkNumber = self.currentChunk.chunkNumber - 1; - // } else { - // chunkNumber = self.currentChunk.chunkNumber; - // previousChunkSize = self.currentChunk.position; - // } - - // // Calcuate the length - // var length = self.currentChunk != null ? (chunkNumber * self.chunkSize + previousChunkSize) : 0; - var mongoObject = { - '_id': self.fileId, - 'filename': self.filename, - 'contentType': self.contentType, - 'length': self.position ? self.position : 0, - 'chunkSize': self.chunkSize, - 'uploadDate': self.uploadDate, - 'aliases': self.aliases, - 'metadata': self.metadata - }; - - var md5Command = {filemd5:self.fileId, root:self.root}; - self.db.command(md5Command, function(err, results) { - mongoObject.md5 = results.md5; - callback(mongoObject); - }); -}; - -/** - * Saves this file to the database. This will overwrite the old entry if it - * already exists. This will work properly only if mode was initialized to - * "w" or "w+". - * - * @param {Function} callback this will be called after executing this method. Passes an **{Error}** object to the first parameter and null to the second if an error occured. Otherwise, passes null to the first and a reference to this object to the second. - * @return {null} - * @api public - */ -GridStore.prototype.close = function(callback) { - var self = this; - - if(self.mode[0] == "w") { - if(self.currentChunk != null && self.currentChunk.position > 0) { - self.currentChunk.save(function(err, chunk) { - if(err && typeof callback == 'function') return callback(err); - - self.collection(function(err, files) { - if(err && typeof callback == 'function') return callback(err); - - // Build the mongo object - if(self.uploadDate != null) { - files.remove({'_id':self.fileId}, {safe:true}, function(err, collection) { - if(err && typeof callback == 'function') return callback(err); - - buildMongoObject(self, function(mongoObject) { - files.save(mongoObject, {safe:true}, function(err) { - if(typeof callback == 'function') - callback(err, mongoObject); - }); - }); - }); - } else { - self.uploadDate = new Date(); - buildMongoObject(self, function(mongoObject) { - files.save(mongoObject, {safe:true}, function(err) { - if(typeof callback == 'function') - callback(err, mongoObject); - }); - }); - } - }); - }); - } else { - self.collection(function(err, files) { - if(err && typeof callback == 'function') return callback(err); - - self.uploadDate = new Date(); - buildMongoObject(self, function(mongoObject) { - files.save(mongoObject, {safe:true}, function(err) { - if(typeof callback == 'function') - callback(err, mongoObject); - }); - }); - }); - } - } else if(self.mode[0] == "r") { - if(typeof callback == 'function') - callback(null, null); - } else { - if(typeof callback == 'function') - callback(new Error("Illegal mode " + self.mode), null); - } -}; - -/** - * Gets the nth chunk of this file. - * - * @param chunkNumber {number} The nth chunk to retrieve. - * @param callback {function(*, Chunk|object)} This will be called after - * executing this method. null will be passed to the first parameter while - * a new {@link Chunk} instance will be passed to the second parameter if - * the chunk was found or an empty object {} if not. - * - * @ignore - * @api private - */ -var nthChunk = function(self, chunkNumber, callback) { - self.chunkCollection(function(err, collection) { - if(err) return callback(err); - - collection.find({'files_id':self.fileId, 'n':chunkNumber}, function(err, cursor) { - if(err) return callback(err); - - cursor.nextObject(function(err, chunk) { - if(err) return callback(err); - - var finalChunk = chunk == null ? {} : chunk; - callback(null, new Chunk(self, finalChunk)); - }); - }); - }); -}; - -/** - * - * @ignore - * @api private - */ -GridStore.prototype._nthChunk = function(chunkNumber, callback) { - nthChunk(this, chunkNumber, callback); -} - -/** - * @return {Number} The last chunk number of this file. - * - * @ignore - * @api private - */ -var lastChunkNumber = function(self) { - return Math.floor(self.length/self.chunkSize); -}; - -/** - * Retrieve this file's chunks collection. - * - * @param {Function} callback this will be called after executing this method. An exception object will be passed to the first parameter when an error occured or null otherwise. A new **{Collection}** object will be passed to the second parameter if no error occured. - * @return {null} - * @api public - */ -GridStore.prototype.chunkCollection = function(callback) { - this.db.collection((this.root + ".chunks"), callback); -}; - -/** - * Deletes all the chunks of this file in the database. - * - * @param callback {function(*, boolean)} This will be called after this method - * executes. Passes null to the first and true to the second argument. - * - * @ignore - * @api private - */ -var deleteChunks = function(self, callback) { - if(self.fileId != null) { - self.chunkCollection(function(err, collection) { - if(err) return callback(err, false); - collection.remove({'files_id':self.fileId}, {safe:true}, function(err, result) { - if(err) return callback(err, false); - callback(null, true); - }); - }); - } else { - callback(null, true); - } -}; - -/** - * Deletes all the chunks of this file in the database. - * - * @param {Function} callback this will be called after this method executes. Passes null to the first and true to the second argument. - * @return {null} - * @api public - */ -GridStore.prototype.unlink = function(callback) { - var self = this; - deleteChunks(this, function(err) { - if(err!==null) { - err.message = "at deleteChunks: " + err.message; - return callback(err); - } - - self.collection(function(err, collection) { - if(err!==null) { - err.message = "at collection: " + err.message; - return callback(err); - } - - collection.remove({'_id':self.fileId}, {safe:true}, function(err) { - callback(err, self); - }); - }); - }); -}; - -/** - * Retrieves the file collection associated with this object. - * - * @param {Function} callback this will be called after executing this method. An exception object will be passed to the first parameter when an error occured or null otherwise. A new **{Collection}** object will be passed to the second parameter if no error occured. - * @return {null} - * @api public - */ -GridStore.prototype.collection = function(callback) { - this.db.collection(this.root + ".files", callback); -}; - -/** - * Reads the data of this file. - * - * @param {String} [separator] the character to be recognized as the newline separator. - * @param {Function} callback This will be called after this method is executed. The first parameter will be null and the second parameter will contain an array of strings representing the entire data, each element representing a line including the separator character. - * @return {null} - * @api public - */ -GridStore.prototype.readlines = function(separator, callback) { - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - separator = args.length ? args.shift() : "\n"; - - this.read(function(err, data) { - if(err) return callback(err); - - var items = data.toString().split(separator); - items = items.length > 0 ? items.splice(0, items.length - 1) : []; - for(var i = 0; i < items.length; i++) { - items[i] = items[i] + separator; - } - - callback(null, items); - }); -}; - -/** - * Deletes all the chunks of this file in the database if mode was set to "w" or - * "w+" and resets the read/write head to the initial position. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. - * @return {null} - * @api public - */ -GridStore.prototype.rewind = function(callback) { - var self = this; - - if(this.currentChunk.chunkNumber != 0) { - if(this.mode[0] == "w") { - deleteChunks(self, function(err, gridStore) { - if(err) return callback(err); - self.currentChunk = new Chunk(self, {'n': 0}); - self.position = 0; - callback(null, self); - }); - } else { - self.currentChunk(0, function(err, chunk) { - if(err) return callback(err); - self.currentChunk = chunk; - self.currentChunk.rewind(); - self.position = 0; - callback(null, self); - }); - } - } else { - self.currentChunk.rewind(); - self.position = 0; - callback(null, self); - } -}; - -/** - * Retrieves the contents of this file and advances the read/write head. Works with Buffers only. - * - * There are 3 signatures for this method: - * - * (callback) - * (length, callback) - * (length, buffer, callback) - * - * @param {Number} [length] the number of characters to read. Reads all the characters from the read/write head to the EOF if not specified. - * @param {String|Buffer} [buffer] a string to hold temporary data. This is used for storing the string data read so far when recursively calling this method. - * @param {Function} callback this will be called after this method is executed. null will be passed to the first parameter and a string containing the contents of the buffer concatenated with the contents read from this file will be passed to the second. - * @return {null} - * @api public - */ -GridStore.prototype.read = function(length, buffer, callback) { - var self = this; - - var args = Array.prototype.slice.call(arguments, 0); - callback = args.pop(); - length = args.length ? args.shift() : null; - buffer = args.length ? args.shift() : null; - - // The data is a c-terminated string and thus the length - 1 - var finalLength = length == null ? self.length - self.position : length; - var finalBuffer = buffer == null ? new Buffer(finalLength) : buffer; - // Add a index to buffer to keep track of writing position or apply current index - finalBuffer._index = buffer != null && buffer._index != null ? buffer._index : 0; - - if((self.currentChunk.length() - self.currentChunk.position + finalBuffer._index) >= finalLength) { - var slice = self.currentChunk.readSlice(finalLength - finalBuffer._index); - // Copy content to final buffer - slice.copy(finalBuffer, finalBuffer._index); - // Update internal position - self.position = self.position + finalBuffer.length; - // Check if we don't have a file at all - if(finalLength == 0 && finalBuffer.length == 0) return callback(new Error("File does not exist"), null); - // Else return data - callback(null, finalBuffer); - } else { - var slice = self.currentChunk.readSlice(self.currentChunk.length() - self.currentChunk.position); - // Copy content to final buffer - slice.copy(finalBuffer, finalBuffer._index); - // Update index position - finalBuffer._index += slice.length; - - // Load next chunk and read more - nthChunk(self, self.currentChunk.chunkNumber + 1, function(err, chunk) { - if(err) return callback(err); - - if(chunk.length() > 0) { - self.currentChunk = chunk; - self.read(length, finalBuffer, callback); - } else { - if (finalBuffer._index > 0) { - callback(null, finalBuffer) - } else { - callback(new Error("no chunks found for file, possibly corrupt"), null); - } - } - }); - } -} - -/** - * Retrieves the position of the read/write head of this file. - * - * @param {Function} callback This gets called after this method terminates. null is passed to the first parameter and the position is passed to the second. - * @return {null} - * @api public - */ -GridStore.prototype.tell = function(callback) { - callback(null, this.position); -}; - -/** - * Moves the read/write head to a new location. - * - * There are 3 signatures for this method - * - * Seek Location Modes - * - **GridStore.IO_SEEK_SET**, **(default)** set the position from the start of the file. - * - **GridStore.IO_SEEK_CUR**, set the position from the current position in the file. - * - **GridStore.IO_SEEK_END**, set the position from the end of the file. - * - * @param {Number} [position] the position to seek to - * @param {Number} [seekLocation] seek mode. Use one of the Seek Location modes. - * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. - * @return {null} - * @api public - */ -GridStore.prototype.seek = function(position, seekLocation, callback) { - var self = this; - - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - seekLocation = args.length ? args.shift() : null; - - var seekLocationFinal = seekLocation == null ? exports.GridStore.IO_SEEK_SET : seekLocation; - var finalPosition = position; - var targetPosition = 0; - - // Calculate the position - if(seekLocationFinal == exports.GridStore.IO_SEEK_CUR) { - targetPosition = self.position + finalPosition; - } else if(seekLocationFinal == exports.GridStore.IO_SEEK_END) { - targetPosition = self.length + finalPosition; - } else { - targetPosition = finalPosition; - } - - // Get the chunk - var newChunkNumber = Math.floor(targetPosition/self.chunkSize); - if(newChunkNumber != self.currentChunk.chunkNumber) { - var seekChunk = function() { - nthChunk(self, newChunkNumber, function(err, chunk) { - self.currentChunk = chunk; - self.position = targetPosition; - self.currentChunk.position = (self.position % self.chunkSize); - callback(err, self); - }); - }; - - if(self.mode[0] == 'w') { - self.currentChunk.save(function(err) { - if(err) return callback(err); - seekChunk(); - }); - } else { - seekChunk(); - } - } else { - self.position = targetPosition; - self.currentChunk.position = (self.position % self.chunkSize); - callback(null, self); - } -}; - -/** - * Verify if the file is at EOF. - * - * @return {Boolean} true if the read/write head is at the end of this file. - * @api public - */ -GridStore.prototype.eof = function() { - return this.position == this.length ? true : false; -}; - -/** - * Retrieves a single character from this file. - * - * @param {Function} callback this gets called after this method is executed. Passes null to the first parameter and the character read to the second or null to the second if the read/write head is at the end of the file. - * @return {null} - * @api public - */ -GridStore.prototype.getc = function(callback) { - var self = this; - - if(self.eof()) { - callback(null, null); - } else if(self.currentChunk.eof()) { - nthChunk(self, self.currentChunk.chunkNumber + 1, function(err, chunk) { - self.currentChunk = chunk; - self.position = self.position + 1; - callback(err, self.currentChunk.getc()); - }); - } else { - self.position = self.position + 1; - callback(null, self.currentChunk.getc()); - } -}; - -/** - * Writes a string to the file with a newline character appended at the end if - * the given string does not have one. - * - * @param {String} string the string to write. - * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. - * @return {null} - * @api public - */ -GridStore.prototype.puts = function(string, callback) { - var finalString = string.match(/\n$/) == null ? string + "\n" : string; - this.write(finalString, callback); -}; - -/** - * Returns read stream based on this GridStore file - * - * Events - * - **data** {function(item) {}} the data event triggers when a document is ready. - * - **end** {function() {}} the end event triggers when there is no more documents available. - * - **close** {function() {}} the close event triggers when the stream is closed. - * - **error** {function(err) {}} the error event triggers if an error happens. - * - * @param {Boolean} autoclose if true current GridStore will be closed when EOF and 'close' event will be fired - * @return {null} - * @api public - */ -GridStore.prototype.stream = function(autoclose) { - return new ReadStream(autoclose, this); -}; - -/** -* The collection to be used for holding the files and chunks collection. -* -* @classconstant DEFAULT_ROOT_COLLECTION -**/ -GridStore.DEFAULT_ROOT_COLLECTION = 'fs'; - -/** -* Default file mime type -* -* @classconstant DEFAULT_CONTENT_TYPE -**/ -GridStore.DEFAULT_CONTENT_TYPE = 'binary/octet-stream'; - -/** -* Seek mode where the given length is absolute. -* -* @classconstant IO_SEEK_SET -**/ -GridStore.IO_SEEK_SET = 0; - -/** -* Seek mode where the given length is an offset to the current read/write head. -* -* @classconstant IO_SEEK_CUR -**/ -GridStore.IO_SEEK_CUR = 1; - -/** -* Seek mode where the given length is an offset to the end of the file. -* -* @classconstant IO_SEEK_END -**/ -GridStore.IO_SEEK_END = 2; - -/** - * Checks if a file exists in the database. - * - * @param {Db} db the database to query. - * @param {String} name the name of the file to look for. - * @param {String} [rootCollection] the root collection that holds the files and chunks collection. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. - * @param {Function} callback this will be called after this method executes. Passes null to the first and passes true to the second if the file exists and false otherwise. - * @return {null} - * @api public - */ -GridStore.exist = function(db, fileIdObject, rootCollection, callback) { - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - rootCollection = args.length ? args.shift() : null; - - // Fetch collection - var rootCollectionFinal = rootCollection != null ? rootCollection : GridStore.DEFAULT_ROOT_COLLECTION; - db.collection(rootCollectionFinal + ".files", function(err, collection) { - if(err) return callback(err); - - // Build query - var query = (typeof fileIdObject == 'string' || Object.prototype.toString.call(fileIdObject) == '[object RegExp]' ) - ? {'filename':fileIdObject} - : {'_id':fileIdObject}; // Attempt to locate file - - collection.find(query, function(err, cursor) { - if(err) return callback(err); - - cursor.nextObject(function(err, item) { - if(err) return callback(err); - callback(null, item == null ? false : true); - }); - }); - }); -}; - -/** - * Gets the list of files stored in the GridFS. - * - * @param {Db} db the database to query. - * @param {String} [rootCollection] the root collection that holds the files and chunks collection. Defaults to **{GridStore.DEFAULT_ROOT_COLLECTION}**. - * @param {Function} callback this will be called after this method executes. Passes null to the first and passes an array of strings containing the names of the files. - * @return {null} - * @api public - */ -GridStore.list = function(db, rootCollection, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = args.pop(); - rootCollection = args.length ? args.shift() : null; - options = args.length ? args.shift() : {}; - - // Ensure we have correct values - if(rootCollection != null && typeof rootCollection == 'object') { - options = rootCollection; - rootCollection = null; - } - - // Check if we are returning by id not filename - var byId = options['id'] != null ? options['id'] : false; - // Fetch item - var rootCollectionFinal = rootCollection != null ? rootCollection : GridStore.DEFAULT_ROOT_COLLECTION; - var items = []; - db.collection((rootCollectionFinal + ".files"), function(err, collection) { - if(err) return callback(err); - - collection.find(function(err, cursor) { - if(err) return callback(err); - - cursor.each(function(err, item) { - if(item != null) { - items.push(byId ? item._id : item.filename); - } else { - callback(err, items); - } - }); - }); - }); -}; - -/** - * Reads the contents of a file. - * - * This method has the following signatures - * - * (db, name, callback) - * (db, name, length, callback) - * (db, name, length, offset, callback) - * (db, name, length, offset, options, callback) - * - * @param {Db} db the database to query. - * @param {String} name the name of the file. - * @param {Number} [length] the size of data to read. - * @param {Number} [offset] the offset from the head of the file of which to start reading from. - * @param {Object} [options] the options for the file. - * @param {Function} callback this will be called after this method executes. A string with an error message will be passed to the first parameter when the length and offset combination exceeds the length of the file while an Error object will be passed if other forms of error occured, otherwise, a string is passed. The second parameter will contain the data read if successful or null if an error occured. - * @return {null} - * @api public - */ -GridStore.read = function(db, name, length, offset, options, callback) { - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - length = args.length ? args.shift() : null; - offset = args.length ? args.shift() : null; - options = args.length ? args.shift() : null; - - new GridStore(db, name, "r", options).open(function(err, gridStore) { - if(err) return callback(err); - // Make sure we are not reading out of bounds - if(offset && offset >= gridStore.length) return callback("offset larger than size of file", null); - if(length && length > gridStore.length) return callback("length is larger than the size of the file", null); - if(offset && length && (offset + length) > gridStore.length) return callback("offset and length is larger than the size of the file", null); - - if(offset != null) { - gridStore.seek(offset, function(err, gridStore) { - if(err) return callback(err); - gridStore.read(length, callback); - }); - } else { - gridStore.read(length, callback); - } - }); -}; - -/** - * Reads the data of this file. - * - * @param {Db} db the database to query. - * @param {String} name the name of the file. - * @param {String} [separator] the character to be recognized as the newline separator. - * @param {Object} [options] file options. - * @param {Function} callback this will be called after this method is executed. The first parameter will be null and the second parameter will contain an array of strings representing the entire data, each element representing a line including the separator character. - * @return {null} - * @api public - */ -GridStore.readlines = function(db, name, separator, options, callback) { - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - separator = args.length ? args.shift() : null; - options = args.length ? args.shift() : null; - - var finalSeperator = separator == null ? "\n" : separator; - new GridStore(db, name, "r", options).open(function(err, gridStore) { - if(err) return callback(err); - gridStore.readlines(finalSeperator, callback); - }); -}; - -/** - * Deletes the chunks and metadata information of a file from GridFS. - * - * @param {Db} db the database to interact with. - * @param {String|Array} names the name/names of the files to delete. - * @param {Object} [options] the options for the files. - * @callback {Function} this will be called after this method is executed. The first parameter will contain an Error object if an error occured or null otherwise. The second parameter will contain a reference to this object. - * @return {null} - * @api public - */ -GridStore.unlink = function(db, names, options, callback) { - var self = this; - var args = Array.prototype.slice.call(arguments, 2); - callback = args.pop(); - options = args.length ? args.shift() : null; - - if(names.constructor == Array) { - var tc = 0; - for(var i = 0; i < names.length; i++) { - ++tc; - self.unlink(db, names[i], function(result) { - if(--tc == 0) { - callback(null, self); - } - }); - } - } else { - new GridStore(db, names, "w", options).open(function(err, gridStore) { - if(err) return callback(err); - deleteChunks(gridStore, function(err, result) { - if(err) return callback(err); - gridStore.collection(function(err, collection) { - if(err) return callback(err); - collection.remove({'_id':gridStore.fileId}, {safe:true}, function(err, collection) { - callback(err, self); - }); - }); - }); - }); - } -}; - -/** - * Returns the current chunksize of the file. - * - * @field chunkSize - * @type {Number} - * @getter - * @setter - * @property return number of bytes in the current chunkSize. - */ -Object.defineProperty(GridStore.prototype, "chunkSize", { enumerable: true - , get: function () { - return this.internalChunkSize; - } - , set: function(value) { - if(!(this.mode[0] == "w" && this.position == 0 && this.uploadDate == null)) { - this.internalChunkSize = this.internalChunkSize; - } else { - this.internalChunkSize = value; - } - } -}); - -/** - * The md5 checksum for this file. - * - * @field md5 - * @type {Number} - * @getter - * @setter - * @property return this files md5 checksum. - */ -Object.defineProperty(GridStore.prototype, "md5", { enumerable: true - , get: function () { - return this.internalMd5; - } -}); - -/** - * GridStore Streaming methods - * Handles the correct return of the writeable stream status - * @ignore - */ -Object.defineProperty(GridStore.prototype, "writable", { enumerable: true - , get: function () { - if(this._writeable == null) { - this._writeable = this.mode != null && this.mode.indexOf("w") != -1; - } - // Return the _writeable - return this._writeable; - } - , set: function(value) { - this._writeable = value; - } -}); - -/** - * Handles the correct return of the readable stream status - * @ignore - */ -Object.defineProperty(GridStore.prototype, "readable", { enumerable: true - , get: function () { - if(this._readable == null) { - this._readable = this.mode != null && this.mode.indexOf("r") != -1; - } - return this._readable; - } - , set: function(value) { - this._readable = value; - } -}); - -GridStore.prototype.paused; - -/** - * Handles the correct setting of encoding for the stream - * @ignore - */ -GridStore.prototype.setEncoding = fs.ReadStream.prototype.setEncoding; - -/** - * Handles the end events - * @ignore - */ -GridStore.prototype.end = function end(data) { - var self = this; - // allow queued data to write before closing - if(!this.writable) return; - this.writable = false; - - if(data) { - this._q.push(data); - } - - this.on('drain', function () { - self.close(function (err) { - if (err) return _error(self, err); - self.emit('close'); - }); - }); - - _flush(self); -} - -/** - * Handles the normal writes to gridstore - * @ignore - */ -var _writeNormal = function(self, data, close, callback) { - // If we have a buffer write it using the writeBuffer method - if(Buffer.isBuffer(data)) { - return writeBuffer(self, data, close, callback); - } else { - // Wrap the string in a buffer and write - return writeBuffer(self, new Buffer(data, 'binary'), close, callback); - } -} - -/** - * Writes some data. This method will work properly only if initialized with mode "w" or "w+". - * - * @param {String|Buffer} data the data to write. - * @param {Boolean} [close] closes this file after writing if set to true. - * @param {Function} callback this will be called after executing this method. The first parameter will contain null and the second one will contain a reference to this object. - * @return {null} - * @api public - */ -GridStore.prototype.write = function write(data, close, callback) { - // If it's a normal write delegate the call - if(typeof close == 'function' || typeof callback == 'function') { - return _writeNormal(this, data, close, callback); - } - - // Otherwise it's a stream write - var self = this; - if (!this.writable) { - throw new Error('GridWriteStream is not writable'); - } - - // queue data until we open. - if (!this._opened) { - // Set up a queue to save data until gridstore object is ready - this._q = []; - _openStream(self); - this._q.push(data); - return false; - } - - // Push data to queue - this._q.push(data); - _flush(this); - // Return write successful - return true; -} - -/** - * Handles the destroy part of a stream - * @ignore - */ -GridStore.prototype.destroy = function destroy() { - // close and do not emit any more events. queued data is not sent. - if(!this.writable) return; - this.readable = false; - if(this.writable) { - this.writable = false; - this._q.length = 0; - this.emit('close'); - } -} - -/** - * Handles the destroySoon part of a stream - * @ignore - */ -GridStore.prototype.destroySoon = function destroySoon() { - // as soon as write queue is drained, destroy. - // may call destroy immediately if no data is queued. - if(!this._q.length) { - return this.destroy(); - } - this._destroying = true; -} - -/** - * Handles the pipe part of the stream - * @ignore - */ -GridStore.prototype.pipe = function(destination, options) { - var self = this; - // Open the gridstore - this.open(function(err, result) { - if(err) _errorRead(self, err); - if(!self.readable) return; - // Set up the pipe - self._pipe(destination, options); - // Emit the stream is open - self.emit('open'); - // Read from the stream - _read(self); - }) -} - -/** - * Internal module methods - * @ignore - */ -var _read = function _read(self) { - if (!self.readable || self.paused || self.reading) { - return; - } - - self.reading = true; - var stream = self._stream = self.stream(); - stream.paused = self.paused; - - stream.on('data', function (data) { - if (self._decoder) { - var str = self._decoder.write(data); - if (str.length) self.emit('data', str); - } else { - self.emit('data', data); - } - }); - - stream.on('end', function (data) { - self.emit('end', data); - }); - - stream.on('error', function (data) { - _errorRead(self, data); - }); - - stream.on('close', function (data) { - self.emit('close', data); - }); - - self.pause = function () { - // native doesn't always pause. - // bypass its pause() method to hack it - self.paused = stream.paused = true; - } - - self.resume = function () { - if(!self.paused) return; - - self.paused = false; - stream.resume(); - self.readable = stream.readable; - } - - self.destroy = function () { - self.readable = false; - stream.destroy(); - } -} - -/** - * pause - * @ignore - */ -GridStore.prototype.pause = function pause () { - // Overridden when the GridStore opens. - this.paused = true; -} - -/** - * resume - * @ignore - */ -GridStore.prototype.resume = function resume () { - // Overridden when the GridStore opens. - this.paused = false; -} - -/** - * Internal module methods - * @ignore - */ -var _flush = function _flush(self, _force) { - if (!self._opened) return; - if (!_force && self._flushing) return; - self._flushing = true; - - // write the entire q to gridfs - if (!self._q.length) { - self._flushing = false; - self.emit('drain'); - - if(self._destroying) { - self.destroy(); - } - return; - } - - self.write(self._q.shift(), function (err, store) { - if (err) return _error(self, err); - self.emit('progress', store.position); - _flush(self, true); - }); -} - -var _openStream = function _openStream (self) { - if(self._opening == true) return; - self._opening = true; - - // Open the store - self.open(function (err, gridstore) { - if (err) return _error(self, err); - self._opened = true; - self.emit('open'); - _flush(self); - }); -} - -var _error = function _error(self, err) { - self.destroy(); - self.emit('error', err); -} - -var _errorRead = function _errorRead (self, err) { - self.readable = false; - self.emit('error', err); -} - -/** - * @ignore - * @api private - */ -exports.GridStore = GridStore; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js deleted file mode 100644 index 8ff9973..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/readstream.js +++ /dev/null @@ -1,193 +0,0 @@ -var Stream = require('stream').Stream, - timers = require('timers'), - util = require('util'); - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; -processor = process.nextTick - -/** - * ReadStream - * - * Returns a stream interface for the **file**. - * - * Events - * - **data** {function(item) {}} the data event triggers when a document is ready. - * - **end** {function() {}} the end event triggers when there is no more documents available. - * - **close** {function() {}} the close event triggers when the stream is closed. - * - **error** {function(err) {}} the error event triggers if an error happens. - * - * @class Represents a GridFS File Stream. - * @param {Boolean} autoclose automatically close file when the stream reaches the end. - * @param {GridStore} cursor a cursor object that the stream wraps. - * @return {ReadStream} - */ -function ReadStream(autoclose, gstore) { - if (!(this instanceof ReadStream)) return new ReadStream(autoclose, gstore); - Stream.call(this); - - this.autoclose = !!autoclose; - this.gstore = gstore; - - this.finalLength = gstore.length - gstore.position; - this.completedLength = 0; - this.currentChunkNumber = gstore.currentChunk.chunkNumber; - - this.paused = false; - this.readable = true; - this.pendingChunk = null; - this.executing = false; - - // Calculate the number of chunks - this.numberOfChunks = Math.ceil(gstore.length/gstore.chunkSize); - - // This seek start position inside the current chunk - this.seekStartPosition = gstore.position - (this.currentChunkNumber * gstore.chunkSize); - - var self = this; - processor(function() { - self._execute(); - }); -}; - -/** - * Inherit from Stream - * @ignore - * @api private - */ -ReadStream.prototype.__proto__ = Stream.prototype; - -/** - * Flag stating whether or not this stream is readable. - */ -ReadStream.prototype.readable; - -/** - * Flag stating whether or not this stream is paused. - */ -ReadStream.prototype.paused; - -/** - * @ignore - * @api private - */ -ReadStream.prototype._execute = function() { - if(this.paused === true || this.readable === false) { - return; - } - - var gstore = this.gstore; - var self = this; - // Set that we are executing - this.executing = true; - - var last = false; - var toRead = 0; - - if(gstore.currentChunk.chunkNumber >= (this.numberOfChunks - 1)) { - self.executing = false; - last = true; - } - - // Data setup - var data = null; - - // Read a slice (with seek set if none) - if(this.seekStartPosition > 0 && (gstore.currentChunk.length() - this.seekStartPosition) > 0) { - data = gstore.currentChunk.readSlice(gstore.currentChunk.length() - this.seekStartPosition); - this.seekStartPosition = 0; - } else { - data = gstore.currentChunk.readSlice(gstore.currentChunk.length()); - } - - // Return the data - if(data != null && gstore.currentChunk.chunkNumber == self.currentChunkNumber) { - self.currentChunkNumber = self.currentChunkNumber + 1; - self.completedLength += data.length; - self.pendingChunk = null; - self.emit("data", data); - } - - if(last === true) { - self.readable = false; - self.emit("end"); - - if(self.autoclose === true) { - if(gstore.mode[0] == "w") { - gstore.close(function(err, doc) { - if (err) { - self.emit("error", err); - return; - } - self.readable = false; - self.emit("close", doc); - }); - } else { - self.readable = false; - self.emit("close"); - } - } - } else { - gstore._nthChunk(gstore.currentChunk.chunkNumber + 1, function(err, chunk) { - if(err) { - self.readable = false; - self.emit("error", err); - self.executing = false; - return; - } - - self.pendingChunk = chunk; - if(self.paused === true) { - self.executing = false; - return; - } - - gstore.currentChunk = self.pendingChunk; - self._execute(); - }); - } -}; - -/** - * Pauses this stream, then no farther events will be fired. - * - * @ignore - * @api public - */ -ReadStream.prototype.pause = function() { - if(!this.executing) { - this.paused = true; - } -}; - -/** - * Destroys the stream, then no farther events will be fired. - * - * @ignore - * @api public - */ -ReadStream.prototype.destroy = function() { - this.readable = false; - // Emit close event - this.emit("close"); -}; - -/** - * Resumes this stream. - * - * @ignore - * @api public - */ -ReadStream.prototype.resume = function() { - if(this.paused === false || !this.readable) { - return; - } - - this.paused = false; - var self = this; - processor(function() { - self._execute(); - }); -}; - -exports.ReadStream = ReadStream; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js deleted file mode 100644 index b2fdadf..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/index.js +++ /dev/null @@ -1,66 +0,0 @@ -try { - exports.BSONPure = require('bson').BSONPure; - exports.BSONNative = require('bson').BSONNative; -} catch(err) { - // do nothing -} - -[ 'commands/base_command' - , 'admin' - , 'collection' - , 'connection/read_preference' - , 'connection/connection' - , 'connection/server' - , 'connection/mongos' - , 'connection/repl_set/repl_set' - , 'mongo_client' - , 'cursor' - , 'db' - , 'mongo_client' - , 'gridfs/grid' - , 'gridfs/chunk' - , 'gridfs/gridstore'].forEach(function (path) { - var module = require('./' + path); - for (var i in module) { - exports[i] = module[i]; - } -}); - -// backwards compat -exports.ReplSetServers = exports.ReplSet; -// Add BSON Classes -exports.Binary = require('bson').Binary; -exports.Code = require('bson').Code; -exports.DBRef = require('bson').DBRef; -exports.Double = require('bson').Double; -exports.Long = require('bson').Long; -exports.MinKey = require('bson').MinKey; -exports.MaxKey = require('bson').MaxKey; -exports.ObjectID = require('bson').ObjectID; -exports.Symbol = require('bson').Symbol; -exports.Timestamp = require('bson').Timestamp; -// Add BSON Parser -exports.BSON = require('bson').BSONPure.BSON; - -// Get the Db object -var Db = require('./db').Db; -// Set up the connect function -var connect = Db.connect; -var obj = connect; -// Map all values to the exports value -for(var name in exports) { - obj[name] = exports[name]; -} - -// Add the pure and native backward compatible functions -exports.pure = exports.native = function() { - return obj; -} - -// Map all values to the exports value -for(var name in exports) { - connect[name] = exports[name]; -} - -// Set our exports to be the connect function -module.exports = connect; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js deleted file mode 100644 index 32362e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/mongo_client.js +++ /dev/null @@ -1,340 +0,0 @@ -var Db = require('./db').Db - , Server = require('./connection/server').Server - , Mongos = require('./connection/mongos').Mongos - , ReplSet = require('./connection/repl_set/repl_set').ReplSet - , ReadPreference = require('./connection/read_preference').ReadPreference - , parse = require('./connection/url_parser').parse; - -/** - * Create a new MongoClient instance. - * - * Options - * - **w**, {Number/String, > -1 || 'majority' || tag name} the write concern for the operation where < 1 is no acknowlegement of write and w >= 1, w = 'majority' or tag acknowledges the write - * - **wtimeout**, {Number, 0} set the timeout for waiting for write concern to finish (combines with w option) - * - **fsync**, (Boolean, default:false) write waits for fsync before returning - * - **journal**, (Boolean, default:false) write waits for journal sync before returning - * - **readPreference** {String}, the prefered read preference (ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST). - * - **native_parser** {Boolean, default:false}, use c++ bson parser. - * - **forceServerObjectId** {Boolean, default:false}, force server to create _id fields instead of client. - * - **pkFactory** {Object}, object overriding the basic ObjectID primary key generation. - * - **serializeFunctions** {Boolean, default:false}, serialize functions. - * - **raw** {Boolean, default:false}, peform operations using raw bson buffers. - * - **recordQueryStats** {Boolean, default:false}, record query statistics during execution. - * - **retryMiliSeconds** {Number, default:5000}, number of miliseconds between retries. - * - **numberOfRetries** {Number, default:5}, number of retries off connection. - * - * Deprecated Options - * - **safe** {true | {w:n, wtimeout:n} | {fsync:true}, default:false}, executes with a getLastError command returning the results of the command on MongoDB. - * - * @class Represents a MongoClient - * @param {Object} serverConfig server config object. - * @param {Object} [options] additional options for the collection. - */ -function MongoClient(serverConfig, options) { - options = options == null ? {} : options; - // If no write concern is set set the default to w:1 - if(options != null && !options.journal && !options.w && !options.fsync) { - options.w = 1; - } - - // The internal db instance we are wrapping - this._db = new Db('test', serverConfig, options); -} - -/** - * Initialize the database connection. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the connected mongoclient or null if an error occured. - * @return {null} - * @api public - */ -MongoClient.prototype.open = function(callback) { - // Self reference - var self = this; - - this._db.open(function(err, db) { - if(err) return callback(err, null); - callback(null, self); - }) -} - -/** - * Close the current db connection, including all the child db instances. Emits close event if no callback is provided. - * - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the results from the close method or null if an error occured. - * @return {null} - * @api public - */ -MongoClient.prototype.close = function(callback) { - this._db.close(callback); -} - -/** - * Create a new Db instance sharing the current socket connections. - * - * @param {String} dbName the name of the database we want to use. - * @return {Db} a db instance using the new database. - * @api public - */ -MongoClient.prototype.db = function(dbName) { - return this._db.db(dbName); -} - -/** - * Connect to MongoDB using a url as documented at - * - * docs.mongodb.org/manual/reference/connection-string/ - * - * Options - * - **uri_decode_auth** {Boolean, default:false} uri decode the user name and password for authentication - * - **db** {Object, default: null} a hash off options to set on the db object, see **Db constructor** - * - **server** {Object, default: null} a hash off options to set on the server objects, see **Server** constructor** - * - **replSet** {Object, default: null} a hash off options to set on the replSet object, see **ReplSet** constructor** - * - **mongos** {Object, default: null} a hash off options to set on the mongos object, see **Mongos** constructor** - * - * @param {String} url connection url for MongoDB. - * @param {Object} [options] optional options for insert command - * @param {Function} callback this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the initialized db object or null if an error occured. - * @return {null} - * @api public - */ -// MongoClient.connect = function(url, options, callback) { -// if(typeof options == 'function') { -// callback = options; -// options = {}; -// } - -// Db.connect(url, options, function(err, db) { -// if(err) return callback(err, null); - -// if(db.options !== null && !db.options.safe && !db.options.journal -// && !db.options.w && !db.options.fsync && typeof db.options.w != 'number' -// && (db.options.safe == false && url.indexOf("safe=") == -1)) { -// db.options.w = 1; -// } - -// // Return the db -// callback(null, db); -// }); -// } - -MongoClient.connect = function(url, options, callback) { - var args = Array.prototype.slice.call(arguments, 1); - callback = typeof args[args.length - 1] == 'function' ? args.pop() : null; - options = args.length ? args.shift() : null; - options = options || {}; - - // Set default empty server options - var serverOptions = options.server || {}; - var mongosOptions = options.mongos || {}; - var replSetServersOptions = options.replSet || options.replSetServers || {}; - var dbOptions = options.db || {}; - - // If callback is null throw an exception - if(callback == null) throw new Error("no callback function provided"); - - // Parse the string - var object = parse(url, options); - // Merge in any options for db in options object - if(dbOptions) { - for(var name in dbOptions) object.db_options[name] = dbOptions[name]; - } - - // Added the url to the options - object.db_options.url = url; - - // Merge in any options for server in options object - if(serverOptions) { - for(var name in serverOptions) object.server_options[name] = serverOptions[name]; - } - - // Merge in any replicaset server options - if(replSetServersOptions) { - for(var name in replSetServersOptions) object.rs_options[name] = replSetServersOptions[name]; - } - - // Merge in any replicaset server options - if(mongosOptions) { - for(var name in mongosOptions) object.mongos_options[name] = mongosOptions[name]; - } - - // We need to ensure that the list of servers are only either direct members or mongos - // they cannot be a mix of monogs and mongod's - var totalNumberOfServers = object.servers.length; - var totalNumberOfMongosServers = 0; - var totalNumberOfMongodServers = 0; - var serverConfig = null; - var errorServers = {}; - - // Failure modes - if(object.servers.length == 0) throw new Error("connection string must contain at least one seed host"); - - // If we have no db setting for the native parser try to set the c++ one first - object.db_options.native_parser = _setNativeParser(object.db_options); - // If no auto_reconnect is set, set it to true as default for single servers - if(typeof object.server_options.auto_reconnect != 'boolean') { - object.server_options.auto_reconnect = true; - } - - // If we have more than a server, it could be replicaset or mongos list - // need to verify that it's one or the other and fail if it's a mix - // Connect to all servers and run ismaster - for(var i = 0; i < object.servers.length; i++) { - // Set up socket options - var _server_options = {poolSize:1, socketOptions:{connectTimeoutMS:1000}, auto_reconnect:false}; - - // Ensure we have ssl setup for the servers - if(object.rs_options.ssl) { - _server_options.ssl = object.rs_options.ssl; - _server_options.sslValidate = object.rs_options.sslValidate; - _server_options.sslCA = object.rs_options.sslCA; - _server_options.sslCert = object.rs_options.sslCert; - _server_options.sslKey = object.rs_options.sslKey; - _server_options.sslPass = object.rs_options.sslPass; - } else if(object.server_options.ssl) { - _server_options.ssl = object.server_options.ssl; - _server_options.sslValidate = object.server_options.sslValidate; - _server_options.sslCA = object.server_options.sslCA; - _server_options.sslCert = object.server_options.sslCert; - _server_options.sslKey = object.server_options.sslKey; - _server_options.sslPass = object.server_options.sslPass; - } - - // Set up the Server object - var _server = object.servers[i].domain_socket - ? new Server(object.servers[i].domain_socket, _server_options) - : new Server(object.servers[i].host, object.servers[i].port, _server_options); - - var connectFunction = function(__server) { - // Attempt connect - new Db(object.dbName, __server, {safe:false, native_parser:false}).open(function(err, db) { - // Update number of servers - totalNumberOfServers = totalNumberOfServers - 1; - // If no error do the correct checks - if(!err) { - // Close the connection - db.close(true); - var isMasterDoc = db.serverConfig.isMasterDoc; - // Check what type of server we have - if(isMasterDoc.setName) totalNumberOfMongodServers++; - if(isMasterDoc.msg && isMasterDoc.msg == "isdbgrid") totalNumberOfMongosServers++; - } else { - errorServers[__server.host + ":" + __server.port] = __server; - } - - if(totalNumberOfServers == 0) { - // If we have a mix of mongod and mongos, throw an error - if(totalNumberOfMongosServers > 0 && totalNumberOfMongodServers > 0) - return callback(new Error("cannot combine a list of replicaset seeds and mongos seeds")); - - if(totalNumberOfMongodServers == 0 && object.servers.length == 1) { - var obj = object.servers[0]; - serverConfig = obj.domain_socket ? - new Server(obj.domain_socket, object.server_options) - : new Server(obj.host, obj.port, object.server_options); - } else if(totalNumberOfMongodServers > 0 || totalNumberOfMongosServers > 0) { - var finalServers = object.servers - .filter(function(serverObj) { - return errorServers[serverObj.host + ":" + serverObj.port] == null; - }) - .map(function(serverObj) { - return new Server(serverObj.host, serverObj.port, object.server_options); - }); - // Clean out any error servers - errorServers = {}; - // Set up the final configuration - if(totalNumberOfMongodServers > 0) { - serverConfig = new ReplSet(finalServers, object.rs_options); - } else { - serverConfig = new Mongos(finalServers, object.mongos_options); - } - } - - if(serverConfig == null) return callback(new Error("Could not locate any valid servers in initial seed list")); - // Set up all options etc and connect to the database - _finishConnecting(serverConfig, object, options, callback) - } - }); - } - - // Wrap the context of the call - connectFunction(_server); - } -} - -var _setNativeParser = function(db_options) { - if(typeof db_options.native_parser == 'boolean') return db_options.native_parser; - - try { - require('bson').BSONNative.BSON; - return true; - } catch(err) { - return false; - } -} - -var _finishConnecting = function(serverConfig, object, options, callback) { - // Safe settings - var safe = {}; - // Build the safe parameter if needed - if(object.db_options.journal) safe.j = object.db_options.journal; - if(object.db_options.w) safe.w = object.db_options.w; - if(object.db_options.fsync) safe.fsync = object.db_options.fsync; - if(object.db_options.wtimeoutMS) safe.wtimeout = object.db_options.wtimeoutMS; - - // If we have a read Preference set - if(object.db_options.read_preference) { - var readPreference = new ReadPreference(object.db_options.read_preference); - // If we have the tags set up - if(object.db_options.read_preference_tags) - readPreference = new ReadPreference(object.db_options.read_preference, object.db_options.read_preference_tags); - // Add the read preference - object.db_options.readPreference = readPreference; - } - - // No safe mode if no keys - if(Object.keys(safe).length == 0) safe = false; - - // Add the safe object - object.db_options.safe = safe; - - // Set up the db options - var db = new Db(object.dbName, serverConfig, object.db_options); - // Open the db - db.open(function(err, db){ - if(err) return callback(err, null); - - if(db.options !== null && !db.options.safe && !db.options.journal - && !db.options.w && !db.options.fsync && typeof db.options.w != 'number' - && (db.options.safe == false && object.db_options.url.indexOf("safe=") == -1)) { - db.options.w = 1; - } - - if(err == null && object.auth){ - // What db to authenticate against - var authentication_db = db; - if(object.db_options && object.db_options.authSource) { - authentication_db = db.db(object.db_options.authSource); - } - - // Build options object - var options = {}; - if(object.db_options.authMechanism) options.authMechanism = object.db_options.authMechanism; - - // Authenticate - authentication_db.authenticate(object.auth.user, object.auth.password, options, function(err, success){ - if(success){ - callback(null, db); - } else { - if(db) db.close(); - callback(err ? err : new Error('Could not authenticate user ' + auth[0]), null); - } - }); - } else { - callback(err, db); - } - }); -} - - -exports.MongoClient = MongoClient; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js deleted file mode 100644 index b27b812..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js +++ /dev/null @@ -1,144 +0,0 @@ -var Long = require('bson').Long - , timers = require('timers'); - -// Set processor, setImmediate if 0.10 otherwise nextTick -var processor = timers.setImmediate ? timers.setImmediate : process.nextTick; - -/** - Reply message from mongo db -**/ -var MongoReply = exports.MongoReply = function() { - this.documents = []; - this.index = 0; -}; - -MongoReply.prototype.parseHeader = function(binary_reply, bson) { - // Unpack the standard header first - this.messageLength = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - this.index = this.index + 4; - // Fetch the request id for this reply - this.requestId = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - this.index = this.index + 4; - // Fetch the id of the request that triggered the response - this.responseTo = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - // Skip op-code field - this.index = this.index + 4 + 4; - // Unpack the reply message - this.responseFlag = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - this.index = this.index + 4; - // Unpack the cursor id (a 64 bit long integer) - var low_bits = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - this.index = this.index + 4; - var high_bits = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - this.index = this.index + 4; - this.cursorId = new Long(low_bits, high_bits); - // Unpack the starting from - this.startingFrom = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - this.index = this.index + 4; - // Unpack the number of objects returned - this.numberReturned = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - this.index = this.index + 4; -} - -MongoReply.prototype.parseBody = function(binary_reply, bson, raw, callback) { - raw = raw == null ? false : raw; - // Just set a doc limit for deserializing - var docLimitSize = 1024*20; - - // If our message length is very long, let's switch to process.nextTick for messages - if(this.messageLength > docLimitSize) { - var batchSize = this.numberReturned; - this.documents = new Array(this.numberReturned); - - // Just walk down until we get a positive number >= 1 - for(var i = 50; i > 0; i--) { - if((this.numberReturned/i) >= 1) { - batchSize = i; - break; - } - } - - // Actual main creator of the processFunction setting internal state to control the flow - var parseFunction = function(_self, _binary_reply, _batchSize, _numberReturned) { - var object_index = 0; - // Internal loop process that will use nextTick to ensure we yield some time - var processFunction = function() { - // Adjust batchSize if we have less results left than batchsize - if((_numberReturned - object_index) < _batchSize) { - _batchSize = _numberReturned - object_index; - } - - // If raw just process the entries - if(raw) { - // Iterate over the batch - for(var i = 0; i < _batchSize; i++) { - // Are we done ? - if(object_index <= _numberReturned) { - // Read the size of the bson object - var bsonObjectSize = _binary_reply[_self.index] | _binary_reply[_self.index + 1] << 8 | _binary_reply[_self.index + 2] << 16 | _binary_reply[_self.index + 3] << 24; - // If we are storing the raw responses to pipe straight through - _self.documents[object_index] = binary_reply.slice(_self.index, _self.index + bsonObjectSize); - // Adjust binary index to point to next block of binary bson data - _self.index = _self.index + bsonObjectSize; - // Update number of docs parsed - object_index = object_index + 1; - } - } - } else { - try { - // Parse documents - _self.index = bson.deserializeStream(binary_reply, _self.index, _batchSize, _self.documents, object_index); - // Adjust index - object_index = object_index + _batchSize; - } catch (err) { - return callback(err); - } - } - - // If we have more documents process NextTick - if(object_index < _numberReturned) { - processor(processFunction); - } else { - callback(null); - } - } - - // Return the process function - return processFunction; - }(this, binary_reply, batchSize, this.numberReturned)(); - } else { - try { - // Let's unpack all the bson documents, deserialize them and store them - for(var object_index = 0; object_index < this.numberReturned; object_index++) { - // Read the size of the bson object - var bsonObjectSize = binary_reply[this.index] | binary_reply[this.index + 1] << 8 | binary_reply[this.index + 2] << 16 | binary_reply[this.index + 3] << 24; - // If we are storing the raw responses to pipe straight through - if(raw) { - // Deserialize the object and add to the documents array - this.documents.push(binary_reply.slice(this.index, this.index + bsonObjectSize)); - } else { - // Deserialize the object and add to the documents array - this.documents.push(bson.deserialize(binary_reply.slice(this.index, this.index + bsonObjectSize))); - } - // Adjust binary index to point to next block of binary bson data - this.index = this.index + bsonObjectSize; - } - } catch(err) { - return callback(err); - } - - // No error return - callback(null); - } -} - -MongoReply.prototype.is_error = function(){ - if(this.documents.length == 1) { - return this.documents[0].ok == 1 ? false : true; - } - return false; -}; - -MongoReply.prototype.error_message = function() { - return this.documents.length == 1 && this.documents[0].ok == 1 ? '' : this.documents[0].errmsg; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js deleted file mode 100644 index 087789d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/lib/mongodb/utils.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * Sort functions, Normalize and prepare sort parameters - */ -var formatSortValue = exports.formatSortValue = function(sortDirection) { - var value = ("" + sortDirection).toLowerCase(); - - switch (value) { - case 'ascending': - case 'asc': - case '1': - return 1; - case 'descending': - case 'desc': - case '-1': - return -1; - default: - throw new Error("Illegal sort clause, must be of the form " - + "[['field1', '(ascending|descending)'], " - + "['field2', '(ascending|descending)']]"); - } -}; - -var formattedOrderClause = exports.formattedOrderClause = function(sortValue) { - var orderBy = {}; - - if (Array.isArray(sortValue)) { - for(var i = 0; i < sortValue.length; i++) { - if(sortValue[i].constructor == String) { - orderBy[sortValue[i]] = 1; - } else { - orderBy[sortValue[i][0]] = formatSortValue(sortValue[i][1]); - } - } - } else if(Object.prototype.toString.call(sortValue) === '[object Object]') { - orderBy = sortValue; - } else if (sortValue.constructor == String) { - orderBy[sortValue] = 1; - } else { - throw new Error("Illegal sort clause, must be of the form " + - "[['field1', '(ascending|descending)'], ['field2', '(ascending|descending)']]"); - } - - return orderBy; -}; - -exports.encodeInt = function(value) { - var buffer = new Buffer(4); - buffer[3] = (value >> 24) & 0xff; - buffer[2] = (value >> 16) & 0xff; - buffer[1] = (value >> 8) & 0xff; - buffer[0] = value & 0xff; - return buffer; -} - -exports.encodeIntInPlace = function(value, buffer, index) { - buffer[index + 3] = (value >> 24) & 0xff; - buffer[index + 2] = (value >> 16) & 0xff; - buffer[index + 1] = (value >> 8) & 0xff; - buffer[index] = value & 0xff; -} - -exports.encodeCString = function(string) { - var buf = new Buffer(string, 'utf8'); - return [buf, new Buffer([0])]; -} - -exports.decodeUInt32 = function(array, index) { - return array[index] | array[index + 1] << 8 | array[index + 2] << 16 | array[index + 3] << 24; -} - -// Decode the int -exports.decodeUInt8 = function(array, index) { - return array[index]; -} - -/** - * Context insensitive type checks - */ - -var toString = Object.prototype.toString; - -exports.isObject = function (arg) { - return '[object Object]' == toString.call(arg) -} - -exports.isArray = function (arg) { - return Array.isArray(arg) || - 'object' == typeof arg && '[object Array]' == toString.call(arg) -} - -exports.isDate = function (arg) { - return 'object' == typeof arg && '[object Date]' == toString.call(arg) -} - -exports.isRegExp = function (arg) { - return 'object' == typeof arg && '[object RegExp]' == toString.call(arg) -} - -/** - * Wrap a Mongo error document in an Error instance - * @ignore - * @api private - */ -exports.toError = function(error) { - if (error instanceof Error) return error; - - var msg = error.err || error.errmsg || error; - var e = new Error(msg); - e.name = 'MongoError'; - - // Get all object keys - var keys = typeof error == 'object' - ? Object.keys(error) - : []; - - for(var i = 0; i < keys.length; i++) { - e[keys[i]] = error[keys[i]]; - } - - return e; -} - -/** - * Convert a single level object to an array - * @ignore - * @api private - */ -exports.objectToArray = function(object) { - var list = []; - - for(var name in object) { - list.push(object[name]) - } - - return list; -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml deleted file mode 100644 index 94740d0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 # development version of 0.8, may be unstable \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile deleted file mode 100644 index 77ce4e0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -NODE = node -NPM = npm -NODEUNIT = node_modules/nodeunit/bin/nodeunit - -all: clean node_gyp - -test: clean node_gyp - npm test - -node_gyp: clean - node-gyp configure build - -clean: - node-gyp clean - -browserify: - node_modules/.bin/onejs build browser_build/package.json browser_build/bson.js - -.PHONY: all diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md deleted file mode 100644 index 73892e2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/README.md +++ /dev/null @@ -1 +0,0 @@ -A JS/C++ Bson parser for node, used in the MongoDB Native driver \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js deleted file mode 100644 index 45a1111..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/benchmarks/benchmarks.js +++ /dev/null @@ -1,130 +0,0 @@ -// var BSON = require('../../lib/mongodb').BSONNative.BSON, -// ObjectID = require('../../lib/mongodb').BSONNative.ObjectID, -// Code = require('../../lib/mongodb').BSONNative.Code, -// Long = require('../../lib/mongodb').BSONNative.Long, -// Binary = require('../../lib/mongodb').BSONNative.Binary, -// debug = require('util').debug, -// inspect = require('util').inspect, -// -// Long = require('../../lib/mongodb').Long, -// ObjectID = require('../../lib/mongodb').ObjectID, -// Binary = require('../../lib/mongodb').Binary, -// Code = require('../../lib/mongodb').Code, -// DBRef = require('../../lib/mongodb').DBRef, -// Symbol = require('../../lib/mongodb').Symbol, -// Double = require('../../lib/mongodb').Double, -// MaxKey = require('../../lib/mongodb').MaxKey, -// MinKey = require('../../lib/mongodb').MinKey, -// Timestamp = require('../../lib/mongodb').Timestamp; - - -// var BSON = require('../../lib/mongodb').BSONPure.BSON, -// ObjectID = require('../../lib/mongodb').BSONPure.ObjectID, -// Code = require('../../lib/mongodb').BSONPure.Code, -// Long = require('../../lib/mongodb').BSONPure.Long, -// Binary = require('../../lib/mongodb').BSONPure.Binary; - -var BSON = require('../lib/bson').BSONNative.BSON, - Long = require('../lib/bson').Long, - ObjectID = require('../lib/bson').ObjectID, - Binary = require('../lib/bson').Binary, - Code = require('../lib/bson').Code, - DBRef = require('../lib/bson').DBRef, - Symbol = require('../lib/bson').Symbol, - Double = require('../lib/bson').Double, - MaxKey = require('../lib/bson').MaxKey, - MinKey = require('../lib/bson').MinKey, - Timestamp = require('../lib/bson').Timestamp; - - // console.dir(require('../lib/bson')) - -var COUNT = 1000; -var COUNT = 100; - -var object = { - string: "Strings are great", - decimal: 3.14159265, - bool: true, - integer: 5, - date: new Date(), - double: new Double(1.4), - id: new ObjectID(), - min: new MinKey(), - max: new MaxKey(), - symbol: new Symbol('hello'), - long: Long.fromNumber(100), - bin: new Binary(new Buffer(100)), - - subObject: { - moreText: "Bacon ipsum dolor sit amet cow pork belly rump ribeye pastrami andouille. Tail hamburger pork belly, drumstick flank salami t-bone sirloin pork chop ribeye ham chuck pork loin shankle. Ham fatback pork swine, sirloin shankle short loin andouille shank sausage meatloaf drumstick. Pig chicken cow bresaola, pork loin jerky meatball tenderloin brisket strip steak jowl spare ribs. Biltong sirloin pork belly boudin, bacon pastrami rump chicken. Jowl rump fatback, biltong bacon t-bone turkey. Turkey pork loin boudin, tenderloin jerky beef ribs pastrami spare ribs biltong pork chop beef.", - longKeylongKeylongKeylongKeylongKeylongKey: "Pork belly boudin shoulder ribeye pork chop brisket biltong short ribs. Salami beef pork belly, t-bone sirloin meatloaf tail jowl spare ribs. Sirloin biltong bresaola cow turkey. Biltong fatback meatball, bresaola tail shankle turkey pancetta ham ribeye flank bacon jerky pork chop. Boudin sirloin shoulder, salami swine flank jerky t-bone pork chop pork beef tongue. Bresaola ribeye jerky andouille. Ribeye ground round sausage biltong beef ribs chuck, shank hamburger chicken short ribs spare ribs tenderloin meatloaf pork loin." - }, - - subArray: [1,2,3,4,5,6,7,8,9,10], - anotherString: "another string", - code: new Code("function() {}", {i:1}) -} - -// Number of objects -var numberOfObjects = 10000; -var bson = new BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); -console.log("---------------------- 1") -var s = new Date() -// Object serialized -for(var i = 0; i < numberOfObjects; i++) { - objectBSON = bson.serialize(object, null, true) -} -console.log("====================== " + (new Date().getTime() - s.getTime()) + " :: " + ((new Date().getTime() - s.getTime()))/numberOfObjects) - -console.log("---------------------- 2") -var s = new Date() -// Object serialized -for(var i = 0; i < numberOfObjects; i++) { - bson.deserialize(objectBSON); -} -console.log("====================== " + (new Date().getTime() - s.getTime()) + " :: " + ((new Date().getTime() - s.getTime()))/numberOfObjects) - -// // Buffer With copies of the objectBSON -// var data = new Buffer(objectBSON.length * numberOfObjects); -// var index = 0; -// -// // Copy the buffer 1000 times to create a strea m of objects -// for(var i = 0; i < numberOfObjects; i++) { -// // Copy data -// objectBSON.copy(data, index); -// // Adjust index -// index = index + objectBSON.length; -// } -// -// // console.log("-----------------------------------------------------------------------------------") -// // console.dir(objectBSON) -// -// var x, start, end, j -// var objectBSON, objectJSON -// -// // Allocate the return array (avoid concatinating everything) -// var results = new Array(numberOfObjects); -// -// console.log(COUNT + "x (objectBSON = BSON.serialize(object))") -// start = new Date -// -// // var objects = BSON.deserializeStream(data, 0, numberOfObjects); -// // console.log("----------------------------------------------------------------------------------- 0") -// // var objects = BSON.deserialize(data); -// // console.log("----------------------------------------------------------------------------------- 1") -// // console.dir(objects) -// -// for (j=COUNT; --j>=0; ) { -// var nextIndex = BSON.deserializeStream(data, 0, numberOfObjects, results, 0); -// } -// -// end = new Date -// var opsprsecond = COUNT / ((end - start)/1000); -// console.log("bson size (bytes): ", objectBSON.length); -// console.log("time = ", end - start, "ms -", COUNT / ((end - start)/1000), " ops/sec"); -// console.log("MB/s = " + ((opsprsecond*objectBSON.length)/1024)); -// -// // console.dir(nextIndex) -// // console.dir(results) - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp deleted file mode 100644 index 42445d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/binding.gyp +++ /dev/null @@ -1,17 +0,0 @@ -{ - 'targets': [ - { - 'target_name': 'bson', - 'sources': [ 'ext/bson.cc' ], - 'cflags!': [ '-fno-exceptions' ], - 'cflags_cc!': [ '-fno-exceptions' ], - 'conditions': [ - ['OS=="mac"', { - 'xcode_settings': { - 'GCC_ENABLE_CPP_EXCEPTIONS': 'YES' - } - }] - ] - } - ] -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js deleted file mode 100644 index e7a1c74..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/bson.js +++ /dev/null @@ -1,4814 +0,0 @@ -var bson = (function(){ - - var pkgmap = {}, - global = {}, - nativeRequire = typeof require != 'undefined' && require, - lib, ties, main, async; - - function exports(){ return main(); }; - - exports.main = exports; - exports.module = module; - exports.packages = pkgmap; - exports.pkg = pkg; - exports.require = function require(uri){ return pkgmap.main.index.require(uri); }; - - - ties = {}; - - aliases = {}; - - - return exports; - -function join() { - return normalize(Array.prototype.join.call(arguments, "/")); -}; - -function normalize(path) { - var ret = [], parts = path.split('/'), cur, prev; - - var i = 0, l = parts.length-1; - for (; i <= l; i++) { - cur = parts[i]; - - if (cur === "." && prev !== undefined) continue; - - if (cur === ".." && ret.length && prev !== ".." && prev !== "." && prev !== undefined) { - ret.pop(); - prev = ret.slice(-1)[0]; - } else { - if (prev === ".") ret.pop(); - ret.push(cur); - prev = cur; - } - } - - return ret.join("/"); -}; - -function dirname(path) { - return path && path.substr(0, path.lastIndexOf("/")) || "."; -}; - -function findModule(workingModule, uri){ - var moduleId = join(dirname(workingModule.id), uri).replace(/\.js$/, ''), - moduleIndexId = join(moduleId, 'index'), - pkg = workingModule.pkg, - module; - - var i = pkg.modules.length, - id; - - while(i-->0){ - id = pkg.modules[i].id; - if(id==moduleId || id == moduleIndexId){ - module = pkg.modules[i]; - break; - } - } - - return module; -} - -function newRequire(callingModule){ - function require(uri){ - var module, pkg; - - if(/^\./.test(uri)){ - module = findModule(callingModule, uri); - } else if ( ties && ties.hasOwnProperty( uri ) ) { - return ties[uri]; - } else if ( aliases && aliases.hasOwnProperty( uri ) ) { - return require(aliases[uri]); - } else { - pkg = pkgmap[uri]; - - if(!pkg && nativeRequire){ - try { - pkg = nativeRequire(uri); - } catch (nativeRequireError) {} - - if(pkg) return pkg; - } - - if(!pkg){ - throw new Error('Cannot find module "'+uri+'" @[module: '+callingModule.id+' package: '+callingModule.pkg.name+']'); - } - - module = pkg.index; - } - - if(!module){ - throw new Error('Cannot find module "'+uri+'" @[module: '+callingModule.id+' package: '+callingModule.pkg.name+']'); - } - - module.parent = callingModule; - return module.call(); - }; - - - return require; -} - - -function module(parent, id, wrapper){ - var mod = { pkg: parent, id: id, wrapper: wrapper }, - cached = false; - - mod.exports = {}; - mod.require = newRequire(mod); - - mod.call = function(){ - if(cached) { - return mod.exports; - } - - cached = true; - - global.require = mod.require; - - mod.wrapper(mod, mod.exports, global, global.require); - return mod.exports; - }; - - if(parent.mainModuleId == mod.id){ - parent.index = mod; - parent.parents.length === 0 && ( main = mod.call ); - } - - parent.modules.push(mod); -} - -function pkg(/* [ parentId ...], wrapper */){ - var wrapper = arguments[ arguments.length - 1 ], - parents = Array.prototype.slice.call(arguments, 0, arguments.length - 1), - ctx = wrapper(parents); - - - pkgmap[ctx.name] = ctx; - - arguments.length == 1 && ( pkgmap.main = ctx ); - - return function(modules){ - var id; - for(id in modules){ - module(ctx, id, modules[id]); - } - }; -} - - -}(this)); - -bson.pkg(function(parents){ - - return { - 'name' : 'bson', - 'mainModuleId' : 'bson', - 'modules' : [], - 'parents' : parents - }; - -})({ 'binary': function(module, exports, global, require, undefined){ - /** - * Module dependencies. - */ -if(typeof window === 'undefined') { - var Buffer = require('buffer').Buffer; // TODO just use global Buffer -} - -// Binary default subtype -var BSON_BINARY_SUBTYPE_DEFAULT = 0; - -/** - * @ignore - * @api private - */ -var writeStringToArray = function(data) { - // Create a buffer - var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(data.length)) : new Array(data.length); - // Write the content to the buffer - for(var i = 0; i < data.length; i++) { - buffer[i] = data.charCodeAt(i); - } - // Write the string to the buffer - return buffer; -} - -/** - * Convert Array ot Uint8Array to Binary String - * - * @ignore - * @api private - */ -var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { - var result = ""; - for(var i = startIndex; i < endIndex; i++) { - result = result + String.fromCharCode(byteArray[i]); - } - return result; -}; - -/** - * A class representation of the BSON Binary type. - * - * Sub types - * - **BSON.BSON_BINARY_SUBTYPE_DEFAULT**, default BSON type. - * - **BSON.BSON_BINARY_SUBTYPE_FUNCTION**, BSON function type. - * - **BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY**, BSON byte array type. - * - **BSON.BSON_BINARY_SUBTYPE_UUID**, BSON uuid type. - * - **BSON.BSON_BINARY_SUBTYPE_MD5**, BSON md5 type. - * - **BSON.BSON_BINARY_SUBTYPE_USER_DEFINED**, BSON user defined type. - * - * @class Represents the Binary BSON type. - * @param {Buffer} buffer a buffer object containing the binary data. - * @param {Number} [subType] the option binary type. - * @return {Grid} - */ -function Binary(buffer, subType) { - if(!(this instanceof Binary)) return new Binary(buffer, subType); - - this._bsontype = 'Binary'; - - if(buffer instanceof Number) { - this.sub_type = buffer; - this.position = 0; - } else { - this.sub_type = subType == null ? BSON_BINARY_SUBTYPE_DEFAULT : subType; - this.position = 0; - } - - if(buffer != null && !(buffer instanceof Number)) { - // Only accept Buffer, Uint8Array or Arrays - if(typeof buffer == 'string') { - // Different ways of writing the length of the string for the different types - if(typeof Buffer != 'undefined') { - this.buffer = new Buffer(buffer); - } else if(typeof Uint8Array != 'undefined' || (Object.prototype.toString.call(buffer) == '[object Array]')) { - this.buffer = writeStringToArray(buffer); - } else { - throw new Error("only String, Buffer, Uint8Array or Array accepted"); - } - } else { - this.buffer = buffer; - } - this.position = buffer.length; - } else { - if(typeof Buffer != 'undefined') { - this.buffer = new Buffer(Binary.BUFFER_SIZE); - } else if(typeof Uint8Array != 'undefined'){ - this.buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE)); - } else { - this.buffer = new Array(Binary.BUFFER_SIZE); - } - // Set position to start of buffer - this.position = 0; - } -}; - -/** - * Updates this binary with byte_value. - * - * @param {Character} byte_value a single byte we wish to write. - * @api public - */ -Binary.prototype.put = function put(byte_value) { - // If it's a string and a has more than one character throw an error - if(byte_value['length'] != null && typeof byte_value != 'number' && byte_value.length != 1) throw new Error("only accepts single character String, Uint8Array or Array"); - if(typeof byte_value != 'number' && byte_value < 0 || byte_value > 255) throw new Error("only accepts number in a valid unsigned byte range 0-255"); - - // Decode the byte value once - var decoded_byte = null; - if(typeof byte_value == 'string') { - decoded_byte = byte_value.charCodeAt(0); - } else if(byte_value['length'] != null) { - decoded_byte = byte_value[0]; - } else { - decoded_byte = byte_value; - } - - if(this.buffer.length > this.position) { - this.buffer[this.position++] = decoded_byte; - } else { - if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { - // Create additional overflow buffer - var buffer = new Buffer(Binary.BUFFER_SIZE + this.buffer.length); - // Combine the two buffers together - this.buffer.copy(buffer, 0, 0, this.buffer.length); - this.buffer = buffer; - this.buffer[this.position++] = decoded_byte; - } else { - var buffer = null; - // Create a new buffer (typed or normal array) - if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { - buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE + this.buffer.length)); - } else { - buffer = new Array(Binary.BUFFER_SIZE + this.buffer.length); - } - - // We need to copy all the content to the new array - for(var i = 0; i < this.buffer.length; i++) { - buffer[i] = this.buffer[i]; - } - - // Reassign the buffer - this.buffer = buffer; - // Write the byte - this.buffer[this.position++] = decoded_byte; - } - } -}; - -/** - * Writes a buffer or string to the binary. - * - * @param {Buffer|String} string a string or buffer to be written to the Binary BSON object. - * @param {Number} offset specify the binary of where to write the content. - * @api public - */ -Binary.prototype.write = function write(string, offset) { - offset = typeof offset == 'number' ? offset : this.position; - - // If the buffer is to small let's extend the buffer - if(this.buffer.length < offset + string.length) { - var buffer = null; - // If we are in node.js - if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { - buffer = new Buffer(this.buffer.length + string.length); - this.buffer.copy(buffer, 0, 0, this.buffer.length); - } else if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { - // Create a new buffer - buffer = new Uint8Array(new ArrayBuffer(this.buffer.length + string.length)) - // Copy the content - for(var i = 0; i < this.position; i++) { - buffer[i] = this.buffer[i]; - } - } - - // Assign the new buffer - this.buffer = buffer; - } - - if(typeof Buffer != 'undefined' && Buffer.isBuffer(string) && Buffer.isBuffer(this.buffer)) { - string.copy(this.buffer, offset, 0, string.length); - this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; - // offset = string.length - } else if(typeof Buffer != 'undefined' && typeof string == 'string' && Buffer.isBuffer(this.buffer)) { - this.buffer.write(string, 'binary', offset); - this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; - // offset = string.length; - } else if(Object.prototype.toString.call(string) == '[object Uint8Array]' - || Object.prototype.toString.call(string) == '[object Array]' && typeof string != 'string') { - for(var i = 0; i < string.length; i++) { - this.buffer[offset++] = string[i]; - } - - this.position = offset > this.position ? offset : this.position; - } else if(typeof string == 'string') { - for(var i = 0; i < string.length; i++) { - this.buffer[offset++] = string.charCodeAt(i); - } - - this.position = offset > this.position ? offset : this.position; - } -}; - -/** - * Reads **length** bytes starting at **position**. - * - * @param {Number} position read from the given position in the Binary. - * @param {Number} length the number of bytes to read. - * @return {Buffer} - * @api public - */ -Binary.prototype.read = function read(position, length) { - length = length && length > 0 - ? length - : this.position; - - // Let's return the data based on the type we have - if(this.buffer['slice']) { - return this.buffer.slice(position, position + length); - } else { - // Create a buffer to keep the result - var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(length)) : new Array(length); - for(var i = 0; i < length; i++) { - buffer[i] = this.buffer[position++]; - } - } - // Return the buffer - return buffer; -}; - -/** - * Returns the value of this binary as a string. - * - * @return {String} - * @api public - */ -Binary.prototype.value = function value(asRaw) { - asRaw = asRaw == null ? false : asRaw; - - // If it's a node.js buffer object - if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { - return asRaw ? this.buffer.slice(0, this.position) : this.buffer.toString('binary', 0, this.position); - } else { - if(asRaw) { - // we support the slice command use it - if(this.buffer['slice'] != null) { - return this.buffer.slice(0, this.position); - } else { - // Create a new buffer to copy content to - var newBuffer = Object.prototype.toString.call(this.buffer) == '[object Uint8Array]' ? new Uint8Array(new ArrayBuffer(this.position)) : new Array(this.position); - // Copy content - for(var i = 0; i < this.position; i++) { - newBuffer[i] = this.buffer[i]; - } - // Return the buffer - return newBuffer; - } - } else { - return convertArraytoUtf8BinaryString(this.buffer, 0, this.position); - } - } -}; - -/** - * Length. - * - * @return {Number} the length of the binary. - * @api public - */ -Binary.prototype.length = function length() { - return this.position; -}; - -/** - * @ignore - * @api private - */ -Binary.prototype.toJSON = function() { - return this.buffer != null ? this.buffer.toString('base64') : ''; -} - -/** - * @ignore - * @api private - */ -Binary.prototype.toString = function(format) { - return this.buffer != null ? this.buffer.slice(0, this.position).toString(format) : ''; -} - -Binary.BUFFER_SIZE = 256; - -/** - * Default BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_DEFAULT = 0; -/** - * Function BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_FUNCTION = 1; -/** - * Byte Array BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_BYTE_ARRAY = 2; -/** - * OLD UUID BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_UUID_OLD = 3; -/** - * UUID BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_UUID = 4; -/** - * MD5 BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_MD5 = 5; -/** - * User BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_USER_DEFINED = 128; - -/** - * Expose. - */ -exports.Binary = Binary; - - -}, - - - -'binary_parser': function(module, exports, global, require, undefined){ - /** - * Binary Parser. - * Jonas Raoni Soares Silva - * http://jsfromhell.com/classes/binary-parser [v1.0] - */ -var chr = String.fromCharCode; - -var maxBits = []; -for (var i = 0; i < 64; i++) { - maxBits[i] = Math.pow(2, i); -} - -function BinaryParser (bigEndian, allowExceptions) { - if(!(this instanceof BinaryParser)) return new BinaryParser(bigEndian, allowExceptions); - - this.bigEndian = bigEndian; - this.allowExceptions = allowExceptions; -}; - -BinaryParser.warn = function warn (msg) { - if (this.allowExceptions) { - throw new Error(msg); - } - - return 1; -}; - -BinaryParser.decodeFloat = function decodeFloat (data, precisionBits, exponentBits) { - var b = new this.Buffer(this.bigEndian, data); - - b.checkBuffer(precisionBits + exponentBits + 1); - - var bias = maxBits[exponentBits - 1] - 1 - , signal = b.readBits(precisionBits + exponentBits, 1) - , exponent = b.readBits(precisionBits, exponentBits) - , significand = 0 - , divisor = 2 - , curByte = b.buffer.length + (-precisionBits >> 3) - 1; - - do { - for (var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 ); - } while (precisionBits -= startBit); - - return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 ); -}; - -BinaryParser.decodeInt = function decodeInt (data, bits, signed, forceBigEndian) { - var b = new this.Buffer(this.bigEndian || forceBigEndian, data) - , x = b.readBits(0, bits) - , max = maxBits[bits]; //max = Math.pow( 2, bits ); - - return signed && x >= max / 2 - ? x - max - : x; -}; - -BinaryParser.encodeFloat = function encodeFloat (data, precisionBits, exponentBits) { - var bias = maxBits[exponentBits - 1] - 1 - , minExp = -bias + 1 - , maxExp = bias - , minUnnormExp = minExp - precisionBits - , n = parseFloat(data) - , status = isNaN(n) || n == -Infinity || n == +Infinity ? n : 0 - , exp = 0 - , len = 2 * bias + 1 + precisionBits + 3 - , bin = new Array(len) - , signal = (n = status !== 0 ? 0 : n) < 0 - , intPart = Math.floor(n = Math.abs(n)) - , floatPart = n - intPart - , lastBit - , rounded - , result - , i - , j; - - for (i = len; i; bin[--i] = 0); - - for (i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor(intPart / 2)); - - for (i = bias + 1; floatPart > 0 && i; (bin[++i] = ((floatPart *= 2) >= 1) - 0 ) && --floatPart); - - for (i = -1; ++i < len && !bin[i];); - - if (bin[(lastBit = precisionBits - 1 + (i = (exp = bias + 1 - i) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - (exp = minExp - 1))) + 1]) { - if (!(rounded = bin[lastBit])) { - for (j = lastBit + 2; !rounded && j < len; rounded = bin[j++]); - } - - for (j = lastBit + 1; rounded && --j >= 0; (bin[j] = !bin[j] - 0) && (rounded = 0)); - } - - for (i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i];); - - if ((exp = bias + 1 - i) >= minExp && exp <= maxExp) { - ++i; - } else if (exp < minExp) { - exp != bias + 1 - len && exp < minUnnormExp && this.warn("encodeFloat::float underflow"); - i = bias + 1 - (exp = minExp - 1); - } - - if (intPart || status !== 0) { - this.warn(intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status); - exp = maxExp + 1; - i = bias + 2; - - if (status == -Infinity) { - signal = 1; - } else if (isNaN(status)) { - bin[i] = 1; - } - } - - for (n = Math.abs(exp + bias), j = exponentBits + 1, result = ""; --j; result = (n % 2) + result, n = n >>= 1); - - for (n = 0, j = 0, i = (result = (signal ? "1" : "0") + result + bin.slice(i, i + precisionBits).join("")).length, r = []; i; j = (j + 1) % 8) { - n += (1 << j) * result.charAt(--i); - if (j == 7) { - r[r.length] = String.fromCharCode(n); - n = 0; - } - } - - r[r.length] = n - ? String.fromCharCode(n) - : ""; - - return (this.bigEndian ? r.reverse() : r).join(""); -}; - -BinaryParser.encodeInt = function encodeInt (data, bits, signed, forceBigEndian) { - var max = maxBits[bits]; - - if (data >= max || data < -(max / 2)) { - this.warn("encodeInt::overflow"); - data = 0; - } - - if (data < 0) { - data += max; - } - - for (var r = []; data; r[r.length] = String.fromCharCode(data % 256), data = Math.floor(data / 256)); - - for (bits = -(-bits >> 3) - r.length; bits--; r[r.length] = "\0"); - - return ((this.bigEndian || forceBigEndian) ? r.reverse() : r).join(""); -}; - -BinaryParser.toSmall = function( data ){ return this.decodeInt( data, 8, true ); }; -BinaryParser.fromSmall = function( data ){ return this.encodeInt( data, 8, true ); }; -BinaryParser.toByte = function( data ){ return this.decodeInt( data, 8, false ); }; -BinaryParser.fromByte = function( data ){ return this.encodeInt( data, 8, false ); }; -BinaryParser.toShort = function( data ){ return this.decodeInt( data, 16, true ); }; -BinaryParser.fromShort = function( data ){ return this.encodeInt( data, 16, true ); }; -BinaryParser.toWord = function( data ){ return this.decodeInt( data, 16, false ); }; -BinaryParser.fromWord = function( data ){ return this.encodeInt( data, 16, false ); }; -BinaryParser.toInt = function( data ){ return this.decodeInt( data, 32, true ); }; -BinaryParser.fromInt = function( data ){ return this.encodeInt( data, 32, true ); }; -BinaryParser.toLong = function( data ){ return this.decodeInt( data, 64, true ); }; -BinaryParser.fromLong = function( data ){ return this.encodeInt( data, 64, true ); }; -BinaryParser.toDWord = function( data ){ return this.decodeInt( data, 32, false ); }; -BinaryParser.fromDWord = function( data ){ return this.encodeInt( data, 32, false ); }; -BinaryParser.toQWord = function( data ){ return this.decodeInt( data, 64, true ); }; -BinaryParser.fromQWord = function( data ){ return this.encodeInt( data, 64, true ); }; -BinaryParser.toFloat = function( data ){ return this.decodeFloat( data, 23, 8 ); }; -BinaryParser.fromFloat = function( data ){ return this.encodeFloat( data, 23, 8 ); }; -BinaryParser.toDouble = function( data ){ return this.decodeFloat( data, 52, 11 ); }; -BinaryParser.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11 ); }; - -// Factor out the encode so it can be shared by add_header and push_int32 -BinaryParser.encode_int32 = function encode_int32 (number, asArray) { - var a, b, c, d, unsigned; - unsigned = (number < 0) ? (number + 0x100000000) : number; - a = Math.floor(unsigned / 0xffffff); - unsigned &= 0xffffff; - b = Math.floor(unsigned / 0xffff); - unsigned &= 0xffff; - c = Math.floor(unsigned / 0xff); - unsigned &= 0xff; - d = Math.floor(unsigned); - return asArray ? [chr(a), chr(b), chr(c), chr(d)] : chr(a) + chr(b) + chr(c) + chr(d); -}; - -BinaryParser.encode_int64 = function encode_int64 (number) { - var a, b, c, d, e, f, g, h, unsigned; - unsigned = (number < 0) ? (number + 0x10000000000000000) : number; - a = Math.floor(unsigned / 0xffffffffffffff); - unsigned &= 0xffffffffffffff; - b = Math.floor(unsigned / 0xffffffffffff); - unsigned &= 0xffffffffffff; - c = Math.floor(unsigned / 0xffffffffff); - unsigned &= 0xffffffffff; - d = Math.floor(unsigned / 0xffffffff); - unsigned &= 0xffffffff; - e = Math.floor(unsigned / 0xffffff); - unsigned &= 0xffffff; - f = Math.floor(unsigned / 0xffff); - unsigned &= 0xffff; - g = Math.floor(unsigned / 0xff); - unsigned &= 0xff; - h = Math.floor(unsigned); - return chr(a) + chr(b) + chr(c) + chr(d) + chr(e) + chr(f) + chr(g) + chr(h); -}; - -/** - * UTF8 methods - */ - -// Take a raw binary string and return a utf8 string -BinaryParser.decode_utf8 = function decode_utf8 (binaryStr) { - var len = binaryStr.length - , decoded = '' - , i = 0 - , c = 0 - , c1 = 0 - , c2 = 0 - , c3; - - while (i < len) { - c = binaryStr.charCodeAt(i); - if (c < 128) { - decoded += String.fromCharCode(c); - i++; - } else if ((c > 191) && (c < 224)) { - c2 = binaryStr.charCodeAt(i+1); - decoded += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = binaryStr.charCodeAt(i+1); - c3 = binaryStr.charCodeAt(i+2); - decoded += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - - return decoded; -}; - -// Encode a cstring -BinaryParser.encode_cstring = function encode_cstring (s) { - return unescape(encodeURIComponent(s)) + BinaryParser.fromByte(0); -}; - -// Take a utf8 string and return a binary string -BinaryParser.encode_utf8 = function encode_utf8 (s) { - var a = "" - , c; - - for (var n = 0, len = s.length; n < len; n++) { - c = s.charCodeAt(n); - - if (c < 128) { - a += String.fromCharCode(c); - } else if ((c > 127) && (c < 2048)) { - a += String.fromCharCode((c>>6) | 192) ; - a += String.fromCharCode((c&63) | 128); - } else { - a += String.fromCharCode((c>>12) | 224); - a += String.fromCharCode(((c>>6) & 63) | 128); - a += String.fromCharCode((c&63) | 128); - } - } - - return a; -}; - -BinaryParser.hprint = function hprint (s) { - var number; - - for (var i = 0, len = s.length; i < len; i++) { - if (s.charCodeAt(i) < 32) { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - process.stdout.write(number + " ") - } else { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - process.stdout.write(number + " ") - } - } - - process.stdout.write("\n\n"); -}; - -BinaryParser.ilprint = function hprint (s) { - var number; - - for (var i = 0, len = s.length; i < len; i++) { - if (s.charCodeAt(i) < 32) { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(10) - : s.charCodeAt(i).toString(10); - - require('util').debug(number+' : '); - } else { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(10) - : s.charCodeAt(i).toString(10); - require('util').debug(number+' : '+ s.charAt(i)); - } - } -}; - -BinaryParser.hlprint = function hprint (s) { - var number; - - for (var i = 0, len = s.length; i < len; i++) { - if (s.charCodeAt(i) < 32) { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - require('util').debug(number+' : '); - } else { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - require('util').debug(number+' : '+ s.charAt(i)); - } - } -}; - -/** - * BinaryParser buffer constructor. - */ -function BinaryParserBuffer (bigEndian, buffer) { - this.bigEndian = bigEndian || 0; - this.buffer = []; - this.setBuffer(buffer); -}; - -BinaryParserBuffer.prototype.setBuffer = function setBuffer (data) { - var l, i, b; - - if (data) { - i = l = data.length; - b = this.buffer = new Array(l); - for (; i; b[l - i] = data.charCodeAt(--i)); - this.bigEndian && b.reverse(); - } -}; - -BinaryParserBuffer.prototype.hasNeededBits = function hasNeededBits (neededBits) { - return this.buffer.length >= -(-neededBits >> 3); -}; - -BinaryParserBuffer.prototype.checkBuffer = function checkBuffer (neededBits) { - if (!this.hasNeededBits(neededBits)) { - throw new Error("checkBuffer::missing bytes"); - } -}; - -BinaryParserBuffer.prototype.readBits = function readBits (start, length) { - //shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni) - - function shl (a, b) { - for (; b--; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1); - return a; - } - - if (start < 0 || length <= 0) { - return 0; - } - - this.checkBuffer(start + length); - - var offsetLeft - , offsetRight = start % 8 - , curByte = this.buffer.length - ( start >> 3 ) - 1 - , lastByte = this.buffer.length + ( -( start + length ) >> 3 ) - , diff = curByte - lastByte - , sum = ((this.buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + (diff && (offsetLeft = (start + length) % 8) ? (this.buffer[lastByte++] & ((1 << offsetLeft) - 1)) << (diff-- << 3) - offsetRight : 0); - - for(; diff; sum += shl(this.buffer[lastByte++], (diff-- << 3) - offsetRight)); - - return sum; -}; - -/** - * Expose. - */ -BinaryParser.Buffer = BinaryParserBuffer; - -exports.BinaryParser = BinaryParser; - -}, - - - -'bson': function(module, exports, global, require, undefined){ - var Long = require('./long').Long - , Double = require('./double').Double - , Timestamp = require('./timestamp').Timestamp - , ObjectID = require('./objectid').ObjectID - , Symbol = require('./symbol').Symbol - , Code = require('./code').Code - , MinKey = require('./min_key').MinKey - , MaxKey = require('./max_key').MaxKey - , DBRef = require('./db_ref').DBRef - , Binary = require('./binary').Binary - , BinaryParser = require('./binary_parser').BinaryParser - , writeIEEE754 = require('./float_parser').writeIEEE754 - , readIEEE754 = require('./float_parser').readIEEE754 - -// To ensure that 0.4 of node works correctly -var isDate = function isDate(d) { - return typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]'; -} - -/** - * Create a new BSON instance - * - * @class Represents the BSON Parser - * @return {BSON} instance of BSON Parser. - */ -function BSON () {}; - -/** - * @ignore - * @api private - */ -// BSON MAX VALUES -BSON.BSON_INT32_MAX = 0x7FFFFFFF; -BSON.BSON_INT32_MIN = -0x80000000; - -BSON.BSON_INT64_MAX = Math.pow(2, 63) - 1; -BSON.BSON_INT64_MIN = -Math.pow(2, 63); - -// JS MAX PRECISE VALUES -BSON.JS_INT_MAX = 0x20000000000000; // Any integer up to 2^53 can be precisely represented by a double. -BSON.JS_INT_MIN = -0x20000000000000; // Any integer down to -2^53 can be precisely represented by a double. - -// Internal long versions -var JS_INT_MAX_LONG = Long.fromNumber(0x20000000000000); // Any integer up to 2^53 can be precisely represented by a double. -var JS_INT_MIN_LONG = Long.fromNumber(-0x20000000000000); // Any integer down to -2^53 can be precisely represented by a double. - -/** - * Number BSON Type - * - * @classconstant BSON_DATA_NUMBER - **/ -BSON.BSON_DATA_NUMBER = 1; -/** - * String BSON Type - * - * @classconstant BSON_DATA_STRING - **/ -BSON.BSON_DATA_STRING = 2; -/** - * Object BSON Type - * - * @classconstant BSON_DATA_OBJECT - **/ -BSON.BSON_DATA_OBJECT = 3; -/** - * Array BSON Type - * - * @classconstant BSON_DATA_ARRAY - **/ -BSON.BSON_DATA_ARRAY = 4; -/** - * Binary BSON Type - * - * @classconstant BSON_DATA_BINARY - **/ -BSON.BSON_DATA_BINARY = 5; -/** - * ObjectID BSON Type - * - * @classconstant BSON_DATA_OID - **/ -BSON.BSON_DATA_OID = 7; -/** - * Boolean BSON Type - * - * @classconstant BSON_DATA_BOOLEAN - **/ -BSON.BSON_DATA_BOOLEAN = 8; -/** - * Date BSON Type - * - * @classconstant BSON_DATA_DATE - **/ -BSON.BSON_DATA_DATE = 9; -/** - * null BSON Type - * - * @classconstant BSON_DATA_NULL - **/ -BSON.BSON_DATA_NULL = 10; -/** - * RegExp BSON Type - * - * @classconstant BSON_DATA_REGEXP - **/ -BSON.BSON_DATA_REGEXP = 11; -/** - * Code BSON Type - * - * @classconstant BSON_DATA_CODE - **/ -BSON.BSON_DATA_CODE = 13; -/** - * Symbol BSON Type - * - * @classconstant BSON_DATA_SYMBOL - **/ -BSON.BSON_DATA_SYMBOL = 14; -/** - * Code with Scope BSON Type - * - * @classconstant BSON_DATA_CODE_W_SCOPE - **/ -BSON.BSON_DATA_CODE_W_SCOPE = 15; -/** - * 32 bit Integer BSON Type - * - * @classconstant BSON_DATA_INT - **/ -BSON.BSON_DATA_INT = 16; -/** - * Timestamp BSON Type - * - * @classconstant BSON_DATA_TIMESTAMP - **/ -BSON.BSON_DATA_TIMESTAMP = 17; -/** - * Long BSON Type - * - * @classconstant BSON_DATA_LONG - **/ -BSON.BSON_DATA_LONG = 18; -/** - * MinKey BSON Type - * - * @classconstant BSON_DATA_MIN_KEY - **/ -BSON.BSON_DATA_MIN_KEY = 0xff; -/** - * MaxKey BSON Type - * - * @classconstant BSON_DATA_MAX_KEY - **/ -BSON.BSON_DATA_MAX_KEY = 0x7f; - -/** - * Binary Default Type - * - * @classconstant BSON_BINARY_SUBTYPE_DEFAULT - **/ -BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0; -/** - * Binary Function Type - * - * @classconstant BSON_BINARY_SUBTYPE_FUNCTION - **/ -BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1; -/** - * Binary Byte Array Type - * - * @classconstant BSON_BINARY_SUBTYPE_BYTE_ARRAY - **/ -BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -/** - * Binary UUID Type - * - * @classconstant BSON_BINARY_SUBTYPE_UUID - **/ -BSON.BSON_BINARY_SUBTYPE_UUID = 3; -/** - * Binary MD5 Type - * - * @classconstant BSON_BINARY_SUBTYPE_MD5 - **/ -BSON.BSON_BINARY_SUBTYPE_MD5 = 4; -/** - * Binary User Defined Type - * - * @classconstant BSON_BINARY_SUBTYPE_USER_DEFINED - **/ -BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -/** - * Calculate the bson size for a passed in Javascript object. - * - * @param {Object} object the Javascript object to calculate the BSON byte size for. - * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. - * @return {Number} returns the number of bytes the BSON object will take up. - * @api public - */ -BSON.calculateObjectSize = function calculateObjectSize(object, serializeFunctions) { - var totalLength = (4 + 1); - - if(Array.isArray(object)) { - for(var i = 0; i < object.length; i++) { - totalLength += calculateElement(i.toString(), object[i], serializeFunctions) - } - } else { - // If we have toBSON defined, override the current object - if(object.toBSON) { - object = object.toBSON(); - } - - // Calculate size - for(var key in object) { - totalLength += calculateElement(key, object[key], serializeFunctions) - } - } - - return totalLength; -} - -/** - * @ignore - * @api private - */ -function calculateElement(name, value, serializeFunctions) { - var isBuffer = typeof Buffer !== 'undefined'; - - switch(typeof value) { - case 'string': - return 1 + (!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1 + 4 + (!isBuffer ? numberOfBytes(value) : Buffer.byteLength(value, 'utf8')) + 1; - case 'number': - if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { - if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { // 32 bit - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (4 + 1); - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } - } else { // 64 bit - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } - case 'undefined': - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); - case 'boolean': - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 1); - case 'object': - if(value == null || value instanceof MinKey || value instanceof MaxKey || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); - } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (12 + 1); - } else if(value instanceof Date || isDate(value)) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 4 + 1) + value.length; - } else if(value instanceof Long || value instanceof Double || value instanceof Timestamp - || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Double' || value['_bsontype'] == 'Timestamp') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } else if(value instanceof Code || value['_bsontype'] == 'Code') { - // Calculate size depending on the availability of a scope - if(value.scope != null && Object.keys(value.scope).length > 0) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1; - } - } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { - // Check what kind of subtype we have - if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1 + 4); - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1); - } - } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + ((!isBuffer ? numberOfBytes(value.value) : Buffer.byteLength(value.value, 'utf8')) + 4 + 1 + 1); - } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { - // Set up correct object for serialization - var ordered_values = { - '$ref': value.namespace - , '$id' : value.oid - }; - - // Add db reference if it exists - if(null != value.db) { - ordered_values['$db'] = value.db; - } - - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + BSON.calculateObjectSize(ordered_values, serializeFunctions); - } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 - + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + BSON.calculateObjectSize(value, serializeFunctions) + 1; - } - case 'function': - // WTF for 0.4.X where typeof /someregexp/ === 'function' - if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 - + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 - } else { - if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); - } else if(serializeFunctions) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1; - } - } - } - - return 0; -} - -/** - * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. - * @param {Number} index the index in the buffer where we wish to start serializing into. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Number} returns the new write index in the Buffer. - * @api public - */ -BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, checkKeys, buffer, index, serializeFunctions) { - // Default setting false - serializeFunctions = serializeFunctions == null ? false : serializeFunctions; - // Write end information (length of the object) - var size = buffer.length; - // Write the size of the object - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - return serializeObject(object, checkKeys, buffer, index, serializeFunctions) - 1; -} - -/** - * @ignore - * @api private - */ -var serializeObject = function(object, checkKeys, buffer, index, serializeFunctions) { - // Process the object - if(Array.isArray(object)) { - for(var i = 0; i < object.length; i++) { - index = packElement(i.toString(), object[i], checkKeys, buffer, index, serializeFunctions); - } - } else { - // If we have toBSON defined, override the current object - if(object.toBSON) { - object = object.toBSON(); - } - - // Serialize the object - for(var key in object) { - // Check the key and throw error if it's illegal - if(checkKeys == true && (key != '$db' && key != '$ref' && key != '$id')) { - BSON.checkKey(key); - } - - // Pack the element - index = packElement(key, object[key], checkKeys, buffer, index, serializeFunctions); - } - } - - // Write zero - buffer[index++] = 0; - return index; -} - -var stringToBytes = function(str) { - var ch, st, re = []; - for (var i = 0; i < str.length; i++ ) { - ch = str.charCodeAt(i); // get char - st = []; // set up "stack" - do { - st.push( ch & 0xFF ); // push byte to stack - ch = ch >> 8; // shift value down by 1 byte - } - while ( ch ); - // add stack contents to result - // done because chars have "wrong" endianness - re = re.concat( st.reverse() ); - } - // return an array of bytes - return re; -} - -var numberOfBytes = function(str) { - var ch, st, re = 0; - for (var i = 0; i < str.length; i++ ) { - ch = str.charCodeAt(i); // get char - st = []; // set up "stack" - do { - st.push( ch & 0xFF ); // push byte to stack - ch = ch >> 8; // shift value down by 1 byte - } - while ( ch ); - // add stack contents to result - // done because chars have "wrong" endianness - re = re + st.length; - } - // return an array of bytes - return re; -} - -/** - * @ignore - * @api private - */ -var writeToTypedArray = function(buffer, string, index) { - var bytes = stringToBytes(string); - for(var i = 0; i < bytes.length; i++) { - buffer[index + i] = bytes[i]; - } - return bytes.length; -} - -/** - * @ignore - * @api private - */ -var supportsBuffer = typeof Buffer != 'undefined'; - -/** - * @ignore - * @api private - */ -var packElement = function(name, value, checkKeys, buffer, index, serializeFunctions) { - var startIndex = index; - - switch(typeof value) { - case 'string': - // Encode String type - buffer[index++] = BSON.BSON_DATA_STRING; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Calculate size - var size = supportsBuffer ? Buffer.byteLength(value) + 1 : numberOfBytes(value) + 1; - // Write the size of the string to buffer - buffer[index + 3] = (size >> 24) & 0xff; - buffer[index + 2] = (size >> 16) & 0xff; - buffer[index + 1] = (size >> 8) & 0xff; - buffer[index] = size & 0xff; - // Ajust the index - index = index + 4; - // Write the string - supportsBuffer ? buffer.write(value, index, 'utf8') : writeToTypedArray(buffer, value, index); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0; - // Return index - return index; - case 'number': - // We have an integer value - if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { - // If the value fits in 32 bits encode as int, if it fits in a double - // encode it as a double, otherwise long - if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { - // Set int type 32 bits or less - buffer[index++] = BSON.BSON_DATA_INT; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write the int value - buffer[index++] = value & 0xff; - buffer[index++] = (value >> 8) & 0xff; - buffer[index++] = (value >> 16) & 0xff; - buffer[index++] = (value >> 24) & 0xff; - } else if(value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { - // Encode as double - buffer[index++] = BSON.BSON_DATA_NUMBER; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write float - writeIEEE754(buffer, value, index, 'little', 52, 8); - // Ajust index - index = index + 8; - } else { - // Set long type - buffer[index++] = BSON.BSON_DATA_LONG; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - var longVal = Long.fromNumber(value); - var lowBits = longVal.getLowBits(); - var highBits = longVal.getHighBits(); - // Encode low bits - buffer[index++] = lowBits & 0xff; - buffer[index++] = (lowBits >> 8) & 0xff; - buffer[index++] = (lowBits >> 16) & 0xff; - buffer[index++] = (lowBits >> 24) & 0xff; - // Encode high bits - buffer[index++] = highBits & 0xff; - buffer[index++] = (highBits >> 8) & 0xff; - buffer[index++] = (highBits >> 16) & 0xff; - buffer[index++] = (highBits >> 24) & 0xff; - } - } else { - // Encode as double - buffer[index++] = BSON.BSON_DATA_NUMBER; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write float - writeIEEE754(buffer, value, index, 'little', 52, 8); - // Ajust index - index = index + 8; - } - - return index; - case 'undefined': - // Set long type - buffer[index++] = BSON.BSON_DATA_NULL; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - return index; - case 'boolean': - // Write the type - buffer[index++] = BSON.BSON_DATA_BOOLEAN; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Encode the boolean value - buffer[index++] = value ? 1 : 0; - return index; - case 'object': - if(value === null || value instanceof MinKey || value instanceof MaxKey - || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { - // Write the type of either min or max key - if(value === null) { - buffer[index++] = BSON.BSON_DATA_NULL; - } else if(value instanceof MinKey) { - buffer[index++] = BSON.BSON_DATA_MIN_KEY; - } else { - buffer[index++] = BSON.BSON_DATA_MAX_KEY; - } - - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - return index; - } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { - // Write the type - buffer[index++] = BSON.BSON_DATA_OID; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write objectid - supportsBuffer ? buffer.write(value.id, index, 'binary') : writeToTypedArray(buffer, value.id, index); - // Ajust index - index = index + 12; - return index; - } else if(value instanceof Date || isDate(value)) { - // Write the type - buffer[index++] = BSON.BSON_DATA_DATE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write the date - var dateInMilis = Long.fromNumber(value.getTime()); - var lowBits = dateInMilis.getLowBits(); - var highBits = dateInMilis.getHighBits(); - // Encode low bits - buffer[index++] = lowBits & 0xff; - buffer[index++] = (lowBits >> 8) & 0xff; - buffer[index++] = (lowBits >> 16) & 0xff; - buffer[index++] = (lowBits >> 24) & 0xff; - // Encode high bits - buffer[index++] = highBits & 0xff; - buffer[index++] = (highBits >> 8) & 0xff; - buffer[index++] = (highBits >> 16) & 0xff; - buffer[index++] = (highBits >> 24) & 0xff; - return index; - } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { - // Write the type - buffer[index++] = BSON.BSON_DATA_BINARY; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Get size of the buffer (current write point) - var size = value.length; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the default subtype - buffer[index++] = BSON.BSON_BINARY_SUBTYPE_DEFAULT; - // Copy the content form the binary field to the buffer - value.copy(buffer, index, 0, size); - // Adjust the index - index = index + size; - return index; - } else if(value instanceof Long || value instanceof Timestamp || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { - // Write the type - buffer[index++] = value instanceof Long ? BSON.BSON_DATA_LONG : BSON.BSON_DATA_TIMESTAMP; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write the date - var lowBits = value.getLowBits(); - var highBits = value.getHighBits(); - // Encode low bits - buffer[index++] = lowBits & 0xff; - buffer[index++] = (lowBits >> 8) & 0xff; - buffer[index++] = (lowBits >> 16) & 0xff; - buffer[index++] = (lowBits >> 24) & 0xff; - // Encode high bits - buffer[index++] = highBits & 0xff; - buffer[index++] = (highBits >> 8) & 0xff; - buffer[index++] = (highBits >> 16) & 0xff; - buffer[index++] = (highBits >> 24) & 0xff; - return index; - } else if(value instanceof Double || value['_bsontype'] == 'Double') { - // Encode as double - buffer[index++] = BSON.BSON_DATA_NUMBER; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write float - writeIEEE754(buffer, value, index, 'little', 52, 8); - // Ajust index - index = index + 8; - return index; - } else if(value instanceof Code || value['_bsontype'] == 'Code') { - if(value.scope != null && Object.keys(value.scope).length > 0) { - // Write the type - buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Calculate the scope size - var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); - // Function string - var functionString = value.code.toString(); - // Function Size - var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - - // Calculate full size of the object - var totalSize = 4 + codeSize + scopeSize + 4; - - // Write the total size of the object - buffer[index++] = totalSize & 0xff; - buffer[index++] = (totalSize >> 8) & 0xff; - buffer[index++] = (totalSize >> 16) & 0xff; - buffer[index++] = (totalSize >> 24) & 0xff; - - // Write the size of the string to buffer - buffer[index++] = codeSize & 0xff; - buffer[index++] = (codeSize >> 8) & 0xff; - buffer[index++] = (codeSize >> 16) & 0xff; - buffer[index++] = (codeSize >> 24) & 0xff; - - // Write the string - supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index); - // Update index - index = index + codeSize - 1; - // Write zero - buffer[index++] = 0; - // Serialize the scope object - var scopeObjectBuffer = supportsBuffer ? new Buffer(scopeSize) : new Uint8Array(new ArrayBuffer(scopeSize)); - // Execute the serialization into a seperate buffer - serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); - - // Adjusted scope Size (removing the header) - var scopeDocSize = scopeSize; - // Write scope object size - buffer[index++] = scopeDocSize & 0xff; - buffer[index++] = (scopeDocSize >> 8) & 0xff; - buffer[index++] = (scopeDocSize >> 16) & 0xff; - buffer[index++] = (scopeDocSize >> 24) & 0xff; - - // Write the scopeObject into the buffer - supportsBuffer ? scopeObjectBuffer.copy(buffer, index, 0, scopeSize) : buffer.set(scopeObjectBuffer, index); - // Adjust index, removing the empty size of the doc (5 bytes 0000000005) - index = index + scopeDocSize - 5; - // Write trailing zero - buffer[index++] = 0; - return index - } else { - buffer[index++] = BSON.BSON_DATA_CODE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Function string - var functionString = value.code.toString(); - // Function Size - var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the string - buffer.write(functionString, index, 'utf8'); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0; - return index; - } - } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { - // Write the type - buffer[index++] = BSON.BSON_DATA_BINARY; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Extract the buffer - var data = value.value(true); - // Calculate size - var size = value.position; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the subtype to the buffer - buffer[index++] = value.sub_type; - - // If we have binary type 2 the 4 first bytes are the size - if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - } - - // Write the data to the object - supportsBuffer ? data.copy(buffer, index, 0, value.position) : buffer.set(data, index); - // Ajust index - index = index + value.position; - return index; - } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { - // Write the type - buffer[index++] = BSON.BSON_DATA_SYMBOL; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Calculate size - var size = supportsBuffer ? Buffer.byteLength(value.value) + 1 : numberOfBytes(value.value) + 1; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the string - buffer.write(value.value, index, 'utf8'); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0x00; - return index; - } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { - // Write the type - buffer[index++] = BSON.BSON_DATA_OBJECT; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Set up correct object for serialization - var ordered_values = { - '$ref': value.namespace - , '$id' : value.oid - }; - - // Add db reference if it exists - if(null != value.db) { - ordered_values['$db'] = value.db; - } - - // Message size - var size = BSON.calculateObjectSize(ordered_values, serializeFunctions); - // Serialize the object - var endIndex = BSON.serializeWithBufferAndIndex(ordered_values, checkKeys, buffer, index, serializeFunctions); - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write zero for object - buffer[endIndex++] = 0x00; - // Return the end index - return endIndex; - } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { - // Write the type - buffer[index++] = BSON.BSON_DATA_REGEXP; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write the regular expression string - supportsBuffer ? buffer.write(value.source, index, 'utf8') : writeToTypedArray(buffer, value.source, index); - // Adjust the index - index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); - // Write zero - buffer[index++] = 0x00; - // Write the parameters - if(value.global) buffer[index++] = 0x73; // s - if(value.ignoreCase) buffer[index++] = 0x69; // i - if(value.multiline) buffer[index++] = 0x6d; // m - // Add ending zero - buffer[index++] = 0x00; - return index; - } else { - // Write the type - buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Adjust the index - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - var endIndex = serializeObject(value, checkKeys, buffer, index + 4, serializeFunctions); - // Write size - var size = endIndex - index; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - return endIndex; - } - case 'function': - // WTF for 0.4.X where typeof /someregexp/ === 'function' - if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { - // Write the type - buffer[index++] = BSON.BSON_DATA_REGEXP; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write the regular expression string - buffer.write(value.source, index, 'utf8'); - // Adjust the index - index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); - // Write zero - buffer[index++] = 0x00; - // Write the parameters - if(value.global) buffer[index++] = 0x73; // s - if(value.ignoreCase) buffer[index++] = 0x69; // i - if(value.multiline) buffer[index++] = 0x6d; // m - // Add ending zero - buffer[index++] = 0x00; - return index; - } else { - if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { - // Write the type - buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Calculate the scope size - var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); - // Function string - var functionString = value.toString(); - // Function Size - var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - - // Calculate full size of the object - var totalSize = 4 + codeSize + scopeSize; - - // Write the total size of the object - buffer[index++] = totalSize & 0xff; - buffer[index++] = (totalSize >> 8) & 0xff; - buffer[index++] = (totalSize >> 16) & 0xff; - buffer[index++] = (totalSize >> 24) & 0xff; - - // Write the size of the string to buffer - buffer[index++] = codeSize & 0xff; - buffer[index++] = (codeSize >> 8) & 0xff; - buffer[index++] = (codeSize >> 16) & 0xff; - buffer[index++] = (codeSize >> 24) & 0xff; - - // Write the string - buffer.write(functionString, index, 'utf8'); - // Update index - index = index + codeSize - 1; - // Write zero - buffer[index++] = 0; - // Serialize the scope object - var scopeObjectBuffer = new Buffer(scopeSize); - // Execute the serialization into a seperate buffer - serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); - - // Adjusted scope Size (removing the header) - var scopeDocSize = scopeSize - 4; - // Write scope object size - buffer[index++] = scopeDocSize & 0xff; - buffer[index++] = (scopeDocSize >> 8) & 0xff; - buffer[index++] = (scopeDocSize >> 16) & 0xff; - buffer[index++] = (scopeDocSize >> 24) & 0xff; - - // Write the scopeObject into the buffer - scopeObjectBuffer.copy(buffer, index, 0, scopeSize); - - // Adjust index, removing the empty size of the doc (5 bytes 0000000005) - index = index + scopeDocSize - 5; - // Write trailing zero - buffer[index++] = 0; - return index - } else if(serializeFunctions) { - buffer[index++] = BSON.BSON_DATA_CODE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Function string - var functionString = value.toString(); - // Function Size - var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the string - buffer.write(functionString, index, 'utf8'); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0; - return index; - } - } - } - - // If no value to serialize - return index; -} - -/** - * Serialize a Javascript object. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Buffer} returns the Buffer object containing the serialized object. - * @api public - */ -BSON.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { - var buffer = null; - // Calculate the size of the object - var size = BSON.calculateObjectSize(object, serializeFunctions); - // Fetch the best available type for storing the binary data - if(buffer = typeof Buffer != 'undefined') { - buffer = new Buffer(size); - asBuffer = true; - } else if(typeof Uint8Array != 'undefined') { - buffer = new Uint8Array(new ArrayBuffer(size)); - } else { - buffer = new Array(size); - } - - // If asBuffer is false use typed arrays - BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, 0, serializeFunctions); - return buffer; -} - -/** - * Contains the function cache if we have that enable to allow for avoiding the eval step on each deserialization, comparison is by md5 - * - * @ignore - * @api private - */ -var functionCache = BSON.functionCache = {}; - -/** - * Crc state variables shared by function - * - * @ignore - * @api private - */ -var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D]; - -/** - * CRC32 hash method, Fast and enough versitility for our usage - * - * @ignore - * @api private - */ -var crc32 = function(string, start, end) { - var crc = 0 - var x = 0; - var y = 0; - crc = crc ^ (-1); - - for(var i = start, iTop = end; i < iTop;i++) { - y = (crc ^ string[i]) & 0xFF; - x = table[y]; - crc = (crc >>> 8) ^ x; - } - - return crc ^ (-1); -} - -/** - * Deserialize stream data as BSON documents. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} data the buffer containing the serialized set of BSON documents. - * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. - * @param {Number} numberOfDocuments number of documents to deserialize. - * @param {Array} documents an array where to store the deserialized documents. - * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. - * @param {Object} [options] additional options used for the deserialization. - * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. - * @api public - */ -BSON.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { - // if(numberOfDocuments !== documents.length) throw new Error("Number of expected results back is less than the number of documents"); - options = options != null ? options : {}; - var index = startIndex; - // Loop over all documents - for(var i = 0; i < numberOfDocuments; i++) { - // Find size of the document - var size = data[index] | data[index + 1] << 8 | data[index + 2] << 16 | data[index + 3] << 24; - // Update options with index - options['index'] = index; - // Parse the document at this point - documents[docStartIndex + i] = BSON.deserialize(data, options); - // Adjust index by the document size - index = index + size; - } - - // Return object containing end index of parsing and list of documents - return index; -} - -/** - * Ensure eval is isolated. - * - * @ignore - * @api private - */ -var isolateEvalWithHash = function(functionCache, hash, functionString, object) { - // Contains the value we are going to set - var value = null; - - // Check for cache hit, eval if missing and return cached function - if(functionCache[hash] == null) { - eval("value = " + functionString); - functionCache[hash] = value; - } - // Set the object - return functionCache[hash].bind(object); -} - -/** - * Ensure eval is isolated. - * - * @ignore - * @api private - */ -var isolateEval = function(functionString) { - // Contains the value we are going to set - var value = null; - // Eval the function - eval("value = " + functionString); - return value; -} - -/** - * Convert Uint8Array to String - * - * @ignore - * @api private - */ -var convertUint8ArrayToUtf8String = function(byteArray, startIndex, endIndex) { - return BinaryParser.decode_utf8(convertArraytoUtf8BinaryString(byteArray, startIndex, endIndex)); -} - -var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { - var result = ""; - for(var i = startIndex; i < endIndex; i++) { - result = result + String.fromCharCode(byteArray[i]); - } - - return result; -}; - -/** - * Deserialize data as BSON. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. - * @param {Object} [options] additional options used for the deserialization. - * @param {Boolean} [isArray] ignore used for recursive parsing. - * @return {Object} returns the deserialized Javascript Object. - * @api public - */ -BSON.deserialize = function(buffer, options, isArray) { - // Options - options = options == null ? {} : options; - var evalFunctions = options['evalFunctions'] == null ? false : options['evalFunctions']; - var cacheFunctions = options['cacheFunctions'] == null ? false : options['cacheFunctions']; - var cacheFunctionsCrc32 = options['cacheFunctionsCrc32'] == null ? false : options['cacheFunctionsCrc32']; - - // Validate that we have at least 4 bytes of buffer - if(buffer.length < 5) throw new Error("corrupt bson message < 5 bytes long"); - - // Set up index - var index = typeof options['index'] == 'number' ? options['index'] : 0; - // Reads in a C style string - var readCStyleString = function() { - // Get the start search index - var i = index; - // Locate the end of the c string - while(buffer[i] !== 0x00) { i++ } - // Grab utf8 encoded string - var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, i) : convertUint8ArrayToUtf8String(buffer, index, i); - // Update index position - index = i + 1; - // Return string - return string; - } - - // Create holding object - var object = isArray ? [] : {}; - - // Read the document size - var size = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - - // Ensure buffer is valid size - if(size < 5 || size > buffer.length) throw new Error("corrupt bson message"); - - // While we have more left data left keep parsing - while(true) { - // Read the type - var elementType = buffer[index++]; - // If we get a zero it's the last byte, exit - if(elementType == 0) break; - // Read the name of the field - var name = readCStyleString(); - // Switch on the type - switch(elementType) { - case BSON.BSON_DATA_OID: - var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('binary', index, index + 12) : convertArraytoUtf8BinaryString(buffer, index, index + 12); - // Decode the oid - object[name] = new ObjectID(string); - // Update index - index = index + 12; - break; - case BSON.BSON_DATA_STRING: - // Read the content of the field - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Add string to object - object[name] = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); - // Update parse index position - index = index + stringSize; - break; - case BSON.BSON_DATA_INT: - // Decode the 32bit value - object[name] = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - break; - case BSON.BSON_DATA_NUMBER: - // Decode the double value - object[name] = readIEEE754(buffer, index, 'little', 52, 8); - // Update the index - index = index + 8; - break; - case BSON.BSON_DATA_DATE: - // Unpack the low and high bits - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Set date object - object[name] = new Date(new Long(lowBits, highBits).toNumber()); - break; - case BSON.BSON_DATA_BOOLEAN: - // Parse the boolean value - object[name] = buffer[index++] == 1; - break; - case BSON.BSON_DATA_NULL: - // Parse the boolean value - object[name] = null; - break; - case BSON.BSON_DATA_BINARY: - // Decode the size of the binary blob - var binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Decode the subtype - var subType = buffer[index++]; - // Decode as raw Buffer object if options specifies it - if(buffer['slice'] != null) { - // If we have subtype 2 skip the 4 bytes for the size - if(subType == Binary.SUBTYPE_BYTE_ARRAY) { - binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - } - // Slice the data - object[name] = new Binary(buffer.slice(index, index + binarySize), subType); - } else { - var _buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(binarySize)) : new Array(binarySize); - // If we have subtype 2 skip the 4 bytes for the size - if(subType == Binary.SUBTYPE_BYTE_ARRAY) { - binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - } - // Copy the data - for(var i = 0; i < binarySize; i++) { - _buffer[i] = buffer[index + i]; - } - // Create the binary object - object[name] = new Binary(_buffer, subType); - } - // Update the index - index = index + binarySize; - break; - case BSON.BSON_DATA_ARRAY: - options['index'] = index; - // Decode the size of the array document - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - // Set the array to the object - object[name] = BSON.deserialize(buffer, options, true); - // Adjust the index - index = index + objectSize; - break; - case BSON.BSON_DATA_OBJECT: - options['index'] = index; - // Decode the size of the object document - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - // Set the array to the object - object[name] = BSON.deserialize(buffer, options, false); - // Adjust the index - index = index + objectSize; - break; - case BSON.BSON_DATA_REGEXP: - // Create the regexp - var source = readCStyleString(); - var regExpOptions = readCStyleString(); - // For each option add the corresponding one for javascript - var optionsArray = new Array(regExpOptions.length); - - // Parse options - for(var i = 0; i < regExpOptions.length; i++) { - switch(regExpOptions[i]) { - case 'm': - optionsArray[i] = 'm'; - break; - case 's': - optionsArray[i] = 'g'; - break; - case 'i': - optionsArray[i] = 'i'; - break; - } - } - - object[name] = new RegExp(source, optionsArray.join('')); - break; - case BSON.BSON_DATA_LONG: - // Unpack the low and high bits - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Create long object - var long = new Long(lowBits, highBits); - // Set the object - object[name] = long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG) ? long.toNumber() : long; - break; - case BSON.BSON_DATA_SYMBOL: - // Read the content of the field - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Add string to object - object[name] = new Symbol(buffer.toString('utf8', index, index + stringSize - 1)); - // Update parse index position - index = index + stringSize; - break; - case BSON.BSON_DATA_TIMESTAMP: - // Unpack the low and high bits - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Set the object - object[name] = new Timestamp(lowBits, highBits); - break; - case BSON.BSON_DATA_MIN_KEY: - // Parse the object - object[name] = new MinKey(); - break; - case BSON.BSON_DATA_MAX_KEY: - // Parse the object - object[name] = new MaxKey(); - break; - case BSON.BSON_DATA_CODE: - // Read the content of the field - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Function string - var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); - - // If we are evaluating the functions - if(evalFunctions) { - // Contains the value we are going to set - var value = null; - // If we have cache enabled let's look for the md5 of the function in the cache - if(cacheFunctions) { - var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; - // Got to do this to avoid V8 deoptimizing the call due to finding eval - object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); - } else { - // Set directly - object[name] = isolateEval(functionString); - } - } else { - object[name] = new Code(functionString, {}); - } - - // Update parse index position - index = index + stringSize; - break; - case BSON.BSON_DATA_CODE_W_SCOPE: - // Read the content of the field - var totalSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Javascript function - var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); - // Update parse index position - index = index + stringSize; - // Parse the element - options['index'] = index; - // Decode the size of the object document - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - // Decode the scope object - var scopeObject = BSON.deserialize(buffer, options, false); - // Adjust the index - index = index + objectSize; - - // If we are evaluating the functions - if(evalFunctions) { - // Contains the value we are going to set - var value = null; - // If we have cache enabled let's look for the md5 of the function in the cache - if(cacheFunctions) { - var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; - // Got to do this to avoid V8 deoptimizing the call due to finding eval - object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); - } else { - // Set directly - object[name] = isolateEval(functionString); - } - - // Set the scope on the object - object[name].scope = scopeObject; - } else { - object[name] = new Code(functionString, scopeObject); - } - - // Add string to object - break; - } - } - - // Check if we have a db ref object - if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']); - - // Return the final objects - return object; -} - -/** - * Check if key name is valid. - * - * @ignore - * @api private - */ -BSON.checkKey = function checkKey (key) { - if (!key.length) return; - // Check if we have a legal key for the object - if('$' == key[0]) { - throw Error("key " + key + " must not start with '$'"); - } else if (!!~key.indexOf('.')) { - throw Error("key " + key + " must not contain '.'"); - } -}; - -/** - * Deserialize data as BSON. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. - * @param {Object} [options] additional options used for the deserialization. - * @param {Boolean} [isArray] ignore used for recursive parsing. - * @return {Object} returns the deserialized Javascript Object. - * @api public - */ -BSON.prototype.deserialize = function(data, options) { - return BSON.deserialize(data, options); -} - -/** - * Deserialize stream data as BSON documents. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} data the buffer containing the serialized set of BSON documents. - * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. - * @param {Number} numberOfDocuments number of documents to deserialize. - * @param {Array} documents an array where to store the deserialized documents. - * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. - * @param {Object} [options] additional options used for the deserialization. - * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. - * @api public - */ -BSON.prototype.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { - return BSON.deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options); -} - -/** - * Serialize a Javascript object. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Buffer} returns the Buffer object containing the serialized object. - * @api public - */ -BSON.prototype.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { - return BSON.serialize(object, checkKeys, asBuffer, serializeFunctions); -} - -/** - * Calculate the bson size for a passed in Javascript object. - * - * @param {Object} object the Javascript object to calculate the BSON byte size for. - * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. - * @return {Number} returns the number of bytes the BSON object will take up. - * @api public - */ -BSON.prototype.calculateObjectSize = function(object, serializeFunctions) { - return BSON.calculateObjectSize(object, serializeFunctions); -} - -/** - * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. - * @param {Number} index the index in the buffer where we wish to start serializing into. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Number} returns the new write index in the Buffer. - * @api public - */ -BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, buffer, startIndex, serializeFunctions) { - return BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, startIndex, serializeFunctions); -} - -/** - * @ignore - * @api private - */ -exports.Code = Code; -exports.Symbol = Symbol; -exports.BSON = BSON; -exports.DBRef = DBRef; -exports.Binary = Binary; -exports.ObjectID = ObjectID; -exports.Long = Long; -exports.Timestamp = Timestamp; -exports.Double = Double; -exports.MinKey = MinKey; -exports.MaxKey = MaxKey; -}, - - - -'code': function(module, exports, global, require, undefined){ - /** - * A class representation of the BSON Code type. - * - * @class Represents the BSON Code type. - * @param {String|Function} code a string or function. - * @param {Object} [scope] an optional scope for the function. - * @return {Code} - */ -function Code(code, scope) { - if(!(this instanceof Code)) return new Code(code, scope); - - this._bsontype = 'Code'; - this.code = code; - this.scope = scope == null ? {} : scope; -}; - -/** - * @ignore - * @api private - */ -Code.prototype.toJSON = function() { - return {scope:this.scope, code:this.code}; -} - -exports.Code = Code; -}, - - - -'db_ref': function(module, exports, global, require, undefined){ - /** - * A class representation of the BSON DBRef type. - * - * @class Represents the BSON DBRef type. - * @param {String} namespace the collection name. - * @param {ObjectID} oid the reference ObjectID. - * @param {String} [db] optional db name, if omitted the reference is local to the current db. - * @return {DBRef} - */ -function DBRef(namespace, oid, db) { - if(!(this instanceof DBRef)) return new DBRef(namespace, oid, db); - - this._bsontype = 'DBRef'; - this.namespace = namespace; - this.oid = oid; - this.db = db; -}; - -/** - * @ignore - * @api private - */ -DBRef.prototype.toJSON = function() { - return { - '$ref':this.namespace, - '$id':this.oid, - '$db':this.db == null ? '' : this.db - }; -} - -exports.DBRef = DBRef; -}, - - - -'double': function(module, exports, global, require, undefined){ - /** - * A class representation of the BSON Double type. - * - * @class Represents the BSON Double type. - * @param {Number} value the number we want to represent as a double. - * @return {Double} - */ -function Double(value) { - if(!(this instanceof Double)) return new Double(value); - - this._bsontype = 'Double'; - this.value = value; -} - -/** - * Access the number value. - * - * @return {Number} returns the wrapped double number. - * @api public - */ -Double.prototype.valueOf = function() { - return this.value; -}; - -/** - * @ignore - * @api private - */ -Double.prototype.toJSON = function() { - return this.value; -} - -exports.Double = Double; -}, - - - -'float_parser': function(module, exports, global, require, undefined){ - // Copyright (c) 2008, Fair Oaks Labs, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// -// Modifications to writeIEEE754 to support negative zeroes made by Brian White - -var readIEEE754 = function(buffer, offset, endian, mLen, nBytes) { - var e, m, - bBE = (endian === 'big'), - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - nBits = -7, - i = bBE ? 0 : (nBytes - 1), - d = bBE ? 1 : -1, - s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity); - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -var writeIEEE754 = function(buffer, value, offset, endian, mLen, nBytes) { - var e, m, c, - bBE = (endian === 'big'), - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), - i = bBE ? (nBytes-1) : 0, - d = bBE ? -1 : 1, - s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e+eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); - - buffer[offset + i - d] |= s * 128; -}; - -exports.readIEEE754 = readIEEE754; -exports.writeIEEE754 = writeIEEE754; -}, - - - -'index': function(module, exports, global, require, undefined){ - try { - exports.BSONPure = require('./bson'); - exports.BSONNative = require('../../ext'); -} catch(err) { - // do nothing -} - -[ './binary_parser' - , './binary' - , './code' - , './db_ref' - , './double' - , './max_key' - , './min_key' - , './objectid' - , './symbol' - , './timestamp' - , './long'].forEach(function (path) { - var module = require('./' + path); - for (var i in module) { - exports[i] = module[i]; - } -}); - -// Exports all the classes for the NATIVE JS BSON Parser -exports.native = function() { - var classes = {}; - // Map all the classes - [ './binary_parser' - , './binary' - , './code' - , './db_ref' - , './double' - , './max_key' - , './min_key' - , './objectid' - , './symbol' - , './timestamp' - , './long' - , '../../ext' -].forEach(function (path) { - var module = require('./' + path); - for (var i in module) { - classes[i] = module[i]; - } - }); - // Return classes list - return classes; -} - -// Exports all the classes for the PURE JS BSON Parser -exports.pure = function() { - var classes = {}; - // Map all the classes - [ './binary_parser' - , './binary' - , './code' - , './db_ref' - , './double' - , './max_key' - , './min_key' - , './objectid' - , './symbol' - , './timestamp' - , './long' - , '././bson'].forEach(function (path) { - var module = require('./' + path); - for (var i in module) { - classes[i] = module[i]; - } - }); - // Return classes list - return classes; -} - -}, - - - -'long': function(module, exports, global, require, undefined){ - // Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Copyright 2009 Google Inc. All Rights Reserved - -/** - * Defines a Long class for representing a 64-bit two's-complement - * integer value, which faithfully simulates the behavior of a Java "Long". This - * implementation is derived from LongLib in GWT. - * - * Constructs a 64-bit two's-complement integer, given its low and high 32-bit - * values as *signed* integers. See the from* functions below for more - * convenient ways of constructing Longs. - * - * The internal representation of a Long is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16-bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * - * @class Represents the BSON Long type. - * @param {Number} low the low (signed) 32 bits of the Long. - * @param {Number} high the high (signed) 32 bits of the Long. - */ -function Long(low, high) { - if(!(this instanceof Long)) return new Long(low, high); - - this._bsontype = 'Long'; - /** - * @type {number} - * @api private - */ - this.low_ = low | 0; // force into 32 signed bits. - - /** - * @type {number} - * @api private - */ - this.high_ = high | 0; // force into 32 signed bits. -}; - -/** - * Return the int value. - * - * @return {Number} the value, assuming it is a 32-bit integer. - * @api public - */ -Long.prototype.toInt = function() { - return this.low_; -}; - -/** - * Return the Number value. - * - * @return {Number} the closest floating-point representation to this value. - * @api public - */ -Long.prototype.toNumber = function() { - return this.high_ * Long.TWO_PWR_32_DBL_ + - this.getLowBitsUnsigned(); -}; - -/** - * Return the JSON value. - * - * @return {String} the JSON representation. - * @api public - */ -Long.prototype.toJSON = function() { - return this.toString(); -} - -/** - * Return the String value. - * - * @param {Number} [opt_radix] the radix in which the text should be written. - * @return {String} the textual representation of this value. - * @api public - */ -Long.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (this.isZero()) { - return '0'; - } - - if (this.isNegative()) { - if (this.equals(Long.MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = Long.fromNumber(radix); - var div = this.div(radixLong); - var rem = div.multiply(radixLong).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return '-' + this.negate().toString(radix); - } - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Long.fromNumber(Math.pow(radix, 6)); - - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } -}; - -/** - * Return the high 32-bits value. - * - * @return {Number} the high 32-bits as a signed value. - * @api public - */ -Long.prototype.getHighBits = function() { - return this.high_; -}; - -/** - * Return the low 32-bits value. - * - * @return {Number} the low 32-bits as a signed value. - * @api public - */ -Long.prototype.getLowBits = function() { - return this.low_; -}; - -/** - * Return the low unsigned 32-bits value. - * - * @return {Number} the low 32-bits as an unsigned value. - * @api public - */ -Long.prototype.getLowBitsUnsigned = function() { - return (this.low_ >= 0) ? - this.low_ : Long.TWO_PWR_32_DBL_ + this.low_; -}; - -/** - * Returns the number of bits needed to represent the absolute value of this Long. - * - * @return {Number} Returns the number of bits needed to represent the absolute value of this Long. - * @api public - */ -Long.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equals(Long.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & (1 << bit)) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } -}; - -/** - * Return whether this value is zero. - * - * @return {Boolean} whether this value is zero. - * @api public - */ -Long.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; -}; - -/** - * Return whether this value is negative. - * - * @return {Boolean} whether this value is negative. - * @api public - */ -Long.prototype.isNegative = function() { - return this.high_ < 0; -}; - -/** - * Return whether this value is odd. - * - * @return {Boolean} whether this value is odd. - * @api public - */ -Long.prototype.isOdd = function() { - return (this.low_ & 1) == 1; -}; - -/** - * Return whether this Long equals the other - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long equals the other - * @api public - */ -Long.prototype.equals = function(other) { - return (this.high_ == other.high_) && (this.low_ == other.low_); -}; - -/** - * Return whether this Long does not equal the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long does not equal the other. - * @api public - */ -Long.prototype.notEquals = function(other) { - return (this.high_ != other.high_) || (this.low_ != other.low_); -}; - -/** - * Return whether this Long is less than the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is less than the other. - * @api public - */ -Long.prototype.lessThan = function(other) { - return this.compare(other) < 0; -}; - -/** - * Return whether this Long is less than or equal to the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is less than or equal to the other. - * @api public - */ -Long.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; -}; - -/** - * Return whether this Long is greater than the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is greater than the other. - * @api public - */ -Long.prototype.greaterThan = function(other) { - return this.compare(other) > 0; -}; - -/** - * Return whether this Long is greater than or equal to the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is greater than or equal to the other. - * @api public - */ -Long.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; -}; - -/** - * Compares this Long with the given one. - * - * @param {Long} other Long to compare against. - * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. - * @api public - */ -Long.prototype.compare = function(other) { - if (this.equals(other)) { - return 0; - } - - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - - // at this point, the signs are the same, so subtraction will not overflow - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } -}; - -/** - * The negation of this value. - * - * @return {Long} the negation of this value. - * @api public - */ -Long.prototype.negate = function() { - if (this.equals(Long.MIN_VALUE)) { - return Long.MIN_VALUE; - } else { - return this.not().add(Long.ONE); - } -}; - -/** - * Returns the sum of this and the given Long. - * - * @param {Long} other Long to add to this one. - * @return {Long} the sum of this and the given Long. - * @api public - */ -Long.prototype.add = function(other) { - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns the difference of this and the given Long. - * - * @param {Long} other Long to subtract from this. - * @return {Long} the difference of this and the given Long. - * @api public - */ -Long.prototype.subtract = function(other) { - return this.add(other.negate()); -}; - -/** - * Returns the product of this and the given Long. - * - * @param {Long} other Long to multiply with this. - * @return {Long} the product of this and the other. - * @api public - */ -Long.prototype.multiply = function(other) { - if (this.isZero()) { - return Long.ZERO; - } else if (other.isZero()) { - return Long.ZERO; - } - - if (this.equals(Long.MIN_VALUE)) { - return other.isOdd() ? Long.MIN_VALUE : Long.ZERO; - } else if (other.equals(Long.MIN_VALUE)) { - return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - - // If both Longs are small, use float multiplication - if (this.lessThan(Long.TWO_PWR_24_) && - other.lessThan(Long.TWO_PWR_24_)) { - return Long.fromNumber(this.toNumber() * other.toNumber()); - } - - // Divide each Long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns this Long divided by the given one. - * - * @param {Long} other Long by which to divide. - * @return {Long} this Long divided by the given one. - * @api public - */ -Long.prototype.div = function(other) { - if (other.isZero()) { - throw Error('division by zero'); - } else if (this.isZero()) { - return Long.ZERO; - } - - if (this.equals(Long.MIN_VALUE)) { - if (other.equals(Long.ONE) || - other.equals(Long.NEG_ONE)) { - return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - } else if (other.equals(Long.MIN_VALUE)) { - return Long.ONE; - } else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equals(Long.ZERO)) { - return other.isNegative() ? Long.ONE : Long.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equals(Long.MIN_VALUE)) { - return Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - var res = Long.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - var approxRes = Long.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = Long.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) { - approxRes = Long.ONE; - } - - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; -}; - -/** - * Returns this Long modulo the given one. - * - * @param {Long} other Long by which to mod. - * @return {Long} this Long modulo the given one. - * @api public - */ -Long.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); -}; - -/** - * The bitwise-NOT of this value. - * - * @return {Long} the bitwise-NOT of this value. - * @api public - */ -Long.prototype.not = function() { - return Long.fromBits(~this.low_, ~this.high_); -}; - -/** - * Returns the bitwise-AND of this Long and the given one. - * - * @param {Long} other the Long with which to AND. - * @return {Long} the bitwise-AND of this and the other. - * @api public - */ -Long.prototype.and = function(other) { - return Long.fromBits(this.low_ & other.low_, this.high_ & other.high_); -}; - -/** - * Returns the bitwise-OR of this Long and the given one. - * - * @param {Long} other the Long with which to OR. - * @return {Long} the bitwise-OR of this and the other. - * @api public - */ -Long.prototype.or = function(other) { - return Long.fromBits(this.low_ | other.low_, this.high_ | other.high_); -}; - -/** - * Returns the bitwise-XOR of this Long and the given one. - * - * @param {Long} other the Long with which to XOR. - * @return {Long} the bitwise-XOR of this and the other. - * @api public - */ -Long.prototype.xor = function(other) { - return Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Long} this shifted to the left by the given amount. - * @api public - */ -Long.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return Long.fromBits( - low << numBits, - (high << numBits) | (low >>> (32 - numBits))); - } else { - return Long.fromBits(0, low << (numBits - 32)); - } - } -}; - -/** - * Returns this Long with bits shifted to the right by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Long} this shifted to the right by the given amount. - * @api public - */ -Long.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >> numBits); - } else { - return Long.fromBits( - high >> (numBits - 32), - high >= 0 ? 0 : -1); - } - } -}; - -/** - * Returns this Long with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Long} this shifted to the right by the given amount, with zeros placed into the new leading bits. - * @api public - */ -Long.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >>> numBits); - } else if (numBits == 32) { - return Long.fromBits(high, 0); - } else { - return Long.fromBits(high >>> (numBits - 32), 0); - } - } -}; - -/** - * Returns a Long representing the given (32-bit) integer value. - * - * @param {Number} value the 32-bit integer in question. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = Long.INT_CACHE_[value]; - if (cachedObj) { - return cachedObj; - } - } - - var obj = new Long(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - Long.INT_CACHE_[value] = obj; - } - return obj; -}; - -/** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * - * @param {Number} value the number in question. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { - return Long.ZERO; - } else if (value <= -Long.TWO_PWR_63_DBL_) { - return Long.MIN_VALUE; - } else if (value + 1 >= Long.TWO_PWR_63_DBL_) { - return Long.MAX_VALUE; - } else if (value < 0) { - return Long.fromNumber(-value).negate(); - } else { - return new Long( - (value % Long.TWO_PWR_32_DBL_) | 0, - (value / Long.TWO_PWR_32_DBL_) | 0); - } -}; - -/** - * Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. - * - * @param {Number} lowBits the low 32-bits. - * @param {Number} highBits the high 32-bits. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromBits = function(lowBits, highBits) { - return new Long(lowBits, highBits); -}; - -/** - * Returns a Long representation of the given string, written using the given radix. - * - * @param {String} str the textual representation of the Long. - * @param {Number} opt_radix the radix in which the text is written. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (str.charAt(0) == '-') { - return Long.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Long.fromNumber(Math.pow(radix, 8)); - - var result = Long.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = Long.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(Long.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(Long.fromNumber(value)); - } - } - return result; -}; - -// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the -// from* methods on which they depend. - - -/** - * A cache of the Long representations of small integer values. - * @type {Object} - * @api private - */ -Long.INT_CACHE_ = {}; - -// NOTE: the compiler should inline these constant values below and then remove -// these variables, so there should be no runtime penalty for these. - -/** - * Number used repeated below in calculations. This must appear before the - * first call to any from* function below. - * @type {number} - * @api private - */ -Long.TWO_PWR_16_DBL_ = 1 << 16; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_24_DBL_ = 1 << 24; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_32_DBL_ = Long.TWO_PWR_16_DBL_ * Long.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_31_DBL_ = Long.TWO_PWR_32_DBL_ / 2; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_48_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_64_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_32_DBL_; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_63_DBL_ = Long.TWO_PWR_64_DBL_ / 2; - -/** @type {Long} */ -Long.ZERO = Long.fromInt(0); - -/** @type {Long} */ -Long.ONE = Long.fromInt(1); - -/** @type {Long} */ -Long.NEG_ONE = Long.fromInt(-1); - -/** @type {Long} */ -Long.MAX_VALUE = - Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); - -/** @type {Long} */ -Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0); - -/** - * @type {Long} - * @api private - */ -Long.TWO_PWR_24_ = Long.fromInt(1 << 24); - -/** - * Expose. - */ -exports.Long = Long; -}, - - - -'max_key': function(module, exports, global, require, undefined){ - /** - * A class representation of the BSON MaxKey type. - * - * @class Represents the BSON MaxKey type. - * @return {MaxKey} - */ -function MaxKey() { - if(!(this instanceof MaxKey)) return new MaxKey(); - - this._bsontype = 'MaxKey'; -} - -exports.MaxKey = MaxKey; -}, - - - -'min_key': function(module, exports, global, require, undefined){ - /** - * A class representation of the BSON MinKey type. - * - * @class Represents the BSON MinKey type. - * @return {MinKey} - */ -function MinKey() { - if(!(this instanceof MinKey)) return new MinKey(); - - this._bsontype = 'MinKey'; -} - -exports.MinKey = MinKey; -}, - - - -'objectid': function(module, exports, global, require, undefined){ - /** - * Module dependencies. - */ -var BinaryParser = require('./binary_parser').BinaryParser; - -/** - * Machine id. - * - * Create a random 3-byte value (i.e. unique for this - * process). Other drivers use a md5 of the machine id here, but - * that would mean an asyc call to gethostname, so we don't bother. - */ -var MACHINE_ID = parseInt(Math.random() * 0xFFFFFF, 10); - -// Regular expression that checks for hex value -var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$"); - -/** -* Create a new ObjectID instance -* -* @class Represents the BSON ObjectID type -* @param {String|Number} id Can be a 24 byte hex string, 12 byte binary string or a Number. -* @return {Object} instance of ObjectID. -*/ -var ObjectID = function ObjectID(id, _hex) { - if(!(this instanceof ObjectID)) return new ObjectID(id, _hex); - - this._bsontype = 'ObjectID'; - var __id = null; - - // Throw an error if it's not a valid setup - if(id != null && 'number' != typeof id && (id.length != 12 && id.length != 24)) - throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); - - // Generate id based on the input - if(id == null || typeof id == 'number') { - // convert to 12 byte binary string - this.id = this.generate(id); - } else if(id != null && id.length === 12) { - // assume 12 byte string - this.id = id; - } else if(checkForHexRegExp.test(id)) { - return ObjectID.createFromHexString(id); - } else if(!checkForHexRegExp.test(id)) { - throw new Error("Value passed in is not a valid 24 character hex string"); - } - - if(ObjectID.cacheHexString) this.__id = this.toHexString(); -}; - -// Allow usage of ObjectId aswell as ObjectID -var ObjectId = ObjectID; - -/** -* Return the ObjectID id as a 24 byte hex string representation -* -* @return {String} return the 24 byte hex string representation. -* @api public -*/ -ObjectID.prototype.toHexString = function() { - if(ObjectID.cacheHexString && this.__id) return this.__id; - - var hexString = '' - , number - , value; - - for (var index = 0, len = this.id.length; index < len; index++) { - value = BinaryParser.toByte(this.id[index]); - number = value <= 15 - ? '0' + value.toString(16) - : value.toString(16); - hexString = hexString + number; - } - - if(ObjectID.cacheHexString) this.__id = hexString; - return hexString; -}; - -/** -* Update the ObjectID index used in generating new ObjectID's on the driver -* -* @return {Number} returns next index value. -* @api private -*/ -ObjectID.prototype.get_inc = function() { - return ObjectID.index = (ObjectID.index + 1) % 0xFFFFFF; -}; - -/** -* Update the ObjectID index used in generating new ObjectID's on the driver -* -* @return {Number} returns next index value. -* @api private -*/ -ObjectID.prototype.getInc = function() { - return this.get_inc(); -}; - -/** -* Generate a 12 byte id string used in ObjectID's -* -* @param {Number} [time] optional parameter allowing to pass in a second based timestamp. -* @return {String} return the 12 byte id binary string. -* @api private -*/ -ObjectID.prototype.generate = function(time) { - if ('number' == typeof time) { - var time4Bytes = BinaryParser.encodeInt(time, 32, true, true); - /* for time-based ObjectID the bytes following the time will be zeroed */ - var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); - var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); - var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); - } else { - var unixTime = parseInt(Date.now()/1000,10); - var time4Bytes = BinaryParser.encodeInt(unixTime, 32, true, true); - var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); - var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); - var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); - } - - return time4Bytes + machine3Bytes + pid2Bytes + index3Bytes; -}; - -/** -* Converts the id into a 24 byte hex string for printing -* -* @return {String} return the 24 byte hex string representation. -* @api private -*/ -ObjectID.prototype.toString = function() { - return this.toHexString(); -}; - -/** -* Converts to a string representation of this Id. -* -* @return {String} return the 24 byte hex string representation. -* @api private -*/ -ObjectID.prototype.inspect = ObjectID.prototype.toString; - -/** -* Converts to its JSON representation. -* -* @return {String} return the 24 byte hex string representation. -* @api private -*/ -ObjectID.prototype.toJSON = function() { - return this.toHexString(); -}; - -/** -* Compares the equality of this ObjectID with `otherID`. -* -* @param {Object} otherID ObjectID instance to compare against. -* @return {Bool} the result of comparing two ObjectID's -* @api public -*/ -ObjectID.prototype.equals = function equals (otherID) { - var id = (otherID instanceof ObjectID || otherID.toHexString) - ? otherID.id - : ObjectID.createFromHexString(otherID).id; - - return this.id === id; -} - -/** -* Returns the generation time in seconds that this ID was generated. -* -* @return {Number} return number of seconds in the timestamp part of the 12 byte id. -* @api public -*/ -ObjectID.prototype.getTimestamp = function() { - var timestamp = new Date(); - timestamp.setTime(Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)) * 1000); - return timestamp; -} - -/** -* @ignore -* @api private -*/ -ObjectID.index = 0; - -ObjectID.createPk = function createPk () { - return new ObjectID(); -}; - -/** -* Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID. -* -* @param {Number} time an integer number representing a number of seconds. -* @return {ObjectID} return the created ObjectID -* @api public -*/ -ObjectID.createFromTime = function createFromTime (time) { - var id = BinaryParser.encodeInt(time, 32, true, true) + - BinaryParser.encodeInt(0, 64, true, true); - return new ObjectID(id); -}; - -/** -* Creates an ObjectID from a hex string representation of an ObjectID. -* -* @param {String} hexString create a ObjectID from a passed in 24 byte hexstring. -* @return {ObjectID} return the created ObjectID -* @api public -*/ -ObjectID.createFromHexString = function createFromHexString (hexString) { - // Throw an error if it's not a valid setup - if(typeof hexString === 'undefined' || hexString != null && hexString.length != 24) - throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); - - var len = hexString.length; - - if(len > 12*2) { - throw new Error('Id cannot be longer than 12 bytes'); - } - - var result = '' - , string - , number; - - for (var index = 0; index < len; index += 2) { - string = hexString.substr(index, 2); - number = parseInt(string, 16); - result += BinaryParser.fromByte(number); - } - - return new ObjectID(result, hexString); -}; - -/** -* @ignore -*/ -Object.defineProperty(ObjectID.prototype, "generationTime", { - enumerable: true - , get: function () { - return Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)); - } - , set: function (value) { - var value = BinaryParser.encodeInt(value, 32, true, true); - this.id = value + this.id.substr(4); - // delete this.__id; - this.toHexString(); - } -}); - -/** - * Expose. - */ -exports.ObjectID = ObjectID; -exports.ObjectId = ObjectID; -}, - - - -'symbol': function(module, exports, global, require, undefined){ - /** - * A class representation of the BSON Symbol type. - * - * @class Represents the BSON Symbol type. - * @param {String} value the string representing the symbol. - * @return {Symbol} - */ -function Symbol(value) { - if(!(this instanceof Symbol)) return new Symbol(value); - this._bsontype = 'Symbol'; - this.value = value; -} - -/** - * Access the wrapped string value. - * - * @return {String} returns the wrapped string. - * @api public - */ -Symbol.prototype.valueOf = function() { - return this.value; -}; - -/** - * @ignore - * @api private - */ -Symbol.prototype.toString = function() { - return this.value; -} - -/** - * @ignore - * @api private - */ -Symbol.prototype.inspect = function() { - return this.value; -} - -/** - * @ignore - * @api private - */ -Symbol.prototype.toJSON = function() { - return this.value; -} - -exports.Symbol = Symbol; -}, - - - -'timestamp': function(module, exports, global, require, undefined){ - // Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Copyright 2009 Google Inc. All Rights Reserved - -/** - * Defines a Timestamp class for representing a 64-bit two's-complement - * integer value, which faithfully simulates the behavior of a Java "Timestamp". This - * implementation is derived from TimestampLib in GWT. - * - * Constructs a 64-bit two's-complement integer, given its low and high 32-bit - * values as *signed* integers. See the from* functions below for more - * convenient ways of constructing Timestamps. - * - * The internal representation of a Timestamp is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16-bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * - * @class Represents the BSON Timestamp type. - * @param {Number} low the low (signed) 32 bits of the Timestamp. - * @param {Number} high the high (signed) 32 bits of the Timestamp. - */ -function Timestamp(low, high) { - if(!(this instanceof Timestamp)) return new Timestamp(low, high); - this._bsontype = 'Timestamp'; - /** - * @type {number} - * @api private - */ - this.low_ = low | 0; // force into 32 signed bits. - - /** - * @type {number} - * @api private - */ - this.high_ = high | 0; // force into 32 signed bits. -}; - -/** - * Return the int value. - * - * @return {Number} the value, assuming it is a 32-bit integer. - * @api public - */ -Timestamp.prototype.toInt = function() { - return this.low_; -}; - -/** - * Return the Number value. - * - * @return {Number} the closest floating-point representation to this value. - * @api public - */ -Timestamp.prototype.toNumber = function() { - return this.high_ * Timestamp.TWO_PWR_32_DBL_ + - this.getLowBitsUnsigned(); -}; - -/** - * Return the JSON value. - * - * @return {String} the JSON representation. - * @api public - */ -Timestamp.prototype.toJSON = function() { - return this.toString(); -} - -/** - * Return the String value. - * - * @param {Number} [opt_radix] the radix in which the text should be written. - * @return {String} the textual representation of this value. - * @api public - */ -Timestamp.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (this.isZero()) { - return '0'; - } - - if (this.isNegative()) { - if (this.equals(Timestamp.MIN_VALUE)) { - // We need to change the Timestamp value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixTimestamp = Timestamp.fromNumber(radix); - var div = this.div(radixTimestamp); - var rem = div.multiply(radixTimestamp).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return '-' + this.negate().toString(radix); - } - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Timestamp.fromNumber(Math.pow(radix, 6)); - - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } -}; - -/** - * Return the high 32-bits value. - * - * @return {Number} the high 32-bits as a signed value. - * @api public - */ -Timestamp.prototype.getHighBits = function() { - return this.high_; -}; - -/** - * Return the low 32-bits value. - * - * @return {Number} the low 32-bits as a signed value. - * @api public - */ -Timestamp.prototype.getLowBits = function() { - return this.low_; -}; - -/** - * Return the low unsigned 32-bits value. - * - * @return {Number} the low 32-bits as an unsigned value. - * @api public - */ -Timestamp.prototype.getLowBitsUnsigned = function() { - return (this.low_ >= 0) ? - this.low_ : Timestamp.TWO_PWR_32_DBL_ + this.low_; -}; - -/** - * Returns the number of bits needed to represent the absolute value of this Timestamp. - * - * @return {Number} Returns the number of bits needed to represent the absolute value of this Timestamp. - * @api public - */ -Timestamp.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equals(Timestamp.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & (1 << bit)) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } -}; - -/** - * Return whether this value is zero. - * - * @return {Boolean} whether this value is zero. - * @api public - */ -Timestamp.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; -}; - -/** - * Return whether this value is negative. - * - * @return {Boolean} whether this value is negative. - * @api public - */ -Timestamp.prototype.isNegative = function() { - return this.high_ < 0; -}; - -/** - * Return whether this value is odd. - * - * @return {Boolean} whether this value is odd. - * @api public - */ -Timestamp.prototype.isOdd = function() { - return (this.low_ & 1) == 1; -}; - -/** - * Return whether this Timestamp equals the other - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp equals the other - * @api public - */ -Timestamp.prototype.equals = function(other) { - return (this.high_ == other.high_) && (this.low_ == other.low_); -}; - -/** - * Return whether this Timestamp does not equal the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp does not equal the other. - * @api public - */ -Timestamp.prototype.notEquals = function(other) { - return (this.high_ != other.high_) || (this.low_ != other.low_); -}; - -/** - * Return whether this Timestamp is less than the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is less than the other. - * @api public - */ -Timestamp.prototype.lessThan = function(other) { - return this.compare(other) < 0; -}; - -/** - * Return whether this Timestamp is less than or equal to the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is less than or equal to the other. - * @api public - */ -Timestamp.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; -}; - -/** - * Return whether this Timestamp is greater than the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is greater than the other. - * @api public - */ -Timestamp.prototype.greaterThan = function(other) { - return this.compare(other) > 0; -}; - -/** - * Return whether this Timestamp is greater than or equal to the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is greater than or equal to the other. - * @api public - */ -Timestamp.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; -}; - -/** - * Compares this Timestamp with the given one. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. - * @api public - */ -Timestamp.prototype.compare = function(other) { - if (this.equals(other)) { - return 0; - } - - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - - // at this point, the signs are the same, so subtraction will not overflow - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } -}; - -/** - * The negation of this value. - * - * @return {Timestamp} the negation of this value. - * @api public - */ -Timestamp.prototype.negate = function() { - if (this.equals(Timestamp.MIN_VALUE)) { - return Timestamp.MIN_VALUE; - } else { - return this.not().add(Timestamp.ONE); - } -}; - -/** - * Returns the sum of this and the given Timestamp. - * - * @param {Timestamp} other Timestamp to add to this one. - * @return {Timestamp} the sum of this and the given Timestamp. - * @api public - */ -Timestamp.prototype.add = function(other) { - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns the difference of this and the given Timestamp. - * - * @param {Timestamp} other Timestamp to subtract from this. - * @return {Timestamp} the difference of this and the given Timestamp. - * @api public - */ -Timestamp.prototype.subtract = function(other) { - return this.add(other.negate()); -}; - -/** - * Returns the product of this and the given Timestamp. - * - * @param {Timestamp} other Timestamp to multiply with this. - * @return {Timestamp} the product of this and the other. - * @api public - */ -Timestamp.prototype.multiply = function(other) { - if (this.isZero()) { - return Timestamp.ZERO; - } else if (other.isZero()) { - return Timestamp.ZERO; - } - - if (this.equals(Timestamp.MIN_VALUE)) { - return other.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; - } else if (other.equals(Timestamp.MIN_VALUE)) { - return this.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - - // If both Timestamps are small, use float multiplication - if (this.lessThan(Timestamp.TWO_PWR_24_) && - other.lessThan(Timestamp.TWO_PWR_24_)) { - return Timestamp.fromNumber(this.toNumber() * other.toNumber()); - } - - // Divide each Timestamp into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns this Timestamp divided by the given one. - * - * @param {Timestamp} other Timestamp by which to divide. - * @return {Timestamp} this Timestamp divided by the given one. - * @api public - */ -Timestamp.prototype.div = function(other) { - if (other.isZero()) { - throw Error('division by zero'); - } else if (this.isZero()) { - return Timestamp.ZERO; - } - - if (this.equals(Timestamp.MIN_VALUE)) { - if (other.equals(Timestamp.ONE) || - other.equals(Timestamp.NEG_ONE)) { - return Timestamp.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - } else if (other.equals(Timestamp.MIN_VALUE)) { - return Timestamp.ONE; - } else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equals(Timestamp.ZERO)) { - return other.isNegative() ? Timestamp.ONE : Timestamp.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equals(Timestamp.MIN_VALUE)) { - return Timestamp.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - var res = Timestamp.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - var approxRes = Timestamp.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = Timestamp.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) { - approxRes = Timestamp.ONE; - } - - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; -}; - -/** - * Returns this Timestamp modulo the given one. - * - * @param {Timestamp} other Timestamp by which to mod. - * @return {Timestamp} this Timestamp modulo the given one. - * @api public - */ -Timestamp.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); -}; - -/** - * The bitwise-NOT of this value. - * - * @return {Timestamp} the bitwise-NOT of this value. - * @api public - */ -Timestamp.prototype.not = function() { - return Timestamp.fromBits(~this.low_, ~this.high_); -}; - -/** - * Returns the bitwise-AND of this Timestamp and the given one. - * - * @param {Timestamp} other the Timestamp with which to AND. - * @return {Timestamp} the bitwise-AND of this and the other. - * @api public - */ -Timestamp.prototype.and = function(other) { - return Timestamp.fromBits(this.low_ & other.low_, this.high_ & other.high_); -}; - -/** - * Returns the bitwise-OR of this Timestamp and the given one. - * - * @param {Timestamp} other the Timestamp with which to OR. - * @return {Timestamp} the bitwise-OR of this and the other. - * @api public - */ -Timestamp.prototype.or = function(other) { - return Timestamp.fromBits(this.low_ | other.low_, this.high_ | other.high_); -}; - -/** - * Returns the bitwise-XOR of this Timestamp and the given one. - * - * @param {Timestamp} other the Timestamp with which to XOR. - * @return {Timestamp} the bitwise-XOR of this and the other. - * @api public - */ -Timestamp.prototype.xor = function(other) { - return Timestamp.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); -}; - -/** - * Returns this Timestamp with bits shifted to the left by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Timestamp} this shifted to the left by the given amount. - * @api public - */ -Timestamp.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return Timestamp.fromBits( - low << numBits, - (high << numBits) | (low >>> (32 - numBits))); - } else { - return Timestamp.fromBits(0, low << (numBits - 32)); - } - } -}; - -/** - * Returns this Timestamp with bits shifted to the right by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Timestamp} this shifted to the right by the given amount. - * @api public - */ -Timestamp.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Timestamp.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >> numBits); - } else { - return Timestamp.fromBits( - high >> (numBits - 32), - high >= 0 ? 0 : -1); - } - } -}; - -/** - * Returns this Timestamp with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Timestamp} this shifted to the right by the given amount, with zeros placed into the new leading bits. - * @api public - */ -Timestamp.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Timestamp.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >>> numBits); - } else if (numBits == 32) { - return Timestamp.fromBits(high, 0); - } else { - return Timestamp.fromBits(high >>> (numBits - 32), 0); - } - } -}; - -/** - * Returns a Timestamp representing the given (32-bit) integer value. - * - * @param {Number} value the 32-bit integer in question. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = Timestamp.INT_CACHE_[value]; - if (cachedObj) { - return cachedObj; - } - } - - var obj = new Timestamp(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - Timestamp.INT_CACHE_[value] = obj; - } - return obj; -}; - -/** - * Returns a Timestamp representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * - * @param {Number} value the number in question. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { - return Timestamp.ZERO; - } else if (value <= -Timestamp.TWO_PWR_63_DBL_) { - return Timestamp.MIN_VALUE; - } else if (value + 1 >= Timestamp.TWO_PWR_63_DBL_) { - return Timestamp.MAX_VALUE; - } else if (value < 0) { - return Timestamp.fromNumber(-value).negate(); - } else { - return new Timestamp( - (value % Timestamp.TWO_PWR_32_DBL_) | 0, - (value / Timestamp.TWO_PWR_32_DBL_) | 0); - } -}; - -/** - * Returns a Timestamp representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. - * - * @param {Number} lowBits the low 32-bits. - * @param {Number} highBits the high 32-bits. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromBits = function(lowBits, highBits) { - return new Timestamp(lowBits, highBits); -}; - -/** - * Returns a Timestamp representation of the given string, written using the given radix. - * - * @param {String} str the textual representation of the Timestamp. - * @param {Number} opt_radix the radix in which the text is written. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (str.charAt(0) == '-') { - return Timestamp.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Timestamp.fromNumber(Math.pow(radix, 8)); - - var result = Timestamp.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = Timestamp.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(Timestamp.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(Timestamp.fromNumber(value)); - } - } - return result; -}; - -// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the -// from* methods on which they depend. - - -/** - * A cache of the Timestamp representations of small integer values. - * @type {Object} - * @api private - */ -Timestamp.INT_CACHE_ = {}; - -// NOTE: the compiler should inline these constant values below and then remove -// these variables, so there should be no runtime penalty for these. - -/** - * Number used repeated below in calculations. This must appear before the - * first call to any from* function below. - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_16_DBL_ = 1 << 16; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_24_DBL_ = 1 << 24; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_32_DBL_ = Timestamp.TWO_PWR_16_DBL_ * Timestamp.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_31_DBL_ = Timestamp.TWO_PWR_32_DBL_ / 2; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_48_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_64_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_32_DBL_; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_63_DBL_ = Timestamp.TWO_PWR_64_DBL_ / 2; - -/** @type {Timestamp} */ -Timestamp.ZERO = Timestamp.fromInt(0); - -/** @type {Timestamp} */ -Timestamp.ONE = Timestamp.fromInt(1); - -/** @type {Timestamp} */ -Timestamp.NEG_ONE = Timestamp.fromInt(-1); - -/** @type {Timestamp} */ -Timestamp.MAX_VALUE = - Timestamp.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); - -/** @type {Timestamp} */ -Timestamp.MIN_VALUE = Timestamp.fromBits(0, 0x80000000 | 0); - -/** - * @type {Timestamp} - * @api private - */ -Timestamp.TWO_PWR_24_ = Timestamp.fromInt(1 << 24); - -/** - * Expose. - */ -exports.Timestamp = Timestamp; -}, - - }); - - -if(typeof module != 'undefined' && module.exports ){ - module.exports = bson; - - if( !module.parent ){ - bson(); - } -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json deleted file mode 100644 index 3ebb587..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/browser_build/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ "name" : "bson" -, "description" : "A bson parser for node.js and the browser" -, "main": "../lib/bson/bson" -, "directories" : { "lib" : "../lib/bson" } -, "engines" : { "node" : ">=0.6.0" } -, "licenses" : [ { "type" : "Apache License, Version 2.0" - , "url" : "http://www.apache.org/licenses/LICENSE-2.0" } ] -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js deleted file mode 100644 index bb80238..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/build_browser.js +++ /dev/null @@ -1,7 +0,0 @@ -require('one'); - -one('./package.json') - .tie('bson', BSON) - // .exclude('buffer') - .tie('buffer', {}) - .save('./browser_build/bson.js') \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log deleted file mode 100644 index 92b4b8b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/builderror.log +++ /dev/null @@ -1,11 +0,0 @@ -gyp ERR! configure error -gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable. -gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:113:14) -gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:81:11 -gyp ERR! stack at Object.oncomplete (fs.js:107:15) -gyp ERR! System Windows_NT 6.1.7600 -gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild" -gyp ERR! cwd D:\helloexpress\node_modules\mongoose\node_modules\mongodb\node_modules\bson -gyp ERR! node -v v0.10.9 -gyp ERR! node-gyp -v v0.9.6 -gyp ERR! not ok diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile deleted file mode 100644 index 435999e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -NODE = node -name = all -JOBS = 1 - -all: - rm -rf build .lock-wscript bson.node - node-waf configure build - cp -R ./build/Release/bson.node . || true - -all_debug: - rm -rf build .lock-wscript bson.node - node-waf --debug configure build - cp -R ./build/Release/bson.node . || true - -clang: - rm -rf build .lock-wscript bson.node - CXX=clang node-waf configure build - cp -R ./build/Release/bson.node . || true - -clang_debug: - rm -rf build .lock-wscript bson.node - CXX=clang node-waf --debug configure build - cp -R ./build/Release/bson.node . || true - -clean: - rm -rf build .lock-wscript bson.node - -.PHONY: all \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc deleted file mode 100644 index 8a2ec8b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.cc +++ /dev/null @@ -1,1006 +0,0 @@ -//=========================================================================== - -#include -#include -#include -#include -#include - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-parameter" -#endif - -#include - -// this and the above block must be around the v8.h header otherwise -// v8 is not happy -#ifdef __clang__ -#pragma clang diagnostic pop -#endif - -#include -#include -#include - -#include -#include -#include -#include - -#ifdef __sun - #include -#endif - -#include "bson.h" - -using namespace v8; -using namespace node; - -//=========================================================================== - -void DataStream::WriteObjectId(const Handle& object, const Handle& key) -{ - uint16_t buffer[12]; - object->Get(key)->ToString()->Write(buffer, 0, 12); - for(uint32_t i = 0; i < 12; ++i) - { - *p++ = (char) buffer[i]; - } -} - -void ThrowAllocatedStringException(size_t allocationSize, const char* format, ...) -{ - va_list args; - va_start(args, format); - char* string = (char*) malloc(allocationSize); - vsprintf(string, format, args); - va_end(args); - - throw string; -} - -void DataStream::CheckKey(const Local& keyName) -{ - size_t keyLength = keyName->Utf8Length(); - if(keyLength == 0) return; - - char* keyStringBuffer = (char*) alloca(keyLength+1); - keyName->WriteUtf8(keyStringBuffer); - - if(keyStringBuffer[0] == '$') - { - ThrowAllocatedStringException(64+keyLength, "key %s must not start with '$'", keyStringBuffer); - } - - if(strchr(keyStringBuffer, '.') != NULL) - { - ThrowAllocatedStringException(64+keyLength, "key %s must not contain '.'", keyStringBuffer); - } -} - -template void BSONSerializer::SerializeDocument(const Handle& value) -{ - void* documentSize = this->BeginWriteSize(); - Local object = bson->GetSerializeObject(value); - - // Get the object property names - #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 6 - Local propertyNames = object->GetPropertyNames(); - #else - Local propertyNames = object->GetOwnPropertyNames(); - #endif - - // Length of the property - int propertyLength = propertyNames->Length(); - for(int i = 0; i < propertyLength; ++i) - { - const Local& propertyName = propertyNames->Get(i)->ToString(); - if(checkKeys) this->CheckKey(propertyName); - - const Local& propertyValue = object->Get(propertyName); - - if(serializeFunctions || !propertyValue->IsFunction()) - { - void* typeLocation = this->BeginWriteType(); - this->WriteString(propertyName); - SerializeValue(typeLocation, propertyValue); - } - } - - this->WriteByte(0); - this->CommitSize(documentSize); -} - -template void BSONSerializer::SerializeArray(const Handle& value) -{ - void* documentSize = this->BeginWriteSize(); - - Local array = Local::Cast(value->ToObject()); - uint32_t arrayLength = array->Length(); - - for(uint32_t i = 0; i < arrayLength; ++i) - { - void* typeLocation = this->BeginWriteType(); - this->WriteUInt32String(i); - SerializeValue(typeLocation, array->Get(i)); - } - - this->WriteByte(0); - this->CommitSize(documentSize); -} - -// This is templated so that we can use this function to both count the number of bytes, and to serialize those bytes. -// The template approach eliminates almost all of the inspection of values unless they're required (eg. string lengths) -// and ensures that there is always consistency between bytes counted and bytes written by design. -template void BSONSerializer::SerializeValue(void* typeLocation, const Handle& value) -{ - if(value->IsNumber()) - { - double doubleValue = value->NumberValue(); - int intValue = (int) doubleValue; - if(intValue == doubleValue) - { - this->CommitType(typeLocation, BSON_TYPE_INT); - this->WriteInt32(intValue); - } - else - { - this->CommitType(typeLocation, BSON_TYPE_NUMBER); - this->WriteDouble(doubleValue); - } - } - else if(value->IsString()) - { - this->CommitType(typeLocation, BSON_TYPE_STRING); - this->WriteLengthPrefixedString(value->ToString()); - } - else if(value->IsBoolean()) - { - this->CommitType(typeLocation, BSON_TYPE_BOOLEAN); - this->WriteBool(value); - } - else if(value->IsArray()) - { - this->CommitType(typeLocation, BSON_TYPE_ARRAY); - SerializeArray(value); - } - else if(value->IsDate()) - { - this->CommitType(typeLocation, BSON_TYPE_DATE); - this->WriteInt64(value); - } - else if(value->IsRegExp()) - { - this->CommitType(typeLocation, BSON_TYPE_REGEXP); - const Handle& regExp = Handle::Cast(value); - - this->WriteString(regExp->GetSource()); - - int flags = regExp->GetFlags(); - if(flags & RegExp::kGlobal) this->WriteByte('s'); - if(flags & RegExp::kIgnoreCase) this->WriteByte('i'); - if(flags & RegExp::kMultiline) this->WriteByte('m'); - this->WriteByte(0); - } - else if(value->IsFunction()) - { - this->CommitType(typeLocation, BSON_TYPE_CODE); - this->WriteLengthPrefixedString(value->ToString()); - } - else if(value->IsObject()) - { - const Local& object = value->ToObject(); - if(object->Has(bson->_bsontypeString)) - { - const Local& constructorString = object->GetConstructorName(); - if(bson->longString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_LONG); - this->WriteInt32(object, bson->_longLowString); - this->WriteInt32(object, bson->_longHighString); - } - else if(bson->timestampString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_TIMESTAMP); - this->WriteInt32(object, bson->_longLowString); - this->WriteInt32(object, bson->_longHighString); - } - else if(bson->objectIDString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_OID); - this->WriteObjectId(object, bson->_objectIDidString); - } - else if(bson->binaryString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_BINARY); - - uint32_t length = object->Get(bson->_binaryPositionString)->Uint32Value(); - Local bufferObj = object->Get(bson->_binaryBufferString)->ToObject(); - - this->WriteInt32(length); - this->WriteByte(object, bson->_binarySubTypeString); // write subtype - // If type 0x02 write the array length aswell - if(object->Get(bson->_binarySubTypeString)->Int32Value() == 0x02) { - this->WriteInt32(length); - } - // Write the actual data - this->WriteData(Buffer::Data(bufferObj), length); - } - else if(bson->doubleString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_NUMBER); - this->WriteDouble(object, bson->_doubleValueString); - } - else if(bson->symbolString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_SYMBOL); - this->WriteLengthPrefixedString(object->Get(bson->_symbolValueString)->ToString()); - } - else if(bson->codeString->StrictEquals(constructorString)) - { - const Local& function = object->Get(bson->_codeCodeString)->ToString(); - const Local& scope = object->Get(bson->_codeScopeString)->ToObject(); - - // For Node < 0.6.X use the GetPropertyNames - #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 6 - uint32_t propertyNameLength = scope->GetPropertyNames()->Length(); - #else - uint32_t propertyNameLength = scope->GetOwnPropertyNames()->Length(); - #endif - - if(propertyNameLength > 0) - { - this->CommitType(typeLocation, BSON_TYPE_CODE_W_SCOPE); - void* codeWidthScopeSize = this->BeginWriteSize(); - this->WriteLengthPrefixedString(function->ToString()); - SerializeDocument(scope); - this->CommitSize(codeWidthScopeSize); - } - else - { - this->CommitType(typeLocation, BSON_TYPE_CODE); - this->WriteLengthPrefixedString(function->ToString()); - } - } - else if(bson->dbrefString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_OBJECT); - - void* dbRefSize = this->BeginWriteSize(); - - void* refType = this->BeginWriteType(); - this->WriteData("$ref", 5); - SerializeValue(refType, object->Get(bson->_dbRefNamespaceString)); - - void* idType = this->BeginWriteType(); - this->WriteData("$id", 4); - SerializeValue(idType, object->Get(bson->_dbRefOidString)); - - const Local& refDbValue = object->Get(bson->_dbRefDbString); - if(!refDbValue->IsUndefined()) - { - void* dbType = this->BeginWriteType(); - this->WriteData("$db", 4); - SerializeValue(dbType, refDbValue); - } - - this->WriteByte(0); - this->CommitSize(dbRefSize); - } - else if(bson->minKeyString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_MIN_KEY); - } - else if(bson->maxKeyString->StrictEquals(constructorString)) - { - this->CommitType(typeLocation, BSON_TYPE_MAX_KEY); - } - } - else if(Buffer::HasInstance(value)) - { - this->CommitType(typeLocation, BSON_TYPE_BINARY); - - #if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 - Buffer *buffer = ObjectWrap::Unwrap(value->ToObject()); - uint32_t length = object->length(); - #else - uint32_t length = Buffer::Length(value->ToObject()); - #endif - - this->WriteInt32(length); - this->WriteByte(0); - this->WriteData(Buffer::Data(value->ToObject()), length); - } - else - { - this->CommitType(typeLocation, BSON_TYPE_OBJECT); - SerializeDocument(value); - } - } - else if(value->IsNull() || value->IsUndefined()) - { - this->CommitType(typeLocation, BSON_TYPE_NULL); - } -} - -// Data points to start of element list, length is length of entire document including '\0' but excluding initial size -BSONDeserializer::BSONDeserializer(BSON* aBson, char* data, size_t length) -: bson(aBson), - pStart(data), - p(data), - pEnd(data + length - 1) -{ - if(*pEnd != '\0') ThrowAllocatedStringException(64, "Missing end of document marker '\\0'"); -} - -BSONDeserializer::BSONDeserializer(BSONDeserializer& parentSerializer, size_t length) -: bson(parentSerializer.bson), - pStart(parentSerializer.p), - p(parentSerializer.p), - pEnd(parentSerializer.p + length - 1) -{ - parentSerializer.p += length; - if(pEnd > parentSerializer.pEnd) ThrowAllocatedStringException(64, "Child document exceeds parent's bounds"); - if(*pEnd != '\0') ThrowAllocatedStringException(64, "Missing end of document marker '\\0'"); -} - -Local BSONDeserializer::ReadCString() -{ - char* start = p; - while(*p++) { } - return String::New(start, (int32_t) (p-start-1) ); -} - -int32_t BSONDeserializer::ReadRegexOptions() -{ - int32_t options = 0; - for(;;) - { - switch(*p++) - { - case '\0': return options; - case 's': options |= RegExp::kGlobal; break; - case 'i': options |= RegExp::kIgnoreCase; break; - case 'm': options |= RegExp::kMultiline; break; - } - } -} - -uint32_t BSONDeserializer::ReadIntegerString() -{ - uint32_t value = 0; - while(*p) - { - if(*p < '0' || *p > '9') ThrowAllocatedStringException(64, "Invalid key for array"); - value = value * 10 + *p++ - '0'; - } - ++p; - return value; -} - -Local BSONDeserializer::ReadString() -{ - uint32_t length = ReadUInt32(); - char* start = p; - p += length; - return String::New(start, length-1); -} - -Local BSONDeserializer::ReadObjectId() -{ - uint16_t objectId[12]; - for(size_t i = 0; i < 12; ++i) - { - objectId[i] = *reinterpret_cast(p++); - } - return String::New(objectId, 12); -} - -Handle BSONDeserializer::DeserializeDocument() -{ - uint32_t length = ReadUInt32(); - if(length < 5) ThrowAllocatedStringException(64, "Bad BSON: Document is less than 5 bytes"); - - BSONDeserializer documentDeserializer(*this, length-4); - return documentDeserializer.DeserializeDocumentInternal(); -} - -Handle BSONDeserializer::DeserializeDocumentInternal() -{ - Local returnObject = Object::New(); - - while(HasMoreData()) - { - BsonType type = (BsonType) ReadByte(); - const Local& name = ReadCString(); - const Handle& value = DeserializeValue(type); - returnObject->ForceSet(name, value); - } - if(p != pEnd) ThrowAllocatedStringException(64, "Bad BSON Document: Serialize consumed unexpected number of bytes"); - - // From JavaScript: - // if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']); - if(returnObject->Has(bson->_dbRefIdRefString)) - { - Local argv[] = { returnObject->Get(bson->_dbRefRefString), returnObject->Get(bson->_dbRefIdRefString), returnObject->Get(bson->_dbRefDbRefString) }; - return bson->dbrefConstructor->NewInstance(3, argv); - } - else - { - return returnObject; - } -} - -Handle BSONDeserializer::DeserializeArray() -{ - uint32_t length = ReadUInt32(); - if(length < 5) ThrowAllocatedStringException(64, "Bad BSON: Array Document is less than 5 bytes"); - - BSONDeserializer documentDeserializer(*this, length-4); - return documentDeserializer.DeserializeArrayInternal(); -} - -Handle BSONDeserializer::DeserializeArrayInternal() -{ - Local returnArray = Array::New(); - - while(HasMoreData()) - { - BsonType type = (BsonType) ReadByte(); - uint32_t index = ReadIntegerString(); - const Handle& value = DeserializeValue(type); - returnArray->Set(index, value); - } - if(p != pEnd) ThrowAllocatedStringException(64, "Bad BSON Array: Serialize consumed unexpected number of bytes"); - - return returnArray; -} - -Handle BSONDeserializer::DeserializeValue(BsonType type) -{ - switch(type) - { - case BSON_TYPE_STRING: - return ReadString(); - - case BSON_TYPE_INT: - return Integer::New(ReadInt32()); - - case BSON_TYPE_NUMBER: - return Number::New(ReadDouble()); - - case BSON_TYPE_NULL: - return Null(); - - case BSON_TYPE_UNDEFINED: - return Undefined(); - - case BSON_TYPE_TIMESTAMP: - { - int32_t lowBits = ReadInt32(); - int32_t highBits = ReadInt32(); - Local argv[] = { Int32::New(lowBits), Int32::New(highBits) }; - return bson->timestampConstructor->NewInstance(2, argv); - } - - case BSON_TYPE_BOOLEAN: - return (ReadByte() != 0) ? True() : False(); - - case BSON_TYPE_REGEXP: - { - const Local& regex = ReadCString(); - int32_t options = ReadRegexOptions(); - return RegExp::New(regex, (RegExp::Flags) options); - } - - case BSON_TYPE_CODE: - { - const Local& code = ReadString(); - const Local& scope = Object::New(); - Local argv[] = { code, scope }; - return bson->codeConstructor->NewInstance(2, argv); - } - - case BSON_TYPE_CODE_W_SCOPE: - { - ReadUInt32(); - const Local& code = ReadString(); - const Handle& scope = DeserializeDocument(); - Local argv[] = { code, scope->ToObject() }; - return bson->codeConstructor->NewInstance(2, argv); - } - - case BSON_TYPE_OID: - { - Local argv[] = { ReadObjectId() }; - return bson->objectIDConstructor->NewInstance(1, argv); - } - - case BSON_TYPE_BINARY: - { - uint32_t length = ReadUInt32(); - uint32_t subType = ReadByte(); - if(subType == 0x02) { - length = ReadInt32(); - } - - Buffer* buffer = Buffer::New(p, length); - p += length; - - Handle argv[] = { buffer->handle_, Uint32::New(subType) }; - return bson->binaryConstructor->NewInstance(2, argv); - } - - case BSON_TYPE_LONG: - { - // Read 32 bit integers - int32_t lowBits = (int32_t) ReadInt32(); - int32_t highBits = (int32_t) ReadInt32(); - - // If value is < 2^53 and >-2^53 - if((highBits < 0x200000 || (highBits == 0x200000 && lowBits == 0)) && highBits >= -0x200000) { - // Adjust the pointer and read as 64 bit value - p -= 8; - // Read the 64 bit value - int64_t finalValue = (int64_t) ReadInt64(); - return Number::New(finalValue); - } - - Local argv[] = { Int32::New(lowBits), Int32::New(highBits) }; - return bson->longConstructor->NewInstance(2, argv); - } - - case BSON_TYPE_DATE: - return Date::New((double) ReadInt64()); - - case BSON_TYPE_ARRAY: - return DeserializeArray(); - - case BSON_TYPE_OBJECT: - return DeserializeDocument(); - - case BSON_TYPE_SYMBOL: - { - const Local& string = ReadString(); - Local argv[] = { string }; - return bson->symbolConstructor->NewInstance(1, argv); - } - - case BSON_TYPE_MIN_KEY: - return bson->minKeyConstructor->NewInstance(); - - case BSON_TYPE_MAX_KEY: - return bson->maxKeyConstructor->NewInstance(); - - default: - ThrowAllocatedStringException(64, "Unhandled BSON Type: %d", type); - } - - return v8::Null(); -} - - -static Handle VException(const char *msg) -{ - HandleScope scope; - return ThrowException(Exception::Error(String::New(msg))); -} - -Persistent BSON::constructor_template; - -BSON::BSON() : ObjectWrap() -{ - // Setup pre-allocated comparision objects - _bsontypeString = Persistent::New(String::New("_bsontype")); - _longLowString = Persistent::New(String::New("low_")); - _longHighString = Persistent::New(String::New("high_")); - _objectIDidString = Persistent::New(String::New("id")); - _binaryPositionString = Persistent::New(String::New("position")); - _binarySubTypeString = Persistent::New(String::New("sub_type")); - _binaryBufferString = Persistent::New(String::New("buffer")); - _doubleValueString = Persistent::New(String::New("value")); - _symbolValueString = Persistent::New(String::New("value")); - _dbRefRefString = Persistent::New(String::New("$ref")); - _dbRefIdRefString = Persistent::New(String::New("$id")); - _dbRefDbRefString = Persistent::New(String::New("$db")); - _dbRefNamespaceString = Persistent::New(String::New("namespace")); - _dbRefDbString = Persistent::New(String::New("db")); - _dbRefOidString = Persistent::New(String::New("oid")); - _codeCodeString = Persistent::New(String::New("code")); - _codeScopeString = Persistent::New(String::New("scope")); - _toBSONString = Persistent::New(String::New("toBSON")); - - longString = Persistent::New(String::New("Long")); - objectIDString = Persistent::New(String::New("ObjectID")); - binaryString = Persistent::New(String::New("Binary")); - codeString = Persistent::New(String::New("Code")); - dbrefString = Persistent::New(String::New("DBRef")); - symbolString = Persistent::New(String::New("Symbol")); - doubleString = Persistent::New(String::New("Double")); - timestampString = Persistent::New(String::New("Timestamp")); - minKeyString = Persistent::New(String::New("MinKey")); - maxKeyString = Persistent::New(String::New("MaxKey")); -} - -void BSON::Initialize(v8::Handle target) -{ - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("BSON")); - - // Instance methods - NODE_SET_PROTOTYPE_METHOD(constructor_template, "calculateObjectSize", CalculateObjectSize); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "serialize", BSONSerialize); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "serializeWithBufferAndIndex", SerializeWithBufferAndIndex); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "deserialize", BSONDeserialize); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "deserializeStream", BSONDeserializeStream); - - target->ForceSet(String::NewSymbol("BSON"), constructor_template->GetFunction()); -} - -// Create a new instance of BSON and passing it the existing context -Handle BSON::New(const Arguments &args) -{ - HandleScope scope; - - // Check that we have an array - if(args.Length() == 1 && args[0]->IsArray()) - { - // Cast the array to a local reference - Local array = Local::Cast(args[0]); - - if(array->Length() > 0) - { - // Create a bson object instance and return it - BSON *bson = new BSON(); - - uint32_t foundClassesMask = 0; - - // Iterate over all entries to save the instantiate funtions - for(uint32_t i = 0; i < array->Length(); i++) { - // Let's get a reference to the function - Local func = Local::Cast(array->Get(i)); - Local functionName = func->GetName()->ToString(); - - // Save the functions making them persistant handles (they don't get collected) - if(functionName->StrictEquals(bson->longString)) { - bson->longConstructor = Persistent::New(func); - foundClassesMask |= 1; - } else if(functionName->StrictEquals(bson->objectIDString)) { - bson->objectIDConstructor = Persistent::New(func); - foundClassesMask |= 2; - } else if(functionName->StrictEquals(bson->binaryString)) { - bson->binaryConstructor = Persistent::New(func); - foundClassesMask |= 4; - } else if(functionName->StrictEquals(bson->codeString)) { - bson->codeConstructor = Persistent::New(func); - foundClassesMask |= 8; - } else if(functionName->StrictEquals(bson->dbrefString)) { - bson->dbrefConstructor = Persistent::New(func); - foundClassesMask |= 0x10; - } else if(functionName->StrictEquals(bson->symbolString)) { - bson->symbolConstructor = Persistent::New(func); - foundClassesMask |= 0x20; - } else if(functionName->StrictEquals(bson->doubleString)) { - bson->doubleConstructor = Persistent::New(func); - foundClassesMask |= 0x40; - } else if(functionName->StrictEquals(bson->timestampString)) { - bson->timestampConstructor = Persistent::New(func); - foundClassesMask |= 0x80; - } else if(functionName->StrictEquals(bson->minKeyString)) { - bson->minKeyConstructor = Persistent::New(func); - foundClassesMask |= 0x100; - } else if(functionName->StrictEquals(bson->maxKeyString)) { - bson->maxKeyConstructor = Persistent::New(func); - foundClassesMask |= 0x200; - } - } - - // Check if we have the right number of constructors otherwise throw an error - if(foundClassesMask != 0x3ff) { - delete bson; - return VException("Missing function constructor for either [Long/ObjectID/Binary/Code/DbRef/Symbol/Double/Timestamp/MinKey/MaxKey]"); - } else { - bson->Wrap(args.This()); - return args.This(); - } - } - else - { - return VException("No types passed in"); - } - } - else - { - return VException("Argument passed in must be an array of types"); - } -} - -//------------------------------------------------------------------------------------------------ -//------------------------------------------------------------------------------------------------ -//------------------------------------------------------------------------------------------------ -//------------------------------------------------------------------------------------------------ - -Handle BSON::BSONDeserialize(const Arguments &args) -{ - HandleScope scope; - - // Ensure that we have an parameter - if(Buffer::HasInstance(args[0]) && args.Length() > 1) return VException("One argument required - buffer1."); - if(args[0]->IsString() && args.Length() > 1) return VException("One argument required - string1."); - // Throw an exception if the argument is not of type Buffer - if(!Buffer::HasInstance(args[0]) && !args[0]->IsString()) return VException("Argument must be a Buffer or String."); - - // Define pointer to data - Local obj = args[0]->ToObject(); - - // Unpack the BSON parser instance - BSON *bson = ObjectWrap::Unwrap(args.This()); - - // If we passed in a buffer, let's unpack it, otherwise let's unpack the string - if(Buffer::HasInstance(obj)) - { -#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 - Buffer *buffer = ObjectWrap::Unwrap(obj); - char* data = buffer->data(); - size_t length = buffer->length(); -#else - char* data = Buffer::Data(obj); - size_t length = Buffer::Length(obj); -#endif - - // Validate that we have at least 5 bytes - if(length < 5) return VException("corrupt bson message < 5 bytes long"); - - try - { - BSONDeserializer deserializer(bson, data, length); - return deserializer.DeserializeDocument(); - } - catch(char* exception) - { - Handle error = VException(exception); - free(exception); - return error; - } - - } - else - { - // The length of the data for this encoding - ssize_t len = DecodeBytes(args[0], BINARY); - - // Validate that we have at least 5 bytes - if(len < 5) return VException("corrupt bson message < 5 bytes long"); - - // Let's define the buffer size - char* data = (char *)malloc(len); - DecodeWrite(data, len, args[0], BINARY); - - try - { - BSONDeserializer deserializer(bson, data, len); - Handle result = deserializer.DeserializeDocument(); - free(data); - return result; - - } - catch(char* exception) - { - Handle error = VException(exception); - free(exception); - free(data); - return error; - } - } -} - -Local BSON::GetSerializeObject(const Handle& argValue) -{ - Local object = argValue->ToObject(); - if(object->Has(_toBSONString)) - { - const Local& toBSON = object->Get(_toBSONString); - if(!toBSON->IsFunction()) ThrowAllocatedStringException(64, "toBSON is not a function"); - - Local result = Local::Cast(toBSON)->Call(object, 0, NULL); - if(!result->IsObject()) ThrowAllocatedStringException(64, "toBSON function did not return an object"); - return result->ToObject(); - } - else - { - return object; - } -} - -Handle BSON::BSONSerialize(const Arguments &args) -{ - HandleScope scope; - - if(args.Length() == 1 && !args[0]->IsObject()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]"); - if(args.Length() == 2 && !args[0]->IsObject() && !args[1]->IsBoolean()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]"); - if(args.Length() == 3 && !args[0]->IsObject() && !args[1]->IsBoolean() && !args[2]->IsBoolean()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean]"); - if(args.Length() == 4 && !args[0]->IsObject() && !args[1]->IsBoolean() && !args[2]->IsBoolean() && !args[3]->IsBoolean()) return VException("One, two or tree arguments required - [object] or [object, boolean] or [object, boolean, boolean] or [object, boolean, boolean, boolean]"); - if(args.Length() > 4) return VException("One, two, tree or four arguments required - [object] or [object, boolean] or [object, boolean, boolean] or [object, boolean, boolean, boolean]"); - - // Unpack the BSON parser instance - BSON *bson = ObjectWrap::Unwrap(args.This()); - - // Calculate the total size of the document in binary form to ensure we only allocate memory once - // With serialize function - bool serializeFunctions = (args.Length() >= 4) && args[3]->BooleanValue(); - - char *serialized_object = NULL; - size_t object_size; - try - { - Local object = bson->GetSerializeObject(args[0]); - - BSONSerializer counter(bson, false, serializeFunctions); - counter.SerializeDocument(object); - object_size = counter.GetSerializeSize(); - - // Allocate the memory needed for the serialization - serialized_object = (char *)malloc(object_size); - - // Check if we have a boolean value - bool checkKeys = args.Length() >= 3 && args[1]->IsBoolean() && args[1]->BooleanValue(); - BSONSerializer data(bson, checkKeys, serializeFunctions, serialized_object); - data.SerializeDocument(object); - } - catch(char *err_msg) - { - free(serialized_object); - Handle error = VException(err_msg); - free(err_msg); - return error; - } - - // If we have 3 arguments - if(args.Length() == 3 || args.Length() == 4) - { - Buffer *buffer = Buffer::New(serialized_object, object_size); - free(serialized_object); - return scope.Close(buffer->handle_); - } - else - { - Local bin_value = Encode(serialized_object, object_size, BINARY)->ToString(); - free(serialized_object); - return bin_value; - } -} - -Handle BSON::CalculateObjectSize(const Arguments &args) -{ - HandleScope scope; - // Ensure we have a valid object - if(args.Length() == 1 && !args[0]->IsObject()) return VException("One argument required - [object]"); - if(args.Length() == 2 && !args[0]->IsObject() && !args[1]->IsBoolean()) return VException("Two arguments required - [object, boolean]"); - if(args.Length() > 3) return VException("One or two arguments required - [object] or [object, boolean]"); - - // Unpack the BSON parser instance - BSON *bson = ObjectWrap::Unwrap(args.This()); - bool serializeFunctions = (args.Length() >= 2) && args[1]->BooleanValue(); - BSONSerializer countSerializer(bson, false, serializeFunctions); - countSerializer.SerializeDocument(args[0]); - - // Return the object size - return scope.Close(Uint32::New((uint32_t) countSerializer.GetSerializeSize())); -} - -Handle BSON::SerializeWithBufferAndIndex(const Arguments &args) -{ - HandleScope scope; - - //BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, ->, buffer, index) { - // Ensure we have the correct values - if(args.Length() > 5) return VException("Four or five parameters required [object, boolean, Buffer, int] or [object, boolean, Buffer, int, boolean]"); - if(args.Length() == 4 && !args[0]->IsObject() && !args[1]->IsBoolean() && !Buffer::HasInstance(args[2]) && !args[3]->IsUint32()) return VException("Four parameters required [object, boolean, Buffer, int]"); - if(args.Length() == 5 && !args[0]->IsObject() && !args[1]->IsBoolean() && !Buffer::HasInstance(args[2]) && !args[3]->IsUint32() && !args[4]->IsBoolean()) return VException("Four parameters required [object, boolean, Buffer, int, boolean]"); - - uint32_t index; - size_t object_size; - - try - { - BSON *bson = ObjectWrap::Unwrap(args.This()); - - Local obj = args[2]->ToObject(); - char* data = Buffer::Data(obj); - size_t length = Buffer::Length(obj); - - index = args[3]->Uint32Value(); - bool checkKeys = args.Length() >= 4 && args[1]->IsBoolean() && args[1]->BooleanValue(); - bool serializeFunctions = (args.Length() == 5) && args[4]->BooleanValue(); - - BSONSerializer dataSerializer(bson, checkKeys, serializeFunctions, data+index); - dataSerializer.SerializeDocument(bson->GetSerializeObject(args[0])); - object_size = dataSerializer.GetSerializeSize(); - - if(object_size + index > length) return VException("Serious error - overflowed buffer!!"); - } - catch(char *exception) - { - Handle error = VException(exception); - free(exception); - return error; - } - - return scope.Close(Uint32::New((uint32_t) (index + object_size - 1))); -} - -Handle BSON::BSONDeserializeStream(const Arguments &args) -{ - HandleScope scope; - - // At least 3 arguments required - if(args.Length() < 5) return VException("Arguments required (Buffer(data), Number(index in data), Number(number of documents to deserialize), Array(results), Number(index in the array), Object(optional))"); - - // If the number of argumets equals 3 - if(args.Length() >= 5) - { - if(!Buffer::HasInstance(args[0])) return VException("First argument must be Buffer instance"); - if(!args[1]->IsUint32()) return VException("Second argument must be a positive index number"); - if(!args[2]->IsUint32()) return VException("Third argument must be a positive number of documents to deserialize"); - if(!args[3]->IsArray()) return VException("Fourth argument must be an array the size of documents to deserialize"); - if(!args[4]->IsUint32()) return VException("Sixth argument must be a positive index number"); - } - - // If we have 4 arguments - if(args.Length() == 6 && !args[5]->IsObject()) return VException("Fifth argument must be an object with options"); - - // Define pointer to data - Local obj = args[0]->ToObject(); - uint32_t numberOfDocuments = args[2]->Uint32Value(); - uint32_t index = args[1]->Uint32Value(); - uint32_t resultIndex = args[4]->Uint32Value(); - - // Unpack the BSON parser instance - BSON *bson = ObjectWrap::Unwrap(args.This()); - - // Unpack the buffer variable -#if NODE_MAJOR_VERSION == 0 && NODE_MINOR_VERSION < 3 - Buffer *buffer = ObjectWrap::Unwrap(obj); - char* data = buffer->data(); - size_t length = buffer->length(); -#else - char* data = Buffer::Data(obj); - size_t length = Buffer::Length(obj); -#endif - - // Fetch the documents - Local documents = args[3]->ToObject(); - - BSONDeserializer deserializer(bson, data+index, length-index); - for(uint32_t i = 0; i < numberOfDocuments; i++) - { - try - { - documents->Set(i + resultIndex, deserializer.DeserializeDocument()); - } - catch (char* exception) - { - Handle error = VException(exception); - free(exception); - return error; - } - } - - // Return new index of parsing - return scope.Close(Uint32::New((uint32_t) (index + deserializer.GetSerializeSize()))); -} - -// Exporting function -extern "C" void init(Handle target) -{ - HandleScope scope; - BSON::Initialize(target); -} - -NODE_MODULE(bson, BSON::Initialize); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h deleted file mode 100644 index 580abd4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/bson.h +++ /dev/null @@ -1,273 +0,0 @@ -//=========================================================================== - -#ifndef BSON_H_ -#define BSON_H_ - -//=========================================================================== - -#define USE_MISALIGNED_MEMORY_ACCESS 1 - -#include -#include -#include - -using namespace v8; -using namespace node; - -//=========================================================================== - -enum BsonType -{ - BSON_TYPE_NUMBER = 1, - BSON_TYPE_STRING = 2, - BSON_TYPE_OBJECT = 3, - BSON_TYPE_ARRAY = 4, - BSON_TYPE_BINARY = 5, - BSON_TYPE_UNDEFINED = 6, - BSON_TYPE_OID = 7, - BSON_TYPE_BOOLEAN = 8, - BSON_TYPE_DATE = 9, - BSON_TYPE_NULL = 10, - BSON_TYPE_REGEXP = 11, - BSON_TYPE_CODE = 13, - BSON_TYPE_SYMBOL = 14, - BSON_TYPE_CODE_W_SCOPE = 15, - BSON_TYPE_INT = 16, - BSON_TYPE_TIMESTAMP = 17, - BSON_TYPE_LONG = 18, - BSON_TYPE_MAX_KEY = 0x7f, - BSON_TYPE_MIN_KEY = 0xff -}; - -//=========================================================================== - -template class BSONSerializer; - -class BSON : public ObjectWrap { -public: - BSON(); - ~BSON() {} - - static void Initialize(Handle target); - static Handle BSONDeserializeStream(const Arguments &args); - - // JS based objects - static Handle BSONSerialize(const Arguments &args); - static Handle BSONDeserialize(const Arguments &args); - - // Calculate size of function - static Handle CalculateObjectSize(const Arguments &args); - static Handle SerializeWithBufferAndIndex(const Arguments &args); - - // Constructor used for creating new BSON objects from C++ - static Persistent constructor_template; - -private: - static Handle New(const Arguments &args); - static Handle deserialize(BSON *bson, char *data, uint32_t dataLength, uint32_t startIndex, bool is_array_item); - - // BSON type instantiate functions - Persistent longConstructor; - Persistent objectIDConstructor; - Persistent binaryConstructor; - Persistent codeConstructor; - Persistent dbrefConstructor; - Persistent symbolConstructor; - Persistent doubleConstructor; - Persistent timestampConstructor; - Persistent minKeyConstructor; - Persistent maxKeyConstructor; - - // Equality Objects - Persistent longString; - Persistent objectIDString; - Persistent binaryString; - Persistent codeString; - Persistent dbrefString; - Persistent symbolString; - Persistent doubleString; - Persistent timestampString; - Persistent minKeyString; - Persistent maxKeyString; - - // Equality speed up comparison objects - Persistent _bsontypeString; - Persistent _longLowString; - Persistent _longHighString; - Persistent _objectIDidString; - Persistent _binaryPositionString; - Persistent _binarySubTypeString; - Persistent _binaryBufferString; - Persistent _doubleValueString; - Persistent _symbolValueString; - - Persistent _dbRefRefString; - Persistent _dbRefIdRefString; - Persistent _dbRefDbRefString; - Persistent _dbRefNamespaceString; - Persistent _dbRefDbString; - Persistent _dbRefOidString; - - Persistent _codeCodeString; - Persistent _codeScopeString; - Persistent _toBSONString; - - Local GetSerializeObject(const Handle& object); - - template friend class BSONSerializer; - friend class BSONDeserializer; -}; - -//=========================================================================== - -class CountStream -{ -public: - CountStream() : count(0) { } - - void WriteByte(int value) { ++count; } - void WriteByte(const Handle&, const Handle&) { ++count; } - void WriteBool(const Handle& value) { ++count; } - void WriteInt32(int32_t value) { count += 4; } - void WriteInt32(const Handle& value) { count += 4; } - void WriteInt32(const Handle& object, const Handle& key) { count += 4; } - void WriteInt64(int64_t value) { count += 8; } - void WriteInt64(const Handle& value) { count += 8; } - void WriteDouble(double value) { count += 8; } - void WriteDouble(const Handle& value) { count += 8; } - void WriteDouble(const Handle&, const Handle&) { count += 8; } - void WriteUInt32String(uint32_t name) { char buffer[32]; count += sprintf(buffer, "%u", name) + 1; } - void WriteLengthPrefixedString(const Local& value) { count += value->Utf8Length()+5; } - void WriteObjectId(const Handle& object, const Handle& key) { count += 12; } - void WriteString(const Local& value) { count += value->Utf8Length() + 1; } // This returns the number of bytes exclusive of the NULL terminator - void WriteData(const char* data, size_t length) { count += length; } - - void* BeginWriteType() { ++count; return NULL; } - void CommitType(void*, BsonType) { } - void* BeginWriteSize() { count += 4; return NULL; } - void CommitSize(void*) { } - - size_t GetSerializeSize() const { return count; } - - // Do nothing. CheckKey is implemented for DataStream - void CheckKey(const Local&) { } - -private: - size_t count; -}; - -class DataStream -{ -public: - DataStream(char* aDestinationBuffer) : destinationBuffer(aDestinationBuffer), p(aDestinationBuffer) { } - - void WriteByte(int value) { *p++ = value; } - void WriteByte(const Handle& object, const Handle& key) { *p++ = object->Get(key)->Int32Value(); } -#if USE_MISALIGNED_MEMORY_ACCESS - void WriteInt32(int32_t value) { *reinterpret_cast(p) = value; p += 4; } - void WriteInt64(int64_t value) { *reinterpret_cast(p) = value; p += 8; } - void WriteDouble(double value) { *reinterpret_cast(p) = value; p += 8; } -#else - void WriteInt32(int32_t value) { memcpy(p, &value, 4); p += 4; } - void WriteInt64(int64_t value) { memcpy(p, &value, 8); p += 8; } - void WriteDouble(double value) { memcpy(p, &value, 8); p += 8; } -#endif - void WriteBool(const Handle& value) { WriteByte(value->BooleanValue() ? 1 : 0); } - void WriteInt32(const Handle& value) { WriteInt32(value->Int32Value()); } - void WriteInt32(const Handle& object, const Handle& key) { WriteInt32(object->Get(key)); } - void WriteInt64(const Handle& value) { WriteInt64(value->IntegerValue()); } - void WriteDouble(const Handle& value) { WriteDouble(value->NumberValue()); } - void WriteDouble(const Handle& object, const Handle& key) { WriteDouble(object->Get(key)); } - void WriteUInt32String(uint32_t name) { p += sprintf(p, "%u", name) + 1; } - void WriteLengthPrefixedString(const Local& value) { WriteInt32(value->Utf8Length()+1); WriteString(value); } - void WriteObjectId(const Handle& object, const Handle& key); - void WriteString(const Local& value) { p += value->WriteUtf8(p); } // This returns the number of bytes inclusive of the NULL terminator. - void WriteData(const char* data, size_t length) { memcpy(p, data, length); p += length; } - - void* BeginWriteType() { void* returnValue = p; p++; return returnValue; } - void CommitType(void* beginPoint, BsonType value) { *reinterpret_cast(beginPoint) = value; } - void* BeginWriteSize() { void* returnValue = p; p += 4; return returnValue; } - -#if USE_MISALIGNED_MEMORY_ACCESS - void CommitSize(void* beginPoint) { *reinterpret_cast(beginPoint) = (int32_t) (p - (char*) beginPoint); } -#else - void CommitSize(void* beginPoint) { int32_t value = (int32_t) (p - (char*) beginPoint); memcpy(beginPoint, &value, 4); } -#endif - - size_t GetSerializeSize() const { return p - destinationBuffer; } - - void CheckKey(const Local& keyName); - -protected: - char *const destinationBuffer; // base, never changes - char* p; // cursor into buffer -}; - -template class BSONSerializer : public T -{ -private: - typedef T Inherited; - -public: - BSONSerializer(BSON* aBson, bool aCheckKeys, bool aSerializeFunctions) : Inherited(), checkKeys(aCheckKeys), serializeFunctions(aSerializeFunctions), bson(aBson) { } - BSONSerializer(BSON* aBson, bool aCheckKeys, bool aSerializeFunctions, char* parentParam) : Inherited(parentParam), checkKeys(aCheckKeys), serializeFunctions(aSerializeFunctions), bson(aBson) { } - - void SerializeDocument(const Handle& value); - void SerializeArray(const Handle& value); - void SerializeValue(void* typeLocation, const Handle& value); - -private: - bool checkKeys; - bool serializeFunctions; - BSON* bson; -}; - -//=========================================================================== - -class BSONDeserializer -{ -public: - BSONDeserializer(BSON* aBson, char* data, size_t length); - BSONDeserializer(BSONDeserializer& parentSerializer, size_t length); - - Handle DeserializeDocument(); - - bool HasMoreData() const { return p < pEnd; } - Local ReadCString(); - uint32_t ReadIntegerString(); - int32_t ReadRegexOptions(); - Local ReadString(); - Local ReadObjectId(); - - unsigned char ReadByte() { return *reinterpret_cast(p++); } -#if USE_MISALIGNED_MEMORY_ACCESS - int32_t ReadInt32() { int32_t returnValue = *reinterpret_cast(p); p += 4; return returnValue; } - uint32_t ReadUInt32() { uint32_t returnValue = *reinterpret_cast(p); p += 4; return returnValue; } - int64_t ReadInt64() { int64_t returnValue = *reinterpret_cast(p); p += 8; return returnValue; } - double ReadDouble() { double returnValue = *reinterpret_cast(p); p += 8; return returnValue; } -#else - int32_t ReadInt32() { int32_t returnValue; memcpy(&returnValue, p, 4); p += 4; return returnValue; } - uint32_t ReadUInt32() { uint32_t returnValue; memcpy(&returnValue, p, 4); p += 4; return returnValue; } - int64_t ReadInt64() { int64_t returnValue; memcpy(&returnValue, p, 8); p += 8; return returnValue; } - double ReadDouble() { double returnValue; memcpy(&returnValue, p, 8); p += 8; return returnValue; } -#endif - - size_t GetSerializeSize() const { return p - pStart; } - -private: - Handle DeserializeArray(); - Handle DeserializeValue(BsonType type); - Handle DeserializeDocumentInternal(); - Handle DeserializeArrayInternal(); - - BSON* bson; - char* const pStart; - char* p; - char* const pEnd; -}; - -//=========================================================================== - -#endif // BSON_H_ - -//=========================================================================== diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js deleted file mode 100644 index 85e243c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/index.js +++ /dev/null @@ -1,30 +0,0 @@ -var bson = null; - -// Load the precompiled win32 binary -if(process.platform == "win32" && process.arch == "x64") { - bson = require('./win32/x64/bson'); -} else if(process.platform == "win32" && process.arch == "ia32") { - bson = require('./win32/ia32/bson'); -} else { - bson = require('../build/Release/bson'); -} - -exports.BSON = bson.BSON; -exports.Long = require('../lib/bson/long').Long; -exports.ObjectID = require('../lib/bson/objectid').ObjectID; -exports.DBRef = require('../lib/bson/db_ref').DBRef; -exports.Code = require('../lib/bson/code').Code; -exports.Timestamp = require('../lib/bson/timestamp').Timestamp; -exports.Binary = require('../lib/bson/binary').Binary; -exports.Double = require('../lib/bson/double').Double; -exports.MaxKey = require('../lib/bson/max_key').MaxKey; -exports.MinKey = require('../lib/bson/min_key').MinKey; -exports.Symbol = require('../lib/bson/symbol').Symbol; - -// Just add constants tot he Native BSON parser -exports.BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0; -exports.BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1; -exports.BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -exports.BSON.BSON_BINARY_SUBTYPE_UUID = 3; -exports.BSON.BSON_BINARY_SUBTYPE_MD5 = 4; -exports.BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/ia32/bson.node deleted file mode 100644 index b27819bb1a8a4fb1bda843df4d87dd0753137603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113152 zcmeFae|S{YwLg3&nIuD)FoPr*G)TmtXh5R_HZcT-ACm+nI3Z+03JG`%bWEvII7hLU zK;p^JoNT7rd$rfL>V=~BORH_^y`b0vP6#GYQ2|j=sK%CW-RYznD-8i6=l!gG&iqJ7 zZ2La%bN_ntJefIX@3q%nYwfkyUVH5yQ}*@8r9?@RtoYY;N!p8V`g4oVum0#m_NWQJ z871u=@y7LgEeqbbezE`l_1SCJJ^0Oa_kBD28}~i%z=Lx3zpTn$r#z5-{{z|c?yboF z_Jb=|-I|t`nq#8g|J!Xn7e07%N96y9FRt40A>M!ZqIXBP_+GiA8Q(oWt=Vx&yf4~u z5#JX+cx%T}@qXWqKJi^?epiU^MfZQhPdJC;!0VBu1(qaf>`#)*BQTv(!u2C9sgjgs zk)$7+srTXAiT^yL(Gxu$;Wq$@fXpR6jC^_d0xM4xKq`~Uy_e;@%@NSkfdEZS^a+fn*s zt!zP#m5tV%tlX-3t!%zcE43Z8N+S2@(GJVmT8q_!QP^yhlp3EY7j|*yp_m z6XfY^VSiO{Q-9F<{rMZl1fLToK;_o?Mu|tx^&YgyBdYk>1(Kv5va*ilwZPJmOz1_H zj~_9!+9^j+MD?AEqbP7hwlNEH)>-ruL?z|-$K^9ijCMi)Z0mr8e~ezLF-q^WLG)6l zN$`E@v}I`X0%ZZ%4<7li?vU@G>#q} zz)!Iuf4jRhX#f5OXK-bXq;}a$J1hhES$WSu`N#1y-^_~1zr&IRT03Uj&1%`a9BYTr zOM|B1Z2JHf*zC+f?^y%hTTs4vc6L-KEwi%+te9qVH2qFX~G`C2~PUu(rR7 z6$YnWzIQ`@hhWSF)%URn}>Zf`Jfg;z2Tpv#| za!pD*EK@*9tceFwWAxv62zMjw+I8Jch{oKPO+p5S4FE$w2v1rYYYMW>!qT9hLhmlb%P+tQb9_zt`#Pb8m1#jshl0v zEHEl|HX?}8dy$^8l4M}hGwjsm7s6doi>=mb(Im{FXFNyQ3$1mM+sI+XR_3Ua>U6K3 z@gnjp#j!D#`K-)_JmdoL;M}7})$W|_FK)9qU5B)JIoaTKazzz@A$hb%RyhdDT7>2( zWmgfIqZuVn%^a|-aDs5Rd&)Iy9WucXAvN~Q`JnyRJt79+e@h@Y= z3&CUpHu`c+CJ5|^_GKV>NV&utRqf!1&gi_N;nRTo~qpY1@pHB@Q=TbqR)U$o?GMH2Cc7kqS72FB+V$ynt zzcbpT#b4?=yB$5wj(=#Vvp?w7p`$i!aZWnm3(M^fIsDtA@M8hraMwV!NFW^bHuhE! z<#;-EJ9zNWtf;P#4At)Jn0&G-DyzVXon7#18*|e2j19yO6yuP!aG`zux7gHWlrWy; zYt9!~v8~1CcD!@}3dasJeURz_Tb5UU8}g_U_JY01Z^2BH3^;6eIb@a14rw-gXX@`T zpRLemU-u&0nBxTA!eTr0+~$ku`R)B+XcTK~B357yVa@y?q$wnCW@Fi-4U}9&rZHkL zscUC@_4gu$kPds5BaEqY5z>=cLo-SVc#t=l=t)QVSax@opu8?o7&tv6pZK=H{5dt- z@|vZ9%YvnudndJSb{p8SBWbdBHAGxPHt1$E=O`<+vC(RGrrK)tVftV+^nxf)HJ89s zo(6944+Ay2KUf}X=u%sucVI(L1^nQK9*49lG_su|K7mHARS(5{`tpiOwkF3(&6-{( zL1f#A6KYZ$HR)|Hdfi-?*sj{=-oX zUW`|iOxHZpa`sxyQe!kbdQ|k6P-FLQV6I^Avod>dw(hGcx{P(yNN{z<#kWdB! z|6T%jOVny-c#9E?uXnKI?Dbx)_nZvNNF=rn8g0l;{&R@a@+I*guNNzwe;LVBQ9U!LNITX`G z1I?x;&x;kXi?7$S$f=dn_!sG-gR zEb=gPQH$moZP|kHidkBfF9rP`YFG@gglD|@Wg=Z3G9s_4`=?odO0 zq`9P%r3~?s1vv{oT9Z?X%82By{~-%LL_RtgKwbn$d_T*I>0P`6(U{i8pQDDwcoyl{ z3W5-?^Jn{z+8#|s%gsZ}ojQ+HYBg%R8LTwh;K>3NC$ln~B*(D3r^G;JMASL1M>Bxr zK?6#GBAUOvR(@)p(|G@PeAi}6&W|Tb z&fnnu=k$#KGQhYf4`~!01G5}Th|ClvFB&@?y=n_etIgMHXK1xt#*x8yH=}}wb~6@?MCg{2I!#nEOij= zSu$eUvs=X{^-t|t8UX5a?O8I$P&KFjBveX!mO89gdv+VXFcL^?YC3ug+^oVj#p()$ zlfC*ou%vZ5xODnEQKVceUPh2Z!C(aUbHFUpidPH+qZO|dwf6vwT&f}QP+jMYy8Oez zP+d}$sB6tIFk10iQI{QHUs+c=0Kk_#3?8(+(@!wqYr`-wTJc6vSJvOFD@W9|rNI>V zaAKS+s@p=XIb4lfsF6jbQ~qA1`9`Ir55r&+JkBsGC50IVOxr?wBr0|Py-G`sN=e~{ z!6qv88kLeF4g;ob*%qmE$=|DVg{ZW6+Ayd@jcY`W#rea)XvH%GgYw_2Yok$@dl)>T zt|p_ddBebH#igRIt$(ksCycttT^q8?kcw_I>Kabfwc^F1uAKwxN?l$9`@-6nR<{|Q z9q+})dt`Df=66#nDt$Ehnqu0>q7bZ+E97+@DF@n2f9DiQ^fHRufc0sxl}%(6K`xnA z3g+zCdw>E~hbh^Hm7I(P^fY}hK4D=nrSk707W8*vh|&lay#qtyF@hRT@6qbA{5=Im zb!&2Rgms$c-%BDwSu)CXn2a6LCWEjX_BtDX6d1f1v~w_(ps6D49EJKQzVr^uh+!rW zf8KPs|0qau#AHlRmhV3*gu5UokEkX&aAzC1vxdVR${Pyzxk0#r6cad_q2~M(xEtIC z?kS*qV-C^1AZLbOS~5`L0;iS_PNxizwjm4AqL9>NXvQIG(tMyHp-`iH4b~A4q*-)9 zWa_;@&sYXfL+xmcU0z$WR6R7M&4_=f-HR)HRjh~xZNN}ZRP309s(ltmU{xX<`SDL7 zD-hZ|3N>XSg1~4p6;4E0Q_nbstfr8oX$An*O*U!sRlt!|4xmh$JuJ&f505~I5zUp( zK47ow8BYsbjwX)KgP+`3{@Xm7xmyv48_9Zj3b~Da;RKhCaM zf0U>}Z8_8sS$f6_U>38D9L#|AjCu4*AyA>B8RzJ=WLiWh>H6CUR@@TkRUEF6iaEbU zE3tR|9uZM^CC2z|jV8AvnU&-ZTQ)%}advILqO3@!^?p_|W7x7*tt7o`)fHt$@Qbjyn$u2d~n03@NZ;*CUkMZp;N2M>N<;tU?rtPKvzG?V>CkDn3sn}IFj zI8d=d_>)!v}(fRwkj#7h55VX~Mm=qW{zY#%iMm33>FWks98(R2(_W0l>IwUvtWFj3qs+6jg{ zY5i3H43nm+e}JYAPd~K-mh;$qLC-#(_z7$>S`Y2aJ2>XfUnNmif3_;9*!icQBNWPi ze?1v@8!NN1O1m~1n6W~l?_J@NoNX~Q9sms2`h0-;)sX_uGZvI6v1z1pP4^ZBoX|`3HDFCuWrbMZy3P#CeAl|F_dX zOs$R%Z^P~d8%4&qYy*ujS~hU*M;}3mW4FC|;d<#+gW=jnP8$jY7@}(9yOW(QJDghF#loEs?c} zw|E8&d*hC`H{@CjZEtq5>10#kvOuLvY=)BopF>gLX~cCl>JRtA(J+aFt=Xo(3tO`j zG!C*gCx^8)+hVq6*U+{GB&dA}%G$52e381@W&v?z;)J!Zg_A*?+GS+ho88<3qa6md4nb~LR*Hxcz% z9RUjOeN|nKKnozgy1s9HWqry5WG8~0IBpDC*#)&z{m!o&MzZ}ce_u+#W!-cmHGO0t z-iFd*Xfie-Ahc9=vb?LG*4awL$jqO$3%8Q>Xv#^0?~OOAeZ!EH(Jyqr-Q%z*R(wj> z`{y}}Rpx>c8)@UII3rYI)jZuW(7_sxCA1P4v<^=Q;*#1uhoqJ=M|0V0nsS&`a;>s6 z=;;h9A^vZmg?U0`oQ`>U;`k_KXN{KMxD=Ydc{HHWiz60Gf^vZuj_S_PB0gyt`hK2h zmO<7n4)zqm8tll{U6ydd9U)EGrYX-gdv>-|I+`ng#ylrA&x^248dh+~+IhC|U7*mk zOl&hkA?F!}&4f!0NmCudqt5s7i`N?LC^l_ouzy#m8O1=v}i zkH01g+1X|*dNj&B0p`$W$ijXF23C1?5pO|JR)18OS}jbbc7utGh7p9PBNp~GOm8vB zMDPtY$i$m3V|}Yn?Vc7tAIgTkQ0(Mcu<>Mrlp31%VDg|WhP#zVeh*n+f8J7>fSKAT zd^XzQ5Q%kywV`}A6bBNj!VHv?&y%1mj#P0E)r%<=A``G}q!`BBD;WT=IuV^vZUBD& zVo<<0{MqPDgms`33RH=k;%QFzHw-~D?d#b`6-oav&F~6^i!x;d8m5n?j)$zS(=ewS zb4jhgg8V^hirHfGvYgE3c{$^-=ABhgYuh~59NMD1)B0>U#h6mkxMzp2pU!Wmsxd34 z`5;N1mhNb#V55YbsCtpGBi?z`O^)h-F@9yok6+$l$FJw&{biahCy^h#Tlm2t$aRo$ zIu;e{U_W?wY;1aNn6b%l$NONo_rc6uX}D=3PPz#*ANVmKgw_lgLkBC&!=z{Ng9RB7 zG$SV`BkEWxUQ(LDMx0a+E(RAB!rPs)OmtoTB^)NSe6Z}fh~{1C)QPx4k|XeOgpatv z%m^q%_;@wO$AIBhC_XC^!|i*-@DB|@;wC!Q49(4hCO2_)8ghwovj8C0c)8FROI12` zR0d}KCbQ0efLYif&?ZH?M_RJ5lbVP8Q$g;r=%m9GKE@n!F37r)7YMJ^bm@@+{}XLv z`t+LTn8^%`ab)IVAhBznPC{T4mR74jDr9cmSV4UeGJ=<6&U6g;LBq=w;3YWE$>@+5 zg&Q!m{0|K+r;P?xZd3cL7{AI+LCxdGFH$L|<~bQZCjFWU9)T$jTCdhTyEV_==9+!Y zW&4?jYn~9Qmo}%<7!!vH11{R(A*-es1MeveUi=MArkMnB(kwIR+0DC?AZ*XxT*7%c zv7^v)?4hat7tID+{(t|zcA5i6DW=9GYce7_=ku= z3^Dy#j!+;*rU;s0Mkd1^t%$cr?qTiGp)2fBebgQugA4}Qqci`AJv#JN_Gq9Px-vMR zWccM8!!rEwk3#lc?U-#v)GHEIh;%S3D`x><(*X|v?d%#vG;k^@Xuq@>L(bIdHG zm}Qn2Wrnj~rwsd*;m^dzc#L(t$Sjv_lp`~6g{6qlx56wl!YtEmp?;20AX)huhJv9i z2)1w;whe-L+${dPKNy1f1&RyBkF#Ne0|Ce%ntfJ8U0r_75=ws@5s}L?3qT`*KD>~jGbA%eIp^O@s}; z(gdJToC%1a7$Oc3aVX%BAgZk-Y00d;4YH!JvX)H2h<35{Q{9+jm6Y_l8UBXF7N!61vg>VBm{zOm4PChkmC!HZ-(2w;rM7t1tT}aCW zS#U!&ykJ3u7)s|q#|)e*Fr7$~A*aC*>vR2u+{}RP_&zPyK3)l4#J)q2N4yDsrhs;0 zw*ljlJOWs!aQSUrCl>SKSj>#FIASo1w_T zIiAAL99zFblXYy!#->RuKIq`-A!}~WaxG6R-DDcuMzLv?))P@^GGay8Y<`xAc3_T} zt7k}1w)aEazfF=LnaQW||3TMBoxO+VeRma_+*kv0(mp&3JJ#@r#D5vLae?qE=5An`C`9b~hHt$pIaM zwi=k>H8L(<9-M*Yazixs7&`-t&d}d0ClbB~sbfH4?ls0fS~_vpEIAU(zcyKJpxq7z*Ad7_6wtsjOjZl$$|qXqdUL(LOw%XrxD} zSY#<{3TnxQA{kJl2@0y(NQTM~Y?cr#%+q_Y5}Ew5qq+`zIvTBwlBNy)0Q+tSbe(wh zT})zEzCDnGCHi}D%%(tY(b=F}$Q)=0#EjpDOKeU>pj!^cY1$`*V&n{^L>)YcO`9>? zFyX`7uf4kPf;i!l@8s+aJNeq7|-92Lu$MY ziW$190fufqVQZHXgki#91}h}YNni8;k53%nNuXM2uo-lKCsuL9PRf%Fls3Z9Pv*mC zbsd3{KiS%x3TqxK5ob@wQ5o3OcFD?*W3D(5$TX{ypsqRXmJw9WitYoqErbF1F0mt3=21jSfNhaE~PO?#60)$KmRUX1&D_;qJX1m63yKPn`Zl! zruktSCI60TwwtCI)$FL~ZrcuAM21_@b{U1`AKt?sYN?AkQ##?NSmDu-R*_=-Z~D2Zhi~ z4%(Po9%NZfLvPh4BU|Wb%-jpk^Jpw!>LgVkkI72QVavO&hleWTZCc zRA8aC(p%1R6!KA>mIvY+A0bLwj>1Z~ot27FLY`shs)hONY|e&w!$yPcO6nHijvSSt zdg}m$#^^H3KsZVuq(LTUm_a7ef%zkc;}vdT`=5}FdgiuU z9ITdnLK;ePf)!S;=Cfi9>f=W`pno)Gq3-{rPxiLuTmI+rDla4Zrf zA4ADl_CQWCERo8EO_ghxXd$0Xr4|Toz>+DvQgWNqXyc`3YstvQcQfuc5ZaVv3}K@A zAac_KdB;oM-(9rxdy~~HpF#UFg$4+{X^0MIgNr3nF(}2O=4fV&WRL~);vMP~y!ACP znoR_q!BUF`dy_%CIknM*Su{Krr}=N`7=SQDric86<{C~0VziS-8@+W{Nn!XSNr??E zprc*d9K**Pm=VWD!x}QI)PC&=7y~h-jt+{@X2!Lfg%HSI3jf_fVuvvVjkMk{zFgX>`I?N%*3zD;t|pn2sPE&gE59xlY%mxI)#z`m>vhe|AQie}f#&a$2jDa_N^oEa8y75oKMU0scRJj<6JX^YUHuIiMk>Qbs*ArSG! z3(E^UM8c0zuSr6YK>|v6=veDnpRS~X3SB`2wsUA2PU4svOu0b=_9t{gTf>NZb)r@I zqzDxz4M2oYf@0SZEc+%nLBSf6x_V5Gry?Es)ARN~m>GR}cDB)%G$z- zu8(<*o;a8!eUpM_KSL#R{B;}422I;j#)ui&o| z0AGqU+!lgLT%o0rgT7_}Cpbr6+Gd`;qyFFu;RX&{1v}N+X+w9joj-_qq9kXuq^buk zcfBsZg_B(6MxqiPd8&%Fwf@oR8+nSQzN%loyb0GEoOivR*pqlc{ajajbk|$1cJ-jO z@ngwiX;iW%(U<%-eOVM+=)>A$N@z7w9+XLtQkzNzV~{7EZ!A}Iq& zXONVPq?6$v)-E?_o^u)H+JbYwG`{-jOQ=!MlTM;joMtngf)Lb0>1Jazb}xb7Y3|pc zBi0^Ug-;8-NM_b!uc}Mb0=x0d%Wj3}u$?Bt1joO3O{Mzm0ZbuN0HIG`g5DO*9Usf>f}iIsF+Ulau?*`EXmFVBx)mQ$8f6p$4f z37%#=lurp8kPv*@<3oNhXh7w*)+OrGy`cAa-z$VQ_i%Xye>7JJ5H$UtiYTd-gpRmW z{!O30IG)48NRA^QqX+q)j_2^YSY{P6^*ut^f1w&ewrb-Q6gsxFQJ;7R>Fh}YVW%7~ z&-?o2>W;uJyn!-F?OP__#103Mx>~((n|y7-GnBP{j4nV_p5S=d$$qC^T&8@)+Hysr z7T5_8weJSUmU4=K@23)@9qMen)ZMx+Cx$=JkerqPb;4IHI+; zAeRa4VL_@VXvHc^L@Or6;A#by0WwR8<+_pU-x@EoKi@(Gh$?PCrh&39)yrQ(Mm2jA zjbx;G`E!&KZ1RvQdeH@V`{XF`pI|CKNEsiGVLpOf|JwL!*T*tnq@sJMkMKE2g*PSG z^73hT3pOS0LVHvfwpSa;jxAxKkXIw~mHQ1XGD;iy=p)sFtaOs8SCB&(k)%ft_z#Ecbon`knDb)mY{}%DgJuVs>hO2>!d5-!@6K z12)(=0_k9@ZY+P~1~3le(2K4HwOYU8_%BGMhSjC}Zi+U?5<%VozAZ5d?m}*^P-sJ= zg4QKnzXG>)*@Lvx5yO~#CB|O~ISWa0sDz=H2FALS0s7f-W0bN3fE=Xd-;CkeMtFpl z2j?yMYu7c@KteUT=0G{IMyezq?fOJ?P%MJKkB2V$aOqvEQL^qFR@G@VJLS?3;KDek zdP$d86@Db&2W>SJz+lk8>GP9m_3|6wO(QrS2yH09*2Zoipb6a6s-Wo5W-s&d=OK*h z$QuBAgt3&9__f!=n%p-*lFqvq*wJ)KMpd1)irW1z$e~PrC>x!jtbci}>y4%S`CeT=(xy*8gwYv65~Jz_{aD>N?#_g^Sm187 zqX4>c7o&pYchz+LC!H46%R4NY(-E@BfuO66aSU!O$I_eL>%qlIDL#(imrni?U8o?+ zV(3y^N0h6f5njF$<<6g~zBW|tru+^|Hn4U51_~uW#WgUL#QzVHA{f6r7$dwXY{}$% z0Mn67;PKTVlod`RzvzA_J4Qm;K`+;Ue0urQk+$BX?q6eIe6*KT!ctUYDYu8;g{u8~??aFF^msL;hc_eZXr0aP{1+|+bw9fSpcFA zP)3_lcsEF?u7O}g2Wsq|3`cl}^M4@IG&_A}*ywY-l|H9S^jXvozi{=|jLCRey)`XM ze2woDiAm?g*Q6ftHMJXGPd}EF4G`v$cBG4M>yAu(2R*hOIrJXrggx&_S^-cC4uWi_ z%pK`?>qxTUbA(k2btKtEuIbQffm0~5eHYBC7C1wrK}Lwwe+ht~L>JL}s^J-D973Xh z1{w}$?C_`-5rBl5jfKBUFn+?VXB!xzjDD@sC8-L}Z2kSm8R2Rj;vHt#v0<>3c|{rPl!RAW! zf-YaHUbrleWvy!G1a`djVp3~oa-#Lg&I33ZleG6RdTX!Snk}c-B~(kn@nXTCt9_!Les?eIEy1&khR98^nFOM+g6sB7{Ch4Gc`O;cb#z=v+ZZEcz zG5ZE@x(TudBc*G=Mya2|M57ARHoS-#;8iRw@8{@!rE6jI-kc9O+Qn3ul>akijwSA+ z`8Gav4&gz(%hu~&o1mntrE3#Vi6xxMaC;ywgP=@faOs_GcgxA@Bbe{z=<}@`MzYb( z3A)AcQYdV990-+r`Df^c)tE`>O5%v*Ha*$sM&%W>Q2jm+r(uXGvAb#GQoo#vy}XiQ zwOkjzn;%Dxnk|JVgUJ?&y>$f34=NI-3Noufmm%%h(4b=MW2Da;#{@`^4vAeDZI>2EhE~@=R20Mj(D`$E0=tE@VqMLKPs_SY5I9OVawYsbIX= z?pA7jTthvvW2pKOwkr1eXrD z&Izp-46O^APzQV6ISq~gt(v=f3okpGC_K?}wd;ts=L}K2r&E0H#%J@B)Id!q98CqF zs6^X;2(JYK%(3-GBn9Vm&RFuW!*SrC<3NKOhCuCf;5cH)aiFPn1zzh?TKlZkT3{Q> z6}CFQ_d5DEF1#sOiyOLvBr8<+1irLALRfo*5cdf2?Ga+#L*nat0>w~=%CqIWRi23T zNN$rSm6pmGcyk04WUE1fw{_hgeYSShM4v5P<#=usFw~>F=0vj+y6(ht!^K`Eq5$MZY|+;o=%Ov*F^yjzA;Q4Spm%b*&?? zS!A3|$xCgv?m!X!@MK?{_qH(f5OnrjO}caWuV8-y0lF$LV{Cqv;5~ zwLPQ{>hp*3iJ1}gE3f0FgI;be6=t|4AnbxXkp-!@1%<-#U&8BeNimg>0?)s~z%&42 zD8fg4jb-hdITL??W=G+_E)sLVbN7STXsT!mf+u3TIvXFMS!K@V0K4< zv=OBwL-h^0xr6)9A$hL^MB4tdc+>(<hBH9=3;ZKw!WK1F(0VLMjGORa@(%F_(?NP``( zN?MSpm(zcgd+>N)920+r!=xF8;3GV4-yP-G%ioy`jp;g!WVLUtlLlkV2}+WB>6tGHNbnglDVQZ^9oc% z-Y2c%7{#(>`)U>-let<;#sDlHwd9y!x>`xV!sfV*Dqt}sCKArKN)1HnPeCe6WEEDm z&DQlMUX;-d7r&`|!%!!@OW~>lp<0`gHSyiJpX|a87p7#0TI+9 zR6$V!9?c`kKr19#Ztj0frGf5t=3PQ1G&qP|(PC6Kxn00ymv0*=5U!rW%e7zt#sC;1zCAzRC*bNcf#6sltXhSBtDW(B;{EQB=%Oi}oni|f;G{Ahx4UfbIjL}9;w$Xlo zm6#Z^bDtsJbDyDBHJILMS8igL0;e}!A3ucb%D$HuV}h&hKLbczwg&XgAF=&33b7y+ z4hk)SL8N@X5TJ%y*{bEq#*-brY7YF51HbnkwLO8KaHFlr=qlMPNXfVjZL9$#h&TfLSng3;!{gPUAUm9{ z3w#EZxL)kP2*jX4+IXu;CuSI;`Qxa~zK54yNiCTYNgjiM7V(@%S47I?{$^%RBs%^Y+z}^FI8)ivN+{ zl$>MnzYPCDAPHDfIx?9XG2Y9GFtU@4Xr0gZezpfTg+x!N6HO;5tbj zgitZ6;mw%q1_ODZ8xb{QzH6$x5U2K}aQ2@e^Pm~N>3;J4R&RZ>PkaTt#n&^`s;jpK z4vDYlNoQ7X{lz|fJ^h$aVCKPjAFCETholZsA5F&%tIp>48^a$R$_o-*h#nwC5ZH}R zV+M}RzJ12DJ1C~;m{rrn8@l1dqMqGk`sOstMlOw(A;{1wQ-h2UQLBy% zZQP$pW2}-J)23hS;fAIl z+=U3mK1j!P1OxYztvhJNl(izTYAm|$rLk|4SVlFF`j2A9g1c~qK;;boKD-G~WL@YTm_$HD~l`1pfx1$=xaTHeRM zdlfx*0NBSTjHJ(>i!PpNwtzA13_GY**(mh(1pT<$ZY@;o>$)RL!D`V8+{G=)-|tzMaUW7{_8?l|S^PH9 zzdqfDWF+7+hm%^(8Lj@5`k58ag_qXd!z~maO_BeCmznz4s2Kkg(N--*f7`%ENf8tU zHD{Eh0?#RV6yd2si1C!b%4&{1+@H zolPb{XAGcI02ndZY%rtNBM5eLhv1sVAc!Ns2;v~E*$)+L`PvhMH;$1*WPzVYm#zs*eegLg|RCEp81XN}#w7=$`i7uGxR{O@T z`;^*;SzlX&r0D8(Kaj-POj0_;d}-c+z5b`Gwf$DqS$N6Ov<84!nF=5PXRKqV7zr{Z zK%Zjk*q?%u#>@TqbTr)wAb;j8XkR)U?N|M1ZJh8LMMIfbMcNA}u_Aro$H?+ktlsg{ zm#O#Bvh;5+!Q%kt31V%!!pHwBQcku<%uX)mdOrRo!YOXC5`Bx0_uwUH_2d8_JDmGw zUE=Wz{=I0e-1jTIJQ6KG;i|w9HIS)-I`7>QR7YvFZwa+&PnK|H8}rb!VSHPCmq{OsxbdC16UWa zKuOW6eW;$*J1L}FcuCGG`~qNkF|fByFxuf}Zs*Yyt|^_35THKmp%La*pKx-}Itu}P zUCF|p8e`1y>XkSkjV(Fpkgu<>ZQ~s5zS)o}_W$Uf&ak)zpn~u0B91BUHIeeo{Xu3X zi)JP}?W zU~xD_gm7Qim!qJ%+KSj~Eq?FBtcR*W+z`KZf;9%II((atZ-mf9i&2<)0s_^N8`Y-! z_&un|%V(4VPAuS29F7LVbpKki%lBaO4vr;ZOIH0E#OHAbHntYk_q%%05{1(xm{~_q zMJ3xiU&Y#ibyq>YT+5_hw_TNeU?YI;QeEvjF-NQH7a+{KiC<-k`1eI6ZISgY zjFYgXxJUqng4uk$L<9tVp${ z^waY%sZT(;BB;@oC7|WsC5!~{9sv{XqXbE~_Y&?5!X2VGu#P3OCqrnz3|@hyO0y62 zVy%`M;vQ&Ky86m4!pC>g6B?_gjCDOiP~co$~OgNgdT z*O)}jF^IDJPZ2E|lGRmb4SE8-s0?NxlfMQMOltfFHC?-iyBaKsV;4Gx(NXFpxAGny zlIX#~>eGWImy0kEZGI>z{3>46Pc93ZmqUZapzY%s!d3YXkX~KgxZ3{3L5vFv?Y(VQ zd8B&88Z5?=#q#h}tf7L2>?*zlZADhet|vVO3!|2u)x*~{F0|X=_k>3@9+41V({S!= zQzq6Ru$Tx%AI$Y!sD3h`^^;^~O(FfZA%caOypo{Zj^c9~FKk1Bjc+bTe{18f zKyVF3VE{qQxk{|2#owbfb9|A6ie z=~0ZRI-IJuXJc%5E)TyIW7-9nb+s?Oeyke8c9J~+Mng1~8t?$Y%616nVMLKw3Bh?` z>$(X=qQcC^6?O{b=C*=Sf#~0-p}HD4-c)uQs*9Axg;YR!A-#T#Sw;}K@=9?295fHZ zi49v?{tJ)Qy-6fkOw8*net2tc3}B_=QY|~4MxY-VP77u|+X)c&KHX4hKY#p&!y|vE zrBOQ4NWQVT4e|O{9C>DM7mB>Qx*3y)^}nH;k!sJ z@N_CE5bJ+q%3T1Hnd0R?cA*XEdY*puk_{_pmqwBeuqxNGdsk>>C$*9lNLOaEdsk{@ z$2v+@ZUq`jnZnXKAx^FA3`;wUheYvOPW=K5u4p7x5@&=LxzdJ%xGV>hMN>*Zd{XHNw zx=r*qeZ)`NV80~<0L8>Fk-(Cl!;qq`>Xy`^T@VxuELZCNyWoIgb2MbdP6bXony>(l z({ePU^FN0y+|)%e-HV`@O+SNF+zRS{f--gx5*#SQdxLo29erOZ-uFh{cZBc+m3R6V z7#LAz$3CQOrw`n{U`%QXTji31G=i090Rr1DD7TMhD7Zp#3XJn)B1Rq;EIU(t*%A#D`yF zZvsdjRX4TTbsDg9g9{VRpJEqWC(a{|adE^$N$SC>aH4uJZ#51wv?k02=}Cn(wsjx6 zLiCl6pgaE^>a3esjdRnVcl|4R+G_l6R2Q~uT2`~GQEauAf>*3-6<%2PXIBU}B}TVl zsP*aaB5g`4w(lfkl9d`xqOHCZ5oSHzhjzYVwM!Vfa>`Y{z=l&JUB!4wCG^-lK z%-vvSrC=t3pTY%b5oYS5%y?|8ao3ZO5W>hF+ws0qv-QYRXtj4&tN2NxWVD6ZM!Clgeo{?-62XrvghoF|O6ZA^6#jX1cpp&d#Av1M-O)-t zNXFf8zHWI7rdY%Yy#&4h$O3f}5UY5u6|3W7aNbNw%-r_#IcUg&OZU4QhJ91a_1JhHu4 zvdJkOo^z7>N7(s#4g%=Wjj=o9DX@72S5i<6mKbQmjVt)Vo?XP9v3VH2GcImH3hMz! z*Xq+xq6Zs(BQb3PY$bs9+P3Yq3zX(IW3i-rCJKo-aGKa3x}ES*{wVmK%_yX%i5j|W zlPSLGUqTY%@QM94xQj**9VVosc$pXP>S`Ne4<*{BbZyhx_AQ5@4s+YL+=E^_x1-qa zd>#|IH2x_t3DcuLn zUimHvZOFZ{_(eDz+#+Q#H_OsiS(tT1BSzwEbG54%H8r57k1AhaFaXU;WXvPe`sSkXx;vA>~ocRMs2(WmH@wUr&n`XTI)Oed=yggyOxsA6i z#@jsOZG-VvYP{7MZ_A3PnW&O#N`Salkd(wgu*nZUPkx6Eo)}ZVSRlIZp5(|sOZo~9OecKBtZ&znYw14LG##Z z(PxHeO6sQ@(2P-CA0d8tj=BhW6IJo5O=svv@OCWB!K}2w1d2JuJP5H0Q-*x{-f@h& z(YyXB;zjhncl|lyMQpZyS1lq4%si-u9n|UMv1$@FrvOHS1&ct7wzaeebo^EO$AAvp!}f;u;3d&O>hfGXDu`m zDOSsRV6c?m(HX{wHwYx;=8IFApCJr~Td}bm@eku_8-&ZmbWt-6#eIU&YCXT9JigJB3K^U z>kcKs60{ou+bqAo>kcPCLZ1s9$xJiP7?`q%iX zHaImm!Q6LP8+D3RZhU1q+@B)nF<2m+XZSr9;bG$F$V(NPq!&9up^ZO)+-4NXmJ%Po z7i$aEK{?sdl8jq&{#<7*sp1T_kvfG|G!L;*NaJ+_Lq*u-B4))a8m-R62EAeDJh3_K>~jXv1oM?Q6qusjwCC{q|pW^&X}mGx(}=D4|@8%6&1nybDZ`K!jQn+7opZ!>+i;WyVz;Feh%wv{Ujl1 zbs#W)r%Grk*z&SussE|gne*Uvp2}0?|A;lF`C$w{f`5c?@?0pdj;SSJ8 z)sVY9&}(2o_UV-4r9nJp8=y8eD~l|J=^Vt*f_t`dzPi zwNrfe7(CEai~^ftaYOxU`Vf*nMoh%{86wny6yQ z?H(OVN3^0Y1^*ROlFM=$0u_mGx$OD;Tl>*QxEiR~X1p(@cMlG#SXVm&<7jLvbK(MA zt)ibTrOP?BvTpU#WqCO^o&~M=apWzy{BR4x96fa6qz@e=oxR7WAzF<}EjZZc-dsY1 z(J9obyxCBXU2!=yI>eJeyO4+kpCI8beu~~b_>pw+D>F2e!(aFa;th=j-&p_cPUU8` zXw7mMDLLCu-@HN`38g@S1FIo*7F-BL>EeD)`dtiu@^%`o?FCEh@>PCAC~vdF{9PlN zmG$AL)(2CyXb@F%1XVrsBhT;gI+Xkk4KoE5c1P2_crekv&Kr@{H4Z68+<>=Zoq{GV z4(x&f6$_VvAl6z{fLkQ6*b;o@aWGfdvF@|RR`Jxj-ij>DyunQh^V*C^XxHBWg&&kg zoOcE0g(0{2MJ4qjmN8Bt2d1Qg;YTMIu0W7Uy4PqJN9Lx6u1_MSBuV{3s}eM-}a+_Y~9*LL~j6m321#M76eQCD!)AU^%_i zu2?F}gz1RxrKZPFBTk=r`LmFIHCEneWeW0$oE5}DS+PS$UDYQ>hl;9K7yilp+ux!R zoE(+Y0&Vh$^T&43F}?6AxR0<78Kqu^lB`YkLEYxCR*c6AM0T6h3`g?Jy_OXE^JxGJWzp>032gX z#-S)Ugq(>o)#0~Tdu$07o*g{0;JiF*L-v={2`h108oOiC{X1#S{B2AY)Yo;fwF_%P zSRK8rWbyr2a>cm9e~NFDhBo$g*LE}$db6!ic&+QM;ZK@y-;KiY@pud$XS5<4oFR@* zVLBmbU^woy;C8F}u|;n8@;kt*F;7nE1#uQRYrs~?_t3Ip1Irowz(sf*&y3ZOZB%NI z9GU;(Oc*-%8CKcJKf)Fou^#>aRbkA6_MXKa04`xwFSd2dYyfy>T3{NcciMj1qO0xC z!zUdJrgP1|M9>UEp1@yt7g_oI2lz4r!_)9c?i>S%A@Iu;!7RgfPBfOiTNdQ!Bpf+* zL3<_#IGcmB@QE!i@Lw)iu#39Pd0yP5JD!&jF39_i82Wb*RqPrM+`aSianjL2n+CEb1SJaQYmlc>c|bAeb%) z3116O*Z}hKzPuRB1Arm-wJs@Gb`Hye!5|?j$59NDiCG#yTuA&1<6MLSxIb5L>xE%B z=Vbw6ib)WivCE9sJyQY3MAa-v+LG9+1xR-a_K=tyTYE8|R`(PC@Jio+W=3(+Is6#X zcF(!A0f>Js3K9~FW9u%w=mEm73+!DgFwL;QyG>B8cf9O!9Z@es(yeM+f+~nf(Do32 zT99fs0T<~ajcd0;$g2y5BpreIRF6QKVA3hyjBUnVP2}@s1Awyx9mJnO4a`-6sL%1} z1t?>e4f$+T3$A@3nC8WfX>61>&ynBt8MMiDgj6%1RC7CC8}^gV;P?p<>Im$lUMn=M zpbWb8B_P=AuHIas2*E%pfC|f;>u+osGk3Q33^iKA#Z=q~Af$q8AKk^xPIqzRWgRNC z?j6=+6v^!&c~1s3+E5@Fx*6wEbpp;JNH1)6Y%QcTTvkJxSO|T8bPd?4v8m5fhXCyc<)pGido2+^*YWb0#19kSH0W1B|2399)T(u9OIK@|Ot6*MZrMX9 zjL+4YGqJsKKP6ly&i4MZoY9>xgE_m8(&9NQA zY!$L6g|feVl|^WM;+w=8Hmeg;!?Lpz25nu))$8;5E7RbJ27B<^I_1G&DbVJ&iUVw3 z*6Q{7yS^k#Bzop4oce6~53?7ERs|dF-eA*oDm+xv%J#%P1X%dt=GVixS-hV{OQG6G zS;hpTMiU$TRy6cTh$B1;v`|S5v$%+alt7=BAL;nm(jv4)eV()zR*>|4AbwShA(FC2 z-7jF|sdY)U1)>Wo>Ad1tWH{wZ@u=m6XPMn|IbN&7w@0iE8FM%MSkW*I`PYcKP!1m> z$|D4T1wuTk*X6-&WAI*@NjTB0l2q-dv^>gCYl-iK2Z{raEV*- z2!8b?5!U=N45qxIbV3;g;!{;0g?uA?whYt!IpFj ztmVDR`QVoEcs+nKG)S`{ZJ}~r%w#bQZ|u&(03UObDsaOOhePGXDk*+g3mxfIDo3MW zKe%#*nwyenJT^oN%QE@nO}&$Yxi^NyR=z{U&gJDtZ%!xZlYu@ z4vB7FBgt2@hy7wPESq18{)5FZ{s#cJVHxUuh}P(V5BoLcY~gfqC&isuj=Kg?mW^mf zu_ATZSdsGaAO8~Nw-b<7;%5RH#Q++=o(Rp5!ry1gSyb?!SR^$2BBoo2I#tl^LBGZP zSR3Di7?XPWvT|KV5uCA`5r@lcLU~0!cwF~Mqs}q*IGSWYHtIAEIhy=E9F~IY*NZ zDZ&4Ty|;mns<;>a&t^AaA%R^rYSbvH#EM31G^m6H4Z?<~ECxdoq6S1r#K_wXyS!LJ zk{+U2j%#Uad+DQXZH3lWZ%c1g@I4_k2}m)#)PkT!Buq6g$sw+H}D<&rX#pC zCAZjgJuGvkuI6Kk+)F4F_+;&fHQQZl007PPVm>ovd-#`x2Njb}F^2C5#XPt@I~eE; z{kBjBDR3l`wKm_zB)h`(;!R>1gf8n`TQ{CW=VZ^tlxCaa>0NfzsBxkUDP-Ud1`gSO zz14~6BextKsSX=$)U9oj2;ggqZ&Z~OoRospKqxqwg6^s`uB{AaBkuv_?Y6+D#^>gr zI4_2uXHwQpwO{PW^E5B(mf}~7%4s&89-4H?OD8F<&gsm%HE_b1LdjJQoP6MhP;TW zQYHw}t{J{|YFc_@WA-m3A#5cG2Ce~Nr3r>kiWteJvK?}oY>8YZoWG3vFRkVlnYz4XK7p>Hb?S{c^omXn+MVV~7TtbU z$JteXHA@(~vbIDaJX0%H25X@fF&F8nQUDPaukpwx5?QA0a952-whVp{@yPy^rh$jh zY^>Tk**R+U-|QVjA4A8t$1>{QgjzogFpEF8U}x4Dpy++%Pn0705LCq2!YtK5_HT_& zf>ce$_`j`M&^Fs<$0|l;5W;!*RqB;VpeWi;4b4~=`xYAlKUr;sW|fNSh&|n-3TxuYoK6t>gz>QS|AetJS{LQ6mpVyx z|C$N5eNmFk(PS(u3$5-S+gfXE&oYKk`(!GCRE1qK<<9QI)Y25kK=iR+5UsbVp>8WN z-<8Kx#u(l-wlb83;xQ#gwx`EGx)kzFl}vTkz>7-Ej|u8GX=R9IoK#{Jn6O$ZAZ)bF zQZi3U#Ba3Vom)*7;F@>ogDz_U&R@dLZ8ZyUx>+gFOBTdd;qNn1WEH-LH$-Hnh!sMg0kpKZGWV`FKZGb4zIA$^Ot^ z`$K)PP>dDf7SK)ssL^#pF8VCbm&=ATG>m3KFby8hH?0S|?u;tUw%TRqm{-7AwWLk| zAPO|C5qLOhvcb6Pc^@-@UZ9O0FWS|i+WsdiGE zAYduSwPrl=@jPn%<5sVtQgp^czSQYO!Sa;o686pafMs|w6@%WchAMdlRns^9uLW(9 zm#pKd-un=iSV=+bZ_QHizjQtPAigvu&1#C0OjeyLvKWK(%D*SeX1{@DwqwXwNM~LB zJK228{bOB5u$?NqHajL>rq#(FL|EIgomgxuC51YbBCC+p;~c9Jm{h6BO@Yx2s+({M zg65wZ`w2PmyNs5edBnFHt>W8vN2U-KL+CRyQzXys@a}`VkM7=|yghKd=X0ZrTv*p4 z#ohCfeRuT;5BZimt6d)QE*m;6i-e1?)1GsXkdshK&pVj?ctC+wLJ&)5A6Pwtlf=6 z^fn~lZGmnG)}2m!vv_X29r|H=b2!1D^!c+CJj}{>RPs?RBx@#TI;>gR{f3*_r;q>3 z^UP0M;Np3 z#<&65=$PM2v2oQTunNr#o81a zqbi(x3HH(3A`7e1%qI^Dw(IqLiJ{FEZ^$g;&>;;ftQuy{Bv^(hYwjh1EY%n6lr71T z!1<+S77Z#hC-uJ+EI$%S4&D?&tj#S+@%;%~D0Ul1%w+1?LaA3UBVwlx8degrS_U4M z#buNva;$MyonP)OKMi$vNlMx zP!-WdYG+F!5yFdXI)sCUYOsD+-MgWH0qBo89yj{({ zQ>~(drk7P-)yetK&|-^s{Zqz7E7Xr+w!Ks>L)UtHVOaNbr{P>Pe3EHC&TU>v+qsv5 z-kCvLua-EBWJ!wPJAIoFZN?dSna$?No(>2|v9TY_K|?0m zI0H=a*bCAZXyRgONMC{Y$Aw4%IL*VC$~NdFD0s4H1QPWT5M`oCv3*$FhT<UWF! z-N&zaDI|s5AIYnME6q1wiSOslMFhwG=y~GBmf|M-xGlvmkfvp2+~eAO9wrWdB-X2g zKRTv<#khI!`DfwLk0#zt|tPg?~l3UgfC+K*LY)IP^#IN_ZW?N?jQ{Y;#z>Z`Ae$Uz56U zo(L}KF9l|z z#w`3x60J^hhkw)`&Io^pFjkiI-WviVEA`b0V)n4r5qq7!ioISXuk_|vdBpG`c{WP_ zMQa&8>l3JEkO#|$6I1}xhhtO#+lN^yfbqjiRRHUU7pMSs_{5T*zENO=P8Be|GxUN0 zTU*0Eeq}pmj_9Kw{>(X6fIzGmUc=7XwWf(*WySC!a`{&)3x)ti8P1v2;%fL1Y@&+= zLjf@<$bxLE7xMJiqQASvd7OHS z$-{1TmeNVDlfku_-I61xJ3n5%7o_WBn5f}N!v0$t8`|+P3ePW`8Sz>hw)3k+H$6w0 zA(dVT1y?ed*Q05!i;1q4uHXw>h>8s1(hW(oas(SxU%w!243DD@NMXijiCQ%ZMAItA z>Q#YmWeri@@t+MdX#hCFf8j)=Znv<3{9*Tl`%wt zWKn3t7@`El7^3usKx6m|85@O@@~lsQAK}i)2ja#MH<8g8Vw5`cHfLCjI0nuJSKS|& zZ$YLM6S*f>L8(|n6nJ~(X(DqK=&kk`FGy6}9OCbHvotB}jyXg@_4G9Cvw@Mo9O8(e zdKGzNl@X(Kgvb{Y$7_UvLbRN zaB5XXd()2`wa!- zhN|-^SUHZ4pX7zo!rRSfIl6&~vEN4o_itxnu9T3~80(AXzhL6fu4b9+W;aDH#|$%h zFjx{*!xwLtHJw$1e#t8sP?WH?Dks(;|CPpT0wIx0zS>u}ll|1b(q9t{q^u}P!2Ilc zfi3x60Cdec_}iSOj;~Fc<*bW z;C>cFAzOPPkX-kY=1$+Nxu@Zt#r5JGTQv9WxFXW3;Izx3Fnu4Nm+Qt(qS}6+`ZBvV zVbojVa|io5>}Q*k`jgF%enWq}^EWx`NeLUtv`a~JLV%UFvENSMiO@ab`r8U-DhIAKed-ruVS}UaPRAx?0}3Nf74ZL+eJ8sx8l$PJM#l|7Sr%i2@)Nh^WS&Je$}A&0>6@lR ze)?5Ph>co^xuub`Otiu|;g(9_16R|rXRrq;-u60%(z11cagkVQ%V}B}T{DN;jj(Zfx4JqzbI6rOyZXV8< z{MeD;I8(|- z4`cTBmUYtN!C|ZQu^8%jN{`ST@w_4bwSA#gxqY!Q$Q&4h;eY*nV;|q0+QwI+JqPIN zzE-Tcaz|xsOioy1k|kqOND?_D^SXNp!&7!Yhg+L(AGN!2ie3L$_1-6{_x^QI(Necq zo`JFYI6?nJjY8v~oa+YVqXo1uHfA5&^-pAEUEeBUIT-W?WouLj69H~FE)AD~8;#4x zO~TRF>GX9vej0uneky({z8hcCQ}7`sKjy@D;ydsir;d%)NB2pjdOlt>?18pOZ6?e+m#R+PxE@yLnLjBlx;qMA>>i!TjFh(^(oF9`QgUo--hjD5# zFj5G?z{o*t5-i8H$dSWX`siBgY)nbY<1$AqR(#IR<}5UP%#+ijmdM*BgiTZDG&lO8o-vZ+YE4Xe2m3(2&%W8IeTXIeCqM0EOnXn>V1psUEbpQ zjSrdrPhkey@}XUw>|B0M2|5k2qK;e3^L6@!$I-=td01jT1yxQc)_W9i2xBQmK_3n} z=VM82Hi?L@T1rQb=%Yl&hN_LWAmRSm?_#y~^T`MSEnG=6<) z9_zXFd8CO>b}oCf#5_x$&3}QL8n1|Sy!j*%19z)V6=o}E)x+kRQ{u;1@$d$ASUoIk zD5tQYe!iYV--}#Vp5dZVyR^s<>ugxz_-JHYQgH}+5SFUJ4f^=(s6RVy2=wBtH~sEg z{mxqh=M+^Pk2s5}{t~elRdq+tO_NR=qNgOWC5W7Beh;G|*2c+vf?!b8ITfVEafE13 zq?xs(=^2_iuRptjt3e`#7n*m+^5pgBF+beM7VwWsb0Q{JD3{Q5QfDXoygwKYOg+Q9 zaaOPwc@YBwvfPW#uF~EeP~44~I)kS(%Ne*Hp2@C{WWeCW@O;5(IAzT&9XH>nWIaQZ$BO>%2I&-dGRvt$3mU&QPCl{@QP=^-%<1xxp~*IR_bJ|u z6Wa9&g}=7BPokxG4V$)~%7aLs4B5iwTth=e6LlA1q&kt2L2U-m1`T82)2 zu2{u#kG(`h$An31nR!AF9tN*co#`?!`2n4#c*lWDtV~I+7e`=LX|QM+pci>lRDE18 zCKZ~`!s1ahvlt z+#dBxb;j6PHW)8;^1fmlR|3B=?rZoi!sgfw0$NvE>HTtUz)jdgvY1}wOHIPRpy(>w zsb6z7j3ZOzWd(*ZMT7xNR`ZVv>&011imfx9JGmWM7!U917}aiUyG-kX?A~5I%xErq z9PK?vX3N#Ghi>2kzxXsB#FHpavnJZ!)gxiN8#`_tn}(fU&zpg6eS6f{n$=w3*;-@E z3wqOn<-NJ(nSo?F8f7zXxAJBh*GuO}TSgZld6hamY-uj4q`O6G0^GQAKJ+}g&|ef!;BVDL)$c2q@hNk z6^hVV`SINH^64RSki!z&016y?UErTk5gH+zrjOn*`keoF7u=qQ_ZHUwy zqFv;|Li5gsuT~y9TLR`&zx3aX(iflTQuVj02bR3Fs3^BQBj6}1iXiUJe`1?hvKAbkJ|G6V`z6%=4NHx32q0tJA8oG5EokFSpc zptZ}#3?BRS98AAD_UEiQt^2TC=zlrnxS7kSi_CrRs||qkk1*2&0{9Z$h}o$$b$fdB z+!UaIUMn)4-SN&k*56rEzIBGqdXv){-K08;?jPJu5jFSH&(uwFnigHqx$K3IXErZp z9OMXkuJTjN;mUWLiONqk|H`MM%hJrhh<}6mv3krfKT>|C`JVDen{O-sDsz|ev&~lJ zk1=0Ye!BUh^2eILR{nVN=lJ@zyy&t#^9dC-+5DdJ3rs`#Q%zm@h2}SvKf_$A{F&y1 z%D=~)tNeS-yOlrBEK>e_^LFJgFefR0iRn?k-^@||3NuUjtISdOQiT`mm^9|O68qvB z2@X@iMhPmZpcfyN;BgTUdU2fu!zw6z3iCY`Tra`BD)^)X+g0!>3BIO+8zlIzD)@{9 zf1!d(bnZzNY?9dTsNgmUKCFW668xqLGFdfq2|-om4tcsyC5TL(S*n8jB{)?D4@q#M z3U*5H1{FLa!7LRtC77Xt$0T^J3htBOFcs{QV6;veeO!XaRj^lrVHFfMyZN393QgPG ztAcW2x!JCQBHC-dMo?8*2r=ewRDuX;nj2IwRf0cML6I~vA5+0}3F<1CA;A?Ym?^=9 zDmYq#_o?7j5-e50Yza2^SHuogfmB=QR(ApWj>9g0y0JCq zVDr%gzcYA2=vK#VSc>Sh`;!_km{<__;_jI(#{QmzdW$;?(W^U+y^y#_vrW7$@I`Y( z-k~JN?SbCA!o^XJ-@~HkI#~yv7QwN&5VP1*5D5&QX&&I@1$8tu$u>b|+;SHdfQ&jp z5(wALj0A$^&gL4YQ*;B^`Y7u)Tn@dTP7&7Y*=xPds)R;wZ)5q1R__;Lq&jDNV|j0@ z_k=c)l313Oq_U5c+nT3~Vmjqu&em)=A&{IwU%JP7kIVkBOXM_IB2!(Py?vv+DRni+ zl|)~cj&8+(c7%J-f-I*+xgE3A)gZS_l$g_n`1(rxip+16n0XQ*b{Q@$F~<<*bWsvJ zKAD+3b08^`n^=dGMKC$IHZL=?c6@?sjo`5o({8;S^;1yKj)8(Aga;RNkmoZMgc*aM zsDfU$URDMDdQd?>`$|FIJ*^-NR@C{+<=E*xUX>^!NrmQ{=u|5nv)?*dM9SsX=dRV+ z(P@qqXB$atr%pKD=rl&SUbIaNj);svlWW3p^fw-DlriH(;%}egsp(qPAt#SWhMw;@ zxnj66f(Nmho0Je4&IpL%%Ih4EdDZnnN_XM>hx+#mf_O?%?B`gXYEI)c93we=`p?m5 za$96FgQEM#mY4^aJ0%#@D+|jV9lzszRcIcA_+qih6Da{LkNkAtD7nxyDPONlhq7GB z70Jq07pKF~aynf93Q1_vDFgg*gZJl}`}kb!%gYIJxQGlFctB-Nir`4Mffrj!%ymDL z(ZgC}i8-DrF<4kxNI{W(iW~5*uG^q83-?@w2FqpJn&*vw8^$_Y+sUn7G>I#MRa=38{@j zNQt4}7I+#G$*o)ud{m@A&ma7~+99E3?oh4!w!kO)2QI9QG()Py;K_Nx^Ft_*)jDqF zwl^+=wflz(VK#rtt%07Im>X?*nX`|U)seMhy0JB$;k?H4RfcBslp+cOpO=M`>7T*k zay#XG<;xRv1E@)v_!@uF*m}6slp=KTcnjc~#V(Se7glxF#chC*b zx9EnGf9Euz^g?+gFq=SRvs61~q9#T-%xRiu3@1&iU+IuKa6X=%V%(XMJKc$;Sn!e7 zQZ)UQJXVxQax6e0DZ$&F!AXwbgDJ(+3ul&sd!8;<#9i+a4tz z>G`!uDyh}xdfJh>^kY`EZ5f!)7#Q+@tUM#C3QB>8p$hsmlrQ)^e&uxRTJPrHLsaU& z*82i;)Z=k_liYQp=px|>^pv{TJ4q#8O7kNhz`8zPtl!GD-omo@%C+94$ZRgEO5ld? zyOUeEJ|%v)_pTp-2x518Z&l&`yS?At#{6c*K`|mI!GXKIb@_yKw|7G9Zttu&xfq+P zTVj`cuW6xJQSdeb5oixr8! zLP#CPmny2f&rIq6ZZ5ZcC--+-WQfsnnb4I6uK89-xx}1^QklZ?g+Eoc{!U^szPoM> zEwlxa^^*yK^zOXLT$;|-<~*`i*}%`k4 zvNlmhOIQw!?7s9ZR+-nHaTE6w6u3{>#Pv0n|FzY7l1<#X=8ARFqXxQG!c@UPub5|_LqfB zGvRr*r5d=?>kJjVp`W;5`B_X~z(y%=w8)4JQr@ueU1>=Xq{!s$ejk_(>F>=Ge|Oi5 z8G`q|KJ3WaA^yujaihRYuvW+YxjJdwhszTZJ{s3XsD)7LxK1VlIug5cwvX%d4~4}a zjaDc0959;i7S89+=w+Ee{Fa8#H22e@rPP*K$L}}88lg3Wu2G>zLi1JVQ9`>-GOr`h zmMHh&{`FJIyq?g%lhBqZLR)vJklcKG@XuOIR^Ehy%Pny5`xDIvF-UpvaGaQ2gf$;5 zX@PL&85c7OSj35~XwV}5Gldsg1!8 zte4~GO#Rr{qWT)=D3*l4*;@`Df#XU2Y>=?kO-6dfek{Hn8u4$MbqWai_UAOKt3T41 z)wBsqZiY9VJ20SYV!TbSILgrU^eIf5oIrv1gqs9B!K3B9Oe}b;j`TfIUlbmPH{XeVDAs2;m1 zcrR1j#&Q8T2k4x+v zz-SOldrZ?9Xqlix3$!4girE$Of2Gl!cF=Kb0yhudZtaZAv0QCUHT_8MyXl#qxvp|# zV$n6G?RA!Z%yD3R=FCdHvli`xTK`^^IYU3vb)f0MjLfw6S7o~2$LJzlaRd%BVc7V` zzZY)Uv+|My>6u1KX8oshL0x?_Q@>X4(8!j`)zguyVyRaAek=YREs`o3dbUdLz?K8| zWTuH5U{YDDSeNkP=y$)mP8(#?0uZX1ND?XE-Ha9et1wK`YXOYOBWJSP^IE>rPboQ|eB5<0+pQ9R+n`v;AKfk6AS+TAMcRg1ZB@ zg0;i)ZfTU4yM@3#tDj>PtHFVf`RJjv_dC0{O?>DpcO*`qE*RWGid@?Rk;8oYe46LO z5MByb(x4RsOmPXJlQXrzf^d$V+~l$?C04qH5-k?jFJ(p8rkIK)81ahAjefn`Fi28Z zV(%$2e?$Q!$L@)c7oFz3*ea=@){2sgeP!W{0Wy3=*aPscxf#`53IA=o=Rn|6^Lvm4 zETN7Y3B@S;af=i(S-G@l*@0YN%4%**OpzU(-ZV7VD;N39lvgi}w3LqZrTH&0ic?{O z`BGdzX~K%vxT{5bx7Yrr(QMuzs|^>+-F&t2c_69PesyT6P0+>abJtD-({(kDFzVD$ zXlu3n#-yC4v0jwGn(W>bdl%gb7Q&ieBr)qfd%1J|JnUbhK6=-?(nTp?06&)nVa3gF zZ%y(VQ&MDTuR*c8U}aLz{?>fk)u>IZO8#NhyxBcbEk6OOUGFe?9;Tk{##Sxg(Vf`D z4#YOwpUO4n0aukhG|^T#-MpR=5{y6Jg;QJCY%U(UUd% zq${(Uxw*L8^%DY8P-vQMdLcuh66tT1WN)*#Pd7W&${^D}v2}&F^w_ z&#g(Vu?K5XS@*FdIm#SE!z}RPYAe9Y6oMWSgUaAZ_#)oNEa9^Kpi;dlxitwEq#MXO zNnRkUU6v$__#S6Gks%1Dz8pmrrfAd-E~DDvYQPjHX9ZWoT0taU#b}pKv+GSKr5UNA zSqXB#eWq#vx4rr=kni&m%Wj)kAc3wJ{yq}hb)KsOj@G2B^YxlEa%2O3C)+bS9V;61 zZB-RutP=BbM08}U>{?UI3zCmvIk~;=gU-6Rw@3N*^o zsAIgio`V-1qOVlhL_@%k*u-G* zu?RO{96L#WMTU^)S`v&_>`!BYB^3cIcf`eAY(_AKQ-?zQ8z_XuX}Qz0)upT`1dETe zA>`aZ6H>L+Q_-*(RorU~alPS#|6RdUCov8FcpATSj2BOx% zD-F?=U+;NezR$JWH7TpW5GkUv+hSe_6QHyz8}>9CkkgUvz;^Mg_*M3+;MQ3sr{dNE zM1SMBbxS?CHQStxhp^%TtVeSN8|d#TD}IUQ$zkSyr zL~Cy=H0vNpN|R#v6~=p-!mk`i-!iAMHjvnFvF@Y$`Z4Qi4FE-!R-HGy^wb7Ca<0{Y zZba>SU>IWIJ)BP80W>$lA~p8lMdXiUkAH?^*3s22`Iqo$IW@ zSn--BX^~RSB?X@St|y!I-o8~=d%USNquC-2TRUV5<^@hPPGLWRu76Uht^Usvft11;+u4ElJMTS9Ew7b-T zkSr`yJ@!6oL;ROhp+@DIZfdr678do`vZTiR@Xb{*knsFT*Q*5J-8i86mp zRQ%4Y`YQHYa%O>=Yh|;JR7@uSlu)6wj*H}OR_9^Ria%9vc22+3w4wW<2rwcVlG&Y< z;7{xx;`D#UdS+;lKzXwHkD$IoAi;l-BU}FkCUSz*3~j=llO}cgM^5nFftNNx*%80e z{FyLAo>~XUXyJWtAdK}LiP)kdRwtV}PtitslEV|)0EPF{nlV44fi-RpboI54IudKK z0k{+#jLmgyYneWIt4`h$(yJ$s>c5Xe;Oa!ra>uGf^CdoGv>JCfjWNv_^hOGMSth?8G<-&Q# zmM5;H;U<{foc4X`>_fJSZAh;hh;pIp4ik%vofI%1C2_iz6eK^n%_X;igf`Rkz|Q1#_odo0o|a6 zBR~=QQ!?DxNlT@2^{X9qJP7#TA>a>8&vM7Cgn9B)mZm`qF=nJWJUdoT^h`~2)_R15 zKea4tuhG;PD71Oq6sswomhdK>^hS%^UH=QKN3ixCoI<_#n^#FU zn1|>(gR6NPRZDlNrw*&7^*1S~zC~XRRF60EQzs~(9x*||^pFV(q%-xJotg+Hqb-#t z(pJ9)EQMzey$EyLm(c-b>VEUI`Hao=KL+sk1dAb~xrH{e!?i{PQN~VpauWans8^mH zXe3D!>M#=|Q8W%XTH!$DBZb@Gxqzey<)evg+@s6W%s_E$&+Rt*UI2KNI zm!!aSO@`1L0``)Koz>SgC@6ZPwIP7L&#DZPnJ-c#%)UJ0Q8|+u-=4zB(`o*NI_TR* zGbBThE;yH$`_Gk%8d!f5+iqa%7$a9|z6%3F-%>|d^G`9~;whw_%+zml(j0=CMv}Gc zU1=?XqvFz?11H!L^XGg7(kBPE2DO8#Nz-dn6)t{iIC~1KlLqwWH=jtNEzmR#25;}LfbWG$WxslSj4nJuI321-ZE|I#;uzf zi<<&pSBNOX`r4^jC|SNl&h_LphpJDhMZ~oxNQq|8V-&8I74sNDzyuqoo7B>g06dkk zIlTwT|BdR8l#L zw*m+~Yf`4KOMy_QOPBLkXoVY-R2-p0Q@U8%a-FVk3(>-J$8p!U>j}h&9IS&Tddk(v z!?2KtW;*2RnPbF^iY`kxFoqR4&Pr+i=!Ek_%QG*>;KoXjEm)@32H9g)=*S8882wGWJ zla47$2HiZ-EqyBY+_)Nkt*Q*~IXY5-mFrtiN=$9KSfLc-vs_o#qejlc!DecRk$1_@ zFn(eSca*-@Ycl0bV=ZYVfkaS+;FU}>=ij7uX;oZbDu;~}bEayvn~pH=r)*}3{>>C^ z+1I6pu7)TpS$y*M#>Am{tHk_?LO2=bcjaRW$Yk#_;)Up-YnlWz8K0V|L2#nl)(_sq zbM7{a)yvlYzzf;Tns4mEq9b2X>uiQ`mgi6Y3+uo5I@k-lj_y%!d-hfj>(0x-bn5r$ zknV|&O8AlR87woMI<*eeRADH>YTZM}Wk}tTDt!gGNfl84g{kSVAObZZp`%1+^$8JI(nkybn%GbqXYp4BDlD1ix4 zi=PU2p-8T8vG|QFg2n6*7#Wz1X70O)Zk0wmX3sL-Ehnznh}54D6dy=@N%lhIwB@7*aAoSO$h87oF=BfVg`eM zc4z;wT0i!8>UqxJsONcu>$xT6|5`o2m@f5=(o&hBI+8_y+adnr#5LiL;QDp4|DOJ~6pjo*f8Llb@K^M=CD-59-;R}WKbdCW zrs5{!#^c7|uEJ&F(D^-r&hLLwe_QoNR2togdmQ(SlpWU*{=cTbos!5`EdA|Q9jedb zV=`EO+f5QMl_w@Oxze;fyBhe=D)7L?Mp2(%G9B6uTRfJRPgyf8`Oee1!Rg{)Sko#*;h!^OgXHjLC*Is>U0B5n-NLQqY?eq&ORvA;RuP*z(@6i;W=JEbBdIMHDYb#4Cgb*f#*_QHi( z`#v!n>iGgHO^Y@j?#JjiqP2LLIeR=?17~v{RZ`0$BT~o}n2}rRTWnB3vybC`FN8oX_@TgQU%>(QGb@vlJkeV&0kLyTpH&x-VS9^@M`?8 zw4^vEn)B~)`LSYKbM6!`yn1)f{+@UA{TfR1sXwqI|A{z@>#RR5^mjzyrt*Xoyb_4P6h1gT~ z!N|QPJ(9C0E$flbX2>n*gegieO-P2Ow54}7wVIlkuGPHV3N7%f%vqTK?qiW z*vv%7+&|RpgB6S3ccS?@0j^hWg4|XZlO#rhI3;UdCRcct21gra3<|i!vJ3eq4$llb z`-0<^M2A%=_Ef@Z3BV=q-&u?u3_eH#qy&9CU7HJr6&VNM{?+k)U%OF|6ofHfkbv#Y z`VR%b>m$*d)wO%2K_8p`-uf?Xz)Ik93)B_k z5}utIZsb|7IHZ+?0$rh+BO5nvG$yojV!9(V#r8w}@JRbsG#5gpw)(>(nP$QAeVj;E zCf=s+=)5K5Z|JHTiK&>Z9eH~@gT9W2q?quncfYU6Dk6RYR8+aH=|d z9$93x{jh3e*{I#B==wiPxhoUz(BJBuA{EJci#sFs9u7@y=rVHcUtnCu$jzAg68m4LbuFiaEV9uVbUGZVMHZ=Y`&&g_s=L;Ew{W1o@T)1J8kqp-*v7xHA zp~?FhBX!cY)Gk(+uQlE(Sot0VOEo-S!#YWaKuFDSMrvSujNvm(R=?Khvb_5 zt2+J>NCukTVMc9D3{>XHu_!#ik3a(S12A}@exkex>H@nD%FcvfVX zej+1~NKEhoSrlbC{E2ta5$JyeLhYpT|6fC>hiJ1PRB8MFqY$c8`2W=i^#~38pNLSU zUY?8h^ZP#lqNLN%TL6P^aY$La3`w*`elaFMT8=nNJ=w>DvXhCgNeP``8hFz$IB9KBEs$81SQgptdc8?Ev-}qq6rkd1La1LQOZTqGrm6&P zSa?)6)R7H(#iLknFN-`uiNU}#6uRu$uNLR1azuVJKFfdU_^bVwjBD|~GJcZlv1=%7 zym$4mtLBZjxgPl%PgO~g;B8gOku_H3To2D?jr~elt~Kx?qT{flvQ!d_p9>3rg%3wA z9G_czpwBNE#*oQI(t=FFBrCb0qT0l`Xt7eyHn_MHEuy2tNx0DsI$$XuU=WLH$K+7{8+&;|pdRJ)b zwH@^*3R7W_4Yj)T!${&w(|HC!Bgx})UEc;AqgK+VVF;AbsPB2cb4T6Hn*X>697F@p z%hBC*V20E1KA8jI9GS}XH3$USy_<52p9=bTO%brN%DhDDWP=R76ItWTzmBh77lY!-^-!$Ek^M! zxi^gtlj9ro2-oIG!;G$+z^<3%_&93!sOI{QlFaSZ?+nxeW5W4 zoH-nxE;*PyPk9J8GDVj6`R$d_A-Z=%g1+#ngsAUHz2-@+_7x0oM!oB!zGnpbYS+~_ zCp1yfhV83wG-?htL|0@P0fdkD?XK9zRUO9L_U`1a=A$Dqu#>!1R3&5zlQ@Xe}g&h^Nxb%SY^3X&BNLs{2Kt?TR zyU=oSx{aE~WbdPuL04sP$}q$GcyM__ur#S(rf_4fEL6~g$EHFz#{ChObgs>PJ5I;_ zGp-AF5I6HYo7;!$BOGHZ`3KfEOd7xhDt5ml(_&OJguHa1jElcYMs*;${FGK2EPt}i z+aXl8Ht#;m+rM+?mp8MnNR|Cbt&phGE4{Ue)s9|ff znbsU}h8&X~Z1RQHI8*-p)nm=Q^rk>r(AVjDV}Be6_8bIn(KF zaB!t-iy%bZyjSw9M=E}e4oK+U^)rk&o4>T{9}ID=xu2K^x2M>B>$w8h_o^DJ%3Npl zSzH%hvu)!>P&OE_HRyen3tW6#pqdGN%-1UvHDh;9@zK{6_3W^Waj^Iqqxk5kw@2*? zjXBG;`J_q$k-79=@D;F}OaC!}*DVZq()GwXd9pCz$>nZ#K>-sHL}VGmdl>&15}eZG zg~4wj!6SkMQ6*JK@M!osa#3vHoGCqd77`qqyTlQ2W4O+-C%(E4=*DPpngFvHR zvjKfMh4zwk?>f-lfEJUY_e1Ol{(!=+Cmu*CwbF4rU1%aa9IUCVD*7oMWC8qSs6 zhWE4NnrFbmoeW3Ndzk(YdOxZR)*Mw<6lq3xWp3aZaPc5KjG#z(4mAhxnC}u~xo&pQC*0RhNYEr5Jg3v#WcT89@tlfab) zQQsE5W{Xz)hFXUEf$^W~TPx~x6_-oR|q~zh;1FcPgS%otP_DK==GMmc=3BfBd)*&*2vCbL~) zwg`e~j{06jhL?&2_A?OI^}JXA5#yw-9!-|mTMJFu2SwzqPQeLga`QCxPA8+dAC5%m zE=RDOz2@@>=sos=e6g5`a3sX7(1Pzb@?E2*Q@+l&EJaJ+VHBH2SM$fhzfj%{ahPiTCCr&m$0k$$wnDr|*H-78e;J-47xxyNtAFjadfH9J`R zDtE*=JRM7I6Yaj8g7~&4?+A^#8KiFnUJVLjNV9j>HNzX_JIP&*$&)xiSf{cht=4B7kEWRo3#})2)EypP zw>6`&Frk&5MIIyiQv{=Onz~!uep_C5i_>q{+a2944)LAcEeYbgyIVlkm@nyR(YRbl zf(gc(FQWvZjoMN2x&}t_kFunD{O5Ug`IF(Wo-3%WXuF#NnEQQF>GMlXlIY zB6|?_t4YbNk%Z)}v!q-E{>g=eEd09et!{tf7OIZ;Z|N&ie)m?VKOwoLd#gioQC9a> z)EiXc-CNOkP;b5=@F`seXsl(X|;x*Vm<+Mzy{nHT7pIqptq*CrGFH zog9tMPX1G51lj3=h`dGvN4+Il2oe*J6rxlL5w6WGzf|`=s1E=oNX+}Njf{oct)t$O zg*rtJib@i1zd3}HIcqT(^1#Ag8q#Z&_x|VGF{;%++N%9UR_#-${dv@nc73%4K!LRO zZ?pnn01B*5a&n(FQx_`gOTTAg*azX|Hn6`lWOUeZ0&0 zO92oGafh#TB%uVWV+h%-n{JZocgYwS?XL(pjCvF0j1yW0nbYy}@KZ46dmfpr`tOR3 zz%ChqHv|kuwdrP_KmF>aS~5db%2T-+4q8jmnw?P*p9>C-86Bg%&YnG^-cIh|NIV1~ zi%q1M=dc(TvU@V0qUL3^hMm>%oIPu{OMC8OD{nPu2W;wCi*|6OajZ!@5(r912~;VA zFb%unkYzNFY7t<{AerIFQ_X1!oE;mEVfYly)O&l>TY5Ope{p>{){L+;1E5mP5MP=h zK0+WyJ9a3Ny(vA-^uL;|npQVh*)9!9bY<-pM)x#68cYk$bOdKQ<+k64y>wi#+>Im! zn{rba%)3M5hbjbpksxR^A24|Hxp5#^(;LUsfnNJ|LC|j*C)lnlgl*cp5yVJ-)Bbia zJGjDu&;__S(Nk>7mO?0K?ETzY(Cxq6!1^IYBBcUTGR_$u$g#rVcTD7UBXCS*OTW?c zK1lt&Q_Gnd%VkG47mFaqm-g+(XR1n4$AhdV?@@+2P9R#~47zEt>-B3xDc5lh@a&+# zT~c7LRk2>AM*Nwf+huimlRBMOQFim329@MTh2K37$KLi@* z82oE0G`dIO9Mb!XK1Nc3B(+OYTKrY@{g<}TA<@g~ zt`%E8ois1wdYk(t34~v}M|%AK|NFZ=FuBgA-GI9g=fw5a+O)&CJ-BVSEx6}!>v0d` z9>Oib&BNV^y9JkxI}fMfx>nn?w{frHevW$-w+uH6Hx-wOI~z9)_gM|!!tKB{;rI`- z+q6Tt4qOvX{4Z0oy2A0cCEB&Kfo=(72?L=4y~|hPvOSmG~CYR zyo0*|=f)jcX44+S-Ge(D_g;WH;_kv-htqKFew+3ty-#eD;JHtzT$oAx@c5m$-J z$7SLixFZWG6E`0>4mS+<&H~0Cw+44F?n2z52kCR%GTfu|&lvppUlS^b@o?!X&Hc+p z&HdW1xD@D5vT9m?CGT=4PtCw{JU;H9_e9ck3A0#g66l>xd+(q={F6WV{f7FdX+G@% zZLU_WE!LLeDmA~Bp_LG~R10Wxv;{m((z5uMq1{Q$BGMnw7HSndPbG98Z_dH3ROQOg zXswXv3f^C;-l^aXNzcGv%t8uq!w`w!+ z7xKME!&a-tQNH}ih%BO{_;bFh)4=n1_2%GKN*`LIDP#K} zPWok$c9SYkMsgsxRqDjkTA$J1dKrnYNj>hhxqnd3onH8d@&EX+=Du&vyo@;u7A&4S z$N#|MMXGqs`L8zjy|~eQF+lGvh>hduMS%qiVnYgVHA%B^+qh;=(vlL~4zJgnD1X;y z18Mw?&KO%bbBI&BF+01o5L#|VhMeU!=e_gq z^H`}x!0|L~${A8LZ8C59w23Om>2In}F#B%Mvb7xkNqI6eCIT;hzO#@~m3d*!uQ;sw zsKu?+M<95ynsqWxQfq;3fl8U<0@E^6r4*SBVPIVun$aK4N@gUgci2ULn+ zi3hZY2EpzyW^BBC$v2O5nMYDv>zgu*EgT@}gXiIyaltppb1U!5yp|Fc(hdt7$hRM) zT&wQ!*=EfTfhl=M@R~J~1;*knvu1O=pRQK@Bz-CKSRgqATy_ny3+S~gc&b!TFjuwN z!Xg9xIfwMqduoxYqdOJ9WIJ?0A1q0zPN(EaM`5Z>3m0 zEPW;Q`v!3Pe;zKr+K%l0cEsxx@3%9xVBS~y`#NoG|NAoM<10*jcAcq=429tZZsT>4 z8EcK-b=r;n<;CmqkB#4QdRx}Z)4yoVN9olweeZ_<#P?(-$sGO9eDC`H?=1l)t+8K5 zS+Y9DcMzw~91A)Z3~E8VzsB^J_mB72Y-%p+-U`0!XUz{dKLD+yA{Y zjrU?kRmRK0d@`RG$7Yr6W2Bt|*=H*ER5+5lNlAhSEZicy0)d&okMFM?1V2*0)60>4 zkzhG#`Fz#?a}@5faKMBAVfp_Vcscb;^HhJ&iS>dtj@PnQNw3H{CA}|L!4EzaJUX8k z!Qrxxi}$VIDhunz`_d{Wd(im&q=U*SoMv}VOdL;@GN1$;!7^0RIB~-f=cJ7Rt0nd~`vy zG<+0DwDw$^`x1%AABo>I7IFaoO#H9m&%eRuUV%RuUv~VX@gKrZ!SBO&;0wjz2qc8B zo)*0HowaBB8gMa8of5vfx13TD-;0$#uxQ@m%VnT<>Kmv zDxs8bkv4VCQvbxc{s)#-6fRy8Sfb*rXR8>^$L?;<{S~(?UQwzQvoG?3opZG7Sdk{P zLz+q{nwC1p=KjSa)?T%E(SwT?FJF{Vv0`q;lGt`ttPa>zPU{Eys+NJ$ay;sGRq8Z; zr=C`J{(`0X)fE*Qeo=+LWX^(s3RCs|@I=`fOIbpC!d#I06Z#V*VfFWeL19e9Hwhfb z-(!Qq-yRfRHz@p_LE-NX3V&}<`1yo^GG7=JmUarPQJ%WovOp`~e6f&!A8$EPlqljj)_n;xSfz<8{>7$qSB$1ElIBWlJ66-?n@?{>XQvCf2v(-;IA$^2v9k z99hj|WfeSY)jgl52L?UMu1az&9TZo}_vcZ9?6~7^&LG#|XCM74yYqOtMWmnlEZ>$o z$@et1dkf%OWy`aaCv}%{q^|Nlc&1?7!iD4HL;DTQlkv~YAwIwKJB(Si?pIS z{y_CS68Ounen5q0%nwvAjm4E#%v)3udzcZhLcYa|RBBNm=FjoVyBhClgU4A-Axwk*Z{j zu4}C0EsbOD{Q2{p&LJz7ELpx}$tmaCj7f_ZE?H3FugI`aXU0@HelM=RTnd=9V9wH| z83hkiR7-EI%$QuUbZ+$nOJd1d#w~M}R>U$*tgfE3l9vX@4P?)lS&#$h42yj2cFz<5h-i31(fs^NDECZ)6uFjadc*#nB7A^Hx2UNrZ zerjgb=H6JIW%o&){$9@i-QL&0H&JEnPocQzB2+~MMGaU4k&l_lBH<%PP3IqJqHsK4&JA zPSUj0-F^S>zW|%I`*v@&+h- zqyv+u7|Q&?aCOM5<}cA-=UWo24EPKvI)B(VmC9XZd|! zW+RqNJPpcxY(c>YlI^e@rli^vF@(IRTmfGIiIlXEPAnQmCqqr%&8g|6qoYeIKApdw zUtJ8~ZH6xtsfN~ieBovhRl2Jn2TixyVnU-y$^hj(rk_c(z?6g`cXvn?IV7V~&Zu5` z%iY!fNOFlc$FCGwvhXVN&FoRWp#DlB5PxxXHdq{AHxKz)Mf*(4C!fagqHvszlw;+3DYKCHJw)U znP`iPs{^RzQv+z9i;F|lBKXin;JGRiG7GqS-KFRRi;K(rAl8Zu9Raucq_cQOD2&>iRuoE(9DzQ94C5!eIl0A2&? zfz7~1U_G!FSOcsC>VW0ILSO+fAD9Q!0<(b{AOchYexL&I03|>XPzV$Nc|b0Z17ra% zKm@FS0I2H8914fl6Dk02s8lOf%U*bpbE$XSRf5JG#oU*T3`X- z0dfE0~mm#!|)@Bmhz7eMmsjQgQ1&;Xl( z$r9Dpz?rrmKzvIsNcinx@f_v|~f8nAB9$dU+ z=|jsN{>>xHAARicx+k7ovGS=^tJnPY>1Woid-l2Y8=n8&#ur}PwE6chy}acQuWYT~ z_Ua$EzxMhYJKlWjPdne<^-jaPyWiXM=l4I@`{BNiKK^9?r;VR|{zcP)FaL7zuU~zA z=T&7qGskSn(HrbgX*j;E1mn=XCY$mg*rH~^ z+EoPm{9vqg4Q4p}F9I#uyozFUw4zdq4-2U)7RA^TK>H%9Ku>lRy2y%8wj#3H55h=& z1m4K{7Q&sZ`Ly?dR%JcN5v^8|uWJ8yqNib%IQqhvG|fB9&^K(Tgh9s;2u8?Q5Q-RP z`XUvEe(9J@B>H3G7IFImhJJ(lF(ZB9Fimm10goYAZtw)ls+9?Er8_hYv-N&OY(FNm z!squidyz@k>j@jG+#yVj`-KgqK^SRZsTvWOf#JW$Kxl$!DJ|%74e2+bTKl!A>SKP4F}3x4Xk+#FjUo4!Qg?%KsA}Wh;KE5 zxU>|DODrlw(iEF{GbrT0Ji&1Rd${!b5)Ao0Rr&sAV5xkruuS@b;A7f`Hunb9y=L&qu!1KI#0810WK-_$t6wHfwQT~%DqeHY@4pFl> zgmO3}s}$KAqGoQ0nztdbtPN2!Hbl+W6xcKkR1BoqVazQJJ{V#%LQ~ZW5pz@PS*h0m z%~dp<^iK&#JdX~*Lkkn~POtWb5Yr%oTCUvSwrErnf=UxhSE<#Mnn9JI0r`fMP-m66 z%7UR#bydVb>SjQZ(ISmO)T)%hPb#451JwX(9oz;@p2SPkPjiCF2Gt5ws#%Hh7*v*w zqI?fDL}mtw1(Z{BM#CVF<#e(dUQM5KvKtMUrGcQWcc5kPBPYFT*Mw= z`A{#7A23C^M!w2})zrMHs`2m2eY?48O~*9J6W0YOrnVT==aS;1B0Wuzq=iR9$|h-$ zRIq$Vy#ksj7@l=vNmPS@QC%L0Di%o^Z5)N3S0$}qo`zD8|6Evo>R6vas}-yc8@!W>v#Zw+K%h<9%8*0k;z z9c7TLm|ByGD3t!HKa6ZJWQLPOiI!1qp5Ui8js1hlLaf_=HSB}gK8)#O8WL;MqHT;1 zhE;cfI+=VgMhn<>s5NQL&5_!Jp~Tf(s7xzzE~xN@+75F198yG7UKqo)Oj~PsDUV_F zI{J}IqNos0zON=}G=^5PknJl^O0Ttr>d;D+CN0qQjvL7h#yBpFHEeZH;Vfmu2HP&C zsbjE@Qv)^`q&2`zyKC-^QFjLS+6$Pp_2)Bbd4K^EU81SSeIa1DNPTa(kV$I<$nOa5 z>!a?C7c*(!qJ>=|93x6>ED+^=tIpm19O_VC=wMIbu{c z=;=-a2ky#z#T}1Wz5eH~wRNziB7NF(F*ZLdf8Ep0!X?EgTw4s?CNJxC@*J8#m)VPG zuR^$}tRmzKN2bjv%JPP%MS@jDH-raKM^{u@jS*?lSS-rG2&@k1t7tS7e-$CEl9FcI zB*k5Y_nN31`D-C?D3i8bFfKqJhTI~cTN4dK@3fC(Gv2oYjZt@^Q6~TJ)5k^O7Q&Ch z(WUo084XMB6t)ZGqQysU+C|~@wB%lgPsoU%*Jy~RT)Y?R;vkx2Jn6$x_&jWkSigf| z3?F0vNfX21*OD2-fE30BlmN8=e%41zD(?OP^o|^MAYI~N5AH_*awD10UCVP9JfD5N zO0UU8@3#wkM~EJ0os_bm6X^Q)n~UT9_vrjTDS^HNdir{uKe-RAj`!c0;D5u7sz1@1 z@vQNoPlx=rMCn@dA9GWDI*H+j<4gj@qlHi8^Rn7_|HSZDU@y2ne4>BaUGe^ja$I(I zbKX|#o)hUNEoi1I*F7i7ZNek*=`|$Cwcm<(|3rSDUls4482>z+-DoSnou6&n|C-;$ z`|I<0C;aYd!~X;Lebk2kH7_t}PC(CJV*Z!D+P1%Gd%S<5e75dv+y8}q@&1YFzuCwr z?LZ0I1L70KqtvTZdcj3CyQ&pGs?#1X+H8PmwQD)vwRp5U`B579>EWMEE|n*8qxcCs z5QcvLLTNwoOm2G<;)PR;zr=V+FCMV9jMq@!9B&$)DP9(Lic5cK@o9JRBYsKV&t|ra zw?-FlMKs>|?TA;4U%PARG{M1aRMVk!KgK&Nv`n`VX^@Nvw0Dg1b0o?Om05k%pPAY+ zkMNGQD~WpGN8eBWgK@V4TKl7~58c0K(k=sBL>RqJ;9bj$cGvufH^O4@qLuARJd@kT z1pdg4E-l@Sh)n-({88m^#Scu{T0o=I*N01vGijFt`fz&we+R!!QU3;vafr@Sp~|xg zcdc)#OVD@fo1Xqh>+!yQHBNH^hkRNt80JNs&r9WSX0D>yZEP)`+2(gjU%Rs4cjlbq znRAZ+j&qJ%85!H~VB#7|rc+k{PcGNQjGXaudX8d{bd6Uw#=2%$T`uL{1i>3X02q#3 zoXa(dd7qJok%KoDSk6Fb+TZ4H5jbyX;fTZtm={vyQQny@b1!*pc0QinJPch$rDMIEP z)H82Hi=)+y>bZ*%H}mz9+7@U&G2VzGzFkO4LN(VM-y$>@I6O0kj?d5x*m!kK8jmWj z7d`gz(Z20y`=nH2<|FhOWcYLq(~fm0ZAUyiamnaoR8}q2_DG3tw~|A3amJ-9>iFn% z9+an{SvjN!Z>ZAIdA29ij$asRxRO?R2U+QV#zo4ldOp$SQBMTqD0F2}x|TG@t+=uO$iqI4K zhh!a46M8rI%uMWY_PW%5B%jt4mEai}!`jh9aMX_`2Bi)cEL}wXa4UX)P;(w_xmspj z=YhOa=eJG`A*biTR7f3iAmSRIyeh<^!@xwRkjaTvO;06W+Z%T@e?!p1VJQH0KQE|s zpxL2dC3-!jC(ZVG{T`RD_fX_nNTs+{&56!0UYB(q$UBwobZWD7@n&KLKBA8t98tIW z6GJUgX7k2!rRCMd2ReN-q^nNRl=>@e+31-8w7S?99GOKigcFj|N71Z^(HIJq5nw`y zxUoWfs#LoVD|{z}(WlZ{8x!YFF&+9vG0~9qON^<4p)xNzs{{t(n2t+{ogirP$%vqt zE3L)=PEn*EQmEH!5m76nS5^1=lJ1QQU>A8?Bi7?;%yIn!inI0ZQ>Xbf!qpn$R#|7R zPx=evER#Vc5S7yBrL_}c>ijKt%3Y36o$&@nJMznDvhjuSzdr3!{^Ot_~0vV`%D=G#&8QpyWv#BqSsk~&OEWvP4#_;vQpYBK_tdZ}I{Z|EQZ^S4F3} zBcr8xkY=21_?ObC1EJK&brFn+Zw!(o&KRk;ZV@m#)nzWBcBq9fv`p!P$mB5CTZ1*? z4js_R&Z-T zBc^cP((0*b2lHS^07J~%iZn98Rs?d}rMzKnGZG5UVun$EDcKBQH>6RD!;7;J^M;ON z-M+9lmP>|tEw#WOR*Q~#gPy^lQfZhS^oGo&xMU%Wg+GC9Cm_{ zq;wkcwVnG>S! zE6UU7$)xIqZDh=Zlx%->xPnqrn>EtO)Ugr&xWG(o`e61b`m1dFV|FXgW4)@n+({hj z>hjc%F^LrfH8C=SI_74MbXTboh6ehS94oU#Y7yX)3Z9}hF&N55t-*X$t4sGYYCR(M zCg5uX%B&^Ycw9GZ?5JV6Mt-nIIb;R{y!Jh}^xNrF4E9$>F&{ShlDYVX-n$}4rAh&uT4Rn~)F!e->cNcI3&$V!KozE~02t%kv z811>9;sgx~+J$(oCI2YW;HEv(y-Md_Lh-;xfimDOU?cDe@DE_X-6>2C5CWC}uK_;*hI`-+_<%*gCZGvO zU68``2d)Exz=Obc;7g$Mz2F@f1>68E0GgWjZluG59hazOr!+^J{!#<6NdI(+#S49&0l$1iSo8ab|!{6_hjdEixa@3rxd~|4Qujr|%|BSI#5Qw=0xG z3pC`SF{2CYIeb}lWT?I;%8Re6hZ;duS z#$S@Vcv||Bgx+4*ERE6Ck*aDMrC{HDEbIDWO-i8hr5g7VrjS&ioMMQ8MyVENfP=anory!V}#576CT)cZb)TUhlVrtWpI$6QCq>3*reL06XrvsdzRQzXwN6iF-X`9lLkQyCtO+?eq zmIR7^sYADBd$X3NvQ&X1iZsiXWkIitNn&cHm1;>Do9DF7R!sGhHe$)5Y_l$5@o&af`KYoUEf+0tqU1Qd>haHcHM25+in zw$56D<|a+B9cl?Nl}*d0LkMjoMKlE=9HVNJrq#^=NqIZHPzyq{GTo7~iq;dQc~3r0 z?zKgeXc=xi$q95ZBo94Y zjlQKPg;YI@Ey=nI^H3MshGI*s#wwZ8ySAgNXa{+$qe!IHDuRBjkVw;dC($-#Vi%!N zx2U3;M?yu4Ik(X#M`^NQ)YYvykTn@%%}&%f#a(HLTXrh(_HeZ*6&tByRF<>wNg!HX zq>`dCi5E&@R--mhWf7~QIxvlF4XzgXMjuCuT|}iYl`x>m%TV}*ujY}AYm9m{ZhH@3eU|OevoS1>V!rX*9^GYuy9jFU~iauUC~)uEMM2OB6TnJAG~x~CC}!dWy(YaNX~+GO2{;$P{mDaHauS+(*7 zE=43*=u)SiNk%lWFsO6I${Fm_1c~O3l9`3_nEFcs1!(+|P<}Ce2zw*NZE9L!G3}6$ ziLM=`jhzUEwDPUc|3aZC8yI2%+bbC)NDIHQaP1e5J|xa4mQ9N)aU11^h9{OgY#ej@ zn`M$r_v56IK(AAm(*~`^5%Tt?q*^Tfb=F6ysQcoiBC?7!GW&Ewm3z*?XOzN1az8jRr(?HMihknpJ>!v!ZdQAbwg3qVqZgIV=i*NOw*llo51@D!0apW$ zMc<#mo%mY`Pv+G zTUCK*3)-p*82;n4_DdN2U#<#iPoe+oklJ}A1{@`GXU**$&HJiP)rTjZQtxvfZ#+p) zu3KuA`x?-1Td{A2LG^C&f6hNtCs*|TLOba*qVz9<{+%bAp1g!P@Z`ZKC$}E|El(&R z#$bRnX5aPu3{3I98}{)n>EGMCzwtP}L2`@A8J!Ex1eJ*I4qE{MV1a=^e;^&`1#}0x z01R+66K8jUM&M&$FR%w_0Coa9fbBp%um#u*Yy{Q=Yk=jzVqgJ4^z(q(Km@1&N`L|& z2gm|kfB+bP?!eg?3~J+$E_hD`P7VcMz#*Us_!!s;Yys8+%Yb=61SkOtfjl4wZ~<0; z1^NR9pa+l!bOspUNCx5r8i4Hp(Qn3mEwCJz57Yo2AP>j^T);pe6*%Hj$5|TREehse zbP%47j^m>7{HyQ8XCkkA*EOfHBNzD`19^;vERc5HGbw3rzt6M_iCNXs(e9eR_O9Jq zb8pT6m(pwTXm>6A|Ky!MOh;&d?APL_kxz$Pqt_nLuLpf=pt7Vgd}|cy383Xs{~JQ& zM(qR1gLt5OY_5kTF1+gB3+Y{xT}1)(V*ry@f_wEc>{vFWfy7BhApr3RG(9~zIo|=0zE%*c;~K5Uwvsy{4lljD#GrrjQ_p67@n{!oG z|FnyrKK5+d7q4yqDeLRid%pYe>(8#eamhQwygT1m)OFRfbv?gWk$tZB;x5&5?x>#e zX3ogMp-rnFv^h+hpFf;Ga`k~J(rZ&3_dNE%q@Sm(I`V{}zTl|^7WccS?wNGY-o8`r zI{wkrrPw(`5&J9nOtr%UI2u%e3o z9g`<{9G{N9_o2Y~w|y`F@x6iGo}U+9yy@L<<%Vuo&KrK|@U^e4{zi7KdeP^9uG1eZ zcYG}yr7c5mJn-kmTi^eS{OYMwyWI26o4NCuCV5Ei^;g?d{l2<&%>eo4wNEr{@yyO{_+*^3?54AJURf~nwx1Wxkrw@A?|EZc z-%PH4t=Rjncdc`WKeU-S^?~E#`GuV?-Ei=WJ63gcygqN(&|kgyaJA*5!FJ>HUc0aS zi2r89!b!GOcfL|TVc%18S3UUx|9Qpp=dB+5c-F*CX#@L?Xc}Y|M(01fYg*s?C#J5f z-~Z~(Cl0=T`D1^XKWV}uackafeR_<#&Rcrww)>wuYw^wJH4WPT_^#bMQa@R>SDW3` zrlBT9>rE}g#-2(1|MZ1wgbTl~jsHL`z0sw))4U5w)sh=snmhHaIe0H@#BW=JsV3Ef z5$Q9Ym8Je!hMG!$AT0I452e_{Wfk5^cX$wfyCxJ22g@UaaM0iG4p$DI!Syjcb6Y`#8@%$6yfgqdH;bm($uAn^6sikYOw_U|0SuB_0}Di}blnq~i79 z5atZ*U!Lj>$2|4k!<5wtFp}$?;q~K_x%e;jq3Q}E$eRUK5M|X z#J1A*N82vj*S4$e6YTTs_t@*~EA4CSYwhdp!yE;UR~#oD14Wk@5$_Wp7oQT(lLkvJ z=^^QWbfNQVr`s8Fe(L48@rdy#a&!`#O;d%=LKh)T=q~gSdI<(0UFa_i z6l|vJOcPCIrYh5X(|x8toBEh-=5gj(<~s8>^8s@g%OJ}bOO54WOTFc=rK{CsEw$ce zecJkg^_aDnEz{<)&9^;gYp@-)U230VFSCd2x7(N6m)ln%r`TBk}YPd*;;lH`xv{DeVyIQ9)U!9a2)60a=3Avo7>Fo z9c++op5OgUnWQuDRSi-+a`3y(MH>Vp(okWjSP-X}#aN!uqnctL+M# z)mC8h+itYg+upMM!*-s1kX^73vyZhG+85ea*q^g+gCq{xkK503ba9M!lsXnTUUvM+ zvCr{?qqArbZDOXFCr%N4;@#pp$l{oIxztZ`NY&DE>2>Ll)ZN+Nd9(9Q=VIq8(2R>@ zi#%GMBflnpC_^V)409AWhV8~)#!g~A(Dh~PdiG8BJ+_fO%pPYi;Y?fxSH<1LJ;&|m z{=!|#kKrfrck{pHI~cnf(~S;esWD=F&-jV4qi{ZSBTu+N2nutA1;Qd>C$=e{W4gp- zFpV@#F;$x0HGO0{X*%1?nqB7W%^S>rfR^+?T^MaCwcKE-wmf24YuRXd)AFI^TT5qa zSL=N1Y#%klO#%0DAjbEWA{9v@0B-3cqbW@#amFWf3F|)~%VewezSTGJTdTxbL~2uzCC} zz8BiAK}Ny2$+*?H$M~u74WZa{vuTB?qxpPj>rJ+4_7@$;9eu@Y@hT@7+S5>XhO^hP zquG3R0y`PCr;M#)=dz`opPPj?Bd>c1;&Sr%Z<+(Hyi(8{LuJ?@whQnxLmke;DiiexKIdfc|_PI><~T|{wj1gEkfJ* zqUn_BLh}`7yLqTN$2{JAxA`ISTJtC7pUl~o2y|tQvG#x)SAOK(LMt$#`TVK z#Ia(b7!v28ef*91w75a67k7#uil@YG(q$4aiBhSwL|Q4WlitOa`JT?9D1|a-g|iYZ z=UnFo=O*V?=UMWv*tK@g(eR3m}LoI&W3G%35?_rm+%h|Q;2KH67 zs158sXwp|`Nq%BGa$UI#xL({K$J=4xIKRy%KT-tFAxe9QU1vzy!lqsS3*P_C9Amz(6T zW%`lPWe^?14rj-(v!T7uv+uKKaXq+f=xmUi$E{R!^b52tefe^JI)4+t0D3e*s1T}z z8Ny9yO%4m+3EfN<(`}~vO^-oWx0~KHeQWA!E;WmmEK8APre&9<&~_90l*P8?=t0-p zKD2!XNtx}L_9FX@kkEenbVq|DEIugSCask^Im0qj$1uym)=2g;ZWQO?p5nH1ZvH|3 zW!`3d)L3tvC@dA$3744%n=8!K=3CA8nwO$)+hhLJ{8w`aOBc%(mQ2fymgg+5T6pVd z>oV)FY*(R`T5Wp?CG{8E-)ujkCFqCrbJ3DdwwKt0=-;;58|+PX)^V%j4acQu54uS6 zq{q->9h7=G`=Fh+Iy0RINYB>e8*#XGWJ|bh+zyO5nz$3_tGn?$Z{x>8N`AhYpO2b$ zh<6!Fj5na2+GczMz4qUYKN>p;Yry$d;S=Fo;YT6O{EhjPxrfDMuW{@a&zGE1iNsPG z^>i+qVb*YK(Nb(gueSxQ#dg%@@3{;4>-cf}C;Z>|r;M*-Oz;C*_s+saXxo=#Z1b}4 zN7U4vLIZleE6^@xq36pr<(Udhg{C6(flr&(qyO7%+JZ5`Ak^K_<^pq}xyXF8dA0dN zbECP*e9(Nzd;~q>G4n~(=3GmjrNB~XF3@F5+~w*x#eg z=pkiGxzZSE0&2xM@_F(-@(y{o{1v6sh_hX|U4VY1l4a4}y@~PQ9*hY0^PlqvQ8It$ zf8bB>DaKC5UmLp_FEsWvUSYh_xX5^|P%2CncA;E&%P32c{dxN_J0d!Q-^s(RknPFs z<`3|{Gwu=IHeFL4f(lV*I}yBbXQ1Dck_Qh>xJo+y;GEz%S%~ z&wt9F;!};Cja`gs#_q-*#$HAPG^7gsbd7Pg@pI#0V`rgTbTlV{lZS;mj9J$RYlZbF z-Oa)l;Ve@ZQ<|x}sfVe-{JyoD?E%{z_WSIz!ys-(FIy~mrLfe^d6l!o`GxZX`BRxX z37YRLWTz`yx}JX#@+dLRG;S~o!nfwmmI91sickwYC{w?^3gud3pKY(T-)kT3nCZCF zvC{Fqqo;@uFDNoFm{*_<`%2VHEU+{cZcZ_V-CvEY4}+mWRBT@E*Pb z5~$&c-(DDPq?<&O%j9=PoU@(toC`4WSq|-3>)hzv;@s}s>D=S|*xBSf^Z2pdG^-$o`+t30mf&G?aMG~Z62dkj9u{8u^fXL}p4-m}7{ukS${U7zNa@3)wo1qBpXe*)5nOeT-i4 z7~7fa!Wp=9PT;H1Io9=RAHKj@fgjrcAEB>4w{Z) zbeV1*h|y&(TAbPDdFEx9ajivra|mtCNpqSd-NIU|mI_N1Mi2`u3oUh)?Un}1UW_)= ztlg~xt*kZInrAJ=&yrHmwn7i?!lBalW_!?aX3vnYbLI>Alj&Qlr#_zUdJ9 z`=in^>7>-z*~OXW?C$L0?Bz6|_wVl<=wzJ&+JP#JvlloQI_s1c3KBbWosqy937nC@ c83~+`z!?dgk-!-VoRPp837nC@{|X8G7ocWVn*aa+ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/win32/x64/bson.node deleted file mode 100644 index a544c8ed6385a61b494425288425714221fc77f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118272 zcmeFae|(h1wLkuBvPqV(VHZg-N|1p-PcoUPr@?(>r1U3XVbyg%+x@<zmgryU)y=IdjgLGiT16nR&MI@3$$*ilSKYZy1WQ7vJ>f7N1}I(TCy@ z<9;?m**)x?oA+AgymRvc|HEr@SFd^Op*0VFE%&PrKKkfmf!zPIB6p4YXzs(0=FXZ| zo%^-Nman)oBO^V}M7{qXUh27Yoo#({&gFBn?-SdAI?Yu0~ zH9J4Y_oW+uvGXC3UcR$We0$ArpZK2t@K^nWb0`kH9z~gBNm2f5&x775OqY^$^KeVL zqKvmF%F8l$`$~K}@$W_+J<)TLqNFGy9s5=akO?6^`D+V`2^fF`8~c{Y#_w8`$SsO; zaB8(>U|*r>MIdFUzdHjf)&)@5kSj?P zyi(^U{N*ajvOCu-e=zW%qCE0A3W%L`_`Yo*p>CAiDZ!MS0+feQejUDFxC$w%>+mC%bK zAAi^^>Yx%qQK!YadN4hSIl;pL8?!KHgT**bR193jcU(nZr)45&>zr;kg~n#(Sv!SZNg6`a?E^?=)3XPqa|WbaP``P4ZnS%j zv`o((P+r}#B+o_)(UugrFQyQOXNRm?)@A;Th|qW*G=iwoz4j*oD3szcZ%pWmg;of% z%LLg1#K-5DARYAtA;o)y`0;t!XGYe<8Ndy-iuVnHP`Pdy2(M4K$1<2@0QpB)bf84> z50($%n;su9SB=4`Gy+jzz}fT>MwWBB#W{#N&^OGu)s6zQIdgn=Dw81} zIYMKk3J|kBF?Ok>7xW~dkw8&(sJ_336^ABYnYS);A)8bHc`!r!qm8|5d@%3H-a3Ff zA?s?MJWt4aDQjCyf`@CSN4RIW2dDAl*DB;kQzDO5+P{(Q924YK);8y z4^$(j-^)z`qV|Cb&G9#T0Bt0YA>?0WhjOvm7?d$eq=e(+QAbBv;{#C^C*qrp@obIq zVHO{0fVc|LUr~urdNRZpO?O&m4UpGfavGwAK;jA~B#_=qQ(poVB)>!q(R7rKzfGQm zAtukv%Gl5Xmd;cvH060|PGVmZkDZn!1L&vr6LX^JC_St-`b4#l9QoVmBaAWn0wxjB z{-#2czS^tk6XU(XV4rzIbMl;3M%H#3RSWX68RiswgEHR>b9~JzVR$qV=Uao*vL6Uk0B#7~aC%7ZSRZ4I>J*ZksM`giMOXfZ51e1SG-mrp$(N2~kK8T{9&WutK1huqzU~uK_)% zmsyRhWwLR9*A0r(2LKxYKo>}L3Q+X8RUvy@X8i(~0n&}p3z;mE)T}3J=9|=@*)p3c z7OmY{-xlQ$@DC-xkB`BF`0=QaEs1XmLlAxm_#z>`1jiP_);8J{2;gB^a)?SkmLzM?zyW!4J{HKM{tF&f(b*9a;BYpw*a=ldZ)Z0IWHV=|nRRFebuvvN0@)3!EVZpf z>EFjo;aH7;XcM*OaS54AkOh)lmP)P{hTL(;hW?_y4r$-DJj}%TYq0N0^|f<$av?Go z`f7v|;b?jf1`>{ha4cuf*4O7{!k5r7_#MsvOhu(aDJKba9V_&AwKZZh-Op{>AMM&y zrL(MG42L?F`X!@b(R8VY;Qjs3g1nsh#s~31Fal%Xq(G6N{*b1#GnHJb*+kWoA&{TT zK&I*0JX1~>g}Ym~7-EN#a$mn;m|o4}vUn*xgJ?0yA^J!CYuvgVsxNcMy0D6PmMr&Q zU2bMwqd$a)(y6Q#JtXGID!5|ktxVmU$!2Hk71?o{KA^v(ZzJc{A?gT!q=sDzxT`}; z`+dw6vi^l+lix8nRPxPr*TFGy)7bb^4tvk|U~ZyYvZ_o7svd61QV?Kd5uoXo)bP2o z6sv|faS#c{duQr;u)>orL#9zDCf9@>=nMkBiYZl$4B8wFnPKQ*>wF`tf-DOxQy+cL zg}FEzW=T>?LOAM=yN%DhUSbk;HEbgDFKInD{Aj` zLzw&q)Q{;Hn~UXJi_@)_*_w{4z4@&b-YSqxUI$H@or9(m_;;w`I52X$KG&vwzV?aF z9Iv(P9;Y~sywG-hX@@M4kF-NckzZeFN1ZiEwPNvG+o#$1`cz!DEGH#dL*asGZA=%O|ILVGUTZvrAr@w~VY+ z#19ms-C8`?zV;E=LdqCR@--(cR%UClxgD=vg2J&w%owD4z?S1R-iJJDguP(z@~0T1#f5Ivd5AIdN1{EZX1TE9a$6f>mlMgvO({dB}Z6=jg8dK zWoxZgAHprNqnE^Zs>39}3NR1bX)eY9?+;bQJG#PF>>b$AlK?-sqi;Z74LaG*5uZgT z*K6(Zm`GLiLbfW;N!^;+pg?3>i4*El8+GYQHnxN^L@%NXT}ES};&|;?V1n7dEw;u> z1?zo{mx?x3ISw3lhf3ZIt$*?;xwtkMBK70>kdV_opS_C=j^(ZbA(1dLy*0-BXb7#W z*)DrFaFc&)jPtL4ZW#VkF%4dTBx+{r9%U(et8THJ&5j%q<0ZWL+-_j5X1`>W_Rw_0 zS5tZgX~#F8h9~cMt#QH~WUzv#CMeF(?z~16vG@6JNVGQQ!OCW7{bJI4o5E(oT2zIe z&I|75CWgzgc6>zsmJ7?3vwqNJuN$@}%+@1gqth;~}v*-l)0itD$ zn?!&GdCO2L96zFKV5uODl@cu=40N#qBJ}A5LQjg>b+xYwMxg>~>SW27#9$IiSj7Yo zS~$NUDbysWKu4P@JD7irRv>RW9JmQJR)e10I6DKVZOVHVZ39v65bUhabF=fDT`~;* z8a~kHZZDDCh-$!_6URG1OuO^;0stK}ow~dLRCocsil8x=tl+JL(XcC=4}%BJvISGL z{V@bn+Dw}j-A*GJSR+IVVTDe<%|p}%2!r}Bph>>O$T}r-cpM)49hrHda!YNv4umDS72)d|83uIryD*C+53-aa(eVYY=I$oQTH_x)x z#@yDJ%tW_JZG=aGu9Z@lh4yA=3Mr83`-0Y>rc!g{_ht-|TxI=Ytg;RV>ZEQ_W7~j* z%%2k4n)e)@uc=UW(YR>!#i3iJCc2FEJGF2hsVpgD1>AjzbdZ~O&B7%We5 zy76BC8#M<1Z{MakPb2-0_^!WIasKLd#rZR&e}d;v@LvWP7nLFJ68?)&{v+gR`0v2K zVo6H2rlh9XhNX`hZqFFuaE|(4{2Ted*w(e0x-RPe!GFod%nc*Hj=Bln239$g5skDd zUi5h;M)u3Xz3iFnXI;+vOD54Cg#f;*J-`ps@L1(LQSu?>-A2(K2xvH*6VZh z`dqy}Pp_Y#*H6^z3-tQQdVQf@U!vE$_4-+QeT7~>N3Zwl^$Ya+MSA@by?&Wqzg(~P z>-DSj`qg@UK(Ak?*RR)KXoL#tFVOhVUl7Ktl>93Fg{>lo2C4o6ng0eue}POf^v&r% z3%$}`pi%49U)YW>8pmvs3_jV5+f=J797**WAHbA07~s+A??II+y=)0V!V$X)2J^SS z4>0rfvSmZS=w-`A>x$pvB!}vnc&IHa0MM3yC>UzX2^h4sY6uv;Y_(`B=gZp4lWhft zz=M8w`UwVYts4SHFIz9#n)qdHO%`o!X*2~slo$&|b6coShiY*Pb+u@;03Nr+lzJ>HiH0u4bMiC4*MD%)}ofk(9Uv}|kE5HNaKg=p)!FKg>X+18vP@QAi{ z$+m_XR(jb2(bnF9ZKW@*gMDEgi)-8DU`M)4ren5IuJ0yRBQ^;`FwwM;rLV%uxWZo7 z;VK}`_IKT_h%t?|5?l_1CK7_#s7Aq@oqIpBIE}2`WGijhxy~w}rztPu6E+4*Du0-m zFg}DS${<*b56q1F2x=^)W6kCGyQa$KR^{ah`!v~qh=hc?WRx4Q7;D!jfUrFFHtGU{ z7jt(WmJ+m7gr%dc5{fTp5X6tOWYF#?gD|k#LrFKg#&Qs0e6nTJyGD!mAG?;!X2J+ zE!@_J$#Tuf`+vqwV)L)|U`aG9Zz5^e`aGh0PF{)M3EYVip95*P>xBX^QQA@#qDLXA z37AE9QI{414a6rp-78r~Jdjq=MbV}A97IC_D%FnW*rg&`Jh4s2KeTfTsu3_RrAZqw zG!|9t2q2tdaRiqq!;v4`gd*&^j6h4-h#)XpE=7_N?KHC5QPdQ6G!+9->`Yt-961Pp zvus*GAQ~STh7cn-$z;D`ZyQ<70+*xdQ-mJ;Qd!wMKHKT1*vRH$fH7bVLlM}?AU zypLeTSAxB&!xh%B=C|nO_HG=|Qs9-y8QdDn?m#vxFC4ONl3woY-f>l3k=-KdmJC_f zs+VVWuehqN$et_ex`(W5)628F@3^Y2$i7b0oi(s-jt}1WM80-3_`wht96I%yobI#e z2v%Nk4d?>yA!zC$l1Hvyp4HHE-8@9lM2Ucg+UWBNu-lal zZOJUd`qNaZ;vUCS|AF}2=Jk1Y16mxo8PVi)c0EhN=G1$}QD_kCCykBKl>fChnxMoyxER{@8_ zteDSC<{LU)5_6k@E$TV5Qfh}5r$pmPf%hcs2GP=|jp8-Hm|I|RF5dysDqiheA%?mc zLidI|7nbj&e0@bvsPc%k0CMz;5if>wM#zKd13^P8Q!wPkMsEq$gvh}7sRN8u3TG1|SMg*-;L7lbEx{FVD8^&q?Q2wLr6l^2%l8AMO5DYt7A5Z`52XE3+X z;!Z1RbbJ@Pl>wKaW|CiNz))9heARg=Zs0dNWXLua+A%R)n@N?JR5o2Dhy*%DfR4s> zX_5?el0VNRAoAz`IRQ3dSVNw3P`a~Zv&w{`@sDwMlJ)5u?5v$tp3||)igkmd>1{|2 zxklD5~;3Nb)8S?Dowojqm=s0vSKf{rvoOTCN{Zo}yV8-;?lYzJX5QgnD=4$7d}|G-|OO!CJHP(phg@Dt_U zBa%i|Siq?c|7!HL+=}|vS@ayR&|VnLklAPhThdvX07cSiWF3lD+8V1=D=RsxK}XwC zM6c~_m}YHD^<>s2Qi%?&v@czECD<2oC9Z8>cCjgBL*b%8h0ATyseq56s_-ll1{dl7 zJUA96aj-4hjSpd4_JYPiw&lc-wq<+Vw(PpLZ2<{dUy{1|3mc!WZL(QF9GNtsh_*;7 zh|{{QY|0VA49-Zn1ZiY%`u}JS_gzEV8(C4bo~$ktt;cN7Al7G?t;Y;-taalh_uQd z{^84|1YFjQw^7$eC*EDCEv6!QXbYjF$`e)H{j{%EE)C=X%pGJbdUW-KP zWpSbV9Ug~8wc=C3S!d5#>?#+P+ejNvCCqu{R^4+B202v6v1L{cE7s`=LtILSr(J2O zbTn7KrK^W9-t~oDAx~FG4fFp5EzA=pi*(e>UmqKz?5ynh^^2kTn??c}qd01&6et&X z;b`s*ZQ7HDVeA)(ZW$S>?83Zy4cJozE7=KHcUdAy_k?wIyRN?2?0LCmp`&@>kD2F$ z?s=6}aveK1=%0{hJ3k5vO>@LH*)$_LP^B5xz?=qawNJ{qLK;fA(2z8>Aw1|pAOH89 zs9n^jhAO{6*Q+tzQ+%EE`S_EflAUd`Vnm}(BbdXO(Nn(=16z1@KA(!JY{L;@U%wwA z`#RA?Hpr~*!EzQeOO&E(%`A!LOYUd&Y3C*$^8 zfczY?zJB*A3cs1!D4aAp(GZPog0*WoX{Zh))PxxyZ$m>#>Vjw!4^X?Cu7jn<3f|nE zf=)v*=91Nk>V$d=@cWm80^a<4IhqLTK(7<1k~b#Ooax_o4Vvj3oBa3mWu6G*J+s3_4%aMUqJpKHO1<%c}ZS&^Q^oZu*aQKRBzif+ML=*(S`GlWw$+& zCYO*j@7dwoXYwj)8e5dK{v)YR6db_Ypp3kjdXccB?s(iUjw*qizru<0mv_kd>%~O> zm{!Lrk2m9d447_(;9i^7pZBW(ouu@^CC$ zck}BYTISiCPdE=HcNTk&K0e96&+IDozyGGLqQyuB+z48(lKG&e3b_@~=7h=Vi*$QK zyO@(w&|VFH7SV=ltafH2=!ZEeislRFBx#S7#Pzy+NPE)c@0`Mrh4 zIc9-W_3tnhT+4#s$dLJYpI??Ni z7kcPEOkxhRAO=noGF^_qjR;zKU#l!%benl&QH`F+|g+{)O)PA)uLw0%%Eyz?&LOHqN3XdtyT(6T4zI zIPy5}@V*GYh+U{0u?vMf5xZ&Jn4+j7fD)nTFe<}5jYTTcKm>Uk(r!yCn$Gs(8q2%< zCTLH2G2GV4x;_M@Jn`i_DXJmn!O_Oqd4_AMXMVAT8&WF{@nuFo^vL%pYq`sUa zKCSc#4H$rnv`26{9x6whgF+)sOj7N(9!fErU=S1*QE=nu~OQCqh8MxhlYJNc0Y~`kb^!7eKoMaD+@lqGPnQ-2p~9! z#vW&9VAT@iWEDW_FxfKqDtV?Do0}F|*$JJ4%K|oq2kf&UH@ga(L5#B*0Z=Q?7Z*@e z)h0HTv$fO|>0(>%j5j%e3mgz2E-J4g7RNk6$!&s?^=K)FT0$ea;t(?$G4FzOZ@j81 zHdTSM=|7-4RK1Z-bVy#J6b~YnO`;Bj2_fj`01dcIv%RaBqT!5_-O@fm7-XF=liUln z7G#3G9I{5{Z3);Up%GLI`?5LQiqp9Rgpn-~e$f3h#McJ)2aaK&KO9YThy}!Hsp+hd z4#ixvXQbg;K?e?f08L>}QMKr1-9)sK3)PTN(+CR6x0y_j6l{(VEDX*`jQecJ zadw_^mqWS(l&6!o;W%m>r!>Z5J{ig$Er{78{|_L$LkMyRi}cG@( zqR>Y=T`G#V(4o+!%3t4r+(eraH(WIX4A*SJ)}bT`Lxaf)Rz;YHzSspNA8u&6^(1PA zCXYcEl;RCX?OtGlL}?=o90CE6uEWraXIh)nVV&bO671s*R0lS)L$UH5sY95_ThW1e z9hPBKuZIxRl`6f;I*3)2n&$Iicu092NyEV$(37JmtSJBKFQ89InD&zpby(JlD^IxG z6iE?JFsXDpp(E*G@WipwD7Vj zUUV2zK^l{U7G6G|-+^?T;DK1AaUL(Rq`{-mTK#m%Y~p;r<_oI9Vv~W`PDTObu}KvW zL5Gq81Z?`MK_gpOB{JTi5Soc#qMf+|gX}5+y^o&J3yBEQ(dnzNg{KdA(9O+sK`#$l zXl{r4tTo>G+@T6L(Xuh2M+fpN41b_R@{0ima@WabCPWQU?6x0y6QJnV*#q@*AVN7| zOp^#l2!!iNX>ivDGZ=_0kQOk8RgOyD-Z^xqm@~;Sk}hQRKbc7Y{r@tPkT5Zu%dhUri^i%dGirdU9O92%y7~K{)7cY#;v> zOnSU{p!6`)kRC-$J?c>C^nui-&^m1P!gVCyHiOQK>b91w0(>{)r8H%vA}MlK5`uZFT-Ty1O8(i|NLm*Ih%&KulnPky3+(loVz(l9cc+ zghAL8$HyF4{>3M_MPx0h|2mQ|uOTiFo#!xa7}xI*ql;{y@Udw!6sPgbX>Xwyta*9+ z*X2-pG+`)_mejD04ofmuaqJ?2fN89g|K@;@%y2yZt9T5gNwb|E2c-4a#Q6O;nqdlP zIrACZ7^cv=Dl;A^&5j-=W87r~{}3pm_uUw&H6S?0KLP{MR*a8>t|@kjQWy;Xgzjt$m_-E06Az69J@mr(#Q~9Nck4Gnw=0aGM$X zn84miSQO@BxJ(btRxn&@LNhIb9$MpYyrBprA?z+`%JEV)K~psp;~m_Ppaov;nhu85 zrx@fxsc|4p!r^d_$TmTpQYORKq>2!7$m8@@8!C=Lba^{HI00a6>hzqO zK{XaQNgz(6@+|9Fm&QC@&DjwFSIz$wP1n}qu+h@RhufkwXe+vunufGmR~ST`e`RTr zhe-Gy+BHcik|dyphpyh9^%-g=s4!H7j=Qc+!%&gyfMqpW88_=OzEvB${jM~;`jh*Yhf zT5r~@W_330a@P}&`D(OMs;Q{i{M6034R8}5pNnIRcsHKHYrt7;ZSZu!%Gx5yuCN>A zMH{*Rv<$bD)!Q2E^+hR9pT_GoGOGC*;HU)wKaQmFHE2^W;E#wex>OU%tmZ!_0A7PU zyqOA(xWbF0myzLLhGrOx+swOxr2npP3nDtz>{M$P#f@wi4`O|%1hQJvwS$)X-VVHn zn`TuqQ;iHiRm0j^f9v!OKgH7DG_G9Pi0k?nU2iA%Bwx}#GqfJV^`5IkJ80efiDI#A zR&#EpufY5CWl?RLe+Sf!YCC!#5fwJ0|Gu`sz3`0wbl-0Sw>O;)eA>#L$jU<28Dym* z>qO*x^-CqqGp?XsTWH2#32(avbivqp1J|{+?MD=Ybq7 zZbQL#tbuSneb*#v&mP1AFbxpKltmb6vC^^e(r)-^{xhf_D^z45%u!e^Ua1Ge!05MH z2>D(Rg)5j@XQjT~?tfKOq-=i*AiTUViaC&8Lx23u8&L6if?#c4u1^G6;o;z^bcLm>&3-`bFDO!0!=V|{NB*8D?N)%>Y^AwbaduhlV97ZN(+QvI$mWkDi` z#nBQ+Fo4nHe=d>3o8pBvC^Ys6VgG?z2-|995)?YNw9$C@0Qu}00%4~duh07XE47`$ zT}Xj4MeAD8`+-qUWh-?I=TlXgtaBx|97v`+SM|F>A{gnR@VLfM|WU zIJQ)w%e4JeW28fyjzq)VizJX&QW4|y-|iqzF~}Xk7qKdr@`;sJ3gL*}-hxslw1?O;NL(;{&(%bqj+bT< z(c5MwR6P(cyhzLXfrD>*y!4kS^*a-*YVpE-RCryk#T?ZBFal^^e%Gy{A8;VZ5zGWz z4Ws#!w}5dNhh7XdsMXqK$Nr5}YDisr@b*}DEE41m;M)?X;69Y*3x$>%6|yes{wcU^ z$Q`7ejyT5Dt1Hbsy|bAAxYsZaw;5B~F*74NBAZS!jyBxD-PzC<3tWv3RKQT~W>k@U zuDb4>bg9*->a=8guvd`>LD$N83|=G0R-w`B!HeGSGglpYY-f77Nw(g%np#-RSO$}x7e??Xl<2MFlgeQd~qrFX#3=`v${ioJoM0RCuf1h3HZ~5)(9~`Ee9Py7|xVr6BtW^ux~V9#qamdglddZh8ShKAFb%19{{< zK5Yu6*X8o?J>ubd^i*Z0U{W1!r1YRp_i^YjuS9v|u*)d!R2LVOQvSxxMh1QB8~Te% zm%*=7Q#kg&l%fqz)xpOCo-aZpd@5)H_hk8b8c=mVg%6iOU?a5Ba6426YB~v^ZIK4j z?OJ}0M3G4|lZF3Xb^))_zE0EOIV$%SeV`~ft zeIoEqOR$)(?LI1oXtJ7C!vmO!;bXh`osi2xJKh20_mYf%1!1sD?9XsmQHl*>+;6cL zWf7B(rnf+~wxVAt?g^x5SCZ5_cNC&O(Xg$?S8W`n?c@z-6-U$e0EZkt6YUWSEG;!N z>-|DFserp;Q4teRb8EcS{7vNHHAK~X6yT#MQz-{r^-@#G>TQJYJgf~WCEqL?3XF^b z$J#fAjPoLqvCMN0?`^>DC7+50YB8=>aI@SM=J$fps9SHhpx>qehz3BV6Fb2C97w6H zgJ8q}+I(&T9O0eL_aV~^JAG!^=yR-Co!IQ>e0IR~Wk6I}K zC|K24_=g1JC)|kBqRfjOFnpOSBfQ;Dwfp$9)2Rz_!OLFz@>A;d{Bx|XI+bCh8*}Zs zSRHoXg#r1pJCMOY7DeMx6!~qn>oj(uM&mN}%TT3nB9FF8yRPUXbcCT0Jn8xqUQL8& zx~^T<|6^gOC-R@r+#1e>%Gvn~;@Mr?qrwu|`5SIfOJm;0SJ30dGP?~e*EpIQ6=284 z$5e`K%`PTl#5nrRr@54Olg;lz!>e)mB47$ zs&$QH$67y6Y3)i)wm#E^tB;YCy@xPbd)?Mtyjw4+y1I(r1)1G)5Yva&XCSPLcdu01 znr)HME~C5#y(yae^VDc_MH~79!%R6v=)EDg8lZLQ;(AlY$bq%)D6^9>`zmj`9kK=^ z6|2BTg`XlqBZ@QD9l`4FI+juJ3yi*s)i8SR&ITMEy(&&AJdDE8#C@#X#wX1nJP2*s zdfls&)J&~nbrKq}MA8}F4vW`TP@$Y$dZ*jnfmH2DtabB@+17PCFvXPH-E`clKah^I$BJsT+!VQ=A47?j zt3)P%$rgpZ_W<7pB{eXQO*Pa};>fdB_!TvSy|-%`S5Xo?z3Bx10o5v0)O7wGJYl}o zZS~Q3!RB-8U?JnnIjplYp``R$C`{(KClCs~2x9d;VfuXj6nzHwiq9VLc|?42@p)8y z?h~Jf@W~&64S@N}=hRk^{&JEo-;)8o-XmZ8=uY3PzN;~cQh4&qH=wIJCa2L z%(3-0WQAsQl`ML~;W%*6aiGx+L!fmza9uL&IMCF(49SMH);?>k9^8(4#jTESzKyYs z7xH|n;)N9)O|0W8$bUFoQyWB>{+(BUw@ux zDgMY2x;_SKy(lufQ;@@gRQ^af-ErU-p;@-0x=45b-iFb!hdAs07>|VZwt;A=jL?Qr zY|5Z}H=bFLN)izYEZ-McW(O8Fe(n#nm(a#)zS1z`d;T~I!51%98HJut?way&|W%( zPpph+TzMU@9rSW*g)qY{L17mH<5`GCTSzDz|95!(Eor6_QjGbhn3x7YYz0KO9}SSM z^euOMo5O}Xnx4eK*7~X)-~KatURrdGPY*buKa22htEg}Uw<5sOcrdp!NZN>6id20m zH+N|N1!V74fJone7LR)HIeZq0j&_79kl!h~4-p}ydnb|?gCwT{h|dvx7MTfMr6UH9lm34n5JpUWa6_kNP;CMx}OA$ z#v%6iK@)g=GQZW)bUSbp&(Bif)lCEn9Iwyp_xg$3P>>kMLWpdFmzS5JhIkjixXvJr zSZX9Ps%2(>vjFTAaFi)4N~*f=LPK~ZRdjR}cLa*@E}-If1Cu3tq`{6i6+J{e1Tw#$ zfACme0u#T7!=y_?@G%~D?2hs46cQIZWJl)!^#Z-Dp6LgtFm%&XB5d7t-T0V%8H z2J9;-cNR6CrUP!GNFK*JL&-F<0r;rKnsfvi@O^@aHmbh z(D#tO;wpQ(L`>Du>=asDqGdhUOvN+%_25=Km_yPKrWs?&5Y0#hL{N)Rg+vW_KvSNE z2Vs0@9A(dw#%t|4n|}+=l)zX`5Q;N&Cb}A9%61dBwzhFU4e^K6?BMA{fal@>(Ij|ys)FX=2l(m?9>ph=KIa#M$Pvlqaa1fO#VLR!Q*kDF~Q@Tu3v8rhS!d~cuG62T>Mp>Idc?jL!bPL^{Gj? zzanL~!JeQ8H)_K6UKD0%piZ#P;caT_&4TEVdR|T?hOj0$DV<8ifk{{gfT!=z_g2^N zKhA(=wif8mOSNFX(k>NkOidQjY#uQ;vOnZGpWjht5(YWwqO!h6jL`oB#Y$uEHWn2G zY78-GnfUCm6u2YPX0Jqkniftfepfx8FD%lrzQ_b&s^UXenyN_JY&wpc;s)$rB&=*n z+rJOQLgX9JhfEApECcTOF5VrhP9eK;=kYQuaJBts0BHoQL1WX$Y(LFHEJT$S<_u3KoEFMAYPZ*Hm{QPW>6->_1QDL6^Sie)9cRZhfXte1*=5uji>(S8ffqi?5eR zXI5_gw|)3}?%P6vnFsfita|7IvN}b3v>caKoz3o-(;wE2dWh&k^Z+@6z;pPND{vgX z?UT#ykXWK)RZRv?BC1SPoo|<+!gQiN8g5tlf?) zkqJxldb#*ArjTf3amVC3qsvgUu`^0BO}Ur(Q;>rf1bgX^pNjg z(ScFZwM&!Md={$sgLY};6C)Zj7NNte@3f<=t}SI2>NSk0Ej~0Rd`m0#Z0g#$Kbz)Q zHFfWVgE$b4yf(ftnl({o;R-lufRBSKh{#r@+xSy>L`aM8!#5qm#hGe9*=veW?1OY% zhcR(K)4G#(OL2xgx(~V+McS=m3soZZ9}$s^UC4)l%ku9-5(3^W(!JBVD0aV+rF_?P`aaq^`IFYaB0vI9%-QOo*@JJvc_8qgrvtaVz8 zudMk@E6qg66Q_s+WBl~QcN32Q!Hazwl1Rdo>k32Yx&GB_0r1?Gg&;g1b~dm z=7Je*1A<_8bPBF%4uUueOCb)@n*C4#Di7F@JDzge_+L;-svv}FA*i3q0Sc)i*pDFc zzsR%%;@v<>PzVYm#zs*eegM6DL<|kQsi@LcY=6r?7eg@Jt@Vvw^GE6*W_@cFvSK!~ zA4n2xCMg|azO?SZ+56MA`hF|gEWYe$S_MGtOa&2ull$0dG9y44(5Lu5_8&pX<}3a9 zbTr)yAb<8eXkR9b^P7J3b`Ae%1WjdP7ilk`#E$fVe@2n7dgaa^o+PtF+tNS3437ht z$BDh^Y9Iemv|hj-H9PrO>-qR!5l(T7o#?Olcn=aGt0xcm*rEJ)8s{jVbP0FmXZ;U9{8kfgq3>>-wscQBUs9lsNscVgSFhOeVQK)XFsUrm4A zPeN3&U8tVo^MNw$iV>KOgAexd=B+6<;96OfQy#FnOKDlMhGWm08o=aEW!~nx%X~CN zNuwDs$1j8X*rd4Q3|Vf7J{|0n=mS|u5X&U?apv&>b+n%(&Tj=ysS9K9L^0~B!W8DojKEkG)tz0b z&)Rs!@q8G&`#A3rJFhcfp7X!>b680V--{i?CzHXfDIWwV5#L9!nSPVUb-M9VlIs33 zMT`SQ2#nUSsrfiyvvFdL*T;8%g}PYmM?rb8;p0HPrtp&vt?RD{7Dv)V2={GcDJp6! zt%$wS4@a2oP&0@d;@7OO$Dq_k?(*^V5Sr*Q3Nw#GpjvUG*-RgQ01bJ0Nd@4<1|G%X zXfniAd$P+9;NT9f3E?=_hBJuI;~m{NR#FxK3xKxF?pAde@isd7Tw>%JPBKhmmhe}29lZQ z3_mgkh7!d8o`y|ZgWbQEIQu$sUA;xBjpUR;Ek$l8^Y|TDky>5tr{{mCF#+X@qQ+2G zfR=xQFcQE?0w&x?2$FE0BHUSoJ4|t416yX#gwcOlyc%1T<{0S3UM+RR1JJ4sb^#Fh zSjRhx_$bl(hJGJ^svK>dqJwP+C1cm)15C^y1-nob@4||CFj4<~qe;{ZNtE5+N3`h3 z)>fRA^aOj+7|cL6e+wj-)c7Se-MfgpI&6vK6gj5R5!z+9dJ+#Q^x$9{GDGE8N-+^_ zdORiaCX(8xR|L&Vp}}I(_VFy?s{9j3udUs@(tiFR=7qWT-ZpDsxOUhYD#Mn=(#Rz2 zp@N3o8omg9MOMjfq&y1?qg9?YA~$WGYq!Dgi45C(SV4SE$33u(+1P`?W+D`QFxP*= zmW=3%IYdR<-hzX00(X#N`WiCpfjdpCd?TsF9UIbE$4)B2Ynb?WYPxnOsV#tR!mE|A zjfOHlY(POu!;OpT+g!)rAiR+jp>(=ENo&oeb7hxyA;7-=_YGI-0pSKj4LjJ{m%^+; zikh>}wNJ;jewxaxX{6saM6j@uSCjO+QGLedOWRRl{kuys-rD#Z5L{y^c{fZ(*AN*{sFLT3aEsWzNdjO1%*jypuVLGt09mZ`IQN^?*s3ABnZe263R5X~qd6}I8 zx%sVNR3Q4t$!M+)jyKiaj^?6uag`M)FJ*2RW!4cyF25R_zX;94bYjDimLK7EmU5#7kMmIWIJ&$ZHKa*k_OQ+LP%Wc=qCsHRm2VY)`JV)fcy}O`&3##X2kk z2#1^q$#u;Rpob=0A2X4s#4*d^n;yWDwyhzlHorA69{)D{<5``__rY-||M3*oU70is zE`Zh^AQE@bM`WS##1gz|ypGIKXtj-{Mygnw#vOrsG@cr`xgu~Kx8vBaIdFdpnMB?= zKs4>3kI3i)#OMzCh@>ANR(H?`rb;xUpnE8Chf}I}U*v`^93lJ=xka8XH4S3@Pb|5M zU^3IZ{GVOu1A3iMzjoP%9kk2C$p%=}F>Ky4z4C-!z6|;5R5ow9UU{^$eEC+Op`3{< zqYL8HE6=cuvv^1r$)d_L8*X5gXCP2kvqYaY(q?$hM1IYmgf&Ir(>#@cZWcJk8BZ*) zHWqf(Ms9#G89aCF=tDCUo_`OhY7=Dx$%5Y*|8~nTAfa2Fz$g4UPJnd-01~_hq(TdLhB8u>4 zF^cJa4vN{7GswkTOZ`t%!A?Sg>tIMXiuCSSdbvpNjiz^o@dTB3`sYZDsIzk)@^;V% z-WVYlHN~xg@}dla4NL%lpdVVf(lrp;9%t{p^6v4;ol03wu+r}Gl$sO}D;ib`;ro=R+ndQKD?Qv^ShC(b6R z@Uq}yp^&_Un8$e+F3+025ImgET&Lm7jpobo9=V3m^*9i0!xQW1-VJ%x6xG?D7|knU zW#|4R%KiyuuERxj&XxKIEV`!`Rob2y#&0ID@sX3XE8coVyEOiZx7fP?3XEu&RO>no z*qNcZNf%GCORnP=5y$v^*yAbM!J0_2cCcV2?kuz>%>?Nw#dWqdAGyNxm5HD`{{`A? z7+;Hf%%64t14i0P+!OD{aZSrgc0H=C)YFi}zE<(2HNSU-@g~REF$`@(CcH?SnvUZ; zsaRyCM^fmhF9kV3BfkVEz_cyVjo=!D*qrdioJFc#y-s3l!sW~mXzYoHljf-x(D9!lWTTGGKj?TpeWh-9Y6p{6 zV!?mMJoS%}Jk%YNf7J21J!z#5TP8|U=LM1s@WQv9 zdu37gVj+-J{t~E(3h6=Q$#ua(oXy4#x8&+LxLTON)$ur24^eHw)o_z5v@O_4iX26Z z3cuB7rcSVfL_;?FbN*-41-f+v`fVlp?RH{kJo_yF&tN9?i2Q$kBGfDgu zE{#W-X^1i7v8}}WnS_K8M)uf_^;MX?M-FsNyqB{0KM?}KPchv;$E&XZ8D}FEz4qZs z4L_NbioP)WDF2w`C*9;H8T`1y==6i6gq}D_k)O!u)Zj+P#~ST87i-i*?n(-&#mDSJ z>Sz4$6#Nm{&#@*>P!qpFEtBiWKG}bjw&3A)H))rWHezB<6Ko;oA}Z*WP<+$ z^~@OtFVP@JH9lePY=^DD^1$vdq`7Y*1*_<)&3 zZ;mXY`2oM>aX*}|JKw|nW;|}?x6(tRTSt3cdEl{pig|vy^5l zVkVu+5g2eb48N(?;kGH_XMv`Zo0qcp1PaV42p2c#R{d__A1o4JgcMVW7%DOf zM1V8#0HsiBcB%MEU@ZR;27y3o2U5HN*oU-uofe3pn;Y^FCm|CS($r7<)*xkZKcJ(B zIQM)2f(A4LMg~*E$;>7K(ODg_jfm|%3gOYzMlm}I;q_y7Ltw=5)Mj)8yOMu7gjWjo zS=Xr5eA;y6;M$zEw)oWAioLW0jE5xFmfTj{wg%Ie+RvZCZn}tAjt4u~yJ-!&0lBM#v%>A?XOb@X^1=Fv9Sl-lu@ywbqok0T4kwgdL>L5bWy^ z+r?93!dRI{O%q}))ZaA?w%P+6oe|p5b^ayY(+7`cDI7Mecmnob#TH2G^juKf-^a<< z3lKn$A?NO_XTj!Sydr{Pu*5){k@Ymb#F<{4>THMaj63$oVLjkzj4|Z|MzHi7iD?sH zD*<%Wx9y-)ptQCbjV;|XF-XLLGsOAO9fXg{=@)pLQAx`XEp*!^P<+$BjwHn46Z>s& z7x6xL!mHXk%a(YN)>hgOdnng8X6hSPcWgNXb(q<)P1V9XlW@)nsx;?(IBFBYzHmZ=}fREbPID^qTnYLTf~GPPc&DrD+W znOagx-9(MlQ3k}djHDzcf{lLoDK~zKgd4 zir!w19*oFmif=}bJU@Uqk)qyi>NT4}iZ5K?QPEBl>WXs;y2n{Tsq;a|q-5AsL zVc03e590w9O`A1|s!jLjhVc$;%)zX*!32sm#ViQ121|xQ`rdhzhS7)qi6S9J--rG@ zkr0QiKh#PI0xJ({VJ8i`z-X#uTb97d&LH39m`4A@NCKr6JfUi4|?|qqm6V z{a0Bjtv~(0-G<-S6WENC#?hTo8!{_8dcH|IAV*KZz|jM6DBu_xIdn^8;K)HN8kZ0s zMn3HCQfWkeHLhOjpo_Sr&H8E~{@aUEx?DI-vv>{$JQLjj-za1{SV>5h{kY#@$|+u409sR za~Xjpbf~oktJRiac$Ze7vbWWy4u{CjL1dt!lwH(*H;#28oYnff)a1!BbVrqOp4rpi zqBP?N)wg5UDpW>q&{{2OIhttu0>6%~dHSs7hNr*y^7?PNPP6lbLWqswXM_zzJ<)b* z<6LWFJOqRFcI`b(h00Hl_sT`+T~=&R&v%1(dR~101d(N&|zXfvo}Sk zlJ;-!l^ua@xH+^MuioodaPJ52kRj^Qv<`O)byH~Wh2leNeq;O{f4B`!&FwJvoz~3; z#VXgou@vr4sj~+b2=^I&jZJu%IJ)vugD&aCNl<9xcObWt(txGh$LC>hp*9pqwX~$- z9XG#ku$I?w2HQx3LNA?#SSY0Nw!}~!aryX7sL(jIv^KQJ5*XiLspjw%$$=)~r}?m5 z_vjSiJ!85l2UW@E8>cGjAw!UWA65prw-Pl9sP0U$f=rriaNB$_=r*QMgZya$MUUc| z`Pt~k;h#T>1|6%g?yGi%eR>)$sVua2S_nyz$A(v#;EuJ&X4OYw7&J~DuhO28r~kjk z;{|$U$cmI0X~E+GTT5zl681yvEjKw{Yx9=zafJ{AI2dK5(attbbywP3QVoy2*;0lE z&|K4L#Q!$*E9#FMFXskQ8ZQr1{{@(=9WxAZ9R_UT2rbBHNiE3@SWAYfsb!J#b0fbM z1xHap^Bf37{FexH8Wz{-nXbc;q_XLaQ*Dr3cvs-;cT4RXMXqK_ZF4_&gb*xxA~6sx$(khyanL`y)P4IF#?5NZUH%1V)P^R z6(5$IeOLip02GA^X%_3}|Mn(9sQtL4xQyC_b`CS2;|rd>N7i7+n?7o;dCCK$1_osB z34)@JA)#WglRDz>!4Z<>28JnSj9K{k<5hSyA^!8bqHl@4+tcrQ%d4-z`xLOI={G$* zu!b9X^0!_Pcb;0-jlRXXuAFnV=ATa5P=;~n(p zw98ilOL6clWW|p+Z^7Hkwjj*WLpM(PFhDZdNj@3TYBY-XNv?BmDyPZl6k1i^ZQOuU zad|X5B$9A$pCrL2NVt!mp|l4-;x2v$hn8~qiyTJ0VRO+}*M6-_y+bQ~dNqtxAlFad zyc!oo@fu1D2?usV8Z3CB6XlCHirSIGPuxw@wY_MOJ#d|03gvxvh<_-vS!Ex73VtwE zzCl!#395SNN2pKo2Gsl+O*2K+c1P1ZJeX+T=9^K}eFJi2+<l zi%;6;*v2@85}1-|h9AeAy9_}l?UKzAd=0q`d9`fg5^Z^r4F^~4n=cXm^?$&N;x{fY z{g$GH)nT1w%Qa+1HkP7HrZ-di(bDfk(@m7FFa5`8I!NicrJ-p0DN0W*{dP3Hh0=GH zem9zKq4Z6qdy-82sHj9nl{J~*2zvr?njV4RM}r8Y+2SUP=T5N93>ayP!wE3&Ze!> z$a}0Kz6A@<4jx%(R)MuK_pdYv7vi=wPRC^W57CXTYlhb-ZoF$Mm;HczD^sG3*at1%h5xIe9$6LsijY^WE>tEan!{9!{ z7IyKEafC+fhd)Y9$OX*avp56573}K8k8YVA0MAShPR8<1-(M&`3-C$Tg6UrKzawY{ zA&=v)d|+m@*<5N8YC5eUWi0g#y)6pA_>LgbZof=;Xgg-MzSSH{NO@S@FCc=mf>s< zap?*-UP>odDVT#4OHJ<7)?w!+tHnFHdEtfT%D-sK3ULCGf^v}u90yvxd=qYFllONY z3sIZ-Zzos6J#ZHva%_1Chyfd%g?u=-IW#`nar+#%c)n{z5X=ySM8?1qmOx(KR}hDJ z6foqzHl&0qFJN0R6e2`bxQanCF>4!HKpRM553&U{1%YwudQy@Bd%8d3s z(*edr(=0^VlH95XNq36&keD1>d$FF@_7nf`O5cHI#&FU-{5aAM&xMQui2p-WBqSEc z)?G*#LBekc?A;nLl~~~2CaE_&UU#_;YgZuYR;?{b6T~Fxdx$?hL@k?u^9_;5^*bTt zmBm7mj^J!+M<7iy=?vU~W5!-xl=CG6fO7;L#Gj-F=Bh}v=XmN8l(E}}ayFs`uYDny z<^_()Y=l0`QP}+_Xp`$Osb(Rm<_;tq_mj@x`Uw&02)<0CR%lvLC3NerfM9RCdh>-M zgn|_SDz0>{y{%=`%<1~`)M<^Mr{j$PLMnJ|qr0rx=`P!R#efQ}`GEDvD)~Jm?+JiL z9||Pb?#7waoPe_k(u+GBTZ<_VFRLL6wF+!^-x?!5$q}RuO(2>sv1u>SfB@~1 za#C5My`G4l>3Drq@<++f1_m&^=d=L;+1+f6Ko}SSoRPK`MFYeCUh<~j3p3z|hI;T@Kvkho1<>ZViVJLB*6Q{7yZ=g-NQ}%= zxb@lePv$5Ry$UuuyrHHkRQXz68?YzuA;98~HoYCeo4)&LwiK$3oFz;!D!W*YThY{~EWSTiVmm*mkxjSlY$e6p~$BK?=EWA;yh4T0)Q6C`yY!Kp6%M~kh zI}?QDi$SrN&Lp_rsprrAhd2c5^mCf#x8TT(IGJ-r9m7AymLux&c6^&}4ZuA1G|&c5 zV{#V}BuwsmO|a)8d zqMAS2N7EP95N9LT^OCl zb^HghB0d$5k&mMH!3*)aJ zVy*f{tG>~uZ?w05;vC)@+UR`cl~>-Ny#`1c!1?dKNflc%EwGmJ)Qh1lW05?7J2c3% zA#bkwf7yE*_^66|;s0!QlPn~#D@F|(B}!B@Qlmj7E@%)oL}f7$lMpqa6(U9y3cG+U zA&G}*mg6dIwU<7{sufyWy#BXaFomTFX*1dZ(T{mt1;g3x>W zx%YWK_x@i3vomLA&YXGq&2MIYZ_}+#vK+(fj%2XF_ivJlvG8NEp(=t)%DszBq_^cg zSp|FP&D_R@6^X*n%jfiRbY=Z#WNoRJh)l>KIiaUMC&IO%&9%YqX3(4nc-akLlpBg70%syi3%G}N=#_QPfa55qpcKP4K*n#mJcIQO7^3xtluI8DQ>;u#R~gi;hOm zv&!7WDbt%(w(8^Gl`d~<9?uiwi_Tfb|;w~=xB@oxje24)#UmdJkn zcyC~s0WBfl(VrOEBJU!g-XpdixTd|2;*~i7SQX6!!4*@)UQoyA3RXKk$GM%M*?f(G zWJCWfm7!tKB{${MSl5alOXVDrNqcZMo_9{QpkL`hA1^dLlZNQW4IeG9Ae+VckoA!;G)#L64Ujt%$eHi&nR*? zp-|xSl|xr-b*%sZG}nd#X3Ey^ZwU`5CWB%O-yw>*Z);94&=LCQA{nH>p-A@10vnU; z64!?7#4-q7*0Hj79Er|Jo^vV9Hrdm&_^?s!L>W@Z!0ikivj2LE6VXTRW;(PmY_w9h z)`=p3uPMG!RZ?(bDpCWX;3NvVtaSv$pkt|Q;m zw75%(UoI-AIdpnx;(4zgr?gt9GylfGF=L{`JdIZ4Cw(=%fXG)Hs2j7!_~xs1`bexB@uH|?LPGa;Fo^XsKt|wz zVx`As3AVTAj<@DXk-7K%!vM}t6%|p!o$4Ql_;~5`_@0;ff-WD$XQcx zqT@O31I`!|ozFRxpZc5=UtL$p#Y5HZN@L1I1piXKN9l(Ah^bP>3(~G0vT{m#MngkR zt0aW21i`@7Agpx3Fbxf3+a&GNsG7BXllycvoBJyMCS6$`JXdBo(wp%$R#wDF4wY?} z(`0kxLgD;n)_r3&x7d6{-ZFoIuA;SyMI8E^4i4HK=7TJ{eXNdQRo|MWj9qzaq7a^` z6)S_aP>Yz0^i&yu2#eQvWIc&2({{M4#v_{sK8Sc^UrJ;DLueKjZJq2KwYnemjG>RA zkLrz9`Ywjk$ea$Vr*fSY9RZ!LMK70CS&~HRxN0ot+Qek zqcRBLJp2ar%H3ZEL4N-Dy?>;sbB%|k$B3Ajmmavycv!lOr?YrEy~zCZc_!TkdCRQ3 zgdr?99+o!uXZS;ZhVD_4A-X}zGykza{#OL$#YXGJNtB##JiLXc(K3~b%sMg{4{s;@ zb}c{It?-#tRD0~{PE}YVPi6^0=o7}n(*NVf%4nUFw_55X)%`XLY`Z~{%*)7FULIQB zH?}p_*q&x2Q~MMufmB7ZWXhY>i>al_j{fM*-w>_0s-bQzH9wZe6UG?cG`2F7b>cCl zMvkZ3KdKD!O_fY_*1&U0&Cdwx*J$IK!-z=mqm)tMHRd6j_Du;0+O(DQ3k~C?I;3h;ZmF^GeNf229XR zpGu9IgKv?03Ol`WkhI$Ew)SnRfV`zd{ig#o;HHRh~?+bm~7wV0LVypF|MmWIfn*XH;pn)hs^UyadjwC2jggQJ`swz{5$G4aRLR^XTo& zn~~-GoySH2=cbOUQ}eX*74wCce#R z5#PQuGMTU#KEE|9Rr2f%@7%xh@Xoy{TLVYCzcM<>g>@}b+})qrcPR_`LYIfU ziw8~3CgB|Hvght6nx$QDyP19ZxWB&4{Imtm4LSb0o=|YC5>ANb z=&k8-i3xuyimqA9c0=1_0_#~SBkN@33nN-=oGU^GrEkg0s6m3hPS=-16(3R--CbsC z&oRIkfl6AOb;sLT7M2}QIcFJ3tb2nbXMhEDcYpe)Gh@cM0omx7KS;50)g+yWU>3QkfGRru0NP~*12AeYomLtlVcU~Y{^#wa+OL8P|R+)MEuXxp**!NPf;!q?d zcwGdswlqnK?@!o5vD-Lgrcl>rO1*>`5j%Czu+os#GVr)8E+Zw8V~w-wG&6+>Tpqo; zPx}iQ!3Jq`^+9m?Kf^&V@|V(eXDXT0_6W58`~k)(&3W6%_A~M}n=4f2Wn@OXKMeYb zQr7cQ))k~jueuWe>r)K=Tjf=gbNk%nR}uTNq-NzUYlB2Po}0~6Y|5$m4SLw*yA7n4 z2f0@%7f%>xZ>k$xLi$%i4$D1q!IBb__CRIPLo|0xXQ1y@l*M)haq*dRgUF9iQ7qi!I*u zvy6#Wq#wa-dzo5>uJHE2uKaT0UUNL>s4{DIR-4`T|W{ObzKv5&t+F zDFCN=@B-Ney$S_S7L7onJ`|!%G%2Pk}TL!99kt8X9P&Z&`iy{=5!S=h7=14am+cvkfNXUzyB~x>HQ0* zAp210c{xedACTWS56SOSZ>ZlM_1ms~kE-9j>UWd+-NUbW0VIXIr{vYZrRF=Y$M^H* z0|duD^)m5dOL0AZ+?L|kNYk=1?s9EB6BCC|iS_E>Q%BUV7&i|-*}-q6XSZv`Msijq z+;0C0>r2F8b4<+UyB>X-cnlp@>OErWaN~bq>ToUZh^a#{kBF(m!d8s~k{*)w&}cDw zjonD~s~TFbnpoeXVx)=Tzkn?G%6E(%W^;dmGHSJhWIZJLo#D-WVMlmFU)UD@9pO5a zrxpMW|ANOsPsuCcRRk+_W$dukVfDUI(;IwK>cV*9$2J2hdZ5C<9lxOm+3uov8m95 z#Y4RZi--S8lGP}YUJJMIQ>kA!FL0Lqt5~!fnur>+@NY@9I>{Y=sxO=w{xM;!Ea^R0 z2S!xt%M--xVT&X7I(-#;y-Hr`$+hx`;Y0GQlm3g=Fnrc0P|Y9@mJi3P0HzPer~tMP zvsD1&hZm>-)(?lP0CxDqlApd#V1!N;FrFTIMS!ifehHKH2f8h-3lmksIaTPjYzAcOl9t&KP`|Pi#MKq?ozz1!UXcehH6Kf(IUs_N&d`Mj(>{1F8!bBD*NKb@j(1{9NrUF6VFk+?tru2WG zWyE-nlPn`jp>lr1GNLr8Ec`9QYIT$hUNH0qu`$btcY;!6I$)s2vW&Qa7co>xj*H2A z!pMU}fttI?S(P&bDBeycLuJ()r}4alXUrP%8@`TAanp#Cq-dsmlbA+StGZZ0#5Ce$ zWg2mEub4)hJkT^^U#3%;MvS*EHYGSB_nSsky(gv-C7^%;(}?my+%%%Z#{nd68c`}7 zdgUAX$WZS^)rx$AbwqMl))CvkpekImu znabAeY(Y50@}4UM$vL*7x6>m%>$}ss%sUTfDmQgn?EG4RVa25 zudqUn?-ZO9FZjHZ3fAA;BW(;U(BD+6!t#3z1>=UQ^9fivj*i#xLRrzx<_jF%z{J?^ zBZB*|voKdm$ZCxBMe`pqacEbwOm?&DBNtMilP{e2wvVdliXWb@O1qCejM zo1FC|hj7++6r0~rSRZFS2?D_t#pZH}D~g^m3JLTmFW|h3M+YB{ajAE=&xZQim1$DbH+OqCh7};)0J%;W#wi@ zumE#6j>r(>df{td7o3^SjRe?rNjOdD3$yZXkJ)IlD2yW6f3eUQ#i$eI`iEl?=@k~V z%GBs*RIoB#gLopkl;v?dFpAh-kovstKks>`|Lo{ur@7|G>Wyw-1BHlSlGLQY!3&J6 zb1@@(!!An(GOv>3U#B(J}X$=;TbP>bE|!FqcNJcY?R7I4$ESUP<~Vlww%l}s7ASZ3TCXI9C`M;ln@)W5OYf-Xqjk*bHXi? zwj)glYlG|GcG_D!#}_+2J+6nIq2KF{)dGGCGvbu6)5}WrKfCl#T^_D)3nYfeQMv9` zwlS=$P`sdfAv(P9lCRc9vz{z^2g9MQuSudFb}Zz62)n(Fv)Sxz&@r+?cappc{}7L> z{QNwF+kzXp6Ah1K*pm&DZ7T~BD7Im8g5F}+TUFuP`wB;Xyf3fHWrLZB-3h6}ulsVX zvhwIHHmM*4J5n3^QYm9H6&ZuO43~w=z@_0*aSog@>9Iq>Nsk}GH}OsUBlt(~JMla5 zkK!N2@4@fE@5S#8IYKmD<2JpXcyC0d(Q|QrT!WO29>%P#&8wuv1H)G9V=>h6gdU+g z;(0^Zc z{AA&#;8qscNA7HxY}Y?iz4y85y?+@{wA3w@r+=(IOVB@8qtGxQ=c)nuXaOyZjoD{* z{c{;v*F&W&2Ls-q>}ROM^SJf6O}Iu}8?GJq368$bpszFV)A7^s)9};q-T0E8iVrdQ zF(ZLr#9~pbxC|tacsW&|^U@X)#tsO89Rvs(vgt3bg)L31HaeYGF z*bm_E3UBJZ5Hm1FHA0*plOO}kf6Rq(YB4ZU3Bka~MQjo*=V(ZX9K_N`=SpWoYEnLz zIbyNmD|R-gq2Xg*DQ{VJSt2b$jH_sd$Oeg5y0iqb)(` z(zAmX3b>Lr2g)9~FUuWnpvHFmIJ~f1v&QIOANM;vUoQS$Xw2f!9lv)QDQG=iCqpIGS7%*L~psI zw5-^`>`dC>YAtTgi#*=AD_6#x4c4dk<$;4jAHvt|=ym4*}u0T~ToA&5uM$OJdX z$5>2w6l&8~m)A=Cc_%s^WKw5#JCOHMCEry*9dN1suXyic!#qfX?|?QmaiO;;WX@)lPxAV_rf}1ABt_`I@>E z?7&K*ScQFMksMV6v9!_OkPN=AZZC~rU7F8&ZhanUqT?Nl-zhaulV|fE;ikqbA{}q8 zA)^0Y)hWVk<*a(pTyaAD7%Lv$z&5Lgg$?BtHq@_IbLiW^bw$3TD@)Q=+-f^FaGo;d zI_w0-)JU&emUZSCl5qK_tc0gkCx=Sx-%3 zOAtB3{3%95tc{cT3xYvW=Twju#}Oh)m~PgPre|vA?7r*@t_Fw{o^9S9%ah-i$NXd+ zTfl!+niDa(Lb-&dgE~9e=l#)eVCos(%_!N6Y`}nkEcc?btF(9f6?bE%&fw|HbOx@1 zXR_l{88A38JP$ufXBLgWibJT)#`hUHz#Dcx{pYH(J_SkeDoE1d#QW(jp@ zM&q~I$wyWp3fs?^Iaxk3G|49KKEu0lLc2b`Xot;x94*Dm*|a??4Mp`abt17Jze(^Q3}0uT>{pz%44wK6v5Ms$d!C4n36s_`^MoEe3|^%=(`lafGdfN2 zjsxdenUY)^hGJG}plBJO7kNiieOw!oip&>a@hF;EwFsm&2nkC+W?OzC;_AyXb9Z6O z%k|{u>A>W)(yBp<)tg2O>l?`}My1>y^~%D`u`_KjUTWoi#Wt=4eq-F%@NI<6v1vwg?~ZORkjnq=BmGzOp(_V7|Ik81~6I8e^pp7&RSAzooU>` z?a0P>cz65AHe<_$S|?=pwuOU@rt&Ay-g9I%kCr`jJs0@Jr||%uL`k|e(RME%0ps1+ zcH`J|?DTrx33TaOqsHd!rb5r=YFmELn;xv_$*af;q|nhQn{m69H_Nz6I!D?vsu;I5l%FP&UzJbR``oCudNU;EQ2VW;3c`i!Q%m zK;^HN%6pnH{q{bRlSVHVf9JL)OU)tLMb0iVOY6T|dFX5jm{0x2e?3ZHe4M#1 z@`B>xyo$_#qqsPdgwPh%kZg2pmL+gN3(Cyvx+#_S%&Q0>s8Al7a|o2h@izC5=2G1{ z+p>Zxp#g=hdpPh$1EZJ%Qc|qk^gelmBJAofTExvV;~e{^g}_W zKtY;<0u1NIp&&z`01%K9WzF(&bx{DcX33a=W51e%>37HetQ9A9AC?RKuZ0}f7sKmom0Y&yH*opq$Ivu=Lq6rJ@Br!~4sbr#(} zu$v-k?q!^+o8Zi z@(az!l|RLNMEU4wDgRb;iSlQd^Ob*xd5`k%G-oM)wpph9x#lg(pJz^1{sQxQ<@?QR zl)u!xT=~n)i}9rj8)}&}=5UGKutI`ERj@&Vb`^Y7f;}Q2v|*J5|Du9VNbsNvu9o1R zRB(+1x2xbY5^PezwG!N*g3n9v1r=1HbI+(?qr^U`f?FiGQU%*2SfheWR?YMiR8?-5 zr%II|GI{3hD!5mIMJjkef?gHukl?i{cu0bmtDq^tEEPN=!Qm>Xq~nIFV5h{|Rq&_; zdupZqJrewj3JROuJg9;~(>DL4f^uQGxm^WCwAXARsH!Z481wfkL4-8T=T$IGf={WS zNE(?xQNaueKB9t|5?rQ&SrYt#3XYOsr3zjq!P`|ZM}kEvI7WhA6;$`bUaNxRB=&L@ z%$H!63Qm&Xa1|_+;8239%2VV?Qwc>9{A-PL!L1TJtb#Kn_>l_UA;CQ=c&7xn66Dwt z-#%N@&R=dMc@mXuC5O0QlLgyQT-ta*q%Dbg!iqu3wIdeukQI~TNp!MDkvt1j%;GVg zt5Q`A_f<&Di63&UILzo^wA_<;C|1%~t0cE4(Tv4hWW}U;5|6}U(yW+tPhw{*Cc%oy z@FX6M#dI!Lwa)Y;_QYa7v|_S6iM_Fy?N-cKPog_k>({K9ah}AqSj_WQOui>EJr?sb zD`t`>F(VeU!ip*MBxc597OI%VQ#@B?shCppPKlxQT#@pVUlMGtbba19jXgNm8gjg; z!NTRinkF;Ze@#sIu+mjy!%c9@Pp16j$WOlf6v@w>^0OcmtfdPJ1MM8Gufec1+A^+) z9jXGUw$P34LiQa8UH%MXbMF48!wG(8aCqoO$4yv@=&<{f8ir3O419h2jAmnR_kO+E zosH<#bYnLpF4AlhZVG(e6p?o*$#HX_=eBT3l;ii{=owDdf#*bUEH1<>_7p?{!)KcN zIC()G4NbI-ml?Ojg#{p^R*(e3bu%J?V1=`(+UXSC0Jc8LdJUIDi(a;{UWcvpI;#>I zygdyS$6CB!i;?Qwtqm1DE#70=1WICAT9C#*Qf_OWCW`5lgE?EX{+K{=CVlB1>pd#_ z!%mUYV2Mm~ZS?kz^rqHUA5{{4ojSS|{n`ayw?3t6pxIC^e@E@%8oi z6`9{FHS;Ax>@r+XYK|ey>7q1td@{3m=0H*|H?by{M=&|KGCwP;W?X`6h2XJL({8;S z^;1yyw*G=5ga;P1pXXB*gc*aURY9*=FROxH8c@)$zEjXoPAUk46}A2fcD`uYRwar^ zQjz%%I@OBD?6*!9kqWu>xpR3=bgEds~Da`K2|>IIJDONSUkc@V3)NePi5jDQ%fywU-gS6v^ZbQjL~Vc&j1 z5KkG3{T$2F%&DA)V&trWi?f|)u$2{)CQKEE`RpP4e#lX15YRZ~V(%`BqkSLXBcKoLKS@8oCs z0ut^au4X=QHA{%AsaX(G8-I;QnZdI{D3H}SZsfK%E`zoE2MJ-eVDgQD?irXHZGMfjkCxq@y=|JYIiBIn zhO<71=8P37U0Uy6!rEH*hF>nB!Tw5V4l zqTD}s)5p+oIkx={>RN?tJpYZe@^|TNS3*lmGYWg5w{2RY=xuJJXw-D0C~LZzM&%Kx zJBi#TM8rv1?vf$|`5O61%>GP_c32cboYk@{L#|OmI~1y6)PJqMEbFqUKgr|Ix@_@i zsD?)B?}JmaQiW`|?Dx}nMW3;vZOO!ZM*ooiedQTZRZuEC3{}t< zp#s6@@hhie*LpYo0isghwcf+ckx#_wO>)+%WfZtsNH-QL;na4|Mlx5O^@UeQdkqUPHhnQC3`9Ujk2!9>m9f4TP=#WE?TnbSZ@ zeYbm$mhV=8debB4iWQ08B1j#^H!7;4*G%pEZXUOMr}TAOB-v=bQ0Pki*L*9aTxw20 zsZ3${qGy$@zvEbp@2Xuv3vGcE{dhtkqbq+Bm!`9|Ig_kaHt_Qhc?T;kLc+C4I0j#I z7Q2UDAk8|umzot38hw&Amhu)IBu5#Flm+Wk+*u_!}u^!0bRCS-1nJ4y3fnYz_?K+0p$mGW^BeAIH=PPzkVG3I!kAci&D@ zjPR6>K`>EdFwNNysm^#yc3hqh7v0M30Q##h$`~zAlbx1W!Yh_DJMmmJHN>ckZ^&Sq zvs}82Iyt+!HaOD5LbHi&maI*b(HxcoBfBqslU3#wr`*Iny@R$5+{E=ZRD9dwJ2jgp$$qZ4#rtjFe$Ejp>8Y|$pC;tYQnq(eVe=7TOmE2&3e4g1U-)-yq_?Ow1YT!<WJyB8r`NU;Y9`cj zZ3hzp9f_T}Td(c#4}!%XjV?^+-e)x3E}YNp(F?PH_)Qn~Xzu4kOQ|)nmfv$e*9fg3 z^zLU8Y9QoPagP%E0ddc*BG8&B_uxL&Em>9*3aQK@wDtL4Bu;L={ShHcR^Ehy%Pny5 z`xDLkF#fpzV4Rp-j5QxDX@PKN8|N|#Sj35~XwV-kQjPn2jk|lJ9k*|V0W_oh5l2?E zLqXXzD?F9P}mxRH)HT^ISej;gB%7cnSm-oZy&kj8~ti=nZ;i z2i50Tt)*y1NfW{NUTUJ28Enn<(axl}-54SQ^FwBm1s;1$vc`*?dTFn4@uxa-cbFZ3 z1h#&ni_=hAx9GWx)yCjw*30p8rha5>ab2}@B(owgY|}%B;doL%8zgLXlaW4WFBabp zyhOZO=|jG~xlQWok91}=ZNie9;mzO<4CtB|Z`0=-Wu350W(DUQ4c^}~`&nrxH~xjZ zd#&zl^|tXfCJUt1?QpGv-gfi*zov(3YgNuYA@6oM_(XG}C41OD&uK&c1YM)E`i8}* z*c-IRdM$!M##q6Iw=I5ZnTDA;IvkcFH%jbzK)TwtKT&BYjv3ls$RPjh9F%|guXOOLq3Mf+u)&zw!f?})<0QF=1NbR&oYUSIyAh! z0yuYP824pHJNR0E_1I0pdztJumI%NZA4am-Ey2h5dVJhpL+`OReTj7nrA(s0&3r-f1)LuB zJ_g5rA*_kA(5BHXpz%3kPTeUTD5Br7n}=a{f= z%v`w}KuiJ(oE@dH`CMYRmdO>w(jL<^23jWQ&;l*Ur($-+{9oxbrww!*o4`#2w_Dre zax9~*siq(5`5+_fOV?$NEG)Xlw7pK#k2v;?%bHQCchsPLP~+dNGH2?CI`=j1yEQBQ zqh(p{k1)CjR~&(ZEEqQaaUX{3cRhICzKkp*HLLCmx}dhMiK$CcIz7AQWGpElPw zmIuC2iKmgso@8mjjyR0skqVX4;Ha{4P{YuIl|vhnRyM61TCiek;H#Nqef@S3PX6Yl z@=dRErPBy>B5ZJm@iSG_u$9BE-R4iuU+JWbzpiwOAi~v=l-gr+{He9ayz!LJjrPLY zu{r*)jmNAS6t7IbcKGc9Tj9#V`8PDk%Uwd?p4rE-iq&A>XMFTP`bQmITPFPQJ9i{b znFFMWHu~kw*traB~`^v%@17!G$um|8> zb2F;>ApEzjo_&D}%%4IMu!K6UArzzR$1PIGWaZMH#ryJnsmr-BF;#YSdgGuxuUzCa zLtecg(p)yym+n8$C`p42=1X-w-G~*hYe$RrZjb#PqshElRvRvsyMDCsRUoOwK036> zCg@`M87rrP={g&R8ntRDw3S*xLsD+zST9OojdpLUy_0SQ3t`PKl9>IWy}~*7QS4u$ zK6={+(nYCY06&)nVa3gFZ%OhRlT&4AFGsPu@WG_+y)6Z{(Wp%{;DWtsnua zUC&^79;}}2#%8U+(UsW94#YOgpT;%j0aukhG{IIh&Af^ce zC$=POk+Wscy?exZJ=gKH0t0UIFslS7*gkpCNpt(iIs!WV93O$K^As?q_rXyXcO?iM z9RT%3VfN&TaibjOviTE^?s?T|)%IX@8tXomBuAQKXqW|FTx|t-nL^M*Vo(`837^CJ zm?d1i7gVY@rnDr%f^-8}$H@z1waJo%5#OVXCo%-#wAZ4j!W56(#${C7T=kgZ!)aQQwTvFx^q1rq3r;U|&UuJw!#I9ifM z7wFaLdP*sA7$u}aO05z&#YvTH>NFGxOy<@naxk2`9c7Bo0p^6gsK zL&}BJrZ#tLN*k7(DbT1$r;hRBy7!;6pW-RixW%D=(oy%ZrghdZkj)q8?n-G2WVI9| z`!BYB@F>Acf`eAY(_AKQwKr( z>o0`GX^GRb*`=%~1WS&xA>`aZ6VkNhQ_!#&S<+)9yWaLeay?piP(Ew^kWE=7_G4Td z8}**N#R+!I^Y-ZX_c}yh{HW{2Hb+y~Q4sZ|Rmx6?5#k%wFR6!R(@tIF#j402=i)1% z6RdRB9;@_YGqM1Lpyd=sK124%pC-|Hf#lleYa7xdgN`>fU|!{TKD%RT3QsewDyP)^ zh&72>$u&pdquQ}rAOT~XjK)8YiTCmXDk+*H=F3cl-2E2{(2U%j?LAUle$LLNt{RLk zEF1)C$Yxw4Llll^;l8occXz*U9A|VqyO(9XD)$GFvuWY*;%U>1%pf?|k<*Y=5G?6L zAaysu&0Sv0&Z|iTzbrh9{nl)9-5twCrh);vMo6x~3%MJlYB0IRpO7n9(J2K}4UTXF zrbligB4YiEANy}Q00o344r3o!e5yIpFWOPev35?9)*SN_IssjALEEdqqbyE~|5Phi zO`pNl;bOxaY%DmorLxtLo}-q;$iN0aoF}{i<2x10- zPg8j+;&~k80iX9{a|WWu!7KIA2QTXWNWRat+tsPdz!0gTvfFH)4HKZODhKv78<3Nc zZU1)hyZBZ1tKim|r6=OnLPUS#xOGz@>Jgi4^1smv3IHSZ*w&IH+RCxCK zhghiAXjaG;+%0I<@a?tl7=UQ)twm-n1W9R948Ov7PgnSr1L?cwRMrL(`z+QS{(c{3 zJ*fep$g-+4XO*4UfJe@-8qkHPeK#yZEPVVD&u9%lDQHfK(0xi%_U1Nn&xx!JjiGTl zP@q^aF#Vq0MrA9Rdmd{T$hp+^C#Q;@l`un|Sp~>w;XQ97jP+xQ*rXzsrv!xP#7 z3zpKFF~6dL)ou=Sbv2G!5^JylxCk7K&2?;RnLc@|R^AfQt0$1=|2~Jn<%ympj%A7F zt9-_2F>Y}hW12AP#jZe(wED6p2UrIqS##|?7n2_KH#y7(B!;9E*`ORTvnd!+yE&#r zSyeCs9byse=W!uEaJl+qqFKa;D9_yXtVN>3yo~uTP*M7uw^nE>s(HmC`_w6mYMj|;eL1BvGc`u)*ZV5KX8`5G(+Recn>e?l{=xOk>(9=#kY+R zHw>GcgY7N)gAQ#O3>R>Ie_@~s>|lOAEcn2Pm{b)a6d=?ibMLG?HZbZK`++HK%-lV%ns2) zfkM02{79x-Z39IFy?e}^>giGS)NVHO6kIQ9<|aw-xq}UoCKY0i1citLjY_7z2uGEf z-|M83ThgErNtVcb>@Jue(+z4k0u-S?Bg2iIv@|MLx7<<7gMj}n0{+1COn1ymn5Q6h zQ985`9hMS1Bs-HJTa&g;uYdVl~Cn65gbf z-e{J)>wjbQ2-d!Xld1P!^D^lM^8j6Ea5Zm(YUvL3)NZx3?m7k4H|WcO>TyOv+IR)j zL&qzaP9Cp7I!mwKu8CkW+EVHCu=x^TDdb-0MVQ;ZkPawU_nVKEvAOD(0RFCE31l?4 z&_=eoR)`?V*lA8~0w4hO%CilPBxyn|W`ZP&#sNo59jJVyavMAskQAeQG=YtKbV<7T zXPRs6nZM*6j&1MtMSM(zF*%*vczg;K!u+Mz82O~|JCei^0*c#$^c5rgh33#{ z=dr$spA!*X63bj_)}c4XHbSpSbGYgsl7hsV%rfK=%OY#?%F+X4&FQgs{dZ9z84!hk zZ>12)WqsA0r7BZYYUWr4M)J(F<5@4^y&>_33~47@W@YZ%)s>7m_Y9^vAb2Q}Xs&y$ z4-GKhk)gn*g18C9bDgpCDaIe$bYrp9rB2S{Iixz|Onlv{V6GfU~rS z^^@K$GYgI@AS?8bC=852q`1IYBvtwKH`0rkHcc-!{|wJPk{(ZabU?}CG;j;rb`eRrT z*xsdM{;#x5ko$OPzhI&p1ry!q#+vJefeLzgTU{Y>ovYpihY3b_U66sR z{t}s@1!;&653}$>ioy%7dXbdVmuG0M`XoZ8pZ?T036kM#{0U{4-zUaU2o~C|d8<6t z3W7yU8{}#Zh3hTThHl)vk+HZgaFIepnby}%#6l_ZC33DNr#VP{N-ZL;6+ucgyC0)) zwXB#&2m&V9I9;!njs)PToXzPSNdAvley)%Krr5c+3wF3UmE9&uLkf_BVsJh&|FVH& z5PMgr>0=Lw89s<@A>Ve)EUuNU+HY23{>jfo6KZ~|ce~oZ)jWD)|E*K~;k2wGWNoq;Jz2HiZ?C4DOQ+_>srQdNfc937#+%JtA1iK)pDE0kh< zmh0-e)yP>m*h~vC@-F!q%uj6Lj?(vfb(WlItR<~9kO-;}ypm<+{+rY;y(-GIb3PTZA>wb7thSVLY(wBmpQ~`Bg z%Syg*hU`lH)ARBISLzSC?F%oV1{g$Uz+t_3= z0EV<(YcIUkIC+|Ci(-}UZUz@njIpgx7kRfThs^4NKPj+}xGm8{h5_lsLcPNgqj*@> z590;Kn98C#V+@%K$5reEk~z*+hQbIu_pLso`iZw9Q;1ntnqN(g4w$cVh7WlU6k!gU zzcSc{mJr@s?1`D4RFI|2<&=HLs4njjdmtOmci^2KdbkUoo#$w2+>_0)y2kj$$Z2_M3x@(|a#KBfM)?bZb;EVSGP zao1?A-?jYgl_^jK*>7&07_nF7ls7o@Z>rx_6Xu-O0>5R~(qXlptCkHB3;#JVQuF-X z$GN`q3fArkj>xbw^Oom@Vq8{gcByp+QZq!{7@mconu`6#q+(-lQ^cXHww5ZM&dB%6 zL`ZOg!x-e+_|02XyO!;R3$ymUVm8$CHB_2rZ5-T>QEx|U@Un7uc{T@zaUNAt%OWFE z#1)v48|s>EWaB7GIU+`TMpH*hN_$EP;umb(Q!qT_H1;(`M%Z_y?6z;MYZU>ypp%#D z-}AFWOHFxq*38Oap))R~pdZQUUm7553Kf|x@B!8VwwK=aBJ%>ZlE^L)q6cjH)DULr zd)KY2TxTwU0*mGK;6$hEE$_jg-SxJ&1If>j_Yezmda3zDqbzAz?Bvn}-D6RIrqP`H z$J@<+nIgC}&SktA%A(-a_+MFRNp3XvFL3#>Vq1O2WG}pWclX}z_w~IRO7m$!OSwLS z#I(sG573{ML0Wpu^sR^qr1hD;b@!RRO-E8eOy8y})303Rr~RX-6lPfyDKg}B7#8xNq2N)o2=N~O&z_Rz5XoBfesPs zlbM+zXB6a1*54bS7Pk_D6(BY<(J}WAGJ9dgqW7I>eno)ml^Y?q6~!cpkswaZo}I-N zo@K#Nh8cqbF0t%H{)xjg!_L0os3p;1Rf;{8uv!9e$@_K|V+Vo{k^ree-*(r=!okJH zKDd9ieBak*6ea~>%oiqLd$aBn0r0v=^m=veURlt`roX4|8ym0^xEKQhjd^#}cLs*! zb7%0fqwu3wJA{fGs_uN@g{p)XW`rAf*5@41N<)FpQ1zj8>(&|L+c+`Z5}IuLxqfhj zeKVR1p)y^;`tQvu-nCxx&yE}ru_WGol@U3^RzAd`@ zVE3;2TkAU`iTbkoPA%Y6b@(dsfYJK%suATQcdDZ6{w(D_n0Sl+ZpUP)NcOwj8L|6d zXi9yjk!SxJ<1$8GUUkR93-U@jBIiI%&6Zp$`LxgvZDM@p>xGGW)V3%YQ7`tHS|NAf z1y6&+`QXkVY))T0Je%DeRrd1pVMp%e#)j&_A!?M}mfQH%3wred&2O9d>=xQ=v}F&G zwtMzfbLFk-qZh)1*tEh2c{~L_+q)+eIApYuw9e|BbzqI2M5}Yw#rj30&V>Ajwt}&3 z_n)a%Cbhbx?*@H)NdJtArUdo|bB(~B-Je3<<8BJ>pxwJ{ zx6xUZ(DZ3S$k%gQ_6|?`GN*Ax(Ep_L=jK`9t$aWfth=tX@&@@|LfB!dhcU3~}{u$w7T4>eFb8aKGb3OW7njD9iI$tMGwMLUw z;{gEj-%w%W+&xs#uBr*X39qJVb`@6#WNMURxx)hD z&xuK?-W!z2>ODa8?mx#Nxq9!i_P+;`!KMPHYPffQV))v+_nos5j|D6bR zdj0@}y6l7E8Pp?;Yx-8&-ds}i_j;ZfO8N7m|d9>scldE^(A7z{j5p^IPmZgGw(N93Qz zW&1A}H`;&Rwaxz5$4zuSb~%NO^DZBJ+3ayP*CXfiRFxD7-c*$mSz%Sq_3$j#*zc6( zS^+O2dM#E|7D-~si(%of@ZreW1x(kc00RmmywlH;k>ha#_E+RQ8C2Du)2 zfI_Mq;TK>)g>E_?^t~AC(5O3)2;e*yu9EH|Clu0w>nytTppfAxGFik z94{DnCSq5$_aD3LigC`xn{J9+WEHviAFpkWye$ku|75Gw&`nW3=-)!wFQY|U{XEiP ztAgnB?S;!%l|CcS`|@IUZFP6zGW&6F_bv2G(EGBq*!A!SNaCy0cm_ZtDdX~7j{}ZTE9r|c z1j=aC_cGtPrS^Kwe^dkxqJfv?=x#bN!)bWeOPfs6}cpo z%I$iqTpPDmdj90nGbz2&)9TXCBJlRNZ_CrWu1Dlp^w!(g%hQe}oR)&#HmVyQLUe9d zrRTlChzZ@^?et(x;EcRLTfm(c*b+!ljoJ}D48T`KR)?zhwtAlzwQIw>+9-M6-WV)d1L)JSsL$N*wp!lcFMpl9mgKVe0djdQ20_**WmAY?Fe005gmYimk>=D^pn^yO=R%_D& zWAy6xqOcO?yhj7yhr6TCd0#_nfZFGkd>BXuls=pg8Cn_jei(5^z3&TJd2f@9eI=%^ zMnWjrTA9ae^R^+-$T;3;ZM^H6usc!%2_oXDG`#Pn_*Mx_a)=IkTSWTAyR9cH?4n~C{ zx>R*u;{kbSq5&i=;vyiUmb+DGIk{a%bwi5x(aNB!GB|m#;e8^wBq3Oq)F)H;+dNsQ zpa<_AZgXFHHuw49evOOZMxJAHUxQnP`w^}O_ZQq6T#T*c?_b+6X#f+b#QmyFi;+zb z@-l!jF8(SV*^cD$Gg?`&Voj^JU8roW-aVGLcl-8lu4i45D*KaKCMJwVQfgvCrf@f^ zot5>w0@u(__3x4l^RvEHTGm*Z=X<6SYTuJ0L_Wlk*)TDovUQ@}meVpZk>vbv3f!Vf zPrIxBAIJ|$h&b|Z;-S{l7Dy5rlK&j6scTw(;PkoMVP8jz8 z10XDCVD#KAl5Z#lKv;1G&Yk-P&!LHqsxyns>=za93_|0kmWlSn$T@Rg?oS-rm-q`3 zK~v%TkeKFr4`biGTirft*wSRCH$|Kw$He;@eW4Z3)W5uOq^XDA6etV&I$Uq>jpM-X z{owG*V9DWN;L~9B!Ju!oh0f~tKj_*d2vIlhlsv1EieI4v61sQwt;Rb|-`Mq!lU*zB zA?CiVsdnFLt^oGEp~k8*&$;k4t_!c;vThwH8w}VI^uECbF1}4r&4fPY>k*2Yu`{>i z@LP&{c2LGRSn|A4a(Lu>BX@+xoaWkiTqS|XT>5YL3Rupi|B}F476v@-dSsP6Ss3v6 z5;wb`fQbkqvW($fjDHLXPVV-?;J1+AAwhzuk}4#4IQ$~HC^m5VFrNVw+(#|f0{kk;db?Dzb-`5KJeLY!Wzpn-R zbqV(SGKT#y68#(67sG(hBZ#FiV8?ebpqbmnCG7Rpg2a4gQ`r5QP+VhWY;!&IG{9g~ zywB!JWa8E%(vRvy5LJni_jC7+Y#Z5L_lW>mXw2YX1*;S*WSdK$q5!MirB5WV$pWlS z*CSWSlLc6vOKw&do}#lF&Xe4R_sf*(=fT1q3`fv=kp2&PKdlT_A68ZrX+~FNUf_9f z@c=xGph);GY7XEr-_I?G!{q6C-a~<*dESn|AWA$OeqTXkdmx=0FjawC688j9;A(fR zSWE=llTdXZSbASHe2uKezD=xPB2v_ORGnU({&X{Ec%%;!Wb)Ow)3RuXDL1mF* zgVteGz!y8Tb4~|4B>VmpwoA+wK@d$*-y6vAQjx%32I9)@59>ZeUWW~-M3v3-`13Ep)uEk^o_t9K|u`Z_O99{ zc%ytLrL!SrA}0vzRCcJv8{sf;Gt+40#Hb!g7&Xcu-ptJEk~jA)`XkGI z(EXZV8(H?zG_zr$_4u~hgF|XJXEqciaFs|)J|p@pf>F7RUCnO4Ex)VT>9^}`j;>~h z_|C581o7Qn%^+*cmvlF4TrMQR1mm68P=e4#ZYzCD10(rITGBoKGd(-}DR5X%A0j54 zBdJ5=Hlj%45Y53Ty(9ZcyXH@oJqY{Nq?DFOLdxcuQZ54j~$%>YqQgzkkZ_>*&(?ot7|jr4XW_2&1gKRH{TZdqVCPAjtMEP#ktIie-vnQ>ry<~ujyUZa5{-xVzci3vywQ7VN9*T&}G zs(T;Q2Y?bJ=6%>k#=`C9k?+bvohk=KC5gA!Oy*?HS`3EVcYhBJ=`kvL{`2h^+2S8% z)&3l-_NmnVOzKCwzS{zzKwA4ZS^+Qs1y(0H*pH>c$?eL!O3cu~SEK{r722I>gB@|b zR3Q?GD;giPSGi~YR=R{f-r@YM0EmRR!&f?zP=eJlglyJLH%WCnWDJb9*99C#zJqec zF)fqK8Tk45sTlJ;lT23qcf>|uhm6460tO>nbu-_eF}ksa%uto`Rc?lZ)>5=)XH>-J zf`cPQ`$(^|d)LVKQrbBZCnIFBo)q(R7ULpzPv$e!yqwmsvpSl)YsFS+&uwhwtp;s_ zO&x2|Hm)>|HECM{LFp)gDrFF+en%X#jHZ#z0!*1CGaUJ} zhx7gC)`eru2um{nD%A|}r5WNQ1Y)#dha$zB+TBF|tJ$h)wF8yy(vd`0)^1^RPvxV* z^xzCfaE4QE`+e9;#|10gNK&vVH-*8xGc<0HLeS?3f=2TJgEwCp`-0UyaZDZPv2PUw z{jPD0?YctPro9V6jFflm?*(&$OC1PZfQu77C8lgCgo4K2&#eXB{)-K)A5tVzDljGE zoZ zq6N;Nn-;s?x+0W%CFcOoHVWJ!1@>4K>p^P7pB1`UR+o3E)3MmPVky~;#}^kSjY^++Q#7NO=D&cLNck;8D-d3!rqJB_c6FIb414!WB@cc;A9 z^s!sSTAbKRJ`h~$G?qHMTLps!a?sB((s@ZXM%*E=TbdBHmapS1(%TrXLITyr`LRZb2<> zJeFY^#h5*)U1<#H7fOBzG|smre@v+$;*3X_S$yOK>q+WkjGM|NrlQUJrc#CpPU?+*sU2xHEAYuJgw>?I7+w z+&0_>+*;gf++(R1a29w3U>o82R91m#%Vb7 zahvubt{t}-w*j{n_XKVkZZ>WP?k3#TxGdb6I4ADtW7HA%8t&J)pWte7Rk+)5H{r(M zvT$eOl5k(MTz-c8P?k;pOoMdDQp<3wakV^uh<_&O^KkzQS4dnMu4AQ5TaKH7%fh`E zq^`Kza2MeYHQ2OY;eLp_7KbHSt?dz;_Au^NTn6s&!!~UP?q6^VaN}^9xXya|0QVB^ zVO$aJY}|({Y}zVZuTJ0KX5)t8wxd7sBJMHV0$dU9N?aPQr;ahet;Icnn}WLxHyC%g zmNCVx!cE1c<2KjujGKWw4`(i?9=KXu5iS$=Wi{{NevP{mcLC0cI|Se8SGbqyvpa={ z^qs%%I?a9KW172Sz2?sOKvrk#uj?Rp|2)+H9FPC~D|Z!1n8jF|g3J5?-!G%?{F6WV z{hs=#X+G^+b50HMZcE2`<=P87~ z&zpDQ9#rMZ&nT^k=Q+H;NWC+MHzYk1e?GsnN&7w}-J@dWs*>)~7VvMLs>xmI3-kF> zrZyUPlXjzaEB^hwvxu}z-j=V=A;(>W=MkE%UDEgc0=}}4^m|FKRN?!{C$+Z9w0`IE zw1iv_;s;dz1^mvZR??pPNx2(e>L9*+S-xq-+@;z!hn(?J2lJ)7_`*C@)*S6J^2!_X zjvtL~@lV~Sv-#%Tyd^y8p4TTdlg5^5suPGKNqMv^*@hO zZw_pw^r1DHGPd{Oq+cG;u2bd7NcQKpN}X_0>ofaWFC%e2Z_fLH&3*OVn)_w^hwuZB zYVPmfH9PaJdGqGqeV6~<`46b#HRmp5;&G$+Vu0S87aPY>4+Q4Tiw!Bf+a%4#ZRVOi zNlQv_JG@?RqWoQz1EldcDsybnjAW;FO-@c(5wzmWOraHM&O7Jc$)BbzU9gltCpola z&FRE*@=qSMiSrkFm)`3yS~&miIg9Ar`)S+Vv{-s~4)bHSsuQ=nQM-YVFJmt~BXA~v zLt^vlRz~0!t(boTpYc3aYB6v;RhxW@6iu7NTRv@q%5n0W>J!YqtF;_0mw!^8%!~=Z zi=Xe@Òu;y1BR(;gsM(QIFJYUT^87HZ=K(|1p%yEHfnW<8W%q5wpvlSEzB*`2V z2oX46OrC*dN&3AiMXDf3t$ITKuV zIkEHTwM%%aR8VlYYO{q!`up=P(ogQG2UHyedgLt&Uaa5#Hz!g4JVsye#{S-@p}Ay=#p(td8*=#K|+qg3fsZS`hEAF@5Fz{rxqIn#;Pkl<)ePvlgbY zo@C_Wqj++EU7_XmeeYD`J)cpP@v<ji5ZuVAf` zUXgW5dS9@DAABl!bS^Q1!(|^A?_0rD7S@gTrBzPOfbseJ;Xz8ZU{K&9zPGYUj+fg% zK7W6?veUhX{*ITpXu!zF%k9V4m9%KS>KmEEvX(C3S;B(FWq&QZUaMzh^{}wJ^^QPS zKW-9yB71q~RBZg>ulL#9gYakI%U<4%FNcCnQ*3TThqM{^C|Ytssm+bnkGAP%n>!u9 z5Pvv+&rLQr7SOZ?d~{8;bbJ(4w6+^)9$s^Rc_T>z+9` z%wJljm9Q`Jf}L}RjeA= zR8H#$`mL6UQgl4(W>xA`ey5yNcEP+w1q0Y7 zPuQJ9p;J!*1*A_xu08|JT2}ulL@E^EsdMIiGXR=RBVw8;=<# zSsvm|GN@rIck2F7I3$S@wi>P)Cecwi#D{7#s#(d-DzXp3n_u%zttz63Xugd@_+D_J z7PsoN6ja*x;m|9!&Q-o8a8G`xut_EgkIAjK2HX|i^iKRpcH%>_l7HBlLVJC^oqANr z8@T%GhvU-ILlZ7Ge0Z+cn~Mir#Yp};g}Km3X2JVJ{qT4GH_@r_$Pna3uC^oX;EZ#a>Dql&9grfb3e*5W9P# zaJF>a?%H~sso~jRxOd3rZ|L5k%q8OiC?O_ z#XPMi(X=up*nA~cP5G;|r&r*YTHtKk6IruxIt2IN|=Kax;U zy(a`csClbBAyk@-0#MxJ`7>h_SY-ry_k||^Pa1P*bIGM}k zWPS0R3k(3x2hIa#%m59Jslkn13|tQ6oXgN^U<_X5QAl{Fz4r1^#<{o;aGl5C1tZdU zCg9)scsWmYV=Nd_%m!W=<Hs4bhBoo4=4m-U6KzFBLja|GQULb3q9RNd z!H+5e&!K48V#3|$sX`@KQBhqNrs&IlYS8plUMec0wSG!FI8;N>cSA@kUBGr=3-AKa3akg#0c(NPz$#z`&;l$2 z76S8udB7Z?8JGby0#P6Y)B&}C7pMfvfij>JC zU^}oLSPF!ILO>7f8>7qK0jvWS0$xA>dI6-rF1UYF3L0QNuneGd`2YRVqwSvjmxKPg z@|XNQ^IIWC=-d07!_xnf>1VOTpN@6xPs?F8OZ;_0f4L)ns(=0e@5zt&r>AS}|Lq*0 zn-%}lb?{PCknXc}iN8*|j{T|r(_{ZvzZ|LrP)ObIr-n#xiRWzA!3f95Qt3Mu+XPiM zOFS!2Ivo{)=2^3^m^1gvtL9yO&9(CvTzCD#MK|2I_@ICDtbXvJHESP!e@A9DU3`x*mJn@!2Pwcv82MPwC#H=c%XlI{l0@^}WwJyHDS9 z`sJK^-ue9p49w*WywPN~SOuG1bU0m-+f#)~wq{bT|B}gd^?_h$N;nd2m^!VoY5GOw z6ECi)Y}@_P8JAr?^M5=3|J&jJZT;sB$}bo^WN2a01s4t*K4N6?sL>^*W5$jv8$UtO zf7|Z=5&HkT*{|*BbtwB`wZ%w`ca6k2Whv`}@>ms7X3GZ-EcZ1=%jtDswLDTtrIlf{ z$-AS2@Py2V#C}AjZ_oK}n-r<#8&SL#e`1 zMampS1y%vjN{A4sX(R<>zj&juAsVHxz}F&h7=dRR2ct1C8Y!as0?qe~w1Y8vN8@u% z8E6KerC$W@G}%5Z zjp*w!z@-laqcnIDj_RlRqqX{eebBi|bw@`w>hTBk{RZ}9!~Ky6b@_Y&uRd6#_XevQ zu!y!T=B+0}V9%M{+9+lERWlpyI6b8AD9SrkBb8dVpgBh=I2b!cYw55iPsEFZzR2 z>ZtzX&Qky1`04OJB}QdZSaQ$r(~&?H9u80!=E)sWvl z@YKg!#V`ovi-a&tgKv0cL421}1^&_09r#=Kf!~KB^eMrdRo<{kuaEBf7)KxdsVL(g? zpakPx40A3@g27+>c^tChAUR@r0dG;j>uY2fOo&rzo=c(_@T(_5ajAK;rXhf-nqVMl z{DLx=4}6jS7g0oW)mY{#QOuM0p0XGhT2 z*84Fqofn>@6o~jYrJPmy^vJn#4yXJl`y-i02H>Fj3Hzor_`~2dK(C~$VPJbS%8-ge z6AxD|)fAdu(V!mjhL%ufWnR_6aJV59)l+uUBgtseO7BpMl)jF#fRZ1m1dw&`=v94^ zEHO9r6Na!*tU#p=IqbV@`t0`hoFFH$^AB&yhRf0&41ozD}< z_%Y#1f#8A;|7XL=BwAdG_yb0QluMNdLQ$*{ubN;3nKvbC{CCB^!&0@C$5hRe)TKzK z_5{?%lK4@Q9>Pn;#3LmQA#IRWFr7-Z0!$PJ;x%eX%?ABrdAUD|STrNsBnqvpa#(*o z3^^hHJ-^z}F<%9%6>Ny;ec>=-JV1|Wr*I7nJPNr|#C!LS+YF5ca+JcG!C)gEXqEnoO{e>#H0LI$~fql7S^Gqhg-mrkKW@pgb|{ zsXG@9t|5N(apE~7Zqs5m#*cw!Pk<_!5+7O%-gH8bUa7&5;z}$Op=CXn*80QkdpUFr zi4mn2+AwN1jtdz#ycEX>Y8`FMB~?}6Q{r#T$fm6*4Dr`wq*raB(zH^vNfVaIZAGQc zmfCi$M7RBissz{xEPEGq>c-ovF8@tL#HU;*PhC<^*uoggnA{OcWIut>|xoy^Er-M##4S{*@aloa4CK=T3vgq zUCUrNd(?+nY&UR!=m>#7H6Elah%oYr(i%Bv@rhr&Tx*%2wfBr<^NzVfODG*Zh)W8Mnm zL=7a(RgN&4vA$USq{G8Pyf2M?BX`veZEISV!rXw?4}FV*Zi|Kw$+iRUyXhO^pwbY3 zy0pB=-@-P+=@s)!e#mcsde?lT?{txWEiHX(!4W>?8d{R64)2W`9z>H#Capi>wf8p6 zvA>Fi9v?Hd;!DQxYt^hZ7yB>(#_52U&WlK-vKlijzbxF6H3 zxD$`JXR>Tn4sAH(Rvx2k%l(H#xPO7Y8pKESpDO3mbCcau!{2yq`|fM84@Ap9Rgc2L zMBIjIo>S?5Ta=(X@`l87s@{HSNe*vYie6t_mF%7xpV6z6-BbDZS)1&h>VMUv?YsYL zeX_eYp8cL++2;do>1!I?E^Wshd(pE$1hoEB<8Rs0zWZA*CA+7_ui}mN-N)=oc25o8 z|2dQGKqc$}$%*8V%S9Hw;G&WpYQv4n^qi@%)d10|*9N?+eAGL+Q5g8?=YwYsR%D`Y z#GkMSe(3i{Wc!I{`nErXFFwWPOXW-XVzw)tuX|d8FNbI1TZ}vL(q1Y*^-gXiFX?+3 z4b8_cRo%;qJuy`L^_MS)*c0Nl&!4j^xS4H_{!Y z*)GUHZhCyfE$ve6N@_mniaMW&U;UM3?*LRfZFyJ+nx_G`hU;y=vy5p?B&x2~#pENo zHsP7RZ%>hrzR{(IyAJW!zQ1`ukuM+jVSq}fEe}ur$+DjTwEnd6mmFl-;{b9Gp>0F= zIZcYb7UHhfO)V+;o$96wvJ`!);cEHT=i+QUpzEb-ED*m1I+m4({dv<9-$Jyv)17#y z@YU<^KG4JaK>sK9fo^0HmMmiUYY+{qx&wG}yT|7hj+Ocp%7c~evGO8f_f)~{mj8`2 z`2z5OK_$1r?ViBiX3}8#;EQ{f^5C1+0@kH@E*?}?l*)iTrjtharn!~=WQ>Yw5~LwdMNb07poE6o8$t!>+LPMrL+F%8f{LeDguc>A zqkWV75e$nAZjAZ@5sYTaOvmSyfoI~Ito^s3JM3nR5y+ZX)2%q{ugAFYRG;h!AxK;6 z6z*+N05F#V$u*#T|^-suMn#N3{nQ_H0%d;p>@G3Pu)15XL7<*#fUb1k#tuke2wsV z!UaB0w60STrlfjrW20t9&j`4%e(gAt#iw2nzXRwpUs7zn{&w-1vt)xLz+HZ(1N zHkx=U?E+F*Ub;4T3RW>j+zHV}4I125VUv9Zkye4Ikym^q`75NHIkJ;92ALuwK@kW- zvVY$sUpNDYiVHyTE|mqE<;g%W0`505DVAk35L6JwkWNx*FqT1+B-9p?n7eEcc`8&x z$(J(Do~#e8ub6wn*CNWhDCvV6L&?5mNv4ylTuPJVklhxOo1&`>J{ORyqK6Ew4dkj8 z+;rCLdUDUC0XgI-xyqx78CbKq8 z9gSm0d~NxQzJ|(S)pU~N_Q9BFji8kiHji2gK%q=m9ivO98Cs}Nl)%b?$uM7F5~?bV z@WcwXWUV5fQpVB~I`JKvpdgp(q!_P+6IhYKWW@*zRa=c8i;iWbr_|q>8VI}5`tVH4 z$4Y*mTgf#gG*c{l&&wO!ff~X0qVu;^Y=XGmrwJd!Z>1?AClEy7L=V%-d5^1uVT%P6GXrC9> z2d$f^-xr~_7`0(!)l-`;mJ}KWh`3z4ozy`NT8ZHo?EwnEuWUJEu`CL-8Amdn$c$xF zKF*N+v`?xjn@MGs{7)gPsL^FUR&GR7#G|PF#>m#?CpKuvwmn$|T0^JF^D*t_$hsLh zEfCXe6LE;71f^w>$m%f;WpW=N#Ya+WBso-y-?y^dDSot}Bx$5QO?~s1I8k@zbF`|1 z;c6cm%P9gR37sSXH_oK$Coc*^TGfCiylh2()={fFjZqu@7sZbErII)%fZZ7F^;v#Z zI49LSl*csMNLH-Ify#qw>f02Zotd6XwHYlfWGcT;Ddm@PCt8DY7|8`#>jD*#AHAH% zlA0Z|N7%}?Ye?koo6+9Kri*wLu6W8*Jf-(>lPXY686YV}QMWi_O$_U!*7bF1B0vdNVCWRZ4IuOHSSljD)Hu7}ilCPmz_2CnRt zqA|{-d`H(FZ1QEw63pGA8C|+KS$X2fYn-KBA#a zkFD%4(;ira9IHjxS4g83TPKqu!#+(_)@TWUN4QO;KYH11{9?r{ylZt!%<*tvW34t;D)G(v&8Le66KJf~s_nWR=wUu-`aH z^h%s%JIdIn@S$!oO^FIt*p-C*0fn$y$wl(`6di&vj=hc?Lt8sje6f=f+Ew#c9%CLI zMPzUQ8ytfHS{JI6wa7Sj!V%;AUSEE#CtMmFjwL958f#?lQJ%>}&hG6zs=*g-!UzZ! z?jhq<`(z1`ac-oLOa0Z8V{v;nJ>MbIHpww*!r)0gt>4Rwkd*YqYDhcure=C}tCGLv za+P1q*lNu?iV*TzSpHH>Dq*$soJVw43S;Ep;q-hA@+;EQ@6D&;g++C2oNh>6L!_2M zQpPMPPiBpd){O~F!x9*_UCzJqB1raz{5;yHWS6T*LQPqo)H$xP(x9qFHlXvc{NbLE zqG9AfzZ_$^cSRNfU$P)mtRx1*Lr`kak5kLi^-L*8B;GijRUxNmP`@E?B%AN6@5Y(T_;&!aW3kSaZZG5iZH##+?J)&`n{Djx~A}kQ>%A$u!z$(jUDS z!%sGzivbFc;ZE;#r+50UC*HUdZ`B{YH@~W5W08k%1-1bDfnK-bj7?xFunO1;d<7hJ zn~s@*N?;N2Jn#c>`Z68M2ZF$zKr8S*Z~*9jyN=m_GGGdDJMa|nCXjUp&i(|-fH}ZA z;5FbY;K)05>`b5xxC+<=`~sZbf^$uQDZq`uI$#&@Cy;ZOj$H^`3akd+2L1%jyj#bH z0`s;7Q;e;Af!cBj5>40d4{w1HJ@$ zJ&HI30pMm}GjI^Ft^+Nw0@w~5{}}uOvw@YscHkgjeq6^Y0Gb`|#5%Jqb_6?;;bcji zl5-6E2hPYjmL12AN0B`NCh#QIjh)O+Vcl5|){~vePJ@X(ot?qXWO~+{oyE?^9-qG0 z&)!eog>oKtwfD!a_JKGbhhqkuP-J8#X2!{nR_xocVW*FXz3|vi&m`t%d2A5&#uVVh zp&>X|vXB+w%$N&t`p|HB|4=a-g_@%TyNJf%?9p+ojE!d#*hSd!GZB03D_A9?bGfRq zzlQd`&{=|h?EaaIy(;zCYeVOrO~GCqIyt8SdswF7{IVvT@pvir>R*O^`ZHNGn}z+h zS72A~Ty`b9ip^tJvukiR_k6YhXA)hH^MV$!8!)23nB9av+7h;u-NJ5Vx3OjHc6JB5 zleMtB*xhV7Tfy#OE7`ql6}wN~>okxW-_-X_bj30cp2j*mG>w-=AUEUx0uS_9lBl&k zI88XQ&*|JV(W^YQ^F(Qa5_7f3O8qTa3ayW}Ip@rcc2Ar|#^FCzUinNcf3yj` z6g10~DM@q}X`Gom6pbQV()@0!S2T8Ua0Ob~+Bs1oN}m)(G~;BDrp7<10cX9a^Qhzp zJztC?qth27l}GU+)qcOyq#EsuD1B1pRgQlVyeVSFhyBt$6k#SKp{+sk+;#gwB>70@ zuSzl2kNrQfN#azksIs(0o6PaA#4eeZj_c75S0}WgWFeaKjm@5?ikOi=k!xf_G}J&H z1#IMrt4*60$m2v5mu?fly26==FS}&=l1Bc?{P^ofdaE@_qXOcdJi6K*_k4@xb z7(AW}<;W#}??9I8kcW5%N~g}0DblHu6Iz?dhoVi*6bbsYG}kz#rg_3CbCSx5Vn|7? zxF=Hw4S8N3Ss_i{(s;~Z1v8Or4QIQi_E4TX6ka9+oX%LKDoL8GLoUrkip3!5_Bov} z)eNUokcsy-M%5ylP9PULrAwKZKT@TVryjAfp4Jmcl1W=YGjM9d?59)4$6wkOD_$Nm z)(V+eVq6FlJedlT8k?j%l`&gnq@;m9tOkl=jfcNF(zeLMQ43>8p=|;sGo=ocr^h9& zNM;l(lfg~rrRoD}j6}oO9~^Bb21?0oI|3;sJEK?~$lg$9_2eP6p{$*th^91*EwSy= zw7Enpqily(eQCHU-xIB_Z97mJwJE_a?Dl9xQo-L3QNyA`A?8toOc`=lDm7K%n4_1YP|yYi#2*x+pxOC$S!5>A zaLDX?s3JhRBl%PuE3BDX6P7`4Sjh@&l2uke#toVrQ|;FdG%q?p9&cQv(yA6f+cr(5 zX}e+3K4ogNLZwc#U~z}kCWY#dVp`&#+iBp%Xog_wNi#D_b6!Y(l+&vyGPphzZPFB*%<+^*RA@0ONtNzND?kcqVhwSJb6z5xwmi2JUWW47 zp(thW*JdcOB}plTv?x(T+aNeZ5sfct?y#m%embzanUhyHCss@+vrmiVzsFQzqZzWm zXoj4{QkR4$hu%)wbjW`u=_!xW=7)}kB(HNoiPI!cX0epsRXXcbAu=%3k|=DjRy?-6 zNTW2>B4WbQon&dqz@j~+5m7GJv3i4S4ZLJBkCZ`T&MA8cI;tKDnzj>U*oKhILK{cf z3aB1&AVK8cFk)i@;r4VSHGSoEy>dm4OaL9bl`JJ1&3r+%sI$CamC4v`Q%zV-d-IOZ;-1SJgTu^Go39)w3U{B zoUEy$T3+dxT*X2Hxni$Hx4nYSk*KJn-8F7CD#_h=T7D}{##up`j4NL>2#zCy`N6t| zdaUKd_`0@}&lf7rwAw~l^O~8YPFX_SW{*Y|H%6r9yhCVA7CYvpt!|E%ZKlqQ>|XC_ ztiS@N>IV7zW?5fY-ldGGXBabx`#}?;LO!wT5MGqE(h>#Jgv6TkS3Cu1gdinx}TplC+URugNZl^xA*}w>lbb@gZyoq!X%N;jD4;V5=$XzU zz>*-WZlK?{q#xl_eh26%+-X03m)QO2*qvl2H~Q@&)s6U)U%DR;5MPQAeZ#UctdCGY z-+Ke}-3-usUhF+T_FjxT`57JiUJ|>H!=3n#2PkYDdnog%$6XJE04yWJS_VaaiU-j* z10?gT*nKwc6qhRia-Rc`Jd1#HfjeUFci~R*tpF&zdjX>RCqVMys2$n;9o)&i2b4nk zQgz05DQQY~oemD_C8xCdqTDGQElIMg5)RQEz7A`kqZ&xfFLaKHdNosl_>aD_+q@L9 z^=)4N(b4L#aBUx6uCQqP^yv-<@gGmvW)_H9&^EJx{y#oye?`Fm$FoBA3#k7(Wp!DB z21n)WrrEt?abNk7@^IHZ%6-?1%cK4pUFKV0r<#)+GMxlW;>b;BK)3b{AE_shnr+;(Dhr52o*@~Ad zlF|7?`Ji&(cV`5^1aLrqAP49J^a8p8T>%E{E5UEp0K0&lzz$$LunpJ>Yyma_t-uCg zJ+KZ~3#?v2c!6S|5O4$ifh=HevC_^`483~ zpbLcE@-JO>{Z7^)q()T@N4=}=>brVx>w8=7f0bV4quy2j|C{%L2%NADx?la_p)oUd zZ3q2Y(6SWT8GF_2=}!Odx)>baKa^ zw;Yjp{;f;=*}bf5{JHq~Bo|4{a)FKqg);Ol$0|Mbh(A73#2rq>4h zw!XONxRnpJ^!#-BkYjz_yEe?avSI2=g~Q7R?Y{R$n`mDD$hRfK@BM6|^M#4xwRhYw z;o!uTd+*Y>mfkbp>UsT-YbRX0qwmD4e|>+_{WtCZso%!Cw@mz?IWX*{+m`6B=`^}> z6aD%FW3Oy|Wvg=iE=_SB^Um@R{o5~1@QNReT(Bf?;uZfTJ^yBZU(Zj`iLX!>VwE#CO{7t(Wo{PC)1&I!}DKCoNL z9d^;j!#6#%_@>Wal5W^kA~qDf((RdB*GL~udUCOC@PlVO{Murv&)J(l+3=)j@LW4x z@{Ae(?Bx%a%sBC>3hABiau*!=%nfr-{v8W{q|A_XpaIQ+mB|_WS&IMGGg`R$lc?>$vysnZ5Gv$M{cbA35RP(RUV% z|7UjpzD2tSSWF{J9(r|h-|NR`t!Vx5xyydvv-ylWzL+;*+#<)u;w#STG2%jB)gM<} zzvjrrmz}VCz=wCf`o@;54_59_dpFJ5C`qw$)6BT|GpYaIzEF&C>EtmJl$mDv75~)l z)bB!2Y2T@CrL&gHFlsOXLhV*OFbDl?L48$SlfJROE)a2^g&)eaN2+Um^`6K8{B~(L z7zx%y2jGY@yC+gVaH`=fJ$7RHYp~^ZES*dh3^>m+4CKyo9ea#k@4%0$M&w`4?jSd# z;txI}m?XelQj^Swn$`~bc>sh$=WJlPY8|%tN8*lJ=fU#)0t6Z6o9e5>PlVvV^DH_E zZfX!Kch1r`_?5K?&a-Oh1hcbTj@&r!WY2N_8j7^g9l1%eI&$NYhIdD@|nY>&%(0g(ro732zGT3!e$U2nU6uZT)Qq+Ynp1&10Kp zn`^tqcBgHH?Frknwtv}Ac*z*!i;a4d;8#fa@mL3fJ?lS6yGb&XvYVbEIpf z7HNgFN?I+gm5_<`I3pUj!O+Ar+ySn?!EJ~dt~1=C{Z_6qxi{lWokj>@uiv30d&+q&6$*m~LYwmvqS{X+YAd$m1ezs~-L zT`yY25^TIO{aa?b%KPPgdxOvhGc1M%RvTV6Y&U#oIGXRnkKq^axAANEXZTn6UwN}}it$0?C#J6Elgy%d znE7IJ)I8I?(0sdjxp}jBhk390cXJPm!6I4;En_Sm%X-UJ%O4h-b+~nw^-k-f)@Q6+ ztUIkeg|R}Vuvlmn-V#o-jkis*U17V+_JD1j?QPpG+n2U;?1H`6ezE;B`vUtC`wIKR z_NVQ?*-sa9M29$5Y!r8kBOFzZxsLgcn;knHlbkc1H##41{^>m4mE$UKmAfu+t#v)= z`p%`3PKWI`OM|3Bsad*Fx>I^sdR^KfeJTAc9Uy(UmGU5Qqq!N}1Kd;G%iQPOelFW^ zuE7X>3^$B7OgG$a*kssaIF9empU?aF`TXPjPCm=n!&q;eYMgDn&-kuUXFAJdH%&IJ zLFxF)^sDJ8bAfq;d8&DyxyAg1`FZm;^9SZH&Bs{!LNk??$(B1UuUg)*{KJ}Oy}&x% zdW&_R^`P}c;as6us1lwv+Y{%bDXG;;e9noztCjp`8uRP0n|n zUpjTJ9+k@?Vrx->VCK}#1d}h$`-S~cd zAz#lo^LOy;`4{+;jOQB*jHSjp;}yoMjYCbfrnRQ$OedL7GyBa`%=epLH2-GqWVy+* z((;hyb4$MUCF>sRu|ib1S!fZ~3vUR0ZMn8WTaE2j+xzy9?LXO177N4+#PQ-%$6Jn% z9a+xa&QZ<@&UMbuot<6VU8hP`X_54h#3~uv0QqvbAzU>#i@Sr{%;^nb!;^+?{OQQ0 zm-9a%f1Yn_GR`+Xh0?mu_$$)o1k-7z-X^oD$TZ7zrD-9`?oQKg)3>H`%oEI&<{I;* z<_FC$nLjq0kXK)`yk&VGR_qJQx0ZdD-%*;6wq{$qThFkbV;yL(S}U!7 zYt-6oool_xdaJd?y3)GA`n>fOVY@KSR$+_UX4)p%4)w*5AP zU9@}bwf5QetL^LT255P#c)R!*Y|4A$C*mIQXYo9T)iKO*nd4T+=Z_7x1I_O1_S7;%|p_c$$9$rJ|G3 zjGQqXHloG&gz*!kL1$AJ)3K%#Q9eeQ#+fQme>`CN3}xg8)6b?qOr6Zx$T8E+&E_ta z^DP#O!!pb=3fA-zOUN?a(rmfLve0s?WjXTEqm~Vp&6d|KU6B@UYj0SBf#PV?1ec1< zq8Bmv!Qn!#nd!XUxx%^H*~``2b)L%xOW<+UxGr;j=sH2R1e|1%ZNVti2bEGCEai0A zh56DAunhM}YosTn_ocmL7Z&1ouV5!n;l^_1s3+%hH*l-CR@jD0!xe@FNWoVOJ^6F_ zTwdh!poek%L}+3tfHgpJG4F-W!(nM*AB3JNC21T+xNR>J|OsBJm-y6D;a(#{oxoXTZ7Nb()kT znIs3+-xo_w(k$reZRu0RcD5+Ky5; zLLL6SQ*hnu+Uydgq0$7T)>YE=(h^vL7a_qn(vQ;b5?iatz_{Z%3s=E~xH;T5?o7iZ z!&8RK`PFuCcyheb@RUwA58N zS;#?2n~xfs*^aS|MayK8ZNBXW+Y;E}Ldac#8fg(~q_yI8j@upU9dA)yX~kIrxb-lE z`A7H2gsn9wMmZH>JhSoqOG%y*K;xX&j*8j3zCR{HJhV2X5ZniDAt+G9CI|i1$ z)P51_{#tt->i=8p8|@$1ciZ>azp?MN@3Zf>AHY`X3&divR4fzA#phsA_K4q$`^5d? z0r7OlP)C!a*)hj454GV!$707)$1;@WZyb9a`yBfnZ#h49e&e!9652o4NQ+6{Z4CRP zF(1cu;kt1b!j}HX9bq`#;4~~WtT()F_||YLKa?L0YkwWTjK7cH!iS6>8VgJdU^9O< zhb%W*`dhn;=Zc~@T&xi1ic7@%#HS$BN8%4+XQXLAhs|-JW1_?4w4ts!3-$2=*W0e| zCALeM?_7=6)#?0Auo>(5&-rioANXJRF2?&!51Y<6*P=~zjrmdYXXaxq+pJ!}F9c9; zGzymsvxRv`mm5%r+$P*5+#@_7tPvg)o)9()&kF|ISGG>}qwE34b&fY2-#JjT?^VVC zMsrKK{pKeuVPURNVvE}A#mB|b&evVk_i2U>&=7_t8_buRsAe96mdeZ41J-UREoUPq z^cOf`yf9O^U05Nk5>^Xqg>|UEHlWpVOuX$j+qM9yxCSkk^|lSR4{S%-ZD_R?*bD8$ z(1Izom)XnhEA6Z8Yhi)c+e412t~D-RqDC0?qt4+5avyQ6hBE$Q{vdyZ@g(CK<7RB5 zzrr*Ptt!rPf}B5#(OU8%M|QW3vTe65a;$RfllCiRP_M&Ydt6)=QnM?UjTG&{_2Ts0 z0PcIPyP=<#h2onm#>8_ z3-L3M1G<@en0uM^=00YJ*=??KMO`yob6oS$dRT_G^=j8T*9O-n*H+ZhJ6*e7-?;X< z4!E+Uu2MH?3tFAq(5Ao{7~q+zkxIKamfNFf-OsQ$+vnKl+2`9A+85iGqJ7hXHs7ka z);8E%?VIdd>|5>I?Az@-(DvDtRz9-CE@D?PTkM8DLN8G-_CXENAFU&kD4@;gM%`B^ z4vUweN?5yEu}%z$QM4v!pbnWM&J*X03&q9aQgNBsBCZfuiL1r6;yQ7?xIt_c5s6Bj zydEH~`w-F)bws-E`*1mEU2~j?6F3LwMqjIt8^#r*pFx_glIY=+I6 z$1O%qUB_QJlk2I}B z-Mb9+$Odz(d8c_7j&IOg+-RdVTjp6-SXwQcEZZ&Lpf%LR+RfSvwaPHqvpTeXmRVO= z*IPGPx1z7pRp=)4LRl$5`?U<^bRk;yR9afm@7aqUPmYbVnQX&s#kM+I$ku3Uw#|c8 zU5s+G$+pGDT5(nf^r-45$}Qy9aqBsb7kI%Yz&if-=bnUJ{qM{-`%$O$aO5}yN4cZc zQRfJuUTbvBNVCo@jvdaO&Rx#k&OOd=oO_-7oco;zoLyX9UD>W~Xr1?R>0N!$lj-l` zTqakgE99DoGPlsx0=sqiI;?@i8aS+h!x}iOfx{X&tbxNCIIMxg8aS+hj%nck0P!`K A$p8QV diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript deleted file mode 100644 index 40f5317..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/ext/wscript +++ /dev/null @@ -1,39 +0,0 @@ -import Options -from os import unlink, symlink, popen -from os.path import exists - -srcdir = "." -blddir = "build" -VERSION = "0.1.0" - -def set_options(opt): - opt.tool_options("compiler_cxx") - opt.add_option( '--debug' - , action='store_true' - , default=False - , help='Build debug variant [Default: False]' - , dest='debug' - ) - -def configure(conf): - conf.check_tool("compiler_cxx") - conf.check_tool("node_addon") - conf.env.append_value('CXXFLAGS', ['-O3', '-funroll-loops']) - - # conf.env.append_value('CXXFLAGS', ['-DDEBUG', '-g', '-O0', '-Wall', '-Wextra']) - # conf.check(lib='node', libpath=['/usr/lib', '/usr/local/lib'], uselib_store='NODE') - -def build(bld): - obj = bld.new_task_gen("cxx", "shlib", "node_addon") - obj.target = "bson" - obj.source = ["bson.cc"] - # obj.uselib = "NODE" - -def shutdown(): - # HACK to get compress.node out of build directory. - # better way to do this? - if Options.commands['clean']: - if exists('bson.node'): unlink('bson.node') - else: - if exists('build/default/bson.node') and not exists('bson.node'): - symlink('build/default/bson.node', 'bson.node') diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js deleted file mode 100644 index 82d4d04..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary.js +++ /dev/null @@ -1,339 +0,0 @@ -/** - * Module dependencies. - */ -if(typeof window === 'undefined') { - var Buffer = require('buffer').Buffer; // TODO just use global Buffer -} - -// Binary default subtype -var BSON_BINARY_SUBTYPE_DEFAULT = 0; - -/** - * @ignore - * @api private - */ -var writeStringToArray = function(data) { - // Create a buffer - var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(data.length)) : new Array(data.length); - // Write the content to the buffer - for(var i = 0; i < data.length; i++) { - buffer[i] = data.charCodeAt(i); - } - // Write the string to the buffer - return buffer; -} - -/** - * Convert Array ot Uint8Array to Binary String - * - * @ignore - * @api private - */ -var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { - var result = ""; - for(var i = startIndex; i < endIndex; i++) { - result = result + String.fromCharCode(byteArray[i]); - } - return result; -}; - -/** - * A class representation of the BSON Binary type. - * - * Sub types - * - **BSON.BSON_BINARY_SUBTYPE_DEFAULT**, default BSON type. - * - **BSON.BSON_BINARY_SUBTYPE_FUNCTION**, BSON function type. - * - **BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY**, BSON byte array type. - * - **BSON.BSON_BINARY_SUBTYPE_UUID**, BSON uuid type. - * - **BSON.BSON_BINARY_SUBTYPE_MD5**, BSON md5 type. - * - **BSON.BSON_BINARY_SUBTYPE_USER_DEFINED**, BSON user defined type. - * - * @class Represents the Binary BSON type. - * @param {Buffer} buffer a buffer object containing the binary data. - * @param {Number} [subType] the option binary type. - * @return {Grid} - */ -function Binary(buffer, subType) { - if(!(this instanceof Binary)) return new Binary(buffer, subType); - - this._bsontype = 'Binary'; - - if(buffer instanceof Number) { - this.sub_type = buffer; - this.position = 0; - } else { - this.sub_type = subType == null ? BSON_BINARY_SUBTYPE_DEFAULT : subType; - this.position = 0; - } - - if(buffer != null && !(buffer instanceof Number)) { - // Only accept Buffer, Uint8Array or Arrays - if(typeof buffer == 'string') { - // Different ways of writing the length of the string for the different types - if(typeof Buffer != 'undefined') { - this.buffer = new Buffer(buffer); - } else if(typeof Uint8Array != 'undefined' || (Object.prototype.toString.call(buffer) == '[object Array]')) { - this.buffer = writeStringToArray(buffer); - } else { - throw new Error("only String, Buffer, Uint8Array or Array accepted"); - } - } else { - this.buffer = buffer; - } - this.position = buffer.length; - } else { - if(typeof Buffer != 'undefined') { - this.buffer = new Buffer(Binary.BUFFER_SIZE); - } else if(typeof Uint8Array != 'undefined'){ - this.buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE)); - } else { - this.buffer = new Array(Binary.BUFFER_SIZE); - } - // Set position to start of buffer - this.position = 0; - } -}; - -/** - * Updates this binary with byte_value. - * - * @param {Character} byte_value a single byte we wish to write. - * @api public - */ -Binary.prototype.put = function put(byte_value) { - // If it's a string and a has more than one character throw an error - if(byte_value['length'] != null && typeof byte_value != 'number' && byte_value.length != 1) throw new Error("only accepts single character String, Uint8Array or Array"); - if(typeof byte_value != 'number' && byte_value < 0 || byte_value > 255) throw new Error("only accepts number in a valid unsigned byte range 0-255"); - - // Decode the byte value once - var decoded_byte = null; - if(typeof byte_value == 'string') { - decoded_byte = byte_value.charCodeAt(0); - } else if(byte_value['length'] != null) { - decoded_byte = byte_value[0]; - } else { - decoded_byte = byte_value; - } - - if(this.buffer.length > this.position) { - this.buffer[this.position++] = decoded_byte; - } else { - if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { - // Create additional overflow buffer - var buffer = new Buffer(Binary.BUFFER_SIZE + this.buffer.length); - // Combine the two buffers together - this.buffer.copy(buffer, 0, 0, this.buffer.length); - this.buffer = buffer; - this.buffer[this.position++] = decoded_byte; - } else { - var buffer = null; - // Create a new buffer (typed or normal array) - if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { - buffer = new Uint8Array(new ArrayBuffer(Binary.BUFFER_SIZE + this.buffer.length)); - } else { - buffer = new Array(Binary.BUFFER_SIZE + this.buffer.length); - } - - // We need to copy all the content to the new array - for(var i = 0; i < this.buffer.length; i++) { - buffer[i] = this.buffer[i]; - } - - // Reassign the buffer - this.buffer = buffer; - // Write the byte - this.buffer[this.position++] = decoded_byte; - } - } -}; - -/** - * Writes a buffer or string to the binary. - * - * @param {Buffer|String} string a string or buffer to be written to the Binary BSON object. - * @param {Number} offset specify the binary of where to write the content. - * @api public - */ -Binary.prototype.write = function write(string, offset) { - offset = typeof offset == 'number' ? offset : this.position; - - // If the buffer is to small let's extend the buffer - if(this.buffer.length < offset + string.length) { - var buffer = null; - // If we are in node.js - if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { - buffer = new Buffer(this.buffer.length + string.length); - this.buffer.copy(buffer, 0, 0, this.buffer.length); - } else if(Object.prototype.toString.call(this.buffer) == '[object Uint8Array]') { - // Create a new buffer - buffer = new Uint8Array(new ArrayBuffer(this.buffer.length + string.length)) - // Copy the content - for(var i = 0; i < this.position; i++) { - buffer[i] = this.buffer[i]; - } - } - - // Assign the new buffer - this.buffer = buffer; - } - - if(typeof Buffer != 'undefined' && Buffer.isBuffer(string) && Buffer.isBuffer(this.buffer)) { - string.copy(this.buffer, offset, 0, string.length); - this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; - // offset = string.length - } else if(typeof Buffer != 'undefined' && typeof string == 'string' && Buffer.isBuffer(this.buffer)) { - this.buffer.write(string, 'binary', offset); - this.position = (offset + string.length) > this.position ? (offset + string.length) : this.position; - // offset = string.length; - } else if(Object.prototype.toString.call(string) == '[object Uint8Array]' - || Object.prototype.toString.call(string) == '[object Array]' && typeof string != 'string') { - for(var i = 0; i < string.length; i++) { - this.buffer[offset++] = string[i]; - } - - this.position = offset > this.position ? offset : this.position; - } else if(typeof string == 'string') { - for(var i = 0; i < string.length; i++) { - this.buffer[offset++] = string.charCodeAt(i); - } - - this.position = offset > this.position ? offset : this.position; - } -}; - -/** - * Reads **length** bytes starting at **position**. - * - * @param {Number} position read from the given position in the Binary. - * @param {Number} length the number of bytes to read. - * @return {Buffer} - * @api public - */ -Binary.prototype.read = function read(position, length) { - length = length && length > 0 - ? length - : this.position; - - // Let's return the data based on the type we have - if(this.buffer['slice']) { - return this.buffer.slice(position, position + length); - } else { - // Create a buffer to keep the result - var buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(length)) : new Array(length); - for(var i = 0; i < length; i++) { - buffer[i] = this.buffer[position++]; - } - } - // Return the buffer - return buffer; -}; - -/** - * Returns the value of this binary as a string. - * - * @return {String} - * @api public - */ -Binary.prototype.value = function value(asRaw) { - asRaw = asRaw == null ? false : asRaw; - - // If it's a node.js buffer object - if(typeof Buffer != 'undefined' && Buffer.isBuffer(this.buffer)) { - return asRaw ? this.buffer.slice(0, this.position) : this.buffer.toString('binary', 0, this.position); - } else { - if(asRaw) { - // we support the slice command use it - if(this.buffer['slice'] != null) { - return this.buffer.slice(0, this.position); - } else { - // Create a new buffer to copy content to - var newBuffer = Object.prototype.toString.call(this.buffer) == '[object Uint8Array]' ? new Uint8Array(new ArrayBuffer(this.position)) : new Array(this.position); - // Copy content - for(var i = 0; i < this.position; i++) { - newBuffer[i] = this.buffer[i]; - } - // Return the buffer - return newBuffer; - } - } else { - return convertArraytoUtf8BinaryString(this.buffer, 0, this.position); - } - } -}; - -/** - * Length. - * - * @return {Number} the length of the binary. - * @api public - */ -Binary.prototype.length = function length() { - return this.position; -}; - -/** - * @ignore - * @api private - */ -Binary.prototype.toJSON = function() { - return this.buffer != null ? this.buffer.toString('base64') : ''; -} - -/** - * @ignore - * @api private - */ -Binary.prototype.toString = function(format) { - return this.buffer != null ? this.buffer.slice(0, this.position).toString(format) : ''; -} - -Binary.BUFFER_SIZE = 256; - -/** - * Default BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_DEFAULT = 0; -/** - * Function BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_FUNCTION = 1; -/** - * Byte Array BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_BYTE_ARRAY = 2; -/** - * OLD UUID BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_UUID_OLD = 3; -/** - * UUID BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_UUID = 4; -/** - * MD5 BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_MD5 = 5; -/** - * User BSON type - * - * @classconstant SUBTYPE_DEFAULT - **/ -Binary.SUBTYPE_USER_DEFINED = 128; - -/** - * Expose. - */ -exports.Binary = Binary; - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js deleted file mode 100644 index d2fc811..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/binary_parser.js +++ /dev/null @@ -1,385 +0,0 @@ -/** - * Binary Parser. - * Jonas Raoni Soares Silva - * http://jsfromhell.com/classes/binary-parser [v1.0] - */ -var chr = String.fromCharCode; - -var maxBits = []; -for (var i = 0; i < 64; i++) { - maxBits[i] = Math.pow(2, i); -} - -function BinaryParser (bigEndian, allowExceptions) { - if(!(this instanceof BinaryParser)) return new BinaryParser(bigEndian, allowExceptions); - - this.bigEndian = bigEndian; - this.allowExceptions = allowExceptions; -}; - -BinaryParser.warn = function warn (msg) { - if (this.allowExceptions) { - throw new Error(msg); - } - - return 1; -}; - -BinaryParser.decodeFloat = function decodeFloat (data, precisionBits, exponentBits) { - var b = new this.Buffer(this.bigEndian, data); - - b.checkBuffer(precisionBits + exponentBits + 1); - - var bias = maxBits[exponentBits - 1] - 1 - , signal = b.readBits(precisionBits + exponentBits, 1) - , exponent = b.readBits(precisionBits, exponentBits) - , significand = 0 - , divisor = 2 - , curByte = b.buffer.length + (-precisionBits >> 3) - 1; - - do { - for (var byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit; mask >>= 1; ( byteValue & mask ) && ( significand += 1 / divisor ), divisor *= 2 ); - } while (precisionBits -= startBit); - - return exponent == ( bias << 1 ) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity : ( 1 + signal * -2 ) * ( exponent || significand ? !exponent ? Math.pow( 2, -bias + 1 ) * significand : Math.pow( 2, exponent - bias ) * ( 1 + significand ) : 0 ); -}; - -BinaryParser.decodeInt = function decodeInt (data, bits, signed, forceBigEndian) { - var b = new this.Buffer(this.bigEndian || forceBigEndian, data) - , x = b.readBits(0, bits) - , max = maxBits[bits]; //max = Math.pow( 2, bits ); - - return signed && x >= max / 2 - ? x - max - : x; -}; - -BinaryParser.encodeFloat = function encodeFloat (data, precisionBits, exponentBits) { - var bias = maxBits[exponentBits - 1] - 1 - , minExp = -bias + 1 - , maxExp = bias - , minUnnormExp = minExp - precisionBits - , n = parseFloat(data) - , status = isNaN(n) || n == -Infinity || n == +Infinity ? n : 0 - , exp = 0 - , len = 2 * bias + 1 + precisionBits + 3 - , bin = new Array(len) - , signal = (n = status !== 0 ? 0 : n) < 0 - , intPart = Math.floor(n = Math.abs(n)) - , floatPart = n - intPart - , lastBit - , rounded - , result - , i - , j; - - for (i = len; i; bin[--i] = 0); - - for (i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor(intPart / 2)); - - for (i = bias + 1; floatPart > 0 && i; (bin[++i] = ((floatPart *= 2) >= 1) - 0 ) && --floatPart); - - for (i = -1; ++i < len && !bin[i];); - - if (bin[(lastBit = precisionBits - 1 + (i = (exp = bias + 1 - i) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - (exp = minExp - 1))) + 1]) { - if (!(rounded = bin[lastBit])) { - for (j = lastBit + 2; !rounded && j < len; rounded = bin[j++]); - } - - for (j = lastBit + 1; rounded && --j >= 0; (bin[j] = !bin[j] - 0) && (rounded = 0)); - } - - for (i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i];); - - if ((exp = bias + 1 - i) >= minExp && exp <= maxExp) { - ++i; - } else if (exp < minExp) { - exp != bias + 1 - len && exp < minUnnormExp && this.warn("encodeFloat::float underflow"); - i = bias + 1 - (exp = minExp - 1); - } - - if (intPart || status !== 0) { - this.warn(intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status); - exp = maxExp + 1; - i = bias + 2; - - if (status == -Infinity) { - signal = 1; - } else if (isNaN(status)) { - bin[i] = 1; - } - } - - for (n = Math.abs(exp + bias), j = exponentBits + 1, result = ""; --j; result = (n % 2) + result, n = n >>= 1); - - for (n = 0, j = 0, i = (result = (signal ? "1" : "0") + result + bin.slice(i, i + precisionBits).join("")).length, r = []; i; j = (j + 1) % 8) { - n += (1 << j) * result.charAt(--i); - if (j == 7) { - r[r.length] = String.fromCharCode(n); - n = 0; - } - } - - r[r.length] = n - ? String.fromCharCode(n) - : ""; - - return (this.bigEndian ? r.reverse() : r).join(""); -}; - -BinaryParser.encodeInt = function encodeInt (data, bits, signed, forceBigEndian) { - var max = maxBits[bits]; - - if (data >= max || data < -(max / 2)) { - this.warn("encodeInt::overflow"); - data = 0; - } - - if (data < 0) { - data += max; - } - - for (var r = []; data; r[r.length] = String.fromCharCode(data % 256), data = Math.floor(data / 256)); - - for (bits = -(-bits >> 3) - r.length; bits--; r[r.length] = "\0"); - - return ((this.bigEndian || forceBigEndian) ? r.reverse() : r).join(""); -}; - -BinaryParser.toSmall = function( data ){ return this.decodeInt( data, 8, true ); }; -BinaryParser.fromSmall = function( data ){ return this.encodeInt( data, 8, true ); }; -BinaryParser.toByte = function( data ){ return this.decodeInt( data, 8, false ); }; -BinaryParser.fromByte = function( data ){ return this.encodeInt( data, 8, false ); }; -BinaryParser.toShort = function( data ){ return this.decodeInt( data, 16, true ); }; -BinaryParser.fromShort = function( data ){ return this.encodeInt( data, 16, true ); }; -BinaryParser.toWord = function( data ){ return this.decodeInt( data, 16, false ); }; -BinaryParser.fromWord = function( data ){ return this.encodeInt( data, 16, false ); }; -BinaryParser.toInt = function( data ){ return this.decodeInt( data, 32, true ); }; -BinaryParser.fromInt = function( data ){ return this.encodeInt( data, 32, true ); }; -BinaryParser.toLong = function( data ){ return this.decodeInt( data, 64, true ); }; -BinaryParser.fromLong = function( data ){ return this.encodeInt( data, 64, true ); }; -BinaryParser.toDWord = function( data ){ return this.decodeInt( data, 32, false ); }; -BinaryParser.fromDWord = function( data ){ return this.encodeInt( data, 32, false ); }; -BinaryParser.toQWord = function( data ){ return this.decodeInt( data, 64, true ); }; -BinaryParser.fromQWord = function( data ){ return this.encodeInt( data, 64, true ); }; -BinaryParser.toFloat = function( data ){ return this.decodeFloat( data, 23, 8 ); }; -BinaryParser.fromFloat = function( data ){ return this.encodeFloat( data, 23, 8 ); }; -BinaryParser.toDouble = function( data ){ return this.decodeFloat( data, 52, 11 ); }; -BinaryParser.fromDouble = function( data ){ return this.encodeFloat( data, 52, 11 ); }; - -// Factor out the encode so it can be shared by add_header and push_int32 -BinaryParser.encode_int32 = function encode_int32 (number, asArray) { - var a, b, c, d, unsigned; - unsigned = (number < 0) ? (number + 0x100000000) : number; - a = Math.floor(unsigned / 0xffffff); - unsigned &= 0xffffff; - b = Math.floor(unsigned / 0xffff); - unsigned &= 0xffff; - c = Math.floor(unsigned / 0xff); - unsigned &= 0xff; - d = Math.floor(unsigned); - return asArray ? [chr(a), chr(b), chr(c), chr(d)] : chr(a) + chr(b) + chr(c) + chr(d); -}; - -BinaryParser.encode_int64 = function encode_int64 (number) { - var a, b, c, d, e, f, g, h, unsigned; - unsigned = (number < 0) ? (number + 0x10000000000000000) : number; - a = Math.floor(unsigned / 0xffffffffffffff); - unsigned &= 0xffffffffffffff; - b = Math.floor(unsigned / 0xffffffffffff); - unsigned &= 0xffffffffffff; - c = Math.floor(unsigned / 0xffffffffff); - unsigned &= 0xffffffffff; - d = Math.floor(unsigned / 0xffffffff); - unsigned &= 0xffffffff; - e = Math.floor(unsigned / 0xffffff); - unsigned &= 0xffffff; - f = Math.floor(unsigned / 0xffff); - unsigned &= 0xffff; - g = Math.floor(unsigned / 0xff); - unsigned &= 0xff; - h = Math.floor(unsigned); - return chr(a) + chr(b) + chr(c) + chr(d) + chr(e) + chr(f) + chr(g) + chr(h); -}; - -/** - * UTF8 methods - */ - -// Take a raw binary string and return a utf8 string -BinaryParser.decode_utf8 = function decode_utf8 (binaryStr) { - var len = binaryStr.length - , decoded = '' - , i = 0 - , c = 0 - , c1 = 0 - , c2 = 0 - , c3; - - while (i < len) { - c = binaryStr.charCodeAt(i); - if (c < 128) { - decoded += String.fromCharCode(c); - i++; - } else if ((c > 191) && (c < 224)) { - c2 = binaryStr.charCodeAt(i+1); - decoded += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = binaryStr.charCodeAt(i+1); - c3 = binaryStr.charCodeAt(i+2); - decoded += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - - return decoded; -}; - -// Encode a cstring -BinaryParser.encode_cstring = function encode_cstring (s) { - return unescape(encodeURIComponent(s)) + BinaryParser.fromByte(0); -}; - -// Take a utf8 string and return a binary string -BinaryParser.encode_utf8 = function encode_utf8 (s) { - var a = "" - , c; - - for (var n = 0, len = s.length; n < len; n++) { - c = s.charCodeAt(n); - - if (c < 128) { - a += String.fromCharCode(c); - } else if ((c > 127) && (c < 2048)) { - a += String.fromCharCode((c>>6) | 192) ; - a += String.fromCharCode((c&63) | 128); - } else { - a += String.fromCharCode((c>>12) | 224); - a += String.fromCharCode(((c>>6) & 63) | 128); - a += String.fromCharCode((c&63) | 128); - } - } - - return a; -}; - -BinaryParser.hprint = function hprint (s) { - var number; - - for (var i = 0, len = s.length; i < len; i++) { - if (s.charCodeAt(i) < 32) { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - process.stdout.write(number + " ") - } else { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - process.stdout.write(number + " ") - } - } - - process.stdout.write("\n\n"); -}; - -BinaryParser.ilprint = function hprint (s) { - var number; - - for (var i = 0, len = s.length; i < len; i++) { - if (s.charCodeAt(i) < 32) { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(10) - : s.charCodeAt(i).toString(10); - - require('util').debug(number+' : '); - } else { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(10) - : s.charCodeAt(i).toString(10); - require('util').debug(number+' : '+ s.charAt(i)); - } - } -}; - -BinaryParser.hlprint = function hprint (s) { - var number; - - for (var i = 0, len = s.length; i < len; i++) { - if (s.charCodeAt(i) < 32) { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - require('util').debug(number+' : '); - } else { - number = s.charCodeAt(i) <= 15 - ? "0" + s.charCodeAt(i).toString(16) - : s.charCodeAt(i).toString(16); - require('util').debug(number+' : '+ s.charAt(i)); - } - } -}; - -/** - * BinaryParser buffer constructor. - */ -function BinaryParserBuffer (bigEndian, buffer) { - this.bigEndian = bigEndian || 0; - this.buffer = []; - this.setBuffer(buffer); -}; - -BinaryParserBuffer.prototype.setBuffer = function setBuffer (data) { - var l, i, b; - - if (data) { - i = l = data.length; - b = this.buffer = new Array(l); - for (; i; b[l - i] = data.charCodeAt(--i)); - this.bigEndian && b.reverse(); - } -}; - -BinaryParserBuffer.prototype.hasNeededBits = function hasNeededBits (neededBits) { - return this.buffer.length >= -(-neededBits >> 3); -}; - -BinaryParserBuffer.prototype.checkBuffer = function checkBuffer (neededBits) { - if (!this.hasNeededBits(neededBits)) { - throw new Error("checkBuffer::missing bytes"); - } -}; - -BinaryParserBuffer.prototype.readBits = function readBits (start, length) { - //shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni) - - function shl (a, b) { - for (; b--; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1); - return a; - } - - if (start < 0 || length <= 0) { - return 0; - } - - this.checkBuffer(start + length); - - var offsetLeft - , offsetRight = start % 8 - , curByte = this.buffer.length - ( start >> 3 ) - 1 - , lastByte = this.buffer.length + ( -( start + length ) >> 3 ) - , diff = curByte - lastByte - , sum = ((this.buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1)) + (diff && (offsetLeft = (start + length) % 8) ? (this.buffer[lastByte++] & ((1 << offsetLeft) - 1)) << (diff-- << 3) - offsetRight : 0); - - for(; diff; sum += shl(this.buffer[lastByte++], (diff-- << 3) - offsetRight)); - - return sum; -}; - -/** - * Expose. - */ -BinaryParser.Buffer = BinaryParserBuffer; - -exports.BinaryParser = BinaryParser; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js deleted file mode 100644 index 57fdd79..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/bson.js +++ /dev/null @@ -1,1519 +0,0 @@ -var Long = require('./long').Long - , Double = require('./double').Double - , Timestamp = require('./timestamp').Timestamp - , ObjectID = require('./objectid').ObjectID - , Symbol = require('./symbol').Symbol - , Code = require('./code').Code - , MinKey = require('./min_key').MinKey - , MaxKey = require('./max_key').MaxKey - , DBRef = require('./db_ref').DBRef - , Binary = require('./binary').Binary - , BinaryParser = require('./binary_parser').BinaryParser - , writeIEEE754 = require('./float_parser').writeIEEE754 - , readIEEE754 = require('./float_parser').readIEEE754 - -// To ensure that 0.4 of node works correctly -var isDate = function isDate(d) { - return typeof d === 'object' && Object.prototype.toString.call(d) === '[object Date]'; -} - -/** - * Create a new BSON instance - * - * @class Represents the BSON Parser - * @return {BSON} instance of BSON Parser. - */ -function BSON () {}; - -/** - * @ignore - * @api private - */ -// BSON MAX VALUES -BSON.BSON_INT32_MAX = 0x7FFFFFFF; -BSON.BSON_INT32_MIN = -0x80000000; - -BSON.BSON_INT64_MAX = Math.pow(2, 63) - 1; -BSON.BSON_INT64_MIN = -Math.pow(2, 63); - -// JS MAX PRECISE VALUES -BSON.JS_INT_MAX = 0x20000000000000; // Any integer up to 2^53 can be precisely represented by a double. -BSON.JS_INT_MIN = -0x20000000000000; // Any integer down to -2^53 can be precisely represented by a double. - -// Internal long versions -var JS_INT_MAX_LONG = Long.fromNumber(0x20000000000000); // Any integer up to 2^53 can be precisely represented by a double. -var JS_INT_MIN_LONG = Long.fromNumber(-0x20000000000000); // Any integer down to -2^53 can be precisely represented by a double. - -/** - * Number BSON Type - * - * @classconstant BSON_DATA_NUMBER - **/ -BSON.BSON_DATA_NUMBER = 1; -/** - * String BSON Type - * - * @classconstant BSON_DATA_STRING - **/ -BSON.BSON_DATA_STRING = 2; -/** - * Object BSON Type - * - * @classconstant BSON_DATA_OBJECT - **/ -BSON.BSON_DATA_OBJECT = 3; -/** - * Array BSON Type - * - * @classconstant BSON_DATA_ARRAY - **/ -BSON.BSON_DATA_ARRAY = 4; -/** - * Binary BSON Type - * - * @classconstant BSON_DATA_BINARY - **/ -BSON.BSON_DATA_BINARY = 5; -/** - * ObjectID BSON Type - * - * @classconstant BSON_DATA_OID - **/ -BSON.BSON_DATA_OID = 7; -/** - * Boolean BSON Type - * - * @classconstant BSON_DATA_BOOLEAN - **/ -BSON.BSON_DATA_BOOLEAN = 8; -/** - * Date BSON Type - * - * @classconstant BSON_DATA_DATE - **/ -BSON.BSON_DATA_DATE = 9; -/** - * null BSON Type - * - * @classconstant BSON_DATA_NULL - **/ -BSON.BSON_DATA_NULL = 10; -/** - * RegExp BSON Type - * - * @classconstant BSON_DATA_REGEXP - **/ -BSON.BSON_DATA_REGEXP = 11; -/** - * Code BSON Type - * - * @classconstant BSON_DATA_CODE - **/ -BSON.BSON_DATA_CODE = 13; -/** - * Symbol BSON Type - * - * @classconstant BSON_DATA_SYMBOL - **/ -BSON.BSON_DATA_SYMBOL = 14; -/** - * Code with Scope BSON Type - * - * @classconstant BSON_DATA_CODE_W_SCOPE - **/ -BSON.BSON_DATA_CODE_W_SCOPE = 15; -/** - * 32 bit Integer BSON Type - * - * @classconstant BSON_DATA_INT - **/ -BSON.BSON_DATA_INT = 16; -/** - * Timestamp BSON Type - * - * @classconstant BSON_DATA_TIMESTAMP - **/ -BSON.BSON_DATA_TIMESTAMP = 17; -/** - * Long BSON Type - * - * @classconstant BSON_DATA_LONG - **/ -BSON.BSON_DATA_LONG = 18; -/** - * MinKey BSON Type - * - * @classconstant BSON_DATA_MIN_KEY - **/ -BSON.BSON_DATA_MIN_KEY = 0xff; -/** - * MaxKey BSON Type - * - * @classconstant BSON_DATA_MAX_KEY - **/ -BSON.BSON_DATA_MAX_KEY = 0x7f; - -/** - * Binary Default Type - * - * @classconstant BSON_BINARY_SUBTYPE_DEFAULT - **/ -BSON.BSON_BINARY_SUBTYPE_DEFAULT = 0; -/** - * Binary Function Type - * - * @classconstant BSON_BINARY_SUBTYPE_FUNCTION - **/ -BSON.BSON_BINARY_SUBTYPE_FUNCTION = 1; -/** - * Binary Byte Array Type - * - * @classconstant BSON_BINARY_SUBTYPE_BYTE_ARRAY - **/ -BSON.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -/** - * Binary UUID Type - * - * @classconstant BSON_BINARY_SUBTYPE_UUID - **/ -BSON.BSON_BINARY_SUBTYPE_UUID = 3; -/** - * Binary MD5 Type - * - * @classconstant BSON_BINARY_SUBTYPE_MD5 - **/ -BSON.BSON_BINARY_SUBTYPE_MD5 = 4; -/** - * Binary User Defined Type - * - * @classconstant BSON_BINARY_SUBTYPE_USER_DEFINED - **/ -BSON.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -/** - * Calculate the bson size for a passed in Javascript object. - * - * @param {Object} object the Javascript object to calculate the BSON byte size for. - * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. - * @return {Number} returns the number of bytes the BSON object will take up. - * @api public - */ -BSON.calculateObjectSize = function calculateObjectSize(object, serializeFunctions) { - var totalLength = (4 + 1); - - if(Array.isArray(object)) { - for(var i = 0; i < object.length; i++) { - totalLength += calculateElement(i.toString(), object[i], serializeFunctions) - } - } else { - // If we have toBSON defined, override the current object - if(object.toBSON) { - object = object.toBSON(); - } - - // Calculate size - for(var key in object) { - totalLength += calculateElement(key, object[key], serializeFunctions) - } - } - - return totalLength; -} - -/** - * @ignore - * @api private - */ -function calculateElement(name, value, serializeFunctions) { - var isBuffer = typeof Buffer !== 'undefined'; - - switch(typeof value) { - case 'string': - return 1 + (!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1 + 4 + (!isBuffer ? numberOfBytes(value) : Buffer.byteLength(value, 'utf8')) + 1; - case 'number': - if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { - if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { // 32 bit - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (4 + 1); - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } - } else { // 64 bit - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } - case 'undefined': - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); - case 'boolean': - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 1); - case 'object': - if(value == null || value instanceof MinKey || value instanceof MaxKey || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1); - } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (12 + 1); - } else if(value instanceof Date || isDate(value)) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (1 + 4 + 1) + value.length; - } else if(value instanceof Long || value instanceof Double || value instanceof Timestamp - || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Double' || value['_bsontype'] == 'Timestamp') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (8 + 1); - } else if(value instanceof Code || value['_bsontype'] == 'Code') { - // Calculate size depending on the availability of a scope - if(value.scope != null && Object.keys(value.scope).length > 0) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.code.toString()) : Buffer.byteLength(value.code.toString(), 'utf8')) + 1; - } - } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { - // Check what kind of subtype we have - if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1 + 4); - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + (value.position + 1 + 4 + 1); - } - } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + ((!isBuffer ? numberOfBytes(value.value) : Buffer.byteLength(value.value, 'utf8')) + 4 + 1 + 1); - } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { - // Set up correct object for serialization - var ordered_values = { - '$ref': value.namespace - , '$id' : value.oid - }; - - // Add db reference if it exists - if(null != value.db) { - ordered_values['$db'] = value.db; - } - - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + BSON.calculateObjectSize(ordered_values, serializeFunctions); - } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 - + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 - } else { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + BSON.calculateObjectSize(value, serializeFunctions) + 1; - } - case 'function': - // WTF for 0.4.X where typeof /someregexp/ === 'function' - if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + (!isBuffer ? numberOfBytes(value.source) : Buffer.byteLength(value.source, 'utf8')) + 1 - + (value.global ? 1 : 0) + (value.ignoreCase ? 1 : 0) + (value.multiline ? 1 : 0) + 1 - } else { - if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1 + BSON.calculateObjectSize(value.scope, serializeFunctions); - } else if(serializeFunctions) { - return (name != null ? ((!isBuffer ? numberOfBytes(name) : Buffer.byteLength(name, 'utf8')) + 1) : 0) + 1 + 4 + (!isBuffer ? numberOfBytes(value.toString()) : Buffer.byteLength(value.toString(), 'utf8')) + 1; - } - } - } - - return 0; -} - -/** - * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. - * @param {Number} index the index in the buffer where we wish to start serializing into. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Number} returns the new write index in the Buffer. - * @api public - */ -BSON.serializeWithBufferAndIndex = function serializeWithBufferAndIndex(object, checkKeys, buffer, index, serializeFunctions) { - // Default setting false - serializeFunctions = serializeFunctions == null ? false : serializeFunctions; - // Write end information (length of the object) - var size = buffer.length; - // Write the size of the object - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - return serializeObject(object, checkKeys, buffer, index, serializeFunctions) - 1; -} - -/** - * @ignore - * @api private - */ -var serializeObject = function(object, checkKeys, buffer, index, serializeFunctions) { - // Process the object - if(Array.isArray(object)) { - for(var i = 0; i < object.length; i++) { - index = packElement(i.toString(), object[i], checkKeys, buffer, index, serializeFunctions); - } - } else { - // If we have toBSON defined, override the current object - if(object.toBSON) { - object = object.toBSON(); - } - - // Serialize the object - for(var key in object) { - // Check the key and throw error if it's illegal - if(checkKeys == true && (key != '$db' && key != '$ref' && key != '$id')) { - BSON.checkKey(key); - } - - // Pack the element - index = packElement(key, object[key], checkKeys, buffer, index, serializeFunctions); - } - } - - // Write zero - buffer[index++] = 0; - return index; -} - -var stringToBytes = function(str) { - var ch, st, re = []; - for (var i = 0; i < str.length; i++ ) { - ch = str.charCodeAt(i); // get char - st = []; // set up "stack" - do { - st.push( ch & 0xFF ); // push byte to stack - ch = ch >> 8; // shift value down by 1 byte - } - while ( ch ); - // add stack contents to result - // done because chars have "wrong" endianness - re = re.concat( st.reverse() ); - } - // return an array of bytes - return re; -} - -var numberOfBytes = function(str) { - var ch, st, re = 0; - for (var i = 0; i < str.length; i++ ) { - ch = str.charCodeAt(i); // get char - st = []; // set up "stack" - do { - st.push( ch & 0xFF ); // push byte to stack - ch = ch >> 8; // shift value down by 1 byte - } - while ( ch ); - // add stack contents to result - // done because chars have "wrong" endianness - re = re + st.length; - } - // return an array of bytes - return re; -} - -/** - * @ignore - * @api private - */ -var writeToTypedArray = function(buffer, string, index) { - var bytes = stringToBytes(string); - for(var i = 0; i < bytes.length; i++) { - buffer[index + i] = bytes[i]; - } - return bytes.length; -} - -/** - * @ignore - * @api private - */ -var supportsBuffer = typeof Buffer != 'undefined'; - -/** - * @ignore - * @api private - */ -var packElement = function(name, value, checkKeys, buffer, index, serializeFunctions) { - var startIndex = index; - - switch(typeof value) { - case 'string': - // Encode String type - buffer[index++] = BSON.BSON_DATA_STRING; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Calculate size - var size = supportsBuffer ? Buffer.byteLength(value) + 1 : numberOfBytes(value) + 1; - // Write the size of the string to buffer - buffer[index + 3] = (size >> 24) & 0xff; - buffer[index + 2] = (size >> 16) & 0xff; - buffer[index + 1] = (size >> 8) & 0xff; - buffer[index] = size & 0xff; - // Ajust the index - index = index + 4; - // Write the string - supportsBuffer ? buffer.write(value, index, 'utf8') : writeToTypedArray(buffer, value, index); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0; - // Return index - return index; - case 'number': - // We have an integer value - if(Math.floor(value) === value && value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { - // If the value fits in 32 bits encode as int, if it fits in a double - // encode it as a double, otherwise long - if(value >= BSON.BSON_INT32_MIN && value <= BSON.BSON_INT32_MAX) { - // Set int type 32 bits or less - buffer[index++] = BSON.BSON_DATA_INT; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write the int value - buffer[index++] = value & 0xff; - buffer[index++] = (value >> 8) & 0xff; - buffer[index++] = (value >> 16) & 0xff; - buffer[index++] = (value >> 24) & 0xff; - } else if(value >= BSON.JS_INT_MIN && value <= BSON.JS_INT_MAX) { - // Encode as double - buffer[index++] = BSON.BSON_DATA_NUMBER; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write float - writeIEEE754(buffer, value, index, 'little', 52, 8); - // Ajust index - index = index + 8; - } else { - // Set long type - buffer[index++] = BSON.BSON_DATA_LONG; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - var longVal = Long.fromNumber(value); - var lowBits = longVal.getLowBits(); - var highBits = longVal.getHighBits(); - // Encode low bits - buffer[index++] = lowBits & 0xff; - buffer[index++] = (lowBits >> 8) & 0xff; - buffer[index++] = (lowBits >> 16) & 0xff; - buffer[index++] = (lowBits >> 24) & 0xff; - // Encode high bits - buffer[index++] = highBits & 0xff; - buffer[index++] = (highBits >> 8) & 0xff; - buffer[index++] = (highBits >> 16) & 0xff; - buffer[index++] = (highBits >> 24) & 0xff; - } - } else { - // Encode as double - buffer[index++] = BSON.BSON_DATA_NUMBER; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write float - writeIEEE754(buffer, value, index, 'little', 52, 8); - // Ajust index - index = index + 8; - } - - return index; - case 'undefined': - // Set long type - buffer[index++] = BSON.BSON_DATA_NULL; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - return index; - case 'boolean': - // Write the type - buffer[index++] = BSON.BSON_DATA_BOOLEAN; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Encode the boolean value - buffer[index++] = value ? 1 : 0; - return index; - case 'object': - if(value === null || value instanceof MinKey || value instanceof MaxKey - || value['_bsontype'] == 'MinKey' || value['_bsontype'] == 'MaxKey') { - // Write the type of either min or max key - if(value === null) { - buffer[index++] = BSON.BSON_DATA_NULL; - } else if(value instanceof MinKey) { - buffer[index++] = BSON.BSON_DATA_MIN_KEY; - } else { - buffer[index++] = BSON.BSON_DATA_MAX_KEY; - } - - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - return index; - } else if(value instanceof ObjectID || value['_bsontype'] == 'ObjectID') { - // Write the type - buffer[index++] = BSON.BSON_DATA_OID; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write objectid - supportsBuffer ? buffer.write(value.id, index, 'binary') : writeToTypedArray(buffer, value.id, index); - // Ajust index - index = index + 12; - return index; - } else if(value instanceof Date || isDate(value)) { - // Write the type - buffer[index++] = BSON.BSON_DATA_DATE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write the date - var dateInMilis = Long.fromNumber(value.getTime()); - var lowBits = dateInMilis.getLowBits(); - var highBits = dateInMilis.getHighBits(); - // Encode low bits - buffer[index++] = lowBits & 0xff; - buffer[index++] = (lowBits >> 8) & 0xff; - buffer[index++] = (lowBits >> 16) & 0xff; - buffer[index++] = (lowBits >> 24) & 0xff; - // Encode high bits - buffer[index++] = highBits & 0xff; - buffer[index++] = (highBits >> 8) & 0xff; - buffer[index++] = (highBits >> 16) & 0xff; - buffer[index++] = (highBits >> 24) & 0xff; - return index; - } else if(typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { - // Write the type - buffer[index++] = BSON.BSON_DATA_BINARY; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Get size of the buffer (current write point) - var size = value.length; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the default subtype - buffer[index++] = BSON.BSON_BINARY_SUBTYPE_DEFAULT; - // Copy the content form the binary field to the buffer - value.copy(buffer, index, 0, size); - // Adjust the index - index = index + size; - return index; - } else if(value instanceof Long || value instanceof Timestamp || value['_bsontype'] == 'Long' || value['_bsontype'] == 'Timestamp') { - // Write the type - buffer[index++] = value instanceof Long ? BSON.BSON_DATA_LONG : BSON.BSON_DATA_TIMESTAMP; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write the date - var lowBits = value.getLowBits(); - var highBits = value.getHighBits(); - // Encode low bits - buffer[index++] = lowBits & 0xff; - buffer[index++] = (lowBits >> 8) & 0xff; - buffer[index++] = (lowBits >> 16) & 0xff; - buffer[index++] = (lowBits >> 24) & 0xff; - // Encode high bits - buffer[index++] = highBits & 0xff; - buffer[index++] = (highBits >> 8) & 0xff; - buffer[index++] = (highBits >> 16) & 0xff; - buffer[index++] = (highBits >> 24) & 0xff; - return index; - } else if(value instanceof Double || value['_bsontype'] == 'Double') { - // Encode as double - buffer[index++] = BSON.BSON_DATA_NUMBER; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Write float - writeIEEE754(buffer, value, index, 'little', 52, 8); - // Ajust index - index = index + 8; - return index; - } else if(value instanceof Code || value['_bsontype'] == 'Code') { - if(value.scope != null && Object.keys(value.scope).length > 0) { - // Write the type - buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Calculate the scope size - var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); - // Function string - var functionString = value.code.toString(); - // Function Size - var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - - // Calculate full size of the object - var totalSize = 4 + codeSize + scopeSize + 4; - - // Write the total size of the object - buffer[index++] = totalSize & 0xff; - buffer[index++] = (totalSize >> 8) & 0xff; - buffer[index++] = (totalSize >> 16) & 0xff; - buffer[index++] = (totalSize >> 24) & 0xff; - - // Write the size of the string to buffer - buffer[index++] = codeSize & 0xff; - buffer[index++] = (codeSize >> 8) & 0xff; - buffer[index++] = (codeSize >> 16) & 0xff; - buffer[index++] = (codeSize >> 24) & 0xff; - - // Write the string - supportsBuffer ? buffer.write(functionString, index, 'utf8') : writeToTypedArray(buffer, functionString, index); - // Update index - index = index + codeSize - 1; - // Write zero - buffer[index++] = 0; - // Serialize the scope object - var scopeObjectBuffer = supportsBuffer ? new Buffer(scopeSize) : new Uint8Array(new ArrayBuffer(scopeSize)); - // Execute the serialization into a seperate buffer - serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); - - // Adjusted scope Size (removing the header) - var scopeDocSize = scopeSize; - // Write scope object size - buffer[index++] = scopeDocSize & 0xff; - buffer[index++] = (scopeDocSize >> 8) & 0xff; - buffer[index++] = (scopeDocSize >> 16) & 0xff; - buffer[index++] = (scopeDocSize >> 24) & 0xff; - - // Write the scopeObject into the buffer - supportsBuffer ? scopeObjectBuffer.copy(buffer, index, 0, scopeSize) : buffer.set(scopeObjectBuffer, index); - // Adjust index, removing the empty size of the doc (5 bytes 0000000005) - index = index + scopeDocSize - 5; - // Write trailing zero - buffer[index++] = 0; - return index - } else { - buffer[index++] = BSON.BSON_DATA_CODE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Function string - var functionString = value.code.toString(); - // Function Size - var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the string - buffer.write(functionString, index, 'utf8'); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0; - return index; - } - } else if(value instanceof Binary || value['_bsontype'] == 'Binary') { - // Write the type - buffer[index++] = BSON.BSON_DATA_BINARY; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Extract the buffer - var data = value.value(true); - // Calculate size - var size = value.position; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the subtype to the buffer - buffer[index++] = value.sub_type; - - // If we have binary type 2 the 4 first bytes are the size - if(value.sub_type == Binary.SUBTYPE_BYTE_ARRAY) { - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - } - - // Write the data to the object - supportsBuffer ? data.copy(buffer, index, 0, value.position) : buffer.set(data, index); - // Ajust index - index = index + value.position; - return index; - } else if(value instanceof Symbol || value['_bsontype'] == 'Symbol') { - // Write the type - buffer[index++] = BSON.BSON_DATA_SYMBOL; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Calculate size - var size = supportsBuffer ? Buffer.byteLength(value.value) + 1 : numberOfBytes(value.value) + 1; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the string - buffer.write(value.value, index, 'utf8'); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0x00; - return index; - } else if(value instanceof DBRef || value['_bsontype'] == 'DBRef') { - // Write the type - buffer[index++] = BSON.BSON_DATA_OBJECT; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Set up correct object for serialization - var ordered_values = { - '$ref': value.namespace - , '$id' : value.oid - }; - - // Add db reference if it exists - if(null != value.db) { - ordered_values['$db'] = value.db; - } - - // Message size - var size = BSON.calculateObjectSize(ordered_values, serializeFunctions); - // Serialize the object - var endIndex = BSON.serializeWithBufferAndIndex(ordered_values, checkKeys, buffer, index, serializeFunctions); - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write zero for object - buffer[endIndex++] = 0x00; - // Return the end index - return endIndex; - } else if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]') { - // Write the type - buffer[index++] = BSON.BSON_DATA_REGEXP; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write the regular expression string - supportsBuffer ? buffer.write(value.source, index, 'utf8') : writeToTypedArray(buffer, value.source, index); - // Adjust the index - index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); - // Write zero - buffer[index++] = 0x00; - // Write the parameters - if(value.global) buffer[index++] = 0x73; // s - if(value.ignoreCase) buffer[index++] = 0x69; // i - if(value.multiline) buffer[index++] = 0x6d; // m - // Add ending zero - buffer[index++] = 0x00; - return index; - } else { - // Write the type - buffer[index++] = Array.isArray(value) ? BSON.BSON_DATA_ARRAY : BSON.BSON_DATA_OBJECT; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Adjust the index - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - var endIndex = serializeObject(value, checkKeys, buffer, index + 4, serializeFunctions); - // Write size - var size = endIndex - index; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - return endIndex; - } - case 'function': - // WTF for 0.4.X where typeof /someregexp/ === 'function' - if(value instanceof RegExp || Object.prototype.toString.call(value) === '[object RegExp]' || String.call(value) == '[object RegExp]') { - // Write the type - buffer[index++] = BSON.BSON_DATA_REGEXP; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - - // Write the regular expression string - buffer.write(value.source, index, 'utf8'); - // Adjust the index - index = index + (supportsBuffer ? Buffer.byteLength(value.source) : numberOfBytes(value.source)); - // Write zero - buffer[index++] = 0x00; - // Write the parameters - if(value.global) buffer[index++] = 0x73; // s - if(value.ignoreCase) buffer[index++] = 0x69; // i - if(value.multiline) buffer[index++] = 0x6d; // m - // Add ending zero - buffer[index++] = 0x00; - return index; - } else { - if(serializeFunctions && value.scope != null && Object.keys(value.scope).length > 0) { - // Write the type - buffer[index++] = BSON.BSON_DATA_CODE_W_SCOPE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Calculate the scope size - var scopeSize = BSON.calculateObjectSize(value.scope, serializeFunctions); - // Function string - var functionString = value.toString(); - // Function Size - var codeSize = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - - // Calculate full size of the object - var totalSize = 4 + codeSize + scopeSize; - - // Write the total size of the object - buffer[index++] = totalSize & 0xff; - buffer[index++] = (totalSize >> 8) & 0xff; - buffer[index++] = (totalSize >> 16) & 0xff; - buffer[index++] = (totalSize >> 24) & 0xff; - - // Write the size of the string to buffer - buffer[index++] = codeSize & 0xff; - buffer[index++] = (codeSize >> 8) & 0xff; - buffer[index++] = (codeSize >> 16) & 0xff; - buffer[index++] = (codeSize >> 24) & 0xff; - - // Write the string - buffer.write(functionString, index, 'utf8'); - // Update index - index = index + codeSize - 1; - // Write zero - buffer[index++] = 0; - // Serialize the scope object - var scopeObjectBuffer = new Buffer(scopeSize); - // Execute the serialization into a seperate buffer - serializeObject(value.scope, checkKeys, scopeObjectBuffer, 0, serializeFunctions); - - // Adjusted scope Size (removing the header) - var scopeDocSize = scopeSize - 4; - // Write scope object size - buffer[index++] = scopeDocSize & 0xff; - buffer[index++] = (scopeDocSize >> 8) & 0xff; - buffer[index++] = (scopeDocSize >> 16) & 0xff; - buffer[index++] = (scopeDocSize >> 24) & 0xff; - - // Write the scopeObject into the buffer - scopeObjectBuffer.copy(buffer, index, 0, scopeSize); - - // Adjust index, removing the empty size of the doc (5 bytes 0000000005) - index = index + scopeDocSize - 5; - // Write trailing zero - buffer[index++] = 0; - return index - } else if(serializeFunctions) { - buffer[index++] = BSON.BSON_DATA_CODE; - // Number of written bytes - var numberOfWrittenBytes = supportsBuffer ? buffer.write(name, index, 'utf8') : writeToTypedArray(buffer, name, index); - // Encode the name - index = index + numberOfWrittenBytes + 1; - buffer[index - 1] = 0; - // Function string - var functionString = value.toString(); - // Function Size - var size = supportsBuffer ? Buffer.byteLength(functionString) + 1 : numberOfBytes(functionString) + 1; - // Write the size of the string to buffer - buffer[index++] = size & 0xff; - buffer[index++] = (size >> 8) & 0xff; - buffer[index++] = (size >> 16) & 0xff; - buffer[index++] = (size >> 24) & 0xff; - // Write the string - buffer.write(functionString, index, 'utf8'); - // Update index - index = index + size - 1; - // Write zero - buffer[index++] = 0; - return index; - } - } - } - - // If no value to serialize - return index; -} - -/** - * Serialize a Javascript object. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Buffer} returns the Buffer object containing the serialized object. - * @api public - */ -BSON.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { - var buffer = null; - // Calculate the size of the object - var size = BSON.calculateObjectSize(object, serializeFunctions); - // Fetch the best available type for storing the binary data - if(buffer = typeof Buffer != 'undefined') { - buffer = new Buffer(size); - asBuffer = true; - } else if(typeof Uint8Array != 'undefined') { - buffer = new Uint8Array(new ArrayBuffer(size)); - } else { - buffer = new Array(size); - } - - // If asBuffer is false use typed arrays - BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, 0, serializeFunctions); - return buffer; -} - -/** - * Contains the function cache if we have that enable to allow for avoiding the eval step on each deserialization, comparison is by md5 - * - * @ignore - * @api private - */ -var functionCache = BSON.functionCache = {}; - -/** - * Crc state variables shared by function - * - * @ignore - * @api private - */ -var table = [0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D]; - -/** - * CRC32 hash method, Fast and enough versitility for our usage - * - * @ignore - * @api private - */ -var crc32 = function(string, start, end) { - var crc = 0 - var x = 0; - var y = 0; - crc = crc ^ (-1); - - for(var i = start, iTop = end; i < iTop;i++) { - y = (crc ^ string[i]) & 0xFF; - x = table[y]; - crc = (crc >>> 8) ^ x; - } - - return crc ^ (-1); -} - -/** - * Deserialize stream data as BSON documents. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} data the buffer containing the serialized set of BSON documents. - * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. - * @param {Number} numberOfDocuments number of documents to deserialize. - * @param {Array} documents an array where to store the deserialized documents. - * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. - * @param {Object} [options] additional options used for the deserialization. - * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. - * @api public - */ -BSON.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { - // if(numberOfDocuments !== documents.length) throw new Error("Number of expected results back is less than the number of documents"); - options = options != null ? options : {}; - var index = startIndex; - // Loop over all documents - for(var i = 0; i < numberOfDocuments; i++) { - // Find size of the document - var size = data[index] | data[index + 1] << 8 | data[index + 2] << 16 | data[index + 3] << 24; - // Update options with index - options['index'] = index; - // Parse the document at this point - documents[docStartIndex + i] = BSON.deserialize(data, options); - // Adjust index by the document size - index = index + size; - } - - // Return object containing end index of parsing and list of documents - return index; -} - -/** - * Ensure eval is isolated. - * - * @ignore - * @api private - */ -var isolateEvalWithHash = function(functionCache, hash, functionString, object) { - // Contains the value we are going to set - var value = null; - - // Check for cache hit, eval if missing and return cached function - if(functionCache[hash] == null) { - eval("value = " + functionString); - functionCache[hash] = value; - } - // Set the object - return functionCache[hash].bind(object); -} - -/** - * Ensure eval is isolated. - * - * @ignore - * @api private - */ -var isolateEval = function(functionString) { - // Contains the value we are going to set - var value = null; - // Eval the function - eval("value = " + functionString); - return value; -} - -/** - * Convert Uint8Array to String - * - * @ignore - * @api private - */ -var convertUint8ArrayToUtf8String = function(byteArray, startIndex, endIndex) { - return BinaryParser.decode_utf8(convertArraytoUtf8BinaryString(byteArray, startIndex, endIndex)); -} - -var convertArraytoUtf8BinaryString = function(byteArray, startIndex, endIndex) { - var result = ""; - for(var i = startIndex; i < endIndex; i++) { - result = result + String.fromCharCode(byteArray[i]); - } - - return result; -}; - -/** - * Deserialize data as BSON. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. - * @param {Object} [options] additional options used for the deserialization. - * @param {Boolean} [isArray] ignore used for recursive parsing. - * @return {Object} returns the deserialized Javascript Object. - * @api public - */ -BSON.deserialize = function(buffer, options, isArray) { - // Options - options = options == null ? {} : options; - var evalFunctions = options['evalFunctions'] == null ? false : options['evalFunctions']; - var cacheFunctions = options['cacheFunctions'] == null ? false : options['cacheFunctions']; - var cacheFunctionsCrc32 = options['cacheFunctionsCrc32'] == null ? false : options['cacheFunctionsCrc32']; - - // Validate that we have at least 4 bytes of buffer - if(buffer.length < 5) throw new Error("corrupt bson message < 5 bytes long"); - - // Set up index - var index = typeof options['index'] == 'number' ? options['index'] : 0; - // Reads in a C style string - var readCStyleString = function() { - // Get the start search index - var i = index; - // Locate the end of the c string - while(buffer[i] !== 0x00) { i++ } - // Grab utf8 encoded string - var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, i) : convertUint8ArrayToUtf8String(buffer, index, i); - // Update index position - index = i + 1; - // Return string - return string; - } - - // Create holding object - var object = isArray ? [] : {}; - - // Read the document size - var size = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - - // Ensure buffer is valid size - if(size < 5 || size > buffer.length) throw new Error("corrupt bson message"); - - // While we have more left data left keep parsing - while(true) { - // Read the type - var elementType = buffer[index++]; - // If we get a zero it's the last byte, exit - if(elementType == 0) break; - // Read the name of the field - var name = readCStyleString(); - // Switch on the type - switch(elementType) { - case BSON.BSON_DATA_OID: - var string = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('binary', index, index + 12) : convertArraytoUtf8BinaryString(buffer, index, index + 12); - // Decode the oid - object[name] = new ObjectID(string); - // Update index - index = index + 12; - break; - case BSON.BSON_DATA_STRING: - // Read the content of the field - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Add string to object - object[name] = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); - // Update parse index position - index = index + stringSize; - break; - case BSON.BSON_DATA_INT: - // Decode the 32bit value - object[name] = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - break; - case BSON.BSON_DATA_NUMBER: - // Decode the double value - object[name] = readIEEE754(buffer, index, 'little', 52, 8); - // Update the index - index = index + 8; - break; - case BSON.BSON_DATA_DATE: - // Unpack the low and high bits - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Set date object - object[name] = new Date(new Long(lowBits, highBits).toNumber()); - break; - case BSON.BSON_DATA_BOOLEAN: - // Parse the boolean value - object[name] = buffer[index++] == 1; - break; - case BSON.BSON_DATA_NULL: - // Parse the boolean value - object[name] = null; - break; - case BSON.BSON_DATA_BINARY: - // Decode the size of the binary blob - var binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Decode the subtype - var subType = buffer[index++]; - // Decode as raw Buffer object if options specifies it - if(buffer['slice'] != null) { - // If we have subtype 2 skip the 4 bytes for the size - if(subType == Binary.SUBTYPE_BYTE_ARRAY) { - binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - } - // Slice the data - object[name] = new Binary(buffer.slice(index, index + binarySize), subType); - } else { - var _buffer = typeof Uint8Array != 'undefined' ? new Uint8Array(new ArrayBuffer(binarySize)) : new Array(binarySize); - // If we have subtype 2 skip the 4 bytes for the size - if(subType == Binary.SUBTYPE_BYTE_ARRAY) { - binarySize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - } - // Copy the data - for(var i = 0; i < binarySize; i++) { - _buffer[i] = buffer[index + i]; - } - // Create the binary object - object[name] = new Binary(_buffer, subType); - } - // Update the index - index = index + binarySize; - break; - case BSON.BSON_DATA_ARRAY: - options['index'] = index; - // Decode the size of the array document - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - // Set the array to the object - object[name] = BSON.deserialize(buffer, options, true); - // Adjust the index - index = index + objectSize; - break; - case BSON.BSON_DATA_OBJECT: - options['index'] = index; - // Decode the size of the object document - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - // Set the array to the object - object[name] = BSON.deserialize(buffer, options, false); - // Adjust the index - index = index + objectSize; - break; - case BSON.BSON_DATA_REGEXP: - // Create the regexp - var source = readCStyleString(); - var regExpOptions = readCStyleString(); - // For each option add the corresponding one for javascript - var optionsArray = new Array(regExpOptions.length); - - // Parse options - for(var i = 0; i < regExpOptions.length; i++) { - switch(regExpOptions[i]) { - case 'm': - optionsArray[i] = 'm'; - break; - case 's': - optionsArray[i] = 'g'; - break; - case 'i': - optionsArray[i] = 'i'; - break; - } - } - - object[name] = new RegExp(source, optionsArray.join('')); - break; - case BSON.BSON_DATA_LONG: - // Unpack the low and high bits - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Create long object - var long = new Long(lowBits, highBits); - // Set the object - object[name] = long.lessThanOrEqual(JS_INT_MAX_LONG) && long.greaterThanOrEqual(JS_INT_MIN_LONG) ? long.toNumber() : long; - break; - case BSON.BSON_DATA_SYMBOL: - // Read the content of the field - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Add string to object - object[name] = new Symbol(buffer.toString('utf8', index, index + stringSize - 1)); - // Update parse index position - index = index + stringSize; - break; - case BSON.BSON_DATA_TIMESTAMP: - // Unpack the low and high bits - var lowBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var highBits = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Set the object - object[name] = new Timestamp(lowBits, highBits); - break; - case BSON.BSON_DATA_MIN_KEY: - // Parse the object - object[name] = new MinKey(); - break; - case BSON.BSON_DATA_MAX_KEY: - // Parse the object - object[name] = new MaxKey(); - break; - case BSON.BSON_DATA_CODE: - // Read the content of the field - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Function string - var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); - - // If we are evaluating the functions - if(evalFunctions) { - // Contains the value we are going to set - var value = null; - // If we have cache enabled let's look for the md5 of the function in the cache - if(cacheFunctions) { - var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; - // Got to do this to avoid V8 deoptimizing the call due to finding eval - object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); - } else { - // Set directly - object[name] = isolateEval(functionString); - } - } else { - object[name] = new Code(functionString, {}); - } - - // Update parse index position - index = index + stringSize; - break; - case BSON.BSON_DATA_CODE_W_SCOPE: - // Read the content of the field - var totalSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - var stringSize = buffer[index++] | buffer[index++] << 8 | buffer[index++] << 16 | buffer[index++] << 24; - // Javascript function - var functionString = supportsBuffer && Buffer.isBuffer(buffer) ? buffer.toString('utf8', index, index + stringSize - 1) : convertUint8ArrayToUtf8String(buffer, index, index + stringSize - 1); - // Update parse index position - index = index + stringSize; - // Parse the element - options['index'] = index; - // Decode the size of the object document - var objectSize = buffer[index] | buffer[index + 1] << 8 | buffer[index + 2] << 16 | buffer[index + 3] << 24; - // Decode the scope object - var scopeObject = BSON.deserialize(buffer, options, false); - // Adjust the index - index = index + objectSize; - - // If we are evaluating the functions - if(evalFunctions) { - // Contains the value we are going to set - var value = null; - // If we have cache enabled let's look for the md5 of the function in the cache - if(cacheFunctions) { - var hash = cacheFunctionsCrc32 ? crc32(functionString) : functionString; - // Got to do this to avoid V8 deoptimizing the call due to finding eval - object[name] = isolateEvalWithHash(functionCache, hash, functionString, object); - } else { - // Set directly - object[name] = isolateEval(functionString); - } - - // Set the scope on the object - object[name].scope = scopeObject; - } else { - object[name] = new Code(functionString, scopeObject); - } - - // Add string to object - break; - } - } - - // Check if we have a db ref object - if(object['$id'] != null) object = new DBRef(object['$ref'], object['$id'], object['$db']); - - // Return the final objects - return object; -} - -/** - * Check if key name is valid. - * - * @ignore - * @api private - */ -BSON.checkKey = function checkKey (key) { - if (!key.length) return; - // Check if we have a legal key for the object - if('$' == key[0]) { - throw Error("key " + key + " must not start with '$'"); - } else if (!!~key.indexOf('.')) { - throw Error("key " + key + " must not contain '.'"); - } -}; - -/** - * Deserialize data as BSON. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} buffer the buffer containing the serialized set of BSON documents. - * @param {Object} [options] additional options used for the deserialization. - * @param {Boolean} [isArray] ignore used for recursive parsing. - * @return {Object} returns the deserialized Javascript Object. - * @api public - */ -BSON.prototype.deserialize = function(data, options) { - return BSON.deserialize(data, options); -} - -/** - * Deserialize stream data as BSON documents. - * - * Options - * - **evalFunctions** {Boolean, default:false}, evaluate functions in the BSON document scoped to the object deserialized. - * - **cacheFunctions** {Boolean, default:false}, cache evaluated functions for reuse. - * - **cacheFunctionsCrc32** {Boolean, default:false}, use a crc32 code for caching, otherwise use the string of the function. - * - * @param {Buffer} data the buffer containing the serialized set of BSON documents. - * @param {Number} startIndex the start index in the data Buffer where the deserialization is to start. - * @param {Number} numberOfDocuments number of documents to deserialize. - * @param {Array} documents an array where to store the deserialized documents. - * @param {Number} docStartIndex the index in the documents array from where to start inserting documents. - * @param {Object} [options] additional options used for the deserialization. - * @return {Number} returns the next index in the buffer after deserialization **x** numbers of documents. - * @api public - */ -BSON.prototype.deserializeStream = function(data, startIndex, numberOfDocuments, documents, docStartIndex, options) { - return BSON.deserializeStream(data, startIndex, numberOfDocuments, documents, docStartIndex, options); -} - -/** - * Serialize a Javascript object. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Boolean} asBuffer return the serialized object as a Buffer object **(ignore)**. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Buffer} returns the Buffer object containing the serialized object. - * @api public - */ -BSON.prototype.serialize = function(object, checkKeys, asBuffer, serializeFunctions) { - return BSON.serialize(object, checkKeys, asBuffer, serializeFunctions); -} - -/** - * Calculate the bson size for a passed in Javascript object. - * - * @param {Object} object the Javascript object to calculate the BSON byte size for. - * @param {Boolean} [serializeFunctions] serialize all functions in the object **(default:false)**. - * @return {Number} returns the number of bytes the BSON object will take up. - * @api public - */ -BSON.prototype.calculateObjectSize = function(object, serializeFunctions) { - return BSON.calculateObjectSize(object, serializeFunctions); -} - -/** - * Serialize a Javascript object using a predefined Buffer and index into the buffer, useful when pre-allocating the space for serialization. - * - * @param {Object} object the Javascript object to serialize. - * @param {Boolean} checkKeys the serializer will check if keys are valid. - * @param {Buffer} buffer the Buffer you pre-allocated to store the serialized BSON object. - * @param {Number} index the index in the buffer where we wish to start serializing into. - * @param {Boolean} serializeFunctions serialize the javascript functions **(default:false)**. - * @return {Number} returns the new write index in the Buffer. - * @api public - */ -BSON.prototype.serializeWithBufferAndIndex = function(object, checkKeys, buffer, startIndex, serializeFunctions) { - return BSON.serializeWithBufferAndIndex(object, checkKeys, buffer, startIndex, serializeFunctions); -} - -/** - * @ignore - * @api private - */ -exports.Code = Code; -exports.Symbol = Symbol; -exports.BSON = BSON; -exports.DBRef = DBRef; -exports.Binary = Binary; -exports.ObjectID = ObjectID; -exports.Long = Long; -exports.Timestamp = Timestamp; -exports.Double = Double; -exports.MinKey = MinKey; -exports.MaxKey = MaxKey; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js deleted file mode 100644 index 69b56a3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/code.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * A class representation of the BSON Code type. - * - * @class Represents the BSON Code type. - * @param {String|Function} code a string or function. - * @param {Object} [scope] an optional scope for the function. - * @return {Code} - */ -function Code(code, scope) { - if(!(this instanceof Code)) return new Code(code, scope); - - this._bsontype = 'Code'; - this.code = code; - this.scope = scope == null ? {} : scope; -}; - -/** - * @ignore - * @api private - */ -Code.prototype.toJSON = function() { - return {scope:this.scope, code:this.code}; -} - -exports.Code = Code; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js deleted file mode 100644 index 56b6510..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/db_ref.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * A class representation of the BSON DBRef type. - * - * @class Represents the BSON DBRef type. - * @param {String} namespace the collection name. - * @param {ObjectID} oid the reference ObjectID. - * @param {String} [db] optional db name, if omitted the reference is local to the current db. - * @return {DBRef} - */ -function DBRef(namespace, oid, db) { - if(!(this instanceof DBRef)) return new DBRef(namespace, oid, db); - - this._bsontype = 'DBRef'; - this.namespace = namespace; - this.oid = oid; - this.db = db; -}; - -/** - * @ignore - * @api private - */ -DBRef.prototype.toJSON = function() { - return { - '$ref':this.namespace, - '$id':this.oid, - '$db':this.db == null ? '' : this.db - }; -} - -exports.DBRef = DBRef; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js deleted file mode 100644 index ae51463..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/double.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - * A class representation of the BSON Double type. - * - * @class Represents the BSON Double type. - * @param {Number} value the number we want to represent as a double. - * @return {Double} - */ -function Double(value) { - if(!(this instanceof Double)) return new Double(value); - - this._bsontype = 'Double'; - this.value = value; -} - -/** - * Access the number value. - * - * @return {Number} returns the wrapped double number. - * @api public - */ -Double.prototype.valueOf = function() { - return this.value; -}; - -/** - * @ignore - * @api private - */ -Double.prototype.toJSON = function() { - return this.value; -} - -exports.Double = Double; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js deleted file mode 100644 index 6fca392..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/float_parser.js +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright (c) 2008, Fair Oaks Labs, Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// -// Modifications to writeIEEE754 to support negative zeroes made by Brian White - -var readIEEE754 = function(buffer, offset, endian, mLen, nBytes) { - var e, m, - bBE = (endian === 'big'), - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - nBits = -7, - i = bBE ? 0 : (nBytes - 1), - d = bBE ? 1 : -1, - s = buffer[offset + i]; - - i += d; - - e = s & ((1 << (-nBits)) - 1); - s >>= (-nBits); - nBits += eLen; - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); - - m = e & ((1 << (-nBits)) - 1); - e >>= (-nBits); - nBits += mLen; - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); - - if (e === 0) { - e = 1 - eBias; - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity); - } else { - m = m + Math.pow(2, mLen); - e = e - eBias; - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen); -}; - -var writeIEEE754 = function(buffer, value, offset, endian, mLen, nBytes) { - var e, m, c, - bBE = (endian === 'big'), - eLen = nBytes * 8 - mLen - 1, - eMax = (1 << eLen) - 1, - eBias = eMax >> 1, - rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), - i = bBE ? (nBytes-1) : 0, - d = bBE ? -1 : 1, - s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; - - value = Math.abs(value); - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0; - e = eMax; - } else { - e = Math.floor(Math.log(value) / Math.LN2); - if (value * (c = Math.pow(2, -e)) < 1) { - e--; - c *= 2; - } - if (e+eBias >= 1) { - value += rt / c; - } else { - value += rt * Math.pow(2, 1 - eBias); - } - if (value * c >= 2) { - e++; - c /= 2; - } - - if (e + eBias >= eMax) { - m = 0; - e = eMax; - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen); - e = e + eBias; - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); - e = 0; - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); - - e = (e << mLen) | m; - eLen += mLen; - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); - - buffer[offset + i - d] |= s * 128; -}; - -exports.readIEEE754 = readIEEE754; -exports.writeIEEE754 = writeIEEE754; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js deleted file mode 100644 index 950fcad..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/index.js +++ /dev/null @@ -1,74 +0,0 @@ -try { - exports.BSONPure = require('./bson'); - exports.BSONNative = require('../../ext'); -} catch(err) { - // do nothing -} - -[ './binary_parser' - , './binary' - , './code' - , './db_ref' - , './double' - , './max_key' - , './min_key' - , './objectid' - , './symbol' - , './timestamp' - , './long'].forEach(function (path) { - var module = require('./' + path); - for (var i in module) { - exports[i] = module[i]; - } -}); - -// Exports all the classes for the NATIVE JS BSON Parser -exports.native = function() { - var classes = {}; - // Map all the classes - [ './binary_parser' - , './binary' - , './code' - , './db_ref' - , './double' - , './max_key' - , './min_key' - , './objectid' - , './symbol' - , './timestamp' - , './long' - , '../../ext' -].forEach(function (path) { - var module = require('./' + path); - for (var i in module) { - classes[i] = module[i]; - } - }); - // Return classes list - return classes; -} - -// Exports all the classes for the PURE JS BSON Parser -exports.pure = function() { - var classes = {}; - // Map all the classes - [ './binary_parser' - , './binary' - , './code' - , './db_ref' - , './double' - , './max_key' - , './min_key' - , './objectid' - , './symbol' - , './timestamp' - , './long' - , '././bson'].forEach(function (path) { - var module = require('./' + path); - for (var i in module) { - classes[i] = module[i]; - } - }); - // Return classes list - return classes; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js deleted file mode 100644 index f8f37a6..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/long.js +++ /dev/null @@ -1,854 +0,0 @@ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Copyright 2009 Google Inc. All Rights Reserved - -/** - * Defines a Long class for representing a 64-bit two's-complement - * integer value, which faithfully simulates the behavior of a Java "Long". This - * implementation is derived from LongLib in GWT. - * - * Constructs a 64-bit two's-complement integer, given its low and high 32-bit - * values as *signed* integers. See the from* functions below for more - * convenient ways of constructing Longs. - * - * The internal representation of a Long is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16-bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * - * @class Represents the BSON Long type. - * @param {Number} low the low (signed) 32 bits of the Long. - * @param {Number} high the high (signed) 32 bits of the Long. - */ -function Long(low, high) { - if(!(this instanceof Long)) return new Long(low, high); - - this._bsontype = 'Long'; - /** - * @type {number} - * @api private - */ - this.low_ = low | 0; // force into 32 signed bits. - - /** - * @type {number} - * @api private - */ - this.high_ = high | 0; // force into 32 signed bits. -}; - -/** - * Return the int value. - * - * @return {Number} the value, assuming it is a 32-bit integer. - * @api public - */ -Long.prototype.toInt = function() { - return this.low_; -}; - -/** - * Return the Number value. - * - * @return {Number} the closest floating-point representation to this value. - * @api public - */ -Long.prototype.toNumber = function() { - return this.high_ * Long.TWO_PWR_32_DBL_ + - this.getLowBitsUnsigned(); -}; - -/** - * Return the JSON value. - * - * @return {String} the JSON representation. - * @api public - */ -Long.prototype.toJSON = function() { - return this.toString(); -} - -/** - * Return the String value. - * - * @param {Number} [opt_radix] the radix in which the text should be written. - * @return {String} the textual representation of this value. - * @api public - */ -Long.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (this.isZero()) { - return '0'; - } - - if (this.isNegative()) { - if (this.equals(Long.MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = Long.fromNumber(radix); - var div = this.div(radixLong); - var rem = div.multiply(radixLong).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return '-' + this.negate().toString(radix); - } - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Long.fromNumber(Math.pow(radix, 6)); - - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } -}; - -/** - * Return the high 32-bits value. - * - * @return {Number} the high 32-bits as a signed value. - * @api public - */ -Long.prototype.getHighBits = function() { - return this.high_; -}; - -/** - * Return the low 32-bits value. - * - * @return {Number} the low 32-bits as a signed value. - * @api public - */ -Long.prototype.getLowBits = function() { - return this.low_; -}; - -/** - * Return the low unsigned 32-bits value. - * - * @return {Number} the low 32-bits as an unsigned value. - * @api public - */ -Long.prototype.getLowBitsUnsigned = function() { - return (this.low_ >= 0) ? - this.low_ : Long.TWO_PWR_32_DBL_ + this.low_; -}; - -/** - * Returns the number of bits needed to represent the absolute value of this Long. - * - * @return {Number} Returns the number of bits needed to represent the absolute value of this Long. - * @api public - */ -Long.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equals(Long.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & (1 << bit)) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } -}; - -/** - * Return whether this value is zero. - * - * @return {Boolean} whether this value is zero. - * @api public - */ -Long.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; -}; - -/** - * Return whether this value is negative. - * - * @return {Boolean} whether this value is negative. - * @api public - */ -Long.prototype.isNegative = function() { - return this.high_ < 0; -}; - -/** - * Return whether this value is odd. - * - * @return {Boolean} whether this value is odd. - * @api public - */ -Long.prototype.isOdd = function() { - return (this.low_ & 1) == 1; -}; - -/** - * Return whether this Long equals the other - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long equals the other - * @api public - */ -Long.prototype.equals = function(other) { - return (this.high_ == other.high_) && (this.low_ == other.low_); -}; - -/** - * Return whether this Long does not equal the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long does not equal the other. - * @api public - */ -Long.prototype.notEquals = function(other) { - return (this.high_ != other.high_) || (this.low_ != other.low_); -}; - -/** - * Return whether this Long is less than the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is less than the other. - * @api public - */ -Long.prototype.lessThan = function(other) { - return this.compare(other) < 0; -}; - -/** - * Return whether this Long is less than or equal to the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is less than or equal to the other. - * @api public - */ -Long.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; -}; - -/** - * Return whether this Long is greater than the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is greater than the other. - * @api public - */ -Long.prototype.greaterThan = function(other) { - return this.compare(other) > 0; -}; - -/** - * Return whether this Long is greater than or equal to the other. - * - * @param {Long} other Long to compare against. - * @return {Boolean} whether this Long is greater than or equal to the other. - * @api public - */ -Long.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; -}; - -/** - * Compares this Long with the given one. - * - * @param {Long} other Long to compare against. - * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. - * @api public - */ -Long.prototype.compare = function(other) { - if (this.equals(other)) { - return 0; - } - - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - - // at this point, the signs are the same, so subtraction will not overflow - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } -}; - -/** - * The negation of this value. - * - * @return {Long} the negation of this value. - * @api public - */ -Long.prototype.negate = function() { - if (this.equals(Long.MIN_VALUE)) { - return Long.MIN_VALUE; - } else { - return this.not().add(Long.ONE); - } -}; - -/** - * Returns the sum of this and the given Long. - * - * @param {Long} other Long to add to this one. - * @return {Long} the sum of this and the given Long. - * @api public - */ -Long.prototype.add = function(other) { - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns the difference of this and the given Long. - * - * @param {Long} other Long to subtract from this. - * @return {Long} the difference of this and the given Long. - * @api public - */ -Long.prototype.subtract = function(other) { - return this.add(other.negate()); -}; - -/** - * Returns the product of this and the given Long. - * - * @param {Long} other Long to multiply with this. - * @return {Long} the product of this and the other. - * @api public - */ -Long.prototype.multiply = function(other) { - if (this.isZero()) { - return Long.ZERO; - } else if (other.isZero()) { - return Long.ZERO; - } - - if (this.equals(Long.MIN_VALUE)) { - return other.isOdd() ? Long.MIN_VALUE : Long.ZERO; - } else if (other.equals(Long.MIN_VALUE)) { - return this.isOdd() ? Long.MIN_VALUE : Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - - // If both Longs are small, use float multiplication - if (this.lessThan(Long.TWO_PWR_24_) && - other.lessThan(Long.TWO_PWR_24_)) { - return Long.fromNumber(this.toNumber() * other.toNumber()); - } - - // Divide each Long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns this Long divided by the given one. - * - * @param {Long} other Long by which to divide. - * @return {Long} this Long divided by the given one. - * @api public - */ -Long.prototype.div = function(other) { - if (other.isZero()) { - throw Error('division by zero'); - } else if (this.isZero()) { - return Long.ZERO; - } - - if (this.equals(Long.MIN_VALUE)) { - if (other.equals(Long.ONE) || - other.equals(Long.NEG_ONE)) { - return Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - } else if (other.equals(Long.MIN_VALUE)) { - return Long.ONE; - } else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equals(Long.ZERO)) { - return other.isNegative() ? Long.ONE : Long.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equals(Long.MIN_VALUE)) { - return Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - var res = Long.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - var approxRes = Long.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = Long.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) { - approxRes = Long.ONE; - } - - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; -}; - -/** - * Returns this Long modulo the given one. - * - * @param {Long} other Long by which to mod. - * @return {Long} this Long modulo the given one. - * @api public - */ -Long.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); -}; - -/** - * The bitwise-NOT of this value. - * - * @return {Long} the bitwise-NOT of this value. - * @api public - */ -Long.prototype.not = function() { - return Long.fromBits(~this.low_, ~this.high_); -}; - -/** - * Returns the bitwise-AND of this Long and the given one. - * - * @param {Long} other the Long with which to AND. - * @return {Long} the bitwise-AND of this and the other. - * @api public - */ -Long.prototype.and = function(other) { - return Long.fromBits(this.low_ & other.low_, this.high_ & other.high_); -}; - -/** - * Returns the bitwise-OR of this Long and the given one. - * - * @param {Long} other the Long with which to OR. - * @return {Long} the bitwise-OR of this and the other. - * @api public - */ -Long.prototype.or = function(other) { - return Long.fromBits(this.low_ | other.low_, this.high_ | other.high_); -}; - -/** - * Returns the bitwise-XOR of this Long and the given one. - * - * @param {Long} other the Long with which to XOR. - * @return {Long} the bitwise-XOR of this and the other. - * @api public - */ -Long.prototype.xor = function(other) { - return Long.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); -}; - -/** - * Returns this Long with bits shifted to the left by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Long} this shifted to the left by the given amount. - * @api public - */ -Long.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return Long.fromBits( - low << numBits, - (high << numBits) | (low >>> (32 - numBits))); - } else { - return Long.fromBits(0, low << (numBits - 32)); - } - } -}; - -/** - * Returns this Long with bits shifted to the right by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Long} this shifted to the right by the given amount. - * @api public - */ -Long.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >> numBits); - } else { - return Long.fromBits( - high >> (numBits - 32), - high >= 0 ? 0 : -1); - } - } -}; - -/** - * Returns this Long with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Long} this shifted to the right by the given amount, with zeros placed into the new leading bits. - * @api public - */ -Long.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >>> numBits); - } else if (numBits == 32) { - return Long.fromBits(high, 0); - } else { - return Long.fromBits(high >>> (numBits - 32), 0); - } - } -}; - -/** - * Returns a Long representing the given (32-bit) integer value. - * - * @param {Number} value the 32-bit integer in question. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = Long.INT_CACHE_[value]; - if (cachedObj) { - return cachedObj; - } - } - - var obj = new Long(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - Long.INT_CACHE_[value] = obj; - } - return obj; -}; - -/** - * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * - * @param {Number} value the number in question. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { - return Long.ZERO; - } else if (value <= -Long.TWO_PWR_63_DBL_) { - return Long.MIN_VALUE; - } else if (value + 1 >= Long.TWO_PWR_63_DBL_) { - return Long.MAX_VALUE; - } else if (value < 0) { - return Long.fromNumber(-value).negate(); - } else { - return new Long( - (value % Long.TWO_PWR_32_DBL_) | 0, - (value / Long.TWO_PWR_32_DBL_) | 0); - } -}; - -/** - * Returns a Long representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. - * - * @param {Number} lowBits the low 32-bits. - * @param {Number} highBits the high 32-bits. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromBits = function(lowBits, highBits) { - return new Long(lowBits, highBits); -}; - -/** - * Returns a Long representation of the given string, written using the given radix. - * - * @param {String} str the textual representation of the Long. - * @param {Number} opt_radix the radix in which the text is written. - * @return {Long} the corresponding Long value. - * @api public - */ -Long.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (str.charAt(0) == '-') { - return Long.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Long.fromNumber(Math.pow(radix, 8)); - - var result = Long.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = Long.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(Long.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(Long.fromNumber(value)); - } - } - return result; -}; - -// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the -// from* methods on which they depend. - - -/** - * A cache of the Long representations of small integer values. - * @type {Object} - * @api private - */ -Long.INT_CACHE_ = {}; - -// NOTE: the compiler should inline these constant values below and then remove -// these variables, so there should be no runtime penalty for these. - -/** - * Number used repeated below in calculations. This must appear before the - * first call to any from* function below. - * @type {number} - * @api private - */ -Long.TWO_PWR_16_DBL_ = 1 << 16; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_24_DBL_ = 1 << 24; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_32_DBL_ = Long.TWO_PWR_16_DBL_ * Long.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_31_DBL_ = Long.TWO_PWR_32_DBL_ / 2; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_48_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_64_DBL_ = Long.TWO_PWR_32_DBL_ * Long.TWO_PWR_32_DBL_; - -/** - * @type {number} - * @api private - */ -Long.TWO_PWR_63_DBL_ = Long.TWO_PWR_64_DBL_ / 2; - -/** @type {Long} */ -Long.ZERO = Long.fromInt(0); - -/** @type {Long} */ -Long.ONE = Long.fromInt(1); - -/** @type {Long} */ -Long.NEG_ONE = Long.fromInt(-1); - -/** @type {Long} */ -Long.MAX_VALUE = - Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); - -/** @type {Long} */ -Long.MIN_VALUE = Long.fromBits(0, 0x80000000 | 0); - -/** - * @type {Long} - * @api private - */ -Long.TWO_PWR_24_ = Long.fromInt(1 << 24); - -/** - * Expose. - */ -exports.Long = Long; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js deleted file mode 100644 index 0825408..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/max_key.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * A class representation of the BSON MaxKey type. - * - * @class Represents the BSON MaxKey type. - * @return {MaxKey} - */ -function MaxKey() { - if(!(this instanceof MaxKey)) return new MaxKey(); - - this._bsontype = 'MaxKey'; -} - -exports.MaxKey = MaxKey; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js deleted file mode 100644 index 230c2e6..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/min_key.js +++ /dev/null @@ -1,13 +0,0 @@ -/** - * A class representation of the BSON MinKey type. - * - * @class Represents the BSON MinKey type. - * @return {MinKey} - */ -function MinKey() { - if(!(this instanceof MinKey)) return new MinKey(); - - this._bsontype = 'MinKey'; -} - -exports.MinKey = MinKey; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js deleted file mode 100644 index 1ff9a83..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/objectid.js +++ /dev/null @@ -1,253 +0,0 @@ -/** - * Module dependencies. - */ -var BinaryParser = require('./binary_parser').BinaryParser; - -/** - * Machine id. - * - * Create a random 3-byte value (i.e. unique for this - * process). Other drivers use a md5 of the machine id here, but - * that would mean an asyc call to gethostname, so we don't bother. - */ -var MACHINE_ID = parseInt(Math.random() * 0xFFFFFF, 10); - -// Regular expression that checks for hex value -var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$"); - -/** -* Create a new ObjectID instance -* -* @class Represents the BSON ObjectID type -* @param {String|Number} id Can be a 24 byte hex string, 12 byte binary string or a Number. -* @return {Object} instance of ObjectID. -*/ -var ObjectID = function ObjectID(id, _hex) { - if(!(this instanceof ObjectID)) return new ObjectID(id, _hex); - - this._bsontype = 'ObjectID'; - var __id = null; - - // Throw an error if it's not a valid setup - if(id != null && 'number' != typeof id && (id.length != 12 && id.length != 24)) - throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); - - // Generate id based on the input - if(id == null || typeof id == 'number') { - // convert to 12 byte binary string - this.id = this.generate(id); - } else if(id != null && id.length === 12) { - // assume 12 byte string - this.id = id; - } else if(checkForHexRegExp.test(id)) { - return ObjectID.createFromHexString(id); - } else if(!checkForHexRegExp.test(id)) { - throw new Error("Value passed in is not a valid 24 character hex string"); - } - - if(ObjectID.cacheHexString) this.__id = this.toHexString(); -}; - -// Allow usage of ObjectId aswell as ObjectID -var ObjectId = ObjectID; - -/** -* Return the ObjectID id as a 24 byte hex string representation -* -* @return {String} return the 24 byte hex string representation. -* @api public -*/ -ObjectID.prototype.toHexString = function() { - if(ObjectID.cacheHexString && this.__id) return this.__id; - - var hexString = '' - , number - , value; - - for (var index = 0, len = this.id.length; index < len; index++) { - value = BinaryParser.toByte(this.id[index]); - number = value <= 15 - ? '0' + value.toString(16) - : value.toString(16); - hexString = hexString + number; - } - - if(ObjectID.cacheHexString) this.__id = hexString; - return hexString; -}; - -/** -* Update the ObjectID index used in generating new ObjectID's on the driver -* -* @return {Number} returns next index value. -* @api private -*/ -ObjectID.prototype.get_inc = function() { - return ObjectID.index = (ObjectID.index + 1) % 0xFFFFFF; -}; - -/** -* Update the ObjectID index used in generating new ObjectID's on the driver -* -* @return {Number} returns next index value. -* @api private -*/ -ObjectID.prototype.getInc = function() { - return this.get_inc(); -}; - -/** -* Generate a 12 byte id string used in ObjectID's -* -* @param {Number} [time] optional parameter allowing to pass in a second based timestamp. -* @return {String} return the 12 byte id binary string. -* @api private -*/ -ObjectID.prototype.generate = function(time) { - if ('number' == typeof time) { - var time4Bytes = BinaryParser.encodeInt(time, 32, true, true); - /* for time-based ObjectID the bytes following the time will be zeroed */ - var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); - var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); - var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); - } else { - var unixTime = parseInt(Date.now()/1000,10); - var time4Bytes = BinaryParser.encodeInt(unixTime, 32, true, true); - var machine3Bytes = BinaryParser.encodeInt(MACHINE_ID, 24, false); - var pid2Bytes = BinaryParser.fromShort(typeof process === 'undefined' ? Math.floor(Math.random() * 100000) : process.pid); - var index3Bytes = BinaryParser.encodeInt(this.get_inc(), 24, false, true); - } - - return time4Bytes + machine3Bytes + pid2Bytes + index3Bytes; -}; - -/** -* Converts the id into a 24 byte hex string for printing -* -* @return {String} return the 24 byte hex string representation. -* @api private -*/ -ObjectID.prototype.toString = function() { - return this.toHexString(); -}; - -/** -* Converts to a string representation of this Id. -* -* @return {String} return the 24 byte hex string representation. -* @api private -*/ -ObjectID.prototype.inspect = ObjectID.prototype.toString; - -/** -* Converts to its JSON representation. -* -* @return {String} return the 24 byte hex string representation. -* @api private -*/ -ObjectID.prototype.toJSON = function() { - return this.toHexString(); -}; - -/** -* Compares the equality of this ObjectID with `otherID`. -* -* @param {Object} otherID ObjectID instance to compare against. -* @return {Bool} the result of comparing two ObjectID's -* @api public -*/ -ObjectID.prototype.equals = function equals (otherID) { - var id = (otherID instanceof ObjectID || otherID.toHexString) - ? otherID.id - : ObjectID.createFromHexString(otherID).id; - - return this.id === id; -} - -/** -* Returns the generation time in seconds that this ID was generated. -* -* @return {Number} return number of seconds in the timestamp part of the 12 byte id. -* @api public -*/ -ObjectID.prototype.getTimestamp = function() { - var timestamp = new Date(); - timestamp.setTime(Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)) * 1000); - return timestamp; -} - -/** -* @ignore -* @api private -*/ -ObjectID.index = 0; - -ObjectID.createPk = function createPk () { - return new ObjectID(); -}; - -/** -* Creates an ObjectID from a second based number, with the rest of the ObjectID zeroed out. Used for comparisons or sorting the ObjectID. -* -* @param {Number} time an integer number representing a number of seconds. -* @return {ObjectID} return the created ObjectID -* @api public -*/ -ObjectID.createFromTime = function createFromTime (time) { - var id = BinaryParser.encodeInt(time, 32, true, true) + - BinaryParser.encodeInt(0, 64, true, true); - return new ObjectID(id); -}; - -/** -* Creates an ObjectID from a hex string representation of an ObjectID. -* -* @param {String} hexString create a ObjectID from a passed in 24 byte hexstring. -* @return {ObjectID} return the created ObjectID -* @api public -*/ -ObjectID.createFromHexString = function createFromHexString (hexString) { - // Throw an error if it's not a valid setup - if(typeof hexString === 'undefined' || hexString != null && hexString.length != 24) - throw new Error("Argument passed in must be a single String of 12 bytes or a string of 24 hex characters"); - - var len = hexString.length; - - if(len > 12*2) { - throw new Error('Id cannot be longer than 12 bytes'); - } - - var result = '' - , string - , number; - - for (var index = 0; index < len; index += 2) { - string = hexString.substr(index, 2); - number = parseInt(string, 16); - result += BinaryParser.fromByte(number); - } - - return new ObjectID(result, hexString); -}; - -/** -* @ignore -*/ -Object.defineProperty(ObjectID.prototype, "generationTime", { - enumerable: true - , get: function () { - return Math.floor(BinaryParser.decodeInt(this.id.substring(0,4), 32, true, true)); - } - , set: function (value) { - var value = BinaryParser.encodeInt(value, 32, true, true); - this.id = value + this.id.substr(4); - // delete this.__id; - this.toHexString(); - } -}); - -/** - * Expose. - */ -exports.ObjectID = ObjectID; -exports.ObjectId = ObjectID; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js deleted file mode 100644 index 8e2838d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/symbol.js +++ /dev/null @@ -1,48 +0,0 @@ -/** - * A class representation of the BSON Symbol type. - * - * @class Represents the BSON Symbol type. - * @param {String} value the string representing the symbol. - * @return {Symbol} - */ -function Symbol(value) { - if(!(this instanceof Symbol)) return new Symbol(value); - this._bsontype = 'Symbol'; - this.value = value; -} - -/** - * Access the wrapped string value. - * - * @return {String} returns the wrapped string. - * @api public - */ -Symbol.prototype.valueOf = function() { - return this.value; -}; - -/** - * @ignore - * @api private - */ -Symbol.prototype.toString = function() { - return this.value; -} - -/** - * @ignore - * @api private - */ -Symbol.prototype.inspect = function() { - return this.value; -} - -/** - * @ignore - * @api private - */ -Symbol.prototype.toJSON = function() { - return this.value; -} - -exports.Symbol = Symbol; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js deleted file mode 100644 index c650d15..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/lib/bson/timestamp.js +++ /dev/null @@ -1,853 +0,0 @@ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Copyright 2009 Google Inc. All Rights Reserved - -/** - * Defines a Timestamp class for representing a 64-bit two's-complement - * integer value, which faithfully simulates the behavior of a Java "Timestamp". This - * implementation is derived from TimestampLib in GWT. - * - * Constructs a 64-bit two's-complement integer, given its low and high 32-bit - * values as *signed* integers. See the from* functions below for more - * convenient ways of constructing Timestamps. - * - * The internal representation of a Timestamp is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16-bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * - * @class Represents the BSON Timestamp type. - * @param {Number} low the low (signed) 32 bits of the Timestamp. - * @param {Number} high the high (signed) 32 bits of the Timestamp. - */ -function Timestamp(low, high) { - if(!(this instanceof Timestamp)) return new Timestamp(low, high); - this._bsontype = 'Timestamp'; - /** - * @type {number} - * @api private - */ - this.low_ = low | 0; // force into 32 signed bits. - - /** - * @type {number} - * @api private - */ - this.high_ = high | 0; // force into 32 signed bits. -}; - -/** - * Return the int value. - * - * @return {Number} the value, assuming it is a 32-bit integer. - * @api public - */ -Timestamp.prototype.toInt = function() { - return this.low_; -}; - -/** - * Return the Number value. - * - * @return {Number} the closest floating-point representation to this value. - * @api public - */ -Timestamp.prototype.toNumber = function() { - return this.high_ * Timestamp.TWO_PWR_32_DBL_ + - this.getLowBitsUnsigned(); -}; - -/** - * Return the JSON value. - * - * @return {String} the JSON representation. - * @api public - */ -Timestamp.prototype.toJSON = function() { - return this.toString(); -} - -/** - * Return the String value. - * - * @param {Number} [opt_radix] the radix in which the text should be written. - * @return {String} the textual representation of this value. - * @api public - */ -Timestamp.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (this.isZero()) { - return '0'; - } - - if (this.isNegative()) { - if (this.equals(Timestamp.MIN_VALUE)) { - // We need to change the Timestamp value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixTimestamp = Timestamp.fromNumber(radix); - var div = this.div(radixTimestamp); - var rem = div.multiply(radixTimestamp).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return '-' + this.negate().toString(radix); - } - } - - // Do several (6) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Timestamp.fromNumber(Math.pow(radix, 6)); - - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 6) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } -}; - -/** - * Return the high 32-bits value. - * - * @return {Number} the high 32-bits as a signed value. - * @api public - */ -Timestamp.prototype.getHighBits = function() { - return this.high_; -}; - -/** - * Return the low 32-bits value. - * - * @return {Number} the low 32-bits as a signed value. - * @api public - */ -Timestamp.prototype.getLowBits = function() { - return this.low_; -}; - -/** - * Return the low unsigned 32-bits value. - * - * @return {Number} the low 32-bits as an unsigned value. - * @api public - */ -Timestamp.prototype.getLowBitsUnsigned = function() { - return (this.low_ >= 0) ? - this.low_ : Timestamp.TWO_PWR_32_DBL_ + this.low_; -}; - -/** - * Returns the number of bits needed to represent the absolute value of this Timestamp. - * - * @return {Number} Returns the number of bits needed to represent the absolute value of this Timestamp. - * @api public - */ -Timestamp.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equals(Timestamp.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & (1 << bit)) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } -}; - -/** - * Return whether this value is zero. - * - * @return {Boolean} whether this value is zero. - * @api public - */ -Timestamp.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; -}; - -/** - * Return whether this value is negative. - * - * @return {Boolean} whether this value is negative. - * @api public - */ -Timestamp.prototype.isNegative = function() { - return this.high_ < 0; -}; - -/** - * Return whether this value is odd. - * - * @return {Boolean} whether this value is odd. - * @api public - */ -Timestamp.prototype.isOdd = function() { - return (this.low_ & 1) == 1; -}; - -/** - * Return whether this Timestamp equals the other - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp equals the other - * @api public - */ -Timestamp.prototype.equals = function(other) { - return (this.high_ == other.high_) && (this.low_ == other.low_); -}; - -/** - * Return whether this Timestamp does not equal the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp does not equal the other. - * @api public - */ -Timestamp.prototype.notEquals = function(other) { - return (this.high_ != other.high_) || (this.low_ != other.low_); -}; - -/** - * Return whether this Timestamp is less than the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is less than the other. - * @api public - */ -Timestamp.prototype.lessThan = function(other) { - return this.compare(other) < 0; -}; - -/** - * Return whether this Timestamp is less than or equal to the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is less than or equal to the other. - * @api public - */ -Timestamp.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; -}; - -/** - * Return whether this Timestamp is greater than the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is greater than the other. - * @api public - */ -Timestamp.prototype.greaterThan = function(other) { - return this.compare(other) > 0; -}; - -/** - * Return whether this Timestamp is greater than or equal to the other. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} whether this Timestamp is greater than or equal to the other. - * @api public - */ -Timestamp.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; -}; - -/** - * Compares this Timestamp with the given one. - * - * @param {Timestamp} other Timestamp to compare against. - * @return {Boolean} 0 if they are the same, 1 if the this is greater, and -1 if the given one is greater. - * @api public - */ -Timestamp.prototype.compare = function(other) { - if (this.equals(other)) { - return 0; - } - - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - - // at this point, the signs are the same, so subtraction will not overflow - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } -}; - -/** - * The negation of this value. - * - * @return {Timestamp} the negation of this value. - * @api public - */ -Timestamp.prototype.negate = function() { - if (this.equals(Timestamp.MIN_VALUE)) { - return Timestamp.MIN_VALUE; - } else { - return this.not().add(Timestamp.ONE); - } -}; - -/** - * Returns the sum of this and the given Timestamp. - * - * @param {Timestamp} other Timestamp to add to this one. - * @return {Timestamp} the sum of this and the given Timestamp. - * @api public - */ -Timestamp.prototype.add = function(other) { - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns the difference of this and the given Timestamp. - * - * @param {Timestamp} other Timestamp to subtract from this. - * @return {Timestamp} the difference of this and the given Timestamp. - * @api public - */ -Timestamp.prototype.subtract = function(other) { - return this.add(other.negate()); -}; - -/** - * Returns the product of this and the given Timestamp. - * - * @param {Timestamp} other Timestamp to multiply with this. - * @return {Timestamp} the product of this and the other. - * @api public - */ -Timestamp.prototype.multiply = function(other) { - if (this.isZero()) { - return Timestamp.ZERO; - } else if (other.isZero()) { - return Timestamp.ZERO; - } - - if (this.equals(Timestamp.MIN_VALUE)) { - return other.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; - } else if (other.equals(Timestamp.MIN_VALUE)) { - return this.isOdd() ? Timestamp.MIN_VALUE : Timestamp.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - - // If both Timestamps are small, use float multiplication - if (this.lessThan(Timestamp.TWO_PWR_24_) && - other.lessThan(Timestamp.TWO_PWR_24_)) { - return Timestamp.fromNumber(this.toNumber() * other.toNumber()); - } - - // Divide each Timestamp into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return Timestamp.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - -/** - * Returns this Timestamp divided by the given one. - * - * @param {Timestamp} other Timestamp by which to divide. - * @return {Timestamp} this Timestamp divided by the given one. - * @api public - */ -Timestamp.prototype.div = function(other) { - if (other.isZero()) { - throw Error('division by zero'); - } else if (this.isZero()) { - return Timestamp.ZERO; - } - - if (this.equals(Timestamp.MIN_VALUE)) { - if (other.equals(Timestamp.ONE) || - other.equals(Timestamp.NEG_ONE)) { - return Timestamp.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - } else if (other.equals(Timestamp.MIN_VALUE)) { - return Timestamp.ONE; - } else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equals(Timestamp.ZERO)) { - return other.isNegative() ? Timestamp.ONE : Timestamp.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equals(Timestamp.MIN_VALUE)) { - return Timestamp.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - var res = Timestamp.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - var approxRes = Timestamp.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = Timestamp.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) { - approxRes = Timestamp.ONE; - } - - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; -}; - -/** - * Returns this Timestamp modulo the given one. - * - * @param {Timestamp} other Timestamp by which to mod. - * @return {Timestamp} this Timestamp modulo the given one. - * @api public - */ -Timestamp.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); -}; - -/** - * The bitwise-NOT of this value. - * - * @return {Timestamp} the bitwise-NOT of this value. - * @api public - */ -Timestamp.prototype.not = function() { - return Timestamp.fromBits(~this.low_, ~this.high_); -}; - -/** - * Returns the bitwise-AND of this Timestamp and the given one. - * - * @param {Timestamp} other the Timestamp with which to AND. - * @return {Timestamp} the bitwise-AND of this and the other. - * @api public - */ -Timestamp.prototype.and = function(other) { - return Timestamp.fromBits(this.low_ & other.low_, this.high_ & other.high_); -}; - -/** - * Returns the bitwise-OR of this Timestamp and the given one. - * - * @param {Timestamp} other the Timestamp with which to OR. - * @return {Timestamp} the bitwise-OR of this and the other. - * @api public - */ -Timestamp.prototype.or = function(other) { - return Timestamp.fromBits(this.low_ | other.low_, this.high_ | other.high_); -}; - -/** - * Returns the bitwise-XOR of this Timestamp and the given one. - * - * @param {Timestamp} other the Timestamp with which to XOR. - * @return {Timestamp} the bitwise-XOR of this and the other. - * @api public - */ -Timestamp.prototype.xor = function(other) { - return Timestamp.fromBits(this.low_ ^ other.low_, this.high_ ^ other.high_); -}; - -/** - * Returns this Timestamp with bits shifted to the left by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Timestamp} this shifted to the left by the given amount. - * @api public - */ -Timestamp.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return Timestamp.fromBits( - low << numBits, - (high << numBits) | (low >>> (32 - numBits))); - } else { - return Timestamp.fromBits(0, low << (numBits - 32)); - } - } -}; - -/** - * Returns this Timestamp with bits shifted to the right by the given amount. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Timestamp} this shifted to the right by the given amount. - * @api public - */ -Timestamp.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Timestamp.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >> numBits); - } else { - return Timestamp.fromBits( - high >> (numBits - 32), - high >= 0 ? 0 : -1); - } - } -}; - -/** - * Returns this Timestamp with bits shifted to the right by the given amount, with the new top bits matching the current sign bit. - * - * @param {Number} numBits the number of bits by which to shift. - * @return {Timestamp} this shifted to the right by the given amount, with zeros placed into the new leading bits. - * @api public - */ -Timestamp.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Timestamp.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >>> numBits); - } else if (numBits == 32) { - return Timestamp.fromBits(high, 0); - } else { - return Timestamp.fromBits(high >>> (numBits - 32), 0); - } - } -}; - -/** - * Returns a Timestamp representing the given (32-bit) integer value. - * - * @param {Number} value the 32-bit integer in question. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = Timestamp.INT_CACHE_[value]; - if (cachedObj) { - return cachedObj; - } - } - - var obj = new Timestamp(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - Timestamp.INT_CACHE_[value] = obj; - } - return obj; -}; - -/** - * Returns a Timestamp representing the given value, provided that it is a finite number. Otherwise, zero is returned. - * - * @param {Number} value the number in question. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromNumber = function(value) { - if (isNaN(value) || !isFinite(value)) { - return Timestamp.ZERO; - } else if (value <= -Timestamp.TWO_PWR_63_DBL_) { - return Timestamp.MIN_VALUE; - } else if (value + 1 >= Timestamp.TWO_PWR_63_DBL_) { - return Timestamp.MAX_VALUE; - } else if (value < 0) { - return Timestamp.fromNumber(-value).negate(); - } else { - return new Timestamp( - (value % Timestamp.TWO_PWR_32_DBL_) | 0, - (value / Timestamp.TWO_PWR_32_DBL_) | 0); - } -}; - -/** - * Returns a Timestamp representing the 64-bit integer that comes by concatenating the given high and low bits. Each is assumed to use 32 bits. - * - * @param {Number} lowBits the low 32-bits. - * @param {Number} highBits the high 32-bits. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromBits = function(lowBits, highBits) { - return new Timestamp(lowBits, highBits); -}; - -/** - * Returns a Timestamp representation of the given string, written using the given radix. - * - * @param {String} str the textual representation of the Timestamp. - * @param {Number} opt_radix the radix in which the text is written. - * @return {Timestamp} the corresponding Timestamp value. - * @api public - */ -Timestamp.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (str.charAt(0) == '-') { - return Timestamp.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Timestamp.fromNumber(Math.pow(radix, 8)); - - var result = Timestamp.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = Timestamp.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(Timestamp.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(Timestamp.fromNumber(value)); - } - } - return result; -}; - -// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the -// from* methods on which they depend. - - -/** - * A cache of the Timestamp representations of small integer values. - * @type {Object} - * @api private - */ -Timestamp.INT_CACHE_ = {}; - -// NOTE: the compiler should inline these constant values below and then remove -// these variables, so there should be no runtime penalty for these. - -/** - * Number used repeated below in calculations. This must appear before the - * first call to any from* function below. - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_16_DBL_ = 1 << 16; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_24_DBL_ = 1 << 24; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_32_DBL_ = Timestamp.TWO_PWR_16_DBL_ * Timestamp.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_31_DBL_ = Timestamp.TWO_PWR_32_DBL_ / 2; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_48_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_16_DBL_; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_64_DBL_ = Timestamp.TWO_PWR_32_DBL_ * Timestamp.TWO_PWR_32_DBL_; - -/** - * @type {number} - * @api private - */ -Timestamp.TWO_PWR_63_DBL_ = Timestamp.TWO_PWR_64_DBL_ / 2; - -/** @type {Timestamp} */ -Timestamp.ZERO = Timestamp.fromInt(0); - -/** @type {Timestamp} */ -Timestamp.ONE = Timestamp.fromInt(1); - -/** @type {Timestamp} */ -Timestamp.NEG_ONE = Timestamp.fromInt(-1); - -/** @type {Timestamp} */ -Timestamp.MAX_VALUE = - Timestamp.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); - -/** @type {Timestamp} */ -Timestamp.MIN_VALUE = Timestamp.fromBits(0, 0x80000000 | 0); - -/** - * @type {Timestamp} - * @api private - */ -Timestamp.TWO_PWR_24_ = Timestamp.fromInt(1 << 24); - -/** - * Expose. - */ -exports.Timestamp = Timestamp; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json deleted file mode 100644 index 602a592..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "bson", - "description": "A bson parser for node.js and the browser", - "keywords": [ - "mongodb", - "bson", - "parser" - ], - "version": "0.1.8", - "author": { - "name": "Christian Amor Kvalheim", - "email": "christkv@gmail.com" - }, - "contributors": [], - "repository": { - "type": "git", - "url": "git://github.com/mongodb/js-bson.git" - }, - "bugs": { - "url": "https://github.com/mongodb/js-bson/issues" - }, - "devDependencies": { - "nodeunit": "0.7.3", - "gleak": "0.2.3", - "one": "latest" - }, - "config": { - "native": false - }, - "main": "./lib/bson/index", - "directories": { - "lib": "./lib/bson" - }, - "engines": { - "node": ">=0.6.19" - }, - "scripts": { - "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)", - "test": "nodeunit ./test/node && TEST_NATIVE=TRUE nodeunit ./test/node" - }, - "licenses": [ - { - "type": "Apache License, Version 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0" - } - ], - "readme": "A JS/C++ Bson parser for node, used in the MongoDB Native driver", - "readmeFilename": "README.md", - "_id": "bson@0.1.8", - "dist": { - "shasum": "4ab351f3b9717724526733f0f74d54727d4d5fbf" - }, - "_from": "bson@0.1.8", - "_resolved": "https://registry.npmjs.org/bson/-/bson-0.1.8.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm deleted file mode 100644 index 4ee148b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/browser_example.htm +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js deleted file mode 100644 index 84d8ffc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/bson_test.js +++ /dev/null @@ -1,260 +0,0 @@ -this.bson_test = { - 'Full document serialization and deserialization': function (test) { - var motherOfAllDocuments = { - 'string': "客家话", - 'array': [1,2,3], - 'hash': {'a':1, 'b':2}, - 'date': new Date(), - 'oid': new ObjectID(), - 'binary': new Binary('hello world'), - 'int': 42, - 'float': 33.3333, - 'regexp': /regexp/, - 'boolean': true, - 'long': Long.fromNumber(100), - 'where': new Code('this.a > i', {i:1}), - 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), - 'minkey': new MinKey(), - 'maxkey': new MaxKey() - } - - // Let's serialize it - var data = BSON.serialize(motherOfAllDocuments, true, true, false); - // Deserialize the object - var object = BSON.deserialize(data); - - // Asserts - test.equal(Utf8.decode(motherOfAllDocuments.string), object.string); - test.deepEqual(motherOfAllDocuments.array, object.array); - test.deepEqual(motherOfAllDocuments.date, object.date); - test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); - test.ok(assertArrayEqual(motherOfAllDocuments.binary.value(true), object.binary.value(true))); - test.deepEqual(motherOfAllDocuments.int, object.int); - test.deepEqual(motherOfAllDocuments.float, object.float); - test.deepEqual(motherOfAllDocuments.regexp, object.regexp); - test.deepEqual(motherOfAllDocuments.boolean, object.boolean); - test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); - test.deepEqual(motherOfAllDocuments.where, object.where); - test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); - test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); - test.deepEqual(motherOfAllDocuments.minkey, object.minkey); - test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); - test.done(); - }, - - 'exercise all the binary object constructor methods': function (test) { - // Construct using array - var string = 'hello world'; - // String to array - var array = stringToArrayBuffer(string); - - // Binary from array buffer - var binary = new Binary(stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - test.ok(assertArrayEqual(array, binary.buffer)); - - // Construct using number of chars - binary = new Binary(5); - test.ok(5, binary.buffer.length); - - // Construct using an Array - var binary = new Binary(stringToArray(string)); - test.ok(string.length, binary.buffer.length); - test.ok(assertArrayEqual(array, binary.buffer)); - - // Construct using a string - var binary = new Binary(string); - test.ok(string.length, binary.buffer.length); - test.ok(assertArrayEqual(array, binary.buffer)); - test.done(); - }, - - 'exercise the put binary object method for an instance when using Uint8Array': function (test) { - // Construct using array - var string = 'hello world'; - // String to array - var array = stringToArrayBuffer(string + 'a'); - - // Binary from array buffer - var binary = new Binary(stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - - // Write a byte to the array - binary.put('a') - - // Verify that the data was writtencorrectly - test.equal(string.length + 1, binary.position); - test.ok(assertArrayEqual(array, binary.value(true))); - test.equal('hello worlda', binary.value()); - - // Exercise a binary with lots of space in the buffer - var binary = new Binary(); - test.ok(Binary.BUFFER_SIZE, binary.buffer.length); - - // Write a byte to the array - binary.put('a') - - // Verify that the data was writtencorrectly - test.equal(1, binary.position); - test.ok(assertArrayEqual(['a'.charCodeAt(0)], binary.value(true))); - test.equal('a', binary.value()); - test.done(); - }, - - 'exercise the write binary object method for an instance when using Uint8Array': function (test) { - // Construct using array - var string = 'hello world'; - // Array - var writeArrayBuffer = new Uint8Array(new ArrayBuffer(1)); - writeArrayBuffer[0] = 'a'.charCodeAt(0); - var arrayBuffer = ['a'.charCodeAt(0)]; - - // Binary from array buffer - var binary = new Binary(stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - - // Write a string starting at end of buffer - binary.write('a'); - test.equal('hello worlda', binary.value()); - // Write a string starting at index 0 - binary.write('a', 0); - test.equal('aello worlda', binary.value()); - // Write a arraybuffer starting at end of buffer - binary.write(writeArrayBuffer); - test.equal('aello worldaa', binary.value()); - // Write a arraybuffer starting at position 5 - binary.write(writeArrayBuffer, 5); - test.equal('aelloaworldaa', binary.value()); - // Write a array starting at end of buffer - binary.write(arrayBuffer); - test.equal('aelloaworldaaa', binary.value()); - // Write a array starting at position 6 - binary.write(arrayBuffer, 6); - test.equal('aelloaaorldaaa', binary.value()); - test.done(); - }, - - 'exercise the read binary object method for an instance when using Uint8Array': function (test) { - // Construct using array - var string = 'hello world'; - var array = stringToArrayBuffer(string); - - // Binary from array buffer - var binary = new Binary(stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - - // Read the first 2 bytes - var data = binary.read(0, 2); - test.ok(assertArrayEqual(stringToArrayBuffer('he'), data)); - - // Read the entire field - var data = binary.read(0); - test.ok(assertArrayEqual(stringToArrayBuffer(string), data)); - - // Read 3 bytes - var data = binary.read(6, 5); - test.ok(assertArrayEqual(stringToArrayBuffer('world'), data)); - test.done(); - }, - - 'Should correctly handle toBson function for an object': function(test) { - // Test object - var doc = { - hello: new ObjectID(), - a:1 - }; - // Add a toBson method to the object - doc.toBSON = function() { - return {b:1}; - } - - // Serialize the data - var serialized_data = BSON.serialize(doc, false, true); - var deserialized_doc = BSON.deserialize(serialized_data); - test.equal(1, deserialized_doc.b); - test.done(); - } -}; - -var assertArrayEqual = function(array1, array2) { - if(array1.length != array2.length) return false; - for(var i = 0; i < array1.length; i++) { - if(array1[i] != array2[i]) return false; - } - - return true; -} - -// String to arraybuffer -var stringToArrayBuffer = function(string) { - var dataBuffer = new Uint8Array(new ArrayBuffer(string.length)); - // Return the strings - for(var i = 0; i < string.length; i++) { - dataBuffer[i] = string.charCodeAt(i); - } - // Return the data buffer - return dataBuffer; -} - -// String to arraybuffer -var stringToArray = function(string) { - var dataBuffer = new Array(string.length); - // Return the strings - for(var i = 0; i < string.length; i++) { - dataBuffer[i] = string.charCodeAt(i); - } - // Return the data buffer - return dataBuffer; -} - -var Utf8 = { - // public method for url encoding - encode : function (string) { - string = string.replace(/\r\n/g,"\n"); - var utftext = ""; - - for (var n = 0; n < string.length; n++) { - var c = string.charCodeAt(n); - if (c < 128) { - utftext += String.fromCharCode(c); - } else if((c > 127) && (c < 2048)) { - utftext += String.fromCharCode((c >> 6) | 192); - utftext += String.fromCharCode((c & 63) | 128); - } else { - utftext += String.fromCharCode((c >> 12) | 224); - utftext += String.fromCharCode(((c >> 6) & 63) | 128); - utftext += String.fromCharCode((c & 63) | 128); - } - - } - - return utftext; - }, - - // public method for url decoding - decode : function (utftext) { - var string = ""; - var i = 0; - var c = c1 = c2 = 0; - - while ( i < utftext.length ) { - c = utftext.charCodeAt(i); - if(c < 128) { - string += String.fromCharCode(c); - i++; - } else if((c > 191) && (c < 224)) { - c2 = utftext.charCodeAt(i+1); - string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = utftext.charCodeAt(i+1); - c3 = utftext.charCodeAt(i+2); - string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - return string; - } -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js deleted file mode 100644 index af7fd0b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/nodeunit.js +++ /dev/null @@ -1,2034 +0,0 @@ -/*! - * Nodeunit - * https://github.com/caolan/nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * json2.js - * http://www.JSON.org/json2.js - * Public Domain. - * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - */ -nodeunit = (function(){ -/* - http://www.JSON.org/json2.js - 2010-11-17 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, strict: false, regexp: false */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -var JSON = {}; - -(function () { - "use strict"; - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/ -.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') -.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') -.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } -}()); -var assert = this.assert = {}; -var types = {}; -var core = {}; -var nodeunit = {}; -var reporter = {}; -/*global setTimeout: false, console: false */ -(function () { - - var async = {}; - - // global on the server, window in the browser - var root = this, - previous_async = root.async; - - if (typeof module !== 'undefined' && module.exports) { - module.exports = async; - } - else { - root.async = async; - } - - async.noConflict = function () { - root.async = previous_async; - return async; - }; - - //// cross-browser compatiblity functions //// - - var _forEach = function (arr, iterator) { - if (arr.forEach) { - return arr.forEach(iterator); - } - for (var i = 0; i < arr.length; i += 1) { - iterator(arr[i], i, arr); - } - }; - - var _map = function (arr, iterator) { - if (arr.map) { - return arr.map(iterator); - } - var results = []; - _forEach(arr, function (x, i, a) { - results.push(iterator(x, i, a)); - }); - return results; - }; - - var _reduce = function (arr, iterator, memo) { - if (arr.reduce) { - return arr.reduce(iterator, memo); - } - _forEach(arr, function (x, i, a) { - memo = iterator(memo, x, i, a); - }); - return memo; - }; - - var _keys = function (obj) { - if (Object.keys) { - return Object.keys(obj); - } - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; - }; - - var _indexOf = function (arr, item) { - if (arr.indexOf) { - return arr.indexOf(item); - } - for (var i = 0; i < arr.length; i += 1) { - if (arr[i] === item) { - return i; - } - } - return -1; - }; - - //// exported async module functions //// - - //// nextTick implementation with browser-compatible fallback //// - if (typeof process === 'undefined' || !(process.nextTick)) { - async.nextTick = function (fn) { - setTimeout(fn, 0); - }; - } - else { - async.nextTick = process.nextTick; - } - - async.forEach = function (arr, iterator, callback) { - if (!arr.length) { - return callback(); - } - var completed = 0; - _forEach(arr, function (x) { - iterator(x, function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed === arr.length) { - callback(); - } - } - }); - }); - }; - - async.forEachSeries = function (arr, iterator, callback) { - if (!arr.length) { - return callback(); - } - var completed = 0; - var iterate = function () { - iterator(arr[completed], function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - completed += 1; - if (completed === arr.length) { - callback(); - } - else { - iterate(); - } - } - }); - }; - iterate(); - }; - - - var doParallel = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.forEach].concat(args)); - }; - }; - var doSeries = function (fn) { - return function () { - var args = Array.prototype.slice.call(arguments); - return fn.apply(null, [async.forEachSeries].concat(args)); - }; - }; - - - var _asyncMap = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (err, v) { - results[x.index] = v; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - }; - async.map = doParallel(_asyncMap); - async.mapSeries = doSeries(_asyncMap); - - - // reduce only has a series version, as doing reduce in parallel won't - // work in many situations. - async.reduce = function (arr, memo, iterator, callback) { - async.forEachSeries(arr, function (x, callback) { - iterator(memo, x, function (err, v) { - memo = v; - callback(err); - }); - }, function (err) { - callback(err, memo); - }); - }; - // inject alias - async.inject = async.reduce; - // foldl alias - async.foldl = async.reduce; - - async.reduceRight = function (arr, memo, iterator, callback) { - var reversed = _map(arr, function (x) { - return x; - }).reverse(); - async.reduce(reversed, memo, iterator, callback); - }; - // foldr alias - async.foldr = async.reduceRight; - - var _filter = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (v) { - if (v) { - results.push(x); - } - callback(); - }); - }, function (err) { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - }; - async.filter = doParallel(_filter); - async.filterSeries = doSeries(_filter); - // select alias - async.select = async.filter; - async.selectSeries = async.filterSeries; - - var _reject = function (eachfn, arr, iterator, callback) { - var results = []; - arr = _map(arr, function (x, i) { - return {index: i, value: x}; - }); - eachfn(arr, function (x, callback) { - iterator(x.value, function (v) { - if (!v) { - results.push(x); - } - callback(); - }); - }, function (err) { - callback(_map(results.sort(function (a, b) { - return a.index - b.index; - }), function (x) { - return x.value; - })); - }); - }; - async.reject = doParallel(_reject); - async.rejectSeries = doSeries(_reject); - - var _detect = function (eachfn, arr, iterator, main_callback) { - eachfn(arr, function (x, callback) { - iterator(x, function (result) { - if (result) { - main_callback(x); - } - else { - callback(); - } - }); - }, function (err) { - main_callback(); - }); - }; - async.detect = doParallel(_detect); - async.detectSeries = doSeries(_detect); - - async.some = function (arr, iterator, main_callback) { - async.forEach(arr, function (x, callback) { - iterator(x, function (v) { - if (v) { - main_callback(true); - main_callback = function () {}; - } - callback(); - }); - }, function (err) { - main_callback(false); - }); - }; - // any alias - async.any = async.some; - - async.every = function (arr, iterator, main_callback) { - async.forEach(arr, function (x, callback) { - iterator(x, function (v) { - if (!v) { - main_callback(false); - main_callback = function () {}; - } - callback(); - }); - }, function (err) { - main_callback(true); - }); - }; - // all alias - async.all = async.every; - - async.sortBy = function (arr, iterator, callback) { - async.map(arr, function (x, callback) { - iterator(x, function (err, criteria) { - if (err) { - callback(err); - } - else { - callback(null, {value: x, criteria: criteria}); - } - }); - }, function (err, results) { - if (err) { - return callback(err); - } - else { - var fn = function (left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }; - callback(null, _map(results.sort(fn), function (x) { - return x.value; - })); - } - }); - }; - - async.auto = function (tasks, callback) { - callback = callback || function () {}; - var keys = _keys(tasks); - if (!keys.length) { - return callback(null); - } - - var completed = []; - - var listeners = []; - var addListener = function (fn) { - listeners.unshift(fn); - }; - var removeListener = function (fn) { - for (var i = 0; i < listeners.length; i += 1) { - if (listeners[i] === fn) { - listeners.splice(i, 1); - return; - } - } - }; - var taskComplete = function () { - _forEach(listeners, function (fn) { - fn(); - }); - }; - - addListener(function () { - if (completed.length === keys.length) { - callback(null); - } - }); - - _forEach(keys, function (k) { - var task = (tasks[k] instanceof Function) ? [tasks[k]]: tasks[k]; - var taskCallback = function (err) { - if (err) { - callback(err); - // stop subsequent errors hitting callback multiple times - callback = function () {}; - } - else { - completed.push(k); - taskComplete(); - } - }; - var requires = task.slice(0, Math.abs(task.length - 1)) || []; - var ready = function () { - return _reduce(requires, function (a, x) { - return (a && _indexOf(completed, x) !== -1); - }, true); - }; - if (ready()) { - task[task.length - 1](taskCallback); - } - else { - var listener = function () { - if (ready()) { - removeListener(listener); - task[task.length - 1](taskCallback); - } - }; - addListener(listener); - } - }); - }; - - async.waterfall = function (tasks, callback) { - if (!tasks.length) { - return callback(); - } - callback = callback || function () {}; - var wrapIterator = function (iterator) { - return function (err) { - if (err) { - callback(err); - callback = function () {}; - } - else { - var args = Array.prototype.slice.call(arguments, 1); - var next = iterator.next(); - if (next) { - args.push(wrapIterator(next)); - } - else { - args.push(callback); - } - async.nextTick(function () { - iterator.apply(null, args); - }); - } - }; - }; - wrapIterator(async.iterator(tasks))(); - }; - - async.parallel = function (tasks, callback) { - callback = callback || function () {}; - if (tasks.constructor === Array) { - async.map(tasks, function (fn, callback) { - if (fn) { - fn(function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - callback.call(null, err, args || null); - }); - } - }, callback); - } - else { - var results = {}; - async.forEach(_keys(tasks), function (k, callback) { - tasks[k](function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - }; - - async.series = function (tasks, callback) { - callback = callback || function () {}; - if (tasks.constructor === Array) { - async.mapSeries(tasks, function (fn, callback) { - if (fn) { - fn(function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - callback.call(null, err, args || null); - }); - } - }, callback); - } - else { - var results = {}; - async.forEachSeries(_keys(tasks), function (k, callback) { - tasks[k](function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (args.length <= 1) { - args = args[0]; - } - results[k] = args; - callback(err); - }); - }, function (err) { - callback(err, results); - }); - } - }; - - async.iterator = function (tasks) { - var makeCallback = function (index) { - var fn = function () { - if (tasks.length) { - tasks[index].apply(null, arguments); - } - return fn.next(); - }; - fn.next = function () { - return (index < tasks.length - 1) ? makeCallback(index + 1): null; - }; - return fn; - }; - return makeCallback(0); - }; - - async.apply = function (fn) { - var args = Array.prototype.slice.call(arguments, 1); - return function () { - return fn.apply( - null, args.concat(Array.prototype.slice.call(arguments)) - ); - }; - }; - - var _concat = function (eachfn, arr, fn, callback) { - var r = []; - eachfn(arr, function (x, cb) { - fn(x, function (err, y) { - r = r.concat(y || []); - cb(err); - }); - }, function (err) { - callback(err, r); - }); - }; - async.concat = doParallel(_concat); - async.concatSeries = doSeries(_concat); - - async.whilst = function (test, iterator, callback) { - if (test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.whilst(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.until = function (test, iterator, callback) { - if (!test()) { - iterator(function (err) { - if (err) { - return callback(err); - } - async.until(test, iterator, callback); - }); - } - else { - callback(); - } - }; - - async.queue = function (worker, concurrency) { - var workers = 0; - var tasks = []; - var q = { - concurrency: concurrency, - push: function (data, callback) { - tasks.push({data: data, callback: callback}); - async.nextTick(q.process); - }, - process: function () { - if (workers < q.concurrency && tasks.length) { - var task = tasks.splice(0, 1)[0]; - workers += 1; - worker(task.data, function () { - workers -= 1; - if (task.callback) { - task.callback.apply(task, arguments); - } - q.process(); - }); - } - }, - length: function () { - return tasks.length; - } - }; - return q; - }; - - var _console_fn = function (name) { - return function (fn) { - var args = Array.prototype.slice.call(arguments, 1); - fn.apply(null, args.concat([function (err) { - var args = Array.prototype.slice.call(arguments, 1); - if (typeof console !== 'undefined') { - if (err) { - if (console.error) { - console.error(err); - } - } - else if (console[name]) { - _forEach(args, function (x) { - console[name](x); - }); - } - } - }])); - }; - }; - async.log = _console_fn('log'); - async.dir = _console_fn('dir'); - /*async.info = _console_fn('info'); - async.warn = _console_fn('warn'); - async.error = _console_fn('error');*/ - - async.memoize = function (fn, hasher) { - var memo = {}; - hasher = hasher || function (x) { - return x; - }; - return function () { - var args = Array.prototype.slice.call(arguments); - var callback = args.pop(); - var key = hasher.apply(null, args); - if (key in memo) { - callback.apply(null, memo[key]); - } - else { - fn.apply(null, args.concat([function () { - memo[key] = arguments; - callback.apply(null, arguments); - }])); - } - }; - }; - -}()); -(function(exports){ -/** - * This file is based on the node.js assert module, but with some small - * changes for browser-compatibility - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - */ - - -/** - * Added for browser compatibility - */ - -var _keys = function(obj){ - if(Object.keys) return Object.keys(obj); - if (typeof obj != 'object' && typeof obj != 'function') { - throw new TypeError('-'); - } - var keys = []; - for(var k in obj){ - if(obj.hasOwnProperty(k)) keys.push(k); - } - return keys; -}; - - - -// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 -// -// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! -// -// Originally from narwhal.js (http://narwhaljs.org) -// Copyright (c) 2009 Thomas Robinson <280north.com> -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the 'Software'), to -// deal in the Software without restriction, including without limitation the -// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -// sell copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -var pSlice = Array.prototype.slice; - -// 1. The assert module provides functions that throw -// AssertionError's when particular conditions are not met. The -// assert module must conform to the following interface. - -var assert = exports; - -// 2. The AssertionError is defined in assert. -// new assert.AssertionError({message: message, actual: actual, expected: expected}) - -assert.AssertionError = function AssertionError (options) { - this.name = "AssertionError"; - this.message = options.message; - this.actual = options.actual; - this.expected = options.expected; - this.operator = options.operator; - var stackStartFunction = options.stackStartFunction || fail; - - if (Error.captureStackTrace) { - Error.captureStackTrace(this, stackStartFunction); - } -}; -// code from util.inherits in node -assert.AssertionError.super_ = Error; - - -// EDITED FOR BROWSER COMPATIBILITY: replaced Object.create call -// TODO: test what effect this may have -var ctor = function () { this.constructor = assert.AssertionError; }; -ctor.prototype = Error.prototype; -assert.AssertionError.prototype = new ctor(); - - -assert.AssertionError.prototype.toString = function() { - if (this.message) { - return [this.name+":", this.message].join(' '); - } else { - return [ this.name+":" - , JSON.stringify(this.expected ) - , this.operator - , JSON.stringify(this.actual) - ].join(" "); - } -}; - -// assert.AssertionError instanceof Error - -assert.AssertionError.__proto__ = Error.prototype; - -// At present only the three keys mentioned above are used and -// understood by the spec. Implementations or sub modules can pass -// other keys to the AssertionError's constructor - they will be -// ignored. - -// 3. All of the following functions must throw an AssertionError -// when a corresponding condition is not met, with a message that -// may be undefined if not provided. All assertion methods provide -// both the actual and expected values to the assertion error for -// display purposes. - -function fail(actual, expected, message, operator, stackStartFunction) { - throw new assert.AssertionError({ - message: message, - actual: actual, - expected: expected, - operator: operator, - stackStartFunction: stackStartFunction - }); -} - -// EXTENSION! allows for well behaved errors defined elsewhere. -assert.fail = fail; - -// 4. Pure assertion tests whether a value is truthy, as determined -// by !!guard. -// assert.ok(guard, message_opt); -// This statement is equivalent to assert.equal(true, guard, -// message_opt);. To test strictly for the value true, use -// assert.strictEqual(true, guard, message_opt);. - -assert.ok = function ok(value, message) { - if (!!!value) fail(value, true, message, "==", assert.ok); -}; - -// 5. The equality assertion tests shallow, coercive equality with -// ==. -// assert.equal(actual, expected, message_opt); - -assert.equal = function equal(actual, expected, message) { - if (actual != expected) fail(actual, expected, message, "==", assert.equal); -}; - -// 6. The non-equality assertion tests for whether two objects are not equal -// with != assert.notEqual(actual, expected, message_opt); - -assert.notEqual = function notEqual(actual, expected, message) { - if (actual == expected) { - fail(actual, expected, message, "!=", assert.notEqual); - } -}; - -// 7. The equivalence assertion tests a deep equality relation. -// assert.deepEqual(actual, expected, message_opt); - -assert.deepEqual = function deepEqual(actual, expected, message) { - if (!_deepEqual(actual, expected)) { - fail(actual, expected, message, "deepEqual", assert.deepEqual); - } -}; - -function _deepEqual(actual, expected) { - // 7.1. All identical values are equivalent, as determined by ===. - if (actual === expected) { - return true; - // 7.2. If the expected value is a Date object, the actual value is - // equivalent if it is also a Date object that refers to the same time. - } else if (actual instanceof Date && expected instanceof Date) { - return actual.getTime() === expected.getTime(); - - // 7.3. Other pairs that do not both pass typeof value == "object", - // equivalence is determined by ==. - } else if (typeof actual != 'object' && typeof expected != 'object') { - return actual == expected; - - // 7.4. For all other Object pairs, including Array objects, equivalence is - // determined by having the same number of owned properties (as verified - // with Object.prototype.hasOwnProperty.call), the same set of keys - // (although not necessarily the same order), equivalent values for every - // corresponding key, and an identical "prototype" property. Note: this - // accounts for both named and indexed properties on Arrays. - } else { - return objEquiv(actual, expected); - } -} - -function isUndefinedOrNull (value) { - return value === null || value === undefined; -} - -function isArguments (object) { - return Object.prototype.toString.call(object) == '[object Arguments]'; -} - -function objEquiv (a, b) { - if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) - return false; - // an identical "prototype" property. - if (a.prototype !== b.prototype) return false; - //~~~I've managed to break Object.keys through screwy arguments passing. - // Converting to array solves the problem. - if (isArguments(a)) { - if (!isArguments(b)) { - return false; - } - a = pSlice.call(a); - b = pSlice.call(b); - return _deepEqual(a, b); - } - try{ - var ka = _keys(a), - kb = _keys(b), - key, i; - } catch (e) {//happens when one is a string literal and the other isn't - return false; - } - // having the same number of owned properties (keys incorporates hasOwnProperty) - if (ka.length != kb.length) - return false; - //the same set of keys (although not necessarily the same order), - ka.sort(); - kb.sort(); - //~~~cheap key test - for (i = ka.length - 1; i >= 0; i--) { - if (ka[i] != kb[i]) - return false; - } - //equivalent values for every corresponding key, and - //~~~possibly expensive deep test - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!_deepEqual(a[key], b[key] )) - return false; - } - return true; -} - -// 8. The non-equivalence assertion tests for any deep inequality. -// assert.notDeepEqual(actual, expected, message_opt); - -assert.notDeepEqual = function notDeepEqual(actual, expected, message) { - if (_deepEqual(actual, expected)) { - fail(actual, expected, message, "notDeepEqual", assert.notDeepEqual); - } -}; - -// 9. The strict equality assertion tests strict equality, as determined by ===. -// assert.strictEqual(actual, expected, message_opt); - -assert.strictEqual = function strictEqual(actual, expected, message) { - if (actual !== expected) { - fail(actual, expected, message, "===", assert.strictEqual); - } -}; - -// 10. The strict non-equality assertion tests for strict inequality, as determined by !==. -// assert.notStrictEqual(actual, expected, message_opt); - -assert.notStrictEqual = function notStrictEqual(actual, expected, message) { - if (actual === expected) { - fail(actual, expected, message, "!==", assert.notStrictEqual); - } -}; - -function _throws (shouldThrow, block, err, message) { - var exception = null, - threw = false, - typematters = true; - - message = message || ""; - - //handle optional arguments - if (arguments.length == 3) { - if (typeof(err) == "string") { - message = err; - typematters = false; - } - } else if (arguments.length == 2) { - typematters = false; - } - - try { - block(); - } catch (e) { - threw = true; - exception = e; - } - - if (shouldThrow && !threw) { - fail( "Missing expected exception" - + (err && err.name ? " ("+err.name+")." : '.') - + (message ? " " + message : "") - ); - } - if (!shouldThrow && threw && typematters && exception instanceof err) { - fail( "Got unwanted exception" - + (err && err.name ? " ("+err.name+")." : '.') - + (message ? " " + message : "") - ); - } - if ((shouldThrow && threw && typematters && !(exception instanceof err)) || - (!shouldThrow && threw)) { - throw exception; - } -}; - -// 11. Expected to throw an error: -// assert.throws(block, Error_opt, message_opt); - -assert.throws = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [true].concat(pSlice.call(arguments))); -}; - -// EXTENSION! This is annoying to write outside this module. -assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { - _throws.apply(this, [false].concat(pSlice.call(arguments))); -}; - -assert.ifError = function (err) { if (err) {throw err;}}; -})(assert); -(function(exports){ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - -/** - * Module dependencies - */ - -//var assert = require('./assert'), //@REMOVE_LINE_FOR_BROWSER -// async = require('../deps/async'); //@REMOVE_LINE_FOR_BROWSER - - -/** - * Creates assertion objects representing the result of an assert call. - * Accepts an object or AssertionError as its argument. - * - * @param {object} obj - * @api public - */ - -exports.assertion = function (obj) { - return { - method: obj.method || '', - message: obj.message || (obj.error && obj.error.message) || '', - error: obj.error, - passed: function () { - return !this.error; - }, - failed: function () { - return Boolean(this.error); - } - }; -}; - -/** - * Creates an assertion list object representing a group of assertions. - * Accepts an array of assertion objects. - * - * @param {Array} arr - * @param {Number} duration - * @api public - */ - -exports.assertionList = function (arr, duration) { - var that = arr || []; - that.failures = function () { - var failures = 0; - for (var i = 0; i < this.length; i += 1) { - if (this[i].failed()) { - failures += 1; - } - } - return failures; - }; - that.passes = function () { - return that.length - that.failures(); - }; - that.duration = duration || 0; - return that; -}; - -/** - * Create a wrapper function for assert module methods. Executes a callback - * after the it's complete with an assertion object representing the result. - * - * @param {Function} callback - * @api private - */ - -var assertWrapper = function (callback) { - return function (new_method, assert_method, arity) { - return function () { - var message = arguments[arity - 1]; - var a = exports.assertion({method: new_method, message: message}); - try { - assert[assert_method].apply(null, arguments); - } - catch (e) { - a.error = e; - } - callback(a); - }; - }; -}; - -/** - * Creates the 'test' object that gets passed to every test function. - * Accepts the name of the test function as its first argument, followed by - * the start time in ms, the options object and a callback function. - * - * @param {String} name - * @param {Number} start - * @param {Object} options - * @param {Function} callback - * @api public - */ - -exports.test = function (name, start, options, callback) { - var expecting; - var a_list = []; - - var wrapAssert = assertWrapper(function (a) { - a_list.push(a); - if (options.log) { - async.nextTick(function () { - options.log(a); - }); - } - }); - - var test = { - done: function (err) { - if (expecting !== undefined && expecting !== a_list.length) { - var e = new Error( - 'Expected ' + expecting + ' assertions, ' + - a_list.length + ' ran' - ); - var a1 = exports.assertion({method: 'expect', error: e}); - a_list.push(a1); - if (options.log) { - async.nextTick(function () { - options.log(a1); - }); - } - } - if (err) { - var a2 = exports.assertion({error: err}); - a_list.push(a2); - if (options.log) { - async.nextTick(function () { - options.log(a2); - }); - } - } - var end = new Date().getTime(); - async.nextTick(function () { - var assertion_list = exports.assertionList(a_list, end - start); - options.testDone(name, assertion_list); - callback(null, a_list); - }); - }, - ok: wrapAssert('ok', 'ok', 2), - same: wrapAssert('same', 'deepEqual', 3), - equals: wrapAssert('equals', 'equal', 3), - expect: function (num) { - expecting = num; - }, - _assertion_list: a_list - }; - // add all functions from the assert module - for (var k in assert) { - if (assert.hasOwnProperty(k)) { - test[k] = wrapAssert(k, k, assert[k].length); - } - } - return test; -}; - -/** - * Ensures an options object has all callbacks, adding empty callback functions - * if any are missing. - * - * @param {Object} opt - * @return {Object} - * @api public - */ - -exports.options = function (opt) { - var optionalCallback = function (name) { - opt[name] = opt[name] || function () {}; - }; - - optionalCallback('moduleStart'); - optionalCallback('moduleDone'); - optionalCallback('testStart'); - optionalCallback('testDone'); - //optionalCallback('log'); - - // 'done' callback is not optional. - - return opt; -}; -})(types); -(function(exports){ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - -/** - * Module dependencies - */ - -//var async = require('../deps/async'), //@REMOVE_LINE_FOR_BROWSER -// types = require('./types'); //@REMOVE_LINE_FOR_BROWSER - - -/** - * Added for browser compatibility - */ - -var _keys = function (obj) { - if (Object.keys) { - return Object.keys(obj); - } - var keys = []; - for (var k in obj) { - if (obj.hasOwnProperty(k)) { - keys.push(k); - } - } - return keys; -}; - - -var _copy = function (obj) { - var nobj = {}; - var keys = _keys(obj); - for (var i = 0; i < keys.length; i += 1) { - nobj[keys[i]] = obj[keys[i]]; - } - return nobj; -}; - - -/** - * Runs a test function (fn) from a loaded module. After the test function - * calls test.done(), the callback is executed with an assertionList as its - * second argument. - * - * @param {String} name - * @param {Function} fn - * @param {Object} opt - * @param {Function} callback - * @api public - */ - -exports.runTest = function (name, fn, opt, callback) { - var options = types.options(opt); - - options.testStart(name); - var start = new Date().getTime(); - var test = types.test(name, start, options, callback); - - try { - fn(test); - } - catch (e) { - test.done(e); - } -}; - -/** - * Takes an object containing test functions or other test suites as properties - * and runs each in series. After all tests have completed, the callback is - * called with a list of all assertions as the second argument. - * - * If a name is passed to this function it is prepended to all test and suite - * names that run within it. - * - * @param {String} name - * @param {Object} suite - * @param {Object} opt - * @param {Function} callback - * @api public - */ - -exports.runSuite = function (name, suite, opt, callback) { - var keys = _keys(suite); - - async.concatSeries(keys, function (k, cb) { - var prop = suite[k], _name; - - _name = name ? [].concat(name, k) : [k]; - - _name.toString = function () { - // fallback for old one - return this.join(' - '); - }; - - if (typeof prop === 'function') { - var in_name = false; - for (var i = 0; i < _name.length; i += 1) { - if (_name[i] === opt.testspec) { - in_name = true; - } - } - if (!opt.testspec || in_name) { - if (opt.moduleStart) { - opt.moduleStart(); - } - exports.runTest(_name, suite[k], opt, cb); - } - else { - return cb(); - } - } - else { - exports.runSuite(_name, suite[k], opt, cb); - } - }, callback); -}; - -/** - * Run each exported test function or test suite from a loaded module. - * - * @param {String} name - * @param {Object} mod - * @param {Object} opt - * @param {Function} callback - * @api public - */ - -exports.runModule = function (name, mod, opt, callback) { - var options = _copy(types.options(opt)); - - var _run = false; - var _moduleStart = options.moduleStart; - function run_once() { - if (!_run) { - _run = true; - _moduleStart(name); - } - } - options.moduleStart = run_once; - - var start = new Date().getTime(); - - exports.runSuite(null, mod, options, function (err, a_list) { - var end = new Date().getTime(); - var assertion_list = types.assertionList(a_list, end - start); - options.moduleDone(name, assertion_list); - callback(null, a_list); - }); -}; - -/** - * Treats an object literal as a list of modules keyed by name. Runs each - * module and finished with calling 'done'. You can think of this as a browser - * safe alternative to runFiles in the nodeunit module. - * - * @param {Object} modules - * @param {Object} opt - * @api public - */ - -// TODO: add proper unit tests for this function -exports.runModules = function (modules, opt) { - var all_assertions = []; - var options = types.options(opt); - var start = new Date().getTime(); - - async.concatSeries(_keys(modules), function (k, cb) { - exports.runModule(k, modules[k], options, cb); - }, - function (err, all_assertions) { - var end = new Date().getTime(); - options.done(types.assertionList(all_assertions, end - start)); - }); -}; - - -/** - * Wraps a test function with setUp and tearDown functions. - * Used by testCase. - * - * @param {Function} setUp - * @param {Function} tearDown - * @param {Function} fn - * @api private - */ - -var wrapTest = function (setUp, tearDown, fn) { - return function (test) { - var context = {}; - if (tearDown) { - var done = test.done; - test.done = function (err) { - try { - tearDown.call(context, function (err2) { - if (err && err2) { - test._assertion_list.push( - types.assertion({error: err}) - ); - return done(err2); - } - done(err || err2); - }); - } - catch (e) { - done(e); - } - }; - } - if (setUp) { - setUp.call(context, function (err) { - if (err) { - return test.done(err); - } - fn.call(context, test); - }); - } - else { - fn.call(context, test); - } - }; -}; - - -/** - * Wraps a group of tests with setUp and tearDown functions. - * Used by testCase. - * - * @param {Function} setUp - * @param {Function} tearDown - * @param {Object} group - * @api private - */ - -var wrapGroup = function (setUp, tearDown, group) { - var tests = {}; - var keys = _keys(group); - for (var i = 0; i < keys.length; i += 1) { - var k = keys[i]; - if (typeof group[k] === 'function') { - tests[k] = wrapTest(setUp, tearDown, group[k]); - } - else if (typeof group[k] === 'object') { - tests[k] = wrapGroup(setUp, tearDown, group[k]); - } - } - return tests; -}; - - -/** - * Utility for wrapping a suite of test functions with setUp and tearDown - * functions. - * - * @param {Object} suite - * @return {Object} - * @api public - */ - -exports.testCase = function (suite) { - var setUp = suite.setUp; - var tearDown = suite.tearDown; - delete suite.setUp; - delete suite.tearDown; - return wrapGroup(setUp, tearDown, suite); -}; -})(core); -(function(exports){ -/*! - * Nodeunit - * Copyright (c) 2010 Caolan McMahon - * MIT Licensed - * - * THIS FILE SHOULD BE BROWSER-COMPATIBLE JS! - * You can use @REMOVE_LINE_FOR_BROWSER to remove code from the browser build. - * Only code on that line will be removed, its mostly to avoid requiring code - * that is node specific - */ - - -/** - * NOTE: this test runner is not listed in index.js because it cannot be - * used with the command-line tool, only inside the browser. - */ - - -/** - * Reporter info string - */ - -exports.info = "Browser-based test reporter"; - - -/** - * Run all tests within each module, reporting the results - * - * @param {Array} files - * @api public - */ - -exports.run = function (modules, options) { - var start = new Date().getTime(); - - function setText(el, txt) { - if ('innerText' in el) { - el.innerText = txt; - } - else if ('textContent' in el){ - el.textContent = txt; - } - } - - function getOrCreate(tag, id) { - var el = document.getElementById(id); - if (!el) { - el = document.createElement(tag); - el.id = id; - document.body.appendChild(el); - } - return el; - }; - - var header = getOrCreate('h1', 'nodeunit-header'); - var banner = getOrCreate('h2', 'nodeunit-banner'); - var userAgent = getOrCreate('h2', 'nodeunit-userAgent'); - var tests = getOrCreate('ol', 'nodeunit-tests'); - var result = getOrCreate('p', 'nodeunit-testresult'); - - setText(userAgent, navigator.userAgent); - - nodeunit.runModules(modules, { - moduleStart: function (name) { - /*var mheading = document.createElement('h2'); - mheading.innerText = name; - results.appendChild(mheading); - module = document.createElement('ol'); - results.appendChild(module);*/ - }, - testDone: function (name, assertions) { - var test = document.createElement('li'); - var strong = document.createElement('strong'); - strong.innerHTML = name + ' (' + - '' + assertions.failures() + ', ' + - '' + assertions.passes() + ', ' + - assertions.length + - ')'; - test.className = assertions.failures() ? 'fail': 'pass'; - test.appendChild(strong); - - var aList = document.createElement('ol'); - aList.style.display = 'none'; - test.onclick = function () { - var d = aList.style.display; - aList.style.display = (d == 'none') ? 'block': 'none'; - }; - for (var i=0; i' + (a.error.stack || a.error) + ''; - li.className = 'fail'; - } - else { - li.innerHTML = a.message || a.method || 'no message'; - li.className = 'pass'; - } - aList.appendChild(li); - } - test.appendChild(aList); - tests.appendChild(test); - }, - done: function (assertions) { - var end = new Date().getTime(); - var duration = end - start; - - var failures = assertions.failures(); - banner.className = failures ? 'fail': 'pass'; - - result.innerHTML = 'Tests completed in ' + duration + - ' milliseconds.
      ' + - assertions.passes() + ' assertions of ' + - '' + assertions.length + ' passed, ' + - assertions.failures() + ' failed.'; - } - }); -}; -})(reporter); -nodeunit = core; -nodeunit.assert = assert; -nodeunit.reporter = reporter; -nodeunit.run = reporter.run; -return nodeunit; })(); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js deleted file mode 100644 index c7288e8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite2.js +++ /dev/null @@ -1,13 +0,0 @@ -this.suite2 = { - 'another test': function (test) { - setTimeout(function () { - // lots of assertions - test.ok(true, 'everythings ok'); - test.ok(true, 'everythings ok'); - test.ok(true, 'everythings ok'); - test.ok(true, 'everythings ok'); - test.ok(true, 'everythings ok'); - test.done(); - }, 10); - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js deleted file mode 100644 index 8929741..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/suite3.js +++ /dev/null @@ -1,7 +0,0 @@ -this.suite3 = { - 'test for ie6,7,8': function (test) { - test.deepEqual(["test"], ["test"]); - test.notDeepEqual(["a"], ["b"]); - test.done(); - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html deleted file mode 100644 index 56d4d96..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/browser/test.html +++ /dev/null @@ -1,30 +0,0 @@ - - - Example tests - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js deleted file mode 100644 index 5304bef..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_array_test.js +++ /dev/null @@ -1,240 +0,0 @@ -var mongodb = require('../../lib/bson').pure(); - -var testCase = require('nodeunit').testCase, - mongoO = require('../../lib/bson').pure(), - debug = require('util').debug, - inspect = require('util').inspect, - Buffer = require('buffer').Buffer, - gleak = require('../../tools/gleak'), - fs = require('fs'), - BSON = mongoO.BSON, - Code = mongoO.Code, - Binary = mongoO.Binary, - Timestamp = mongoO.Timestamp, - Long = mongoO.Long, - MongoReply = mongoO.MongoReply, - ObjectID = mongoO.ObjectID, - Symbol = mongoO.Symbol, - DBRef = mongoO.DBRef, - Double = mongoO.Double, - MinKey = mongoO.MinKey, - MaxKey = mongoO.MaxKey, - BinaryParser = mongoO.BinaryParser, - utils = require('./tools/utils'); - -var BSONSE = mongodb, - BSONDE = mongodb; - -// for tests -BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -var hexStringToBinary = function(string) { - var numberofValues = string.length / 2; - var array = ""; - - for(var i = 0; i < numberofValues; i++) { - array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); - } - return array; -} - -var assertBuffersEqual = function(test, buffer1, buffer2) { - if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); - - for(var i = 0; i < buffer1.length; i++) { - test.equal(buffer1[i], buffer2[i]); - } -} - -/** - * Module for parsing an ISO 8601 formatted string into a Date object. - */ -var ISODate = function (string) { - var match; - - if (typeof string.getTime === "function") - return string; - else if (match = string.match(/^(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|((\+|-)(\d{2}):(\d{2}))))?)?)?$/)) { - var date = new Date(); - date.setUTCFullYear(Number(match[1])); - date.setUTCMonth(Number(match[3]) - 1 || 0); - date.setUTCDate(Number(match[5]) || 0); - date.setUTCHours(Number(match[7]) || 0); - date.setUTCMinutes(Number(match[8]) || 0); - date.setUTCSeconds(Number(match[10]) || 0); - date.setUTCMilliseconds(Number("." + match[12]) * 1000 || 0); - - if (match[13] && match[13] !== "Z") { - var h = Number(match[16]) || 0, - m = Number(match[17]) || 0; - - h *= 3600000; - m *= 60000; - - var offset = h + m; - if (match[15] == "+") - offset = -offset; - - date = new Date(date.valueOf() + offset); - } - - return date; - } else - throw new Error("Invalid ISO 8601 date given.", __filename); -}; - -var _Uint8Array = null; - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.setUp = function(callback) { - _Uint8Array = global.Uint8Array; - delete global['Uint8Array']; - callback(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.tearDown = function(callback) { - global['Uint8Array'] = _Uint8Array; - callback(); -} - -// /** -// * @ignore -// */ -// exports.shouldCorrectlyDeserializeUsingTypedArray = function(test) { -// var motherOfAllDocuments = { -// 'string': '客家话', -// 'array': [1,2,3], -// 'hash': {'a':1, 'b':2}, -// 'date': new Date(), -// 'oid': new ObjectID(), -// 'binary': new Binary(new Buffer("hello")), -// 'int': 42, -// 'float': 33.3333, -// 'regexp': /regexp/, -// 'boolean': true, -// 'long': Long.fromNumber(100), -// 'where': new Code('this.a > i', {i:1}), -// 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), -// 'minkey': new MinKey(), -// 'maxkey': new MaxKey() -// } -// -// // Let's serialize it -// var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, true, false); -// // Build a typed array -// var arr = new Uint8Array(new ArrayBuffer(data.length)); -// // Iterate over all the fields and copy -// for(var i = 0; i < data.length; i++) { -// arr[i] = data[i] -// } -// -// // Deserialize the object -// var object = BSONDE.BSON.deserialize(arr); -// // Asserts -// test.equal(motherOfAllDocuments.string, object.string); -// test.deepEqual(motherOfAllDocuments.array, object.array); -// test.deepEqual(motherOfAllDocuments.date, object.date); -// test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); -// test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); -// // Assert the values of the binary -// for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { -// test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); -// } -// test.deepEqual(motherOfAllDocuments.int, object.int); -// test.deepEqual(motherOfAllDocuments.float, object.float); -// test.deepEqual(motherOfAllDocuments.regexp, object.regexp); -// test.deepEqual(motherOfAllDocuments.boolean, object.boolean); -// test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); -// test.deepEqual(motherOfAllDocuments.where, object.where); -// test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); -// test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); -// test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); -// test.deepEqual(motherOfAllDocuments.minkey, object.minkey); -// test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); -// test.done(); -// } - -/** - * @ignore - */ -exports.shouldCorrectlySerializeUsingTypedArray = function(test) { - var motherOfAllDocuments = { - 'string': 'hello', - 'array': [1,2,3], - 'hash': {'a':1, 'b':2}, - 'date': new Date(), - 'oid': new ObjectID(), - 'binary': new Binary(new Buffer("hello")), - 'int': 42, - 'float': 33.3333, - 'regexp': /regexp/, - 'boolean': true, - 'long': Long.fromNumber(100), - 'where': new Code('this.a > i', {i:1}), - 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), - 'minkey': new MinKey(), - 'maxkey': new MaxKey() - } - - // Let's serialize it - var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, false, false); - // And deserialize it again - var object = BSONSE.BSON.deserialize(data); - // Asserts - test.equal(motherOfAllDocuments.string, object.string); - test.deepEqual(motherOfAllDocuments.array, object.array); - test.deepEqual(motherOfAllDocuments.date, object.date); - test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); - // Assert the values of the binary - for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { - test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); - } - test.deepEqual(motherOfAllDocuments.int, object.int); - test.deepEqual(motherOfAllDocuments.float, object.float); - test.deepEqual(motherOfAllDocuments.regexp, object.regexp); - test.deepEqual(motherOfAllDocuments.boolean, object.boolean); - test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); - test.deepEqual(motherOfAllDocuments.where, object.where); - test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); - test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); - test.deepEqual(motherOfAllDocuments.minkey, object.minkey); - test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); - test.done(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.noGlobalsLeaked = function(test) { - var leaks = gleak.detectNew(); - test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); - test.done(); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js deleted file mode 100644 index 7481540..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_parser_comparision_test.js +++ /dev/null @@ -1,493 +0,0 @@ -var sys = require('util'), - debug = require('util').debug, - inspect = require('util').inspect, - Buffer = require('buffer').Buffer, - BSON = require('../../ext').BSON, - Buffer = require('buffer').Buffer, - BSONJS = require('../../lib/bson/bson').BSON, - BinaryParser = require('../../lib/bson/binary_parser').BinaryParser, - Long = require('../../lib/bson/long').Long, - ObjectID = require('../../lib/bson/bson').ObjectID, - Binary = require('../../lib/bson/bson').Binary, - Code = require('../../lib/bson/bson').Code, - DBRef = require('../../lib/bson/bson').DBRef, - Symbol = require('../../lib/bson/bson').Symbol, - Double = require('../../lib/bson/bson').Double, - MaxKey = require('../../lib/bson/bson').MaxKey, - MinKey = require('../../lib/bson/bson').MinKey, - Timestamp = require('../../lib/bson/bson').Timestamp, - gleak = require('../../tools/gleak'), - assert = require('assert'); - -// Long/ObjectID/Binary/Code/DbRef/Symbol/Double/Timestamp/MinKey/MaxKey -var bsonC = new BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); -var bsonJS = new BSONJS([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.setUp = function(callback) { - callback(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.tearDown = function(callback) { - callback(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize simple edge value'] = function(test) { - // Simple serialization and deserialization of edge value - var doc = {doc:0x1ffffffffffffe}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - - var doc = {doc:-0x1ffffffffffffe}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly execute toJSON'] = function(test) { - var a = Long.fromNumber(10); - assert.equal(10, a); - - var a = Long.fromNumber(9223372036854775807); - assert.equal(9223372036854775807, a); - - // Simple serialization and deserialization test for a Single String value - var doc = {doc:'Serialize'}; - var simple_string_serialized = bsonC.serialize(doc, true, false); - - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Serialize and Deserialize nested document'] = function(test) { - // Nested doc - var doc = {a:{b:{c:1}}}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Simple integer serialization/deserialization test, including testing boundary conditions'] = function(test) { - var doc = {doc:-1}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - - var doc = {doc:2147483648}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - - var doc = {doc:-2147483648}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization test for a Long value'] = function(test) { - var doc = {doc:Long.fromNumber(9223372036854775807)}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:Long.fromNumber(9223372036854775807)}, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - - var doc = {doc:Long.fromNumber(-9223372036854775807)}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:Long.fromNumber(-9223372036854775807)}, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a Float value'] = function(test) { - var doc = {doc:2222.3333}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - - var doc = {doc:-2222.3333}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a null value'] = function(test) { - var doc = {doc:null}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a boolean value'] = function(test) { - var doc = {doc:true}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a date value'] = function(test) { - var date = new Date(); - var doc = {doc:date}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')), bsonC.deserialize(simple_string_serialized)); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a boolean value'] = function(test) { - var doc = {doc:/abcd/mi}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.equal(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.toString(), bsonC.deserialize(simple_string_serialized).doc.toString()); - - var doc = {doc:/abcd/}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc, false, true)); - assert.equal(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.toString(), bsonC.deserialize(simple_string_serialized).doc.toString()); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a objectId value'] = function(test) { - var doc = {doc:new ObjectID()}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - var doc2 = {doc:ObjectID.createFromHexString(doc.doc.toHexString())}; - - assert.deepEqual(simple_string_serialized, bsonJS.serialize(doc2, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.toString(), bsonC.deserialize(simple_string_serialized).doc.toString()); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a Binary value'] = function(test) { - var binary = new Binary(); - var string = 'binstring' - for(var index = 0; index < string.length; index++) { binary.put(string.charAt(index)); } - - var simple_string_serialized = bsonC.serialize({doc:binary}, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:binary}, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.value(), bsonC.deserialize(simple_string_serialized).doc.value()); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a Binary value of type 2'] = function(test) { - var binary = new Binary(new Buffer('binstring'), Binary.SUBTYPE_BYTE_ARRAY); - var simple_string_serialized = bsonC.serialize({doc:binary}, false, true); - assert.deepEqual(simple_string_serialized, bsonJS.serialize({doc:binary}, false, true)); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized, 'binary')).doc.value(), bsonC.deserialize(simple_string_serialized).doc.value()); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a Code value'] = function(test) { - var code = new Code('this.a > i', {'i': 1}); - var simple_string_serialized_2 = bsonJS.serialize({doc:code}, false, true); - var simple_string_serialized = bsonC.serialize({doc:code}, false, true); - - assert.deepEqual(simple_string_serialized, simple_string_serialized_2); - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')).doc.scope, bsonC.deserialize(simple_string_serialized).doc.scope); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for an Object'] = function(test) { - var simple_string_serialized = bsonC.serialize({doc:{a:1, b:{c:2}}}, false, true); - var simple_string_serialized_2 = bsonJS.serialize({doc:{a:1, b:{c:2}}}, false, true); - assert.deepEqual(simple_string_serialized, simple_string_serialized_2) - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')).doc, bsonC.deserialize(simple_string_serialized).doc); - - // Simple serialization and deserialization for an Array - var simple_string_serialized = bsonC.serialize({doc:[9, 9, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1]}, false, true); - var simple_string_serialized_2 = bsonJS.serialize({doc:[9, 9, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1]}, false, true); - - assert.deepEqual(simple_string_serialized, simple_string_serialized_2) - assert.deepEqual(bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')).doc, bsonC.deserialize(simple_string_serialized).doc); - test.done(); -} - -/** - * @ignore - */ -exports['Simple serialization and deserialization for a DBRef'] = function(test) { - var oid = new ObjectID() - var oid2 = new ObjectID.createFromHexString(oid.toHexString()) - var simple_string_serialized = bsonJS.serialize({doc:new DBRef('namespace', oid2, 'integration_tests_')}, false, true); - var simple_string_serialized_2 = bsonC.serialize({doc:new DBRef('namespace', oid, 'integration_tests_')}, false, true); - - assert.deepEqual(simple_string_serialized, simple_string_serialized_2) - // Ensure we have the same values for the dbref - var object_js = bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')); - var object_c = bsonC.deserialize(simple_string_serialized); - - assert.equal(object_js.doc.namespace, object_c.doc.namespace); - assert.equal(object_js.doc.oid.toHexString(), object_c.doc.oid.toHexString()); - assert.equal(object_js.doc.db, object_c.doc.db); - test.done(); -} - -/** - * @ignore - */ -exports['Should correctly deserialize bytes array'] = function(test) { - // Serialized document - var bytes = [47,0,0,0,2,110,97,109,101,0,6,0,0,0,80,97,116,116,121,0,16,97,103,101,0,34,0,0,0,7,95,105,100,0,76,100,12,23,11,30,39,8,89,0,0,1,0]; - var serialized_data = ''; - // Convert to chars - for(var i = 0; i < bytes.length; i++) { - serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); - } - var object = bsonC.deserialize(new Buffer(serialized_data, 'binary')); - assert.equal('Patty', object.name) - assert.equal(34, object.age) - assert.equal('4c640c170b1e270859000001', object._id.toHexString()) - test.done(); -} - -/** - * @ignore - */ -exports['Serialize utf8'] = function(test) { - var doc = { "name" : "本荘由利地域に洪水警報", "name1" : "öüóőúéáűíÖÜÓŐÚÉÁŰÍ", "name2" : "abcdedede"}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - var simple_string_serialized2 = bsonJS.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, simple_string_serialized2) - - var object = bsonC.deserialize(simple_string_serialized); - assert.equal(doc.name, object.name) - assert.equal(doc.name1, object.name1) - assert.equal(doc.name2, object.name2) - test.done(); -} - -/** - * @ignore - */ -exports['Serialize object with array'] = function(test) { - var doc = {b:[1, 2, 3]}; - var simple_string_serialized = bsonC.serialize(doc, false, true); - var simple_string_serialized_2 = bsonJS.serialize(doc, false, true); - assert.deepEqual(simple_string_serialized, simple_string_serialized_2) - - var object = bsonC.deserialize(simple_string_serialized); - assert.deepEqual(doc, object) - test.done(); -} - -/** - * @ignore - */ -exports['Test equality of an object ID'] = function(test) { - var object_id = new ObjectID(); - var object_id_2 = new ObjectID(); - assert.ok(object_id.equals(object_id)); - assert.ok(!(object_id.equals(object_id_2))) - test.done(); -} - -/** - * @ignore - */ -exports['Test same serialization for Object ID'] = function(test) { - var object_id = new ObjectID(); - var object_id2 = ObjectID.createFromHexString(object_id.toString()) - var simple_string_serialized = bsonJS.serialize({doc:object_id}, false, true); - var simple_string_serialized_2 = bsonC.serialize({doc:object_id2}, false, true); - - assert.equal(simple_string_serialized_2.length, simple_string_serialized.length); - assert.deepEqual(simple_string_serialized, simple_string_serialized_2) - var object = bsonJS.deserialize(new Buffer(simple_string_serialized_2, 'binary')); - var object2 = bsonC.deserialize(simple_string_serialized); - assert.equal(object.doc.id, object2.doc.id) - test.done(); -} - -/** - * @ignore - */ -exports['Complex object serialization'] = function(test) { - // JS Object - var c1 = { _id: new ObjectID, comments: [], title: 'number 1' }; - var c2 = { _id: new ObjectID, comments: [], title: 'number 2' }; - var doc = { - numbers: [] - , owners: [] - , comments: [c1, c2] - , _id: new ObjectID - }; - - var simple_string_serialized = bsonJS.serialize(doc, false, true); - - // C++ Object - var c1 = { _id: ObjectID.createFromHexString(c1._id.toHexString()), comments: [], title: 'number 1' }; - var c2 = { _id: ObjectID.createFromHexString(c2._id.toHexString()), comments: [], title: 'number 2' }; - var doc = { - numbers: [] - , owners: [] - , comments: [c1, c2] - , _id: ObjectID.createFromHexString(doc._id.toHexString()) - }; - - var simple_string_serialized_2 = bsonC.serialize(doc, false, true); - - for(var i = 0; i < simple_string_serialized_2.length; i++) { - // debug(i + "[" + simple_string_serialized_2[i] + "] = [" + simple_string_serialized[i] + "]") - assert.equal(simple_string_serialized_2[i], simple_string_serialized[i]); - } - - var doc1 = bsonJS.deserialize(new Buffer(simple_string_serialized_2)); - var doc2 = bsonC.deserialize(new Buffer(simple_string_serialized_2)); - assert.equal(doc._id.id, doc1._id.id) - assert.equal(doc._id.id, doc2._id.id) - assert.equal(doc1._id.id, doc2._id.id) - - var doc = { - _id: 'testid', - key1: { code: 'test1', time: {start:1309323402727,end:1309323402727}, x:10, y:5 }, - key2: { code: 'test1', time: {start:1309323402727,end:1309323402727}, x:10, y:5 } - }; - - var simple_string_serialized = bsonJS.serialize(doc, false, true); - var simple_string_serialized_2 = bsonC.serialize(doc, false, true); - test.done(); -} - -/** - * @ignore - */ -exports['Serialize function'] = function(test) { - var doc = { - _id: 'testid', - key1: function() {} - } - - var simple_string_serialized = bsonJS.serialize(doc, false, true, true); - var simple_string_serialized_2 = bsonC.serialize(doc, false, true, true); - - // Deserialize the string - var doc1 = bsonJS.deserialize(new Buffer(simple_string_serialized_2)); - var doc2 = bsonC.deserialize(new Buffer(simple_string_serialized_2)); - assert.equal(doc1.key1.code.toString(), doc2.key1.code.toString()) - test.done(); -} - -/** - * @ignore - */ -exports['Serialize document with special operators'] = function(test) { - var doc = {"user_id":"4e9fc8d55883d90100000003","lc_status":{"$ne":"deleted"},"owner_rating":{"$exists":false}}; - var simple_string_serialized = bsonJS.serialize(doc, false, true, true); - var simple_string_serialized_2 = bsonC.serialize(doc, false, true, true); - - // Should serialize to the same value - assert.equal(simple_string_serialized_2.toString('base64'), simple_string_serialized.toString('base64')) - var doc1 = bsonJS.deserialize(simple_string_serialized_2); - var doc2 = bsonC.deserialize(simple_string_serialized); - assert.deepEqual(doc1, doc2) - test.done(); -} - -/** - * @ignore - */ -exports['Create ObjectID from hex string'] = function(test) { - // Hex Id - var hexId = new ObjectID().toString(); - var docJS = {_id: ObjectID.createFromHexString(hexId), 'funds.remaining': {$gte: 1.222}, 'transactions.id': {$ne: ObjectID.createFromHexString(hexId)}}; - var docC = {_id: ObjectID.createFromHexString(hexId), 'funds.remaining': {$gte: 1.222}, 'transactions.id': {$ne: ObjectID.createFromHexString(hexId)}}; - var docJSBin = bsonJS.serialize(docJS, false, true, true); - var docCBin = bsonC.serialize(docC, false, true, true); - assert.equal(docCBin.toString('base64'), docJSBin.toString('base64')); - test.done(); -} - -/** - * @ignore - */ -exports['Serialize big complex document'] = function(test) { - // Complex document serialization - var doc = {"DateTime": "Tue Nov 40 2011 17:27:55 GMT+0000 (WEST)","isActive": true,"Media": {"URL": "http://videos.sapo.pt/Tc85NsjaKjj8o5aV7Ubb"},"Title": "Lisboa fecha a ganhar 0.19%","SetPosition": 60,"Type": "videos","Thumbnail": [{"URL": "http://rd3.videos.sapo.pt/Tc85NsjaKjj8o5aV7Ubb/pic/320x240","Dimensions": {"Height": 240,"Width": 320}}],"Source": {"URL": "http://videos.sapo.pt","SetID": "1288","SourceID": "http://videos.sapo.pt/tvnet/rss2","SetURL": "http://noticias.sapo.pt/videos/tv-net_1288/","ItemID": "Tc85NsjaKjj8o5aV7Ubb","Name": "SAPO Vídeos"},"Category": "Tec_ciencia","Description": "Lisboa fecha a ganhar 0.19%","GalleryID": new ObjectID("4eea2a634ce8573200000000"),"InternalRefs": {"RegisterDate": "Thu Dec 15 2011 17:12:51 GMT+0000 (WEST)","ChangeDate": "Thu Dec 15 2011 17:12:51 GMT+0000 (WEST)","Hash": 332279244514},"_id": new ObjectID("4eea2a96e52778160000003a")} - var docJSBin = bsonJS.serialize(doc, false, true, true); - var docCBin = bsonC.serialize(doc, false, true, true); - assert.equal(docCBin.toString('base64'), docJSBin.toString('base64')); - test.done(); -} - -/** - * @ignore - */ -exports['Should error out due to 24 characters but not valid hexstring for ObjectID'] = function(test) { - try { - var oid = new ObjectID("tttttttttttttttttttttttt"); - test.ok(false); - } catch(err) {} - - test.done(); -} - - -/** - * @ignore - */ -exports.noGlobalsLeaked = function(test) { - var leaks = gleak.detectNew(); - test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); - test.done(); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js deleted file mode 100644 index 9eb5756..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_test.js +++ /dev/null @@ -1,1694 +0,0 @@ -var mongodb = process.env['TEST_NATIVE'] != null ? require('../../lib/bson').native() : require('../../lib/bson').pure(); - -var testCase = require('nodeunit').testCase, - mongoO = require('../../lib/bson').pure(), - Buffer = require('buffer').Buffer, - gleak = require('../../tools/gleak'), - fs = require('fs'), - BSON = mongoO.BSON, - Code = mongoO.Code, - Binary = mongoO.Binary, - Timestamp = mongoO.Timestamp, - Long = mongoO.Long, - MongoReply = mongoO.MongoReply, - ObjectID = mongoO.ObjectID, - ObjectId = mongoO.ObjectId, - Symbol = mongoO.Symbol, - DBRef = mongoO.DBRef, - Double = mongoO.Double, - MinKey = mongoO.MinKey, - MaxKey = mongoO.MaxKey, - BinaryParser = mongoO.BinaryParser, - vm = require('vm'); - -var BSONSE = mongodb, - BSONDE = mongodb; - -// for tests -BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -var hexStringToBinary = function(string) { - var numberofValues = string.length / 2; - var array = ""; - - for(var i = 0; i < numberofValues; i++) { - array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); - } - return array; -} - -var assertBuffersEqual = function(test, buffer1, buffer2) { - if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); - - for(var i = 0; i < buffer1.length; i++) { - test.equal(buffer1[i], buffer2[i]); - } -} - -/** - * Module for parsing an ISO 8601 formatted string into a Date object. - */ -var ISODate = function (string) { - var match; - - if (typeof string.getTime === "function") - return string; - else if (match = string.match(/^(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|((\+|-)(\d{2}):(\d{2}))))?)?)?$/)) { - var date = new Date(); - date.setUTCFullYear(Number(match[1])); - date.setUTCMonth(Number(match[3]) - 1 || 0); - date.setUTCDate(Number(match[5]) || 0); - date.setUTCHours(Number(match[7]) || 0); - date.setUTCMinutes(Number(match[8]) || 0); - date.setUTCSeconds(Number(match[10]) || 0); - date.setUTCMilliseconds(Number("." + match[12]) * 1000 || 0); - - if (match[13] && match[13] !== "Z") { - var h = Number(match[16]) || 0, - m = Number(match[17]) || 0; - - h *= 3600000; - m *= 60000; - - var offset = h + m; - if (match[15] == "+") - offset = -offset; - - date = new Date(date.valueOf() + offset); - } - - return date; - } else - throw new Error("Invalid ISO 8601 date given.", __filename); -}; - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.setUp = function(callback) { - callback(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.tearDown = function(callback) { - callback(); -} - -/** - * @ignore - */ -exports['Should Correctly create ObjectID and do deep equals'] = function(test) { - var test_string = {hello: new ObjectID()}; - test_string.hello.toHexString(); - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_string, false, true); - test.deepEqual(test_string, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly get BSON types from require'] = function(test) { - var _mongodb = require('../../lib/bson'); - test.ok(_mongodb.ObjectID === ObjectID); - test.ok(_mongodb.Binary === Binary); - test.ok(_mongodb.Long === Long); - test.ok(_mongodb.Timestamp === Timestamp); - test.ok(_mongodb.Code === Code); - test.ok(_mongodb.DBRef === DBRef); - test.ok(_mongodb.Symbol === Symbol); - test.ok(_mongodb.MinKey === MinKey); - test.ok(_mongodb.MaxKey === MaxKey); - test.ok(_mongodb.Double === Double); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Deserialize object'] = function(test) { - var bytes = [95,0,0,0,2,110,115,0,42,0,0,0,105,110,116,101,103,114,97,116,105,111,110,95,116,101,115,116,115,95,46,116,101,115,116,95,105,110,100,101,120,95,105,110,102,111,114,109,97,116,105,111,110,0,8,117,110,105,113,117,101,0,0,3,107,101,121,0,12,0,0,0,16,97,0,1,0,0,0,0,2,110,97,109,101,0,4,0,0,0,97,95,49,0,0]; - var serialized_data = ''; - // Convert to chars - for(var i = 0; i < bytes.length; i++) { - serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); - } - - var object = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(new Buffer(serialized_data, 'binary')); - test.equal("a_1", object.name); - test.equal(false, object.unique); - test.equal(1, object.key.a); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Deserialize object with all types'] = function(test) { - var bytes = [26,1,0,0,7,95,105,100,0,161,190,98,75,118,169,3,0,0,3,0,0,4,97,114,114,97,121,0,26,0,0,0,16,48,0,1,0,0,0,16,49,0,2,0,0,0,16,50,0,3,0,0,0,0,2,115,116,114,105,110,103,0,6,0,0,0,104,101,108,108,111,0,3,104,97,115,104,0,19,0,0,0,16,97,0,1,0,0,0,16,98,0,2,0,0,0,0,9,100,97,116,101,0,161,190,98,75,0,0,0,0,7,111,105,100,0,161,190,98,75,90,217,18,0,0,1,0,0,5,98,105,110,97,114,121,0,7,0,0,0,2,3,0,0,0,49,50,51,16,105,110,116,0,42,0,0,0,1,102,108,111,97,116,0,223,224,11,147,169,170,64,64,11,114,101,103,101,120,112,0,102,111,111,98,97,114,0,105,0,8,98,111,111,108,101,97,110,0,1,15,119,104,101,114,101,0,25,0,0,0,12,0,0,0,116,104,105,115,46,120,32,61,61,32,51,0,5,0,0,0,0,3,100,98,114,101,102,0,37,0,0,0,2,36,114,101,102,0,5,0,0,0,116,101,115,116,0,7,36,105,100,0,161,190,98,75,2,180,1,0,0,2,0,0,0,10,110,117,108,108,0,0]; - var serialized_data = ''; - // Convert to chars - for(var i = 0; i < bytes.length; i++) { - serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); - } - - var object = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(new Buffer(serialized_data, 'binary'));//, false, true); - // Perform tests - test.equal("hello", object.string); - test.deepEqual([1,2,3], object.array); - test.equal(1, object.hash.a); - test.equal(2, object.hash.b); - test.ok(object.date != null); - test.ok(object.oid != null); - test.ok(object.binary != null); - test.equal(42, object.int); - test.equal(33.3333, object.float); - test.ok(object.regexp != null); - test.equal(true, object.boolean); - test.ok(object.where != null); - test.ok(object.dbref != null); - test.ok(object[null] == null); - test.done(); -} - -/** - * @ignore - */ -exports['Should Serialize and Deserialize String'] = function(test) { - var test_string = {hello: 'world'}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_string, false, true); - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_string)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_string, false, serialized_data2, 0); - - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - test.deepEqual(test_string, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Serialize and Deserialize Empty String'] = function(test) { - var test_string = {hello: ''}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_string, false, true); - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_string)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_string, false, serialized_data2, 0); - - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - test.deepEqual(test_string, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { - var test_number = {doc: 5}; - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_number, false, true); - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_number)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_number, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - test.deepEqual(test_number, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); - test.deepEqual(test_number, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data2)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize null value'] = function(test) { - var test_null = {doc:null}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_null, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_null)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_null, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var object = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.equal(null, object.doc); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Number'] = function(test) { - var test_number = {doc: 5.5}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_number, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_number)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_number, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.deepEqual(test_number, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { - var test_int = {doc: 42}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); - - test_int = {doc: -5600}; - serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); - - test_int = {doc: 2147483647}; - serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); - - test_int = {doc: -2147483648}; - serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - test.deepEqual(test_int.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Object'] = function(test) { - var doc = {doc: {age: 42, name: 'Spongebob', shoe_size: 9.5}}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.deepEqual(doc.doc.age, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.age); - test.deepEqual(doc.doc.name, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.name); - test.deepEqual(doc.doc.shoe_size, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.shoe_size); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Array'] = function(test) { - var doc = {doc: [1, 2, 'a', 'b']}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.equal(doc.doc[0], deserialized.doc[0]) - test.equal(doc.doc[1], deserialized.doc[1]) - test.equal(doc.doc[2], deserialized.doc[2]) - test.equal(doc.doc[3], deserialized.doc[3]) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Array with added on functions'] = function(test) { - Array.prototype.toXml = function() {}; - var doc = {doc: [1, 2, 'a', 'b']}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.equal(doc.doc[0], deserialized.doc[0]) - test.equal(doc.doc[1], deserialized.doc[1]) - test.equal(doc.doc[2], deserialized.doc[2]) - test.equal(doc.doc[3], deserialized.doc[3]) - test.done(); -} - -/** - * @ignore - */ -exports['Should correctly deserialize a nested object'] = function(test) { - var doc = {doc: {doc:1}}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.deepEqual(doc.doc.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.doc); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize A Boolean'] = function(test) { - var doc = {doc: true}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.equal(doc.doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a Date'] = function(test) { - var date = new Date(); - //(2009, 11, 12, 12, 00, 30) - date.setUTCDate(12); - date.setUTCFullYear(2009); - date.setUTCMonth(11 - 1); - date.setUTCHours(12); - date.setUTCMinutes(0); - date.setUTCSeconds(30); - var doc = {doc: date}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.equal(doc.date, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.date); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a Date from another VM'] = function(test) { - var script = "date1 = new Date();", - ctx = vm.createContext({ - date1 : null - }); - vm.runInContext(script, ctx, 'myfile.vm'); - - var date = ctx.date1; - //(2009, 11, 12, 12, 00, 30) - date.setUTCDate(12); - date.setUTCFullYear(2009); - date.setUTCMonth(11 - 1); - date.setUTCHours(12); - date.setUTCMinutes(0); - date.setUTCSeconds(30); - var doc = {doc: date}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.equal(doc.date, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc.date); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize nested doc'] = function(test) { - var doc = { - string: "Strings are great", - decimal: 3.14159265, - bool: true, - integer: 5, - - subObject: { - moreText: "Bacon ipsum dolor.", - longKeylongKeylongKeylongKeylongKeylongKey: "Pork belly." - }, - - subArray: [1,2,3,4,5,6,7,8,9,10], - anotherString: "another string" - } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Oid'] = function(test) { - var doc = {doc: new ObjectID()}; - var doc2 = {doc: ObjectID.createFromHexString(doc.doc.toHexString())}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.deepEqual(doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly encode Empty Hash'] = function(test) { - var doc = {}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - test.deepEqual(doc, new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Ordered Hash'] = function(test) { - var doc = {doc: {b:1, a:2, c:3, d:4}}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var decoded_hash = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data).doc; - var keys = []; - - for(var name in decoded_hash) keys.push(name); - test.deepEqual(['b', 'a', 'c', 'd'], keys); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Regular Expression'] = function(test) { - // Serialize the regular expression - var doc = {doc: /foobar/mi}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(doc.doc.toString(), doc2.doc.toString()); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a Binary object'] = function(test) { - var bin = new Binary(); - var string = 'binstring'; - for(var index = 0; index < string.length; index++) { - bin.put(string.charAt(index)); - } - - var doc = {doc: bin}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a Type 2 Binary object'] = function(test) { - var bin = new Binary(new Buffer('binstring'), Binary.SUBTYPE_BYTE_ARRAY); - var string = 'binstring'; - for(var index = 0; index < string.length; index++) { - bin.put(string.charAt(index)); - } - - var doc = {doc: bin}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a big Binary object'] = function(test) { - var data = fs.readFileSync("test/node/data/test_gs_weird_bug.png", 'binary'); - var bin = new Binary(); - bin.write(data); - var doc = {doc: bin}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); - test.done(); -} - -/** - * @ignore - */ -exports["Should Correctly Serialize and Deserialize DBRef"] = function(test) { - var oid = new ObjectID(); - var doc = {dbref: new DBRef('namespace', oid, null)}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.equal("namespace", doc2.dbref.namespace); - test.deepEqual(doc2.dbref.oid.toHexString(), oid.toHexString()); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize partial DBRef'] = function(test) { - var id = new ObjectID(); - var doc = {'name':'something', 'user':{'$ref':'username', '$id': id}}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.equal('something', doc2.name); - test.equal('username', doc2.user.namespace); - test.equal(id.toString(), doc2.user.oid.toString()); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize simple Int'] = function(test) { - var doc = {doc:2147483648}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.doc, doc2.doc) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Long Integer'] = function(test) { - var doc = {doc: Long.fromNumber(9223372036854775807)}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.doc, deserialized_data.doc); - - doc = {doc: Long.fromNumber(-9223372036854775)}; - serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.doc, deserialized_data.doc); - - doc = {doc: Long.fromNumber(-9223372036854775809)}; - serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.doc, deserialized_data.doc); - test.done(); -} - -/** - * @ignore - */ -exports['Should Deserialize Large Integers as Number not Long'] = function(test) { - function roundTrip(val) { - var doc = {doc: val}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.doc, deserialized_data.doc); - }; - - roundTrip(Math.pow(2,52)); - roundTrip(Math.pow(2,53) - 1); - roundTrip(Math.pow(2,53)); - roundTrip(-Math.pow(2,52)); - roundTrip(-Math.pow(2,53) + 1); - roundTrip(-Math.pow(2,53)); - roundTrip(Math.pow(2,65)); // Too big for Long. - roundTrip(-Math.pow(2,65)); - roundTrip(9223372036854775807); - roundTrip(1234567890123456800); // Bigger than 2^53, stays a double. - roundTrip(-1234567890123456800); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Long Integer and Timestamp as different types'] = function(test) { - var long = Long.fromNumber(9223372036854775807); - var timestamp = Timestamp.fromNumber(9223372036854775807); - test.ok(long instanceof Long); - test.ok(!(long instanceof Timestamp)); - test.ok(timestamp instanceof Timestamp); - test.ok(!(timestamp instanceof Long)); - - var test_int = {doc: long, doc2: timestamp}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(test_int, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(test_int)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(test_int, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(test_int.doc, deserialized_data.doc); - test.done(); -} - -/** - * @ignore - */ -exports['Should Always put the id as the first item in a hash'] = function(test) { - var hash = {doc: {not_id:1, '_id':2}}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(hash, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(hash)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(hash, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - var keys = []; - - for(var name in deserialized_data.doc) { - keys.push(name); - } - - test.deepEqual(['not_id', '_id'], keys); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a User defined Binary object'] = function(test) { - var bin = new Binary(); - bin.sub_type = BSON.BSON_BINARY_SUBTYPE_USER_DEFINED; - var string = 'binstring'; - for(var index = 0; index < string.length; index++) { - bin.put(string.charAt(index)); - } - - var doc = {doc: bin}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(deserialized_data.doc.sub_type, BSON.BSON_BINARY_SUBTYPE_USER_DEFINED); - test.deepEqual(doc.doc.value(), deserialized_data.doc.value()); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correclty Serialize and Deserialize a Code object'] = function(test) { - var doc = {'doc': {'doc2': new Code('this.a > i', {i:1})}}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.doc.doc2.code, deserialized_data.doc.doc2.code); - test.deepEqual(doc.doc.doc2.scope.i, deserialized_data.doc.doc2.scope.i); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly serialize and deserialize and embedded array'] = function(test) { - var doc = {'a':0, - 'b':['tmp1', 'tmp2', 'tmp3', 'tmp4', 'tmp5', 'tmp6', 'tmp7', 'tmp8', 'tmp9', 'tmp10', 'tmp11', 'tmp12', 'tmp13', 'tmp14', 'tmp15', 'tmp16'] - }; - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.a, deserialized_data.a); - test.deepEqual(doc.b, deserialized_data.b); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize UTF8'] = function(test) { - // Serialize utf8 - var doc = { "name" : "本荘由利地域に洪水警報", "name1" : "öüóőúéáűíÖÜÓŐÚÉÁŰÍ", "name2" : "abcdedede"}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc, deserialized_data); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize query object'] = function(test) { - var doc = { count: 'remove_with_no_callback_bug_test', query: {}, fields: null}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc, deserialized_data); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize empty query object'] = function(test) { - var doc = {}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc, deserialized_data); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize array based doc'] = function(test) { - var doc = { b: [ 1, 2, 3 ], _id: new ObjectID() }; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.b, deserialized_data.b) - test.deepEqual(doc, deserialized_data); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Symbol'] = function(test) { - if(Symbol != null) { - var doc = { b: [ new Symbol('test') ]}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc.b, deserialized_data.b) - test.deepEqual(doc, deserialized_data); - test.ok(deserialized_data.b[0] instanceof Symbol); - } - - test.done(); -} - -/** - * @ignore - */ -exports['Should handle Deeply nested document'] = function(test) { - var doc = {a:{b:{c:{d:2}}}}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var deserialized_data = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc, deserialized_data); - test.done(); -} - -/** - * @ignore - */ -exports['Should handle complicated all typed object'] = function(test) { - // First doc - var date = new Date(); - var oid = new ObjectID(); - var string = 'binstring' - var bin = new Binary() - for(var index = 0; index < string.length; index++) { - bin.put(string.charAt(index)) - } - - var doc = { - 'string': 'hello', - 'array': [1,2,3], - 'hash': {'a':1, 'b':2}, - 'date': date, - 'oid': oid, - 'binary': bin, - 'int': 42, - 'float': 33.3333, - 'regexp': /regexp/, - 'boolean': true, - 'long': date.getTime(), - 'where': new Code('this.a > i', {i:1}), - 'dbref': new DBRef('namespace', oid, 'integration_tests_') - } - - // Second doc - var oid = new ObjectID.createFromHexString(oid.toHexString()); - var string = 'binstring' - var bin = new Binary() - for(var index = 0; index < string.length; index++) { - bin.put(string.charAt(index)) - } - - var doc2 = { - 'string': 'hello', - 'array': [1,2,3], - 'hash': {'a':1, 'b':2}, - 'date': date, - 'oid': oid, - 'binary': bin, - 'int': 42, - 'float': 33.3333, - 'regexp': /regexp/, - 'boolean': true, - 'long': date.getTime(), - 'where': new Code('this.a > i', {i:1}), - 'dbref': new DBRef('namespace', oid, 'integration_tests_') - } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); - - for(var i = 0; i < serialized_data2.length; i++) { - require('assert').equal(serialized_data2[i], serialized_data[i]) - } - - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize Complex Nested Object'] = function(test) { - var doc = { email: 'email@email.com', - encrypted_password: 'password', - friends: [ '4db96b973d01205364000006', - '4dc77b24c5ba38be14000002' ], - location: [ 72.4930088, 23.0431957 ], - name: 'Amit Kumar', - password_salt: 'salty', - profile_fields: [], - username: 'amit', - _id: new ObjectID() } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = doc; - doc2._id = ObjectID.createFromHexString(doc2._id.toHexString()); - var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); - - for(var i = 0; i < serialized_data2.length; i++) { - require('assert').equal(serialized_data2[i], serialized_data[i]) - } - - test.done(); -} - -/** - * @ignore - */ -exports['Should correctly massive doc'] = function(test) { - var oid1 = new ObjectID(); - var oid2 = new ObjectID(); - - // JS doc - var doc = { dbref2: new DBRef('namespace', oid1, 'integration_tests_'), - _id: oid2 }; - - var doc2 = { dbref2: new DBRef('namespace', ObjectID.createFromHexString(oid1.toHexString()), 'integration_tests_'), - _id: new ObjectID.createFromHexString(oid2.toHexString()) }; - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize/Deserialize regexp object'] = function(test) { - var doc = {'b':/foobaré/}; - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var serialized_data2 = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - for(var i = 0; i < serialized_data2.length; i++) { - require('assert').equal(serialized_data2[i], serialized_data[i]) - } - - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize/Deserialize complicated object'] = function(test) { - var doc = {a:{b:{c:[new ObjectID(), new ObjectID()]}}, d:{f:1332.3323}}; - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(doc, doc2) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize/Deserialize nested object'] = function(test) { - var doc = { "_id" : { "date" : new Date(), "gid" : "6f35f74d2bea814e21000000" }, - "value" : { - "b" : { "countries" : { "--" : 386 }, "total" : 1599 }, - "bc" : { "countries" : { "--" : 3 }, "total" : 10 }, - "gp" : { "countries" : { "--" : 2 }, "total" : 13 }, - "mgc" : { "countries" : { "--" : 2 }, "total" : 14 } - } - } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(doc, doc2) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize/Deserialize nested object with even more nesting'] = function(test) { - var doc = { "_id" : { "date" : {a:1, b:2, c:new Date()}, "gid" : "6f35f74d2bea814e21000000" }, - "value" : { - "b" : { "countries" : { "--" : 386 }, "total" : 1599 }, - "bc" : { "countries" : { "--" : 3 }, "total" : 10 }, - "gp" : { "countries" : { "--" : 2 }, "total" : 13 }, - "mgc" : { "countries" : { "--" : 2 }, "total" : 14 } - } - } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual(doc, doc2) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize empty name object'] = function(test) { - var doc = {'':'test', - 'bbbb':1}; - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.equal(doc2[''], 'test'); - test.equal(doc2['bbbb'], 1); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly handle Forced Doubles to ensure we allocate enough space for cap collections'] = function(test) { - if(Double != null) { - var doubleValue = new Double(100); - var doc = {value:doubleValue}; - - // Serialize - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual({value:100}, doc2); - } - - test.done(); -} - -/** - * @ignore - */ -exports['Should deserialize correctly'] = function(test) { - var doc = { - "_id" : new ObjectID("4e886e687ff7ef5e00000162"), - "str" : "foreign", - "type" : 2, - "timestamp" : ISODate("2011-10-02T14:00:08.383Z"), - "links" : [ - "http://www.reddit.com/r/worldnews/comments/kybm0/uk_home_secretary_calls_for_the_scrapping_of_the/" - ] - } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(doc, doc2) - test.done(); -} - -/** - * @ignore - */ -exports['Should correctly serialize and deserialize MinKey and MaxKey values'] = function(test) { - var doc = { - _id : new ObjectID("4e886e687ff7ef5e00000162"), - minKey : new MinKey(), - maxKey : new MaxKey() - } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.deepEqual(doc, doc2) - test.ok(doc2.minKey instanceof MinKey); - test.ok(doc2.maxKey instanceof MaxKey); - test.done(); -} - -/** - * @ignore - */ -exports['Should correctly serialize Double value'] = function(test) { - var doc = { - value : new Double(34343.2222) - } - - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); - new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); - assertBuffersEqual(test, serialized_data, serialized_data2, 0); - var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - - test.ok(doc.value.valueOf(), doc2.value); - test.ok(doc.value.value, doc2.value); - test.done(); -} - -/** - * @ignore - */ -exports['ObjectID should correctly create objects'] = function(test) { - try { - var object1 = ObjectID.createFromHexString('000000000000000000000001') - var object2 = ObjectID.createFromHexString('00000000000000000000001') - test.ok(false); - } catch(err) { - test.ok(err != null); - } - - test.done(); -} - -/** - * @ignore - */ -exports['ObjectID should correctly retrieve timestamp'] = function(test) { - var testDate = new Date(); - var object1 = new ObjectID(); - test.equal(Math.floor(testDate.getTime()/1000), Math.floor(object1.getTimestamp().getTime()/1000)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly throw error on bsonparser errors'] = function(test) { - var data = new Buffer(3); - var parser = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); - - // Catch to small buffer error - try { - parser.deserialize(data); - test.ok(false); - } catch(err) {} - - data = new Buffer(5); - data[0] = 0xff; - data[1] = 0xff; - // Catch illegal size - try { - parser.deserialize(data); - test.ok(false); - } catch(err) {} - - // Finish up - test.done(); -} - -/** - * A simple example showing the usage of BSON.calculateObjectSize function returning the number of BSON bytes a javascript object needs. - * - * @_class bson - * @_function BSON.calculateObjectSize - * @ignore - */ -exports['Should correctly calculate the size of a given javascript object'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){}} - // Calculate the size of the object without serializing the function - var size = BSON.calculateObjectSize(doc, false); - test.equal(12, size); - // Calculate the size of the object serializing the function - size = BSON.calculateObjectSize(doc, true); - // Validate the correctness - test.equal(36, size); - test.done(); -} - -/** - * A simple example showing the usage of BSON.calculateObjectSize function returning the number of BSON bytes a javascript object needs. - * - * @_class bson - * @_function calculateObjectSize - * @ignore - */ -exports['Should correctly calculate the size of a given javascript object using instance method'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){}} - // Create a BSON parser instance - var bson = new BSON(); - // Calculate the size of the object without serializing the function - var size = bson.calculateObjectSize(doc, false); - test.equal(12, size); - // Calculate the size of the object serializing the function - size = bson.calculateObjectSize(doc, true); - // Validate the correctness - test.equal(36, size); - test.done(); -} - -/** - * A simple example showing the usage of BSON.serializeWithBufferAndIndex function. - * - * @_class bson - * @_function BSON.serializeWithBufferAndIndex - * @ignore - */ -exports['Should correctly serializeWithBufferAndIndex a given javascript object'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){}} - // Calculate the size of the document, no function serialization - var size = BSON.calculateObjectSize(doc, false); - // Allocate a buffer - var buffer = new Buffer(size); - // Serialize the object to the buffer, checking keys and not serializing functions - var index = BSON.serializeWithBufferAndIndex(doc, true, buffer, 0, false); - // Validate the correctness - test.equal(12, size); - test.equal(11, index); - - // Serialize with functions - // Calculate the size of the document, no function serialization - var size = BSON.calculateObjectSize(doc, true); - // Allocate a buffer - var buffer = new Buffer(size); - // Serialize the object to the buffer, checking keys and not serializing functions - var index = BSON.serializeWithBufferAndIndex(doc, true, buffer, 0, true); - // Validate the correctness - test.equal(36, size); - test.equal(35, index); - test.done(); -} - -/** - * A simple example showing the usage of BSON.serializeWithBufferAndIndex function. - * - * @_class bson - * @_function serializeWithBufferAndIndex - * @ignore - */ -exports['Should correctly serializeWithBufferAndIndex a given javascript object using a BSON instance'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){}} - // Create a BSON parser instance - var bson = new BSON(); - // Calculate the size of the document, no function serialization - var size = bson.calculateObjectSize(doc, false); - // Allocate a buffer - var buffer = new Buffer(size); - // Serialize the object to the buffer, checking keys and not serializing functions - var index = bson.serializeWithBufferAndIndex(doc, true, buffer, 0, false); - // Validate the correctness - test.equal(12, size); - test.equal(11, index); - - // Serialize with functions - // Calculate the size of the document, no function serialization - var size = bson.calculateObjectSize(doc, true); - // Allocate a buffer - var buffer = new Buffer(size); - // Serialize the object to the buffer, checking keys and not serializing functions - var index = bson.serializeWithBufferAndIndex(doc, true, buffer, 0, true); - // Validate the correctness - test.equal(36, size); - test.equal(35, index); - test.done(); -} - -/** - * A simple example showing the usage of BSON.serialize function returning serialized BSON Buffer object. - * - * @_class bson - * @_function BSON.serialize - * @ignore - */ -exports['Should correctly serialize a given javascript object'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){}} - // Serialize the object to a buffer, checking keys and not serializing functions - var buffer = BSON.serialize(doc, true, true, false); - // Validate the correctness - test.equal(12, buffer.length); - - // Serialize the object to a buffer, checking keys and serializing functions - var buffer = BSON.serialize(doc, true, true, true); - // Validate the correctness - test.equal(36, buffer.length); - test.done(); -} - -/** - * A simple example showing the usage of BSON.serialize function returning serialized BSON Buffer object. - * - * @_class bson - * @_function serialize - * @ignore - */ -exports['Should correctly serialize a given javascript object using a bson instance'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){}} - // Create a BSON parser instance - var bson = new BSON(); - // Serialize the object to a buffer, checking keys and not serializing functions - var buffer = bson.serialize(doc, true, true, false); - // Validate the correctness - test.equal(12, buffer.length); - - // Serialize the object to a buffer, checking keys and serializing functions - var buffer = bson.serialize(doc, true, true, true); - // Validate the correctness - test.equal(36, buffer.length); - test.done(); -} - -/** - * A simple example showing the usage of BSON.deserialize function returning a deserialized Javascript function. - * - * @_class bson - * @_function BSON.deserialize - * @ignore - */ - exports['Should correctly deserialize a buffer using the BSON class level parser'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){ console.log('hello world'); }} - // Serialize the object to a buffer, checking keys and serializing functions - var buffer = BSON.serialize(doc, true, true, true); - // Validate the correctness - test.equal(65, buffer.length); - - // Deserialize the object with no eval for the functions - var deserializedDoc = BSON.deserialize(buffer); - // Validate the correctness - test.equal('object', typeof deserializedDoc.func); - test.equal(1, deserializedDoc.a); - - // Deserialize the object with eval for the functions caching the functions - deserializedDoc = BSON.deserialize(buffer, {evalFunctions:true, cacheFunctions:true}); - // Validate the correctness - test.equal('function', typeof deserializedDoc.func); - test.equal(1, deserializedDoc.a); - test.done(); -} - -/** - * A simple example showing the usage of BSON instance deserialize function returning a deserialized Javascript function. - * - * @_class bson - * @_function deserialize - * @ignore - */ -exports['Should correctly deserialize a buffer using the BSON instance parser'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){ console.log('hello world'); }} - // Create a BSON parser instance - var bson = new BSON(); - // Serialize the object to a buffer, checking keys and serializing functions - var buffer = bson.serialize(doc, true, true, true); - // Validate the correctness - test.equal(65, buffer.length); - - // Deserialize the object with no eval for the functions - var deserializedDoc = bson.deserialize(buffer); - // Validate the correctness - test.equal('object', typeof deserializedDoc.func); - test.equal(1, deserializedDoc.a); - - // Deserialize the object with eval for the functions caching the functions - deserializedDoc = bson.deserialize(buffer, {evalFunctions:true, cacheFunctions:true}); - // Validate the correctness - test.equal('function', typeof deserializedDoc.func); - test.equal(1, deserializedDoc.a); - test.done(); -} - -/** - * A simple example showing the usage of BSON.deserializeStream function returning deserialized Javascript objects. - * - * @_class bson - * @_function BSON.deserializeStream - * @ignore - */ -exports['Should correctly deserializeStream a buffer object'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){ console.log('hello world'); }} - // Serialize the object to a buffer, checking keys and serializing functions - var buffer = BSON.serialize(doc, true, true, true); - // Validate the correctness - test.equal(65, buffer.length); - - // The array holding the number of retuned documents - var documents = new Array(1); - // Deserialize the object with no eval for the functions - var index = BSON.deserializeStream(buffer, 0, 1, documents, 0); - // Validate the correctness - test.equal(65, index); - test.equal(1, documents.length); - test.equal(1, documents[0].a); - test.equal('object', typeof documents[0].func); - - // Deserialize the object with eval for the functions caching the functions - // The array holding the number of retuned documents - var documents = new Array(1); - // Deserialize the object with no eval for the functions - var index = BSON.deserializeStream(buffer, 0, 1, documents, 0, {evalFunctions:true, cacheFunctions:true}); - // Validate the correctness - test.equal(65, index); - test.equal(1, documents.length); - test.equal(1, documents[0].a); - test.equal('function', typeof documents[0].func); - test.done(); -} - -/** - * A simple example showing the usage of BSON instance deserializeStream function returning deserialized Javascript objects. - * - * @_class bson - * @_function deserializeStream - * @ignore - */ -exports['Should correctly deserializeStream a buffer object'] = function(test) { - // Create a simple object - var doc = {a: 1, func:function(){ console.log('hello world'); }} - // Create a BSON parser instance - var bson = new BSON(); - // Serialize the object to a buffer, checking keys and serializing functions - var buffer = bson.serialize(doc, true, true, true); - // Validate the correctness - test.equal(65, buffer.length); - - // The array holding the number of retuned documents - var documents = new Array(1); - // Deserialize the object with no eval for the functions - var index = bson.deserializeStream(buffer, 0, 1, documents, 0); - // Validate the correctness - test.equal(65, index); - test.equal(1, documents.length); - test.equal(1, documents[0].a); - test.equal('object', typeof documents[0].func); - - // Deserialize the object with eval for the functions caching the functions - // The array holding the number of retuned documents - var documents = new Array(1); - // Deserialize the object with no eval for the functions - var index = bson.deserializeStream(buffer, 0, 1, documents, 0, {evalFunctions:true, cacheFunctions:true}); - // Validate the correctness - test.equal(65, index); - test.equal(1, documents.length); - test.equal(1, documents[0].a); - test.equal('function', typeof documents[0].func); - test.done(); -} - -/** - * @ignore - */ -exports['ObjectID should have a correct cached representation of the hexString'] = function (test) { - ObjectID.cacheHexString = true; - var a = new ObjectID; - var __id = a.__id; - test.equal(__id, a.toHexString()); - - // hexString - a = new ObjectID(__id); - test.equal(__id, a.toHexString()); - - // fromHexString - a = ObjectID.createFromHexString(__id); - test.equal(a.__id, a.toHexString()); - test.equal(__id, a.toHexString()); - - // number - var genTime = a.generationTime; - a = new ObjectID(genTime); - __id = a.__id; - test.equal(__id, a.toHexString()); - - // generationTime - delete a.__id; - a.generationTime = genTime; - test.equal(__id, a.toHexString()); - - // createFromTime - a = ObjectId.createFromTime(genTime); - __id = a.__id; - test.equal(__id, a.toHexString()); - ObjectId.cacheHexString = false; - - test.done(); -} - -/** - * @ignore - */ -// 'Should Correctly Function' = function(test) { -// var doc = {b:1, func:function() { -// this.b = 2; -// }}; -// -// var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); -// -// debug("----------------------------------------------------------------------") -// debug(inspect(serialized_data)) -// -// // var serialized_data2 = new Buffer(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).calculateObjectSize(doc, false, true)); -// // new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serializeWithBufferAndIndex(doc, false, serialized_data2, 0); -// // assertBuffersEqual(test, serialized_data, serialized_data2, 0); -// var COUNT = 100000; -// -// // var b = null; -// // eval("b = function(x) { return x+x; }"); -// // var b = new Function("x", "return x+x;"); -// -// console.log(COUNT + "x (objectBSON = BSON.serialize(object))") -// start = new Date -// -// for (i=COUNT; --i>=0; ) { -// var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data, {evalFunctions: true, cacheFunctions:true}); -// } -// -// end = new Date -// console.log("time = ", end - start, "ms -", COUNT * 1000 / (end - start), " ops/sec") -// -// // debug(inspect(new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).functionCache)) -// // -// // var doc2 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data, {evalFunctions: true, cacheFunctions:true}); -// // // test.deepEqual(doc, doc2) -// // // -// // debug(inspect(doc2)) -// // doc2.func() -// // debug(inspect(doc2)) -// // -// // var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc2, false, true); -// // var doc3 = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data, {evalFunctions: true, cacheFunctions:true}); -// // -// // debug("-----------------------------------------------") -// // debug(inspect(doc3)) -// -// // var key = "0" -// // for(var i = 1; i < 10000; i++) { -// // key = key + " " + i -// // } -// -// test.done(); -// -// -// // var car = { -// // model : "Volvo", -// // country : "Sweden", -// // -// // isSwedish : function() { -// // return this.country == "Sweden"; -// // } -// // } -// -// }, - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.noGlobalsLeaked = function(test) { - var leaks = gleak.detectNew(); - test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); - test.done(); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js deleted file mode 100644 index cde83f8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/bson_typed_array_test.js +++ /dev/null @@ -1,392 +0,0 @@ -var mongodb = require('../../lib/bson').pure(); - -var testCase = require('nodeunit').testCase, - mongoO = require('../../lib/bson').pure(), - debug = require('util').debug, - inspect = require('util').inspect, - Buffer = require('buffer').Buffer, - gleak = require('../../tools/gleak'), - fs = require('fs'), - BSON = mongoO.BSON, - Code = mongoO.Code, - Binary = mongoO.Binary, - Timestamp = mongoO.Timestamp, - Long = mongoO.Long, - MongoReply = mongoO.MongoReply, - ObjectID = mongoO.ObjectID, - Symbol = mongoO.Symbol, - DBRef = mongoO.DBRef, - Double = mongoO.Double, - MinKey = mongoO.MinKey, - MaxKey = mongoO.MaxKey, - BinaryParser = mongoO.BinaryParser, - utils = require('./tools/utils'); - -var BSONSE = mongodb, - BSONDE = mongodb; - -// for tests -BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -var hexStringToBinary = function(string) { - var numberofValues = string.length / 2; - var array = ""; - - for(var i = 0; i < numberofValues; i++) { - array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); - } - return array; -} - -var assertBuffersEqual = function(test, buffer1, buffer2) { - if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); - - for(var i = 0; i < buffer1.length; i++) { - test.equal(buffer1[i], buffer2[i]); - } -} - -/** - * Module for parsing an ISO 8601 formatted string into a Date object. - */ -var ISODate = function (string) { - var match; - - if (typeof string.getTime === "function") - return string; - else if (match = string.match(/^(\d{4})(-(\d{2})(-(\d{2})(T(\d{2}):(\d{2})(:(\d{2})(\.(\d+))?)?(Z|((\+|-)(\d{2}):(\d{2}))))?)?)?$/)) { - var date = new Date(); - date.setUTCFullYear(Number(match[1])); - date.setUTCMonth(Number(match[3]) - 1 || 0); - date.setUTCDate(Number(match[5]) || 0); - date.setUTCHours(Number(match[7]) || 0); - date.setUTCMinutes(Number(match[8]) || 0); - date.setUTCSeconds(Number(match[10]) || 0); - date.setUTCMilliseconds(Number("." + match[12]) * 1000 || 0); - - if (match[13] && match[13] !== "Z") { - var h = Number(match[16]) || 0, - m = Number(match[17]) || 0; - - h *= 3600000; - m *= 60000; - - var offset = h + m; - if (match[15] == "+") - offset = -offset; - - date = new Date(date.valueOf() + offset); - } - - return date; - } else - throw new Error("Invalid ISO 8601 date given.", __filename); -}; - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.setUp = function(callback) { - callback(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.tearDown = function(callback) { - callback(); -} - -/** - * @ignore - */ -exports.shouldCorrectlyDeserializeUsingTypedArray = function(test) { - if(typeof ArrayBuffer == 'undefined') { - test.done(); - return; - } - - var motherOfAllDocuments = { - 'string': '客家话', - 'array': [1,2,3], - 'hash': {'a':1, 'b':2}, - 'date': new Date(), - 'oid': new ObjectID(), - 'binary': new Binary(new Buffer("hello")), - 'int': 42, - 'float': 33.3333, - 'regexp': /regexp/, - 'boolean': true, - 'long': Long.fromNumber(100), - 'where': new Code('this.a > i', {i:1}), - 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), - 'minkey': new MinKey(), - 'maxkey': new MaxKey() - } - - // Let's serialize it - var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, true, false); - // Build a typed array - var arr = new Uint8Array(new ArrayBuffer(data.length)); - // Iterate over all the fields and copy - for(var i = 0; i < data.length; i++) { - arr[i] = data[i] - } - - // Deserialize the object - var object = BSONDE.BSON.deserialize(arr); - // Asserts - test.equal(motherOfAllDocuments.string, object.string); - test.deepEqual(motherOfAllDocuments.array, object.array); - test.deepEqual(motherOfAllDocuments.date, object.date); - test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); - // Assert the values of the binary - for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { - test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); - } - test.deepEqual(motherOfAllDocuments.int, object.int); - test.deepEqual(motherOfAllDocuments.float, object.float); - test.deepEqual(motherOfAllDocuments.regexp, object.regexp); - test.deepEqual(motherOfAllDocuments.boolean, object.boolean); - test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); - test.deepEqual(motherOfAllDocuments.where, object.where); - test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); - test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); - test.deepEqual(motherOfAllDocuments.minkey, object.minkey); - test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); - test.done(); -} - -/** - * @ignore - */ -exports.shouldCorrectlySerializeUsingTypedArray = function(test) { - if(typeof ArrayBuffer == 'undefined') { - test.done(); - return; - } - - var motherOfAllDocuments = { - 'string': 'hello', - 'array': [1,2,3], - 'hash': {'a':1, 'b':2}, - 'date': new Date(), - 'oid': new ObjectID(), - 'binary': new Binary(new Buffer("hello")), - 'int': 42, - 'float': 33.3333, - 'regexp': /regexp/, - 'boolean': true, - 'long': Long.fromNumber(100), - 'where': new Code('this.a > i', {i:1}), - 'dbref': new DBRef('namespace', new ObjectID(), 'integration_tests_'), - 'minkey': new MinKey(), - 'maxkey': new MaxKey() - } - - // Let's serialize it - var data = BSONSE.BSON.serialize(motherOfAllDocuments, true, false, false); - // And deserialize it again - var object = BSONSE.BSON.deserialize(data); - // Asserts - test.equal(motherOfAllDocuments.string, object.string); - test.deepEqual(motherOfAllDocuments.array, object.array); - test.deepEqual(motherOfAllDocuments.date, object.date); - test.deepEqual(motherOfAllDocuments.oid.toHexString(), object.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.binary.length(), object.binary.length()); - // Assert the values of the binary - for(var i = 0; i < motherOfAllDocuments.binary.length(); i++) { - test.equal(motherOfAllDocuments.binary.value[i], object.binary[i]); - } - test.deepEqual(motherOfAllDocuments.int, object.int); - test.deepEqual(motherOfAllDocuments.float, object.float); - test.deepEqual(motherOfAllDocuments.regexp, object.regexp); - test.deepEqual(motherOfAllDocuments.boolean, object.boolean); - test.deepEqual(motherOfAllDocuments.long.toNumber(), object.long); - test.deepEqual(motherOfAllDocuments.where, object.where); - test.deepEqual(motherOfAllDocuments.dbref.oid.toHexString(), object.dbref.oid.toHexString()); - test.deepEqual(motherOfAllDocuments.dbref.namespace, object.dbref.namespace); - test.deepEqual(motherOfAllDocuments.dbref.db, object.dbref.db); - test.deepEqual(motherOfAllDocuments.minkey, object.minkey); - test.deepEqual(motherOfAllDocuments.maxkey, object.maxkey); - test.done(); -} - -/** - * @ignore - */ -exports['exercise all the binary object constructor methods'] = function (test) { - if(typeof ArrayBuffer == 'undefined') { - test.done(); - return; - } - - // Construct using array - var string = 'hello world'; - // String to array - var array = utils.stringToArrayBuffer(string); - - // Binary from array buffer - var binary = new Binary(utils.stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - test.ok(utils.assertArrayEqual(array, binary.buffer)); - - // Construct using number of chars - binary = new Binary(5); - test.ok(5, binary.buffer.length); - - // Construct using an Array - var binary = new Binary(utils.stringToArray(string)); - test.ok(string.length, binary.buffer.length); - test.ok(utils.assertArrayEqual(array, binary.buffer)); - - // Construct using a string - var binary = new Binary(string); - test.ok(string.length, binary.buffer.length); - test.ok(utils.assertArrayEqual(array, binary.buffer)); - test.done(); -}; - -/** - * @ignore - */ -exports['exercise the put binary object method for an instance when using Uint8Array'] = function (test) { - if(typeof ArrayBuffer == 'undefined') { - test.done(); - return; - } - - // Construct using array - var string = 'hello world'; - // String to array - var array = utils.stringToArrayBuffer(string + 'a'); - - // Binary from array buffer - var binary = new Binary(utils.stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - - // Write a byte to the array - binary.put('a') - - // Verify that the data was writtencorrectly - test.equal(string.length + 1, binary.position); - test.ok(utils.assertArrayEqual(array, binary.value(true))); - test.equal('hello worlda', binary.value()); - - // Exercise a binary with lots of space in the buffer - var binary = new Binary(); - test.ok(Binary.BUFFER_SIZE, binary.buffer.length); - - // Write a byte to the array - binary.put('a') - - // Verify that the data was writtencorrectly - test.equal(1, binary.position); - test.ok(utils.assertArrayEqual(['a'.charCodeAt(0)], binary.value(true))); - test.equal('a', binary.value()); - test.done(); -}, - -/** - * @ignore - */ -exports['exercise the write binary object method for an instance when using Uint8Array'] = function (test) { - if(typeof ArrayBuffer == 'undefined') { - test.done(); - return; - } - - // Construct using array - var string = 'hello world'; - // Array - var writeArrayBuffer = new Uint8Array(new ArrayBuffer(1)); - writeArrayBuffer[0] = 'a'.charCodeAt(0); - var arrayBuffer = ['a'.charCodeAt(0)]; - - // Binary from array buffer - var binary = new Binary(utils.stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - - // Write a string starting at end of buffer - binary.write('a'); - test.equal('hello worlda', binary.value()); - // Write a string starting at index 0 - binary.write('a', 0); - test.equal('aello worlda', binary.value()); - // Write a arraybuffer starting at end of buffer - binary.write(writeArrayBuffer); - test.equal('aello worldaa', binary.value()); - // Write a arraybuffer starting at position 5 - binary.write(writeArrayBuffer, 5); - test.equal('aelloaworldaa', binary.value()); - // Write a array starting at end of buffer - binary.write(arrayBuffer); - test.equal('aelloaworldaaa', binary.value()); - // Write a array starting at position 6 - binary.write(arrayBuffer, 6); - test.equal('aelloaaorldaaa', binary.value()); - test.done(); -}, - -/** - * @ignore - */ -exports['exercise the read binary object method for an instance when using Uint8Array'] = function (test) { - if(typeof ArrayBuffer == 'undefined') { - test.done(); - return; - } - - // Construct using array - var string = 'hello world'; - var array = utils.stringToArrayBuffer(string); - - // Binary from array buffer - var binary = new Binary(utils.stringToArrayBuffer(string)); - test.ok(string.length, binary.buffer.length); - - // Read the first 2 bytes - var data = binary.read(0, 2); - test.ok(utils.assertArrayEqual(utils.stringToArrayBuffer('he'), data)); - - // Read the entire field - var data = binary.read(0); - test.ok(utils.assertArrayEqual(utils.stringToArrayBuffer(string), data)); - - // Read 3 bytes - var data = binary.read(6, 5); - test.ok(utils.assertArrayEqual(utils.stringToArrayBuffer('world'), data)); - test.done(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.noGlobalsLeaked = function(test) { - var leaks = gleak.detectNew(); - test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); - test.done(); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/data/test_gs_weird_bug.png b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/data/test_gs_weird_bug.png deleted file mode 100644 index 1554dc3238dc94f4c8375b17b4b8d34a337d9c1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52184 zcmZs?by%BU6egJ9?waDzBE^ckYbmY;inO#)DDED-xE9*tR@~hK6e|+kC1`MW%QCw= zJ2U&^ujI?~B>8ghx#yMhCR{^J5f=-D1pokWm6hbQ005Myr^o;dw5NyWW>Q=L0L$a6 ztgMEztSp^|ll_;k-#!BX9>A$&OC6E{vc8fQW^}YKq4Y`=P6|#*RAKCt?{Ii6DEjCN ze-gYm4j`46OQ;4%qM+)(><1Abqmcnohp?+z3ZXq<%%m9z@G9-rj|NtuIvJ`)^Jm{?GC0GO5;0M3c5=HN;mRP?kv zYF1X>gEvxq9`5hx3BP&a+!U|!rfKo#OOtD|b5$2}c%y|mgZtTiH=P5bCr z27}W1uR&a5+jXDv8aM+sG2B_eK9&dtm3+J=;;l@TSAVpp+78mEegHu19nG$+#rSSQrz;^VsX>7sBwT~aQXYsaa$@2%dFg$LXzcC`q1~u&*RFK|VUtSbYrND!f51u);glB4lGv8uLsFHp&*tJr(l&d=j$hI}XpTJ# zybMNO<#)ho1*(PBz}g(%7^BjL8NpPJIXnO~p{8Bh7*hQh*qSou1lWHuPvpDet>l8g zDLTb5??c|sK+o0vh6kL!87Ztq;(LY!Y&Bl?Q2@^ayV(^XcSvC zHzqDeo(X%=qq=(HLD`D8jCK?WU(-IGyC%AKyqEWp^us}fOTA(tioz%lb_fK=DYGz4 z5_1yVVnQ(|^iQ7FrB;ll2+I}gQK3$;$W#VMO*Q*4 ze_E4EJ5xh4{LSC<9-)suRn#9pf8_Z1@Uh~n+;7luKz(wu+UuP3KTChwh?pZvB1OZU zdm18B!ZS%}i82$+lqlX_zhzS1P@Ys-jH4)6-`RB`7sJVRp&Q{BkGZRYGS%D$^hnR0XewAXy}``>n-hjan7jd(*s) ze5$;hyh|niw-+kDNhYssxu{>JGcGZS(>=(Ca;!5X($$#$(cP+ISI{$Z%imX+W31Ny zY|8P8v&N*?D7j{TvKrl~GOa$XW09=My2-AI)f3fI&@ zaRiRMQIAlMOiyG4*KEQ!bT@{UpS~gDMN9=7G8}pbafT`Limtd91Q$!YWxMO3aS&CsOEg-v;%^;Q z(P7-*y1(7)91O_}F%84&yz0ztwGRvqcn%gsDr0`BrHz=UOMECT&o7s1c(=hZ;p^z|80Dk^!bI;sINJ6TOMlY;m<|sO%YBLdLcCSHMYy%OB}?`WTQX8C zaxd9HMRAZi8O|he?7(I}Q`AcMuPBwf$AJ}$#p#>d{kFws?Ql^yrK6kkh~uGSb_+^V zQnQ$&u3NODtwXvCuj|6v^lFUjmCMSJ#NT-Mv5;$;GQM-HEseeyYX&eQKSRB(woT6D zV7am(>|Jo z`efz@>!usdn#>w8Gd$jfHN#@*N9a-MyR!#n8$y<`5^*E3ZLs^o(8Fee)ytgTyE;tG zT2D;Pm7vd9mCn^}^%~CAh1)_V%lb}d(xt%q&tsfO z!k1LN&@zq>s{=0=bN4P`US#le=KAl#4m`t z7w-4Zze!$A)@(_vI&WZxQ^0R7hwdgwd|3;kC0P4jZpZf}WH@}pnW zU6p0*Nk)SBiqo~Qpfj#hq?6^Tho_)F&wbH#!Cc#zxA*DrY3zRY0rCEeMf--1dZ`?` zHnVf^RY0^Svx3L1k(dvM#cmeLHG`@Q(Pq7S7n z)aJpaV)EC_)YRYXTEZSy5FTK9%H6l=e>iW^LxXDZ096#;%yH zWAjPW{IAn53eIZSlhsY1tNH6)8#zkLj!OIHM%?x;w^q*mMcvePjORQD&Thz+$g4Sr zOx|?}P0{arxUz1ITfv)0!ct_pR@$mh-$HevB{LOGCM}Dbqpl~-!xzqirFLm;Uma^M zlIO~j?IsSlR#g4%58v#4ZL;-iDVwQoXtS4J3Gr)rRB=x`GHw}c^0t9kX4!LF9WRgW zX0LkRd#_&+A9Z-fU7FpR_cHG1ruD7GMrQPj7v0M4#r`p`Sv_MMVO&y2&XAzmjBdZ@ zy@CF!Dz%)nl!uaL&P2b6&P;Vk-}bHA?U_|s9o*5MLnK`5-`EV#SUy%GO1ybooc5!) zhxZp+-Fc2;+5|mUgf|5*He|=cc4CDyEhMJ=>aQ0sUTzGY?L_ll|5~dsG+pTM^z-IR zZGh3cD7)vg$+&8T+O1{H#?5ozrVJ)rc>aE7|h|6{wJz?76v} z>AATI{=#WbfK*=?Dy{^a!;cE!O^Zy9UtsgTb|6G)<<1{DVs`sA%#$t{0H6aX%Sr2a z0QcK0<37MW;WvwEM+XbQ=tH#8XeuQXA~PiUhyfy76`K@s-j?;czKqjZqdL*erS!St zvL*H6`Qn?6U%!j%1~*x~KijY`B$Qgke~S2sf~-V9Nyjs~oz^{kbBI7tr70kzC|6RB z;)+)+HeO{Mw;$b5-*zLyGhT(xaw91~FereGW++i$!vA$~XpOYoqb|s+o%nV$=o0MJ z#yYhd-RH>>>)eZ$f|A)Kq)Y4NG@N7=;Yw+ZKk)w4Z_v&(Qm4OX`;l+Z zuLAU+vL?N=Hd_{XO#89Kzo<@=kDoc?Gz6W=*J&=dy@1vE7y8=M_+3GYwB;$ON|i(o zh%07t@oVfpDE0Oh-}>5>bDG|~)#8$LE2Uds*L~l>$J7`!?A z9NyEKpybiBPB>Rd&oq#y&S_fSzuN7oobOZZ;9>d!(|_lm0!Fs=NhX4^ypVh- zaQu9M?mxQ9P^aXxs=?V3Y7Km9s|^GCM3FA<)%ZjhFZ#MwKUkqnL^wLgCO1_f$=^fv4C zEA+B7i&9fZ`+=qWtT%6^e3t((Wqn}Xx2a=D+p@`$w&4*q(r*(LH419KR5nUgpDwpG zi{>3&zZ!IJ=jFIsBG)Y&h9BRFH=0^NGrqSX{FE1Ee2s!2ye)RQdWWbl8NDK(T0?#=5elSJqc^K7@kH&Z*7;0gWSIo7xG0^;NoDq&?~`Ua?5I6eKmBc$sw}XMtw-FI zukDeKX>`>WCPmgfSux|pY5f_5t5LxJCV(|Q>unb&yvn%nC}*dv3++fa@rt4UfysEis#^+c7i z6Y8Ha_8kBs+HNZd2_6Fm&rA@HM&CWC@+%SKphup*)U0);3AG)ymgzP3@NK21KOGL&)1ndDTpgf0k?cWe9{_M97^6V9V8{TJPOa24(t;ZMdmi)J2x>o zqkWW(m3ZB;@V`3I|6E*(fK7Fy4g0D7It7KeQ)zYJBQKxFj%3~_%sq9wwvv9&HOANxg}e(oe3{z3$?GaRX2ns(5Q{$O5nr&Z^slv*oY~uxXO3G%Ju192y`$h?qhZFi#mBL! zj_@tl*3b^mj+PAXjK1siAm<4R$Vyt+G>+H(lFiaXW9G;Ql8X_PMbQ~I^a^K0qat3r zhhSg#hZOIu&VbbyeBYky)&W1{!E0%(%ag8?0p)(KnOzUV&Lp!g4$d0nTJF^@U}$_a zcJowvm{CO}l)EI#?6kwb&A{Up2K(4$d0cXTdEBLj5YM6Z>;8{e3rdWZ({dyJ=}} zoMeyK*s!(54!AyLu6QVVH$1#Jec=}W%sGF8O9x8~D?*4qeymCj50|>cDV^JxoOx@M z&Z}OF+sQYWIyU2%=My}ljt15t(qDJxxe`M-J&%T>^jLA|96J-C1CvF>TJSn`Khz#< zxn)s)E>e==y@ME-U@=|qgOg_^%hk7-y~NP?K1uN~PULR+9jU+4MDPk6Qj3}CygVZ8 zI?N*+QlqJ7fIABEK|zWU5M%l?MVGql)@lwZf(&KN>F}uI<)ime%8j<==7#$t7v&4u zWP=4e;mce9qz>Q5RwhPV&oiYC6b3)ahl0%h{^LR%)pzu+S*+yfSVXvYwScak5>y?5 zZ~Z%w!aE1y{Ut|3{XaSbBM{xp@RwvKtKRasxVZkkG+P1Fo4f)wpI21sdi2w*}-f^Y<7~2W_W}2CNbK`k)n%o#gCBYtl zNVC)KUx8!lp{zoTM$}^ABEcf*vy<>`Zj?UV2KsO0-0hd&s=V@&bL=;-`#}r@v>(;u zu|x?t>uvwG{#;?Iaa7Vc&RgK6g-0t>$j1*M2!i&b<>XN%aCTL~x1GpN2e2Q8!2j3b z{tp%w0F8p+egNdXpOFYL5n#HHb3B((^Sd3#ylFFCVU_e*4Za^clDG|c9hon3dJ{>6 z=k@tvzR>GZ(t!|f^bAT9v7czw{ak^739s)lJR&x4WpX=hI56re=u-07O@%xU+)+aw zO(Z-hyOtQQY;996FKbQK-+GuF^~gy`76Y@S&8a79)K|-Thxe9tL84#&L+<|Xp6%m> zl#!THBRJqp0z9|=3Lrg z8UGHkM(?m%rjK252%n}v2EUh09;-P~>LdNX%hjR**Gwdo;*cb8&$?b8S!To0GgVUQ zgxNT@`Fa(zP%rhn2Ruvfp|!8<{KT?tYuILS`_a^3n6XtxWFgC*QU zXBXuZ^S#5ELT=1t;9d`^XQ^S?TL2;2bGr>YWaQ=*e_3aEAdB72mBRc-0ynfP;cZ>v zH5XZA^AY|6?aQjYWw*_$ySwhg_daQ^XAEPrNaVNwutShsYCeGtd^kE*T6@mdA{UmV7Okb_Y0e z3^34@S&hTN!|8WNTpFD!A`THGZWOTY5r$z{pX7b{eWd@5C{gbp1BWaVOY%S?$;vx| z%dgLD;b10M#8-t<`ES-$@(s-7EW|TDxfTcCUAos&j~{OY0uWr$!M~jHXcP@<)U(&*{}!v_WL-Uv zUiPv(R9r!n4-LKRG>lL2zoHS`s|!AZ&V;op`YFC6#g(XTUa?r z`JLwa$Bm3kolf#Xi)U%6DU-=fJ=AakrgwGzuhL8OQwhO{x@Qo%)C`FvCp|rVd@R|7 zP`%UTs%h?hQS#R3iC)~(%LVk$Gvy!H{(aCKwhFbbV@Tn;8eDGk&c~wnf9ygP>UyXK z872p|=I6`vA1p4Wi41viMFY=!&mMgwxNMreKU;Yi^eTq&Yqj$eCQEU%q;P&npcZx8 z{vGwxG7Wf?8G!8T=Vx+xun<9Ad}+ab<%GF__seh4}m(@!oTPP<=q%|J?TmF9$$D>Tt8>xdaJ0v&?I# zP+t~x(WpOa)MxvV@ae#Tyz*HsQ-z|Z6)YIyR-}`p!-HAHE(1gy*!vsll^MR=bb7Bn z%X*k7Bq=0R__4j9Kv6ACC_7LRk6JZAy&KST8_%f76tAR&vnG}@So8*bHhPDc)K>2{ zt9;8NOYG4=v-8d7$45ffD^8Q()zv4b&o=e^>Pl9y;Hf=NPrrhXq-(Et-JHSm>*{n( zJTG)H!@8T*L3G<$1&;J2SlM8Io%Y9z3KbPL){u|VVr2&&e{Rtk0R~HwG?9ac)2;h< zI-fHw-#HBsunW>tX8cSX-V-d`1S3$12*~Fu9TU?;ok6I`CBLbpA~6n7YRx8rS;6Q< zFp7!-d5g2;g9JOSfD3C9 z&zn!O>(!um>=w7fq@@=3lC5EjE&7f1@#W=L>+8f$h=;3O(F{{miM{!kbdQ4smr)o> zvS|}aQb5G{gu3jC3~_F^32M)UrMb?N7HK!x=@0=7Q;ltd!^2tMPfT#&OWs$O_X)SO zv|Qj5fe5eU=c27pKqSr0%^Ul3HK*H;54YYvACY=dJ4jAZp9n=F^@97h$n>&)c-1IE*edfR`vAMACZgA;JrRJ+wy_*mlu0dpii#uB1cWsXsUdUPVo9%7*|IQ>I2+i^~Rv%0g zByXVp?1(|c?a}6DW=9sn@qS$2Uw68Ej~^KlapzCEQ28GM2U9>ge-tbc{%Zdj3lg~B zdXn?`+~%XTUSJhp*Quh#M;|#GK;yzEYEclzPaEjkrJ4nD=a{kLG`5d9=)ecs^V5xL)&=9ddBsLc|r137w=gSb?2dk zrM(NOzvy&B>HJnYX1Cz8g|^4UvSNMF$X$I9rWKV#6zPcZ)4e}#c<<1H#yZR(%q61Z zM7XF-!J`2a`U)G5-iPlCgSQvk&;2Puog~1SgsSsj`)bem7#S!!@tn}I2c*M)yl=e4 zQNhrPRix{*U(kNo_Rk@@d)i(M<(K15D=}r(Kd#>iHR;iXVm;G%pJ;jII}C0R%#JFf z26@g%0wjLMhsKSQJ#>%au}AsG{#iN%SyBQ=q_AQS6sj|B9MxN%zk}*a7*26{?A~nC z`tB^D^=0%uL!7L2S{jU7`P})F)>ypd}4(_FzQpH&^|t*c@?wA3ID( z+P+&0Ga86BE$3q*y<*7e>>B~ENgE;gWNp(1BmD0Vvq=7VC}lw2WMuV#S0uSTx|*h% zwvowa{||!s|6Uk;McKXBl6e$up7M2I9}g_1l=KL3M!CvKrE%J|Zv`x^Yub+lIkU-2 zYB_6_JH>=_HWlih4Cr}b|8`joOl@bM-&3_r%M^n0cM&`w4l^r$#3Z-8mhtmyXG{E5 zUE2wfUc@E@@ZU4&)6&`PhbuKL#>ova6Fch;kXm<Uy7?Y*4bQXX5PMGmK2UXTX;PMI)5FbeO2ARvbOhIb)Rxj zm%DFx{d9AXC|cpOkB_n2(X#K^&Sylby4>NR0XN_npgvlZ8FTk}JsE=y;k}78jx?_g z9Ds!|X<)vgfMJtT_NtgPu;Cy}%P))ls;UL16#9bxvpsq&K&)O>2aKz7yuo9+_inaP z%7o?{u0p|#^cCl^$vPgAcN!(eAXa58wRP{?obOEbg~>xQLlt(o3_k6w=xQVD-by*< znW3{232_567Pg8?xHv6u+_NV&R-rb(uW4N^ZN|A|4eo}dq~TA3jGGK)H66cLK=q@l zV&?5<=%2=j8>c$@H$$D@FEt<~XWA7eRGe72czni5$5h5)F$WBnD#*P%k9%K_BSWh1 zZtfTmK!nQ-pKZT|t-b)$Lh9z&mS;SRf7QBFPlV-e;G1I6{lyhGd;;Xa{~Q3%+yE#6=go z9!l8-@k?bN;wdCL(?odE6l|56(||~Y3VA8RO#&1%y|eWF_nHe$@R!O7ku~KQxY+{C zA0pvf?Ua~O%=~cp5s}|n;;q{UOC_5XN7L4ny-^Q{3;OPy zM!@wuaxRmk=of+?GqW5H>|I=R>TMTZmFQQP`0Q0*ON4*`6NNyjX!TxfG_Z2o^?C>G zUlkXc;EL^e(NQWqj!K6KMxo?Pn;vpI5lhME4*w=$R;4R?hgM~aY{wel?4F#~9m@5X zXExnbt`6TwU(Z2p8*q-?f_mKjHC zvX}Q)h>vA|xY#qC^Zg4(GBXqjrSfz&I=KFRsqIQd)IHep2xHqnmJuWC-PSBTK65(| zj72GMS0i!}<~wzmS$1dDuj)S}iw>(;_nOiip~*rM^l4QDz)Gadp89Xkh$ICV?@I_C z>V7=Ad<2-B(|MX7W(ET0q6_gwzzmZDod1SvImEW~*|kqcn;G~#o;|jE42NKVq28LQ zE6+et6vT-+YX^hP2Wy#U}d7G!p{+qp^x=KHfQ$9xJr6k z_!{iYpEqUNY!GiT{@V7y&p1c~3$>R1ulT$4tav(bSFq`%Lo}H&6bE2R;%f99`sv{S zr%@>y4dcVE`Zlk}a+tJDJa>9Z$wc?J!AYT^mYUseJ{>-oAI^KNomL(Qg-=a1FJaDK znqSq_SlP^OrHsWFyL5rMMGSvI%qm(LbR@5<3gehBNcTIP0SHkkeW3}#m%VR*p)J@QGPCpD6sQ{B@j zJakO|d`v1?F9d=U-vnR53AWUMD>bjOvhRL4X|q{{P^f#Xu0F|x`4W>ymwB#V?>=a; z(i);ozYI8&4!((voyq$|%69yTBXo@%+sgm@x~(nCkUP4|WgrmTg>dM|;^?|qL#?w$ zeNo0JNzY=EStIT99lIsQ#@>A*5*uI0!2W(FT~U+(rh5AMnBr)iHlS$?3Dn?1K9>cvh01m|X@8N4k5O))D6DTi z#X|*s9?@BY@B1BpZh@Hy^Iss44$HoSoW^?^DQnw43xjUPec{FOZlds`2??&no$Scq z5w4Hp%Y1MAi-U9uY<|G(EjS2&*=mwWD>F`DL&%}TL+#hl?O$4(ly3VrPWz6_w0+NG zOy#;-<&{6w{Q($RS<*^xdyr%px~!#Fk@bo{lPF>!>nN8SH`8&Hl`zG>UHi>a&aq~U zk&VxU&#iy*Z``-#D)rEc zj1&i^SI)e|)fda?FG<4JG9pF>Zc2V&v9n_|Kuqo*>9BZUg41jK!2L3->QxI3^JFB9B&*rONFLwNyd`_sW3n7-s!>kp?EXrup8EvslcHG9>ApjZPOTx>2T|nW)6aS>>S> z;@qa!ed0#BFNtrESnat$({%i(Iali&YXP^k@UsJ%6CLop5nwt<7v~XJsw0iE%!!JR% zb7_ZhUK$l`96(SpI2Bp&k|Q%Q)bn-_)PPkisKc6GgdYMST;UKF7%XjOxA z>tp~chOkwtV&8lJ{k|KXt-Ri*?hT z_O~@jc2txFQsvwIjC&Bxu6q_17APYyEI+|4Y(}q#^YdD<)BbL)VB|YC224Yd=E*AW zvy8y+0HI?q1rs0o64ZOYiw>2KoFV~)0dclgRtTzy`#02JYT%{+jv-#>Ffm8&3N1Il z*!i1^GEzd=bp<1HmbY!iJ2hDtl2F^aB3?d~^vwUv0<^R5)T@0z_#LtJsA4&~oTWW& zJNt@PJJ$&nsg;<^!t0})NXv950XIEkPzvm`I~GnL2djc6cxTD3%;Z7<6Z2YZSfrk%w29;j))<$Hfp04gID277jx@p?S<3Y}w9^8^I2)Cwdud z0F^Ge8BOL2-+P?^4uD`^`30i^g?uEfE43uG0qy6TKkpmh)lRn-$^y1{4D)TQpK|%b zdt2uZV=n-1E98z5sLSt}5sKn5?2`Z%I_t-6T?5|A_o18KuL=6bno%@y%|AA?^nhqy z)q!M03zqMu#C@#+g-P!_D~rvq=WgC(z)8f`oZ0@JHQ|)fU#F+17_et&Ur!|F5?q%! zs(+B>dwbkIQ5a|aRTo(bmy1a>mIa96bQrX<({x4uEi-l9o>t~|r%t`0Vmhp3ruesC z++Qj_DywbuzrxX&n?&P8U7F03nVHwaafrA1fLutDv5ZbI@ z3aisVZoR`<>F-*|lru+XPU_C(N}JB`DaS)I;YT{I2}RJ&!pEMIls;%EbQOh?mgupA zL82`$e@RUWp1Lp)*ep%ejLM0u{$gqKhb2aRhY^DVVH7TA-4X0uS4rc#REutI`ucm zVaw(HW7vwdrfVE})R(ij_5ttphr6)KW?2KmEOD(PpWx`BMX0??zGt?9&>ku%ZQmMiwh;q}NcZv?tT60a@|@`s*eD zHAGs-qiIMK9s4_<)j!5N!c*vk5cH0cqjK?LO} z`6xTT@L<&glQr!N1>uN@+*|*&vb|8Yw^zcW8QK9kJM$aAh`ZPeIt`*78hA>|)P67A zJ1aHZ>^q605{gSyq>VN&+gzDANoAG$yG#ah*HiIB0F=0p z7>93|KZgZI-;TaMyH1x06S6jLNQR(W8ks02Cm|8U-fgb+BuMNxwDWVs(xI<$J$`&k z<0r()hbNS?98hVkOWN@;&lxbft$TEc_fOqlq(Coe<+e<(?q{hHc`$?vVnsmawXV%t z;Redm&rk?{%0d0MmwqGpMiUwKr}fH&=3^V1QGM{n-|!p-5EGHaTs;T-Qv{12REf(3 z&oa-c#t;H_Z2RV-wo6Hk~{Wss~{}>ieAnn znC9AbPsZuc7&AvA%lsT?u%Mtr$66|i(GqEelCaX*Qtm1HW%aU0sO;65D{D&XQ;bVL zR-6(0C*J57p++w7=mmAzt|{B5K9?jE3KirNlLTGtKBR?dqL-o#c!!1-TMNP5uLK#9 zWaulXMD->MkwI*;BlI|fBR^h~K6wD8-xetncrD+8raOIC{QY&Jfme&fV-azg!HFMi zo)L<#BOyK+tgz9V<9pt!CDQBrjm!mc$b<2rdS4*o&_D|da@2~an;2`^@Ih%R5skR9aV64{Q5iXB)jMs{M_kT0S#*s+%v0GRR$Di$9|SuBL6TQ z)PKCCJVQHy8+!h376jo^c$z)u(;V6%MQQ`SRP#TXOS=%0aCOy#l{u^jpEB*v1f3_9 z4YYrtkaOnhI@LbT3ZwfiJH8@`VNQ*jhURpzM{pH|gwg*;^?ciXmp@p5hbOoYEIn6e z!>on$#X+6;jFd2E1ueiN3HJrkF@zj87E9;S;T>?+-%r7S&%-UY81x-%&X2~FsJwAw z+T;5&_`V_MQ3|DRk6WS=Oxu0utuyJIU|kpGg+fkHR*5?UuT&tLxjkkkxOJrfU^PmX z^;gcrw zy!_hcZe}J`p{zCb9ksA0ujR@bfh5uLU=2g zqY11sco&VDtwE9_Q9PqH>fOf2N%H23Dhea_DJpjLSDXjQ+{#KP8tHzRzrmIl8B%@2 zH6!rxKNWY4gvo8S7{=!+xa(W>b4!52cI4ALdAI|#C39qK^Xw==3s61hNjmd1i0`?X zE;G{AnAzheJ^Fza;!D+ZZn-KQn=|fLQd?Uq4H3Nzm7x#2b8dW<&5GR0MPZTum;fT} zTCMatrF^8tQ*>2h7_|7Jlh^l=HTXLAtBZ8L)_a2E*4SPYEKd*$1qTEJ2m%OM*A>50 zRn1{pW#gAP7G%U%Q0yaQ9rfi1$qKLnfP@T0A+aoAvbLGWX96byEt%j{Bm#Lhp_(N{ z#WbX+SwQ8k`8Z%oj zBl*bK2LO=zW)C52Tl{0!IUFEKX^Fw6ME3q9?ANH(5M8b2)kU(!onFN;N?4u|AicV;PO z_=s>GQL%4R$-!Jmj{AF6rG@byROIjT`#z24ni{|8e3=iRl1S5zMD1~UinT5rot!}e zsMwC~rgo(V6|+bG9=$p}j65CURrXvBiOR^OI6`fdf<#jJchqZM52%09-H?3rFvdPi zmo!yq09V&vi@FvweIvhqg1LTV{J(%^pt?jZ8Wkhb%)c*tLgb442%a3m-R}Yfq*wTo zREhA+%o*~|i?bV%uE*5h3CD*mo)k!dr-L172@T8t212m+KN1AT=e#m~u*TXO-W|Li zUU_H349-=2`lFTqY=Ez+ph;;ZBH6a(8G_~T0!72$gj1@p!iYT1*-~Y9O45_cb~oD` zo$kI!@jZJ6D^fg5d#8H>JKJ_R-Y{Xu9d6w7}mAt1$hxs1b-vEp8Z6VtpxY^MykY!yg=$S>TsM(JNz|OvYtMVkPdye(tP{E z`%+Fr7R-v1bAaqDT+i&%Ow5fGZ~$EK@5mbi`q(|ks2r|{tg?)ZLAShsY}&TzdcTEB z0zPx?>Cy{j(y@)n*syH#oh8Lr!sEkp;do_Rt9cS`wS}5ntKSvpS6QH0Kg6lwlU3im zD+~ptk0f(nvkNc)JrGG+}nUl`8CmrU4iYiUI2KQyDjEbpFPT=CQIlV{FJ| z#h{s_WGPaVNWa{1553c_tU;xV#*1Pw3x?1lPK2;-L&l1-a*8n0Z1$!r4b80hvgpC| zk2n_vV-RKBV|vuACub^MpAq?JHSPIu&MOE3;>o6@Kc&W18tz}+b$#5*Ox%Mm`oYCM z-FdR&0`Voge!JbfwwYz2DcZZ1!n|9jA;{@8z{6=LFiC}`I1Hf& z$xF>_ym4cNMXtHSMPd!zf3884(4OCMLI)c_B?jG(`*WQShMK7{w@EjMli;&9jY1VX z*Nt%@{lFlx_+Y_I9?~m~H(KhaG$PIEGGLNMvFYI6R^G*A5@4KC6yrB@D*Q2Q&5U4o z$>IaR9BA|iAEFI41mJxBzG^Jje!nT;+iY0Iz^rZ(;NF4$Q4~l0p1bS#?0PBGCVlr| z9|d-C3+p`UydSx&o<+dqtPRxXA0kRpYcKs z$WZPbxM?Nzg4JBGmL{Z!3eOa2BfrvjI9vW3543Xm6V6NYK)CV1`x$m1c=p?EL?ia0?69RMO-E4UI(2xE&Z!+aXuxDwO{jHby~s=wLw(lFrR} ztOq0~rSwn22KE#0tBw>>Jb>hp^&S^TrDf7h$o2CD=0`;4xNvG zDs5+vk7+Ud>99k7^Dhx>J8n$(@wsFKdSC2LVXUj~I)?J}A&BUqxjaehI zBtDhdVTWlMRjo^9TW7H@t`3}wK?K5F(f)g?9^>KRW!b&D%G;(WGEA$B6t%n60Qpdst9UszvP&XhIQzNXJ<-V*hjM}}t+;`izA>$xYs5uV< zP~X$ykc~2Sn0PgMb{wy`cG~;m{e#cVW>mz!6eJwW%&4QBvqS7y>Yd+Z4GtF4tBsDw znXfJw7|Q_>GE|q)nkla~w0P6eKtHh& zJwG2TGE5f{yh;&9M$E>BX1~*Bjlux$>u?5CL0mT)vkOG*i`E$L7TqxLLi+mpbmiGI z8}byxZzKe;3RPuF3cWr`8<2kOl_$QLB18p6Cbp8qw*hG16=@V1-N<*W+X!t;-6Otb zmv^<~zNBNEVBw2(Hff_UZO@YK?(TTpRQuXT^YdS29tPOMhYHCD$LKJmQEior4GuL8 zAeTU~N7SBQTrkXZ0FM0idYlx|Uo*RX-D^`~%AqG&b&xALz{gD|*W1PqF{E2-`;Jsd zcO+Sulc9U}eopeo+s;B*SUg~tI#=)0LdR>28`Ip6epXgWxELWwUfem(Qf!+#=T~07 z^ZbBIvNn4^KedsJwg?fVg)uw_ym&16uQoQayPZM|SX)(y%G!p8y>=@XGr=dbN^j@U zSahIByCCjMrAag@F){J2&mwa)L6fnXC`scInv3S$v(sB9;2!|WC=z$X_NA{8aY8`h zku`Sl_Lb}hxQZ)l4!;=%>+w#oX?fI-JdM)9(8KS+8qk=SU0n`o%FHq=K43I9JKnW? zbZUxW0x-+?i>3svoHL&MT`0jv1lVgC9W7M1)wGERa3UFb4ptL$kd?n3NIb$8-{1ob z4Gr}_B?ELyy~QL*5GDPagZhMBnew(^lV2G$T4R#j+*yG>W@bti1;<<@SYGTj>Z`x? zD5(B$S3of0r8+y5?=!}18U;&YEh)6L9>cmcM#N)eHxmV7TB=@bE@jy#xhP-MJ2lg1I>11S`>oeyD zc191$IwuPDQ)J7+#$muRa}xw#7v#mhL6tB{M2bSfl*89?Xrqls=AA1Bp`UW& zoKM91q4y<30Jfao0s9LTGfa-lj2ems+jQ893)&6Xi{$^pKM}U0$$5}4v|`!&QN{z_ zc>Gggi(~C&{mly5i7rTyj8`f&vm^n;Y8z`8+Rs%}1};|VYs`wWqWeV)!9cAUK|8=~ zf?U*`#@;s)4tP&isWQebTMn__o-fY0mB3!3M4?)bYUa$$D^Wm^=oh8e#PEcl;4QVfXT=a{yQCUCgoNDn#S|qU+7$p?ur-@v%>K z5wb_6g+?K}QG~LmkTgVvlzlg5Y$0NZDBD!B6j`!lAF>u1OO`A%_OXwBjF~aN`~7@A z&-eTEeEa?9^_rJ^=Dx4%I?v-gj`KY3u3GLZth}V&PZKNqf%i1H%l4%r_r#A$Z{Z%yvv5 ztpl~iUPe7_AJQ8~?qi?6<;=iXv?~>EU$kUd_Ol~&Ojs6Qkf^a=nYgFXK`aRm<6g@w zfx!s{2d2le;zE9fwaAA`A73wl&l&dq)_mlo0j*wHS>gB*&ZHJa8>Fm1QxPlk=2|=I zx%Y%``rvxd{HvhP6Ug}+*HN9bFz{0wU1^EWtM+o2lWv+@xZQAe21%oHLV5K3bU6e$ zxvi2glEaVbPjqXXd9?PxtvdBkLGg*I^AQt=b->u?Gm`z>bd1wR-$?(LGP(Ky1F1eO z7rxi&;u_Lhd64$G(ej8a_1oXHlz%CJAB(n@mw%#8;(xjrwE&cJOIOP}qo4BSvQsBU zpaCUOE)gOxge4}e+1sUH!DnSKl=`Pzlf*~9@?RWPA^>)L%6!Bs>h9O*a(6qT&z-+Z zuuw+NVI#8;LtW}|Ep0XJ)7k<}&RiPEsSMKoSoL=7OH_M`faA%8< z;XbE~;7hL#`zYG+{EEN7+;U5Ne*Zda7;~Jcd02%w9#8#Qxr&!e_dxjEVA%l*Y;zhE zRQ@xL9s#GF)5A!f*z9^9W)b#2o1_r)9)l?!asPcZtuh#BOyTJO9UsbOW*LFmJ|cQKAzG$JtRlg&3_c{K-Np1>|J*04TWF1@fJ z^A&TFve&-x1#Wn@@LQp|wbK=&c%JRc<^Cp#k`R}oZz044hs5Xxs<&Xs=8rnRE5ZU9 zqoqz^4n{2iNfE06UWUIh=3`}&EY^B)VdE2DWXL}xIT2$&K=AM&t%&`8!ZcB0z`DpZ z4*g5&D_aFCz|pz4&UMo%1;~87iU*Fx!g+3vIlan?!)ft>zla#eg>^O!x*iQ zJr}O}>FN8&=*B0U?=|Eapq6)wT}i7I*vD}VriW_O3RU4264wi}x(*GZfH|n_-TU65hMQ@PFF1VOz(JcQnZrY?h#teJ4G*q56xH}vZlme; zyZp3-7MXM2Ia_r&#_3&U6tF&k9WE;yl3%jPe(t!N8^yg={}{-U+a&06I{)w z?9d};zQkgjI+IQffmDMoMV9R!l{lS{5Uk7z#P`BykwY7;(}mGoZXNO~( z-;Tb#rL%L$f5zsXXis|KS*3zL$!(de2t-e=l#Za_oGo+P)rj!0OmuwCZu-A_0k9KC z1T1x8K-{(}s@4_H)1NtpX;(h-+)`wwJSiM%KRaV^p4&$$%a*0&cGNRY-FLA#gIp%m zHj4Bm_T7kR8$wvQ*)JnF%V$HyO`y+nnp;~I_)wou1a#Sh`y<1*#t!Yjw6+0Y@gFL{ z)Bci(4g+-VP*>n)&2|bfIL%mSNzRPSK?d&yX$r6}DQkAP?RSP0o}HXP_O{O|v6rn( z5Y+M&AAY=2?=APehZlv??Ma+w2;NM(4n71+)NrE?jzzTv=&tsy^iv< z{|Gr1`yg&RKQ2&Pjsv`~t#*uFYbVjqKw?bfmqt?e&vHFmTwM)sxexBtuZvKV+i`0&rAq$ z_{GuMXBY6A2H}{%KJXN`Kc=4F={hUOs>|bYC^)3+gfG%?Z+)`pYE51q*S7{nJ}nkA z)%g7(2dP-s8ib~VP7MMRt=A|0(zJl@CG7F-VGc z`0A1G4>*_u#g~|!mEjSj+eLn{v=7xB4+^ibUlUjiMQ3)ub--U^Ax7CM1cy~Iu=*l> ze0Rx(*CI}zkhllgWlGg~Xat_QOWnzZ1TcxMec&8<5fMRB_ zv%g;>K@bCGw}|hOr?!>2<<7E5#jwY`F&3QBJ_lgZFMcal$FQ8}0)-MQH_(i=8B$54 zwW=bpD=u2ge03Y8BP`LvMrhqiA$@r-4OKhScSKPF#pq&{z-;=OIevd$NxgZqucF!E z$uyUuiInhMLt+x4+e=p|5K6$#dmngLM#u~=yd5QU+cwtmM{`D9pHi{swl@w4P`Rqc zsM_HhnbF%){xM}u}6_qEWVTF6e%jP5CW+yft3BB|>@lU#vNUGOowr1%F^t?^hKS&1@zj;ks z8|)*C3cF7d>uX@Ml0wo6uJqO6L@{&9!4$Qi9KAA6l2oy zm{Qz@tasYnl{@Tot_hlGKxJa_y&n3f%luBI2)8z{Jv}vKLzo_Pv;;VLc#-e8Ld8 zbLRZTFQQj;FS~QDX!7$HkDf6+(p*K=qAqZ)Rt zxVKMkNHP}b93<=Wz6`*9FIsdS*YUqTRrka~RqNg$_YuGWg3&5BiBkC2CJ8iC_}$~6 znx44_{B`|IpGhs(jPe+F-dgscL@bQH%h$b7p4T^sN#^d0^z|uy+@2%Rc~(=^rqipS zkNWlMMGQHcCH4P{;8($u!FBmNioO6iV}GI-0J@WFc|uK2{u+I1Gv% z+Sgi4u<4%(eUb@S4XPchR05T)NnE>>zy!!4Hv#zZBUy$;kBj;C8OskoIg*E--0ifh zygw2d!roDp6o9sZSDlh(Z^v~kxFs*VJ$=Rag54PgIZM#;8TPJ3mMc%0R8?*IcU>x7 zTsJ>m3F}}LIq#A;EqRGG37>phS4VZVW$gAO2NxSwOGTE1myGo5C?&YAI)v!L265|y zdq^eb4V!=f5S=d&z?h738V`eJo~zn0Kbz!(A=HXUs}sjt?3Awl@-lQ@Y zqH|tjEJ;1R_x|Hw{IUbFFAE|=VB$?roXt8fi!TA-l<(A(b+(#FyR8h zYaIHDI?v*CU5fhpuOzPy&AxfzBR@VrT?sR2$uZpj71_HH6xu zcRzjIA753^{5WJ6qY$8Y+3I$-F-?CKguOUJ`EhJ{{w+>d_M-9`!jv-5I(XCvw(Ppx z4Vd73@(D@|_QmEb7F+@eShPtF-06Jz7?h>{D*TN6iB%}qiEc!+>3vM_qY7Kijp-Z0X)RftID(+aTtmZYbirmb&z1Gc$Az~< z!f>~AnThjnEu0*`l}~w^h)Al|SReKuv|=(*wU|jCsxNVRV(waZ@67Cal_qwB?=Z%v zsE)b!@m}fQ%0fYA_g9R~zU%4sy@fGo3*0X^fqgN7ZDXeb{?`Wyy|BjyIR)->jU|?u zrVb*Y#f^E*Ukxuj3A?|de8GU@hY!_6_F&LV7Wzt%`s*yHe^E7RUs$37Q8RC0@9m$hlz6x_6p;E{H$F+Qkktz0kQ&~^4^># zJw}9AJrp5vpO|^eQ|2~`WOdWIuUUbnomj%*UzW3p#eBkx7T9|!FeehpVwY?al zufF0~eNlH2-;D3#%|gXXVXl(`d&X<|G8q=D#-3kM*-ick-ysQ?JwR`s@g8h33l_+OmNy+aGs-*&i=@?C=K4e!;_d>5F@`ReuZ9DTGa(qtaHDe zKRzvbET{5ONsJ(PR*u@qMU2VaKVBUD3!w-+PaO6?_Ic1pw}rE82X zfr{^qGhIQ4-Hy0V<22#<2y(ur8%I!f8+Iww(pqVEJR*8GX8SgHrzXyKy$l#9zot!* zUdLl3b4Zt@1b>a&U$ADtzRBdde#LAP+mFMQxLtZWg$p4L`IICP`~~o^{ zS4VBQ1hc2)Nu5Gn>EDIAOPJR^bv13uHy5Ns8)Ak<1>rysXh`W_rt@AjZ%KO=iGY4Z ztXdgp8HRS+g)SSa7f)`$<3eGbSx9{*)q@njc^eS!<08=ot6o`YR@#2n#SQX)YDGa< zAtKBVn3Qi;@{>Il<{KzkIxown@vC1)N2aYa!R#K>)MCHbuxDGShljb3Sa680i+$2F zHvC6BtTY%7UeM0cAVd)=b|*ck`tepP&e}{W8ftfLyRn`q=ViQ7!-KUuVtX|Qe(Bxk z9h)U|`-Y3n6cay4_rz=K7ON=Djx-KaK2}L-=5KW>R-4Z2Z775i1aL~b`tDwhx&DKz z=ATs?atPVyUhsj*Aej3V4RG1AGUL#;DxZYYWq3cj0Nig`bX+Bey z=AB!i-!FLmDl4WU=`@R{Ec7m!i@ss!i~RF8&~NT*ki(X31=&70y%A?sB?1_5X@!!C z+sw2kx-Og&tlI-4!#{yv9dzLljSnS5VzTm zvT9!V%I7Rw`%&*{3LdTdK*z9EMYy9ygjwK_N0WC*Gl@oV@?O5>HGNz%_)LDI7?MaD z+mO5hS^|Tg|FvQ{{}QCN?Q1)jY%Hr>b++n^C6h1?>*5(rQZzt!FvbNf-&fB#eyqvW z(y-L8h-ztl$u`WVoE4P7yt8O#I&3b4^|C@r+*tx5NEs$n8+$J1y#yk-`|Hzqod%(Y zE5qR4A>{|*3NDRPx_Y^Y&>ASE;>gb+2WE!PGR5wOEm+SZhZk=}yhoE3yl+?K@Ct^r z^+hI6^IKZ_9T)jjSd%{#rO!|@JLeSWptbp!=bF`RP5)w$8QdHPS1g#J1I?J{#*X9& z9*ef}^<|z5!DrrPzz_19w?<$ILqg3fF17EP1Bx#y>8B1AUXfwo(D3XVYb88rV`{y+ z|K)dQGCrvHZynsl#*CcZ1pCvow|1Q^;BkT6%X-T;k1gX4($bRjzitZ;G6|nDlL1vh za+zLBm^OBK0bX)LHJS!7Y6&1;)4_046Y3q*KWt8@dL)~(dx)*P*iH>$TVNPo2)-;b zr~nT>3|jAb6BJ0ka|eBUH@gcY5rEl#XOj)|CVZQItF3Cr!@Y2#Z-saHtc^`vhI7ks z*!KsVI$0}Ox1w0r1IAACKKOVmiZ4teL~`BB8#1b&bnVFR7AXO5W;J^$V!+-&pWoTh zMi}gFrwD`CwxfjIv!FMT7Nr%cOy?o$TH-+v(sGkdZK}=WLo*SNUR0)k$u*IJOf4GIgf4S?yJy zUl){&l!xfJxt)K(0X7KhilIiwAdZgg-}hY%S3!r|aDZG9!@OVd_4{nqZyMga7rrV` z=D(&s(LLQ#@v~)L0p!+mLHJU%C)bJqvoGe=4Ho@4g`D%xgWinLf8TxREBe>*Dmf0u z7h=xrY8<<3IPq&r4Q4Xfk5894*H<`PX)1)Tv$z6ly!=Mzt-$KU+XLv*8AF#P0X-qklV z+2n&LJ&zzW?Bm_{9%Ge!BOJ_d{!W>$1p8dlV7wWR#x`Xsf#Ai>PEAV_-~^e@x7x_% zvohtgPXypYRo9ELZb9_1D!0wgiG|@-Anul6z}uEFXI5)M7NZD`7!wf2oEPVXY+lm9oT79GJdXA%e?Pk|;0gv$Wd z-u?p6*wMzUMbUop`UFX=SO1PUS^^%eF2KGTx+q2@mP((L4*LaSh<$0*?%`V77!$c} zb!EMGzBph7dB-mq#Q$7M8e|hYJv%bhJ=OGvgjDpja&Nf3j`-M?zBn|2SdXG#1bWy8 zgnD>+njTn%JlKyOcTW=M82-!=k&tq!ImG4247GUwul8N*n&EecKyQ2VMsgx;6Kzpw zUx^A&O&P`sX_A}+7FcbEPLRaxuH1TOT6hE7*JaIy^h9sLih@LHac4mZgXgLZcZm08 z9Tf}_-qCg$Zam}%WTysb=-mLUD8CoXJiMcjxxwWg_KUfhQ9bK_qEo#Of~W#i8v zeEg$JJEEHN0lIyth&Fa9>9%04^Lm2T@v{fD7uZIESIcYsS>AdQIGnq$F1P}QpQZ$7 zr~$6kok`&E3B&$R57Y0G)GHb{xz3FZZ#)xPp5h-M?|&iILq0*$LxPBnpQw8tUr%H- z-x)kq{>#~zzZMpelS6r>owmdLJW7&<`^K0Ak$C8?4-9e0;O~nts$YOKriL42zS}dc zLM~{PiGn!96n2n=-dHgxEJ~;JF_>9vYTo-=;}W6w*nQ)|Pgfke(~{VqveVEsx!i9D z2G9)4P2}Da3yxELsyfN0MD_D)$occvxmw;@L{Q#4XLm3ooa3W!oGJ*RZK9lax3}hB zQU@S;zm~7+HUmQyrQ6;_PVC#lf+?t{6kBAp^*Fh_eL9-!gj%3NfxPJAG@()Hk^nnb zg7jOyuw<5obgLYI4bVIcyn0vY%QGobr(o0zu!HCoe)@SDJ>d!czl)KHr_77F@~Lh& zuQD9G(p>huTJLoIEC^4*iJjXSk#b-<*R<4Lu;^TfG>8$x?MKIj#(A*Qy=#xOWb1H; znrIPr-kO=*R_1j4nekSiq0B&fTiONW@DB{SCoi{Cr>KM`RacR3EBLJGeJe_45$IO} znH&1Z2QLr0LJ#BwmB+%;L|{y6D$grO5Nbh@>1?x5kjJLuX4jx-^XnJ1Q()q}c;OHO#B6T&P0MKOV#DI>8 zW&keoGlb~(SgZ!p{x>CKs+ZT(67;@s-)w1BKNkOH5`J)7NFyu#!N1ac5>5Ks*xeH| z3@my#@-BHxuy3SR%)`LA^{t2i%1pa-oBy$#brEI-t#wXK&#_bHU>{xXTkS<^d~#)- zPE{F}4W++7SiFnID}kBIF2s}hSl2F@h|aXUzQx6EUy7kI>KJclY}uJ-D?!p>0b65=lnhfUqy={aAeU5%01UHApruaQ21 zmD-GeViP%Xacs&Re99}Q>o1$U_z9zmD9CDWaH56+^lR%$&u)05t|XP}zH2;r=(tgc zYTibNlMq@BB$sv{B_@CFw_o<8;-=2&h4SZ+w1uTv z6}}3!@7eOc>qEIPN3Rz6Wd}Frcd!<$gs~BBZ0zw&*`4P+E^o*rY&|Uj-XAhd>Ym?$ zRjYpp4-;pxDusp0SWq7RKl2Cx$ZZ`-!E}>m+nxgRVI=Py7kGx3eg3D+ z1VZH5=7NRH+hfTLr}P+$EuD0XjKI&f@}<7W9%C8b?AJAO0*&u%62sXfnw3+|^~s(- zEp?#CyP!PRk7{YwA;OvEg--K6HIHJOEOMLMzV?Bw_-2dgm7E)SezY5T|JbvwNC1Xc zWq7%$P&>jLduA)~40)gg=BFdb{dSheg zt97U2O?Ss%{)Ivk4rgHmP)HY{;#_{~^qIB;=D6Lb{rKNcSZlZM?~al7N(RkC^x66< zpjuja{h$PWE*SaBTz_dyOW5ZFN8aCe=5{)7Eq2a+fA(|J=wqsN_}Vthi5{bKR8g+d zIM3)UA1(GEc5e}8RpA9<^uge$j)ztPLjzz++XUAxz#o65!xW|A0(NnAtrh%Y-x(Yv zESGO#r|?{>!wbbm65N&O{f)z|;~xLjKI+?%iJxad06;J{{&k`zl(%i<hy*^Q_~(P+bqs5XK`bG@3-|k5?(W+4JjfW$P3gwczG&Sy z=-kDGWZljb<>4P9MtzQ6{zT2EjR`pfvF6?=I7Z;)rmxy^hP zzf~Jk-T6B`C8dy9rLefTCKY^->$OlTy7S#8yOKmPa#$ABeqfmdbd!hc6rcEozI+}>g_~%tHW262jlTG~*%0$;p159rJRjPtq7AbO4+1KZV!{YJ6&M-3 zeFn3s&#ljhT6gxXjH`n4)&O?Oq(>EgPsO{iCYe{yr9xnGD;M>4+%m8FgWtwxXZZpR zs+8tdp3b>i!osa5U%#^Lkk9nqStKs@GY%Ymyy(jt=|FNV2gsbjL^r!8<6Hy&=)^dG zUI&dffKQqYTJhd`VDY=B=U3HTQ2h~2nlIxn`?)%gY8m*}cV;N)2U2j2vQu@uuav+Wc%BLR*Nf(6uVDVZ*{Hs89aMm5~@m^QgXoL+HmjX%dk0KVX7PYGS138n0SN#FKwKC!StWP;uiAynWIVH0Zf`NV%r$ z3+PQSl%???sF@(E!tT2DcFLL3)@url^0m^CEz3KRz*Jx==sl|b?_PjcfTl1UE3nM9 zxkS58lv;q-Z6}z5 z`ptFvu_WI`a~KyR9U2lK=r-cF@H})fXl`E9@V#N&OJ$?#A0_7s$8InCPngPxzbz7> z^u}%ZV96}~$8VO4iKB?D(~=2Kl!|k6L-SxtAIGb?(m>J|%wqGQ?)H*!j9DPwow^yZ0?qY%HG8b@v(~FCi2hU0~4Khj+MihxxECmBNF$udT+%ho&5F+ zeBTi>Ljyw`HTp;KK3GpROQ}8C-mBmdu;&bp&Fi#Y)S2>0)pjVXbI%FwWbafmW0rND z7awoL==j{>{-bcFtu=xckrx@dGO26_vY^Pd#Gy>}}x7Zs(w1gh{_m&3sc3)bvRTEn?8#^db5}Ia~3q@yc z>5_pF5$%`S$(ikLwO$fkT(c#YLgM2q$gz~7+KYDB72~-D1$PnQfCJRZR=}LTLShpn zRbO3Xa9>fmN*?(Y0=?*@Ko%(L6&p(Ea|;x6c?Z1L=a(;{ME&fvh{Hb z`^rmiP~7BkvCqa-%g%riWL}1nLXM?=-)ZAFoAX+zC(rK^7D`@`B!U;;!RM$qN-#F- z3zBA_SXyiWOWP#P+IqHwGnd?(r54cGB6+T*xysGwl)0+U zg7FdNnZgie?(S}{$-^eNeoOm6VW;X$KfFH*v+L4y2xt9PGSEkG8V=$-|1f*hy|}*i zxIrzYdtas}Hd>4E`M#!h$Yy)GQ5heKU#u$z3vAN-@Y#__RDE~NOe|8#s4$7009SvwmVGs0xl5!oa{y zwG8CJ&eFgW~{2)I*{*=hBQ)lA5BJ27E{PE+*&)(OAe+{{O#jd0;^yEEe?#)Kk zPf$fgpIORgP!yPtv29P? z7}{y}9}yTh`F9=8qZu~B8N+bC*S1BCvU=&JMoRPLrb=WLNWX%CF6~NM;qmd1uTK$4 z8ItV*+CAC`fmw@`f8zK53FJ87BL9SsqhS)iLzJhzqNv$vJY!UY&jCeb({ZvYo}xh6 z_evbE{?Es#SS%veq`bDOuuh)uRBj zorg?1py+RN?GJBN0d|amA1J{N4ho;=4Hgs3+MH81YROnT9FRyJu`!s0j>0qhwkIv=ER>lZ%P&=r-mC5@W!QwGX|%?uhES!hqn*-*zGcF zZ!w0olC&};4kkS2Nwaq|mkjXP^1Ahx2d}3?iu1x-nkt<}95T>%&Cs-O59(%1rgwfK zRkAN{QZIlr z9c|FzVccb?Js|1KR4nH)r}GY~LOv_5uKDsp&Rr7@HPGl~<=0=wzoS-Gv=N@(<2rYc zTBSABNAEX>*t>f=Il=xT-vG-ME-&Xfdoe7&c9Z`5`%1wO!Ny@{hcwXsDs{b14ViY_IWtDKm0CI%$q(eDy3alOQ1{Ar;%s~+u~d_@{G!S5xFM} zjt^TuP9<}O1!ABk_6|FgLqe{TjHEwH{`~Y|09Zk zdH2m3&BS`0TM4*;^HA0eeNb5{>OFlfVci5Yt4^8jh1=R^Uf|l>4{U-VLly8xJumIr zd-Ud(qgGa(p1ZAul+KcH$)wEE7KqAXH~u+V1(WC(!WDwJlR*nC{n}R7m`7^F5gXT1 zNwYtxjku8ck<8_trdiqljAdZnnmbbNx+HQ)oeIMQkj)Zw*K)~2G`12bs{)bw$bFA; zGb<5|DkNZXc~DTvpIiO64_!Kn&i!$bCoJKrv6^YbLui^LOU+O^5D&zz;Z*==0fV+7 zSH=;tf1WaCZ3{+qs@X5!<8psohj-tB@itRfE!-Kw@#hCpeL2kuMj#xqPd)qRjtWvS zlUq#qhL4XZc?lHidKv!=px~x`_f~Dk(txnNzu}pYwQ6Pt)k@!66TLyemga>J#jnen zmE>!MunxXaELz&^>>NmzAq&O}{;?*&QIQdFL{VKuk+Odz~4NmQqGX$3gcSrp>PA%}oZM|9Y}uY6kPc2x#VAxSQL`M<`UY92!8fD2G6;q(o@7wN;hn<;hHu$(2pG??kQztcs5? zuQOBI9i~uMhpF_|Fw=q*HwPei}? zxQ4Uj#pe}N!H`^;iNYgt9E1m92I7LN8@*=&pb{dmrMkCI3Gd|j)fld!rxup**F1j2x zLgX)8Sm$v++hC>&)xRm~J8{C%j%r?y24%@n3`0}$H+l~!ugdw*_c z)-GYJGFAcT_`xNvprABuK`nz~l%C(+`vQd`@ZJvy66e|jM(A$%&;ToWZM@P3+;uK@ zI*|yGlS@4S9Bh9&1I$b}M{g=oe^A1JE+ZBzvc0|ia1zWvQ(jFd(zubkQ z(k9z)F-uEJJHYD)UhO&>^BJ~bZ7$rayHzbT8>`4JtruG+%@|p~URSj093^tGWb_d; ztJlI+_@1e=LhAefPN0&J%}?zac?-HallNhfqR`n!)k_j5bd>1*v7Ok~7@qWK>Vn@) zY)ICYB$uC<7HVVa$E)+?qY+hG2(e9+%!=2XHe-ZphJ;bEr1Gprzpnwmq~8oB9b$iB zd|i3H98t`V!T$XDYU2cMCHp{9dFBklBU?Ctcr$!79eix2_?Zy!`Z96Nz_Mb|70ltm z%0tb~J5iv`e-@8(Q`T;VGZJ{28NO+nf4u6Cq|z*_>u}zl(Q}-k*+BWB*8`}?flKqO z88b^`(sb_F!rE{G@04}I*$y!$%x(_r*Lv}lKi0FkQ>N?{Qy7o$k!FL7T#fl^iEX6B zUr2#*vVt=5_O_(o>=xsHMKl)+ozAhDVqyM216`rqhLJN!Zb5Xrw79d8TyI27W^2Ts z_qeO}XPnw7XV=4PWTB0rn>e!wx=rUDr&$%ouvexxu-T@r%JkLv0&)KZOM8Ot^0P1no*U1U8lw6wjn5z3QJ+M1^=C0HYq{nyo!P8ay+ z&vwF$N!t51>W4od-W5%0{;Ol@dpIxa=7weurg5t*9UNVRh>u{R75Z;}Oa1L=o25q-FVOyQOYmJ-MQ zq#-v^^h`1C344*l-$m(zzg6tbNSYg-!P5m$!}#ryfoB!6gO>Cu%#BWa#N}-DLr3+4 z=3F&_{UDL!nTA5W4atd(ed!&t0ds!NgHHB==S-NL6{r(+{nr#QadU=z&3`ateQJlkfbNZ5^?t+;{I)US(y?KR{gX_+SEUC*sfB zhQ~42#dLa%O{;#weUIs8gB@6@hkBhhDWN_Le!N9D%oUX#IB2ehk0I=Xcb>}*R)3r% zgXz8*08_8B0V(Jf!saU$z>G>8Hd2&co1tSZcSw_7XH4A3lZQ1jA5I1u;K^4?6(m=wDM5J{qrDRfl>gl&dnkb~f9dbOm^58lABti-u zhdiB-m_X2{IgT}w61ONgrhvT3kiA!yTe;KrwprcxTlVZ`9f6c9S8#|jGk&!Ici*$k zcs-FLxb=nss8MeEc%8s}ed>G!ASvjg*)q&{sAnbe~BnpQTR{?B|L9v~DO0%}VDnZay&8)x-J zB)@CT)t4SVr_QA_hM}`+BtUbbl3A1@`q{Nbxcr({@R@t#dyt#>CTLdzNymMlex(h! z2TK>F+{3)Fw{t^N4n>WW*5`9T5fO^sK1BC zCJZ7Rn@QhY?z9PB0bUU*x+(NWG~lhdKDBL7jR1MhN`L@Bc~9eJoFc<}vIK1snXEpN zW6Tr~dTQ-Gp5eeb~|e#0j8qv&!btjbS9Cj&WatB1pTx;^D@BVW3 zT>1J(90&IC-Fs62v+6^B1V4X1(-nc3?ZD2%D;jHh5q?!6nNj;%CH<&fcjr4jsMWhL zoUswPAJJ&5g2Y&tlC~GHxV7ESes$xchS^l#h|!q4={EF*(AwSYOr(9ciUb_f9r9Te zwpr6ks%XIP;>_e%{`mUlVWAo?o-k5EJZcm+gaL^mDFv!I7BA-Ty8R#*VO-S4;&>)Ka3$H$VmY|eI?1gI7=jiJn+!zGj zezUzqLLv?Rg*CCE?wTehTpxsBHaF0;)j-!#dt~S-S}U?ft8wdx_wlX0H6}HMQA1sF zIT8!Sq)G%mkV`<3(rqn#yu1`?iv}D^Xj;X+rJgrczH4K_2g6?<4N4wPukR4)v?op1 z9qj7}ImtU6qUV>^>thBT1l5AP<+XNyJx~vD|IEy6L1 zXI28pA)&6HRJBPHj$ZLej`#0tWvf@&E*p4m&Pqb^A;_RlHcj~23W-1V7d)87T>})$ z8jNph8R(HvSF+0(h-8cD=4V*1_xPYR3Z+h8b$>C^ZL#Bmz>t5sogEI^Y@Z+4(f1MK z@={vC)7IgxxZK(VR=A&EuF`ja4NuM2Y~mjupRhB=YJE)=ooU$tMrhMVXtdD0`xwu6 z{~&UuYnHUtig?$Nl9r>44F}8K2j7HFd-G#*auC56u5D{;PFP38fO#J|*SEBw>15;M zx?*JHW_#XNFuVbBuVM6hfmvzVW|mfc2FXu;ZS-Q&dsmc>gKuSNLn2;=Giay3T+F*T zoft~c;HWh{N8z32OtD$VAS;=9&~&Qa!B@Kf39Y?Ro09sMk#VX;jxr-lX3+hXt4E|} zG+J9H6=c4}f_WT&fAuKL65nhj{wzRlnfa%YsMr1_Km42FU`D+92ch+8Nn`91Z*}(X ztEx*FU;)I4o#^f!8`IBty$Ipj2TZ8uCpLH%{0_SN>4DIU?LdfW3`&NwsVK4r=6_$C zc!1TcND`&EGf8lTWQj2=O}>S@jDW6sCyYQN;HaHW|` zU674k>qy?Vfh5+LnR2HpNFz{yLh!BJX|tj8*5gjq_aE_%Aqr3N+BU=Z>d#PdXw%IO z5$B6-e6-PY;n{E|-P$XXKb%$|v$erhmfyl$h9UQC&-=|9KUZ|N>b9Vb04-2{d#lIg z(lzz6Yj#fbrp9`8yx}ix_;T}Vc;PYsa=lnS92*b!vDvMB%>Q{B|5KNQfG74WK{I0% zm($rB@@H%=dQdIigb0Y$TH!(q6?R88lS`z4&FO|!7sL3=nttw%G|)=Jd|as8p6=^ zb+_A~9YS#X#j}vRn(ob%h4sM#b8^1w-g7SQ%ho=Y^~q+X=FKfiZqUS&YTIAd8Ib!McK7bjpG1B4n%UIDP53?f&EHm0 zjQyOQlug(ZS)8a?508iORrjOM7ul-1%7;4KOI+FQK4rfu&99Zy@ zjq74AA1Yr{glt-1S$#}7_YKNV=GN=X%=5be>l1HK(fE|k%PFEHnp)H%wqTuTj6d8X zbyqvmDC_kQ^cU#M&Mz5}&zGp=bhhp}*FL?Rv%&%&!8I7Ie0W{Xa-NAg)ZRoAnr@pDk$nsxB$>=%8uc80suh~YKJz@aO zr6X4jwLqg?;5)6?D!~x>?7wiL4Fd_Z4~p;#JzSIXI!X6WA3wt3{wr9qV)6g=4}t=`peHTYtBn3k`cqa649%aV|C>&_Ypw$-W04)Y z!1pJJxXZ!}`Wm;N{pXK(MY~P_O^xx&i#zhV= zNPFQ(Sp6jxMMCi@ecmh7L| zQ|v8+=kEsPy_?t}kVevOio7v&y?^>%&$u{667$A?Rc#}Y>2UaK)2oVzpF49YX88aG z^tCFdQzNy+uJ&bT-D`=!sc--|RB0x*Y*9u>ZSElb{FKF^2u&hhcL{i9kSpLH_p#K( z=?=rcdjU!z#M$bd2_NjdS4n=zdTqh47sS=kav6CDq~O`JXE)DRD`o{e_VukSuCJ_2 zJ$?H00AQqy>wR>HdnD5JroCCmzRve!O2Xv;ZV|im0bt=Aj)0|AV|S%} z_X%{kS@6M9tr&Nk-RFnt?%80brk%WxzW7i;4>L#nZ#5wKF$^>%Gk-hlpA)S8LPy&s z2QjPCaRdDSwRiRLOs{``gmOxz&N)dK$Eln{Bs3CRPdMb^u5(T#<8aRLkT9xYvylqF zb7n~%%ENTTI_H#;Vji~XM-=9%2Rdfc=6SJZG@Cu#-=f!@{`~!S-}m?5?`C^l?_JmX z^L~G>_jQ4~3G?&e$BVw`J+0)spSR1|>3t`U)!HY&bZLR@N5Nf8GNX&yJRIYaUk`e0 z)Nb<#H8_WtJuL@%xZk+d^1D(v_ez+wy-qnYlnU=L&`mij+w#qf^9|Mhf*(;>M`HA- zHM4V%z5Nea{V_mW@e%o5=c+=*u8)uCDRGX7i@Rs|1d;G2Sh~Oavji~<{&YGZVZtLwsM`|I3_PZu<`8cJAYgT^*QEO^;F>>gALoVdIh5RE*1+B7;$RaDM>I?% zvic{5Y{x5yE~ZcwvUsB;W1bw=-dp|G%{XXC-fIPduknQ zn-4B?o;*oYHphI1J+V)jR2OynJ*=us>lUslv$EL>o0ru@5Iuq1@-qEOp?tz4D{rn>${_$ZR4SI(ajz;pqQU-GqwR~%pJy?5}2}DV>4*-gXz?)ay{=yVlWCRV|eniN{onX?JOoyAJnaVJ_>M=}I4qxyY_@Qzbx-<4`8rBu$NX?XJIk~NFHDtq5) zre|@0AbwyB_K}BOhoaI=|f>xzN_T|nz5Z)Z_6Lx4$)~Ac;T-JbQLP2hfk-80@?c3Npp+zc*Qw( zI8}mTR}+Fut+|hwOSX8@_UOO1Jm5zws^>YvVL$8XM_3!iEHcIbi!){9!8Zx0)OO+~ zK7Cfe(UFEU+GKHrqJ4ROh&=t6C^O^hgV>ORf94>5n`sm1V{l&z9L19Q2vf8Mjk6&Je6lt!tsmY^w4ew;}FxB7jwkV#AZ56_s&qGqnLHxBJ)d% z6|=*(9C@Q+8NAQ24E{#`>u{cY*ynk+C=jUe&7jD}=NH*Cu+9(L3H)IcFI*D~h-CmvRC*f%YFzrF| z`5A+wq0$H~u~d{WByJFyGs??Z@&+c`2r>Ii#arJgT|nM=EO6sDnvu*5L{puD`d71B z>zBl3(7G5{7dhq@%%#T9fafGM=+L#9+&fxUuT5qR74(pfu=CmteS9;h&OO*xUs*UkxeS3byMhx5WS~oes;$ep`Cw)x*`QSYT*h(`NZrbgCM)n@v@isTVL1(e{&uHJ>u?lozSofWZovQA`falnKriU1% zp#{V|W;~_Yc#*Q6?cN?Lvl<(hU>LMrfrb0BTP`|BL^#43^`@#qW{JhkgNDz80$&~l z5?tBx@K&>?424rkd+#v!!Tkc5Xp7qr-&~dn|1n;SC@K`>o>GN0OiU(Ey~%zxp99;K zdnHs-k{aiFNN&5yO=%VmoSgDOs1lX?2c#VY#;&zS+onb{p9B2`t6K_3jf^vwLoNGm z^^ChgQ5~jjFy%n9qn~3olW^NXXQFDPb(_U6hCPTn|LIo#S{OFUF5S{%3b+=SPW!>Krw2srlqIOV|~2xs&jQ@EAo38;$3(^Dn5TZE`Tn05td59!U8L*;s;U-xB2GUw(z{3nR)s>)F_UNt*8+&u8H z+QFjjP*#%N{l3!Kmrg|+ImveL`^i&N1HX1+(Xyl>?bxw6is3oJLT>I^ZkTJF@9u(a zqr@iS!u;!=JP%t#xBEV1l!cc9poGyHt-WzAZ09&8jaFiuI2wCWFh3@l@SKGHbihtt zjQg5k$;_&7xsX;Yy_4pL>ip@EQjs?1u9S+0%jWdVTQ|9J_^&VYWoNP%VcvS~r&tdU zyp~M52HE^eL2CXPs84nZiqG9Kg`YLoSt*Nj@n9b7_RE;j8EX#x*&&jeU!%**NPb2x z>e7^H^=Fq!DrzY3xvlEMicC+)S9VhmC07pkck&yQ{%lVZ#uo1NPKpeZzvqH{PY{zVIE>UA7-;tkIa};4$soM; ztTb*s_SV^jXsgB>b{KYfK`N73NG&hii&UDlu>*K?zq%awwosyI%tG&;KZdwy`GRC~ z_-;aRXa3A1gUyb?nY&HjI(HkGlk;uP2lAHa+pU}?rEN*oGlSkywt0)rFShpBw+yXl zil#s$ zMc4&z>6G@Tu}vqs6GG`ZYf}2ymN6B%&vV%(F`bfaeqBV#Nd~pKo88KM9!Z@j)M-uD zmBsU*RL>mMi}qoiA7o1k8hf@P`Yml(c#{0y>P4MP6}0Qt%A)^4EDLz0Ms&0XmkSTM zi?4fkAm(1m<;&qGe%|!Vq5*a!R%cwnqWSTf0MP)^ z03`${A^sza3ffZ8mV%Lz_cgR?MuzX%!9T^juz4{?rdmRL0jfQ?0(ekSxuo@t+ yssCSRY)I8p5(ENy`rY9J-~Z1V{J%g8T9BH%o%x4fUj&8+`R<7K;mU)-7ycXKj|-Xr diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js deleted file mode 100644 index 7a78347..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/test_full_bson.js +++ /dev/null @@ -1,315 +0,0 @@ -var sys = require('util'), - fs = require('fs'), - BSON = require('../../ext').BSON, - Buffer = require('buffer').Buffer, - BSONJS = require('../../lib/bson/bson').BSON, - BinaryParser = require('../../lib/bson/binary_parser').BinaryParser, - Long = require('../../lib/bson/long').Long, - ObjectID = require('../../lib/bson/bson').ObjectID, - Binary = require('../../lib/bson/bson').Binary, - Code = require('../../lib/bson/bson').Code, - DBRef = require('../../lib/bson/bson').DBRef, - Symbol = require('../../lib/bson/bson').Symbol, - Double = require('../../lib/bson/bson').Double, - MaxKey = require('../../lib/bson/bson').MaxKey, - MinKey = require('../../lib/bson/bson').MinKey, - Timestamp = require('../../lib/bson/bson').Timestamp, - gleak = require('../../tools/gleak'), - assert = require('assert'); - -// Parsers -var bsonC = new BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); -var bsonJS = new BSONJS([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]); - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.setUp = function(callback) { - callback(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.tearDown = function(callback) { - callback(); -} - -/** - * @ignore - */ -exports['Should Correctly Deserialize object'] = function(test) { - var bytes = [95,0,0,0,2,110,115,0,42,0,0,0,105,110,116,101,103,114,97,116,105,111,110,95,116,101,115,116,115,95,46,116,101,115,116,95,105,110,100,101,120,95,105,110,102,111,114,109,97,116,105,111,110,0,8,117,110,105,113,117,101,0,0,3,107,101,121,0,12,0,0,0,16,97,0,1,0,0,0,0,2,110,97,109,101,0,4,0,0,0,97,95,49,0,0]; - var serialized_data = ''; - // Convert to chars - for(var i = 0; i < bytes.length; i++) { - serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); - } - - var object = bsonC.deserialize(serialized_data); - assert.equal("a_1", object.name); - assert.equal(false, object.unique); - assert.equal(1, object.key.a); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Deserialize object with all types'] = function(test) { - var bytes = [26,1,0,0,7,95,105,100,0,161,190,98,75,118,169,3,0,0,3,0,0,4,97,114,114,97,121,0,26,0,0,0,16,48,0,1,0,0,0,16,49,0,2,0,0,0,16,50,0,3,0,0,0,0,2,115,116,114,105,110,103,0,6,0,0,0,104,101,108,108,111,0,3,104,97,115,104,0,19,0,0,0,16,97,0,1,0,0,0,16,98,0,2,0,0,0,0,9,100,97,116,101,0,161,190,98,75,0,0,0,0,7,111,105,100,0,161,190,98,75,90,217,18,0,0,1,0,0,5,98,105,110,97,114,121,0,7,0,0,0,2,3,0,0,0,49,50,51,16,105,110,116,0,42,0,0,0,1,102,108,111,97,116,0,223,224,11,147,169,170,64,64,11,114,101,103,101,120,112,0,102,111,111,98,97,114,0,105,0,8,98,111,111,108,101,97,110,0,1,15,119,104,101,114,101,0,25,0,0,0,12,0,0,0,116,104,105,115,46,120,32,61,61,32,51,0,5,0,0,0,0,3,100,98,114,101,102,0,37,0,0,0,2,36,114,101,102,0,5,0,0,0,116,101,115,116,0,7,36,105,100,0,161,190,98,75,2,180,1,0,0,2,0,0,0,10,110,117,108,108,0,0]; - var serialized_data = ''; - // Convert to chars - for(var i = 0; i < bytes.length; i++) { - serialized_data = serialized_data + BinaryParser.fromByte(bytes[i]); - } - - var object = bsonJS.deserialize(new Buffer(serialized_data, 'binary')); - assert.equal("hello", object.string); - assert.deepEqual([1, 2, 3], object.array); - assert.equal(1, object.hash.a); - assert.equal(2, object.hash.b); - assert.ok(object.date != null); - assert.ok(object.oid != null); - assert.ok(object.binary != null); - assert.equal(42, object.int); - assert.equal(33.3333, object.float); - assert.ok(object.regexp != null); - assert.equal(true, object.boolean); - assert.ok(object.where != null); - assert.ok(object.dbref != null); - assert.ok(object['null'] == null); - test.done(); -} - -/** - * @ignore - */ -exports['Should Serialize and Deserialize String'] = function(test) { - var test_string = {hello: 'world'} - var serialized_data = bsonC.serialize(test_string) - assert.deepEqual(test_string, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { - var test_number = {doc: 5} - var serialized_data = bsonC.serialize(test_number) - assert.deepEqual(test_number, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize null value'] = function(test) { - var test_null = {doc:null} - var serialized_data = bsonC.serialize(test_null) - var object = bsonC.deserialize(serialized_data); - assert.deepEqual(test_null, object); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize undefined value'] = function(test) { - var test_undefined = {doc:undefined} - var serialized_data = bsonC.serialize(test_undefined) - var object = bsonJS.deserialize(new Buffer(serialized_data, 'binary')); - assert.equal(null, object.doc) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Number'] = function(test) { - var test_number = {doc: 5.5} - var serialized_data = bsonC.serialize(test_number) - assert.deepEqual(test_number, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Integer'] = function(test) { - var test_int = {doc: 42} - var serialized_data = bsonC.serialize(test_int) - assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); - - test_int = {doc: -5600} - serialized_data = bsonC.serialize(test_int) - assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); - - test_int = {doc: 2147483647} - serialized_data = bsonC.serialize(test_int) - assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); - - test_int = {doc: -2147483648} - serialized_data = bsonC.serialize(test_int) - assert.deepEqual(test_int, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Object'] = function(test) { - var doc = {doc: {age: 42, name: 'Spongebob', shoe_size: 9.5}} - var serialized_data = bsonC.serialize(doc) - assert.deepEqual(doc, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Array'] = function(test) { - var doc = {doc: [1, 2, 'a', 'b']} - var serialized_data = bsonC.serialize(doc) - assert.deepEqual(doc, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Array with added on functions'] = function(test) { - var doc = {doc: [1, 2, 'a', 'b']} - var serialized_data = bsonC.serialize(doc) - assert.deepEqual(doc, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize A Boolean'] = function(test) { - var doc = {doc: true} - var serialized_data = bsonC.serialize(doc) - assert.deepEqual(doc, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a Date'] = function(test) { - var date = new Date() - //(2009, 11, 12, 12, 00, 30) - date.setUTCDate(12) - date.setUTCFullYear(2009) - date.setUTCMonth(11 - 1) - date.setUTCHours(12) - date.setUTCMinutes(0) - date.setUTCSeconds(30) - var doc = {doc: date} - var serialized_data = bsonC.serialize(doc) - assert.deepEqual(doc, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Oid'] = function(test) { - var doc = {doc: new ObjectID()} - var serialized_data = bsonC.serialize(doc) - assert.deepEqual(doc.doc.toHexString(), bsonC.deserialize(serialized_data).doc.toHexString()) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Buffer'] = function(test) { - var doc = {doc: new Buffer("123451234512345")} - var serialized_data = bsonC.serialize(doc) - - assert.equal("123451234512345", bsonC.deserialize(serialized_data).doc.buffer.toString('ascii')); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly encode Empty Hash'] = function(test) { - var test_code = {} - var serialized_data = bsonC.serialize(test_code) - assert.deepEqual(test_code, bsonC.deserialize(serialized_data)); - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Ordered Hash'] = function(test) { - var doc = {doc: {b:1, a:2, c:3, d:4}} - var serialized_data = bsonC.serialize(doc) - var decoded_hash = bsonC.deserialize(serialized_data).doc - var keys = [] - for(var name in decoded_hash) keys.push(name) - assert.deepEqual(['b', 'a', 'c', 'd'], keys) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize Regular Expression'] = function(test) { - var doc = {doc: /foobar/mi} - var serialized_data = bsonC.serialize(doc) - var doc2 = bsonC.deserialize(serialized_data); - assert.equal(doc.doc.toString(), doc2.doc.toString()) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a Binary object'] = function(test) { - var bin = new Binary() - var string = 'binstring' - for(var index = 0; index < string.length; index++) { - bin.put(string.charAt(index)) - } - var doc = {doc: bin} - var serialized_data = bsonC.serialize(doc) - var deserialized_data = bsonC.deserialize(serialized_data); - assert.equal(doc.doc.value(), deserialized_data.doc.value()) - test.done(); -} - -/** - * @ignore - */ -exports['Should Correctly Serialize and Deserialize a big Binary object'] = function(test) { - var data = fs.readFileSync("test/node/data/test_gs_weird_bug.png", 'binary'); - var bin = new Binary() - bin.write(data) - var doc = {doc: bin} - var serialized_data = bsonC.serialize(doc) - var deserialized_data = bsonC.deserialize(serialized_data); - assert.equal(doc.doc.value(), deserialized_data.doc.value()) - test.done(); -} - -/** - * @ignore - */ -exports.noGlobalsLeaked = function(test) { - var leaks = gleak.detectNew(); - test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); - test.done(); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js deleted file mode 100644 index e9282e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/to_bson_test.js +++ /dev/null @@ -1,109 +0,0 @@ -var mongodb = process.env['TEST_NATIVE'] != null ? require('../../lib/bson').native() : require('../../lib/bson').pure(); - -var testCase = require('nodeunit').testCase, - mongoO = require('../../lib/bson').pure(), - Buffer = require('buffer').Buffer, - gleak = require('../../tools/gleak'), - fs = require('fs'), - BSON = mongoO.BSON, - Code = mongoO.Code, - Binary = mongoO.Binary, - Timestamp = mongoO.Timestamp, - Long = mongoO.Long, - MongoReply = mongoO.MongoReply, - ObjectID = mongoO.ObjectID, - Symbol = mongoO.Symbol, - DBRef = mongoO.DBRef, - Double = mongoO.Double, - MinKey = mongoO.MinKey, - MaxKey = mongoO.MaxKey, - BinaryParser = mongoO.BinaryParser; - -var BSONSE = mongodb, - BSONDE = mongodb; - -// for tests -BSONDE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONDE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONDE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONDE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONDE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONDE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -BSONSE.BSON_BINARY_SUBTYPE_DEFAULT = 0; -BSONSE.BSON_BINARY_SUBTYPE_FUNCTION = 1; -BSONSE.BSON_BINARY_SUBTYPE_BYTE_ARRAY = 2; -BSONSE.BSON_BINARY_SUBTYPE_UUID = 3; -BSONSE.BSON_BINARY_SUBTYPE_MD5 = 4; -BSONSE.BSON_BINARY_SUBTYPE_USER_DEFINED = 128; - -var hexStringToBinary = function(string) { - var numberofValues = string.length / 2; - var array = ""; - - for(var i = 0; i < numberofValues; i++) { - array += String.fromCharCode(parseInt(string[i*2] + string[i*2 + 1], 16)); - } - return array; -} - -var assertBuffersEqual = function(test, buffer1, buffer2) { - if(buffer1.length != buffer2.length) test.fail("Buffers do not have the same length", buffer1, buffer2); - - for(var i = 0; i < buffer1.length; i++) { - test.equal(buffer1[i], buffer2[i]); - } -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.setUp = function(callback) { - callback(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.tearDown = function(callback) { - callback(); -} - -/** - * @ignore - */ -exports['Should correctly handle toBson function for an object'] = function(test) { - // Test object - var doc = { - hello: new ObjectID(), - a:1 - }; - // Add a toBson method to the object - doc.toBSON = function() { - return {b:1}; - } - - // Serialize the data - var serialized_data = new BSONSE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).serialize(doc, false, true); - var deserialized_doc = new BSONDE.BSON([Long, ObjectID, Binary, Code, DBRef, Symbol, Double, Timestamp, MaxKey, MinKey]).deserialize(serialized_data); - test.deepEqual({b:1}, deserialized_doc); - test.done(); -} - -/** - * Retrieve the server information for the current - * instance of the db client - * - * @ignore - */ -exports.noGlobalsLeaked = function(test) { - var leaks = gleak.detectNew(); - test.equal(0, leaks.length, "global var leak detected: " + leaks.join(', ')); - test.done(); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js deleted file mode 100644 index 9d7cbe7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/test/node/tools/utils.js +++ /dev/null @@ -1,80 +0,0 @@ -exports.assertArrayEqual = function(array1, array2) { - if(array1.length != array2.length) return false; - for(var i = 0; i < array1.length; i++) { - if(array1[i] != array2[i]) return false; - } - - return true; -} - -// String to arraybuffer -exports.stringToArrayBuffer = function(string) { - var dataBuffer = new Uint8Array(new ArrayBuffer(string.length)); - // Return the strings - for(var i = 0; i < string.length; i++) { - dataBuffer[i] = string.charCodeAt(i); - } - // Return the data buffer - return dataBuffer; -} - -// String to arraybuffer -exports.stringToArray = function(string) { - var dataBuffer = new Array(string.length); - // Return the strings - for(var i = 0; i < string.length; i++) { - dataBuffer[i] = string.charCodeAt(i); - } - // Return the data buffer - return dataBuffer; -} - -exports.Utf8 = { - // public method for url encoding - encode : function (string) { - string = string.replace(/\r\n/g,"\n"); - var utftext = ""; - - for (var n = 0; n < string.length; n++) { - var c = string.charCodeAt(n); - if (c < 128) { - utftext += String.fromCharCode(c); - } else if((c > 127) && (c < 2048)) { - utftext += String.fromCharCode((c >> 6) | 192); - utftext += String.fromCharCode((c & 63) | 128); - } else { - utftext += String.fromCharCode((c >> 12) | 224); - utftext += String.fromCharCode(((c >> 6) & 63) | 128); - utftext += String.fromCharCode((c & 63) | 128); - } - - } - - return utftext; - }, - - // public method for url decoding - decode : function (utftext) { - var string = ""; - var i = 0; - var c = c1 = c2 = 0; - - while ( i < utftext.length ) { - c = utftext.charCodeAt(i); - if(c < 128) { - string += String.fromCharCode(c); - i++; - } else if((c > 191) && (c < 224)) { - c2 = utftext.charCodeAt(i+1); - string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); - i += 2; - } else { - c2 = utftext.charCodeAt(i+1); - c3 = utftext.charCodeAt(i+2); - string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); - i += 3; - } - } - return string; - } -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js deleted file mode 100644 index c707cfc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/gleak.js +++ /dev/null @@ -1,21 +0,0 @@ - -var gleak = require('gleak')(); -gleak.ignore('AssertionError'); -gleak.ignore('testFullSpec_param_found'); -gleak.ignore('events'); -gleak.ignore('Uint8Array'); -gleak.ignore('Uint8ClampedArray'); -gleak.ignore('TAP_Global_Harness'); -gleak.ignore('setImmediate'); -gleak.ignore('clearImmediate'); - -gleak.ignore('DTRACE_NET_SERVER_CONNECTION'); -gleak.ignore('DTRACE_NET_STREAM_END'); -gleak.ignore('DTRACE_NET_SOCKET_READ'); -gleak.ignore('DTRACE_NET_SOCKET_WRITE'); -gleak.ignore('DTRACE_HTTP_SERVER_REQUEST'); -gleak.ignore('DTRACE_HTTP_SERVER_RESPONSE'); -gleak.ignore('DTRACE_HTTP_CLIENT_REQUEST'); -gleak.ignore('DTRACE_HTTP_CLIENT_RESPONSE'); - -module.exports = gleak; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE deleted file mode 100644 index 7c435ba..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/MIT.LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2008-2011 Pivotal Labs - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js deleted file mode 100644 index 7383401..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine-html.js +++ /dev/null @@ -1,190 +0,0 @@ -jasmine.TrivialReporter = function(doc) { - this.document = doc || document; - this.suiteDivs = {}; - this.logRunningSpecs = false; -}; - -jasmine.TrivialReporter.prototype.createDom = function(type, attrs, childrenVarArgs) { - var el = document.createElement(type); - - for (var i = 2; i < arguments.length; i++) { - var child = arguments[i]; - - if (typeof child === 'string') { - el.appendChild(document.createTextNode(child)); - } else { - if (child) { el.appendChild(child); } - } - } - - for (var attr in attrs) { - if (attr == "className") { - el[attr] = attrs[attr]; - } else { - el.setAttribute(attr, attrs[attr]); - } - } - - return el; -}; - -jasmine.TrivialReporter.prototype.reportRunnerStarting = function(runner) { - var showPassed, showSkipped; - - this.outerDiv = this.createDom('div', { className: 'jasmine_reporter' }, - this.createDom('div', { className: 'banner' }, - this.createDom('div', { className: 'logo' }, - this.createDom('span', { className: 'title' }, "Jasmine"), - this.createDom('span', { className: 'version' }, runner.env.versionString())), - this.createDom('div', { className: 'options' }, - "Show ", - showPassed = this.createDom('input', { id: "__jasmine_TrivialReporter_showPassed__", type: 'checkbox' }), - this.createDom('label', { "for": "__jasmine_TrivialReporter_showPassed__" }, " passed "), - showSkipped = this.createDom('input', { id: "__jasmine_TrivialReporter_showSkipped__", type: 'checkbox' }), - this.createDom('label', { "for": "__jasmine_TrivialReporter_showSkipped__" }, " skipped") - ) - ), - - this.runnerDiv = this.createDom('div', { className: 'runner running' }, - this.createDom('a', { className: 'run_spec', href: '?' }, "run all"), - this.runnerMessageSpan = this.createDom('span', {}, "Running..."), - this.finishedAtSpan = this.createDom('span', { className: 'finished-at' }, "")) - ); - - this.document.body.appendChild(this.outerDiv); - - var suites = runner.suites(); - for (var i = 0; i < suites.length; i++) { - var suite = suites[i]; - var suiteDiv = this.createDom('div', { className: 'suite' }, - this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, "run"), - this.createDom('a', { className: 'description', href: '?spec=' + encodeURIComponent(suite.getFullName()) }, suite.description)); - this.suiteDivs[suite.id] = suiteDiv; - var parentDiv = this.outerDiv; - if (suite.parentSuite) { - parentDiv = this.suiteDivs[suite.parentSuite.id]; - } - parentDiv.appendChild(suiteDiv); - } - - this.startedAt = new Date(); - - var self = this; - showPassed.onclick = function(evt) { - if (showPassed.checked) { - self.outerDiv.className += ' show-passed'; - } else { - self.outerDiv.className = self.outerDiv.className.replace(/ show-passed/, ''); - } - }; - - showSkipped.onclick = function(evt) { - if (showSkipped.checked) { - self.outerDiv.className += ' show-skipped'; - } else { - self.outerDiv.className = self.outerDiv.className.replace(/ show-skipped/, ''); - } - }; -}; - -jasmine.TrivialReporter.prototype.reportRunnerResults = function(runner) { - var results = runner.results(); - var className = (results.failedCount > 0) ? "runner failed" : "runner passed"; - this.runnerDiv.setAttribute("class", className); - //do it twice for IE - this.runnerDiv.setAttribute("className", className); - var specs = runner.specs(); - var specCount = 0; - for (var i = 0; i < specs.length; i++) { - if (this.specFilter(specs[i])) { - specCount++; - } - } - var message = "" + specCount + " spec" + (specCount == 1 ? "" : "s" ) + ", " + results.failedCount + " failure" + ((results.failedCount == 1) ? "" : "s"); - message += " in " + ((new Date().getTime() - this.startedAt.getTime()) / 1000) + "s"; - this.runnerMessageSpan.replaceChild(this.createDom('a', { className: 'description', href: '?'}, message), this.runnerMessageSpan.firstChild); - - this.finishedAtSpan.appendChild(document.createTextNode("Finished at " + new Date().toString())); -}; - -jasmine.TrivialReporter.prototype.reportSuiteResults = function(suite) { - var results = suite.results(); - var status = results.passed() ? 'passed' : 'failed'; - if (results.totalCount === 0) { // todo: change this to check results.skipped - status = 'skipped'; - } - this.suiteDivs[suite.id].className += " " + status; -}; - -jasmine.TrivialReporter.prototype.reportSpecStarting = function(spec) { - if (this.logRunningSpecs) { - this.log('>> Jasmine Running ' + spec.suite.description + ' ' + spec.description + '...'); - } -}; - -jasmine.TrivialReporter.prototype.reportSpecResults = function(spec) { - var results = spec.results(); - var status = results.passed() ? 'passed' : 'failed'; - if (results.skipped) { - status = 'skipped'; - } - var specDiv = this.createDom('div', { className: 'spec ' + status }, - this.createDom('a', { className: 'run_spec', href: '?spec=' + encodeURIComponent(spec.getFullName()) }, "run"), - this.createDom('a', { - className: 'description', - href: '?spec=' + encodeURIComponent(spec.getFullName()), - title: spec.getFullName() - }, spec.description)); - - - var resultItems = results.getItems(); - var messagesDiv = this.createDom('div', { className: 'messages' }); - for (var i = 0; i < resultItems.length; i++) { - var result = resultItems[i]; - - if (result.type == 'log') { - messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage log'}, result.toString())); - } else if (result.type == 'expect' && result.passed && !result.passed()) { - messagesDiv.appendChild(this.createDom('div', {className: 'resultMessage fail'}, result.message)); - - if (result.trace.stack) { - messagesDiv.appendChild(this.createDom('div', {className: 'stackTrace'}, result.trace.stack)); - } - } - } - - if (messagesDiv.childNodes.length > 0) { - specDiv.appendChild(messagesDiv); - } - - this.suiteDivs[spec.suite.id].appendChild(specDiv); -}; - -jasmine.TrivialReporter.prototype.log = function() { - var console = jasmine.getGlobal().console; - if (console && console.log) { - if (console.log.apply) { - console.log.apply(console, arguments); - } else { - console.log(arguments); // ie fix: console.log.apply doesn't exist on ie - } - } -}; - -jasmine.TrivialReporter.prototype.getLocation = function() { - return this.document.location; -}; - -jasmine.TrivialReporter.prototype.specFilter = function(spec) { - var paramMap = {}; - var params = this.getLocation().search.substring(1).split('&'); - for (var i = 0; i < params.length; i++) { - var p = params[i].split('='); - paramMap[decodeURIComponent(p[0])] = decodeURIComponent(p[1]); - } - - if (!paramMap.spec) { - return true; - } - return spec.getFullName().indexOf(paramMap.spec) === 0; -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css deleted file mode 100644 index 6583fe7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.css +++ /dev/null @@ -1,166 +0,0 @@ -body { - font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; -} - - -.jasmine_reporter a:visited, .jasmine_reporter a { - color: #303; -} - -.jasmine_reporter a:hover, .jasmine_reporter a:active { - color: blue; -} - -.run_spec { - float:right; - padding-right: 5px; - font-size: .8em; - text-decoration: none; -} - -.jasmine_reporter { - margin: 0 5px; -} - -.banner { - color: #303; - background-color: #fef; - padding: 5px; -} - -.logo { - float: left; - font-size: 1.1em; - padding-left: 5px; -} - -.logo .version { - font-size: .6em; - padding-left: 1em; -} - -.runner.running { - background-color: yellow; -} - - -.options { - text-align: right; - font-size: .8em; -} - - - - -.suite { - border: 1px outset gray; - margin: 5px 0; - padding-left: 1em; -} - -.suite .suite { - margin: 5px; -} - -.suite.passed { - background-color: #dfd; -} - -.suite.failed { - background-color: #fdd; -} - -.spec { - margin: 5px; - padding-left: 1em; - clear: both; -} - -.spec.failed, .spec.passed, .spec.skipped { - padding-bottom: 5px; - border: 1px solid gray; -} - -.spec.failed { - background-color: #fbb; - border-color: red; -} - -.spec.passed { - background-color: #bfb; - border-color: green; -} - -.spec.skipped { - background-color: #bbb; -} - -.messages { - border-left: 1px dashed gray; - padding-left: 1em; - padding-right: 1em; -} - -.passed { - background-color: #cfc; - display: none; -} - -.failed { - background-color: #fbb; -} - -.skipped { - color: #777; - background-color: #eee; - display: none; -} - - -/*.resultMessage {*/ - /*white-space: pre;*/ -/*}*/ - -.resultMessage span.result { - display: block; - line-height: 2em; - color: black; -} - -.resultMessage .mismatch { - color: black; -} - -.stackTrace { - white-space: pre; - font-size: .8em; - margin-left: 10px; - max-height: 5em; - overflow: auto; - border: 1px inset red; - padding: 1em; - background: #eef; -} - -.finished-at { - padding-left: 1em; - font-size: .6em; -} - -.show-passed .passed, -.show-skipped .skipped { - display: block; -} - - -#jasmine_content { - position:fixed; - right: 100%; -} - -.runner { - border: 1px solid gray; - display: block; - margin: 5px 0; - padding: 2px 0 2px 10px; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js deleted file mode 100644 index c3d2dc7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine.js +++ /dev/null @@ -1,2476 +0,0 @@ -var isCommonJS = typeof window == "undefined"; - -/** - * Top level namespace for Jasmine, a lightweight JavaScript BDD/spec/testing framework. - * - * @namespace - */ -var jasmine = {}; -if (isCommonJS) exports.jasmine = jasmine; -/** - * @private - */ -jasmine.unimplementedMethod_ = function() { - throw new Error("unimplemented method"); -}; - -/** - * Use jasmine.undefined instead of undefined, since undefined is just - * a plain old variable and may be redefined by somebody else. - * - * @private - */ -jasmine.undefined = jasmine.___undefined___; - -/** - * Show diagnostic messages in the console if set to true - * - */ -jasmine.VERBOSE = false; - -/** - * Default interval in milliseconds for event loop yields (e.g. to allow network activity or to refresh the screen with the HTML-based runner). Small values here may result in slow test running. Zero means no updates until all tests have completed. - * - */ -jasmine.DEFAULT_UPDATE_INTERVAL = 250; - -/** - * Default timeout interval in milliseconds for waitsFor() blocks. - */ -jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000; - -jasmine.getGlobal = function() { - function getGlobal() { - return this; - } - - return getGlobal(); -}; - -/** - * Allows for bound functions to be compared. Internal use only. - * - * @ignore - * @private - * @param base {Object} bound 'this' for the function - * @param name {Function} function to find - */ -jasmine.bindOriginal_ = function(base, name) { - var original = base[name]; - if (original.apply) { - return function() { - return original.apply(base, arguments); - }; - } else { - // IE support - return jasmine.getGlobal()[name]; - } -}; - -jasmine.setTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'setTimeout'); -jasmine.clearTimeout = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearTimeout'); -jasmine.setInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'setInterval'); -jasmine.clearInterval = jasmine.bindOriginal_(jasmine.getGlobal(), 'clearInterval'); - -jasmine.MessageResult = function(values) { - this.type = 'log'; - this.values = values; - this.trace = new Error(); // todo: test better -}; - -jasmine.MessageResult.prototype.toString = function() { - var text = ""; - for (var i = 0; i < this.values.length; i++) { - if (i > 0) text += " "; - if (jasmine.isString_(this.values[i])) { - text += this.values[i]; - } else { - text += jasmine.pp(this.values[i]); - } - } - return text; -}; - -jasmine.ExpectationResult = function(params) { - this.type = 'expect'; - this.matcherName = params.matcherName; - this.passed_ = params.passed; - this.expected = params.expected; - this.actual = params.actual; - this.message = this.passed_ ? 'Passed.' : params.message; - - var trace = (params.trace || new Error(this.message)); - this.trace = this.passed_ ? '' : trace; -}; - -jasmine.ExpectationResult.prototype.toString = function () { - return this.message; -}; - -jasmine.ExpectationResult.prototype.passed = function () { - return this.passed_; -}; - -/** - * Getter for the Jasmine environment. Ensures one gets created - */ -jasmine.getEnv = function() { - var env = jasmine.currentEnv_ = jasmine.currentEnv_ || new jasmine.Env(); - return env; -}; - -/** - * @ignore - * @private - * @param value - * @returns {Boolean} - */ -jasmine.isArray_ = function(value) { - return jasmine.isA_("Array", value); -}; - -/** - * @ignore - * @private - * @param value - * @returns {Boolean} - */ -jasmine.isString_ = function(value) { - return jasmine.isA_("String", value); -}; - -/** - * @ignore - * @private - * @param value - * @returns {Boolean} - */ -jasmine.isNumber_ = function(value) { - return jasmine.isA_("Number", value); -}; - -/** - * @ignore - * @private - * @param {String} typeName - * @param value - * @returns {Boolean} - */ -jasmine.isA_ = function(typeName, value) { - return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; -}; - -/** - * Pretty printer for expecations. Takes any object and turns it into a human-readable string. - * - * @param value {Object} an object to be outputted - * @returns {String} - */ -jasmine.pp = function(value) { - var stringPrettyPrinter = new jasmine.StringPrettyPrinter(); - stringPrettyPrinter.format(value); - return stringPrettyPrinter.string; -}; - -/** - * Returns true if the object is a DOM Node. - * - * @param {Object} obj object to check - * @returns {Boolean} - */ -jasmine.isDomNode = function(obj) { - return obj.nodeType > 0; -}; - -/** - * Returns a matchable 'generic' object of the class type. For use in expecations of type when values don't matter. - * - * @example - * // don't care about which function is passed in, as long as it's a function - * expect(mySpy).toHaveBeenCalledWith(jasmine.any(Function)); - * - * @param {Class} clazz - * @returns matchable object of the type clazz - */ -jasmine.any = function(clazz) { - return new jasmine.Matchers.Any(clazz); -}; - -/** - * Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks. - * - * Spies should be created in test setup, before expectations. They can then be checked, using the standard Jasmine - * expectation syntax. Spies can be checked if they were called or not and what the calling params were. - * - * A Spy has the following fields: wasCalled, callCount, mostRecentCall, and argsForCall (see docs). - * - * Spies are torn down at the end of every spec. - * - * Note: Do not call new jasmine.Spy() directly - a spy must be created using spyOn, jasmine.createSpy or jasmine.createSpyObj. - * - * @example - * // a stub - * var myStub = jasmine.createSpy('myStub'); // can be used anywhere - * - * // spy example - * var foo = { - * not: function(bool) { return !bool; } - * } - * - * // actual foo.not will not be called, execution stops - * spyOn(foo, 'not'); - - // foo.not spied upon, execution will continue to implementation - * spyOn(foo, 'not').andCallThrough(); - * - * // fake example - * var foo = { - * not: function(bool) { return !bool; } - * } - * - * // foo.not(val) will return val - * spyOn(foo, 'not').andCallFake(function(value) {return value;}); - * - * // mock example - * foo.not(7 == 7); - * expect(foo.not).toHaveBeenCalled(); - * expect(foo.not).toHaveBeenCalledWith(true); - * - * @constructor - * @see spyOn, jasmine.createSpy, jasmine.createSpyObj - * @param {String} name - */ -jasmine.Spy = function(name) { - /** - * The name of the spy, if provided. - */ - this.identity = name || 'unknown'; - /** - * Is this Object a spy? - */ - this.isSpy = true; - /** - * The actual function this spy stubs. - */ - this.plan = function() { - }; - /** - * Tracking of the most recent call to the spy. - * @example - * var mySpy = jasmine.createSpy('foo'); - * mySpy(1, 2); - * mySpy.mostRecentCall.args = [1, 2]; - */ - this.mostRecentCall = {}; - - /** - * Holds arguments for each call to the spy, indexed by call count - * @example - * var mySpy = jasmine.createSpy('foo'); - * mySpy(1, 2); - * mySpy(7, 8); - * mySpy.mostRecentCall.args = [7, 8]; - * mySpy.argsForCall[0] = [1, 2]; - * mySpy.argsForCall[1] = [7, 8]; - */ - this.argsForCall = []; - this.calls = []; -}; - -/** - * Tells a spy to call through to the actual implemenatation. - * - * @example - * var foo = { - * bar: function() { // do some stuff } - * } - * - * // defining a spy on an existing property: foo.bar - * spyOn(foo, 'bar').andCallThrough(); - */ -jasmine.Spy.prototype.andCallThrough = function() { - this.plan = this.originalValue; - return this; -}; - -/** - * For setting the return value of a spy. - * - * @example - * // defining a spy from scratch: foo() returns 'baz' - * var foo = jasmine.createSpy('spy on foo').andReturn('baz'); - * - * // defining a spy on an existing property: foo.bar() returns 'baz' - * spyOn(foo, 'bar').andReturn('baz'); - * - * @param {Object} value - */ -jasmine.Spy.prototype.andReturn = function(value) { - this.plan = function() { - return value; - }; - return this; -}; - -/** - * For throwing an exception when a spy is called. - * - * @example - * // defining a spy from scratch: foo() throws an exception w/ message 'ouch' - * var foo = jasmine.createSpy('spy on foo').andThrow('baz'); - * - * // defining a spy on an existing property: foo.bar() throws an exception w/ message 'ouch' - * spyOn(foo, 'bar').andThrow('baz'); - * - * @param {String} exceptionMsg - */ -jasmine.Spy.prototype.andThrow = function(exceptionMsg) { - this.plan = function() { - throw exceptionMsg; - }; - return this; -}; - -/** - * Calls an alternate implementation when a spy is called. - * - * @example - * var baz = function() { - * // do some stuff, return something - * } - * // defining a spy from scratch: foo() calls the function baz - * var foo = jasmine.createSpy('spy on foo').andCall(baz); - * - * // defining a spy on an existing property: foo.bar() calls an anonymnous function - * spyOn(foo, 'bar').andCall(function() { return 'baz';} ); - * - * @param {Function} fakeFunc - */ -jasmine.Spy.prototype.andCallFake = function(fakeFunc) { - this.plan = fakeFunc; - return this; -}; - -/** - * Resets all of a spy's the tracking variables so that it can be used again. - * - * @example - * spyOn(foo, 'bar'); - * - * foo.bar(); - * - * expect(foo.bar.callCount).toEqual(1); - * - * foo.bar.reset(); - * - * expect(foo.bar.callCount).toEqual(0); - */ -jasmine.Spy.prototype.reset = function() { - this.wasCalled = false; - this.callCount = 0; - this.argsForCall = []; - this.calls = []; - this.mostRecentCall = {}; -}; - -jasmine.createSpy = function(name) { - - var spyObj = function() { - spyObj.wasCalled = true; - spyObj.callCount++; - var args = jasmine.util.argsToArray(arguments); - spyObj.mostRecentCall.object = this; - spyObj.mostRecentCall.args = args; - spyObj.argsForCall.push(args); - spyObj.calls.push({object: this, args: args}); - return spyObj.plan.apply(this, arguments); - }; - - var spy = new jasmine.Spy(name); - - for (var prop in spy) { - spyObj[prop] = spy[prop]; - } - - spyObj.reset(); - - return spyObj; -}; - -/** - * Determines whether an object is a spy. - * - * @param {jasmine.Spy|Object} putativeSpy - * @returns {Boolean} - */ -jasmine.isSpy = function(putativeSpy) { - return putativeSpy && putativeSpy.isSpy; -}; - -/** - * Creates a more complicated spy: an Object that has every property a function that is a spy. Used for stubbing something - * large in one call. - * - * @param {String} baseName name of spy class - * @param {Array} methodNames array of names of methods to make spies - */ -jasmine.createSpyObj = function(baseName, methodNames) { - if (!jasmine.isArray_(methodNames) || methodNames.length === 0) { - throw new Error('createSpyObj requires a non-empty array of method names to create spies for'); - } - var obj = {}; - for (var i = 0; i < methodNames.length; i++) { - obj[methodNames[i]] = jasmine.createSpy(baseName + '.' + methodNames[i]); - } - return obj; -}; - -/** - * All parameters are pretty-printed and concatenated together, then written to the current spec's output. - * - * Be careful not to leave calls to jasmine.log in production code. - */ -jasmine.log = function() { - var spec = jasmine.getEnv().currentSpec; - spec.log.apply(spec, arguments); -}; - -/** - * Function that installs a spy on an existing object's method name. Used within a Spec to create a spy. - * - * @example - * // spy example - * var foo = { - * not: function(bool) { return !bool; } - * } - * spyOn(foo, 'not'); // actual foo.not will not be called, execution stops - * - * @see jasmine.createSpy - * @param obj - * @param methodName - * @returns a Jasmine spy that can be chained with all spy methods - */ -var spyOn = function(obj, methodName) { - return jasmine.getEnv().currentSpec.spyOn(obj, methodName); -}; -if (isCommonJS) exports.spyOn = spyOn; - -/** - * Creates a Jasmine spec that will be added to the current suite. - * - * // TODO: pending tests - * - * @example - * it('should be true', function() { - * expect(true).toEqual(true); - * }); - * - * @param {String} desc description of this specification - * @param {Function} func defines the preconditions and expectations of the spec - */ -var it = function(desc, func) { - return jasmine.getEnv().it(desc, func); -}; -if (isCommonJS) exports.it = it; - -/** - * Creates a disabled Jasmine spec. - * - * A convenience method that allows existing specs to be disabled temporarily during development. - * - * @param {String} desc description of this specification - * @param {Function} func defines the preconditions and expectations of the spec - */ -var xit = function(desc, func) { - return jasmine.getEnv().xit(desc, func); -}; -if (isCommonJS) exports.xit = xit; - -/** - * Starts a chain for a Jasmine expectation. - * - * It is passed an Object that is the actual value and should chain to one of the many - * jasmine.Matchers functions. - * - * @param {Object} actual Actual value to test against and expected value - */ -var expect = function(actual) { - return jasmine.getEnv().currentSpec.expect(actual); -}; -if (isCommonJS) exports.expect = expect; - -/** - * Defines part of a jasmine spec. Used in cominbination with waits or waitsFor in asynchrnous specs. - * - * @param {Function} func Function that defines part of a jasmine spec. - */ -var runs = function(func) { - jasmine.getEnv().currentSpec.runs(func); -}; -if (isCommonJS) exports.runs = runs; - -/** - * Waits a fixed time period before moving to the next block. - * - * @deprecated Use waitsFor() instead - * @param {Number} timeout milliseconds to wait - */ -var waits = function(timeout) { - jasmine.getEnv().currentSpec.waits(timeout); -}; -if (isCommonJS) exports.waits = waits; - -/** - * Waits for the latchFunction to return true before proceeding to the next block. - * - * @param {Function} latchFunction - * @param {String} optional_timeoutMessage - * @param {Number} optional_timeout - */ -var waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { - jasmine.getEnv().currentSpec.waitsFor.apply(jasmine.getEnv().currentSpec, arguments); -}; -if (isCommonJS) exports.waitsFor = waitsFor; - -/** - * A function that is called before each spec in a suite. - * - * Used for spec setup, including validating assumptions. - * - * @param {Function} beforeEachFunction - */ -var beforeEach = function(beforeEachFunction) { - jasmine.getEnv().beforeEach(beforeEachFunction); -}; -if (isCommonJS) exports.beforeEach = beforeEach; - -/** - * A function that is called after each spec in a suite. - * - * Used for restoring any state that is hijacked during spec execution. - * - * @param {Function} afterEachFunction - */ -var afterEach = function(afterEachFunction) { - jasmine.getEnv().afterEach(afterEachFunction); -}; -if (isCommonJS) exports.afterEach = afterEach; - -/** - * Defines a suite of specifications. - * - * Stores the description and all defined specs in the Jasmine environment as one suite of specs. Variables declared - * are accessible by calls to beforeEach, it, and afterEach. Describe blocks can be nested, allowing for specialization - * of setup in some tests. - * - * @example - * // TODO: a simple suite - * - * // TODO: a simple suite with a nested describe block - * - * @param {String} description A string, usually the class under test. - * @param {Function} specDefinitions function that defines several specs. - */ -var describe = function(description, specDefinitions) { - return jasmine.getEnv().describe(description, specDefinitions); -}; -if (isCommonJS) exports.describe = describe; - -/** - * Disables a suite of specifications. Used to disable some suites in a file, or files, temporarily during development. - * - * @param {String} description A string, usually the class under test. - * @param {Function} specDefinitions function that defines several specs. - */ -var xdescribe = function(description, specDefinitions) { - return jasmine.getEnv().xdescribe(description, specDefinitions); -}; -if (isCommonJS) exports.xdescribe = xdescribe; - - -// Provide the XMLHttpRequest class for IE 5.x-6.x: -jasmine.XmlHttpRequest = (typeof XMLHttpRequest == "undefined") ? function() { - function tryIt(f) { - try { - return f(); - } catch(e) { - } - return null; - } - - var xhr = tryIt(function() { - return new ActiveXObject("Msxml2.XMLHTTP.6.0"); - }) || - tryIt(function() { - return new ActiveXObject("Msxml2.XMLHTTP.3.0"); - }) || - tryIt(function() { - return new ActiveXObject("Msxml2.XMLHTTP"); - }) || - tryIt(function() { - return new ActiveXObject("Microsoft.XMLHTTP"); - }); - - if (!xhr) throw new Error("This browser does not support XMLHttpRequest."); - - return xhr; -} : XMLHttpRequest; -/** - * @namespace - */ -jasmine.util = {}; - -/** - * Declare that a child class inherit it's prototype from the parent class. - * - * @private - * @param {Function} childClass - * @param {Function} parentClass - */ -jasmine.util.inherit = function(childClass, parentClass) { - /** - * @private - */ - var subclass = function() { - }; - subclass.prototype = parentClass.prototype; - childClass.prototype = new subclass(); -}; - -jasmine.util.formatException = function(e) { - var lineNumber; - if (e.line) { - lineNumber = e.line; - } - else if (e.lineNumber) { - lineNumber = e.lineNumber; - } - - var file; - - if (e.sourceURL) { - file = e.sourceURL; - } - else if (e.fileName) { - file = e.fileName; - } - - var message = (e.name && e.message) ? (e.name + ': ' + e.message) : e.toString(); - - if (file && lineNumber) { - message += ' in ' + file + ' (line ' + lineNumber + ')'; - } - - return message; -}; - -jasmine.util.htmlEscape = function(str) { - if (!str) return str; - return str.replace(/&/g, '&') - .replace(//g, '>'); -}; - -jasmine.util.argsToArray = function(args) { - var arrayOfArgs = []; - for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]); - return arrayOfArgs; -}; - -jasmine.util.extend = function(destination, source) { - for (var property in source) destination[property] = source[property]; - return destination; -}; - -/** - * Environment for Jasmine - * - * @constructor - */ -jasmine.Env = function() { - this.currentSpec = null; - this.currentSuite = null; - this.currentRunner_ = new jasmine.Runner(this); - - this.reporter = new jasmine.MultiReporter(); - - this.updateInterval = jasmine.DEFAULT_UPDATE_INTERVAL; - this.defaultTimeoutInterval = jasmine.DEFAULT_TIMEOUT_INTERVAL; - this.lastUpdate = 0; - this.specFilter = function() { - return true; - }; - - this.nextSpecId_ = 0; - this.nextSuiteId_ = 0; - this.equalityTesters_ = []; - - // wrap matchers - this.matchersClass = function() { - jasmine.Matchers.apply(this, arguments); - }; - jasmine.util.inherit(this.matchersClass, jasmine.Matchers); - - jasmine.Matchers.wrapInto_(jasmine.Matchers.prototype, this.matchersClass); -}; - - -jasmine.Env.prototype.setTimeout = jasmine.setTimeout; -jasmine.Env.prototype.clearTimeout = jasmine.clearTimeout; -jasmine.Env.prototype.setInterval = jasmine.setInterval; -jasmine.Env.prototype.clearInterval = jasmine.clearInterval; - -/** - * @returns an object containing jasmine version build info, if set. - */ -jasmine.Env.prototype.version = function () { - if (jasmine.version_) { - return jasmine.version_; - } else { - throw new Error('Version not set'); - } -}; - -/** - * @returns string containing jasmine version build info, if set. - */ -jasmine.Env.prototype.versionString = function() { - if (!jasmine.version_) { - return "version unknown"; - } - - var version = this.version(); - var versionString = version.major + "." + version.minor + "." + version.build; - if (version.release_candidate) { - versionString += ".rc" + version.release_candidate; - } - versionString += " revision " + version.revision; - return versionString; -}; - -/** - * @returns a sequential integer starting at 0 - */ -jasmine.Env.prototype.nextSpecId = function () { - return this.nextSpecId_++; -}; - -/** - * @returns a sequential integer starting at 0 - */ -jasmine.Env.prototype.nextSuiteId = function () { - return this.nextSuiteId_++; -}; - -/** - * Register a reporter to receive status updates from Jasmine. - * @param {jasmine.Reporter} reporter An object which will receive status updates. - */ -jasmine.Env.prototype.addReporter = function(reporter) { - this.reporter.addReporter(reporter); -}; - -jasmine.Env.prototype.execute = function() { - this.currentRunner_.execute(); -}; - -jasmine.Env.prototype.describe = function(description, specDefinitions) { - var suite = new jasmine.Suite(this, description, specDefinitions, this.currentSuite); - - var parentSuite = this.currentSuite; - if (parentSuite) { - parentSuite.add(suite); - } else { - this.currentRunner_.add(suite); - } - - this.currentSuite = suite; - - var declarationError = null; - try { - specDefinitions.call(suite); - } catch(e) { - declarationError = e; - } - - if (declarationError) { - this.it("encountered a declaration exception", function() { - throw declarationError; - }); - } - - this.currentSuite = parentSuite; - - return suite; -}; - -jasmine.Env.prototype.beforeEach = function(beforeEachFunction) { - if (this.currentSuite) { - this.currentSuite.beforeEach(beforeEachFunction); - } else { - this.currentRunner_.beforeEach(beforeEachFunction); - } -}; - -jasmine.Env.prototype.currentRunner = function () { - return this.currentRunner_; -}; - -jasmine.Env.prototype.afterEach = function(afterEachFunction) { - if (this.currentSuite) { - this.currentSuite.afterEach(afterEachFunction); - } else { - this.currentRunner_.afterEach(afterEachFunction); - } - -}; - -jasmine.Env.prototype.xdescribe = function(desc, specDefinitions) { - return { - execute: function() { - } - }; -}; - -jasmine.Env.prototype.it = function(description, func) { - var spec = new jasmine.Spec(this, this.currentSuite, description); - this.currentSuite.add(spec); - this.currentSpec = spec; - - if (func) { - spec.runs(func); - } - - return spec; -}; - -jasmine.Env.prototype.xit = function(desc, func) { - return { - id: this.nextSpecId(), - runs: function() { - } - }; -}; - -jasmine.Env.prototype.compareObjects_ = function(a, b, mismatchKeys, mismatchValues) { - if (a.__Jasmine_been_here_before__ === b && b.__Jasmine_been_here_before__ === a) { - return true; - } - - a.__Jasmine_been_here_before__ = b; - b.__Jasmine_been_here_before__ = a; - - var hasKey = function(obj, keyName) { - return obj !== null && obj[keyName] !== jasmine.undefined; - }; - - for (var property in b) { - if (!hasKey(a, property) && hasKey(b, property)) { - mismatchKeys.push("expected has key '" + property + "', but missing from actual."); - } - } - for (property in a) { - if (!hasKey(b, property) && hasKey(a, property)) { - mismatchKeys.push("expected missing key '" + property + "', but present in actual."); - } - } - for (property in b) { - if (property == '__Jasmine_been_here_before__') continue; - if (!this.equals_(a[property], b[property], mismatchKeys, mismatchValues)) { - mismatchValues.push("'" + property + "' was '" + (b[property] ? jasmine.util.htmlEscape(b[property].toString()) : b[property]) + "' in expected, but was '" + (a[property] ? jasmine.util.htmlEscape(a[property].toString()) : a[property]) + "' in actual."); - } - } - - if (jasmine.isArray_(a) && jasmine.isArray_(b) && a.length != b.length) { - mismatchValues.push("arrays were not the same length"); - } - - delete a.__Jasmine_been_here_before__; - delete b.__Jasmine_been_here_before__; - return (mismatchKeys.length === 0 && mismatchValues.length === 0); -}; - -jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) { - mismatchKeys = mismatchKeys || []; - mismatchValues = mismatchValues || []; - - for (var i = 0; i < this.equalityTesters_.length; i++) { - var equalityTester = this.equalityTesters_[i]; - var result = equalityTester(a, b, this, mismatchKeys, mismatchValues); - if (result !== jasmine.undefined) return result; - } - - if (a === b) return true; - - if (a === jasmine.undefined || a === null || b === jasmine.undefined || b === null) { - return (a == jasmine.undefined && b == jasmine.undefined); - } - - if (jasmine.isDomNode(a) && jasmine.isDomNode(b)) { - return a === b; - } - - if (a instanceof Date && b instanceof Date) { - return a.getTime() == b.getTime(); - } - - if (a instanceof jasmine.Matchers.Any) { - return a.matches(b); - } - - if (b instanceof jasmine.Matchers.Any) { - return b.matches(a); - } - - if (jasmine.isString_(a) && jasmine.isString_(b)) { - return (a == b); - } - - if (jasmine.isNumber_(a) && jasmine.isNumber_(b)) { - return (a == b); - } - - if (typeof a === "object" && typeof b === "object") { - return this.compareObjects_(a, b, mismatchKeys, mismatchValues); - } - - //Straight check - return (a === b); -}; - -jasmine.Env.prototype.contains_ = function(haystack, needle) { - if (jasmine.isArray_(haystack)) { - for (var i = 0; i < haystack.length; i++) { - if (this.equals_(haystack[i], needle)) return true; - } - return false; - } - return haystack.indexOf(needle) >= 0; -}; - -jasmine.Env.prototype.addEqualityTester = function(equalityTester) { - this.equalityTesters_.push(equalityTester); -}; -/** No-op base class for Jasmine reporters. - * - * @constructor - */ -jasmine.Reporter = function() { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportRunnerStarting = function(runner) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportRunnerResults = function(runner) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportSuiteResults = function(suite) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportSpecStarting = function(spec) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.reportSpecResults = function(spec) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.Reporter.prototype.log = function(str) { -}; - -/** - * Blocks are functions with executable code that make up a spec. - * - * @constructor - * @param {jasmine.Env} env - * @param {Function} func - * @param {jasmine.Spec} spec - */ -jasmine.Block = function(env, func, spec) { - this.env = env; - this.func = func; - this.spec = spec; -}; - -jasmine.Block.prototype.execute = function(onComplete) { - try { - this.func.apply(this.spec); - } catch (e) { - this.spec.fail(e); - } - onComplete(); -}; -/** JavaScript API reporter. - * - * @constructor - */ -jasmine.JsApiReporter = function() { - this.started = false; - this.finished = false; - this.suites_ = []; - this.results_ = {}; -}; - -jasmine.JsApiReporter.prototype.reportRunnerStarting = function(runner) { - this.started = true; - var suites = runner.topLevelSuites(); - for (var i = 0; i < suites.length; i++) { - var suite = suites[i]; - this.suites_.push(this.summarize_(suite)); - } -}; - -jasmine.JsApiReporter.prototype.suites = function() { - return this.suites_; -}; - -jasmine.JsApiReporter.prototype.summarize_ = function(suiteOrSpec) { - var isSuite = suiteOrSpec instanceof jasmine.Suite; - var summary = { - id: suiteOrSpec.id, - name: suiteOrSpec.description, - type: isSuite ? 'suite' : 'spec', - children: [] - }; - - if (isSuite) { - var children = suiteOrSpec.children(); - for (var i = 0; i < children.length; i++) { - summary.children.push(this.summarize_(children[i])); - } - } - return summary; -}; - -jasmine.JsApiReporter.prototype.results = function() { - return this.results_; -}; - -jasmine.JsApiReporter.prototype.resultsForSpec = function(specId) { - return this.results_[specId]; -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.reportRunnerResults = function(runner) { - this.finished = true; -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.reportSuiteResults = function(suite) { -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.reportSpecResults = function(spec) { - this.results_[spec.id] = { - messages: spec.results().getItems(), - result: spec.results().failedCount > 0 ? "failed" : "passed" - }; -}; - -//noinspection JSUnusedLocalSymbols -jasmine.JsApiReporter.prototype.log = function(str) { -}; - -jasmine.JsApiReporter.prototype.resultsForSpecs = function(specIds){ - var results = {}; - for (var i = 0; i < specIds.length; i++) { - var specId = specIds[i]; - results[specId] = this.summarizeResult_(this.results_[specId]); - } - return results; -}; - -jasmine.JsApiReporter.prototype.summarizeResult_ = function(result){ - var summaryMessages = []; - var messagesLength = result.messages.length; - for (var messageIndex = 0; messageIndex < messagesLength; messageIndex++) { - var resultMessage = result.messages[messageIndex]; - summaryMessages.push({ - text: resultMessage.type == 'log' ? resultMessage.toString() : jasmine.undefined, - passed: resultMessage.passed ? resultMessage.passed() : true, - type: resultMessage.type, - message: resultMessage.message, - trace: { - stack: resultMessage.passed && !resultMessage.passed() ? resultMessage.trace.stack : jasmine.undefined - } - }); - } - - return { - result : result.result, - messages : summaryMessages - }; -}; - -/** - * @constructor - * @param {jasmine.Env} env - * @param actual - * @param {jasmine.Spec} spec - */ -jasmine.Matchers = function(env, actual, spec, opt_isNot) { - this.env = env; - this.actual = actual; - this.spec = spec; - this.isNot = opt_isNot || false; - this.reportWasCalled_ = false; -}; - -// todo: @deprecated as of Jasmine 0.11, remove soon [xw] -jasmine.Matchers.pp = function(str) { - throw new Error("jasmine.Matchers.pp() is no longer supported, please use jasmine.pp() instead!"); -}; - -// todo: @deprecated Deprecated as of Jasmine 0.10. Rewrite your custom matchers to return true or false. [xw] -jasmine.Matchers.prototype.report = function(result, failing_message, details) { - throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs"); -}; - -jasmine.Matchers.wrapInto_ = function(prototype, matchersClass) { - for (var methodName in prototype) { - if (methodName == 'report') continue; - var orig = prototype[methodName]; - matchersClass.prototype[methodName] = jasmine.Matchers.matcherFn_(methodName, orig); - } -}; - -jasmine.Matchers.matcherFn_ = function(matcherName, matcherFunction) { - return function() { - var matcherArgs = jasmine.util.argsToArray(arguments); - var result = matcherFunction.apply(this, arguments); - - if (this.isNot) { - result = !result; - } - - if (this.reportWasCalled_) return result; - - var message; - if (!result) { - if (this.message) { - message = this.message.apply(this, arguments); - if (jasmine.isArray_(message)) { - message = message[this.isNot ? 1 : 0]; - } - } else { - var englishyPredicate = matcherName.replace(/[A-Z]/g, function(s) { return ' ' + s.toLowerCase(); }); - message = "Expected " + jasmine.pp(this.actual) + (this.isNot ? " not " : " ") + englishyPredicate; - if (matcherArgs.length > 0) { - for (var i = 0; i < matcherArgs.length; i++) { - if (i > 0) message += ","; - message += " " + jasmine.pp(matcherArgs[i]); - } - } - message += "."; - } - } - var expectationResult = new jasmine.ExpectationResult({ - matcherName: matcherName, - passed: result, - expected: matcherArgs.length > 1 ? matcherArgs : matcherArgs[0], - actual: this.actual, - message: message - }); - this.spec.addMatcherResult(expectationResult); - return jasmine.undefined; - }; -}; - - - - -/** - * toBe: compares the actual to the expected using === - * @param expected - */ -jasmine.Matchers.prototype.toBe = function(expected) { - return this.actual === expected; -}; - -/** - * toNotBe: compares the actual to the expected using !== - * @param expected - * @deprecated as of 1.0. Use not.toBe() instead. - */ -jasmine.Matchers.prototype.toNotBe = function(expected) { - return this.actual !== expected; -}; - -/** - * toEqual: compares the actual to the expected using common sense equality. Handles Objects, Arrays, etc. - * - * @param expected - */ -jasmine.Matchers.prototype.toEqual = function(expected) { - return this.env.equals_(this.actual, expected); -}; - -/** - * toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual - * @param expected - * @deprecated as of 1.0. Use not.toNotEqual() instead. - */ -jasmine.Matchers.prototype.toNotEqual = function(expected) { - return !this.env.equals_(this.actual, expected); -}; - -/** - * Matcher that compares the actual to the expected using a regular expression. Constructs a RegExp, so takes - * a pattern or a String. - * - * @param expected - */ -jasmine.Matchers.prototype.toMatch = function(expected) { - return new RegExp(expected).test(this.actual); -}; - -/** - * Matcher that compares the actual to the expected using the boolean inverse of jasmine.Matchers.toMatch - * @param expected - * @deprecated as of 1.0. Use not.toMatch() instead. - */ -jasmine.Matchers.prototype.toNotMatch = function(expected) { - return !(new RegExp(expected).test(this.actual)); -}; - -/** - * Matcher that compares the actual to jasmine.undefined. - */ -jasmine.Matchers.prototype.toBeDefined = function() { - return (this.actual !== jasmine.undefined); -}; - -/** - * Matcher that compares the actual to jasmine.undefined. - */ -jasmine.Matchers.prototype.toBeUndefined = function() { - return (this.actual === jasmine.undefined); -}; - -/** - * Matcher that compares the actual to null. - */ -jasmine.Matchers.prototype.toBeNull = function() { - return (this.actual === null); -}; - -/** - * Matcher that boolean not-nots the actual. - */ -jasmine.Matchers.prototype.toBeTruthy = function() { - return !!this.actual; -}; - - -/** - * Matcher that boolean nots the actual. - */ -jasmine.Matchers.prototype.toBeFalsy = function() { - return !this.actual; -}; - - -/** - * Matcher that checks to see if the actual, a Jasmine spy, was called. - */ -jasmine.Matchers.prototype.toHaveBeenCalled = function() { - if (arguments.length > 0) { - throw new Error('toHaveBeenCalled does not take arguments, use toHaveBeenCalledWith'); - } - - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - - this.message = function() { - return [ - "Expected spy " + this.actual.identity + " to have been called.", - "Expected spy " + this.actual.identity + " not to have been called." - ]; - }; - - return this.actual.wasCalled; -}; - -/** @deprecated Use expect(xxx).toHaveBeenCalled() instead */ -jasmine.Matchers.prototype.wasCalled = jasmine.Matchers.prototype.toHaveBeenCalled; - -/** - * Matcher that checks to see if the actual, a Jasmine spy, was not called. - * - * @deprecated Use expect(xxx).not.toHaveBeenCalled() instead - */ -jasmine.Matchers.prototype.wasNotCalled = function() { - if (arguments.length > 0) { - throw new Error('wasNotCalled does not take arguments'); - } - - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - - this.message = function() { - return [ - "Expected spy " + this.actual.identity + " to not have been called.", - "Expected spy " + this.actual.identity + " to have been called." - ]; - }; - - return !this.actual.wasCalled; -}; - -/** - * Matcher that checks to see if the actual, a Jasmine spy, was called with a set of parameters. - * - * @example - * - */ -jasmine.Matchers.prototype.toHaveBeenCalledWith = function() { - var expectedArgs = jasmine.util.argsToArray(arguments); - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - this.message = function() { - if (this.actual.callCount === 0) { - // todo: what should the failure message for .not.toHaveBeenCalledWith() be? is this right? test better. [xw] - return [ - "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but it was never called.", - "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but it was." - ]; - } else { - return [ - "Expected spy " + this.actual.identity + " to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall), - "Expected spy " + this.actual.identity + " not to have been called with " + jasmine.pp(expectedArgs) + " but was called with " + jasmine.pp(this.actual.argsForCall) - ]; - } - }; - - return this.env.contains_(this.actual.argsForCall, expectedArgs); -}; - -/** @deprecated Use expect(xxx).toHaveBeenCalledWith() instead */ -jasmine.Matchers.prototype.wasCalledWith = jasmine.Matchers.prototype.toHaveBeenCalledWith; - -/** @deprecated Use expect(xxx).not.toHaveBeenCalledWith() instead */ -jasmine.Matchers.prototype.wasNotCalledWith = function() { - var expectedArgs = jasmine.util.argsToArray(arguments); - if (!jasmine.isSpy(this.actual)) { - throw new Error('Expected a spy, but got ' + jasmine.pp(this.actual) + '.'); - } - - this.message = function() { - return [ - "Expected spy not to have been called with " + jasmine.pp(expectedArgs) + " but it was", - "Expected spy to have been called with " + jasmine.pp(expectedArgs) + " but it was" - ]; - }; - - return !this.env.contains_(this.actual.argsForCall, expectedArgs); -}; - -/** - * Matcher that checks that the expected item is an element in the actual Array. - * - * @param {Object} expected - */ -jasmine.Matchers.prototype.toContain = function(expected) { - return this.env.contains_(this.actual, expected); -}; - -/** - * Matcher that checks that the expected item is NOT an element in the actual Array. - * - * @param {Object} expected - * @deprecated as of 1.0. Use not.toNotContain() instead. - */ -jasmine.Matchers.prototype.toNotContain = function(expected) { - return !this.env.contains_(this.actual, expected); -}; - -jasmine.Matchers.prototype.toBeLessThan = function(expected) { - return this.actual < expected; -}; - -jasmine.Matchers.prototype.toBeGreaterThan = function(expected) { - return this.actual > expected; -}; - -/** - * Matcher that checks that the expected item is equal to the actual item - * up to a given level of decimal precision (default 2). - * - * @param {Number} expected - * @param {Number} precision - */ -jasmine.Matchers.prototype.toBeCloseTo = function(expected, precision) { - if (!(precision === 0)) { - precision = precision || 2; - } - var multiplier = Math.pow(10, precision); - var actual = Math.round(this.actual * multiplier); - expected = Math.round(expected * multiplier); - return expected == actual; -}; - -/** - * Matcher that checks that the expected exception was thrown by the actual. - * - * @param {String} expected - */ -jasmine.Matchers.prototype.toThrow = function(expected) { - var result = false; - var exception; - if (typeof this.actual != 'function') { - throw new Error('Actual is not a function'); - } - try { - this.actual(); - } catch (e) { - exception = e; - } - if (exception) { - result = (expected === jasmine.undefined || this.env.equals_(exception.message || exception, expected.message || expected)); - } - - var not = this.isNot ? "not " : ""; - - this.message = function() { - if (exception && (expected === jasmine.undefined || !this.env.equals_(exception.message || exception, expected.message || expected))) { - return ["Expected function " + not + "to throw", expected ? expected.message || expected : "an exception", ", but it threw", exception.message || exception].join(' '); - } else { - return "Expected function to throw an exception."; - } - }; - - return result; -}; - -jasmine.Matchers.Any = function(expectedClass) { - this.expectedClass = expectedClass; -}; - -jasmine.Matchers.Any.prototype.matches = function(other) { - if (this.expectedClass == String) { - return typeof other == 'string' || other instanceof String; - } - - if (this.expectedClass == Number) { - return typeof other == 'number' || other instanceof Number; - } - - if (this.expectedClass == Function) { - return typeof other == 'function' || other instanceof Function; - } - - if (this.expectedClass == Object) { - return typeof other == 'object'; - } - - return other instanceof this.expectedClass; -}; - -jasmine.Matchers.Any.prototype.toString = function() { - return ''; -}; - -/** - * @constructor - */ -jasmine.MultiReporter = function() { - this.subReporters_ = []; -}; -jasmine.util.inherit(jasmine.MultiReporter, jasmine.Reporter); - -jasmine.MultiReporter.prototype.addReporter = function(reporter) { - this.subReporters_.push(reporter); -}; - -(function() { - var functionNames = [ - "reportRunnerStarting", - "reportRunnerResults", - "reportSuiteResults", - "reportSpecStarting", - "reportSpecResults", - "log" - ]; - for (var i = 0; i < functionNames.length; i++) { - var functionName = functionNames[i]; - jasmine.MultiReporter.prototype[functionName] = (function(functionName) { - return function() { - for (var j = 0; j < this.subReporters_.length; j++) { - var subReporter = this.subReporters_[j]; - if (subReporter[functionName]) { - subReporter[functionName].apply(subReporter, arguments); - } - } - }; - })(functionName); - } -})(); -/** - * Holds results for a set of Jasmine spec. Allows for the results array to hold another jasmine.NestedResults - * - * @constructor - */ -jasmine.NestedResults = function() { - /** - * The total count of results - */ - this.totalCount = 0; - /** - * Number of passed results - */ - this.passedCount = 0; - /** - * Number of failed results - */ - this.failedCount = 0; - /** - * Was this suite/spec skipped? - */ - this.skipped = false; - /** - * @ignore - */ - this.items_ = []; -}; - -/** - * Roll up the result counts. - * - * @param result - */ -jasmine.NestedResults.prototype.rollupCounts = function(result) { - this.totalCount += result.totalCount; - this.passedCount += result.passedCount; - this.failedCount += result.failedCount; -}; - -/** - * Adds a log message. - * @param values Array of message parts which will be concatenated later. - */ -jasmine.NestedResults.prototype.log = function(values) { - this.items_.push(new jasmine.MessageResult(values)); -}; - -/** - * Getter for the results: message & results. - */ -jasmine.NestedResults.prototype.getItems = function() { - return this.items_; -}; - -/** - * Adds a result, tracking counts (total, passed, & failed) - * @param {jasmine.ExpectationResult|jasmine.NestedResults} result - */ -jasmine.NestedResults.prototype.addResult = function(result) { - if (result.type != 'log') { - if (result.items_) { - this.rollupCounts(result); - } else { - this.totalCount++; - if (result.passed()) { - this.passedCount++; - } else { - this.failedCount++; - } - } - } - this.items_.push(result); -}; - -/** - * @returns {Boolean} True if everything below passed - */ -jasmine.NestedResults.prototype.passed = function() { - return this.passedCount === this.totalCount; -}; -/** - * Base class for pretty printing for expectation results. - */ -jasmine.PrettyPrinter = function() { - this.ppNestLevel_ = 0; -}; - -/** - * Formats a value in a nice, human-readable string. - * - * @param value - */ -jasmine.PrettyPrinter.prototype.format = function(value) { - if (this.ppNestLevel_ > 40) { - throw new Error('jasmine.PrettyPrinter: format() nested too deeply!'); - } - - this.ppNestLevel_++; - try { - if (value === jasmine.undefined) { - this.emitScalar('undefined'); - } else if (value === null) { - this.emitScalar('null'); - } else if (value === jasmine.getGlobal()) { - this.emitScalar(''); - } else if (value instanceof jasmine.Matchers.Any) { - this.emitScalar(value.toString()); - } else if (typeof value === 'string') { - this.emitString(value); - } else if (jasmine.isSpy(value)) { - this.emitScalar("spy on " + value.identity); - } else if (value instanceof RegExp) { - this.emitScalar(value.toString()); - } else if (typeof value === 'function') { - this.emitScalar('Function'); - } else if (typeof value.nodeType === 'number') { - this.emitScalar('HTMLNode'); - } else if (value instanceof Date) { - this.emitScalar('Date(' + value + ')'); - } else if (value.__Jasmine_been_here_before__) { - this.emitScalar(''); - } else if (jasmine.isArray_(value) || typeof value == 'object') { - value.__Jasmine_been_here_before__ = true; - if (jasmine.isArray_(value)) { - this.emitArray(value); - } else { - this.emitObject(value); - } - delete value.__Jasmine_been_here_before__; - } else { - this.emitScalar(value.toString()); - } - } finally { - this.ppNestLevel_--; - } -}; - -jasmine.PrettyPrinter.prototype.iterateObject = function(obj, fn) { - for (var property in obj) { - if (property == '__Jasmine_been_here_before__') continue; - fn(property, obj.__lookupGetter__ ? (obj.__lookupGetter__(property) !== jasmine.undefined && - obj.__lookupGetter__(property) !== null) : false); - } -}; - -jasmine.PrettyPrinter.prototype.emitArray = jasmine.unimplementedMethod_; -jasmine.PrettyPrinter.prototype.emitObject = jasmine.unimplementedMethod_; -jasmine.PrettyPrinter.prototype.emitScalar = jasmine.unimplementedMethod_; -jasmine.PrettyPrinter.prototype.emitString = jasmine.unimplementedMethod_; - -jasmine.StringPrettyPrinter = function() { - jasmine.PrettyPrinter.call(this); - - this.string = ''; -}; -jasmine.util.inherit(jasmine.StringPrettyPrinter, jasmine.PrettyPrinter); - -jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) { - this.append(value); -}; - -jasmine.StringPrettyPrinter.prototype.emitString = function(value) { - this.append("'" + value + "'"); -}; - -jasmine.StringPrettyPrinter.prototype.emitArray = function(array) { - this.append('[ '); - for (var i = 0; i < array.length; i++) { - if (i > 0) { - this.append(', '); - } - this.format(array[i]); - } - this.append(' ]'); -}; - -jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) { - var self = this; - this.append('{ '); - var first = true; - - this.iterateObject(obj, function(property, isGetter) { - if (first) { - first = false; - } else { - self.append(', '); - } - - self.append(property); - self.append(' : '); - if (isGetter) { - self.append(''); - } else { - self.format(obj[property]); - } - }); - - this.append(' }'); -}; - -jasmine.StringPrettyPrinter.prototype.append = function(value) { - this.string += value; -}; -jasmine.Queue = function(env) { - this.env = env; - this.blocks = []; - this.running = false; - this.index = 0; - this.offset = 0; - this.abort = false; -}; - -jasmine.Queue.prototype.addBefore = function(block) { - this.blocks.unshift(block); -}; - -jasmine.Queue.prototype.add = function(block) { - this.blocks.push(block); -}; - -jasmine.Queue.prototype.insertNext = function(block) { - this.blocks.splice((this.index + this.offset + 1), 0, block); - this.offset++; -}; - -jasmine.Queue.prototype.start = function(onComplete) { - this.running = true; - this.onComplete = onComplete; - this.next_(); -}; - -jasmine.Queue.prototype.isRunning = function() { - return this.running; -}; - -jasmine.Queue.LOOP_DONT_RECURSE = true; - -jasmine.Queue.prototype.next_ = function() { - var self = this; - var goAgain = true; - - while (goAgain) { - goAgain = false; - - if (self.index < self.blocks.length && !this.abort) { - var calledSynchronously = true; - var completedSynchronously = false; - - var onComplete = function () { - if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) { - completedSynchronously = true; - return; - } - - if (self.blocks[self.index].abort) { - self.abort = true; - } - - self.offset = 0; - self.index++; - - var now = new Date().getTime(); - if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) { - self.env.lastUpdate = now; - self.env.setTimeout(function() { - self.next_(); - }, 0); - } else { - if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) { - goAgain = true; - } else { - self.next_(); - } - } - }; - self.blocks[self.index].execute(onComplete); - - calledSynchronously = false; - if (completedSynchronously) { - onComplete(); - } - - } else { - self.running = false; - if (self.onComplete) { - self.onComplete(); - } - } - } -}; - -jasmine.Queue.prototype.results = function() { - var results = new jasmine.NestedResults(); - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].results) { - results.addResult(this.blocks[i].results()); - } - } - return results; -}; - - -/** - * Runner - * - * @constructor - * @param {jasmine.Env} env - */ -jasmine.Runner = function(env) { - var self = this; - self.env = env; - self.queue = new jasmine.Queue(env); - self.before_ = []; - self.after_ = []; - self.suites_ = []; -}; - -jasmine.Runner.prototype.execute = function() { - var self = this; - if (self.env.reporter.reportRunnerStarting) { - self.env.reporter.reportRunnerStarting(this); - } - self.queue.start(function () { - self.finishCallback(); - }); -}; - -jasmine.Runner.prototype.beforeEach = function(beforeEachFunction) { - beforeEachFunction.typeName = 'beforeEach'; - this.before_.splice(0,0,beforeEachFunction); -}; - -jasmine.Runner.prototype.afterEach = function(afterEachFunction) { - afterEachFunction.typeName = 'afterEach'; - this.after_.splice(0,0,afterEachFunction); -}; - - -jasmine.Runner.prototype.finishCallback = function() { - this.env.reporter.reportRunnerResults(this); -}; - -jasmine.Runner.prototype.addSuite = function(suite) { - this.suites_.push(suite); -}; - -jasmine.Runner.prototype.add = function(block) { - if (block instanceof jasmine.Suite) { - this.addSuite(block); - } - this.queue.add(block); -}; - -jasmine.Runner.prototype.specs = function () { - var suites = this.suites(); - var specs = []; - for (var i = 0; i < suites.length; i++) { - specs = specs.concat(suites[i].specs()); - } - return specs; -}; - -jasmine.Runner.prototype.suites = function() { - return this.suites_; -}; - -jasmine.Runner.prototype.topLevelSuites = function() { - var topLevelSuites = []; - for (var i = 0; i < this.suites_.length; i++) { - if (!this.suites_[i].parentSuite) { - topLevelSuites.push(this.suites_[i]); - } - } - return topLevelSuites; -}; - -jasmine.Runner.prototype.results = function() { - return this.queue.results(); -}; -/** - * Internal representation of a Jasmine specification, or test. - * - * @constructor - * @param {jasmine.Env} env - * @param {jasmine.Suite} suite - * @param {String} description - */ -jasmine.Spec = function(env, suite, description) { - if (!env) { - throw new Error('jasmine.Env() required'); - } - if (!suite) { - throw new Error('jasmine.Suite() required'); - } - var spec = this; - spec.id = env.nextSpecId ? env.nextSpecId() : null; - spec.env = env; - spec.suite = suite; - spec.description = description; - spec.queue = new jasmine.Queue(env); - - spec.afterCallbacks = []; - spec.spies_ = []; - - spec.results_ = new jasmine.NestedResults(); - spec.results_.description = description; - spec.matchersClass = null; -}; - -jasmine.Spec.prototype.getFullName = function() { - return this.suite.getFullName() + ' ' + this.description + '.'; -}; - - -jasmine.Spec.prototype.results = function() { - return this.results_; -}; - -/** - * All parameters are pretty-printed and concatenated together, then written to the spec's output. - * - * Be careful not to leave calls to jasmine.log in production code. - */ -jasmine.Spec.prototype.log = function() { - return this.results_.log(arguments); -}; - -jasmine.Spec.prototype.runs = function (func) { - var block = new jasmine.Block(this.env, func, this); - this.addToQueue(block); - return this; -}; - -jasmine.Spec.prototype.addToQueue = function (block) { - if (this.queue.isRunning()) { - this.queue.insertNext(block); - } else { - this.queue.add(block); - } -}; - -/** - * @param {jasmine.ExpectationResult} result - */ -jasmine.Spec.prototype.addMatcherResult = function(result) { - this.results_.addResult(result); -}; - -jasmine.Spec.prototype.expect = function(actual) { - var positive = new (this.getMatchersClass_())(this.env, actual, this); - positive.not = new (this.getMatchersClass_())(this.env, actual, this, true); - return positive; -}; - -/** - * Waits a fixed time period before moving to the next block. - * - * @deprecated Use waitsFor() instead - * @param {Number} timeout milliseconds to wait - */ -jasmine.Spec.prototype.waits = function(timeout) { - var waitsFunc = new jasmine.WaitsBlock(this.env, timeout, this); - this.addToQueue(waitsFunc); - return this; -}; - -/** - * Waits for the latchFunction to return true before proceeding to the next block. - * - * @param {Function} latchFunction - * @param {String} optional_timeoutMessage - * @param {Number} optional_timeout - */ -jasmine.Spec.prototype.waitsFor = function(latchFunction, optional_timeoutMessage, optional_timeout) { - var latchFunction_ = null; - var optional_timeoutMessage_ = null; - var optional_timeout_ = null; - - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; - switch (typeof arg) { - case 'function': - latchFunction_ = arg; - break; - case 'string': - optional_timeoutMessage_ = arg; - break; - case 'number': - optional_timeout_ = arg; - break; - } - } - - var waitsForFunc = new jasmine.WaitsForBlock(this.env, optional_timeout_, latchFunction_, optional_timeoutMessage_, this); - this.addToQueue(waitsForFunc); - return this; -}; - -jasmine.Spec.prototype.fail = function (e) { - var expectationResult = new jasmine.ExpectationResult({ - passed: false, - message: e ? jasmine.util.formatException(e) : 'Exception', - trace: { stack: e.stack } - }); - this.results_.addResult(expectationResult); -}; - -jasmine.Spec.prototype.getMatchersClass_ = function() { - return this.matchersClass || this.env.matchersClass; -}; - -jasmine.Spec.prototype.addMatchers = function(matchersPrototype) { - var parent = this.getMatchersClass_(); - var newMatchersClass = function() { - parent.apply(this, arguments); - }; - jasmine.util.inherit(newMatchersClass, parent); - jasmine.Matchers.wrapInto_(matchersPrototype, newMatchersClass); - this.matchersClass = newMatchersClass; -}; - -jasmine.Spec.prototype.finishCallback = function() { - this.env.reporter.reportSpecResults(this); -}; - -jasmine.Spec.prototype.finish = function(onComplete) { - this.removeAllSpies(); - this.finishCallback(); - if (onComplete) { - onComplete(); - } -}; - -jasmine.Spec.prototype.after = function(doAfter) { - if (this.queue.isRunning()) { - this.queue.add(new jasmine.Block(this.env, doAfter, this)); - } else { - this.afterCallbacks.unshift(doAfter); - } -}; - -jasmine.Spec.prototype.execute = function(onComplete) { - var spec = this; - if (!spec.env.specFilter(spec)) { - spec.results_.skipped = true; - spec.finish(onComplete); - return; - } - - this.env.reporter.reportSpecStarting(this); - - spec.env.currentSpec = spec; - - spec.addBeforesAndAftersToQueue(); - - spec.queue.start(function () { - spec.finish(onComplete); - }); -}; - -jasmine.Spec.prototype.addBeforesAndAftersToQueue = function() { - var runner = this.env.currentRunner(); - var i; - - for (var suite = this.suite; suite; suite = suite.parentSuite) { - for (i = 0; i < suite.before_.length; i++) { - this.queue.addBefore(new jasmine.Block(this.env, suite.before_[i], this)); - } - } - for (i = 0; i < runner.before_.length; i++) { - this.queue.addBefore(new jasmine.Block(this.env, runner.before_[i], this)); - } - for (i = 0; i < this.afterCallbacks.length; i++) { - this.queue.add(new jasmine.Block(this.env, this.afterCallbacks[i], this)); - } - for (suite = this.suite; suite; suite = suite.parentSuite) { - for (i = 0; i < suite.after_.length; i++) { - this.queue.add(new jasmine.Block(this.env, suite.after_[i], this)); - } - } - for (i = 0; i < runner.after_.length; i++) { - this.queue.add(new jasmine.Block(this.env, runner.after_[i], this)); - } -}; - -jasmine.Spec.prototype.explodes = function() { - throw 'explodes function should not have been called'; -}; - -jasmine.Spec.prototype.spyOn = function(obj, methodName, ignoreMethodDoesntExist) { - if (obj == jasmine.undefined) { - throw "spyOn could not find an object to spy upon for " + methodName + "()"; - } - - if (!ignoreMethodDoesntExist && obj[methodName] === jasmine.undefined) { - throw methodName + '() method does not exist'; - } - - if (!ignoreMethodDoesntExist && obj[methodName] && obj[methodName].isSpy) { - throw new Error(methodName + ' has already been spied upon'); - } - - var spyObj = jasmine.createSpy(methodName); - - this.spies_.push(spyObj); - spyObj.baseObj = obj; - spyObj.methodName = methodName; - spyObj.originalValue = obj[methodName]; - - obj[methodName] = spyObj; - - return spyObj; -}; - -jasmine.Spec.prototype.removeAllSpies = function() { - for (var i = 0; i < this.spies_.length; i++) { - var spy = this.spies_[i]; - spy.baseObj[spy.methodName] = spy.originalValue; - } - this.spies_ = []; -}; - -/** - * Internal representation of a Jasmine suite. - * - * @constructor - * @param {jasmine.Env} env - * @param {String} description - * @param {Function} specDefinitions - * @param {jasmine.Suite} parentSuite - */ -jasmine.Suite = function(env, description, specDefinitions, parentSuite) { - var self = this; - self.id = env.nextSuiteId ? env.nextSuiteId() : null; - self.description = description; - self.queue = new jasmine.Queue(env); - self.parentSuite = parentSuite; - self.env = env; - self.before_ = []; - self.after_ = []; - self.children_ = []; - self.suites_ = []; - self.specs_ = []; -}; - -jasmine.Suite.prototype.getFullName = function() { - var fullName = this.description; - for (var parentSuite = this.parentSuite; parentSuite; parentSuite = parentSuite.parentSuite) { - fullName = parentSuite.description + ' ' + fullName; - } - return fullName; -}; - -jasmine.Suite.prototype.finish = function(onComplete) { - this.env.reporter.reportSuiteResults(this); - this.finished = true; - if (typeof(onComplete) == 'function') { - onComplete(); - } -}; - -jasmine.Suite.prototype.beforeEach = function(beforeEachFunction) { - beforeEachFunction.typeName = 'beforeEach'; - this.before_.unshift(beforeEachFunction); -}; - -jasmine.Suite.prototype.afterEach = function(afterEachFunction) { - afterEachFunction.typeName = 'afterEach'; - this.after_.unshift(afterEachFunction); -}; - -jasmine.Suite.prototype.results = function() { - return this.queue.results(); -}; - -jasmine.Suite.prototype.add = function(suiteOrSpec) { - this.children_.push(suiteOrSpec); - if (suiteOrSpec instanceof jasmine.Suite) { - this.suites_.push(suiteOrSpec); - this.env.currentRunner().addSuite(suiteOrSpec); - } else { - this.specs_.push(suiteOrSpec); - } - this.queue.add(suiteOrSpec); -}; - -jasmine.Suite.prototype.specs = function() { - return this.specs_; -}; - -jasmine.Suite.prototype.suites = function() { - return this.suites_; -}; - -jasmine.Suite.prototype.children = function() { - return this.children_; -}; - -jasmine.Suite.prototype.execute = function(onComplete) { - var self = this; - this.queue.start(function () { - self.finish(onComplete); - }); -}; -jasmine.WaitsBlock = function(env, timeout, spec) { - this.timeout = timeout; - jasmine.Block.call(this, env, null, spec); -}; - -jasmine.util.inherit(jasmine.WaitsBlock, jasmine.Block); - -jasmine.WaitsBlock.prototype.execute = function (onComplete) { - if (jasmine.VERBOSE) { - this.env.reporter.log('>> Jasmine waiting for ' + this.timeout + ' ms...'); - } - this.env.setTimeout(function () { - onComplete(); - }, this.timeout); -}; -/** - * A block which waits for some condition to become true, with timeout. - * - * @constructor - * @extends jasmine.Block - * @param {jasmine.Env} env The Jasmine environment. - * @param {Number} timeout The maximum time in milliseconds to wait for the condition to become true. - * @param {Function} latchFunction A function which returns true when the desired condition has been met. - * @param {String} message The message to display if the desired condition hasn't been met within the given time period. - * @param {jasmine.Spec} spec The Jasmine spec. - */ -jasmine.WaitsForBlock = function(env, timeout, latchFunction, message, spec) { - this.timeout = timeout || env.defaultTimeoutInterval; - this.latchFunction = latchFunction; - this.message = message; - this.totalTimeSpentWaitingForLatch = 0; - jasmine.Block.call(this, env, null, spec); -}; -jasmine.util.inherit(jasmine.WaitsForBlock, jasmine.Block); - -jasmine.WaitsForBlock.TIMEOUT_INCREMENT = 10; - -jasmine.WaitsForBlock.prototype.execute = function(onComplete) { - if (jasmine.VERBOSE) { - this.env.reporter.log('>> Jasmine waiting for ' + (this.message || 'something to happen')); - } - var latchFunctionResult; - try { - latchFunctionResult = this.latchFunction.apply(this.spec); - } catch (e) { - this.spec.fail(e); - onComplete(); - return; - } - - if (latchFunctionResult) { - onComplete(); - } else if (this.totalTimeSpentWaitingForLatch >= this.timeout) { - var message = 'timed out after ' + this.timeout + ' msec waiting for ' + (this.message || 'something to happen'); - this.spec.fail({ - name: 'timeout', - message: message - }); - - this.abort = true; - onComplete(); - } else { - this.totalTimeSpentWaitingForLatch += jasmine.WaitsForBlock.TIMEOUT_INCREMENT; - var self = this; - this.env.setTimeout(function() { - self.execute(onComplete); - }, jasmine.WaitsForBlock.TIMEOUT_INCREMENT); - } -}; -// Mock setTimeout, clearTimeout -// Contributed by Pivotal Computer Systems, www.pivotalsf.com - -jasmine.FakeTimer = function() { - this.reset(); - - var self = this; - self.setTimeout = function(funcToCall, millis) { - self.timeoutsMade++; - self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false); - return self.timeoutsMade; - }; - - self.setInterval = function(funcToCall, millis) { - self.timeoutsMade++; - self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true); - return self.timeoutsMade; - }; - - self.clearTimeout = function(timeoutKey) { - self.scheduledFunctions[timeoutKey] = jasmine.undefined; - }; - - self.clearInterval = function(timeoutKey) { - self.scheduledFunctions[timeoutKey] = jasmine.undefined; - }; - -}; - -jasmine.FakeTimer.prototype.reset = function() { - this.timeoutsMade = 0; - this.scheduledFunctions = {}; - this.nowMillis = 0; -}; - -jasmine.FakeTimer.prototype.tick = function(millis) { - var oldMillis = this.nowMillis; - var newMillis = oldMillis + millis; - this.runFunctionsWithinRange(oldMillis, newMillis); - this.nowMillis = newMillis; -}; - -jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) { - var scheduledFunc; - var funcsToRun = []; - for (var timeoutKey in this.scheduledFunctions) { - scheduledFunc = this.scheduledFunctions[timeoutKey]; - if (scheduledFunc != jasmine.undefined && - scheduledFunc.runAtMillis >= oldMillis && - scheduledFunc.runAtMillis <= nowMillis) { - funcsToRun.push(scheduledFunc); - this.scheduledFunctions[timeoutKey] = jasmine.undefined; - } - } - - if (funcsToRun.length > 0) { - funcsToRun.sort(function(a, b) { - return a.runAtMillis - b.runAtMillis; - }); - for (var i = 0; i < funcsToRun.length; ++i) { - try { - var funcToRun = funcsToRun[i]; - this.nowMillis = funcToRun.runAtMillis; - funcToRun.funcToCall(); - if (funcToRun.recurring) { - this.scheduleFunction(funcToRun.timeoutKey, - funcToRun.funcToCall, - funcToRun.millis, - true); - } - } catch(e) { - } - } - this.runFunctionsWithinRange(oldMillis, nowMillis); - } -}; - -jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) { - this.scheduledFunctions[timeoutKey] = { - runAtMillis: this.nowMillis + millis, - funcToCall: funcToCall, - recurring: recurring, - timeoutKey: timeoutKey, - millis: millis - }; -}; - -/** - * @namespace - */ -jasmine.Clock = { - defaultFakeTimer: new jasmine.FakeTimer(), - - reset: function() { - jasmine.Clock.assertInstalled(); - jasmine.Clock.defaultFakeTimer.reset(); - }, - - tick: function(millis) { - jasmine.Clock.assertInstalled(); - jasmine.Clock.defaultFakeTimer.tick(millis); - }, - - runFunctionsWithinRange: function(oldMillis, nowMillis) { - jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis); - }, - - scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) { - jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring); - }, - - useMock: function() { - if (!jasmine.Clock.isInstalled()) { - var spec = jasmine.getEnv().currentSpec; - spec.after(jasmine.Clock.uninstallMock); - - jasmine.Clock.installMock(); - } - }, - - installMock: function() { - jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer; - }, - - uninstallMock: function() { - jasmine.Clock.assertInstalled(); - jasmine.Clock.installed = jasmine.Clock.real; - }, - - real: { - setTimeout: jasmine.getGlobal().setTimeout, - clearTimeout: jasmine.getGlobal().clearTimeout, - setInterval: jasmine.getGlobal().setInterval, - clearInterval: jasmine.getGlobal().clearInterval - }, - - assertInstalled: function() { - if (!jasmine.Clock.isInstalled()) { - throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()"); - } - }, - - isInstalled: function() { - return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer; - }, - - installed: null -}; -jasmine.Clock.installed = jasmine.Clock.real; - -//else for IE support -jasmine.getGlobal().setTimeout = function(funcToCall, millis) { - if (jasmine.Clock.installed.setTimeout.apply) { - return jasmine.Clock.installed.setTimeout.apply(this, arguments); - } else { - return jasmine.Clock.installed.setTimeout(funcToCall, millis); - } -}; - -jasmine.getGlobal().setInterval = function(funcToCall, millis) { - if (jasmine.Clock.installed.setInterval.apply) { - return jasmine.Clock.installed.setInterval.apply(this, arguments); - } else { - return jasmine.Clock.installed.setInterval(funcToCall, millis); - } -}; - -jasmine.getGlobal().clearTimeout = function(timeoutKey) { - if (jasmine.Clock.installed.clearTimeout.apply) { - return jasmine.Clock.installed.clearTimeout.apply(this, arguments); - } else { - return jasmine.Clock.installed.clearTimeout(timeoutKey); - } -}; - -jasmine.getGlobal().clearInterval = function(timeoutKey) { - if (jasmine.Clock.installed.clearTimeout.apply) { - return jasmine.Clock.installed.clearInterval.apply(this, arguments); - } else { - return jasmine.Clock.installed.clearInterval(timeoutKey); - } -}; - -jasmine.version_= { - "major": 1, - "minor": 1, - "build": 0, - "revision": 1315677058 -}; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/bson/tools/jasmine-1.1.0/jasmine_favicon.png deleted file mode 100644 index 218f3b43713598fa5a3e78b57aceb909c33f46df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmV;419tq0P)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_0008u zNkl3{fod28|PjmA)7fYg4w8-(2my9xtBGOs}K`n&t1VzxMO^X)M zrW+Ln1udc?q6TP)z5gAjt)P&D!M$+HJK#x<`xnD030zwD?KrxxY!2tlA zGc-58?0D7SsT)7Km=v+tNVNUk`?s@;^OxCF)y6P}_mL;~7;S<@b|MzmKq)m8l@yky zT1~ECpxZw@64!nkI34QLiUsA%i%N>-$&zGYR7WJyi9ERMyS(%kf z7A_r)X>!90&m(FwDQZ>q;+nOa*KR2+E6Fz)QwU=W1Oyo*4>_qlm|~joa|{4_A_3W8 z#FFZzRp-xMIx5a7D_Fj3&#r^TbIY@cND1d0f*^qDIs{!pw!IWGQ_%l4#ASm_D5Vet z0%ek7^)@xPihX_G0&hIc9*14ca=D!8oG}vW?H%~w^F?f_s>zU|fKrNJXJ_d6{v!t( zpEoqMws_yQws>3o?VW8Txq~#->dJG^ELW5irR!s`(_JvD^6;r+ho~eIK@ia8_lH(h zt*-p?CFC1_h2MV=?jP){uW!7WjLjCaO&c1D+tf582!XEaoB#xWAYcN5f$sLtf$koW zQs{{>)ZTq?FC6|J_%n}AWbiFK(Bo-%^-{H`*)E(ucjo-r%SYm)W5f6tN=xz=S646E fNXW#U{x?4WXWJ -#include - -// base64 tables -static char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -static signed char index_64[128] = -{ - -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, - -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, - -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63, - 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, - 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1, - -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, - 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1 -}; -#define CHAR64(c) (((c) < 0 || (c) > 127) ? -1 : index_64[(c)]) - -// base64_encode : base64 encode -// -// value : data to encode -// vlen : length of data -// (result) : new char[] - c-str of result -char *base64_encode(const unsigned char *value, int vlen) -{ - char *result = (char *)malloc((vlen * 4) / 3 + 5); - char *out = result; - while (vlen >= 3) - { - *out++ = basis_64[value[0] >> 2]; - *out++ = basis_64[((value[0] << 4) & 0x30) | (value[1] >> 4)]; - *out++ = basis_64[((value[1] << 2) & 0x3C) | (value[2] >> 6)]; - *out++ = basis_64[value[2] & 0x3F]; - value += 3; - vlen -= 3; - } - if (vlen > 0) - { - *out++ = basis_64[value[0] >> 2]; - unsigned char oval = (value[0] << 4) & 0x30; - if (vlen > 1) oval |= value[1] >> 4; - *out++ = basis_64[oval]; - *out++ = (vlen < 2) ? '=' : basis_64[(value[1] << 2) & 0x3C]; - *out++ = '='; - } - *out = '\0'; - - return result; -} - -// base64_decode : base64 decode -// -// value : c-str to decode -// rlen : length of decoded result -// (result) : new unsigned char[] - decoded result -unsigned char *base64_decode(const char *value, int *rlen) -{ - *rlen = 0; - int c1, c2, c3, c4; - - int vlen = strlen(value); - unsigned char *result =(unsigned char *)malloc((vlen * 3) / 4 + 1); - unsigned char *out = result; - - while (1) - { - if (value[0]==0) - return result; - c1 = value[0]; - if (CHAR64(c1) == -1) - goto base64_decode_error;; - c2 = value[1]; - if (CHAR64(c2) == -1) - goto base64_decode_error;; - c3 = value[2]; - if ((c3 != '=') && (CHAR64(c3) == -1)) - goto base64_decode_error;; - c4 = value[3]; - if ((c4 != '=') && (CHAR64(c4) == -1)) - goto base64_decode_error;; - - value += 4; - *out++ = (CHAR64(c1) << 2) | (CHAR64(c2) >> 4); - *rlen += 1; - if (c3 != '=') - { - *out++ = ((CHAR64(c2) << 4) & 0xf0) | (CHAR64(c3) >> 2); - *rlen += 1; - if (c4 != '=') - { - *out++ = ((CHAR64(c3) << 6) & 0xc0) | CHAR64(c4); - *rlen += 1; - } - } - } - -base64_decode_error: - *result = 0; - *rlen = 0; - return result; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h deleted file mode 100644 index f0e1f06..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/base64.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2006-2008 Apple Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - -char *base64_encode(const unsigned char *value, int vlen); -unsigned char *base64_decode(const char *value, int *rlen); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc deleted file mode 100644 index 08eda82..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.cc +++ /dev/null @@ -1,563 +0,0 @@ -#include "kerberos.h" -#include -#include "worker.h" -#include "kerberos_context.h" - -#ifndef ARRAY_SIZE -# define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0])) -#endif - -Persistent Kerberos::constructor_template; - -// Call structs -typedef struct AuthGSSClientCall { - uint32_t flags; - char *uri; -} AuthGSSClientCall; - -typedef struct AuthGSSClientStepCall { - KerberosContext *context; - char *challenge; -} AuthGSSClientStepCall; - -typedef struct AuthGSSClientUnwrapCall { - KerberosContext *context; - char *challenge; -} AuthGSSClientUnwrapCall; - -typedef struct AuthGSSClientWrapCall { - KerberosContext *context; - char *challenge; - char *user_name; -} AuthGSSClientWrapCall; - -typedef struct AuthGSSClientCleanCall { - KerberosContext *context; -} AuthGSSClientCleanCall; - -// VException object (causes throw in calling code) -static Handle VException(const char *msg) { - HandleScope scope; - return ThrowException(Exception::Error(String::New(msg))); -} - -Kerberos::Kerberos() : ObjectWrap() { -} - -void Kerberos::Initialize(v8::Handle target) { - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(Kerberos::New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("Kerberos")); - - // Set up method for the Kerberos instance - NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientInit", AuthGSSClientInit); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientStep", AuthGSSClientStep); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientUnwrap", AuthGSSClientUnwrap); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientWrap", AuthGSSClientWrap); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "authGSSClientClean", AuthGSSClientClean); - - // Set the symbol - target->ForceSet(String::NewSymbol("Kerberos"), constructor_template->GetFunction()); -} - -Handle Kerberos::New(const Arguments &args) { - // Create a Kerberos instance - Kerberos *kerberos = new Kerberos(); - // Return the kerberos object - kerberos->Wrap(args.This()); - return args.This(); -} - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// authGSSClientInit -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -static void _authGSSClientInit(Worker *worker) { - gss_client_state *state; - gss_client_response *response; - - // Allocate state - state = (gss_client_state *)malloc(sizeof(gss_client_state)); - - // Unpack the parameter data struct - AuthGSSClientCall *call = (AuthGSSClientCall *)worker->parameters; - // Start the kerberos client - response = authenticate_gss_client_init(call->uri, call->flags, state); - - // Release the parameter struct memory - free(call->uri); - free(call); - - // If we have an error mark worker as having had an error - if(response->return_code == AUTH_GSS_ERROR) { - worker->error = TRUE; - worker->error_code = response->return_code; - worker->error_message = response->message; - } else { - worker->return_value = state; - } - - // Free structure - free(response); -} - -static Handle _map_authGSSClientInit(Worker *worker) { - HandleScope scope; - - KerberosContext *context = KerberosContext::New(); - context->state = (gss_client_state *)worker->return_value; - // Persistent _context = Persistent::New(context->handle_); - return scope.Close(context->handle_); -} - -// Initialize method -Handle Kerberos::AuthGSSClientInit(const Arguments &args) { - HandleScope scope; - - // Ensure valid call - if(args.Length() != 3) return VException("Requires a service string uri, integer flags and a callback function"); - if(args.Length() == 3 && !args[0]->IsString() && !args[1]->IsInt32() && !args[2]->IsFunction()) - return VException("Requires a service string uri, integer flags and a callback function"); - - Local service = args[0]->ToString(); - // Convert uri string to c-string - char *service_str = (char *)calloc(service->Utf8Length() + 1, sizeof(char)); - // Write v8 string to c-string - service->WriteUtf8(service_str); - - // Allocate a structure - AuthGSSClientCall *call = (AuthGSSClientCall *)calloc(1, sizeof(AuthGSSClientCall)); - call->flags =args[1]->ToInt32()->Uint32Value(); - call->uri = service_str; - - // Unpack the callback - Local callback = Local::Cast(args[2]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _authGSSClientInit; - worker->mapper = _map_authGSSClientInit; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); - // Return no value as it's callback based - return scope.Close(Undefined()); -} - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// authGSSClientStep -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -static void _authGSSClientStep(Worker *worker) { - gss_client_state *state; - gss_client_response *response; - char *challenge; - - // Unpack the parameter data struct - AuthGSSClientStepCall *call = (AuthGSSClientStepCall *)worker->parameters; - // Get the state - state = call->context->state; - challenge = call->challenge; - - // Check what kind of challenge we have - if(call->challenge == NULL) { - challenge = (char *)""; - } - - // Perform authentication step - response = authenticate_gss_client_step(state, challenge); - - // If we have an error mark worker as having had an error - if(response->return_code == AUTH_GSS_ERROR) { - worker->error = TRUE; - worker->error_code = response->return_code; - worker->error_message = response->message; - } else { - worker->return_code = response->return_code; - } - - // Free up structure - if(call->challenge != NULL) free(call->challenge); - free(call); - free(response); -} - -static Handle _map_authGSSClientStep(Worker *worker) { - HandleScope scope; - // Return the return code - return scope.Close(Int32::New(worker->return_code)); -} - -// Initialize method -Handle Kerberos::AuthGSSClientStep(const Arguments &args) { - HandleScope scope; - - // Ensure valid call - if(args.Length() != 2 && args.Length() != 3) return VException("Requires a GSS context, optional challenge string and callback function"); - if(args.Length() == 2 && !KerberosContext::HasInstance(args[0])) return VException("Requires a GSS context, optional challenge string and callback function"); - if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString()) return VException("Requires a GSS context, optional challenge string and callback function"); - - // Challenge string - char *challenge_str = NULL; - // Let's unpack the parameters - Local object = args[0]->ToObject(); - KerberosContext *kerberos_context = KerberosContext::Unwrap(object); - - // If we have a challenge string - if(args.Length() == 3) { - // Unpack the challenge string - Local challenge = args[1]->ToString(); - // Convert uri string to c-string - challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char)); - // Write v8 string to c-string - challenge->WriteUtf8(challenge_str); - } - - // Allocate a structure - AuthGSSClientStepCall *call = (AuthGSSClientStepCall *)calloc(1, sizeof(AuthGSSClientCall)); - call->context = kerberos_context; - call->challenge = challenge_str; - - // Unpack the callback - Local callback = Local::Cast(args[2]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _authGSSClientStep; - worker->mapper = _map_authGSSClientStep; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); - - // Return no value as it's callback based - return scope.Close(Undefined()); -} - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// authGSSClientUnwrap -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -static void _authGSSClientUnwrap(Worker *worker) { - gss_client_response *response; - char *challenge; - - // Unpack the parameter data struct - AuthGSSClientUnwrapCall *call = (AuthGSSClientUnwrapCall *)worker->parameters; - challenge = call->challenge; - - // Check what kind of challenge we have - if(call->challenge == NULL) { - challenge = (char *)""; - } - - // Perform authentication step - response = authenticate_gss_client_unwrap(call->context->state, challenge); - - // If we have an error mark worker as having had an error - if(response->return_code == AUTH_GSS_ERROR) { - worker->error = TRUE; - worker->error_code = response->return_code; - worker->error_message = response->message; - } else { - worker->return_code = response->return_code; - } - - // Free up structure - if(call->challenge != NULL) free(call->challenge); - free(call); - free(response); -} - -static Handle _map_authGSSClientUnwrap(Worker *worker) { - HandleScope scope; - // Return the return code - return scope.Close(Int32::New(worker->return_code)); -} - -// Initialize method -Handle Kerberos::AuthGSSClientUnwrap(const Arguments &args) { - HandleScope scope; - - // Ensure valid call - if(args.Length() != 2 && args.Length() != 3) return VException("Requires a GSS context, optional challenge string and callback function"); - if(args.Length() == 2 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsFunction()) return VException("Requires a GSS context, optional challenge string and callback function"); - if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, optional challenge string and callback function"); - - // Challenge string - char *challenge_str = NULL; - // Let's unpack the parameters - Local object = args[0]->ToObject(); - KerberosContext *kerberos_context = KerberosContext::Unwrap(object); - - // If we have a challenge string - if(args.Length() == 3) { - // Unpack the challenge string - Local challenge = args[1]->ToString(); - // Convert uri string to c-string - challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char)); - // Write v8 string to c-string - challenge->WriteUtf8(challenge_str); - } - - // Allocate a structure - AuthGSSClientUnwrapCall *call = (AuthGSSClientUnwrapCall *)calloc(1, sizeof(AuthGSSClientUnwrapCall)); - call->context = kerberos_context; - call->challenge = challenge_str; - - // Unpack the callback - Local callback = args.Length() == 3 ? Local::Cast(args[2]) : Local::Cast(args[1]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _authGSSClientUnwrap; - worker->mapper = _map_authGSSClientUnwrap; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); - - // Return no value as it's callback based - return scope.Close(Undefined()); -} - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// authGSSClientWrap -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -static void _authGSSClientWrap(Worker *worker) { - gss_client_response *response; - char *user_name = NULL; - - // Unpack the parameter data struct - AuthGSSClientWrapCall *call = (AuthGSSClientWrapCall *)worker->parameters; - user_name = call->user_name; - - // Check what kind of challenge we have - if(call->user_name == NULL) { - user_name = (char *)""; - } - - // Perform authentication step - response = authenticate_gss_client_wrap(call->context->state, call->challenge, user_name); - - // If we have an error mark worker as having had an error - if(response->return_code == AUTH_GSS_ERROR) { - worker->error = TRUE; - worker->error_code = response->return_code; - worker->error_message = response->message; - } else { - worker->return_code = response->return_code; - } - - // Free up structure - if(call->challenge != NULL) free(call->challenge); - if(call->user_name != NULL) free(call->user_name); - free(call); - free(response); -} - -static Handle _map_authGSSClientWrap(Worker *worker) { - HandleScope scope; - // Return the return code - return scope.Close(Int32::New(worker->return_code)); -} - -// Initialize method -Handle Kerberos::AuthGSSClientWrap(const Arguments &args) { - HandleScope scope; - - // Ensure valid call - if(args.Length() != 3 && args.Length() != 4) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function"); - if(args.Length() == 3 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function"); - if(args.Length() == 4 && !KerberosContext::HasInstance(args[0]) && !args[1]->IsString() && !args[2]->IsString() && !args[2]->IsFunction()) return VException("Requires a GSS context, the result from the authGSSClientResponse after authGSSClientUnwrap, optional user name and callback function"); - - // Challenge string - char *challenge_str = NULL; - char *user_name_str = NULL; - - // Let's unpack the kerberos context - Local object = args[0]->ToObject(); - KerberosContext *kerberos_context = KerberosContext::Unwrap(object); - - // Unpack the challenge string - Local challenge = args[1]->ToString(); - // Convert uri string to c-string - challenge_str = (char *)calloc(challenge->Utf8Length() + 1, sizeof(char)); - // Write v8 string to c-string - challenge->WriteUtf8(challenge_str); - - // If we have a user string - if(args.Length() == 4) { - // Unpack user name - Local user_name = args[2]->ToString(); - // Convert uri string to c-string - user_name_str = (char *)calloc(user_name->Utf8Length() + 1, sizeof(char)); - // Write v8 string to c-string - user_name->WriteUtf8(user_name_str); - } - - // Allocate a structure - AuthGSSClientWrapCall *call = (AuthGSSClientWrapCall *)calloc(1, sizeof(AuthGSSClientWrapCall)); - call->context = kerberos_context; - call->challenge = challenge_str; - call->user_name = user_name_str; - - // Unpack the callback - Local callback = args.Length() == 4 ? Local::Cast(args[3]) : Local::Cast(args[2]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _authGSSClientWrap; - worker->mapper = _map_authGSSClientWrap; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); - - // Return no value as it's callback based - return scope.Close(Undefined()); -} - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// authGSSClientWrap -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -static void _authGSSClientClean(Worker *worker) { - gss_client_response *response; - - // Unpack the parameter data struct - AuthGSSClientCleanCall *call = (AuthGSSClientCleanCall *)worker->parameters; - - // Perform authentication step - response = authenticate_gss_client_clean(call->context->state); - - // If we have an error mark worker as having had an error - if(response->return_code == AUTH_GSS_ERROR) { - worker->error = TRUE; - worker->error_code = response->return_code; - worker->error_message = response->message; - } else { - worker->return_code = response->return_code; - } - - // Free up structure - free(call); - free(response); -} - -static Handle _map_authGSSClientClean(Worker *worker) { - HandleScope scope; - // Return the return code - return scope.Close(Int32::New(worker->return_code)); -} - -// Initialize method -Handle Kerberos::AuthGSSClientClean(const Arguments &args) { - HandleScope scope; - - // // Ensure valid call - if(args.Length() != 2) return VException("Requires a GSS context and callback function"); - if(!KerberosContext::HasInstance(args[0]) && !args[1]->IsFunction()) return VException("Requires a GSS context and callback function"); - - // Let's unpack the kerberos context - Local object = args[0]->ToObject(); - KerberosContext *kerberos_context = KerberosContext::Unwrap(object); - - // Allocate a structure - AuthGSSClientCleanCall *call = (AuthGSSClientCleanCall *)calloc(1, sizeof(AuthGSSClientCleanCall)); - call->context = kerberos_context; - - // Unpack the callback - Local callback = Local::Cast(args[1]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _authGSSClientClean; - worker->mapper = _map_authGSSClientClean; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Kerberos::Process, (uv_after_work_cb)Kerberos::After); - - // Return no value as it's callback based - return scope.Close(Undefined()); -} - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// UV Lib callbacks -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -void Kerberos::Process(uv_work_t* work_req) { - // Grab the worker - Worker *worker = static_cast(work_req->data); - // Execute the worker code - worker->execute(worker); -} - -void Kerberos::After(uv_work_t* work_req) { - // Grab the scope of the call from Node - v8::HandleScope scope; - - // Get the worker reference - Worker *worker = static_cast(work_req->data); - - // If we have an error - if(worker->error) { - v8::Local err = v8::Exception::Error(v8::String::New(worker->error_message)); - Local obj = err->ToObject(); - obj->Set(NODE_PSYMBOL("code"), Int32::New(worker->error_code)); - v8::Local args[2] = { err, v8::Local::New(v8::Null()) }; - // Execute the error - v8::TryCatch try_catch; - // Call the callback - worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); - // If we have an exception handle it as a fatalexception - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - } else { - // // Map the data - v8::Handle result = worker->mapper(worker); - // Set up the callback with a null first - v8::Handle args[2] = { v8::Local::New(v8::Null()), result}; - // Wrap the callback function call in a TryCatch so that we can call - // node's FatalException afterwards. This makes it possible to catch - // the exception from JavaScript land using the - // process.on('uncaughtException') event. - v8::TryCatch try_catch; - // Call the callback - worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); - // If we have an exception handle it as a fatalexception - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - } - - // Clean up the memory - worker->callback.Dispose(); - delete worker; -} - -// Exporting function -extern "C" void init(Handle target) { - HandleScope scope; - Kerberos::Initialize(target); - KerberosContext::Initialize(target); -} - -NODE_MODULE(kerberos, init); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h deleted file mode 100644 index f0fbcdc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef KERBEROS_H -#define KERBEROS_H - -#include -#include -#include - -#include -#include -#include - -extern "C" { - #include "kerberosgss.h" -} - -using namespace v8; -using namespace node; - -class Kerberos : public ObjectWrap { - -public: - Kerberos(); - ~Kerberos() {}; - - // Constructor used for creating new Kerberos objects from C++ - static Persistent constructor_template; - - // Initialize function for the object - static void Initialize(Handle target); - - // Method available - static Handle AuthGSSClientInit(const Arguments &args); - static Handle AuthGSSClientStep(const Arguments &args); - static Handle AuthGSSClientUnwrap(const Arguments &args); - static Handle AuthGSSClientWrap(const Arguments &args); - static Handle AuthGSSClientClean(const Arguments &args); - -private: - static Handle New(const Arguments &args); - - // Handles the uv calls - static void Process(uv_work_t* work_req); - // Called after work is done - static void After(uv_work_t* work_req); -}; - -#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js deleted file mode 100644 index b1a701b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos.js +++ /dev/null @@ -1,91 +0,0 @@ -var kerberos = require('../build/Release/kerberos') - , KerberosNative = kerberos.Kerberos; - -var Kerberos = function() { - this._native_kerberos = new KerberosNative(); -} - -Kerberos.prototype.authGSSClientInit = function(uri, flags, callback) { - return this._native_kerberos.authGSSClientInit(uri, flags, callback); -} - -Kerberos.prototype.authGSSClientStep = function(context, challenge, callback) { - if(typeof challenge == 'function') { - callback = challenge; - challenge = ''; - } - - return this._native_kerberos.authGSSClientStep(context, challenge, callback); -} - -Kerberos.prototype.authGSSClientUnwrap = function(context, challenge, callback) { - if(typeof challenge == 'function') { - callback = challenge; - challenge = ''; - } - - return this._native_kerberos.authGSSClientUnwrap(context, challenge, callback); -} - -Kerberos.prototype.authGSSClientWrap = function(context, challenge, user_name, callback) { - if(typeof user_name == 'function') { - callback = user_name; - user_name = ''; - } - - return this._native_kerberos.authGSSClientWrap(context, challenge, user_name, callback); -} - -Kerberos.prototype.authGSSClientClean = function(context, callback) { - return this._native_kerberos.authGSSClientClean(context, callback); -} - -Kerberos.prototype.acquireAlternateCredentials = function(user_name, password, domain) { - return this._native_kerberos.acquireAlternateCredentials(user_name, password, domain); -} - -Kerberos.prototype.prepareOutboundPackage = function(principal, inputdata) { - return this._native_kerberos.prepareOutboundPackage(principal, inputdata); -} - -Kerberos.prototype.decryptMessage = function(challenge) { - return this._native_kerberos.decryptMessage(challenge); -} - -Kerberos.prototype.encryptMessage = function(challenge) { - return this._native_kerberos.encryptMessage(challenge); -} - -Kerberos.prototype.queryContextAttribute = function(attribute) { - if(typeof attribute != 'number' && attribute != 0x00) throw new Error("Attribute not supported"); - return this._native_kerberos.queryContextAttribute(attribute); -} - -// Some useful result codes -Kerberos.AUTH_GSS_CONTINUE = 0; -Kerberos.AUTH_GSS_COMPLETE = 1; - -// Some useful gss flags -Kerberos.GSS_C_DELEG_FLAG = 1; -Kerberos.GSS_C_MUTUAL_FLAG = 2; -Kerberos.GSS_C_REPLAY_FLAG = 4; -Kerberos.GSS_C_SEQUENCE_FLAG = 8; -Kerberos.GSS_C_CONF_FLAG = 16; -Kerberos.GSS_C_INTEG_FLAG = 32; -Kerberos.GSS_C_ANON_FLAG = 64; -Kerberos.GSS_C_PROT_READY_FLAG = 128; -Kerberos.GSS_C_TRANS_FLAG = 256; - -// Export Kerberos class -exports.Kerberos = Kerberos; - -// If we have SSPI (windows) -if(kerberos.SecurityCredentials) { - // Put all SSPI classes in it's own namespace - exports.SSIP = { - SecurityCredentials: require('./win32/wrappers/security_credentials').SecurityCredentials - , SecurityContext: require('./win32/wrappers/security_context').SecurityContext - , SecurityBuffer: require('./win32/wrappers/security_buffer').SecurityBuffer - , SecurityBufferDescriptor: require('./win32/wrappers/security_buffer_descriptor').SecurityBufferDescriptor - } -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc deleted file mode 100644 index 7a5f4eb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.cc +++ /dev/null @@ -1,74 +0,0 @@ -#include "kerberos_context.h" - -Persistent KerberosContext::constructor_template; - -KerberosContext::KerberosContext() : ObjectWrap() { -} - -KerberosContext::~KerberosContext() { -} - -KerberosContext* KerberosContext::New() { - HandleScope scope; - - Local obj = constructor_template->GetFunction()->NewInstance(); - KerberosContext *kerberos_context = ObjectWrap::Unwrap(obj); - - return kerberos_context; -} - -Handle KerberosContext::New(const Arguments &args) { - HandleScope scope; - // Create code object - KerberosContext *kerberos_context = new KerberosContext(); - // Wrap it - kerberos_context->Wrap(args.This()); - // Return the object - return args.This(); -} - -static Persistent response_symbol; - -void KerberosContext::Initialize(Handle target) { - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("KerberosContext")); - - // Property symbols - response_symbol = NODE_PSYMBOL("response"); - - // Getter for the response - constructor_template->InstanceTemplate()->SetAccessor(response_symbol, ResponseGetter); - - // Set up the Symbol for the Class on the Module - target->Set(String::NewSymbol("KerberosContext"), constructor_template->GetFunction()); -} - -// -// Response Setter / Getter -Handle KerberosContext::ResponseGetter(Local property, const AccessorInfo& info) { - HandleScope scope; - gss_client_state *state; - - // Unpack the object - KerberosContext *context = ObjectWrap::Unwrap(info.Holder()); - // Let's grab the response - state = context->state; - // No state no response - if(state == NULL || state->response == NULL) return scope.Close(Null()); - // Return the response - return scope.Close(String::New(state->response)); -} - - - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h deleted file mode 100644 index 1b62cba..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberos_context.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef KERBEROS_CONTEXT_H -#define KERBEROS_CONTEXT_H - -#include -#include -#include - -#include -#include -#include - -extern "C" { - #include "kerberosgss.h" -} - -using namespace v8; -using namespace node; - -class KerberosContext : public ObjectWrap { - -public: - KerberosContext(); - ~KerberosContext(); - - static inline bool HasInstance(Handle val) { - if (!val->IsObject()) return false; - Local obj = val->ToObject(); - return constructor_template->HasInstance(obj); - }; - - // Constructor used for creating new Kerberos objects from C++ - static Persistent constructor_template; - - // Initialize function for the object - static void Initialize(Handle target); - - // Public constructor - static KerberosContext* New(); - - // Handle to the kerberos context - gss_client_state *state; - -private: - static Handle New(const Arguments &args); - - static Handle ResponseGetter(Local property, const AccessorInfo& info); -}; -#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c deleted file mode 100644 index ddf8c4a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.c +++ /dev/null @@ -1,668 +0,0 @@ -/** - * Copyright (c) 2006-2010 Apple Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - -#include "kerberosgss.h" - -#include "base64.h" - -#include -#include -#include -#include - -static void set_gss_error(OM_uint32 err_maj, OM_uint32 err_min); - -/*extern PyObject *GssException_class; -extern PyObject *KrbException_class; - -char* server_principal_details(const char* service, const char* hostname) -{ - char match[1024]; - int match_len = 0; - char* result = NULL; - - int code; - krb5_context kcontext; - krb5_keytab kt = NULL; - krb5_kt_cursor cursor = NULL; - krb5_keytab_entry entry; - char* pname = NULL; - - // Generate the principal prefix we want to match - snprintf(match, 1024, "%s/%s@", service, hostname); - match_len = strlen(match); - - code = krb5_init_context(&kcontext); - if (code) - { - PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", - "Cannot initialize Kerberos5 context", code)); - return NULL; - } - - if ((code = krb5_kt_default(kcontext, &kt))) - { - PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", - "Cannot get default keytab", code)); - goto end; - } - - if ((code = krb5_kt_start_seq_get(kcontext, kt, &cursor))) - { - PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", - "Cannot get sequence cursor from keytab", code)); - goto end; - } - - while ((code = krb5_kt_next_entry(kcontext, kt, &entry, &cursor)) == 0) - { - if ((code = krb5_unparse_name(kcontext, entry.principal, &pname))) - { - PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", - "Cannot parse principal name from keytab", code)); - goto end; - } - - if (strncmp(pname, match, match_len) == 0) - { - result = malloc(strlen(pname) + 1); - strcpy(result, pname); - krb5_free_unparsed_name(kcontext, pname); - krb5_free_keytab_entry_contents(kcontext, &entry); - break; - } - - krb5_free_unparsed_name(kcontext, pname); - krb5_free_keytab_entry_contents(kcontext, &entry); - } - - if (result == NULL) - { - PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))", - "Principal not found in keytab", -1)); - } - -end: - if (cursor) - krb5_kt_end_seq_get(kcontext, kt, &cursor); - if (kt) - krb5_kt_close(kcontext, kt); - krb5_free_context(kcontext); - - return result; -} -*/ -gss_client_response *authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state) { - OM_uint32 maj_stat; - OM_uint32 min_stat; - gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER; - gss_client_response *response = NULL; - int ret = AUTH_GSS_COMPLETE; - - state->server_name = GSS_C_NO_NAME; - state->context = GSS_C_NO_CONTEXT; - state->gss_flags = gss_flags; - state->username = NULL; - state->response = NULL; - - // Import server name first - name_token.length = strlen(service); - name_token.value = (char *)service; - - maj_stat = gss_import_name(&min_stat, &name_token, gss_krb5_nt_service_name, &state->server_name); - - if (GSS_ERROR(maj_stat)) { - response = gss_error(maj_stat, min_stat); - response->return_code = AUTH_GSS_ERROR; - goto end; - } - -end: - if(response == NULL) { - response = calloc(1, sizeof(gss_client_response)); - response->return_code = ret; - } - - return response; -} - -gss_client_response *authenticate_gss_client_clean(gss_client_state *state) { - OM_uint32 maj_stat; - OM_uint32 min_stat; - int ret = AUTH_GSS_COMPLETE; - gss_client_response *response = NULL; - - if(state->context != GSS_C_NO_CONTEXT) - maj_stat = gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER); - - if(state->server_name != GSS_C_NO_NAME) - maj_stat = gss_release_name(&min_stat, &state->server_name); - - if(state->username != NULL) { - free(state->username); - state->username = NULL; - } - - if (state->response != NULL) { - free(state->response); - state->response = NULL; - } - - if(response == NULL) { - response = calloc(1, sizeof(gss_client_response)); - response->return_code = ret; - } - - return response; -} - -gss_client_response *authenticate_gss_client_step(gss_client_state* state, const char* challenge) { - OM_uint32 maj_stat; - OM_uint32 min_stat; - gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; - gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; - int ret = AUTH_GSS_CONTINUE; - gss_client_response *response = NULL; - - // Always clear out the old response - if (state->response != NULL) { - free(state->response); - state->response = NULL; - } - - // If there is a challenge (data from the server) we need to give it to GSS - if (challenge && *challenge) { - int len; - input_token.value = base64_decode(challenge, &len); - input_token.length = len; - } - - // Do GSSAPI step - maj_stat = gss_init_sec_context(&min_stat, - GSS_C_NO_CREDENTIAL, - &state->context, - state->server_name, - GSS_C_NO_OID, - (OM_uint32)state->gss_flags, - 0, - GSS_C_NO_CHANNEL_BINDINGS, - &input_token, - NULL, - &output_token, - NULL, - NULL); - - if ((maj_stat != GSS_S_COMPLETE) && (maj_stat != GSS_S_CONTINUE_NEEDED)) { - response = gss_error(maj_stat, min_stat); - response->return_code = AUTH_GSS_ERROR; - goto end; - } - - ret = (maj_stat == GSS_S_COMPLETE) ? AUTH_GSS_COMPLETE : AUTH_GSS_CONTINUE; - // Grab the client response to send back to the server - if(output_token.length) { - state->response = base64_encode((const unsigned char *)output_token.value, output_token.length); - maj_stat = gss_release_buffer(&min_stat, &output_token); - } - - // Try to get the user name if we have completed all GSS operations - if (ret == AUTH_GSS_COMPLETE) { - gss_name_t gssuser = GSS_C_NO_NAME; - maj_stat = gss_inquire_context(&min_stat, state->context, &gssuser, NULL, NULL, NULL, NULL, NULL, NULL); - - if(GSS_ERROR(maj_stat)) { - response = gss_error(maj_stat, min_stat); - response->return_code = AUTH_GSS_ERROR; - goto end; - } - - gss_buffer_desc name_token; - name_token.length = 0; - maj_stat = gss_display_name(&min_stat, gssuser, &name_token, NULL); - - if(GSS_ERROR(maj_stat)) { - if(name_token.value) - gss_release_buffer(&min_stat, &name_token); - gss_release_name(&min_stat, &gssuser); - - response = gss_error(maj_stat, min_stat); - response->return_code = AUTH_GSS_ERROR; - goto end; - } else { - state->username = (char *)malloc(name_token.length + 1); - strncpy(state->username, (char*) name_token.value, name_token.length); - state->username[name_token.length] = 0; - gss_release_buffer(&min_stat, &name_token); - gss_release_name(&min_stat, &gssuser); - } - } - -end: - if(output_token.value) - gss_release_buffer(&min_stat, &output_token); - if(input_token.value) - free(input_token.value); - - if(response == NULL) { - response = calloc(1, sizeof(gss_client_response)); - response->return_code = ret; - } - - // Return the response - return response; -} - -gss_client_response *authenticate_gss_client_unwrap(gss_client_state *state, const char *challenge) { - OM_uint32 maj_stat; - OM_uint32 min_stat; - gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; - gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; - gss_client_response *response = NULL; - int ret = AUTH_GSS_CONTINUE; - - // Always clear out the old response - if(state->response != NULL) { - free(state->response); - state->response = NULL; - } - - // If there is a challenge (data from the server) we need to give it to GSS - if(challenge && *challenge) { - int len; - input_token.value = base64_decode(challenge, &len); - input_token.length = len; - } - - // Do GSSAPI step - maj_stat = gss_unwrap(&min_stat, - state->context, - &input_token, - &output_token, - NULL, - NULL); - - if(maj_stat != GSS_S_COMPLETE) { - response = gss_error(maj_stat, min_stat); - response->return_code = AUTH_GSS_ERROR; - goto end; - } else { - ret = AUTH_GSS_COMPLETE; - } - - // Grab the client response - if(output_token.length) { - state->response = base64_encode((const unsigned char *)output_token.value, output_token.length); - maj_stat = gss_release_buffer(&min_stat, &output_token); - } -end: - if(output_token.value) - gss_release_buffer(&min_stat, &output_token); - if(input_token.value) - free(input_token.value); - - if(response == NULL) { - response = calloc(1, sizeof(gss_client_response)); - response->return_code = ret; - } - - // Return the response - return response; -} - -gss_client_response *authenticate_gss_client_wrap(gss_client_state* state, const char* challenge, const char* user) { - OM_uint32 maj_stat; - OM_uint32 min_stat; - gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; - gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; - int ret = AUTH_GSS_CONTINUE; - gss_client_response *response = NULL; - char buf[4096], server_conf_flags; - unsigned long buf_size; - - // Always clear out the old response - if(state->response != NULL) { - free(state->response); - state->response = NULL; - } - - if(challenge && *challenge) { - int len; - input_token.value = base64_decode(challenge, &len); - input_token.length = len; - } - - if(user) { - // get bufsize - server_conf_flags = ((char*) input_token.value)[0]; - ((char*) input_token.value)[0] = 0; - buf_size = ntohl(*((long *) input_token.value)); - free(input_token.value); -#ifdef PRINTFS - printf("User: %s, %c%c%c\n", user, - server_conf_flags & GSS_AUTH_P_NONE ? 'N' : '-', - server_conf_flags & GSS_AUTH_P_INTEGRITY ? 'I' : '-', - server_conf_flags & GSS_AUTH_P_PRIVACY ? 'P' : '-'); - printf("Maximum GSS token size is %ld\n", buf_size); -#endif - - // agree to terms (hack!) - buf_size = htonl(buf_size); // not relevant without integrity/privacy - memcpy(buf, &buf_size, 4); - buf[0] = GSS_AUTH_P_NONE; - // server decides if principal can log in as user - strncpy(buf + 4, user, sizeof(buf) - 4); - input_token.value = buf; - input_token.length = 4 + strlen(user); - } - - // Do GSSAPI wrap - maj_stat = gss_wrap(&min_stat, - state->context, - 0, - GSS_C_QOP_DEFAULT, - &input_token, - NULL, - &output_token); - - if (maj_stat != GSS_S_COMPLETE) { - response = gss_error(maj_stat, min_stat); - response->return_code = AUTH_GSS_ERROR; - goto end; - } else - ret = AUTH_GSS_COMPLETE; - // Grab the client response to send back to the server - if (output_token.length) { - state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);; - maj_stat = gss_release_buffer(&min_stat, &output_token); - } -end: - if (output_token.value) - gss_release_buffer(&min_stat, &output_token); - - if(response == NULL) { - response = calloc(1, sizeof(gss_client_response)); - response->return_code = ret; - } - - // Return the response - return response; -} - -int authenticate_gss_server_init(const char *service, gss_server_state *state) -{ - OM_uint32 maj_stat; - OM_uint32 min_stat; - gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER; - int ret = AUTH_GSS_COMPLETE; - - state->context = GSS_C_NO_CONTEXT; - state->server_name = GSS_C_NO_NAME; - state->client_name = GSS_C_NO_NAME; - state->server_creds = GSS_C_NO_CREDENTIAL; - state->client_creds = GSS_C_NO_CREDENTIAL; - state->username = NULL; - state->targetname = NULL; - state->response = NULL; - - // Server name may be empty which means we aren't going to create our own creds - size_t service_len = strlen(service); - if (service_len != 0) - { - // Import server name first - name_token.length = strlen(service); - name_token.value = (char *)service; - - maj_stat = gss_import_name(&min_stat, &name_token, GSS_C_NT_HOSTBASED_SERVICE, &state->server_name); - - if (GSS_ERROR(maj_stat)) - { - set_gss_error(maj_stat, min_stat); - ret = AUTH_GSS_ERROR; - goto end; - } - - // Get credentials - maj_stat = gss_acquire_cred(&min_stat, state->server_name, GSS_C_INDEFINITE, - GSS_C_NO_OID_SET, GSS_C_ACCEPT, &state->server_creds, NULL, NULL); - - if (GSS_ERROR(maj_stat)) - { - set_gss_error(maj_stat, min_stat); - ret = AUTH_GSS_ERROR; - goto end; - } - } - -end: - return ret; -} - -int authenticate_gss_server_clean(gss_server_state *state) -{ - OM_uint32 maj_stat; - OM_uint32 min_stat; - int ret = AUTH_GSS_COMPLETE; - - if (state->context != GSS_C_NO_CONTEXT) - maj_stat = gss_delete_sec_context(&min_stat, &state->context, GSS_C_NO_BUFFER); - if (state->server_name != GSS_C_NO_NAME) - maj_stat = gss_release_name(&min_stat, &state->server_name); - if (state->client_name != GSS_C_NO_NAME) - maj_stat = gss_release_name(&min_stat, &state->client_name); - if (state->server_creds != GSS_C_NO_CREDENTIAL) - maj_stat = gss_release_cred(&min_stat, &state->server_creds); - if (state->client_creds != GSS_C_NO_CREDENTIAL) - maj_stat = gss_release_cred(&min_stat, &state->client_creds); - if (state->username != NULL) - { - free(state->username); - state->username = NULL; - } - if (state->targetname != NULL) - { - free(state->targetname); - state->targetname = NULL; - } - if (state->response != NULL) - { - free(state->response); - state->response = NULL; - } - - return ret; -} - -/*int authenticate_gss_server_step(gss_server_state *state, const char *challenge) -{ - OM_uint32 maj_stat; - OM_uint32 min_stat; - gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; - gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; - int ret = AUTH_GSS_CONTINUE; - - // Always clear out the old response - if (state->response != NULL) - { - free(state->response); - state->response = NULL; - } - - // If there is a challenge (data from the server) we need to give it to GSS - if (challenge && *challenge) - { - int len; - input_token.value = base64_decode(challenge, &len); - input_token.length = len; - } - else - { - PyErr_SetString(KrbException_class, "No challenge parameter in request from client"); - ret = AUTH_GSS_ERROR; - goto end; - } - - maj_stat = gss_accept_sec_context(&min_stat, - &state->context, - state->server_creds, - &input_token, - GSS_C_NO_CHANNEL_BINDINGS, - &state->client_name, - NULL, - &output_token, - NULL, - NULL, - &state->client_creds); - - if (GSS_ERROR(maj_stat)) - { - set_gss_error(maj_stat, min_stat); - ret = AUTH_GSS_ERROR; - goto end; - } - - // Grab the server response to send back to the client - if (output_token.length) - { - state->response = base64_encode((const unsigned char *)output_token.value, output_token.length);; - maj_stat = gss_release_buffer(&min_stat, &output_token); - } - - // Get the user name - maj_stat = gss_display_name(&min_stat, state->client_name, &output_token, NULL); - if (GSS_ERROR(maj_stat)) - { - set_gss_error(maj_stat, min_stat); - ret = AUTH_GSS_ERROR; - goto end; - } - state->username = (char *)malloc(output_token.length + 1); - strncpy(state->username, (char*) output_token.value, output_token.length); - state->username[output_token.length] = 0; - - // Get the target name if no server creds were supplied - if (state->server_creds == GSS_C_NO_CREDENTIAL) - { - gss_name_t target_name = GSS_C_NO_NAME; - maj_stat = gss_inquire_context(&min_stat, state->context, NULL, &target_name, NULL, NULL, NULL, NULL, NULL); - if (GSS_ERROR(maj_stat)) - { - set_gss_error(maj_stat, min_stat); - ret = AUTH_GSS_ERROR; - goto end; - } - maj_stat = gss_display_name(&min_stat, target_name, &output_token, NULL); - if (GSS_ERROR(maj_stat)) - { - set_gss_error(maj_stat, min_stat); - ret = AUTH_GSS_ERROR; - goto end; - } - state->targetname = (char *)malloc(output_token.length + 1); - strncpy(state->targetname, (char*) output_token.value, output_token.length); - state->targetname[output_token.length] = 0; - } - - ret = AUTH_GSS_COMPLETE; - -end: - if (output_token.length) - gss_release_buffer(&min_stat, &output_token); - if (input_token.value) - free(input_token.value); - return ret; -} -*/ - -static void set_gss_error(OM_uint32 err_maj, OM_uint32 err_min) { - OM_uint32 maj_stat, min_stat; - OM_uint32 msg_ctx = 0; - gss_buffer_desc status_string; - char buf_maj[512]; - char buf_min[512]; - - do { - maj_stat = gss_display_status (&min_stat, - err_maj, - GSS_C_GSS_CODE, - GSS_C_NO_OID, - &msg_ctx, - &status_string); - if(GSS_ERROR(maj_stat)) - break; - - strncpy(buf_maj, (char*) status_string.value, sizeof(buf_maj)); - gss_release_buffer(&min_stat, &status_string); - - maj_stat = gss_display_status (&min_stat, - err_min, - GSS_C_MECH_CODE, - GSS_C_NULL_OID, - &msg_ctx, - &status_string); - if (!GSS_ERROR(maj_stat)) { - - strncpy(buf_min, (char*) status_string.value , sizeof(buf_min)); - gss_release_buffer(&min_stat, &status_string); - } - } while (!GSS_ERROR(maj_stat) && msg_ctx != 0); -} - -gss_client_response *gss_error(OM_uint32 err_maj, OM_uint32 err_min) { - OM_uint32 maj_stat, min_stat; - OM_uint32 msg_ctx = 0; - gss_buffer_desc status_string; - char *buf_maj = calloc(512, sizeof(char)); - char *buf_min = calloc(512, sizeof(char)); - char *message = NULL; - gss_client_response *response = calloc(1, sizeof(gss_client_response)); - - do { - maj_stat = gss_display_status (&min_stat, - err_maj, - GSS_C_GSS_CODE, - GSS_C_NO_OID, - &msg_ctx, - &status_string); - if(GSS_ERROR(maj_stat)) - break; - - strncpy(buf_maj, (char*) status_string.value, 512); - gss_release_buffer(&min_stat, &status_string); - - maj_stat = gss_display_status (&min_stat, - err_min, - GSS_C_MECH_CODE, - GSS_C_NULL_OID, - &msg_ctx, - &status_string); - if(!GSS_ERROR(maj_stat)) { - strncpy(buf_min, (char*) status_string.value , 512); - gss_release_buffer(&min_stat, &status_string); - } - } while (!GSS_ERROR(maj_stat) && msg_ctx != 0); - - // Join the strings - message = calloc(1024, sizeof(1)); - // Join the two messages - sprintf(message, "%s, %s", buf_maj, buf_min); - // Free data - free(buf_min); - free(buf_maj); - // Set the message - response->message = message; - // Return the message - return response; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h deleted file mode 100644 index 58ac0b7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/kerberosgss.h +++ /dev/null @@ -1,70 +0,0 @@ -/** - * Copyright (c) 2006-2009 Apple Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ -#ifndef KERBEROS_GSS_H -#define KERBEROS_GSS_H - -#include -#include -#include - -#define krb5_get_err_text(context,code) error_message(code) - -#define AUTH_GSS_ERROR -1 -#define AUTH_GSS_COMPLETE 1 -#define AUTH_GSS_CONTINUE 0 - -#define GSS_AUTH_P_NONE 1 -#define GSS_AUTH_P_INTEGRITY 2 -#define GSS_AUTH_P_PRIVACY 4 - -typedef struct { - int return_code; - char *message; -} gss_client_response; - -typedef struct { - gss_ctx_id_t context; - gss_name_t server_name; - long int gss_flags; - char* username; - char* response; -} gss_client_state; - -typedef struct { - gss_ctx_id_t context; - gss_name_t server_name; - gss_name_t client_name; - gss_cred_id_t server_creds; - gss_cred_id_t client_creds; - char* username; - char* targetname; - char* response; -} gss_server_state; - -// char* server_principal_details(const char* service, const char* hostname); - -gss_client_response *authenticate_gss_client_init(const char* service, long int gss_flags, gss_client_state* state); -gss_client_response *authenticate_gss_client_clean(gss_client_state *state); -gss_client_response *authenticate_gss_client_step(gss_client_state *state, const char *challenge); -gss_client_response *authenticate_gss_client_unwrap(gss_client_state* state, const char* challenge); -gss_client_response *authenticate_gss_client_wrap(gss_client_state* state, const char* challenge, const char* user); - -int authenticate_gss_server_init(const char* service, gss_server_state* state); -int authenticate_gss_server_clean(gss_server_state *state); -// int authenticate_gss_server_step(gss_server_state *state, const char *challenge); - -gss_client_response *gss_error(OM_uint32 err_maj, OM_uint32 err_min); -#endif diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js deleted file mode 100644 index d9120fb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/sspi.js +++ /dev/null @@ -1,15 +0,0 @@ -// Load the native SSPI classes -var kerberos = require('../build/Release/kerberos') - , Kerberos = kerberos.Kerberos - , SecurityBuffer = require('./win32/wrappers/security_buffer').SecurityBuffer - , SecurityBufferDescriptor = require('./win32/wrappers/security_buffer_descriptor').SecurityBufferDescriptor - , SecurityCredentials = require('./win32/wrappers/security_credentials').SecurityCredentials - , SecurityContext = require('./win32/wrappers/security_context').SecurityContext; -var SSPI = function() { -} - -exports.SSPI = SSPI; -exports.SecurityBuffer = SecurityBuffer; -exports.SecurityBufferDescriptor = SecurityBufferDescriptor; -exports.SecurityCredentials = SecurityCredentials; -exports.SecurityContext = SecurityContext; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c deleted file mode 100644 index 502a021..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.c +++ /dev/null @@ -1,121 +0,0 @@ -/** - * Copyright (c) 2006-2008 Apple Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - -#include "base64.h" - -#include -#include - -// base64 tables -static char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -static signed char index_64[128] = -{ - -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, - -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, - -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63, - 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1,-1,-1,-1, - -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14, - 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1, - -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40, - 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1 -}; -#define CHAR64(c) (((c) < 0 || (c) > 127) ? -1 : index_64[(c)]) - -// base64_encode : base64 encode -// -// value : data to encode -// vlen : length of data -// (result) : new char[] - c-str of result -char *base64_encode(const unsigned char *value, int vlen) -{ - char *result = (char *)malloc((vlen * 4) / 3 + 5); - char *out = result; - unsigned char oval; - - while (vlen >= 3) - { - *out++ = basis_64[value[0] >> 2]; - *out++ = basis_64[((value[0] << 4) & 0x30) | (value[1] >> 4)]; - *out++ = basis_64[((value[1] << 2) & 0x3C) | (value[2] >> 6)]; - *out++ = basis_64[value[2] & 0x3F]; - value += 3; - vlen -= 3; - } - if (vlen > 0) - { - *out++ = basis_64[value[0] >> 2]; - oval = (value[0] << 4) & 0x30; - if (vlen > 1) oval |= value[1] >> 4; - *out++ = basis_64[oval]; - *out++ = (vlen < 2) ? '=' : basis_64[(value[1] << 2) & 0x3C]; - *out++ = '='; - } - *out = '\0'; - - return result; -} - -// base64_decode : base64 decode -// -// value : c-str to decode -// rlen : length of decoded result -// (result) : new unsigned char[] - decoded result -unsigned char *base64_decode(const char *value, int *rlen) -{ - int c1, c2, c3, c4; - int vlen = (int)strlen(value); - unsigned char *result =(unsigned char *)malloc((vlen * 3) / 4 + 1); - unsigned char *out = result; - *rlen = 0; - - while (1) - { - if (value[0]==0) - return result; - c1 = value[0]; - if (CHAR64(c1) == -1) - goto base64_decode_error;; - c2 = value[1]; - if (CHAR64(c2) == -1) - goto base64_decode_error;; - c3 = value[2]; - if ((c3 != '=') && (CHAR64(c3) == -1)) - goto base64_decode_error;; - c4 = value[3]; - if ((c4 != '=') && (CHAR64(c4) == -1)) - goto base64_decode_error;; - - value += 4; - *out++ = (CHAR64(c1) << 2) | (CHAR64(c2) >> 4); - *rlen += 1; - if (c3 != '=') - { - *out++ = ((CHAR64(c2) << 4) & 0xf0) | (CHAR64(c3) >> 2); - *rlen += 1; - if (c4 != '=') - { - *out++ = ((CHAR64(c3) << 6) & 0xc0) | CHAR64(c4); - *rlen += 1; - } - } - } - -base64_decode_error: - *result = 0; - *rlen = 0; - return result; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h deleted file mode 100644 index f0e1f06..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/base64.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2006-2008 Apple Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - -char *base64_encode(const unsigned char *value, int vlen); -unsigned char *base64_decode(const char *value, int *rlen); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc deleted file mode 100644 index 7fd521b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.cc +++ /dev/null @@ -1,53 +0,0 @@ -#include "kerberos.h" -#include -#include -#include "base64.h" -#include "wrappers/security_buffer.h" -#include "wrappers/security_buffer_descriptor.h" -#include "wrappers/security_context.h" -#include "wrappers/security_credentials.h" - -Persistent Kerberos::constructor_template; - -// VException object (causes throw in calling code) -static Handle VException(const char *msg) { - HandleScope scope; - return ThrowException(Exception::Error(String::New(msg))); -} - -Kerberos::Kerberos() : ObjectWrap() { -} - -void Kerberos::Initialize(v8::Handle target) { - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(Kerberos::New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("Kerberos")); - // Set the symbol - target->ForceSet(String::NewSymbol("Kerberos"), constructor_template->GetFunction()); -} - -Handle Kerberos::New(const Arguments &args) { - // Load the security.dll library - load_library(); - // Create a Kerberos instance - Kerberos *kerberos = new Kerberos(); - // Return the kerberos object - kerberos->Wrap(args.This()); - return args.This(); -} - -// Exporting function -extern "C" void init(Handle target) { - HandleScope scope; - Kerberos::Initialize(target); - SecurityContext::Initialize(target); - SecurityBuffer::Initialize(target); - SecurityBufferDescriptor::Initialize(target); - SecurityCredentials::Initialize(target); -} - -NODE_MODULE(kerberos, init); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h deleted file mode 100644 index 8443e78..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef KERBEROS_H -#define KERBEROS_H - -#include -#include -#include - -extern "C" { - #include "kerberos_sspi.h" - #include "base64.h" -} - -using namespace v8; -using namespace node; - -class Kerberos : public ObjectWrap { - -public: - Kerberos(); - ~Kerberos() {}; - - // Constructor used for creating new Kerberos objects from C++ - static Persistent constructor_template; - - // Initialize function for the object - static void Initialize(Handle target); - - // Method available - static Handle AcquireAlternateCredentials(const Arguments &args); - static Handle PrepareOutboundPackage(const Arguments &args); - static Handle DecryptMessage(const Arguments &args); - static Handle EncryptMessage(const Arguments &args); - static Handle QueryContextAttributes(const Arguments &args); - -private: - static Handle New(const Arguments &args); - - // Pointer to context object - SEC_WINNT_AUTH_IDENTITY m_Identity; - // credentials - CredHandle m_Credentials; - // Expiry time for ticket - TimeStamp Expiration; - // package info - SecPkgInfo m_PkgInfo; - // context - CtxtHandle m_Context; - // Do we have a context - bool m_HaveContext; - // Attributes - DWORD CtxtAttr; - - // Handles the uv calls - static void Process(uv_work_t* work_req); - // Called after work is done - static void After(uv_work_t* work_req); -}; - -#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c deleted file mode 100644 index d75c9ab..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.c +++ /dev/null @@ -1,244 +0,0 @@ -#include "kerberos_sspi.h" -#include -#include - -static HINSTANCE _sspi_security_dll = NULL; -static HINSTANCE _sspi_secur32_dll = NULL; - -/** - * Encrypt A Message - */ -SECURITY_STATUS SEC_ENTRY _sspi_EncryptMessage(PCtxtHandle phContext, unsigned long fQOP, PSecBufferDesc pMessage, unsigned long MessageSeqNo) { - // Create function pointer instance - encryptMessage_fn pfn_encryptMessage = NULL; - - // Return error if library not loaded - if(_sspi_security_dll == NULL) return -1; - - // Map function to library method - pfn_encryptMessage = (encryptMessage_fn)GetProcAddress(_sspi_security_dll, "EncryptMessage"); - // Check if the we managed to map function pointer - if(!pfn_encryptMessage) { - printf("GetProcAddress failed.\n"); - return -2; - } - - // Call the function - return (*pfn_encryptMessage)(phContext, fQOP, pMessage, MessageSeqNo); -} - -/** - * Acquire Credentials - */ -SECURITY_STATUS SEC_ENTRY _sspi_AcquireCredentialsHandle( - LPSTR pszPrincipal, LPSTR pszPackage, unsigned long fCredentialUse, - void * pvLogonId, void * pAuthData, SEC_GET_KEY_FN pGetKeyFn, void * pvGetKeyArgument, - PCredHandle phCredential, PTimeStamp ptsExpiry -) { - SECURITY_STATUS status; - // Create function pointer instance - acquireCredentialsHandle_fn pfn_acquireCredentialsHandle = NULL; - - // Return error if library not loaded - if(_sspi_security_dll == NULL) return -1; - - // Map function - #ifdef _UNICODE - pfn_acquireCredentialsHandle = (acquireCredentialsHandle_fn)GetProcAddress(_sspi_security_dll, "AcquireCredentialsHandleW"); - #else - pfn_acquireCredentialsHandle = (acquireCredentialsHandle_fn)GetProcAddress(_sspi_security_dll, "AcquireCredentialsHandleA"); - #endif - - // Check if the we managed to map function pointer - if(!pfn_acquireCredentialsHandle) { - printf("GetProcAddress failed.\n"); - return -2; - } - - // Status - status = (*pfn_acquireCredentialsHandle)(pszPrincipal, pszPackage, fCredentialUse, - pvLogonId, pAuthData, pGetKeyFn, pvGetKeyArgument, phCredential, ptsExpiry - ); - - // Call the function - return status; -} - -/** - * Delete Security Context - */ -SECURITY_STATUS SEC_ENTRY _sspi_DeleteSecurityContext(PCtxtHandle phContext) { - // Create function pointer instance - deleteSecurityContext_fn pfn_deleteSecurityContext = NULL; - - // Return error if library not loaded - if(_sspi_security_dll == NULL) return -1; - // Map function - pfn_deleteSecurityContext = (deleteSecurityContext_fn)GetProcAddress(_sspi_security_dll, "DeleteSecurityContext"); - - // Check if the we managed to map function pointer - if(!pfn_deleteSecurityContext) { - printf("GetProcAddress failed.\n"); - return -2; - } - - // Call the function - return (*pfn_deleteSecurityContext)(phContext); -} - -/** - * Decrypt Message - */ -SECURITY_STATUS SEC_ENTRY _sspi_DecryptMessage(PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned long MessageSeqNo, unsigned long pfQOP) { - // Create function pointer instance - decryptMessage_fn pfn_decryptMessage = NULL; - - // Return error if library not loaded - if(_sspi_security_dll == NULL) return -1; - // Map function - pfn_decryptMessage = (decryptMessage_fn)GetProcAddress(_sspi_security_dll, "DecryptMessage"); - - // Check if the we managed to map function pointer - if(!pfn_decryptMessage) { - printf("GetProcAddress failed.\n"); - return -2; - } - - // Call the function - return (*pfn_decryptMessage)(phContext, pMessage, MessageSeqNo, pfQOP); -} - -/** - * Initialize Security Context - */ -SECURITY_STATUS SEC_ENTRY _sspi_initializeSecurityContext( - PCredHandle phCredential, PCtxtHandle phContext, - LPSTR pszTargetName, unsigned long fContextReq, - unsigned long Reserved1, unsigned long TargetDataRep, - PSecBufferDesc pInput, unsigned long Reserved2, - PCtxtHandle phNewContext, PSecBufferDesc pOutput, - unsigned long * pfContextAttr, PTimeStamp ptsExpiry -) { - SECURITY_STATUS status; - // Create function pointer instance - initializeSecurityContext_fn pfn_initializeSecurityContext = NULL; - - // Return error if library not loaded - if(_sspi_security_dll == NULL) return -1; - - // Map function - #ifdef _UNICODE - pfn_initializeSecurityContext = (initializeSecurityContext_fn)GetProcAddress(_sspi_security_dll, "InitializeSecurityContextW"); - #else - pfn_initializeSecurityContext = (initializeSecurityContext_fn)GetProcAddress(_sspi_security_dll, "InitializeSecurityContextA"); - #endif - - // Check if the we managed to map function pointer - if(!pfn_initializeSecurityContext) { - printf("GetProcAddress failed.\n"); - return -2; - } - - // Execute intialize context - status = (*pfn_initializeSecurityContext)( - phCredential, phContext, pszTargetName, fContextReq, - Reserved1, TargetDataRep, pInput, Reserved2, - phNewContext, pOutput, pfContextAttr, ptsExpiry - ); - - // Call the function - return status; -} -/** - * Query Context Attributes - */ -SECURITY_STATUS SEC_ENTRY _sspi_QueryContextAttributes( - PCtxtHandle phContext, unsigned long ulAttribute, void * pBuffer -) { - // Create function pointer instance - queryContextAttributes_fn pfn_queryContextAttributes = NULL; - - // Return error if library not loaded - if(_sspi_security_dll == NULL) return -1; - - #ifdef _UNICODE - pfn_queryContextAttributes = (queryContextAttributes_fn)GetProcAddress(_sspi_security_dll, "QueryContextAttributesW"); - #else - pfn_queryContextAttributes = (queryContextAttributes_fn)GetProcAddress(_sspi_security_dll, "QueryContextAttributesA"); - #endif - - // Check if the we managed to map function pointer - if(!pfn_queryContextAttributes) { - printf("GetProcAddress failed.\n"); - return -2; - } - - // Call the function - return (*pfn_queryContextAttributes)( - phContext, ulAttribute, pBuffer - ); -} - -/** - * InitSecurityInterface - */ -PSecurityFunctionTable _ssip_InitSecurityInterface() { - INIT_SECURITY_INTERFACE InitSecurityInterface; - PSecurityFunctionTable pSecurityInterface = NULL; - - // Return error if library not loaded - if(_sspi_security_dll == NULL) return NULL; - - #ifdef _UNICODE - // Get the address of the InitSecurityInterface function. - InitSecurityInterface = (INIT_SECURITY_INTERFACE) GetProcAddress ( - _sspi_secur32_dll, - TEXT("InitSecurityInterfaceW")); - #else - // Get the address of the InitSecurityInterface function. - InitSecurityInterface = (INIT_SECURITY_INTERFACE) GetProcAddress ( - _sspi_secur32_dll, - TEXT("InitSecurityInterfaceA")); - #endif - - if(!InitSecurityInterface) { - printf (TEXT("Failed in getting the function address, Error: %x"), GetLastError ()); - return NULL; - } - - // Use InitSecurityInterface to get the function table. - pSecurityInterface = (*InitSecurityInterface)(); - - if(!pSecurityInterface) { - printf (TEXT("Failed in getting the function table, Error: %x"), GetLastError ()); - return NULL; - } - - return pSecurityInterface; -} - -/** - * Load security.dll dynamically - */ -int load_library() { - DWORD err; - // Load the library - _sspi_security_dll = LoadLibrary("security.dll"); - - // Check if the library loaded - if(_sspi_security_dll == NULL) { - err = GetLastError(); - return err; - } - - // Load the library - _sspi_secur32_dll = LoadLibrary("secur32.dll"); - - // Check if the library loaded - if(_sspi_secur32_dll == NULL) { - err = GetLastError(); - return err; - } - - return 0; -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h deleted file mode 100644 index a3008dc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/kerberos_sspi.h +++ /dev/null @@ -1,106 +0,0 @@ -#ifndef SSPI_C_H -#define SSPI_C_H - -#define SECURITY_WIN32 1 - -#include -#include - -/** - * Encrypt A Message - */ -SECURITY_STATUS SEC_ENTRY _sspi_EncryptMessage(PCtxtHandle phContext, unsigned long fQOP, PSecBufferDesc pMessage, unsigned long MessageSeqNo); - -typedef DWORD (WINAPI *encryptMessage_fn)(PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo); - -/** - * Acquire Credentials - */ -SECURITY_STATUS SEC_ENTRY _sspi_AcquireCredentialsHandle( - LPSTR pszPrincipal, // Name of principal - LPSTR pszPackage, // Name of package - unsigned long fCredentialUse, // Flags indicating use - void * pvLogonId, // Pointer to logon ID - void * pAuthData, // Package specific data - SEC_GET_KEY_FN pGetKeyFn, // Pointer to GetKey() func - void * pvGetKeyArgument, // Value to pass to GetKey() - PCredHandle phCredential, // (out) Cred Handle - PTimeStamp ptsExpiry // (out) Lifetime (optional) -); - -typedef DWORD (WINAPI *acquireCredentialsHandle_fn)( - LPSTR pszPrincipal, LPSTR pszPackage, unsigned long fCredentialUse, - void * pvLogonId, void * pAuthData, SEC_GET_KEY_FN pGetKeyFn, void * pvGetKeyArgument, - PCredHandle phCredential, PTimeStamp ptsExpiry - ); - -/** - * Delete Security Context - */ -SECURITY_STATUS SEC_ENTRY _sspi_DeleteSecurityContext( - PCtxtHandle phContext // Context to delete -); - -typedef DWORD (WINAPI *deleteSecurityContext_fn)(PCtxtHandle phContext); - -/** - * Decrypt Message - */ -SECURITY_STATUS SEC_ENTRY _sspi_DecryptMessage( - PCtxtHandle phContext, - PSecBufferDesc pMessage, - unsigned long MessageSeqNo, - unsigned long pfQOP -); - -typedef DWORD (WINAPI *decryptMessage_fn)( - PCtxtHandle phContext, PSecBufferDesc pMessage, unsigned long MessageSeqNo, unsigned long pfQOP); - -/** - * Initialize Security Context - */ -SECURITY_STATUS SEC_ENTRY _sspi_initializeSecurityContext( - PCredHandle phCredential, // Cred to base context - PCtxtHandle phContext, // Existing context (OPT) - LPSTR pszTargetName, // Name of target - unsigned long fContextReq, // Context Requirements - unsigned long Reserved1, // Reserved, MBZ - unsigned long TargetDataRep, // Data rep of target - PSecBufferDesc pInput, // Input Buffers - unsigned long Reserved2, // Reserved, MBZ - PCtxtHandle phNewContext, // (out) New Context handle - PSecBufferDesc pOutput, // (inout) Output Buffers - unsigned long * pfContextAttr, // (out) Context attrs - PTimeStamp ptsExpiry // (out) Life span (OPT) -); - -typedef DWORD (WINAPI *initializeSecurityContext_fn)( - PCredHandle phCredential, PCtxtHandle phContext, LPSTR pszTargetName, unsigned long fContextReq, - unsigned long Reserved1, unsigned long TargetDataRep, PSecBufferDesc pInput, unsigned long Reserved2, - PCtxtHandle phNewContext, PSecBufferDesc pOutput, unsigned long * pfContextAttr, PTimeStamp ptsExpiry); - -/** - * Query Context Attributes - */ -SECURITY_STATUS SEC_ENTRY _sspi_QueryContextAttributes( - PCtxtHandle phContext, // Context to query - unsigned long ulAttribute, // Attribute to query - void * pBuffer // Buffer for attributes -); - -typedef DWORD (WINAPI *queryContextAttributes_fn)( - PCtxtHandle phContext, unsigned long ulAttribute, void * pBuffer); - -/** - * InitSecurityInterface - */ -PSecurityFunctionTable _ssip_InitSecurityInterface(); - -typedef DWORD (WINAPI *initSecurityInterface_fn) (); - -/** - * Load security.dll dynamically - */ -int load_library(); - -#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc deleted file mode 100644 index e7a472f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include "worker.h" - -Worker::Worker() { -} - -Worker::~Worker() { -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h deleted file mode 100644 index f73a4a7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/worker.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef WORKER_H_ -#define WORKER_H_ - -#include -#include -#include - -using namespace node; -using namespace v8; - -class Worker { - public: - Worker(); - virtual ~Worker(); - - // libuv's request struct. - uv_work_t request; - // Callback - v8::Persistent callback; - // Parameters - void *parameters; - // Results - void *return_value; - // Did we raise an error - bool error; - // The error message - char *error_message; - // Error code if not message - int error_code; - // Any return code - int return_code; - // Method we are going to fire - void (*execute)(Worker *worker); - Handle (*mapper)(Worker *worker); -}; - -#endif // WORKER_H_ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc deleted file mode 100644 index e583336..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.cc +++ /dev/null @@ -1,110 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "security_buffer.h" - -using namespace node; - -static Handle VException(const char *msg) { - HandleScope scope; - return ThrowException(Exception::Error(String::New(msg))); -}; - -Persistent SecurityBuffer::constructor_template; - -SecurityBuffer::SecurityBuffer(uint32_t security_type, size_t size) : ObjectWrap() { - this->size = size; - this->data = calloc(size, sizeof(char)); - this->security_type = security_type; - // Set up the data in the sec_buffer - this->sec_buffer.BufferType = security_type; - this->sec_buffer.cbBuffer = (unsigned long)size; - this->sec_buffer.pvBuffer = this->data; -} - -SecurityBuffer::SecurityBuffer(uint32_t security_type, size_t size, void *data) : ObjectWrap() { - this->size = size; - this->data = data; - this->security_type = security_type; - // Set up the data in the sec_buffer - this->sec_buffer.BufferType = security_type; - this->sec_buffer.cbBuffer = (unsigned long)size; - this->sec_buffer.pvBuffer = this->data; -} - -SecurityBuffer::~SecurityBuffer() { - free(this->data); -} - -Handle SecurityBuffer::New(const Arguments &args) { - HandleScope scope; - SecurityBuffer *security_obj; - - if(args.Length() != 2) - return VException("Two parameters needed integer buffer type and [32 bit integer/Buffer] required"); - - if(!args[0]->IsInt32()) - return VException("Two parameters needed integer buffer type and [32 bit integer/Buffer] required"); - - if(!args[1]->IsInt32() && !Buffer::HasInstance(args[1])) - return VException("Two parameters needed integer buffer type and [32 bit integer/Buffer] required"); - - // Unpack buffer type - uint32_t buffer_type = args[0]->ToUint32()->Value(); - - // If we have an integer - if(args[1]->IsInt32()) { - security_obj = new SecurityBuffer(buffer_type, args[1]->ToUint32()->Value()); - } else { - // Get the length of the Buffer - size_t length = Buffer::Length(args[1]->ToObject()); - // Allocate space for the internal void data pointer - void *data = calloc(length, sizeof(char)); - // Write the data to out of V8 heap space - memcpy(data, Buffer::Data(args[1]->ToObject()), length); - // Create new SecurityBuffer - security_obj = new SecurityBuffer(buffer_type, length, data); - } - - // Wrap it - security_obj->Wrap(args.This()); - // Return the object - return args.This(); -} - -Handle SecurityBuffer::ToBuffer(const Arguments &args) { - HandleScope scope; - - // Unpack the Security Buffer object - SecurityBuffer *security_obj = ObjectWrap::Unwrap(args.This()); - // Create a Buffer - Buffer *buffer = Buffer::New((char *)security_obj->data, (size_t)security_obj->size); - - // Return the buffer - return scope.Close(buffer->handle_); -} - -void SecurityBuffer::Initialize(Handle target) { - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("SecurityBuffer")); - - // Set up method for the Kerberos instance - NODE_SET_PROTOTYPE_METHOD(constructor_template, "toBuffer", ToBuffer); - - // Set up class - target->Set(String::NewSymbol("SecurityBuffer"), constructor_template->GetFunction()); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h deleted file mode 100644 index d6a5675..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef SECURITY_BUFFER_H -#define SECURITY_BUFFER_H - -#include -#include -#include - -#define SECURITY_WIN32 1 - -#include -#include - -using namespace v8; -using namespace node; - -class SecurityBuffer : public ObjectWrap { - public: - SecurityBuffer(uint32_t security_type, size_t size); - SecurityBuffer(uint32_t security_type, size_t size, void *data); - ~SecurityBuffer(); - - // Internal values - void *data; - size_t size; - uint32_t security_type; - SecBuffer sec_buffer; - - // Has instance check - static inline bool HasInstance(Handle val) { - if (!val->IsObject()) return false; - Local obj = val->ToObject(); - return constructor_template->HasInstance(obj); - }; - - // Functions available from V8 - static void Initialize(Handle target); - static Handle ToBuffer(const Arguments &args); - - // Constructor used for creating new Long objects from C++ - static Persistent constructor_template; - - private: - static Handle New(const Arguments &args); -}; - -#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js deleted file mode 100644 index 4996163..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer.js +++ /dev/null @@ -1,12 +0,0 @@ -var SecurityBufferNative = require('../../../build/Release/kerberos').SecurityBuffer; - -// Add some attributes -SecurityBufferNative.VERSION = 0; -SecurityBufferNative.EMPTY = 0; -SecurityBufferNative.DATA = 1; -SecurityBufferNative.TOKEN = 2; -SecurityBufferNative.PADDING = 9; -SecurityBufferNative.STREAM = 10; - -// Export the modified class -exports.SecurityBuffer = SecurityBufferNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc deleted file mode 100644 index 3bda0b7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.cc +++ /dev/null @@ -1,177 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define SECURITY_WIN32 1 - -#include "security_buffer_descriptor.h" -#include "security_buffer.h" - -static Handle VException(const char *msg) { - HandleScope scope; - return ThrowException(Exception::Error(String::New(msg))); -}; - -Persistent SecurityBufferDescriptor::constructor_template; - -SecurityBufferDescriptor::SecurityBufferDescriptor() : ObjectWrap() { -} - -SecurityBufferDescriptor::SecurityBufferDescriptor(Persistent arrayObject) : ObjectWrap() { - SecurityBuffer *security_obj = NULL; - // Safe reference to array - this->arrayObject = arrayObject; - - // Unpack the array and ensure we have a valid descriptor - this->secBufferDesc.cBuffers = arrayObject->Length(); - this->secBufferDesc.ulVersion = SECBUFFER_VERSION; - - if(arrayObject->Length() == 1) { - // Unwrap the buffer - security_obj = ObjectWrap::Unwrap(arrayObject->Get(0)->ToObject()); - // Assign the buffer - this->secBufferDesc.pBuffers = &security_obj->sec_buffer; - } else { - this->secBufferDesc.pBuffers = new SecBuffer[arrayObject->Length()]; - this->secBufferDesc.cBuffers = arrayObject->Length(); - - // Assign the buffers - for(uint32_t i = 0; i < arrayObject->Length(); i++) { - security_obj = ObjectWrap::Unwrap(arrayObject->Get(i)->ToObject()); - this->secBufferDesc.pBuffers[i].BufferType = security_obj->sec_buffer.BufferType; - this->secBufferDesc.pBuffers[i].pvBuffer = security_obj->sec_buffer.pvBuffer; - this->secBufferDesc.pBuffers[i].cbBuffer = security_obj->sec_buffer.cbBuffer; - } - } -} - -SecurityBufferDescriptor::~SecurityBufferDescriptor() { -} - -size_t SecurityBufferDescriptor::bufferSize() { - SecurityBuffer *security_obj = NULL; - - if(this->secBufferDesc.cBuffers == 1) { - security_obj = ObjectWrap::Unwrap(arrayObject->Get(0)->ToObject()); - return security_obj->size; - } else { - int bytesToAllocate = 0; - - for(unsigned int i = 0; i < this->secBufferDesc.cBuffers; i++) { - bytesToAllocate += this->secBufferDesc.pBuffers[i].cbBuffer; - } - - // Return total size - return bytesToAllocate; - } -} - -char *SecurityBufferDescriptor::toBuffer() { - SecurityBuffer *security_obj = NULL; - char *data = NULL; - - if(this->secBufferDesc.cBuffers == 1) { - security_obj = ObjectWrap::Unwrap(arrayObject->Get(0)->ToObject()); - data = (char *)malloc(security_obj->size * sizeof(char)); - memcpy(data, security_obj->data, security_obj->size); - } else { - size_t bytesToAllocate = this->bufferSize(); - char *data = (char *)calloc(bytesToAllocate, sizeof(char)); - int offset = 0; - - for(unsigned int i = 0; i < this->secBufferDesc.cBuffers; i++) { - memcpy((data + offset), this->secBufferDesc.pBuffers[i].pvBuffer, this->secBufferDesc.pBuffers[i].cbBuffer); - offset +=this->secBufferDesc.pBuffers[i].cbBuffer; - } - - // Return the data - return data; - } - - return data; -} - -Handle SecurityBufferDescriptor::New(const Arguments &args) { - HandleScope scope; - SecurityBufferDescriptor *security_obj; - Persistent arrayObject; - - if(args.Length() != 1) - return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]"); - - if(!args[0]->IsInt32() && !args[0]->IsArray()) - return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]"); - - if(args[0]->IsArray()) { - Handle array = Handle::Cast(args[0]); - // Iterate over all items and ensure we the right type - for(uint32_t i = 0; i < array->Length(); i++) { - if(!SecurityBuffer::HasInstance(array->Get(i))) { - return VException("There must be 1 argument passed in where the first argument is a [int32 or an Array of SecurityBuffers]"); - } - } - } - - // We have a single integer - if(args[0]->IsInt32()) { - // Create new SecurityBuffer instance - Local argv[] = {Int32::New(0x02), args[0]}; - Handle security_buffer = SecurityBuffer::constructor_template->GetFunction()->NewInstance(2, argv); - // Create a new array - Local array = Array::New(1); - // Set the first value - array->Set(0, security_buffer); - // Create persistent handle - arrayObject = Persistent::New(array); - // Create descriptor - security_obj = new SecurityBufferDescriptor(arrayObject); - } else { - arrayObject = Persistent::New(Handle::Cast(args[0])); - security_obj = new SecurityBufferDescriptor(arrayObject); - } - - // Wrap it - security_obj->Wrap(args.This()); - // Return the object - return args.This(); -} - -Handle SecurityBufferDescriptor::ToBuffer(const Arguments &args) { - HandleScope scope; - - // Unpack the Security Buffer object - SecurityBufferDescriptor *security_obj = ObjectWrap::Unwrap(args.This()); - - // Get the buffer - char *buffer_data = security_obj->toBuffer(); - size_t buffer_size = security_obj->bufferSize(); - - // Create a Buffer - Buffer *buffer = Buffer::New(buffer_data, buffer_size); - - // Return the buffer - return scope.Close(buffer->handle_); -} - -void SecurityBufferDescriptor::Initialize(Handle target) { - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("SecurityBufferDescriptor")); - - // Set up method for the Kerberos instance - NODE_SET_PROTOTYPE_METHOD(constructor_template, "toBuffer", ToBuffer); - - target->Set(String::NewSymbol("SecurityBufferDescriptor"), constructor_template->GetFunction()); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h deleted file mode 100644 index 8588632..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef SECURITY_BUFFER_DESCRIPTOR_H -#define SECURITY_BUFFER_DESCRIPTOR_H - -#include -#include -#include - -#include -#include - -using namespace v8; -using namespace node; - -class SecurityBufferDescriptor : public ObjectWrap { - public: - Persistent arrayObject; - SecBufferDesc secBufferDesc; - - SecurityBufferDescriptor(); - SecurityBufferDescriptor(Persistent arrayObject); - ~SecurityBufferDescriptor(); - - // Has instance check - static inline bool HasInstance(Handle val) { - if (!val->IsObject()) return false; - Local obj = val->ToObject(); - return constructor_template->HasInstance(obj); - }; - - char *toBuffer(); - size_t bufferSize(); - - // Functions available from V8 - static void Initialize(Handle target); - static Handle ToBuffer(const Arguments &args); - - // Constructor used for creating new Long objects from C++ - static Persistent constructor_template; - - private: - static Handle New(const Arguments &args); -}; - -#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js deleted file mode 100644 index 9421392..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_buffer_descriptor.js +++ /dev/null @@ -1,3 +0,0 @@ -var SecurityBufferDescriptorNative = require('../../../build/Release/kerberos').SecurityBufferDescriptor; -// Export the modified class -exports.SecurityBufferDescriptor = SecurityBufferDescriptorNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc deleted file mode 100644 index 8c3691a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.cc +++ /dev/null @@ -1,1211 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "security_context.h" -#include "security_buffer_descriptor.h" - -#ifndef ARRAY_SIZE -# define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0])) -#endif - -static LPSTR DisplaySECError(DWORD ErrCode); - -static Handle VException(const char *msg) { - HandleScope scope; - return ThrowException(Exception::Error(String::New(msg))); -}; - -static Handle VExceptionErrNo(const char *msg, const int errorNumber) { - HandleScope scope; - - Local err = Exception::Error(String::New(msg)); - Local obj = err->ToObject(); - obj->Set(NODE_PSYMBOL("code"), Int32::New(errorNumber)); - return ThrowException(err); -}; - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// UV Lib callbacks -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -static void Process(uv_work_t* work_req) { - // Grab the worker - Worker *worker = static_cast(work_req->data); - // Execute the worker code - worker->execute(worker); -} - -static void After(uv_work_t* work_req) { - // Grab the scope of the call from Node - v8::HandleScope scope; - - // Get the worker reference - Worker *worker = static_cast(work_req->data); - - // If we have an error - if(worker->error) { - v8::Local err = v8::Exception::Error(v8::String::New(worker->error_message)); - Local obj = err->ToObject(); - obj->Set(NODE_PSYMBOL("code"), Int32::New(worker->error_code)); - v8::Local args[2] = { err, v8::Local::New(v8::Null()) }; - // Execute the error - v8::TryCatch try_catch; - // Call the callback - worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); - // If we have an exception handle it as a fatalexception - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - } else { - // // Map the data - v8::Handle result = worker->mapper(worker); - // Set up the callback with a null first - v8::Handle args[2] = { v8::Local::New(v8::Null()), result}; - // Wrap the callback function call in a TryCatch so that we can call - // node's FatalException afterwards. This makes it possible to catch - // the exception from JavaScript land using the - // process.on('uncaughtException') event. - v8::TryCatch try_catch; - // Call the callback - worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); - // If we have an exception handle it as a fatalexception - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - } - - // Clean up the memory - worker->callback.Dispose(); - free(worker->parameters); - delete worker; -} - -Persistent SecurityContext::constructor_template; - -SecurityContext::SecurityContext() : ObjectWrap() { -} - -SecurityContext::~SecurityContext() { - if(this->hasContext) { - _sspi_DeleteSecurityContext(&this->m_Context); - } -} - -Handle SecurityContext::New(const Arguments &args) { - HandleScope scope; - - PSecurityFunctionTable pSecurityInterface = NULL; - DWORD dwNumOfPkgs; - SECURITY_STATUS status; - - // Create code object - SecurityContext *security_obj = new SecurityContext(); - // Get security table interface - pSecurityInterface = _ssip_InitSecurityInterface(); - // Call the security interface - status = (*pSecurityInterface->EnumerateSecurityPackages)( - &dwNumOfPkgs, - &security_obj->m_PkgInfo); - if(status != SEC_E_OK) { - printf(TEXT("Failed in retrieving security packages, Error: %x"), GetLastError()); - return VException("Failed in retrieving security packages"); - } - - // Wrap it - security_obj->Wrap(args.This()); - // Return the object - return args.This(); -} - -Handle SecurityContext::InitializeContextSync(const Arguments &args) { - HandleScope scope; - char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; - BYTE *out_bound_data_str = NULL; - int decoded_input_str_length = NULL; - // Store reference to security credentials - SecurityCredentials *security_credentials = NULL; - // Status of operation - SECURITY_STATUS status; - - // We need 3 parameters - if(args.Length() != 3) - return VException("Initialize must be called with either [credential:SecurityCredential, servicePrincipalName:string, input:string]"); - - // First parameter must be an instance of SecurityCredentials - if(!SecurityCredentials::HasInstance(args[0])) - return VException("First parameter for Initialize must be an instance of SecurityCredentials"); - - // Second parameter must be a string - if(!args[1]->IsString()) - return VException("Second parameter for Initialize must be a string"); - - // Third parameter must be a base64 encoded string - if(!args[2]->IsString()) - return VException("Second parameter for Initialize must be a string"); - - // Let's unpack the values - Local service_principal_name = args[1]->ToString(); - service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); - service_principal_name->WriteUtf8(service_principal_name_str); - - // Unpack the user name - Local input = args[2]->ToString(); - - if(input->Utf8Length() > 0) { - input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); - input->WriteUtf8(input_str); - - // Now let's get the base64 decoded string - decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); - } - - // Unpack the Security credentials - security_credentials = ObjectWrap::Unwrap(args[0]->ToObject()); - - // Create Security context instance - Local security_context_value = constructor_template->GetFunction()->NewInstance(); - // Unwrap the security context - SecurityContext *security_context = ObjectWrap::Unwrap(security_context_value); - // Add a reference to the security_credentials - security_context->security_credentials = security_credentials; - - // Structures used for c calls - SecBufferDesc ibd, obd; - SecBuffer ib, ob; - - // - // Prepare data structure for returned data from SSPI - ob.BufferType = SECBUFFER_TOKEN; - ob.cbBuffer = security_context->m_PkgInfo->cbMaxToken; - // Allocate space for return data - out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; - ob.pvBuffer = out_bound_data_str; - // prepare buffer description - obd.cBuffers = 1; - obd.ulVersion = SECBUFFER_VERSION; - obd.pBuffers = &ob; - - // - // Prepare the data we are passing to the SSPI method - if(input->Utf8Length() > 0) { - ib.BufferType = SECBUFFER_TOKEN; - ib.cbBuffer = decoded_input_str_length; - ib.pvBuffer = decoded_input_str; - // prepare buffer description - ibd.cBuffers = 1; - ibd.ulVersion = SECBUFFER_VERSION; - ibd.pBuffers = &ib; - } - - // Perform initialization step - status = _sspi_initializeSecurityContext( - &security_credentials->m_Credentials - , NULL - , const_cast(service_principal_name_str) - , 0x02 // MUTUAL - , 0 - , 0 // Network - , input->Utf8Length() > 0 ? &ibd : NULL - , 0 - , &security_context->m_Context - , &obd - , &security_context->CtxtAttr - , &security_context->Expiration - ); - - // If we have a ok or continue let's prepare the result - if(status == SEC_E_OK - || status == SEC_I_COMPLETE_NEEDED - || status == SEC_I_CONTINUE_NEEDED - || status == SEC_I_COMPLETE_AND_CONTINUE - ) { - security_context->hasContext = true; - security_context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); - } else { - LPSTR err_message = DisplaySECError(status); - - if(err_message != NULL) { - return VExceptionErrNo(err_message, status); - } else { - return VExceptionErrNo("Unknown error", status); - } - } - - // Return security context - return scope.Close(security_context_value); -} - -// -// Async InitializeContext -// -typedef struct SecurityContextStaticInitializeCall { - char *service_principal_name_str; - char *decoded_input_str; - int decoded_input_str_length; - SecurityContext *context; -} SecurityContextStaticInitializeCall; - -static void _initializeContext(Worker *worker) { - // Status of operation - SECURITY_STATUS status; - BYTE *out_bound_data_str = NULL; - SecurityContextStaticInitializeCall *call = (SecurityContextStaticInitializeCall *)worker->parameters; - - // Structures used for c calls - SecBufferDesc ibd, obd; - SecBuffer ib, ob; - - // - // Prepare data structure for returned data from SSPI - ob.BufferType = SECBUFFER_TOKEN; - ob.cbBuffer = call->context->m_PkgInfo->cbMaxToken; - // Allocate space for return data - out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; - ob.pvBuffer = out_bound_data_str; - // prepare buffer description - obd.cBuffers = 1; - obd.ulVersion = SECBUFFER_VERSION; - obd.pBuffers = &ob; - - // - // Prepare the data we are passing to the SSPI method - if(call->decoded_input_str_length > 0) { - ib.BufferType = SECBUFFER_TOKEN; - ib.cbBuffer = call->decoded_input_str_length; - ib.pvBuffer = call->decoded_input_str; - // prepare buffer description - ibd.cBuffers = 1; - ibd.ulVersion = SECBUFFER_VERSION; - ibd.pBuffers = &ib; - } - - // Perform initialization step - status = _sspi_initializeSecurityContext( - &call->context->security_credentials->m_Credentials - , NULL - , const_cast(call->service_principal_name_str) - , 0x02 // MUTUAL - , 0 - , 0 // Network - , call->decoded_input_str_length > 0 ? &ibd : NULL - , 0 - , &call->context->m_Context - , &obd - , &call->context->CtxtAttr - , &call->context->Expiration - ); - - // If we have a ok or continue let's prepare the result - if(status == SEC_E_OK - || status == SEC_I_COMPLETE_NEEDED - || status == SEC_I_CONTINUE_NEEDED - || status == SEC_I_COMPLETE_AND_CONTINUE - ) { - call->context->hasContext = true; - call->context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); - - // Set the context - worker->return_code = status; - worker->return_value = call->context; - } else { - worker->error = TRUE; - worker->error_code = status; - worker->error_message = DisplaySECError(status); - } - - // Clean up data - if(call->decoded_input_str != NULL) free(call->decoded_input_str); - if(call->service_principal_name_str != NULL) free(call->service_principal_name_str); -} - -static Handle _map_initializeContext(Worker *worker) { - HandleScope scope; - - // Unwrap the security context - SecurityContext *context = (SecurityContext *)worker->return_value; - // Return the value - return scope.Close(context->handle_); -} - -Handle SecurityContext::InitializeContext(const Arguments &args) { - HandleScope scope; - char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; - int decoded_input_str_length = NULL; - // Store reference to security credentials - SecurityCredentials *security_credentials = NULL; - - // We need 3 parameters - if(args.Length() != 4) - return VException("Initialize must be called with [credential:SecurityCredential, servicePrincipalName:string, input:string, callback:function]"); - - // First parameter must be an instance of SecurityCredentials - if(!SecurityCredentials::HasInstance(args[0])) - return VException("First parameter for Initialize must be an instance of SecurityCredentials"); - - // Second parameter must be a string - if(!args[1]->IsString()) - return VException("Second parameter for Initialize must be a string"); - - // Third parameter must be a base64 encoded string - if(!args[2]->IsString()) - return VException("Second parameter for Initialize must be a string"); - - // Third parameter must be a callback - if(!args[3]->IsFunction()) - return VException("Third parameter for Initialize must be a callback function"); - - // Let's unpack the values - Local service_principal_name = args[1]->ToString(); - service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); - service_principal_name->WriteUtf8(service_principal_name_str); - - // Unpack the user name - Local input = args[2]->ToString(); - - if(input->Utf8Length() > 0) { - input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); - input->WriteUtf8(input_str); - - // Now let's get the base64 decoded string - decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); - // Free original allocation - free(input_str); - } - - // Unpack the Security credentials - security_credentials = ObjectWrap::Unwrap(args[0]->ToObject()); - // Create Security context instance - Local security_context_value = constructor_template->GetFunction()->NewInstance(); - // Unwrap the security context - SecurityContext *security_context = ObjectWrap::Unwrap(security_context_value); - // Add a reference to the security_credentials - security_context->security_credentials = security_credentials; - - // Build the call function - SecurityContextStaticInitializeCall *call = (SecurityContextStaticInitializeCall *)calloc(1, sizeof(SecurityContextStaticInitializeCall)); - call->context = security_context; - call->decoded_input_str = decoded_input_str; - call->decoded_input_str_length = decoded_input_str_length; - call->service_principal_name_str = service_principal_name_str; - - // Callback - Local callback = Local::Cast(args[3]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _initializeContext; - worker->mapper = _map_initializeContext; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); - - // Return no value - return scope.Close(Undefined()); -} - -Handle SecurityContext::PayloadGetter(Local property, const AccessorInfo& info) { - HandleScope scope; - // Unpack the context object - SecurityContext *context = ObjectWrap::Unwrap(info.Holder()); - // Return the low bits - return scope.Close(String::New(context->payload)); -} - -Handle SecurityContext::HasContextGetter(Local property, const AccessorInfo& info) { - HandleScope scope; - // Unpack the context object - SecurityContext *context = ObjectWrap::Unwrap(info.Holder()); - // Return the low bits - return scope.Close(Boolean::New(context->hasContext)); -} - -// -// Async InitializeContextStep -// -typedef struct SecurityContextStepStaticInitializeCall { - char *service_principal_name_str; - char *decoded_input_str; - int decoded_input_str_length; - SecurityContext *context; -} SecurityContextStepStaticInitializeCall; - -static void _initializeContextStep(Worker *worker) { - // Outbound data array - BYTE *out_bound_data_str = NULL; - // Status of operation - SECURITY_STATUS status; - // Unpack data - SecurityContextStepStaticInitializeCall *call = (SecurityContextStepStaticInitializeCall *)worker->parameters; - SecurityContext *context = call->context; - // Structures used for c calls - SecBufferDesc ibd, obd; - SecBuffer ib, ob; - - // - // Prepare data structure for returned data from SSPI - ob.BufferType = SECBUFFER_TOKEN; - ob.cbBuffer = context->m_PkgInfo->cbMaxToken; - // Allocate space for return data - out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; - ob.pvBuffer = out_bound_data_str; - // prepare buffer description - obd.cBuffers = 1; - obd.ulVersion = SECBUFFER_VERSION; - obd.pBuffers = &ob; - - // - // Prepare the data we are passing to the SSPI method - if(call->decoded_input_str_length > 0) { - ib.BufferType = SECBUFFER_TOKEN; - ib.cbBuffer = call->decoded_input_str_length; - ib.pvBuffer = call->decoded_input_str; - // prepare buffer description - ibd.cBuffers = 1; - ibd.ulVersion = SECBUFFER_VERSION; - ibd.pBuffers = &ib; - } - - // Perform initialization step - status = _sspi_initializeSecurityContext( - &context->security_credentials->m_Credentials - , context->hasContext == true ? &context->m_Context : NULL - , const_cast(call->service_principal_name_str) - , 0x02 // MUTUAL - , 0 - , 0 // Network - , call->decoded_input_str_length ? &ibd : NULL - , 0 - , &context->m_Context - , &obd - , &context->CtxtAttr - , &context->Expiration - ); - - // If we have a ok or continue let's prepare the result - if(status == SEC_E_OK - || status == SEC_I_COMPLETE_NEEDED - || status == SEC_I_CONTINUE_NEEDED - || status == SEC_I_COMPLETE_AND_CONTINUE - ) { - // Set the new payload - if(context->payload != NULL) free(context->payload); - context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); - worker->return_code = status; - worker->return_value = context; - } else { - worker->error = TRUE; - worker->error_code = status; - worker->error_message = DisplaySECError(status); - } - - // Clean up data - if(call->decoded_input_str != NULL) free(call->decoded_input_str); - if(call->service_principal_name_str != NULL) free(call->service_principal_name_str); -} - -static Handle _map_initializeContextStep(Worker *worker) { - HandleScope scope; - // Unwrap the security context - SecurityContext *context = (SecurityContext *)worker->return_value; - // Return the value - return scope.Close(context->handle_); -} - -Handle SecurityContext::InitalizeStep(const Arguments &args) { - HandleScope scope; - - char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; - int decoded_input_str_length = NULL; - - // We need 3 parameters - if(args.Length() != 3) - return VException("Initialize must be called with [servicePrincipalName:string, input:string, callback:function]"); - - // Second parameter must be a string - if(!args[0]->IsString()) - return VException("First parameter for Initialize must be a string"); - - // Third parameter must be a base64 encoded string - if(!args[1]->IsString()) - return VException("Second parameter for Initialize must be a string"); - - // Third parameter must be a base64 encoded string - if(!args[2]->IsFunction()) - return VException("Third parameter for Initialize must be a callback function"); - - // Let's unpack the values - Local service_principal_name = args[0]->ToString(); - service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); - service_principal_name->WriteUtf8(service_principal_name_str); - - // Unpack the user name - Local input = args[1]->ToString(); - - if(input->Utf8Length() > 0) { - input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); - input->WriteUtf8(input_str); - // Now let's get the base64 decoded string - decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); - // Free input string - free(input_str); - } - - // Unwrap the security context - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - - // Create call structure - SecurityContextStepStaticInitializeCall *call = (SecurityContextStepStaticInitializeCall *)calloc(1, sizeof(SecurityContextStepStaticInitializeCall)); - call->context = security_context; - call->decoded_input_str = decoded_input_str; - call->decoded_input_str_length = decoded_input_str_length; - call->service_principal_name_str = service_principal_name_str; - - // Callback - Local callback = Local::Cast(args[2]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _initializeContextStep; - worker->mapper = _map_initializeContextStep; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); - - // Return undefined - return scope.Close(Undefined()); -} - -Handle SecurityContext::InitalizeStepSync(const Arguments &args) { - HandleScope scope; - - char *service_principal_name_str = NULL, *input_str = NULL, *decoded_input_str = NULL; - BYTE *out_bound_data_str = NULL; - int decoded_input_str_length = NULL; - // Status of operation - SECURITY_STATUS status; - - // We need 3 parameters - if(args.Length() != 2) - return VException("Initialize must be called with [servicePrincipalName:string, input:string]"); - - // Second parameter must be a string - if(!args[0]->IsString()) - return VException("First parameter for Initialize must be a string"); - - // Third parameter must be a base64 encoded string - if(!args[1]->IsString()) - return VException("Second parameter for Initialize must be a string"); - - // Let's unpack the values - Local service_principal_name = args[0]->ToString(); - service_principal_name_str = (char *)calloc(service_principal_name->Utf8Length() + 1, sizeof(char)); - service_principal_name->WriteUtf8(service_principal_name_str); - - // Unpack the user name - Local input = args[1]->ToString(); - - if(input->Utf8Length() > 0) { - input_str = (char *)calloc(input->Utf8Length() + 1, sizeof(char)); - input->WriteUtf8(input_str); - // Now let's get the base64 decoded string - decoded_input_str = (char *)base64_decode(input_str, &decoded_input_str_length); - } - - // Unpack the long object - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - SecurityCredentials *security_credentials = security_context->security_credentials; - - // Structures used for c calls - SecBufferDesc ibd, obd; - SecBuffer ib, ob; - - // - // Prepare data structure for returned data from SSPI - ob.BufferType = SECBUFFER_TOKEN; - ob.cbBuffer = security_context->m_PkgInfo->cbMaxToken; - // Allocate space for return data - out_bound_data_str = new BYTE[ob.cbBuffer + sizeof(DWORD)]; - ob.pvBuffer = out_bound_data_str; - // prepare buffer description - obd.cBuffers = 1; - obd.ulVersion = SECBUFFER_VERSION; - obd.pBuffers = &ob; - - // - // Prepare the data we are passing to the SSPI method - if(input->Utf8Length() > 0) { - ib.BufferType = SECBUFFER_TOKEN; - ib.cbBuffer = decoded_input_str_length; - ib.pvBuffer = decoded_input_str; - // prepare buffer description - ibd.cBuffers = 1; - ibd.ulVersion = SECBUFFER_VERSION; - ibd.pBuffers = &ib; - } - - // Perform initialization step - status = _sspi_initializeSecurityContext( - &security_credentials->m_Credentials - , security_context->hasContext == true ? &security_context->m_Context : NULL - , const_cast(service_principal_name_str) - , 0x02 // MUTUAL - , 0 - , 0 // Network - , input->Utf8Length() > 0 ? &ibd : NULL - , 0 - , &security_context->m_Context - , &obd - , &security_context->CtxtAttr - , &security_context->Expiration - ); - - // If we have a ok or continue let's prepare the result - if(status == SEC_E_OK - || status == SEC_I_COMPLETE_NEEDED - || status == SEC_I_CONTINUE_NEEDED - || status == SEC_I_COMPLETE_AND_CONTINUE - ) { - // Set the new payload - if(security_context->payload != NULL) free(security_context->payload); - security_context->payload = base64_encode((const unsigned char *)ob.pvBuffer, ob.cbBuffer); - } else { - LPSTR err_message = DisplaySECError(status); - - if(err_message != NULL) { - return VExceptionErrNo(err_message, status); - } else { - return VExceptionErrNo("Unknown error", status); - } - } - - return scope.Close(Null()); -} - -// -// Async EncryptMessage -// -typedef struct SecurityContextEncryptMessageCall { - SecurityContext *context; - SecurityBufferDescriptor *descriptor; - unsigned long flags; -} SecurityContextEncryptMessageCall; - -static void _encryptMessage(Worker *worker) { - SECURITY_STATUS status; - // Unpack call - SecurityContextEncryptMessageCall *call = (SecurityContextEncryptMessageCall *)worker->parameters; - // Unpack the security context - SecurityContext *context = call->context; - SecurityBufferDescriptor *descriptor = call->descriptor; - - // Let's execute encryption - status = _sspi_EncryptMessage( - &context->m_Context - , call->flags - , &descriptor->secBufferDesc - , 0 - ); - - // We've got ok - if(status == SEC_E_OK) { - int bytesToAllocate = (int)descriptor->bufferSize(); - // Free up existing payload - if(context->payload != NULL) free(context->payload); - // Save the payload - context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); - // Set result - worker->return_code = status; - worker->return_value = context; - } else { - worker->error = TRUE; - worker->error_code = status; - worker->error_message = DisplaySECError(status); - } -} - -static Handle _map_encryptMessage(Worker *worker) { - HandleScope scope; - // Unwrap the security context - SecurityContext *context = (SecurityContext *)worker->return_value; - // Return the value - return scope.Close(context->handle_); -} - -Handle SecurityContext::EncryptMessage(const Arguments &args) { - HandleScope scope; - - if(args.Length() != 3) - return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); - if(!SecurityBufferDescriptor::HasInstance(args[0])) - return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); - if(!args[1]->IsUint32()) - return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); - if(!args[2]->IsFunction()) - return VException("EncryptMessage takes an instance of SecurityBufferDescriptor, an integer flag and a callback function"); - - // Unpack the security context - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - - // Unpack the descriptor - SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); - - // Create call structure - SecurityContextEncryptMessageCall *call = (SecurityContextEncryptMessageCall *)calloc(1, sizeof(SecurityContextEncryptMessageCall)); - call->context = security_context; - call->descriptor = descriptor; - call->flags = (unsigned long)args[1]->ToInteger()->Value(); - - // Callback - Local callback = Local::Cast(args[2]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _encryptMessage; - worker->mapper = _map_encryptMessage; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); - - // Return undefined - return scope.Close(Undefined()); -} - -Handle SecurityContext::EncryptMessageSync(const Arguments &args) { - HandleScope scope; - SECURITY_STATUS status; - - if(args.Length() != 2) - return VException("EncryptMessageSync takes an instance of SecurityBufferDescriptor and an integer flag"); - if(!SecurityBufferDescriptor::HasInstance(args[0])) - return VException("EncryptMessageSync takes an instance of SecurityBufferDescriptor and an integer flag"); - if(!args[1]->IsUint32()) - return VException("EncryptMessageSync takes an instance of SecurityBufferDescriptor and an integer flag"); - - // Unpack the security context - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - - // Unpack the descriptor - SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); - - // Let's execute encryption - status = _sspi_EncryptMessage( - &security_context->m_Context - , (unsigned long)args[1]->ToInteger()->Value() - , &descriptor->secBufferDesc - , 0 - ); - - // We've got ok - if(status == SEC_E_OK) { - int bytesToAllocate = (int)descriptor->bufferSize(); - // Free up existing payload - if(security_context->payload != NULL) free(security_context->payload); - // Save the payload - security_context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); - } else { - LPSTR err_message = DisplaySECError(status); - - if(err_message != NULL) { - return VExceptionErrNo(err_message, status); - } else { - return VExceptionErrNo("Unknown error", status); - } - } - - return scope.Close(Null()); -} - -// -// Async DecryptMessage -// -typedef struct SecurityContextDecryptMessageCall { - SecurityContext *context; - SecurityBufferDescriptor *descriptor; -} SecurityContextDecryptMessageCall; - -static void _decryptMessage(Worker *worker) { - unsigned long quality = 0; - SECURITY_STATUS status; - - // Unpack parameters - SecurityContextDecryptMessageCall *call = (SecurityContextDecryptMessageCall *)worker->parameters; - SecurityContext *context = call->context; - SecurityBufferDescriptor *descriptor = call->descriptor; - - // Let's execute encryption - status = _sspi_DecryptMessage( - &context->m_Context - , &descriptor->secBufferDesc - , 0 - , (unsigned long)&quality - ); - - // We've got ok - if(status == SEC_E_OK) { - int bytesToAllocate = (int)descriptor->bufferSize(); - // Free up existing payload - if(context->payload != NULL) free(context->payload); - // Save the payload - context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); - // Set return values - worker->return_code = status; - worker->return_value = context; - } else { - worker->error = TRUE; - worker->error_code = status; - worker->error_message = DisplaySECError(status); - } -} - -static Handle _map_decryptMessage(Worker *worker) { - HandleScope scope; - // Unwrap the security context - SecurityContext *context = (SecurityContext *)worker->return_value; - // Return the value - return scope.Close(context->handle_); -} - -Handle SecurityContext::DecryptMessage(const Arguments &args) { - HandleScope scope; - - if(args.Length() != 2) - return VException("DecryptMessage takes an instance of SecurityBufferDescriptor and a callback function"); - if(!SecurityBufferDescriptor::HasInstance(args[0])) - return VException("DecryptMessage takes an instance of SecurityBufferDescriptor and a callback function"); - if(!args[1]->IsFunction()) - return VException("DecryptMessage takes an instance of SecurityBufferDescriptor and a callback function"); - - // Unpack the security context - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - // Unpack the descriptor - SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); - // Create call structure - SecurityContextDecryptMessageCall *call = (SecurityContextDecryptMessageCall *)calloc(1, sizeof(SecurityContextDecryptMessageCall)); - call->context = security_context; - call->descriptor = descriptor; - - // Callback - Local callback = Local::Cast(args[1]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _decryptMessage; - worker->mapper = _map_decryptMessage; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); - - // Return undefined - return scope.Close(Undefined()); -} - -Handle SecurityContext::DecryptMessageSync(const Arguments &args) { - HandleScope scope; - unsigned long quality = 0; - SECURITY_STATUS status; - - if(args.Length() != 1) - return VException("DecryptMessageSync takes an instance of SecurityBufferDescriptor"); - if(!SecurityBufferDescriptor::HasInstance(args[0])) - return VException("DecryptMessageSync takes an instance of SecurityBufferDescriptor"); - - // Unpack the security context - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - - // Unpack the descriptor - SecurityBufferDescriptor *descriptor = ObjectWrap::Unwrap(args[0]->ToObject()); - - // Let's execute encryption - status = _sspi_DecryptMessage( - &security_context->m_Context - , &descriptor->secBufferDesc - , 0 - , (unsigned long)&quality - ); - - // We've got ok - if(status == SEC_E_OK) { - int bytesToAllocate = (int)descriptor->bufferSize(); - // Free up existing payload - if(security_context->payload != NULL) free(security_context->payload); - // Save the payload - security_context->payload = base64_encode((unsigned char *)descriptor->toBuffer(), bytesToAllocate); - } else { - LPSTR err_message = DisplaySECError(status); - - if(err_message != NULL) { - return VExceptionErrNo(err_message, status); - } else { - return VExceptionErrNo("Unknown error", status); - } - } - - return scope.Close(Null()); -} - -// -// Async QueryContextAttributes -// -typedef struct SecurityContextQueryContextAttributesCall { - SecurityContext *context; - uint32_t attribute; -} SecurityContextQueryContextAttributesCall; - -static void _queryContextAttributes(Worker *worker) { - SECURITY_STATUS status; - - // Cast to data structure - SecurityContextQueryContextAttributesCall *call = (SecurityContextQueryContextAttributesCall *)worker->parameters; - - // Allocate some space - SecPkgContext_Sizes *sizes = (SecPkgContext_Sizes *)calloc(1, sizeof(SecPkgContext_Sizes)); - // Let's grab the query context attribute - status = _sspi_QueryContextAttributes( - &call->context->m_Context, - call->attribute, - sizes - ); - - if(status == SEC_E_OK) { - worker->return_code = status; - worker->return_value = sizes; - } else { - worker->error = TRUE; - worker->error_code = status; - worker->error_message = DisplaySECError(status); - } -} - -static Handle _map_queryContextAttributes(Worker *worker) { - HandleScope scope; - - // Cast to data structure - SecurityContextQueryContextAttributesCall *call = (SecurityContextQueryContextAttributesCall *)worker->parameters; - // Unpack the attribute - uint32_t attribute = call->attribute; - - // Convert data - if(attribute == SECPKG_ATTR_SIZES) { - SecPkgContext_Sizes *sizes = (SecPkgContext_Sizes *)worker->return_value; - // Create object - Local value = Object::New(); - value->Set(String::New("maxToken"), Integer::New(sizes->cbMaxToken)); - value->Set(String::New("maxSignature"), Integer::New(sizes->cbMaxSignature)); - value->Set(String::New("blockSize"), Integer::New(sizes->cbBlockSize)); - value->Set(String::New("securityTrailer"), Integer::New(sizes->cbSecurityTrailer)); - return scope.Close(value); - } - - // Return the value - return scope.Close(Null()); -} - -Handle SecurityContext::QueryContextAttributes(const Arguments &args) { - HandleScope scope; - - if(args.Length() != 2) - return VException("QueryContextAttributesSync method takes a an integer Attribute specifier and a callback function"); - if(!args[0]->IsInt32()) - return VException("QueryContextAttributes method takes a an integer Attribute specifier and a callback function"); - if(!args[1]->IsFunction()) - return VException("QueryContextAttributes method takes a an integer Attribute specifier and a callback function"); - - // Unpack the security context - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - - // Unpack the int value - uint32_t attribute = args[0]->ToInt32()->Value(); - - // Check that we have a supported attribute - if(attribute != SECPKG_ATTR_SIZES) - return VException("QueryContextAttributes only supports the SECPKG_ATTR_SIZES attribute"); - - // Create call structure - SecurityContextQueryContextAttributesCall *call = (SecurityContextQueryContextAttributesCall *)calloc(1, sizeof(SecurityContextQueryContextAttributesCall)); - call->attribute = attribute; - call->context = security_context; - - // Callback - Local callback = Local::Cast(args[1]); - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _queryContextAttributes; - worker->mapper = _map_queryContextAttributes; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, Process, (uv_after_work_cb)After); - - // Return undefined - return scope.Close(Undefined()); -} - -Handle SecurityContext::QueryContextAttributesSync(const Arguments &args) { - HandleScope scope; - SECURITY_STATUS status; - - if(args.Length() != 1) - return VException("QueryContextAttributesSync method takes a an integer Attribute specifier"); - if(!args[0]->IsInt32()) - return VException("QueryContextAttributesSync method takes a an integer Attribute specifier"); - - // Unpack the security context - SecurityContext *security_context = ObjectWrap::Unwrap(args.This()); - uint32_t attribute = args[0]->ToInt32()->Value(); - - if(attribute != SECPKG_ATTR_SIZES) - return VException("QueryContextAttributes only supports the SECPKG_ATTR_SIZES attribute"); - - // Check what attribute we are asking for - if(attribute == SECPKG_ATTR_SIZES) { - SecPkgContext_Sizes sizes; - - // Let's grab the query context attribute - status = _sspi_QueryContextAttributes( - &security_context->m_Context, - attribute, - &sizes - ); - - if(status == SEC_E_OK) { - Local value = Object::New(); - value->Set(String::New("maxToken"), Integer::New(sizes.cbMaxToken)); - value->Set(String::New("maxSignature"), Integer::New(sizes.cbMaxSignature)); - value->Set(String::New("blockSize"), Integer::New(sizes.cbBlockSize)); - value->Set(String::New("securityTrailer"), Integer::New(sizes.cbSecurityTrailer)); - return scope.Close(value); - } else { - LPSTR err_message = DisplaySECError(status); - - if(err_message != NULL) { - return VExceptionErrNo(err_message, status); - } else { - return VExceptionErrNo("Unknown error", status); - } - } - } - - return scope.Close(Null()); -} - -void SecurityContext::Initialize(Handle target) { - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("SecurityContext")); - - // Class methods - NODE_SET_METHOD(constructor_template, "initializeSync", InitializeContextSync); - NODE_SET_METHOD(constructor_template, "initialize", InitializeContext); - - // Set up method for the instance - NODE_SET_PROTOTYPE_METHOD(constructor_template, "initializeSync", InitalizeStepSync); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "initialize", InitalizeStep); - - NODE_SET_PROTOTYPE_METHOD(constructor_template, "decryptMessageSync", DecryptMessageSync); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "decryptMessage", DecryptMessage); - - NODE_SET_PROTOTYPE_METHOD(constructor_template, "queryContextAttributesSync", QueryContextAttributesSync); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "queryContextAttributes", QueryContextAttributes); - - NODE_SET_PROTOTYPE_METHOD(constructor_template, "encryptMessageSync", EncryptMessageSync); - NODE_SET_PROTOTYPE_METHOD(constructor_template, "encryptMessage", EncryptMessage); - - // Getters for correct serialization of the object - constructor_template->InstanceTemplate()->SetAccessor(String::NewSymbol("payload"), PayloadGetter); - // Getters for correct serialization of the object - constructor_template->InstanceTemplate()->SetAccessor(String::NewSymbol("hasContext"), HasContextGetter); - - // Set template class name - target->Set(String::NewSymbol("SecurityContext"), constructor_template->GetFunction()); -} - -static LPSTR DisplaySECError(DWORD ErrCode) { - LPSTR pszName = NULL; // WinError.h - - switch(ErrCode) { - case SEC_E_BUFFER_TOO_SMALL: - pszName = "SEC_E_BUFFER_TOO_SMALL - The message buffer is too small. Used with the Digest SSP."; - break; - - case SEC_E_CRYPTO_SYSTEM_INVALID: - pszName = "SEC_E_CRYPTO_SYSTEM_INVALID - The cipher chosen for the security context is not supported. Used with the Digest SSP."; - break; - case SEC_E_INCOMPLETE_MESSAGE: - pszName = "SEC_E_INCOMPLETE_MESSAGE - The data in the input buffer is incomplete. The application needs to read more data from the server and call DecryptMessageSync (General) again."; - break; - - case SEC_E_INVALID_HANDLE: - pszName = "SEC_E_INVALID_HANDLE - A context handle that is not valid was specified in the phContext parameter. Used with the Digest and Schannel SSPs."; - break; - - case SEC_E_INVALID_TOKEN: - pszName = "SEC_E_INVALID_TOKEN - The buffers are of the wrong type or no buffer of type SECBUFFER_DATA was found. Used with the Schannel SSP."; - break; - - case SEC_E_MESSAGE_ALTERED: - pszName = "SEC_E_MESSAGE_ALTERED - The message has been altered. Used with the Digest and Schannel SSPs."; - break; - - case SEC_E_OUT_OF_SEQUENCE: - pszName = "SEC_E_OUT_OF_SEQUENCE - The message was not received in the correct sequence."; - break; - - case SEC_E_QOP_NOT_SUPPORTED: - pszName = "SEC_E_QOP_NOT_SUPPORTED - Neither confidentiality nor integrity are supported by the security context. Used with the Digest SSP."; - break; - - case SEC_I_CONTEXT_EXPIRED: - pszName = "SEC_I_CONTEXT_EXPIRED - The message sender has finished using the connection and has initiated a shutdown."; - break; - - case SEC_I_RENEGOTIATE: - pszName = "SEC_I_RENEGOTIATE - The remote party requires a new handshake sequence or the application has just initiated a shutdown."; - break; - - case SEC_E_ENCRYPT_FAILURE: - pszName = "SEC_E_ENCRYPT_FAILURE - The specified data could not be encrypted."; - break; - - case SEC_E_DECRYPT_FAILURE: - pszName = "SEC_E_DECRYPT_FAILURE - The specified data could not be decrypted."; - break; - case -1: - pszName = "Failed to load security.dll library"; - break; - } - - return pszName; -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h deleted file mode 100644 index b0059e3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef SECURITY_CONTEXT_H -#define SECURITY_CONTEXT_H - -#include -#include -#include - -#define SECURITY_WIN32 1 - -#include -#include -#include "security_credentials.h" -#include "../worker.h" - -extern "C" { - #include "../kerberos_sspi.h" - #include "../base64.h" -} - -using namespace v8; -using namespace node; - -class SecurityContext : public ObjectWrap { - public: - SecurityContext(); - ~SecurityContext(); - - // Security info package - PSecPkgInfo m_PkgInfo; - // Do we have a context - bool hasContext; - // Reference to security credentials - SecurityCredentials *security_credentials; - // Security context - CtxtHandle m_Context; - // Attributes - DWORD CtxtAttr; - // Expiry time for ticket - TimeStamp Expiration; - // Payload - char *payload; - - // Has instance check - static inline bool HasInstance(Handle val) { - if (!val->IsObject()) return false; - Local obj = val->ToObject(); - return constructor_template->HasInstance(obj); - }; - - // Functions available from V8 - static void Initialize(Handle target); - - static Handle InitializeContext(const Arguments &args); - static Handle InitializeContextSync(const Arguments &args); - - static Handle InitalizeStep(const Arguments &args); - static Handle InitalizeStepSync(const Arguments &args); - - static Handle DecryptMessage(const Arguments &args); - static Handle DecryptMessageSync(const Arguments &args); - - static Handle QueryContextAttributesSync(const Arguments &args); - static Handle QueryContextAttributes(const Arguments &args); - - static Handle EncryptMessageSync(const Arguments &args); - static Handle EncryptMessage(const Arguments &args); - - // Payload getter - static Handle PayloadGetter(Local property, const AccessorInfo& info); - // hasContext getter - static Handle HasContextGetter(Local property, const AccessorInfo& info); - - // Constructor used for creating new Long objects from C++ - static Persistent constructor_template; - - private: - // Create a new instance - static Handle New(const Arguments &args); - // // Handles the uv calls - // static void Process(uv_work_t* work_req); - // // Called after work is done - // static void After(uv_work_t* work_req); -}; - -#endif diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js deleted file mode 100644 index ef04e92..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_context.js +++ /dev/null @@ -1,3 +0,0 @@ -var SecurityContextNative = require('../../../build/Release/kerberos').SecurityContext; -// Export the modified class -exports.SecurityContext = SecurityContextNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc deleted file mode 100644 index 14c1cdc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.cc +++ /dev/null @@ -1,468 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "security_credentials.h" - -#ifndef ARRAY_SIZE -# define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0])) -#endif - -static LPSTR DisplaySECError(DWORD ErrCode); - -static Handle VException(const char *msg) { - HandleScope scope; - return ThrowException(Exception::Error(String::New(msg))); -}; - -static Handle VExceptionErrNo(const char *msg, const int errorNumber) { - HandleScope scope; - - Local err = Exception::Error(String::New(msg)); - Local obj = err->ToObject(); - obj->Set(NODE_PSYMBOL("code"), Int32::New(errorNumber)); - return ThrowException(err); -}; - -Persistent SecurityCredentials::constructor_template; - -SecurityCredentials::SecurityCredentials() : ObjectWrap() { -} - -SecurityCredentials::~SecurityCredentials() { -} - -Handle SecurityCredentials::New(const Arguments &args) { - HandleScope scope; - - // Create security credentials instance - SecurityCredentials *security_credentials = new SecurityCredentials(); - // Wrap it - security_credentials->Wrap(args.This()); - // Return the object - return args.This(); -} - -Handle SecurityCredentials::AquireSync(const Arguments &args) { - HandleScope scope; - char *package_str = NULL, *username_str = NULL, *password_str = NULL, *domain_str = NULL; - // Status of operation - SECURITY_STATUS status; - - // Unpack the variables - if(args.Length() != 2 && args.Length() != 3 && args.Length() != 4) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); - - if(!args[0]->IsString()) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); - - if(!args[1]->IsString()) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); - - if(args.Length() == 3 && !args[2]->IsString()) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); - - if(args.Length() == 4 && (!args[3]->IsString() && !args[3]->IsUndefined() && !args[3]->IsNull())) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string]]"); - - // Unpack the package - Local package = args[0]->ToString(); - package_str = (char *)calloc(package->Utf8Length() + 1, sizeof(char)); - package->WriteUtf8(package_str); - - // Unpack the user name - Local username = args[1]->ToString(); - username_str = (char *)calloc(username->Utf8Length() + 1, sizeof(char)); - username->WriteUtf8(username_str); - - // If we have a password - if(args.Length() == 3 || args.Length() == 4) { - Local password = args[2]->ToString(); - password_str = (char *)calloc(password->Utf8Length() + 1, sizeof(char)); - password->WriteUtf8(password_str); - } - - // If we have a domain - if(args.Length() == 4 && args[3]->IsString()) { - Local domain = args[3]->ToString(); - domain_str = (char *)calloc(domain->Utf8Length() + 1, sizeof(char)); - domain->WriteUtf8(domain_str); - } - - // Create Security instance - Local security_credentials_value = constructor_template->GetFunction()->NewInstance(); - - // Unwrap the credentials - SecurityCredentials *security_credentials = ObjectWrap::Unwrap(security_credentials_value); - - // If we have domain string - if(domain_str != NULL) { - security_credentials->m_Identity.Domain = USTR(_tcsdup(domain_str)); - security_credentials->m_Identity.DomainLength = (unsigned long)_tcslen(domain_str); - } else { - security_credentials->m_Identity.Domain = NULL; - security_credentials->m_Identity.DomainLength = 0; - } - - // Set up the user - security_credentials->m_Identity.User = USTR(_tcsdup(username_str)); - security_credentials->m_Identity.UserLength = (unsigned long)_tcslen(username_str); - - // If we have a password string - if(password_str != NULL) { - // Set up the password - security_credentials->m_Identity.Password = USTR(_tcsdup(password_str)); - security_credentials->m_Identity.PasswordLength = (unsigned long)_tcslen(password_str); - } - - #ifdef _UNICODE - security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE; - #else - security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_ANSI; - #endif - - // Attempt to acquire credentials - status = _sspi_AcquireCredentialsHandle( - NULL, - package_str, - SECPKG_CRED_OUTBOUND, - NULL, - password_str != NULL ? &security_credentials->m_Identity : NULL, - NULL, NULL, - &security_credentials->m_Credentials, - &security_credentials->Expiration - ); - - // We have an error - if(status != SEC_E_OK) { - LPSTR err_message = DisplaySECError(status); - - if(err_message != NULL) { - return VExceptionErrNo(err_message, status); - } else { - return VExceptionErrNo("Unknown error", status); - } - } - - // Make object persistent - Persistent persistent = Persistent::New(security_credentials_value); - // Return the object - return scope.Close(persistent); -} - -// Call structs -typedef struct SecurityCredentialCall { - char *package_str; - char *username_str; - char *password_str; - char *domain_str; - SecurityCredentials *credentials; -} SecurityCredentialCall; - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// authGSSClientInit -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -static void _authSSPIAquire(Worker *worker) { - // Status of operation - SECURITY_STATUS status; - - // Unpack data - SecurityCredentialCall *call = (SecurityCredentialCall *)worker->parameters; - - // Unwrap the credentials - SecurityCredentials *security_credentials = (SecurityCredentials *)call->credentials; - - // If we have domain string - if(call->domain_str != NULL) { - security_credentials->m_Identity.Domain = USTR(_tcsdup(call->domain_str)); - security_credentials->m_Identity.DomainLength = (unsigned long)_tcslen(call->domain_str); - } else { - security_credentials->m_Identity.Domain = NULL; - security_credentials->m_Identity.DomainLength = 0; - } - - // Set up the user - security_credentials->m_Identity.User = USTR(_tcsdup(call->username_str)); - security_credentials->m_Identity.UserLength = (unsigned long)_tcslen(call->username_str); - - // If we have a password string - if(call->password_str != NULL) { - // Set up the password - security_credentials->m_Identity.Password = USTR(_tcsdup(call->password_str)); - security_credentials->m_Identity.PasswordLength = (unsigned long)_tcslen(call->password_str); - } - - #ifdef _UNICODE - security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE; - #else - security_credentials->m_Identity.Flags = SEC_WINNT_AUTH_IDENTITY_ANSI; - #endif - - // Attempt to acquire credentials - status = _sspi_AcquireCredentialsHandle( - NULL, - call->package_str, - SECPKG_CRED_OUTBOUND, - NULL, - call->password_str != NULL ? &security_credentials->m_Identity : NULL, - NULL, NULL, - &security_credentials->m_Credentials, - &security_credentials->Expiration - ); - - // We have an error - if(status != SEC_E_OK) { - worker->error = TRUE; - worker->error_code = status; - worker->error_message = DisplaySECError(status); - } else { - worker->return_code = status; - worker->return_value = security_credentials; - } - - // Free up parameter structure - if(call->package_str != NULL) free(call->package_str); - if(call->domain_str != NULL) free(call->domain_str); - if(call->password_str != NULL) free(call->password_str); - if(call->username_str != NULL) free(call->username_str); - free(call); -} - -static Handle _map_authSSPIAquire(Worker *worker) { - HandleScope scope; - - // Unpack the credentials - SecurityCredentials *security_credentials = (SecurityCredentials *)worker->return_value; - // Make object persistent - Persistent persistent = Persistent::New(security_credentials->handle_); - // Return the object - return scope.Close(persistent); -} - -Handle SecurityCredentials::Aquire(const Arguments &args) { - HandleScope scope; - char *package_str = NULL, *username_str = NULL, *password_str = NULL, *domain_str = NULL; - // Unpack the variables - if(args.Length() != 2 && args.Length() != 3 && args.Length() != 4 && args.Length() != 5) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); - - if(!args[0]->IsString()) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); - - if(!args[1]->IsString()) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); - - if(args.Length() == 3 && (!args[2]->IsString() && !args[2]->IsFunction())) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); - - if(args.Length() == 4 && (!args[3]->IsString() && !args[3]->IsUndefined() && !args[3]->IsNull()) && !args[3]->IsFunction()) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); - - if(args.Length() == 5 && !args[4]->IsFunction()) - return VException("Aquire must be called with either [package:string, username:string, [password:string, domain:string], callback:function]"); - - Local callback; - - // Figure out which parameter is the callback - if(args.Length() == 5) { - callback = Local::Cast(args[4]); - } else if(args.Length() == 4) { - callback = Local::Cast(args[3]); - } else if(args.Length() == 3) { - callback = Local::Cast(args[2]); - } - - // Unpack the package - Local package = args[0]->ToString(); - package_str = (char *)calloc(package->Utf8Length() + 1, sizeof(char)); - package->WriteUtf8(package_str); - - // Unpack the user name - Local username = args[1]->ToString(); - username_str = (char *)calloc(username->Utf8Length() + 1, sizeof(char)); - username->WriteUtf8(username_str); - - // If we have a password - if(args.Length() == 3 || args.Length() == 4 || args.Length() == 5) { - Local password = args[2]->ToString(); - password_str = (char *)calloc(password->Utf8Length() + 1, sizeof(char)); - password->WriteUtf8(password_str); - } - - // If we have a domain - if((args.Length() == 4 || args.Length() == 5) && args[3]->IsString()) { - Local domain = args[3]->ToString(); - domain_str = (char *)calloc(domain->Utf8Length() + 1, sizeof(char)); - domain->WriteUtf8(domain_str); - } - - // Create reference object - Local security_credentials_value = constructor_template->GetFunction()->NewInstance(); - // Unwrap object - SecurityCredentials *security_credentials = ObjectWrap::Unwrap(security_credentials_value); - - // Allocate call structure - SecurityCredentialCall *call = (SecurityCredentialCall *)calloc(1, sizeof(SecurityCredentialCall)); - call->domain_str = domain_str; - call->package_str = package_str; - call->password_str = password_str; - call->username_str = username_str; - call->credentials = security_credentials; - - // Let's allocate some space - Worker *worker = new Worker(); - worker->error = false; - worker->request.data = worker; - worker->callback = Persistent::New(callback); - worker->parameters = call; - worker->execute = _authSSPIAquire; - worker->mapper = _map_authSSPIAquire; - - // Schedule the worker with lib_uv - uv_queue_work(uv_default_loop(), &worker->request, SecurityCredentials::Process, (uv_after_work_cb)SecurityCredentials::After); - - // Return the undefined value - return scope.Close(Undefined()); -} - -void SecurityCredentials::Initialize(Handle target) { - // Grab the scope of the call from Node - HandleScope scope; - // Define a new function template - Local t = FunctionTemplate::New(New); - constructor_template = Persistent::New(t); - constructor_template->InstanceTemplate()->SetInternalFieldCount(1); - constructor_template->SetClassName(String::NewSymbol("SecurityCredentials")); - - // Class methods - NODE_SET_METHOD(constructor_template, "aquireSync", AquireSync); - NODE_SET_METHOD(constructor_template, "aquire", Aquire); - - // Set the class on the target module - target->Set(String::NewSymbol("SecurityCredentials"), constructor_template->GetFunction()); - - // Attempt to load the security.dll library - load_library(); -} - -static LPSTR DisplaySECError(DWORD ErrCode) { - LPSTR pszName = NULL; // WinError.h - - switch(ErrCode) { - case SEC_E_BUFFER_TOO_SMALL: - pszName = "SEC_E_BUFFER_TOO_SMALL - The message buffer is too small. Used with the Digest SSP."; - break; - - case SEC_E_CRYPTO_SYSTEM_INVALID: - pszName = "SEC_E_CRYPTO_SYSTEM_INVALID - The cipher chosen for the security context is not supported. Used with the Digest SSP."; - break; - case SEC_E_INCOMPLETE_MESSAGE: - pszName = "SEC_E_INCOMPLETE_MESSAGE - The data in the input buffer is incomplete. The application needs to read more data from the server and call DecryptMessage (General) again."; - break; - - case SEC_E_INVALID_HANDLE: - pszName = "SEC_E_INVALID_HANDLE - A context handle that is not valid was specified in the phContext parameter. Used with the Digest and Schannel SSPs."; - break; - - case SEC_E_INVALID_TOKEN: - pszName = "SEC_E_INVALID_TOKEN - The buffers are of the wrong type or no buffer of type SECBUFFER_DATA was found. Used with the Schannel SSP."; - break; - - case SEC_E_MESSAGE_ALTERED: - pszName = "SEC_E_MESSAGE_ALTERED - The message has been altered. Used with the Digest and Schannel SSPs."; - break; - - case SEC_E_OUT_OF_SEQUENCE: - pszName = "SEC_E_OUT_OF_SEQUENCE - The message was not received in the correct sequence."; - break; - - case SEC_E_QOP_NOT_SUPPORTED: - pszName = "SEC_E_QOP_NOT_SUPPORTED - Neither confidentiality nor integrity are supported by the security context. Used with the Digest SSP."; - break; - - case SEC_I_CONTEXT_EXPIRED: - pszName = "SEC_I_CONTEXT_EXPIRED - The message sender has finished using the connection and has initiated a shutdown."; - break; - - case SEC_I_RENEGOTIATE: - pszName = "SEC_I_RENEGOTIATE - The remote party requires a new handshake sequence or the application has just initiated a shutdown."; - break; - - case SEC_E_ENCRYPT_FAILURE: - pszName = "SEC_E_ENCRYPT_FAILURE - The specified data could not be encrypted."; - break; - - case SEC_E_DECRYPT_FAILURE: - pszName = "SEC_E_DECRYPT_FAILURE - The specified data could not be decrypted."; - break; - case -1: - pszName = "Failed to load security.dll library"; - break; - - } - - return pszName; -} - -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// UV Lib callbacks -// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -void SecurityCredentials::Process(uv_work_t* work_req) { - // Grab the worker - Worker *worker = static_cast(work_req->data); - // Execute the worker code - worker->execute(worker); -} - -void SecurityCredentials::After(uv_work_t* work_req) { - // Grab the scope of the call from Node - v8::HandleScope scope; - - // Get the worker reference - Worker *worker = static_cast(work_req->data); - - // If we have an error - if(worker->error) { - v8::Local err = v8::Exception::Error(v8::String::New(worker->error_message)); - Local obj = err->ToObject(); - obj->Set(NODE_PSYMBOL("code"), Int32::New(worker->error_code)); - v8::Local args[2] = { err, v8::Local::New(v8::Null()) }; - // Execute the error - v8::TryCatch try_catch; - // Call the callback - worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); - // If we have an exception handle it as a fatalexception - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - } else { - // // Map the data - v8::Handle result = worker->mapper(worker); - // Set up the callback with a null first - v8::Handle args[2] = { v8::Local::New(v8::Null()), result}; - // Wrap the callback function call in a TryCatch so that we can call - // node's FatalException afterwards. This makes it possible to catch - // the exception from JavaScript land using the - // process.on('uncaughtException') event. - v8::TryCatch try_catch; - // Call the callback - worker->callback->Call(v8::Context::GetCurrent()->Global(), ARRAY_SIZE(args), args); - // If we have an exception handle it as a fatalexception - if (try_catch.HasCaught()) { - node::FatalException(try_catch); - } - } - - // Clean up the memory - worker->callback.Dispose(); - delete worker; -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h deleted file mode 100644 index 10b3eda..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef SECURITY_CREDENTIALS_H -#define SECURITY_CREDENTIALS_H - -#include -#include -#include - -#define SECURITY_WIN32 1 - -#include -#include -#include -#include "../worker.h" -#include - -extern "C" { - #include "../kerberos_sspi.h" -} - -// SEC_WINNT_AUTH_IDENTITY makes it unusually hard -// to compile for both Unicode and ansi, so I use this macro: -#ifdef _UNICODE -#define USTR(str) (str) -#else -#define USTR(str) ((unsigned char*)(str)) -#endif - -using namespace v8; -using namespace node; - -class SecurityCredentials : public ObjectWrap { - public: - SecurityCredentials(); - ~SecurityCredentials(); - - // Pointer to context object - SEC_WINNT_AUTH_IDENTITY m_Identity; - // credentials - CredHandle m_Credentials; - // Expiry time for ticket - TimeStamp Expiration; - - // Has instance check - static inline bool HasInstance(Handle val) { - if (!val->IsObject()) return false; - Local obj = val->ToObject(); - return constructor_template->HasInstance(obj); - }; - - // Functions available from V8 - static void Initialize(Handle target); - static Handle AquireSync(const Arguments &args); - static Handle Aquire(const Arguments &args); - - // Constructor used for creating new Long objects from C++ - static Persistent constructor_template; - - private: - // Create a new instance - static Handle New(const Arguments &args); - // Handles the uv calls - static void Process(uv_work_t* work_req); - // Called after work is done - static void After(uv_work_t* work_req); -}; - -#endif \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js deleted file mode 100644 index 4215c92..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/win32/wrappers/security_credentials.js +++ /dev/null @@ -1,22 +0,0 @@ -var SecurityCredentialsNative = require('../../../build/Release/kerberos').SecurityCredentials; - -// Add simple kebros helper -SecurityCredentialsNative.aquire_kerberos = function(username, password, domain, callback) { - if(typeof password == 'function') { - callback = password; - password = null; - } else if(typeof domain == 'function') { - callback = domain; - domain = null; - } - - // We are going to use the async version - if(typeof callback == 'function') { - return SecurityCredentialsNative.aquire('Kerberos', username, password, domain, callback); - } else { - return SecurityCredentialsNative.aquireSync('Kerberos', username, password, domain); - } -} - -// Export the modified class -exports.SecurityCredentials = SecurityCredentialsNative; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc deleted file mode 100644 index e7a472f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include "worker.h" - -Worker::Worker() { -} - -Worker::~Worker() { -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h deleted file mode 100644 index c5f86f5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/lib/worker.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef WORKER_H_ -#define WORKER_H_ - -#include -#include -#include - -using namespace node; -using namespace v8; - -class Worker { - public: - Worker(); - virtual ~Worker(); - - // libuv's request struct. - uv_work_t request; - // Callback - v8::Persistent callback; - // // Arguments - // v8::Persistent arguments; - // Parameters - void *parameters; - // Results - void *return_value; - // Did we raise an error - bool error; - // The error message - char *error_message; - // Error code if not message - int error_code; - // Any return code - int return_code; - // Method we are going to fire - void (*execute)(Worker *worker); - Handle (*mapper)(Worker *worker); -}; - -#endif // WORKER_H_ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json deleted file mode 100644 index 46e144b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "kerberos", - "version": "0.0.2", - "description": "Kerberos library for Node.js", - "main": "index.js", - "scripts": { - "install": "(node-gyp rebuild 2> builderror.log) || (exit 0)", - "test": "nodeunit ./test" - }, - "repository": { - "type": "git", - "url": "https://github.com/christkv/kerberos.git" - }, - "keywords": [ - "kerberos", - "security", - "authentication" - ], - "devDependencies": { - "nodeunit": "latest" - }, - "author": { - "name": "Christian Amor Kvalheim" - }, - "license": "Apache 2.0", - "readmeFilename": "README.md", - "gitHead": "bb01d4fe322e022999aca19da564e7d9db59a8ed", - "readme": "kerberos\n========\n\nKerberos library for node.js", - "bugs": { - "url": "https://github.com/christkv/kerberos/issues" - }, - "_id": "kerberos@0.0.2", - "_from": "kerberos@latest" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js deleted file mode 100644 index a06c5fd..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_tests.js +++ /dev/null @@ -1,34 +0,0 @@ -exports.setUp = function(callback) { - callback(); -} - -exports.tearDown = function(callback) { - callback(); -} - -exports['Simple initialize of Kerberos object'] = function(test) { - var Kerberos = require('../lib/kerberos.js').Kerberos; - var kerberos = new Kerberos(); - // console.dir(kerberos) - - // Initiate kerberos client - kerberos.authGSSClientInit('mongodb@kdc.10gen.me', Kerberos.GSS_C_MUTUAL_FLAG, function(err, context) { - console.log("===================================== authGSSClientInit") - test.equal(null, err); - test.ok(context != null && typeof context == 'object'); - // console.log("===================================== authGSSClientInit") - console.dir(err) - console.dir(context) - // console.dir(typeof result) - - // Perform the first step - kerberos.authGSSClientStep(context, function(err, result) { - console.log("===================================== authGSSClientStep") - console.dir(err) - console.dir(result) - console.dir(context) - - test.done(); - }); - }); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js deleted file mode 100644 index d2f7046..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/kerberos_win32_test.js +++ /dev/null @@ -1,19 +0,0 @@ -exports.setUp = function(callback) { - callback(); -} - -exports.tearDown = function(callback) { - callback(); -} - -exports['Simple initialize of Kerberos win32 object'] = function(test) { - var KerberosNative = require('../build/Release/kerberos').Kerberos; - // console.dir(KerberosNative) - var kerberos = new KerberosNative(); - console.log("=========================================== 0") - console.dir(kerberos.acquireAlternateCredentials("dev1@10GEN.ME", "a")); - console.log("=========================================== 1") - console.dir(kerberos.prepareOutboundPackage("mongodb/kdc.10gen.com")); - console.log("=========================================== 2") - test.done(); -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js deleted file mode 100644 index 3531b6b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_descriptor_tests.js +++ /dev/null @@ -1,41 +0,0 @@ -exports.setUp = function(callback) { - callback(); -} - -exports.tearDown = function(callback) { - callback(); -} - -exports['Initialize a security Buffer Descriptor'] = function(test) { - var SecurityBufferDescriptor = require('../../lib/sspi.js').SecurityBufferDescriptor - SecurityBuffer = require('../../lib/sspi.js').SecurityBuffer; - - // Create descriptor with single Buffer - var securityDescriptor = new SecurityBufferDescriptor(100); - try { - // Fail to work due to no valid Security Buffer - securityDescriptor = new SecurityBufferDescriptor(["hello"]); - test.ok(false); - } catch(err){} - - // Should Correctly construct SecurityBuffer - var buffer = new SecurityBuffer(SecurityBuffer.DATA, 100); - securityDescriptor = new SecurityBufferDescriptor([buffer]); - // Should correctly return a buffer - var result = securityDescriptor.toBuffer(); - test.equal(100, result.length); - - // Should Correctly construct SecurityBuffer - var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); - securityDescriptor = new SecurityBufferDescriptor([buffer]); - var result = securityDescriptor.toBuffer(); - test.equal("hello world", result.toString()); - - // Test passing in more than one Buffer - var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); - var buffer2 = new SecurityBuffer(SecurityBuffer.STREAM, new Buffer("adam and eve")); - securityDescriptor = new SecurityBufferDescriptor([buffer, buffer2]); - var result = securityDescriptor.toBuffer(); - test.equal("hello worldadam and eve", result.toString()); - test.done(); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js deleted file mode 100644 index b52b959..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_buffer_tests.js +++ /dev/null @@ -1,22 +0,0 @@ -exports.setUp = function(callback) { - callback(); -} - -exports.tearDown = function(callback) { - callback(); -} - -exports['Initialize a security Buffer'] = function(test) { - var SecurityBuffer = require('../../lib/sspi.js').SecurityBuffer; - // Create empty buffer - var securityBuffer = new SecurityBuffer(SecurityBuffer.DATA, 100); - var buffer = securityBuffer.toBuffer(); - test.equal(100, buffer.length); - - // Access data passed in - var allocated_buffer = new Buffer(256); - securityBuffer = new SecurityBuffer(SecurityBuffer.DATA, allocated_buffer); - buffer = securityBuffer.toBuffer(); - test.deepEqual(allocated_buffer, buffer); - test.done(); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js deleted file mode 100644 index 7758180..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos/test/win32/security_credentials_tests.js +++ /dev/null @@ -1,55 +0,0 @@ -exports.setUp = function(callback) { - callback(); -} - -exports.tearDown = function(callback) { - callback(); -} - -exports['Initialize a set of security credentials'] = function(test) { - var SecurityCredentials = require('../../lib/sspi.js').SecurityCredentials; - - // Aquire some credentials - try { - var credentials = SecurityCredentials.aquire('Kerberos', 'dev1@10GEN.ME', 'a'); - } catch(err) { - console.dir(err) - test.ok(false); - } - - - - // console.dir(SecurityCredentials); - - // var SecurityBufferDescriptor = require('../../lib/sspi.js').SecurityBufferDescriptor - // SecurityBuffer = require('../../lib/sspi.js').SecurityBuffer; - - // // Create descriptor with single Buffer - // var securityDescriptor = new SecurityBufferDescriptor(100); - // try { - // // Fail to work due to no valid Security Buffer - // securityDescriptor = new SecurityBufferDescriptor(["hello"]); - // test.ok(false); - // } catch(err){} - - // // Should Correctly construct SecurityBuffer - // var buffer = new SecurityBuffer(SecurityBuffer.DATA, 100); - // securityDescriptor = new SecurityBufferDescriptor([buffer]); - // // Should correctly return a buffer - // var result = securityDescriptor.toBuffer(); - // test.equal(100, result.length); - - // // Should Correctly construct SecurityBuffer - // var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); - // securityDescriptor = new SecurityBufferDescriptor([buffer]); - // var result = securityDescriptor.toBuffer(); - // test.equal("hello world", result.toString()); - - // // Test passing in more than one Buffer - // var buffer = new SecurityBuffer(SecurityBuffer.DATA, new Buffer("hello world")); - // var buffer2 = new SecurityBuffer(SecurityBuffer.STREAM, new Buffer("adam and eve")); - // securityDescriptor = new SecurityBufferDescriptor([buffer, buffer2]); - // var result = securityDescriptor.toBuffer(); - // test.equal("hello worldadam and eve", result.toString()); - test.done(); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json deleted file mode 100644 index afee553..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mongodb/package.json +++ /dev/null @@ -1,228 +0,0 @@ -{ - "name": "mongodb", - "description": "A node.js driver for MongoDB", - "keywords": [ - "mongodb", - "mongo", - "driver", - "db" - ], - "version": "1.3.5", - "author": { - "name": "Christian Amor Kvalheim", - "email": "christkv@gmail.com" - }, - "contributors": [ - { - "name": "Aaron Heckmann" - }, - { - "name": "Christoph Pojer" - }, - { - "name": "Pau Ramon Revilla" - }, - { - "name": "Nathan White" - }, - { - "name": "Emmerman" - }, - { - "name": "Seth LaForge" - }, - { - "name": "Boris Filipov" - }, - { - "name": "Stefan Schärmeli" - }, - { - "name": "Tedde Lundgren" - }, - { - "name": "renctan" - }, - { - "name": "Sergey Ukustov" - }, - { - "name": "Ciaran Jessup" - }, - { - "name": "kuno" - }, - { - "name": "srimonti" - }, - { - "name": "Erik Abele" - }, - { - "name": "Pratik Daga" - }, - { - "name": "Slobodan Utvic" - }, - { - "name": "Kristina Chodorow" - }, - { - "name": "Yonathan Randolph" - }, - { - "name": "Brian Noguchi" - }, - { - "name": "Sam Epstein" - }, - { - "name": "James Harrison Fisher" - }, - { - "name": "Vladimir Dronnikov" - }, - { - "name": "Ben Hockey" - }, - { - "name": "Henrik Johansson" - }, - { - "name": "Simon Weare" - }, - { - "name": "Alex Gorbatchev" - }, - { - "name": "Shimon Doodkin" - }, - { - "name": "Kyle Mueller" - }, - { - "name": "Eran Hammer-Lahav" - }, - { - "name": "Marcin Ciszak" - }, - { - "name": "François de Metz" - }, - { - "name": "Vinay Pulim" - }, - { - "name": "nstielau" - }, - { - "name": "Adam Wiggins" - }, - { - "name": "entrinzikyl" - }, - { - "name": "Jeremy Selier" - }, - { - "name": "Ian Millington" - }, - { - "name": "Public Keating" - }, - { - "name": "andrewjstone" - }, - { - "name": "Christopher Stott" - }, - { - "name": "Corey Jewett" - }, - { - "name": "brettkiefer" - }, - { - "name": "Rob Holland" - }, - { - "name": "Senmiao Liu" - }, - { - "name": "heroic" - }, - { - "name": "gitfy" - }, - { - "name": "Andrew Stone" - }, - { - "name": "John Le Drew" - }, - { - "name": "Lucasfilm Singapore" - }, - { - "name": "Roman Shtylman" - }, - { - "name": "Matt Self" - } - ], - "repository": { - "type": "git", - "url": "http://github.com/mongodb/node-mongodb-native.git" - }, - "bugs": { - "url": "http://github.com/mongodb/node-mongodb-native/issues" - }, - "dependencies": { - "bson": "0.1.8", - "kerberos": "latest" - }, - "devDependencies": { - "dox": "0.2.0", - "uglify-js": "1.2.5", - "ejs": "0.6.1", - "request": "2.12.0", - "nodeunit": "0.7.4", - "markdown": "0.3.1", - "gleak": "0.2.3", - "step": "0.0.5", - "async": "0.1.22", - "integra": "latest", - "optimist": "latest" - }, - "optionalDependencies": { - "kerberos": "latest" - }, - "config": { - "native": false - }, - "main": "./lib/mongodb/index", - "homepage": "http://mongodb.github.com/node-mongodb-native/", - "directories": { - "lib": "./lib/mongodb" - }, - "engines": { - "node": ">=0.6.19" - }, - "scripts": { - "test": "make test_functional" - }, - "licenses": [ - { - "type": "Apache License, Version 2.0", - "url": "http://www.apache.org/licenses/LICENSE-2.0" - } - ], - "readme": "Up to date documentation\n========================\n\n[Documentation](http://mongodb.github.com/node-mongodb-native/)\n\nInstall\n=======\n\nTo install the most recent release from npm, run:\n\n npm install mongodb\n\nThat may give you a warning telling you that bugs['web'] should be bugs['url'], it would be safe to ignore it (this has been fixed in the development version)\n\nTo install the latest from the repository, run::\n\n npm install path/to/node-mongodb-native\n\nCommunity\n=========\nCheck out the google group [node-mongodb-native](http://groups.google.com/group/node-mongodb-native) for questions/answers from users of the driver.\n\nLive Examples\n============\n\n\nIntroduction\n============\n\nThis is a node.js driver for MongoDB. It's a port (or close to a port) of the library for ruby at http://github.com/mongodb/mongo-ruby-driver/.\n\nA simple example of inserting a document.\n\n```javascript\n var client = new Db('test', new Server(\"127.0.0.1\", 27017, {}), {w: 1}),\n test = function (err, collection) {\n collection.insert({a:2}, function(err, docs) {\n\n collection.count(function(err, count) {\n test.assertEquals(1, count);\n });\n\n // Locate all the entries using find\n collection.find().toArray(function(err, results) {\n test.assertEquals(1, results.length);\n test.assertTrue(results[0].a === 2);\n\n // Let's close the db\n client.close();\n });\n });\n };\n\n client.open(function(err, p_client) {\n client.collection('test_insert', test);\n });\n```\n\nData types\n==========\n\nTo store and retrieve the non-JSON MongoDb primitives ([ObjectID](http://www.mongodb.org/display/DOCS/Object+IDs), Long, Binary, [Timestamp](http://www.mongodb.org/display/DOCS/Timestamp+data+type), [DBRef](http://www.mongodb.org/display/DOCS/Database+References#DatabaseReferences-DBRef), Code).\n\nIn particular, every document has a unique `_id` which can be almost any type, and by default a 12-byte ObjectID is created. ObjectIDs can be represented as 24-digit hexadecimal strings, but you must convert the string back into an ObjectID before you can use it in the database. For example:\n\n```javascript\n // Get the objectID type\n var ObjectID = require('mongodb').ObjectID;\n\n var idString = '4e4e1638c85e808431000003';\n collection.findOne({_id: new ObjectID(idString)}, console.log) // ok\n collection.findOne({_id: idString}, console.log) // wrong! callback gets undefined\n```\n\nHere are the constructors the non-Javascript BSON primitive types:\n\n```javascript\n // Fetch the library\n var mongo = require('mongodb');\n // Create new instances of BSON types\n new mongo.Long(numberString)\n new mongo.ObjectID(hexString)\n new mongo.Timestamp() // the actual unique number is generated on insert.\n new mongo.DBRef(collectionName, id, dbName)\n new mongo.Binary(buffer) // takes a string or Buffer\n new mongo.Code(code, [context])\n new mongo.Symbol(string)\n new mongo.MinKey()\n new mongo.MaxKey()\n new mongo.Double(number)\t// Force double storage\n```\n\nThe C/C++ bson parser/serializer\n--------------------------------\n\nIf you are running a version of this library has the C/C++ parser compiled, to enable the driver to use the C/C++ bson parser pass it the option native_parser:true like below\n\n```javascript\n // using native_parser:\n var client = new Db('integration_tests_20',\n new Server(\"127.0.0.1\", 27017),\n {native_parser:true});\n```\n\nThe C++ parser uses the js objects both for serialization and deserialization.\n\nGitHub information\n==================\n\nThe source code is available at http://github.com/mongodb/node-mongodb-native.\nYou can either clone the repository or download a tarball of the latest release.\n\nOnce you have the source you can test the driver by running\n\n $ make test\n\nin the main directory. You will need to have a mongo instance running on localhost for the integration tests to pass.\n\nExamples\n========\n\nFor examples look in the examples/ directory. You can execute the examples using node.\n\n $ cd examples\n $ node queries.js\n\nGridStore\n=========\n\nThe GridStore class allows for storage of binary files in mongoDB using the mongoDB defined files and chunks collection definition.\n\nFor more information have a look at [Gridstore](https://github.com/mongodb/node-mongodb-native/blob/master/docs/gridfs.md)\n\nReplicasets\n===========\nFor more information about how to connect to a replicaset have a look at [Replicasets](https://github.com/mongodb/node-mongodb-native/blob/master/docs/replicaset.md)\n\nPrimary Key Factories\n---------------------\n\nDefining your own primary key factory allows you to generate your own series of id's\n(this could f.ex be to use something like ISBN numbers). The generated the id needs to be a 12 byte long \"string\".\n\nSimple example below\n\n```javascript\n // Custom factory (need to provide a 12 byte array);\n CustomPKFactory = function() {}\n CustomPKFactory.prototype = new Object();\n CustomPKFactory.createPk = function() {\n return new ObjectID(\"aaaaaaaaaaaa\");\n }\n\n var p_client = new Db('integration_tests_20', new Server(\"127.0.0.1\", 27017, {}), {'pk':CustomPKFactory});\n p_client.open(function(err, p_client) {\n p_client.dropDatabase(function(err, done) {\n p_client.createCollection('test_custom_key', function(err, collection) {\n collection.insert({'a':1}, function(err, docs) {\n collection.find({'_id':new ObjectID(\"aaaaaaaaaaaa\")}, function(err, cursor) {\n cursor.toArray(function(err, items) {\n test.assertEquals(1, items.length);\n\n // Let's close the db\n p_client.close();\n });\n });\n });\n });\n });\n });\n```\n\nStrict mode\n-----------\n\nEach database has an optional strict mode. If it is set then asking for a collection\nthat does not exist will return an Error object in the callback. Similarly if you\nattempt to create a collection that already exists. Strict is provided for convenience.\n\n```javascript\n var error_client = new Db('integration_tests_', new Server(\"127.0.0.1\", 27017, {auto_reconnect: false}), {strict:true});\n test.assertEquals(true, error_client.strict);\n\n error_client.open(function(err, error_client) {\n error_client.collection('does-not-exist', function(err, collection) {\n test.assertTrue(err instanceof Error);\n test.assertEquals(\"Collection does-not-exist does not exist. Currently in strict mode.\", err.message);\n });\n\n error_client.createCollection('test_strict_access_collection', function(err, collection) {\n error_client.collection('test_strict_access_collection', function(err, collection) {\n test.assertTrue(collection instanceof Collection);\n // Let's close the db\n error_client.close();\n });\n });\n });\n```\n\nDocumentation\n=============\n\nIf this document doesn't answer your questions, see the source of\n[Collection](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js)\nor [Cursor](https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/cursor.js),\nor the documentation at MongoDB for query and update formats.\n\nFind\n----\n\nThe find method is actually a factory method to create\nCursor objects. A Cursor lazily uses the connection the first time\nyou call `nextObject`, `each`, or `toArray`.\n\nThe basic operation on a cursor is the `nextObject` method\nthat fetches the next matching document from the database. The convenience\nmethods `each` and `toArray` call `nextObject` until the cursor is exhausted.\n\nSignatures:\n\n```javascript\n var cursor = collection.find(query, [fields], options);\n cursor.sort(fields).limit(n).skip(m).\n\n cursor.nextObject(function(err, doc) {});\n cursor.each(function(err, doc) {});\n cursor.toArray(function(err, docs) {});\n\n cursor.rewind() // reset the cursor to its initial state.\n```\n\nUseful chainable methods of cursor. These can optionally be options of `find` instead of method calls:\n\n* `.limit(n).skip(m)` to control paging.\n* `.sort(fields)` Order by the given fields. There are several equivalent syntaxes:\n * `.sort({field1: -1, field2: 1})` descending by field1, then ascending by field2.\n * `.sort([['field1', 'desc'], ['field2', 'asc']])` same as above\n * `.sort([['field1', 'desc'], 'field2'])` same as above\n * `.sort('field1')` ascending by field1\n\nOther options of `find`:\n\n* `fields` the fields to fetch (to avoid transferring the entire document)\n* `tailable` if true, makes the cursor [tailable](http://www.mongodb.org/display/DOCS/Tailable+Cursors).\n* `batchSize` The number of the subset of results to request the database\nto return for every request. This should initially be greater than 1 otherwise\nthe database will automatically close the cursor. The batch size can be set to 1\nwith `batchSize(n, function(err){})` after performing the initial query to the database.\n* `hint` See [Optimization: hint](http://www.mongodb.org/display/DOCS/Optimization#Optimization-Hint).\n* `explain` turns this into an explain query. You can also call\n`explain()` on any cursor to fetch the explanation.\n* `snapshot` prevents documents that are updated while the query is active\nfrom being returned multiple times. See more\n[details about query snapshots](http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database).\n* `timeout` if false, asks MongoDb not to time out this cursor after an\ninactivity period.\n\n\nFor information on how to create queries, see the\n[MongoDB section on querying](http://www.mongodb.org/display/DOCS/Querying).\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.find({}, {limit:10}).toArray(function(err, docs) {\n console.dir(docs);\n });\n });\n```\n\nInsert\n------\n\nSignature:\n\n```javascript\n collection.insert(docs, options, [callback]);\n```\n\nwhere `docs` can be a single document or an array of documents.\n\nUseful options:\n\n* `safe:true` Should always set if you have a callback.\n\nSee also: [MongoDB docs for insert](http://www.mongodb.org/display/DOCS/Inserting).\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {w: 1}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.insert({hello: 'world'}, {safe:true},\n function(err, objects) {\n if (err) console.warn(err.message);\n if (err && err.message.indexOf('E11000 ') !== -1) {\n // this _id was already inserted in the database\n }\n });\n });\n```\n\nNote that there's no reason to pass a callback to the insert or update commands\nunless you use the `safe:true` option. If you don't specify `safe:true`, then\nyour callback will be called immediately.\n\nUpdate; update and insert (upsert)\n----------------------------------\n\nThe update operation will update the first document that matches your query\n(or all documents that match if you use `multi:true`).\nIf `safe:true`, `upsert` is not set, and no documents match, your callback will return 0 documents updated.\n\nSee the [MongoDB docs](http://www.mongodb.org/display/DOCS/Updating) for\nthe modifier (`$inc`, `$set`, `$push`, etc.) formats.\n\nSignature:\n\n```javascript\n collection.update(criteria, objNew, options, [callback]);\n```\n\nUseful options:\n\n* `safe:true` Should always set if you have a callback.\n* `multi:true` If set, all matching documents are updated, not just the first.\n* `upsert:true` Atomically inserts the document if no documents matched.\n\nExample for `update`:\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {w: 1}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.update({hi: 'here'}, {$set: {hi: 'there'}}, {safe:true},\n function(err) {\n if (err) console.warn(err.message);\n else console.log('successfully updated');\n });\n });\n```\n\nFind and modify\n---------------\n\n`findAndModify` is like `update`, but it also gives the updated document to\nyour callback. But there are a few key differences between findAndModify and\nupdate:\n\n 1. The signatures differ.\n 2. You can only findAndModify a single item, not multiple items.\n\nSignature:\n\n```javascript\n collection.findAndModify(query, sort, update, options, callback)\n```\n\nThe sort parameter is used to specify which object to operate on, if more than\none document matches. It takes the same format as the cursor sort (see\nConnection.find above).\n\nSee the\n[MongoDB docs for findAndModify](http://www.mongodb.org/display/DOCS/findAndModify+Command)\nfor more details.\n\nUseful options:\n\n* `remove:true` set to a true to remove the object before returning\n* `new:true` set to true if you want to return the modified object rather than the original. Ignored for remove.\n* `upsert:true` Atomically inserts the document if no documents matched.\n\nExample for `findAndModify`:\n\n```javascript\n var mongodb = require('mongodb');\n var server = new mongodb.Server(\"127.0.0.1\", 27017, {});\n new mongodb.Db('test', server, {w: 1}).open(function (error, client) {\n if (error) throw error;\n var collection = new mongodb.Collection(client, 'test_collection');\n collection.findAndModify({hello: 'world'}, [['_id','asc']], {$set: {hi: 'there'}}, {},\n function(err, object) {\n if (err) console.warn(err.message);\n else console.dir(object); // undefined if no matching object exists.\n });\n });\n```\n\nSave\n----\n\nThe `save` method is a shorthand for upsert if the document contains an\n`_id`, or an insert if there is no `_id`.\n\nSponsors\n========\nJust as Felix Geisendörfer I'm also working on the driver for my own startup and this driver is a big project that also benefits other companies who are using MongoDB.\n\nIf your company could benefit from a even better-engineered node.js mongodb driver I would appreciate any type of sponsorship you may be able to provide. All the sponsors will get a lifetime display in this readme, priority support and help on problems and votes on the roadmap decisions for the driver. If you are interested contact me on [christkv AT g m a i l.com](mailto:christkv@gmail.com) for details.\n\nAnd I'm very thankful for code contributions. If you are interested in working on features please contact me so we can discuss API design and testing.\n\nRelease Notes\n=============\n\nSee HISTORY\n\nCredits\n=======\n\n1. [10gen](http://github.com/mongodb/mongo-ruby-driver/)\n2. [Google Closure Library](http://code.google.com/closure/library/)\n3. [Jonas Raoni Soares Silva](http://jsfromhell.com/classes/binary-parser)\n\nContributors\n============\n\nAaron Heckmann, Christoph Pojer, Pau Ramon Revilla, Nathan White, Emmerman, Seth LaForge, Boris Filipov, Stefan Schärmeli, Tedde Lundgren, renctan, Sergey Ukustov, Ciaran Jessup, kuno, srimonti, Erik Abele, Pratik Daga, Slobodan Utvic, Kristina Chodorow, Yonathan Randolph, Brian Noguchi, Sam Epstein, James Harrison Fisher, Vladimir Dronnikov, Ben Hockey, Henrik Johansson, Simon Weare, Alex Gorbatchev, Shimon Doodkin, Kyle Mueller, Eran Hammer-Lahav, Marcin Ciszak, François de Metz, Vinay Pulim, nstielau, Adam Wiggins, entrinzikyl, Jeremy Selier, Ian Millington, Public Keating, andrewjstone, Christopher Stott, Corey Jewett, brettkiefer, Rob Holland, Senmiao Liu, heroic, gitfy\n\nLicense\n=======\n\n Copyright 2009 - 2012 Christian Amor Kvalheim.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n", - "readmeFilename": "Readme.md", - "_id": "mongodb@1.3.5", - "dist": { - "shasum": "5d592ae4e12301769a065d6693d56fa21564d5aa" - }, - "_from": "mongodb@1.3.5", - "_resolved": "https://registry.npmjs.org/mongodb/-/mongodb-1.3.5.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore deleted file mode 100644 index be106ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -*.sw* -node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml deleted file mode 100644 index 09c230f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md deleted file mode 100644 index 4fbf338..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/History.md +++ /dev/null @@ -1,16 +0,0 @@ - -0.1.1 / 2012-12-21 -================== - - * added; map support - -0.1.0 / 2012-12-13 -================== - - * added; set('array.property', val, object) support - * added; get('array.property', object) support - -0.0.1 / 2012-11-03 -================== - - * initial release diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE deleted file mode 100644 index 38c529d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 [Aaron Heckmann](aaron.heckmann+github@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile deleted file mode 100644 index b0bb081..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/Makefile +++ /dev/null @@ -1,5 +0,0 @@ - -test: - @node_modules/mocha/bin/mocha -A $(T) - -.PHONY: test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md deleted file mode 100644 index 9831dd0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/README.md +++ /dev/null @@ -1,278 +0,0 @@ -#mpath - -{G,S}et javascript object values using MongoDB-like path notation. - -###Getting - -```js -var mpath = require('mpath'); - -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.get('comments.1.title', obj) // 'exciting!' -``` - -`mpath.get` supports array property notation as well. - -```js -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.get('comments.title', obj) // ['funny', 'exciting!'] -``` - -Array property and indexing syntax, when used together, are very powerful. - -```js -var obj = { - array: [ - { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} - , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }} - , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} - , { o: { array: [{x: null }] }} - , { o: { array: [{y: 3 }] }} - , { o: { array: [3, 0, null] }} - , { o: { name: 'ha' }} - ]; -} - -var found = mpath.get('array.o.array.x.b.1', obj); - -console.log(found); // prints.. - - [ [6, undefined] - , [2, undefined, undefined] - , [null, 1] - , [null] - , [undefined] - , [undefined, undefined, undefined] - , undefined - ] - -``` - -#####Field selection rules: - -The following rules are iteratively applied to each `segment` in the passed `path`. For example: - -```js -var path = 'one.two.14'; // path -'one' // segment 0 -'two' // segment 1 -14 // segment 2 -``` - -- 1) when value of the segment parent is not an array, return the value of `parent.segment` -- 2) when value of the segment parent is an array - - a) if the segment is an integer, replace the parent array with the value at `parent[segment]` - - b) if not an integer, keep the array but replace each array `item` with the value returned from calling `get(remainingSegments, item)` or undefined if falsey. - -#####Maps - -`mpath.get` also accepts an optional `map` argument which receives each individual found value. The value returned from the `map` function will be used in the original found values place. - -```js -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.get('comments.title', obj, function (val) { - return 'funny' == val - ? 'amusing' - : val; -}); -// ['amusing', 'exciting!'] -``` - -###Setting - -```js -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.set('comments.1.title', 'hilarious', obj) -console.log(obj.comments[1].title) // 'hilarious' -``` - -`mpath.set` supports the same array property notation as `mpath.get`. - -```js -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.set('comments.title', ['hilarious', 'fruity'], obj); - -console.log(obj); // prints.. - - { comments: [ - { title: 'hilarious' }, - { title: 'fruity' } - ]} -``` - -Array property and indexing syntax can be used together also when setting. - -```js -var obj = { - array: [ - { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} - , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }} - , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} - , { o: { array: [{x: null }] }} - , { o: { array: [{y: 3 }] }} - , { o: { array: [3, 0, null] }} - , { o: { name: 'ha' }} - ] -} - -mpath.set('array.1.o', 'this was changed', obj); - -console.log(require('util').inspect(obj, false, 1000)); // prints.. - -{ - array: [ - { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} - , { o: 'this was changed' } - , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} - , { o: { array: [{x: null }] }} - , { o: { array: [{y: 3 }] }} - , { o: { array: [3, 0, null] }} - , { o: { name: 'ha' }} - ]; -} - -mpath.set('array.o.array.x', 'this was changed too', obj); - -console.log(require('util').inspect(obj, false, 1000)); // prints.. - -{ - array: [ - { o: { array: [{x: 'this was changed too'}, { y: 10, x: 'this was changed too'} ] }} - , { o: 'this was changed' } - , { o: { array: [{x: 'this was changed too'}, { x: 'this was changed too'}] }} - , { o: { array: [{x: 'this was changed too'}] }} - , { o: { array: [{x: 'this was changed too', y: 3 }] }} - , { o: { array: [3, 0, null] }} - , { o: { name: 'ha' }} - ]; -} -``` - -####Setting arrays - -By default, setting a property within an array to another array results in each element of the new array being set to the item in the destination array at the matching index. An example is helpful. - -```js -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.set('comments.title', ['hilarious', 'fruity'], obj); - -console.log(obj); // prints.. - - { comments: [ - { title: 'hilarious' }, - { title: 'fruity' } - ]} -``` - -If we do not desire this destructuring-like assignment behavior we may instead specify the `$` operator in the path being set to force the array to be copied directly. - -```js -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.set('comments.$.title', ['hilarious', 'fruity'], obj); - -console.log(obj); // prints.. - - { comments: [ - { title: ['hilarious', 'fruity'] }, - { title: ['hilarious', 'fruity'] } - ]} -``` - -####Field assignment rules - -The rules utilized mirror those used on `mpath.get`, meaning we can take values returned from `mpath.get`, update them, and reassign them using `mpath.set`. Note that setting nested arrays of arrays can get unweildy quickly. Check out the [tests](https://github.com/aheckmann/mpath/blob/master/test/index.js) for more extreme examples. - -#####Maps - -`mpath.set` also accepts an optional `map` argument which receives each individual value being set. The value returned from the `map` function will be used in the original values place. - -```js -var obj = { - comments: [ - { title: 'funny' }, - { title: 'exciting!' } - ] -} - -mpath.set('comments.title', ['hilarious', 'fruity'], obj, function (val) { - return val.length; -}); - -console.log(obj); // prints.. - - { comments: [ - { title: 9 }, - { title: 6 } - ]} -``` - -### Custom object types - -Sometimes you may want to enact the same functionality on custom object types that store all their real data internally, say for an ODM type object. No fear, `mpath` has you covered. Simply pass the name of the property being used to store the internal data and it will be traversed instead: - -```js -var mpath = require('mpath'); - -var obj = { - comments: [ - { title: 'exciting!', _doc: { title: 'great!' }} - ] -} - -mpath.get('comments.0.title', obj, '_doc') // 'great!' -mpath.set('comments.0.title', 'nov 3rd', obj, '_doc') -mpath.get('comments.0.title', obj, '_doc') // 'nov 3rd' -mpath.get('comments.0.title', obj) // 'exciting' -``` - -When used with a `map`, the `map` argument comes last. - -```js -mpath.get(path, obj, '_doc', map); -mpath.set(path, val, obj, '_doc', map); -``` - -[LICENSE](https://github.com/aheckmann/mpath/blob/master/LICENSE) - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js deleted file mode 100644 index f7b65dd..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = exports = require('./lib'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js deleted file mode 100644 index 24e1e83..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/lib/index.js +++ /dev/null @@ -1,183 +0,0 @@ - -/** - * Returns the value of object `o` at the given `path`. - * - * ####Example: - * - * var obj = { - * comments: [ - * { title: 'exciting!', _doc: { title: 'great!' }} - * , { title: 'number dos' } - * ] - * } - * - * mpath.get('comments.0.title', o) // 'exciting!' - * mpath.get('comments.0.title', o, '_doc') // 'great!' - * mpath.get('comments.title', o) // ['exciting!', 'number dos'] - * - * // summary - * mpath.get(path, o) - * mpath.get(path, o, special) - * mpath.get(path, o, map) - * mpath.get(path, o, special, map) - * - * @param {String} path - * @param {Object} o - * @param {String} [special] When this property name is present on any object in the path, walking will continue on the value of this property. - * @param {Function} [map] Optional function which receives each individual found value. The value returned from `map` is used in the original values place. - */ - -exports.get = function (path, o, special, map) { - if ('function' == typeof special) { - map = special; - special = undefined; - } - - map || (map = K); - - var parts = 'string' == typeof path - ? path.split('.') - : path - - if (!Array.isArray(parts)) { - throw new TypeError('Invalid `path`. Must be either string or array'); - } - - var obj = o - , part; - - for (var i = 0; i < parts.length; ++i) { - part = parts[i]; - - if (Array.isArray(obj) && !/^\d+$/.test(part)) { - // reading a property from the array items - var paths = parts.slice(i); - - return obj.map(function (item) { - return item - ? exports.get(paths, item, special, map) - : map(undefined); - }); - } - - obj = special && obj[special] - ? obj[special][part] - : obj[part]; - - if (!obj) return map(obj); - } - - return map(obj); -} - -/** - * Sets the `val` at the given `path` of object `o`. - * - * @param {String} path - * @param {Anything} val - * @param {Object} o - * @param {String} [special] When this property name is present on any object in the path, walking will continue on the value of this property. - * @param {Function} [map] Optional function which is passed each individual value before setting it. The value returned from `map` is used in the original values place. - - */ - -exports.set = function (path, val, o, special, map, _copying) { - if ('function' == typeof special) { - map = special; - special = undefined; - } - - map || (map = K); - - var parts = 'string' == typeof path - ? path.split('.') - : path - - if (!Array.isArray(parts)) { - throw new TypeError('Invalid `path`. Must be either string or array'); - } - - if (null == o) return; - - // the existance of $ in a path tells us if the user desires - // the copying of an array instead of setting each value of - // the array to the one by one to matching positions of the - // current array. - var copy = _copying || /\$/.test(path) - , obj = o - , part - - for (var i = 0, len = parts.length - 1; i < len; ++i) { - part = parts[i]; - - if ('$' == part) { - if (i == len - 1) { - break; - } else { - continue; - } - } - - if (Array.isArray(obj) && !/^\d+$/.test(part)) { - var paths = parts.slice(i); - if (!copy && Array.isArray(val)) { - for (var j = 0; j < obj.length && j < val.length; ++j) { - // assignment of single values of array - exports.set(paths, val[j], obj[j], special, map, copy); - } - } else { - for (var j = 0; j < obj.length; ++j) { - // assignment of entire value - exports.set(paths, val, obj[j], special, map, copy); - } - } - return; - } - - obj = special && obj[special] - ? obj[special][part] - : obj[part]; - - if (!obj) return; - } - - // process the last property of the path - - part = parts[len]; - - // use the special property if exists - if (special && obj[special]) { - obj = obj[special]; - } - - // set the value on the last branch - if (Array.isArray(obj) && !/^\d+$/.test(part)) { - if (!copy && Array.isArray(val)) { - for (var item, j = 0; j < obj.length && j < val.length; ++j) { - item = obj[j]; - if (item) { - if (item[special]) item = item[special]; - item[part] = map(val[j]); - } - } - } else { - for (var j = 0; j < obj.length; ++j) { - item = obj[j]; - if (item) { - if (item[special]) item = item[special]; - item[part] = map(val); - } - } - } - } else { - obj[part] = map(val); - } -} - -/*! - * Returns the value passed to it. - */ - -function K (v) { - return v; -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json deleted file mode 100644 index 2e88fbd..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "mpath", - "version": "0.1.1", - "description": "{G,S}et object values using MongoDB path notation", - "main": "index.js", - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/aheckmann/mpath.git" - }, - "keywords": [ - "mongodb", - "path", - "get", - "set" - ], - "author": { - "name": "Aaron Heckmann", - "email": "aaron.heckmann+github@gmail.com" - }, - "license": "MIT", - "devDependencies": { - "mocha": "1.6.0" - }, - "readme": "#mpath\n\n{G,S}et javascript object values using MongoDB-like path notation.\n\n###Getting\n\n```js\nvar mpath = require('mpath');\n\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.get('comments.1.title', obj) // 'exciting!'\n```\n\n`mpath.get` supports array property notation as well.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.get('comments.title', obj) // ['funny', 'exciting!']\n```\n\nArray property and indexing syntax, when used together, are very powerful.\n\n```js\nvar obj = {\n array: [\n { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }}\n , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }}\n , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }}\n , { o: { array: [{x: null }] }}\n , { o: { array: [{y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ];\n}\n\nvar found = mpath.get('array.o.array.x.b.1', obj);\n\nconsole.log(found); // prints..\n\n [ [6, undefined]\n , [2, undefined, undefined]\n , [null, 1]\n , [null]\n , [undefined]\n , [undefined, undefined, undefined]\n , undefined\n ]\n\n```\n\n#####Field selection rules:\n\nThe following rules are iteratively applied to each `segment` in the passed `path`. For example:\n\n```js\nvar path = 'one.two.14'; // path\n'one' // segment 0\n'two' // segment 1\n14 // segment 2\n```\n\n- 1) when value of the segment parent is not an array, return the value of `parent.segment`\n- 2) when value of the segment parent is an array\n - a) if the segment is an integer, replace the parent array with the value at `parent[segment]`\n - b) if not an integer, keep the array but replace each array `item` with the value returned from calling `get(remainingSegments, item)` or undefined if falsey.\n\n#####Maps\n\n`mpath.get` also accepts an optional `map` argument which receives each individual found value. The value returned from the `map` function will be used in the original found values place.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.get('comments.title', obj, function (val) {\n return 'funny' == val\n ? 'amusing'\n : val;\n});\n// ['amusing', 'exciting!']\n```\n\n###Setting\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.1.title', 'hilarious', obj)\nconsole.log(obj.comments[1].title) // 'hilarious'\n```\n\n`mpath.set` supports the same array property notation as `mpath.get`.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.title', ['hilarious', 'fruity'], obj);\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: 'hilarious' },\n { title: 'fruity' }\n ]}\n```\n\nArray property and indexing syntax can be used together also when setting.\n\n```js\nvar obj = {\n array: [\n { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }}\n , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: 'Turkey Day' }] }}\n , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }}\n , { o: { array: [{x: null }] }}\n , { o: { array: [{y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ]\n}\n\nmpath.set('array.1.o', 'this was changed', obj);\n\nconsole.log(require('util').inspect(obj, false, 1000)); // prints..\n\n{\n array: [\n { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }}\n , { o: 'this was changed' }\n , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }}\n , { o: { array: [{x: null }] }}\n , { o: { array: [{y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ];\n}\n\nmpath.set('array.o.array.x', 'this was changed too', obj);\n\nconsole.log(require('util').inspect(obj, false, 1000)); // prints..\n\n{\n array: [\n { o: { array: [{x: 'this was changed too'}, { y: 10, x: 'this was changed too'} ] }}\n , { o: 'this was changed' }\n , { o: { array: [{x: 'this was changed too'}, { x: 'this was changed too'}] }}\n , { o: { array: [{x: 'this was changed too'}] }}\n , { o: { array: [{x: 'this was changed too', y: 3 }] }}\n , { o: { array: [3, 0, null] }}\n , { o: { name: 'ha' }}\n ];\n}\n```\n\n####Setting arrays\n\nBy default, setting a property within an array to another array results in each element of the new array being set to the item in the destination array at the matching index. An example is helpful.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.title', ['hilarious', 'fruity'], obj);\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: 'hilarious' },\n { title: 'fruity' }\n ]}\n```\n\nIf we do not desire this destructuring-like assignment behavior we may instead specify the `$` operator in the path being set to force the array to be copied directly.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.$.title', ['hilarious', 'fruity'], obj);\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: ['hilarious', 'fruity'] },\n { title: ['hilarious', 'fruity'] }\n ]}\n```\n\n####Field assignment rules\n\nThe rules utilized mirror those used on `mpath.get`, meaning we can take values returned from `mpath.get`, update them, and reassign them using `mpath.set`. Note that setting nested arrays of arrays can get unweildy quickly. Check out the [tests](https://github.com/aheckmann/mpath/blob/master/test/index.js) for more extreme examples.\n\n#####Maps\n\n`mpath.set` also accepts an optional `map` argument which receives each individual value being set. The value returned from the `map` function will be used in the original values place.\n\n```js\nvar obj = {\n comments: [\n { title: 'funny' },\n { title: 'exciting!' }\n ]\n}\n\nmpath.set('comments.title', ['hilarious', 'fruity'], obj, function (val) {\n return val.length;\n});\n\nconsole.log(obj); // prints..\n\n { comments: [\n { title: 9 },\n { title: 6 }\n ]}\n```\n\n### Custom object types\n\nSometimes you may want to enact the same functionality on custom object types that store all their real data internally, say for an ODM type object. No fear, `mpath` has you covered. Simply pass the name of the property being used to store the internal data and it will be traversed instead:\n\n```js\nvar mpath = require('mpath');\n\nvar obj = {\n comments: [\n { title: 'exciting!', _doc: { title: 'great!' }}\n ]\n}\n\nmpath.get('comments.0.title', obj, '_doc') // 'great!'\nmpath.set('comments.0.title', 'nov 3rd', obj, '_doc')\nmpath.get('comments.0.title', obj, '_doc') // 'nov 3rd'\nmpath.get('comments.0.title', obj) // 'exciting'\n```\n\nWhen used with a `map`, the `map` argument comes last.\n\n```js\nmpath.get(path, obj, '_doc', map);\nmpath.set(path, val, obj, '_doc', map);\n```\n\n[LICENSE](https://github.com/aheckmann/mpath/blob/master/LICENSE)\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/aheckmann/mpath/issues" - }, - "_id": "mpath@0.1.1", - "dist": { - "shasum": "7ab5054e3b040997ab8aa88fddc1ee3925ee8f64" - }, - "_from": "mpath@0.1.1", - "_resolved": "https://registry.npmjs.org/mpath/-/mpath-0.1.1.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js deleted file mode 100644 index 98e119a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpath/test/index.js +++ /dev/null @@ -1,1630 +0,0 @@ - -/** - * Test dependencies. - */ - -var mpath = require('../') -var assert = require('assert') - -/** - * logging helper - */ - -function log (o) { - console.log(); - console.log(require('util').inspect(o, false, 1000)); -} - -/** - * special path for override tests - */ - -var special = '_doc'; - -/** - * Tests - */ - -describe('mpath', function(){ - - /** - * test doc creator - */ - - function doc () { - var o = { first: { second: { third: [3,{ name: 'aaron' }, 9] }}}; - o.comments = [ - { name: 'one' } - , { name: 'two', _doc: { name: '2' }} - , { name: 'three' - , comments: [{},{ comments: [{val: 'twoo'}]}] - , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}] }} - ]; - o.name = 'jiro'; - o.array = [ - { o: { array: [{x: {b: [4,6,8]}}, { y: 10} ] }} - , { o: { array: [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: {b: 'hi'}}] }} - , { o: { array: [{x: {b: null }}, { x: { b: [null, 1]}}] }} - , { o: { array: [{x: null }] }} - , { o: { array: [{y: 3 }] }} - , { o: { array: [3, 0, null] }} - , { o: { name: 'ha' }} - ]; - o.arr = [ - { arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true } - ] - return o; - } - - describe('get', function(){ - var o = doc(); - - it('`path` must be a string or array', function(done){ - assert.throws(function () { - mpath.get({}, o); - }, /Must be either string or array/); - assert.throws(function () { - mpath.get(4, o); - }, /Must be either string or array/); - assert.throws(function () { - mpath.get(function(){}, o); - }, /Must be either string or array/); - assert.throws(function () { - mpath.get(/asdf/, o); - }, /Must be either string or array/); - assert.throws(function () { - mpath.get(Math, o); - }, /Must be either string or array/); - assert.throws(function () { - mpath.get(Buffer, o); - }, /Must be either string or array/); - assert.doesNotThrow(function () { - mpath.get('string', o); - }); - assert.doesNotThrow(function () { - mpath.get([], o); - }); - done(); - }) - - describe('without `special`', function(){ - it('works', function(done){ - assert.equal('jiro', mpath.get('name', o)); - - assert.deepEqual( - { second: { third: [3,{ name: 'aaron' }, 9] }} - , mpath.get('first', o) - ); - - assert.deepEqual( - { third: [3,{ name: 'aaron' }, 9] } - , mpath.get('first.second', o) - ); - - assert.deepEqual( - [3,{ name: 'aaron' }, 9] - , mpath.get('first.second.third', o) - ); - - assert.deepEqual( - 3 - , mpath.get('first.second.third.0', o) - ); - - assert.deepEqual( - 9 - , mpath.get('first.second.third.2', o) - ); - - assert.deepEqual( - { name: 'aaron' } - , mpath.get('first.second.third.1', o) - ); - - assert.deepEqual( - 'aaron' - , mpath.get('first.second.third.1.name', o) - ); - - assert.deepEqual([ - { name: 'one' } - , { name: 'two', _doc: { name: '2' }} - , { name: 'three' - , comments: [{},{ comments: [{val: 'twoo'}]}] - , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}]}}], - mpath.get('comments', o)); - - assert.deepEqual({ name: 'one' }, mpath.get('comments.0', o)); - assert.deepEqual('one', mpath.get('comments.0.name', o)); - assert.deepEqual('two', mpath.get('comments.1.name', o)); - assert.deepEqual('three', mpath.get('comments.2.name', o)); - - assert.deepEqual([{},{ comments: [{val: 'twoo'}]}] - , mpath.get('comments.2.comments', o)); - - assert.deepEqual({ comments: [{val: 'twoo'}]} - , mpath.get('comments.2.comments.1', o)); - - assert.deepEqual('twoo', mpath.get('comments.2.comments.1.comments.0.val', o)); - - done(); - }) - - it('handles array.property dot-notation', function(done){ - assert.deepEqual( - ['one', 'two', 'three'] - , mpath.get('comments.name', o) - ); - done(); - }) - - it('handles array.array notation', function(done){ - assert.deepEqual( - [undefined, undefined, [{}, {comments:[{val:'twoo'}]}]] - , mpath.get('comments.comments', o) - ); - done(); - }) - - it('handles prop.prop.prop.arrayProperty notation', function(done){ - assert.deepEqual( - [undefined, 'aaron', undefined] - , mpath.get('first.second.third.name', o) - ); - assert.deepEqual( - [1, 'aaron', 1] - , mpath.get('first.second.third.name', o, function (v) { - return undefined === v ? 1 : v; - }) - ); - done(); - }) - - it('handles array.prop.array', function(done){ - assert.deepEqual( - [ [{x: {b: [4,6,8]}}, { y: 10} ] - , [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: {b: 'hi'}}] - , [{x: {b: null }}, { x: { b: [null, 1]}}] - , [{x: null }] - , [{y: 3 }] - , [3, 0, null] - , undefined - ] - , mpath.get('array.o.array', o) - ); - done(); - }) - - it('handles array.prop.array.index', function(done){ - assert.deepEqual( - [ {x: {b: [4,6,8]}} - , {x: {b: [1,2,3]}} - , {x: {b: null }} - , {x: null } - , {y: 3 } - , 3 - , undefined - ] - , mpath.get('array.o.array.0', o) - ); - done(); - }) - - it('handles array.prop.array.index.prop', function(done){ - assert.deepEqual( - [ {b: [4,6,8]} - , {b: [1,2,3]} - , {b: null } - , null - , undefined - , undefined - , undefined - ] - , mpath.get('array.o.array.0.x', o) - ); - done(); - }) - - it('handles array.prop.array.prop', function(done){ - assert.deepEqual( - [ [undefined, 10 ] - , [undefined, undefined, undefined] - , [undefined, undefined] - , [undefined] - , [3] - , [undefined, undefined, undefined] - , undefined - ] - , mpath.get('array.o.array.y', o) - ); - assert.deepEqual( - [ [{b: [4,6,8]}, undefined] - , [{b: [1,2,3]}, {z: 10 }, {b: 'hi'}] - , [{b: null }, { b: [null, 1]}] - , [null] - , [undefined] - , [undefined, undefined, undefined] - , undefined - ] - , mpath.get('array.o.array.x', o) - ); - done(); - }) - - it('handles array.prop.array.prop.prop', function(done){ - assert.deepEqual( - [ [[4,6,8], undefined] - , [[1,2,3], undefined, 'hi'] - , [null, [null, 1]] - , [null] - , [undefined] - , [undefined, undefined, undefined] - , undefined - ] - , mpath.get('array.o.array.x.b', o) - ); - done(); - }) - - it('handles array.prop.array.prop.prop.index', function(done){ - assert.deepEqual( - [ [6, undefined] - , [2, undefined, 'i'] // undocumented feature (string indexing) - , [null, 1] - , [null] - , [undefined] - , [undefined, undefined, undefined] - , undefined - ] - , mpath.get('array.o.array.x.b.1', o) - ); - assert.deepEqual( - [ [6, 0] - , [2, 0, 'i'] // undocumented feature (string indexing) - , [null, 1] - , [null] - , [0] - , [0, 0, 0] - , 0 - ] - , mpath.get('array.o.array.x.b.1', o, function (v) { - return undefined === v ? 0 : v; - }) - ); - done(); - }) - - it('handles array.index.prop.prop', function(done){ - assert.deepEqual( - [{x: {b: [1,2,3]}}, { x: {z: 10 }}, { x: {b: 'hi'}}] - , mpath.get('array.1.o.array', o) - ); - assert.deepEqual( - ['hi','hi','hi'] - , mpath.get('array.1.o.array', o, function (v) { - if (Array.isArray(v)) { - return v.map(function (val) { - return 'hi'; - }) - } - return v; - }) - ); - done(); - }) - - it('handles array.array.index', function(done){ - assert.deepEqual( - [{ a: { c: 48 }}, undefined] - , mpath.get('arr.arr.1', o) - ); - assert.deepEqual( - ['woot', undefined] - , mpath.get('arr.arr.1', o, function (v) { - if (v && v.a && v.a.c) return 'woot'; - return v; - }) - ); - done(); - }) - - it('handles array.array.index.prop', function(done){ - assert.deepEqual( - [{ c: 48 }, 'woot'] - , mpath.get('arr.arr.1.a', o, function (v) { - if (undefined === v) return 'woot'; - return v; - }) - ); - assert.deepEqual( - [{ c: 48 }, undefined] - , mpath.get('arr.arr.1.a', o) - ); - mpath.set('arr.arr.1.a', [{c:49},undefined], o) - assert.deepEqual( - [{ c: 49 }, undefined] - , mpath.get('arr.arr.1.a', o) - ); - mpath.set('arr.arr.1.a', [{c:48},undefined], o) - done(); - }) - - it('handles array.array.index.prop.prop', function(done){ - assert.deepEqual( - [48, undefined] - , mpath.get('arr.arr.1.a.c', o) - ); - assert.deepEqual( - [48, 'woot'] - , mpath.get('arr.arr.1.a.c', o, function (v) { - if (undefined === v) return 'woot'; - return v; - }) - ); - done(); - }) - - }) - - describe('with `special`', function(){ - it('works', function(done){ - assert.equal('jiro', mpath.get('name', o, special)); - - assert.deepEqual( - { second: { third: [3,{ name: 'aaron' }, 9] }} - , mpath.get('first', o, special) - ); - - assert.deepEqual( - { third: [3,{ name: 'aaron' }, 9] } - , mpath.get('first.second', o, special) - ); - - assert.deepEqual( - [3,{ name: 'aaron' }, 9] - , mpath.get('first.second.third', o, special) - ); - - assert.deepEqual( - 3 - , mpath.get('first.second.third.0', o, special) - ); - - assert.deepEqual( - 4 - , mpath.get('first.second.third.0', o, special, function (v) { - return 3 === v ? 4 : v; - }) - ); - - assert.deepEqual( - 9 - , mpath.get('first.second.third.2', o, special) - ); - - assert.deepEqual( - { name: 'aaron' } - , mpath.get('first.second.third.1', o, special) - ); - - assert.deepEqual( - 'aaron' - , mpath.get('first.second.third.1.name', o, special) - ); - - assert.deepEqual([ - { name: 'one' } - , { name: 'two', _doc: { name: '2' }} - , { name: 'three' - , comments: [{},{ comments: [{val: 'twoo'}]}] - , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}]}}], - mpath.get('comments', o, special)); - - assert.deepEqual({ name: 'one' }, mpath.get('comments.0', o, special)); - assert.deepEqual('one', mpath.get('comments.0.name', o, special)); - assert.deepEqual('2', mpath.get('comments.1.name', o, special)); - assert.deepEqual('3', mpath.get('comments.2.name', o, special)); - assert.deepEqual('nice', mpath.get('comments.2.name', o, special, function (v) { - return '3' === v ? 'nice' : v; - })); - - assert.deepEqual([{},{ _doc: { comments: [{ val: 2 }] }}] - , mpath.get('comments.2.comments', o, special)); - - assert.deepEqual({ _doc: { comments: [{val: 2}]}} - , mpath.get('comments.2.comments.1', o, special)); - - assert.deepEqual(2, mpath.get('comments.2.comments.1.comments.0.val', o, special)); - done(); - }) - - it('handles array.property dot-notation', function(done){ - assert.deepEqual( - ['one', '2', '3'] - , mpath.get('comments.name', o, special) - ); - assert.deepEqual( - ['one', 2, '3'] - , mpath.get('comments.name', o, special, function (v) { - return '2' === v ? 2 : v - }) - ); - done(); - }) - - it('handles array.array notation', function(done){ - assert.deepEqual( - [undefined, undefined, [{}, {_doc: { comments:[{val:2}]}}]] - , mpath.get('comments.comments', o, special) - ); - done(); - }) - - it('handles array.array.index.array', function(done){ - assert.deepEqual( - [undefined, undefined, [{val:2}]] - , mpath.get('comments.comments.1.comments', o, special) - ); - done(); - }) - - it('handles array.array.index.array.prop', function(done){ - assert.deepEqual( - [undefined, undefined, [2]] - , mpath.get('comments.comments.1.comments.val', o, special) - ); - assert.deepEqual( - ['nil', 'nil', [2]] - , mpath.get('comments.comments.1.comments.val', o, special, function (v) { - return undefined === v ? 'nil' : v; - }) - ); - done(); - }) - }) - - }) - - describe('set', function(){ - describe('without `special`', function(){ - var o = doc(); - - it('works', function(done){ - mpath.set('name', 'a new val', o, function (v) { - return 'a new val' === v ? 'changed' : v; - }); - assert.deepEqual('changed', o.name); - - mpath.set('name', 'changed', o); - assert.deepEqual('changed', o.name); - - mpath.set('first.second.third', [1,{name:'x'},9], o); - assert.deepEqual([1,{name:'x'},9], o.first.second.third); - - mpath.set('first.second.third.1.name', 'y', o) - assert.deepEqual([1,{name:'y'},9], o.first.second.third); - - mpath.set('comments.1.name', 'ttwwoo', o); - assert.deepEqual({ name: 'ttwwoo', _doc: { name: '2' }}, o.comments[1]); - - mpath.set('comments.2.comments.1.comments.0.expand', 'added', o); - assert.deepEqual( - { val: 'twoo', expand: 'added'} - , o.comments[2].comments[1].comments[0]); - - mpath.set('comments.2.comments.1.comments.2', 'added', o); - assert.equal(3, o.comments[2].comments[1].comments.length); - assert.deepEqual( - { val: 'twoo', expand: 'added'} - , o.comments[2].comments[1].comments[0]); - assert.deepEqual( - undefined - , o.comments[2].comments[1].comments[1]); - assert.deepEqual( - 'added' - , o.comments[2].comments[1].comments[2]); - - done(); - }) - - describe('array.path', function(){ - describe('with single non-array value', function(){ - it('works', function(done){ - mpath.set('arr.yep', false, o, function (v) { - return false === v ? true: v; - }); - assert.deepEqual([ - { yep: true, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true } - ], o.arr); - - mpath.set('arr.yep', false, o); - - assert.deepEqual([ - { yep: false, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: false } - ], o.arr); - - done(); - }) - }) - describe('with array of values', function(){ - it('that are equal in length', function(done){ - mpath.set('arr.yep', ['one',2], o, function (v) { - return 'one' === v ? 1 : v; - }); - assert.deepEqual([ - { yep: 1, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 2 } - ], o.arr); - mpath.set('arr.yep', ['one',2], o); - - assert.deepEqual([ - { yep: 'one', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 2 } - ], o.arr); - - done(); - }) - - it('that is less than length', function(done){ - mpath.set('arr.yep', [47], o, function (v) { - return 47 === v ? 4 : v; - }); - assert.deepEqual([ - { yep: 4, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 2 } - ], o.arr); - - mpath.set('arr.yep', [47], o); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 2 } - ], o.arr); - - done(); - }) - - it('that is greater than length', function(done){ - mpath.set('arr.yep', [5,6,7], o, function (v) { - return 5 === v ? 'five' : v; - }); - assert.deepEqual([ - { yep: 'five', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 6 } - ], o.arr); - - mpath.set('arr.yep', [5,6,7], o); - assert.deepEqual([ - { yep: 5, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 6 } - ], o.arr); - - done(); - }) - }) - }) - - describe('array.$.path', function(){ - describe('with single non-array value', function(){ - it('copies the value to each item in array', function(done){ - mpath.set('arr.$.yep', {xtra: 'double good'}, o, function (v) { - return v && v.xtra ? 'hi' : v; - }); - assert.deepEqual([ - { yep: 'hi', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 'hi'} - ], o.arr); - - mpath.set('arr.$.yep', {xtra: 'double good'}, o); - assert.deepEqual([ - { yep: {xtra:'double good'}, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: {xtra:'double good'}} - ], o.arr); - - done(); - }) - }) - describe('with array of values', function(){ - it('copies the value to each item in array', function(done){ - mpath.set('arr.$.yep', [15], o, function (v) { - return v.length === 1 ? [] : v; - }); - assert.deepEqual([ - { yep: [], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: []} - ], o.arr); - - mpath.set('arr.$.yep', [15], o); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: [15]} - ], o.arr); - - done(); - }) - }) - }) - - describe('array.index.path', function(){ - it('works', function(done){ - mpath.set('arr.1.yep', 0, o, function (v) { - return 0 === v ? 'zero' : v; - }); - assert.deepEqual([ - { yep: [15] , arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 'zero' } - ], o.arr); - - mpath.set('arr.1.yep', 0, o); - assert.deepEqual([ - { yep: [15] , arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - }) - - describe('array.index.array.path', function(){ - it('with single value', function(done){ - mpath.set('arr.0.arr.e', 35, o, function (v) { - return 35 === v ? 3 : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 47 }, e: 3}, { a: { c: 48 }, e: 3}, { d: 'yep', e: 3 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.0.arr.e', 35, o); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 47 }, e: 35}, { a: { c: 48 }, e: 35}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.0.arr.e', ['a','b'], o, function (v) { - return 'a' === v ? 'x' : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 47 }, e: 'x'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.0.arr.e', ['a','b'], o); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 47 }, e: 'a'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - }) - - describe('array.index.array.path.path', function(){ - it('with single value', function(done){ - mpath.set('arr.0.arr.a.b', 36, o, function (v) { - return 36 === v ? 3 : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 3 }, e: 'a'}, { a: { c: 48, b: 3 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.0.arr.a.b', 36, o); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 36 }, e: 'a'}, { a: { c: 48, b: 36 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.0.arr.a.b', [1,2,3,4], o, function (v) { - return 2 === v ? 'two' : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 1 }, e: 'a'}, { a: { c: 48, b: 'two' }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.0.arr.a.b', [1,2,3,4], o); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 1 }, e: 'a'}, { a: { c: 48, b: 2 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - }) - - describe('array.index.array.$.path.path', function(){ - it('with single value', function(done){ - mpath.set('arr.0.arr.$.a.b', '$', o, function (v) { - return '$' === v ? 'dolla billz' : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: 'dolla billz' }, e: 'a'}, { a: { c: 48, b: 'dolla billz' }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.0.arr.$.a.b', '$', o); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: '$' }, e: 'a'}, { a: { c: 48, b: '$' }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.0.arr.$.a.b', [1], o, function (v) { - return Array.isArray(v) ? {} : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: {} }, e: 'a'}, { a: { c: 48, b: {} }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.0.arr.$.a.b', [1], o); - assert.deepEqual([ - { yep: [15], arr: [{ a: { b: [1] }, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - }) - - describe('array.array.index.path', function(){ - it('with single value', function(done){ - mpath.set('arr.arr.0.a', 'single', o, function (v) { - return 'single' === v ? 'double' : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: 'double', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.arr.0.a', 'single', o); - assert.deepEqual([ - { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o, function (v) { - return 4 === v ? 3 : v; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: 3, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: false } - ], o.arr); - - mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o); - assert.deepEqual([ - { yep: [15], arr: [{ a: 4, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: false } - ], o.arr); - - done(); - }) - }) - - describe('array.array.$.index.path', function(){ - it('with single value', function(done){ - mpath.set('arr.arr.$.0.a', 'singles', o, function (v) { - return 0; - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: 0, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('arr.arr.$.0.a', 'singles', o); - assert.deepEqual([ - { yep: [15], arr: [{ a: 'singles', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - mpath.set('$.arr.arr.0.a', 'single', o); - assert.deepEqual([ - { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0 } - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o, function (v) { - return 'nope' - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: 'nope', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0} - ], o.arr); - - mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o); - assert.deepEqual([ - { yep: [15], arr: [{ a: [4,8,15,16,23,42], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0} - ], o.arr); - - mpath.set('arr.$.arr.0.a', [4,8,15,16,23,42,108], o); - assert.deepEqual([ - { yep: [15], arr: [{ a: [4,8,15,16,23,42,108], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0} - ], o.arr); - - done(); - }) - }) - - describe('array.array.path.index', function(){ - it('with single value', function(done){ - mpath.set('arr.arr.a.7', 47, o, function (v) { - return 1 - }); - assert.deepEqual([ - { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,1], e: 'a'}, { a: { c: 48, b: [1], '7': 1 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0} - ], o.arr); - - mpath.set('arr.arr.a.7', 47, o); - assert.deepEqual([ - { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,47], e: 'a'}, { a: { c: 48, b: [1], '7': 47 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0} - ], o.arr); - - done(); - }) - it('with array', function(done){ - o.arr[1].arr = [{ a: [] }, { a: [] }, { a: null }]; - mpath.set('arr.arr.a.7', [[null,46], [undefined, 'woot']], o); - - var a1 = []; - var a2 = []; - a1[7] = undefined; - a2[7] = 'woot'; - - assert.deepEqual([ - { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,null], e: 'a'}, { a: { c: 48, b: [1], '7': 46 }, e: 'b'}, { d: 'yep', e: 35 }] } - , { yep: 0, arr: [{a:a1},{a:a2},{a:null}] } - ], o.arr); - - done(); - }) - }) - - describe('handles array.array.path', function(){ - it('with single', function(done){ - o.arr[1].arr = [{},{}]; - assert.deepEqual([{},{}], o.arr[1].arr); - o.arr.push({ arr: 'something else' }); - o.arr.push({ arr: ['something else'] }); - o.arr.push({ arr: [[]] }); - o.arr.push({ arr: [5] }); - - var weird = []; - weird.e = 'xmas'; - - // test - mpath.set('arr.arr.e', 47, o, function (v) { - return 'xmas' - }); - assert.deepEqual([ - { yep: [15], arr: [ - { a: [4,8,15,16,23,42,108,null], e: 'xmas'} - , { a: { c: 48, b: [1], '7': 46 }, e: 'xmas'} - , { d: 'yep', e: 'xmas' } - ] - } - , { yep: 0, arr: [{e: 'xmas'}, {e:'xmas'}] } - , { arr: 'something else' } - , { arr: ['something else'] } - , { arr: [weird] } - , { arr: [5] } - ] - , o.arr); - - weird.e = 47; - - mpath.set('arr.arr.e', 47, o); - assert.deepEqual([ - { yep: [15], arr: [ - { a: [4,8,15,16,23,42,108,null], e: 47} - , { a: { c: 48, b: [1], '7': 46 }, e: 47} - , { d: 'yep', e: 47 } - ] - } - , { yep: 0, arr: [{e: 47}, {e:47}] } - , { arr: 'something else' } - , { arr: ['something else'] } - , { arr: [weird] } - , { arr: [5] } - ] - , o.arr); - - done(); - }) - it('with arrays', function(done){ - mpath.set('arr.arr.e', [[1,2,3],[4,5],null,[],[6], [7,8,9]], o, function (v) { - return 10; - }); - - var weird = []; - weird.e = 10; - - assert.deepEqual([ - { yep: [15], arr: [ - { a: [4,8,15,16,23,42,108,null], e: 10} - , { a: { c: 48, b: [1], '7': 46 }, e: 10} - , { d: 'yep', e: 10 } - ] - } - , { yep: 0, arr: [{e: 10}, {e:10}] } - , { arr: 'something else' } - , { arr: ['something else'] } - , { arr: [weird] } - , { arr: [5] } - ] - , o.arr); - - mpath.set('arr.arr.e', [[1,2,3],[4,5],null,[],[6], [7,8,9]], o); - - weird.e = 6; - - assert.deepEqual([ - { yep: [15], arr: [ - { a: [4,8,15,16,23,42,108,null], e: 1} - , { a: { c: 48, b: [1], '7': 46 }, e: 2} - , { d: 'yep', e: 3 } - ] - } - , { yep: 0, arr: [{e: 4}, {e:5}] } - , { arr: 'something else' } - , { arr: ['something else'] } - , { arr: [weird] } - , { arr: [5] } - ] - , o.arr); - - done(); - }) - }) - }) - - describe('with `special`', function(){ - var o = doc(); - - it('works', function(done){ - mpath.set('name', 'chan', o, special, function (v) { - return 'hi'; - }); - assert.deepEqual('hi', o.name); - - mpath.set('name', 'changer', o, special); - assert.deepEqual('changer', o.name); - - mpath.set('first.second.third', [1,{name:'y'},9], o, special); - assert.deepEqual([1,{name:'y'},9], o.first.second.third); - - mpath.set('first.second.third.1.name', 'z', o, special) - assert.deepEqual([1,{name:'z'},9], o.first.second.third); - - mpath.set('comments.1.name', 'ttwwoo', o, special); - assert.deepEqual({ name: 'two', _doc: { name: 'ttwwoo' }}, o.comments[1]); - - mpath.set('comments.2.comments.1.comments.0.expander', 'adder', o, special, function (v) { - return 'super' - }); - assert.deepEqual( - { val: 2, expander: 'super'} - , o.comments[2]._doc.comments[1]._doc.comments[0]); - - mpath.set('comments.2.comments.1.comments.0.expander', 'adder', o, special); - assert.deepEqual( - { val: 2, expander: 'adder'} - , o.comments[2]._doc.comments[1]._doc.comments[0]); - - mpath.set('comments.2.comments.1.comments.2', 'set', o, special); - assert.equal(3, o.comments[2]._doc.comments[1]._doc.comments.length); - assert.deepEqual( - { val: 2, expander: 'adder'} - , o.comments[2]._doc.comments[1]._doc.comments[0]); - assert.deepEqual( - undefined - , o.comments[2]._doc.comments[1]._doc.comments[1]); - assert.deepEqual( - 'set' - , o.comments[2]._doc.comments[1]._doc.comments[2]); - done(); - }) - - describe('array.path', function(){ - describe('with single non-array value', function(){ - it('works', function(done){ - o.arr[1]._doc = { special: true } - - mpath.set('arr.yep', false, o, special, function (v) { - return 'yes'; - }); - assert.deepEqual([ - { yep: 'yes', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true, _doc: { special: true, yep: 'yes'}} - ], o.arr); - - mpath.set('arr.yep', false, o, special); - assert.deepEqual([ - { yep: false, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true, _doc: { special: true, yep: false }} - ], o.arr); - - done(); - }) - }) - describe('with array of values', function(){ - it('that are equal in length', function(done){ - mpath.set('arr.yep', ['one',2], o, special, function (v) { - return 2 === v ? 20 : v; - }); - assert.deepEqual([ - { yep: 'one', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true, _doc: { special: true, yep: 20}} - ], o.arr); - - mpath.set('arr.yep', ['one',2], o, special); - assert.deepEqual([ - { yep: 'one', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true, _doc: { special: true, yep: 2}} - ], o.arr); - - done(); - }) - - it('that is less than length', function(done){ - mpath.set('arr.yep', [47], o, special, function (v) { - return 80; - }); - assert.deepEqual([ - { yep: 80, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true, _doc: { special: true, yep: 2}} - ], o.arr); - - mpath.set('arr.yep', [47], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - , { yep: true, _doc: { special: true, yep: 2}} - ], o.arr); - - // add _doc to first element - o.arr[0]._doc = { yep: 46, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } - - mpath.set('arr.yep', [20], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }], _doc: { yep: 20, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: 2}} - ], o.arr); - - done(); - }) - - it('that is greater than length', function(done){ - mpath.set('arr.yep', [5,6,7], o, special, function () { - return 'x'; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }], _doc: { yep: 'x', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: 'x'}} - ], o.arr); - - mpath.set('arr.yep', [5,6,7], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }], _doc: { yep: 5, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: 6}} - ], o.arr); - - done(); - }) - }) - }) - - describe('array.$.path', function(){ - describe('with single non-array value', function(){ - it('copies the value to each item in array', function(done){ - mpath.set('arr.$.yep', {xtra: 'double good'}, o, special, function (v) { - return 9; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: 9, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: 9}} - ], o.arr); - - mpath.set('arr.$.yep', {xtra: 'double good'}, o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: {xtra:'double good'}, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: {xtra:'double good'}}} - ], o.arr); - - done(); - }) - }) - describe('with array of values', function(){ - it('copies the value to each item in array', function(done){ - mpath.set('arr.$.yep', [15], o, special, function (v) { - return 'array' - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: 'array', arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: 'array'}} - ], o.arr); - - mpath.set('arr.$.yep', [15], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: [15]}} - ], o.arr); - - done(); - }) - }) - }) - - describe('array.index.path', function(){ - it('works', function(done){ - mpath.set('arr.1.yep', 0, o, special, function (v) { - return 1; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: 1}} - ], o.arr); - - mpath.set('arr.1.yep', 0, o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - }) - - describe('array.index.array.path', function(){ - it('with single value', function(done){ - mpath.set('arr.0.arr.e', 35, o, special, function (v) { - return 30 - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 30}, { a: { c: 48 }, e: 30}, { d: 'yep', e: 30 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.0.arr.e', 35, o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 35}, { a: { c: 48 }, e: 35}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.0.arr.e', ['a','b'], o, special, function (v) { - return 'a' === v ? 'A' : v; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 'A'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.0.arr.e', ['a','b'], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 47 }, e: 'a'}, { a: { c: 48 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - }) - - describe('array.index.array.path.path', function(){ - it('with single value', function(done){ - mpath.set('arr.0.arr.a.b', 36, o, special, function (v) { - return 20 - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 20 }, e: 'a'}, { a: { c: 48, b: 20 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.0.arr.a.b', 36, o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 36 }, e: 'a'}, { a: { c: 48, b: 36 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.0.arr.a.b', [1,2,3,4], o, special, function (v) { - return v*2; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 2 }, e: 'a'}, { a: { c: 48, b: 4 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.0.arr.a.b', [1,2,3,4], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 1 }, e: 'a'}, { a: { c: 48, b: 2 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - }) - - describe('array.index.array.$.path.path', function(){ - it('with single value', function(done){ - mpath.set('arr.0.arr.$.a.b', '$', o, special, function (v) { - return 'dollaz' - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: 'dollaz' }, e: 'a'}, { a: { c: 48, b: 'dollaz' }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.0.arr.$.a.b', '$', o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: '$' }, e: 'a'}, { a: { c: 48, b: '$' }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.0.arr.$.a.b', [1], o, special, function (v) { - return {}; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: {} }, e: 'a'}, { a: { c: 48, b: {} }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.0.arr.$.a.b', [1], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: { b: [1] }, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - }) - - describe('array.array.index.path', function(){ - it('with single value', function(done){ - mpath.set('arr.arr.0.a', 'single', o, special, function (v) { - return 88; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: 88, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.arr.0.a', 'single', o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o, special, function (v) { - return v*2; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: 8, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.arr.0.a', [4,8,15,16,23,42], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: 4, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - }) - - describe('array.array.$.index.path', function(){ - it('with single value', function(done){ - mpath.set('arr.arr.$.0.a', 'singles', o, special, function (v) { - return v.toUpperCase(); - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: 'SINGLES', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.arr.$.0.a', 'singles', o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: 'singles', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('$.arr.arr.0.a', 'single', o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: 'single', e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - it('with array', function(done){ - mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o, special, function (v) { - return Array - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: Array, e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.arr.$.0.a', [4,8,15,16,23,42], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.$.arr.0.a', [4,8,15,16,23,42,108], o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108], e: 'a'}, { a: { c: 48, b: [1] }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - }) - - describe('array.array.path.index', function(){ - it('with single value', function(done){ - mpath.set('arr.arr.a.7', 47, o, special, function (v) { - return Object; - }); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,Object], e: 'a'}, { a: { c: 48, b: [1], '7': Object }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.arr.a.7', 47, o, special); - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,47], e: 'a'}, { a: { c: 48, b: [1], '7': 47 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { special: true, yep: 0}} - ], o.arr); - - done(); - }) - it('with array', function(done){ - o.arr[1]._doc.arr = [{ a: [] }, { a: [] }, { a: null }]; - mpath.set('arr.arr.a.7', [[null,46], [undefined, 'woot']], o, special, function (v) { - return undefined === v ? 'nope' : v; - }); - - var a1 = []; - var a2 = []; - a1[7] = 'nope'; - a2[7] = 'woot'; - - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,null], e: 'a'}, { a: { c: 48, b: [1], '7': 46 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { arr: [{a:a1},{a:a2},{a:null}], special: true, yep: 0}} - ], o.arr); - - mpath.set('arr.arr.a.7', [[null,46], [undefined, 'woot']], o, special); - - a1[7] = undefined; - - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { yep: [15], arr: [{ a: [4,8,15,16,23,42,108,null], e: 'a'}, { a: { c: 48, b: [1], '7': 46 }, e: 'b'}, { d: 'yep', e: 35 }] } } - , { yep: true, _doc: { arr: [{a:a1},{a:a2},{a:null}], special: true, yep: 0}} - ], o.arr); - - done(); - }) - }) - - describe('handles array.array.path', function(){ - it('with single', function(done){ - o.arr[1]._doc.arr = [{},{}]; - assert.deepEqual([{},{}], o.arr[1]._doc.arr); - o.arr.push({ _doc: { arr: 'something else' }}); - o.arr.push({ _doc: { arr: ['something else'] }}); - o.arr.push({ _doc: { arr: [[]] }}); - o.arr.push({ _doc: { arr: [5] }}); - - // test - mpath.set('arr.arr.e', 47, o, special); - - var weird = []; - weird.e = 47; - - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { - yep: [15] - , arr: [ - { a: [4,8,15,16,23,42,108,null], e: 47} - , { a: { c: 48, b: [1], '7': 46 }, e: 47} - , { d: 'yep', e: 47 } - ] - } - } - , { yep: true - , _doc: { - arr: [ - {e:47} - , {e:47} - ] - , special: true - , yep: 0 - } - } - , { _doc: { arr: 'something else' }} - , { _doc: { arr: ['something else'] }} - , { _doc: { arr: [weird] }} - , { _doc: { arr: [5] }} - ] - , o.arr); - - done(); - }) - it('with arrays', function(done){ - mpath.set('arr.arr.e', [[1,2,3],[4,5],null,[],[6], [7,8,9]], o, special); - - var weird = []; - weird.e = 6; - - assert.deepEqual([ - { yep: 47, arr: [{ a: { b: 47 }}, { a: { c: 48 }}, { d: 'yep' }] - , _doc: { - yep: [15] - , arr: [ - { a: [4,8,15,16,23,42,108,null], e: 1} - , { a: { c: 48, b: [1], '7': 46 }, e: 2} - , { d: 'yep', e: 3 } - ] - } - } - , { yep: true - , _doc: { - arr: [ - {e:4} - , {e:5} - ] - , special: true - , yep: 0 - } - } - , { _doc: { arr: 'something else' }} - , { _doc: { arr: ['something else'] }} - , { _doc: { arr: [weird] }} - , { _doc: { arr: [5] }} - ] - , o.arr); - - done(); - }) - }) - - }) - - describe('get/set integration', function(){ - var o = doc(); - - it('works', function(done){ - var vals = mpath.get('array.o.array.x.b', o); - - vals[0][0][2] = 10; - vals[1][0][1] = 0; - vals[1][1] = 'Rambaldi'; - vals[1][2] = [12,14]; - vals[2] = [{changed:true}, [null, ['changed','to','array']]]; - - mpath.set('array.o.array.x.b', vals, o); - - var t = [ - { o: { array: [{x: {b: [4,6,10]}}, { y: 10} ] }} - , { o: { array: [{x: {b: [1,0,3]}}, { x: {b:'Rambaldi',z: 10 }}, { x: {b: [12,14]}}] }} - , { o: { array: [{x: {b: {changed:true}}}, { x: { b: [null, ['changed','to','array']]}}]}} - , { o: { array: [{x: null }] }} - , { o: { array: [{y: 3 }] }} - , { o: { array: [3, 0, null] }} - , { o: { name: 'ha' }} - ]; - assert.deepEqual(t, o.array); - done(); - }) - - it('array.prop', function(done){ - mpath.set('comments.name', ['this', 'was', 'changed'], o); - - assert.deepEqual([ - { name: 'this' } - , { name: 'was', _doc: { name: '2' }} - , { name: 'changed' - , comments: [{},{ comments: [{val: 'twoo'}]}] - , _doc: { name: '3', comments: [{},{ _doc: { comments: [{ val: 2 }] }}] }} - ], o.comments); - - mpath.set('comments.name', ['also', 'changed', 'this'], o, special); - - assert.deepEqual([ - { name: 'also' } - , { name: 'was', _doc: { name: 'changed' }} - , { name: 'changed' - , comments: [{},{ comments: [{val: 'twoo'}]}] - , _doc: { name: 'this', comments: [{},{ _doc: { comments: [{ val: 2 }] }}] }} - ], o.comments); - - done(); - }) - - }) - - describe('multiple $ use', function(){ - var o = doc(); - it('is ok', function(done){ - assert.doesNotThrow(function () { - mpath.set('arr.$.arr.$.a', 35, o); - }); - done(); - }) - }) - - it('ignores setting a nested path that doesnt exist', function(done){ - var o = doc(); - assert.doesNotThrow(function(){ - mpath.set('thing.that.is.new', 10, o); - }) - done(); - }) - }) - -}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore deleted file mode 100644 index be106ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -*.sw* -node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml deleted file mode 100644 index 09c230f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md deleted file mode 100644 index f157b69..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/History.md +++ /dev/null @@ -1,24 +0,0 @@ - -0.2.1 / 2013-02-09 -================== - - * fixed; conformancy with A+ 1.2 - -0.2.0 / 2013-01-09 -================== - - * added; .end() - * fixed; only catch handler executions - -0.1.0 / 2013-01-08 -================== - - * cleaned up API - * customizable event names - * docs - -0.0.1 / 2013-01-07 -================== - - * original release - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE deleted file mode 100644 index 38c529d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 [Aaron Heckmann](aaron.heckmann+github@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile deleted file mode 100644 index 717a796..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -TESTS = $(shell find test/ -name '*.test.js') - -test: - @make test-unit && echo "testing promises-A+ implementation ..." && make test-promises-A - -test-unit: - @./node_modules/.bin/mocha $(T) --async-only $(TESTS) - -test-promises-A: - @node test/promises-A.js - -.PHONY: test test-unit test-promises-A diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md deleted file mode 100644 index 7da2725..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/README.md +++ /dev/null @@ -1,200 +0,0 @@ -#mpromise -========== - -A [promises/A+](https://github.com/promises-aplus/promises-spec) conformant implementation, written for [mongoose](http://mongoosejs.com). - -## installation - -``` -$ npm install mpromise -``` - -## docs - -An `mpromise` can be in any of three states, pending, fulfilled (success), or rejected (error). Once it is either fulfilled or rejected it's state can no longer be changed. - -The exports object is the Promise constructor. - -```js -var Promise = require('mpromise'); -``` - -The constructor accepts an optional function which is executed when the promise is first resolved (either fulfilled or rejected). - -```js -var promise = new Promise(fn); -``` - -This is the same as passing the `fn` to `onResolve` directly. - -```js -var promise = new Promise; -promise.onResolve(function (err, args..) { - ... -}); -``` - -### Methods - -####fulfill - -Fulfilling a promise with values: - -```js -var promise = new Promise; -promise.fulfill(args...); -``` - -If the promise has already been fulfilled or rejected, no action is taken. - -####reject - -Rejecting a promise with a reason: - -```js -var promise = new Promise; -promise.reject(reason); -``` - -If the promise has already been fulfilled or rejected, no action is taken. - -####resolve - -Node.js callback style promise resolution `(err, args...)`: - -```js -var promise = new Promise; -promise.resolve([reason], [arg1, arg2, ...]); -``` - -If the promise has already been fulfilled or rejected, no action is taken. - -####onFulfill - -To register a function for execution when the promise is fulfilled, pass it to `onFulfill`. When executed it will receive the arguments passed to `fulfill()`. - -```js -var promise = new Promise; -promise.onFulfill(function (a, b) { - assert.equal(3, a + b); -}); -promise.fulfill(1, 2); -``` - -The function will only be called once when the promise is fulfilled, never when rejected. - -Registering a function with `onFulfill` after the promise has already been fulfilled results in the immediate execution of the function with the original arguments used to fulfill the promise. - -```js -var promise = new Promise; -promise.fulfill(" :D "); -promise.onFulfill(function (arg) { - console.log(arg); // logs " :D " -}) -``` - -####onReject - -To register a function for execution when the promise is rejected, pass it to `onReject`. When executed it will receive the argument passed to `reject()`. - -```js -var promise = new Promise; -promise.onReject(function (reason) { - assert.equal('sad', reason); -}); -promise.reject('sad'); -``` - -The function will only be called once when the promise is rejected, never when fulfilled. - -Registering a function with `onReject` after the promise has already been rejected results in the immediate execution of the function with the original argument used to reject the promise. - -```js -var promise = new Promise; -promise.reject(" :( "); -promise.onReject(function (reason) { - console.log(reason); // logs " :( " -}) -``` - -####onResolve - -Allows registration of node.js style callbacks `(err, args..)` to handle either promise resolution type (fulfill or reject). - -```js -// fulfillment -var promise = new Promise; -promise.onResolve(function (err, a, b) { - console.log(a + b); // logs 3 -}); -promise.fulfill(1, 2); - -// rejection -var promise = new Promise; -promise.onResolve(function (err) { - if (err) { - console.log(err.message); // logs "failed" - } -}); -promise.reject(new Error('failed')); -``` - -####then - -Creates a new promise and returns it. If `onFulfill` or `onReject` are passed, they are added as SUCCESS/ERROR callbacks to this promise after the nextTick. - -Conforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification and passes its [tests](https://github.com/promises-aplus/promises-tests). - -```js -// promise.then(onFulfill, onReject); - -var p = new Promise; - -p.then(function (arg) { - return arg + 1; -}).then(function (arg) { - throw new Error(arg + ' is an error!'); -}).then(null, function (err) { - assert.ok(err instanceof Error); - assert.equal('2 is an error', err.message); -}); -p.complete(1); -``` - -####end - -Signifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught. - -```js -var p = new Promise; -p.then(function(){ throw new Error('shucks') }); -setTimeout(function () { - p.fulfill(); - // error was caught and swallowed by the promise returned from - // p.then(). we either have to always register handlers on - // the returned promises or we can do the following... -}, 10); - -// this time we use .end() which prevents catching thrown errors -var p = new Promise; -var p2 = p.then(function(){ throw new Error('shucks') }).end(); // <-- -setTimeout(function () { - p.fulfill(); // throws "shucks" -}, 10); -``` - -###Event names - -If you'd like to alter this implementations event names used to signify success and failure you may do so by setting `Promise.SUCCESS` or `Promise.FAILURE` respectively. - -```js -Promise.SUCCESS = 'complete'; -Promise.FAILURE = 'err'; -``` - -###Luke, use the Source -For more ideas read the [source](https://github.com/aheckmann/mpromise/blob/master/lib), [tests](https://github.com/aheckmann/mpromise/blob/master/test), or the [mongoose implementation](https://github.com/LearnBoost/mongoose/blob/3.6x/lib/promise.js). - -## license - -[MIT](https://github.com/aheckmann/mpromise/blob/master/LICENSE) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js deleted file mode 100644 index 0b3669d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = exports = require('./lib/promise'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js deleted file mode 100644 index be992c3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/lib/promise.js +++ /dev/null @@ -1,268 +0,0 @@ - -/*! - * Module dependencies. - */ - -var slice = require('sliced'); -var EventEmitter = require('events').EventEmitter; - -/** - * Promise constructor. - * - * _NOTE: The success and failure event names can be overridden by setting `Promise.SUCCESS` and `Promise.FAILURE` respectively._ - * - * @param {Function} back a function that accepts `fn(err, ...){}` as signature - * @inherits NodeJS EventEmitter http://nodejs.org/api/events.html#events_class_events_eventemitter - * @event `reject`: Emits when the promise is rejected (event name may be overridden) - * @event `fulfill`: Emits when the promise is fulfilled (event name may be overridden) - * @api public - */ - -function Promise (back) { - this.emitted = {}; - this.ended = false; - if ('function' == typeof back) - this.onResolve(back); -} - -/*! - * event names - */ - -Promise.SUCCESS = 'fulfill'; -Promise.FAILURE = 'reject'; - -/*! - * Inherits from EventEmitter. - */ - -Promise.prototype.__proto__ = EventEmitter.prototype; - -/** - * Adds `listener` to the `event`. - * - * If `event` is either the success or failure event and the event has already been emitted, the`listener` is called immediately and passed the results of the original emitted event. - * - * @param {String} event - * @param {Function} callback - * @return {Promise} this - * @api public - */ - -Promise.prototype.on = function (event, callback) { - if (this.emitted[event]) - callback.apply(this, this.emitted[event]); - else - EventEmitter.prototype.on.call(this, event, callback); - - return this; -} - -/** - * Keeps track of emitted events to run them on `on`. - * - * @api private - */ - -Promise.prototype.emit = function (event) { - // ensures a promise can't be fulfill() or reject() more than once - var success = this.constructor.SUCCESS; - var failure = this.constructor.FAILURE; - - if (event == success || event == failure) { - if (this.emitted[success] || this.emitted[failure]) { - return this; - } - this.emitted[event] = slice(arguments, 1); - } - - return EventEmitter.prototype.emit.apply(this, arguments); -} - -/** - * Fulfills this promise with passed arguments. - * - * If this promise has already been fulfilled or rejected, no action is taken. - * - * @api public - */ - -Promise.prototype.fulfill = function () { - var args = slice(arguments); - return this.emit.apply(this, [this.constructor.SUCCESS].concat(args)); -} - -/** - * Rejects this promise with `reason`. - * - * If this promise has already been fulfilled or rejected, no action is taken. - * - * @api public - * @param {Object|String} reason - * @return {Promise} this - */ - -Promise.prototype.reject = function (reason) { - return this.emit(this.constructor.FAILURE, reason); -} - -/** - * Resolves this promise to a rejected state if `err` is passed or - * fulfilled state if no `err` is passed. - * - * @param {Error} [err] error or null - * @param {Object} [val] value to fulfill the promise with - * @api public - */ - -Promise.prototype.resolve = function (err, val) { - if (err) return this.reject(err); - return this.fulfill(val); -} - -/** - * Adds a listener to the SUCCESS event. - * - * @return {Promise} this - * @api public - */ - -Promise.prototype.onFulfill = function (fn) { - return this.on(this.constructor.SUCCESS, fn); -} - -/** - * Adds a listener to the FAILURE event. - * - * @return {Promise} this - * @api public - */ - -Promise.prototype.onReject = function (fn) { - return this.on(this.constructor.FAILURE, fn); -} - -/** - * Adds a single function as a listener to both SUCCESS and FAILURE. - * - * It will be executed with traditional node.js argument position: - * function (err, args...) {} - * - * @param {Function} fn - * @return {Promise} this - */ - -Promise.prototype.onResolve = function (fn) { - this.on(this.constructor.FAILURE, function(err){ - fn.call(this, err); - }); - - this.on(this.constructor.SUCCESS, function(){ - var args = slice(arguments); - fn.apply(this, [null].concat(args)); - }); - - return this; -} - -/** - * Creates a new promise and returns it. If `onFulfill` or - * `onReject` are passed, they are added as SUCCESS/ERROR callbacks - * to this promise after the nextTick. - * - * Conforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification. Read for more detail how to use this method. - * - * ####Example: - * - * var p = new Promise; - * p.then(function (arg) { - * return arg + 1; - * }).then(function (arg) { - * throw new Error(arg + ' is an error!'); - * }).then(null, function (err) { - * assert.ok(err instanceof Error); - * assert.equal('2 is an error', err.message); - * }); - * p.complete(1); - * - * @see promises-A+ https://github.com/promises-aplus/promises-spec - * @param {Function} onFulFill - * @param {Function} onReject - * @return {Promise} newPromise - */ - -Promise.prototype.then = function (onFulfill, onReject) { - var self = this - , retPromise = new Promise; - - function handler (fn) { - return function handle (arg) { - var val; - - try { - val = fn(arg); - } catch (err) { - if (retPromise.ended) throw err; - return retPromise.reject(err); - } - - if (val && 'function' == typeof val.then) { - val.then( - retPromise.fulfill.bind(retPromise) - , retPromise.reject.bind(retPromise)) - } else { - retPromise.fulfill(val); - } - } - } - - process.nextTick(function () { - if ('function' == typeof onReject) { - self.onReject(handler(onReject)); - } else { - self.onReject(retPromise.reject.bind(retPromise)); - } - - if ('function' == typeof onFulfill) { - self.onFulfill(handler(onFulfill)); - } else { - self.onFulfill(retPromise.fulfill.bind(retPromise)); - } - }) - - return retPromise; -} - -/** - * Signifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught. - * - * ####Example: - * - * var p = new Promise; - * p.then(function(){ throw new Error('shucks') }); - * setTimeout(function () { - * p.fulfill(); - * // error was caught and swallowed by the promise returned from - * // p.then(). we either have to always register handlers on - * // the returned promises or we can do the following... - * }, 10); - * - * // this time we use .end() which prevents catching thrown errors - * var p = new Promise; - * var p2 = p.then(function(){ throw new Error('shucks') }).end(); // <-- - * setTimeout(function () { - * p.fulfill(); // throws "shucks" - * }, 10); - * - * @api public - */ - -Promise.prototype.end = function () { - this.ended = true; -} - -/*! - * Module exports. - */ - -module.exports = Promise; diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore deleted file mode 100644 index be106ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -*.sw* -node_modules/ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md deleted file mode 100644 index 8132c95..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/History.md +++ /dev/null @@ -1,23 +0,0 @@ - -0.0.4 / 2013-01-07 -================== - - * added component.json #1 [jkroso](https://github.com/jkroso) - * reversed array loop #1 [jkroso](https://github.com/jkroso) - * remove fn params - -0.0.3 / 2012-09-29 -================== - - * faster with negative start args - -0.0.2 / 2012-09-29 -================== - - * support full [].slice semantics - -0.0.1 / 2012-09-29 -=================== - - * initial release - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE deleted file mode 100644 index 38c529d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2012 [Aaron Heckmann](aaron.heckmann+github@gmail.com) - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile deleted file mode 100644 index 3dd8a2d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/Makefile +++ /dev/null @@ -1,5 +0,0 @@ - -test: - @time ./node_modules/.bin/mocha $(T) $(TESTS) - -.PHONY: test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md deleted file mode 100644 index 6605c39..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/README.md +++ /dev/null @@ -1,62 +0,0 @@ -#sliced -========== - -A faster alternative to `[].slice.call(arguments)`. - -[![Build Status](https://secure.travis-ci.org/aheckmann/sliced.png)](http://travis-ci.org/aheckmann/sliced) - -Example output from [benchmark.js](https://github.com/bestiejs/benchmark.js) - - Array.prototype.slice.call x 1,320,205 ops/sec ±2.35% (92 runs sampled) - [].slice.call x 1,314,605 ops/sec ±1.60% (95 runs sampled) - cached slice.call x 10,468,380 ops/sec ±1.45% (95 runs sampled) - sliced x 16,608,237 ops/sec ±1.40% (92 runs sampled) - fastest is sliced - - Array.prototype.slice.call(arguments, 1) x 1,383,584 ops/sec ±1.73% (97 runs sampled) - [].slice.call(arguments, 1) x 1,494,735 ops/sec ±1.33% (95 runs sampled) - cached slice.call(arguments, 1) x 10,085,270 ops/sec ±1.51% (97 runs sampled) - sliced(arguments, 1) x 16,620,480 ops/sec ±1.29% (95 runs sampled) - fastest is sliced(arguments, 1) - - Array.prototype.slice.call(arguments, -1) x 1,303,262 ops/sec ±1.62% (94 runs sampled) - [].slice.call(arguments, -1) x 1,325,615 ops/sec ±1.36% (97 runs sampled) - cached slice.call(arguments, -1) x 9,673,603 ops/sec ±1.70% (96 runs sampled) - sliced(arguments, -1) x 16,384,575 ops/sec ±1.06% (91 runs sampled) - fastest is sliced(arguments, -1) - - Array.prototype.slice.call(arguments, -2, -10) x 1,404,390 ops/sec ±1.61% (95 runs sampled) - [].slice.call(arguments, -2, -10) x 1,514,367 ops/sec ±1.21% (96 runs sampled) - cached slice.call(arguments, -2, -10) x 9,836,017 ops/sec ±1.21% (95 runs sampled) - sliced(arguments, -2, -10) x 18,544,882 ops/sec ±1.30% (91 runs sampled) - fastest is sliced(arguments, -2, -10) - - Array.prototype.slice.call(arguments, -2, -1) x 1,458,604 ops/sec ±1.41% (97 runs sampled) - [].slice.call(arguments, -2, -1) x 1,536,547 ops/sec ±1.63% (99 runs sampled) - cached slice.call(arguments, -2, -1) x 10,060,633 ops/sec ±1.37% (96 runs sampled) - sliced(arguments, -2, -1) x 18,608,712 ops/sec ±1.08% (93 runs sampled) - fastest is sliced(arguments, -2, -1) - -_Benchmark [source](https://github.com/aheckmann/sliced/blob/master/bench.js)._ - -##Usage - -`sliced` accepts the same arguments as `Array#slice` so you can easily swap it out. - -```js -function zing () { - var slow = [].slice.call(arguments, 1, 8); - var args = slice(arguments, 1, 8); - - var slow = Array.prototype.slice.call(arguments); - var args = slice(arguments); - // etc -} -``` - -## install - - npm install sliced - - -[LICENSE](https://github.com/aheckmann/sliced/blob/master/LICENSE) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js deleted file mode 100644 index f201d16..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/bench.js +++ /dev/null @@ -1,95 +0,0 @@ - -var sliced = require('./') -var Bench = require('benchmark'); -var s = new Bench.Suite; -var slice = [].slice; - -s.add('Array.prototype.slice.call', function () { - Array.prototype.slice.call(arguments); -}).add('[].slice.call', function () { - [].slice.call(arguments); -}).add('cached slice.call', function () { - slice.call(arguments) -}).add('sliced', function () { - sliced(arguments) -}).on('cycle', function (evt) { - console.log(String(evt.target)); -}).on('complete', function () { - console.log('fastest is %s', this.filter('fastest').pluck('name')); -}) -.run(); - -var s = new Bench.Suite; -s.add('Array.prototype.slice.call(arguments, 1)', function () { - Array.prototype.slice.call(arguments, 1); -}).add('[].slice.call(arguments, 1)', function () { - [].slice.call(arguments, 1); -}).add('cached slice.call(arguments, 1)', function () { - slice.call(arguments, 1) -}).add('sliced(arguments, 1)', function () { - sliced(arguments, 1) -}).on('cycle', function (evt) { - console.log(String(evt.target)); -}).on('complete', function () { - console.log('fastest is %s', this.filter('fastest').pluck('name')); -}) -.run(); - -var s = new Bench.Suite; -s.add('Array.prototype.slice.call(arguments, -1)', function () { - Array.prototype.slice.call(arguments, -1); -}).add('[].slice.call(arguments, -1)', function () { - [].slice.call(arguments, -1); -}).add('cached slice.call(arguments, -1)', function () { - slice.call(arguments, -1) -}).add('sliced(arguments, -1)', function () { - sliced(arguments, -1) -}).on('cycle', function (evt) { - console.log(String(evt.target)); -}).on('complete', function () { - console.log('fastest is %s', this.filter('fastest').pluck('name')); -}) -.run(); - -var s = new Bench.Suite; -s.add('Array.prototype.slice.call(arguments, -2, -10)', function () { - Array.prototype.slice.call(arguments, -2, -10); -}).add('[].slice.call(arguments, -2, -10)', function () { - [].slice.call(arguments, -2, -10); -}).add('cached slice.call(arguments, -2, -10)', function () { - slice.call(arguments, -2, -10) -}).add('sliced(arguments, -2, -10)', function () { - sliced(arguments, -2, -10) -}).on('cycle', function (evt) { - console.log(String(evt.target)); -}).on('complete', function () { - console.log('fastest is %s', this.filter('fastest').pluck('name')); -}) -.run(); - -var s = new Bench.Suite; -s.add('Array.prototype.slice.call(arguments, -2, -1)', function () { - Array.prototype.slice.call(arguments, -2, -1); -}).add('[].slice.call(arguments, -2, -1)', function () { - [].slice.call(arguments, -2, -1); -}).add('cached slice.call(arguments, -2, -1)', function () { - slice.call(arguments, -2, -1) -}).add('sliced(arguments, -2, -1)', function () { - sliced(arguments, -2, -1) -}).on('cycle', function (evt) { - console.log(String(evt.target)); -}).on('complete', function () { - console.log('fastest is %s', this.filter('fastest').pluck('name')); -}) -.run(); - -/** - * Output: - * - * Array.prototype.slice.call x 1,289,592 ops/sec ±2.88% (87 runs sampled) - * [].slice.call x 1,345,451 ops/sec ±1.68% (97 runs sampled) - * cached slice.call x 10,719,886 ops/sec ±1.04% (99 runs sampled) - * sliced x 15,809,545 ops/sec ±1.46% (93 runs sampled) - * fastest is sliced - * - */ diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json deleted file mode 100644 index a7ac7f2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/component.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "sliced", - "version": "0.0.3", - "description": "A faster Node.js alternative to Array.prototype.slice.call(arguments)", - "repo" : "aheckmann/sliced", - "keywords": [ - "arguments", - "slice", - "array" - ], - "author": "Aaron Heckmann ", - "license": "MIT" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js deleted file mode 100644 index 3b90ae7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = exports = require('./lib/sliced'); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js deleted file mode 100644 index d8c15bc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/lib/sliced.js +++ /dev/null @@ -1,37 +0,0 @@ - -/** - * An Array.prototype.slice.call(arguments) alternative - * - * @param {Object} args something with a length - * @param {Number} slice - * @param {Number} sliceEnd - * @api public - */ - -module.exports = function () { - var args = arguments[0]; - var slice = arguments[1]; - var sliceEnd = arguments[2]; - - var ret = []; - var len = args.length; - - if (0 === len) return ret; - - var start = slice < 0 - ? Math.max(0, slice + len) - : slice || 0; - - var end = 3 === arguments.length - ? sliceEnd < 0 - ? sliceEnd + len - : sliceEnd - : len; - - while (end-- > start) { - ret[end - start] = args[end]; - } - - return ret; -} - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json deleted file mode 100644 index 8033e42..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "sliced", - "version": "0.0.4", - "description": "A faster Node.js alternative to Array.prototype.slice.call(arguments)", - "main": "index.js", - "scripts": { - "test": "make test" - }, - "repository": { - "type": "git", - "url": "git://github.com/aheckmann/sliced" - }, - "keywords": [ - "arguments", - "slice", - "array" - ], - "author": { - "name": "Aaron Heckmann", - "email": "aaron.heckmann+github@gmail.com" - }, - "license": "MIT", - "devDependencies": { - "mocha": "1.5.0", - "benchmark": "~1.0.0" - }, - "readme": "#sliced\n==========\n\nA faster alternative to `[].slice.call(arguments)`.\n\n[![Build Status](https://secure.travis-ci.org/aheckmann/sliced.png)](http://travis-ci.org/aheckmann/sliced)\n\nExample output from [benchmark.js](https://github.com/bestiejs/benchmark.js)\n\n Array.prototype.slice.call x 1,320,205 ops/sec ±2.35% (92 runs sampled)\n [].slice.call x 1,314,605 ops/sec ±1.60% (95 runs sampled)\n cached slice.call x 10,468,380 ops/sec ±1.45% (95 runs sampled)\n sliced x 16,608,237 ops/sec ±1.40% (92 runs sampled)\n fastest is sliced\n\n Array.prototype.slice.call(arguments, 1) x 1,383,584 ops/sec ±1.73% (97 runs sampled)\n [].slice.call(arguments, 1) x 1,494,735 ops/sec ±1.33% (95 runs sampled)\n cached slice.call(arguments, 1) x 10,085,270 ops/sec ±1.51% (97 runs sampled)\n sliced(arguments, 1) x 16,620,480 ops/sec ±1.29% (95 runs sampled)\n fastest is sliced(arguments, 1)\n\n Array.prototype.slice.call(arguments, -1) x 1,303,262 ops/sec ±1.62% (94 runs sampled)\n [].slice.call(arguments, -1) x 1,325,615 ops/sec ±1.36% (97 runs sampled)\n cached slice.call(arguments, -1) x 9,673,603 ops/sec ±1.70% (96 runs sampled)\n sliced(arguments, -1) x 16,384,575 ops/sec ±1.06% (91 runs sampled)\n fastest is sliced(arguments, -1)\n\n Array.prototype.slice.call(arguments, -2, -10) x 1,404,390 ops/sec ±1.61% (95 runs sampled)\n [].slice.call(arguments, -2, -10) x 1,514,367 ops/sec ±1.21% (96 runs sampled)\n cached slice.call(arguments, -2, -10) x 9,836,017 ops/sec ±1.21% (95 runs sampled)\n sliced(arguments, -2, -10) x 18,544,882 ops/sec ±1.30% (91 runs sampled)\n fastest is sliced(arguments, -2, -10)\n\n Array.prototype.slice.call(arguments, -2, -1) x 1,458,604 ops/sec ±1.41% (97 runs sampled)\n [].slice.call(arguments, -2, -1) x 1,536,547 ops/sec ±1.63% (99 runs sampled)\n cached slice.call(arguments, -2, -1) x 10,060,633 ops/sec ±1.37% (96 runs sampled)\n sliced(arguments, -2, -1) x 18,608,712 ops/sec ±1.08% (93 runs sampled)\n fastest is sliced(arguments, -2, -1)\n\n_Benchmark [source](https://github.com/aheckmann/sliced/blob/master/bench.js)._\n\n##Usage\n\n`sliced` accepts the same arguments as `Array#slice` so you can easily swap it out.\n\n```js\nfunction zing () {\n var slow = [].slice.call(arguments, 1, 8);\n var args = slice(arguments, 1, 8);\n\n var slow = Array.prototype.slice.call(arguments);\n var args = slice(arguments);\n // etc\n}\n```\n\n## install\n\n npm install sliced\n\n\n[LICENSE](https://github.com/aheckmann/sliced/blob/master/LICENSE)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/aheckmann/sliced/issues" - }, - "_id": "sliced@0.0.4", - "dist": { - "shasum": "3b876b7ce844ff8dda91e324c0e085fe00a7715a" - }, - "_from": "sliced@0.0.4", - "_resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.4.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js deleted file mode 100644 index 33d36a1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/node_modules/sliced/test/index.js +++ /dev/null @@ -1,80 +0,0 @@ - -var sliced = require('../') -var assert = require('assert') - -describe('sliced', function(){ - it('exports a function', function(){ - assert.equal('function', typeof sliced); - }) - describe('with 1 arg', function(){ - it('returns an array of the arg', function(){ - var o = [3, "4", {}]; - var r = sliced(o); - assert.equal(3, r.length); - assert.equal(o[0], r[0]); - assert.equal(o[1], r[1]); - assert.equal(o[1], r[1]); - }) - }) - describe('with 2 args', function(){ - it('returns an array of the arg starting at the 2nd arg', function(){ - var o = [3, "4", 5, null]; - var r = sliced(o, 2); - assert.equal(2, r.length); - assert.equal(o[2], r[0]); - assert.equal(o[3], r[1]); - }) - }) - describe('with 3 args', function(){ - it('returns an array of the arg from the 2nd to the 3rd arg', function(){ - var o = [3, "4", 5, null]; - var r = sliced(o, 1, 2); - assert.equal(1, r.length); - assert.equal(o[1], r[0]); - }) - }) - describe('with negative start and no end', function(){ - it('begins at an offset from the end and includes all following elements', function(){ - var o = [3, "4", 5, null]; - var r = sliced(o, -2); - assert.equal(2, r.length); - assert.equal(o[2], r[0]); - assert.equal(o[3], r[1]); - - var r = sliced(o, -12); - assert.equal(4, r.length); - assert.equal(o[0], r[0]); - assert.equal(o[1], r[1]); - }) - }) - describe('with negative start and positive end', function(){ - it('begins at an offset from the end and includes `end` elements', function(){ - var o = [3, "4", {x:1}, null]; - - var r = sliced(o, -2, 1); - assert.equal(0, r.length); - - var r = sliced(o, -2, 2); - assert.equal(0, r.length); - - var r = sliced(o, -2, 3); - assert.equal(1, r.length); - assert.equal(o[2], r[0]); - }) - }) - describe('with negative start and negative end', function(){ - it('begins at `start` offset from the end and includes all elements up to `end` offset from the end', function(){ - var o = [3, "4", {x:1}, null]; - var r = sliced(o, -3, -1); - assert.equal(2, r.length); - assert.equal(o[1], r[0]); - assert.equal(o[2], r[1]); - - var r = sliced(o, -3, -3); - assert.equal(0, r.length); - - var r = sliced(o, -3, -4); - assert.equal(0, r.length); - }) - }) -}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json deleted file mode 100644 index f3db8fe..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "mpromise", - "version": "0.2.1", - "description": "Promises A+ conformant implementation", - "main": "index.js", - "scripts": { - "test": "make test" - }, - "dependencies": { - "sliced": "0.0.4" - }, - "devDependencies": { - "mocha": "1.7.4", - "promises-aplus-tests": ">= 1.2" - }, - "repository": { - "type": "git", - "url": "git://github.com/aheckmann/mpromise" - }, - "keywords": [ - "promise", - "mongoose", - "aplus", - "a+", - "plus" - ], - "author": { - "name": "Aaron Heckmann", - "email": "aaron.heckmann+github@gmail.com" - }, - "license": "MIT", - "readme": "#mpromise\n==========\n\nA [promises/A+](https://github.com/promises-aplus/promises-spec) conformant implementation, written for [mongoose](http://mongoosejs.com).\n\n## installation\n\n```\n$ npm install mpromise\n```\n\n## docs\n\nAn `mpromise` can be in any of three states, pending, fulfilled (success), or rejected (error). Once it is either fulfilled or rejected it's state can no longer be changed.\n\nThe exports object is the Promise constructor.\n\n```js\nvar Promise = require('mpromise');\n```\n\nThe constructor accepts an optional function which is executed when the promise is first resolved (either fulfilled or rejected).\n\n```js\nvar promise = new Promise(fn);\n```\n\nThis is the same as passing the `fn` to `onResolve` directly.\n\n```js\nvar promise = new Promise;\npromise.onResolve(function (err, args..) {\n ...\n});\n```\n\n### Methods\n\n####fulfill\n\nFulfilling a promise with values:\n\n```js\nvar promise = new Promise;\npromise.fulfill(args...);\n```\n\nIf the promise has already been fulfilled or rejected, no action is taken.\n\n####reject\n\nRejecting a promise with a reason:\n\n```js\nvar promise = new Promise;\npromise.reject(reason);\n```\n\nIf the promise has already been fulfilled or rejected, no action is taken.\n\n####resolve\n\nNode.js callback style promise resolution `(err, args...)`:\n\n```js\nvar promise = new Promise;\npromise.resolve([reason], [arg1, arg2, ...]);\n```\n\nIf the promise has already been fulfilled or rejected, no action is taken.\n\n####onFulfill\n\nTo register a function for execution when the promise is fulfilled, pass it to `onFulfill`. When executed it will receive the arguments passed to `fulfill()`.\n\n```js\nvar promise = new Promise;\npromise.onFulfill(function (a, b) {\n assert.equal(3, a + b);\n});\npromise.fulfill(1, 2);\n```\n\nThe function will only be called once when the promise is fulfilled, never when rejected.\n\nRegistering a function with `onFulfill` after the promise has already been fulfilled results in the immediate execution of the function with the original arguments used to fulfill the promise.\n\n```js\nvar promise = new Promise;\npromise.fulfill(\" :D \");\npromise.onFulfill(function (arg) {\n console.log(arg); // logs \" :D \"\n})\n```\n\n####onReject\n\nTo register a function for execution when the promise is rejected, pass it to `onReject`. When executed it will receive the argument passed to `reject()`.\n\n```js\nvar promise = new Promise;\npromise.onReject(function (reason) {\n assert.equal('sad', reason);\n});\npromise.reject('sad');\n```\n\nThe function will only be called once when the promise is rejected, never when fulfilled.\n\nRegistering a function with `onReject` after the promise has already been rejected results in the immediate execution of the function with the original argument used to reject the promise.\n\n```js\nvar promise = new Promise;\npromise.reject(\" :( \");\npromise.onReject(function (reason) {\n console.log(reason); // logs \" :( \"\n})\n```\n\n####onResolve\n\nAllows registration of node.js style callbacks `(err, args..)` to handle either promise resolution type (fulfill or reject).\n\n```js\n// fulfillment\nvar promise = new Promise;\npromise.onResolve(function (err, a, b) {\n console.log(a + b); // logs 3\n});\npromise.fulfill(1, 2);\n\n// rejection\nvar promise = new Promise;\npromise.onResolve(function (err) {\n if (err) {\n console.log(err.message); // logs \"failed\"\n }\n});\npromise.reject(new Error('failed'));\n```\n\n####then\n\nCreates a new promise and returns it. If `onFulfill` or `onReject` are passed, they are added as SUCCESS/ERROR callbacks to this promise after the nextTick.\n\nConforms to [promises/A+](https://github.com/promises-aplus/promises-spec) specification and passes its [tests](https://github.com/promises-aplus/promises-tests).\n\n```js\n// promise.then(onFulfill, onReject);\n\nvar p = new Promise;\n\np.then(function (arg) {\n return arg + 1;\n}).then(function (arg) {\n throw new Error(arg + ' is an error!');\n}).then(null, function (err) {\n assert.ok(err instanceof Error);\n assert.equal('2 is an error', err.message);\n});\np.complete(1);\n```\n\n####end\n\nSignifies that this promise was the last in a chain of `then()s`: if a handler passed to the call to `then` which produced this promise throws, the exception will go uncaught.\n\n```js\nvar p = new Promise;\np.then(function(){ throw new Error('shucks') });\nsetTimeout(function () {\n p.fulfill();\n // error was caught and swallowed by the promise returned from\n // p.then(). we either have to always register handlers on\n // the returned promises or we can do the following...\n}, 10);\n\n// this time we use .end() which prevents catching thrown errors\nvar p = new Promise;\nvar p2 = p.then(function(){ throw new Error('shucks') }).end(); // <--\nsetTimeout(function () {\n p.fulfill(); // throws \"shucks\"\n}, 10);\n```\n\n###Event names\n\nIf you'd like to alter this implementations event names used to signify success and failure you may do so by setting `Promise.SUCCESS` or `Promise.FAILURE` respectively.\n\n```js\nPromise.SUCCESS = 'complete';\nPromise.FAILURE = 'err';\n```\n\n###Luke, use the Source\nFor more ideas read the [source](https://github.com/aheckmann/mpromise/blob/master/lib), [tests](https://github.com/aheckmann/mpromise/blob/master/test), or the [mongoose implementation](https://github.com/LearnBoost/mongoose/blob/3.6x/lib/promise.js).\n\n## license\n\n[MIT](https://github.com/aheckmann/mpromise/blob/master/LICENSE)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/aheckmann/mpromise/issues" - }, - "_id": "mpromise@0.2.1", - "dist": { - "shasum": "2d34d1e9ffad0946e085574eb7c793816b840bcd" - }, - "_from": "mpromise@0.2.1", - "_resolved": "https://registry.npmjs.org/mpromise/-/mpromise-0.2.1.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js deleted file mode 100644 index 45f6e29..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promise.test.js +++ /dev/null @@ -1,201 +0,0 @@ - -/** - * Module dependencies. - */ - -var assert = require('assert') -var Promise = require('../lib/promise'); - -/** - * Test. - */ - -describe('promise', function(){ - it('events fire right after fulfill()', function(done){ - var promise = new Promise() - , called = 0; - - promise.on('fulfill', function (a, b) { - assert.equal(a, '1'); - assert.equal(b, '2'); - called++; - }); - - promise.fulfill('1', '2'); - - promise.on('fulfill', function (a, b) { - assert.equal(a, '1'); - assert.equal(b, '2'); - called++; - }); - - assert.equal(2, called); - done(); - }); - - it('events fire right after reject()', function(done){ - var promise = new Promise() - , called = 0; - - promise.on('reject', function (err) { - assert.ok(err instanceof Error); - called++; - }); - - promise.reject(new Error('booyah')); - - promise.on('reject', function (err) { - assert.ok(err instanceof Error); - called++; - }); - - assert.equal(2, called); - done() - }); - - describe('onResolve()', function(){ - it('from constructor works', function(done){ - var called = 0; - - var promise = new Promise(function (err) { - assert.ok(err instanceof Error); - called++; - }) - - promise.reject(new Error('dawg')); - - assert.equal(1, called); - done(); - }); - - it('after fulfill()', function(done){ - var promise = new Promise() - , called = 0; - - promise.fulfill('woot'); - - promise.onResolve(function (err, data){ - assert.equal(data,'woot'); - called++; - }); - - promise.onResolve(function (err, data){ - assert.strictEqual(err, null); - called++; - }); - - assert.equal(2, called); - done(); - }) - }); - - describe('onFulfill shortcut', function(){ - it('works', function(done){ - var promise = new Promise() - , called = 0; - - promise.onFulfill(function (woot) { - assert.strictEqual(woot, undefined); - called++; - }); - - promise.fulfill(); - - assert.equal(1, called); - done(); - }) - }) - - describe('onReject shortcut', function(){ - it('works', function(done){ - var promise = new Promise() - , called = 0; - - promise.onReject(function (err) { - assert.ok(err instanceof Error); - called++; - }); - - promise.reject(new Error); - assert.equal(1, called); - done(); - }) - }); - - describe('return values', function(){ - it('on()', function(done){ - var promise = new Promise() - assert.ok(promise.on('jump', function(){}) instanceof Promise); - done() - }); - - it('onFulfill()', function(done){ - var promise = new Promise() - assert.ok(promise.onFulfill(function(){}) instanceof Promise); - done(); - }) - it('onReject()', function(done){ - var promise = new Promise() - assert.ok(promise.onReject(function(){}) instanceof Promise); - done(); - }) - it('onResolve()', function(done){ - var promise = new Promise() - assert.ok(promise.onResolve(function(){}) instanceof Promise); - done(); - }) - }) - - describe('casting errors', function(){ - describe('reject()', function(){ - it('does not cast arguments to Error', function(done){ - var p = new Promise(function (err, arg) { - assert.equal(3, err); - done(); - }); - - p.reject(3); - }) - }) - }) - - describe('then catching', function(){ - it('should not catch returned promise fulfillments', function(done){ - var p1 = new Promise; - - var p2 = p1.then(function () { return 'step 1' }) - - p2.onFulfill(function () { throw new Error('fulfill threw me') }) - p2.reject = assert.ifError.bind(assert, new Error('reject should not have been called')); - - setTimeout(function () { - assert.throws(function () { - p1.fulfill(); - }, /fulfill threw me/) - done(); - }, 10); - - }) - - it('can be disabled using .end()', function(done){ - var p = new Promise; - - var p2 = p.then(function () { throw new Error('shucks') }) - p2.end(); - - setTimeout(function () { - try { - p.fulfill(); - } catch (err) { - assert.ok(/shucks/.test(err)) - done(); - } - - setTimeout(function () { - done(new Error('error was swallowed')); - }, 10); - - }, 10); - }) - }) -}) diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js deleted file mode 100644 index ebb4626..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/mpromise/test/promises-A.js +++ /dev/null @@ -1,35 +0,0 @@ - -/** - * Module dependencies. - */ - -var assert = require('assert') -var Promise = require('../lib/promise'); -var aplus = require('promises-aplus-tests'); - -// tests - -var adapter = {}; -adapter.fulfilled = function (value) { - var p = new Promise; - p.fulfill(value); - return p; -}; -adapter.rejected = function (reason) { - var p = new Promise; - p.reject(reason); - return p; -} -adapter.pending = function () { - var p = new Promise; - return { - promise: p - , fulfill: p.fulfill.bind(p) - , reject: p.reject.bind(p) - } -} - -aplus(adapter, function (err) { - assert.ifError(err); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile deleted file mode 100644 index dded504..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - -test: - ./node_modules/.bin/mocha test/test.js - -test-browser: - ./node_modules/.bin/serve test/ - -.PHONY: test diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md deleted file mode 100644 index c93d43f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/README.md +++ /dev/null @@ -1,65 +0,0 @@ - -# ms.js - -Ever find yourself doing math in your head or writing `1000 * 60 * 60 …`? -Don't want to add obstrusive `Number` prototype extensions to your reusable -/ distributable modules and projects? - -`ms` is a tiny utility that you can leverage when your application needs to -accept a number of miliseconds as a parameter. - -If a number is supplied to `ms`, it returns it immediately (e.g: -If a string that contains the number is supplied, it returns it immediately as -a number (e.g: it returns `100` for `'100'`). - -However, if you pass a string with a number and a valid unit, hte number of -equivalent ms is returned. - -```js -ms('1d') // 86400000 -ms('10h') // 36000000 -ms('2h') // 7200000 -ms('1m') // 60000 -ms('5ms') // 5000 -ms('100') // '100' -ms(100) // 100 -``` - -## How to use - -### Node - -```js -require('ms') -``` - -### Browser - -```html - -``` - -## Credits - -(The MIT License) - -Copyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js deleted file mode 100644 index b4621bc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/ms.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - -# ms.js - -No more painful `setTimeout(fn, 60 * 4 * 3 * 2 * 1 * Infinity * NaN * '☃')`. - - ms('2d') // 172800000 - ms('1.5h') // 5400000 - ms('1h') // 3600000 - ms('1m') // 60000 - ms('5s') // 5000 - ms('500ms') // 500 - ms('100') // '100' - ms(100) // 100 - -**/ - -(function (g) { - var r = /(\d*.?\d+)([mshd]+)/ - , _ = {} - - _.ms = 1; - _.s = 1000; - _.m = _.s * 60; - _.h = _.m * 60; - _.d = _.h * 24; - - function ms (s) { - if (s == Number(s)) return Number(s); - r.exec(s.toLowerCase()); - return RegExp.$1 * _[RegExp.$2]; - } - - g.top ? g.ms = ms : module.exports = ms; -})(this); diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json deleted file mode 100644 index 7433303..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "ms", - "version": "0.1.0", - "description": "Tiny ms conversion utility", - "main": "./ms", - "devDependencies": { - "mocha": "*", - "expect.js": "*", - "serve": "*" - }, - "readme": "\n# ms.js\n\nEver find yourself doing math in your head or writing `1000 * 60 * 60 …`?\nDon't want to add obstrusive `Number` prototype extensions to your reusable\n/ distributable modules and projects?\n\n`ms` is a tiny utility that you can leverage when your application needs to\naccept a number of miliseconds as a parameter.\n\nIf a number is supplied to `ms`, it returns it immediately (e.g:\nIf a string that contains the number is supplied, it returns it immediately as\na number (e.g: it returns `100` for `'100'`).\n\nHowever, if you pass a string with a number and a valid unit, hte number of\nequivalent ms is returned.\n\n```js\nms('1d') // 86400000\nms('10h') // 36000000\nms('2h') // 7200000\nms('1m') // 60000\nms('5ms') // 5000\nms('100') // '100'\nms(100) // 100\n```\n\n## How to use\n\n### Node\n\n```js\nrequire('ms')\n```\n\n### Browser\n\n```html\n\n```\n\n## Credits\n\n(The MIT License)\n\nCopyright (c) 2011 Guillermo Rauch <guillermo@learnboost.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "README.md", - "_id": "ms@0.1.0", - "dist": { - "shasum": "0096a17f4f0ea67a9d013fddc474326bfa64e134" - }, - "_from": "ms@0.1.0", - "_resolved": "https://registry.npmjs.org/ms/-/ms-0.1.0.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html deleted file mode 100644 index 79edc40..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - ms.js tests - - - - - - - - - - - - -
      - - diff --git a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js b/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js deleted file mode 100644 index 8ccd0ea..0000000 --- a/nodejs-mysql-tutorial/node_modules/mongoose/node_modules/ms/test/support/jquery.js +++ /dev/null @@ -1,9266 +0,0 @@ -/*! - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function( window, undefined ) { - -// Use the correct document accordingly with window argument (sandbox) -var document = window.document, - navigator = window.navigator, - location = window.location; -var jQuery = (function() { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - trimLeft = /^\s+/, - trimRight = /\s+$/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - - // Useragent RegExp - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, - rmsie = /(msie) ([\w.]+)/, - rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, - - // Matches dashed string for camelizing - rdashAlpha = /-([a-z]|[0-9])/ig, - rmsPrefix = /^-ms-/, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return ( letter + "" ).toUpperCase(); - }, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // The deferred used on DOM ready - readyList, - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - trim = String.prototype.trim, - indexOf = Array.prototype.indexOf, - - // [[Class]] -> type pairs - class2type = {}; - -jQuery.fn = jQuery.prototype = { - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context && document.body ) { - this.context = document; - this[0] = document.body; - this.selector = selector; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = quickExpr.exec( selector ); - } - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - doc = ( context ? context.ownerDocument || context : document ); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); - selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.7.1", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = this.constructor(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // Add the callback - readyList.add( fn ); - - return this; - }, - - eq: function( i ) { - i = +i; - return i === -1 ? - this.slice( i ) : - this.slice( i, i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - // Either a released hold or an DOMready/load event and not yet ready - if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 1 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.fireWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger( "ready" ).off( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyList ) { - return; - } - - readyList = jQuery.Callbacks( "once memory" ); - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - return setTimeout( jQuery.ready, 1 ); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", DOMContentLoaded ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - // A crude way of determining if an object is a window - isWindow: function( obj ) { - return obj && typeof obj === "object" && "setInterval" in obj; - }, - - isNumeric: function( obj ) { - return !isNaN( parseFloat(obj) ) && isFinite( obj ); - }, - - type: function( obj ) { - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw new Error( msg ); - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return ( new Function( "return " + data ) )(); - - } - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - parseXML: function( data ) { - var xml, tmp; - try { - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - } catch( e ) { - xml = undefined; - } - if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); - } - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && rnotwhite.test( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction( object ); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } - - return object; - }, - - // Use native String.trim function wherever possible - trim: trim ? - function( text ) { - return text == null ? - "" : - trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type( array ); - - if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array, i ) { - var len; - - if ( array ) { - if ( indexOf ) { - return indexOf.call( array, elem, i ); - } - - len = array.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in array && array[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, - j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = [], retVal; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, key, ret = [], - i = 0, - length = elems.length, - // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( key in elems ) { - value = callback( elems[ key ], key, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - if ( typeof context === "string" ) { - var tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - var args = slice.call( arguments, 2 ), - proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - - return proxy; - }, - - // Mutifunctional method to get and set values to a collection - // The value/s can optionally be executed if it's a function - access: function( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - jQuery.access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; - }, - - now: function() { - return ( new Date() ).getTime(); - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - sub: function() { - function jQuerySub( selector, context ) { - return new jQuerySub.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySub, this ); - jQuerySub.superclass = this; - jQuerySub.fn = jQuerySub.prototype = this(); - jQuerySub.fn.constructor = jQuerySub; - jQuerySub.sub = this.sub; - jQuerySub.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { - context = jQuerySub( context ); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); - }; - jQuerySub.fn.init.prototype = jQuerySub.fn; - var rootjQuerySub = jQuerySub(document); - return jQuerySub; - }, - - browser: {} -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -// IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { - trimLeft = /^[\s\xA0]+/; - trimRight = /[\s\xA0]+$/; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch(e) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -return jQuery; - -})(); - - -// String to Object flags format cache -var flagsCache = {}; - -// Convert String-formatted flags into Object-formatted ones and store in cache -function createFlags( flags ) { - var object = flagsCache[ flags ] = {}, - i, length; - flags = flags.split( /\s+/ ); - for ( i = 0, length = flags.length; i < length; i++ ) { - object[ flags[i] ] = true; - } - return object; -} - -/* - * Create a callback list using the following parameters: - * - * flags: an optional list of space-separated flags that will change how - * the callback list behaves - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible flags: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( flags ) { - - // Convert flags from String-formatted to Object-formatted - // (we check in cache first) - flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; - - var // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = [], - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list is currently firing - firing, - // First callback to fire (used internally by add and fireWith) - firingStart, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // Add one or several callbacks to the list - add = function( args ) { - var i, - length, - elem, - type, - actual; - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - // Inspect recursively - add( elem ); - } else if ( type === "function" ) { - // Add if not in unique mode and callback is not in - if ( !flags.unique || !self.has( elem ) ) { - list.push( elem ); - } - } - } - }, - // Fire callbacks - fire = function( context, args ) { - args = args || []; - memory = !flags.memory || [ context, args ]; - firing = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { - memory = true; // Mark as halted - break; - } - } - firing = false; - if ( list ) { - if ( !flags.once ) { - if ( stack && stack.length ) { - memory = stack.shift(); - self.fireWith( memory[ 0 ], memory[ 1 ] ); - } - } else if ( memory === true ) { - self.disable(); - } else { - list = []; - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - var length = list.length; - add( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away, unless previous - // firing was halted (stopOnFalse) - } else if ( memory && memory !== true ) { - firingStart = length; - fire( memory[ 0 ], memory[ 1 ] ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - var args = arguments, - argIndex = 0, - argLength = args.length; - for ( ; argIndex < argLength ; argIndex++ ) { - for ( var i = 0; i < list.length; i++ ) { - if ( args[ argIndex ] === list[ i ] ) { - // Handle firingIndex and firingLength - if ( firing ) { - if ( i <= firingLength ) { - firingLength--; - if ( i <= firingIndex ) { - firingIndex--; - } - } - } - // Remove the element - list.splice( i--, 1 ); - // If we have some unicity property then - // we only need to do this once - if ( flags.unique ) { - break; - } - } - } - } - } - return this; - }, - // Control if a given callback is in the list - has: function( fn ) { - if ( list ) { - var i = 0, - length = list.length; - for ( ; i < length; i++ ) { - if ( fn === list[ i ] ) { - return true; - } - } - } - return false; - }, - // Remove all callbacks from the list - empty: function() { - list = []; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory || memory === true ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( stack ) { - if ( firing ) { - if ( !flags.once ) { - stack.push( [ context, args ] ); - } - } else if ( !( flags.once && memory ) ) { - fire( context, args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!memory; - } - }; - - return self; -}; - - - - -var // Static reference to slice - sliceDeferred = [].slice; - -jQuery.extend({ - - Deferred: function( func ) { - var doneList = jQuery.Callbacks( "once memory" ), - failList = jQuery.Callbacks( "once memory" ), - progressList = jQuery.Callbacks( "memory" ), - state = "pending", - lists = { - resolve: doneList, - reject: failList, - notify: progressList - }, - promise = { - done: doneList.add, - fail: failList.add, - progress: progressList.add, - - state: function() { - return state; - }, - - // Deprecated - isResolved: doneList.fired, - isRejected: failList.fired, - - then: function( doneCallbacks, failCallbacks, progressCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); - return this; - }, - always: function() { - deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); - return this; - }, - pipe: function( fnDone, fnFail, fnProgress ) { - return jQuery.Deferred(function( newDefer ) { - jQuery.each( { - done: [ fnDone, "resolve" ], - fail: [ fnFail, "reject" ], - progress: [ fnProgress, "notify" ] - }, function( handler, data ) { - var fn = data[ 0 ], - action = data[ 1 ], - returned; - if ( jQuery.isFunction( fn ) ) { - deferred[ handler ](function() { - returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); - } else { - newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); - } - }); - } else { - deferred[ handler ]( newDefer[ action ] ); - } - }); - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - if ( obj == null ) { - obj = promise; - } else { - for ( var key in promise ) { - obj[ key ] = promise[ key ]; - } - } - return obj; - } - }, - deferred = promise.promise({}), - key; - - for ( key in lists ) { - deferred[ key ] = lists[ key ].fire; - deferred[ key + "With" ] = lists[ key ].fireWith; - } - - // Handle state - deferred.done( function() { - state = "resolved"; - }, failList.disable, progressList.lock ).fail( function() { - state = "rejected"; - }, doneList.disable, progressList.lock ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( firstParam ) { - var args = sliceDeferred.call( arguments, 0 ), - i = 0, - length = args.length, - pValues = new Array( length ), - count = length, - pCount = length, - deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? - firstParam : - jQuery.Deferred(), - promise = deferred.promise(); - function resolveFunc( i ) { - return function( value ) { - args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - if ( !( --count ) ) { - deferred.resolveWith( deferred, args ); - } - }; - } - function progressFunc( i ) { - return function( value ) { - pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - deferred.notifyWith( promise, pValues ); - }; - } - if ( length > 1 ) { - for ( ; i < length; i++ ) { - if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { - args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); - } else { - --count; - } - } - if ( !count ) { - deferred.resolveWith( deferred, args ); - } - } else if ( deferred !== firstParam ) { - deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); - } - return promise; - } -}); - - - - -jQuery.support = (function() { - - var support, - all, - a, - select, - opt, - input, - marginDiv, - fragment, - tds, - events, - eventName, - i, - isSupported, - div = document.createElement( "div" ), - documentElement = document.documentElement; - - // Preliminary tests - div.setAttribute("className", "t"); - div.innerHTML = "
      a"; - - all = div.getElementsByTagName( "*" ); - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return {}; - } - - // First batch of supports tests - select = document.createElement( "select" ); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName( "input" )[ 0 ]; - - support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: ( div.firstChild.nodeType === 3 ), - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: ( a.getAttribute("href") === "/a" ), - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: ( input.value === "on" ), - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // Tests for enctype support on a form(#6743) - enctype: !!document.createElement("form").enctype, - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", - - // Will be defined later - submitBubbles: true, - changeBubbles: true, - focusinBubbles: false, - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - support.noCloneEvent = false; - }); - div.cloneNode( true ).fireEvent( "onclick" ); - } - - // Check if a radio maintains its value - // after being appended to the DOM - input = document.createElement("input"); - input.value = "t"; - input.setAttribute("type", "radio"); - support.radioValue = input.value === "t"; - - input.setAttribute("checked", "checked"); - div.appendChild( input ); - fragment = document.createDocumentFragment(); - fragment.appendChild( div.lastChild ); - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - fragment.removeChild( input ); - fragment.appendChild( div ); - - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( window.getComputedStyle ) { - marginDiv = document.createElement( "div" ); - marginDiv.style.width = "0"; - marginDiv.style.marginRight = "0"; - div.style.width = "2px"; - div.appendChild( marginDiv ); - support.reliableMarginRight = - ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; - } - - // Technique from Juriy Zaytsev - // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( div.attachEvent ) { - for( i in { - submit: 1, - change: 1, - focusin: 1 - }) { - eventName = "on" + i; - isSupported = ( eventName in div ); - if ( !isSupported ) { - div.setAttribute( eventName, "return;" ); - isSupported = ( typeof div[ eventName ] === "function" ); - } - support[ i + "Bubbles" ] = isSupported; - } - } - - fragment.removeChild( div ); - - // Null elements to avoid leaks in IE - fragment = select = opt = marginDiv = div = input = null; - - // Run tests that need a body at doc ready - jQuery(function() { - var container, outer, inner, table, td, offsetSupport, - conMarginTop, ptlm, vb, style, html, - body = document.getElementsByTagName("body")[0]; - - if ( !body ) { - // Return for frameset docs that don't have a body - return; - } - - conMarginTop = 1; - ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; - vb = "visibility:hidden;border:0;"; - style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; - html = "
      " + - "" + - "
      "; - - container = document.createElement("div"); - container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; - body.insertBefore( container, body.firstChild ); - - // Construct the test element - div = document.createElement("div"); - container.appendChild( div ); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - div.innerHTML = "
      t
      "; - tds = div.getElementsByTagName( "td" ); - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE <= 8 fail this test) - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - - // Figure out if the W3C box model works as expected - div.innerHTML = ""; - div.style.width = div.style.paddingLeft = "1px"; - jQuery.boxModel = support.boxModel = div.offsetWidth === 2; - - if ( typeof div.style.zoom !== "undefined" ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "
      "; - support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); - } - - div.style.cssText = ptlm + vb; - div.innerHTML = html; - - outer = div.firstChild; - inner = outer.firstChild; - td = outer.nextSibling.firstChild.firstChild; - - offsetSupport = { - doesNotAddBorder: ( inner.offsetTop !== 5 ), - doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) - }; - - inner.style.position = "fixed"; - inner.style.top = "20px"; - - // safari subtracts parent border width here which is 5px - offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); - inner.style.position = inner.style.top = ""; - - outer.style.overflow = "hidden"; - outer.style.position = "relative"; - - offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); - offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); - - body.removeChild( container ); - div = container = null; - - jQuery.extend( support, offsetSupport ); - }); - - return support; -})(); - - - - -var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([A-Z])/g; - -jQuery.extend({ - cache: {}, - - // Please use with caution - uuid: 0, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var privateCache, thisCache, ret, - internalKey = jQuery.expando, - getByName = typeof name === "string", - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, - isEvents = name === "events"; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ internalKey ] = id = ++jQuery.uuid; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // Avoids exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - privateCache = thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Users should not attempt to inspect the internal events object using jQuery.data, - // it is undocumented and subject to change. But does anyone listen? No. - if ( isEvents && !thisCache[ name ] ) { - return privateCache.events; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( getByName ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; - }, - - removeData: function( elem, name, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, l, - - // Reference to internal data cache key - internalKey = jQuery.expando, - - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ internalKey ] : internalKey; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split( " " ); - } - } - } - - for ( i = 0, l = name.length; i < l; i++ ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - // Ensure that `cache` is not a window object #10080 - if ( jQuery.support.deleteExpando || !cache.setInterval ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the cache and need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ internalKey ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( internalKey ); - } else { - elem[ internalKey ] = null; - } - } - }, - - // For internal use only. - _data: function( elem, name, data ) { - return jQuery.data( elem, name, data, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var parts, attr, name, - data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { - attr = this[0].attributes; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - jQuery._data( this[0], "parsedAttrs", true ); - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var self = jQuery( this ), - args = [ parts[0], value ]; - - self.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - self.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - jQuery.isNumeric( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - for ( var name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - - - - -function handleQueueMarkDefer( elem, type, src ) { - var deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - defer = jQuery._data( elem, deferDataKey ); - if ( defer && - ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && - ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { - // Give room for hard-coded callbacks to fire first - // and eventually mark/queue something else on the element - setTimeout( function() { - if ( !jQuery._data( elem, queueDataKey ) && - !jQuery._data( elem, markDataKey ) ) { - jQuery.removeData( elem, deferDataKey, true ); - defer.fire(); - } - }, 0 ); - } -} - -jQuery.extend({ - - _mark: function( elem, type ) { - if ( elem ) { - type = ( type || "fx" ) + "mark"; - jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); - } - }, - - _unmark: function( force, elem, type ) { - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); - if ( count ) { - jQuery._data( elem, key, count ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }, - - queue: function( elem, type, data ) { - var q; - if ( elem ) { - type = ( type || "fx" ) + "queue"; - q = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - q.push( data ); - } - } - return q || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - hooks = {}; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - jQuery._data( elem, type + ".run", hooks ); - fn.call( elem, function() { - jQuery.dequeue( elem, type ); - }, hooks ); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue " + type + ".run", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; - type = type || "fx"; - - return this.queue( type, function( next, hooks ) { - var timeout = setTimeout( next, time ); - hooks.stop = function() { - clearTimeout( timeout ); - }; - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, object ) { - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { - count++; - tmp.add( resolve ); - } - } - resolve(); - return defer.promise(); - } -}); - - - - -var rclass = /[\n\t\r]/g, - rspace = /\s+/, - rreturn = /\r/g, - rtype = /^(?:button|input)$/i, - rfocusable = /^(?:button|input|object|select|textarea)$/i, - rclickable = /^a(?:rea)?$/i, - rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - getSetAttribute = jQuery.support.getSetAttribute, - nodeHook, boolHook, fixSpecified; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.prop ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - var classNames, i, l, elem, - setClass, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).addClass( value.call(this, j, this.className) ); - }); - } - - if ( value && typeof value === "string" ) { - classNames = value.split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className && classNames.length === 1 ) { - elem.className = value; - - } else { - setClass = " " + elem.className + " "; - - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { - setClass += classNames[ c ] + " "; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - var classNames, i, l, elem, className, c, cl; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( j ) { - jQuery( this ).removeClass( value.call(this, j, this.className) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - classNames = ( value || "" ).split( rspace ); - - for ( i = 0, l = this.length; i < l; i++ ) { - elem = this[ i ]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - className = (" " + elem.className + " ").replace( rclass, " " ); - for ( c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[ c ] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function( i ) { - jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, isFunction, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - ret = elem.value; - - return typeof ret === "string" ? - // handle most common string cases - ret.replace(rreturn, "") : - // handle cases where value is null/undef or number - ret == null ? "" : ret; - } - - return; - } - - isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, i, max, option, - index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - i = one ? index : 0; - max = one ? index + 1 : options.length; - for ( ; i < max; i++ ) { - option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attr: function( elem, name, value, pass ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( typeof elem.getAttribute === "undefined" ) { - return jQuery.prop( elem, name, value ); - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // All attributes are lowercase - // Grab necessary hook if one is defined - if ( notxml ) { - name = name.toLowerCase(); - hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, value ) { - var propName, attrNames, name, l, - i = 0; - - if ( value && elem.nodeType === 1 ) { - attrNames = value.toLowerCase().split( rspace ); - l = attrNames.length; - - for ( ; i < l; i++ ) { - name = attrNames[ i ]; - - if ( name ) { - propName = jQuery.propFix[ name ] || name; - - // See #9699 for explanation of this approach (setting first, then removal) - jQuery.attr( elem, name, "" ); - elem.removeAttribute( getSetAttribute ? name : propName ); - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && propName in elem ) { - elem[ propName ] = false; - } - } - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to it's default in case type is set after value - // This is for element creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }, - // Use the value property for back compat - // Use the nodeHook for button elements in IE6/7 (#1954) - value: { - get: function( elem, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.get( elem, name ); - } - return name in elem ? - elem.value : - null; - }, - set: function( elem, value, name ) { - if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { - return nodeHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var ret, hooks, notxml, - nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return; - } - - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - if ( notxml ) { - // Fix name and attach hooks - name = jQuery.propFix[ name ] || name; - hooks = jQuery.propHooks[ name ]; - } - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return ( elem[ name ] = value ); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: { - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabindex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - } -}); - -// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) -jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - // Align boolean attributes with corresponding properties - // Fall back to attribute presence where some booleans are not supported - var attrNode, - property = jQuery.prop( elem, name ); - return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - var propName; - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - // value is true since we know at this point it's type boolean and not false - // Set boolean attributes to the same name and set the DOM property - propName = jQuery.propFix[ name ] || name; - if ( propName in elem ) { - // Only set the IDL specifically if it already exists on the element - elem[ propName ] = true; - } - - elem.setAttribute( name, name.toLowerCase() ); - } - return name; - } -}; - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !getSetAttribute ) { - - fixSpecified = { - name: true, - id: true - }; - - // Use this for any attribute in IE6/7 - // This fixes almost every IE6/7 issue - nodeHook = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret; - ret = elem.getAttributeNode( name ); - return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? - ret.nodeValue : - undefined; - }, - set: function( elem, value, name ) { - // Set the existing or create a new attribute node - var ret = elem.getAttributeNode( name ); - if ( !ret ) { - ret = document.createAttribute( name ); - elem.setAttributeNode( ret ); - } - return ( ret.nodeValue = value + "" ); - } - }; - - // Apply the nodeHook to tabindex - jQuery.attrHooks.tabindex.set = nodeHook.set; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); - - // Set contenteditable to false on removals(#10429) - // Setting to empty string throws an error as an invalid value - jQuery.attrHooks.contenteditable = { - get: nodeHook.get, - set: function( elem, value, name ) { - if ( value === "" ) { - value = "false"; - } - nodeHook.set( elem, value, name ); - } - }; -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret === null ? undefined : ret; - } - }); - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Normalize to lowercase since IE uppercases css property names - return elem.style.cssText.toLowerCase() || undefined; - }, - set: function( elem, value ) { - return ( elem.style.cssText = "" + value ); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - return null; - } - }); -} - -// IE6/7 call enctype encoding -if ( !jQuery.support.enctype ) { - jQuery.propFix.enctype = "encoding"; -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); - } - } - }); -}); - - - - -var rformElems = /^(?:textarea|input|select)$/i, - rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, - rhoverHack = /\bhover(\.\S+)?\b/, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, - quickParse = function( selector ) { - var quick = rquickIs.exec( selector ); - if ( quick ) { - // 0 1 2 3 - // [ _, tag, id, class ] - quick[1] = ( quick[1] || "" ).toLowerCase(); - quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); - } - return quick; - }, - quickIs = function( elem, m ) { - var attrs = elem.attributes || {}; - return ( - (!m[1] || elem.nodeName.toLowerCase() === m[1]) && - (!m[2] || (attrs.id || {}).value === m[2]) && - (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) - ); - }, - hoverHack = function( events ) { - return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); - }; - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - add: function( elem, types, handler, data, selector ) { - - var elemData, eventHandle, events, - t, tns, type, namespaces, handleObj, - handleObjIn, quick, handlers, special; - - // Don't attach events to noData or text/comment nodes (allow plain objects tho) - if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - events = elemData.events; - if ( !events ) { - elemData.events = events = {}; - } - eventHandle = elemData.handle; - if ( !eventHandle ) { - elemData.handle = eventHandle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = jQuery.trim( hoverHack(types) ).split( " " ); - for ( t = 0; t < types.length; t++ ) { - - tns = rtypenamespace.exec( types[t] ) || []; - type = tns[1]; - namespaces = ( tns[2] || "" ).split( "." ).sort(); - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: tns[1], - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - quick: quickParse( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - handlers = events[ type ]; - if ( !handlers ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - - var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - t, tns, type, origType, namespaces, origCount, - j, events, special, handle, eventType, handleObj; - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = jQuery.trim( hoverHack( types || "" ) ).split(" "); - for ( t = 0; t < types.length; t++ ) { - tns = rtypenamespace.exec( types[t] ) || []; - type = origType = tns[1]; - namespaces = tns[2]; - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector? special.delegateType : special.bindType ) || type; - eventType = events[ type ] || []; - origCount = eventType.length; - namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; - - // Remove matching events - for ( j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !namespaces || namespaces.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - eventType.splice( j--, 1 ); - - if ( handleObj.selector ) { - eventType.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( eventType.length === 0 && origCount !== eventType.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery.removeData( elem, [ "events", "handle" ], true ); - } - }, - - // Events that are safe to short-circuit if no handlers are attached. - // Native DOM events should not be added, they may have inline handlers. - customEvent: { - "getData": true, - "setData": true, - "changeData": true - }, - - trigger: function( event, data, elem, onlyHandlers ) { - // Don't do events on text and comment nodes - if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { - return; - } - - // Event object or event type - var type = event.type || event, - namespaces = [], - cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf( "!" ) >= 0 ) { - // Exclusive events trigger only for the exact event (no namespaces) - type = type.slice(0, -1); - exclusive = true; - } - - if ( type.indexOf( "." ) >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - - if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { - // No jQuery handlers for this event type, and it can't have inline handlers - return; - } - - // Caller can pass in an Event, Object, or just an event type string - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - new jQuery.Event( type, event ) : - // Just the event type (string) - new jQuery.Event( type ); - - event.type = type; - event.isTrigger = true; - event.exclusive = exclusive; - event.namespace = namespaces.join( "." ); - event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; - ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; - - // Handle a global trigger - if ( !elem ) { - - // TODO: Stop taunting the data cache; remove global events and always attach to document - cache = jQuery.cache; - for ( i in cache ) { - if ( cache[ i ].events && cache[ i ].events[ type ] ) { - jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); - } - } - return; - } - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data != null ? jQuery.makeArray( data ) : []; - data.unshift( event ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - eventPath = [[ elem, special.bindType || type ]]; - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; - old = null; - for ( ; cur; cur = cur.parentNode ) { - eventPath.push([ cur, bubbleType ]); - old = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( old && old === elem.ownerDocument ) { - eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); - } - } - - // Fire handlers on the event path - for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { - - cur = eventPath[i][0]; - event.type = eventPath[i][1]; - - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - // Note that this is a bare JS function and not a jQuery handler - handle = ontype && cur[ ontype ]; - if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { - event.preventDefault(); - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - // IE<9 dies on focus/blur to hidden element (#1486) - if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - old = elem[ ontype ]; - - if ( old ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - elem[ type ](); - jQuery.event.triggered = undefined; - - if ( old ) { - elem[ ontype ] = old; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event || window.event ); - - var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), - delegateCount = handlers.delegateCount, - args = [].slice.call( arguments, 0 ), - run_all = !event.exclusive && !event.namespace, - handlerQueue = [], - i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Determine handlers that should run if there are delegated events - // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) - if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { - - // Pregenerate a single jQuery object for reuse with .is() - jqcur = jQuery(this); - jqcur.context = this.ownerDocument || this; - - for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { - selMatch = {}; - matches = []; - jqcur[0] = cur; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - sel = handleObj.selector; - - if ( selMatch[ sel ] === undefined ) { - selMatch[ sel ] = ( - handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) - ); - } - if ( selMatch[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, matches: matches }); - } - } - } - - // Add the remaining (directly-bound) handlers - if ( handlers.length > delegateCount ) { - handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); - } - - // Run delegates first; they may want to stop propagation beneath us - for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { - matched = handlerQueue[ i ]; - event.currentTarget = matched.elem; - - for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { - handleObj = matched.matches[ j ]; - - // Triggered event must either 1) be non-exclusive and have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { - - event.data = handleObj.data; - event.handleObj = handleObj; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - return event.result; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** - props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var eventDoc, doc, body, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, - originalEvent = event, - fixHook = jQuery.event.fixHooks[ event.type ] || {}, - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = jQuery.Event( originalEvent ); - - for ( i = copy.length; i; ) { - prop = copy[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Target should not be a text node (#504, Safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) - if ( event.metaKey === undefined ) { - event.metaKey = event.ctrlKey; - } - - return fixHook.filter? fixHook.filter( event, originalEvent ) : event; - }, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady - }, - - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - - focus: { - delegateType: "focusin" - }, - blur: { - delegateType: "focusout" - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( jQuery.isWindow( this ) ) { - this.onbeforeunload = eventHandle; - } - }, - - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -// Some plugins are using, but it's undocumented/deprecated and will be removed. -// The 1.7 special event interface should provide all the hooks needed now. -jQuery.event.handle = jQuery.event.dispatch; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var target = this, - related = event.relatedTarget, - handleObj = event.handleObj, - selector = handleObj.selector, - ret; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !form._submit_attached ) { - jQuery.event.add( form, "submit._submit", function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - }); - form._submit_attached = true; - } - }); - // return undefined since we don't need an event listener - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !jQuery.support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - jQuery.event.simulate( "change", this, event, true ); - } - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - elem._change_attached = true; - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0, - handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var origFn, type; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on.call( this, types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - var handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( var type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - bind: function( types, data, fn ) { - return this.on( types, null, data, fn ); - }, - unbind: function( types, fn ) { - return this.off( types, null, fn ); - }, - - live: function( types, data, fn ) { - jQuery( this.context ).on( types, this.selector, data, fn ); - return this; - }, - die: function( types, fn ) { - jQuery( this.context ).off( types, this.selector || "**", fn ); - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.on( types, selector, data, fn ); - }, - undelegate: function( selector, types, fn ) { - // ( namespace ) or ( selector, types [, fn] ) - return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } - - if ( rkeyEvent.test( name ) ) { - jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; - } - - if ( rmouseEvent.test( name ) ) { - jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; - } -}); - - - -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - expando = "sizcache" + (Math.random() + '').replace('.', ''), - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rReturn = /\r\n/g, - rNonWord = /\W/; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; - - var origContext = context; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context, seed ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set, seed ); - } - } - - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set, i, len, match, type, left; - - if ( !expr ) { - return []; - } - - for ( i = 0, len = Expr.order.length; i < len; i++ ) { - type = Expr.order[i]; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - left = match[1]; - match.splice( 1, 1 ); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); - - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; - } - - return { set: set, expr: expr }; -}; - -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - type, found, item, filter, left, - i, pass, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); - - while ( expr && set.length ) { - for ( type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - filter = Expr.filter[ type ]; - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - pass = not ^ found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Utility function for retreiving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -var getText = Sizzle.getText = function( elem ) { - var i, node, - nodeType = elem.nodeType, - ret = ""; - - if ( nodeType ) { - if ( nodeType === 1 || nodeType === 9 ) { - // Use textContent || innerText for elements - if ( typeof elem.textContent === 'string' ) { - return elem.textContent; - } else if ( typeof elem.innerText === 'string' ) { - // Replace IE's carriage returns - return elem.innerText.replace( rReturn, '' ); - } else { - // Traverse it's children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - } else { - - // If no nodeType, this is expected to be an array - for ( i = 0; (node = elem[i]); i++ ) { - // Do not traverse comment nodes - if ( node.nodeType !== 8 ) { - ret += getText( node ); - } - } - } - return ret; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); - } - }, - - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } - }, - - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, - preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, - - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { - Sizzle.error( match[0] ); - } - - match[2] = match[2].replace(/^\+|\s*/g, ''); - - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { - Sizzle.error( match[0] ); - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; - } - }, - - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; - }, - - disabled: function( elem ) { - return elem.disabled === true; - }, - - checked: function( elem ) { - return elem.checked === true; - }, - - selected: function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } - } - - return true; - - } else { - Sizzle.error( name ); - } - }, - - CHILD: function( elem, match ) { - var first, last, - doneName, parent, cache, - count, diff, - type = match[1], - node = elem; - - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - if ( type === "first" ) { - return true; - } - - node = elem; - - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - return true; - - case "nth": - first = match[2]; - last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - doneName = match[0]; - parent = elem.parentNode; - - if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { - count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent[ expando ] = doneName; - } - - diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Sizzle.attr ? - Sizzle.attr( elem, name ) : - Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - !type && Sizzle.attr ? - result != null : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); -} - -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - - } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - - } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Fallback to using sourceIndex (in IE) if it's available on both nodes - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - // If the nodes are siblings (or identical) we can do a quick check - if ( aup === bup ) { - return siblingCheck( a, b ); - - // If no parents were found then the nodes are disconnected - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - // Otherwise they're somewhere else in the tree so we need - // to build up a full list of the parentNodes for comparison - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - // Start walking down the tree looking for a discrepancy - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - // We ended someplace up the tree so do a sibling check - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - // release memory in IE - root = form = null; -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - // release memory in IE - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

      "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - // release memory in IE - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9 fails this) - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - // Make sure that attribute selectors are quoted - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || !disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9, so check for that - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
      "; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - // release memory in IE - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem[ expando ] === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem[ expando ] = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem[ expando ] === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem[ expando ] = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; - -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; - -} else { - Sizzle.contains = function() { - return false; - }; -} - -Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context, seed ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet, seed ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -// Override sizzle attribute retrieval -Sizzle.attr = jQuery.attr; -Sizzle.selectors.attrMap = {}; -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})(); - - -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - isSimple = /^.[^:#\[\.,]*$/, - slice = Array.prototype.slice, - POS = jQuery.expr.match.POS, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && ( - typeof selector === "string" ? - // If this is a positional selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - POS.test( selector ) ? - jQuery( selector, this.context ).index( this[0] ) >= 0 : - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var ret = [], i, l, cur = this[0]; - - // Array (deprecated as of jQuery 1.7) - if ( jQuery.isArray( selectors ) ) { - var level = 1; - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( i = 0; i < selectors.length; i++ ) { - - if ( jQuery( cur ).is( selectors[ i ] ) ) { - ret.push({ selector: selectors[ i ], elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, slice.call( arguments ).join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return ( elem === qualifier ) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; - }); -} - - - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rtagName = /<([\w:]+)/, - rtbody = /", "" ], - legend: [ 1, "
      ", "
      " ], - thead: [ 1, "", "
      " ], - tr: [ 2, "", "
      " ], - td: [ 3, "", "
      " ], - col: [ 2, "", "
      " ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }, - safeFragment = createSafeFragment( document ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and - -or as a CommonJS, [Node.js](http://nodejs.org) or AMD module using `require`. - -For Node, put the *bignumber.js* file into the same directory as the file that is requiring it and use - - var BigNumber = require('./bignumber'); - -or put it in a *node_modules* directory within the directory and use `require('bignumber')`. - -The library is also available from the [npm](https://npmjs.org/) registry, so - - $ npm install bignumber.js - -will install this entire directory in a *node_modules* directory within the current directory. -It can then be loaded with `require('bignumber.js')`. - -To load with AMD loader libraries such as [requireJS](http://requirejs.org/): - - require(['bignumber'], function(BigNumber) { - // Use BigNumber here in local scope. No global BigNumber. - }); - -## Use - -*In all examples below, `var`, semicolons and `toString` calls are not shown. -If a commented-out value is in quotes it means `toString` has been called on the preceding expression.* - -The library exports a single function: BigNumber, the constructor of BigNumber instances. -It accepts a value of type Number, String or BigNumber Object, - - x = new BigNumber(123.4567) - y = BigNumber('123456.7e-3') // 'new' is optional - z = new BigNumber(x) - x.equals(y) && y.equals(z) && x.equals(z) // true - -and a base from 2 to 36 inclusive can be specified. - - x = new BigNumber(1011, 2) // "11" - y = new BigNumber('zz.9', 36) // "1295.25" - z = x.plus(y) // "1306.25" - -A BigNumber is immutable in the sense that it is not changed by its methods. - - 0.3 - 0.1 // 0.19999999999999998 - x = new BigNumber(0.3) - x.minus(0.1) // "0.2" - x // "0.3" - -The methods that return a BigNumber can be chained. - - x.dividedBy(y).plus(z).times(9).floor() - x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').ceil() - -Method names over 5 letters in length have a shorter alias. - - x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)) // true - x.cmp(y.mod(z).neg()) == 1 && x.comparedTo(y.modulo(z).negated()) == 1 // true - -Like Javascript's Number type, there are `toExponential`, `toFixed` and `toPrecision` methods - - x = new BigNumber(255.5) - x.toExponential(5) // "2.55500e+2" - x.toFixed(5) // "255.50000" - x.toPrecision(5) // "255.50" - - and a base can be specified for `toString`. - - x.toString(16) // "ff.8" - -The maximum number of decimal places and the rounding mode for division, square root, base conversion, and negative power operations is set by a configuration object passed to the `config` method of the `BigNumber` constructor. -The other arithmetic operations always give the exact result. - - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }) - // Alternatively, BigNumber.config( 10, 4 ); - - x = new BigNumber(2); - y = new BigNumber(3); - z = x.div(y) // "0.6666666667" - z.sqrt() // "0.8164965809" - z.pow(-3) // "3.3749999995" - z.toString(2) // "0.1010101011" - z.times(z) // "0.44444444448888888889" - z.times(z).round(10) // "0.4444444445" - -There is a `toFraction` method with an optional *maximum denominator* argument - - y = new BigNumber(355) - pi = y.dividedBy(113) // "3.1415929204" - pi.toFraction() // [ "7853982301", "2500000000" ] - pi.toFraction(1000) // [ "355", "113" ] - -and `isNaN` and `isFinite` methods, as `NaN` and `Infinity` are valid `BigNumber` values. - - x = new BigNumber(NaN) // "NaN" - y = new BigNumber(Infinity) // "Infinity" - x.isNaN() && !y.isNaN() && !x.isFinite() && !y.isFinite() // true - -The value of a BigNumber is stored in a decimal floating point format in terms of a coefficient, exponent and sign. - - x = new BigNumber(-123.456); - x.c // "1,2,3,4,5,6" coefficient (i.e. significand) - x.e // 2 exponent - x.s // -1 sign - -For futher information see the API reference in the *doc* folder. - -## Test - -The *test* directory contains the test scripts for each method. - -The tests can be run with Node or a browser. - -For a quick test of all the methods, from a command-line shell at the *test/* directory - - $ node quick-test - -To test a single method in more depth, e.g. - - $ node toFraction - -To test all the methods in more depth - - $ node every-test - -For the browser, see *quick-test.html*, *single-test.html* and *every-test.html* in the *test/browser* directory. - -*bignumber-vs-number.html* enables some of the methods of bignumber.js to be compared with those of Javascript's Number type. - -## Performance - -The *perf* directory contains two applications and a *lib* directory containing the BigDecimal libraries used by both. - -*bignumber-vs-bigdecimal.html* tests the performance of bignumber.js against the Javascript translations of two versions of BigDecimal, its use should be more or less self-explanatory. -(The GWT version doesn't work in IE 6.) - -* GWT: java.math.BigDecimal - -* ICU4J: com.ibm.icu.math.BigDecimal - - -The BigDecimal in Node's npm registry is the GWT version. Despite its seeming popularity I have found it to have some serious bugs, see the Node script *perf/lib/bigdecimal_GWT/bugs.js* for examples of flaws in its *remainder*, *divide* and *compareTo* methods. - -*bigtime.js* is a Node command-line application which tests the performance of bignumber.js against the GWT version of BigDecimal from the npm registry. - -For example, to compare the time taken by the bignumber.js `plus` method and the BigDecimal `add` method: - - $ node bigtime plus 10000 40 - -This will time 10000 calls to each, using operands of up to 40 random digits and will check that the results match. - -For help: - - $ node bigtime -h - -See the README in the directory for more information. - -## Build - -I.e. minify. - -For Node, if uglify-js is installed globally ( `npm install uglify-js -g` ) then - - uglifyjs -o ./bignumber.min.js ./bignumber.js - -will create *bignumber.min.js*. - -## Feedback - -Bugs: surely not! Open an issue, please. -Other feedback to: - -Michael Mclaughlin -M8ch88l@gmail.com - -Bitcoin donation to: -**1KdnpLRSkWJs4FXPzj7pQ39H4Ur6Urydti** -Thank you - -## Licence - -See LICENCE. - -## Change Log - -####1.0.1 -* Bugfix: error messages with incorrect method name -* Corrected a couple of spelling mistakes in comments -* Very minor regex tweaks - -####1.0.0 -* 8/11/2012 Initial release - -[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/50b85fd919b406ef9312551092a95fb7 "githalytics.com")](http://githalytics.com/MikeMcl/bignumber.js) diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js deleted file mode 100644 index c79e611..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.js +++ /dev/null @@ -1,1909 +0,0 @@ -/* bignumber.js v1.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */ -;(function ( global ) { - 'use strict'; - - /* - bignumber.js v1.0.1 - A Javascript library for arbitrary-precision arithmetic. - https://github.com/MikeMcl/bignumber.js - Copyright (c) 2012 Michael Mclaughlin - MIT Expat Licence - */ - - /*********************************** DEFAULTS ************************************/ - - /* - * The default values below must be integers within the stated ranges (inclusive). - * Most of these values can be changed programmatically using BigNumber.config(). - */ - - /* - * The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, - * MAX_EXP, and the argument to toFixed, toPrecision and toExponential, beyond - * which an exception is thrown (if ERRORS is true). - */ - var MAX = 1E9, // 0 to 1e+9 - - // Limit of magnitude of exponent argument to toPower. - MAX_POWER = 1E6, // 1 to 1e+6 - - // The maximum number of decimal places for operations involving division. - DECIMAL_PLACES = 20, // 0 to MAX - - /* - * The rounding mode used when rounding to the above decimal places, and when - * using toFixed, toPrecision and toExponential, and round (default value). - * UP 0 Away from zero. - * DOWN 1 Towards zero. - * CEIL 2 Towards +Infinity. - * FLOOR 3 Towards -Infinity. - * HALF_UP 4 Towards nearest neighbour. If equidistant, up. - * HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. - * HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. - * HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. - * HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. - */ - ROUNDING_MODE = 4, // 0 to 8 - - // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] - - // The exponent value at and beneath which toString returns exponential notation. - // Number type: -7 - TO_EXP_NEG = -7, // 0 to -MAX - - // The exponent value at and above which toString returns exponential notation. - // Number type: 21 - TO_EXP_POS = 21, // 0 to MAX - - // RANGE : [MIN_EXP, MAX_EXP] - - // The minimum exponent value, beneath which underflow to zero occurs. - // Number type: -324 (5e-324) - MIN_EXP = -MAX, // -1 to -MAX - - // The maximum exponent value, above which overflow to Infinity occurs. - // Number type: 308 (1.7976931348623157e+308) - MAX_EXP = MAX, // 1 to MAX - - // Whether BigNumber Errors are ever thrown. - // CHANGE parseInt to parseFloat if changing ERRORS to false. - ERRORS = true, // true or false - parse = parseInt, // parseInt or parseFloat - - /***********************************************************************************/ - - P = BigNumber.prototype, - DIGITS = '0123456789abcdefghijklmnopqrstuvwxyz', - outOfRange, - id = 0, - isValid = /^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i, - trim = String.prototype.trim || function () {return this.replace(/^\s+|\s+$/g, '')}, - ONE = BigNumber(1); - - - // CONSTRUCTOR - - - /* - * The exported function. - * Create and return a new instance of a BigNumber object. - * - * n {number|string|BigNumber} A numeric value. - * [b] {number} The base of n. Integer, 2 to 36 inclusive. - */ - function BigNumber( n, b ) { - var isNum, i, j, - x = this; - - // Enable constructor usage without new. - if ( !(x instanceof BigNumber) ) { - return new BigNumber( n, b ) - } - - // Duplicate. - if ( n instanceof BigNumber ) { - id = 0; - - // i is undefined. - if ( b !== i) { - n = n['toS']() - } else { - x['s'] = n['s']; - x['e'] = n['e']; - x['c'] = ( n = n['c'] ) ? n.slice() : n; - return - } - } - - // Check if number and if minus zero. Convert to string. - if ( typeof n != 'string' ) { - n = ( isNum = Object.prototype.toString.call(n) == '[object Number]' ) && - n === 0 && 1 / n < 0 ? '-0' : n + '' - } - - if ( b === i && isValid.test(n) ) { - - // Determine sign. - x['s'] = n.charAt(0) == '-' ? ( n = n.slice(1), -1 ) : 1 - - // Either n is not a valid BigNumber or a base has been specified. - } else { - - // Enable exponential notation to be used with base 10 argument. - // Ensure return value is rounded to DECIMAL_PLACES as with other bases. - if ( b == 10 ) { - return new BigNumber(n)['div'](ONE) - } - - /* - * Follow Javascript numbers in allowing numbers with fraction digits - * to omit a leading zero and allowing a leading plus sign e.g. '+.5' for '0.5'. - */ - n = trim.call(n).replace( /^\+(?!-)/, '' ).replace( /^(-?)\./, '$10.' ); - - x['s'] = n.charAt(0) == '-' ? ( n = n.replace( /^-(?!-)/, '' ), -1 ) : 1; - - if ( b != null ) { - - if ( ( b == (b | 0) || !ERRORS ) && - !( outOfRange = !( b >= 2 && b <= 36 ) ) ) { - - i = '[' + DIGITS.slice( 0, b = b | 0 ) + ']+'; - - // Test non-decimal number validity. - // Any number in exponential form will fail due to the e+/-. - if ( j = new RegExp( '^' + i + '(?:\\.' + i + ')?$', 'i' ).test(n) ) { - - if ( isNum ) { - if ( n.replace('.', '').length > 15 ) { - - // 'new BigNumber() number type has more than 15 significant digits: {n}' - ifExceptionsThrow( n, 0 ) - } - - // Prevent later check for length on converted number. - isNum = !isNum - } - n = convert( n, 10, b, x['s'] ) - } else if ( n != 'Infinity' && n != 'NaN' ) { - - // 'new BigNumber() not a base {b} number: {n}' - ifExceptionsThrow( n, 1, b ); - n = 'NaN' - } - } else { - - // 'new BigNumber() base not an integer: {b}' - // 'new BigNumber() base out of range: {b}' - ifExceptionsThrow( b, 2 ); - - // Ignore base. - j = isValid.test(n) - } - } else { - j = isValid.test(n) - } - - if ( !j ) { - - // Infinity/NaN - x['c'] = x['e'] = null; - - // NaN - if ( n != 'Infinity' ) { - - // No exception on NaN. - if ( n != 'NaN' ) { - - // 'new BigNumber() not a number: {n}' - ifExceptionsThrow( n, 3 ) - } - x['s'] = null - } - id = 0; - - return - } - } - - // Decimal point? - if ( ( i = n.indexOf('.') ) > -1 ) { - n = n.replace( '.', '' ) - } - - // Exponential form? - if ( ( j = n.search(/e/i) ) > 0 ) { - - // Determine exponent. - if ( i < 0 ) { - i = j - } - i += +n.slice( j + 1 ); - n = n.substring( 0, j ) - - } else if ( i < 0 ) { - - // Integer. - i = n.length - } - - // Disallow numbers over 15 digits if number type. - if ( b = n.length, isNum && b > 15 ) { - - // 'new BigNumber() number type has more than 15 significant digits: {n}' - ifExceptionsThrow( n, 0 ) - } - - // Determine leading zeros. - for ( id = j = 0; n.charAt(j) == '0'; j++ ) { - } - - // Overflow? - if ( ( i -= j + 1 ) > MAX_EXP ) { - - // Infinity. - x['c'] = x['e'] = null - - // Zero or underflow? - } else if ( j == b || i < MIN_EXP ) { - - // Zero. - x['c'] = [ x['e'] = 0 ] - } else { - - // Determine trailing zeros. - for ( ; n.charAt(--b) == '0'; ) { - } - - x['e'] = i; - x['c'] = []; - - // Convert string to array of digits (without leading and trailing zeros). - for ( i = 0; j <= b; x['c'][i++] = +n.charAt(j++) ) { - } - } - } - - - // CONSTRUCTOR PROPERTIES/METHODS - - - BigNumber['ROUND_UP'] = 0; - BigNumber['ROUND_DOWN'] = 1; - BigNumber['ROUND_CEIL'] = 2; - BigNumber['ROUND_FLOOR'] = 3; - BigNumber['ROUND_HALF_UP'] = 4; - BigNumber['ROUND_HALF_DOWN'] = 5; - BigNumber['ROUND_HALF_EVEN'] = 6; - BigNumber['ROUND_HALF_CEIL'] = 7; - BigNumber['ROUND_HALF_FLOOR'] = 8; - - - /* - * Configure infrequently-changing library-wide settings. - * - * Accept an object or an argument list, with one or many of the following - * properties or parameters respectively: - * [ DECIMAL_PLACES [, ROUNDING_MODE [, EXPONENTIAL_AT [, RANGE [, ERRORS ]]]]] - * - * E.g. - * BigNumber.config(20, 4) is equivalent to - * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) - * Ignore properties/parameters set to null or undefined. - * - * Return an object with the properties current values. - */ - BigNumber['config'] = function () { - var v, p, - i = 0, - r = {}, - a = arguments, - o = a[0], - c = 'config', - inRange = function ( n, lo, hi ) { - return !( ( outOfRange = n < lo || n > hi ) || - parse(n) != n && n !== 0 ) - }, - has = o && typeof o == 'object' - ? function () {if ( o.hasOwnProperty(p) ) return ( v = o[p] ) != null} - : function () {if ( a.length > i ) return ( v = a[i++] ) != null}; - - // [DECIMAL_PLACES] {number} Integer, 0 to MAX inclusive. - if ( has( p = 'DECIMAL_PLACES' ) ) { - - if ( inRange( v, 0, MAX ) ) { - DECIMAL_PLACES = v | 0 - } else { - - // 'config() DECIMAL_PLACES not an integer: {v}' - // 'config() DECIMAL_PLACES out of range: {v}' - ifExceptionsThrow( v, p, c ) - } - } - r[p] = DECIMAL_PLACES; - - // [ROUNDING_MODE] {number} Integer, 0 to 8 inclusive. - if ( has( p = 'ROUNDING_MODE' ) ) { - - if ( inRange( v, 0, 8 ) ) { - ROUNDING_MODE = v | 0 - } else { - - // 'config() ROUNDING_MODE not an integer: {v}' - // 'config() ROUNDING_MODE out of range: {v}' - ifExceptionsThrow( v, p, c ) - } - } - r[p] = ROUNDING_MODE; - - /* - * [EXPONENTIAL_AT] {number|number[]} Integer, -MAX to MAX inclusive or - * [ integer -MAX to 0 inclusive, 0 to MAX inclusive ]. - */ - if ( has( p = 'EXPONENTIAL_AT' ) ) { - - if ( inRange( v, -MAX, MAX ) ) { - TO_EXP_NEG = -( TO_EXP_POS = ~~( v < 0 ? -v : +v ) ) - } else if ( !outOfRange && v && inRange( v[0], -MAX, 0 ) && - inRange( v[1], 0, MAX ) ) { - TO_EXP_NEG = ~~v[0], TO_EXP_POS = ~~v[1] - } else { - - // 'config() EXPONENTIAL_AT not an integer or not [integer, integer]: {v}' - // 'config() EXPONENTIAL_AT out of range or not [negative, positive: {v}' - ifExceptionsThrow( v, p, c, 1 ) - } - } - r[p] = [ TO_EXP_NEG, TO_EXP_POS ]; - - /* - * [RANGE][ {number|number[]} Non-zero integer, -MAX to MAX inclusive or - * [ integer -MAX to -1 inclusive, integer 1 to MAX inclusive ]. - */ - if ( has( p = 'RANGE' ) ) { - - if ( inRange( v, -MAX, MAX ) && ~~v ) { - MIN_EXP = -( MAX_EXP = ~~( v < 0 ? -v : +v ) ) - } else if ( !outOfRange && v && inRange( v[0], -MAX, -1 ) && - inRange( v[1], 1, MAX ) ) { - MIN_EXP = ~~v[0], MAX_EXP = ~~v[1] - } else { - - // 'config() RANGE not a non-zero integer or not [integer, integer]: {v}' - // 'config() RANGE out of range or not [negative, positive: {v}' - ifExceptionsThrow( v, p, c, 1, 1 ) - } - } - r[p] = [ MIN_EXP, MAX_EXP ]; - - // [ERRORS] {boolean|number} true, false, 1 or 0. - if ( has( p = 'ERRORS' ) ) { - - if ( v === !!v || v === 1 || v === 0 ) { - parse = ( outOfRange = id = 0, ERRORS = !!v ) - ? parseInt - : parseFloat - } else { - - // 'config() ERRORS not a boolean or binary digit: {v}' - ifExceptionsThrow( v, p, c, 0, 0, 1 ) - } - } - r[p] = ERRORS; - - return r - }; - - - // PRIVATE FUNCTIONS - - - // Assemble error messages. Throw BigNumber Errors. - function ifExceptionsThrow( arg, i, j, isArray, isRange, isErrors) { - if ( ERRORS ) { - var method = ['new BigNumber', 'cmp', 'div', 'eq', 'gt', 'gte', 'lt', - 'lte', 'minus', 'mod', 'plus', 'times', 'toFr' - ][ id ? id < 0 ? -id : id : 1 / id < 0 ? 1 : 0 ] + '()', - error = outOfRange ? ' out of range' : ' not a' + - ( isRange ? ' non-zero' : 'n' ) + ' integer'; - - error = ( [ - method + ' number type has more than 15 significant digits', - method + ' not a base ' + j + ' number', - method + ' base' + error, - method + ' not a number' ][i] || - j + '() ' + i + ( isErrors - ? ' not a boolean or binary digit' - : error + ( isArray - ? ' or not [' + ( outOfRange - ? ' negative, positive' - : ' integer, integer' ) + ' ]' - : '' ) ) ) + ': ' + arg; - - outOfRange = id = 0; - throw { - name : 'BigNumber Error', - message : error, - toString : function () {return this.name + ': ' + this.message} - } - } - } - - - /* - * Convert a numeric string of baseIn to a numeric string of baseOut. - */ - function convert( nStr, baseOut, baseIn, sign ) { - var e, dvs, dvd, nArr, fracArr, fracBN; - - // Convert string of base bIn to an array of numbers of baseOut. - // Eg. strToArr('255', 10) where baseOut is 16, returns [15, 15]. - // Eg. strToArr('ff', 16) where baseOut is 10, returns [2, 5, 5]. - function strToArr( str, bIn ) { - var j, - i = 0, - strL = str.length, - arrL, - arr = [0]; - - for ( bIn = bIn || baseIn; i < strL; i++ ) { - - for ( arrL = arr.length, j = 0; j < arrL; arr[j] *= bIn, j++ ) { - } - - for ( arr[0] += DIGITS.indexOf( str.charAt(i) ), j = 0; - j < arr.length; - j++ ) { - - if ( arr[j] > baseOut - 1 ) { - - if ( arr[j + 1] == null ) { - arr[j + 1] = 0 - } - arr[j + 1] += arr[j] / baseOut ^ 0; - arr[j] %= baseOut - } - } - } - - return arr.reverse() - } - - // Convert array to string. - // E.g. arrToStr( [9, 10, 11] ) becomes '9ab' (in bases above 11). - function arrToStr( arr ) { - var i = 0, - arrL = arr.length, - str = ''; - - for ( ; i < arrL; str += DIGITS.charAt( arr[i++] ) ) { - } - - return str - } - - nStr = nStr.toLowerCase(); - - /* - * If non-integer convert integer part and fraction part separately. - * Convert the fraction part as if it is an integer than use division to - * reduce it down again to a value less than one. - */ - if ( ( e = nStr.indexOf( '.' ) ) > -1 ) { - - /* - * Calculate the power to which to raise the base to get the number - * to divide the fraction part by after it has been converted as an - * integer to the required base. - */ - e = nStr.length - e - 1; - - // Use toFixed to avoid possible exponential notation. - dvs = strToArr( new BigNumber(baseIn)['pow'](e)['toF'](), 10 ); - - nArr = nStr.split('.'); - - // Convert the base of the fraction part (as integer). - dvd = strToArr( nArr[1] ); - - // Convert the base of the integer part. - nArr = strToArr( nArr[0] ); - - // Result will be a BigNumber with a value less than 1. - fracBN = divide( dvd, dvs, dvd.length - dvs.length, sign, baseOut, - - // Is least significant digit of integer part an odd number? - nArr[nArr.length - 1] & 1 ); - - fracArr = fracBN['c']; - - // e can be <= 0 ( if e == 0, fracArr is [0] or [1] ). - if ( e = fracBN['e'] ) { - - // Append zeros according to the exponent of the result. - for ( ; ++e; fracArr.unshift(0) ) { - } - - // Append the fraction part to the converted integer part. - nStr = arrToStr(nArr) + '.' + arrToStr(fracArr) - - // fracArr is [1]. - // Fraction digits rounded up, so increment last digit of integer part. - } else if ( fracArr[0] ) { - - if ( nArr[ e = nArr.length - 1 ] < baseOut - 1 ) { - ++nArr[e]; - nStr = arrToStr(nArr) - } else { - nStr = new BigNumber( arrToStr(nArr), - baseOut )['plus'](ONE)['toS'](baseOut) - } - - // fracArr is [0]. No fraction digits. - } else { - nStr = arrToStr(nArr) - } - } else { - - // Simple integer. Convert base. - nStr = arrToStr( strToArr(nStr) ) - } - - return nStr - } - - - // Perform division in the specified base. Called by div and convert. - function divide( dvd, dvs, exp, s, base, isOdd ) { - var dvsL, dvsT, next, cmp, remI, - dvsZ = dvs.slice(), - dvdI = dvsL = dvs.length, - dvdL = dvd.length, - rem = dvd.slice( 0, dvsL ), - remL = rem.length, - quo = new BigNumber(ONE), - qc = quo['c'] = [], - qi = 0, - dig = DECIMAL_PLACES + ( quo['e'] = exp ) + 1; - - quo['s'] = s; - s = dig < 0 ? 0 : dig; - - // Add zeros to make remainder as long as divisor. - for ( ; remL++ < dvsL; rem.push(0) ) { - } - - // Create version of divisor with leading zero. - dvsZ.unshift(0); - - do { - - // 'next' is how many times the divisor goes into the current remainder. - for ( next = 0; next < base; next++ ) { - - // Compare divisor and remainder. - if ( dvsL != ( remL = rem.length ) ) { - cmp = dvsL > remL ? 1 : -1 - } else { - for ( remI = -1, cmp = 0; ++remI < dvsL; ) { - - if ( dvs[remI] != rem[remI] ) { - cmp = dvs[remI] > rem[remI] ? 1 : -1; - break - } - } - } - - // Subtract divisor from remainder (if divisor < remainder). - if ( cmp < 0 ) { - - // Remainder cannot be more than one digit longer than divisor. - // Equalise lengths using divisor with extra leading zero? - for ( dvsT = remL == dvsL ? dvs : dvsZ; remL; ) { - - if ( rem[--remL] < dvsT[remL] ) { - - for ( remI = remL; - remI && !rem[--remI]; - rem[remI] = base - 1 ) { - } - --rem[remI]; - rem[remL] += base - } - rem[remL] -= dvsT[remL] - } - for ( ; !rem[0]; rem.shift() ) { - } - } else { - break - } - } - - // Add the 'next' digit to the result array. - qc[qi++] = cmp ? next : ++next; - - // Update the remainder. - rem[0] && cmp - ? ( rem[remL] = dvd[dvdI] || 0 ) - : ( rem = [ dvd[dvdI] ] ) - - } while ( ( dvdI++ < dvdL || rem[0] != null ) && s-- ); - - // Leading zero? Do not remove if result is simply zero (qi == 1). - if ( !qc[0] && qi != 1) { - - // There can't be more than one zero. - --quo['e']; - qc.shift() - } - - // Round? - if ( qi > dig ) { - rnd( quo, DECIMAL_PLACES, base, isOdd, rem[0] != null ) - } - - // Overflow? - if ( quo['e'] > MAX_EXP ) { - - // Infinity. - quo['c'] = quo['e'] = null - - // Underflow? - } else if ( quo['e'] < MIN_EXP ) { - - // Zero. - quo['c'] = [quo['e'] = 0] - } - - return quo - } - - - /* - * Return a string representing the value of BigNumber n in normal or - * exponential notation rounded to the specified decimal places or - * significant digits. - * Called by toString, toExponential (exp 1), toFixed, and toPrecision (exp 2). - * d is the index (with the value in normal notation) of the digit that may be - * rounded up. - */ - function format( n, d, exp ) { - - // Initially, i is the number of decimal places required. - var i = d - (n = new BigNumber(n))['e'], - c = n['c']; - - // +-Infinity or NaN? - if ( !c ) { - return n['toS']() - } - - // Round? - if ( c.length > ++d ) { - rnd( n, i, 10 ) - } - - // Recalculate d if toFixed as n['e'] may have changed if value rounded up. - i = c[0] == 0 ? i + 1 : exp ? d : n['e'] + i + 1; - - // Append zeros? - for ( ; c.length < i; c.push(0) ) { - } - i = n['e']; - - /* - * toPrecision returns exponential notation if the number of significant - * digits specified is less than the number of digits necessary to - * represent the integer part of the value in normal notation. - */ - return exp == 1 || exp == 2 && ( --d < i || i <= TO_EXP_NEG ) - - // Exponential notation. - ? ( n['s'] < 0 && c[0] ? '-' : '' ) + ( c.length > 1 - ? ( c.splice( 1, 0, '.' ), c.join('') ) - : c[0] ) + ( i < 0 ? 'e' : 'e+' ) + i - - // Normal notation. - : n['toS']() - } - - - // Round if necessary. - // Called by divide, format, setMode and sqrt. - function rnd( x, dp, base, isOdd, r) { - var xc = x['c'], - isNeg = x['s'] < 0, - half = base / 2, - i = x['e'] + dp + 1, - - // 'next' is the digit after the digit that may be rounded up. - next = xc[i], - - /* - * 'more' is whether there are digits after 'next'. - * E.g. - * 0.005 (e = -3) to be rounded to 0 decimal places (dp = 0) gives i = -2 - * The 'next' digit is zero, and there ARE 'more' digits after it. - * 0.5 (e = -1) dp = 0 gives i = 0 - * The 'next' digit is 5 and there are no 'more' digits after it. - */ - more = r || i < 0 || xc[i + 1] != null; - - r = ROUNDING_MODE < 4 - ? ( next != null || more ) && - ( ROUNDING_MODE == 0 || - ROUNDING_MODE == 2 && !isNeg || - ROUNDING_MODE == 3 && isNeg ) - : next > half || next == half && - ( ROUNDING_MODE == 4 || more || - - /* - * isOdd is used in base conversion and refers to the least significant - * digit of the integer part of the value to be converted. The fraction - * part is rounded by this method separately from the integer part. - */ - ROUNDING_MODE == 6 && ( xc[i - 1] & 1 || !dp && isOdd ) || - ROUNDING_MODE == 7 && !isNeg || - ROUNDING_MODE == 8 && isNeg ); - - if ( i < 1 || !xc[0] ) { - xc.length = 0; - xc.push(0); - - if ( r ) { - - // 1, 0.1, 0.01, 0.001, 0.0001 etc. - xc[0] = 1; - x['e'] = -dp - } else { - - // Zero. - x['e'] = 0 - } - - return x - } - - // Remove any digits after the required decimal places. - xc.length = i--; - - // Round up? - if ( r ) { - - // Rounding up may mean the previous digit has to be rounded up and so on. - for ( --base; ++xc[i] > base; ) { - xc[i] = 0; - - if ( !i-- ) { - ++x['e']; - xc.unshift(1) - } - } - } - - // Remove trailing zeros. - for ( i = xc.length; !xc[--i]; xc.pop() ) { - } - - return x - } - - - // Round after setting the appropriate rounding mode. - // Handles ceil, floor and round. - function setMode( x, dp, rm ) { - var r = ROUNDING_MODE; - - ROUNDING_MODE = rm; - x = new BigNumber(x); - x['c'] && rnd( x, dp, 10 ); - ROUNDING_MODE = r; - - return x - } - - - // PROTOTYPE/INSTANCE METHODS - - - /* - * Return a new BigNumber whose value is the absolute value of this BigNumber. - */ - P['abs'] = P['absoluteValue'] = function () { - var x = new BigNumber(this); - - if ( x['s'] < 0 ) { - x['s'] = 1 - } - - return x - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber - * rounded to a whole number in the direction of Infinity. - */ - P['ceil'] = function () { - return setMode( this, 0, 2 ) - }; - - - /* - * Return - * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), - * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), - * 0 if they have the same value, - * or null if the value of either is NaN. - */ - P['comparedTo'] = P['cmp'] = function ( y, b ) { - var a, - x = this, - xc = x['c'], - yc = ( id = -id, y = new BigNumber( y, b ) )['c'], - i = x['s'], - j = y['s'], - k = x['e'], - l = y['e']; - - // Either NaN? - if ( !i || !j ) { - return null - } - - a = xc && !xc[0], b = yc && !yc[0]; - - // Either zero? - if ( a || b ) { - return a ? b ? 0 : -j : i - } - - // Signs differ? - if ( i != j ) { - return i - } - - // Either Infinity? - if ( a = i < 0, b = k == l, !xc || !yc ) { - return b ? 0 : !xc ^ a ? 1 : -1 - } - - // Compare exponents. - if ( !b ) { - return k > l ^ a ? 1 : -1 - } - - // Compare digit by digit. - for ( i = -1, - j = ( k = xc.length ) < ( l = yc.length ) ? k : l; - ++i < j; ) { - - if ( xc[i] != yc[i] ) { - return xc[i] > yc[i] ^ a ? 1 : -1 - } - } - // Compare lengths. - return k == l ? 0 : k > l ^ a ? 1 : -1 - }; - - - /* - * n / 0 = I - * n / N = N - * n / I = 0 - * 0 / n = 0 - * 0 / 0 = N - * 0 / N = N - * 0 / I = 0 - * N / n = N - * N / 0 = N - * N / N = N - * N / I = N - * I / n = I - * I / 0 = I - * I / N = N - * I / I = N - * - * Return a new BigNumber whose value is the value of this BigNumber - * divided by the value of BigNumber(y, b), rounded according to - * DECIMAL_PLACES and ROUNDING_MODE. - */ - P['dividedBy'] = P['div'] = function ( y, b ) { - var xc = this['c'], - xe = this['e'], - xs = this['s'], - yc = ( id = 2, y = new BigNumber( y, b ) )['c'], - ye = y['e'], - ys = y['s'], - s = xs == ys ? 1 : -1; - - // Either NaN/Infinity/0? - return !xe && ( !xc || !xc[0] ) || !ye && ( !yc || !yc[0] ) - - // Either NaN? - ? new BigNumber( !xs || !ys || - - // Both 0 or both Infinity? - ( xc ? yc && xc[0] == yc[0] : !yc ) - - // Return NaN. - ? NaN - - // x is 0 or y is Infinity? - : xc && xc[0] == 0 || !yc - - // Return +-0. - ? s * 0 - - // y is 0. Return +-Infinity. - : s / 0 ) - - : divide( xc, yc, xe - ye, s, 10 ) - }; - - - /* - * Return true if the value of this BigNumber is equal to the value of - * BigNumber(n, b), otherwise returns false. - */ - P['equals'] = P['eq'] = function ( n, b ) { - id = 3; - return this['cmp']( n, b ) === 0 - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber - * rounded to a whole number in the direction of -Infinity. - */ - P['floor'] = function () { - return setMode( this, 0, 3 ) - }; - - - /* - * Return true if the value of this BigNumber is greater than the value of - * BigNumber(n, b), otherwise returns false. - */ - P['greaterThan'] = P['gt'] = function ( n, b ) { - id = 4; - return this['cmp']( n, b ) > 0 - }; - - - /* - * Return true if the value of this BigNumber is greater than or equal to - * the value of BigNumber(n, b), otherwise returns false. - */ - P['greaterThanOrEqualTo'] = P['gte'] = function ( n, b ) { - id = 5; - return ( b = this['cmp']( n, b ) ) == 1 || b === 0 - }; - - - /* - * Return true if the value of this BigNumber is a finite number, otherwise - * returns false. - */ - P['isFinite'] = P['isF'] = function () { - return !!this['c'] - }; - - - /* - * Return true if the value of this BigNumber is NaN, otherwise returns - * false. - */ - P['isNaN'] = function () { - return !this['s'] - }; - - - /* - * Return true if the value of this BigNumber is negative, otherwise - * returns false. - */ - P['isNegative'] = P['isNeg'] = function () { - return this['s'] < 0 - }; - - - /* - * Return true if the value of this BigNumber is 0 or -0, otherwise returns - * false. - */ - P['isZero'] = P['isZ'] = function () { - return !!this['c'] && this['c'][0] == 0 - }; - - - /* - * Return true if the value of this BigNumber is less than the value of - * BigNumber(n, b), otherwise returns false. - */ - P['lessThan'] = P['lt'] = function ( n, b ) { - id = 6; - return this['cmp']( n, b ) < 0 - }; - - - /* - * Return true if the value of this BigNumber is less than or equal to the - * value of BigNumber(n, b), otherwise returns false. - */ - P['lessThanOrEqualTo'] = P['lte'] = function ( n, b ) { - id = 7; - return ( b = this['cmp']( n, b ) ) == -1 || b === 0 - }; - - - /* - * n - 0 = n - * n - N = N - * n - I = -I - * 0 - n = -n - * 0 - 0 = 0 - * 0 - N = N - * 0 - I = -I - * N - n = N - * N - 0 = N - * N - N = N - * N - I = N - * I - n = I - * I - 0 = I - * I - N = N - * I - I = N - * - * Return a new BigNumber whose value is the value of this BigNumber minus - * the value of BigNumber(y, b). - */ - P['minus'] = function ( y, b ) { - var d, i, j, xLTy, - x = this, - a = x['s']; - - b = ( id = 8, y = new BigNumber( y, b ) )['s']; - - // Either NaN? - if ( !a || !b ) { - return new BigNumber(NaN) - } - - // Signs differ? - if ( a != b ) { - return y['s'] = -b, x['plus'](y) - } - - var xc = x['c'], - xe = x['e'], - yc = y['c'], - ye = y['e']; - - if ( !xe || !ye ) { - - // Either Infinity? - if ( !xc || !yc ) { - return xc ? ( y['s'] = -b, y ) : new BigNumber( yc ? x : NaN ) - } - - // Either zero? - if ( !xc[0] || !yc[0] ) { - - // y is non-zero? - return yc[0] - ? ( y['s'] = -b, y ) - - // x is non-zero? - : new BigNumber( xc[0] - ? x - - // Both are zero. - : 0 ) - } - } - - // Determine which is the bigger number. - // Prepend zeros to equalise exponents. - if ( xc = xc.slice(), a = xe - ye ) { - d = ( xLTy = a < 0 ) ? ( a = -a, xc ) : ( ye = xe, yc ); - - for ( d.reverse(), b = a; b--; d.push(0) ) { - } - d.reverse() - } else { - - // Exponents equal. Check digit by digit. - j = ( ( xLTy = xc.length < yc.length ) ? xc : yc ).length; - - for ( a = b = 0; b < j; b++ ) { - - if ( xc[b] != yc[b] ) { - xLTy = xc[b] < yc[b]; - break - } - } - } - - // x < y? Point xc to the array of the bigger number. - if ( xLTy ) { - d = xc, xc = yc, yc = d; - y['s'] = -y['s'] - } - - /* - * Append zeros to xc if shorter. No need to add zeros to yc if shorter - * as subtraction only needs to start at yc.length. - */ - if ( ( b = -( ( j = xc.length ) - yc.length ) ) > 0 ) { - - for ( ; b--; xc[j++] = 0 ) { - } - } - - // Subtract yc from xc. - for ( b = yc.length; b > a; ){ - - if ( xc[--b] < yc[b] ) { - - for ( i = b; i && !xc[--i]; xc[i] = 9 ) { - } - --xc[i]; - xc[b] += 10 - } - xc[b] -= yc[b] - } - - // Remove trailing zeros. - for ( ; xc[--j] == 0; xc.pop() ) { - } - - // Remove leading zeros and adjust exponent accordingly. - for ( ; xc[0] == 0; xc.shift(), --ye ) { - } - - /* - * No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity - * when neither x or y are Infinity. - */ - - // Underflow? - if ( ye < MIN_EXP || !xc[0] ) { - - // Result must be zero. - xc = [ye = 0] - } - - return y['c'] = xc, y['e'] = ye, y - }; - - - /* - * n % 0 = N - * n % N = N - * 0 % n = 0 - * -0 % n = -0 - * 0 % 0 = N - * 0 % N = N - * N % n = N - * N % 0 = N - * N % N = N - * - * Return a new BigNumber whose value is the value of this BigNumber modulo - * the value of BigNumber(y, b). - */ - P['modulo'] = P['mod'] = function ( y, b ) { - var x = this, - xc = x['c'], - yc = ( id = 9, y = new BigNumber( y, b ) )['c'], - i = x['s'], - j = y['s']; - - // Is x or y NaN, or y zero? - b = !i || !j || yc && !yc[0]; - - if ( b || xc && !xc[0] ) { - return new BigNumber( b ? NaN : x ) - } - - x['s'] = y['s'] = 1; - b = y['cmp'](x) == 1; - x['s'] = i, y['s'] = j; - - return b - ? new BigNumber(x) - : ( i = DECIMAL_PLACES, j = ROUNDING_MODE, - DECIMAL_PLACES = 0, ROUNDING_MODE = 1, - x = x['div'](y), - DECIMAL_PLACES = i, ROUNDING_MODE = j, - this['minus']( x['times'](y) ) ) - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber - * negated, i.e. multiplied by -1. - */ - P['negated'] = P['neg'] = function () { - var x = new BigNumber(this); - - return x['s'] = -x['s'] || null, x - }; - - - /* - * n + 0 = n - * n + N = N - * n + I = I - * 0 + n = n - * 0 + 0 = 0 - * 0 + N = N - * 0 + I = I - * N + n = N - * N + 0 = N - * N + N = N - * N + I = N - * I + n = I - * I + 0 = I - * I + N = N - * I + I = I - * - * Return a new BigNumber whose value is the value of this BigNumber plus - * the value of BigNumber(y, b). - */ - P['plus'] = function ( y, b ) { - var d, - x = this, - a = x['s']; - - b = ( id = 10, y = new BigNumber( y, b ) )['s']; - - // Either NaN? - if ( !a || !b ) { - return new BigNumber(NaN) - } - - // Signs differ? - if ( a != b ) { - return y['s'] = -b, x['minus'](y) - } - - var xe = x['e'], - xc = x['c'], - ye = y['e'], - yc = y['c']; - - if ( !xe || !ye ) { - - // Either Infinity? - if ( !xc || !yc ) { - - // Return +-Infinity. - return new BigNumber( a / 0 ) - } - - // Either zero? - if ( !xc[0] || !yc[0] ) { - - // y is non-zero? - return yc[0] - ? y - : new BigNumber( xc[0] - - // x is non-zero? - ? x - - // Both are zero. Return zero. - : a * 0 ) - } - } - - // Prepend zeros to equalise exponents. - // Note: Faster to use reverse then do unshifts. - if ( xc = xc.slice(), a = xe - ye ) { - d = a > 0 ? ( ye = xe, yc ) : ( a = -a, xc ); - - for ( d.reverse(); a--; d.push(0) ) { - } - d.reverse() - } - - // Point xc to the longer array. - if ( xc.length - yc.length < 0 ) { - d = yc, yc = xc, xc = d - } - - /* - * Only start adding at yc.length - 1 as the - * further digits of xc can be left as they are. - */ - for ( a = yc.length, b = 0; a; - b = ( xc[--a] = xc[a] + yc[a] + b ) / 10 ^ 0, xc[a] %= 10 ) { - } - - // No need to check for zero, as +x + +y != 0 && -x + -y != 0 - - if ( b ) { - xc.unshift(b); - - // Overflow? (MAX_EXP + 1 possible) - if ( ++ye > MAX_EXP ) { - - // Infinity. - xc = ye = null - } - } - - // Remove trailing zeros. - for ( a = xc.length; xc[--a] == 0; xc.pop() ) { - } - - return y['c'] = xc, y['e'] = ye, y - }; - - - /* - * Return a BigNumber whose value is the value of this BigNumber raised to - * the power e. If e is negative round according to DECIMAL_PLACES and - * ROUNDING_MODE. - * - * e {number} Integer, -MAX_POWER to MAX_POWER inclusive. - */ - P['toPower'] = P['pow'] = function ( e ) { - - // e to integer, avoiding NaN or Infinity becoming 0. - var i = e * 0 == 0 ? e | 0 : e, - x = new BigNumber(this), - y = new BigNumber(ONE); - - // Use Math.pow? - // Pass +-Infinity for out of range exponents. - if ( ( ( ( outOfRange = e < -MAX_POWER || e > MAX_POWER ) && - (i = e * 1 / 0) ) || - - /* - * Any exponent that fails the parse becomes NaN. - * - * Include 'e !== 0' because on Opera -0 == parseFloat(-0) is false, - * despite -0 === parseFloat(-0) && -0 == parseFloat('-0') is true. - */ - parse(e) != e && e !== 0 && !(i = NaN) ) && - - // 'pow() exponent not an integer: {e}' - // 'pow() exponent out of range: {e}' - !ifExceptionsThrow( e, 'exponent', 'pow' ) || - - // Pass zero to Math.pow, as any value to the power zero is 1. - !i ) { - - // i is +-Infinity, NaN or 0. - return new BigNumber( Math.pow( x['toS'](), i ) ) - } - - for ( i = i < 0 ? -i : i; ; ) { - - if ( i & 1 ) { - y = y['times'](x) - } - i >>= 1; - - if ( !i ) { - break - } - x = x['times'](x) - } - - return e < 0 ? ONE['div'](y) : y - }; - - - /* - * Return a new BigNumber whose value is the value of this BigNumber - * rounded to a maximum of dp decimal places using rounding mode rm, or to - * DECIMAL_PLACES and ROUNDING_MODE respectively if omitted. - * - * [dp] {number} Integer, 0 to MAX inclusive. - * [rm] {number} Integer, 0 to 8 inclusive. - */ - P['round'] = function ( dp, rm ) { - - dp = dp == null || ( ( ( outOfRange = dp < 0 || dp > MAX ) || - parse(dp) != dp ) && - - // 'round() decimal places out of range: {dp}' - // 'round() decimal places not an integer: {dp}' - !ifExceptionsThrow( dp, 'decimal places', 'round' ) ) - ? 0 - : dp | 0; - - rm = rm == null || ( ( ( outOfRange = rm < 0 || rm > 8 ) || - - // Include '&& rm !== 0' because with Opera -0 == parseFloat(-0) is false. - parse(rm) != rm && rm !== 0 ) && - - // 'round() mode not an integer: {rm}' - // 'round() mode out of range: {rm}' - !ifExceptionsThrow( rm, 'mode', 'round' ) ) - ? ROUNDING_MODE - : rm | 0; - - return setMode( this, dp, rm ) - }; - - - /* - * sqrt(-n) = N - * sqrt( N) = N - * sqrt(-I) = N - * sqrt( I) = I - * sqrt( 0) = 0 - * sqrt(-0) = -0 - * - * Return a new BigNumber whose value is the square root of the value of - * this BigNumber, rounded according to DECIMAL_PLACES and ROUNDING_MODE. - */ - P['squareRoot'] = P['sqrt'] = function () { - var estimate, r, approx, - x = this, - xc = x['c'], - i = x['s'], - e = x['e'], - half = new BigNumber('0.5'); - - // Negative/NaN/Infinity/zero? - if ( i !== 1 || !xc || !xc[0] ) { - return new BigNumber( !i || i < 0 && ( !xc || xc[0] ) - ? NaN - : xc ? x : 1 / 0 ) - } - - // Estimate. - i = Math.sqrt( x['toS']() ); - - // Math.sqrt underflow/overflow? - // Pass x to Math.sqrt as integer, then adjust the exponent of the result. - if ( i == 0 || i == 1 / 0 ) { - estimate = xc.join(''); - - if ( !( estimate.length + e & 1 ) ) { - estimate += '0' - } - - r = new BigNumber( Math.sqrt(estimate).toString() ); - r['e'] = ( ( ( e + 1 ) / 2 ) | 0 ) - ( e < 0 || e & 1 ) - } else { - r = new BigNumber( i.toString() ) - } - - i = r['e'] + ( DECIMAL_PLACES += 4 ); - - // Newton-Raphson loop. - do { - approx = r; - r = half['times']( approx['plus']( x['div'](approx) ) ) - } while ( approx['c'].slice( 0, i ).join('') !== - r['c'].slice( 0, i ).join('') ); - - rnd( r, DECIMAL_PLACES -= 4, 10 ); - - return r - }; - - - /* - * n * 0 = 0 - * n * N = N - * n * I = I - * 0 * n = 0 - * 0 * 0 = 0 - * 0 * N = N - * 0 * I = N - * N * n = N - * N * 0 = N - * N * N = N - * N * I = N - * I * n = I - * I * 0 = N - * I * N = N - * I * I = I - * - * Return a new BigNumber whose value is the value of this BigNumber times - * the value of BigNumber(y, b). - */ - P['times'] = function ( y, b ) { - var c, - x = this, - xc = x['c'], - yc = ( id = 11, y = new BigNumber( y, b ) )['c'], - i = x['e'], - j = y['e'], - a = x['s']; - - y['s'] = a == ( b = y['s'] ) ? 1 : -1; - - // Either NaN/Infinity/0? - if ( !i && ( !xc || !xc[0] ) || !j && ( !yc || !yc[0] ) ) { - - // Either NaN? - return new BigNumber( !a || !b || - - // x is 0 and y is Infinity or y is 0 and x is Infinity? - xc && !xc[0] && !yc || yc && !yc[0] && !xc - - // Return NaN. - ? NaN - - // Either Infinity? - : !xc || !yc - - // Return +-Infinity. - ? y['s'] / 0 - - // x or y is 0. Return +-0. - : y['s'] * 0 ) - } - y['e'] = i + j; - - if ( ( a = xc.length ) < ( b = yc.length ) ) { - c = xc, xc = yc, yc = c, j = a, a = b, b = j - } - - for ( j = a + b, c = []; j--; c.push(0) ) { - } - - // Multiply! - for ( i = b - 1; i > -1; i-- ) { - - for ( b = 0, j = a + i; - j > i; - b = c[j] + yc[i] * xc[j - i - 1] + b, - c[j--] = b % 10 | 0, - b = b / 10 | 0 ) { - } - - if ( b ) { - c[j] = ( c[j] + b ) % 10 - } - } - - b && ++y['e']; - - // Remove any leading zero. - !c[0] && c.shift(); - - // Remove trailing zeros. - for ( j = c.length; !c[--j]; c.pop() ) { - } - - // No zero check needed as only x * 0 == 0 etc. - - // Overflow? - y['c'] = y['e'] > MAX_EXP - - // Infinity. - ? ( y['e'] = null ) - - // Underflow? - : y['e'] < MIN_EXP - - // Zero. - ? [ y['e'] = 0 ] - - // Neither. - : c; - - return y - }; - - - /* - * Return a string representing the value of this BigNumber in exponential - * notation to dp fixed decimal places and rounded using ROUNDING_MODE if - * necessary. - * - * [dp] {number} Integer, 0 to MAX inclusive. - */ - P['toExponential'] = P['toE'] = function ( dp ) { - - return format( this, - ( dp == null || ( ( outOfRange = dp < 0 || dp > MAX ) || - - /* - * Include '&& dp !== 0' because with Opera -0 == parseFloat(-0) is - * false, despite -0 == parseFloat('-0') && 0 == -0 being true. - */ - parse(dp) != dp && dp !== 0 ) && - - // 'toE() decimal places not an integer: {dp}' - // 'toE() decimal places out of range: {dp}' - !ifExceptionsThrow( dp, 'decimal places', 'toE' ) ) && this['c'] - ? this['c'].length - 1 - : dp | 0, 1 ) - }; - - - /* - * Return a string representing the value of this BigNumber in normal - * notation to dp fixed decimal places and rounded using ROUNDING_MODE if - * necessary. - * - * Note: as with Javascript's number type, (-0).toFixed(0) is '0', - * but e.g. (-0.00001).toFixed(0) is '-0'. - * - * [dp] {number} Integer, 0 to MAX inclusive. - */ - P['toFixed'] = P['toF'] = function ( dp ) { - var n, str, d, - x = this; - - if ( !( dp == null || ( ( outOfRange = dp < 0 || dp > MAX ) || - parse(dp) != dp && dp !== 0 ) && - - // 'toF() decimal places not an integer: {dp}' - // 'toF() decimal places out of range: {dp}' - !ifExceptionsThrow( dp, 'decimal places', 'toF' ) ) ) { - d = x['e'] + ( dp | 0 ) - } - - n = TO_EXP_NEG, dp = TO_EXP_POS; - TO_EXP_NEG = -( TO_EXP_POS = 1 / 0 ); - - // Note: str is initially undefined. - if ( d == str ) { - str = x['toS']() - } else { - str = format( x, d ); - - // (-0).toFixed() is '0', but (-0.1).toFixed() is '-0'. - // (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'. - if ( x['s'] < 0 && x['c'] ) { - - // As e.g. -0 toFixed(3), will wrongly be returned as -0.000 from toString. - if ( !x['c'][0] ) { - str = str.replace(/^-/, '') - - // As e.g. -0.5 if rounded to -0 will cause toString to omit the minus sign. - } else if ( str.indexOf('-') < 0 ) { - str = '-' + str - } - } - } - TO_EXP_NEG = n, TO_EXP_POS = dp; - - return str - }; - - - /* - * Return a string array representing the value of this BigNumber as a - * simple fraction with an integer numerator and an integer denominator. - * The denominator will be a positive non-zero value less than or equal to - * the specified maximum denominator. If a maximum denominator is not - * specified, the denominator will be the lowest value necessary to - * represent the number exactly. - * - * [maxD] {number|string|BigNumber} Integer >= 1 and < Infinity. - */ - P['toFraction'] = P['toFr'] = function ( maxD ) { - var q, frac, n0, d0, d2, n, e, - n1 = d0 = new BigNumber(ONE), - d1 = n0 = new BigNumber('0'), - x = this, - xc = x['c'], - exp = MAX_EXP, - dp = DECIMAL_PLACES, - rm = ROUNDING_MODE, - d = new BigNumber(ONE); - - // NaN, Infinity. - if ( !xc ) { - return x['toS']() - } - - e = d['e'] = xc.length - x['e'] - 1; - - // If max denominator is undefined or null... - if ( maxD == null || - - // or NaN... - ( !( id = 12, n = new BigNumber(maxD) )['s'] || - - // or less than 1, or Infinity... - ( outOfRange = n['cmp'](n1) < 0 || !n['c'] ) || - - // or not an integer... - ( ERRORS && n['e'] < n['c'].length - 1 ) ) && - - // 'toFr() max denominator not an integer: {maxD}' - // 'toFr() max denominator out of range: {maxD}' - !ifExceptionsThrow( maxD, 'max denominator', 'toFr' ) || - - // or greater than the maxD needed to specify the value exactly... - ( maxD = n )['cmp'](d) > 0 ) { - - // d is e.g. 10, 100, 1000, 10000... , n1 is 1. - maxD = e > 0 ? d : n1 - } - - MAX_EXP = 1 / 0; - n = new BigNumber( xc.join('') ); - - for ( DECIMAL_PLACES = 0, ROUNDING_MODE = 1; ; ) { - q = n['div'](d); - d2 = d0['plus']( q['times'](d1) ); - - if ( d2['cmp'](maxD) == 1 ) { - break - } - - d0 = d1, d1 = d2; - - n1 = n0['plus']( q['times']( d2 = n1 ) ); - n0 = d2; - - d = n['minus']( q['times']( d2 = d ) ); - n = d2 - } - - d2 = maxD['minus'](d0)['div'](d1); - n0 = n0['plus']( d2['times'](n1) ); - d0 = d0['plus']( d2['times'](d1) ); - - n0['s'] = n1['s'] = x['s']; - - DECIMAL_PLACES = e * 2; - ROUNDING_MODE = rm; - - // Determine which fraction is closer to x, n0 / d0 or n1 / d1? - frac = n1['div'](d1)['minus'](x)['abs']()['cmp']( - n0['div'](d0)['minus'](x)['abs']() ) < 1 - ? [ n1['toS'](), d1['toS']() ] - : [ n0['toS'](), d0['toS']() ]; - - return MAX_EXP = exp, DECIMAL_PLACES = dp, frac - }; - - - /* - * Return a string representing the value of this BigNumber to sd significant - * digits and rounded using ROUNDING_MODE if necessary. - * If sd is less than the number of digits necessary to represent the integer - * part of the value in normal notation, then use exponential notation. - * - * sd {number} Integer, 1 to MAX inclusive. - */ - P['toPrecision'] = P['toP'] = function ( sd ) { - - /* - * ERRORS true: Throw if sd not undefined, null or an integer in range. - * ERRORS false: Ignore sd if not a number or not in range. - * Truncate non-integers. - */ - return sd == null || ( ( ( outOfRange = sd < 1 || sd > MAX ) || - parse(sd) != sd ) && - - // 'toP() precision not an integer: {sd}' - // 'toP() precision out of range: {sd}' - !ifExceptionsThrow( sd, 'precision', 'toP' ) ) - ? this['toS']() - : format( this, --sd | 0, 2 ) - }; - - - /* - * Return a string representing the value of this BigNumber in base b, or - * base 10 if b is omitted. If a base is specified, including base 10, - * round according to DECIMAL_PLACES and ROUNDING_MODE. - * If a base is not specified, and this BigNumber has a positive exponent - * that is equal to or greater than TO_EXP_POS, or a negative exponent equal - * to or less than TO_EXP_NEG, return exponential notation. - * - * [b] {number} Integer, 2 to 36 inclusive. - */ - P['toString'] = P['toS'] = function ( b ) { - var u, str, strL, - x = this, - xe = x['e']; - - // Infinity or NaN? - if ( xe === null ) { - str = x['s'] ? 'Infinity' : 'NaN' - - // Exponential format? - } else if ( b === u && ( xe <= TO_EXP_NEG || xe >= TO_EXP_POS ) ) { - return format( x, x['c'].length - 1, 1 ) - } else { - str = x['c'].join(''); - - // Negative exponent? - if ( xe < 0 ) { - - // Prepend zeros. - for ( ; ++xe; str = '0' + str ) { - } - str = '0.' + str - - // Positive exponent? - } else if ( strL = str.length, xe > 0 ) { - - if ( ++xe > strL ) { - - // Append zeros. - for ( xe -= strL; xe-- ; str += '0' ) { - } - } else if ( xe < strL ) { - str = str.slice( 0, xe ) + '.' + str.slice(xe) - } - - // Exponent zero. - } else { - if ( u = str.charAt(0), strL > 1 ) { - str = u + '.' + str.slice(1) - - // Avoid '-0' - } else if ( u == '0' ) { - return u - } - } - - if ( b != null ) { - - if ( !( outOfRange = !( b >= 2 && b <= 36) ) && - ( b == (b | 0) || !ERRORS ) ) { - str = convert( str, b | 0, 10, x['s'] ); - - // Avoid '-0' - if ( str == '0') { - return str - } - } else { - - // 'toS() base not an integer: {b}' - // 'toS() base out of range: {b}' - ifExceptionsThrow( b, 'base', 'toS' ) - } - } - - } - - return x['s'] < 0 ? '-' + str : str - }; - - - /* - * Return as toString, but do not accept a base argument. - */ - P['valueOf'] = function () { - return this['toS']() - }; - - - // Add aliases for BigDecimal methods. - //P['add'] = P['plus']; - //P['subtract'] = P['minus']; - //P['multiply'] = P['times']; - //P['divide'] = P['div']; - //P['remainder'] = P['mod']; - //P['compareTo'] = P['cmp']; - //P['negate'] = P['neg']; - - - // EXPORT - - - // Node and other CommonJS-like environments that support module.exports. - if ( typeof module !== 'undefined' && module.exports ) { - module.exports = BigNumber - - //AMD. - } else if ( typeof define == 'function' && define.amd ) { - define( function () { - return BigNumber - }) - - //Browser. - } else { - global['BigNumber'] = BigNumber - } - -})( this ); - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js deleted file mode 100644 index 21ad8ba..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/bignumber.min.js +++ /dev/null @@ -1 +0,0 @@ -/* bignumber.js v1.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */(function(e){"use strict";function y(e,t){var n,r,i,s=this;if(!(s instanceof y))return new y(e,t);if(e instanceof y){d=0;if(t===r){s.s=e.s,s.e=e.e,s.c=(e=e.c)?e.slice():e;return}e=e.toS()}typeof e!="string"&&(e=(n=Object.prototype.toString.call(e)=="[object Number]")&&e===0&&1/e<0?"-0":e+"");if(t===r&&v.test(e))s.s=e.charAt(0)=="-"?(e=e.slice(1),-1):1;else{if(t==10)return(new y(e)).div(g);e=m.call(e).replace(/^\+(?!-)/,"").replace(/^(-?)\./,"$10."),s.s=e.charAt(0)=="-"?(e=e.replace(/^-(?!-)/,""),-1):1,t!=null?t!=(t|0)&&!!f||(p=!(t>=2&&t<=36))?(b(t,2),i=v.test(e)):(r="["+h.slice(0,t|=0)+"]+",(i=(new RegExp("^"+r+"(?:\\."+r+")?$","i")).test(e))?(n&&(e.replace(".","").length>15&&b(e,0),n=!n),e=w(e,10,t,s.s)):e!="Infinity"&&e!="NaN"&&(b(e,1,t),e="NaN")):i=v.test(e);if(!i){s.c=s.e=null,e!="Infinity"&&(e!="NaN"&&b(e,3),s.s=null),d=0;return}}(r=e.indexOf("."))>-1&&(e=e.replace(".","")),(i=e.search(/e/i))>0?(r<0&&(r=i),r+=+e.slice(i+1),e=e.substring(0,i)):r<0&&(r=e.length),(t=e.length,n&&t>15)&&b(e,0);for(d=i=0;e.charAt(i)=="0";i++);if((r-=i+1)>a)s.c=s.e=null;else if(i==t||rt-1&&(a[i+1]==null&&(a[i+1]=0),a[i+1]+=a[i]/t^0,a[i]%=t)}return a.reverse()}function c(e){var t=0,n=e.length,r="";for(;t-1){i=e.length-i-1,s=l((new y(n)).pow(i).toF(),10),u=e.split("."),o=l(u[1]),u=l(u[0]),f=E(o,s,o.length-s.length,r,t,u[u.length-1]&1),a=f.c;if(i=f.e){for(;++i;a.unshift(0));e=c(u)+"."+c(a)}else a[0]?u[i=u.length-1]w?1:-1;else for(p=-1,h=0;++pb[p]?1:-1;break}if(!(h<0))break;for(l=w==f?t:d;w;){if(b[--w]N&&x(E,r,s,o,b[0]!=null),E.e>a?E.c=E.e=null:E.e++t&&x(e,r,10),r=i[0]==0?r+1:n?t:e.e+r+1;for(;i.length1?(i.splice(1,0,"."),i.join("")):i[0])+(r<0?"e":"e+")+r:e.toS()}function x(e,t,n,r,s){var o=e.c,u=e.s<0,a=n/2,f=e.e+t+1,l=o[f],c=s||f<0||o[f+1]!=null;s=i<4?(l!=null||c)&&(i==0||i==2&&!u||i==3&&u):l>a||l==a&&(i==4||c||i==6&&(o[f-1]&1||!t&&r)||i==7&&!u||i==8&&u);if(f<1||!o[0])return o.length=0,o.push(0),s?(o[0]=1,e.e=-t):e.e=0,e;o.length=f--;if(s)for(--n;++o[f]>n;)o[f]=0,f--||(++e.e,o.unshift(1));for(f=o.length;!o[--f];o.pop());return e}function T(e,t,n){var r=i;return i=n,e=new y(e),e.c&&x(e,t,10),i=r,e}var t=1e9,n=1e6,r=20,i=4,s=-7,o=21,u=-t,a=t,f=!0,l=parseInt,c=y.prototype,h="0123456789abcdefghijklmnopqrstuvwxyz",p,d=0,v=/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i,m=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")},g=y(1);y.ROUND_UP=0,y.ROUND_DOWN=1,y.ROUND_CEIL=2,y.ROUND_FLOOR=3,y.ROUND_HALF_UP=4,y.ROUND_HALF_DOWN=5,y.ROUND_HALF_EVEN=6,y.ROUND_HALF_CEIL=7,y.ROUND_HALF_FLOOR=8,y.config=function(){var e,n,c=0,h={},v=arguments,m=v[0],g="config",y=function(e,t,n){return!((p=en)||l(e)!=e&&e!==0)},w=m&&typeof m=="object"?function(){if(m.hasOwnProperty(n))return(e=m[n])!=null}:function(){if(v.length>c)return(e=v[c++])!=null};return w(n="DECIMAL_PLACES")&&(y(e,0,t)?r=e|0:b(e,n,g)),h[n]=r,w(n="ROUNDING_MODE")&&(y(e,0,8)?i=e|0:b(e,n,g)),h[n]=i,w(n="EXPONENTIAL_AT")&&(y(e,-t,t)?s=-(o=~~(e<0?-e:+e)):!p&&e&&y(e[0],-t,0)&&y(e[1],0,t)?(s=~~e[0],o=~~e[1]):b(e,n,g,1)),h[n]=[s,o],w(n="RANGE")&&(y(e,-t,t)&&~~e?u=-(a=~~(e<0?-e:+e)):!p&&e&&y(e[0],-t,-1)&&y(e[1],1,t)?(u=~~e[0],a=~~e[1]):b(e,n,g,1,1)),h[n]=[u,a],w(n="ERRORS")&&(e===!!e||e===1||e===0?l=(p=d=0,f=!!e)?parseInt:parseFloat:b(e,n,g,0,0,1)),h[n]=f,h},c.abs=c.absoluteValue=function(){var e=new y(this);return e.s<0&&(e.s=1),e},c.ceil=function(){return T(this,0,2)},c.comparedTo=c.cmp=function(e,t){var n,r=this,i=r.c,s=(d=-d,e=new y(e,t)).c,o=r.s,u=e.s,a=r.e,f=e.e;if(!o||!u)return null;n=i&&!i[0],t=s&&!s[0];if(n||t)return n?t?0:-u:o;if(o!=u)return o;if(n=o<0,t=a==f,!i||!s)return t?0:!i^n?1:-1;if(!t)return a>f^n?1:-1;for(o=-1,u=(a=i.length)<(f=s.length)?a:f;++os[o]^n?1:-1;return a==f?0:a>f^n?1:-1},c.dividedBy=c.div=function(e,t){var n=this.c,r=this.e,i=this.s,s=(d=2,e=new y(e,t)).c,o=e.e,u=e.s,a=i==u?1:-1;return!r&&(!n||!n[0])||!o&&(!s||!s[0])?new y(!i||!u||(n?s&&n[0]==s[0]:!s)?NaN:n&&n[0]==0||!s?a*0:a/0):E(n,s,r-o,a,10)},c.equals=c.eq=function(e,t){return d=3,this.cmp(e,t)===0},c.floor=function(){return T(this,0,3)},c.greaterThan=c.gt=function(e,t){return d=4,this.cmp(e,t)>0},c.greaterThanOrEqualTo=c.gte=function(e,t){return d=5,(t=this.cmp(e,t))==1||t===0},c.isFinite=c.isF=function(){return!!this.c},c.isNaN=function(){return!this.s},c.isNegative=c.isNeg=function(){return this.s<0},c.isZero=c.isZ=function(){return!!this.c&&this.c[0]==0},c.lessThan=c.lt=function(e,t){return d=6,this.cmp(e,t)<0},c.lessThanOrEqualTo=c.lte=function(e,t){return d=7,(t=this.cmp(e,t))==-1||t===0},c.minus=function(e,t){var n,r,i,s,o=this,a=o.s;t=(d=8,e=new y(e,t)).s;if(!a||!t)return new y(NaN);if(a!=t)return e.s=-t,o.plus(e);var f=o.c,l=o.e,c=e.c,h=e.e;if(!l||!h){if(!f||!c)return f?(e.s=-t,e):new y(c?o:NaN);if(!f[0]||!c[0])return c[0]?(e.s=-t,e):new y(f[0]?o:0)}if(f=f.slice(),a=l-h){n=(s=a<0)?(a=-a,f):(h=l,c);for(n.reverse(),t=a;t--;n.push(0));n.reverse()}else{i=((s=f.length0)for(;t--;f[i++]=0);for(t=c.length;t>a;){if(f[--t]0?(u=s,f):(i=-i,o);for(n.reverse();i--;n.push(0));n.reverse()}o.length-f.length<0&&(n=f,f=o,o=n);for(i=f.length,t=0;i;t=(o[--i]=o[i]+f[i]+t)/10^0,o[i]%=10);t&&(o.unshift(t),++u>a&&(o=u=null));for(i=o.length;o[--i]==0;o.pop());return e.c=o,e.e=u,e},c.toPower=c.pow=function(e){var t=e*0==0?e|0:e,r=new y(this),i=new y(g);if(((p=e<-n||e>n)&&(t=e*1/0)||l(e)!=e&&e!==0&&!(t=NaN))&&!b(e,"exponent","pow")||!t)return new y(Math.pow(r.toS(),t));for(t=t<0?-t:t;;){t&1&&(i=i.times(r)),t>>=1;if(!t)break;r=r.times(r)}return e<0?g.div(i):i},c.round=function(e,n){return e=e==null||((p=e<0||e>t)||l(e)!=e)&&!b(e,"decimal places","round")?0:e|0,n=n==null||((p=n<0||n>8)||l(n)!=n&&n!==0)&&!b(n,"mode","round")?i:n|0,T(this,e,n)},c.squareRoot=c.sqrt=function(){var e,t,n,i=this,s=i.c,o=i.s,u=i.e,a=new y("0.5");if(o!==1||!s||!s[0])return new y(!o||o<0&&(!s||s[0])?NaN:s?i:1/0);o=Math.sqrt(i.toS()),o==0||o==1/0?(e=s.join(""),e.length+u&1||(e+="0"),t=new y(Math.sqrt(e).toString()),t.e=((u+1)/2|0)-(u<0||u&1)):t=new y(o.toString()),o=t.e+(r+=4);do n=t,t=a.times(n.plus(i.div(n)));while(n.c.slice(0,o).join("")!==t.c.slice(0,o).join(""));return x(t,r-=4,10),t},c.times=function(e,t){var n,r=this,i=r.c,s=(d=11,e=new y(e,t)).c,o=r.e,f=e.e,l=r.s;e.s=l==(t=e.s)?1:-1;if(!o&&(!i||!i[0])||!f&&(!s||!s[0]))return new y(!l||!t||i&&!i[0]&&!s||s&&!s[0]&&!i?NaN:!i||!s?e.s/0:e.s*0);e.e=o+f,(l=i.length)<(t=s.length)&&(n=i,i=s,s=n,f=l,l=t,t=f);for(f=l+t,n=[];f--;n.push(0));for(o=t-1;o>-1;o--){for(t=0,f=l+o;f>o;t=n[f]+s[o]*i[f-o-1]+t,n[f--]=t%10|0,t=t/10|0);t&&(n[f]=(n[f]+t)%10)}t&&++e.e,!n[0]&&n.shift();for(f=n.length;!n[--f];n.pop());return e.c=e.e>a?e.e=null:e.et)||l(e)!=e&&e!==0)&&!b(e,"decimal places","toE"))&&this.c?this.c.length-1:e|0,1)},c.toFixed=c.toF=function(e){var n,r,i,u=this;return e==null||((p=e<0||e>t)||l(e)!=e&&e!==0)&&!b(e,"decimal places","toF")||(i=u.e+(e|0)),n=s,e=o,s=-(o=1/0),i==r?r=u.toS():(r=S(u,i),u.s<0&&u.c&&(u.c[0]?r.indexOf("-")<0&&(r="-"+r):r=r.replace(/^-/,""))),s=n,o=e,r},c.toFraction=c.toFr=function(e){var t,n,s,o,u,l,c,h=o=new y(g),v=s=new y("0"),m=this,w=m.c,E=a,S=r,x=i,T=new y(g);if(!w)return m.toS();c=T.e=w.length-m.e-1;if(e==null||(!(d=12,l=new y(e)).s||(p=l.cmp(h)<0||!l.c)||f&&l.e0)e=c>0?T:h;a=1/0,l=new y(w.join(""));for(r=0,i=1;;){t=l.div(T),u=o.plus(t.times(v));if(u.cmp(e)==1)break;o=v,v=u,h=s.plus(t.times(u=h)),s=u,T=l.minus(t.times(u=T)),l=u}return u=e.minus(o).div(v),s=s.plus(u.times(h)),o=o.plus(u.times(v)),s.s=h.s=m.s,r=c*2,i=x,n=h.div(v).minus(m).abs().cmp(s.div(o).minus(m).abs())<1?[h.toS(),v.toS()]:[s.toS(),o.toS()],a=E,r=S,n},c.toPrecision=c.toP=function(e){return e==null||((p=e<1||e>t)||l(e)!=e)&&!b(e,"precision","toP")?this.toS():S(this,--e|0,2)},c.toString=c.toS=function(e){var t,n,r,i=this,u=i.e;if(u===null)n=i.s?"Infinity":"NaN";else{if(e===t&&(u<=s||u>=o))return S(i,i.c.length-1,1);n=i.c.join("");if(u<0){for(;++u;n="0"+n);n="0."+n}else if(r=n.length,u>0)if(++u>r)for(u-=r;u--;n+="0");else u1)n=t+"."+n.slice(1);else if(t=="0")return t;if(e!=null)if((p=!(e>=2&&e<=36))||e!=(e|0)&&!!f)b(e,"base","toS");else{n=w(n,e|0,10,i.s);if(n=="0")return n}}return i.s<0?"-"+n:n},c.valueOf=function(){return this.toS()},typeof module!="undefined"&&module.exports?module.exports=y:typeof define=="function"&&define.amd?define(function(){return y}):e.BigNumber=y})(this); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html deleted file mode 100644 index 189e5e2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/doc/API.html +++ /dev/null @@ -1,1704 +0,0 @@ - - - - - - - bignumber.js API - - - - - - -
      - -

      bignumber.js

      - -

      A Javascript library for arbitrary-precision arithmetic.

      - -

      - Hosted on GitHub. -

      - - -

      API

      - -

      - In all examples below, var and semicolons are not shown, and - if a commented-out value is in quotes it means toString has - been called on the preceding expression. -

      - - - -

      CONSTRUCTOR

      - -
      - BigNumberBigNumber(value [, base]) ⇒ - BigNumber - -
      -
      -
      value
      -
      - number|string|BigNumber : See RANGE for - range. -
      -
      - A numeric value. -
      -
      - Legitimate values include ±0, - ±Infinity and NaN. -
      -
      - Values of type number with more than 15 significant digits are - considered invalid as calling toString or - valueOf on such numbers may not result in the intended - value. -
      -
      - There is no limit to the number of digits of a value of type - string (other than that of Javascript's maximum array size). -
      -
      - Decimal string values may be in exponential, as well as normal - (non-exponential) notation. Non-decimal values must be in normal - notation. -
      -
      - String values in hexadecimal literal form, e.g. '0xff', are invalid, and - string values in octal literal form will be interpreted as decimals, - e.g. '011' is 11, not 9. -
      -
      Values in any base may have fraction digits.
      -
      - In bases above 10, numerals above 9 are represented by lower-case - letters. -
      -
      -
      -
      base
      -
      - number : integer, 2 to 36 inclusive -
      -
      The base of value.
      -
      If base is omitted, or is null or undefined, - base 10 is assumed.
      -
      -

      Returns a new instance of a BigNumber object.

      -

      - If a base is specified, the value is rounded according to - the current DECIMAL_PLACES and - ROUNDING_MODE settings. - Usefully, this means the decimal places of a decimal value - passed to the constructor can be limited by explicitly specifying base 10. -

      -

      - See Errors for the treatment of an invalid - value or base. -

      -
      -x = new BigNumber(9)                       // '9'
      -y = new BigNumber(x)                       // '9'
      -BigNumber(435.345)                         // 'new' is optional
      -new BigNumber('5032485723458348569331745.33434346346912144534543')
      -new BigNumber('4.321e+4')                  // '43210'
      -new BigNumber('-735.0918e-430')            // '-7.350918e-428'
      -new BigNumber(Infinity)                    // 'Infinity'
      -new BigNumber(NaN)                         // 'NaN'
      -new BigNumber('.5')                        // '0.5'
      -new BigNumber('+2')                        // '2'
      -new BigNumber(-10110100.1, 2)              // '-180.5'
      -new BigNumber('123412421.234324', 5)       // '607236.557696'
      -new BigNumber('ff.8', 16)                  // '255.5'
      -
      -new BigNumber(9, 2)
      -// Throws 'not a base 2 number' if ERRORS is true, otherwise 'NaN'
      -
      -new BigNumber(96517860459076817.4395)
      -// Throws 'number type has more than 15 significant digits'
      -// if ERRORS is true, otherwise '96517860459076820'
      -
      -new BigNumber('blurgh')
      -// Throws 'not a number' if ERRORS is true, otherwise 'NaN'
      -
      -BigNumber.config({DECIMAL_PLACES : 5})
      -new BigNumber(1.23456789)                  // '1.23456789'
      -new BigNumber(1.23456789, 10)              // '1.23457'
      - - -

      Methods

      -

      - The BigNumber constructor has one added method, - config, which configures the library-wide settings for - arithmetic, formatting and errors. -

      - -
      - configconfig([settings]) ⇒ object -
      - - Note: the settings can also be supplied as an argument list, - see below. - -
      -
      settings
      -
      object
      - -
      - An object that contains some or all of the following properties: -
      - - - -
      DECIMAL_PLACES
      -
      - number : integer, 0 to 1e+9 - inclusive
      - Default value: 20 -
      -
      - The maximum number of decimal places of the results of - division, square root and base conversion operations, and power - operations with negative exponents.
      - I.e. aside from the base conversion which may be involved with any - method that accepts a base argument, the value is only relevant to - the dividedBy, squareRoot and - toPower methods. -
      -
      -
      BigNumber.config({ DECIMAL_PLACES : 5 })
      -BigNumber.config(5)    // equivalent
      -
      - - - -
      ROUNDING_MODE
      -
      - number : integer, 0 to 8 - inclusive
      - Default value: 4 - (ROUND_HALF_UP) -
      -
      - The rounding mode used in the above operations and by - round, - toExponential, - toFixed and - toPrecision. -
      -
      - The modes are available as enumerated properties of the BigNumber - constructor. -
      -
      -
      BigNumber.config({ ROUNDING_MODE : 0 })
      -BigNumber.config(null, BigNumber.ROUND_UP)    // equivalent
      -
      - - - -
      EXPONENTIAL_AT
      -
      - number : integer, magnitude 0 to - 1e+9 inclusive, or
      - number[] : [ integer -1e+9 to 0 inclusive, integer 0 to 1e+9 - inclusive ]
      - Default value: [-7, 20] -
      -
      - The exponent value(s) at which toString returns - exponential notation. -
      -
      - If a single number is assigned, the value is the exponent magnitude. -
      - If an array of two numbers is assigned then the first number is the - negative exponent value at and beneath which exponential notation is - used, and the second number is the positive exponent value at and - above which the same. -
      -
      - For example, to emulate Javascript numbers in terms of the exponent - values at which they begin to use exponential notation, use - [-7, 20]. -
      -
      -
      BigNumber.config({ EXPONENTIAL_AT : 2 })
      -new BigNumber(12.3)         // '12.3'        e is only 1
      -new BigNumber(123)          // '1.23e+2'
      -new BigNumber(0.123)        // '0.123'       e is only -1
      -new BigNumber(0.0123)       // '1.23e-2'
      -
      -BigNumber.config({ EXPONENTIAL_AT : [-7, 20] })
      -new BigNumber(123456789)    // '123456789'   e is only 8
      -new BigNumber(0.000000123)  // '1.23e-7'
      -
      -// Almost never return exponential notation:
      -BigNumber.config({ EXPONENTIAL_AT : 1e+9 })
      -
      -// Always return exponential notation:
      -BigNumber.config({ EXPONENTIAL_AT : 0 })
      -
      -
      - Regardless of the value of EXPONENTIAL_AT, the - toFixed method will always return a value in - normal notation and the toExponential method will - always return a value in exponential form. -
      -
      - Calling toString with a base argument, e.g. - toString(10), will also always return normal notation. -
      - - - -
      RANGE
      -
      - number : integer, magnitude 1 to - 1e+9 inclusive, or
      - number[] : [ integer -1e+9 to -1 inclusive, integer 1 to 1e+9 - inclusive ]
      - Default value: [-1e+9, 1e+9] -
      -
      - The exponent value(s) beyond which overflow to Infinity and - underflow to zero occurs. -
      -
      - If a single number is assigned, it is the maximum exponent - magnitude: values wth a positive exponent of greater magnitude - become Infinity and those with a negative exponent of - greater magnitude become zero. -
      - If an array of two numbers is assigned then the first number is the - negative exponent limit and the second number is the positive - exponent limit. -
      -
      - For example, to emulate Javascript numbers in terms of the exponent - values at which they become zero and Infinity, use - [-324, 308]. -
      -
      -
      BigNumber.config({ RANGE : 500 })
      -BigNumber.config().RANGE     // [ -500, 500 ]
      -new BigNumber('9.999e499')   // '9.999e+499'
      -new BigNumber('1e500')       // 'Infinity'
      -new BigNumber('1e-499')      // '1e-499'
      -new BigNumber('1e-500')      // '0'
      -
      -BigNumber.config({ RANGE : [-3, 4] })
      -new BigNumber(99999)         // '99999'      e is only 4
      -new BigNumber(100000)        // 'Infinity'   e is 5
      -new BigNumber(0.001)         // '0.01'       e is only -3
      -new BigNumber(0.0001)        // '0'          e is -4
      -
      -
      - The largest possible magnitude of a finite BigNumber is
      - 9.999...e+1000000000
      - The smallest possible magnitude of a non-zero BigNumber is
      - 1e-1000000000 -
      - - - -
      ERRORS
      -
      - boolean/number : true, false, 1 or 0
      - Default value: true -
      -
      - The value that determines whether BigNumber Errors are thrown.
      - If ERRORS is false, this library will not throw errors. -
      -
      - See Errors. -
      -
      -
      BigNumber.config({ ERRORS : false })
      -
      -
      -
      -
      -

      -
      Returns an object with the above properties and their current - values. -

      -

      - If the value to be assigned to any of the above properties is - null or undefined it is ignored. See - Errors for the treatment of invalid values. -

      -
      -BigNumber.config({
      -    DECIMAL_PLACES : 40,
      -    ROUNDING_MODE : BigNumber.ROUND_HALF_CEIL,
      -    EXPONENTIAL_AT : [-10, 20],
      -    RANGE : [-500, 500],
      -    ERRORS : true
      -});
      -
      -// Alternatively but equivalently:
      -BigNumber.config( 40, 7, [-10, 20], 500, 1 )
      -
      -obj = BigNumber.config();
      -obj.ERRORS       // true
      -obj.RANGE        // [-500, 500]
      - - - -

      Properties

      -

      - The library's enumerated rounding modes are stored as properties of the - constructor.
      - They are not referenced internally by the library itself. -

      -

      - Rounding modes 0 to 6 (inclusive) are the same as those of Java's - BigDecimal class. -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      PropertyValueDescription
      ROUND_UP0Rounds away from zero
      ROUND_DOWN1Rounds towards zero
      ROUND_CEIL2Rounds towards Infinity
      ROUND_FLOOR3Rounds towards -Infinity
      ROUND_HALF_UP4 - Rounds towards nearest neighbour.
      - If equidistant, rounds away from zero -
      ROUND_HALF_DOWN5 - Rounds towards nearest neighbour.
      - If equidistant, rounds towards zero -
      ROUND_HALF_EVEN6 - Rounds towards nearest neighbour.
      - If equidistant, rounds towards even neighbour -
      ROUND_HALF_CEIL7 - Rounds towards nearest neighbour.
      - If equidistant, rounds towards Infinity -
      ROUND_HALF_FLOOR8 - Rounds towards nearest neighbour.
      - If equidistant, rounds towards -Infinity -
      -
      -BigNumber.config({ ROUNDING_MODE : BigNumber.ROUND_CEIL })
      -BigNumber.config({ ROUNDING_MODE : 2 })     // equivalent
      - - -

      INSTANCE

      - -

      Methods

      -

      - The methods inherited by a BigNumber instance from its constructor's - prototype object. -

      -

      - A BigNumber is immutable in the sense that it is not changed by its - methods. -

      -

      - The treatment of ±0, ±Infinity and - NaN is consistent with how Javascript treats these values. -

      -

      - Method names over 5 letters in length have a shorter alias (except - valueOf).
      - Internally, the library always uses the shorter method names. -

      - - - -
      - absoluteValue.abs() ⇒ BigNumber -
      -

      - Returns a BigNumber whose value is the absolute value, i.e. the magnitude, - of this BigNumber. -

      -
      -x = new BigNumber(-0.8)
      -y = x.absoluteValue()         // '0.8'
      -z = y.abs()                   // '0.8'
      - - - -
      - ceil.ceil() ⇒ BigNumber -
      -

      - Returns a BigNumber whose value is the value of this BigNumber rounded to - a whole number in the direction of Infinity. -

      -
      -x = new BigNumber(1.3)
      -x.ceil()                      // '2'
      -y = new BigNumber(-1.8)
      -y.ceil()                      // '-1'
      - - - -
      - floor.floor() ⇒ - BigNumber -
      -

      - Returns a BigNumber whose value is the value of this BigNumber rounded to - a whole number in the direction of -Infinity. -

      -
      -x = new BigNumber(1.8)
      -x.floor()                     // '1'
      -y = new BigNumber(-1.3)
      -y.floor()                     // '-2'
      - - - -
      - negated.neg() ⇒ BigNumber -
      -

      - Returns a BigNumber whose value is the value of this BigNumber negated, - i.e. multiplied by -1. -

      -
      -x = new BigNumber(1.8)
      -x.negated()                   // '-1.8'
      -y = new BigNumber(-1.3)
      -y.neg()                       // '1.3'
      - - - -
      - squareRoot.sqrt() ⇒ BigNumber -
      -

      - Returns a BigNumber whose value is the square root of this BigNumber, - rounded according to the current - DECIMAL_PLACES and - ROUNDING_MODE settings. -

      -
      -x = new BigNumber(16)
      -x.squareRoot()                // '4'
      -y = new BigNumber(3)
      -y.sqrt()                      // '1.73205080756887729353'
      - - - -
      - isFinite.isF() ⇒ boolean -
      -

      - Returns true if the value of this BigNumber is a finite - number, otherwise returns false.
      - The only possible non-finite values of a BigNumber are NaN, Infinity and - -Infinity. -

      -
      -x = new BigNumber(1)
      -x.isFinite()                  // true
      -y = new BigNumber(Infinity)
      -y.isF()                       // false
      -

      - Note: The native method isFinite() can be used if - n <= Number.MAX_VALUE. -

      - - - -
      - isNaN.isNaN() ⇒ boolean -
      -

      - Returns true if the value of this BigNumber is NaN, otherwise - returns false.
      -

      -
      -x = new BigNumber(NaN)
      -x.isNaN()                     // true
      -y = new BigNumber('Infinity')
      -y.isNaN()                     // false
      -

      - Note: The native method isNaN() can also be used. -

      - - - -
      - isNegative.isNeg() ⇒ boolean -
      -

      - Returns true if the value of this BigNumber is negative, - otherwise returns false.
      -

      -
      -x = new BigNumber(-0)
      -x.isNegative()                // true
      -y = new BigNumber(2)
      -y.isNeg                       // false
      -

      - Note: n < 0 can be used if - n <= -Number.MIN_VALUE. -

      - - - -
      - isZero.isZ() ⇒ boolean -
      -

      - Returns true if the value of this BigNumber is zero or minus - zero, otherwise returns false.
      -

      -
      -x = new BigNumber(-0)
      -x.isZero() && x.isNeg()        // true
      -y = new BigNumber(Infinity)
      -y.isZ()                        // false
      -

      - Note: n == 0 can be used if - n >= Number.MIN_VALUE. -

      - - - -
      - comparedTo.cmp(n [, base]) ⇒ number -
      -

      - n : number|string|BigNumber
      - base : number
      - - See constructor for further parameter details. - -

      - - - - - - - - - - - - - - - - - - - - - -
      Returns 
      1 - If the value of this BigNumber is greater than the value of n -
      -1 - If the value of this BigNumber is less than the value of n -
      0If this BigNumber and n have the same value
      null - if the value of either this BigNumber or n is - NaN -
      -
      -x = new BigNumber(Infinity)
      -y = new BigNumber(5)
      -x.comparedTo(y)                // 1
      -x.comparedTo(x.minus(1))       // 0
      -y.cmp(NaN)                     // null
      -y.cmp('110', 2)                // -1
      - - - -
      - dividedBy.div(n [, base]) ⇒ - BigNumber -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns a BigNumber whose value is the value of this BigNumber divided by - n, rounded according to the current - DECIMAL_PLACES and - ROUNDING_MODE settings. -

      -
      -x = new BigNumber(355)
      -y = new BigNumber(113)
      -x.dividedBy(y)             // '3.14159292035398230088'
      -x.div(5)                   // '71'
      -x.div(47, 16)              // '5'
      - - - -
      - minus.minus(n [, base]) ⇒ BigNumber -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns a BigNumber whose value is the value of this BigNumber minus - n. -

      -
      -0.3 - 0.1                  // 0.19999999999999998
      -x = new BigNumber(0.3)
      -x.minus(0.1)               // '0.2'
      -x.minus(0.6, 20)           // '0'
      - - - -
      - modulo.mod(n [, base]) ⇒ BigNumber -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns a BigNumber whose value is the value of this BigNumber modulo - n, i.e. the integer remainder of dividing this BigNumber by - n. -

      -

      - The result will have the same sign as this BigNumber, and it will match - that of Javascript's % operator (within the limits of its precision) and - BigDecimal's remainder method. -

      -
      -1 % 0.9                    // 0.09999999999999998
      -x = new BigNumber(1)
      -x.modulo(0.9)              // '0.1'
      -y = new BigNumber(33)
      -y.mod('a', 33)             // '3'
      - - - -
      - plus.plus(n [, base]) ⇒ BigNumber -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns a BigNumber whose value is the value of this BigNumber plus - n. -

      -
      -0.1 + 0.2                       // 0.30000000000000004
      -x = new BigNumber(0.1)
      -y = x.plus(0.2)                 // '0.3'
      -BigNumber(0.7).plus(x).plus(y)  // '1'
      -x.plus('0.1', 8)                // '0.225'
      - - - -
      - times.times(n [, base]) ⇒ BigNumber -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns a BigNumber whose value is the value of this BigNumber times - n. -

      -
      -0.6 * 3                         // 1.7999999999999998
      -x = new BigNumber(0.6)
      -y = x.times(3)                  // '1.8'
      -BigNumber('7e+500').times(y)    // '1.26e+501'
      -x.times('-a', 16)               // '-6'
      - - - -
      - toPower.pow(exp) ⇒ BigNumber -
      -

      - exp : number : integer, -1e+6 to 1e+6 inclusive -

      -

      - Returns a BigNumber whose value is the value of this BigNumber raised to - the power exp. -

      -

      - If exp is negative the result is rounded according to the - current DECIMAL_PLACES and - ROUNDING_MODE settings. -

      -

      - If exp is not an integer or is out of range: -

      -

      - If ERRORS is true a BigNumber - Error is thrown,
      - else if exp is greater than 1e+6, it is interpreted as - Infinity;
      - else if exp is less than -1e+6, it is interpreted as - -Infinity;
      - else if exp is otherwise a number, it is truncated to an - integer;
      - else it is interpreted as NaN. -

      -

      - Note: High value exponents may cause this method to be slow to return. -

      -
      -Math.pow(0.7, 2)             // 0.48999999999999994
      -x = new BigNumber(0.7)
      -x.toPower(2)                 // '0.49'
      -BigNumber(3).pow(-2)         // '0.11111111111111111111'
      -
      -new BigNumber(123.456).toPower(1000).toString().length     // 5099
      -new BigNumber(2).pow(1e+6)   // Time taken (Node.js): 9 minutes 34 secs.
      - - - -
      - equals.eq(n [, base]) ⇒ boolean -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns true if the value of this BigNumber equals the value - of n, otherwise returns false.
      - As with Javascript, NaN does not equal NaN. -
      Note : This method uses the comparedTo method - internally. -

      -
      -0 === 1e-324                    // true
      -x = new BigNumber(0)
      -x.equals('1e-324')              // false
      -BigNumber(-0).eq(x)             // true  ( -0 === 0 )
      -BigNumber(255).eq('ff', 16)     // true
      -
      -y = new BigNumber(NaN)
      -y.equals(NaN)                   // false
      - - - -
      - greaterThan.gt(n [, base]) ⇒ - boolean -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns true if the value of this BigNumber is greater than - the value of n, otherwise returns false.
      - Note : This method uses the comparedTo method internally. -

      -
      -0.1 > (0.3 - 0.2)                           // true
      -x = new BigNumber(0.1)
      -x.greaterThan(BigNumber(0.3).minus(0.2))    // false
      -BigNumber(0).gt(x)                          // false
      -BigNumber(11, 3).gt(11.1, 2)                // true
      - - - -
      - greaterThanOrEqualTo.gte(n [, base]) ⇒ - boolean -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns true if the value of this BigNumber is greater than - or equal to the value of n, otherwise returns - false.
      - Note : This method uses the comparedTo method internally. -

      -
      -(0.3 - 0.2) >= 0.1                   // false
      -x = new BigNumber(0.3).minus(0.2)
      -x.greaterThanOrEqualTo(0.1)          // true
      -BigNumber(1).gte(x)                  // true
      -BigNumber(10, 18).gte('i', 36)       // true
      - - - -
      - lessThan.lt(n [, base]) ⇒ boolean -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns true if the value of this BigNumber is less than the - value of n, otherwise returns false.
      - Note : This method uses the comparedTo method internally. -

      -
      -(0.3 - 0.2) < 0.1                    // true
      -x = new BigNumber(0.3).minus(0.2)
      -x.lessThan(0.1)                      // false
      -BigNumber(0).lt(x)                   // true
      -BigNumber(11.1, 2).lt(11, 3)         // true
      - - - -
      - lessThanOrEqualTo.lte(n [, base]) ⇒ - boolean -
      -

      - n : number|string|BigNumber
      - base : number
      - See constructor for further parameter details. - -

      -

      - Returns true if the value of this BigNumber is less than or - equal to the value of n, otherwise returns - false.
      - Note : This method uses the comparedTo method internally. -

      -
      -0.1 <= (0.3 - 0.2)                                // false
      -x = new BigNumber(0.1)
      -x.lessThanOrEqualTo(BigNumber(0.3).minus(0.2))    // true
      -BigNumber(-1).lte(x)                              // true
      -BigNumber(10, 18).lte('i', 36)                    // true
      - - - -
      - toExponential.toE([decimal_places]) ⇒ - string -
      -

      - decimal_places : number : integer, 0 to 1e+9 inclusive -

      -

      - Returns a string representing the value of this BigNumber in exponential - notation to the specified decimal places, i.e with one digit before the - decimal point and decimal_places digits after it. If rounding - is necessary, the current - ROUNDING_MODE is used. -

      -

      - If the value of this BigNumber in exponential notation has fewer fraction - digits then is specified by decimal_places, the return value - will be appended with zeros accordingly. -

      -

      - If decimal_places is omitted, or is null or - undefined, the number of digits after the decimal point defaults to the - minimum number of digits necessary to represent the value exactly. -

      -

      - See Errors for the treatment of other - non-integer or out of range decimal_places values. -

      -
      -x = 45.6
      -y = new BigNumber(x)
      -x.toExponential()         // '4.56e+1'
      -y.toExponential()         // '4.56e+1'
      -x.toExponential(0)        // '5e+1'
      -y.toE(0)                  // '5e+1'
      -x.toExponential(1)        // '4.6e+1'
      -y.toE(1)                  // '4.6e+1'
      -x.toExponential(3)        // '4.560e+1'
      -y.toE(3)                  // '4.560e+1'
      - - - -
      - toFixed.toF([decimal_places]) ⇒ - string -
      -

      - decimal_places : number : integer, 0 to 1e+9 inclusive -

      -

      - Returns a string representing the value of this BigNumber in normal - notation to the specified fixed number of decimal places, i.e. with - decimal_places digits after the decimal point. If rounding is - necessary, the current - ROUNDING_MODE setting is used. -

      -

      - If the value of this BigNumber in normal notation has fewer fraction - digits then is specified by decimal_places, the return value - will be appended with zeros accordingly. -

      -

      - Unlike Number.prototype.toFixed, which returns - exponential notation if a number is greater or equal to 1021, - this method will always return normal notation. -

      -

      - If decimal_places is omitted, or is null or - undefined, then the return value is the same as n.toString(). - This is also unlike Number.prototype.toFixed, which returns - the value to zero decimal places. -

      -

      - See Errors for the treatment of other - non-integer or out of range decimal_places values. -

      -
      -x = 45.6
      -y = new BigNumber(x)
      -x.toFixed()              // '46'
      -y.toFixed()              // '45.6'
      -y.toF(0)                 // '46'
      -x.toFixed(3)             // '45.600'
      -y.toF(3)                 // '45.600'
      - - - -
      - toPrecision.toP([significant_figures]) ⇒ - string -
      -

      - significant_figures : number : integer, 1 to 1e+9 - inclusive -

      -

      - Returns a string representing the value of this BigNumber to the - specified number of significant digits. If rounding is necessary, the - current ROUNDING_MODE setting is - used. -

      -

      - If significant_figures is less than the number of digits - necessary to represent the integer part of the value in normal notation, - then exponential notation is used. -

      -

      - If significant_figures is omitted, or is null or - undefined, then the return value is the same as n.toString(). -

      -

      - See Errors for the treatment of other - non-integer or out of range significant_figures values. -

      -
      -x = 45.6
      -y = new BigNumber(x)
      -x.toPrecision()           // '45.6'
      -y.toPrecision()           // '45.6'
      -x.toPrecision(1)          // '5e+1'
      -y.toP(1)                  // '5e+1'
      -x.toPrecision(5)          // '45.600'
      -y.toP(5)                  // '45.600'
      - - - -
      - toString.toS([base]) ⇒ string -
      -

      - base : number : integer, 2 to 36 inclusive -

      -

      - Returns a string representing the value of this BigNumber in the specified - base, or base 10 if base is omitted. Like - Number.toString, in bases above 10, numerals above 9 are - represented by lower-case letters. -

      -

      - If a base is specified the value is rounded according to the current - DECIMAL_PLACES - and ROUNDING_MODE settings. -

      -

      - If a base is not specified, and this BigNumber has a positive - exponent that is equal to or greater than the positive component of the - current EXPONENTIAL_AT setting, - or a negative exponent equal to or less than the negative component of the - setting, then exponential notation is returned. -

      -

      - If base is null or undefined it is ignored. -
      - See Errors for the treatment of other non-integer or - out of range base values. -

      -
      -x = new BigNumber(750000)
      -x.toString()                    // '750000'
      -BigNumber.config({ EXPONENTIAL_AT : 5 })
      -x.toString()                    // '7.5e+5'
      -
      -y = new BigNumber(362.875)
      -y.toString(2)                   // '101101010.111'
      -y.toString(9)                   // '442.77777777777777777778'
      -y.toString(32)                  // 'ba.s'
      -
      -BigNumber.config({ DECIMAL_PLACES : 4 });
      -z = new BigNumber('1.23456789')
      -z.toString()                    // '1.23456789'
      -z.toString(10)                  // '1.2346'
      - - - -
      - valueOf.valueOf() ⇒ string -
      -

      - As toString, but does not accept a base argument. -

      -
      -x = new BigNumber('1.777e+457')
      -x.valueOf()                      // '1.777e+457'
      - - - -
      - toFraction.toFr([max_denominator]) ⇒ - [string, string] -
      -

      - max_denominator : number|string|BigNumber : - integer >= 1 and < Infinity -

      -

      - Returns a string array representing the value of this BigNumber as a - simple fraction with an integer numerator and an integer denominator. The - denominator will be a positive non-zero value less than or equal to - max_denominator. -

      -

      - If a maximum denominator is not specified, or is null or - undefined, the denominator will be the lowest value necessary to represent - the number exactly. -

      -

      - See Errors for the treatment of other non-integer or - out of range max_denominator values. -

      -
      -x = new BigNumber(1.75)
      -x.toFraction()            // '7, 4'
      -
      -pi = new BigNumber('3.14159265358')
      -pi.toFr()                 // '157079632679,50000000000'
      -pi.toFr(100000)           // '312689, 99532'
      -pi.toFr(10000)            // '355, 113'
      -pi.toFr(100)              // '311, 99'
      -pi.toFr(10)               // '22, 7'
      -pi.toFr(1)                // '3, 1'
      - - - -
      - round.round([decimal_places [, rounding_mode]]) - ⇒ BigNumber -
      -

      - decimal_places : number : integer, 0 to 1e+9 inclusive -
      - rounding_mode : number : integer, 0 to 8 inclusive -

      -

      - Returns a BigNumber whose value is the value of this BigNumber rounded by - the specified rounding_mode to a maximum of - decimal_places digits after the decimal point. -

      -

      - if decimal_places is omitted, or is null or - undefined, the return value is n rounded to a whole number. -

      -

      - if rounding_mode is omitted, or is null or - undefined, the current - ROUNDING_MODE setting is used. -

      -

      - See Errors for the treatment of other - non-integer or out of range decimal_places or - rounding_mode values. -

      -
      -x = 1234.56
      -Math.round(x)                             // 1235
      -
      -y = new BigNumber(x)
      -y.round()                                 // '1235'
      -y.round(1)                                // '1234.6'
      -y.round(2)                                // '1234.56'
      -y.round(10)                               // '1234.56'
      -y.round(0, 1)                             // '1234'
      -y.round(0, 6)                             // '1235'
      -y.round(1, 1)                             // '1234.5'
      -y.round(1, BigNumber.ROUND_HALF_EVEN)     // '1234.6'
      -y                                         // '1234.56'
      - - - -

      Properties

      -

      - A BigNumber is an object with three properties: -

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      PropertyDescriptionTypeValue
      ccoefficient*number[] Array of single digits
      eexponentnumberInteger, -1e+9 to 1e+9 inclusive
      ssignnumber-1 or 1
      -

      *significand

      -

      - The value of any of the three properties may also be null. -

      -

      - The value of a BigNumber is stored in a normalised decimal floating point - format which corresponds to the value's toExponential form, - with the decimal point to be positioned after the most significant - (left-most) digit of the coefficient. -

      -

      - Note that, as with Javascript numbers, the original exponent and - fractional trailing zeros are not preserved. -

      -
      x = new BigNumber(0.123)              // '0.123'
      -x.toExponential()                     // '1.23e-1'
      -x.c                                   // '1,2,3'
      -x.e                                   // -1
      -x.s                                   // 1
      -
      -y = new Number(-123.4567000e+2)       // '-12345.67'
      -y.toExponential()                     // '-1.234567e+4'
      -z = new BigNumber('-123.4567000e+2')  // '-12345.67'
      -z.toExponential()                     // '-1.234567e+4'
      -z.c                                   // '1,2,3,4,5,6,7'
      -z.e                                   // 4
      -z.s                                   // -1
      - - -

      - A BigNumber is mutable in the sense that the value of its properties can - be changed.
      - For example, to rapidly shift a value by a power of 10: -

      -
      -x = new BigNumber('1234.000')      // '1234'
      -x.toExponential()                  // '1.234e+3'
      -x.c                                // '1,2,3,4'
      -x.e                                // 3
      -
      -x.e = -5
      -x                                  // '0.00001234'
      -

      - If changing the coefficient array directly, which is not recommended, be - careful to avoid leading or trailing zeros (unless zero itself is being - represented). -

      - - - -

      Zero, NaN and Infinity

      -

      - The table below shows how ±0, NaN and ±Infinity are stored. -

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      ces
      ±0[0]0±1
      NaNnullnullnull
      ±Infinitynullnull±1
      -
      -x = new Number(-0)      // 0
      -1 / x == -Infinity     // true
      -
      -y = new BigNumber(-0)   // '0'
      -y.c                     // '0' ( [0].toString() )
      -y.e                     // 0
      -y.s                     // -1
      - - - -

      Errors

      -

      - The table below shows the BigNumber Errors that may be thrown if - ERRORS is true, and what happens if - ERRORS is false. -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Method(s)ERRORS : true
      Throw BigNumber Error
      ERRORS : false
      Action on invalid argument
      - BigNumber
      - comparedTo
      - dividedBy
      - equals
      - greaterThan
      - greaterThanOrEqualTo
      - lessThan
      - lessThanOrEqualTo
      - minus
      - mod
      - plus
      - times
      number type has more than
      15 significant digits
      Accept.
      not a base... numberSubstitute NaN.
      base not an integerTruncate to integer.
      Ignore if not a number.
      base out of rangeIgnore.
      not a number*Substitute NaN.
      configDECIMAL_PLACES not an integerTruncate to integer.
      Ignore if not a number.
      DECIMAL_PLACES out of rangeIgnore.
      ROUNDING_MODE not an integerTruncate to integer.
      Ignore if not a number.
      ROUNDING_MODE out of rangeIgnore.
      - EXPONENTIAL_AT not an integer
      - or not [integer, integer] -
      Truncate to integer(s).
      Ignore if not number(s).
      - EXPONENTIAL_AT out of range
      - or not [negative, positive] -
      Ignore.
      - RANGE not a non-zero integer
      - or not [integer, integer] -
      Truncate to integer(s).
      Ignore if zero or not number(s).
      - RANGE out of range
      - or not [negative, positive] -
      Ignore.
      - ERRORS not a boolean
      - or binary digit -
      Ignore.
      toPowerexponent not an integerTruncate to integer.
      Substitute NaN if not a number.
      exponent out of rangeSubstitute ±Infinity. -
      rounddecimal places not an integerTruncate to integer.
      Ignore if not a number.
      decimal places out of rangeIgnore.
      mode not an integerTruncate to integer.
      Ignore if not a number.
      mode out of rangeIgnore.
      toExponentialdecimal places not an integerTruncate to integer.
      Ignore if not a number.
      decimal places out of rangeIgnore.
      toFixeddecimal places not an integerTruncate to integer.
      Ignore if not a number.
      decimal places out of rangeIgnore.
      toFractionmax denominator not an integerTruncate to integer.
      Ignore if not a number.
      max denominator out of rangeIgnore.
      toPrecisionprecision not an integerTruncate to integer.
      Ignore if not a number.
      precision out of rangeIgnore.
      toStringbase not an integerTruncate to integer.
      Ignore if not a number.
      base out of rangeIgnore.
      -

      - *No error is thrown if the value is NaN or 'NaN' -

      -

      - The message of a BigNumber Error will also contain the name of the - method from which the error originated. -

      -

      - To determine if an exception is a BigNumber Error: -

      -
      -try {
      -    // do something with BigNumbers
      -} catch (e) {
      -    if (e.name == 'BigNumber Error') {
      -        // do something
      -    }
      -}
      - -

      FAQ

      -
      Why are trailing fractional zeros removed from BigNumbers?
      -

      - Many arbitrary-precision libraries retain trailing fractional zeros as - they can indicate the precision of a value. This can be useful but the - results of arithmetic operations can be misleading. -

      -
      -x = new BigDecimal("1.0")
      -y = new BigDecimal("1.1000")
      -z = x.add(y)                      // 2.1000   
      -    
      -x = new BigDecimal("1.20")
      -y = new BigDecimal("3.45000")
      -z = x.multiply(y)                 // 4.1400000
      -

      - To specify the precision of a value is to specify that the value lies - within a certain range. -

      -

      - In the first example, x has a value of 1.0. The trailing zero - shows the precision of the value, implying that it is in the range 0.95 to - 1.05. Similarly, the precision indicated by the trailing zeros of - y indicates that the value is in the range 1.09995 to - 1.10005. If we add the two lowest values in the ranges we get 0.95 + - 1.09995 = 2.04995 and if we add the two highest values we get 1.05 + - 1.10005 = 2.15005, so the range of the result of the addition implied by - the precision of its operands is 2.04995 to 2.15005. The result given by - BigDecimal of 2.1000 however, indicates that the value is in the range - 2.09995 to 2.10005 and therefore the precision implied by its trailing - zeros is misleading. -

      -

      - In the second example, the true range is 4.122744 to 4.157256 yet the - BigDecimal answer of 4.1400000 indicates a range of 4.13999995 to - 4.14000005. Again, the precision implied by the trailing zeros is - misleading. -

      -

      - This library, like Javascript and most calculators, does not - retain trailing fractional zeros. Instead, the toExponential, - toFixed and toPrecision methods enable trailing - zeros to be added if and when required. -

      -
      - -
      - - - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json deleted file mode 100644 index 464fe53..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "bignumber.js", - "description": "A library for arbitrary-precision decimal and non-decimal arithmetic", - "version": "1.0.1", - "keywords": [ - "arbitrary", - "precision", - "arithmetic", - "big", - "number", - "decimal", - "float", - "biginteger", - "bigdecimal", - "bignumber", - "bigint", - "bignum" - ], - "repository": { - "type": "git", - "url": "https://github.com/MikeMcl/bignumber.js.git" - }, - "main": "bignumber", - "author": { - "name": "Michael Mclaughlin", - "email": "M8ch88l@gmail.com" - }, - "engines": { - "node": "*" - }, - "license": "MIT", - "scripts": { - "test": "node ./test/every-test.js", - "build": "uglifyjs -o ./bignumber.min.js ./bignumber.js" - }, - "readme": "\r\n# bignumber.js #\r\n\r\nA Javascript library for arbitrary-precision decimal and non-decimal arithmetic. \r\n \r\n## Features\r\n\r\n - Faster, smaller, and perhaps easier to use than Javascript versions of Java's BigDecimal\r\n - 5 KB minified and gzipped\r\n - Simple API but full-featured\r\n - Works with numbers with or without fraction digits in bases from 2 to 36 inclusive\r\n - Replicates the `toExponential`, `toFixed`, `toPrecision` and `toString` methods of Javascript's Number type\r\n - Includes a `toFraction` and a `squareRoot` method\r\n - Stores values in an accessible decimal floating point format\r\n - No dependencies\r\n - Comprehensive documentation and test set \r\n\r\nIf an even smaller and simpler library is required see [big.js](https://github.com/MikeMcl/big.js/). \r\nIt's half the size but only works with decimal numbers and only has half the methods. \r\nIt also does not allow `NaN` or `Infinity`, or have the configuration options of this library. \r\n\r\n## Load\r\n\r\nThe library is the single Javascript file *bignumber.js* \r\n(or *bignumber.min.js*, which is *bignumber.js* minified using uglify-js). \r\n\r\nIt can be loaded via a script tag in an HTML document for the browser\r\n\r\n \r\n \r\nor as a CommonJS, [Node.js](http://nodejs.org) or AMD module using `require`. \r\n\r\nFor Node, put the *bignumber.js* file into the same directory as the file that is requiring it and use\r\n\r\n var BigNumber = require('./bignumber'); \r\n\r\nor put it in a *node_modules* directory within the directory and use `require('bignumber')`. \r\n\r\nThe library is also available from the [npm](https://npmjs.org/) registry, so\r\n\r\n $ npm install bignumber.js\r\n\r\nwill install this entire directory in a *node_modules* directory within the current directory. \r\nIt can then be loaded with `require('bignumber.js')`. \r\n \r\nTo load with AMD loader libraries such as [requireJS](http://requirejs.org/):\r\n\r\n require(['bignumber'], function(BigNumber) { \r\n // Use BigNumber here in local scope. No global BigNumber. \r\n });\r\n\r\n## Use\r\n\r\n*In all examples below, `var`, semicolons and `toString` calls are not shown. \r\nIf a commented-out value is in quotes it means `toString` has been called on the preceding expression.*\r\n\r\nThe library exports a single function: BigNumber, the constructor of BigNumber instances. \r\nIt accepts a value of type Number, String or BigNumber Object, \r\n\r\n x = new BigNumber(123.4567)\r\n y = BigNumber('123456.7e-3') // 'new' is optional\r\n z = new BigNumber(x)\r\n x.equals(y) && y.equals(z) && x.equals(z) // true\r\n\r\nand a base from 2 to 36 inclusive can be specified.\r\n\r\n x = new BigNumber(1011, 2) // \"11\" \r\n y = new BigNumber('zz.9', 36) // \"1295.25\"\r\n z = x.plus(y) // \"1306.25\"\r\n\r\nA BigNumber is immutable in the sense that it is not changed by its methods. \r\n\r\n 0.3 - 0.1 // 0.19999999999999998 \r\n x = new BigNumber(0.3) \r\n x.minus(0.1) // \"0.2\"\r\n x // \"0.3\"\r\n\r\nThe methods that return a BigNumber can be chained.\r\n\r\n x.dividedBy(y).plus(z).times(9).floor()\r\n x.times('1.23456780123456789e+9').plus(9876.5432321).dividedBy('4444562598.111772').ceil()\r\n\r\nMethod names over 5 letters in length have a shorter alias.\r\n\r\n x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)) // true\r\n x.cmp(y.mod(z).neg()) == 1 && x.comparedTo(y.modulo(z).negated()) == 1 // true\r\n\r\nLike Javascript's Number type, there are `toExponential`, `toFixed` and `toPrecision` methods\r\n\r\n x = new BigNumber(255.5) \r\n x.toExponential(5) // \"2.55500e+2\"\r\n x.toFixed(5) // \"255.50000\"\r\n x.toPrecision(5) // \"255.50\"\r\n\r\n and a base can be specified for `toString`.\r\n\r\n x.toString(16) // \"ff.8\"\r\n\r\nThe maximum number of decimal places and the rounding mode for division, square root, base conversion, and negative power operations is set by a configuration object passed to the `config` method of the `BigNumber` constructor. \r\nThe other arithmetic operations always give the exact result.\r\n\r\n BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 })\r\n // Alternatively, BigNumber.config( 10, 4 );\r\n\r\n x = new BigNumber(2);\r\n y = new BigNumber(3); \r\n z = x.div(y) // \"0.6666666667\"\r\n z.sqrt() // \"0.8164965809\"\r\n z.pow(-3) // \"3.3749999995\"\r\n z.toString(2) // \"0.1010101011\"\r\n z.times(z) // \"0.44444444448888888889\"\r\n z.times(z).round(10) // \"0.4444444445\"\r\n\r\nThere is a `toFraction` method with an optional *maximum denominator* argument\r\n\r\n y = new BigNumber(355)\r\n pi = y.dividedBy(113) // \"3.1415929204\"\r\n pi.toFraction() // [ \"7853982301\", \"2500000000\" ]\r\n pi.toFraction(1000) // [ \"355\", \"113\" ]\r\n\r\nand `isNaN` and `isFinite` methods, as `NaN` and `Infinity` are valid `BigNumber` values.\r\n\r\n x = new BigNumber(NaN) // \"NaN\"\r\n y = new BigNumber(Infinity) // \"Infinity\"\r\n x.isNaN() && !y.isNaN() && !x.isFinite() && !y.isFinite() // true\r\n\r\nThe value of a BigNumber is stored in a decimal floating point format in terms of a coefficient, exponent and sign.\r\n\r\n x = new BigNumber(-123.456); \r\n x.c // \"1,2,3,4,5,6\" coefficient (i.e. significand)\r\n x.e // 2 exponent \r\n x.s // -1 sign\r\n\r\nFor futher information see the API reference in the *doc* folder.\r\n\r\n## Test\r\n\r\nThe *test* directory contains the test scripts for each method. \r\n\r\nThe tests can be run with Node or a browser. \r\n\r\nFor a quick test of all the methods, from a command-line shell at the *test/* directory\r\n\r\n $ node quick-test\r\n\r\nTo test a single method in more depth, e.g.\r\n\r\n $ node toFraction\r\n\r\nTo test all the methods in more depth\r\n\r\n $ node every-test\r\n\r\nFor the browser, see *quick-test.html*, *single-test.html* and *every-test.html* in the *test/browser* directory. \r\n \r\n*bignumber-vs-number.html* enables some of the methods of bignumber.js to be compared with those of Javascript's Number type. \r\n\r\n## Performance\r\n\r\nThe *perf* directory contains two applications and a *lib* directory containing the BigDecimal libraries used by both. \r\n \r\n*bignumber-vs-bigdecimal.html* tests the performance of bignumber.js against the Javascript translations of two versions of BigDecimal, its use should be more or less self-explanatory.\r\n(The GWT version doesn't work in IE 6.) \r\n\r\n* GWT: java.math.BigDecimal \r\n\r\n* ICU4J: com.ibm.icu.math.BigDecimal \r\n \r\n\r\nThe BigDecimal in Node's npm registry is the GWT version. Despite its seeming popularity I have found it to have some serious bugs, see the Node script *perf/lib/bigdecimal_GWT/bugs.js* for examples of flaws in its *remainder*, *divide* and *compareTo* methods. \r\n\r\n*bigtime.js* is a Node command-line application which tests the performance of bignumber.js against the GWT version of BigDecimal from the npm registry. \r\n\r\nFor example, to compare the time taken by the bignumber.js `plus` method and the BigDecimal `add` method: \r\n \r\n $ node bigtime plus 10000 40 \r\n \r\nThis will time 10000 calls to each, using operands of up to 40 random digits and will check that the results match. \r\n \r\nFor help:\r\n\r\n $ node bigtime -h\r\n\r\nSee the README in the directory for more information.\r\n\r\n## Build\r\n\r\nI.e. minify.\r\n\r\nFor Node, if uglify-js is installed globally ( `npm install uglify-js -g` ) then \r\n\r\n uglifyjs -o ./bignumber.min.js ./bignumber.js\r\n\r\nwill create *bignumber.min.js*. \r\n\r\n## Feedback\r\n\r\nBugs: surely not! Open an issue, please. \r\nOther feedback to:\r\n\r\nMichael Mclaughlin \r\nM8ch88l@gmail.com\r\n\r\nBitcoin donation to: \r\n**1KdnpLRSkWJs4FXPzj7pQ39H4Ur6Urydti** \r\nThank you\r\n\r\n## Licence\r\n\r\nSee LICENCE.\r\n\r\n## Change Log\r\n\r\n####1.0.1\r\n* Bugfix: error messages with incorrect method name \r\n* Corrected a couple of spelling mistakes in comments\r\n* Very minor regex tweaks\r\n\r\n####1.0.0\r\n* 8/11/2012 Initial release \r\n\r\n[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/50b85fd919b406ef9312551092a95fb7 \"githalytics.com\")](http://githalytics.com/MikeMcl/bignumber.js)\r\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/MikeMcl/bignumber.js/issues" - }, - "_id": "bignumber.js@1.0.1", - "dist": { - "shasum": "d98754a5308ec6fab9a50d0c36ae8e622d543c31" - }, - "_from": "bignumber.js@1.0.1", - "_resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-1.0.1.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt deleted file mode 100644 index f018010..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/README.txt +++ /dev/null @@ -1,45 +0,0 @@ -bigtime.js -========== - * Creates random numbers and BigNumber and BigDecimal objects in batches. - * UNLIKELY TO RUN OUT OF MEMORY. - * Doesn't show separate times for object creation and method calls. - * Tests methods with one or two operands (i.e. includes abs and negate). - * Doesn't indicate random number creation completion. - * Doesn't calculate average number of digits of operands. - * Creates random numbers in exponential notation. - -bigtime-OOM.js -============== - * Creates random numbers and BigNumber and BigDecimal objects all in one go. - * MAY RUN OUT OF MEMORY, e.g. if iterations > 500000 and random digits > 40. - * SHOWS SEPARATE TIMES FOR OBJECT CREATION AND METHOD CALLS. - * Only tests methods with two operands (i.e. no abs or negate). - * Indicates random number creation completion. - * Calculates average number of digits of operands. - * Creates random numbers in normal notation. - - -In general, bigtime.js is recommended over bigtime-OOM.js, which is included as -separate timings for object creation and method calls may be preferred. - - -Usage -===== - -For help: - - $ node bigtime -h - -Examples: - -Compare the time taken by the BigNumber plus method and the BigDecimal add method. -Time 10000 calls to each. -Use operands of up to 40 random digits (each unique for each iteration). -Check that the BigNumber results match the BigDecimal results. - - $ node bigtime plus 10000 40 - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html deleted file mode 100644 index 266f84f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bignumber-vs-bigdecimal.html +++ /dev/null @@ -1,699 +0,0 @@ - - - - - - Testing BigNumber - - - - - -

      Testing BigNumber against BigDecimal

      - -
      - -
      - - - -
      - - - -
      - - - -
      - -
      - BigDecimal: - - - BigInteger - add -
      - -
      - Random number digits: - - - -
      - -
      - Decimal places: - Rounding: -
      - -
      - Iterations: - -
      - -
      - - Click a method to stop - Press space bar to pause/unpause -
      - -
      - -
      0
      -
      -
      - - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js deleted file mode 100644 index 2dc7f71..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime-OOM.js +++ /dev/null @@ -1,366 +0,0 @@ - -var arg, i, max, method, methodIndex, decimalPlaces, - reps, rounding, start, timesEqual, Xs, Ys, - bdM, bdMT, bdOT, bdRs, bdXs, bdYs, - bnM, bnMT, bnOT, bnRs, bnXs, bnYs, - memoryUsage, showMemory, bnR, bdR, - prevRss, prevHeapUsed, prevHeapTotal, - args = process.argv.splice(2), - BigDecimal = require('./lib/bigdecimal_GWT/bigdecimal').BigDecimal, - BigNumber = require('../bignumber'), - bdMs = ['add', 'subtract', 'multiply', 'divide', 'remainder', 'compareTo', 'pow'], - bnMs1 = ['plus', 'minus', 'times', 'dividedBy', 'modulo', 'comparedTo', 'toPower'], - bnMs2 = ['', '', '', 'div', 'mod', 'cmp', ''], - Ms = [bdMs, bnMs1, bnMs2], - allMs = [].concat.apply([], Ms), - expTotal = 0, - total = 0, - - ALWAYS_SHOW_MEMORY = false, - DEFAULT_MAX_DIGITS = 20, - DEFAULT_POW_MAX_DIGITS = 20, - DEFAULT_REPS = 1e4, - DEFAULT_POW_REPS = 1e2, - DEFAULT_PLACES = 20, - MAX_POWER = 50, - - getRandom = function (maxDigits) { - var i = 0, z, - // number of digits - 1 - n = Math.random() * ( maxDigits || 1 ) | 0, - r = ( Math.random() * 10 | 0 ) + ''; - - if ( n ) { - if ( z = r === '0' ) { - r += '.'; - } - - for ( ; i++ < n; r += Math.random() * 10 | 0 ){} - - // 20% chance of integer - if ( !z && Math.random() > 0.2 ) - r = r.slice( 0, i = ( Math.random() * n | 0 ) + 1 ) + '.' + r.slice(i); - } - - // Avoid 'division by zero' error with division and modulo. - if ((bdM == 'divide' || bdM == 'remainder') && parseFloat(r) === 0) - r = ( ( Math.random() * 9 | 0 ) + 1 ) + ''; - - total += n + 1; - - // 50% chance of negative - return Math.random() > 0.5 ? r : '-' + r; - }, - - pad = function (str) { - str += '... '; - while (str.length < 26) str += ' '; - return str; - }, - - getFastest = function (bn, bd) { - var r; - if (Math.abs(bn - bd) > 2) { - r = 'Big' + ((bn < bd) - ? 'Number ' + (bn ? parseFloat((bd / bn).toFixed(1)) : bd) - : 'Decimal ' + (bd ? parseFloat((bn / bd).toFixed(1)) : bn)) + - ' times faster'; - } else { - timesEqual = 1; - r = 'Times approximately equal'; - } - return r; - }, - - showMemoryChange = function () { - if (showMemory) { - memoryUsage = process.memoryUsage(); - - var rss = memoryUsage.rss, - heapUsed = memoryUsage.heapUsed, - heapTotal = memoryUsage.heapTotal; - - console.log(' Change in memory usage: ' + - ' rss: ' + toKB(rss - prevRss) + - ', hU: ' + toKB(heapUsed - prevHeapUsed) + - ', hT: ' + toKB(heapTotal - prevHeapTotal)); - prevRss = rss; prevHeapUsed = heapUsed; prevHeapTotal = heapTotal; - } - }, - - toKB = function (m) { - return parseFloat((m / 1024).toFixed(1)) + ' KB'; - }; - - -// PARSE COMMAND LINE AND SHOW HELP - -if (arg = args[0], typeof arg != 'undefined' && !isFinite(arg) && - allMs.indexOf(arg) == -1 && !/^-*m$/i.test(arg)) { - console.log( - '\n node bigtime-OOM [METHOD] [METHOD CALLS [MAX DIGITS [DECIMAL PLACES]]]\n' + - '\n METHOD: The method to be timed and compared with the automatically' + - '\n chosen corresponding method from BigDecimal or BigNumber\n' + - '\n BigDecimal: add subtract multiply divide remainder compareTo pow' + - '\n BigNumber: plus minus times dividedBy modulo comparedTo toPower' + - '\n (div mod cmp pow)' + - '\n\n METHOD CALLS: The number of method calls to be timed' + - '\n\n MAX DIGITS: The maximum number of digits of the random ' + - '\n numbers used in the method calls' + - '\n\n DECIMAL PLACES: The number of decimal places used in division' + - '\n (The rounding mode is randomly chosen)' + - '\n\n Default values: METHOD: randomly chosen' + - '\n METHOD CALLS: ' + DEFAULT_REPS + - ' (pow: ' + DEFAULT_POW_REPS + ')' + - '\n MAX DIGITS: ' + DEFAULT_MAX_DIGITS + - ' (pow: ' + DEFAULT_POW_MAX_DIGITS + ')' + - '\n DECIMAL PLACES: ' + DEFAULT_PLACES + '\n' + - '\n E.g.s node bigtime-OOM\n node bigtime-OOM minus' + - '\n node bigtime-OOM add 100000' + - '\n node bigtime-OOM times 20000 100' + - '\n node bigtime-OOM div 100000 50 20' + - '\n node bigtime-OOM 9000' + - '\n node bigtime-OOM 1000000 20\n' + - '\n To show memory usage include an argument m or -m' + - '\n E.g. node bigtime-OOM m add'); -} else { - BigNumber.config({EXPONENTIAL_AT : 1E9, RANGE : 1E9}); - Number.prototype.toPlainString = Number.prototype.toString; - - for (i = 0; i < args.length; i++) { - arg = args[i]; - - if (isFinite(arg)) { - arg = Math.abs(parseInt(arg)); - if (reps == null) { - reps = arg <= 1e10 ? arg : 0; - } else if (max == null) { - max = arg <= 1e6 ? arg : 0; - } else if (decimalPlaces == null) { - decimalPlaces = arg <= 1e6 ? arg : DEFAULT_PLACES; - } - } else if (/^-*m$/i.test(arg)) { - showMemory = true; - } else if (method == null) { - method = arg; - } - } - - for (i = 0; - i < Ms.length && (methodIndex = Ms[i].indexOf(method)) == -1; - i++) {} - - bnM = methodIndex == -1 - ? bnMs1[methodIndex = Math.floor(Math.random() * bdMs.length)] - : (Ms[i][0] == 'add' ? bnMs1 : Ms[i])[methodIndex]; - - bdM = bdMs[methodIndex]; - - if (!reps) - reps = bdM == 'pow' ? DEFAULT_POW_REPS : DEFAULT_REPS; - if (!max) - max = bdM == 'pow' ? DEFAULT_POW_MAX_DIGITS : DEFAULT_MAX_DIGITS; - if (decimalPlaces == null) - decimalPlaces = DEFAULT_PLACES; - - Xs = [reps], Ys = [reps]; - bdXs = [reps], bdYs = [reps], bdRs = [reps]; - bnXs = [reps], bnYs = [reps], bnRs = [reps]; - showMemory = showMemory || ALWAYS_SHOW_MEMORY; - - console.log('\n BigNumber %s vs BigDecimal %s', bnM, bdM); - console.log('\n Method calls: %d', reps); - - if (bdM == 'divide') { - rounding = Math.floor(Math.random() * 7); - console.log('\n Decimal places: %d\n Rounding mode: %d', decimalPlaces, rounding); - BigNumber.config(decimalPlaces, rounding); - } - - if (showMemory) { - memoryUsage = process.memoryUsage(); - console.log(' Memory usage: rss: ' + - toKB(prevRss = memoryUsage.rss) + ', hU: ' + - toKB(prevHeapUsed = memoryUsage.heapUsed) + ', hT: ' + - toKB(prevHeapTotal = memoryUsage.heapTotal)); - } - - - // CREATE RANDOM NUMBERS - - // POW: BigDecimal requires JS Number type for exponent argument - if (bdM == 'pow') { - - process.stdout.write('\n Creating ' + reps + - ' random numbers (max. digits: ' + max + ')... '); - - for (i = 0; i < reps; i++) { - Xs[i] = getRandom(max); - } - console.log('done\n Average number of digits: %d', - ((total / reps) | 0)); - - process.stdout.write(' Creating ' + reps + - ' random integer exponents (max. value: ' + MAX_POWER + ')... '); - - for (i = 0; i < reps; i++) { - bdYs[i] = bnYs[i] = Math.floor(Math.random() * (MAX_POWER + 1)); - expTotal += bdYs[i]; - } - console.log('done\n Average value: %d', ((expTotal / reps) | 0)); - - showMemoryChange(); - - - // POW: TIME CREATION OF BIGDECIMALS - - process.stdout.write('\n Creating BigDecimals... '); - - start = +new Date(); - for (i = 0; i < reps; i++) { - bdXs[i] = new BigDecimal(Xs[i]); - } - bdOT = +new Date() - start; - - console.log('done. Time taken: %s ms', bdOT || '<1'); - - showMemoryChange(); - - - // POW: TIME CREATION OF BIGNUMBERS - - process.stdout.write(' Creating BigNumbers... '); - - start = +new Date(); - for (i = 0; i < reps; i++) { - bnXs[i] = new BigNumber(Xs[i]); - } - bnOT = +new Date() - start; - - console.log('done. Time taken: %s ms', bnOT || '<1'); - - - // NOT POW - } else { - - process.stdout.write('\n Creating ' + (reps * 2) + - ' random numbers (max. digits: ' + max + ')... '); - - - for (i = 0; i < reps; i++) { - Xs[i] = getRandom(max); - Ys[i] = getRandom(max); - } - console.log('done\n Average number of digits: %d', - ( total / (reps * 2) ) | 0); - - showMemoryChange(); - - - // TIME CREATION OF BIGDECIMALS - - process.stdout.write('\n Creating BigDecimals... '); - - start = +new Date(); - for (i = 0; i < reps; i++) { - bdXs[i] = new BigDecimal(Xs[i]); - bdYs[i] = new BigDecimal(Ys[i]); - } - bdOT = +new Date() - start; - - console.log('done. Time taken: %s ms', bdOT || '<1'); - - showMemoryChange(); - - - // TIME CREATION OF BIGNUMBERS - - process.stdout.write(' Creating BigNumbers... '); - - start = +new Date(); - for (i = 0; i < reps; i++) { - bnXs[i] = new BigNumber(Xs[i]); - bnYs[i] = new BigNumber(Ys[i]); - } - bnOT = +new Date() - start; - - console.log('done. Time taken: %s ms', bnOT || '<1'); - } - - showMemoryChange(); - - console.log('\n Object creation: %s\n', getFastest(bnOT, bdOT)); - - - // TIME BIGDECIMAL METHOD CALLS - - process.stdout.write(pad(' BigDecimal ' + bdM)); - - if (bdM == 'divide') { - start = +new Date(); - while (i--) bdRs[i] = bdXs[i][bdM](bdYs[i], decimalPlaces, rounding); - bdMT = +new Date() - start; - } else { - start = +new Date(); - while (i--) bdRs[i] = bdXs[i][bdM](bdYs[i]); - bdMT = +new Date() - start; - } - - console.log('done. Time taken: %s ms', bdMT || '<1'); - - - // TIME BIGNUMBER METHOD CALLS - - i = reps; - process.stdout.write(pad(' BigNumber ' + bnM)); - - start = +new Date(); - while (i--) bnRs[i] = bnXs[i][bnM](bnYs[i]); - bnMT = +new Date() - start; - - console.log('done. Time taken: %s ms', bnMT || '<1'); - - - // TIMINGS SUMMARY - - console.log('\n Method calls: %s', getFastest(bnMT, bdMT)); - - if (!timesEqual) { - console.log('\n Overall: ' + - getFastest((bnOT || 1) + (bnMT || 1), (bdOT || 1) + (bdMT || 1))); - } - - - - // CHECK FOR MISMATCHES - - process.stdout.write('\n Checking for mismatches... '); - - for (i = 0; i < reps; i++) { - - bnR = bnRs[i].toString(); - bdR = bdRs[i].toPlainString(); - - // Strip any trailing zeros from non-integer BigDecimals - if (bdR.indexOf('.') != -1) { - bdR = bdR.replace(/\.?0+$/, ''); - } - - if (bdR !== bnR) { - console.log('breaking on first mismatch (result number %d):' + - '\n\n BigDecimal: %s\n BigNumber: %s', i, bdR, bnR); - console.log('\n x: %s\n y: %s', Xs[i], Ys[i]); - - if (bdM == 'divide') { - console.log('\n dp: %d\n r: %d',decimalPlaces, rounding); - } - break; - } - } - if (i == reps) { - console.log('done. None found.\n'); - } -} - - - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js deleted file mode 100644 index 8398df8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/bigtime.js +++ /dev/null @@ -1,335 +0,0 @@ - -var arg, i, j, max, method, methodIndex, decimalPlaces, rounding, reps, start, - timesEqual, xs, ys, prevRss, prevHeapUsed, prevHeapTotal, showMemory, - bdM, bdT, bdR, bdRs, - bnM, bnT, bnR, bnRs, - args = process.argv.splice(2), - BigDecimal = require('./lib/bigdecimal_GWT/bigdecimal').BigDecimal, - BigNumber = require('../bignumber'), - bdMs = ['add', 'subtract', 'multiply', 'divide', 'remainder', - 'compareTo', 'pow', 'negate', 'abs'], - bnMs1 = ['plus', 'minus', 'times', 'dividedBy', 'modulo', - 'comparedTo', 'toPower', 'negated', 'abs'], - bnMs2 = ['', '', '', 'div', 'mod', 'cmp', '', 'neg', ''], - Ms = [bdMs, bnMs1, bnMs2], - allMs = [].concat.apply([], Ms), - bdTotal = 0, - bnTotal = 0, - BD = {}, - BN = {}, - - ALWAYS_SHOW_MEMORY = false, - DEFAULT_MAX_DIGITS = 20, - DEFAULT_POW_MAX_DIGITS = 20, - DEFAULT_REPS = 1e4, - DEFAULT_POW_REPS = 1e2, - DEFAULT_PLACES = 20, - MAX_POWER = 50, - MAX_RANDOM_EXPONENT = 100, - - getRandom = function (maxDigits) { - var i = 0, z, - // number of digits - 1 - n = Math.random() * ( maxDigits || 1 ) | 0, - r = ( Math.random() * 10 | 0 ) + ''; - - if ( n ) { - if ( z = r === '0' ) { - r += '.'; - } - - for ( ; i++ < n; r += Math.random() * 10 | 0 ){} - - // 20% chance of integer - if ( !z && Math.random() > 0.2 ) - r = r.slice( 0, i = ( Math.random() * n | 0 ) + 1 ) + '.' + r.slice(i); - } - - // Avoid 'division by zero' error with division and modulo. - if ((bdM == 'divide' || bdM == 'remainder') && parseFloat(r) === 0) - r = ( ( Math.random() * 9 | 0 ) + 1 ) + ''; - - // 50% chance of negative - return Math.random() > 0.5 ? r : '-' + r; - }, - - // Returns exponential notation. - //getRandom = function (maxDigits) { - // var i = 0, - // // n is the number of significant digits - 1 - // n = Math.random() * (maxDigits || 1) | 0, - // r = ( ( Math.random() * 9 | 0 ) + 1 ) + ( n ? '.' : '' ); - // - // for (; i++ < n; r += Math.random() * 10 | 0 ){} - // - // // Add exponent. - // r += 'e' + ( Math.random() > 0.5 ? '+' : '-' ) + - // ( Math.random() * MAX_RANDOM_EXPONENT | 0 ); - // - // // 50% chance of being negative. - // return Math.random() > 0.5 ? r : '-' + r - //}, - - getFastest = function (bn, bd) { - var r; - if (Math.abs(bn - bd) > 2) { - r = 'Big' + ((bn < bd) - ? 'Number was ' + (bn ? parseFloat((bd / bn).toFixed(1)) : bd) - : 'Decimal was ' + (bd ? parseFloat((bn / bd).toFixed(1)) : bn)) + - ' times faster'; - } else { - timesEqual = 1; - r = 'Times approximately equal'; - } - return r; - }, - - getMemory = function (obj) { - if (showMemory) { - var mem = process.memoryUsage(), - rss = mem.rss, - heapUsed = mem.heapUsed, - heapTotal = mem.heapTotal; - - if (obj) { - obj.rss += (rss - prevRss); - obj.hU += (heapUsed - prevHeapUsed); - obj.hT += (heapTotal - prevHeapTotal); - } - prevRss = rss; - prevHeapUsed = heapUsed; - prevHeapTotal = heapTotal; - } - }, - - getMemoryTotals = function (obj) { - function toKB(m) {return parseFloat((m / 1024).toFixed(1))} - return '\trss: ' + toKB(obj.rss) + - '\thU: ' + toKB(obj.hU) + - '\thT: ' + toKB(obj.hT); - }; - - -if (arg = args[0], typeof arg != 'undefined' && !isFinite(arg) && - allMs.indexOf(arg) == -1 && !/^-*m$/i.test(arg)) { - console.log( - '\n node bigtime [METHOD] [METHOD CALLS [MAX DIGITS [DECIMAL PLACES]]]\n' + - '\n METHOD: The method to be timed and compared with the' + - '\n \t corresponding method from BigDecimal or BigNumber\n' + - '\n BigDecimal: add subtract multiply divide remainder' + - ' compareTo pow\n\t\tnegate abs\n\n BigNumber: plus minus times' + - ' dividedBy modulo comparedTo toPower\n\t\tnegated abs' + - ' (div mod cmp pow neg)' + - '\n\n METHOD CALLS: The number of method calls to be timed' + - '\n\n MAX DIGITS: The maximum number of digits of the random ' + - '\n\t\tnumbers used in the method calls\n\n ' + - 'DECIMAL PLACES: The number of decimal places used in division' + - '\n\t\t(The rounding mode is randomly chosen)' + - '\n\n Default values: METHOD: randomly chosen' + - '\n\t\t METHOD CALLS: ' + DEFAULT_REPS + - ' (pow: ' + DEFAULT_POW_REPS + ')' + - '\n\t\t MAX DIGITS: ' + DEFAULT_MAX_DIGITS + - ' (pow: ' + DEFAULT_POW_MAX_DIGITS + ')' + - '\n\t\t DECIMAL PLACES: ' + DEFAULT_PLACES + '\n' + - '\n E.g. node bigtime\n\tnode bigtime minus\n\tnode bigtime add 100000' + - '\n\tnode bigtime times 20000 100\n\tnode bigtime div 100000 50 20' + - '\n\tnode bigtime 9000\n\tnode bigtime 1000000 20\n' + - '\n To show memory usage, include an argument m or -m' + - '\n E.g. node bigtime m add'); -} else { - - BigNumber.config({EXPONENTIAL_AT : 1E9, RANGE : 1E9}); - Number.prototype.toPlainString = Number.prototype.toString; - - for (i = 0; i < args.length; i++) { - arg = args[i]; - if (isFinite(arg)) { - arg = Math.abs(parseInt(arg)); - if (reps == null) - reps = arg <= 1e10 ? arg : 0; - else if (max == null) - max = arg <= 1e6 ? arg : 0; - else if (decimalPlaces == null) - decimalPlaces = arg <= 1e6 ? arg : DEFAULT_PLACES; - } else if (/^-*m$/i.test(arg)) - showMemory = true; - else if (method == null) - method = arg; - } - - for (i = 0; - i < Ms.length && (methodIndex = Ms[i].indexOf(method)) == -1; - i++) {} - - bnM = methodIndex == -1 - ? bnMs1[methodIndex = Math.floor(Math.random() * bdMs.length)] - : (Ms[i][0] == 'add' ? bnMs1 : Ms[i])[methodIndex]; - - bdM = bdMs[methodIndex]; - - if (!reps) - reps = bdM == 'pow' ? DEFAULT_POW_REPS : DEFAULT_REPS; - if (!max) - max = bdM == 'pow' ? DEFAULT_POW_MAX_DIGITS : DEFAULT_MAX_DIGITS; - if (decimalPlaces == null) - decimalPlaces = DEFAULT_PLACES; - - xs = [reps], ys = [reps], bdRs = [reps], bnRs = [reps]; - BD.rss = BD.hU = BD.hT = BN.rss = BN.hU = BN.hT = 0; - showMemory = showMemory || ALWAYS_SHOW_MEMORY; - - console.log('\n BigNumber %s vs BigDecimal %s\n' + - '\n Method calls: %d\n\n Random operands: %d', bnM, bdM, reps, - bdM == 'abs' || bdM == 'negate' || bdM == 'abs' ? reps : reps * 2); - - console.log(' Max. digits of operands: %d', max); - - if (bdM == 'divide') { - rounding = Math.floor(Math.random() * 7); - console.log('\n Decimal places: %d\n Rounding mode: %d', decimalPlaces, rounding); - BigNumber.config(decimalPlaces, rounding); - } - - process.stdout.write('\n Testing started'); - - outer: - for (; reps > 0; reps -= 1e4) { - - j = Math.min(reps, 1e4); - - - // GENERATE RANDOM OPERANDS - - for (i = 0; i < j; i++) { - xs[i] = getRandom(max); - } - - if (bdM == 'pow') { - for (i = 0; i < j; i++) { - ys[i] = Math.floor(Math.random() * (MAX_POWER + 1)); - } - } else if (bdM != 'abs' && bdM != 'negate') { - for (i = 0; i < j; i++) { - ys[i] = getRandom(max); - } - } - - getMemory(); - - - // BIGDECIMAL - - if (bdM == 'divide') { - - start = +new Date(); - for (i = 0; i < j; i++) { - bdRs[i] = new BigDecimal(xs[i])[bdM](new BigDecimal(ys[i]), - decimalPlaces, rounding); - } - bdT = +new Date() - start; - - } else if (bdM == 'pow') { - - start = +new Date(); - for (i = 0; i < j; i++) { - bdRs[i] = new BigDecimal(xs[i])[bdM](ys[i]); - } - bdT = +new Date() - start; - - } else if (bdM == 'abs' || bdM == 'negate') { - - start = +new Date(); - for (i = 0; i < j; i++) { - bdRs[i] = new BigDecimal(xs[i])[bdM](); - } - bdT = +new Date() - start; - - } else { - - start = +new Date(); - for (i = 0; i < j; i++) { - bdRs[i] = new BigDecimal(xs[i])[bdM](new BigDecimal(ys[i])); - } - bdT = +new Date() - start; - - } - - getMemory(BD); - - - // BIGNUMBER - - if (bdM == 'pow') { - - start = +new Date(); - for (i = 0; i < j; i++) { - bnRs[i] = new BigNumber(xs[i])[bnM](ys[i]); - } - bnT = +new Date() - start; - - } else if (bdM == 'abs' || bdM == 'negate') { - - start = +new Date(); - for (i = 0; i < j; i++) { - bnRs[i] = new BigNumber(xs[i])[bnM](); - } - bnT = +new Date() - start; - - } else { - - start = +new Date(); - for (i = 0; i < j; i++) { - bnRs[i] = new BigNumber(xs[i])[bnM](new BigNumber(ys[i])); - } - bnT = +new Date() - start; - - } - - getMemory(BN); - - - // CHECK FOR MISMATCHES - - for (i = 0; i < j; i++) { - bnR = bnRs[i].toString(); - bdR = bdRs[i].toPlainString(); - - // Strip any trailing zeros from non-integer BigDecimals - if (bdR.indexOf('.') != -1) { - bdR = bdR.replace(/\.?0+$/, ''); - } - - if (bdR !== bnR) { - console.log('\n breaking on first mismatch (result number %d):' + - '\n\n BigDecimal: %s\n BigNumber: %s', i, bdR, bnR); - console.log('\n x: %s\n y: %s', xs[i], ys[i]); - - if (bdM == 'divide') - console.log('\n dp: %d\n r: %d',decimalPlaces, rounding); - break outer; - } - } - - bdTotal += bdT; - bnTotal += bnT; - - process.stdout.write(' .'); - } - - - // TIMINGS SUMMARY - - - if (i == j) { - console.log(' done\n\n No mismatches.'); - if (showMemory) { - console.log('\n Change in memory usage (KB):' + - '\n\tBigDecimal' + getMemoryTotals(BD) + - '\n\tBigNumber ' + getMemoryTotals(BN)); - } - console.log('\n Time taken:' + - '\n\tBigDecimal ' + (bdTotal || '<1') + ' ms' + - '\n\tBigNumber ' + (bnTotal || '<1') + ' ms\n\n ' + - getFastest(bnTotal, bdTotal) + '\n'); - } -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_GWT/BigDecTest.class deleted file mode 100644 index 455ed364b2fff589b676467bdebad676d1003505..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1275 zcmai!%TE(g6vn>`eN0QS(|hi@zjN-H@0|AQ?}N_(6f8v1kD)Mz1>A_D1vdqZ z@O3nTBvRZOi{ci>1*8Rte4h~@36Qy&6`%-E1!w|v?l3rO3a|uBgfSV$6hmmrt+?JD zhSp?il_4-&-EbJ<1-IfX?v~e`+KRniB2S=fyA_7sxn2M^IrflTWrb5RiWm8E7 zNt9@5qs6ckx>Bc@hj_#*DKHEhqG=kcrP2H7mTB;ZOm1nWu3EXYEKzz@%xbD8ky|2{ zPU0QwMb#ba`*?lJDS8Y&$$yI;sX4qY8%~WuJY-JEJDF;Po_3$OXZhuh=agv%s=NHQ zMuc0b?a:b} -function xe(a,b){return !we(a,b)} -function ye(a,b){return !ve(a,b)} -function ir(a,b){return new b(a)} -function Oj(a){this.b=new Yn(a)} -function Nj(){this.b=(Un(),Rn)} -function ak(){this.b=(Qo(),Fo)} -function Wo(){Qo();return zo} -function mr(a,b){lr();_q(kr,a,b)} -function br(a,b){a[b]||(a[b]={})} -function kq(a){return a.b=b)&&hq(a,b)} -function xc(a,b){return a!=null&&tc(a,b)} -function db(a){return yc(a)?Db(wc(a)):Lr} -function Z(a){return yc(a)?$(wc(a)):a+Lr} -function Fl(a){return lc(Vd,{6:1},1,a,0)} -function vq(){this.b=lc(Td,{6:1},0,0,0)} -function Pl(){Pl=rr;Ml={};Ol={}} -function Yo(){Yo=rr;Xo=Jk((Qo(),zo))} -function ik(){if(!hk){hk=true;jk()}} -function Gj(){if(!Fj){Fj=true;Hj()}} -function Wj(){if(!Vj){Vj=true;new kk;Xj()}} -function gr(){this.b=new Fq;new Fq;new Fq} -function X(a){Cb();this.c=a;Bb(new Tb,this)} -function Pi(a){Oh();oi.call(this,Hm(a,0))} -function gg(a){hg.call(this,a,0,a.length)} -function fg(a,b){cg.call(this,a);If(this,b)} -function ze(a,b){ee(a,b,true);return ae} -function tq(a,b){dq(b,a.c);return a.b[b]} -function rq(a,b){nc(a.b,a.c++,b);return true} -function _l(a,b,c){dc(a.b,Ll(b,0,c));return a} -function kb(a,b,c){return a.apply(b,c);var d} -function em(a,b,c){return ec(a.b,b,b,c),a} -function Af(a,b,c){return yf(a,b,Bc(a.f),c)} -function xf(a,b,c){return yf(a,b,Bc(a.f),Uo(c))} -function Bl(c,a,b){return c.substr(a,b-a)} -function Al(b,a){return b.substr(a,b.length-a)} -function fl(a){return Math.log(a)*Math.LOG10E} -function cb(a){return a==null?null:a.name} -function $(a){return a==null?null:a.message} -function yc(a){return a!=null&&a.tM!=rr&&!tc(a,1)} -function ec(a,b,c,d){a.b=Bl(a.b,0,b)+d+Al(a.b,c)} -function eg(a,b,c){dg.call(this,a,b);If(this,c)} -function pg(a,b){this.g=a;this.f=b;this.b=sg(a)} -function si(a,b,c){Oh();this.f=a;this.e=b;this.b=c} -function sl(a){this.b='Unknown';this.d=a;this.c=-1} -function yk(a,b){var c;c=new wk;c.d=a+b;return c} -function dr(a,b){var c;c=mp(a.b,b);return wc(c)} -function fb(a){var b;return b=a,zc(b)?b.hC():ob(b)} -function To(a){Qo();return Ok((Yo(),Xo),a)} -function qe(a,b){return de(a.l&b.l,a.m&b.m,a.h&b.h)} -function De(a,b){return de(a.l|b.l,a.m|b.m,a.h|b.h)} -function Le(a,b){return de(a.l^b.l,a.m^b.m,a.h^b.h)} -function Bm(a,b){return (a.b[~~b>>5]&1<<(b&31))!=0} -function Cq(a,b){var c;for(c=0;c=b&&a.splice(0,b);return a} -function wb(a,b){!a&&(a=[]);a[a.length]=b;return a} -function Ph(a,b){if(mi(a,b)){return tm(a,b)}return a} -function ii(a,b){if(!mi(a,b)){return tm(a,b)}return a} -function _d(a){if(xc(a,15)){return a}return new X(a)} -function Eb(){try{null.a()}catch(a){return a}} -function Ak(a){var b;b=new wk;b.d=Lr+a;b.c=1;return b} -function eb(a,b){var c;return c=a,zc(c)?c.eQ(b):c===b} -function se(a,b){return a.l==b.l&&a.m==b.m&&a.h==b.h} -function Ce(a,b){return a.l!=b.l||a.m!=b.m||a.h!=b.h} -function de(a,b,c){return _=new Se,_.l=a,_.m=b,_.h=c,_} -function rp(a,b,c){return !b?tp(a,c):sp(a,b,c,~~ob(b))} -function Eq(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)} -function Xq(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)} -function hq(a,b){throw new Wk('Index: '+a+', Size: '+b)} -function Xh(a,b){if(b<0){throw new nk(ts)}return tm(a,b)} -function dg(a,b){if(!a){throw new jl}this.f=b;Tf(this,a)} -function og(a,b){if(!a){throw new jl}this.f=b;Tf(this,a)} -function ig(a,b,c,d){hg.call(this,a,b,c);If(this,d)} -function jg(a,b){hg.call(this,a,0,a.length);If(this,b)} -function ng(a,b){hg.call(this,Cl(a),0,a.length);If(this,b)} -function lm(a){V.call(this,'String index out of range: '+a)} -function Zl(a,b){dc(a.b,String.fromCharCode(b));return a} -function pn(a,b){tn(a.b,a.b,a.e,b.b,b.e);Sh(a);a.c=-2} -function Tf(a,b){a.d=b;a.b=b.ab();a.b<54&&(a.g=Ie(ai(b)))} -function qc(){qc=rr;oc=[];pc=[];rc(new ic,oc,pc)} -function Ch(){if(!Bh){Bh=true;new Yj;new Ij;Dh()}} -function Sl(){if(Nl==256){Ml=Ol;Ol={};Nl=0}++Nl} -function cr(a){var b;b=a[Ls];if(!b){b=[];a[Ls]=b}return b} -function zk(a,b,c){var d;d=new wk;d.d=a+b;d.c=c?8:0;return d} -function xk(a,b,c){var d;d=new wk;d.d=a+b;d.c=4;d.b=c;return d} -function lc(a,b,c,d,e){var f;f=jc(e,d);mc(a,b,c,f);return f} -function Ll(a,b,c){var d;d=b+c;El(a.length,b,d);return Gl(a,b,d)} -function mo(a,b){go();return b=a.c.c){throw new Oq}return tq(a.c,a.b++)} -function wl(a,b){if(!xc(b,1)){return false}return String(a)==b} -function lb(){if(ib++==0){sb((rb(),qb));return true}return false} -function fi(a){if(a.f<0){throw new nk('start < 0: '+a)}return xo(a)} -function pm(){V.call(this,'Add not supported on this collection')} -function Fq(){this.b=[];this.f={};this.d=false;this.c=null;this.e=0} -function qi(a,b){Oh();this.f=a;this.e=1;this.b=mc(Od,{6:1},-1,[b])} -function sc(a,b,c){qc();for(var d=0,e=b.length;d=0&&a.b[c]==b[c];--c){}return c<0} -function tp(a,b){var c;c=a.c;a.c=b;if(!a.d){a.d=true;++a.e}return c} -function $l(a,b){dc(a.b,String.fromCharCode.apply(null,b));return a} -function am(a,b,c,d){b==null&&(b=Mr);bc(a.b,b.substr(c,d-c));return a} -function sn(a,b,c,d){var e;e=lc(Od,{6:1},-1,b,1);tn(e,a,b,c,d);return e} -function mc(a,b,c,d){qc();sc(d,oc,pc);d.aC=a;d.cM=b;d.qI=c;return d} -function uq(a,b,c){for(;ca.c)&&hq(b,a.c);Aq(a.b,b,0,c);++a.c} -function nn(a,b){var c;c=on(a.b,a.e,b);if(c==1){a.b[a.e]=1;++a.e}a.c=-2} -function Sh(a){while(a.e>0&&a.b[--a.e]==0){}a.b[a.e++]==0&&(a.f=0)} -function Gg(a){if(we(a,ur)&&xe(a,xr)){return df[Je(a)]}return new qg(a,0)} -function ji(a,b){if(b==0||a.f==0){return a}return b>0?wm(a,b):zm(a,-b)} -function li(a,b){if(b==0||a.f==0){return a}return b>0?zm(a,b):wm(a,-b)} -function $h(a){var b;if(a.f==0){return -1}b=Zh(a);return (b<<5)+_k(a.b[b])} -function bl(a){var b;b=Je(a);return b!=0?_k(b):_k(Je(Fe(a,32)))+32} -function Sb(a,b){var c;c=Mb(a,b);return c.length==0?(new Fb).o(b):zb(c,1)} -function Gl(a,b,c){a=a.slice(b,c);return String.fromCharCode.apply(null,a)} -function rc(a,b,c){var d=0,e;for(var f in a){if(e=a[f]){b[d]=f;c[d]=e;++d}}} -function up(e,a,b){var c,d=e.f;a=Qr+a;a in d?(c=d[a]):++e.e;d[a]=b;return c} -function gn(a,b,c,d){var e;e=lc(Od,{6:1},-1,b+1,1);hn(e,a,b,c,d);return e} -function Cl(a){var b,c;c=a.length;b=lc(Md,{6:1},-1,c,1);xl(a,c,b,0);return b} -function _e(a){var b;b=bf(a);if(isNaN(b)){throw new pl(Zr+a+$r)}return b} -function Fg(a){if(!isFinite(a)||isNaN(a)){throw new pl(hs)}return new mg(Lr+a)} -function wc(a){if(a!=null&&(a.tM==rr||tc(a,1))){throw new Ek}return a} -function Qf(a,b){var c;c=new og((!a.d&&(a.d=Li(a.g)),a.d),a.f);If(c,b);return c} -function bg(a,b){var c;c=new Pi(Zf(a));if(sm(c)0?1:0}return (!a.d&&(a.d=Li(a.g)),a.d).r()} -function Mf(a){if(a.b<54){return new pg(-a.g,a.f)}return new og((!a.d&&(a.d=Li(a.g)),a.d).cb(),a.f)} -function El(a,b,c){if(b<0){throw new lm(b)}if(ca){throw new lm(c)}} -function lg(a,b){if(!isFinite(a)||isNaN(a)){throw new pl(hs)}Hf(this,a.toPrecision(20));If(this,b)} -function Gk(a,b){if(isNaN(a)){return isNaN(b)?0:1}else if(isNaN(b)){return -1}return ab?1:0} -function uk(a,b){if(b<2||b>36){return 0}if(a<0||a>=b){return 0}return a<10?48+a&65535:97+a-10&65535} -function er(a,b){var c;if(!b){return null}c=b[Ls];if(c){return c}c=ir(b,dr(a,b.gC()));b[Ls]=c;return c} -function ke(a){var b,c;c=$k(a.h);if(c==32){b=$k(a.m);return b==32?$k(a.l)+32:b+20-10}else{return c-12}} -function be(a){var b,c,d;b=a&4194303;c=~~a>>22&4194303;d=a<0?1048575:0;return de(b,c,d)} -function Qe(){Qe=rr;Me=de(4194303,4194303,524287);Ne=de(0,0,524288);Oe=ue(1);ue(2);Pe=ue(0)} -function mn(a,b){hn(a.b,a.b,a.e,b.b,b.e);a.e=hl(gl(a.e,b.e)+1,a.b.length);Sh(a);a.c=-2} -function um(a,b){var c;c=~~b>>5;a.e+=c+($k(a.b[a.e-1])-(b&31)>=0?0:1);xm(a.b,a.b,c,b&31);Sh(a);a.c=-2} -function Tm(a,b){var c,d;c=~~b>>5;if(a.e>>d:0;Sh(a)} -function ai(a){var b;b=a.e>1?De(Ee(ue(a.b[1]),32),qe(ue(a.b[0]),yr)):qe(ue(a.b[0]),yr);return Ae(ue(a.f),b)} -function jn(a,b,c){var d;for(d=c-1;d>=0&&a[d]==b[d];--d){}return d<0?0:xe(qe(ue(a[d]),yr),qe(ue(b[d]),yr))?-1:1} -function ym(a,b,c){var d,e,f;d=0;for(e=0;e>>31}d!=0&&(a[c]=d)} -function ge(a,b,c,d,e){var f;f=Fe(a,b);c&&je(f);if(e){a=ie(a,b);d?(ae=Be(a)):(ae=de(a.l,a.m,a.h))}return f} -function gwtOnLoad(b,c,d,e){$moduleName=c;$moduleBase=d;if(b)try{Jr($d)()}catch(a){b(c)}else{Jr($d)()}} -function fr(a,b){var c,d,e;if(b==null){return null}d=cr(b);e=d;for(c=0;c>5==a.e-1&&a.b[a.e-1]==1<<(b&31);if(d){for(c=0;d&&c=0&&b=0){return new qg(ur,2147483647)}return new qg(ur,-2147483648)} -function Li(a){Oh();if(a<0){if(a!=-1){return new ui(-1,-a)}return Ih}else return a<=10?Kh[Bc(a)]:new ui(1,a)} -function zg(a){var b=qf;!b&&(b=qf=/^[+-]?\d*$/i);if(b.test(a)){return parseInt(a,10)}else{return Number.NaN}} -function kp(e,a){var b=e.f;for(var c in b){if(c.charCodeAt(0)==58){var d=new Yp(e,c.substring(1));a.Kb(d)}}} -function Rl(a){Pl();var b=Qr+a;var c=Ol[b];if(c!=null){return c}c=Ml[b];c==null&&(c=Ql(a));Sl();return Ol[b]=c} -function Be(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;return de(b,c,d)} -function je(a){var b,c,d;b=~a.l+1&4194303;c=~a.m+(b==0?1:0)&4194303;d=~a.h+(b==0&&c==0?1:0)&1048575;a.l=b;a.m=c;a.h=d} -function Q(a){var b,c,d;c=lc(Ud,{6:1},13,a.length,0);for(d=0,b=a.length;d>=1){}return b}} -function sm(a){var b,c,d;if(a.f==0){return 0}b=a.e<<5;c=a.b[a.e-1];if(a.f<0){d=Zh(a);d==a.e-1&&(c=~~(c-1))}b-=$k(c);return b} -function io(a,b,c,d,e){go();if(b==0||d==0){return}b==1?(e[d]=ko(e,c,d,a[0])):d==1?(e[b]=ko(e,a,b,c[0])):jo(a,c,e,b,d)} -function en(a,b,c,d,e){var f,g;g=a;for(f=c.ab()-1;f>=0;--f){g=Ym(g,g,d,e);(c.b[~~f>>5]&1<<(f&31))!=0&&(g=Ym(g,b,d,e))}return g} -function on(a,b,c){var d,e;d=qe(ue(c),yr);for(e=0;Ce(d,ur)&&e2147483647){throw new nk('Underflow')}else{return Bc(a)}} -function Xn(a,b){Un();if(a<0){throw new Sk('Digits < 0')}if(!b){throw new kl('null RoundingMode')}this.b=a;this.c=b} -function Ki(a){Oh();if(xe(a,ur)){if(Ce(a,wr)){return new ti(-1,Be(a))}return Ih}else return ye(a,tr)?Kh[Je(a)]:new ti(1,a)} -function tg(a){var b;xe(a,ur)&&(a=de(~a.l&4194303,~a.m&4194303,~a.h&1048575));return 64-(b=Je(Fe(a,32)),b!=0?$k(b):$k(Je(a))+32)} -function pe(a,b){var c,d,e;c=a.l+b.l;d=a.m+b.m+(~~c>>22);e=a.h+b.h+(~~d>>22);return de(c&4194303,d&4194303,e&1048575)} -function He(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(~~c>>22);e=a.h-b.h+(~~d>>22);return de(c&4194303,d&4194303,e&1048575)} -function Sm(a,b){var c;c=b-1;if(a.f>0){while(!a.gb(c)){--c}return b-1-c}else{while(a.gb(c)){--c}return b-1-gl(c,a.bb())}} -function fe(a,b){if(a.h==524288&&a.m==0&&a.l==0){b&&(ae=de(0,0,0));return ce((Qe(),Oe))}b&&(ae=de(a.l,a.m,a.h));return de(0,0,0)} -function Ff(a,b){var c;if(a===b){return true}if(xc(b,16)){c=vc(b,16);return c.f==a.f&&(a.b<54?c.g==a.g:a.d.eQ(c.d))}return false} -function cn(a,b,c){var d,e,f,g;f=ur;for(d=b-1;d>=0;--d){g=pe(Ee(f,32),qe(ue(a[d]),yr));e=Nm(g,c);f=ue(Je(Fe(e,32)))}return Je(f)} -function wm(a,b){var c,d,e,f;c=~~b>>5;b&=31;e=a.e+c+(b==0?0:1);d=lc(Od,{6:1},-1,e,1);xm(d,a.b,c,b);f=new si(a.f,e,d);Sh(f);return f} -function ue(a){var b,c;if(a>-129&&a<128){b=a+128;oe==null&&(oe=lc(Pd,{6:1},2,256,0));c=oe[b];!c&&(c=oe[b]=be(a));return c}return be(a)} -function Ai(a){Oh();var b,c,d;if(a>5;b=a&31;d=lc(Od,{6:1},-1,c+1,1);d[c]=1<ys&&c[c.length-1]>ys){return c}var a=c.replace(/^(\s*)/,Lr);var b=a.replace(/\s*$/,Lr);return b} -function Yk(a){a-=~~a>>1&1431655765;a=(~~a>>2&858993459)+(a&858993459);a=(~~a>>4)+a&252645135;a+=~~a>>8;a+=~~a>>16;return a&63} -function nc(a,b,c){if(c!=null){if(a.qI>0&&!uc(c,a.qI)){throw new qk}if(a.qI<0&&(c.tM==rr||tc(c,1))){throw new qk}}return a[b]=c} -function Qh(a,b){if(a.f>b.f){return 1}if(a.fb.e){return a.f}if(a.e>1);f=a[e];if(fb){c=e-1}else{return e}}return -d-1} -function Pk(a){var b;b=_e(a);if(b>3.4028234663852886E38){return Infinity}else if(b<-3.4028234663852886E38){return -Infinity}return b} -function Ie(a){if(se(a,(Qe(),Ne))){return -9223372036854775808}if(!we(a,Pe)){return -me(Be(a))}return a.l+a.m*4194304+a.h*17592186044416} -function Bb(a,b){var c,d,e,f;e=Sb(a,yc(b.c)?wc(b.c):null);f=lc(Ud,{6:1},13,e.length,0);for(c=0,d=f.length;c0?d:Pr} -function ie(a,b){var c,d,e;if(b<=22){c=a.l&(1<>5]|=1<<(c&31))}return d} -function Jm(a){var b,c,d;b=qe(ue(a.b[0]),yr);c=sr;d=vr;do{Ce(qe(Ae(b,c),d),ur)&&(c=De(c,d));d=Ee(d,1)}while(xe(d,Fr));c=Be(c);return Je(qe(c,yr))} -function Gm(a){var b,c,d;if(we(a,ur)){c=re(a,Ar);d=ze(a,Ar)}else{b=Ge(a,1);c=re(b,Br);d=ze(b,Br);d=pe(Ee(d,1),qe(a,sr))}return De(Ee(d,32),qe(c,yr))} -function ko(a,b,c,d){go();var e,f;e=ur;for(f=0;f36){throw new pl('Radix out of range')}if(a.length==0){throw new pl('Zero length BigInteger')}Ei(this,a,b)} -function Vq(){Uq();var a,b,c;c=Tq+++(new Date).getTime();a=Bc(Math.floor(c*5.9604644775390625E-8))&16777215;b=Bc(c-a*16777216);this.b=a^1502;this.c=b^15525485} -function un(a,b,c,d){var e;if(c>d){return 1}else if(c=0&&a[e]==b[e];--e){}return e<0?0:xe(qe(ue(a[e]),yr),qe(ue(b[e]),yr))?-1:1}} -function In(a,b){var c,d,e,f;e=a.e;d=lc(Od,{6:1},-1,e,1);hl(Zh(a),Zh(b));for(c=0;c=e){return Oh(),Nh}d=lc(Od,{6:1},-1,e,1);for(;c999999999){throw new nk(bs)}c=a.f*b;return a.b==0&&a.g!=-1?Ig(c):new dg((!a.d&&(a.d=Li(a.g)),a.d).db(b),Dg(c))} -function tk(a,b){if(b<2||b>36){return -1}if(a>=48&&a<48+(b<10?b:10)){return a-48}if(a>=97&&a=65&&a=0;--a){Sq[a]=c;c*=0.5}b=1;for(a=24;a>=0;--a){Rq[a]=b;b*=0.5}} -function oo(a,b){go();var c,d;d=(Oh(),Jh);c=a;for(;b>1;b>>=1){(b&1)!=0&&(d=ei(d,c));c.e==1?(c=ei(c,c)):(c=new ri(qo(c.b,c.e,lc(Od,{6:1},-1,c.e<<1,1))))}d=ei(d,c);return d} -function nl(){nl=rr;ml=mc(Md,{6:1},-1,[48,49,50,51,52,53,54,55,56,57,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122])} -function rm(a){var b,c;b=0;if(a.f==0){return 0}c=Zh(a);if(a.f>0){for(;c>22);e+=~~d>>22;if(e<0){return false}a.l=c&4194303;a.m=d&4194303;a.h=e&1048575;return true} -function al(a){var b,c,d;b=lc(Md,{6:1},-1,8,1);c=(nl(),ml);d=7;if(a>=0){while(a>15){b[d--]=c[a&15];a>>=4}}else{while(d>0){b[d--]=c[a&15];a>>=4}}b[d]=c[a&15];return Gl(b,d,8)} -function vn(a,b){if(b.f==0||a.f==0){return Oh(),Nh}if(Vh(b,(Oh(),Ih))){return a}if(Vh(a,Ih)){return b}return a.f>0?b.f>0?Dn(a,b):wn(a,b):b.f>0?wn(b,a):a.e>b.e?xn(a,b):xn(b,a)} -function yn(a,b){if(b.f==0){return a}if(a.f==0){return Oh(),Nh}if(Vh(a,(Oh(),Ih))){return new Pi(En(b))}if(Vh(b,Ih)){return Nh}return a.f>0?b.f>0?Bn(a,b):Cn(a,b):b.f>0?An(a,b):zn(a,b)} -function Gf(a){var b;if(a.c!=0){return a.c}if(a.b<54){b=te(a.g);a.c=Je(qe(b,wr));a.c=33*a.c+Je(qe(Fe(b,32),wr));a.c=17*a.c+Bc(a.f);return a.c}a.c=17*a.d.hC()+Bc(a.f);return a.c} -function vg(a,b,c,d){var e,f,g,i,j;f=(j=a/b,j>0?Math.floor(j):Math.ceil(j));g=a%b;i=Gk(a*b,0);if(g!=0){e=Gk((g<=0?0-g:g)*2,b<=0?0-b:b);f+=Bg(Bc(f)&1,i*(5+e),d)}return new pg(f,c)} -function jc(a,b){var c=new Array(b);if(a==3){for(var d=0;d0){var e=[null,0,false][a];for(var d=0;dc;--e){a[e]|=~~b[e-c-1]>>>f;a[e-1]=b[e-c-1]<>5;a.e-=d;if(!Am(a.b,a.e,a.b,d,b&31)&&e<0){for(c=0;c>19;d=~~b.h>>19;return c==0?d!=0||a.h>b.h||a.h==b.h&&a.m>b.m||a.h==b.h&&a.m==b.m&&a.l>b.l:!(d==0||a.h>19;d=~~b.h>>19;return c==0?d!=0||a.h>b.h||a.h==b.h&&a.m>b.m||a.h==b.h&&a.m==b.m&&a.l>=b.l:!(d==0||a.h0?b.f>0?a.e>b.e?In(a,b):In(b,a):Gn(a,b):b.f>0?Gn(b,a):Zh(b)>Zh(a)?Hn(b,a):Hn(a,b)} -function sg(a){var b,c;if(a>-140737488355328&&a<140737488355328){if(a==0){return 0}b=a<0;b&&(a=-a);c=Bc(el(Math.log(a)/0.6931471805599453));(!b||a!=Math.pow(2,c))&&++c;return c}return tg(te(a))} -function Yh(a,b){var c,d;c=a._();d=b._();if(c.r()==0){return d}else if(d.r()==0){return c}if((c.e==1||c.e==2&&c.b[1]>0)&&(d.e==1||d.e==2&&d.b[1]>0)){return Ki(Rm(ai(c),ai(d)))}return Qm(Rh(c),Rh(d))} -function ci(a,b){var c;if(b.f<=0){throw new nk(us)}if(!(a.gb(0)||b.gb(0))){throw new nk(vs)}if(b.e==1&&b.b[0]==1){return Nh}c=Wm(bi(a._(),b),b);if(c.f==0){throw new nk(vs)}c=a.f<0?rn(b,c):c;return c} -function Am(a,b,c,d,e){var f,g,i;f=true;for(g=0;g>>e|c[g+d+1]<>>e;++g}return f} -function Ql(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c=0;--d){if(a[d]!=e[d]){c=a[d]!=0&&ve(qe(ue(a[d]),yr),qe(ue(e[d]),yr));break}}}g=new si(1,f+1,a);c&&pn(g,b);Sh(g);return g} -function Kf(a,b){var c;c=a.f+b.f;if(a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return Ig(c)}if(a.b+b.b<54){return new pg(a.g*b.g,Dg(c))}return new dg(ei((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),Dg(c))} -function sp(k,a,b,c){var d=k.b[c];if(d){for(var e=0,f=d.length;e=0;--f){i=Rh(g);Tm(i,c);g=ei(g,i);if((e.b[~~f>>5]&1<<(f&31))!=0){g=ei(g,d);Tm(g,c)}}Tm(g,c);return g} -function ar(a,b){var c,d,e,f,g,i,j;j=zl(a,Ks,0);i=$wnd;for(g=0;g>22-b;e=a.h<>22-b}else if(b<44){c=0;d=a.l<>44-b}else{c=0;d=0;e=a.l<>>b;e=~~a.m>>b|c<<22-b;d=~~a.l>>b|a.m<<22-b}else if(b<44){f=0;e=~~c>>>b-22;d=~~a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=~~c>>>b-44}return de(d&4194303,e&4194303,f&1048575)} -function Uo(a){Qo();switch(a){case 2:return Ao;case 1:return Bo;case 3:return Co;case 5:return Do;case 6:return Eo;case 4:return Fo;case 7:return Go;case 0:return Ho;default:throw new Sk('Invalid rounding mode');}} -function mi(a,b){var c,d,e;if(b==0){return (a.b[0]&1)!=0}if(b<0){throw new nk(ts)}e=~~b>>5;if(e>=a.e){return a.f<0}c=a.b[e];b=1<<(b&31);if(a.f<0){d=Zh(a);if(e0){return a.e}b=1;c=1;if(a.b<54){a.b>=1&&(c=a.g);b+=Math.log(c<=0?0-c:c)*Math.LOG10E}else{b+=(a.b-1)*0.3010299956639812;Th((!a.d&&(a.d=Li(a.g)),a.d),po(b)).r()!=0&&++b}a.e=Bc(b);return a.e} -function zh(a){rf();var b,c;c=Lj(a);if(c==ks)b=Fg(a[0]);else if(c==ks)b=Gg(ue(a[0]));else if(c==ns)b=Hg(ue(a[0]),a[1]);else throw new V('Unknown call signature for bd = java.math.BigDecimal.valueOf: '+c);return new Kg(b)} -function Qi(a){Oh();var b,c;c=Lj(a);if(c==ms)b=new oi(a[0].toString());else if(c=='string number')b=new pi(a[0].toString(),a[1]);else throw new V('Unknown call signature for obj = new java.math.BigInteger: '+c);return new Pi(b)} -function Un(){Un=rr;On=new Xn(34,(Qo(),Eo));Pn=new Xn(7,Eo);Qn=new Xn(16,Eo);Rn=new Xn(0,Fo);Sn=mc(Md,{6:1},-1,[112,114,101,99,105,115,105,111,110,61]);Tn=mc(Md,{6:1},-1,[114,111,117,110,100,105,110,103,77,111,100,101,61])} -function Jn(a,b){if(b.f==0){return a}if(a.f==0){return b}if(Vh(b,(Oh(),Ih))){return new Pi(En(a))}if(Vh(a,Ih)){return new Pi(En(b))}return a.f>0?b.f>0?a.e>b.e?Mn(a,b):Mn(b,a):Kn(a,b):b.f>0?Kn(b,a):Zh(b)>Zh(a)?Ln(b,a):Ln(a,b)} -function Cn(a,b){var c,d,e,f,g,i;d=Zh(b);e=Zh(a);if(d>=a.e){return a}g=hl(a.e,b.e);f=lc(Od,{6:1},-1,g,1);c=e;for(;cc?1:-1:jn(a.b,b.b,g))==-1){return a}e=lc(Od,{6:1},-1,c,1);if(c==1){e[0]=cn(a.b,g,b.b[0])}else{d=g-c+1;e=Km(null,d,a.b,g,b.b,c)}f=new si(a.f,c,e);Sh(f);return f} -function $k(a){var b,c,d;if(a<0){return 0}else if(a==0){return 32}else{d=-(~~a>>16);b=~~d>>16&16;c=16-b;a=~~a>>b;d=a-256;b=~~d>>16&8;c+=b;a<<=b;d=a-4096;b=~~d>>16&4;c+=b;a<<=b;d=a-16384;b=~~d>>16&2;c+=b;a<<=b;d=~~a>>14;b=d&~(~~d>>1);return c+2-b}} -function kn(a,b){var c;if(a.f==0){nm(b.b,0,a.b,0,b.e)}else if(b.f==0){return}else if(a.f==b.f){hn(a.b,a.b,a.e,b.b,b.e)}else{c=un(a.b,b.b,a.e,b.e);if(c>0){tn(a.b,a.b,a.e,b.b,b.e)}else{qn(a.b,a.b,a.e,b.b,b.e);a.f=-a.f}}a.e=gl(a.e,b.e)+1;Sh(a);a.c=-2} -function ln(a,b){var c,d;c=Qh(a,b);if(a.f==0){nm(b.b,0,a.b,0,b.e);a.f=-b.f}else if(a.f!=b.f){hn(a.b,a.b,a.e,b.b,b.e);a.f=c}else{d=un(a.b,b.b,a.e,b.e);if(d>0){tn(a.b,a.b,a.e,b.b,b.e)}else{qn(a.b,a.b,a.e,b.b,b.e);a.f=-a.f}}a.e=gl(a.e,b.e)+1;Sh(a);a.c=-2} -function di(a,b,c){var d,e;if(c.f<=0){throw new nk(us)}d=a;if((c.e==1&&c.b[0]==1)|b.f>0&d.f==0){return Nh}if(d.f==0&&b.f==0){return Jh}if(b.f<0){d=ci(a,c);b=b.cb()}e=c.gb(0)?_m(d._(),b,c):Om(d._(),b,c);d.f<0&&b.gb(0)&&(e=bi(ei(rn(c,Jh),e),c));return e} -function $m(a,b,c,d,e){var f,g,i;f=ur;g=ur;for(i=0;ia.e){i=a;a=b;b=i}if(b.e<63){return no(a,b)}g=(a.e&-2)<<4;k=a.fb(g);n=b.fb(g);d=rn(a,k.eb(g));e=rn(b,n.eb(g));j=ho(k,n);c=ho(d,e);f=ho(rn(k,d),rn(e,n));f=fn(fn(f,j),c);f=f.eb(g);j=j.eb(g<<1);return fn(fn(j,f),c)} -function le(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return _k(c)}if(b==0&&d!=0&&c==0){return _k(d)+22}if(b!=0&&d==0&&c==0){return _k(b)+44}return -1} -function wn(a,b){var c,d,e,f,g,i,j;e=Zh(a);d=Zh(b);if(d>=a.e){return Oh(),Nh}i=a.e;g=lc(Od,{6:1},-1,i,1);c=e>d?e:d;if(c==d){g[c]=-b.b[c]&a.b[c];++c}f=hl(b.e,a.e);for(;c=b.e){for(;c0?b:0)}if(b>=0){if(a.b<54){return new pg(a.g,Dg(b))}return new dg((!a.d&&(a.d=Li(a.g)),a.d),Dg(b))}if(-b>b;f=~~a.m>>b|c<<22-b;e=~~a.l>>b|a.m<<22-b}else if(b<44){g=d?1048575:0;f=~~c>>b-22;e=~~a.m>>b-22|c<<44-b}else{g=d?1048575:0;f=d?4194303:0;e=~~c>>b-44}return de(e&4194303,f&4194303,g&1048575)} -function Oh(){Oh=rr;var a;Jh=new qi(1,1);Lh=new qi(1,10);Nh=new qi(0,0);Ih=new qi(-1,1);Kh=mc(Xd,{6:1},17,[Nh,Jh,new qi(1,2),new qi(1,3),new qi(1,4),new qi(1,5),new qi(1,6),new qi(1,7),new qi(1,8),new qi(1,9),Lh]);Mh=lc(Xd,{6:1},17,32,0);for(a=0;a=b.e){return b}else if(d>=a.e){return a}g=hl(a.e,b.e);f=lc(Od,{6:1},-1,g,1);if(d==e){f[e]=-(-a.b[e]|-b.b[e]);c=e}else{for(c=d;c>5;b&=31;if(d>=a.e){return a.f<0?(Oh(),Ih):(Oh(),Nh)}f=a.e-d;e=lc(Od,{6:1},-1,f+1,1);Am(e,f,a.b,d,b);if(a.f<0){for(c=0;c0&&a.b[c]<<32-b!=0){for(c=0;c=0}for(d=1;d>1)?d:1+(~~(b-1)>>1);return wo(a,b)} -function Qm(a,b){var c,d,e,f;c=a.bb();d=b.bb();e=c0){b=Ki(Rm(ai(a),ai(b)));break}if(b.e>a.e*1.2){b=hi(b,a);b.r()!=0&&vm(b,b.bb())}else{do{pn(b,a);vm(b,b.bb())}while(Qh(b,a)>=0)}f=b;b=a;a=f}while(f.f!=0);return b.eb(e)} -function Sf(a,b,c){var d;if(!c){throw new jl}d=b-a.f;if(d==0){return a}if(d>0){if(d36){return Lr+Ke(a)}c=lc(Md,{6:1},-1,65,1);d=(nl(),ml);e=64;f=ue(b);if(we(a,ur)){while(we(a,f)){c[e--]=d[Je(ze(a,f))];a=ee(a,f,false)}c[e]=d[Je(a)]}else{while(ye(a,Be(f))){c[e--]=d[Je(Be(ze(a,f)))];a=ee(a,f,false)}c[e--]=d[Je(Be(a))];c[e]=45}return Gl(c,e,65)} -function Of(a,b,c){var d,e,f,g,i,j;f=b<0?-b:b;g=c.b;e=Bc(fl(f))+1;i=c;if(b==0||a.b==0&&a.g!=-1&&b>0){return Nf(a,b)}if(f>999999999||g==0&&b<0||g>0&&e>g){throw new nk(bs)}g>0&&(i=new Xn(g+e+1,c.c));d=Qf(a,i);j=~~Zk(f)>>1;while(j>0){d=Lf(d,d,i);(f&j)==j&&(d=Lf(d,a,i));j>>=1}b<0&&(d=zf(lf,d,i));If(d,c);return d} -function tf(a,b){var c;c=a.f-b.f;if(a.b==0&&a.g!=-1){if(c<=0){return b}if(b.b==0&&b.g!=-1){return a}}else if(b.b==0&&b.g!=-1){if(c>=0){return a}}if(c==0){if(gl(a.b,b.b)+1<54){return new pg(a.g+b.g,a.f)}return new og(fn((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),a.f)}else return c>0?rg(a,b,c):rg(b,a,-c)} -function Nm(a,b){var c,d,e,f,g;d=qe(ue(b),yr);if(we(a,ur)){f=ee(a,d,false);g=ze(a,d)}else{c=Ge(a,1);e=ue(~~b>>>1);f=ee(c,e,false);g=ze(c,e);g=pe(Ee(g,1),qe(a,sr));if((b&1)!=0){if(!ve(f,g)){g=He(g,f)}else{if(ye(He(f,g),d)){g=pe(g,He(d,f));f=He(f,sr)}else{g=pe(g,He(Ee(d,1),f));f=He(f,vr)}}}}return De(Ee(g,32),qe(f,yr))} -function Ei(a,b,c){var d,e,f,g,i,j,k,n,o,q,r,s,t,u;r=b.length;k=r;if(b.charCodeAt(0)==45){o=-1;q=1;--r}else{o=1;q=0}g=(Em(),Dm)[c];f=~~(r/g);u=r%g;u!=0&&++f;j=lc(Od,{6:1},-1,f,1);d=Cm[c-2];i=0;s=q+(u==0?g:u);for(t=q;t=9223372036854775807){return Qe(),Me}e=false;if(a<0){e=true;a=-a}d=0;if(a>=17592186044416){d=Bc(a/17592186044416);a-=d*17592186044416}c=0;if(a>=4194304){c=Bc(a/4194304);a-=c*4194304}b=Bc(a);f=de(b,c,d);e&&je(f);return f} -function Ke(a){var b,c,d,e,f;if(a.l==0&&a.m==0&&a.h==0){return Tr}if(a.h==524288&&a.m==0&&a.l==0){return '-9223372036854775808'}if(~~a.h>>19!=0){return Ur+Ke(Be(a))}c=a;d=Lr;while(!(c.l==0&&c.m==0&&c.h==0)){e=ue(1000000000);c=ee(c,e,true);b=Lr+Je(ae);if(!(c.l==0&&c.m==0&&c.h==0)){f=9-b.length;for(;f>0;--f){b=Tr+b}}d=b+d}return d} -function Uh(a,b){var c,d,e,f,g,i,j,k,n,o,q,r,s;f=b.f;if(f==0){throw new nk(ss)}e=b.e;d=b.b;if(e==1){return Lm(a,d[0],f)}q=a.b;r=a.e;c=r!=e?r>e?1:-1:jn(q,d,r);if(c<0){return mc(Xd,{6:1},17,[Nh,a])}s=a.f;i=r-e+1;j=s==f?1:-1;g=lc(Od,{6:1},-1,i,1);k=Km(g,i,q,r,d,e);n=new si(j,i,g);o=new si(s,e,k);Sh(n);Sh(o);return mc(Xd,{6:1},17,[n,o])} -function Zf(a){var b;if(a.f==0||a.b==0&&a.g!=-1){return !a.d&&(a.d=Li(a.g)),a.d}else if(a.f<0){return ei((!a.d&&(a.d=Li(a.g)),a.d),po(-a.f))}else{if(a.f>(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)||a.f>(!a.d&&(a.d=Li(a.g)),a.d).bb()){throw new nk(cs)}b=Uh((!a.d&&(a.d=Li(a.g)),a.d),po(a.f));if(b[1].r()!=0){throw new nk(cs)}return b[0]}} -function qn(a,b,c,d,e){var f,g;f=ur;if(c36){throw new pl('radix '+b+' out of range')}d=a.length;e=d>0&&a.charCodeAt(0)==45?1:0;for(c=e;c2147483647){throw new pl(Zr+a+$r)}return f} -function En(a){var b,c;if(a.f==0){return Oh(),Ih}if(Vh(a,(Oh(),Ih))){return Nh}c=lc(Od,{6:1},-1,a.e+1,1);if(a.f>0){if(a.b[a.e-1]!=-1){for(b=0;a.b[b]==-1;++b){}}else{for(b=0;b0?b==0?0:b<0?-1:1:0;break;case 3:d=(b==0?0:b<0?-1:1)<0?b==0?0:b<0?-1:1:0;break;case 4:(b<0?-b:b)>=5&&(d=b==0?0:b<0?-1:1);break;case 5:(b<0?-b:b)>5&&(d=b==0?0:b<0?-1:1);break;case 6:(b<0?-b:b)+a>5&&(d=b==0?0:b<0?-1:1);}return d} -function Vf(a,b,c){var d,e,f,g,i,j;i=te(hf[c]);g=He(te(a.f),ue(c));j=te(a.g);f=ee(j,i,false);e=ze(j,i);if(Ce(e,ur)){d=se(He(Ee(xe(e,ur)?Be(e):e,1),i),ur)?0:xe(He(Ee(xe(e,ur)?Be(e):e,1),i),ur)?-1:1;f=pe(f,ue(Bg(Je(f)&1,(se(e,ur)?0:xe(e,ur)?-1:1)*(5+d),b.c)));if(fl(Ie(xe(f,ur)?Be(f):f))>=b.b){f=re(f,tr);g=He(g,sr)}}a.f=Dg(Ie(g));a.e=b.b;a.g=Ie(f);a.b=tg(f);a.d=null} -function tm(a,b){var c,d,e,f,g,i,j,k,n;k=a.f==0?1:a.f;g=~~b>>5;c=b&31;j=gl(g+1,a.e)+1;i=lc(Od,{6:1},-1,j,1);d=1<=a.e){i[g]=d}else{e=Zh(a);if(g>e){i[g]^=d}else if(g=0||k.f==0||k.e==1&&k.b[0]==1)}n=di(k,i,a);if(n.e==1&&n.b[0]==1||n.eQ(g)){continue}for(e=1;e=0;--i){n=De(Ee(k,32),qe(ue(b[i]),yr));if(we(n,ur)){j=ee(n,f,false);k=ze(n,f)}else{e=Ge(n,1);g=ue(~~d>>>1);j=ee(e,g,false);k=ze(e,g);k=pe(Ee(k,1),qe(n,sr));if((d&1)!=0){if(!ve(j,k)){k=He(k,j)}else{if(ye(He(j,k),f)){k=pe(k,He(f,j));j=He(j,sr)}else{k=pe(k,He(Ee(f,1),j));j=He(j,vr)}}}}a[i]=Je(qe(j,yr))}return Je(k)} -function he(a,b,c,d,e,f){var g,i,j,k,n,o,q;k=ke(b)-ke(a);g=Ee(b,k);j=de(0,0,0);while(k>=0){i=ne(a,g);if(i){k<22?(j.l|=1<>>1;g.m=~~o>>>1|(q&1)<<21;g.l=~~n>>>1|(o&1)<<21;--k}c&&je(j);if(f){if(d){ae=Be(a);e&&(ae=He(ae,(Qe(),Oe)))}else{ae=de(a.l,a.m,a.h)}}return j} -function dn(a,b,c,d,e){var f,g,i,j,k,n,o;k=lc(Xd,{6:1},17,8,0);n=a;nc(k,0,b);o=Ym(b,b,d,e);for(g=1;g<=7;++g){nc(k,g,Ym(k[g-1],o,d,e))}for(g=c.ab()-1;g>=0;--g){if((c.b[~~g>>5]&1<<(g&31))!=0){j=1;f=g;for(i=g-3>0?g-3:0;i<=g-1;++i){if((c.b[~~i>>5]&1<<(i&31))!=0){if(i>1],n,d,e);g=f}else{n=Ym(n,n,d,e)}}return n} -function Ln(a,b){var c,d,e,f,g,i,j;i=gl(a.e,b.e);g=lc(Od,{6:1},-1,i,1);e=Zh(a);d=Zh(b);c=d;if(e==d){g[d]=-a.b[d]^-b.b[d]}else{g[d]=-b.b[d];f=hl(b.e,e);for(++c;cb.g?1:0}d=a.f-b.f;c=(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)-(b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1);if(c>d+1){return e}else if(c0&&(g=ei(g,po(d)));return Qh(f,g)}}else return e0?a.e:el((a.b-1)*0.3010299956639812)+1)-f<0||f==0){return}d=a.q()-f;if(d<=0){return}if(a.b<54){Vf(a,b,d);return}i=po(d);e=Uh((!a.d&&(a.d=Li(a.g)),a.d),i);g=a.f-d;if(e[1].r()!=0){c=Qh(ki(e[1]._()),i);c=Bg(e[0].gb(0)?1:0,e[1].r()*(5+c),b.c);c!=0&&nc(e,0,fn(e[0],Ki(ue(c))));j=new cg(e[0]);if(j.q()>f){nc(e,0,Th(e[0],(Oh(),Lh)));--g}}a.f=Dg(g);a.e=f;Tf(a,e[0])} -function Yf(a,b,c){var d,e,f,g;d=b.f-a.f;if(b.b==0&&b.g!=-1||a.b==0&&a.g!=-1||c.b==0){return Qf(Xf(a,b),c)}if((b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1)0?a.e:el((a.b-1)*0.3010299956639812)+1)){g=Uf(a);if(g!=b.r()){f=fn(lo((!a.d&&(a.d=Li(a.g)),a.d),10),Ki(ue(g)))}else{f=rn((!a.d&&(a.d=Li(a.g)),a.d),Ki(ue(g)));f=fn(lo(f,10),Ki(ue(g*9)))}e=new og(f,a.f+1);return Qf(e,c)}}return Qf(Xf(a,b),c)} -function rn(a,b){var c,d,e,f,g,i,j,k,n,o;g=a.f;j=b.f;if(j==0){return a}if(g==0){return b.cb()}f=a.e;i=b.e;if(f+i==2){c=qe(ue(a.b[0]),yr);d=qe(ue(b.b[0]),yr);g<0&&(c=Be(c));j<0&&(d=Be(d));return Ki(He(c,d))}e=f!=i?f>i?1:-1:jn(a.b,b.b,f);if(e==-1){o=-j;n=g==j?sn(b.b,i,a.b,f):gn(b.b,i,a.b,f)}else{o=g;if(g==j){if(e==0){return Oh(),Nh}n=sn(a.b,f,b.b,i)}else{n=gn(a.b,f,b.b,i)}}k=new si(o,n.length,n);Sh(k);return k} -function zn(a,b){var c,d,e,f,g,i,j;e=Zh(a);d=Zh(b);if(e>=b.e){return Oh(),Nh}i=b.e;g=lc(Od,{6:1},-1,i,1);c=e;if(e0?a:a.cb()}n=a.f;k=a.e;d=b.e;if(k+d==2){o=re(qe(ue(a.b[0]),yr),qe(ue(b.b[0]),yr));n!=e&&(o=Be(o));return Ki(o)}c=k!=d?k>d?1:-1:jn(a.b,b.b,k);if(c==0){return n==e?Jh:Ih}if(c==-1){return Nh}g=k-d+1;f=lc(Od,{6:1},-1,g,1);i=n==e?1:-1;d==1?Mm(f,a.b,k,b.b[0]):Km(f,g,a.b,k,b.b,d);j=new si(i,g,f);Sh(j);return j} -function hn(a,b,c,d,e){var f,g;f=pe(qe(ue(b[0]),yr),qe(ue(d[0]),yr));a[0]=Je(f);f=Fe(f,32);if(c>=e){for(g=1;g0){if(e0?(g=mo(g,Bc(e))):e<0&&(f=mo(f,Bc(-e)));return ug(f,g,c,d)} -function Gn(a,b){var c,d,e,f,g,i,j;d=Zh(b);e=Zh(a);if(e>=b.e){return b}i=b.e;g=lc(Od,{6:1},-1,i,1);if(d0){c-=d.length-b;if(c>=0){e.b.b+=es;for(;c>ef.length;c-=ef.length){$l(e,ef)}_l(e,ef,Bc(c));dm(e,Al(d,b))}else{c=b-c;dm(e,Bl(d,b,Bc(c)));e.b.b+=ds;dm(e,Al(d,Bc(c)))}}else{dm(e,Al(d,b));for(;c<-ef.length;c+=ef.length){$l(e,ef)}_l(e,ef,Bc(-c))}return e.b.b} -function ug(a,b,c,d){var e,f,g,i,j,k,n;g=Uh(a,b);i=g[0];k=g[1];if(k.r()==0){return new dg(i,c)}n=a.r()*b.r();if(b.ab()<54){j=ai(k);f=ai(b);e=se(He(Ee(xe(j,ur)?Be(j):j,1),xe(f,ur)?Be(f):f),ur)?0:xe(He(Ee(xe(j,ur)?Be(j):j,1),xe(f,ur)?Be(f):f),ur)?-1:1;e=Bg(i.gb(0)?1:0,n*(5+e),d)}else{e=Qh(ki(k._()),b._());e=Bg(i.gb(0)?1:0,n*(5+e),d)}if(e!=0){if(i.ab()<54){return Hg(pe(ai(i),ue(e)),c)}i=fn(i,Ki(ue(e)));return new dg(i,c)}return new dg(i,c)} -function ag(a){var b,c,d,e,f;if(a.i!=null){return a.i}if(a.b<32){a.i=Im(te(a.g),Bc(a.f));return a.i}e=Hm((!a.d&&(a.d=Li(a.g)),a.d),0);if(a.f==0){return e}b=(!a.d&&(a.d=Li(a.g)),a.d).r()<0?2:1;c=e.length;d=-a.f+c-b;f=new fm;cc(f.b,e);if(a.f>0&&d>=-6){if(d>=0){em(f,c-Bc(a.f),ds)}else{ec(f.b,b-1,b-1,es);em(f,b+1,Ll(ef,0,-Bc(d)-1))}}else{if(c-b>=1){ec(f.b,b,b,ds);++c}ec(f.b,c,c,fs);d>0&&em(f,++c,gs);em(f,++c,Lr+Ke(te(d)))}a.i=f.b.b;return a.i} -function xn(a,b){var c,d,e,f,g,i,j;e=Zh(a);f=Zh(b);if(e>=b.e){return a}d=f>e?f:e;f>e?(c=-b.b[d]&~a.b[d]):f0){d[e]=f;break}else{d[e]=f.substring(0,i.index);f=f.substring(i.index+i[0].length,f.length);c.lastIndex=0;if(g==f){d[e]=f.substring(0,1);f=f.substring(1)}g=f;e++}}if(b==0&&o.length>0){var j=d.length;while(j>0&&d[j-1]==Lr){--j}j1000000){throw new nk('power of ten too big')}if(a<=2147483647){return bo[1].db(b).eb(b)}d=bo[1].db(2147483647);e=d;c=te(a-2147483647);b=Bc(a%2147483647);while(ve(c,Ir)){e=ei(e,d);c=He(c,Ir)}e=ei(e,bo[1].db(b));e=e.eb(2147483647);c=te(a-2147483647);while(ve(c,Ir)){e=e.eb(2147483647);c=He(c,Ir)}e=e.eb(b);return e} -function $d(){var a;!!$stats&&Ue('com.iriscouch.gwtapp.client.BigDecimalApp');ik(new kk);Wj(new Yj);Gj(new Ij);Ch(new Eh);!!$stats&&Ue('com.google.gwt.user.client.UserAgentAsserter');a=We();wl(Sr,a)||($wnd.alert('ERROR: Possible problem with your *.gwt.xml module file.\nThe compile time user.agent value (safari) does not match the runtime user.agent value ('+a+'). Expect more errors.\n'),undefined);!!$stats&&Ue('com.google.gwt.user.client.DocumentModeAsserter');Ve()} -function Vo(a){Qo();var b,c,d,e,f;if(a==null){throw new jl}d=Cl(a);c=d.length;if(cOo.length){throw new Rk}f=null;e=null;if(d[0]==67){e=Ao;f=Io}else if(d[0]==68){e=Bo;f=Jo}else if(d[0]==70){e=Co;f=Ko}else if(d[0]==72){if(c>6){if(d[5]==68){e=Do;f=Lo}else if(d[5]==69){e=Eo;f=Mo}else if(d[5]==85){e=Fo;f=No}}}else if(d[0]==85){if(d[1]==80){e=Ho;f=Po}else if(d[1]==78){e=Go;f=Oo}}if(!!e&&c==f.length){for(b=1;b>5;this.b=lc(Od,{6:1},-1,this.e,1);for(c=0;c=2147483648&&(e-=4294967296),e))}this.b[this.e-1]>>>=-a&31;Sh(this)}} -function fn(a,b){var c,d,e,f,g,i,j,k,n,o,q,r;g=a.f;j=b.f;if(g==0){return b}if(j==0){return a}f=a.e;i=b.e;if(f+i==2){c=qe(ue(a.b[0]),yr);d=qe(ue(b.b[0]),yr);if(g==j){k=pe(c,d);r=Je(k);q=Je(Ge(k,32));return q==0?new qi(g,r):new si(g,2,mc(Od,{6:1},-1,[r,q]))}return Ki(g<0?He(d,c):He(c,d))}else if(g==j){o=g;n=f>=i?gn(a.b,f,b.b,i):gn(b.b,i,a.b,f)}else{e=f!=i?f>i?1:-1:jn(a.b,b.b,f);if(e==0){return Oh(),Nh}if(e==1){o=g;n=sn(a.b,f,b.b,i)}else{o=j;n=sn(b.b,i,a.b,f)}}k=new si(o,n.length,n);Sh(k);return k} -function Yn(a){Un();var b,c,d,e;if(a==null){throw new kl('null string')}b=Cl(a);if(b.length<27||b.length>45){throw new Sk(Hs)}for(d=0;d0?a.e:el((a.b-1)*0.3010299956639812)+1)0?b.e:el((b.b-1)*0.3010299956639812)+1)<-d-1){e=a;g=b}else{return Qf(tf(a,b),c)}if(c.b>=(e.e>0?e.e:el((e.b-1)*0.3010299956639812)+1)){return Qf(tf(a,b),c)}f=e.r();if(f==g.r()){i=fn(lo((!e.d&&(e.d=Li(e.g)),e.d),10),Ki(ue(f)))}else{i=rn((!e.d&&(e.d=Li(e.g)),e.d),Ki(ue(f)));i=fn(lo(i,10),Ki(ue(f*9)))}e=new og(i,e.f+1);return Qf(e,c)} -function $f(a){var b,c,d,e,f,g,i,j;g=Hm((!a.d&&(a.d=Li(a.g)),a.d),0);if(a.f==0){return g}b=(!a.d&&(a.d=Li(a.g)),a.d).r()<0?2:1;d=g.length;e=-a.f+d-b;j=new hm(g);if(a.f>0&&e>=-6){if(e>=0){em(j,d-Bc(a.f),ds)}else{ec(j.b,b-1,b-1,es);em(j,b+1,Ll(ef,0,-Bc(e)-1))}}else{c=d-b;i=Bc(e%3);if(i!=0){if((!a.d&&(a.d=Li(a.g)),a.d).r()==0){i=i<0?-i:3-i;e+=i}else{i=i<0?i+3:i;e-=i;b+=i}if(c<3){for(f=i-c;f>0;--f){em(j,d++,Tr)}}}if(d-b>=1){ec(j.b,b,b,ds);++d}if(e!=0){ec(j.b,d,d,fs);e>0&&em(j,++d,gs);em(j,++d,Lr+Ke(te(e)))}}return j.b.b} -function nm(a,b,c,d,e){var f,g,i,j,k,n,o,q,r;if(a==null||c==null){throw new jl}q=a.gC();j=c.gC();if((q.c&4)==0||(j.c&4)==0){throw new rk('Must be array types')}o=q.b;g=j.b;if(!((o.c&1)!=0?o==g:(g.c&1)==0)){throw new rk('Array types must match')}r=a.length;k=c.length;if(b<0||d<0||e<0||b+e>r||d+e>k){throw new Vk}if(((o.c&1)==0||(o.c&4)!=0)&&q!=j){n=vc(a,11);f=vc(c,11);if(Ac(a)===Ac(c)&&bd;){nc(f,i,n[--b])}}else{for(i=d+e;d=0&&a.b[0]=to[c];++c){}return so[c]}i=new si(1,a.e,lc(Od,{6:1},-1,a.e+1,1));nm(a.b,0,i.b,0,a.e);mi(a,0)?nn(i,2):(i.b[0]|=1);e=i.ab();for(b=2;eg?f:g));e=f-g;k=e>0?(go(),e>19!=0){b=Be(b);j=true}g=le(b);f=false;e=false;d=false;if(a.h==524288&&a.m==0&&a.l==0){e=true;f=true;if(g==-1){a=ce((Qe(),Me));d=true;j=!j}else{i=Fe(a,g);j&&je(i);c&&(ae=de(0,0,0));return i}}else if(~~a.h>>19!=0){f=true;a=Be(a);d=true;j=!j}if(g!=-1){return ge(a,g,j,f,c)}if(!we(a,b)){c&&(f?(ae=Be(a)):(ae=de(a.l,a.m,a.h)));return de(0,0,0)}return he(d?a:de(a.l,a.m,a.h),b,j,f,e,c)} -function An(a,b){var c,d,e,f,g,i,j,k;e=Zh(a);f=Zh(b);if(e>=b.e){return a}j=gl(a.e,b.e);d=e;if(f>e){i=lc(Od,{6:1},-1,j,1);g=hl(a.e,f);for(;d>13|(a.m&15)<<9;e=~~a.m>>4&8191;f=~~a.m>>17|(a.h&255)<<5;g=~~(a.h&1048320)>>8;i=b.l&8191;j=~~b.l>>13|(b.m&15)<<9;k=~~b.m>>4&8191;n=~~b.m>>17|(b.h&255)<<5;o=~~(b.h&1048320)>>8;C=c*i;D=d*i;E=e*i;F=f*i;G=g*i;if(j!=0){D+=c*j;E+=d*j;F+=e*j;G+=f*j}if(k!=0){E+=c*k;F+=d*k;G+=e*k}if(n!=0){F+=c*n;G+=d*n}o!=0&&(G+=c*o);r=C&4194303;s=(D&511)<<13;q=r+s;u=~~C>>22;v=~~D>>9;w=(E&262143)<<4;x=(F&31)<<17;t=u+v+w+x;z=~~E>>18;A=~~F>>5;B=(G&4095)<<8;y=z+A+B;t+=~~q>>22;q&=4194303;y+=~~t>>22;t&=4194303;y&=1048575;return de(q,t,y)} -function zf(a,b,c){var d,e,f,g,i,j,k,n;n=Ie(pe(ue(c.b),vr))+(b.e>0?b.e:el((b.b-1)*0.3010299956639812)+1)-(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1);e=a.f-b.f;j=e;f=1;i=nf.length-1;k=mc(Xd,{6:1},17,[(!a.d&&(a.d=Li(a.g)),a.d)]);if(c.b==0||a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return wf(a,b)}if(n>0){nc(k,0,ei((!a.d&&(a.d=Li(a.g)),a.d),po(n)));j+=n}k=Uh(k[0],(!b.d&&(b.d=Li(b.g)),b.d));g=k[0];if(k[1].r()!=0){d=Qh(ki(k[1]),(!b.d&&(b.d=Li(b.g)),b.d));g=fn(ei(g,(Oh(),Lh)),Ki(ue(k[0].r()*(5+d))));++j}else{while(!g.gb(0)){k=Uh(g,nf[f]);if(k[1].r()==0&&j-f>=e){j-=f;fe){vm(o,d);vm(q,e);um(j,e);c+=d-e}else{vm(o,d);vm(q,e);um(k,d);c+=e-d}j.f=1;while(q.r()>0){while(Qh(o,q)>0){pn(o,q);n=o.bb();vm(o,n);mn(j,k);um(k,n);c+=n}while(Qh(o,q)<=0){pn(q,o);if(q.r()==0){break}n=q.bb();vm(q,n);mn(k,j);um(j,n);c+=n}}if(!(o.e==1&&o.b[0]==1)){throw new nk(vs)}Qh(j,b)>=0&&pn(j,b);j=rn(b,j);i=Jm(b);if(c>f){j=Ym(j,(Oh(),Jh),b,i);c=c-f}j=Ym(j,Ai(f-c),b,i);return j} -function Xf(a,b){var c;c=a.f-b.f;if(a.b==0&&a.g!=-1){if(c<=0){return Mf(b)}if(b.b==0&&b.g!=-1){return a}}else if(b.b==0&&b.g!=-1){if(c>=0){return a}}if(c==0){if(gl(a.b,b.b)+1<54){return new pg(a.g-b.g,a.f)}return new og(rn((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)),a.f)}else if(c>0){if(c0?b.e:el((b.b-1)*0.3010299956639812)+1)+f>(a.e>0?a.e:el((a.b-1)*0.3010299956639812)+1)+1||a.b==0&&a.g!=-1){d=(Oh(),Nh)}else if(f==0){d=Th((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d))}else if(f>0){g=po(f);d=Th((!a.d&&(a.d=Li(a.g)),a.d),ei((!b.d&&(b.d=Li(b.g)),b.d),g));d=ei(d,g)}else{g=po(-f);d=Th(ei((!a.d&&(a.d=Li(a.g)),a.d),g),(!b.d&&(b.d=Li(b.g)),b.d));while(!d.gb(0)){i=Uh(d,nf[c]);if(i[1].r()==0&&j-c>=f){j-=c;c36){return Hm(a,0)}d=Math.log(b)/Math.log(2);s=Bc(sm(new Pi(a.f<0?new si(1,a.e,a.b):a))/d+(u<0?1:0))+1;t=lc(Md,{6:1},-1,s,1);f=s;if(b!=16){v=lc(Od,{6:1},-1,o,1);nm(i,0,v,0,o);w=o;e=Dm[b];c=Cm[b-2];while(true){r=Mm(v,v,w,c);q=f;do{t[--f]=uk(r%b,b)}while((r=~~(r/b))!=0&&f!=0);g=e-q+f;for(k=0;k0;++k){t[--f]=48}for(k=w-1;k>0&&v[k]==0;--k){}w=k+1;if(w==1&&v[0]==0){break}}}else{for(k=0;k0;++n){r=~~i[k]>>(n<<2)&15;t[--f]=uk(r,16)}}}while(t[f]==48){++f}u==-1&&(t[--f]=45);return Ll(t,f,s-f)} -function Km(a,b,c,d,e,f){var g,i,j,k,n,o,q,r,s,t,u,v,w,x,y,z,A;u=lc(Od,{6:1},-1,d+1,1);v=lc(Od,{6:1},-1,f+1,1);j=$k(e[f-1]);if(j!=0){xm(v,e,0,j);xm(u,c,0,j)}else{nm(c,0,u,0,d);nm(e,0,v,0,f)}k=v[f-1];o=b-1;q=d;while(o>=0){if(u[q]==k){n=-1}else{w=pe(Ee(qe(ue(u[q]),yr),32),qe(ue(u[q-1]),yr));z=Nm(w,k);n=Je(z);y=Je(Fe(z,32));if(n!=0){x=false;++n;do{--n;if(x){break}s=Ae(qe(ue(n),yr),qe(ue(v[f-2]),yr));A=pe(Ee(ue(y),32),qe(ue(u[q-2]),yr));t=pe(qe(ue(y),yr),qe(ue(k),yr));$k(Je(Ge(t,32)))<32?(x=true):(y=Je(t))}while(ve(Le(s,Gr),Le(A,Gr)))}}if(n!=0){g=$m(u,q-f,v,f,n);if(g!=0){--n;i=ur;for(r=0;r=d){um(i,e)}else{vm(j,d-c0&&um(i,e-d+c)}c+=e}e=Sm(o,g);if(e!=0){um(o,e);if(d>=c){um(j,e)}else{vm(i,c-d0&&um(j,e-c+d)}d+=e}if(k.r()==o.r()){if(c<=d){ln(k,o);ln(i,j)}else{ln(o,k);ln(j,i)}}else{if(c<=d){kn(k,o);kn(i,j)}else{kn(o,k);kn(j,i)}}if(o.r()==0||k.r()==0){throw new nk(vs)}}if(Um(o,d)){i=j;o.r()!=k.r()&&(k=k.cb())}k.gb(g)&&(i.r()<0?(i=i.cb()):(i=rn(b,i)));i.r()<0&&(i=fn(i,b));return i} -function We(){var c=navigator.userAgent.toLowerCase();var d=function(a){return parseInt(a[1])*1000+parseInt(a[2])};if(function(){return c.indexOf(Wr)!=-1}())return Wr;if(function(){return c.indexOf('webkit')!=-1||function(){if(c.indexOf('chromeframe')!=-1){return true}if(typeof window['ActiveXObject']!=Xr){try{var b=new ActiveXObject('ChromeTab.ChromeFrame');if(b){b.registerBhoIfNeeded();return true}}catch(a){}}return false}()}())return Sr;if(function(){return c.indexOf(Yr)!=-1&&$doc.documentMode>=9}())return 'ie9';if(function(){return c.indexOf(Yr)!=-1&&$doc.documentMode>=8}())return 'ie8';if(function(){var a=/msie ([0-9]+)\.([0-9]+)/.exec(c);if(a&&a.length==3)return d(a)>=6000}())return 'ie6';if(function(){return c.indexOf('gecko')!=-1}())return 'gecko1_8';return 'unknown'} -function Kn(a,b){var c,d,e,f,g,i,j,k;j=gl(b.e,a.e);e=Zh(b);f=Zh(a);if(e0&&we(d,Er)){if(we(d,ur)){e=c+Je(d);for(f=17;f>=e;--f){j[f+1]=j[f]}j[++e]=46;g&&(j[--c]=45);return Ll(j,c,18-c+1)}for(f=2;xe(ue(f),pe(Be(d),sr));++f){j[--c]=48}j[--c]=46;j[--c]=48;g&&(j[--c]=45);return Ll(j,c,18-c)}n=c+1;k=new gm;g&&(k.b.b+=Ur,k);if(18-n>=1){Zl(k,j[c]);k.b.b+=ds;dc(k.b,Ll(j,c+1,18-c-1))}else{dc(k.b,Ll(j,c,18-c))}k.b.b+=fs;ve(d,ur)&&(k.b.b+=gs,k);cc(k.b,Lr+Ke(d));return k.b.b} -function Ef(a,b,c){var d,e,f,g,i,j,k,n,o,q,r,s,t;n=c.b;e=Pf(a)-b.q();k=nf.length-1;f=a.f-b.f;o=f;r=e-f+1;q=lc(Xd,{6:1},17,2,0);if(n==0||a.b==0&&a.g!=-1||b.b==0&&b.g!=-1){return Df(a,b)}if(r<=0){nc(q,0,(Oh(),Nh))}else if(f==0){nc(q,0,Th((!a.d&&(a.d=Li(a.g)),a.d),(!b.d&&(b.d=Li(b.g)),b.d)))}else if(f>0){nc(q,0,Th((!a.d&&(a.d=Li(a.g)),a.d),ei((!b.d&&(b.d=Li(b.g)),b.d),po(f))));o=f<(n-r+1>0?n-r+1:0)?f:n-r+1>0?n-r+1:0;nc(q,0,ei(q[0],po(o)))}else{g=-f<(n-e>0?n-e:0)?-f:n-e>0?n-e:0;q=Uh(ei((!a.d&&(a.d=Li(a.g)),a.d),po(g)),(!b.d&&(b.d=Li(b.g)),b.d));o+=g;g=-o;if(q[1].r()!=0&&g>0){d=(new cg(q[1])).q()+g-b.q();if(d==0){nc(q,1,Th(ei(q[1],po(g)),(!b.d&&(b.d=Li(b.g)),b.d)));d=dl(q[1].r())}if(d>0){throw new nk(as)}}}if(q[0].r()==0){return Ig(f)}t=q[0];j=new cg(q[0]);s=j.q();i=1;while(!t.gb(0)){q=Uh(t,nf[i]);if(q[1].r()==0&&(s-i>=n||o-i>=f)){s-=i;o-=i;in){throw new nk(as)}j.f=Dg(o);Tf(j,t);return j} -function Ve(){var a,b,c;b=$doc.compatMode;a=mc(Vd,{6:1},1,[Vr]);for(c=0;cMake sure your application's host HTML page has a Standards Mode (document.compatMode=' CSS1Compat') doctype,
      e.g. by using <!doctype html> at the start of your application's HTML page.

      To continue using this unsupported rendering mode and risk layout problems, suppress this message by adding
      the following line to your*.gwt.xml module file:
        <extend-configuration-property name=\"document.compatMode\" value=\""+b+'"/>':"Your *.gwt.xml module configuration prohibits the use of the current doucment rendering mode (document.compatMode=' "+b+"').
      Modify your application's host HTML page doctype, or update your custom 'document.compatMode' configuration property settings."} -function Lg(a){rf();var b,c;c=Lj(a);if(c==is)b=new cg(new oi(a[0].toString()));else if(c=='BigInteger number')b=new dg(new oi(a[0].toString()),a[1]);else if(c=='BigInteger number MathContext')b=new eg(new oi(a[0].toString()),a[1],new Yn(a[2].toString()));else if(c=='BigInteger MathContext')b=new fg(new oi(a[0].toString()),new Yn(a[1].toString()));else if(c==js)b=new gg(Cl(a[0].toString()));else if(c=='array number number')b=new hg(Cl(a[0].toString()),a[1],a[2]);else if(c=='array number number MathContext')b=new ig(Cl(a[0].toString()),a[1],a[2],new Yn(a[3].toString()));else if(c=='array MathContext')b=new jg(Cl(a[0].toString()),new Yn(a[1].toString()));else if(c==ks)b=new kg(a[0]);else if(c==ls)b=new lg(a[0],new Yn(a[1].toString()));else if(c==ms)b=new mg(a[0].toString());else if(c=='string MathContext')b=new ng(a[0].toString(),new Yn(a[1].toString()));else throw new V('Unknown call signature for obj = new java.math.BigDecimal: '+c);return new Kg(b)} -function uo(){uo=rr;var a;ro=mc(Od,{6:1},-1,[0,0,1854,1233,927,747,627,543,480,431,393,361,335,314,295,279,265,253,242,232,223,216,181,169,158,150,145,140,136,132,127,123,119,114,110,105,101,96,92,87,83,78,73,69,64,59,54,49,44,38,32,26,1]);to=mc(Od,{6:1},-1,[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021]);so=lc(Xd,{6:1},17,to.length,0);for(a=0;a=0;--j){C=pe(Ee(y,32),qe(ue(B[j]),yr));t=Gm(C);B[j]=Je(t);y=ue(Je(Fe(t,32)))}u=Je(y);s=c;do{w[--c]=48+u%10&65535}while((u=~~(u/10))!=0&&c!=0);d=9-s+c;for(i=0;i0;++i){w[--c]=48}n=D-1;for(;B[n]==0;--n){if(n==0){break F}}D=n+1}while(w[c]==48){++c}}o=z<0;f=v-c-b-1;if(b==0){o&&(w[--c]=45);return Ll(w,c,v-c)}if(b>0&&f>=-6){if(f>=0){k=c+f;for(n=v-1;n>=k;--n){w[n+1]=w[n]}w[++k]=46;o&&(w[--c]=45);return Ll(w,c,v-c+1)}for(n=2;n<-f+1;++n){w[--c]=48}w[--c]=46;w[--c]=48;o&&(w[--c]=45);return Ll(w,c,v-c)}A=c+1;x=new gm;o&&(x.b.b+=Ur,x);if(v-A>=1){Zl(x,w[c]);x.b.b+=ds;dc(x.b,Ll(w,c+1,v-c-1))}else{dc(x.b,Ll(w,c,v-c))}x.b.b+=fs;f>0&&(x.b.b+=gs,x);cc(x.b,Lr+f);return x.b.b} -function jk(){nr(rs,Lr);if($wnd.bigdecimal.RoundingMode){var c=$wnd.bigdecimal.RoundingMode}$wnd.bigdecimal.RoundingMode=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Wc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new ak;or(this.__gwt_instance,this)}});var d=$wnd.bigdecimal.RoundingMode.prototype=new Object;if(c){for(p in c){$wnd.bigdecimal.RoundingMode[p]=c[p]}}$wnd.bigdecimal.RoundingMode.valueOf=Jr(function(a){var b=new bk((Qo(),Ok((Yo(),Xo),a)));return pr(b)});$wnd.bigdecimal.RoundingMode.values=Jr(function(){var a=fk();return qr(a)});d.name=Jr(function(){var a=this.__gwt_instance.Jb();return a});d.toString=Jr(function(){var a=this.__gwt_instance.tS();return a});$wnd.bigdecimal.RoundingMode.CEILING=Jr(function(){var a=new bk((Qo(),Ao));return pr(a)});$wnd.bigdecimal.RoundingMode.DOWN=Jr(function(){var a=new bk((Qo(),Bo));return pr(a)});$wnd.bigdecimal.RoundingMode.FLOOR=Jr(function(){var a=new bk((Qo(),Co));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_DOWN=Jr(function(){var a=new bk((Qo(),Do));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_EVEN=Jr(function(){var a=new bk((Qo(),Eo));return pr(a)});$wnd.bigdecimal.RoundingMode.HALF_UP=Jr(function(){var a=new bk((Qo(),Fo));return pr(a)});$wnd.bigdecimal.RoundingMode.UNNECESSARY=Jr(function(){var a=new bk((Qo(),Go));return pr(a)});$wnd.bigdecimal.RoundingMode.UP=Jr(function(){var a=new bk((Qo(),Ho));return pr(a)});mr(Wc,$wnd.bigdecimal.RoundingMode)} -function Hj(){nr(rs,Lr);if($wnd.bigdecimal.BigInteger){var d=$wnd.bigdecimal.BigInteger}$wnd.bigdecimal.BigInteger=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Sc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new Ni;or(this.__gwt_instance,this)}else if(arguments.length==1){this.__gwt_instance=Jj(arguments[0]);or(this.__gwt_instance,this)}});var e=$wnd.bigdecimal.BigInteger.prototype=new Object;if(d){for(p in d){$wnd.bigdecimal.BigInteger[p]=d[p]}}$wnd.bigdecimal.BigInteger.__init__=Jr(function(a){var b=Qi(a);return pr(b)});e.abs=Jr(function(){var a=this.__gwt_instance._();return pr(a)});e.add=Jr(function(a){var b=this.__gwt_instance.hb(a.__gwt_instance);return pr(b)});e.and=Jr(function(a){var b=this.__gwt_instance.ib(a.__gwt_instance);return pr(b)});e.andNot=Jr(function(a){var b=this.__gwt_instance.jb(a.__gwt_instance);return pr(b)});e.bitCount=jr(Number,Jr(function(){var a=this.__gwt_instance.kb();return a}));e.bitLength=jr(Number,Jr(function(){var a=this.__gwt_instance.ab();return a}));e.clearBit=Jr(function(a){var b=this.__gwt_instance.lb(a);return pr(b)});e.compareTo=jr(Number,Jr(function(a){var b=this.__gwt_instance.mb(a.__gwt_instance);return b}));e.divide=Jr(function(a){var b=this.__gwt_instance.nb(a.__gwt_instance);return pr(b)});e.doubleValue=jr(Number,Jr(function(){var a=this.__gwt_instance.z();return a}));e.equals=jr(Number,Jr(function(a){var b=this.__gwt_instance.eQ(a);return b}));e.flipBit=Jr(function(a){var b=this.__gwt_instance.pb(a);return pr(b)});e.floatValue=jr(Number,Jr(function(){var a=this.__gwt_instance.A();return a}));e.gcd=Jr(function(a){var b=this.__gwt_instance.qb(a.__gwt_instance);return pr(b)});e.getLowestSetBit=jr(Number,Jr(function(){var a=this.__gwt_instance.bb();return a}));e.hashCode=jr(Number,Jr(function(){var a=this.__gwt_instance.hC();return a}));e.intValue=jr(Number,Jr(function(){var a=this.__gwt_instance.B();return a}));e.isProbablePrime=jr(Number,Jr(function(a){var b=this.__gwt_instance.rb(a);return b}));e.max=Jr(function(a){var b=this.__gwt_instance.tb(a.__gwt_instance);return pr(b)});e.min=Jr(function(a){var b=this.__gwt_instance.ub(a.__gwt_instance);return pr(b)});e.mod=Jr(function(a){var b=this.__gwt_instance.vb(a.__gwt_instance);return pr(b)});e.modInverse=Jr(function(a){var b=this.__gwt_instance.wb(a.__gwt_instance);return pr(b)});e.modPow=Jr(function(a,b){var c=this.__gwt_instance.xb(a.__gwt_instance,b.__gwt_instance);return pr(c)});e.multiply=Jr(function(a){var b=this.__gwt_instance.yb(a.__gwt_instance);return pr(b)});e.negate=Jr(function(){var a=this.__gwt_instance.cb();return pr(a)});e.nextProbablePrime=Jr(function(){var a=this.__gwt_instance.zb();return pr(a)});e.not=Jr(function(){var a=this.__gwt_instance.Ab();return pr(a)});e.or=Jr(function(a){var b=this.__gwt_instance.Bb(a.__gwt_instance);return pr(b)});e.pow=Jr(function(a){var b=this.__gwt_instance.db(a);return pr(b)});e.remainder=Jr(function(a){var b=this.__gwt_instance.Cb(a.__gwt_instance);return pr(b)});e.setBit=Jr(function(a){var b=this.__gwt_instance.Db(a);return pr(b)});e.shiftLeft=Jr(function(a){var b=this.__gwt_instance.eb(a);return pr(b)});e.shiftRight=Jr(function(a){var b=this.__gwt_instance.fb(a);return pr(b)});e.signum=jr(Number,Jr(function(){var a=this.__gwt_instance.r();return a}));e.subtract=Jr(function(a){var b=this.__gwt_instance.Eb(a.__gwt_instance);return pr(b)});e.testBit=jr(Number,Jr(function(a){var b=this.__gwt_instance.gb(a);return b}));e.toString_va=Jr(function(a){var b=this.__gwt_instance.Fb(a);return b});e.xor=Jr(function(a){var b=this.__gwt_instance.Gb(a.__gwt_instance);return pr(b)});e.divideAndRemainder=Jr(function(a){var b=this.__gwt_instance.ob(a.__gwt_instance);return qr(b)});e.longValue=jr(Number,Jr(function(){var a=this.__gwt_instance.sb();return a}));$wnd.bigdecimal.BigInteger.valueOf=Jr(function(a){var b=(Oh(),new Pi(Ki(te(a))));return pr(b)});$wnd.bigdecimal.BigInteger.ONE=Jr(function(){var a=(Oh(),new Pi(Jh));return pr(a)});$wnd.bigdecimal.BigInteger.TEN=Jr(function(){var a=(Oh(),new Pi(Lh));return pr(a)});$wnd.bigdecimal.BigInteger.ZERO=Jr(function(){var a=(Oh(),new Pi(Nh));return pr(a)});mr(Sc,$wnd.bigdecimal.BigInteger)} -function Dh(){nr(rs,Lr);if($wnd.bigdecimal.BigDecimal){var c=$wnd.bigdecimal.BigDecimal}$wnd.bigdecimal.BigDecimal=Jr(function(){if(arguments.length==1&&arguments[0]!=null&&arguments[0].gC()==Qc){this.__gwt_instance=arguments[0]}else if(arguments.length==0){this.__gwt_instance=new Jg;or(this.__gwt_instance,this)}});var d=$wnd.bigdecimal.BigDecimal.prototype=new Object;if(c){for(p in c){$wnd.bigdecimal.BigDecimal[p]=c[p]}}$wnd.bigdecimal.BigDecimal.ROUND_CEILING=2;$wnd.bigdecimal.BigDecimal.ROUND_DOWN=1;$wnd.bigdecimal.BigDecimal.ROUND_FLOOR=3;$wnd.bigdecimal.BigDecimal.ROUND_HALF_DOWN=5;$wnd.bigdecimal.BigDecimal.ROUND_HALF_EVEN=6;$wnd.bigdecimal.BigDecimal.ROUND_HALF_UP=4;$wnd.bigdecimal.BigDecimal.ROUND_UNNECESSARY=7;$wnd.bigdecimal.BigDecimal.ROUND_UP=0;$wnd.bigdecimal.BigDecimal.__init__=Jr(function(a){var b=Lg(a);return pr(b)});d.abs_va=Jr(function(a){var b=this.__gwt_instance.s(a);return pr(b)});d.add_va=Jr(function(a){var b=this.__gwt_instance.t(a);return pr(b)});d.byteValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.u();return a}));d.compareTo=jr(Number,Jr(function(a){var b=this.__gwt_instance.v(a.__gwt_instance);return b}));d.divide_va=Jr(function(a){var b=this.__gwt_instance.y(a);return pr(b)});d.divideToIntegralValue_va=Jr(function(a){var b=this.__gwt_instance.x(a);return pr(b)});d.doubleValue=jr(Number,Jr(function(){var a=this.__gwt_instance.z();return a}));d.equals=jr(Number,Jr(function(a){var b=this.__gwt_instance.eQ(a);return b}));d.floatValue=jr(Number,Jr(function(){var a=this.__gwt_instance.A();return a}));d.hashCode=jr(Number,Jr(function(){var a=this.__gwt_instance.hC();return a}));d.intValue=jr(Number,Jr(function(){var a=this.__gwt_instance.B();return a}));d.intValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.C();return a}));d.max=Jr(function(a){var b=this.__gwt_instance.F(a.__gwt_instance);return pr(b)});d.min=Jr(function(a){var b=this.__gwt_instance.G(a.__gwt_instance);return pr(b)});d.movePointLeft=Jr(function(a){var b=this.__gwt_instance.H(a);return pr(b)});d.movePointRight=Jr(function(a){var b=this.__gwt_instance.I(a);return pr(b)});d.multiply_va=Jr(function(a){var b=this.__gwt_instance.J(a);return pr(b)});d.negate_va=Jr(function(a){var b=this.__gwt_instance.K(a);return pr(b)});d.plus_va=Jr(function(a){var b=this.__gwt_instance.L(a);return pr(b)});d.pow_va=Jr(function(a){var b=this.__gwt_instance.M(a);return pr(b)});d.precision=jr(Number,Jr(function(){var a=this.__gwt_instance.q();return a}));d.remainder_va=Jr(function(a){var b=this.__gwt_instance.N(a);return pr(b)});d.round=Jr(function(a){var b=this.__gwt_instance.O(a.__gwt_instance);return pr(b)});d.scale=jr(Number,Jr(function(){var a=this.__gwt_instance.P();return a}));d.scaleByPowerOfTen=Jr(function(a){var b=this.__gwt_instance.Q(a);return pr(b)});d.setScale_va=Jr(function(a){var b=this.__gwt_instance.R(a);return pr(b)});d.shortValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.S();return a}));d.signum=jr(Number,Jr(function(){var a=this.__gwt_instance.r();return a}));d.stripTrailingZeros=Jr(function(){var a=this.__gwt_instance.T();return pr(a)});d.subtract_va=Jr(function(a){var b=this.__gwt_instance.U(a);return pr(b)});d.toBigInteger=Jr(function(){var a=this.__gwt_instance.V();return pr(a)});d.toBigIntegerExact=Jr(function(){var a=this.__gwt_instance.W();return pr(a)});d.toEngineeringString=Jr(function(){var a=this.__gwt_instance.X();return a});d.toPlainString=Jr(function(){var a=this.__gwt_instance.Y();return a});d.toString=Jr(function(){var a=this.__gwt_instance.tS();return a});d.ulp=Jr(function(){var a=this.__gwt_instance.Z();return pr(a)});d.unscaledValue=Jr(function(){var a=this.__gwt_instance.$();return pr(a)});d.divideAndRemainder_va=Jr(function(a){var b=this.__gwt_instance.w(a);return qr(b)});d.longValue=jr(Number,Jr(function(){var a=this.__gwt_instance.E();return a}));d.longValueExact=jr(Number,Jr(function(){var a=this.__gwt_instance.D();return a}));$wnd.bigdecimal.BigDecimal.valueOf_va=Jr(function(a){var b=zh(a);return pr(b)});$wnd.bigdecimal.BigDecimal.log=jr(Number,Jr(function(a){rf();typeof console!==Xr&&console.log&&console.log(a)}));$wnd.bigdecimal.BigDecimal.logObj=jr(Number,Jr(function(a){rf();typeof console!==Xr&&console.log&&typeof JSON!==Xr&&JSON.stringify&&console.log('object: '+JSON.stringify(a))}));$wnd.bigdecimal.BigDecimal.ONE=Jr(function(){var a=(rf(),new Kg(lf));return pr(a)});$wnd.bigdecimal.BigDecimal.TEN=Jr(function(){var a=(rf(),new Kg(mf));return pr(a)});$wnd.bigdecimal.BigDecimal.ZERO=Jr(function(){var a=(rf(),new Kg(of));return pr(a)});mr(Qc,$wnd.bigdecimal.BigDecimal)} -var Lr='',ys=' ',$r='"',Or='(',gs='+',Is=', ',Ur='-',ds='.',Tr='0',es='0.',zs='0.0',As='0.00',Bs='0.000',Cs='0.0000',Ds='0.00000',Es='0.000000',Gs='0E',Fs='0E+',Qr=':',Kr=': ',Js='=',ps='BigDecimal',qs='BigDecimal MathContext',Ts='BigDecimal;',is='BigInteger',ss='BigInteger divide by zero',vs='BigInteger not invertible.',us='BigInteger: modulus not positive',Us='BigInteger;',Vr='CSS1Compat',_r='Division by zero',as='Division impossible',fs='E',Zr='For input string: "',hs='Infinite or NaN',bs='Invalid Operation',os='MathContext',ts='Negative bit address',cs='Rounding necessary',xs='RoundingMode',Vs='RoundingMode;',Nr='String',Rr='[',Ss='[Lcom.iriscouch.gwtapp.client.',Os='[Ljava.lang.',Ws='[Ljava.math.',Ks='\\.',Ls='__gwtex_wrap',Pr='anonymous',js='array',Hs='bad string format',rs='bigdecimal',Ns='com.google.gwt.core.client.',Ps='com.google.gwt.core.client.impl.',Rs='com.iriscouch.gwtapp.client.',Ms='java.lang.',Qs='java.math.',Xs='java.util.',Yr='msie',Mr='null',ks='number',ls='number MathContext',ns='number number',ws='object',Wr='opera',Ys='org.timepedia.exporter.client.',Sr='safari',ms='string',Xr='undefined';var _,Gr={l:0,m:0,h:524288},zr={l:0,m:4193280,h:1048575},Er={l:4194298,m:4194303,h:1048575},wr={l:4194303,m:4194303,h:1048575},ur={l:0,m:0,h:0},sr={l:1,m:0,h:0},vr={l:2,m:0,h:0},Hr={l:5,m:0,h:0},tr={l:10,m:0,h:0},xr={l:11,m:0,h:0},Dr={l:18,m:0,h:0},Cr={l:48,m:0,h:0},Br={l:877824,m:119,h:0},Ar={l:1755648,m:238,h:0},Ir={l:4194303,m:511,h:0},yr={l:4194303,m:1023,h:0},Fr={l:0,m:1024,h:0};_=H.prototype={};_.eQ=function I(a){return this===a};_.gC=function J(){return gd};_.hC=function K(){return ob(this)};_.tS=function L(){return this.gC().d+'@'+al(this.hC())};_.toString=function(){return this.tS()};_.tM=rr;_.cM={};_=P.prototype=new H;_.gC=function R(){return nd};_.j=function S(){return this.f};_.tS=function T(){var a,b;a=this.gC().d;b=this.j();return b!=null?a+Kr+b:a};_.cM={6:1,15:1};_.f=null;_=O.prototype=new P;_.gC=function U(){return ad};_.cM={6:1,15:1};_=V.prototype=N.prototype=new O;_.gC=function W(){return hd};_.cM={6:1,12:1,15:1};_=X.prototype=M.prototype=new N;_.gC=function Y(){return Fc};_.j=function ab(){this.d==null&&(this.e=bb(this.c),this.b=Z(this.c),this.d=Or+this.e+'): '+this.b+db(this.c),undefined);return this.d};_.cM={6:1,12:1,15:1};_.b=null;_.c=null;_.d=null;_.e=null;_=gb.prototype=new H;_.gC=function hb(){return Hc};var ib=0,jb=0;_=ub.prototype=pb.prototype=new gb;_.gC=function vb(){return Ic};_.b=null;_.c=null;var qb;_=Fb.prototype=Ab.prototype=new H;_.k=function Gb(){var a={};var b=[];var c=arguments.callee.caller.caller;while(c){var d=this.n(c.toString());b.push(d);var e=Qr+d;var f=a[e];if(f){var g,i;for(g=0,i=f.length;g0?c:Pr};_.gC=function Wb(){return Jc};_.o=function Xb(a){return Sb(this,a)};_.p=function Yb(){return 3};_=Zb.prototype=new H;_.gC=function $b(){return Nc};_=fc.prototype=_b.prototype=new Zb;_.gC=function gc(){return Mc};_.b=Lr;_=ic.prototype=hc.prototype=new H;_.gC=function kc(){return this.aC};_.aC=null;_.qI=0;var oc,pc;var ae=null;var oe=null;var Me,Ne,Oe,Pe;_=Se.prototype=Re.prototype=new H;_.gC=function Te(){return Oc};_.cM={2:1};_=Ze.prototype=new H;_.gC=function cf(){return fd};_.cM={6:1,10:1};var $e=null;_=qg.prototype=pg.prototype=og.prototype=ng.prototype=mg.prototype=lg.prototype=kg.prototype=jg.prototype=ig.prototype=hg.prototype=gg.prototype=fg.prototype=eg.prototype=dg.prototype=cg.prototype=Ye.prototype=new Ze;_.eQ=function wg(a){return Ff(this,a)};_.gC=function xg(){return pd};_.hC=function yg(){return Gf(this)};_.q=function Ag(){return Pf(this)};_.r=function Cg(){return Uf(this)};_.tS=function Eg(){return ag(this)};_.cM={6:1,8:1,10:1,16:1};_.b=0;_.c=0;_.d=null;_.e=0;_.f=0;_.g=0;_.i=null;var df,ef,ff,gf,hf,jf,kf=null,lf,mf,nf=null,of,pf,qf=null;_=Kg.prototype=Jg.prototype=Xe.prototype=new Ye;_.s=function Mg(a){var b,c,d;d=Lj(a);if(d==Lr)b=Uf(this)<0?Mf(this):this;else if(d==os)b=sf(Qf(this,new Yn(a[0].toString())));else throw new V('Unknown call signature for interim = super.abs: '+d);c=new Kg(b);return c};_.t=function Ng(a){var b,c,d;d=Lj(a);if(d==ps)b=tf(this,new mg(a[0].toString()));else if(d==qs)b=uf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.add: '+d);c=new Kg(b);return c};_.u=function Og(){return ~~(Je(bg(this,8))<<24)>>24};_.v=function Pg(a){return vf(this,a)};_.w=function Qg(a){var b,c,d,e;e=Lj(a);if(e==ps)c=Bf(this,new mg(a[0].toString()));else if(e==qs)c=Cf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.divideAndRemainder: '+e);d=lc(Qd,{6:1},3,c.length,0);for(b=0;b129?(a*=Infinity):(a=_e(ag(this))),a};_.gC=function Wg(){return Qc};_.hC=function Xg(){return Gf(this)};_.B=function Yg(){return this.f<=-32||this.f>(this.e>0?this.e:el((this.b-1)*0.3010299956639812)+1)?0:Mi(new Pi(this.f==0||this.b==0&&this.g!=-1?(!this.d&&(this.d=Li(this.g)),this.d):this.f<0?ei((!this.d&&(this.d=Li(this.g)),this.d),po(-this.f)):Th((!this.d&&(this.d=Li(this.g)),this.d),po(this.f))))};_.C=function Zg(){return Je(bg(this,32))};_.D=function $g(){return Je(bg(this,32))};_.E=function _g(){return _e(ag(this))};_.F=function ah(a){return new Kg(vf(this,a)>=0?this:a)};_.G=function bh(a){return new Kg(vf(this,a)<=0?this:a)};_.H=function ch(a){return new Kg(Jf(this,this.f+a))};_.I=function dh(a){return new Kg(Jf(this,this.f-a))};_.J=function eh(a){var b,c,d;d=Lj(a);if(d==ps)b=Kf(this,new mg(a[0].toString()));else if(d==qs)b=Lf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.multiply: '+d);c=new Kg(b);return c};_.K=function fh(a){var b,c,d;d=Lj(a);if(d==Lr)b=Mf(this);else if(d==os)b=Mf(Qf(this,new Yn(a[0].toString())));else throw new V('Unknown call signature for interim = super.negate: '+d);c=new Kg(b);return c};_.L=function gh(a){var b,c,d;d=Lj(a);if(d==Lr)b=this;else if(d==os)b=Qf(this,new Yn(a[0].toString()));else throw new V('Unknown call signature for interim = super.plus: '+d);c=new Kg(b);return c};_.M=function hh(a){var b,c,d;d=Lj(a);if(d==ks)b=Nf(this,a[0]);else if(d==ls)b=Of(this,a[0],new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.pow: '+d);c=new Kg(b);return c};_.q=function ih(){return Pf(this)};_.N=function jh(a){var b,c,d;d=Lj(a);if(d==ps)b=Bf(this,new mg(a[0].toString()))[1];else if(d==qs)b=Cf(this,new mg(a[0].toString()),new Yn(a[1].toString()))[1];else throw new V('Unknown call signature for interim = super.remainder: '+d);c=new Kg(b);return c};_.O=function kh(a){return new Kg(Qf(this,new Yn(Wn(a.b))))};_.P=function lh(){return Bc(this.f)};_.Q=function mh(a){return new Kg(Rf(this,a))};_.R=function nh(a){var b,c,d;d=Lj(a);if(d==ks)b=Sf(this,a[0],(Qo(),Go));else if(d==ns)b=Sf(this,a[0],Uo(a[1]));else if(d=='number RoundingMode')b=Sf(this,a[0],To(a[1].toString()));else throw new V('Unknown call signature for interim = super.setScale: '+d);c=new Kg(b);return c};_.S=function oh(){return ~~(Je(bg(this,16))<<16)>>16};_.r=function ph(){return Uf(this)};_.T=function qh(){return new Kg(Wf(this))};_.U=function rh(a){var b,c,d;d=Lj(a);if(d==ps)b=Xf(this,new mg(a[0].toString()));else if(d==qs)b=Yf(this,new mg(a[0].toString()),new Yn(a[1].toString()));else throw new V('Unknown call signature for interim = super.subtract: '+d);c=new Kg(b);return c};_.V=function sh(){return new Pi(this.f==0||this.b==0&&this.g!=-1?(!this.d&&(this.d=Li(this.g)),this.d):this.f<0?ei((!this.d&&(this.d=Li(this.g)),this.d),po(-this.f)):Th((!this.d&&(this.d=Li(this.g)),this.d),po(this.f)))};_.W=function th(){return new Pi(Zf(this))};_.X=function uh(){return $f(this)};_.Y=function vh(){return _f(this)};_.tS=function wh(){return ag(this)};_.Z=function xh(){return new Kg(new pg(1,this.f))};_.$=function yh(){return new Pi((!this.d&&(this.d=Li(this.g)),this.d))};_.cM={3:1,6:1,8:1,10:1,16:1,24:1};_=Eh.prototype=Ah.prototype=new H;_.gC=function Fh(){return Pc};var Bh=false;_=ui.prototype=ti.prototype=si.prototype=ri.prototype=qi.prototype=pi.prototype=oi.prototype=ni.prototype=Hh.prototype=new Ze;_._=function vi(){return this.f<0?new si(1,this.e,this.b):this};_.ab=function wi(){return sm(this)};_.eQ=function xi(a){return Vh(this,a)};_.gC=function yi(){return qd};_.bb=function zi(){return $h(this)};_.hC=function Bi(){return _h(this)};_.cb=function Ci(){return this.f==0?this:new si(-this.f,this.e,this.b)};_.db=function Di(a){return gi(this,a)};_.eb=function Fi(a){return ji(this,a)};_.fb=function Gi(a){return li(this,a)};_.r=function Hi(){return this.f};_.gb=function Ii(a){return mi(this,a)};_.tS=function Ji(){return Hm(this,0)};_.cM={6:1,8:1,10:1,17:1};_.b=null;_.c=-2;_.d=0;_.e=0;_.f=0;var Ih,Jh,Kh,Lh,Mh=null,Nh;_=Pi.prototype=Oi.prototype=Ni.prototype=Gh.prototype=new Hh;_._=function Ri(){return new Pi(this.f<0?new si(1,this.e,this.b):this)};_.hb=function Si(a){return new Pi(fn(this,a))};_.ib=function Ti(a){return new Pi(vn(this,a))};_.jb=function Ui(a){return new Pi(yn(this,a))};_.kb=function Vi(){return rm(this)};_.ab=function Wi(){return sm(this)};_.lb=function Xi(a){return new Pi(Ph(this,a))};_.mb=function Yi(a){return Qh(this,a)};_.nb=function Zi(a){return new Pi(Th(this,a))};_.ob=function $i(a){var b,c,d;c=Uh(this,a);d=lc(Rd,{6:1},4,c.length,0);for(b=0;b=0?Qr+this.c:Lr)+')'};_.cM={6:1,13:1};_.b=null;_.c=0;_.d=null;_=String.prototype;_.eQ=function Hl(a){return wl(this,a)};_.gC=function Il(){return md};_.hC=function Jl(){return Rl(this)};_.tS=function Kl(){return this};_.cM={1:1,6:1,7:1,8:1};var Ml,Nl=0,Ol;_=Ul.prototype=Tl.prototype=new H;_.gC=function Vl(){return jd};_.tS=function Wl(){return this.b.b};_.cM={7:1};_=hm.prototype=gm.prototype=fm.prototype=Xl.prototype=new H;_.gC=function im(){return kd};_.tS=function jm(){return this.b.b};_.cM={7:1};_=lm.prototype=km.prototype=new Uk;_.gC=function mm(){return ld};_.cM={6:1,12:1,14:1,15:1};_=pm.prototype=om.prototype=new N;_.gC=function qm(){return od};_.cM={6:1,12:1,15:1};var Cm,Dm;_=Yn.prototype=Xn.prototype=Nn.prototype=new H;_.eQ=function Zn(a){return xc(a,18)&&vc(a,18).b==this.b&&vc(a,18).c==this.c};_.gC=function $n(){return rd};_.hC=function _n(){return Vn(this)};_.tS=function ao(){return Wn(this)};_.cM={6:1,18:1};_.b=0;_.c=null;var On,Pn,Qn,Rn,Sn,Tn;var bo,co,eo,fo;var ro,so,to;_=Ro.prototype=yo.prototype=new Ik;_.gC=function So(){return sd};_.cM={6:1,8:1,9:1,19:1};var zo,Ao,Bo,Co,Do,Eo,Fo,Go,Ho,Io,Jo,Ko,Lo,Mo,No,Oo,Po;var Xo;_=Zo.prototype=new H;_.Kb=function _o(a){throw new pm};_.Lb=function ap(a){var b;b=$o(this.Mb(),a);return !!b};_.gC=function bp(){return td};_.tS=function cp(){var a,b,c,d;c=new Ul;a=null;c.b.b+=Rr;b=this.Mb();while(b.Pb()){a!=null?(cc(c.b,a),c):(a=Is);d=b.Qb();cc(c.b,d===this?'(this Collection)':Lr+d)}c.b.b+=']';return c.b.b};_=ep.prototype=new H;_.eQ=function fp(a){var b,c,d,e,f;if(a===this){return true}if(!xc(a,21)){return false}e=vc(a,21);if(this.e!=e.e){return false}for(c=new Ip((new Cp(e)).b);kq(c.b);){b=vc(lq(c.b),22);d=b.Rb();f=b.Sb();if(!(d==null?this.d:xc(d,1)?Qr+vc(d,1) in this.f:pp(this,d,~~fb(d)))){return false}if(!Xq(f,d==null?this.c:xc(d,1)?op(this,vc(d,1)):np(this,d,~~fb(d)))){return false}}return true};_.gC=function gp(){return Cd};_.hC=function hp(){var a,b,c;c=0;for(b=new Ip((new Cp(this)).b);kq(b.b);){a=vc(lq(b.b),22);c+=a.hC();c=~~c}return c};_.tS=function ip(){var a,b,c,d;d='{';a=false;for(c=new Ip((new Cp(this)).b);kq(c.b);){b=vc(lq(c.b),22);a?(d+=Is):(a=true);d+=Lr+b.Rb();d+=Js;d+=Lr+b.Sb()}return d+'}'};_.cM={21:1};_=dp.prototype=new ep;_.Ob=function vp(a,b){return Ac(a)===Ac(b)||a!=null&&eb(a,b)};_.gC=function wp(){return yd};_.cM={21:1};_.b=null;_.c=null;_.d=false;_.e=0;_.f=null;_=yp.prototype=new Zo;_.eQ=function zp(a){var b,c,d;if(a===this){return true}if(!xc(a,23)){return false}c=vc(a,23);if(c.b.e!=this.Nb()){return false}for(b=new Ip(c.b);kq(b.b);){d=vc(lq(b.b),22);if(!this.Lb(d)){return false}}return true};_.gC=function Ap(){return Dd};_.hC=function Bp(){var a,b,c;a=0;for(b=this.Mb();b.Pb();){c=b.Qb();if(c!=null){a+=fb(c);a=~~a}}return a};_.cM={23:1};_=Cp.prototype=xp.prototype=new yp;_.Lb=function Dp(a){var b,c,d;if(xc(a,22)){b=vc(a,22);c=b.Rb();if(lp(this.b,c)){d=mp(this.b,c);return Eq(b.Sb(),d)}}return false};_.gC=function Ep(){return vd};_.Mb=function Fp(){return new Ip(this.b)};_.Nb=function Gp(){return this.b.e};_.cM={23:1};_.b=null;_=Ip.prototype=Hp.prototype=new H;_.gC=function Jp(){return ud};_.Pb=function Kp(){return kq(this.b)};_.Qb=function Lp(){return vc(lq(this.b),22)};_.b=null;_=Np.prototype=new H;_.eQ=function Op(a){var b;if(xc(a,22)){b=vc(a,22);if(Xq(this.Rb(),b.Rb())&&Xq(this.Sb(),b.Sb())){return true}}return false};_.gC=function Pp(){return Bd};_.hC=function Qp(){var a,b;a=0;b=0;this.Rb()!=null&&(a=fb(this.Rb()));this.Sb()!=null&&(b=fb(this.Sb()));return a^b};_.tS=function Rp(){return this.Rb()+Js+this.Sb()};_.cM={22:1};_=Sp.prototype=Mp.prototype=new Np;_.gC=function Tp(){return wd};_.Rb=function Up(){return null};_.Sb=function Vp(){return this.b.c};_.Tb=function Wp(a){return tp(this.b,a)};_.cM={22:1};_.b=null;_=Yp.prototype=Xp.prototype=new Np;_.gC=function Zp(){return xd};_.Rb=function $p(){return this.b};_.Sb=function _p(){return op(this.c,this.b)};_.Tb=function aq(a){return up(this.c,this.b,a)};_.cM={22:1};_.b=null;_.c=null;_=bq.prototype=new Zo;_.Kb=function cq(a){sq(this,this.Nb(),a);return true};_.eQ=function eq(a){var b,c,d,e,f;if(a===this){return true}if(!xc(a,20)){return false}f=vc(a,20);if(this.Nb()!=f.c){return false}d=new mq(this);e=new mq(f);while(d.bMathContext immutable class encapsulates the - * settings understood by the operator methods of the {@link BigDecimal} - * class (and potentially other classes). Operator methods are those - * that effect an operation on a number or a pair of numbers. - *

      - * The settings, which are not base-dependent, comprise: - *

        - *
      1. digits: - * the number of digits (precision) to be used for an operation - *
      2. form: - * the form of any exponent that results from the operation - *
      3. lostDigits: - * whether checking for lost digits is enabled - *
      4. roundingMode: - * the algorithm to be used for rounding. - *
      - *

      - * When provided, a MathContext object supplies the - * settings for an operation directly. - *

      - * When MathContext.DEFAULT is provided for a - * MathContext parameter then the default settings are used - * (9, SCIENTIFIC, false, ROUND_HALF_UP). - *

      - * In the BigDecimal class, all methods which accept a - * MathContext object defaults) also have a version of the - * method which does not accept a MathContext parameter. These versions - * carry out unlimited precision fixed point arithmetic (as though the - * settings were (0, PLAIN, false, ROUND_HALF_UP). - *

      - * The instance variables are shared with default access (so they are - * directly accessible to the BigDecimal class), but must - * never be changed. - *

      - * The rounding mode constants have the same names and values as the - * constants of the same name in java.math.BigDecimal, to - * maintain compatibility with earlier versions of - * BigDecimal. - * - * @see BigDecimal - * @author Mike Cowlishaw - * @stable ICU 2.0 - */ - -//--public final class MathContext implements java.io.Serializable{ - //--private static final java.lang.String $0="MathContext.nrx"; - - //-- methods - MathContext.prototype.getDigits = getDigits; - MathContext.prototype.getForm = getForm; - MathContext.prototype.getLostDigits = getLostDigits; - MathContext.prototype.getRoundingMode = getRoundingMode; - MathContext.prototype.toString = toString; - MathContext.prototype.isValidRound = isValidRound; - - - /* ----- Properties ----- */ - /* properties public constant */ - /** - * Plain (fixed point) notation, without any exponent. - * Used as a setting to control the form of the result of a - * BigDecimal operation. - * A zero result in plain form may have a decimal part of one or - * more zeros. - * - * @see #ENGINEERING - * @see #SCIENTIFIC - * @stable ICU 2.0 - */ - //--public static final int PLAIN=0; // [no exponent] - MathContext.PLAIN = MathContext.prototype.PLAIN = 0; // [no exponent] - - /** - * Standard floating point notation (with scientific exponential - * format, where there is one digit before any decimal point). - * Used as a setting to control the form of the result of a - * BigDecimal operation. - * A zero result in plain form may have a decimal part of one or - * more zeros. - * - * @see #ENGINEERING - * @see #PLAIN - * @stable ICU 2.0 - */ - //--public static final int SCIENTIFIC=1; // 1 digit before . - MathContext.SCIENTIFIC = MathContext.prototype.SCIENTIFIC = 1; // 1 digit before . - - /** - * Standard floating point notation (with engineering exponential - * format, where the power of ten is a multiple of 3). - * Used as a setting to control the form of the result of a - * BigDecimal operation. - * A zero result in plain form may have a decimal part of one or - * more zeros. - * - * @see #PLAIN - * @see #SCIENTIFIC - * @stable ICU 2.0 - */ - //--public static final int ENGINEERING=2; // 1-3 digits before . - MathContext.ENGINEERING = MathContext.prototype.ENGINEERING = 2; // 1-3 digits before . - - // The rounding modes match the original BigDecimal class values - /** - * Rounding mode to round to a more positive number. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * If any of the discarded digits are non-zero then the result - * should be rounded towards the next more positive digit. - * @stable ICU 2.0 - */ - //--public static final int ROUND_CEILING=2; - MathContext.ROUND_CEILING = MathContext.prototype.ROUND_CEILING = 2; - - /** - * Rounding mode to round towards zero. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * All discarded digits are ignored (truncated). The result is - * neither incremented nor decremented. - * @stable ICU 2.0 - */ - //--public static final int ROUND_DOWN=1; - MathContext.ROUND_DOWN = MathContext.prototype.ROUND_DOWN = 1; - - /** - * Rounding mode to round to a more negative number. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * If any of the discarded digits are non-zero then the result - * should be rounded towards the next more negative digit. - * @stable ICU 2.0 - */ - //--public static final int ROUND_FLOOR=3; - MathContext.ROUND_FLOOR = MathContext.prototype.ROUND_FLOOR = 3; - - /** - * Rounding mode to round to nearest neighbor, where an equidistant - * value is rounded down. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * If the discarded digits represent greater than half (0.5 times) - * the value of a one in the next position then the result should be - * rounded up (away from zero). Otherwise the discarded digits are - * ignored. - * @stable ICU 2.0 - */ - //--public static final int ROUND_HALF_DOWN=5; - MathContext.ROUND_HALF_DOWN = MathContext.prototype.ROUND_HALF_DOWN = 5; - - /** - * Rounding mode to round to nearest neighbor, where an equidistant - * value is rounded to the nearest even neighbor. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * If the discarded digits represent greater than half (0.5 times) - * the value of a one in the next position then the result should be - * rounded up (away from zero). If they represent less than half, - * then the result should be rounded down. - *

      - * Otherwise (they represent exactly half) the result is rounded - * down if its rightmost digit is even, or rounded up if its - * rightmost digit is odd (to make an even digit). - * @stable ICU 2.0 - */ - //--public static final int ROUND_HALF_EVEN=6; - MathContext.ROUND_HALF_EVEN = MathContext.prototype.ROUND_HALF_EVEN = 6; - - /** - * Rounding mode to round to nearest neighbor, where an equidistant - * value is rounded up. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * If the discarded digits represent greater than or equal to half - * (0.5 times) the value of a one in the next position then the result - * should be rounded up (away from zero). Otherwise the discarded - * digits are ignored. - * @stable ICU 2.0 - */ - //--public static final int ROUND_HALF_UP=4; - MathContext.ROUND_HALF_UP = MathContext.prototype.ROUND_HALF_UP = 4; - - /** - * Rounding mode to assert that no rounding is necessary. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * Rounding (potential loss of information) is not permitted. - * If any of the discarded digits are non-zero then an - * ArithmeticException should be thrown. - * @stable ICU 2.0 - */ - //--public static final int ROUND_UNNECESSARY=7; - MathContext.ROUND_UNNECESSARY = MathContext.prototype.ROUND_UNNECESSARY = 7; - - /** - * Rounding mode to round away from zero. - * Used as a setting to control the rounding mode used during a - * BigDecimal operation. - *

      - * If any of the discarded digits are non-zero then the result will - * be rounded up (away from zero). - * @stable ICU 2.0 - */ - //--public static final int ROUND_UP=0; - MathContext.ROUND_UP = MathContext.prototype.ROUND_UP = 0; - - - /* properties shared */ - /** - * The number of digits (precision) to be used for an operation. - * A value of 0 indicates that unlimited precision (as many digits - * as are required) will be used. - *

      - * The {@link BigDecimal} operator methods use this value to - * determine the precision of results. - * Note that leading zeros (in the integer part of a number) are - * never significant. - *

      - * digits will always be non-negative. - * - * @serial - */ - //--int digits; - - /** - * The form of results from an operation. - *

      - * The {@link BigDecimal} operator methods use this value to - * determine the form of results, in particular whether and how - * exponential notation should be used. - * - * @see #ENGINEERING - * @see #PLAIN - * @see #SCIENTIFIC - * @serial - */ - //--int form; // values for this must fit in a byte - - /** - * Controls whether lost digits checking is enabled for an - * operation. - * Set to true to enable checking, or - * to false to disable checking. - *

      - * When enabled, the {@link BigDecimal} operator methods check - * the precision of their operand or operands, and throw an - * ArithmeticException if an operand is more precise - * than the digits setting (that is, digits would be lost). - * When disabled, operands are rounded to the specified digits. - * - * @serial - */ - //--boolean lostDigits; - - /** - * The rounding algorithm to be used for an operation. - *

      - * The {@link BigDecimal} operator methods use this value to - * determine the algorithm to be used when non-zero digits have to - * be discarded in order to reduce the precision of a result. - * The value must be one of the public constants whose name starts - * with ROUND_. - * - * @see #ROUND_CEILING - * @see #ROUND_DOWN - * @see #ROUND_FLOOR - * @see #ROUND_HALF_DOWN - * @see #ROUND_HALF_EVEN - * @see #ROUND_HALF_UP - * @see #ROUND_UNNECESSARY - * @see #ROUND_UP - * @serial - */ - //--int roundingMode; - - /* properties private constant */ - // default settings - //--private static final int DEFAULT_FORM=SCIENTIFIC; - //--private static final int DEFAULT_DIGITS=9; - //--private static final boolean DEFAULT_LOSTDIGITS=false; - //--private static final int DEFAULT_ROUNDINGMODE=ROUND_HALF_UP; - MathContext.prototype.DEFAULT_FORM=MathContext.prototype.SCIENTIFIC; - MathContext.prototype.DEFAULT_DIGITS=9; - MathContext.prototype.DEFAULT_LOSTDIGITS=false; - MathContext.prototype.DEFAULT_ROUNDINGMODE=MathContext.prototype.ROUND_HALF_UP; - - /* properties private constant */ - - //--private static final int MIN_DIGITS=0; // smallest value for DIGITS. - //--private static final int MAX_DIGITS=999999999; // largest value for DIGITS. If increased, - MathContext.prototype.MIN_DIGITS=0; // smallest value for DIGITS. - MathContext.prototype.MAX_DIGITS=999999999; // largest value for DIGITS. If increased, - // the BigDecimal class may need update. - // list of valid rounding mode values, most common two first - //--private static final int ROUNDS[]=new int[]{ROUND_HALF_UP,ROUND_UNNECESSARY,ROUND_CEILING,ROUND_DOWN,ROUND_FLOOR,ROUND_HALF_DOWN,ROUND_HALF_EVEN,ROUND_UP}; - MathContext.prototype.ROUNDS=new Array(MathContext.prototype.ROUND_HALF_UP,MathContext.prototype.ROUND_UNNECESSARY,MathContext.prototype.ROUND_CEILING,MathContext.prototype.ROUND_DOWN,MathContext.prototype.ROUND_FLOOR,MathContext.prototype.ROUND_HALF_DOWN,MathContext.prototype.ROUND_HALF_EVEN,MathContext.prototype.ROUND_UP); - - - //--private static final java.lang.String ROUNDWORDS[]=new java.lang.String[]{"ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"}; // matching names of the ROUNDS values - MathContext.prototype.ROUNDWORDS=new Array("ROUND_HALF_UP","ROUND_UNNECESSARY","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_UP"); // matching names of the ROUNDS values - - - - - /* properties private constant unused */ - - // Serialization version - //--private static final long serialVersionUID=7163376998892515376L; - - /* properties public constant */ - /** - * A MathContext object initialized to the default - * settings for general-purpose arithmetic. That is, - * digits=9 form=SCIENTIFIC lostDigits=false - * roundingMode=ROUND_HALF_UP. - * - * @see #SCIENTIFIC - * @see #ROUND_HALF_UP - * @stable ICU 2.0 - */ - //--public static final com.ibm.icu.math.MathContext DEFAULT=new com.ibm.icu.math.MathContext(DEFAULT_DIGITS,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); - MathContext.prototype.DEFAULT=new MathContext(MathContext.prototype.DEFAULT_DIGITS,MathContext.prototype.DEFAULT_FORM,MathContext.prototype.DEFAULT_LOSTDIGITS,MathContext.prototype.DEFAULT_ROUNDINGMODE); - - - - - /* ----- Constructors ----- */ - - /** - * Constructs a new MathContext with a specified - * precision. - * The other settings are set to the default values - * (see {@link #DEFAULT}). - * - * An IllegalArgumentException is thrown if the - * setdigits parameter is out of range - * (<0 or >999999999). - * - * @param setdigits The int digits setting - * for this MathContext. - * @throws IllegalArgumentException parameter out of range. - * @stable ICU 2.0 - */ - - //--public MathContext(int setdigits){ - //-- this(setdigits,DEFAULT_FORM,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); - //-- return;} - - - /** - * Constructs a new MathContext with a specified - * precision and form. - * The other settings are set to the default values - * (see {@link #DEFAULT}). - * - * An IllegalArgumentException is thrown if the - * setdigits parameter is out of range - * (<0 or >999999999), or if the value given for the - * setform parameter is not one of the appropriate - * constants. - * - * @param setdigits The int digits setting - * for this MathContext. - * @param setform The int form setting - * for this MathContext. - * @throws IllegalArgumentException parameter out of range. - * @stable ICU 2.0 - */ - - //--public MathContext(int setdigits,int setform){ - //-- this(setdigits,setform,DEFAULT_LOSTDIGITS,DEFAULT_ROUNDINGMODE); - //-- return;} - - /** - * Constructs a new MathContext with a specified - * precision, form, and lostDigits setting. - * The roundingMode setting is set to its default value - * (see {@link #DEFAULT}). - * - * An IllegalArgumentException is thrown if the - * setdigits parameter is out of range - * (<0 or >999999999), or if the value given for the - * setform parameter is not one of the appropriate - * constants. - * - * @param setdigits The int digits setting - * for this MathContext. - * @param setform The int form setting - * for this MathContext. - * @param setlostdigits The boolean lostDigits - * setting for this MathContext. - * @throws IllegalArgumentException parameter out of range. - * @stable ICU 2.0 - */ - - //--public MathContext(int setdigits,int setform,boolean setlostdigits){ - //-- this(setdigits,setform,setlostdigits,DEFAULT_ROUNDINGMODE); - //-- return;} - - /** - * Constructs a new MathContext with a specified - * precision, form, lostDigits, and roundingMode setting. - * - * An IllegalArgumentException is thrown if the - * setdigits parameter is out of range - * (<0 or >999999999), or if the value given for the - * setform or setroundingmode parameters is - * not one of the appropriate constants. - * - * @param setdigits The int digits setting - * for this MathContext. - * @param setform The int form setting - * for this MathContext. - * @param setlostdigits The boolean lostDigits - * setting for this MathContext. - * @param setroundingmode The int roundingMode setting - * for this MathContext. - * @throws IllegalArgumentException parameter out of range. - * @stable ICU 2.0 - */ - - //--public MathContext(int setdigits,int setform,boolean setlostdigits,int setroundingmode){super(); - function MathContext() { - //-- members - this.digits = 0; - this.form = 0; // values for this must fit in a byte - this.lostDigits = false; - this.roundingMode = 0; - - //-- overloaded ctor - var setform = this.DEFAULT_FORM; - var setlostdigits = this.DEFAULT_LOSTDIGITS; - var setroundingmode = this.DEFAULT_ROUNDINGMODE; - if (MathContext.arguments.length == 4) - { - setform = MathContext.arguments[1]; - setlostdigits = MathContext.arguments[2]; - setroundingmode = MathContext.arguments[3]; - } - else if (MathContext.arguments.length == 3) - { - setform = MathContext.arguments[1]; - setlostdigits = MathContext.arguments[2]; - } - else if (MathContext.arguments.length == 2) - { - setform = MathContext.arguments[1]; - } - else if (MathContext.arguments.length != 1) - { - throw "MathContext(): " + MathContext.arguments.length + " arguments given; expected 1 to 4"; - } - var setdigits = MathContext.arguments[0]; - - - // set values, after checking - if (setdigits!=this.DEFAULT_DIGITS) - { - if (setdigitsthis.MAX_DIGITS) - throw "MathContext(): Digits too large: "+setdigits; - } - {/*select*/ - if (setform==this.SCIENTIFIC) - {} // [most common] - else if (setform==this.ENGINEERING) - {} - else if (setform==this.PLAIN) - {} - else{ - throw "MathContext() Bad form value: "+setform; - } - } - if ((!(this.isValidRound(setroundingmode)))) - throw "MathContext(): Bad roundingMode value: "+setroundingmode; - this.digits=setdigits; - this.form=setform; - this.lostDigits=setlostdigits; // [no bad value possible] - this.roundingMode=setroundingmode; - return;} - - /** - * Returns the digits setting. - * This value is always non-negative. - * - * @return an int which is the value of the digits - * setting - * @stable ICU 2.0 - */ - - //--public int getDigits(){ - function getDigits() { - return this.digits; - } - - /** - * Returns the form setting. - * This will be one of - * {@link #ENGINEERING}, - * {@link #PLAIN}, or - * {@link #SCIENTIFIC}. - * - * @return an int which is the value of the form setting - * @stable ICU 2.0 - */ - - //--public int getForm(){ - function getForm() { - return this.form; - } - - /** - * Returns the lostDigits setting. - * This will be either true (enabled) or - * false (disabled). - * - * @return a boolean which is the value of the lostDigits - * setting - * @stable ICU 2.0 - */ - - //--public boolean getLostDigits(){ - function getLostDigits() { - return this.lostDigits; - } - - /** - * Returns the roundingMode setting. - * This will be one of - * {@link #ROUND_CEILING}, - * {@link #ROUND_DOWN}, - * {@link #ROUND_FLOOR}, - * {@link #ROUND_HALF_DOWN}, - * {@link #ROUND_HALF_EVEN}, - * {@link #ROUND_HALF_UP}, - * {@link #ROUND_UNNECESSARY}, or - * {@link #ROUND_UP}. - * - * @return an int which is the value of the roundingMode - * setting - * @stable ICU 2.0 - */ - - //--public int getRoundingMode(){ - function getRoundingMode() { - return this.roundingMode; - } - - /** Returns the MathContext as a readable string. - * The String returned represents the settings of the - * MathContext object as four blank-delimited words - * separated by a single blank and with no leading or trailing blanks, - * as follows: - *

        - *
      1. - * digits=, immediately followed by - * the value of the digits setting as a numeric word. - *
      2. - * form=, immediately followed by - * the value of the form setting as an uppercase word - * (one of SCIENTIFIC, PLAIN, or - * ENGINEERING). - *
      3. - * lostDigits=, immediately followed by - * the value of the lostDigits setting - * (1 if enabled, 0 if disabled). - *
      4. - * roundingMode=, immediately followed by - * the value of the roundingMode setting as a word. - * This word will be the same as the name of the corresponding public - * constant. - *
      - *

      - * For example: - *
      - * digits=9 form=SCIENTIFIC lostDigits=0 roundingMode=ROUND_HALF_UP - * - *

      - * Additional words may be appended to the result of - * toString in the future if more properties are added - * to the class. - * - * @return a String representing the context settings. - * @stable ICU 2.0 - */ - - //--public java.lang.String toString(){ - function toString() { - //--java.lang.String formstr=null; - var formstr=null; - //--int r=0; - var r=0; - //--java.lang.String roundword=null; - var roundword=null; - {/*select*/ - if (this.form==this.SCIENTIFIC) - formstr="SCIENTIFIC"; - else if (this.form==this.ENGINEERING) - formstr="ENGINEERING"; - else{ - formstr="PLAIN";/* form=PLAIN */ - } - } - {var $1=this.ROUNDS.length;r=0;r:for(;$1>0;$1--,r++){ - if (this.roundingMode==this.ROUNDS[r]) - { - roundword=this.ROUNDWORDS[r]; - break r; - } - } - }/*r*/ - return "digits="+this.digits+" "+"form="+formstr+" "+"lostDigits="+(this.lostDigits?"1":"0")+" "+"roundingMode="+roundword; - } - - - /* Test whether round is valid. */ - // This could be made shared for use by BigDecimal for setScale. - - //--private static boolean isValidRound(int testround){ - function isValidRound(testround) { - //--int r=0; - var r=0; - {var $2=this.ROUNDS.length;r=0;r:for(;$2>0;$2--,r++){ - if (testround==this.ROUNDS[r]) - return true; - } - }/*r*/ - return false; - } -return MathContext; -})(); - -var BigDecimal = (function (MathContext) { -/* Generated from 'BigDecimal.nrx' 8 Sep 2000 11:10:50 [v2.00] */ -/* Options: Binary Comments Crossref Format Java Logo Strictargs Strictcase Trace2 Verbose3 */ -//--package com.ibm.icu.math; -//--import java.math.BigInteger; -//--import com.ibm.icu.impl.Utility; - -/* ------------------------------------------------------------------ */ -/* BigDecimal -- Decimal arithmetic for Java */ -/* ------------------------------------------------------------------ */ -/* Copyright IBM Corporation, 1996, 2000. All Rights Reserved. */ -/* */ -/* The BigDecimal class provides immutable arbitrary-precision */ -/* floating point (including integer) decimal numbers. */ -/* */ -/* As the numbers are decimal, there is an exact correspondence */ -/* between an instance of a BigDecimal object and its String */ -/* representation; the BigDecimal class provides direct conversions */ -/* to and from String and character array objects, and well as */ -/* conversions to and from the Java primitive types (which may not */ -/* be exact). */ -/* ------------------------------------------------------------------ */ -/* Notes: */ -/* */ -/* 1. A BigDecimal object is never changed in value once constructed; */ -/* this avoids the need for locking. Note in particular that the */ -/* mantissa array may be shared between many BigDecimal objects, */ -/* so that once exposed it must not be altered. */ -/* */ -/* 2. This class looks at MathContext class fields directly (for */ -/* performance). It must not and does not change them. */ -/* */ -/* 3. Exponent checking is delayed until finish(), as we know */ -/* intermediate calculations cannot cause 31-bit overflow. */ -/* [This assertion depends on MAX_DIGITS in MathContext.] */ -/* */ -/* 4. Comments for the public API now follow the javadoc conventions. */ -/* The NetRexx -comments option is used to pass these comments */ -/* through to the generated Java code (with -format, if desired). */ -/* */ -/* 5. System.arraycopy is faster than explicit loop as follows */ -/* Mean length 4: equal */ -/* Mean length 8: x2 */ -/* Mean length 16: x3 */ -/* Mean length 24: x4 */ -/* From prior experience, we expect mean length a little below 8, */ -/* but arraycopy is still the one to use, in general, until later */ -/* measurements suggest otherwise. */ -/* */ -/* 6. 'DMSRCN' referred to below is the original (1981) IBM S/370 */ -/* assembler code implementation of the algorithms below; it is */ -/* now called IXXRCN and is available with the OS/390 and VM/ESA */ -/* operating systems. */ -/* ------------------------------------------------------------------ */ -/* Change History: */ -/* 1997.09.02 Initial version (derived from netrexx.lang classes) */ -/* 1997.09.12 Add lostDigits checking */ -/* 1997.10.06 Change mantissa to a byte array */ -/* 1997.11.22 Rework power [did not prepare arguments, etc.] */ -/* 1997.12.13 multiply did not prepare arguments */ -/* 1997.12.14 add did not prepare and align arguments correctly */ -/* 1998.05.02 0.07 packaging changes suggested by Sun and Oracle */ -/* 1998.05.21 adjust remainder operator finalization */ -/* 1998.06.04 rework to pass MathContext to finish() and round() */ -/* 1998.06.06 change format to use round(); support rounding modes */ -/* 1998.06.25 rename to BigDecimal and begin merge */ -/* zero can now have trailing zeros (i.e., exp\=0) */ -/* 1998.06.28 new methods: movePointXxxx, scale, toBigInteger */ -/* unscaledValue, valueof */ -/* 1998.07.01 improve byteaddsub to allow array reuse, etc. */ -/* 1998.07.01 make null testing explicit to avoid JIT bug [Win32] */ -/* 1998.07.07 scaled division [divide(BigDecimal, int, int)] */ -/* 1998.07.08 setScale, faster equals */ -/* 1998.07.11 allow 1E6 (no sign) ; new double/float conversion */ -/* 1998.10.12 change package to com.ibm.icu.math */ -/* 1998.12.14 power operator no longer rounds RHS [to match ANSI] */ -/* add toBigDecimal() and BigDecimal(java.math.BigDecimal) */ -/* 1998.12.29 improve byteaddsub by using table lookup */ -/* 1999.02.04 lostdigits=0 behaviour rounds instead of digits+1 guard */ -/* 1999.02.05 cleaner code for BigDecimal(char[]) */ -/* 1999.02.06 add javadoc comments */ -/* 1999.02.11 format() changed from 7 to 2 method form */ -/* 1999.03.05 null pointer checking is no longer explicit */ -/* 1999.03.05 simplify; changes from discussion with J. Bloch: */ -/* null no longer permitted for MathContext; drop boolean, */ -/* byte, char, float, short constructor, deprecate double */ -/* constructor, no blanks in string constructor, add */ -/* offset and length version of char[] constructor; */ -/* add valueOf(double); drop booleanValue, charValue; */ -/* add ...Exact versions of remaining convertors */ -/* 1999.03.13 add toBigIntegerExact */ -/* 1999.03.13 1.00 release to IBM Centre for Java Technology */ -/* 1999.05.27 1.01 correct 0-0.2 bug under scaled arithmetic */ -/* 1999.06.29 1.02 constructors should not allow exponent > 9 digits */ -/* 1999.07.03 1.03 lost digits should not be checked if digits=0 */ -/* 1999.07.06 lost digits Exception message changed */ -/* 1999.07.10 1.04 more work on 0-0.2 (scaled arithmetic) */ -/* 1999.07.17 improve messages from pow method */ -/* 1999.08.08 performance tweaks */ -/* 1999.08.15 fastpath in multiply */ -/* 1999.11.05 1.05 fix problem in intValueExact [e.g., 5555555555] */ -/* 1999.12.22 1.06 remove multiply fastpath, and improve performance */ -/* 2000.01.01 copyright update [Y2K has arrived] */ -/* 2000.06.18 1.08 no longer deprecate BigDecimal(double) */ -/* ------------------------------------------------------------------ */ - - -/* JavaScript conversion (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany */ - - - -function div(a, b) { - return (a-(a%b))/b; -} - -BigDecimal.prototype.div = div; - -function arraycopy(src, srcindex, dest, destindex, length) { - var i; - if (destindex > srcindex) { - // in case src and dest are equals, but also doesn't hurt - // if they are different - for (i = length-1; i >= 0; --i) { - dest[i+destindex] = src[i+srcindex]; - } - } else { - for (i = 0; i < length; ++i) { - dest[i+destindex] = src[i+srcindex]; - } - } -} - -BigDecimal.prototype.arraycopy = arraycopy; - -function createArrayWithZeros(length) { - var retVal = new Array(length); - var i; - for (i = 0; i < length; ++i) { - retVal[i] = 0; - } - return retVal; -} - -BigDecimal.prototype.createArrayWithZeros = createArrayWithZeros; - - -/** - * The BigDecimal class implements immutable - * arbitrary-precision decimal numbers. The methods of the - * BigDecimal class provide operations for fixed and - * floating point arithmetic, comparison, format conversions, and - * hashing. - *

      - * As the numbers are decimal, there is an exact correspondence between - * an instance of a BigDecimal object and its - * String representation; the BigDecimal class - * provides direct conversions to and from String and - * character array (char[]) objects, as well as conversions - * to and from the Java primitive types (which may not be exact) and - * BigInteger. - *

      - * In the descriptions of constructors and methods in this documentation, - * the value of a BigDecimal number object is shown as the - * result of invoking the toString() method on the object. - * The internal representation of a decimal number is neither defined - * nor exposed, and is not permitted to affect the result of any - * operation. - *

      - * The floating point arithmetic provided by this class is defined by - * the ANSI X3.274-1996 standard, and is also documented at - * http://www2.hursley.ibm.com/decimal - *
      [This URL will change.] - * - *

      Operator methods

      - *

      - * Operations on BigDecimal numbers are controlled by a - * {@link MathContext} object, which provides the context (precision and - * other information) for the operation. Methods that can take a - * MathContext parameter implement the standard arithmetic - * operators for BigDecimal objects and are known as - * operator methods. The default settings provided by the - * constant {@link MathContext#DEFAULT} (digits=9, - * form=SCIENTIFIC, lostDigits=false, roundingMode=ROUND_HALF_UP) - * perform general-purpose floating point arithmetic to nine digits of - * precision. The MathContext parameter must not be - * null. - *

      - * Each operator method also has a version provided which does - * not take a MathContext parameter. For this version of - * each method, the context settings used are digits=0, - * form=PLAIN, lostDigits=false, roundingMode=ROUND_HALF_UP; - * these settings perform fixed point arithmetic with unlimited - * precision, as defined for the original BigDecimal class in Java 1.1 - * and Java 1.2. - *

      - * For monadic operators, only the optional MathContext - * parameter is present; the operation acts upon the current object. - *

      - * For dyadic operators, a BigDecimal parameter is always - * present; it must not be null. - * The operation acts with the current object being the left-hand operand - * and the BigDecimal parameter being the right-hand operand. - *

      - * For example, adding two BigDecimal objects referred to - * by the names award and extra could be - * written as any of: - *

      - * award.add(extra) - *
      award.add(extra, MathContext.DEFAULT) - *
      award.add(extra, acontext) - *
      - *

      - * (where acontext is a MathContext object), - * which would return a BigDecimal object whose value is - * the result of adding award and extra under - * the appropriate context settings. - *

      - * When a BigDecimal operator method is used, a set of - * rules define what the result will be (and, by implication, how the - * result would be represented as a character string). - * These rules are defined in the BigDecimal arithmetic documentation - * (see the URL above), but in summary: - *

        - *
      • Results are normally calculated with up to some maximum number of - * significant digits. - * For example, if the MathContext parameter for an operation - * were MathContext.DEFAULT then the result would be - * rounded to 9 digits; the division of 2 by 3 would then result in - * 0.666666667. - *
        - * You can change the default of 9 significant digits by providing the - * method with a suitable MathContext object. This lets you - * calculate using as many digits as you need -- thousands, if necessary. - * Fixed point (scaled) arithmetic is indicated by using a - * digits setting of 0 (or omitting the - * MathContext parameter). - *
        - * Similarly, you can change the algorithm used for rounding from the - * default "classic" algorithm. - *
      • - * In standard arithmetic (that is, when the form setting - * is not PLAIN), a zero result is always expressed as the - * single digit '0' (that is, with no sign, decimal point, - * or exponent part). - *
      • - * Except for the division and power operators in standard arithmetic, - * trailing zeros are preserved (this is in contrast to binary floating - * point operations and most electronic calculators, which lose the - * information about trailing zeros in the fractional part of results). - *
        - * So, for example: - *

        - * new BigDecimal("2.40").add( new BigDecimal("2")) => "4.40" - *
        new BigDecimal("2.40").subtract(new BigDecimal("2")) => "0.40" - *
        new BigDecimal("2.40").multiply(new BigDecimal("2")) => "4.80" - *
        new BigDecimal("2.40").divide( new BigDecimal("2"), def) => "1.2" - *
        - *

        where the value on the right of the => would be the - * result of the operation, expressed as a String, and - * def (in this and following examples) refers to - * MathContext.DEFAULT). - * This preservation of trailing zeros is desirable for most - * calculations (including financial calculations). - * If necessary, trailing zeros may be easily removed using division by 1. - *

      • - * In standard arithmetic, exponential form is used for a result - * depending on its value and the current setting of digits - * (the default is 9 digits). - * If the number of places needed before the decimal point exceeds the - * digits setting, or the absolute value of the number is - * less than 0.000001, then the number will be expressed in - * exponential notation; thus - *

        - * new BigDecimal("1e+6").multiply(new BigDecimal("1e+6"), def) - * - *

        results in 1E+12 instead of - * 1000000000000, and - *

        - * new BigDecimal("1").divide(new BigDecimal("3E+10"), def) - * - *

        results in 3.33333333E-11 instead of - * 0.0000000000333333333. - *

        - * The form of the exponential notation (scientific or engineering) is - * determined by the form setting. - * - *

        - * The names of methods in this class follow the conventions established - * by java.lang.Number, java.math.BigInteger, - * and java.math.BigDecimal in Java 1.1 and Java 1.2. - * - * @see MathContext - * @author Mike Cowlishaw - * @stable ICU 2.0 - */ - -//--public class BigDecimal extends java.lang.Number implements java.io.Serializable,java.lang.Comparable{ -//-- private static final java.lang.String $0="BigDecimal.nrx"; - - //-- methods - BigDecimal.prototype.abs = abs; - BigDecimal.prototype.add = add; - BigDecimal.prototype.compareTo = compareTo; - BigDecimal.prototype.divide = divide; - BigDecimal.prototype.divideInteger = divideInteger; - BigDecimal.prototype.max = max; - BigDecimal.prototype.min = min; - BigDecimal.prototype.multiply = multiply; - BigDecimal.prototype.negate = negate; - BigDecimal.prototype.plus = plus; - BigDecimal.prototype.pow = pow; - BigDecimal.prototype.remainder = remainder; - BigDecimal.prototype.subtract = subtract; - BigDecimal.prototype.equals = equals; - BigDecimal.prototype.format = format; - BigDecimal.prototype.intValueExact = intValueExact; - BigDecimal.prototype.movePointLeft = movePointLeft; - BigDecimal.prototype.movePointRight = movePointRight; - BigDecimal.prototype.scale = scale; - BigDecimal.prototype.setScale = setScale; - BigDecimal.prototype.signum = signum; - BigDecimal.prototype.toString = toString; - BigDecimal.prototype.layout = layout; - BigDecimal.prototype.intcheck = intcheck; - BigDecimal.prototype.dodivide = dodivide; - BigDecimal.prototype.bad = bad; - BigDecimal.prototype.badarg = badarg; - BigDecimal.prototype.extend = extend; - BigDecimal.prototype.byteaddsub = byteaddsub; - BigDecimal.prototype.diginit = diginit; - BigDecimal.prototype.clone = clone; - BigDecimal.prototype.checkdigits = checkdigits; - BigDecimal.prototype.round = round; - BigDecimal.prototype.allzero = allzero; - BigDecimal.prototype.finish = finish; - - // Convenience methods - BigDecimal.prototype.isGreaterThan = isGreaterThan; - BigDecimal.prototype.isLessThan = isLessThan; - BigDecimal.prototype.isGreaterThanOrEqualTo = isGreaterThanOrEqualTo; - BigDecimal.prototype.isLessThanOrEqualTo = isLessThanOrEqualTo; - BigDecimal.prototype.isPositive = isPositive; - BigDecimal.prototype.isNegative = isNegative; - BigDecimal.prototype.isZero = isZero; - - - /* ----- Constants ----- */ - /* properties constant public */ // useful to others - // the rounding modes (copied here for upwards compatibility) - /** - * Rounding mode to round to a more positive number. - * @see MathContext#ROUND_CEILING - * @stable ICU 2.0 - */ - //--public static final int ROUND_CEILING=com.ibm.icu.math.MathContext.ROUND_CEILING; - BigDecimal.ROUND_CEILING = BigDecimal.prototype.ROUND_CEILING = MathContext.prototype.ROUND_CEILING; - - /** - * Rounding mode to round towards zero. - * @see MathContext#ROUND_DOWN - * @stable ICU 2.0 - */ - //--public static final int ROUND_DOWN=com.ibm.icu.math.MathContext.ROUND_DOWN; - BigDecimal.ROUND_DOWN = BigDecimal.prototype.ROUND_DOWN = MathContext.prototype.ROUND_DOWN; - - /** - * Rounding mode to round to a more negative number. - * @see MathContext#ROUND_FLOOR - * @stable ICU 2.0 - */ - //--public static final int ROUND_FLOOR=com.ibm.icu.math.MathContext.ROUND_FLOOR; - BigDecimal.ROUND_FLOOR = BigDecimal.prototype.ROUND_FLOOR = MathContext.prototype.ROUND_FLOOR; - - /** - * Rounding mode to round to nearest neighbor, where an equidistant - * value is rounded down. - * @see MathContext#ROUND_HALF_DOWN - * @stable ICU 2.0 - */ - //--public static final int ROUND_HALF_DOWN=com.ibm.icu.math.MathContext.ROUND_HALF_DOWN; - BigDecimal.ROUND_HALF_DOWN = BigDecimal.prototype.ROUND_HALF_DOWN = MathContext.prototype.ROUND_HALF_DOWN; - - /** - * Rounding mode to round to nearest neighbor, where an equidistant - * value is rounded to the nearest even neighbor. - * @see MathContext#ROUND_HALF_EVEN - * @stable ICU 2.0 - */ - //--public static final int ROUND_HALF_EVEN=com.ibm.icu.math.MathContext.ROUND_HALF_EVEN; - BigDecimal.ROUND_HALF_EVEN = BigDecimal.prototype.ROUND_HALF_EVEN = MathContext.prototype.ROUND_HALF_EVEN; - - /** - * Rounding mode to round to nearest neighbor, where an equidistant - * value is rounded up. - * @see MathContext#ROUND_HALF_UP - * @stable ICU 2.0 - */ - //--public static final int ROUND_HALF_UP=com.ibm.icu.math.MathContext.ROUND_HALF_UP; - BigDecimal.ROUND_HALF_UP = BigDecimal.prototype.ROUND_HALF_UP = MathContext.prototype.ROUND_HALF_UP; - - /** - * Rounding mode to assert that no rounding is necessary. - * @see MathContext#ROUND_UNNECESSARY - * @stable ICU 2.0 - */ - //--public static final int ROUND_UNNECESSARY=com.ibm.icu.math.MathContext.ROUND_UNNECESSARY; - BigDecimal.ROUND_UNNECESSARY = BigDecimal.prototype.ROUND_UNNECESSARY = MathContext.prototype.ROUND_UNNECESSARY; - - /** - * Rounding mode to round away from zero. - * @see MathContext#ROUND_UP - * @stable ICU 2.0 - */ - //--public static final int ROUND_UP=com.ibm.icu.math.MathContext.ROUND_UP; - BigDecimal.ROUND_UP = BigDecimal.prototype.ROUND_UP = MathContext.prototype.ROUND_UP; - - /* properties constant private */ // locals - //--private static final byte ispos=1; // ind: indicates positive (must be 1) - //--private static final byte iszero=0; // ind: indicates zero (must be 0) - //--private static final byte isneg=-1; // ind: indicates negative (must be -1) - BigDecimal.prototype.ispos = 1; - BigDecimal.prototype.iszero = 0; - BigDecimal.prototype.isneg = -1; - // [later could add NaN, +/- infinity, here] - - //--private static final int MinExp=-999999999; // minimum exponent allowed - //--private static final int MaxExp=999999999; // maximum exponent allowed - //--private static final int MinArg=-999999999; // minimum argument integer - //--private static final int MaxArg=999999999; // maximum argument integer - BigDecimal.prototype.MinExp=-999999999; // minimum exponent allowed - BigDecimal.prototype.MaxExp=999999999; // maximum exponent allowed - BigDecimal.prototype.MinArg=-999999999; // minimum argument integer - BigDecimal.prototype.MaxArg=999999999; // maximum argument integer - - //--private static final com.ibm.icu.math.MathContext plainMC=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN); // context for plain unlimited math - BigDecimal.prototype.plainMC=new MathContext(0, MathContext.prototype.PLAIN); - - /* properties constant private unused */ // present but not referenced - - // Serialization version - //--private static final long serialVersionUID=8245355804974198832L; - - //--private static final java.lang.String copyright=" Copyright (c) IBM Corporation 1996, 2000. All rights reserved. "; - - /* properties static private */ - // Precalculated constant arrays (used by byteaddsub) - //--private static byte bytecar[]=new byte[(90+99)+1]; // carry/borrow array - //--private static byte bytedig[]=diginit(); // next digit array - BigDecimal.prototype.bytecar = new Array((90+99)+1); - BigDecimal.prototype.bytedig = diginit(); - - /** - * The BigDecimal constant "0". - * - * @see #ONE - * @see #TEN - * @stable ICU 2.0 - */ - //--public static final com.ibm.icu.math.BigDecimal ZERO=new com.ibm.icu.math.BigDecimal((long)0); // use long as we want the int constructor - // .. to be able to use this, for speed -BigDecimal.ZERO = BigDecimal.prototype.ZERO = new BigDecimal("0"); - - /** - * The BigDecimal constant "1". - * - * @see #TEN - * @see #ZERO - * @stable ICU 2.0 - */ - //--public static final com.ibm.icu.math.BigDecimal ONE=new com.ibm.icu.math.BigDecimal((long)1); // use long as we want the int constructor - // .. to be able to use this, for speed -BigDecimal.ONE = BigDecimal.prototype.ONE = new BigDecimal("1"); - - /** - * The BigDecimal constant "10". - * - * @see #ONE - * @see #ZERO - * @stable ICU 2.0 - */ - //--public static final com.ibm.icu.math.BigDecimal TEN=new com.ibm.icu.math.BigDecimal(10); - BigDecimal.TEN = BigDecimal.prototype.TEN = new BigDecimal("10"); - - /* ----- Instance properties [all private and immutable] ----- */ - /* properties private */ - - /** - * The indicator. This may take the values: - *

          - *
        • ispos -- the number is positive - *
        • iszero -- the number is zero - *
        • isneg -- the number is negative - *
        - * - * @serial - */ - //--private byte ind; // assumed undefined - // Note: some code below assumes IND = Sign [-1, 0, 1], at present. - // We only need two bits for this, but use a byte [also permits - // smooth future extension]. - - /** - * The formatting style. This may take the values: - *
          - *
        • MathContext.PLAIN -- no exponent needed - *
        • MathContext.SCIENTIFIC -- scientific notation required - *
        • MathContext.ENGINEERING -- engineering notation required - *
        - *

        - * This property is an optimization; it allows us to defer number - * layout until it is actually needed as a string, hence avoiding - * unnecessary formatting. - * - * @serial - */ - //--private byte form=(byte)com.ibm.icu.math.MathContext.PLAIN; // assumed PLAIN - // We only need two bits for this, at present, but use a byte - // [again, to allow for smooth future extension] - - /** - * The value of the mantissa. - *

        - * Once constructed, this may become shared between several BigDecimal - * objects, so must not be altered. - *

        - * For efficiency (speed), this is a byte array, with each byte - * taking a value of 0 -> 9. - *

        - * If the first byte is 0 then the value of the number is zero (and - * mant.length=1, except when constructed from a plain number, for - * example, 0.000). - * - * @serial - */ - //--private byte mant[]; // assumed null - - /** - * The exponent. - *

        - * For fixed point arithmetic, scale is -exp, and can - * apply to zero. - * - * Note that this property can have a value less than MinExp when - * the mantissa has more than one digit. - * - * @serial - */ - //--private int exp; - // assumed 0 - - /* ---------------------------------------------------------------- */ - /* Constructors */ - /* ---------------------------------------------------------------- */ - - /** - * Constructs a BigDecimal object from a - * java.math.BigDecimal. - *

        - * Constructs a BigDecimal as though the parameter had - * been represented as a String (using its - * toString method) and the - * {@link #BigDecimal(java.lang.String)} constructor had then been - * used. - * The parameter must not be null. - *

        - * (Note: this constructor is provided only in the - * com.ibm.icu.math version of the BigDecimal class. - * It would not be present in a java.math version.) - * - * @param bd The BigDecimal to be translated. - * @stable ICU 2.0 - */ - - //--public BigDecimal(java.math.BigDecimal bd){ - //-- this(bd.toString()); - //-- return;} - - /** - * Constructs a BigDecimal object from a - * BigInteger, with scale 0. - *

        - * Constructs a BigDecimal which is the exact decimal - * representation of the BigInteger, with a scale of - * zero. - * The value of the BigDecimal is identical to the value - * of the BigInteger. - * The parameter must not be null. - *

        - * The BigDecimal will contain only decimal digits, - * prefixed with a leading minus sign (hyphen) if the - * BigInteger is negative. A leading zero will be - * present only if the BigInteger is zero. - * - * @param bi The BigInteger to be converted. - * @stable ICU 2.0 - */ - - //--public BigDecimal(java.math.BigInteger bi){ - //-- this(bi.toString(10)); - //-- return;} - // exp remains 0 - - /** - * Constructs a BigDecimal object from a - * BigInteger and a scale. - *

        - * Constructs a BigDecimal which is the exact decimal - * representation of the BigInteger, scaled by the - * second parameter, which may not be negative. - * The value of the BigDecimal is the - * BigInteger divided by ten to the power of the scale. - * The BigInteger parameter must not be - * null. - *

        - * The BigDecimal will contain only decimal digits, (with - * an embedded decimal point followed by scale decimal - * digits if the scale is positive), prefixed with a leading minus - * sign (hyphen) if the BigInteger is negative. A - * leading zero will be present only if the BigInteger is - * zero. - * - * @param bi The BigInteger to be converted. - * @param scale The int specifying the scale. - * @throws NumberFormatException if the scale is negative. - * @stable ICU 2.0 - */ - - //--public BigDecimal(java.math.BigInteger bi,int scale){ - //-- this(bi.toString(10)); - //-- if (scale<0) - //-- throw new java.lang.NumberFormatException("Negative scale:"+" "+scale); - //-- exp=(int)-scale; // exponent is -scale - //-- return;} - - /** - * Constructs a BigDecimal object from an array of characters. - *

        - * Constructs a BigDecimal as though a - * String had been constructed from the character array - * and the {@link #BigDecimal(java.lang.String)} constructor had then - * been used. The parameter must not be null. - *

        - * Using this constructor is faster than using the - * BigDecimal(String) constructor if the string is - * already available in character array form. - * - * @param inchars The char[] array containing the number - * to be converted. - * @throws NumberFormatException if the parameter is not a valid - * number. - * @stable ICU 2.0 - */ - - //--public BigDecimal(char inchars[]){ - //-- this(inchars,0,inchars.length); - //-- return;} - - /** - * Constructs a BigDecimal object from an array of characters. - *

        - * Constructs a BigDecimal as though a - * String had been constructed from the character array - * (or a subarray of that array) and the - * {@link #BigDecimal(java.lang.String)} constructor had then been - * used. The first parameter must not be null, and the - * subarray must be wholly contained within it. - *

        - * Using this constructor is faster than using the - * BigDecimal(String) constructor if the string is - * already available within a character array. - * - * @param inchars The char[] array containing the number - * to be converted. - * @param offset The int offset into the array of the - * start of the number to be converted. - * @param length The int length of the number. - * @throws NumberFormatException if the parameter is not a valid - * number for any reason. - * @stable ICU 2.0 - */ - - //--public BigDecimal(char inchars[],int offset,int length){super(); - function BigDecimal() { - //-- members - this.ind = 0; - this.form = MathContext.prototype.PLAIN; - this.mant = null; - this.exp = 0; - - //-- overloaded ctor - if (BigDecimal.arguments.length == 0) - return; - var inchars; - var offset; - var length; - if (BigDecimal.arguments.length == 1) - { - inchars = BigDecimal.arguments[0]; - offset = 0; - length = inchars.length; - } - else - { - inchars = BigDecimal.arguments[0]; - offset = BigDecimal.arguments[1]; - length = BigDecimal.arguments[2]; - } - if (typeof inchars == "string") - { - inchars = inchars.split(""); - } - - //--boolean exotic; - var exotic; - //--boolean hadexp; - var hadexp; - //--int d; - var d; - //--int dotoff; - var dotoff; - //--int last; - var last; - //--int i=0; - var i=0; - //--char si=0; - var si=0; - //--boolean eneg=false; - var eneg=false; - //--int k=0; - var k=0; - //--int elen=0; - var elen=0; - //--int j=0; - var j=0; - //--char sj=0; - var sj=0; - //--int dvalue=0; - var dvalue=0; - //--int mag=0; - var mag=0; - // This is the primary constructor; all incoming strings end up - // here; it uses explicit (inline) parsing for speed and to avoid - // generating intermediate (temporary) objects of any kind. - // 1998.06.25: exponent form built only if E/e in string - // 1998.06.25: trailing zeros not removed for zero - // 1999.03.06: no embedded blanks; allow offset and length - if (length<=0) - this.bad("BigDecimal(): ", inchars); // bad conversion (empty string) - // [bad offset will raise array bounds exception] - - /* Handle and step past sign */ - this.ind=this.ispos; // assume positive - if (inchars[0]==('-')) - { - length--; - if (length==0) - this.bad("BigDecimal(): ", inchars); // nothing after sign - this.ind=this.isneg; - offset++; - } - else - if (inchars[0]==('+')) - { - length--; - if (length==0) - this.bad("BigDecimal(): ", inchars); // nothing after sign - offset++; - } - - /* We're at the start of the number */ - exotic=false; // have extra digits - hadexp=false; // had explicit exponent - d=0; // count of digits found - dotoff=-1; // offset where dot was found - last=-1; // last character of mantissa - {var $1=length;i=offset;i:for(;$1>0;$1--,i++){ - si=inchars[i]; - if (si>='0') // test for Arabic digit - if (si<='9') - { - last=i; - d++; // still in mantissa - continue i; - } - if (si=='.') - { // record and ignore - if (dotoff>=0) - this.bad("BigDecimal(): ", inchars); // two dots - dotoff=i-offset; // offset into mantissa - continue i; - } - if (si!='e') - if (si!='E') - { // expect an extra digit - if (si<'0' || si>'9') - this.bad("BigDecimal(): ", inchars); // not a number - // defer the base 10 check until later to avoid extra method call - exotic=true; // will need conversion later - last=i; - d++; // still in mantissa - continue i; - } - /* Found 'e' or 'E' -- now process explicit exponent */ - // 1998.07.11: sign no longer required - if ((i-offset)>(length-2)) - this.bad("BigDecimal(): ", inchars); // no room for even one digit - eneg=false; - if ((inchars[i+1])==('-')) - { - eneg=true; - k=i+2; - } - else - if ((inchars[i+1])==('+')) - k=i+2; - else - k=i+1; - // k is offset of first expected digit - elen=length-((k-offset)); // possible number of digits - if ((elen==0)||(elen>9)) - this.bad("BigDecimal(): ", inchars); // 0 or more than 9 digits - {var $2=elen;j=k;j:for(;$2>0;$2--,j++){ - sj=inchars[j]; - if (sj<'0') - this.bad("BigDecimal(): ", inchars); // always bad - if (sj>'9') - { // maybe an exotic digit - /*if (si<'0' || si>'9') - this.bad(inchars); // not a number - dvalue=java.lang.Character.digit(sj,10); // check base - if (dvalue<0) - bad(inchars); // not base 10*/ - this.bad("BigDecimal(): ", inchars); - } - else - dvalue=sj-'0'; - this.exp=(this.exp*10)+dvalue; - } - }/*j*/ - if (eneg) - this.exp=-this.exp; // was negative - hadexp=true; // remember we had one - break i; // we are done - } - }/*i*/ - - /* Here when all inspected */ - if (d==0) - this.bad("BigDecimal(): ", inchars); // no mantissa digits - if (dotoff>=0) - this.exp=(this.exp+dotoff)-d; // adjust exponent if had dot - - /* strip leading zeros/dot (leave final if all 0's) */ - {var $3=last-1;i=offset;i:for(;i<=$3;i++){ - si=inchars[i]; - if (si=='0') - { - offset++; - dotoff--; - d--; - } - else - if (si=='.') - { - offset++; // step past dot - dotoff--; - } - else - if (si<='9') - break i;/* non-0 */ - else - {/* exotic */ - //if ((java.lang.Character.digit(si,10))!=0) - break i; // non-0 or bad - // is 0 .. strip like '0' - //offset++; - //dotoff--; - //d--; - } - } - }/*i*/ - - /* Create the mantissa array */ - this.mant=new Array(d); // we know the length - j=offset; // input offset - if (exotic) - {exotica:do{ // slow: check for exotica - {var $4=d;i=0;i:for(;$4>0;$4--,i++){ - if (i==dotoff) - j++; // at dot - sj=inchars[j]; - if (sj<='9') - this.mant[i]=sj-'0';/* easy */ - else - { - //dvalue=java.lang.Character.digit(sj,10); - //if (dvalue<0) - this.bad("BigDecimal(): ", inchars); // not a number after all - //mant[i]=(byte)dvalue; - } - j++; - } - }/*i*/ - }while(false);}/*exotica*/ - else - {simple:do{ - {var $5=d;i=0;i:for(;$5>0;$5--,i++){ - if (i==dotoff) - j++; - this.mant[i]=inchars[j]-'0'; - j++; - } - }/*i*/ - }while(false);}/*simple*/ - - /* Looks good. Set the sign indicator and form, as needed. */ - // Trailing zeros are preserved - // The rule here for form is: - // If no E-notation, then request plain notation - // Otherwise act as though add(0,DEFAULT) and request scientific notation - // [form is already PLAIN] - if (this.mant[0]==0) - { - this.ind=this.iszero; // force to show zero - // negative exponent is significant (e.g., -3 for 0.000) if plain - if (this.exp>0) - this.exp=0; // positive exponent can be ignored - if (hadexp) - { // zero becomes single digit from add - this.mant=this.ZERO.mant; - this.exp=0; - } - } - else - { // non-zero - // [ind was set earlier] - // now determine form - if (hadexp) - { - this.form=MathContext.prototype.SCIENTIFIC; - // 1999.06.29 check for overflow - mag=(this.exp+this.mant.length)-1; // true exponent in scientific notation - if ((magthis.MaxExp)) - this.bad("BigDecimal(): ", inchars); - } - } - // say 'BD(c[]): mant[0] mantlen exp ind form:' mant[0] mant.length exp ind form - return; - } - - /** - * Constructs a BigDecimal object directly from a - * double. - *

        - * Constructs a BigDecimal which is the exact decimal - * representation of the 64-bit signed binary floating point - * parameter. - *

        - * Note that this constructor it an exact conversion; it does not give - * the same result as converting num to a - * String using the Double.toString() method - * and then using the {@link #BigDecimal(java.lang.String)} - * constructor. - * To get that result, use the static {@link #valueOf(double)} - * method to construct a BigDecimal from a - * double. - * - * @param num The double to be converted. - * @throws NumberFormatException if the parameter is infinite or - * not a number. - * @stable ICU 2.0 - */ - - //--public BigDecimal(double num){ - //-- // 1999.03.06: use exactly the old algorithm - //-- // 2000.01.01: note that this constructor does give an exact result, - //-- // so perhaps it should not be deprecated - //-- // 2000.06.18: no longer deprecated - //-- this((new java.math.BigDecimal(num)).toString()); - //-- return;} - - /** - * Constructs a BigDecimal object directly from a - * int. - *

        - * Constructs a BigDecimal which is the exact decimal - * representation of the 32-bit signed binary integer parameter. - * The BigDecimal will contain only decimal digits, - * prefixed with a leading minus sign (hyphen) if the parameter is - * negative. - * A leading zero will be present only if the parameter is zero. - * - * @param num The int to be converted. - * @stable ICU 2.0 - */ - - //--public BigDecimal(int num){super(); - //-- int mun; - //-- int i=0; - //-- // We fastpath commoners - //-- if (num<=9) - //-- if (num>=(-9)) - //-- {singledigit:do{ - //-- // very common single digit case - //-- {/*select*/ - //-- if (num==0) - //-- { - //-- mant=ZERO.mant; - //-- ind=iszero; - //-- } - //-- else if (num==1) - //-- { - //-- mant=ONE.mant; - //-- ind=ispos; - //-- } - //-- else if (num==(-1)) - //-- { - //-- mant=ONE.mant; - //-- ind=isneg; - //-- } - //-- else{ - //-- { - //-- mant=new byte[1]; - //-- if (num>0) - //-- { - //-- mant[0]=(byte)num; - //-- ind=ispos; - //-- } - //-- else - //-- { // num<-1 - //-- mant[0]=(byte)((int)-num); - //-- ind=isneg; - //-- } - //-- } - //-- } - //-- } - //-- return; - //-- }while(false);}/*singledigit*/ - //-- - //-- /* We work on negative numbers so we handle the most negative number */ - //-- if (num>0) - //-- { - //-- ind=ispos; - //-- num=(int)-num; - //-- } - //-- else - //-- ind=isneg;/* negative */ // [0 case already handled] - //-- // [it is quicker, here, to pre-calculate the length with - //-- // one loop, then allocate exactly the right length of byte array, - //-- // then re-fill it with another loop] - //-- mun=num; // working copy - //-- {i=9;i:for(;;i--){ - //-- mun=mun/10; - //-- if (mun==0) - //-- break i; - //-- } - //-- }/*i*/ - //-- // i is the position of the leftmost digit placed - //-- mant=new byte[10-i]; - //-- {i=(10-i)-1;i:for(;;i--){ - //-- mant[i]=(byte)-(((byte)(num%10))); - //-- num=num/10; - //-- if (num==0) - //-- break i; - //-- } - //-- }/*i*/ - //-- return; - //-- } - - /** - * Constructs a BigDecimal object directly from a - * long. - *

        - * Constructs a BigDecimal which is the exact decimal - * representation of the 64-bit signed binary integer parameter. - * The BigDecimal will contain only decimal digits, - * prefixed with a leading minus sign (hyphen) if the parameter is - * negative. - * A leading zero will be present only if the parameter is zero. - * - * @param num The long to be converted. - * @stable ICU 2.0 - */ - - //--public BigDecimal(long num){super(); - //-- long mun; - //-- int i=0; - //-- // Not really worth fastpathing commoners in this constructor [also, - //-- // we use this to construct the static constants]. - //-- // This is much faster than: this(String.valueOf(num).toCharArray()) - //-- /* We work on negative num so we handle the most negative number */ - //-- if (num>0) - //-- { - //-- ind=ispos; - //-- num=(long)-num; - //-- } - //-- else - //-- if (num==0) - //-- ind=iszero; - //-- else - //-- ind=isneg;/* negative */ - //-- mun=num; - //-- {i=18;i:for(;;i--){ - //-- mun=mun/10; - //-- if (mun==0) - //-- break i; - //-- } - //-- }/*i*/ - //-- // i is the position of the leftmost digit placed - //-- mant=new byte[19-i]; - //-- {i=(19-i)-1;i:for(;;i--){ - //-- mant[i]=(byte)-(((byte)(num%10))); - //-- num=num/10; - //-- if (num==0) - //-- break i; - //-- } - //-- }/*i*/ - //-- return; - //-- } - - /** - * Constructs a BigDecimal object from a String. - *

        - * Constructs a BigDecimal from the parameter, which must - * not be null and must represent a valid number, - * as described formally in the documentation referred to - * {@link BigDecimal above}. - *

        - * In summary, numbers in String form must have at least - * one digit, may have a leading sign, may have a decimal point, and - * exponential notation may be used. They follow conventional syntax, - * and may not contain blanks. - *

        - * Some valid strings from which a BigDecimal might - * be constructed are: - *

        -  *       "0"         -- Zero
        -  *      "12"         -- A whole number
        -  *     "-76"         -- A signed whole number
        -  *      "12.70"      -- Some decimal places
        -  *     "+0.003"      -- Plus sign is allowed
        -  *      "17."        -- The same as 17
        -  *        ".5"       -- The same as 0.5
        -  *      "4E+9"       -- Exponential notation
        -  *       "0.73e-7"   -- Exponential notation
        -  * 
        - *

        - * (Exponential notation means that the number includes an optional - * sign and a power of ten following an 'E' that - * indicates how the decimal point will be shifted. Thus the - * "4E+9" above is just a short way of writing - * 4000000000, and the "0.73e-7" is short - * for 0.000000073.) - *

        - * The BigDecimal constructed from the String is in a - * standard form, with no blanks, as though the - * {@link #add(BigDecimal)} method had been used to add zero to the - * number with unlimited precision. - * If the string uses exponential notation (that is, includes an - * e or an E), then the - * BigDecimal number will be expressed in scientific - * notation (where the power of ten is adjusted so there is a single - * non-zero digit to the left of the decimal point); in this case if - * the number is zero then it will be expressed as the single digit 0, - * and if non-zero it will have an exponent unless that exponent would - * be 0. The exponent must fit in nine digits both before and after it - * is expressed in scientific notation. - *

        - * Any digits in the parameter must be decimal; that is, - * Character.digit(c, 10) (where c is the - * character in question) would not return -1. - * - * @param string The String to be converted. - * @throws NumberFormatException if the parameter is not a valid - * number. - * @stable ICU 2.0 - */ - - //--public BigDecimal(java.lang.String string){ - //-- this(string.toCharArray(),0,string.length()); - //-- return;} - - /* Make a default BigDecimal object for local use. */ - - //--private BigDecimal(){super(); - //-- return; - //-- } - - /* ---------------------------------------------------------------- */ - /* Operator methods [methods which take a context parameter] */ - /* ---------------------------------------------------------------- */ - - /** - * Returns a plain BigDecimal whose value is the absolute - * value of this BigDecimal. - *

        - * The same as {@link #abs(MathContext)}, where the context is - * new MathContext(0, MathContext.PLAIN). - *

        - * The length of the decimal part (the scale) of the result will - * be this.scale() - * - * @return A BigDecimal whose value is the absolute - * value of this BigDecimal. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal abs(){ - //- return this.abs(plainMC); - //- } - - /** - * Returns a BigDecimal whose value is the absolute value - * of this BigDecimal. - *

        - * If the current object is zero or positive, then the same result as - * invoking the {@link #plus(MathContext)} method with the same - * parameter is returned. - * Otherwise, the same result as invoking the - * {@link #negate(MathContext)} method with the same parameter is - * returned. - * - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is the absolute - * value of this BigDecimal. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal abs(com.ibm.icu.math.MathContext set){ - function abs() { - var set; - if (abs.arguments.length == 1) - { - set = abs.arguments[0]; - } - else if (abs.arguments.length == 0) - { - set = this.plainMC; - } - else - { - throw "abs(): " + abs.arguments.length + " arguments given; expected 0 or 1"; - } - if (this.ind==this.isneg) - return this.negate(set); - return this.plus(set); - } - - /** - * Returns a plain BigDecimal whose value is - * this+rhs, using fixed point arithmetic. - *

        - * The same as {@link #add(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - *

        - * The length of the decimal part (the scale) of the result will be - * the maximum of the scales of the two operands. - * - * @param rhs The BigDecimal for the right hand side of - * the addition. - * @return A BigDecimal whose value is - * this+rhs, using fixed point arithmetic. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.add(rhs,plainMC); - //-- } - - /** - * Returns a BigDecimal whose value is this+rhs. - *

        - * Implements the addition (+) operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - * - * @param rhs The BigDecimal for the right hand side of - * the addition. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * this+rhs. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal add(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function add() { - var set; - if (add.arguments.length == 2) - { - set = add.arguments[1]; - } - else if (add.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "add(): " + add.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = add.arguments[0]; - //--com.ibm.icu.math.BigDecimal lhs; - var lhs; - //--int reqdig; - var reqdig; - //--com.ibm.icu.math.BigDecimal res; - var res; - //--byte usel[]; - var usel; - //--int usellen; - var usellen; - //--byte user[]; - var user; - //--int userlen; - var userlen; - //--int newlen=0; - var newlen=0; - //--int tlen=0; - var tlen=0; - //--int mult=0; - var mult=0; - //--byte t[]=null; - var t=null; - //--int ia=0; - var ia=0; - //--int ib=0; - var ib=0; - //--int ea=0; - var ea=0; - //int eb=0; - var eb=0; - //byte ca=0; - var ca=0; - //--byte cb=0; - var cb=0; - /* determine requested digits and form */ - if (set.lostDigits) - this.checkdigits(rhs,set.digits); - lhs=this; // name for clarity and proxy - - /* Quick exit for add floating 0 */ - // plus() will optimize to return same object if possible - if (lhs.ind==0) - if (set.form!=MathContext.prototype.PLAIN) - return rhs.plus(set); - if (rhs.ind==0) - if (set.form!=MathContext.prototype.PLAIN) - return lhs.plus(set); - - /* Prepare numbers (round, unless unlimited precision) */ - reqdig=set.digits; // local copy (heavily used) - if (reqdig>0) - { - if (lhs.mant.length>reqdig) - lhs=this.clone(lhs).round(set); - if (rhs.mant.length>reqdig) - rhs=this.clone(rhs).round(set); - // [we could reuse the new LHS for result in this case] - } - - res=new BigDecimal(); // build result here - - /* Now see how much we have to pad or truncate lhs or rhs in order - to align the numbers. If one number is much larger than the - other, then the smaller cannot affect the answer [but we may - still need to pad with up to DIGITS trailing zeros]. */ - // Note sign may be 0 if digits (reqdig) is 0 - // usel and user will be the byte arrays passed to the adder; we'll - // use them on all paths except quick exits - usel=lhs.mant; - usellen=lhs.mant.length; - user=rhs.mant; - userlen=rhs.mant.length; - {padder:do{/*select*/ - if (lhs.exp==rhs.exp) - {/* no padding needed */ - // This is the most common, and fastest, path - res.exp=lhs.exp; - } - else if (lhs.exp>rhs.exp) - { // need to pad lhs and/or truncate rhs - newlen=(usellen+lhs.exp)-rhs.exp; - /* If, after pad, lhs would be longer than rhs by digits+1 or - more (and digits>0) then rhs cannot affect answer, so we only - need to pad up to a length of DIGITS+1. */ - if (newlen>=((userlen+reqdig)+1)) - if (reqdig>0) - { - // LHS is sufficient - res.mant=usel; - res.exp=lhs.exp; - res.ind=lhs.ind; - if (usellen(reqdig+1)) - if (reqdig>0) - { - // LHS will be max; RHS truncated - tlen=(newlen-reqdig)-1; // truncation length - userlen=userlen-tlen; - res.exp=res.exp+tlen; - newlen=reqdig+1; - } - if (newlen>usellen) - usellen=newlen; // need to pad LHS - } - else{ // need to pad rhs and/or truncate lhs - newlen=(userlen+rhs.exp)-lhs.exp; - if (newlen>=((usellen+reqdig)+1)) - if (reqdig>0) - { - // RHS is sufficient - res.mant=user; - res.exp=rhs.exp; - res.ind=rhs.ind; - if (userlen(reqdig+1)) - if (reqdig>0) - { - // RHS will be max; LHS truncated - tlen=(newlen-reqdig)-1; // truncation length - usellen=usellen-tlen; - res.exp=res.exp+tlen; - newlen=reqdig+1; - } - if (newlen>userlen) - userlen=newlen; // need to pad RHS - } - }while(false);}/*padder*/ - - /* OK, we have aligned mantissas. Now add or subtract. */ - // 1998.06.27 Sign may now be 0 [e.g., 0.000] .. treat as positive - // 1999.05.27 Allow for 00 on lhs [is not larger than 2 on rhs] - // 1999.07.10 Allow for 00 on rhs [is not larger than 2 on rhs] - if (lhs.ind==this.iszero) - res.ind=this.ispos; - else - res.ind=lhs.ind; // likely sign, all paths - if (((lhs.ind==this.isneg)?1:0)==((rhs.ind==this.isneg)?1:0)) // same sign, 0 non-negative - mult=1; - else - {signdiff:do{ // different signs, so subtraction is needed - mult=-1; // will cause subtract - /* Before we can subtract we must determine which is the larger, - as our add/subtract routine only handles non-negative results - so we may need to swap the operands. */ - {swaptest:do{/*select*/ - if (rhs.ind==this.iszero) - {} // original A bigger - else if ((usellenuserlen) - {} // original A bigger - else{ - {/* logical lengths the same */ // need compare - /* may still need to swap: compare the strings */ - ia=0; - ib=0; - ea=usel.length-1; - eb=user.length-1; - {compare:for(;;){ - if (ia<=ea) - ca=usel[ia]; - else - { - if (ib>eb) - {/* identical */ - if (set.form!=MathContext.prototype.PLAIN) - return this.ZERO; - // [if PLAIN we must do the subtract, in case of 0.000 results] - break compare; - } - ca=0; - } - if (ib<=eb) - cb=user[ib]; - else - cb=0; - if (ca!=cb) - { - if (ca B if subtracting */ - // add [A+B*1] or subtract [A+(B*-1)] - res.mant=this.byteaddsub(usel,usellen,user,userlen,mult,false); - // [reuse possible only after chop; accounting makes not worthwhile] - - // Finish() rounds before stripping leading 0's, then sets form, etc. - return res.finish(set,false); - } - - /** - * Compares this BigDecimal to another, using unlimited - * precision. - *

        - * The same as {@link #compareTo(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - * - * @param rhs The BigDecimal for the right hand side of - * the comparison. - * @return An int whose value is -1, 0, or 1 as - * this is numerically less than, equal to, - * or greater than rhs. - * @see #compareTo(Object) - * @stable ICU 2.0 - */ - - //--public int compareTo(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.compareTo(rhs,plainMC); - //-- } - - /** - * Compares this BigDecimal to another. - *

        - * Implements numeric comparison, - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns a result of type int. - *

        - * The result will be: - * - * - * - * - * - * - * - * - * - *
        -1if the current object is less than the first parameter
        0if the current object is equal to the first parameter
        1if the current object is greater than the first parameter.
        - *

        - * A {@link #compareTo(Object)} method is also provided. - * - * @param rhs The BigDecimal for the right hand side of - * the comparison. - * @param set The MathContext arithmetic settings. - * @return An int whose value is -1, 0, or 1 as - * this is numerically less than, equal to, - * or greater than rhs. - * @see #compareTo(Object) - * @stable ICU 2.0 - */ - - //public int compareTo(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function compareTo() { - var set; - if (compareTo.arguments.length == 2) - { - set = compareTo.arguments[1]; - } - else if (compareTo.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "compareTo(): " + compareTo.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = compareTo.arguments[0]; - //--int thislength=0; - var thislength=0; - //--int i=0; - var i=0; - //--com.ibm.icu.math.BigDecimal newrhs; - var newrhs; - // rhs=null will raise NullPointerException, as per Comparable interface - if (set.lostDigits) - this.checkdigits(rhs,set.digits); - // [add will recheck in slowpath cases .. but would report -rhs] - if ((this.ind==rhs.ind)&&(this.exp==rhs.exp)) - { - /* sign & exponent the same [very common] */ - thislength=this.mant.length; - if (thislengthrhs.mant.length) - return this.ind; - /* lengths are the same; we can do a straight mantissa compare - unless maybe rounding [rounding is very unusual] */ - if ((thislength<=set.digits)||(set.digits==0)) - { - {var $6=thislength;i=0;i:for(;$6>0;$6--,i++){ - if (this.mant[i]rhs.mant[i]) - return this.ind; - } - }/*i*/ - return 0; // identical - } - /* drop through for full comparison */ - } - else - { - /* More fastpaths possible */ - if (this.indrhs.ind) - return 1; - } - /* carry out a subtract to make the comparison */ - newrhs=this.clone(rhs); // safe copy - newrhs.ind=-newrhs.ind; // prepare to subtract - return this.add(newrhs,set).ind; // add, and return sign of result - } - - /** - * Returns a plain BigDecimal whose value is - * this/rhs, using fixed point arithmetic. - *

        - * The same as {@link #divide(BigDecimal, int)}, - * where the BigDecimal is rhs, - * and the rounding mode is {@link MathContext#ROUND_HALF_UP}. - * - * The length of the decimal part (the scale) of the result will be - * the same as the scale of the current object, if the latter were - * formatted without exponential notation. - * - * @param rhs The BigDecimal for the right hand side of - * the division. - * @return A plain BigDecimal whose value is - * this/rhs, using fixed point arithmetic. - * @throws ArithmeticException if rhs is zero. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.dodivide('D',rhs,plainMC,-1); - //-- } - - /** - * Returns a plain BigDecimal whose value is - * this/rhs, using fixed point arithmetic and a - * rounding mode. - *

        - * The same as {@link #divide(BigDecimal, int, int)}, - * where the BigDecimal is rhs, - * and the second parameter is this.scale(), and - * the third is round. - *

        - * The length of the decimal part (the scale) of the result will - * therefore be the same as the scale of the current object, if the - * latter were formatted without exponential notation. - *

        - * @param rhs The BigDecimal for the right hand side of - * the division. - * @param round The int rounding mode to be used for - * the division (see the {@link MathContext} class). - * @return A plain BigDecimal whose value is - * this/rhs, using fixed point arithmetic - * and the specified rounding mode. - * @throws IllegalArgumentException if round is not a - * valid rounding mode. - * @throws ArithmeticException if rhs is zero. - * @throws ArithmeticException if round is {@link - * MathContext#ROUND_UNNECESSARY} and - * this.scale() is insufficient to - * represent the result exactly. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int round){ - //-- com.ibm.icu.math.MathContext set; - //-- set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round, too] - //-- return this.dodivide('D',rhs,set,-1); // take scale from LHS - //-- } - - /** - * Returns a plain BigDecimal whose value is - * this/rhs, using fixed point arithmetic and a - * given scale and rounding mode. - *

        - * The same as {@link #divide(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * new MathContext(0, MathContext.PLAIN, false, round), - * except that the length of the decimal part (the scale) to be used - * for the result is explicit rather than being taken from - * this. - *

        - * The length of the decimal part (the scale) of the result will be - * the same as the scale of the current object, if the latter were - * formatted without exponential notation. - *

        - * @param rhs The BigDecimal for the right hand side of - * the division. - * @param scale The int scale to be used for the result. - * @param round The int rounding mode to be used for - * the division (see the {@link MathContext} class). - * @return A plain BigDecimal whose value is - * this/rhs, using fixed point arithmetic - * and the specified rounding mode. - * @throws IllegalArgumentException if round is not a - * valid rounding mode. - * @throws ArithmeticException if rhs is zero. - * @throws ArithmeticException if scale is negative. - * @throws ArithmeticException if round is {@link - * MathContext#ROUND_UNNECESSARY} and scale - * is insufficient to represent the result exactly. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,int scale,int round){ - //-- com.ibm.icu.math.MathContext set; - //-- if (scale<0) - //-- throw new java.lang.ArithmeticException("Negative scale:"+" "+scale); - //-- set=new com.ibm.icu.math.MathContext(0,com.ibm.icu.math.MathContext.PLAIN,false,round); // [checks round] - //-- return this.dodivide('D',rhs,set,scale); - //-- } - - /** - * Returns a BigDecimal whose value is this/rhs. - *

        - * Implements the division (/) operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - * - * @param rhs The BigDecimal for the right hand side of - * the division. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * this/rhs. - * @throws ArithmeticException if rhs is zero. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal divide(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function divide() { - var set; - var scale = -1; - if (divide.arguments.length == 2) - { - if (typeof divide.arguments[1] == 'number') - { - set=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[1]); // [checks round, too] - } - else - { - set = divide.arguments[1]; - } - } - else if (divide.arguments.length == 3) - { - scale = divide.arguments[1]; - if (scale<0) - throw "divide(): Negative scale: "+scale; - set=new MathContext(0,MathContext.prototype.PLAIN,false,divide.arguments[2]); // [checks round] - } - else if (divide.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "divide(): " + divide.arguments.length + " arguments given; expected between 1 and 3"; - } - var rhs = divide.arguments[0]; - return this.dodivide('D',rhs,set,scale); - } - - /** - * Returns a plain BigDecimal whose value is the integer - * part of this/rhs. - *

        - * The same as {@link #divideInteger(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - * - * @param rhs The BigDecimal for the right hand side of - * the integer division. - * @return A BigDecimal whose value is the integer - * part of this/rhs. - * @throws ArithmeticException if rhs is zero. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs){ - //-- // scale 0 to drop .000 when plain - //-- return this.dodivide('I',rhs,plainMC,0); - //-- } - - /** - * Returns a BigDecimal whose value is the integer - * part of this/rhs. - *

        - * Implements the integer division operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - * - * @param rhs The BigDecimal for the right hand side of - * the integer division. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is the integer - * part of this/rhs. - * @throws ArithmeticException if rhs is zero. - * @throws ArithmeticException if the result will not fit in the - * number of digits specified for the context. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal divideInteger(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function divideInteger() { - var set; - if (divideInteger.arguments.length == 2) - { - set = divideInteger.arguments[1]; - } - else if (divideInteger.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "divideInteger(): " + divideInteger.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = divideInteger.arguments[0]; - // scale 0 to drop .000 when plain - return this.dodivide('I',rhs,set,0); - } - - /** - * Returns a plain BigDecimal whose value is - * the maximum of this and rhs. - *

        - * The same as {@link #max(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - * - * @param rhs The BigDecimal for the right hand side of - * the comparison. - * @return A BigDecimal whose value is - * the maximum of this and rhs. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.max(rhs,plainMC); - //-- } - - /** - * Returns a BigDecimal whose value is - * the maximum of this and rhs. - *

        - * Returns the larger of the current object and the first parameter. - *

        - * If calling the {@link #compareTo(BigDecimal, MathContext)} method - * with the same parameters would return 1 or - * 0, then the result of calling the - * {@link #plus(MathContext)} method on the current object (using the - * same MathContext parameter) is returned. - * Otherwise, the result of calling the {@link #plus(MathContext)} - * method on the first parameter object (using the same - * MathContext parameter) is returned. - * - * @param rhs The BigDecimal for the right hand side of - * the comparison. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * the maximum of this and rhs. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal max(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function max() { - var set; - if (max.arguments.length == 2) - { - set = max.arguments[1]; - } - else if (max.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "max(): " + max.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = max.arguments[0]; - if ((this.compareTo(rhs,set))>=0) - return this.plus(set); - else - return rhs.plus(set); - } - - /** - * Returns a plain BigDecimal whose value is - * the minimum of this and rhs. - *

        - * The same as {@link #min(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - * - * @param rhs The BigDecimal for the right hand side of - * the comparison. - * @return A BigDecimal whose value is - * the minimum of this and rhs. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.min(rhs,plainMC); - //-- } - - /** - * Returns a BigDecimal whose value is - * the minimum of this and rhs. - *

        - * Returns the smaller of the current object and the first parameter. - *

        - * If calling the {@link #compareTo(BigDecimal, MathContext)} method - * with the same parameters would return -1 or - * 0, then the result of calling the - * {@link #plus(MathContext)} method on the current object (using the - * same MathContext parameter) is returned. - * Otherwise, the result of calling the {@link #plus(MathContext)} - * method on the first parameter object (using the same - * MathContext parameter) is returned. - * - * @param rhs The BigDecimal for the right hand side of - * the comparison. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * the minimum of this and rhs. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal min(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function min() { - var set; - if (min.arguments.length == 2) - { - set = min.arguments[1]; - } - else if (min.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "min(): " + min.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = min.arguments[0]; - if ((this.compareTo(rhs,set))<=0) - return this.plus(set); - else - return rhs.plus(set); - } - - /** - * Returns a plain BigDecimal whose value is - * this*rhs, using fixed point arithmetic. - *

        - * The same as {@link #add(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - *

        - * The length of the decimal part (the scale) of the result will be - * the sum of the scales of the operands, if they were formatted - * without exponential notation. - * - * @param rhs The BigDecimal for the right hand side of - * the multiplication. - * @return A BigDecimal whose value is - * this*rhs, using fixed point arithmetic. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.multiply(rhs,plainMC); - //-- } - - /** - * Returns a BigDecimal whose value is this*rhs. - *

        - * Implements the multiplication (*) operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - * - * @param rhs The BigDecimal for the right hand side of - * the multiplication. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * this*rhs. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal multiply(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function multiply() { - var set; - if (multiply.arguments.length == 2) - { - set = multiply.arguments[1]; - } - else if (multiply.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "multiply(): " + multiply.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = multiply.arguments[0]; - //--com.ibm.icu.math.BigDecimal lhs; - var lhs; - //--int padding; - var padding; - //--int reqdig; - var reqdig; - //--byte multer[]=null; - var multer=null; - //--byte multand[]=null; - var multand=null; - //--int multandlen; - var multandlen; - //--int acclen=0; - var acclen=0; - //--com.ibm.icu.math.BigDecimal res; - var res; - //--byte acc[]; - var acc; - //--int n=0; - var n=0; - //--byte mult=0; - var mult=0; - if (set.lostDigits) - this.checkdigits(rhs,set.digits); - lhs=this; // name for clarity and proxy - - /* Prepare numbers (truncate, unless unlimited precision) */ - padding=0; // trailing 0's to add - reqdig=set.digits; // local copy - if (reqdig>0) - { - if (lhs.mant.length>reqdig) - lhs=this.clone(lhs).round(set); - if (rhs.mant.length>reqdig) - rhs=this.clone(rhs).round(set); - // [we could reuse the new LHS for result in this case] - } - else - {/* unlimited */ - // fixed point arithmetic will want every trailing 0; we add these - // after the calculation rather than before, for speed. - if (lhs.exp>0) - padding=padding+lhs.exp; - if (rhs.exp>0) - padding=padding+rhs.exp; - } - - // For best speed, as in DMSRCN, we use the shorter number as the - // multiplier and the longer as the multiplicand. - // 1999.12.22: We used to special case when the result would fit in - // a long, but with Java 1.3 this gave no advantage. - if (lhs.mant.length9) - acclen=multandlen+1; - else - acclen=multandlen; - - /* Now the main long multiplication loop */ - res=new BigDecimal(); // where we'll build result - acc=this.createArrayWithZeros(acclen); // accumulator, all zeros - // 1998.07.01: calculate from left to right so that accumulator goes - // to likely final length on first addition; this avoids a one-digit - // extension (and object allocation) each time around the loop. - // Initial number therefore has virtual zeros added to right. - {var $7=multer.length;n=0;n:for(;$7>0;$7--,n++){ - mult=multer[n]; - if (mult!=0) - { // [optimization] - // accumulate [accumulator is reusable array] - acc=this.byteaddsub(acc,acc.length,multand,multandlen,mult,true); - } - // divide multiplicand by 10 for next digit to right - multandlen--; // 'virtual length' - } - }/*n*/ - - res.ind=lhs.ind*rhs.ind; // final sign - res.exp=(lhs.exp+rhs.exp)-padding; // final exponent - // [overflow is checked by finish] - - /* add trailing zeros to the result, if necessary */ - if (padding==0) - res.mant=acc; - else - res.mant=this.extend(acc,acc.length+padding); // add trailing 0s - return res.finish(set,false); - } - - /** - * Returns a plain BigDecimal whose value is - * -this. - *

        - * The same as {@link #negate(MathContext)}, where the context is - * new MathContext(0, MathContext.PLAIN). - *

        - * The length of the decimal part (the scale) of the result will be - * be this.scale() - * - * - * @return A BigDecimal whose value is - * -this. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal negate(){ - //-- return this.negate(plainMC); - //-- } - - /** - * Returns a BigDecimal whose value is -this. - *

        - * Implements the negation (Prefix -) operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - * - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * -this. - * @stable ICU 2.0 - */ - - //public com.ibm.icu.math.BigDecimal negate(com.ibm.icu.math.MathContext set){ - function negate() { - var set; - if (negate.arguments.length == 1) - { - set = negate.arguments[0]; - } - else if (negate.arguments.length == 0) - { - set = this.plainMC; - } - else - { - throw "negate(): " + negate.arguments.length + " arguments given; expected 0 or 1"; - } - //--com.ibm.icu.math.BigDecimal res; - var res; - // Originally called minus(), changed to matched Java precedents - // This simply clones, flips the sign, and possibly rounds - if (set.lostDigits) - this.checkdigits(null,set.digits); - res=this.clone(this); // safe copy - res.ind=-res.ind; - return res.finish(set,false); - } - - /** - * Returns a plain BigDecimal whose value is - * +this. - * Note that this is not necessarily a - * plain BigDecimal, but the result will always be. - *

        - * The same as {@link #plus(MathContext)}, where the context is - * new MathContext(0, MathContext.PLAIN). - *

        - * The length of the decimal part (the scale) of the result will be - * be this.scale() - * - * @return A BigDecimal whose value is - * +this. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal plus(){ - //-- return this.plus(plainMC); - //-- } - - /** - * Returns a BigDecimal whose value is - * +this. - *

        - * Implements the plus (Prefix +) operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - *

        - * This method is useful for rounding or otherwise applying a context - * to a decimal value. - * - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * +this. - * @stable ICU 2.0 - */ - - //public com.ibm.icu.math.BigDecimal plus(com.ibm.icu.math.MathContext set){ - function plus() { - var set; - if (plus.arguments.length == 1) - { - set = plus.arguments[0]; - } - else if (plus.arguments.length == 0) - { - set = this.plainMC; - } - else - { - throw "plus(): " + plus.arguments.length + " arguments given; expected 0 or 1"; - } - // This clones and forces the result to the new settings - // May return same object - if (set.lostDigits) - this.checkdigits(null,set.digits); - // Optimization: returns same object for some common cases - if (set.form==MathContext.prototype.PLAIN) - if (this.form==MathContext.prototype.PLAIN) - { - if (this.mant.length<=set.digits) - return this; - if (set.digits==0) - return this; - } - return this.clone(this).finish(set,false); - } - - /** - * Returns a plain BigDecimal whose value is - * this**rhs, using fixed point arithmetic. - *

        - * The same as {@link #pow(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - *

        - * The parameter is the power to which the this will be - * raised; it must be in the range 0 through 999999999, and must - * have a decimal part of zero. Note that these restrictions may be - * removed in the future, so they should not be used as a test for a - * whole number. - *

        - * In addition, the power must not be negative, as no - * MathContext is used and so the result would then - * always be 0. - * - * @param rhs The BigDecimal for the right hand side of - * the operation (the power). - * @return A BigDecimal whose value is - * this**rhs, using fixed point arithmetic. - * @throws ArithmeticException if rhs is out of range or - * is not a whole number. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.pow(rhs,plainMC); - //-- } - // The name for this method is inherited from the precedent set by the - // BigInteger and Math classes. - - /** - * Returns a BigDecimal whose value is this**rhs. - *

        - * Implements the power (**) operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - *

        - * The first parameter is the power to which the this - * will be raised; it must be in the range -999999999 through - * 999999999, and must have a decimal part of zero. Note that these - * restrictions may be removed in the future, so they should not be - * used as a test for a whole number. - *

        - * If the digits setting of the MathContext - * parameter is 0, the power must be zero or positive. - * - * @param rhs The BigDecimal for the right hand side of - * the operation (the power). - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * this**rhs. - * @throws ArithmeticException if rhs is out of range or - * is not a whole number. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal pow(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function pow() { - var set; - if (pow.arguments.length == 2) - { - set = pow.arguments[1]; - } - else if (pow.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "pow(): " + pow.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = pow.arguments[0]; - //--int n; - var n; - //--com.ibm.icu.math.BigDecimal lhs; - var lhs; - //--int reqdig; - var reqdig; - //-- int workdigits=0; - var workdigits=0; - //--int L=0; - var L=0; - //--com.ibm.icu.math.MathContext workset; - var workset; - //--com.ibm.icu.math.BigDecimal res; - var res; - //--boolean seenbit; - var seenbit; - //--int i=0; - var i=0; - if (set.lostDigits) - this.checkdigits(rhs,set.digits); - n=rhs.intcheck(this.MinArg,this.MaxArg); // check RHS by the rules - lhs=this; // clarified name - - reqdig=set.digits; // local copy (heavily used) - if (reqdig==0) - { - if (rhs.ind==this.isneg) - //--throw new java.lang.ArithmeticException("Negative power:"+" "+rhs.toString()); - throw "pow(): Negative power: " + rhs.toString(); - workdigits=0; - } - else - {/* non-0 digits */ - if ((rhs.mant.length+rhs.exp)>reqdig) - //--throw new java.lang.ArithmeticException("Too many digits:"+" "+rhs.toString()); - throw "pow(): Too many digits: " + rhs.toString(); - - /* Round the lhs to DIGITS if need be */ - if (lhs.mant.length>reqdig) - lhs=this.clone(lhs).round(set); - - /* L for precision calculation [see ANSI X3.274-1996] */ - L=rhs.mant.length+rhs.exp; // length without decimal zeros/exp - workdigits=(reqdig+L)+1; // calculate the working DIGITS - } - - /* Create a copy of set for working settings */ - // Note: no need to check for lostDigits again. - // 1999.07.17 Note: this construction must follow RHS check - workset=new MathContext(workdigits,set.form,false,set.roundingMode); - - res=this.ONE; // accumulator - if (n==0) - return res; // x**0 == 1 - if (n<0) - n=-n; // [rhs.ind records the sign] - seenbit=false; // set once we've seen a 1-bit - {i=1;i:for(;;i++){ // for each bit [top bit ignored] - //n=n+n; // shift left 1 bit - n<<=1; - if (n<0) - { // top bit is set - seenbit=true; // OK, we're off - res=res.multiply(lhs,workset); // acc=acc*x - } - if (i==31) - break i; // that was the last bit - if ((!seenbit)) - continue i; // we don't have to square 1 - res=res.multiply(res,workset); // acc=acc*acc [square] - } - }/*i*/ // 32 bits - if (rhs.ind<0) // was a **-n [hence digits>0] - res=this.ONE.divide(res,workset); // .. so acc=1/acc - return res.finish(set,true); // round and strip [original digits] - } - - /** - * Returns a plain BigDecimal whose value is - * the remainder of this/rhs, using fixed point arithmetic. - *

        - * The same as {@link #remainder(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - *

        - * This is not the modulo operator -- the result may be negative. - * - * @param rhs The BigDecimal for the right hand side of - * the remainder operation. - * @return A BigDecimal whose value is the remainder - * of this/rhs, using fixed point arithmetic. - * @throws ArithmeticException if rhs is zero. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.dodivide('R',rhs,plainMC,-1); - //-- } - - /** - * Returns a BigDecimal whose value is the remainder of - * this/rhs. - *

        - * Implements the remainder operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - *

        - * This is not the modulo operator -- the result may be negative. - * - * @param rhs The BigDecimal for the right hand side of - * the remainder operation. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is the remainder - * of this+rhs. - * @throws ArithmeticException if rhs is zero. - * @throws ArithmeticException if the integer part of the result will - * not fit in the number of digits specified for the - * context. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal remainder(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function remainder() { - var set; - if (remainder.arguments.length == 2) - { - set = remainder.arguments[1]; - } - else if (remainder.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "remainder(): " + remainder.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = remainder.arguments[0]; - return this.dodivide('R',rhs,set,-1); - } - - /** - * Returns a plain BigDecimal whose value is - * this-rhs, using fixed point arithmetic. - *

        - * The same as {@link #subtract(BigDecimal, MathContext)}, - * where the BigDecimal is rhs, - * and the context is new MathContext(0, MathContext.PLAIN). - *

        - * The length of the decimal part (the scale) of the result will be - * the maximum of the scales of the two operands. - * - * @param rhs The BigDecimal for the right hand side of - * the subtraction. - * @return A BigDecimal whose value is - * this-rhs, using fixed point arithmetic. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs){ - //-- return this.subtract(rhs,plainMC); - //-- } - - /** - * Returns a BigDecimal whose value is this-rhs. - *

        - * Implements the subtraction (-) operator - * (as defined in the decimal documentation, see {@link BigDecimal - * class header}), - * and returns the result as a BigDecimal object. - * - * @param rhs The BigDecimal for the right hand side of - * the subtraction. - * @param set The MathContext arithmetic settings. - * @return A BigDecimal whose value is - * this-rhs. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal subtract(com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set){ - function subtract() { - var set; - if (subtract.arguments.length == 2) - { - set = subtract.arguments[1]; - } - else if (subtract.arguments.length == 1) - { - set = this.plainMC; - } - else - { - throw "subtract(): " + subtract.arguments.length + " arguments given; expected 1 or 2"; - } - var rhs = subtract.arguments[0]; - //--com.ibm.icu.math.BigDecimal newrhs; - var newrhs; - if (set.lostDigits) - this.checkdigits(rhs,set.digits); - // [add will recheck .. but would report -rhs] - /* carry out the subtraction */ - // we could fastpath -0, but it is too rare. - newrhs=this.clone(rhs); // safe copy - newrhs.ind=-newrhs.ind; // prepare to subtract - return this.add(newrhs,set); // arithmetic - } - - /* ---------------------------------------------------------------- */ - /* Other methods */ - /* ---------------------------------------------------------------- */ - - /** - * Converts this BigDecimal to a byte. - * If the BigDecimal has a non-zero decimal part or is - * out of the possible range for a byte (8-bit signed - * integer) result then an ArithmeticException is thrown. - * - * @return A byte equal in value to this. - * @throws ArithmeticException if this has a non-zero - * decimal part, or will not fit in a byte. - * @stable ICU 2.0 - */ - - //--public byte byteValueExact(){ - //-- int num; - //-- num=this.intValueExact(); // will check decimal part too - //-- if ((num>127)|(num<(-128))) - //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); - //-- return (byte)num; - //-- } - - /** - * Compares this BigDecimal with the value of the parameter. - *

        - * If the parameter is null, or is not an instance of the - * BigDecimal type, an exception is thrown. - * Otherwise, the parameter is cast to type BigDecimal - * and the result of the {@link #compareTo(BigDecimal)} method, - * using the cast parameter, is returned. - *

        - * The {@link #compareTo(BigDecimal, MathContext)} method should be - * used when a MathContext is needed for the comparison. - * - * @param rhs The Object for the right hand side of - * the comparison. - * @return An int whose value is -1, 0, or 1 as - * this is numerically less than, equal to, - * or greater than rhs. - * @throws ClassCastException if rhs cannot be cast to - * a BigDecimal object. - * @see #compareTo(BigDecimal) - * @stable ICU 2.0 - */ - - //--public int compareTo(java.lang.Object rhsobj){ - //-- // the cast in the next line will raise ClassCastException if necessary - //-- return compareTo((com.ibm.icu.math.BigDecimal)rhsobj,plainMC); - //-- } - - /** - * Converts this BigDecimal to a double. - * If the BigDecimal is out of the possible range for a - * double (64-bit signed floating point) result then an - * ArithmeticException is thrown. - *

        - * The double produced is identical to result of expressing the - * BigDecimal as a String and then - * converting it using the Double(String) constructor; - * this can result in values of Double.NEGATIVE_INFINITY - * or Double.POSITIVE_INFINITY. - * - * @return A double corresponding to this. - * @stable ICU 2.0 - */ - - //--public double doubleValue(){ - //-- // We go via a String [as does BigDecimal in JDK 1.2] - //-- // Next line could possibly raise NumberFormatException - //-- return java.lang.Double.valueOf(this.toString()).doubleValue(); - //-- } - - /** - * Compares this BigDecimal with rhs for - * equality. - *

        - * If the parameter is null, or is not an instance of the - * BigDecimal type, or is not exactly equal to the current - * BigDecimal object, then false is returned. - * Otherwise, true is returned. - *

        - * "Exactly equal", here, means that the String - * representations of the BigDecimal numbers are - * identical (they have the same characters in the same sequence). - *

        - * The {@link #compareTo(BigDecimal, MathContext)} method should be - * used for more general comparisons. - * @param rhs The Object for the right hand side of - * the comparison. - * @return A boolean whose value true if and - * only if the operands have identical string representations. - * @throws ClassCastException if rhs cannot be cast to - * a BigDecimal object. - * @stable ICU 2.0 - * @see #compareTo(Object) - * @see #compareTo(BigDecimal) - * @see #compareTo(BigDecimal, MathContext) - */ - - //--public boolean equals(java.lang.Object obj){ - function equals(obj) { - //--com.ibm.icu.math.BigDecimal rhs; - var rhs; - //--int i=0; - var i=0; - //--char lca[]=null; - var lca=null; - //--char rca[]=null; - var rca=null; - // We are equal iff toString of both are exactly the same - if (obj==null) - return false; // not equal - if ((!(((obj instanceof BigDecimal))))) - return false; // not a decimal - rhs=obj; // cast; we know it will work - if (this.ind!=rhs.ind) - return false; // different signs never match - if (((this.mant.length==rhs.mant.length)&&(this.exp==rhs.exp))&&(this.form==rhs.form)) - - { // mantissas say all - // here with equal-length byte arrays to compare - {var $8=this.mant.length;i=0;i:for(;$8>0;$8--,i++){ - if (this.mant[i]!=rhs.mant[i]) - return false; - } - }/*i*/ - } - else - { // need proper layout - lca=this.layout(); // layout to character array - rca=rhs.layout(); - if (lca.length!=rca.length) - return false; // mismatch - // here with equal-length character arrays to compare - {var $9=lca.length;i=0;i:for(;$9>0;$9--,i++){ - if (lca[i]!=rca[i]) - return false; - } - }/*i*/ - } - return true; // arrays have identical content - } - - /** - * Converts this BigDecimal to a float. - * If the BigDecimal is out of the possible range for a - * float (32-bit signed floating point) result then an - * ArithmeticException is thrown. - *

        - * The float produced is identical to result of expressing the - * BigDecimal as a String and then - * converting it using the Float(String) constructor; - * this can result in values of Float.NEGATIVE_INFINITY - * or Float.POSITIVE_INFINITY. - * - * @return A float corresponding to this. - * @stable ICU 2.0 - */ - - //--public float floatValue(){ - //-- return java.lang.Float.valueOf(this.toString()).floatValue(); - //-- } - - /** - * Returns the String representation of this - * BigDecimal, modified by layout parameters. - *

        - * This method is provided as a primitive for use by more - * sophisticated classes, such as DecimalFormat, that - * can apply locale-sensitive editing of the result. The level of - * formatting that it provides is a necessary part of the BigDecimal - * class as it is sensitive to and must follow the calculation and - * rounding rules for BigDecimal arithmetic. - * However, if the function is provided elsewhere, it may be removed - * from this class. - *

        - * The parameters, for both forms of the format method - * are all of type int. - * A value of -1 for any parameter indicates that the default action - * or value for that parameter should be used. - *

        - * The parameters, before and after, - * specify the number of characters to be used for the integer part - * and decimal part of the result respectively. Exponential notation - * is not used. If either parameter is -1 (which indicates the default - * action), the number of characters used will be exactly as many as - * are needed for that part. - *

        - * before must be a positive number; if it is larger than - * is needed to contain the integer part, that part is padded on the - * left with blanks to the requested length. If before is - * not large enough to contain the integer part of the number - * (including the sign, for negative numbers) an exception is thrown. - *

        - * after must be a non-negative number; if it is not the - * same size as the decimal part of the number, the number will be - * rounded (or extended with zeros) to fit. Specifying 0 for - * after will cause the number to be rounded to an - * integer (that is, it will have no decimal part or decimal point). - * The rounding method will be the default, - * MathContext.ROUND_HALF_UP. - *

        - * Other rounding methods, and the use of exponential notation, can - * be selected by using {@link #format(int,int,int,int,int,int)}. - * Using the two-parameter form of the method has exactly the same - * effect as using the six-parameter form with the final four - * parameters all being -1. - * - * @param before The int specifying the number of places - * before the decimal point. Use -1 for 'as many as - * are needed'. - * @param after The int specifying the number of places - * after the decimal point. Use -1 for 'as many as are - * needed'. - * @return A String representing this - * BigDecimal, laid out according to the - * specified parameters - * @throws ArithmeticException if the number cannot be laid out as - * requested. - * @throws IllegalArgumentException if a parameter is out of range. - * @stable ICU 2.0 - * @see #toString - * @see #toCharArray - */ - - //--public java.lang.String format(int before,int after){ - //-- return format(before,after,-1,-1,com.ibm.icu.math.MathContext.SCIENTIFIC,ROUND_HALF_UP); - //-- } - - /** - * Returns the String representation of this - * BigDecimal, modified by layout parameters and allowing - * exponential notation. - *

        - * This method is provided as a primitive for use by more - * sophisticated classes, such as DecimalFormat, that - * can apply locale-sensitive editing of the result. The level of - * formatting that it provides is a necessary part of the BigDecimal - * class as it is sensitive to and must follow the calculation and - * rounding rules for BigDecimal arithmetic. - * However, if the function is provided elsewhere, it may be removed - * from this class. - *

        - * The parameters are all of type int. - * A value of -1 for any parameter indicates that the default action - * or value for that parameter should be used. - *

        - * The first two parameters (before and - * after) specify the number of characters to be used for - * the integer part and decimal part of the result respectively, as - * defined for {@link #format(int,int)}. - * If either of these is -1 (which indicates the default action), the - * number of characters used will be exactly as many as are needed for - * that part. - *

        - * The remaining parameters control the use of exponential notation - * and rounding. Three (explaces, exdigits, - * and exform) control the exponent part of the result. - * As before, the default action for any of these parameters may be - * selected by using the value -1. - *

        - * explaces must be a positive number; it sets the number - * of places (digits after the sign of the exponent) to be used for - * any exponent part, the default (when explaces is -1) - * being to use as many as are needed. - * If explaces is not -1, space is always reserved for - * an exponent; if one is not needed (for example, if the exponent - * will be 0) then explaces+2 blanks are appended to the - * result. - * - * If explaces is not -1 and is not large enough to - * contain the exponent, an exception is thrown. - *

        - * exdigits sets the trigger point for use of exponential - * notation. If, before any rounding, the number of places needed - * before the decimal point exceeds exdigits, or if the - * absolute value of the result is less than 0.000001, - * then exponential form will be used, provided that - * exdigits was specified. - * When exdigits is -1, exponential notation will never - * be used. If 0 is specified for exdigits, exponential - * notation is always used unless the exponent would be 0. - *

        - * exform sets the form for exponential notation (if - * needed). - * It may be either {@link MathContext#SCIENTIFIC} or - * {@link MathContext#ENGINEERING}. - * If the latter, engineering, form is requested, up to three digits - * (plus sign, if negative) may be needed for the integer part of the - * result (before). Otherwise, only one digit (plus - * sign, if negative) is needed. - *

        - * Finally, the sixth argument, exround, selects the - * rounding algorithm to be used, and must be one of the values - * indicated by a public constant in the {@link MathContext} class - * whose name starts with ROUND_. - * The default (ROUND_HALF_UP) may also be selected by - * using the value -1, as before. - *

        - * The special value MathContext.ROUND_UNNECESSARY may be - * used to detect whether non-zero digits are discarded -- if - * exround has this value than if non-zero digits would - * be discarded (rounded) during formatting then an - * ArithmeticException is thrown. - * - * @param before The int specifying the number of places - * before the decimal point. - * Use -1 for 'as many as are needed'. - * @param after The int specifying the number of places - * after the decimal point. - * Use -1 for 'as many as are needed'. - * @param explaces The int specifying the number of places - * to be used for any exponent. - * Use -1 for 'as many as are needed'. - * @param exdigits The int specifying the trigger - * (digits before the decimal point) which if - * exceeded causes exponential notation to be used. - * Use 0 to force exponential notation. - * Use -1 to force plain notation (no exponential - * notation). - * @param exform The int specifying the form of - * exponential notation to be used - * ({@link MathContext#SCIENTIFIC} or - * {@link MathContext#ENGINEERING}). - * @param exround The int specifying the rounding mode - * to use. - * Use -1 for the default, {@link MathContext#ROUND_HALF_UP}. - * @return A String representing this - * BigDecimal, laid out according to the - * specified parameters - * @throws ArithmeticException if the number cannot be laid out as - * requested. - * @throws IllegalArgumentException if a parameter is out of range. - * @see #toString - * @see #toCharArray - * @stable ICU 2.0 - */ - - //--public java.lang.String format(int before,int after,int explaces,int exdigits,int exformint,int exround){ - function format() { - var explaces; - var exdigits; - var exformint; - var exround; - if (format.arguments.length == 6) - { - explaces = format.arguments[2]; - exdigits = format.arguments[3]; - exformint = format.arguments[4]; - exround = format.arguments[5]; - } - else if (format.arguments.length == 2) - { - explaces = -1; - exdigits = -1; - exformint = MathContext.prototype.SCIENTIFIC; - exround = this.ROUND_HALF_UP; - } - else - { - throw "format(): " + format.arguments.length + " arguments given; expected 2 or 6"; - } - var before = format.arguments[0]; - var after = format.arguments[1]; - //--com.ibm.icu.math.BigDecimal num; - var num; - //--int mag=0; - var mag=0; - //--int thisafter=0; - var thisafter=0; - //--int lead=0; - var lead=0; - //--byte newmant[]=null; - var newmant=null; - //--int chop=0; - var chop=0; - //--int need=0; - var need=0; - //--int oldexp=0; - var oldexp=0; - //--char a[]; - var a; - //--int p=0; - var p=0; - //--char newa[]=null; - var newa=null; - //--int i=0; - var i=0; - //--int places=0; - var places=0; - - - /* Check arguments */ - if ((before<(-1))||(before==0)) - this.badarg("format",1,before); - if (after<(-1)) - this.badarg("format",2,after); - if ((explaces<(-1))||(explaces==0)) - this.badarg("format",3,explaces); - if (exdigits<(-1)) - this.badarg("format",4,exdigits); - {/*select*/ - if (exformint==MathContext.prototype.SCIENTIFIC) - {} - else if (exformint==MathContext.prototype.ENGINEERING) - {} - else if (exformint==(-1)) - exformint=MathContext.prototype.SCIENTIFIC; - // note PLAIN isn't allowed - else{ - this.badarg("format",5,exformint); - } - } - // checking the rounding mode is done by trying to construct a - // MathContext object with that mode; it will fail if bad - if (exround!=this.ROUND_HALF_UP) - {try{ // if non-default... - if (exround==(-1)) - exround=this.ROUND_HALF_UP; - else - new MathContext(9,MathContext.prototype.SCIENTIFIC,false,exround); - } - catch ($10){ - this.badarg("format",6,exround); - }} - - num=this.clone(this); // make private copy - - /* Here: - num is BigDecimal to format - before is places before point [>0] - after is places after point [>=0] - explaces is exponent places [>0] - exdigits is exponent digits [>=0] - exformint is exponent form [one of two] - exround is rounding mode [one of eight] - 'before' through 'exdigits' are -1 if not specified - */ - - /* determine form */ - {setform:do{/*select*/ - if (exdigits==(-1)) - num.form=MathContext.prototype.PLAIN; - else if (num.ind==this.iszero) - num.form=MathContext.prototype.PLAIN; - else{ - // determine whether triggers - mag=num.exp+num.mant.length; - if (mag>exdigits) - num.form=exformint; - else - if (mag<(-5)) - num.form=exformint; - else - num.form=MathContext.prototype.PLAIN; - } - }while(false);}/*setform*/ - - /* If 'after' was specified then we may need to adjust the - mantissa. This is a little tricky, as we must conform to the - rules of exponential layout if necessary (e.g., we cannot end up - with 10.0 if scientific). */ - if (after>=0) - {setafter:for(;;){ - // calculate the current after-length - {/*select*/ - if (num.form==MathContext.prototype.PLAIN) - thisafter=-num.exp; // has decimal part - else if (num.form==MathContext.prototype.SCIENTIFIC) - thisafter=num.mant.length-1; - else{ // engineering - lead=(((num.exp+num.mant.length)-1))%3; // exponent to use - if (lead<0) - lead=3+lead; // negative exponent case - lead++; // number of leading digits - if (lead>=num.mant.length) - thisafter=0; - else - thisafter=num.mant.length-lead; - } - } - if (thisafter==after) - break setafter; // we're in luck - if (thisafter0] - if (chop>num.mant.length) - { // all digits go, no chance of carry - // carry on with zero - num.mant=this.ZERO.mant; - num.ind=this.iszero; - num.exp=0; - continue setafter; // recheck: we may need trailing zeros - } - // we have a digit to inspect from existing mantissa - // round the number as required - need=num.mant.length-chop; // digits to end up with [may be 0] - oldexp=num.exp; // save old exponent - num.round(need,exround); - // if the exponent grew by more than the digits we chopped, then - // we must have had a carry, so will need to recheck the layout - if ((num.exp-oldexp)==chop) - break setafter; // number did not have carry - // mantissa got extended .. so go around and check again - } - }/*setafter*/ - - a=num.layout(); // lay out, with exponent if required, etc. - - /* Here we have laid-out number in 'a' */ - // now apply 'before' and 'explaces' as needed - if (before>0) - { - // look for '.' or 'E' - {var $11=a.length;p=0;p:for(;$11>0;$11--,p++){ - if (a[p]=='.') - break p; - if (a[p]=='E') - break p; - } - }/*p*/ - // p is now offset of '.', 'E', or character after end of array - // that is, the current length of before part - if (p>before) - this.badarg("format",1,before); // won't fit - if (p0;$12--,i++){ - newa[i]=' '; - } - }/*i*/ - //--java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,i,a.length); - this.arraycopy(a,0,newa,i,a.length); - a=newa; - } - // [if p=before then it's just the right length] - } - - if (explaces>0) - { - // look for 'E' [cannot be at offset 0] - {var $13=a.length-1;p=a.length-1;p:for(;$13>0;$13--,p--){ - if (a[p]=='E') - break p; - } - }/*p*/ - // p is now offset of 'E', or 0 - if (p==0) - { // no E part; add trailing blanks - newa=new Array((a.length+explaces)+2); - //--java.lang.System.arraycopy((java.lang.Object)a,0,(java.lang.Object)newa,0,a.length); - this.arraycopy(a,0,newa,0,a.length); - {var $14=explaces+2;i=a.length;i:for(;$14>0;$14--,i++){ - newa[i]=' '; - } - }/*i*/ - a=newa; - } - else - {/* found E */ // may need to insert zeros - places=(a.length-p)-2; // number so far - if (places>explaces) - this.badarg("format",3,explaces); - if (places0;$15--,i++){ - newa[i]='0'; - } - }/*i*/ - //--java.lang.System.arraycopy((java.lang.Object)a,p+2,(java.lang.Object)newa,i,places); // remainder of exponent - this.arraycopy(a,p+2,newa,i,places); - a=newa; - } - // [if places=explaces then it's just the right length] - } - } - return a.join(""); - } - - /** - * Returns the hashcode for this BigDecimal. - * This hashcode is suitable for use by the - * java.util.Hashtable class. - *

        - * Note that two BigDecimal objects are only guaranteed - * to produce the same hashcode if they are exactly equal (that is, - * the String representations of the - * BigDecimal numbers are identical -- they have the same - * characters in the same sequence). - * - * @return An int that is the hashcode for this. - * @stable ICU 2.0 - */ - - //--public int hashCode(){ - //-- // Maybe calculate ourselves, later. If so, note that there can be - //-- // more than one internal representation for a given toString() result. - //-- return this.toString().hashCode(); - //-- } - - /** - * Converts this BigDecimal to an int. - * If the BigDecimal has a non-zero decimal part it is - * discarded. If the BigDecimal is out of the possible - * range for an int (32-bit signed integer) result then - * only the low-order 32 bits are used. (That is, the number may be - * decapitated.) To avoid unexpected errors when these - * conditions occur, use the {@link #intValueExact} method. - * - * @return An int converted from this, - * truncated and decapitated if necessary. - * @stable ICU 2.0 - */ - - //--public int intValue(){ - //-- return toBigInteger().intValue(); - //-- } - - /** - * Converts this BigDecimal to an int. - * If the BigDecimal has a non-zero decimal part or is - * out of the possible range for an int (32-bit signed - * integer) result then an ArithmeticException is thrown. - * - * @return An int equal in value to this. - * @throws ArithmeticException if this has a non-zero - * decimal part, or will not fit in an - * int. - * @stable ICU 2.0 - */ - - //--public int intValueExact(){ - function intValueExact() { - //--int lodigit; - var lodigit; - //--int useexp=0; - var useexp=0; - //--int result; - var result; - //--int i=0; - var i=0; - //--int topdig=0; - var topdig=0; - // This does not use longValueExact() as the latter can be much - // slower. - // intcheck (from pow) relies on this to check decimal part - if (this.ind==this.iszero) - return 0; // easy, and quite common - /* test and drop any trailing decimal part */ - lodigit=this.mant.length-1; - if (this.exp<0) - { - lodigit=lodigit+this.exp; // reduces by -(-exp) - /* all decimal places must be 0 */ - if ((!(this.allzero(this.mant,lodigit+1)))) - throw "intValueExact(): Decimal part non-zero: " + this.toString(); - if (lodigit<0) - return 0; // -1=0 */ - if ((this.exp+lodigit)>9) // early exit - throw "intValueExact(): Conversion overflow: "+this.toString(); - useexp=this.exp; - } - /* convert the mantissa to binary, inline for speed */ - result=0; - {var $16=lodigit+useexp;i=0;i:for(;i<=$16;i++){ - result=result*10; - if (i<=lodigit) - result=result+this.mant[i]; - } - }/*i*/ - - /* Now, if the risky length, check for overflow */ - if ((lodigit+useexp)==9) - { - // note we cannot just test for -ve result, as overflow can move a - // zero into the top bit [consider 5555555555] - topdig=div(result,1000000000); // get top digit, preserving sign - if (topdig!=this.mant[0]) - { // digit must match and be positive - // except in the special case ... - if (result==-2147483648) // looks like the special - if (this.ind==this.isneg) // really was negative - if (this.mant[0]==2) - return result; // really had top digit 2 - throw "intValueExact(): Conversion overflow: "+this.toString(); - } - } - - /* Looks good */ - if (this.ind==this.ispos) - return result; - return -result; - } - - /** - * Converts this BigDecimal to a long. - * If the BigDecimal has a non-zero decimal part it is - * discarded. If the BigDecimal is out of the possible - * range for a long (64-bit signed integer) result then - * only the low-order 64 bits are used. (That is, the number may be - * decapitated.) To avoid unexpected errors when these - * conditions occur, use the {@link #longValueExact} method. - * - * @return A long converted from this, - * truncated and decapitated if necessary. - * @stable ICU 2.0 - */ - - //--public long longValue(){ - //-- return toBigInteger().longValue(); - //-- } - - /** - * Converts this BigDecimal to a long. - * If the BigDecimal has a non-zero decimal part or is - * out of the possible range for a long (64-bit signed - * integer) result then an ArithmeticException is thrown. - * - * @return A long equal in value to this. - * @throws ArithmeticException if this has a non-zero - * decimal part, or will not fit in a - * long. - * @stable ICU 2.0 - */ - - //--public long longValueExact(){ - //-- int lodigit; - //-- int cstart=0; - //-- int useexp=0; - //-- long result; - //-- int i=0; - //-- long topdig=0; - //-- // Identical to intValueExact except for result=long, and exp>=20 test - //-- if (ind==0) - //-- return 0; // easy, and quite common - //-- lodigit=mant.length-1; // last included digit - //-- if (exp<0) - //-- { - //-- lodigit=lodigit+exp; // -(-exp) - //-- /* all decimal places must be 0 */ - //-- if (lodigit<0) - //-- cstart=0; - //-- else - //-- cstart=lodigit+1; - //-- if ((!(allzero(mant,cstart)))) - //-- throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString()); - //-- if (lodigit<0) - //-- return 0; // -1=0 */ - //-- if ((exp+mant.length)>18) // early exit - //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); - //-- useexp=exp; - //-- } - //-- - //-- /* convert the mantissa to binary, inline for speed */ - //-- // note that we could safely use the 'test for wrap to negative' - //-- // algorithm here, but instead we parallel the intValueExact - //-- // algorithm for ease of checking and maintenance. - //-- result=(long)0; - //-- {int $17=lodigit+useexp;i=0;i:for(;i<=$17;i++){ - //-- result=result*10; - //-- if (i<=lodigit) - //-- result=result+mant[i]; - //-- } - //-- }/*i*/ - //-- - //-- /* Now, if the risky length, check for overflow */ - //-- if ((lodigit+useexp)==18) - //-- { - //-- topdig=result/1000000000000000000L; // get top digit, preserving sign - //-- if (topdig!=mant[0]) - //-- { // digit must match and be positive - //-- // except in the special case ... - //-- if (result==java.lang.Long.MIN_VALUE) // looks like the special - //-- if (ind==isneg) // really was negative - //-- if (mant[0]==9) - //-- return result; // really had top digit 9 - //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); - //-- } - //-- } - //-- - //-- /* Looks good */ - //-- if (ind==ispos) - //-- return result; - //-- return (long)-result; - //-- } - - /** - * Returns a plain BigDecimal whose decimal point has - * been moved to the left by a specified number of positions. - * The parameter, n, specifies the number of positions to - * move the decimal point. - * That is, if n is 0 or positive, the number returned is - * given by: - *

        - * this.multiply(TEN.pow(new BigDecimal(-n))) - * - *

        - * n may be negative, in which case the method returns - * the same result as movePointRight(-n). - * - * @param n The int specifying the number of places to - * move the decimal point leftwards. - * @return A BigDecimal derived from - * this, with the decimal point moved - * n places to the left. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal movePointLeft(int n){ - function movePointLeft(n) { - //--com.ibm.icu.math.BigDecimal res; - var res; - // very little point in optimizing for shift of 0 - res=this.clone(this); - res.exp=res.exp-n; - return res.finish(this.plainMC,false); // finish sets form and checks exponent - } - - /** - * Returns a plain BigDecimal whose decimal point has - * been moved to the right by a specified number of positions. - * The parameter, n, specifies the number of positions to - * move the decimal point. - * That is, if n is 0 or positive, the number returned is - * given by: - *

        - * this.multiply(TEN.pow(new BigDecimal(n))) - * - *

        - * n may be negative, in which case the method returns - * the same result as movePointLeft(-n). - * - * @param n The int specifying the number of places to - * move the decimal point rightwards. - * @return A BigDecimal derived from - * this, with the decimal point moved - * n places to the right. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal movePointRight(int n){ - function movePointRight(n) { - //--com.ibm.icu.math.BigDecimal res; - var res; - res=this.clone(this); - res.exp=res.exp+n; - return res.finish(this.plainMC,false); - } - - /** - * Returns the scale of this BigDecimal. - * Returns a non-negative int which is the scale of the - * number. The scale is the number of digits in the decimal part of - * the number if the number were formatted without exponential - * notation. - * - * @return An int whose value is the scale of this - * BigDecimal. - * @stable ICU 2.0 - */ - - //--public int scale(){ - function scale() { - if (this.exp>=0) - return 0; // scale can never be negative - return -this.exp; - } - - /** - * Returns a plain BigDecimal with a given scale. - *

        - * If the given scale (which must be zero or positive) is the same as - * or greater than the length of the decimal part (the scale) of this - * BigDecimal then trailing zeros will be added to the - * decimal part as necessary. - *

        - * If the given scale is less than the length of the decimal part (the - * scale) of this BigDecimal then trailing digits - * will be removed, and in this case an - * ArithmeticException is thrown if any discarded digits - * are non-zero. - *

        - * The same as {@link #setScale(int, int)}, where the first parameter - * is the scale, and the second is - * MathContext.ROUND_UNNECESSARY. - * - * @param scale The int specifying the scale of the - * resulting BigDecimal. - * @return A plain BigDecimal with the given scale. - * @throws ArithmeticException if scale is negative. - * @throws ArithmeticException if reducing scale would discard - * non-zero digits. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal setScale(int scale){ - //-- return setScale(scale,ROUND_UNNECESSARY); - //-- } - - /** - * Returns a plain BigDecimal with a given scale. - *

        - * If the given scale (which must be zero or positive) is the same as - * or greater than the length of the decimal part (the scale) of this - * BigDecimal then trailing zeros will be added to the - * decimal part as necessary. - *

        - * If the given scale is less than the length of the decimal part (the - * scale) of this BigDecimal then trailing digits - * will be removed, and the rounding mode given by the second - * parameter is used to determine if the remaining digits are - * affected by a carry. - * In this case, an IllegalArgumentException is thrown if - * round is not a valid rounding mode. - *

        - * If round is MathContext.ROUND_UNNECESSARY, - * an ArithmeticException is thrown if any discarded - * digits are non-zero. - * - * @param scale The int specifying the scale of the - * resulting BigDecimal. - * @param round The int rounding mode to be used for - * the division (see the {@link MathContext} class). - * @return A plain BigDecimal with the given scale. - * @throws IllegalArgumentException if round is not a - * valid rounding mode. - * @throws ArithmeticException if scale is negative. - * @throws ArithmeticException if round is - * MathContext.ROUND_UNNECESSARY, and - * reducing scale would discard non-zero digits. - * @stable ICU 2.0 - */ - - //--public com.ibm.icu.math.BigDecimal setScale(int scale,int round){ - function setScale() { - var round; - if (setScale.arguments.length == 2) - { - round = setScale.arguments[1]; - } - else if (setScale.arguments.length == 1) - { - round = this.ROUND_UNNECESSARY; - } - else - { - throw "setScale(): " + setScale.arguments.length + " given; expected 1 or 2"; - } - var scale = setScale.arguments[0]; - //--int ourscale; - var ourscale; - //--com.ibm.icu.math.BigDecimal res; - var res; - //--int padding=0; - var padding=0; - //--int newlen=0; - var newlen=0; - // at present this naughtily only checks the round value if it is - // needed (used), for speed - ourscale=this.scale(); - if (ourscale==scale) // already correct scale - if (this.form==MathContext.prototype.PLAIN) // .. and form - return this; - res=this.clone(this); // need copy - if (ourscale<=scale) - { // simply zero-padding/changing form - // if ourscale is 0 we may have lots of 0s to add - if (ourscale==0) - padding=res.exp+scale; - else - padding=scale-ourscale; - res.mant=this.extend(res.mant,res.mant.length+padding); - res.exp=-scale; // as requested - } - else - {/* ourscale>scale: shortening, probably */ - if (scale<0) - //--throw new java.lang.ArithmeticException("Negative scale:"+" "+scale); - throw "setScale(): Negative scale: " + scale; - // [round() will raise exception if invalid round] - newlen=res.mant.length-((ourscale-scale)); // [<=0 is OK] - res=res.round(newlen,round); // round to required length - // This could have shifted left if round (say) 0.9->1[.0] - // Repair if so by adding a zero and reducing exponent - if (res.exp!=(-scale)) - { - res.mant=this.extend(res.mant,res.mant.length+1); - res.exp=res.exp-1; - } - } - res.form=MathContext.prototype.PLAIN; // by definition - return res; - } - - /** - * Converts this BigDecimal to a short. - * If the BigDecimal has a non-zero decimal part or is - * out of the possible range for a short (16-bit signed - * integer) result then an ArithmeticException is thrown. - * - * @return A short equal in value to this. - * @throws ArithmeticException if this has a non-zero - * decimal part, or will not fit in a - * short. - * @stable ICU 2.0 - */ - - //--public short shortValueExact(){ - //-- int num; - //-- num=this.intValueExact(); // will check decimal part too - //-- if ((num>32767)|(num<(-32768))) - //-- throw new java.lang.ArithmeticException("Conversion overflow:"+" "+this.toString()); - //-- return (short)num; - //-- } - - /** - * Returns the sign of this BigDecimal, as an - * int. - * This returns the signum function value that represents the - * sign of this BigDecimal. - * That is, -1 if the BigDecimal is negative, 0 if it is - * numerically equal to zero, or 1 if it is positive. - * - * @return An int which is -1 if the - * BigDecimal is negative, 0 if it is - * numerically equal to zero, or 1 if it is positive. - * @stable ICU 2.0 - */ - - //--public int signum(){ - function signum() { - return this.ind; // [note this assumes values for ind.] - } - - /** - * Converts this BigDecimal to a - * java.math.BigDecimal. - *

        - * This is an exact conversion; the result is the same as if the - * BigDecimal were formatted as a plain number without - * any rounding or exponent and then the - * java.math.BigDecimal(java.lang.String) constructor - * were used to construct the result. - *

        - * (Note: this method is provided only in the - * com.ibm.icu.math version of the BigDecimal class. - * It would not be present in a java.math version.) - * - * @return The java.math.BigDecimal equal in value - * to this BigDecimal. - * @stable ICU 2.0 - */ - - //--public java.math.BigDecimal toBigDecimal(){ - //-- return new java.math.BigDecimal(this.unscaledValue(),this.scale()); - //-- } - - /** - * Converts this BigDecimal to a - * java.math.BigInteger. - *

        - * Any decimal part is truncated (discarded). - * If an exception is desired should the decimal part be non-zero, - * use {@link #toBigIntegerExact()}. - * - * @return The java.math.BigInteger equal in value - * to the integer part of this BigDecimal. - * @stable ICU 2.0 - */ - - //--public java.math.BigInteger toBigInteger(){ - //-- com.ibm.icu.math.BigDecimal res=null; - //-- int newlen=0; - //-- byte newmant[]=null; - //-- {/*select*/ - //-- if ((exp>=0)&(form==com.ibm.icu.math.MathContext.PLAIN)) - //-- res=this; // can layout simply - //-- else if (exp>=0) - //-- { - //-- res=clone(this); // safe copy - //-- res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; // .. and request PLAIN - //-- } - //-- else{ - //-- { // exp<0; scale to be truncated - //-- // we could use divideInteger, but we may as well be quicker - //-- if (((int)-this.exp)>=this.mant.length) - //-- res=ZERO; // all blows away - //-- else - //-- { - //-- res=clone(this); // safe copy - //-- newlen=res.mant.length+res.exp; - //-- newmant=new byte[newlen]; // [shorter] - //-- java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,newlen); - //-- res.mant=newmant; - //-- res.form=(byte)com.ibm.icu.math.MathContext.PLAIN; - //-- res.exp=0; - //-- } - //-- } - //-- } - //-- } - //-- return new BigInteger(new java.lang.String(res.layout())); - //-- } - - /** - * Converts this BigDecimal to a - * java.math.BigInteger. - *

        - * An exception is thrown if the decimal part (if any) is non-zero. - * - * @return The java.math.BigInteger equal in value - * to the integer part of this BigDecimal. - * @throws ArithmeticException if this has a non-zero - * decimal part. - * @stable ICU 2.0 - */ - - //--public java.math.BigInteger toBigIntegerExact(){ - //-- /* test any trailing decimal part */ - //-- if (exp<0) - //-- { // possible decimal part - //-- /* all decimal places must be 0; note exp<0 */ - //-- if ((!(allzero(mant,mant.length+exp)))) - //-- throw new java.lang.ArithmeticException("Decimal part non-zero:"+" "+this.toString()); - //-- } - //-- return toBigInteger(); - //-- } - - /** - * Returns the BigDecimal as a character array. - * The result of this method is the same as using the - * sequence toString().toCharArray(), but avoids creating - * the intermediate String and char[] - * objects. - * - * @return The char[] array corresponding to this - * BigDecimal. - * @stable ICU 2.0 - */ - - //--public char[] toCharArray(){ - //-- return layout(); - //-- } - - /** - * Returns the BigDecimal as a String. - * This returns a String that exactly represents this - * BigDecimal, as defined in the decimal documentation - * (see {@link BigDecimal class header}). - *

        - * By definition, using the {@link #BigDecimal(String)} constructor - * on the result String will create a - * BigDecimal that is exactly equal to the original - * BigDecimal. - * - * @return The String exactly corresponding to this - * BigDecimal. - * @see #format(int, int) - * @see #format(int, int, int, int, int, int) - * @see #toCharArray() - * @stable ICU 2.0 - */ - - //--public java.lang.String toString(){ - function toString() { - return this.layout().join(""); - } - - /** - * Returns the number as a BigInteger after removing the - * scale. - * That is, the number is expressed as a plain number, any decimal - * point is then removed (retaining the digits of any decimal part), - * and the result is then converted to a BigInteger. - * - * @return The java.math.BigInteger equal in value to - * this BigDecimal multiplied by ten to the - * power of this.scale(). - * @stable ICU 2.0 - */ - - //--public java.math.BigInteger unscaledValue(){ - //-- com.ibm.icu.math.BigDecimal res=null; - //-- if (exp>=0) - //-- res=this; - //-- else - //-- { - //-- res=clone(this); // safe copy - //-- res.exp=0; // drop scale - //-- } - //-- return res.toBigInteger(); - //-- } - - /** - * Translates a double to a BigDecimal. - *

        - * Returns a BigDecimal which is the decimal - * representation of the 64-bit signed binary floating point - * parameter. If the parameter is infinite, or is not a number (NaN), - * a NumberFormatException is thrown. - *

        - * The number is constructed as though num had been - * converted to a String using the - * Double.toString() method and the - * {@link #BigDecimal(java.lang.String)} constructor had then been used. - * This is typically not an exact conversion. - * - * @param dub The double to be translated. - * @return The BigDecimal equal in value to - * dub. - * @throws NumberFormatException if the parameter is infinite or - * not a number. - * @stable ICU 2.0 - */ - - //--public static com.ibm.icu.math.BigDecimal valueOf(double dub){ - //-- // Reminder: a zero double returns '0.0', so we cannot fastpath to - //-- // use the constant ZERO. This might be important enough to justify - //-- // a factory approach, a cache, or a few private constants, later. - //-- return new com.ibm.icu.math.BigDecimal((new java.lang.Double(dub)).toString()); - //-- } - - /** - * Translates a long to a BigDecimal. - * That is, returns a plain BigDecimal whose value is - * equal to the given long. - * - * @param lint The long to be translated. - * @return The BigDecimal equal in value to - * lint. - * @stable ICU 2.0 - */ - - //--public static com.ibm.icu.math.BigDecimal valueOf(long lint){ - //-- return valueOf(lint,0); - //-- } - - /** - * Translates a long to a BigDecimal with a - * given scale. - * That is, returns a plain BigDecimal whose unscaled - * value is equal to the given long, adjusted by the - * second parameter, scale. - *

        - * The result is given by: - *

        - * (new BigDecimal(lint)).divide(TEN.pow(new BigDecimal(scale))) - * - *

        - * A NumberFormatException is thrown if scale - * is negative. - * - * @param lint The long to be translated. - * @param scale The int scale to be applied. - * @return The BigDecimal equal in value to - * lint. - * @throws NumberFormatException if the scale is negative. - * @stable ICU 2.0 - */ - - //--public static com.ibm.icu.math.BigDecimal valueOf(long lint,int scale){ - //-- com.ibm.icu.math.BigDecimal res=null; - //-- {/*select*/ - //-- if (lint==0) - //-- res=ZERO; - //-- else if (lint==1) - //-- res=ONE; - //-- else if (lint==10) - //-- res=TEN; - //-- else{ - //-- res=new com.ibm.icu.math.BigDecimal(lint); - //-- } - //-- } - //-- if (scale==0) - //-- return res; - //-- if (scale<0) - //-- throw new java.lang.NumberFormatException("Negative scale:"+" "+scale); - //-- res=clone(res); // safe copy [do not mutate] - //-- res.exp=(int)-scale; // exponent is -scale - //-- return res; - //-- } - - /* ---------------------------------------------------------------- */ - /* Private methods */ - /* ---------------------------------------------------------------- */ - - /* Return char array value of a BigDecimal (conversion from - BigDecimal to laid-out canonical char array). -

        The mantissa will either already have been rounded (following an - operation) or will be of length appropriate (in the case of - construction from an int, for example). -

        We must not alter the mantissa, here. -

        'form' describes whether we are to use exponential notation (and - if so, which), or if we are to lay out as a plain/pure numeric. - */ - - //--private char[] layout(){ - function layout() { - //--char cmant[]; - var cmant; - //--int i=0; - var i=0; - //--java.lang.StringBuffer sb=null; - var sb=null; - //--int euse=0; - var euse=0; - //--int sig=0; - var sig=0; - //--char csign=0; - var csign=0; - //--char rec[]=null; - var rec=null; - //--int needsign; - var needsign; - //--int mag; - var mag; - //--int len=0; - var len=0; - cmant=new Array(this.mant.length); // copy byte[] to a char[] - {var $18=this.mant.length;i=0;i:for(;$18>0;$18--,i++){ - cmant[i]=this.mant[i]+''; - } - }/*i*/ - - if (this.form!=MathContext.prototype.PLAIN) - {/* exponential notation needed */ - //--sb=new java.lang.StringBuffer(cmant.length+15); // -x.xxxE+999999999 - sb=""; - if (this.ind==this.isneg) - sb += '-'; - euse=(this.exp+cmant.length)-1; // exponent to use - /* setup sig=significant digits and copy to result */ - if (this.form==MathContext.prototype.SCIENTIFIC) - { // [default] - sb += cmant[0]; // significant character - if (cmant.length>1) // have decimal part - //--sb.append('.').append(cmant,1,cmant.length-1); - sb += '.'; - sb += cmant.slice(1).join(""); - } - else - {engineering:do{ - sig=euse%3; // common - if (sig<0) - sig=3+sig; // negative exponent - euse=euse-sig; - sig++; - if (sig>=cmant.length) - { // zero padding may be needed - //--sb.append(cmant,0,cmant.length); - sb += cmant.join(""); - {var $19=sig-cmant.length;for(;$19>0;$19--){ - sb += '0'; - } - } - } - else - { // decimal point needed - //--sb.append(cmant,0,sig).append('.').append(cmant,sig,cmant.length-sig); - sb += cmant.slice(0,sig).join(""); - sb += '.'; - sb += cmant.slice(sig).join(""); - } - }while(false);}/*engineering*/ - if (euse!=0) - { - if (euse<0) - { - csign='-'; - euse=-euse; - } - else - csign='+'; - //--sb.append('E').append(csign).append(euse); - sb += 'E'; - sb += csign; - sb += euse; - } - //--rec=new Array(sb.length); - //--Utility.getChars(sb, 0,sb.length(),rec,0); - //--return rec; - return sb.split(""); - } - - /* Here for non-exponential (plain) notation */ - if (this.exp==0) - {/* easy */ - if (this.ind>=0) - return cmant; // non-negative integer - rec=new Array(cmant.length+1); - rec[0]='-'; - //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,1,cmant.length); - this.arraycopy(cmant,0,rec,1,cmant.length); - return rec; - } - - /* Need a '.' and/or some zeros */ - needsign=((this.ind==this.isneg)?1:0); // space for sign? 0 or 1 - - /* MAG is the position of the point in the mantissa (index of the - character it follows) */ - mag=this.exp+cmant.length; - - if (mag<1) - {/* 0.00xxxx form */ - len=(needsign+2)-this.exp; // needsign+2+(-mag)+cmant.length - rec=new Array(len); - if (needsign!=0) - rec[0]='-'; - rec[needsign]='0'; - rec[needsign+1]='.'; - {var $20=-mag;i=needsign+2;i:for(;$20>0;$20--,i++){ // maybe none - rec[i]='0'; - } - }/*i*/ - //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,(needsign+2)-mag,cmant.length); - this.arraycopy(cmant,0,rec,(needsign+2)-mag,cmant.length); - return rec; - } - - if (mag>cmant.length) - {/* xxxx0000 form */ - len=needsign+mag; - rec=new Array(len); - if (needsign!=0) - rec[0]='-'; - //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,cmant.length); - this.arraycopy(cmant,0,rec,needsign,cmant.length); - {var $21=mag-cmant.length;i=needsign+cmant.length;i:for(;$21>0;$21--,i++){ // never 0 - rec[i]='0'; - } - }/*i*/ - return rec; - } - - /* decimal point is in the middle of the mantissa */ - len=(needsign+1)+cmant.length; - rec=new Array(len); - if (needsign!=0) - rec[0]='-'; - //--java.lang.System.arraycopy((java.lang.Object)cmant,0,(java.lang.Object)rec,needsign,mag); - this.arraycopy(cmant,0,rec,needsign,mag); - rec[needsign+mag]='.'; - //--java.lang.System.arraycopy((java.lang.Object)cmant,mag,(java.lang.Object)rec,(needsign+mag)+1,cmant.length-mag); - this.arraycopy(cmant,mag,rec,(needsign+mag)+1,cmant.length-mag); - return rec; - } - - /* Checks a BigDecimal argument to ensure it's a true integer - in a given range. -

        If OK, returns it as an int. */ - // [currently only used by pow] - - //--private int intcheck(int min,int max){ - function intcheck(min, max) { - //--int i; - var i; - i=this.intValueExact(); // [checks for non-0 decimal part] - // Use same message as though intValueExact failed due to size - if ((imax)) - throw "intcheck(): Conversion overflow: "+i; - return i; - } - - /* Carry out division operations. */ - /* - Arg1 is operation code: D=divide, I=integer divide, R=remainder - Arg2 is the rhs. - Arg3 is the context. - Arg4 is explicit scale iff code='D' or 'I' (-1 if none). - - Underlying algorithm (complications for Remainder function and - scaled division are omitted for clarity): - - Test for x/0 and then 0/x - Exp =Exp1 - Exp2 - Exp =Exp +len(var1) -len(var2) - Sign=Sign1 * Sign2 - Pad accumulator (Var1) to double-length with 0's (pad1) - Pad Var2 to same length as Var1 - B2B=1st two digits of var2, +1 to allow for roundup - have=0 - Do until (have=digits+1 OR residue=0) - if exp<0 then if integer divide/residue then leave - this_digit=0 - Do forever - compare numbers - if <0 then leave inner_loop - if =0 then (- quick exit without subtract -) do - this_digit=this_digit+1; output this_digit - leave outer_loop; end - Compare lengths of numbers (mantissae): - If same then CA=first_digit_of_Var1 - else CA=first_two_digits_of_Var1 - mult=ca*10/b2b -- Good and safe guess at divisor - if mult=0 then mult=1 - this_digit=this_digit+mult - subtract - end inner_loop - if have\=0 | this_digit\=0 then do - output this_digit - have=have+1; end - var2=var2/10 - exp=exp-1 - end outer_loop - exp=exp+1 -- set the proper exponent - if have=0 then generate answer=0 - Return to FINISHED - Result defined by MATHV1 - - For extended commentary, see DMSRCN. - */ - - //--private com.ibm.icu.math.BigDecimal dodivide(char code,com.ibm.icu.math.BigDecimal rhs,com.ibm.icu.math.MathContext set,int scale){ - function dodivide(code, rhs, set, scale) { - //--com.ibm.icu.math.BigDecimal lhs; - var lhs; - //--int reqdig; - var reqdig; - //--int newexp; - var newexp; - //--com.ibm.icu.math.BigDecimal res; - var res; - //--int newlen; - var newlen; - //--byte var1[]; - var var1; - //--int var1len; - var var1len; - //--byte var2[]; - var var2; - //--int var2len; - var var2len; - //--int b2b; - var b2b; - //--int have; - var have; - //--int thisdigit=0; - var thisdigit=0; - //--int i=0; - var i=0; - //--byte v2=0; - var v2=0; - //--int ba=0; - var ba=0; - //--int mult=0; - var mult=0; - //--int start=0; - var start=0; - //--int padding=0; - var padding=0; - //--int d=0; - var d=0; - //--byte newvar1[]=null; - var newvar1=null; - //--byte lasthave=0; - var lasthave=0; - //--int actdig=0; - var actdig=0; - //--byte newmant[]=null; - var newmant=null; - - if (set.lostDigits) - this.checkdigits(rhs,set.digits); - lhs=this; // name for clarity - - // [note we must have checked lostDigits before the following checks] - if (rhs.ind==0) - throw "dodivide(): Divide by 0"; // includes 0/0 - if (lhs.ind==0) - { // 0/x => 0 [possibly with .0s] - if (set.form!=MathContext.prototype.PLAIN) - return this.ZERO; - if (scale==(-1)) - return lhs; - return lhs.setScale(scale); - } - - /* Prepare numbers according to BigDecimal rules */ - reqdig=set.digits; // local copy (heavily used) - if (reqdig>0) - { - if (lhs.mant.length>reqdig) - lhs=this.clone(lhs).round(set); - if (rhs.mant.length>reqdig) - rhs=this.clone(rhs).round(set); - } - else - {/* scaled divide */ - if (scale==(-1)) - scale=lhs.scale(); - // set reqdig to be at least large enough for the computation - reqdig=lhs.mant.length; // base length - // next line handles both positive lhs.exp and also scale mismatch - if (scale!=(-lhs.exp)) - reqdig=(reqdig+scale)+lhs.exp; - reqdig=(reqdig-((rhs.mant.length-1)))-rhs.exp; // reduce by RHS effect - if (reqdig1) - b2b=b2b+var2[1]; - - /* start the long-division loops */ - have=0; - {outer:for(;;){ - thisdigit=0; - /* find the next digit */ - {inner:for(;;){ - if (var1len0;$22--,i++){ - // var1len is always <= var1.length - if (iv2) - break compare; // OK to subtract - } - }/*i*/ - /* reach here if lhs and rhs are identical; subtraction will - increase digit by one, and the residue will be 0 so we - are done; leave the loop with residue set to 0 (in case - code is 'R' or ROUND_UNNECESSARY or a ROUND_HALF_xxxx is - being checked) */ - thisdigit++; - res.mant[have]=thisdigit; - have++; - var1[0]=0; // residue to 0 [this is all we'll test] - // var1len=1 -- [optimized out] - break outer; - }while(false);}/*compare*/ - /* prepare for subtraction. Estimate BA (lengths the same) */ - ba=var1[0]; // use only first digit - } // lengths the same - else - {/* lhs longer than rhs */ - /* use first two digits for estimate */ - ba=var1[0]*10; - if (var1len>1) - ba=ba+var1[1]; - } - /* subtraction needed; V1>=V2 */ - mult=div((ba*10),b2b); - if (mult==0) - mult=1; - thisdigit=thisdigit+mult; - // subtract; var1 reusable - var1=this.byteaddsub(var1,var1len,var2,var2len,-mult,true); - if (var1[0]!=0) - continue inner; // maybe another subtract needed - /* V1 now probably has leading zeros, remove leading 0's and try - again. (It could be longer than V2) */ - {var $23=var1len-2;start=0;start:for(;start<=$23;start++){ - if (var1[start]!=0) - break start; - var1len--; - } - }/*start*/ - if (start==0) - continue inner; - // shift left - //--java.lang.System.arraycopy((java.lang.Object)var1,start,(java.lang.Object)var1,0,var1len); - this.arraycopy(var1,start,var1,0,var1len); - } - }/*inner*/ - - /* We have the next digit */ - if ((have!=0)||(thisdigit!=0)) - { // put the digit we got - res.mant[have]=thisdigit; - have++; - if (have==(reqdig+1)) - break outer; // we have all we need - if (var1[0]==0) - break outer; // residue now 0 - } - /* can leave now if a scaled divide and exponent is small enough */ - if (scale>=0) - if ((-res.exp)>scale) - break outer; - /* can leave now if not Divide and no integer part left */ - if (code!='D') - if (res.exp<=0) - break outer; - res.exp=res.exp-1; // reduce the exponent - /* to get here, V1 is less than V2, so divide V2 by 10 and go for - the next digit */ - var2len--; - } - }/*outer*/ - - /* here when we have finished dividing, for some reason */ - // have is the number of digits we collected in res.mant - if (have==0) - have=1; // res.mant[0] is 0; we always want a digit - - if ((code=='I')||(code=='R')) - {/* check for integer overflow needed */ - if ((have+res.exp)>reqdig) - throw "dodivide(): Integer overflow"; - - if (code=='R') - {remainder:do{ - /* We were doing Remainder -- return the residue */ - if (res.mant[0]==0) // no integer part was found - return this.clone(lhs).finish(set,false); // .. so return lhs, canonical - if (var1[0]==0) - return this.ZERO; // simple 0 residue - res.ind=lhs.ind; // sign is always as LHS - /* Calculate the exponent by subtracting the number of padding zeros - we added and adding the original exponent */ - padding=((reqdig+reqdig)+1)-lhs.mant.length; - res.exp=(res.exp-padding)+lhs.exp; - - /* strip insignificant padding zeros from residue, and create/copy - the resulting mantissa if need be */ - d=var1len; - {i=d-1;i:for(;i>=1;i--){if(!((res.exp=0) - {scaled:do{ - // say 'scale have res.exp len' scale have res.exp res.mant.length - if (have!=res.mant.length) - // already padded with 0's, so just adjust exponent - res.exp=res.exp-((res.mant.length-have)); - // calculate number of digits we really want [may be 0] - actdig=res.mant.length-(((-res.exp)-scale)); - res.round(actdig,set.roundingMode); // round to desired length - // This could have shifted left if round (say) 0.9->1[.0] - // Repair if so by adding a zero and reducing exponent - if (res.exp!=(-scale)) - { - res.mant=this.extend(res.mant,res.mant.length+1); - res.exp=res.exp-1; - } - return res.finish(set,true); // [strip if not PLAIN] - }while(false);}/*scaled*/ - - // reach here only if a non-scaled - if (have==res.mant.length) - { // got digits+1 digits - res.round(set); - have=reqdig; - } - else - {/* have<=reqdig */ - if (res.mant[0]==0) - return this.ZERO; // fastpath - // make the mantissa truly just 'have' long - // [we could let finish do this, during strip, if we adjusted - // the exponent; however, truncation avoids the strip loop] - newmant=new Array(have); // shorten - //--java.lang.System.arraycopy((java.lang.Object)res.mant,0,(java.lang.Object)newmant,0,have); - this.arraycopy(res.mant,0,newmant,0,have); - res.mant=newmant; - } - return res.finish(set,true); - } - - /* Report a conversion exception. */ - - //--private void bad(char s[]){ - function bad(prefix, s) { - throw prefix + "Not a number: "+s; - } - - /* Report a bad argument to a method. - Arg1 is method name - Arg2 is argument position - Arg3 is what was found */ - - //--private void badarg(java.lang.String name,int pos,java.lang.String value){ - function badarg(name, pos, value) { - throw "Bad argument "+pos+" to "+name+": "+value; - } - - /* Extend byte array to given length, padding with 0s. If no - extension is required then return the same array. - - Arg1 is the source byte array - Arg2 is the new length (longer) - */ - - //--private static final byte[] extend(byte inarr[],int newlen){ - function extend(inarr, newlen) { - //--byte newarr[]; - var newarr; - if (inarr.length==newlen) - return inarr; - newarr=createArrayWithZeros(newlen); - //--java.lang.System.arraycopy((java.lang.Object)inarr,0,(java.lang.Object)newarr,0,inarr.length); - this.arraycopy(inarr,0,newarr,0,inarr.length); - // 0 padding is carried out by the JVM on allocation initialization - return newarr; - } - - /* Add or subtract two >=0 integers in byte arrays -

        This routine performs the calculation: -

        -    C=A+(B*M)
        -    
        - Where M is in the range -9 through +9 -

        - If M<0 then A>=B must be true, so the result is always - non-negative. - - Leading zeros are not removed after a subtraction. The result is - either the same length as the longer of A and B, or 1 longer than - that (if a carry occurred). - - A is not altered unless Arg6 is 1. - B is never altered. - - Arg1 is A - Arg2 is A length to use (if longer than A, pad with 0's) - Arg3 is B - Arg4 is B length to use (if longer than B, pad with 0's) - Arg5 is M, the multiplier - Arg6 is 1 if A can be used to build the result (if it fits) - - This routine is severely performance-critical; *any* change here - must be measured (timed) to assure no performance degradation. - */ - // 1996.02.20 -- enhanced version of DMSRCN algorithm (1981) - // 1997.10.05 -- changed to byte arrays (from char arrays) - // 1998.07.01 -- changed to allow destructive reuse of LHS - // 1998.07.01 -- changed to allow virtual lengths for the arrays - // 1998.12.29 -- use lookaside for digit/carry calculation - // 1999.08.07 -- avoid multiply when mult=1, and make db an int - // 1999.12.22 -- special case m=-1, also drop 0 special case - - //--private static final byte[] byteaddsub(byte a[],int avlen,byte b[],int bvlen,int m,boolean reuse){ - function byteaddsub(a, avlen, b, bvlen, m, reuse) { - //--int alength; - var alength; - //--int blength; - var blength; - //--int ap; - var ap; - //--int bp; - var bp; - //--int maxarr; - var maxarr; - //--byte reb[]; - var reb; - //--boolean quickm; - var quickm; - //--int digit; - var digit; - //--int op=0; - var op=0; - //--int dp90=0; - var dp90=0; - //--byte newarr[]; - var newarr; - //--int i=0; - var i=0; - - - - - // We'll usually be right if we assume no carry - alength=a.length; // physical lengths - blength=b.length; // .. - ap=avlen-1; // -> final (rightmost) digit - bp=bvlen-1; // .. - maxarr=bp; - if (maxarr=0;op--){ - if (ap>=0) - { - if (ap=0) - { - if (bp0) - digit=digit+b[bp]; // most common - else - digit=digit-b[bp]; // also common - } - else - digit=digit+(b[bp]*m); - } - bp--; - } - /* result so far (digit) could be -90 through 99 */ - if (digit<10) - if (digit>=0) - {quick:do{ // 0-9 - reb[op]=digit; - digit=0; // no carry - continue op; - }while(false);}/*quick*/ - dp90=digit+90; - reb[op]=this.bytedig[dp90]; // this digit - digit=this.bytecar[dp90]; // carry or borrow - } - }/*op*/ - - if (digit==0) - return reb; // no carry - // following line will become an Assert, later - // if digit<0 then signal ArithmeticException("internal.error ["digit"]") - - /* We have carry -- need to make space for the extra digit */ - newarr=null; - if (reuse) - if ((maxarr+2)==a.length) - newarr=a; // OK to reuse A - if (newarr==null) - newarr=new Array(maxarr+2); - newarr[0]=digit; // the carried digit .. - // .. and all the rest [use local loop for short numbers] - //--if (maxarr<10) - {var $24=maxarr+1;i=0;i:for(;$24>0;$24--,i++){ - newarr[i+1]=reb[i]; - } - }/*i*/ - //--else - //--java.lang.System.arraycopy((java.lang.Object)reb,0,(java.lang.Object)newarr,1,maxarr+1); - return newarr; - } - - /* Initializer for digit array properties (lookaside). - Returns the digit array, and initializes the carry array. */ - - //--private static final byte[] diginit(){ - function diginit() { - //--byte work[]; - var work; - //--int op=0; - var op=0; - //--int digit=0; - var digit=0; - work=new Array((90+99)+1); - {op=0;op:for(;op<=(90+99);op++){ - digit=op-90; - if (digit>=0) - { - work[op]=(digit%10); - BigDecimal.prototype.bytecar[op]=(div(digit,10)); // calculate carry - continue op; - } - // borrowing... - digit=digit+100; // yes, this is right [consider -50] - work[op]=(digit%10); - BigDecimal.prototype.bytecar[op]=((div(digit,10))-10); // calculate borrow [NB: - after %] - } - }/*op*/ - return work; - } - - /* Create a copy of BigDecimal object for local use. -

        This does NOT make a copy of the mantissa array. - - Arg1 is the BigDecimal to clone (non-null) - */ - - //--private static final com.ibm.icu.math.BigDecimal clone(com.ibm.icu.math.BigDecimal dec){ - function clone(dec) { - //--com.ibm.icu.math.BigDecimal copy; - var copy; - copy=new BigDecimal(); - copy.ind=dec.ind; - copy.exp=dec.exp; - copy.form=dec.form; - copy.mant=dec.mant; - return copy; - } - - /* Check one or two numbers for lost digits. - Arg1 is RHS (or null, if none) - Arg2 is current DIGITS setting - returns quietly or throws an exception */ - - //--private void checkdigits(com.ibm.icu.math.BigDecimal rhs,int dig){ - function checkdigits(rhs, dig) { - if (dig==0) - return; // don't check if digits=0 - // first check lhs... - if (this.mant.length>dig) - if ((!(this.allzero(this.mant,dig)))) - throw "Too many digits: "+this.toString(); - if (rhs==null) - return; // monadic - if (rhs.mant.length>dig) - if ((!(this.allzero(rhs.mant,dig)))) - throw "Too many digits: "+rhs.toString(); - return; - } - - /* Round to specified digits, if necessary. - Arg1 is requested MathContext [with length and rounding mode] - returns this, for convenience */ - - //--private com.ibm.icu.math.BigDecimal round(com.ibm.icu.math.MathContext set){ - //-- return round(set.digits,set.roundingMode); - //-- } - - /* Round to specified digits, if necessary. - Arg1 is requested length (digits to round to) - [may be <=0 when called from format, dodivide, etc.] - Arg2 is rounding mode - returns this, for convenience - - ind and exp are adjusted, but not cleared for a mantissa of zero - - The length of the mantissa returned will be Arg1, except when Arg1 - is 0, in which case the returned mantissa length will be 1. - - */ - - //private com.ibm.icu.math.BigDecimal round(int len,int mode){ - function round() { - var len; - var mode; - if (round.arguments.length == 2) - { - len = round.arguments[0]; - mode = round.arguments[1]; - } - else if (round.arguments.length == 1) - { - var set = round.arguments[0]; - len = set.digits; - mode = set.roundingMode; - } - else - { - throw "round(): " + round.arguments.length + " arguments given; expected 1 or 2"; - } - //int adjust; - var adjust; - //int sign; - var sign; - //byte oldmant[]; - var oldmant; - //boolean reuse=false; - var reuse=false; - //--byte first=0; - var first=0; - //--int increment; - var increment; - //--byte newmant[]=null; - var newmant=null; - adjust=this.mant.length-len; - if (adjust<=0) - return this; // nowt to do - - this.exp=this.exp+adjust; // exponent of result - sign=this.ind; // save [assumes -1, 0, 1] - oldmant=this.mant; // save - if (len>0) - { - // remove the unwanted digits - this.mant=new Array(len); - //--java.lang.System.arraycopy((java.lang.Object)oldmant,0,(java.lang.Object)mant,0,len); - this.arraycopy(oldmant,0,this.mant,0,len); - reuse=true; // can reuse mantissa - first=oldmant[len]; // first of discarded digits - } - else - {/* len<=0 */ - this.mant=this.ZERO.mant; - this.ind=this.iszero; - reuse=false; // cannot reuse mantissa - if (len==0) - first=oldmant[0]; - else - first=0; // [virtual digit] - } - - // decide rounding adjustment depending on mode, sign, and discarded digits - increment=0; // bumper - {modes:do{/*select*/ - if (mode==this.ROUND_HALF_UP) - { // default first [most common] - if (first>=5) - increment=sign; - } - else if (mode==this.ROUND_UNNECESSARY) - { // default for setScale() - // discarding any non-zero digits is an error - if ((!(this.allzero(oldmant,len)))) - throw "round(): Rounding necessary"; - } - else if (mode==this.ROUND_HALF_DOWN) - { // 0.5000 goes down - if (first>5) - increment=sign; - else - if (first==5) - if ((!(this.allzero(oldmant,len+1)))) - increment=sign; - } - else if (mode==this.ROUND_HALF_EVEN) - { // 0.5000 goes down if left digit even - if (first>5) - increment=sign; - else - if (first==5) - { - if ((!(this.allzero(oldmant,len+1)))) - increment=sign; - else /* 0.5000 */ - if ((((this.mant[this.mant.length-1])%2))==1) - increment=sign; - } - } - else if (mode==this.ROUND_DOWN) - {} // never increment - else if (mode==this.ROUND_UP) - { // increment if discarded non-zero - if ((!(this.allzero(oldmant,len)))) - increment=sign; - } - else if (mode==this.ROUND_CEILING) - { // more positive - if (sign>0) - if ((!(this.allzero(oldmant,len)))) - increment=sign; - } - else if (mode==this.ROUND_FLOOR) - { // more negative - if (sign<0) - if ((!(this.allzero(oldmant,len)))) - increment=sign; - } - else{ - throw "round(): Bad round value: "+mode; - } - }while(false);}/*modes*/ - - if (increment!=0) - {bump:do{ - if (this.ind==this.iszero) - { - // we must not subtract from 0, but result is trivial anyway - this.mant=this.ONE.mant; - this.ind=increment; - } - else - { - // mantissa is non-0; we can safely add or subtract 1 - if (this.ind==this.isneg) - increment=-increment; - newmant=this.byteaddsub(this.mant,this.mant.length,this.ONE.mant,1,increment,reuse); - if (newmant.length>this.mant.length) - { // had a carry - // drop rightmost digit and raise exponent - this.exp++; - // mant is already the correct length - //java.lang.System.arraycopy((java.lang.Object)newmant,0,(java.lang.Object)mant,0,mant.length); - this.arraycopy(newmant,0,this.mant,0,this.mant.length); - } - else - this.mant=newmant; - } - }while(false);}/*bump*/ - // rounding can increase exponent significantly - if (this.exp>this.MaxExp) - throw "round(): Exponent Overflow: "+this.exp; - return this; - } - - /* Test if rightmost digits are all 0. - Arg1 is a mantissa array to test - Arg2 is the offset of first digit to check - [may be negative; if so, digits to left are 0's] - returns 1 if all the digits starting at Arg2 are 0 - - Arg2 may be beyond array bounds, in which case 1 is returned - */ - - //--private static final boolean allzero(byte array[],int start){ - function allzero(array, start) { - //--int i=0; - var i=0; - if (start<0) - start=0; - {var $25=array.length-1;i=start;i:for(;i<=$25;i++){ - if (array[i]!=0) - return false; - } - }/*i*/ - return true; - } - - /* Carry out final checks and canonicalization -

        - This finishes off the current number by: - 1. Rounding if necessary (NB: length includes leading zeros) - 2. Stripping trailing zeros (if requested and \PLAIN) - 3. Stripping leading zeros (always) - 4. Selecting exponential notation (if required) - 5. Converting a zero result to just '0' (if \PLAIN) - In practice, these operations overlap and share code. - It always sets form. - - Arg1 is requested MathContext (length to round to, trigger, and FORM) - Arg2 is 1 if trailing insignificant zeros should be removed after - round (for division, etc.), provided that set.form isn't PLAIN. - returns this, for convenience - */ - - //--private com.ibm.icu.math.BigDecimal finish(com.ibm.icu.math.MathContext set,boolean strip){ - function finish(set, strip) { - //--int d=0; - var d=0; - //--int i=0; - var i=0; - //--byte newmant[]=null; - var newmant=null; - //--int mag=0; - var mag=0; - //--int sig=0; - var sig=0; - /* Round if mantissa too long and digits requested */ - if (set.digits!=0) - if (this.mant.length>set.digits) - this.round(set); - - /* If strip requested (and standard formatting), remove - insignificant trailing zeros. */ - if (strip) - if (set.form!=MathContext.prototype.PLAIN) - { - d=this.mant.length; - /* see if we need to drop any trailing zeros */ - {i=d-1;i:for(;i>=1;i--){ - if (this.mant[i]!=0) - break i; - d--; - this.exp++; - } - }/*i*/ - if (d0;$26--,i++){ - if (this.mant[i]!=0) - { - // non-0 result; ind will be correct - // remove leading zeros [e.g., after subtract] - if (i>0) - {delead:do{ - newmant=new Array(this.mant.length-i); - //--java.lang.System.arraycopy((java.lang.Object)this.mant,i,(java.lang.Object)newmant,0,this.mant.length-i); - this.arraycopy(this.mant,i,newmant,0,this.mant.length-i); - this.mant=newmant; - }while(false);}/*delead*/ - // now determine form if not PLAIN - mag=this.exp+this.mant.length; - if (mag>0) - { // most common path - if (mag>set.digits) - if (set.digits!=0) - this.form=set.form; - if ((mag-1)<=this.MaxExp) - return this; // no overflow; quick return - } - else - if (mag<(-5)) - this.form=set.form; - /* check for overflow */ - mag--; - if ((magthis.MaxExp)) - {overflow:do{ - // possible reprieve if form is engineering - if (this.form==MathContext.prototype.ENGINEERING) - { - sig=mag%3; // leftover - if (sig<0) - sig=3+sig; // negative exponent - mag=mag-sig; // exponent to use - // 1999.06.29: second test here must be MaxExp - if (mag>=this.MinExp) - if (mag<=this.MaxExp) - break overflow; - } - throw "finish(): Exponent Overflow: "+mag; - }while(false);}/*overflow*/ - return this; - } - } - }/*i*/ - - // Drop through to here only if mantissa is all zeros - this.ind=this.iszero; - {/*select*/ - if (set.form!=MathContext.prototype.PLAIN) - this.exp=0; // standard result; go to '0' - else if (this.exp>0) - this.exp=0; // +ve exponent also goes to '0' - else{ - // a plain number with -ve exponent; preserve and check exponent - if (this.exp 0; - }; - function isLessThan(other) { - return this.compareTo(other) < 0; - }; - function isGreaterThanOrEqualTo(other) { - return this.compareTo(other) >= 0; - }; - function isLessThanOrEqualTo(other) { - return this.compareTo(other) <= 0; - }; - function isPositive() { - return this.compareTo(BigDecimal.prototype.ZERO) > 0; - }; - function isNegative() { - return this.compareTo(BigDecimal.prototype.ZERO) < 0; - }; - function isZero() { - return this.equals(BigDecimal.prototype.ZERO); - }; -return BigDecimal; -})(MathContext); // BigDecimal depends on MathContext - -if (typeof define === "function" && define.amd != null) { - // AMD-loader compatible resource declaration - // require('bigdecimal') will return JS Object: - // {'BigDecimal':BigDecimalPointer, 'MathContext':MathContextPointer} - define({'BigDecimal':BigDecimal, 'MathContext':MathContext}); -} else if (typeof this === "object"){ - // global-polluting outcome. - this.BigDecimal = BigDecimal; - this.MathContext = MathContext; -} - -}).call(this); // in browser 'this' will be 'window' or simulated window object in AMD-loading scenarios. diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js deleted file mode 100644 index 78bbf7e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/BigDecimal-all-last.min.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (c) 2012 Daniel Trebbien and other contributors -Portions Copyright (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany -Portions Copyright (c) 1995-2001 International Business Machines Corporation and others - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. -*/ -(function(){var m,k=function(){this.form=this.digits=0;this.lostDigits=!1;this.roundingMode=0;var a=this.DEFAULT_FORM,b=this.DEFAULT_LOSTDIGITS,c=this.DEFAULT_ROUNDINGMODE;if(4==k.arguments.length)a=k.arguments[1],b=k.arguments[2],c=k.arguments[3];else if(3==k.arguments.length)a=k.arguments[1],b=k.arguments[2];else if(2==k.arguments.length)a=k.arguments[1];else if(1!=k.arguments.length)throw"MathContext(): "+k.arguments.length+" arguments given; expected 1 to 4";var d=k.arguments[0];if(d!=this.DEFAULT_DIGITS){if(d< -this.MIN_DIGITS)throw"MathContext(): Digits too small: "+d;if(d>this.MAX_DIGITS)throw"MathContext(): Digits too large: "+d;}if(a!=this.SCIENTIFIC&&a!=this.ENGINEERING&&a!=this.PLAIN)throw"MathContext() Bad form value: "+a;if(!this.isValidRound(c))throw"MathContext(): Bad roundingMode value: "+c;this.digits=d;this.form=a;this.lostDigits=b;this.roundingMode=c};k.prototype.getDigits=function(){return this.digits};k.prototype.getForm=function(){return this.form};k.prototype.getLostDigits=function(){return this.lostDigits}; -k.prototype.getRoundingMode=function(){return this.roundingMode};k.prototype.toString=function(){var a=null,b=0,c=null,a=this.form==this.SCIENTIFIC?"SCIENTIFIC":this.form==this.ENGINEERING?"ENGINEERING":"PLAIN",d=this.ROUNDS.length,b=0;a:for(;0=c&&this.bad("BigDecimal(): ",a);this.ind=this.ispos;"-"==a[0]?(c--,0==c&&this.bad("BigDecimal(): ",a),this.ind=this.isneg,b++):"+"==a[0]&&(c--,0==c&&this.bad("BigDecimal(): ",a),b++);e=d=!1;i=0;g=f=-1;k=c;j=b;a:for(;0=l){g=j;i++;continue a}if("."==l){0<=f&&this.bad("BigDecimal(): ",a);f=j-b;continue a}if("e"!=l&&"E"!=l){("0">l||"9"c-2&&this.bad("BigDecimal(): ", -a);e=!1;"-"==a[j+1]?(e=!0,j+=2):j="+"==a[j+1]?j+2:j+1;l=c-(j-b);(0==l||9k&&this.bad("BigDecimal(): ",a),"9"=k?this.mant[j]=k-0:this.bad("BigDecimal(): ",a),l++}else{b=i;j=0;for(;0this.MaxExp)&&this.bad("BigDecimal(): ",a))}},H=function(){var a;if(1==H.arguments.length)a=H.arguments[0];else if(0==H.arguments.length)a=this.plainMC;else throw"abs(): "+H.arguments.length+ -" arguments given; expected 0 or 1";return this.ind==this.isneg?this.negate(a):this.plus(a)},w=function(){var a;if(2==w.arguments.length)a=w.arguments[1];else if(1==w.arguments.length)a=this.plainMC;else throw"add(): "+w.arguments.length+" arguments given; expected 1 or 2";var b=w.arguments[0],c,d,e,i,f,g,j,l=0;d=l=0;var l=null,k=l=0,q=0,t=0,s=0,n=0;a.lostDigits&&this.checkdigits(b,a.digits);c=this;if(0==c.ind&&a.form!=m.prototype.PLAIN)return b.plus(a);if(0==b.ind&&a.form!=m.prototype.PLAIN)return c.plus(a); -d=a.digits;0d&&(c=this.clone(c).round(a)),b.mant.length>d&&(b=this.clone(b).round(a)));e=new h;i=c.mant;f=c.mant.length;g=b.mant;j=b.mant.length;if(c.exp==b.exp)e.exp=c.exp;else if(c.exp>b.exp){l=f+c.exp-b.exp;if(l>=j+d+1&&0d+1&&0f&&(f=l)}else{l=j+b.exp-c.exp;if(l>=f+d+1&&0d+1&&0j&&(j=l)}e.ind=c.ind==this.iszero?this.ispos:c.ind;if((c.ind==this.isneg?1:0)==(b.ind==this.isneg?1:0))d=1;else{do{d=-1;do if(b.ind!=this.iszero)if(fj)){k=l=0;q=i.length-1;t=g.length-1;c:for(;;){if(l<=q)s=i[l];else{if(k>t){if(a.form!=m.prototype.PLAIN)return this.ZERO;break c}s=0}n=k<=t?g[k]:0;if(s!=n){sb.mant.length)return this.ind; -if(c<=a.digits||0==a.digits){a=c;c=0;for(;0b.mant[c])return this.ind}return 0}}else{if(this.indb.ind)return 1}b=this.clone(b);b.ind=-b.ind;return this.add(b,a).ind},p=function(){var a,b=-1;if(2==p.arguments.length)a="number"==typeof p.arguments[1]?new m(0,m.prototype.PLAIN,!1,p.arguments[1]):p.arguments[1];else if(3==p.arguments.length){b=p.arguments[1];if(0>b)throw"divide(): Negative scale: "+b;a=new m(0, -m.prototype.PLAIN,!1,p.arguments[2])}else if(1==p.arguments.length)a=this.plainMC;else throw"divide(): "+p.arguments.length+" arguments given; expected between 1 and 3";return this.dodivide("D",p.arguments[0],a,b)},y=function(){var a;if(2==y.arguments.length)a=y.arguments[1];else if(1==y.arguments.length)a=this.plainMC;else throw"divideInteger(): "+y.arguments.length+" arguments given; expected 1 or 2";return this.dodivide("I",y.arguments[0],a,0)},z=function(){var a;if(2==z.arguments.length)a=z.arguments[1]; -else if(1==z.arguments.length)a=this.plainMC;else throw"max(): "+z.arguments.length+" arguments given; expected 1 or 2";var b=z.arguments[0];return 0<=this.compareTo(b,a)?this.plus(a):b.plus(a)},A=function(){var a;if(2==A.arguments.length)a=A.arguments[1];else if(1==A.arguments.length)a=this.plainMC;else throw"min(): "+A.arguments.length+" arguments given; expected 1 or 2";var b=A.arguments[0];return 0>=this.compareTo(b,a)?this.plus(a):b.plus(a)},B=function(){var a;if(2==B.arguments.length)a=B.arguments[1]; -else if(1==B.arguments.length)a=this.plainMC;else throw"multiply(): "+B.arguments.length+" arguments given; expected 1 or 2";var b=B.arguments[0],c,d,e,i=e=null,f,g=0,j,l=0,k=0;a.lostDigits&&this.checkdigits(b,a.digits);c=this;d=0;e=a.digits;0e&&(c=this.clone(c).round(a)),b.mant.length>e&&(b=this.clone(b).round(a))):(0e)throw"pow(): Too many digits: "+b.toString();d.mant.length>e&&(d=this.clone(d).round(a));i=b.mant.length+b.exp;e=e+i+1}e=new m(e,a.form,!1,a.roundingMode);i=this.ONE;if(0==c)return i;0>c&&(c=-c);f=!1; -g=1;a:for(;;g++){c<<=1;0>c&&(f=!0,i=i.multiply(d,e));if(31==g)break a;if(!f)continue a;i=i.multiply(i,e)}0>b.ind&&(i=this.ONE.divide(i,e));return i.finish(a,!0)},D=function(){var a;if(2==D.arguments.length)a=D.arguments[1];else if(1==D.arguments.length)a=this.plainMC;else throw"remainder(): "+D.arguments.length+" arguments given; expected 1 or 2";return this.dodivide("R",D.arguments[0],a,-1)},E=function(){var a;if(2==E.arguments.length)a=E.arguments[1];else if(1==E.arguments.length)a=this.plainMC; -else throw"subtract(): "+E.arguments.length+" arguments given; expected 1 or 2";var b=E.arguments[0];a.lostDigits&&this.checkdigits(b,a.digits);b=this.clone(b);b.ind=-b.ind;return this.add(b,a)},r=function(){var a,b,c,d;if(6==r.arguments.length)a=r.arguments[2],b=r.arguments[3],c=r.arguments[4],d=r.arguments[5];else if(2==r.arguments.length)b=a=-1,c=m.prototype.SCIENTIFIC,d=this.ROUND_HALF_UP;else throw"format(): "+r.arguments.length+" arguments given; expected 2 or 6";var e=r.arguments[0],i=r.arguments[1], -f,g=0,g=g=0,j=null,l=j=g=0;f=0;g=null;l=j=0;(-1>e||0==e)&&this.badarg("format",1,e);-1>i&&this.badarg("format",2,i);(-1>a||0==a)&&this.badarg("format",3,a);-1>b&&this.badarg("format",4,b);c!=m.prototype.SCIENTIFIC&&c!=m.prototype.ENGINEERING&&(-1==c?c=m.prototype.SCIENTIFIC:this.badarg("format",5,c));if(d!=this.ROUND_HALF_UP)try{-1==d?d=this.ROUND_HALF_UP:new m(9,m.prototype.SCIENTIFIC,!1,d)}catch(h){this.badarg("format",6,d)}f=this.clone(this);-1==b?f.form=m.prototype.PLAIN:f.ind==this.iszero?f.form= -m.prototype.PLAIN:(g=f.exp+f.mant.length,f.form=g>b?c:-5>g?c:m.prototype.PLAIN);if(0<=i)a:for(;;){f.form==m.prototype.PLAIN?g=-f.exp:f.form==m.prototype.SCIENTIFIC?g=f.mant.length-1:(g=(f.exp+f.mant.length-1)%3,0>g&&(g=3+g),g++,g=g>=f.mant.length?0:f.mant.length-g);if(g==i)break a;if(gf.mant.length){f.mant=this.ZERO.mant;f.ind=this.iszero;f.exp=0;continue a}j= -f.mant.length-g;l=f.exp;f.round(j,d);if(f.exp-l==g)break a}b=f.layout();if(0e&&this.badarg("format",1,e);if(fa&& -this.badarg("format",3,a),lb)throw"setScale(): Negative scale: "+b;c=d.mant.length-(c-b);d=d.round(c,a);d.exp!=-b&&(d.mant=this.extend(d.mant,d.mant.length+1),d.exp-=1)}d.form=m.prototype.PLAIN;return d};v=function(){var a,b=0,c=0;a=Array(190);b=0;a:for(;189>=b;b++){c=b-90;if(0<=c){a[b]=c%10;h.prototype.bytecar[b]=G(c,10);continue a}c+=100;a[b]=c%10;h.prototype.bytecar[b]=G(c,10)-10}return a};var u=function(){var a,b;if(2==u.arguments.length)a=u.arguments[0],b=u.arguments[1]; -else if(1==u.arguments.length)b=u.arguments[0],a=b.digits,b=b.roundingMode;else throw"round(): "+u.arguments.length+" arguments given; expected 1 or 2";var c,d,e=!1,i=0,f;c=null;c=this.mant.length-a;if(0>=c)return this;this.exp+=c;c=this.ind;d=this.mant;0c&&(this.allzero(d,a)||(f=c));else throw"round(): Bad round value: "+b;0!=f&&(this.ind==this.iszero?(this.mant=this.ONE.mant,this.ind=f):(this.ind== -this.isneg&&(f=-f),c=this.byteaddsub(this.mant,this.mant.length,this.ONE.mant,1,f,e),c.length>this.mant.length?(this.exp++,this.arraycopy(c,0,this.mant,0,this.mant.length)):this.mant=c));if(this.exp>this.MaxExp)throw"round(): Exponent Overflow: "+this.exp;return this};h.prototype.div=G;h.prototype.arraycopy=function(a,b,c,d,e){var i;if(d>b)for(i=e-1;0<=i;--i)c[i+d]=a[i+b];else for(i=0;ithis.exp){a+=this.exp;if(!this.allzero(this.mant,a+1))throw"intValueExact(): Decimal part non-zero: "+this.toString();if(0>a)return 0;b=0}else{if(9d&&(d=3+d), -c-=d,d++,d>=a.length){b+=a.join("");for(a=d-a.length;0c?(a="-",c=-c):a="+",b+="E",b+=a,b+=c);return b.split("")}if(0==this.exp){if(0<=this.ind)return a;d=Array(a.length+1);d[0]="-";this.arraycopy(a,0,d,1,a.length);return d}c=this.ind==this.isneg?1:0;e=this.exp+a.length;if(1>e){b=c+2-this.exp;d=Array(b);0!=c&&(d[0]="-");d[c]="0";d[c+1]=".";var i=-e,b=c+2;for(;0 -a.length){d=Array(c+e);0!=c&&(d[0]="-");this.arraycopy(a,0,d,c,a.length);e-=a.length;b=c+a.length;for(;0b)throw"intcheck(): Conversion overflow: "+c;return c};h.prototype.dodivide=function(a,b,c,d){var e,i,f,g,j,l,k,q,t,s=0,n=0,p=0;i=i=n=n=n=0;e=null;e=e=0;e=null;c.lostDigits&& -this.checkdigits(b,c.digits);e=this;if(0==b.ind)throw"dodivide(): Divide by 0";if(0==e.ind)return c.form!=m.prototype.PLAIN?this.ZERO:-1==d?e:e.setScale(d);i=c.digits;0i&&(e=this.clone(e).round(c)),b.mant.length>i&&(b=this.clone(b).round(c))):(-1==d&&(d=e.scale()),i=e.mant.length,d!=-e.exp&&(i=i+d+e.exp),i=i-(b.mant.length-1)-b.exp,if&&"D"!=a)return"I"==a?this.ZERO: -this.clone(e).finish(c,!1);g=new h;g.ind=e.ind*b.ind;g.exp=f;g.mant=this.createArrayWithZeros(i+1);j=i+i+1;f=this.extend(e.mant,j);l=j;k=b.mant;q=j;t=10*k[0]+1;1p)break c}s++;g.mant[j]=s;j++;f[0]=0;break a}while(0);n=f[0]}else n=10*f[0],1d)break a;if("D"!=a&&0>=g.exp)break a;g.exp-=1;q--}0==j&&(j=1);if("I"==a||"R"==a){if(j+g.exp>i)throw"dodivide(): Integer overflow";if("R"==a){do{if(0==g.mant[0])return this.clone(e).finish(c,!1);if(0==f[0])return this.ZERO;g.ind=e.ind;i=i+i+1-e.mant.length;g.exp=g.exp-i+e.exp;i=l;n=i-1;b:for(;1<=n&&g.expm&&0<=m){do{d[p]=m;m=0;continue a}while(0)}m+=90;d[p]=this.bytedig[m];m=this.bytecar[m]}if(0==m)return d;c=null;i&&h+2==a.length&&(c=a);null==c&&(c=Array(h+2));c[0]=m;a=h+1;f=0;for(;0b&&!this.allzero(this.mant,b))throw"Too many digits: "+ -this.toString();if(null!=a&&a.mant.length>b&&!this.allzero(a.mant,b))throw"Too many digits: "+a.toString();}};h.prototype.round=u;h.prototype.allzero=function(a,b){var c=0;0>b&&(b=0);var d=a.length-1,c=b;for(;c<=d;c++)if(0!=a[c])return!1;return!0};h.prototype.finish=function(a,b){var c=0,d=0,e=null,c=d=0;0!=a.digits&&this.mant.length>a.digits&&this.round(a);if(b&&a.form!=m.prototype.PLAIN){c=this.mant.length;d=c-1;a:for(;1<=d;d--){if(0!=this.mant[d])break a;c--;this.exp++}ca.digits&&0!=a.digits&&(this.form=a.form),d-1<=this.MaxExp)return this}else-5>d&&(this.form=a.form);d--;if(dthis.MaxExp){b:do{if(this.form==m.prototype.ENGINEERING&&(c=d%3,0>c&&(c=3+c),d-=c,d>=this.MinExp&&d<=this.MaxExp))break b; -throw"finish(): Exponent Overflow: "+d;}while(0)}return this}this.ind=this.iszero;if(a.form!=m.prototype.PLAIN)this.exp=0;else if(0this.compareTo(a)};h.prototype.isGreaterThanOrEqualTo=function(a){return 0<=this.compareTo(a)};h.prototype.isLessThanOrEqualTo= -function(a){return 0>=this.compareTo(a)};h.prototype.isPositive=function(){return 0this.compareTo(h.prototype.ZERO)};h.prototype.isZero=function(){return this.equals(h.prototype.ZERO)};h.ROUND_CEILING=h.prototype.ROUND_CEILING=m.prototype.ROUND_CEILING;h.ROUND_DOWN=h.prototype.ROUND_DOWN=m.prototype.ROUND_DOWN;h.ROUND_FLOOR=h.prototype.ROUND_FLOOR=m.prototype.ROUND_FLOOR;h.ROUND_HALF_DOWN=h.prototype.ROUND_HALF_DOWN=m.prototype.ROUND_HALF_DOWN; -h.ROUND_HALF_EVEN=h.prototype.ROUND_HALF_EVEN=m.prototype.ROUND_HALF_EVEN;h.ROUND_HALF_UP=h.prototype.ROUND_HALF_UP=m.prototype.ROUND_HALF_UP;h.ROUND_UNNECESSARY=h.prototype.ROUND_UNNECESSARY=m.prototype.ROUND_UNNECESSARY;h.ROUND_UP=h.prototype.ROUND_UP=m.prototype.ROUND_UP;h.prototype.ispos=1;h.prototype.iszero=0;h.prototype.isneg=-1;h.prototype.MinExp=-999999999;h.prototype.MaxExp=999999999;h.prototype.MinArg=-999999999;h.prototype.MaxArg=999999999;h.prototype.plainMC=new m(0,m.prototype.PLAIN); -h.prototype.bytecar=Array(190);h.prototype.bytedig=v();h.ZERO=h.prototype.ZERO=new h("0");h.ONE=h.prototype.ONE=new h("1");h.TEN=h.prototype.TEN=new h("10");v=h;"function"===typeof define&&null!=define.amd?define({BigDecimal:v,MathContext:m}):"object"===typeof this&&(this.BigDecimal=v,this.MathContext=m)}).call(this); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt deleted file mode 100644 index ca1ad2e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/perf/lib/bigdecimal_ICU4J/LICENCE.txt +++ /dev/null @@ -1,30 +0,0 @@ -Copyright (c) 2012 Daniel Trebbien and other contributors -Portions Copyright (c) 2003 STZ-IDA and PTV AG, Karlsruhe, Germany -Portions Copyright (c) 1995-2001 International Business Machines Corporation and others - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. - - - -ICU4J license - ICU4J 1.3.1 and later -COPYRIGHT AND PERMISSION NOTICE - -Copyright (c) 1995-2001 International Business Machines Corporation and others - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. - - --------------------------------------------------------------------------------- -All trademarks and registered trademarks mentioned herein are the property of their respective owners. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js deleted file mode 100644 index 8b7cdf5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/abs.js +++ /dev/null @@ -1,1080 +0,0 @@ -var count = (function abs(BigNumber) { - var start = +new Date(), - log, - error, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '

        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(expected, value){ - assert(String(expected), new BigNumber(String(value)).abs().toString()); - } - - log('\n Testing abs...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : [-7, 21] - }); - - T(1, 1); - T(1, -1); - T(0.5, '0.5'); - T(0.5, '-0.5'); - T(0.1, 0.1); - T(0.1, -0.1); - T(1.1, 1.1); - T(1.1, -1.1); - T(1.5, '1.5'); - T(1.5, '-1.5'); - - T(0.00001, '-1e-5'); - T(9000000000, '-9e9'); - T(123456.7891011, -123456.7891011); - T(999.999, '-999.999'); - T(99, 99); - T(1, new BigNumber(-1)); - T(0.001, new BigNumber(0.001)); - T(0.001, new BigNumber('-0.001')); - - T('Infinity', Infinity); - T('Infinity', -Infinity); - T(NaN, NaN); - T(NaN, -NaN); - T(0, 0); - T(0, -0); - - var minusZero = 1 / (-1 / 0); - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - T(0, 0); - T(0, -0); - T(0, minusZero); - - assert(true, isMinusZero(new BigNumber('-0'))); - assert(true, isMinusZero(new BigNumber(minusZero))); - assert(false, isMinusZero(new BigNumber(-0).abs())); - assert(false, isMinusZero(new BigNumber(minusZero).abs())); - assert(true, !isMinusZero(new BigNumber('-0').abs())); - assert(true, !isMinusZero(new BigNumber(minusZero).abs())); - - BigNumber.config({EXPONENTIAL_AT : 100}); - - T(Number.MIN_VALUE, Number.MIN_VALUE); - T(Number.MIN_VALUE, -Number.MIN_VALUE); - T(Number.MAX_VALUE, Number.MAX_VALUE); - T(Number.MAX_VALUE, -Number.MAX_VALUE); - - var two_30 = 1 << 30; - - T(two_30, two_30); - T(two_30, -two_30); - - T(two_30 + 1, two_30 + 1); - T(two_30 + 1, -two_30 - 1); - - T(two_30 - 1, two_30 - 1); - T(two_30 - 1, -two_30 + 1); - - var two_31 = 2 * two_30; - - T(two_31, two_31); - T(two_31, -two_31); - - T(two_31 + 1, two_31 + 1); - T(two_31 + 1, -two_31 - 1); - - T(two_31 - 1, two_31 - 1); - T(two_31 - 1, -two_31 + 1); - - BigNumber.config({ EXPONENTIAL_AT : [-7, 21] }); - - T(NaN, 'NaN'); - T('0', '0'); - T('1', '-1'); - T('11.121', '11.121'); - T('0.023842', '-0.023842'); - T('1.19', '-1.19'); - T('9.622e-11', '-0.00000000009622'); - T('5.09e-10', '-0.000000000509'); - T('3838.2', '3838.2'); - T('127', '127.0'); - T('4.23073', '4.23073'); - T('2.5469', '-2.5469'); - T('29949', '-29949'); - T('277.1', '-277.10'); - T('4.97898e-15', '-0.00000000000000497898'); - T('53.456', '53.456'); - T('100564', '-100564'); - T('12431.9', '-12431.9'); - T('97633.7', '-97633.7'); - T('220', '220'); - T('188.67', '-188.67'); - T('35', '-35'); - T('2.6', '-2.6'); - T('2.2e-19', '-0.000000000000000000220'); - T('1.469', '-1.469'); - T('150.7', '-150.7'); - T('74', '-74'); - T('3.52e-9', '-0.00000000352'); - T('2221.7', '-2221.7'); - T('0.000004211', '-0.000004211'); - T('1', '-1'); - T('5.886', '-5.886'); - T('16', '16'); - T('4.4493e-9', '0.0000000044493'); - T('47.6', '47.6'); - T('1.6', '-1.60'); - T('1', '-1'); - T('1.5', '-1.5'); - T('5', '-5'); - T('1', '-1'); - T('8027', '8027'); - T('6.36e-16', '-0.000000000000000636'); - T('3.87766', '3.87766'); - T('7.4', '-7.4'); - T('4.449', '-4.449'); - T('5.2218e-19', '-0.000000000000000000522180'); - T('1.3769e-11', '-0.000000000013769'); - T('7.898e-13', '-0.0000000000007898'); - T('522.9', '-522.9'); - T('16.1', '-16.1'); - T('2.15', '2.15'); - T('4.3', '4.3'); - T('3', '-3'); - T('2.8', '-2.8'); - T('1', '-1'); - T('0.0000128696', '-0.0000128696'); - T('13.33', '-13.33'); - T('0.00000132177', '-0.00000132177'); - T('1.41516', '-1.41516'); - T('180.4', '-180.4'); - T('115079', '-115079'); - T('959', '959'); - T('714.4', '714.4'); - T('1.4544', '1.4544'); - T('53.691', '53.691'); - T('2.03832e-12', '-0.00000000000203832'); - T('1', '-1'); - T('10.8', '10.8'); - T('6189.2', '-6189.2'); - T('6.30866', '6.30866'); - T('62306', '62306'); - T('4', '-4.0'); - T('997.1', '-997.1'); - T('27.4', '-27.40'); - T('9242', '9242'); - T('31.1', '-31.1'); - T('23.4', '23.4'); - T('451818', '-451818'); - T('7', '-7'); - T('1.9', '-1.9'); - T('2', '-2'); - T('112.983', '-112.983'); - T('9.36e-8', '-0.0000000936'); - T('12.8515', '12.8515'); - T('73.1', '-73.1'); - T('18.15', '18.150'); - T('11997.8', '11997.8'); - T('23.1', '-23.1'); - T('82.022', '-82.022'); - T('3.916e-20', '-0.00000000000000000003916'); - T('3.3', '-3.3'); - T('892.1', '-892.1'); - T('24.4', '24.4'); - T('72', '72.0'); - T('0.0013346', '0.0013346'); - T('10.4', '-10.4'); - T('367.5', '367.5'); - T('7', '-7'); - T('127.195', '127.195'); - T('7.89e-13', '-0.000000000000789'); - T('63', '-63'); - T('85821.2', '-85821.2'); - T('95.6', '95.6'); - T('8.9e-14', '-0.000000000000089'); - T('112.1', '-112.1'); - T('3.68', '-3.68'); - T('9', '-9'); - T('0.0000975', '-0.0000975'); - T('393.6', '-393.6'); - T('7.4', '-7.4'); - T('69.62', '-69.62'); - T('5201.3', '5201.3'); - T('163', '163'); - T('4.30732', '4.30732'); - T('224.49', '-224.49'); - T('319.8', '-319.8'); - T('88.1', '-88.1'); - T('2.7762e-8', '0.000000027762'); - T('2.043e-7', '-0.0000002043'); - T('75459.3', '-75459.3'); - T('0.178', '0.178'); - T('0.00001633', '0.00001633'); - T('955', '955'); - T('373898', '-373898'); - T('9780.1', '9780.1'); - T('503.47', '503.47'); - T('3.44562', '-3.44562'); - T('1.6', '-1.6'); - T('1.22442', '-1.22442'); - T('1.4', '1.4'); - T('1219.1', '-1219.1'); - T('2.7', '-2.7'); - T('1057', '-1057'); - T('1938', '1938'); - T('1.1983', '1.1983'); - T('0.0012', '-0.0012'); - T('95.713', '-95.713'); - T('2', '-2'); - T('17.24', '-17.24'); - T('10.3', '-10.3'); - T('1', '-1'); - T('65.8', '-65.8'); - T('2.9', '2.9'); - T('54149', '54149'); - T('8', '-8'); - T('1', '1.0'); - T('4', '-4'); - T('6.3', '-6.3'); - T('5.25e-9', '0.00000000525'); - T('52.3', '-52.3'); - T('75290', '-75290'); - T('5.9', '-5.9'); - T('13.7', '13.7'); - T('2.3982e-9', '0.0000000023982'); - T('91.5', '-91.50'); - T('2072.39', '2072.39'); - T('385.6', '385.6'); - T('4.77', '4.77'); - T('18.72', '18.720'); - T('2817', '-2817'); - T('44535', '-44535'); - T('655', '655'); - T('2e-15', '-0.0000000000000020'); - T('0.625', '0.6250'); - T('2', '-2'); - T('5.315', '5.315'); - T('70.9', '70.90'); - T('6.4', '6.4'); - T('1824', '1824'); - T('52.595', '52.595'); - T('3662', '3662.0'); - T('3.1', '3.1'); - T('1.05032e-7', '0.000000105032'); - T('997.063', '-997.063'); - T('41746', '-41746'); - T('24.0402', '24.0402'); - T('0.009135', '0.009135'); - T('2.34e-9', '-0.00000000234'); - T('13.1', '13.1'); - T('228.8', '228.8'); - T('565.85', '565.85'); - T('4e-20', '0.000000000000000000040'); - T('1.73', '1.73'); - T('38.9', '38.9'); - T('1.02e-14', '-0.0000000000000102'); - T('302.8', '-302.8'); - T('7', '-7'); - T('1', '-1'); - T('0.00247', '0.00247'); - T('2', '-2'); - T('3.26', '-3.26'); - T('8.8', '8.8'); - T('90.6', '90.6'); - T('8.3053e-17', '-0.000000000000000083053'); - T('2.5', '-2.5'); - T('376.2', '-376.2'); - T('1.29', '1.29'); - T('1.379', '-1.379'); - T('40921.5', '-40921.5'); - T('1', '-1'); - T('12.5', '12.5'); - T('10.1', '10.1'); - T('1', '-1'); - T('226636', '226636'); - T('1', '-1'); - T('1.7', '-1.7'); - T('31.31', '31.31'); - T('79.9', '-79.9'); - T('4.027e-13', '0.0000000000004027'); - T('43.838', '43.838'); - T('6.47', '-6.47'); - T('5.292e-19', '0.0000000000000000005292'); - T('4.6', '-4.6'); - T('15918', '-15918.0'); - T('239.45', '239.45'); - T('1.02', '-1.02'); - T('14101', '-14101'); - T('7', '-7'); - T('367.34', '367.34'); - T('5', '-5'); - T('19.9', '-19.9'); - T('269.45', '-269.45'); - T('10.34', '-10.34'); - T('3.32882e-12', '-0.00000000000332882'); - T('5.9', '5.9'); - T('9', '-9.0'); - T('1.3597', '-1.3597'); - T('8', '8.0'); - T('1', '1.0'); - T('312.5', '312.5'); - T('1.554', '-1.554'); - T('210.985', '-210.985'); - T('1', '-1'); - T('1.24', '-1.24'); - T('513865', '-513865'); - T('6748', '-6748'); - T('591.51', '-591.51'); - T('2.2', '-2.2'); - T('19.5495', '19.5495'); - T('3.3', '3.3'); - T('30', '-30'); - T('94', '-94'); - T('217.55', '217.55'); - T('2', '-2'); - T('99', '99'); - T('4.067', '-4.067'); - T('702.57', '702.57'); - T('3.7', '-3.70'); - T('4', '4.0'); - T('192944', '192944'); - T('0.000022', '0.000022'); - T('47.6', '47.60'); - T('0.391', '0.3910'); - T('35', '-35'); - T('100', '-100'); - T('3.3', '-3.3'); - T('32.432', '32.432'); - T('1.07849e-18', '0.00000000000000000107849'); - T('2', '-2.0'); - T('23.27', '23.27'); - T('4.054e-15', '-0.000000000000004054'); - T('7.6', '-7.6'); - T('1305', '1305'); - T('1.501', '-1.501'); - T('3.4', '3.4'); - T('22.5', '-22.5'); - T('1.0916', '1.0916'); - T('2', '-2'); - T('58.271', '58.271'); - T('1.73e-12', '0.00000000000173'); - T('1.3458e-15', '0.0000000000000013458'); - T('309.87', '-309.87'); - T('5.318', '-5.318'); - T('1.5302e-8', '0.000000015302'); - T('596765', '596765'); - T('54.42', '-54.42'); - T('6.549e-20', '0.00000000000000000006549'); - T('29', '29'); - T('46.025', '46.025'); - T('2556.78', '-2556.78'); - T('0.00287721', '0.00287721'); - T('1.63', '-1.63'); - T('0.00041', '0.00041'); - T('698', '698'); - T('134.4', '134.4'); - T('2.1', '2.1'); - T('2.07', '-2.07'); - T('122.869', '122.869'); - T('0.00017', '-0.00017'); - T('18.6', '18.6'); - T('7', '-7'); - T('0.0180557', '0.0180557'); - T('5', '-5'); - T('6.2', '-6.2'); - T('8', '-8'); - T('450.96', '-450.96'); - T('20.2', '-20.2'); - T('176.52', '176.52'); - T('0.00017', '-0.000170'); - T('5', '-5'); - T('1', '-1'); - T('1.37856e-14', '0.0000000000000137856'); - T('76.3048', '76.3048'); - T('1803.7', '-1803.7'); - T('74', '74'); - T('1.7e-12', '0.0000000000017'); - T('48.7', '-48.7'); - T('4.48', '-4.48'); - T('1.4', '-1.4'); - T('7.69', '-7.69'); - T('23.5987', '23.5987'); - T('3074', '3074.0'); - T('8.06e-15', '-0.00000000000000806'); - T('21.3757', '-21.3757'); - T('35', '35'); - T('11.056', '11.0560'); - T('3.36e-14', '-0.0000000000000336'); - T('49139.4', '-49139.4'); - T('32.654', '-32.654'); - T('34035.4', '34035.4'); - T('15.22', '15.22'); - T('62', '62.0'); - T('8.89156', '-8.89156'); - T('14', '14'); - T('0.006', '-0.0060'); - T('1.5', '1.5'); - T('7', '-7'); - T('1.6e-11', '0.000000000016'); - T('26.6427', '26.6427'); - T('1.5e-18', '-0.0000000000000000015'); - T('1.52838e-15', '0.00000000000000152838'); - T('119.1', '119.1'); - T('0.004283', '0.004283'); - T('818', '-818'); - T('194', '194'); - T('104.788', '-104.788'); - T('3.74e-11', '0.0000000000374'); - T('6.162', '-6.162'); - T('5.19214e-18', '-0.00000000000000000519214'); - T('1.4', '-1.4'); - T('1.27', '-1.27'); - T('7.83822e-12', '-0.00000000000783822'); - T('1', '-1'); - T('4.4', '4.4'); - T('7.37382e-12', '0.00000000000737382'); - T('13.618', '13.618'); - T('1.03', '-1.03'); - T('3.7457e-13', '0.00000000000037457'); - T('5.2', '-5.2'); - T('3.5', '3.5'); - T('364', '-364'); - T('7.336', '7.336'); - T('1.1447e-16', '-0.00000000000000011447'); - T('510.63', '-510.63'); - T('5.8', '5.8'); - T('7.8', '7.8'); - T('2.96', '-2.96'); - T('15.64', '-15.64'); - T('187863', '-187863'); - T('2.73', '-2.73'); - T('2.671', '-2.671'); - T('18.179', '-18.179'); - T('855885', '855885'); - T('4.16', '4.16'); - T('5.722e-18', '0.000000000000000005722'); - T('67.62', '67.62'); - T('813.31', '813.31'); - T('40.2', '40.20'); - T('0.00002515', '0.00002515'); - T('0.0196', '0.01960'); - T('13.165', '13.165'); - T('6.743', '-6.743'); - T('1', '-1'); - T('200.56', '-200.56'); - T('1.932', '1.932'); - T('92.9', '92.90'); - T('16.74', '16.74'); - T('4.5554e-7', '-0.00000045554'); - T('2.1296e-15', '-0.0000000000000021296'); - T('2.088', '2.088'); - T('2577', '2577'); - T('45.4', '-45.4'); - T('41.3', '-41.3'); - T('3.63', '-3.63'); - T('1.09', '-1.09'); - T('1', '-1'); - T('3.7', '-3.7'); - T('204.54', '204.54'); - T('235.6', '235.6'); - T('384', '-384'); - T('0.0207', '0.02070'); - T('680', '680'); - T('1.09', '1.09'); - T('109.2', '109.2'); - T('0.00010117', '0.00010117'); - T('13.81', '13.81'); - T('192.3', '192.3'); - T('1', '-1'); - T('1.2', '1.2'); - T('4.1', '-4.1'); - T('2.5', '2.5'); - T('8.4076', '-8.4076'); - T('0.0517', '0.0517'); - T('6.3923', '-6.3923'); - T('506.179', '-506.179'); - T('375886', '375886'); - T('618858', '-618858'); - T('8.5e-11', '0.000000000085'); - T('6', '-6.0'); - T('2.4', '2.40'); - T('0.0000013', '-0.0000013'); - T('1.064', '-1.064'); - T('1', '-1'); - T('4', '-4'); - T('4.5', '-4.5'); - T('93.6206', '93.6206'); - T('3.07e-18', '0.00000000000000000307'); - - BigNumber.config({EXPONENTIAL_AT : 0}); - - T('5.2452468128e+1', '-5.2452468128e+1'); - T('1.41525905257189365008396e+16', '1.41525905257189365008396e+16'); - T('2.743068083928e+11', '2.743068083928e+11'); - T('1.52993064722314247378724599e+26', '-1.52993064722314247378724599e+26'); - T('3.7205576746e+10', '3.7205576746e+10'); - T('8.680996444609343472665e+17', '8.680996444609343472665e+17'); - T('1.254549e+3', '1.254549e+3'); - T('6.23417196172381875892300762819e-18', '6.23417196172381875892300762819e-18'); - T('1.31179940821919284431e+19', '1.31179940821919284431e+19'); - T('9.7697726168e+7', '9.7697726168e+7'); - T('2.663e-10', '-2.663e-10'); - T('1.26574209965030360615518e+17', '-1.26574209965030360615518e+17'); - T('1.052e+3', '1.052e+3'); - T('4.452945872502e+6', '-4.452945872502e+6'); - T('2.95732460816619226e+13', '2.95732460816619226e+13'); - T('1.1923100194288654481424e+18', '-1.1923100194288654481424e+18'); - T('8.99315449050893705e+6', '8.99315449050893705e+6'); - T('5.200726538434486963e+8', '5.200726538434486963e+8'); - T('1.182618278949368566264898065e+18', '1.182618278949368566264898065e+18'); - T('3.815873266712e-20', '-3.815873266712e-20'); - T('1.316675370382742615e+6', '-1.316675370382742615e+6'); - T('2.1032502e+6', '-2.1032502e+6'); - T('1.8e+1', '1.8e+1'); - T('1.033525906631680944018544811261e-13', '1.033525906631680944018544811261e-13'); - T('1.102361746443461856816e+14', '-1.102361746443461856816e+14'); - T('8.595358491143959e+1', '8.595358491143959e+1'); - T('3.6908859412618413e+9', '-3.6908859412618413e+9'); - T('2.25907048615912944e+5', '-2.25907048615912944e+5'); - T('1.7441871813329475518e+19', '-1.7441871813329475518e+19'); - T('3.805493087068952925e-11', '-3.805493087068952925e-11'); - T('3.58049465451e+9', '-3.58049465451e+9'); - T('8.0688614291e+10', '-8.0688614291e+10'); - T('3.337855e+4', '-3.337855e+4'); - T('2.59977855e+8', '2.59977855e+8'); - T('4.96353e+4', '-4.96353e+4'); - T('7.47233581107861762e-13', '7.47233581107861762e-13'); - T('1.73948e-2', '1.73948e-2'); - T('5.784e-15', '5.784e-15'); - T('4.448338479762497e-8', '4.448338479762497e-8'); - T('3.9008023052e+8', '3.9008023052e+8'); - T('3e+0', '3e+0'); - T('8.61435e-9', '8.61435e-9'); - T('4.37e+1', '-4.37e+1'); - T('8.4034159379836e-18', '-8.4034159379836e-18'); - T('2.002857355721079885824481e+7', '2.002857355721079885824481e+7'); - T('7.000871862e+6', '-7.000871862e+6'); - T('2.2902057767e+9', '2.2902057767e+9'); - T('5.9896443375617e+8', '5.9896443375617e+8'); - T('1.53503650707e-11', '-1.53503650707e-11'); - T('2.0508347e+6', '2.0508347e+6'); - T('4.789433e+2', '-4.789433e+2'); - T('8.28161975302168665599e+11', '8.28161975302168665599e+11'); - T('1.2518396296278445e-5', '1.2518396296278445e-5'); - T('1.44290332e+8', '-1.44290332e+8'); - T('4.6570237501625609051773e-12', '4.6570237501625609051773e-12'); - T('7.8514960198282212436e+19', '7.8514960198282212436e+19'); - T('1.6197e-20', '1.6197e-20'); - T('6.51635176e+0', '-6.51635176e+0'); - T('4.49618e+3', '-4.49618e+3'); - T('1.32052259561417e-1', '-1.32052259561417e-1'); - T('2.09089580968e-18', '2.09089580968e-18'); - T('1.4064735615678257623873854709e-1', '1.4064735615678257623873854709e-1'); - T('3.14172e+0', '-3.14172e+0'); - T('1.7458792e+1', '1.7458792e+1'); - T('9.97831655282e+11', '9.97831655282e+11'); - T('1.94594e+1', '-1.94594e+1'); - T('1.2174602334491e+5', '-1.2174602334491e+5'); - T('1.12135222651239e+6', '-1.12135222651239e+6'); - T('6.3160490484343918e-20', '6.3160490484343918e-20'); - T('1.9238315686509393329629520842e+24', '1.9238315686509393329629520842e+24'); - T('9.915274405618026e+11', '-9.915274405618026e+11'); - T('2.3564687894712721487205001557e+28', '2.3564687894712721487205001557e+28'); - T('8.127315365677288172165e+2', '8.127315365677288172165e+2'); - T('4.93e+0', '-4.93e+0'); - T('1.41530382e+0', '-1.41530382e+0'); - T('4.86451432707435321820779e+19', '-4.86451432707435321820779e+19'); - T('1.4162540859e+0', '-1.4162540859e+0'); - T('4.646e+2', '-4.646e+2'); - T('2.1172e-14', '-2.1172e-14'); - T('8.69000536011392432707132752e-11', '8.69000536011392432707132752e-11'); - T('2.52776394053478133209e+20', '2.52776394053478133209e+20'); - T('8.500211152e+9', '8.500211152e+9'); - T('1.36178922026634255436879e+23', '1.36178922026634255436879e+23'); - T('4.6398705910903109e+3', '-4.6398705910903109e+3'); - T('2.15872185740218265392874524e+18', '2.15872185740218265392874524e+18'); - T('2.4663508855569609277266393e-3', '-2.4663508855569609277266393e-3'); - T('5.247072789229625795e+11', '-5.247072789229625795e+11'); - T('1.142743622516581e-15', '-1.142743622516581e-15'); - T('3.70055552960951165e-4', '-3.70055552960951165e-4'); - T('1.01218e+3', '1.01218e+3'); - T('3.622286100282e+2', '3.622286100282e+2'); - T('9.5526239814e+3', '9.5526239814e+3'); - T('2.7619598176203983624994361644e+28', '2.7619598176203983624994361644e+28'); - T('6.8696488497688008067537526e-6', '6.8696488497688008067537526e-6'); - T('2.48936e+1', '2.48936e+1'); - T('3.27658301230616e+14', '3.27658301230616e+14'); - T('2.1887387e+0', '-2.1887387e+0'); - T('1.4779696309033248e+16', '1.4779696309033248e+16'); - T('1.471782313713309789663e+4', '1.471782313713309789663e+4'); - T('2.0674554e+2', '-2.0674554e+2'); - T('1.763392540310312024e+9', '1.763392540310312024e+9'); - T('2.66209467493293140387227569744e+26', '-2.66209467493293140387227569744e+26'); - T('1.4522423854706487171671160683e-16', '1.4522423854706487171671160683e-16'); - T('5.5534571375626084341933639e-18', '-5.5534571375626084341933639e-18'); - T('3.670610508911e-18', '-3.670610508911e-18'); - T('1.8e+1', '1.8e+1'); - T('4.21466540619392e+14', '-4.21466540619392e+14'); - T('4.57881788773078611890575215e-13', '-4.57881788773078611890575215e-13'); - T('1.14912007700989046355e+20', '1.14912007700989046355e+20'); - T('1.10572e+0', '1.10572e+0'); - T('5.45027073427600086838788178e+8', '5.45027073427600086838788178e+8'); - T('5.3607527344097728e-14', '-5.3607527344097728e-14'); - T('1.20985e+0', '1.20985e+0'); - T('2.173758396975e+4', '-2.173758396975e+4'); - T('1.443459545123362e+10', '1.443459545123362e+10'); - T('8.26154936079048787963e-19', '8.26154936079048787963e-19'); - T('1.24e+0', '-1.24e+0'); - T('6.61e+1', '6.61e+1'); - T('8.37241281e-15', '-8.37241281e-15'); - T('1.4673863119972e+5', '1.4673863119972e+5'); - T('1.052445707646628e+15', '1.052445707646628e+15'); - T('2.770216401480935105227985046e+0', '2.770216401480935105227985046e+0'); - T('1e-2', '-1e-2'); - T('2.0530189404000503380382112e+7', '-2.0530189404000503380382112e+7'); - T('7.73428930734513129e+5', '7.73428930734513129e+5'); - T('2.969e-2', '2.969e-2'); - T('3.355869237729311e-19', '3.355869237729311e-19'); - T('7.585426017526e+3', '7.585426017526e+3'); - T('1.6544419963706446557685646278e+23', '-1.6544419963706446557685646278e+23'); - T('2.92136474375552641396809118574e-18', '2.92136474375552641396809118574e-18'); - T('3.38424409165604660854e+4', '-3.38424409165604660854e+4'); - T('1.173591570196350093112e+11', '-1.173591570196350093112e+11'); - T('7.8375092064291352e+1', '-7.8375092064291352e+1'); - T('1.88191e+3', '1.88191e+3'); - T('4.6761e-2', '-4.6761e-2'); - T('5.988129995539574e+10', '5.988129995539574e+10'); - T('2.5390529009345115e+2', '2.5390529009345115e+2'); - T('2.132229656150917182e+5', '-2.132229656150917182e+5'); - T('1.0719725506854825717e-19', '-1.0719725506854825717e-19'); - T('4.3681500769125575941008112847e+28', '-4.3681500769125575941008112847e+28'); - T('1.35927075893264893848008382e-13', '-1.35927075893264893848008382e-13'); - T('1.9240692976139e-18', '-1.9240692976139e-18'); - T('4.49668506275546883445e+20', '4.49668506275546883445e+20'); - T('5.19198662387790072e+9', '5.19198662387790072e+9'); - T('1.51188431866457089e+16', '-1.51188431866457089e+16'); - T('1.4463331863500941e+12', '1.4463331863500941e+12'); - T('1e+0', '-1e+0'); - T('2.50029927958615945e+1', '-2.50029927958615945e+1'); - T('1.001415164502846757e+3', '-1.001415164502846757e+3'); - T('1.45526428e+8', '-1.45526428e+8'); - T('5.813181844e-3', '-5.813181844e-3'); - T('2.4481022856740302965057941113e+10', '2.4481022856740302965057941113e+10'); - T('5.55e+1', '-5.55e+1'); - T('3.36356932710712e+11', '-3.36356932710712e+11'); - T('5.28080163e+8', '5.28080163e+8'); - T('5.3879740593083469994135e+13', '-5.3879740593083469994135e+13'); - T('6.6759148438881472902e+19', '-6.6759148438881472902e+19'); - T('1.26e-20', '1.26e-20'); - T('1.005680289388988e+10', '-1.005680289388988e+10'); - T('1.4855958598e+0', '-1.4855958598e+0'); - T('2.94014963598446075495453768e+24', '-2.94014963598446075495453768e+24'); - T('5.219896118644e+12', '-5.219896118644e+12'); - T('6.8e+0', '-6.8e+0'); - T('5.492e-9', '-5.492e-9'); - T('1.0038e+4', '-1.0038e+4'); - T('2.781382585e+5', '2.781382585e+5'); - T('3.30150670653876784e+17', '-3.30150670653876784e+17'); - T('1.87927e+5', '-1.87927e+5'); - T('1.4774557974305197453804758396e+16', '-1.4774557974305197453804758396e+16'); - T('6.05644990832733182152086098e+18', '-6.05644990832733182152086098e+18'); - T('2.78459055955765755e-14', '-2.78459055955765755e-14'); - T('2.66385931106395122e+6', '2.66385931106395122e+6'); - T('3.3683073647556597682246e-9', '-3.3683073647556597682246e-9'); - T('7.081e+2', '7.081e+2'); - T('2.73122035866217320954404e+6', '2.73122035866217320954404e+6'); - T('1.2434001e-7', '1.2434001e-7'); - T('1.135877627944001e+14', '1.135877627944001e+14'); - T('5.59534951548380080886141393126e+21', '5.59534951548380080886141393126e+21'); - T('5.7723782191795798882571e+9', '-5.7723782191795798882571e+9'); - T('1.5162957113185485632499369443e-12', '-1.5162957113185485632499369443e-12'); - T('4.29309951955288963780116e+6', '4.29309951955288963780116e+6'); - T('3.9722643229317825409e+13', '3.9722643229317825409e+13'); - T('1.011489199242414759e-17', '1.011489199242414759e-17'); - T('1.253643670639200989056241e-19', '-1.253643670639200989056241e-19'); - T('4.4836025129185e+8', '4.4836025129185e+8'); - T('6.3777231879677253018091496e-20', '6.3777231879677253018091496e-20'); - T('4.76278478201471177044e+11', '4.76278478201471177044e+11'); - T('1.05e+2', '-1.05e+2'); - T('8.2407974521826916377252018422e+18', '8.2407974521826916377252018422e+18'); - T('2.00932156087e+4', '2.00932156087e+4'); - T('1.965992456941204354956867603e-17', '-1.965992456941204354956867603e-17'); - T('5.333218599567659131313e+2', '-5.333218599567659131313e+2'); - T('1.286162439284e+10', '-1.286162439284e+10'); - T('8.1336617205815143346477183e+16', '-8.1336617205815143346477183e+16'); - T('1.762845949430042e+13', '-1.762845949430042e+13'); - T('7.837280986421e+12', '7.837280986421e+12'); - T('2.84048190010833793e+13', '2.84048190010833793e+13'); - T('3.25755301782427035301e+20', '-3.25755301782427035301e+20'); - T('2.58959421885729898387238225e+13', '2.58959421885729898387238225e+13'); - T('1.8851093513683294449e+10', '-1.8851093513683294449e+10'); - T('1.21916240456196024666e+20', '-1.21916240456196024666e+20'); - T('5.840503333749926899855535241e-6', '5.840503333749926899855535241e-6'); - T('2.998914116e+4', '2.998914116e+4'); - T('5.97277308650934e+10', '5.97277308650934e+10'); - T('6.56e+2', '6.56e+2'); - T('1.56235984592541e+12', '-1.56235984592541e+12'); - T('3.71e+1', '3.71e+1'); - T('5.41937441824138694e+16', '-5.41937441824138694e+16'); - T('6.116633e-5', '-6.116633e-5'); - T('5.45e+2', '-5.45e+2'); - T('2.9449785444e+3', '-2.9449785444e+3'); - T('6.6706550091070638245894e+7', '-6.6706550091070638245894e+7'); - T('1.39231027e-9', '1.39231027e-9'); - T('7.45311483e+8', '7.45311483e+8'); - T('7.6856950378651228179663e+18', '7.6856950378651228179663e+18'); - T('3.094636736003620629e+8', '-3.094636736003620629e+8'); - T('5.876896131624540495694931644e+7', '-5.876896131624540495694931644e+7'); - T('1.10975974e+8', '-1.10975974e+8'); - T('1.741e+0', '1.741e+0'); - T('2.351595813466272408066e-4', '-2.351595813466272408066e-4'); - T('1.519156959043394168562e+20', '1.519156959043394168562e+20'); - T('1.620081571051799e+7', '1.620081571051799e+7'); - T('7.316815038867932520586761e+23', '7.316815038867932520586761e+23'); - T('3.094134522833396822e+0', '3.094134522833396822e+0'); - T('1.168234556e+2', '-1.168234556e+2'); - T('1.503324779432e+4', '1.503324779432e+4'); - T('5.6710777e-9', '5.6710777e-9'); - T('2.1463873346182e-6', '2.1463873346182e-6'); - T('1.2934324795526700185311026007e+28', '-1.2934324795526700185311026007e+28'); - T('1.237009087265757433674283664e+11', '1.237009087265757433674283664e+11'); - T('1.226806049797304683867e-18', '1.226806049797304683867e-18'); - T('5e+0', '-5e+0'); - T('1.091168788407093537887970016e+15', '-1.091168788407093537887970016e+15'); - T('3.87166413612272027e+12', '3.87166413612272027e+12'); - T('1.411514e+5', '1.411514e+5'); - T('1.0053454672509859631996e+22', '1.0053454672509859631996e+22'); - T('6.9265714e+0', '6.9265714e+0'); - T('1.04627709e+4', '1.04627709e+4'); - T('1.74378341199e+9', '1.74378341199e+9'); - T('8.427721739784805398864e+21', '-8.427721739784805398864e+21'); - T('3.0433401636913618083715e-20', '3.0433401636913618083715e-20'); - T('8.596751182989204e-17', '8.596751182989204e-17'); - T('2.83012114501087201358049280895e-3', '2.83012114501087201358049280895e-3'); - T('6.0621417107465763e-13', '6.0621417107465763e-13'); - T('7.927e+0', '7.927e+0'); - T('1.95309091153617e+6', '-1.95309091153617e+6'); - T('3.479245772e-4', '3.479245772e-4'); - T('9.1256366370332e-20', '-9.1256366370332e-20'); - T('6.357737394e-19', '-6.357737394e-19'); - T('4.016038725869e-1', '4.016038725869e-1'); - T('2.3600611340992838105408e-2', '-2.3600611340992838105408e-2'); - T('1.1982e+3', '1.1982e+3'); - T('1.895744317788222501065084139e+17', '1.895744317788222501065084139e+17'); - T('3.2450271098259184465439822499e+5', '3.2450271098259184465439822499e+5'); - T('1.1699868235212007000965506e+25', '-1.1699868235212007000965506e+25'); - T('7.988985662262809183538221216e+27', '-7.988985662262809183538221216e+27'); - T('1.476540158366695285164548325e+7', '-1.476540158366695285164548325e+7'); - T('8.8357361253e+1', '-8.8357361253e+1'); - T('2.6019583787920961e+15', '-2.6019583787920961e+15'); - T('2.617913486220978003463345e+24', '2.617913486220978003463345e+24'); - T('8.22380392476331112656616e+14', '-8.22380392476331112656616e+14'); - T('5.738943e+2', '-5.738943e+2'); - T('1.04315155601043625824403526143e+24', '-1.04315155601043625824403526143e+24'); - T('5.1800101324564241e-1', '-5.1800101324564241e-1'); - T('3.5101750876959537987e-8', '3.5101750876959537987e-8'); - T('2.1857385393e+3', '-2.1857385393e+3'); - T('2.29674272702302434336e+13', '2.29674272702302434336e+13'); - T('2.64606405319747e+14', '2.64606405319747e+14'); - T('2.1888980498865372455451e+1', '-2.1888980498865372455451e+1'); - T('1.51602e+0', '-1.51602e+0'); - T('5.8047548e+7', '5.8047548e+7'); - T('1.17525103769842428108679e+6', '-1.17525103769842428108679e+6'); - T('8.47642371517851e-1', '-8.47642371517851e-1'); - T('6.0574e+0', '-6.0574e+0'); - T('2.59202859815854485362744156646e-3', '2.59202859815854485362744156646e-3'); - T('1.040746238422014004691755e+15', '1.040746238422014004691755e+15'); - T('1.7064734811115159257936e+22', '-1.7064734811115159257936e+22'); - T('7.26051238227573319908663048e+26', '7.26051238227573319908663048e+26'); - T('7.4795685183599759424050861e+6', '-7.4795685183599759424050861e+6'); - T('2.9817e-16', '-2.9817e-16'); - T('2.298907884272330951e+6', '2.298907884272330951e+6'); - T('4.0531847e-8', '4.0531847e-8'); - T('2.6189e+4', '-2.6189e+4'); - T('3.911906e+3', '-3.911906e+3'); - T('9.408498865993245868145865993e+2', '-9.408498865993245868145865993e+2'); - T('4.05451047373376774e-7', '4.05451047373376774e-7'); - T('2.08836709959016517e+6', '-2.08836709959016517e+6'); - T('6.3417891663e+10', '6.3417891663e+10'); - T('8.08596745e+9', '8.08596745e+9'); - T('2.5865615419545921e+13', '2.5865615419545921e+13'); - T('1.5731674925482283378868e+22', '-1.5731674925482283378868e+22'); - T('1.19068602e+1', '-1.19068602e+1'); - T('5.3687670881355020502668e-3', '-5.3687670881355020502668e-3'); - T('1.2488884456407e+10', '-1.2488884456407e+10'); - T('2.51800212e+3', '-2.51800212e+3'); - T('3.738131519976930832896022e+24', '-3.738131519976930832896022e+24'); - T('6e+0', '6e+0'); - T('1.24131e+5', '-1.24131e+5'); - T('9.22635e+3', '-9.22635e+3'); - T('4e+0', '4e+0'); - T('1.83e+1', '1.83e+1'); - T('1.846025e+6', '-1.846025e+6'); - T('1.27e+1', '1.27e+1'); - T('2.24e+1', '2.24e+1'); - T('2.476323257183413822109348e-18', '-2.476323257183413822109348e-18'); - T('1.926752842e-7', '1.926752842e-7'); - T('8.80612762892681839383e-19', '8.80612762892681839383e-19'); - T('1.101085e+3', '-1.101085e+3'); - T('3.4906077350467600648759e+22', '3.4906077350467600648759e+22'); - T('1.04494855994965735236868e+23', '1.04494855994965735236868e+23'); - T('1.58387879923230822739579e+19', '1.58387879923230822739579e+19'); - T('4.213902971419525700930675e+19', '-4.213902971419525700930675e+19'); - T('9.13804011600009749427632034e+0', '9.13804011600009749427632034e+0'); - T('1.84491548817806624708211e+23', '-1.84491548817806624708211e+23'); - T('1.948625124086563483825890385e+22', '1.948625124086563483825890385e+22'); - T('1.3e+0', '1.3e+0'); - T('1.32939216745e+12', '1.32939216745e+12'); - T('7.078251628e+6', '7.078251628e+6'); - T('1.7313022e+2', '1.7313022e+2'); - T('3.415584872774897359156e+0', '3.415584872774897359156e+0'); - T('5.51297107980065895009041695e+23', '5.51297107980065895009041695e+23'); - T('2.5113503918614988744859e-15', '2.5113503918614988744859e-15'); - T('1.630239450859331215249576367e+27', '1.630239450859331215249576367e+27'); - T('5.4721390329589760404415744136e+18', '-5.4721390329589760404415744136e+18'); - T('2.945751278429364126367812e-17', '2.945751278429364126367812e-17'); - T('4.2782880893227686126997e+4', '4.2782880893227686126997e+4'); - T('1.9847055931e+1', '-1.9847055931e+1'); - T('2.261026e+3', '-2.261026e+3'); - T('1.52615708575e+9', '1.52615708575e+9'); - T('4.55553743697189921932e+5', '-4.55553743697189921932e+5'); - T('4.222829719336993778496867e+12', '4.222829719336993778496867e+12'); - T('4.485e+3', '4.485e+3'); - T('5.2e+0', '-5.2e+0'); - T('1.845091473820299081635836e+6', '1.845091473820299081635836e+6'); - T('5.46863948617381450255744e-14', '-5.46863948617381450255744e-14'); - T('3.0245e+4', '3.0245e+4'); - T('1.53486267119215101935302e-6', '-1.53486267119215101935302e-6'); - T('6.4843132478784299210571e+16', '6.4843132478784299210571e+16'); - T('4.386363241636966071e+13', '-4.386363241636966071e+13'); - T('7.581683508504e+6', '7.581683508504e+6'); - T('1.09730944345409824e+16', '1.09730944345409824e+16'); - T('3.594503e+6', '-3.594503e+6'); - T('4.443273220375505949638436659e+1', '4.443273220375505949638436659e+1'); - T('1.70867026016477719112e+20', '-1.70867026016477719112e+20'); - T('1.29553439888e+11', '-1.29553439888e+11'); - T('1.1130502308247230952431e-11', '1.1130502308247230952431e-11'); - T('6.058565749e+10', '-6.058565749e+10'); - T('3.87180284987679e-10', '-3.87180284987679e-10'); - T('3.49184930268913133535e+19', '3.49184930268913133535e+19'); - T('9e+0', '9e+0'); - T('1.28461567447442016927071963077e-8', '-1.28461567447442016927071963077e-8'); - T('2.72815445800161137e-19', '2.72815445800161137e-19'); - T('5.849268583211e-4', '5.849268583211e-4'); - T('3.19417089569942412006e+3', '-3.19417089569942412006e+3'); - T('1.9e+1', '-1.9e+1'); - T('3.3872886317814608310483125577e+6', '3.3872886317814608310483125577e+6'); - T('3.99977971703789643632671956e+9', '-3.99977971703789643632671956e+9'); - T('1.998549e-5', '1.998549e-5'); - T('7.18512424913e-15', '7.18512424913e-15'); - T('9.365052273317995234261e+21', '9.365052273317995234261e+21'); - T('2.569e+3', '-2.569e+3'); - T('9.460553674215355e+3', '-9.460553674215355e+3'); - T('1.22541e+2', '-1.22541e+2'); - T('2.180882957e-2', '-2.180882957e-2'); - T('3.963983308804e-5', '3.963983308804e-5'); - T('4.9059909584804e+11', '4.9059909584804e+11'); - T('3.89345544e+8', '-3.89345544e+8'); - T('3.13811755993550161609599737307e+9', '3.13811755993550161609599737307e+9'); - T('2.1684124657298e+7', '2.1684124657298e+7'); - T('4e+0', '4e+0'); - T('1.89e+1', '-1.89e+1'); - T('1.0500428125617165569673e+6', '1.0500428125617165569673e+6'); - T('3.45971690973815432646e+9', '-3.45971690973815432646e+9'); - T('4e+0', '-4e+0'); - T('1.2826728638181755448600624e+4', '-1.2826728638181755448600624e+4'); - T('5.2490288314345e+5', '5.2490288314345e+5'); - T('8.46401e+0', '8.46401e+0'); - T('2.15070506987596858e-9', '2.15070506987596858e-9'); - T('1.4569180505e+5', '-1.4569180505e+5'); - T('1.75535288191468954993283e+8', '-1.75535288191468954993283e+8'); - T('1.83e-19', '1.83e-19'); - T('3.77847393193912874449578e+6', '3.77847393193912874449578e+6'); - T('2.823610210086368e+0', '2.823610210086368e+0'); - T('3.2326e+4', '-3.2326e+4'); - T('7.21208310236919171558e+7', '-7.21208310236919171558e+7'); - T('2.537182162994085967e+11', '2.537182162994085967e+11'); - T('2.4881474405e-15', '2.4881474405e-15'); - T('6.8484737e+6', '6.8484737e+6'); - T('8.09636762896763e+1', '8.09636762896763e+1'); - T('1.387805e+1', '-1.387805e+1'); - T('1.949086825141843503e-3', '-1.949086825141843503e-3'); - T('8.22006002683570972726913386e+26', '-8.22006002683570972726913386e+26'); - T('8.82e+1', '-8.82e+1'); - T('9.8e+0', '-9.8e+0'); - T('5.73018e+5', '-5.73018e+5'); - T('2.039854296e-18', '2.039854296e-18'); - T('3.85806698884e+2', '3.85806698884e+2'); - T('7.761351239715879e-15', '-7.761351239715879e-15'); - T('2.37976961448611739e-13', '2.37976961448611739e-13'); - T('1.625694436559179391897024e-12', '-1.625694436559179391897024e-12'); - T('2.612e+1', '-2.612e+1'); - T('8.317023570754122191146041e+24', '8.317023570754122191146041e+24'); - T('8.128823e-9', '8.128823e-9'); - T('3.316888938212137e-7', '3.316888938212137e-7'); - T('4.590734e+2', '4.590734e+2'); - T('9.95284154681380079083087718e-7', '9.95284154681380079083087718e-7'); - T('1.379051e-15', '1.379051e-15'); - T('2.543347781939297185736e+21', '-2.543347781939297185736e+21'); - T('1.41496183748704601485699e-10', '-1.41496183748704601485699e-10'); - T('3.11665e+5', '-3.11665e+5'); - T('6.4377728353162694052697e+1', '6.4377728353162694052697e+1'); - T('1.36920115218557491e+17', '1.36920115218557491e+17'); - T('1.27e+1', '-1.27e+1'); - T('5.1e-4', '5.1e-4'); - T('4.124e+3', '4.124e+3'); - T('7.96e+0', '7.96e+0'); - T('1.0109019145999979839008159507e-20', '1.0109019145999979839008159507e-20'); - T('1.507784067070212e+12', '1.507784067070212e+12'); - T('5.03530585620864526983697e+10', '5.03530585620864526983697e+10'); - T('5.87771648701709094e-3', '-5.87771648701709094e-3'); - T('2.6641175511284360931e+19', '2.6641175511284360931e+19'); - T('3.5430949752e+3', '-3.5430949752e+3'); - T('1.434481e+6', '1.434481e+6'); - T('6.95e+0', '6.95e+0'); - T('2.7922814988487634078255e+17', '2.7922814988487634078255e+17'); - T('1e+0', '-1e+0'); - T('1.34094272275111823704509269719e+9', '-1.34094272275111823704509269719e+9'); - T('5.2e+0', '5.2e+0'); - T('5.961731008805248930549e+0', '5.961731008805248930549e+0'); - T('1.95863217313239788358925850999e+27', '1.95863217313239788358925850999e+27'); - T('1.115927378282807678794111117e+18', '-1.115927378282807678794111117e+18'); - T('6.6448e-6', '-6.6448e-6'); - T('1.210298078691983e-7', '1.210298078691983e-7'); - T('1.55022703113469956595e+8', '-1.55022703113469956595e+8'); - T('2.519409262126392490249e+9', '-2.519409262126392490249e+9'); - T('8.3744112435155841906e+19', '8.3744112435155841906e+19'); - T('5.56052914013431e-4', '5.56052914013431e-4'); - T('1.847716075495989e+13', '-1.847716075495989e+13'); - T('5.78580529835020695846e+19', '-5.78580529835020695846e+19'); - T('7.3177e-15', '-7.3177e-15'); - T('5.8018949e+6', '-5.8018949e+6'); - T('1.234850494854913982840923624126e+30', '1.234850494854913982840923624126e+30'); - T('3.1e+0', '3.1e+0'); - T('3.085340434810406103e+4', '3.085340434810406103e+4'); - T('1.461332e+6', '1.461332e+6'); - T('2.042933164181166e-9', '2.042933164181166e-9'); - T('1.14852656434391849784404293276e-6', '1.14852656434391849784404293276e-6'); - T('8.56930722573e-11', '8.56930722573e-11'); - T('7.753629727831898e+11', '7.753629727831898e+11'); - T('2.5807119689e+5', '-2.5807119689e+5'); - T('6.5889872564e+7', '6.5889872564e+7'); - T('6.2e+0', '6.2e+0'); - T('7.16926024589772e+14', '-7.16926024589772e+14'); - T('2.444762609546357e-12', '2.444762609546357e-12'); - T('1.58017211706879e+2', '-1.58017211706879e+2'); - T('2.74612804105217564273009e+23', '-2.74612804105217564273009e+23'); - T('8.2105e+3', '-8.2105e+3'); - T('6.2289747e+7', '-6.2289747e+7'); - T('4.47847136680063365276e+21', '-4.47847136680063365276e+21'); - T('7.599263848474204e+15', '-7.599263848474204e+15'); - T('9.534064037670226206e-11', '-9.534064037670226206e-11'); - T('5.3511395608925655035624181e+7', '-5.3511395608925655035624181e+7'); - T('2.536656469414e+8', '2.536656469414e+8'); - T('4.454301005499233196018257e+16', '-4.454301005499233196018257e+16'); - T('2.3289800995961777747097e+10', '-2.3289800995961777747097e+10'); - T('2.7363696755334e+6', '-2.7363696755334e+6'); - T('2.56e+2', '2.56e+2'); - T('7.3430201092837e+2', '7.3430201092837e+2'); - T('1.114804e+5', '1.114804e+5'); - T('3.1845809556698336607622e+4', '-3.1845809556698336607622e+4'); - T('1.7780378655260403138e+19', '-1.7780378655260403138e+19'); - T('3.608970926e-15', '3.608970926e-15'); - T('1.949e+3', '-1.949e+3'); - T('1.9021837e+4', '-1.9021837e+4'); - T('1.5e+0', '1.5e+0'); - T('3.1155266673e+10', '-3.1155266673e+10'); - T('4e+0', '-4e+0'); - T('9.09316542545977506e+14', '9.09316542545977506e+14'); - T('2.15531740334146749845e+8', '2.15531740334146749845e+8'); - T('1.5605317646e+8', '1.5605317646e+8'); - T('3.8806066633613066e+13', '-3.8806066633613066e+13'); - T('1.653298e+6', '1.653298e+6'); - T('7.920024310736e-20', '7.920024310736e-20'); - T('2.27611872e+8', '2.27611872e+8'); - T('2.76569307109179036145271e-15', '-2.76569307109179036145271e-15'); - T('1.425171314e+8', '1.425171314e+8'); - T('1.3702555167748408653e+11', '-1.3702555167748408653e+11'); - T('5.146936435e+9', '5.146936435e+9'); - T('4.183285814905222880076696e+19', '-4.183285814905222880076696e+19'); - T('2.270923702039578057376e-16', '2.270923702039578057376e-16'); - T('9.4963549e-12', '9.4963549e-12'); - T('1.453060439e-3', '1.453060439e-3'); - T('2.97303365e+2', '2.97303365e+2'); - T('1.16485757109e+2', '-1.16485757109e+2'); - T('7.7984946334626919799413338378e+5', '-7.7984946334626919799413338378e+5'); - T('1.905453e+5', '1.905453e+5'); - T('5.36989497616503e-20', '5.36989497616503e-20'); - T('4.3e+0', '4.3e+0'); - T('2.70434008699476809368089518776e+25', '-2.70434008699476809368089518776e+25'); - T('2.8813069851e+10', '2.8813069851e+10'); - T('7e+0', '7e+0'); - T('1.0577487e-18', '-1.0577487e-18'); - T('6.8e+1', '6.8e+1'); - T('1e+0', '-1e+0'); - T('8.446803887694575079e+6', '-8.446803887694575079e+6'); - T('2.3384835e-6', '-2.3384835e-6'); - T('1.072e-13', '1.072e-13'); - T('7.13295350162e-5', '7.13295350162e-5'); - T('4.59897478609e+3', '4.59897478609e+3'); - T('4.11875744698515118e+11', '4.11875744698515118e+11'); - T('3.12339620225171e+5', '3.12339620225171e+5'); - T('3.79932554e+1', '3.79932554e+1'); - T('2.457332691061964e+4', '-2.457332691061964e+4'); - T('3.944602320705902e+6', '-3.944602320705902e+6'); - T('3.164305812145e+4', '-3.164305812145e+4'); - T('7.22239735515689399e+1', '-7.22239735515689399e+1'); - T('5.261981e+3', '-5.261981e+3'); - T('2.3642968462845e+7', '2.3642968462845e+7'); - T('3.9326785e+3', '-3.9326785e+3'); - T('8.5853e-11', '-8.5853e-11'); - T('2.60532943946e+0', '2.60532943946e+0'); - T('3.64630216318427246476533e+18', '-3.64630216318427246476533e+18'); - T('3.031732127749e-3', '3.031732127749e-3'); - T('2.49298080885329502254338e-12', '-2.49298080885329502254338e-12'); - T('8.81838341457179780743504843e+2', '-8.81838341457179780743504843e+2'); - T('2.285650225267766689304972e+5', '2.285650225267766689304972e+5'); - T('4.5790517211306242e+7', '4.5790517211306242e+7'); - T('3.0033340092338313923473428e+16', '-3.0033340092338313923473428e+16'); - T('2.83879929283797623e+1', '-2.83879929283797623e+1'); - T('4.5266377717178121183759377414e-5', '4.5266377717178121183759377414e-5'); - T('5.3781e+4', '-5.3781e+4'); - T('6.722035208213298413522819127e-18', '-6.722035208213298413522819127e-18'); - T('3.02865707828281230987116e+23', '-3.02865707828281230987116e+23'); - T('5.5879983320336874473209567979e+28', '-5.5879983320336874473209567979e+28'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js deleted file mode 100644 index 6a08514..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-in.js +++ /dev/null @@ -1,456 +0,0 @@ -var count = (function baseIn(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, value, base) { - assert(expected, new BigNumber(value, base).toString()) - } - - log('\n Testing base-in...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - // Test integers of all bases against Number.toString(base). - for (var i = 2; i < 37; i++) { - for (var j = -100; j < 101; j++) { - T(j.toString(), j.toString(i), i); - var k = Math.floor(Math.random() * Math.pow(2, Math.floor(Math.random() * 52) + 1)); - T(k.toString(), k.toString(i), i); - } - } - - T('0', 0, 2); - T('0', 0, 10); - T('0', -0, 36); - T('-5', -101, 2); - T('-101', -101, 10); - - // TEST NUMBERS WITH FRACTION DIGITS. - - // Test rounding. - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - T('1', '0.1', 2); - T('-1', '-0.1', 2); - T('1000', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 1}); - T('0', '0.1', 2); - T('0', '-0.1', 2); - T('999', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 2}); - T('1', '0.1', 2); - T('0', '-0.1', 2); - T('1000', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 3}); - T('0', '0.1', 2); - T('-1', '-0.1', 2); - T('999', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 4}); - T('1', '0.1', 2); - T('-1', '-0.1', 2); - T('1000', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 5}); - T('0', '0.1', 2); - T('0', '-0.1', 2); - T('999', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 6}); - T('0', '0.1', 2); - T('0', '-0.1', 2); - T('1000', '999.5', 10); - T('-1000', '-999.5', 10); - T('999', '999.4', 10); - T('-999', '-999.4', 10); - T('1000', '999.500001', 10); - T('-1000', '-999.500001', 10); - - BigNumber.config({ROUNDING_MODE : 7}); - T('1', '0.1', 2); - T('0', '-0.1', 2); - T('1000', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 8}); - T('0', '0.1', 2); - T('-1', '-0.1', 2); - T('999', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 3}); - T('546141272243.39871532041499605905', '111111100101000100011100111100010110011.011001100001001000110101000011011001100010111000110000101011000010100010110111100010010000011010100100001111010010100', 2); - T('-761392382117509615082995635394.835132598876953125', '-1001100111000011000100000100010111000100100100101110010100101000000110101101100101101101010011000010.110101011100101101000', 2); - T('18181', '100011100000101.00', 2); - T('-12.5', '-1100.10', 2); - T('43058907596428432974475252.68192645050244227178', '10001110011110000101000000111011011100000010011100000001111011111011101110111111110100.10101110100100101011101101011011001011110111001101', 2); - T('-50063197524405820261198.16624174237994681863', '-1010100110011110111001101110101001100100001000111000001111110000001101001110.001010101000111011010001100111101100000001111110011001111100001101111001', 2); - T('12659149135078325508.50965366452082459802', '1010111110101110010101010001000100111011000010010111110100000100.100000100111100010101001100111010110011101001011100101110', 2); - T('-6387062313767439324325.28595431079156696797', '-1010110100011111001001011101001100100001111011000110000100101010010100101.0100100100110100010011010011110100', 2); - T('1396.09066858848154879524', '10101110100.0001011100110110000011100111111001001101100', 2); - T('-13243297892469.48301514260489275543', '-11000000101101110010000100010000100001110101.0111101110100110111000010110000011110101111101100110', 2); - T('343872.5', '1010011111101000000.10', 2); - T('-27858197522682350277663998.90234375', '-1011100001011001100111110100111101101100011110100111111111001110111101001110011111110.111001110', 2); - T('11350269087477005972403595905463622183936313327592261705214528.375', '11100010000001100111100001010001011000011110001001101101000011011111011100111010110101011100111001110110111111001001000111101000100100011110011011110011001011101010001100001001111010111110010101001000000.011', 2); - T('-4582111067006609431937422134.8848765093534893822', '-11101100111000111011110000101010101111000001100010100011111001000111010110000001001100110110.11100010100001110100010001010100101011', 2); - T('517236958880385002164572266126922644', '11000111001110111000000001111111110000110111101111101110011100111000000111101011000000001100011110010000101001110010100', 2); - T('-21553306071707458208211095787817816237164981584743591.29723221556402690258', '-111001100110110101111011010110011000011000100110010000110101110110101011101011100001010010101000000110111100101000110100111001000111001101111100100110111001010100110010100111.01001100000101110110100100010101001010100100010100101', 2); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 6}); - T('90182851032808914967166718343839124510737262515334936.05372908711433410645', '11110001000010011001110001010101001001001000011011110000101001011001110011010100000001001000011000010101101101000111110111101000001101000101100000101011100110000010111100011000.0000110111000001001100001', 2); - T('-328.28125', '-101001000.010010', 2); - T('606266547022938105478897519250152.63383591632958904971', '1110111100100001010001101110110111100101000011011110001111001011010010100111110100011000101110100101011101000.1010001001000011000100100001001110101010011100000110001', 2); - T('-1236693955.36249679178679391345', '-1001001101101100111001111000011.010111001100110010010110111110011010000100010011010101010111111100000101001010101', 2); - T('6881574.93937801730607199391', '11010010000000100100110.1111000001111011000100111110011011101001001100001101001011001010111', 2); - T('-341919.144535064697265625', '-1010011011110011111.0010010100000000010', 2); - T('97.10482025146484375', '1100001.000110101101010110000', 2); - T('-120914.40625', '-11101100001010010.01101', 2); - T('8080777260861123367657', '1101101100000111101001111111010001111010111011001010100101001001011101001', 2); - T('-284229731050264281.85682739554010822758', '-1111110001110010010110111100111001110110110001011011011001.11011011010110010000101001001010001010010110', 2); - T('1243984453515709828041525111137171813652.844970703125', '1110100111110111101011000011100001010011001110000000111100101100010010000100010000101010011101011011001000001111100011010100010100.110110000101', 2); - T('-4208558618976524911747722597.24609066132409893216', '-11011001100100111100111100111110001011100111101001010011111110000111001100101110110101100101.00111110111111111100110000101110001111001110111010101110000111110100111001110011010001101111001101011000001011100101111011110000001101001111000', 2); - T('1268683183361093666211101090.703125', '1000001100101101110000111010010111000000111000111110001110111001010100000111111100110100010.10110100', 2); - T('-105641.26311671037711231997', '-11001110010101001.010000110101101110011101111000100001100111001110000111000011001001001000110101110001101111001101000000111000011100001001011101111100001011101010111101100010010001110111001110101010110001101110010011', 2); - T('473340007892909227396827894000137.5', '1011101010110011001000000110110101100101110011110011001100111100110101100011010101000010000000010101000001001.1000', 2); - T('-32746.47657717438337214735', '-111111111101010.011110100000000011110110001100011111111100100101111010110001110100001011010010001011101111001100110011001010010110001000111100011100', 2); - T('192.49070453643798828125', '11000000.01111101100111101101000', 2); - T('-1379984360196.47138547711438150145', '-10100000101001101011110100100001100000100.01111000101011001011011111111000000001', 2); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); - T('-729.0001524157902758725803993293705227861606', '-1000000.00000001', 3); - T('-4096.0000152587890625', '-1000000.00000001', 4); - T('-15625.00000256', '-1000000.00000001', 5); - T('-46656.0000005953741807651272671848803536046334', '-1000000.00000001', 6); - T('-117649.0000001734665255574303432156634721649541', '-1000000.00000001', 7); - T('-262144.000000059604644775390625', '-1000000.00000001', 8); - T('-531441.0000000232305731254187746379102835730507', '-1000000.00000001', 9); - T('-1000000.00000001', '-1000000.00000001', 10); - T('-1771561.0000000046650738020973341431092840981941', '-1000000.00000001', 11); - T('-2985984.000000002325680393613778387440938881268', '-1000000.00000001', 12); - T('-4826809.0000000012258947398402566721524761600832', '-1000000.00000001', 13); - T('-7529536.0000000006776036154587122781861854381443', '-1000000.00000001', 14); - T('-11390625.0000000003901844231062338058222831885383', '-1000000.00000001', 15); - T('-16777216.00000000023283064365386962890625', '-1000000.00000001', 16); - T('-24137569.0000000001433536083296850401481727781882', '-1000000.00000001', 17); - T('-34012224.0000000000907444262711670884293370452072', '-1000000.00000001', 18); - T('-47045881.0000000000588804597472215429921222500439', '-1000000.00000001', 19); - T('-64000000.0000000000390625', '-1000000.00000001', 20); - T('-85766121.0000000000264390375792455941496210138949', '-1000000.00000001', 21); - T('-113379904.0000000000182229445394427114965206410085', '-1000000.00000001', 22); - T('-148035889.0000000000127696005408659110598172017909', '-1000000.00000001', 23); - T('-191102976.0000000000090846890375538218259411675049', '-1000000.00000001', 24); - T('-244140625.0000000000065536', '-1000000.00000001', 25); - T('-308915776.0000000000047886513275010026255956100003', '-1000000.00000001', 26); - T('-387420489.0000000000035407061614721497695336509027', '-1000000.00000001', 27); - T('-481890304.0000000000026468891228855948366647868677', '-1000000.00000001', 28); - T('-594823321.000000000001999014833671504164315094574', '-1000000.00000001', 29); - T('-729000000.0000000000015241579027587258039932937052', '-1000000.00000001', 30); - T('-887503681.0000000000011724827159637921277158030113', '-1000000.00000001', 31); - T('-1073741824.0000000000009094947017729282379150390625', '-1000000.00000001', 32); - T('-1291467969.0000000000007110309102419347878538765581', '-1000000.00000001', 33); - T('-1544804416.0000000000005599750325378321880787999147', '-1000000.00000001', 34); - T('-1838265625.0000000000004440743054270216786320984887', '-1000000.00000001', 35); - T('-2176782336.0000000000003544704151217464391770978328', '-1000000.00000001', 36); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); - T('1072424547177.982891327541533302850175278158817253467459228776101', 'donxvwix.zdts', 36); - - BigNumber.config({DECIMAL_PLACES : 86}); - T('824178538787196749922434027872451367594239056.93473392033316110609748881918323116875731371037529199959272159196515804304815690839727', '402kfhkd37bt5n8scr1ir9ndlrnipig.s17oe7rkhi91bh', 30); - - BigNumber.config({DECIMAL_PLACES : 84}); - T('9560389177469634483515162.499335215204179931606951906984830542647805834768203380512715304247460734647288652625', '195qdkkqsa8shmhp9e.edr89', 29); - - BigNumber.config({DECIMAL_PLACES : 65}); - T('5955289028666603391738616069969.70235175643053599414353772852590894151261634747374296179598348968', '8qp28dk3js2iqksmqaqnq.lntnif5qh', 31); - - BigNumber.config({DECIMAL_PLACES : 49}); - T('27603501710202437282037.4945845176631161140013607910579053986520224457133', '42545302442500101544532043113.254455200225412543300022520330204033', 6); - - BigNumber.config({DECIMAL_PLACES : 39}); - T('9464300204295306111422098057.77248824166891668678144149703717008528', '25473f3dbce5cf3hg8318d7.dg52d120b14ea966a7ag06a2gh03', 18); - - BigNumber.config({DECIMAL_PLACES : 15}); - T('133262758349237628352120716402.993431117739119', '3bkobquqthhfbndsmv3i.vp8o0sc4ldtji02mmgqr7blpdjgk', 32); - - BigNumber.config({DECIMAL_PLACES : 65}); - T('171510920999634527633.53051379043557196404057602235264411208736518600450525086556631034', '1fqecn4264r1is.ijur8yj41twl9', 35); - - BigNumber.config({DECIMAL_PLACES : 48}); - T('325927753012307620476767402981591827744994693483231017778102969592507', 'c16de7aa5bf90c3755ef4dea45e982b351b6e00cd25a82dcfe0646abb', 16); - - BigNumber.config({DECIMAL_PLACES : 48}); - T('72783.559378210242248003991012349918599484318629885897', '11c4f.8f33690f15e13146d99092446da', 16); - - BigNumber.config({DECIMAL_PLACES : 81}); - T('8535432796511493691316991730196733707212461.36382685871580896850891461623808', '9l0ah4mf8a0kcgn44oji4kh7l6fbenb.929jlggo43612jfn', 25); - - BigNumber.config({DECIMAL_PLACES : 7}); - T('0', '0', 2); - T('3', '3', 24); - T('0.037037', '0.1', 27); - T('101412023101671912143604060399016691636944374947585694881897391246499475847835837224977373985157443438754012038820105175407623679155088073411120684342336808325631625647896282357928709212286943830565579566232670291284084535962556769836340401310575784301282705195128879424575312893.9', '999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999991999999999999999999999999999999999999', 11); - T('15398955012055570438.9425184', 'ST87ST87ST87S.S87TS87TS87TS', 30); - T('2126934655697951.030303', '11111111111.1111111111111', 34); - T('-288494149172542947905560340081675757349.9789739', '-P98IJYP96JHYP95DPHJWPH09Y.Y98HO8WH58HW', 35); - - BigNumber.config({DECIMAL_PLACES : 31}); - T('4060090888512781039564383580983002345701981946441239.3428571428571428571428571428571', '4hv6vl92gvkmumr0a6ley0dhkwmwfe35oo.c', 35); - - BigNumber.config({DECIMAL_PLACES : 90}); - T('20398136837.975941624007641435905199481124700109083958314345873245346912136478926756110974638825468924', '5MI4K5MF.MA66B0L4HK8DK35LI3D0G9JFF7LBB27LAKH3E4FCEJM', 23); - - BigNumber.config({DECIMAL_PLACES : 38}); - T('42689628837110945219.60963984922125154547359100149049425936', 'D37AFB2193DJ265.CGHI7F1BK1I9GJ', 21); - - BigNumber.config({DECIMAL_PLACES : 59}); - T('893835640746065892983175797034880314945754459977061255725623898879842611', '4231231434203102220114420330232412332321132204022241104411014023324140104333412232222433424401214430421', 5); - - BigNumber.config({DECIMAL_PLACES : 100}); - T('175', '67', 28); - - BigNumber.config({DECIMAL_PLACES : 59}); - T('683674717563732788139425742102304147', '23BXVQVK5NK29XCNPM7JWQQC', 35); - - BigNumber.config({DECIMAL_PLACES : 63}); - T('21872738004815869.777777777777777777777777777777777777777777777777777777777777778', 'E8NB0D88AN2D.IG', 24); - - BigNumber.config({DECIMAL_PLACES : 2}); - T('4839094569478687835499021764036676797809986482983355.46', '9G041CFCPN92FSECBIHHL1F1I74FJMGAKTR.EAJ7JQ', 31); - - BigNumber.config({DECIMAL_PLACES : 2}); - T('198496092814270915085258754228681831655498041942', '24310400201333231203024322334002413400114320223240014320424444320232', 5); - - BigNumber.config({DECIMAL_PLACES : 5}); - T('7371249.07083', '93089.23M993NGABNLEP', 30); - - BigNumber.config({DECIMAL_PLACES : 47}); - T('799580158552527670.51524163982781306375625835799992154433181428013', '1C5C994CD5A7E49A.7ADE19484CE921B8EE7', 15); - - BigNumber.config({DECIMAL_PLACES : 64}); - T('16165422251964685360633312857381850497426314130782805.0722805578590765752365085976081394656988159695365026477063128458', '184254BE3B14F86L7HPKEOIIJKHCQ3DDBCPG5.20IJJ', 28); - - BigNumber.config({DECIMAL_PLACES : 66}); - T('321903599394345741344181790866033344020400577177.313819548430693134687858394581066124770210878514089611637812764975', 'GKE2D93H4K55C41EA627I1867CEFFCHBHE8I.6C85JF7D0BFDJFK4K', 21); - - BigNumber.config({DECIMAL_PLACES : 38}); - T('66906978329149775053912152738679.85034153550858840284188803538614532877', '2011110022202010100200021000121022200222101110012102220102212010111.21122122002110012111112102002110221102120102', 3); - - BigNumber.config({DECIMAL_PLACES : 49}); - T('1334535467.5658391510074236740492770511046811319813437111801', '45033235646.365040260503443445435151335014', 7); - - BigNumber.config({DECIMAL_PLACES : 62}); - T('26234523211578269977959969', 'LMDG5KNKLAUCSCNH1.0', 32); - - BigNumber.config({DECIMAL_PLACES : 21}); - T('572315667420.390625', '10250053005734.31', 8); - - BigNumber.config({DECIMAL_PLACES : 0}); - T('135378457250661080667637636173904073793598540954140', '1002012000221022001212121111002202200112011211012200211202012002222102020101100001022121022011000222110010.012011121', 3); - T('19121180169114878494408529193061279888621355', '30130433145052134410320001411315120554033203511455405455', 6); - T('121756633', '1I0JBBC.F628AF202451951181911H3HGID95I855056I', 20); - T('3943269', '7370130.225184', 9); - T('491578', '1700072.2013436326', 8); - T('7793119763346', '6A06CF7K7G.58CD39A32GE', 22); - T('7529497809730458840', '4BI52A83H0F7720.6G912C3J4I6H7HI1I41', 20); - T('46865454464741700656', 'BF6CDEA9FDBKKB.6G9A74QO718PHAK', 27); - T('304', 'F4.18180D', 20); - T('744', '453.61845741C18C5B7AC08A', 13); - T('246', '77.MS', 34); - T('191110529149', '2617704640174.75763527113244751520622', 8); - T('6', '6.8E2FCGH', 18); - T('11952558583', '49E4EDC8C.C86', 15); - T('1486467157880871503427980640713668', 'C0776B7908614278DD33549496D36.539A196725', 14); - T('13069', '5C43.B25BB7338', 13); - T('811', 'R1.6', 30); - T('1092443496', '1443DA51.G5FHF0121H2F', 19); - T('995982886869648407459143', '1HJAHK0FKDN4LN29FI.3DDG4GCBBFJGOM648JBCCCBE5', 25); - T('2563', '42D.9MBNBD3CHC961K4', 25); - T('5165465768912078514086932864', '5165465768912078514086932864.15061794310893065985169641395', 10); - T('5471', 'B6F.18F0HFAK', 22); - T('10463269570005574', '2V0X3OKD7B9.VOFRSL', 36); - T('303213556691515289188893743415846', '5AMIB6B7CEFJKJEL5H6CD1K5.H7996', 24); - T('73885536580075722710224913630', '111011101011110010101110111100111100010011001101110011011001010001110110111100101100010011011101.1111100101011011100000101001010110110010001000000010100000111100001010100111110101', 2); - T('72678037004728932464472011232185435761', '1J6F1EG58J959DDJ54HKBIHG6625B', 22); - T('7', '111.01010000111000100001000010011011000100101010011111100110111011100011000000010110001010111000011000010110011101001010', 2); - T('281006', '1000100100110101101.110001110000001100011001010100001110101111001100101111110011010100011110111010101000110000100010110010001011101010011000010000100001010100010100000000011010001011110101111110101101110100000000001', 2); - T('8573576497511403672686', '1110100001100011001000110011111111011101101000100111100001101010001101101.11100010000011111000001110011100111', 2); - T('40455365809845824222189300824558751', '1111100101010011010100000001111111110100101001001000000110111101001100011110001000011011101100010100100110010011110.10111100000011011111100110100101101111110001110100011100000000001111111001111100011011100011010', 2); - T('46275491328393338072', '101000001000110011100100100010111101100011100011011101110011010111.10011001111111100010011010101101010001010001001000111100010101011101100011', 2); - T('1433628110429482851535358742130957026457687710451052766168752', '11100100011000111101111111011100111100111011101101110010101011100111000110111010010011111010101010111010101011110111101010101000011010110011101111010011110011110111001010101001011010100000011010101111.10', 2); - T('888', '1101111000.01110001001100110110011001000100101110001110101011110000100001101001000011010011111110111001001110100110001101011001011100101000000010010111111111111101101010110010101011010000101110000101100101100000101110011011000101110101', 2); - T('1901556394517909524025875', '110010010101010111001010000100101110100000111100010000110000001011001001000010011.0010111010110101000001000001101010001100111101111100111010011011001000100000111010011011101110010000', 2); - T('260195957172449000', '1110011100011001101101100000101111010000011010111011101000.000100000111110001011101010011011010100011100110111010101001010101000011110101100010100111100100110000110101', 2); - T('654853', '10011111111000000101.000100010010100101001111011111101101010010001000100110110101110110010111010110000110010001001101010010110010110100101011100011101001110111000111000010001001100', 2); - T('186', '10111001.11001111010', 2); - T('45580573', '10101101111000000100011100.1010101100100100101110001110001111101010110011101110001000000100111011011101011011', 2); - T('74504933', '100011100001101101011100100.1110010001101110101110100000110010010100000111101100100011011001011011111', 2); - T('2', '10.001010111110111010100000011010000001011010110111001010001110100110111001100100001000011110101100101', 2); - T('10653067', '101000101000110110001011.0001110000101000100000101011010100000001011100001111110001101001110110111011010000011011000000100011', 2); - T('3103819016502701158728118887794', '100111001011001111101011101010010100101011001111011000001000110100100001001011110010001110010101110001.111111100111100100100111001000101011110011110011000000000001101010111101100010100010100001100000101110100111010000010011001', 2); - T('70726621184417493343184041374', '111001001000011110110000100110010000100100000101010100001010011100110000100100110011010110011110.0101000011101101100111001110000111010111010111101101101100000101011010001011010111010', 2); - T('4639750624206524979284798532410213523141234414', '11010000000011011011100110011110101101001101111100011101110100111010111000110000010010000001101010101110011101110011101101000111011101010000111011101101.11111111000111101101010110010011', 2); - T('2377749182359', '100010100110011100111001010011011110010110.11010', 2); - T('26', '11001.100111001011111001010011010101011000110110111100011100101101101111000001101001000011101', 2); - T('389501027984', '101101010110000000100100000011010010000.01010001000000010100011101101100001111011001', 2); - T('5169', '1010000110001.0010001010100001011111010000111010001110110111011111110001010000100100010110000110111001110101100011110100110100111001011100100111101000100011110001011011000011011000100001100000000100001010010001010110001010010010101011', 2); - T('2072974714841016', '111010111010101110000001001100000011010011110110111.10011111010001011000011011010001100', 2); - T('3', '10.11', 2); - T('6569814675686107322725113', '10101101111001101100101111000000001011111101000101100011110001110110011001011111001.00100011110010001110011001100001000011000010100101011100101000100101111011011101000001110100101001001001100010100001001100011010011011', 2); - T('984456092178345483540429', '11010000011101110111100011000000110111000100100101100011101001111001011111001100.10110000010110000110100110110001100010111001', 2); - T('6729551587237203748588625739672573822682543614592964521541035860', '100000101101111001111011010110111111110111000100001010001101001110111111101100011101010001101011100011010110010100001100111110101010111110001111100010000111000010100001010011000111100000000000101001110011101010100', 2); - T('329347347', '10011101000010111000100010011.0001101000000100000000011101110101011001000011111100110110000100100011110001110110010011001000011010001100010010000101010001111000110', 2); - - /* - BigNumber.config({DECIMAL_PLACES : 5000}); - T('6022239845523628300792137851333617197616053606580805361460444571405159915948416057193556599026984420186847535714193186506779546.45562364433149048376909884425264838196627845956471301832353037216028002220557941081995561235866533298815815922678466806108234749212464649692584770778636508682771855319769124974649405509297732509500507702362168384314107653609786430967640203107454687605887412794096157913528626853706056446855881531545195000734665133919578058463901659136523244159808597378906266443321758454939816465192126295342280568880123960605134416002321981988529228618898697072789772080291342478304351440847738944612720456898241717924298967008171252854355869450188166408302699162551054528159131912895298938197347616702659802404073209181609536327921587288300421033874114565425368107966522446454855931005917304136935908432754883056828263061549088965135169569684456008477541982066123091033968877584432281431379815341125413388350665252537980749041131051878291040173564632382596634048981529497244126378198699352829834835751033446902713765443032376617851981166182096456938914400530557912226087362980440980578460246231055456778104006415527727260144095903127275419414807349147304707405254543427544838982731455334927521421806120799785694323203756123916853431908716090161389876298981034132804663437564753354768639621168658600102486177710685317251506858936381061516323456154147708084807303368146788089168077930658523442473995088742325773226839695051398002486616767897842485900547744342133455226785895506239035265653618936400640974168752824304125514038750444312714907633618171991355429431759439952307076477817217105979944570733869770158307019913889590797598165139754807215433076623400151503800862360578168290788982250598565524133502841168163050960633073023086590377971028607254136702588526777419958903274032568187324150715013909702207304519885442684246154424782763896029535730853643906929626045280406345718447643848365642454794436200184559384104514455046474916698853542487141393373504315472859932883938412782930021292976807483126232761531618262529099148770786402625394165285080740814372385937680961636708062338551092904431743317072664203085901678724391714803254679215220462002284827189814215842974479924985602985736840346662287388320297983891277984351215430795679480190118537345626368022990139894769505155754558312126932952671414774316202379066527423168541384888466209214314154656662254580694814197800298638656821314275995533216305058772309199532434503635943016121377240397454883296750491850460737680808149474215115525147893924328495593024234124241923099439564731922184295950348564035465169266840591302330909689592731054406376096204521212856678638595326253266853596009793769540552472576546585623610514603873467842223218383413469519311698301974531524237384072650293621563877939654382136609518592602998975525783497411981332278754077646791148254910680215716571959847794999990247155904843380251881145330210230503708687521912940355094829433297671479621259952291050451507069861516277689852652120824074226408244695466776128994445706937283501626742574832399257358784925070613374733443923318045672485243752481960132066316477982467772782652564401225093039509921674057244503251628994886108332809253787838807087045292349084813153418737514141651084390353861740493248726168058140952618277156388955744920898401233144729995305891815236381631092752549773465825925187270747564816278320933350674627641648384663562427197990911234109442852754919229966716090476391048342193483833862003532792898637819146892137188859066257902207068814887904172213161571698554092509870791904603500154815868135120390375352892915790562057269104998986616170310087063962096170912045311169499205938470776723319613174250097225084425676690856982407000880056724620818824503061125725461684399498255127313452269964097609152404362732856503883361007911375417900940044634592803539714125533402906835228146503351037643506565226937040944039386627046902360157120659188931448110133381205133170527455488802527077001776856346493147507947490287029277744578775527372923256995419864299678429507426389922953403127483507515479327442988251888961453922972301510643563216583092771781978061366034284974632235631032912241967179283080214267387399797724014498036440569206078211810225217786455419707373248180986740603131905953623973926533609693886155905704306604100315482559358455550018630679789876126218887092040393676456180793809957296390894821682732929521075917502388856575712596709103037671223414578669707747332478371632108168893761388532592606235363056704156483680099201459584177626289636906715420355110405019316492710052426228518585155223882424429151702414484321844004913577523588611847871639322325737509992577988369672218344719659244872142799432036756062631109614278597717292745716623038732618863518899700937188424653264323754203446589769545236970901181775744966400800101730416875793459251675109469665985644198416152029852905095989068691042302222376893958470550095432860142880876451168971479312433163514921818509750264250472945722655641064950528004153004188190549429918759335822341644887168398385954219498973215722761336436971169084930492144143419812959401754073906781284401436962270645729138821367459312144327', '58LURTSHGLIURSHG8O7YH8OG754YOG8O7YGYG75EOY5EYGO87EYOG87YG407Y87Y1IUHJROLIGKHGERGRE.GEHKRGUERYG0908Y76981YIUGHFIJVRBKOFUHEWO8T9343097', 36); - */ - - BigNumber.config({DECIMAL_PLACES : 20}); - - assertException(function () {new BigNumber('2', 0).toString()}, "('2', 0)"); - assertException(function () {new BigNumber('2', 2).toString()}, "('2', 2)"); - assertException(function () {new BigNumber('2', '-2').toString()}, "('2', '-2')"); - assertException(function () {new BigNumber('0.000g', 16).toString()}, "('0.000g', 16)"); - assertException(function () {new BigNumber('453.43', 4).toString()}, "('453.43', 4)"); - assertException(function () {new BigNumber('1', 1).toString()}, "('1', 1)"); - assertException(function () {new BigNumber('1.23', 36.01).toString()}, "('1.23', 36.01)"); - assertException(function () {new BigNumber('1.23', 37).toString()}, "('1.23', 37)"); - - assertException(function () {new BigNumber(12.345, NaN).toString()}, "(12.345, NaN)"); - assertException(function () {new BigNumber(12.345, 'NaN').toString()}, "(12.345, 'NaN')"); - assertException(function () {new BigNumber(12.345, []).toString()}, "(12.345, [])"); - assertException(function () {new BigNumber(12.345, {}).toString()}, "(12.345, {})"); - assertException(function () {new BigNumber(12.345, '').toString()}, "(12.345, '')"); - assertException(function () {new BigNumber(12.345, ' ').toString()}, "(12.345, ' ')"); - assertException(function () {new BigNumber(12.345, 'hello').toString()}, "(12.345, 'hello')"); - assertException(function () {new BigNumber(12.345, '\t').toString()}, "(12.345, '\t')"); - assertException(function () {new BigNumber(12.345, new Date).toString()}, "(12.345, new Date)"); - assertException(function () {new BigNumber(12.345, new RegExp).toString()}, "(12.345, new RegExp)"); - assertException(function () {new BigNumber(101, 2.02).toString()}, "(101, 2.02)"); - assertException(function () {new BigNumber(12.345, 10.5).toString()}, "(12.345, 10.5)"); - - T('NaN', 'NaN', undefined); - T('NaN', 'NaN', null); - T('NaN', NaN, 2); - T('NaN', '-NaN', 2); - T('NaN', -NaN, 10); - T('NaN', 'NaN', 10); - T('12.345', 12.345, new BigNumber(10)); - T('12.345', 12.345, null); - T('12.345', 12.345, '1e1'); - T('12.345', 12.345, undefined); - T('Infinity', 'Infinity', 2); - T('Infinity', 'Infinity', 10); - T('-Infinity', '-Infinity', 2); - T('-Infinity', '-Infinity', 10); - T('101725686101180', '101725686101180', undefined); - T('101725686101180', '101725686101180', 10); - - BigNumber.config({ERRORS : false}); - - T('2', '2', 0); - T('NaN', '2', 2); - T('2', '2', '-2'); - T('NaN', '0.000g', 16); - T('NaN', '453.43', 4); - T('1', '1', 1); - T('1.23', '1.23', 36.01); - T('1.23', '1.23', 37); - - T('NaN', 'NaN', 'NaN'); - T('NaN', 'NaN', undefined); - T('NaN', 'NaN', null); - T('NaN', NaN, 2); - T('NaN', '-NaN', 2); - T('NaN', -NaN, 10); - T('NaN', 'NaN', 10); - T('12.345', 12.345, new BigNumber(10)); - T('12.345', 12.345, null); - T('12.345', 12.345, undefined); - T('12.345', 12.345, NaN); - T('12.345', 12.345, 'NaN'); - T('12.345', 12.345, []); - T('12.345', 12.345, {}); - T('12.345', 12.345, ''); - T('12.345', 12.345, ' '); - T('12.345', 12.345, 'hello'); - T('12.345', 12.345, '\t'); - T('12.345', 12.345, new Date); - T('12.345', 12.345, new RegExp); - T('5', 101, 2.02); - T('12.345', 12.345, 10.5); - T('12.345', 12.345, '1e1'); - T('Infinity', 'Infinity', 2); - T('Infinity', Infinity, 10); - T('-Infinity', -Infinity, 2); - T('-Infinity', '-Infinity', 10); - T('101725686101180', '101725686101180', undefined); - T('101725686101180', '101725686101180', 10); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js deleted file mode 100644 index 500a5f1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/base-out.js +++ /dev/null @@ -1,10818 +0,0 @@ -var count = (function baseOut(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, value, base) { - assert(expected, new BigNumber(value).toString(base)) - } - - log('\n Testing base-out...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - // ---------------------------------------------------------------- v8 start - - T('NaN', NaN, 16); - T('Infinity', 1/0, 16); - T('-Infinity', -1/0, 16); - T('0', 0, 16); - T('9', 9, 16); - T('5a', 90, 16); - - T('0', -0, 16); - T('-9', -9, 16); - T('-5a', -90, 16); - T('4294967296', Math.pow(2,32), undefined); - T('ffffffff', Math.pow(2,32)-1, 16); - T('11111111111111111111111111111111', Math.pow(2,32)-1, 2); - T('100000000000000000000000000000000', Math.pow(2,32), 2); - T('100000000000000000000000000000001', Math.pow(2,32) + 1, 2); - T('-11111111111111111111111111111111', -(Math.pow(2,32)-1), 2); - T('-100000000000000000000000000000000', -Math.pow(2,32), 2); - T('-100000000000000000000000000000001', -(Math.pow(2,32) + 1), 2); - - T('5yc1z', 10000007, 36); - T('0', 0, 36); - T('0', 0, 16); - T('0', 0, 10); - T('0', 0, 8); - T('0', 0, 2); - - T('-5yc1z', -10000007, 36); - T('1000', 1000, undefined); - T('0.00001', 0.00001, undefined); - T('1000000000000000128', '1000000000000000128', undefined); - T('0.000001', 0.000001, undefined); - T('8.8', 8.5, 16); - T('-8.8', -8.5, 16); - - // ------------------------------------------------------------------ v8 end - - // 10000 integer base conversions generated from java BigInteger.toString(radix) with random values. - T('440155688144172', '101725686101180', 9); - T('101012012002102211212101002012121211210112201112022122012110220101', '11665560554201545341275846801989', 3); - T('16g621gjdfj387g8f', '878682490721226942575', 20); - T('23296228463551556aa7a803294013169936813630895547', '20254039346778828988686906345231844106054371456414', 11); - T('86', '294', 36); - T('j6angf77m93m', '29321388122089630', 24); - T('171634571716400543513334300705612071133717535572246575453160', '364584667335183828987221775272570428237696628507956848', 8); - T('79ih09ddbmoj6chgi', '5317189538963113735021341', 31); - T('17140110747560', '1043696177008', 8); - T('5mf9glgacka1oj', '8798568215457188744', 25); - T('14i0i1bijh5bb66318hjbe39el8ed7', '1038225938103094195672715196371622399149', 22); - T('3779577535435531065475', '3779577535435531065475', 10); - T('1101000100001000000110100100011100000101001', '7182272837673', 2); - T('v1r0gswws8mg7rg877gua', '132336254343195067504822207481070', 34); - T('1caiusm1ngmh8', '1101263079273875608', 31); - T('bcd583cc3014846', '132516316064365582', 14); - T('1656', '942', 8); - T('2iq2q6a', '1046997262', 27); - T('s0tb0wwdorr1don43twqe', '65743744003104369805298454218408', 33); - T('4', '4', 17); - T('13eb7d6c25678', '2652301005605213', 19); - T('63595846315682339605641914681670020', '63595846315682339605641914681670020', 10); - T('3192', '53640', 26); - T('18jd4fccghe', '86689784393126', 24); - T('ahn8jmcronn1imiwqqf6894boecrwtt', '92552461943195873402655551990866403102200950223', 34); - T('732a68649252780573256384a0762a874827823929485545', '64359755261128349657756381355778457151559256253657', 11); - T('o0502ci441waab54sxss84sdbiq3', '5373042738281691949642803579987183092210407', 34); - T('1021112001100000210210', '13373890500', 3); - T('40202343000', '39887250', 5); - T('8720081b5e09269094e56202843449cb', '24377982076224740260643696757107121341', 15); - T('1iomc2mqsn5qpt8h1f569gs852', '13789591701124129450628724568456423352', 30); - T('1eom414n8l1d9nfel48f1bmqmm0nmle0j3', '266719145838127409543902693002813822731463432657', 27); - T('13k56oq3m631lo954n2ohok7', '2181841744266177308465040173350263', 28); - T('454023134354435330523150501153110052125254133003305331', '863587285752958267795174798408995811866775', 6); - T('1d6ekejh1ik9hk6k718', '2338861492105483120978650', 22); - T('2', '2', 29); - T('1e6c', '15573', 21); - T('g57c69', '52060929', 20); - T('12020002010112222111002201112002020022001101201021102000', '303840883816576562846336400', 3); - T('117e081886a2b7dhh6b7ddc9g9dah881', '4703193157526229832838915604553828591088', 19); - T('120', '48', 6); - T('r3ph9dgk57p', '74774633365798895', 35); - T('8a0a2kj0d87f3m42i17h31kl60k28e4de70', '167827516964906460076306119782216338842769448945', 23); - T('2l055f3b4noi9po87stgqmchln5387', '18531519454051111130681336099858607562067947', 30); - T('421062013993955192a2221428707a96575292bb', '115579778299459540087492544347756755742382977', 13); - T('1bibgea4if', '526155599692', 19); - T('1497d29d3476a2a9780b34d03dd8d7b', '32297467668609167750315214037242897', 14); - T('1100', '12', 2); - T('3', '3', 10); - T('aj768i29h4hiaa4c21ehiad1ejcia8ig', '235542570596088783891401514707500777363576', 20); - T('0', '0', 26); - T('1057782', '1057782', 10); - T('10110000100', '67806', 3); - T('130301232102', '7543698', 4); - T('3iuna', '5311190', 35); - T('12120101010001002202210212202210210222212101010111220211201121001202001', '4647047674765599509161881404042506', 3); - T('19c1p4e5sc', '77422104704616', 34); - T('20jd875f0sb7eob641f2j2rogg5i22f', '150648633114646195779853741265975908572439118', 29); - T('fe5pdnmr6agww3hvvh1m5y6084tkm4qi', '11317796537927193164907314114830625186030646924078', 35); - T('115gekg30bl34558', '144730350757318919194', 22); - T('3fagc3b8m35ahj6346g1mbkh885b5159g2', '3176675255123809025734896069538375765072180396', 23); - T('5686he7d5bb824gci8i3e78c7j0ih', '14283076803292405590664992623911672377', 20); - T('1jmnldb1lfkrjoe75k7o3rednhb1f8h0', '1242551650400204544842102196394576048943170972', 28); - T('60bf8d3f1cb70827109c', '456880688358819786854556', 16); - T('340432530435433213034435253441422121', '6339719167942344530566282177', 6); - T('i38g07j7ie95b2g3533dfi075', '982752454390853323739173663368665', 21); - T('1h6t', '42509', 30); - T('642677755550042022420042650122720673705371422153432', '9341223088519577080757976073309527669316572954', 8); - T('4ddho197n710a2m273kka0e23l4g0h85b', '2462195801283263655162466534079464545810817636', 25); - T('1243240323034002400230042343332120411442100332', '45148599779050957102730921831342', 5); - T('88scnc9d', '228014337833', 31); - T('1170484020308451032231073707375108400760815', '14346468379928007582608703547513785950258', 9); - T('4823304938154542868234529244227621001', '4823304938154542868234529244227621001', 10); - T('1651372117475740354637456547', '4427164671782016593583463', 8); - T('7i2233ggjhb94938eb1bjeh9ah01c', '21220547440397899830782173177438536032', 20); - T('38e2f51l5226upuurq', '212488028484539189554322396', 33); - T('2302012223231313010303032233111031210011020131110321321303332231113103032', '62060333685205067717083070636012166725334222', 4); - T('978074cbc72b612330461c399a6cd9a5246e', '1383648770009475636965471306920429322557754', 15); - T('ttla4bfhg8ogcqe72ur1432jjo76ghc', '42713337532562165277151943846110614488089838124', 32); - T('61482faj92i2287770b', '1588859334544847514778811', 20); - T('3053066362454436563436414156651113001465631', '970611871710418073313798574789753891', 7); - T('28b74a2sl5cr8s1ki0sro011', '9881987714990620033551204066568469', 29); - T('9alod3a4n9ncieiqihlpehs8cqd1sd10dj2mb', '415054010142313409024004868502578691674339253356722226', 29); - T('120131131131201001210300133101113223032122100210332221130303031030', '2080853698331650615760995253176321127244', 4); - T('ihk308048gi1', '6604552742887513', 21); - T('a', '10', 28); - T('41179', '2854566', 29); - T('h0qpo1102o4h2k', '69043303761626479331', 27); - T('9g4baafceihhgf518g7bm7h20nkhed8b07m64', '471227319810157894343865948670273836507237979925524', 24); - T('dho5eqfqowsqv1meq8bquhml', '4406294486817687943635096558491220991', 35); - T('29bb5fdpe1kes', '1813313296055953458', 31); - T('8ff84083f', '62334898476', 17); - T('70a2g249a1da182if3bhf4db31b', '167580219569043944485242667799058497', 21); - T('5fl2a1id1b2jolhmhjlk7na7g', '51071422881267420196649258348708342', 26); - T('100022', '251', 3); - T('432', '282', 8); - T('3wr3swm6ubjrkvt', '16294970748730625951364', 35); - T('17168', '11807', 9); - T('35584293177335052090482862003912891468038390', '35584293177335052090482862003912891468038390', 10); - T('7998aldd', '33899695237', 24); - T('4kij6bl8043lpba7', '8045734455699535180463', 26); - T('4gla1701h5602l588', '29045123944032022935020', 23); - T('4krb3', '3804633', 30); - T('3211002241324002022113342004130434213023003244232433', '1531292744433422364552476748786320993', 5); - T('27', '39', 16); - T('3o6qpgd0', '104034477683', 31); - T('5dg2c119a0892cb61353d9b1', '116223645530706451323585167475', 17); - T('1156036607174723020034543345673164620146641', '103357460209213083948351046056291650977', 8); - T('41ib89ghdgeidg0039be199c3a4', '27490663465965934673955627614337404', 20); - T('e7k93m5', '6879430493', 28); - T('120223324040024130101444123240111221103312343230410102202103302323', '3849970071333132024959950921403659216898884713', 5); - T('jg36bjg950j6i9m8oi8glle21kh3j1kfc', '10649691942461568427422892625442894260778934762', 25); - T('4w4a6teferq6r5ik5ut62fual', '13835986798310811924322665391394254965', 33); - T('312490955c70', '5539379829789', 13); - T('emtaesbe76h7dk71h4bt3h8kg3bn69', '101339233480279275559007163118630302631547889', 30); - T('3p619b5fmg0l1632dd7dlo2kh', '88631790446416440440286264005548442', 27); - T('1341', '2757', 13); - T('f43426ggb18h6510e7fe84fh310b', '511382471492848290663092376073298210', 19); - T('6j41em7raogenfrjhgjkfkfh3eu', '3945233626117535310773506175958783010154', 31); - T('111641556162423641100614510003', '3807645289032672695383142', 7); - T('2696427c2f1cad979g08685g71f0h7h4hbh48289f4f', '124382154384973091480024194947893719797603463814945307', 18); - T('11845026586657305823549960872429', '11845026586657305823549960872429', 10); - T('1h64s71x4rusnjlx5s7', '9260237785040115157604241362', 35); - T('10311042615', '300721440', 7); - T('2451143b5ba7ca6943a', '262895985819802223782', 13); - T('jo11nn24j791mg1i8j1mhc47p255', '3189124189951034463858246698569851705767', 26); - T('10011232230103110332', '281029981502', 4); - T('iaa7a6e611gih', '41068316481138638', 19); - T('1912f60k5nd203ej1', '58775002826689939438559', 26); - T('2459b78a913708732', '438882964276198934', 12); - T('308258662', '133548968', 9); - T('347175', '118397', 8); - T('2l383movaqq6vge0t51d1asb5', '3534985310385748495852148058236481893', 32); - T('1002011011221201220110020010111000021211000120100020001121', '1695352250587759269039520513', 3); - T('121', '25', 4); - T('a0480880954109d', '292517771808862273', 15); - T('3g5c6881d68a6g3g7ded8f00ddc3', '6605800905697912313930823429368376', 17); - T('g9bnclea0di628jg02k69b75iaf6mld17akh', '33275613302454138474042464061355756382668628304497', 24); - T('3410345247354238502664518577282', '146560013392255863392167155830', 9); - T('21121101020212000010110210100', '58005313126803', 3); - T('2331003220030000131011220331231', '3405742490204409709', 4); - T('kepi6h75hclp6o', '210478662369536496313', 29); - T('14320202403220110112112043411443103144334124004312122302230433132031244204244', '256316960412695093498974392340639287985576426301944324', 5); - T('21oh0', '812300', 25); - T('637302200571726036177', '78099699617401957027', 9); - T('3h8nrbxu09bl9y59qd0x76mh', '2169701554867548714090537334110301769', 36); - T('5ei5i1ji6hf23g10036fbcgh9kg7b2c8cace9e', '265177220460106545362048683909814340097671193815436', 22); - T('2il', '1605', 24); - T('md18bbl3ikih980m8ijjm5hk37aboh7i26c4', '190769957856763978202455746822271950952451735582179', 25); - T('49a947b15', '11910266120', 15); - T('5563068134037605066000072214445077281483844846461', '35846490510257461400361080273583563758784437804', 9); - T('2326og3ij7pqp6nrqmbkkh6d4', '5822237723786017480562091732598915027', 33); - T('120133110323003200013220212133103302121120320212', '30316511656490491221060718118', 4); - T('16mdhr19sd5c5d5c0jjav97fu9o1', '267673848646358103096813679060486949796693', 34); - T('jga1bjl82k4ah11179fk5', '33833463661666075552032677215', 23); - T('c20kujdb', '514029069323', 33); - T('11226540043034355', '39624784159854', 7); - T('v', '31', 34); - T('14502011231234', '23602310374', 6); - T('kgl06leab96536b72hh13b4gd12', '5267876931068834999207837763071495773', 23); - T('jl7of6l89i2iabafma', '22471829516120804540402146', 26); - T('1450007a44290518221a532', '114367864225072949311955', 11); - T('298fe1gbg9c72', '1491696784725786', 17); - T('250711224523642463565466455623', '408358568053857594342267795', 8); - T('9flo2bq373qjcgkp3e6k71qnonehh', '316990433419229469352412547876129922440461', 28); - T('1203662265620020640221323330644160123013', '1179984859885559189864263643508373', 7); - T('16x9ld', '72095953', 36); - T('67d8i74a4e8gg43', '73378543709714711958', 23); - T('58398378841218155357', '58398378841218155357', 10); - T('dy3hf3dta7', '1101392127345132', 35); - T('ko6nkrons9d0fc0bil4i3qi63e8ff816f302', '31822762789078625728496093591661767305613028321798487', 29); - T('198g4ec36ah639', '31806677232541503', 18); - T('45243354620633', '461990081612', 7); - T('775823b0c15', '4319863197095', 15); - T('g28he7j4icef0bcbjgj8', '1201572315079967980347229812', 23); - T('g4d4dqb4', '169104269893', 27); - T('18jc9hh8c8im15d8a09i8', '5496196321990395030043538936', 24); - T('4g9282g604cbh7da78c99ca7', '365574202021938047866967922307', 18); - T('e5rf3kpheo', '206076021040648', 29); - T('713414314586b73', '27941755511268212', 13); - T('619739902555681054508877700190814647189340192531531', '619739902555681054508877700190814647189340192531531', 10); - T('20111011002200122', '93082868', 3); - T('100230221211233101331231031001203331331003102231102112012330112112330000132301133133021', '6247333955182528679256744382669521818617928418195401', 4); - T('31464741215652662410302172736', '61905218854453628692395486', 8); - T('708nesooj9eefjp', '3352746100369361432095', 30); - T('8fidd470c39jbio0fqbmo4r8ad', '12923744867491474626257779584052881637', 28); - T('1151171074647051031165674252760067', '764101851531641191689328779319', 8); - T('11043032215231230545441315401541344541210241405152211', '34556143670121676351099193602542355133167', 6); - T('7451b5a50511996bac9b28b0', '306395754266354995755659445', 13); - T('13ir12f', '2389675047', 36); - T('2e', '72', 29); - T('112551341310022250543503544424133243522435', '100211013146144877918564374426903', 6); - T('15g4rioci4g3qfn9da47hln', '177378797438603886266961020628820', 29); - T('313qoor3rl62hs', '111971617480570505788', 32); - T('11be338996c3222d74125b207e1c94c74384dc344', '123816432746013151845557555294618280342247674364', 15); - T('510151', '1885261', 13); - T('al5ra6h4', '293932103440', 31); - T('7p7gq6ao', '171498767724', 30); - T('4aip7ke83a0mnoa31e9hc64c', '3668246283124124964717547932816798', 27); - T('26ffmuj7qfj5urc', '2600404271332517411692', 32); - T('1228jnkc879102l6klfmhgeh7b3k9kjem3chmk', '1271226839086861348134838781391638338414049937252452', 24); - T('3m1dkpcjl6se25ees', '941019906537302808213671', 29); - T('nvk4t2ijr0pt6a', '885016896759055316170', 32); - T('353463695235911', '353463695235911', 10); - T('2592c02eb41095d60c7b3ae4c19254bcb7e451', '77783442256833108339948757455065770782318226', 15); - T('101001110010100101010011101100111001101001100111101111111000101011011111000010011111', '12630360807685587318206623', 2); - T('10a94b226bd2a3cb347d8239a354494baa876d3c', '7719527647026016534723119044578909360854733857', 15); - T('10112100000101212222210120202020120022212020022002012220222222110100101012200010201221221112010100', '22465908588350531170561340022119338184319644550', 3); - T('3526', '1294', 7); - T('trqchmprtris8jhmt53mgfph2bqlk1rdlj', '166379098618921452590839536518689519047997516551349', 30); - T('amqtg5blk7b3', '540363976066013685', 33); - T('5bb8f0da136651ih36if43c9', '1446604699008863640297362261438', 19); - T('169095c1igm9lagle03', '18254265908591826520258753', 25); - T('5ca72lphe8b1g6na87l028nk7', '49874912506100858512179674721524459', 26); - T('db2hm3or5qm99cejggihbqj24o', '20227071482916596230414576969129951720', 28); - T('3e06d7bed9cl3hmcdh4rk6d', '518456522736295870554795311386837', 29); - T('3783552669408621336694762820722', '3783552669408621336694762820722', 10); - T('8plkxhiid9r48fmxut8j', '1097250217160493743377273093271', 34); - T('114c00b88e376egfab533', '4369484999824057755698184', 17); - T('14983603362604292572455838465420099066461810', '14983603362604292572455838465420099066461810', 10); - T('509d164ce8562017ac87ed954c322aabb3eee76', '2478749182617286136760963476865027709609349886', 15); - T('3fkhedjllk072h2jdi0722fndca0nm2jh9d', '309586105474608741121591603678170578618026772773', 24); - T('1iq6sj905ic2n1b75s3bhc97qjj82iclshg7', '2522966691781107980265563729308641205273869137106927', 29); - T('2a6cba18b56b3', '155884237022909', 14); - T('8bddeba1aaa3c4d55a4b1496ae4556aa273d', '1280685511801156504844254243757080956139633', 15); - T('2cd', '2733', 34); - T('8n6fnlac07f83b3hl5a2cdnjen9fig989', '1316884479548601245836236435764995581418738953', 24); - T('6fj39908aajh0f7eici5g653270g2', '18248065317134624862612052897609976322', 20); - T('100442024203540041', '17296877228281', 6); - T('864lljmcga', '14895956013429', 23); - T('ida78k0lnm720jk42co06325dndfincdcf', '251216020257140411511559806773250633017763086565', 25); - T('2202302331132212020233000022322031121', '12012243725278503478105', 4); - T('6i6jabi6j', '532166217509', 23); - T('6cmh6r7doponp2ajcjoo2pn87eakbgg', '167803056903383062748024010526394587708233856', 28); - T('2360598122619478480207180074620237', '2360598122619478480207180074620237', 10); - T('4fdgfae5ai1dfggc57jb56gfdhh', '32108887594999276898768884821885557', 20); - T('30316cbc668127583b5c359b17195c7680c', '225869808340726521462856371477325948274', 13); - T('b0a4c9igh1d34258f', '33188485929923604704131', 22); - T('9b81ii', '75424770', 24); - T('150j0jm2n63ana812', '27968036853522567739402', 25); - T('2rxjdeshl7hv031gh8x8tal1', '913145329049266795302812350123389486', 35); - T('11ba64655696c81c01230a5c4', '622476147856099856056476548', 13); - T('2if7c15b64menb5f381mbffsq5552gb4d22pn', '116879749441690585814553354811233856559766636508284681', 29); - T('a89d1e8ba7d4b79c033a15d0d12e', '600946350698036566145005181087894', 15); - T('65kkch4kkab51720gk72de14i4m1i65j1h5j', '2863074376250121461194200964351550106115034432936', 23); - T('hq9iq11x71vufsis5', '141103623069429330755986709', 36); - T('31352441130112145', '9239969893601', 6); - T('1e6g5c3c8', '63619126397', 21); - T('32bcbi7d25g42l', '880900685973582625', 22); - T('111627132417321114752432320745434507337525667340540534056666', '220880699124044497678574383774865426395965086166441398', 8); - T('31ajm2h13k3kcceeb9', '432180494217866849859531', 23); - T('30hj3', '848956', 23); - T('h2eaee905c464gh13c1g3a24bffbd7b157a7d8243', '2788179404237205827575664664460917404793610485107907', 18); - T('6l5fmeo4r8q9ksh0e16dqs2a', '29054682041642997983411270167870486', 29); - T('9bgeg983a9gb072ia', '2776374479824499829805', 19); - T('427303573032681547102347847', '27865476405856977419599954', 9); - T('58186560531623536388240774584465008', '1644634101768983314712700937410068', 9); - T('gud5evq5j', '23798093687167', 33); - T('273989b4c4b2b65507308785c9601b1991866b1', '5472576971132404535367740776182484421987974', 13); - T('52e226', '3945861', 15); - T('c4bg1f73', '5037578485', 17); - T('0', '0', 7); - T('2ga84ck3k8lf1b6g81e4d1o10adildo4fb73d3', '14063518582163403576381156810721420380483851225111578', 25); - T('18398a17693a99a73829311597a8009a998', '449495260282451489496065134468852961', 11); - T('0', '0', 10); - T('2322cb943a7c0e49c0adecc89ae8c8', '28247920028932853396658049010936738', 15); - T('4a7lmeeehee0m0e2f88h3fhi9jae36', '13754660732035427506299787750012455330113', 23); - T('66om3l', '61326346', 25); - T('1jaxmqc44xcgutokt3', '440143628927856861597987927', 36); - T('43402144002311022321023', '11357849767776388', 5); - T('f1q', '15418', 32); - T('94bm3khgmeh6h666e51h4hkb1ba70lb0', '15037888711417055917959334087989947554028156', 23); - T('468836dc5e0921dc805d0ca944655824a80', '43081374214668891982097847922924570176495', 15); - T('7aia5ft68j2ah9tdnij8hbf2436', '1869214551753119688855382398317532507696', 30); - T('14a3b3', '1352627', 16); - T('upklpfh648l1', '1555511519818102177', 33); - T('3642604410156200265653560662320144226060043062566313031', '17044221773211127840838069782217144740567292173', 7); - T('11111001010110010000011011010110111010011011110010100101011010010000111011110110011011011100001110000001110010101000001101', '5178750376444939350710857550952606221', 2); - T('25914', '69645', 13); - T('22201121210', '171768', 3); - T('1299ea6145a33955gg494827fgfb4', '160233176579923489744786615302245782', 18); - T('2404400303345455302', '273021872765366', 6); - T('2780589741896838784693', '2780589741896838784693', 10); - T('120051666651454430105', '102765715947351287', 7); - T('go', '488', 29); - T('7hdkmh4echjjf94fc851b7cm9a6309he06fhk', '81727387424011034101131466677491869453894982060018', 23); - T('33313031310333101301210101232121100102032301201220123220033121130222032003202122', '1448964781656315513831338629339319660846289270938', 4); - T('1f4ejan70ggb73lk5bia4djdjelig6', '17342687637043286986515244372299021023238', 24); - T('9', '9', 22); - T('100110', '38', 2); - T('101010011010001001110001110111110010010100011100110100001101101110100100001101001', '1602153026925525548353641', 2); - T('dce94', '701914', 15); - T('1ecgdk4ch2ki2gal6geikc9fmgm6gc8a8mb', '135755121543031059870445637631947092289577070619', 24); - T('hviu8xaubwr6cba0mkh6xhcmkgrudf98np4', '563888921489815885331467969078334098692735774824158929', 35); - T('16b72', '32774', 12); - T('3fkd07k', '2106600098', 29); - T('121344424133143434114024144', '2193410290272017424', 5); - T('ej561m9bckcn7i03ja6mj2a1m1alm85ej9mhc', '720924047901203102542178589784759717033703825426724', 24); - T('6dkib54b13fncbkcefo7lafkdkae78m59l', '88812159262476475867698690215386920230540581496', 25); - T('5947916744591013134669825015156762693936309', '5947916744591013134669825015156762693936309', 10); - T('97fj791568miadhqtj6dci02', '87089150165580623669373687837670202', 30); - T('3ocb5459mcgps', '2026781564861859178', 30); - T('828g6fdkbfje1kaji14fk361', '20909317220805593816802833365225', 21); - T('q5', '941', 36); - T('8alo9sgaa', '4187460686272', 29); - T('5j6nf244ahl3k83f24l5imff20a0ik2ij45', '490788188097844322838594090172370516724231182117', 24); - T('4kfem4ifgc376m7fhfiab7ji51n', '78208441448030014437846328864355857976', 27); - T('22ga1if26hi9', '5021678125886084', 25); - T('6h8110747bb4ec5', '5526770097051812790', 19); - T('3kmiao', '64421584', 28); - T('35b2ef5i09feda6bf2dfg56cfhc54123h74573h', '90100642513830363534883950760191394857528151082877', 20); - T('4j10knam', '29062827147', 25); - T('9dj8geg', '620710696', 20); - T('100100101111011101011001111110000010001001100010101110000010010011111100100011110010001010000110100000010111011111110', '95386528077312833528510117745536766', 2); - T('37odmlq4t1cphe42', '46784748191707671321722', 30); - T('3cg8jhkdc1b1dd644hf6g3ff4fhbc', '37974153903814605133910844090810871839', 21); - T('2d90a4719837dbaca346e54796196aa4c39a29d7028', '72320014326190529207268511298086237053386258031788', 15); - T('221112010143201440041132340304141040211331000103002002341243330240031303', '103772284529022914388035430657679022322741387814578', 5); - T('234', '123', 7); - T('1gbj8j3f3g4fc7afcg', '23985271553951719606256', 20); - T('16dhfi679ge8cdahc0f5c3de64', '126062950519944159766121561159030', 19); - T('2110001020000212001221110002112102201001012101102121211212111212200211202111112122101002222112', '576441067410056461483703142176818271029941704', 3); - T('1400010200522020432130022505551242315132004422311315214250500552', '17595958038682732910920374172787533846127463600692', 6); - T('1100', '36', 3); - T('132133002330203222133230301300333012000022322212301213111003301031330013313211', '43509780485649606280607371868487166230944316901', 4); - T('111111220020010200200211011122002020002221111000112101211122021112110021011010120000011110110011', '3184810401058738852989667333232201616049894969', 3); - T('p2190d2m471f14c7m5jinn', '128683057515715021320115217552355', 29); - T('66607051535464671602731746325356021372265', '9099202145653789818834446363266512053', 8); - T('rxxwxwhb9cp2sndulf513ch', '137941140090442856448979588513676333', 34); - T('5v1as3h7gkt', '9098519834770439', 33); - T('23323330311211123313232', '52498284264942', 4); - T('1j6l4lj3lda2ah', '927009955843875697', 23); - T('10u4an3sxhdjqbpdd1', '111253813312875559803626727', 34); - T('n65aacems59afhei0i128qcjobg', '5898638281362823389060707803600314054946', 30); - T('1c69', '16597', 22); - T('472035076601272777773466260770745221025541771310455547267433', '940021031620376267748547570264155096359926520862306075', 8); - T('72', '79', 11); - T('19398c170gfcg64f843af17bgaa1a241947c', '129947852827238055712040360831603626896491442', 18); - T('101418606067268463402226345262270255081', '1857887598344404806997185438936620857', 9); - T('81mgdn230a75egkmiald7995gagm911', '2059707806285597627503761733243610129021017', 24); - T('2gllk780bm04e8lfmcekjgcfh07d27', '286479826696535775464273610901096241568391', 26); - T('122120012022201210200121222211001112112110221211212120212010011011001', '542747711299361252116322470317832', 3); - T('36bjnnofqm2f7ibl0n8hel8re350b7ff', '2349614933088599651464732173196752378742407779', 28); - T('2', '2', 17); - T('1901f2f75eddf8bif1dai18d2d', '486612954588567587212842937829253', 20); - T('fpr72ngapr11bdjarrjra8m3q0idnhcg7', '324494898071507461877053978943272748028566739783', 28); - T('mriospvubhhkbhhknl2', '84091461121613338404016434744', 34); - T('1gbxzhqfotpmsr', '247967926192484011179', 36); - T('171c43', '1119888', 15); - T('719d9ae0j06dc5k', '148475592775622801804', 24); - T('bfacgjw4l', '16123175442252', 33); - T('27nc9ja3ildcbpu92tmf', '48762307359506883152233969612', 31); - T('35100215607256233370100157131103657413347736114726441', '332554887108209374458014391052845453182019808545', 8); - T('2d', '43', 15); - T('61g7883dd3a55cfamm4307l26gd5qn', '1958734810273792705789246918934822143371545', 27); - T('jaa6397qhgfh47nj48ad3f4pg', '436699483716932159117919657451490464', 27); - T('7a9e8u030c2mlmislh2iq', '4925854031564503132850322969410', 31); - T('8dc', '3147', 19); - T('165130926947488295413682234912291953857277202438', '165130926947488295413682234912291953857277202438', 10); - T('2', '2', 35); - T('g7n4l', '15007121', 31); - T('2000201212021200110122', '21205710026', 3); - T('256e27c683g7e28444fe68dfg37', '227373590164376719118580707971549', 17); - T('3589ma16bn', '8514389402783', 24); - T('peqek92fb83fml55k4f7qa567ja', '1079505469268043886172306636663444862734', 28); - T('i6okun8rle5lgo2klrg7r24l1o48r9', '812263483616430907150828319601346058339361641', 32); - T('ffjb', '167409', 22); - T('16899758c5637027cc4509197a0806151b1b', '1472124298781451615642290787701974764196', 13); - T('dk50dq28hq0b9', '7265988549586872339', 30); - T('79f', '2191', 17); - T('69', '99', 15); - T('72da992618353861841c01d4687073a8d516', '93886242244818385595059361163892476186560', 14); - T('aki9bbh89fh87m8l1aa4a9l5g7bffm0h88385', '114763233555248086785759194797816098143926938310370', 23); - T('184b51amh5', '3542898368285', 24); - T('10034412103112330433111411132332013242104321130404032331313343', '4474599918067555064654041662068659458463598', 5); - T('rj5hgcjcce4heh0bafh', '5821635304368037800119927690', 29); - T('i237h1j32f357', '232647752169124233', 22); - T('23127102426b', '4010576357201', 13); - T('111111101111110011111000011001110101001101110000000011000', '143545575800234008', 2); - T('676884', '405319', 9); - T('42k68dbf4fcc250l5k282505m4imcfc', '293284630414438750039663958568928524711326', 23); - T('g31j84ai', '20678305818', 20); - T('0', '0', 3); - T('1ar451i41igd3prsian71prim0lseslbh', '86238754807491960819075362998411526539819962332', 29); - T('111011100110001111100001101100100100', '63992372004', 2); - T('bc053tka9gjboqptfug8764vteewhtn', '40826388795618571128129367769621369352492615884', 33); - T('bb972', '248486', 12); - T('i1qamkq1pfuin9eo', '3989956977379744422840672', 36); - T('361524917', '361524917', 10); - T('57b08jkec82938i3khak1b6c', '13806151720864861977227556530364', 21); - T('6ech2h1890', '94263489226286', 29); - T('1j5o5jmn9jafbdn4nn', '6738409255222242873889819', 28); - T('15cmpsn09too2c', '43116122218866434124', 32); - T('811', '980', 11); - T('4', '4', 9); - T('3492n', '2546183', 30); - T('c503f', '1026883', 17); - T('c8841d8a3e0c3184a1d13f24b7c8abcbf36', '1091713357762058306584556087055815769112374', 16); - T('101111111110', '3070', 2); - T('crsczl5y5f6wtp9lh3gh798ir8lusu', '17339136471721411584933213471118181624608588590', 36); - T('1fq5bta3pagdp8okhgs53f7clioamk37ko8', '255008927803374998828799238728878199583965626637728', 30); - T('210873084153651612242427773566076226832', '3874424403685633658520167970745713578', 9); - T('3db0523a24e245743553', '86803771432248580685703', 15); - T('40324414', '323734', 5); - T('5d6ka3abcc68880h', '767243912601976420529', 22); - T('c38lqjl46kabetl5qlj1r9oitjij', '92343694633170266121595556492720749580659', 30); - T('40552355236034366411121260630', '1894076705177959214150189', 7); - T('f8o42sl1bgh8oefa73djm5nbcqj2pfkiqd', '250697214887739481273552937511044544495638076630497', 31); - T('ldb4lgkib', '30103008932711', 33); - T('2', '2', 19); - T('pk06i2ceg0', '272020641434528', 28); - T('1010001000100010110011010000100001000001111010001100001000000001011001110100101110101000001010001110101011100111111100100001010010110010000011001000110101100011100000110001', '3791391092894496185657389426598978260806574313715761', 2); - T('2930', '4788', 12); - T('11011011001101101111100101010011000101000100', '15064322355524', 2); - T('4nz549mpd2ekdoe', '28653665664075364608062', 36); - T('k1b3b27gf1', '15943538449567', 21); - T('1fl9ian76dblfa44hgkle1j2la', '145148177867836192856283849258501785', 25); - T('5sr', '6759', 34); - T('0', '0', 10); - T('f9h', '12029', 28); - T('30ijdbbc1fb48dqb5h0a54ij3', '163061899281675414544508578695564599', 28); - T('11499i6bb7j9jcl22gfc691jkaijl9g70644hjf5', '23854750315423368837146215349983736231413256524952211', 22); - T('1os4p3n5ytmn', '164971754456015943', 35); - T('gbek5ifl9uvccwl', '29691120613113956443083', 33); - T('244668499127028e83bb4181', '2565913383528918683684970721', 15); - T('4t3cdnbdu3hi', '125493059871385556', 31); - T('33444410431312132044442214340', '141551939616015585595', 5); - T('f0e18mang1ckb83o6d02lm5p7mo4a2j4', '1098667950936590953496178062298824527159019274', 26); - T('10000010110111110100000101001001001011110100001100011111011011000110110011100000000101101', '316429297174908011263148077', 2); - T('10010111000101010011011101101001010010011100110100111100001', '340208393737103841', 2); - T('4455190b50557152a56aa689', '28956950424301470445177161', 12); - T('30178a990619211a65284', '2027761131843662253152', 11); - T('32adibdic3507e964', '904264457185802878114', 19); - T('1402203332505114241034521554031304', '80106131292450875184746488', 6); - T('1b7e6bfdgaf8h618hh396d94gf99660f2ah3', '140638185851643426335154839361249634663210461', 18); - T('4n02qr0qcjn', '1428131533975659', 28); - T('722062570016143', '32030085618787', 8); - T('12h1wrii6xf1isrxgxotoxf0k4rs', '240306175962933523255986233934776980691330', 34); - T('271132ed2156b56ba2264090d5', '624075202158401303369210786825', 15); - T('cbbe0ifb0ecg0eefifca0861754ad2gi2e5acc9af', '17820079854097348669358676176262454365377640065197275', 19); - T('d488h34b78i092jn5ki28d4hd0a2def3', '80631173055200461094000840558382509399473899', 24); - T('kai', '14868', 27); - T('74663674130162363012065031725670307006351247702', '2650448086139415170144453379569169365028802', 8); - T('410ek648686h', '3853830909449054', 23); - T('112122110102210020020200021022102221202202200122111210110112201002', '16764033406503354998216612366594', 3); - T('5a9ag0c99d9faad76g1eg9egegg3b6bc98d4140', '2801521663446241132823944236302962625699717089212', 18); - T('bfbi5a6afj45iah666dk760bd509af6', '219330264685128598444241632527479365312816', 22); - T('oi3j09e1m2dd9498c12fd1', '5622045359644445263576289494076', 25); - T('1403606123334625332112530636430620636042', '1439558915530889901212705116835520', 7); - T('111111100100110000000000001000101001001001101101011000001011100001010001100110111110010111111101000100000010001001111000111011111000100101000100000100000001111100011011101011101000', '1522300117779563676992926268294212750701795813499189992', 2); - T('32f9e995', '1301412242', 17); - T('2l900ee2', '9976339380', 23); - T('v998ik9huu', '1451808320253717', 33); - T('20460428a2a42366480a4650481749aa', '391102418677365044663717119852919', 11); - T('111111000111011011001001111100100111', '67770294055', 2); - T('50ce3', '4629574', 31); - T('54ig18iqae2tph', '606662590569600162167', 35); - T('4f4jav5ke8j9w', '10607946018036371326', 34); - T('435gmb5r5s9bbkbqo8pn8nis', '17742072943258762084938672774179567', 29); - T('210010022141321034344014413321311333243103213404021224344141321142101100141', '11655341046605487362673272556680098862550253021893796', 5); - T('11703652371245327270875136818411753701245105114621364', '50015363250812413592978674160611932885342581878621', 9); - T('100110111011000001111100110000100110011010001010000000100000011101101011110100000100010110011101001000010000100101010101010011111010110100011101', '13562459849657731179062132755251654390951197', 2); - T('f55ch081bgiqjfoi580i5027j5ibnm4g', '93717655210173870936123983046544755878321950936', 30); - T('14c7bd9g8fgegf4598ig78db559egei', '286902761703352399115713383654173395387', 19); - T('if9644b9hjb53je550iggh2095h', '125985325474900384130099682358723717', 20); - T('436j48e17g8hhbad8l02', '309158322644714941880361057', 23); - T('19395107722a624381360a3a37388491485545493', '837334765628822776393052128437254413732612', 11); - T('2f2ebnnd84moej1fh5g', '284114881218993578999222252', 28); - T('2266ce3388fee3c292256', '2599310186932964178862678', 16); - T('12f09b', '2839808', 19); - T('3v1lrp1nu0', '139695817285568', 32); - T('26234', '26234', 10); - T('8546683557740281816235016708082647838436361741010513', '39956203753802223948047814344332292828203738992921', 9); - T('224130321113431331234124334203030021101242314334043412423133', '446347968128646822230071497717582810279793', 5); - T('122784354735470573734278130737225806820754754778367', '648246815949675714466794273511802263245293730952', 9); - T('522bb0cac72011727319b7ab67075037aba2', '5030349684335489902148585919042821411528', 13); - T('784afb326df4e14f44919e903da2daab2c6a8c2b7', '10988016479801545098971638340838655979698598232759', 16); - T('1', '1', 6); - T('1a', '40', 30); - T('1140625615021215040452466121535636111', '3254092286706201839308923015042', 7); - T('15oonil2fhic899aaec4im0hpda0ghi', '3458063037512129270731260341461940831158412', 26); - T('5qf0e4a8gcpyoh', '680672672565382003132', 35); - T('r6t5mdbk2bhbksd79sk267f7kj6etr76ch2', '13843573438903736667979936265567288587972581206329575', 31); - T('5i5a32b13if5hd6b27ie1abd4d7831fb83335fh', '23338871699861348992667980731442144357549336414583', 19); - T('965h512b2a26efd4hihi4h7ch5deb10ig', '776421006283852166648096674359365276607441', 19); - T('23cc00a57842c825b2b73', '190753980657808903079377', 14); - T('84fgd0b838027260hghf3b1i', '6911861868573500849174840828438', 20); - T('32024343310', '33434205', 5); - T('2g25ae07b9bd0d8953dgg9c9', '215312595589787196108811324581', 18); - T('2c7516b990ec844c7a113d5gc84977g6', '380417281882594767106673659584705172801', 17); - T('3937e11053978eaa8b', '356239468690396944881', 15); - T('423540545131050354211054225420050220141241010244114235255451', '36191168862496053559216924657081367445614940343', 6); - T('1mq', '1349', 27); - T('41336630208066014426507600014561516256045788602138888685', '126394964103942872413285726629499765226015930689454252', 9); - T('23812465082116078023663065846540105844417', '359745322984251038213859961958548558564', 9); - T('32731602b73c56641e0a549720ac684047dc186d2e', '5250067280281468268057767492160429729760400843844', 15); - T('207', '457', 15); - T('221016156567502', '9966232203074', 8); - T('3', '3', 4); - T('149390610a9a', '5397912566784', 14); - T('1', '1', 31); - T('1100210011201102102100222212220201010222002011211211201', '79222020471668857707359281', 3); - T('oumnfcjqawvoiu2umob4hel', '63683659777115454000636977806709805', 33); - T('121a8gdf0bg5ee492017d', '4565149191282994738546034', 17); - T('101100010010', '2834', 2); - T('sfb31qelcjas', '348085994301840276', 29); - T('761570133215525640271', '8966391655604633785', 8); - T('k6ljbii1b950a29q', '290193032454717352772096', 30); - T('14444133312304020024142413311244142024204432230212103022143102', '8669102161750148059985951449842543267771652', 5); - T('4fg703204ae6653c6b3j4a9jf2ej1j', '257208195071681839222502187276784439639', 20); - T('1c0f6se081r4nf9rfr9te43d1e5c13', '24646533503075931130110785406893472989210500', 31); - T('5855387560621204', '1226716470634171', 9); - T('256907', '3289405', 17); - T('99igokmb20gb41jlqag2731bjn641pa8m11', '149265576178669580878869535449967114241115964835709', 28); - T('17g40f10cl36712efi6bc47g777e801bm77421fi', '170939473992155811269351752741318276877107096372302484', 23); - T('64647672689', '64647672689', 10); - T('1643632561314231340041002365410010553', '5171467731134228257724052634904', 7); - T('47d', '1149', 16); - T('393ba729770d6505a3118287502dcc939639a85a1803', '70352045253191285526358196586767060137043932511707', 14); - T('1khg50kik085caak5a', '59864078118328974774637', 21); - T('5tcqa', '4844590', 30); - T('4bn43k601jd9rsbjtjelutf1u5krrthabjc', '2226709914233178306419196997863309807078435719529623', 31); - T('j21c171a63p', '21463980112681081', 32); - T('735f0a94g0', '853457045557', 17); - T('31', '58', 19); - T('11303315150321412253104251022353441041322125054241231155444320242', '79348974866336815279783368738596691903140624659106', 6); - T('emtnivvcvpbofbjwx00q5r', '7042313029555078022883072758212719', 36); - T('1111111011110011111100001011100110001010100001111100110011010001101011000001000000001100000011101000111101100011000110111111110111111111111111010101011', '2842819740151363791267849959009928040708832939', 2); - T('11124', '789', 5); - T('263460', '160029', 9); - T('132020230022232233001012312110000320', '2223628314707328843832', 4); - T('qmatp6x7x0i7kwww9ru3g74fg31u', '13041558211114994891605591496874198058411615', 35); - T('1212432456235400016312330136544614313425566221424415544351423', '667449638793600765524787631521077125935234478926704', 7); - T('613b8b5', '101955765', 16); - T('1nbehnbn3k7io1e9h6', '2156225812589011334673092', 26); - T('101530101442425775517477023774', '158785455373148008304355324', 8); - T('8393265877750', '8393265877750', 10); - T('gejki8ped057na8', '1068784882324809922800', 26); - T('35524gbcgd415cg72e5385a3a687bbfa', '2698475481148714592199279711100304788108', 18); - T('1li6168emf0glp8b74bcgnf49', '16707705100794731252094321598976869', 26); - T('4ujg9feb5lsbwn83p1ftqv85a966nujwd', '19276486249671857007076018238589272537818685313529', 33); - T('7k', '167', 21); - T('bbwtg5482u5u125jwaw4grahxsl2wv6', '99870770755356292494097529732122977160595962180', 34); - T('12102302311130033133311221232311233111030032222222300300020200302332222313211130221', '36792782803022052519563878572962189298755425949481', 4); - T('39fd0kdiglo6f1', '13594585461735594178', 27); - T('30214311524250615152333025534506', '480518635808621857675890962', 7); - T('33736082402621341865465256743878261', '952533655583805522673631866039924', 9); - T('15536323540072537510214740648724651474', '328944392163793117310283327346967335', 9); - T('baajk2e9jcgcbk4a', '783476238643207986019', 21); - T('78s0h42a7', '3656391077499', 29); - T('5jipugkahalhjqpash1', '3937423681465917065890170274', 31); - T('aba12217aa326a16084a45', '505448814884269683427541', 12); - T('g8db2dff76', '5311016260900', 19); - T('fblgab2', '4774316536', 26); - T('cw0b3rp0nqac6rkqjm1a', '2807837344213103415524527607870', 35); - T('2220221212200221020001120101000021222', '438934738823378954', 3); - T('853iy2c2t9n5skt9ncntdinxj9hw', '8528601144540421131583349837423197612512212', 36); - T('enld1pqd72iiaah331p4c31sjricj', '8459371819370199255275975857354512812858013', 31); - T('374160464102717737077444644401061474361141636', '21456498302081433312710883059235111093150', 8); - T('5bnlih4kc679j7c1g4k3hak8eanfk2cd75', '74243343685087721564583592254567964316602539555', 25); - T('i291e', '2362778', 19); - T('ff4e0b01g44379g699bgc30c8gb2a1e393a01b', '53454133794642577998107664307448664264718891224', 17); - T('h6g', '19872', 34); - T('hff', '6437', 19); - T('201301132320130302211011203213010', '38937807697351162308', 4); - T('el2i1c1kvnf4n9a', '17306001852428266396970', 32); - T('llor', '586647', 30); - T('18f0l3un7hx6v3l6xu6whg0c854kolmeb', '12695193933193179158621509296985565216876568630503', 34); - T('2ehm00rlkmf', '1053398216187932', 29); - T('60lb29l4bkkbb6bnlccd5557h43h78', '209357188819429378059650212593873946932683', 25); - T('r4b', '33226', 35); - T('31222304042332433414413402401331030144230123012203422141033420300', '1789049338874374103059075210410623287931935700', 5); - T('13abbda6aa99c3c209c60266c69080c', '30726786430113013257219600561452028', 14); - T('262643168493430786031', '262643168493430786031', 10); - T('1100122100212202211210011021210022012211112201000122102110221222202200012220101210', '601798443643669936350054442563165420687', 3); - T('14otqenu046jhlxo4ptmng1u', '190810415328770416971685556952127736', 34); - T('da4h7jm2gf386iojnaq5ce1d25gl', '15818738612601844466551284963021649225125', 28); - T('100110100000100110110110010101000101011000001100010101011110100101000010101001100000001110111010100101010010', '195266285040805814110355923380562', 2); - T('488342231251751346242311', '44247487379947531811290', 9); - T('2h8bfc33dhb130bgd6d37', '37877193351326116690267633', 18); - T('3r2q2kd0md', '135336655487693', 32); - T('23332231413342023', '7332327145311', 6); - T('265735ecgdd4b353h3472743a3', '56608285630040709994361807982867', 18); - T('36gq75xn8dkj1vgvsz00l', '42502936499191450526350062396117', 36); - T('eh7dtarl9r36qaa4mhmk7', '9778676538945889058686790375871', 31); - T('14803558684458a2993a0a32099467a0614194730', '647203408320127342024090091627696455000077', 11); - T('1451431412002040323331043104330', '400960425098607615886590', 6); - T('297p13lh5gepa3ecdhhco', '99373684147185210906053364513', 27); - T('1301432143220', '394412310', 5); - T('33', '87', 28); - T('432231350515154632', '1041384299764405', 7); - T('313121410300242022022133', '39718036029485918', 5); - T('6b63', '27491', 16); - T('682b3', '189426', 13); - T('7219653551a624979495a91a8', '70891355956396038181400257', 11); - T('33002231111131', '252368221', 4); - T('4d88ggej8i58d', '59239205589626625', 22); - T('34451601353532653611436161142566545211336115564531652', '323278188886248967529158547940775990624674072', 7); - T('1is5noptlnirtdb3fvp5n', '2015588554685716212306054997175', 32); - T('bha5cgdkjk0d', '4144765439844616', 21); - T('27a25d8j516cdi4d7b', '70786447958357042929196', 21); - T('1586', '2030', 11); - T('31342760667031767334646421766116726252335314714', '1108212082493888677367272229520408961194444', 8); - T('28546553', '14143782', 9); - T('257jd0p4o', '460207294324', 26); - T('2lafklt78vxkn9xllik', '9683449653483437263505971556', 34); - T('2d3777760a984a21c97a0d20c628c419cab2bfc67f', '66084232243819558824679961490043082487366953191039', 16); - T('2eqb5xje', '127870218160', 34); - T('272343723733570133550665013', '880462300728651545799179', 8); - T('3kji6mhdk8no7jc8a9emhqr', '552688352219570858171515412726536', 29); - T('45472185506624743014572972163525387956841', '45472185506624743014572972163525387956841', 10); - T('27330316426437424646561612652414263301414200342717', '522342837272716004737400194551917026620851663', 8); - T('2b32df51f67de8g8834c19eec0c3c9320bbc943a4c6', '12688544036802134995824223195793070866654304069676611', 17); - T('101214044003251242303202220534005133043421420054520404513042300402350', '85236281669632536888419124917731749716268802441235130', 6); - T('33', '27', 8); - T('22014g67ff8bf1c644c2081d17bed81171c6526e75', '594721012934655345095358079862004270167442813594302', 17); - T('2uejffgbg594', '75792588512668236', 31); - T('6hedef5cg89aehbg029334ehibff5b', '84126707114035006726317668787251510718', 19); - T('12c9942167ae93c737fc5ff39d', '1488492491002839592133151683485', 16); - T('c2c44', '797764', 16); - T('22112301432130424314234114214121144302343011224233033111040443413213434424', '2596351663106652674437417994841482826828643522405614', 5); - T('447886b857b4442ae33e07b9c620', '244322955053028014376497119444380', 15); - T('fe787f84cf0ae7655d44db4e793b2a98ae8f', '22167524012235587957931446373184044722073231', 16); - T('ce00gfa61b35502ddea6ae08fa9e3c', '32311970180252432302213442175559249026', 18); - T('6410235531675374505654365627', '15755268886904815024728983', 8); - T('10421g292f1g86520b7g99743ffg', '1691511665188307722429188808830042', 17); - T('hfhae73', '608398905', 18); - T('1b02pnbb9fk2kt7hgejkfghaarsm03', '9380211704840395733125589366849221945645803', 30); - T('1cmfc4mbkho', '303773375379894', 27); - T('1011201211112002120002000021221000200212210122022200221211100002211020111201222', '19303102056479652797750726699461962392', 3); - T('fmf7k2vvfli7js7qddj08lrrsvjjkqhlqp', '734369787776964304691750078309244157228282267883353', 32); - T('b9r33ab', '10045230494', 31); - T('2144b7bc8951804726196a6a744886dcc1ba41ad002cb', '563023243497677865341196187925034677481508487973787', 14); - T('ab7', '1579', 12); - T('11111101111011111000010011100001100110110110000101100', '8934565388446764', 2); - T('121201210112011002210112122011102121100111200121201121221210210101', '19152206217272003533575256015003', 3); - T('87ike7hc4c4e4csrtrunnah4', '165014231640248173568866466973234731', 31); - T('6f40aa9gd3529589f6d6e8', '4857078092896960066845279294', 19); - T('1000112300233023320333000013301220131002213013133010032002130232121200112', '22424670700759204990548756345478151954602006', 4); - T('12010020202022011121200110122022012210210002011121220002010110220200022221212120022', '2270509037526981909994030317330177692336', 3); - T('jtcrk8briibmd1', '734874456187380029857', 32); - T('323ab6b303a0kh2cg', '4439310393102239451589', 21); - T('132213311303211212102223130230213013330011030112320113113131211020222200130222310101', '179019401287519987440897017633826802507494397750545', 4); - T('10421aa279', '10865826370', 13); - T('28cbajpejjf18u', '264768966115047556535', 35); - T('1u7nolh6bd6v0', '4507977116539696462', 34); - T('54wmga17c', '7244724152205', 33); - T('13uviq1i1r00087sqj8qncs9lo8', '1529924306777719202810742088266389182216', 32); - T('5ds4b7nu00morbk', '6415012024329735794036', 32); - T('34410186233', '12187121115', 9); - T('47a1c4hbmma0gjf3b5kn914n4n', '381569904666915560937256750088358248', 25); - T('54ttopkk9fmtu6764m54', '111825156831061493422412579685', 31); - T('mgn', '18989', 29); - T('10505055444011541442103154442231040330004242', '3299912455302280343771981626079042', 6); - T('7g38gcdfb0972cd176561eff', '587323076724641878770901613469', 18); - T('49106l58aqblku24m2mc62shsm30p9q5j3', '1474965748795651704391869363110766509836712354573853', 34); - T('50258', '192550', 14); - T('5025aa24a', '4090471668', 13); - T('17515037027696b9a135497bab85868', '384282956567691349139467954115216', 12); - T('573j1fe75j8a9f29ii7d34cb3jbbf', '14387834859916761337851572818723836635', 20); - T('186b6b31486165c0bc8c778fd49af12ea08f7dad332', '571028668500605890623232664155788301681845784466226', 16); - T('2313123220321101131302220130003331201011233103120', '227077642865109202959441786072', 4); - T('7eejonl537c40faim9b', '222874151472317796433717213', 26); - T('8k0oy5j231dhtdv5t8q7w5', '2283030198732051810335111155170075', 35); - T('435045040612115113266114321225361030034215', '202006427408006640757853847254122093', 7); - T('2akkgn3g1jsabehm6kgnnrpl26s2t4b', '3329280104777703639665143207138900680219128971', 32); - T('20', '40', 20); - T('111101011111010111100011011101010001111100010010110111101111010111011010000', '36297363457553334775504', 2); - T('3222123012301022200330013311022', '4222998842413448522', 4); - T('a2587983019413965124039', '832724865093143284531509', 11); - T('akej63bg59kj4okd4oh5il012j8j0p', '1167589559975024794478346165128293255822901', 26); - T('23c2he446d2g0a6gdi0fdee2gb6e5c', '26583275300599088108871698596507139368', 19); - T('1jkeh637ms7gofnk8ood5i5kk1j22d', '4312562387308133742326791929397236729866296', 29); - T('78837f5f773015da983e', '1792798252228672996730116', 17); - T('1416c69100c21b05a22264796b', '9291730109537657404686437398', 13); - T('93d8a93d28', '191813134864', 14); - T('394a2167461768638586b2914b0b80667386548658', '667335229599904318812161808924349330646817188', 12); - T('1wdsuoqsut7um45fo7d4', '140917464962232105605575506580', 33); - T('4icn278aa75564g6j2olk7kl7fl5ga1n', '102797064941780765797751135934146317345959423', 25); - T('9i002055a4hi6jaaadg3', '51904577968178133729685523', 20); - T('1cvfqsut', '72490601641', 34); - T('fj2je594k1j0bhf93b2de72373', '18079705921653558686576826974593824', 21); - T('4240320213321034004', '17415886111754', 5); - T('711966f187geaeb5bc7d207e32a43da8265e186864g5', '573279130756576280449162350505323079502754368266400507', 17); - T('49271274804b36c488411958c67c8bb9c1486455', '130788357055261430585631300892818257979129537', 13); - T('2dj4ib63771dfig859hcc0ab17hc03j', '2897080031583056937886505492750169216079', 20); - T('2aef3ee6f864b26772c23cf6', '13287600730756091106849602806', 16); - T('frcnn9hib7eog6f34l23', '628128512915374991101180138563', 32); - T('1010111000111110100011011011100101010011110000101011000000010000010011101001010001111101111001110000010100010000111100100110001011001011110010100010111010010010100', '7958075089772384277251993017934409136873707500692', 2); - T('46h51n7bh5n7n86njh37fhihc3d79cj8h', '628335332219766512635376856539379172420010897', 24); - T('pciq4mdi1q9q22q9n3g', '2848254632326814305960656020', 28); - T('1', '1', 29); - T('2f826f687ie3h5h39', '1815538753739148366869', 20); - T('85224600844450714154447', '8452979833566085087057', 9); - T('2ncrhr4rasjjeqaajq4341jr09r', '1642784213600589272925380877043975840644', 31); - T('a00', '1210', 11); - T('56c717da4g7863c4127229b838b42dgbbf7g1132', '5242908799066029717292077136248328396959421188623', 17); - T('293684b63150b4456438340064cbc788c4b01', '34310245908660290962930216560562702368986', 13); - T('40cc56abcc240', '94978404251094', 13); - T('218903cf27a47178b456e4cea5e470f7ae51670db5', '586417501992499293536891609375926193432812131092364', 17); - T('d15wq1nleg7u549dadd0718e', '2183292000236241138234881147030692666', 34); - T('1113023440200122202434101414400101', '147253000878996390387526', 5); - T('193c4c1a69add29d9a5101ced0568697d923', '2198325248780085112365807036920470754023715', 16); - T('11a507516c68d662f15d9', '1333191524844399246644697', 16); - T('138246022172800612014535', '12723226204164688321097', 9); - T('2f', '67', 26); - T('n9bbffps4ij483m9p4lfeon74jmdernad', '4319880888388973123665036793081840398907295990013', 30); - T('9nrr20re0e90il9hi49fijfrk3el', '11668527008401372147103143919940731784397', 28); - T('110200020222202010012012000002001020120022212111121202111121101021', '14508751609178069453862292358287', 3); - T('401014110441023423013340310213213401002003324434144220111030', '701341637605553414959898651614073338832015', 5); - T('16d1438563c3dab89cac1b8a2b02c9ab92652cd016087', '402145454893768368538070238910742261904151734958103', 14); - T('16c430ih94bdgcd', '1078369041154387027', 19); - T('6rrmvjny73f40mqhlbav2u92ly8xhs0yl', '174704136528249902816525420461236150502024477152961', 35); - T('6h0g8ijlelligfeh699i4lfm4', '8948723159164161623690376517243348', 24); - T('909697005b', '186948429217', 14); - T('205ftjhgh6bthp9i71h51r9mrade01sii1jkr', '301112010317868572084712100360200322156165974734024727', 30); - T('20ij24h4d1j9jj50', '1890604943011908121375', 25); - T('221011001021222000210020222201200120101000', '101921456153063705544', 3); - T('m2nhkcpq0r16jd3jgm', '160361482760888867774119965', 29); - T('14065304637358947988886', '14065304637358947988886', 10); - T('jg2ii78j380j', '6924453033870937', 21); - T('mi0m64bfip6rsb53ol2oscllcoe', '2381613436643734921316429121959549049180', 29); - T('11101000111010011101011001100100101001110111101110110100011001011111101111100100111011111100010011101111001010001100', '75584728662217792152893436906631820', 2); - T('90169650', '90169650', 10); - T('0', '0', 23); - T('9m7fl', '4504599', 26); - T('462207311743', '41106117603', 8); - T('apjbn7lln0l9xau8pxi', '39637920958143725832613021304', 34); - T('127dc0ab6f59gd8955b', '16097431569685397455342', 17); - T('273h4fd', '81667075', 18); - T('1isgbdtssth73e6es382gs5k13rci6ob9u', '74377241800512845181909478165136810275516650892606', 32); - T('3', '3', 25); - T('ad4684a', '124002745', 15); - T('4aa54680539bb5a81c6a665694717a30a525a0045', '1744843150071734423605691580172448713985937039', 13); - T('5c8n1tpje68ud2mu125nttg62entnlc', '7683611140873419478117143666838299771020435116', 32); - T('fa7f', '187971', 23); - T('22215', '3107', 6); - T('52a326814a947496353844318285bb39b066903', '534626397264431225021347981842706300601235', 12); - T('322011015154252234042', '12393630663355754', 6); - T('a2669c148f4ea9e', '731388268367899294', 16); - T('5d10e2dd05007', '12587319228711547', 19); - T('ed2a498f218583395d57871', '4587441849070983049702111345', 16); - T('16bdq35kl27kdjj71no6sf4k0', '152793950271880209148219854505487346', 29); - T('10431071513a9ck3iaa47hdgecchf9he29', '43381023423292724420039310610763756891127936', 21); - T('5dbf71b1', '7269656621', 20); - T('10011010111100000001000010101000111000100111', '10647241395751', 2); - T('jpkpcjbvt1kvasvw0o3', '42599410634040128543688914739', 33); - T('128308731332831865326', '16111972802247011835', 9); - T('35434021473746', '2030987278310', 8); - T('127cc6cdaf7qa1kc', '3203387745871429565940', 27); - T('10766710063735420744724674434722341532775011206477', '200309946175742618027595387139557376886377791', 8); - T('32112213201233103231130113312210200302012032213313131032', '4657944669466625109696536299665230', 4); - T('1bn51ig3p6da10fi41e', '83689955139542057791275209', 27); - T('14j0emmo11eae3de0agnk4ff', '169171441207698617319338544456015', 25); - T('1102002220022000112001222221211021202000220200', '4169673548357936837733', 3); - T('7', '7', 14); - T('340204213', '6175089', 6); - T('1e', '32', 18); - T('18c7c1610d38c2a024785', '136841031302109468114513', 14); - T('31ueglor3822uu3gf35hm7gje1qj9jt6pe', '50259653982330318278094715762420803895196428266256', 31); - T('236321451394c64', '8928832987449509', 13); - T('5cslpmcp2rs872s2fr8rc2d2squils2w2', '21087793377200031159635076834353655172712568202115', 33); - T('10gf', '7178', 19); - T('7d0i834f9lbf8dl7977c1066d', '3633925888734055009195256007865654', 23); - T('7iswwap4lp8p8j6i3pu2qnd04', '21064442780596247994135825814304247484', 33); - T('1101001000000100000001010101100110000010101111011111001011110100000010011011101011110011000111101001111001101110110011000101001101100111011111111111011001111010000000000', '613876598207563084074184752663166261629198587982848', 2); - T('r38bdsmlfkj5o5fgpn2sr37fh', '3394192241536374888033574057729932943', 29); - T('pen', '24482', 31); - T('1000100010101010011110010010110101110000011100110', '300531517677798', 2); - T('374680', '1894648', 14); - T('8a814d4d17641016e7', '857434943927347654942', 15); - T('995aia8i7i534cd5a', '407923137231020478898464', 26); - T('2', '2', 10); - T('ei0k088eed6b8baak8863593jk5jg2f3bj0ce', '5914160321016074730951144567079146927255110936222', 21); - T('605d40ca01bba94b5807', '36039226245164182578223', 14); - T('2691817922ahd8h70hgfg450i6c', '15587210948018755081634733837607332', 20); - T('22i4', '22664', 22); - T('292529d755fcad39c17', '35683399481751866213677', 17); - T('37a1997195385c7547', '31127908670407785724', 13); - T('3cfh6q7qs3e8jee6tkjlpqq9a5i8itae', '21107782523772991850229603406241369125689392414', 30); - T('7258001566030', '2060303030955', 9); - T('1003141020014213142400041342114334000420', '1868009637795830437567875110', 5); - T('2610ijgk2', '86541700184', 21); - T('1msi', '47658', 30); - T('3411241353543406436103214661', '236290896186624501227090', 7); - T('kqqku6nh', '886989350792', 33); - T('9dg966gcfea13ibihfhbi5ab3dh91189652h', '33298588133944531766622520550241012455771090057', 20); - T('126d4x7', '1644209985', 34); - T('b38kcknna398q', '12799947735241434394', 32); - T('119597325350', '333730723810', 11); - T('44toq1pb0t6sg08i2s76clauklu2ma', '73890216568631498105831170089909975464059440', 31); - T('10100001111011110000000110100110101010010101001001111011110000101000110111000010000000100010111011', '200464110595405607835630307515', 2); - T('qpkff9xbvnrd1n8t', '3872892307770646972701359', 35); - T('15c07e8c84e0c2bi', '19681700319754445162', 19); - T('13575006b4598b303a5410114ab2769b9578a58a237', '2728161815957558299608324450916107759586273483', 12); - T('17l9ag', '18489184', 27); - T('5m05rwmt4y', '443630110370824', 35); - T('3ci69diccggg440b5', '2389318437192755872225', 20); - T('1idml3gk', '80950718952', 34); - T('127928787d5515718a438393d750a759455ca565b34', '1621680550245507449770648650226492957703885128306', 14); - T('6t0gwhcj9gtqhtqv1e8vwinisj5r83mng', '26914594023358001953145365010867100117166476629602', 33); - T('66rfq', '10393190', 36); - T('l666idhbjuae0g3068871ejrtsokejq', '30248459681883725436709460504274517072248715898', 32); - T('150620403643664355463463322516301634404212612006326044340316311', '43130882606292506635424332740606360103280488114152080', 7); - T('41862475647386600025768161687222', '1609441597409751564405007398428', 9); - T('265bb6js6mfj0thebap9qw3poall', '2273949182220992377824887028606074878128297', 36); - T('2e80b229c', '145582396026', 22); - T('448hp32fj2m6dg3fm759hf7mljjpn67n1h6fmo', '94146978337401409225278981432841045277813022960667856', 26); - T('c530a0916607a5c2671239577c4a97', '2499620725800614133816439595702949', 13); - T('97k68ef0g5jaj5d423nm3823', '518314667420525656062603410445363', 24); - T('1252', '320', 6); - T('754125931534429694233291', '754125931534429694233291', 10); - T('3fg8dg94585b3940c4cb6e07f41bfcf61aea', '334073125271035216894226588458437368734495030', 18); - T('1010662343214312332313544054462240410550513026053443303634422611', '178309037555490506292600092100168566672657290807577202', 7); - T('30wc', '129757', 35); - T('4320aaac', '266240883', 13); - T('1539a246a76a609648858', '26736559541986486658071', 13); - T('4', '4', 33); - T('29gefgf8fg2bbc0j2gae2dfdg5aab081g7523edbad', '547963388106591613005337267146277208966777017739948613', 20); - T('92d6a085a2c34a7428ed', '203795832889664860683148', 15); - T('264652754111247167745300734100146216146065', '30046186741840723600384513771105209397', 8); - T('23b62849704471426559815', '1286298360248279428215377', 12); - T('222h1338d29055hgif', '11581651006107396744198', 19); - T('8b7e0', '4473522', 27); - T('1717051362601647', '67007056380839', 8); - T('420547635403', '36601543427', 8); - T('4n11affqj', '1822050938139', 28); - T('101001100001010001110111111101100110001101100111011011101110000011111111011100', '196072603810916493443036', 2); - T('kjj3ich1hi8927', '3235928371344402790', 21); - T('1026cbcceedf14b4084c26ddb8d60', '28586225584974591487797016899842612', 17); - T('5100303210200143452311', '113393272692833971', 6); - T('31c', '3312', 33); - T('b8a04fb11aadbgcd194aebfcaa140fg85aha', '986969674191993486338612160880717878632568844', 18); - T('qx25up2', '41667188532', 34); - T('2042243400202111330011234030111430404114414112200340102313410330022024', '3694289161066978099428391349384630089650597110889', 5); - T('7e4cib6408d', '128053581918877', 21); - T('3dkla1bq60rov4', '400737723756673959989', 35); - T('1112001210', '29937', 3); - T('11000022220202112001012222221012122202100012010210220211221201112011000021', '90389162760212801316792406240633498', 3); - T('104402113303233132403332320314443334301340343223200420040204122102', '3232890541201633751697810007380727413369989027', 5); - T('31347902', '31347902', 10); - T('du', '472', 34); - T('111000100110111111111101111111100010111000011111110101000111011000110010110000100100010110010100101000101000111100010011110101010011101110011011100', '157803884622143105853315584471057717069995228', 2); - T('2la86sdx095fp9olfp3cd', '34638184595229945075220814528557', 36); - T('mbppcgg', '16326236296', 30); - T('ik3heeah89k44040852hcbjdad1bd0dgj26356d', '3328101869145288095897995482276848932558602785015740', 21); - T('248lhk5e9bh6', '2087440191630642', 23); - T('48b381a9cc6bd2259838e067176d166b03de75b48b52', '1710407976429394820093761786315250202911786143975802', 15); - T('11120241101421342112022021114234', '5852950522529808769944', 5); - T('10a86b3888445869a814001084b9b71a27b8854486', '189496275017394315065342874001655116260299430', 12); - T('113650166605747526017701737745742053073656134564465203303', '443294363845688739540957905727674168806539626088131', 8); - T('1403535540244734200354', '13901404808061976812', 8); - T('oi2e0u6dv564iip091kv1svcs', '279954224614775983979370462509946073923', 35); - T('3m81k0kg3dk87dhgk8e605k9c', '1907459221327034327466909784285991', 23); - T('122463220110011161460202464352', '4317537278759647032243456', 7); - T('12a2112333a', '32837849428', 11); - T('343e', '55524', 26); - T('7', '7', 9); - T('5340a04h093ha55', '8454246524189420105', 20); - T('1t6597dtoc6a60r96asbjt2kkdkmdhgdg', '365699081636314950725064929820331423361435603806', 30); - T('70accd12646c3668ad5a94bcb5a46a9594d615dbb4', '691498804549708730481403267581768571471127086226', 14); - T('14231502342125123444', '1058783927560948', 6); - T('h16uh99gks0oke4jm1', '1112042758022780182454147425', 33); - T('180235996184901794802', '180235996184901794802', 10); - T('199eqcuo494p', '33035755412380307', 31); - T('15vcnwm360nhtrsdcg170j95ic9', '16344915028963724309159916980885883220604', 35); - T('1fbbac5129573', '558254565528947', 16); - T('74712131706533505237435313', '287567912644119793384139', 8); - T('2120102201101112121220222000121120121200212022010202121020200001022', '79471474421937214637587196749697', 3); - T('6k56ciqjbp09cecihitc2s9ci401s1o', '1373800350782015189643171446697543684559252254', 30); - T('483911671045098021', '483911671045098021', 10); - T('6ls4rklq68eg57k39771ongp5', '1901116087770507341357362812137376155', 30); - T('62534342550506655221142232301622406', '346261030417237040471354955721', 7); - T('3d3gi2aec6h4iaj274341ij04b8adb5i6424', '12574335526418428815722193942856616209362929644', 20); - T('9dhgbffi73bm8ig6j6gmb465bgfg', '56087289901202292671877462355609399160', 23); - T('jo0mgo65i01d2', '1189795222467969702', 25); - T('2fmgko7cif2id3n4', '7641584157166496651380', 27); - T('11ers038dn31h4q0jwwitaigbls', '6861444888213865174920042415409636982706', 34); - T('38204aa633aa43727a069aba97ab5495546', '18117724934806126020578044715213143494', 12); - T('4383536346071054764058653730600', '188091218363927447542822724322', 9); - T('16195113650897769995630', '16195113650897769995630', 10); - T('b07264b2abe1878a5340ceead0', '2785665573207221854518665183445', 15); - T('2sfd3nd98gbq14g7j1q57csr07p3eenjlcr', '492057936249730728996372928617044050859159675362287', 30); - T('5b5192543b4a303561a88b728', '473197943789271561906525776', 12); - T('1b91780b06a70cf46e5fa0fa8e63407e80030f027a', '40291024919626546988689644749021723762456102109818', 16); - T('1hvatyxzin2h7omp4c2vx1ngdnegv7pzju', '3412107642788556261980502714401988369603559696843578', 36); - T('4bjd23t2r9gpt2dbrjpwtuw', '11115017221742953718461821513987449', 33); - T('8302a02', '14659515', 11); - T('p5rfvi61d3hfog2h9tabq5lbaa8h9lr', '35942528587984060838184369332151588523281524411', 32); - T('4g34hp2kfaa79kk3dgfo0emn528609', '499893475952157966556029154241504867485217', 26); - T('9k8kf4kea69420f4b85h42gf9if75', '104943512895974446884235378529723561312', 21); - T('3gdjkct3qhipsqae8uz', '35635251197434521507651851867', 36); - T('66kk1e4bk592m8dk', '1679888991376791562911', 23); - T('3', '3', 20); - T('10h6pig', '316807208', 26); - T('iq49obnbtrfnr97tl', '22747999482124841946226613', 32); - T('5136777371700436', '182450142019870', 8); - T('23gddce4e', '15588339003', 17); - T('53', '93', 18); - T('366abb213203b8f4cd9e1788f81deegc664cb', '5191961241144177945785597152999737524951590787', 18); - T('5c171421', '2343354801', 17); - T('5', '5', 36); - T('110113511313646244303100', '31375848110336055984', 7); - T('d62116b5b5eba94c98e1', '297260523753065332755511', 15); - T('25a90a2b75d596836e10d26ec831', '763841862190387816235893777156145', 16); - T('25142514424542535314551544304432', '3822616861518711367435556', 6); - T('1', '1', 22); - T('60gcc66e9d5h7i96g84', '629571193297266217720396', 19); - T('557', '2537', 22); - T('57b890a83c6a982606918', '106570504349447291847546', 13); - T('1ko1l0ioi13ml70237k46e', '418030558143625054474397580789', 25); - T('gjq69grls56a81maharg3k1h9ne80k3gb8', '92627603492627444203230902129810925855579328295738', 30); - T('198e45c5b8957ca80347ee693c5', '6210993456975719701341596528735', 15); - T('1c622c6a62cbcb908073c', '37242012395034880960188', 13); - T('8067bcggh07c550c58312f4gf730feajdgg0', '27542586791389756078137842819468361236131150720', 20); - T('1339017669669006742006795785006474', '1339017669669006742006795785006474', 10); - T('110110010011000000100001111100110101001101010111100100111001000111000001011100011001111011010100100000010100101101110000110010', '72173098483072489213930426080106306610', 2); - T('1akbifk7n24n', '11471452525560295', 28); - T('11010011001001100111100101011100111011011110100100', '928648793405348', 2); - T('692a2496995', '419167655681', 12); - T('374e3f2798d3b581c2335f3cc', '4554993763503222341647341469656', 18); - T('5rsbkqfkfcoj29ajdi', '630903110773372341792602744', 34); - T('33300232000244330423420200441024144200431020022134234241320011403', '2017080979900182548533705442612218309222032103', 5); - T('d8e68i33ekfb03hli', '40331655796578387904428', 22); - T('9ckk1o6p70dhgk60a3kjkekfjn05mef3g8oh7h', '214478514683523014526073551129543814424042054284209707', 26); - T('du9ofj3b04aecjm6i8uk222wnj67mumte', '54453279705597662566198782922581780169626751344881', 33); - T('a985nf1qf87n8f938gfp3gr4k81g9gjca1o', '165026316421448486404656724055483635522214133933780', 28); - T('44554275695', '114358237746', 11); - T('6c70a1aa65089aab372c819690a90c6898', '40090597115431771839762779123955361890', 13); - T('86044b053d0daaa6b', '18360481564891608503', 14); - T('b9g0kjlh7ic1gd503k4he', '8071692227413319882891853540', 22); - T('6b6lgm8glf152jl0ki91aldk2lo5n9c', '475619065001030234952948540234894886223466110', 29); - T('87a7a8', '1405170', 11); - T('1a7a31c5863d7402', '272823800502213130', 14); - T('jcjj6h518h1472jaj', '12877770189538637943819', 20); - T('1cfxr1lh5ox', '4919839455772689', 36); - T('310288811367762633415531745156071681653', '5684663159794685190217985404311834111', 9); - T('14037', '9511', 9); - T('21304440200313123441220313012000130041114333011322430023430432130', '1261979446859029545623380849346186459988139665', 5); - T('fbd45cc9e2', '1081599642082', 16); - T('519c09d40a70404490053c29b986', '45172525747251864110145361563666', 14); - T('19', '45', 36); - T('j58dfca6dnhf0ncbn49gkgbm69a2nlb0j9ch0', '936333578326698695534344960444912288238423306547864', 24); - T('1120000152232022252110140241032312245311023234334032342030250', '59734827155605610430522117739886928577205767446', 6); - T('18kakpghglhn6hnp7', '58343831352748592126197', 26); - T('3204102231020302334334000041132202', '399742489157707275724052', 5); - T('76r7khersf2irrlc07pm', '44183444942343119517736482557', 29); - T('10110011010100010000101111100010111', '24067464983', 2); - T('9049021262545393024579091866492398542902', '9049021262545393024579091866492398542902', 10); - T('3', '3', 26); - T('3veoda0voe2luvu4k', '12515452726305126989433740', 34); - T('1s8uc49044sv7fuccu7', '18407131120081731496593356287', 36); - T('5dbb78e8bkl9', '8462954128212225', 24); - T('31k43g71i6l49knimql', '342583482343807445741585613', 28); - T('kik9bjahj6ego855e4p747mcnj46ej11h49763', '468224983002703595759182810826586464545958811319348899', 26); - T('13442134313121140343404', '4281453440168604', 5); - T('7j3l8g4pm64k892n3dpbfpl1', '2709736655099210675851690721591311', 26); - T('24cg6b802a04fcdg5ae11fe7fg6ffdbg4cf0c7', '7666093592391929958225523158661060374109385283', 17); - T('29752369384011377360244601230116502477113293803222359', '29752369384011377360244601230116502477113293803222359', 10); - T('5c7ch4dcfjl3m5ca7c4dd180ac5', '4235317763416835730488450279827445669', 24); - T('2035677377165', '141448576629', 8); - T('1014', '6882', 19); - T('50amqhdu1dahb479ah6hefe0p18abc1', '2759244699893958338366015509269119092121474036', 31); - T('31solno38be6ms7z0l32lezy', '1902149044738223750663383610950532398', 36); - T('51vaai09fb1a015ap7ic8e2dkdid0d13', '599793397183230055183156703483234422199767481181', 33); - T('ef9g06g61ga899g028ahi376hfb5ad', '179724417572923541328982412809644535193', 19); - T('30461305635630120110', '35333469582885698', 7); - T('304320404024431014001134123224020123023411323323310331123', '4423498436624887900904435210623464152038', 5); - T('5tchpra8cb7gljnqmln', '12687862955738067803782907150', 33); - T('1a9c03j1ifa7bccc9gj407lj3ma0d46akbp', '21869065306730387940320360093107271014796230532621', 28); - T('90ag62b53a29861ge4h90', '115163310974925364653762918', 18); - T('621e835f12ad64e909cf7', '7413676543182627283180791', 16); - T('2', '2', 7); - T('7630b7863d3f7j2dgd5bhc200d0f68gb5i', '313413466559810937691188229453692824598698991', 21); - T('73g65db', '460210271', 20); - T('89a53768777804667091962684a82141855084708827488a283', '104534620147629781560246588908903729115824398664090794', 11); - T('4nehl018cm4eha03ch2nhc7qr0o4sk', '12351795250155371862634726792610964318320229', 29); - T('36472233456', '12991747029', 9); - T('32d0113076633053bg7b3709g318g996c6f7', '36792759299975206676907084433244583181437716', 17); - T('13mkp5t2fulgpft1', '66633458682354245995171', 33); - T('ait1ia1bl303ms1spcn2nr2iiboj9ent', '65672776682779904820651918660598404908077846319', 30); - T('3abhdcj86', '90360583766', 20); - T('6225d58f7849kc20437131', '35642008659327399615108918817', 21); - T('53pl04gjp4hag07ahf6gqqml', '22162199821100339000975528379110427', 29); - T('g06', '5190', 18); - T('20p98o15if0p78l6720837', '1055700859046956086847060755701', 26); - T('53i8', '48014', 21); - T('epk6lkjbak073be', '1636219455447096840209', 27); - T('222bbibi7c8gfg30664781e67i953j', '113089149702236219736580991019929354079', 20); - T('216qomeeo9db41m6k03bbb1j9e', '1244900192918777003082880510514807396', 27); - T('11b93e', '849209', 15); - T('7mifim9aek5b', '12095932884795779', 24); - T('b4b46h7bae18d8bg7deb', '7972552227341225059016915', 18); - T('207551b6c0195', '115523483441287', 14); - T('3p', '103', 26); - T('197f9idk9iig0l3bke9d1k62cgc8j5a79h', '284292035870134579813298295972717503315861875', 22); - T('155963d4d8h4f8i1hbgcb', '132504736945942923398014651', 20); - T('304801222557410412641765610074071503', '7660601613972756521838449165642178', 9); - T('a5f39b2250eff541ech35162ea4', '4476738604960162450815500774841664', 18); - T('54a88663121c64617d71b4a122209cd2c0390', '11605880739459970698798281924031905080986435', 15); - T('4ab695565b5', '666873944885', 13); - T('5ca1md', '78319993', 27); - T('3qslq250dvz741jhl8', '1072784063532716370614632652', 36); - T('185230488c4261398a2544cb00c34742bcb23288', '45731671516320241574807720089017159625203497', 13); - T('24141422340244200340140401', '856829699562036976', 5); - T('17de6483675cb29063c', '7044803064789933295164', 16); - T('429850987a9175209439859143545288466071015673385618', '4548955205287866147144947183033535389148611528651380', 11); - T('83gc50deckf7g2i95i3fk2f8jjjb7hlc5dg36', '17356768087450686226472673111107289905971168186576', 22); - T('7344c055395b32a41819c', '137912936874177212298706', 13); - T('1011010001011000101010000000000110111101010000111101010101000011001110001001011101011100001101101110011011110101101010011000100110101111', '61368670450547755504412274420309228620207', 2); - T('1000011111100010111001111100000100000000111001111111100100011100110101001010011010100111110100101001000100101000100010100000001100111001001101001110011111100000000111001010010111', '203364476148734435560803274724374642023080004086166167', 2); - T('ah3g35d548ea4bfh9d1fc292h94e193feg2e75dfb', '1780619835592323113116024582457203219155826657157669', 18); - T('855mqlyozhw069jiod', '2333132714739048924227135053', 36); - T('102022201201110020112212212022121021200011000220200', '903223172393847799242732', 3); - T('9bhy9w1e41l55fw61', '74170005765265656927173017', 36); - T('h592d8637d2dd0k5163gj', '4801712957170939177303758961', 21); - T('5', '5', 22); - T('2', '2', 29); - T('12000150142656341264053255555626', '202870200111145673769893502', 7); - T('257e51f', '107482369', 19); - T('2ecc612', '49071634', 16); - T('15355035253621352061261230366305602135543424420434543365', '54172534486662629705202470905166502672672269648', 7); - T('249h996cke9b0be5nc3l70fnc93h20ibg', '320569955418628440453489001255451094189328792', 24); - T('f3adom1ngq3u4irb01s2j4', '314624319053987691295478037262950', 31); - T('27a12175892a7a0160424168a35996613950b421869823b5', '1397433081866498613503527062681137551712252447761337', 12); - T('340632544630522633415662322031104260443650626022261224', '2214784384390370140259383269354114041805894388', 7); - T('6q6nce5eecdqkdkmjnje4mpchc', '4241070534916309906119738425533045869', 27); - T('113235054406626436112', '96665647902597209', 7); - T('12101301021001012300301111100123103322132000323213300011001223332331322131313', '8959721927373131398259946028619287042425595767', 4); - T('16kr4', '762808', 28); - T('2854737432023865746217633237845436746', '66621795309306392625749774020755759', 9); - T('19cb300183bb', '3169302143434', 13); - T('1012555568138a1b741846165585aa7b35a3b49475a', '2134175130500831128858578786794170081433983030', 12); - T('271106223317652510470133141417013436324344447232', '8063865882119118770028661617297344888458906', 8); - T('1j1', '1317', 28); - T('14bb4a5d83f3d4bf43b66adada6b0e993784', '1805977369681030296729705669300424034301828', 16); - T('1c83c397a04ac034190703b42b8a86c20119ac58', '54795371938228469135901266442543827602116802', 13); - T('49i16f5i7j2d76egccdde1c66ji93i82276731bd', '2471244346578176698373748682028711809826870228344633', 20); - T('131132', '5167', 5); - T('3e72bc538', '139294601405', 21); - T('111342330121004', '7759223254', 5); - T('g35', '4680', 17); - T('jj0h5371ddah0iahf6bh1', '5538389688853463873501657539', 21); - T('22pirudfu9e7mgq5ki34m731h9fngq6', '1151434291285406691472999364496269523410514631', 31); - T('79jcqqap3nbjkdb74jdc80qi1rl', '310580897107477820585107874712335706009', 28); - T('1p', '59', 34); - T('l84m984fde6354hgf936ug56kb8ntuo4q6', '348786713144351173808729528284372110071543438511290', 31); - T('5e0jot7ec7fa', '521409833288888610', 35); - T('20120222120202001200221101201011011000002122021022201010120111010122121222221222021100212021210202', '41942954018106129338036588729324918948010233105', 3); - T('93809gd4ghg1e170a', '1116205695833217173038', 18); - T('446230341604256064105154511213003600435153634235', '24648873732798551638045236958735680691288', 7); - T('1e1f', '15471', 21); - T('12520004233203303235', '902764818264263', 6); - T('13434033002003004402141124302242203344214233214324410224001421242', '970702797270984391835801113220919489871123322', 5); - T('5522220135303151503503131051350101251', '60854636647067381415610435615', 6); - T('r3178ou9caakpsh7bhbe', '587232889506503339619803819571', 31); - T('11344b48925c928590a9b65965790a531ab71ac0181456', '147070368225022849438278483344224755447603064318709', 13); - T('11132233130311012310113133213321303', '404377318206700682867', 4); - T('21243103211203011430314411440423000341224401022424403242114230442442334232', '2453393003559216570036598154088578511990647212855567', 5); - T('77138783429395', '77138783429395', 10); - T('e0hi', '378528', 30); - T('1sfro', '2720469', 35); - T('10a803a13b3aacb313d20ad45d79895db83072', '2688774325186814939420907831934492554488940', 14); - T('28c33418ca402312012c065c', '604690168281921446532949930', 14); - T('184', '349', 15); - T('2571c597721b', '20456544556601', 15); - T('kk6sqj7rr4hme2lhds', '150208264567193002800858826', 29); - T('566bdhgd6gf6f3i325i3eid7i6adf4h1h7382h', '1098869380632307597689024002479488625096341992121', 19); - T('48cvcjovvcps6w5ih0vvgg1ebtfsrm', '463163236652429988640359361211359679555574220', 33); - T('958baz1ki4nyqglpbas5lh1qksb7zikeivp', '750728967818084621222424385256922764057494617052439317', 36); - T('86151740892663982775089', '86151740892663982775089', 10); - T('213b', '4613', 13); - T('r7k5rw7lm1vngtxhj', '86816834093372879138789857', 34); - T('217025023377545890216047915201', '217025023377545890216047915201', 10); - T('28216429043406a128001999103968938669743', '10267451898484492247566507299193901416802', 11); - T('ikn5rh010c', '198281469065244', 28); - T('cdn3t8', '302754578', 30); - T('4a2681940051031157a53278652494885604968a144380017571', '636699130425199233901707564276961890453203238857370317', 11); - T('214001300333', '115259468', 5); - T('1bdec674867daeb454bedc3125b72e1582686e0c', '13235662457450871047945698439432593046607531537', 15); - T('1461101624363430103541030526563133043332334410035661345255', '2513783613053608388287524826007109061198917911061', 7); - T('1fdc0qd1nfs2j', '3466820238745915791', 34); - T('1ec2fd96j50ll', '21357449083341579', 22); - T('1021722', '271314', 8); - T('cj9ea1c3dd12880g3hei6c13fc1gk5e1gj192d', '108044509832522390985019647621567967006917730046839', 21); - T('22022a15a1242a4050a4a5802758aa2', '514622640579936481914636293866778', 12); - T('1d8d052c67dd79a1a2754', '165172435194406497470358', 14); - T('5f', '185', 34); - T('68771d2b5d82g', '3784863040815843', 17); - T('35116201514255324122021325201040', '590116123779691041518146077', 7); - T('7036036165443146', '248356246275686', 8); - T('b5ik3rusjxloun0e7nwk22bd0afic50jnwn', '351480021513874030859064287892370214007546506744437693', 35); - T('4457450hil348', '53898766295660932', 22); - T('hd1oj4rtqlkdf98x4vmxj0h3xx', '6943386874692972087645952788769858758738', 35); - T('3mao2pk4o2', '29204186262374', 27); - T('2n4cnm9w7j2g7s6kw5h5u1tz36knpqdbj', '167360655322446028749706425278701718029623161912047', 36); - T('264026a0ac626cd3b644714478899c', '4233598300815455570056021723238862', 14); - T('1132004131214141022204432310342112034223000012120', '4747410412074476042164830201172785', 5); - T('14c69b7', '6669566', 13); - T('6i8jh5495mljld5imn', '1967338742655672740382887', 24); - T('11011010100100111010010', '7162322', 2); - T('2sacrn05cl5dn81476l6pg3g0jkldgltrtn', '491130187805084132256352213258420044325768153618193', 30); - T('7629eg25216062g0bhccc54f310g475gf2d851h02', '1193072249536776238087255066419340494300241692433118', 18); - T('5110242554012351311222', '113996815429002782', 6); - T('3pih350290ji1ba39npfee1b67nadop', '11222243968353715216614952364432075435971389', 26); - T('g351f93h270h7b7hki', '4691673247887821898764850', 24); - T('6470565', '1732981', 8); - T('5335763184182038172006046108484131152678603', '64393019391265736471397626369582559266481', 9); - T('10000100100110110001000101100111011100111010011011001101110010111100101111001001100001', '40077624010777577544413793', 2); - T('d37d676ed324d97e91', '28833401401805729291779', 18); - T('2111db1644e3db18d1ef1e0d61gdgaee5c6', '1411526454880979898913723256921011458189878', 17); - T('35bacc513809d', '193736987400347', 14); - T('14l0ii8ci49k14i991el2j18997ai', '47432159257624618593218965255177560530', 22); - T('4kfshu6linig20uv100p44ds0emo3npg0a0u', '222236758510407484956912068045177884120458517136025630', 32); - T('3h66nirrqm0i7uf35145j8', '74031708866092624643936753260340', 31); - T('1kcnj2glh16sc9cl5b5db31o61oirjc', '126951344107855183929498621767034725464772792', 29); - T('1', '1', 27); - T('40h0kg91a5ldc', '88364370457256098', 23); - T('2kgb8kg39ajji17bhagd9mc1f578mbk7o', '5312546317931594372611431312678286944856393334', 26); - T('106454014536a137614909484877aa42a8318', '32549768237359567248289108586482266373', 11); - T('102020022121120220010200010122201201000102120101212112102021202121021101', '9373515480802386787336379528216869', 3); - T('113jamevd0ea', '52240096897795498', 33); - T('4dbb076838d50e5b00b29235081314e9ec', '3183265672012968496848943540783648620747', 15); - T('2236k2ihi51', '35074324315654', 21); - T('2044', '460', 6); - T('8i787d5ge3dopd9p48f1', '13622774573376163046429858386', 27); - T('111', '7', 2); - T('1012645216266112554320010312', '67619419391382234277050', 7); - T('3103801', '1656208', 9); - T('25a3g8b0ggja0bc0g', '1491257047471328092816', 20); - T('100100011011111000010110101011000000011101100010001110110111', '656366019324289975', 2); - T('2hy6l5cg1dt4ggq62', '19885494590425537842223226', 36); - T('gm0nqp0hpr4200fnkk9n', '102288227674562835100668366757', 29); - T('t9q0hhsxm67aglisrrvnl', '124812001386691713133980119986343', 34); - T('1757193', '1757193', 10); - T('8b63e2dca39c336b18', '2571294983995377543960', 16); - T('pjai3cvvbrto2t7s7vv5', '1014281637785517689396544143333', 32); - T('2l', '91', 35); - T('27a', '565', 15); - T('164qesjrk8v565v75ffd6wnf909to5h767k', '13879928000835241925467631555592155788584903540287490', 34); - T('9b8d19742d4', '2843752747826', 14); - T('b30f159f05chc4h', '4186384634788528049', 18); - T('2dbq', '102086', 35); - T('12f67hg2a8i64jbfhlhfk5', '17420544768736569554233288737', 22); - T('1100', '12', 2); - T('hari895bivb6v7ur8uhti8b5mnaq0j55to', '2237261580805951883828359760940720036427289454035019', 33); - T('1731mf3', '604246471', 28); - T('377e2roj', '137186257447', 33); - T('161d6be75eb7926a271576e8e6a07e67513bea4c6', '155734848943868815828395124475901609082268815461', 15); - T('200212032120020222230330311120311003232310222230102113323103000322230302220301231111032', '12196082923051903043941661056550160063059733091112270', 4); - T('31bl50i5hfnj2g92205knjn8m26aoni1i4n969', '16193982856683928575461552404913450912093921320287034', 25); - T('66h', '3053', 22); - T('3uqesuhcjwdakwf4g', '7780167401827423762290433', 33); - T('2eop91d5nt5193i92xfin7oiam1f9w3uvc4', '28605886795171609313172129799075303081247927522208376', 34); - T('129828a42a1a983', '479396571777467', 11); - T('qo5fjm47e83j', '149519533662546148', 27); - T('120930d30a1c6cca9c9c85d68a9d', '10109362297846202081439662847219', 14); - T('433434112303022113322421334420042341432322243420342410412010213', '103176224496584812657695985895438714073938183', 5); - T('2aa745d38106c55880246', '231591415358075620700166', 14); - T('10a23548709447811b5468951600', '147092018792966563018352675616', 12); - T('1muuqpq6h', '2989050560877', 34); - T('105h58mn7cho3e6ao1e8n8lnj3cj9k3539f', '341896959260587485518394721610662378353223908365', 25); - T('121a5813986070394bb7144864aa7329b9301ba', '120406122800356790683822388154769546350622', 12); - T('11100010020210011200001011221110201100212001011121020120012011211000002002101100102120012222', '37860101293024691849726322460894592104690511', 3); - T('2uaofdemihchuxnsi22cl3i60goox', '22006538653225073786749125118104638524377073', 34); - T('d329q', '8058230', 28); - T('26686dhpl7e1p9lb1qrlpn3fbmj8e4f96q', '1267711441005450956992875908126805624422712405650', 28); - T('2pjkq', '3291644', 33); - T('5ne50bnhcg8jh63h4b8gak89', '332489330535230011694478313343433', 24); - T('42d', '4173', 32); - T('7ncf8namfjbg1kk97p70j8j524ioddmg5fo6m', '6868243522317166196967869805047542008508489290755130', 26); - T('3c1440de515e09b31f73cdd0da6e2', '19496787444412678571409607909811938', 16); - T('4ml9dlae0ci8kbladibmmd62mi7bk79mack8', '2286569324205503763236162887597617701852950700129', 23); - T('i5g1c1039jc3bfbj3jg6250g15g51h8e398g', '62844649752973800818784289497153800322395867776', 20); - T('7427745', '3975116', 9); - T('54153260107451562218510277555707018420', '54153260107451562218510277555707018420', 10); - T('5aee981853bc993326395be', '428950049262896681474864804', 15); - T('add56j4b9hcai87c357j8ga5i', '576203698240315171997261396983665', 21); - T('25ea2g068b67dh1f1h9bch38f0g8h', '326308845239382288473188087950535697', 18); - T('1a12f68igh7e1ha195db27g5i9247g7a59', '2417780901753180332851584091382890457838743', 19); - T('dqgoc94ej889u5pcvhcnvmhlt5ohscn', '19737221570425505289342027022964526059214139799', 32); - T('2246d7744eb3e897', '942853654698726067', 15); - T('2', '2', 28); - T('2dclih6geh7hib9f1i8mjib5lf8i0ibicmh01ij', '14418043617625234175059607245813179917796405933128627', 23); - T('4w5q', '210901', 35); - T('112112113201334001133324303214103244132203441240131112102002404130442240443', '6830926531027276927950105054067971781356898029258873', 5); - T('156d6c3431108a479a72d969727', '877359658879832942505464566647', 14); - T('206143367232576283626041763949358536', '206143367232576283626041763949358536', 10); - T('3ntm', '145508', 34); - T('61216176216205012773031', '454507717401133184537', 8); - T('de94dkh6425m06qhqe2attru6bceaq', '599730557272586153217330707522770691809491290', 32); - T('8k77renk7g72pf3j5o45qorep14aj6b', '226691682861596196794798492778633822748918883', 28); - T('2jhf51dde7d0i38cfc9bh0c64c060i3', '3215219793828568936375294331195174448363', 20); - T('22h8460gcde', '13203582611224', 19); - T('91464b7740a664b76346b166b0b6', '1252108265251775177482532735178', 12); - T('lak3bifhtb6', '12610316079035436', 30); - T('1470998178', '7132969964', 12); - T('16hi0mjk1lpe1j0hd37c', '963405816410883410946327686', 26); - T('913b33b1474ba887bb9810409b9', '104295075607044617523054107037', 12); - T('161100013125365301651212042603023364211204566300621264341445', '136474139311752213668130631029378317696922594692639', 7); - T('7tc1le9kf', '6778801564928', 31); - T('8i837bdb2cc5951', '7167109876485719255', 19); - T('168a3egd44528f5861bfa0d474', '7979073806747005263453716304209', 17); - T('23bd94833', '3357993565', 14); - T('jfhcvjdllusom', '32474670588429458224', 33); - T('t5qb0g', '709461916', 30); - T('d39570c80caa28598ea432085259', '4291428326751199011126676862554713', 16); - T('807a81976166987b1', '17509808255778732167', 14); - T('48631823380828816', '9204637946118855', 9); - T('1223466603257252468314540667812301184', '28199983454052965359351624334678314', 9); - T('380h5kb7e3hurkfa4', '2370411015159854211757261', 31); - T('1440141506864757812308430315687726770760773493695949582', '1440141506864757812308430315687726770760773493695949582', 10); - T('1rls0b2jrpx9', '127252119185280215', 34); - T('7856f7b676ee2', '4363430111213756', 17); - T('2sq3johrljsw10qzoq8zdjf7u8', '2261502733792759669833591306474349874288', 36); - T('3002513066606060620347136440362562046653642', '255651532540391785253392875614499461026', 8); - T('3k9bk96jfj', '7002080842657', 23); - T('2ra', '3405', 35); - T('8oe8d7', '127827592', 27); - T('155504503336160624601362', '50117236696639403363', 7); - T('1201221010100002', '24940793', 3); - T('4313403103333003042400241154454214031542', '10125479020346114991096697847126', 6); - T('1ec3298g37f1a5di954cd42527cdh10246', '2798816910510266638276958183897932081056861', 19); - T('1en6ggipmk2fpmgndjp39q6md2dg', '1810736445109522104704252771239936966748', 28); - T('8', '8', 23); - T('37634546500bb245b039a5b1735089983763', '214232450284525132996750864907535178875', 12); - T('100001010110000111111010000011000100111100000100011111011011010010110110010010100101001100001101', '41279952929416973510169481997', 2); - T('122423221304033404101141043320442014321432131110421342', '16834509131210666326342619688068842097', 5); - T('1020131', '4637', 4); - T('klx3aeefvxnyodkn34o2d', '275488914248612801544646762918357', 36); - T('112211002222011102200100100', '4185291549411', 3); - T('4to0ahwqd18wpl114oxxmbkoq7', '1937666241171363939533759101938045719692', 35); - T('1135', '418', 7); - T('249', '249', 10); - T('121312302423213040021142110333333331102401', '66685945228939713462829550351', 5); - T('1625356215252', '26494122069', 7); - T('anwdkfr2m3dg48rdwbw0modm', '904249144970472511877809144186597204', 33); - T('113ki80ilh', '1271990411687', 22); - T('1530304232122121415550005004031544233425532424030304403', '2010294933256617576397318672085330157825939', 6); - T('104072459a38346d3ee7dad37496a609076921c', '500243084593242089330407721774970862086353352', 15); - T('18gbeee10bd80613e1b25ba0989dda3af21429', '5138521665544916194033529092059378256571453963', 17); - T('10101010101111010010000111011111110100001010110000111101100', '384469593819013612', 2); - T('b8a63049983a0654ba6778a469072297596926489102', '298161575681388874506973967749374933332233147730', 12); - T('1d54a95161a44ae4d216da350d20954f13992a85', '167448744619550277927636746527062265701749828229', 16); - T('1b8i6bff3538', '322005234426068', 20); - T('7gf7d819f8cc8f51bd98b226a8d4067ccc0', '5470961222003556575284943473483752741364570', 17); - T('2003040245545114430003204351', '2061732724911322435435', 6); - T('206740', '123075', 9); - T('b71g35500e8185fcfcf9gb3ded4339c567320dd', '652632768758471633033004484042049552510007932968', 17); - T('8d4dae81737a49469edbf0ag44119c95fef5c2fd715', '41919359081724970340005698065286668228554601347266486', 17); - T('5264349b37283231740', '138729190626813625824', 12); - T('456', '302', 8); - T('a1dafd83a744eaf49gfbf592bg05ffcg9b166', '1998673178276656072855040019793637333390949546', 17); - T('17004753588212207815125616470722317780142872376105688', '74245187234283454851664056978383868771198848737133', 9); - T('2211211011212001222020111010111010120012011220212111112010010110110122010102120001201001', '919746263988110720330734195365089255014915', 3); - T('2ai04fj3i27690f5c81j35b7c2hcgcf4d5bf', '8744656450668874412129805378468279112496746235', 20); - T('101100000001000100101100001000111011100010100111001101110011001101100111001001001011010010110010111010011111110100110100110101100001001101110100011100000100011', '502582666714640400473511879468920658557790730275', 2); - T('458b14g5ff2ki11ak43o64bl0mie6d', '146185391432846819540888318943706307712038', 25); - T('8453nb9ien1n12689c3a7i42aieg2g', '86825542084489172944843999109269881698368', 24); - T('101221012', '72262', 4); - T('17065041017173527170644622577111123272557633404173157515', '88295987850015910722625103099562923405439709011789', 8); - T('1010134331130134001334443233314112431111111043141002214131242344311202', '1766678229765066235739620315143368730448384369552', 5); - T('l8g1mja9aeehcme5m46109', '843832827267550590415898815954', 23); - T('16d687ff52f', '13653016922055', 20); - T('2jad9ic7hh8gj96ci73eh9g0bjbd2jb6524', '511390944414014194229800955887738666430610044', 20); - T('6614048801073688628406604411830070546726', '109782278237026239880293845889313820712', 9); - T('1jcej88b218fbd7412', '58088627120868089575496', 21); - T('17nkctjba7jdw43auam4', '450272045225207253826494727996', 36); - T('2000325253334254251300', '43932904281041364', 6); - T('acaqvr4', '13397132632', 33); - T('32200130031020032023121203230330001013022030331131222333123012201210033201313132212000010', '347370908365053402115400890112019448640793233522843652', 4); - T('2t7e5vi3n0b2q59gwn0mf1h25j5jgx17', '855292840092541663219061040782700655334518789309', 34); - T('223c6bgi7i80b024g8b3f7152d53a7jh882cd', '144932207807299978358573285607434907402231745053', 20); - T('21bk2h3iq62gon0deskjk6rb', '8842310846155518916223348697373797', 29); - T('43812c330990036289588b377110b0001c3a', '4162225291349057804333124544154752098422', 13); - T('kd', '673', 33); - T('153111155020052013155231500442433215421053021', '33301389716284423546912957799031589', 6); - T('1fk00c2842k0', '1610232270940190', 23); - T('15cd3', '734191', 28); - T('1210002122002102222011201021112122110012122122012121012110021110001020210220022010111020', '575848262380687269510769585003227729853005', 3); - T('23aa3133417', '61292676947', 11); - T('q3kt6q79an40st27dc3w5r', '3782702939054610713945575733531133', 34); - T('89gpanae', '112571410966', 28); - T('3odl2odo173g9oioe961n5m18a1fpgegif76d0', '89103898368780329843843213967906565582206158676623346', 26); - T('57l5tc9s9vp02t2l19j3j77fw2iw5hq0', '620246157108817541536543733311579693819651519455', 33); - T('1fl41tuf27cii', '4885706799284972973', 35); - T('3h62g4eh760f73c8h', '481320829720357766009', 18); - T('1000101011', '555', 2); - T('q57bwbthwkspaj2ucs6jlwcvq07k4', '86297743847844103494926974103414975911710346', 33); - T('21ce07f1b511gg0f0f57599c95713b', '1013676859489927884538566004602431047', 17); - T('3oskac9r2i9tf65', '2879424166264572649417', 31); - T('121101240224333112303121202113413123400342034344023', '128652690811737711862977258490543638', 5); - T('1422424401304142', '58085572422', 5); - T('6085281a33b1389aa68', '161299549199109190256', 12); - T('c', '12', 27); - T('54523528783185940853887445327908196165978268324', '54523528783185940853887445327908196165978268324', 10); - T('111110100201102211220100110220011100210121101110202212020100011201021202110', '303182193417511432321441108708547007', 3); - T('1536gd20h0fhhg5d55436c0ha63e29c60ahg', '726145947704576858453585758674557404546198173', 19); - T('22022010221000100202211222102202021002220222001201001111111011202212011122101022220212', '99392017799768645924361603871458701456597', 3); - T('53adce4b028fgcd7hf548e', '1193207787087913909236098534', 18); - T('a4', '144', 14); - T('ho2er', '14420247', 30); - T('e3ffcc64277a78a8256d7e1d7c05eaa9bf', '77584111689906087598180624752236124875199', 16); - T('1g7n7lo5io37ce9mp2b', '328524151751122058961202483', 29); - T('2030102214012423403324030304243103001403324042420010414232', '14722655319890169268088222422460420013692', 5); - T('613563354021145663036162612061303', '6871051676078235862437063776', 7); - T('gjhlfm5lknn95bkn84b1con012o8jd6g7', '31867442134261188923108513411199647167070822199', 26); - T('llhf1m42ch6mg6kc6e45ppc9', '18191151044159190019737039426392154', 27); - T('5e8dipbabapt0nodg85kmnoms0o2', '41758231678994811795607253224155508776722', 30); - T('621anm95ho73m0', '15082986714813289376', 26); - T('1e702hldk8l734b5f12e8dle', '33866826604275005079924066683978', 23); - T('22f4736', '36652854', 16); - T('15448784483296', '15448784483296', 10); - T('1jnoq4673ll4', '20540068473952319', 29); - T('4421014224404214202301000', '291383814569181375', 5); - T('1332402323133230', '53179114815', 5); - T('22455201354420531414254341553042333144110314033330011503431000114', '156559057575824331523615397895706894115565285344494', 6); - T('b07b1426d', '16292352313', 14); - T('16caa4d1d594aab6b98ab0b1b14264a9', '506098807791173960954389695213967701', 14); - T('220220321220320011330201211001230333102010121303332222311323021110121213033021', '58002021669943215882437485089516366950604108745', 4); - T('460175', '460175', 10); - T('rm92t4nmi39j', '704301162993180277', 31); - T('2c35e4d05c0', '3038123984320', 16); - T('3ahdutj9mbmtr086foui53gu0hx', '21785718654104569515056333343275862936563', 34); - T('14087634143410782327333780148640301877', '295332466513866374270920611186627388', 9); - T('43b171h0e87eg945ic7563b5cg64fd', '50806559075581748348880564861624437804', 19); - T('16ckpwbk9b3i275h5d8338a058ck1alg', '141489416893679296818740151228347362930888733302', 33); - T('k78iostc2pua', '1950965634957774935', 35); - T('4aa54j21df8hkcgkgp20mh9d931b', '5173226992447654665422544156091087390231', 28); - T('4eb942t', '8105266499', 35); - T('101011100101101001010111111110010111011010010100010100110101000001001101111111111111010111000110111010001010101100101101111001110111001101000010101110001010111011010', '31852131995136650015824448712052459356282756208090', 2); - T('171860g48cahf92064', '7521304142338550340336', 19); - T('1024', '361', 7); - T('e', '14', 32); - T('f', '15', 31); - T('cji2g2ynilowjpau9sxl2525vz9v7iy', '612959941037504203320865072390685049444312906970', 36); - T('6j92bc252e1pa6n5foeo4dphrr7', '282842955335866464220455210371442191467', 28); - T('754721358689534984612281', '754721358689534984612281', 10); - T('106nh39bc8a1dbd9efibf', '4068759645359915205371605911', 24); - T('8dfg4ha5g8e79i4k7e0', '5460155756354332817482965', 21); - T('4312506613443045610152261106065301405562361602421616', '56109700415530612765613834518456450896421741', 7); - T('42230004031210204341024234214114343400044000', '5120515292918450620552927346750', 5); - T('11010011110000101001111110011100100101011000110001000000110001110011011010110001010101010110100001010110111011010001100100001110001101111011', '1152932454441681553686105050801467624055675', 2); - T('gc35a15gh0e6hbfa344ci6h60d1756d3i', '7133162389260283421788216763773968727253278', 20); - T('ped56s09o4os2e', '261629936007586831748', 29); - T('b00', '5819', 23); - T('204a8kjg27l7kgelna', '1168264197453743365857460', 25); - T('1284b58363a24248816a', '391391876041895186146', 12); - T('1a6glmf9i6ld6', '31721821241462604', 23); - T('1100000001001001000111010001111010010111001011100111101110000101111110001011111', '454021537654527488097375', 2); - T('ktuv02o8h0dh8memwvf', '129541724909808086439236801675', 35); - T('3400040104213424322133232220302111041324', '6914515487235712203520018339', 5); - T('6e5jf09', '429758009', 20); - T('dppb2e9nnjn96jfbd293bc7d', '4903303064412360643152733423833467', 26); - T('2bdhki1c4cdjg8d92hh48e5930945b95b3g9', '48428996090391084590565126593313973435696979409', 21); - T('5nsrllolb0ncn3', '59794172529212348462', 29); - T('4j47', '58818', 23); - T('1101001101000111001011011000010111000111110010011011101101011101011101010011001100100111000010011100111001101111100010011001011111111100001110010001001', '2355828849861155012884780223410671381544574089', 2); - T('5h18fkuqeobprbtgdphncwcnb9nqi14p74e', '23502944357360874074985050551823304242402482605470882', 33); - T('430e68bd9ad4952', '301994663360678226', 16); - T('83mybdyfk', '18250265709570', 35); - T('345632h7po7bfnl419273c3h', '1107369755793636209889847907168631', 26); - T('155hmdm10qao8rfp5f29fnn06691nm24rfclp5', '415761194832301392698634884108004928012396592720849681', 28); - T('75376b8a021b20131b48b637182292202a', '3052560053832658763100020747136367522', 12); - T('252bf74645b4k1eb2f1cidb6k8gac4jg', '218675971817632327166089471412035111563445', 21); - T('1041630262513110000365330', '208292689407845958902', 7); - T('8ipcnej3bm5e1lj03k3d76d9kkp273', '944588256140958917841550791402929957368041', 26); - T('21122220112200101011011220112111022022210110201011001002112100120100211222120001220', '3398109006511352612217149313338598854505', 3); - T('11221211111111102230023113113121303102202013003202300031132232223', '480626689266491150511095172309208918955', 4); - T('3baaa8682ijg9hg6jiiegkk2e77', '84652263531904780964938488704665624', 21); - T('7027910070685774862975771344292902196641813764924732', '7027910070685774862975771344292902196641813764924732', 10); - T('14nmi4940e3cdr', '7628443576261703047', 28); - T('29714113449495030180067704', '29714113449495030180067704', 10); - T('16027026131232476667231251', '66325667775824613159593', 8); - T('0', '0', 22); - T('166452ac011c2116a421ac5bc3c023b6bc4990', '246444225807161486770221362501829463826523', 13); - T('10312410044054404422165523342606411123616622336034061556043', '11043975746401930269143716067439560851383524557870', 7); - T('1iea4l97c0i553k3b64e9k9jhb9bkj7k5566', '178448019454450986199237722696936967229476033686', 22); - T('1478139520', '1478139520', 10); - T('1d854cf1f48c4529d864b686f2d', '37421939842938093643010520149805', 16); - T('1a7129b0cb220c0c496b03233', '983122173959444998093229449', 13); - T('61637976999142621145200538', '665607201960195049612272036', 11); - T('b437bb812dc0198d5a011a2aa866151bc83add0d20b', '15509757582610193893018549990835987906527184363915', 14); - T('m23o33o2ml072aamjic75jgg68aa016544an4o', '116924132032633647730209472607114957774639320109155124', 25); - T('62c4hnh0i1hgaa6ki4cccb3g0f9pr01t', '103732044580983310247443658362576131853311657763', 31); - T('2mkv65', '105113750', 33); - T('222678eca86eddc939b60848b7b8316828608e2', '1053714680554554231365359188076002075988224512', 15); - T('2g7db1dd4f496b8503cccdc3089bd', '84151059017237335236726835977283846', 17); - T('11356664335110632222416260423353223124562262661224650210151051611', '1490024421959891167700411423106906579208279293688323560', 7); - T('8lfgf', '11533971', 34); - T('8gf0h', '2051693', 22); - T('21h9mlbfh1cfaml7ahfnn513925k46j26', '304178596755743063799400356490104291373592310', 24); - T('222020120014433', '15156798118', 5); - T('a737gcfagg0ee030af20537e209h57d13f', '2760612480391619308046997847062410963259009', 18); - T('bf475f0e5ed9ggg433b1a7', '822034344011337163185436487', 17); - T('11010122002222211221222010200112111201222220111011221010122022000121000111022210200012', '49501356081468652681886134573393140563711', 3); - T('0', '0', 22); - T('1j221dh95aj9ed83b5e4kaf22ej9', '956853653611900643236190963151594750', 21); - T('48d1', '40846', 21); - T('266359b8b969632b6ac86695403a8be8c3a2c2', '79536364099052136307674191123580292528001882', 15); - T('7bc4edj25jg8fb3dhmb63in40f', '662536092600660719641563026403877515', 25); - T('2123b9378a3e', '17962722130559', 15); - T('1vb1rg21fp9tf', '6402729056965380805', 35); - T('90507i0f54gk4b2g0gc108520j8m3m8k9', '338836712441591160747477280351050302149052875', 23); - T('23h48496g', '447052385744', 26); - T('3322002', '16002', 4); - T('2ej6jk0i', '84396331026', 32); - T('35gkbg9', '281020980', 21); - T('477ba0g4qq4himbr2delgbibcpjnr', '141181564767286604205256660712659301710991', 28); - T('16625630637244103026266171376764352575040', '2457838121719672737744590760418408992', 8); - T('12772', '8651', 9); - T('3334e2ff48e42igd0a18e49fee8i7g1cdf9d2f', '652404784229042811789503804111388997324151029358', 19); - T('390312a922213a8a64714a01061249a60a7a57903894', '2301485456077975760943477454917012552590331798', 11); - T('4kfc692l3', '534994898043', 24); - T('f6ei0o93q62gtjc3o9eefdad31c6aa3p', '259600317350324790376664305311377927792105345844', 31); - T('77jeli', '47252368', 23); - T('1818a46', '3086518', 11); - T('jlul2c5fu75ctck2', '462484928590385125215962', 31); - T('2kdbs53vman', '2970189100472663', 32); - T('18ba40257c006787249025dc132901035373', '21233179223979726392280273913614195304377', 14); - T('12tq8', '890888', 30); - T('mcgnpml3i3', '171328946260377', 27); - T('5su0gr41uohmu73i9c', '133822801190393847297321403', 31); - T('10042553121242502132252422', '29022304271575587422', 6); - T('68e3f619263', '13143928745961', 17); - T('cdteiu0u3iffuohsbsiqupa1uscjpcm7p', '18173795688393997715594261305551967041493744900345', 32); - T('10ee5sidfeljo8clrcp6nk4d0j0mkam32k48j', '45055395262449121673024204762282471724687471901724826', 29); - T('1561736223610', '118371198856', 8); - T('4hion', '7535831', 36); - T('3bdh6671139d1288bdb9d8e06b7bc9bg', '2993926724680335312809084195839710840298', 18); - T('49b4a2104b545b2439baa986099927bbb251419703', '851737504589717022185417748267818774777893299', 12); - T('3f2ac50eehakjh4a05cdjlh5b67m9fa', '259979250004821542868763765100327385014666', 23); - T('32021113132120213020101103112220220223032312122', '17512340678477455793664617882', 4); - T('34iihadc', '2916834773', 19); - T('tgcaenh22', '41483651434205', 33); - T('h8', '484', 28); - T('1345013', '179399', 7); - T('1hfi5', '302365', 20); - T('1837046a2692d423b', '3461408270213809773', 14); - T('2423b8895916', '19692665799546', 15); - T('37l2grtlcaek6h1i3407', '37852085679981001127651964607', 30); - T('5306200451262252', '25859506488363', 7); - T('cijg0', '2071920', 20); - T('3223131302032121211300021332322023033313232022211002002202101001320002202320221112211303', '88098060436515295647388763871409380266783398231894387', 4); - T('7mgg6lii29f52l7f82d22kl25no6m4elbhf', '2678874370559434952680139408552413555034712835440', 25); - T('blrmrcir7mk12fbckpetiwg', '29790101256737754545389640825091289', 33); - T('73m028wm4wdf0', '33643976305588152300', 36); - T('46h49d5e', '5559117314', 20); - T('2h94b5961k6k33f4j62b3d2', '347276697125022380759656573571', 21); - T('iir6o954dn6d', '472825548883025356', 31); - T('15056662412721204036161014', '61822867030969079620108', 8); - T('e8g6s2ier6', '501934442756966', 32); - T('hmrire23hk12dot2906e1ttgf6hkj3npdb', '98751340425225592010077526066776177092708434773901', 30); - T('18gflnnl7gcreqms0u3', '4606469246867644935544977535', 34); - T('14232313010113323034040302131444113021324402231301144403120243324', '1034471412400084913926462730158583111529852964', 5); - T('339188b1b51529b83204', '1058597104025846215012', 12); - T('5b6igfike9', '4399870445952', 21); - T('68476024a7', '15953876374', 11); - T('1llad2', '18303452', 25); - T('10111111022112002220002220200220', '720566895785271', 3); - T('82082726527757034455488080404806838654330250467537202641', '250570007137020818998373455622683381347427919884630129', 9); - T('lj1lc7m', '4165081534', 24); - T('4dg8p9ia1160g5ppg9t', '1724578545171269121406439699', 30); - T('kimpiadg8qpdf3amf65h61n52h52', '9178107846544020627692598732858329684582', 27); - T('12443301242243', '19142651475', 6); - T('506s2b6', '2979045190', 29); - T('21211101111122222000011002210222210011101210020200102110210210111210222202002210', '128580978328817621464532250583984291620', 3); - T('349e7g5d20b4e0a765721dacbbd737cgfgfee', '646586583890294574021104159470580456873235673', 17); - T('79c', '2710', 19); - T('1231300233324230142304044004233200', '178445501100086472727300', 5); - T('5db3324efd09a682cd', '1728459668785308533453', 16); - T('62bbe37605981730a0651b', '30853873199744823817849526', 15); - T('2db62d70d086egffd30a5e464hjklfl750', '521541774356940252445618700157719013899814514', 22); - T('m96', '22822', 32); - T('187708h7k8', '1110072620903', 21); - T('17ce9ldjd8934gc2b9a3chc1d744i703jkd935', '62826943015042400290867266302428296777642741341475', 22); - T('11443312400322012223000', '3332757738398500', 5); - T('1hqjh7ttioeg3', '848328945650941083', 30); - T('2be94375a', '66205466910', 20); - T('221330320311200333302212213320111201', '3095465187976224408929', 4); - T('1059486961', '1059486961', 10); - T('1f74g8g613iggbic54d5c1666b3354853ci55', '19620313041727143313210925539501308523593302666', 19); - T('2b80691b78400b3b875986849c456785a6', '16656663317340963020300085481646403927', 13); - T('105503321454253531533345552515052013033050251424524110022331215545011', '95428095959296366124948006431032808833093168473760031', 6); - T('63c22g38f64bd23576d563c98a', '35884274494603924587117723372126', 17); - T('100000443142103030421444', '11924694146732749', 5); - T('ggb57935h39jrjohipp0rmqdi', '894389162868447514060089400627116702', 28); - T('2q2dn6b09n80d9k2g93ap6npnea', '48717964930141503475483909108219387417', 27); - T('43614541525400501036656560325626334530352123112304543351', '137711359489426689304557831808873617418940236797', 7); - T('13323bh1bebi114agffj24c1h711bhdcif0e60dd3', '89008124624321806307999787004805853614563072139070876', 21); - T('1', '1', 4); - T('7fb2ajiw2hgrnoeb0vhsa', '99256366762497264660825409804234', 36); - T('149a672ab00124427a47b2636aba00a80b724a159b66', '35605955455380818029558322811688734791059784766', 12); - T('3ad', '2645', 28); - T('2222', '312', 5); - T('102124304003114232', '833650441817', 5); - T('7w092wmu58es1prcdq0498nb6q', '1537695760778926711856163192898098505322', 34); - T('27f', '2025', 30); - T('2fib6i3', '308401327', 22); - T('5241360402442352621410122040100421346264560451615162662345006', '2729029317009007107739107745937257680991457741019081', 7); - T('2c1a7b4270fgc467ed689a6g', '54141458195409785751855946358', 17); - T('1010101011001011000110110010001011101011111101100', '375578620712940', 2); - T('5', '5', 22); - T('790ul96r', '309988654893', 33); - T('1022653165254525421460266331000356', '8113458137413116173799745960', 7); - T('3114306040302713076119191937545', '3114306040302713076119191937545', 10); - T('1633654452405530', '9162556072418', 7); - T('gabapnjpf1tf80bs2b7qd38981gr', '710991831783491714221384954071153594598939', 32); - T('2', '2', 25); - T('18c5', '23301', 26); - T('1213330331231123', '1744034651', 4); - T('1b60d2a23a53bc5a', '1972808230993378394', 16); - T('4pavtk4kwc2g0r3sz', '37428329950762094839639043', 36); - T('g1bbecabg532781dd572bcc45f85a1a835f17a', '54127394101584857904914717532946479324272494182', 17); - T('101021210012022200121', '3985912249', 3); - T('13iqmcb60d3l6qn9af41o3jldo5cqoqelb6kf', '14166929345174532589732691260929644735007809841979615', 28); - T('2518135184834132752870818455702810', '79701961075331499851002499212929', 9); - T('210110010012000122202102122011011122201012201120000202211201012021100021112200020120121020112', '187204475327792704723082910911246163138644555', 3); - T('ha1gnkhng', '3630888091418', 26); - T('12g655b423e00675ag9g7b6b28hhfbf4b22e3h1bfch', '61163427224627665999001017285634740702868701629011309', 18); - T('3b', '50', 13); - T('18', '22', 14); - T('ab15c03638359ad93da63a0ac', '34690700872343342065779519544', 14); - T('1g085f52a1g721f56949c1679ag376ec102e40', '6532133482571135978509596041353302889104298965', 17); - T('1t6bar8271g65th5hr89nk3mqrlq6i4tff', '10972219189140165833792184350100087874831084514565', 30); - T('64y', '7954', 36); - T('101110201221010200', '150258663', 3); - T('c', '12', 13); - T('iaec11ceic9320cbb8h8', '245219574798540725794780433', 21); - T('c4gf859id03c5g676a13e5dbhe', '1140847745113516444764873661865817', 19); - T('1beik1nyofl440ag7gkcjl6hc', '15143452013784185315179545005102573332', 35); - T('76689e9e8754', '64261061415529', 15); - T('236oh8q7m88m1vmbwbwtl', '4919241811255159457064943728087', 33); - T('212303367410485756685340683385777821', '212303367410485756685340683385777821', 10); - T('ia8d2l548mr69jp', '3344051649396076528445', 28); - T('5b46jc6n0sxni8xvpercfiqt', '892299334153828813360735264583249649', 34); - T('6wjkpdrd1l1eq6ev75lw2dqt7k', '2769821915598289015754184942663874264915', 35); - T('2dk43cneaa38bde9il6lk6', '248598248682430883472103621926', 24); - T('2dt2ep3auv4', '4969992251611066', 34); - T('h5eg38u5ob9g1lwao', '33951757895785755222148470', 33); - T('c64b2aaa24b8c1cbc1a6a116a687a520893c9010b801b47', '21775469720607548784649620095270581236726101794248269', 13); - T('5fh1274cjdf3h55020a74c5', '705854882662235548477311540560', 21); - T('lb69k81d', '73171113401', 23); - T('epmjfo2h3g2g2e36b6c8n34kpe29gp6dp79lg1', '338817707971967615907480318364523251504671071025089101', 26); - T('240440323120014132430403102121201024012100040001003200142014230300142', '961763898207535652839231078700423730480243212547', 5); - T('m2jhe8i', '6828900850', 26); - T('11101111110110011011001010101101010000001100111010010010100101', '4320760375549338789', 2); - T('1045205104430132440520024411321142422540353410133210445340142121120', '2590167532599341334614211172458659924849693395596552', 6); - T('g36jd1oe92jn86aai3jkklcoeq3obp92e4p4', '253854072983617271692860022272463002824013138562756141', 31); - T('8dkooqd4zn', '850775103673475', 36); - T('15120343551355124445525435232555231033521151050423243335402', '2539878326431426452775761994842902860886262746', 6); - T('298lgil5k5kcgili6lg3kihb23gc203l7cb63c', '113456079349387858220556248154469725980796810803534', 22); - T('1lei632qmoefkm31p6imh065fa7j', '797240105544041247670463126344319732926', 27); - T('5j5lid3cq1t97vkphbce1pdsc0ad50', '249736734398750751548236560945594271892059296', 32); - T('3477263035715376447112210', '17112580757759444423816', 8); - T('156448734843a1a32b376aa2654087b6', '4161327287906171047830726268271226', 12); - T('34433515140021245052211514423', '23302817098029688581807', 6); - T('1j', '51', 32); - T('51471b55a0724a95b6a5c7338993303081ac', '4964947861806473401365128050047846101681', 13); - T('c24h0hghhe534338cfd8135c', '901568719507789440497671591386', 18); - T('bir31dee2n4q3kiqncidbhqksllce8', '206194968967125424489569046312454402749360697', 31); - T('120022100000120120111100022111120222122011001200120022202222022101021200110122211222', '6788270345480080438329192354621823378457', 3); - T('174fa72d10hf8f8h2e3g99cag8h', '608727676666149236358796734219473', 18); - T('a1h8432ih885f9', '424773876852211679', 19); - T('nojm2d4ns71v37ugm0qf06gbcmpnw', '78337300498913437512813545723950687423977167', 33); - T('161037100117541', '7769478438753', 8); - T('3', '3', 9); - T('1b7b2cc91769682ad42af60ef67c77c99ac81d227197', '10281919698706053870205728976619722313496732052386199', 16); - T('afh25f80e4ph82gp1fr67hmrgpn7i3nq89h', '168629703795331360132747588030374114678927773055501', 28); - T('3323341402104', '905809654', 5); - T('1wd9i2gb5x51qwn0i3uf1s1ve27wjpvj', '584082364118340230826335224432353183683007501197', 34); - T('32577073350883554', '6105022583908099', 9); - T('a9bee35057d1i71ffe8a0ja643h54bhfa58ii', '720134659347610141900482413183484695157617643578', 20); - T('121210122100221002202202210000201121202001210111011200111002110210', '19230462838832172623888006401599', 3); - T('2hfgf7f293d9bacc79ef', '2120195472437110473202983', 18); - T('5ihjghqni4g96j554pe5fc5okg71de', '14486130945303122393368850677450427863143234', 29); - T('1', '1', 5); - T('8iw9sg6afo8s0k8uf01e8vsbdiagnfiaqh', '2958988238033921612788754062346621852633413272634125', 34); - T('4beubn95hjpt4r9e0ci7usc7', '366449081183766477979316652536458765', 33); - T('d48a2d77b1b60940c800003621010101a61763d28549b', '3584857812230806937337786075261982505145054504278321', 14); - T('0', '0', 12); - T('g7a3', '112464', 19); - T('10111111200110221021121120', '988574822682', 3); - T('1r4y316lix1qw2umka60k5rhzz9lww', '2380985708564990921650705038323328729070310960', 36); - T('10110512330112515662324231', '1372761603510037086403', 7); - T('16a9c4841a0c959526650301a7b5caa2a65597', '3783858424048742348429335229654291816630417', 14); - T('fgrg85nfo4947li3dqj', '33409143920842372353926257681', 33); - T('78a9c9d91cb45ec86599f1b402f6635265b69a0317', '176349517282896190364726424897935661923732528169751', 16); - T('1408fdc9f191a9be2efbc3846be66cd47ea391b', '70707899311965473818711332151924460200296539144', 17); - T('11', '6', 5); - T('32183b04e5e72ed8c76582a5e', '52862848155929840288075992214', 15); - T('1140302201413440103242033313203', '1271212993476215135428', 5); - T('30xh2uypo0ito62vbqbntsiq', '987701737110790082032413714393048956', 35); - T('1c6b943a8603ab486e082d6a4a6762', '23395026406105011370375736268800042', 15); - T('12ff86h', '790162397', 30); - T('1s7lqds33eengipiipxqqa', '858343047434452825500670693844626', 36); - T('4f6e67b1114hcac24d7i79c995', '447528954470338933744428432073566', 19); - T('5636664', '698688', 7); - T('mafk7830dc', '121664093929910', 26); - T('768gsjk4gsm7pl1ot75grodpfj0t', '133120656483903774436059010594997642935901', 31); - T('4313442301430144333034333224310301432040323222210030044222211411421331344304', '123662770604980307050783935056941063117742366185028079', 5); - T('f977ljj', '1748806177', 22); - T('eg38ke7fk1', '79381095454493', 26); - T('2i7p4t8fpceetf4dnlq', '1010667644618526459089112356', 30); - T('12c4g4', '2171092', 18); - T('2', '2', 31); - T('gn2r2eopa9ssql', '267366244724756072001', 30); - T('b28ana08k94f596m0h9hi7n', '25697606312564649510807036677951', 24); - T('16ps4ug6m2ba2r', '29801816306000563900', 31); - T('5926b', '284051', 15); - T('51263426046122444503052060226', '2393161862759116724273865', 7); - T('8247054749346666208174a1', '7360587857824675562554214', 11); - T('ka4jnb62g8cmlf', '17902323632911891335', 24); - T('4de9276993hgb8a6echc3ef224b38cg5dh', '1265428646069784687854510709176092917599183', 18); - T('42gd1k2jj', '322506363396', 23); - T('1hn5kpf05fb4o0a6hr301', '143595453719112771974614666609', 28); - T('4e603fcjm32086ng194n', '7107200633977689504284025944', 27); - T('qfjhf7t644i8rcprlhja28br', '249684275564201049491161041832861557', 30); - T('10o3mixxqcq', '2812826818986546', 35); - T('1202111021110211021102202120202012101001201111021200210001112201202200110221121122101', '21059093384477202862416737568527737310314', 3); - T('2ji33jfcje7ci63a7j74658cf4eic4', '160814309330846460265100741771056759444', 20); - T('1kjf2ige0j', '2353894887979', 22); - T('47534897688907458', '215057061551555682', 11); - T('4175', '7145', 12); - T('52', '57', 11); - T('2061405345251056213423263560600313464103414350261551220366453223', '370646419200904248631530204999374005994255272808697624', 7); - T('1a7fhdtcdpl', '3563463934771321', 35); - T('33dj', '111526', 33); - T('39894', '79024', 12); - T('7e1d1ed059a1e146138', '11736928073492751232403', 15); - T('159197a68aa2525674259a8995014b69b43267906', '21755721404512460507158581208182125061497430', 12); - T('lgfi9r5hunkcmir8tclqh6tb1pqf33q', '11856112170670785902649247238864725820665462048', 31); - T('221a2ac80c43003a864a93561a33', '2581136407529861197214154837507', 13); - T('15k97k6h2k5k8ejkh4jf35fh6c014ed', '10587821536977531443888357135531651418988564', 27); - T('1rcd8', '1739821', 31); - T('3c2aqh', '152433373', 34); - T('13dp547hbmkbq39', '123667923481065503379', 27); - T('77425744122551307334650320055405680842741484675143', '448423853223269792174799411068423443678773482313', 9); - T('4sockf2l157f8hb17ddr2hn9', '21560188551982844171137848011861038', 29); - T('3juflq4b8kdr8f21p00c0t357l2t5j8bs', '1928545001966571247157174149144121166575881998307', 31); - T('ghp116oj9ld85dm24m3fhp', '19072941993100916686445846260174', 27); - T('2hi0977bg554', '998426859590521', 21); - T('dmq1t205zcsi', '1794163292538515586', 36); - T('kjck7akab8f6lg35g3i7h7g', '7132544457923014075211392976822', 22); - T('2d3ceebhei36e', '5963519500590381', 19); - T('a4q63wkuhu5ew942ns1ep76i4', '28222639869071829322012344499963435954', 33); - T('6o0jiguur7dnbl1usfp1d87u6fdu0ltisl4', '28664748020226432037191687849395173254239302974652396', 33); - T('t0l2snlanhd02t33k0nj9c0sc88tis1', '5975669526488595725702933777554273527309680041', 30); - T('2fmjlnb9ol7', '368530312010049', 26); - T('qhhvd3umkjbqw9tv7', '52479183082258753819239127', 33); - T('2500403606135212325430122365142624450522464122104', '99685783804159217515113789269706714123131', 7); - T('67qam7pealp2tbtr7c7', '2426267332304775510672525667', 30); - T('32556410147661251456104752223004', '33072622383942794561666491908', 8); - T('1c4ba716175b6355c7a', '219526637401960896784', 13); - T('5f1biddjbgdb988d7i73dgg0j9iid3411', '2471320652055149744926174715249139131705621', 20); - T('1388d574ca446bab251b87412c45352', '30454263653289721532545707133349100', 14); - T('7gj62q9ggf07fng3jebko3heolfp8hhd', '5526886878277522528388980899464600768775115001', 28); - T('357609f72f993e', '32878913632422200', 17); - T('292357a4a7ca0a4648512acaa416', '3226641593686507554429950032194', 13); - T('13hog', '1313053', 33); - T('aks3be893ugctq81jr25n8', '823004494027615294747011449706584', 33); - T('1901201228993448243', '1901201228993448243', 10); - T('10pe57shgkj0salrufuot8', '21377178212418820499882165050214', 31); - T('1h056a5d68', '385881101936', 18); - T('s1q88msiur9c5', '46791653096466186782', 33); - T('214256605b5b68173072b55a286678a78809b8a1b9123', '643841400834614066547345702859283739566239655019', 12); - T('225934566430252988213108187132502829348539', '225934566430252988213108187132502829348539', 10); - T('d46c910d58ac7136d30353803945d705d2c686b94a4b88c', '702141078557834674338031856012906248646954470735486212', 14); - T('60561454833387506208577187677017606400252625684525728', '253403574031753766760677099922706298646581738014040', 9); - T('5855c280622b208', '22237016075348836', 13); - T('551243031044335040041414252402143313230452031', '101760249517059532483322747468911891', 6); - T('43fia', '1164224', 23); - T('5ffn', '163858', 31); - T('150c7d4ab18bef2ef5f6732d9c2e43', '624946142089881488416245393484485342', 17); - T('1622555136441511413165355262403631420051', '1733785303380199232372666440606372', 7); - T('35gdh2332d44c44fe61beib', '44909929802583956335572418047', 19); - T('1a2', '553', 19); - T('6l23gp1o0d5lllh0h0cdg8phhooc8le', '19160300206063055542614858497172997898567024', 26); - T('356555', '861329', 12); - T('121121', '448', 3); - T('cn81glehb1bj731', '272882629276550119945', 24); - T('310f7e944db1e20ca7d4db559be74aafcd', '16694431636419175813863637436681440374733', 16); - T('1c50o3fo032p9dlma2984c2m1n5', '9043264155154723194686490722280250127', 26); - T('2r4je4q2dgrcwof3ha10riwtv2i', '38819957816824364031051480668637630210813', 35); - T('1bsa21se9qifdeljkhl8t', '487505004229099904116267378169', 30); - T('6hra982l6rcia40f233gc6623kndbhi7', '4832827139354482206384048706613262325658834511', 28); - T('54c1te5y52hryxhw8dqfw', '38992453646077977693451503497907', 35); - T('111001110101100110110110001001100011101011000110110110001110111111010110110101110010100100001101101100111011011100110000110111100000011100011', '2519183162360903506191281057447758087831779', 2); - T('7je5fa763i628f2261ed4527cb', '2679563654580342682033196365619051', 20); - T('3dn6l79c9i41', '5450807136767713', 24); - T('f9766807', '52451515394', 23); - T('88ed0197de', '1684047406892', 18); - T('52h1b8218gdc40ad5i310cgag863ag', '276096404325838933546263152968372529416', 20); - T('52t9r2u77vbvf40efm68bawfi2h', '33471177559078492055448775316984931198101', 34); - T('200hd', '210271', 18); - T('1f1v242ndsl7lvirbmm58el7', '122766495427277981800542186078046723', 33); - T('5h', '192', 35); - T('a7538d005092a0', '8355305185328108', 14); - T('1211474324420476530235671057512302', '804188130270400499435404432578', 8); - T('36007574066667272553066076615170250031017703', '2553404178224213798051876650192088604611', 8); - T('5e358', '487347', 17); - T('1303322003313332132023030213123123210311132201113000000201300133220032030023213310031203', '43366030506223289335027745955530792181104257171145571', 4); - T('13579e8b8g5c1ii6c63102', '581965839975794432039894464766', 26); - T('een2b8gn5a0akreg', '74066109426399607206216', 28); - T('373734g9481fe1bd3808ebg66f', '19756375071243592050789033494286', 17); - T('1122000020200011200202100120112021222202012201021212012120002222112122210212112201', '722771278211345591971149292885640595157', 3); - T('22rod', '1295069', 28); - T('q5odfp9f43b1c50qjqpl6r75', '50477571992047059200316127648900857', 28); - T('3acw01ki1tllmf', '268187445649566046567', 34); - T('179h9bpefc02l4', '3184639878779111822', 26); - T('603076927928855a459', '33500247475513964715', 11); - T('b7937246a973707756360997bbc4a1add265359b332a', '221810527222776063188868345414589959484754657616362', 14); - T('11a4ae80f151dad1752e32c310a41dae552c37b7b4', '25785693883194456949802584063055012266517133244340', 16); - T('1q0s0ct3a', '1993804772458', 32); - T('305b07aac599939a5c2a7', '253475774098192811736459', 14); - T('3e7c04g60291a4g4c9f8h6fce634ccba', '3114555919530851258064228685168186383232', 18); - T('94nl1m3ak53p4it388jf6l3mq', '5679054267841124072813695563380516908', 31); - T('1e9e77gdcg8999dh501deb4b1a8', '783953025310755506835756788250680', 18); - T('lomhb6bfinkeke7jghdjnhibdi', '1953665391422082290906397636706147843', 25); - T('2116596779495229974441934380827118544653435', '2116596779495229974441934380827118544653435', 10); - T('368d9', '174129', 15); - T('1agh7h9ae43hi1af8k8kghdhfkc08dbhff66dg', '12657253320720905806182288358437536765226473490475', 21); - T('320abd803f00618b853f0f4ad06d76e5ead8eb20d', '4571024861681675091071130733403917525672421929485', 16); - T('13s8nnc8bsk2d', '1862804681403965620', 33); - T('1d1f67lnfl0l2d54e8pd4fdld2q1f2i00m2', '6881652679580574557491455550605507870404485512536', 27); - T('200e0d886dg8dc3b3b2bae2b5fe030egfe843', '396106131924337983787092625578393234401506110', 17); - T('nnik4kneo3', '252246525060547', 28); - T('opgbb9o1gvdiijz8jg721c39untg', '25881420507156207174185940935514686366771476', 36); - T('1837bbb0c0b3aa5', '17663579102091025', 14); - T('9jief28l04mka1lle8', '2856790240918270335561368', 24); - T('7tp3jdgcfd32', '141621578705936792', 30); - T('4', '4', 30); - T('222300022013300210200', '2937927436576', 4); - T('11100000111001110001000011110101010101100011', '15455189161315', 2); - T('1ha43j30df6io8438bq9slk1', '31199374101388173422454285941010092', 31); - T('10jbjaf26fgjiffg64fded9e9i5', '24920507465295692091626238401086277', 21); - T('87h9ij5dlhhcjh1hk60galgb7c', '92091778011039547451374958750302842', 23); - T('2784592431917088379783455384035660971125128970527148', '2784592431917088379783455384035660971125128970527148', 10); - T('3f440273754699dfg5bb4e74', '77813808595431029263623003362', 17); - T('1533i', '947808', 30); - T('c681cb1744269d1db3976001b16d3818c2b64839dd4', '17109878266190272366632308176425149995679950565718', 14); - T('60v', '6565', 33); - T('shn5ajab50en3smbga0d5s076', '3582012633407680801468180717971425010', 29); - T('e3j6q9ic5', '3992855661140', 27); - T('irhcdao47803hhdpeu9e89ed', '378032942792617127943658071456183506', 31); - T('g256ch64c0b74idagf1ab1ifhi4i737e6627', '9199059457373375499891835079838688223060102043', 19); - T('10111010101101', '11949', 2); - T('117005335301204024246205442614352033070314715177', '846676850563380044165463437005588987127070916', 9); - T('4f4a32024611g26g2264f6', '338430706762087113025482959', 17); - T('5ksu', '169073', 31); - T('11mrnnlfebrg7raer', '152018401101654203204227', 28); - T('83ioaci', '3152456595', 27); - T('9e6142b038a', '34978108072150', 18); - T('1emawv26mw212hnqtpcwl4j99s', '566817147004008119440688047613652334743', 35); - T('29sh6pr5181di802j6t', '14165634085464252520185940514', 35); - T('7462320173122283772726810', '599983522402508738369613', 9); - T('3wrotodvd4dgo8sn2epehwf8vdoh9685c', '15630856736175398255351237559386715772597049203092', 33); - T('2095151352baa52614a53a0421205491386524a32b20b', '629494720198763535790368010310014455139220124011', 12); - T('909848', '909848', 10); - T('1e1b700ag1gf8eea9b3488gf6a8g', '3050765026582250489151628861107884', 17); - T('17f27d4daa32a', '421284028261162', 16); - T('3fd14203387143ed10002039a6fed', '20709934734392064809458286974365677', 16); - T('111010040102014022442422222032420002341024101300144343101412134', '26924030592936765055391026801687634225029044', 5); - T('4wiojwnbrlkl8pg9foo23uu9a1qpbmlac', '126760787317043868804119267318859978950162615116837', 35); - T('210320022332330111223223020320012020', '2721092611678604067208', 4); - T('n7ku5i7ckrca9k83bvdh', '920599639906328717359960161713', 32); - T('17b220gb2623f405b0', '18058612030620400642220', 20); - T('606mb55', '3573729571', 29); - T('9d59e66704633dg70ag8gfbf7998831ge1', '2585365443584252475016853533056335340761269', 18); - T('11111120331110311113221201203001223223111320230121232310100232011333011220123123130', '31183875195251062246636964788521888205106734806748', 4); - T('11012202012112221210020112000110210121122201111011121222010', '6614437174755192747904170297', 3); - T('4566b69a3b1567574178164a4394616b309890b373a', '9444463089320211225317858853703681134950130526', 12); - T('pkiga3j55qn', '5305045276825646', 27); - T('hb78bcc8ced66de45f14c04ae8d6hfeg42a', '84259895898473468702361264132957044004367294', 18); - T('30436028074514706633323564703107103255261676805352', '174908702299661723007314223174052884313545177020', 9); - T('6klbn2j2eln', '5464796003103282', 31); - T('7j3pcw6nfmhr9fxocg1wxkenrnkt7we5m49', '88904461013157334884357042737148269672311351079065265', 34); - T('r82v5q', '914455738', 32); - T('34ad769763ec2b7', '96777760100981122', 15); - T('gmposxc78rakn', '39780003905171575839', 34); - T('a73268168a75548674124697', '9548080180583883175964866', 11); - T('1237051', '343593', 8); - T('q6u777k1', '1376248631213', 34); - T('10010111010010010011111011111011000101100010011010101110111000010', '21802627242312687042', 2); - T('14dmjh7bjlc4d47dmfae09kcj524505mjd', '1038322928472978173076737040174508852100751669', 23); - T('11317560a17393ab6a99a582195a678aa749193a39b9a0', '4041658781234719016719043489530302116978697137352', 12); - T('3120122333011103321221103210310332213020023023220112001000', '70232841201518207453336540043894848', 4); - T('119bb65631559198409a47456871003ca715548c33', '5332093690285257080851788740211348309400491181', 13); - T('1m2rec', '36143234', 29); - T('366237621254212707310212730126632527636236606', '20953914213183846148388529652331213045126', 8); - T('5tt1f2duo4glotq8vsfkr1os', '246514271200574513800096210368694044', 32); - T('34e1bcb5gb53cibjmb6b3', '5492559329232323890310212939', 23); - T('3hb44ahgj6d304fic32bjc8heh7lhk', '3232709760711829349820278323781274358774', 22); - T('346ffj4208je', '7559300332817989', 25); - T('1d73nf4c2ic64', '223833191887270462', 27); - T('225024242331044121344', '9046573709095648', 6); - T('1049hebe2f', '201147941571', 18); - T('230kc5cc2bbffi6h6003fie16aafdd8bd67dj', '4542385341584792754115882088702313332812815292781', 22); - T('1f9b1tk7v7qsb5um73klta', '59949796791943622919687088265130', 32); - T('4184b1l3d96gbngkgi0bg50mk2m1', '74780513187896152341086440607818686097', 24); - T('okmg182dn4q7r', '8745053305431694017', 29); - T('53ae7173b79042ed481ba175e034e38e1d0', '50951535169205935843174191126575047980795', 15); - T('222i8fc3cjb789c995511jde1g9', '14141883645422057031570049406992729', 20); - T('aeiaou79juj3tkj5ga2k5qchh3ahce', '185979506581766660458072557764185061403967977', 31); - T('eacae9856ijgj3242678egf9', '12189771867978125139049367798709', 20); - T('2433113434303102021443032400412244243442443342242', '10466909999621086883955370845684072', 5); - T('2ae0fggc6c6g', '878502187845025', 21); - T('180845968a3226a8a253479619663', '250001325233535979152109394821', 11); - T('hj3tdd8slhdf', '2307423515301123891', 36); - T('ddf93c33cbe97520fb19a19', '4293593374816726677147720217', 16); - T('10013104402044003311220402002301031430001044', '1151854194727926643451204922024', 5); - T('1124210334', '2569469', 5); - T('7451704923b3ba8647a8c6b375402115658417212a4963', '984073049999829873728964883865033372424530670574289', 13); - T('1ij8n0u5', '54333768645', 32); - T('463cojq1oo', '44627322572360', 28); - T('1g2509ced735611b3bf0dd25egd1383ia5i', '55515377175716442946588772750863162331336647', 19); - T('10a099149225276aa0308163405854426a4546969042', '652590329197497894293981277355838911625689415', 11); - T('37bc13d810602438ce47db31c0e7a87e6b7831', '1242924848237600517379561065653635852461111345', 16); - T('676337572246445153657', '8042293848523986863', 8); - T('1g68836b967fgf9421011', '24334561727939858364932923', 18); - T('6b6620b97ac6a6b6', '352387246281540515', 13); - T('12776426', '6309843', 9); - T('24b0c6885ab8b8a892', '228166923738350465687', 15); - T('2', '2', 35); - T('15a', '346', 16); - T('300134022400134213344140000102213323042404311040243310312000343103042342', '127652641370367962998095582336792086908935738721597', 5); - T('3lfs4fgwbvj2wghyh740xh4oirg', '104622608267093965118263270976335121345788', 36); - T('157423050242731427202356723', '526719833217016133180883', 8); - T('1b15hp8lt9ju2rh8dqp', '2874344460549394391885632870', 33); - T('533921', '5454113', 16); - T('7732111706233511415326631451', '19164044677656856523125545', 8); - T('3dd0h9f7637i95fac3heh40c', '959218007315210960375525274067', 19); - T('881w1kydu9j4phfb2c07u94ghigb', '4029435105852318664830504263789530818302121', 35); - T('51', '181', 36); - T('2eh', '917', 18); - T('ca16b71428aig5i579j5jfb0ie2de4j95e5a52aj', '6873773388658232174414133826827672181606125713641019', 20); - T('20486090530289807472885277534944595036578390a', '13514447539625782711007863489274523595153330080', 11); - T('ioq5s4bdalj52flkt', '22698271406125036937402013', 32); - T('7a', '150', 20); - T('hfhrlg3rrnnwks8kws5qksp1la', '1603852442098792332083147036848732541416', 33); - T('5700507927296a1058a55a90235789278085068346', '28062460682476336947447786622579009202128233', 11); - T('959787104', '4077788116', 12); - T('2a7dda271d5i2j31eh72387daf31c639hchb84h74', '27699000410590034444165195331712291767536579684518944', 20); - T('111100101010101010000101011000001001110000100110111000010111110010111101101000110111011111101011000001001101111111110111011100010011100011111', '2642399810851701674212632837439227993925407', 2); - T('fbcim4p3nsgtjo1r03vfr2j3iqe4s0s0', '701339888089764999500469781844563368651453760384', 32); - T('64lzp05nduwcdnr0noygfcm85az', '178315640220328504562173918873277402530523', 36); - T('35lqm90bgico0a4bm5pm76qr8q6iibfph', '65327914287307331894331060275333284488697055741', 28); - T('83a2c22', '62241790', 14); - T('89ebae1173d48a4', '252977067390654829', 15); - T('770d01b680082f7c23db6444c14f885dacb63824', '679659960629478197799609320106784570818809968676', 16); - T('44', '60', 14); - T('133574562456214335435', '1652705792533576477', 8); - T('hjc4g2j5l13o8j194g4cak2fg4448d5lo0606b', '94123874693313956619727979886115180204328649160250161', 25); - T('153301155', '3242879', 6); - T('20db9n21fq5ibaapk90chaof', '1684131408222169123186744163051184', 27); - T('8908560898716681919534923549712841926366', '8908560898716681919534923549712841926366', 10); - T('110101010010011100111000100001100100101101000111000001000111101010100010010111001000001100001100100100101111100', '2161630318713979730472184517642620', 2); - T('164r7nnhmtvtn5dqm9vwb3sjam16', '118591147821330046156032931950921969681024', 33); - T('jm78unrb447ll9146j29fbu2njvmfgbl', '899490746363646305757921797948267020154887979381', 32); - T('2419413757519055953413373253672626060250908979623', '2419413757519055953413373253672626060250908979623', 10); - T('78i', '4593', 25); - T('dc1', '12866', 31); - T('2jci759g3516', '610774111386026', 20); - T('8824059425840339a993058b86957230870716058427784746', '658484467757378126049963737243666805178029770173426470', 12); - T('20', '30', 15); - T('12fnrrcj2g3dnbj0uvd3lqwfrs215hlt6', '4206028108501355290972496973094116936076368376680', 33); - T('11682eaa9a50b5bcc234b90342bb9d82e10da8cd55e87', '6133831849997371600782799052395677700841654445348277', 15); - T('224', '224', 10); - T('1kplfagn', '18578948909', 27); - T('167110ac751f4fe', '2158807311824281914', 20); - T('1d35', '7477', 16); - T('aa906c1dabfebe6da', '196647076124632540890', 16); - T('a9692a0a76714aa83b9088424a3955232971b8a618aab2b58', '68234402305157694365438746604458604774416341282072308', 12); - T('57g5', '156183', 31); - T('1ghp8v317z7', '5331055013092771', 36); - T('3b4ho477oeopclmi', '5753023344951280573362', 26); - T('640a34c4d5bca61b85d8255ba0', '1583171296199874175043612916375', 15); - T('655', '1621', 16); - T('4713001873693116544881662', '4713001873693116544881662', 10); - T('6gl3bca0', '30744845808', 24); - T('60644mi3d', '917033167588', 25); - T('21151054205203166605404660561', '1001991791616520586906319', 7); - T('129qr11chmnjfbix', '235017795197032514991897', 36); - T('244bd93174aa753ba6c202185776cb', '3994077758483075041207284320967331', 14); - T('10b4cdbc67791d914b4835190', '3400360668240333886096375178', 14); - T('1gjm2b566fl5e52133930k7088b82ijgb90c0', '18243047800946255257397415707493803164371776970538', 23); - T('3c3031a86910bc6256', '118078665313660741892', 14); - T('5k0u43zh6', '15674653708890', 36); - T('80137052', '38347634', 9); - T('5783jfdm426d5lh4h', '64288507756051477652657', 24); - T('1debef5dc8c2g4ccg2b1effc389', '178108250891112116916624674314670', 17); - T('rn4b', '1289675', 36); - T('96bghh4a66fk3g7ehh13c', '2590902696974891660626840167', 21); - T('556423035126405021416221205151', '18834557073762345117422046', 7); - T('1ed6e1bi4b9c13', '74595097394557912', 19); - T('3d8e3ijff6f8g1656f92hc2dcha67ik9363hg', '1448249031707035880952506340806153721615337546525', 21); - T('9ok43ekhol', '75619493880060', 27); - T('11af668734ef7a60033c5f518c530', '5739161962048683655238213338449200', 16); - T('hro9lido58n6', '149244549072792522', 28); - T('2yelbnsxotdubg6p2j', '846844061507274550621896811', 36); - T('3f8a', '86024', 29); - T('fcxqpdu0', '988921967600', 35); - T('kohlm', '8198672', 25); - T('cc57148', '62535637', 13); - T('12151', '5225', 8); - T('3375365cdde3db711375ae895d85d271d3cb25', '105909922550502800264613611713682806644035510', 15); - T('21031424', '1772495', 7); - T('4j3nl0517f9m0m301ganfm233l', '153601615041435840934780931557446429', 24); - T('4310255062420466600245524221213133235464365030', '476197169299254422116266555387455712335', 7); - T('4244423244041424242212043102240041314210000322', '130719114900175165281529950078212', 5); - T('nkoba1m6iajaofd2e18qgr7irlcrao6h8', '483767596088912028670249928507167976393694305348', 28); - T('2bf51ahb70i08dd7dc', '76858429135673573387403', 21); - T('9035964bc6d843d71d2ef9124632b039ca9ad9d6062cd', '863281823741412484448091339719676346358410323679011533', 16); - T('30lln67g83icilejifnfc257chemea', '105297837315708788148863073871950075232860', 25); - T('34rlrbnqcogal48', '578637984758229207624', 28); - T('210', '105', 7); - T('4g', '84', 17); - T('b384950cd1e16f', '16589581301885375790', 25); - T('8d9bhgdf3930', '562480785855234', 18); - T('570b40885', '5738449608965', 32); - T('1o97ac9d17j9b20ojeg5lnn4b2afddlen8i46j', '10454900498332552068488800154275426413110941145987044', 25); - T('9ldj9cic03oom4', '14695585287355078054', 25); - T('53287c', '1947997', 13); - T('134kd7hi96jd', '404274808381030', 21); - T('5fm21mdph4behl0a478jki5', '1733653126898384929528694793111545', 30); - T('11001101011011110101111100000111110011011001101110110010101100110101100101001111100101100110110010010001110001100000010011100110010101000011001111001001000111101000010', '150121826439470624887536282475629271619430756159298', 2); - T('4', '4', 13); - T('4d1631d4942f63e89279', '1140237935084465937312261', 17); - T('1372066706', '199781830', 8); - T('11hhc23551e866ib6812h7g23ad', '7346411878504474781966365272977413', 20); - T('101111000010001110110001111111100110010111000100010100010111111100100011010110101011110000010000100001110011100101111010011100111000100010000000011100110111000111', '4296345185753731570217826010182320032993209601479', 2); - T('b84d8a8i32', '3689641436737', 19); - T('821ro50fcuctkgot33m90ob09tucvv1f', '368313190889612097541983506195312358021535890479', 32); - T('1742eikl8lom1h71ad2', '37595040685294737585118388', 26); - T('37324076026320245555326737570636206', '19911177604481197795113399696518', 8); - T('320023020321233320302211200320322222033103201322110011320211', '1166689340508182807089736390989078053', 4); - T('vikd2pt8101fd9eil04sq7cvi6l', '441068211140868982000952250746004390824531', 35); - T('442123', '15288', 5); - T('711i3khj96m9511mfn20c5bjemc13kfn93', '24821870043582444752692478195243347378957786779', 24); - T('51lmp8tqwo2ihznbv47n39v8wk05', '5284244405211887591129226457353248485630277', 36); - T('28ia', '25574', 22); - T('1bcr3flr9a26qiocbai0g3na4p3a7kd', '36624769937531720777599142004807101241462829', 28); - T('14460a28a41383802814154aca2c71c5cc4391791c33aca', '2325888630013449576179969978508312620979962590691472', 13); - T('e708234759a6db8944ee0a6e1b6', '1413966030986819590654632803896888', 17); - T('q4iad60645grlf0coh7ajunj', '2203400666051301621545431516042922668', 33); - T('1220112101122000120220201222121201222002112000212001', '4110612146620826410819909', 3); - T('3', '3', 15); - T('65f8bc89d60a7011dcdb80539f104c2cf2894', '1255404535660022776668629518669612407348698590', 17); - T('17d0c2897b9hk96aj', '1949684990803549976380', 21); - T('2g5fed38ik06ii4e1c3bhdc0b513fe01753ddf6c', '10228352956451115239173172361471341616481366320264027', 21); - T('6bohd4bgt0eeonfjajubo4sojmfnms2mcv', '297805807713638700732162989593992480395200752081311', 32); - T('5df5a6eg3h2b2', '12674703290992823', 19); - T('30331120101023202223220032313030032223212233022223222202220', '269148936607402430897888550064138408', 4); - T('2a3nlbjoo40fbldn07d9n39p34p8alin9gqq', '297524222430407948715826730547173299573877425424600', 27); - T('1h5cg9gld4h07i7bgh', '499570659694781114823761', 24); - T('1framh4l', '41608063497', 31); - T('131', '1405', 36); - T('74m9lo2h16651b4bb922capfn', '386718113062216498663314663422184395', 28); - T('10101211101010001110020002220011101002010120100211', '271290657968780557694368', 3); - T('10201210211111010000110211011102121', '20755601360118862', 3); - T('o8m10fgn2jiu48go9sm6og1mlhooht9', '13369563582584175800565573934107108011510398039', 31); - T('11101000101000110001101001011101110010011110011101011011011001001010011111100101110101110011000100111001101111110101100110000000000111001001001101', '81062205635532331055236284929003822323364429', 2); - T('11010111', '215', 2); - T('6b792a454071b65717222968a031a81782b1b9856636', '177037493461561410531659133074253146230898913546', 12); - T('6311c13b75126da75ba7ba4485863726', '2107483404556464441066229583431654982', 14); - T('cpnpj5hmoj5a1nigpfld', '9961795419078247375796458163', 26); - T('10121452100213303532013451014132100303230445', '2998363768314347289377629629426269', 6); - T('20', '8', 4); - T('1ccp559ip8j1s70q8ab2c0227rgs', '25883719710063102259022735893679879209136', 31); - T('h780bg2q', '591900557402', 32); - T('a84850aknhp9hrp29rjfpmflaa03ckann00', '164376078844886204368282401541329974440232267281584', 28); - T('2c6c138b6024', '172705552710088', 18); - T('2b7h335ca7917803hfe890', '604800599026530009611628162', 18); - T('413kgak', '459596960', 22); - T('5570634a7653209a864697327a77aa7a167654aa214aa46688', '5883232483921140121005021114807539284596199567869393', 11); - T('fa3d98dfd239530c9a9556', '302522339292227790310118742', 16); - T('110030202222212020231013312023111312012023330132313132201212111231202', '109957282949036883749941648777035608841058', 4); - T('3oep1jk36mmc8pbj6pq06qdgg2c0', '1733516732758228053675351796432011366126', 27); - T('1af9', '8067', 17); - T('e92g', '224441', 25); - T('1466104572263031', '68894276814035271', 13); - T('10011000011011101000011000001101011000000110000101101000011101011110001010011100100011', '46069664430530648537081635', 2); - T('11mm8ml58rari0e', '193855100598485237870', 28); - T('1pfi7291d10t2bme00', '41101471466544183228950720', 31); - T('6', '6', 12); - T('f8b5889f095d', '1800044447610490', 19); - T('62373d', '8703010', 17); - T('10fdb7f', '17816447', 16); - T('15073c8576a045', '420372672828997', 13); - T('7f', '260', 35); - T('1333433', '27368', 5); - T('2244130132243425132044145124224415024451554010223151134204', '557550459764737171250298964345492919336144380', 6); - T('8d68f68g2h8b9n7hdf', '4965201398478292577464090', 25); - T('354313665111045406', '885233290237456', 7); - T('d0jb1kf9idebf73gi0f61ek47563dkbdhkc', '11772703237518049717164718112135708535788508390', 21); - T('1g0fw', '1761440', 33); - T('1111101001110000110010000000001001000111100111000100101111101110001100001000100001010001010011101000111101000100000100110001010111110000001011010011011', '2792505467580338130476655688091490969863067291', 2); - T('4kem1b33od5mfgmg', '109359135408139845817891', 31); - T('252401220241235031123451', '2296208767961087095', 6); - T('610k89dn', '63160332926', 27); - T('16agb99g4d805j75831909a4ggd218b5ij6ci5', '1823913478028636622491544197209852539611260693165', 20); - T('261a033075aaa9629248385a388', '3052545960208975734532191842', 11); - T('t7a1tf2e7tgnb8imbdeedmtigi9gso', '39644969218663723727102891143612359344002477896', 36); - T('7dl', '4023', 23); - T('25533oih57blao7g4pkl08bn13ol8piaa4kg', '73530387775765582430116303708968126882088830298200', 26); - T('519deeadj7la6fh80do', '148946600253514084380503194', 26); - T('4pcj', '97300', 27); - T('1ge2d9amf61k4l9e', '459233734124780611459', 23); - T('1052fmo6cnm59p37149o3l597k13', '161266754400204723877757541169558797813', 26); - T('2de4638', '33376778', 15); - T('210010202222212210201102001021122', '4352520348668609', 3); - T('5d24fc', '14090127', 19); - T('18d260c9d8f110eea9d29', '1875481379014053338979625', 16); - T('5joajar33labh4', '58322924858252306043', 29); - T('4iaqqiwyaom1ce66e', '22936244757184115769387199', 35); - T('69rr344rlel67mi7nflp87pmhgrp03', '43449918504438809554215800177138569914811503', 30); - T('6dc6205912265fe68cb44ae5c', '543574178265693146271925448284', 16); - T('43d54494ad5b05321084667b75d163d973a9d5a', '152956351019871496094981073356920240750506556', 14); - T('ah12a9bhec53547ch1gffbd4ce', '1014336400315441401789662738444945', 19); - T('2bd', '2699', 34); - T('3aec56e9h2g', '12856803598240', 18); - T('rq9uu', '25719242', 31); - T('d4n0x51toa6qdt318fp', '81581464565230142757839048850', 35); - T('jadsk62rh6ij31eo1ch3o0bhmhgj9jtnc4', '107561372102244760144971481381587972564573705894064', 30); - T('2043276441110982538543', '2043276441110982538543', 10); - T('20201210311332011322', '585807421818', 4); - T('727kcili23kg3l5i828m7cf0lf', '78445700911564313828749219623193471', 23); - T('36009102725393959984512648753051', '36009102725393959984512648753051', 10); - T('8ukdkn', '349394354', 33); - T('5ki8ke06mag1alck15hdfcbec6h3cga1e', '11023064368084528790974090237767391150220405232', 26); - T('3000113322000200111111113300212023213010111013202003200322021133133330031120110302003011', '71975485293215942293184497039364273438587712328376517', 4); - T('5a1a7b653b1a8a3171138a68', '38731186957000914147920624', 12); - T('12112311232132232202132212302112123231131121', '122959685741398740635146073', 4); - T('224224200440342044342040012141212202224032', '117352577650533752666371914267', 5); - T('gslgybo3qge', '46391977465963549', 35); - T('2uboe91cml1u7nj0', '69926702089025500890856', 31); - T('1b12egkmfpk6ek4ci', '62129465622057070801946', 26); - T('nnhs6', '31660330', 34); - T('67pqqk6c0547', '52109078987080647', 28); - T('1d1w7qp5k49pkew524aqk', '10447930959289958589155414670305', 35); - T('9alklpr1npcnqi', '61021505045351897946', 28); - T('a34jlmfhgco1mhe7i464e0a13p2fohm3g', '64375134650196903816516350557832247480646609606', 27); - T('4abw', '155033', 33); - T('2142033204210223322323142100114402142302', '4324065003615716467353162202', 5); - T('60532043272968a94888952a68053751a363283518447b7', '264927210929454220225095471298215643100178078897019', 12); - T('blqachpkchipk', '1773214262533625366', 27); - T('6a8', '4992', 28); - T('pcgo435a8', '7192807940789', 27); - T('qp0pr0mqbbjk7d', '174868044459225160273', 28); - T('5828156996331', '5828156996331', 10); - T('26fkfcd083b8lpgch1b', '66450659287855347635773641', 26); - T('8mmf63f0ia1ah5kdbjh99e9h9c977', '1209459278082656851165067356679983218550', 23); - T('52i148', '104410274', 29); - T('qk0tfb59r2qbln6o2sp8ugfboi31bt', '473285949705108395655138274449579397276795076', 31); - T('205532300043402003003254103', '369253734666995461719', 6); - T('879ab0', '235775925', 31); - T('241624188370143088778102727584606422', '6171271817077031180028886241834420', 9); - T('3255046123035', '47096682099', 7); - T('1i0c4vdgr', '2174016088986', 33); - T('146jkgfke909glk3ob6mdm58f8ilho', '40622675473823760328962580924562649904199', 25); - T('jj8y8', '32810768', 36); - T('1e4hkj6aa05cxq7m', '132784276644103297330004', 34); - T('978564821b048', '223388964080485', 13); - T('2436', '1310', 8); - T('hhfmf3j0f5i', '736122101988364', 23); - T('17267', '17267', 10); - T('4664330262460243362665332443326246035423001202', '534251783398075165083933973334281628283', 7); - T('b38gklnok0110c17n8mhoo010o5ag57j', '241427482360734538990839716374778906058847069', 25); - T('f3e7pulssj', '916859590578979', 34); - T('27d7555288d30272d', '5595200654400679125', 14); - T('819q61r30e', '282911846534158', 32); - T('480c9b46b994a5ba', '236539854099919419', 13); - T('fwprhkg', '20654989624', 33); - T('qpvqsoagbcxe1m9p4njcr3s1u5o8rilv', '8005304852449403198353189427839491405562792406601', 34); - T('3otz8vcq51hb4x2049', '1057170856381011920131894809', 36); - T('5c0d3086', '991652751', 15); - T('77he9mc', '1399298652', 24); - T('235325244120503340533314220240120541543313532314023214045251354045', '1009019759786137757734399255898805702011348236556717', 6); - T('pen16ld2', '267263406983', 27); - T('38da605fff560480g774a571914821fg4ce1b', '695692475188289760917741559372738544759806604', 17); - T('2as88bci0t3u4peh32h43sbiol8msq', '41775863368398953273228305076503096642379144', 31); - T('434b69658123b20626071b159419805b829bb', '3036841224924436585369140335673525677855', 12); - T('1639ce13gg5jn8n799h2egb', '7079325759472298465468600431036', 25); - T('223462807300306567156031813152503638585503736', '2197225859272539628269139500011586036340695', 9); - T('103e8i5je409cfjij2gjj2', '5891431329615183110981153276', 21); - T('27ehfd3mm1amb2', '2031041578695417482', 24); - T('294a9a0194301a1347905a9a23', '309810801471710455254108235', 11); - T('13410234243444343010', '33738914059130', 5); - T('m96d02hpr8iq', '802992036207501914', 32); - T('122101003320023331230132013130330312331033133310', '32516440874028879538684229620', 4); - T('72gd3be26bald2', '6233639407268330618', 24); - T('2d544bi4di8iee4bif6626hc7gbh6e6cig4dif81db', '72451765332560287083369602461296345124271516517829805', 19); - T('3eg4d95c4af8g6901ee4h5ai', '975073009049557106375679720761', 19); - T('382658c9903142c73aca3ab7cb65a9b03d1', '3332092804303405540969753019109086440851', 14); - T('jmt3oqow11l3pmdn80', '1285457439759406193536144680', 33); - T('224qna7', '1001249039', 28); - T('436m9407fh314jmifj3i1deeg69m5nad', '971010955553278162770513965655919904558476747', 27); - T('2satkskboq0b52lhqkmi4c5esc2l3', '673846076795500227422362618917964848206433', 30); - T('1111101100001101110000001101101111010010011111111101100000010111010101110110101100110010110010101000010100000010011110100100100111101010011', '683433243524982240677777243476582452055891', 2); - T('2914ian070b8148i4gj', '16589998566194339193968275', 24); - T('3a749k6112hhak447jj781mmeac', '876069885826400018389776921704533226', 23); - T('255872662234441388265248510244', '12384677052693094655070972427', 9); - T('560090c1c7219aac49bc98723', '17449270853995006816160134795', 14); - T('331hkjh2h222gd8j7f87053h0ekkg', '33116649224902344081270523395559561873', 21); - T('19d6ad933a8e5', '454557212846309', 16); - T('15576357436114241002422756773501074050', '4461159021738482150619844582864936', 8); - T('4ctu84vr3pf0r07ccpln', '1617599669168190267768549135515', 36); - T('45', '33', 7); - T('trcrs9kqi8j1indmkpce9nhggn966', '17122684227038407228619197596494484876338236', 31); - T('2buoook3nvs3kx7rsaxm5r4t0', '52296535133778210239758710339648429588', 36); - T('14226054c26c7552445020a886b7760b5b5135', '217115666892653625414446286763519219185314', 13); - T('204100', '6775', 5); - T('25163361', '5564145', 8); - T('3a7i5', '3481157', 32); - T('409cddb354a247c953ba', '89645162802357578226475', 15); - T('82701069295659144047712581742043369852863', '82701069295659144047712581742043369852863', 10); - T('1m1cdch85eede', '42940540919670056', 23); - T('8510a148870865416551266375119a8744402a37237554973a33', '1092891470413014298604369531468860344380942265185284043', 11); - T('2o8q93w6wqfxlcyj', '591019503162075661873627', 36); - T('1010101110101110001000111100111001110011001010011111001111101100', '12370864596035695596', 2); - T('11000111110001100111001010011110011010110101010010111100011010111100101101101101101010', '60378345252763661786864490', 2); - T('103334131441234433031414320224222030200141024110030322323443121443', '3117589328891536907605724784500236990408176498', 5); - T('3osq24ebjht8b4ofmqo4h3rihibobeebp0n', '639082398725178107711437881596434023161974350859523', 30); - T('4hwpetajtnef42hf6i7gk4ft1c56284h0', '284870293967456034800024507342384514579618737697444', 36); - T('47nk79pdq08jkr03j68h48j14fhob24jnl', '7753840463194256229084069256136460485337725952889', 29); - T('3e1ddad6b81e605', '279748388776437253', 16); - T('14213123322410322220113041', '564245997485316646', 5); - T('10101100111000000110001100101100001101101011010000111101100001111110100100011001000001010110001001110011111111101111111000000000000010000110110100111011100010001000100', '126329653589454952926638707222811823179996994585668', 2); - T('1121013121130033133101030331223301230313330233123323132', '451869705599733348535930921533150', 4); - T('2832526509886158185210a67196980527236826366270922', '267178313423247125602360439007441778151867246111079', 11); - T('301112020122222002200213300023011011021302010030010310320221102023120230', '17194503433563229118380499993437205254682156', 4); - T('69282098413186766083358437581101', '69282098413186766083358437581101', 10); - T('4415457670585382436475220327776155226816666075213', '28405304143473153865445009451075313957752794595', 9); - T('u55k6lj5rgfl57wgi31hvuqn4tf6hb1b4', '117985718169999606760995918723069839695453898058769', 33); - T('b7x2jn', '589663013', 35); - T('10126', '6666', 9); - T('b5879a2a1b80a2901235433a292338bb37', '4707604586763280840085306433760750747', 12); - T('n8jcfhcgkd97m599hckkej75midmgd696di93', '4944810674354559044783104703290657564535755949823978', 25); - T('3m', '91', 23); - T('2223210010100034424104121024440210422141112', '570144644155456680754503708907', 5); - T('13124122112412134233312432', '495575953944432242', 5); - T('e073b0188f2d6667b75f11f65a82fda', '18646734802776877837813543784990388186', 16); - T('mbtf7g37f4vmntj5ucgkv14ibgs52c', '2434353097193477091898655577704481736864297392', 33); - T('15d694d721', '29460575985', 14); - T('260163345975', '9836790910595', 14); - T('6uljaaspif4qcgv0w3r4s1d49i4gstwe', '821480362679083726187114504615763265574310553397', 33); - T('5gab21g70h002da99d2c84b5h', '7924712928864678423214354832759', 18); - T('39a6485c82b213cc4bc44409a44bb599a470a67a3a76b2', '503487028064289493492980947734948505492983138659732', 13); - T('20002201222000101110020000222120101200112221201021100001111111002', '6983493499156781197462869089813', 3); - T('10002412413200341022442444310143', '4677943423343013666298', 5); - T('111001000110000010011110111001000111011101011111100111110111111101100100110010001000011001100001000111010000010010110010110100111101000011110000111', '159155836031631574967766651303670498797193095', 2); - T('81f531048349c33f91627d55e1b6bdd8a78', '707557451293532648521737780488438655322744', 16); - T('3lielemoqkwe6hy7x49h7e2wa1xx537h', '2655961913531425670206416089623348076947591148312', 35); - T('563305225055677232242325342', '1753817655195311740136162', 8); - T('7212497884a67328a', '330466724397412118', 11); - T('0', '0', 25); - T('32012123102210300020113012111210131102113212120100320013103', '292854113268474190487876694062629331', 4); - T('56005640531166633533552031326403615010402', '37307044943970381141955666758261394', 7); - T('11000110000110100101011010000011010110100101011000011101010000011010110001010100011110011100010100111111010110000101110110110110100000', '16852729444979725339524623444714796314016', 2); - T('789g13febje5iejfa1ig8jf8c2aca4e83g', '63776033229698957310821624134744128800755276', 20); - T('9i15l0njmgm82jkd85m9nklm7fb17pql', '59304813258620243353054039369424204841493322301', 30); - T('13e4770aa6479a189h4ijhe7h', '19890160409189373966588476781757', 20); - T('391', '1021', 17); - T('2fu0b0cwrqnhk3g2', '148774633410591042263180', 33); - T('5bga0ahccc26ha', '117904089797019172', 18); - T('4aa8130208329129a05788a58233099034432a05816279a53258', '645369877978597708954154480649585042163183610604351956', 11); - T('2422033234133422320321444021300', '2698216128927171860825', 5); - T('4tpp5vh5bt6hek4g', '457274415287522823498216', 34); - T('k17w5vb34d3138wefz5fattm5dg8j5', '27198023106008199799064230217875560645484318769', 36); - T('2102013312101313322013123023202313023333130222031133013220323102212033032102100', '208553181918156893475157564867315522998449792144', 4); - T('51332502222305150244505511341050032244223', '70394344811157929465865596540343', 6); - T('12412251054223304020131354003520010333204354435', '904941860581497811835960794805811575', 6); - T('3479681145ba9586574471', '16462881831354787246025131', 15); - T('4ja2ighlhlc1', '2854140987850373', 22); - T('2202221002000121120210101202121020220112100111202222000100000100011222111101', '1688023704896041845224562059363977918', 3); - T('210000122110212221020111022121011222120000002200', '62111394465978849346782', 3); - T('6pimx7e60eft5feqa8u4b4bw90', '1307284040175844778008871938774231576106', 34); - T('1i16rl7r4oam1b5tean7rcu95tlt', '154612291629528044654847293969784668743598', 33); - T('15110303', '7506030', 9); - T('2016414121621263631244402455154', '45972634857804622561848566', 7); - T('44432212443', '289844523', 6); - T('58a4100974641092373572734330a556a85a3649335a64760887', '750631221647335681998791040547190909433022379938062625', 11); - T('743b060c9e1ec97aaccb57a0b82b7273', '20948613103678762990462558732773459183', 15); - T('1ajb3mdkf30l3ggp6n1a1', '59220428702663606276074957201', 27); - T('19cg5o96p252mmgrrjrl4ilod', '165904775415412969849796184365702337', 29); - T('3g74s6dirr87mm9foqlo7bfi582', '374825061004185779220292067103421684849', 29); - T('a6giogfn4fh', '3031737957822773', 28); - T('78b8be03f14', '8295928577812', 16); - T('26n4banle87jn35feal1m6', '220963128547176781029291070038', 24); - T('3h85d6b45gb6109f41d1728k9caacm7b1aji', '1718109577201049817604488911453241934701038840497', 23); - T('bd09e98b82e633', '116544317962963279', 17); - T('2110441420453022322540033154112020554313145001155131552512040', '107428364649645482426810419589588006553616123320', 6); - T('6d01menkb1m6op', '16127757406621275713', 26); - T('1730611463642631260026156435013323236764317226', '83774860480485487711819613225974439714454', 8); - T('2100667557474081635521', '231108395393156176477', 9); - T('eajmn8hsd1pjfm', '350223684312837767216', 31); - T('c', '12', 35); - T('3hh6bccn4457ag7adn', '1087094043870481997468111', 24); - T('2cmfuigao1lx7crntyo1ugf9i8lfn4xintk', '74377881431362654774128391002848996423791130882315335', 35); - T('ky425gzem0n0ly4at', '166714666329050622675578693', 36); - T('1sg1pw6tb7354mkeo50qw9hw2kampcodl', '18686700577780102002056839220792859826440700702559', 34); - T('3zk6unwmvk1cbbvs88gq87ir7zajx737', '7016346383200454479387022948900734227527567863075', 36); - T('10322140422033432323113304140103031433203324313120022144', '316354577067079212853499387473063048424', 5); - T('1aedc38e246a0a149337e0c21ce94312ab2a731', '851651713725780036567549303250491168513333496', 15); - T('g28dhe5ec7gca2da009c0676b', '79014378046420572184971870226746', 19); - T('sb63me5fg1ia384si46ls96olgbri43dbmh6', '141956865342110649337804593119630908073755164359747316', 30); - T('2e0b0c44dbc73ff4e6cg89g20a', '16306506209387027589159612217900', 17); - T('12dci8290ifa027fb7ejd6gh0195hga', '1217746749869313260112097211823364687130', 20); - T('100593ba5a865981d02bdbc05ebcd1d0eeaca4bc4', '110757343351711672327388218706433958588903853659', 15); - T('27519372626617950348722900682739422090', '27519372626617950348722900682739422090', 10); - T('3uupshi4aagt21d7itr5', '157172315431494653918152587109', 32); - T('2ep4', '50251', 27); - T('m9h3', '664581', 31); - T('110100000100110000001100110011111010100011011111011101010011110100011001010101001001100111', '1007262826627701209829823079', 2); - T('4fdcaeffedcef169c7g9efdea3', '117447089342770251162409579295367', 18); - T('6fh5eab56am5f61bl48l7c9b8me6icae840i2g92', '855997003648548335026652493309865049009850682381985715', 23); - T('7c0n5d8jn3lpa8hp99', '8461593530418792315440287', 26); - T('1tu322cusnnvoic90utms2kb8kpsffaopr', '90526131960565018083687339860055870929107749790523', 32); - T('110122010001', '248671', 3); - T('3fhh08ego0g82aj5dnk2q2kbn7idq3pm6', '22776756121219843287237037542642788102057852286', 27); - T('17bj8da6fm3f', '1264125153712738', 23); - T('f7543ch846', '7865867659286', 20); - T('2ag041225dg8e40b86f5d563065721a22e80', '224048255295439918093318523708092978352301432', 18); - T('152dgc8jh390j5b495gc', '6588878765500952675914332', 20); - T('noi', '18722', 28); - T('odb2603j2', '26846840229474', 32); - T('1062em', '9860997', 25); - T('24676', '16593', 9); - T('1255403606425333320235315622513526506526044146610025', '17675708274550040406518050433158199000096421', 7); - T('mc8cnmgceje46l2740j8ip1omjdk77o3', '5291886225857373516516815562816611072132097222', 27); - T('143141023331223043333', '184512629893593', 5); - T('1d1o6ko66e4ao2868mnibkee4dn2jf157c', '20642579270952330510501003581022184589302753312', 25); - T('28advfy', '4112308409', 35); - T('570310266815233921772669264379360250406802529', '570310266815233921772669264379360250406802529', 10); - T('3m8k49hbc2', '14854779179052', 25); - T('112265015661422606235430001553122514516430634002244346', '735500185117893335759658114968030927435658591', 7); - T('1bx', '1563', 34); - T('154198526b2676bb06962353abb66578266264812615421', '63438474644380821718834297112295766181334517357849', 12); - T('1100210202021100110022010112', '10394984607800', 3); - T('705373640815a38b6625734317272751745938838b66957931', '533650458267011464715178902445187808113331072099472757', 12); - T('5mu0', '242375', 35); - T('f412647bb', '106305216589', 17); - T('8', '8', 16); - T('rm9hate55nk5xr', '4711198898839826781711', 36); - T('td0hcbh0ndskf9md', '422345416603914184013773', 30); - T('343702712358238358', '58222225743441794', 9); - T('6bee0', '1820611', 23); - T('232530', '41769', 7); - T('540444340443225024252235511251333122111303332222444045405203402', '10009287342414262691465339202517966834792921923866', 6); - T('60535639204665261809056323', '60535639204665261809056323', 10); - T('498g0', '1708525', 25); - T('19j25i98e1ihd07224ka82eg', '78254066225000382046873246127584', 24); - T('330330100323133221011332232003003211033310230111011301111102233112323133133132', '86978805378934327315465572304260470254359934942', 4); - T('e32gfkiacklp3qeb8dahd973n', '317981536760764840843373569644467543', 27); - T('1ibs79baql74', '19946951806298397', 29); - T('gc2bafd1bfcfg8f8e6797cd872g40bbca786d', '3305765433031391380598054150042785559743311339', 17); - T('jablfdo', '14103490914', 30); - T('5dce26263c419372a4ebb00d424ba', '5048759171413629413482567787816575', 15); - T('9pj1utgw6indocmuk3', '638053591604508936554605548', 33); - T('39mm42fghqmj6rai4ms44a8jmaes', '10189567831237705666598526955508127749423', 29); - T('e2c9ij3dl7d3idek5hamdke4b64bh', '1896357467030637609113345980127736335781', 23); - T('s4n5pasy6ew75l2a1t', '4993163715460998736843408064', 35); - T('658334577577241364255153', '5841024053232128589867558', 11); - T('1404132402322011330243102041021123140304', '3337373674316685552024036954', 5); - T('3lm', '3352', 30); - T('18h9i9figeb0d243b8e097309b75fg8a0id', '44138855572089599578572255789371956709642686', 19); - T('2241012304021323300241123210431301', '299011414865892653217701', 5); - T('12022120121120000011112110210122210222102001000', '15710188707765121460544', 3); - T('4e7kf6ccdp4il17', '495576709967367899179', 27); - T('35i4', '50454', 25); - T('hi1d7dg97k5b0ailflh1gagbfakjhf33f36kf8', '832882004590031466088018493593950259022003331850434', 22); - T('6821545810481312184878830548787014204', '155801745935514050378370617627291164', 9); - T('10300033231231031023033122220332', '5480800290149870142', 4); - T('1011010110011101110010000110111110100010011000001', '399378554504385', 2); - T('efc1ltd227dle8flfrqcwtcvkvs', '43822708871975185309034493996620102899735', 33); - T('12832300405', '12832300405', 10); - T('650595570247321885101265507780200498020021110989312', '650595570247321885101265507780200498020021110989312', 10); - T('3124144616475210442326726176753', '3917395568817125518374141419', 8); - T('19b1kgb252i8d05fdi2', '917130084420731730796550', 21); - T('10110001001001000101010101010000101101000110100110000110001000001000010110100111000110101000010010100111010100011000100011101100111001110001010100000', '493799621713705665209661337050845053741490848', 2); - T('65ajh2mc90inhcmd846g8i5ac3l3inc', '1587173922359823128666098525120017654586548', 24); - T('keoej5b6', '125728425281', 25); - T('7aqjhe8ne805qgosdh01fosn193nege651', '13396367124183589399343540124147227754242301295318', 29); - T('200111111010212211010011210012210021121011120111200101001110011111110210220001111220201210122221011011112', '85808090717084077750326522417981797898295448342990', 3); - T('28f06cc7ea7a819gf781e895a2b', '1080002582657621357238123894492239', 18); - T('13da1526049c632g88525c75dgfg2dcfab7c2f5', '69930158209361480953961939859540779534596389301', 17); - T('e9e51rloqsmtrleng4s7pq0jarfl', '109166094703871534700120128616442419684771', 30); - T('34216063', '2979343', 7); - T('6c063c35cb81dadc43adb1', '8034831935878348183255023', 14); - T('989164hdf9b51geg8624chhc7g47h5377ab71', '14664682513456963530829234223873975820816166603', 18); - T('145241986', '145241986', 10); - T('122551245377370372510600247650271544', '52420971115555265131642802500452', 8); - T('bba7aa6155a3014', '46889782002517822', 13); - T('3deb3tkkhlamh89ljpprd2', '36080909083483453648852421649692', 30); - T('4120104313404000512310', '92641744056051474', 6); - T('4fg', '2477', 23); - T('1eghg93c74j179gg56dd045id2ii86i', '1870702929919246989271587432599881427338', 20); - T('51123225122335422566204631400', '2378354862895607406604402', 7); - T('13577', '13577', 10); - T('5kjbqd5ilhk6rsthb7aok056d3rm', '104710675709925942718275325006590464848210', 31); - T('1l', '47', 26); - T('g996104g1ef15e13cg4', '232909810115697952226467', 17); - T('5dpcd6micqpf7c3rf', '2351027610634734415497525', 30); - T('1q3r03saf7da72ogme3qsgol0ka', '1098670850837387299606462566653196917356', 31); - T('6mabf7a4mdjk56265l8kka7i2j46', '40764485063999108303947012898651625672', 23); - T('711265667352525777055750103304054072', '289883291844318827546712512419898', 8); - T('181ah327cbh09bbdbi05gihdja3a6766cf1c89', '1929446677883376438181941961611633360059304812969', 20); - T('683ao9qhn91f6ifj5ggnm48i20diinqama9', '330737041385586113625862339185409951588553481122988', 29); - T('4z82fjb9rvrg0sfjrxoz330j2j4wym', '6758750673748428599831923455366157745143999198', 36); - T('19218eb109', '1706298801557', 22); - T('1xteget9vm7rmvt1qeleb', '8506448668267622326601389463723', 34); - T('3i33kbg9cqg54jm2dfa', '213466100023939044330506035', 27); - T('215h8f51db257ael57', '289767309771867327604947', 23); - T('10110101110101110100000111010001011000111011010000101001110101111110110001011000000', '6869753008454091059192512', 2); - T('58e', '3602', 26); - T('659874ecb742089cd0f2fc72a2e912d48334f2d', '36250497918673919606249316600592246963107483437', 16); - T('fecne', '6086214', 25); - T('5kbn62hdf7wmwhk67dqk', '701711736487352936694557071892', 34); - T('193418768773292279686a8766bb', '2041543002021168521235526438842', 13); - T('b5f7p0qqnmk2h8qfjhgmb', '475042274550491463639138392813', 27); - T('1okma06a16bp4ingkgf7o', '38938334164376358043955589354', 26); - T('km3', '11089', 23); - T('201', '51', 5); - T('2e4yc5cjy2hj9jy', '9951741372023452880724', 35); - T('13001304414442041212340', '3820949701507220', 5); - T('2ie2bm03mioejrh1nd8ihi53hjj3bac', '196391064504813821616820420047441343526039222', 29); - T('38a179006b409b755426146692007b083661', '220736472532747947341118345018618875881', 12); - T('52eofqqb0rg4dijj7oir56gr', '9803633243543859078443703279727611', 28); - T('10542528849006a4209977a245a6670844a65893a8', '5200046241474102735966912429570012726348257', 11); - T('301222300033320033', '53330640399', 4); - T('14k461i83b0kc', '71064921466188012', 25); - T('11101001010111011000000010011000001110011111110011111000110011110011001111011111101111000100010110001110100101', '1183302363719122225851040665789349', 2); - T('6aim7vpcb6nw0rtr9x74xowefjtnonisji8', '198480536455893007753383205691175236273156270478363788', 35); - T('44957146989902980426789317', '44957146989902980426789317', 10); - T('110205b4b61454d4b3b7803c', '246154487751049576297182022', 14); - T('14ogjsp73do5', '14239859065452217', 29); - T('1bd0nkar7jlf3bdp1', '349044193281529358817564', 29); - T('5eo6ed6nmmcoc6qdh', '442845139356014267015909', 27); - T('311000312203102002211302220033201323322001122212020301110332333131233222302032', '75663136060016606687972617399235327868190764174', 4); - T('e0ji5u', '401391626', 31); - T('1424357303022501420341156201', '3723432687881212284689537', 8); - T('1ot26r1r25y6jshe21wni', '13008118169902415707339281796648', 35); - T('1i2', '1685', 33); - T('2fjhc5hif69dg6605d171eb7cjc7k729', '1122293919180819662380020426292955339311361', 22); - T('386587ngd3dnln', '33687830964706424608', 29); - T('6535', '4811', 9); - T('595b11426b9c0704b17689d3b6', '255251373547377701279623680212', 14); - T('6237m485ddjcnieokb4nc7oij2fbao558l', '82471258057252969989346717428147198122909847096', 25); - T('43440d004a624a9aa5215926d127d0cd34000071555', '5812346158873879973339574652454563446486067283271', 14); - T('3ml01ehme4niee4', '83156933475485244628', 24); - T('3dd0foql9qr434', '22633155441925307864', 28); - T('100011010000101111111110101011111111100111011111111000011101110010100000110001111000111100010111011110000101010100000101011100', '46870857086354303302378526158318027100', 2); - T('5dd677042ad15hda283e0e3h0ci920c91', '475991049360626890704302602104214715388328', 19); - T('2484222523', '987550482', 9); - T('1o54o241he2d16m6fa2pl4n3c65gi4', '208907464043630568560284375825261087372160', 26); - T('1014120211123113242013134132412222314312433034232212101102023124331133233', '227485273039510873413178482785035220246188554161693', 5); - T('dm5lgtvb1p', '481781008542777', 32); - T('8gq1c', '6070379', 29); - T('2cj7llc4eg8f4k0higp57i4kgce48k3n5a6a', '83230479743519414484378889869266300543737457886886', 26); - T('20', '36', 18); - T('ext2p1il80v9lpv9ebwfhw3pufedgesl0k', '5185280930874834437412210154592858661728459849547240', 34); - T('268732c65576481b112', '282507652502544897001', 13); - T('2b38484aa35e0d64507ca723c15933b9b43', '26686868200702243883872800111367217352288', 15); - T('43e48jkmxot2oy2fo017sfk72hnevbl1oo', '3687542753129712107602138468735370587663145861696839', 35); - T('ojudi704tha6', '626181160658812467', 31); - T('j5', '385', 20); - T('103533241255410240323255355232043144540505', '88966569636637417158897456537305', 6); - T('q0l7j2j7r0p6ae1baf6s', '563916309957339378866464786934', 31); - T('5a7c53b2', '364964095', 13); - T('1fjne9il8lkg3bh', '103626865036283572091', 26); - T('30d7de9e033c54b451c6d3b51ec197329a6e0542', '22557901127642576391477860038224820219603000562', 15); - T('20360161522501151310214311356463136125245245560521232311426', '21552877623292541132456573250632857116774507721475', 7); - T('512350542042531015303442430241435053151310231500225235203315045314', '1991453522210060656872676051735126305923083736859310', 6); - T('21121310020023020001103220', '2646808142550248', 4); - T('9gf55f6rj8pd80r431be60rolg54oeqe', '20665197735276350815418661624870881870158116448', 29); - T('6di7fnk1ka03ho5bmc43kld2de9', '106858530460627601101778247911433225126', 27); - T('14d26a4b3a267', '8975609863073539', 21); - T('28e98e7jc72', '98390517534444', 23); - T('95', '158', 17); - T('148b9f744h78h2b8h99b', '884510597649896304807737', 18); - T('1136025406614a982932a2414233036646a259314a9690', '81653801636548512093768636534022656649699507364', 11); - T('18b51h64hd398a', '30802810305582406', 18); - T('1043243232004324343', '4534554761223', 5); - T('5k6khbk8qmq1bd2nr5j7162d3dhmogs76pa', '2874134176824005398775676217605241490607568199781842', 31); - T('e5b9vh77mseismvci6a', '30505084481497262094146130166', 33); - T('544622661023252114032553653430635012455640216226', '29737930867189529595998234535940410116741', 7); - T('c5g4m06c48d4530a409d4', '49190458509627322489392813436', 24); - T('2jb0b2bnji', '10595811514868', 25); - T('1001011100111010011100011010100000000100011101001101110110110010110100011001101000011110010000101110110101111110000000111100000101110100010100110100110001000000010110100011', '3536326453156193038031587123790239903142359400187299', 2); - T('52bf9ld84dbblg', '1446598246008687106', 22); - T('d3c5daj8ae7il', '169193485055337357', 22); - T('101010100101101101010110000001111101000100001110000011010001', '767218737556283601', 2); - T('1437', '16207', 24); - T('114133340123233432103120012420300414231232242043303433332031141324311011321', '7273916554967523346010893023640093442791484794235211', 5); - T('cdemrp1q1dfo5oaa9o552', '29104534648610198033358963191135', 33); - T('hn4i0bh3lnh22dbpiie6nbnh', '34333773871855985124318946939651717', 28); - T('10110110001111010100100101100010111000001010000111100100011110001011101000101100111001111011100111001111', '14438492881715694934558943721935', 2); - T('588', '3333', 25); - T('51adke15g1', '6117745845773', 22); - T('v1cb8mieshuc6gua3nbswk', '2402909063962783729496267888203295', 33); - T('154ad6bida8ch6350198e231f0i5hi7f94', '2016744827456637173074923253636234179984684', 19); - T('4041103013000012302004', '1988313720822129', 5); - T('343231343104143200023110332242214210120241412004213422100041430211002422', '166923575124772514544128066112153498600774395406612', 5); - T('b8nkae4j', '52169931763', 24); - T('102400633554632', '713852464334', 7); - T('15230012004363225000152043112', '811351549236281156826172', 7); - T('32221779b4b37b37513082406424450aa579a2a8834a', '80810046681505916793845914766512942540525426666', 12); - T('2kmcp3r6qs1g5p245fqb0g8qa', '340045012651728420163296954517156597', 29); - T('11110110001010000001011100110100101010001101010100100101000010101010001111101101110101100110100000111100101011001000010000000001101111', '20940687968317900181954981756671243649135', 2); - T('10b9821c0db4bcb045262d98b761d2117a', '70367656624653783927494922061307165096', 14); - T('231032232010133020300013323031302133220331310111301123312001312131321103331330', '64554409692052210685332500753625976302230388604', 4); - T('1dk701j6d4baf96bf4iib1', '25341540144182484368121637707', 22); - T('4edea9ba4', '12802842379', 15); - T('ciffbbda77', '4192099035923', 19); - T('3bcb854a520', '1113967604288', 14); - T('1768433009ba79273507849b37b1949a0aa91', '1155230524818144260160287806949250060685', 12); - T('21', '7', 3); - T('12', '15', 13); - T('a3dd53124a00bbc3a902c2b7c02', '6479682616939747273872424224938', 14); - T('1rn0d8s4ror38g0bsimk', '11952637171366777777073055104', 29); - T('2eg5ag969k30e', '34322046314733994', 22); - T('df6i05bcl', '2837296447201', 26); - T('d6hbff561gk039bm', '67475093532951335800346', 28); - T('736135d12de0dc5197046', '2403172999591697203426191', 15); - T('1917700k7b0798hlh7fj1a3l158il8c9k78fgkki', '31935326566626088190275112296683968556264917574568138', 22); - T('110442', '19434', 7); - T('a4f9451ce43j', '2096875845233679', 20); - T('10pc0lrrod1ng7813ho6f1735ni4856nk9og13', '362001328932031510264970316722642804830244524894241823', 28); - T('340', '95', 5); - T('2', '2', 12); - T('jfb98e91hdhd146', '730834824992077156981', 25); - T('2u715wji0ksv', '276409078243593011', 35); - T('p538go6b3sgsk2q05dh8499n5lg3', '76866731395524797035264473788165190998742', 29); - T('10210322121301121330021', '20128796614409', 4); - T('czprbjnb6c5va57wfojodh2s1b2phqt', '634971610203428324104731270997646500012871287829', 36); - T('163351146232500134562615331', '18110985379078188834196', 7); - T('6e4129jca7943b106ib8cfjb1421', '900619828463523710649738973182569641', 20); - T('23230100001012100222023301223332133121311333112211232131113120312132203001122302001022200', '279953661912858509028227026934672011374168514476118688', 4); - T('5jgr1tjenanafmgy02av80a4ju8nsh', '3332563710063599538714906051740573308676056547', 35); - T('2a03a8a82cd13dc18b5', '12400430345351117674677', 16); - T('11000001011111101100110101100110', '3246312806', 2); - T('29a449404373294192348416192a795a064a9', '89775465256863804086218230386927370554', 11); - T('68e76kcjm1afgdkmkm', '1848940629085999196683126', 24); - T('2kbe3faaf7iegaa4e9b4f08a933fhciljk', '2501181635047310570015074845876633642933551437', 23); - T('12344hbfe6', '359536823591', 19); - T('143442112', '765282', 5); - T('4a081317336a309149661ab942', '4615291648867282664377427330', 12); - T('3jkk8128c64j9i', '1104902507111910404', 22); - T('amo9tdefgwuecrqta7jpqfo6kg6jaw4', '223524633732333732706172640317287185870223150499', 35); - T('21a58a0047a1884514880231963587a9aa5266571076574502', '2324252250359662008081886857169837234726499778719045', 11); - T('2eg7g43878ag755id005efg87bhi1ihk0iggf9h', '474575893810580165151415734655919630427242773838537', 21); - T('1253981930', '1253981930', 10); - T('84f646c', '281267112', 18); - T('699224148127737506438432736786719976879926194098083936', '699224148127737506438432736786719976879926194098083936', 10); - T('130587969810795743976151248055472770225248488', '130587969810795743976151248055472770225248488', 10); - T('7287697267041921400', '7287697267041921400', 10); - T('12l', '749', 26); - T('2blo1glbdeillcf0on2mk14h', '351738590084565988788756864375742', 25); - T('49mfphl', '3828465983', 31); - T('51147130442424172652616112', '194568628606971297864778', 8); - T('602', '296', 7); - T('g0fk7lla0ii5i7i2g288eegi2ke45nme', '347493304922004024159457621489970110001655564', 25); - T('3427410030517411126776423004072314', '2247499600567123820908846806220', 8); - T('11c0b422813e46a0704286bcc78e9ae64a4aac5', '550518894687870908612059469029958777652379310', 15); - T('4mgrao8bnjmlfprj1g5k7o', '11809356002610908689865424701148', 28); - T('16602427320624026652410144225431222411', '4788262207154170686928960302163209', 8); - T('1133922820054976072a26336240128a97', '25979311751316593865740595613096134', 11); - T('111130535130440515255305101002545525104205242311405241', '209770118829200105874769377203607523817689', 6); - T('33410044421301', '4599998326', 5); - T('g85cualojockutoj8l9i05fer', '10090207313826743038498352382093951180', 31); - T('33ed24501e0ba9a810d3', '72404567612236270674198', 15); - T('577nlao2jqemfps13laqti6av4o66', '7284410453812369054568448091009770033668294', 32); - T('51380825345112415250165068281324', '1968364002188078831430803112511', 9); - T('837101b3a0a907711987672759a2317b079', '40850603036144384752073171952853482909', 12); - T('1irpsmnr2', '1070073795512', 30); - T('bd7f3576f5875', '13588639558671227', 18); - T('dd9h4', '7171636', 27); - T('26w41a77diqu8', '5260279707492571244', 34); - T('46144610334425521434631035561707752201423', '6346533567879985413095577825858618131', 8); - T('5ba89cc62ab54', '137675765649465', 13); - T('131534626543730752048834', '11992216206430875347086', 9); - T('dl6dc8768f1ig42kh', '168255534771745044094577', 24); - T('2eb9b59115mdikbhmc551dchgbf5', '143119111508435191417807312784059632255', 25); - T('cssbedntprq7i', '21473268174365747109', 33); - T('392s9qmrdqggnh7m1', '1421950054322530991895961', 30); - T('3d235be4948269469821ee4ee8c659e073caa436488', '96444901326379451008420429583243171799035293288778', 15); - T('c', '12', 18); - T('161162230b89b81068276b63888013a3a715a35b2b47', '38295121533792138694595448876904917585402510055', 12); - T('112012102101010200120', '5501676750', 3); - T('ojk7jec5b56ijsr3fao8', '286565314487033509494400944728', 30); - T('2a60j25ki993i6cc960ccadj92g11fgc5', '5095635099989024533935083494179547954150889', 21); - T('nahoipcvslh8suq2qgtvitg4', '969084134162426052646973641814799876', 32); - T('c7222hli0l3l6244945dcpqh', '10231322180811816357229624809826769', 27); - T('3244223102234410102002134323340331322021444210142314143403233432', '389884100489780930202190481841298604587555492', 5); - T('7327ef47l94j3e8', '2114488657647112742209', 29); - T('cf9g1dahcdaf2026h91gh8c73d76g5ca54d', '61466270199599757540795294611578425158922457', 18); - T('7f4h786d247ebca9', '52952122599419205189', 18); - T('4302014423242240001311214131403014', '537446950702717645184759', 5); - T('8ch8ff6ik', '325689693419', 21); - T('50gg86980m5gom1qg', '2160248255368559193835696', 30); - T('20122021021102112201221221211122110111121101202', '19615481787418378846121', 3); - T('6214216998763', '6214216998763', 10); - T('k5edi4w6y8rpf4jbd01k8i8na6v6k8db', '14807562688860562973809761754715067179928180924641', 35); - T('g4h', '10937', 26); - T('0', '0', 30); - T('ac7a273b', '1851111506', 15); - T('2200123440245032334125041530555505552', '24078438391794160644374978732', 6); - T('1130215551', '157358953', 8); - T('100144143000316540003233550024603', '1109765702355719674747590391', 7); - T('30441204442400', '3899296600', 5); - T('113695d064b657b6e38', '1599024751435436052203', 15); - T('6dehkk21l55bjnoghjefaqsprdf59cj4fjdi', '9875112479907817915333605507323858110862750123273684', 29); - T('141606qhkh847fg0', '5833789314492474260464', 28); - T('2chgdbf1b3dg46dk4ebc70b0g9j3f8c8lh5aei', '120675412358469616349928651160190450670575079622934', 22); - T('59agmj6uku8bv289o4d8koni8aqc3vqmc40', '165870499545712369328916058056499539367750790670918090', 35); - T('2rbcn8lum', '6261797865422', 35); - T('22m3v3fuu9emp5jna', '4116024592593979746814825', 33); - T('366121646421620330410', '317849044022280631', 7); - T('2116b48', '6253544', 12); - T('25140718474428175265303486', '1847517948365808950428587', 9); - T('4598i4c662g8ca070ijfd54cdb6', '28679737685086326785443322448741426', 20); - T('1ao6m4o89llpgdc82kd9h9nrje9kph', '3527082557153952794613151020059372427454804', 29); - T('32jnm0mmb3pssdd66an', '650845857248237485135874915', 29); - T('111100012000222102122202200200101222011012212012101112001210212020000011200112121122202110', '4312338675736411168834113479404731768937986', 3); - T('6112004b71a2b5434b77703651a347642a93b69b8771', '154708197486329491948970688330686826353013326149', 12); - T('1042032441303342344224002110103322213421224333342', '4182077882904105022063063694371097', 5); - T('29c68h1c7ede0jd09dffg0', '5202625875782390263071006320', 20); - T('1e634adab5f805f52f70cac738dd261d7d6', '165447251922571882378062853693168471365590', 16); - T('3jgalil961', '6947464731518', 23); - T('1214401', '334081', 8); - T('54860130871146444', '10286973227136298', 9); - T('1030533234260', '14720402858', 7); - T('100aa3e40361hfha8e248bfbb09h20h7a6c79h26ac', '2930615985226137047162398456800365754016041083603160', 18); - T('43591767393031052388336018446089607834282371433', '43591767393031052388336018446089607834282371433', 10); - T('1a42634db3a398440b0d143640b', '1093389394637381321001671261403', 14); - T('1k92', '22956', 23); - T('7ovd36cvh0mkqjfvfnuvbsq391cn9', '10844675681652928114870191782873626527707881', 32); - T('15g1', '15181', 23); - T('67b69b71b1717', '59413996339651', 12); - T('30j57pimocqtilogto2d', '35115475354624111874465964673', 30); - T('2d0b0ae2b685425d29b0ecb3b5edfa717cb1417', '16071927572096392119675195392748578598193665047', 16); - T('11', '18', 17); - T('112001000110021202210110201211122221220112122100101010011002100102020001020201000120001011', '4537785058981363374616512422509774739280043', 3); - T('50ab6141b78600b83b78b88348b5a05131a91a', '43175432477484073434743334087258618678694', 12); - T('eo9qocnoj90bor40al4p5479b7g4c1r1cb31', '6650244100026164587107322943956581111894985709587461', 28); - T('2ad3kx1qktnu3vpnmo2ao6x1dv4x7xg', '20282628012647095397816411972962059191966263670', 34); - T('222116623333265530440631564017304', '180929743300409204225159995076', 8); - T('dbbg6mlmj33n0', '492243480903801576', 24); - T('2b2ec06g3877d2791928b9ffd1746b', '1280577379796462921259686563546353143', 17); - T('102101102211102021013144443014440303124104', '49494259261254501284171145529', 5); - T('7a87c66768a00656e6143d364', '606741009919509661621760021348', 16); - T('47767235803614822752211551670476', '1859353386668959678249738581726', 9); - T('1', '1', 14); - T('4hecd739h5679e7gd9029m08f', '2289177364521402481927372413403470', 23); - T('6l3bh7f6o9gknn00f', '159385341670896444890640', 25); - T('5e5kjlkvo5unf3dtwmmqrvik257j4w5w84', '700990942006311373479452989797165256937719202881105', 33); - T('201', '33', 4); - T('233203422520520454251431153344153122212110131402224331', '452721388389843317258206375087014173893951', 6); - T('14n29lgjdc4rim3ornkjna8klilg59bdka', '668735111660092455694876539400574336368551464522', 28); - T('b', '11', 20); - T('oq', '722', 29); - T('1', '1', 36); - T('22421402200021542042515102115130343415021040433015141', '71435842509809622557607232355007569617093', 6); - T('82a46ca7f2c27bifi76b123gg87f9ef0i3h6d', '88188580584290016425414330488192929012692460292', 19); - T('cwvsjk3p2hdtr4bpc6bjsc0d2br4l00a', '3879212286333054912615124824551633983865683141266', 34); - T('15g8jceb9g0402a30g48a8612', '21661444885578056193556763266422', 20); - T('25r', '2509', 34); - T('2288', '7328', 15); - T('15005456104534360056661132626255212535602123', '3748858381866343201840235184540881558', 7); - T('7lld', '96774', 23); - T('112a8a77b453749a7996396a419b826b48a67', '782118792606829649781720121593080718319', 12); - T('574b3345395446ab3a11a95127716a973b22b3', '47781483264575360443895323857628984548903', 12); - T('10ae515da0e8b84e1e20004268c3d939357e3', '2290518350084555998421706774896373302739288', 15); - T('a8g9b05eb591d3fg16eeb9940', '14045662689555135928086001793700', 18); - T('1fi8bk0164hkb0b5bi61c', '2894983804002405037438210044', 23); - T('4gg7ww428kg970rxm51xcpiergn2utyn', '7841808545231879066984143936817455941346408116527', 36); - T('10054403136531256244562420403101530', '55009081778931754371153954089', 7); - T('312202102122120111132101013111300030323012301121312222012320000011', '4639388111541284305176062560415061344261', 4); - T('oo6wsed7h44idu7atc3eo5tebrp2bhdp6ok', '105381163294233046110304801048710957853696204404133202', 33); - T('3skbj1l78pv7i', '4490496804454726898', 32); - T('7975t25qbm14rr76', '275342913943535946165478', 32); - T('8jdml6mamk5l02a0b5nh4c9l14jhd07f3', '16642540390807604641675529615883877432380047157', 26); - T('100000110100001011111111101000110001111011011011101111101001100001001000011010001111001111001110000100110001011000010111101001110111', '2791627903658830465325077767573756541559', 2); - T('4cuiv1vijcw8byyvt91x1yn2bk3', '126777211099543650145997525057934330115587', 36); - T('1pb0kr2su503t7vfb5r0gare3o3k', '78053133845809892830118124009511471669364', 32); - T('11011110001000000010111111000000000100001001000010010101111100110101100100011011011001010100011101000101100001110000001001010011000100101010101010011', '619196159474080554644191332764720245730596179', 2); - T('1oj50', '891774', 26); - T('6636451124501446361531', '3875098321019619443', 7); - T('h6n02q8h3m', '250019766843768', 29); - T('451ede25d199cae895e992118130', '246702729069387709295316838306020', 15); - T('gc2c4lrbids9dvjt', '618717800012065820573309', 32); - T('o0n5g9lnkc32u4', '1948944931869490633248', 34); - T('ug5duads9tjl9t', '1125447236183519778109', 32); - T('6dn54ifdh0j8p9468dkoc33h3hc3c5cl5g11d1', '594648027170439572811905861146439260035602841911119099', 27); - T('gm5aek', '134776292', 24); - T('1', '1', 30); - T('0', '0', 27); - T('43', '143', 35); - T('lm98d', '9989473', 26); - T('24ca595ac7a9bgbcc7f4g861afc1chf7814a11ae0', '367456433495521438883185813377166029060518959081788', 18); - T('14660314530440163216346260243553125625015065133254552566', '51735077687650277604403201198662868237459984412', 7); - T('510a75b6953b2128b51', '571468653948337229839', 13); - T('2j8', '1394', 22); - T('11111111100100100000010101000110100110011111111000001001001010000111010110011011100001101011011', '39547602794153772246742451035', 2); - T('13d11h1lm539', '1746352709861265', 24); - T('2j3h0n5lj1ldlgm2jhd3o28nl7mofb35q', '17234505762002327507626042985478124525535819504', 27); - T('84158ebbagfd4fc814e8bb2l53gf2ag', '153343999117336060540862649308280733262460', 22); - T('7g909e76cdeb0321bhi9c21dcgfeacd2i6e3f7806', '11116275700830490343102710037586110243685725571804348', 19); - T('ib264o56m1n', '3790551468077834', 27); - T('3qe', '4366', 34); - T('5p', '200', 35); - T('3130233402005135513010143100020201', '155289768167720086146598249', 6); - T('1001001001110110001', '299953', 2); - T('16fomoru8scj8qi6', '45444374663984422611526', 32); - T('1002212012012122202112020220212002111111020202102122110010021100022', '34175452783248538685342138607785', 3); - T('27a50c6be781d23639d548c74668abe9e94be3ce22', '4167412892319939194840854425277338372039201983057', 15); - T('88a3780da4dbdd289baa01a811bc6517a', '40906542215241584358490557843916640488', 14); - T('gqbold9ds9didvt57hbb8jf', '21838794139140707774087244457288303', 32); - T('10b', '452', 21); - T('ihk', '13601', 27); - T('26252453157610233727260203', '1937319065301154692119358', 9); - T('aa9895782cb87a165276477c', '452046848974584515631452537', 13); - T('798233d41bd4d8570a55253c47760375b8ad22', '19604340805420393759398902048029147177522210', 14); - T('2fiq2gfu', '129071446540', 34); - T('1400512', '185131', 7); - T('1b244a9ba6227462680836922985195', '43502077484194496821773474699946943', 14); - T('412011433400334101043320401431213340122122234301220044344341432211331132312', '22669905856359456126837986263860586893462278431114707', 5); - T('99jlbgcbm8l', '895669350576471', 25); - T('2160778865276', '617500413969', 9); - T('4619a48750a8a1388433820', '371293698754379801044722', 11); - T('23b2a23b8ab1171549b81a523924944bba2b9451b979750a1', '14712614649874115297808648378077142784658853979174201', 12); - T('1c9aa', '56586', 13); - T('5accejj99akk1ah', '34098874640361347185', 22); - T('20013312310323123', '8721747675', 4); - T('7f841c807c4a4e9eb32eeg4963ai78888ff', '234637522959956493197663705686912406112573938', 19); - T('32f102da079f77cac41', '15035262184397547023425', 16); - T('1o', '56', 32); - T('15567437201441347355454544146426241554605511544026607651', '80286234176563111847045853769570753921004267573161', 8); - T('hjn18i8mqcbprs06jgfr5q3oo9bck', '1565631049924090657943692422085174312230242', 29); - T('6j62l6sn11', '305449793742193', 33); - T('1a92b1371017319959b372ab60ba2294679b45215', '27889304114434174647327312538513856310180593', 12); - T('5839272560037068796091105463956029620211063950', '419776982872392388414731107567819482106312014038', 11); - T('6', '6', 20); - T('2c880d56k3a7li582622b5imekd0b', '341027304272170248894809973045388788348', 23); - T('10100100101101011011010101000101001101001100101010110111110000100000101010011110010110001001001101000010001110110011110000111100010001001001101011010010', '3673151219411926241066396539539895097311402706', 2); - T('111011100011111111000011011010110010010000111010100111001111001101110000', '4394919723391067681648', 2); - T('4aa5', '13081', 14); - T('2opifo52o8q32g8maod8l58md725mbrbd23', '46158568616582718889447630456685730068082636613195', 28); - T('418j32fja719d73155', '53377690823861098744505', 20); - T('20144632610464350', '67599832991439', 7); - T('2kh493991i0g7khbf2f7kck4i96e9fh933', '587461139271908422337268964350415471317511729', 22); - T('4a2n9f06i8b3tbik3ge2hl5jb39mom1hrcp', '723192498587288435855105790107635409475143071893685', 30); - T('12113303030120222311111003', '1793522922116419', 4); - T('24077', '16108', 9); - T('4pjpv', '6350789', 34); - T('322311323221313230132232233002003010013223213212310021203233123120002312231230', '83983092135187210616217933394923456110667721580', 4); - T('29f4d7g5ch1mjb7h51f7jcfeg45hibg', '612063586663379541382996507678741140541336', 24); - T('10pek1pldlia8p6oseke4p57cgqckj4g', '46807350154418933094997050205656695831893003408', 32); - T('e3cc8jmq4qfi72', '91829383300393248806', 28); - T('13c11i9545i088bddgk90lfe', '8722694663106063748286842646172', 22); - T('22a42a6856d282i', '24416804218738314558', 23); - T('5j5dvvf', '7207343895', 33); - T('21423087479741957663258638136686693560b0717', '4470867495087534207987102294285398093469949699', 12); - T('a440f8912c06198b', '11835733123122207115', 16); - T('7124732', '3795770', 9); - T('1mi6dae6p6n18p51j94pe7ac6dcngk94', '433566629754475119418916772536421104644424677', 27); - T('1f4792hbih0e5', '3987607350745668', 19); - T('1110011001100111011111001110111110', '15462167486', 2); - T('1eb01360e00290e5366a042b85', '500540389147064575524034196225', 15); - T('600196957607397725519151670801466183229598842', '39767779963727744076832805419657145468053323910', 11); - T('1pfswthxe5tqbubhjjshgvdkiwf4ryitg', '44414159361977485248499214227052721453325811694581', 35); - T('3a338ah6', '3159952098', 19); - T('1a41af5dge63cdb70149eagb60df978adc19d', '316909217417428222992238303166579153231020418', 17); - T('c008c78c61addc8e085ca3ff6e76fa13', '255257360887256236558111057213476239891', 16); - T('aigg730gb9gg5b1i9ggch147b34daf4222d', '330203157939216599297841920141628505752777778', 19); - T('21035126413112020231313', '8420857150186478861', 7); - T('21011110201101001010201', '74954636299', 3); - T('1043686460506176163', '1043686460506176163', 10); - T('33ob8s2ob4abipqpbu7oq2338r2ic6kq4s', '1075138754438632694426396913632774320113838381374220', 34); - T('2254120142306727111645063565', '5648689955684980442294133', 8); - T('4c65b28hg', '51641173186', 18); - T('189425b6', '62046426', 12); - T('202222000', '15282', 3); - T('2ix2460e7mc4yrfsyx16urp79', '29019140380746084875089897645108901004', 35); - T('10001001101001101101010110001101011101100100001010101100000010000100001100000010101001101100101101011100101101111000110110010010001001001101100100110110111101011000111000110100', '51501613866007552548575243188268697652335512286236212', 2); - T('72bai2lh5a5ige2c6h8j1pi7do6ph8po', '518863311245070128162706172824537578926308538', 26); - T('1gg4e12gmdd9g34kldbkff6g', '36045469172509506032689305574493', 23); - T('1d849l7924g24ge5k6k9nbgik8b6625j4', '228420120550953130629950010012173053917911308', 24); - T('7f2n5pcj', '317806874668', 33); - T('203252000343611312345016732574324517652170570536340103164002', '393097177469022242668976094291182082270851391919286274', 8); - T('10c509a15ej1c8h2ceei3dh46d3h2agd85j6j7d2', '566593718328820186671679871086974063112535421915062', 20); - T('0', '0', 35); - T('96463a781475552277b', '253758635463416758223', 12); - T('20101011102211012212200010200011010012111102122002', '508627374341025984624677', 3); - T('3n', '122', 33); - T('1332321215012153105302330', '7558638818512137102', 6); - T('d78e53g7ao', '260656990368624', 30); - T('10433235012112521331423540541', '6924859979187917170861', 6); - T('jregrnbedbqvdh2kqlmuqwtt7o18ua7m', '2351190601646006071521498616875161108543841169408', 33); - T('c6ae909740k7fbdhc61b4mied7bhia', '37961155295368021280681243879680158633940', 23); - T('1b04754391', '9903375901', 12); - T('448ccx0p3cjbx6hwiqa370ktmd3645', '1067333585305947578398968392489544974864772877', 34); - T('id', '535', 29); - T('3de2', '21962', 18); - T('1i87e93lld2hmb5of61481a1p', '37803177566866222246047503937156379', 27); - T('1d50bl1bg', '123317230093', 23); - T('ed4fbpym9a02o', '48576469025418884469', 35); - T('850ahc19dfc6cag09c3fe1a7', '615573849475122469837759021759', 18); - T('2924844413578201a144433a54311938093312874', '1284588798112331415097636284287592444342524', 11); - T('268spn0x9rkgrdn9mq', '386669665422099248737174821', 35); - T('5hk231k5bacd3b8f1', '8376132966290213466637', 21); - T('1p8og16j01fia6lc9r6k74336b', '2875139523028270878045249857146557219', 28); - T('esmq', '488154', 32); - T('5b9gb9b4', '56701257988', 27); - T('c9o3l82q12ep0gpa9', '986427541756225676608461', 27); - T('55388688a120a6849aa3', '1738783465109452015323', 12); - T('11649c762', '4668901218', 16); - T('1', '1', 25); - T('183c9j7k2e6bcdej9h', '41731318811749061211776', 21); - T('1101010000000101100111011110011110010', '113828412658', 2); - T('1103200032222010132222130123311033221023310310113', '103372423190590343441776856343', 4); - T('343', '938', 17); - T('340033799252741465289305518413058425050058', '340033799252741465289305518413058425050058', 10); - T('4503240112405112435055530202225400044402200153042', '108877380126556039702448219236071909458', 6); - T('22410502071700760126344737773405044556536263663106274741', '108249648375668138579864767958324372334698552719841', 8); - T('60471', '39754', 9); - T('jqvj', '712159', 33); - T('12b987ca3bc8c94588c3', '1788415352163649686935', 13); - T('1f4h9ih4568', '44931985848560', 22); - T('118g069313', '214821890121', 18); - T('2vlc0hrwcjqk5qh', '17671005276271615582217', 36); - T('1eaccg8b2', '12979996198', 17); - T('21629b2b0b4a2366b9163b76b5aa3799049393531705a11', '93332007302941381029153257858901257592873163524973', 12); - T('100202010011101022120020200002121112102200011001112000', '20987916954361515072077661', 3); - T('lf81l1k4di2h8', '2060202423101314474', 26); - T('11000010110111101110', '798190', 2); - T('35464780031172685830831886', '2594420148586517707211619', 9); - T('mjmbe1m', '13491665179', 29); - T('e1q8siod631g8jl8e96q3ndsua89fepgeaf', '7149422266506896025400459577722689166265236529840392', 31); - T('an8h5ufehm74gww4pwj33cwlq9nq1niww3k', '45609180326934639552795902886424593721591572949928264', 33); - T('1174957d27585ca327c392a177a2', '9779753057084979308662475538114', 14); - T('5qsfwtg879agqymabikny', '43877513087409382241114364600839', 35); - T('2202944b4c47910367ca8013', '89983147789156215799431229', 13); - T('448cniclj7j66205dnabj7jb2gc2m', '1850318014395914995109265267767209237318', 24); - T('444240441312131031044040211011202221', '14501598914208195910256561', 5); - T('1qe2prgrs1k', '2056183230623796', 32); - T('12311306121012324000412325560306516', '73082607480360333686565698116', 7); - T('39c4641c46b27b205a771ac', '12093715273566107607445694', 13); - T('1dhkkglpcr7ffd7wbebr9w6d30tegw', '153518783138820389818290476576072446336105598', 33); - T('9ao457cql7l2pajdjvbb', '1167566332972029419259805429445', 34); - T('bne906ag9f7ibi0o2icoochhqi49linbfe4ko3', '1083840512907384568109778905809324323571508451103168731', 27); - T('27gkfmsss', '1131180526362', 29); - T('1kl14jp0ck6e6b874a9', '53073824937278508675447573', 26); - T('1qblmfnmbc', '15092289265620', 27); - T('291145005283226378a15', '1902201869880961210864', 11); - T('98a3165430386919708314a69668019301122aaa08a8a333a0', '10471562781280726876191243734075742375342072600357397', 11); - T('101001001111101100100111111000110000111010000', '22674826617296', 2); - T('11100101111101100010000001111110011001100101111111111100000001101001011000100101000011110010111100001111', '18219421810715473011424793407247', 2); - T('5012045354154511564663311145062010640462551253626443', '63280196142241745046302922172418725133921298', 7); - T('d5ce0d6e6egj51ac8c4', '8369782607667375206621824', 21); - T('6051440330403356333004250540', '401296487305318979784424', 7); - T('100110101000101100100110100100100100111110100000100010110001111100111100000011111001100110011111111010100100001100011000110110011111001100001011000111100001000', '441143871171700310794467845617284706136179969800', 2); - T('7b57878058a56a65', '122576051834583917', 12); - T('6497912562474778656b110a8103302a371071056', '94070129616506972086443616132039643483737602', 12); - T('gdjdxk185ppgrwkdfct', '101796127731034217658663835574', 35); - T('1178977c0a6405a2163234a6cb718024c74312422b4a', '890596335029491966141847230958764595731490655195', 13); - T('37088663068aa806731063a736661', '525351225612561927340747775978', 11); - T('5171612706118415272715060137148', '220427209875590734018941429974', 9); - T('3hml8b7kc1p4gm2hn74hhd6o7d1ll62', '31952120714648933153539685420949059951111594', 27); - T('9je255g', '852236590', 21); - T('2044434433132300230220130303341220144143144304323233423021', '15263322484434834405567371553028493264136', 5); - T('9eeeg985656bcfgb5133b5eh5e4a1', '1380061401736935644143449342352895269', 18); - T('15pn91facaj7o', '117436627306186186', 26); - T('6h45h4b', '584858264', 21); - T('b5b5aa526c4894a5b93355d135eg', '18900713795310413451403180379983325', 17); - T('5572f75ca5f099eda', '98516089885791198938', 16); - T('323603301632153011406266531651206501610', '437183320525590537223414014997897', 7); - T('1a2d35e82eadaid548h6b7c1db', '142758553123601399605862815621287', 19); - T('871', '1444', 13); - T('7dabco9lff9ngn317m0', '109673961094915000469942425', 25); - T('43092b9541b0079386931b2b36', '4059444959588416633123556058', 12); - T('1boc7bh0olho8m4n02h6d78ih4a9k1', '465799410987253426014508176316492036379788', 27); - T('6mg8915i', '116919428053', 29); - T('822d188gc6c2d8bge4932b3bb7fb3672b5', '327157616726198043612671071851924507757009', 17); - T('101jomm7el07sqf4rhm', '388135427144045277146082832', 30); - T('1ajadffaqbk4nkho11fflbkdml27', '619452202075986493017080634500652444361', 27); - T('159b420c8d4a7477ad5dd8a54cb565e0', '3959681364275325746089585349463518460', 15); - T('7f243fd29c8ib9d39ebad', '293037388819465175740976997', 19); - T('2859938585818baa4ba73924b97823a353b8a653739761', '9900376965008691067376961107831442209219200169977', 12); - T('12464266411210', '134354404534', 7); - T('fru1j0vpcftehqooiiv56bi27', '21098962974195274149815095570253334599', 32); - T('daai9e9i2b18agdb4210fj6038h7', '78621573343485599235200018571738231605', 23); - T('ffin61o2298eh', '931637737813427242', 25); - T('116210618', '51143498', 9); - T('m0iggpdj6lrcdl6o892l1ojt1d', '936545650234778704563539555026320618541', 32); - T('bld30f5', '2895750380', 25); - T('43516380211c6510c36c6ca2ba201cb6b78c', '4145070522657789681367338903946033748528', 13); - T('2frhlapipo1jm9', '26165355055652545639', 29); - T('eebihhhh8ic074d20c11', '29221406700141396291294443', 19); - T('702464247710160725611573536407615231642232', '74869132891027108059075932498363368602', 8); - T('6cddfjh43c091ck', '418124197863421976856', 26); - T('14dqq6n4bhh5dehlh6i7jok7j', '709417662539059692087600073605499945', 31); - T('1mc4o514q6g3icsfedhsm1cd20m', '1026878606225608766969967252663359647001', 31); - T('af', '175', 16); - T('2', '2', 9); - T('7b84b19108bb07591b3753a3311b03', '157757817132486011855402897961459', 12); - T('5g92l47cjl0n7ob932c9b9kokpi54p3', '15835098073858662949103316680483193845978405', 26); - T('111100111101101111000010110010101', '8182531477', 2); - T('c41a62e8bd1c7123c92220df', '60690961081480451125474894047', 16); - T('3111330202313102310311201221301101332333333333132102113330213203322221313023020', '305353951579153096643759644208233327052754219720', 4); - T('1e993o3ukos', '2194385828754565', 33); - T('5231203324201232502321202321', '5550302446432876259113', 6); - T('c531016e18898347ce', '1216498610182453367144', 15); - T('vrd88', '42502932', 34); - T('167233640813776470607127062215056', '6030750934980643551934540195509', 9); - T('80911866', '80911866', 10); - T('38', '92', 28); - T('56966em0jce2e135odie7c488o', '18942697033508769047921405112915875394', 29); - T('1ufv6t7m2qwda3im46wrvi63e4ee8eqe8', '19283761638158770938814497486670870733658376776828', 34); - T('7j0nqi4dr3odrdrrif730bq2ijhskf', '19658598320579357039141641643837077460209654', 29); - T('4f632ga542fd4c0ai8065fg2407b08d16b024g', '990186552886364408955753851129882315763213446878', 19); - T('22211001121012112202021220001202200100222', '35731418813631116117', 3); - T('5723918bdb28978d197bb99c96b78bc', '133387033950880025293297852372942078', 14); - T('f', '15', 21); - T('24k170e', '191770628', 21); - T('113380473156115346053712477828402262444530753651827', '594483726000523306774625214331012707298970579092', 9); - T('0', '0', 35); - T('5nljfrvan0nc8g9ia22uc8b', '7450754896579357424627414612259083', 32); - T('chgj01cdbafh5fj55bj83ia', '540745421736410580973158305570', 20); - T('14301524', '7087036', 9); - T('15i804kd9fjh42if69i0dlag2fied3245fh92fl', '1300847036023294222835276240403460067139304231007087', 22); - T('3f', '75', 20); - T('1cruxw1necvlj49oqtnxu7k9', '445548487845292717307860766038288034', 35); - T('moke3taeim7qnhjto11o', '4935873699081075292509565948409', 35); - T('765e3e05ca0c4b853679e80667d71bb51ec118c87c1', '2767923543808337676781898227256098432891809077954497', 16); - T('fga', '6330', 20); - T('7a172', '634187', 17); - T('dfwq2av9tp2g61n9pvjyo9mmvg6q', '14080845047776418964900559740542764294594994', 36); - T('23103303120101130120', '777177339672', 4); - T('4p4eq0464bo6ocqh', '14571181667815526352455', 27); - T('15m58b273dl', '79058625110541', 24); - T('e7d2kg93kg66eh5ic6fc0h93', '107753610293001126855936969374669', 22); - T('4544550314555030245131500001423553314', '51236655573337292293249788910', 6); - T('44123343424431144042133134403210100301', '353761873626317393756721951', 5); - T('14554315330320440350550251242124214503531444', '5290305465869465535101508124318804', 6); - T('3j3015puqer2', '180865604805106619', 33); - T('76706d53152137383626628b70d4ccc6c122344', '266602455093722056456430772081609665962697976', 14); - T('13pif992g4658ch6j8ahgogpi60lp', '4800018957123587648437240307149790316011', 26); - T('234a67c65a94c47', '8895403611426989', 13); - T('gcikbqs4jjkr5q0aorqboa2c9obfk4s20e', '766678025667202009433846434100440635178484404979726', 32); - T('643b91b0289fe98c02b3f790ed41085ba228ba4c', '572227512274253374435718937361849836268824345164', 16); - T('3k20g', '3803152', 32); - T('1312c4085', '1801106837', 14); - T('8emmcmbp542l8l', '21269151478085207497', 26); - T('1ic7ll37iije93k6b7m982dmdk8', '458805542302884920114146210861237128', 23); - T('tmpt2qp4v10vic65b', '58727236794092214086891669', 33); - T('6khk8ll2h7b40553', '1840683580393299686805', 23); - T('63', '147', 24); - T('202110021331103212003022032301', '618162844202738609', 4); - T('721b60be132a6819c03d84861d836c15e0758a62e', '789621417226946084682961249654900691281833580769', 15); - T('14', '16', 12); - T('1jn', '2003', 36); - T('20321034124130112312321020314230234', '1244390864496847188820694', 5); - T('i32gde23mq7nfbl6cgfoqlf9n5kqfi', '16807844582918365513594352707748847318383958', 28); - T('8da1c90b5b00bc0b805b125d953776d42876b25', '320741753186531118132849958969232281983489485', 14); - T('111101', '61', 2); - T('2gjmehabca7mmbjef0i30kcf', '5000975177520593103948512648993183', 28); - T('148534683843', '409063381147', 11); - T('10425635163828754608715', '1036960431474820128377', 9); - T('98e015d5a8d7ad', '18674876444372488', 15); - T('3489180081680194594039', '3489180081680194594039', 10); - T('e68c', '152164', 22); - T('hn1d16jak', '1977064226756', 24); - T('cfeed95dfij9afgf8g5j7h4b8be3i8d19', '5491903449965714818143888948680411788549229', 20); - T('1403243122140432204', '6975903061554', 5); - T('4121443420114', '1048810659', 5); - T('4o86g3', '99219965', 29); - T('11101010000101100100100000011100101111100011001011010011001011011100110100011100000010011111010110010000001001111011', '75965586951977951466854946826683003', 2); - T('418b1a918265a8452c7897c64966', '4924364715692255096187414788005', 13); - T('8ln1hgc9n8045k', '7813942802430495116', 24); - T('pr2lln', '867260087', 32); - T('1fcn793f1gsn7isrq2bs', '32443969807482433165938998580', 31); - T('71215302120100471557063', '528279067564974726707', 8); - T('279dr', '2633658', 33); - T('1k', '41', 21); - T('g3c', '7822', 22); - T('52unr90smo2unpsfaro4', '110445292972077630039222055408', 31); - T('120212330303033103100222', '108229740540970', 4); - T('5a42729b56b5327b5695', '1872989024756192416913', 12); - T('3443452305237156410051107403', '8630515683508240645394179', 8); - T('6d0e24f917cia4376dih37450h', '622334481357904649813944940629175', 19); - T('70r16fpnf8fpach4bni1nhb9frlo1', '233162017149374796044403481642635719993649', 28); - T('9g5b4c6fa8i5i1ba54chdad2h2b7diigeg', '84300792214158192051555299617411649772630696', 20); - T('27kgj0c34g3p97i2jjfp1oaool62jnh9', '168212362913311220690364503904168199040526871', 26); - T('10045661289', '10045661289', 10); - T('568101442316503108', '96174458293818842', 9); - T('12', '18', 16); - T('10lg1mffqbgb6n', '4172603685173290148', 27); - T('22h08f1j2aib4a56fghcija206753id7c3gbh0b3d', '23557638256623360938264238120003382902511416101924473', 20); - T('6', '6', 9); - T('3e1fhfh10', '138834297903', 21); - T('540', '3484', 26); - T('1122030011212013021130', '6197731684956', 4); - T('3d6rdvev3i8smk56mqkf176sjqoru', '4756953400164035672859471330837978142303102', 32); - T('28ea59cbb990457243147551fc12145', '3399121160718415003848736585359106373', 16); - T('1750617616706657707114034617432306132573321272245040042711', '5850571219466548068012306893496891664635414265742793', 8); - T('bk0ppwbbjolo9ukpeepe', '1452584125569882865183540835864', 34); - T('a2i1kcki8i6afl0318gbi0c', '3458077475262704937982766014556', 22); - T('105431041122515350205233534011145020140402052220000', '937497849037121623452661458994336348896', 6); - T('17000472', '17000472', 10); - T('500502757838694ab1678942205536b80267164a6b403ca17', '1473835956263371576873030907640706150910262129499406441', 13); - T('316eee54be4c00b9a96a0c19e19a40a046db2508d55', '77069585133800346034958196432644102010796362311255', 15); - T('cao9u61rkkfk0h45aoofof39ig18q4', '219321826067019903637853646593680142271461817', 31); - T('1b21ce892bcdaecb887bbdd4b51', '6601064768543115590908820764801', 15); - T('1c0bkk3ideb7id68ak', '47247687823294270861205', 21); - T('bf7mgo6n4', '32224267177888', 36); - T('4delmbr5pglab2c4rpnike', '11012871448891715561043207133854', 28); - T('747373012741076272574334113131066623327', '158199639324663999178714767706236631', 8); - T('1casd7p3p3a9d2jksh7b7p427', '867620324388850207003677149313386558', 31); - T('73c4c569b6b25573bc331aa883a4745a6db34b', '18565516288910449123169494151650103860788871', 14); - T('84444108680656169877651363', '84444108680656169877651363', 10); - T('1bi8n3f3if4k6ncf420he5a9n3b7c95hah8fad', '1742086738914014097772398313856731491439635861267133', 24); - T('ld12m8430bm8bfl35bbhjn', '2078522121514721270837067229727', 24); - T('1aij577mdjag5b', '741129866732072277', 23); - T('e06e5by0huf6wr78l2s77qqlrtgjt3qyi2g', '441167684426814513681312893751351585030041477675499261', 35); - T('nc25kj9f3', '3583308896628', 25); - T('2774470632043051240455350472340', '121680175780473175097234491455', 9); - T('150115341123121222041335341030534511303335504141455340005003403044', '699070363336208570930399209135482486908535252991204', 6); - T('10320123211204231240044311303042001210140422412120222012442011240122', '77011705597734437930150474763682977663080180662', 5); - T('2ep2nubk6u7u95', '60499856765543229904', 31); - T('27101471413489956474516936', '27101471413489956474516936', 10); - T('205512131', '3633175', 6); - T('1b5b00b1026b90354cc9b9905c931bc93c8b508b45515', '19401633096691683512551170208360848886053437418114', 13); - T('3045540', '146436', 6); - T('63ckmgig4kid768l9dj7fgdqd1nnp902dp3oc', '20723302228019764418200643552099428622221940273775183', 27); - T('d8bb2364a8db15b1412576b6c124a1b49583', '177430658346563064062252894201653646474719', 14); - T('8f0bbcioj1fe8mdk7ki8l4aonjk377g0gig83f', '45531903854689224866634237825158981669263098308067590', 25); - T('2748709529c232f08g85dbac64f8d4665g03d', '480051529652914850587360519926185710690595373', 17); - T('ak4tcr8j80noaam9sg', '240165757095163574519326269', 31); - T('332167b6ee686ch36ga', '4577445810401469572747674', 22); - T('93', '210', 23); - T('1101012110122111102121002100221121122220112000122001210201100111212221000220201121202102110222221000021', '6391116759661421858380546864255293273592806783454', 3); - T('3rx8d41dc8nzpg3buihq9k1005', '3051780930874321900947488047344884444741', 36); - T('16bl61jc5cdhm9947ga', '4163579690872185402607781', 23); - T('39mi77', '110840039', 32); - T('8149468040947619516457530899555331641620787260864253', '8149468040947619516457530899555331641620787260864253', 10); - T('3if6j38s2cgak3qg4', '910596518615709492487577', 29); - T('240646541755015151746375314736543447343444475552143', '3586530035933343022858608741776409267984061539', 8); - T('2lqj09278ea7ag2q54m', '579985127245834611445154934', 29); - T('b2rggmqii5jb0odp7', '1585296695989924711356563', 28); - T('2', '2', 21); - T('2bdie', '592342', 22); - T('thj2denh', '647086684307', 30); - T('10hg5iimal1m', '984702139840031', 23); - T('11111010111100001001110010100011011111111011001010000110011000010101110010100101110100110110011010000011110011101110011100011101010000011001001010000001011100100', '2865227033411954606371792440103294708104730837732', 2); - T('12f6rr7mgeop2rtanem1', '12594149153851802918636434261', 30); - T('6204661505100123631344312032141634623322531530342234621245631', '3200663074421335398837744308850619093123113632613932', 7); - T('d02e51b2006c9aba507ee8078944483', '2495283013998564778170214002942629523', 15); - T('6c8461h11c67j84', '10847089588583423764', 20); - T('5jmek310gbmfldaemli', '19039589015004936268391471', 23); - T('2bfgmh1', '371275868', 23); - T('i1kicf7408ja', '43089829171489860', 25); - T('kmg9vehm5uc5j', '49306200853105671213', 34); - T('3', '3', 21); - T('122222101101011012330310012021100322300021121331', '33004057764112427046850827901', 4); - T('f54kak7e4cbomlcj74q1gjj8ima', '249496516505770436608106844531244644676', 27); - T('6c0906a1a0571698c729481b4214', '8260906699678257716913660927911', 13); - T('47565283104081157633720612', '3480763053212520433373009', 9); - T('123301111223321011010131302322013313330310033133', '34378733037297577486842020831', 4); - T('emi9p2agp5of4o6qj050q5embro4fkk7c8f', '236538829295639541371770226117340564376039956754927', 28); - T('a6617a383d3630869c8c5b94', '2401408811388914735909033670', 14); - T('h9hi3hfbf11ml9bl44ajk8c1eedc7hi20b559', '847811630497490086928088517877737870085926386752961', 24); - T('6t2fmrdufe6cj0ttsf6cm', '4660945383740971389474445619601', 31); - T('1c149ecb87796c6a9116eaa5', '8690508679745247747029527205', 16); - T('50511214103014512415251153355121045141321231325212202024140', '6984297965964263483810433193107562554690235452', 6); - T('713410438960822980645a5993', '771298716488835296229308646', 11); - T('21111003233203000222133110131110220102003011312023311323112200111033333', '3250695581456803692625152484104902348461055', 4); - T('3', '3', 18); - T('11g2el2cd7ijmimdmj2', '3484028926865476565217908', 23); - T('w1jn1pjy', '2061728269824', 35); - T('fl9eiljddneo', '58071616717298104', 26); - T('1012210331013523255213150253013335240310251413254533540213', '235028416077302984568423163498848184230924465', 6); - T('21345516652054242646357330536124', '21600249893595093431386029140', 8); - T('3516566ad8390f97fcah6167f6h3fcbhib', '5164130207340834274229128435944714360103739', 19); - T('1celd6bb2d65i05m2gjn1bi9b7b82of', '1304319448692751655608515138766232006376865', 25); - T('3d24cfd5a3d86612', '4405874851959039506', 16); - T('437hoia6g4', '190186408481293', 33); - T('4kt50of2od', '123618635333176', 31); - T('fss67o7io263', '572949178706823363', 32); - T('jecjjk7f97a3ej77hb2cf73kihe935ji', '8105008394473920878854794247558553077032448', 22); - T('1bnorre7hl4tb7q9qpjfm25ksob', '4105331027918683625727596478007911896039', 33); - T('du5i8vtbhj5dtwskns1gtgjx09uqdrx1', '10184138846438586443859407370042237810094945982856', 35); - T('1210020000002100011101212222100120101112102000011112211211002222221121212110010112110212011100', '420882836067947584715454206106333480694711890', 3); - T('35194576c4c38370b', '2258945736842956744', 13); - T('c75b132g', '5101050905', 17); - T('c921ss00d3csg', '58052666456572596352', 36); - T('2jgajk9kj56c4bdh3j6', '1856193611885092871748090', 21); - T('112020', '1416', 4); - T('620i04ijh105p36ph5m', '179174918213489533732778468', 26); - T('1kxvl05dwu06qqr79fhiseddrvm', '10649257859457410016272202703683336103832', 34); - T('152445052135131354510404240340301115311014543', '33109388948224325760981254841111039', 6); - T('55', '85', 16); - T('1ghckb1ch96ad55h8ik0b21e0lgmad2gaaf', '143513343624647251275600679456062100442672338815', 24); - T('3ii52g', '9899396', 19); - T('2b6ul', '2464725', 32); - T('7btk3xhm7s16wgi2e', '23436808404419636027088410', 34); - T('8b656c', '3298632', 13); - T('1201110111012211112100011211101011010001200020110211010110200221021211012212012022210220112110122', '10949138520677755464489045550877099321077567229', 3); - T('1100', '12', 2); - T('3052066107', '413690951', 8); - T('e7fbo4m38pc', '2017574092397070', 26); - T('40wsrr8g88ltx2qa7', '12846856175435338795665091', 34); - T('4a13cb301dcad5701812', '28213021023084856900552', 14); - T('33f50po', '4009779435', 33); - T('433b40b7', '266911483', 13); - T('8a555026628970838a79424521', '970195127281423746562878756', 11); - T('4e01f7de0hcgjl8g6', '13962247025122105118382', 22); - T('1jeo2h254hk0b9mldg', '1038391416567657581997841', 25); - T('e46ch8078971g1hhf9f1b97531df2b929fgd3c938', '2314731369176522523922328092957556423672080265360978', 18); - T('242717160430', '1747072738404', 12); - T('121211122110102210121020011202002211101012121011221122211112212212221221022112021110222020012', '146968138778253529694918992051477705186343198', 3); - T('2f2ajhrj3l7q46177onqegts', '409232179316426518796201876801844902', 34); - T('3fkkeg', '61306072', 28); - T('22343414021421424023041441331434124003402212320222104332421301224130332311232', '338574476822007917824757676170869262799211929767072692', 5); - T('15058101388443184451253136358', '818332960438094029477243766', 9); - T('114c1i96cjm8k9k0k63c5jil41bjfh4789dh', '481396998104028267082829096262079902077941433867', 23); - T('92dac144110424d4c77d2b0c84cd321c67', '611833115355492218664994981758095135811', 14); - T('5a6e26e2de56di3a08', '72309336910701228508008', 20); - T('123791225460336062189914aa9098058a41a4989a27944', '972171175105408063075115872561973013135356652374', 11); - T('1kj04p42grlk3ke6gehp1727plbfijfm4h', '991737689151806718971626022815597324840056300833', 28); - T('2nkf524l41ld8plr6h', '11380730654120331785946409', 28); - T('23335225', '728225', 6); - T('k26ddnn863h2b98l3ai3d85h65m7d493fp', '993176059355328275357598675656866581607010932371', 26); - T('4i', '122', 26); - T('3n', '98', 25); - T('848h21d7869hfg9g8f16', '16292644969781732195571684', 19); - T('c05b090d0d716f41de31bh', '8581554053841462934818166374', 19); - T('2324501355', '25979975', 6); - T('116', '78', 8); - T('a55096037a79274691', '5305434806751713910', 11); - T('a8309vwwidpnc', '17087840760045903288', 33); - T('bi403hqq3bhholr5k666knagopj', '1223933313842546154543619577505005775473', 29); - T('2c6', '2876', 35); - T('e5jb479g3h7b4c8idd244b3al86g1', '552313164311562243318741691899753694921', 22); - T('388ehbf9a4ibk1d70nm6l3kg3e4hi5gn57', '11797601925594328234833479927518591099616355391', 24); - T('8udnnwc', '16302304807', 35); - T('29ul982l0le66', '1829153838816649769', 31); - T('0', '0', 18); - T('1000000110001111010010110000101010101011101111101011011101000000000101010100011100', '2447314272063451666863388', 2); - T('19escb3098ff1ibb', '11460919535170071665494', 29); - T('144142131212402102322221414212012024144131342412100', '175428218095062761572388134603091525', 5); - T('12b9a0eiko', '5938407034584', 26); - T('26n3f9pfb18b0l7f4eebh59po5', '536292074201521875899112083004836625', 26); - T('p6i0aesfjm18oo5', '7506892679720214826271', 29); - T('29674bcptat7dm06j7f5o5psi90', '1369393655999563288033729621327624087757', 31); - T('14ekpb14sjd5kjacq3qsgpndjkf89rd4s6khi', '172557940720326178657618843389705196986384318987060528', 30); - T('jhh95ebg93j58f2aedg2h8337gjiaa99d34d7189', '10936655689667291351153903966134856902763255246936569', 20); - T('149819381691633a23a48', '971554154257673586069', 11); - T('2o8g1jammj87cep0', '8569512661345976338857', 27); - T('odoq', '877463', 33); - T('rm4rnpim570475dkvnu2nn', '2141999355713822778715273015702793', 33); - T('1ac69832157b88926', '1226565762593354124', 13); - T('dl6nilan5q', '199215636869702', 29); - T('243104323302040443431304423423442241042131', '133218548417027778287104627791', 5); - T('ibgad688n1tt1no901c2kan51np67bk3or08', '289608891570140335427409811203476440142828467327116217', 31); - T('244311300143314014024304440302004302233424031234444422441312430300100102', '126466804626308277778897937260691523506062725784402', 5); - T('213248823315264041320', '26159069159933260464', 9); - T('1aebpqb5gfrar0', '72444883332647710566', 33); - T('0', '0', 2); - T('c45', '5901', 22); - T('2b1dc5d2236fc61848eb80e4032e842131c7ea1edd0', '1008232683040405259975519873135905613349630326730192', 16); - T('1101000010010001111110110001011000000001101111000111011111000110', '15029069503449036742', 2); - T('206dj8sanq7es6sb491g9pjc19c57o1fpi1g', '3066391464081196310306031655376750037586720973723086', 29); - T('92', '209', 23); - T('12478802aa0a687639b08595396b', '164695396078375004356316605091', 12); - T('23eh13lemi', '16251531039963', 27); - T('c50d1e2', '577020863', 19); - T('coc4ouoeqjjltmun2t95q8d3emx', '177591866017908630546079893678723856610953', 35); - T('20000011000210202100201102121111212201202102200222111121011100202102120120010211121221100111201010110120021', '752112721711477552473490297488694750786078293851581', 3); - T('4e1ae4430cbaa1e317a76a2247d6', '280724852947932121003515360229026', 15); - T('31341304005033501220015003320215500333312434105521550120133031533', '207103120854860196428042222092939291401063326967057', 6); - T('0', '0', 5); - T('2194', '3712', 12); - T('aac7bc27dg81559gdbgbgd472938b54031g2bce9', '10329879133439956684984427194752281557369149598185', 17); - T('1yu1qd5butqh93n5t9f268wi', '651203452267786771549026926235644438', 35); - T('6ed6h1hbb5k9i5ai5h8387f694193', '70471388027526307133742046232328939096', 21); - T('5em6875eptkhs', '12960542504353252646', 34); - T('9', '9', 18); - T('da', '205', 15); - T('elle1baj3dg432c7icc775560h2eji272k87jb8', '15421675663335715158214679544236080147103750752169230', 22); - T('1001012012202221220211011202222102222221111212', '3084861462391318124129', 3); - T('3173', '4194', 11); - T('1c232a352526b255a0', '16750443967049089622', 13); - T('1h3s1irr2s6', '669313434447102', 29); - T('4bcfgl', '125047759', 31); - T('a132a469136450985a5397a768261a9304a71924a1', '50372232119853962785587827398768698622013630', 11); - T('3a887gffeh1h50g3408d1fbhbgh4f5c7he5ag', '5544963555766448467377477277242334965699182968', 18); - T('11012331313202110222120203021021211010131232210', '6324455456594725514532477860', 4); - T('1279423', '2208638', 11); - T('788ckp2qh', '2063972254859', 27); - T('5775521126167057826022666', '468376935266933192169177', 9); - T('snf3hoep3bqgon6dipu50vt5h', '38193381830725709155237943160568018097', 32); - T('giflcil6n936fo', '405257343426048644637', 31); - T('9hml5pj8b0pfdjgdob06748', '130505791364330545697626575212348', 26); - T('81ebe6m2cd6lgi9j0ci98', '13850919497461336125687141375', 23); - T('nn70fao', '5842587774', 25); - T('2041331', '33966', 5); - T('6te5to0lfrkbabtrd41c8ed0ee92e5p', '3826937530476055398947144233230431055942456846', 31); - T('3050340627050765676451357427033162550', '999186955807785473462332939887976', 8); - T('22', '14', 6); - T('21a1g99c3ecd1ef4a25i5j390m9', '523989361127969369779528855785778858', 23); - T('bpk', '11366', 31); - T('1000100101100110011011000000101101001110011', '4721031010931', 2); - T('ff7d64fc8fjaahccid9d5', '4376819508586761049622784008', 21); - T('14h', '638', 23); - T('3591a1d0aaaa14514d8a0a8826ee', '1086505871907198290436180679337710', 16); - T('a0i75f', '605510835', 36); - T('3001102543', '30288159', 6); - T('1233', '111', 4); - T('172013616177746634055145614015', '295033519224308286956705805', 8); - T('24431111223333024222441130311332234341', '217260336465598947913555596', 5); - T('61871645566813861858843771', '4465139885288479008513037', 9); - T('2j99a2o6ig6kaenpr8ccc213o21ih', '236072821902099878272860191254755048167320', 29); - T('20c82rj842r3sl5pngg1m30s1ns9lenblg2q2', '302235546226118472645257056192337633007044068331744582', 30); - T('3bsnls', '113139388', 32); - T('5ge5b00f1', '219154999267', 21); - T('67542hgdflha6i6kgebk306l8je3i29j71ifad', '295779061503259490861711170029814187601403466252005', 22); - T('2ci8om31pwctteuy619olu06813', '68305183746720942432677368181624371607079', 36); - T('uj1f', '1201133', 34); - T('70dd4ece07c4cadh88eg571ee00671fh299ff', '10902617491709320295309665615607760573150022665', 18); - T('211133412100341030430344024122400212340404224043414124314044343', '48876580902143767369888221969372524247409348', 5); - T('g8eg08ah1', '279586301292', 19); - T('11830geefc83b4b495f02', '40418107783678577959278312', 19); - T('g637b29bf9a', '32991498472403', 17); - T('4f', '127', 28); - T('60ahgkhg', '20498279068', 23); - T('807dj3ia477k6540b2', '531044090253007204514148', 22); - T('glo1dnold5a6fm1nnnbdfb0mrnjh2obi0nr', '2789545609120026862639750879216157236162178740596717', 30); - T('20551660343300260022603032344543556365661', '13481349525083560101951990618981076', 7); - T('11111000100111111001100001100100010001100110001101000110101001111111011011101010110110110101000100100101001100010011010110100100000101010010011100111000011100111010000000110011', '93021064714003304999209676659750808550526701882548275', 2); - T('5ed', '1696', 17); - T('21231203102002032200322312100032102333310033312230121202021202211020', '52875735012335675083325403253481232804168', 4); - T('4a9g6d3285a0f71', '14592320917794115609', 21); - T('2rkjar7bcgfjapl95hikel9bhpd1q', '261692392820668064199561442410427511575031', 29); - T('v', '31', 36); - T('870l0talhqlbocuut87rmnht', '164639756154616554672312658123494939', 31); - T('166gg5cd', '829405561', 18); - T('111111011110010111011101011101101101000100110001011011111001', '1143454535228004089', 2); - T('7g335jhjiaeef11cdg9cigbd6cl7g8mk14', '6661914066616801000688433796989649066873498685', 23); - T('729c210a63g9a0b87hb236e1e9i7095h3fi5a', '77328303793071910139493127832503020470265247731', 19); - T('111110101010110100000011111001001010111110', '4306578150078', 2); - T('270fl2fj7g06jh4bfebb7ad', '792003659981720720802552797405', 22); - T('123240341121241110', '1176945883905', 5); - T('609af0552gf9977067f10321ggb5067705e0gfa9c', '99658853369916214404971432082520573489936957319371', 17); - T('3di3edkai068i8g0850d5dbj7b3', '914473354161724934676796320329532991', 23); - T('60072304104', '20955430219', 9); - T('9a3lpoi5h902hn8bodq', '3617529642401747033698699016', 30); - T('283k0224f93f440chhidef1g7a66g875', '232905975079915676784494113568223597432899', 21); - T('43010013142634444066025411', '5942944657464057117855', 7); - T('7b1504d695414bc4b3367a537', '2597305124184055465506755532584', 17); - T('a03d', '58387', 18); - T('75746114788229445253810814861417162069', '75746114788229445253810814861417162069', 10); - T('1517a25680a7a55381b18994b3204a13035644130417cd4', '71951788846356115851868854226027470196598485964814850', 14); - T('ldxw2kod', '1675994868013', 36); - T('cb7427fibhh580al3cbjh31d28960i', '10658187116944300172792431427417942701250', 22); - T('g7dew', '19240946', 33); - T('8480d1184c0264903c99019ba79a520', '201522207278301179690568435464536016', 14); - T('13233020022320110000133221210031013222033313331121202132', '2510595482396899974505895592040606', 4); - T('32mfbd43s65247pmjh4rc2okq8d5klii65l', '163041687824253430655263510014482606677780918948782', 29); - T('100026126125431453044406321032314335211606643345035545012516', '72661785003425012140588523563139272506535099051702', 7); - T('1f27p24anjbgrc', '15595560185780589258', 29); - T('1ks2s86798bq3049a0ssd4n03m5l3dihqg', '3129227003843513763551368915590401778246667625712', 29); - T('3', '3', 5); - T('3ba953957', '1716304531', 12); - T('124014322013143030122204204203124343100110121402423233030012244', '33894391020518795695192912235400479381094699', 5); - T('110000100010000111110110110111100110111001001001111000110', '109286979318617030', 2); - T('58166441445415768526440246567887125401', '1198377845109548748098572871264323582', 9); - T('cb5bgbickjp7a3nadiw', '26576898192662296489123461908', 33); - T('3b0ba610991', '530965728385', 13); - T('404413nqd9fiqpnkfj', '16007373449287050500285495', 28); - T('2121350320201502103345551021045003450201550321400113412420214551', '23539590020554430797855801628642485899381919626499', 6); - T('53mlbddfag758gptf8', '66187385842518934543061558', 30); - T('69gmek9m38ie3', '380697603731777228', 25); - T('2i2g0ifgij0i6hfi3g90', '37935881359797264481717506', 21); - T('ii0054mb', '195260028392', 27); - T('1fjfei7b2g5dee5agcg51246d8ah9ib', '1932164313553377614588544011374939339971', 20); - T('2e1aqjfd3fhk90mj491b49jed', '134908996318227926701481577799370629', 28); - T('5pr4od8gcehj7qkd2mdalo834k3ffmg2', '12728449099802910729307024798552491911885534266', 29); - T('2ekdpk4jcpq', '748235759126742', 28); - T('d50ccg6jc38jae', '2045130355749296249', 21); - T('3603gj7d46ngf8h94kl2020egbn8fmm31d', '11452231113764962902532730057716103944191773413', 24); - T('2e', '44', 15); - T('161654155547445343476406063530377171044513302703466', '2538635569062190223060841428161267358214358838', 8); - T('1cba2a2f26dfe80b4c05d5f5496b9', '9322511400054499645799889634629305', 16); - T('10000211001200211120211222122100112200000112110102100102002212002120220100000121020111111111', '26448038821401714118351547701564166386304908', 3); - T('100001011110001110101100101110001101010010011110010010101101110110001000110101011101101000101101111110110111001111100101001000000001101010100000011111100011001000101000', '195679510499172126937950972652289628431931810918952', 2); - T('22g547', '59586936', 31); - T('87fggklhhg', '10081601679330', 22); - T('14loc9q0brmnf2l3pjns', '13453999087631333376321422818', 30); - T('16b120336097820377102ba1a6530694', '4492294931008813292353818571952848', 12); - T('39gbh606nqc', '989997953401812', 28); - T('1dig5', '226295', 19); - T('1b3ka4g0c31if', '32556633457068098', 23); - T('36173', '15483', 8); - T('25mnkqg', '1597959796', 30); - T('396ddbf310babd9b0124f477cif5j', '36237589250638277361694592995401437908', 21); - T('101113023002', '51298502', 5); - T('110', '56', 7); - T('110001011001101100010101001101000111101010000010111101011011011011011101100', '29161467826175673743084', 2); - T('132b5284b7468b042763b92848288906579115b7195a6a4a', '669106877176619840691504688183033278062755763332186', 12); - T('2jbk', '78202', 31); - T('36547444550627731264507057423205012330760602245415526634143', '91896719045463903069060584567797070657705215769917539', 8); - T('2121342000144101', '70013678026', 5); - T('how', '20500', 34); - T('6', '6', 24); - T('2r5mv', '3740439', 34); - T('4cej5c3cj6j6h6a9h44g1ee0', '11865811719145171527617979234903', 21); - T('1a', '25', 15); - T('322311222203133013020010112003012001310321220002231100213132013232132123101011010', '5374536559442579875501675621431604976446648160580', 4); - T('eehubjvg4wb05956wfr89p64b8llt5', '19553077057948292475181539283795939051996984745', 36); - T('66', '138', 22); - T('21e5', '25190', 23); - T('5824gg', '7778723', 17); - T('qhcic05m', '1392438529792', 34); - T('70748', '103386', 11); - T('dd2f83', '14495619', 16); - T('269a83d0c1e15243ge7', '33557569767693937959458', 17); - T('217a8j', '35197139', 28); - T('2nqr8sm3l6dor7l06btp44g3q4opsp7hhto', '466388495687397034337875211314470597167886175645194', 30); - T('919ha621d52e19dgefh8669', '37530506019880420547749751997', 18); - T('1pije311bgqvpb5ekr73gsqm3emdg575o9', '229124521801149764060037079145996433176668172334504', 33); - T('1515502220244213520322244000232533532', '19475372332703870864203147616', 6); - T('3qep1fh4qwndwwwe5awp06cpsgoffdu69cu', '118279202173747931820139636011582054710456162076665600', 35); - T('1ada80a134bd3cb309', '54410775990170265437', 14); - T('8a97823751309916828', '49979715688154191266', 11); - T('5gb6k8igf7gemfcm', '2870749420792582219510', 24); - T('9n3b1mjinci0ni8l6gin2f724nmpbf3', '86027429526935179638753640862837929481681397', 27); - T('a9698129d564ca424d1289a5cd3b641a1a4aa763d8', '1046398402135353288360947832509612205229878640394', 14); - T('9', '9', 27); - T('15f7', '23740', 27); - T('e64g', '422980', 31); - T('9ca76d75d5559', '1277567401473084', 15); - T('78ed606o1j8fqhiidi6fkoi83j0n4c3iiqp', '33935317423077288563227681620299054243465830701883', 27); - T('31cfej', '36322539', 26); - T('1d5hn9ibgty', '3795546581559774', 35); - T('22210011201122011202', '3403203221', 3); - T('39c9ef36fd8d6d173e0dcef1548f', '5958639927430509319986930239964875', 17); - T('1', '1', 20); - T('1006602851715538236745820258681874447601432823308065764', '3412333354307507489911392031280207794163602060048483', 9); - T('amhodl4nfajj525j0qm5px41bsa4os', '2758944573212546785156336043340023815551190796', 34); - T('1200', '45', 3); - T('2120040430001210430112021023230112121300222320220130', '1013117983252189204902772113159538790', 5); - T('11111111110110000000100111111010011010000000001001', '1125213381697545', 2); - T('14c0jb', '4973567', 21); - T('16530fa17cif', '454442982820233', 21); - T('a3a0adf4f85', '20585721319165', 17); - T('203203033120031120201213113232300022323332032233', '44009547630098010676449502127', 4); - T('bl1i9', '3334710', 23); - T('8pc7240lvue8vuq37ywvx34j6ltmfl', '5232403222434712533947020919591570328338399621', 35); - T('111011110101010010011000011101001010111001100000000110110111101110101110111000101011101000000001000110000111010000111101100101000011000000110', '2606077838126325794622812111329148470986246', 2); - T('222022012110', '517737', 3); - T('405934gifigga12739441giih0796c14b5c997ih0', '44130496382894991152875168789677354953126176798303540', 20); - T('557ad083j4', '9422716142562', 23); - T('304bdb166ac5edgab3d61e97b606250d5', '7142197345479876851613804398524943471095', 17); - T('23020170177167056322724056253016211772161010110040067', '217303698775390775219268953665006962201726042167', 8); - T('5fch', '60781', 22); - T('rfeemi554rimeo2bt6lwrbe', '70166644768206913891123105929597662', 33); - T('335a4441544334925626015a5261a88000604774798564', '242132208927109792755852728923466600488607984570', 11); - T('1110110100000000001111001111001010000000000111000001000100000111101001001000011010100101100111', '18337058785747772841230707047', 2); - T('j1l6qkgfntjef9vc32oc2g', '772839569513479974919512085246032', 32); - T('gbi8', '114065', 19); - T('i3da2hi80eb0ag8d9g912d7a', '1008543268485443569575877596092914', 24); - T('1011001010011111110101100010010100111110101100001000111101111010011011101110001110000000101101010110111100001110000111111010110001000111011', '486261763761604150405408746183250518303291', 2); - T('jijd51jhj1j95f4je54493jae2jmf81biaee', '9069209033129880269632627501828625587610894134746', 23); - T('2hikdk67o4g7lmh1k9j', '39437368888777361305497119', 25); - T('15c6f07', '22834951', 16); - T('6581d19cb883a36', '1064511493807102328', 17); - T('52', '107', 21); - T('1p0qemoadmtnlgmecm6kbmn74i', '15541937980818601123360827036285747438', 30); - T('1', '1', 4); - T('21590025143', '21590025143', 10); - T('d6sy36', '693030386', 35); - T('11322122', '24218', 4); - T('1110011010011010101000111100111010101111000001101010001110110001111110000100001001100011001100101100000010110110111000010000110001010', '9808812004949753301944141481962869891466', 2); - T('2011346064205340121321043166651212640460403562264030', '25491520237430529777628523147054536052862839', 7); - T('ucqqp06', '26993470385', 31); - T('360364043226375763434734203', '1135619094464764138731651', 8); - T('16a22ab29g6gag27d902i028h5a5h28ij26aa', '91071572231094736409429316734882921398332658610', 20); - T('16bcdc134bd0175b6ba3c8b645b3a8acaa8653926', '10426556992801999163605089672879387047740400062', 14); - T('101010110001010111100100111111100000100011001010110100111000011010101000100011110110111000111000010011000101101100101101101100001000', '3638586720469021421571505782203805260552', 2); - T('140c5a387bc44a4b10aa460b7c7b206a12260722a190', '1042190142619938105857559249577611044384867548601', 13); - T('796246846337819935321375455889727088', '796246846337819935321375455889727088', 10); - T('4748365707045', '1366592978372', 9); - T('18dqnic9l9d8lof0an83jhl8p', '161791385498298856077148137049891879', 29); - T('e4enc1ry5e2fev5tn0puixpkat5hs3u', '690214300653731249034075248278056601286873317770', 36); - T('12103332000040255055033214532003', '1809113997459018487166787', 6); - T('4ov5o3bldn8i98vgsc68wq3ce0j6hgec', '563851485207171383268487747899059744066460463002', 33); - T('122100200021100200201002001202112012200002120122212121020102212102010020001111020011121001201012211121102012201', '58695548546092379485949598870251325789565837785276340', 3); - T('10011001012102121210111220101212021010211021100201001221211112200010100222110012211010', '37710977865302705162890164637672855056666', 3); - T('168f56983', '14994285015', 18); - T('lmil2egd65k87f', '54272692008795037013', 26); - T('2335440145154021142020', '57257388878637468', 6); - T('40101301132322244002210301221323411221140331223132341', '8976324511590349126560140575129895971', 5); - T('mlg51b99bfc3fbg6jch8kaea93d3gbi31cbmi0', '5553841642984415591090623182299846227471263243529165', 23); - T('1245412455512', '3201760196', 6); - T('4503a22bbbeccbec347352979ce46918', '12466951961005062711489205571650902923', 15); - T('10bfa7f775', '1236461192499', 22); - T('382377804843587793924059644948380229143271542188852331', '382377804843587793924059644948380229143271542188852331', 10); - T('f1o3nlnekf8h69cem6ep', '11553871160155818431289732717', 26); - T('bkd7bkpi1415qbfghl9ifckcsf8sab1pkd9', '616479730153122276188583638809339600885956993018944', 29); - T('297le48dg0ah3ab203cgge3l2a', '26579580179095250157256986137526036', 23); - T('87530521065105884', '16387573292942836', 9); - T('1201111202112221120110012120211222102002021212012011011220010212010222022222022', '28290291045491254023506261936179023326', 3); - T('3b08l8bia9d618', '3031752476775111584', 24); - T('902250c032b7g0f89bdaf178b', '3057545841520061381930994706945', 17); - T('40047350077123034467287624460405518424571', '592212941919593143318170237785813532640', 9); - T('f6ddad188bhgckedi58jf734191ifc9j7igi', '290294718982610863234917060711053043029223349512', 21); - T('9kf6g5tphosttsn2i6bmjnmr4g4ra39io', '5112058191839606068411315609839936325831521670438', 31); - T('17hc4ge9fhi71', '3136930029314922', 19); - T('e', '14', 33); - T('1', '1', 28); - T('19385916362038001511974974352326061606', '19385916362038001511974974352326061606', 10); - T('994hg2d2dhbh0gah', '64197081894248845109', 18); - T('acbg60n772m1ea9irebfnqrao', '1305370225928181620545110631536852533', 29); - T('14233136655362371400640556051237407411322356356326214052664', '36825078122035846824139359498863387810994115321025972', 8); - T('92392b490301a664', '4006460987264335819', 15); - T('167a115b4jif', '270081361799975', 20); - T('1640200513276356713203217', '8561606752326371837583', 8); - T('6fa8crom2v', '227951526041695', 32); - T('4umsdr5ai26d8fmvbkvlb2mn2u6sqw1ipv', '636523307570103041146492708259627994295321250393266', 33); - T('38u9003eaqm6mpnr467a62t', '8353799196317598820195931099074052', 33); - T('skj4', '1028647', 33); - T('63u6q9h8p6ahh6bmkb9mj82mgp0rjo46d3o', '9163926831552473156333325816156658696482771840480376', 32); - T('374181045005367453', '63869760985078506', 9); - T('gi77gs7t4c86svd44', '20031375747586205082956932', 32); - T('idgcgg3iif306812456h377f56942aha1h1bi8de3', '26466184663410551722103090587444979074925601227697522', 19); - T('1n8s7', '1811335', 32); - T('1101111001100', '7116', 2); - T('32032002233210222021330301320', '256154294077082744', 4); - T('21d05e087118154801e38de0d0c9e836ee62', '309359469371419698329028550109463239304242', 15); - T('7bnkba8727mao', '711734299233608012', 26); - T('23122113350351205124402523114241022314241152131452310154403', '3446603390947454372499645215833941706110137379', 6); - T('8fid35se7iqd8qp9jad33p88c4eshmrsn', '1578863152062103440946991148225491469855580789163', 30); - T('866416783373441066298147461690874873461', '866416783373441066298147461690874873461', 10); - T('6eq5an5rab06h', '1517176822531587577', 28); - T('ud2svcuaqq4sr7jrqe2bre2hsa2e', '1324502565529099628698041478533401102133326', 32); - T('6hm5pp81ik2pf1ii6hhl5jioc', '60893965774839245281672395269677740', 26); - T('ee7744r3ad7', '6096626264406298', 29); - T('1q6af87', '2316479689', 33); - T('11111010111011101001100100100011100010110011000101011100', '70631085671395676', 2); - T('6bgai2ib8jigfejj7akee7gkhcc', '1653728637039272131322974404967196079', 23); - T('774k16nrl0naamuri4r0r70cnc6', '4311028221216091060938421206338050133954', 31); - T('15464kh3m', '184142510722', 25); - T('a3d7iil0k055ea2e5', '236120447734071099376605', 25); - T('174svburisi05', '1410646341741070341', 32); - T('6103526361624161311443517175371632412741737', '521666973443756820065064110478867547103', 8); - T('103807464250446522257054681023194524538600', '103807464250446522257054681023194524538600', 10); - T('3j35qafo5is9b46bon3r50k2lcgp', '797208106619573886168214719184124083800753', 34); - T('kb5tm5ueho', '538338180669237', 31); - T('gffi08e4l931g4fa4670c066me3pka4h1cgm', '554854175062937340737429653211079158274027725303326', 26); - T('imsyw1tlimmvc1a84d82mb5v8gi3x', '702689747548001434279373592171391347865465773', 36); - T('3cbj9ceddch0ca260b877', '1001161473757765639302563398', 21); - T('0', '0', 35); - T('247a679c84b4d', '298529370955423', 15); - T('500313532362550151405060156664016331505660206001614462450', '1059924439122427863447760659387416953643785787762', 7); - T('21104675576566636070802230712528334778338134', '228886256147665679004281010479547505677553', 9); - T('nde6d3h4h7n9ndc', '877038302183182967837', 25); - T('2f8f19d0d3ff', '52291659944959', 16); - T('9po6he7l23n7b4', '40360148730545473327', 27); - T('4vrcnav64my', '13539089772110454', 35); - T('wt3f', '1407645', 35); - T('2fff4h9i3026gh1397i10d5i8ae6c4f', '652969455080964332999891591145708320863', 19); - T('1101001100111000100111000111101111110101101110011', '464480193997683', 2); - T('6203', '95003', 25); - T('lntorhe8qgtf', '1097991413515091385', 33); - T('1dd4hhc', '80963249', 19); - T('41076a3c610cd64', '45272036908151372', 14); - T('33101330321210100311220302230010000011013000121332133011131113201013230301021222121', '89329862369401356626441467590629208479429264972441', 4); - T('ow7tdn8yg3', '1964139743090213', 35); - T('1q60sn55rc57k46jch376dbi18u', '1100010206904531923980306975025572612130', 31); - T('al1cclajlg', '113737896778508', 28); - T('5', '5', 12); - T('36341540646206345106351653034450633650542255', '8584090170028289590539679646753255116', 7); - T('1102033632151056', '5454472967691', 7); - T('4c5nb2a31', '496481252041', 24); - T('396rc6g1r9hf9aabkj42', '10434942490263324352574492834', 28); - T('1c1', '406', 15); - T('57rggzfac60l9nrn661pfq10u', '117102687392726624510030956959605426862', 36); - T('38', '41', 11); - T('1u2qm', '2034518', 32); - T('1232053250', '14377278', 6); - T('59', '119', 22); - T('66877666510', '7045749564688', 16); - T('101262042073', '34406946350220', 17); - T('174406316667406655013647151755454742463', '40406618960600991640852771818947891', 8); - T('381367303', '381367303', 10); - T('fdd6hifi49ehhfagi', '4534655080747979804851', 19); - T('293bo9drjuh', '8235734635761209', 36); - T('4865260ac23b750a96', '40252545837442207366', 13); - T('3m5gh8f9eiuii2i29da13dmhe3shrt8', '2045787934668186695600969415825357209406033909', 31); - T('191803aa3382219136708a9508218', '264262054527282503748967555048', 11); - T('1444052445552541441142310', '8514868572634010370', 6); - T('15011400422413113112434241014421043155342445031005101', '53518774664077147625027648928085924722973', 6); - T('1ddx5zi5bavp1', '6500361914360643061', 36); - T('1di6j7cc6cc5e9afj9b42d5475hjba4k9f60e', '660940889065923867470806531240107647134213385615', 21); - T('f6g4828730j', '157087239737219', 20); - T('cgbck18cj6d30g231d3873had68b2c8gb', '115631796673116218055162703588567020964949739', 22); - T('1b8g1adag10f', '57508815430230', 17); - T('43236337121823529354644', '43236337121823529354644', 10); - T('h59b7989d6c1280ia899ggibf2f', '115923326177989136223953138998174055', 20); - T('55b585', '1367669', 12); - T('855elbci61icfb', '12232290116758492261', 25); - T('qf9s38bt2pqt8g', '1456565460716253297547', 33); - T('4791940b5c8', '633114739642', 13); - T('3nb1mukrb', '10289748946583', 36); - T('2roq', '86299', 31); - T('2j4m3ja8hj3bbjc13', '17388834727775714756395', 23); - T('21210210200221000100011011021121122020110102', '854293782429088571072', 3); - T('121886200777336076581247707653381174765200168442101338', '468460499850199466928527287592120617883229696652094', 9); - T('63kwnf77bwut56ca', '572752155516297110798450', 34); - T('ideh4if', '4527221715', 25); - T('428427', '255499', 9); - T('ce65d3144a87631c5d8d5e', '64651681400824332635469389', 15); - T('1tirisssmcieq9jjem2ld4fpd001afe968gl', '9944720592415733461822502465141583653366986082659701', 30); - T('27564631602344315060464577541', '1490731602885528882512419711', 9); - T('1112222200201011020301023333113211313222223333203311000', '439439643250765496890620832005440', 4); - T('ni5m4p3nkb8e7', '2261758525856544683', 26); - T('bb5ha55hc1j5786c6gi3b0jf', '9701164395793552878907962168395', 20); - T('1d8e03j1fcgggf93f5ef1c4e4ba8', '224378652645875278576698754063076608', 20); - T('h1hvj0hqkglm', '1196363266840296960', 34); - T('345ismnc7lr43jja1e2ff24', '985236942305240622053932671238564', 30); - T('1e3iebb0', '5501850470', 23); - T('coa782d6j67noe6koclci6ogoanlbkd9bkb', '4396598624432652113517535536299626773660112648011', 25); - T('41002112043331422302240214202440223000312140422212', '74671149805376831258756652992904682', 5); - T('djxmkk7v3s248gexm1gp', '1703151246313896607474774348861', 34); - T('8646077885b0c2a21a112c29675749c57ab', '635151353519033987553420797933447242705', 13); - T('bu441qf2akw2gtvd8qe7t7uu', '3869618174244179076226832622786813655', 35); - T('7iur81phdrrfcnn97u4kkk79tj', '146414973454877334021181536955701659607', 31); - T('a0', '120', 12); - T('48ee59e90ac14e8e7c231ce875e6589419a0', '669783568562143349960735984002758784886175', 15); - T('ge623etu1ob2q6buudk474je8sbe', '1642513449767667629299872543927786786403661', 33); - T('43c3917a388969c28c304b4497c0a', '66716252264599355808678868874746', 13); - T('2859b5a', '12788474', 13); - T('7641714202176443731750235267341521674705251706234', '174307282119711580494340594082900153247173788', 8); - T('jaf', '14136', 27); - T('283k299hb26llbgchgb6l9', '36807839785608217611584893207', 22); - T('33ol8dmma43g9e7kd5a', '45980645590797982073367635', 25); - T('1i4e6ifai9ej', '1068011337586619', 22); - T('133300022331010012301000210032002111201200121310122003302323031001133131103020023202', '185626342194041733951899580551736160422093201900258', 4); - T('a3j87g1mqj0b0h9nj68odofglpm', '166491782431993148839670675364949059340', 27); - T('7481370241361', '2130975455815', 9); - T('502e75ea0c6d0c039', '32928634294384428054', 15); - T('11011100010001001111010010110101001000001111000100101001001010111111001100011101011010101101110001001011101011100011100010101110100101010100111110101110011011010110011000', '1287696114982305806708561003677255537140522028742040', 2); - T('1bqfb3dfpepng0kb445532e46i2k2plnerbl1', '17866045281194629714550510066941232047098126404456765', 28); - T('1228541550535432070748521080570353154383164027640630', '5838445704235480390616223077573968603488172323015', 9); - T('202120202', '15005', 3); - T('2b15ses6j', '4151154643167', 34); - T('1oletrcgbcq9b0ol6abg654', '572355626082756700069900296347554', 30); - T('4d0l4fjnvdebtl12cyjt3', '33268500416963035715332927486418', 35); - T('21684428648370560244556270286321625', '611004158938408181845575483482792', 9); - T('22516578301431031712115715', '22516578301431031712115715', 10); - T('ia8c746a5k698gb0ea0h25', '4186764807821527418737933604430', 25); - T('552d4b5c5', '7928248585', 14); - T('9962395855075', '9962395855075', 10); - T('94o', '9368', 32); - T('8l5p1gbpln7feh87180q30id4mh', '370245596672569805456573812561788398457', 28); - T('c9s863pkoa6nm9k271s6agd5936622fij3', '22417592566417395601808617316485913816273476937652', 29); - T('69jl39227g9jchi7fbh7k', '4550255795481192857394992106', 22); - T('i3llek5pmb', '98532878244435', 26); - T('27sr5g2k6lamc0jckdb9mf3l856gei9gc6n', '119857086374419767386831815250826945200461652035528', 29); - T('5hq2j9i5nw6ohs3hvdoxhd', '800197957325309307636499187015299', 34); - T('c5d885ldc2hd49jeg9gafaa6a6ke6i6e423', '53787528350697204358419391960520601829238505391', 22); - T('5llrhq0bim40jagd8j27c7hi44aerb272a7pd', '72355247952723729282010000522046316637619366408542137', 28); - T('ha1668kgjcf', '463661948026435', 22); - T('h74bo7h93481mki8i9lj4fe', '98266163081048910410819920612264', 25); - T('ak75ffj7d38bka4jh3h7gb', '64086606059975639770545476537', 21); - T('1544451212224143030151322131521234453150350121040114141', '2060205073108919819474425853323987884294925', 6); - T('740202262443263067454211712735764360631542423775344744', '5483538014645444559676878691527370323481540807140', 8); - T('6a7de5g426252fdc28', '5472421497078469371086', 17); - T('5473907070054b040932430b873', '61634926370145594667567575831', 12); - T('4115450564572527160830368830000012742181361444838505', '19161272032820073281912521629778352968829319565898', 9); - T('1', '1', 17); - T('1440410431423404203', '7502669747428', 5); - T('1', '1', 19); - T('251460508961154488826737846', '251460508961154488826737846', 10); - T('5n19ftqpc2ik5ia4shol4qfedbab3erk', '261244167379311148761203476835802681174819715956', 32); - T('72ia1k5b8d5', '451134854378813', 24); - T('176cefd755l41g0g4ik1ingdb1bcnhc7c7ii42', '115776909918913879948624420561685892929802962695482263', 27); - T('122021102223121130311101313331131210010021212203020033200302031213222', '142347927402828237530224283047207824316906', 4); - T('1195am2d29gld35edldn', '177161953608480500227591823', 24); - T('12202112022120110102022212212202210000211102022200220200100011122201212222220201122101022122', '50276392565959796508087003591344035380000890', 3); - T('195196760bb10d797632bc9ab92032ad43540604d99a608', '87971157221742030648612012232857353870163597460159360', 14); - T('100110001011101010111011011011101100111001111011000', '1343422207521752', 2); - T('5i0n32cm7gihpgomken4k', '113463368288089227639632223336', 26); - T('m1iken16m494defec2jim8', '2129732956718515846300095237272', 24); - T('352754440661731162345175142131150650044732105622163', '5239828571223832230977981455751540869256651891', 8); - T('2h21g76gf6c4gcb1771hf25c3h37h560fa9d49', '82232560865623068409274522061107609432063075661', 18); - T('18336631326266747387301843477103751556526163', '208077150063548931141427603913143139920977', 9); - T('373127070001223103537740007213', '607292123862578721351274123', 8); - T('a', '10', 32); - T('2d54e7df', '3408755075', 20); - T('4116705626b180469537aa157a4659', '80986654674608879103776539438245', 12); - T('340021440031401103111001314240223132411342323331400412101243322420111334431', '20137295347910978050137678754715001634222372529793116', 5); - T('153d9792e5b2bd96679de7bbee9f34cd131', '115644794069417523805676707579411471061297', 16); - T('3kbean5c2', '790686787750', 26); - T('190e6jhg36c0d', '5946547059732813', 20); - T('pa4b5ocijnpckmbkio', '54653058302977747314709557', 27); - T('5191999d6121cd2bdc01a33e38252b0e26', '3305144539726123107189696653194983953811', 15); - T('630415b975cc33bb4c363b7be33517ea703195a3', '45712578593779552927926495716849553528442516653', 15); - T('35115035', '1083263', 6); - T('ik8ecg4647i4j', '139555487244430570', 21); - T('413gfiabjgci37ggbhj167il2a6lj87k69a0', '1853468167532157988104259516068589250397587101519', 23); - T('b45grd33e3rgagm', '46026603618605840281332', 35); - T('3i', '90', 24); - T('24032', '6197', 7); - T('14643', '14643', 10); - T('9mb0', '347754', 33); - T('13120234334110400213502255541105350', '440476073103983155758151266', 6); - T('15462416000664444652033602350030142433164413645004054633552531', '6452632018511786950986114433943476403580602805020808', 7); - T('37572601640375442622771540474365322704464564070', '1382461219874045756706531331920884785145912', 8); - T('1f6ce9be57023fe14fa060be4c01e7a', '2610723550735662335298250928784678522', 16); - T('267g342l2c4fqdl4ajeb16073kn', '36667153627913303191726714912695388556', 27); - T('c7a494d6c', '210541427015', 19); - T('cs7tw02ho930capsvbscsc8rq8crl90', '46186547958524001279903376963371423125825316690', 33); - T('1110101110100000101011000101111100101001110011100100001000110010001101110011101000011111101000110100011100101110000101100000010000100110001001', '5131515373500601241098729740846521305336201', 2); - T('3no9lh6jcq6hj7fnm1tj9f7dql4g8hpk', '23432634258735773139507989470200385544339392070', 30); - T('77202ccbd3bdb106c70a3c843815d', '927344578178019254002795633520519', 14); - T('c9g73jc183o36oe5r', '1761650416053970767908743', 28); - T('21001120111101010111201220221001200110010222102121001221010102020220220011100222010000121001000020', '44909696191691954741895603189242516933740673358', 3); - T('af8301s', '19182618063', 35); - T('afb3ej2cjdfg56ce8bea719b59eh8hd6920b6ej', '296262541658682380384776698481582878196565062490699', 20); - T('1b29xn8g00941kgw', '289012521433739258455520', 36); - T('2xtp', '117767', 34); - T('1020112012122220201022201002120000010120100100110211220001222110211110121012100001121012121', '10837637600823066480493206482425734822338083', 3); - T('22315001431055114221302441100', '14892771054125887454268', 6); - T('bl31de', '455503007', 33); - T('1442414261073074545327716347556337315543405616452064022', '9163205510581199876674535919032970590548216277010', 8); - T('212202324042155400', '37777131521784', 6); - T('12349640aaa944688139259530937033044', '309196066606488820168555372722983338', 11); - T('fpgqcforjadl4m41hefa91o5k2', '24029402257540793970931286440247548034', 28); - T('24102100001234302042410140240312000000202423233343230421014423', '12331802937444045464002527321771813605251238', 5); - T('11a47138b132881731', '2563461905444852437', 12); - T('85cb3b8659ac21af1a8', '117256916843717402630003', 17); - T('530510315641333222253215315131453602302126013654335', '9790111583735606376490411560153169670670337', 7); - T('10011101000011001000111010000101011111110111011101101001010010011000111101100010110010100011010100001000000001100000000011000010100010100001011100', '54723606892902481536500944335964133487421532', 2); - T('1637342435475173653242473', '8554147181574260344123', 8); - T('70b85a374348bb964492a19b784087048003', '418269954707700454074594450672126945795', 12); - T('fe1d346amod6lrm9ljngm', '5393449861419496363652864244202', 30); - T('1734425698429208702123875', '1734425698429208702123875', 10); - T('1mh1lrj86jhfco6ce7', '12909789186113871807459532', 29); - T('2h45bd450c7a32dfa2aa97f48caebfc1', '12727768324370554279947630389647616613795', 19); - T('40vodsfi176dd7whnoe', '8678884792879959684067074146', 33); - T('2n', '79', 28); - T('3a506d', '2011449', 14); - T('kugenh9ait4003ra6', '25331317463136730892856646', 32); - T('3b01db', '5178823', 17); - T('dmbepcheuoekosb36', '9981424586270997624379758', 31); - T('3p0qqad0rbd3a0d1edi9qj', '9565860082877068038671133862651', 28); - T('8xrc11wnvgd', '32677858720142077', 36); - T('hb9pb74jv', '48841995735499', 36); - T('2h4d0i45baf58', '60216197692422312', 23); - T('102003023330021103223132320323203023202122311', '349133714394419821353510581', 4); - T('9l41ldpj39nnj71m7l51he9idhqk2m8l', '2305496927225468830003959459450437448260834721', 27); - T('15b74943a22560828b568aa6288a66b7a75', '7370244945567598717283130690155534393', 12); - T('9e63632c0dca5485e48bee9ad1b5a28049aa157e307', '3703754566336033126591165191492065433661004773319431', 16); - T('3ja1', '31801', 20); - T('g42g1w4hpfd1uc3c9d8a20rouq1al7pma0i', '68696270202616562976167194676008006702228230750870258', 33); - T('21230013102330032330322002201103203321120011301323120113033012202', '824272888453390045291865751777634480546', 4); - T('9hilehjdf6lb36j5lecb67b10igid65i4f62am', '2366158544165559387606813664930337805770821698614502', 23); - T('1nkhq7l94h4', '547299336104672', 28); - T('12d', '973', 30); - T('8371b0d9c54b9de08c7', '38795452173112617863367', 16); - T('22g68fg8d03219h4dabfg83b1ee44', '303673527388065638076672857780213284', 18); - T('97c0c3840dgee5g86fch6585d31a4ca2437c67ac', '85105391259450946493116320690718103848694691007404', 18); - T('1101001110111010100010011100001', '1776108769', 2); - T('d5j', '5319', 20); - T('1a690', '51662', 13); - T('343432441403012032', '3019525047767', 5); - T('5kcjujtof3vggbr3pearj3csbgta81w8d1', '725293002341316327093764860114945003565348827512163', 33); - T('384707362343836408736872363284', '18595584801040647198239186170', 9); - T('23cdltgf5iop3i', '115711808465236512492', 33); - T('a34fdfjgchh3c2g', '117542990081505966008', 23); - T('2631935a01935aa659a8', '14608971021561178647344', 14); - T('322002310130020410230120043200023330430400213012024320211340432412204203', '147419546263656400907418587687857873288933335663053', 5); - T('282', '2042', 30); - T('43ejf7c72d8f8088fbj3bih90f', '1405082153027789457088306150219615', 20); - T('537377662473314366627013423', '1659910424702725658515219', 8); - T('8ma60g4d77ogd7gl6l8d8j96i2b5o6bd', '648142815659880474199092122299949894688142195', 26); - T('d3b35e07218e7b0c20bfc', '15995649127931990167915516', 16); - T('3002232001101221323200221231313101100103031012231101330120230321', '258826027845063265069952010556344994617', 4); - T('1qridbfjg80nkda01gp', '219762364301785223184857833', 28); - T('1hdei9i3rgciqki4kk', '6491983373329676555100676', 28); - T('3d166bc11', '26294890438', 17); - T('1325694580866459008894526620', '1325694580866459008894526620', 10); - T('d6d6bf6dljje', '20197332467018390', 24); - T('p1ph4npc5ifhk1m4j2f', '1457942038136981020113858924', 27); - T('4igf', '45333', 21); - T('0', '0', 14); - T('35a7757c09cd7a6a3099b0074b1bd0229dd7', '44396742597558682737158855425055583198089', 14); - T('110540301053', '432804633', 6); - T('fc1ar8b57hdr1mgek51b1ejaqc3l2j', '14320513748631668139007866084261399565403611', 28); - T('9bg5mp1g6jbrbimdb3opeq1c3gbajbaia', '191782744327193344704269800684620420221378415330', 28); - T('17m0rs', '30564838', 30); - T('2024420615', '82897232', 7); - T('92ja514', '1350637008', 23); - T('11000011103131232110013', '21995927823623', 4); - T('665ca2e5cce0h0763c794b14fg141fbc89b7b092', '57340876399944844035247195611985145713742306546252', 18); - T('94cpak8nov5n5jsja3gk089n8asf', '913033666774297494496300127790730852112223', 33); - T('242010412444', '140716624', 5); - T('12010002200', '1589408', 4); - T('8228i4a7kke940f9575620j95eiji0elkke37', '85158690741068950560220168929739588599306465964428', 23); - T('1e9dk7d31g5ab', '12420927280751063', 21); - T('100000001100000110111101111110000001100110101101000100111111001110011100010111101101011000101010101011111100000001010101111111', '42786787446528052699594039883348317567', 2); - T('3k486j3c08fhj8iml41g3ga2', '3126146499527434483823713052690285', 27); - T('bi6iisjvvlnkpsvkdwp8', '1445838597034929554695290655842', 34); - T('126270344754', '126270344754', 10); - T('334la43805b6j5k95f0a65', '123931244832514383361412135938', 23); - T('184920bc8b1a070d606bbd', '1868511579146852493161699', 14); - T('143031224020013310032213240120330021140214004304320142440', '2671868346315276990910773927582919302870', 5); - T('4', '4', 5); - T('1252554a990bb57b4787920719', '1147434430259691058685198853', 12); - T('8kcn44n4n2k6akh6515m1ad6', '1253494409726106013840668026194081', 25); - T('358aa040343b6b00c031674257b166cc38b', '257178834697945123965109260345022568295', 13); - T('c6b6dfbdc40011198bd286c0', '61499113032079803212142642880', 16); - T('13fufa8rfm7c9', '2629801716449273661', 34); - T('3nfc8nf3ag9i19b1', '3673872814701266818401', 25); - T('3166512513354164277266524513220176106234611', '274925189339848199032955327991581849993', 8); - T('e7mr7pkubteges7ak7qma2o', '18485960290768871891830807896729688', 32); - T('97mhfmoedpl16b81r313lslfb0d3ahrk55b', '488123867222855086416788166437659651327293157909633', 29); - T('6', '6', 13); - T('22bo080907cpgmo24h45oltclc20l4rs9734', '10405451217668484228774583686702481362996408865029394', 30); - T('86b8cha148k0a1l718kj9hg9dhd0eh74fa', '1655125180972045181280611035879161485328995804', 22); - T('31h16jd', '455317098', 23); - T('3575735559093705164576928117947264010533599186', '3575735559093705164576928117947264010533599186', 10); - T('3fo34cr8cmj0mbfcqf35b5gpdjm9222t4e', '19605601676847494221950277140066486701282651300234', 30); - T('32', '98', 32); - T('1ifq9j', '28624111', 28); - T('11941375807', '30304915736', 11); - T('64246753172171466452551711206021704632', '16980787914168592911515222526101914', 8); - T('33220020032212223313011322312310220032221030112000101110003102020333222112100', '22303612305914145667368014737273431444860872080', 4); - T('223', '63', 5); - T('954', '11204', 35); - T('c', '12', 36); - T('j24mdeul5i0smbejpbg2mrwscb54wwmwkup', '600423386348711943943690378212372893459687681945626950', 35); - T('bcd6jjlaab9jiofb6f6h6ha00g8', '25537871091880597881403599806322266033', 25); - T('37s7tn0f6ig9tnk7c8c7rffc4q6m', '24895596590360112154229623928710499351602', 30); - T('19751b6963975970b57bb7b746997b245983192a2', '26479394819881134034901962063085314419077978', 12); - T('3', '3', 4); - T('1043010421003143134023441324323114202400040000334203121104331321132402344242', '31350194075596081385648272410035836892718252280903072', 5); - T('o4sglc4m9rcnj310m9nqm7611lrmqe9eo', '4477835046237745517249653886244954948658609046544', 30); - T('ncdq', '918332', 34); - T('114840453324568213742188', '10388126375431293821606', 9); - T('1325642', '371618', 8); - T('443111423431241321342101131402240', '114790435587670217450320', 5); - T('7lpgsaosisg8arkmbcbd', '304282863628138208061599101293', 32); - T('7ib76c6p3li2cj43t1dk5au5jlfcd', '57375933993952595073463711388407424935224025', 34); - T('191e2a6lkeb8bjf5adi691', '132925541528054151438002596441', 24); - T('l1aqdbjq69jatffbg8l587cb92climt', '30031891651603255389418074895566086243934194397', 32); - T('40852838842682255543932763748781364902234498', '40852838842682255543932763748781364902234498', 10); - T('10fh318cdcc5d4f0b418c8b6d8cdca9', '47758452381716675478875781477650034453', 18); - T('f34a', '74640', 17); - T('4511565631241654652431163010554550101105031254624', '173977603700328524810402269464951078727230', 7); - T('5e7545h2668b5ail52a137fa1f', '20545488673771633172442655662596037', 22); - T('b', '11', 33); - T('327be62d5', '8119207775', 15); - T('4ejfrjo1u91wnrwq7w30ft3wrmbnukwab9', '573523620056731492643942313246303569824330571405259', 33); - T('127009363602697407785107082524162100683', '127009363602697407785107082524162100683', 10); - T('1011', '31', 3); - T('7cf9a45c21858e891798ad503930df741b93f61f127', '2922422513262668930583564242609727203228735133315367', 16); - T('458436820017127712311344837258866175737864032873011734', '1750953219563250455758063124003504566473420077405224', 9); - T('211112111201200021012000221110120020011101001002200202100002110020112012010202220202112002211102211110111202022', '76207615872454986906354894113586871317110730853497314', 3); - T('1b77l3r4ano12a6cr7m', '1672233795439662833861029110', 32); - T('pbc7jaab8ch0k0lcm3i9', '79612608910395590545180311985', 28); - T('2', '2', 14); - T('112321002011100100132031220333103333032113032102102330', '116071835591031872355033264235708', 4); - T('2', '2', 18); - T('48dfh22ibd8g686d6c7hg729gi2ii82g', '19527034789263406799378911097575104041422', 19); - T('15p529opb1me5asxv0kvb92dhhmvyvxn00jn', '1282638969189853870845839507929770245008746776925221313', 35); - T('dmo3cl', '237786773', 28); - T('46304360250101432053612230414', '2263254868286362202605959', 7); - T('324513a78b039aa624999b846c771339217883b781b56a3', '5543689730975453400411089215322289389594932504349843', 13); - T('cr9q5isidqrtldskqr9o9c', '135053305512535595499609893934882', 30); - T('panmd5okjtjqanieaj3o2', '8842387608432478043445480816422', 30); - T('2klgjkhff6', '29004353292634', 28); - T('865jbnbhee9h2kd9glj60', '33205472956554208933300869456', 24); - T('203141101240402110133321', '25448656205552336', 5); - T('67h54b429cjd8h', '984366776515330274', 21); - T('678049c017727c47ff4cc7ba35a849365fd111', '2308152223994224783375970725248611287908208913', 16); - T('3943a96100921', '12096243472017', 11); - T('19587422557', '936904834207', 15); - T('18ldm6jmneaao08l', '1261466197653666390846', 25); - T('31332131332322011120122300003333100230310112203022023133333110332120213', '4869949642092297086513535782457768257250855', 4); - T('6ds2g5facl671psmi9kopocsn3bfg0e2', '13996683735002911099235125659493455754164705769', 29); - T('ep72dck6alenjbtdan08q36', '4657326369780155877897242059139496', 30); - T('3ehpcnv1qmye2c61vyls1mjif', '76394919330212421657759781891604966727', 36); - T('bkelggb44g84m', '260736168381814061', 23); - T('9fijq01aj0ggkb31l3kp5lei6', '515503505760431112899810816546231966', 28); - T('20iie0e1hede3c4g0c9590g6g82', '3629916012028800240382232462917311', 19); - T('iobij7ij7j4jag8a', '17675386214341843525835', 25); - T('lkua2se8mgeqhq', '529292255664993899534', 31); - T('8d9840', '6765360', 15); - T('1s5mm61fb3g6dq3oqfnh7dmd', '18261245306493429843745215527871373', 30); - T('43034020201421421322412203422111122221223143323', '658038361800557817887307737318588', 5); - T('1n6vgb45qtdf4ikjtj25fi', '131855452845673101428220026231241', 33); - T('9a9717c775c2b36c6822a', '816836093782779632836942', 14); - T('kai2rgecm5n316ete0tj61qa', '191613767525038384468665535800253690', 30); - T('14401013144312402141400421441400330221110202204310', '34846925086734636841681380918788080', 5); - T('2a9h20f471ai95h651faf460ah4i7', '6777022823748317540045163909505737967', 20); - T('32j270nhc4bgekbd52k4gmjg7fm', '2394183168081128341140646193748287806', 24); - T('12mhifvg4v4bye7begu5wl17gkpaaojn8', '27656181148017299182041086613371692124335836981213', 35); - T('1c499a6b08497', '236220851334292', 15); - T('59pbjsqeb', '3495838469831', 30); - T('5fslkh97b6gr4ed830n0hbmbmdghh6poid', '10081808095888046930034956127945486656376182179651', 29); - T('72b397d', '120273277', 16); - T('11c4', '28264', 30); - T('316015042241513211046541', '89387023411491791840', 7); - T('19lcp7345b4r3qqd8m41l1ljeacij', '118276727933259686532854210784405707429767', 29); - T('3460ba73227a7b12a3', '28923607142014134891', 13); - T('1a0uln', '44071607', 32); - T('2240', '812', 7); - T('306cbr5cn81802r730gpmj', '31455598097537036058527866355179', 30); - T('133h', '8016', 19); - T('11000011111111011101011000111101101110010000101101000010101110101011', '225962873073433848747', 2); - T('4352590526188669238249982a05a', '622402855647499439865384142241', 11); - T('1313b872e4f69acbe969be1d71f982', '569050198457789316514154161677419564', 17); - T('6c6b4gg9675b92af602cb2', '464915643818894184675253282', 17); - T('j540fcg0b23', '197223400964443', 20); - T('i3ajkm8f0nbn9ge88', '790683382405880428525952', 26); - T('e66jfbkldf51lj3ff4cha92bh4i3h76eil', '2850287987851619314988966826056234683936420921', 22); - T('2ggcrh6e6mb4hbfh', '13215306058649270742309', 28); - T('89554664174942265124111587a6a7120', '18714353879248606802890337384240043', 11); - T('g414b2dj', '40369454881', 22); - T('b58368gh0g80lgi1gg2didl2ckfg04944gl0ab0', '11560775941796264717421207380163035997465478257097258', 22); - T('f9445c1a', '4182006810', 16); - T('5', '5', 24); - T('1526560366610442265035362226254443423206210', '553765118614712852621627633491154163', 7); - T('22202222011100002002200020112201101212020011020120012222002220211002000210220222210202122020200222', '55842912623697180438441630010534694569956648734', 3); - T('44a492308724488a0854505895041a0205631753753', '243693813005521214827257950133961142324762188', 11); - T('elkgaxe0nj7qcd52xc1fwh', '2120609821063037588735605933326453', 34); - T('1gl23enhegdlhljb5ipq6f', '3926268391749797408627184401943', 28); - T('2hg7egbhehahcc1f581d1a9', '39898359687999673183300054247', 19); - T('172347572204054163707174', '1129426023321529454204', 8); - T('6fbjh157eeid2ej4hidjg', '11454637245507530619115659086', 23); - T('46a22ebd2d0308431234d1d7a5e799e27394583254b86c', '373239676623123985927471130783407252534116489001507152', 15); - T('9fa2b1e', '3707379842', 27); - T('34343034', '309144', 5); - T('347687508325242200786366857', '22875086492752810114104388', 9); - T('2e59b1caf7e91g4c9ffdb398cbe2', '4740961834842729902995635598127720', 17); - T('d', '13', 21); - T('1d05afafg0562g7e997c26g5142718c', '78434399249593842169745603723971856568', 18); - T('4aff51f382c09c710fc5302d96b22', '24338029676537462451324711222209314', 16); - T('2i545e8etdhk8d4l110gan6iibd61n8', '1423893027311604030720414601275162449842291280', 31); - T('22001443021151101235211245245025454', '668923687080866304933463114', 6); - T('111111100111001101011011100101111010010110100110011000000000010110100111100011', '300402265535819852900835', 2); - T('100011111010111011011011111', '75331295', 2); - T('1opgblfs8839mofi', '16032906358388861446368', 29); - T('721b540a442b29b6b9a949371705b78076236394', '8794420240219128094357849185522299772425632', 12); - T('1707337005035225145674', '17427769821173697468', 8); - T('c169da5309db2363726965508991008', '292974756595688509640864085984168496', 14); - T('2874nt95970r9', '2602121717242626921', 32); - T('11850495657', '30108462611', 11); - T('895990ln1nlaa0o96q623qd', '257752897790289617728328339560450', 27); - T('8glm797oggo3g88jjgkdn57id06cii', '300975455472025404063790549176072636820468', 25); - T('374180043761116258361480038233844323506212452340241234', '1438877121553870492092518259559470761109318218910430', 9); - T('117j8g2g7kakh7e7bcbl0c9k4b65ag0', '19892904511763002652899252931188965080000', 22); - T('3167272', '847546', 8); - T('2na2aqadr6ftc6hhofi63m1lrnqn', '21182882506854980579454759175462290060503', 30); - T('29qu9npnpxs7cadd12', '248079850896649443598509984', 34); - T('4amr', '106631', 29); - T('28007349a873a53156493531a8a7104523525a3774188182a39', '32021550905735198309451788837892104007319202888697839', 11); - T('463511040000003430154003656024', '15885165020452488943863244', 7); - T('173486', '399846', 12); - T('133231001202043243140', '166046488649795', 5); - T('4016115014064440351', '6576217459168862', 7); - T('9c12flhfo75i23ia4q7pre8bp469dgq', '701074624625567608345494904482202635893993684', 29); - T('1091hic4fh383ia8bg3034h12df80diab7', '1620628900580902524870029713957325210730956', 19); - T('o8ioef0lde0bk138gc6agc57i5', '466926356481357301921407566566243000411', 31); - T('156166233517641635777855368480178700372231307125', '1153782478383987344932810256184711436759925846', 9); - T('i1hc0f8gdc8d613g31c', '4743234800984285827809232', 20); - T('353f272adf56cd1', '556923195492411264', 17); - T('63aj808b1j9i2l3752h2c8f', '2102800826252539448210723171375', 22); - T('hjl1da7gi3rdangpujtt50pp93in4h', '10531702766622824424209314777731567825942451957', 35); - T('3w', '131', 33); - T('95bmloc', '2250748112', 25); - T('k22vpihhfj99hk6e4iagot4tnf3td', '152675756450524691112514516843247633696893691', 34); - T('mdg36', '20720220', 31); - T('10459598a086ea0f535900e70abab1e2ce7377', '362873575854611890806983645493404163992613751', 16); - T('2376477566636626564635', '23033650866571372957', 8); - T('13914986769550370259286637241021842091', '13914986769550370259286637241021842091', 10); - T('11000100111000000111011111010101000010111001', '13529272635577', 2); - T('5ch4711k39hj9m10h3cc6lm19218k47eh9l663', '1344478086630991461378463072455217839508892798663492', 23); - T('63459562', '63459562', 10); - T('h4lbal07', '42968523451', 22); - T('35417144376113077', '1038983257167423', 8); - T('2isi9763jab3835ab', '1898862177205082054043291', 31); - T('1e97ga2aj3h09be', '2823746625228323834', 20); - T('2gmewjc0nsk4jug3dgwscu7', '6400228217909621185741059682632718', 33); - T('6', '6', 35); - T('3121331021101301211', '234027818085', 4); - T('3712ehigg25d5fcfh191d8f8de5a6f4j672f', '11520281194133048656485798164515576584655890855', 20); - T('434111433421313440000042101330304314030013001221322421003', '6620016156139174966816882667786009185753', 5); - T('2uaw', '113660', 34); - T('406', '1302', 18); - T('690tmau1brdkfyixuh7h4q0jg', '140340864443150170969873647334684597564', 36); - T('7hajj8r1e6e2g', '4027528437578814676', 30); - T('1fk83h78ei', '2081221039806', 22); - T('97', '205', 22); - T('21', '55', 27); - T('13j1oidkd2q', '335135749046306', 28); - T('0', '0', 5); - T('2een4crrde9s32jkqb6knn4m0r', '21038850143660963827557680221477657827', 30); - T('12loaj2940nebcem7l0', '16227765522388241333942400', 25); - T('2111100212300112320221331022013012032132213112003011213202121110311110231113030323', '13633934239202886688012669467423495607469030601531', 4); - T('d4d6hny4if4ascj159owdnfl8oblrxlvpty', '413441877376397794445086151818809162820265897964345799', 35); - T('8', '8', 33); - T('2220022133231011332120002011022211103321210113011101123030223230113', '14305810169077546460171468395578819525399', 4); - T('fid80b9icb16gdh3c1ici19eb879f6c619609', '173312570072706487103248993376364065928773435527', 19); - T('u5p39lqrcw82l0y9dpd', '311064991681509310112389324705', 36); - T('5788ebbbd', '59674095031', 18); - T('22322022211100011011323110102123130120132030331132000001021012322', '928020921651814319185701793477052109242', 4); - T('1020002001020111220102010211121212201202111', '134041409755206311668', 3); - T('61kgqe6qh7j6h5dmbhcpagg', '187437974023295879369323694043814', 27); - T('1525f4c59842083h36cch3a6acc92dh', '58487425566031862638196589521131679819', 18); - T('1323310230013310310020130332222000133132321203003331033322310230122133132213033030221300', '46327786194880935021662331012705260961479696272116336', 4); - T('1222112121002201101211021101112011002201122202201012001110220211212222021012201021210102002121', '467300445568875369947037784070967420441399325', 3); - T('8qonvegdmnu0aw5hw', '69568665577613648606318036', 36); - T('220020120220012211201202201211221022020002021', '2652757109859326311312', 3); - T('106327541747664237656046756411744551632275412233636062531656', '210781807562814008194311763577265460650228437440181166', 8); - T('19id0d164f6a26b01a8787cd386i66c3djf63bii3', '16455610792247832827316755327263321154889574099775563', 20); - T('3763572416255254335772542046235033', '2520123204503077543365320456731', 8); - T('14304746133086816270030', '1459645652707714950813', 9); - T('1001101100100010000010100000000111000110011111111000111010110101001000011101100011011101000100011110111100000110101010011010101110010011000011100011001', '1729790364338742795479957074258010329122965273', 2); - T('13640c20a010754124', '357697310375837778212', 16); - T('707506qs04orhsrerdppi1', '35973675807994335426304181530113', 29); - T('ce2a8529a4dchf72i9560j1687i9d', '133351074897666171754903799213958249001', 21); - T('24e51ifi4b152e', '94621388214723936', 19); - T('kf2792h1ei6ha1ehfhcb478671l50j', '17617644517562941018851095704171110933039', 22); - T('1kqn50ronep3ik2as71c', '10506891875702197951637673937', 29); - T('8fcgm2cc191v2k5m94q3d2jr0t53g6k8m', '12394963354787525293292048856772126140028495810838', 32); - T('1221203303301202', '1770994786', 4); - T('11024430224454000050552153331515000154434145', '3405930454233930313833095643386321', 6); - T('1ae3o0iklelbnlb7a5afldgoog94', '78973134539990265721524279153730463354', 25); - T('2dce3eb5f', '30433782453', 18); - T('12201db5b511f9fc661a8225f4f6ea3bc71e884g', '1092702138296823636859142055508527236195490782052', 17); - T('10222101', '2899', 3); - T('1a8j0feg5iefjah96dd0765a6adb96aeig', '13077143928228900070839845463145745373845976', 20); - T('r9354', '40906604', 35); - T('121024024241140131404411041240331403404323421413014', '128298909408254408631675074392372884', 5); - T('n', '23', 26); - T('okpcf7kj6gkaibogc87l755jk9', '5873631648722461721096776636076218101', 26); - T('120221112021201112010200202021111012202111101122002002', '34341775954281462267693056', 3); - T('351fbdagg58d05f37dg95b0', '3876964600282154058560351240', 17); - T('ab606kkfrbm0b43vt', '20450089454749253433872162', 33); - T('cg01k4h6e8edhf7j4jk3kgg4', '95601159367307880683256564463092', 22); - T('2313170567182781514845334162722086585', '52943234894452629237397323708821327', 9); - T('210012402421430434433211224202', '410248229704577054927', 5); - T('110001101', '397', 2); - T('230101001110120222121210110222233301023222023101213120123102130', '58839535885482273625594904155393209500', 4); - T('55e23b1cbcgehhe4def6685041h908g4h13ff5g', '2669182359503479925557363322521478498996957386414', 18); - T('1fc9hc27fm7f0b9gi05m2k7jaa1hbke0cm7', '33337457252900489495176823888495821992491880369', 23); - T('1699dd9a1d1861703c0557d', '107958390441765319600724368', 15); - T('14147e01ca6501f252ca', '94825344299726024102602', 16); - T('11c34b4ebfcggcfhae2953e13geg0b14fb8bggh45d35', '1036090998997567837002071965020056914329981363019169015', 18); - T('14a0291a2b388628531aa718388b5209', '3996214153071564773412011127782889', 12); - T('75362616525327077427633563743155774', '38963888713731612415310433147900', 8); - T('1a23264b6a079082734834885a08532421930329a553b62', '81150864498278616239579438837878483217874994006970', 12); - T('452', '371', 9); - T('144ma40bogqkpeo', '209181900230345710384', 28); - T('183252c3b36ab7abaa032914698b66740344135b3989', '1296812461469385668481395148233683766030915189997', 13); - T('n2c24d82a117md8mf', '1841858623472597640997953', 27); - T('1', '1', 34); - T('54a73437b957356ac721c801463275c6b763c2c5abac761', '9362287370778203876248441483257901259174776145134802', 13); - T('3dlfl87mc821m8pjbmts6fpo0u7kpfdpeo6l', '54254596415880694426461637870882068424348153030146597', 31); - T('4e7f9a6gd97b30798f976c761d2bgd412', '70818459574521833397436206841144875444908', 18); - T('14', '31', 27); - T('ai1hkchj', '19562256754', 21); - T('7968575b87c588b7c80ebb7cab7955a046255', '16663308132245987253286598155041222107098280', 15); - T('6g2626t1rdjf', '165622971742904452', 31); - T('3100548104371332670708', '340507102097498147585', 9); - T('13ec29c517d286454bde140c8c9', '4794553784351603034387761189364', 15); - T('20031330213232323031021000030101132211210133', '158957787606405250851428639', 4); - T('213131110022331020201132203013123012110013330010', '48846699476025920364315967236', 4); - T('2twkozg6fu4c249o5f5zyeec9czwqepc7', '179296745079015573585380066754316589663143881114055', 36); - T('26a7a2cc7339074', '9938939755610350', 13); - T('1401406016234566024656', '13862291742387612078', 8); - T('1a628b5613bb840750538548c20', '1099860000407698314785972483372', 14); - T('466', '1126', 16); - T('11021320220101031233302313012032302', '380331316042715128754', 4); - T('389hf883', '2127638811', 18); - T('29ie3ff4am2gmk8c3g5m6e21konfgj4m457aaob', '316274860130420327338945579781478121794869214895475611', 25); - T('202002310133032023', '36554535819', 4); - T('2d6g', '86245', 33); - T('3335430431155012310211122333325135535301201033251432425000540', '176432506934097595361072713115592833769129404172', 6); - T('28hh02ahb827dehd2e8425gb6469ff5', '113785157165293467441651522676088088311', 18); - T('lbe799x', '46401410229', 36); - T('542042344044043434516560152013305605', '2126711221789406518733117742978', 7); - T('14cc2eih1qbp7m1lcl1jgk9fr46383sm3vjp', '54455663158870289665155251942993016244412111864856185', 32); - T('301120302123222001', '53029223041', 4); - T('21002212001122001102111', '74328205351', 3); - T('6c3b796a99801633c', '4622054283778099219', 13); - T('527298604', '7643923564', 14); - T('ffaada51296f61e1e68gcf903', '5403735448335965376083431828872', 17); - T('470', '1577', 19); - T('rnail5l1bn85jq8bh7g8ln0kohp9fqlkepb', '1464423638887609511501651149716898849286416176934312', 29); - T('1eaicc6ocfph097440gjrr', '15465211311476430886891003649937', 30); - T('456655fiend21i0e618m4mm07bbg', '4955855013263935561852905206907470889780', 28); - T('10c69ba2fbc7250aba4', '14665823570079359829194', 17); - T('69971c', '5043852', 15); - T('1id9l4k6i8hke4n2d74e1d9baaij7llg8gbed', '368762199829326281974893275218436743619213050257238', 25); - T('5061106542532243626312166650455043365554255346431466040', '22133959010696779781390318938330831551505973337', 7); - T('5', '5', 34); - T('42224339b0580a7b7067022a', '27704115985298623082217538', 12); - T('74c698493dd81930c415', '551457940709438745789461', 16); - T('1cbi34hg3521e104i1hc729', '22589935080941762817906922306', 19); - T('13b0q6gqemo3dcj5l06f7', '197625953235284830356426908706', 29); - T('230e5471ql17ronr6cl', '235869451232670303532443141', 28); - T('3ea2ijlp8cjmp1', '14315135597535072655', 27); - T('242172304552', '21775354218', 8); - T('23705742311920354491610', '23705742311920354491610', 10); - T('40325421556234466622163363452036405', '220223274809854189346586380853', 7); - T('ecflnj2', '2776273802', 24); - T('33509', '506009', 20); - T('1d01a5hgjl7cbgkah3eilbhi', '11951010251677826156024965580908', 22); - T('kbbmei7l403b22c80jke192789k1jfldih', '17733393536564264087317496003121331121456941743', 23); - T('21b45224568eg22ebdgdcb', '144938388338383501238036430', 17); - T('8d6gezyo1r7kgunyh6gyo3vwlrv7n', '315495151231056477198722506140404177883380675', 36); - T('22221001143240330002123400003234100102313423234421344304343302', '10831690462680924247665518681482540721949827', 5); - T('2u62foj1jxdqq58n3dj8ksqkst', '1143893514844433004546634072814737767134', 35); - T('10325355', '2206445', 8); - T('12520777811783201841298519685547286', '12520777811783201841298519685547286', 10); - T('17e8083a944a58d2135204de1d42a2e4', '4404340011548131300800772375526798164', 15); - T('1118a2416aa6553752761a', '8183802068176534960841', 11); - T('fj0bbckn6mh7', '24031145125734175', 24); - T('4mdje', '3846284', 30); - T('dj0k7665ccfg4fh5ld73kej2gh73f0feb74i3j', '648001720001923293019461828150893010954852476585805', 22); - T('14443534015344414233131041354', '11049599345097890843494', 6); - T('35c274a509b72011851c279b1205', '4122336741698498861081854592794', 13); - T('e0e56b076bdba54babbb651486838bcd107826b1c9', '23326277500217281890367493168426531936362798766289', 15); - T('2achhbd88bfcc090f339c6dd4gffbe9bc245h3', '72332440899007196422573251018352913217544180617', 18); - T('aud0e484rtppi5k', '12927724743456282429620', 32); - T('1893b577b113ca2', '6577012154487127', 13); - T('150414855', '2005058907', 14); - T('323614332751473698986062206774a17305686a63090457150', '37696720390064545358579042379279742922532057398473550', 11); - T('e8', '344', 24); - T('2e5f2b623ba0cfee63689d427bad6eb6be5', '252471852786048400736119714699808445524965', 16); - T('79c6i0j6k19ml660j1c0', '553239859980946859861014156', 23); - T('0', '0', 13); - T('50030224252340154430425145221531101235', '310311840929542538031369361751', 6); - T('d0ae9ed728d186863961d16b1222c198687', '126669789677015144972609639930049865196602', 15); - T('c48dweo2roi3gkg1dc0hum03a6lji3jj', '3626814969878210822526263491353744863308498468613', 34); - T('34', '100', 32); - T('118b8a7ac2ea6941525103d16a8bbc5ee845d3d00db635', '92837971948140306642985790446832742660953864264056025', 15); - T('10011100001001100111110000111', '327470983', 2); - T('75c76616828b228bd7455c2c999219c236c4a7797917ca', '27940171295879883706960540178285471388494888097624886', 14); - T('kg179j06cnn1jh6glmrk3s141h7f', '156589475611419217431593938280129049582525', 30); - T('a5b4480b333', '649859623959', 12); - T('2991ermf1od46m', '36829745558819094802', 30); - T('16d5jf82kec707f9fec5df91i9k2b7', '3974871017260808935849561835122343397100', 23); - T('7287daf9101b1baa352ge5g50a15a2735eaa2ceefh', '20878363680987496322793600785003364424501723901933639', 18); - T('553423232610330161355053636604102414210315', '257966622392557728002609223143145240', 7); - T('1geeiakd63', '2121886850779', 22); - T('151oid', '60097918', 35); - T('1554db786111ab83632c0c3569728d55', '469086419082028176209975038936729727', 14); - T('6d2cce94ec843ac0', '218122797689114268240', 20); - T('ehkhjkfaf33r5n8r5srmth', '303423269013943738843820005454771', 31); - T('17', '17', 10); - T('1f0f5867d98ch1aeba8hc69dced97a413f', '487366045647121584986060742937193428723689', 18); - T('10200011000220120222', '1422685484', 3); - T('0', '0', 35); - T('2dfq4gemi4r9llwr0tujr', '5649561877814315213511808712184', 33); - T('1205ndan1', '224960838103', 26); - T('2afjnmenha35', '8837961904857363', 26); - T('1d51ii94186ifc1d5a5ih301h2', '557924059465873457492743606880742', 20); - T('r5n4g0no6ps5gs', '279088576244954004402', 29); - T('3j12unn6frsvwwb', '21668993189574689558603', 36); - T('37knjjig9rjji', '760884044919918742', 28); - T('1foo8qbpu42m7vim', '317396884789932427278670', 36); - T('2bh', '1893', 28); - T('112041514360454142431252232315620204503134442616', '6215681033732759258603480209777352275820', 7); - T('10100101011', '1323', 2); - T('22013130002200100013310001333230', '11663208147409969132', 4); - T('15c19888b148407823b9c1828b344b8c4a4b9478c846078', '2539097207098298474524756002937168478008339494491634', 13); - T('38100741b0ba7', '32754548919727', 12); - T('pqhp4un27wniedjg342ce4ssn18kj', '441373172882700032180399107069795794985758394', 35); - T('1gagg188890fjbc94jhh1k4g0e52', '895153322821681750246160888581105058', 21); - T('4h319bckj0xomusrreu4e', '19188647657289503363275186769038', 34); - T('1001100110010000000111010100111101011110101111101000110100', '172896507987163700', 2); - T('1f2rp6t0eftije2', '2646676016339395366328', 33); - T('ef2ahd7bgg654e7hh94bc7f1', '3815003844814091481285089876188', 19); - T('13o6kk4kl8bn846', '125216551882870328787', 27); - T('33210310231123020200311132220320203', '1149259353017133207075', 4); - T('114hda3c9758i3f80', '1514391907433723410974', 21); - T('6f6j846ai9ssd62qsek1a1', '33492652261548954183529841322978', 29); - T('27724823338b9431001b31a7b13237ab48b41188850a3b20', '1386830760394607501538378708339339174927213150934152', 12); - T('6jbln8sfg9bmr1gi3iqtmgi6c3sn6pbhbd', '36947529442995940436549729882382448862333593362643', 30); - T('8764hg81h7h15f7deh', '18379721313637192662857', 18); - T('811gj5gfidgpeb8mb', '2011069496924051490676563', 29); - T('aaxe', '405736', 34); - T('305383c510aaa4228', '6592270467788129132', 14); - T('5503607200750620360575714717560', '6972513910589491335440605040', 8); - T('116645642868217044018', '14517737883366084548', 9); - T('dhahqnlrok4pl2m', '2479775577014041842782', 28); - T('cpf25ffg8l3p1ib1n8ga96j2drl32rf8', '9394972520892725333788219596291929339951668956', 28); - T('6kpvicpldai0n7rnaoe9m9x5', '1107286946452408105661642622788152587', 34); - T('261ifm0bpih8irntbt3enr4isa4bn8l3rtb', '367197720067086066449024042284301785272031948516181', 30); - T('2032022213100210301323023223230232111333113222333230001112', '46135451060314504303355529120366678', 4); - T('cekd17j1k0nai35oaila6f', '6512290589845536947166047665595', 26); - T('1sa9ql0k6vq', '6528811470402518', 36); - T('2788515c1744b', '144221635071147', 14); - T('38a52cc273671b0b8b078ec7f7f17102c9bd8c', '1263230489190036409842245570352830262209527180', 16); - T('66f56', '535030', 17); - T('197c7cb589c999e015eca97a72ad491c9ad586d019ec', '610090894842715166825622127314166839310002841580622', 15); - T('2guc902a8t7jun5pb7pb7ps', '3283701567832717695895623064461116', 32); - T('78655d620287e6db76141a906c5701bdc47', '655497934873142286500331809443840511433799', 16); - T('4640170a8e173a17c97c572dc4ae', '250998262368302692675285521015314', 15); - T('2133433400401001132230143432411300', '273762691502915134653950', 5); - T('147876bd8h', '623895453377', 20); - T('5462cg16c5d87aadca1f734dce9e926', '1204772766075379104025376180982802601691', 19); - T('6eecb9a0d2fdd3b9a541f3', '134099742883823958727410163', 16); - T('gmjc8gd6ld67j1hcg', '205382570774701498109296', 24); - T('1', '1', 33); - T('2523014035132512253315120521134522513331043435134415550024255', '141880014505703112137860189697781827375878410347', 6); - T('11m0cjg02nme2e96a6kdfmoodi83h7p', '3013031187307321824945581807606052286997163', 26); - T('10110101100110011101011011001111000000100011011110001110101100110111011111000010010101100010100110101101101111011', '7366609054351701610086110120336251', 2); - T('1dfgb3f7dbb948e856b4a8c2fcac6203f0b1b54egc', '5181812657853529080935299746837888070235867612047476', 18); - T('54', '159', 31); - T('mc8b5e3gepf1q233', '525523234314787298854260', 31); - T('4sisanoghph8mc4r8ko0tclu1hokowgra8kv', '684135811180224801018880221858811529488221626606104369', 33); - T('d4c232c5h1', '2630171232487', 18); - T('7hc2h7i1e2b1e36cce06745954i7552430hd', '27076706386804313773324111944537138361927064353', 20); - T('149256bc3f1g624487', '1048037012773290717716', 17); - T('102210223032321301303033111130', '334582412443710812', 4); - T('ypasamqyaijh238', '143737877066768893777688', 35); - T('6ltpq9plna', '177369251586825', 31); - T('2f8fa201f5vl6bfy', '352859176463170667696909', 35); - T('1132608609770787564030397938212', '1132608609770787564030397938212', 10); - T('2dnwsieep7q9', '122108426181152211', 33); - T('10729856', '37631874', 12); - T('332b67', '1205900', 13); - T('54bd61680d7ceb5beb37894e46599ef77', '1802215542237292717156325458542562242423', 16); - T('3623770788ce585c3', '22397781910457053308', 15); - T('6', '6', 33); - T('1jepg0je5o6n78eoc4cbhchbk1fmg1i5m7', '86673579277719196099662870496657925074641748567', 26); - T('7', '7', 34); - T('c06k2k4eb0g2el16jled', '896355371037423667067354202', 23); - T('3a847dfcee83cd860720c8c0d8b53c7fda25d77', '20879758636120455697847204680129815020870720887', 16); - T('70', '189', 27); - T('79526679b2739b383954', '168988259175985567289104', 15); - T('4c328a9i09ign', '267323824394683548', 25); - T('eb6n6p2bkhqi2q3d07jef4', '16500933193925506222917225700348', 27); - T('a78345b8a3ceaa785c69b82b86c47d0b8d3', '101958714004435870099940928484001465270373', 15); - T('52a1a7655a049a554107197757', '570549577195104508415580932', 11); - T('8l0nl0fl', '150507080301', 29); - T('1cia018de01h0gffh28622eada3ie5c55fc7a7', '346689972196368767502452114289967602936650680304', 19); - T('bc86c2dh', '7158384323', 18); - T('beb66h1b42h1g6ff', '796506101028725304813', 21); - T('264701463721526107175255711722057442604571730762750705256542', '541396336231392418293871062570279037186171679825812834', 8); - T('34d17g', '6164890', 18); - T('7n5frqj6lbsfoshfh4267b91n45qf8f54', '488443138181884558426267360141962918059414061401', 29); - T('1bfj5h5mzx13z6slkfsw1mwypqlsmgs15', '83453369282181797046231963508586180290313617770473', 36); - T('1b668259809mpno6edljmi34n', '13043612843565239822455698795540027', 26); - T('10', '9', 9); - T('22b658253657', '1669392598243', 12); - T('10312223132113013103211020001011302202', '22924085214109545815202', 4); - T('e8a3gc9b39qkfhn7a877k8', '73337537709170036461394725372187', 29); - T('5ep0b0q81j7mhmg3lklhhd5joil2qq71qfih', '695418668680819693407024988950834157396053624624518', 27); - T('7113127129610017826894813814734722', '7113127129610017826894813814734722', 10); - T('504833417050a175571a00033306070375784003', '207340641858777856714830237467106311988385', 11); - T('78qc24hl01o32nl1b9obkagkl6f8ei7gp', '149119393785412110406988347201245769764862541001', 28); - T('fhh78b21', '14250920874', 19); - T('4b5164fbm0317kei7mh2jldnn12c2ckk', '27325910626851946593723470147559719546669300', 24); - T('5e0ggb1f199fgbg7hd6i68439bhgc99e95g4g1e33', '8109668848249742565130771662601144027802596607563179', 19); - T('3', '3', 36); - T('97a8liq839q2jk1a2ecnpcdnalfp3j6iq', '188719129529654657714378849535242845096426504370', 28); - T('169d38a3a649737433d7c36863d9ed3c981346a8632c', '538850185854491322031700163636042819763278649644717', 15); - T('5rc06oo7', '248431717321', 33); - T('4mjch40iina71khi374n0iln5k75d89', '42256608840244945294489743371747073478088568', 27); - T('12221111112122221210211121102011120110110220000111101120212101121010101212121000210102022000200102001222202', '744470241433567593087124994714749545239291673387755', 3); - T('2db9303w76pg3tf0om982eub', '202678684562832691213375034394009638', 33); - T('8us3ppu', '16323958905', 35); - T('76eb310380a6f577f166b90d28c3b107a', '2529121398079147937688504401561827086458', 16); - T('6zi4pwsxbopeuo0', '42901925859461436709824', 36); - T('4wtm0l6op452g5d0ukfuef6up', '13900763662628056937835621763527325033', 33); - T('1jnih9p6qjf7546jp0q0l8ckc5d4cmd', '44403896952339670058436709191269479548991285', 28); - T('d912314e0j7d945', '22041016952382027685', 20); - T('e6h28', '23816672', 36); - T('b73dda2c', '3074284076', 16); - T('264dhk7f', '4135804884', 21); - T('804274228116773141152427814054250885', '20158575172598902835228115918096347', 9); - T('23ib3bjdijk8k4bb5410a', '607873769279078604965999731', 21); - T('a6hb4dbg6e7gm42nbiem972baal8d', '4549058722674037827068667071194505505805', 24); - T('45d7233ed9d3b02ab1faa0f0d9bf18ac5dfe5dd', '248086945188765744497478402146757696039664616427', 17); - T('3122203153014053123250405454054141255311243322', '336066208633979782737442344609629378', 6); - T('4301669926304aa373740a46326790932a036', '132118669959027389980112041611329718317', 11); - T('adrp', '341881', 32); - T('3233212220212010212210020020122021312100310230101', '296614965335263805059597814545', 4); - T('34j62ge2m30kk97jfj2ade', '126716918529588548517026652077', 23); - T('2dd8', '16118', 18); - T('cbi6cklacc4qmhpeicgk92l4ecna5dio49294', '155480057705826337198133385077759543587893171560517344', 28); - T('1cc9', '38169', 30); - T('421625631535034357267563', '2525290811852796555123', 8); - T('1qj838bk869igobhjoc', '115685339404443983601600810', 27); - T('54cb071386a641e2036589bd90e3d49a6d6b7a37', '39240766526100951032727242882830164365238920302', 15); - T('2ei963c32bcc9f34g2ia66f91eh17h3', '642555509107905840901107486734813888017', 19); - T('57aif0f59', '293069958531', 22); - T('21066a6d790df66edfc', '2982109405734959108902426', 22); - T('240789669949708542904a12267392', '3758762420368146985528482557394', 11); - T('3766050301207656231423150647646364447', '1291785946520991837632125610879271', 8); - T('151310021205105422405525412313052003545043034123332302', '327490019360437760098446140776026159705902', 6); - T('1df4260b790d60490a8gfab1c4cbbgg12', '4303564154827738667782109938928048999136', 17); - T('145066c034296c1', '14572212708973081', 14); - T('2cm4jma6gk9', '727710161344441', 28); - T('270423591a8477593a978265860659850482952a2629a', '17490584572350116403287038674890859126167019559', 11); - T('8brgm', '7742334', 31); - T('136q2', '1301126', 33); - T('be2b9', '1873029', 20); - T('4o23p0d6an', '37303140766586', 27); - T('srf62prb7tl7qk7t73dte986otnittnlkca', '43189112923977571782711948149497678772791160765862282', 32); - T('110110010111101111010001001101010001011101101010001001001101111111011', '501483179338306460667', 2); - T('7agbe97851ffc36f1a99489162b52eafb5', '307786361732642783601055064914331084965166', 17); - T('9401c316a2c5708b', '476467776395576743', 13); - T('48217637502968090', '48217637502968090', 10); - T('3fon0jpk1jo5p9pgr6f4c4pp7so6nhd95pb', '588290809092568702675103575771741647312948810878261', 30); - T('702dk92kdad23k6ljd9i910', '2391852600323744303903407333754', 22); - T('25dfea9dgg42c49che64f7bc8771idih', '10077817429629058832781708059900951083873', 19); - T('5dc14757bb61aec90e3143c2b14ee', '5045511542117661075208474024001999', 15); - T('bo6k19juf873a9ibk5t09fgolpol9q', '209254750018939653487646684289205340364736495', 31); - T('7', '7', 19); - T('eifh4b0dfheg19fbad12jb', '87013738359168431501653737926', 21); - T('mgjdhbaaih094b46ojn80l', '5154851507795871179377927708146', 25); - T('2go8sf6in0img386olmhfbmblrop1e08c', '161607556749841399584405686305215260945437777544', 29); - T('6', '6', 29); - T('7mpkn8g3o0j9pik6fa3ib23n9ia9', '1261958045881925421127437894220522481101', 26); - T('212231022023030131223130221120310223333', '182782071163972676176639', 4); - T('2613203210505455264415513332655241663040344635106556455', '12467081099669883703235113908035091968240448895', 7); - T('1630720467054635751474753253627460422', '583694432446675939525765785084178', 8); - T('94hejakd137n48k', '342285102160921065220', 25); - T('167od46an4pkpsi3hl9erab6fcb7s0ebnb', '2208752247116288312429398287096265138047341117708', 29); - T('1a6kf5n4jb8fdfihm56km4183mmic', '632147076529030884714528591446221784892', 24); - T('1160605164826248954349876602042464161647577454', '1160605164826248954349876602042464161647577454', 10); - T('hc0f09', '33387237', 18); - T('3964660993859239689981872620682101954389246037065', '3964660993859239689981872620682101954389246037065', 10); - T('3fd278b8d795a', '1122771216988506', 16); - T('0', '0', 22); - T('12a572492dadb4c41419e14e5e1d3e93689a410b8c90', '440134561263388299663890810636098917176789570414835', 15); - T('3cat5h5ksknnnq30b2scq', '2283068063004048177101847374756', 31); - T('aa58b190195b8a2b242c856', '34697005906923003886801890', 13); - T('22v0inp', '2247117561', 32); - T('9c2a9e3dc0a71', '1273077348403606', 15); - T('if5', '22580', 35); - T('l9yagt4k1l7sppxkiv0bf', '161971068528812396345997940762650', 35); - T('41opx0v48cr1gj9uvnlpufako9abd80q5w', '1400711475411842935054148452748722383058297214051090', 34); - T('66odf78si3pdk3i63forppb1lgll2b86dgr48', '276206081640004784888361976308196895753527959765633826', 29); - T('6ac7e0cd1808d2e6154b93134ecae5e', '1289018068112858182387369331118635114', 15); - T('310111212000103', '878075923', 4); - T('14555f77ja2h486d', '39752861388169155333', 20); - T('140102440103002143132302400040001223232103134111223143040111130223220401231404', '1197061222107197331414639288099046337494969650509398979', 5); - T('222012020000022211112012200101011012112200120121', '77383589757349523721532', 3); - T('gm3hjn22oors', '204516082482475075', 29); - T('11001000121202110101001012000222012001212201210210110000211222200112001222121212111021000', '1305279370208619893883805792602512582417319', 3); - T('51b6c7a9820878798897', '7521848979002189462794', 13); - T('2584a257', '88684771', 12); - T('9622831859834a72a75a2', '6434216029758043315681', 11); - T('10121110102012010', '51794130', 3); - T('95607761058a3876984a1474768133331', '20067921113189362115162324154987500', 11); - T('1308584667613a4a2a51451862', '138590144081857578198409796', 11); - T('303124303051000610137231406655066133635770174121', '8500626221290107216014710817942733884291153', 8); - T('3b1j1ea29icf93e1h52ac21db04b9g', '190851477248266851912684038197347236596', 20); - T('b7b3c9a57487c1c39c51a44c4884847', '30405998793962949996970230863617614', 13); - T('23956aa67a1c0902a7142c5a42a289a', '5990721395892835344544973452522160', 13); - T('n2dro68c276c1ao36m29', '500136698154468954862520957409', 31); - T('mgh9n462o2da6iikmh3b2b2gme8mgoci', '491530325873995573329061908191309647059640318', 25); - T('4l38xf6', '8460907706', 35); - T('d5f1ab1c85421854', '201983925762344371011', 19); - T('6272990055345011144532205391668424858014', '6272990055345011144532205391668424858014', 10); - T('127il6blnag6mhokrg42585i6feb9pj6h53lq0', '379103572560507898585828059072007254689097272767096168', 28); - T('3b62hnjnf2ag543c5eokdgllejg8kkf59hicc', '730518050516683388784082123629631983409244437386562', 25); - T('8nnheh9l0906mgjb00cjgggg4inh2k3b9d', '31709631306533183931103075528584558673938676645', 24); - T('132', '132', 10); - T('3h3e4c00eiih1i5eebifh2h4k4b43', '40175422326439172482436371700536055298', 21); - T('2121434132', '4483667', 5); - T('3gse47h8l2j25172', '30940800974512039283108', 29); - T('341000443044511215010354204103', '136127973237647033674695', 6); - T('778da0c24f47774967183e20f8b1827299f', '650909720313013143267150228395755917748639', 16); - T('qb564jneaor2otdhc68gqs123cfuk92s3', '13948377585746116315226679137884300625553492956545', 31); - T('25ld', '48425', 28); - T('gkec3qp6mrsi5jhjmef7no', '174506635997402423118687087352014', 30); - T('3j', '109', 30); - T('11211102100101100011220020122000121211112020210220222100102212220202011112102000210012111', '1561458763443428746693446798877497187904716', 3); - T('145454052052432542224044220140403512204050112451433414045020354033532', '150096937333395628734778900213563908439843747504734720', 6); - T('10101110110111001100101001110000100100101001011100101010111010101110010000000100001110', '52848936898297944277057806', 2); - T('5736c9b7f9a', '32971047415618', 19); - T('1674507585', '1674507585', 10); - T('24hb0b4gbjf7cgj8', '73527411112945222788', 20); - T('1al5bea9j3kd3i3fb871eljb13kkk043gc', '1275824033146566143960476806758461477943738798', 23); - T('8b2', '10766', 36); - T('ba6bbb26802b2a8a95420b97781a2058791572601506226', '521464466313915762537835346317353826045525484287422', 12); - T('110100101110001101101000000010100010010010000010110011110111100110111001010010111000101100100101111001111000011011100100011110101100111110001101011011111100', '75247462135135296147483304900271494532907456252', 2); - T('1113562110102132653505161654522056473771101354321312031', '6710609582342689120085581704302230873683253367833', 8); - T('23400502', '44933836', 11); - T('228vicgd', '71168504333', 32); - T('3003414434123423022213024230441220102414322224430411', '1346050865149295997081509487231483231', 5); - T('m30phl4khx84xsj34wcdqne5itfnjjtk4ep', '259691039455794091563131654919327983964194791661478421', 34); - T('22461a6cifde', '432283541270274', 20); - T('1464600512311275', '56401597141693', 8); - T('2121122202120101111210020220210', '538808295256851', 3); - T('3330012300031114401330014013441', '3464973034967461079246', 5); - T('550', '660', 11); - T('33020323332302311', '16256068789', 4); - T('1dlol893q3853m48g92636r414dg7', '49459728783752884863701490260561300521367', 28); - T('6bmb2mip8fhq6bghjd78', '10108171592176668723712485818', 27); - T('959m42ii3jc', '878888942861737', 25); - T('1063bg6bn14mfk3e3o1', '29746944359805875726720509', 26); - T('35261605356', '3938913006', 8); - T('4bf373d19052eb5b393b58', '1068860929333821354151303382', 18); - T('752a4gp58hf3pog9mngpebo2', '13831046927668991950153094727269842', 28); - T('4211', '556', 5); - T('433500525', '7737317', 6); - T('4gb9ad76g2d4af481022d256929dg4dc87675', '985133603874828141261886573157932023568227394', 17); - T('1dpn0de8fbj6l2ckd567ge8maj45p2jmfo', '76060515087749557754895067969401915547233012014', 26); - T('6500d', '413709', 16); - T('1000100111100011101111100111010111110011101110011001100111111000011001010010101011', '2604661372805165686559915', 2); - T('759oe0fl', '156973518471', 30); - T('4h2op13e963hnhn1l', '369608946272770491801516', 27); - T('et76apcban3', '54151698158762655', 36); - T('85a47b903a7', '50835737401094', 19); - T('70b49g9382g', '25117276340860', 18); - T('6816593j79822edi3h7jjbaj5i7', '152330705063267926722130069067111965', 21); - T('8h50j6cji851dcf3c90h6b', '51537232193150669639514304916', 21); - T('b1uvn6m8cvfd6of', '67867262563984521850383', 36); - T('122221233120313213321122322320210031031', '125861429895573339784013', 4); - T('2595gh6a7628705i332884f51c9ec', '300353510882507195422219641808364360941', 23); - T('200212120111110221202222101', '5330324508112', 3); - T('15iji6dk13d61ah4a91m4eecej67l2lac', '47125646686754897581267667193187325517140225', 23); - T('12ho', '26588', 29); - T('4j', '115', 24); - T('110000000011011011111101100001100000010100011110111001010101010000111000010000101110010100000111000000010110111011111001011011110111111100111101111010000', '8573066822280330509997029656969204484303387600', 2); - T('3e58agf9190dc826cb8gige5hc', '1246066562583123755485476924274352', 20); - T('3706961c2b', '5952582721395', 23); - T('106502144', '6555497', 7); - T('3451a499a56354705154686763a3a37138', '79114710272261003126294782198609671', 11); - T('9p169c8ehho986chmfpe0', '420843323139258346157240672220', 27); - T('14eg266a', '776416222', 18); - T('116502640400620343322', '102138755603486562', 7); - T('28355677004068874128443313', '2106070737272795731626021', 9); - T('nqel8nnfk2e99k3id1m1kf299h5k', '10634808758829298719295188434620358556776', 27); - T('i', '18', 27); - T('501514303011045351151043045025413430140043211223124', '4083661748572002344042581553196268202332', 6); - T('51jc67gtmj92p0rqg51w', '1096729190801416843188189049067', 35); - T('5a1bf29425c38c8f22a81fc3f105169ce4907acbb7', '131694699796400245476746024523885969905255483886519', 16); - T('c2a33e', '22944128', 18); - T('7f5a8b16ad9c9b6gbfg608186agf38b91', '115776634518774027784211063476397070420703', 18); - T('1e946da5ed27825dff2', '9025563349429600509938', 16); - T('8856957692761177368973855070651649a103aa', '360994117177708368729629428077578463699360', 11); - T('2010211102200001110000', '22404845025', 3); - T('5379a6cc3748', '9456611769938', 13); - T('3a4b04cb4b528e10c566a180c9477c5e10d277318008', '1376197964280137220342614148681543675554523110918258', 15); - T('8vs5renyzluyc8rl34fib3ui5wppiggae80', '729183516825929850436740277863751712823686402504398464', 36); - T('5827701587706499416955', '5827701587706499416955', 10); - T('42591fk220i9', '2396927578798245', 22); - T('oajpedj1e17q5dkge', '1946120213098978975238603', 27); - T('1111000010000101010011110111001010001110101010010110011011010110110001101100011001101001101', '2326173895977887311754310477', 2); - T('7cj1ah4n4mdde4f', '483161982916646045703', 26); - T('10hcg8f0c722giai9cb70fci7f6ag', '669672956840092248394431297216875488', 19); - T('20212212102', '135497', 3); - T('52d16bjjk5b2gkghibk4', '164105040092908202550049352', 22); - T('5a5c32b3b39ca1c272c0aca32025182b0', '2570064118523150975450771620831844886', 13); - T('23d288aea4', '153856028324', 16); - T('116050533116030', '859603851575', 7); - T('66ci8if75644500i0f23chdag341fb59j49', '1087881863946554468036969878132901480676079689', 20); - T('6384llfdke9fh5419hlg93b', '34862705286427416058205496740086', 25); - T('d0frhs4ruangmm5jhp', '293524371757655532307398620', 31); - T('1ba588dd51c1235d25d2bb97ddc97300050bb38da27', '2522944524206913556204355519010579773376112207235', 14); - T('ae5ffic9a021fa', '452195817972105538', 19); - T('26444016101', '833900621', 7); - T('33233113022222331113010', '69225388168644', 4); - T('4bdc3b2b93e8cb0967b92', '5731840537208636428417938', 16); - T('102jd5j8ejebfd265k0mg833g8gbhb', '3107718466423767292009122732909038798627', 23); - T('74difk793cb96h7c3d6fl7kjc', '3457816970788290910213733483049600', 23); - T('30221001210002312311001220210', '227720131173947940', 4); - T('b6ba0a739c89b435660e8134449e3060de60', '1667517158964041521729990635459641284368990', 15); - T('df86plbcntpfs51eje4nwg4ihv', '1235835514259777075839888411102059589165', 33); - T('506132050005635323464330614633642404063404361136411512640', '1084754468050903323226297755149960657030618207525', 7); - T('12202000222102211212200220', '1621734114201', 3); - T('51j2c9b1085a5b98679e65i0gg1', '406702206426087714623273688096310561', 22); - T('22g1e05fd98e04', '21526429538375015', 17); - T('152305713596150626771408a7766a35065348310122012', '1181335871352138289886257270048037267074936415136', 11); - T('10717758873411', '2768061987676', 9); - T('85b83816a07b493083721288', '56296106638600534110367304', 12); - T('5j2bbmeba3gfeja', '121922415384534240082', 24); - T('8', '8', 31); - T('10277607558022478675857166831738961', '10277607558022478675857166831738961', 10); - T('101010110000111000011000100111111000000100110110', '188077030998326', 2); - T('5kpm5tc', '7270492758', 33); - T('2506a714784', '63800374554', 11); - T('34043042242013301344041302332230031124003430303014131313322004244', '2080090103990504899666426994140445994059953699', 5); - T('2263011b5698730859524510806838b7aa365bb83863b92', '96993840751786125665886676025172179431233429573854', 12); - T('m6m84kdc', '75938273001', 23); - T('38758513458382788045178062860185381467215842186888002', '166292428083754702524723009147547249346798940043838', 9); - T('4bhnimqepln5fa16g', '630260532539082351528008', 28); - T('1555100535210245322041304141135342035015443', '960612721329969379046956918521267', 6); - T('18b984126ba54378a409197b61b33228772b5b4', '178481932192815614023496736965622010377112', 12); - T('85c3ec713a41b3a91', '55094814325358219386', 15); - T('e45', '12725', 30); - T('460844611766389887ba8ba4a2b211079714', '266086624761556754577648371384666605504', 12); - T('225624015211256062001324334062320', '2657607429475613454644488243', 7); - T('686i87fbad4c59a8a6f7da1abhg', '510102928348460205068613539295917522', 22); - T('120354645453413557275444611571627313424176417756144520333753', '240836899455748097083887093250256470467559683019356139', 8); - T('3dqg99g70qop9ie', '384933516113618232755', 27); - T('h92ioci8loamk', '2602196299100018423', 27); - T('3', '3', 12); - T('1473631257945483', '5949114354201252', 11); - T('8aqne3kd8mhhr0k8b418473ei', '1048637133019307092199604836008301958', 29); - T('20213', '2673', 6); - T('1gi3ib2hi775h58918', '24189219409084535267628', 20); - T('29dc54fe38ig3f5669fbde1ij0', '833503078428796826688762347855580', 20); - T('1325d509c65da973839227b8c5143d6c43d993cbba7b5', '329881289130026584178299136878593170302229089677819', 14); - T('14g49i7j7fe3cc7j2c17jg7bhgje4b3g2fh70i3097', '272802468690487870109445646857507298063115670210904187', 20); - T('1c57b1', '1857457', 16); - T('100hd142c72ef166a6h9h445h', '4911395571502197789470629148686', 19); - T('8piopdl60m7c7p3hmlpsb5kho5amsh', '156766692402888022009790158482742306168035518', 31); - T('124b6bb98c1280c5c053155cb58ca9a7b', '523703265361788077644933507150951633', 13); - T('15dgfi8756e5647c3h73be76', '335597289586138002689108049036', 19); - T('123c', '21234', 27); - T('264453362706666107438146787', '17589366337294688071335514', 9); - T('1000001000110100001000111000111110101100101010100100110111000001000011110011010001100001101010001101111111010100001100011110010100101110000100001', '22684678246378182819785716745165465876847649', 2); - T('1fcgaha8g23db586i49ifd5chc063', '1165185085777837851964737766554067371', 19); - T('7pxo', '331929', 35); - T('f68dg44m5kp8gpn', '1666876518883127367662', 27); - T('a09281016407aa888667282461b42b069599a9a', '1027211842920428183779353394595382499256278', 12); - T('on2hn9rpaemeadihgljn6m54agjhb045hdah', '11102396046178622275186103353743351877958935735136185', 28); - T('11k180j1fekgi8sfcf63gfdhnfghq8c6hbkng', '46875230493473105664159872712226948600083973055131500', 29); - T('1a369a2616a711306a6434287723024', '33835620048560993311538138158584', 11); - T('415043345230010025122031405052354214145335205523543225245522', '35100339098704592825154927338841645808437394490', 6); - T('1re38adrm94', '587148820026528', 28); - T('7m2g6oc0lhenclidom2kagg5kfjg4oina5', '106851402006098786130154554561772902036425686505', 25); - T('332728', '332728', 10); - T('1101100111111101001001001100011001000011101001001100000001000111110000101001100010011011011100101100000010001000100110010111111010011111000000001000001001011010101111110101', '5097456801022432585476312678303126165684672742665205', 2); - T('6g98kb47i93am', '147121554856091277', 23); - T('6lml', '218837', 32); - T('3fe26f336209d592efh3d10bb394', '30258541260323091988380754480565626', 18); - T('110100102002202221', '177188389', 3); - T('b6dab6e4caceab483d2085d9d1766a088a19', '15928860703021466826033711809396661962705433', 16); - T('1c671a9cmkljh4739491kg32eh09f8k337', '1326625039330667581969787383813804136095791793', 23); - T('160b6959844a8ab23b27a69001', '1437328315622303205888330433', 12); - T('407280517b355977843723144a93686a45298640701', '8572038042461765480971133069199082943420256241', 12); - T('h975age91371hhbe43chiia2d', '85698406450142962437373788380907', 19); - T('0', '0', 7); - T('20013045354031552445055', '264171391963599131', 6); - T('38a2de70alnb0', '122375305409282760', 24); - T('3c9e2c9d', '1016999069', 16); - T('0', '0', 8); - T('eb6j293', '932312983', 20); - T('10101011211221111220222000', '953771059485', 3); - T('14ly', '48544', 35); - T('4a52p0016af1', '16120814872832879', 26); - T('160daa1h41jj04i628', '17061519740979136786448', 20); - T('32fqepsd95teekq70pbo', '667470048911505020976383369784', 35); - T('410jnn8bjoeomk74fn4ja6d', '124788397270763513083091234145493', 27); - T('3ef3fa7740eb1252gg5fd99', '4552875972769088346240367764', 17); - T('7775561', '4183462', 9); - T('3jou26ds5l3kfobk967jve6hbduuq8b8kkr', '15332447576016846623868933715298495290279226254477197', 33); - T('3akfed5xjcd7ixqmjbjlo', '25129890463803560823611370723159', 35); - T('66cbhh9b922gg5jfg47h6j', '13278090021200453785331902939', 20); - T('27eedlhdg8d', '1836671735070828', 31); - T('1020102102110112', '17762423', 3); - T('3fqsn2n', '3116816190', 31); - T('827a806c27934197c39516c1a260a581b689a5882a', '38503176957765921865456861356760222362428149559', 13); - T('2iok0f136a', '51715272179890', 30); - T('fe41l5eaqnchh1ebi346j0e4980i6oipe', '969883696027169474847827349317450953078655187235', 29); - T('14a2b930036b0644a86880ab148250891604977aa', '20642983383491072302934026303675112606383282', 12); - T('457513c7', '745963612', 15); - T('10027766104635746057', '1356176112501203917', 9); - T('152545504843833807110608416814641251026576331823857', '818321316273512555089438042552450294648569716128', 9); - T('100022102012211220200122111101200201', '51764207569214860', 3); - T('3bdf42r16fkgn6qn3ja1g70bl25knl', '3164854049998441022423696324674875839621785', 28); - T('5d569k4de58i504i2hjfbk52l4eee2gi4h574i41', '126711396842379940031754324715276160248231187472784721', 22); - T('2elrjoj7fttds1kj1eqe05924mkeg17jr', '9563118598851333187355892107063110561421940440136', 33); - T('76320618nf9en4355818i', '29166440299227823085424378642', 24); - T('274hoc18', '13962101283', 25); - T('3', '3', 33); - T('a085993656a6731351278a0261496b9', '2387749458635635883908416654291117', 12); - T('18bp', '57445', 36); - T('44605ba', '13064542', 12); - T('6j47fh3', '445502343', 20); - T('3140021040032442034032142420324101102421103121431111202023134014422311022111', '88957367186178880784956669030745448554566774878220281', 5); - T('6775333741557561774067363222030024220313353605226', '155993258459571709305776966445938258645813910', 8); - T('7b410ha9adh2d4dbbfgb15145ddf7', '1071007184595736715355171202846231105', 18); - T('4bl486be', '27306379039', 25); - T('2d047117ed235996e16cb8', '54422637554743220665150648', 16); - T('2g178gi7h371bdgabc4h9i024jkd00di1j80', '52404222604294956540188715269674775463381424101', 21); - T('327okdlg', '24807760006', 26); - T('148', '445', 19); - T('67886851384', '411369168340', 12); - T('1a7882a8178a98298920a653aa0', '2352073067567029324464577191', 11); - T('6bkkd7o2f4ipbmtt6lfss01l97sblpi', '1315571448647629811709487168066391442124096668', 30); - T('52104143220101400504102332405300', '7115605410380560227795492', 6); - T('p6hhicpff2ch097ai', '3602154508749776816617050', 28); - T('ddefh9mmog050', '3130965055875579020', 28); - T('1eb8d81a8cd02825b628918358307e2c5dbc77de937', '49381329097323571281085427147300803948474329819952', 15); - T('5g6j8of586ebi9en6am60ica64dj76acgl446', '1196611703139037684394056082836814593197976197986981', 25); - T('145301455322303124543303144112202100010', '675682273892366920630205240550', 6); - T('1332', '126', 4); - T('d2hqmv4pkhpis4kwil17sh', '1894404209949516584414030849488509', 34); - T('9c1', '6886', 27); - T('114dda1g9f4377h6', '72084475607353599207', 21); - T('1111000101001100001000111101001001110001110000011100100101000000111001000010100010000110110100010001011010101001000011000110010101000010001111001110110000100110110000111011', '5642505228059227244247414269863757684704851232189499', 2); - T('508fh1aaf1c0e9f4h52c', '9940527316953908325812962', 19); - T('707582405746100557868862537622284066', '17758735160295117568970479831136394', 9); - T('24774bk74l8im54cd3j6n5mge5d2a27m86aj1', '106152337767157132554701435127389724414365801045065', 24); - T('lha7bbb0g693i7f2hb7c28ib61l8l3', '18560795418562899773775421028146824268153', 22); - T('anoq', '457791', 35); - T('ig04h50me1', '33674426643383', 23); - T('4521045140035435334320', '107362640409615336', 6); - T('14ci84egi8905e0i507015e72783hecb042c588', '4878804467161002434134901366333118155781387556615', 19); - T('8qcg4bli', '120689031950', 28); - T('bd827aa941c4', '102957760172659', 15); - T('fch0db7685f8e5a47jjgi30b1g9e80291gf', '2687375605960327268686364570667231480832392735', 20); - T('1cbc96', '2479779', 17); - T('4123860810563631873', '621577956977422779', 9); - T('9cca75000ac59287564b4900', '2277995890851753018758808052', 14); - T('9ggj7xjgjsi3q9qry0m3h6e4qjn', '132479614685652095506805037318263627015913', 35); - T('4vgp', '227401', 36); - T('x3y740258u2xqas0', '7319695651559802393895440', 36); - T('13100833188435435125150061085463661600516', '198924198766645592728442581078146274410', 9); - T('f7bc4b91d86c645df413c359e5751fgb2g', '622025592428355872931685309924438488611961', 17); - T('11100011100111110000110111101111011111110001101101110101000110101100011100', '16795487938751986166556', 2); - T('g1ehkkl5ld', '28947072317388', 23); - T('132003011111302133121322221302000112', '2217164258386481979414', 4); - T('10120021102122', '1894985', 3); - T('1325505836763333045651420073434683647446736780', '11919401481124430210661735944237867636702382', 9); - T('49791378b016636074608922783ab261aab07ab308b63', '1464088016751655045075255651768104776706515226747', 12); - T('3m76k2jbo5719da6487kmap51', '35123523959570521061791470079350967', 26); - T('4fh5a15sv', '12497226572191', 36); - T('336765172584422549579974190155368820349813775', '336765172584422549579974190155368820349813775', 10); - T('c0587a820625', '21565963607297', 13); - T('1k93o', '708849', 25); - T('f5fm9dh2cp4l2oeas9jcdqk', '4764950243508633926985496746426500', 30); - T('d9soeeuqk2ofds3a', '502812647839703693193322', 32); - T('6b825n1gjjhbdn4ih1f2o8h4i4ld', '358210303755108885399620686031173721788', 25); - T('283xtndhybuwkml6di3d897khpv641rc', '3915242572217002753616152125461650495415068480488', 36); - T('6soqo98im8ie11i3ar5', '2696831302220222960747970815', 30); - T('11li3j9pe1bb1ojcmj55ml81ic6fb8b642m5n', '3607150919906347032136744566385373723352731718670814', 27); - T('q4gm28vepfmd', '1320994706837332870', 33); - T('fj1cj5fh2he05j36a', '47781006865064491040978', 22); - T('24febc915dfc243g620d6chc6f17d', '319045853086479420376719648609675175', 18); - T('axjeq4oscj230g0e9nrlxc7ukt0', '153295229065424111605138505063212510938015', 35); - T('1310113002212031201323001312121331212323233311132233111320223', '2416702837718654938336064508044074539', 4); - T('eg5h8tkm0ou', '16331639907615518', 32); - T('612b5fcgfg251857213eej2f01', '2032194356980031603784734383862001', 20); - T('11111001101101111001100110000101001000001111100100001011001100101100100001110100100110010110011010100111100010100111111110101000100110001011011001011000101011101000001011011', '11678786451764002081049400473764762680882990476021851', 2); - T('1a85ffkq5jtqqabjrfr11g9nn', '825825047012895137626767704923066737', 31); - T('e3c7i8hf6o5d1e90b1a4o0p88a9', '232026393767377308312827755103218776666', 27); - T('316c6ec7195e44b347955', '1029840967122771047178230', 15); - T('8legb275511j26', '2541054341067686758', 22); - T('83821342401386120262277735280270866873166', '1246775385198205735853522756093577523023', 9); - T('1333a1570743a16175a20a62266554a517766', '40200921314714807799085888577859275397', 11); - T('47j24pkin8', '23333085707030', 26); - T('26319444a9a30142989750291785a9a8088727505830635', '2061929969794917702400557105886923348678232898726', 11); - T('7q3p1', '4234708', 27); - T('1kej3a62l3d23g6525he408c930hh81631l9ghehi', '965311996501533239723956354548870830282992813453656632', 22); - T('30223103202020302120133313230101102', '935371222603691639890', 4); - T('88i2899dh1igc3fc3ge9ba2828ghg7e700id', '4834199907401772810967464568465313588983170258', 19); - T('hmbf7jk276f7fojedr1p6gl5q976geajbb3', '284317650265820333891656626427162630405435211338279', 28); - T('1676422201112714661607652471073', '2317596989962208644778586683', 8); - T('32200020323332100330223231033', '261248084065041231', 4); - T('9n6pnuwemvcmb6smt0v2b', '41262690485679650990706863602139', 34); - T('dc2b0efhb9722i67g57163a2ee073a0689g533', '2809681747620610587259840399694397347937589951716', 19); - T('8ngc8lewylbsnsatjhndyi7vyjbqkom3', '6370199031623917343971300162836561169065317503923', 35); - T('2mk52j2b8a5587d84dhpn1udvmmhlj', '689449600810762543106689709493580073372350929', 34); - T('5208d0737609053ab026ca28186d02941625c3947dbc11', '19374960955601935508953122309385766256870298527229847', 14); - T('51af', '34861', 19); - T('dda0ed04ef2e2b22a78e6455b862865ce', '4713519390205494839540473117533526320590', 16); - T('2c25mufgyjnptg0prr6a801gnt2u5aso', '1722590891706429392707864779225562562261184133879', 35); - T('2ks2sb6abmm1226bemg', '573090129852773147595705184', 29); - T('1851849181066300127651593990', '1851849181066300127651593990', 10); - T('7c4243ba2c42626d5', '17158768285212739043', 14); - T('3', '3', 27); - T('2kn', '3335', 36); - T('fqlr27m00m19rfp17c', '63771501247128679770543776', 28); - T('irqod2oc1pbe0s4dnhch9q7q3soc8rhd5aj', '998706528151123858219009078845461735670084733546613', 29); - T('4z26tntpn3q2er9pwri1ovygbmsc', '5210334327381751818125703692230802722918428', 36); - T('38rcbbetbf5f36uj084ps51fqbka4p', '355736129774653976136192164359376778173186929', 33); - T('1q3iwgn8occfg446ds', '191677272763836654973524750', 34); - T('1683', '1290', 9); - T('1ed170582a62cb2ac6c31c4c843913ed3568801ce6378', '11148226317787355356748077765017756339753205698186038', 15); - T('9019bj0j23id037a71d2f818a', '151057014706796380851381320864570', 20); - T('2e6nm', '2562806', 32); - T('5d4jin3sdcerj9j25ibg3', '3643909555936028919787218032171', 31); - T('5pc8hlj06m086i24njhggeli04aoa51dlb2e', '744260236987988475505418299871418940910369537440256', 27); - T('20130132323123223323201321021202031222113', '2552360031161222970268311', 4); - T('5da2y6ut99g', '14840050365248481', 35); - T('1083802151385314311018533036227557457058382761215181306', '3733408597840360399737721104598784068927221985247670', 9); - T('1453174752703234014531654704472633215271161761475347123730', '4742538088234854254854687216429269914428692374530008', 8); - T('3514356630112412504223242652361506044035016524224453444224', '5551155566932115229579274888281173021908256673491', 7); - T('9we3kreite6hf59jaxdtohv202y', '138846389291496608664050011275340367383354', 35); - T('b15ai5h94960g978431c984', '150193634897414415974425816748', 19); - T('30341416404222', '297793923408', 7); - T('ea944gi43hf7c8kih76a6gi7gd457', '152552752071312514741382931890385578071', 21); - T('k3cac62899efcgkde', '28856302935223233143555', 21); - T('1o7gg6w1c75ct1rc91g5tt0dnfcz63c6gnl', '137287343769800626880929715047781191933283098618048977', 36); - T('25e', '2091', 31); - T('g3592kdhll95dnbfg0ob', '5867544395796906365592047486', 25); - T('36ljlm6k7hlbhj24g34iljjbkca6kj', '34917605806636558754409253491187290532723', 24); - T('2013331213110201030220232320001301111010031211331331132312003112313330', '740251484693542342168090012177869705145852', 4); - T('71l3xyfox', '15866279172623', 35); - T('3g', '112', 32); - T('3f9f8a0d243e0fb51b2cb5ac85181c892287d599e5c0', '317847259344191067119088327577099421993210660703648585', 17); - T('a', '10', 16); - T('g7bhf3k0tkqjj56iisl', '6294112241758545358107863061', 30); - T('uudfufj6tp2', '34847370150901538', 32); - T('77fk260mc7demfo25il8c2n81717a682c9', '99005083348240474978989079910691552284523954684', 25); - T('393b', '6527', 12); - T('17', '16', 9); - T('7172b7g1d6cb1503520590483f1g', '11813382188355814044195049379459867', 17); - T('2prc6kn3266c6n7g28el5a', '7192303509446282093103429808486', 28); - T('95ogfxje7ls', '25276108149452713', 35); - T('4bfu5onl45ilrx9alz34jimt75t1', '4523010860648796756968176777170199400173093', 36); - T('7j5j65f6e8b0h97i30b0096h0e1agaj', '8552261610768542589195104260783405046619', 20); - T('79533920b86a94445760532769035154b330018205', '1373349827844291882840401376619651400305985573', 12); - T('1a245455c83151a3184a64938389322a55a6', '1734548256184785741768296183872320983247', 13); - T('984e5039808eb14e793dd95', '2946024784801310608062668181', 16); - T('53154012227153364107323333356132334', '27388210321734783241567604356316', 8); - T('o0qu28952r6jprsxdo6cput', '118349942107141459621585048529740925', 34); - T('3462ede96a29390b3', '21637787906719251168', 15); - T('18b', '395', 16); - T('673308785538823746262395', '673308785538823746262395', 10); - T('35225503612770774201320011176174535217542332620333552', '334458377978261177426569028332297268603291547498', 8); - T('376695373779076933422509ab99ab365a9246a8b08b2', '1105994899549067482501897563124358078250931847174', 12); - T('3869261a7405a666a4433a416748710960', '87879253530807463519018010147091126', 11); - T('7d9539285610896be3di4aajcc', '2574680758226813621572702606487852', 20); - T('eom9', '630429', 35); - T('ctnpgfics204j7lifau74', '30261420041988892749003398105371', 33); - T('1e30c76d4c3babeded1eb9d54', '149496328017603561036003908948', 16); - T('2g49l8ejj322oko8o1237li', '15046627139453716262719493020543', 25); - T('lac1ai4002i9m', '3210059280216614719', 27); - T('1002102222011110100112211002202021202110211010220021211102012002001010121212021102102001', '352510346325299817822890694447040983131473', 3); - T('1tf6fn7i5di6ge5u', '175030739395576483074272', 34); - T('282wcq3vpdit7gl8er4ww81jp4lagquja', '22759143758885240102880787824974474168226886339160', 34); - T('1e', '47', 33); - T('168009a43e598232cdg9cdg1a063587c35ac', '16061623027950486410325718902752796011029361', 17); - T('1a007541183e0822315a57de1158e0', '21307529572089996579521941688891385', 15); - T('3djeag7eibcdc6d87', '2424384796123691573367', 20); - T('230301023011114232204234331140040120224432024241342400200433404001440223', '111145690113580800793934548266340600396757527374438', 5); - T('10520860a57581009a8126046695028a524810847a01481461', '1112948582926775947692302960456787691406066035576488', 11); - T('82de71e9ebi78529h6', '2357479348054666852291038', 24); - T('318669479760997a65444728', '2831351356374386128515581', 11); - T('3270247822563079013554888236298a158711461511477', '2597684729342955847047035976952888032696181844728', 11); - T('551232202', '33100972', 7); - T('hlsoqgnnhlol86302lmbpc1o1v7cn39f', '2094068282660026545502003357264798290330943200753', 33); - T('17ag7ck44ei4cc0', '4404516346410619761', 21); - T('944dpkcbk68i6agk0d', '10386492460212205943074365', 26); - T('2sfgvqs01wmc0hpi3honfnq078b5', '635009624927118482002742877780185972981715', 34); - T('414365504624046053220263710402064311', '170169261032326095162398418168009', 8); - T('13hgdibii4e17k553j9gkhce0if5bc5ceai94hi4', '4361265005863822570682081694079725185789054191122793', 21); - T('lgg1jccj55ls9rm2ajrrq5cs', '430943296004749884742945946753353589', 31); - T('11101001011010111111100100000111101100010100011100001111011010010011111011011101000101001010111001100010001100000110000011000011010001111110010001101100000100010000111', '170573148533121700284914386034471572584747624695943', 2); - T('13413125266103565462344013350460103615501162', '3307282268566056426163788875674325818', 7); - T('3j', '106', 29); - T('b349008315969b8ccc7052a43c57b5b29142939c7704a801', '255164047256623112253163706181586265330065889629470557', 13); - T('94dc8b4cab1b6b3dec5gd6beceega62', '76058492450972753054531985019222386368', 17); - T('1ab27cfd2a77eh0b50ab24g2f', '7628045918745194687434147924866', 19); - T('34rkmn6on56piqq4345crmroc4m08', '105344564607152675293550922255989496280680', 28); - T('6420543526040821082041501606040060756238112101624', '41166399030228549347833032744913546219462846120', 9); - T('759075c552136629a36146a', '23890078166204400503313568', 13); - T('7ak705g0lje0d29h6l1hdfgijba35fba79d17h', '350347689943364175900597066972947125277514426393207', 22); - T('4d1fb3fde8905', '1356776945387781', 16); - T('c6e46gkiem1eiahck493g9k4c', '43565766401935427989245632115778237', 25); - T('63721g686be16e1e526', '87206911321780393529297', 17); - T('25045cc77b4debh4h916h8', '1616816419392758474839845354', 19); - T('5eaok0n30e0e1m6gd29e4a9f0m56j', '7740457295545283166939800698000390972044', 25); - T('1c6ad164b71af7cf0a92d7c2cf97ac3539cf4a190a6', '664509895940083432745213666480332815238360970924198', 16); - T('9605629834738021029786a867a158511013a52a8405a72462', '10191274996495287729155135548072159517142616697156216', 11); - T('3352cmj', '1500429243', 28); - T('10001100111100111110001010', '36949898', 2); - T('h3hh0g2c85bh7396gg', '94303598818479768768188', 19); - T('20141443402241032211400201334013114442204204132042', '36862688956020216748269194930536522', 5); - T('6mkq', '261962', 34); - T('457ggif1m1bl2ee98303l59b', '88366118125435849323789834859634', 23); - T('5147bf2lga7f7069', '2549101427903154350745', 24); - T('1c32affbg6cj1e15ce', '21073984633002181450254', 20); - T('p8cra2eidd65ph9fo8n397k', '7933449586075462280012611659119330', 30); - T('4c129h0fhb58211aic7ai6e6a927dabd5236fc', '954786819466789784055108938545862635435383874674', 19); - T('82033830', '82033830', 10); - T('1010010100010010011110001110011111100001', '708979517409', 2); - T('42478377375073344992', '42478377375073344992', 10); - T('24292893d565157b8dc04379c076919d0a67d0080dda1', '618333628399653605854827547452825613797180483032025', 14); - T('12021032452513221510441200345501434243555230315414240', '39091544699662086629498022647413959018000', 6); - T('lahi07', '254389623', 26); - T('dmrf4tjrc668037', '6583228333332288876097', 30); - T('18d32b6bdd20482a56', '49972933524301416292', 14); - T('31b2hd51f35d1d8966fbad2d17fe07112eg', '14764753272450920274778007595847767027142732', 18); - T('474370686', '1001518425', 11); - T('4cbb8nr0ga4e20m32ak0jn1rhl2ef69', '329672291129572906563643430219747967931125305', 29); - T('tads6deu8nl7wsluarmb', '2083847353511862075875525723903', 33); - T('3i9360ehd0f2941h', '60311321989193348951', 19); - T('11101000001111110011000101110101110011011011110110011110000000111111111011110011101111110001110101100100101111111100010101010011110011001110001010010011011001000001000101000101001', '695150897721330668961198822938644201466146242961639977', 2); - T('1012111122021000000112111200100010100200012011210021220100002201002022121210010010200002112211012212122010', '150771843971952583323861645995496523521380113647165', 3); - T('7jb1ijfii2cf4j3b3ef3', '41826352819841414347389903', 20); - T('5t1n3', '4834593', 30); - T('12', '33', 31); - T('27ejhdlpeek1acpp57jif5kh56ikpliedhi', '2945305406573061366174441740050992970724142349520', 26); - T('17bb10407140593873565730389587876a2438811b26', '42315982694007165665825252379784192339494272526', 12); - T('n0gq7e71hoa7jibe3kcjljid537', '973294813025943583919577094627375341675', 28); - T('57f1a732hje05bd5g8ef', '28247010766435335146531495', 20); - T('2fkb331cc1f4enclm0hbn', '10695289997958612784724248415', 24); - T('940jymc', '16755335182', 35); - T('23b5a42785b', '144253937159', 12); - T('332332', '4030', 4); - T('133336431314111040125445650165', '4830459607356940965265100', 7); - T('6ec41', '882361', 19); - T('22', '22', 10); - T('0', '0', 26); - T('373pbof59iq41ja80np3h1hb66c0a', '39086275552205397897730850178810132407635', 27); - T('1cee21f1ce8gf26g6e0b8105cg5he4415db2hff2', '15459905127505680786167890226971872272009384340116', 18); - T('87dgdwg1renuvkoeavwbim8lpxgv4vb', '401000049256626858774368667583141736311922306663', 36); - T('3isj14grpphjnc1nfpi', '1407040022579438811290045268', 30); - T('lotrwre8ar', '1711090616092927', 35); - T('1gsqeka2jl1b976qi8ehc6', '16374903938406169822980318273666', 30); - T('4dnqe3', '148629955', 32); - T('d3dkdfd7nj9qigq12i6cffd34q', '7986534045217039049966056077355386629', 27); - T('30015015540350210153424450312551312411', '186187559266853112245008019767', 6); - T('jul8cg1ela0e4edfg0', '3527382384060143413865828810', 35); - T('110122101100221202120201211212122200220201020120122120222111202001122120010221202110210011210122020', '80448857968083617554152347697248793494050049616', 3); - T('9vemie00f9u3rnk4o4mrf1v254vu9ns3b5', '466890651064760271528412966235388536094543461616997', 32); - T('111121313111310122021311332010123110123202033302202330211020113121332102232231313031', '125128719044623689856157423015050011081778094857677', 4); - T('240451003255052453254351310432552514340023252', '46587982443617743794995947075156496', 6); - T('k5o510ef', '272684166231', 28); - T('bf10gnal8c8l50fgbk', '46108402152178609412805768', 28); - T('42324441444331403351355513', '125935341458202497061', 6); - T('75gdpii', '4277974110', 29); - T('10153514333', '63726609', 6); - T('1h1g', '29110', 26); - T('393b41a3143a454943', '8380580329886369091', 12); - T('59304176726473587130612', '59304176726473587130612', 10); - T('137d5j42h356jed8caa21jahh9ie44b28c', '10043027274116397234553163118775038349528972', 20); - T('49u64', '5733968', 34); - T('165a8273521956a4', '6662096633605824', 11); - T('65ggfd2h200', '6949479788349440', 32); - T('9', '9', 28); - T('1j', '42', 23); - T('an11', '290731', 30); - T('32504342124451030441114503214444040214143430154453032220413050500002', '47554002877149413362434118805244987488297716371458402', 6); - T('430200', '14425', 5); - T('3094a85981a027626759a77870223658270a055', '11513511128194690284501911822638050206045', 11); - T('8jj7ad301acg769fjghhbc9ccdi2aa53c7f', '1545920497099530665176555768420891600032828955', 20); - T('23142012635205', '238490986074', 7); - T('3p23slu2or2lkqci8', '4573755691405244852154952', 32); - T('560c11b6845a072c0c22ba28144472650a753ab9', '151894844910815511057842865133583436415605129', 13); - T('5688884955', '5688884955', 10); - T('9v1bex484u9g', '954561932219597956', 35); - T('13699363090125374585452111316030', '13699363090125374585452111316030', 10); - T('10300233111311300112121130110032132331231030013122231000013222', '6329196093597682159006452132074488298', 4); - T('g3', '275', 17); - T('a9362a295020575', '4119405967597805', 11); - T('4cke3ggbhkg3kkcd8c2j3e23j3h3c', '177610512943070772233329421133901768714', 22); - T('aejfebhda5647d8hicfgg92fd62c3jbhhlk6d', '22681378063543267593175360612666532727335364021641', 22); - T('26bk', '24462', 22); - T('40el80h7h5998lghk0gckh9a45i20gkia1817hd', '22426986371581060650291320125302165512055992788579187', 23); - T('0', '0', 34); - T('3cvdf0ffw8arpgd', '9324689059447121647753', 34); - T('7456545364015236001000', '70016530198021276160', 8); - T('9jllkk12hej0', '35833846973541838', 26); - T('2ksbm90w2g', '122159535406606', 33); - T('5233', '3837', 9); - T('25cc173935aa89717957cc690287c8ac5897114004974', '25388874872205695306782055570702284695041270251885', 13); - T('1221222002102000210101012122211220200222100110200212021020100112111120', '1636824719836500158668182780963606', 3); - T('1111232131122000111300020210302202321011223131010022232111131311120203011211', '1911752105791956460258073810226603098202321253', 4); - T('8988550feh2fb19l0i6l04gjj7', '30634356015861131671092023444404629', 22); - T('oeancnlo9ijbac77dglo1ask6ofnl4k', '1824014149455616255108864549225566262750135574', 29); - T('11002012221102210200101112000211221121210000000111220212101', '6409268570990190943079463412', 3); - T('36qdh85pljsmb8g98m0s', '37533975292710168814998325828', 30); - T('170gj', '999499', 30); - T('3932581210798432862405499987164457', '3932581210798432862405499987164457', 10); - T('3ch7258m07q7rl16r0bg0', '7927276440553837446719503793985', 33); - T('20257774520426157193756088561635', '20257774520426157193756088561635', 10); - T('951ge58337f90b1fe68h7bd2d95', '4025392988076931185675982866053147', 18); - T('1l6k7cm15ufsup', '189871394492066962875', 35); - T('321b959d5b325b728b0326e73eaaa41', '602332697103765494715420483143314186', 15); - T('10568796b24113372942513671b638ab2210a1b7b107011', '45581696081476450286298571130938321064311891651405', 12); - T('3b98k8120ccc74n6ef9bd1beac3hcfa', '885608666388200390191758079174867768107634', 24); - T('43433b2bb4b422', '1289017868139471', 13); - T('360l0j8h2j1j45bf0k9adajhec647', '126767233401225735441881274095914648023', 22); - T('b80kmr23044g0fh5l5faksiprorems', '28955063766509964293677139808717178701084446', 29); - T('1da98c5a3d4h821a9k1af', '1137471209110481204473484095', 22); - T('618450432807535130378045834820211332', '15559949571019773458768163619429673', 9); - T('5tko940pe0jrm6', '218650082993546849990', 32); - T('a8eq7cifdb9mhiigh5b', '599921281419889941644672261', 27); - T('qxk39a7dx68egvn5s0h01w8', '251307205109451556038643316790309853', 35); - T('118hndcbh9313e', '926322242353869974', 24); - T('24440334411431203422412133041402214043204340402320114020044014', '12980997135625297861036354210265432195471759', 5); - T('2gtre5qjheeuh5uodo4hik5005w0v37', '9025673405212440662562000938329712048049568180', 33); - T('ghj9h0d', '4079838763', 25); - T('3083300286348713118154344655632051', '95902949580067304421978859746787', 9); - T('2204342431201401113411321022041242024', '35481463480601705590180889', 5); - T('542093a55a0269031073108234aa3', '8815351536757882311286614273051', 12); - T('7745a7c782', '5832395843129', 21); - T('7a934244281251a48524aa43', '7150917669356406106144382', 11); - T('2xnwqdgwrh5uecw5q8y4dbasw0', '2372398626016802230522523263083931807680', 36); - T('45oggh72', '267833757697', 35); - T('9d937f7', '331639225', 18); - T('2', '2', 10); - T('61k1g5ekbid4461', '127823767005507989905', 24); - T('1e4a5ec1282e03ecb924350g96a9', '58781744149373563800579530600867870', 19); - T('1b8e5095', '688404805', 17); - T('0', '0', 10); - T('5m5i8ff349l8bf5al1k686cgmb7mdejhjijmnm2', '166279352831336816425981143513635237161255195203340754', 24); - T('1804736634422744877', '284505311624250607', 9); - T('mtca98yofgyh4l8guo3u7me8qyt', '319476383658716451190075727542821418162944', 35); - T('214', '670', 18); - T('0', '0', 8); - T('8e0n4lpe4qgji4aem9pk657a14ff0a4', '74359597134400809115329522029847080723202805', 27); - T('6b', '191', 30); - T('23e9f2fa8h8k', '1265749744976616', 22); - T('2khe6hm38gkfb935jagneag3n', '3819659602086817228674066252275807', 24); - T('l7fcfbh1mmg58f8lfach85k', '121103810194801760541361186598895', 25); - T('585d36c89594115ab2da6003336c', '49406265527885526964870839515652', 14); - T('i7hc8e6g51bh499k3d20cg6', '2254290174662249778124399696926', 21); - T('29d730cd9c087e9', '188433258449504233', 16); - T('4bbffc982422401d23e107db16617c0c0', '1611023225678920504550274579287300882624', 16); - T('399eiccfdg776g8ie7ed51199aicj3c1i26', '3114217897390306876666438603763020155894866697', 21); - T('a0408a39c0347', '233539456688506', 13); - T('1244321202100034242200131421310423344110212023', '45404554130117615171994334460263', 5); - T('100011011001101111', '145007', 2); - T('m0id8e0lii79i0hamjm6j3lo0njgb8k3p1cfd', '19142712657104634174482218734811759840268764171688795', 26); - T('2fi15dh0gj44', '4042101164149540', 24); - T('15frc89bucts2fbt3tggm', '1485349439418814854186055680534', 32); - T('c5fc', '169140', 24); - T('816746485234485786017137575711607104112550441248', '5793937697453244801258576864771947865560248340', 9); - T('131002122121310201002130312', '8173384848647990', 4); - T('92', '92', 10); - T('4c66j3i793d79fcl6eem85ggibmin6ff03ii0i', '5273269349565326953768769699813092661952318735852690', 24); - T('2100112202101220211022012101010100', '13083662499139368', 3); - T('8i6rwohm7plthofwaflkou7075t6w', '64957478046184050549268164669753853232592056', 34); - T('3ge52j30h118a90aq1li8bqhgde42l', '9162992827240438154336690317061119953413480', 29); - T('3pgekc3n1f5q4n7d58f', '229611421142039521550129532', 27); - T('cqq5mc0alqf89', '14801280699144682761', 32); - T('2i8jqk9ecjl3j7pokbi', '553717099454231407510522435', 29); - T('d', '13', 28); - T('3iflgoq8fkd', '1084961028184109', 28); - T('318836651153123015848312384230506810010032857747444671', '1210321032121068276111676497142116640496938793305774', 9); - T('110410143222242232313', '117657104649083', 5); - T('2f1qe2qpoc09khcfaq9dfk54', '4888325003381937548488277795720464', 28); - T('ugfkv6ssxm8bprvcbcmeld', '8115207037438171760870129030349898', 35); - T('3p7hk8j1n1h0n69em6p863dimcr', '164991699304116139976836789916894063947', 28); - T('b4194d586dad9d52398', '4821265933637921163698', 14); - T('2320m01gm0j0ebo6cjq4nl82iclc2', '25308651911329509101643504949204196120222', 27); - T('32d470005nmgog06cg', '3510779211405082452397344', 26); - T('1biia047d46e', '190055020053562', 19); - T('453554hf345l715n01', '1225398359686044688634305', 24); - T('6mocq54g41kgnpb67r12lf70jb8076578e9pe', '85364451999663221329010408002474800688521919163853530', 28); - T('26fcl84k3d2e8flkg9fbbb13db51gefj1il', '10116499145802283445045451241317675314169646973', 22); - T('dmld1d719ge074f45', '16572445824579028888206469', 32); - T('6dn3kga760j5d3mcng390jg1j977', '1045864553213695887738689074624417178057', 26); - T('7c822a', '59831482', 24); - T('3', '3', 13); - T('7hsfag1ohnswxi6thw9sxqf0sfl1fhbcq', '76526067136899944638578262007377029250134038384950', 34); - T('34fa796a05fee3b566107aef6fea5327c9f794ce6f2', '1238848647360391370812154035309938766206217768199922', 16); - T('62aff0j6g27cbb62fbi6ehc8ei9707ie7', '2631513170276940677418579291672958038463487', 20); - T('160006380611399874532975360', '160006380611399874532975360', 10); - T('321113214233340303122034034341', '642745280323070611846', 5); - T('0', '0', 11); - T('939fc0e1ed37f3gfg712', '48100541569978054645730822', 20); - T('a0778l44fno863j1kj8845kanonbjic606o', '3392085958211408076013624279917504691844418843924', 25); - T('6h5a', '130636', 27); - T('l9b0it50qmnedap8johl8iloks', '905661954380795627228973456176408355484', 32); - T('bfeb5lec3g0g188i488e', '4228466062971689766442645839', 25); - T('1b', '43', 32); - T('3', '3', 13); - T('7a3p2m', '440231854', 36); - T('617748df2i664962id56755f28id9e', '73665342183530469462696099210511390428', 19); - T('768505531614045785056572382071602027184721164318550231', '2920164631077979800661618205224712844072060341452933', 9); - T('hm7rb8citq72i762a162cbqef', '23520916221723656411579473355413514703', 32); - T('16ik63anb3hed098h0p70g02k6l4oi5mgfb9c', '1093730280055464079356271243419045177402000893676762', 26); - T('1a7o19hhppbr670tea3', '1634167009538284294723516739', 32); - T('c83i7i445c57c239d3lblijk9dggbj8gj9', '10687139874282278734927122410769711076904192751', 23); - T('h6h905643ldje0ell031b6a7g0l', '1384376087764757994009208722127705501', 22); - T('5463p83imndnib6bhgl8e62k5mq725', '1666904828897862368867031608875610218601012', 27); - T('17al0j92go770fd7ccb300', '294982324454146101460571267500', 25); - T('5030794a3a16181221353142', '4499832616666426071863261', 11); - T('13013306320776254', '387810637118636', 8); - T('2aba034153b7624807b6c8cc6658a84941204061a47703', '380713175788771350162354052927260664309723900025732', 13); - T('15enpfxat367y28nww9sx', '8787844721197737785481977672788', 35); - T('2907465cdd296accc8ab4bd', '793605010131443253911401661', 16); - T('btd90hija', '33333612923926', 36); - T('1100001010011011100011011010100011111100110100001111', '3423573638106383', 2); - T('41022452241053505514431155445534332343153435032144521344023203', '1225194524811083036078094796606648972619116520691', 6); - T('e1qmlkug6atzc2szmrgbaj', '6760472143725608443176424992006187', 36); - T('37scnff6r4bke6blfcli', '19989390915717056236744855873', 29); - T('334222400013230015435445313223214033', '6226915450088276574887871237', 6); - T('7vea3c0', '10270438893', 33); - T('1c1d81680a2af9', '16957483031426736', 17); - T('m96mg3', '638353398', 31); - T('ld1n9', '7148145', 24); - T('21', '17', 8); - T('1b1c1bsf7n72urusb', '986592048657092288475155', 31); - T('22002021201021222120211011222121200201102111121010', '644884299955469783555760', 3); - T('38hya9w03adpnml1wt1', '20146753328658169736251561841', 35); - T('678900492958281937296424307391310688109544200506572255', '678900492958281937296424307391310688109544200506572255', 10); - T('1d4353ff5f56571144g1844', '2089805731314765099203371537', 17); - T('ir6039m4ogo6rekmap628lipn6g3i81d9j6', '303029496939924707734813747542699909042016864377194', 28); - T('1015155663263325215616644031243334242363653236243', '38015525426091545614476127416406246189660', 7); - T('7m8bcspos3p9n', '12799934209662533825', 33); - T('t10i9jj6rf8d4igqh2fol97p37ue', '536606270683321487460519767895396158935512', 31); - T('14afo4gl6', '179599291781', 25); - T('71eg1137a13bf3hh8ab3195g31163460d7', '1885141378228919225779975457128661363992129', 18); - T('9pfjef8fl22jchcnot331qs7j', '2782134740188232381925166871891437429', 30); - T('372196b06930740a29ba60a7', '806032988961165618240479843', 14); - T('7c', '152', 20); - T('4mkcw59u2s8c6jncek076', '10990686957535604207639130208131', 33); - T('a8gdb61okldrl0aik758e53g38aq2552hlica', '129065494496127233059548754102332462801434930608863802', 28); - T('a1nnrn99ivdm', '705391832310469964', 34); - T('2042221145454461340562431', '400103241982606737303', 7); - T('11000011010212021211022010', '1131323251782', 3); - T('4n21rlmmp3', '125431688294070', 31); - T('m6i70g5a', '102194648194', 24); - T('3q41d63orgmotlhgfslqc20hb82kfe4rh', '717334587965790065732270364786517943405016532427', 30); - T('1101110000000101010111111111010', '1845669882', 2); - T('47ol1hogcnk5', '52105694239787194', 29); - T('1021322332210220132113300001221111002122210023222212121131012010300', '6288547997581842904727500905920033218864', 4); - T('o23ot4tfpccbofo7nf6gboa5q3a5q', '13790372660580043232353319429756002887354620', 31); - T('1kb6g3ibfffaf1f4a3h8d96e631h', '991195679687488764520434246680302343', 21); - T('2158696h99hhdn1s21kt7jehj', '1264237421480805368218573017622222919', 31); - T('x6o5jx9cv74m8', '112160215850835853303', 35); - T('2', '2', 7); - T('57176028a440a918503', '31415193562039976560', 11); - T('40b80ab60400181118c', '457553993478347736554', 13); - T('223320033212201002110210032011333011012113002031320310112331022000102', '238898959948440949613215671638042952900626', 4); - T('11a8g8kj0fab1d1kilhh9hf', '364282053955268028963745481233', 22); - T('11240455044265520645036360110314304240205125566156', '307183470929453944085729413338106398817956', 7); - T('523ik6ij13kk5880ci6m59ef', '106368852856173920584075434741551', 23); - T('1714', '1309', 9); - T('2dcbed61b0454448ee4g201fa7gef68e59eb358184', '788683087187581292214395140742054830008036513743616', 17); - T('101111100111001010111111110111111000111100111111110001110011', '857702623840828531', 2); - T('5347712744236105712406353', '25750698989482171567339', 8); - T('37g34g40d04974eccbg', '48767935869856137341083', 17); - T('vthbi9q8o55jnbxvv3ti', '11814978679218404459790901458966', 36); - T('8d69r3qf2ottj4c0rl72g05o1mn12uww', '2508962139336692901577954469144032904191497935832', 34); - T('5g9fg3c9dcg1a023b712321470216gf31adee74', '341537217285112703078107777185027563591020784046', 17); - T('ccd721fgmr5e4', '14282288858953258436', 32); - T('a80ae46dhaea67', '438302256218022495', 19); - T('12916146057', '166501275246', 13); - T('6tiy2k8iyrsp6qf7xmqe9', '52080446267291461713344751743099', 35); - T('df3f6l', '70550413', 22); - T('6je482j', '1302612547', 24); - T('184397303', '377967098', 11); - T('611985c74c0c61193988409b7ac8080b859c3b9cb173', '4830410812954644160553068441629408675970314449453', 13); - T('7r6jrt', '354387775', 34); - T('3008fcuib88j392ucbg5869juji', '1788819762374982410062695434989906399169', 31); - T('163437548162880523537684124013727543874884361', '1658096721479270315378604205589291844831901', 9); - T('b9', '229', 20); - T('b3j5bb58153c37g6e0279j', '65358334895093431573877660737', 21); - T('11202213003212013202011130120200230100100123213301210211002', '115077606360628968095680622787709250', 4); - T('160003100bc818c7c2475a649b', '10313273121890479048668535784', 13); - T('659a832355510920755202a222a0813216a0599645415257580', '76738460570358936081428047041239658092598283361190466', 11); - T('8aa7eb5be50', '9528363302480', 16); - T('1a2a38', '311374', 11); - T('15', '26', 21); - T('a8qjvrqf7anvqln9b9kh', '407074332757747109859008292497', 32); - T('qh5oal7t', '911800095997', 32); - T('140005430425315', '130664921807', 6); - T('41430355414103404513450514422151345210212415430454523', '124894395792287452864745586425404037844339', 6); - T('1', '1', 4); - T('8l1x5am4a32igljg2tls4wjxl0wrm4', '5158839313249239164751957239861646046595412099', 35); - T('72a', '1219', 13); - T('2h6ii2g3hb2caeaj3fjka04a3803a80fhfibdfa9', '10413494305628146258331381259290048979757145255897373', 21); - T('2483bb318b5c', '4223782433155', 13); - T('30472a755209b73aab2237b3b4b6ba6b4a051b066b59391b64', '229935298182638819911567178597930454480466069384927804', 12); - T('2j0k3iq4f297gn6n38ugm398bj6', '7804799583798677561149968484488848426376', 33); - T('10bsq5up56iew5ew2frmjp', '146381119737686760083072120059007', 34); - T('322', '87', 5); - T('421345344324', '1588619644', 6); - T('55rq7fpd9510d22kgga9qt2cqdo5ju5a', '88593570103139158692015868786912788737196709657', 31); - T('13d29b67', '3933280722', 23); - T('1krw15t4oraf7onn0tiqqmdvon', '149796236898283951228532905796770497668', 33); - T('3j96a36ie056hg3d9a6kg4kbhb4', '93677997263967875177503265523746296', 21); - T('15c14f12e032624a1206', '102735615609474072056326', 16); - T('kd250h4kcdnhmk9921m91j8b', '7181407883202320763157477055926079', 26); - T('180a70hf7fb865533heg09', '21177926122372456937157622281', 22); - T('2d2650f939302bf9306f3db1fd19a7666712ff8', '16109941674613560268665251639244419228113121272', 16); - T('14042210021400013331223212044400010400022334204000342123141440202040122310414', '242980031176762892729926943688121630090892651895119484', 5); - T('16140eamh8k8c0i', '14642806436348304641', 23); - T('4201033713624', '292199307156', 8); - T('2306577543183936183865665a22384343a10249a928654a561', '26737226623626911856928473582008646056500695263735591', 11); - T('9ifb', '79511', 20); - T('21002000210000101111101212220100202201002210221202111222122011010010000221020022211102100020112111201', '1215456332160362004993935235255673868488941612481', 3); - T('gh4j1c8ccj0ha09a', '2297228448562517781904', 22); - T('110602312535653306453056163441062133026363', '51720570582674121452566926758640555', 7); - T('25hj29dkcjk21i84g5mi06ikibgj38a91gfm8a', '544909359244447938678618718321934826921483716508566', 23); - T('1555215136316402505015533551631166', '14161948712279262986113894899', 7); - T('2egb72aqslj7f3coqcncq2ctmrdaso5bpo', '40494263521822533022866511308330148471304529398018', 31); - T('174d0ii9c8c', '8469481708812', 19); - T('11eznfre', '81447352970', 36); - T('6147402214224431303026413646714237211640331341', '270142041873110958246056630570783242040033', 8); - T('26217103620571', '26217103620571', 10); - T('1740c8293545021042b730c704a025b203944b24201', '95380799134993785564663731354331010215990332043', 13); - T('hfa', '10162', 24); - T('32312554053142020121', '2086206758458321', 6); - T('bb', '231', 20); - T('a652scv2d2cetnml8q07rin1bmmtnn', '2634349543405059211976189682479993087452778569', 34); - T('28', '58', 25); - T('4hf703dcjj8c2jdc82', '64072923883505417548962', 20); - T('11ba86915a5600811428ca244ccc5a5788c802c91259', '910070795625285317118605406708822896222785514764', 13); - T('23llqkf9drl9kq8', '633595908841101403781', 29); - T('1b2gj1h2c2aekjbid916665h1jc', '36512492798947082162412228775679670', 21); - T('10100100001000010111000101101101000100001', '1409871436321', 2); - T('23h023952c59969gabbhe14c3ef18026b5h454icg', '24106941776124250340342392848281591922711841101639456', 20); - T('4301240430452331524422321005351031101230421411052040101430514215', '47575980866556413314221304862772696911550410330915', 6); - T('5028926799', '103581232435', 14); - T('qk52htpg5s77qeeekaw2k', '62421682061116668942703365250451', 33); - T('hx1wjtw4tu5ri84krqr3p', '239520584446386005614208719787701', 36); - T('e8d05b12f4d1d9h5c6134h0e86fd', '113048495116012205309732881337506579', 18); - T('22212211020210102211200022022010201211220202220112220100000200222122000120', '200105700798705299655405516905014140', 3); - T('1k9mn0qj86h3pe0594eicn1rqigcbj1', '126683083370995227384223569141871955819814409', 29); - T('3to5kkghh', '6917888883859', 34); - T('c4jsebf02dii38m62j820hhlhg4mm', '1076807142156967950235640680591835512378940', 29); - T('56420594375697116243914157706969195542878987', '56420594375697116243914157706969195542878987', 10); - T('240343101031431344', '2160207295849', 5); - T('2950239ba8c6665809b903936a215', '42198574579570963238277599179178', 13); - T('472caea81c1eadce316', '6619962484583137949196', 15); - T('1iff68050gbdi14', '3177537542453071224', 20); - T('4nsujphp4e4oeh', '553600630574258719532', 35); - T('403130431322252150212401000303143211423223', '328068405789131208325952848031295', 6); - T('1101300303030', '21433548', 4); - T('25303', '3783', 6); - T('2071022121', '808867882', 9); - T('6c4c0acc549735bb09904', '2268273210775487799698029', 15); - T('32033203021201120321313110002230020201320222201010200020020', '295814627854058541670739255760126472', 4); - T('aed9b9ri5m95mm', '845724641799698178142', 34); - T('5o2mlgf3ak4nkcf63e3hn', '249802225714608272506459114448', 27); - T('2i1f3', '464703', 20); - T('ers5t39623laf5pi6e8nchq9adel1is3468', '63245054851996044208467781885652929644411675671796077', 33); - T('41k2o04q', '54799568010', 28); - T('2jog4c4b1ck2facnjolid4d648', '248639818689269111187343577521300733', 25); - T('315335405243353303023000323013353153411', '1233705100662924822920998240783', 6); - T('c0b42d10550ce0f4ea97567ede6bae89e93b', '16786869625005321512335207434991310677338427', 16); - T('1i3sc73cm6h', '683826880532477', 29); - T('7u506tlhc5aj1dbb', '187087416521171722983827', 31); - T('5fh04di9lh854bg4957ed2c0ji2788', '4868812415572782947735163151740587465316', 22); - T('13030030412302400343203111232', '60506277551461769567', 5); - T('18423115785830864674513a49890a6a369653577', '797488530648724604221696847400592018064367', 11); - T('mib33aik0oe', '2168445661641239', 25); - T('4f373b2cdchh4ic9ba63aic625h989b383a48hhd', '356883101285661886815711288455781633251556555968023', 19); - T('49645837a599899700a60', '3277077666371488259808', 11); - T('30467e8e', '515946284', 15); - T('f88gnqjdhnqce53g03rpde1km46qc9sb9r4', '805058822427589583306256678962040241179999133462129', 29); - T('1mpqq', '1265644', 29); - T('dd5d03lda1r2bjmfofid4dg4ln5j27d', '1001880008568720793424449251386638391786461149', 29); - T('481kjai1h5e226gikj2i08g85ki810e80hj5c1ga', '16164773357903179257478471364779107060390719020084606', 21); - T('cc312enkg34of9i', '1362114899632793344734', 27); - T('a523a89a13', '53831004783', 12); - T('bcb3750ecd418048f3c9a907a1', '14950433883660044294408311998369', 16); - T('404902a03666449471524a9193353311260037114433a54294', '305850369678697383399472296340395515919908283719915920', 12); - T('122202012113', '6955415', 4); - T('1ush8wqys6nym91b', '410160199735843616675135', 36); - T('am3230j9', '66436375484', 25); - T('402524530030233354500101105335132042113514123333551524544415115012', '1550904369864527359367977424097726543505044596334704', 6); - T('75khfam4kcnghm715bdaa6kde15ilb6jd', '1063550394889085802339598789900636157058462037', 24); - T('15ckebn4a8bmv1jrov3jmj', '90034910889272889928459408320145', 33); - T('74a57mj3b7oqfkjdi7qt4c', '148686083061828528921843173717108', 31); - T('2a1cgmci7leh2e1g6h212il487aj', '1051977661293043554453465596384040119404', 27); - T('177a7a3a9b4414a79617934', '904337669156803925941624', 12); - T('1334504451254233444333525101252522240052410203505301300545545325', '16952109548779766921097840692944523012508999766805', 6); - T('81jaht3g0q8ebuauk', '5857490476197292433536452', 31); - T('a3664d6c2801a1d385947d711b40c94537786632c75cb', '2755747140622424147994575137709870068882656069074383', 14); - T('kbk7bgdb07g5g49b8jkflig1hjaae3', '17494482520856869278705339934437230552543', 22); - T('21cc019d87d6a38d7240d0a', '35045098625804789921638718', 14); - T('b7677de626a96290c23c7b34d2a3d48b9d993ee5', '84740181377896568043867047475707714193154444115', 15); - T('g72bbf12e0', '3252509311068', 18); - T('4b63k3', '35585187', 24); - T('441345035204314004532312424335512520451', '1749684973421935188191842585519', 6); - T('2kecacmfnzc19d33', '567413050870791669672831', 36); - T('6a065551905199780109695521766', '997063787222699268458056520053', 11); - T('82a8dc8782612a', '15920695955540515', 15); - T('14231143130424222102345535', '49386499907903489507', 6); - T('20200331130223100331230312230310123302011310332130213210', '2763276123199138513786811130169828', 4); - T('l8sjd62j21qtfk0bkk', '275049147514425322241710520', 30); - T('8b5r027799go6wmw0nasgk3fm', '23196991346952529463855897995513260706', 33); - T('514c5po1af8i0g2g508', '148726327273315469093588700', 26); - T('db1cdc3', '103874095', 14); - T('497a45', '2518269', 14); - T('3rqbk84od6a', '5884908609656152', 33); - T('1b3fu94ovmgk087q', '50894505143084876046586', 32); - T('bf4g4g44i2bg3gafdh', '352245026857755092633435', 21); - T('1bhb8os3jig8a0jjg509', '8544492060848011899078076234', 29); - T('9bb889jb0boh9004ghi4ifji999', '21001275121677892617892428312654193359', 25); - T('1', '1', 25); - T('175cec17gd755f6cebd6d71caab7', '2387636247630379533351295291428493', 17); - T('1q3q4d1m332m2bkaid5', '114462382134814329996673745', 27); - T('1435cb611aagd2e35026fb46a2b9', '40981399468733686494173008403141599', 19); - T('15qocnklsa4osrk0490', '463533209002652420364303870', 30); - T('15240705643046435', '468452863921437', 8); - T('73c49d6e96842ccc53a2c8b211', '1831900048463710636442691320716', 15); - T('4a8d8f3oodsg4fy1ua4mzpsseul7o', '161563492183061675654277113651271343378498788', 36); - T('jx0e9', '29927249', 35); - T('l7q9fhvql7jsu1rai6g51vm8036882eun', '31048769411271240430732754144531195600735144328151', 32); - T('12144', '924', 5); - T('148930a291006200a1468a260360162', '25069985375355798281506802929220', 11); - T('6646091881a040835', '1207532109684779177', 12); - T('3e4i0f1chhb7c', '27052411261074351', 21); - T('1312221302201230200', '127402646304', 4); - T('f663flb3h1cm2fm7cia24hb1lh265', '2052532182599394731797271980461818317874', 23); - T('29knujohjz5r2x38fcil', '841388446955060573107520827677', 36); - T('1000101011', '555', 2); - T('11ah5iab16d64e51kg0k7khkb233250fifk', '967644642858844521497590773738918042685372937', 21); - T('17108461113891045589910352983286918980713352258990', '17108461113891045589910352983286918980713352258990', 10); - T('1012000210011211001012102011001112011210021021220211221011222220022102122111102200001002210', '10353644175713994607088273235575881655299917', 3); - T('1hb3083fe2j735', '283424846911969208', 21); - T('13340672a7748b5cb36', '1794939665419760555526', 15); - T('1321012003221112321200303121230000110100012002320330123012230210303221', '659301932561021877769528555071668952911081', 4); - T('47013a004030970099911357a0750aa569aa72509508244576a3', '598824846543948874720639846647786926677632860889870751', 11); - T('k59bb2gfie5g1', '149027214830542483', 21); - T('93', '228', 25); - T('2244514405433141213351312', '11689824549798354428', 6); - T('3391990050', '3391990050', 10); - T('322240420551002415103245414443533220432233513', '58925535053757685361596112546437173', 6); - T('1448918iehd5cd705a94g4b2987603hcge1heag364a', '623766172807410187823974273716557093465964345387560462', 19); - T('vhh8f2apoddkcbte8qd2cv6eo07qf8l', '45026967317927008054648848145141282924620758293', 32); - T('4gcghhbpm5s', '1921232692885665', 29); - T('a2tv2d23w5ax3vro', '2228115152562528794000532', 36); - T('23fbge2h54fb39', '46123055007002883', 18); - T('1211013220130122010000203133130013313230032100013112323100', '32815072429253845963147847323709136', 4); - T('63665b4143847051bd8112a28125339', '151192052168606148985101333943415831', 14); - T('121230151444000352035', '5018902103174711', 6); - T('17o6rjepo7o', '379407511108636', 28); - T('3e0jd35h9fj984ji0c952ha6a0619ei433f64b4g', '2035447414961080260067064298213540337611882480996496', 20); - T('9qoj95o', '3872991264', 27); - T('2ehjmmpq26', '48937594118466', 30); - T('20203010100313111', '318125401031', 5); - T('16624342084015440626027666617826745786663', '257801163001691389520291595409112640129', 9); - T('99ja4077kkr89mhi7kn2lin', '642847989448256643908613736023263', 28); - T('1200022320121322202111310132001213031202322103211003223112', '31208956033081947189359407770385110', 4); - T('ch3n6m933c1i68nfdld7n8beni82ni', '135036167864868994578206007145405022688954', 24); - T('850dgbj1bina77q967n3icd', '562583517839371187906929749349565', 28); - T('1c1b6hf2b6adcf19jaf423gdf6985djb7f9b', '5511020452322809692026505861258306260094622191', 20); - T('368h14b3a9iceii0h6837ag1g1', '310916278043275877944347017914923', 19); - T('1498c6d696hd218ag5a38gbd23255a3056758dd', '4840693541321204605632050758615059700032223696728', 19); - T('1vbb', '64875', 32); - T('3337pb61glb100lncp21', '2391589725484953912041378217', 26); - T('262523728', '116165285', 9); - T('5dd205e2db781f491bff', '443054323304979904404479', 16); - T('bfa04g4ghebgkae5j56ic11j', '30241293639507272594473537217404', 21); - T('9bg1a88d', '32375211230', 23); - T('3164e8k31407jd14algmcl79', '169629850617492399214780875675633', 24); - T('724887434828033700521303', '64556976680043023374716', 9); - T('1030310123113122032223011230', '21622677210575212', 4); - T('h94dk4e', '1974926286', 22); - T('620022671924219242429260867884371762289253', '620022671924219242429260867884371762289253', 10); - T('637151001154473265053799092722218122', '637151001154473265053799092722218122', 10); - T('140388a179a26299bcb19c75', '54670958388535719430386529', 13); - T('c0q2e8ilnral78q2a1pl', '37703922421575356885249800545', 28); - T('15e88026c3393905e6b3db31ccca6b7', '268084119743214063479478076068474022', 15); - T('5660c7b6977c29ca6', '3658116372348412435', 13); - T('1l', '45', 24); - T('2meqp7a6g3d510aq97l0kd1gel3', '46566148499279171126893633952988857703', 27); - T('10010011010001101011011101011000110001101001001001000000111111101101010000001110000111011001101110100011001010001000100001010101000100010000110100010010', '3284369793875476139142406227062347521500187922', 2); - T('1519a3010603c6051198c8c744', '9843602098699228915851703184', 13); - T('10210220102220222021112112110001202201210200001022000010000002210000010010100121110', '1690033786016843276059524636331001957853', 3); - T('674', '952', 12); - T('3530013143266263651', '66147388776605609', 8); - T('6g9jfk60c173eb5j5a8id7j3ea8kd', '71392844079040287986961370661351593891', 21); - T('1b5qepfq17oceqlrkb0j40l9', '2697119998800124545301978047134805', 28); - T('4f82be1gec8c4c93080174', '1114866884635660480307604358', 18); - T('84lb400kqln0d4ea3c504lnfc1cfnggmrp8', '429932989531641627287877704445651412410140512616235', 29); - T('1213031124022303141133121134110403143023', '2664899547599003947569974763', 5); - T('5972204c293a718d436', '2424395701327022173624', 14); - T('48c05660c35831096571569584b9bb', '944525160078047876860764786207444', 13); - T('1737j8ged2j9335f57579j018i6edde42', '583469808841264533540282982195940270989682', 20); - T('b92a4', '3775348', 24); - T('g0a0g3g3ed3', '57238226797917', 18); - T('c00ile7i0a6e7059d0k8k', '8466411686951123921386451716', 22); - T('1417a983839823752962043864a03', '198707395183668497169407615155', 11); - T('212020002201', '457156', 3); - T('293ge61a0554a3fg74cd4d708fbf2f4', '20837793831755445803430404484447203673', 17); - T('31ksjf53lo5lfcelu4kbm', '2051668901240245477484691606434', 31); - T('18b91bbda46660aa90d0bab167807cb51ddbd521d3', '159834746906390155881812965963138183604335984605', 14); - T('a325a721', '200595880', 11); - T('111220333303003000330232212132302100100322220331201330230213123202330231230133001331', '126510946622282313351146590205348811859694558769277', 4); - T('3nklanafm65ed90g78koh93do226ondn7dg765', '20928977098157474166932241491953431194495934644004530', 25); - T('8d56gggg3gl7fn7d6k273k38aaegg', '3783755977257147057647496235991570373904', 24); - T('jvjs', '783286', 34); - T('3', '3', 16); - T('2dm48dk09h2mf', '57135037288325649', 23); - T('7c58km94ogkeoecfk3oji2b64e806b', '808192629771412919893870560197459472754247', 26); - T('108ba7dc0b83574862fffc703b989d5b578d862', '5903642409059499044928754369694490849414010978', 16); - T('cjqnk4gdjh3vq4ddj', '15256476694176334186952115', 32); - T('228kcgi0di3fi32idcda4hk', '259572623213169656398598069717', 21); - T('3ce10e4g6mc3m', '77759411065315097', 23); - T('2c7323b8', '305067694', 14); - T('10022103330001303212', '285949828326', 4); - T('3t7e2cawj', '6892011752699', 34); - T('22', '28', 13); - T('464a1', '287905', 16); - T('5cc2576599c26', '759539534269986', 15); - T('jbj03hlkdha41fmj4', '236168166638253520612684', 24); - T('0', '0', 25); - T('2sn0577s1dkxc2in2lcg9c01qif5', '1380060804894799857868555382265618092450455', 35); - T('32h3b8bg', '2818270187', 19); - T('255545', '23321', 6); - T('44672701365702351354627010564700332716441663244', '1605697031030267612185423502895189353522852', 8); - T('dg6', '6075', 21); - T('172f', '5935', 16); - T('ff79a62d5304f3d99d59gheb8h486g96g8ahah2191', '46385498914881808944086334290535921747293937913848583', 18); - T('15141', '2437', 6); - T('26460b23b58906', '270831364391958', 12); - T('3', '3', 8); - T('1nelh6fd2nm', '385460235648697', 27); - T('555002132250423043321044154114553040535143212221300403502105', '48649779907252203719145936253957752216789784697', 6); - T('502c614709d225ddf70geg70ad7', '491428972626763333617324944411991', 17); - T('2a809', '43569', 11); - T('231025152544454503423105544545133222512424413141345', '2044955716085193393522162227889590083649', 6); - T('6127516', '1617742', 8); - T('3001212', '12390', 4); - T('61k8t4r', '5372388005', 31); - T('558hhgfj0i392d5149cdhaj4c81b3f45c01f', '10601211512457181022617948775789014879554131318823', 24); - T('5ai55am1f3fg3368080ag', '9386067417807853412865332671', 23); - T('375335072413', '1049997224103', 11); - T('3ulp5k2gfak4vwhs5xp3fp2vt91q1vvgf', '99640256815388464443077052932078228628581826390175', 35); - T('3cb5204i8gdhk31k1ca1jl12hji103', '3039225421760116368864520168279113397031', 22); - T('95g0pdi85jlch9', '146430211203929468319', 30); - T('1ga94k3', '253927869', 23); - T('17eae76fe4agb44b', '9674350126680300347', 18); - T('731352357080453082167066163008066544870856880624501815', '2761694377915234883111996820445810369791439662349049', 9); - T('28b42eg3fch6h17ec1f6bah7a46gg0ba8e8ge3728', '402898479377320666571762561009961282566338625627456', 18); - T('47763aa67667199503a', '26126027821437042586', 11); - T('1a1513a229241db1a', '3748786654473436012', 14); - T('4j3wlppbfgjvx12bhfdraxhj8as', '30035221592107391008826387409658384272600', 34); - T('4a', '66', 14); - T('11dmgo0pm5844ph95n0es4r1js8oh53s531m', '1605008834095669751131228638721128071723402662779373', 29); - T('78ac3g919991730dabf', '4671636511491254279401113', 21); - T('3uen8v', '132603167', 32); - T('18n1jhh534ed9kijd36h9eh926ajj98', '1176935676756916434242879253348138978824608', 25); - T('c6lida42bb7dibkb2ai9038j1bff2i7425', '2457445295804537407775390175826401409277343241', 22); - T('520451821452737', '119611394254600', 9); - T('111010010000011101100011000010100001011001011101111110001001100000101101100111111110110101111100011111000010101110101001010001011010', '4955975645658396849750021048094688973914', 2); - T('2j535maaee8', '177566375337176', 24); - T('87doh4mu9m4upmt8jjj8ppswm8h1ntc7c4', '18709453669151556448621559262750940609280449675917604', 36); - T('ki6g9a9c2194hjk1', '1421884784853472743133', 21); - T('1uu682edcgoe605vg08aul', '149927190638896493897053359305001', 33); - T('33611430560050523326063140530063215636236565634401651316012153', '12640761518619389588311599773840813250762104347169015', 7); - T('2e7mc3jal7908e06fm', '5447254724723092802070793', 27); - T('7i2ab92gccil8e5141e75fnpkb', '11544586496253437449398718886123580939', 28); - T('3ch6i46h3c9hj4d4', '245970537455421763324', 21); - T('341950453278908a8a0005', '153920651144564889561605', 12); - T('157396461156129428907782692155506630549', '157396461156129428907782692155506630549', 10); - T('4e8phiqe', '77509233466', 29); - T('h61b8f3aif1921abecg1fg82', '14515588347289719209260339486562', 20); - T('49eb10560b24720dc8d64d9a3869c21b64c7', '679348185541738001210448180139429111150087', 15); - T('1141752865644301566854274762894601647406769493', '1141752865644301566854274762894601647406769493', 10); - T('519569635591341326218616477948', '519569635591341326218616477948', 10); - T('64coenh4m7nclcdok6c9', '2248552578979295785537035309', 25); - T('57fdf4f5g0f9d84iib58b0f1edi4f1626i808', '58679471173751985874228442168831694410618065700', 19); - T('7638a5255', '3236027681', 12); - T('796623821741144', '2989556390158705', 11); - T('g21m964mkm4mfjb5nn86fe0cj7k8edbha9i', '1360344415859629714125407839865176137228200369514', 24); - T('323322023301122022303233132013010213321220101022220011321203', '1244263825928288441278865283502595683', 4); - T('3c4gd68dhibg23f5ie91e0226c', '1212014021547517721660786028816932', 20); - T('il2204ha0bc7mkimno87f', '171379074171212894108622645815', 25); - T('3078kt6ygmvmjoyl', '435509192168873571302736', 35); - T('a38', '2010', 14); - T('665354580258', '665354580258', 10); - T('b6iljh', '89840921', 24); - T('12', '8', 6); - T('1100100010101100010011010111010011011110001010011', '441284718869587', 2); - T('103425a844c64b54a799c19a8b80b8360', '451483347908514778430800009719438373', 13); - T('13jg1cd', '133462793', 22); - T('15r36doe4lc5pu9bt7ajk', '799090626108561656879167065895', 31); - T('9e6d58bifcddh8f7e8d566551gf', '17251970079387384841395849025324832', 19); - T('1111122112221020121000000102010022221121002021122212002221002101011012121', '33917854345218936391135563425595112', 3); - T('4990l153jqalbca5518d', '93177576163241292629115944053', 31); - T('1010110010000010', '44162', 2); - T('28b6338a', '98418778', 12); - T('36503hg2d8i', '309754322695843', 25); - T('1n96e8nk86i8', '44503394396446494', 31); - T('sll', '33103', 34); - T('33033011220200223', '16359262251', 4); - T('99d3129gc76egbef4fd3gbg4g11f1d70', '1333694013824598235831401355357401336069', 17); - T('97df0ig25e8c8bgicbda68g287ad2213be3d9h5', '36818894414378796947469929289289701562088950063034', 19); - T('4h2d93ahb9560361i7cieif04c99da16eiad747gh', '6926899048124838337587570688835924691980039686118308', 19); - T('1efa78a04b9cfae15i608', '66906711299008903988241970', 19); - T('6dajh82l2h39k17l89jj06b6ij1d38l2ah4a', '638587640933730076874373620811221314023256400630', 22); - T('29fikcgql9j9j', '1231539340753070389', 30); - T('3da62e0cd7d5edc8b6731fc', '1192467796933113553619464700', 16); - T('167i437dik6224', '642946919459203965', 23); - T('2212030030033111020121122', '730913496663642', 4); - T('0', '0', 3); - T('a934gbe3eb6gd0686eg7ceacf3g', '1034060133939988465057499206465869', 17); - T('b06bk9d6g0a42af4a', '15757568799670003822267', 21); - T('11813a068978a723528a6811a04418872a25a97', '4331585506586356267499594006764356259902', 11); - T('o3emg54n6mk8fn292gdfne0', '137241894959729632465723306108475', 25); - T('26f70gdg0a75ge56f63g2gbda6e', '236057761685701334850732917197770', 17); - T('8ujdov2cs356b', '14889117743117384096', 33); - T('p0p', '28925', 34); - T('331331554260223242', '804688549652157', 7); - T('9m0508egpmhni5gm7aicn07dm66g911j1863f', '8556964370979913328368960003720919994571132796665125', 26); - T('97659', '273516', 13); - T('30841783490097007741741271081026', '30841783490097007741741271081026', 10); - T('4q4sqdqsadn8rck7bhjsos61kniq4qo', '365053872988495536844847225543861276332385142', 29); - T('3085581349916184a854518229397966', '589317025721598516831908960908549', 11); - T('5r4otco7ld', '116235391074943', 30); - T('h881s7ng42l7ktf', '8262879069644201817885', 30); - T('722935123087', '722935123087', 10); - T('2211424', '271870', 7); - T('169675b23386dc66556b4', '123567084465286023095006', 14); - T('1d1460d5', '725910715', 17); - T('101110100110000101110000101000000100100110110100000101100000011001111010111100011101011100101010001001010011001101001010001', '7741948260639498696423377430502808145', 2); - T('6324dl7i97ejh30h7d2d', '196908817838272957802386245', 22); - T('1e6bdg9840bij4m6mgaif0b3a1fa800i', '2650595719449645853646782554686853038953647', 23); - T('3op280u714f1l5c4e58d3n195wgdadon', '2722922194519046542296617636311541345690187538038', 35); - T('4ul4gph', '10556594837', 36); - T('neepzcrwsljpq56yw5fe1p8slc2q6h', '31768227704262634163351278216775977989668712713', 36); - T('163508485687', '53683805509', 9); - T('kq1f5osda769asejc2', '151662515754458740001154937', 29); - T('2bb5kba8ij1n8kcg9i5f8d46n8425dk6l6iac8', '2896620834535199514593225193367996812104377232901032', 24); - T('13fpo7ebe9ibo45o7f38mgcoh3705kc', '3204372840607139571307714097742381921592280', 26); - T('fl1976f57ha23jae159kdck7e', '2636992324538165186145579853041064', 22); - T('421d5154795bc24eee09c38bc0ebe5b8ee29273a675ab', '23184471520376505532353622062217664262369811465453661', 15); - T('120cc7a219303044926aba2366c8a981b4704098b34', '70792117155249797617821261835217822465201863468', 13); - T('706069779aab536435babab84561', '967362705785425743632483240473', 12); - T('587ci2heb9f6ha5', '8878675397855255005', 20); - T('6', '6', 22); - T('101100000110111000111001010110010000110011', '3031053984819', 2); - T('g402fj8dc41h', '15410872733788423', 23); - T('384cb1e378c31062632840835ca792', '45443550340307284975305780784392962', 15); - T('709120709950241446662286143551107773877', '709120709950241446662286143551107773877', 10); - T('10110011010101011100010110100101111101111101110001011111101011011001101100100010000001010011011110010010010011101010001010011100101000001000000001010100111011111110001011', '1048393860009702438276451118840918885709561673793419', 2); - T('43530143525312435203035354402132515250345350110051254130', '29245051644396815096043409979498563547760486', 6); - T('273874118720265720003330', '25054867528860327211665', 9); - T('75chppa1pfoc8', '5650988903040886596', 31); - T('1o2xzq0y85nh2uz4hrq', '17214140131662303072328011254', 36); - T('7mel09lb2a8a57gbgjajae1231gg63ifi', '300296405223222733629146932689003077500853453', 23); - T('9h797idhg6bf82hbneffie06d7n7n6bj692', '822053978411404614899330556271321295033323274330', 24); - T('2231451202332013234346554405060630261020301565243616052163120', '1194780384819131090196038746300735825418428054448297', 7); - T('651308764720485861752385601247', '30955749937585936729212961915', 9); - T('wisjnua14a5j', '3141478047294715819', 35); - T('1f287eg4d1e96aj275810j2b76hk6', '65295279177191049973439872523750757634', 22); - T('732jlm285a7', '452060572081207', 24); - T('543a6a7205935', '16936274072569', 11); - T('11d84024g1e', '2228646074688', 17); - T('b733f14109d5b25bg0d4bc03ebag43945g86242c1bb1', '927003510624924525673202158389033192698291798479053046', 17); - T('baabja1c5fhfjbgb7a248bkhcgk', '274413406419696811582074157627497260', 21); - T('12rkl64f6r165mb', '201505391341491620163', 28); - T('86nnhl7wdo3yfaupk3gxyn3b9', '93531275000126027219179909918998577069', 35); - T('9fa97a6685f7f068fa0c7c7c', '198055880094540331320903211843', 17); - T('53b5607598a8568405b6038b056b', '732126558636324783191109176867', 12); - T('1d38dki3ecf4hb2c', '110820443100982410906', 21); - T('alicf731m71ekmfb7', '132157470326092217910991', 24); - T('2946f0f6fa', '498579612616', 18); - T('p1m5fba4i9c8', '139351741901234288', 27); - T('491npjfdqp5o0eok5m8k83d272p4bpa', '37843769272881591548066267248820470893488566', 27); - T('3sp139s619h5fnr3g43075g41qrphm1274', '22020285331732361216643228764147906649510745949014', 30); - T('1go8q2j1hfhkp8cnecdgthoma', '440682856002100886822190646729771270', 30); - T('1l69ed12hc2i7d2xo3xp10s585gnj', '27505025872397325904081958842489980594333549', 35); - T('7jam53fgqrsghesc', '178900402668575769571705', 31); - T('1ta11tnjsu4sqnkctllg5r', '146148626279942060305711089820179', 33); - T('38549293', '132726351', 12); - T('erj', '13429', 30); - T('0', '0', 2); - T('aps76', '12788364', 33); - T('i4f689483a05fg79dd459', '1912424668215298964958985709', 20); - T('2l129l', '27751496', 25); - T('2303412343', '25367175', 6); - T('549b8457125278', '578041793560892', 12); - T('120869707199141380905a805187000259a0606312a8878', '952772077272503697711661443135381708565035744224', 11); - T('4s4ie4nc0dg8o', '5625644808984248600', 32); - T('febb3g4036', '1881263605907', 17); - T('24adgbd8nbf0k', '129751809901743770', 25); - T('g27i79d5e55896i4fg7a245', '218847629102163139699173355291', 19); - T('30529c2802a7a6500a48164', '9734582938146405358147470', 13); - T('13a77a7280a338383a965945211402', '2159245188374564306148810546761', 11); - T('4ahj0705e9i38hf4gjj1c4bh27jge090i1h05hi', '124928632984691876439135258471206747484391557922358', 20); - T('440313525', '26407491', 7); - T('kmm8mq0bl9', '1627285397199219', 35); - T('43hqv0r126', '144649097151558', 32); - T('1048b51ab04b2bcc558ccac705672542b3db9', '186529630154587639414052458405508817794479', 14); - T('14423112251502214140350553421432332152103521123', '1116071013468917454980382318315110091', 6); - T('13mn8ak8okaa5', '68944310390553380', 25); - T('38m9915e9g1gd051akdkke5f5a27jd58ej3', '67448136771996483355341359401090802088684251372', 23); - T('kq86qir6d1p29bfceqvf', '824785809235191997125198572527', 32); - T('1112321020311312133310021133020222332223221101322301322220113323000222032', '30277716024835658731702957127157570855504526', 4); - T('208408904304224157224980647150862034543184171614714', '208408904304224157224980647150862034543184171614714', 10); - T('1342414184334047452273', '151665011409098573076', 9); - T('1la8c107nb8105l7h8n2d4nn', '263830603401598394475203594737473', 25); - T('luz2', '1019918', 36); - T('9k9fm7bqw7yyerjs2k764il8lqq', '133997186940027427483405272900623275104661', 35); - T('10x4cf7afl8kevixm3d0yxgqt4jfe', '38674921472624504070368294249321086159708250', 36); - T('11011000100011101011010010001001101010111010000100000110100010011010100100101000110011001000000101100101', '17157448231253463055811180527973', 2); - T('123466063012654210205425010534440020', '515748143498324939176731633807', 7); - T('33044012241110', '4441524530', 5); - T('1158b5a630619185', '17305771835233973', 12); - T('7n0vvguft7mnqbir', '461401544473301116074780', 33); - T('567a95139027a78a', '23440483786358649', 11); - T('10002000442022441044', '19134759968274', 5); - T('4dfc', '63156', 24); - T('312a406aa3450a3a23912402340a01966692', '8754550707437018386514400792052318480', 11); - T('cnddgk98jmb92cga29agigo17ij02oc44ag7k', '2740506289219815903046559261127339765453793253682070', 25); - T('112002022001', '277237', 3); - T('13185359b8b7cc6c', '63496717433440602', 13); - T('rdp8', '670169', 29); - T('a5945524a0ba9', '93456277979313', 12); - T('2csg3gpqajhsck3', '1829362423553209975227', 31); - T('qawko53qgbm', '54339224712711276', 34); - T('53a8981b9513684a', '82035316765523002', 12); - T('161b048i782', '21503214153206', 21); - T('22102400412123042123341032122120332432011302', '2779064502733276433175230344577', 5); - T('idlbb4187e191dd42', '114102484434631244007167', 23); - T('b1gd8d', '88149517', 24); - T('87aa5220276', '536130980730', 12); - T('17813c4bee86cgad8acfa4gd6980122g0e1c2c3f', '1398872946976482742153451223578417416198761226747', 17); - T('542516a818ab733164bb11a0b90448b54385562205002a949', '33811866838197068550203974493168709163294532080937673', 12); - T('34', '31', 9); - T('ulddjl1p7g33c3lfi', '243484528223299178648975166', 36); - T('43685922830053717349636937254384863641936188539078', '43685922830053717349636937254384863641936188539078', 10); - T('1kq', '1526', 30); - T('h3q4', '417894', 29); - T('2sgpnvjvimhdvfte53e', '3579393219704746078446752878', 32); - T('2g0klh8m51d2m737719helbbmhfb13aadf52k6ba', '345403492723336949220351795875996776734586242292103572', 23); - T('34534434531104021501132204125434', '5071162229234026722846814', 6); - T('18728536442631514847167146206666864236812842053', '155482283694964503460685159464849077646366146', 9); - T('1011102210012020002010101120221020201200012022022210100200120211200210212112000', '19121766375891188407348322182261750770', 3); - T('43xd87t9i3wc5dy9urecm', '31297925864315303967241520625217', 35); - T('6tn9585oibr', '5704387543834275', 31); - T('1odaiw750phch8k7ghptsrbd6r', '332539724961043900901068288669103492707', 34); - T('235a2975935301a79', '106684220535281420', 11); - T('42ba', '33030', 20); - T('j', '19', 21); - T('j4rjbgf0d', '12573534055513', 30); - T('32xshoix6xh9ccr30', '9848122710986064368393554', 34); - T('535', '203', 6); - T('16077c0833e289da0b', '406367684695924791819', 16); - T('3m20fi3q3lm17gnmhqpjbpmh3eo4q284o', '235527531251668145423074205329962075938693335711', 29); - T('132db2098c07d5c2f3db90fc9dc5969f4c5ef8', '3988017842540737733695567767722086300600078298', 17); - T('1c85d01', '103725201', 20); - T('1001111101111001100110000011001', '1337773081', 2); - T('vwb7r7k3g5h2c3r97q88rp', '2475548335462435623069755240245930', 33); - T('5qrlb4tcb76enmfllc6l944m16', '49968491826455815316033134152951067836', 30); - T('110020012122031310100', '1383087004944', 4); - T('132102232221032133123312103100322102332222330010331130223031113100023031010332322323113', '11333821350115864348147427574650948754682805810343639', 4); - T('60370776342110666', '60370776342110666', 10); - T('3h4i4ejlfjg0688l', '6140106694915716688693', 26); - T('1dm8lihi1e26ahfa1fk6g43ibfjjmg37', '2628602474297861320421568139067733120965444', 23); - T('aebd6h6e4h0h3g6', '17578668715830537526', 20); - T('3v16buqvxdcu0pl580aduqh59t4p1ytyzw3', '317029270815082851172083917802213165659300395303124787', 36); - T('ef6f9235d0afe2e5cg', '12331072171139724632698', 17); - T('1010000101', '645', 2); - T('687cab97212266004232ddb3d3b9e', '5597607870848036280745860522464624', 15); - T('10212311222220113132220123112023213020301012233202002122122321233112231321220233233101003', '110312191634483651495896170224950641069551786395628611', 4); - T('3832ac25760c6957d0a4c6d213458a5dba00029b3', '25115577925068533589911218721261542504047301873', 14); - T('7chebcgc', '6865651019', 19); - T('4nn', '2879', 24); - T('a321054270b305ba0b66ba3b6b56339', '2436546585202095704641104341508957', 12); - T('1l141elo4mkmm50cok767dgbhnl859ea223a099', '243768152347675786552797555960516182859457306417343984', 25); - T('3gg7mpsa4mef', '43568856039788618', 29); - T('dn', '374', 27); - T('3000445345054', '6538448122', 6); - T('320403212410040111002033343341141234242231423043134214130032422404322010313', '18174722812021434932358160186198714046154568563860083', 5); - T('h7963j9697ilenpfbea65fnh3k', '4092136993515034862901357828279507182', 26); - T('44d', '1693', 20); - T('9lif165fb9am8i5i6df725ah5ke7kakmimc8', '4552222216377737849505813807820250518334913223674', 23); - T('95cc0a9523c654d1d87c6c8c41da3c0', '228044297514817056310395998663259348', 14); - T('1eb5298', '22596218', 15); - T('18d15067c13c7b96546a0bd03811aa0648', '108794139679161970964043442876985805816', 14); - T('10c8c5c2', '3484449218', 23); - T('1130241183031735622176218077807830726640278265535', '7307690599679782626468030026978745315150762698', 9); - T('147hios9h6pc49vabeeijibp7l9el4juv', '1654964473386058879615178865366866020965350002655', 32); - T('2hehe758c84', '18001465765974', 19); - T('27ca95172', '17128511655', 17); - T('11a64b1364976db4501b4641', '1249071479135368641718518661', 15); - T('oalp077scqppkgsithtf2lgmdekuhltt', '415553692412432987092587239826921522135844076896', 31); - T('24512544314343321411051', '370182538802982343', 6); - T('18762343i219897i8bab2a3gii7b7h8f34a', '43289966715277773748038371629470766822398253', 19); - T('2pi', '2286', 28); - T('1cbbe0h4g8jcjf8c1f1e5fkgc', '259324373962987253102359495935860', 22); - T('pt', '904', 35); - T('1pq017hmfclcb9', '7949466399349926747', 27); - T('f7a3a6c5202h31ef64ef1a142e', '371455948373140075962244702804106', 18); - T('5391521717249849338', '5391521717249849338', 10); - T('115048968584225548467a166a8505a22189', '3182768778233114520385989554018322385', 11); - T('784c5768a01120f03ef7a73160baaa0c5f', '40935359210071367599328032328982052080735', 16); - T('a79a1616597a68813', '492505903090120637', 11); - T('104302302000041202003342432402432', '27586639009156197153492', 5); - T('e6', '482', 34); - T('10a9ba011b397214372673b869154', '1772448509226592504876544881552', 12); - T('b529388682ca681a0a211a9c291aa525a569b89', '24365646313226855959855845860118543252986104', 13); - T('60266784078122366807652381741868036523827834044816', '345530321229050938748463990139827078607744866078', 9); - T('nrj2wqd517bt9sf0ji8', '245119446680615904169840513472', 36); - T('i30lg31967233dca599k9khf253', '13925405872348342338134182452445003515', 24); - T('2ryv', '120046', 35); - T('11a28178b2d3749352dd0688d33325000b80c1d7c21a73', '4229526571666583429911018550162020409543001093510565', 14); - T('1hlf33b40v7pqogpco5h', '61489711252104567972030734513', 32); - T('2ooqt4ok6crqcqoprok0e1e', '1807700340428814411931323774855651', 31); - T('5330703347212770743451273354450142023332067068', '46881764614088473306314988288234150109880758', 9); - T('190411146532942276953175', '190411146532942276953175', 10); - T('1032', '78', 4); - T('220311100310133201101213211131102122120103321313021203300230312221332102132', '910589190412628421660420436887035984747160734', 4); - T('53aiqhbd26i4t3gpnfmpo9', '106372792078016060806151089912464', 31); - T('1mcshrkt3vuow', '3957079661421807504', 34); - T('11420140420313400023142434242130143320333001404323014032011441103301014244', '1457518531908973605405978898403083567207549128141824', 5); - T('265210518039651538964229872a244598261186', '106497114458263044665001931751128560884115', 11); - T('b5b39686', '411895686', 12); - T('9693g67fd46443ch29bfad5', '391033997087892318025118684265', 20); - T('6aa1787181528233441a875', '569250946715170907346131', 11); - T('1534821551365858622483716488168', '67797697219511094422985323240', 9); - T('2u5h5ch75t99h7ftpar8epck0uf2l2thgkp', '1512058697304555562850007013279347701338862065083953', 31); - T('364lf34159pfld9decepegn9jnc', '19932987570255245395513434170488890598', 26); - T('cjbxwfida', '28266954157515', 35); - T('234422033140', '136517920', 5); - T('5d27dhru9i0rolnl7k5cc04d', '224657379433425485580575516892987533', 32); - T('15d96d637d18724681c68', '119388782053752864730372', 14); - T('glgmfg19hmbiuw8gejqlushd', '2785871717038208979814744954063843071', 34); - T('fs27q3', '327526525', 29); - T('1aj94', '742369', 27); - T('2rpnbci4jt3cga9b7k7ri2kq951k2l06opu3', '45679643141383333963769732373782633717189382232076574', 31); - T('2fvp005iv45', '6770745914953620', 35); - T('3739cfai4g37d8ehigiiaa5c5e1017hfgif34f34', '251228158449149553590458723730036424872270586078914', 19); - T('100132020020131301313310320', '4636099868065080', 4); - T('1hufs4gy8ux4t98q', '330662166686009999383562', 36); - T('31141410440222032202444232140002403313304013141143142112332414', '14202859109742120451995012678655132660667859', 5); - T('120314021231222320010021120411103223412323023', '8111041563265329020880984104763', 5); - T('5', '5', 15); - T('22356', '5676', 7); - T('23', '45', 21); - T('7lgn37jdpecj6403d0jom4jna', '71329726048559149957340654751993676', 26); - T('113lhxiw79qpwyjdlpgn', '224270117034921406000339777208', 35); - T('e62poemoo3e9cjo1l4', '16140263108781826392138362', 26); - T('326167dc1c29169ddb457e2ea74da9540', '136353349886424397650412714901640659685', 15); - T('a280710ji1he43a427k81fif1fa2g', '106423632510333355935644382252587269768', 21); - T('0', '0', 16); - T('4bo96rt0bo', '263786477496742', 34); - T('111110000001000011100000110010111011001011100110111110011110111011010101010111101100101111101000000000101100011111110111100101001110000011111000010011011', '11064110199645779468713657128408705698455744667', 2); - T('rc7', '26326', 31); - T('9ci9486917f60e45b082chgd4c63djjhcha240d6', '5303028473960156575531077483320594119475139680352266', 20); - T('7f6in4ffhb1flp871ipcpg545o56c5', '7001603956717371881956901400431902260257909', 28); - T('7691c95hhipboj7rg2lj229rkmhac45b8', '147212537247130546499231460140529489308763331468', 28); - T('1rsi5r604m7ioheb6fcl4h2bnlcfj', '173989478506881942888773260671258027309887', 29); - T('b4om1cj2maljon40k9e6a5', '5798208632384734824227289530657', 26); - T('11eol4ua776vdblm882h3qwa6h0', '6860908597449491750120493068938147873066', 34); - T('12121010010220000101211121000222100022201020', '612407733641262215889', 3); - T('5623882688c3a20370c29683af', '30933873734949067206794851517102', 17); - T('7p3014mdoasx', '1013060656191967665', 36); - T('2f4i8d7g63149c81', '90515183521475916961', 20); - T('1037028086382201343445', '114527582053447761554', 9); - T('cmj', '16363', 36); - T('31013032010320201322221203203', '236219413687867619', 4); - T('xrienrjyq3vi44686', '171329229726722909956091011', 35); - T('g98pi5f5i37blbo3e619', '12538983223080485163975508379', 26); - T('6gthi0fijlk13kg3m8recgqcsqi65h0', '1351923881091471085665472649762970950098547010', 30); - T('48920165m2204a', '2200120683667985813', 23); - T('ba575460a', '5104899946', 12); - T('9eq', '6965', 27); - T('298285791a0888b970036ab67875b9361668222', '286515785301458024010310865718090862556474', 12); - T('32b10239083bbb27a8a9b1225534b956487365', '529271448272229707546432985555718969417502', 13); - T('3ba90bcf292a852be', '68783684858858197694', 16); - T('66726644', '14396836', 8); - T('10q71', '833611', 30); - T('hd2353gg4ahh2d5', '14134610453581815173', 19); - T('452202163400753742090780', '452202163400753742090780', 10); - T('3d9j3hecof6ld5a3mk35io5', '20097704011001101800560987589980', 25); - T('1200022202010221001210111012111200222000102211101020211212121012022110012', '37817615564406149218083810637238750', 3); - T('23454344155', '159499655', 6); - T('bk7lb8gl2kl01k554', '72883403283874275717587', 23); - T('112313101022313000012003220003310032321110323332332300', '115932056790344637678217394646960', 4); - T('256ag1pilpennbnalhfgg1b', '67800097110287594251574673904676', 27); - T('5819b9b905cb0970ce6766d5d5367907e589b9365ea713', '465231703686879290288579188172672651019623788286244093', 15); - T('948', '2677', 17); - T('49fgidcf2', '243740232980', 22); - T('ba8e67fg8116agd0ecd06a07746e7b6c', '1618376196981235195559537216353877633919', 17); - T('7p75nir4wc44', '543366534313517148', 34); - T('207526928514479808388641363288479462', '207526928514479808388641363288479462', 10); - T('11110010010110011110011011000110111010', '260222595514', 2); - T('22ow3qaizvi3ml84m', '16512328963582356580908646', 36); - T('dm8d5k9lg4jfk601434n4327ma1', '10702631860631688676459813994309897329', 24); - T('1p4re9g4k7to1mkbxxi982qugvwfubm2wnb', '20450108624302345417065874616002109798595396729996393', 34); - T('50a1d7df74babgeg860cf8f0cbbf', '39266851385410224911159816445537921', 18); - T('11210021110100', '2544543', 3); - T('409b9393847462143', '2700650788976025603', 13); - T('7334', '19842', 14); - T('615264ba2c91bb2d16b27657687d61cb8a68829190d5', '117133480342797205694669610294061082973100299430819', 14); - T('101000100111110011111100111001011100001000101101110011000100111111011001111', '23979030927343490334415', 2); - T('2bcl7chf626gjic', '15721285277159323940', 22); - T('e8jdshpceh511akg3eh96f1n', '61724909151432021746879467844279912', 29); - T('7ioidpi3fac69bd58h75pd2', '527856824728503952184574006672830', 28); - T('2012210212121110221011001201', '16892157195730', 3); - T('7669mmf310dd86flfkbh3l675akb3a4c9i63', '3328050075667048755190343358056273076421320709312', 23); - T('cbe1kfj09id9fijfd2k4bd6if7i48f9j2a7eg', '4997329333935474233928057995322719152450533537259', 21); - T('481df814c99e917079aeb', '5449011495668093676919531', 16); - T('200021121011012220120110212211201112021111020012112021', '39372587067244907527609165', 3); - T('2cuod2x5qskclq2839s0pbquc6w', '15665344596694415117114470797884328339020', 34); - T('61d8', '41770', 19); - T('1132d0e10b1dc7d9d4945b80da4', '4093911128145427008187373761204', 15); - T('6jbkeffkb3c665', '1948081861707426769', 22); - T('7839b37889659a675469b685a4774878965116', '65435909692700209089779026721746853819490', 12); - T('4h3e0o14306am2g2a8m5a1nkkcje', '260108515968753744015241516937732742364', 25); - T('5311555461504533675663441245372657173', '1750444240707415099769307901156987', 8); - T('189060cb8888330b22595a73b453', '1990161334123571052468023603490', 13); - T('d14f6c28f6b1a66f83ec00058d939e6deae057', '4667774422027164788903448529246588503172243543', 16); - T('5757513a925222715971a799023207', '9015463886750727461068645868694', 11); - T('10i', '547', 23); - T('3ldfpp1i4hgel51lhl8coggl2cno09lnj8gm', '127944080850766885182905102175542189745277162709534', 26); - T('esei2e43m92ifq3rhv23i7fvkp4cpi', '664081559838961998097945329675608329857151794', 32); - T('aflab0b8e', '1173646657934', 24); - T('2ag3ce11feg1d147d11', '37187897709081800814449', 17); - T('1288928', '1288928', 10); - T('36j3f8hj7aehd7i742i', '47593949304334976393861943', 25); - T('70eck6mb9ckm13m5k6164hc7a3e2g703d', '264297515812027647476881571249469049684770707', 23); - T('6al0cc485a5g84jio98ifi94aj9jppd4nkc', '8247805371919561622181081071988922761105885432992', 26); - T('4054706260215077404512214064677061152506', '679180789158344428977587279718831430', 8); - T('3123121033311032212223021333221101200333311110232023233201332023201101212233300', '313130279871566800608670339808906134119938157552', 4); - T('186700d42cfi55851jf1j12ddbd90if', '1520284426625971721505976719940709352375', 20); - T('867b3d952dd3236d30777193533ea0acd4eb217', '4144999543089127983532268234731096383836940097', 15); - T('21607142494642a17435480244914366aa7', '546971158677056207712730953612440610', 11); - T('2i4db77e2f9g2eh', '17593540766587374397', 22); - T('eg7b8135ag6j0aff3b4h8455ihfb7241di86i2ce', '8146790374268511095664515210088247752112171418705054', 20); - T('22ib', '88841', 35); - T('1230232302031112000011113212222', '1958723707255224746', 4); - T('3abkckh711b824d7dlc7kc50f5lfc903jh', '694110549193234127943850316292345559419640751', 22); - T('1a6faf864dh9', '101335185654255', 18); - T('csq', '11666', 30); - T('peldf6n7c', '16724317232922', 30); - T('1113212222141410102131431304441', '1180618941657064322496', 5); - T('a79123bd80', '217898466044', 14); - T('7c4729j', '487096999', 20); - T('1cd49d38b6ba7ad56f0h3f69i4', '155274639330332110420080389983927', 19); - T('101000000010010101101101001010', '671701834', 2); - T('62246711201113702465222477417147602750116154310733', '1122306478377713902587095609358921499575161307', 8); - T('crhab338af7bj', '10152189826006295493', 31); - T('14a51a0a2970459f9g006c5g309806d5f', '3009456851013370386519092081927217660807', 17); - T('2k2', '2994', 34); - T('22022111224', '23628939', 5); - T('21bia', '271824', 19); - T('338h', '25377', 20); - T('5222641636635631424', '8687773728715799', 7); - T('7bdld', '1763687', 22); - T('58560588242628367536365131', '4277917636306674590636902', 9); - T('8oeo85rqhb23bn8heg', '198205969424047940045873928', 31); - T('110112020021111122112101120211020200011100220222021000', '26979604883978349681358218', 3); - T('40212411423333423310130132', '1219680442848911292', 5); - T('33573674763b69438683abab62467a22164846297500ab52', '1732108517557715522209626167916098168953157629532654', 12); - T('rhsop', '32662105', 33); - T('2uorbofow27vtcai', '272365401628221575069518', 34); - T('6d8ghigi559d3f7e0a56b66d2a6hc9bch8ac55d4', '498928139884483809004632946022741017481450018749395', 19); - T('3adeb9d5cgb6c476376578c83e5787a96a', '955161261560504360368030415364335026227034', 18); - T('31015bf359cb9', '1782296955174613', 17); - T('10011100000110011001110110011111011101110001101011110111110011000001100001000101110111001110000010011101101001010111010010010101110111110110110000010111110111011010', '14258780956329408244620868751517156468304535191002', 2); - T('a2ebaf', '98663390', 25); - T('7b383jj778s', '6031015850885550', 31); - T('cfkmcgh4e9b19c710bifcedk1', '6095263335022578606276134979387222', 23); - T('4300224402031123300102132244311441413342', '8374896953320607531654247972', 5); - T('23mudc42y3b866', '248890986859579133516', 35); - T('38ge2iga36c4dicei8g', '902238930978105211639376', 20); - T('12003010033220032023213222112', '108949482152819350', 4); - T('8de244ec358hd24g0dgh', '6208260500151952090111781', 18); - T('4os8a0fcvnesa9', '176262234589093130569', 32); - T('9266oe530oj7gq', '59035236811161304202', 28); - T('13501034310034411445543051511', '10069554545357101315747', 6); - T('13gja52a98le74g2kc1ia2ka198484h5k', '10621239938769010401661040302635515509442950', 22); - T('3lnfcs6hndpnr79pms4rl', '664104835931225383450432803211', 29); - T('1x2gvx3bv3dvianrnuc7', '247269945120794324823087129439', 34); - T('1e0m8aao3', '567086770883', 28); - T('40jh43vsm04ag', '4633680786357227856', 32); - T('5044045341615306051311146510', '334711131291030516548281', 7); - T('62577dgab82cc39d', '17565163291072020168', 17); - T('4440adcc7f', '1362287072187', 19); - T('6649', '8765', 11); - T('1056403052652033555205161605402426525', '2973189411870171183261703706762', 7); - T('4l', '129', 27); - T('431pqa0cg9ga1j50ehka8nj1nc', '2502289496753859425052816386077486242', 27); - T('5732613240167571782367688321087552413', '131081400058592141994418041108160236', 9); - T('962d7915a045dd7b469', '4031321067511146526693', 14); - T('296awxtwry1ofvagrxdsne2xl5t3lki', '47488752629003449774538666832367750089164079443', 35); - T('il6dkdf7ch5031gc2edc917jgf823g6b6b6', '83252721133987805751930856697199204387425946104', 22); - T('4215475722134', '293885944924', 8); - T('14235542532634022', '53950625103587', 7); - T('36818425f9ca90bbe7a5b983c074', '1105511449492687971454561936457844', 16); - T('122073687', '53724220', 9); - T('2c977359c619b2a50e368272a2e12faa4', '948358531678320636918207632756786264740', 16); - T('1ut', '2013', 32); - T('2795131101664a797a3a020179003a156600a592623472830a', '2896979920691545032875120949083037703653537561322463', 11); - T('io', '474', 25); - T('529aab41b58281bcc49a806552a08a', '1050423338673734373190153676094415', 13); - T('43g2adf3', '7527485766', 21); - T('2bb390cbeed37eb3cc07g3e0f9eca921051g0c3b', '2609684906236620171804092629180580497183714528610', 17); - T('2gfdk850am77j316jhh1g6dc51i95b', '8423594663327891685667172048428742806616', 23); - T('1rc', '1722', 30); - T('15375392648094006750a890b440ab8163', '591409515137761369963146900003400155', 12); - T('7o5p8m8g0gk6ijm8dmthif4kpq2r', '143800041458103826053584594867124604912372', 31); - T('2b84f927eg76786hl89h7b651a9581a701lc1199', '319331358330810708432381010329034594655582446439863946', 23); - T('3hja70k2eg654af9i60ghcahka4cga2cge8k5fe8g', '298299391287001975026249946197438275847645771779205835', 21); - T('g4o2h7lh4cerm0xshxhlvs', '2338404688421636123000323976076998', 34); - T('53746157770654301215760653406471005756045764305156', '980109855734296770512774083035337723940538990', 8); - T('1boe2lob3mb1mdia7efsfnk4a', '176313634322313784050394291476552120', 29); - T('6102895394796612a85173242a66933', '106319505266114007488585957212707', 11); - T('j002mpkdge8fq0l6l86ic0ac325ko8kqh7', '10838559599010796633261649462182374112236602961027', 28); - T('1222102113020213', '1783198247', 4); - T('4', '4', 24); - T('223f5489h440gf6f45c9a2g5c70h3c71bb6821ebag6', '111787604760465635211456045075716599160139971202176742', 18); - T('24010204351221200301421443', '75953507215165005411', 6); - T('1b97c7449123344a72d6', '39363370326873603896151', 15); - T('10011010111001101001111000001000011000111000010111000100011101110000111010000010101010', '46815908925437602817089706', 2); - T('6786f6aaa24466c66772096948176f023b4ee4267e3', '2420882788095960105392950361690122210695410931099619', 16); - T('f465ic7jijm9da7fd5i0m4d6', '317085199137891998237067454281872', 23); - T('1801d483751a78d3370bb6819bd195', '2717717024003799773996202145806191', 14); - T('223d90d52784663b8a787c45', '496625290357492852632525461', 14); - T('67a153a65674020736842a450841b', '10968126203942490133113632912471', 12); - T('3gc91839', '2404483767', 18); - T('fme77w83b549ckmtrq9xaw0c3jh5e', '119174546513911048622366013545047675421136964', 34); - T('1eon5e2p6hgwvqrmmllbuwvjvbp00o1', '5198336511245033811195969352539905871452815252', 33); - T('999909a7b8807176b3a561590620867616b0b2410887', '249347755823438371204577699931935970503519167975', 12); - T('1', '1', 27); - T('210222101000211020101202011222222022221200020100021110222011201200011012', '18337051074624686676362253945875828', 3); - T('144813', '339855', 12); - T('468dd654d147', '77575000215879', 16); - T('4d8d6b0d09b2e87896571e8', '367073963094640539910552193', 15); - T('9ahg1d933fc3a72g45497a9b2fbbdc95c6h8d8265c', '257081352042987479986034962212194285056550134922156730', 19); - T('m', '22', 23); - T('12dcgcffk0ba841ekmfe7mlh10e1i1abbb', '962384266581672850344681457680540073681275566', 23); - T('466d816c1a1', '4839758545313', 16); - T('6idfak3f1', '533176825117', 23); - T('21qydfvujgdwibqfyef2ce073b8p', '1003962989378222780097553353426096168318655', 35); - T('hid4leab6200ddc9g0hd0778ag2dal0deamlc', '187416244122839612888287458425399312143406757414849', 23); - T('9fgg9988817491665857f5acb06', '975227292551389311524714747927864', 17); - T('13ibo4hcadhj4a5nbfmahje6c26bmfjeh5', '195226174949035947407967016245360627759255669140', 27); - T('67bab', '138227', 12); - T('1403340621202787910a0285502741823a86056950691991282a', '176407038475836628166083068850217042878816946943609943', 11); - T('10t0oduu5hu7xeq3d5tstcm0', '171705160058240681451967384000803748', 34); - T('2312645603023334053206206506114311', '18999669376657025727125561163', 7); - T('352320175446067457668251036773504880876250056665', '2534236716512667558334635281810919815086530038', 9); - T('215b44a990b5064486156753173b6213', '6052053142903698783509806567110831', 12); - T('jh6cl8q', '7608361103', 27); - T('ml0m012enj6ahef', '481225577733348729759', 24); - T('66aa96i4ncuqe15p3', '4513151173544319269517148', 31); - T('4ggc16n1l01dm5978a2', '67904639129257439505583377', 25); - T('bdb10650kdg48ca', '37772529505037088310', 21); - T('1pdko8mej5i32fc1c0ipfl7m19ko4b8p5', '3769138624256537961669330967608079598594202279', 26); - T('d6bcf011b9965', '3777711518226789', 16); - T('7f16e2f8fahf2i4ac7k76ffdj9dkf', '81208999985742760703645792450856237870', 21); - T('597a8749344790975339207177217856893a700aa553207a7', '570862871205184623051159726110304643063426032082261', 11); - T('1g3on4nkha0onef5mnpg53om619q5nkbod89q', '5403365419155920691028033935258064905584695189712495', 27); - T('52028440551854348388', '7059902878123817183', 9); - T('5d630bb7df92gfga8jc18dgih', '925999331010922039840596084374517', 22); - T('1080144b0i1gc9d192hh987', '42782218356170060622665259767', 20); - T('22210300330232332120020121221030032', '780256723337944142606', 4); - T('j0g60g4jj54070gdkj', '571906447450030093189003', 21); - T('1b', '30', 19); - T('452b31479640239b9b639a853476a6bb44a6bbb7', '5434568005375437518663444319858934471487227', 12); - T('1100010000000010001100111000011111100010101000010101100001010100011101111001101000001101111111101101000100', '62117604478929274751724622969668', 2); - T('3jg9g040jnf688ahh6jcok583kdj9j6', '3284019737150995327641899557095386675302981', 25); - T('13022133211310011123230321012030003000', '33830856903016211595456', 4); - T('336f838e47dje06749he1ac0ffg15a45c64', '544073756599977257872783903178913691232684924', 20); - T('46uhr61flrt37on48b1ckijk2cu', '5740347931453676082842828840069448206750', 32); - T('112001100211101', '7467022', 3); - T('pkdd1ik4ok5do8ffh7141bibpd2ii2193n', '1275141665523532165934940150111953342128717752497', 26); - T('25a', '535', 15); - T('2g4b41cb5bcbg9dadf91c08435f69', '83842838314159505886654561772317800', 17); - T('2bs9rbjjd', '1573422884683', 30); - T('klf8ad0', '6434826762', 26); - T('4f85g7c4364de0bh2280', '9521123183996160458149027', 19); - T('j5679d5hjj97', '3945663570879787', 20); - T('3140424', '52614', 5); - T('5461a8382b009b9483b90a440400065186a83788934', '11378348078699777667231184166670745809447683896', 12); - T('33e4g067j05kf0i5', '433325785455399388953', 22); - T('b5d54c2d13cbb24', '126959326916907412', 14); - T('74411760251306275052060', '558193600905071580208', 8); - T('3qobi0x', '8143314945', 36); - T('bqwufrh1qns50r3q9koaqiskfw', '1084917181467100837895352646759177337651', 33); - T('8gog7p67d210op9jd71mmrn', '591719162913780893033433711729131', 28); - T('44ba0aa61oma07l6hj03p35fr7l', '175761910992404861930958631561896387273', 28); - T('e55691a4ae8194023d7e8ae5e8059974432acc', '470387544390600973185133828002346243787354817', 15); - T('200212011122002020102220210201021010110022010122021202020110212121000', '582778073711029575626711438957001', 3); - T('3hk3l521jr4lqaig4qf0', '251179674690390315785498983554', 33); - T('mnt5fg94627qt3qse', '16565095395068373496545234', 31); - T('3bcobialm95oah08a5', '2014430966081121686333380', 25); - T('4641', '4641', 10); - T('2122002121200110101112120201201211000000201101022120010021111020112021', '2197120323515351911893330117447634', 3); - T('13714bdkap72ac8o4e4be9mpknl1f9j', '3167116946002852306408351163567756537094769', 26); - T('1l50bolpgp45pobdlpeh8b91mgfmoa9p214loc', '615842729217762132092179913282546237871597211241972476', 28); - T('100210022201220022112011202221202210222121120001021112210121220221011010012', '220547687111185863624614511757145708', 3); - T('23202303201343231214132000144124220422011033043224303012231042143040012224', '2842011217102887511723449090629059947996251803047814', 5); - T('55963455889939073566595695050105', '55963455889939073566595695050105', 10); - T('986a9a06406031855545a', '6582892192043057625734', 11); - T('66mjdcnicmi516553hefq0j4h8dbic', '110427317002013536940850484529174252675024590', 31); - T('5d6i14h30e2cd14', '4557106641352576163', 19); - T('1c7c554b8b5b11189a66324036092ca89462bb420', '711595302242240761379226114335862270631136990', 13); - T('2kkhh5aofpg8q74596e9drfobmj1p', '90838564499601485405393795175496213959653', 28); - T('3034134553053502555553353040432', '686018049407535850038308', 6); - T('23738', '15911', 9); - T('4212222124151323425', '444042355913513', 6); - T('a7elnbdja8nj5m2hha8gjj6', '23890454338021551829445564632206', 24); - T('32321200100213200022011012333331112', '1099315331975916289878', 4); - T('1eb9ee0017fk30iag8i6f3ed9d4b6e', '5039295759456928282155913550785147389669', 23); - T('27802069423286155041889995717306694770', '27802069423286155041889995717306694770', 10); - T('867960525699c5cb061401a', '27323968410745294080357770', 13); - T('35d7n4q2bxot45uuxm5scro1tvo6', '706987327769754553481308742217767001081194', 34); - T('3e5mt3q30', '4823236902825', 33); - T('cbd3b0dd08123466b52d', '962545403373485503722797', 16); - T('41ea3b163a5614966ae7957bde8126e0a93d4a4', '23519245104289372491020812621093511206089774244', 16); - T('238038k8rcoor', '1658110821340608856', 31); - T('3hg0m706l428n', '1275595457674448025', 29); - T('35bq3c', '54966336', 28); - T('3d42f8df046ed6958fc5b33d9fa992b492f1e', '85386222153107555893245630091838241326575390', 16); - T('m0gmnxts4h8p6an6ku', '2386980155865318111096328630', 34); - T('132cibe94hgc', '236874990279132', 20); - T('lcig0galc', '30069875475102', 33); - T('16bisddgvyhcthdd6mi3', '256735802970771139963215358583', 35); - T('i58a6g', '58468136', 20); - T('3525', '1293', 7); - T('3gkh7gij7ie', '1065634675177142', 28); - T('c6e2421', '1818992997', 23); - T('100200100020222220100002112200122110202011112222212202000221121212001212102101221', '158966224837100078693781454905147589627', 3); - T('f648df4cg04e1b26g221bbcf052c5ad0539cgf8cga', '4315582534924165708877106720565720519480837388903874', 17); - T('2p6aphhakh8mc5plc5j2gp', '1539390179865627184775927891721', 26); - T('11b4', '2513', 13); - T('jl7kjm7n32il1d4nmk0', '584261154838235821573009240', 26); - T('hd9ba149dh6e4gafee8', '698476730595539737056020', 18); - T('3j1g22je8lf5bhg8ilk629ndjila21lhg0', '13370053725951634183200009583712537939441657280', 24); - T('27u50bmqvtha', '156658788335426776', 34); - T('516h17gbh7da3a587f9f37he33', '122298188975115485587298035337289', 18); - T('4b2a649880a0367630759204aa1b75475b', '2024946574268874581365721289039689783', 12); - T('254225026012443321355065156140330663234621542653300', '5040887501845594508322543821207461070163390', 7); - T('202011012221101001100122211001000002022111011121201222', '43410492801425593645350452', 3); - T('7', '7', 26); - T('577115015776462242165511716153070323513627023272', '16688555517189422187103917664151515791369914', 8); - T('506444b16828035a216871011b744a221a2315b', '514848138656395936699051891875368909651735', 12); - T('2ao0kqth4t1pcbh7a4', '30477411673928429295975604', 30); - T('2o35odgjn2jo1a94haaknk48h3dcnnc', '2571886141556160166724302520638175571686837', 25); - T('67', '55', 8); - T('7nbr75', '402672450', 35); - T('370jc1indcji8ijma13k1938f6eg', '60716324784319268778229637859744954592', 24); - T('72967942960049867762435665277391293551369688649986', '72967942960049867762435665277391293551369688649986', 10); - T('6sa', '7898', 34); - T('294174393015', '294174393015', 10); - T('73807c73ea415707344a', '160403961758478608615470', 15); - T('11100010001001100001', '926305', 2); - T('235b15k4n3982ht4kq', '27196458988445840025157226', 30); - T('88ch45e7kmfl732o6qm9dp9k29m4qnh36alc3', '28111637207061985918949614744842625868551463394743253', 27); - T('4aibck298h47jj8c3an0eflejeh2', '82024129949273334698484088931402810138', 24); - T('mb8n96ghp477069ld5hdqncdccpe0q', '7247302454506934271382941736372903791832556', 27); - T('f2baa0ic94g5i1b83fd33g2hce1j', '2030554880143475280397062737673221639', 20); - T('17465535030523', '1072356929875', 8); - T('a3mnq3967n6c16l7cji9', '31760096086178432274519348273', 28); - T('liiqmo', '372897696', 28); - T('1opx6hidp8vdzknr2', '13423618670694897535417406', 36); - T('95m4odhqe7b4h9orpf', '66756845457585399045539197', 29); - T('13317', '5839', 8); - T('102241442', '1794050', 6); - T('239f68talh6mpj24fdo45g5s39e1389', '1159960371112212929883230396521680545356867105', 31); - T('10121234300252110055303232340504321110', '64247287136397682542328003650', 6); - T('6ml5j5lmbg9j90dba1mkbe', '1572054598386072574697608169039', 25); - T('2hi0', '20197', 19); - T('43cdb039b196a4010e938a308889bc6d70126ab41', '470755174678153103704950155870502047761506218161', 15); - T('4442b058b9763', '38899171257339', 12); - T('2b61', '5113', 12); - T('2734162636214', '201356688524', 8); - T('391dawskl', '4604605109961', 33); - T('1110101110110010110010101010010011001111111011011000', '4146450184077016', 2); - T('11132123322121103122101112223320301301100', '1654887842635132747062352', 4); - T('morem8755ban11441j1', '2561728804654073084523891749', 28); - T('219325241c390905b1', '18439460011248535663', 13); - T('111660012024443044042601641430256405054463532100311152514563012', '29454939227794636720645039138734936559113026503970971', 7); - T('2res55qjde5rbj', '30256919008754218863', 29); - T('514235610013374235501066012045440247061144570241', '14474060683475264437751372654279118864707745', 8); - T('2bul9j', '106774265', 34); - T('314k24yu9p730k6hlpswsrg7lje1pyote', '192003039777745220557413924708457255464807291072290', 36); - T('0', '0', 18); - T('26cd5g9af76g717e867e148e28d9fgb881b', '1640454531676645570762870476133782871483910', 17); - T('oqpeub0p', '853405543449', 32); - T('3ebd71a02', '64015510165', 19); - T('1ukrr02c8plk2tbsh41fmftqce1e', '36771157999423113295070824371683506360213', 31); - T('2003430034331000233232444424241404340303121021220313202324234334410424342140', '53769918856434339956161867351165493334635002404137170', 5); - T('544243155105110423', '98014695681615', 6); - T('17fdc28hi', '23980123515', 19); - T('j307ogn7m8', '145736706102857', 27); - T('7fge3sgq9qsrsdd02rq8knk75dajgn198p3f', '11511172676350799991011065866253721863347287895012897', 29); - T('hdeetqc', '15473116595', 31); - T('9a8c07c15362316cb5701668', '410109005226020106060632781', 13); - T('50n', '3668', 27); - T('2945877220049a90093575774827929', '49828341800440814243069556167882', 11); - T('ce45xapw3bm94bol9ughds341c', '2403991013021267385347874576469551271030', 34); - T('423304243332410224213434434222423112', '13229055276162993153326657', 5); - T('0', '0', 9); - T('76f2kc270hcol', '692157402620182845', 26); - T('3', '3', 15); - T('6nl26h4sjjeu2o6m07bl8lafrq', '130087953347892837054523599720072286649', 31); - T('6gh', '2487', 19); - T('34l13l046dp2ginpqjagi9bdi', '4181142245164401129320919247203118514', 32); - T('30413552001353013220353015331', '19152449789569897624327', 6); - T('l3e2o0c0jm3fop5a', '62425993275542993038219', 27); - T('djie7cl09h1fjae6jkf24hddb', '2297349384615200133513075570628245', 22); - T('29c00c467ad2297fgcebb1ggc65623e4f930', '29909191785719748871453419197824524959368206', 17); - T('2324a5233', '5664701748', 15); - T('3ha44k4jux0pu2ibb3381c5r38w68nq2d6', '3144597894719011198697132550928807872754550797197661', 35); - T('11100011100000111011000000111111001001011000011011110001011110010111101001001001000011111101000000011111101001111000010101001011100000010100000000001000000101001100101110110', '10640405756706933069932552513853268918056402456582518', 2); - T('4hkgai2g41gjkkfk28k0b2cbc58j', '2433652428912036105474056297252338648', 21); - T('f78gfdb425bc4dd73422de8d9hi37ahhe3c474e0e', '21750452433737224069756534727541495878338776132463249', 19); - T('23eme2rljlt0dfr12ro8s8msak3ra7nb27hr', '10588615039451549196330996020739733471641788070870837', 30); - T('189397lg7l47n', '79549303381971448', 25); - T('4wo15q0rodat47qheu0i8dfsv1r6wqo', '43653736667927410786469653245862403187138436044', 34); - T('10002120112002010100200200221222120002210222210022102002221020200011101101102', '1882808015430216703112943141384175547', 3); - T('ip', '601', 32); - T('301021404444300333431124040', '4535598742859239270', 5); - T('48d54obq9brm0c9aapjhi5m3i5s6h4', '11019306556204066307913575375918358320537764', 29); - T('50g4ll', '32379007', 23); - T('2247560737886056563088784666', '132701908509217706410444191', 9); - T('83f23b573f02gc6ehc9hf99a27h', '3561270466397699675623785225228503', 18); - T('330977844350743989365961925052001832148516', '330977844350743989365961925052001832148516', 10); - T('lrilmctn2s8x6rx3w07thrhmon', '17591718481915563097535542071461139053591', 36); - T('l6c0458gj9ngja8k7d4', '148452363181722357676361980', 24); - T('3534775621556047145137126527746324006765443367053164', '42036808204933511970427575795842368941701486196', 8); - T('4efid', '623080', 19); - T('1l6iufezrq9zhljcarptf2pvb', '35662422559916045014345714581704950391', 36); - T('2c6d07d3g2c15730284663', '616677193007865389311834215', 18); - T('1xuy7hnx04lukxy', '8147224799381093225064', 35); - T('aa828911672415968', '504404529377026737', 11); - T('423147a7a23756807a665a5', '342517176925712535575988', 11); - T('1371035220605170410066165577113314501175100', '126452315889789497901223436832123189824', 8); - T('10djj7hy0pn', '2789079501903648', 35); - T('bd88a7hb69bjad4c', '382437456673894325292', 20); - T('4rd', '4694', 31); - T('1v7f6ffg924wrk2picsg5ttta0ia', '429364493553457680681114867558750620331758', 34); - T('2k76jdee9', '313272045273', 24); - T('123042434342420343211442034202400443333133410423', '1085245063387282023154479674513238', 5); - T('131333311230232203231112021123001300113120032333023300', '152105319842008098107694289515248', 4); - T('51450362621322470420', '749021597016944912', 8); - T('1743281026180240084', '274931041666976077', 9); - T('1gv5s19r8tko', '55140372098348696', 32); - T('3110342443423203112413', '1547942848488483', 5); - T('2u566xr8ccdaqbh6c80hxj89cpswkcu9t8', '2575249682730886757243709065864952197950034185571423', 35); - T('100000010101', '2069', 2); - T('401574b6g1ak1ak44m8kch', '157978187599619061617502135471', 23); - T('2ks19ota29tyw3r5ov', '738394685619991470364891279', 36); - T('oibk25gf4o23', '1241117724903340848', 33); - T('4a65', '31165', 19); - T('2020211100001120022201021222112000020', '338142311987848269', 3); - T('1110112010011122000221200021001010120001112200122211112122201220120012102211210221', '649092111671534536930325932482290711269', 3); - T('4d6mie8p2alme5am', '13267418111464317128518', 27); - T('42577131133a232032662209b95408096081', '248422206977724611904731225962594664929', 12); - T('1n', '53', 30); - T('132103000344313341', '1288575776096', 5); - T('6jmt943mg0umthea6pn6q9hf', '132823934112197986003728246640958089', 31); - T('111121000010012201001001122', '3838995704177', 3); - T('1677676576173b51b9357', '5953759059536287667635', 12); - T('102jba5ac2cja', '95816830507621688', 26); - T('42waoqh9taak26ebde6k2', '9594733085680997313599473375961', 33); - T('33i3it9kgf0uhpdsrdsnsj', '64884487071552586313401842309055', 31); - T('953158728', '953158728', 10); - T('4gg9sat', '6927952297', 34); - T('722e27159ecfbg10h407345c8aig598ddi654g0', '27840770996812521761625900201217611244514913752965', 19); - T('2t03qjlt7x5twkp8qndne6wgdq0r', '638613689380489298155684957574955359701995', 34); - T('257734a46f7icbh9fj', '29732309036426152299919', 20); - T('c', '12', 22); - T('5', '5', 20); - T('4hqo477259', '49098912593397', 28); - T('178a034d5229384107a', '659300251029847390372', 14); - T('a3b1b80751b', '639453463079', 12); - T('2q422mo9ap647jsdo', '726063595260133145012147', 29); - T('2', '2', 34); - T('24hfch7i3dh6a51k8jeii679gk4955cb55de5', '887846405096017197440980451741450143251200403470', 21); - T('266441154454153132', '696261848866747', 7); - T('2766c9b3d2db9ea5a577a00847a3293d8939823', '1226312698204113502459283231484488118966971583', 15); - T('4', '4', 8); - T('41726045554731777722315562631262755462314641246551410413772', '101522180338987737728899908294640200607836241899165690', 8); - T('ico5im1l6gipi5mncbafaijkp1', '4379692464186729985302450182878794995', 26); - T('10fb906', '35653938', 18); - T('3ef7kik8nh207bh7d5j70bag3epj4mj41g', '176077548195361303192424319318361820663061066322', 26); - T('15b0ac7a6aac2113c2db3ca1850b4387777ac7b', '50486609943116788827252878271742473022089629', 14); - T('p', '25', 28); - T('26jfceina94oa3454j9dhh3e6j7kejjg4234', '75531629983146118263655855521646711760476817989082', 26); - T('31022130220010213222023033003011321112121201330333321013331222', '17496945529151877267572936509934042986', 4); - T('o29mcf83oi4b08k', '4384699236470516280372', 28); - T('6btaxrktbscxnb', '1079469584074493701463', 36); - T('b7jl677jvvi7io7k8o5juejadv', '1030942310965426695181339530150102930538', 33); - T('35ig9la7', '11075108265', 23); - T('4682fcd', '105751964', 17); - T('8d933590baac338cda4d9', '750978790972524648878031', 14); - T('7p221h60dnofi1b', '513797078081391814565', 26); - T('5814844bc69', '1613521666101', 14); - T('2535134113102123350', '298694173861650', 6); - T('1d1ag75228ddg644cc125539e4b5f96f6', '4192146465970754575581869917056003117055', 17); - T('40003033353315404140', '2438896653963996', 6); - T('21xn2vnm91ln4xmsr7lgcwth9dv6q5ukdm', '711811184545142701110316372055176235138545025034656', 34); - T('dhkcpvs3p81dua43mg', '524235584720684984089841360', 32); - T('495fcaa89e8bbbg646', '3763874598256486747577', 17); - T('nahjm1ll5fh41hfjliikkid088bdmi', '249014596602561282054902123492366098035042', 24); - T('40111000144002230310210303210044222130402132411', '575483485884632505627426105114731', 5); - T('3726520073102165257153311', '18508139224259054327497', 8); - T('i', '18', 33); - T('107a5b45606177a04b292a', '48520908714351770811826', 12); - T('32b712a55', '2628417862', 13); - T('19h4282j092he3cj51d61fe87j49aijib625a3b', '257590807854928552405178656994213410865026962322433', 21); - T('1lb4ep0c3a14inkjjmd9q91', '55412392011791736985105645077409', 27); - T('546935971318244194705643405', '546935971318244194705643405', 10); - T('35313224023324540435523050250331155210203', '52453055717382339610852843153371', 6); - T('15193624138', '192278230399', 13); - T('2', '2', 28); - T('3poq733', '4086111331', 32); - T('2atlinu3', '99312069288', 33); - T('fkbskc5fehg9cuqdijcact', '7490176084806938114482789713939053', 36); - T('1d9plprag6q9qcf2t8lr', '16786382574488616380634910857', 30); - T('1ha2nsdonr7p9dyd', '327188362472580029633509', 36); - T('111044424210411044040300133410343042444013312004333103402304423423', '3382637550594455513139626004317778571489529863', 5); - T('acppkmiqg3tpomqk', '149640867231485432618600', 30); - T('tf4', '38128', 36); - T('1dh63h4o13b35ln0li033b99fklhid632c5lb', '327715658396590402208146044366411318465199249019286', 25); - T('48', '76', 17); - T('ae7l6k3q8w6c72qxkg2fb', '79186912232612253291296402267111', 35); - T('e9n5bbn1i7lcbm1g05geb3dk94ep7e', '1555968092781480866983906031197226493462360', 26); - T('7ubmw1pjt3l57oajqgrll5jph8m94g8w', '2360795619253126146184916535662718674178380996704', 34); - T('1r65rt2trb55lq22h19eapnidnq', '484704933472164164552752255631996628416', 30); - T('136848467048258286126300125028474625160260100577417745404', '388690899361213038703438733086886750206857769355496235', 9); - T('g9cc', '152409', 21); - T('1lh1ecc99m7861fik3c44lm0g', '934238414796316634228162970694355', 23); - T('3215000045', '134002244', 7); - T('5h6n2', '8240157', 35); - T('e714krve8kdcbij581xc06a0440si92', '298097214434462329831651763900675946445833904117', 35); - T('1', '1', 28); - T('5f2ikae7i1ch6a10dch', '8289858128215684549179261', 22); - T('110233030106104754146604170637', '174817507453714537420747167', 8); - T('2nun96lb71g85sloh47bpp7r1sgbl9tut', '10662007558514444968621546451733698226110473802612', 33); - T('0', '0', 22); - T('11j09ae5i2cg', '2552089982704691', 25); - T('bkc8e0op1mo87', '1764757861634423806', 27); - T('2423550141325415012042301033404550435232245255441054030230', '620111545601390684890879270195626493023037962', 6); - T('21254414445535530534202215310522321041405310511521521210', '14135465583609025304128608335209973245692774', 6); - T('12604595560023747679439524152220210561427659802303', '12604595560023747679439524152220210561427659802303', 10); - T('25331131324141215022', '1786353731930966', 6); - T('8fhgfr7mfhj5l2tn', '320586536359265220332471', 32); - T('650643875157180170d14d81c9b', '23995660583887604305815556001846', 15); - T('a8di63mkh6j72or7e5f9p821il41q0j8fgd', '1714712023081629097084375038192551872981528239619993', 30); - T('10331300311210202013221033', '1397536800143951', 4); - T('5bckjekkjgc1', '30157465514958847', 27); - T('1307pd9inl8m59809e4e9hc74cf44', '4643603931817311396953878999346150129672', 26); - T('1cuj0rq761f8f3ruagfiku4t8r5csao8ldia', '22368007327103577567192720592619403223865279053466023', 31); - T('3210245134450313253351101435530534', '160603316899608463616006554', 6); - T('127392d2a4caa', '66893400725574', 14); - T('2ikak5bkjajd9gf8h3cd565j199beg3', '13474955681660365951671452544344812602258', 21); - T('3eao5e8450ic', '8529544513359837', 25); - T('e9guf69', '22058758689', 34); - T('15158180900', '7766337557396', 19); - T('2mj44mncbs4hs2198geouq5jq19qjcduq28l', '43028515822351712961957527689171615902026923021969323', 31); - T('30esr4bjaqcjo3p10b3js7kf7415bjsl3abn', '4609195958142232639596012908552014584998492990749496', 29); - T('14ehrjk2', '15672492194', 28); - T('bc2c51eabeb4d', '47540354209876493', 20); - T('1b69d49b7b2391582a7b6a8', '29845378456995755608746436', 14); - T('375099280174972588499969848346581', '375099280174972588499969848346581', 10); - T('1b', '31', 20); - T('185008621588745454705101543580381764687780441351', '1379122328542048273411929412033977767884857859', 9); - T('1ai80571828g1l13b180f49h7b6', '373322096841196369617565471577760841', 23); - T('365562046046280128146688864433503', '12828940182695045910972242404065', 9); - T('1122130130022320301030133301123031201221230031', '1749448690563478934830619405', 4); - T('27421303721506401005734534027062355252748655124456623', '118144497372701082723759261444994330066950112399602', 9); - T('11022211200211001100222020202010111210211000211222020112201201212010222212201110', '71070272534459599139697985336272797397', 3); - T('10a4786b212c23234b78', '1551477993551070203588', 13); - T('6i51o82m5bgnb93011420o75b9nd470729n', '2279577849940632952238972161001397266163154407748', 25); - T('1', '1', 31); - T('1g', '45', 29); - T('17llodh0p9p4omai6e01b4', '674371603170934289782308835302', 26); - T('ld54e21eh02cbkfbaa093fl55bcg8364im7', '429238038060162231685243227854062073708831450765', 23); - T('7mpy6nawcmhw0g2u', '1108330902717012441427200', 35); - T('6ajf4ammhdhb71b6954hhkgmb65bh6ghg957', '2961483371926675845110593572135331590333628729021', 23); - T('fba75c3e2c8a777f', '18133563846735591295', 16); - T('pjcqacl5cdendipkqb70ipo5ba5nn', '307951112168204374490658438192806014671308', 27); - T('6tun5793cse93i199uffmqgrd0kh', '128777919986710631701713272631586482084386', 31); - T('13a5t7mjda9ou6rrbpfa', '23997647707013581885686488193', 31); - T('7201731', '3839509', 9); - T('11641233332213532446', '14562466660945139', 7); - T('99a986165294448a71', '21797994356398731253', 12); - T('2401101411122303434111302420203144', '327094274822059722428549', 5); - T('4144619d2', '6041074356', 14); - T('34321447613754733467632640535662447106103006103436', '633549261053883686239613232774717922594031390', 8); - T('3xaj72k7juuw8wjlpl8ckfb', '67994205225961269732014170337721959', 36); - T('26148k3kima2ag9i6kcoiafn3ogb1k6eo', '1215324793757930007410045265759556424912816624', 25); - T('1025206642353532', '5014780923889', 7); - T('knim5m76a00h2lmkoccol07f04knh3b81daj', '2614651514382553773659324279451802705234366596554065', 27); - T('909a9a268692348781a698093878', '119072460849132927971033373039', 11); - T('5duc4skq2rrunqptmcpc8', '3661917045452129831279130480136', 31); - T('10470ea350e01dd0e75a7366dh77a30b', '830413508341641695220604349217566325431', 18); - T('101000101100101111110110100100001110100101001010010100101010001100001101100011110110001001111110010010110100001011101101111010100110000000110100110101000', '7260976836577029672818019365254002054979938728', 2); - T('q', '26', 27); - T('1077074290508987607466933a10', '13937973055009429267248363869', 11); - T('1lf3eee3d2sbfs9ogated9t', '538748668557436691784615710879999', 30); - T('1h9cb8h485', '620046063560', 19); - T('dk', '358', 26); - T('13241431430411013330310434441310033234333013212', '243729894988914189325871229969807', 5); - T('18917a008279a324a66a3', '1212930867843585167566', 11); - T('gfgfe19f636c1be7', '48492131801646439905', 17); - T('100122221110210110122111222112001022221002012020122012112011012101121100111102122211221002020001101121100021112', '32679709809245815111430154357022862731776016143211796', 3); - T('281689658717189228532b0585c7a77384c774', '431443448247936435069993946707949525906845', 13); - T('12502532345305244100314200520130435541150024035250011323125030', '432380196346644742357025125509064993551796602762', 6); - T('jhf3d6ec', '35740674639', 21); - T('281b8h03e2b4568', '3938599428744194128', 20); - T('rra3eo9ang1nkjbgggoj8be9522j', '33118535163106500657229181745691670041643', 28); - T('16724077876370768542274160467677713', '488519835671298139694841930475413', 9); - T('5paaj8r2vmg77onwoimbb', '13527973399537075043951910147074', 33); - T('12c94030', '127283226', 14); - T('bjt39p1qaevgviriinv', '14387551065792537297755392767', 32); - T('43', '75', 18); - T('7ep4eb7mlkkeh37baaejlo39odlhmjp84dh', '9739053884128074552490865807121378544532459516835', 26); - T('205168664a2c', '17495412563292', 15); - T('qp51qp4bhxk5xpi', '110602057480221626740068', 35); - T('5a4d12b4ii8cme6gk5llj8dj45eii', '731561718476390279418093411754616519803', 23); - T('15gb1d3754', '160300118210', 17); - T('5626616225462155434', '9637056328483581', 7); - T('654a4c9aab6db6aa93cba723a2c6484', '154437158573067708419825110074369876', 14); - T('1010010010100000101011111111110100000011101101000100100000111001100000010101011011000011111010111001000111011110101111010000110', '109413864136821966738078269201594670726', 2); - T('mhl5jj26bffelm04k15l49fcik4j', '133104314563536506366413132367074503679', 23); - T('9fi00bhiic06', '2006016761428806', 20); - T('32097811179437438638590235847063', '9036190162614205241654679982433163', 12); - T('j4r8gmegar04bpj', '9165914535009266218669', 30); - T('fe9nphkmv', '27537217830419', 34); - T('19km8am29a5lgf44lmgmli52jk7am859a778bdm', '7966769005196291051847190165381447220788995817722931', 23); - T('1d98hdila12217', '1365501640827240607', 24); - T('4', '4', 9); - T('103408764722834675342275873a075472522265', '42290766920392525491850559747134754129335', 11); - T('40145342023520434603630305455', '1855754698685829573314702', 7); - T('2330143431434321023412200330441401404220433113243103233304100213', '295242550269530830933574434277185767468034433', 5); - T('52lfpjk6gjpe8h0j5o085705enhh', '2263111846247859246807588383287598329958', 27); - T('6', '6', 35); - T('ckdc1n59j5hm20h2hne7', '9802463620743345899194619415', 26); - T('74vyqpfst45qaxxjdnhre4anybk5mfljczf', '585768757405889601439917672060830645196186705764956539', 36); - T('25333005405423404431150032421232424132311504103', '1829167166770747320900573042647616039', 6); - T('a31a9b0c189b5604675483a87502864845b', '766374537111738699661732942419840514807', 13); - T('p6h4o2o7prsknugn44ahp89eq3bc6quhss', '1178753525703649096388315386598744840163151378859932', 32); - T('49opl92p19df0knm8hp4gn7252gf', '701559229806255576316878885678199202687', 26); - T('11101001010010010000001010101001000010111010011111010011101101000010110', '2151676161178286545430', 2); - T('c44a45536316dc7b0c353aad14b7830d09c2aaa3607c5', '3310452953174251067352010576935718387727695162512521', 14); - T('1546474620083335460588111104874445', '49874778889357532913325826762540', 9); - T('1338003447a222244271a09305208a90b51b1', '904051338548505527200275028870151876053', 12); - T('33260652734712254347', '492610547748526311', 8); - T('10643055642332651415554523356524323', '61444932294731769038022280425', 7); - T('3e21s8lhau56242nlcla6rmjoiue9kf5f', '5026850379275392936691910666263310074025543875759', 32); - T('4792739119043471aab4ca622058650496013c96c827', '3644595850902778704692127204892999955943240641053', 13); - T('110cc5gb37c8', '67978664942084', 18); - T('29615025419685937529', '29615025419685937529', 10); - T('7lmc', '123062', 25); - T('302702', '486664', 11); - T('447', '367', 9); - T('42121511051155513325202314155012551211041663406164645351603', '44712944643337807555851878205053325752326477807548', 7); - T('12rslb2mm9188nl9wr4gc9ty7y4isn4i4vl1', '1190543759247226965370117450905999428839676647370465211', 35); - T('14kkhbjl509ej5bhjm03mmhai72lc3fk3m0', '101720279602301692133681010267630420149945544912', 24); - T('3dbguecegfef5bu08g0ac2', '71460045177172533150728371041297', 31); - T('553d041d97381b8b08049209ba3', '3387541749393070534320306028403', 14); - T('1idb05jl4446g11h344b1eaikhbg', '3248342745065968412361931577840440806', 22); - T('391kdm2ia', '265857054704', 23); - T('d', '13', 19); - T('2foj', '74760', 31); - T('15152500051251431501352430050404005030331044424233', '254129829633425094552392729656769925213', 6); - T('93i242f842aghgi8ed018e1d', '2374115750141125588719021780660', 19); - T('13e7e73ifh5i2g3ameacble1eaek26e2j3jgj', '12182402836527839156286030802586331869647012229654', 23); - T('x7ann37tsvehx3q5vpxaqq1eo', '745474840780903891388495474305666096032', 36); - T('23468822326408', '23468822326408', 10); - T('209087', '513319', 12); - T('ba4c030c1374033d446177d0a2d045851266', '152797075747889508739869970552336948630314', 14); - T('b4ka', '119514', 22); - T('1g6b8h7486qjdwajnef1', '317929058502405198044902984426', 35); - T('1', '1', 2); - T('8icmpii9daod', '31973718431183165', 26); - T('2c8jhn1qg6n5', '13655372424481868', 27); - T('3dr0y9yp1xtkd42c4fw6k3', '903807188407354488131442830742553', 35); - T('6', '6', 29); - T('61829970', '220025892', 12); - T('6a7f74151fcc6ed8ed2b3f19100', '135002082526570912993917396947200', 16); - T('a71qu3m9cxks', '716447809640070456', 34); - T('1332111232033320011301003033232200111310000111011222210002131320330132100', '44022861335477932950560265835710759372572560', 4); - T('12021101120202001100012212010220010100011102010110021000111202010201121222002102102122221002101102220', '905995283475954839283786144849547150961766784239', 3); - T('dd0373aof6fk', '74945293912339265', 27); - T('6795977293774152225212538650395631193808973258378', '6795977293774152225212538650395631193808973258378', 10); - T('pm95ag59im21f', '9117644977445972259', 29); - T('1b56', '3378', 12); - T('4g8ea53b5ehd9694ih3dc838ac11c561dc0hgd5', '19047736684211855674982504436903813834471230419734', 19); - T('11110110100000100001101001110011101100010110000110011101110010101110101010111001001000101011101101100000010000100101', '79996489761592791530139097880724517', 2); - T('11531554acc00836794199184218445c5218c222b61', '67628655578352237505304598601215330350928553080', 13); - T('35291', '1955549', 28); - T('5a0d410c996ff91fce14753b986e36ed02c8038a', '514104745647653703895348991238314574953430123402', 16); - T('98ef2d49bef8f926076d15ea07db47db', '203284532859688206391148792201594226651', 16); - T('1101000110', '838', 2); - T('2b1b51h6a9a23eg4gfg65hccjig37d24ai2a4b4', '70201256484595753224630835840712606388793018001824', 20); - T('3086551513a21531959700a62389709283423440875a1a3534', '3277335942462557850196574034226034230391750988025359', 11); - T('2xagh32n24eno24f2r8cfjn', '14679210071634068950133360692505241', 34); - T('4605666016246640266213126434411416031022605203144100210325560055', '849411127852458866731338127021230286264433815611688357', 7); - T('45nqegp1jrjgmjofhmn83bcr', '18133891299810930196922310944355618', 29); - T('ssrkb0jj', '500219805132', 29); - T('1033032010232122200222020213020010', '91334330474893046276', 4); - T('110353378073354064510546137', '7210867946142586075586503', 9); - T('3406105036448313018', '518252281403001236', 9); - T('flvh3l2mdlamctv7nm9agrm133', '1438094370381119663687960958424282684125', 33); - T('6334358463', '6334358463', 10); - T('35c614c13a10691', '38009608424197159', 14); - T('11010000111111110000100100100110100000110001000101010100111110', '3764941434990646590', 2); - T('498c3d13a1d760', '3721053183465240', 14); - T('e140rellefn9phhmfp2p0did7npg4d2a71ja', '21442464367275264053737247138139660244488577062935044', 29); - T('2200223332021133030213020133', '45229383068316191', 4); - T('92k2c0j8mj00', '21725079534730625', 25); - T('38q2bdu9tnlwkgn34qhgbajcp3fk4', '10775935475547100477756815098145914310211171', 33); - T('13212', '486', 4); - T('1021012', '923', 3); - T('bj3l5080jlklfibj99gl230bf6ikl76kajcjk', '124541870118109694822199814329231541722666270319503', 23); - T('41eojig6v4m011hg3u4hyk7wc', '46139830864306341644172166605630244707', 35); - T('be3203d11fa9ca5b4', '575872105144800539244', 17); - T('1143442324240112302414320334333410111030143112344223421342030211131', '18863137177859377006372116620735071224799069541', 5); - T('c2i6d6kf', '55565364591', 24); - T('1969', '58545', 36); - T('25d', '475', 14); - T('596851a668739904620', '32659692732589912924', 11); - T('lv3', '23895', 33); - T('7a7c175', '183805569', 17); - T('76cpgp9gim624dqmkii8d5qbqib1p5br', '15595823047616363439274756729939503861036829536', 29); - T('dga1fafagg644g0fe', '4000702988803940637805', 19); - T('1acba9489c62b65a4b89b66a2ca29a5a221', '138107096676865488162009424053018420376', 13); - T('2156543644250631306263231223052110364562324313246541265', '9779427167319853821850991345749633818069902582', 7); - T('li04', '846196', 34); - T('h0h887omnj63lhn05cebu7b0gs9', '10146394091043760918958586860739479666458', 31); - T('49b5633djac5d6j82i21i33dd8ac', '601048929950921960604242992843787412', 20); - T('64246041612682857608', '8747501280912207998', 9); - T('30j2mbl97e7eg', '66536342778013341', 23); - T('e', '14', 31); - T('ckqc54g4jn8ppf12', '64984930998994069460686', 28); - T('58a8cbac11b2ab6a129d3399', '1291579933284075416907209643', 14); - T('26vq0dek7', '2439340538503', 32); - T('130023655', '8241595', 7); - T('1102202120121121002222100120012012221110010110020', '114515542030739621547975', 3); - T('1992566752847870721677784', '1992566752847870721677784', 10); - T('1100110001010110001011110100101011101000110000011100010000110010010111010010001101111000000111110101100010111000101101001101', '16975625492382937650444877242569558861', 2); - T('2rbbesin701sp', '1547900614446571765', 30); - T('c5q44p3j2js3kok0asn588980a7hp', '1080508918419483023850317169372101858474032', 29); - T('941egd5hb1f5e12481h9a', '117639049478624610284913400', 18); - T('4655600500', '1834889031', 9); - T('79088597835694330a29', '478556138580736188025', 11); - T('iqlb3ql72', '5363996629763', 27); - T('6h2ej0ckka2ke', '50134882009333016', 21); - T('20653232085716', '20653232085716', 10); - T('3198916b5130ba', '949252404083214', 13); - T('1ed53c612a9ce8f563380bc006af575169', '10491910079311728745430929182060466098537', 16); - T('cb6hcfa270ly1w8h', '1784912231557744137344247', 35); - T('526b56b97804', '176181942855498', 17); - T('26gem7j62i2c4ka2580d8', '9160982641229049777224024384', 24); - T('d6e1e36jj2f4ge85ga001ig2ib', '15132464896763908208949954242501531', 21); - T('5upfq7p41fw', '16214516102201407', 35); - T('ca0148216a132370494579c3811c9528b2579bb', '27291858728033467909120034313500390261718897', 13); - T('123020003', '111107', 4); - T('a50938148a435a83', '531761988603885367', 13); - T('1gj44qmicab', '662398178858335', 29); - T('11102787284451943115992270196016750607834192358', '11102787284451943115992270196016750607834192358', 10); - T('3b062213d4ed1b6d6621c4b02ee73d12a00bd436b0e5c', '20908546194267013369961168110558040107137325813741362', 15); - T('75akcpb3de2s0jsnrh3bcu2g0', '4449836213108688141279407743308365708', 31); - T('2b60892958b2631c6423a326', '120333156700155119670331895', 13); - T('42400114311051151043215013041103042421240541121425125454', '27935245721852777377012293595535900324233642', 6); - T('55qs1hj40j71ig0m3i6hh60pq5qp', '39627138353823040931217142004547884957305', 30); - T('4003040210505622', '19032912241576', 7); - T('223022300313310221001110032310212133130201333210100220222030031000000330332300331203', '252361472917175591010150696208672808420570612567907', 4); - T('2o0hf18glq5mnn0jmafl78op7krr457i8k', '1630303300352983488506028827484775858825533838676', 28); - T('hjgo156lifg', '3649805981664910', 27); - T('2672ck1ak9j3668idig9i', '9094565766877483628951027946', 24); - T('42558a1397719', '236437228306155', 14); - T('50514031666626056320465152246460322326631121443656262634540', '52944692260629312711052610581234760210698420791042', 7); - T('223645618550327621756258550420232724400738370', '2199636652234003810100969121876147258759993', 9); - T('8ac1', '147681', 26); - T('3ga7b38ggh0f88d744c7c9ha', '998035919010781157725464776885', 19); - T('103211011033132223113233320333313313223201302011021123102231012121121003202', '436635316515833678899653582525236295625969890', 4); - T('d5l4dza', '28635977926', 36); - T('2pdtlhmse6eg26s19ucis9hfldid6i', '124654514568801370471033136141160922807350482', 32); - T('52felh5gh4510kh106jeoj7cl5kj11il5', '2767399766384557104422717154012442967715261780', 25); - T('k0lk', '213442', 22); - T('11c25b068603cce9f3bbdca', '343512914478456071211695562', 16); - T('335033424101323340423113234541353340534', '1352227850184145127759798321002', 6); - T('9e44986ad6c5a3421885a4dd03a', '37696781807784302268353865692680', 15); - T('395ibtl4so0egl', '52712097322785853101', 30); - T('dh2cedf2bf587c91dci88f', '9929040065272749223553832140', 19); - T('772a8e4b457995e13897900d8000ad6c1f7c9a1', '42519933036531441133313813110786358673933846945', 16); - T('1d1cd508f519156', '131111610056020310', 16); - T('ekj8dkbj6i3kga95ij22', '198679762579399342902422792', 21); - T('41k911j29kjhdhc13ag902l30dh0a2c', '76586399715825395164280132066877039296656', 22); - T('fpe0tn39dh6qih2sr45jhrijlc', '304283009698601976205960463944913734374', 31); - T('273dcf23ogp2cfakgbn4fl', '1178457683913699770110878339571', 26); - T('5da9a9bf96be6918e50', '27644363394761964490320', 16); - T('93a089d540da7e65fbc745d', '10819104601922865145439435655', 17); - T('1133562034346632011', '1978986750380760', 7); - T('4ba121a43bc41383ebeed9d21e1832', '61080584384845175908009030944254597', 15); - T('55c3008747765cb5a544430393a3400375b2', '5308482319711252523172754195251756876991', 13); - T('5710728926a32bd8578b09d', '90281115589861012459774291', 14); - T('124222134144321323244004220113002310334232043000124314311123034413034133433', '8364205020182315700566879525103608648610325894833618', 5); - T('3ij6fei7ct8bditifj57qidrne', '69250254015520173234889635905422378215', 31); - T('j84l4e35cnah4pm082jo8f23fj119754ef', '955016814986800763460011887048876324258463031587', 26); - T('2l6hm8aomfi120xvkq64', '328810104424271657766987866856', 34); - T('3su7i6', '200878586', 35); - T('468713253255775056138736506054776103258272850367', '3375929477240893115892314179236945437132610304', 9); - T('iiq2dxy', '34073294114', 35); - T('2jh6cd8i91mia', '62648677168244333', 23); - T('2b8f9ai9hd48207a3e05dc0ejah55j156e', '22092750538409534069194105946265366099050134', 20); - T('404b8493a8a43b334aa439', '185609888390849041174509', 12); - T('hjq9kjqgj848r1e98ijc0', '1553934125194558113894610790144', 28); - T('ake308dif9ihnaem7hmm5gh6', '603396346398581702540847365854110', 24); - T('510nddj9k3gf404c2i6gb9n7', '280271867286312020777609932859503', 24); - T('963slghoaue5o6iajlj08do1jhmob6r', '5064387257282298335135751952618725428567377882', 31); - T('60b558db764d03150846989b1c37', '53430936932852060459452718754345', 14); - T('ha08mf8sid8joj6el2cfognrdspcbreh', '37455615024172541953556930974489194890334970044', 29); - T('2341300044110340114203320234412220030412114120300123110413121412240133', '4697326942430825924898237671958542016017650118168', 5); - T('d65a86297a7bf3c', '2251611900925702988', 17); - T('4jh25fkmbd28lhoaod1akam9ina2onm', '4152357643144590426805411364596922347703097', 25); - T('7h13b82d2kj6e8c4bhbjc681bf00f9ih00', '335744283433797761544495039026062289479426677', 21); - T('79nidei4qdbvudiev0sbf9m', '9481488549331803281413309926325558', 32); - T('3fknbt02chqbcn967adb', '75965804098331194115528214530', 31); - T('625229929149012470971842263044', '625229929149012470971842263044', 10); - T('17711i5p7cqf', '31331848805567615', 31); - T('1a4314b9650544b6206b8639', '12341325556611002168638605', 12); - T('55a7a2011dcb9c54941653aa6a35', '47723551702572572040904921974727', 14); - T('7teqfe59j05st6pun69d', '172302167861573369948783075562', 31); - T('33662122623', '1008274536', 7); - T('168e9ecf225e4206e22aabe3d5de7gc1c8', '55695742667189173051412647636327754746841', 17); - T('po0kdjoclplm33elfgn5gfnbbf9i1', '107884700371921309802125903666720535662145', 26); - T('iiaj731mhb7icl795864e4', '742188118991708140904927327409', 23); - T('627c5465', '389098247', 13); - T('1110110111110101110000001100101101010101101101111111011001101011101101000010010010111101010011101111011011011110001111000001100001010010011001111010010110001001111111001', '695557780484633047451419090913265350682286538560505', 2); - T('v1hdrpi72rxl7l', '3671512854030700329616', 35); - T('4925aggfbh8e4gac6ae5c64254d0b415i82bd34', '17535511043608617303142367159976450528283461395046', 19); - T('c', '12', 29); - T('30o3fuug0ga3lqf', '12500070118039641683400', 35); - T('387d80c474c32a591b366c5456c7a871951', '3358240678140338946789670983146684842579', 14); - T('orw6puyc02pj561q', '3592793122578442538624286', 35); - T('i719319aa0g22bi7f6d', '1913082545143094439790472', 19); - T('531d70f5cb9f96h9ab282af2eegb420hgfc19', '8007055515291584323571716917746295137673084963', 18); - T('3790218a', '72314780', 11); - T('7', '7', 35); - T('3652056541643012540022255', '18097097047518748877997', 8); - T('4n39u20hj5qdditk9kdim6469sbqd9', '210607480145416873193807172344770565962590633', 32); - T('3b', '86', 25); - T('18gb9ffn0mcg28', '3304915001872755708', 26); - T('a3aa73', '3822367', 13); - T('33aa32b1a1703484200015460108a02a6b6', '246534305809775961185312195074070771144', 13); - T('76da3o3qmka6jm9bpi1f881p1re94q0d', '5261591201984542081284964078385959485970188205', 28); - T('f76deiaj99kaf5mdndig0m2s8gi2fs', '270557992879867684462992923067573004312715064', 31); - T('10010011101100000110011111100100000000101001100101000101111110001101010110000010011010000001000110010001001011011001110011000010111001011110110', '6432766911463399701129205956556722425393910', 2); - T('14028338200708615102070674515767072214', '293684470306336046607148169275151740', 9); - T('46n11ynilo', '330255553677059', 35); - T('gclfn6mi9d33kii', '1802574648845195012667', 27); - T('10000010011101010000001110000110011101010111100000111010010011100001100100', '9626033841394783172708', 2); - T('26gc07ahg33696b6b35i6875dd4bfdb84h3edaffigi', '1204775186640355894241660800988487731870565763140511756', 19); - T('a424dhjj68k0gdfgb72e6ea7f0d5d1c70bd6a', '4057922578962802051428308232940970109455163045139', 21); - T('7c53d48781c046a2542b2455752ca849b37', '7330016794037776721321455336599394592981', 14); - T('12d140iel5jf', '653197596401981', 22); - T('3j3bj63jaj3kk0iecg', '256450260218708669218880', 22); - T('201002131031010332002230020133020100212211122313012213313001310322321211203312212123', '193142585656707088166778168268938862156435413756315', 4); - T('49a9l40e8ekdh705bf7i66g33f5c45b60', '40178796887510802718501234793652601812654280', 22); - T('1c3b34c3c85359aac868b5a9c15', '178508803284588917440368782394', 13); - T('2266675470606120531031640140307074715050044204', '102669173431008960637137393788268958468228', 8); - T('10h81l22adk0769i06e8d6cm4ca195gii2a52', '10869724195205977220549980987330530624249475503838', 23); - T('3pi1chtc5pc4', '97193250034096933', 31); - T('1101101000011111101101001000111', '1829755463', 2); - T('14a08119381f59538f02a2c549605', '6693834434076143282016415621879301', 16); - T('1', '1', 15); - T('5f4fde7ab29b25bdfa4af', '23976578463856222590090297', 17); - T('1g6h69i35029818e', '28255938241753109175', 19); - T('6hrfeum2khl0zl27y24vi8ddg143duhb', '11424803451794483589056265558023874926815658466959', 36); - T('dmsofbufuxjqg9w', '56513064049768744430947', 35); - T('4dnefgommja0796h683m0mj57n5l', '253005180165119243199661555791691530146', 25); - T('1713eo6', '312946856', 25); - T('3c7b2b515538d22436336b1d3a7d4da13456d32d4a1c68', '14671861619977476398729036327299069334875111680121764', 14); - T('4qwt9maaj3sp1inn', '288790554898254466919258', 33); - T('22311421101332244000124243023442422133310', '23019524981022032107906052330', 5); - T('uyyxj8cvk5a2smp23b', '5501966907140058787121075691', 35); - T('5l9rpehrm6sng53', '1706788842927692648372', 29); - T('d278658d7dc7', '113890822462987', 15); - T('18dk30d14nkf391jn981h3d9m82ibhjmnp9dj', '1154145887404199057068348781766608208776338261114369', 26); - T('18ia9ddae0ddebffjff4c84b5645c0bgil1ehl5k', '31708278802686177414795357361653618380221248289373646', 22); - T('24531010135252224313144452221105444022014', '37699522300506678162787688219866', 6); - T('1435a122c73911356a7046', '1526399338520071390500838', 14); - T('402332314023014143212', '391927271631057', 5); - T('1vew7yl00kagl6w8yf3l1o1pd4j9tbq26', '48803334327251890804125487484681131320572737671676', 35); - T('19228cb3f0a4795bc2dg58288821', '49714879698985993220949182598831692', 19); - T('101013510035221112224414143441513001515500033423435154345', '38806529557660171345438701910920418778114393', 6); - T('144142024401344124331202432034204232321141334041222432422444024414311403324', '10455975472873714399055311680044207748367282684872339', 5); - T('9907qit', '6779912969', 30); - T('7073', '96939', 24); - T('vhkckv2ar9oj8hd', '57275964522373642706212', 33); - T('1233134320020124210004433032220444200021042233114014402022042432422033111444', '40945031687597829579374183757759884584950193578410249', 5); - T('2222101020221111100022001022220200211111121222121002010121200200221010012101002222', '1320095371747740273885112117677015990623', 3); - T('1nsitm4w6l6idtqqsi9t0v6c', '284946527389049829952915614970309188', 34); - T('1bjfh6dmkidlb2a05gkj760gf09afd67d25m', '693461359711438949012962332381951054793856687791', 23); - T('1467124ltbe5885tjf26dnos1ork5mfud7l8q', '554897363491883262342501037868827669091792347235392284', 31); - T('k88unrh77le0', '729898419802592704', 32); - T('210120111201121222002122001212220200200112', '87431386841990129633', 3); - T('926ic79b8762gd9j810d6gi3dj9b', '1223706960610540148323952981562191791', 20); - T('agnai6kk71ebjd1f5a', '22882320064040934814223437', 27); - T('2cd4ghcggg8gg9b8611611li0h0h', '4527014616841415467524507113754343925', 22); - T('2352250503021325401322130335143351', '126559545519634091287010419', 6); - T('0', '0', 29); - T('6h5k9b', '65325236', 25); - T('81b43idjccodfjc4f9lbdhoa95c54i4n', '174727107340902317729886057171151789669995748', 25); - T('argrac', '364408140', 32); - T('10002111001001110100201112021020221212010120101101020220110110120122101000000122022101111021', '26986516589437621598399475479704475782140826', 3); - T('5515030240151510034313345231334334552', '60696827531635769898353913092', 6); - T('ke3fzopiit913', '96622923170020539639', 36); - T('598e03f8e19f4379c5b70b9c15f4fa9156bcdf74116', '2094150575916241308211940593568291573516182910091542', 16); - T('mt9', '22050', 31); - T('9m5peb9g1fea9o8ahe3dn8kos29str8h80e', '1624329574028280261522777174783118066092425064046214', 30); - T('6e7mjlg1m45e570i7bfhmfeg3d86jml664f0i', '69712363311376846821424071636169936838984692925273', 23); - T('7ol', '6181', 28); - T('99b66b61a8ab384d253b', '57978178355149351769929', 14); - T('85jbj3h12fe7hi8i699478g89317a077244', '1425756476686551290364945510303428131201176884', 20); - T('2f2', '1199', 21); - T('1662b5550ad', '422372216993', 14); - T('k7j57pdqehkc2khdli6bmen6epbqbko4j', '413053805045735653604164429634486822891282984963', 28); - T('c7l352qiq0r6f6r9nqfqmq', '30158411446987207313594748241506', 28); - T('36llefmp28687i', '33170031393242299676', 29); - T('3', '3', 4); - T('5331355335541541550413633156555041304', '14569418445448629730411478463671', 7); - T('43i5b5kccajifo8qn6b7idg9qe8i', '4889376657622272141258689718283342404178', 28); - T('b1', '309', 28); - T('4a9vo4kd4hip6il3', '163290295531837842475683', 32); - T('41706e31dj9ahhea1k3bie0i823757e87fbhba', '33963855813517146822738096038997244039390777451035', 21); - T('2d4a3sg', '3096803308', 33); - T('3331103101301', '66401393', 4); - T('4362145245600312216211556654331135', '35234402549674165076345929086', 7); - T('2bx3qg0a15e1dwf2011n8', '10024147880840790550776084418594', 34); - T('hihd6ih05afff641', '273205768456185626265', 19); - T('b255o', '4331399', 25); - T('0', '0', 18); - T('510080h0271hkaaf', '4693884914412126100265', 25); - T('1022022320020331232330321010100110202021202322033330222311301200212213212222230111', '6774969515016529365414708362547391944587048823573', 4); - T('c4p4ohjglla1iqosl2fqs3ps644ko', '1077352974905789650285543140145512793505236', 29); - T('28', '36', 14); - T('5f43e3cbdhc7q', '2925355769036300036', 30); - T('10202211221120121102010212002220111220201021221011200112200201120012000101011121200120200', '1219399490015420262032876008368588084898218', 3); - T('lqmqdeigiyrstjb0ptr62', '290606160250456698859096910550986', 36); - T('140j63g8eabdhe9geig55544ea95fdb1j7g', '206573099734256434789729083818951917803375756', 20); - T('1121333330123010230103232231300011231', '6640763429402799702381', 4); - T('4a9732b446c3496c8b481128862c7b8736788c2', '10313718642811383413495457120072097181651548', 13); - T('177aia9d3dd6d7fd2f400be1f5921i', '16853319484940264292799668730168052007', 19); - T('e996ok2br25wxr812xqwewkxjs0ha7bbqj', '4935251121671834230635165665794644497506649296785915', 34); - T('1829fj43kdnhlebado4q7qk2b', '69493606859298866281274539784122883', 28); - T('1ug4btjsjoljqjl8ru5', '4144140361800145764282627077', 33); - T('59141846746238', '201252640070138', 11); - T('3dn0q439kfh3joh90glm66', '71708810576319538414890222164286', 31); - T('424420433042212434434234410011320342132310014231', '3265300947003957321669335288360566', 5); - T('6983s51hy35qgqnol5kr01wq', '2043620645014439781841299449690331746', 35); - T('33503001354', '11839443619', 9); - T('1ea715638357a4gab8f36837d2913b7b457a087', '106285010031392323780353251260419840504700665981', 17); - T('4423326130032', '63980138511', 7); - T('qe58jl12nirrhapb24', '1725118401903404858826766756', 33); - T('9ctyl8vinmol1', '31654299928017819011', 35); - T('53kkn252hrf7ip73go6kisp', '763327533894184601429521762539764', 29); - T('rr', '864', 31); - T('2n', '73', 25); - T('31de58c8c77182cce2248cbb5082aedbb8e6bca34', '345951087846276854939428074890216991884992827799', 15); - T('26ed2hii1fb68gg77jd09g9ha25fije312', '20071611461553679427803317028838458620753222', 20); - T('b56a74b20161a13971286a946476a56a675816549046266', '503143184803276945768198832235249483823865080806894', 12); - T('3mauq262ifqc6q6uo3k7rhcn28owuigh501', '15665089503001948796936991201084677402815300352038414', 33); - T('8a', '114', 13); - T('7g74hk2i1', '4947834512341', 30); - T('2001301233012895477086277973272385359833', '2001301233012895477086277973272385359833', 10); - T('3', '3', 35); - T('3v3cl34ntssctbo61j8h61awuc', '758000163587568845774810157998497968616', 34); - T('2pj6m6dn0k2f8862ad1l', '2291763978068855450334466547', 26); - T('1275', '2631', 13); - T('111010100011110110011011011111000100011011011111000010110000110001101011001100010110100011110000', '72493971032499161046675712240', 2); - T('1jxwnrx4311dqk790lxyio0a', '969152182386767070760404233313656842', 36); - T('1515213043431201', '886767999121', 6); - T('231546954488138026339363483421', '231546954488138026339363483421', 10); - T('63obkjao56klm71jg9eoe', '56017208321706855359322806239', 25); - T('79cee1c1a710f200ab5d7687154a5f', '3650407151966683309370718278348943140', 17); - T('1b8ga7fa32455ec', '282558612029627531', 17); - T('6jh6oofb7', '1900009409713', 27); - T('12220411', '116981', 5); - T('6hd35cdafbaa1j6745b40614546ca0', '369523428248678589607467253915152693000', 20); - T('31424505144046650031120545413045362312145623206003', '830451645463432810708654518843838981528671', 7); - T('ab7d7252', '13528536902', 20); - T('1767255257', '266164911', 8); - T('355b5738c3cfe719582f351c17af6b629d4', '290502049209306091381681583617785118206420', 16); - T('146984', '343540', 12); - T('d69', '10369', 28); - T('1110132', '5406', 4); - T('x15mjchu7c3yp', '156518775559992462865', 36); - T('1lb759m57kc3gek0k95h', '144338567461065415742555002', 23); - T('6eoirrjmgwb6obmpjo61', '806330884412638477847015065941', 34); - T('3057512050807124036250432', '245051565483871936556723', 9); - T('1a9lrsle898kn30ra700', '15622486673307407101219146300', 30); - T('2dff5q', '94243340', 33); - T('1018b49ca466c70abb8bb400a59ca870252c7224184c01382', '297566178044937671004403039004634049926129648125406845', 13); - T('g2205xofm41', '33155058894377401', 34); - T('15a243c6d249', '23786665988681', 16); - T('ifej8jf196156', '409370272611766206', 23); - T('etkn2y3s9cvl6', '70229835510573528042', 36); - T('29j6gle78lp65m8dm7i09i4k69pkn2jodkfjo7', '53655147107520605107993005320957190736069756575349851', 26); - T('25a8', '38800', 26); - T('1467iplsq5dslc4bj59r8kmpb53ij1', '2940974102374884746297729490325333196270210', 29); - T('4536654164105350431016416626411512', '37076575885240993457676872428', 7); - T('2nm62', '1531793', 27); - T('30120131003344321043400200', '910915490646856300', 5); - T('g5gc3h6cfg0743a72d0', '642497565387831178951530', 18); - T('3a9e2ecf094bcff872507503010fcbac11', '19946638349599244406026473172687735467025', 16); - T('2iifhg6ffdd44e7lbe0cl4kg2ikhi8j8j5', '569950147839903345158898327398158628782163599', 22); - T('111321132220011110203311323001012030033333122210132333132', '7106340429083953157339766519361502', 4); - T('1201221111210100122201012101121022010110011221222200002202020102202002202022221221201201111100', '409732885115794556739316662328279212569754192', 3); - T('b540j', '10311549', 31); - T('6a5641ecbfg1ea', '65437633393280157', 17); - T('60a0k4g', '516550456', 21); - T('6o07a19gn95qqgff1r9gea0', '471673109789461277231531949208824', 28); - T('1mfiu6v72mratrp5prdp51', '437124683387082202034280167355051', 35); - T('200010223200133123211221100132213031', '2366578692023700810189', 4); - T('91o46kk', '4369067940', 28); - T('9788582921928030343347009158567718617002', '9788582921928030343347009158567718617002', 10); - T('10101010100001111110010100000111110011000010111011011111', '48000163788893919', 2); - T('1127455366', '444026184', 9); - T('kc3', '26355', 36); - T('2lp7a3ilb6bfnlk4ogm', '3318777765483669862045868566', 32); - T('2626066314348382334087016144874320851', '60819966203777863003542815738208343', 9); - T('bglhm6dc2lbdk2i', '246210942857687735106', 24); - T('104250563615655123425305223624351100434404606601061642122065', '79076976109191887382437259405911955830291672386105', 7); - T('1421177654711484117133204549051424', '1421177654711484117133204549051424', 10); - T('11acwiup3x7vh', '3504374201215692052', 35); - T('65p82e8jl85ml9heap02a4nld1', '22517218879878010567520679124266724821', 29); - T('lsje', '1016762', 36); - T('21a393696a4', '56451375083', 11); - T('807c981a9b4265463804343a1212a6', '1621821470894150277381748029433515', 13); - T('46121044606131213674', '687399603768989628', 8); - T('1222510546137173360622712725208565646586263870474284165', '4228218347033366281983071723933458237415026632421325', 9); - T('210a273248358a3309b93', '8009667820567421769567', 12); - T('am9m3dbgll5g2gobdl47ecfkl5n265', '1175130187214663893323173490478694625614065', 26); - T('5051886704b13c99002d580d6629aad03', '23841202011560005570250339873422608167', 14); - T('145h7ksh68dngfvid0d2t5sj0sock9d2h13e', '54135831669620078248540205180825147407334169234670702', 32); - T('2', '2', 22); - T('9', '9', 27); - T('404m0929nhj6g3dnmk', '1165673727265105034486756', 24); - T('15254347665284856901682080432226700882304900', '15254347665284856901682080432226700882304900', 10); - T('33242010105400244453142514140511051333355', '47797340239896148848896357884199', 6); - T('38842', '26201', 9); - T('ih', '467', 25); - T('39i07de6570i4045a00a53566h71c6c', '812073321324466799437765816797697010511', 19); - T('1c5275eddd9d16247052052d663a452a63463075e9bae', '10204524473213180795676416372405071534170216958491764', 15); - T('103424333140140020211212040403022', '26931963138899281575387', 5); - T('2', '2', 6); - T('322410403313321422041034123341223413120', '1278336783462605112004904160', 5); - T('324', '905', 17); - T('157016a602978573c19c34c0bbb5b99242570a479462785', '2486227056319163423119585018132170605939378769156255', 13); - T('182803a1797819510a53305902aa92842958036542a3', '1054102736944210758101345700310507040992017617', 11); - T('23212243001042341214134020012203124424420014304114414302140200222344', '182426131021917657349015925899722232349209773474', 5); - T('44615', '18829', 8); - T('0', '0', 9); - T('16320ab4', '92882209', 13); - T('112022211222102000100021111210120012200211012002211122100020221022020221000211210221211112002', '125052658519630718209984060103893048415853566', 3); - T('1340023330b2816a', '19686890504051938', 12); - T('224a38884764730225a9197021a82539496', '567834953854624641093665357593660410', 11); - T('7a376a34653987b669615931454', '89961092718473726960191912000', 12); - T('28750672b1a08159168b61aa4b65402a4a7bb', '1926663722022386252350512493673056478207', 12); - T('51132b066849699663a69c23014a9', '626977183384857905326074634931325', 14); - T('111001110111101101111011001110001110011111000010110101101', '130312977572136365', 2); - T('32036543023423166444215212320333164', '178439557729142493094112540113', 7); - T('2c6o1qrt', '65869267447', 31); - T('11255025561251045231224000464003501561312', '7642441686790045418235602618854503', 7); - T('ef3499db4bh46ed', '47755591093273946707', 21); - T('b2b829fe48e23hc7e0h629gc5', '14916845674629231086360004118853', 18); - T('2h42', '83074', 32); - T('409l0boib2jnp9c3s6t', '1553857676392526343363526409', 30); - T('1484hk4mnpcq8h7coh4s1852n5a263', '2946760199386210436099617232527112169685032', 29); - T('1de4i757jb9efi40', '112491740329665106179', 21); - T('411544125301', '8264748073', 7); - T('2700af68ha3393j4lom6ffg3o49i83d8n', '1236005201183605405737692388333431118098883348', 25); - T('260ba5decd5', '23566738197065', 20); - T('161cbd70d0dd827d45', '43857475434041062169', 14); - T('102102110211002002102001202210020200110020001010002121', '24605931904729883191409011', 3); - T('261285518c13c83b80a6141c98a74515', '84082439719575951296466210805706579', 13); - T('3l8odr3jb0rd4pikg2j9gak', '2380011848157138949995072867010228', 31); - T('6252121061244', '88503004566', 7); - T('4jjchql40icjqfghfun9bd', '187112850943724980990652726355309', 32); - T('1066551671032724130551075541344416006004545251', '48210079462363778492658888113295918811817', 8); - T('2b0142e2bc8feaa4657563be6095f30f9f787e6', '15344670653497010702533663436850880847648622566', 16); - T('202121222120120221221121110100121101022121002112222100202', '1199573832123177666249284048', 3); - T('165', '725', 24); - T('7552109468745084311115076521370466702755126903852723', '7552109468745084311115076521370466702755126903852723', 10); - T('d92409d43a71035dd1607162ac59a36', '330459364479294639582756285439419040', 14); - T('5866087207670384282121402433586', '253132125297513316727613194688', 9); - T('hne5k8mhl3eo7pbd173f881cpo', '4239590379457835998662721763582285498', 26); - T('43', '115', 28); - T('4b56a3e2e6ae07cbb13415ea5e4e6b26e91c7547c7e1', '1775440932456640417914474064580085383417183550152911', 15); - T('52v37tbmm0idhufxl061ordug9j80hbw9', '130694367745642080024891425171303262177267298512229', 35); - T('57b110d1a114200601b064cbc8d3d6d36d426a375', '38897697195561314890830075857936232069438002819', 14); - T('1010114', '16284', 5); - T('3011332032001111112012121233222333112', '14607768040300540243926', 4); - T('12213', '1809', 6); - T('1efko0', '15481850', 25); - T('6146dqjn5em3m8iag3hnhgi9cqh0nh5', '156984890010244096277130750219079284286689617', 28); - T('3853245phar6qkhopu3nhfhmdqp45dqm010', '1659449215436607323768397181970499924333501857945769', 31); - T('1kbg', '23016', 23); - T('349bc1ee612041071202acda5e253ee814767bdb1a58', '1235304033805275134490493701587801892224447248153208', 15); - T('254054435232113145254243412201240513023333', '236517755592988157513186489952873', 6); - T('3123222202033123033333133100112311110212332311000201131220301', '4562255449967943117630410467356039729', 4); - T('20k2g1b61b9bb', '26244500043153689', 22); - T('5301274373619a9abb075331570b44372a320b45b38', '11112964586088228654822104128277512727028281372', 12); - T('41kt3bliuu71', '284086055727071575', 34); - T('26je278jef63f30b4h', '70007399630130868935725', 21); - T('661746213440700265725363254604246460427455151704051', '9677402829255135526689200426680775741960325161', 8); - T('6175', '3197', 8); - T('145092186943011290758112327', '145092186943011290758112327', 10); - T('24012130142220113203333413000132130030341343340', '399568998285969726086954376512345', 5); - T('137jb08gne02cbkl5ee1giga862', '874678313646620526970274269320064658', 24); - T('bj49k5h', '6935833969', 29); - T('401151407274000477346136437000', '621886148896195273543007744', 8); - T('e62ujehl35lkp25kob1e9tvetqh972', '3668880263925499454416380147695985359306937564', 34); - T('1221221010111012010111210000121100021121111210010222012121220002002011111', '44164600435998484951707492971081782', 3); - T('2519ebiggfgg0k7djg2l5f32', '16752300490444701684531024329512', 22); - T('12jrw3z5iqh6vy4hd9umfbce6u7bhmd', '52334612299904782804807790302710417391016520949', 36); - T('m90d8calnmib3n38f82ag12c', '1243484437066565674917884244591228', 24); - T('5o9441e1ehe6', '71232157609716713', 29); - T('mo6ub7vjpqcd41odk309dkb6mesoudc', '32479569784999047522872481329328980918409132460', 32); - T('99a104', '2443540', 12); - T('1001110011011111011001111000011011000100000001110111000110110010001101010010011000100100001100111001101001100110011110001111111111110111101111010', '27331074366810509421853388280769875793670010', 2); - T('140135470caa96563a640912c99695818a', '7530555028125352679628379917810633699', 13); - T('1234320550101200300234201211525525033442525240545402554434330051', '15178212380235027454950908395863207673277874355183', 6); - T('227qji77n49doii2i14mi6anfbi04np4n2', '358193257509349600441790087340361151109806798954', 27); - T('5b1706', '13823418', 19); - T('249c44f17568b404f004d1fab5d14', '11880762815518784994450284839918868', 16); - T('6radrdrbdm7mhpvswkb486v4eens16w', '24529899580687594598518917969085283802959665013', 33); - T('5496b049593863de8ab664bcf192d8aa3046b16', '30182230828157060898612488525177295598317234966', 16); - T('3', '3', 5); - T('dhda22ffaca6je08gg623d3egic495d0j3e301f5', '7632679632132235991964925001252763420525080557280705', 20); - T('36ca696c54211109ac498674444579b926437', '44733871000508032307696312443457357060058', 13); - T('15nn57058h663g02i5', '363480846432405747500597', 24); - T('1420220341042043041130312221022231231044021124324024400213', '13072107582995750416163595291483084215683', 5); - T('g91', '15656', 31); - T('1000001110110010010010110000001010001001011100000010100100100100000001011101001101100100001111000010', '652129268908332354914162721730', 2); - T('3308c774d7a9d93620db30a6dc7c3afb6245cda884b8', '19094196084927690615894155917265930659289199085651128', 16); - T('9910587826577455047017155908954', '9910587826577455047017155908954', 10); - T('1pn69d', '33086633', 28); - T('56e18i5ec9bc9bcfb506', '170001599187441436937591218', 22); - T('8dg63a351777ef27065718ede19a9g', '4251605536447843079014370453494147309', 17); - T('3757440272647170475376331367246161235546703357147547454', '23196351263151106376071114036941254762538586787628', 8); - T('1133102031011211111321020120221222221013303233300222001020131200322121001', '33201783315139109346417949703891666719712833', 4); - T('111177ac156c8061a2cb9c2a11c49c9bcb1b8aa61251a', '11177922941418324255581769628452411069931934894274', 13); - T('f5a25dlig1h8in642i5f6482bbl39ikdf1', '53647895828829728643682410481516014676799977129', 24); - T('142103234113241523135450505', '294644752058281948745', 6); - T('3e8u2lxxicgxl0', '579245446681359249924', 36); - T('e1aebc286f28a4213d5b89774ba1b2c', '18748973437595317918722188262730505004', 16); - T('14i0l6ha6', '94600891963', 23); - T('fyi', '19583', 35); - T('110002121111021002012011', '126535710037', 3); - T('2ede2k53307k0le4g202kb1ka8j608e6fb', '531584620037427546349053144337530803653075325', 22); - T('5941a2ba5123ba48823bb', '108647376527879131217663', 13); - T('1100000101101000011101100101011100010111010011001000100000101101100111000010011000001110011111111111001000101110001', '31382251255391898419590799476887921', 2); - T('2798b48667a9a76', '3403683742605498', 12); - T('f0wpw0tsqxe4vg84s', '47926281420044967329301940', 34); - T('120274183083323227016750865268186648155326604433755556', '460659788402837426091935077340365397293891092234756', 9); - T('5165bg0dibdk', '2955698679780350', 22); - T('4id7h78kfi5m276c856bd0d9jc01a93f0', '700749527198104432526320153790964979274223144', 24); - T('1101111011001011000101110110110111011010111100010110001110100111000010001101101001100011101001101101101110001101110010001110000000001111', '75812640390549515698067392896804260995087', 2); - T('1135', '605', 8); - T('16fceb35ec78f61b7', '26503318076778308023', 16); - T('gsh3zf', '1015286379', 36); - T('1330803169291356585', '1330803169291356585', 10); - T('106eg28dj4ab8gjf893371d4ic', '341198497110116667345130454665972', 20); - T('1031332103011210202123330122302232122332133101220', '96526406143541450009541735528', 4); - T('ak711dka02e97fd29a882gi5d42540', '2423827227910121626584716485263513891048', 21); - T('8841418102', '3463649669', 9); - T('190a8g5f0b22eaa29h0fd75g', '111655360963807509350164170526', 18); - T('1101010000010110111100110000100010111001101110110100011101001010100111100101111011100110000111000011011000101011110010111011101110001011001001101000101', '2364878576296174981737730111388996744591545157', 2); - T('a4f9f563b2hd1d', '1579563483297980704', 21); - T('1e', '30', 16); - T('bmj9i28fqup2rr01quj', '25168455972112565443783764925', 33); - T('2659c2524b681b0611bc0462068277b22c4a090b6c', '11718193492167173003845518942891790726930347344', 13); - T('95dbhv5ghj', '425304350878063', 33); - T('70f0bfb348eelg', '1988449310602969318', 22); - T('5601892416741275270a47a14b258b77b62ac9a', '11674083978692042300298963640315521087970772', 13); - T('18526598951b4925686c191b82c726443', '728861732602079775340902630060883104', 13); - T('c72f1ga78a3b', '4322248291965062', 21); - T('43i7nlns66s', '2432989186691608', 30); - T('umkamr', '1393260527', 34); - T('1144311422131400141044220', '83282084180409310', 5); - T('4336', '1546', 7); - T('47i77', '575935', 19); - T('260391741833138309844242694047', '260391741833138309844242694047', 10); - T('eikcnkechdj036', '21983428280688968831', 25); - T('399j60', '21947290', 23); - T('547573ba0754c7d9cd26bab3c7d4b72ab562ad35b3c78', '1431614009980309658037899654407501069747983045942546', 14); - T('1bf61n8b8gl2inhm1026c0bn93gmlmkh18c9l6m', '41658106305222335140890827573148074573365393774007782', 24); - T('22ba4a4a22063356716285520739b82386a133', '19129802531842066466744883829679615294007', 12); - T('208263', '1098079', 14); - T('802a2fb0ef85471', '577202901428491377', 16); - T('6e950otf9qieb8sqmlkdq84h0fk3fi22', '40005797156134257760904691332287629017123851262', 30); - T('10202220200010012022120012111211001112', '566544668055011303', 3); - T('88ofbogm6hfl2fmabbhli9jb', '2922571833986926750005829529758653', 26); - T('254221216022520612441642424104134100642', '364163231141058677780767508382534', 7); - T('3k6m41606ml1ik41545j853488196ac508j', '77247355295178353514512199583695660421921997280', 23); - T('11320022231321', '98610041', 4); - T('7c25j5c2c2h8m2e', '87247680970474478133', 23); - T('7u79or4r9ca2aq3pq9umq4', '612755209566507170400347312382877', 33); - T('6hae760771j1iaefc20bh5ddc12d537dg336db7j8', '75611167578444251429175163594651767050933149653371188', 20); - T('2032r9kjbnaii717i', '501415814815568679766375', 29); - T('367k9mu6s9hme1ngoe7gnih', '2066867889461958903697381214108212', 31); - T('60j2m', '2001670', 24); - T('71h62c643342', '456889209843566', 18); - T('12312260105254421212115405048517370253420300156574618154', '38374839154335357656678955333874522222907486811128641', 9); - T('47lkf1', '121626548', 31); - T('5', '5', 28); - T('1101111111100100101111001111011100000100000011110011111111010101100100011011', '66081699980324911274267', 2); - T('eaq63c', '650488250', 34); - T('3kh2ikk7k1i37c9h1gk1a7fj9ek', '95237913325164984575779037624604026', 21); - T('chml54eh1dek5', '465563672539918181', 24); - T('19650e6h06cbjihffkc67', '2407869036365245485341891710', 23); - T('1120330254342541015412', '26871303967424288', 6); - T('1db61d64d2aca4f8ddhg7ieb', '442324583985640572989145851962', 19); - T('h5g0nn7g00jbq8dkal27ddppd1i', '282596981311037438532533274321771897012', 27); - T('3cb6a74dbc0782a7c312d88129b86a1c8', '18574170307436528537867610263305518660', 14); - T('9j93cscrm2saln1ns2d0cg', '49614136249868364997959915587716', 29); - T('12nr6ks92puzhecioazklliu3qqhgd902mo', '88154165422723953669323639000490842970444052275022416', 36); - T('2h', '57', 20); - T('3', '3', 27); - T('1aj8uhg09llocde4jsa', '938586685176702437596326906', 31); - T('a67wb8fvo1kas0p2dtvb1pim7u', '935376131947858129999170856037964165345', 33); - T('8cg0wsd5hc1rj2ur5xe', '86081079913939968176696159426', 36); - T('196hca7f9h0d3de53e7dd9cd', '384908563380755640626858713681', 19); - T('24i4f31gc45g4', '5004498340474430', 19); - T('2p82al4l2aofjb0l433n1ma2pdcm1', '12374372390948872370836716034198336907461', 26); - T('aickd5fc9kcijdjk', '91778300438306519322527', 29); - T('bijb6jff785abdg50ch93jci1j07f0', '641502687123029513871412727798918243100', 20); - T('1110000110010101101101001100110011010000100001011100100111001010010101111000000101101111101011101100000001000110000110101111111100100000101111', '4912801682953604186696386732310079951849519', 2); - T('k4713cejo6jmooion0em218l2', '71662757397263121604346927461739902', 25); - T('131p0ch901seflrw7hpck5u9bwvr7', '8293373983427066208235978575638533608956521', 34); - T('11000101100000111011101101001000010010000011100010010110011000111110110101110110100001100110100100000100000000010111010', '512777157413030085980733281858093242', 2); - T('56a0631865658b42a973787149', '38957935569902816546521273555', 13); - T('7339fcb70cai272ic', '4691540493840057977172', 20); - T('3302000230232200221211111131020213222022300333232222303223003331321002232012033210313', '1414797421045846182215653783000271431836488267528503', 4); - T('1cef5g065cd4bcdfgc', '1453833012137887343510', 17); - T('22905c', '2265180', 16); - T('14p1aq38h5h6p3ggog8pef2nq', '146180156816301607543919347943451040', 29); - T('fea1kjp1rk207jvbgolwua1tn6iiw7', '1680226571949963189952641105288040096752983593', 33); - T('18gklif1hf11kk2bf5d65m3cdn16f2ih9knica3', '38229891140881220748747963138698607615755419662309363', 24); - T('31864470241501561251518062508850', '1228037037479082758134146470778', 9); - T('1f8h38h7ecgh286hig9bh5i20b', '594633699552685458820517879344811', 20); - T('1558082832482056078618821', '129891586602840328457452', 9); - T('7b2d96aeee4ce78ce5aee28', '579561875731331284066869188', 15); - T('1210133301012212101130002013110200312222233110232023231111013020312221110011220130212021', '37600153384455208153546802413238636668955012511156617', 4); - T('1021111102001211210012102112012020221210222022011101011110212202200102221110020211220220220220202211201102', '160009247997291013413774126585486451337226598990112', 3); - T('13g', '716', 25); - T('10dj', '17933', 26); - T('jh75i', '32715126', 36); - T('2175424561041415433353531757', '5428551387992052131083247', 8); - T('180ka63', '255086355', 24); - T('48a1615136', '176001170901', 15); - T('110010000000100010010100110100001011001001100010001111011010100000', '57655736925864654496', 2); - T('1310', '1705', 11); - T('1zewmp49ibteo4c', '12181934920523719776924', 36); - T('52520357630643422', '1500865557120786', 8); - T('bbe35djn062d5b761si4ch35amf', '1199785854063018906993506866638229011140', 29); - T('0', '0', 25); - T('e5i7fh471g2a1', '58556310038689001', 20); - T('8108b3', '11444879', 17); - T('12133332000140', '1794406295', 5); - T('233cci793322ed7d9cb8855ed24ffaicg17d', '1237217723084165492642180249762745096032841489', 19); - T('kia626g3jjfhek7fng5d0ihn01i1cbi8mlkj', '175644053681799645945065512508851170704116634341769', 25); - T('307id184633ff2gcecfj', '15832615175405459381237119', 20); - T('102210122003344331140041103001322204034014044', '6239672517153332817129500298024', 5); - T('4325101155', '46150847', 6); - T('12003220425', '80779841', 6); - T('k7khqonlt5b3ce9od1ouu', '25655759396523763765963618575326', 32); - T('1a2e', '5669', 15); - T('24642336001364105631011', '10582257656560822478', 7); - T('4200112121043211', '134340409181', 5); - T('dji6e981g0bmicak6nkmjldmb3', '442482125298832453947547925860696203', 24); - T('1ouvmsmphr12ugwqkp68', '627712599848792393543454824048', 36); - T('537gbj98e49ja89d84j9g44ch0940ga5b', '2220315485025179053502135485282739788932111', 20); - T('714313', '423075', 9); - T('a23c0', '290667', 13); - T('c2g4dhaf324d15b4dfdfh8a37b24af52g3d1', '1045967377308067032554410895079596222351962039', 18); - T('1adb02f0gf53ff9327efegda34df0ge1f5d9', '19026193308545467945661475426458835723094908', 17); - T('236188c20edc4b0a6', '14628716301779930406', 15); - T('16ac59431489a575d977893381e17996', '4165152233272488511477307829446785791', 15); - T('i15f3hhg737gh49f464412', '37883791206577734258893793622', 20); - T('143912408735308919916476067550676143993718804207', '143912408735308919916476067550676143993718804207', 10); - T('2c84hcb3e617i308g011c2g97', '13003562015150612759615402719156', 19); - T('1', '1', 30); - T('24411332303104412232404024412', '110670388179331704982', 5); - T('1933e587c735a0944325aec2059cbfc7447e', '2195466647218532976318479234926892387091582', 16); - T('12bleplh50em72e7co2m5bc', '14743439849575623122276244494446', 26); - T('58xh', '225347', 35); - T('4icfie106h6bhih68cc', '1292892082246312828371452', 20); - T('453', '299', 8); - T('8rhpd0qch5pktpovj1glt91oct0tjlr', '12647022957479689372096487316445682624573132475', 32); - T('2dj00qb3qpxopwossisb2g4otn9f', '2488698509088656658453543066597325211124483', 36); - T('1010310', '4404', 4); - T('hfq3j1a9ndbi30efh052', '27619266965177624232556247447', 27); - T('39069027740350553286', '39069027740350553286', 10); - T('9bi416j01ci4kj733b87334164j0igi5e6h5h', '3806996854533890953144943088476687870626549429877', 21); - T('6ca196aaip90qn9he2g0a4i2mq3mogi', '56367196598633473854629190366616476560879928', 27); - T('16cf7', '492257', 25); - T('bhe1co7jjpkaj18teg3n', '134616320166471331187477282513', 30); - T('11e0kng0kkbl3j', '934367663338406299', 24); - T('1514314554356446416612036633020010445411545120500414631632', '2588550172153450082104301619898179441784748691764', 7); - T('53657', '150482', 13); - T('566a2326039100a019069468b084aa0a8a9966a', '566225725026345410347153259571357126562162', 12); - T('192996', '296676', 11); - T('1gf0p8he3n6f9knc95c85j1lcea3ei', '177191432101748018199118067763850396927258', 26); - T('2j2bq68kmo136', '4299689571441867510', 33); - T('ji1d29aeh6h4gkkc0635jefbbe853aijb', '40645713826960095513453151704998149841545850', 21); - T('37710781838842630361512', '3806832103892449001030', 9); - T('2442143434220532532101123222344253535005050540352', '62605961983133424986426709017621042732', 6); - T('d518g', '6029468', 26); - T('70n78hi8c', '1986022468452', 27); - T('38bh61b21cga0e2ff0a0bcg4e3gea06gb3182e1hh', '565783320821525533704067328716967069896244298888023', 18); - T('1001000100111010111111000011101100000010001110101111111011000110010001010001111001110011001', '1404582351453280869403915161', 2); - T('333924a049a51684529a74ba87412bcbac8', '243398556912996292725156441791879362977', 13); - T('17a55a93a040736775744561a5055a9385', '40020975700910684233413707318255946', 11); - T('6b', '113', 17); - T('100110101110100011110010101100010111011111101000111100001110000101011100010100111101100000011010001100111000011110', '12567788490336688088992466604707358', 2); - T('j', '19', 33); - T('5ea8ajhd4j34fh5hbag04g1', '240168729092027349654498561921', 20); - T('q8mr50da1a05raqf', '226974721325958220743445', 29); - T('e6a3363', '1620616539', 22); - T('75503024732436207824610451700833671010674575810465066', '318007217504658857405619875262949061586268948936365', 9); - T('34ee3cc09kkl9kf6ac60h4afc8', '11677571670551009274952367520363516', 22); - T('1232306211304043222536154143636150212163663301143551245', '5847041463724405635992138544250779787366825652', 7); - T('64214b1895397696b4c93', '120114256331405719997422', 13); - T('110001100021002021111121022001121020001101021112121212002221012112202211122202112222111120', '3895174620732775849452424240420599239140176', 3); - T('a87e916d51599b02107778980ce73', '9006992363531177743062167113009383', 15); - T('e2eb9fg280g68256e53875a7138e16c216e6', '164829342483558859829243147407641086382111803', 17); - T('dh7hef833', '6800973993113', 29); - T('87ecdca16b110', '4930623993377600', 17); - T('242664233613444510003204103241260166', '997238647098049790608059979085', 7); - T('24865', '2524505', 33); - T('8dg8ee', '16577402', 18); - T('dcb0', '56496', 16); - T('100140020240014343012103310244203321413011432220000311343', '1407800314105875865179520542356562510223', 5); - T('8ic4cida70638r6qd24lo1eohnehq0fnq8', '4939135926415967125713934662696787505407553615760', 28); - T('110111110010011110110111001011100010001010100001110011111111111101110001000101111100110011100110000100010110010011', '18104495725933236784651084181816723', 2); - T('2110', '66', 3); - T('9h553ajcj585e0fld63dk1f1fdg38bd7c4c3', '944691391197912510590336782111009994890396317899', 22); - T('d94jspuomfb30nnigc0i9c2', '8583227698431941711284555523051436', 31); - T('540511212211521022015430420425', '209679875672133971720897', 6); - T('93521bc9838bc844374c6', '176011291340468000063614', 13); - T('21111212100011211111122102212120200222', '1127735725992381629', 3); - T('433', '118', 5); - T('b35f3d85b', '78106650410', 17); - T('24ad24572815556edb04e8388a3cb8dbcab', '22472704690990952783138622997610828085611', 15); - T('ej7615a78j777d2d7a6', '3923839018485436650027006', 20); - T('6c', '138', 21); - T('2301032330302133212203322310000123330030112121321023221320323132221132330233000122011322', '66310958980712759741798040630188575295953581006496122', 4); - T('3892bc32082ab81c', '187850563808306190', 13); - T('nepn0i83d', '8890790458465', 28); - T('27m1p4cgajmpd77n5nob5k3ckoo8172n2fl', '2959224102019221153580776647569649027089445494715', 26); - T('2c211bi9a4i4g', '5837125451724486', 19); - T('6finion2cknbcjclfc1maacjl3n', '277329603884172207207342214563875742203', 28); - T('2744a2b1b6da050450ad1dc77c3c444918572d3a95c77c', '9495750905280175430367933734800935871583094331419290', 14); - T('2540b7a2c', '1964842541', 13); - T('29hbanag919j07i2h9fm5n5blde', '1847860763613921662545512809287537286', 24); - T('522636df92e24188g123fb5e646fgf28g1a5e64', '292970008668785630924688679808211955559007788343', 17); - T('165yyau6n6umgpli0rnp', '255752898934275797065342348280', 35); - T('1110', '84', 4); - T('293b01a935a3799a96024719b2b03915938', '13670064701193438658934893988141749244', 12); - T('1v4r1bs1', '82842560296', 33); - T('656babd', '48129143', 14); - T('261351cc2663d63', '70221672594373143', 15); - T('8glmoqrlas9stn2mi', '3683728409489953625513478', 30); - T('c1oce8e32d', '65559511889053', 26); - T('564031351615643266525566325521613406414624250361503461216530430', '147867740046978228024321274080345862741610052024709013', 7); - T('230131444013022131034243004132023043040334422', '14855672849648868100497603839987', 5); - T('12545150406353046425421123355434036032', '26016700480759035883689036134576', 7); - T('2dlta5vhvg9qgl', '132869544199893066807', 33); - T('2312030023204131320203', '1266940535807553', 5); - T('2977597a8b13493692178b15b', '222825050040676849479153431', 12); - T('385bd327542709g6e5271h7ia', '16835126876024648618550765824498', 19); - T('1319267918888', '4042081859901', 11); - T('hr996gwt7sli7tqw6prqc46o1', '49591308422914160460367750680805956892', 33); - T('2m6n7a0q732oq6ax99rs99uvomu2fajwm', '26979653390318370528670832083221165119891832619810', 34); - T('l1973bi5hak3elkl57a4bjh9167d', '37065350900219381074120392127131177415', 22); - T('43llt8lf8l2891ttr9p85b6m', '82442096432449770071926138860460002', 31); - T('506748004476441', '116315255825092', 9); - T('1j73083e1ek8ek8ac12qlg', '17167767622561300310786542488046', 30); - T('7g239db88h4f1b5807599egc321dgedce78', '37727159811971103917360167652947572210206126', 18); - T('3h6', '1412', 19); - T('1875061762750423705', '297528461189732876', 9); - T('adkaja86gj', '8471456689351', 21); - T('7edjg9684771l', '721329267732824707', 26); - T('1655c91427gb5325f4d69a5g98fc', '10534364998017011610805677227288034', 18); - T('1', '1', 11); - T('980817ca67b74b4a12b53b8065a09367b8579846', '267254106995150662257373930152524132970726356', 13); - T('3835160608814336587', '590328195439989373', 9); - T('86aee9b70c52fb93dea1ce85e', '666919169547294519852185479262', 16); - T('b60f869bg5d693e84g6dfe2669cbf75ea96568d6', '11034100614489305854323210870717035173423206179782', 17); - T('13130230301232022132211111011003302312223321', '144073625444367205824948985', 4); - T('i6k473f9cigp', '101452153263413209', 27); - T('56d0g6d5b64f56ba74g2fb768e4g149193220g', '18148997614117285672045460339793419442793046305', 17); - T('450g315d6c609d23dfa01bf1e3ebe', '601353401386687882116399680820562724', 18); - T('4352502133233111221215445543', '4761333221430647953287', 6); - T('396769e718f39e316d00bcdc49721c228ea3', '5000590150769401690668401759809188422389411', 16); - T('ad7b683e1fc7cdea2dd3fda24f96f6ce5022803f0dd', '4056709020997348015695058837718936633645982841827549', 16); - T('331484', '811108', 12); - T('k3i5', '245346', 23); - T('135cng6p', '15032544769', 28); - T('41431552231054351454251041452441434304115015351502140424230300', '1258945994027471345472426069448355009467939191900', 6); - T('31023c896cc216cb8959414', '9885951986278698583058420', 13); - T('6a0d8b333b26dcd0ccaa3d3303d3732932', '446217024491807326078408464241966377488', 14); - T('325bd1', '3300305', 16); - T('4156172b64866980a8', '9144238910518146944', 12); - T('1375bhcg8ddde43f7551f312', '303750588830256802292808765740', 19); - T('1k03jqlfa4klao9jb9a3ho81cn6f2l', '562769643994858107795871822429176159838800', 27); - T('19375332788653716726349605608924050432887719120', '19375332788653716726349605608924050432887719120', 10); - T('24gte619dnxqqntp5kjigqo94hnpkhw1g1e', '67033488159416015091486213127299423889621915101970024', 35); - T('79b5jfflhabec1i', '46242889680463735640', 22); - T('3136523464465430', '15305223556763', 7); - T('24h', '1265', 24); - T('2eeb9a81387chlge6a82i', '1880930934491341165799127406', 22); - T('3h2s642hee7s1mr2qfqjs9bnmi8bkp567q91d', '158997805986072348580445510192627913450430823619387102', 29); - T('175c2ee70201e7837c5c0a0b323969d8a8749ab7', '11002072616623697244801360586654294094591597797', 15); - T('743bg293f6bab3e91089478dfea389ah266c20', '201573045644676256310882487614494362105144963300', 18); - T('1104154030050343015502310415254530311', '12239997207198897956935770115', 6); - T('c', '12', 32); - T('665fcei2a6', '11296107920224', 23); - T('12011220313142422020144234021000241120013443341142414232113123331303104302114', '186661780639150984434609490693985841246731986480931534', 5); - T('143333403021031322023424140200314313', '5675316520546384121885583', 5); - T('22032030123002232430201320123040', '11303442964719339223520', 5); - T('42wnriu9jc1d9pi6m8iiw73e5i1', '12392393408418156448684972868597198547946', 33); - T('65jhb5kj84', '11265751641346', 23); - T('8jboj1180100', '32109820032181892', 26); - T('404013250231232343032', '15035328204976892', 6); - T('f5loqa6a', '159157001341', 27); - T('3bace918a9ac3ab0e2c9d64', '1154290724173228330560822628', 16); - T('j1f02okrpm6braj45g6p79o9fk2ddf8e37m', '1003413309681967687472390428106527031481479140655021', 29); - T('20246731230644474456707331224171', '20210639089554274678470944889', 8); - T('6ada3415177d23a183a37', '567634082013543482865249', 14); - T('80d1jdc7770i8j38jh1718e5a', '3853881204132107057348022178700165', 23); - T('1135320202552420132423303550434554115305', '2842213632774508421222497813913', 6); - T('4556754565', '1792468580', 9); - T('2b3r4b9krhfmae41cjj35pk55og42r11qh', '38693692809223437015464946236160411990614992957508', 31); - T('3d0h89gj', '6521609785', 21); - T('1465101514516303445150635221541651513656043104', '182862618643837207841758558179961577682', 7); - T('15hdb8f1kaghao1midm', '17870640162985488516370972', 25); - T('1111000110100000011101011000111010010101011101010010110110111000010101110110110100010000110000001101101011011001101101101100100110110110111100011001100110010010000100010111011', '45201658205192969951078809960368998187352382503454907', 2); - T('1364beii2hig17k8j693m2h712ag3b8', '81200218931722105270666349240310189486416', 23); - T('40s0c831o9f90omcs700nidi9s9ga7jneal', '672278250813445369021834441413341140309396296123921', 30); - T('b1h4kk729ddg98264250', '146882207557384251944382069', 21); - T('an69hf2fd88ika1f0lm', '76557434096017215994674190', 24); - T('1212102020111221212120121021021010121221210201122120101112021201122202101012122112021110222012101101020210221', '6313978818560826155486650951933487040678832450680226', 3); - T('4ejad5', '65217425', 27); - T('1011504405105011504344000223123003254223051533524', '23268755836632412189291409311287879196', 6); - T('muldc', '21231788', 31); - T('f965kejejhfkde62ca31gjk', '1894746813418880221855401179069', 21); - T('16624bgb4j6b7i9', '2154952615997851169', 20); - T('44778038225350466', '44778038225350466', 10); - T('10is', '30377', 31); - T('7m9tgv6mfbr3i5j', '9087238325403642874035', 32); - T('17ffh3b3i2', '18276892443748', 29); - T('1fioa', '2166650', 35); - T('6j', '169', 25); - T('1uj6q', '1835722', 31); - T('4452315051414642631402123421521430165234323', '1460239514815687621335205309448665546', 7); - T('80c6a65ec4a4e460891678c95ee0083e2aec16be1c2d09', '676377725653122531508231251848624820273960326886392184', 15); - T('37gla290975a', '27131230954665414', 28); - T('560542234405003554201260116626420636032150041612', '30796886684101041402274860246696545791006', 7); - T('12kpl730it31', '39012501237101665', 32); - T('1', '1', 22); - T('51caee3d08a4d8c648526e2', '383313354354011387493852062', 15); - T('120111001020020', '8228391', 3); - T('b333sqsmq8m2q9el311hos', '116146323856091954730364462753048', 30); - T('l', '21', 35); - T('2a549e1fc1c63f027e4af4879d42e41d2c', '14404335589336084186051447276771435879724', 16); - T('68615361864802033401765783131528708623121623624150567', '290764608685445070971126767459580690752903879643392', 9); - T('324ll353j6ip451j07if0', '130593071665433916106882664211', 27); - T('hf22669j3hbgj2cj2263j323207', '119153731039102138994504862665944807', 20); - T('4863693778871642193596385609267335923840802058', '4863693778871642193596385609267335923840802058', 10); - T('12', '5', 3); - T('3022210002012101203131123121', '57016419145864921', 4); - T('17wf', '52585', 35); - T('glrr50o92hn5cmb8djdlrj5', '1154557453433021517715910663974537', 28); - T('a6124c3897a09984bc448189378276c2c', '4635252028861401159639480965708427422', 13); - T('3000523151311', '206247350985', 8); - T('1bj4s6r9', '46813551465', 32); - T('2iwa61pel', '3621674718177', 33); - T('3a6ghnm5bac0ihln2fngbj3o541kehea', '73957115739832950099327264217773316424057860', 25); - T('4bpcunf', '3888410460', 31); - T('114224434001431', '8427640866', 5); - T('19k3pmi2lu8b9s105c47ftfdf60laq82o', '5051715463332295990422738632378276342058129697092', 33); - T('h9b70g8i6j4cqeqsblge0hmsn7idik1m1j', '96241136838849620955570471404790819811825290646849', 30); - T('3646322361204aa63026', '219147633166881177589', 11); - T('1ktnhn6cns1ud', '7479229664002588501', 36); - T('7g2gfa6e25lof62haj9k9ih2h45a1', '10608546611840530886415289384421901237751', 25); - T('188d375f5g640eed5die8f', '1032128844540501662690155999', 19); - T('1g5fhj9cg0aa9j7kk3', '959847532524172458716128', 25); - T('0', '0', 31); - T('5rdfpt9vlkh7h086hqffidpavpaljea9rar', '8765347386525329765560210131623728090268059379756379', 32); - T('39nij3dq0vn75y7nq', '16614188017737901319467156', 35); - T('39c4e9074344eab09eb04b4a7d3e7', '3114724911743451144361477555664767', 15); - T('c5aruh', '408252369', 32); - T('405efc001ed2j67ekd4ch0h96jkfaji6i7hb8', '1597188434640792138193865275315517085324950380772', 21); - T('rdgitjorf5omwcme', '2569695095565227618197066', 34); - T('2841a2bfa959f226e', '120911102842184090589', 17); - T('11681iidhhhf47j49b41ig28487c', '143077731089223004915621937671715352', 20); - T('80a0bc97ab', '85467928206', 13); - T('154319679383470735078149017579697301292976548', '154319679383470735078149017579697301292976548', 10); - T('2l2l8c8djb4d940fbde6di4g47kfea2', '207494593328905984754688447749751909520475', 23); - T('aaa72a6070701947707486871805579a247a25474980920', '8817500977665857282017186690319436997296375867085', 11); - T('18636giec7g5cjj62g2aefai821j4f1g2e0bae1', '38906708030084175037896855329780703075886252892281', 20); - T('lsb8tamndgn1wrnt16v5ba1etppehx5mn', '222046606335808194085660527561222477330915583202991', 34); - T('14c54ca39de6b19610b1c1cc289a0b26e6e53', '2886541874571131971389047650134152171194728', 15); - T('62184', '176037', 13); - T('fch37gj2cehk4712', '1063412649849085727648', 21); - T('13025014420320445053', '922056100333593', 6); - T('ps5obl7uslhpb0rnn0m01b60c1fmsum63pg', '13175053317274004235425460616183284215407700766951276', 31); - T('363701247162828065', '61927839099614975', 9); - T('1465b8abc8413', '168027162035418', 15); - T('k9bdgg8ejllf7', '262667689891801069', 22); - T('123010320313322313012221200321321211020013130132032023220131021332303032', '9434743235284812342744700199923423780531406', 4); - T('14212000224111011410232242220022111442141', '17200423635950346297631359046', 5); - T('219003b4c2hhh8g1h31f9i9', '28192499777611999330166104608', 19); - T('1000222100000000121201212112020001021202', '4198943923002496316', 3); - T('ki1', '16185', 28); - T('5lfjlpk8005pj215', '133603915990551547797011', 31); - T('1a438995227803567077324354096', '280489817685276861500109179409', 11); - T('a10ehgsh91b8r916op1d3p', '208937036874285900087095215604516', 31); - T('6g3irid4iokp16', '104226752458483402536', 30); - T('5sa078vcetk7l609is106', '7459835478504164366375430521862', 32); - T('15a3161b39799106c3', '12501616036457500969', 13); - T('g8p24', '21724780', 34); - T('6f0cfb185fd93b13bfe1', '524422133844304697999329', 16); - T('l1cffc501g6397ncj95', '306466239988961202225980855', 25); - T('2dfhb52jnchd', '9260943760100799', 26); - T('1ed471cbb25831d740fad016d1d3b092756e7', '42970555202513419911347877108629841551775463', 16); - T('12010002112102113121211330123023300021102210310312012230202322331130300003031', '8653507377084930340696211927307966913814134989', 4); - T('m8r5jh99kbea98ncemdddkj', '1535249309958690925403581682727379', 28); - T('16dbe1e64nof2d6ghi71l55', '16848131424242679059584846180243', 26); - T('9k97kh08be10if0bh2k2ecd9ac7cgdd712gfa1', '83361997971403184373688949366445710300829770044324', 21); - T('imqtc', '22166475', 33); - T('7f9d', '118988', 25); - T('f974bd83', '4185177475', 16); - T('1421112043421420020212223332442113204311210441024', '6714842848023828193177289953999514', 5); - T('5118a5bda9c5261d038a', '112475404365415864605805', 15); - T('fnxo4qnb3lw', '32422356295501310', 34); - T('93e5657d9928e3fd12074c643179b35cg8243f1', '527318231363570231110630496178567104982477188975', 17); - T('3i1fl4ahgleh2474j119ej4', '3436931963820318159686038917367', 23); - T('26ihk7ci3f9l735jk930dabd49hdb714', '952831117130053200769266367664413387630926', 22); - T('24nm8lmkc27ibal1njl3g84hgd', '70684225231749335253166543877275597', 24); - T('7b86', '13782', 12); - T('g3', '467', 29); - T('67ett6tur7tgd6', '229969461645745766822', 32); - T('2', '2', 7); - T('42fo2fhmcnn8560o1e967aa6eo5ik21', '3560990677089860840955807820073740226856301', 25); - T('50ge69b9c5065', '11169299770836272', 19); - T('1emroim9bcbjb3jlpah1779kcmb2nbapmap', '24427253992307533768599615831526539311208539755089', 28); - T('11110111101000011110000010001', '519322641', 2); - T('11302241241113033441003123010033313434402233044414234331230110201301300', '11215699606213392429515209493735425261429502759575', 5); - T('1gkdto3jds571f2gl47pdjuilk58', '66203436243049732688831467829307575554216', 32); - T('7f6d06d941b729ee41ec06af76ce5284c2', '43360782010770292902695704345624074945730', 16); - T('95e92k228c29a0f206e6h0f27mjic06gcjg1f', '97294998912929677139041351897383527563262247885142', 23); - T('2226fcb4jb4fg9i7ccf9jb08dd3b61', '113056836222057401495768166170155708521', 20); - T('113134637066412045754477071261275213637470', '12491631272411798853591088807340359480', 8); - T('373b67560324387b3ba12902a68b0846', '10285568089390168608368989457924022', 12); - T('3413502511', '145381489', 7); - T('1322000', '7808', 4); - T('49779304356a81a92899b9ab1232b41781a4', '283704343904838147306674158478269921804', 12); - T('ic70g9dlj', '12077356215349', 30); - T('351979a81875084020960', '2334517700246777830642', 11); - T('1do8npjgkf75l92km9ed3i33hp', '921435866566322324120159754197201155', 27); - T('12150522204302144012304143435', '8504919659789669048783', 6); - T('ikmk', '797040', 35); - T('2h2aa1cag5g0jgi5ehgfhdai410f37', '153347136980338866201795951450764966067', 20); - T('6geppmmpa5f80epk2lnl2q4l165ibgf8jn', '1136083732855390230208808437587722537241518643644', 27); - T('10100000110110110111011011110111110110111001000001001000100101000001110101001101000011111000100011011110110100111101111', '417609385350091179779636810113575407', 2); - T('54632316365542122661224526250554320122025413431325200346', '172403155442202581292345539544844888140672862457', 7); - T('100001010110111010111000000100010101101100010111', '146710581041943', 2); - T('124214202121442431300322140210140142301222201200231014440034434232343414021', '8359229864672618132611974237068932716828001597248011', 5); - T('126052261312470627317166600322300777652073650715', '3749430734838772876224746985432540515357133', 8); - T('54kc632ht19qabr5k1d82fljbc8n', '39317638087117867171096975460673000998063', 30); - T('4cg649834a4gfe0805d451', '1082429577946169111734611427', 18); - T('2dbxaptbqkf9l1g3d3of1sqg472yfyu67g', '2143081075993914961942603741184451795448682536174486', 35); - T('2156754868212718707616125201572327501277016723445525', '10122054780304258510261361631432189947078549013491', 9); - T('a9h99e3ag2c083127d2442a9d53de87eg354754', '5293910916748687218888816990104934714816456671242', 18); - T('5gdn1845mnh18dce', '5273404900500166539689', 25); - T('b', '11', 30); - T('10001111010011100001101011101100110111010100100', '78782810975908', 2); - T('5r4li88rrsefseqtbmp65jliid6dbeh', '3235354455814832733783749566355407213876680098', 31); - T('3d3a4927111cbb104723', '23592314824260135815291', 14); - T('61ix6cz9s69ag9db1yumlsjxc3', '4883940813241885530407328690972629933955', 36); - T('27bg82053fh3f68c2agg71he1bbg3ae8eha90d0h8', '394212306751663957838040335570427410296703664987266', 18); - T('455045100512441541313240', '3929676740978264664', 6); - T('880fh38b5h6aeje263bbd1deaak4ci', '1852428335715416475730972147092577202763', 21); - T('7h', '192', 25); - T('g4ilt52j5h1ds23hqolp', '187753427332679979656205394255', 30); - T('4176a2ba095a941aa340504234063a03174b51880167b', '1260509150099956775877167423441090608940444985983', 12); - T('2504826bh0b3deh44e63bg18', '169404321985280583053906034530', 18); - T('629kcmkm5ik804p97p7foo46i7g64m8lnn', '301188094060622480080121017741192037465487025537', 26); - T('175d4c5f', '13251037524', 27); - T('5a2ca18578b968277b1a60b025949a7c20963048', '160781227675665332719698714323247199958314771', 13); - T('10042463361643553220643436602540351641102252346210022043140655340', '1235358916306184009653528848855128388104787637282935370', 7); - T('aoqdh7d8q05g', '191839424516082166', 30); - T('11bg20d5g85hb21c9e98969cb', '1461738785476516432644631550663', 18); - T('36g71jbo', '43649833020', 28); - T('28926757219098079129718935', '28926757219098079129718935', 10); - T('1aif04ggc10', '9677067550041', 19); - T('5spe84tfqc6eest0f09oj6h85', '7842244574244691095548258935194731781', 32); - T('2j5vlxc3dsnf3ybqzp2l2qefe7aj', '2652680566022137390794201796609346674664299', 36); - T('44316700137250607462031357163634027001772445', '3096914367914270992782060024671299433765', 8); - T('equ6neejg0bt4e', '363092673073628729020', 31); - T('1i4h', '15297', 20); - T('80280654445380371979110490326444540434133731', '80280654445380371979110490326444540434133731', 10); - T('2635fee98dc2adc6d0bb9d3d2gg', '1016175556140463958965806888751984', 18); - T('2433018197317196158128417653316133781757212131523', '2433018197317196158128417653316133781757212131523', 10); - T('13arbcaflcuvjckqr9dlnsbpgfno', '245678666866906453273845830896602877589970', 34); - T('0', '0', 26); - T('1617b43cb4c1267ccb6c9a67', '61421603420165493428425457', 13); - T('11id2614gl6f4ecbk37l', '34754434464457820201082091', 22); - T('52b6d2313c32bd8b492b829f096003bab3ae2af0afb', '1934189728430433084118852318011260708451697369746171', 16); - T('109589b891295cc8f907838a8ff1a1a8d085d9b5e4c', '387803793636734915816188347290438110144007551802956', 16); - T('38h97959h6i9fh8895ja', '45316631296938641648982088', 21); - T('145fal7gh9k16j2d0h7hb09m9ld32cmh0aa', '23568482424313596356642349423973072408497271926', 23); - T('1nd23p72gq7slj6jcdsa0kgq', '16768688186146628617716846505518506', 30); - T('349d0ee9ea0idcha1i67h4e64a2i92e90', '269343193465673541093888647165059275488773', 19); - T('6854lhj1k80klcj54c787e69320k0ab2e', '57805283011680584908800630453906197594651766', 22); - T('804', '1356', 13); - T('5bc8ihgg0j26f98j2ab2g3j0', '4681781173320281184745635649580', 20); - T('q3ot4m3j5ll2u6amf', '19002275427294001435167502', 31); - T('2pqal87pf54lo7kaq02iocpokbbenqe2bp06', '370968670422455186597525315256886862435204203283442', 27); - T('14121204025541551033435113555133500255041104211512', '229652526776877666192899652532215661412', 6); - T('4cb80d', '63995278', 27); - T('3g8ff677jg9g4384ie9chfci6', '64122028661030601402847337245166', 20); - T('1to1rqarpco61sobaq03gj7mpkq', '12335682298221035964378060459101864739750', 34); - T('4b959fg0ok', '46593656068532', 28); - T('265gb83e9g60e9cf167852e334aff1f01d6ce379', '2306333583911925762109580082245431983946279388064', 17); - T('101012120121102120022020112222011001221121222021211202012022201', '432669425053505639748394359655', 3); - T('7jkpqkav978wv24g5qgube4oe49vprj12l', '980570245844506132383809249275091353381128060854310', 33); - T('e03jkjfc1dh51njoahllfld86q65d', '1239960032059488024964338692108578276765671', 29); - T('m783400e4ffe1aa6c6en4ckh', '1239584291259839658707406684316913', 24); - T('fnhd7ke0gao', '1520924761338399', 25); - T('38qgue2niuk4ribm8f', '74092686835055561528594725', 31); - T('ne6b2l9736m6j0kia2', '26699330820578748156911374', 26); - T('196i14lbk', '109958823703', 23); - T('10001110110110100000011010101', '299581653', 2); - T('4059kejh4oa8rh7qmh6a1o0n5lq80hcs250b9', '177450033973248979305599574069360735269525214008062910', 29); - T('pj3g0e84lqw4aiwt42to', '1818225340602370091437090095360', 33); - T('a3m7be8r9553ugsinn40phdcp109v7edh', '14783759765079103513279709123504193591994024704433', 32); - T('1756e5g7692c9h', '111684756948660997', 20); - T('1310214023220313413114434030010043031322341230112322140434', '11406035175438373014369495726669985740119', 5); - T('417c1deb522fc30e36id2be1826b', '136881678478819836067507779602024299', 19); - T('92252179669209632312214876221319317863641946757', '92252179669209632312214876221319317863641946757', 10); - T('46372312a98707a02376aa8a10', '495759640298771450157982756', 11); - T('30435540243430140', '102782589253365', 7); - T('6fhdafecfi5707b46319a8i6dc04', '229779267604296881101047008482286527', 19); - T('bbdjckf7k409d6l12d0gg', '8132684440039836441113393896', 22); - T('7aa1ffmd443dobagk7cj5johagf9', '411676472259993059055019141270748994759', 25); - T('8f4k91t4tjnt0fcn9du7k43s8vv', '25625379512718683322830604232552206610120', 33); - T('93b7504c8b9c69340', '6187855604057469017', 13); - T('1sb35x3s0k1q396aiw08vsmrbplhfn8upj', '633864643448678437738472399825285684192119995266605', 34); - T('agua7ucjsg0iih', '578621718768720599495', 33); - T('1110001011001100001001100110001010000110', '974087676550', 2); - T('143144514240325455532435105401025403335453100232325214143111550101431', '144340707728293600047951401185589484227036000826020443', 6); - T('233044', '8524', 5); - T('582552wok', '11778038097685', 35); - T('149f9d98ffca8gb3a9e4141', '1491232566783461596326244889', 17); - T('22t1321rdu668p4ic3ib9q303b8j8keqfm', '34360852610107045028311793108369775693929421677085', 31); - T('462622265601022655402232133025653611105', '638815298652167365671534920494773', 7); - T('4230756a54234667163044394627859a924', '1074822316475608305169982087744148310', 11); - T('f8g3c', '2015532', 19); - T('f0i2ihgab04g1jda8fc4bjf75jm8i7ic81', '13004707395130797801783447008659194898218637369', 23); - T('179253963a36bcb3055c8b7', '5115853635094224906866873', 13); - T('64ijj66738659b1j31hc0820049h64g291k7egd', '6396071996445462346194349108953750662378937713977069', 22); - T('171215002356221063407', '2184703385532655367', 8); - T('12b92d0b3fb36a8340f2ba7', '4736076939720343041873077671', 18); - T('18533b10492434055a895882a6bb2620a0124211a9879716', '897043158909364946043573806406449154734736512608194', 12); - T('11100011001001011111010000101001001011001001010110110101001110000000111010110100001000011100010011010011100011000010000101101001110100011101110011110111', '5065575398273300616873996741388922355920788727', 2); - T('2766585533096734963797354878145135898641', '2766585533096734963797354878145135898641', 10); - T('23721121', '5218897', 8); - T('ad9a3ee51ae483bc3c92ee9719ed', '3521077463500554185208755094231533', 16); - T('538225767260919961504023', '538225767260919961504023', 10); - T('8bjfla5x1ajj4pcc3pvq076xjshfu', '63473818980036415589889054621162799274007056', 34); - T('1de1640281a9c904e09eb8', '9623171535473259745289948', 15); - T('5b6i14i40f3j53cd20b8ga1ba', '911209787080683607634683777689488', 22); - T('d6g6a01', '455214169', 18); - T('2b72r5rbeigo1e8wa4ky86u1yvrrqxnze', '146380404990650204600521560022975352362017972817322', 36); - T('1', '1', 6); - T('2c3jan9p54e7oq7', '268026783261347839750', 27); - T('26', '20', 7); - T('111', '13', 3); - T('13220232312', '2001846', 4); - T('ggc1dvks0wznulslk6qtto', '7918026888898711931888200605892476', 36); - T('jc9gne01itlg52i5vp6rgr848', '220966959400300968753461444338213486948', 35); - T('b3k2b5pmj4g0g', '1063566102909702304', 26); - T('3b7h43c4g34ig6h033g50e50ib', '12782782886402816341557428904412335', 22); - T('14734353322620206602545731', '61062963683852360010713', 8); - T('2b0binb0g286hblbh56dd9m62gkc97m7', '15043189108277243144346702606154391095130071', 24); - T('403141', '31813', 6); - T('7flc72ih3ffbhg9mk10hb', '30802551855160402027073927075', 24); - T('230451055847842670116857431341321500872417704342', '1654015781734635936691762853372312699223635807', 9); - T('fg5f0', '1333123', 17); - T('3133320121122020231323', '15384999136123', 4); - T('b732he8i04f29k1c8', '16223282627992833931091', 21); - T('4766a43c95b203a143a5bc5a521a00a1517294545b8c79', '613814573577095538322406054851347528901593201139075', 13); - T('475312075530063365616', '5717675808740207502', 8); - T('16162192b5325a09229b66154994a58c0191b83346c', '89746042615495845467561696653563459924799018890', 13); - T('bmk6fjkc882gl', '262863262963325798', 23); - T('83k', '4321', 23); - T('291912ga026f903h805113e1008b7', '351864600431743706976833767888152589', 18); - T('5ij68fj1ci24781hf3bc6bc2g2jdh6b3j20fe', '2348628424621736684950599296511281097502939955369', 21); - T('4m', '138', 29); - T('9iomgxldnucfvk5vc94jrxkxqhg0q86lug', '3302490167238267842315194141274974765989676875973840', 34); - T('102213220130020023311220303121213121312110302212123210023333', '386706650024275360677522460004729599', 4); - T('6c3c7c0c0273106b49', '60090702381311935043', 13); - T('58112gemkb46mjmnlaikgci3', '296486678920377209704264064810163', 24); - T('3wt', '4352', 33); - T('8epdqfehsbh2dcc17afk440pinmgkc', '21858855191422671471340155581640803606008076', 29); - T('49c791b', '23008529', 13); - T('1dhli5mlhe3beji4i863lc1m3c', '50343339607330193689400174698342356', 24); - T('123031003202300213121210210010232313231132223021232113211032101221331', '148112609815368618622505037403177396804221', 4); - T('18ce23d9jf21f2029626', '18676222308756564436417161', 21); - T('597065210033583', '597065210033583', 10); - T('3k26bk0ke1b07p', '9360289351819814615', 26); - T('2955447a895348242a10734120381179706848798a081a24a', '277814985699113393836174322641904828474105999637700', 11); - T('5', '5', 25); - T('1d21e3d1302b26h', '647940567601800701', 18); - T('v780', '1023232', 32); - T('3hjf70me46ace3', '5530384201457585978', 25); - T('mdm50i95kffa', '34359902758185778', 24); - T('27594fe4363354706hb690h55aa751e35bh9gd', '491043964499596096790903212672593094950152072892', 19); - T('4a89803', '35829979', 14); - T('267015546c1d214c872ec08d7370e71', '466173270071093767519019729134792006', 15); - T('360077158271360562586726301234510052565274063276314', '1890330141502524623802729708237946328855224484518', 9); - T('33qw8b27i1jw96v2ng8eqobrtevma', '10278823232880451587462834430209746065248241', 33); - T('2ffj4kk34984e1im4l961976g7mc1lfmjkf309', '3100701785176197033715745123477117444206063832592585', 24); - T('1022341304133421140443420110010243111004132014011020330414342141', '119499096791628035571843616922889895197027796', 5); - T('p2cmh2pk8i0iaj3e1kck', '78607604800260622873133016676', 28); - T('19ac1eg52gah2ajc34he552f07jg', '25687840615874920182000176600011964824', 24); - T('11', '33', 32); - T('4c51d2353763cd99e5gb9996ecb', '463382824850947753162321910886735', 17); - T('b4lb34kh23acelhhb0a9', '359969560591369257338660893', 22); - T('29533b2', '85574108', 18); - T('210230042006603033250136610531101152631005355211234231305', '454901252792917385468584025058887603070565139533', 7); - T('1fbfd085agi2461h64f1095j86cce1', '95533836923505794150091786478042661081', 20); - T('if7cntugmjrbee1eb8ckb3cumn3cov', '824056020452353062283203568047736986646197023', 32); - T('d1c', '4242', 18); - T('pe89dn', '728905472', 31); - T('47ejfjhla3ndcebdjdcg', '723161521468601797654769776', 24); - T('4975a52e86dihh5g2a3g5885', '1158656071841032338859418439765', 19); - T('b2a', '2515', 15); - T('18802049166029703a5145880531512464114a2', '6708572829867641951682044334790673523856', 11); - T('1303', '327', 6); - T('2b9en9mdh0ma6l3gb2mk6a7', '5730992327390802294169442362999', 24); - T('a4om7q5', '9012380858', 31); - T('32315145242005405042351015402414403452431515', '9890393161550519699750282408306759', 6); - T('23d8', '7628', 15); - T('3x65bk', '180647358', 34); - T('11013133142310444', '185143322624', 5); - T('11mfikagfi4937b232g8mfif81d1', '19931061357332966183661805527444530041', 24); - T('1111111000001101100100011000', '266393880', 2); - T('4aghegjc5deepchjn4n5k0d118le6nd981ak', '147378856393139936930504545227123321111306845601900', 26); - T('a053581765919556968948712586810a9015', '28225998746921616615219371069369367892', 11); - T('f20j9hkhjha1959706m391', '595569091584864335710531454901', 23); - T('23ihb64he5a0f5ii443cg280e5hahf18ib9', '377475347206489360974272030507154369136231429', 20); - T('1134221502523554343504155430344022131010005022402143505540202144', '13410812065491845847587964012298459020282685390768', 6); - T('e3doam26jjll', '33718022971403046', 25); - T('a1opuepaio9sq6lj79uv7jdsm3mu70', '448489371933662834507614222400068450749479136', 32); - T('7dia0h6ci727h3jd5l2ih8g90jg78i9gle2h3c92', '172565724572140439608372962298001362724338507747933200', 22); - T('185578g007dg20e80549a07g6ac256f58gcg81', '5006150941846375710425629090586415981041329547', 17); - T('a57aa50714a5a58241591229577a12719502409006', '52377118471664082839971342562274998095676747', 11); - T('32b2cgmbb66g07h0gam0j4', '1602756351859232543197284945538', 26); - T('161a2b46106774', '161867200944328', 12); - T('4hwkgw', '271937696', 36); - T('102313011003221000033031221130002002113001313220002132132330232300021', '102686925972400425528527084594359115639817', 4); - T('3sk4730l9qqkomev', '147136098020632457664991', 32); - T('but6h3hj9q56eg9srihnw9hdon941rp3ots', '50854478902964517143833982141512258828988090776984054', 33); - T('5942a269472a40200841698110c391b0b01240b23c95', '4536812636437232093232481982122462495851953165886', 13); - T('b490gmm', '1656667712', 23); - T('31146334332061140050113651455520142356166650613065', '816409488023628465545576155395605191426552', 7); - T('2131301223123222330', '169410935484', 4); - T('9co4b4k5p151', '657937061645466823', 34); - T('h0fd72f5254f1g26c3c744h4b3f314hg490', '81461749134903178373218607627253657134879874', 18); - T('1002233331133111021130313321223322032032232030203011000132202222132020131311130112311031', '24973910663440836930300964560676670988365943043878221', 4); - T('2ifd83008', '75242904008', 20); - T('7884218894543281858859629374135875813832', '7884218894543281858859629374135875813832', 10); - T('13103023041232143', '251002289673', 5); - T('304e49gd80298d67bfg69g02dac696bc7a8gead681', '847119008557111727693264083647354550664309377534571', 17); - T('77440275263665614314052136204775', '78687457933212079867651754493', 8); - T('12334424101331102324103', '3699927180120528', 5); - T('a4g05c', '14611359', 17); - T('5261257577514510167240362153507501754265746731563', '119228114395905189012428590020540134015611763', 8); - T('3l4dg03eaij22al6le6d551', '1353453954185679560322791661947', 22); - T('2bqfxxthm4', '142468042285068', 34); - T('fiap77iheooadg8q169p6n', '38461005482942559471400836911887', 28); - T('8a8025017961715439905021215027084a5519a3737a', '5406771714928108622296605629432833570349691892', 11); - T('126lhlbc3j7mbbjcf38', '3568853907090242324887631', 23); - T('7aiii2', '24151562', 20); - T('1i7gem1uaffiis0u7et3jb', '724613157606382056196630988579111', 36); - T('503260b17454901', '6448202932655377', 12); - T('4850626593a5713082aa56206712900743aa7201817', '261169229231878869752098014758313048888037312', 11); - T('3d62zhhw', '263758474580', 36); - T('6hz40', '10916352', 36); - T('a134e378efg25b5b709b48f25', '3418312060655617619528647783454', 17); - T('15otpknf32t2botcfgcigfqu6gnkd32', '653730401352621635529986827040115039458290175', 31); - T('4bg6gf9', '217552973', 19); - T('55kd1i5i', '13144826416', 22); - T('i4upwht7sz8semwr0m8xds89ckgj0nvcc', '1148664345372000562399006295243039757410796703394412', 36); - T('123233222120332213211233223210103022130311300113203323200030222020321211321', '618728024794653152611181264645104903381031289', 4); - T('222', '26', 3); - T('17a', '304', 14); - T('bekonj1ck7ko0m', '118074773170177241397', 29); - T('1wbdij09m30', '3032795011029696', 33); - T('16024a6a8524a08ab4d', '610190839032691602657', 14); - T('792hf8bc24k6297dek1g2jfjgddc6h', '1643015926452657057435885816967287278987', 21); - T('40120', '2535', 5); - T('1323334411403144204202403234301133303410340324332211031', '94927992994481212046822848686698710141', 5); - T('2a1d28a129791828054c5a9bd6b79bd9a27c8793b3', '266985353736826850080436241041352235363843789393', 14); - T('1200022202111120001122020012101100012202122120221001021201100', '71161283691673020779124574143', 3); - T('5977', '15589', 14); - T('104340303411210044440320430122', '221766877905265014412', 5); - T('11013120201312031120211130123201013011333313203123220110', '1660030361577179570818698261150228', 4); - T('301j59773', '235204794824', 23); - T('10110101100100101010001010111001000000011100000110110001011100011111111100000110001001010101111111010011000011100011010001110110011101101100101111101101111110', '259149353365748547676531551540644422107339619198', 2); - T('205111503a5610828263990683193', '294498462378684194194060531477', 11); - T('1101011110100010001011001011000010000011001011110000111100001100101100100010001111101111001110100011011000010000', '4373566857843294445861437353637392', 2); - T('336803b72924db88985ac563199312a', '619172222915569013937138339844159765', 15); - T('32405', '406130', 19); - T('80j5ddg1b1dl14kjka5c6', '5671500746690810780935275986', 22); - T('7a1881a31b06bd6451ad1b6d30a1c894c72dcbb2b1', '756847193473448614435521815498749214334384581243', 14); - T('48mshqkulqlpne44ud', '461366817247928145199340217', 34); - T('60779a50d1c0ddh0e446a96gee68c29', '274145136144895069895965328926167326013', 18); - T('58', '178', 34); - T('385g8d44f0eh76c43af5c680', '257444068870885858169187329208', 18); - T('814495845206832393929422614995075089273212205592362', '814495845206832393929422614995075089273212205592362', 10); - T('f3f77b3b2e9b8c8ac86ff', '18433604493853855199299327', 16); - T('bkrtagjfbg1pno3idbmuo0nt7n7702ga2', '6177359692973648095722111400642059003569459901224', 31); - T('1dfcsm42odexo0ktieslb4qafa35f8yy30', '3130691163505477254704987194463689878868046927467788', 36); - T('145203764627604366316134', '933938082134087015516', 8); - T('19h912757478f8crkkhr4og99ni73dn19aca', '600864466904483449441439149901096985867299402717370', 28); - T('39ll9imkk0jkj0flmanno7', '771926574252593113042455452482', 25); - T('228167317827360633087566306336123870011383433267784530', '872924535016160646996267471070001556922344992057865', 9); - T('13340', '1095', 5); - T('pwd8412ejz4a81edyrszibtkdcl3i', '976685155536350163623078908506832125214491342', 36); - T('3re4fusjbcu8j5lv1l82', '272329957684893601942297513205', 33); - T('chg0', '103120', 20); - T('4odi3m7234bk701n297fmcejq584gk5b1oh6', '614617226825809656528595998076194516792828845237451', 27); - T('111594024100d66', '11985349514603310', 14); - T('76560070281357891106470860382421443497991878779506051', '76560070281357891106470860382421443497991878779506051', 10); - T('72b8ekje0dj2l7c3af0hjgjm01bk', '41536239334041308155633538070798114142', 23); - T('6bckt4ppt4heg95ar4di9d8lt3l', '1621907836199076168122557852891843973211', 30); - T('6t2mq5jxqophfjfkv2', '1212339255267290424899164962', 35); - T('e7pmg05bciepi1dofi43mbkodb', '3387641514834198687347692335687382541', 26); - T('27a774bb8504617833802249056310167810008b70191', '809835557745463941303042632876919088150536027133', 12); - T('100011101001110010110011110100110011010000101000100111010100101001000111110100101011010101000001111110100000100110111001001001101010011010000101001000111000110111010', '26053480661633533853821712739093750512044053131706', 2); - T('78267h30e5ede4a049072cc', '30778804593492484652016321540', 18); - T('qjdkoo3766l1dqpgn21ne5p9k91kp8c21cjf6', '90359581173566956884322886148109729184492339838200142', 27); - T('fqdde1sn729mi91m6eemruutf3pr', '689302333458744601010081226005660309098299', 32); - T('421c07ac3832988bb3a09602', '173915305366970601824607453', 13); - T('1110010101111000001010010001101011101010001111011001101000000111111111010000000001011000011001101111010101100001101011001100011100010011010100111000100011100110001111110010', '5365917928263298552573558618072276593881915061068786', 2); - T('242', '72', 5); - T('538ke8j2m83cfi', '7650430109348882893', 25); - T('lmu0mac6l44w0r9', '39403923966776686881276', 33); - T('fh2e6opj1dni5kf749', '17753033290059290065644837', 26); - T('1', '1', 18); - T('26d3525', '40711461', 16); - T('300440712774126174401451236156067007573370014604', '8387356043080138295526316927827140067465604', 8); - T('5t4hfub0osbb99ir50', '228658754079328656695061664', 32); - T('71ic9b6hh204d7i11', '2049179021938589824134', 19); - T('5hddbe15gg556hi26i46d93d2af86h3g426cij', '8087180350965242088908465549595651157432077173179', 20); - T('1300433434104342031413234234331430214242234142011003120034442112001442203422', '42553163117436041210820684828722894387321388431600487', 5); - T('38b954141f26f2a4afe6f7a9b5e34286428e3', '79061632155013935902994702509288944969197795', 16); - T('1332570322632', '98077615514', 8); - T('d35odi2fdjojk7e98gfe6k35b8mf', '2100644003633488135175085159618349120211', 26); - T('3716217572065650441626246', '18430886692014464117926', 8); - T('29490', '41844', 11); - T('38240bedb839f71c66a', '16569841585813541996138', 16); - T('2bbq82tjjlboq6ut42kgo3f9lj9knij2', '40405579441757956010771252427816760128528380148', 31); - T('781c04b2456348', '14676917899295993', 15); - T('53dc391hc7h33dbei', '1498649871829166765405', 19); - T('1g5h3sftq04hfnphf8f8jj1', '982528894566891028570672354176986', 31); - T('5a5', '845', 12); - T('178172ce93h8b664', '92075388339711112816', 21); - T('9sr4id02', '340213183490', 32); - T('2b8', '489', 13); - T('2300300330330001003112022332211030330300132321001003030013210', '3671262870120598176271167818539254244', 4); - T('4pqt2k', '161313876', 32); - T('20jhah3e3594ic7blj5783a220edj9k2', '841249012824513777684222245238901038443798', 22); - T('11131403031142402344414241010142321033102334', '1440321372656516822979172159719', 5); - T('200310102202323332203003033113', '591179016791929815', 4); - T('716521140', '121283168', 8); - T('111010120001120220202202221201010201101101011000121121102022111210100002', '10956952452694016827581915819578357', 3); - T('111202131303133301210221032032111320031321032312301110231', '6989651474722512359041597886371117', 4); - T('0', '0', 2); - T('1h5ah9abadha39h8bgc5eb78229dd6', '4960759047638296451407652673971888460', 18); - T('2012012212100221', '31470469', 3); - T('85g254c289ab3bg8a4273', '33936134064348767438727660', 17); - T('agh25kbib97hb0g', '1161594685951625568670', 27); - T('12glh92lelm40816c', '6862332277154598602249', 23); - T('248ppji8q3gceono93bg', '24909353208658444795454586046', 30); - T('3qpamh8c03327tq2nudhccfpc1j', '2304427318605821370197739524368941219074', 31); - T('elimj5c2tlc2jf15sjs3ehinc1jnfp1s', '90926703087141442632989969922650276777949757558', 30); - T('101101010011001101010001010001010000110000011111', '199232011439135', 2); - T('411222201420220221121003', '50782833370098253', 5); - T('2039114347726530b4b0aa421220', '278325835859819389698795043320', 12); - T('41004131223131231131142234133411213241244344310323342404242112441330432', '35634094054178335947847642423396152869554996042617', 5); - T('100101010000010110110111111000101111000110000101010010001001101001101000', '2748976914400602004072', 2); - T('22230433215142110', '6780166900026', 6); - T('8mk1at9o9r804dudopt3k8wj', '732139600050794539356052387629430435', 33); - T('hf90c267ed759h', '371923695419188175', 18); - T('h3dnd0i7ic0', '2419032644884024', 26); - T('2fd', '931', 18); - T('21k67f3ff8mdg70mc6lhkl0di4hmkl', '6434984278071506771897566744856884038406', 23); - T('19p1httrcm79oj9rgtbcdiraloho', '1329656272867458937798290256287785742722364', 36); - T('3212131401031111334432423124321430000330412430201342140322331330011012330404', '91550385572652543205746270772410011134482321789183229', 5); - T('352m60pl8anklqx', '19288129733595604666905', 36); - T('bh0b4i51g', '202042896689', 19); - T('1119744c426471170b60025b47566cb98dd11657', '540029478576476753822278962275953374371031885', 14); - T('334737324b022c16a12776067cb0e59', '617423186874142070437062374479797609', 15); - T('3ar', '3624', 33); - T('7518019e9f1b02abec44d0b94eb31e2641e59f76b', '10695796466552661793442196497637299434594286303083', 16); - T('180pk6d6kaik7bj', '234289341354887508919', 28); - T('lf41em56', '290649634162', 28); - T('5edqqle17ombhpf05hego2l175f8', '2455572852658581967926750753107310477266', 27); - T('3m63gj51o8k4iioo2n', '4371172906141889814528715', 26); - T('3739a84a4486191653b6344395a88b34a', '123393978207073455312508389622518826', 12); - T('5a92108b809285441b85b256002730b2', '16797817024717861380905046511444934', 12); - T('hnge9ejgn3hocbc3fi2lgf3f3gdk1lhjk', '363506737365826966052915737077950321295612551160', 28); - T('1h0of7r2eq988g6ggrrsreirkb187r7csprjb', '235284507762506989471049564238403899403844842607979881', 30); - T('20253055005124511321504332435202215042331022', '6009050050525852848744537187631030', 6); - T('255h2ie39a2fb1500f973kbeaejac1a120f1a', '896034685417542420338893072410925395756357640783', 21); - T('k242j2c4nnangfl848h26bgnmffkekijlb', '70788268624971959173282983665178195588772935875', 24); - T('2435301544115404035300020040304413033133225434345', '62316354829793498075260144431239712473', 6); - T('2g2i', '62310', 29); - T('4102', '902', 6); - T('otj47dcmaon7keme2w12ld6s5v2eqpto7', '638854684449416351631309299374737671670073661571372', 35); - T('heac707ba3e5de', '1452158473696594274', 20); - T('cmah1lheg94', '1815679606647118', 26); - T('3', '3', 15); - T('36dg4c1fce3g01f', '5463291949613408035', 20); - T('2gp6i28usr3ica94iw3798uwa', '14194117306000686702866639330287897138', 34); - T('6ed', '1573', 15); - T('5i88i38d7ja58gc', '67220527363641484650', 23); - T('jc446gjo4ajf14bbcp7kpac9cnk44ggafg', '3341389528445632882430361472253103750301895578375', 27); - T('5na9jcrd', '196840371053', 32); - T('4snet0', '220080266', 34); - T('3411042340040', '939808770', 5); - T('1in4vg5uunmtttvicldm5195c3ape4t', '5628692971846091847621849643956512531468869964', 33); - T('31ne0m81elc2ni378f12m78', '7137831462888106233070797205040', 24); - T('1k33gi01c68jg90b5g2kh0f6', '5049053173243219517979291311964', 21); - T('rcrrrmn64una', '987268935367949034', 32); - T('1b', '24', 13); - T('1100010100011100010100101000101110001101001001010111100010', '221926845064713698', 2); - T('1r7pkwftlcre0ii', '4967939422698252306902', 34); - T('61226277150121532713772501031623101', '31243593013026976686003389408833', 8); - T('1h5hgf08i21c3bchb5hjc5cdg2dcf8g7269b08', '15235227425880825633838957695898165136395002484154', 21); - T('3b9e252789', '436531204678', 17); - T('k61l82d4naef4', '1206574722460321629', 25); - T('6hcchjif0g9j237k08462f987', '369998501355671383411474631968651', 21); - T('12d12b00ic0', '6998243180208', 19); - T('564041k3kggc5cb91lkigf8a0b882', '708046707322052814836378156934476046910', 23); - T('5918789824383b512946ab03655a5721426090a258275811', '3034504785879651863453500736958310166080471464555853', 12); - T('4a28dda30874514cd66531', '1047116675864538401747740219', 18); - T('340402203510613364531', '285913804988245316', 7); - T('jglhl745', '49319314049', 22); - T('75i9cih98am7fl2gg99gba7n776ifk868b6dh', '352662788590054230998768616200965729446372971897033', 24); - T('2g575jj883c596gag3b753iek59d60fh91j0jhkk', '10225004397589075860213367077653867616378434533721837', 21); - T('egf56c999khgk', '108840444143808488', 21); - T('3fa622c7ed221182e769dd30636092d163', '21658621556399738720046392793916662534499', 16); - T('107380259', '107380259', 10); - T('a00k9ff6e863c4daegfkd99ac5616hg5kg606a4k', '226239231994177458369309950416257385004898669100608548', 22); - T('727134513004332506', '16578205872928070', 8); - T('8a5cb867b3273', '205132338279105', 13); - T('q97mhi3ort3ke5dsl3v', '96850671091881098816986196009', 34); - T('4403412514545', '63419722728', 7); - T('36cb3cc08416821757', '30602499066114507240', 13); - T('7d54g8', '89201328', 26); - T('3oojso3g3392dkbbt84xvbxc0l', '2979009146895467259349827974056406782485', 36); - T('36fbg77a0ggb0ci9hd', '18409004251720729857403', 19); - T('2k4l', '93807', 33); - T('1qlhdvxiwgm6cr7nsem3jalucm', '345303493069524735491170228117585524750', 34); - T('2434042100312310041041102032432412344014', '5372241755138001316636449884', 5); - T('hmo15lnok4fod15g', '16687884040803134578891', 25); - T('gfiid29109b3j8jc8cc3j1eahfdd7732cic8ed', '140059672476506082851982887877581752595147028007486', 21); - T('3c84189bk07j261he9290cjd87i7', '6268314837095821879011320392648968063', 22); - T('1lh0b4c2e9i6kckf92e29jn6ac47dgc2878d3985', '1282419934581887287299945684653043019039515750548801285', 24); - T('fe3', '13923', 30); - T('1319468a4667519180593038183130808286630930', '6412675244028174355879293291613657100674876', 11); - T('4a3', '3189', 27); - T('402majam846193eo9ac96o6a5hg', '8892077274986800146995489100822816066', 25); - T('10d8b3c572250152618107b2259d5608a14a3a45b2ad', '20544745080946531559142719199803291524781420432601', 14); - T('go0sck6gotd462c2bnfafcmqtvlrcbb', '23907635617759730937515657563927387778907484523', 32); - T('111010011101110111001010101110100000001011000', '32142349779032', 2); - T('5d97', '59737', 22); - T('9g9', '4314', 21); - T('fcq1qb34ndqo3900m556lhaehdn1o1', '5004100408428511376913892098705761953181767', 27); - T('43g65e7a8f38', '489624285606273', 19); - T('32113334244320312400104443', '1029375448159769373', 5); - T('310221411043332421244032101422342140', '9370827599951145560355920', 5); - T('69hhp89in0h5jie', '695638255018079621219', 27); - T('fc7k6b4efua79nh18eohd', '205046231015999268860758172036977', 36); - T('684161846238401', '158778455527054', 9); - T('180abggf7782389698', '7796408187235478919696', 19); - T('rff01k5fpsgoa88ewo11igh9jt5dfcfs9a', '3546436014833336229063455228043873170002123415057080', 33); - T('100110011010220120210111121202200110', '52533845531034879', 3); - T('1hkah8eqdo36uid', '1188063720587983164130', 31); - T('789b534735', '518002001717', 16); - T('502233334544512511610366503153406301634260122', '77168872698190232426753092866458114298', 7); - T('1hn', '1283', 28); - T('1eki1s4cghp61aqj9ck5bbcqjkemr5', '3870223673450934834503736739043981885517199', 29); - T('cao', '10406', 29); - T('lcr', '20580', 31); - T('44e50119b604029dbb42911105f0', '7145735262791158676522926629699807', 17); - T('55a72a8845606a6101935b762956212030697197882721b8', '2891443867392734091987458182380459443067274109345180', 12); - T('49', '49', 10); - T('ectrh11nho2471jvmvx4q9trfk9hs81h4', '369444070950732839712792142856641597182627892515449', 35); - T('rqqeq6mqpoqpasrrcuq6jt9fjt4rkq', '494957438299081733206543531712764649663268456', 31); - T('1d35hh64e49c4h3g9954d522a58jcfg308ea93bb4g', '364650097839632030692202970098568691121387743389372496', 20); - T('130322112032010332300220231130333210003101302000113110123311213110220133010231', '41264121145398472876534214952762106425299300653', 4); - T('3a53c2755b1260d232bb8d62729689f9aeb62e35f60e', '21822791108317911324343501911275861646156768606549518', 16); - T('825673232713090477952', '825673232713090477952', 10); - T('i46jcdno2a01mk98004', '2031208929970583000541849348', 28); - T('1205434053320310320', '138125884535976', 6); - T('hge85la4bh0khqbbabe6igki', '14695370412094062868205499164831367', 27); - T('133kt1cswtuwmpd5qhk24k55sa8p04it', '326448646650356344354610046025058475184987458209', 34); - T('3236e2efal6l7h1d115264h1', '23268339383522455310975833089111', 22); - T('804660753567512670080084580036', '37956769767951851794665023592', 9); - T('1015752175345655', '36143524858797', 8); - T('916aa0c1752b7ae8194', '127717282530992844422639', 17); - T('1675967', '1675967', 10); - T('b913', '157275', 24); - T('10011414', '78984', 5); - T('337bd9e8a2153571582283dc2eb03e', '41349713484510984486738119285124059', 15); - T('121120022200112011010', '6418577568', 3); - T('bmy944flvntaqlvlqrswu10d3uk2khti', '8564046232202665530251180136943811879121979161858', 35); - T('c167372796bc509cd1b8363b6082', '106760449584399644261680763206674', 14); - T('3lqb8a2m8isg56fpgrwe1u7e02wusdv', '13151181110013852579067705641818021287165798549', 33); - T('117', '117', 10); - T('3941c283fg135ad1273fg109bb540a607', '8390935227868619653499488684200707583861', 17); - T('498400a895933a9307', '2470275750549750381', 11); - T('75fhhmgajaa5nmkc4j23dmi3c5nlkhe4a53', '611871605189747040922198802979378146489796218619', 24); - T('2e2ljgje2i4oe', '1312494953013310334', 30); - T('2308d687g0cf657c5dc77fdha9145334cf', '575552748356204066006280555783397107050655', 18); - T('15366300702132404747410165', '63663188402072700457077', 8); - T('1211021110112110002201210020210210010022011102002022112112211110111110001212222211120211121000210010012011002201', '166623003788951092841186083176122549763292977336948088', 3); - T('h6272h1dfd84f0e1hdh63bb891f297e49e40c60', '8698065705772214605732543063301832216085264908252', 18); - T('2du59wacc1pv', '169045559446116821', 34); - T('1104144', '19299', 5); - T('7b7b929ib38ha0h3efd37823e2e0ff60i', '632309191486570820267877405266584767267970', 19); - T('2607400245312045520037132356700', '3422470520825634689242488256', 8); - T('anu0', '420648', 34); - T('7zs9sznolivv0b261pz', '82453896793285080027030707255', 36); - T('v0k7bjb64u08q0rj', '1171893246067812904797043', 32); - T('164703aaab2ab8687405bc5c61aca10607055a713aac87b', '2594865872979998742750325942751781337383906323934209', 13); - T('6j7076hgc4cb4171fiifj117c7a5d9e0f', '14163341774568096462942504854512024189875789', 21); - T('335066305135104410516', '281945542299465302', 7); - T('0', '0', 36); - T('13996ae52a6d601db495cdecceab53b9549ac2e1a', '137420483326676517320231475107274395010419164300', 15); - T('1011000111100001011000110110010011101101', '763990598893', 2); - T('1u', '62', 32); - T('1f2e4acgh9e01', '12654640102386115', 21); - T('2052222130', '21667014', 6); - T('8jb7hcm50ej9k9klm09g3a4kc53ckeef116', '176022396062062610788399163891079098715666661582', 23); - T('20509a0235136a791180530831856481092', '521683223673880098116902682825014335', 11); - T('3eb5dh9fehd62ge5624486338g0ggf', '9641340713490442552045610666398445487', 18); - T('1a4bh040f9deb', '1816166780329331', 18); - T('40648755c8337a608c0cbc7b90960072a6c5160cc6', '18958470038164827979052792005696996964594012748', 13); - T('1', '1', 8); - T('16a80aa482', '3853305469', 11); - T('13mb90opa29kf', '1853733788161526583', 33); - T('1116feff891', '2144402836934', 17); - T('1100110021212111102212202', '381334691207', 3); - T('6kmr999ps3rdmfota14e73kk7nct5c1t8w', '855615046083522375775633777751308402456027767363821', 33); - T('fa5m9n4ajdig0ek53p9ak5j3', '306774699778415632661541827410190127', 31); - T('1j', '41', 22); - T('14232370256353054042511271041451307447', '3992139171064784961434159759593255', 8); - T('2988540913', '2988540913', 10); - T('1ae421bc92c6a53434324c74a65972633', '74644101775626481011978862480423290648', 15); - T('1902619a3864973a78193b1', '966910259499607548518389', 12); - T('4gsli', '3697848', 30); - T('2322d2009a', '30550988649651', 29); - T('4424240313181', '1263871046485', 9); - T('h8bdh45okcjf9o0hd3909k6b131', '38499150432406333646220029299270094451', 25); - T('140532020041465345104254054014206235406222630412', '8323153346263714336098983109345737707197', 7); - T('37y978xajd', '254414505320303', 35); - T('63108698628a4146909492', '46485268864599157788725', 11); - T('606362645', '35360540', 7); - T('2933a9b2c5e3c0a260072g14a7', '60459499766662642607270785339795', 18); - T('2766j199g1gf', '822341130472107', 21); - T('14545302124120420504244241454221314', '523836947223749155885762222', 6); - T('6120015562805331441103', '671376316612472574141', 9); - T('2mlb1r41o57o4o1464da0ppr', '12017943535755782808346241199775876', 29); - T('4d4b5f1hd64a0k0adjf86i3283fc79bd0cj2ide', '25463948070963903636723374419580115004912767069913171', 23); - T('b31qm7ci547jbnl9g7aoe618bd9rmd08ae3n', '4968565779272654017559601113501856102648368276823243', 28); - T('b1b5a0541ba01b', '8833755076953433', 14); - T('459037672a349796631496b5aa343b1b0436', '264580482109908454505064970141676910954', 12); - T('12', '13', 11); - T('27acbca85360b462b56c3a6992020a', '524707494029683596995243591366042', 13); - T('cq7md', '10428973', 30); - T('b205a4482e48439b767dc065d6e0d76cd6a964c', '5472159758300289441724757607228631541440203672', 15); - T('5337ac5ca7b7ee1c', '5996450942817922588', 16); - T('14350655634', '465416676', 7); - T('16m3mf6fd47ahb3f3728n', '426985809555038783456824121063', 30); - T('3ba358b358599', '490282471293894', 15); - T('8k535ee64117gi6753e43ea', '3045443598760536171170990533130', 22); - T('18c13ac02bh475', '30853119934409675', 18); - T('5063500066723494917007154667', '66234080067305105030592636313', 11); - T('186chh5mj71bk32nli72', '225231837610389033637644074', 24); - T('117148a5a0a852043b1c50a', '3593926048415359085014726', 13); - T('9', '9', 21); - T('0', '0', 21); - T('111110001111011010110111001010100111111101111001001011010101110110110011010001110010101101000011', '77050543164333814857060526915', 2); - T('25515232513310234351525133004334443', '854103611059645825566911835', 6); - T('53d6c0b8d7bc0c92538c72570292b169', '1790024541721718087301984827108484233', 14); - T('2316578141127154800332364024878378', '72770916299142794014818013970582', 9); - T('24312351554365464465465661533114621266242560401543', '677411054975350956949697408467820078793932', 7); - T('32404015430043', '45027693963', 6); - T('n5d8co3ojm57fc5olmok1nif3ion43m7bchme', '4917311114710343888452797906984336898319878490823689', 25); - T('bqxrro27abrmak0px9ooq2ns5vuh5so0r', '302670621534517112486044629162358286408048774808052', 35); - T('42hfgfolkj60fdoa', '6881729329622147179046', 26); - T('39ci8i1eihc4lec9cm763b8i3d4j0', '459022136565872107778798075253822151324', 23); - T('63c0mqkbp2r8dr7rlr7l', '1325268836989857485637303916216', 35); - T('g5tvq7jp0h1adior91e2fjqslp9io8os6o', '756966247294325777176797359454729091694026239537368', 32); - T('6a8c2f4ea19l831j8', '19490172547544158065526', 22); - T('6462041347652128580521325524', '379213761926885851181407495', 9); - T('gpnbyecz5edn8762pv', '4788313445419794110010788419', 36); - T('48cc6cc6a', '3827488090', 13); - T('64sslivyfuh', '16931440283999692', 35); - T('2102101210121000222001002102121200202210112011102011101021', '3802992314666317441798852519', 3); - T('21c5b3519', '1754309761', 13); - T('110111110010111101111000100111010010001110001111111100001101100010001101000100100100011100100011011011010111010111001001001110100001100', '37973033900975016780110288277302266862860', 2); - T('e9f4921560f07fe8d', '709589094228525375321', 17); - T('123310120101000322131120133331230033133310220323232210330303130311010333100123223300031', '10408108193832826669272437276453612756402294521510925', 4); - T('25731604', '25731604', 10); - T('g2', '514', 32); - T('223105124315354545', '40995871357025', 6); - T('101000111010110010000111111000011000001001011001111000001100001001110001101100001111001000000000010111111101110011100011011001111111110100100010001110000000101101001110100', '1913677948341929506841492066019813618520908835609204', 2); - T('1644024', '229485', 7); - T('98b0862965b3834318436470061301a3', '27754417671206367867044116818436107', 12); - T('1095204a777458309a72aa', '49018069076437376288482', 12); - T('7hke206325ih', '28203781823823961', 26); - T('ffkmcd2rq9563sy1xvqsc', '117533208066219358628225769982592', 35); - T('952', '2688', 17); - T('bm8e8138q57am0kpj8pb8plbm08c', '5244190084268927879196798208000799879232', 27); - T('1415a41cc770527309', '11386080654330629802', 13); - T('1i1eh', '254427', 19); - T('45145317829278248420231253636297540283', '45145317829278248420231253636297540283', 10); - T('2l6j1i594e0d4fijgib3e7fe8700ibdjc5glibigk', '1477333573534925171219612384777712079874272005954068612', 22); - T('282gd2f28', '90293858348', 21); - T('6c1074ha0e', '2140840789109', 19); - T('18134e39226', '887329110861', 15); - T('16471074688235670422', '16471074688235670422', 10); - T('157b2e3d04dc2d3f2c5d24471f4ea6e', '1784586140646675991730453110223858286', 16); - T('a86', '1304', 11); - T('1efcc47a12967085ad8cf3e4bd18a9d6', '41189283705768995637851264202925713878', 16); - T('1g3d785ii67i488315102d815090', '242822867207165195727104515417800180', 20); - T('121202210222010100102010211011201220121101222100020210210201020212120101012002221101', '7436650012220024757800516842466470073650', 3); - T('75lkce7kh36cjmf701', '1023850888444449444662304', 23); - T('cahdf581f8h0f3eh10523f8g4g3732dak', '25614782272742316000546588041656891750618958', 21); - T('c235rkr51obgch00s9hls25o', '52114806185494513712231850125002384', 29); - T('512450325542104132203204311205230152424404424444', '19625794458356109522992578261777179820', 6); - T('2938760b2268721900b061aa78147', '4575799291145190419537441899975', 12); - T('575g1fk6gjk', '141564983017126', 22); - T('1bnrqqhr6axy', '174253590792010726', 36); - T('1889b9fe35e07e831ee8', '115877401735749106343656', 16); - T('11', '4', 3); - T('7', '7', 11); - T('211012220220', '437343', 3); - T('9766o7p4eago037lpdf4317jiqj5b', '306860122389219927555679423284323106653767', 28); - T('22e602h65', '54675222925', 20); - T('232', '46', 4); - T('327', '463', 12); - T('2654', '1452', 8); - T('174kb3627', '50857395421', 21); - T('23330n76466p54202nfg5dnpmo5b', '339324532051327829474356208074218552333', 26); - T('1b', '35', 24); - T('8fk3617863k1ekj3i4nbl54gjih5j8d0mcc', '11064457703744790697464223530688876525906885114476', 26); - T('28d11a69l0c51033hl52d97ka58203cd5985', '230834132211031575077351661596124469754192074433', 22); - T('1hq1lyqrvs', '118773335426438', 35); - T('4h8dra5hbdhh6qoigef555994', '249026258798368156622666692897679952', 28); - T('gm', '502', 30); - T('6nbbg0v2ppw', '13803003606198230', 34); - T('o8995ejolijik9ihd6h88711k5dc3', '33771583190371089624006346925091814539678', 25); - T('4qtin436tr24bq', '78115196524110627956', 30); - T('6ns7a0jdiaoq96ol', '254868647544300369124117', 32); - T('xpawcvygn9kw0sjebn7sc69w3xv', '471734872338124510193818490984195329748111', 35); - T('11g04c02ffi1jei4fhj', '285744497211343343718359', 20); - T('3hfid1e', '557949033', 23); - T('27366', '1203018', 27); - T('410001534025040051252012542022342552143230432315', '15592777075391766081309283367976081239', 6); - T('1111101001100110010101010000001000100000101001101110110100011', '2255400303091572131', 2); - T('c928639b2d13', '429702230763951', 17); - T('1ck', '1505', 33); - T('1rg4slbg29', '37751233721469', 30); - T('113223330300320211033', '1627738310991', 4); - T('7526131ba0fe6e6d338a003af179d', '38016936118707892590533223274977181', 16); - T('7kbia0gi223ojjok8l9ho8', '1777784215960035304259119683108', 25); - T('9g339757c94f3653fb7g0', '126191630648724675191221284', 18); - T('1232330203001200013211200333021302320202121321212333231320120', '2304259321047843514901283244800400920', 4); - T('21647ibj2fg0638c34jji5jbh258h0j', '2217866954079313899427020782581575270819', 20); - T('723532980a7a6160', '30120427896650289', 11); - T('2838da9931dg46976fb7619a664', '1064566675009185862217875437188488', 18); - T('9dqonc1dohg', '7743225898096948', 31); - T('1652b10575aa9464338761', '70682923355125382861113', 12); - T('10ii6eidbd15c683666', '109597980236249948993049', 19); - T('dhdbjfc5f0kehfjl9neo9n70h9agm22', '38466966256495223900208674134248822954556238', 26); - T('7icf1', '1533673', 21); - T('e9b7a48', '166885943', 15); - T('2l1752qdn2mabgmd', '8211555811727424645412', 27); - T('5df602ce4dbge0', '120139111113169572', 18); - T('222232223001210301212101233001323033013211230301222323021321', '887451886358748243322562892954055289', 4); - T('179faejd9kk670fi99ajk0066jkadj', '299524423604818745400343490657227811143', 21); - T('43200420031713445212602476237542777011721017120532156', '402495698817091827248733349983795241261310588014', 8); - T('13csb24qhher85cfdcsl66g7s0ob5305m', '70068000321367559069425429652328969811703105193', 29); - T('bbhlbl3fj6djl87bi16ig1bkb0lbk2h6k', '104622289890616799189358030121475094962525324', 22); - T('lci64j40949l9l3ghjfe60', '2077372440260189074331803122192', 24); - T('3234121002', '6942002', 5); - T('5c3c18143a8d96ddbb3c3597550682d86aa344313d2', '8063490574133991241638155039025343935997707461868', 14); - T('110100010100001101111110100010100001100101110001100011111001010001101001100010011011001110110011000010100001001011101100001011101001011010000011001010001100', '74667765260706149423652281266282011954894090892', 2); - T('e66h2dp', '6853789541', 28); - T('i6ga265f8fhg7ci', '30050327699762851058', 20); - T('kpjn1g235bnqdt0pfqtpcm76p4d6fn1fl', '3864528859465205644913303289493194133427615572371', 30); - T('8rj60u4oi36nelvsax9eqy5iihuv3', '150573930494022755146637799121836756574031088', 35); - T('10020121120100201100102212101100211221', '487049655635708407', 3); - T('9p8cei7opdpi65n57loob4g7nbc8ckoblec2f7', '225365305306981525279174955491083242350460825335359093', 26); - T('10a75b1764057474656bb29', '592793221090149901308561', 12); - T('4anfmab64n5bl8h7lgg1ie0l4ddfg25cg4e1', '9047095202662955427862645312426846850781918243409', 24); - T('ci8i20261ji2a58h12hh08543b44gg7', '59758755425248253813800729972530250941001', 21); - T('244q5nujetw6880uoouz1lr', '36636647742989920257650194763362527', 36); - T('2f959fkeaf3o7o3', '281006925782093444199', 27); - T('2dh9c4ndacn1rl', '39101896643140342731', 30); - T('697949013', '1475458768', 11); - T('im8', '13724', 27); - T('6q6vhmd1iu0b8pqb80kvc', '8644518006985435630419253941228', 32); - T('9gjbn3t7i081aggxoosngzvxjwyvefe', '462313443934060201968693839921231382427024338122', 36); - T('1000000010111101', '32957', 2); - T('a6c29', '300855', 13); - T('9jk5', '120019', 23); - T('2958324266700a89cba7a88aba7b1483a80a845394c', '166375841507718717154199653196499305551542689961', 13); - T('8bga99e87', '146479828376', 19); - T('552c7691213c2b1d86123c1c7caa2938d5c986da9b6c4d4', '283151423101296097641534175091523701505647270269960362', 14); - T('9cbd4aha1ha92b2eg45jeb5eadff0ed4', '206784494673855421123664772006772082405864', 20); - T('1d08aio5dtk7t3ok8imm0rirb5iqsj', '62732185189647697420568057030541027413945235', 32); - T('159g201094dkhfd22bf965eb5je48ea946e84e9', '221200921967109264882569021709960008760497185134222', 21); - T('282810456027348881588a1a6844975597a10279217', '150593766383429712523815468178854618203779472', 11); - T('gkeel6a6k1ke899bc1ioh2pmn9', '10194974937056732227569538058731359834', 27); - T('1h', '42', 25); - T('1111110100011101111101100011', '265412451', 2); - T('1cl6kj1ij107ce544', '65107429951418530980464', 26); - T('570996141450414325391258602192009734881', '570996141450414325391258602192009734881', 10); - T('2011220221021021120202000120200111201121001102100222011201020212020121110102021011', '967713477488275607218048209625740279136', 3); - T('7b807441cd4ddd6b26880719b0', '1961771544630113528190880625565', 15); - T('aka6g7bm5qcpcamgncnak34grnpqn', '355563315866230083340179532894009970687679', 28); - T('3jon8', '1986425', 27); - T('11110010', '242', 2); - T('1ea4cb38dc109662aff507', '37045991477844459182355719', 16); - T('a5202753805b262552a29a36', '69100527198804395338546314', 12); - T('h758blfokoe2h1f6elgpdl6lb3je', '2765358558144112774392012587127708191216', 26); - T('rvracembjfb0j0gdqetvns80gwmfi7ocn', '109408928137522865486039210206106484286615208207327', 33); - T('c655c454468g2f2d191448bc0', '4199457544137003090436194808585', 17); - T('16166f015f2938', '6217115507829048', 16); - T('3a439d31a60970875bb2', '22327746714916052427152', 14); - T('8f2149o2099e21dpbomf89sl2s8', '896954776923762691198643934470088411598', 29); - T('2732ck508j4khfk70b9hbi1i0g51agk3kh', '100584319142432419662581113685907275800401254', 21); - T('2293hbi1c0ibj8b04eb0a8e306363k', '467614135020365754837471336728850191984', 21); - T('1001111110110111001001000000111011110010101101011001000011110110000001000000001101110010100000110111011000101111000100101111111001100001001100011111010100101100100', '7294509680489473516157489095568130945736908974436', 2); - T('3pfr2ip7jnn26sdh0c7o5pp', '577698647900420975141535859962895', 29); - T('a71022623aa8568a56574a648a6393129a75', '29914427537161064808542804258585866020', 11); - T('1txea4tl4ioma4xhclq9hd91tcga9b', '1113049897936374448769342426122784424634168576', 35); - T('12cjj1kh53kg5d31b8l6da', '17344044780654272896096456024', 22); - T('6338438487154824328460106772453870408', '143776716058614716325880611403859603', 9); - T('432001140311342041002012043', '6974394432902375898', 5); - T('4a6', '1332', 17); - T('1659648793588259334905356155006008342186329512002888', '1659648793588259334905356155006008342186329512002888', 10); - T('4ff72', '2101868', 26); - T('5f550f99', '1599410073', 16); - T('111203231301110320313223212301010312302200122013100020102300232030232302031030313233100', '8065823905840410320894641643979945858160602700282832', 4); - T('17cb282a436a703632a81c96c82a23b48bc5327a9857c3301', '475704029530481315157224161906654754528942922274574893', 13); - T('a4c3', '222995', 28); - T('163l03ajcb0ad40c442k90j0nc', '40227429932334134086127053002343476', 24); - T('5710182695a29304279467503339a7a18', '11918193967216532512029301640127416', 11); - T('111101001100101010011001111111100101100011110011110', '2153208033232798', 2); - T('171d86581e06acd30671393', '110366637375726363319446063', 15); - T('4309b', '88247', 12); - T('12g769bj187gg86h8hf973j0a42gjd', '61252434461027682447268959845152662793', 20); - T('1a12b67c34d57d7b7ab7bac0', '8069232682011269556707244736', 16); - T('101111100110101010011111110100000001110001010101110001000001101101101011111010100110011011011', '7366381587271251372942380251', 2); - T('782713006615886387770478158878371218820625', '10540317444948349549974758397221264757353', 9); - T('er7m00fe4h1a98apn47rp7ngqof', '633071733739943048886072406486704224591', 28); - T('5fba', '53161', 21); - T('1', '1', 25); - T('373a2b3ab965aab293', '8009398354430311887', 12); - T('10', '20', 20); - T('1430', '240', 5); - T('74c71', '210835', 13); - T('9xsfamo', '21634167696', 36); - T('188222373080761752602365676404381071', '4983141020490008650128344377943701', 9); - T('jb2e96lje1ha', '18563807355127419', 23); - T('2cahf1g8g954b14e5894eg015bcb7g', '6829065184980377404323550915244107882', 18); - T('11100', '28', 2); - T('113411024302423333024433100040', '252194224967802628145', 5); - T('f180a79f03c93c97fb35ggeb08', '87059322139486573429172839940859', 17); - T('120efdk4bgb0262hkg872i6a', '8204646330520455780142328716598', 22); - T('6256357393600602316105463449174016233346', '6256357393600602316105463449174016233346', 10); - T('3212301333200210131012', '15859158501190', 4); - T('18c1109b859b3213a88455', '1912876166082408380555931', 14); - T('3msgodhb0', '3189281360714', 31); - T('10110022202212111122222212200112022000', '518798912531859027', 3); - T('1980a00544620cdd3422c116ddc9c2cac75ba9675c261', '452854399467234314582837732095548314825458988323821', 14); - T('22120310223131300233301203123010232321121331222211100311121300112121221200320333', '948867252058170771971968589971969532899273084479', 4); - T('8610336237073', '8610336237073', 10); - T('1gn4sel36jcbqf58rhhhgclt8j36nht4q7mok', '752672174999009092630489286382303645479407654345444956', 31); - T('1a6814', '671454', 13); - T('2121004240121331213033020403240303241143321444022223', '1016205781946557654652895245042954688', 5); - T('3krgqepgut6dd9os0', '18224259273870124042615005', 35); - T('25535776478032142616588245811660254', '729334501710489629337454615331293', 9); - T('6k0b066cpgf2p21bb9505ee', '91199647570792812205739943564766', 26); - T('ap7kgeh2dn7i6388b3fcl', '218672926024286079336604110609', 26); - T('ce4', '6120', 22); - T('16a256605b0061a6', '24202414333303182', 12); - T('1212102230320001', '1716178433', 4); - T('4q1vkp65a7al9pk0', '287088200068338986362716', 33); - T('1e', '41', 27); - T('55510210244455351232000220243023431514140253311004235431353500150330', '81776145043668260223503433020247653436287857614658350', 6); - T('130305050324253103313502041022443', '12053790958929773590572219', 6); - T('83hap5gtvwyl7599', '1173538126887991015344699', 35); - T('12881398792329044007438159548', '12881398792329044007438159548', 10); - T('23h7ffhgeajdlfi07ha92fdcde28', '3822210589969585209003310564499412420', 22); - T('1j011g1ocb5pge5n73n340l40m', '1036339108033766409452608824145334557', 27); - T('211286b927780106249b51734e81a10806cb6a37', '15272908194563540988310670174159872284243270052', 15); - T('12665330245536441266321151203103102661414103262235', '366872199782353523541963434688475998858925', 7); - T('505432a457580', '44912120764272', 12); - T('p2pcjfaa9kh1d7', '101755664535230532349', 27); - T('1ca17a18211', '273370087134', 13); - T('1a6eki24el0nmj9gfb', '415305377140894690392947', 24); - T('3311124011032202103222400434004110041', '53121754075159082263738146', 5); - T('757575478216a0369101a9a', '611877203654087245090193', 11); - T('5hk707tas86j7lgepasea3a856lf', '102938253425144386832441058642305902207629', 31); - T('0', '0', 9); - T('23310db646fa85615a6d3a159621607b', '46777680511357499186246331786523140219', 16); - T('330da4bd37ad5178d5d1007da898453212c6742b9407d', '865753046927137144605560690484335314112623722543359', 14); - T('6jhid8iejf0b921d642d', '36673075507149093253329653', 20); - T('3e', '68', 18); - T('df', '223', 16); - T('eca7fb1ac1f4gd0a485', '578348126662152188101397', 18); - T('201222022102021122110002120000202022001010211011001210111020020222102120001202211101111000212202021022', '3431471172203461653218475265244817680631426808448', 3); - T('33cb8694e7a24d9d05805', '1082956090598761200374930', 15); - T('ca', '370', 30); - T('8897a2162a5266', '16689805406089296', 15); - T('2290daiad16472c0fga333889736g5f5j6c6i9', '2917258149546117962537789858395697836179581858769', 20); - T('47451060028002207126815661', '3470450188748283358865308', 9); - T('114r', '28047', 30); - T('57ba054gpg66el', '13115553604473529321', 26); - T('116214463211556364653562325626235034462421545060660', '2287347864835163237256472200746189442885120', 7); - T('1154000440000511455342052110220205054114425', '637191928874193961970691931711985', 6); - T('27', '47', 20); - T('22020101201201202211222101010002200212102011', '901277883406744447207', 3); - T('2798165243533191120056', '2798165243533191120056', 10); - T('9dh1m6jk4486fl7ie', '58857822718096078072226', 23); - T('14ik9ll0dgkee1ck7c0a4f313991adch88eb', '117891995927485506019012046581940014028686934255', 22); - T('28718dncmjreg', '808197342478474568', 29); - T('175acc70bc5338cc6b', '46636214136757771663', 14); - T('46puu0tjk81b5ksa2oht9e1fm135', '78008186942992687166968757565746709077308', 31); - T('26q46ph98mcbflecrd', '8982841934283065478848833', 28); - T('7', '7', 34); - T('sn7to1hmp60mn76nol3cqlcqbr8e20rj95eq', '1375725743077776547871273369745579120905697393330394586', 32); - T('454k6j5ifbe412jc5jah10b488', '4828430285363354503415653711937102', 21); - T('81ptfnrpjslw0v9ghq56q1g', '75036895810433018445880325692861026', 35); - T('10011100111001101100', '642668', 2); - T('377683501888313149', '377683501888313149', 10); - T('vwlugpjwq79g6outhe5ppgq8bmejfod2k', '325037691298489231093571012113559335342031712624284', 34); - T('1f000932fa1ca86508eaafa96ab453c29', '659300071197325571806191735253210840105', 16); - T('68242gcbe2euld2s1apcietj94k', '3732484254314395839062129559607170449956', 31); - T('120001333132124003241232313444414012433343014310022304413224440202344143', '59315978615169369703579038472917980021927481293673', 5); - T('2d31429c9b278c5cg9i8aj4fa9ha8fa7379', '456580926576690928879270905384043456561657349', 20); - T('a9803495569a337879a337a88369ab60aa4a', '638259518594740470682480348997343560026', 12); - T('133534443423300243223404305511241424032531131434023033530', '60692847352782957146725953144004923108889662', 6); - T('85ehgbd', '390694638', 19); - T('3j5', '2029', 23); - T('1012373453302574', '35905333986684', 8); - T('1dhke7dqoqf', '440416062149351', 28); - T('5hkpg', '5144063', 31); - T('35ec5ce3922a7b1370', '994709174014332048240', 16); - T('j3s32kabnnsgbnsmf89bgh92gndas64407', '34754001064750863291622215672807282090764762457400', 29); - T('61dd8092382749b078370bb97dad5821322187', '15671002482405137501514236252535037151239851', 14); - T('4hgwcua9d', '12653415422833', 36); - T('30201301530031554', '8623342543966', 6); - T('54a85400285541985', '250548156011412583', 11); - T('i0o', '11274', 25); - T('11ah4c5odl6', '100812863664906', 25); - T('2b1ebn61', '80579255489', 32); - T('102052273401065267741403121062144257736511671', '5621698349102047273384509211278621447097', 8); - T('12m5m2g24g9ha', '40974227046315490', 24); - T('b0316fi0fi12cc2edfgh666f4cie4h7717', '17401925878966433671042194733848449150168289', 19); - T('1523011035032422014120125032023343524443321', '915746679762856704907142877377473', 6); - T('e77b7374944b', '254517404013643', 16); - T('c1h6s949befmc', '4265231138793771068', 29); - T('8gn5neeg3j9kanelcml', '60767643491277312404351781', 24); - T('1d0f1645dc1656b1174ce08b54fe4e40d8a45a3', '10368573985886829358840965263279576467697714595', 16); - T('31b999', '787653', 12); - T('59lp636iq0uipac40', '16849438009500138420303704', 34); - T('1', '1', 25); - T('20py9t', '106157619', 35); - T('1nbp5hb6mhkcbl0jbej24mp2f7ie6705bn', '94059918813328332413354055079765980054543365401', 26); - T('372828313408429453a89234335705aa93', '84982956234483079772353825488568807', 11); - T('1', '1', 34); - T('597599783196a239116345493271610aa304a', '181780923673444526658447231965398995472', 11); - T('jah2d9f35eecehkhaig50k058f32dh34i17deh8', '3425329058012479254389346018958616073008108535858638', 21); - T('3fkc5ekh02fl5l7504lf4kjch', '615443274731752854770742839505669', 22); - T('c09g66ff3g4a', '66781941358533058', 27); - T('8kjcadt', '7690526901', 31); - T('216307272261', '68706452503', 9); - T('132122213122323312233100211230220310021', '143634905030561828605193', 4); - T('4', '4', 30); - T('2ih8d4', '9419464', 20); - T('5cbru2esldn7bi3r11s3slklg7', '103847118190398120797912171490899906888', 31); - T('2756753281255824113730120138022846228121005758023353', '13214305490430474201156158495454841847969048656749', 9); - T('535g', '25533', 17); - T('cfdjhdbh42', '6545912574882', 20); - T('5bae9d8572781e', '117534573740411384', 18); - T('32a7c1783c7795016594977106', '22697848458351903229013168476', 13); - T('5j72cag18jf7hd2438hdk4d8gebh872b1jh6i', '2356586866027928758507194750053263942297777670070', 21); - T('29a8703347585354205108131051123', '50730942867273729841510907088926', 11); - T('202', '74', 6); - T('1r6n20omm758binpfhhg6o', '4846670585161045993229294323840', 28); - T('302l1h5k25mengegj12ig4j', '6958109965429248922848549113971', 24); - T('1i7ctk2rx8mw', '107795645888833828', 34); - T('dma1', '408736', 31); - T('ii27k020bh', '71425244172167', 25); - T('3bh1h47d78cb647h695', '144161934131410544716151', 18); - T('12l91995c6pb02ka9fojp8qr', '10264759826056914843582409364273007', 30); - T('73kbijcfakakhjge0je9', '95249983769065885922897793', 21); - T('231256124330320211253061220356', '7912150971698220450062992', 7); - T('63ee15b1600gd1e7c1aa076ad2ba7cg338e2g5b', '355952630936226662025856351876918476512022045757', 17); - T('2scs3i0nr8k2j8htv02264fgq22jike5', '131881187118274767764360147174413433678100779461', 32); - T('79g87d5ba26if7f9hfb7495f9beb', '252650784623083713180577012193606464', 19); - T('2446336161312425410360135603630002111211452144', '285926215543115581336289477929436470821', 7); - T('1014', '134', 5); - T('a7eg2ih4eg8fg', '23039629802162005', 19); - T('fjf1fc86n391bb3fad3ja', '143555586534627347785306846110', 25); - T('53ee0k686kk9p0adk24', '151433087203562860042013424', 26); - T('3gde516ce', '43324547990', 18); - T('245a76562671a079a31367a6677264a795a6a253aa3a27196036', '311589292474793017656303618319953525081276226845816579', 11); - T('179aaa005c10bacc03', '13811640779442966125', 13); - T('5', '5', 22); - T('3e0d8607cegf52025ceg72fh2f1e', '29502535901784316100206946117442716', 18); - T('bdc872482aacdb6b3878488d2bb47b4', '290245307604746958781826626029678378', 14); - T('1022imeahr', '60825976875029', 34); - T('231100121114223332230343030211204244131433', '120421321606190578932235536493', 5); - T('cebsni1lh28p1a0nle3a46gnso5', '7431258037694141924732501459014099990268', 31); - T('a90d7361iba901a3jlf9', '333807389054166765483570559', 22); - T('a4725g0b0b2', '20684084949700', 17); - T('p402062lc63b2o0p8ggbl3c', '777160257890411909864572085822448', 27); - T('2303355462020425243403060', '11247570692927310923312', 8); - T('2dbdh7fd0l32j3a82ba3licjb31i4f07f9509', '5554907043046798505631459409749348180767609870309', 22); - T('4hlg2321bc13197g5', '204342990490417640852281', 26); - T('236571440705332620722731730', '749616319651624136717272', 8); - T('55bc38d17d8bb55131574b20616870b', '131116903380881919543215522786677223', 14); - T('1634023045115006652225404137572537300225444451056550315', '10550640276770088084077930237138652035960136192205', 8); - T('7898', '7898', 10); - T('9t', '299', 30); - T('10004226456290899026384452917652101828', '10004226456290899026384452917652101828', 10); - T('10896b75jlghjj5ac303bee41', '168126786589614868323001367557489', 22); - T('a', '10', 20); - T('23456bb', '6811055', 12); - T('ef557cf221b976840f876d6fb8f40', '77668303327151794801661259781214016', 16); - T('74e7kfgi63dkjcf0g709hb342', '390828104573594513794256813228258', 21); - T('5206807007436090535494441589318273345', '5206807007436090535494441589318273345', 10); - T('d50ecdd40a74g6b26d', '10999913536169400117845', 17); - T('aaom96hgek17f1', '568329567265580151340', 33); - T('2h72if30l24m1jbhijh', '8929830333919554320478685', 23); - T('28d312047jhhp9l6ad6bdec81bjgoce990', '115062764810939925699862575664608474748105279006', 26); - T('65360803637634a9a320113a990530426', '13689954501985913625610550156362967', 11); - T('26c2a5eie22a', '477248367792850', 20); - T('11d071e8c8ed7f60c4fce894fa20a754', '23679184030321848843326203235370313556', 16); - T('170101df', '1223323850', 19); - T('5al863jgic19c4adgjrhelrc3k20i5bflhrk', '2408022757613879912229341990414136203114403118805720', 28); - T('72ba45fi27d44i7831a4732di2i271agi047abfd61', '191613909069100350797661478313614413491069036280929215', 19); - T('6304300645', '259937389', 7); - T('9uadt2ms0g6dfj57d0keiomj6', '56331308674978903283699628034003500420', 34); - T('616h5k6dfj11d5hc2iibedfbiga248623eic', '114913060108619059717914037645723081826728710552', 21); - T('151e2dij79o8m161hj57pbpl638jk9jplfc1j', '1038147489563282380151219519342367976127837619996133', 26); - T('805akctjlb4cc8aefu61', '317118938284714353937988712641', 32); - T('343', '178', 7); - T('7cee134a1dab3d5cff44b067e971', '2533881063347006744885016016710001', 16); - T('10100010111000011011100101000111000010110010000101111001111001111011101110110110100101001110100100111010101010111100100001001110110100100100100', '7094500064780213519639611108740313788148004', 2); - T('9j48ed9o4n15benq02k1mnd4jpphcmp57m', '1668040714992898949399742204953861377855573157899', 27); - T('111110111101010100110000011010010100100111110001111001101110110001011110001111011000011001000100110101101100001010000011000001000111010100', '342777004104073921541803082899350493073876', 2); - T('2aps9b7ceb3348dj98d64qdn67l', '250116512555563755653432147366865700291', 29); - T('2fc6363ce8caa6f2f7d7dc022c', '3785067239745545603746923020844', 16); - T('11100011110111111101111100110111111000010011000000101100001100000100000011111110011001110100000111001011111111010110100111111011010101110011011011101000', '5081771157073840975382845753680003415619876584', 2); - T('5bddc1', '35425291', 23); - T('2s9ne5s9i6tk5rl1ep', '111588862691610935453976025', 32); - T('21012001212121112221011011010110122121021212011200201012212011200012100001110220010120111001100210202', '1234802724654414853946459041807906768113064412381', 3); - T('3bf5488fde2e', '65924670414382', 16); - T('u3pd7sn71e2e7c99642dxo', '4362855934107800076687165630732286', 34); - T('242104344320311141301411342043231022024424', '131400847482479502782843939364', 5); - T('141829b5162377b1056773629bb7a64073631', '953369605617258980018209252546165804741', 12); - T('12bedk90926m62hc41076m84meda13mkkbf', '93314399078008522916395011917110262331060012567', 24); - T('54c1fc9g96ageg9aibb005a5904e933ebea', '157502651794975274233660048577504724325147521', 19); - T('133431b367b4a8b8979372b4164197204715a31079a71268369', '1158759359278975321088119115465152282863498420368213505', 12); - T('13b', '765', 26); - T('2ck823dg0eah37k2c8416i78850c901d3jei5k', '21878942278821174795945388165121844819343606060160', 21); - T('8h63bi8906620568a8528f8f', '22734498086376568954341159917064', 21); - T('3011203103330203200111103022312', '3558775854728557238', 4); - T('2114345430422321530520332432005304354143001413014543014', '2321243578574069612613894494714592689697586', 6); - T('313c41070cb56276a', '2062977410540325354', 13); - T('226062710577641', '10314752130977', 8); - T('eq', '404', 27); - T('1rrbem3ecq3n67boi65q5', '175399218720599627675357116077', 28); - T('9005452', '26883134', 12); - T('48lgbngap7dk71io03', '4920463358341388158907427', 26); - T('12b924341033230434a810', '302187810594058435801794', 13); - T('103522531132242513144124530124313441213454020315521503313101452132405', '90987503713365214158548349492616461122244894478035413', 6); - T('477895231156911238285', '477895231156911238285', 10); - T('1000212202022010101222211220102100022002001020110010201210211000120121011201111012121202220002221121111222120', '3491562614859609420313071183474817621330068508271172', 3); - T('28qrfjm8om073jm9jr3', '1598066573075108614197842742', 31); - T('glof4tcf9be30bkk12huv', '21144602101411302851236097771487', 32); - T('12234515554420440450423405522354121252513251541023431322250340003', '89091283215408342578048636526866275587072931600611', 6); - T('293a2ac1719c62b6b4139', '51592970952982353881099', 13); - T('63834852656662556175641051453321158', '1790303853240101318026187599939340', 9); - T('32534135313343133422341503303202021011402445221134014', '101535298750522938072060693442171335418426', 6); - T('2112212120112111200100011112212210202021000111012002022220001202002010000021100000022000001120111', '16230306822675488621342411759833456926468945274', 3); - T('1a2d62jmlkaoj399e', '32690531722536862943364', 25); - T('22065453526323025411333336261643566522', '42796341889415021094527192979898', 7); - T('104167430465731064510563526155446356705', '22143034232047918382504353520541125', 8); - T('5j3d7b3oppg6kc3mn2744ijmndkpe673k', '36321347509392283793093324752977729120040144694', 27); - T('120414231214540521150224323551320', '10769598675773992644375360', 6); - T('1bi9fehbj9e547c49j7a06jg7560g8765e', '5250966747722630510598487707449375086663043078', 24); - T('82twddpskk881uha', '758314750152574060793292', 34); - T('d52llnno6g3gh4gkdim8rms5ak', '111585313532002326992087587176446680820', 30); - T('qkbqpb3i9tuggok45k1auq7', '17209839140980123276676359657614507', 31); - T('2d8d0', '147120', 15); - T('1a549702802504ab20a90371a4a264007b8490821a', '329963588381537567503898209643604670682080054', 12); - T('1110101100001100111010010101011010001101111001100101110110011101111101110111000011101001010011110110000100011010011001001100100010111', '9997939815383461009512050917690963695895', 2); - T('222310200', '175392', 4); - T('amiik9pb3', '5393051815336', 29); - T('5661a43808fca8b4914', '25495292807490092878100', 16); - T('1bf28069b1be09e531b503126', '576881162454758851939576929685', 17); - T('1ab6kaha802h2babna20o2d50fi8lhae', '30748760641046756957353468296768955257370264', 25); - T('r6ngp7gp', '469799289293', 29); - T('17apm6p9a7fbhl9el', '56058811903597689734205', 26); - T('25ad8a6e4382e566', '2714978356557964646', 16); - T('52hmf81bke60a1ke52184jlaafg612kibcb', '101881994750582739020029670929688842788838198590', 23); - T('ehi4b', '4134238', 23); - T('1315442501021345443411512242201232334120442122534143311114044131454', '3544848832557588737143248118483924586575113144263194', 6); - T('12250151105015533254352133311311334000', '87400952959480256128641322608', 6); - T('10202202221201002000012011112100102011112212101120000101', '219194364044464644628553410', 3); - T('3a3', '1403', 20); - T('4m3gia86cajgn0gdgi', '5500811188268590953027430', 26); - T('6w3nih08nq', '323632265894876', 33); - T('132720259751334396422683662607336', '132720259751334396422683662607336', 10); - T('efh6fkbppc', '111175184462268', 27); - T('n3hh8ie5go912kd01ecbooigbnobii22p2d3c', '78229552724209774917834081784752324809901456980962338', 27); - T('1a6060e36b871e4936cabc14e31', '6414250388216682298310005961071', 15); - T('8i4emgkdbf89m293dafa7j3c6d5', '6728193838600532021344689195469391549', 24); - T('2014393794498', '2014393794498', 10); - T('2119tt7n0227mjn5m9q74s8in35rh1', '36121164187835391842857679215651365416073949', 31); - T('i194c24a44i6f4a2fgf3', '35766342361937111855098852', 19); - T('51021d6b3743de66d02c23c15ce023cc49b9c83c8b3eb', '28365584323066293841735710762592894605506406026618021', 15); - T('26uhc4w2e80buav4ek5lr5lrhal2p', '82594494815054016601080486021223708523042353', 36); - T('222014311425534015230513153023430030545215', '191709426580611202017069517126955', 6); - T('6fl2ghallhed', '3929812949532461', 22); - T('7a337a', '1278210', 11); - T('10001010010011111111100001110010110100110011101', '76038037662109', 2); - T('fjk05ee4qc7djqa6hdca4l17bl8ffhe2', '11426461588103614891586213643420335678694578906', 28); - T('1i82b85b56f04bii7f34d60515bee4b38d0e965334', '52886360111107438155328456805662247358206078055736978', 19); - T('163a89480a79713846076141827', '1881124520769713055736991120', 11); - T('8f2g', '331856', 34); - T('33f49h', '7923777', 19); - T('pmeea2d7919bb977n72ei4', '29569453750412076045125686518769', 27); - T('10ik4q8i53n162bregsc29mt9cnnr5l', '561304419042503423943841208615348170365516275', 31); - T('1mslct8ed9fnbton', '101475049402356215994266', 33); - T('30616161545253435002', '35655471572473580', 7); - T('6thgnei47c630i44', '163171243313361202379251', 31); - T('a9i5h2mm08ijmhh7i', '63937387916914384871933', 23); - T('35f3oh1m6c', '12299557451412', 25); - T('43906e3351853cb2ad062c9315091712290', '367854393737791193668837913203410675507856', 16); - T('210320', '2360', 4); - T('1f03jb6375155cde2h3cb0a7c2e08516', '37591642929944359779790325970114732866026', 20); - T('1101000011101001000100110101000110011011110000001000010010000011111000010000111011101001000010011111010011111111011111101101101110110110001011010111000000100001001000', '76330741559420840213970134181579220885370404866120', 2); - T('723bbt5iw69j', '681623175196640934', 35); - T('1111020210221212120011001102022021200002101012202000012212121201012121211021212021112002222221101', '9485666611553640815200275025119640319945611036', 3); - T('e9230432g1a379f7', '41610888623244319513', 17); - T('i4d5e3kpdlpfain4qip0', '28521809758740110400245059650', 27); - T('5ep9dndi8d0s08qk5p7recji9', '690128544843296060408933983940765539', 29); - T('bee89262200de8b67aba', '265978570932745965667300', 15); - T('4276ibbd1hf8h', '9131409870722716', 19); - T('85hp63929kfdcbgrbpl6i2c6bf55ni9nnk6', '130996974800003436075520961172392638886635381034470', 28); - T('474', '2476', 24); - T('2631ab3225463601659691', '116022131993562424814989', 12); - T('10525030898513855313', '10525030898513855313', 10); - T('3h7k4mqi6nd5r605gp7qjbik1', '450084426424182428475145576797678729', 29); - T('33fd9j1dlnk497kdn8c0n4bnp5c', '19319964977974884787425260629106620314', 26); - T('1426c7880438b', '30816340281062', 13); - T('64321023153', '1875330978', 7); - T('25', '23', 9); - T('hm351b6lb7je8mlfd5g68off2', '63540723667510583038007846985931627', 25); - T('klk6ek', '108208208', 22); - T('208d919616a4ifc5h4765ebj38ji100778i', '347322272727940675644219270315862525504058978', 20); - T('cpcunfpgqlk473drd1o4so4a76606', '7345383461143882582651212119039482107238312', 31); - T('1pih4ojmpcnu704kojsv72ab6i', '162908784779725387991102787318550729815', 33); - T('360474703465644142142614426374633517336173745433164557017', '1406659725135506145446652465678360390928078042488335', 8); - T('10snsh0giu9p7h69iri88lfng74bb', '7799390119107220662097119983075788706149993', 34); - T('2d4e3gbg41s2pl85qbpadg6', '365226006635397229971610827736500', 29); - T('16ek4lh6ikh6', '761689572308220', 22); - T('8niepouv', '300193473503', 32); - T('101110101011111101011000011101001100011100000100001000110011101011011101110001101110110011010110010111100', '29591313602933764036329127652540', 2); - T('7m7phem4rh16ri', '283899653498709515122', 32); - T('ecd7559017ec', '260409597630444', 16); - T('baccfh26e6', '2299936728858', 18); - T('812659a6b', '6600640018', 13); - T('3eg', '1365', 19); - T('57i652ea9a5ki2929ajdjigjg', '290822038162647483611639195114581', 21); - T('1mm6spj0adu7lutd63hru3578hqs92gnj94s3', '846779105368022234729976221876987821217467278988194056', 31); - T('1077226367', '150809847', 8); - T('363ci0ha5g0b2cafedh474d717', '309571283776743389617828368758327', 19); - T('j3ki90fhj0am3dibmf513fl', '17403192502310050592752764662905', 23); - T('57', '107', 20); - T('103203234141240404420403444124340102400144443233202011123100014', '24657740989792007884797847294801892590440634', 5); - T('2o81l8eh8bnimmbe3kff0snig', '15449657193898916995922777414678363600', 34); - T('132220114253153453325114041000542535224210310041312131', '273473331059592249838738470025686999579223', 6); - T('3311431340103430231230130014102', '3404424300858526016777', 5); - T('4144044111132405001404032300314542302355012031251140414404341351', '45361153961682006879724274980338129551748231408067', 6); - T('jog1df881f7fj1', '203639325446012074046', 29); - T('14lbk76fofm7o02j2g5cn3f91a', '106080117489697708196077914532661910', 25); - T('13bm05fedmkkj3cmih811g', '45512227946855270778013305435', 23); - T('5g8cgdppge8j49f1695ifanl2oh1l', '23420870779452170989646779263011153019603', 26); - T('6rod3d4k0l0mic61n9', '50510545435421981840252334', 29); - T('0', '0', 31); - T('5fq0nnj67eo9f767cih6', '8778527137266071484312465711', 27); - T('3fhn5bl869423a69717c65m1eif50iho9j0bka', '19210103805642147226446252712767630434515948337507385', 25); - T('269216', '637938', 12); - T('5docn114l0a7bk2', '207097343626957148002', 25); - T('didc6c0k28hk1551k9j6j0a547lk6ab', '259424451571890813907422054130537742940815', 22); - T('7663148312338aa823201a0833aa4111a315026533478147a', '737078060626686169073460661351622551458807003364061', 11); - T('f4k60afkkjh3jj8kici99jcf4l', '168030591422000297543312682719724026', 23); - T('1tuk1gnk98sakdrj', '268546796319568703321264', 35); - T('2fe5ec45gff89', '1708242462795110', 17); - T('17khpqq2cba0034d4711c0n0qlk', '21146626764499735093141819532482917428', 27); - T('54g9ge896014bc067c180', '197583741379071034909670273', 19); - T('9bpp49hg05lgjpjfed6', '549106762305328162669533939', 27); - T('ep0i2ceehf0hycozofuprj7c69mw', '15393314250847454087963951962903836882005576', 36); - T('dkeko5igsti69grhta', '308044223476306846565544919', 31); - T('533412700560147364151506123351553042070455067164', '15136684942816823221295501833940390148075124', 8); - T('2dg4d457f', '100451031759', 21); - T('de6ah1j792i6h94801j2i5667d91ch49h7h82aa4', '50429457718111652003697844375837041689243661530621284', 21); - T('1c2l72df1bi98qi371hk208a31qjq', '125466201932627525943031559221363343701027', 29); - T('977gba19e', '1417885313364', 25); - T('140043111034404144201210434', '2693295130467600744', 5); - T('g0a2', '390516', 29); - T('2200230010311333101333233323021231023133021203102', '198922953943240318378080770258', 4); - T('6353066873101558127578076017130160508', '144165800189980848048554063340548054', 9); - T('21242641202566034126363025555154566411334600010060002214520311', '7811306433748906294071935652319422095601397419580172', 7); - T('2jgbbv6et', '7166652508469', 36); - T('gi1cl', '6532196', 25); - T('5mpmf5l3qnn0d', '13529230278332772833', 34); - T('15', '12', 7); - T('4on8fqz2b7qt38fa2kidf3pd49fmawxwl', '296723553761811447810148760526142314377887578064293', 36); - T('2232314414020324203112114402403134412320', '4622837608422402490924529085', 5); - T('6rhkhhq4g0k6221s46riimbki', '1954313924165907007256835789755584518', 30); - T('tis', '28455', 31); - T('843220348618317110', '141498156522774510', 9); - T('4rdmf54o561n', '41317387029108563', 28); - T('1719c2acb576a7ac38b848daa63bb880', '511177631774649682452485037162895944', 14); - T('11', '10', 9); - T('d31tvva6q2', '460761943317314', 32); - T('110011101001000110010011100', '108301468', 2); - T('1372349637259ca9562', '143180187315524159049', 13); - T('659717282256311982263695312406804638295363772323', '659717282256311982263695312406804638295363772323', 10); - T('66255904a3319526575b98abb5639106a66a7', '4619304232886119691354791167430461349471', 12); - T('fa2d', '124053', 20); - T('18au', '37819', 31); - T('1fe9o', '955188', 28); - T('2d719808e11hia0i3', '1748293226855801360363', 20); - T('34b782264683b4c8c03b489972105c', '680443750818396200684733855097238', 13); - T('313513101344552064046222545523160040', '1219516865836938913640561312952', 7); - T('l861', '227613', 22); - T('1011102020222', '618380', 3); - T('37q70clb5agn865ckd1862352', '74237408841777670888732000080865424', 27); - T('381n0od6glk1nkho2', '77371357752513446808102', 25); - T('393b9b61ad34', '62928172723508', 16); - T('96boudmwjku', '33547764777497886', 36); - T('b772g42e1e937i9e9hfeaa8fj6f2a', '119431034908791666035134911878398548328', 21); - T('23340', '6006', 7); - T('26', '34', 14); - T('ia8i4el', '7121667009', 27); - T('2b', '37', 13); - T('10111010011000101111000011000000111000011100011010000010011000011101011011111000001100000001110001', '230735293932368005478672810097', 2); - T('3eulm73dn0dlbv85fq0a1kww9fevjgg', '12403336167562412385040944567150574800575129761', 33); - T('837812', '1342629', 11); - T('234122624231456421160102414510144', '2776670000065408919554607368', 7); - T('1333430001421122252314350034330122331524', '3566212756079222889777237710956', 6); - T('u6g7vu3quql9i75qo8012b10j83uc8x', '633618464174594585664731042520999309975445212513', 35); - T('927s1xbugpdet7cf0ivndfw71d0eh3d0q', '92198010959092081267985643765193993525052372840374', 34); - T('720661003a44b8782a377b7', '22986456123373619033935096', 13); - T('1ch1g38dhb8a9220c2aekc2k6jc4166b33edi', '640864053337562236398014189720034411222966567738', 21); - T('3d5921bbba07fi6fi95778ig43d98f0fdjd', '629408214644536101232564875177207640880125593', 20); - T('3ad4d290b374idhb579052e1eed452c4b40c65ceda', '95656564169281584571909173688226500498143045385593636', 19); - T('799c83346777193da55152bb3a313d158d99845663719', '2068949030146458959617219570382689988916278523145339', 14); - T('1355453240562410203531031534466', '34872452909171789038452198', 7); - T('1201320221113011020033320121013312322003023301320020000213322012000202003022233201', '8941201919917841907198878463588663584033560374241', 4); - T('9438b8aac2c05d97bd296538aba44737780930467d', '911864476827779974279651792691116485290689311431', 14); - T('14557ca16860c7508', '891547425836696533', 13); - T('2d661398', '494661068', 15); - T('64ea975079b06c4e5832714dd20d', '359755626933367859228607184583713', 15); - T('hd7o', '383596', 28); - T('dfneaok4lo7eltlm3keflhmnj5', '114604998140550560800450290968639685275', 30); - T('2quqi6v5ip', '130702437007387', 33); - T('0', '0', 24); - T('40310301140342410444003411000420304041021141232031002220022040432', '2238323181401796966396578744731682312617377617', 5); - T('31b7ebb7e8b136deb2b30b4593ad1a775e7', '270692937955729861614382230692061625415143', 16); - T('7cf6f4d44ihi7i', '625733239311823358', 20); - T('117295c2222276a10451625946c486941c2312b197c874', '150143930723763569187444310649172754803478411214564', 13); - T('1331022023133202030010033121310211001332', '591046930327775686578302', 4); - T('101110001011101011001000111000101100110110001010110111110010110111000101000010110100000010010011101000111001010010011011010', '7673368527850305306860702856736711898', 2); - T('1qzxuq3h8f4p1nox5tv21vi3k51', '50920381745468843583132978679805532194485', 36); - T('a999b7a41393a14a9a5b312', '5972349927337564992006398', 12); - T('31c49f4d6a14d5a60e3be92b6c7d09a28ef733', '1109864730568327689119301182815368410691467059', 16); - T('bkn4e', '6256400', 27); - T('37llr8al5bkq2885eq0qjl98f6aq56', '3042030791816242326398464933034496584602546', 28); - T('0', '0', 5); - T('98684568311394652b149c525bb2b8b7870c', '125020666101961535355843525380489345420216', 14); - T('7jih', '63977', 20); - T('56dd88a', '341387370', 20); - T('n7p5qd', '400694517', 28); - T('5', '5', 7); - T('5kte56h40thm99oi9ei35', '7166982777711639280635189086309', 32); - T('871b919770510408845b20a20', '683441136014615003034368952', 12); - T('47321211337', '5289349855', 8); - T('33', '27', 8); - T('671dg', '536043', 17); - T('1098970497529a1105663963204529a4366270', '367599383800156596794902828804760154380', 11); - T('j1gk', '418340', 28); - T('60163523202015310203260406350643620424355666514246323', '532226906168395704747817553933051591835925873', 7); - T('28340466027959819372283a24801', '397312781649077687305059417953', 11); - T('1016651ababb278b52735114a43067320725b5a4b213', '25670087069424327116744087567400672087130937199', 12); - T('2ob9erjwdlabfl6hp9isx0pwqd', '2162440175968208142159324732902997284341', 36); - T('58lc411umrhir', '6076908444205303387', 32); - T('d0', '468', 36); - T('6438156633447850200458070558', '377549095913992594176286013', 9); - T('45', '101', 24); - T('33de4f8d6baka5f9058ga23ef', '4199395346525371895901328042038303', 24); - T('16408b6a2837647365594951', '10123990278705144980915533', 12); - T('110ca', '1376058', 34); - T('32510310126061345240566235', '4547372983380291419500', 7); - T('165d4ce740e3046bae79a27abb9c2131020e70d73', '157696374111283237707883383886612883626999191783', 15); - T('1e7490li81e785j9becimk2lb0o11o067ce', '532437839280281697432460793212226489874746192189', 25); - T('1ihh485ai', '196017355842', 24); - T('141g04patj89879', '542884791574809430419', 30); - T('n9khp6f3l67iqfq8eaj8m66iirkk', '71244463346160860580002443985000856641849', 29); - T('hirjvxh5jmno7f7ns', '55978446537763950133687022', 34); - T('1044463624121b4', '1322835039891352', 12); - T('lu4j8tgm', '933910735285', 33); - T('9j1g51fh60kj3hk3b74g0ca3c6c8c9f5g2', '425850397149549655524432709384404177906197591', 21); - T('2539b2b5', '151026660', 13); - T('57a82342c455g9a17ga571f484e1b3fca0gbf7b49', '89990290894968066371722348778575965073382603807535', 17); - T('mdpbsafb7csl4gfibc7q3d', '115378571471053973725066202243548', 29); - T('474a338272a1a1a4a1196907567a1668494', '1194906116055811058177751679883239985', 11); - T('18gingmssvt4ul1139dt05', '51363042207429652823989292561413', 32); - T('2ce42c8496', '192806683798', 16); - T('11000010011011000010100001001011111110000001111000101100100011011100000', '1793230956491923932896', 2); - T('4f', '99', 21); - T('9f2ibccj4bh', '162142189763270', 21); - T('1cy0q86r37684a3f0xe9cuq5hoxk', '1424207968256042080686950649776824750523768', 36); - T('12224530341515005031015313254204553135323542204313144542', '8811492262978145988790902373392289264937486', 6); - T('t5wr4x', '1763445345', 36); - T('434c5c2a2679a15a', '218057423288814210', 13); - T('22234314204204424014101430443102442231430233043103244323130322104', '1361476455979988470036534159812062182545557779', 5); - T('808pani', '3860596982', 28); - T('3114060641760665307', '56720562441120455', 8); - T('20052215130115042121', '1233946618855393', 6); - T('18623146542a444', '675413878461414', 11); - T('3j0ei880glmfdb76g1fgch6d6e5m876', '966695542929174813619268439440759006627502', 24); - T('3abd', '15037', 16); - T('321544500711356560655140', '1934109172007933532768', 8); - T('111lwhz2sdptjhv2xz1g5fd', '17827003136890080321517837629398137', 36); - T('l8ne8mcac9878kag0e61ni982nl7m9', '226995884117043510928077829213939988951001', 24); - T('3tii74kkn5pj2iiomo', '254294093773044532571434347', 33); - T('1', '1', 3); - T('10101110101001011001101100000100111110111010000110100110110', '393269849358142774', 2); - T('4bikp5908romjjci53378', '387494241223681393190475393084', 28); - T('a9gn', '162298', 25); - T('31553466646', '3450760614', 8); - T('77992465873916625993036446511778946620300874171', '77992465873916625993036446511778946620300874171', 10); - T('39d1', '17562', 17); - T('25427707303456416047670142267372377104250171470', '938489360691345858919636520999045373686584', 8); - T('233540237076312188', '39655724759031329', 9); - T('1g10070mb0edm15gmk33870b3ga54l2f', '2775772450662354288239662524197284067896579', 23); - T('1ip9pmsrnqt', '961402113030509', 30); - T('33334404014320301030430142', '1118103322902592547', 5); - T('3de5gih8i9f02ff4j2', '48309612020985608921982', 20); - T('a59vtp', '461426503', 34); - T('3207145150222', '912827599922', 9); - T('17587', '17587', 10); - T('1lci48gsc73l8srm7h14', '10614491499072743532053511413', 29); - T('30unig', '158880696', 35); - T('124405625444044364574470555231', '204335816074449425736587929', 8); - T('5el9kb5ma058hilj', '1506277403735522227245', 23); - T('22022111212012012010202100220000012121200101022021202210022201212102001010120200002010201122201022001121120011020', '759167441024557484181567645428524750251602121011253909', 3); - T('56bo22b2rk25gnekrqt2hcbdb6rb8', '1192593196505593827607689568864200483996638', 30); - T('6on6d5k6miquhqpydf7imhli6jvrj', '114889571277404698459666127207755422175313564', 35); - T('1h', '45', 28); - T('4c3d0cm6f', '354629784409', 23); - T('km18d28ka4063o1cbdo33jah6m680nh', '58649899688819306737372660540249084938234311', 26); - T('aa954cd38c39006a0d5d65a0b2', '13514993771256587973240014872754', 16); - T('6f8a84d', '116959309', 16); - T('21540300431025331403002', '305949724456401866', 6); - T('g1h00', '1690956', 18); - T('21d98926569b658f6028hd2fde42bh', '25351569049858465877817627105822773543', 19); - T('28f4ybfi9bm5kiqhfdexzg6dcj4', '65002375284191780502488464831022727755440', 36); - T('64234204142', '1870771814', 7); - T('g6', '406', 25); - T('11100010011101010', '115946', 2); - T('21f7g31kje0i0c11i0eg3c002hie4a1bh79g00i0', '7675939963269437319032080266122665912099477642009377', 21); - T('4e5de4aae42fhagcd77b1819ii2a71f7fhg8fcb0d2', '127596210502348048047227140390153976968822456518898776', 19); - T('eedogk003clc6gei2g', '105223011043453847437536073', 29); - T('1323314231102664064254536346523603525504340', '461558548190589236267853076121213693', 7); - T('11110001000100001110011001100100', '4044416612', 2); - T('7d633972a0473', '451304675159061', 14); - T('6a83831eb7m4', '6145795507071009', 23); - T('341534666615406346022401654625010604323314603', '55153818937912725941205585783698988590', 7); - T('j97i92i9lld11bcrsi5b', '764101907334236165295715535019', 32); - T('1n94df2m58nc2f292egdhj', '190478845693184355163546148587', 24); - T('193a551506a574158808739708a326409a8232a731616', '12264564257932968384919289414304439064543308258', 11); - T('415301137a97274285', '2089766854598334719', 11); - T('4ldl81fik12cm3da7771d3b70bcbb8ja9692e63i', '632495479818532982131362164200507449663312253671354541', 23); - T('1l4v5wq6v49ucf501e1aeagnbetf7s3480', '211857233605896369351266132026791700842067821353880', 33); - T('313b62cj40gi8g2205j203kn279l7e4a85', '10738451034432329068272471398733940161160040261', 24); - T('1012121020021200221210120121200110122122012001211002202010211102021021100111022121200222', '390318533778659728411429509673944759961196', 3); - T('m27mglbi2lk5f5gih4ac0lgb8aicil0', '1571331400777723523482785976497721521964481', 23); - T('5ab9da880303', '99754281796355', 16); - T('6a1216cc363156993c7619b93bd0614a2', '31876928265786310963486391817306746230', 14); - T('19a13581067b', '1352416871615', 12); - T('1324', '994', 9); - T('1i3f4a292364h6g057822', '519041051879430852117563660', 21); - T('f4bh5e04efd4bbeaf9h7a6ee18d0faab73dc', '1312404820878713008763000090033788596202434090', 18); - T('3nn8515hl7af', '31939448982826071', 28); - T('101211121220201212012002012001202201102021200012112', '864510256165221257456579', 3); - T('2knk20f4a89g98inl80hdf26kl2g7', '3938634393856186288183708257843572595407', 25); - T('3j07djc8b21gde84120d', '51743188098385652943158566', 21); - T('11101111111000111000010010011101000110101000100101100010', '67522678144797026', 2); - T('139052073f74b24', '447711998083326148', 18); - T('gfg157ac3dag139de1ff6486f98', '1661627613676505415512176639620939', 17); - T('180', '209', 11); - T('c0', '276', 23); - T('99v31mgs8h9m0mi8ncqw9', '39597598618192553451515827167745', 34); - T('1012202022110211200111', '12688938049', 3); - T('3hpj4m7gl70rg5s986bn7l7dbjtb', '27415197316826959949133005401311879944981', 30); - T('1g4odyx23p8fxodidmc', '9075451789279991776772493457', 35); - T('55329abc2c3fe0m216ai7f', '206170368324589305893946138226', 23); - T('1340009855286682649574456361871475494115109071462971870', '1340009855286682649574456361871475494115109071462971870', 10); - T('11100000110000100010000100100100000010001111011000011001101101101101001000010011101010011110110010101111010000001100000100100100000', '2390040390567048642966647388057001920800', 2); - T('52223564742465635082247585678534782336', '1064509718181642515244340994372031822', 9); - T('712872119b030a5232a76660ba7', '81302736597615293178940708015', 12); - T('ck82eq63q177e9fob2d4am9', '394072217994880709942370882654321', 27); - T('b', '11', 34); - T('4967a6888a214810953573018257373a97081612156a2', '32295474191633069925047732615369002936277376178', 11); - T('818025300991552057072573', '818025300991552057072573', 10); - T('1010000110010110100110111100111101001001101101011001111001110010000110100010000000000101100011101100010011011000000010111111000110000001', '54985654283950555052147243853162465718657', 2); - T('3i3rcfesgl4e1pnpdl36fjst9ribl5pb1h6', '1822841056993585330595743968680994820026920032451064', 31); - T('518835417113272363020373362806722040762766', '6945921601924648113241636640663267958543', 9); - T('51215114114444441323115130', '148715282153752964766', 6); - T('3gi38d7c1r2agrh', '1063253583022369377084', 29); - T('7b3178a9bb793298669', '211348054902766508721', 12); - T('iaej02e3j5f72623372gja8jb446af208ec0182', '509551507301561858265746542302971839802931758720562', 20); - T('131171878520608025130476470220451332844204786553674', '694806882997751424690876571416772531272782056888', 9); - T('kto7o2', '1094994042', 35); - T('6hdcstaqd1tg3f1739a8plpkbbcl4baph', '1219582161259509474473107342419081037076931846767', 30); - T('1dgf7wbm1iri95orsqjb7', '18364036674616095538201293327427', 36); - T('13aog6neo84l11mjjqa2kk28fms9s1599kgg', '1705016958103088803360933755064603355390629893620766', 29); - T('i76', '14314', 28); - T('15c81512ccd18881b020', '8494230105025646245908', 14); - T('gjebn2c57rnik5n29ojr7aqfldfm4h13', '102838449890987454302661340891009306868629443333', 30); - T('783igc1h3b33869a72', '40730864443858836835650', 19); - T('42a5l8c6cn', '22217784905703', 26); - T('342j', '38682', 23); - T('ba7282d384ii6e1ba498', '22842952907395097528788325', 19); - T('3kob9j10mi6m70cggiba8ca9', '545573043076070981074015736460884', 25); - T('abij88h', '1194911977', 22); - T('7417670326016217030', '135666019698548248', 8); - T('63687610', '123331197', 11); - T('201120021011222022012112110220122212022110020012200210200102110222001122222120010121101100000101021212121', '90752154646385975070999099110350327711936017168706', 3); - T('453560155', '27628396', 7); - T('3el292bhjhjeldin8ccj225261i2fd0k7en', '1217610299685725985627264896485512835404180004748', 25); - T('2313311021213111210010233033003000203221233313020223311311103021310113112023102012133223', '68779145291008920229511359415983281509892813113288683', 4); - T('acbj', '184177', 26); - T('p9c0adfhgl7pjkme65pm3c62cffmge6lf', '48235152154085152675537161376096266286876276537', 26); - T('5gi81hd87ohf1goa0ojlc8e829gk7pmmb3', '278990742516194289085133608565402019725737015193', 26); - T('22c61bc7b60a9c8132c791630604c6bac46c6', '28171352787129023473400908616682244220258', 13); - T('13', '37', 34); - T('21e006f1f9cfc', '2427921901128738', 18); - T('103g5hi8fh49', '353276045114673', 21); - T('4e8295q681bl6hanec562697mf63', '5339163936161554860562933482146186694683', 28); - T('3214387157', '3214387157', 10); - T('39ma9', '1544253', 26); - T('3b728922be05708c343de41', '281706306025336513245142711', 15); - T('112gj40idklam575iu', '111850377682228327449684446', 34); - T('520424544225123253212235432303044355140441225100443352241304023533', '2034756118713909937637031846420814255105822777216881', 6); - T('k0iolo48fl4j4lp0s5u', '24781493827610679219607072958', 32); - T('128ggb4dh8cj8fdc566k91cki3', '1267160922429805851247593339094335', 21); - T('1045451206214364325164', '613386390999810957', 7); - T('1107772788549410a4414822299a234856a6016475154906', '9672542336539708087518829624662668197292765768698', 11); - T('11000011100011000100111110110111001010010101000011001010010011101111010011110001101100110110001111011110100110010011', '63458983779334095341636694071699859', 2); - T('41430002221022141424223400340100430110041020444223024014041003410', '2376588431552008570655123555427072543719078605', 5); - T('8273c422025895e75c', '2406418559385510209372', 16); - T('m2h98f7l05ai4289j5k42ink4c2ia8aab', '3246517122524761841891626370023065146892969851', 24); - T('330112202301211213122103100103022210323100110332313310211202202013311030023331222002023', '22580453758464343463710433259085476023887934191476875', 4); - T('2nb194h6ga8qi', '430322682063490731', 27); - T('jpmi4moew0hzbah40iy0rgbgjkvsf7st', '34681988587068576957716048878356716190719421336893', 36); - T('26lv2swvoi3grja39ctlr', '5165229217881148067867135922963', 33); - T('50gf0c8e292h217h6b1g9gc7ffef4b05e0d768e', '2534050190869413489303341066801668313035183620734', 18); - T('75742', '110035', 11); - T('h3c9f2n', '3276752903', 24); - T('ksmurptv0dnfdahfpv5t2ttv3qn', '28444102905166388726141858508924545634135', 32); - T('k4g49523k4gj1ima6dgf4l9j2bhi5egmba1', '1707736842966246461835311670413679917106063130033', 24); - T('14624322306021144203510134', '60398430088699424182364', 8); - T('45h2d09g9jgf8km8m73d2g6i4m149ieb0', '159828027787837356457234355582069560638186013', 23); - T('293e747', '29816392', 15); - T('2p1h8egsiaapppbd2alcp8r', '426308484322430923493844090113709', 29); - T('43433024234131230143201230', '1427229136114037690', 5); - T('289a4633', '98006151', 12); - T('41608955313b1911a62765333599a23676423', '2924108119384944390066125637461201476059', 12); - T('diqn1r7dg7d6qsprogmqe2r6qdgja2ba', '29481647088004232174662553215167090041336899916', 29); - T('oj', '859', 35); - T('2gdf6532dab77840d6a5114a0gg', '293251122577439820618448012407740', 17); - T('18rpho7m8m09qsqb0gljfei8af80j', '296852593993951607772214947149628004912219', 30); - T('24keb7jdl94mfm', '1930409257079544574', 24); - T('1674442410', '250758408', 8); - T('1g7', '568', 17); - T('4', '4', 33); - T('5c59e4222e6bhi0djb7', '3522719264468518688329651', 21); - T('1220560661202652130166402663055101525606330601606006331303252', '675150095126381288896084826641786137855807876233627', 7); - T('8bdd5jmb776gh24h453cm5j7985e7gk5ma5', '169186553911260540940677935317019936465424663620', 23); - T('527635172', '90126970', 8); - T('277ae', '379014', 20); - T('601248508516016121653034235336305447350802022167218600', '2260213996246938282352523423961800103525210629322720', 9); - T('7141002130726144240353615134174321', '4556862540217805685823766591697', 8); - T('20907952950099a0198619690a4', '2472922861761322996286447619', 11); - T('ea36fd1clfjqe5fm1g2s83nf47g47', '1270443528906376270651074312814971947683121', 29); - T('101111100010001011001011101011100010010111010000111100101000010011100010100001001111001100010000111111', '3766029900593721359372665013311', 2); - T('998b3480cc2535104921e', '3205175075301584736233354', 15); - T('a8lcaq8o84hr8k71i2nq', '62871767920054444800492313760', 29); - T('2cng1gia0kq5mujipjbape898vl', '3263921313975839853748035663784831132661', 32); - T('476bd81afce52', '1256456203521618', 16); - T('5d45102dc724852d2db67b51c9b9a77d74dd3', '1084392974332641207686512234196875228047773', 14); - T('4815230672045132', '1010606396855429', 9); - T('1v9kekq', '2124036762', 32); - T('74a', '3181', 21); - T('328a53a1007307b61942065682aa46', '63859486675999658099313593314134', 12); - T('1a2b71b61a194aa8aa308521795481514ab29a339', '27248586215670941038987160555872821966497373', 12); - T('33310200313011302122011', '69579394459269', 4); - T('12202221120012000022122221021211010122121121202100210120122120102', '6610763645257536623940916016153', 3); - T('231ogcf3kkg4pig5m1haa9nr1k54a7sqq', '131862409594175767861875835443409445020844276370', 29); - T('d6qe4em8u38u', '926445109477491562', 34); - T('3eh2c5b9cnkai44ii8e0feb3jb0h0cf5k', '530433754311027126180546490781321137757629004', 24); - T('315ag8333b315a8458c2e27', '3615724227326593741564426512', 17); - T('34158', '49431', 11); - T('3ils27oe28e7', '91557914807141968', 31); - T('edn2gblf7n0banus753dpjdoe6h504l6a', '7642629969726378331747823898058942648773832841239', 31); - T('708a23436b28a0331221a80a1cc36', '109326184942549365525657861606388', 13); - T('2hk9kj1c8e569dj936kb4', '794579205969206004082283587', 21); - T('122505415330540034050461630624613221516550102513164104620053', '97354517682441334188608404808066903954920393510893', 7); - T('2278502839268387241756', '2278502839268387241756', 10); - T('55t56st8qhj3c46de0e1cocd0o', '99849784143466753187227752067831344089', 31); - T('1293', '1293', 10); - T('8163a159h14c271id682j0419412h28j5gd', '1385631680048601439082465294762283037255834333', 20); - T('33103002234130422102321400', '1086244791478948350', 5); - T('o7c7dlja7qnllqglace1kl5jji', '14766346445976221588816768352790750827', 27); - T('50581gee4ef2g5g9c5b', '522201912074626183642486', 19); - T('132232201331030203102313022030032032030013022021203311111313320331032001132112031132231322', '735766436167284912814914395757285842906978477229337466', 4); - T('a', '10', 23); - T('623150750562117510607143030162837240736', '11425818336940049045139902134722023322', 9); - T('1n9353d6cb5k404', '122447087321171523044', 26); - T('28ldf2lb7d7cc25a33bfl4', '94283647489871424522663101176', 23); - T('339b79a42943835492239b54023b886b38b99', '2352685629298138350299211793902313821093', 12); - T('7703554633327072657443651371706621271374', '1309663585734465506833205292089832188', 8); - T('nbagqkohqn57pj7r8i4i', '506352586652779671862372959634', 31); - T('1f1c9hie6h6', '10999559699306', 19); - T('84c5f2554693b9f5500f5bb85b158fde13e1f', '185058871763639409971122557584749513555394079', 16); - T('21210021110102020012010220021101002010100212022120120220102111211', '8913855519363454596688827191062', 3); - T('1k4g82kbq0i3a', '599743970399950235', 29); - T('232221321002323112330020033132222223231021231332112', '3696354442389518199954992455574', 4); - T('31', '13', 4); - T('2fl289c9g37788lk851g21', '42297178746901523108180433621', 22); - T('gm06jwlv6dqleu1dip653ubs', '10360002803920470539953905454083262792', 36); - T('5975200c0c58b4a4209dc3bd9bd65351c4a686953', '39765261669001283521985826220442639112464102333', 14); - T('1b7eaehgc6na27qdj', '1633286773621121735715251', 32); - T('19c71489d18e3a0980e42cc36293cacbe3', '1071329852165428379062747217653305005688', 15); - T('a66j4br3o', '5109925159442', 29); - T('236k3i37fdkaca9ggce9488a', '16154458171800913743319566344714', 22); - T('547c3cc0b090c099585c166c56caa7b0c', '2370956445374590211607145293779895329', 13); - T('31c6l2fimcm94ehd3mfe3jmf289iamk83m54cd94', '392700371206866291770648353879270744554067295237496903', 23); - T('49a83c6874d02a9b9b81b4', '5501733310687036523031026', 14); - T('1i6aptg1v97t1269a9nfx6', '222397813672483505273091300846188', 34); - T('6430553763248061224028267601063731268', '146036643954511589188331459488427555', 9); - T('22777415000440655526', '342256872923028310', 8); - T('3077216', '818830', 8); - T('g0869g953a5a0689482id9ic', '4131232785565176280208325038394', 19); - T('377805kgi96dgc9mb32fm406m0f6f39c7i2hg', '34922854162614667688896860620347909170055951885512', 23); - T('34', '55', 17); - T('9mo72jfoon', '53654687111919', 26); - T('17em8okm0dmnf', '123219026310591941', 26); - T('ojfgmec3bh5hn8e', '923316247884933873964', 25); - T('300449c1c3e6cg7', '1124713376756150983', 18); - T('148468717751060247811551716501887635', '3879291235122751908691549806834740', 9); - T('2111111022002222200220201001211120011211020211120001122121112210', '2861089797219981690788113774269', 3); - T('ba86k1hjmgc2ka1b188c3ocg8mg7', '633561834955856968092087110467408732907', 25); - T('7', '7', 36); - T('101111011000101011011011001000010010011111001001111010000111011111010010010100111011110010011100010011000111110011110110001010101100010110010110001111011100', '67630990462245519904689419770374213484683027420', 2); - T('lmnopcc579rq1d1kecrck', '1913989049548883118555149674260', 28); - T('101', '26', 5); - T('34243442230362323775450370', '133734900702608268611832', 8); - T('7705c09763f0c8', '33501846960337096', 16); - T('16b68084359212420b42a0b466', '1507498439245168038118909134', 12); - T('3422230204423244344144431342004202323331033340410420130', '216503932187688762113715510289005560665', 5); - T('bxg1asoyef', '1211512806561831', 36); - T('100qrn', '17231531', 28); - T('14376376532381875', '2764823838681551', 9); - T('341b85880261127b4a4501bb59989072003', '16474978878686249530126059882195408003', 12); - T('34m9643moi5645kloff0lc2k8', '11353733191493162765109958504486133', 25); - T('1gjmm4me082gf7bedmn6944a48d6c3abig', '22657993401538002512673217109094636311397819841', 25); - T('1dbfd0l6', '4028639324', 22); - T('443147117026070130387352', '39737724767758401461831', 9); - T('770344133547754604246147776', '2382177288166020121939966', 8); - T('34806170568316', '34806170568316', 10); - T('2000220010020110122110001022122021021002202002101100222000110111011121220211211210122011102220220112121', '9430263244564363699327129166426166870352926916807', 3); - T('0', '0', 34); - T('1408054854833732408165393468129134240219856072', '1408054854833732408165393468129134240219856072', 10); - T('5cb3132a8b90c8cc5c8d10243b', '266140453841238714299979326165', 14); - T('152270', '1847985', 17); - T('14111026000144152', '53012937079839', 7); - T('514fb06b03ae4e191f9375228e62', '1649188801468585902988396540890722', 16); - T('gica0712b8g45ji39dieeihj38b3c9ahdh412e', '23270135840441636506607963274541746417908332352454', 20); - T('1fc020c94aec1d384d6939fc0b55b6275a201238e6', '46403408144166737594428754848567058468276133837030', 16); - T('23340350340466132353555624150', '1150738817150733757069179', 7); - T('10253000316', '298475673', 7); - T('3el911b9jkj3eja4cd', '243839699882594291978053', 22); - T('2l8275h1ile71nccmm511b2bdko2', '1236657450961741770578027094047122672829', 27); - T('1j48ldn30atne4g9pm319ajs5pt', '416383185377779055815558205572990151279', 30); - T('ef3608f1c4e83', '4208245717356163', 16); - T('10ioej21', '6288902551', 25); - T('120111120110220122002210020', '4378424224299', 3); - T('97h2dfg886g4gi6b58fhfh911', '46126311918607212312965582703752', 19); - T('d8gi6', '4433334', 24); - T('dacb2da4o9f7k2n', '1464835209320250160295', 27); - T('1oamd0eekoi64ehfabi4n7m2hfj5n7', '68606278289505370536462171548139088191207', 25); - T('263595cg8acc', '81034230587588', 17); - T('ellacdbn920kpgec5ei217h', '199907295253233852870341333748187', 26); - T('203301330211342344224021133433344413034221', '97522914206952615171825908686', 5); - T('26f92kg780dme5mo5g8b1pa8mlb4i5', '243826089597210290299504496901549601839025', 26); - T('1l4k6gf03', '150535071740', 23); - T('1fc9v2l3l3u161ewt0asv7ptco733c6f', '173787731730491489596204621593808047374649391899', 33); - T('3d', '97', 28); - T('10187086a12014347597a7', '7509462547837819682131', 11); - T('142314040103301030333323', '22732398342042963', 5); - T('51j5e99d3j48ei33dklc148ddm38hj31l7gjenb', '142386292443578000840331039336729798455275663535088563', 24); - T('14e10g9aafbd5aeac1f8784h558ad6d4b636e14', '634827726136703092193623226005666297523516017966', 18); - T('12laj1a9j89aed9k37b8cfh', '1023636874052341758796882576386', 23); - T('5016208620292365704037092632106487328146733', '5016208620292365704037092632106487328146733', 10); - T('56in43q1ql8085cdn7vopa7t3ngoed', '566008935658169643200168161957539183036996844', 33); - T('22s35pn5i1', '96833203005232', 33); - T('21g58a423675gb1gd43hb6ahdb5cechf4', '31056550222828623762491892131048679702550', 18); - T('m2m7o1mk5n5iem1nhg1m60t99k', '187177916478689826036137763116654591390', 30); - T('224bq', '1467049', 29); - T('2i26b4g863ja2f17a857', '37922279694690532644554800', 21); - T('r762346o82jt96r1sphc5jabqgqeajk', '5608490487827560829488032592521356647934247590', 30); - T('ect4olb', '31249474175', 36); - T('1020002020', '24117', 3); - T('1dk9619', '1278426989', 31); - T('1000101000001110001001001111100000001100000100', '37948338602756', 2); - T('daca1a0aab47147cb69b3c70407', '8680663224967641711152705530951', 14); - T('1303113130113203223212212221102033230300310201103302321232332332231220110012132010012302', '43163657603938060665271546922523188912463705523372466', 4); - T('sfrieq23hnbt055don', '368445731443436833015197443', 30); - T('i7c03j43e885j77ce94jdjahc', '308365645364868380135794239036352', 20); - T('6nhf47ej3f2e7m808h', '4044367825426498856375217', 25); - T('27147380099557912676606433547302', '27147380099557912676606433547302', 10); - T('csufgg1smqp3il1ri5pcgugua0fr9kfs1', '18860343033998469134466167856463713999512137252737', 32); - T('5gbg6d513f1cfbfb8f23e26', '7026912409111194787384092222', 17); - T('67beb095466748i6g6f1c16e1e1c0e', '77643205100110837901641527913924838755', 19); - T('dafoc28d4ihd844oj09', '195367712290739827433590009', 25); - T('2kd99n7e3f7hmadjg972ie3', '6614458529250547048035239167443', 24); - T('1110100101100011001000000000001010011000110001010101101010010', '2102165078632082258', 2); - T('50313234404041444204313100205345520142025331140404044', '148127386264832747696142468115120225091068', 6); - T('4frs', '122338', 30); - T('2', '2', 5); - T('2c7fh', '2211743', 31); - T('521627769aa9903ca2777282a9704', '80035204419629686507847889516653', 13); - T('1acb8e8c35bb51f0a97f', '126536489245502589675903', 16); - T('fhgj743d66d2afb82fe3097ech3k02de59c', '69380446582614420752469037047577265610011498022', 22); - T('13ljdao15c9kqq80lrprhomnp8h', '285719325945344921748137856736984663757', 30); - T('aa694h8gdfc5egi29ei9d76d60bcedg95f91ci', '2172203053088265616832262859897091710533691361277', 19); - T('117eacbdcefdf0a6a17f2fff826d4a3757e9a72', '6242361556294202529040777632205572383849749106', 16); - T('nbron6', '784196326', 32); - T('l61ce8p6n9mbm4eh13p2f83p4d', '5027409891709818675841213415466148689', 26); - T('133571757441551116445813870017686612348244840615', '974429239787874369080373672137480024198248529', 9); - T('2de56487c7306e350a2804a1c7a26a750', '126433237955384861849183674345949279775', 15); - T('1t0eskw02w9j0787kjvhllsk0uorv3rp', '554365961922175577358851876276185152369421121763', 34); - T('19a90b5297g', '3156751459983', 17); - T('94af3ka81ai04agjdd1jf9eh02kcb05eh4c19j', '77019278316732820000275934466986562978818961285944', 21); - T('2arg5f1tbbo', '1395878631103254', 30); - T('hfol59rdpaif61d0ffs4ll5l5n', '63700684237192600496984163750362294029', 29); - T('523215407441303043220321763763461205763333647', '28862443771771851434414707295001265420199', 8); - T('1172558', '638333', 9); - T('24547788612b797cca89561c91685305c', '1035822093635901600043042970084595452', 13); - T('297357a6913a0506230864ba0a40806999b5', '165423726645441709448459506175417770841', 12); - T('3nv1t16', '4811349054', 33); - T('11', '3', 2); - T('dcu7kkv', '14393004703', 32); - T('74jd2k05b41hi19cqb0b56c4ogldk61mbnec', '898558171987652192588434184021750232818244947634099', 27); - T('87017232bb16a097aa683d76a', '27322467806827082697027163842', 14); - T('33315524233101', '46920839581', 6); - T('428613775532906a631a669a07b607262', '1861425910744005080289960554061159938', 13); - T('2032312224134213012123140122124', '1994223287446852270289', 5); - T('d9g3jika93bf6687e', '82311084389009274810693', 23); - T('4g3mek2', '696240109', 23); - T('2al', '1993', 29); - T('2790a6bb3ac09c4132a22704d2d547', '1177464169231489879646847630186327109', 17); - T('ac85h2b60g1f1bb9443b2f6140gf3d23531c2', '16553297321499287941274783612999953493375468582', 18); - T('84cbbe378gi408a2g24c7cc701', '767458631826801795787229605068011', 19); - T('1', '1', 24); - T('2545050224042355443043313126144254255442454', '876893815708574640678938176379453669', 7); - T('96mg2bto', '253583237819', 31); - T('103257515380518060751732276470265252833018424', '1009215289986412660969292628675150865766422', 9); - T('9bb', '1675', 13); - T('213061078bbaaa19a59273794a46402467905220517', '4454029219153574030222038736662990993813474531', 12); - T('1404', '1404', 10); - T('4hrlw7ejvwsf5ks8fw1kakn', '11598871980554104486046361604542989', 33); - T('hwohlkmmd0wcxl496krx4kuvu', '204793993426728369555445184850179150990', 35); - T('hxokubeca', '40450292757955', 35); - T('3gp2122gp51e1jmnlmc6jfe69', '81710274994239238611207516341652249', 27); - T('1742', '7006', 17); - T('1222212003002000102423324020100242030', '21822773039447439961337140', 5); - T('542400122414150021231341152142123', '45688850379684810973948803', 6); - T('113142622818152826', '19181680787913279', 9); - T('1725ab', '1516971', 16); - T('cd590583dd0fb4d2bccab06f852', '5523664634945639953514439685775444', 18); - T('fcqdhgpjd', '10123224125083', 30); - T('11000000101111101111010110110101001110011010001011001011', '54253158045164235', 2); - T('5b52e5ka259kcmfeg9bam8m', '4982195858013579020225977318933', 23); - T('37102705430230406225007132550325075', '19731384956592254443851247364669', 8); - T('62187847341581405083883177441', '3269223553709039612339577952', 9); - T('1', '1', 7); - T('34acbca', '16279598', 13); - T('7b1dscibt14j', '186913558166857804', 31); - T('3813872748312506470161272871424048420854', '64160413369317212332708670220456731959', 9); - T('1b509bg3', '2000076723', 20); - T('19', '28', 19); - T('1e49lnh', '382576217', 25); - T('1011101000010110000100000100111001010100101101011011101001001011001111001100101110010100100011101011', '921454163161847327849553938667', 2); - T('26654765110654444621720', '210641979748604126160', 8); - T('4', '4', 20); - T('233j35tjr8i', '1242415162527558', 30); - T('2ihc6g5', '188418725', 20); - T('14514222035543505233324403513154511132', '112236158532531500922346262912', 6); - T('11780822188440823003268608463462043302170765', '130234632675642352830843282842679037904699', 9); - T('ca6g776665362g312a759d0hc289ah', '31803568025214749779356446816303550281', 18); - T('3c2143412ahgl7gkd7dj56g4aa032edl5ab', '15579825921597836295227254929575079744069515235', 22); - T('b688cabb4a880463a00', '1294695345930300972346', 13); - T('7gb84b2e8ai22aeja43fhj', '16417614158933628179168670359', 20); - T('2b29fii0ffb453799099', '5116039768857765569837805', 19); - T('4j0fl44j0jifd0db5m1jk27lmb2j7g0', '1221597028986776804949762637681448487662400', 24); - T('1102200110020020010111210002120102000110001011102010110012', '2249432091384144139655815631', 3); - T('575257272', '99966650', 8); - T('21412332322000110322224410114133331204441322340320331022', '658469531400806135753913612265079464512', 5); - T('lbeexon7mjw0a', '72065470380896239460', 35); - T('11002222122101102201200001002221120110010', '16658525175081901887', 3); - T('2cbm6ghalhaf0jecd510eh8', '14205312878701722696609668368558', 25); - T('i5f89347h0j3gi8h4677fi5a04', '583695524553451988357837938643879044', 24); - T('2jjl4mk2ba6ab4f', '104001036849709538240', 25); - T('11011110010110101000111111000110101111000110111001001011111', '500696147126612575', 2); - T('11201020021211102010000011211021101021120202020210002011110222101120021', '3931899899409076416396361943543530', 3); - T('132', '30', 4); - T('1ah3g6f9d9df1g3ided508ia48448d6hhgbgea38a', '16965212814601045549441068611275594500781000437521370', 20); - T('6237a6ab64112b2494bb05a722886a55a2540', '4388944420159332022712765742793042396800', 12); - T('q72a', '859210', 32); - T('120412252325053420430240504004014444424440120055', '5062770525903140764486411269774590627', 6); - T('295d4bnfaqdpoc1b20aqjr1cnbdbkpe2g', '47436826040024452612254699971551679789734617832', 28); - T('67716235176889702569725884201488570294266282909281', '67716235176889702569725884201488570294266282909281', 10); - T('2053235221113252151103025044', '2205439986612091266100', 6); - T('331', '127', 6); - T('135411345210555202432511042142510325514134213144343430525350045345', '630257158895680511354194148657769220873851791365505', 6); - T('ncgw536u3', '52596306137028', 35); - T('1br4', '37714', 30); - T('ar5cg3h5rj8jpdoe3q4cq3enr9', '16565568581597008816111159366077297901', 28); - T('dgmjoauv', '464615386079', 32); - T('4411066504304310664', '7482831387322120', 7); - T('2ie17917j22aog9aaekd76', '3074217943693005788722019767635', 27); - T('7jhwhw5hwfw6t8u79', '24155077979418001247241407', 34); - T('2b8b00d67a9af7f532ff749683bb', '4464429849532419014043873313196703', 17); - T('333201021222132001303333132200222320010300', '19197132799297047545741616', 4); - T('1o2rba1ab625lqg2ap4tjf6db5chq', '5706946668967398466318375257987680829296303', 33); - T('3ba90478b168103a7864b1c6b0b62960bc316', '49439560619910889109663125468488809074137', 13); - T('uh39vdq366v29506mq74', '1209595543050368363395591923940', 32); - T('17a5881b485a3a3729b621ed24851346eb44e526936', '37635985091401630307879776080822155210816748779826', 15); - T('3', '3', 20); - T('1010101001110010100011100110011111001011001010011010000110001101', '12282035710234042765', 2); - T('3p7o5m2pspogfa4rln8kaa', '19871208148630067099353934028190', 29); - T('444hc35i9e91', '492075654378634', 19); - T('dee149', '14606665', 16); - T('8d6lcpobjgcx8r79vwo91', '35747137599516159959965340852451', 34); - T('1313a30663415072a5378a573a5004618', '2710898421116005898719133773622357', 11); - T('1a2ufr79n7jkg', '2177788338840118042', 33); - T('11123413012404012202014420304221', '5877498546826679463061', 5); - T('321413111412432', '21207529117', 5); - T('d04552edgg3j5i30d1aebcg35319h5ce', '279401733817838264163142101327955396778254', 20); - T('65230302412105526230540564112431212010546410325343324336355', '70128063903609250369648995014131506639349252995600', 7); - T('122135222500433255020341512552123313545535005021145045415', '52664708035958260940426227456273342924406099', 6); - T('2405352063454611542614252613643', '58322141881707592214580663', 7); - T('331', '469', 12); - T('15', '19', 14); - T('4og0nttk27itgb3kqcm6if', '50395967140764173858035932119955', 30); - T('b163a1d14c43827424b12db', '182084380520360792772703409', 14); - T('0', '0', 24); - T('0', '0', 29); - T('10bqg3q7ide7p123982defon7gd6gn4', '8871455511993695280948914558473713435679678', 27); - T('8b5i53jdflg33amn975o4em75rl', '355133268860557842919835043492122626201', 28); - T('iif46p31b95vumvcu7t4', '2324168331442784232456379135370', 34); - T('2bu5a91hcjjf5bvs4llmt3mlv', '3154536200599521483056493747395222207', 32); - T('101776827305203208883833456438314282601147', '1361051538453470393031244031499904314100', 9); - T('a7q6ce8no836pi1dpb1h855ifag0e', '123260072425789697349589714923797010531053', 27); - T('6an46', '4507041', 29); - T('c85100972abcd17099d6436265a7d00037d15669c2a855', '47428482751140063971988445268995152371199255649614715', 14); - T('1001101010011101000101110010011010001010101111001000000101010010100001100000110010100001000001111011011110001100110111101011111011000011001011000100000000011110001011111011', '3615489279593509708772217418002107077942788107657979', 2); - T('472ac263a709338a322', '512265232277236694323', 13); - T('3bwf', '143235', 35); - T('lakj6bpeg7qk1jhp82j5718p7dm00', '708768256027400694345310993664646688588064', 28); - T('3', '3', 31); - T('3l5g1noh9km1e4lnlcmi7hk24lkfn584', '83462512429809308449012708265095091998409579', 25); - T('1602o', '1102353', 31); - T('bba2100668676a123b8969745542cba', '31194377870767966662985925118106525', 13); - T('31536413040', '919850568', 7); - T('200110021212121222001222201201221002001212122212121112101', '1073167764274370737333513450', 3); - T('8d5kj4ppha6o5yywbpaork4lfwln3', '143529562916204167813572705035194801747117283', 35); - T('115200231503212201324113232151432415611206413', '19119837827416003266077275103148717672', 7); - T('h76b5b9dhebcf9bd639fe3342845c', '11099864955326032429942032083370594653', 19); - T('278cbbef4c3b7a5cd3ae71e1', '12240052494575754714578579937', 16); - T('200020121120002102200121210010001112121200112101112222120021001012211022021020201200122220122201211012022112', '2284936355530730650861310432484515232422851367913401', 3); - T('730d9080c5076bbe550c4d', '35932875541587203941802773', 15); - T('7207565613527210030', '130876365269176344', 8); - T('55a3d', '207815', 14); - T('3g0s38r3bt087aqrmi1tn79ia85gmeh', '1936565240398482832728717768927271259807794475', 31); - T('1i28p44i9akoo65c8oo9f3105g8kg30gh5jg', '56680776457726013494388507242577969396880764644890', 26); - T('40hli90fef115b2gbd', '568985677342288643620301', 23); - T('5921161174358003708931086151189129598336753', '5921161174358003708931086151189129598336753', 10); - T('7b9ie9g63131ge5961ckc9eigg2dij6d7jbi', '143022933563074189781666359143199930960782247692', 21); - T('1fjnlg601b60e', '362500102776455854', 28); - T('2570b2cd172507d801138abed2', '2966320491435734983427362569938', 16); - T('16d7r26k9f', '13024515303115', 28); - T('11110012020002022', '63875771', 3); - T('44uu1', '6945049', 36); - T('5roia7h50d72egib8dc0kbgibgc3181l', '4362559620688171285632591021024625499868373361', 28); - T('7a61cd850ab00f4e75b8fdd', '2367212971376424991309139933', 16); - T('2ggm3d7dbdijij6hj8dh0fk1bki55l11de80k8je', '349289245969708219829891150618982716299609391061246124', 23); - T('6f7bissn1u9k2a2nds0jcyqf', '2099343598521464701612621568865662700', 35); - T('1j50dok9ppnfnb712ai17q3aeogebg', '1563779391961982516054733166515013611227172', 28); - T('100', '121', 11); - T('152003747a37c191079b493a', '58307629840901487900667265', 13); - T('12a550842495600aa183242674b9354cc40615469b78', '964513977187218862668336384529626864441099542359', 13); - T('1', '1', 7); - T('1010010111011001111100100000011001101110111101110011101010110000011011001110010010111000000110101001101000001110', '3363864999018073552305148875414030', 2); - T('2a388957a5626004a648219068853a80843148917a', '14639334203511394499271219968495476019919238', 11); - T('178qmhlmomjgu6n907urpggfgm22bad8t0v', '1836865714504113766258732956737909765209405609243679', 32); - T('39qp1ndaj7i2kcors0a2q9g0c3tgco', '22852659824082944134646404893585993114827784', 30); - T('1220243421341234055245501432452205215131515413023', '31231684169839893198944772635028600039', 6); - T('1003331113233012121222210121312333011', '5014483212176774885317', 4); - T('1460300646123356400652060261434153321405542062433', '62217170078805469818735068808101425405148', 7); - T('618c3a055efhb78dfa09e5e064', '146515377058619956051290383262640', 18); - T('3243111303430002444312342434243011132433431232433320413034233', '3110380362244237009969587203947233566143068', 5); - T('34ckfdrm4akdmpf0nmk3g9r97m6635f', '234784623328429291304866563544367892203497462', 29); - T('2fh2b', '446851', 20); - T('2133221031301122232332213', '702121681547175', 4); - T('4dj5f7a9kmdkd6ib7h9h16jl75lgdg1', '39344152861693838773867535837606678058786331', 27); - T('386bicebii369h1kc4k00e7h6j4c85ibe8e68i2', '596047102194584014318473702865419545819037150251222', 21); - T('252c', '34437', 25); - T('1c46b1c9ef8122e5c0809', '2136485514231402911762441', 16); - T('565273142344', '179884362478', 9); - T('fg8ckmivf483', '558741734364254467', 32); - T('3ff3kcevj5hawuhshs34x3oi3vx', '22740752524651070386437452324283746717307', 34); - T('10110111000011100000100001000111101011000010011100010111111001001110011000000111100110101111111111111011110110111010111011010000101010100111011000100110010111001', '2090116485561415533220743961894899901833660878009', 2); - T('agc17', '5638120', 27); - T('eglk3j68dgack4', '12888395715127982308', 24); - T('28gil143c52a', '5595221231831310', 25); - T('66c152b47c14a05b3610620', '20983529061179635723774027', 13); - T('15dokhdbb5', '70366773099039', 34); - T('1a9501016a5512889b2993544451938993b91652b234', '48223308327186227572954772551054429866630121864', 12); - T('159a345bdf44d369a', '24905827046438811290', 16); - T('1461e', '65504', 15); - T('32d7b08f520g228ece8bff5', '3716536139742781837934428348', 17); - T('101001101001001011010001100010111111010000001111110100110010110011101000000011010111111110011100001011100011111101100100010110000001100111000010001111110', '7429426803493479456828449389493437652073153662', 2); - T('6kc6bk6g03', '131487097676403', 30); - T('34hvgrjns4o7', '411305032746097063', 36); - T('45heh87j', '25806520819', 25); - T('2b3foie8kki6eg7kg8e1j2jb83ka43', '2224972752466567394372343513970647975249171', 28); - T('1b51n4bcb5573mk', '53946798171681752445', 25); - T('1neq6n', '31675359', 28); - T('1606', '643', 7); - T('i21d7ef5b658jja4f4ch63a6i7jflah1', '29580131903402267811587112773000293466018906', 23); - T('1crq7057b3lo5bfd1p0bmrf6i5mk0bn6bpme', '2209991301392227713894588972684184312154769557819480', 29); - T('1tk4sj7hb1btm', '2220446801040814006', 32); - T('2582642852065202685367571622548333884509', '2582642852065202685367571622548333884509', 10); - T('ddeh10je03104h2gj9d297e005e25bf702', '117571564833759622294922629069619346065882802', 20); - T('7dd0aa8c145447eb92707ad1d07', '159489590003544512404938984070407', 16); - T('6pdn173bn9eqs25mnf7go8g6p55ii', '609026075406678657195419482812059187779088', 29); - T('c9h8075jkbgce2bhje7ih029', '32124773769478466147508433993026', 21); - T('5e47t7mbkd4cmfkbka1e7', '23078675295563054872571444265175', 34); - T('1102212000221210121011', '15052511263', 3); - T('kqnpjm9mkj41j5gq92a6en1e3p53a', '251372779390673891723478386066935182969151', 27); - T('130c449gf', '19695443734', 19); - T('60127615404142232301236257126373142705430101557417025270', '281610543490460264519467262765660796455848821664440', 8); - T('d5ao0joon475j', '787826660155535769', 25); - T('85099cba', '526401184', 13); - T('orjl0mf2l64mih7famg', '5251853940693847762549796320', 29); - T('24b44822469ba933aa9cc564a0b792345', '780612549310309792407655025164475245381', 16); - T('1', '1', 12); - T('308b94918920047775b056707915397', '726935161157046423838017053561059', 12); - T('10101101101111010111001110101001101001100', '1492415632204', 2); - T('1af515d2006312ae69biha', '1120313283402535131518464857', 19); - T('13', '12', 9); - T('4244', '1502', 7); - T('4724f245n6f154h089', '1249114287744755126982345', 24); - T('13243040401001003123201', '4093805177786051', 5); - T('11020002112000000121010022202010112100222210221102110011021', '6634494201815577732081058297', 3); - T('5b4dgd', '28394225', 22); - T('6272ha', '15166304', 19); - T('100011011100100000101110001000011111111010011010011001101001010010000011110000111011010001101011000010010000110110001', '92021749248802288107686447118623153', 2); - T('2i40qec7pqjm10', '26939109963617553388', 29); - T('402104a166592b6016aab40a2734702872958605', '4916982450386947278439429436768334682151525', 12); - T('77c3922084b82910c3086a43cb03a4', '1533937693030670114672009321321763', 13); - T('37f3ddigh3fa1e31g2j45d62aeg4gcdh56gg9', '232818880109822059294086716237622233513847254729', 20); - T('151a97027746544a0007496525666a962a', '34163769708560970311913160174313395', 11); - T('24n9g1bf55depf641q81qfgj2q3efd', '704762263092344530284533783215679804998393', 27); - T('323079876474415845475805249641768917', '323079876474415845475805249641768917', 10); - T('k9ghe4a66r5kt8euaf4l', '804063141258299683011907894421', 32); - T('1ljejem5hm57gjjpflpe6kml801', '11306564293793981256004374145021939273', 26); - T('2a0a2b05a7', '14649964111', 12); - T('7tr60m', '412336247', 35); - T('11777165574076763721455', '92219848663426376493', 8); - T('4llmg19ke36037l9n', '211068244533390000747325', 26); - T('1k9b669', '218681021', 22); - T('a5c3b8d2b440bc7c99d', '15352022411228212540798', 15); - T('145124424214052201111155025520222', '14423786224168117069403798', 6); - T('78a3h7p', '11190615491', 34); - T('110202011101011000110020211200220101100002000222001122020020221010002001210221112100221211000222100220110211220002', '1163746839236428869432018441230348532163437184859997503', 3); - T('104502', '18426', 7); - T('2ccl1dcoa9ke9n4acjoii97cio4g7hpn', '181430764600829521764547344057062011723425949', 26); - T('1g999gge8f', '234124479585', 17); - T('2102122000222201112100112012201202002102100', '265973195855731931784', 3); - T('17pm3mbe4', '484680719548', 28); - T('3ffd9eb2i9bjbd3kffdhi6', '145319854130204054939620248184', 23); - T('7c6bgjabk7b77cb02365356g71462lf', '141625763379595196233525648980420679263893', 22); - T('7hjd27j7mi072ll5dj6166b0701ffl', '24036455572105994456221585880207038384542', 23); - T('1drm5e6qurifp4c', '2578009544187725538837', 33); - T('hhg1ca1h1e44dehd3cbjd7', '37518475324760931197003615867', 20); - T('1lj47hb7l5mcmbf1cd42h1hh36cjiak0hbkj', '891983220438694620232014357960845056377943934222', 23); - T('1uhkcq0knndgar709ggbgktfq2skchn81s', '32579224663928263100000786859064490006605648315352', 31); - T('1cacd0gjbiqo9gembo48ojrkt', '398669520541557676768031831110377929', 30); - T('1014035244555111523450130114241515', '49986724694411884036240919', 6); - T('k4jn6e9d6glnigblcgf0b', '183644159120719141946254946886', 25); - T('10102311003323010321021122122111321132123020213312213323123211221121001231222322031', '25103947154379810646139325622747166556671557676685', 4); - T('50ahfeachacka3', '776160684509952255', 21); - T('5gf39cg6a6d30f70cdh77', '75670880512894340281508401', 18); - T('3i', '99', 27); - T('5799c79ib6a7119bbbf1362e2f07a3a75', '448835587235333894824032459146597136265394', 19); - T('20199362559584384642', '123276124968958033085', 11); - T('14f6dj7bij792d6273cija5g5j0cb9hi1ggc', '4254894585269962546595403514332354881913294732', 20); - T('9982bc1097968c8c3b610c47a14b74b861406486124', '594597577726034824881214857458527499759845362913', 13); - T('2542204051144325114301201212455', '653347659057319259531891', 6); - T('8bc1fs0q6', '7136460415847', 31); - T('12245232344501421', '3982268425045', 6); - T('435708bc337', '587768670171', 13); - T('9gqc89j93bfm4', '2230491747853233820', 28); - T('a15903691c9001b323a09395906', '927480369551047749189616833196', 13); - T('3g2uaml4gj9rdi0owqv5e3fi', '581742884070494714992134070640198076', 34); - T('179ehi909125bc0b3i9e4a91f522dc2gfi', '2206014001526987616423852615240896648228754', 19); - T('12010211100221020022211100000120201000000120021010221201101101212121210', '4290236792225220853841200359967002', 3); - T('7k', '174', 22); - T('1071610', '578592', 9); - T('22000000001210211002100001211120100222010001111001200111000021111112122102210222212022221020110002120211', '37107607574596122561009019100775525141832001665669', 3); - T('1nkqomm3qifm695cfra0hicrl9k6o1i2ioj', '29519803751298537211113975613679446742819642561363', 28); - T('1158d8cc', '115976908', 14); - T('4836398098bdb7c6cb93bd3ca2bc048a69c614c84', '32124850151621055288011165638934576325866972244', 14); - T('ek5ag0l', '3615400646', 25); - T('d4de8jakhg46gg8ke52hl3hl64af8h1g00', '11417779761519995781476451771964854089342166669', 23); - T('2gbeajig4810aab745afki14', '20666612177047863663274280987634', 22); - T('218k2c080cikh9eakdhbci94j8fgh', '79894697026629332310714396980970566525', 22); - T('46ebc2ha', '2680633108', 18); - T('35576422324763736', '1046634462177246', 8); - T('crfjig2n34dsuqnh0bgco', '16300713892509942649067256791448', 32); - T('3fljnn67qh0he798q', '2550626756903000471191471', 31); - T('10110001100100001110111010111001010011000110010100011010110010010100110100111111101111010110100110100', '1758529900728895870358045306164', 2); - T('105212361216153102535206354065633406325425223013011', '1993490998659291300161155678289157518972908', 7); - T('c4244b59g5c96da003c464332', '4155898790145483848870845049775', 17); - T('h', '17', 18); - T('100102122000000201000211201012010010101212012201120021012102011000202002201002102221012002101001212120022121011012', '861002691662158159012861645549677449067811598994275093', 3); - T('200000220244012526360023', '54738028206812706724', 7); - T('45025334847078362688008185858168724', '1268020314482631821675827535583508', 9); - T('85804d0f7992aef5f63', '862732012489613736899710', 19); - T('5mq', '6197', 33); - T('412165', '70411', 7); - T('3a670f32d8a0d0c5fe1d860669e0fa790a28', '5087581870263472260351886848536796076771880', 16); - T('14423420134', '108229018', 6); - T('3cdhij9b1o', '36452913717412', 28); - T('c38857c477adc786108ddc50913b', '108114098280659403543883930629969', 14); - T('4420623bfbcg0cea952bb74', '17465324511132004366053468166', 18); - T('76ebtvjipk64pcgeom', '469643266496008087961694799', 33); - T('833572012939455360689846300738643973735', '833572012939455360689846300738643973735', 10); - T('532jlutr4mkwmokrkk1spv29jpx2d', '38740672047259297073570474824972320124549357', 34); - T('1e7lwq7lfibag8x9g7', '249581188294471901155422092', 35); - T('16bpm7d7hh9ia9ql6', '175490655969459169683378', 28); - T('22', '22', 10); - T('1da6f2573623f320b0d788ecg77', '176650893165944234984783472578532', 17); - T('b54c', '31232', 14); - T('106d31a9f39dgg5ca5d22882606g1a166g1561937e65', '83055395658429905495429379420525542544257624906202499', 17); - T('87167783686580b6760546286a7005', '170003347235677664923783013736773', 12); - T('1011222012101', '629272', 3); - T('5e4c1kg8kgb9e0j9b', '8121399895030321436429', 21); - T('120310023320132031111031222201110323031303133', '479999663316795249342078175', 4); - T('2581695437092034322608281300193', '2581695437092034322608281300193', 10); - T('10b31379b4421', '9613231649881', 12); - T('fjai0pn268g32oa21ekbl2ee9d06m1idg', '29945640848113871009545458332782939996039036978', 26); - T('2242152541332302355454225214033201', '117239748984429205550000257', 6); - T('515335122443035', '3564199709740', 7); - T('143c0bb001a4313735185c73', '55571846248867914153487159', 13); - T('b81h6f61', '28354183265', 22); - T('b5d3ab57023c', '46265651034958', 14); - T('3', '3', 12); - T('5a1je9034nek74n9586cghc3', '301192022551379992935349177894755', 24); - T('6085chb9dbadgd17ad', '13171586833706983780981', 18); - T('4982a53ea0476cd120c6a38c8c5d964b2c068', '10126556364355015871790928748398484260463723', 15); - T('kc9g3uegiyvlshvrtdvx64ln', '6639598343399941171297097806956821033', 35); - T('4a4acc500818db', '3761155193407385', 14); - T('20pcq1260k', '53578455065104', 31); - T('321r9j1iqm9iqdd421ik', '9631620548977442780416929948', 28); - T('244ga3cb25dbf9f00b9gf272ffg9gd46097e', '26204733276579768210781207022287836057779358', 17); - T('9868dbdh147fceg49', '57400460873969103003533', 23); - T('222604', '39400', 7); - T('1001111000000', '5056', 2); - T('ek064d', '76838973', 22); - T('1a5188n3h1b0jod1671hbb9e9a5l422948', '19083115540402109213773674981974542272012536983', 25); - T('338912e9130a4', '420150545582779', 15); - T('17b6490b7ad35b949236027026ac1c55d10472d8b07', '2138281111827887420594645460315403726459746303107', 14); - T('9xwfs0gwcyv519', '1179101895976769853419', 35); - T('3ah4m2145foj5', '204295666789312355', 25); - T('b02mmltnld2jnx', '1301255465101006358613', 35); - T('bc45885577cgd2a67db35a5d14ca3c17c', '27753918928513171463189805378534573507156', 17); - T('3141201334301213410030010112321334303004321104142122430444023001310200043002', '89237897287660630346174371948143819745060364170706002', 5); - T('11010430110321', '1476410086', 5); - T('dlqp8bdh7i8ldf6ii8', '55089869930926033233979040', 28); - T('366255123122311123125', '4437634644479092309', 8); - T('11b2b2b57830934b307aa1958', '92329386229213427978411540', 12); - T('2a111815915', '175903352801', 12); - T('rrfshm3nx845epw5rqh7ti', '4029249737737517853157864145330896', 34); - T('797ssrfvu21ikjwltpjeiw6rq', '20251792508585042855691553376521064843', 33); - T('1231751346340466252606553475546101570554617315561125473', '7603872826618045742580005490971103946545668860731', 8); - T('1f1h2gqak41d5k0il1pbicdgpddmsr2t1b6c', '23416799607567184928718366393017760124104542135755195', 31); - T('9l1cha2o1do4j9cma', '427797075500712961988110', 26); - T('56322319981030', '56322319981030', 10); - T('76cwfnedn051qhit62lftaek9t934vhhasm', '30649878915096954532359678848211944230048706163888601', 33); - T('3iy04whwds', '279168468016683', 35); - T('1bsjgq108cagj', '1581450458898508307', 32); - T('4', '4', 10); - T('a0aq6pdf859381b42of904', '24599377046503368931010489086420', 28); - T('855c8e9b7922e67e7ba4da908010159', '1602902410787815193041624442766566559', 15); - T('55311312112233002243402130211312155421350340514451512400', '37223961907514345278830328700560172586461424', 6); - T('1022013123223003223300322320201010', '85450081323994286148', 4); - T('908710466301120434499886628231275207086870624675', '908710466301120434499886628231275207086870624675', 10); - T('8e8k8d4chg0b663e0iiikicd084ed7', '7370809038638046077658634722860915413949', 22); - T('2bm2pe4i87cj1k2l15k0nfnnh4', '581467039424523178429739030625165794', 26); - T('1ncooa9r', '38948697297', 30); - T('bipk4coqlx4m5w2ixtt7153oq336', '2585657693309581263603316685828104816727144', 34); - T('1h0aa5a1966b6ad64a4447028d107hgf7a2ah096', '17572273698356237543052229497274331150348443287504', 18); - T('276544434422885080212460407577672', '276544434422885080212460407577672', 10); - T('110000111100010100101000011111110101000011110011111100111010010010001111001101100000001000111111100010010101100', '1985345177021823592895244450907308', 2); - T('1001110000100000000000110110100010010101111110010100011100010101101010', '719999719481543869802', 2); - T('92fal9add', '1002804039109', 24); - T('a4hp5lh4dc2npkd6fa3jjh0dm0mgg687mqa', '47185254555192750689361563819892235471735779772486', 27); - T('15d9f04b1gef9d08fgfh', '934578487538888755916375', 18); - T('832913', '832913', 10); - T('4g1dq064c6ph', '430443150310562742', 35); - T('2413dcab4dd4acf50d555c028f9dfa7', '2997208574424073828351508066743213991', 16); - T('5lb1d', '5942317', 32); - T('12b283c0fa13dcbgbg3b33d95g2a39482424', '13450882559601947456920748168407415837877954', 17); - T('111100100100001100100101001110001101011010010100011010011100101000000101011011', '286012825709225924788571', 2); - T('5312521314325345320414255524522421', '264602503512316272185020237', 6); - T('4h910', '521982', 18); - T('737685bb6532393c7ae4kga8k71g2b8kli2', '31388007356628532619060635382380018033403436610', 22); - T('3fnjmf', '61371367', 28); - T('avvrce29ic6gnaa0a8mwsl3m855im98u6b5', '46733255380075003831663039424046041165133968062385816', 33); - T('14750145321891718544515464840373136519875', '14750145321891718544515464840373136519875', 10); - T('535563217273266762141100234605765502234', '113492301891561204235365568461833372', 8); - T('10403204012512222022021335534244123', '319087493465006318567376147', 6); - T('2b518a84c986454h611221d3f687e2', '6642461774183699172360267164698027418', 18); - T('232111223201301', '777435249', 4); - T('2g73538gn0qj0m89ik6m', '4085811882054081271200217927', 27); - T('j28szlkk5hwfzklssj0f', '7078218218729352925375627288383', 36); - T('14715687608876514226036405014660867608606525724', '120428847967260029520597138950650653087280057', 9); - T('kpp941t7q7udmnai4x57yy3602ntyg8', '435254642075720789924201732136377372350529359343', 35); - T('11010111100100111111110100111001010000011101110110100000001100001100001011011000110100010110110001110101100111100111000110010100011', '2292419381743847793952323533642807872675', 2); - T('1657330721157546300772313767037603015', '597965777884596169919754548479501', 8); - T('o4', '724', 30); - T('413310344421231413322303241330043014343010000443140423313', '6031086358432186950670068161163571029833', 5); - T('2g5k913n7f2dlf1bb0a39fkcaa6b6bn', '682270546676077618064623251305670646415519', 24); - T('21a71aezu3ea0izwvu7e1tluykn', '59233443885800213081870684139782121612167', 36); - T('4e50ci4dmn55ebb3c6kg9', '18459998608205280317028086409', 24); - T('1nb05cm44j2bd8jgcl6fi', '79142228769239865835175770884', 27); - T('2434241221440210204311', '1409805166881831', 5); - T('701711416205015540454465462370167111721657451163343320', '5136876924230800291846439025619119075547100858064', 8); - T('3f8n1of2a38obnl8ep11ecd', '110253233544146089611390491118511', 27); - T('34t', '3036', 31); - T('tskui29ucbiu17gpko7k1a6kpdqsa', '98535358769443740139966556351639343186441328', 33); - T('430210103354454023323444555113024234125300210122242', '3645392594482175303918584334169722751506', 6); - T('140687lbfcib5h5', '13615044335277161621', 23); - T('cexrtmgibat', '45391017618162101', 36); - T('kic4b3ma5nc2plgpgkpogfoai92dng8oj0mm5', '69938518380225983695147679294614413330181200341989838', 27); - T('ahj8kgo5925m5i0054', '12112057029207057322038214', 26); - T('100110100001101001001110101010000101110100000100000010100110001010101111110100110101001001001011011101000111001101100001101100010011000010011010', '13424243929007150060864059623182269932449946', 2); - T('67', '73', 11); - T('23362457004252530156262', '2342754483992148575675', 9); - T('3011202121101030201030100303033210301111220112030200110', '1001633711617655191899956991019028', 4); - T('137a892549638a9837a917a7666a362251', '7350842488951219051870982842648687535', 13); - T('b4ikcmf69e2ol9djiho334o', '63608428236453413618284599267624', 25); - T('3t4ptor60wd4kn0n1', '30316095985110696140429053', 36); - T('5', '5', 7); - T('64uiq0vl3orqb2q80', '19593826409773818947256632', 34); - T('628el9oca6cf5l', '96872666241776197671', 30); - T('11c6027fb07', '1221383944967', 16); - T('0', '0', 31); - T('231302302223322220011101010202122003210', '216254277740074631799012', 4); - T('1ejb7n9hn98fdko2b82omid', '9044494589730121024947833201713', 25); - T('dec57b8559i0da03202fg77e7ihdfe57d24494g3', '1024122312906876955463549547517122427306089572501789', 19); - T('oomkd0b', '6102664386', 25); - T('1lpci5r', '1259890377', 30); - T('f8v1bofvwns0ot46cp03bwel64nvjeut5', '155217583886970469124492270430014237032433826545559', 34); - T('bbgb8b78016ed4cb3d5e354f5af4b0c5312c4079719', '55874981774696748806533238208646256520967064718000675', 17); - T('2a4o3cabjeghak61a44', '35040210811575576369553229', 25); - T('hci0h6iifld5ff5ilbk65b48426nm9lc', '107241447290727904013766223879143355844274756', 24); - T('70nh5l498afi1gke4j26e916iaob15', '761187094370053383900135740007646208708043', 26); - T('3c43d5cv5ddo8wv0rqjw', '727519923745015769780970587047', 35); - T('1je3a5egj4709cdc4gfi9c2', '83275359746814050652469747842', 20); - T('6a74799742895178b887', '2199503576725308160807', 12); - T('7835c68b1', '6228797485', 13); - T('4blcgo2tngsc9', '2333273210661787569', 30); - T('1g0cc21kionpi43ajcn1bpb7i8dn7', '6725433872501710944890249791746813975217', 26); - T('1hpbdn020l6rhf3awq0hpe09q77856', '167486908631010808846811171655656010754677429', 33); - T('5epinj069hpeommq0p0a', '33648845471194696230841845068', 29); - T('32k8ee4kiedel4llelc8e4ie', '23533597718626777596381780445114', 22); - T('2c32db797c', '59370297194', 14); - T('e65a208743664c3ba599a15ad608eab43ba6a9ab52cba7', '1211237383851901761546703849501641437474536862403847507', 15); - T('f', '15', 16); - T('2335738633324401748700117607031714222313587', '28474989317702039795653269668144118345370', 9); - T('480umoz559ibt', '20009609804381113865', 36); - T('g33g47chh933gg', '679936669195392700', 19); - T('f3gcdd5e82542ba316483287377cf1d22f101d5448d', '72724582067825296668190966379135599043646147680532925', 17); - T('4j3na18o4p0ceo', '30452392062677782368', 28); - T('6g8f47d79h9f638b0h', '15118189433563577196653', 18); - T('676j80k4dfcfe18kkh9', '4005482188146748168521174', 21); - T('1001101010110110000', '316848', 2); - T('137147352425256713737330565276377404642163711477430', '2123077029185636827747635674055058793964142360', 8); - T('3132230032110133023222301010323132020003013002232133', '17643398431162255932320877652895', 4); - T('68ugt8', '328443123', 35); - T('89jedji105c7att4gb6atoq5n0da324cpr', '136322375391388103649786958602863047119729868881023', 31); - T('1ect', '43646', 31); - T('263052612663632623450322', '79933753083194935136', 7); - T('kkncd128450dnngb4e0006jn91jke9mcem', '73549583692565773010150654459903537277634564198', 24); - T('mlcnf05opd91', '83782165337060295', 26); - T('fj57gm406jbl3853lg127fm46igifb5knd52bd', '18471318386634651669357017600415819167888436283401109', 24); - T('d7cd254c4b261358f8a5ca', '260887824373193911758792138', 16); - T('2e266h0', '94725594', 18); - T('38d1adb1f0855eba75gac818fae4e3ada61', '2406025984446729980588911310762723226916599', 17); - T('969vlp1nq0cmdg4p', '861520870277679404136873', 34); - T('284357144735', '92362940285', 9); - T('miok6n6e2', '11330609651475', 29); - T('200010001231230121311320032101101102203020', '9690422491199883037714632', 4); - T('86gf50d54d35gf0dc0b41ebab6847d7h2f4c5', '90668674464877887390632519960182768841029658717', 19); - T('2ani4r0nhig1gbjh8l5kh6kk2prmpap38mkrb3', '837057992878003710672168205308141026264831823314103527', 28); - T('i7vbrcx6k9', '1436460800474184', 35); - T('73iah', '5767517', 30); - T('6438038702116a311387638837207a68073a93', '2174370174074028677328289240479077494102', 11); - T('m259bbnj7a', '320249541066343', 29); - T('113130150532102045044452115001025205501441503430320114205434101', '2211604036567285168567876925597855231015638757749', 6); - T('535188052007887974548621926768462151300749858328', '535188052007887974548621926768462151300749858328', 10); - T('3e7a93dkfi27dj1bfh9i35c3abjcg9fg', '1505256982398481387593340874013583945570174', 22); - T('1', '1', 24); - T('gxpupp4', '26250856922', 34); - T('at7tc8ntw2om38gg49r1o9wc', '917677889249261147737339445563028676', 33); - T('93n', '5279', 24); - T('1290c63c030979049c3c076649b408bb37741519bc', '5669935905784594135179408409816347268201188910', 13); - T('258peq2trq01ocru', '129442317021809162827266', 33); - T('254767174882833131', '43620452343308152', 9); - T('aql4oir5djm', '3245007227292090', 28); - T('db343e9a340d3b', '26756154339280481', 15); - T('3220003201211133020201030', '1020589011404876', 4); - T('3o78c', '2072046', 27); - T('2d877kan5ldq31293oilrd82opq81gg5ae', '4464070539173170102196895822272337548717444132915', 29); - T('e126trtmrqpdrleqkk775dcnrita15', '96328326169357847704968608549063554178472035', 30); - T('2232fagd5ogl88h', '134278057960916371337', 26); - T('1202112', '1283', 3); - T('5rm3m', '7768444', 34); - T('16a18ognkkd58hmk6k884imbg8ae3a9mo8jn', '10639470795815794263674183939356306402456151552373', 25); - T('17hk3j53', '10405409225', 26); - T('3', '3', 29); - T('30882179734', '30882179734', 10); - T('6ggg25h82da25ge6bj4bf7a43ijeabg5hhf0a9ecf', '75228743181702840807285203704272617023859657921677855', 20); - T('112001120124433010232210444042123440330342432210210431102401110143313320', '54227490505239760641941694866809573616876524197960', 5); - T('15427672061537656436340433201663652647551672', '1152417987539763660190335375077130818490', 8); - T('10i2p38hnf5i1dfprkdo83i2pg10kmqq3', '63970988722559728762937017576893997855744155811', 29); - T('h1b117o20np01tdi5jaekbg', '5349088060367663935485224075196346', 30); - T('86b34a14a2582b132', '1586003464764431606', 12); - T('74342', '30946', 8); - T('436m5fa847c7m1kjplgh05cd3822mic3', '971009368598280732378011474082406690927211238', 27); - T('8f2zzdeenejdkr209z38mtkvdch2906lz', '533260676773267340578452417326723669642107198382711', 36); - T('1hi9r2c9ronogk6csdqdeh4ruho04djiiqdf', '24708859854809466983372602857862889522307039320807326', 31); - T('947sq', '10825610', 33); - T('885526373854872554336133526465', '42192813046514552728772042462', 9); - T('3faa3h9c205g13aacfc0269bb', '18706722517747698176671987201674', 19); - T('227467610c43e85', '63224810139562775', 15); - T('123031112100212312320002001132001331012220023220231232232010013003013032', '9480799240652897962878990342506933303128526', 4); - T('23345022', '729446', 6); - T('101011111101010101011011110011001000000010110011111100010001101110000000011001110011010011', '850278303532391505837792467', 2); - T('2300003300310202100220321330023', '3171593279030664971', 4); - T('11d138c113205e6bh7359f4a', '280728756129469210482775394960', 19); - T('hadfml2', '26734017388', 34); - T('54k7jf718dd', '87347282076592', 21); - T('1ne8fda3abm60jc04fg2', '332195869682574442832526146', 24); - T('101011100110000111000010001011101100100110001110011000100000001011001101011101100101000010000000001000011010100011110011000110101100110110', '237356300857539012126250205765532327373622', 2); - T('1o271fchb00ol4dkhem17', '38390328656608000668455077433', 26); - T('525314545', '9216929', 6); - T('aa64c64c793e8364a', '70247576439398188420', 15); - T('a8pfj97f0435', '125741271124301512', 29); - T('ggh534c6ggbha518e08d25f05d0012f509', '4497422234177618704742490604901750978647125', 18); - T('22311232113211320312012333000330312102011322032221', '858789346873481805128057463721', 4); - T('1200113112201030310210113101120123', '111101134074076272155', 4); - T('1200121112221000122200012020202121102020111', '184849475168462687158', 3); - T('872983082774482983787518618800', '872983082774482983787518618800', 10); - T('5mlim4nidil98ff5n', '72148072134153551039567', 24); - T('1652585ba300b5380364870b504a1a7', '364646790364235488156172628236431', 12); - T('978h66d8caahcd0', '58089002636112249670', 22); - T('1kkla3a015jnhj', '1638687175226099563', 24); - T('746213261004212350555277277331633603', '308211597500827039469103368058755', 8); - T('4gp292pk42doc', '443983278306821408', 26); - T('180b294564700829387', '44545269922505572567', 12); - T('kk7d84p3dka3nreccq1m609d0gr00p', '19233251736714867892517505234457736796220249', 28); - T('110201102002110220120012121000002001000110221212100202020001102001212122', '10612477178427271665625741528055207', 3); - T('73363c6892d237', '5740049763623441', 14); - T('n4ckfns3mrno2dp0hlasg', '4097962887367983122115091338600', 29); - T('14431533104233134255102', '236018374533878510', 6); - T('34ca18064bb40237671722a6', '141266261546214472896454219', 13); - T('28391e59d70ch7', '102217702033516445', 19); - T('3', '3', 35); - T('9qgi', '241849', 29); - T('113250532', '2121752', 6); - T('7599788542b594096a5b87a5', '49584486067719553446039917', 12); - T('8s3t8ils7jfnndobdlaemqj250g3', '164631635071927317444094845929001081303849', 31); - T('4h2iacf43m', '17869487346347', 25); - T('110201121', '9277', 3); - T('12177711606432104883357', '1226392108651838512159', 9); - T('373256e2e8b17b56chg3a54', '45826692083221550917290789196', 19); - T('0', '0', 19); - T('11n8j', '359059', 24); - T('12202002002000122002221112122012222001112120002110000120001212201210220211221100001211221220111021000', '986705214174978834196213675086407606233888004604', 3); - T('10111110111011011100010100010100101010100010101001001000001101001000', '220125906067706381128', 2); - T('68fdii14l', '700119936693', 24); - T('3egk0140j5c1f5k', '229866340801816690810', 26); - T('e5degigka838d2205ilfi7gil479', '25083920445727826356901122508495429259', 22); - T('13320313301210112230203120320113320132003233132311213212213233333002202111302', '11259010157049734086345735286363460728682849650', 4); - T('5h62g38ge626f81', '2235184586731991197', 18); - T('1011001011101100001110000011', '187614083', 2); - T('xkemny6t', '2630437657301', 36); - T('10b0413250819386b108351290b73226b6a1590b34b05a6366', '81645102709884483913181829243891844511840914769743998', 12); - T('6372c', '315492', 15); - T('dj473h8cah3hid55dj1249a426g8f94bjf9603g', '383754275040977617362152965924589307652725745488076', 20); - T('22210332111320213210032300131133223121', '49951871347577207519961', 4); - T('6be', '7749', 35); - T('1b73282h0bii5031f4d542ee31ea46h635', '2527326396121816469210042873835773485296097', 19); - T('66227115432070273523772053651452513083354117373625624', '279494516756655179230331728401746874479009481968914', 9); - T('166qn1tp23j3vaxo0ojf', '435136933431911116389704144955', 36); - T('a28coq79j', '8591402127987', 31); - T('65irso', '150361164', 30); - T('73e98ddhgj831i1jeg8g329e451b8', '19290253118088978042039590991981480628', 20); - T('526622b5h943db7fa86hab06', '381454244000888974479231073170', 18); - T('43168a72fi0dt3h3ms', '52964818504140944984592388', 30); - T('hmmbmq09oh26', '216989280041265574', 29); - T('3c8k8kehcghg', '5349260598820264', 24); - T('6cj60m6fb50mb', '143719450210177075', 23); - T('146bi1debcfhsf97ci41rgm758201', '101427316663798701296660111279977667209213', 29); - T('1iihdci3d2d0872j6c4c44dagi1', '45334034109911611232603135189813584', 21); - T('8degg41934b83bih61i664a36j2hf', '91051501141223799965271020952208632909', 21); - T('16c786802b79020cb457cb593382714a0c641aa02400b78', '2677894540962015624580557265698048634806854048320936', 13); - T('52oi3aq54pojstedhf89eip6b', '14140583748705894224928943574695025684', 33); - T('61590172645abb69183b233b54b5747962b19', '4340185485693521080055289170225554068933', 12); - T('110682585501136724772506418006240605818072213886', '792229254764182331069673929338255216691773278', 9); - T('43qxp7', '248160283', 36); - T('c9uhlcfbn1c9q5', '300876274501077613973', 31); - T('694t1v4aaosluu3ljg2ijqu', '8159750513846010634274540700127070', 32); - T('21795846019a487881188a37130208', '3419949453251184532031131805419', 11); - T('1001010100111011001111111101000001111111111010110111001001100', '1344157337501134412', 2); - T('2mgd3m04rb98mva', '10936422713010831976670', 35); - T('40210655551020225312633630466450665625251450544442661653456430', '14381574785226902109942073009116714912332534395284510', 7); - T('u7en0vpl65blxi80te38tryfsku', '422618140589562267742993269570998416915030', 35); - T('11000001011001010001100111001000110011000110001011001101111001001101100001', '14270026723513393976161', 2); - T('ebpceco7pxldgb4onagjoht4k7', '5729256960747607579936416329466508315857', 35); - T('b9081qbq5sqxvik2xumnthjash', '4499212750032844054690121752205782394747', 35); - T('32j5g5095nln6naok9e3qaps68rn9o015adk0', '136942195680745271283041728157055292644430490770829675', 29); - T('725497617273767332245236077173508191481447722770385', '725497617273767332245236077173508191481447722770385', 10); - T('4or2dg2hagf0f9s876jn30gbjq59f4hhen141', '215251212904058918759190014904099329610351440654544226', 29); - T('rqo92bmij', '39112462451422', 33); - T('64238346686567353403826531363543727200', '1312747209333613899473709033496633239', 9); - T('62637563245765352276624303141602613364172154133241311371742', '152088100153270232559520172242319908695772301728543714', 8); - T('1333330113211232222022003003', '36012825892135107', 4); - T('3001031311233030312333010130233233313100113031012022130310211203220122223211011120221031', '72290779573970253392304372068058964937709043831900749', 4); - T('10041140324543315', '2876139957791', 6); - T('135561883015772', '32093135289974', 9); - T('715pfikbdn64049b0e329iebmee2p8a8l', '13402036795732724143888377560374564804041015517', 26); - T('7653b61a4a0', '466672013112', 12); - T('110321332122033332003323233102303213230320211320101123133032', '434197763291942311469426951196096462', 4); - T('2tge8uy8p3ve', '274389336133434774', 35); - T('155151710526047560257027505415470777132176305054012751404', '638423785977537057303063374808031230555869057635076', 8); - T('a765fadf402kk307f64imh08ca0a', '60279477718441090640145794037158399941', 23); - T('3hm6lg129la75k37c3jjk51l60c9h0', '11688186075235252346472073838202560002816', 23); - T('19dogfgr62cjraj17fo', '1602752867648709555962027512', 32); - T('kegju4tfeei9b048hsvot7pu4', '56859703342713352624670750416660729636', 33); - T('83034086469954352644240830031237890715772719822', '83034086469954352644240830031237890715772719822', 10); - T('3203202223033322231020001321', '64047325323231353', 4); - T('i2d0', '318058', 26); - T('4n6n4e77px75', '328641670161001487', 34); - T('1vtmkpr6qhospuplepvg09blp', '2655480572001125819849416161655828153', 32); - T('1ihow717r0rgjvmy7l29beg2bzww8pz6u6o', '124254102510606623034672266738595978367467100361745744', 36); - T('2m5gba', '33915216', 26); - T('hf654cg5bb3idigh9c', '232857980165918636614992', 20); - T('35443340144063542115553', '14892674299147846407', 7); - T('2112220110102011210112101020202110011021112200011221000102210102201020022', '57494075722004273256340780908238154', 3); - T('5lci5gb', '4165510991', 30); - T('11', '9', 8); - T('14f90cecc7171ac6437641b5ac089688db33909', '7483364180601064196936956248122321436304161033', 16); - T('o4jfagol6io', '2307070478457349', 25); - T('7b8a012ba0c5381568b3435c3654475cc62009135804b27a', '179001727269993328584512210018248776292093962282697712', 13); - T('a03b513b148787c4cbb10177a873b4182989', '9750173084845230278730830143332448339989', 13); - T('1iairpl57sp8n6033ge2rodf75f6gdori8g', '86022733789177873849337430569285876925456258265210', 29); - T('11kdb6p2md0hdgd8bm18i19k7di080', '344319303571314782580067280084060158221399', 27); - T('ik2jnjkj9m2e1og5gdmt1p72', '3113905142614984871455941391842734124', 34); - T('1d6k39adlb79a9pdfagh', '2340516863066457913428999698', 27); - T('ioqrojfmm7gea8rljr0f4pe5rbtt3', '10772975501661450017818524272575556265371968', 31); - T('21040', '1395', 5); - T('ei4mlt7tmgt7b7m', '6985663203740380489132', 30); - T('bb8cd4', '12291284', 16); - T('20504664240177812000285235681063216130278276', '222234624997451365651218301513111340426529', 9); - T('166432654201456360026451202162050312312114151254', '10448295064112667804382843649392154179282', 7); - T('mgc3ap914ff0379i98klj8d1hgc1pdm60ga8kp', '511401910152592553129845047866126227176299771468553809', 26); - T('15570', '30180', 12); - T('4df0e5fb247bf16f43c6776ccd60df556f502a', '1738142587398168829725897493959473887005593642', 16); - T('974e2c60da2db82a6314561004ee7da6fa4', '823784761827070684801624947985460569468836', 16); - T('7lofr8ub6g11ql13l34', '9507591535540334154075984996', 32); - T('87hjr15kg78kshbwf1ou45pkg8gs91p8uu2g', '1156903500550024753523548410979938002404617165251289196', 33); - T('2211212002220100021221212011011202102022210202101210111000211110122121110102112020021', '34079911752189551791157867491366350579586', 3); - T('43am2o6euumfbant06', '267667501385619931196518341', 33); - T('1d7cj1ceege23', '20652593811671495', 22); - T('4240243333000422254145314244201530204403151510530441', '21564520097455639497199309296429090214969', 6); - T('11869794193a97004899a475670a23182', '2453835010791845353960456267792399', 11); - T('ici00emcdk9p4', '14497585545174247457', 31); - T('313323041432211', '20435889681', 5); - T('4487649166275510951938a48870316aa5872476aa88a9674', '430315194065841472277550412799061686011884707425398', 11); - T('cfgip9i9js6mdsocjjmbqk56', '54118901185544030982279736369588342', 29); - T('78020k4bda5k787af0719j46', '19018189936144091928181332395673', 21); - T('1dnihd7g4pjvg9p2', '304917124976447619715094', 36); - T('5yk7ssas3wgmlx7ahwxjm1yayifvlwa7v7', '13590391589834916615774355195549723338258732720949843', 36); - T('7rsibsdr8eolqbkot9ehpnef1hacb1b', '68787249568298723121694457609989013843031697593', 34); - T('122101012101101001101011122022010011221011220120202110202022121101210101200211110122102201022201101001211112122', '58761003770056410036945132714314493878941158522889874', 3); - T('247oh4fpjh652m53aqpm09pk2g8h', '957358665081700123817860607985546969611', 27); - T('10110110010001101011010101000010011011110110110111101110111001000101101011110011000011011001000011011010001111110001110110001000010010', '15506344473128630453531168072244872569362', 2); - T('1ba4f196d2', '1836378562944', 22); - T('q85m56jde1ijaqvrspbmep65lf', '5080889917612367493209814869041589214701', 34); - T('28k3', '32739', 24); - T('2b24473632', '15134113478', 12); - T('206804748241013587542373', '18480377731997813950830', 9); - T('1429', '22662', 27); - T('12002012011120110010122201110112020120202102122002101222', '295468412871856185863944127', 3); - T('12000310142032111034412433113144010123022231141211420323444332011201', '94937406117061099909537623729787566702636203926', 5); - T('3ca1ab294586c19884478cc5562b0594a11', '298052963486521030604056025307425922825', 13); - T('1321573434316', '96870480078', 8); - T('200468a73553a18804a80927308663a07', '4230083436897722239837342629998453', 11); - T('0', '0', 34); - T('e823de9c24d78d3a4a31709137519b7a', '41830648502807920110953412072000880465', 15); - T('1mioj28ohgl5e57ir43p9h1l18rrf7h86', '36871182090696202519639887715662651503934529590', 28); - T('559t1wf8tqjcf4hsqigapgu931b67', '39236251530838046870605814177749092966502359', 34); - T('8gk8kganb8739cebk6ig8k791c4aami8', '632357147598558623973831444596664388969242660', 26); - T('f5ll4689f0cb7a', '7691005216002972700', 23); - T('67a0a27079b1453', '8542256755875903', 12); - T('33cic9ej8', '1560004667550', 29); - T('11101101000100000111011', '7768123', 2); - T('1469a870266b763900a2151605815894732009c0581', '82262652821492357872492374378244010360002277967', 13); - T('87kt32mchjk5c29d8ba4jp1r4doni392fc', '45899125404340044355369226957575208740733387075262', 30); - T('17ogc78hqfdol3m79f', '2784763002896554190331327', 27); - T('1b354c90c', '7303645452', 16); - T('333414', '11734', 5); - T('2ig1gj5ahfecb49e9h8jb6hb4ac96bd6e0g912a', '507895713729619956403077058830524059107852124474504', 21); - T('43214ba9635', '584965373374', 13); - T('3nncigsq19', '74651509139439', 30); - T('104m0kiom60lgfom9nd', '29690896309147298930418935', 26); - T('6dddo7nuhlpt80n7qr', '693283167208501106539919907', 34); - T('44323004044422212', '753914451557', 5); - T('2kjbagdd936cdihgl3di2iehcf3cha', '8983928381495948321401576478563586947687', 23); - T('15417724275812361346116783338045428115075362702', '126271823583933789437986560482347810218604565', 9); - T('4424434032402310351550243455031032530001231250544545401045032010023', '10818193299861878243790076799343621945293694027382815', 6); - T('3lm0hbfkkf', '10338045823215', 24); - T('lnihn1q', '19313199759', 31); - T('98476750d3abd781768003d843d02ca1c1cbb54', '342681225614809442677626946848997427648271550', 14); - T('57in', '171607', 32); - T('4l0', '4230', 30); - T('13zqljn2h5210jch67r9n', '14850078065778626446235105210315', 36); - T('17pcmfkig62aeakj4bbpp6abe3', '787221900286688152294317969622892409', 27); - T('ca12c1g899b', '128028933827791', 20); - T('1442561330613212634115655230112622234401141505', '177775307843218888019761099117675922373', 7); - T('1322323203230232302322231320313023000300232211112003322223102', '2553168476684154228725217265795967698', 4); - T('95bb', '38331', 16); - T('7knm', '228492', 31); - T('6d80b3e4ai96l315j64fffj4a2b', '528476806561481039995566993561707151', 22); - T('28598oa3', '18598623319', 26); - T('1', '1', 33); - T('57434427908678899a19616398a30a5aa9', '131732495350301681645134300922039080', 11); - T('ugvsalo6lid801bhequ2j3gm69md02dg1', '310169070310248176158440173181169510159391272861573', 34); - T('22021210220020120001110112211201111212022000100020002000222220201210111220', '186744606233199646302344057916276861', 3); - T('1mdbdo81sittch2c9pqmq23', '548604384913200011277372830177463', 30); - T('23160307511727067463554413', '90761577315987134273803', 8); - T('200011211221200112210021201112020211002012110102110112021211', '28542801355511656365238383949', 3); - T('37992', '539782', 20); - T('24kcglcnbq2n412', '238120258337878748231', 27); - T('42ol3e', '99487004', 30); - T('403734699498096870624883', '403734699498096870624883', 10); - T('211321053050604411', '505485346237719', 7); - T('78a27309357a327', '2966574256778513', 11); - T('461020385428b040b79533921bab8', '69259761610665370549777502991976', 13); - T('b1fr2rp41mbx3xncb0xfmra2d6oqw', '84042654646449163888200240417821757512098356', 34); - T('3005013424350503040343321122301430430201', '6735784675050747106650763807609', 6); - T('38pg3n2r', '139184565195', 33); - T('184786kd5415bn82eg8152hkhj0kgcne6n91gk', '1567411026865786158336358856957759587592645854583252', 24); - T('212303112311202220301131213210110230010201122003312032111011323000202002300331130310', '226839378801283979800479091211239181319725606229812', 4); - T('308432779036791936833307501538813', '308432779036791936833307501538813', 10); - T('5000a91de6305', '1407420280496901', 16); - T('be8a37712eafed235251de23df', '15096126834474288185885113328607', 16); - T('11110101000010010000001010101000011110000111000111011111111001111100110001101001111111', '74057344034249031021697663', 2); - T('4agdca9f536a3bg7367905192f0aa7cf28bade5026', '1304733992727463155067887261543758863312332333333468', 17); - T('1595', '2040', 11); - T('mfjh4f16g9qlgi1l6qokhf', '55420676304645035287654438132523', 28); - T('1', '1', 16); - T('28425704a041274a5416a3555399', '36212667591400568262055481715', 11); - T('4866ad25280b1764', '5217047593452509028', 16); - T('388555g50d2d369g7faa273cc55a6e8f35f2gd', '11765155725634973359235955063513317904611001160', 17); - T('212cj736k0c', '34252959577044', 21); - T('1202a1124e4e326e05d05e1de7bdc94fd25', '765196471729486476120236447628523003605404', 17); - T('79c17a306185a475639c20019c', '54786259681378319011782543509', 13); - T('1011000001', '705', 2); - T('11112122011212', '2413850', 3); - T('3413223330301224020104103042124113333023103342330044234', '214721484670156988481537697242134221819', 5); - T('4081922', '4081922', 10); - T('9dcgef01fh13h9066', '1185510195771990049194', 18); - T('7ec1421d879ad37189383a', '39838461593516143724886355', 15); - T('4556620513242533005444500602162053362636156165231420513026553350', '842757530742166745590516121006132571018257988845461487', 7); - T('887583326a0a09533114847045a6', '115229604461058273430446100080', 11); - T('soh3nc0r2a', '2912725556543746', 36); - T('1041143200233250', '525242817246', 6); - T('p8ihzekylx3yw1ndrradu1xvdoq80b8', '1233400406203421024397148451955822220091322400148', 36); - T('7h73garbjseceg8ekhef152cr2699', '672439504915616762220698973393004587395750', 29); - T('ml9je258hk2ie6gfed9igkpn5fi0', '3652887835869131415590854688229822429384', 26); - T('1b7e942f819b', '30230465970587', 16); - T('112341204334112423241230302230433023330333431030430', '116427771469295513780567588074080115', 5); - T('50g66a1fr6k1ck41broj1mcg69g9lik', '130468150434356532266429210273257638981218844', 28); - T('3cfd5e832db0e5g118297bc8f985g58de7gg3210', '3653875188901914332922344609876154431472747363931', 17); - T('263a85b3', '641369523', 16); - T('4842428884713208430441876574523584564054565420170316', '22921456423834362632075410365760509919770550726785', 9); - T('59m4bs422rhhaaml8j07o6ls8so0gn1e80i', '281062888625341158814391292979611212560325630954348', 29); - T('b1bb', '30545', 14); - T('abh35f', '296959741', 31); - T('19aq117k2sk88', '468204151297586117', 29); - T('19lcg0g7k3khl8e4ak109843a5kk1c5', '27236272682373056800446620591828837123057', 22); - T('e8alej65ca3j32e9kh9gh', '24658599960999816341036277260', 23); - T('455919786b458acd526635037dca6075d88804346', '30703490401628056566732211795733293107803742570', 14); - T('7txkbf0ec3obw', '26547103232126519067', 35); - T('38', '56', 16); - T('5dhefbac0e6bj26', '9329618703405855646', 20); - T('101e9b30e17e', '17723638735230', 16); - T('2obir141170utjb3pdqeq1g2ld', '53587818951559954153548512220759128235', 31); - T('1114b1711481a37b40ab782', '603474625470367571048594', 12); - T('10122212212210020011210200001010010102020011201011220002110102200111122002120001110', '1623999922600731648116424421855627143570', 3); - T('a93ac3066111a691314c6b5b3ba516270747a9199a08b7', '1436959793947238532222831766204822671586011493120070', 13); - T('58480962a86729768482180130940604', '1106822665412898914406602330090165', 11); - T('131301223210133302302302221021', '536401454673111625', 4); - T('evfp0fsfkrpfirrmh2jnau895v', '1372783108572463878894831856355242799710', 33); - T('afijc5fbwglvb1', '1235206740707162508111', 35); - T('310011232113023311032211012023002203301013101011212', '4126950927538421833835204120934', 4); - T('6e8ngmahe', '1844460496346', 27); - T('1bpo5h74agrcgoo6b51cshgl', '6086700625232934820042018053764608', 29); - T('24351022035415021620230332665631431152316000314500', '680247907196347864914631461520709331522883', 7); - T('df8661ghcbaahg6h0i5abi257', '67664436903091499279834668430129', 19); - T('5a3282a143771e795d87ee5', '425024233293429042801085115', 15); - T('404244212412030422302034330214300441441432', '190258475138999060530910108992', 5); - T('5on', '4027', 26); - T('6cffj7ihad83nfiiehd63bh', '15113784949593526393490088172505', 24); - T('23k322g0c7h9', '2066164244508171', 23); - T('689hd3303cd606f1f99f5afe0a725890a85bf07', '3247974309774379895380706745511795262908184133739', 18); - T('27358340790499664c9a9c5b910121320b13cb22', '71092424548919054827902632131879373254277531', 13); - T('5hki', '198876', 33); - T('bclp4mbe1djj2b5o', '33899350519431680218890', 27); - T('bpgdh6iee75ooge827a', '353340952670231280445716776', 26); - T('d8bk206fjkj15ie4dhcl3cc', '12138152877944519436661702674041', 23); - T('333ljh5b6m79h6', '1581616916999395997', 23); - T('d2qxawll1gbiiij6e7ln3', '99526840765015723857527315388533', 35); - T('11876187218c934699c6057131c808b5c45c9ca0503b65740', '332245795948615376820642052747656044479282749839696434', 13); - T('5atv', '191563', 33); - T('1', '1', 26); - T('311', '375', 11); - T('ae7b24afb7a1dd2ad59ef565c636f4af', '231925067868680755427379099063532582063', 16); - T('1222000221102020001212001011021122', '10919408154431444', 3); - T('1256216662445441356235433665015445002263033', '438697014198691047518334542836935784', 7); - T('626gmncl3ms71p6opdash', '4078656173551560415187079606707', 31); - T('9ghhakhf1f0bi35d5c4kdh73k433fdk8h2ih23j', '1720533821779021495938138198647013851872290282091672', 21); - T('5ei7ke0hj52j00eki3pr06cqodpifoon9', '1016743133813841084879455508016504611887385220299', 30); - T('21titq3hucthn6f0of2616njf40', '1230037399641719218164443592833669976942', 31); - T('2biej', '1933639', 30); - T('q', '26', 30); - T('67978744699025702245219518654', '67978744699025702245219518654', 10); - T('1253111112541554232', '151023434718764', 6); - T('111011000010100011011110010000000000010110111001001100010010101101000001000010111010110001110010010101', '4677623609407056260314308484245', 2); - T('201211021000021122202201112210212212210200202100', '58567569643036490851386', 3); - T('5a88292b44c720421cb894b3a12', '533915890363656397491382509270', 13); - T('2h3e9hh2ib08c86bi0f0', '5747634541497108642678548', 19); - T('37567a0687g4258ga436c778d3h95h2818c8dh9', '1708150384691444782060059038629023779853876775407', 18); - T('givc5j13vrst', '597831052538408861', 32); - T('4131234010544202445323324233414', '941033209809342819174418', 6); - T('1619m9di82d46o18hnd1m3e1a36576530', '673416020131515842532807516881375904836815700', 25); - T('9m0', '8760', 30); - T('88xp', '353980', 35); - T('rbn8ep3b3rlj980chlm8qq4jleq8', '1191977843977043837841082225345577902324552', 32); - T('d3eahfcacbd146d48496hhah3667h', '1856055109840344885967358014189889063', 18); - T('640ee4mvnfj118ko5o7osb3arkd', '85533992399600604195850584300979623830038', 35); - T('20', '62', 31); - T('4012233002114142114422214001201340442021313142420204432130402210244423', '6878505816170177212464782885897033424143266493738', 5); - T('13e52klc4l', '3037222455669', 24); - T('r10qcmspcqekq3kpvdbqgbbtfa5aj867l2', '9346556545971537223317971555464781544415436716699000', 34); - T('14mjb3el6fba077gln', '350780406639162972508175', 24); - T('hiigh749709hij318ad53c27b64f5eaj7', '36632370970561829556172951184321651113284751', 21); - T('2b207beb5089ejh85kib9', '703442893999669422870353721', 21); - T('2', '2', 18); - T('4g8h9d7qkcst30925i7lrjbcn76qnlr', '16140733323463101968248981740436855171786353768', 33); - T('3602178', '1248395201', 27); - T('26jfj0fch02309bk10k', '1470277628960362858087031', 21); - T('h771za89m9jsnkj3e8', '4927970904269521731241666544', 36); - T('1hafgfbe', '10357681539', 25); - T('4250d1c09bbb3867368b696bd811d490115', '3875741601165944284125909641413718735527', 14); - T('339ef7a5f81e079987fa8c3ae71', '65437348931585993956193860824689', 16); - T('7cco5bfijg64cmcm1kc7hnck83k46', '10409381677342479533995796423788528575106', 25); - T('7cf5td85bcllkqq98pdui1', '154169249902641839102789533784495', 31); - T('20621a550a42279185769998249a3', '295806720939573663643677166305', 11); - T('1mb6d83m4c50sle0oc7pd18ca', '1067940877091749641918965208695920032', 31); - T('54b6ca52773', '741121768884', 13); - T('10225075515717745075', '1388960944958441156', 9); - T('12033e19', '458883185', 17); - T('155430719053377666277386799088760775939080', '155430719053377666277386799088760775939080', 10); - T('206142346532535062330364656312416520634234521450614502', '1312201569241680518802305709945691263438445736', 7); - T('111011121211', '259249', 3); - T('4a0687a7a455a92b8101638727', '212245593684005354604310715375', 14); - T('15fhdb8gcg17ca4daai4b', '49141072391005691770808896', 19); - T('35bmllo0filj87hmoe', '3639448929253283009287022', 26); - T('30cd1039500b4ab6dac54a49c614bd3a851b1b4', '1502423755197224198218677083417578305925869394', 15); - T('19ck0a7476b8146ci0k7b3e6', '10784621227701209583410027023454', 22); - T('jh821e8t4onq', '703971165467730682', 32); - T('2ccih998858bf1f1h4gefdh98a9kf38ljgb', '11288708847794836487628299578289569053830362671', 22); - T('136030', '136030', 10); - T('621301550003036553464635301440623601534020222336132356653', '1336170888382484501976014506902352076175198389248', 7); - T('c7xk9wfj3838o6su0eikx', '93045511580118968344881438576158', 35); - T('npj', '21469', 30); - T('21a58906c334d0208cd37b20b0602', '262325768672641862422584585884490', 14); - T('l8h7nee7wqtpfw0fxhdj', '2663559215161630225508053538953', 34); - T('2', '2', 8); - T('1010001000000011111000000101001100001011100000011111111001101000100001001011010110000010011011111111000011110101010001110011', '13459691377936385656205820498694591603', 2); - T('6aonr', '5152317', 30); - T('141023221242233231310523004', '289378994775032790796', 6); - T('1220120200002120122020021', '539548971703', 3); - T('b24med8f1f2dfge0c', '483364700771293735772052', 26); - T('1840p1', '15608139', 26); - T('ztl1vn37v062ms6t', '7919265633809577167295029', 36); - T('20425420504320415140035236441560246636135235', '4563739435349096802532430020917212365', 7); - T('1m5ccvktskp5', '157659130001415880', 35); - T('8o', '288', 33); - T('240c65a596', '24532236839', 13); - T('983763db8j57bchehcd435bga0e9h0bac', '4040882893213836419463664776313088927524612', 20); - T('2201200102221110020000022201221010', '15170686366681812', 3); - T('456374', '1109896', 12); - T('70m8mn2ba', '1073573407785', 25); - T('451aakninemmhcb6b2h1p227g0n56od8dfs1', '20853955252647719617988537600784407469238338538745341', 30); - T('j14k513fd1elhc79agqssuepkbcr2ju7', '324947526914571293920860403904607004779325895507', 31); - T('22680488', '11036006', 9); - T('5c3bg11jf751fh0jg60i7gfjfdi2kgkl3', '50354032529134077402872376698216146306223649', 22); - T('3c650110b937028a4799a6b1a55b772c718182', '651168490122119567243142061008190429370417', 13); - T('1221032311120020101101033230200302323202011313101001003132221111121303133100023322101132', '39371883765686973625144887114028494953808808960304222', 4); - T('4099gl', '25860025', 23); - T('25e8g63gff11gc17d08ea34826ddbgdfagga', '27273517546344897300623839432182770845480659', 17); - T('12a96edb754d4d6dca', '116318229977030547115', 15); - T('a7r01598mcsok', '3634911087742907341', 29); - T('8lugnnh', '18735214013', 36); - T('462338084841', '462338084841', 10); - T('3203123', '14555', 4); - T('1jhwtj2p4rl', '3250085526472387', 34); - T('23044346313736', '1310562293726', 8); - T('5lpf0fh0l9fn7li', '15558130210796154919424', 34); - T('13do6afq9o84jnaggjan11gq8ihgmqo49ko18', '3821564988333362537058780890229032055458378165509784', 27); - T('18193e4c8dlc5hk7iib', '38609061493103824129546527', 26); - T('1h02g1kj7832642l6d', '117460092015601351103221', 22); - T('72186117768166364743807116578515315415805223867883384053', '220528602283214676716138238392247863019093407607117978', 9); - T('6ik6bc2k96gmi0', '3438006927862011506', 23); - T('762722210536357403530500', '4601638793217664004416', 8); - T('2dh3ha273465c12f', '41472924050752232897', 19); - T('104413305412351302314043503540052212312', '419908180423076828270954660852', 6); - T('6', '6', 13); - T('1g3hh6bfde4f35', '77925319234957436', 19); - T('49ig78819he', '27748810576749', 19); - T('22412142010434432110021004244121', '11975887279273703196786', 5); - T('2bogi', '1703507', 29); - T('101111100101010010010101000010100111111101111011110111100110', '857171914848189926', 2); - T('gtnjivuoj64ki9', '624581256882734387785', 32); - T('9h8f5nh1ph3qe9glh8lft06p1oc5k0', '65721260945294966804233759504775006489069100', 30); - T('151132121055324332334031340133105132441504412305001233331', '70457366252732538353135178251613420869315383', 6); - T('f145aggec1e7jjga4i97279ef', '252676495567805480924286038779895', 20); - T('7de7cag27639158g0b565910d1b0be23c', '18504577862769439979869071005055514681936', 17); - T('475294666089764828847579973438', '475294666089764828847579973438', 10); - T('2301', '834', 7); - T('k8e4b4jkmhrmdp6rp1n7ec38o555275b', '14773238036137641376439746063291883553488634503', 28); - T('fc3f66gd3m6db132bahaji2b0', '7457653487404061820814558204897923', 23); - T('111222200010332331131301121103332210223130202030200012032230321111220103200021113', '1978880662522375880691401912877401491165359768151', 4); - T('75899793636343882742', '75899793636343882742', 10); - T('eo8496ka6glj6c9g4uv7cbnq2q0cd4jpg', '377805709401704966595895997759561079844005820122541', 35); - T('7nacmugtp8k6xm66a543', '963315084681439473869691613071', 34); - T('7', '7', 17); - T('47cle2eajl4d4li7ahg', '6332844204194445871554582', 22); - T('12107170aj5f52ielll1be', '16962840667954795901484794380', 22); - T('55bww8w0t0eghb8ls55dcl6ixlwv15olhaq', '162308148448278373157076294786164277284790340959530326', 35); - T('484ja34e81gf135j3e2ac56e0i7hij', '236890988768063667108553222280578943179', 20); - T('2243232540752434710611323210536463', '1469808842581774120550500842803', 8); - T('p575eb5ca5038d3ok8idllf2e899b5', '2726961239011011355236144568961137638537999', 26); - T('2b1bd606021a1b', '707917646595659841', 22); - T('2ed9f432ejd0f11jcfj1f5al9b2bk5nm27280', '2223214645127163142355016653760898495984516506656464', 26); - T('152bc54129052ac50', '2987450448112457894', 14); - T('46066728688271603364', '6316495850515234477', 9); - T('2g5d0h7g0gbmf78c79243nn9', '148727643469245968217529721296881', 24); - T('15lf11bf87j7jci121kma4nkhn', '39880191485245317293588274721343663', 24); - T('hh577s4nnlha0gi0s', '4402448697185571173522937', 29); - T('ca713dba8442e', '1647538652528819', 15); - T('284dfddhg', '27099949678', 18); - T('1610kf97j8i041bb', '174505901776678878593', 22); - T('8kt18kxjdwg4q3kuvknkwf2m23fnogq', '180423804171461723659383672666400155952750669236', 35); - T('g1abca5091b2cfd77a42559cfa1705882e81', '187251468917148330282582773146445435959176796', 17); - T('3303131212212212001121223303303323000100022312113322022110101221231332303213132', '347481362131991515099107296900808626703171271134', 4); - T('10718a989932057354a4601117981469033274a', '3961930126752739711210993249170997323907', 11); - T('113e4g13546f6i9ej14ii', '111073560433528497263849978', 20); - T('2li2i2lfj3', '5308535621389', 23); - T('54knqyisd3f1qtn5lcsrqimc5', '58593465649571042522289076646796218500', 35); - T('2010022010120011221220010122020200001020022101222000', '4570711546653019923644655', 3); - T('6042532553115031666', '109306485388096438', 8); - T('6ah6ehccca1ed30ch49f3chbb6', '611921790018452815367943572833440', 19); - T('960087e1ab29243087', '926162178026733465877', 15); - T('l2lhfda4f8c2kpecq9e', '4439523739653117128740893076', 29); - T('3a8fq8un9i68qu7nfu8g9m6rne', '64072841936979423961636673759087451780', 31); - T('20865277352048389955531777302333293367153791034484', '20865277352048389955531777302333293367153791034484', 10); - T('74s3lnibf977jg6r2kfq0785hco5qf6ghsjq', '10952987102780656964577606541072916821267549127588375', 29); - T('aqrwo4u14gmsqb80p606l9c', '53151205860039125228759211533105730', 34); - T('212222211102121102002220202102221012012001100010', '70884984454458032820162', 3); - T('2db1hciffk0hm0e6k40', '8389881219953798948711887', 23); - T('2kcgcdj47ii9fo9d63dk', '4330238080712124271959724007', 27); - T('6e7hc7ii81j52091i8', '88076484386866246472768', 20); - T('e7772iik87lc17dmagacj1hi282c7fl', '1017940669032249205173001354895673774197894', 23); - T('e9ee099c86950e5cd055c3', '73154233593336417594233808', 15); - T('114320330134242422200031242123411112401023032042310442412142213311341204321', '7345000213858373240721280688086693345479506507366211', 5); - T('j88o3pi34mb99l', '78248748988488054576', 27); - T('15d1fe6b5dfe7e1a87573a3946b42cb4437be39c6', '1993149199833169001344544884949567309662274861510', 16); - T('1ar5ld7bhpweb', '2214925368227004290', 33); - T('2sa2atrt1bhh1a', '71145664465186679354', 31); - T('18rgp8mhc3g6cvfamnrnkev61i0lpr', '56950731880511586745670579431418877456701243', 32); - T('54750443750225316571406736430512671452166747632', '1958033248391176678532214751521115754712986', 8); - T('10033312210131414322321312324022212541331410155345315450', '6389651250992348768646795839155231300106070', 6); - T('2001', '55', 3); - T('110110001001110001101001101001011100110000000100111101101000111101100100110101001110010001', '1047466460252578697656357777', 2); - T('24dc49e9660gcd', '183011576916166653', 20); - T('42122277123352400676', '615387804455272894', 8); - T('0', '0', 16); - T('1110024243220212030313224420010414040224', '2257245111890157772228268189', 5); - T('5433a', '111070', 12); - T('4dd96b56229865b89a161511122a14600007', '65059146911706674028661393829083246616519', 14); - T('4m9', '4269', 30); - T('1', '1', 32); - T('34233430413121304312422', '9322841380150987', 5); - T('61mp8fo48jlan56in9gmkdhfg9c0alh', '17083001674217793608388954599991083027738235', 26); - T('32hvfwcdfgexkaw0n6ifo45nvnu7j', '52637066972675961314961424822511197998983139', 35); - T('noodmkbwaj9tm528epefa87', '60668696101764660552956150804345518', 33); - T('50d7k398dfikdc954iic8bjbfe3jcb0i98e81c', '42044682017147219899812045714230284465317216035715', 21); - T('57c89kfq15fd3pkco0', '67759519628186541120701520', 30); - T('53176', '77402', 11); - T('101211210202121000001100112010', '82697070088632', 3); - T('12d633', '905898', 15); - T('b2rtvc8g61c437iddjuthv8', '28319832096437414138598301478368955', 33); - T('6ga8d5h5g9f2f1fe4hbc9c5b7', '9262426469570471976898418380753', 18); - T('17110233227503265253014384471688317133280470764448630707', '54520949680778856452144908392364747704157731362612641', 9); - T('36a7c7709df98c98d9bf0d8037e2e374f003c1', '11394536016349300502893187504942759921712585249', 17); - T('211100001220021021121201201002200101', '124166832733905544', 3); - T('1l1qjc84j7pqdb5o8lnp2js1qo', '6267531622610675770077756739540891303', 29); - T('7bi', '4314', 24); - T('1d58555c755829deb105aca86ad2add', '362671265369959944822892451673948583', 15); - T('10000101011010001000100001111111001110010010110100011000111101001010000001001011001000111010010000011010101111001111101101010001', '177330090800059334179372876785623300945', 2); - T('5rmq1hja3i2htok977', '76520833163682115657688317', 30); - T('d2brswannhgj3dlq5n05', '929158307404877629186032129341', 33); - T('4pc21d0595qm6akekaffschk', '45628774689731521025778390467417330', 30); - T('jpa', '19044', 31); - T('1691716c0670488844023aa40c20188381b82cc302', '7115945393660134960643716538173622961377844730', 13); - T('djrpok3d6kkfg', '3184685238921417716', 28); - T('18shakkersigg179aaslnd1', '6207140351700911819450122511814847', 34); - T('16gii99hma3mili3he91m', '11521470163607970255895536922', 25); - T('4uk404fu5r5bdwu1ak9gand07697', '1096743830617243267478450024447881641715561', 34); - T('177a69e65c0d5c23b', '9858342665710869131', 15); - T('20a772797373a501749a', '127724571524906942090', 11); - T('10e5a57g96279ah', '391367132694107585', 18); - T('1h7hhhfe2bd6i11d96326g7d', '494193280655696512736123393974', 19); - T('7672ff747c781c06ec82bf84418073cc9158fdb', '42264090573810039509111928267687533762028343259', 16); - T('33908b093481777ab43bb5271273b0755570243606', '584310085758916620977709600135575563060196262', 12); - T('123231331132230331312022003', '7801961318933123', 4); - T('1', '1', 32); - T('66je9gr0ha23vrljqp2tr', '14542761384658132443821891589168', 33); - T('50tr39qo5m9eja', '594238253683306042450', 35); - T('1010', '10', 2); - T('2c7d4bd1cd6167cbb', '6311101283107439389', 14); - T('23e20bfb8hhed30c2c843a87badi184297f567f', '8599266531496302272627406261206189142556716915261', 19); - T('41526780b9a5a17239720c92a3a0b54135bd39b09', '28686410109773337194021152769532941934256864189', 14); - T('ecml001aqoe9jiq', '4296982938641008844248', 29); - T('9c9294297137cb8c4b01j957', '8072196030039931406649024315707', 20); - T('710b006a61846c1b6485b9a2', '295698290243613321492343567', 13); - T('lof0hf', '448075216', 29); - T('1492380631939476422', '1492380631939476422', 10); - T('18617787217', '6853402807', 9); - T('28', '28', 10); - T('233025524522200322430510512000143324053140010223351404541514313402', '982649847712429965283271312633628451452240511169738', 6); - T('1c1a6cbb', '308835626', 15); - T('3i', '114', 32); - T('1i6chph3robe3ko60b1gd3fleqf6hdcfo9j6', '738415477605791828889810374125732142138172965238442', 28); - T('416d94816d6c7feh0cde02eiaa6iagf01770c', '44142204501594531372888971214564230677789639395', 19); - T('5fdf6andc0cblgci248bob183k', '499314055028383130819138235346114470', 25); - T('b1219a76298532a168636973ab', '10587337000034099908821844595', 12); - T('1rg6o01h5oi0njeqkb7o1r88gafndlan7', '40440720236650984662808240649217148711435143915', 28); - T('kc7k2ddbdg5m4fg777geg1i89fajf1fe', '33580873055276588035833179463849652564714137', 23); - T('4c7', '2807', 25); - T('50d68', '256148', 15); - T('3j8lfa0', '921431500', 25); - T('4d21233cfh9h2he4', '314977287497448880315', 21); - T('22ptrk21dlua2difpbga7nqfoo17nif', '2979844012644061261709624973913718814284176975', 32); - T('18ccbk9mn8', '13768771588524', 28); - T('3akf5a1okjdf9i2', '220305847680983116834', 26); - T('b52', '7002', 25); - T('20f293dah58dhi6591774if90', '10002849645651587260522047835251', 19); - T('nirh2c1rlp2k3', '8368956114944618930', 29); - T('141671751106136325535453330430775232437321543', '8325279825157794222097655945192898667363', 8); - T('58a2b3d05b929508b18', '2400541066384412592866', 14); - T('31023001203013012002021120200330112321120213130122023130020222330', '1120571363755739421100727158868165036732', 4); - T('72e7bed4eb579abe8684d4908b0184cb45ee3b33dd', '11938380317430849854727246010136297539608439111633', 15); - T('66d1', '26321', 16); - T('8j24l7eh5a14576ddaaj9i3dabcifhh', '166156615220176117320330888289725612288371', 22); - T('9i', '207', 21); - T('1110000101111000100101111000000001000100111010100110100101100011001010000101101001100000000100101011101001110000001110011101000001110', '9590478319392434269891419865097211165198', 2); - T('115156027', '481106335', 12); - T('1144850cc6', '41741581011', 15); - T('1487132dabd4006942ea4621e5753f54520400535ef3', '7680300593500415724655977000547063327920546737512179', 16); - T('10546275881470641020601788147547482777581620632', '83907179991104098938515481963287844552882413', 9); - T('334cfdf0g8g0dd78084a1e9c9fcdef78ag8e7', '4924973649792829875901725536375255033046058627', 18); - T('2948fb1b9376', '161562182577000', 18); - T('21042a641728100chad9ef8h6d7b7c3098dbhf0', '1031417459611470715458453074567717343310137625146', 18); - T('15f2bjhmi3jane4l65kn803d0dhjmjhmf3bh48', '1443199917648326594528212198138420579039397582219432', 24); - T('492c38263b15288875198043a58417aa27a2322', '10065688820077810586833059893292051419004944', 13); - T('33233013302021011031220010112', '283479533598179606', 4); - T('4od7gmh2e', '1032178487094', 26); - T('9g08hgf', '463091841', 19); - T('3do7n1lfh7m4m57onajanrnhqn', '5277516132422516396735738514310367807', 28); - T('2322ca44cbeca009cecc2dabc607c253c0ede', '4826418133925788145647532256925808902342109', 15); - T('1101010001110100011011010010011010100010111111101000101011111111111011011100001000010100011100010000111011001011000101100010010001111011101111010100100011000010001', '9703219505953893074023234217532878016916428047889', 2); - T('8ca', '2250', 16); - T('1101000001100011011001110000010011000100110001000011010110000100', '15015958852762088836', 2); - T('dvjl87viis0gkrmcghlrd7q', '240395536768968656611032877948245158', 36); - T('2a', '82', 36); - T('111210120022010000110211002221221220000021220211121211021120001', '584945674767242374610105648344', 3); - T('1ai9132i20a5fgi721037icd8ag64g', '19134774517743882367815280823402029739', 19); - T('11110011111110100111011111001010001010010100010010110', '8584226467555478', 2); - T('g703h2dca60', '272444928079086', 21); - T('10210020120001121102010211101102021200220021222120101121200121202022202101220210110', '1679155601670174046538269979766608832201', 3); - T('2d4c0a43168909a302959c729a7d61dac88c6787673418', '242496727538337888410218936739166557375410421370281048', 15); - T('44182a6d51a945a6a5cbe', '1421060022593917761957254', 15); - T('322125', '55977', 7); - T('7263581986004721570413a2739a67aa83484237817a00a2a', '701827631601858999302922019818257157812697798613760', 11); - T('5c42b9c7003c24696620468954b29cbb3800b450', '165259584116068790832545074144076581971429835', 13); - T('1fako8578e8uy8bvlnj95', '10936625165885490373805378810345', 35); - T('ess', '14350', 31); - T('nqs63sn7ska0afpfj9ob2b5', '3562053305005166648568447677059132', 29); - T('4153913738413582813112676402665839356882390406053', '4153913738413582813112676402665839356882390406053', 10); - T('10', '11', 11); - T('21ni3ig3fdm5ak24qbg9faqpnc648bgofgpa', '923922508138801830427813012811681004567930200769030', 28); - T('c5063b871', '31613731531', 15); - T('133113123230232030111101031013101303211010113000130302330313013222211013123100', '44767247228757594878589756004233521788175546064', 4); - T('ggjfk4cp1', '3475798835003', 26); - T('c25q', '237815', 27); - T('10c362c311ac7a583b35bdc6c2989b90d6abcc84c73b427', '56002849258572207947726688091124294570134439897478763', 14); - T('177c59d0fc389g3340g71f79a2b811444e5f1355f', '23761033881708446864722030370719581689404930279586', 17); - T('122212220012221002101022101210102112212101012222120021111202110222220100022220211102202012122002022020222021', '2239868430693007918519867980663532667540649890303176', 3); - T('v9uwm7cslow8gxma0vyq6hlymtxplqg', '656661129725170073836410425741911682455436847276', 35); - T('7x08xllu24op4byosm9ltihxjewibl', '10747943758603250784828832033535923549465833153', 36); - T('3ajic8h4jji8ahfadkd71', '979685512478696901448807321', 21); - T('39904l73ja8jd608cg076m3anbb7k2dhglcl4i5', '95128101998246343813523478731453034388462265997768885', 24); - T('13d75b964659495122b477d3253b201b8', '6087380592454876448304034029996695910', 14); - T('239bo8qho9dbdf187i8f6h33i', '114276554361298256463392230807709014', 28); - T('r', '27', 31); - T('22439348a809183a88a50', '1492002089284103770835', 11); - T('11502245241132103500255402550454540604341255554516024022114521111', '1519687960622981585676593638948280395813952883484605445', 7); - T('178ac7i56c101dagac80g7', '994276001910959615043844218', 19); - T('ab32097dd97de47c4f76930046f32a1', '14222362164666534040463596276719497889', 16); - T('h70nie89fkng', '41202353353372466', 25); - T('8dodbheltf29ensgfend90tmv1pe', '367182433456718603593958892406561938835246', 32); - T('2ro6d78uogvvqatywvhy', '1028055008673794181515446812022', 36); - T('a0je', '80394', 20); - T('b0a7m1cbobk4rln', '8334455843425820422974', 31); - T('350', '1562', 22); - T('ad5285g52hdica4c1a0', '1113997739784091562392939', 19); - T('1266513240443235025011542435215551161116052', '445444030178987216515247159044782503', 7); - T('i9fhkgc7a8fehb8', '3339213521202402120908', 28); - T('5pkrtcfr8cerqo8ipka8kme49p6ndm13nj', '32557148939358327987280716163959952063457820750409', 30); - T('d881c3d55a3d9a1ab22155bcba6880a32c831', '2480623568212133413145101410008494284467243', 14); - T('1i181nlbf4ihf2n181jlbc7mjl8kf7ki4n', '6174255537646104877910561539949873285987455223', 24); - T('12100211221201110111200012210221200011120011200201111022212012001101022221120021220010211101212', '1264246371202182024824489688458885819892007097', 3); - T('18p04j', '26779257', 29); - T('175smiphiert0icrad6h69j43ktrobas6tscr', '186110422740954237972811643773335017903308645946068587', 30); - T('j31jf849bhd8ge7ik3', '5562425811185304078419043', 24); - T('aa26298a', '4348115833', 17); - T('a', '10', 20); - T('2005de18a020a0de6882170bc1b43298acb4', '291477737292846364616559097414390155525994', 15); - T('889879000997066842936930294683621095', '889879000997066842936930294683621095', 10); - T('bj0bq0nbka9482gnfj6i', '18376271230937994256598748855', 27); - T('11210022002100211112121001', '1352518851547', 3); - T('5cdb', '28265', 17); - T('wgq0sm8v88qipu4jl55wdmfs3', '185048329912249256046507375601716367543', 34); - T('3hhbfa26a6ag0h657jngjne0gm', '119674172072479416223149913309701526', 24); - T('966fak005ekj9e91ke3ilf7h6', '1534617368221003391050212773784944', 22); - T('1d4ih6d3hgaib', '11991106508998187', 21); - T('40gvpk43a0i7x94g8oo501ccbpu', '26430135653734764560098269423411491767516', 34); - T('240ba639a2b64033773588e7b763b5135', '97942534619350353663913105286511742775', 15); - T('683808a457ab1b61b6d60339831515', '11391383242216318199571205789803407', 14); - T('9gg6j4k35je53jaj150', '6181958445081757496538513', 21); - T('321313001000320223101101313301230313301132212222023131032222013000300000331221311103', '338247732186199822617132923037597361245860046216531', 4); - T('12013123311342314233134100', '421194664960052400', 5); - T('12030220120032122033320002313313221213332313221231133300', '2011157666555401095987816028362736', 4); - T('8a3l4gafc0m2a513hciechb1m1ieh782ijcb', '17095480346983415895985102058484502145825487853547', 24); - T('198c811986971ccf4c7ae1d257bd14617', '543363838528230108444050115794098538007', 16); - T('38o49', '2667729', 30); - T('1da10785dba094271a0853133', '6364020275909582230507693161', 14); - T('25625405646456255440253434530105642535166540551600530343', '85992026238312929162701996737786316819479861911', 7); - T('3bgf2ef5afaa7', '127353903362695543', 24); - T('68dex1o32tn0l6t33k', '677341342496752070722244590', 34); - T('c326c455446c1846b028650b142a90', '2467988856215900113554830957527735', 13); - T('27153a0209195a12442144002943717a72417001a1684', '17551046277853328651208735650016780160738798650', 11); - T('1553004033284', '1553004033284', 10); - T('20', '6', 3); - T('10020022210212022100200110222220122202022001200211121202011221102021101022211', '1967321487242019672711309698612514787', 3); - T('daf3b6d57572ab962da81ba7100ea1c01geb5', '2697762624776499737414767670932022089986035272', 17); - T('2a95800', '13635934', 13); - T('1077854802720401556208188660715424', '33911117740835848829495038574110', 9); - T('7335121015337612327750625531460025777262', '1234844453153886969183275916721651378', 8); - T('253272123047374812418881680107', '12229562920471835831260364707', 9); - T('28246143458208570507420470627448606245', '592047740537531029039695756680392592', 9); - T('88g3531ghe47l3bhg8fe', '6385854850376914436410648932', 26); - T('cg91b18d8ffe17fdda67c94gaf1dcbbe84g', '8877530717131611365758781215750878707501327', 17); - T('11423126362025406', '40931493129918', 7); - T('fnnab926fl7h311dh89ael4', '90707709949122827343223226337404', 25); - T('22041030131244423101', '46420979686026', 5); - T('12lg639iclme7a8jjkfb5m3038hm7c6m2m31andm', '754799287626894199405656579173085804877204040517935374', 24); - T('3l2b3qi100mukf', '89853492206992969252', 31); - T('1fh4g40f1530810bbeh343d2gbfe4h3ag1', '500820818178766703373445527247524807984049', 18); - T('9293939', '9293939', 10); - T('1llcfack6ghai5db9mdcci', '77118891790688562859651405532', 23); - T('11432112034140244342124413210203012021241020023114341233', '385139582158041869703117414736354058943', 5); - T('8308a74a959243410a89116259a', '9867615035253851484907098008', 11); - T('4g99', '44298', 21); - T('2jcht42joa2bkcp8a63agkc', '830760916763039680706280898515012', 30); - T('4ln1cj15bihk299i28fgj27hlmm489md', '30066001737656440754502736608642901647230557', 24); - T('3oea68q9bpjs3eknag8', '8056944497162955537298825205', 33); - T('63eh66a67665gad92fa3eg756eh66gc4', '5090244877148186916553478619985250564812', 18); - T('11111001001000111101010101111010100110110100011001001110111101011011100101010101001111001011', '4819067998434611218882057163', 2); - T('32332430464240256001146045200236310562160661444160', '862436561440195610645043053487346040135069', 7); - T('3033310222001233103003', '14281471358147', 4); - T('1talc3of6pgvtfnki60c319qhip45', '2671445363930637285453293589205968592921733', 32); - T('14b88h2a64h9eb7b180h55d2cc0958cfe', '18546971486428099560785204564726497876220', 18); - T('8bb780bee008d95bb46c61a3', '9858567156569511176401293753', 15); - T('1517cc674d47eaa', '218748902058933633', 17); - T('3h59993b1e5', '14144442895085', 18); - T('2iatvo7gf', '2829242342927', 32); - T('11d21cdf4g8hgbc86h', '14191954690468981059337', 20); - T('12vpsc2rqq', '38476342980442', 32); - T('115bgd5b5f988dag', '7239369780823995736', 18); - T('409n59ne8533o12rh9d7cl', '9856837668406974868410246784661', 28); - T('35076930aa392955480a62237a1a6014710a', '9724207798767279949903395457416695518', 11); - T('425500504', '7550680', 6); - T('kkf221beom61jh2gobcj2k00c9be4', '86524752967035174099147414982995233177380', 26); - T('1', '1', 15); - T('1vuhc0b', '2994074691', 34); - T('53235442050545103344550', '733647565874904402', 6); - T('2j47eqcorpexvwt8k84flrvjj74pa359ja06', '1024286329198622500448450238532515199584215260718394422', 34); - T('1hi4mlgwh5', '71093615250905', 33); - T('4dh68l874m1b2g0k7g8cc1jj23o2l0elmefa', '151263649369190377647518450909854496784718245462152', 26); - T('1240', '469', 7); - T('7kbh51nf8nd4b', '466030895657789486', 25); - T('1000', '8', 2); - T('12wxdup8db', '109782501177503', 36); - T('digcef32fc533448e8aif8db8k3de8a', '64480886700586659856294991683281947655160', 21); - T('4o2', '5150', 33); - T('6008876027824378607323267735681760411', '135448018472400810939023044683257641', 9); - T('3hf', '4285', 35); - T('1d5jockj5o28f3', '2278802922177380378', 25); - T('1eh7b4bnak4elc', '3880602947847388294', 26); - T('4m48kr7afep', '7153362074610172', 33); - T('11fe', '6440', 18); - T('4bd2646ba67c1c8601d579', '5684511546512382995795239', 14); - T('jbb3o', '22939908', 33); - T('441432102412423022113230434443230222200444340410212211422241103', '105764167603788002379416021764167189320118278', 5); - T('693ua2pac7t5', '823025751705624713', 36); - T('1d15a1', '1422151', 15); - T('1858534', '1042906', 9); - T('79342dd90631361gcc54c053875ebb2b3e984aeg1e30', '611944223012432862605426228702591634892516011343824314', 17); - T('ohs99', '41140557', 36); - T('blmkda2', '2276931122', 24); - T('102420314023322220', '850994354685', 5); - T('23', '33', 15); - T('3eaa4c7cfgd88b77', '11049592928959128173', 17); - T('7s2r7enh4klqsg', '432126166790924355568', 33); - T('af4', '5639', 23); - T('f01b522dmn9e7kp0b5g4bheln7mnefbc6jl96', '13037461943521682948211857727883424231962156108335356', 26); - T('kqlwbq282j8u9q9ffxgp468ist7ap3rt', '6216832805199435867202542241926072963789701207623', 34); - T('d96fkii7i20d255i9g6k534', '1649490761867743340632538678272', 21); - T('fcg8ue48', '655411007435', 33); - T('24289nd', '414836341', 24); - T('22122002213302203113021210110221302123', '49145148846184613452955', 4); - T('6vph0up640u4', '251974013283337156', 32); - T('f8cikf0681l0hf8e9g5di6g', '5254646220406358219380292021220', 22); - T('kwao6um7be5rs1h', '86611757767034532188852', 35); - T('e1bl972i5k2l', '78122648549972001', 27); - T('9747', '12877', 11); - T('1lksrr7u', '85911461456', 34); - T('1223322120330131002223033013', '30374623384875975', 4); - T('443214453', '7996065', 6); - T('43c', '2587', 25); - T('2fes8aol48bh81ohpabrasajhmscge2', '518146223108772795960839685944410913480618822', 30); - T('20203024323143413012343010', '621374920377074755', 5); - T('1', '1', 12); - T('aa0lg6h9l', '573814360943', 22); - T('bd70012bbdb53b5d2', '573663294778570368519', 17); - T('239ed10cbbhee855g9', '4802380765995946947237', 18); - T('22uis68', '3221309812', 34); - T('ak7mfor2d869gpkhl505f4e5g0ogeat', '5865849748702540844254563979641472462990066379', 31); - T('5724a97a2c28c9239b4c82c24b86892', '14547506169643477096795713397236176', 13); - T('4328b574c61866', '1286203061783399', 13); - T('104431344433103242341404300000304013211223033122340424034413420031101', '405686721914999412775855564051467307713591564526', 5); - T('2c4sg1lkami', '1017993753533358', 29); - T('1960489310a11299202664431547939a38a48745556a085a1125', '241227213092126499005003956230016230527788026414070835', 11); - T('24s7i5i30os0d914bg1f84d885qe7hh', '161698974156390625196048193402829173858804514', 29); - T('b3908e88kfe9c73hj6g646eh', '83789782476702429147335816721501', 22); - T('240k0f8emlca9mbhl7f1im4gh9e', '4799009126114249598188047801242057739', 25); - T('2l2hdimhe9ghhrlp004ilucb72lo', '49535259940385235819597981796368276475008', 31); - T('0', '0', 31); - T('1bdi1h0be', '58823658866', 21); - T('212122120101112200020020222112010102111210100110121102100101100221220222122120111211100002120022202', '150482228156175231923706170828095340312341047317', 3); - T('94839aa9789403917659313531965350768976a1910078477', '915133389834165806424172578480631193246796372988381', 11); - T('2c6c7bbc371b70c910847334aa68044002', '17063007174308160689263160442437073677', 13); - T('lhvd4rd7wrsutd4trqqkto1n', '1816128740873245045862646604444664981', 33); - T('517lkfo86mjk1n7n2', '117639937337022657004952', 25); - T('44440410224320021021102404200343344202100', '45414259359901534405710537775', 5); - T('1377', '5906', 17); - T('432515211531405012421143504541653342665233161034344', '8065571726594635162433197674859531479206439', 7); - T('81em8f45tl24dc6hd0y', '82918246775638900170726875698', 36); - T('1cnwccs22o75v29bqdwio4n', '3539668494095448715446596413354433', 33); - T('54gl2dtvn42594hv23mq0', '12048842304748264619401149083853', 33); - T('1nddnha9cdm1dn3k7881fefn', '110139605060745517578151640980223', 24); - T('1a57a67650755493', '28851425417366895', 12); - T('699813005753897145482303531413094', '699813005753897145482303531413094', 10); - T('ag69c388dj8i408ha8c7cgj7j0c5', '1451725933112051761879128259646072245', 20); - T('13222222210031111130232321233012312', '565698333742480159158', 4); - T('101110001000011100101111000001100011100000100010101011101011110', '6648324064296392542', 2); - T('65ef9iie9cdh76bab6hiahbciaf251g4f2bdea20g5', '169249660939047170839859107567643191800346320651365749', 19); - T('38f1l', '1114605', 24); - T('7dfga9g84e281b', '77453725087312278', 17); - T('2002430262261656351626655', '384633596358941967644', 7); - T('ca5b8a672pf5ippj', '106581144305861002491231', 29); - T('206114a28e5g9aa12bce3gg', '2373768079789299543687455581', 17); - T('hbga737h34ga1daa', '267564050311526319341', 19); - T('c04129c1c5b256985547a2d5b4', '3034717347366835137853819740169', 15); - T('2038b8395145018b1859143', '6493696699375975441988366', 13); - T('g1lj7d5645g04f425gcjc48h08licbefg36', '320008217406229552036847710020507416486827465931', 23); - T('0', '0', 13); - T('3ac7aa3d08329a2154488194b8a4', '33324072746206645734229083957496', 14); - T('4e4b59ed1eh29bacge4fe', '494027070921698549161073914', 20); - T('4w1yb8rmjxi6pyb73n9mllie3m', '3952815466325008300997301039270247882978', 36); - T('36e657d3mn946713ah31', '548520023861409567040008841', 24); - T('16a7ch7e0a912ldfe', '7852157934742461265249', 23); - T('31301312021120333121103330013313023110303031011300311233032200020', '1172174447792103378391730954993204520968', 4); - T('asb258hmcq158giujfa45rmp1oc2c7h', '6009860777245419450358424932959970683463301731', 31); - T('c72aa5983434a402bd4495bda1a2b0b09c43', '162885167490333694639671517686243008655363', 14); - T('191eg78dadib3g89j7jijeddj53e76ghf0jd', '4997116531571833235829685607931752303798040393', 20); - T('30', '24', 8); - T('16on5ubnnlffa686qdtlv84lis', '476230604866451011428299429332274193508', 35); - T('ft9cwj7p33d7', '1113269202350042901', 34); - T('222925790439a6b0311', '58195492412230313149', 12); - T('17', '20', 13); - T('8', '8', 23); - T('10dbaki28p1n', '36498654162609207', 32); - T('100000001011010111010101110111110011000100', '2211226025156', 2); - T('bdh73e61326i8efc123dajd4gh', '13247082642257436461441956203094688', 21); - T('dic', '14763', 33); - T('475ljmi', '638863244', 23); - T('pmwlato5p5kr38kv5ivw2db2', '2166192468219479078300821352145682277', 33); - T('58888742714214050', '11118073401333810', 9); - T('0', '0', 10); - T('4c2593', '1833263', 13); - T('2blc074gcf338l8jlk2c3j67k5ecc1laa19', '11168027403783839957537190770067466250018138023', 22); - T('306', '873', 17); - T('659aalndqj5fq7ak3i21ar8ms261diqc', '13352886232933446314462823844898280803350736370', 29); - T('5lb81ea5k97h88k55k84b5em3', '20812208971366572877903871625478053', 25); - T('28061a7b781b7', '60998561699095', 13); - T('6el', '4441', 26); - T('12104124041124403124230300122242310313212010422204440432', '401595807449332275707879384828100468242', 5); - T('210643566004062304052414653362624656513146316044622', '3888722318739881008495486311537716495435048', 7); - T('7656785', '7656785', 10); - T('3gc5b628c', '291221927885', 23); - T('5d8dl8f9oi7jao90jc3ok85p0d178d6h0e78p', '4790696230811013371387757230147247746151708935785013', 26); - T('45a355325a01', '3334702939489', 12); - T('el2332dj142d8g5e209ic7l1g044', '274326948468708524021808420509292687460', 24); - T('2bb4acc4577310d1dc56ddc5', '652844989883241073588460089', 14); - T('3434042fa72b6bd086b5f583063b090b', '69389940122557978795038540059404601611', 16); - T('10', '12', 12); - T('59lfgd01ajhfgcl50pa7m777oci1fpold8oka', '18134178311410518122324250615259547644252541479219723', 27); - T('22863533366602308470', '3147168928563013941', 9); - T('11101321001230312030213211322212211323102102121300201321020230123221032313033012020', '30864269282351344438300145758376863318773480616328', 4); - T('ka5jkl9jmgi1l20ib7', '2883890885775240798488435', 23); - T('16a', '257', 13); - T('22290a2215173a54a2866671510381', '3498085275681756354531507766449', 11); - T('4ateqc7a602u7gk5nc', '468363582187112718878299310', 34); - T('2jwrhlp1l2vqwimc', '242669198145793186437824', 34); - T('5180a950fe82c6376276a586c25b5c5c5b4bb8a21e0e', '30493736786942864405814520647491453938628818133720590', 16); - T('7gc9dhde97qh7jrkk9m8k', '1339208418660774078243962406520', 29); - T('2', '2', 35); - T('2hqggl57gf4car', '296547907725312545952', 35); - T('1obhfn', '44052773', 30); - T('220b1g837h468i0k8jacj0e99aiacggab3gah6i', '367971859156278151681088478078597463542565116078876', 21); - T('3slhbeqb4fs', '2336752270561078', 30); - T('9fba9dfiic', '5006751007572', 20); - T('b', '11', 12); - T('2110202112212000201220021021210110220212212212112010001001010121202000211210122220021011022122100020', '424779974687314802132686329219551262844631379471', 3); - T('31203310131012230200332011301222023130222203021231301133221212022012002311220', '19353023903212453342031170287295730056309517672', 4); - T('12001011211102022121100010111200221002020222001222102222110', '7918767309016358932950862671', 3); - T('1kn191giko39rmnanmami0d1okcpop', '1618267741799710951160698245596470368688201', 28); - T('g274590g3d339433f5409g57aa', '93153789439900839502721798769381', 17); - T('114355421113441052252531344454145320425502543355542230230341301', '2280710056712985171545633285649256127813531828005', 6); - T('1qljg9b4onpip210ejgjhqnefbi4o5qgqf171h', '181934681040486653100111314188490441438192036830569569', 27); - T('1f3ln0rfhp32cpc2k2beaal9n', '83073842895898744962751209714293987', 28); - T('3044620105315260006022454051154200600403020322442401', '38975248796668312873816449082327954581130266', 7); - T('qarcu5jd9g', '926730400937264', 32); - T('iadt27f', '39809934699', 36); - T('as5j6jwsn2wuwu6dqvfwj9n2h1fso', '35806720670061293860275908093366493122960685', 33); - T('132d1db', '13814306', 15); - T('411012421314204032222021003244034241431110203114102110230332323023140', '1437423683089410133923877953778402432419614657920', 5); - T('102011112011201122022120122011110120022212111021022121002011012101002120201211000012102001', '3610012680809677846077512759850762511638841', 3); - T('sko63peesntu0s4c1', '20855468818550929727982949', 31); - T('h101l8itb07n6mnp5g7kggk8', '340873021541152980574045898573575730', 31); - T('gigfd6gchl594h48', '4483240787334541323255', 23); - T('2', '2', 26); - T('112202120112212021201212101012112122', '82063252134576179', 3); - T('56tlfci3sa3hqhpffc0q', '206645898643826543326651723802', 32); - T('2121101511515344340504024322521', '492478309307736431418289', 6); - T('233422333052445505304550245302554', '20722197983174609053233382', 6); - T('o0o6891a38fja50', '4375044340632128174956', 28); - T('120', '15', 3); - T('21df8f125ccc4e84669f376gb7ge01', '1015491273332046568254634184570102293', 17); - T('35', '23', 6); - T('76106836474581565261076641176', '4019346106874600080591778073', 9); - T('3242036325015165633012605001064', '76034468686471006247354977', 7); - T('13853', '19660', 11); - T('352228197670828676ba38543645b14c8cb97381390186', '455621468378412697751523794288599424284167924062650', 13); - T('310021201233200323033001011', '14678599968550981', 4); - T('37695a9a311a90591393119a455327061a70971a303844', '269193409032346768263122865173174114039542613433', 11); - T('646633456716673131010714325300106141144242503123341513', '4827567010183340607788016828465978158946284585803', 8); - T('22b4ii1ja8al3k7k', '289377107308771432278', 22); - T('ih9d74iag888edgh9353249gjee8de', '4161419813368104831931925475084453352109', 21); - T('162h6a56', '1183359545', 19); - T('2aec2jgh06a44k1e618ufe6f', '46782205842419322443177514531945486', 31); - T('10i0', '7201', 19); - T('6e1b6e52c50', '7566505880656', 16); - T('1303233011232220000220310210110013123101110100121332', '9169532676641029580010283927166', 4); - T('2021221000010221012012111012002211011020001111221121012221010112201220', '1913712624254749235264041459373475', 3); - T('12cb0870cg1d44ceaj86117c6je3bd', '60740372923005851819292324387350353433', 20); - T('fqh3nncclo676i9r13', '63746881387506157315801231', 28); - T('2081ba3de80c6bc3d9a207a9e6e5bdge7', '4802181797263059228848555176663651746850', 17); - T('3ns0n2ko3or9r6mj771nfjtq2fn0k5n3b6lp', '523414838800055605983731383323409728575668144200587581', 33); - T('91mtn4gb7wnu7cfccs83s1itjh13avveqgs', '38564386619239951649280680768419728687062773517031904', 33); - T('2507b59222357', '21588297587059', 12); - T('1106210331', '46860486', 7); - T('1sm2mcchi19gi0cbhlkqdg', '10223546271608775170591367519586', 29); - T('a69782f103d9079c642dab9f5f67ae95g', '24592196044693731193607035015722190314492', 17); - T('dheh2fkd58g6d717k', '19803533608478567457194', 21); - T('977a3cf2b2f06c31b3d', '44708264591227581831997', 16); - T('bd', '332', 29); - T('8f9d8f622523e29d1a5he3gee466b7', '22413217136939225587842352555546632085', 18); - T('34647345400115736740552300416234100512013623645', '1255594995624059221065714883120130755078053', 8); - T('7oil9emi1ohrf04kd6kaedpi7rmd', '23966690311520969626701508915977431159381', 29); - T('95061gh908e', '33129740894198', 18); - T('110323', '110323', 10); - T('111000010011100011011111000001110100100', '483660891044', 2); - T('1122330122230000320332100231301', '1638301738278128497', 4); - T('3031312222103303', '3453658355', 4); - T('b9050a53cb2c53da260601ac128b1473b5', '773309649386529398888490649351437452755', 14); - T('46f36cjc8ig0l46k', '21581257987125141435836', 28); - T('21112102102121201212112112010221211020210222102201', '600976178399514404402164', 3); - T('55031522323232530221104331123', '35916460467127317955419', 6); - T('210111220001111021222122101100100112110120020211111112000111121201101102200211101100012', '257582427859456290317258827836081071349119', 3); - T('cai', '6046', 22); - T('238d459b304a504cc07bde524ffcae', '184595724574603234807440528928406702', 16); - T('2951804f7cc040bcabed937dfc07518ebf0c31156972', '15459035341493840021436449671050677487751991559285106', 16); - T('151441535252450114333525025131221241533434151002030110022341253', '3312988709769295474234430270673909304036864754721', 6); - T('12pf7eg0pst560r56145b38oobrssdgp7p', '17896886417737298981574606954732052710804772615521', 31); - T('102120201012022112102002220002111020022000011', '1267278558139797333142', 3); - T('20723mjbpikg211', '219900549758957593129', 27); - T('1ba7469629c55971709096531a043', '29589979360351359186903406966085', 13); - T('43cd87pke82', '583569798239066', 26); - T('2f3b', '32349', 23); - T('1damenblocm6ab16mkhflkln51l80g0gl3', '20836281970872115708071405659370250984625401153', 25); - T('6460334362676710', '232026545028552', 8); - T('eh5eu5yo4r85a4frk38fd1upg', '325027824752333280420002134397968014004', 36); - T('1312782233174508777', '1312782233174508777', 10); - T('13341105311220530305055542233251', '2125986301582477786880095', 6); - T('28urr93jo6qpp', '7615780104185501875', 35); - T('f3kc6d1oa2', '57803286359002', 25); - T('196d506730f12e3862g428100f99b6351d9683230', '25650422510765543578389928836906473834731647075211', 17); - T('6in', '3911', 24); - T('c662fh1059662042ac1bfa666892d54g4c19', '1062397772598878889201653207165639773092410283', 18); - T('1100110100110100011011000', '26896600', 2); - T('1reie79ejmki9eqggo2e8mom', '8410869246547671114783597667970876', 29); - T('a26h7h373038ek', '25026850135788158392', 26); - T('2003411221003313233000121410241302', '236418010553527903993327', 5); - T('50', '65', 13); - T('jdw2giryepgsnq', '2294207897977458246131', 35); - T('76510257774b970163b3c8c8a', '4066438635725967850597253288', 13); - T('881261b58a1a705b4412aa7', '4789169271296447376594079', 12); - T('8172b1296abb', '32834523435949', 14); - T('m7kj0jj6rfhi3q', '144843484516465224782', 28); - T('16gb3e90d946cg4ba661f59d2ag3eb817ef0', '16410164287267896045565877674991970376204845', 17); - T('30441908a9', '7159171908', 11); - T('1110110001001101110110101111110100001000011011100111000000100111110010011011000010011001111011101010010010111111101000001011011', '157051027737987715731727950696316653659', 2); - T('j7dfe8bgehjc2824', '635190155180670739244', 20); - T('17586g4dc5508hbe66', '3072863740457400701010', 18); - T('mfdhdib7gopble944bpae1cp7ka', '139110764181166732714408251267873085654', 26); - T('4bk1', '54948', 23); - T('4ldem65kinihnm8ca0d920pp4l13cnkh', '1130287125754563991765159720269473592208232147', 27); - T('d', '13', 32); - T('22021020021202211022121010121222010211120', '33506058087887919765', 3); - T('206f4gc65g7egi54j3974j3', '247259714587053476909557142490', 21); - T('4340502440403450033340223225211113442201423010504331313333', '1044228835950034098828612572961883231947980025', 6); - T('2pfsk9mg1br1i1h075eo63s662hr6gf', '214533693113801145357049577189458281793615667', 29); - T('habul6f3kihm3iw1r4', '1130144535004513737852095539', 33); - T('106142331346752221011206', '647409104513791169158', 8); - T('26kb58ddmhgb9tla', '131895300538724358011221', 33); - T('362mijf4bm4mf45jgl0mg37ae6b2h7dfhklhgj', '790707811699113166404310250374840626288935161894479', 23); - T('24aa9ha47hnegimefm9pdj52qko', '35513399551075834816632034861432466181', 27); - T('1a9m96mie3djkfg667h9eje4c0lm50icmc3ikc3', '8093079648301893331997032028152019456512853100012045', 23); - T('cjbdn0gtpput38l6uojrop6umhqebl1dm1p', '6419814410380460676020581102194375113413420245954298', 31); - T('1ueohaa067uco1pdgqrvmhu0vaa8leo', '2785874481951992854286001892766607754475623896', 32); - T('10101101101110101011101100011100010010011011011011000110111000010000001001110111010100111', '420051957077295313153486503', 2); - T('85hcg94l7j', '14860540241390', 23); - T('4a2976868d892ba0b7bd344d', '1085472931427423803725237293', 14); - T('7kkh3nb7lo', '59243621828973', 27); - T('1', '1', 26); - T('1ibd5pfbokd6440j', '2866994109825495814339', 26); - T('86ng8fec', '349615744710', 33); - T('1143620362656535460140621434022160305663163240152242650105202', '627843320628203251128147470398864437340326997590198', 7); - T('11262714046100646006', '168424020893715462', 8); - T('15c8h01dg8f65ed11cdh7c83ig045e9724641af1fc7', '661948366072223304375223910664218120820427365067153516', 19); - T('80a3b23b04454916925a67938b576c75b198719c3a44', '6396600297150246995243740339198009449377618885444', 13); - T('1h8g5ebb0', '21730642290', 18); - T('15121883734821931848157630403646710115517496961539', '15121883734821931848157630403646710115517496961539', 10); - T('157qf44ko15e72hl', '3533762244672772908501', 27); - T('9fe9i2fce0b23165bj', '128270183554062217810239', 20); - T('204d4d06851de5e6c3b5c782368be873d2c2c6772', '223548940289723451071978777163310740220641882557', 15); - T('hk05hcaki071ibakf80d42la0h51le5a19', '15457671916002610271027881255899341664819386332', 23); - T('12758858347410587602318353440470122424758747174736144', '54973361258053823259500795020716385085006902031623', 9); - T('1j0dq', '1489979', 31); - T('24aa49b2669b4253417185039422b', '3970774336620668082561214323011', 12); - T('1j3k0h752f1i35178l4a8892l49hl8g72le7', '3649735432337234577942518835984846875540064046231', 24); - T('u946d', '31756493', 32); - T('11d', '319', 17); - T('a', '10', 20); - T('85857450422153021232718260', '6218664865094656817286525', 9); - T('b3bi9egmaa489d8j912m1j7f', '1582915351549542449793908963699565', 25); - T('8c94c1101a3', '2575764487747', 14); - T('21333351424', '137058856', 6); - T('24ouud1zekrdeh0jduf8dlol67v2rf', '2892087283574736646554249773057595661742288571', 36); - T('6tcd6nql2v4g2eiigj17qoti', '287377925910774326349880592997114802', 32); - T('1ibdb8g6j16hfd23ec0ic3if6e89h483a07c', '6628668718711417889748955044148576508442160152', 20); - T('200221012011220100010', '7335045156', 3); - T('19l7ie1', '425580221', 26); - T('5bjl8kdk9qeo3njnlq745io7offama41ho', '933615638563870486919671786607965571836873833306', 27); - T('10232113020220300130312200101010', '5446860259502720068', 4); - T('2b0a983ec857ac84ef5f', '203257196630153042915167', 16); - T('44eo3qm2rj1egr54tcsdw', '31399246023982509778025476029912', 35); - T('5hl2j3n9lqrf4ht', '15223157365873501989655', 34); - T('1j61dcjc28ng223fdle5pd53a562b', '20497069428386502186259631448700342382939', 27); - T('92m0p9wswvxpbygoscf0iyvma0gw33re', '6667479639141447629959640648792959413993639675134', 35); - T('44ebf64ca6d7048632dc366985bacf6ca72f55bb89cb3', '412586872136786946015831424411703662517991501351918771', 16); - T('2231322212032013010310223312202202203233202032131202213103310320', '231173459396011136566504537253511773496', 4); - T('102222033224112043100201233424410310321401141431030120233342110002', '2981250760563381516328738717816795815564019377', 5); - T('bna8v0dm7nj6ukvl14guf5jd86sdur8fqs9b', '561697417712642337267267807468369856115722296542196011', 32); - T('246765a34371a64810230863090826259630999766341a98', '21334345633150250304537292228376342238910313741910', 11); - T('dd6', '3126', 15); - T('rj1kox5jiucmuo9sln77v', '209599559372534093290729866417476', 35); - T('8pamgcke1q3dcfa43rji8gdg5r5bno', '8266027891125368114649885016554443139962892', 28); - T('15877a7a507508a5380306', '67933623548690544541110', 12); - T('310576032000120564437670443150', '485374511652821184626706024', 8); - T('2k304b20fii7', '1036543616885140', 21); - T('rvv6dkvip7h2', '1413563599986560420', 33); - T('7s2rncsirvsn0zf', '47775999829788212268219', 36); - T('5', '5', 8, 29); - T('2010', '57', 3); - T('3', '3', 35); - T('1', '1', 20); - T('b', '11', 29); - T('a', '10', 13); - T('7996x17', '11234850765', 34); - T('31020102013113030130222221321300302', '968780395378242985010', 4); - T('193629493c71666081307a037a449b05b732ad8a97dc96', '6251429966945048736162286407414968313191335468772060', 14); - T('102', '27', 5); - T('36471522780078332870256412616321566881211129236', '36471522780078332870256412616321566881211129236.0', 10); - T('2u', '100', 35); - - /* - * Base conversion of numbers with fraction digits. - */ - - BigNumber.config({DECIMAL_PLACES : 40}); - - T('111010110111100110100010101.1110000001100101001000101100010001111011', '123456789.87654321', 2); - T('22121022020212200.21220000000000000000102121210212220222', '123456789.87654321', 3); - T('13112330310111.3200121102023010132301212212301102120322', '123456789.87654321', 4); - T('223101104124.4142404432120310240400022100414412423341', '123456789.87654321', 5); - T('20130035113.5132000000001340141333022243243025133004', '123456789.87654321', 6); - T('3026236221.6064403011334606121545601461612144044112', '123456789.87654321', 7); - T('726746425.7006244261075431515424461645053746213677', '123456789.87654321', 8); - T('277266780.7800000000377725827886511007881184436767', '123456789.87654321', 9); - T('123456789.87654321', '123456789.87654321', 10); - T('63762a05.97075184709912960846746215397a86192585a2', '123456789.87654321', 11); - T('35418a99.a628000007789055192b3628390573a7a2093441', '123456789.87654321', 12); - T('1c767471.b519c4868b1097b4ab6aa9a1723b0b21a6834568', '123456789.87654321', 13); - T('12579781.c3b33d92601697558b8c4217cc4256dc8d8251c2', '123456789.87654321', 14); - T('ac89bc9.d23500004b2d0ee1c3a587694b2d0ee1c3a58769', '123456789.87654321', 15); - T('75bcd15.e06522c47b19a6c5263a515f9917be8d99dc09ac', '123456789.87654321', 16); - T('51g2a21.ef57d03a8cgd3agbgc44442b7d2c05fc56078b69', '123456789.87654321', 17); - T('3b60f89.fe00000168e6c74b51df90hacd964c0b952hf19h', '123456789.87654321', 18); - T('2bg64ae.gc83iea83dahi6920iec351gdb575cb1i205e999', '123456789.87654321', 19); - T('1ibc1j9.hac6i58g', '123456789.87654321', 20); - T('194gh7f.i8be0004e152hj60858if8541gfd51d14c1cjh46', '123456789.87654321', 21); - T('11l0805.j659b300hckla2kfh6791k6e489lja79665cd85d', '123456789.87654321', 22); - T('j43jfb.k3fkgh7iaikallm5ld5l47c0lh1b394iiha9mjj5', '123456789.87654321', 23); - T('fc2egl.l0l8000de3dkkk84l18cfhfj5k6ng87104gm68de', '123456789.87654321', 24); - T('cg15le.lmkoh735e402b0lo7mil4jfi1gcend9bka68h736', '123456789.87654321', 25); - T('aa44a1.mke35bnk8b6ae897kbonpl0638c53p7k0ibnicnf', '123456789.87654321', 26); - T('8g86ni.ni000017nbhknqjj30nq3hdckfjimd6cg8362di', '123456789.87654321', 27); - T('74nqb1.of5of5q5no17dm376akr5mnoq4fk7he0jd67r8gq', '123456789.87654321', 28); - T('60fshj.pc50ab4snn27loqe7k2s613d49gjaqrd4946b13h', '123456789.87654321', 29); - T('52ce69.q8qk002l', '123456789.87654321', 30); - T('49l302.r5b31sdanlg0n9b2jbo82q36ktamkp3n44t0m3n8', '123456789.87654321', 31); - T('3lnj8l.s1ii5h3r36jca9hqa5fpi5tuhmcto2dbklfsmr55', '123456789.87654321', 32); - T('353c3r.suib0058kqr7q9iohe4pas21t9v8rffjah1e8oes', '123456789.87654321', 33); - T('2od2i1.tr9m8dl5x4jwgbkmsvo3lb5k6sd50xl474rb0n5w', '123456789.87654321', 34); - T('2c9g1t.unqrmvqxffpa8v182bc5uqn3o6y1hm9yb2kw4hvu', '123456789.87654321', 35); - T('21i3v9.vk00009oa9l2ergih9i3ifctpatt1sllqhw4o9hj', '123456789.87654321', 36); - - T('-0.000000000000000000000010000100100011111', '-0.000000123456789', 2); - T('-0.00000000000000120221110121121000110122', '-0.000000123456789', 3); - T('-0.0000000000020102033202303032333033113213', '-0.000000123456789', 4); - T('-0.0000000001100323001142032114244204230204', '-0.000000123456789', 5); - T('-0.00000000112442331005030241312503143243', '-0.000000123456789', 6); - T('-0.000000004660541461650644523626454412226', '-0.000000123456789', 7); - T('-0.0000000204437054635763657165267673054542', '-0.000000123456789', 8); - T('-0.0000000527417530418033652056622672708124', '-0.000000123456789', 9); - T('-0.000000123456789', '-0.000000123456789', 10); - T('-0.000000245117320941291484571aaa0235019322', '-0.000000123456789', 11); - T('-0.00000045101516b79ab1643486a1288795277265', '-0.000000123456789', 12); - T('-0.000000799274a18803c248320ac075c404ba5975', '-0.000000123456789', 13); - T('-0.000000d02a645405ac4b02291d9cbb648b47158c', '-0.000000123456789', 14); - T('-0.0000016161613d9213b1295d5d28b0123018bd3d', '-0.000000123456789', 15); - T('-0.000002123e2ccefcf5e755beec5961bda3d5a3b9', '-0.000000123456789', 16); - T('-0.000002gb3824a5dgc3c94740391g0b68g0b0d3a6', '-0.000000123456789', 17); - T('-0.0000043a8e79ddh532d9ah5e95b67f4fde164c7f', '-0.000000123456789', 18); - T('-0.000005f6die5i258a658924f283g9hda0546dbbd', '-0.000000123456789', 19); - T('-0.000007i09ha7ehc', '-0.000000123456789', 20); - T('-0.00000ac7a5b9ki452k9b6hc6g5de80gijbgdfhk6', '-0.000000123456789', 21); - T('-0.00000dlkhch59368552ebd4aefei934f6f9gg6ah', '-0.000000123456789', 22); - T('-0.00000i680c15bl2f7jf4eem12mh044d0kf6bbhdf', '-0.000000123456789', 23); - T('-0.00000ne5d1jjel1l33b9mea8f6hc5e688d15bb27', '-0.000000123456789', 24); - T('-0.0000153d06m3b9em4d244h8obma81364m9lf0h6d', '-0.000000123456789', 25); - T('-0.00001c3f328n1m7gim7p3bggi0jca71ij39p0p52', '-0.000000123456789', 26); - T('-0.00001kmaml1ao3b565k28789obc8mnh07mp5jlkq', '-0.000000123456789', 27); - T('-0.000023dm65kb1mq249apf333lel8j10r4bb7apmp', '-0.000000123456789', 28); - T('-0.00002fchnj3o82292e8l6bdfb8oo4jn8cnii16rg', '-0.000000123456789', 29); - T('-0.00002ttttta2se3', '-0.000000123456789', 30); - T('-0.00003ghj5qf0acg3e8d7gu5nejhkdkuijosts68f', '-0.000000123456789', 31); - T('-0.000044hu5j7fptf7amveomb1nmhtb8tpa44tetc7', '-0.000000123456789', 32); - T('-0.00004rehmrkfsfqvq5pm8qifcooiapip4rww68ii', '-0.000000123456789', 33); - T('-0.00005koccwr5vqq0bsl049v1qwqp9h8tshw38asu', '-0.000000123456789', 34); - T('-0.00006gx4anjwlqb0xla3iwgv0548y4t32r88wwxm', '-0.000000123456789', 35); - T('-0.00007gql6532pjh3akr03dh8iwkobdh4sshi00s9', '-0.000000123456789', 36); - - T('1111100111.11111111101111100111011011001000101101', '999.999', 2); - T('1101000.2222220210221200021112101120001001102122', '999.999', 3); - T('33213.3333233213123020231003211120010012021032', '999.999', 4); - T('12444.4444141414141414141414141414141414141414', '999.999', 5); - T('4343.5554412021453552313300510342441202145355', '999.999', 6); - T('2625.6664412312515410253566644123125154102536', '999.999', 7); - T('1747.7773716662132071260101422335136152375747', '999.999', 8); - T('1330.8882385024534603137817105667427164213206', '999.999', 9); - T('999.999', '999.999', 10); - T('829.aa973a4913443083925788751826a12209617036', '999.999', 11); - T('6b3.bba3320237938b1770119a7a5699606ab3b294a9', '999.999', 12); - T('5bb.ccaa5926381c699320b4278283cb62c494684889', '999.999', 13); - T('515.ddb38266d3049bdac14b5d165539a5b770ad942', '999.999', 14); - T('469.eeb9595959595959595959595959595959595959', '999.999', 15); - T('3e7.ffbe76c8b4395810624dd2f1a9fbe76c8b439581', '999.999', 16); - T('37d.ggc18275989641138dge6d54eg08g529aeb6faa1', '999.999', 17); - T('319.hhc307dh7b6deeha40a6b43307dh7b6deeha40a7', '999.999', 18); - T('2eb.iic2ch24i43efhgd61307b0e199g6fb74a55dcac', '999.999', 19); - T('29j.jjc', '999.999', 20); - T('25c.kkbfaii9d8gg7b6ee594cc372aa15087k2j65i0h', '999.999', 21); - T('219.llb7g822a4ceh5a0fag44k937cak18la89ii6f3', '999.999', 22); - T('1ka.mmaj3f2cgc81fe490kebi8f9m173blcfb08mj6j3', '999.999', 23); - T('1hf.nna4590djiena4590djiena4590djiena4590djj', '999.999', 24); - T('1eo.oo99999999999999999999999999999999999999', '999.999', 25); - T('1cb.pp8b0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb1', '999.999', 26); - T('1a0.qq78f2dle09cnjl9h6mblfcj9ij58geni8qkbn0n', '999.999', 27); - T('17j.rr619hjdigg3g9nr2pf067h6qc2j7ar95474jjq6', '999.999', 28); - T('15d.ss4hkojk13n4rnf1dpo9ham09782ifbgg63d28cl', '999.999', 29); - T('139.tt3', '999.999', 30); - T('117.uu16eq9rha657cl1g2ngcbdir7m8tmihjp2dsf4t', '999.999', 31); - T('v7.vuv7di5k75c10oidqboqjuv7di5k75c10oidqbor', '999.999', 32); - T('u9.wvu22k10p1i619fhuaq3d5gsfqkr584weg2bahcu', '999.999', 33); - T('td.xwsnmjjt3i7kw38x68nvs0igtcqmabee4ufqd1up', '999.999', 34); - T('sj.yxr4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4', '999.999', 35); - T('rr.zypcdtnwjl0v3qs82axzf9i56mgpcdtnwjl0v3qs', '999.999', 36); - - T('-11111100001000110000100000101.010000000010101111110001111101011011111', '-528769285.2506705498654986754987694357629487612132293856', 2); - T('-1100211222021002121.0202022012211211020000112211222001122022', '-528769285.2506705498654986754987694357629487612132293856', 3); - T('-133201012010011.100002233301331123320132210223310233313', '-528769285.2506705498654986754987694357629487612132293856', 4); - T('-2040331104120.1111313304243240343040303403011030102242', '-528769285.2506705498654986754987694357629487612132293856', 5); - T('-124245205541.1300511413330341000202421140342015422521', '-528769285.2506705498654986754987694357629487612132293856', 6); - T('-16050315262.151660065566343455213220110101053003165', '-528769285.2506705498654986754987694357629487612132293856', 7); - T('-3741060405.2002576175337036445364576675624305775126', '-528769285.2506705498654986754987694357629487612132293856', 8); - T('-1324867077.2226575420048486156768436757465017711084', '-528769285.2506705498654986754987694357629487612132293856', 9); - T('-528769285.2506705498654986754987694357629487612132', '-528769285.2506705498654986754987694357629487612132293856', 10); - T('-251527210.283708196291157004318811823a797729578835', '-528769285.2506705498654986754987694357629487612132293856', 11); - T('-1291008b1.3011aa3020304260b7471b3b999021bb3a506156', '-528769285.2506705498654986754987694357629487612132293856', 12); - T('-85718b45.334952b34b55677529b07439635a477982384a29', '-528769285.2506705498654986754987694357629487612132293856', 13); - T('-50324269.371ba8d021dbbc4126c65231444dc79c599697d2', '-528769285.2506705498654986754987694357629487612132293856', 14); - T('-3164c5aa.3b602e37331cb4ab53c1d9ea705a303460358648', '-528769285.2506705498654986754987694357629487612132293856', 15); - T('-1f846105.402bf1f5be1e92bd2fdbdca317fa561bb1faaa3c', '-528769285.2506705498654986754987694357629487612132293856', 16); - T('-14f6g98a.447945bd7f0c37e8e036c8fbc7a1d008497609c1', '-528769285.2506705498654986754987694357629487612132293856', 17); - T('-f9f0fh7.493g70g118a7h80g41g45g3gg949bgd4f09b38c', '-528769285.2506705498654986754987694357629487612132293856', 18); - T('-b4a85g7.4e96c1g631eg54cf768317heedhbdda82ahibb33', '-528769285.2506705498654986754987694357629487612132293856', 19); - T('-854g345.50575f3gb2e2b9ieh985jejd269643cd6jej3864', '-528769285.2506705498654986754987694357629487612132293856', 20); - T('-639i76g.55b9dhejadf10886ckb3i4j5k98665g2fha9gg01', '-528769285.2506705498654986754987694357629487612132293856', 21); - T('-4ed50bb.5b731gj7dd9h3glc4l0klc9a045ge23kk7bd6j92', '-528769285.2506705498654986754987694357629487612132293856', 22); - T('-3d3c6jl.5hdkkefmkeehafcj40549634532b5d5h71086igg', '-528769285.2506705498654986754987694357629487612132293856', 23); - T('-2i9i25d.6096b81j2ibkf632ij9im7mn99i4eh131a5e1m2g', '-528769285.2506705498654986754987694357629487612132293856', 24); - T('-243g5la.66gi4ehkjfkfj315f5clhm4245dlc3ej08if7c3l', '-528769285.2506705498654986754987694357629487612132293856', 25); - T('-1id2j25.6dbkb1b61h5bnlbjp2j2427877ij0pg9c1o83n6b', '-528769285.2506705498654986754987694357629487612132293856', 26); - T('-19mq72g.6kjpgb04phiekfpckemff1na38d6ch6h415ooqlj', '-528769285.2506705498654986754987694357629487612132293856', 27); - T('-12k7eh9.70ek4bdb4kl74bh5qkdp80knqo3mrdkk9gg8372j', '-528769285.2506705498654986754987694357629487612132293856', 28); - T('-pmhili.77nhesre540gfoa1jc92cjc1a4m9rsn2pbe50ol2', '-528769285.2506705498654986754987694357629487612132293856', 29); - T('-lmo1cp.7fi34apgmi9bi550j3l1bdrd6kqge8q96omh2p3c', '-528769285.2506705498654986754987694357629487612132293856', 30); - T('-ieh95m.7nrmg0mdld46iuei3r1iqfti50kmeh6qjrjqushs', '-528769285.2506705498654986754987694357629487612132293856', 31); - T('-fo8o85.80lv3tdu3q9bqburrihhfuim3eovlahs5v6issil', '-528769285.2506705498654986754987694357629487612132293856', 32); - T('-dgsptm.88wbffuf1iuge976daspjacn1ukmb6oj3hrd5n1e', '-528769285.2506705498654986754987694357629487612132293856', 33); - T('-blnatr.8hqc2odcp1864oww4beqbp7icwpn958xqlrrjxwp', '-528769285.2506705498654986754987694357629487612132293856', 34); - T('-a2csdu.8r2hha0ljcurhoj7k0mxnog67x20nouvourt0a0h', '-528769285.2506705498654986754987694357629487612132293856', 35); - T('-8qtczp.90va9l3p022q7omcbqhd0lglz0rlmrd2cbt4mg5a', '-528769285.2506705498654986754987694357629487612132293856', 36); - - T('316.6', '696.4', 15); - - BigNumber.config({DECIMAL_PLACES : 18}); - T('50960021014244268687a1886463130.16672a1420499a6247', '88623581339673073949500137313245.1455', 11); - - BigNumber.config({DECIMAL_PLACES : 39}); - T('ma.5i9g6fhdj9d8laa7kel9gjlf93c8f746i7mci28', '516.25221568916508446316309948501759661238267291', 23); - - BigNumber.config({DECIMAL_PLACES : 100}); - T('h9rdl18jd.q051dhn7aspg6k8dmp5l63g18ge2cj8c1n08biondk1ni2ksir9chonjaoqc0fnr8sh3a6o01d470fccm00pjj9kkl8gr886b2ic', '8675779666304.89675881218833', 29); - - BigNumber.config({DECIMAL_PLACES : 16}); - T('1669699d2446c13b6032b4859b851db2c71996094896.03cc46a11973cc47', '28095859731039155813921318494826179694928140368916.02', 14); - - BigNumber.config({DECIMAL_PLACES : 44}); - T('433eejca0g5g2hi3h81hfa8j5b.784a9id7lifghgg1kalc2d99j7jc674bh0a6ka4b6hci', '15065394735668576931388972794395685.335131', 22); - - BigNumber.config({DECIMAL_PLACES : 92}); - T('35076567745235671502.6773342626436061433365155137731076310010275236050103305437451411644055625324564421515511562', '524624822785241922.8738874407101262195488876445', 8); - - BigNumber.config({DECIMAL_PLACES : 23}); - T('11006433654634662212602033613520122341643062434012145010.52425140460600403610425', '34628562545096914224971102777355168736669856771.7679078074649', 7); - - BigNumber.config({DECIMAL_PLACES : 60}); - T('1p66mbi9fn3c1lmpqm9alc3n108lp111949qmoqj.arca8c1fkqqd9nibi2aqg5gm8a86rgfo831godj8q1gcqdjcbh62fih9fbd3', '522521559789778545185676538833457746453383246746454589675.392145039', 28); - - BigNumber.config({DECIMAL_PLACES : 44}); - T('5605470434246053632363152113440650264426323520.33525466364076204553563061761202201336001507', '250925107172835956608925073908081234650960.4323', 8); - - BigNumber.config({DECIMAL_PLACES : 47}); - T('5jljm2eeb7a91jaf55dm6de44.iddl2d32kn3cnlif2ggdemk41h1mibm7gh560403846n52c', '7775100815978012670733930388143588.77357345356039222606783162331270073', 24); - - BigNumber.config({DECIMAL_PLACES : 66}); - T('15jhag4hd9gfb34e9k3h28642al6.g515a6bg2ige2kekcji73f69khefeeg3d0k8gb641g73a3kk75dl3lld08l8047j1b', '2231466155455967642494664913445902444.737720562308164842135964809152', 22); - - BigNumber.config({DECIMAL_PLACES : 59}); - T('922957026721a93.35228440098a1382a5360815162596954a2352084859a278208a1929945', '3495784831845804.315740956312801540001007380273089678135993838516', 11); - - BigNumber.config({DECIMAL_PLACES : 31}); - T('2321136.6635426603020156550074200106655', '631390.850962999306313972719936135603917', 8); - - BigNumber.config({DECIMAL_PLACES : 42}); - T('4122015524443344205255.532130505243523353120213333531354112005131', '92831400808748387.9271017366', 6); - - BigNumber.config({DECIMAL_PLACES : 7}); - T('f.8gkgp2r', '15.28520597106195746386586', 30); - - BigNumber.config({DECIMAL_PLACES : 64}); - T('4.3453j4kjj0gld74h3kf2eh7kiabgdfj91lm47df8knn08mlmg34llmen8b70nfgg', '4.1323175881243', 24); - - BigNumber.config({DECIMAL_PLACES : 16}); - T('11fci0nrj42co0h.p63gsr4rg512kr8a', '502434965914740165617.8401320537228150118206441', 30); - - BigNumber.config({DECIMAL_PLACES : 59}); - T('2jpeg4chfcljgn44g7ljm696j7ecfng2hifi79d5fk9e.naaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', '19324647245541042665522682085850732286789183586270685673003472.9', 26); - - BigNumber.config({DECIMAL_PLACES : 72}); - T('4ki4c4d5ha22d8925b4005bh88m7ki.30kg3hdo30h263k596n8ca1bfd4eig7hljakomdo30h263k596n8ca1bfd4eig7hljakomdo', '167542618104881367375225493908762776911143.12132133912', 25); - - BigNumber.config({DECIMAL_PLACES : 78}); - T('4544322.235145104224010425054333530135545110521301445400530023102335504152042532410303', '231674.441212', 6); - - BigNumber.config({DECIMAL_PLACES : 12}); - T('111011.001010010001', '59.160508253119229720226315984803348705', 2); - - BigNumber.config({DECIMAL_PLACES : 28}); - T('454102.5412541254125412541254125413', '80656.8', 7); - - BigNumber.config({DECIMAL_PLACES : 33}); - T('1isk023dlf.55crlo17qlse1p84be9gabpp9h51e244s', '42579766052911.166926038969790620314532268407622', 31); - - BigNumber.config({DECIMAL_PLACES : 54}); - T('429qi6dl4h.ph4ne1d18jgkilepdj3ogaj6dimknhh8n29cph914lcg4bc4moocg8', '31171726864736.9494930209622872734578329709751045672992053779391489601493', 27); - - BigNumber.config({DECIMAL_PLACES : 18}); - T('172299c4276c26163a846222898294acb1.42584081aa022b93ab', '8930913218627080059774919041327808207.322093463032', 13); - - BigNumber.config({DECIMAL_PLACES : 61}); - T('91.6860869813842881163577889544084877062924216598567628502407164', '91.6860869813842881163577889544084877062924216598567628502407164280', 10); - - BigNumber.config({DECIMAL_PLACES : 42}); - T('4521234205002101435221121250354315.053033313232425310135400154551251430143114', '233771706142581818269027271.15323953306272130041055911181', 6); - - BigNumber.config({DECIMAL_PLACES : 74}); - T('1l8itelfm9stl7fmkawlh8km80pd30g1.uv0bkrja2onchcpf3iavufmbsgj6888q93ij858tkgngrwgn09gu8g031v0g7ku6pt57if84m4', '194937846823553447809511256180608590361394349744.9375672', 33); - - BigNumber.config({DECIMAL_PLACES : 22}); - T('14477210981224.2476134315993452402663', '14477210981224.247613431599345240266280695', 10); - - BigNumber.config({DECIMAL_PLACES : 64}); - T('3j51pir33eok5rcga8.ci6c5a89mckjehlco1mngdb09rqhdrdqf9pci83rqri96b1c0sbeaj7979d3adc3', '26569832927198243633766552.435459435', 29); - - BigNumber.config({DECIMAL_PLACES : 51}); - T('1048563153471333165888a4428a560371303035158.922a919092343141a34289759683671530130a320a939a7a275', '56924066996327539534686550864239220405952031.8369533', 11); - - BigNumber.config({DECIMAL_PLACES : 62}); - T('3.5kel2e1gfiac70j7k563b9el2e1gfiac70j7k563b9el2e1gfiac70j7k563ba', '3.27', 22); - - BigNumber.config({DECIMAL_PLACES : 22}); - T('5gfg.df5gbcd10a347d4cg76326', '29460.8178265494875692701718973279612977910871', 17); - - BigNumber.config({DECIMAL_PLACES : 75}); - T('1faem.cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj6cpj', '1550806.4', 32); - - BigNumber.config({DECIMAL_PLACES : 93}); - T('1000001001001100110111.101011101111000111000101011111000010001111111011100010001100111111100100011010100001010111111', '2134839.683376639182809009377393376566052153774412236905434', 2); - - BigNumber.config({DECIMAL_PLACES : 70}); - T('68.0418148343760086652557726847074054512880223633116204181483437600866526', '62.052', 9); - - BigNumber.config({DECIMAL_PLACES : 84}); - T('1ameoekdm.p5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gmb5gm', '523588890434.9', 28); - - BigNumber.config({DECIMAL_PLACES : 72}); - T('g837j86d57fcia.f5d06i2iaeaad500b87071eggcg', '1344184021329245170.764127158536574868775285152', 20); - - BigNumber.config({DECIMAL_PLACES : 37}); - T('45hjj171bb9ee1gehmgc5l9k5nj.a0hiel28el28el28el28el28el28el28el28f', '9389077895851446839665690077113206844.4011356', 25); - - BigNumber.config({DECIMAL_PLACES : 29}); - T('5afd883.0kb4ikl7aaic00mb6d7j6g9kcm0be', '808903080.0387285', 23); - - BigNumber.config({DECIMAL_PLACES : 30}); - T('uoa.p77777777777777777777777777777', '39754.7', 36); - - BigNumber.config({DECIMAL_PLACES : 57}); - T('314211431344264.161502550605320604600021123244242566302151242210124322565', '2191226569123.270328', 7); - - BigNumber.config({DECIMAL_PLACES : 83}); - T('350np900cjrpa7h7d2rm58e17o89em3qar381c.sb61e7ka19m19dt39t24790llrnb4drfn650aukk22ralqg7145dpgmpkek9itu5ka53sho1mkqndi7a23f', '47902354964172156474611081338049003753298795073166899865.9148752', 31); - - BigNumber.config({DECIMAL_PLACES : 10}); - T('243.4465610031', '163.575626396226555033529183865411120656777021626883', 8); - - BigNumber.config({DECIMAL_PLACES : 13}); - T('2ef7g1b5a7f2gec76ceg9.5b5d811g8fg79', '11692997210770248710254595.333358969', 17); - - BigNumber.config({DECIMAL_PLACES : 26}); - T('21mc1klprud5o4tgld2uo779vi7uo4lwed232a1qla9', '12289022125709080817960517361047704480115521701286675767213581699', 33); - - BigNumber.config({DECIMAL_PLACES : 54}); - T('1biha8e7fg.9ehdffb8dcagd4g9i98hchibbbh22093e1bi069e343ae8c7d8f50d', '526422264921.5150500126270316229746944036', 19); - - BigNumber.config({DECIMAL_PLACES : 87}); - T('6c21ldjdn0e.d7ki8442k6ec8b5njjgm067jj6cac5l46l7gfh7km77bn9iehd7f2l7c934md3b6ecfk8afh15je0jndbk7nf9a', '412350836548046.555321483698953780254564895313985703', 24); - - BigNumber.config({DECIMAL_PLACES : 76}); - T('r39e056mi.tjxo1e4pd49qkvkendhphptkqsp0fyyomdcv5ophw9lfaogq769ommmk1rpc3xlbawek1iy9d95v', '61010933356888.8448673320184616605284885898', 35); - - BigNumber.config({DECIMAL_PLACES : 93}); - T('4q3je2kkc.v0oitmoa0vse0m2sgqid4w2ntjy10b3gqbqsu5u4c84d0m78gmlgqcbhyhbs18r04wxljbi6ypi2mtkvasu60n4gpp3l2', '10686857113462.886286611976383309575531841252170238', 35); - - BigNumber.config({DECIMAL_PLACES : 36}); - T('32.rhf24b66142ioncpkpn6ije1k8s9cka3f9ro', '89.951866586639896895259517645524', 29); - - BigNumber.config({DECIMAL_PLACES : 14}); - T('34a1765329aa0b27358236536.c1082175680a06', '1827925782415763778360259679.929279897145404964833315', 13); - - BigNumber.config({DECIMAL_PLACES : 61}); - T('a6742646212221a88046886505480aa41030547a37a67236.41964a1417296a0a24a93660a5329032846329a7984251058490591662579', '93546552298402617258257881206314223917463535762053.37910302', 11); - - BigNumber.config({DECIMAL_PLACES : 9}); - T('3pt6cise0p638ff8tq9hiomp2.sjof1dciu', '2380426328731894461017956020638721447.923818782906918215432585338', 31); - - BigNumber.config({DECIMAL_PLACES : 34}); - T('7b16db7c13e5g542iefad5hhg6hh43jg83dgdad74c70c0fa8', '2126074738690043302211139064073553459984418855049352822209926208', 20); - - BigNumber.config({DECIMAL_PLACES : 100}); - T('5c38ll2df8cc.ea8k9i40l7d3kibk457clf53bbeldgdlc376aj7a7472855h5iccb7ja0kk9dklch184b0jllda2843hf3je91ia0ba05eg2gfd8', '3244426171205484.6578633915920657537140922935', 22); - - BigNumber.config({DECIMAL_PLACES : 52}); - T('59k16a247.61737g31dc0g774g83dg8dc9fd8fiihda667i040f6b2244682jb', '207044760664.2887550452070736178915046269946', 21); - - BigNumber.config({DECIMAL_PLACES : 82}); - T('110100110001101011110111011000010000110100000011111011110000111111110101000111000110001111011110111110111000010111001110000001101.1101111001111010101101110101011001000011000000101011010000001111011001101010010101', '561214248546542162784739085096665717773.86906', 2); - - BigNumber.config({DECIMAL_PLACES : 11}); - T('36f.deg45023nic', '1887.5671423143628136523074608843', 24); - - BigNumber.config({DECIMAL_PLACES : 2}); - T('2.a7', '2.61389199970000056196530570', 17); - - BigNumber.config({DECIMAL_PLACES : 61}); - T('40212435243045.4130510342441202145355231330051034244120214535523133005103425', '53056804709.709', 6); - - BigNumber.config({DECIMAL_PLACES : 44}); - T('1200.12140430444103413343343041420032110122444122', '175.2946969442501136', 5); - - BigNumber.config({DECIMAL_PLACES : 45}); - T('1a.cma7ce1fa7198f4l4136e24icdfjfem8175em64fele14', '33.564175901106526786865243352786443610109137364324033383', 23); - - BigNumber.config({DECIMAL_PLACES : 24}); - T('83.82j8j7mk5gj08fc90d7dmj96', '187.3532', 23); - - BigNumber.config({DECIMAL_PLACES : 28}); - T('29542da7aj1.aa6f5b4e5gb561gc34', '25221291260381.525845488058258131', 20); - - BigNumber.config({DECIMAL_PLACES : 21}); - T('23310314004100214404201444.42442021424124041211', '813327917597334624.91907050113787247', 5); - - BigNumber.config({DECIMAL_PLACES : 76}); - T('180ka8gcb2e52gg3ml8590.8lkaji90g4cl8dkinef0h0e13hlf1b54bngb9dfm1ehmalmakidmk6l6n0fe4anbf7gn8754j59a', '128782235162920368437352533016.3712710490503878', 24); - - BigNumber.config({DECIMAL_PLACES : 77}); - T('cj55j1abk1.11a00dib00e885bkdhb71ea8hkdjhih7b6cic84710dihedh58efg803i563e6ae2k9270773geih', '10259507050423.0509665801731862583991348047581595376734117515727774395', 21); - - BigNumber.config({DECIMAL_PLACES : 88}); - T('1120201122111211001102121220012202000221001011102210121000011121101210002.2100011212012221101021000112120122211010210001121201222110102100011212012221101021000112', '35651380254013249383472036570828775.78', 3); - - BigNumber.config({DECIMAL_PLACES : 61}); - T('nde8jl8filiabpp1ebiome1gng72ajlc05pcje.58k83pnpnnln1c250flhhe10i0aecl3kemo51i13ckj0ieji243nkh44bbafk', '531463579683815787587099214787456214450843210757585380.2052977699752', 26); - - BigNumber.config({DECIMAL_PLACES : 49}); - T('2423132320143244255320031342044542022.4021501234514001305003110201140332234405515452435', '28233915554941230658978083038.67734567636065289541', 6); - - BigNumber.config({DECIMAL_PLACES : 20}); - T('b8b057c619.881cda90778727315519', '240240367775.61294728461437827', 14); - - BigNumber.config({DECIMAL_PLACES : 57}); - T('3uke1r.qog7jpuls3wumhw9r6ij66xbtr9fxmcxo7pjkdsets6obc03cdkpohtp4', '177198677.78587988442236198004', 34); - - BigNumber.config({DECIMAL_PLACES : 53}); - T('rxp7iouofqsa.5xr0ytex5w3u84ss4bmqr4d2r58uk0w6vou7okvti3sqaf8xdt7m4', '2699846669670878465.17042631933406076262750289627556', 35); - - BigNumber.config({DECIMAL_PLACES : 10}); - T('71.4dadah84a6', '127.26419', 18); - - BigNumber.config({DECIMAL_PLACES : 62}); - T('pho3b9iei6hp0dcf72fih.ph9881jc7d7c0c0mgpgd1ji1k02ola0l976leng417ng4dma8k5jj95gommail', '511945071604551808598197283361.9872166378092262156654881169655510', 26); - - BigNumber.config({DECIMAL_PLACES : 16}); - T('98.1902712204800298', '107.16547', 11); - - BigNumber.config({DECIMAL_PLACES : 70}); - T('12042214055152101441031134141544140013031204153503340.0001441130201520422300253055330454111450024335001352533025215001340303', '39389800555908783850258185920663768281644.00137621307644652979797336', 6); - - BigNumber.config({DECIMAL_PLACES : 85}); - T('10110111000101011010101011100011110110000011100101000100101000111000001101110001010010110011101100101000001100011111010111011100.000110111100110011011100001111010100110111000100110000100000010010100101100011001101', '243361227524012342673912659288240813532.10859467026399996528383947490', 2); - - BigNumber.config({DECIMAL_PLACES : 43}); - T('20320a9e1c.e13d8f38akka6fadl8ihb6l130aja4facgc892b7ik1', '2422250714258.6387686759191563066716078918648006468135734011652', 22); - - BigNumber.config({DECIMAL_PLACES : 6}); - T('fk3tfaumol70.nbu11t', '397624194336432136.7543900599912174983420474207', 31); - - BigNumber.config({DECIMAL_PLACES : 93}); - T('bndw.ia76eoij11afbtfap0nweobn9p3ukq3ykdaqhg9p3eh2kj95e8c82jarbuo6ng1v0uqvxgmx0oephdvyf26oxydy1cg2a', '500287.522616523131590467026372561556', 35); - - BigNumber.config({DECIMAL_PLACES : 38}); - T('12.00222221021111110122211020211211122011', '5.110848610746726114', 3); - - BigNumber.config({DECIMAL_PLACES : 39}); - T('2781hhhb8a83ai.1ia3900g8i4534743692hfa4d2idid3hbie71b4', '100543014641347157.1039776690679366009661209140071615314125301', 19); - - BigNumber.config({DECIMAL_PLACES : 4}); - T('idrt.8pi8', '788649.2494047472', 35); - - BigNumber.config({DECIMAL_PLACES : 32}); - T('101553444.31404145323333511432344434343404', '1772452.5468497396', 6); - - BigNumber.config({DECIMAL_PLACES : 26}); - T('11913e.k48gaghi0bda65ca2fad6g3fe3', '4362449.9624', 21); - - BigNumber.config({DECIMAL_PLACES : 95}); - T('b.1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h1h2', '11.1', 19); - - BigNumber.config({DECIMAL_PLACES : 41}); - T('504.30415304153041530415304153041530415304153', '184.52', 6); - - BigNumber.config({DECIMAL_PLACES : 10}); - T('1040tqefd1.kagvh6rc13', '79074558629081.5799860', 35); - - BigNumber.config({DECIMAL_PLACES : 66}); - T('88k7o8ik5jj36le.hi5i7pd4bnbijdamio535d2ch6dbd8fa810ha390f3nnm50k35598nk6j8d608p206', '537866727524277202000.680797912718430834', 26); - - BigNumber.config({DECIMAL_PLACES : 52}); - T('99a841081466974763476a2a94.8685193793416832964036250573858a28991099751a42161366', '1073406972360901510248908534.783223009295755306594680823047214404631', 11); - - BigNumber.config({DECIMAL_PLACES : 23}); - T('2824bb685415692c3454de3ba6ecdee2e64731e30386.251d7e62e78419d5bbd2e91', '949248114155968376205888968663100056112678439830801.156119125437472', 15); - - BigNumber.config({DECIMAL_PLACES : 22}); - T('1.pm8mgslg4329n9f3afrstm', '1.803', 32); - - BigNumber.config({DECIMAL_PLACES : 64}); - T('1lpcq5lrlgmpeong4rhi33osk7e7.19rmrhsmn87lo1pr6fa0r87ae562legcl56ocse5ikm0icck2hjhob5cjl174idm', '5356399442861089801562327577317285912011.0463238125', 29); - - BigNumber.config({DECIMAL_PLACES : 75}); - T('82m1.1a4md6p9e92i4ghlb2gj6kqbihjpjjo7a0cagdb8c4l0o1eep3infb6qlo5ohffh2c943edckm2', '159517.051', 27); - - BigNumber.config({DECIMAL_PLACES : 33}); - T('2a.0ad1489a72438d6051a3cdb85a945c279', '38.055792640673814942897183865707181090111098818987279667501', 14); - - BigNumber.config({DECIMAL_PLACES : 85}); - T('110001011001101010010100100001011011001101010101111001010011100010110001001010010110100000111000000000001101000000110000100011100001101001100011010100110101111010110001.1011100011010100100011101101101100101011000110000110111110001100000110011000111100001', '288798319290142875873517012221913212736305288666801.721993378169914151', 2); - - BigNumber.config({DECIMAL_PLACES : 38}); - T('g578.d61b0da144ckf2jkcl10949664b9ea332i2l3a', '172950.603446775338659784933', 22); - - BigNumber.config({DECIMAL_PLACES : 60}); - T('gded9gk7jid6iknja1a5f2lajbj3nfoa.e2k009337h0ebkh40nl0685da83m99d7dok0nhob24fn21mnf3d0m4hji27l', '358724698418163432084126450455461239444900610.564480037377194308738297', 25); - - BigNumber.config({DECIMAL_PLACES : 21}); - T('1fml4uksb7ix1y.sso3bn1tfwq3hlccisodr', '171143420517125729119.8234191307649657940877', 35); - - BigNumber.config({DECIMAL_PLACES : 36}); - T('14c760d6m2.1nananananananananananananananananan', '4500058801177.0775', 25); - - BigNumber.config({DECIMAL_PLACES : 17}); - T('9fljfli8208i7bh3c7dde.4gk2g45kjjhk7i0jf', '6861754532912253293306011016.216766', 22); - - BigNumber.config({DECIMAL_PLACES : 88}); - T('3001121003203231320200201312003303213331113131100133213110032113.31330121313330323023210010122131021011200033322313113211233321203033223010323212313121', '257061387534308407753785204466907956119.8714885597106', 4); - - BigNumber.config({DECIMAL_PLACES : 53}); - T('1011222022.1122002202122110002010210020010111221010102200200022', '23309.54447401648241096074553786074233187398795698903', 3); - - BigNumber.config({DECIMAL_PLACES : 22}); - T('5.9194l4cb9fa8bah8b2m654', '5.393952', 23); - - BigNumber.config({DECIMAL_PLACES : 27}); - T('33010330211130.020232012002043243340030201', '4405710165.084291592965', 5); - - BigNumber.config({DECIMAL_PLACES : 92}); - T('13jdf.chee8klh511i494ffk6799ec193bj23lefd62576edd4ah8dhe956lg0jlg6k3081fh7b90kkc2jch552h2c92j018i', '275697.58195481441', 22); - - BigNumber.config({DECIMAL_PLACES : 73}); - T('479nerl5qc9.9gg9mhjlia0lpqpfmbo61gkfk3m8nang7qra73jkm205ffji6djibilkpg7beb94ddgk755q4', '1262554037978809.342581555046588836259033201946517724', 28); - - BigNumber.config({DECIMAL_PLACES : 77}); - T('2abe54cdahg4cfg73.a32gh72hhedf8b362afced335ff3a2934a3g88h1807c480g2623738bbhdb29da52fhae3bbf49d', '314766023685470770233.56531937360626278654', 18); - - BigNumber.config({DECIMAL_PLACES : 53}); - T('44fk73cgelq38ai1jl6mef2johb8aqigpghe6.41pe15mojjjf3nnhpfponasg5cgikcfick4ip43bp8e6l7m13mna4', '184105112778080215283996929747816484069365074433262524.140165', 29); - - BigNumber.config({DECIMAL_PLACES : 32}); - T('a.d6rkjt25eclbttos5e86st98ui7pplg2', '10.4002177231432347386440520809', 33); - - BigNumber.config({DECIMAL_PLACES : 89}); - T('1.2b072cjjl73700ahilibdmjn9hikf536njnmd3bdnbbg161m7bma9bjkap2p03h71debo18h91obc8iilpamae4fd', '1.093210794', 26); - - BigNumber.config({DECIMAL_PLACES : 25}); - T('429130757970568370597933312039338574250814304378587454538.54123403', '429130757970568370597933312039338574250814304378587454538.54123403', 10); - - BigNumber.config({DECIMAL_PLACES : 90}); - T('4egk9mo5.nq9mpjg1mdgkn9a91fbo96klk0h7chndjbekikrg28g34n0boclh3jl8che73a1opaef0op0bi470embme8jn16423', '61006052805.855039107767', 28); - - BigNumber.config({DECIMAL_PLACES : 41}); - T('fl8n7g92l609nr89o0c.pdebbgbbmcg2ie112887jb22kh16fc3mcjd20ao0l', '1763744254574742835397196108.9100951', 28); - - BigNumber.config({DECIMAL_PLACES : 71}); - T('69761d43jbifb3.5hjgbjff0b193hgae658f84hgdgja17a37i8f74', '529879890174710223.294978746680768846329827392297854102963', 20); - T('4e8ba596e760723db17586b2141fce3b37f803587c2c09a7f054e80000000000000000000000', '9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999', 16); - - // Test rounding. - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - T('1', '0.5', 2); - T('-1', '-0.5', 2); - T('1000', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 1}); - T('0', '0.5', 2); - T('0', '-0.5', 2); - T('999', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 2}); - T('1', '0.5', 2); - T('0', '-0.5', 2); - T('1000', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 3}); - T('0', '0.5', 2); - T('-1', '-0.5', 2); - T('999', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 4}); - T('1', '0.5', 2); - T('-1', '-0.5', 2); - T('1000', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 5}); - T('0', '0.5', 2); - T('0', '-0.5', 2); - T('999', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 6}); - T('0', '0.5', 2); - T('0', '-0.5', 2); - T('1000', '999.5', 10); - T('-1000', '-999.5', 10); - T('10101110010111011110001100000', '365673567.5', 2); - T('10', '1.5', 2); - T('-10', '-1.5', 2); - T('-1110', '-14.5', 2); - T('11011001000000111', '111111.11111101', 2); - - BigNumber.config({ROUNDING_MODE : 7}); - T('1', '0.5', 2); - T('0', '-0.5', 2); - T('1000', '999.5', 10); - T('-999', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 8}); - T('0', '0.5', 2); - T('-1', '-0.5', 2); - T('999', '999.5', 10); - T('-1000', '-999.5', 10); - - BigNumber.config({ROUNDING_MODE : 4}); - T('0', '0', 2); - T('0', '0', 10); - T('1', '0.5', 10); - T('10', '9.9', 10); - T('100', '9.414403549937069229622318379677', 3); - T('2e', '85.724', 36); - T('1049a8925138111404333bb594303b3', '245329273960717287023167550190902.7196', 12); - T('10024012', '79882.1397169', 5); - T('bf8pijdqj7eaee8plp', '24913576091923713226797784', 27); - T('92ede36', '221315101.4486109701151', 17); - T('2tphhgbu3tfp', '201793843613197922.7289680244023879849892761206083518171246', 34); - T('334304414323442111042', '361019216753897.578090634736893396795045144615285524664717189351698468', 5); - T('101111111100000110101111100000101000111011101010001100001110', '863594881689232141.62881568577668460977625904', 2); - T('113aa38477', '2650149344.4439337077845022587667990', 11); - T('16234a9a69395843a26073599', '15410678383317464407550663.2765', 11); - T('1h744d4aeb313h3bcf327e3b6ff77f452', '29005210991102584193184888994590829162676.36864180128775308524399848', 18); - T('7fd', '3414.796182310782697496', 21); - T('1h61i9i6j802dh7e3c7hia36', '1564677221233470232427033268065.9552132872311604979708', 20); - T('298a2036a57a567510698a8209', '313334205044060726367000938.043033074655734794248199', 11); - T('1cc6e75ll568fh0kd56dje1af49489aooadc', '12702280403687491014084375085832810818379990225336.732151263602252539155', 25); - T('b359476583b5', '8388678747448.862', 12); - T('8781fe7e4176fc66a66ca5730090c7', '703596669768604729463688604501971142.9176994711280241981325903319', 16); - T('101110011110011', '23794.501525', 2); - T('1001201202222202101000012002121220021201110220122020110022211', '45111254165346649183259916415.393038562469348926338378', 3); - T('221', '25.3631', 3); - T('121201', '450.79905', 3); - T('202001221001121011021210021222001', '4132525698405883.4635374792891809964908659831439118', 3); - T('1000', '7.792303494645702446763290630498884400068339335428470929289382355', 2); - T('10110001101000000001011000001011111010111100011101101011011001001001011011010111110000111101001001110101110101011011011100010', '29513071238598351326634077220532565729.753116233815194468461197227952', 2); - T('110010', '50.3', 2); - - /* - - BigNumber.config({DECIMAL_PLACES : 1000}); - T('0.9tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn39tn3', '0.3', 33); - T('-755788719654700625.3724b27a98ab8461015aa3993106b7425561a7947a368a886a729ba36b9b21b3401602995ab641085846038360478a6a4a4b138161a926592b703882799057b605a209854367054112a0a805489089a2b81929842754b24477344a744498b65462136aa293a42922b87343b4473317594350832086048739518722163986b5aab086006b0b3264730478069bb598131768954235054677799442a1a645a56702707497428a71984310838281214a110605a4996316582806434651aa2413a4a35477a48b9076b7752598932ab2a0437237887a86633a04a10817a64a5a8bb4906786542a7a31891230045250203b18986684b7582a8b5130322b399145b9b6a97143ab27b1768b3a698057060ba2b3373a7292653a64b314947862b78142a6ba28321513a350b833950438b137737a5a21861a2944132837498282314b91930079a7881464a2b0b9180b47aaba43581348189636298868b0364532b7777a2446a916666159b8b430b73345246b481937638714a820046765214436a192052813a993944190b7717b76ba0a82853bba355255173747ab49a904191b6660a08820098bb900192429401b010016224a7201a1a847a6151b636509738288245a83261829041354787a89b02211247204a98648346a695053b91856537472426160045438425446599a19a7208b913449438743351393', '-16541654165416351613.3000065165841541556784990494619761', 12); - T('-0.000000000000000000000000000000000000f4j4ftgo2kfkig1lu51ni9cfe9d119suj2gl2ujs6ks78mesor2qpihm6m2g4oo7t1jd44b7gf0hrdhjd9p0th4jc9idjm9jm9qulcqo0p43atotsgmqaeiqfo6q6ipc0dgje0jjpho9ugphegqbto5se29hksk22dq5q5i97be5cgsuj13c85c4tb7inc1a1i153rfpcbp65103n13466sslre6263di7rbmcsd9q1esffdtmu7mdt77ra9gf1rhknleod4id6jbhqq90hppj08bkqa5b3ob0a688iop5n66kspaa4dlqolfl9us0dng6ou0a2t9kpjnngoblo1sain3rg7ulaadd6s78n0s2tr6rbdel0627p5imf7q3plnud3prlldun19e198jikr2f39gb2p7qmd25hi6npbt3okgpfp299n9048bugt4d6g6c4063di2oltdu5i4j7ogph0mnq0o0n7g33ekbf64k7ui31ocjr93i1jojbja5b6j4593qnlh8q5b949n7pbjpsh8mdcs8uslfpnjj1pgk6jihp2848a01agg1nu4be04j2saiqfa77toh8cd17e3ecq9i4mot7e82m2mpbmbbm980i5aqlgce92ofkbchbshprhmp0c33m1tjuf73jp17molqmn51m1n86dc0hc5hgtf6en3glecgr8nsttn3ta4i0j6iionu70utapfuik1sm37hdu0h4cpl60lqmr2n5q8k9jo5866pehctkringti5eeqoi1i7ar3j4tars7q1kciok8itki5jeruq636tmal83ii9fd2kh83aota9hei3jn72777up8kpoo3g60rd1ujj3f7seic20c0jkpdpamh4bpidupl35ccnljfr6b29sl16cclgtkankajrfgki8c5u3qddal0lgp0rhhdl0bctc5rcqlpqf289iknm8ua0m', '-0.000000000000000000000000000000000000000000000000000001', 31); - T('0.000000000000hpwlejv37aqn2neqd4iy0sm7unmppfy1apey9u9p927prbdsbgd1b45t3p7vyifb6l4dut1s5vei3atsmdfap8nv6tirtwdjf220klsbwsc00lrraupr876e51kdbmsq137te8jbjs06j97obx9ftyncxbcneopuyolubo9r1ue2o84jpl1bkl4rlnun434yav93cxyne0infiidgt1ef1kn544ces10yn4ii2o0l8dxs5e5km9odb0yim3qbte11085r0csniyxr3qv20q6fefqr7stu78yewk04r12kwbncdljuyfulbtyuv9myvkv6f51lcnrdde2iyx72idqv38ntmg5pweqahxa6rax0w76bwqrlmju9nlsngdd39pjr5ypv0wjiipyq72biby5r2yecd1a1xible9do3ilv80hqrtsrllndbbfvcevlxs1s7r8l045400pdp49eghd3dmxaej7sajpclialpo46tqmlxundvl9w9xvjje8kxsc9khjqa8j4r89gj40pvxdu09anqyxyxiwj4p0ynrewrfkwftbfhiovjj5n2be09qg695obvaqkudlyo1khnc81wsghfdilwfx5xtjrwsj412cn8prwedxb5286v6ctvmdi8qmcsarh9grx4vxopnuo6afqeovo7ar83vw1hrgpklwtck2tm7061i460y54tg4ajadt18lsyhrbvp5c3xbqpp8foy36s3epjw2pdo7rg4bfrc675wug8vskgopu37ni5qxpk49l0gk5yg5es5l9l2tkb634osunbu1tkir9mjihi2300lj6r8bf8d50mw1636c2ewpscd6fd4xwsao7rd958avhwh51epte3b574wiyjos8681clhmpayclij79biitko0g07l52qkv4dkl9lh5gdibg37tsjfdw1bjx8cvwabvmrbxqorfoidmp46rusj22d3ixyta3b19qeaf2ril0dy', '1.5e-19', 35); - - BigNumber.config({DECIMAL_PLACES : 8000}); - T('3221311113213312301200121312331120223133103222310312200003.10133120021030102300130322112333011231122301021302213211200122102011112233031000222132211020000222030131132332123112032011231212023103002033233331010100311003202212321120132003300212303030201300012330123122330011010023120011231133131303033221010022110332233211122331110100033103213302033302020221302320001301133313100221130221110131313232030210310233030230201333031103331101332213032210010121132231001111300311120000210222020003220013031331132302223232211202000331120203120223002210103102123033103022323122102020231133012110000113330301003121100102101202202232102133333103113312030101330301302113232310200111011321101012102020322322011321031233202033213210030201210230303023302301220122030220120322011211011100022123210023332223110102130033003120330021302022232222322102021002331133033202210011201331101022101021302331003321111310101133200012320210131131120122333303103103330203000020230111101312103232123002323102110012331121022103300032132101102103320030200001120033320130221133320000331310233101121023130032302213030223101131033310231010131233311202122331223233132210233023201113213330330102303103130222321020110211100311231310123332211301331000320233100223202313100101331122003112132130213011201211301323000002121223132122002222312231332022010323332211130132213331031010202301331120113332201302330020311301100203132020000121122232000131231313113320133322320023011123023010232031130201203313013031131330022010102113231021020120130032110122131213203120023133323223312031122123111323103013302011120122210331110021201303311023203333121113231121322013322233001321103310301003132213320200123011300132232131101313210100120202023133310332112122303233203030001002103331232311130232210000231100122302131223110332003331230110120303211200102032230000122120131120020320022101011012103212313313022112302311320030310021313213230200001231232101120023230000301313230221100101123312210121131001221121013022123110300020300201231231323321302300132211232323233120113130332103333013122303210021002301122021201010312231001300212310202123103311011023331333230203303103212233020310032212330330220330221022010021221113000330133200222130321300010000201200303021321332230023110110013213000002213012131333100002130030202111001023101233230330020032312023113210022000200301310223113233321220021111201110022133203030312232102102210103302220310230132031213123133201112010220120333131023110020231131300122130221310000200111220302221213001230221021203330003331231222102113103221002301233213322000120321022201200230130122030011133201210311201201322331201111300133321213221013323322313031112003133322123110033323023020122123232300123330213213122203013313331030032312303220202321220213202100113320210213201220012321310333122313223031110022230332030123323221320002313331211003333220132010323301022130321122211213211332213001021010310101111123313030222123301101133313212013311210312222000133012130232232010330330110310021302100012101021022230011021231231201003303212003312203332213002132332113333132030122100101323121031000321033132100330022202133012300313031130300333231002000002222131031320203120111210023113300033012202101003200103100131010300231022202332221121132221222211313202002013031001011110210102123121113122213110103310310122032201023312110131121201131201012222020113300212211301202022321210311330113322013330010323131001331201212202033120020112212302020010320221023130233000030211332203222121023200323130010032021323113330132323300032003123103021131131111010033321333332003023113011331101131003233213002332201000212322122033020012323200113113201112021333333032111232112110323323232322022231322211322003012002023201200112103010132230033000202121311320020013200122212031312013001010002230123120123001021030313222223300223233330301132033033130230101231223122311313301332022231030331111010211120120321211113133312313021113002213313131110013312123320201321002231203030002120031201130332031101213220030320112103133110223121123101210303000131333333000322232301013210112100111333301223102233302220201321320121201200313312203123231221332032310101032232113122003233332202031302020000023333232123100112101321110110332220313323022231210130210111230301222133010222221101220223103312100112111100010032101332301102303300103200121020100321002203132330112132023311112003011010130021311030000023102011312101311220012230121333311222103213311212202001331020301121122202212110132033031123311330020132102001102112232232303323122313002330111123010313130000033021003110332132303223132303202300131122210210133000230332103021123130132232222230313021131300013222003333322211231332000000230102223122302201002010313113103211230001312110210013001100013302130313221312010231123013103020110332300323110201002120333312223121233122010022310201120030313023021020010103232330212122033111201323011210233012310232022323131220320212302130031120000333200013032002312120322213020210031023312201320121012222320230020230202230311320323302220121312133003030230110210031232233322121020222121020022023202300320100203232321233313323123133103323011003023213313230233331301032131100030030103232313032310000130332320321112101020111000012310320033023021202322102321113111211030131313303210023003213233232232031223102131000002231303331301312232032323310122133102323110311022320113222232301331100110211023132013211203123203211232202322033202213130101312210200022201123333302331022212311212320023102312022221323211002000020002003130301012122201302221112033331022220312131031300133332333033112310131321121210201132122021120112200210311313223100222322212101202111103102322301323302113220013000202133031132113000003130302130110011200302012303000302020132120232302021111122212222230330201003333000031012030021003230131232010302320011020033300203333112000331200212302001113120312210300330100322200200130000310003102023103033222233202101220122202012301311213301032001010103132022312323232220003010320113003303230301112112211102311032100131131211311333120200223202001210103220210211000210023323110210121020321022001103013003012321320112022300332203031202112000323133300130130022100001333111230311001032331331333023000110112211110023013310023212112121003000000103131202211330332333330110130222202332332313313211030302000102323333012333331210332220002033030120232332032123130011321201320001213123213210233122331031202233201001012131002312210110300120030113220200200220011322010301122020023023102332321000003300322323223321210022110221101030133123020013132121233320100321320033131101023330201233212232312001220302313002001101312201021122220020221321211201210012203003120232232302211201103110303210320001033330120103220001223220003130113212110323012002323311320130033333302122101032110313110131003120013303231121213111110322323332230021332122203320313102010002312133220012323022320332211303331313032110131310113130223201121103110320330132100020133122133312133222013301200132023232220203102131300113011321322231022130101021212313331313312211130203333203123331011310021212311331001201000033123022332000231221322320010113323120132002122231033132120333203320303323110021203021232233102020021322301001121233312100003202222100020113113012200022311210133022301031333003131020211221302322002213311130131302101032233231103213132013102300311233133303323033130321230231100220031131100202111221130100133111002320222202230030102003133102022111200103010113332233031323232003020312002002102330220231320100323032021000333110231010303032032131331021310200120130221022121220002102203020220101210110303232330100323312121333232330303311032322233102223003103101300331132011232012120320123203002022031213220322200323101333332132001112100120000220000313330323131013111013311122302122110211010300213302330233300312130131130013321002110003012123223213013002321132320300331121121010221113121301220111133332323320212323022203200030320123223011203203330131131303100332331232003013200020132210303320022310221123212031133331223112221123322111333111133122001221300212121230130021122112001000313112223110231102032031303223110233103010203120320131203320133302310301233012112201123313233203310102001003211311211320123010311', '75883436516535445385952265101338627.28064184', 4); - T('c77g12a7326d2dgf821eegb03bfac9c0d.c22b2ab88c8g70e53e332a15841b1ae088gd4a118c1946563c14ga7g2d18c4g9gd0340db9db44fc91d3e889d95522d53213741066ced0d4ef5g31df250915fe97143410dfd80gg5d1a70gc5c26185d3e3b5651da5d95c3405bdc36g501f9g2127gddff2a5gfgb6816cbg870a219563e5f0e4c1fc743ce02fgd355c62243e34df7g9b32c0gb4f37gfe5570cc13a9ab067596ddg6cc4fcacb650eg7f67adgf2cd0a1e2239g988eeafg654c9eb2f1c4626gb60g80g8b37732008765b3e09g4ag66fg964423011a55d5g254d16d9ddae1c897cfc408c9790c32g4ae60f5df6a77b02a9c78868c6fd4e09617df91a3gb5858c58e78c12883gg2678cc09f15483ge491213e84d99b49a7fa983f47eg100fa601g96b5de3ab582ag7e80ba63ac5f253geb58bd08ba38a813e069fe513089e6148371b574737fa57dd64d3f5ccb699gg02017915b746f39ae3g3a07f742cdcg829fe591011283b7ea0689ag63bcfagc34f0eg128a30302f08fb9a2a35ad6f366babgc7gdc414bdcf131bce71f886b8ea8gde7e9eb3512969b2g3ac8e10e60749582b6140ca08bg25c315fbf0cg8643e6c368b98e64aeg20c0bd7cc92192620892800b3422d32a8a59a6g3aaeb805bd5e3d69d07244ecfeea325a2d2bf3cdcd525c3f0859709g5098bbf3a8d1a8e83ccb9bce35e30aeg6c46130b2ecd4beeag2ff7fe13a8b5ade5bad19c495cbag08d084c8e7f7ac67aa8g60475beaca83f5f5b3a1d17a041dcb9c1508816e053b6df4e4g0909ba8cbgb23552f7589fe2637fdd595f43e8e8048e704a6645149bec39ab154d218b87geb33b715agd2a0752e43dd87ddge5936fce1562ec8cd281338b9f48854de8c3ea37620a465577g659be796g4egcbb060eg4121bgdc291a195b47601e85ee52dc8bg6caa53e82g8g4ce28g387f207f4309fb54bf5f3c2gb522708fa75a9352ffc394d3cfc8a2742d2ce43c916b185097b5f5258a44eacf4fc2g8cdga1bbg6558ab0433d561608e60cg3711g10bfb08gf1ac05954d1cd0b483g799ac43e9b394g61ea702990ege7fd7652ee17d0gg2dfg31fa55072f4g33ee424ddc74124e7894bb2460602d1c9442b55eae226g7g43e1age5geg587fe8419c0e2c2e56658a304eeg6ae3e77db856g5gfb0236bff6f280203782a248249ce57e9406b2781e22475b96e7837g6d14ed2g95b6815gb6984bde25a0fa768fe02ecb22g874770agg1gff7f047a54a122e35g8e11dd1465b93b0f48272173df09ag76a24e91107g99dedbebb221a62610c91feg7997ga7de89fbe44008603d3a955fe9784e64ee07b741a1b1133f578c31263e314bfb11c2ggab358bf88c211572ec82f0824d3da0726d67565b8cdfgf5c30927efd9353b9dc5g39be86e720049420ab46gfgb7afeag93716f6a5bg1ffg44e5aed7bdd6c7b0ac0320627a4745eb5789e6dfg68g4c05agf34f7588g70bb56cc5389a04cb6g17d1f06d7869ca8edga349b04dff6079bd3b74d8343647bf0g521466813779a8gb0dg3c769b05329884g8d8926767a8e8df62f58caed0912aeg4c17b2c73f92f0f0ae48344gd93g0d8bg422bb9f3a26d356e5b6d0c6169a38d942199gc96a6be7b6b41gc9c2278151660145eefffgg6b014c1g9bf69b855e8b598f916487ga100158a549b99c1dde06bf9b5eagb07087c71e2385392ab5a683dc937929f65b5fd0677002342ad65b04716ee40ea0e91a536eb91ca98agda0e42f70688a6f0g9ea838g759319e37e0bfddde50g14574dbed699125b242c98bagaa6272agfabce194ad5a96dd7e81a87d66b958f72e3f5d2b6cfg73f72e1ed05d5cab08543c8ag05gb17ffa23c7eg700143ad6g7ea7a5192af96b4ag0e43b87114148g39de262d852572886ebcbbb8cd9fa593d6c06c0ccgc18abcadde1010eg2c615d52ff4d76826bfc622640825d3e12eg74918e7f4d2d3bgacf89daeb1c609d1gcfc55807aef8314109b93a2e9cf8cafded0c583355bgac3gcg40fdef4d9da1f96d09d7d67bg8d37fge4e2g3cf498fc1gcafef89a29bd4f7gc5f0aa6fd0c8614gbf16b2d428f438ec27ceg9952ggeccg18be48cd9e5612d1525bg912ee043f3d022d7eg96b06f39e5g864080f54621fag75c894a5d51e02cba7bb4a1e33f43g779259f0b9c65cf6a375c0a9cd4e7c925gece5d1c9c7faa7ebf92d30dbdgbgc7bc0158c20097d7aaa7g938baf81da201dd3fee2e4eeb42a9269c3g30f00aa8eed4c1c33722ge6ae9e362258fa071ca204d45945dcd1f872ddc29bdbg7b5d59g13874b627a4f5ec6b0g95993c78ce55e70246d1c7g75335b73cba41c2ca8d572efcgd694c1d54a255cg416d738d295a95e6934eb7f28c3922c2cgb77b58c98a27f9g44ff0f934e692bfbffc2f8973126dg8cad3cece7f4b8b8f2d4a71c1580727d4b8bc69edc56b92528bd251ecc79f69e81db90d01a6d023c4119g1c63gb6387b9b326ad3787241b846372eg899949e55daab1gb231a8bfcb9e062gf9ag501a9859cf17bb28518d85ea8678294c8417dbc4318da1c3a8e1e4d730208a2cg687227a333c9c7a0274a1cb441g24dg2f20df26gb885b0g7aec3f650ee8f2a750fd5541g57f53b6g33gadce6c64bg8ad2dg442dfa472be93363d871cgeg782e9fc1b104g7583b3e676c973c5d1252b49gd01g9b79e52699081414941c69281abdeee153af0406246423d1f75a720ad287f1aeeca47226eg0029f030498fb100f19d7fd9gg8b9dfe5113gee2gc001da6f78c42bea5f5eag5490gcegg4865fag331gde13d744e0657e95060441ea1fff181da6f8d090e26b0c731b689a11g89gg298g22c9226ae2d4a46e4f41e5b5b68d6fe06436de85b89fb901c0e49ced50c47ab630243dd7ebef32604dabbe1d4d44c25cdb1g4eg211ef0a150e20gdbcd832eebg4gfg33b14g4d9f1fb1a9974bfbbf0e7d511612841bb4gf87f4e013f799cd2727gg6b4158024f21028b14b72634ff5fb1b4a32g6c49411g42596820b6288e454734782b973a6d0bc56300fc29955aff5621c4567gg312197a69a5e7gf5cc82684g2cd8g4e0198cc6d21a71gca0caa7ggaf198590b010g5fdg8468fb0g511ea29a3g947b1f6f676e82acg0f155e3e67e9e698g0dcggdfe5e34ff9abcf86gcba066d0bf9937fe1bbd930747835ebc0b47ag1aadf582b89671430861dg5783f257312g95c83gd41a956c399d904825cbb3b88c86g70d43ce7dbg7255245a04e5725fc310447a7961b983aebcaec1424fd7f7ag2b27gbec5g31f4031daba6cfe55a761g4f8ab5d3a32a31a5g2b0286a31gbb74449ab1b99fgb8dga858b5gf0e446921aagad35ae92e93b8b650g0cd2960ffb90gg93bg382dc30571e37d7b10e9egd22849egg3gbg64b09d8ege7g8c7c53a3e89a6346e4f3ebd29186b4d652321ae226bc06g8f0beg00f82568d0geeb2da85g29f5a5b7c847ad90041dgf2bb4a0667062a26d756dfc5be6agf737ca25270ed362e8f6af4477fe2d21a581e363c0g91d9615fgb517bff84b4a1fg8ae7bab4845f8g321dd9f49c8862fgd78c8437933fad41086cbdg24cba4b4a2dg820e395f183baa080eg703ag4a8978590fc3ec6b34b4039016b27aegg36e7g10a486a9eg3e9da858b3f61b2598507f8905e560b17f2d6e260576g3611d13dd63cfg15gb94gggg7132a81ddg7f1076295b318dc6a5b714ff61728756db8be0f9c8b8a31792622a5g24c7fa764g9g9b8909e2abe41723e39bbbgaf9edd7019f3c89d27e5f4a6d8a7ab4c4ebef48409aa05066072d1633fbd4dbb582d795ee358c8efe4fffec9e4e0db38g765b8418ecae1023cg595ged32ae268c5cbd122f039c79bf0a0aafa414c13bfgf220c4a75daad6dgc207426fe008c48810a5bg9ba76df01bfad40dce31aebdagg6a9670g6f429d25gef650833690599bd27dd0646b8732cg528dadb86b2f8bb873b93bbdb85faab89b8d018270061dbg3g7gc0gd3b5d8e386ag49072df87fe4c45gbeg3af32gbfc14803e05g0eg1685g60f686f30cfd424dc3d056g011eacac67g7c2fe749e055e496ae96e5e8fafe4fcae23g5cc1gf2g8b857g9g05ab38dfd746a404gd91949dbg05c3a9abgbfb063348d8bfd4250dee307d06a57c98g8gd724b5777d2f1176egfd1499164cb9aa7b0g2f851g7ddac4a00db093dbaf387d7e5992a217e2ff7f184c7cbb3a77640c2e33a4638723c4f57721fee1b075ab7d370geccf0388669e80431a84791aba3613d0f9g04e3g3g363f41d31d1c51be0f1d9be014f2f83ebc7a2fc87a633b1b5bbgde8d3gcce3g0252c1800a0g0dfa8g550a2069bga56237d7bf36cg5d73f1cbcf2de6fgbbgg697ecgfc4dd4fb39dg44008925e89504e7gcf7030a208bfb7e00dd88d388ac72ae211d4aad14g66g74eeacdee7350b36ag5gc26cfbfc3680f588gd3fgd9b57724bde85cg4g59692c7fb0749d939e23d4g8ga181dff0ged465g57525cfe9996ded3b1a5d3319f2d14ded68b9d958ec13e26dbcfecc91363b3355a717ceea7055a6de7462f2fdd056418f34gg1f3f7fa7923efc7bgddf1b4f1465c1bace758b6g03cefa6d46804e52309g792162485c0dddbc1cdcga8g300gb26bfgcg4e88g54dgaa6e1149c32339ad96bc3b3993ab6gbg5d6638bgeb52aedad4g4b56b5c8095f406d31cc35960b4dd966d13dfdd4e3bbae781b72fa435038262ga48begfddbef73cdg4gfb0fb0fcg73f91e796d470c15543e253c5c4c8abb59g64cb4fg5e45e01g8fedf6bd5daedf9g57235e8457dd5b3866965fdb265d3a070b1a84b713g227gg6966db142637488g96067g7gfg9g6607f522caf2f9c3f1187007469f6d1dccgb67f56676g9g074c32ag41c88g79g849f554g807g511621bc3g13a57a862a39de2a54e9d549623bdgg3ebeff5a7d7cad9fb868ddeggceec6g05688f11fdg586b5dg3bd752b32c1509bdg8d351ce740dc26dfdg8g45818g5de2gcd041df00b23f809d4db010e4e03ag691151c52627185e7c399d1e5e2ec6013508d803f77057eb38440e5f161f6ee0200f81b54a33g62580002ba5b51cg16279b806740cb4455baab1f15gd83495222604fb59bd1865d569b320baba9g890cf40c90e937d492aga8aeg8ca492b0f4c85adab229874fd788d3c7d6f2f53d80830d28degd7f5ddf333eabc15b42c4f3g79d71b801d02eb7c7ec74ae4d114g66c94333ee0354445f5d35075606bb678afeeb836gg369b21fbfae95388ag831606faef32236255dbg7b515de3faebg2c9c69d71e1878529eb52ge27194ba4b91dca49e98b65ef8544g98f7652e80a62ab2494g5ebd4667g47e8c4711c0e3780ec123a65g6666c83bbad5737598810c3e208b7c991492g1e2889f78f20g7f2c3905bd0e4079910f2e88ga399b6g447g03f5c2e387bce1889f0b40e9f9c4850977ec76b6d9g8795cce18ga92bf395c3fd5b20f6edfe07edege906g219ec32d3fe83g3a5aa2ba673304ac5a2ea06d03c68d0553e315c38f9e1g56d49f8efg9743943ba11139cga4g1c8bf35gec63725508741ce16e33gcdbg4ebeece7cf9f47gf019531d5b3ad3225349d11a90f0a42f474bcc069e727189da2821e9fe6ecf82c93616d5g765d981g726f8ff87c76g7d9919184ee524a7f5e3f0d48750g5b5c4f0108914cbc925e865720ebdb79bb4589299g5d729525c', '29455060024714386814004539395764145766251.71334340573066029478166351919', 17); - T('23.23002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331130022033113002203311300220331', '11.69', 4); - T('120061a508.249577ab453213141118532579b5aab698b136731a654722605a56b4186564888369ab19408913065b21300b2a52216a4871491852b940695439b35428b808a49869a0b3b95750b4a45ba57738b898520349070074053a62ba67b85174887927179692101a8b3097a8b38741ba2aa0b1901312b01903248830787b488aa435514b1120b4b9985a8861670b0226677a86463a199180861b5881503242a25abb1a2870b02308931382b26550a6b5a71196ba1744b9a0b488419953a81604003636a75920011839ab69514396b4b9aa567989686b6174481659815011b1924a998086506bb827939ba9ab75625005a8716813460829894b1b848bb541bb80894b451596731308104974692350a3b114b91224bb035a5048919001b5a3313a712142214344235a559131b681425277245a068a3178612425b0902134212bb65876588135198ba5b611b9617a3b878b354236731975420144b8b7888781602168a430953a00460856317b49b12b87067a4963912601102a5a021489b500130964b9320269391888b33949510454b84a66934ab828972a00540194745660bb89771618603a92a5160444883119105843786965783125a13b02b5aaa88a26b9264b36685303b561b53bb782212948b7148344176985318232a38b41b81a19a421968072909b23255a9566639612b67a59b943ba9a5432b103087b69a8aa51102664731292a0832a65545100152192290738220371a58403611a43a989193311132236423573b86509866762584947b8527b74883594436b5409560b00398111018057b51965878457723ab43682392318a29a539a007417bb2366050a7a76a5b43046524b28b812973333b931196718741b6148742743b11575842b15977109881b187b19887a6959a4428b42a769471a356099486a3170a43b33492a78289019818b013649ab02a7427886ab757248939aa84aa12a76713472aa0880775154447862a6211763b40ba71b735b7b31b257773413a0022018631012403b20199a93a5688077a77142a8409369a64a29820569b769bb1400b4994a855671357b4254121611254b901916a2738899936250b3a09a491695720101ab201aa5b144b495511a00b92089118605214032a615a039a73034915553b88275975037a1852510b00b4380828860465a608ab8365500a1483853596461a7836b1a74993aa41129803a126035701689158795a83429977b20386b4430641140977714351832625811443b4b669206393a5a14731497b8a018b032a79602242413b88607609aa35ab8a780932480023a8b535586384b36422b66340732119b8697a86123a955b964813b3a93a1a6bb987361a489a51343710bb1792a67b19567612731724b7060338a96781270a00457501aa9b0b7309160368135550351a84472882871657207a506a65b77b5779680068b3b2566a72a8a1707b584b541b0424922a7990b28b363a755a84b86724568b56387415900450758812974586682177351088b13b429ab35783171225b62ba33a6672b342204710b678b8b8565224a92a3b4075014b05031300a9321b50ab26248313a42a011a229553a7184227a7977a6a6232298700a3a83b01a96430a153097541734043765151b4b2216a96298059a701b689649973263b35340626694376085787021b0947b24bb5755504678825a487719a8255553309339b3877a245401580aab69aa238b7348837933315018030866b13a302490925a44041520156005b6120b47167a755023078a174b0578857b218511708896a1993b356874393627237bb347a72452ab35158077911492909a535a06444a5439840a525987461aa4448a4b41a40136629908687473a445526b72249ab2873b9808725094161a4552041965273aa69424a18b75529015403a5005904ba9588427ba12a36409b76265925ab369b062a966602b5995365ba4a07235b9986789a14a642226049b160132340b07ab06764bab162446a884792913612130784749a90363b82ba56a0611329778888ba4076a279a15a7539266b511b50132a5b1b6988762a00b4502807a2470859035b63b157ab25a6698455223a5655a5895063a020161a8670484b8211bab5831606a098a30521b67a31407716045a862952b6707a497b555392b32498b94678a797b46a1bb276ba7267753b79b67a947657643885735062762a291422b351a772b9b0513b4b1598419768b5410260142991521890716a87750651a296041887b2901b843013688142329b2b164302097840735a84140158582607b3025093487907326181587aa09a08b034843510b646430518051bbb533504685b85bb985895aa4aa7a655a9a389076a17367259343a7107769146a4505524b1773037507578a5b179916105b718aaa69b305008309211a01a23629934b73573396aa4410644abaa274053720bb077a91b1a0898b9677795246288951221bb47080226052832918548499352b4209b78538a398052a56b03002679075321330a59a900192b2146b944976094109a047a367590972a409167760668279bb16b866671b2798991b61407770b3ba67a8889077b5124b657244b949b36062389702383a117583053102175081866232635ab4824239a53554652920a58ab5b51291a5a42a49b488211a2932ba8320000640b0237810a995647467238544155a8717335829293b232a6664840ba6ba66954b5202abbb135813224708976101210a7042a301a4677101b3367765796287b4a1ab791602a769a62207a84153a16857271a9a4849986243b6a6b1735469492993a52349447b2b850ab793201a112053254a8a34ba01377a12543594045735815272561132577824032932a8172281b20b09703857459186b7aa422165103a2423a826127648976b58a22122ba7091480496291124a66671434b18715295545a43b587955755ab780564a3a5a601614553145aa16357282ba9955b0b84255951a9b62a7423a120b008b8739a76a86599774a4967b6209b193ba013b116881b078903a907379608a48a5958a9657694ab9942299a92b1884040667487108a2556968004612386970b020044a1763216658265586b8901a4259172b992519ba2194ab8bb4a84a7a6b936370842254a32b5801612418b4805ba4512b1aa9b3985358a358a0a0843606827b5941774642b846b46ab3526542ba952374736b54ab608a40b9bb18a896178b26999503b9a63486003684255884907311039200b90a30705515a6b3b5933b87429842720b841004078a07691b3006014ba97217b96439539406840bab24a70b35a264718bb6a0502021a4217345660535a40b638a88170222383524b04a2b1440b40b94413b7b69804169199744383bb9b5255b80a0999a13715770075351a6a7579544b30a8970a64599b3968297632a501413499867a6a457a05781229b8179710440559b57a03338950bb4160463b6a81554b3190329955b069054b17b5218233125186098888279248485b3a01b27359890727435188a28485882708318a593a7036514560b65b8248013a51381403b96bb205883992484b49901078ab7654937516138480a39501a7624946822a4641905500782285807092051265b12a9759391425934053b863a94839137573b000b737a9909b3627297009484220a8543277116973311550588830a59303462b4a5703471773a3407266948561528443a2b95208b96307900356228b177bab91a67281b330829683116b0792b803a031087163374539b50b988b75575a109a312992b66a2919731054333205269390a991586734a327272814ba95b5880ab30a8203415623216801207a4343b30a3469b902b0246b5ba8a7a26a8904aa72a3866611897443295064aa71bb573b7b738b20830382b3012100a865ba199a8bb44763932497477042537162a613810514bbb818323aa9172a773952624651918aa9043b3364512b2400491a3800a1a1239507141228a9324228345414b0a31a8956997a6128a80794047662a46308a7b394b00648797a61221855a0746a29b32a971ba55b52a96b153b2575073bb8045077b75b263b43733619a7b12bbb1a483654ba584b1193146521133995438b122a89b50498939145b77aaa01b76594a6413aa84a3b42842a9200503a5138b27007b95a1a5b140198319606467b40961a89574b34055733b2193918b87a99994297757809287245ab5586986066720bbb5ab922527304349a011831678b29bb623400ab52870ab1a414114754210088996b82a82a43b175427216094363394b71a71997561a63485a13ba06519165a85948a652168a684a23aa8b8428a592249b259a64666a34b8937b36536450b013abb126b56027305191a8b3bb2a6491982a903a7ba733b9a20b702b39553a634438687020a585b0b3316a20b749171b41a09b5817532213521b072bb15871825b0a275636a0b9901328404b1189983852468b3a942551382301669bb248286958131579054a30b47628a9807a3b014842099346845673028634726526809503b7126435830587aaa58a6a0aa712a464676380bb4424b0b74925808bb4a8011a38740a69678855693262850a4903aa98402871a53655a08794b680240110b399455b1152478a55b254908b839378846351320b8994a3092556561a2878b791a09486892a0414510938840b1a2881132353445b5095880488b81502b7b3ba93b5a82b4820187a4a1a517854679983b0821b8066a761368a5a850621025b592b57010718605b42277966a1353349473a46809696808214aa7716b368429471a764634747a86308a9317511a02a80567463a052ba29a77410835403815b979347989475919631324110588119b702593aa590a1682bb8b1773bb7aa244869a4a5633900a876a57892505a359373b208088a9805ba791564055396074116523893494b31a9949b8983701425b3651aa67210611108b59b4a73100508b481467a399b05393208769134496817527a214238169177065015370964830190138425556997798060960894533410274065287a08b9bb004233555115084b2116054034406b912099554306202a0a22b88494879241443a5316792b6a4b9bb603b908a1ab327aa685267b24a87a145643134b2a001b25a6a64917148b27476a4b3814831261127b4ab996b79092405578737a304849369b06667593a47066a74168a713a759399647b350648a452011ba895695a471896b91825b756833794946060b540818bb4a5b0462242a01aa444076a535b2077388860a506ba6477789752a4b8144458a372131399b7294706a053363078105261ab5808737621a19754256a7805206ba5ab72516b72a1085a65b096807508bb05776877331857378439790711a6b608358182834361b90169786b86546088836088346b76a87b097826194a47b8a488a60bab29bb708379b086280592a5710601908b0980ba9b1a3530b1b26a77815b82b4b4a2401bb9b460000a480873b5322435295837353644693860767589100b307054615a791650840199b8122b0138b2b41007374a441322243367a341335b9335766186b333b9a515877598b42612738a36a4571', '6021275480.19992468556125044489507', 12); - T('3203001330102013.21130321012302133220331003232330122103203301112100203330232322130110130100232123110222112233321113010300311221303100223100220003133232311223111122202300331320123002102212012310230132322003033131231212020000123100033313033011121012110101000120331113033033223012323213003130323010323001322210131131003300101220322331110202100320100121202012332232311330013101003220231301111311112301312012032112222032203301103200110232000133232210330301001122322320123031012132313230322320230311321133313323002012300020201311130101020130002333021133101231212122032222121110213303112203111320130330002333033320233002012133101310320330031300232120023030123103031130130200212222222300321123121021133202122110030202031112003303322003001201202013001103311132101200300133122302112221330320013331223030231200212122313323322320303210012021201132023003103201132300202322130322310010311113332133232223313213011232113232223011211011211201120033112332323010031010231310330012022210311023112312220131323203230111021202221330013333313320132000132301300013330201232332121312333321222023330202312102122333313302123020000123313301022113213000112231331132331221331020200310000031231022121323101100130020011330231200312023311013011100212230013122120303212313331032031200213201230013320203103121100333112300110131211121012113202202332331201311011201120233322230020302222002230211012233033000133120120013000022221101132223212233331222102321103202202110301223303032100312313221223331003322110021022102133103003320231112202331221100011022033113023101203002133013123321031230330013310031112222033132320302102311331103313210031300111222112133302112020020202320002011122331003011321333312212023301333132332331232221313011132033200001322323000211332013103312011332012032131311331122313012211022322312000231333002000311302013312103103211012113200012131332013302030121132321120211011032200102030323211023010120131332101212110103113002011322302112220332032302313300312231310021302030100221111002133331312100233323020221321123021212120311112012313121121033230223310323103023313312012220111331110123310333212030321201011102003012312011301232320123112311011131000111212122232310002303002111301201323030331301000130230010232313301222103321121101311301110012103313121023321013201310023003131100323212013330312031120200123113221100122101203212223001103003011001010301223310320222313032202022200021110223320121331303110013021303303320003313133203132312232121200300232130033320110333222233120312132113321013300020100023203300310232022103300122121002003132100331203013100011121330331221331002222303113300331003022322032223133000200110103200320223022231213012033011022211022220113102320331121101100213220121021233123333123111313021210102130310113012101020132211220001130102112133323203320201110002102133112021000230231103132112010302131201103000301302331223023221121231230210122000231223103022202122223000311200121002100312312302121013002102312100323132332321302222003011203333101232132213233210011222101200330200212221202321212022000133121301300213322231130012230130330200302333231121131332211003232303121201201132220010213310002300233023130133303201012010333011212100011322222031210022310011023132022301210133132112011321300323232321331110200132320320131220120202021303331033030223032121203002000320101133303010111010011221133310000322233032202212123000120211120112222031021012112022112223202332021133002111302002213100332312110120013301220002101131331313311010020231322210223212133231202012023202200130322012301223331020012223131233211001201110303230332100113010100303032121232321303011230001213031221101132213233323211213131032222102231103001231011122002211233013220321213203002101213323022231231331013131333201220030110310201122310122023022202100011233012031102200300021233112223022323022212121221122203120002333232102130101002123203210020223101333103203302023200220002030201031330011331101000323121100333032101112230000013221031213333301000310201101011213031032210211020011132323200232333013130320113212010220332230031302103232012302111302133302331311121333212130103123312301131230320320332002313000022100123102321212000330122202230311030103233002020020123113120120312001032132131123003311321213201120203301210312021022320123020031232003301002221322022010220033301223033131322011121313020321030023121031221222111020000133113022111032102023213113011310212233320232120113303102122233300201102222232201111220130230213230232332010122332130013320123113332113301223231231321331203211033230213031200031001001222001213110310221321010003221123100001222232213311110032311031010031131002131311302112221213000222220010123230120312113121222322221010332321201330311301221032332322011012131102002102331002223021033221110002121221231023212333023133232330330130303100133001300230301100303033133100021021030212323313010332210213013231022003023311303012010000031102222221213220232130010330310013210200231330320031302201330120113123321223202023032112210231030322032001201032231000033322312001331333211230233022223110122212002200230121022213020222230201302102323232112100133011302320032300000003030200212011333203121001322130313003331320203000202200311020313120120031101012023312300230133003110321222100211311331112023031011112130101213032303131312031022010031300222301332200302310331210013213220223231212010011133301033221132210330320010330311013213133121113023000103020030211203021103333231301300013133310022032132133121033023233000203313023000103030121223110012221213213021102312310200301301221301011010202022023010301301131031102000001223011213013020331301013130223310121220212332012201221121223000002301230022110322032032111220300320302332313112331011330313320023321033312112233300122302100100033321210220010123030313232223222303003103230211213220022022123201012320211203300001102311003331021230013203013220230221031202320301320010120110320220301320013332030131030020321302201201321312221111132111202113111322020203223303102103112133122320330012221020131020300302131010323013101311032233111312021131202230010303013023203112023102302100133123011022013220310331120030113122122112032203200222223333223021102123300102111233202311311112121220233011333111023103300322233201100223001103131003321220302320333331320023221103112222103211210032300312320303123133312330322020210323210102230111123302323232020130310000302133022221210000311313103100031301133012123010010332210221033213313001113100121232010001030231110133000221313201002221101321333022203030212010222220021120302001330202310113112101130220202013302113212220220032200023223031331321130030301023111321233030121133321313033323102211310312331013211233120220103231103011312113201102100000102001311003221003032111013103132002010110010330223323211313102310011212331221113310231000230110311022101031201102003021031233233032222200322030102302010301301301230000103020022120112223010000233232233033021231203302100220021121330233021213232130333201113110332310022330102000123303232330111233121120312231102322301312301332233031033122121211120011333020012121231301003200330122103123210110321232122203313130300233230130121031002022112202203223013003110221303320322331031232220302011113201313232122213103013222122110023321321220012032022203000103110010021223311300333231322100133211301013230310213130312131100313101120233012133112231131213101321212212020323101113212101303013111332322120203011300000333112101120312320132222103011113023123103012232231132332012302020331010231300122310123201302113011230232101003120120313210033023212302321130133002331131111210301102212011330222120231233020101201321121330003103112333030203010232231332303312323322311132303322320110010121330132011212221213030302210230300300011202213303210202321102312202310330030030203212210111010123120010210202033220330321311233111102312230223012220100002210111212233222213320013321112332123130230213210230300000330222003000101111220202121023022032133021133020033013000223023111212101333130121300222223110311202032311123113320321110320021112123221210122020030010021011033210002222203132122111221103033313333103023210330321030211023120003002011113120313221020213012022', '3808937095.590715119594237', 4); - T('54653.68070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358303680700465732615411218625176475507872284014433583036807004657326154112186251764755078722840144335830368070046573261541121862517647550787228401443358304', '36255.76650', 9); - T('11010010101101010001100111001000.0000100001111101011001101100101010010010111001010010000010110101100011111100011011111010100001111111110100010010010011101010010101110011100001010011100110100010010110000101010000100000101110110000001000100000110011010101001100011101110110101000000011001010000100001111011000001000010000011001010001101111111110100101010010100001101000101001010000111011111001011101000011011101101000110000110101000011001100101001001001000011100000101100000110011000101011111001010101010111011010101110110011100011011100101000110011000010011111011000110111101011110011000100010001011000111010011011001101101010010011111001000100110010100100000111001011010000001000100111000111100001010101101100011001000100100010000111110001001101111011001010100100111100100111000010110101001011011101001000110000100000000010101111101111011011101101111000111100101000100100011011001010110101001011101001101000110101011000001111111001001111001000001011011100111110001100100101111101100011001101111101011111110011110101010011101011100010100011010001000100001111101011111101001110110010110111010111100010000000111111010010001101010010000010001110111101010100000010101011101011111001001001111110010000100110000011011110101011111110110010111101101101011111101001011001010001010110100111000000000011100111000100010011100011111011011001001100110001111111000010111001000110011011011010111010001101000110011011100000111110101100100100100101011110111101100101001010011100100110111010111010100001111110100111010010001010100001101110110101011001011001101111000111111000101100001001101000011011111001000000101001000111110101010110100100010011100100100000100110011011110001100001011011111110100001110010000000001000101001100101100110011101101100011011100111010010100000011110010010111010000101000010001000011011111101100101011000100001101101101110011001010010001010010000100111101001010010100000100010010100011111100100011100011111101000100100101110110001110011110100101101011001010110110001001111111110111011100011100011100101111000110111000010001110111111011110010001111001101101100001001110000010011101110100010001111010011101110001010010000101111101001110001110111111000001110100110100001001011001111010001100010111001100010101101111101111010010010000011001000101111101000101000001101011101001100110101101000011101001010111000000011011010110010110100000110011001001110001011001001110001001000100111000011010000101000101011001101010000111001111011011010000110110010111010011011110011011010111001101001101110100010111000110100110111001110110110000111100101100000100100111110111110111011001101101010000100010010010100011011011011011110111010000111010101001000001011011100011111010111110100011111101100110101000111010110110000111001011011101101100100011010101110011001001011001100110100111010111100000011000100011111011010110101111011100001010101001000011100011001111011110111010010100000001011000001000011110100011110001011000100000011111110000000101000011011100001000000010011101011110100101110100101100010101100000011110011001101010101000101111100011011000000001100110110011100011011110101011101111111001010011101110001000010101010001010010101110101111000001111101100110110100000100001001010000110110111000001000011111010101011001010000110001001000001001101001011000101001000111101111010010110110111001001100110101100100001101100110101100010010111110101010111011001011100110100111100011010100101111010001111100001101111101101100000010111010101010010011101110100111001101000010100010010010000111011001101001100010101110100001101010110011111110101100001001100111101110101110111011010011011001000010000010010101111110100000010111010110100101011010111000111011001010010111110100000000100101110111101100110101011000110001101101000010100010000011111111101110111100010000000111110001001110011101010101010000011110011100001100110111001110001010011100000101100011111110111100101001110110010000110101011100110111010011100011110000010110111110111101100110011101011111001100100101011111010001001110110000101011010101100000100010000011000111010001101010011100110111011100111001110010001000010100100100000000111000100001011010000011010000001101101000000011011111011000101110100101101101000000110001100010000101100001000000110000100110000010100001100000110000000110000000100001000000110010001010111010110100111110000101100111001100111000111010010110010100111010100100111100000010010011101000101010101100000010011110110000001000011000001111111010001001000001101111011000110101000011010101000100001000000100000001011101111110111001000011001110100101011001010010110000101110100010111011111001110101111011010011101000010000110110101100101100101101100011101100100011001110100110010010110110101110010110001001010000110111100010100100001100001011010001011000000001010100011000010001011110010000001111001011010111110110110001111011110000110101111111010110101011011001101000100111010111111110010010001101110111010100100110011110110111000100001111101010011010100000001001111011110111011001011110100001001010111011111000000110010111110000110111011101001111010000111011011000010010110110110011110101110010100100001100100101000000011100000001000001110100110110010111110111101110010000111101000101111011100011101001100110101001101000010111110000010101000111111000001110000010011010001110101011000111101101100001010100000000111110010000011000100110001101101001011001100111001000110110111011101110001101101001111100000010111010111100101100101001011110010100000001100000010001111101010111100011110001100110110000011001101010111011110000100101110100100000100111001001101011000010010110100001000100110101111101111001010001011100100010101011000010011111111110100101000101000100000011110010101000010001100110010001010101011000100011011111011010100111010111101111111010111000110101100111111001001100011010111000101110000111100101010011100000111100010010100000000100010001111110000001000011011000010110010001110111101111101101110110000101101010101110110110101110011010110101001001010000010000011001101010111011110011010001110011101010110010111111110000011000010010101101001001011101100000110000111000100101110111110100100100000011000101100100111011111011110001110101010101001010010010010110011111110011011110111001110110010011010101001000011111011010000010000110001010101110100101001101110111010100001001011110101100100110110011100010001101101001001100000000111100001001000101000011001000011111000111100101101010001110010111011011100100011110110111011000001111110100001111010001100111111100010111010000010010101100001110001100011001000110010100100011011110010111010011100010011010000001010010101010000101011101111110110100010010000010100001100101101101110111010110011110010101010111100001101001110111111110110100011110111000100101100111001000001110101001011011010100101001111011110000111110111110011100110110011001111100100100000111010110001000010111101110100011011110010111000010111101100000000111100000000001101101111011110001110001001110010100010011111100100001110101110010001111011111010101011101111010000011000100101100110000100001111101101011001010000110111010010011001111011000010101111011101001011010001101100010001100111110111111101000110000010001001001111110110101010011011100100111100101101011101111010101010001000001101010000110101000100100011011000100011111000001000000000001100001011100011110110110000000100110111000010101011101101110010000110100110111001001010010100100100100000101010000100000010110000001100010111100110010100010010000010100101100011111011000111111100011001000001100001110100100101001111111000010111001101011010100100010010011011000100100010011101011111110000111000101000110011100011001001100000110001101011101111100110101001110010110110100111111001111011001010001101101011000011011110111010101110000010111011010001010110001010001001111101101011111101100101101001000101100111000001010011111110110111011101110010100101110110111110110110111101100111000001000100101111110001110000000011101011011001010110110111000010101000010110011011111111011010001000010010010111011101101101010010010100101111110101000010111100001111111010001000101111100110011100000001', '3535083976.0331634754719698597483934067029600647308860151850713734', 2); - - */ - - BigNumber.config({DECIMAL_PLACES : 20}); - - assertException(function () {new BigNumber('2').toString(0)}, "('2').toString(0)"); - assertException(function () {new BigNumber('2').toString(1)}, "('2').toString(1)"); - assertException(function () {new BigNumber('1').toString('-2')}, "('1').toString('-2')"); - assertException(function () {new BigNumber('1').toString('1.9')}, "('1').toString('1.9')"); - assertException(function () {new BigNumber('1.23').toString(36.01)}, "('1.23').toString(36.01)"); - assertException(function () {new BigNumber('1.23').toString(37)}, "('1.23').toString(37)"); - - assertException(function () {new BigNumber('1.23').toString(NaN)}, "('1.23').toString(NaN)"); - assertException(function () {new BigNumber('1.23').toString('NaN')}, "('1.23').toString('NaN')"); - assertException(function () {new BigNumber('1.23').toString([])}, "('1.23').toString([])"); - assertException(function () {new BigNumber('1.23').toString({})}, "('1.23').toString({})"); - assertException(function () {new BigNumber('1.23').toString('')}, "('1.23').toString('')"); - assertException(function () {new BigNumber('1.23').toString(' ')}, "('1.23').toString(' ')"); - assertException(function () {new BigNumber('1.23').toString('hello')}, "('1.23').toString('hello')"); - assertException(function () {new BigNumber('1.23').toString('\t')}, "('1.23').toString('\t')"); - assertException(function () {new BigNumber('1.23').toString(new Date)}, "('1.23').toString(new Date)"); - assertException(function () {new BigNumber('1.23').toString(new RegExp)}, "('1.23').toString(new RegExp)"); - assertException(function () {new BigNumber('1.23').toString(2.01)}, "('1.23').toString(2.01)"); - assertException(function () {new BigNumber('1.23').toString(10.5)}, "('1.23').toString(10.5)"); - assertException(function () {new BigNumber('1.23').toString(true)}, "('1.23').toString(true)"); - assertException(function () {new BigNumber('1.23').toString(false)}, "('1.23').toString(false)"); - assertException(function () {new BigNumber('1.23').toString(function (){})}, "('1.23').toString(function (){})"); - - T('NaN', 'NaN', undefined); - T('NaN', 'NaN', null); - T('NaN', NaN, 2); - T('NaN', '-NaN', 2); - T('NaN', -NaN, 10); - T('NaN', 'NaN', 10); - T('12.345', 12.345, new BigNumber(10)); - T('12.345', 12.345, null); - T('12.345', 12.345, undefined); - T('12.345', 12.345, '1e1'); - T('Infinity', 'Infinity', 2); - T('Infinity', 'Infinity', 10); - T('-Infinity', '-Infinity', 2); - T('-Infinity', '-Infinity', 10); - T('101725686101180', '101725686101180', undefined); - T('101725686101180', '101725686101180', 10); - - BigNumber.config({ERRORS : false}); - - T('2', '2', 0); - T('2', '2', 1); - T('2', '2', '-2'); - T('2', '2', 1.9); - T('1.23', '1.23', 36.01); - T('1.23', '1.23', 37); - - T('NaN', 'NaN', 'NaN'); - T('NaN', 'NaN', undefined); - T('NaN', 'NaN', null); - T('NaN', NaN, 2); - T('NaN', '-NaN', 2); - T('NaN', -NaN, 10); - T('NaN', 'NaN', 10); - T('12.345', 12.345, new BigNumber(10)); - T('12.345', 12.345, null); - T('12.345', 12.345, undefined); - T('12.345', 12.345, NaN); - T('12.345', 12.345, 'NaN'); - T('12.345', 12.345, []); - T('12.345', 12.345, {}); - T('12.345', 12.345, ''); - T('12.345', 12.345, ' '); - T('12.345', 12.345, 'hello'); - T('12.345', 12.345, '\t'); - T('12.345', 12.345, new Date); - T('12.345', 12.345, new RegExp); - T('101', 5, 2.02); - T('12.345', 12.345, 10.5); - T('12.345', 12.345, '1e1'); - T('Infinity', 'Infinity', 2); - T('Infinity', Infinity, 10); - T('-Infinity', -Infinity, 36); - T('-Infinity', '-Infinity', 10); - T('101725686101180', '101725686101180', undefined); - T('101725686101180', '101725686101180', 10); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html deleted file mode 100644 index 4820356..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/bignumber-vs-number.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - Testing BigNumber against Number - - - - -
        -

        Testing BigNumber against Number

        -
          -
        • - - - [ decimal places ] -
        • -
        • - - - [ decimal places ] -
        • -
        • - - - [ significant digits ] -
        • -
        • - - - [ decimal places [ , rounding mode ] ] -
        • -
        • - - - [ maximum denominator ] -
        • -
        • - - -
        • -
        -
          -
        • - - - Rounds away from zero -
        • -
        • - - - Rounds towards zero -
        • -
        • - - - Rounds towards +Infinity -
        • -
        • - - - Rounds towards -Infinity -
        • -
        • - - - Rounds towards nearest neighbour. If equidistant, rounds up -
        • -
        • - - - Rounds towards nearest neighbour. If equidistant, rounds down -
        • -
        • - - - Rounds towards nearest neighbour. If equidistant, rounds towards even neighbour -
        • -
        • - - - Rounds towards nearest neighbour. If equidistant, rounds towards +Infinity -
        • -
        • - - - Rounds towards nearest neighbour. If equidistant, rounds towards -Infinity -
        • -
        - -
        -
        - - -
                     BigNumber ERRORS:
        - - - - -
        - - -
        - -
        - - -
        - - -
        -
        -
        -
        - - - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html deleted file mode 100644 index a2b5edb..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/console-errors.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - - BigNumber Errors - - - - - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html deleted file mode 100644 index 4f53d70..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/every-test.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - Testing bignumber.js - - - - - - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html deleted file mode 100644 index 3b21f69..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/quick-test.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - Testing bignumber.js - - - - - - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html deleted file mode 100644 index 23d180c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/browser/single-test.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Testing bignumber.js - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js deleted file mode 100644 index 8ecbeb7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/ceil.js +++ /dev/null @@ -1,208 +0,0 @@ -var count = (function ceil(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(expected, value) { - assert(String(expected), new BigNumber(String(value)).ceil().toString()); - } - - log('\n Testing ceil...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - T('-2075364', '-2075364.364286541923'); - T('60593539780450631', '60593539780450631'); - T('65937898671515', '65937898671515'); - T('-39719494751819198566798', '-39719494751819198566798.578'); - T('92627382695288166557', '92627382695288166556.8683774524284866028260448205069'); - T('-881574', '-881574'); - T('-3633239209', '-3633239209.654526163275621746013315304191073405508491056'); - T('-23970335459820625362', '-23970335459820625362'); - T('131869457416154038', '131869457416154038'); - T('-2685', '-2685'); - T('-4542227860', '-4542227860.9511298545226'); - T('2416872282', '2416872281.963955669484225137349193306323379254936827'); - T('-757684868752087594264588207655', '-757684868752087594264588207655.27838048392835556'); - T('-438798503526', '-438798503526.2317623894721299587561697'); - T('801625782231888715214665', '801625782231888715214665'); - T('-91881984778675238', '-91881984778675238'); - T('327765350218284325239839632047', '327765350218284325239839632046.91682741746683081459605386'); - T('-7469045007691432294', '-7469045007691432294.362757245'); - T('8365540212937142194319515218790', '8365540212937142194319515218789.4106658678537421977827'); - T('-14108', '-14108.495051214515'); - T('49104502', '49104501.10055989379655329194309526150310568683504206945625'); - T('131370407', '131370406.330005158136313262837556068534122953'); - T('3017', '3017'); - T('-689', '-689.6944252229740521128820354989299283'); - T('73441822179', '73441822178.572653'); - T('-2329', '-2329.42655772223486531483602927572548264457'); - T('-834103872107533086', '-834103872107533086'); - T('-1501493189970435', '-1501493189970435.74866616700317'); - T('70592', '70591.2244675522123484658978887'); - T('4446128540401735118', '4446128540401735117.435836700611264749985822486641350492901'); - T('-597273', '-597273'); - T('729117', '729117'); - T('504', '504'); - T('4803729546823170064608098091', '4803729546823170064608098091'); - T('24147026285420507467578', '24147026285420507467578'); - T('-6581532150677269472829', '-6581532150677269472829.38194951340848938896000325718062365494'); - T('-131279182164804751', '-131279182164804751.430589952021038264'); - T('2949426983040960', '2949426983040959.8911208825380208568451907'); - T('25167', '25166.125888418871654557352055849116604612621573251770362'); - T('4560569286496', '4560569286495.98300685103599898554605198'); - T('14', '13.763105480576616251068323541559825687'); - T('176037174185746614410406167888', '176037174185746614410406167887.42317518'); - T('9050999219307', '9050999219306.7846946346757664893036971777'); - T('39900924', '39900924'); - T('115911043168452445', '115911043168452445'); - T('20962819101135667464733349384', '20962819101135667464733349383.8959025798517496777183'); - T('4125789711001606948192', '4125789711001606948191.4707575965791242737346836'); - T('-6935501', '-6935501.294727166142750626019282'); - T('-1', '-1.518418076611593764852321765899'); - T('-35416', '-35416'); - T('6912783515683955988122411164549', '6912783515683955988122411164548.393'); - T('658', '657.0353902852'); - T('1', '0.0009'); - T('1', '0.00000000000000000000000017921822306362413915'); - T('1483059355427939255846407888', '1483059355427939255846407887.011361095342689876'); - T('7722', '7722'); - T('1', '0.00000005'); - T('8551283060956479353', '8551283060956479352.5707396'); - T('1', '0.000000000000000000000000019904267'); - T('321978830777554620127500540', '321978830777554620127500539.339278568133088682532238002577'); - T('2074', '2073.532654804291079327244387978249477171032485250998396'); - T('677676305592', '677676305591.2'); - T('1', '0.0000000000006'); - T('39181479479778357', '39181479479778357'); - T('1', '0.00000000000000000087964700066672916651'); - T('896', '896'); - T('115083055948552475', '115083055948552475'); - T('9105942082143427451223', '9105942082143427451223'); - T('1', '0.0000000000000009'); - T('1', '0.00000000000000000000004'); - T('1', '0.000250427721966583680168028884692015623739'); - T('1', '0.000000000001585613219016120158734661293405081934'); - T('1', '0.00009'); - T('1', '0.000000090358252973411013592234'); - T('276312604693909858428', '276312604693909858427.21965306055697011390137926559'); - T('1', '0.0000252'); - - T(2, new BigNumber('1.000000000000000000000000000000000000001').ceil(NaN)); - - // ---------------------------------------------------------------- v8 start - - T(0, 0); - T(0, '0.000'); - T(0, -0); - T(Infinity, Infinity); - T(-Infinity, -Infinity); - T(NaN, NaN); - T(NaN, 'NaN'); - - T(1, 0.1); - T(1, 0.49999999999999994); - T(1, 0.5); - T(1, 0.7); - T(0, -0.1); - T(0, -0.49999999999999994); - T(0, -0.5); - T(0, -0.7); - T(1, 1); - T(2, 1.1); - T(2, 1.5); - T(2, 1.7); - T(-1, -1); - T(-1, -1.1); - T(-1, -1.5); - T(-1, -1.7); - - BigNumber.config({EXPONENTIAL_AT : 100}); - - T(0, -1e-308); - T(-1e308, -1e308); - T('2.1e+308', '2.1e308'); - T(0, '-1e-999'); - T(1, '1e-999'); - - T(1, Number.MIN_VALUE); - T(0, -Number.MIN_VALUE); - T(Number.MAX_VALUE, Number.MAX_VALUE); - T(-Number.MAX_VALUE, -Number.MAX_VALUE); - T(Infinity, Infinity); - T(-Infinity, -Infinity); - - var two_30 = 1 << 30; - - T(two_30, two_30); - T(two_30 + 1, two_30 + 0.1); - T(two_30 + 1, two_30 + 0.5); - T(two_30 + 1, two_30 + 0.7); - - T(two_30 - 1, two_30 - 1); - T(two_30, two_30 - 1 + 0.1); - T(two_30, two_30 - 1 + 0.5); - T(two_30, two_30 - 1 + 0.7); - - T(-two_30, -two_30); - T(-two_30 + 1, -two_30 + 0.1); - T(-two_30 + 1, -two_30 + 0.5); - T(-two_30 + 1, -two_30 + 0.7); - - T(-two_30 + 1, -two_30 + 1); - T(-two_30 + 2, -two_30 + 1 + 0.1); - T(-two_30 + 2, -two_30 + 1 + 0.5); - T(-two_30 + 2, -two_30 + 1 + 0.7); - - var two_52 = (1 << 30) * (1 << 22); - - T(two_52, two_52); - T(two_52 + 1, '4503599627370496.1'); - T(two_52 + 1, '4503599627370496.5'); - T(two_52 + 1, '4503599627370496.7'); - - T(-two_52, -two_52); - T(-two_52 + 1, '-4503599627370495.1'); - T(-two_52 + 1, '-4503599627370495.5'); - T(-two_52 + 1, '-4503599627370495.7'); - - // ------------------------------------------------------------------ v8 end - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js deleted file mode 100644 index fc6667d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/cmp.js +++ /dev/null @@ -1,4127 +0,0 @@ -var count = (function cmp(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - n = 'null', - N = 'NaN', - I = 'Infinity'; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(a, b, expected) { - assert(String(expected), String(new BigNumber(a).cmp(b))); - assert(String(expected), String(new BigNumber(a).cmp(new BigNumber(b)))); - } - - function isMinusZeroJS(n) { - return n === 0 ? 1 / n === -Infinity : null - } - - log('\n Testing cmp...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : false, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - T(1, 0, 1); - T(1, -0, 1); - T(-1, 0, -1); - T(-1, -0, -1); - T(1, N, n); - T(-1, N, n); - T(1, I, -1); - T(1, -I, 1); - T(-1, I, -1); - T(-1, -I, 1); - T(0, 1, -1); - T(0, -1, 1); - T(-0, 1, -1); - T(-0, -1, 1); - assert(false, isMinusZeroJS(new BigNumber(0).cmp(0))); - assert(false, isMinusZeroJS(new BigNumber(0).cmp(-0))); - assert(false, isMinusZeroJS(new BigNumber(-0).cmp(0))); - assert(false, isMinusZeroJS(new BigNumber(-0).cmp(-0))); - T(0, N, n); - T(-0, N, n); - T(0, I, -1); - T(0, -I, 1); - T(-0, I, -1); - T(-0, -I, 1); - T(N, 1, n); - T(N, -1, n); - T(N, 0, n); - T(N, -0, n); - T(N, N, n); - T(N, I, n); - T(N, -I, n); - T(I, 1, 1); - T(I, -1, 1); - T(-I, 1, -1); - T(-I, -1, -1); - T(I, 0, 1); - T(I, -0, 1); - T(-I, 0, -1); - T(-I, -0, -1); - T(I, N, n); - T(-I, N, n); - assert(false, isMinusZeroJS(new BigNumber(I).cmp(I))); - T(I, -I, 1); - T(-I, I, -1); - assert(false, isMinusZeroJS(new BigNumber(-I).cmp(-I))); - - T(0, '0.1', '-1'); - T(0, '-0.1', '1'); - T(-0, '0.1', '-1'); - T(-0, '-0.1', '1'); - T('0.1', 0, '1'); - T('0.1', -0, '1'); - T('-0.1', 0, '-1'); - T('-0.1', -0, '-1'); - T(0, '0.000000009', '-1'); - T(0, '-0.000000009', '1'); - T(-0, '0.000000009', '-1'); - T(-0, '-0.000000009', '1'); - T('0.000000009', 0, '1'); - T('0.000000009', -0, '1'); - T('-0.000000009', 0, '-1'); - T('-0.000000009', -0, '-1'); - T(0, '5.5', '-1'); - T(0, '-5.5', '1'); - T(-0, '5.5', '-1'); - T(-0, '-5.5', '1'); - T('5.5', 0, '1'); - T('5.5', -0, '1'); - T('-5.5', 0, '-1'); - T('-5.5', -0, '-1'); - - T(1, '0', '1'); - T(1, '1', '0'); - T(1, '-45', '1'); - T(1, '22', '-1'); - T(1, 0144, '-1'); - T(1, '0144', '-1'); - T(1, '6.1915', '-1'); - T(1, '-1.02', '1'); - T(1, '0.09', '1'); - T(1, '-0.0001', '1'); - T(1, '8e5', '-1'); - T(1, '9E12', '-1'); - T(1, '1e-14', '1'); - T(1, '3.345E-9', '1'); - T(1, '-345.43e+4', '1'); - T(1, '-94.12E+0', '1'); - T(1, '', n); - T(1, ' ', n); - T(1, '\t\t', n); - T(1, 'ertgrt546', n); - T(1, 'qweqwdewee', n); - T(1, true, n); - T(1, false, n); - T(1, 'e 4.3', n); - T(1, '4 .3', n); - T(1, '4.0 01e', n); - T(1, ' 4.001', '-1'); - T(1, '4.001 ', '-1'); - T(1, ' 4.001 ', '-1'); - T(1, ' 4.001', '-1'); - T(1, ' 4.0 01', n); - T(1, '4. 001', n); - T(1, '4. 001 ', n); - T(1, ' 4.001e ', n); - T(1, ' 4 .001 e ', n); - T(1, undefined, n); - T(1, null, n); - T(1, Number.POSITIVE_INFINITY, '-1'); - T(1, Number.NEGATIVE_INFINITY, '1'); - T(1, new Date(2012, 11, 4), n); - T(1, new Object(), n); - T(1, function () {}, n); - T('0', 0, '0'); - T(0, '+0', '0'); - T('0', '0', '0'); - T(3, -0, '1'); - T(9.654, 0, '1'); - T(0, '111.1111111110000', '-1'); - T(N, '0', n); - T(-1, 1, '-1'); - T(-0.01, 0.01, '-1'); - T(54, -54, '1'); - T(9.99, '-9.99', '1'); - T('0.0000023432495704937', '-0.0000023432495704937', '1'); - T(NaN, NaN, n); - T(NaN, N, n); - T(N, NaN, n); - T(N, 4, n); - T(N, '4534534.45435435', n); - T(N, 99999.999, n); - T(Infinity, '354.345341', '1'); - T(3, -I, '1'); - T(-Infinity, -I, '0'); - T(-I, -Infinity, '0'); - T(I, '-999e999', '1'); - T(1.21123e43, -I, '1'); - T('-999.0', I, '-1'); - T('657.342e-45', -I, '1'); - T(I, 123, '1'); - T(-0, I, '-1'); - T(100, 100, '0'); - T(-999.99, '0.01', '-1'); - T('10 ', 4, '1'); - T('03.333', -4, '1'); - T(-1, -0.1, '-1'); - T(43534.5435, '0.054645', '1'); - T('99999', '1', '1'); - T('3e', 8, n); - T('-3..0', 13, n); - T('0 0', -0.4, n); - T(' +3e0', 4, '-1'); - T(9.9806, '+ 1', n); - T(' +2 0', '1e1', n); - T('e3', 4, n); - T(' ', 0, n); - T(323, null, n); - T(undefined, undefined, n); - T('undefined', undefined, n); - T(null, null, n); - - T(0.04, 0.079393068, -1); - T(0.023, 0.04840192819, -1); - T(0.021879, 0.02, 1); - - T('0', '-7502', 1); - T('-1', '-0.000000000000000000295176', -1); - T('2.9', '3.23360', -1); - T('1.14', '4289', -1); - T('-3', '0', -1); - T('0.00000000000000551', '-3958.43', 1); - T('-13', '0', -1); - T('-23.382', '-16.1', -1); - T('-176.85', '0', -1); - T('1.38497', '-0.0000000561', 1); - T('3.90', '18.124', -1); - T('-239.52', '-0.00000000000066862', -1); - T('5.7', '2248.28', -1); - T('-0.00000000012', '0', -1); - T('29', '-5', 1); - T('0', '-54', 1); - T('3', '-1.1', 1); - T('-461.9', '-13803', 1); - T('-1', '0.00054428', -1); - T('-0.000000000000000683', '7', -1); - T('2', '1', 1); - T('118.608', '-4.8', 1); - T('3', '0', 1); - T('83.5', '44.9', 1); - T('-3', '-2.86', -1); - T('1138.06', '47.08', 1); - T('-2.3', '3', -1); - T('-848', '0', -1); - T('5', '2', 1); - T('11.3', '-176.3', 1); - T('-302142', '3.8', -1); - T('-9', '-38', 1); - T('0', '-1', 1); - T('6161', '-3', 1); - T('8', '0', 1); - T('-1334', '-14', -1); - T('3.593', '0.000000000000059975', 1); - T('0.0000000000000000847', '-1186.11', 1); - T('4.62', '14.47', -1); - T('0', '-319', 1); - T('23168', '8.3485', 1); - T('-16', '-1.6', -1); - T('64.3', '2108.4', -1); - T('4', '-1', 1); - T('-0.50346', '-319.6', 1); - T('10910.0', '-0.00000000000000000314208', 1); - T('1', '0', 1); - T('-0.0000000000000552', '0.00000000015', -1); - T('0', '16', -1); - T('38.4', '35.83', 1); - T('-1.1', '-0.000002850', -1); - T('0.000000000000011', '1.2', -1); - T('-50.66', '2.2', -1); - T('-1187', '5', -1); - T('174', '-1.8175', 1); - T('651.1', '-11.332', 1); - T('-1', '-0.000000000000000011', -1); - T('7156', '4.84', 1); - T('1', '3', -1); - T('0', '77487', -1); - T('51.7181', '17', 1); - T('13.132', '0.000000000000029446', 1); - T('5.4', '0.000000000000000006325', 1); - T('4.1', '-2.42', 1); - T('-5.2', '-44.1', 1); - T('-6', '15.018', -1); - T('-27.949', '-1170.9', 1); - T('0', '0.0000000000000000120', -1); - T('-3.7', '-52.1', 1); - T('-17.43', '0', -1); - T('-1.4', '-11737', 1); - T('-7.17', '615.40', -1); - T('-1', '-0.000000000000000389', -1); - T('0', '-11.7', 1); - T('0', '-0.0000039894', 1); - T('-14.15', '-0.0000011139', -1); - T('-16260', '-3.97', -1); - T('-0.00000066', '-1.3', 1); - T('-818', '0', -1); - T('-3', '-30020.5', 1); - T('-3.328', '-28.16', 1); - T('-74', '2', -1); - T('-30332', '-1.61', -1); - T('-0.00000000000000494', '0', -1); - T('-2.1', '11.6037', -1); - T('-0.0000000000000013762', '-5273', 1); - T('-0.00000000000000000002353', '1188', -1); - T('-0.00000000000000033619', '-4', 1); - T('3.2', '-597.81', 1); - T('14265', '0', 1); - T('-18.8703', '1', -1); - T('-4.5', '-146.5', 1); - T('-259.7', '0', -1); - T('-72.57', '4.3', -1); - T('0.0000015', '9.06', -1); - T('490815', '0.0000000000000000000385', 1); - T('0.614', '-0.000000000000000001154', 1); - T('1.2', '0', 1); - T('-1.8', '-436269', 1); - T('0', '-7', 1); - T('-3.18290', '-453.85', 1); - T('5.645', '1', 1); - T('8.426', '1.0', 1); - T('-6702', '-0.000003053', -1); - T('0', '-0.0000000472', 1); - T('-13.789', '0.12167', -1); - T('0', '-22472', 1); - T('769.0', '0.00000019970', 1); - T('0', '-145.1', 1); - T('-307', '-1', -1); - T('1', '-0.000015', 1); - T('3', '-4', 1); - T('7', '3.791', 1); - T('-0.0000000000000021', '0.00000414', -1); - T('203.0', '-14124', 1); - T('-1', '8.4', -1); - T('-0.000301', '-3665.9', 1); - T('2212', '120841', -1); - T('-10.4', '1.90210', -1); - T('-4.709', '-3.2', -1); - T('-0.00000000000062', '-2.20513', 1); - T('3', '-41230', 1); - T('-0.00000000931', '-348.5', 1); - T('4.50', '0', 1); - T('0', '104894', -1); - T('0.00000072', '0', 1); - T('-1', '-73.214', 1); - T('9', '-1.898', 1); - T('1', '-1', 1); - T('0', '3.99', -1); - T('-2', '0.0486', -1); - T('-4', '-0.00268', -1); - T('0.0000000000791', '-4.97', 1); - T('-13795', '3', -1); - T('-13.197', '0', -1); - T('0', '-4.7', 1); - T('0', '0', 0); - T('3.7', '0', 1); - T('10.3925', '7.312', 1); - T('2.263', '7.388', -1); - T('-6.0', '-2', -1); - T('1', '-1', 1); - T('1.987', '32454', -1); - T('-0.361', '-200.6', 1); - T('5.0', '-7', 1); - T('-6.2', '-0.0056', -1); - T('-3.8', '1', -1); - T('-9.3', '-7.64', -1); - T('38364', '-127.311', 1); - T('-1.6', '-3.06', 1); - T('1', '-2', 1); - T('3.952', '5', -1); - T('566', '125.359', 1); - T('1078.97', '496', 1); - T('0.000000000097586', '-0.000000000000000000027457', 1); - T('-37.5', '-28572', 1); - T('412', '-0.0000000000000001572', 1); - T('0.00000024221', '-35.8881', 1); - T('25.8', '0.0000000000000000000242', 1); - T('0.30', '0', 1); - T('-26.440', '-3.64', -1); - T('1.15', '-3229', 1); - T('-137.1', '2', -1); - T('0.00000000077', '53558', -1); - T('0', '2.6', -1); - T('-3', '-6', 1); - T('-0.0000000000000000139', '-0.0005289', 1); - T('-0.00000000000000000697', '-1.309', 1); - T('-0.0000045', '-8.3', 1); - T('-2', '-1.3', -1); - T('-1.42209', '-1.74', 1); - T('-608.88', '25.3', -1); - T('0', '-1', 1); - T('5.6', '-4', 1); - T('7.17', '-4', 1); - T('56.6', '8218.4', -1); - T('68.33', '0', 1); - T('5.0', '1', 1); - T('32.734', '-9', 1); - T('0', '20837.0', -1); - T('-0.0000000000000000013950', '-3364.72', 1); - T('3.66', '-0.0000000000000000536', 1); - T('-1471.14', '6', -1); - T('0', '-0.0000013', 1); - T('1', '-5', 1); - T('-10449.8', '-58.424', -1); - T('0', '0.0000000000000000017122', -1); - T('0.000000000000026585', '4.1', -1); - T('-7', '0.00000000000000000920', -1); - T('0.00000000489', '0.00000000000000000036325', 1); - T('0', '104674', -1); - T('-1.30063', '0.000000004051', -1); - T('0', '2', -1); - T('-3', '0.00150', -1); - T('-407.95', '495.290', -1); - T('24533.8', '-2539', 1); - T('1', '0', 1); - T('-43.4', '0', -1); - T('-1399', '16.89', -1); - T('-232480', '0', -1); - T('3', '-1', 1); - T('6.2', '12.2', -1); - T('-23.38', '0.0853', -1); - T('-18.2', '1', -1); - T('0.002118', '-16.9821', 1); - T('8819.2', '28.744', 1); - T('-2', '-5', 1); - T('-2.10', '9.2620', -1); - T('0', '-5', 1); - T('23963.9', '0', 1); - T('-0.00000045', '0', -1); - T('2', '2', 0); - T('-3.444', '3', -1); - T('0.0000016140', '1.5132', -1); - T('0', '-1', 1); - T('-1', '-7', 1); - T('1', '-869.7', 1); - T('0.000000000000016', '-1609.8', 1); - T('651.3', '2.923', 1); - T('270.901', '5.2', 1); - T('0', '-2.6', 1); - T('0.000000000020617', '0.0000000096018', -1); - T('4.32', '-7', 1); - T('-1.5', '-23.7', 1); - T('1.2497', '-58.42', 1); - T('-6.4', '2.24', -1); - T('0', '1002.3', -1); - T('265.64', '26.7', 1); - T('387.4', '757.85', -1); - T('0', '6.525', -1); - T('1120.24', '-0.000000000000000000232098', 1); - T('67.22', '0', 1); - T('67', '-3.1', 1); - T('0', '0', 0); - T('-1.01', '0.00059917', -1); - T('-0.000000000000091884', '2.7', -1); - T('171', '4', 1); - T('0', '-367347', 1); - T('95.1', '-0.000000114267', 1); - T('0', '0', 0); - T('62.4', '-5', 1); - T('11627.8', '9.844', 1); - T('-1', '2.33', -1); - T('-14', '0', -1); - T('-55', '7', -1); - T('-22.460', '872.15', -1); - T('-0.00000000027029', '2.05', -1); - T('-0.0000000000000004846', '17.73', -1); - T('3.6', '0', 1); - T('-3.233', '0', -1); - T('-3.878', '-383', 1); - T('-0.0000000000174', '20.7', -1); - T('0.0000000000000000000126', '-2.229', 1); - T('-2.307', '14.8000', -1); - T('-563.79', '0.000000000000000069934', -1); - T('-315.71', '-0.00832', -1); - T('7', '0', 1); - T('188.9', '-2.883', 1); - T('0', '14.5720', -1); - T('2', '5389.3', -1); - T('-2413.1', '-28', -1); - T('0', '0', 0); - T('0', '-98.587', 1); - T('3', '0', 1); - T('17930.7', '1880.31', 1); - T('-1', '-0.00000000000000000272', -1); - T('0.00000000000000000002288', '51.0841', -1); - T('-1.004', '-14799', 1); - T('-0.0024973', '-6', 1); - T('-0.00000000000054', '6', -1); - T('0.0009288', '-5.2', 1); - T('-45.4', '-0.000042102', -1); - T('-56.1', '1793.86', -1); - T('-68.425', '0.0000000000000068415', -1); - T('-2.20', '0', -1); - T('136.51', '0', 1); - T('-5.9773', '45', -1); - T('-6996', '60.60', -1); - T('0.00000000773', '-2.6', 1); - T('-3827', '-42.150', -1); - T('-4', '3277', -1); - T('0.0000000000000201', '-0.00000000000000094', 1); - T('7497.2', '-45738', 1); - T('5.20', '2', 1); - T('139673', '0.000013', 1); - T('258285', '0.00000000000338', 1); - T('20.6', '0', 1); - T('5', '45.3', -1); - T('0', '0.00000000000000000010937', -1); - T('2', '-392.465', 1); - T('0', '5.7', -1); - T('-4.3', '-128.0', 1); - T('-9.94', '10.6', -1); - T('10.524', '-4.1', 1); - T('4.3713', '-5.6', 1); - T('-4.1', '6.2', -1); - T('-95', '-0.0000000000000000000622', -1); - T('-2113', '1253.8', -1); - T('406.95', '-2548', 1); - T('978', '771', 1); - T('-4776.4', '-911.1', -1); - T('1.039', '0', 1); - T('-4', '0', -1); - T('-1.06798', '0', -1); - T('-5.2', '-1.0827', -1); - T('1', '2', -1); - T('0.5638', '0.0000000000000000000866', 1); - T('7.3', '-9.5', 1); - T('-2', '61406', -1); - T('1.4', '6.60', -1); - T('-3', '-1.4', -1); - T('0', '9.825', -1); - T('-0.000000000335941', '2912.92', -1); - T('-557.81', '-64.4', -1); - T('3', '0.000013480', 1); - T('-25.4', '-163.15', 1); - T('-151.0', '7', -1); - T('-219.2', '272', -1); - T('0', '-0.00000000000000000020763', 1); - T('-1363.0', '294.3', -1); - T('0.00000000000000000003537', '-3.62', 1); - T('-0.00000017', '436.44', -1); - T('1.6079', '-9.56', 1); - T('76.1', '0.000067', 1); - T('-1.68', '0.0000024', -1); - T('0.0000000000000031', '-2.9629', 1); - T('-1603', '228.1', -1); - T('-51.66', '2.6', -1); - T('0.0000000000000208093', '1', -1); - T('-11215', '23.963', -1); - T('29.34', '-39.5', 1); - T('7', '0.00000000000000718', 1); - T('-44.309', '4', -1); - T('-11871.9', '-6.11', -1); - T('8', '-5.3', 1); - T('-1', '-0.0002202', -1); - T('3416.2', '0', 1); - T('-245.2', '-1.15', -1); - T('-1.70169', '-4.73', 1); - T('0', '1.1', -1); - T('7715.4', '468500', -1); - T('-0.00044', '2', -1); - T('-1.8', '1.1', -1); - T('-13.575', '-2.58', -1); - T('-6', '-0.000000000000000044077', -1); - T('35.2', '2', 1); - T('0', '-5.43', 1); - T('-2', '-629.9', 1); - T('260.5', '-2394.9', 1); - T('-110.50', '0', -1); - T('-97.17', '2.6', -1); - T('4.0764', '-71.47', 1); - T('-0.000000000000016', '0.000000000000000000785', -1); - T('1.5348', '0.018', 1); - T('-2.2', '5229.1', -1); - T('0.000000129738', '60', -1); - T('14550.4', '-5092.49', 1); - T('-134380', '3.51', -1); - T('1.390', '1', 1); - T('-0.000000044', '17.1', -1); - T('34.398', '1', 1); - T('-177.5', '0', -1); - T('-5.3', '3.326', -1); - T('-1.75', '-1938.43', 1); - T('1', '-32.9851', 1); - T('0.01082', '0.0000000000000000001008', 1); - T('197.469', '-143177', 1); - T('-61.5', '-11.6803', -1); - T('7', '0', 1); - T('43.44', '3', 1); - T('-6.8', '-0.0000000000000000015', -1); - T('0.0000005371', '0.000000000002723', 1); - T('943', '49.02', 1); - T('1', '-45.09', 1); - T('0', '-55.76', 1); - T('-760.2', '0.000000103078', -1); - T('1', '-1861', 1); - T('-2531.7', '-185.95', -1); - T('1.2', '0', 1); - T('6.4', '3', 1); - T('0', '9', -1); - T('-122', '43.423', -1); - T('-3.91', '1', -1); - T('1.4', '-1', 1); - T('-8.51', '-3', -1); - T('360.56', '56.278', 1); - T('0', '0', 0); - T('-2', '-0.000000000000007301', -1); - T('-1.4', '6', -1); - T('479.1', '-838', 1); - T('-32.6', '3.8', -1); - T('-0.0086188', '-4.6', 1); - T('-8.2', '-0.0000414', -1); - T('-5', '-0.1236', -1); - T('-107', '-0.000000000000220', -1); - T('-0.000000000000168', '-0.000000000000000089', -1); - T('2', '1', 1); - T('-0.0000000050600', '7', -1); - T('1959.3', '5.1', 1); - T('0.00008180', '16.364', -1); - T('0', '1392.91', -1); - T('-4.6', '1', -1); - T('30.4', '-0.000000000000007179', 1); - T('6.0', '8.90', -1); - T('5', '0', 1); - T('9', '9.05', -1); - T('-0.00000029', '4846', -1); - T('72', '-0.00000001422', 1); - T('1.1613', '7', -1); - T('-0.000000000000000409872', '35.6', -1); - T('0.00000000000444', '-101.737', 1); - T('0', '-2', 1); - T('2.0', '1', 1); - T('-1050', '-0.000000000323', -1); - T('0', '20.06', -1); - T('7.774', '-6.5', 1); - T('71.84', '-6', 1); - T('0.003160', '-1.42658', 1); - T('0', '599.4', -1); - T('-8.9', '127.37', -1); - T('-5', '-16.295', 1); - T('2.76521', '1.28', 1); - T('-31601', '-1', -1); - T('0', '1.69958', -1); - T('76.4', '-0.00000000000000000011', 1); - T('-228.0', '0', -1); - T('4.39', '0.000015545', 1); - T('0.391', '-164.55', 1); - T('4.93', '41.50', -1); - T('572.3', '431.86', 1); - T('-1.21162', '-143876', 1); - T('-0.0000000000002463', '-2', 1); - T('-5', '84.4', -1); - T('-1.3', '-5.06492', 1); - T('-0.0000000000002969', '-1', 1); - T('479.758', '0', 1); - T('39.80', '0.003823', 1); - T('1', '3', -1); - T('0.000000000000670', '0', 1); - T('-16', '-10963', 1); - T('3', '-102.5', 1); - T('-0.0000000000000000033174', '15.945', -1); - T('18.14', '-1829.06', 1); - T('10038', '0', 1); - T('0', '-0.000000000000000000125', 1); - T('353', '0.00000000000000017781', 1); - T('-4.43154', '1165.4', -1); - T('-501.963', '-83511', 1); - T('0', '-7.0', 1); - T('58578', '0.00000000000000000027', 1); - T('135.2', '1', 1); - T('-6.3', '10988', -1); - T('2.6', '6.3', -1); - T('-74', '67.08', -1); - T('1', '-2.59572', 1); - T('30.7', '17.0', 1); - T('5', '-3262.2', 1); - T('1', '-8.5', 1); - T('-1', '-0.000000000000030694', -1); - T('1', '-311', 1); - T('1', '5.76', -1); - T('1.9', '-15.55', 1); - T('-2.5', '102.1', -1); - T('-1', '-290.43', 1); - T('-1.4', '0.00001613', -1); - T('-0.00000114224', '44.99', -1); - T('0.000000000000414', '7.3', -1); - T('0.00000000000000079824', '0', 1); - T('-856', '16.3', -1); - T('0.000000003556', '1', -1); - T('-1267', '-0.0024', -1); - T('-3.30', '-6187', 1); - T('-0.000000000000007860', '4', -1); - T('0.000136', '-1.5', 1); - T('-5', '0.00000035346', -1); - T('0.0000025', '-3', 1); - T('0.00000000000054261', '-12.2', 1); - T('-0.00000039', '5', -1); - T('-0.0000000000000248948', '2.22', -1); - T('-12', '3.199', -1); - T('-1424', '-14', -1); - T('-30.99', '-2', -1); - T('0', '2511', -1); - T('0', '129.1', -1); - T('-2', '-566.76', 1); - T('2.51917', '-54', 1); - T('-3100.0', '-6.4', -1); - T('1358.86', '55.919', 1); - T('0.54071', '4.66', -1); - T('-14298.8', '3.4', -1); - T('0.000000015', '40.9', -1); - T('-1.781', '-580.96', 1); - T('1', '296', -1); - T('20.7', '-68.13', 1); - T('915.0', '3', 1); - T('-4794.2', '-1.5', -1); - T('-2.9', '19401', -1); - T('-1805', '-8.1', -1); - T('0', '2608', -1); - T('9.93', '1908.1', -1); - - T('0', '0', 0); - T('-0.00000000000004475220262613', '390046.9220288808', -1); - T('-52', '-7', -1); - T('-7137400653786386', '-1220454', -1); - T('19.76074721670306', '39433637.5', -1); - T('495810.901671347', '-201199464.42718987', 1); - T('2180987378927.828', '28150984.022786039', 1); - T('364.263', '1334', -1); - T('-4.541827796913', '0.000000000720283699415669', -1); - T('0.000000000000533031300116917190', '-733584.206', 1); - T('-0.0000000000000019761199', '-6724.9979821490', 1); - T('0.00000000012335234299864', '56.021423640836509', -1); - T('17752.992435030', '513735.52129558557', -1); - T('-341665592090.67519', '895755.23903', -1); - T('-0.01174948256069749', '38841.427732372', -1); - T('2067269955.10633', '-215483633', 1); - T('58373', '-0.000000000000000208432238083784077', 1); - T('2821.0921360930698', '-0.0019370832810573843', 1); - T('-1', '-6987341307332550', 1); - T('-0.000000000000000135940520450', '-7', 1); - T('368879186519841.03', '3.86407044811851', 1); - T('54.8552188726690', '-17618.8325331', 1); - T('0.00000000719285162', '3.0', -1); - T('-24541949382.5', '12000388993272705.7', -1); - T('-0.00000000000000016019271145', '-5010014644.83398', 1); - T('0.00000342615147619', '38.8937553143', -1); - T('0.000000000000030', '698637', -1); - T('-940562183996', '-9538.76857523965', -1); - T('0.7992283723', '-301.642', 1); - T('-943394092028892', '0.00000000000249028944', -1); - T('0.0000000065', '19.8', -1); - T('-0.00000024892', '1.081095088', -1); - T('4693767.27', '0', 1); - T('241.51552', '-0.000000000029998424146', 1); - T('4.70', '-3889836.808618', 1); - T('-31', '22.1677904', -1); - T('-8', '0.0000000000000018564862859', -1); - T('-2.82', '-0.1308117625', -1); - T('-0.000000000000000490813322', '9628302045.4', -1); - T('14', '-1', 1); - T('-21665490839.0', '-308.104922674', -1); - T('-5', '-6.6', 1); - T('20.356245251', '-2629.4181', 1); - T('-1.39', '24102492360.03791', -1); - T('26.56', '-81.84491435616642', 1); - T('12733804882', '3.16734', 1); - T('0.0000000000001331522614064615', '-62.298429591', 1); - T('4.5417', '-0.0000000000000000000906964635852953', 1); - T('5.0', '3.99206', 1); - T('28282932454425', '20112043684.32', 1); - T('-119.144720881', '-129.74436439545', 1); - T('740279.3975', '18685368847070828', -1); - T('-194303.7', '0.000000000000006199756267389375', -1); - T('0.000000000000000002405090', '-0.00000000979604845', 1); - T('-0.0001603124275271', '0.000000006060544102736781', -1); - T('-179.52', '-76.6', -1); - T('9736.4996007851800', '99.6', 1); - T('-0.0000000000000000000126060214789203821', '6748323899.81', -1); - T('-0.0000076569074016550', '0.000000000525779058', -1); - T('0.0000000000000000047090003506832525', '0.00000000000000011759', -1); - T('-286334697213252', '8557782748357', -1); - T('-0.000000025274118612780187', '-127000540', 1); - T('0.00000000610055019436568', '-87.3', 1); - T('-1560822.78', '360857.435', -1); - T('243209397988565176', '-2171.0', 1); - T('1089364.8', '-7', 1); - T('5', '-195.43311519499808', 1); - T('0', '-12.6', 1); - T('-8917436.7369', '-2412090', -1); - T('0.0000000000258', '-0.000000000000000001137187844109', 1); - T('65611', '-0.00000000000527362056737', 1); - T('0.0000000000000000000113412508151534071', '-4.9964', 1); - T('20156417.0', '0.0000000000000253800552009', 1); - T('32.967316', '-176195213.7000883', 1); - T('-542212737079077800', '-593.88569405080', -1); - T('-0.000000000000000004199278271388794', '57186245414.80793', -1); - T('0.00000004507194567013278', '1.0', -1); - T('43551631176247', '-2195', 1); - T('-4.6', '0.00008016', -1); - T('-0.000013384535', '3437784.58', -1); - T('0.00000000000000002007911523', '-1.34', 1); - T('2.5', '-39.06', 1); - T('0.0000000000000000051', '2', -1); - T('0.00012813936789257785', '1021.0303931', -1); - T('0.00000000000000000132229', '47.1', -1); - T('-0.00002120044', '0.0000000000000000064902789323', -1); - T('9', '379472788024622.729', -1); - T('20.510820935587124', '0.0000000000028179781', 1); - T('-0.0000000000000000000336381763977', '1.17539', -1); - T('0', '-335.0', 1); - T('2.4', '-0.00000000000023', 1); - T('379.690496326', '-0.000000000000000003740124432080006', 1); - T('9612.15057327', '7', 1); - T('64.55819568', '103', -1); - T('306554.22', '-21168.82471', 1); - T('0', '0.00000000000000378671778', -1); - T('-4869994212.02', '-82.3249644', -1); - T('-28281314', '0.00023', -1); - T('-272266413010184382', '-21443895.1', -1); - T('0', '256.5', -1); - T('-0.0000000000000000059504', '-393', 1); - T('-85483356.741520', '-0.135106007572', -1); - T('1256398743581', '-0.00000000000000113', 1); - T('9265.8054085790753', '1101.60', 1); - T('21755297.7418484298', '-1961304', 1); - T('-4.24', '-20364.5241763', 1); - T('-0.00000163743621', '-15716423.93', 1); - T('0.0000000020933557160', '-8448055.64162653', 1); - T('193', '1919.381696195', -1); - T('-39007.0872890', '58659197064.3566', -1); - T('1.224', '-82293358.63', 1); - T('0.0000000000000001573421585953', '0.00000000159648', -1); - T('0', '-91.479627934421', 1); - T('-186.247902631', '-0.00000000000000008879', -1); - T('34342532998345', '0.000000000000000001681734691290559', 1); - T('-4020.8878086173', '1.08', -1); - T('-0.1630447778870097', '8176.334', -1); - T('-0.0000000000000000582491728505043', '0.00000000000000808314', -1); - T('-0.00000031', '3137213.71057', -1); - T('-28.21073575152', '8530334210.39291', -1); - T('-0.00000041292', '-66921.7723433', 1); - T('-261247.289569419', '-0.0000022547224', -1); - T('-4.07', '-6.1', 1); - T('688.144527235', '45986414948', -1); - T('-1', '-0.0231932902995', -1); - T('0.0000000000000016241364087636498', '3', -1); - T('64634.877977', '-39803483', 1); - T('93.85', '-27.012', 1); - T('-1804.8479', '-2720034', 1); - T('-31207.70845', '-0.05392720639355', -1); - T('-7479301046098815', '37.3', -1); - T('50515.653686861597', '-0.00000000000000204399360', 1); - T('-0.0000000000000000055012280316826870', '149.91618262', -1); - T('2216863.9954067', '0.000000000000000775121457372458', 1); - T('-3.1', '2', -1); - T('-4.67', '0.000000018732162086', -1); - T('-0.00002189591', '-0.000000000255830068339', -1); - T('410611332258005.0', '-2840.2819', 1); - T('-7397921366979', '-0.00000000000053', -1); - T('-0.12413104038561', '-0.00000000000255343979', -1); - T('10521370.1', '-55871447.8', 1); - T('129500.264553199', '-3811409369958.95', 1); - T('0.00000240712277094094', '1354108422.5', -1); - T('-0.000000000000000005719028368733990', '540474.19019760', -1); - T('977162.7422', '-0.000000000001402550', 1); - T('1.54339295432', '-0.000001596789', 1); - T('53798507.25', '-0.00129745384800', 1); - T('-0.00418268966509248', '0.0000324984627', -1); - T('118092.9308827', '-0.0000000000091', 1); - T('0', '-93.6', 1); - T('0', '152.55335', -1); - T('-3405109.0892217', '0', -1); - T('445424.679402140', '85.3554', 1); - T('5036.98', '22371.6657', -1); - T('-1.9', '0.000000102345283335839', -1); - T('-42.2659', '3.721', -1); - T('0.0000016709189598', '6.170585', -1); - T('-3', '0', -1); - T('-0.0000000061', '5497334338493.62', -1); - T('-124932073873228', '0.000000000370', -1); - T('-0.007149648796120', '-0.00000001269559959', -1); - T('1675530.7719', '-1065461.6469931248', 1); - T('1053.3', '10097922.4048112434', -1); - T('-92523142643508', '-4', -1); - T('200.8', '-36.675816237421759', 1); - T('2.0', '34282969.24101', -1); - T('-0.120192312259366', '-99423384.4155', 1); - T('0.00000000000000000746964', '-4.50907217', 1); - T('2521.848164', '-16771705.710', 1); - T('0.00002756245400', '0.0032449553261', -1); - T('-0.00000001332527923', '574.55219962424', -1); - T('-0.000000000000000179221403668', '57235.797', -1); - T('0.000000057866988749115', '0.00000000014', 1); - T('3', '1.2', 1); - T('56.30058910190568', '-1680170716816089', 1); - T('-2', '-24381767.5', 1); - T('11799.81119', '-0.0000092161582', 1); - T('1.13', '-1', 1); - T('1', '-802.5013810814', 1); - T('54624549209148.7', '-0.000002846161', 1); - T('138301402', '-0.00011', 1); - T('5', '-2.4', 1); - T('-4604424', '1.28478944', -1); - T('-146100841048.0', '92.57', -1); - T('-0.0000000000000000020786339367465', '0.0000000517784775175150122', -1); - T('94366206024220.8', '-147.3818299', 1); - T('-3.30342757', '-2.8', -1); - T('1458645603.7314952', '-0.00000000000000071', 1); - T('-22352269.3857581', '1.133', -1); - T('0.00000000000203016463277398240', '11.54042', -1); - T('119.31', '0.0000000000005419744970291', 1); - T('-479.458846', '-61007894', 1); - T('-12.748', '-42.6', 1); - T('-4', '-2102161', 1); - T('-0.0000892951', '-0.00000000700082036664', -1); - T('1440.2349309228', '2068244137965', -1); - T('4.122', '3', 1); - T('0.00000000006657906', '-5.9', 1); - T('-0.817940036224482', '-3055637.756294', 1); - T('-30364497819', '0.000000386', -1); - T('-10441.7700601833655', '1.62504166598260', -1); - T('0.000000000000000000013559973223809', '-0.0000000000000873509044373', 1); - T('-46163.26048', '869724.9', -1); - T('-0.0000000912', '0.0215663057542177284', -1); - T('-7983637956', '1777.3345419909', -1); - T('9901852112330', '0', 1); - T('5', '-0.132564740', 1); - T('-0.000000000001296', '-3398418.84', 1); - T('2479240525029.33616', '-56491017716', 1); - T('0.0000000000000000000125250462975224734', '3113453368428781', -1); - T('18553.70674887', '-2036370511701.586', 1); - T('1987104769376.1', '-3.2', 1); - T('-15.9', '-0.0000000113232545789641887', -1); - T('224.9148', '-18.1', 1); - T('37574545.7', '-6.2', 1); - T('8', '99053.70', -1); - T('-359.3860', '-31.8', -1); - T('1.85', '-41.0', 1); - T('-2450069962976026', '0.000000061710947', -1); - T('-724091.9920619242', '-3301857', 1); - T('-59.1', '-7', -1); - T('-11075495.60081', '8.5630713', -1); - T('-58.7', '-0.00000000015983986', -1); - T('0.00000000040731658521', '18001880087', -1); - T('162453.79', '6668407464.1', -1); - T('-0.00000472188389576600677', '14115', -1); - T('126502', '10.69459', 1); - T('1715058', '94.8763148', 1); - T('-1', '2.2612173', -1); - T('0.5133073103', '-11.97191154', 1); - T('1.74', '-0.1674805636', 1); - T('-7290144.463920', '2527.03', -1); - T('-3', '-4.9427', 1); - T('-926566116.423411', '26.01271418645', -1); - T('-449.272959041948', '68532785212291439', -1); - T('138258577757.4', '-1003304148227.7', 1); - T('-0.000000000000000000010128915955897709', '-3304146563351', 1); - T('-0.0000000051706766331953970', '6', -1); - T('-0.0000000000000000007641943051494263', '-545257.46', 1); - T('-113562.957375112', '-21965305.642892', 1); - T('-11448.06', '210.2157232900', -1); - T('-141.1', '161.66', -1); - T('-29036932102', '37', -1); - T('8', '868324216.74', -1); - T('0.00000000000000472435319983650895', '-154.252', 1); - T('46.1', '2.16', 1); - T('1', '-28907.803', 1); - T('88570165763.081', '3003599203227764', -1); - T('-0.0000000000000000001073793607923634', '49309.7', -1); - T('-1.6', '2392146.237692', -1); - T('-2139.959367', '-0.000010270379848989', -1); - T('-954.845', '21359245.6438920', -1); - T('-0.0765243310465', '3.569', -1); - T('35244', '6.818525', 1); - T('1.0', '0.000000000000002694', 1); - T('0', '0', 0); - T('-16.37618647', '-0.000000000000255699967320', -1); - T('4', '38.09', -1); - T('-512214740.316205024', '0.00000000000000000048545', -1); - T('-0.0000356092', '872.5', -1); - T('0', '266836883083', -1); - T('0.0000030666714898272657', '-5746982.6567787', 1); - T('0.000115493195', '13.9259', -1); - T('-9766.284811588', '-0.00441218036285053563', -1); - T('251093071416.33', '-59740.56', 1); - T('-0.0000000000139253216444', '-0.0000000000000097199551454897', -1); - T('0.000000000000000005459644785124686', '398147250730851493', -1); - T('38.0', '-8781', 1); - T('-827469', '-9', -1); - T('-172850535.5', '-74.381839485246', -1); - T('-404166', '0.000000000000020', -1); - T('-8325567260571.80', '-1308443.50003', -1); - T('0.0000000000000001096141', '-329056750.0', 1); - T('542.65133', '-0.00000000088698', 1); - T('0.000000000000000000133704', '-651984.8', 1); - T('0.000000825879483325', '-381653.3', 1); - T('0', '-22991738843.86', 1); - T('2', '-36.5624759', 1); - T('-1690423000.05', '3376665391', -1); - T('-1695.58', '0', -1); - T('-47561102.1021', '0', -1); - T('201.1', '1716645951967.8', -1); - T('1935050', '0', 1); - T('-5.4755', '157.79589', -1); - T('-4.3', '-7', 1); - T('25090265240.04625', '-607.8', 1); - T('-2926462.61', '154865050635', -1); - T('1503606.9361', '0.000000001129607342663', 1); - T('-0.000000000000000000618066504819', '0.00005276', -1); - T('-95112', '2.67584319409253', -1); - T('45561', '0.00000000344217291134', 1); - T('92088411.754', '-81.226353161780981', 1); - T('107.0', '-0.0000000656279606187', 1); - T('47.9', '-23853019975.85895', 1); - T('-52.6663139391784', '16270104.474', -1); - T('-0.000000000000198761', '-6696522145', 1); - T('-3.7840523387703', '2470.12717031561720', -1); - T('-0.00000000000000022920', '-145705.5690558090', 1); - T('-1.0', '0.00000000000000527026187525810', -1); - T('3.59714', '-2725.47934324', 1); - T('151538195108874.210', '-76712263823045', 1); - T('4673409.1540083779', '71941922241245290', -1); - T('-0.00005452', '4996813423', -1); - T('45.37478482310', '-9.9', 1); - T('0.00000000004284806937', '-805754809.47164', 1); - T('-65142.3', '32395696858721', -1); - T('0', '-8105471469018314', 1); - T('140547537', '1.390913', 1); - T('-4', '-1', -1); - T('-1.7', '-28584565633401.94', 1); - T('-14414.40', '-0.0000000000000000065362929973320', -1); - T('2668644862897', '-65.93', 1); - T('187.5651870279', '0.00000000000004537', 1); - T('-166316028', '304548094.9', -1); - T('21.1', '-3.7459045000441289', 1); - T('83796717308913', '392191976.2', 1); - T('-245830.74', '-0.6276780', -1); - T('0.00000024230706949', '102871132', -1); - T('567804266.88', '0', 1); - T('-127491067191278', '-54422.33919641', -1); - T('-1336839.5677', '4.68601', -1); - T('-32772435.641', '0.0000000000346', -1); - T('0.00000000000000100', '-0.00000000000000000035706589', 1); - T('514103.488', '-3.2441', 1); - T('-80.073950', '128750504.46', -1); - T('-230652915.7', '-3.03863', -1); - T('-18888.4009', '7344873616474480', -1); - T('7', '-8961195435475.363', 1); - T('0.0000000089922', '-274867588598', 1); - T('-556.4765', '-3', -1); - T('1298.69', '2188624222909.504', -1); - T('326246955888254', '0', 1); - T('9924973.51090', '10.913818', 1); - T('-64922057.22328', '0', -1); - T('-0.000015121244906956671', '-13641070311', 1); - T('-0.02954', '-1.951973916', 1); - T('1083.674582984972', '1098', -1); - T('-558.42815252', '-61.1907444466', -1); - T('0.00000000025639686430', '577986', -1); - T('-7035.93', '-0.00027214889', -1); - T('3', '-90736572249838', 1); - T('7.63915', '1232667.0', -1); - T('-0.000135502278681995', '0.0000000000000244953080777', -1); - T('0.00000000000799030040007', '1.68', -1); - T('481721839972013.764', '-47070151004241360', 1); - T('-24.978', '206335.932853155857', -1); - T('-616.2698', '0.0314914227', -1); - T('1207176666.0', '-1301439870', 1); - T('-0.00000000016429476', '9.9', -1); - T('-0.00505710206398253462', '0.0000001380667547928', -1); - T('-1.165016965486953', '-138379.4231296172', 1); - T('-79.6633131', '165.14223157', -1); - T('-73825158.59', '-61', -1); - T('0.000000000934', '-3.82200519751368', 1); - T('0.000000964717', '-0.000000000000005927687371823458', 1); - T('27.727966', '-25.61', 1); - T('2', '-23910', 1); - T('-12', '3883816315.70155728', -1); - T('8.206177344', '153.790', -1); - T('4.9785', '218608289854278.794', -1); - T('21.262085653354', '-0.0000063961966310', 1); - T('0.000000032951144241042674', '14189577.516', -1); - T('7610.88052', '-1307222', 1); - T('0.00000000000000000004157294626', '86', -1); - T('-28.12923', '-177547.975', 1); - T('309.88', '-816', 1); - T('-2278580099.10', '6.352', -1); - T('-19.72742783115382', '-1101.0', 1); - T('-263181.91904236906', '-9.5', -1); - T('31.3', '0.00000001853884573', 1); - T('-167415.77', '-0.0000000000000067', -1); - T('-4.4', '-8608589026778.48', 1); - T('-0.000000000000000100148808054135', '-478.23174', 1); - T('567.51927458', '63184.6562350967', -1); - T('0.0000000000000000031', '0.000000000000000007929', -1); - T('-2', '-28934796077245.37', 1); - T('-49505821', '-1.7522', -1); - T('26.41137', '0.00001060660706229', 1); - T('-0.0000014187070', '2894.13734', -1); - T('0.0000000000000000079', '-23597579.1', 1); - T('-7.595684', '-3303819607.9377', 1); - T('0', '-3.0774669892765', 1); - T('0', '3', -1); - T('-1108203.892', '774.9', -1); - T('0', '213043362334', -1); - T('13304398.0371608', '-42671595698923', 1); - T('-59.334', '-14797425210.4', 1); - T('-1580.918446457', '597.1509', -1); - T('-1954585', '43.7', -1); - T('8', '-0.0000000000031877466746', 1); - T('15.24', '0.0000095965900328103', 1); - T('108.38', '-1', 1); - T('-1333901185', '-327.940', -1); - T('0.0000000000000003002264302838337', '-0.0000000000020925378', 1); - T('0.0026377197741282', '28815020.633', -1); - T('749760.615164', '-216.05', 1); - T('-160307.9', '12.94', -1); - T('-106313763', '309.6', -1); - T('362759', '1.1', 1); - T('3661.3030316', '-16218702.35428', 1); - T('-29.385677982085526', '211.7', -1); - T('-0.0000000000000000023842', '-449178776092589', 1); - T('-6.9471389224004', '-9.14525417', 1); - T('-533061078.7187', '0.0000000000000000010672', -1); - T('-0.0000000000000000000549612286887', '2489771', -1); - T('-0.00000000000000219220742135136', '-438551392682022', 1); - T('-7.39965327', '-11.7759', 1); - T('0.0000000000000003275', '0', 1); - T('3.5', '516.37962208', -1); - T('46.4537129', '75.28061', -1); - T('0.00061329308410045020', '-1895948346907524', 1); - T('211758460425', '2', 1); - T('51956.6527986101', '2568.075045980510', 1); - T('-0.0000027761040', '0', -1); - T('0.00000000000000007928801', '-225.8724', 1); - T('-0.7498337810439', '81437603983.269', -1); - T('-2917265829.6754396', '-40551534', -1); - T('705475472886', '-94431.289335', 1); - T('-0.000000000001041719221', '6.9032947055', -1); - T('-141.60', '4893.455', -1); - T('-0.00000000000000000276', '-2348', 1); - T('-451846573.05392', '994.237', -1); - T('58980583273.66404', '3', 1); - T('3.0', '-24256.552994526', 1); - T('0.000001359135157304725', '-74511.22739626557', 1); - T('-1', '-7.56575', 1); - T('129.886304994', '0.0000024937420', 1); - T('-340542455', '0', -1); - T('50949.95', '116146.9629904', -1); - T('-621306274358.78773', '-460701161', -1); - T('-0.0000000000001649894694', '0', -1); - T('-123393904497', '8243467175', -1); - T('-58.45', '0.0000000000000118', -1); - T('1125.372', '-188514556292761', 1); - T('0.00000000000000087318067062', '-3112845454279', 1); - T('-1357676334012628.9', '0', -1); - T('-0.00000000015751050088824', '-2741149.60746', 1); - T('-1.832', '396956274241425.09', -1); - T('547876802.49698993', '0.00000000000000203534', 1); - T('-0.00000000000000138873470272124956', '2.7', -1); - T('-2122998911772.16', '0', -1); - T('0.00000000000028992', '26193061.4', -1); - T('729909.717271101', '213.5069400843', 1); - T('0.000000000000000831795441', '-3149.30209', 1); - T('871.23', '-39.9', 1); - T('-266.516025843669', '-3', -1); - T('-0.0003377513144795643', '0', -1); - T('5429444.983', '-8.04', 1); - T('-16.86241', '0', -1); - T('-3.81', '397.2', -1); - T('-0.00000102639', '0.00000000003224208', -1); - T('70237963596.634', '-5857585.97', 1); - T('-0.00000000000000003645298330', '-27572.252', 1); - T('-1340.246701091', '1643.0', -1); - T('-0.0000000000000044091801675', '0.000000000000000028992762079', -1); - T('7460313.2', '-16167.854578244', 1); - T('-252.4', '218.3', -1); - T('-1', '-174474956852', 1); - T('2.68344', '-0.0000000000031997142239077', 1); - T('0', '1973.7414', -1); - T('1481958817.6', '53372066', 1); - T('-0.456', '27047501201', -1); - T('0.00008716', '-8953628973228.470', 1); - T('0.00000000000000110677110109', '1022800068.0', -1); - T('-58.061691', '7.580', -1); - T('0.000000000000000000011890', '2.32355850059843026', -1); - T('-0.000002164702426516', '163.9', -1); - T('223.1', '299.35', -1); - T('-129700523752699516', '-0.00000017', -1); - T('-5.27', '-1820.169295', 1); - T('83587.473', '-0.000000015648996536587', 1); - T('-0.0000000000000050132780', '-0.0028014658786123', 1); - T('-1', '169130711.41216', -1); - T('-1097575518.9328', '-10.1053377424', -1); - T('-0.01551135221651', '4', -1); - T('1.06932', '42.19', -1); - T('0', '1.4', -1); - T('-67852.2727000', '-3.311704582173664', -1); - T('-7.042326758390', '-0.0000000019748141455575', -1); - T('-1.003281', '317.6026', -1); - T('-782.20436144498144', '168447196048515', -1); - T('-243917419.22', '-193.49', -1); - T('201.75620', '-199.9', 1); - T('-0.0000000005419064219935', '227564', -1); - T('0', '-208129799136442.8', 1); - T('849606586946.33', '-12.5', 1); - T('32237710821138565', '-6', 1); - T('0.0003909263003590', '-0.00168080', 1); - T('-72141391104', '24.823064699', -1); - T('17.70', '154171341', -1); - T('-0.0000058731658540754', '-28607161539382', 1); - T('0.0000000000778024752', '-1.5315774605115', 1); - T('-0.0264455', '0.00000000000013642701952', -1); - T('-44.04616', '5.10', -1); - T('76789965', '0.000000002292', 1); - T('-0.0001367934293', '0', -1); - T('-9689.56490', '93.264005', -1); - T('-78.8991377137', '20605.8864902063172', -1); - T('0.000000000000000026641956701225', '-2.4', 1); - T('-99702426', '31234686409', -1); - - T('-78249536473266824330849.66777355094653206196949807187125', '-0.0000000000000003657205364898565', -1); - T('-794146002335392753453.706827563775514677616', '-0.000000000000002003697772718678199294529887857336117611280517515976', -1); - T('-415', '392495171560354735.54', -1); - T('-0.00000000003641527559883410541221', '118893973463454526683808886319100407749', -1); - T('-246230199620.751986', '-60621558.218545419613692429476293547415222080017643997', -1); - T('1135.2381823', '-7025657983677893287919132587754823076851573889.74685', 1); - T('-1225393854304.583672953386', '3712805076014395323562.4542406246', -1); - T('0.0000000000002805023524281798', '-1195739.55713460927706968721363067', 1); - T('386896730804748668115534580.29201499', '737595739534741234.44386299', 1); - T('-160941276095561769012497288743700757276588036', '194.232174807028239974132449968549146279604', -1); - T('0.0000000000000009760', '-112424977227983.369213445871607530779963339', 1); - T('-120493.3535480159461699138868088193226718499846079', '-963938726344338862591656029356573.2356831292145', 1); - T('1.731842697869349182975403693663977472678249978539', '-0.0000000000018342058226450839410208095980857226', 1); - T('0.000000000000000000186044372917454007190404393463337172211654339256226', '38603.328332936580263680889352090136846643070031691', -1); - T('2.24833678840107152900324', '-0.000000000000535013632333188', 1); - T('-0.000000000001014445297159531', '-182225871.4', 1); - T('-110739', '39245367522721683497924493692756130948391370303714834', -1); - T('0.000000000000000000011109996302235', '0.00000021747567330836261997878389805423396667433455', -1); - T('913805.7272137617667300113969454560', '12015557861856523.82185', -1); - T('4.44', '17327761911331833939511.3229350', -1); - T('3343815205898708797845323710139050310101815211790183', '0.000002944097410246031171887416698431193651848888', 1); - T('32760398270494573303330410.50750229445655494486793110334706', '-9510914125.45789497493920290055', 1); - T('0.00000031352646', '2982438266661362962075700689156408.44636939397', -1); - T('77053023622996.111620117040477945', '-594', 1); - T('28.651584435', '0.0000000000000517018230', 1); - T('69454425323857571.298955', '0.00000003183', 1); - T('8.585707061691', '27579495297994019790817050261359', -1); - T('0.0000245072088767920273', '597422085664.8946200175189947965015981804000953540032149', -1); - T('6395952035600311.145296483306709937475', '-7839682836938441873082358214760503680131094656590381429', 1); - T('-878403860673101771781740794629505317750999165.91704111', '23574346417573958371843475532943.5863825875041348813273', -1); - T('0.0000767302828677966418632441811470540764577', '-1276636.42385918072718338162162974143519652320393232805716411', 1); - T('-15930445184474597597265919925606183581356435.4578944', '-0.00000000000114252044623272018125497556095987129012517542089248', -1); - T('-48665285374684448074343674590620067.7', '1', -1); - T('105930.422', '11113072169.652252071060557105162', -1); - T('26564763', '-3', 1); - T('4811244033166.822319661770849918367233504118713435759512811', '4.7', 1); - T('-56.8', '4443507757632459.195553180343008573591954189736210531834', -1); - T('612.72379387256827500110', '-452.196955446440438357', 1); - T('-494127587184494770597966464398', '0.000000000000000505582034979983270144354985077988823279257757358354', -1); - T('151593171537726736029059210', '3280207153334176964', 1); - T('-0.0000000727423791233275798', '-33.983207203823', 1); - T('-0.00000000000000000014088202399161', '967411649025173.3', -1); - T('2.4', '-0.000000000001348198764946041705529604570289570284', 1); - T('-1458694234293.393', '-0.0000000277889669157893917', -1); - T('-1', '0', -1); - T('-295498271141109248639464345535.73829013835409617653972', '-239733948637940687.4210093379196529044279897', -1); - T('-114.668973584958627612325023154590', '0.00000000000000000204', -1); - T('11086296933075691303', '61846609604939708809351700530350279982', -1); - T('-199290.9539286389610', '0', -1); - T('-0.00008470578761402', '77227954881772040530.19249809987494428807714982', -1); - T('1675393978448', '-218061932.345257837058901', 1); - T('-148234164778648.90057404374761057399794220096395194121763477', '-1807153054383052.16291022958635252906429', 1); - T('0.00000107324116068524713963632866732786846249794493141690777', '-8697413954500148992019717571067182408306067052176.48379', 1); - T('-3504475807101437909894549201613284414285', '0.00000180507680656754700593791722943439535831913116826463442277', -1); - T('137188855.912293557682373', '-84390113782876.78301756825303169680317158020741023212586877', 1); - T('-8.04', '48917396714819601257978143.0', -1); - T('19441.23908', '-3621875953293954379164.80898', 1); - T('-488683915776821.54128571136', '-2764.655', -1); - T('-497.39163093', '456272554.910083158313064', -1); - T('3888553456.187038805', '1.79351971', 1); - T('-0.09665505758418475963567867363097339048321797943170880174', '42.26560746275599', -1); - T('18902797728391145440494082949463571569467603044', '-160840513303121014911814965287069764.329850142', 1); - T('-0.00000000000363783296932', '-229510691003150718410894.798513190', 1); - T('-0.019578513996', '-0.0000068012586581839285561', -1); - T('-0.00000000000000003337257672564450192788237207780262977502390656214', '-576.230537914969490642', 1); - T('0.0002071041857705517964418488527910814283948842252102023', '4965', -1); - T('-762578569061554379901567768164.24708334695367', '-2902150555266343625933468.2', -1); - T('366547461068.82113690', '473567955790856323671.7615303868255685632986068926885', -1); - T('2212.60505074', '54.4399284220426917738', 1); - T('24229481820388119475112679.2869744056638142529094915709331146', '-39663594276.8672343304', 1); - T('204581808810007220059753337566285703.0558403249497', '0.14724245060761654341919', 1); - T('186.26481926730311740748275435747257', '3169339033932711835137078410077027045.6405', -1); - T('147438798802.4222641736117', '-30953.68649', 1); - T('0.0000000000000000036665066712498278880448755082419497041867983779348', '49969977335002848872793397', -1); - T('-15', '-1610335165763678418286838402407661955', 1); - T('2689653843679875122027095562540366.2198041476017623', '1680374149507467199865152885259.7294203852546004613867', 1); - T('-0.11', '-0.00000000000000000043896646420939540095966', -1); - T('2080671699743.511238240714127', '-0.000036842318404340179848907', 1); - T('568000304', '-90592884500253731464906623327632577358591186.946837858889', 1); - T('-0.000000000000002107518141285', '-3224876873708851754101647.818256157564', 1); - T('2265098771', '0.00303612511166914586857128974318819782', 1); - T('-5664007822465.98050400197979616740857', '4318641.351415884425470426852575673963981647030782942', -1); - T('-2548615100934958409898695557521334.971165846219072', '-554798.735556810907', -1); - T('-0.000008820826897431443', '-1685288868236928715034057139645.0670918901230', 1); - T('0.2773641914039966806939077833931526594995617517107827', '-155510002669979906258854608426737730.80732922', 1); - T('0.00000028631297293946002594331990323448420', '12.530358985140', -1); - T('65.74', '0.000000180226526307592', 1); - T('35366830254177.323', '-195533735162357391160682221146179916675364691505329.522594', 1); - T('623190599276699090316221455590041049805679995441489316.522', '6153742899048073987312064712008701512451.12942', 1); - T('0.001389654081957090114281716350682554539119289983031175', '0.0000000000000000004172245036048453978505043356031', 1); - T('-0.000000000000065125596165975329468700878377195017853327025922232', '5010.27', -1); - T('99858764586308080.815938383', '6906.98277', 1); - T('-0.0000002120213841110365850583078206489619527666932442761000523841', '1560226.624828', -1); - T('-0.00000011209616970611', '437120468783339721.8270432960', -1); - T('39633522.28696180408828', '404609951713', -1); - T('0.00000439899975727851857364404628011452819', '-295058799.554060774457769229721869795967861', 1); - T('-0.00000000000000042342244818730713908050671583102154', '549754666663906751820116493890514432554613796763091771', -1); - T('271354103.271534143867908347243952035', '-3.4348029165', 1); - T('-18391137696458176.709403414422273535748', '-135526005724.36', -1); - T('-16789648705436253610328466585451657189', '87790015500203097.67217621', -1); - T('-0.1934527980285924234435139814', '0.000000044283070912014290453388249787033315196663317475885890', -1); - T('175727618.7', '-4712524302.9633361502507795469472010873256880899968244213838', 1); - T('86148708.7', '0.000000000043067763982519792325233598208451198', 1); - T('-1676718.814', '-126027512979.7359979901775996', 1); - T('204654162545474.954541730442039127578542771572577634608702', '1278262396819307952614391540746000135708145121661', -1); - T('20599411052765018472280152629960269.784440835643761573', '382871.68', 1); - T('9.1', '-0.000009868296529724402614472149967657', 1); - T('-51.7', '-0.00004138549340599259177969843213431710067044689658507', -1); - T('-0.00000000065519676351299476540767970', '-159950069281804382298.104882147944419487737768', 1); - T('132937997125408.196564521', '0.0000000000000416671095818013123525013575750', 1); - T('-1313393782.747301', '135189314585073603701567044403904503', -1); - T('0.26345218007386345905841', '-0.0000000000000000131698402541203188119609481297941368650', 1); - T('24462716218.22576508876165308669350154', '-175901840085494768716509058673018943.44105360844073496986', 1); - T('-639051.389850068275663978184079330600736417788030565545', '-233130008509087611163354733950079542005785536290.28', 1); - T('-2.5', '0', -1); - T('-48', '-1.30483838443', -1); - T('-0.0000007957592304983915492296920988493287302223429001', '222281838853.55743543126434998666514248954378468481403010', -1); - T('-256924767625.92102529834889997062393414595239208331582', '-138645955.7309701679', -1); - T('5825.6936168480383901079880', '-15454778381.1635817748532891601', 1); - T('322234158068890727047790331925494003913674775559', '0.0000000000000001440104086097707578083604', 1); - T('-0.0000000000284163905693832757026', '735321.796040692391355698638806984647971670552494930079886', -1); - T('13.51354661049663', '60174586.03966439546', -1); - T('-0.0000000563225262474012816830760397217', '-19259915510222671.51018', 1); - T('58260242951538386451799849576838755846723438641458498.45', '81583418293233481447477355060230.5984042555029388', 1); - T('15676086441613294586793.0600578779086373855887', '553785093898805279609967970.6227004730416155843290795860965', -1); - T('-529215908', '0.000000000000001261696290245850445593226', -1); - T('0.2765770305056755810402655395163548457323921993', '2485048778003226295.0487979661044', -1); - T('3.106357', '-196188865060.96789451729283131151802962', 1); - T('-3812721623392532238628.52058836531583261604602809206126', '0.000000000129949612553432181149516674241', -1); - T('-725747.78308445614294711222169380088709733492626141', '0', -1); - T('0.00005978057030838911749503353205688236750513118711', '-2301374753039922.5', 1); - T('-21135.6', '0.0000000000000677319833766662844296', -1); - T('-18592472738146.165033667092366', '-0.245177658870876212432221320582908107465202878031116163978799', -1); - T('2.0853471559342294701189635489971894524307297590789015254659', '1820710163171110437504131672398834715.796647407', -1); - T('3017.7628349701943687591214', '-2123676032175089021.800850462329', 1); - T('2245516696370652079582811421413778879168242699149', '-0.000026865223', 1); - T('396591381033578245290535623.59522101830916124323912171677', '-399632909396.27251691705488670319', 1); - T('25071395481877740931640606160951694567581843991.91250540', '0.000000129577260075209456379795979548520957596680350786352443111', 1); - T('-10071840824462229810456841986062182478', '-0.000000000000036', -1); - T('-378.382656390921442297', '2995.111135910', -1); - T('-0.0000000000000011003920232607040692705', '0.00000000000000002355157685511431284976273511723771203290674587231328782173', -1); - T('894.8158182999506884919347710660910', '-0.00000000000000000096323615121853367670285903274497581', 1); - T('2319037.233322076813874258', '-32416.903557641', 1); - T('23396460119.155847859729080972376305599746464844501598782869', '-23349855891702694333726330.5788991', 1); - T('90907619612776583630058641475331.6', '834081.31401857878701092663973283388246447251015444', 1); - T('-0.0000000000000000081501364451042879423837094013790187022253', '-0.00000001399490096609828204621353982853023593', 1); - T('-420605.932784654921007625945921605929', '-0.001003986559391891122940439549512675', -1); - T('29941819100256.1010903984648918366033290553065670117884535', '-1399273749558314.35414647141708136502314', 1); - T('9.87428322502844153862497406397966790245714773688', '282378323960341447353633555973.60816609111820', -1); - T('0.000000011571', '56.055239680', -1); - T('57847056020509197.81010326363252948483107773', '-1.4444', 1); - T('-51735520880178.3819992386025068250767281052153771374742233700', '-0.000000000000000001995850558903648471134005565207297729809954251013177868', -1); - T('-252689605402394270719155.41734356951305987480624879', '-14.7', -1); - T('-0.00000000001151229725364301025243181548204622943024492441630358', '26395005645801030069538169698242312.433651971508113804', -1); - T('-0.00000000000091483130556462719', '2', -1); - T('208.9827699741542594700570327748394160582183088044349', '-0.00000000000052759011609237039384483268124939035873403', 1); - T('12412.9657547118', '4', 1); - T('-2', '91580728825224739577263849484410121433204621.500780779690', -1); - T('459526644.772925035397599290137226147632521530511862018', '-0.000000005846169451429981275734796656', 1); - T('671926163021026323133951152902929830282.91041796493', '548498210972677.51442460018844632588617668956139310271612', 1); - T('2422.5875291768881507425406922241585652688246', '19145241007530705409.9615104357443736565548963', -1); - T('-0.00000078875216605898054012159', '-3150.0', 1); - T('6244534680058004259589682789034535443037697', '-25351939981079.604012', 1); - T('-180.203958489450', '39025034688578315815199.297787915576434930764', -1); - T('-1361080637840651575481575485233.15286726682268248409468726', '-0.0000000000000039297884367828635174097881955958806085', -1); - T('180278536333055.7355327506162313565598247413', '0.000000000005454620478830996984164588529474180472398020083723230733100', 1); - T('-12521213.94690', '213.36136', -1); - T('-0.0000000000000076966493627693824010017610386791', '-2.378265167488246191074961795033182605013037407884326', 1); - T('-253.6948', '126006206', -1); - T('144872743608071550764695060958473194286850377609005.9406', '-4115782212.903943924240904289', 1); - T('646425925574255155103804057996228876', '-3385724693259876271747963.2083760845385', 1); - T('3238426111230801661501493996824.60026008769586', '-1.3137106232306', 1); - T('36812968817.09002256', '-377119042652372085.8701028046507452160688891148413096706', 1); - T('-1057646134026674642687725155011813064632921643903628746215', '-61.1976960', -1); - T('5932283884028162.993577517', '-262866296151760083503.5144635', 1); - T('0.000001968962077757014929052005163485510124163782133996', '0.000000000000116476163076562297013796305385624375676724881414944662', 1); - T('-344797534756.045056309614536498476108', '255603.7453533447251497046857105152628367804406158228236933', -1); - T('-3426067344177324630963454.412', '15385507340701842778819629282390396905481417.2267114635', -1); - T('-6482829869.2939768229599', '-316205.7593667305356109359299', -1); - T('0.000000457660742', '-70087953797661233.02541392030217222494340078655370619', 1); - T('-0.000000000000039160675421718532243743411756', '0.469130640793', -1); - T('646.780847826', '-18577555.4140223083526099991256121668882164928438251290074', 1); - T('-0.00000048407641016681417846220', '5.986261', -1); - T('211851273349866038766', '603496683164932314765.83959539999713388808548959930160200', -1); - T('1102.13614611471685523260263', '-10896812', 1); - T('-1204978038923128204724255296214417.103288933531778085701527', '1716208377705472866612373037267.9534333794', -1); - T('7.39', '71028207488403138793.76246511590301180890', -1); - T('4434283.709', '63814910740714880857390949.18170', -1); - T('-19123084314467.20872238837396740488879369139405423586', '0.0004154673731839293052318786962694250849938501580037', -1); - T('12118.39981', '-26215', 1); - T('1425476489753.2', '0', 1); - T('6771847.279065', '-176720813115222.66664', 1); - T('-915883195.783206257390', '-1162517435079017677181093168848300277', 1); - T('940255279112483580064474520160.01836316454', '-21256974.01257889791261612212', 1); - T('95730426094247272.25144832146486095143107940354301', '-46035913246450150341614859268398866836154116011239252918', 1); - T('182340191187346850984880518.92122432870860784218323791323', '-45046691441.5894152', 1); - T('-0.112180892367092832302160275033223995396405949810852290641240', '-5048973.374988', 1); - T('12547796757213733598419046692214', '3054356083556184826827825111923516899788365822904', -1); - T('-5.1917', '4788005123362165402614828953522.322744', -1); - T('-172.673385473127', '7906028923470497913119471880236309806492091000269715326656', -1); - T('39.36478', '-0.00000000000000000111733659477153687132091026586982038613149571288390834', 1); - T('0.00280064326461873471', '-96485541594534.1717745476897400616', 1); - T('-53804410326123080293766343804563197457587.358960227469', '0.6042327037044788643429', -1); - T('0.783179986173131431415315377310009758807865743500314352155718', '-10150718377702833509077223188001629199784735482233', 1); - T('320.1580863905990337350358843421238167150407', '78483581833243910660574051689573904282.53796879219263412', -1); - T('0.00000000000000005913773611490029218785743338181834029896', '-16301992210.353', 1); - T('-13791710467720660651705727', '9004174340.018826831004190863', -1); - T('-0.0000000000000000052146576165363099836000375759397050145530205395264820', '-4744954283790', 1); - T('0.000000000000000068266442751433', '-21855039931', 1); - T('116.841', '756981691.979269', -1); - T('-7473997292613406', '227497901856345041678511010728961877', -1); - T('-83496362887321946609436668599.7903028365237141516', '1024015979814432311137570785885497044404075269867866.737', -1); - T('-23818785789.2912426283539742079882608148628', '-245331580042569', 1); - T('-0.000000002349831704133945491130166154185575859959455463468', '-185375716299893112855976.016352', 1); - T('129364225959.09296952466', '108542305819621.75909260', -1); - T('171091046088.5982271234876', '0', 1); - T('2370407657610305710129669557444595465119919578698971423945.97', '-821.3', 1); - T('-0.0000000000000000066502835859829587521962052035084744192744097555813815', '29.6874646919', -1); - T('-170.82', '-30241959962614761470726121490564851402310663.74902149607', 1); - T('-0.00000000000006469138000554640183555511490', '0.00000000461742314618775', -1); - T('-0.00000022716576662893621400646809659283', '-0.0000000000000000097981111184009991288395382994924970037037274346', -1); - T('-0.000000068298738368', '0.000000000001713927973365901946623917833165', -1); - T('-0.0000000000000148999', '0.000000684685591706506458136016541069868975745133391', -1); - T('81817616220.930513909829790979437990669', '0.0037959556025699242990945655226111160507570806789539', 1); - T('187587490328.76177037442867202450382678451459221314035', '12011852709039268724852416629919418328793710229665', -1); - T('-2454260049688515674651405402228.478820', '-142484538009893665821574115250696', 1); - T('-188143100145.00617383871359559450074903986323218040691', '39179506.59', -1); - T('8613', '-448853115.602892393', 1); - T('324475356028412945643959548259053230909249689263109070219', '0.0000000000001203', 1); - T('-8591717.842088230805549679866443799042204', '451637831192239', -1); - T('-6070762221984493.7954950487', '0.0000008266057502127693017207185', -1); - T('-0.000000000000000000021548786264742140151119863195875002281801', '0.00000000304649397231813005172496843293480', -1); - T('-40.087', '6007129887259380790745', -1); - T('-1366148121206.5632778067071941207265023330623', '80874576.1341452071', -1); - T('-423812196741.21772334603760090003720411', '-8489477404172873113334318736868836015.8927', 1); - T('-18748128368612368', '1033760369950876702413539809148.635494241886415', -1); - T('-6156774.639', '2141734773.98', -1); - T('482197977761340226097523001111567130628.3114748', '2405937830.20828', 1); - T('1.500824259421505', '198242033184.774', -1); - T('53413278633421327710558227', '-257151492007801487684343487000253.407786', 1); - T('-1594411348210457.2057201773399545926098672210220093884228', '-5.810400317391331894', -1); - T('-42.524', '80197685.59875442876939670048', -1); - T('-60014077957342698615530961389', '-13.78', -1); - T('-1387665403.2451221994775416780152578', '-50.1', -1); - T('-0.000000000283761964988232221224443682313729383881', '-2822338883009.068928', 1); - T('-28385595875309619596283558.250520032588078', '147387993300214796016282545977170456859842677532644', -1); - T('34686252767892826', '-7397737915931657409753002235117.507122010962757', 1); - T('665935851.03885464136023', '-4.27966623847647', 1); - T('3106722949248488343.5712879936594346', '5207020105979502838849125845982284.134451754294609', -1); - T('-0.00000000000000000001162533600824036331509919011567723975', '-0.0000000000004073637073187', 1); - T('980601.882104', '-4736241802290.1', 1); - T('-1.264380690744', '-0.0032883798709792788300566265810', -1); - T('51319085247942607.3131099', '83544328154437955698662922791047991992', -1); - T('-192623899359040.3945129', '10926.94113484257132806109226984967945807602047', -1); - T('962893591125264662170537112845916056.381612', '368.90671614695431830669034995', 1); - T('-3007190292.596872064173502838572330294928926267448', '331482510656348', -1); - T('4.619', '12807796.2864949', -1); - T('233052.5454017603326230828962755508957', '-32914.3881917757', 1); - T('0.000000000005544400247160205560916422655780463306', '-117580.4643568059993825255748662006333620879934324449976194902', 1); - T('-0.0000002279846534365632207677600216066596305', '2322126554056.4607607287069', -1); - T('-87331990126', '743.4', -1); - T('137842568133527537817773506836473835596.037638095', '23.4281795386520220571331254754387057268591122176624659', 1); - T('-0.00000000000081272882678106791203475757923134527272965969323326949974', '-0.000000000000040624141216710146487026358979015670993522638121783791573', -1); - T('1971.17747372189', '-0.0000000010768131828513761981866874629018005', 1); - T('-10275311905140309547900985557569021235914044', '13182550904924724360875252856492836233318627808046410', -1); - T('-9096.750964541599607962155', '13028.7', -1); - T('-0.000000000000000000202605861249781459466292197187493310550840999997429021337', '58400.404430535722017', -1); - T('-258981', '-0.00000000000000000146942477886148939377531194', -1); - T('25.9', '0.00000000000000118094876087922', 1); - T('162.19622926933', '-68764070962981173.301', 1); - T('87010429441884304752446680474543109139856949178.585391743815', '-33889485558163904190.04059458582735001225610494', 1); - T('-3588694.63698027859953463343148736989', '0.20617368370080438', -1); - T('252827102036303.9936197231087853010909954787', '-13509465854837088717675412627', 1); - T('-6887075662100868367.99298907317434', '1438247217765576380817821853526995547277570394769356704993', -1); - T('-2614836293019955922452927776550298690576039936033493782765', '0.00000000000000052031132538502067428026543', -1); - T('-12663020159532609144497566.74', '-42113540319.2', -1); - T('-1080616543853692231052255789606862766.2316765544745171', '622138464929033724077.5684575767378639873400300078414586', -1); - T('91651523225544121200570967593879', '-278740040380.50511089730555', 1); - T('-8.77451376', '21181531848.7359185246892781251068262178642', -1); - T('-0.00000000107896277359728052', '-0.00000000559014447680213165225303053399586003', 1); - T('-0.0000000000000031412406939689928816768809909569850137504174813806298', '267542612', -1); - T('-0.000294657579', '-26086393286300.330271', 1); - T('-271.74195581137236680782195613069', '952766.7883292538644370363183485', -1); - T('-900.09939007562756381827', '-9918431930401851036841237625432853804072200032740725352258', 1); - T('-0.000000000000030671845618853580', '32357.482434378971190374026634088', -1); - T('-139410983097962987.71179096685291702409075212713', '13047.63499478071424425', -1); - T('-62537522199.9961', '-0.00000000004918255915', -1); - T('-58114807161.758057205498543979965130', '-3584702124152.236114809148315', 1); - T('-5632737338122610476176492162', '824643338386766980921.71811030291008509477931405498', -1); - T('-0.01112514633044857786937097571424050679247016367295', '0.386883742497074382567205105882739261935576163102168809328', -1); - T('-775467985328533.575386347563813', '-2875270027971383845747422189517733489695440299684.26529970', 1); - T('-9206.12', '24465276.6921610401', -1); - T('1054.43', '-0.00000000020318289531837407268676153244871958794890914093632739765787', 1); - T('7300988032552205.76041147839581218453548563753012', '-0.007634', 1); - T('-0.000000734659730075211305671182182069971692776321779245044', '-17392730340424661359.57036985935157689014069028076050', 1); - T('3000.6213158910384652830168161716968199806', '196899.54954822827787', -1); - T('-28853.3', '108559143247879763569410860170094.00407203', -1); - T('-10952790675891711060669', '0.0000000000638895380906681108955511361930418302376174544368019503900677', -1); - T('-7687531139650175', '0.004755312112866962666181173910352323', -1); - T('7565776384737032915661040051027778572949', '-160701353.9737519084310852349548363386945597974151833', 1); - T('-11.7', '822380840969.7330218', -1); - T('245133982.2709135080741155484684942868990', '-593165059759410987863660881778696387234.47816', 1); - T('628.75774650481071', '0.0461101478872120341063967140839333563803204295885288367372735', 1); - T('0.0000000063833770468977856889029286', '-3446116885099565994798245412234997574310.71146429262', 1); - T('-2182184538507532.123419582161659811958985', '-16.178', -1); - T('-19295.5', '-111077.6', 1); - T('-1388412775496356558574776724142668543270374', '0.000000000186737893798664765627225688620011182705421230108657158838', -1); - T('-0.000000000000000000173967868179648', '18152994682673.375193707089884990', -1); - T('0.0000863560035782461361163890887831825663', '-1610362290.97396641996627173340421008496869', 1); - T('-11.483483415298114396405743398201182328386755342848', '1655.482227981052539355004148643429722825', -1); - T('6566771449.687708654', '266171391084042797.33757142850317159949', -1); - T('122068558041101739958985067462542912538', '0.000000000000000000268384176192613299035', 1); - T('-4556.5265780925613192416', '4408701630592873935323494393972993090123128329706084', -1); - T('3515021.1', '81864516617484548687.671', -1); - T('-178949.59390232991893024115', '155518413686675002287489205632826353865420.12725', -1); - T('-180770193582924974272749992870971104340648972754', '-1928.19874477272271032797979599489260880606368041405343', -1); - T('625944002374826741962891505936997879124112785.78254', '2.2', 1); - T('-74000022874026102397', '-124816237747723579623236426033.3292987585226390794593838', 1); - T('-7131583.112143898464453392111748674238953953819160850767017', '84543374363987655628953718.746396432167424125377', -1); - T('57930668326368128477331750490208537947030161601033587.572', '5.500178739041619245327', 1); - T('-1.017', '138555579979990641891100613226981', -1); - T('-143314297738305919766.85676159714631636157649174975230082', '29162684.00496065795882', -1); - T('-0.0000000000002178299609737745152878826159216416', '508720821875640011430584245157711563400384026461605542067644', -1); - T('0.0000000037127521912905404', '-7112417145444577.80607898479236664', 1); - T('1.4535281', '-2755278119711443416368353764068870008385673657351.287327', 1); - T('811983.91569425', '-2547.2614436343839512598907421054076705190588578245014517269', 1); - T('-0.000000066783814084373165177389', '153634640417158153571843303.3824378304880', -1); - T('5559062891501876147096510441935756175635', '842776596383.34976492066280841493046933', 1); - T('-4251086773215699216620141628146909108378011971022709', '-1.07986603344764046828530', -1); - T('-2.38', '19960804157.01707538429700', -1); - T('140859852236163731572799808333907582182', '-483673686696369232470123.2999332082319758158129919566', 1); - T('0.000000000000000000029622654937176905639567324602041176', '6.8015236772403026405177389845218159042412678456034', -1); - T('25606.7', '1212600404583', -1); - T('2.426990264', '-505156.72', 1); - T('-3323.26420573', '-0.000021970500979289375257', -1); - T('-255663089355037.16392040629597512015094', '-0.41027975468456748910575155470378618816162355136333', -1); - T('566035648379804767146020274970786348003404586796', '-2605006926602834802308635359877490813262595', 1); - T('-0.0000000289094988182444091497941385745066427', '1.9399', -1); - T('3409063904163491.67712627300938046053186814787275', '-788683478416.8521908', 1); - T('-552.503', '-2.65992687121', -1); - T('0.0000000000000682450781086750734123964535', '3340023490622963858.05775701', -1); - T('-28.423300541592258577722518374987247', '0.00000000018350659919154', -1); - T('-0.0000000000338682164343183039173515869325510437060743440', '1815582615544197484260137.3218056141775424580', -1); - T('3', '84909.6', -1); - T('912649891343940306774308274', '735.6', 1); - T('-26734270259188991826781396067266586047', '185532822.950201471152934184838760', -1); - T('368826381.7105579623244756846366147277999', '5.5', 1); - T('-22848732.37376986942615233017284932480', '-0.00000000000000000001612001293726629147004663156694479784423162610622655555766', -1); - T('2778176016640.434269090024108', '1048566837961106', -1); - T('-0.00000000005687373876856047135405145423769679122686973713754', '0', -1); - T('-22919522347.89673645577646706445', '2', -1); - T('333548957780868457725754851263954857512', '0.0000000002186930669230787434579292', 1); - T('-4020857112014642672533241638057425567305408226516383316', '-610648130878189409.30664242328454522474430938', -1); - T('-575928405847231664243702964453172201881707803819077958636', '17476059949547258392.9269270331051429', -1); - T('-0.00000000000000236', '0.00000000795', -1); - T('2', '8398410026740057242211865329491307671', -1); - T('705216162396.944649', '1147259473068686282007211288799376369558792447024.1997172818', -1); - T('-0.0000000000000192467050834', '6', -1); - T('-949763984221042841274951349558.10112261647', '3', -1); - T('0.00000000000000002489067290965425526486154888600759799385750417414529209', '0.0000000000823737490521166731893020565223077334833777', -1); - T('-0.00000038', '-2632134659727565258235592973628916007.949', 1); - T('-69592.16495307008', '-463465967056256671637919962390996488321070177494218933.43', 1); - T('-6387758166555649.89131479869', '1002182649863740744720129461114521861386424106.91208215022267', -1); - T('431.5946803602483', '0.000000000000000000816082696768067476521004613496804107266986784152470313', 1); - T('-23812703844655313104347040675308650219032315064', '-71724306.2930848005664925', -1); - T('-0.005366575257566691274487675050792258604517208', '-50270812932100741999189180430.012678', 1); - T('-0.0000000000000000078075590970858480352604836633054432965570', '-27324956076689844461004586831.04188455331803393389628', 1); - T('-24102905908901166081092826266887612015', '-459655866683957.36420', -1); - T('18620863003604271884104610', '0.00000029683459505576831', 1); - T('2.21', '11.74', -1); - T('0.000004553511760142', '-0.0000000000000010330082103', 1); - T('-13676169.2900328430847', '-659552074603595567395834543801367207404186168504233', 1); - T('0.0000000000000001438969718407410316532098007489935388', '0.00000000081225083195136102279920779602035', -1); - T('51597', '-3688953.37331140657540657', 1); - T('5.0', '0.00000000000000000044951103341270485292979388', 1); - T('61725.97', '-318781217745116634885912525386954947113588.846293794020809', 1); - T('-504283888.0252594786037412363612838038962476794771680754', '-1144808847766934618876.2356421', 1); - T('9701728689144729082229.639579', '-0.000000049089013163887977', 1); - T('1734710425425226243190199621025858405083851', '-2022478.07568145447065678665660363516370892531', 1); - T('-0.0203968042130858225550603184916550906', '3561783820164476692531301519095829484664197181.88', -1); - T('57745178282004030498957972.6440468982032662924085898763', '0.0000000000000000005401742140193599', 1); - T('-189888759.413694676', '962721078656113954807517895483569422587.81272690880505144016', -1); - T('0', '1089893620428779572280086', -1); - T('0.00000000000000005263900289846965180622155474', '4964254.08251899455', -1); - T('-2429863004900274258713082377.2', '-5', -1); - T('223562834248418274852', '-454450351567026707172759587', 1); - T('-151149364443914860721418508987736982714845.09', '-32162477518638198637106030', -1); - T('-479815101913558893748354066945159343011138914699444', '-8388616248281.177', -1); - T('-896582450010216483769437258211841611193596983', '2151162154931974.5324307514844193735671829753537', -1); - T('-4049.4959556373785645366161076408324898239699112274', '0.013169159788356096', -1); - T('-0.0000000000000000000316327403661051020290330503045336299615133', '-11700.08420553103941618418917556638908321476907300', 1); - T('-91734721044809355559.14146', '12', -1); - T('3', '-291.2', 1); - T('0.000000000208876005726', '1109144943822082911633590', -1); - T('9144991639852325623127064299724.1037', '9195201.269557786877068732018', 1); - T('78715642607677481.98025', '6700913191777637296013511988358756280.5878553149112009', -1); - T('-42024992208847626581242632149881286185298896514143767366037', '2463231358853.71880752761233', -1); - T('1424455191304023789401770179431438298242.5956172095628134529', '-84101775306.4342739228941346432384510922338362929028798837', 1); - T('-2', '8298028707904306800597805656615422.563428', -1); - T('0', '0.0000000000000000061793103234817538282147379532723959171618', -1); - T('-5487921270.538719897462383104213699510', '-1', -1); - T('268682329996669747137239620985539555535419363', '62924806289369.19580487653689872403580775', 1); - T('-0.000387355252629095867081739966073411968600277129031410', '-20830255873882034860249701068781380943483', 1); - T('-1629370894763750572049675488248', '991789483832341479415077040669482846.446', -1); - T('490412212844.567042', '1193114358067372516507866.7675019818106066492829', -1); - T('955981.687631958504371296000429391844', '0.0000000000000000001766202113828052550367604264198057743528417306', 1); - T('6431932.913640551', '-126629077818549423618884827799639161238817.7318896474195', 1); - T('173236', '3919.931871161121317101046368865876703331', 1); - T('-1128657348139042005269644515367191', '7320475389227053819151783370434503694134148', -1); - T('-0.000001531508743186704496242168865663427', '-41287316832998.086030726461470592703928425646406884861688', 1); - T('9833276470.19', '-1340313090673.9396406089183', 1); - T('-0.000000000000071266085262734127620', '-42269405460346073.44093606359227914216172743976226345709', 1); - T('19273064566.607617709592384430851504568825219', '-0.0004352973090210742250757', 1); - T('-0.005788', '699340993798990426136300929857470.932190', -1); - T('-88.750431269011', '-185105834798384460867482551385762166627884659.971162492245', 1); - T('0.000000000338337748871769299443110098647543052118', '1793651380297444523883109428377964622519697401107621959', -1); - T('-0.000004410675006466359214215854792979430946366025336494150', '212402325929778260730054.72532540928129434351789341863557', -1); - T('0.000000000000000001072224833476632886638952280133590418', '-65485.0633', 1); - T('12502158597739959186.705468775503441', '16.66597304878086673769469360979630746', 1); - T('0.000000000000000009677703', '0.0021843733224756870769', -1); - T('-0.0000000000000041999607963521154604945381536827703934336876453', '93664.27886678243967349370590141313752374055497859', -1); - T('-0.0000000000000000234261821391240556018', '-315.990655680030512945994935758', 1); - T('3195453260014685333492830082716203563522.36872', '0.00009325368310030723757358157836689348934835351190017', 1); - T('-33244315391121.22780712', '-1311031062177.74054460725962379', -1); - T('-1707161.9454', '-12005804839001.54244657079130670097736', 1); - T('68352491818706598.773651301473666770317477098618521912', '-0.0021074281045472626934633424986655940198794278022', 1); - T('26.463440708', '-0.000000000000000000161495480948179406780882857906312583977592728907', 1); - T('0.000743978231293810720', '-163654150785', 1); - T('-10.1', '84118013336354653851057751102778.5255011398946', -1); - T('160481384203.203261436811734467630350', '-0.00000112857893416261', 1); - T('-3309055960935586978293.0524313', '21483182429538345732977842.5731059392', -1); - T('-43958548371515045.020150030047077069164032471', '-69176275532496.255925921038380207105737351', -1); - T('-0.04981670073679086136919289630392557877963', '-398950332875156202401821158696058677232947687447245.417278963', 1); - T('0', '-435528753375555685177004', 1); - T('0.0000032297790227357092301516546825411526485804661', '-723817273826.900', 1); - T('-2702619562405304', '0.000021620337383638552928', -1); - T('-0.000000000454', '1', -1); - T('-3144143431608222864766150912095006063169199318202', '58.53291045364400226122849818452051713592021060811', -1); - T('1115', '17.357031896358227163528', 1); - T('626983028701766087311204001', '-2615488710736467295.69042919296588', 1); - T('40365698821085373.12608667821372228818', '-49815765062.89597274348089400519601', 1); - T('0.00022', '-3607024557794704402629081642923', 1); - T('1364091171276057.97761244863798921737454557501095284', '0.000000000000000177865197456638064216228393652693903199280', 1); - T('-2753914199438393', '1.968442310668164769128495107357994123999170779', -1); - T('-775719502.7731', '-0.0000000000000000048612190810399950650839071400159174695292975458830', -1); - T('-16116938624203335.4', '-0.000000000000000006412977', -1); - T('272612865514273474320712548718.9402594608941366', '-0.0015869340307275449870331257080282841124099817091326', 1); - T('606324260201754.1434994221817869056714199', '28395472736102159748126258009090', -1); - T('-425.804232', '-180233.62994', 1); - T('-0.0000000000000001323505962', '-4818224435323036527507513', 1); - T('-0.00000000004875768812254650206225254505968862675405582488', '-0.00000000000250181', -1); - T('0', '589543599579236108105278188597394.7', -1); - T('6194660387650555532806365.67785490665673624067515', '-5562299925991551211.449094280', 1); - T('21071748634936165958428873502220200671957884564', '-21877247994257440926313.112083', 1); - T('29.6', '-1284653117475257.81055939276439345', 1); - T('-0.000001070241', '9392743602622997628985533350323669657', -1); - T('-770440255222043537495200.6997075447934779176467373', '0.00000000000000002163072792311046458436044183497750', -1); - T('72924117389.35377926', '29103179425746323066349616562734447341721864', -1); - T('-44.7154563464707697425999713876377', '6316419259432079567188243897453099488.27986', -1); - T('231.36754477031773', '10395139401326885805822908081481', -1); - T('-0.00000118333338184521046036822', '-320975156502906817', 1); - T('-168714.6721140026', '30811271631788712886661929275491543882895', -1); - T('658.039394580451534505618643867554797997792535540581487878067', '13102965065445154782', -1); - T('-1765398404359286937871993026008756479663.1249', '-1893.842801467346249656722764607268566624', -1); - T('-271426086204740642209831748805289909458935193844', '0.0000002849584520073597479884182004863626528356168604', -1); - T('-1377816279284.24202090550539206', '-4482020235202103266487160771495221696.9569187528465', 1); - T('-5.153338782077', '111841437759.8516773', -1); - T('1935875317534881538626219754702496578459939396459924407.445', '-2.69502254630160152110', 1); - T('170729241284179053792255', '-4451787575715904462656351072032905153914666075264.15', 1); - T('1889745529039666589.126273', '60497049.8677', 1); - T('-5033600800189.350388143929701198516318', '0.0000000000000000000560155992523696741221395', -1); - T('10.5406982381', '0.000000000000000021', 1); - T('-632940973989610.559', '1453966800.2947369036854268970989152864530', -1); - T('6001088411976.9726351889534473754', '-1', 1); - T('-0.0147896392703218629529334742030182', '446.69797286906823912856467855870955584367815853', -1); - T('3.83283725770115471046394373426687880', '-0.000000048688749586070845947492557870516966863282338273', 1); - T('311.472046824904240126119060726132453603437309216724993936', '141057050127502107523.987453975865', -1); - T('8207155.53', '0.0000000000000000542558038634643663795', 1); - T('-52.153', '4992402747992764459141957946.173249', -1); - T('0.00000000000037087971513311066134109646107', '0.00000000000000011416409371', 1); - T('-1.53294577434854835684', '116405244945444933601158446.489942', -1); - T('-148112201957000169.55322721393', '-21184576168032173628662.173748989258024885915978002126587635', 1); - T('142.834', '-183660432602724204651884604531246', 1); - T('8893.1', '22902411.442310886381060', -1); - T('-0.000000000000000000049301490', '-4268821956373353475835160', 1); - T('-35267430686890946642526643.40527', '9442.78', -1); - T('-388257.7548252', '-22789237273726383', 1); - T('-0.00000000001035915929141861402608660878800813727', '-13364427.71449240284234717270638783796', 1); - T('-657250878405514264850.36740512444031797888135499', '-194007658128943.2702175990', -1); - T('40622.00027155142785667332283724715562664685', '0.00000001135895', 1); - T('761530675604.544', '495276273239198618829474956470.233178493', -1); - T('0.00000000000000012', '73036710782920745627417158215393112044826285848.66', -1); - T('-2759374668072424884167545392056988395284630542193729', '0.000000000000000068039371483156100726644177048338315397952004369910331937248', -1); - T('15.9120', '450286871.1411907943653435378050516223461628482', -1); - T('-463242.889', '732474228336471210605174200838.347164418188057', -1); - T('-37054664518639837.961401170232480179055753', '-0.213597333719034786247662894812723740483671041535079', -1); - T('0.00000000000000000001373037051536737485136263054', '0.000000000000214231995904201121132614658821157329422560178904553441143', -1); - T('50637443782578.4742028134098808129659944726779514644', '-23026666.00721461124457795917', 1); - T('-6.49', '2475361689.75199634250718942163511668171643880656258831085', -1); - T('-1002990.83923290495185295078283', '-88091991857.058', 1); - - T('47343984238976282156612318707707241507', '7014.1380688580943680749895193484951393023851901068954289', 1); - T('-0.0684650131341203263401401552553627094627677222266117828967840329153916004', '75230922521264678531581542609391910658509316112860752792749246167142277738299159084963011895369670394282283243922357698845', -1); - T('-295862313165400124619550237.656069', '-0.05242949757418000580437043689552606133616192399732961267572280016078297875290996591091471487276864075033912589320229097078489273', -1); - T('-0.0000000002314229728313932834817367208574480091285711473641947850686', '0.000001669738346220713984568468088', -1); - T('279047626684188128091435590947041377415469191572169057666439886858786324321493442931662682903818854501531', '1014941974886877047600692.608173634828307821277211443446841120485731400366934581079981241944892978588711090656843039207957131', 1); - T('48308709872782035593925640996821550.5973961768548380479859429302524753667536555613596780627951424760211059088558463346485', '-0.00000078577667662550261964917332375091682757798693072266793892607597426884314985327535125926665884881508153537106316323804', 1); - T('-40215116723353583608457914214243065135175415923039250335730569657501143689052902444197762903775444.171803001', '-0.000747392053570593271109057105058728438851585178963059266112875660536041822237424884', -1); - T('2819145676011742129640869014892511895199224936983927037212297.32661697202141330300178285210', '-0.000075196819438137495966275363285091739887328834587350620047101366951164331460643462218485807470864914189909573221028130571976946299969026068777239788983', 1); - T('0.0000000000000000010446946709023771', '14509.94652999103448344', -1); - T('-169686607281341840589884752740664499041142720600502268735857463345287043', '9240364668978345118.8252917399138216489359074021558811', -1); - T('-0.00648413653267434764253188982546409464526518238337229133733999', '2948.7980089962735491284253586450260337878935566878447899493407398914786100293772145150075', -1); - T('1001973818132969045188552394268298635939543267204272678642391489560726393924', '-2059855354.02655908060090748170485280847537851682099516287881930015016266786206643', 1); - T('3328359199438677474383438883220437819298385482514329045164155052810372940115672255269', '-17822566.777845868041139594', 1); - T('-6542320880710197522834989015966.376007802981186176649420394764512', '-46908061275717031191255178167927.915776432317777604650368349154202614657273310196199200481525517060796473584147643855326183999949752634506182391510540', 1); - T('604836.583993358823509315213191546460434278961276333727065449874496855101461036551875374733492090745310221170534047576583343077626', '-4618.54322501862329794473469782199104028963878464891188614915521', 1); - T('-2986655693343577190483562333.92412719013779269947465010977392088784157099123429955850534813434978228194474081909354332', '-103384861271501400520575481696310128926061538534263361845524022957997389715640479561046089692194108884343449310.3422536845368577965862523217', 1); - T('765724.8058196984567185549755236387342642542128601094827801684110', '-2871511540480306286230716009167755118386587513101483870025917810.88436946780861454715514628104283462503253', 1); - T('24448714061097007787870390934284762281809018607186508400198524858281434628378799796164614395462', '136860921422568786599033843935978450.6', 1); - T('31976050073630733902118874888120198698694428091108060659949876943761489391517922167985154033832205584536458188056791991838367292725618452216501378', '-0.000000000000008724016496', 1); - T('227751527822451319233980036203061200794979589033503610838256022189246563024105758517686476756678884039664356839803154355514768438.25760233796425193', '12930579982912105586374957109272.9584159836524371', 1); - T('1514317730700056941559141895152952074535483501882733867310806012120694202376730571677339176140545799', '-1160800067156081508973855089834407714656861906.51850431230507', 1); - T('-0.000000000000000004528520707580758615957670805419571717242606879228', '3281046363579593520467268296573492611708885559390440995276756319312503600477686071166829762632', -1); - T('-15142766.9262153859827204', '0.0000266963695358775794073681141921441505602549064236507947', -1); - T('-1170502802005482729655202039369546711769196.3826548809416965101170', '-2.7922318280801312629836579611849652427387594471800', -1); - T('915561706486714241282431129.3095438633737782096437500430272652', '0.00000002743295589722432883027847254714940643024630751707638612336', 1); - T('281768416547033993113190996753004903757335724486313955505402513939651088167932178912956960256084911825899718067523864582.316462439983238790646058945', '-149073711831044726451905735929139231365157160963186101095501511510907692030494797397977970495144468856267403314717745696.2972152852646707723456012113066', 1); - T('-0.0000000000019747673020255994583864712477644533161788381792300799696139839', '-31965855724497611653259696447953582263.2864030194503056', 1); - T('-1174060959246006.755952234360360526196000440620268', '10622998243184628451912141.109071876810564703814335906300181', -1); - T('0.000000000033846382113152238688078094044310425164545900148933', '-1111767780033233092141350626922156977507571423642452179209671272723.16734621884468521854782887743133173', 1); - T('-165250590789141636082920277183.08120431640165768', '20582.14148', -1); - T('-468339329.835642768092', '738514159142.27', -1); - T('-0.000088399519151094279453456909123490568956224146530747517787318847682582696828096135575460415155822773423264653037725174685656', '50694235979171725.10284160699574514405961006184943457644973589154', -1); - T('43870463394510215993877357948126367526973038358203', '-9722007431984300534876108771208960300602249500573036985', 1); - T('472964469449264925748432818777986783251555850837785.155421757016608709428994296960752', '-9311662.297602125194', 1); - T('149990356612051183091016.9779087859113196930497144865038810481689032713686587351635927000452', '0.00000058376621752446454994221296235106373116337068588954258416259841704699029370833659808532069056542382277544874169614425448766346261208', 1); - T('-0.0004607678264613885284392068473867065453534101118751415631835372760188817535650199460853741749428132718940014704174405734985617847478329957027082025', '70752058498943698615424955949868075492906532507.0176757020599642777622407991179893486322582944963580901150580300804716044265973436522', -1); - T('76888778535419856741284623506934651449268144461453.4100936081838029065930113909', '-0.00000000000000012226026014905656393255160074154788749706679568415031254318647732324163664724545113944076277226550929098290192398236321899151452', 1); - T('3203156318209811351127849964590315886954164800424606142343745.1683686381578999431682489662239045', '-8269184657749537294840577216855405317480047874381981', 1); - T('20111727365475687172481528350050313287788545571058937993235075289638298425.086714092681300133339985321', '-1.09', 1); - T('8792.394469303535648526', '556845927626235935416153911457755895037951239.9178326008028011116088523904503228', -1); - T('48136562376.5855982', '-4664620002491508667225096233.3353226241084544027216354820339730176405177528341220528660597322792739250720990838180005107732410742208527592663761347', 1); - T('89763855544387950417149466000861904435721204626431782465991561650.90098406420', '-0.00000009765299607531302464539006851217800595264295701520065262877011318715659812090110386884067798529550037236942', 1); - T('-30868393537038718005', '-0.00000307', -1); - T('-5185223470716576655809195163610321.9031646', '-2615549017350666281371362184052090206474489835519628225335567276034298501607305275085823412253', 1); - T('-6570190451631686560241.38001587541890402432848708439444609643933707639935590896259', '324626622468660389631964181439480620661269389440074118784879141638091676591242082.35149172529026676393528466386409586', -1); - T('102286341466180974423299.520959571961131384673275163806585575115835', '2745527309114708070695269441663991101771080484480716171439709632411018440.9471846829949932144642406654855468308', -1); - T('-0.00000000003977653756347008076395413408629675698295885109193277602695303170782568202351152991936286417399933347874102607', '597355470921919715241658157756484780639935506634657853524178238394469802448173406793521622383466470180001778292727.40733108770130813735753', -1); - T('197887959303.601932', '0.000000000000000000103458894529722050736055678304440744297638258502459562179105262236341233794829198584326110727749506382519131830616987451966701', 1); - T('-13307726476516464006118797585863798440642787931380742817511702537361080004023468421495571836042024747.479074717', '0.0000000376335065425310597483666155345223642007352033783310467188460822186122860392955355838387349761629994780', -1); - T('-936013007953467845983397438772135456939667638978675074252173994774974753052079960592.47977338457210574236644512980713', '13576615292952511187779127518363704883999332503672973.3702971759282614976225115585', -1); - T('9.23', '-12798427797276', 1); - T('0.000167142048', '49719109889269472002178986135088991291890225419981596673500350553633201288202635.772926153589574093304933356854028686159563673920076130779451', -1); - T('-41507234.121353293309393741599055024405018684', '-615662226549782365482025752065081146308129562731747780117504154.7257', 1); - T('0.000000000341762255281442429237209572068507698445580331776282387508674913040101434213455495104', '-41949136443982932485075657535585958912363078315441820291608', 1); - T('-265613151330300009209671564.4222473758380149118266958', '877381701435580606449.2823863360946489509927889990897436462984330011', -1); - T('-7775.7801922935180522039801358877017608615817227', '-245677467624819356918999869496669189293253534311463142326275828.8385050566807262539312986315538671411353195745005372884107987569771605', 1); - T('-56671611310047491548245067647344781122049835409812386627.47184833607976624521197067809553483420845430755397', '927756335187625067734782189305518713116277817764247.57605072238432753688349923151908068643686860012798840863564716094325436269552536311256667911776199', -1); - T('740145597581078317830455002008118144162252296932312159216520649062910882', '203.1774262154445', 1); - T('0', '0.0000000000000000009031734111110941301911861337773289644877967835', -1); - T('-109614283766506080410697376197915899265557750362042034638637253839764519329034984', '0.0002771704787349519193621964400949845983482306593453116923699372132126053949806228372333859881841496151153670277673003333721', -1); - T('5539849710.1733866507907276', '-3181810546381672360262045367009456644564406098.706843157492761', 1); - T('7919.8414971201383271371184303738534957144878404477288669', '23.71850', 1); - T('-75173119692055.941978185535165359347403243', '-1777369117489847081.5793755856264212166727373899851099330121210857826856', 1); - T('853843518069945548394273175137114345101444889.9227331700075815923961371745037613601267987181194', '-128714814686121222464195889406689437357524546230.015234400775', 1); - T('-12254994213398422679769049305686.002801989668924092053922987716790500288719964943524816679018713', '-103.138354211842234506715721756147981015254031181706983900640592115628103240710219474933960256729509150933435108751279275932464534793849351884639432456', -1); - T('-59175298043142026219772.6138367', '0.000000000000000000070447947045776431902102876458194', -1); - T('18408853293470113069702150408569784461075475098255264356830984000273938318454913474968562276768901135468209464837', '1547252236967174250.6109363062455217002510723246', 1); - T('0.000109934251781192379417653296979431190196397725358849059626366415903680138562279946229803244271813742725286468939793394672457421', '201592.88634560', -1); - T('4295549848243131726044253553835945417165130579767473284081170673527181.25870512635225264560732576630', '102151540455604787176154202447753962845.44365218', 1); - T('-70018315186783814804204234064836070201850.45111825112808417052739', '328359595989649160.27671859944', -1); - T('-187481575498617809778922382731003340929808335610196169', '191210658629716423428208663327712.22840812936979919141196164775880201034911336765', -1); - T('3935126925246231555928598126054809026090453369989273776664805163851.40944096517984980', '867141118109779658944.2878631198762910032', 1); - T('-3.3112', '70293088157175047259886071558256457067098.48990741414498249210048163949091759610703775633271629309548', -1); - T('-425672404160144333420994274930650792419390010238350069166384976005003337185319653781910705867425126832871403392819177542518702296572117055960061', '839737903411111958962035888468571596712972008129364688.4039', -1); - T('-1112579726844536917102467847.17653', '2663046929443819301686222.8815254170857930', -1); - T('-8252839102489352083135451792859801342710108.002349758', '0.00000000000000000754813631507054088229552535842607509562669628676682863560861982957068071893164866381925307374227108742169408306216812315857923', -1); - T('648977871365662014097820749365461557763157639862997561.9226938534796467778911346445390320354152128870864719689734', '4175599249314851119719173611802268614966549291562107396112171800916368481888650992052892917907331', -1); - T('7.978771111691608901034895922046997520765316732991829020429708671577870', '-141461002304237680013302819529217200685047249677913497940481241136261081366014448461680075.314895392687287547792476133', 1); - T('7645457264770121264.11519238056423560881225944703024802644929136702643335901338244883352676085052049326756123902513', '12248781443620567711948542737349180298557346901690131050556844819693354875119397097.3069688913965372036867997744', -1); - T('-31463526490509734316426714529666961013007041330904474383539907327397930.69855820', '0.000000000000001084414212469851737741900907708478145214018350492547421106994594378', -1); - T('162421846200240075972.621793667847764426048313662775180616649900013446891164416772769820233651942815777530072677881008330637209917194592673406865011676', '1636.3384899943980', 1); - T('-9388.77817056401956890804476948', '46543968580057.279028606835157899512662680123283044326771', -1); - T('0.000000000000000143303812564681790621876402521018890314183355148990', '-7628794548804927.34', 1); - T('-1542550905995342000761716058753926543294062017039230714986137143389838208183333', '-53800959573.4262787634955806006145772222341066088520813', -1); - T('0.000000000000001152730387533585619339997779185607646939273677780916', '81948301807320885956271993225479133739996835479108177281833065098631486001558755667729745414069819258092', -1); - T('0.0000000000000001788799320895331948748150602283438995686077438726117754118635774342676674835559', '0.000000077520063644569438264401511693512958609441535842475827179071085391862921498640290404605863569208836853054800018312203', -1); - T('2562546890284566201144784661620724384611158674150768124964079346239943289319722480037060276111920.222136554767961523266727357926098927614671062311740560', '138605604122306326.2813293437333129599840', 1); - T('0.000000116108838430759441302782521474416259839111834957042904031702308600565811558707520', '-32773081443699450674814232178208000165745.1531323897041933349725844322275', 1); - T('0.00000016962435025541763496758773163192785686185', '-489746511467818443870465628849334514883582042615007726260255295320662714496913671884730698683.29565342494', 1); - T('2595681723.354258055254516439280643724110163289153337969294375601861106415452385', '-115227875945154401241354604360157180225326718208937244144045426579478908666999062245014983584623561102791559344419.3439990067153', 1); - T('13988.2256045374464162730896958695884374', '888586900556332788670112482.37398292826916221274855412326388860996499123880558724209443328949082009286758571156655913796044564457627209', -1); - T('-0.0000000000000470209539970879477', '-864491095896332104056.032991', 1); - T('17234844171529654006262682431556684956259672.501251903404554782171218613148856041151461738989660504903649745731468011585476495243619320849285372', '77.057212', 1); - T('132143152930296638008029506374047631241235811666497989329', '-1574290622065771830275216174898081456821450631640123172766526472178.36621512168173889629852301981351392061034796955081897041667393', 1); - T('0', '-1316574314525845529636399894653083761113210297566939806282601610613495358962733006.0', 1); - T('-109413572345091592273384912644432788116678901530150032030387206946515405272708194880210199360', '0.0000000000000000001151002167821514439222568523527362216245718047502081296141262348073695099576990022126977579292159436086696206194791236098302610981584', -1); - T('1710704295541545612797844331135458249843431195009010270413420412760951540267443630154282121567740496794165882981618621038738605039191086840775989345074', '218797555950100963168190026470661147747154206564462260', 1); - T('-0.01986463638088003519038677632588937621107015695', '-1028.291246864751944153983531204139834559', 1); - T('-6129329794341331550700126780841411.10681976024490695157405556642104977194512590697213', '-102763039780830034728404554703096.812100908361472984162806', -1); - T('-226.626', '0.00000000000000000023420336780091', -1); - T('-0.000000010129241772248087133563483455888815190018826890577292551683993175479005119579601450564910', '-1790565914576279812291386964788431643050956024856703305009441744724322410099442946374063091238355862765866', 1); - T('0.0068398345678559403526205622981764242038537974473365', '-0.000000000001407581522035574500483500', 1); - T('13412104116279855792666084150933562672654470809264824', '-42.260038186873416278616781586145', 1); - T('0.00000000000000001437216', '21380203762019351547345259799258194003013715652251954478030855132881874773077307627834740214867166409662357639227437420816938973889', -1); - T('0.35484739402549358280548938093488455603603260', '114404993135858248063275522978544019274645376783367486741696148.0603461877153775553115699756', -1); - T('-1392486513299304175902425517444632375062450839823901184672697507427515176395766963801250797985239359712769304501547503238', '3454044166627774642387359622402929225788813383864157201212.2114062265086063540445467889326266', -1); - T('0.0000000004235328175528436975135029779349501289306568759092284453523973254966515714043412430621851', '395056597915705386266389285222273.34', -1); - T('-204238872345600290518420', '-7070509208.5', -1); - T('72981605063519176291637366098161261831841026794183175316952260221206391640795191543.8421968648832009685372935897352204397516972141864015416063525745', '-36262462150667.754518420039671271875550396516537776640666003', 1); - T('-1141023.82684352', '3434872367397371325216431040190149263337567687305458524226443036', -1); - T('-40333484548205874986507170870398476011.93898153865902627865880451768925350561994301059418337827757770353', '0.00000000000000049632092624546818538381130693253691731101933347881923687', -1); - T('-230663466750273009979493177203432440.865302323651699785239168668412433309395152855727', '1670998446668363695655787373943065972222.36760305066767262349052811349705705205447571695947815663365442810397158464959419047231577852334892259862', -1); - T('1495920643058959437383621501654941246766508238559437227184395050508514977010891589414393139195', '2', 1); - T('0.000000000000000039324000814212786891918567188197481938283669634275484732259078', '-2299270960425972615800224709593358786239089449465769176018404837987624610630628831153594469455213474024413922975.3876555670185953786804983807034', 1); - T('-8082406101601203880115291043102466270919070095098281953735730788166344088077537197510058.919123451989584674149285735070236244024421371', '-0.02226327405613293121833686639574431245399059620617834149317063960558350928186286512729307426425266342626060275759668774073177785043824298828768556', -1); - T('-1260845046.64883107384', '-0.000000000000000000032951467370811927086119928603400891551133309876860179950981702630344524252699073518428054', -1); - T('-41702237.44707624355', '-403554966566407328040246233531173350056173185174578248744654858876543716393251428956136570123.045148101168981528401974150078770666865217717450803901233', 1); - T('24411533732401288279000256393511093097142208723735552385390279631903938583581112236833308264597448368803308517021849284586376379400244500274869616', '-540499000648432033602513088454810109729675397905099895623746885562670714393437069416769033407782176', 1); - T('-12796310936083799962806258894032181490930481696661675693244680395898.81995123483878975', '-2414014872118737871549315707.978848004363088', -1); - T('-314497255487.428261813176560336175', '-6306491139786796925149337414394236828901640814689977446346353525569212758359614726940791393359277514543960143.6', 1); - T('-651088466302570543016523906430706603794205652090045214990130588847786.8819083644743982693765724621734749239800740209128895951504965', '147959.682405388376182159454226557702317868363038056542259510762433258825701331105581616424866472646181109750953466531685333313177399667105119076833', -1); - T('-6703.994577459788708', '7536793319.4553806370980150922073737014018531259247', -1); - T('0.0370921742946192583396225808399487629915725931871147443686211585371265633482', '0.0000000000000000062212476744078005281537', 1); - T('453699458249145242', '-14728948.0513745626843613222', 1); - T('-1.28905599285812487351350473737291244745697', '-563389218829763133702542103957052040974515855646', 1); - T('-308', '516984036404958828482096090056459410969858910697997243496259251361079985076443709267317847242129290643438742396', -1); - T('179805847183633847438194.99249873787321719770175', '-1044247574021452596915714111909132257910423096527567', 1); - T('123554101588320649544216.106518', '0.00000000000000000004397994853294475245700390814883392112100677236773424756659144675174327699038110126243806258189173504', 1); - T('-312827142310757997835070900727109666586292473761969938151984196401897529.7967077459640049698', '14093333248931096650.70140994553674013659186980319834246516116032507700519477099803787321480988634011220877', -1); - T('9288004658713735991395448766.471082786309347191997997975323232039392966794167278477200470135442690910', '-0.000000000000000000036236', 1); - T('-5003663162392390422998559930744815950712475533778862767546033634736239106865398.34200465736653393272456', '0.005995077716475462', -1); - T('0.016952849058784222777545704550635491760401113492836107817192230098750165112382036526736941511441770759965884476270435716500782779545192104844146397', '-214821059260215160489474.303370805896558958575540934636712555791219049338778586728609565132509837009652696', 1); - T('-29821131523003664342065669422390700671001522069654500533110790', '287183970895010462611112222181497807816953448196337091051099725372640836865215266901010504439100294010735018', -1); - T('-128872.71209378812', '0.053283411554461586465632620143914891566173223703579219869905435200516553382946461331422076259227430115354178', -1); - T('0.08775752449855547001537690223228539966158257927867747229093074060191733122415129411764', '1333896222140748443545958875369018385387665379713651837509817389114355723402401.0775181114677961790564570079869', -1); - T('15629811629486124784855833358618453024981468519010609184558364167.768915691712343011342006201865733766347105695', '-3559856665.9588532621138851367041381438359281318430119518966199303131949113094567635577699151940255', 1); - T('-76654490432007487677111411474359324103728780911984821055308809497501614199876134', '9830309069585260103024961490220561448272871874066193433860218963579073519151392.1834947306646', -1); - T('-31109911419411460374391974256048150041603191.62921550390052930006782191882078004773451449319', '0.00001106636466858', -1); - T('59412.47533', '-39255066756843933387643056770701779729.0077716008957107251561', 1); - T('2662712418298080979.1948976333080', '20186609635162532310360175381112691215793931769846124087001563989679.289555957816471233930494954952811347559621424189186664143132', -1); - T('-3.389322169362240007054202653154909275703397214107362913016717989765940692515391', '-0.000000000000000001020953040526246078334443', -1); - T('-0.00000000000000000007374487372528988414726674382189607121675122700289699190268421814598374167900942667245468200111960006664208395924855208365497808516088', '-0.0000131144124959397624156431920723496903533632256118147633612272158310284', 1); - T('877109316442565059709146872571994508553392', '-108721.3420464648885227659186804342432278945435989574916950', 1); - T('-310820553664742286349911323220568418134747887975679788573390691884700762375565019784272806.28132846056923331782638419840233371336', '-0.000129907852986510765050318657102730436310787353175435003200188740238798817208048019233959261195408801763064829045531860468977152903483168', -1); - T('-0.000000000000000941506813198339645372998762911530208153055218698117008973604076971894165172184740572845955636588', '0.0000000000000000035524983724808596360636883393862678354781', -1); - T('-5.708582962403979536402415075748013664386587264597389537125177279692027025', '-5444494016350641630074.4592669873553751386488228125095493679780365124590363918476034336529', 1); - T('1065934250.01120693', '0.0000000001118603899195807698300785911351272000758786456989627596648367020369673309737349439920244363853300300', 1); - T('-5767260025207073188444945197413274423501738050189735884547730160156', '-330580305165737252114656677623101326542624691273133923639274155802687902056877140616096326912578282576033.707651495772456980156560968135871591663460', 1); - T('-0.00846559920865320709178796883143043054766377718918477778902455012013929978343738333', '-0.00000000000000277568352085571198453362669761349413107250675031694958277194', -1); - T('-6918667114.993', '-46052052220603902657877827218788263055315560133469865149768526595441710407900.57985786910904527268305318771593273453522505547552', 1); - T('802546912863329952116633224748510353570844472458722557014878400044036716183048576512202373334873328024319243274271269741459325940236721', '25.780661731282395351556152740', 1); - T('2184816382096491338787830715753.096367163048963598057691886397682046882303288589909079888897521056426702007482', '172169492388519739357027405423396243714.9004204282430309366098112447812547986135720071346255130203678718947804', -1); - T('0.008529045730082055582061059599446072673840302070786925367152757187979559845183911839396122993813579990676569522462800526002564', '29369561465233302592528037897817257355792654406799947375029638', -1); - T('-0.0000000000109017743105447531682', '263922392004884246723806322057980218525495312.37380641189784114661235018695096998668551216502665339669331921962931477127511', -1); - T('18149660819867833.776611203308917195146919391529441', '722175581734659614727875382644495.420521458331848034289', -1); - T('-0.0632388130646494', '-8022179644458769940432045379644096328530320362627149758199672304055490229348414207285963636896546168', 1); - T('-240884.4266125433562152474546222714299798660415870584341961026', '4565819105565625429351609469953039462154313440532798419344406123', -1); - T('-620288745832328944104633174104780618530.142289821594467', '-0.00000000042763677901729875137065795271947506429102070293254358849747074726025655222531640583579591035602665241003765385226723638432242517705', -1); - T('-0.0005997232813686082699072690646851437237510751191877857078487507971064518280118066752636224982626066803761438054710648081819170217128106038864606666', '448789772975807181453965791618344036709371894261789527483851520640967.564734687953462805464508292237645', -1); - T('-5944.46084192814621653509427362663260065275976732261237211575829369239376100996606356674502186726973297493942586399515155362001241057364039180', '-0.00000000000497735100370463438660391749047107856740436707685228398464338395009618984454240220388539', -1); - T('14161446516382225835.7766', '3542370132472105378163771457970216052165648.7425781268389210107209726519645230419709021897835457608593367579978930689174492450922488019354946229559', -1); - T('-82802195741411961169504411985695677333323242354.11983177229539369704405186974555282', '-0.000000000000002144832189233807282719629172', -1); - T('-0.000006784625484274469162301558877626829276531242437512334202379799727636918702695926121552306634079565967137748099137484258', '7394871143261456851628981304387021212671141137347474914493372160821.849982460588305432064962', -1); - T('-2', '-9577480957257851728668158925285617815497407658006869447421603583582482671861877265553874067890434541077880355621667743910295.7200699525124188760662', 1); - T('-197708341652218617334936385971802975665.2650590102', '53802911630665345933342409174160976109848064320688374526798452717190686158796876613968866779882767043999203016678122719894918187.874065', -1); - T('-38072823817863136627991695274477704.5643520430804929832270354210126212790225020895173826266131214755461222609225019501', '306508739886223696721899282220346649.830346314255', -1); - T('0.000000000316191129355863756434416730315412182337261365809876435613199367647273178078857089451964614692088016490008532807028204058', '-157162422306489095125228614960816215001360390504615263163200492537376167.697035893421723100121710027972326561445029491994146118409598263141950351594406', 1); - T('233976544105397.53972383', '1125648.85', 1); - T('-4130737000.0498428402668398062658352051845468818656034782938669910130276648346395651', '-0.000000000006241094763704769356703784', -1); - T('0.0000000000027889130336186175616581318491830441190499146641708159643961020619163561667', '45180.36604064032026790448358284110671357633387319964786520709792147034725656798271314354746304777783951768808251243116293584625182020126910111', -1); - T('-0.001763577869', '9278.2276', -1); - T('-5950168542955097743177295383964350692.905100936503492816358409770353723347472035487019625013276257808231', '-0.0000000000000000029645447547400994864011386152017637251837470928190914231982054201322347159873722936132649422634877469019375233796913', -1); - T('0.0290875288731746531591535288830511501906464467111328224293851702688888742097645060905370035803256633571014353548442220', '-294026438922793701124734905079413788211.878160013300244423789767770679', 1); - T('-0.0000000014982823513781007328958069947012871143374337994272660148270374805416396160092178212524736096877823992919501659712353985693297357433585031', '-9868101235517540617583414816531196163394846626.691831830894', 1); - T('6182476112765412972256430874006641281681083766558867329491.954829670374057358958585899534', '880396637045385811179717244187902683321740830158884405014171018661178832737243379.99039995084170785275378504376555296739303042003359925', -1); - T('-160751704157218639705860194646066334461390616893.68299259975682214519324547685814966600492784129638821897523841634', '105578911150318367.008309279644258340186264525150749881652252235290292605', -1); - T('-143158723385187700800431662230078385359.73820852144937977467', '0.0000000000000000000124340639699407338232687471046541468558241476495226668073022571684081347728341350550106103160149578245741', -1); - T('28458452063254242139803200671296001714734755842622926787079731950.0992735055675190876673437043110150852937949483', '-35838408218375548738650416610', 1); - T('1405901407.569822238040634590968038695131224115356886126732238', '-157848156800682193772.423092237390517494814302283186221330', 1); - T('1343.2952', '0.000000000000000127921933329444723698800231745313808252600125', 1); - T('28853632715587493558858323118072822236165839078014960997892188442420732661028174535.246119951253066921883027355182179886399617487552776484774687', '58109.968599810577067693043679467231728516554760366582163143608751563852471056960486315505049057948977813649161', 1); - T('3.0', '-5100498997359905798.17245204', 1); - T('-0.004911663588685959180762975105547432899694263', '-195.4862', 1); - T('0.0016800213659346405237529123816285', '8.54847928757376802233', -1); - T('-279764958968647619773787889.6654810407333727462942344', '-32911490485080881220995744901356698586892447851187378752704802609678707535904977.2349682793537012076792399816515725811842024374', 1); - T('-5785273759.646965191309783081376893326464784097386953277756864344482261946184327330852', '-7829585551142601892881228597972545207045593119', 1); - T('1749468477458267264460735919943750511749548119353526653455735024376363076831020428466683780580.382746467817800979', '117808811280451.15173068945839587501615962470947002537366415063962231776', 1); - T('0.000000000020999785770461916630781325078925976998406955207235955893836098174359617198083615378801786560', '0.000000016082556089324398313999563719442315635940079534503288230557353323864912025891052353', -1); - T('480604730995226700516.8211623950807854777785418843', '5121637414014031413488780740025020869010447826688359.63388', -1); - T('0.0000000000000000000414327897716676413497790718766565633611669986458582853310823990011501385441729741967983', '317915031341372776103058145461905010362702388394603209158188747796318349497254.0341816356079223623851060840433597178761519084935102204279867720861768', -1); - T('-0.000000000000000412840046822276949148', '-8495.635054982676808368418113257375475710111078926720024154221406272685887058370083', 1); - T('-2197955143857705392850268630353264994616393635646.698149405979940304022731', '-709379519152508448101054642505472310149794092278935824702792668825161997157315768209798490103622850132151927880856147597945372566812892535', 1); - T('-0.00000000261844554473808606144849883800858347445837640490072295304861523742613457798612213017468212453275', '-4257455569092781990677425261987768564734341578600573323744310843721093.038484343063938561039832375679139', 1); - T('0.001067310532886835735948587831914288689553303108', '0.000000000031462310921375409599725025289890661282700997505119039922194159851961328187903443704235399598322794989000459030891087074757277073644206020955', 1); - T('-4063265657389255020751373462844579518406276172065432701779826406527190899149755.03517774122841922794975102464204365891', '-177420797464172487220237833839895154679.55011483488839278508767009813747588375752975369464460567647899844', -1); - T('-0.000000000000000001869682149225241953308274214537693115192334192086388308300459785925708765364103340884259103064347330742062108169', '-26575432925732543046433777343805635906835756.77068203591990998282191321647366170089253841793502621205827556969126543988080649772889793884', 1); - T('0.000000000033068235057345162857793510724468755088654739039376687590493852515005413160754215391838260423538076895754633488993574', '0.017513325024275361448809543357388556724448571616284966015444430', -1); - T('-2026236793445834948507161660525890822744664756812527.8835718009664526661197600010011007494858846013632636703661400114', '-0.000000000000000002859595745866245904331020489118494794587721260255748716684271140711216699026430746445835646820788772706657822185638176542620892759210718', -1); - T('277022415667279674349.93159166888354112279521767856918625662786507898346558797736030', '-735938929386893441493788058350316673108625777978459161969923997224585208026818400417362773709666810793480', 1); - T('74232319.567499431', '-56621962153013901078899971001172502878975414000348449901.28271290391851422', 1); - T('-3941963925114761115410393553297553624.53962931133021347646967837208017011194854908672954262275111689570', '0.0000000000000008697032', -1); - T('884371959410985393786970216012521351503422236180303629436107407710398002848795.2898794903243646', '279245072377995673569.57825740047951807305399484447809098617257475260300', 1); - T('100631006795618153033034251352672.397743863352629831700458457767', '44099488689948413571101738537602860137703950300410932440087945678445341219014875737401922780.17252689064335904983389027581416', -1); - T('-1', '26868582.3096831844134023012215433466422117521756773917584228132667216484693295101611945772014129671', -1); - T('-502223330837595.44379400944709999644635357228899069929988', '-244003493276454121687882461126734836.07592128039798251908581902930717022441921782407196457234418354328582', 1); - T('33870893120776524224787.26155584027957777911183884255850768', '7332984218265663155549396746597908086330161269696624389865650149280363963921535236843118406711207250294131459763.292451119914782794', -1); - T('-0.0002696984347940490398828397266594740044041722095889055402876873310427883943924936554247676452751022', '-0.0000000000198505049352941803865970937898774479162157842482374962457965176036173890229130068136812989525256546479161037', -1); - T('11790148948260649482767435943377652438601227088883805365070340866280933972152574199547632878971', '233346516936414547946433708151846303258806202438283735709824656199864024559', 1); - T('38681768069179772995891498403722822330048951280500540942361519429848268851021582215739737468318', '2282982623239', 1); - T('-8718.002', '-2162383841139137785874392020678.222654167998464572757082745022919124895302054425608160992223227660036361141753054047144372425', 1); - T('-488786545287184792041400596.429764766800072062963773425995630557595146308866924025002119736839163', '150349397895989857.625350343999955836341802520548691205621597531311186198090511440272682715306143508070716574615641968162130759726933914', -1); - T('-931924244656227219809405990301731461381455026788834465108077474984655183700894292742532304542719883873737017900061725370877671670134030687081330954', '-22590847661040395922870788012795560463738.6042785284312011175278095893489415781880229608749971180', -1); - T('150034078673021523537829708913856916052846430.677559', '2166077460871.389181941661', 1); - T('-15221173714267229029000823.870941799216310763467302217336309', '-1673674035036687535894', -1); - T('28462245616076323814547543516628503117353984931675274738003002529627.050280772564006057379343', '1684755069944063046468856794520.544285696374626', 1); - T('0.000000000000000002149636302695318031277254419779385264', '294828031937806482188347305646408178392144292715768037206520083084', -1); - T('-496433201256500626575612612181413775390243576650772463544387954585218643129869625320303924670', '-442160689638185654.4551347636803891464498055343558799035256967658204045507964302065922246141137529665782679', -1); - T('-129579775113494026315929537570278930664181731133208782701.45426943069540180187934763841772148976875003178126761049589822456645625031071378426', '-50960835972632028101013868729008914820797471866095853076604833015003479026669241141140168832519272084406271817729840163461909', 1); - T('-16747439551932269968419783516292565073527286.5978912153712873353897', '-188574355884266969.5316894208093252428', -1); - T('-0.000000010491592994513761160780', '-1050932951471917437885324587810501317003548260421160.74485123595296963899543431', 1); - T('1010839134920617276236285760745178410456.2249870989035696035968471032980500261', '-120594328581364716298488828.9424349293373529319017263005601621047414886', 1); - T('-6745237811374494493983732995517490423110771468604331647114513524140869041111924.07143145225484722086621945039491878138053819409423194', '-78096848334747442570326820068097176668363000702119878505808158486202624573888559517499059469543996762065.34515372475365048555320336061286656', 1); - T('31641216104195523119323298187454596691469623', '-0.000000000000000000258260225806808436156489946400669652403071801164964794360836676150308291521494089553214811075584197298817277602', 1); - T('0.000136955496160497638501494207878559539838907773928113609973212720681874384188247121736519967860967190729707', '1131456362979085.096849571030916258593458603291865925658158837160864', -1); - T('0.032374350209810222548593899', '983665612534486391903069992076771767376905372098300464420498293252673383701.36', -1); - T('0.00000000000000697749637212917655601734843952168313079723929644561400713832738344957256670570318423980784737919478703314324358395035811505647250409924651706', '-502882856311579316783157003.0536395389', 1); - T('-651635600158790804410143491638919845677600042415920405606770304907492557295578675862061924691925913075254252734942878', '-60351457742518762435343004631135543741539510674840042991014451995652190.6417249701705696670', -1); - T('345509817388294075020401571707985302468577790452097230.67244674898512863573831730550161447995018107519203024', '0.0000000000000001056679949312910174815404770839634025694', 1); - T('-0.0000005133332646768106615086635756288330738260842203558000626286730150325018694693726708199958605568678693224332247500950661171742', '422219598091.2132010626485059381682644362524778822675322', -1); - T('6209045587577773276464516075468480344927865681108539547852034571272194268785056443405885354613045847441750653814344012192541949', '15400142567569326379407593600878161357.3158267836117765', 1); - T('-0.0000000000005128844809243836111542045', '49208450703085595317554090353487521994302.58448330950634435909161638725929613848207952792171018392294484488157376401528860', -1); - T('956820321617083079596327657581942071127140318928050899898356414048159721950191.8612258', '17278138380102047215838955529410627.32350998142532', 1); - T('8582364', '774.20922956184858799', 1); - T('23221742968467826352973222392797444267945245449112426217441284967014691005809044233558034646290606716623338692881049684653084513', '-716575979020985.279557138936348127028057421241051031841307264455042608637743866536141586489408312326413837112549345', 1); - T('-64239880442', '-0.0005757706836762797690172810781616112054771449962376286638181876626306753967493356164897064584864421775', -1); - T('99890913975286305568325542267993806860755562436873534002883032609372302026293419920260643846174424961790', '398563986970697552164623501292881320978723925743958528075037214399734729923685025233165645512491551109', 1); - T('13099934563976711709606830808259471671138463230508665866920870667879022883291570961467719262054', '-109826842662920.8298299283611', 1); - T('47185659575228280475715212180191382741276156908324186745372219490089540417870210622287493079401094749070195008965690189496257.6344290361', '-191311112886267605129186105214676155987804385676502850167374976.81421158641221691', 1); - T('-97492338884677999782.8', '46090.6038891563729837049651434308627371886782595339529134134103138942512716921751', -1); - T('7375598828163292955262802188069890697127023128.355980866541558240712761760425090656158086966127126201418096188025050710292147394218656199519', '-33736162847546417083662199915.96497427321380545945697607572725317230293032258054213443', 1); - T('-218160598947993698294987185974447249912.89115498', '0.0000050015875427779244596032970734068655494267635032', -1); - T('-0.0000000000000000020', '0.00000000000000000001471670935923077384861565636336852413366332241046663589863103491999420020658770322413837060604', -1); - T('33129180170998410129893543070459417633301197982910425.64606409078111879170213981476306214296822988445339041520791973076369873', '948494610332137187926756645888688419826755038831255074436327001443802251577207818445858623129.161046', -1); - T('-225952021109392177218450439017431752400942775732240194661463892287355070596511103556052608754481002242937280547960.167872771176417481374193116703938', '0.0000000062277239670560908419969666371220135218008079705746207056768105428331985213283124653402345973621907360434147807551859292787803296246381222933824613', -1); - T('-183573578911405697023556086514609883893306795215626297396579687619875304342323017839805206126604229488822003279.59233204484561014983371', '2633566858032007647133550571239916327299194373140075907964398383480304297038434790716388124909149725536956762553458755051740197984938091354917', -1); - T('0.0000004460397545970448393886895088191903634042039815', '-0.0000000000000000095347818761825827527731028387911543955632717901933911587359863970181690577102483822386465350730573340050175224061', 1); - T('76836306086273960905931260788344443215614886.50168135779713336', '337185798150132901588999178764118776.92309780859993696138620', 1); - T('-0.0000000000000006793099207949304687582058497331137904457143594', '289472321951375436507478434341358.5306354511464450479041413522186381', -1); - T('511444049261329873.821317987544416845423877441515588846906090911', '9490010.05', 1); - T('591713007334383637715463717.1291808137387981846811658128330485888980625856216328030564698865533394807126005192249912613', '4823684942063255528803421209.107961034983048341611839235146', -1); - T('296954671497441320436.6897774425834586892939399251192320626790853969384028690679126272812703387657033030897290641153152475784706776362266597698', '13766678990.5234817', 1); - T('-133060567480374920488783510341269926348673610429669534346754755488082205036746.875386348007223776953779852911928', '5927', -1); - T('73932844006251372722325798853706639310834528653981099571578123750133433908285265618.76202624654621129232002', '-0.00000000000000186827495500328964616880687615273132151323886740951058615687142482475027687476', 1); - T('-146141982259082027635792785584353187175763401213207391', '102024036100851932865259629376529498649159346459236183997.282137015883624412337321294996984015309550913896592804940099660111659498774210', -1); - T('0.0000002414815', '-0.000029758446843941651956375917491305831593454765385140091979237320013919577077698799164529328687158159830988324', 1); - T('-210151030793502383014434760169391310.18854098497872', '-43132900782065', -1); - T('0.000000001881697195168801041002308195919736876762525914212692483270', '37220503866578932861716463156502243937410265932050985593845402005265927199299255.98344413682304736845548607869635917563352646023138638403944588', -1); - T('31521072328186955772400060885593.59297383310829219344810143967971187389', '8299359200986653935603999653552082057380926282505088802016107969552627375549163347904875168992450289735997709999832779519890573966176799923577873', -1); - T('-12805934102.27948320410636171184694060430874642071534941054923893481501134168009876861420438715119150275015992454925505523986465864594', '180018001880206592982896205731793655606255072617295111549612026292885879170444460136951078426.390401726986399145583973049833043477421044648', -1); - T('0.0000000002936016400407713831598517736778340369883558829401128461721111534068980221676584362479994606', '-238280848623349322403710808897808837396452119.946711492325936626002256793789239512952', 1); - T('-46459704414418529966558677894175211345197518419628.95858240822563998829696554747145974856949749820184367731693913940235039725731', '0.00000000047722733462292648206074425', -1); - T('-541280.2703925225439019884062953901365125819982181630864435007257550343992637766901456996336131019366630269083091648294919635719143947548766', '-228034281', 1); - T('-11760472974851709104383782.662777303052700', '-8856003943296025750571072176230995254098814451714178705187395377177217251293203.902574261722648560357498315885671879950820620988638695483994173', 1); - T('0', '-23189877550335243259085364.53351434706336084256915879121464887999578773388400557820325828544547283691169421254622757350946740952577282739', 1); - T('10223905995799236594685978417380096525435726347166557843.918727523', '-0.00000020607225637494236034677211524295904660928630761211510648083699692056857979868128566729857282938350504504013801371138876743028895', 1); - T('-144846563553578036105235976816', '0.0000011270723657297532847257698465013496541743158648293535010828229786356244296523407610311043996299040', -1); - T('113032464106654125041288367328368585073827742426563069634695010033138913322259705750701638755775233614410737200187834799536563007432367297372', '-144536245354049112745081024.13189635154492291842667978940', 1); - T('7986309849142964591151981507150767', '3715212599762263522511060701411.354291876313760173927039871847384807384499566193464909380', 1); - T('-0.262033701867790308', '1000', -1); - T('0', '-1298585670825508993270154522126013719917570633453070690396116462598092540996979333.640039196743651565307879856426743091916875212069013890994736009036', 1); - T('-58083440833403163271255364703914434694411113794265074103509.6210028470686978950076079624502733808613037706942237117077742320080970570', '26461831023083173643510121917518549069675457904421183614.08670353705231338613403357536480', -1); - T('-87806.0709005423990183741480799', '187889864.61083754173871187582049463612826040389116069100443073768518896580280063099139409857625583395994', -1); - T('4275109636212975292229007218589106.56555396510879605313848016743912486618038576223178889446864', '3214123466827664829603412.20512221377304305308306990229', 1); - T('-288739473055433343953882.44471863361121224088386588796752', '459693332791964431347.9722370509420311935824189749201056454335904860013482391961613262946036613056710507279548844104287', -1); - T('-0.01654798720757644256839268748011987903667764384686077', '100.2947610454173899008060779309430287884089908', -1); - T('-0.000000077812076712634332162149408492721454465', '0.15399229905779332095662380969505220763061741414245660138302708596471155210747491437383447979118915119014137110102148592', -1); - T('-0.00061444759912181780360634369163380074336309374788470888402669388105603516553991054356526066819440108624500372932833891457915', '-2586282129839.81183', 1); - T('1498895191248177551510700.45606050', '74541212431266542382401488034545718935193952273089972827104963785323484723329', -1); - T('-0.000000000150375415489340749507967', '-74471913380513166596942427426446874506626967565471102018090995766517502.392226389302441356759681527055387117306583255386245975', 1); - T('4379864196478185231971341731472.903266369426998276391', '42212498773976611477583491576270132689125437393337911684067430376578.9984194168847407989', -1); - T('0.000000000188630716195256390543790417086046414407832502506161382231731603289140796649753995735957193705662041873992884429720334656191370246778667100', '4277485611862341', -1); - T('-46750737.49359475454665387075362911038', '-0.00000000000002083952762905039971040265943804257794973540394987926928714383260058014', -1); - T('0.002544681009249525059932074042166748733358476604959321449600882225721113427484661673735862906019211485741647391857669673771533945502723', '-5', 1); - T('-39295905377158687425.03568106089356864942579967692030891846534', '3835978607575268175581954653485493945307702695323573026257952124899312857138636697340444576247772132369597023211', -1); - T('151889800427285114033292898375825876633959450.898086899995', '9713506827047238971234405766285157635347795138873922.72495033960', -1); - T('355429208933168784293936130635740185914092143011019726030386568363136704968340935328170476421910883336592097125452.6140400243618816', '760.68473869704185430726326613766', 1); - T('4349545620740369674416209302329779414513372709527226', '-512153241030873003118738632455693535388671982041905647243253860149370383998111505079497094180417460533664786733236996564989680995504.330957321847087', 1); - T('-0.0012688202113', '0.0048010468030358831203945427786584092648853082093217561611591674776303185468226054026588077464821415670427004307009969250474179998', -1); - T('0.00000000000000000002201374424729105772', '-0.000000000000000107033257309977239769384301947', 1); - T('-668028580968216191486131.21', '-154531512790783399365338471682080.44013066134495453500823018524005204200450971051972740809812246188229676956238', 1); - T('192599466.2', '-20366857500742765296701334.6', 1); - T('58248290.75313561203877075178536778204022054792568075594303791595851558245836135032032800460252186270586976386928888004344135939', '-99168518734510294278378406838157005789369254297707094', 1); - T('59335044381412481489178159118129258391790720120452482882085288454894585878242302678696', '-85648601004388619627800968402621796697943181866275450369784227.575017140', 1); - T('827495050694857970699868331857360105273936056958', '-1304049.1408', 1); - T('29433574477411346954729176312712201982215509.28557096414206818026607603358233255484946894686133047229727976564507069176749268741739111176858008', '-4633956465133.314261800679223973287025496806457718', 1); - T('12686266978287967082649588107077967578421597532.105327951152521392921904301941867789915864450059477632284', '0.00000000000000000001680216625099082611964698924207784733377923277771980687646000893625476714140746', 1); - T('-3567385737540210557638345348915.22162', '-0.41824899246496739428149857672095872056590112993464366988860723481961972054071505307907398495301014281825421217207829254327015496033753800645844684', -1); - T('-20371368.63017582940071081998', '-6610141547540851.2618872155', 1); - T('-2180877.248385369504597407913625892', '-0.0000613947546197329952823061843887350018748897219554852015448742989981', -1); - T('-25661548932398513068206775462417323701105944198759768081271555328689916551910650501573584882621966781961436302774002', '-0.00000003995848665017188509548766348670502483977228426250447700812058736871198968592250144174490260078313382961664', -1); - T('700915978647576932038.9889078885976161070216182950', '0.00000000000021269845796478757183434520508745974681450900418628307878284', 1); - T('-1303382398497.931396748821703576829828779945840056689872555876833881376022696155060976', '-0.00000000606644551523073444005306613754631773003870840662806994136979597086670031977138946305205049690099933090', -1); - T('405906568852917813232248628119090577947475734689.8857756127121', '-0.0000000000000000017866056928126257148339056150658060966796161201920608159514292519569333482177040033662644', 1); - T('-0.00038993118656334050327105429584540674169988490158156132652011044524474264534283653197157270482671918112238649334367', '76860558547603845673402706122114999956168146955310350.1139970001390673843778536118055735735229745139379062', -1); - T('-1291.525514189182260086081242332267177585013147', '7647914106851593261.11793036077055947', -1); - T('-12612.41363549722', '400197529.089873841323983042909768373129595576', -1); - T('-865231120.42305', '-6101.373', -1); - T('2135123.616487587', '29874778328.687203196134017891857809472541023600394892', -1); - T('-240496804491219672098', '-0.0000000000000025537337241596083729560310417637018287262621849603524145688120537226170023073025335809179309534705621002788486050424760426340206294822698773287401900', -1); - T('0.0000000000000017704907457081494438152952475686979995935351712219723883521', '219880763814382422594281439908041083191286156495561036270640605626481755929973044677878194029641135689892298021934326005001841305991645975944158141', -1); - T('5562146843300977194583992103.3541447154572529507300968518031922002848845481', '-5385385490941349985.1728987920292488505551505952939981174051495333139609581998031404277776446303204611433649401136931468794308049', 1); - T('1752290198851473333381.229247979245303911113358', '0.0534488804706934281687362', 1); - T('-92147522191432001037455421266530384324844131821397435747892093212737588941410897009039880039.78536641975123525885676036525963399053493', '-94653495796270236528544459336546136861980560329213238551234844', -1); - T('815487408558261730721844283383258480879914323551992615511114634084667366.601583324800070891427050782659806100748059136244157137697115166387443377852094', '-0.00022352674800133403772480060128350715370257398919546352741164890695654568500835062253326191042712002', 1); - T('5749689998455617772483267', '1840103850357796786136102.71620', 1); - T('672157900280788714930056355200674066483401.81631034866806625951256911099862832274306021451656220978012049245', '-114154619396981089.1320525887956211286048722734182840690494935795064338674221730292522680013566926250582468937966455149652051562981', 1); - T('-5494699992405395277727109066553255922407802868013721980441109672.2745818896946274305742059294626478254', '-0.00000000000014929679588889355091556', -1); - T('-385449726074149547840530583797934937181715165939491867569145644860713885605.5264721791956556383239054663012165553', '116230758861245831282.35469658891878592281877915896', -1); - T('-0.0000000010121528251165650737286665285385390272407652360958821083299180952068082201020218158477438177846198635084848930173', '0.014883196009565080385727336397121811890988734916589439190153212627665118520225526554901248590753739002351947839892439723714675499975034', -1); - T('576494346991115932783888314153281740149238819119894206393647915824014580263476342693398091833799159.523480555625532', '-61995543200977083040575763967439592100731063156984228486.38535435929903297792354585158311732314673482333', 1); - T('428873250.560664', '129875284926470970222879379103280436892522797190190796664400470658620567525600201123074551979893854516815261154373333287236970841329590591717797034121', -1); - T('0.0000000000000026870297704737006603169618821643992478682185038681614', '7820302396851385.87642732170367565885193676356664350349738707893636875852', -1); - T('-44.520760710306309879865713891315672271920022787764083922278701523625034485320733717004859', '0.01439428796926164016128066457640262141108921179147399710995842215316044506980299877008384374011689600039480155501049825404811115221757434056043236', -1); - T('-0.00001201118968847844', '-70923798469593760582530476230041738134921398772057910273281889901965679.42358', 1); - T('5843135287113736528157843820316744502939564526886546.0047195639475992647092375381054267129062468983623992352021878814209422214992623', '0.00000060757624666484634102563211416190889408777041958621929849193644313556211406046557886739314619795644390894145644323254283691165', 1); - T('33939864110426158794412428792.47956843115029434531711836467014982826884747667863328480197253623707011712168926394003290273416608578508', '1064677018243359674559461311315576643719466298112018077397283377331298.0670918844184768217715685', -1); - T('-18912', '-0.000000000000000096633006285663483174785933757971320277192376117523241919936331742434935280501727980661135723065936406743562787980', -1); - T('-2804344532565505375601200736426512335574579247149602614364873466432310221288307433080611694637316033618692401292292895996797408039558038455193698965', '-893720293743137.926655354747113007920084052973512410160846993', -1); - T('6764.231463798271135956814698363174738947427445137382091391208755942353390328768698827660861776845954371737556198135', '-0.000017597904259456024333678008', 1); - T('1.76481649511603874803028298380964499606482173', '118286517946791234440962575129866748867383839052261404590790296018753.3551', -1); - T('-0.151932239357399305076147843155550323032938508228686222300958284775879980694971306303640', '829380294.1737767149859532540', -1); - T('0.0000000000001950221826994411075608100769821184304540479623634687640815964857394877326312992673017060046339509291259090179143500537', '-0.544207807833617254080709456086651220078670208155499221226255166753832289251475987493675', 1); - T('725592788412654390.288037792170665708343668934945817652577358075211667306339285606349503938607834479670176', '0.00000000015727681596554688195', 1); - T('-0.0000000000000000025828037795917808174174022628073029870391944907806479693726568881606935015683570702939052853748656921760835', '21479058581519114842906568693885000707.948701', -1); - T('-52318803831972225224657668090895711041816508172.8', '-925177002627943141448550433420188042136738.349349239422830476016023577725025812189', -1); - T('-11595020947248091113626696070928546894526698503484940942.1', '-41743727850266539324572111803709486.560814158883502040355649548872806865758563538962184415', -1); - T('-7945674732961469879932607763620399739445214326825952225210024765118220584355530.0066649877944415388056', '119923.63269933110039577637236168360031988884136', -1); - T('-667465135.521', '3600732041889309108089077145627379409284885679028550049780473370754192258840745952520332031.3349195', -1); - T('-0.00155960825045823734495157128817221951179945771390542271382698231', '-0.00000000000000000001547806123481913844128531558529', -1); - T('0.000003897178488116939077117755504046954668782', '16500182036173066151975330357363436305432978597893641854622839540840890764939718449396748745670289759248', -1); - T('0.1066389596341454370563866669022345823619309097241060909463123947382090196267402259296965465474236522387304285231', '0.10554272066931320067690515900139997226174735430579374207101626812245423053687680829616012414687316642', 1); - T('6311170580654312262766895923050966572616839302483216469449041222764.049350942968378224002193794621061821564299153542544', '-0.00000000000000077721943836572688797512479214783933404468328060', 1); - T('-6473241763588535091671209.6136', '7109946613265111655504066906893421227308129623587629974790367852537008848978739884385313982886613060794958166034914293662450242266370.8', -1); - T('-0.00000000000000000008039492192574383888482371', '6604383032.684474135999128100', -1); - T('0.00000000481203569548875502622555282569420051010869127282373043112622263', '0.000079591821964258103100046810525409740211300100386397203145583898461821616', -1); - T('85823943902986661.3551017490436085790271996332709765818729748512879602777843718155761693739465208300732899', '-353619674248164726117917.76326235745255122675778', 1); - T('5705133585416934331.96', '-692026459205441284419325590512301015920380275971289655588744582196610452918836386452075288', 1); - T('765287548279977385673120140382320109443772413316008156351512085669539136561234228', '3378412883764.772985170', 1); - T('0.0000004444949779299910287084862350709993', '-34895239912483248998398456782819190020892134145899514996827417890581872655651586615097978930.28086971201242063913206088020792', 1); - T('-1808406236.0007411517153424954283974901033587835316874236876462017822855632147931437015468125518156654752077876232166', '2013566681929922981330.04601046976892202943272046385', -1); - T('-4048492393774402282450581898756603285777654317041291261832380799275797348666467089872455453070620263470013031356830428683981574', '40099412654259527050657495952587386178575394648007643060458676.1111791491498057728067622099748', -1); - T('18628915136749176154223386824673062457919.8848077693485186034', '1513881720435328747255261588664662813128641748401.955878978503857272440117644', -1); - T('-1102715066055607391570121246263589329875629472981.9918971388267193266893066174800566737394182297234831718246217036454304180215728533097249', '-507466746731417668276962401930968304387149385.36733202', -1); - T('-0.00000000000000118867735895355706324644741565687516380934012845606449840941596028463353814792777039303066705142312804268503326549993460075345403972111834209', '0.000000003436556517', -1); - T('-0.0000000000000003371984563895388548767205601272951518208249335621347968700193296778014696768556195', '-10274945223018984756966657952438916138616218197724933584616138553807445939342840685241904451258371', 1); - T('-117433402658185448482194314232639429126502459349575210459884357.7406396969270334883393802839875697129920877876569071877681298097932152998', '139976394189242376947006070215378416965', -1); - T('-0.00000000000410999246686291289919439285398573971906473918801526723286816999153997225640711464165501375618395618072', '16857754744323811301.760491652997818191680489759', -1); - T('33433452292.54424975454908357494747405074701508', '8269909530911601430300956762711.49', -1); - T('-283803212239.5587338007666372129716405064', '62180632632.44', -1); - T('10816304647050009681046881227640567650727092915763836975846424094420491356952792053535937227598578243148.70549318016888506158632243072', '23601245638793.9051238958897803858851422315671924508733072717037856936727939646826421249728398919007381394104232', 1); - T('42294808022511884510489816637065479125.12', '-363076851403252016896121227284974203057689376244997308943536424206680183580753707981871249845116125872661250598932697938367496845913845', 1); - T('-68057065545315263763372804.6037879238251', '1849186991871166819', -1); - T('-0.000035422370812676577438081958090968761523064683396142544733667226170582703', '-4886104.52695396941765119019781209957215550071392339312212', 1); - T('-0.00000000101152922410408185', '-154628891267599656838.7544', 1); - T('65053724814685425792643437308.22975034850682336796195307601162523736', '-53422542502015829097671319941538573640235158728608612260590736.22285239457330945763643215406922589852086651975032077423269936', 1); - T('-679014.049691213095078512348789233953999083752383', '225334567529.305999982841966497994072752683700827916742714614297486', -1); - T('161888828328851641417083878458443592052215516899370606619738.36510326324072641758387263980815868443516315712557912616842124441627523', '0.000000000000794258834390076366776294050001062371476872317912962468519864454127907974470307426421865511092144225939633222374776858411435618947559', 1); - T('6162233670505318', '2.46634168', 1); - T('-17546683536111282316342996627368376599858018325962648.6584700382630574850314398607683745', '-80802643256926373101335717601', -1); - T('-2352353228663372948015045466172105999.8803110610547393595549', '-0.00413964594253429181906299898033064114461684408903594038085686221908651158875526470347', -1); - T('-0.00000000000000000004356348734944267973648639107', '-229367364784425681697726599493823156989608369042481979275254.0884841218159995757788959686561159388268846646565860174004081151385', 1); - T('0.03415457575710915160220105512218140806602929852687968668616994967273160715684956613423796070943115985374314105903537233', '-3196749067837621585326283843306992801307.802760498691831198070', 1); - T('0.00000000000000247413037298398028929363025202778579193861821082044594455801367855787265239661476744458519065142081672257010', '44289.8', -1); - T('58.3127511093589129668', '-2611133014902015509360439.7129643377015936731377925522222539911964440440574400407593', 1); - T('2406843722253168117192934590291028781069300073383984975.8180911819738336792993187445407442782766628930100725', '89425216383828', 1); - T('-1099207.26554285655755079330147354518979139456850179395304634417125044240102198026939759672286', '-57693881703804010298386947171610472014880394287849824344777180903601511889954253540830976322899406814539377606313895495643102769.83016248376', 1); - T('-103994242142241963043476374672302180239375906114700919981156677510520442173528213340300295792463789876630187002413998412270858178265773895879435145193', '-0.000000000000031367951905170647781165822641814409694938292', -1); - T('13601721526443719522926093787.934046503185812863872716', '336408896287174621976247324108743253861832261859751110841.29596909381766540334693808958727478573401402102365', -1); - T('-0.00000000000000001469446157409381008342426261966534408211838683793750555946023', '1522608331828812962719302028703469509396748384370489182706462020400287150465785830318500446746747.6460778058447560089208164112108681301784', -1); - T('-0.000000000000000000292119887858775237140722034722696650983806428229978415180240', '509639.198703', -1); - T('-581568431970891620674020761220785883553826553712684204299194.373663495926444491785700217246', '-0.00000799487760788026644276369061232209772149143590654545891959237728077188021480038402000022139388923280596639559887', -1); - T('10576907282617366683945326959370318422762465935099101961150731963334451359367980479.1711956', '93657934108538335658469446550891.33274514', 1); - T('-50779400127432260917442015730665305.693827342498804536', '-278.45484183476521400133060414619839700534856688357221666606163711034752645600781353452713349748727451466275731553', -1); - T('3582739', '1784.034', 1); - T('0.000007142491492373590519731802287885445743376047761637981513279821695831401679304444193667604938367015426898382592976966546278775', '-857115157826.2112333616148328187721853506794021', 1); - T('-77650157.77865724663131558543954559605879484270600244615464493178445559943273821677209941465159610044188242984064', '2', -1); - T('13061793010825779761489046240048151130041423831782034351150825980261340689146749636490271350788971', '736646718813268852209165758615425625665840070879918346', 1); - T('-0.00000000000000000027818072125795253670533401340761483641172537202336362918391508577676998124879659850611085', '-757589742121920450871623430335991255479320533949980775000891583727233254637570819240641737.1122814951925898', 1); - T('-44805268190729632531865.6419780191402046529767672', '521251239499704005781275449094278641042506.3156115052302463420952777340591939364886084763948408205859384130509381650790892060575', -1); - T('-9.16848439809259319052148', '31804088022084780543225640840236725226743771098722292010442082451771.032053418236761910351105445438902994094212892937018928', -1); - T('-0.000000000000000000015946937934151918888138620979468427775546067982434246390130160312768937674401605951766202953', '-4384.37908930790756', 1); - T('-92.0', '-259.1103140486780473992', 1); - T('1829937784973143537783010100739888095502819577009050487909478.998339486027387102532064478083066161408101089244606741999372262029117753', '-0.003466165765516931483921623859725455065870694872586558033998887390346792964596358533056448297144859327570003882840488520157483345744424112', 1); - T('-0.00805730350870332416474130775431753596509549127714076482362747443329333536910223003521268991503827851593840825424710029978467616431589134837782', '42859237293.971714652490950575144555590003616042479874429975572476902289269556706761', -1); - T('14687687102617235468391945141416714260880851700178866765733538453531920743076697994482038.87810993130926761650695883946148734827', '0.0000000000043032139506511692634953935', 1); - T('74855288934335940624584700729.917818635680622422883644107796356783278951273', '-0.0000000024412467395238501084489165324313850210206104', 1); - T('31534804.882', '-107747802197986688050315269264964249408206715357274490951874', 1); - T('0.00000000000005436941845644294932431141904956702081385801461562015917', '0.00000000000004007409174643597984346027883186426344264183588051770037027544931312637485537674353258405773358832901037004', 1); - T('-0.00011401428096591141304086733093089782287404551974129345249206250034253148833654960406327854197854792917730041450409869184707008198528552235035954269', '-0.00000000000459090078596662894002343875075543959122946654955353856571293852319559157327916251', -1); - T('0.00273909582639870092043322082487911991953970891824257601379839286759468486558682979434046468763206507018460313471628142789574554733', '-12174288565178653649738825844.058129335942051261437792772494997783050076234522869196457', 1); - T('-9262163133525541289611786411236936499015108574335221070224302067951107010106083554045354391502928018000897936875310.50063711574683', '-3415896484698655068520389216070918253', -1); - T('0.000000000000775402434179186062776610592070356150419892', '-10567486649730728013576719047602414874836411929687810999158959874142512326985312695510176030747379728213278021', 1); - T('-0.000000000000000029154845261288138429108167871851762042605685339365274521502654014100103052239316462201294992571376102', '0.00000000007215519703698252394014310761077946308103265208763107160443064766528615271128170860242303974651987945813780869799910158572025', -1); - T('-0.000000000000000000038919174519392355544992733520', '-88873239905390283257526586315278488079494343890098540.14371840801969124535809059283682022956915824484887795', 1); - T('-2956006733486.050322519495910617171990967860491609473626923225257235851006044563856964764255650517769695833', '-63580.7607041571683406051338311837270934135009599731889857981100051635443210692920253491149463594177586818089', -1); - T('32693297930914576641605085.456147160027786641825068409422582642333463646578713263684862420', '2046994.563394388211', 1); - T('11585457218048617716818642470310899619712965.757545839437764987354930195688915926362652526394444871037', '-24619892752559156706974656.033638967580349721627125116986752963277069337398575115657062385861834385940136798596681542333424665238168009963257109112', 1); - T('-376741557864930127185019858384127899674528918618.823922265376740844074653162948916457933603707043182097866', '-27589133853961983218044564074996941310096508288788452470863.709706352', 1); - T('-0.00000000000000159347', '0.000000000537720125529707861865661334298939870145', -1); - T('43035909785686641666336021702781351129892247747464104619212766477817619033880081924506', '2814152544538521977901831034701910821444771265677717331726406832990136388071257847595368675837635869488930703285050684920041246854650190323367418', -1); - T('-11985135.8193427509854988143005112183287545730', '0.0000000000001803274435994955450298871518541291278942016627972113349919772137870618374138716105', -1); - T('-0.00000000000000000231213881820372179648211424074545784084490603786969584496054481785651900550127851716747246826568016229452975976262745772409454', '0.00000000002542356646873251984661531567832365397400169898925001739523492396893368004710859653', -1); - T('160250738049532782162433853489598402471976041469770348690123392.0031', '-294498471596460898486795650003243213547297862171486734029240994267080719706597441329.5505160068626877140129559069410890749408503304245', 1); - T('-311499170316724006235994246932956222855452383.9355679763714275758718700623828461', '74109.22858001236432975439589074625834100371918658550933564518627770467991656925437210524238209898744184416226015049386723272030', -1); - T('72262463926314177087592711082448174767989257408928002756189090888827037903900202019977026018923895141350914091904436927', '-0.000000000225167954917337837957771388', 1); - T('783592959000310229426414265767534.3977599563867860198103276131050069803106200343268513507092805929256', '2213775192313849109306210671344446709142941975379549548840760877161562324284900199839612761050250.310478020973421299217241488', -1); - T('-6547449797725.304570', '119824690766003830384751081.0046122063442368459687414526624230150574044341335791064835698117488656542711155304626640574856112236102910475124479214', -1); - T('0.000000000000010204', '-149665073272.5623297479580213', 1); - T('-0.000000000000000001372054475', '3261320307772433532065115421441455427066494965386813158814003180399968053382332347948302205942486750609906989182229631672314317782917588042', -1); - T('16267269269026527605638552384753020375945217358682470573450643637648938800818442471696326897638.960256727665082740611435176610395516518637', '9397452437953662194.6', 1); - T('0.0016003186542702358062119951504575476400770454525551608330060208480446269746952107326275127054026286275145379', '-10177150935819421368111549722330892202837757641685140152152703141782.0731751745579486199764500876128838', 1); - T('-259.796667804953618306869', '5.152172124853561796', -1); - T('11221563347439640500149258879687347315134035785708472989483023267.2300609027733075', '-26207420100355721202593.170521021779774357040235570161585294593', 1); - T('-4086883920877948704292008316195463523825565880525701686248.2367', '19607520206368681093521348463825573467158671987138840203949280288889694329944104400821735075790097995474419621575623', -1); - T('59250037050672269038935756873853022223815088087754056875033986973202160304564921006.3856374891863577365895067682971644381098324', '-1150048048247576308790181384139171657779505.0762328070146919', 1); - T('-101.9883', '2427396663212685327845905010715508779301812460773274950351804533445926036597008', -1); - T('-253869543570783673956384102166918285311284645640813929674091406323420328870905030279906889614764088874316164218.650577522882100114108252753', '1065.486621351936129492744089151898837668657292086320399673336494155243434093656438111857434011880854788399689183448380554', -1); - T('417208985560.7855205554', '100923345912048408289435217840834510246434298689324763023522249789499602478530171790094650567004608931483845354824898446196430525102018126501735', -1); - T('173069663315189207453082599256935631042012490932166775088288608134998421563.501634405769076052916216890728266291846276235969642472697992', '0.0047456362403909994510629032945180910020103403215993419', 1); - T('2053482495939016050925647064247292586.8564263585178084561055184838104344', '-169017380666548364.127029030132409556736680020944511137856136807303318576835588339730940135466516396606957131997990393897794390319423272450917805926', 1); - T('0.000000000000000000010910521060181975906059602362732892055045562230211476996524041744413599254422619291991952288398365621', '0.00000030305366252407729760726252843133109114557519273943871397042650558626022634485938707736986954106451995454302535124160648045134106263888189201243', -1); - T('30640237540440782514115131028848069755044326052924.009093719671904737413172221325840495532222917009786084408779725171808758879846845062707492564014763', '-3587259353440149470021751420228565.933221993721894266387366123546111212496288309568577', 1); - T('-3609844484927222015828.334942620349534873041743', '-0.0000000000156030127736053462961395524', -1); - T('-0.000000000000001658158309268354898123357112970860020', '0.00000870156656843154695875521710025973209056456466507288725866658654130737892621348779455441496534083249326857675543779156635545016633454520', -1); - T('7793690039.8772263749770060309947594436823579276762079330052673201071', '0.00000612582504229588881039048444365709157972604156531064474583010238471462911044732', 1); - T('259361929252303788251189384988868.553981647414752277660626862473682638041582155222042965461036805740', '2581973829978432652835452792244347835027216577276451292110130046577998322535113805747137', -1); - T('129390414845041424.1539', '-481050029407533910303222535233605013660232501391088458212583477453819542398563643833919611592686861686523', 1); - T('-6536842573987360158150696168225611012842820808740490760317604719877598626292023302792453130948717075', '1808166007895107209370145108642559246571611053591602829484725216424576199434411727976513436930373936671801214293.1577146813', -1); - T('-0.00000000000000001874341518823681577662776773255511371168611049285', '114237294927073342220706673330602767506662522210660715163883162244.823645258897119432630', -1); - T('209836878319152205282576333546502150812644732572885749428543679539', '100955482773558958290888650903921036366095.20510847158797748', 1); - T('0.034860367', '-2.9421730845742362', 1); - T('2007681510503796232234969506243559879895607457288542877357020897246614400065889179294420464808957608804208.88977640850467103386663519609600376930', '131278041586300435030378871514179235174947880618231459980968177904236853202540068220693506990312468.7907728564640266180384190626761258847873972319', 1); - T('-0.00003161209326226016404711305', '-1063414207851209583249490599634018820893.87666259230007659491410887957198569', 1); - T('0.000000000009292700053546152515763409646834318801540357443458254443063793407983703255255220501557870090370022700786856368829747621804624', '15968290595293544207165427138659653635885728378308439140692.8375150', -1); - T('23176176.07056103153928107006846727836935989686711695293078954554503341971026457151918796526632004382422212027532033604', '1393760072065023828023446698382962763', -1); - T('231996316054324226009622737751152542708306575853606699680576.2979473704180673568018174937666939555099251408550275412841449934741053120999250311960', '-0.00000000002440470984493188283681881091476406696345434062764274153736555369694432713235258794821778157833124213579089653780125672309835719004532812124933848285', 1); - T('-20648.33905752688067', '364742683268206384344442772254773451200307358841591165850201389171780849730182355714994995466053456220045', -1); - T('-13296891.2', '0.0000006969337082421569919274143628120', -1); - T('37172409606574175943929198111868146041321294172740261.9143767823011700625959830227158253292122411741', '-9229020573653817070250688951097965429045889891091810375887510258483.86432451', 1); - T('1453535362884489285626691516310680832482298497424339784442566191993586458847756138332543022653963954995058698.15580', '-33143622616240901719883077121499909963666515277776.03911638745682103192726777541334139680165450417038099168410422389791894570097008374', 1); - T('-553544731407.954683875078093295639829399072864963186386576846602046', '192999508939696196504970050808433364133176232370021073489176763241408536439.77594027675417445364740098352288673457747531121812928831142123844168252470', -1); - T('53331368736012231282471303455408074592413207200872818.19673290825616228139358150102045346527811025445464013057081041192769618884910913', '29864250451413880308678527443574263718752000952673380.023619969863', 1); - T('0.0000000000000553335708975466510638842756141122700181892189479338073653078191086392759442569036578848626338971871999378', '-2433.862079043560961248651748450179913978912939709492727668652481303092796187', 1); - T('-131087743.6305459391', '1366119444020000948783203513489615222.675978339215788988998559226759468849819166123527857680522', -1); - T('0.0000010414667170852575270156859553928180613463762435534732908049457814385044451504107590913084220195837233515638824516134017851098411421001695264', '-66115584400599354704187997780889126098693373365.7243', 1); - T('-82580207676754903853225612109619332832646591973947655468920313639308916718.1330927060723276446644406371829999060475633907079169', '5123330295520469513903522349127462754600115573.1373461391379131781873', -1); - T('-22881636298670205035641935440359796471601928206681810441710383670980611628185637243569.2507827277681252065670282330799224', '736623256360.52046053521393940948105264615756015326648432', -1); - T('10.6557893608099767579084904', '-1549097478049581073829995395668214851867184047164638481948954196550730492470162977527257584557330.12691586584734276203352320', 1); - T('-990750595009217072591203410182612405197518047760914771032204784294635251950209321008567583494561257290737', '305183437080190842418299140880536765514850999.697345630592391581619258378412681359059795654', -1); - T('-1666770629345794574416820151105.98918396166031507208776276918495816721257656112225182497801163182679207902596802205860048306600841687864861095511', '-0.00000001067708997946', -1); - T('-14840.8160635780542830749790687168810848087921446934163740720565540416857197820946', '34080400103214533424.02376392426614849386411125899538938586694', -1); - T('0.0000000000000016877563085857940725171784798859373742', '0', 1); - T('-33190786246688543666606637359744.217563683075', '1411442489270647265365237504971682227816451192966004619718073064881.0785117653978579470036133709733772486485584681564117735482334823573897932', -1); - T('22250091784709109592.36289103127751407973011885', '-0.0000382591424878799273145128194620542054246216992721442791349175343470175713780048283294641587173331569078106987388529', 1); - T('-366783961078432297345344407263954100597261322478589032766.73282236301460555020', '-96792806400556284879273453156295184.53428387344080543516219317', -1); - T('-4428412434012469201409972157335263140259080336552387999530773415365566408064446887607002402436823395664644162540941981862539131750982436.53', '75696312592552260444421580586326708012624152846535337194315378288808695.3800482862544568581804928901090851775492837416229', -1); - T('-5875606174326455206892.166531322577891655817791602124272', '-35009191320796020285350597114063011014625404863861820815440146042482080541906069341', 1); - T('0.00000053938374247898490593751341139618225706260032227451912740608995112652267024567', '175852452557353643.3590476179170', -1); - T('0.000085430888367277502429220363288215723771185373', '8256298205292814781230409657307281433998721428415657164206.36639', -1); - T('-52206181136131234784399813236.07148184351942727', '187209867307553393739457212014673840096167129608946393051576008336453819741553745147502544430776215770796121630485677673.9724596115587907243111403', -1); - T('-116404659080562114.92071212768286143841500510345567940661701355074747251796041', '-0.0000000000049745937887893457305924521492823436496769064269458995595186839321054906563207671851820946083323716587936229045653732369629477947990064968', -1); - T('28632132796102343.642479895418482981865379537641435463355793', '3947054586925956430852945631879967537015686007064533778477126086105171929289441372934106340502853676944.8775856144613230825303', -1); - T('-857090508200151475054556597610222124661175080017618336676970123774256255824922667023873121804008646192330290129442806', '-972101984776814063384288921892937781463259806047634752997185.4385721825546355179576429', -1); - T('524360242934236610220749675664188585635590483292908774530668032546940050829944754444786102305373006086287153988223497918735', '-894112.62957', 1); - T('-4210359748516193705490258816796808454697789142688778195029295009029687568303590578372169555384509849436838285', '31544435847506925886.4380471855572374745797509775141400719180063314074764017605405542023671969250480247374160173575823024192641879318726', -1); - T('0.00000000000000000039648316584476924066746927696080890012966606658194662052', '93186692411262534487106225917322323273998860.702889752659967', -1); - T('-355809833.80952792320528641233', '80686526919845500998309999431837058.761633435885737503460027358262242', -1); - T('135973290.168739239202104579143727871073186846998465022695079917761494935246543420262539585973598640481769703017097113004230499019752720843814876125395', '-5247621701130676973811017481409509202617774437873284817094169357757993693424454590200078960274872983976142587199662655362147649', 1); - T('1722959380210301975884294773508', '9285857700957558240758114686802782724351979408646270147.79', -1); - T('-2.108499091120865886897591323930243793006036956873698734554284782307034333654312298978700143514443242015114382393092579020064541038144909798932', '0.6600963818550654763059005580259719939747091', -1); - T('239620618436021.91', '-4353302761316014755083307438727860990450226754399292536680958540457321480743198864', 1); - T('-247311515425879756100312067126621077462386243210235600848467077095397086040795417.16091213583', '-260.0692816252127916277315158672499008107826181646194964038208702225413806272325838419818326501439852500060857812695956426279373392731287', -1); - T('0.00000000000000092678002317773819293673427756278593549636636017011488156614', '17608242495263943038945700454791334002001731748793496370046578764838341632679102710921093941418183970826750981020832871212156842541461372', -1); - T('-33395325628320096104732838558355526.34337764550949233422721', '205332050719085679752333364390801841584322469575410029598277675558008298194.4403120686536479725405590603499717318334866527066993402595695782', -1); - T('1704446749770125249947219847049678079826076962438747770032889527765979216824', '-81884993441.044414114132150', 1); - T('4721008.67935983797016512145416126232413', '-0.03498350297025037393206835110018120336910941973578256042733733228736114655699947857927341334', 1); - T('181391051825403456208156.71244213486959497601037', '-776380379297651015893862651994364337679290452023660979418305268365.4639038680782187382', 1); - T('0.0000000847', '22156497747243948647802199255699537070266422639.5633433463683691278073207255994132556519453723419', -1); - T('-6.21217206985247294651387216860807591050001764817572516334758', '886061238651128.7', -1); - T('-1161719026145675243574235610276988347246026816878990032451997176103072809623554165635479395356340140107166377591092789264418175', '-0.000000018735947478220650520638945854023532902579986523026188004265750964790', -1); - T('-0.00000000867192138', '2502507910601152855229403992937540857964041297324987261262589402205840', -1); - T('932600538480920158326929132563.6421982462761565925070778172257671442090601464460086', '-20519384614533168439297510042006580413691480074684.20874560931252451163046908065695481258407657', 1); - T('-423970839089252202458.4142517215652507527660399945359115489273265486900307489264302540041681142598257029618492805741704283129188858300', '-0.0000000000000000020864723406154143161822628597022504762643109363924577177440002989153679290543872240996459231393135479147340630', -1); - T('49491330651043321769388801332639.740296423762', '0.5171693040591007989301158138415776204505193432948807746575263122468776152077', 1); - T('0.001245962897188796973717486355827294945060225829760809691400850708544510', '2093451351363855302147446056836441599578148902408761562976800394573.65341921067439897924178668210176520923190465610921336906740229984', -1); - T('2593248239529730040425963884470681420571770726127.898763080708', '7187960966847715724350587626703224781728201547468602127890467264952177647476374.8350740675946710455460463413291', -1); - T('10876110728592679732.62028952680014147540924866973673791348307668059733003935578406', '14807.3566503507754041309056234009138430821972145065785727273499408126157754376928813995906375584967247205063511345989398044710766229497805904317', 1); - T('930802811312871985657541282630.11555878286243010124609615', '-55898805297735194055894340167715838876998587195058346456322370995879163257917874310396332.8301127894058724494250937495', 1); - T('4373687004743801710.4295871291', '-2399.751203123176895978605217344914876835764318218494324419569769709590467191', 1); - T('19885418415499907740390897118745282009388.522241490773186707378554377', '-0.000000000000000000016311844734', 1); - - T('0.091650', '0', 1); - T('-31.95', '-0.0000004826766', -1); - T('8.66569234', '-5157749157', 1); - T('131.57910', '-0.00000000143732', 1); - T('-0.00000000000000069913178493', '-36.2938', 1); - T('-71.52874', '-12.621', -1); - T('0', '85409.76884', -1); - T('-0.0000000000362430662837', '-801785981.0', 1); - T('23.2', '-102599', 1); - T('35.5', '-0.000000000000000012', 1); - T('0.00000306', '-2.632', 1); - T('0', '-0.0000000000000000007729361018', 1); - T('314012.71462', '-53575.055', 1); - T('-101465', '-6', -1); - T('62740.249', '0.00000000000000000007443159314', 1); - T('6.28898', '30', -1); - T('-14.1', '20523313.15', -1); - T('-121.9', '1.9', -1); - T('9.68', '-1872.932', 1); - T('-2553.3', '413.6', -1); - T('13675.5', '-5', 1); - T('-0.000000000000000001038840261', '2.08', -1); - T('-3252618.447', '3.410', -1); - T('-7530437220', '-66.6578547', -1); - T('51.32', '-0.0002497237', 1); - T('-0.00147259804905', '-15.0', 1); - T('4517.34411456', '19.1775057', 1); - T('-14.006', '0.0000000000000748001', -1); - T('-1029.3', '2', -1); - T('1473.3', '-1.01336820638', 1); - T('5258.8', '2311.6', 1); - T('4.9', '4', 1); - T('8614797251', '5.47', 1); - T('73.173', '-1.4031382', 1); - T('502.36012', '-39996872', 1); - T('-493652528', '2187946548', -1); - T('-600552370.92', '0.011235396004', -1); - T('35.61040429', '-54899.96', 1); - T('1.447', '3.951143', -1); - T('-2814441.354', '-0.030752704', -1); - T('-0.00000000000000001062528419', '14428385.05', -1); - T('-0.00000902457', '-906093.03', 1); - T('-4.49514906109', '15640376291', -1); - T('-14.005', '55.971', -1); - T('-5.58', '5257.64', -1); - T('0.00000000013353112755', '0.1701', -1); - T('-2647318.81', '-115.6', -1); - T('-22.4', '0.00000000000000000002689757418', -1); - T('-1621301570', '-1.074', -1); - T('-7', '-21400', 1); - T('0.00000000000002041639', '1.3', -1); - T('287938.5', '0.00000027218', 1); - T('-0.00000055410455610', '2355408.35784', -1); - T('-18.363786016', '-24.12699692', 1); - T('368728547', '12', 1); - T('0', '-16302264', 1); - T('-6.7', '-127.83676', 1); - T('-0.00000000000038760', '77458475215', -1); - T('-0.0000000004193858594', '-0.000000000000000000874962299872', -1); - T('-64715.0554', '-5106.6', -1); - T('-2', '174636', -1); - T('3.6', '-9.29', 1); - T('0.0000000000000001025', '-1', 1); - T('57.19', '4728633003.0', -1); - T('-0.00000000001896809493', '27551629.4916', -1); - T('-24936.227933', '-17253964', 1); - T('0.0000000016330870', '162322.24', -1); - T('780.4', '-0.00000000000000788606669264', 1); - T('2.008', '-82.793645719', 1); - T('0.000023', '-0.0151128375', 1); - T('1.60', '-4935.4', 1); - T('10320469', '-844.9', 1); - T('4013.16757', '-4.73', 1); - T('-22955362593.9', '-3800487406', -1); - T('-0.000000000000000030708244506', '29', -1); - T('1', '0.00000000006442170', 1); - T('-13923', '0.0000000000000000019', -1); - T('-839013', '-3.11884562268', -1); - T('12.22605', '2.4', 1); - T('-2', '-751739624.9', 1); - T('-0.000000014', '-1.1', 1); - T('-0.0000000000096284906554', '-0.0000000000000000000531', -1); - T('-0.00000000000000477', '-0.000000000000010180391', 1); - T('-2919850130', '1.5', -1); - T('0', '-22.424', 1); - T('-3.8812', '-450574', 1); - T('-81939.3196', '-1.528956', -1); - T('0.0000000000000000000662', '-0.00000005609645255', 1); - T('4.43', '-0.00955682817', 1); - T('-1', '3.68', -1); - T('-2.2337', '-18398007347', 1); - T('17.31058', '-742739604', 1); - T('10', '63510.06483', -1); - T('-1679', '0', -1); - T('1', '0.00000191916669633', 1); - T('677.105', '60922901809', -1); - T('0.000000000000000014238616', '6311.5471', -1); - T('-3', '-193.6', 1); - T('-3.17', '0', -1); - T('1896.17', '0.000000420065102', 1); - T('-21.59982', '1.635168485', -1); - T('-1.1865349', '-1', -1); - T('1.2', '-0.000000000000061', 1); - T('0', '1.52', -1); - T('5.49', '20.789347414', -1); - T('-0.000000000000000023', '0', -1); - T('-4.3', '0.0000000000000001390542834', -1); - T('-50.261594', '-0.000000006027', -1); - T('98987.24', '-2', 1); - T('0.00000000000000005238041903', '-0.000000000021', 1); - T('66.97', '0.0000012729936969', 1); - T('-1471', '83268824096', -1); - T('76195', '-0.000000000000000000022355488306', 1); - T('4.00', '-1.2', 1); - T('2', '0.00000000124844398', 1); - T('-56365405', '-1.4293', -1); - T('-0.000000012648228056', '1016.22', -1); - T('-902947', '-1415195', 1); - T('90004.642', '48.208940', 1); - T('20', '-1.9', 1); - T('0.000000000001587', '-0.000000000000000000062640220', 1); - T('-400040.6', '0.00000009705375', -1); - T('6804221.367', '0', 1); - T('5', '0.00000432', 1); - T('0.00000000086378', '85674151.6', -1); - T('498.115979', '15.68', 1); - T('-7.168163', '-1079.98097073', 1); - T('-920.494', '0.000000015113372', -1); - T('-2.9', '-0.0000000000000013597214164', -1); - T('0.00000278', '0.000000000000000004069', 1); - T('452953568', '5', 1); - T('6.3', '0.00000000000000000108', 1); - T('-6.8363624', '-71489', 1); - T('0.0011232588', '-303.3', 1); - T('-14.0845', '-13.736', -1); - T('-17.02168645', '-224637', 1); - T('-4212280773', '-0.000187770', -1); - T('0.00000003418', '-0.000039', 1); - T('-43.737419409', '8835.871', -1); - T('-97593198', '-0.000000000000000000318554271', -1); - T('0.000000000000000000011383807583', '-6821.9588', 1); - T('0.00000000002148347559', '7307610.12', -1); - T('-192642.694', '0', -1); - T('0.000000000007138411375', '-0.0001386', 1); - T('-85.57', '-0.0000000000000000015380232', -1); - T('553283624.5', '-0.0002938', 1); - T('-0.08812', '4.83', -1); - T('4.9', '-436', 1); - T('-0.00024787', '0.0000000000000000804553', -1); - T('505.177864', '-1058821.702', 1); - T('0', '-9.2', 1); - T('0.000000000139878568', '20.792', -1); - T('194.1635', '26817.14', -1); - T('123', '-0.0000000557024116689', 1); - T('-21597132.5743', '74698648', -1); - T('2.0', '-22574256851.6', 1); - T('-99', '148.3755', -1); - T('-3', '-0.0000000004324672314', -1); - T('25.5594537708', '0.0000001987683', 1); - T('12.204523', '127', -1); - T('-16.1', '-0.00000000003079945018', -1); - T('5', '-231057.18', 1); - T('-0.00000000000566786', '-227438', 1); - T('0.00000000004188', '-4437894.422', 1); - T('3716202', '4.050', 1); - T('878941437', '0.0000067945', 1); - T('0.0000000000006517981381', '487.06', -1); - T('-464400975604', '0.000223', -1); - T('-0.000000000000000463803912', '-0.000000033', 1); - T('-44', '875958', -1); - T('173.04', '259.4491902', -1); - T('-1.66', '35146200.24', -1); - T('0.0000103750', '6.221887', -1); - T('-6034.59820', '0.0068365419', -1); - T('524.34546782', '44.572583393', 1); - T('8711891602', '0.000000000000000000080236', 1); - T('-1', '-0.00000000001045149282985', -1); - T('1009', '2742992.1087', -1); - T('-0.000000000443', '-26.86321244', 1); - T('3089348.2545', '-1', 1); - T('0.00000102676', '-908.53218525', 1); - T('-3.48848', '5330516.1', -1); - T('6.4616', '-1', 1); - T('1', '-9.781657', 1); - T('-3.4', '-521472970', 1); - T('-586.97', '-113.11324', -1); - T('10.2837600', '-2', 1); - T('3.74102080', '-11175.7', 1); - T('0.000000000042971203966', '-2084.4542', 1); - T('-0.000000064891438', '-2043792860.5', 1); - T('-33.47', '-1323.71284738', 1); - T('422.5186', '0.00000000073882404523', 1); - T('-218.3', '-121.56', -1); - T('0', '-1754.876', 1); - T('-248.5', '-1.1', -1); - T('22.04', '135695140693', -1); - T('-0.000000000000181', '-49.2', 1); - T('-896738.71440', '-779277.279830', -1); - T('1635.632', '-1.87', 1); - T('-0.0000000000000000003432937', '-0.0000000000000000128', 1); - T('8185.04579', '28.304207', 1); - T('-57.80410102', '-0.000000000065900351', -1); - T('1', '-0.000000000000014', 1); - T('26.13562', '0.00000000000004472101', 1); - T('-26', '-46846563.0', 1); - T('0.0000008802852', '-38865.86', 1); - T('6590981.4', '25733', 1); - T('3.10', '-0.000095648629463', 1); - T('2', '0.3926', 1); - T('1071.137629', '8717.37', -1); - T('188711', '0.00000000000000000003923', 1); - T('2.64', '1912.289', -1); - T('962.2', '37.5', 1); - T('0', '-14.3056421', 1); - T('6.434877', '41.7051341210', -1); - T('1', '-4', 1); - T('-573.491', '-7850309', 1); - T('-8506.2', '-6', -1); - T('-2436719080.97', '-487.145', -1); - T('1', '-0.000000000000013193', 1); - T('67.3', '331.473345666', -1); - T('-0.00000000000000116355724', '0.000000001349568973', -1); - T('-4380819.68', '-171', -1); - T('-263582.40400', '0.0000000000001840687158', -1); - T('31', '-0.0000000000000000073', 1); - T('-3.234555', '1', -1); - T('-0.0000009745557', '-12583.24883', 1); - T('0.000000004423159', '21297.3', -1); - T('-11954925140', '-244009.66219', -1); - T('4122.60', '-0.000000000080630710245', 1); - T('24458437758', '-29.81012', 1); - T('-3', '5826.7', -1); - T('0', '-40662', 1); - T('-242.79', '-404.29025', 1); - T('-4446.1504587', '3.763848', -1); - T('6', '0', 1); - T('6.3', '0.00000000121', 1); - T('-1.0', '-0.00000000000000000006445409', -1); - T('-9374.2957170', '58340751', -1); - T('20347413.9', '-779599.59', 1); - T('3051.205905', '17883.635', -1); - T('-1345.0889662', '420448113', -1); - T('-48.9', '0', -1); - T('-0.0006551466', '-576096.0', 1); - T('47.80', '1421535456.7', -1); - T('22280251557', '1', 1); - T('73.35790', '1788057733', -1); - T('-80114.1', '0', -1); - T('-0.000000000000707301', '9582641.8231', -1); - T('-40590618', '0.0005028', -1); - T('-26.1551', '-59129881', 1); - T('126.31', '0', 1); - T('-1', '-3.330', 1); - T('-7', '-0.0000200526', -1); - T('-3761.76241528', '-26.8', -1); - T('-0.0000003162744266', '0.0000000000000000394784057113', -1); - T('-130448.713110', '-169586.15212', 1); - T('-40.8968', '0.00000000591143', -1); - T('50781.5422696', '0', 1); - T('-0.00000000000000120', '-0.0000000859583', 1); - T('-26886.528', '-97.8', -1); - T('6.812', '-74976701.51', 1); - T('0', '-958435', 1); - T('-78.09589', '-28195701701', 1); - T('0.000000000000000042071654504', '-26576.9776', 1); - T('6.1', '0.00000000000000000089253676', 1); - T('-2744493.46', '-110.8907926', -1); - T('3.82237319650', '24.69679', -1); - T('642337.78548', '-0.0000000000000000000372333883166', 1); - T('2017548', '-21455.8709783', 1); - T('-115732.814', '-0.00000000029824235', -1); - T('5309.7', '0', 1); - T('16741188415.6', '-0.110485391', 1); - T('-1', '-3', 1); - T('-4', '6.970303371', -1); - T('-186.5987098', '37519.7898', -1); - T('-217.59', '-90791.13282', 1); - T('0', '-264309561.7', 1); - T('3303.44786015', '224832', -1); - T('-1', '8628993', -1); - T('-13840', '31.895590', -1); - T('-422.075562', '0.0000000000003673', -1); - T('-5.4', '-2.988', -1); - T('-12.28195', '-8.1', -1); - T('42.1', '8452.3', -1); - T('40.4', '1', 1); - T('-611.849', '-20937.2313506', 1); - T('-8.530', '-88795904.7', 1); - T('-5235577626', '0.778127928170', -1); - T('370711545091', '0.000000000000000210166457', 1); - T('-7.48128', '-43.9398904797', 1); - T('0.002625414898', '6', -1); - T('1', '-2', 1); - T('-6.731', '26328856', -1); - T('0.0000000000000000000284154564', '-1059603.41', 1); - T('0.000000000443838495', '0.0000000000000017', 1); - T('-3', '-18008.5115', 1); - T('-5.44111', '-0.000000000000002315', -1); - T('-0.00000000000005224', '2615.7', -1); - T('-165.123', '715.4', -1); - T('0.00000000000000000002503685', '103.89909', -1); - T('-843660', '-61054040.1', 1); - T('-0.000000000188978', '1.5162', -1); - T('-13262813', '-3.8259288422', -1); - T('-260760', '22527192335', -1); - T('-0.0000000012743953613', '3', -1); - T('-3.1', '0.0002826855', -1); - T('-0.00000034032373868', '4', -1); - T('-34.4487739299', '-3226659.36', 1); - T('-613804.983', '-0.00000000000000000162', -1); - T('1.64349914689', '-35.11364419', 1); - T('0.00000000007506', '1.5', -1); - T('-15402.36', '-25.57717', -1); - T('-0.02114629039', '-29.30', 1); - T('741.6', '272.88495', 1); - T('268', '-3.19964', 1); - T('-71.4', '21611474', -1); - T('0.000000000000007218501', '937651.654', -1); - T('199.3', '106.687430', 1); - T('-347089643', '-1.23588', -1); - T('1.1', '142.884', -1); - T('-0.00000397691', '3080.547000', -1); - T('862056251', '-0.00000000053632884', 1); - T('1', '-51972744.2', 1); - T('-0.0000000003410179', '-100.6', 1); - T('-2.888005719', '530.1', -1); - T('1', '7572161.50', -1); - T('-347802.7', '-9442843753', 1); - T('0.0023038', '780500', -1); - T('8', '0.0000000086715315930', 1); - T('25.2514', '-5.6679', 1); - T('-273.01392594', '744.7', -1); - T('1', '-0.000000000000000013732783740', 1); - T('-12110.11', '404.59869', -1); - T('-12.2', '1.409', -1); - T('-21399326578', '3', -1); - T('0.0000000000000011173', '-641.0', 1); - T('-32312.03841', '-858381873.058', 1); - T('2.914778', '-4083717632.78', 1); - T('-1', '-145434.3590', 1); - T('-0.000000000000029', '10.5027826', -1); - T('-83110.21', '-159304.18856', 1); - T('0.00000017124', '234078.4', -1); - T('-3.3135862481', '-0.0252', -1); - T('50816417030', '-0.0000000000000000000677050476', 1); - T('-0.000000121283558', '0.0000014', -1); - T('-2.6', '-51', 1); - T('-0.00000000000006649625', '0.000000000000000000158653960', -1); - T('0.10516268852', '65.301', -1); - T('-1.275', '-47740', 1); - T('-1.351', '403525711', -1); - T('2', '-4297959683', 1); - T('-164689.3', '-39864948.9721', 1); - T('9.9', '-69.2411393', 1); - T('8', '0.00000000000103945809296', 1); - T('305178.471', '3', 1); - T('0.000000000000032', '-20930.0799164', 1); - T('-77.49', '395.9622', -1); - T('-152.757430953', '-1398.02', 1); - T('-2307.747', '0.00000000000019805243698', -1); - T('-0.01218', '-7.812', 1); - T('0.0000000000000000003810', '0.0000000000000000029679541', -1); - T('10.688', '0.000000000008058682358', 1); - T('-1', '2578212', -1); - T('-3', '-56.08', 1); - T('-1093', '251.7', -1); - T('-4256.966707', '1.5', -1); - T('0.05564369', '-359117.57', 1); - T('-0.0000016653675', '21.04559509', -1); - T('0.00000000000000000560706598', '0.00000035617423088', -1); - T('-1613281026.0', '-12.8755773', -1); - T('-10117916.33', '-43368489.9992', 1); - T('0.0000000000000000023', '-0.00000000000000000072941926625', 1); - T('0.000000000000000000114', '-39574.34967', 1); - T('688605.3502', '790.091519', 1); - T('93.997217', '-1193.847608', 1); - T('70.4', '0', 1); - T('-1', '-1', 0); - T('2799.9505', '-879350400', 1); - T('26.3519', '2.7329', 1); - T('0.000000001075249872', '1', -1); - T('-1576477620.9', '0', -1); - T('-0.0000000000001887095', '0', -1); - T('-8.5', '-1699611.01', 1); - T('43.9', '269.320', -1); - T('6.861', '-13208', 1); - T('-0.00000000018976769', '4969.1', -1); - T('-0.104', '63006.503', -1); - T('4.699718', '0', 1); - T('-2398.0397', '0.000000000000912', -1); - T('-4898751.931', '1', -1); - T('157885566', '-68580.02', 1); - T('-11645818', '-3', -1); - T('-16294097.923', '-1.2097447985', -1); - T('-0.000000748731', '-454.222', 1); - T('0.00000000000010244980', '134106823.540', -1); - T('0.0000000000000015', '-170.73985', 1); - T('53.927', '6', 1); - T('1859944924', '2923512', 1); - T('-8', '2.06', -1); - T('-1173', '-2', -1); - T('2530717.95510', '-161.959593549', 1); - T('28.7750', '28975251191', -1); - T('14.6', '9.60848', 1); - T('-26625.8', '-181290682.303', 1); - T('-3216.90', '-13439', 1); - T('0.00000469235', '-1', 1); - T('-1767948', '0.000000000000000000030839', -1); - T('-0.0000732020', '133715', -1); - T('1790223107', '0.0000000064', 1); - T('-3', '-2', -1); - T('-63662276937', '3719.7312891', -1); - T('-0.0012587205', '-4217797.73', 1); - T('63388492', '-2816203811.9', 1); - T('0.000000000000030042105', '0', 1); - T('-305040732.4', '0.00070', -1); - T('13331390', '-0.00000016537084927', 1); - T('-0.0000022895', '-16976.1986920', 1); - T('876.4955249', '-243.2', 1); - T('-197.5688', '-4.29794', -1); - T('0.0000000000000000011', '6282.72', -1); - T('0.0000000000050984036283', '7.7881', -1); - T('-10495794506.9', '0', -1); - T('124856173.18', '0.00522', 1); - T('53.3', '-199', 1); - T('-1199.8', '-727.8', -1); - T('-43307.7', '-28360017461.6', 1); - T('-1', '2756856880', -1); - T('-689646263237', '464047', -1); - T('47187.7', '0', 1); - T('-0.00000000000000001510', '-3563.630', 1); - T('-4.858', '15', -1); - T('6199564.0', '4', 1); - T('0.00000008126595122', '94923.9', -1); - T('-4.55', '-0.00000050900013', -1); - T('1', '2296100.7', -1); - T('0', '1.503', -1); - T('0.000000000110946', '0', 1); - T('615423.7235', '184.8711374', 1); - T('1.05514', '0.00000000000000164', 1); - T('496.80639073', '-37990.30', 1); - T('836.9842', '7.8', 1); - T('-5860278130.33', '-0.0000000000000000150199', -1); - T('-0.007816', '-1.811145', 1); - T('0.00000000000000000006492937', '1.6', -1); - T('0', '-4.8', 1); - T('0', '3.8982', -1); - T('23', '34.3741', -1); - T('-3.0', '-0.00000000000104944', -1); - T('-0.1919', '5', -1); - T('99770.2091', '-5.7', 1); - T('51124300393', '-0.00000000017998', 1); - T('-70787232160', '-0.000133', -1); - T('1.13', '-3424775', 1); - T('-0.0000068139312402', '-0.0000000350208', -1); - T('1572.7', '-205.1', 1); - T('-0.000007355799843', '585', -1); - T('0.00000000000153614', '-20.5512', 1); - T('-0.00026', '2029254', -1); - T('2227.1', '372.5', 1); - T('6.7923522322', '7', -1); - T('1.3', '5', -1); - T('-8.54164', '-8', -1); - T('29980.875417', '0.441135960', 1); - T('299010.3', '0', 1); - T('9.27543816', '-0.00078113', 1); - T('-13.507', '5.73', -1); - T('-2724', '79823.9184', -1); - T('665153', '0.00000139621298365', 1); - T('-221507.830', '-42.2728486', -1); - T('-25748575.099', '-184839.8', -1); - T('91089', '11.053483070', 1); - T('-1.954', '-3.146', 1); - T('-118', '-0.0000000000000000253942787', -1); - T('5', '0.0000000000000000008808', 1); - T('-0.113849830', '-13.23', 1); - T('3419823', '9382356.3920', -1); - T('-209675697.9', '-1718.23', -1); - T('-0.000000000001298', '0.1258203689', -1); - T('0.00000122345524', '0', 1); - T('1227261.8715', '4', 1); - T('-0.0022031', '2.041487544', -1); - T('542.9563883', '-5854511410', 1); - T('-11659798', '-2.444', -1); - T('0.0000000000000000010320422', '633.8', -1); - T('0', '-2.8', 1); - T('-242.35223', '-2352762', 1); - T('-189681.68721', '0.0000000000009222784269', -1); - T('0.000000000000000007316', '575', -1); - T('32152.149300', '-0.00000000003464314292', 1); - T('1.02326029645', '-4', 1); - T('3', '0.00000000007128', 1); - T('-6654.74794838', '3880.34', -1); - T('0.0002021', '-52.79057', 1); - T('-0.04040990', '-0.16497', 1); - T('291339', '-8', 1); - T('-1.3669473', '0', -1); - T('0', '-8.9', 1); - T('-223743', '0', -1); - T('0.00000000000270179', '2084', -1); - - T('-5.5239e+3', '-2.2807805e+1', -1); - T('8.554e+2', '0e+0', 1); - T('-2.1176736939e+5', '2.13526332e+2', -1); - T('2.528e-2', '-1.5e-1', 1); - T('-2.1536554e-2', '-3.93e-6', -1); - T('4.853430802e-5', '-4.9e-11', 1); - T('-6.9e-3', '1.9596e+1', -1); - T('-9.93182949e+1', '-7.9983535342e-20', -1); - T('1.629795e+5', '1.58117535423e+5', 1); - T('-2.934333546e-15', '-2.093237829e-14', 1); - T('2.2916931e+1', '7.88e+2', -1); - T('7.656115e+0', '5.5885422e-10', 1); - T('0e+0', '-3.3e+0', 1); - T('-2.4327703616e+3', '1.1e+1', -1); - T('1.61903621e+6', '-2.3444006423e+2', 1); - T('4.5332e+4', '3.281123867e+1', 1); - T('-7.9e-4', '0e+0', -1); - T('-2.6e-19', '-5.4489933e+6', 1); - T('5.877152e+1', '1.5125e-2', 1); - T('6.293000381e-1', '7.2e+1', -1); - T('1.072062222225e+10', '7.521052067e+0', 1); - T('-2.9744557e+7', '0e+0', -1); - T('-1.0235e-13', '-3.671886e+0', 1); - T('-2.06364e-4', '6.2113337e-3', -1); - T('-7.02e+0', '-1.1348644434e+3', 1); - T('-3.57688146e+3', '3.81547e+2', -1); - T('2.9527098536e+3', '1.32080504447e-4', 1); - T('-2.6286e+1', '3.8e+0', -1); - T('-3.45054603e+2', '-9.88229e-15', -1); - T('-2.469e+0', '-3e+0', 1); - T('-8.369800004e-4', '1.4e-17', -1); - T('-1e+0', '4e+0', -1); - T('-3.0829216081e+2', '-3.08e+1', -1); - T('-1e+0', '-5.756e+1', 1); - T('-8.511e+0', '3.126324e+6', -1); - T('2.4474011949e+4', '1.12649e+2', 1); - T('-2.57868e+4', '-1.03178e+1', -1); - T('1e+0', '9.5177e+1', -1); - T('-9.8069663157e-6', '1.4532689e+5', -1); - T('3.721e+1', '-2e+0', 1); - T('-9.7657879751e+10', '-5.67e+2', -1); - T('-4.8657905e+6', '-2.17381281e+1', -1); - T('-4.20131e+0', '-1.3179640655e-8', -1); - T('1.6e+0', '0e+0', 1); - T('5.16068325659e-4', '1.269e+1', -1); - T('9.91969e+5', '0e+0', 1); - T('2.32e+0', '3.69e+1', -1); - T('5.685149e+2', '3.694e-13', 1); - T('-9.0148e-5', '0e+0', -1); - T('-3e+0', '-8.7855e-7', -1); - T('1.3669489e+3', '1.33866e-4', 1); - T('-2.6e+1', '1.36976797894e+3', -1); - T('4.6e+0', '0e+0', 1); - T('-7.2e-8', '1.971355e+2', -1); - T('1.19755e-5', '7e+0', -1); - T('-3.46e+0', '-3.7715361e-11', -1); - T('3.25762245146e+6', '-4.02e+0', 1); - T('1.3174225699e+7', '9.6222695655e+10', -1); - T('6.6e-13', '-5.23193346205e+4', 1); - T('-3.873e+3', '-1.23681175e+3', -1); - T('-1.19869e+5', '-8e+2', -1); - T('2.027381656e+3', '1.47629351439e+11', -1); - T('-1.467418e-17', '9.0073930856e+5', -1); - T('7.1e+0', '6.116301582e+2', -1); - T('-1.7883916e+5', '3.533e-17', -1); - T('8.8e-11', '-5.9707897e-1', 1); - T('-5.337e+3', '4.6614e-13', -1); - T('1e+0', '-3.1e+0', 1); - T('-3.05920196e-6', '-4e+0', 1); - T('-1.692375e-10', '2.29981330096e+6', -1); - T('5.19341813e-1', '6.1e+0', -1); - T('5.796e+3', '-9.386773281e-8', 1); - T('9.117497e+0', '0e+0', 1); - T('6.962934e-8', '1.413982e+2', -1); - T('2e+0', '1.4e+1', -1); - T('-2.04e+0', '-1.30300025e+9', 1); - T('1.57647e+1', '3.0862783894e+0', 1); - T('-4e+0', '7.1e+1', -1); - T('1.21e-6', '-2.109584154e+10', 1); - T('6.55669245e+3', '-8.15e-8', 1); - T('-8.3307e+2', '-9.1476874e+7', 1); - T('0e+0', '-3.64676e+5', 1); - T('-1.2803e+2', '7.2908749e+3', -1); - T('3.2263e+3', '-1.43355e+1', 1); - T('4.92751482244e-18', '1.3747248256e+3', -1); - T('8.20054755e-10', '6.2348e+2', -1); - T('-1.06e+1', '-7.2569084631e+4', 1); - T('1.86e+2', '3.76613527e-5', 1); - T('3.33652e+3', '5.1e+1', 1); - T('3.665307673e+8', '3.31344e+5', 1); - T('-7.341261161e+2', '-2.98910916e+7', 1); - T('6.24638573245e+5', '4.47893448327e+2', 1); - T('1.23e-8', '-5e+0', 1); - T('4.469176e+5', '-2.09863e+3', 1); - T('-2.72624816161e+3', '0e+0', -1); - T('-6.78251e-20', '-6.837e-1', 1); - T('6.2456922e-6', '0e+0', 1); - T('6.2e-4', '4.40516e+4', -1); - T('-7.624e+2', '-3e+0', -1); - T('-5.22549619458e+0', '-4.0866914233e+9', 1); - T('-9.51999532e+7', '-2e+0', -1); - T('-1.07321e+2', '-1.3e+0', -1); - T('-5.405555671e-6', '8.0306e+1', -1); - T('2.2e+0', '6.49e-17', 1); - T('3e+0', '2.2e+0', 1); - T('-1.12e+2', '3.4165375e+1', -1); - T('-2.36978379e+4', '-4.2e+0', -1); - T('-8e+0', '-6.42e+0', -1); - T('-3.2e+1', '6.17231707e-19', -1); - T('-4.8454741051e+1', '4.3339e-10', -1); - T('4.29e+0', '3.28376306e+4', -1); - T('-6.33089e+1', '-5.7065758354e-19', -1); - T('0e+0', '-3.31e-7', 1); - T('-2.18973e+2', '1.88333703659e+4', -1); - T('-1.67e+2', '3e+0', -1); - T('0e+0', '9.7605e-12', -1); - T('1.294433816e+0', '-1.1e+1', 1); - T('-1.4246177e+3', '-1.043532436e+8', 1); - T('-1.0531e+1', '2.2268899e-6', -1); - T('-1.5611e+3', '1.59757e+0', -1); - T('3.3638160556e+11', '6.29136402e+6', 1); - T('-7.7326244542e+2', '-9.6e+0', -1); - T('-3.593606997e+8', '-4e+0', -1); - T('9.4433e+2', '-1e+0', 1); - T('-1.0131e-9', '-4.551632556e+9', 1); - T('1.61735e+5', '-6.550194286e+9', 1); - T('3e+0', '-8.14e+3', 1); - T('-3.492e+0', '8.85393125e+2', -1); - T('-9.3678169131e-19', '-1.98802069e+4', 1); - T('-4.39338019e+7', '1.07850051e-15', -1); - T('-1.1677e+0', '2.22825374e+8', -1); - T('-3.476e+0', '6e+0', -1); - T('1.453e+0', '-6.34599e-7', 1); - T('1.789e-9', '0e+0', 1); - T('-2.92933e+4', '5.802095e+4', -1); - T('9e+0', '2.63702e-7', 1); - T('-6.0696e+4', '9.46475e+5', -1); - T('-1.508052e+6', '2.45600810354e+0', -1); - T('6.83354e+1', '1.93e-12', 1); - T('-1.6e+0', '-2e+0', 1); - T('-7.4275644e+5', '-6.1587e-14', -1); - T('0e+0', '3.540869872e-9', -1); - T('-7.86e+0', '8.041734e+6', -1); - T('-8e+0', '1.569e+1', -1); - T('2.0839e-18', '1.2848955034e-14', -1); - T('6.84909e+3', '2.19e+1', 1); - T('5.556062e+3', '1.037e-12', 1); - T('-1.011918e-9', '3.52315476249e+0', -1); - T('-1.2e+2', '-5.8677085e+1', -1); - T('1.5e+0', '-8.2951e-8', 1); - T('5.254e+0', '-2.08338e+3', 1); - T('8.272e+0', '0e+0', 1); - T('-2.3496e+3', '-1.74217696625e-1', -1); - T('2.33e+0', '-6e+0', 1); - T('8.138135061e-6', '1.52e+1', -1); - T('-2.691357e+5', '1e+0', -1); - T('4.277011e-13', '2.1978e+4', -1); - T('-4.164225e+0', '3.94601989492e-6', -1); - T('-1.32e-18', '-3.94e-3', 1); - T('-2.443211e-11', '2.02e-8', -1); - T('-1.2e+0', '-3.2e+1', 1); - T('4.7652754554e+7', '-2.1e-11', 1); - T('2.02136500541e+9', '-2.77170882e+2', 1); - T('-1.65e-2', '-2.4039e+3', 1); - T('1.8172e+1', '-6.3e-5', 1); - T('1.8703827209e-10', '-1.46184e+4', 1); - T('-1.11606903e+6', '-2.8e-6', -1); - T('-7.84180535e+0', '-6.9715e+2', 1); - T('-1.6095371e-5', '-4.007e+2', 1); - T('2e+0', '2.7730114619e+0', -1); - T('1.3694403e+7', '-3.14014263471e-3', 1); - T('3e+0', '2.4553237278e+3', -1); - T('-3e+0', '-2.78756184842e+11', 1); - T('-1.2522e+2', '-7.7e+1', -1); - T('4.491e-18', '-1.196e+3', 1); - T('-3e+0', '-2.78811358e+4', 1); - T('-3.5481789e+3', '1.6004994927e+5', -1); - T('1.9963146e+6', '-6.923e-1', 1); - T('-1.37573e-12', '2.072e+2', -1); - T('6.570067306e-1', '3.73554490286e-16', 1); - T('3.0659071736e-15', '6.946525e+1', -1); - T('-5.346e+0', '1e+0', -1); - T('8.55e-9', '7.9e-11', 1); - T('-7.5096624e+2', '3.40622424e+5', -1); - T('2.219404561e-14', '5.47749e+0', -1); - T('3.000476e+2', '-1.754092582e+1', 1); - T('0e+0', '-1.69774e+3', 1); - T('2.993e+0', '-1e+0', 1); - T('2.7528038851e+1', '-3.945799123e+4', 1); - T('-6.6266e+2', '-4.5e-19', -1); - T('9.204609e-14', '1.25862e+5', -1); - T('-7.0237408e+5', '-4.56413483775e+3', -1); - T('4.8481576e+2', '-6.53713e+3', 1); - T('1e+0', '1.103e+2', -1); - T('6.57977e+2', '-3.852e-16', 1); - T('3.861e+2', '-6.2072117462e+5', 1); - T('-6e+0', '1.3494901111e+6', -1); - T('-5.870696e-1', '-3.801808e+1', 1); - T('-3.83761721e+8', '8.081107501e-5', -1); - T('6.50057174e+5', '2.0206519e-12', 1); - T('5.5207e+4', '-2.48e+2', 1); - T('0e+0', '1.05116516384e+11', -1); - T('-1.75279284e+4', '3.899762267e-1', -1); - T('-1.6197e+0', '4.3274e+4', -1); - T('1.256294e+6', '-5.58921e-15', 1); - T('3e+0', '2.0586937916e-17', 1); - T('-3.28553e-13', '-1.18e+1', 1); - T('-2.81418e+5', '1.72529458e-12', -1); - T('7.8666421e+3', '5.9153e+0', 1); - T('4.84347589e-8', '2e+0', -1); - T('3e+0', '-2.6655512e+2', 1); - T('6.2696e-10', '-2.054382974e+1', 1); - T('6.1413274e-2', '0e+0', 1); - T('-2.9095e-18', '-6.9975956783e+8', 1); - T('4.01e-20', '-7.5588e-6', 1); - T('9.490622e-18', '-2.77e+0', 1); - T('-1.0267e-14', '-8.790091e-9', 1); - T('-4.077591e-14', '-3.0259558246e+0', 1); - T('-2.8261e+2', '-4.99857e+0', -1); - T('9.899113e+1', '1e+0', 1); - T('5.5e+0', '-7.0265e+0', 1); - T('5.286e-7', '-4.3972682e+2', 1); - T('1.5520187e+6', '1.150018e+2', 1); - T('-2.04e-10', '-4.0474e+2', 1); - T('-2.32245517e+7', '-4.96976e+4', -1); - T('-3.6487688611e-10', '-1.1763503e+2', 1); - T('8.3414625e+0', '0e+0', 1); - T('9.905071e+6', '-5.9541e-4', 1); - T('1.984307e+4', '-2.4291e-7', 1); - T('-1e+0', '-1e+0', 0); - T('2.060415969e+9', '-2.03455e+2', 1); - T('3.1982e-19', '-1.993945e+3', 1); - T('3.093739e+1', '-1.99128676855e+0', 1); - T('1.881e+1', '-1.09028754e+5', 1); - T('0e+0', '-4.7092316e-14', 1); - T('-9.455374693e-10', '-9.45812534991e+6', 1); - T('-1.67881e+4', '-2.1683630866e+3', -1); - T('6.3514013642e-17', '-4.5e+0', 1); - T('1.20179765e-20', '4.9098e+3', -1); - T('0e+0', '-7.476983768e+1', 1); - T('-8.5797e+2', '2.1e+0', -1); - T('-2.75e+1', '-1.749e-18', -1); - T('-1e+0', '8.4e+1', -1); - T('7.110682e+4', '8.5646556e+2', 1); - T('-3.1875423048e+6', '7.216e+1', -1); - T('-1.41969e+0', '0e+0', -1); - T('-3.707432e+6', '1.5048071e+2', -1); - T('-2.65447780189e+11', '2e+0', -1); - T('3.808865e+6', '-7.22140745e-10', 1); - T('2.972544e+3', '0e+0', 1); - T('1.142002886e-2', '-3.063e+0', 1); - T('-3.292e-15', '-2.2e-1', 1); - T('-9.29480350675e-6', '9.4830355594e+4', -1); - T('-2.49267401e-19', '3.3296905e+4', -1); - T('3.5057e+4', '1.2204e+3', 1); - T('2e+0', '9.51e+1', -1); - T('3.87279e+5', '-3.916681548e-13', 1); - T('7.775e+2', '1.814199961e+2', 1); - T('2.35095e-7', '9e+1', -1); - T('-8.077537e+2', '1.477341929e-7', -1); - T('-4.05364541e+3', '-5.1772081e+8', 1); - T('-8.0808881e+2', '-9.006e+1', -1); - T('-1.408092e+5', '-3.86832e+2', -1); - T('5e+0', '2e+0', 1); - T('-2.7424908566e+0', '-1.5471519e+0', -1); - T('7.31598e+0', '6.617089e+2', -1); - T('4.634e-7', '-2.8214e+3', 1); - T('-3.67e+2', '1.2e-18', -1); - T('2.5658e-5', '6.99742e+3', -1); - T('3.7635921e+2', '-2.01901e-17', 1); - T('-4.8483140421e+9', '-3.02562e+1', -1); - T('0e+0', '-2.9395143209e+8', 1); - T('-2.8599503512e+7', '5.35e-1', -1); - T('-1.7e+1', '-9.66381e+0', -1); - T('1.72e+1', '1.0349e-1', 1); - T('1.28429e+3', '2.0794611e+0', 1); - T('1.01e+0', '-5.7758e-11', 1); - T('2.227909e+5', '5.70358533e-7', 1); - T('-1.46175e+2', '-1.17142e+3', 1); - T('-9.231e+3', '1e+0', -1); - T('-1.959219085e+3', '3.71e+1', -1); - T('5.1e+0', '2.93e+2', -1); - T('-1.72022209707e+1', '0e+0', -1); - T('1.1e+0', '1e+0', 1); - T('1.71906029185e+5', '-2.14019e+0', 1); - T('2.3e+0', '-1.5055635614e+9', 1); - T('2.7786e+1', '1.061015128e+9', -1); - T('-1.56275984e+4', '1.09e+0', -1); - T('2.19791673e+1', '-3.104e+2', 1); - T('-4.3337886e+7', '4e+0', -1); - T('1e+0', '-4.22059e-7', 1); - T('3.365e+3', '-1.554e+2', 1); - T('1.1204042327e+10', '-1.3423178346e+10', 1); - T('2e+0', '-4.226459262e+1', 1); - T('-2.15204e+5', '5.958e+0', -1); - T('-9.99386226e+4', '0e+0', -1); - T('-1e+0', '-1.66246413e+7', 1); - T('4.9173e+2', '5.850707e-18', 1); - T('4.9e+0', '-4.7875e-8', 1); - T('-3e+0', '0e+0', -1); - T('1e+0', '-8.0083e-2', 1); - T('-7.83025222e+8', '-5e+0', -1); - T('-4.974944e+4', '3.1477230359e+10', -1); - T('7.180136071e+3', '-1.0544157071e-9', 1); - T('1.6665814118e-3', '1.73898e+3', -1); - T('-2.525921789e+1', '-3.93e+0', -1); - T('-1.734618e-16', '-1.6371419e-20', -1); - T('1.6444334e+6', '-2e+1', 1); - T('-1e+0', '2.072822964e+9', -1); - T('-6.473e-9', '-9.162534e-5', 1); - T('-3.1e+0', '-3.24e+0', 1); - T('1.6655834e+7', '-3.0374218803e+6', 1); - T('2.391e+0', '-3.907e+1', 1); - T('-1.7022720963e+3', '2e+0', -1); - T('4.454083713e+9', '2.0091e+4', 1); - T('-1.0366217734e-15', '-6.721993e+5', 1); - T('-5.7809e+4', '3.784169e+1', -1); - T('1.24172537e+5', '6.3e-9', 1); - T('4.2774283e-9', '2.4637e+1', -1); - T('1.6237405102e+10', '1.6962e-1', 1); - T('1.918662e+2', '1.544681756e+8', -1); - T('1.0276881e+4', '1.788601e+0', 1); - T('1.029335e-8', '1.18168265e+6', -1); - T('-2.55327e+2', '2.5825834e+6', -1); - T('0e+0', '1e+0', -1); - T('-8.909e+2', '-1.73e+2', -1); - T('5.67e+2', '2.56525383318e+5', -1); - T('-8.96e-20', '-8.32900609e+3', 1); - T('1.592758866e+9', '-3.872e+0', 1); - T('-5.639641852e+7', '8.2009e+4', -1); - T('2.9e+0', '4.5e+0', -1); - T('1.1865649388e+5', '1.78418807471e+3', 1); - T('2.07011921e-13', '2.63e+0', -1); - T('3e+0', '-2.21e+0', 1); - T('-9.34727321093e+11', '-6.86793197512e+11', -1); - T('3.9e+0', '4.2973482815e+4', -1); - T('1.227147e+5', '-1.359464668e-2', 1); - T('-5e+0', '-3.3986e+4', 1); - T('6.31103133e+7', '1.94315936e+6', 1); - T('-3.96418e+4', '-8.7168221121e+4', 1); - T('-1.64e+1', '-3.33576978e+6', 1); - T('4.952370705e-11', '-6.63267265e+2', 1); - T('1.253e+1', '-6.14622e+2', 1); - T('0e+0', '-1.442321328e+9', 1); - T('-1.180943e-6', '-9.42e-1', 1); - T('-1.037276289e+7', '-1.5944116485e-8', -1); - T('1.55813448081e+11', '1.1285443e+3', 1); - T('-2.28254e+1', '-4.9e+0', -1); - T('-1e+0', '4.594e+0', -1); - T('-1.07058028623e+0', '2.845e+3', -1); - T('7.011e+1', '0e+0', 1); - T('-4.5094e+2', '1.1459094e+3', -1); - T('2.85e+0', '-1.45112e+4', 1); - T('-1.09547404e+5', '-1.36411488349e+2', -1); - T('-3.0552725e+2', '-2.837293625e+9', 1); - T('-1.31e-5', '1.13782957e+2', -1); - T('-2.8209016e-20', '1.18e+0', -1); - T('-1.07667044e-19', '1e+0', -1); - T('1.3162128667e-10', '1.2689615338e+9', -1); - T('1.66716908e+6', '-1.2430993e-4', 1); - T('1.11122e-2', '-3.77323705304e+7', 1); - T('-7e+0', '5.5865954e+4', -1); - T('-3.15283960233e-16', '-3.2047044e-8', 1); - T('2.0846621548e+1', '3.92e-6', 1); - T('-2.8674e+1', '-1.31313084e-17', -1); - T('1.8332852e-17', '1.341e+1', -1); - T('9e+0', '-9.3e-12', 1); - T('-4.02592028644e+5', '-1.99028e+3', -1); - T('-1.541408372e+6', '-9.28e+0', -1); - T('1.5e+1', '9.783799e+2', -1); - T('-8e+0', '2.047e-7', -1); - T('1.81e+2', '1.43604e-20', 1); - T('0e+0', '-4.9101e+4', 1); - T('-1.78049643e+0', '-4.45673358e+0', 1); - T('1.722535667e+1', '-8.19890866e-9', 1); - T('-6.356e+3', '-2.77223e+2', -1); - T('-8.13e+0', '-1.3129112e+7', 1); - T('-6.2012143e-7', '-4.08330939e+4', 1); - T('-2.11991e+0', '4.592978e+2', -1); - T('-4.773043e+3', '-1.0842355e+2', -1); - T('-9.894928e+0', '6.1e-4', -1); - T('-8.7990384e-10', '-7.1295894e+6', 1); - T('-9.44946188e-18', '2e+1', -1); - T('7.76614e+0', '1.065670038e-20', 1); - T('-4.9149e+2', '1.347155498e+9', -1); - T('-2.869032e+1', '-5.892838e+4', 1); - T('-5.6497e+4', '2.2954968e+8', -1); - T('-7.75e+2', '-3.45480796e+0', -1); - T('-3.3e+0', '-6.836e+1', 1); - T('-4.6e+0', '-6.92355437e-8', -1); - T('0e+0', '-9.3e-10', 1); - T('-2.5751542e-13', '-7.26665e+5', 1); - T('-9.1e-19', '-2.22e-1', 1); - T('-3.0422594e+4', '-1.83546441e+8', 1); - T('-2.15991727483e-12', '3.70254e+2', -1); - T('-1.310483e+2', '-1.00310363e+0', -1); - T('1.272382447e+3', '1.54639612e+8', -1); - T('-8.6e-16', '1.800458e+6', -1); - T('3.7121867683e-11', '1.041097e-12', 1); - T('2.1025817638e+1', '1.7e+0', 1); - T('-3.282377e-1', '0e+0', -1); - T('1.6002692836e+7', '5.2967e+3', 1); - T('-6.59716e+5', '-1.499e+1', -1); - T('-1.489486e+3', '-2.496418887e+5', 1); - T('1.191e-18', '1.12654e+1', -1); - T('-1.28e+2', '1.3e+0', -1); - T('3.319e+3', '-7.45877113531e+11', 1); - T('-2.28982321e+8', '2.01314e-19', -1); - T('-5.569624e+5', '-3.737525683e-9', -1); - T('2.510676e-10', '2.3795e-11', 1); - T('-1.26058e-7', '6.52e+1', -1); - T('0e+0', '-1.21538e-11', 1); - T('3.75822101026e+8', '-4.6e+1', 1); - T('0e+0', '5.18418122608e+11', -1); - T('-5.2e+0', '-1.522025e+1', 1); - T('3.91627e+0', '-1e+0', 1); - T('8.625694625e+0', '4.003945628e+5', -1); - T('-1.5e+1', '1.0794745045e+8', -1); - T('-6.683982e-9', '1.3286e-5', -1); - T('2.148885316e+8', '-6.403e+3', 1); - T('-3.393964981e+1', '1.17e+1', -1); - T('-2.171e+0', '2.44e-19', -1); - T('4.974e+2', '4.441821841e+1', 1); - T('3.9772342e+7', '-1.2177e+1', 1); - T('-5.6487205452e+10', '1.616928e+0', -1); - T('2e+0', '-2.4219201896e+8', 1); - T('4.1809266e+0', '3e+0', 1); - T('3.5648124786e-6', '6.165789278e+0', -1); - T('-6.0454e+4', '-3.3e+0', -1); - T('-1.01e-7', '1.01747e-2', -1); - T('-1e+0', '4.6e-9', -1); - T('7.181192e-6', '4.81e+2', -1); - T('-2.14830776492e+11', '1.56e+2', -1); - T('-1.60213948e-3', '5.539e+3', -1); - T('1.678951271e-7', '5.34118751e+7', -1); - T('7.293818e+5', '2.373e-10', 1); - T('9.65991e+0', '5.66e+0', 1); - T('2.315503e-6', '-6.93e+0', 1); - T('2.19017494955e-3', '-7.4e+1', 1); - T('5.43469e+6', '0e+0', 1); - T('-2.330431561e+3', '1.52623e+1', -1); - T('8.463333e+6', '-2.4e+1', 1); - T('-2.12e+2', '1.5278e+3', -1); - T('-9.61324414111e+11', '1e+0', -1); - T('5.1e+0', '-4.03e+1', 1); - T('0e+0', '8.77053e+1', -1); - T('2.7e+0', '-4.654243671e+4', 1); - T('-2.61595754e+2', '3.4371351e-3', -1); - T('1.9236e+4', '0e+0', 1); - T('1.28744e+5', '1.588e+3', 1); - T('-7.12124e+3', '2.63043e+5', -1); - T('-2.87e+2', '-8.99490089e+8', 1); - T('-9.1451e+1', '-5.621833e+6', 1); - T('-1.458423128e+3', '2.45879369e+4', -1); - T('-2.2e+0', '5e+0', -1); - T('6.7158e+2', '2e+0', 1); - T('-1.861834055e+1', '3.46e+0', -1); - T('-1.42e-19', '-4.4399e+2', 1); - T('-7.7995e-19', '-3.37524763e+8', 1); - T('6.245562401e+3', '-1.9e+0', 1); - T('-7.4396248258e+8', '1.3184e+1', -1); - T('4.2194232e+0', '-9.5e+0', 1); - T('-2.09763179071e+0', '-2.9462e+3', 1); - T('8.7009653053e-4', '5.89164955e+7', -1); - T('-7.256717176e+1', '1.1256e+3', -1); - T('-2e+0', '1.74987486218e+6', -1); - T('-2.8e-2', '-9.439e+0', 1); - T('4.3e-18', '8.421e-3', -1); - T('-3.635286e-8', '1.27536e+2', -1); - T('9e+0', '-8.95518866e+6', 1); - T('7.7059164e+7', '-1.8e+0', 1); - T('1.75973e-16', '4.9e-4', -1); - T('-5.956e+3', '1.1918794e+1', -1); - T('2.07e+1', '0e+0', 1); - T('4.152e+0', '1.850529e-20', 1); - T('4.74e+0', '-5.322106e-18', 1); - T('1.46e+0', '-4.00403e+1', 1); - T('2.36505254e-2', '1.22e-13', 1); - T('5.4446e+3', '-6.5681622266e+1', 1); - T('-5.298322e+4', '-2.662708719e+8', 1); - T('-1.7590457129e-9', '-3.93970854954e+8', 1); - T('5.65218e+0', '-2.996191168e+7', 1); - T('2.9632e-6', '2.19966262214e-20', 1); - T('-4.416e+0', '-1.813776e+4', 1); - T('-1.974e+0', '-6.8e+0', 1); - T('-1.287908e+5', '-9.04795615e-3', -1); - T('-1.2376068058e+2', '1e+0', -1); - T('-2.8599877887e+0', '0e+0', -1); - T('1.4818911e-14', '3.170254e+4', -1); - T('2e-13', '-1.7343311e+6', 1); - T('-1e+0', '2.697691e+3', -1); - T('-1.69563735921e+7', '-1.18e+0', -1); - T('-1.221141e-16', '1.56460805e+8', -1); - T('3e+0', '3.23926451e+3', -1); - T('1.3233e+1', '3.15e+0', 1); - T('-1.78284e+6', '0e+0', -1); - T('1.9075e-5', '-6.4991913129e+1', 1); - T('5.55554e+5', '-6.18098e+6', 1); - T('6.271294e+6', '0e+0', 1); - T('2.6978874e+4', '1.3646501e-2', 1); - - T('24920', '2492', 1); - T('52923623235884.48110534', '52923623235884.4811053', 1); - T('-1018638522.07495421826817980', '-1018638522.0749542182681798', 0); - T('0.00000364136900', '0.0000036413690', 0); - T('-135859105.5', '-785094047.8293510', 1); - T('-4.1657902332676', '-4.165790233267', -1); - T('-19727509864588.3074', '-19727509864588.307', -1); - T('-0.0000000004020750915', '-0.000000000402075091', -1); - T('-1387043910095766779', '-138704391009576677', -1); - T('7.140', '7.14', 0); - T('-0.0000000083734544824491024997299767812', '-0.000000008373454482449102499729976781', -1); - T('-0.000000000000000000739', '-0.00000000000000000073', -1); - T('0.000000000000000673058992451447407822', '0.00000000000000067305899245144740782', 1); - T('107795751025937925', '10779575102593792', 1); - T('-0.000000140098925302534364687090608708', '-0.00000014009892530253436468709060870', -1); - T('-96807628344097344020361511087', '-9680762834409734402036151108', -1); - T('5236305598733477493821144', '523630559873347749382114', 1); - T('0.000012299669952207', '0.00001229966995220', 1); - T('-0.000000000026183583081', '-0.00000000002618358308', -1); - T('18157090114632.3949228869562', '18157090114632.394922886956', 1); - T('-8659730.88830', '-8659730.8883', 0); - T('92367.0595855628821', '92367.059585562882', 1); - T('-1191', '-119', -1); - T('0.809', '0.80', 1); - T('0.000000000000000000518579249419024975384099', '0.00000000000000000051857924941902497538409', 1); - T('196.516', '196.51', 1); - T('1902.90', '1902.9', 0); - T('0.012', '0.01', 1); - T('2521110', '252111', 1); - T('-24795', '-2479', -1); - T('3134.367349', '3134.36734', 1); - T('69006142577114620504.8', '36.0', 1); - T('-437609971173626.98792503', '-437609971173626.9879250', -1); - T('-36.11385408453080506', '-36.1138540845308050', -1); - T('1686.321277', '1686.32127', 1); - T('-84595.85616391029195941', '-84595.8561639102919594', -1); - T('-0.00000000000308289301068', '-0.0000000000030828930106', -1); - T('5', '273372254047642077337', -1); - T('52666073577.1290781606630097094', '52666073577.129078160663009709', 1); - T('0.000000000000000043918', '0.00000000000000004391', 1); - T('-139225776437585184717785093.38', '-139225776437585184717785093.3', -1); - T('-5584.1138579', '-5584.113857', -1); - T('-129253519658715.0', '112386803', -1); - T('-2290.5184387881314043589', '-2290.518438788131404358', -1); - T('-74094153218599401.874188', '-74094153218599401.87418', -1); - T('15.351267988724923583838', '15.35126798872492358383', 1); - T('135.603302', '135.60330', 1); - T('-50.57278382', '-50.5727838', -1); - T('216.98487', '216.9848', 1); - T('-21134.0', '-1', -1); - T('36667803450713332911.35544', '36667803450713332911.3554', 1); - T('-9554701478470869.90', '-9554701478470869.9', 0); - T('-5', '-0.000000022007149864827', -1); - T('-156737758.9503928528394581', '-156737758.950392852839458', -1); - T('1364938.01055262931', '1364938.0105526293', 1); - T('-439149.168324', '-439149.16832', -1); - T('15.521233412177260268175125', '15.52123341217726026817512', 1); - T('229652.78244076556531565167292', '229652.7824407655653156516729', 1); - T('-3121052385.065', '-3121052385.06', -1); - T('-717120317616.005596758', '-717120317616.00559675', -1); - T('50773299385872514328347782', '5077329938587251432834778', 1); - T('0.000000000000000000130149421115895602435542', '0.00000000000000000013014942111589560243554', 1); - T('0.00000000000000002742431130831653697264', '0.0000000000000000274243113083165369726', 1); - T('19079804604.0447062', '19079804604.044706', 1); - T('-269212379960084901007498.0473', '-269212379960084901007498.047', -1); - T('-0.358400680', '-0.35840068', 0); - T('-21574492412094843183898085', '-2157449241209484318389808', -1); - T('-71845410882550730027450926946', '-7184541088255073002745092694', -1); - T('1544.607426323', '1544.60742632', 1); - T('127.8549399242576867890', '127.854939924257686789', 0); - T('-95462566651371.86749077', '-95462566651371.8674907', -1); - T('1854469.010632854371428790793', '1854469.01063285437142879079', 1); - T('-0.0000000000511087722639524', '-0.000000000051108772263952', -1); - T('0', '-312658443822318131.65429523', 1); - T('-2343445339.96760', '-2343445339.9676', 0); - T('0.00000000000000147', '0.0000000000000014', 1); - T('1844372.33', '1844372.3', 1); - T('22982.419674718', '22982.41967471', 1); - T('108594857698581658410.0737', '108594857698581658410.073', 1); - T('-3.033420', '-3.03342', 0); - T('55810550.26594153069059591', '55810550.2659415306905959', 1); - T('628859628.7558', '628859628.755', 1); - T('-547.10', '-547.1', 0); - T('-0.0000000000000000009984305906072622822830075391', '-0.000000000000000000998430590607262282283007539', -1); - T('-41958933743619342422791223708', '-4195893374361934242279122370', -1); - T('-2167382.31949', '-2167382.3194', -1); - T('-0.000000242769356', '-0.00000024276935', -1); - T('175535', '17553', 1); - T('13196567561552073746181107', '1319656756155207374618110', 1); - T('-836.283', '-836.28', -1); - T('-151.6480011', '-151.648001', -1); - T('0.00000000000002112201668247567119900', '0.0000000000000211220166824756711990', 0); - T('-291644372.8176', '-291644372.817', -1); - T('2281', '228', 1); - T('0.000000324729973', '0.00000032472997', 1); - T('-76.8', '0.0001732215889415949412350821', -1); - T('0.0000001164790050629621890224', '0.000000116479005062962189022', 1); - T('-14.262813961', '-14.26281396', -1); - T('-4785353721725589457.76', '-4785353721725589457.7', -1); - T('-0.000000000048', '-0.00000000004', -1); - T('-5324145565493', '-532414556549', -1); - T('46', '-0.000000000566010149624486839', 1); - T('-5225949604210842406679429.93784', '-5225949604210842406679429.9378', -1); - T('-1.222170392', '-1.22217039', -1); - T('-0.00000000000000010679843092306603352830', '-0.0000000000000001067984309230660335283', 0); - T('-844323207816052268597', '-84432320781605226859', -1); - T('-273294.449058068769224', '-273294.44905806876922', -1); - T('-0.000061510623375', '-0.00006151062337', -1); - T('-12', '-1', -1); - T('-1146774191544920686.21847', '-1146774191544920686.2184', -1); - T('7308692', '730869', 1); - T('14463865367.0965', '14463865367.096', 1); - T('0.1790976', '0.179097', 1); - T('-0.00000088251244578915638133974523907', '-0.0000008825124457891563813397452390', -1); - T('611.7', '0', 1); - T('-309574907706487960682.9', '0.67178678369791512733235574', -1); - T('-2889196478.141321900', '-2889196478.14132190', 0); - T('163.97', '163.9', 1); - T('-2194652189.27', '-2194652189.2', -1); - T('-1259.4915400', '-1259.491540', 0); - T('-30128337', '-3012833', -1); - T('-403904222820946941.150781058', '-403904222820946941.15078105', -1); - T('-58.2030', '-58.203', 0); - T('126.5713124708539037', '126.571312470853903', 1); - T('-4', '220065464', -1); - T('1450774048.18357046', '1450774048.1835704', 1); - T('13694997566335', '1369499756633', 1); - T('-24.57850991168163044469', '-24.5785099116816304446', -1); - T('-3319659536.191', '-3319659536.19', -1); - T('10865.96', '10865.9', 1); - T('-188510157872663341831', '-18851015787266334183', -1); - T('62342691016946', '6234269101694', 1); - T('-20478.3157551016331897', '-20478.315755101633189', -1); - T('-2575595857296977614.9440249', '-2575595857296977614.944024', -1); - T('0.00026567201697160', '0.0002656720169716', 0); - T('-0.000000010270578723943120849114', '-0.00000001027057872394312084911', -1); - T('0.00000022383', '0.0000002238', 1); - T('2376696496129402852542.91945204', '2376696496129402852542.9194520', 1); - T('0.0000000000000000001100974033101769024', '0.000000000000000000110097403310176902', 1); - T('24448082823953.92815', '24448082823953.9281', 1); - T('49.832437916691637221', '49.83243791669163722', 1); - T('-10536487297762435987902669715', '-1053648729776243598790266971', -1); - T('-296549547862779403135.41', '-296549547862779403135.4', -1); - T('-9.5', '2.21', -1); - T('1.98179', '1.9817', 1); - T('-1199981732936688041', '-119998173293668804', -1); - T('0', '-0.0000000000000000000109460230704099637262', 1); - T('-50936625.15944921283142', '-50936625.1594492128314', -1); - T('-0.000000000003616130540960851987251', '-0.00000000000361613054096085198725', -1); - T('-0.000000000980270326383637798406174532', '-0.00000000098027032638363779840617453', -1); - T('-0.0000000000000000000300003812042071861', '-0.000000000000000000030000381204207186', -1); - T('83049889282.1', '0.00000000000001025185302485201018151409355123', 1); - T('233131790953874220450317498.14', '233131790953874220450317498.1', 1); - T('-3.7412702321747291', '-3.741270232174729', -1); - T('-0.0000009922266', '-0.000000992226', -1); - T('-1', '0.0000002780803', -1); - T('0.0000000000002146830950262', '0.000000000000214683095026', 1); - T('1', '-1.5071', 1); - T('-0.000000000465117016507026272818023', '-0.00000000046511701650702627281802', -1); - T('35.39382', '35.3938', 1); - T('-209.660', '-209.66', 0); - T('-90', '-9', -1); - T('0', '-0.00692', 1); - T('-180091979.9605073632174693529', '-180091979.960507363217469352', -1); - T('-122272534374617365', '-12227253437461736', -1); - T('-8572377', '-857237', -1); - T('-0.08864728209412867534496', '-0.0886472820941286753449', -1); - T('0.00000000000000000006218601802455410039603451124', '0.0000000000000000000621860180245541003960345112', 1); - T('8920721679663873214715343.144', '8920721679663873214715343.14', 1); - T('0.274427890206313529182339245', '0.27442789020631352918233924', 1); - T('-2011471992.5', '0', -1); - T('1599651.4112339122', '1599651.411233912', 1); - T('8257580447850.449229990', '8257580447850.44922999', 0); - T('-834308419.89', '-834308419.8', -1); - T('196710676681449226960408', '19671067668144922696040', 1); - T('-41631749783269189618702.063072', '-41631749783269189618702.06307', -1); - T('0.00000054256828175879255377', '0.0000005425682817587925537', 1); - T('10420033248908625.057365906', '10420033248908625.05736590', 1); - T('33958751985671992.081663881', '33958751985671992.08166388', 1); - T('38573.3', '-73', 1); - T('-220.99', '-220.9', -1); - T('0.00000000000000000006632', '0.0000000000000000000663', 1); - T('136.8915', '136.891', 1); - T('-42909979.8482', '-42909979.848', -1); - T('316479242.2412', '316479242.241', 1); - T('-36.2228569144', '-36.222856914', -1); - T('-0.000000000000000145887', '-0.00000000000000014588', -1); - T('-0.034420', '-0.03442', 0); - T('-7487.2940835', '-7487.294083', -1); - T('0.0000000001322905', '0.000000000132290', 1); - T('4540208843067942284033465362', '454020884306794228403346536', 1); - T('-0.00001872', '-0.0000187', -1); - T('1.679', '1.67', 1); - T('-0.003693', '-0.00369', -1); - T('-73534521830291117736646922', '-7353452183029111773664692', -1); - T('-439971017251.505', '-439971017251.50', -1); - T('-0.00000000070562052512643', '-0.0000000007056205251264', -1); - T('0.00000000000036078093367389488954734882', '0.0000000000003607809336738948895473488', 1); - T('183.3930', '183.393', 0); - T('0.000000000000000000045738234226758', '0.00000000000000000004573823422675', 1); - T('5184478988.786158717', '5184478988.78615871', 1); - T('1228655406.4', '-0.000000000001861', 1); - T('5.4', '29713477480117786223897387069', -1); - T('-31065857257211', '-3106585725721', -1); - T('-0.0000000080362523', '-0.000000008036252', -1); - T('52', '-4818398178.32313312', 1); - T('44618406226893376866220.0165600', '44618406226893376866220.016560', 0); - T('60575775575555146660699.8158363', '60575775575555146660699.815836', 1); - T('0.000000000000000000010650670229091', '0.00000000000000000001065067022909', 1); - T('-1.27', '-1.2', -1); - T('-110508.5720888844', '-110508.572088884', -1); - T('584649.40290077882', '584649.4029007788', 1); - T('-991707393.8949', '-991707393.894', -1); - T('-0.000000000000000005615887181289922', '-0.00000000000000000561588718128992', -1); - T('277763471701101937737505118889', '27776347170110193773750511888', 1); - T('0.000000000006833349812829515208501351867', '0.00000000000683334981282951520850135186', 1); - T('0.0000000000000000000825119426382375328', '0.000000000000000000082511942638237532', 1); - T('164214635502117894.45016275', '164214635502117894.4501627', 1); - T('156755613767148.4684291', '156755613767148.468429', 1); - T('337131.847212007602363066', '337131.84721200760236306', 1); - T('-743114207120.9575', '-743114207120.957', -1); - T('0.00097637', '0.0009763', 1); - T('0.000000000000000016965784141152262443', '0.00000000000000001696578414115226244', 1); - T('-0.679736199868', '-0.67973619986', -1); - T('31059776.87593', '31059776.8759', 1); - T('-0.00000000000315991373636284335', '-0.0000000000031599137363628433', -1); - T('-4717725826066274081763.901', '-4717725826066274081763.90', -1); - T('-0.00000000000000000010531404316238', '-0.0000000000000000001053140431623', -1); - T('-0.0000000000000092308522050', '-0.000000000000009230852205', 0); - T('-31939210155282393', '-3193921015528239', -1); - T('234.1354842403', '234.135484240', 1); - T('0', '25500772861644.63741880315', -1); - T('-2820.544', '-2820.54', -1); - T('-0.0000000000000000000171940410392', '-0.000000000000000000017194041039', -1); - T('-3953375698956251412.549803593', '-3953375698956251412.54980359', -1); - T('-198189130.0782001207250', '-198189130.078200120725', 0); - T('-61352644292414307', '-6135264429241430', -1); - T('92629.915756020804289', '92629.91575602080428', 1); - T('2.2482', '2.248', 1); - T('72.5680804939448786575044940949', '72.568080493944878657504494094', 1); - T('29840260084837.110', '29840260084837.11', 0); - T('-154554841.4372781448', '-154554841.437278144', -1); - T('-4715870743255944543754826804', '-471587074325594454375482680', -1); - T('0', '-673196116754.92594558368787', 1); - T('122070161359937463835761732151', '12207016135993746383576173215', 1); - T('0.00000000000000001992532704', '0.0000000000000000199253270', 1); - T('186651.580960498548', '186651.58096049854', 1); - T('2493953119584326.98694', '2493953119584326.9869', 1); - T('0.0000000000248988460997106039259', '0.000000000024898846099710603925', 1); - T('0.00000000126179033507144813915', '0.0000000012617903350714481391', 1); - T('8.5210960565733', '8.521096056573', 1); - T('-0.115997983788', '-0.11599798378', -1); - T('116478460414160856', '11647846041416085', 1); - T('-0.0000000000410758577068834165', '-0.000000000041075857706883416', -1); - T('-3.877785932990082724610869253', '-3.87778593299008272461086925', -1); - T('-1104.347468121953607708416', '-1104.34746812195360770841', -1); - T('1788566441339035', '178856644133903', 1); - T('-30944694030711', '-3094469403071', -1); - T('-1', '-59318.35091346', 1); - T('22.928', '22.92', 1); - T('-20.365598091573148941340533554', '-20.36559809157314894134053355', -1); - T('164432', '16443', 1); - T('-1505.1453', '-1505.145', -1); - T('14849.5', '-1035048221058', 1); - T('-21813.7768933', '-21813.776893', -1); - T('-3', '-133', 1); - T('-0.0000000000000011616', '-0.000000000000001161', -1); - T('289100821.7784', '289100821.778', 1); - T('6019702.0', '-354753899721763221.19223', 1); - T('37105.701735589966456', '37105.70173558996645', 1); - T('15977.362', '15977.36', 1); - T('-24795509226542636447908722', '-2479550922654263644790872', -1); - T('-13.2', '0', -1); - T('-0.000000000000000037701155411491341477', '-0.00000000000000003770115541149134147', -1); - T('2513229.7', '-0.0000000000000011002329726788604366137233', 1); - T('10760725997292.38254893708', '10760725997292.3825489370', 1); - T('504177973263.4841942', '504177973263.484194', 1); - T('3200.062372584607515', '3200.06237258460751', 1); - T('-10354064661931765.3820', '-10354064661931765.382', 0); - T('13619513905.82', '13619513905.8', 1); - T('2', '-20.2867031651859982183', 1); - T('-0.000000001042392150476', '-0.00000000104239215047', -1); - T('-15943439249924914', '-1594343924992491', -1); - T('-1012088906865956056745.1886775', '-1012088906865956056745.188677', -1); - T('0.0000206', '0.000020', 1); - T('-186827747346939858.7304', '-186827747346939858.730', -1); - T('-30132095587981544870.6', '1489083.55535518931', -1); - T('7012', '701', 1); - T('40130924927125476099322.48103', '40130924927125476099322.4810', 1); - T('0.0000000000000000000981', '0.000000000000000000098', 1); - T('-19372.3055662', '-19372.305566', -1); - T('-19.83638584167', '-19.8363858416', -1); - T('42.6', '5178793.40712651', -1); - T('498949500082608940888', '49894950008260894088', 1); - T('2790925312621021.3331276', '2790925312621021.333127', 1); - T('0.00000000000844831740749858241', '0.0000000000084483174074985824', 1); - T('6.50', '6.5', 0); - T('0.000003462780', '0.00000346278', 0); - T('-751629020.898865', '-751629020.89886', -1); - T('0.00000007309247977705', '0.0000000730924797770', 1); - T('-0.00220406121000', '-0.0022040612100', 0); - T('1120182731416530221572473', '112018273141653022157247', 1); - T('-0.8347609918057479', '-0.834760991805747', -1); - T('-5807.666472', '-5807.66647', -1); - T('-4167388.899763015', '-4167388.89976301', -1); - T('-401150740402834660825.50243454', '-401150740402834660825.5024345', -1); - T('-35794.29921122403049778953976', '-35794.2992112240304977895397', -1); - T('84431862959.2121997678178446917', '84431862959.212199767817844691', 1); - T('-2539996.17345032025783026803138', '-2539996.1734503202578302680313', -1); - T('0.00000000000000099705053162571348', '0.0000000000000009970505316257134', 1); - T('23401.12855330127', '23401.1285533012', 1); - T('8164385.3895774781453', '8164385.389577478145', 1); - T('-0.000000000000000005992633459836508190', '-0.00000000000000000599263345983650819', 0); - T('0.00000001336378654', '0.0000000133637865', 1); - T('0.50994808508176183', '0.5099480850817618', 1); - T('-1600777113482754136', '-160077711348275413', -1); - T('-4525072.832', '-4525072.83', -1); - T('-21', '-2', -1); - T('268678.963124964', '268678.96312496', 1); - T('0.0002563283407958355682202564483', '0.000256328340795835568220256448', 1); - T('-0.001692254617913891380920881908', '-0.00169225461791389138092088190', -1); - T('-1322598467.8998', '-1322598467.899', -1); - T('-12041123394.9989604', '-12041123394.998960', -1); - T('0.0000000000000195012', '0.000000000000019501', 1); - T('-4342560023646872240660', '-434256002364687224066', -1); - T('-35117', '-3511', -1); - T('0.00000000000000000069551761107698717501', '0.0000000000000000006955176110769871750', 1); - T('1185010344.148941', '1185010344.14894', 1); - T('-0.000000000030952985207690202030601829098', '-0.00000000003095298520769020203060182909', -1); - T('0.000000000000000582651473217774254164326212239', '0.00000000000000058265147321777425416432621223', 1); - T('504359.80087', '504359.8008', 1); - T('-1023', '-102', -1); - T('-0.00000000000044602178960376487', '-0.0000000000004460217896037648', -1); - T('-27163960789.700', '-27163960789.70', 0); - T('9.75', '9.7', 1); - T('15749.6', '-64114895', 1); - T('-1.78646', '-1.7864', -1); - T('0', '-0.0000293962545673136560132940521', 1); - T('1568482319330379083.46066570', '1568482319330379083.4606657', 0); - T('1.5', '0.24059486639369', 1); - T('72631883478316528107390894.761', '72631883478316528107390894.76', 1); - T('34.435342', '34.43534', 1); - T('-21658874', '-2165887', -1); - T('4.39', '4.3', 1); - T('0.0001793758139490056488536388', '0.000179375813949005648853638', 1); - T('0.000014078039388936962', '0.00001407803938893696', 1); - T('0.00000000000003559010620', '0.0000000000000355901062', 0); - T('1114593033649166', '111459303364916', 1); - T('-839727705223987847927.8', '0.0000000000000000009297088124606271555053', -1); - T('0.000000001093460554010662', '0.00000000109346055401066', 1); - T('-103.512', '-103.51', -1); - T('67798048.163', '67798048.16', 1); - T('52308232397211107247556311601', '5230823239721110724755631160', 1); - T('0.000000000000000001692', '0.00000000000000000169', 1); - T('0.001001742891829562912794', '0.00100174289182956291279', 1); - T('44854731', '4485473', 1); - T('-142442148181118926872.0291262', '-142442148181118926872.029126', -1); - T('-212.25', '-212.2', -1); - T('0.00064262226396649288736045009', '0.0006426222639664928873604500', 1); - T('-1963634914900782.3083054837942', '-1963634914900782.308305483794', -1); - T('-29235219.36', '-29235219.3', -1); - T('13157328.110', '13157328.11', 0); - T('-0.00000024923670350319764405595266619', '-0.0000002492367035031976440559526661', -1); - T('211241733874.26', '211241733874.2', 1); - T('-0.0000000000001031601613971119366688714', '-0.000000000000103160161397111936668871', -1); - T('-41.38924804686835819982429', '-41.3892480468683581998242', -1); - T('-6', '-0.00000000000947293362099347980476194676305', -1); - T('0', '2025.61', -1); - T('4509184573.49', '4509184573.4', 1); - T('0.00000000000000001080', '0.0000000000000000108', 0); - T('0.000000000000000025970809826510597', '0.00000000000000002597080982651059', 1); - T('-10487551.18', '-10487551.1', -1); - T('-1', '-232678585.74', 1); - T('2144754227667106756.251334', '2144754227667106756.25133', 1); - T('11696039.4573616732', '11696039.457361673', 1); - T('1.8', '-1197.974427959', 1); - T('15.0', '0.14094197085256646250149695458', 1); - T('-9911214476849.9868926', '-9911214476849.986892', -1); - T('746601322434.3', '-2026225456262211.028', 1); - T('33327.320', '33327.32', 0); - T('37.45616', '37.4561', 1); - T('1613310.79', '1613310.7', 1); - T('-324.19116', '-324.1911', -1); - T('-8205973490351098524', '-820597349035109852', -1); - T('-38010778199', '-3801077819', -1); - T('465062636441606050103294707247', '46506263644160605010329470724', 1); - T('-234531342243689027509422607.087', '-234531342243689027509422607.08', -1); - T('-6519.701031489886865549', '-6519.70103148988686554', -1); - T('-27758350575381', '-2775835057538', -1); - T('11205680254917.29959', '11205680254917.2995', 1); - T('2037540', '203754', 1); - T('-0.000000000143432822908384760', '-0.00000000014343282290838476', 0); - T('-1080471500378115463.91037', '-1080471500378115463.9103', -1); - T('11310.5806', '11310.580', 1); - T('268.4', '4405497532754453.71', -1); - T('-0.03269186675484629883', '-0.0326918667548462988', -1); - T('3.0', '-1246100744', 1); - T('-0.000009472607806448155830419', '-0.00000947260780644815583041', -1); - T('-68623184.5', '-1870260073', 1); - T('0.00000000115796390522683677275464134000', '0.0000000011579639052268367727546413400', 0); - T('-0.000000001712702962512851', '-0.00000000171270296251285', -1); - T('6963.3801375810328365724139570', '6963.380137581032836572413957', 0); - T('0.000000000000000136327583962505', '0.00000000000000013632758396250', 1); - T('-179275.62567103827058669819082', '-179275.6256710382705866981908', -1); - T('0.00000218570795745319276132718732', '0.0000021857079574531927613271873', 1); - T('68.31423316364099583801307', '68.3142331636409958380130', 1); - T('19.5833307957304445294855674', '19.583330795730444529485567', 1); - T('4.02', '4.0', 1); - T('-862843', '-86284', -1); - T('-56544409662235409.368186', '-56544409662235409.36818', -1); - T('-0.00000000000003660585469627', '-0.0000000000000366058546962', -1); - T('-1.863', '-1.86', -1); - T('52501888926', '5250188892', 1); - T('-1', '-0.00000000000000000978061879517092', -1); - T('-0.00000000140842797026112010675644120', '-0.0000000014084279702611201067564412', 0); - T('-8681.34675166', '-8681.3467516', -1); - T('70986248658313756946.175', '70986248658313756946.17', 1); - T('9087.12275147312492852', '9087.1227514731249285', 1); - T('-1946391549304989528206958429.3', '0.00000000000000000001852761384', -1); - T('-24991110196476816.5973432', '-24991110196476816.597343', -1); - T('0.000000000000000012941178189261090807423', '0.00000000000000001294117818926109080742', 1); - T('12016926398.4701744866213809', '12016926398.470174486621380', 1); - T('3012709140.5485148192204195', '3012709140.548514819220419', 1); - T('-0.000000000000014627930', '-0.00000000000001462793', 0); - T('332348006.1892716773566', '332348006.189271677356', 1); - T('-0.000000019', '-0.00000001', -1); - T('-0.0000024642005864', '-0.000002464200586', -1); - T('-15853920353685720', '-1585392035368572', -1); - T('-3', '0.00334', -1); - T('-4368864535997.00731830', '-4368864535997.0073183', 0); - T('0.0000000000000000010', '0.000000000000000001', 0); - T('-307303170292.614', '-307303170292.61', -1); - T('25.45464373426403840448612', '25.4546437342640384044861', 1); - T('942241618172218308593287', '94224161817221830859328', 1); - T('0.00000000000000005357021085236752029646', '0.0000000000000000535702108523675202964', 1); - T('0.000000000357348983', '0.00000000035734898', 1); - T('-1578782291785511380364', '-157878229178551138036', -1); - T('-76812604459187.94', '-76812604459187.9', -1); - T('0.000000000000000000024', '0.00000000000000000002', 1); - T('80910090177', '8091009017', 1); - T('26196262061157.296', '26196262061157.29', 1); - T('-2.5419448086543270', '-2.541944808654327', 0); - T('5510.149', '5510.14', 1); - T('240282.7241338', '240282.724133', 1); - T('361596169011252', '36159616901125', 1); - T('-203941370720480263273.3', '7313.9912', -1); - T('-6425057953.0172', '-6425057953.017', -1); - T('3529900444.00198687592090253454', '3529900444.0019868759209025345', 1); - T('-1913233401877.8263043645', '-1913233401877.826304364', -1); - T('0.00000000231115060509654299602960266', '0.0000000023111506050965429960296026', 1); - T('-18819022481403295095312', '-1881902248140329509531', -1); - T('-13790408.0512', '-13790408.051', -1); - T('2996.67', '2996.6', 1); - T('5', '-2364783035602699164.1934942679', 1); - T('-794688606062', '-79468860606', -1); - T('-15183315947.8764211541', '-15183315947.876421154', -1); - T('15976.600931534513375', '15976.60093153451337', 1); - T('62985782290', '6298578229', 1); - T('-0.000000000000000136844163154210', '-0.00000000000000013684416315421', 0); - T('9311325062667667325773987', '931132506266766732577398', 1); - T('-251.776', '-251.77', -1); - T('69.947', '69.94', 1); - T('494.518135609425364940472684', '494.51813560942536494047268', 1); - T('-0.000000000000000000770311595488584', '-0.00000000000000000077031159548858', -1); - T('-31883468122.462112645954460826', '-31883468122.46211264595446082', -1); - T('45164896297917952.745283345624', '45164896297917952.74528334562', 1); - T('9.9', '6607070556969953716001823', -1); - T('0.00000000000015847318576697', '0.0000000000001584731857669', 1); - T('8453134914884811', '845313491488481', 1); - T('4363007389023360.0947505417', '4363007389023360.094750541', 1); - T('0.00000651', '0.0000065', 1); - T('63980', '6398', 1); - T('184865087582523954342727244.41', '184865087582523954342727244.4', 1); - T('210', '21', 1); - T('160857383504.45305139461', '160857383504.4530513946', 1); - T('-68212.03884', '-68212.0388', -1); - T('0.000000000000000000027320749051653154055', '0.00000000000000000002732074905165315405', 1); - T('0.0000000018738126472074437195860615988', '0.000000001873812647207443719586061598', 1); - T('-1119289980974198379.09520', '-1119289980974198379.0952', 0); - T('0.00000000000020615568', '0.0000000000002061556', 1); - T('24740673.0', '-19.6', 1); - T('-0.00000000000000000008590177716950083750561846', '-0.0000000000000000000859017771695008375056184', -1); - T('3', '381552602624', -1); - T('-194022.047372437749', '-194022.04737243774', -1); - T('-19.840941985', '-19.84094198', -1); - T('786400.65729', '786400.6572', 1); - T('-0.0000037430397514518105', '-0.000003743039751451810', -1); - T('279955180857166858.67063', '279955180857166858.6706', 1); - T('7.74', '7.7', 1); - T('0.21829393131', '0.2182939313', 1); - T('124841568240942.234680', '124841568240942.23468', 0); - T('0.000000000000000471099502548165170284259', '0.00000000000000047109950254816517028425', 1); - T('-99.86772739', '-99.8677273', -1); - T('10', '41950771951.66109', -1); - T('-0.00000000000000209702', '-0.0000000000000020970', -1); - T('-0.000002340625428766004404187457', '-0.00000234062542876600440418745', -1); - T('-4763.9', '2.034660667930931', -1); - T('4038', '403', 1); - T('9602830359170510968473768.362', '9602830359170510968473768.36', 1); - T('1673967.68004214151', '1673967.6800421415', 1); - T('-40724652990901152.3', '-1', -1); - T('5.3613955', '5.361395', 1); - T('-50544224094691571.5806233861187', '-50544224094691571.580623386118', -1); - T('971836.46599301', '971836.4659930', 1); - T('0.0000000000000000492654484203', '0.000000000000000049265448420', 1); - T('0.0000000000000273350022839', '0.000000000000027335002283', 1); - T('-0.0000000000000111187728980548441', '-0.000000000000011118772898054844', -1); - T('240.32166914346', '240.3216691434', 1); - T('-301.469168', '-301.46916', -1); - T('0', '361314256851430.8380', -1); - T('4095.137770623652511', '4095.13777062365251', 1); - T('0.0015377038155762591158011773', '0.001537703815576259115801177', 1); - T('-122.105313489953435', '-122.10531348995343', -1); - T('-12529067051281794', '-1252906705128179', -1); - T('-0.0000064280', '-0.000006428', 0); - T('728173692003587479', '72817369200358747', 1); - T('0.00000000005148126849474197', '0.0000000000514812684947419', 1); - T('155032124343881936061774467.7', '71403.71', 1); - T('5336736899935835.270053', '5336736899935835.27005', 1); - T('174556.818526489', '174556.81852648', 1); - T('-0.00000000529718819', '-0.0000000052971881', -1); - T('39710699.39476764508186780', '39710699.3947676450818678', 0); - T('-504505.226304998729', '-504505.22630499872', -1); - T('121.845727307', '121.84572730', 1); - T('-0.0000000000014085632', '-0.000000000001408563', -1); - T('-53304292.806841332223', '-53304292.80684133222', -1); - T('0.00000000000000000029', '0.0000000000000000002', 1); - T('0.000000000000162235692', '0.00000000000016223569', 1); - T('1124.8204793587524', '1124.820479358752', 1); - T('1676932756858', '167693275685', 1); - T('-138785033434702745562559175', '-13878503343470274556255917', -1); - T('-26787241126112270.786851', '-26787241126112270.78685', -1); - T('3.01', '3.0', 1); - T('0.00000000000000165985383', '0.0000000000000016598538', 1); - T('0.000000002121', '0.00000000212', 1); - T('100065.900759', '100065.90075', 1); - T('3.0786', '3.078', 1); - T('1829645.4450108032076981336', '1829645.445010803207698133', 1); - T('-31.80223', '-31.8022', -1); - T('530006.60', '530006.6', 0); - T('0.001298918', '0.00129891', 1); - T('0.36635660', '0.3663566', 0); - T('77511746654159493674.79419', '77511746654159493674.7941', 1); - T('339255.7', '-1473225.1695489201158451', 1); - T('1.11', '1.1', 1); - T('-0.000000000025234359435300648563442278', '-0.00000000002523435943530064856344227', -1); - T('-527785722956482.1568788276023', '-527785722956482.156878827602', -1); - T('15.829063161229710883887068159', '15.82906316122971088388706815', 1); - T('0', '9.020934402455', -1); - T('5.50898793', '5.5089879', 1); - T('176437906524318811079.64601', '176437906524318811079.6460', 1); - T('-397.5475158726300', '-397.547515872630', 0); - T('-0.00000000001556055515635481323709942', '-0.0000000000155605551563548132370994', -1); - T('22.4958236487616739001889', '22.495823648761673900188', 1); - T('225949901218559.6254904852', '225949901218559.625490485', 1); - T('34352062918', '3435206291', 1); - T('0.00000000000127995729371224', '0.0000000000012799572937122', 1); - T('-18289597669354.148272509794', '-18289597669354.14827250979', -1); - T('62072.9263', '62072.926', 1); - T('-0.00000000038775267220204260640135935', '-0.0000000003877526722020426064013593', -1); - T('15', '49854', -1); - T('-622727179956664623.584677020', '-622727179956664623.58467702', 0); - T('124612619885534601636883847056', '12461261988553460163688384705', 1); - T('-44704302', '-4470430', -1); - T('-0.0000000000007320382329813686', '-0.000000000000732038232981368', -1); - T('57035102.20300582807941489', '57035102.2030058280794148', 1); - T('-0.00000000001794738068861544419872319', '-0.0000000000179473806886154441987231', -1); - T('-1.2228', '-1.222', -1); - T('43666858484365456517278', '4366685848436545651727', 1); - T('-0.0000000000314085', '-0.000000000031408', -1); - T('0', '0.00000000000063486', -1); - T('63.6991829', '63.699182', 1); - T('-0.0000000000199308483511083746', '-0.000000000019930848351108374', -1); - T('3.1', '-3709905843220.155177257', 1); - T('-39631940063', '-3963194006', -1); - T('7073142.8', '3', 1); - T('-1999449463', '-199944946', -1); - T('290002.761327072634018931', '290002.76132707263401893', 1); - T('12860083520871521.6822227', '12860083520871521.682222', 1); - T('183820.026930161', '183820.02693016', 1); - T('0.000000781790', '0.00000078179', 0); - T('1.446', '1.44', 1); - T('0.0000008551572300216445253650', '0.000000855157230021644525365', 0); - T('0.4780426111531057579684661647', '0.478042611153105757968466164', 1); - T('-1711959015605354291', '-171195901560535429', -1); - T('863248002669318.08600609171', '863248002669318.0860060917', 1); - T('-1028946422414.8414841087619794', '-1028946422414.841484108761979', -1); - T('0.0000000000000000000419470', '0.000000000000000000041947', 0); - T('-2914967412378208104.4188038431', '-2914967412378208104.418803843', -1); - T('-0.002008', '-0.00200', -1); - T('-0.00000000000002626730784814031567584', '-0.0000000000000262673078481403156758', -1); - T('-19391200616386965', '-1939120061638696', -1); - T('15805.555288168078384', '15805.55528816807838', 1); - T('0.000000000000000065791655', '0.00000000000000006579165', 1); - T('-0.00000000000028926319996', '-0.0000000000002892631999', -1); - T('-10555951879654.4116', '-10555951879654.411', -1); - T('77254637873210650.73', '77254637873210650.7', 1); - T('1154.7950888803119206706', '1154.795088880311920670', 1); - T('-0.00000002121424546283688', '-0.0000000212142454628368', -1); - T('-6884545854992086.64462961512340', '-6884545854992086.6446296151234', 0); - T('-0.0000002787346373194072109221861494', '-0.000000278734637319407210922186149', -1); - T('1589425692.0903352784430490711', '1589425692.090335278443049071', 1); - T('-0.000000069284383167241482592797', '-0.00000006928438316724148259279', -1); - T('-1297741', '-129774', -1); - T('-82630489346849562513.319012060', '-82630489346849562513.31901206', 0); - T('-2788.926', '-2788.92', -1); - T('0', '-4383482151.279035955215656', 1); - T('20802679.3368961001940047753', '20802679.336896100194004775', 1); - T('88377599.6874', '88377599.687', 1); - T('-15439.11', '-15439.1', -1); - T('644', '64', 1); - T('289240770089054460230094', '28924077008905446023009', 1); - T('2374.044', '2374.04', 1); - T('206285132736.429455540', '206285132736.42945554', 0); - T('-2.655584158995322', '-2.65558415899532', -1); - T('6.66', '6.6', 1); - T('-0.00147702317521839535481784', '-0.0014770231752183953548178', -1); - T('0.00025983386631037', '0.0002598338663103', 1); - T('125878687977.170727149556144', '125878687977.17072714955614', 1); - T('0.00000000014242990543328642932285580466', '0.0000000001424299054332864293228558046', 1); - T('531497192.9', '-2.8789608913347', 1); - T('128572050211770604885888', '12857205021177060488588', 1); - T('0.00000000000049823251747441545405900232', '0.0000000000004982325174744154540590023', 1); - T('-3554', '-355', -1); - T('0', '-131462.704889581898753', 1); - T('-110360.109', '-110360.10', -1); - T('46243539.17811357252990972', '46243539.1781135725299097', 1); - T('-394476311386474662807.561867', '-394476311386474662807.56186', -1); - T('52032.8849384149084108910', '52032.884938414908410891', 0); - T('-3670157142977774795911.8817', '-3670157142977774795911.881', -1); - T('-1268380.68072308126212968448547', '-1268380.6807230812621296844854', -1); - T('-143400922253476294484942', '-14340092225347629448494', -1); - T('1.4797498644139485849619679', '1.479749864413948584961967', 1); - T('3220359.45542896240415069', '3220359.4554289624041506', 1); - T('-34.67710018368', '-34.6771001836', -1); - T('18.565971', '18.56597', 1); - T('-0.0000000107587', '-0.000000010758', -1); - T('-16558604266', '-1655860426', -1); - T('6289.6556', '6289.655', 1); - T('1061140593553797', '106114059355379', 1); - T('-6946576.61799943', '-6946576.6179994', -1); - T('-3549420020.8', '-0.000000000197268526037141123595658758051', -1); - T('-0.00000000000000045', '-0.0000000000000004', -1); - T('3.95', '3.9', 1); - T('0.00000000017950293191', '0.0000000001795029319', 1); - T('-0.0000000000000002653486566279708933590491', '-0.000000000000000265348656627970893359049', -1); - T('5834654233963853186742787.19252', '5834654233963853186742787.1925', 1); - T('0.00000000000000146193758453924734921291', '0.0000000000000014619375845392473492129', 1); - T('21.2', '-5466882.34678998616', 1); - T('-226.313', '-226.31', -1); - T('-0.00060919', '-0.0006091', -1); - T('2862921800133731.00223602', '2862921800133731.0022360', 1); - T('0.000001450407700996599075301', '0.00000145040770099659907530', 1); - T('272534713642655203877194515', '27253471364265520387719451', 1); - T('400533357.2054', '400533357.205', 1); - T('-52301.7548455317094', '-52301.754845531709', -1); - T('-60434', '-6043', -1); - T('-4713231.0582649012375636764', '-4713231.058264901237563676', -1); - T('442933.48162982928258413695403', '442933.4816298292825841369540', 1); - T('-143913.618851426974774247273449', '-143913.61885142697477424727344', -1); - T('257.994941295', '257.99494129', 1); - T('-567639505016552', '-56763950501655', -1); - T('0.000000107', '0.00000010', 1); - T('-70142602142.0685215078078', '-70142602142.068521507807', -1); - T('9937222087105.4475', '9937222087105.447', 1); - T('-502191309583350641', '-50219130958335064', -1); - T('30437.61407', '30437.6140', 1); - T('-104085888962140304973.61065995', '-104085888962140304973.6106599', -1); - T('74681549.65066', '74681549.6506', 1); - T('0', '34.0', -1); - T('1283299494621733760436152524.7', '191981915098.416203175', 1); - T('-2079057190454275.24388611959130', '-2079057190454275.2438861195913', 0); - T('-71969837200476.48650', '-71969837200476.4865', 0); - T('-130332745336076.430672680', '-130332745336076.43067268', 0); - T('-262322534.7873', '-262322534.787', -1); - T('-4622120040.36051', '-4622120040.3605', -1); - T('393.81', '393.8', 1); - T('-8778932.1977656', '-8778932.197765', -1); - T('-0.000000004319221300856935220146173063', '-0.00000000431922130085693522014617306', -1); - T('1.3', '-2901258187734.962', 1); - T('-16.56973', '-16.5697', -1); - T('-30104811614630.4940925402114444', '-30104811614630.494092540211444', -1); - T('-0.238917470430091754', '-0.23891747043009175', -1); - T('40.82242337', '40.8224233', 1); - T('-30694613567562.20297241', '-30694613567562.2029724', -1); - T('-0.000000001679207115467275', '-0.00000000167920711546727', -1); - T('-1', '10591891.719', -1); - T('1.85299397', '1.8529939', 1); - T('3.1', '-0.0000000010927840471796860', 1); - T('-0.5778526120297929752108974', '-0.577852612029792975210897', -1); - T('-0.00000002031283434', '-0.0000000203128343', -1); - T('-1609260013071237241578458.130', '-1609260013071237241578458.13', 0); - T('142924542265794697.6840281240', '142924542265794697.684028124', 0); - T('445463969.1', '-0.0000000000003547121196389709462', 1); - T('0.0000000000000000000126560009292128566', '0.000000000000000000012656000929212856', 1); - T('41537.281211574', '41537.28121157', 1); - T('0.000008600441757756', '0.00000860044175775', 1); - T('-4.0918630496265', '-4.091863049626', -1); - T('515782766783.866833275741', '515782766783.86683327574', 1); - T('0.00000392', '0.0000039', 1); - T('7482300.41', '7482300.4', 1); - T('70457460459564179796739', '7045746045956417979673', 1); - T('-13615229017824905947.22', '-13615229017824905947.2', -1); - T('8459428653.6932870235609249397', '8459428653.693287023560924939', 1); - T('-27.974019', '-27.97401', -1); - T('10877384546812', '1087738454681', 1); - T('17.146861043222', '17.14686104322', 1); - T('-0.0000000000012741539', '-0.000000000001274153', -1); - T('-18976303359654085296749.6386', '-18976303359654085296749.638', -1); - T('-14105745484762.813773506', '-14105745484762.81377350', -1); - T('-1674391.840', '-1674391.84', 0); - T('-84922688.1007771598494556708', '-84922688.100777159849455670', -1); - T('-12.57', '-12.5', -1); - T('-0.00000000048', '-0.0000000004', -1); - T('-0.00000032914110816', '-0.0000003291411081', -1); - T('0.000000000027615548', '0.00000000002761554', 1); - T('0.000000000460044976036', '0.00000000046004497603', 1); - T('0.000000000000000469322464666856288338391046819', '0.00000000000000046932246466685628833839104681', 1); - T('112.86854732363', '112.8685473236', 1); - T('118566.37', '118566.3', 1); - T('5014945347.21114863', '5014945347.2111486', 1); - T('655824.126216661', '655824.12621666', 1); - T('-53.0', '-2828707252974182.26', 1); - T('-107852322318138.23', '-107852322318138.2', -1); - T('817.381', '817.38', 1); - T('-8.10721735', '-8.1072173', -1); - T('2', '109155.92', -1); - T('-0.09059', '-0.0905', -1); - T('0.000000038', '0.00000003', 1); - T('135803.4375', '135803.437', 1); - T('-0.104981688246294', '-0.10498168824629', -1); - T('-319117053919238717943917700', '-31911705391923871794391770', -1); - T('-0.00000004966732670', '-0.0000000496673267', 0); - T('0.00000000000000017556177582070698', '0.0000000000000001755617758207069', 1); - T('-6039943363.364348624747813', '-6039943363.36434862474781', -1); - T('-0.0768825', '-0.076882', -1); - T('-0.00000157341483784912166430698733808', '-0.0000015734148378491216643069873380', -1); - T('-588017', '-58801', -1); - T('-2129041.040892', '-2129041.04089', -1); - T('-4859858157015921288139272.0', '-281.9', -1); - T('0.000000000000028619814741904', '0.00000000000002861981474190', 1); - T('398.5406', '398.540', 1); - T('-117104803640', '-11710480364', -1); - T('-78601667654180532972556760.3008', '-78601667654180532972556760.300', -1); - T('2228270436870143.19', '2228270436870143.1', 1); - T('-161233', '-16123', -1); - T('136330282209580168399263.62462', '136330282209580168399263.6246', 1); - T('-86.44928389', '-86.4492838', -1); - T('338.24', '338.2', 1); - T('-14549618702.664447503248196729', '-14549618702.66444750324819672', -1); - T('-30.6085886720119612', '-30.608588672011961', -1); - T('-1990373027501001721683307.30225', '-1990373027501001721683307.3022', -1); - T('1876002848.466', '1876002848.46', 1); - T('-810.41963070149375272', '-810.4196307014937527', -1); - T('2414021.80458', '2414021.8045', 1); - T('-1.3248', '-1.324', -1); - T('0.00000000000000000003281908871647629993048189', '0.0000000000000000000328190887164762999304818', 1); - T('8190932122089709410211260.1941', '8190932122089709410211260.194', 1); - T('18558359008664.901', '18558359008664.90', 1); - T('-1.836260852084759052811977', '-1.83626085208475905281197', -1); - T('52848.0661641241616642195', '52848.066164124161664219', 1); - T('1.795', '1.79', 1); - T('3563.84130546918276031', '3563.8413054691827603', 1); - T('33450019.5', '2459854832688517296246058802', -1); - T('5536285180182881.87923167404513', '5536285180182881.8792316740451', 1); - T('0', '0.000000000000000043296465733471525299', -1); - T('70086.68252172', '70086.6825217', 1); - T('292760.4240', '292760.424', 0); - T('2028140262335.9131026003356', '2028140262335.913102600335', 1); - T('0.0000000000087', '0.000000000008', 1); - T('4', '-3470098.6074792982', 1); - T('13358558600177683796925578', '1335855860017768379692557', 1); - T('-83.8', '21363730.46561184451', -1); - T('365324.84504266484131556038', '365324.8450426648413155603', 1); - T('-3185507140.95393405534321', '-3185507140.9539340553432', -1); - T('-0.0000000000000065472358345', '-0.000000000000006547235834', -1); - T('-1.1306', '-1.130', -1); - T('0.0000000000000000012657157731644007947139831', '0.000000000000000001265715773164400794713983', 1); - T('-4595761438.2546337711', '-4595761438.254633771', -1); - T('8.102560', '8.10256', 0); - T('-4732877234851.04517', '-4732877234851.0451', -1); - T('22849746934084811', '2284974693408481', 1); - T('-21570598205187056339788.8827687', '-21570598205187056339788.882768', -1); - T('-0.00411486610', '-0.0041148661', 0); - T('0.0000000017473355067071', '0.000000001747335506707', 1); - T('1672207932406612', '167220793240661', 1); - T('-2170952508398772659.3116947863', '-2170952508398772659.311694786', -1); - T('104296691.3651', '104296691.365', 1); - T('6413348457044198.6357', '6413348457044198.635', 1); - T('867588124512790019695847208.17', '867588124512790019695847208.1', 1); - T('0.000000000000000006377653', '0.00000000000000000637765', 1); - T('0.0000000000000005421562844800408', '0.000000000000000542156284480040', 1); - T('0.0000000000001734898208084', '0.000000000000173489820808', 1); - T('719191761181325213', '71919176118132521', 1); - T('0.02250426125915164019127', '0.0225042612591516401912', 1); - T('0.000000000000015950471472766126156', '0.00000000000001595047147276612615', 1); - T('-8.165141564', '-8.16514156', -1); - T('0.000016048771130', '0.00001604877113', 0); - T('-2', '-88807525195548174559556063', 1); - T('58675.118464', '58675.11846', 1); - T('0.000000627412133283', '0.00000062741213328', 1); - T('-1292498491535.25344', '-1292498491535.2534', -1); - T('-820304961.0323010898698', '-820304961.032301089869', -1); - T('-0.000611', '-0.00061', -1); - T('-11144524535537715', '-1114452453553771', -1); - T('-55716774643252100979.5446623', '-55716774643252100979.544662', -1); - T('-0.000044176893810056', '-0.00004417689381005', -1); - T('292752046.323027', '292752046.32302', 1); - T('7380730', '738073', 1); - T('86355898012532849.7700967309940', '86355898012532849.770096730994', 0); - T('0.00000004315310515126045613636', '0.0000000431531051512604561363', 1); - T('0.00000000000000000001737', '0.0000000000000000000173', 1); - T('813314317.05965', '813314317.0596', 1); - T('0.0000000000288347370619778500827429666573', '0.000000000028834737061977850082742966657', 1); - T('1.227', '1.22', 1); - T('-1.2630735', '-1.263073', -1); - T('91944402440.06945779449085371', '91944402440.0694577944908537', 1); - T('-4449792517039894', '-444979251703989', -1); - T('9', '-2448498702.514138316389405792', 1); - T('15', '-230.83', 1); - T('31.144613239645410083514841201', '31.14461323964541008351484120', 1); - T('-19284', '-1928', -1); - T('0', '5426339861896942660314675307', -1); - T('1129076194', '112907619', 1); - T('1044840688537574338326', '104484068853757433832', 1); - T('0.00000000000000043539078118147011', '0.0000000000000004353907811814701', 1); - T('-5', '4', -1); - T('-1377061.5292411334', '-1377061.529241133', -1); - T('-4.0', '332202357', -1); - T('-0.00000000000000000227', '-0.0000000000000000022', -1); - T('1826995888603.5824430107', '1826995888603.582443010', 1); - T('10390673669.135717884263351', '10390673669.13571788426335', 1); - T('10', '-735770.95921507778597', 1); - T('104.5944497667', '104.594449766', 1); - T('75938579086.43324', '75938579086.4332', 1); - T('133431773944', '13343177394', 1); - T('-0.029773', '-0.02977', -1); - T('-2.3', '0.000000000000004812124955862392552', -1); - T('-0.000000000000000440816280', '-0.00000000000000044081628', 0); - T('18420.11634', '18420.1163', 1); - T('-9284054922651501226860235.867', '-9284054922651501226860235.86', -1); - T('12396946801121416014189.43309695', '12396946801121416014189.4330969', 1); - T('0.007718643213656733483266', '0.00771864321365673348326', 1); - T('-0.000000037595591491984459', '-0.00000003759559149198445', -1); - T('-715072321926440135536.7648', '-715072321926440135536.764', -1); - T('103992420.52458', '103992420.5245', 1); - T('0.000000991070083580408202601308047', '0.00000099107008358040820260130804', 1); - T('1.86853500870534570128', '1.8685350087053457012', 1); - T('58616551.73241771152', '58616551.7324177115', 1); - T('-1.6', '18525081582051265136724.3660', -1); - T('1993238064975', '199323806497', 1); - T('-1784581450011.6549586151626', '-1784581450011.654958615162', -1); - T('-4555209568014421116848941.3959', '-4555209568014421116848941.395', -1); - T('-7048913007.5566', '-7048913007.556', -1); - T('-0.000000000871843054424826674157106', '-0.00000000087184305442482667415710', -1); - T('-14840053.072', '-14840053.07', -1); - T('-501405456751853073076', '-50140545675185307307', -1); - T('-199545.60412498', '-199545.6041249', -1); - T('0.00000009216303215937061205', '0.0000000921630321593706120', 1); - T('4.71041834808516', '4.7104183480851', 1); - T('361.419249298421346667', '361.41924929842134666', 1); - T('409136581.554547189131', '409136581.55454718913', 1); - T('55122849429299788341942', '5512284942929978834194', 1); - T('13003440939757220210.6', '-131681614', 1); - T('-1609638422403038.78', '-1609638422403038.7', -1); - T('28363.187944820474154448061814', '-28363.187944820474154448061814', 1); - T('-2916651.5496', '311663.7', -1); - T('-0.000000000000028', '-1.0051639273', 1); - T('-15087.357', '-1.94820806', -1); - T('-0.00000000000000003599985370238339034191676', '175367726221406968.13920', -1); - T('313569.577740085324', '-313569.577740085324', 1); - T('4.14321707846', '-4.14321707846', 1); - T('2.025069', '-2.025069', 1); - T('-204173696764981798', '-348359047110101', -1); - T('-12752947190480205615461', '15.198090402942077', -1); - T('-74.2', '4628073528657420.923843246681', -1); - T('719.1719040512', '-719.1719040512', 1); - T('393.313192', '-393.313192', 1); - T('-494455879492.541426667665550', '-13002235405592907201044204', 1); - T('0', '0', 0); - T('-233021.97', '-7.4', -1); - T('-240459748', '0.000000006517712156', -1); - T('81179.0', '-81179.0', 1); - T('-0.0000192016725715', '-1.21890405451046803716074614', 1); - T('-178252184222.7107', '-35038911.288687', -1); - T('36405716.36527673752', '-36405716.36527673752', 1); - T('-8.776', '7.7701605830015406834539038', -1); - T('6.1', '-6.1', 1); - T('4820089993.340', '-4820089993.340', 1); - T('-131045153934', '-141414703667118909', 1); - T('-0.000000000000001331938110449733777894', '-308053367.910427914340992681501', 1); - T('-0.004193089770215420540599206921', '-30.0', 1); - T('1694294619094634.85763668135', '-1694294619094634.85763668135', 1); - T('40.541819234520934594813', '-40.541819234520934594813', 1); - T('-0.10021507', '-2049541544645617700923988306', 1); - T('6609143733354158875894', '-6609143733354158875894', 1); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js deleted file mode 100644 index 390d92e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/config.js +++ /dev/null @@ -1,557 +0,0 @@ -var count = (function config(BigNumber) { - var start = +new Date(), - log, - error, - obj, - undefined, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - log('\n Testing config...'); - - obj = BigNumber.config({ - DECIMAL_PLACES : 100, - ROUNDING_MODE : 0, - EXPONENTIAL_AT : 50, - RANGE : 500, - ERRORS : false - }); - - assert(true, obj.DECIMAL_PLACES === 100 && - obj.ROUNDING_MODE === 0 && - obj.EXPONENTIAL_AT[0] === -50 && - obj.EXPONENTIAL_AT[1] === 50 && - obj.RANGE[0] === -500 && - obj.RANGE[1] === 500 && - obj.ERRORS === false - ); - - obj = BigNumber.config( 99, 8, 32, 333, 1 ); - - assert(true, obj.DECIMAL_PLACES === 99 && - obj.ROUNDING_MODE === 8 && - obj.EXPONENTIAL_AT[0] === -32 && - obj.EXPONENTIAL_AT[1] === 32 && - obj.RANGE[0] === -333 && - obj.RANGE[1] === 333 && - obj.ERRORS === true - ); - - obj = BigNumber.config({ - DECIMAL_PLACES : 40, - ROUNDING_MODE : 4, - EXPONENTIAL_AT : 1E9, - RANGE : 1E9, - ERRORS : true - }); - - obj = BigNumber.config( null, null, null, null, null ); - obj = BigNumber.config( undefined, undefined, undefined, undefined, undefined ); - - assert(true, typeof obj === 'object'); - assert(true, obj.DECIMAL_PLACES === 40); - assert(true, obj.ROUNDING_MODE === 4); - assert(true, typeof obj.EXPONENTIAL_AT === 'object'); - assert(true, obj.EXPONENTIAL_AT.length === 2); - assert(true, obj.EXPONENTIAL_AT[0] === -1e9); - assert(true, obj.EXPONENTIAL_AT[1] === 1e9); - assert(true, typeof obj.RANGE === 'object'); - assert(true, obj.RANGE.length === 2); - assert(true, obj.RANGE[0] === -1e9); - assert(true, obj.RANGE[1] === 1e9); - assert(true, obj.ERRORS === true); - - obj = BigNumber.config({EXPONENTIAL_AT : [-7, 21], RANGE : [-324, 308]}); - - // DECIMAL_PLACES - - assert(0, BigNumber.config(0).DECIMAL_PLACES); - assert(1, BigNumber.config(1).DECIMAL_PLACES); - assert(20, BigNumber.config(20).DECIMAL_PLACES); - assert(300000, BigNumber.config(300000).DECIMAL_PLACES); - assert(4e+8, BigNumber.config(4e8).DECIMAL_PLACES); - assert(123456789, BigNumber.config('123456789').DECIMAL_PLACES); - assert(1e9, BigNumber.config(1e9).DECIMAL_PLACES); - - assert(0, BigNumber.config({DECIMAL_PLACES : 0}).DECIMAL_PLACES); - assert(1, BigNumber.config({DECIMAL_PLACES : 1}).DECIMAL_PLACES); - assert(20, BigNumber.config({DECIMAL_PLACES : 20}).DECIMAL_PLACES); - assert(300000, BigNumber.config({DECIMAL_PLACES : 300000}).DECIMAL_PLACES); - assert(4e+8, BigNumber.config({DECIMAL_PLACES : 4e8}).DECIMAL_PLACES); - assert(123456789, BigNumber.config({DECIMAL_PLACES : '123456789'}).DECIMAL_PLACES); - assert(1e9, BigNumber.config({DECIMAL_PLACES : 1e9}).DECIMAL_PLACES); - - assert(1e9, BigNumber.config(null).DECIMAL_PLACES); - assert(1e9, BigNumber.config(undefined).DECIMAL_PLACES); - assert(1e9, BigNumber.config({DECIMAL_PLACES : null}).DECIMAL_PLACES); - assert(1e9, BigNumber.config({DECIMAL_PLACES : undefined}).DECIMAL_PLACES); - - assertException(function () {BigNumber.config({DECIMAL_PLACES : -1})}, "DECIMAL_PLACES : -1"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : 0.1})}, "DECIMAL_PLACES : 0.1"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : 1.1})}, "DECIMAL_PLACES : 1.1"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : -1.1})}, "DECIMAL_PLACES : -1.1"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : 8.1})}, "DECIMAL_PLACES : 8.1"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : 1e+9 + 1})}, "DECIMAL_PLACES : 1e9 + 1"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : []})}, "DECIMAL_PLACES : []"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : {}})}, "DECIMAL_PLACES : {}"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : ''})}, "DECIMAL_PLACES : ''"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : ' '})}, "DECIMAL_PLACES : ' '"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : 'hi'})}, "DECIMAL_PLACES : 'hi'"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : '1e+9'})}, "DECIMAL_PLACES : '1e+9'"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : NaN})}, "DECIMAL_PLACES : NaN"); - assertException(function () {BigNumber.config({DECIMAL_PLACES : Infinity})}, "DECIMAL_PLACES : Infinity"); - - BigNumber.config({ ERRORS : false }); - - assert(1e9, BigNumber.config(-1).DECIMAL_PLACES); - assert(0, BigNumber.config(0.1).DECIMAL_PLACES); - assert(1, BigNumber.config(1.99).DECIMAL_PLACES); - assert(1, BigNumber.config(-1.1).DECIMAL_PLACES); - assert(8, BigNumber.config(8.7654321).DECIMAL_PLACES); - assert(8, BigNumber.config(1e9 + 1).DECIMAL_PLACES); - assert(8, BigNumber.config([]).DECIMAL_PLACES); - assert(8, BigNumber.config({}).DECIMAL_PLACES); - assert(8, BigNumber.config('').DECIMAL_PLACES); - assert(8, BigNumber.config(' ').DECIMAL_PLACES); - assert(8, BigNumber.config('hi').DECIMAL_PLACES); - assert(1e9, BigNumber.config('1e+9').DECIMAL_PLACES); - assert(1e9, BigNumber.config(NaN).DECIMAL_PLACES); - assert(1e9, BigNumber.config(Infinity).DECIMAL_PLACES); - assert(1e9, BigNumber.config(new Date).DECIMAL_PLACES); - assert(1e9, BigNumber.config(null).DECIMAL_PLACES); - assert(1e9, BigNumber.config(undefined).DECIMAL_PLACES); - - BigNumber.config({ ERRORS : 1 }); - - // ROUNDING_MODE - - assert(0, BigNumber.config(null, 0).ROUNDING_MODE); - assert(1, BigNumber.config(null, 1).ROUNDING_MODE); - assert(2, BigNumber.config(null, 2).ROUNDING_MODE); - assert(3, BigNumber.config(null, 3).ROUNDING_MODE); - assert(4, BigNumber.config(null, 4).ROUNDING_MODE); - assert(5, BigNumber.config(null, 5).ROUNDING_MODE); - assert(6, BigNumber.config(null, 6).ROUNDING_MODE); - assert(7, BigNumber.config(null, 7).ROUNDING_MODE); - assert(8, BigNumber.config(null, 8).ROUNDING_MODE); - - assert(0, BigNumber.config({ROUNDING_MODE : 0}).ROUNDING_MODE); - assert(1, BigNumber.config({ROUNDING_MODE : 1}).ROUNDING_MODE); - assert(2, BigNumber.config({ROUNDING_MODE : 2}).ROUNDING_MODE); - assert(3, BigNumber.config({ROUNDING_MODE : 3}).ROUNDING_MODE); - assert(4, BigNumber.config({ROUNDING_MODE : 4}).ROUNDING_MODE); - assert(5, BigNumber.config({ROUNDING_MODE : 5}).ROUNDING_MODE); - assert(6, BigNumber.config({ROUNDING_MODE : 6}).ROUNDING_MODE); - assert(7, BigNumber.config({ROUNDING_MODE : 7}).ROUNDING_MODE); - assert(8, BigNumber.config({ROUNDING_MODE : 8}).ROUNDING_MODE); - - assert(8, BigNumber.config(null, null).ROUNDING_MODE); - assert(8, BigNumber.config(null, undefined).ROUNDING_MODE); - assert(8, BigNumber.config({ROUNDING_MODE : null}).ROUNDING_MODE); - assert(8, BigNumber.config({ROUNDING_MODE : undefined}).ROUNDING_MODE); - - assertException(function () {BigNumber.config({ROUNDING_MODE : -1})}, "ROUNDING_MODE : -1"); - assertException(function () {BigNumber.config({ROUNDING_MODE : 0.1})}, "ROUNDING_MODE : 0.1"); - assertException(function () {BigNumber.config({ROUNDING_MODE : 1.1})}, "ROUNDING_MODE : 1.1"); - assertException(function () {BigNumber.config({ROUNDING_MODE : -1.1})}, "ROUNDING_MODE : -1.1"); - assertException(function () {BigNumber.config({ROUNDING_MODE : 8.1})}, "ROUNDING_MODE : 8.1"); - assertException(function () {BigNumber.config({ROUNDING_MODE : 9})}, "ROUNDING_MODE : 9"); - assertException(function () {BigNumber.config({ROUNDING_MODE : 11})}, "ROUNDING_MODE : 11"); - assertException(function () {BigNumber.config({ROUNDING_MODE : []})}, "ROUNDING_MODE : []"); - assertException(function () {BigNumber.config({ROUNDING_MODE : {}})}, "ROUNDING_MODE : {}"); - assertException(function () {BigNumber.config({ROUNDING_MODE : ''})}, "ROUNDING_MODE : ''"); - assertException(function () {BigNumber.config({ROUNDING_MODE : ' '})}, "ROUNDING_MODE : ' '"); - assertException(function () {BigNumber.config({ROUNDING_MODE : 'hi'})}, "ROUNDING_MODE : 'hi'"); - assertException(function () {BigNumber.config({ROUNDING_MODE : NaN})}, "ROUNDING_MODE : NaN"); - assertException(function () {BigNumber.config({ROUNDING_MODE : Infinity})}, "ROUNDING_MODE : Infinity"); - - BigNumber.config({ ERRORS : 0 }); - - assert(8, BigNumber.config(0, -1).ROUNDING_MODE); - assert(0, BigNumber.config(0, 0.1).ROUNDING_MODE); - assert(1, BigNumber.config(0, 1.99).ROUNDING_MODE); - assert(1, BigNumber.config(0, -1.1).ROUNDING_MODE); - assert(1, BigNumber.config(0, 8.01).ROUNDING_MODE); - assert(7, BigNumber.config(0, 7.99).ROUNDING_MODE); - assert(7, BigNumber.config(0, 1e9 + 1).ROUNDING_MODE); - assert(7, BigNumber.config(0, []).ROUNDING_MODE); - assert(7, BigNumber.config(0, {}).ROUNDING_MODE); - assert(7, BigNumber.config(0, '').ROUNDING_MODE); - assert(7, BigNumber.config(0, ' ').ROUNDING_MODE); - assert(7, BigNumber.config(0, 'hi').ROUNDING_MODE); - assert(1, BigNumber.config(0, '1e+0').ROUNDING_MODE); - assert(1, BigNumber.config(0, NaN).ROUNDING_MODE); - assert(1, BigNumber.config(0, Infinity).ROUNDING_MODE); - assert(1, BigNumber.config(0, new Date).ROUNDING_MODE); - assert(1, BigNumber.config(0, null).ROUNDING_MODE); - assert(1, BigNumber.config(0, undefined).ROUNDING_MODE); - - BigNumber.config({ ERRORS : true }); - - // EXPONENTIAL_AT - - assert(true, obj.EXPONENTIAL_AT[0] === -7); - assert(true, obj.EXPONENTIAL_AT[1] === 21); - - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [0.1, 1]})}, "EXPONENTIAL_AT : [0.1, 1]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1, -0.1]})}, "EXPONENTIAL_AT : [-1, -0.1]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [1, 1]})}, "EXPONENTIAL_AT : [1, 1]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1, -1]})}, "EXPONENTIAL_AT : [-1, -1]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : 1e9 + 1})}, "EXPONENTIAL_AT : 1e9 + 1"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : -1e9 - 1})}, "EXPONENTIAL_AT : -1e9 - 1"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1e9 - 1, 1e9]})}, "EXPONENTIAL_AT : [-1e9 - 1, 1e9]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-1e9, 1e9 + 1]})}, "EXPONENTIAL_AT : [-1e9, 1e9 + 1]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [1e9 + 1, -1e9 - 1]})}, "EXPONENTIAL_AT : [1e9 + 1, -1e9 - 1]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [-Infinity, Infinity]})}, "EXPONENTIAL_AT : [Infinity, -Infinity]"); - assertException(function () {BigNumber.config({EXPONENTIAL_AT : [Infinity, -Infinity]})}, "EXPONENTIAL_AT : [Infinity, -Infinity]"); - - obj = BigNumber.config(); - - assert(true, obj.EXPONENTIAL_AT[0] === -7); - assert(true, obj.EXPONENTIAL_AT[1] === 21); - - assert(1, BigNumber.config({EXPONENTIAL_AT : 1}).EXPONENTIAL_AT[1]); - assert(-1, BigNumber.config({EXPONENTIAL_AT : 1}).EXPONENTIAL_AT[0]); - - obj = BigNumber.config({EXPONENTIAL_AT : 0}); - assert(true, obj.EXPONENTIAL_AT[0] === 0 && obj.EXPONENTIAL_AT[1] === 0); - - obj = BigNumber.config({EXPONENTIAL_AT : -1}); - assert(true, obj.EXPONENTIAL_AT[0] === -1 && obj.EXPONENTIAL_AT[1] === 1); - - BigNumber.config({ ERRORS : false }); - - assert(1, BigNumber.config(0, 0, -1).EXPONENTIAL_AT[1]); - assert(0, BigNumber.config(0, 0, 0.1).EXPONENTIAL_AT[0]); - assert(1, BigNumber.config(0, 0, 1.99).EXPONENTIAL_AT[1]); - assert(-2, BigNumber.config(0, 0, -2.1).EXPONENTIAL_AT[0]); - assert(8, BigNumber.config(0, 0, 8.01).EXPONENTIAL_AT[1]); - assert(-7, BigNumber.config(0, 0, -7.99).EXPONENTIAL_AT[0]); - assert(7, BigNumber.config(0, 0, 1e9 + 1).EXPONENTIAL_AT[1]); - assert(7, BigNumber.config(0, 0, -1e9 - 1).EXPONENTIAL_AT[1]); - assert(-7, BigNumber.config(0, 0, []).EXPONENTIAL_AT[0]); - assert(7, BigNumber.config(0, 0, {}).EXPONENTIAL_AT[1]); - assert(-7, BigNumber.config(0, 0, '').EXPONENTIAL_AT[0]); - assert(7, BigNumber.config(0, 0, ' ').EXPONENTIAL_AT[1]); - assert(-7, BigNumber.config(0, 0, 'hi').EXPONENTIAL_AT[0]); - assert(13000, BigNumber.config(0, 0, '1.3e+4').EXPONENTIAL_AT[1]); - assert(-13000, BigNumber.config(0, 0, NaN).EXPONENTIAL_AT[0]); - assert(13000, BigNumber.config(0, 0, Infinity).EXPONENTIAL_AT[1]); - assert(-13000, BigNumber.config(0, 0, new Date).EXPONENTIAL_AT[0]); - assert(13000, BigNumber.config(0, 0, null).EXPONENTIAL_AT[1]); - assert(-13000, BigNumber.config(0, 0, undefined).EXPONENTIAL_AT[0]); - assert(-98765, BigNumber.config(0, 0, 98765.4321).EXPONENTIAL_AT[0]); - assert(98765, BigNumber.config(0, 0, -98765.4321).EXPONENTIAL_AT[1]); - assert(1, BigNumber.config(0, 0, [-98765.4321, 1]).EXPONENTIAL_AT[1]); - assert(-1, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[0]); - assert(98765, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[1]); - assert(98765, BigNumber.config(0, 0, [-1, null]).EXPONENTIAL_AT[1]); - assert(98765, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[1]); - assert(-1, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[0]); - - BigNumber.config({ ERRORS : true }); - - // RANGE - - assert(true, obj.RANGE[0] === -324); - assert(true, obj.RANGE[1] === 308); - - assertException(function () {BigNumber.config({RANGE : [-0.9, 1]})}, "RANGE : [-0.9, 1]"); - assertException(function () {BigNumber.config({RANGE : [-1, 0.9]})}, "RANGE : [-1, 0.9]"); - assertException(function () {BigNumber.config({RANGE : [0, 1]})}, "RANGE : [0, 1]"); - assertException(function () {BigNumber.config({RANGE : [-1, 0]})}, "RANGE : [-1, 0]"); - assertException(function () {BigNumber.config({RANGE : 0})}, "RANGE : 0"); - assertException(function () {BigNumber.config({RANGE : 1e9 + 1})}, "RANGE : 1e9 + 1"); - assertException(function () {BigNumber.config({RANGE : -1e9 - 1})}, "RANGE : -1e9 - 1"); - assertException(function () {BigNumber.config({RANGE : [-1e9 - 1, 1e9 + 1]})}, "RANGE : [-1e9 - 1, 1e9 + 1]"); - assertException(function () {BigNumber.config({RANGE : [1e9 + 1, -1e9 - 1]})}, "RANGE : [1e9 + 1, -1e9 - 1]"); - assertException(function () {BigNumber.config({RANGE : Infinity})}, "RANGE : Infinity"); - assertException(function () {BigNumber.config({RANGE : "-Infinity"})}, "RANGE : '-Infinity'"); - assertException(function () {BigNumber.config({RANGE : [-Infinity, Infinity]})}, "RANGE : [-Infinity, Infinity]"); - assertException(function () {BigNumber.config({RANGE : [Infinity, -Infinity]})}, "RANGE : [Infinity, -Infinity]"); - - obj = BigNumber.config(); - - assert(true, obj.RANGE[0] === -324); - assert(true, obj.RANGE[1] === 308); - - assert(1, BigNumber.config({RANGE : 1}).RANGE[1]); - assert(-1, BigNumber.config({RANGE : 1}).RANGE[0]); - - obj = BigNumber.config({RANGE : 1}); - assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1); - - obj = BigNumber.config({RANGE : -1}); - assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1); - - BigNumber.config({ ERRORS : 0 }); - - assert(1, BigNumber.config(0, 0, 0, -1).RANGE[1]); - assert(-1, BigNumber.config(0, 0, 0, 0.1).RANGE[0]); - assert(1, BigNumber.config(0, 0, 0, 1.99).RANGE[1]); - assert(-2, BigNumber.config(0, 0, 0, -2.1).RANGE[0]); - assert(8, BigNumber.config(0, 0, 0, 8.01).RANGE[1]); - assert(-7, BigNumber.config(0, 0, 0, -7.99).RANGE[0]); - assert(7, BigNumber.config(0, 0, 0, 1e9 + 1).RANGE[1]); - assert(7, BigNumber.config(0, 0, 0, -1e9 - 1).RANGE[1]); - assert(-7, BigNumber.config(0, 0, 0, []).RANGE[0]); - assert(7, BigNumber.config(0, 0, 0, {}).RANGE[1]); - assert(-7, BigNumber.config(0, 0, 0, '').RANGE[0]); - assert(7, BigNumber.config(0, 0, 0, ' ').RANGE[1]); - assert(-7, BigNumber.config(0, 0, 0, 'hi').RANGE[0]); - assert(13000, BigNumber.config(0, 0, 0, '1.3e+4').RANGE[1]); - assert(-13000, BigNumber.config(0, 0, 0, NaN).RANGE[0]); - assert(13000, BigNumber.config(0, 0, 0, Infinity).RANGE[1]); - assert(-13000, BigNumber.config(0, 0, 0, new Date).RANGE[0]); - assert(13000, BigNumber.config(0, 0, 0, null).RANGE[1]); - assert(-13000, BigNumber.config(0, 0, 0, undefined).RANGE[0]); - assert(-98765, BigNumber.config(0, 0, 0, 98765.4321).RANGE[0]); - assert(98765, BigNumber.config(0, 0, 0, -98765.4321).RANGE[1]); - assert(1, BigNumber.config(0, 0, 0, [-98765.4321, 1]).RANGE[1]); - assert(-1, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[0]); - assert(98765, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[1]); - assert(98765, BigNumber.config(0, 0, 0, [-1, null]).RANGE[1]); - assert(98765, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[1]); - assert(-1, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[0]); - - BigNumber.config({ ERRORS : true }); - - // ERRORS - - assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); - assert(true, BigNumber.config(null, null, null, null, 1).ERRORS); - assert(false, BigNumber.config(null, null, null, null, false).ERRORS); - assert(true, BigNumber.config(null, null, null, null, true).ERRORS); - - assert(false, BigNumber.config({ERRORS : 0}).ERRORS); - assert(true, BigNumber.config({ERRORS : 1}).ERRORS); - assert(false, BigNumber.config({ERRORS : false}).ERRORS); - assert(true, BigNumber.config({ERRORS : true}).ERRORS); - - assert(true, BigNumber.config(null, null, null, null, null).ERRORS); - assert(true, BigNumber.config(null, null, null, null, undefined).ERRORS); - assert(true, BigNumber.config({ERRORS : null}).ERRORS); - assert(true, BigNumber.config({ERRORS : undefined}).ERRORS); - - assertException(function () {BigNumber.config({ERRORS : 'hiya'})}, "ERRORS : 'hiya'"); - assertException(function () {BigNumber.config({ERRORS : 'true'})}, "ERRORS : 'true'"); - assertException(function () {BigNumber.config({ERRORS : 'false'})}, "ERRORS : 'false'"); - assertException(function () {BigNumber.config({ERRORS : '0'})}, "ERRORS : '0'"); - assertException(function () {BigNumber.config({ERRORS : '1'})}, "ERRORS : '1'"); - assertException(function () {BigNumber.config({ERRORS : -1})}, "ERRORS : -1"); - assertException(function () {BigNumber.config({ERRORS : 0.1})}, "ERRORS : 0.1"); - assertException(function () {BigNumber.config({ERRORS : 1.1})}, "ERRORS : 1.1"); - assertException(function () {BigNumber.config({ERRORS : []})}, "ERRORS : []"); - assertException(function () {BigNumber.config({ERRORS : {}})}, "ERRORS : {}"); - assertException(function () {BigNumber.config({ERRORS : ''})}, "ERRORS : ''"); - assertException(function () {BigNumber.config({ERRORS : ' '})}, "ERRORS : ' '"); - assertException(function () {BigNumber.config({ERRORS : NaN})}, "ERRORS : NaN"); - assertException(function () {BigNumber.config({ERRORS : Infinity})}, "ERRORS : Infinity"); - - assert(true, BigNumber.config().ERRORS); - - BigNumber.config({ ERRORS : false }); - - assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); - assert(false, BigNumber.config(null, null, null, null, 1.1).ERRORS); - assert(false, BigNumber.config(null, null, null, null, false).ERRORS); - assert(true, BigNumber.config(null, null, null, null, 1).ERRORS); - assert(false, BigNumber.config(null, null, null, null, 0).ERRORS); - assert(false, BigNumber.config(null, null, null, null, '1').ERRORS); - assert(false, BigNumber.config(null, null, null, null, 'true').ERRORS); - assert(false, BigNumber.config(null, null, null, null, false).ERRORS); - assert(false, BigNumber.config({ERRORS : null}).ERRORS); - assert(false, BigNumber.config({ERRORS : undefined}).ERRORS); - assert(false, BigNumber.config({ERRORS : NaN}).ERRORS); - assert(false, BigNumber.config({ERRORS : 'd'}).ERRORS); - assert(false, BigNumber.config({ERRORS : []}).ERRORS); - assert(false, BigNumber.config({ERRORS : {}}).ERRORS); - assert(false, BigNumber.config({ERRORS : new Date}).ERRORS); - assert(true, BigNumber.config({ERRORS : Boolean(1)}).ERRORS); - assert(true, BigNumber.config({ERRORS : Boolean(true)}).ERRORS); - assert(false, BigNumber.config({ERRORS : Boolean(0)}).ERRORS); - assert(false, BigNumber.config({ERRORS : Boolean(false)}).ERRORS); - assert(true, BigNumber.config({ERRORS : Boolean('false')}).ERRORS); - - // Test constructor parsing. - - BigNumber.config({ - DECIMAL_PLACES : 40, - ROUNDING_MODE : 4, - EXPONENTIAL_AT : 1E9, - RANGE : 1E9, - ERRORS : true - }); - - assert('NaN', new BigNumber(NaN).toS()); - assert('NaN', new BigNumber('NaN').toS()); - assert('NaN', new BigNumber(' NaN').toS()); - assert('NaN', new BigNumber('NaN ').toS()); - assert('NaN', new BigNumber(' NaN ').toS()); - assert('NaN', new BigNumber('+NaN').toS()); - assert('NaN', new BigNumber(' +NaN').toS()); - assert('NaN', new BigNumber('+NaN ').toS()); - assert('NaN', new BigNumber(' +NaN ').toS()); - assert('NaN', new BigNumber('-NaN').toS()); - assert('NaN', new BigNumber(' -NaN').toS()); - assert('NaN', new BigNumber('-NaN ').toS()); - assert('NaN', new BigNumber(' -NaN ').toS()); - - assertException(function () {new BigNumber('+ NaN')}, "+ NaN"); - assertException(function () {new BigNumber('- NaN')}, "- NaN"); - assertException(function () {new BigNumber(' + NaN')}, " + NaN"); - assertException(function () {new BigNumber(' - NaN')}, " - NaN"); - assertException(function () {new BigNumber('. NaN')}, ". NaN"); - assertException(function () {new BigNumber('.-NaN')}, ".-NaN"); - assertException(function () {new BigNumber('.+NaN')}, ".+NaN"); - assertException(function () {new BigNumber('-.NaN')}, "-.NaN"); - assertException(function () {new BigNumber('+.NaN')}, "+.NaN"); - - assert('Infinity', new BigNumber(Infinity).toS()); - assert('Infinity', new BigNumber('Infinity').toS()); - assert('Infinity', new BigNumber(' Infinity').toS()); - assert('Infinity', new BigNumber('Infinity ').toS()); - assert('Infinity', new BigNumber(' Infinity ').toS()); - assert('Infinity', new BigNumber('+Infinity').toS()); - assert('Infinity', new BigNumber(' +Infinity').toS()); - assert('Infinity', new BigNumber('+Infinity ').toS()); - assert('Infinity', new BigNumber(' +Infinity ').toS()); - assert('-Infinity', new BigNumber('-Infinity').toS()); - assert('-Infinity', new BigNumber(' -Infinity').toS()); - assert('-Infinity', new BigNumber('-Infinity ').toS()); - assert('-Infinity', new BigNumber(' -Infinity ').toS()); - - assertException(function () {new BigNumber('+ Infinity')}, "+ Infinity"); - assertException(function () {new BigNumber(' + Infinity')}, " + Infinity"); - assertException(function () {new BigNumber('- Infinity')}, "- Infinity"); - assertException(function () {new BigNumber(' - Infinity')}, " - Infinity"); - assertException(function () {new BigNumber('.Infinity')}, ".Infinity"); - assertException(function () {new BigNumber('. Infinity')}, ". Infinity"); - assertException(function () {new BigNumber('.-Infinity')}, ".-Infinity"); - assertException(function () {new BigNumber('.+Infinity')}, ".+Infinity"); - assertException(function () {new BigNumber('-.Infinity')}, "-.Infinity"); - assertException(function () {new BigNumber('+.Infinity')}, "+.Infinity"); - - assert('0', new BigNumber(0).toS()); - assert('0', new BigNumber(-0).toS()); - assert('0', new BigNumber('+0').toS()); - assert('0', new BigNumber('-0').toS()); - assert('0', new BigNumber(' +0').toS()); - assert('0', new BigNumber(' -0').toS()); - assert('0', new BigNumber(' +0 ').toS()); - assert('0', new BigNumber(' -0 ').toS()); - assert('0', new BigNumber('+.0').toS()); - assert('0', new BigNumber('-.0').toS()); - assert('0', new BigNumber(' +.0').toS()); - assert('0', new BigNumber(' -.0').toS()); - assert('0', new BigNumber(' +.0 ').toS()); - assert('0', new BigNumber(' -.0 ').toS()); - - assertException(function () {new BigNumber('+-0')}, "+-0"); - assertException(function () {new BigNumber('-+0')}, "-+0"); - assertException(function () {new BigNumber('--0')}, "--0"); - assertException(function () {new BigNumber('++0')}, "++0"); - assertException(function () {new BigNumber('.-0')}, ".-0"); - assertException(function () {new BigNumber('.+0')}, ".+0"); - assertException(function () {new BigNumber('. 0')}, ". 0"); - assertException(function () {new BigNumber('..0')}, "..0"); - assertException(function () {new BigNumber('+.-0')}, "+.-0"); - assertException(function () {new BigNumber('-.+0')}, "-.+0"); - assertException(function () {new BigNumber('+. 0')}, "+. 0"); - assertException(function () {new BigNumber('-. 0')}, "-. 0"); - - assert('2', new BigNumber('+2').toS()); - assert('-2', new BigNumber('-2').toS()); - assert('2', new BigNumber(' +2').toS()); - assert('-2', new BigNumber(' -2').toS()); - assert('2', new BigNumber(' +2 ').toS()); - assert('-2', new BigNumber(' -2 ').toS()); - assert('0.2', new BigNumber('+.2').toS()); - assert('-0.2', new BigNumber('-.2').toS()); - assert('0.2', new BigNumber(' +.2').toS()); - assert('-0.2', new BigNumber(' -.2').toS()); - assert('0.2', new BigNumber(' +.2 ').toS()); - assert('-0.2', new BigNumber(' -.2 ').toS()); - - assertException(function () {new BigNumber('+-2')}, "+-2"); - assertException(function () {new BigNumber('-+2')}, "-+2"); - assertException(function () {new BigNumber('--2')}, "--2"); - assertException(function () {new BigNumber('++2')}, "++2"); - assertException(function () {new BigNumber('.-2')}, ".-2"); - assertException(function () {new BigNumber('.+2')}, ".+2"); - assertException(function () {new BigNumber('. 2')}, ". 2"); - assertException(function () {new BigNumber('..2')}, "..2"); - assertException(function () {new BigNumber('+.-2')}, "+.-2"); - assertException(function () {new BigNumber('-.+2')}, "-.+2"); - assertException(function () {new BigNumber('+. 2')}, "+. 2"); - assertException(function () {new BigNumber('-. 2')}, "-. 2"); - - assertException(function () {new BigNumber('+2..')}, "+2.."); - assertException(function () {new BigNumber('-2..')}, "-2.."); - assertException(function () {new BigNumber('-.2.')}, "-.2."); - assertException(function () {new BigNumber('+.2.')}, "+.2."); - assertException(function () {new BigNumber('.-20.')}, ".-20."); - assertException(function () {new BigNumber('.+20.')}, ".+20."); - assertException(function () {new BigNumber('. 20.')}, ". 20."); - - assertException(function () {new BigNumber(undefined)}, "undefined"); - assertException(function () {new BigNumber([])}, "[]"); - assertException(function () {new BigNumber('')}, "''"); - assertException(function () {new BigNumber(null)}, "null"); - assertException(function () {new BigNumber(' ')}, "' '"); - assertException(function () {new BigNumber('nan')}, "nan"); - assertException(function () {new BigNumber('23er')}, "23er"); - assertException(function () {new BigNumber('e4')}, "e4"); - assertException(function () {new BigNumber('0x434')}, "0x434"); - assertException(function () {new BigNumber('--45')}, "--45"); - assertException(function () {new BigNumber('+-2')}, "+-2"); - assertException(function () {new BigNumber('0 0')}, "0 0"); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js deleted file mode 100644 index b41cd99..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/div.js +++ /dev/null @@ -1,19930 +0,0 @@ -var count = (function div(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - n = 'null', - N = 'NaN', - I = 'Infinity'; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(dividend, divisor, expected) { - assert(String(expected), String(new BigNumber(dividend).div(divisor))); - //assert(String(expected), String(new BigNumber(dividend).div(new BigNumber(divisor)))); - } - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - log('\n Testing div...'); - - BigNumber.config({ - DECIMAL_PLACES : 40, - ROUNDING_MODE : 4, - EXPONENTIAL_AT : [-7, 21], - RANGE : 1E9, - ERRORS : false - }); - - T(1, 0, I); - T(1, -0, -I); - T(-1, 0, -I); - T(-1, -0, I); - T(1, N, N); - T(-1, N, N); - assert(false, isMinusZero(new BigNumber(1).div(I))); - assert(true, isMinusZero(new BigNumber(1).div(-I))); - assert(true, isMinusZero(new BigNumber(-1).div(I))); - assert(false, isMinusZero(new BigNumber(-1).div(-I))); - assert(false, isMinusZero(new BigNumber(0).div(1))); - assert(true, isMinusZero(new BigNumber(0).div(-1))); - assert(true, isMinusZero(new BigNumber(-0).div(1))); - assert(false, isMinusZero(new BigNumber(-0).div(-1))); - T(0, 0, N); - T(0, -0, N); - T(-0, 0, N); - T(-0, -0, N); - T(0, N, N); - T(-0, N, N); - assert(false, isMinusZero(new BigNumber(0).div(I))); - assert(true, isMinusZero(new BigNumber(0).div(-I))); - assert(true, isMinusZero(new BigNumber(-0).div(I))); - assert(false, isMinusZero(new BigNumber(-0).div(-I))); - T(N, 1, N); - T(N, -1, N); - T(N, 0, N); - T(N, -0, N); - T(N, N, N); - T(N, I, N); - T(N, -I, N); - T(I, 1, I); - T(I, -1, -I); - T(-I, 1, -I); - T(-I, -1, I); - T(I, 0, I); - T(I, -0, -I); - T(-I, 0, -I); - T(-I, -0, I); - T(I, N, N); - T(-I, N, N); - T(I, I, N); - T(I, -I, N); - T(-I, I, N); - T(-I, -I, N); - - T(1, '1', '1'); - T(1, '-45', '-0.0222222222222222222222222222222222222222'); - T(1, '22', '0.0454545454545454545454545454545454545455'); - T(1, 0144, '0.01'); - T(1, '0144', '0.0069444444444444444444444444444444444444'); - T(1, '6.1915', '0.1615117499798110312525236210934345473633'); - T(1, '-1.02', '-0.9803921568627450980392156862745098039216'); - T(1, '0.09', '11.1111111111111111111111111111111111111111'); - T(1, '-0.0001', '-10000'); - T(1, '8e5', '0.00000125'); - T(1, '9E12', '1.111111111111111111111111111e-13'); - T(1, '1e-14', '100000000000000'); - T(1, '3.345E-9', '298953662.1823617339312406576980568011958146487294'); - T(1, '-345.43e+4', '-2.894942535390672495150971253220624e-7'); - T(1, '-94.12E+0', '-0.0106247343816404589885252868678283042924'); - T(1, '', N); - T(1, ' ', N); - T(1, '\t\t', N); - T(1, 'ertgrt546', N); - T(1, 'qweqwdewee', N); - T(1, true, N); - T(1, false, N); - T(1, 'e 4.3', N); - T(1, '4 .3', N); - T(1, '4.0 01e', N); - T(1, ' 4.001', '0.2499375156210947263184203949012746813297'); - T(1, '4.001 ', '0.2499375156210947263184203949012746813297'); - T(1, ' 4.001 ', '0.2499375156210947263184203949012746813297'); - T(1, ' 4.001', '0.2499375156210947263184203949012746813297'); - T(1, ' 4.0 01', N); - T(1, '4. 001', N); - T(1, '4. 001 ', N); - T(1, ' 4.001e ', N); - T(1, ' 4 .001 e ', N); - T(1, undefined, N); - T(1, null, N); - T(1, I, '0'); - T(1, -I, '0'); - T(1, Number.POSITIVE_INFINITY, '0'); - T(1, Number.NEGATIVE_INFINITY, '0'); - T(1, new Date(2012, 11, 4), N); - T(1, new Object(), N); - T(1, function () {}, N); - T('0', 0, N); - T(0, '+0', N); - T('0', '0', N); - T(3, -0, -I); - T(9.654, 0, I); - T(0, '0.001', '0'); - T(0, '111.1111111110000', '0'); - T(N, 0, N); - T(0, N, N); - T(N, '0', N); - T(-1, 1, '-1'); - T(-0.01, 0.01, '-1'); - T(54, -54, '-1'); - T(9.99, '-9.99', '-1'); - T('0.0000023432495704937', '-0.0000023432495704937', '-1'); - T(NaN, NaN, N); - T(NaN, N, N); - T(N, NaN, N); - T(N, 4, N); - T(N, '4534534.45435435', N); - T(N, 99999.999, N); - T(Infinity, '354.345341', I); - T(3, -I, '0'); // 78 - T(-Infinity, -I, N); - T(-I, -Infinity, N); - T(I, '-999e999', -I); - T(1.21123e43, -I, '0'); - T('-999.0', I, '0'); - T('657.342e-45', -I, '0'); - T(I, 123, I); - T(-0, I, '0'); - T(100, 100, '1'); - T(-999.99, '0.01', '-99999'); - T('10 ', 4, '2.5'); - T('03.333', -4, '-0.83325'); - T(-1, -0.1, '10'); - T(43534.5435, '0.054645', '796679.3576722481471314850398023606917375789185'); - T('99999', '1', '99999'); - T('3e', 8, N); - T('-3..0', 13, N); - T('0 0', -0.4, N); - T(' +3e0', 4, '0.75'); - T(9.9806, '+ 1', N); - T(' +2 0', '1e1', N); - T('e3', 4, N); - T(' ', 0, N); - T(323, null, N); - T(undefined, undefined, N); - T('undefined', undefined, N); - T(null, null, N); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - T('999.5', 1, '1000'); - T('-999.5', 1, '-1000'); - - BigNumber.config({ROUNDING_MODE : 1}); - T('999.5', 1, '999'); - T('-999.5', 1, '-999'); - - BigNumber.config({ROUNDING_MODE : 2}); - T('999.5', 1, '1000'); - T('-999.5', 1, '-999'); - - BigNumber.config({ROUNDING_MODE : 3}); - T('999.5', 1, '999'); - T('-999.5', 1, '-1000'); - - BigNumber.config({ROUNDING_MODE : 4}); - T('999.5', 1, '1000'); - T('-999.5', 1, '-1000'); - - BigNumber.config({ROUNDING_MODE : 5}); - T('999.5', 1, '999'); - T('-999.5', 1, '-999'); - - BigNumber.config({ROUNDING_MODE : 6}); - T('999.5', 1, '1000'); - T('-999.5', 1, '-1000'); - T('999.4', 1, '999'); - T('-999.4', 1, '-999'); - T('999.500001', 1, '1000'); - T('-999.500001', 1, '-1000'); - - BigNumber.config({ROUNDING_MODE : 7}); - T('999.5', 1, '1000'); - T('-999.5', 1, '-999'); - - BigNumber.config({ROUNDING_MODE : 8}); - T('999.5', 1, '999'); - T('-999.5', 1, '-1000'); - - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('-2.8', '3', '-1'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-3', '-0.0047', '638.297872341'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('15', '-3', '-5'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('3', '0.38', '7.894736842106'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('-2.9', '-2.2', '1.3181818181818182'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('-1.20', '0.00035', '-3428.571428571'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('-6', '-1.0', '6'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('1.1', '-1.5', '-0.7333333'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-1.05', '-2', '0.525'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('-2', '-1', '2'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('-5', '1', '-5'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('0.000033', '-1', '-0.000033'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('6', '-3', '-2'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('-1.20', '1', '-1.2'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); - T('-1', '0.0019', '-526.315'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-7', '3', '-2.333333333333'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('2', '4', '0.5'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('33', '-2', '-16.5'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('-2', '-1', '2'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('-10.2', '12', '-0.85'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('-1.0', '10', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('1.3', '-3.0', '-0.434'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('1.4', '6', '0.233333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('55', '2', '27.5'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('1', '7', '0.14285714285714286'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-1.4', '2', '-0.7'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('-5', '3', '-2'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-1', '2', '-0.5'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('-8', '-3', '2.67'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('-16', '7', '-2.285714285714'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('1', '1', '1'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('0.000019', '1', '0.000019'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('26', '-7.7', '-3.376623'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('-5.7', '-9.1', '1'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('1', '6.9', '0.144927536232'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('33', '-5.5', '-6'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('1.9', '1', '1.9'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-5', '0.00014', '-35714.2857142857142858'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('3.0', '3', '1'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-2', '3', '-0.666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('5', '3', '1.66666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('-0.000059', '-4', '0.00001475'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('1.0', '3', '0.333'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('2', '4', '0.5'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('-6.3', '5.2', '-1.211538'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('3.5', '-1.7', '-2.0588235294117647058'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('3', '3', '1'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('3.5', '-6', '-0.5833333333'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('1', '-5.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('-3.0', '-1.5', '2'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('-3', '-3', '1'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('11', '1', '11'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('-3.0', '-1.1', '2.7272727272727272'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-1.2', '-7', '0.2'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('3', '7', '0.42857142858'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('1', '2', '0.5'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-2', '-0.51', '3.92156862745098'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('8', '4', '2'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('1.2', '0.000016', '75000'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('37', '-2.5', '-14.8'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('0.015', '26', '0.00058'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('6', '-91', '-0.06593406'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('-3', '2', '-1.5'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('1', '-19', '-0.0526315789473684211'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('1.8', '3', '0.6'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('-1', '-8.7', '0.114943'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('-0.0056', '1', '-0.0056'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('7', '0.00119', '5882.35294117647059'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('1.2', '-1.0', '-1.2'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-0.000013', '-0.38', '0.0000342105263157895'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('1', '-3', '-0.333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('5.8', '-2.1', '-2.761904761904762'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-9', '-6.3', '1.429'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-12', '-0.00027', '44444.444444444444'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('-9', '-2', '4.5'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('1', '3', '0.3333333333333'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-1', '2', '-0.5'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('1', '-0.014', '-71.42857142857143'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-4', '-7', '1'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('1.1', '1.2', '0.9166666666666'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-1', '-6.1', '0.16393442622951'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('5', '2.8', '1.785714285714286'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-1', '7', '-0.142857142857'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-1', '0.000016', '-62500'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-3', '-1.4', '2.14285715'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('6', '1', '6'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('-0.60', '-7', '0.0857142857'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('1', '3', '0.3333'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('-1', '-0.0061', '163.93442622950819672131'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('1.9', '-5', '-0.38'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-9.5', '-3.1', '3.06451612903'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('-9', '-3', '3'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('-0.00090', '-5', '0.00018'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('6', '-2', '-3'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('4', '10.7', '0.373831775701'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('-20', '5.2', '-3.8461538461538462'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-2', '1.22', '-1.639344262295082'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('-2.3', '2.5', '-0.92'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('0.000123', '-1.5', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-8', '1', '-8'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('-1.4', '-2.2', '0.6363636363636'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('7', '-3', '-2.33333333333333'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('7', '-0.076', '-92.105'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-2.9', '8.0', '-0.3625'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('2', '6.6', '0.30303030303'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('-8', '10.0', '-0.8'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('8', '-1.1', '-7.27272727272728'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('4', '1', '4'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('-6', '9', '-0.67'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('1', '0.000033', '30303.03030303030303030304'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('2.0', '3', '0.66666666667'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('-2', '-30', '0.06666666667'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('1.8', '-1', '-1.8'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('2.6', '-0.00010', '-26000'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-6.4', '-3', '2'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-1', '8', '-0.125'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-1.00', '3', '-0.33333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); - T('-4.0', '4', '-1'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('1', '2', '0.5'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-0.00012', '8', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-2.9', '5.3', '-0.5471698113207548'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-2', '3', '-0.66666666667'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-5', '-6', '0.833333333333'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('97', '0.032', '3031.25'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('-8', '1.7', '-4'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-1.1', '-5.5', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-15', '-3', '5'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('-6.1', '4', '-1.53'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-2.7', '-6.7', '0.4029850746268656716'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-4.8', '-4', '1.2'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-8', '5', '-1.6'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('2', '6.1', '0.3278688524590163'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('5.6', '-15', '-0.373333333334'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('-3', '-4', '0.75'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('1.0', '0.00018', '5555.5555'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('-14', '-0.00012', '116666.6666667'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-0.0000113', '-6', '0.00000188333'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-2.0', '-7.7', '0.26'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('-3', '0.0073', '-410.958904109589041096'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('4.4', '-1', '-4'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('-3', '-1.4', '2.14285714285714'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-2.2', '-7.6', '0.2895'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('3.8', '9.4', '0.40425531914893617'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-1', '7', '-0.14285714285714'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-5', '-4.3', '1.1627906977'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('3', '2', '2'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('2.7', '1', '2.7'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('4', '2', '2'); - - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('4', '-0.0025', '-1600'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('205783.0120', '-6.58', '-31274.01398176291793313069908814'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); - T('2.6', '0.0000014140003', '1838754.9139841059439662070793054287187916438207262049378631673557637'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-43506731.7020', '0.0000000000000020852', '-2.0864536592173412622290427776712065988e+22'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('85374685.72', '-4602612.194', '-18.54918079591738899390748887413215766'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('-11.889579111', '-7', '1.698511301571428572'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('21.6', '-3', '-7.2'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-180.72', '0.0000000001581', '-1143074003795.0664136622390891840607210626185958254269449715370018976'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('-0.00119467686529', '20885766', '-5.72005290727665913713674662447142230742219366050543705220100617e-11'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('-0.000000015740712', '-0.0000000000000000000266', '591756090225.56'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('-10', '1197', '-0.00835'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); - T('-0.0000000000000000000759363178177', '3.916', '-1.939129668480592441266598569969356486210418794688457609806e-20'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('-52073715', '157.5445101', '-330533.351920334544'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-325.0', '-90', '3.6111111111111111111111111111111111'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('-0.00000000000000031', '-0.0000000000000032', '0.096875'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('-0.00000000879', '-5.6', '1.5696428571428571428571428571428571428571428571428571428571428571428571428571429e-9'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('-0.00000251681', '127.91', '-1.96764131029630208740520678602142131185990149323743256977562348526307560003127198811664e-8'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('2961036591.4', '0.000013043', '227021129448746.45403664801042704899179636586674844744307291267'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('4', '3.38', '1.1834319526627218934911242603550295857988165680473372781065088757396449704142011835'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('-0.0000000000001136', '0.00000000000000144185989652', '-78.7871278438211'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('11.8853', '-3', '-3.961766666666666667'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('-1.20', '-9568301.017', '1.25414114571433324713095196302601858245865008826571702745166676229370972349291e-7'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('0', '-6988.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('5', '-3936814629.28', '-1.2700623399468e-9'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('2102712', '0.00000000000000304964', '689495153526317860468.77664248894951535263178604687766424889495153526317860468776642488949515352631786046877665'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('0.00000000000000000006318187', '89048', '1e-16'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-18.472', '-2304.31', '0.00801628253143023'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('0.933711', '-41.4', '-0.022553405797101'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('-0.00000000159747', '-54.285323180', '2.9427290958609339534561098287634805235030747771261587614997044952657496548775267e-11'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('36.0', '0.15278', '235.6329362482000261814373609111140202'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('3273788', '2.0', '1636894'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-144.7', '0.000484419582', '-298707.99071042'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('-0.000136434', '5.30860461610', '0'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('0.00000000000027963249176', '690.93615', '0'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('0.000000000000000041166', '-954146.63778', '-4.31443117546170598004200620115714474e-23'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('80606.45399', '29030.6863', '2.7765948471566102796543256368003948980014296113970960445396015319141'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-307761.1715', '3', '-102587.057166666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('-1.09', '-1.1', '0.990909090909090909090909090909090909090909'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('-0.000000122', '1489.273', '-8.1919164585673681051090028490411093197822024e-11'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('1663.22977564', '10487', '0.158599196685420043863831410317535996948603032325736626299227615142557452083'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('-98', '-4242.281285', '0.023100778429405819091036534132130279051027'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('0.00880312', '32.53937', '0.000270537505796823970470233443364146263434110740312427683756630813688157'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('5.82', '805.9', '0.0072217396699342350167514579972701327708152'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('5', '20.1', '0.2487562189054726368159203980099502487563'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('-0.000000190702099115', '-0.00000000000005357223', '3559719.2634131526725693516958319636871565734709942072599927238421846542509057'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('35.8812641704', '2402312', '0.00001493613825781164145206784131286860324554'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('-1425073364', '-10284292.72', '138.5679504462801793918600169910371'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('138823.37071', '-25036.2', '-5.5449058047946573361772153921122215032632747781212803860010704499884167725135'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-1.0', '2.7', '-0.37037037037037037037037037037037037037037037037037037037037037037037037037037037037037037037038'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('29638493.73', '41.59351', '712574.96013200136271259626802354501940326748091228655624399094954958117263967383373031032966441159'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('-1392357420', '65060.9365', '-21400.8204447'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('-1.11047040', '0.000000226215484', '-4908905.35150104932693289907599782161684387616897170487233314232371468'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); - T('-220.431900', '1674.3721017', '-0.1316504854423901203011'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('5.6685641929', '-924503127242', '-6.131471085241861e-12'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-760.5', '-5.9896920', '126.968131249486618009740734582011896438080623'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-0.00000065', '-32268321', '2e-14'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-1.11', '104938.6447517', '-0.0000105776094462285121510625524763430267264835898746917817157441798492755443580876965212689285842'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('0.0000000000000000000389', '0.000000004345746504', '8.95128143443131675128191048301422047234994450564482e-12'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('-30614604.60', '-178450189969', '0.000171558262870542789273504424217640996351681502199029'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('5.09', '-261.708521', '-0.019449118357135952787719892391276018101069'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('-17657942.918', '0.000000000000120', '-147149524316666666666.66666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('-5228', '799347.8', '-0.006540332005667620527635154559754840133418769651'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); - T('949309450.95', '-1', '-949309450.95'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('-122597442444', '-0.0000000000088102620620', '1.391530031470702919937729316547088199429316816614801e+22'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-429572333.64', '-153.40', '2800341.158'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('-6', '0.0023', '-2608.6956521739130434782608695652173913043478260869565217391304347826086956522'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('13023138.990', '0.0000912303', '142750149785.7619672411468558143511530708547489156563115543848919'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-1', '-356.9405623', '0.002801586890423296674455874806582608445675102249369656467312'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-0.1761', '-1', '0.1761'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('-0.00000000000000001080427993', '0.00000000000000000542', '-1.993409581180811808118081180811808118081180811808118081180811808118081180811808118081180811808118081'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('-3', '-0.00000000000028491', '10529640939243.9717805622828261556280930820259029167105401705801832157523428'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('-2.11', '-1', '2.11'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-125.8754715', '54.73', '-2.29993552896035081308240453133564772519641878311712040928193'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('-0.00000138983610179', '65323.63269', '-2.127616062605718506314134992421224454104988018234477033e-11'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('0.0000000627720', '2089419.6460', '3.0042792083520018744956320756256543784790276639334327384801473241244712599969494113e-14'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('-217', '13400814874', '-1.6193045127503341107643153014427650841973716232087e-8'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); - T('-209172.068', '-95.8169', '2183.03940119123035706645'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('722260.251', '312846', '2.309'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('0.000000000000000000043026447166', '999.3474', '4.30545445617810182925377101096e-23'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('0.000001001769', '0.0000000000000545377150533', '18368371.300868872296239200828462479512442900146931227723210727885333446839709498'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('-21639.9', '1', '-21639.9'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('-4064.98760', '-1050752806.1', '0.00000386864310654349629150136228220537701973975247040741640708905074224574083676101638345175007951'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); - T('-0.00000000000000612', '-38134.257', '1.60485623202256176120069679081462108990349543194194133636850457057548020405904329e-19'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('-265049816341', '-2', '132524908170.5'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('18', '1', '18'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('-0.0000000922', '-282.900786', '3.259093101283e-10'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('-260074626.109', '-8.200', '31716417.8181707317073170731707317073170731707317073170731708'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('-0.0000000000000003606626', '121920.32', '-2.9581828525384447809848268114781851e-21'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('0.051829', '-21845698', '-2.372503731e-9'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('0', '-108765478', '0'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('4.06', '-81.9529', '-0.049540650788440677511106989502506927759725403249915500244652721258186104457560379193414754085'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); - T('11', '8.168', '1.34671890303623898139079333986287952987267384916748285994123408423114593535749265426053'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('3.0', '-187113.5', '-0.00001603304945928540699'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('0', '29.1292', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('-539', '1.63309627', '-330.0479034221295478190027339906911'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('4.6', '9576522.7', '4.8034136649621265973712984567978938743600534670063487e-7'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('888.495', '2', '444.2475'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('0.0000000660515321', '0.000000000000000000157532', '419289617982.37818348'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('1194135', '19.3', '61872.2797927461139896373056994818652849740932642487046632124352331606217616580310880829015544041450777202'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-199941187483', '1605', '-124573948.587538940809968847'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('0', '-0.000000000013210', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-15579.9582254', '1.82', '-8560.41660736263736263736263736263736263736263736263736263736263736263736'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('0.00021763543', '0.000000000000000006304245', '34522045066459.1874205'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('-9.6', '-6245', '0.001537229783827061649319455564451561248999199359487590072057646'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('-1558.3541291', '-0.0000000000905501700', '17209842114045.72735755217245864916653386735773108'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); - T('-2196.0533764', '-6.3', '348.5799'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('134631.169', '-0.0051', '-26398268.43137254901960784313725490196078431373'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('0', '3', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('-81.21601', '0.000000000000000331', '-245365589123867069.4864048338368580060422960725076'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-0.18606', '-2.1', '0.0886'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('-0.000000000000000000461', '-19253159', '2.394412262424052073740210632447381751742662e-26'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('-929', '-424621853.40', '0.000002187828988454978092279223234156793'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('2.0', '-1186150187', '-1.68612712110123370068650505553560225506249488118151769932655e-9'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('0.000000000000000000522', '128362.3152', '0'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-6.08', '-930214.3174', '0.0000065361281655972929233694893030249977100599720354293484668310696547444906054936625511027637511'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('-13468.73594', '-17.44', '772.28990481651376146788990826'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-4.94229', '-2', '2.471145'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-24.40246', '35.4837273223', '-0.687708474883474291'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('1', '29.98403894', '0.0333510772848536061833169430909230269296068356826913859390818947489000292767095'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-430', '1689585.07', '-0.00025450035493033801488314524464873'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('3083081101.8', '-1', '-3083081101.8'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('2.4', '4.3', '0.558139534883720930232558139534883720930232558139534883720930232'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('467216723', '1.1', '424742475.45454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); - T('0', '-16208070.9330', '0'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-14.01', '264360777.70', '-5.2995758757748578e-8'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('1', '-1', '-1'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('510', '1087.241548591', '0.46907699642359095636184954255459240447481123022295185773956042018'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-522.4', '-0.0000000430', '12148837209.302325581395348837209'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('-0.0001750931579', '-1641610', '1.0665941234519770225571237991971296471147e-10'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-61755625405', '-5.209793', '11853757990.9'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('0.0000052665303263', '0.00000029854211122', '17.64082897644887901654'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('-17926303.14', '11.395', '-1573172.7'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); - T('0', '-3.40233', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('-0.0000000965828945324', '1.2', '-8.04857454436666666666666666666666666666666666666666666666666666666666666666666666666666666667e-8'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('-22442925.654', '20806718.15', '-1.07863842304222302353'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('0', '0.0000000000005381', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('-95.4860600', '92963', '-0.00102714047524283854866990092832632337596678248335359228940546238826199'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-25.24782827', '96008.9585', '-0.00026297'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('38', '14576527.63', '0.000002606930879875127022964384831341344632706602978531177'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('546214273620', '-2', '-273107136810'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('13', '3015907', '0.0000043104777435113218'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('-1.271', '-6.28', '0.202388535031847133757961783439490445859872611464968152867'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-6', '6964.78469', '-0.00086147673863'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('-142.72', '-26745.79', '0.005336166925710551081123421667484863972984159376111156185702497477173042934982'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-28.0', '2363923123', '-1.1845e-8'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-91504451.175', '-18397.6177841', '4973.71193645'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('-1151830', '5.2289', '-220281.5123639771271204268584214653177532559429325479546367304786857656486067815410506989997896307062670925'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('0.0000000129422662', '-776', '-1.6678178092783505154639175257731958762886597938144329896907216494845360824742268041237e-11'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('30323', '-0.00000000000000071420145253', '-42457208526506439363.7659352409214288776209918638766283439'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('-0.000000000000000000036513', '62054611', '-1e-8'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-0.000000000000302978047', '-0.00000000000030', '1'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('36.98', '-0.61069704476', '-60.5537562647497361045'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('-2209843.27987', '30200516.420', '-0.07317236729126104129049856823607256713261196611021395'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('-11.0', '-2.17', '5.069124423963133640552995391705069124423963133640552995391705069124423963133640552995391705069124424'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-0.000000470683', '0.000029822775', '-0.01578266945312768513325805529498848'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('-198.608', '-3.933769477', '50.4879610158203482344016367484769113225797699685593447396612662'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('-38294.7981', '34.2598', '-1117.77646396067694499092230544253031249452711340988563856181297030338764382745958821'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('0', '27.783', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('-7', '-251.5', '0.02783300198807157057654076'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('54335.16', '-0.000000411', '-132202335766.42335766423357664233576642335766423357664233576642335766423357664233576642'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-40946555.55', '2.60', '-15748675.211538461538461538461538'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-198237302872', '7', '-28319614696'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('0.00000000000000000005371334', '8', '6.7141675e-21'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('1.5258', '-1190852944', '-1.2812665137938307855415605371337940782720187e-9'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('1', '-0.00000000000000000005562070', '-17978917920846015961.6833301270929707824604868331394606684202104612131815'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); - T('-5.2', '-23421458', '2.2201862924161254179820914650146886671188446082220842101290192950413249252032047e-7'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('-1416968', '195116', '-7.2622'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('-2235863915', '4049', '-552201.510249444307236354655470486539886391701654729562855025932328970116'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); - T('0.000000026', '-135677754', '0'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('0.000000000000000000040315579', '-2031.1', '0'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('19.54706', '26', '0.75181'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('-7', '777276.6629', '-0.000009005802353415800720292'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-116803.539531', '6', '-19467.2565885'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('1920.573', '-2543.47', '-0.75509952938308688523945633328'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('-1', '29009.081658', '-0.000034472'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('0.339269187032', '124035.423', '0.00000273526045081492566845198730043432834505671819251182785098414990691812'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('537169.20', '-4.69236435329', '-114477.299620471646505593344002922087290682432367736916573868681887835934263932376920317895'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('0', '1', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-131935099', '99727829.3', '-1.322951676839515848160549504710817966234426'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('0.0000000000000000242440379', '161792.78', '1.49846228614156948165424934289404014196430767800639806e-22'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('-1212.57', '8355.383', '-0.1451244066250463922479675677344'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('-9.5', '-2058275.01670', '0.0000046155153820169283114828179899366894939001277535158647490181'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-7.632', '2211501.37', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('-0.000000000000000042828921', '-95402.2642', '4.489298169088947052474672818090202098159427121856506210677544904e-22'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-0.00001354439488', '-136.072', '9.953844200129343288847080958e-8'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-146339.03', '-225012.7', '0.6503589797375881450247030500945057767850436886451298082286022077864938290149844875422587258408081'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); - T('0.000000000000632992', '0.000048002', '1.3186783884004833131952835298529227948835465188950460397483438190075413524436481813258e-8'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('-5', '1657832.833', '-0.0000030159856292338251693920939494386283517404556072029489115565127669'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); - T('37.5', '-119757494', '-3.1313280486647457736548829253224019534009287e-7'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-318.60', '-0.00000000000001136', '28045774647887323.943661971830985915'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('811.332688', '-34.233242365', '-23.7001414984139788186'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('-133201997.7', '-16558085765', '0.0080445287933921992220095255679'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('0.0000000000000033574327', '-25435.385', '-1.31e-19'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('-340.749462705', '0.000000000000004888', '-69711428540302782.32405891980360065466448445171849427168576104746317512274959083469721767594108019639934533552'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-11047200.46', '0.27', '-40915557.2592592592592592592592592592592593'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('0.00000462644', '-26293112', '-1.75956349328295e-13'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-4432656.421', '308.63692', '-14362.04204279902741383'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('7', '0.000000000000000000157', '44585987261146496815.28662420382165605095541401273885350318471337579617834'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('-562908.8975', '-41412.2282', '13.59281840091859630967647377158034688894136828889588703657341480601616'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('51.0770', '-0.00000000049300', '-103604462474.645030425963488843813387423935091277890466531'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-46603.49', '-7', '6657.64142857142857142857142857142857142857142857142857142857142857142857'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('82292411.5750', '0.00000000000000000001936', '4.25064109375e+27'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('0', '435', '0'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-1.25603776', '35257646', '-3.562454963669440665437505385356696814075e-8'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('0.0000137705283114', '2102089', '6.55087787025192558450189311679952656619201185106815e-12'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('-1.452', '-0.00000000000003591683', '40426730309996.7342'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('2', '-136175936.0', '-1.4686882710319685263628369699621524907308145838630402364188633151748632004996829983235804599e-8'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('9.219390', '650720', '0.0000141679831571182689'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('-999.439', '0.000000323', '-3094238390.0928792569659442724458204334365325077399380804953560371517027863777089783281733746130030959752322'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); - T('732035039.9', '-0.000000000000000035', '-2.09152868542857142857142857142857142857142857142857142857142857142e+25'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('239310308', '3.1', '77196873.5483870967741935483870967741935483870967741935483870967742'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-2746.62', '0.00000053794792', '-5105735886.1058520311780367140372993727719962185186997284049355558433'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('27804.01396', '-9810.75291', '-2.8340346775689002649644755959917453471'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('27.71', '0.0000000000011523', '24047557059793.456565130608348520350603141543'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-283504594', '78447408821.3', '-0.0036139446574432038958112757577688127075463618032118161382991188901351'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); - T('2774774', '-79.4027727', '-34945.5554969555867914924839897939735295918702849025321253044857462515285691'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('2.50', '29.54', '0.0846310088016249153689911983750846310088016249153689912'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('-26269.730773', '-1.551888', '16927.5944997319394183085377295268730733145690926149309744002144484653531698163785016'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-7339052664.8', '-14235', '515563.94'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('0.00000000000000233553653', '-0.108', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('-0.0000000000000000008666', '47471219.4', '-1.82552715298482515913632e-26'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('-1069.7', '-1004', '1.06543824701195219123505976095617529880478087649402390438247011952191235059760956175298804780876494'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-370.147', '0.0000000000000000017022491', '-217445848554127595074.069946637069744962708454'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('5720.76', '-1091.4373472', '-5.24149188652576099056178'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('1.82075', '-1.83', '-0.99494535519125683061'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-0.0000202', '-120999', '1.6694352845891288357755022768783213084405656245092934652352498780981661005462855e-10'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-2.383099', '0.000007206', '-330710.38023868998057174576742'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('3.507', '-4', '-0.87675'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('-5.4058497', '0.0000252', '-214517.84523809523809523809523809523809523809523809523809523809523809523809523809523809523'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('53.7606', '1.5', '35.8404'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('-472.386625', '-2133245.7', '0.0002214403268221752421673696564816701611'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-21.439', '-0.000118', '181686.4406779661016949152542372881355932203389830508474576271'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('0', '7.07557', '0'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('3.282', '-1.4', '-2.344285714285714285714285714285714285714285714285714285714285714285714285714285714285714285715'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('0.0000000000000000001520', '-393665.3', '-3.8611480361616835418310935711123129216621327813246430407e-25'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-1.49', '-50637.5', '0.000029424833374475438'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('-27957', '-0.00000000000000088964279', '31424972263305815135.0835991151010171172184737202220230436532847076746'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-47', '-0.0000000000027870669', '16863606682710.05622434108058188341298875889918537656918102683505731419651246979396152996'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('0.0000000000013548773', '-40894', '-3.31314447107155083875385142e-17'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('-18409.7', '0.000000000000000003349', '-5.49707375335921170498656315318005374738727978501045088086e+21'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('-0.000000576194', '6781238.273', '-8.496884739976751440717293314904877992922281732659595045025e-14'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('-1175147973.37', '-227632.0', '5162.49021829092570464609545230898994868911225135306108105'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('2.634685', '-21.564121', '-0.1221791048195286976918743870895549139239202'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('-10.499', '6', '-1.749833333333333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('10164.877', '1', '10164.877'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('-12826.3', '0.00000000003228296', '-397308673058480.38718'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-6', '-0.00000000018569207', '32311557515.6225034273138319800086239547009196461647500617554643017335096754535613717914825334221327'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-0.0000000000000025251098436', '-1196.32', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-38919054533', '2048.5', '-18998806.21576763485477178423236514522821577'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('-53882', '-0.00047938018', '112399306.95507686613159517775641037140918091357051933185890163'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('6.743484', '-35154451448', '-1.9e-10'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('135.562', '9.5', '14.2696842105263157894736842105263157894736842105263157894736842105263157894736843'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-0.000000000000027', '-3', '9e-15'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('440895409.37', '-4.244', '-103886759.983506126295947219604147031102733270499528746465598492'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); - T('-56.521', '1468243.7', '-0.000038495653003653276360048403408781'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-1', '-9.113', '0.1097333479644464'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-8.3', '-2599.30', '0.003193167391'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('522007.492', '0.00000000000003658', '14270297758337889557.135046473482'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-199.8732', '15499', '-0.012895877153364733208594102845344860958771533647332085941028453448609588'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('-6', '20461.253171', '-0.000293237171245399473680164650751928277384589524758585960805127657740372523930782655776'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('-4.031987', '-718944.2373', '0.00000560820546408738840864202306333723776827329748735159657979777508955909117765453713'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('-13.301223979', '-1088989.879', '0.00001221427695105327971555922972'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('-120.71282', '-1.6332383817', '73.91010482765707587215956253570819447023775512830883651036597482626990604723675408589'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('32618.98', '-0.05105766719', '-638865.4592975343494145252'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('-0.3666', '0.0000000099345', '-36901706.175449192208968745281595'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-27', '277.0', '-0.097472924187725631768953068592057761732852'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('39.944', '-1', '-39.944'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('960310', '-1.3', '-738700'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('1083.46', '5.7', '190.080701754385964912280701754385964912280701754385964912280701754385964912280702'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('0.0000000011317252', '-0.0000000000242784677', '-46.6143586153915306607261709518842492683341790964839185464740017344669573195511016537505783366'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('0.00000000000000000003202048434', '-37461279.158', '-8.54762172026950196221059857488382671526926186870065554209444969428504959e-28'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-105350.008', '8302.589', '-12.6888140555'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('7205.714', '1068.943458', '6.74096'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('0.0000000000000001024647', '2.42438', '4.2264290252e-17'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('-3323840.9', '117167158', '-0.02836836667148656110614204707431753188'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('-1289.2', '-1324714.0', '0.000973191194476694592'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('1.703004195', '-1', '-1.703004195'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('4.735795', '-115.173571', '-0.041118764998612398672608666444839154982873631659818900639974078775416280182'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('0.00000053', '-50426083392', '-1.05104335762091621934229636709676268327383326911704322753205032418314690276868053e-17'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('2.5', '-0.000000000007057964178', '-354209788679.9447567272705418369721853241176935'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-1', '-6.8', '0.147058823529411764705882352941176470588235294117647058823529411764705882352941177'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('-5', '-0.0007996', '6253.1265632816408204102051025512756'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('0.000000000000013077699', '-2.3', '-5.6859560869565217391304347826086956521739130434782608695652173913043478260869565217e-15'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('72500883354', '0.0749', '967969070146.8624833110814419225634178905206942590120160213618157543391188251001335113484646194926568758344'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-0.754', '-1024768.17707', '7.35776165645408862461994055098044302504855104243406011526606548002844102407955e-7'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('0.0000097840146', '1.7', '0.0000057553027058823529411764706'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('147.9', '2', '73.95'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('87333.5', '-3756', '-23.251730564430245'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); - T('-1508.641', '-0.0000000000000000145261483022', '103856918476559596968.42478791638561659073463014971310830350197937413978111299417764800135'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-0.000000007182', '2.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-6', '-1.1', '5.454545454545454545454545454545454545454545454545454545454545454545455'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('2', '6577.20806', '0'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('-0.00000000021318134', '4229870.2971', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('69960189968', '-598702452', '-116.8530206186628412204999621414612145266443639018201315133414552977311006569921313768061868569063'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('1', '3', '0.33333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('144.0', '-3.2702', '-44.034004036450370007950584062136872362546633233441379732126475444926915784967'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('3', '1542.4268', '0.001944986951730869821504657465754614740874575052767496000458498257421357045922697919928'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('-434863226.9', '0.00000000000000042892', '-1.01385625967546395598246759302434020330131493052317448475240138021076191365e+24'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('-9', '5.6297132122', '-1.5986604753677935495031822750866200864270021687056053835551719260986336749084605528602738'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-8.408363', '-4.6268', '1.81731715224345119737183366473588657387395176'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('-1.061', '-199699007.68', '5.3129958547423464092398037898953269350567060364072811601063635290268259e-9'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); - T('-10.70', '14.8787', '-0.719148850369992001989421118780538622325875244477004039331393199674703'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-316352', '-77.54', '4079.855558421459891668816094918751612071189063709053391797781790043848336342533'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('984.409', '138.1693670', '7.12465448292891144243282232016015532589072366525'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('20.7946994', '-4.1047432', '-5.06601713841684420111835498016051284280098204438221616397342469560581'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('1', '-5760.0', '-0.0001736111111111111111111111111111111111111111112'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('658.3', '-5.3', '-124.20754716981132075'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('2.2', '0.000000000000017779128', '123740601901285.59735888059301896020997205262260331327835650882315488138675867567858221168'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('37440.0', '-0.00000307068092966', '-12192735376.17128134113831086'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-1.5488', '1', '-1.5488'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-7.4', '3', '-2.4667'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-46.88587390', '6.0', '-7.8'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('-0.0000000056373', '42', '-1.34221428571428e-10'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('7.8', '-42', '-0.18571428'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('4.067698401', '-4.73189072461', '-0.8596348981273775315827220919851782113743168705'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('-0.00000323175293', '-7279', '4.439830924577551861519439483445528231899986261849155103723038878966891056463799972e-10'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('-1.043726', '-0.0000000000000029332638', '355824116467124.43660880415869858005952277459667964401974346800993487186525807873127538'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-535379', '-9.279', '57697.9200344864748356503933613535941372992779394331285698889966'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-623.1', '0.0012', '-519250'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('14228125', '-2', '-7114062.5'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('-1', '-1456807028', '6.8643271262417330952085439829440471370378369701275219273585217767085072025065e-10'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('890.53', '-177.9', '-5.0057897695334458'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-3', '13.036', '-0.2'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-2.42526431019', '124099556443', '-1.9542892655736000808165273709623777756599439032855593040517987695705627269145163e-11'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('0.01089604198', '-1.19', '-0.0091563378'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); - T('1', '-32436.94', '-0.00003082904860939411'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('-25350502.180', '-0.0011028', '22987397696.771853463910047152702212549873050417120058034095030830612985128763148349655422560754443'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-7.31', '-10.6390251', '0.68709303073267493278120003683420203604933688895987283646882269316198906232489290771576429498225359'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('-117.1', '-0.000000000050050339264', '2339644480376.7234659598410509587549955833202481606'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('-0.0000000000000000057347087', '-78280.17115', '7.33e-23'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('9752917.6', '0.00000021079938541', '46266347413825.697642957848128386533325804158946764929280160750920284194011'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('94.919967', '-7', '-13.559995285714285714285714'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('-4.2', '26059052', '-1.61172401820296455911e-7'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('43.2', '99230.61840', '0.000435349498940540715203282457826545198674283380259575203856635443481222928668153'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-0.0515', '2437300.243', '-2.1129936760113801047e-8'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('0', '1851.051', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('1.5', '254.258', '0.005899519385820701806826137230686940037284962518386835419141187297941'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-0.00000000000000021226', '1971.308560', '-1.0767467067661898652740593e-19'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('237.83', '0.00015086', '1576494.7633567546069203234787219939016306509346413893676256131512660745061646559724247646824'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('-1.1', '-49.9', '0.02204408817635270541083'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('-0.0000036459608843', '-35.02', '1.041108190833809251856e-7'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('-6', '7759857', '-7.732101248773012183085332629196646278404357193695708567825412247e-7'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-82.15846', '-8468.52', '0.009701631453902216680128286878935162224331996618063132637107782705832896422'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('-6.3', '-0.00000000000000059361951', '10612858731681510.939557899638440117980623648976766279127180304434401086312'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('314.53458', '-2.69', '-116.9274'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('-0.0000000000000000065388', '-0.0000029308929', '2.23099247331760229109702e-12'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-128.87', '-5770447', '0.00002233275862337874344916433683560389689048352753261575749677624627693487177'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('2.76200', '203486645550', '1.357337230919820428481184916756322243083927037589322529377161871e-11'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('862.947141', '38.87', '22.20085261126833033187548237715461795729354257782351427836377669153589'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-476024', '699486.3', '-0.680533700231155349289900316846806006064736364386264605897213426481690920895'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('0.00002744058', '8354.10383', '3.284682661168217729e-9'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('0', '-528.932', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('2.4', '5', '0.48'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-87.9458', '242.4', '-0.36281270627'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('-2.1', '17429886.8', '-1.2048271019178392e-7'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-610022032', '-186142.5270', '3277.1771278252819679406200389661627404'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('61.0', '1', '61'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('-2.68', '-2.30906614401', '1.16064236918992025908292941365354439403337618554579882928834021816012412931'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('6', '20.04948435', '0.299259566742922243783292112447769760223284744976496116220565044107979764577'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('-562.5474', '-2', '281.2737'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('-708276.119', '-437.0985', '1620.4039112465496907447634800851524313169686008988820597645610771942708565689426982705271'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('3.1', '40741823.67', '7.6088886572906813623740765652378564722211e-8'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('0.478356', '-3484.06', '-0.00013729843917728167712381531890954805600362795'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('-0.000000000005449', '-2196.4', '2.48087780003642323802586049899836095428883627754507375706e-15'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-1599645.6', '0.0000048', '-333259500000'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('124.7', '-0.00000006670188426', '-1869512404.08631898519623619400283490582159455175786963'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('1.5', '154', '0.00974'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('1.5188', '6', '0.2531333333333333'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('71100982.8', '2.2', '32318628.5454545454545454545454545454545454545454545454545454545454545454545455'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('6579.42', '0.00000000000000001643', '400451612903225806451.6129032258064516'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('0', '-1788.49', '0'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('1.764', '1412.9430637', '0'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('3226472.9', '-6.057428', '-532647.338111158729414530391446666803138229624850679199158454710481'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('451001810', '-1.2637722', '-356869545.001860303621174765515494010708575485360415429299679166862508923681024159259081660444817507459018'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('-7', '-0.0000000000000000008861615', '7899237328635920201.9045061199341203606791765'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('-350', '-0.00000000000056801180312', '616184378700415.622447814038304873596796394684045733884009646070539211086666969611545138343920264274384397408505739'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('0', '161224.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('-18239292.2', '9.50', '-1919925.4947368421052631578947368421052631578948'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); - T('4556.782', '8.837', '515.648070612198709969446644789'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('11.7', '-637.470651', '-0.018353786141599168304298922147554680129109190942188176126715518390194876595189321116'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-0.10117999', '9.6714', '-0.010461772856049796306636060963252476373637736005128523274810265318361354095580784581342929'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('366.6', '-422196.5149', '-0.00086831602597864078'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('0.0000000000000447155', '-0.00000000000000033', '-135.50151515151515151515151515151515151515151515151515151515151515151515151516'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('-66.96560', '-2.5010587', '26.774901364770047180420035723271908812056270410607'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-203481271278', '-5.0', '40696254255.6'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('0.00000000000025348951382', '-30.8628936590', '-8.213407226839189622080277407859891430797869373561451e-15'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('-9599430918.0', '3', '-3199810306'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('-0.0000000051', '63575.8', '-8.02192e-14'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-0.000000000000000204846', '-0.0085956665', '2.38313108122563852378404862496701099327201e-14'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('-4194153144.00', '0.000000000000000106309', '-3.9452474804579104309136573573262846983792529324892530265546661148162432155320810091337516e+25'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('4.5', '-0.00000000000000000610', '-737704918032786885.2459017'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-0.000654724', '0.458008516280', '-0.001429501803411313633838267283495849148405708330642484532798740211232999739364585'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('-2.59275', '2565235.42598', '-0.00000101072594497227815802799752975209378'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('-33.5', '1115627188.1', '-3.0027952309994443026249155643000593882711955395379629687244621929450089564377837e-8'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('-44943.972', '-4', '11235.993'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('1', '-3.2', '-0.3125'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('-667305176.87', '-33285.052326', '20048.193715734283625893795748272305119524'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('-30', '1215.69862', '-0.024677168754209822167931719787590118346930425897826551781394635456606835664582724'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('-68.0', '-19.9', '3.41708542713567839195979899497487437185929648241206030150753768844221105527638190954773869346733668'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('-83', '48.2', '-1.7219917012448132780082'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('476', '-0.00000000000000000329', '-144680851063829787234.04255319149'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('-613857939.8', '-1.122', '547110463.279857397504456327985'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('-17.46689', '-310.8342', '0.05619359131009393432254237146362916307150242798250642947268994209774857'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('-1', '36.33648', '-0.027520552348493855211071628292008471926834960348388176290053411887997956875'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('-9', '-577.05236390', '0.01559650486339511900230169042376571746'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-918904792', '-53.804758', '17078504.321123421835667395809121565048206331492095922074400929375056384418641934975341771818767403432982'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-356269745137', '-1.24', '287314310594.35483870967741935483870967741935483870967741935483870967741935483870967741935483870967742'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('0.0000000000178448365', '1.1664', '1.5299071073388203017832647462277091906721536351165980796e-11'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('-3659760', '13', '-281520'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('-44616.5788', '0.00000003071474', '-1452611313004.76578997'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('989.3', '-138.07', '-7.165206054899688563771999710291880929963'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('353786', '-1', '-353786'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('49133.4', '695.8696375', '70.60719041646647501558795917432164153016375858186512700088886979208084790163013830302374703'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('102819', '18022', '5.70519365220286316724003995117079125513261569193208300965486627455332371546'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('-0.000000000000000161022', '-49.609553207', '3.24578613574934387939124984589180398179351e-18'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('5', '1.5252870117', '3.27807157711733106472895038289271495800805683868395586364'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('2508047', '1', '2508047'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-6', '1.25901', '-4.765649200562346605666356899468630114137298353468201205709247742273691234'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('-412715.83', '0.003302680365', '-124963903.3718602072471521173076038800987633570165364761236'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-0.000089', '1294.94310595', '0'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('19.32290', '-0.002176792', '-8876.77830495518175369994009533294866941811620035354778959128846486021631832531541828525646915'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('0.00000000000034', '-3.7', '-9.18918918918918918918918918918918918918918918918918918918918918918919e-14'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('16.8', '-94145.0351', '-0.000178448071979103229417140022926179778969565650520427709734849310178864652629993018081098999983272'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('0.0000000000000059', '1.1', '5.36363636363636363636363636363636363636363636363636363636e-15'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-1', '32148056', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('9231.60239', '-0.00000000002086', '-442550450143815.915627996165'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-7', '2', '-3.5'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('-123714.68', '8.55', '-14469.55321637426900584795321637426900584795321637426900584795321637426900584795321637426900584795322'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('562244347.5', '-5.1529', '-109112217.877311805003008014904228686758912457063013060606649'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('-5655445.0353', '-0.00000000000000068487962242', '8.257575273325650774295087253736487071929080450563889329391036373477855825500529424848002911618005152327977771285257e+21'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('-2065.04620', '2876.71929082', '-0.71784765603993461664702558251675610043142582662148826560355133649661309292113'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('0.118710', '69.35180', '0.001711707554814727231304739026240126427864885987097667255932794822917357588411548078059978255'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('-4949594439.5', '24.7', '-200388438.84615384615384615384615384615384615384615384615384615384615384615384615384615384615384615385'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('-2', '9749.6070256', '-0.000205136473167431906425945496'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('-366.794', '-6.9', '53.15855072463768115942'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('15.6072462699', '-1042705.4842', '-0.0000149680293298489970673542564647422'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-2398.175827', '2703681898.73', '-8.87003692308068744785119619980849787608401428534425524e-7'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('2.873749', '-215659509.56', '-1.3325398939574589283880035176316664530951277750834e-8'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('12090808.8357', '0.0000002724963', '44370543143888.55922080409899143584701884025581264773136'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); - T('-0.0120', '0.00000006131063428', '-195724.6102722915754509790075523583377940548684860221282969248707633'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('13133', '-7.63333495', '-1720.479984963845979272794782836039443022214032413185274936743081082797237922855723761997'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('-16.79', '48320.907', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); - T('-3', '-1437919.8', '0.000002086347235777683845788895875833965148821234675257966403967731719112568030567490620827'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('4', '-0.42', '-9.5238095238095238095238095238095238095'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('-6.3', '-16188.078180', '0.00038917528874943943469390879850569142729455239139449226455366674044565307381039594163857689'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('0.000000000000000007370776507', '93.3983', '7.8917673094692301680009165049042648527863997524580211846e-20'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('-5653.9964743', '820039.02', '-0.006'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('154710952.627', '-0.000594907', '-260059055662.4816988201517211933966149330903821941916971896447680057555215'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('-1.522', '-1.7', '0.895294117647058823529411764705882352941176470588235'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('0.00000000000000000125', '2.5', '5e-19'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('0', '-128.316591', '0'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); - T('-1', '4512938.19', '-2.2158513099422e-7'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-0.0000000024299067', '1.8', '-1.34994816666666666666666666666666666667e-9'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('12082101.169', '-0.0000000005771', '-20935888353838156.2987350545832611332524692427655518974181251083002'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('-2665958.79092', '745824', '-3.5745146186231604239069807354013815591882267130046767065688419788046509632299309220405886643'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('-306944.315', '-4781.65', '64.19213346857256386393818033523992764004057176915918145410057197829201217153074'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('119308.0', '-4.129', '-28895.131993218697021070477113102446112860256720755630903366432550254299'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-53856.0273', '748.12415', '-71.9880882070175117325112416167824551580108729279759248515102740634692784613355951682618453100331'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('-8085542.2278', '2.51254505002', '-3218068.558705301076621847627555001669501965732558690115964'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('-0.00000000488258276861', '-380.24', '1.284079204873237954975804754891647380601725226172943404165790027351146645e-11'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-61.48', '-0.000000930247', '66089973.9531543772782927545049863100875358910052921428394824'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('-1.8', '-2.64409', '0.7'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-1179.4999', '69.50', '-16.971221582733'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('1240.137064', '-1419.8', '-0.8734589829553458233554021693196'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-1445877051', '294.7427', '-4905556.782'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('4.5', '-0.000000001750598', '-2570550177.7107022857332180203564724739774637009753238607607229072'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('131619545056', '-3141.2', '-41901039.429518'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('8170', '-2571', '-3.1777518475301439128743679502139245429793854531310774017891870867366783352781019'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('-67705880.846', '-0.00000000614547821', '11017186707427931.796376835579081810787186'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('6.359090', '-5.6', '-1.1355517857142858'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('-9744080.9', '6', '-1624013.4833333333333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-1671665.19505', '-2', '835832.597525'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('2240.3', '240', '9.334583333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('5586', '64.7872', '86.220734959992097204386051565741381013533537488886693667'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('-804808.4', '-3.995009183', '201453.4543311461519611731015137443802967098211048092101469394795130812594179711551366414'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('1.2', '505814736781', '2.372410119240076265539049927193109705807743251996028e-12'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('0', '14', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-199014.0', '-103205852.14', '0.00192832088368433871641497'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('528', '7536.724615', '0'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('89.62', '-0.0000000000000509219417901', '-1759948596803578.52'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-0.00000000308815', '74280356099', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); - T('319', '3.5833458', '89.022946096913113995305727959606912623392361'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('5.067968', '-72', '-0.070388444444445'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('458459056', '55.4', '8275434.223826714801444043321299638989169675090252707581227436823104693140794223826714801445'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('32.7', '34.79', '0.9399252658810002874389192296636964645012934751365334866340902558207'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('-861.001', '12043.6083098', '-0.071490285789134739566918624565712377017111948520635871601517334161816780874067081'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); - T('2695651.6', '-0.334', '-8070813.17365'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('5', '-117770.96972', '-0.000042455284285146667297051784859838547315648272646319516099506224'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('0.000000000000000000016437417353', '32.45148', '5.065228874923424139669438805256339618408775192995820221e-22'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('0.0000000053734', '-94.1', '-5.7103081827843e-11'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('-1186721.11639', '82957.90', '-14.3051007365181616217382551872696873956549044756436698614598489113'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('-21133261.89', '20730.04723', '-1019.4507352311517140716133332224926146490019357278618221459787769137658641021823'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('-2.1', '-0.000000000000041693733659', '50367281020578.36383801033672737310656882469053909202456729781931857090054905317636523351783614846255139023361'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('0', '14298618731', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('126540726', '3211409575.2', '0.039403484057968315420622216'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); - T('9.06', '0.00000000000000000045431', '19942330127005788998.70132728753494310052607250555787898131231978164689309062094164777354669718915'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('1197886', '-1.33', '-900666.165413533834586466165413533834586466165413533835'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-4', '-1', '4'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('535', '236221.2', '0.0022648263576681517154260498210998843456895486095'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('-0.0000058900204967', '7', '-8.414314995285714285714285714285714285714285714285714e-7'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('-0.059141575', '1002077673', '-5.901895291504014978687186058081148366230488801640030153630615817542518982e-11'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-16440', '1478098', '-0.011122401897573773863438012905774853900079697016030060253'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-3.729', '76.0564', '-0.049029404494559300729458664885532315492187376736211'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('1296.760949', '308.368135', '4.2052365397611526884903331532617661678953955472733913'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('-0.00000000000000023', '-2.7651', '8.31796318397164659505985316986727424e-17'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('52121221723', '2.2157', '23523591516.45078304824660378210046486437694633750056415579726497269485941237532156'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('148.848', '-11638', '-0.012789826430658188692215157243512631036260526'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); - T('0.000000000000000035252', '1.49244280', '2.3620335734140028683176333458139e-17'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('-12.3048', '-74515.7391134', '0.00016513021472247941673732625'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('0.00000000019260', '-187496.8', '0'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('-60916544144', '-208.0', '292868000.69230769230769230769230769230769230769230769230769230769230769230769230769230769230769231'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('0.000000000000000000407', '6', '6.78333333333333333333333e-20'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('-701.8', '-647126995.96', '0.0000010844857414098351564619217435003698559038553759178271323991'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-156.7', '35526492', '-0.000004410792937281845896859166393349503801275960486050804002826960793089281091980598591045803228'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('6.38848', '0.0575', '111.104'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('113.51390', '2', '56.75695'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('-1.4', '-1.04962451', '1.33381031660550685882897303913'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('-0.00000000000000000914', '-24', '3.808333333333333333333333e-19'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('6089.85229', '-1', '-6089.85229'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('15588.7', '-1.9450218850', '-8014.6656036212158096102862102243132343983882731478879992139522892823388462798710360012221661969'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('0', '-6', '0'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('4', '-2', '-2'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('1.048670', '-2', '-0.524335'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('5199', '-254400.9', '-0.02043624845666819574930749065746229671357294726551674935112257857578334'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); - T('24786509', '-1425028.34387', '-17.3936954'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('22279280.31', '-149.356', '-149168.967500468678861244275422480516350196845121722595677'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('3231', '-918986.0554', '-0.00351583136764101110646732888391115841952088884764594655458794897400790310185592'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('0.00024718', '-4', '-0.000061795'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-899.2063', '10.4', '-86.4621442307692307692307692307692307692307692'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('-0.000000000551809177986', '-4', '1.379522944965e-10'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('0', '452738786', '0'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('4.5584794351', '24609.412535', '0.000185233167537698802691065538676012933926787049977826705565'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); - T('0', '0.000000000000000055428089', '0'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('1133', '8082.63993', '0.140176973094482510245882003554746994649308843'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('-29.8847017', '523280.841023', '-0.000057110253915614816403990719053878399996228405389080061266854519886506500326103761351'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('15361.8', '-1', '-15361.8'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('-544.88204', '-167354266.6', '0.000003255859865839835'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('2.1586213', '-9', '-0.2398468111111111111111111111111111'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('19.7', '-98.9', '-0.1991911021233569261880687563195146612740141557128412537917087967644084934278'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-2', '2', '-1'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('-1836', '751541.921', '-0.0024429774955960174575544402665463554361061383826651500921397'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('-132.571758', '6265.4', '-0.0211593446547706'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('-9.0', '0.18807851', '-47.85235697581823675655448355051302777760202375061350709'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('-300.347779', '285.54536', '-1.051839115858860392618531780730038828156759402'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('1', '46872.2687', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('6.05281', '1', '6.05281'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('237492.20101', '13.91', '17073.4867728253'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('348.349', '0.00000000000241', '144543153526970.95435684647302904564315352697095435684647302904564315352697095435684647302904564'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('0.0000000000000199530424', '-129346.4', '-0.01'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('11730.2668', '305.6706', '38.375515342332563223286766866031603955368949450814046231466159977439766'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('-0.000000000062959532237', '5', '-1e-11'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('6', '0.009295308411', '645.486920358623483224627779378368384941154589948548615188062531946902606113001192381845758210637'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('-0.00000000000043868779', '310573.82060', '-1.412507303907636573022858321368765104472556e-18'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('3.84887407', '3.8156', '1.00872053412307369745256316175699758884579096341335569766'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); - T('0.0073521', '-18.0', '-0.00040845'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('0', '-747006.3486', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-4.64129872300', '3', '-1.547099574333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('-0.000251830', '-350.0261672', '7.194604963808546e-7'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('0.939', '-113.4826537', '-0.0082743923356103189187229942262092166778436905728'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-0.0000000000000000002287625269', '-2572865.5574', '8.891351755323552375523747216843208381160942e-26'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-5.2', '-1.1', '4.72727273'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('1.20', '11524063.4', '1.0412993736219812883014857415657744472318678843783521704e-7'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('4.65133898', '7915.0870', '0.00058765481415428535403337954465945857575538967543881703384940683532600462888153'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-3610.654', '-7.6', '475.08605263157894736842105263157894736842105263157894736842105263157894736842105263157894737'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('88.4', '-11.7', '-7.55555555555555555555555555555555555555555555555555555555555555556'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('0.000000000340016366031', '-6', '-5.66693943385e-11'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('-3.100003841', '-492', '0.0063008208150406504065040650406504065040650406504065040650406504'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('-791.9', '-0.012153', '65160.865629886'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('-9', '5', '-1.8'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('553.7', '22399299.800', '0.000024719522705794580239512665480730786057874898393029232102'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('-0.0000002749949', '30.759829', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('3624426532', '-289449190.4', '-12.52180573381904335773882337312628392827593136014520357076113625225741864780147611012285'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-0.00000000000006713', '-6617623375', '1e-23'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('0', '-14.1532', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('-48768176.4', '999478.49486', '-48.7936225249459791063262817624562091721081695550589547579092771436841158'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('278.7307', '6.329298290', '44.038167776099552419735932527837931936053530509145904071460661083805547739479347559711868154029'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); - T('488540.330', '-9732', '-50.199376284422523633374434854089601315248664201'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('1064.6514', '0.244140', '4360.8232981076431555664782501843204718604079626443843696239862374047677562'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('0.82', '5.96631903', '0.1374381751758252860306734217663851609356531509512658427184'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('7518.490', '7841504214', '9.5880711083170757574243139978244995431433941457293974234928594530498329207e-7'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('34.8855774', '-1.6026335', '-21.7676576709522170851913428740881804854322588414631292806496307483900717163343958553218'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('88.6', '30', '2.9533333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('0.0000000000000000000779', '1654403.81', '4.708644862223812214262248344314439169479e-26'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-0.00000000000000000022908', '27985.1293', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-0.000000000261917837552', '116.30006027', '-3e-12'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('-60.00570', '-2.342', '25.621562766865926558497011101622544833475661827497865072587532023911187'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('3932', '-127472', '-0.0308459897075436174218651939249403'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('-1110229465.54', '-0.4365', '2543481020.71019473081328751432'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-2', '0.671', '-2.98062593'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('7', '108.5443', '0.06448979817457019852723726625902972334797865940450120365601878679949108336411953460476'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('0.00028', '1', '0.00028'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('0.00000006557969267', '1.5680', '4.18237835905612244897959183673469388e-8'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('5006041.51764', '16388224716', '0.0003054657599826873157454'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('30.9', '0.000000000000000000181748', '170015626031648216211.4576226423399432180821797213724497656'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); - T('-1320.44658751', '0.00000000000131', '-1007974494282442.74809160305343511450381679389312977099236641221374045801526718'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('15.2', '110597411', '1.374354052465116023375990239048181697490188084059219071592914594e-7'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('23.02209072', '12.7', '1.812763048819'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('-1606170.4', '4000198.6443', '-0.40152265995306987110066'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('399.1459', '57.99276455', '6.88268447102337700160562530037206167299365279181194'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('1.45', '-9.142', '-0.158608619558083570334718879894990155328'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('-0.000000000000712649', '-66196.4', '1.07656760790617012405508456653231897807131506e-17'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('2167.8637', '3693.62', '0.586921150524417779847412565450696065106859937'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('1.2', '2.3', '0.521739'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('4194384.4', '-123.91', '-33850.249374546041481720603663949640868372205633120813493664756678234202243563877'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('-2', '12477.22', '-0.000160292116352841418200528643399731670997225343465932315050948849'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-266654.50', '208840.1304', '-1.27683553677765755695007936080085879892746898'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-1.52428704063', '282318.753228', '-0.00000539917034629'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('-413.229833', '9394258', '-0.0000439874903371825640726494843978098110569243467658648506353561931128568110436'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); - T('-6.19', '180017.0', '-0.0000343856413560941466639261847492181293'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('-6', '-37.31569', '0.1607902734747769637919063000041001519736068125766936106501045538753269737207056870715777'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('-2878081', '-0.00000000000000000001927', '1.49355526725480020757654385054488842760768033212247016087182148417228853139595225739491437467566165023352361183186299948105864e+26'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('0.00002684173572', '486.39', '5.51856241287855424659224079442422747178190341084315055819404181829396164e-8'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('-11800.21', '-0.0000000000000286822600', '411411443868091287.0882559463584808170625327292898'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('1', '-4.5', '-0.222222'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('0', '1', '0'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('0.000008990064003', '0.000000000000963602', '9329644.39986633485609203799909091097777'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('43641.85475', '3089.54530', '14.12565620902208490032497662358276475182286532584584534170772637643474591552355616860513422476763'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-14.451799345', '2167.1652870', '-0.006668526591714461'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-46.697270', '0.0000000000014693303913', '-31781327247089.9309302267203'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('0.000000000000000000219884', '-335817.508212', '-6.54772293352817905519097009170681577613920908334084735788028e-25'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('-103885.126', '7124.95', '-14.6'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('1.10', '166668008', '6.5999468836274805661e-9'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('-1091.8', '-1.8585', '587.46300780199085283831046542910949690610707559860102232983588915792305622814097390368576809255'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('39.33', '4192569.2612', '0.000009380882592442358576342080442670970561090942'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('-4.730032885', '-22.21', '0.2129686125619090499774876181900045024763619990995'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('0.00000000000398', '-13253058.2889', '-3.003080431128428129341704642e-19'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('2084.0452', '19846.7649', '0.1050067963469451890368288687694385899638484658021015807971807032389444992115566401454'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('0.000000000000000000598111', '16442.86', '3.637511965679936e-23'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('-0.0000000000000000000124802906', '4649.0', '-2.684510776511077651107765110776511077651107765110777e-24'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('0.003816', '0.000000058238', '65524.2281671760706068202891582815343933514200350286754352828050413819156'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('382.2', '194.1072', '1.96901505971957763545092608620391206508568461138999480699324909122381859096417'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-1.919', '-1', '1.919'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-284013947424', '13.19061586', '-21531515316.52594119286254463'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('228766.33934', '-0.1852617', '-1234828.026192137932449070692971078209905231356508117975815'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('1', '0.0000000392', '25510204.081632653061224489795918367346938775510204'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('0.0000011513', '25070.6', '4.59223153813630308010179253787304651663701706381179548953754597018021108389907e-11'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('-0.00000000000002764193', '-3.1', '8.916751612903225806451612903225806451612903225806451612903225806451e-15'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('-0.000000000000010416', '7274678.41', '-1.4318158704695236143091581693712286039e-21'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-2', '-30146.8', '0.000066342032985258800270675494579855905104356017885812092825772553'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('173618', '1.882', '92251.8597236981934112646121147715196599362380446333687566418703506907545164718384697130712'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('0.00000000010005555', '38138588465', '2.62348e-21'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('-169823368', '0.0000000000000000000871132', '-1.949456201815568708301382568887378721020465325576376484849597994333809342326995220012581330957880091650864e+27'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('0', '-31042328.715', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('-0.000000000000018273631043', '-911.9377622', '2.003824361754234635640796145550819696059297587008070933e-17'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('-409295.290', '-1011.729490', '404.550123373393020302294440384454939630158'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('-452668878', '-3235.300506', '139915.5587434634425887855995037513217017992825671693570958814667832898982027359162'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('2082.12', '163146746', '0.0000127622527'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('-8.14', '-32.560', '0.25'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('0', '1.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('0', '-3', '0'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('9.18', '0.0037', '2481.081081081081081081081081081081081081081081081081081081081081081081081081081081081081081'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('0.00000000000000095721408982', '73.85199', '1.296124978e-17'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('0', '1', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('48086750', '6', '8014458.33333334'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); - T('28.094', '-10.8', '-2.601296296296296296296296296296296296296296'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('-28.17324441', '-2', '14.086622205'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('-2227168', '2500.06', '-890.84581970032719214738846'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('519.344', '0.0578325140597', '8980.138741052925991755093307758001485580365939320088236568632175956463851725330634'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('-0.00000000000000000101887', '-28.546850', '3.569115331463891812932074817361635346807090799e-20'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-0.000000000000000000078301', '-1441708004.6', '5.43113e-29'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('-14.74038220', '-842882140.2', '1.748807039202703467129413023953879714676626149730346368538e-8'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('-2415313', '-0.000000015', '161020866666666.66666666666666666666666666666666666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('-0.0000000000000000002200', '26498.8187', '-8.30225688513427958960298860416747558637396919131e-24'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('-85.27', '16086959.782', '-0.00000530056649332897548982011870364480780673092379587823849263354'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('1.31592063', '5629293355', '2.3376302264140931415360569710441036342118290618023760817133680893416505915954348056888e-10'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('-0.000000000001025528', '3.7', '-2.771697297297297297297297297297297297297297297297297297297297297e-13'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); - T('0', '-4.919962890', '0'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('28372.374', '968909.546', '0.02928278921096'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('-0.000006032019416', '2079.86', '-2.9002045406902387660707932264671660592539882492090813804775321415864529e-9'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-978638556.295', '0.0000000121699875730', '-80414096598272672.697987150196081798414832284397765'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); - T('3.18', '1.5436526', '2.060049003253712'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-227.3', '-5', '45.46'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('-194', '735', '-0.26394557823129251700680272108843537414965986394557823129251700680272109'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('32.421', '-17148246.867', '-0.0000018906305846570712306272748271836504346727398906415568574051366320349346531249700838588'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('6.11', '343.74', '0.01777506254727410252'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); - T('34882581', '3', '11627527'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('2591.34', '-0.0016', '-1619587.5'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('0.0000000000000000111931173', '-543.829', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('51757672566', '114261.91', '452973.9837711447323085'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('1.177', '19.3', '0'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('1', '6', '0.1666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('-7396187255', '0.0000001129387', '-65488510625675698.4098453408796099122798473862369586333117'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('354.973', '341214610.926', '0.0000010403218052025'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('0.0000000000001788646', '-0.0000000000008673', '-0.20623152311772166493716130520004612014297244321457396517929205580537299665629'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('-3405900332', '0.0000002821190', '-12072566300036509.41623924655907613453897114338275692172452050375905203123504620390686199795121916638014454893147'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('0.000000146660215100', '6', '2.44433691833333333333333333333333333333333333333333333333333333333333333333333333333334e-8'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); - T('42.6946', '-147', '-0.2904394557823129251700680272108843537414965986394557823129251700681'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('-33383.045130', '-3771.65', '8.85104533294446727559556162422282'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('-0.00000002620221', '-0.0194', '0'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('-40998905.3742', '21.0', '-1952328.827342857142857142857142857142857142857142857142857142857'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('759.18436065', '169.2597', '4.48532261755160856364509685412'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('-7.910517857', '5.48', '-1.443525156386861313868613138686131386861313868613138686131386861313868613138686131'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('315514.15', '0.0000000000000000001821015', '1.732627957485248611351361740567760287531953333717734340463972015606680889503930500297910780526244978761844356e+24'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('-102.1', '-20933481932.7', '4.87735391217982360935950019733431654039206201664805567083460586e-9'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('1.3', '353424', '0.00000367830141699488433156774865317578885418081398'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('-6', '0.0000007385', '-8124576.844955991875423155'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-882563.951', '-3391251493.78', '0.0002602472723178266294366199720356264423507358482323050873711187871051023068603836514842931325595'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-0.000000000000063741', '2062.9', '-3.0898734790828446e-17'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('-0.00000000000022392247', '-2', '1.11961235e-13'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-20368.0', '-0.00000093', '21901075268.817204301075268817204301075268817204301075268817204301075268817204301075268817204'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('676.6', '-1', '-676.6'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('-151.10', '152.2171096', '-0.992661077306384485440262229233657712286503698004787235823324292054485312602467'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('5.4', '1', '5.4'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-664.94103', '-508795.875286', '0.001306891549830723405'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('4160277.46', '51.3855092', '80962.0752'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('0.068041425273', '1.0', '0.068041425273'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('0', '20.9954635648', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-597760.09', '-296891', '2.013399159961'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('-0.000000000000466465', '-1', '4.66465e-13'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-0.012274783756', '1777103227', '-6.9071866898365606310386830443811917066537407171114207874882e-12'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('43.3085', '-5812.536', '-0.00745087858380576051485960689103688992205811714542499177639501932'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('0.00000000000000000006065480716', '-0.0000000000000005628236', '-0.00010776877011'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('15316689.77', '-4.476', '-3421959.28731009830205540661304736371760500446827524'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('-4782', '7903.4519', '-0.605052078573414231824451288'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('334.247', '-12.37', '-27.02077607113985448666127728375101050929668552950687147'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-0.000000000010968817327', '1577.163203', '-6.95477634e-15'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('181.28266', '-0.000000000015', '-12085510666666.666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('-12944.4', '25199', '-0.51368705107345529584'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('-0.233040', '0.00000000000048', '-485500000000'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('2499418471.4', '0.0000000000212061576116', '117862864040621426727.904325767922700957'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('2.051', '-0.210803', '-9.7294630531823550898231998595845410169684492156183735525585'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('-3', '-0.00000000000035117', '8542870974172.05342141982515590739527863997494091180909530996383517954267164051598940683999202665375743941680667'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('-29.5', '170.1809179', '-0.1733449341090902648139965168209966506473990524880110544990778898602'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('-920.3951776', '0.0000000000000003848321529', '-2391679517067712249.36283124174471753189103134'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); - T('1.67', '-704.1', '-0.00237182218434'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('-4019.527', '-0.000000000000001282423', '3134322294593905443.0558403896374285239737590483015354528108120331591059'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('0.004972447', '-313000.2188', '-1.5886401035320937609517095966962947e-8'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('-240823248', '-53004225588', '0.0045434726'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('-0.004435905718', '3114765775', '-1.424153865309503087756253517971186774068107898097088857e-12'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('7', '310.0', '0.02258064516129032258064516129'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('485.18', '-2499.59190', '-0.1941036854856186723920812833486938407825693466201422720244852769766136624142525025785209'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); - T('-1803189.79', '-95.9631755078', '18790.434774'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('3', '3.13', '0.9584664536741214057507987220447'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('2705932.0278', '-240850308.662', '-0.011234912019969217738265785640050126'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('-48.6894', '-0.0000000000000056217500046', '8660897400304152.96991166386595034397058361146178954725410558680679758094698823811870931732181920937779724'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('0.00000000967966715067', '0.00000490602307318', '0.00197301704584030946968780069075231515440216586853537004220763341534383076987989340045682642632728'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('1', '16.30642', '0.06132553926612953671008106009780197002162338514523727464'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-313225923', '-14.5', '21601787.7931034482758620689655172413793103'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); - T('164.1993451', '22.23', '7.386385294646873594242015294646873594242015294646873594242015294646873594242015294646873594242'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-2', '-2.1', '0.952380952380952380952380952380952380952380952380952'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('0.0082502485', '-20143.76', '-4.09568447002942846817078837317362796220765140172440497702514327017398936444834529402653725025e-7'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-5.25629381', '3', '-1.75209793666666666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('1455.634', '0.0000000001833490847', '7939139714723.6481404698280449065148782823457421928433548378657381974920761630614'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('0.0000456078822', '-19467.42', '-2.34277999858224664593459225721744329757102e-9'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('-5', '-0.00000000000000410202', '1218911658158663.29271919688348667241992969317555740830127595672376048873481845529763384868918240281617349501'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-17274806.55', '-32647573.58', '0.529129875691055874174401661613469284966077408561889211002124342252573614'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('6562.207011', '109008.582', '0.0601989943415647769824214390753197761989051467525740312813169150296808741168654042'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('-3', '-2.5615783', '1.171152956753264188723022833227467613'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('14.4897748', '-0.0000000091438787', '-1584642062.2355806185399200450898369856984213931009386640266783066577644'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('-200.932', '243005.6', '-0.0008268616031893915201954193648212222269774852925200077693682779326896170294017915637'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-3.4', '-4950', '0.000686868687'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('-3915.2', '-4.4033', '889.15131832943474212522426362046646833057025412758612858537914745758862671178434356051'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-3.5', '70451.876', '-0.000049679301655501693098988591872273'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('32.99649107', '-0.0000000000000252114', '-1308792493475173.929254226262722419223049890129068595952624606328882965642527'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-0.0000000002421731', '2.6696132', '-9.071467731729825129722912667647882e-11'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); - T('-2361092', '0.000224', '-10540589285.71428'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('3.3', '48.72', '0.067733990147783252'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('0.00000000086515675836', '-1.04', '-8.31881498423076923076923076923076923076923076923076923076923076923076923076923077e-10'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('9.36', '0.000000000000000187263', '49983178737924736.86740039409814004902196'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('-0.00000000000000000254409418513', '-207.4', '1.226660648567984570877531340405014464802314368370298939247e-20'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('3', '-0.00000000000000001866618', '-160718475874549586.47136157478391400918666808098925436270302761464852476510994750934577937210505845330967557'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('4.8', '3', '1.6'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-3.017', '-52.7192', '0.0572277272796248804989453557717112551025053'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('88891546', '1.23', '72269549.59349593495934959349593495934959349593495934959349593495934959349593495935'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-0.00014', '-2.13121465', '0.00006569023913194290401485368918611740961897010233108147975615689391024034111252003640271523095'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); - T('0', '-0.0000000011147297', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-108', '-158517876.371', '6.8e-7'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('0.0174163902', '-0.003287849617', '-5.2971979345'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('3447053', '-26.180', '-131667.4178762414056531703590527119938884644766997708174178762414'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('0.0000000000000004912253', '996.32', '4.930396860446442909908463144371286333708045607836839569616e-19'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('-5.8942', '-1696.19', '0.003474964479215182261421185'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('4.35', '-7.700', '-0.564935064935064936'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('-1.951064679', '12.39', '-0.1574709184019370460048426150121065375302663438256658595641646489104116222760290556900726392251815981'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); - T('79287223.425', '-115.6806', '-685397.7540313587585126633160616386844466574343494069014164864290122976541'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('0.00000000000179581623', '82.118', '2.1868728293431403589955917094912199517767115614116271706568596410044083e-14'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('1.5', '7', '0.21428571428571'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('0.00000000096155', '-0.000614553582', '-0.00000157'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('0', '-64986', '0'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('0.1502692', '110.97', '0.00135414256105253672163647832747589438587005497'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('-24676310', '-1132905', '21.7814468115155286630388249676716052978846416954643151897114056341882152519408070403078811'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('-0.0000000000000000036333', '1162397966', '-3.125693700671874713173749651932890598330589301805436916946566646006e-27'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('-36.3', '80465', '-0.000451127819548872180451127819548872180451127819548872180451127819548872180451'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('55895210725', '-7357125995.55', '-7.5974246952965791117'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('-13.757', '2', '-6.8785'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('-3486.72', '-699656', '0.004983477594703682952765358976'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); - T('954.556', '-0.00035661', '-2676750.51176355121841787947617845825972350747314993971004739071'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('-1.94', '2.0', '-0.97'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('4', '-1945.59', '-0.002055931619714328301440694082514815557234566378322257001732122389609321593963784764518732107'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-0.00000000027649996', '36.4', '-7.5961e-12'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('-0.000195337037', '10.9367', '-0.000017860692622088929933160825477520641509779000978357274132050801430047454899558367697751606975'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('35.30643', '504.6056', '0.069968367374440553176579887341717967'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('-0.00001921615', '8.9', '-0.00000215911797752808988764044943820224719101123596'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('1.14982', '-38016.754', '-0.0000302450861533312391689201029630251967329982985922469866838184'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('-78517.1', '5.896466904', '-13315.9570431466632717659022071227757034486019392741'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('569.7', '-5625972.0812', '-0.000101262500378154205050056870161348499938944204657'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('-6', '4057.45596', '-0.0014787591188050750894656660672664454502175299026535829608856678754930959250633493012700500142951645'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('19.5', '-1.15066407', '-17'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('-5.4', '-307.105', '0.0175835626251607756304846876475472'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('1', '-40.4', '-0.024752'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('-12687.3498', '0.000000000000000001143', '-1.11000435695538057742782152230971128608923884514435695538057742782152230971128608924e+22'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-1.0', '371.3', '-0.0027'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('1.95110622', '3211.707', '0.0006074981995555634433651637587114889371913440422803200914653796'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-2.54012', '157.29832', '-0.0161484242171181484964365798693844918369121806259596415'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('-7', '10.922426', '-0.6408832616'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('-0.000000000000010173970450', '-1979.1', '5.140705598504370673538477085543934111464807235612146935e-18'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('-31.3', '0.000000004292064', '-7292528722.777665943471485979705801218248376538653664065'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-1.3', '-41.81181', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('-56.8', '-237.603', '0.23905422069586663468053854538873667420024157944133702015546941747'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('6828531.173', '2.6', '2626358.14346153846153846153846153846'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); - T('408927964.6', '-0.00000000000000106192518', '-3.8508171037059315233489425309606e+23'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('0.00000000000000000009999762926', '-0.022865151', '-4.37336404469841463106891356195286005327495978487087183461e-18'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-174424', '-424', '411.37735849056603773584905660377358490566037735849056603773584905660377358490566'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-3.015', '-0.0000077', '391558.4415584416'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-7707.041590', '-1016', '7.5856708562992125984251968503937007874015748031496062992125984251968504'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('1', '-9.89309', '-0.1010806532640459148759386602163732463770166853834342960591685711946419167317794541442562435'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('-818075.66703', '-641.16', '1275.93060551188470896500093580385551188470896500093580385551188470896500093580385551188470896500093581'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); - T('-3.3', '0.05674113', '-58.15886994143401796897594390524122448743'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('-16182136', '0.00000484', '-3343416528925.6198347107438016528925619834711'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); - T('-195748.38639', '1', '-195748.38639'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('83', '-30943580134', '-2.682301131303218581e-9'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('485298.09014', '-791982.15', '-0.6127639242121807922059859556'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-0.0000000000000000006453151', '8.7', '-7.41741494252873563218e-20'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('1.5', '10.67319', '0.14053905158626427525'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-6.853998', '198.445', '-0.0345385270477966187104739348434074932601'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('-4', '0.000000000002985501551', '-1339808381161.3467823651450516'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-1972.820043', '-2978.3', '0.6624'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('17.5470679', '-1.2', '-14.62255658333333333333333333333333333333333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('1.68', '-0.0000000000000773997', '-21705510486474.75377811541905201182950321512874080907290338334644707925224516374094473234392381365819247361423881'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('3877.04631', '-5317.71941', '-0.7290806474'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('120233739', '40.99694', '2932749.10273791165877258156340448823741479242109289132310850517136156991229101489037962345482370147626'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('-22.151457', '2918.4174', '-0.007590229211215640367275770765346999370275136106301997788253318390988211624560626591659'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); - T('-37.28', '199844', '-0.000186545505494285542723324192870439'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('-1.24', '28', '-0.044285714285714285714285714285714285714285714285714285714285714285714285'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('127814', '3.31', '38614.5015105740181269'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('-6.0817', '61.6', '-0.0987288961038961038961038961039'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-83950', '2899.1', '-28.957262599'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('-2', '1.3', '-1.53846153846153846153846153846154'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('63317.4', '-44382', '-1.426645937542246856833851561443828579153710963904'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-12376.1101', '-0.0000000000000000000476577', '2.596875237369826911495938746519450162303258445120096018062138961804703122475486647488233800624e+23'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); - T('0', '255407', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('-3243324.741', '447', '-7255.7600469798657718120805369127516778523489932885906040268456375838926174496644295302013422818791'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('-20.5351', '1', '-20.5351'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('24373177.7', '-0.03429773005', '-710635300.48397474047994614'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('0', '-1.9528', '0'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('2.5715743812', '333604.7', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('7258484263', '878748.686', '8260.02289236993521945363'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-1.55', '4028.651', '-0.0003847441736701'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('39876720.9679', '-0.000000000000000095693', '-4.16715130342867294368449102860188310534730858056e+23'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('328.9', '-1.747153', '-188.2491115546262977541176989078804203180831901957'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('-8430.0', '6.36', '-1325.4716981132075471698'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-0.0000000000000000124', '0.0000000000022', '-0.00000563636364'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('-204018', '-0.29422194903', '693415.29642031411160079894872824743451805690052191956958432904987815891500214089245237027923579'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('0.000000009608', '1107603', '8.674588277568767870798472015695154310705189494791906487e-15'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); - T('0.00000000000000000324', '0.0000000000353302327762', '9.170616057142444364532751561033571427601773401756984940156302665962620077892902e-8'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-0.000000000000000000161', '-307', '5.24429967e-22'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('-2113052.7', '55.1505', '-38314.298147795577555960508064296787880436260777327494764326706013544755'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('0.06681', '3.1', '0.021551612903225806451612903225806451612903225806451612903225806451612903225806451612903'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-593781.5', '-5.5', '107960.27272727272727272727272727272727272727272727272727272727273'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('264.178', '163429.93', '0.00161646'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('-1444588.448', '8.56410', '-168679.53993998201795868801158323700096916196681496012423955815555633399890239488095655118459616'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('0.0750627414', '-503.1171', '-0.00014'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('-684826102', '-242.1', '2828691.045022717885171416769929781082197439074762494836844279223461379595208591'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('9.9723088', '-7.28030', '-1.3697661909536694916418279466505501146930758347870280070876200156586953834320014286'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); - T('-10.8542689947', '-362382465', '2.99525226605542296313923467572e-8'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('83184510942', '995417544', '83.567455128156752680260174317361639750243341099883206398459860779789511123987'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-5.2584', '4.3', '-1.22288372093023255813953488372093023255814'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('171.7711052', '21.73462', '7.903110576582429322435818983722742794675039177128470615083217'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('97.3120746', '297', '0.328'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('17', '5.175316085', '3.2848235201077578240325006158536884805558692749874812718806140320992'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('0.0000000075223031425', '-0.0000000000000000003063', '-24558612936.6634'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('0.000000000284782805877571308685061', '1.24044', '2.2958208851501991929078472155041759375705394859888426687304504853116636032375608655e-10'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('-84292190777045518365167.53', '349338169.15546007599011690336', '-241291099054035.477498848257293223533254'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-53.485123', '-0.00000000000000085526923975258', '62536006808186693.121901065461235'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('-6856519792.8354', '-134.87', '50837990.60454808333951212278490398161192259212575072291836583376584859494327871283458144880255'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('-3437325217.6304210', '-0.0058928082634501029868', '583308511656.536837957106657941719405129449764251342894994497244'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('86694.653049907973', '276.86811', '314'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('0', '7.096', '0'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-840920065282020550638.16675056', '-544817290763.11054598', '1543490046.184413528395333281622062666508477839510087529697756635981129506986226793475391075218794203'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('-0.0000000001115427500598203903347530296', '0.0000000000000095', '-11741.3421115600410878687399578947368421052631578947'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('-0.0000000000000000213', '7771.784441655282162', '-2.74068332181680990957923803724e-21'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('-5219548154409821711366036884', '-6403861732570.160', '815062593850692.094058492748177219666225497517519616292585346465537888171756816076114357577457239'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); - T('15551916902370673557.1333290108', '-0.06428889318052242422', '-241906745208710958468.15960770779005223663662075254467552461782847066116561447264673'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-54.39064538374', '0.326659783', '-166.50548434283384067514671679066167750438994199662466560813211585339233510726'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('-10447694007.1229', '1058379152566659776344755.133', '-9.87140948665357e-15'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('0.0000000000020938452', '3240378916002', '6.4617294899060738552899e-25'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('967351926269', '-22.0795261933451129685', '-43812168694.11649935062312079317354092546372626572951823800772019323767497831806178'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('101006.8704166269166570296717065', '13094210020176391', '7.7138575187804e-12'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-292.3', '515823027211.36173935', '-5.66667218367954385822955695056628604396993663929021069625557355703596272535737e-10'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('-627958027100087658205.09', '-8', '78494753387510957275.63625'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('0.000000000000000039913330066487843180', '0.0000000000030114338098911573487587', '0.00001325392905379196627854118842244752137640431316713004600325949087886'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('-200.842293509', '-5.0712235735', '39.6043066526418054796494962696'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('-1848.560227815723699279797', '0.0000000000000174', '-106239093552627798.8091837356321839080459770114942528735632183908045977011494252873'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('0', '0.0000000000000001799287214643564056307642336', '0'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('-0.00000000109284603', '-605755688.5436', '1.80410361911333678248513635920011348723615833110992485011324e-18'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-17.51', '0.0000000000000001106572088912592375729', '-158236414739203737'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('-257713780238786025994484911880', '160744975929777785647.053', '-1603246252.3206'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('-0.000000000000000031476825065154718639426657718', '-1479127042283890059221502.51', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('-0.001011298', '406.176', '-0.000002489802450169384700228472386354683683920271015520365555818167493894272'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('1875610846688.7314242171152', '36953885.844016673120045591563', '50755.44300282071230784749159999461116882607517590500292489'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('2.48', '23018825528599.058245083750', '1.0773790334866552714e-13'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-37644856116561190.7', '11750087617.41953', '-3203793.651781167'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('27225239.0927654530532507312', '-44107483349801146865010.14182', '-6.17247619340498933213826538373174836183684847796124222440343623092216708649906e-16'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('-3', '623420854802547.7395328963607', '-4.812158555315207709041269638943960261014145138167945466267018280432446e-15'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('1297926420.969', '1984.469459560495780721378788', '654042.02353230179159722311951514776953828174'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('9.5116', '-0.000000000000927738069901', '-10252462746316.9575566575367529211085824463253401492796438490216152723506753495226'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('-104895021573748233134.79927065', '-281760209801594479975768', '0.0003722'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('1801.699799792', '-0.0000645512712544182335729718690', '-27911143.57284918766656202322530814542242474992155368042065229882647438143751747966584995520735334412'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('0.00000000000000000006333905001032218284869562345', '0.000061374114666884348377', '1.03201570164e-15'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-6403029110376.2', '0.0569350772698624979926156', '-112461937656235'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('104.057972667266', '-2385710236.97709671', '-4.361718831332867232565124691108468632809332107733e-8'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('61883558331.753531', '-11.27304021045', '-5489518104.8310345601815283907266673560612625269587707664948134834'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); - T('11229912272987228870975202743', '-0.0000115', '-9.765141106945416409543654559130434782608695652173913e+32'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-0.000000000000000000099738249', '-28909.3', '3e-24'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('0.00000000616807049939585972341098818', '9633721886.43686961447465', '6.40258310558016696529879116138216691930162803193995828e-19'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('1438380887105946.4988', '-92.050294038', '-15626032509055.94351991829755854016819083134714103584295603268760522109653448361970130831359811065984506029851'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('23564842', '-0.0001500845176938138', '-157010478909.453151573339526987486151490294503777115844769550097564216584170372135812878426610459291382975'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('106510201620140041204712613', '174', '6.12127595518046213820187431034482758e+23'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); - T('0.001994938909681532', '0.00000000610636188569105720740544007', '326698.441236547297677127656717647999474522122'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('0', '-992965188415144990460', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('75.042978019471810179662566', '-20828.92196301', '-0.0036028258280836779532074590076790296057591125'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('191.42', '-1125370.65655092338112856', '-0.00017009506946508710923505448696387180328'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('24906102321.8', '-6749284', '-3690.1843694531153230476003084179'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('-0.0000000004002', '4.29973341406068', '-9.3075537820855276e-11'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-37140.99', '-136171', '0.272752568461713580718361471972740157595963898333712758223116522608'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('49.43436363755592884987', '2425.3765', '0.02038214010796094084768694674826774317307024'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); - T('0.00000155445336543701798594470695', '-1', '-0.00000155445336543701798594470695'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('0.000000000000000001927823363427027547788', '-0.00084297395450372616', '-2.2869311123164791404649867246710586063142709924183025467353162662660376821183153e-15'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-3538.75692804245271578524253541', '0.0058', '-610130.5048349056406526280233465517241379310344827586206896551724137931034482758620689655172413793103448'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('-4761336477329468956921492815', '-0.0000000042', '1.133651542221302132600355432142857142857142857142857142857142857142857143e+36'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-0.0000190146484048071649632', '-0.000000000000000000028002986729751222355', '679022155326218.32213770008814117'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('135.311547037', '1538152658057363639166.70980', '8.7970167543639e-20'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('61273.682559', '4140445022016191223', '1.47988156e-14'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('25719205020.698', '75895083.76', '338.8784061696119537954114249468218783081820002197201606988515694603'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('-605282280.963', '-0.0000000000000000026582609673', '2.27698592579413374889379695553866247374289540846165213148596947387453744974529e+26'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('128.674096168', '-485', '-0.26531'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('-284.31', '-61299436947911204745164', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-27156117968975435649284.5062362', '-0.2140549424', '1.268651761295441858916148354077901450034446857042063794925951684075667481527864034967501e+23'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-0.0000000000220', '-83511', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('-0.0000002831893855', '-0.000000000000000000066075384352033402787278372', '4285853018897.87848847386430278968565272453378873459172661159371765293738317683359'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('0', '358618735187.21952', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-22.5', '26023716139474.0432', '-8.645959662106405118389466343739935401549502009592919388435931e-13'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('2827855856', '-929954533', '-3.04085388656307565952797'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('-0.00011271354', '0.00012965', '-0.869367836482838411106826070188970304666409564211338218279984573852680293096799074431161'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('-46.929552978589019', '12836.0093', '-0.0036560859284036993491427277167834398499539884253589626177'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('257018142', '-35258.20163', '-7289.59873498800454843278'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('2.276215213739273117992982952', '0.000000000021024983352672653', '108262402664.396178117533515828712401635259526311697113483063175627111769126355709999130060314825174257'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('1532964471.105', '0.000000000000000606585', '2.5272047134449417641385790944385370558124582704814659116199708202477806078290758920843739954004797349093696678948539776e+24'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); - T('0.000000000016313152031948', '-448338202', '-3.638581757962262604604012753747002803923454196303352262629629763291953425821e-20'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('-1821467900801658117.0', '-237300948.35414499609', '7675771687.533764014843389674196771695447410998228097939296421430055693563019117'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('0.0000000000157495', '-8.2', '-1.920670731707317073170731707317073170731707317073170731707317073170732e-12'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('0.00000000000000001492782607274397', '0.07101109108235816', '2.102182327466392982546211e-16'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-66468973917463.27', '-0.00000000000000000297284353275010458135', '2.235871924815849751854275641050067610508414796931327584614931310634047270900177e+31'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('0', '0.0113746976908751', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('-60504544572803.0828', '173.5', '-348729363532.00624092219020172910662824207492795389048991354467'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('0.0000000000186102590', '7154.18', '2.6013126591726794685065234590127729523159886947211280677869441e-15'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); - T('18949862124.7312829930', '-0.00000000065813745923580420948429601', '-28793167534841278323.131970933871205340608343780765524418553425987'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('146263360394541.66340850', '-0.0000000000000000000291369755255564556', '-5.019853905778655370286501102407539701468694254631132201471781980780954741005684575459066532134590172341544956728846419833634251e+33'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('1509441.774', '-0.000000003373555732147098593804', '-447433477863226.58699906317'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('30331911230457034530206902', '-2957.122237268398', '-1.025723957169783101652769031300142e+22'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('-1.6', '-19.96058946599105182772', '0.0801579533874030967'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-2.29043873913', '2.96790', '-0.7717371674012'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('11772568498.701289348100', '-7504.3638391070401237093495', '-1568763.0225698294210989777699927096257870906945103707762203285405938572993792606917235071621002759'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('-0.0000000000148347123', '-3335.62734', '4.447353012761911227169639399825761111551508029071377020191949859722639160284613808208e-15'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('416489358120.40', '-0.00000007008686246187412466064277', '-5942474002841288879.77683608851079051337076828663883240711678573463442'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('0.000000246512839458083', '677119453035840597070.5162050', '3.64061080143e-28'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-0.00000000000067665303968572', '110049103753289780506640.8', '-6.148646527850457868998800682412162492283509753692942914693977e-36'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-259.30262051760', '-0.00000000014084763600931', '1841015070359.151428675425551331452862418678960652787235110730227954405294936895404'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('-3.151376403158403871974624', '-139.0275', '0.02266728814916763857491952311593030155904407401413389437341533149916383449'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('-0.00000000000000001080911612', '-1556.8799', '6.9428066480914809164149399064115350194963657761912142357e-21'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('-283.731555', '0.030718518473446161287514838', '-9236.4986692071265067750541533842080035308332697354'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('4.55747', '-6093895748449378.261959467', '-7.4787462538388036117112195183416415665502531749799195367174376685e-16'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('-6209057913039233089.554638932', '0.00077770788', '-7.983791951599144256522949120690406274397013953362540186e+21'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('-65413356684972913334784193', '-10749246466905288418818944221', '0.0060853899746709817665388011109517624593413536255210794771752430033562011174757753794349810049054864'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('4.48141', '11142539383020069527.9939', '4.0218928970797681683108653744109241673829e-19'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-157010536651.8385557386023265', '31176833.11', '-5036.1284642947673571006367843369451195679829586129506660466580019486783595256574153050659224'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('0.0000000000000311954391035431138869624', '24096242.8724', '1.29461838796763546050032301e-21'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('-12073.3603645', '0.000000000000000003231096498355190416486576184', '-3.736613985576109687026022157020994949604856807112675513970122687511460575831414034729237467633748036752626463635751e+21'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('-11229937324', '6', '-1871656220.666666666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('-36173.069316352495643', '-3847.08178', '9.4027294934064270510516675317466217211530138046610488223101927404309039669024140162676'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('-2502682902.58827454', '-150084564633685530705.4', '1.6675151829880867049650894318382222851766631493251569e-11'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-0.07688246602306', '-6403753', '1.2005845013550647565575998949366098286426725078247084170797968004075110329833146281563327e-8'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-33960220.713826767270362074', '0.16733662760657090', '-202945530.8115294687'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('2.8', '51255410606449547593.80', '5.4628379070046346857585963850812976524e-20'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('9', '-40332245.1457930390012', '-2.231465163287288183909357572411828628922732061041e-7'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('28.20588', '-0.000000196910070', '-143242445.6504433724491591516878745713715911024763741133198520522591861350717'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('0.00000000000007527724346240', '-2548.46', '-2.9e-17'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('182357.1162144822274482841', '-96.6', '-1887.754826236876060541243271221532091097308488612836438923395445134575569358'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('1131000923219021023017192.4', '-0.000000014817218356012837761464311', '-7.633017858308472878065579194067412216888064519989e+31'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('4453786.636962392155535677', '-250963.38370093135464105', '-17.7467587951790260682885114754120226687355539896097812099137476157310503575581592474'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('0.02105880647636941373891522', '-3', '-0.007019602158789804579638406666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('-7615.1336008111570321673', '0.00335325681', '-2270966.4163214379730633574706734137669581'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-7620249639404', '-0.0000000000000002537522482549', '3.003027437908366061360597250587446069936925235724720585e+28'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('4036527.94508226109659', '273093013735095.5684', '1.4780780694001038799691151063431e-8'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('3581132452.090', '7363910', '486.30855783001150204171425234691896017197385628015551520863237'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('1772.045', '6242.573', '0.28386452188865072142528409359409974060375425325422706310362730239598319475'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-171.1', '25.4098814519375642105786397119', '-7'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('0.00000000120698418896873172829603934', '21.2635246123591424034', '6e-11'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('-0.001184391777561431496802559296412', '46745128538963675598448912367.2', '-2.53e-32'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('382477039554', '24271.0171155624320604387966', '15758591.316255880898891009542620046581391'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('0', '-3179701885690718286932', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('22521535008035260.265331029', '-2540337', '-8865569807.484306320512211175'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('2170680047.145934907', '-16635439470', '-0.130485284206677763650328138881443088199941615368698161600175627942097282026298040444855166787'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('0.0000000000000000766292', '-1.957255933', '0'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('0', '4882483440602156078', '0'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('7.8', '-187381241311437016433382.48235', '-4.16263652936102018237350522975003750680024e-23'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('-27718.0722643084293', '0.289733680', '-95667.41520802286189165167128654148872164257879857115679475026859148718920078604599921'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('11440284945540031728.983', '-5825677608914.4676', '-1963768.97479429291268951429185159439402414197554120618367860332859433241104754409651622089284'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('78.672496610303544707', '-1480.9216470187259083', '-0.053124010151840767416622387121575177625203747374376939509920643'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('-0.9359034339029049964', '-9.050', '0.103414744077669060375690607734806629834254143646408839779005524861878453'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('11675.6028651', '278671', '0.0418974448905698834826731163271384535886403680325545176929066892500475471075210552945947012785686'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-718522471082238904716566210', '159968809108512620.67494', '-4491641058.56935624444165047282107830437431356909913096346865381177604838282981'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); - T('-0.0000000000000007240115', '6894090690193', '-1.05019143573194176430303605992882e-28'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('0.01403241861365534490176', '98.781', '0.0001420558469103911167305453477895546714'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-100163956276268.45400638712953', '-0.000003822500209599644154', '26203780453620770552.762045992882479543453412936816289906209431'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('-108012944.1175122414', '-0.0000000000000052661', '2.051099373682843876872828089098194109492793528417614553464613281175822715102257837868631435027819448928049220486e+22'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('-0.0000000095661227651529585795', '439.658', '-2.175810008041013373917908920115180435702295875430448212019342306974966906095e-11'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('-2294287466562757501742320.27601', '-832584777918371.546177', '2755620241.219080420608405722438221977774013'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('-0.0000002759', '-183126.762211952', '1.5066066623330111887480084015381767263333164079000147488698351688626521e-12'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('1653901506.2955747033592190', '-322190268156088.641', '-0.0000051333068368605218558546015330570362016912647522618795650532856646842031492231821113536'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('248330241832030242304149.24', '3330.8', '74555734908139258527.72584364'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-18342746626779219566723384.683', '-3', '6.114248875593073188907794894333333333333333333333333333333333333333333333333333333333333333333333e+24'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('0.0002199161', '14860579112610491.754079911', '0'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('-0.000000000568242490987', '348596.86613', '-1.6300849095272387267e-15'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('0.000000002049503091568392', '2.22227599162281', '9.2225407613378789315422863796067e-10'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('26041624909507628.488792197140', '-246901903760748416.0953516', '-0.1054735687042022440675400298081862682581'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('-320580.6238', '0.0009850386145294971077', '-325449803.76543418'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('-58275174168.25149350192684', '16653.838', '-3499203.857288121422937273678295657733670761058201719027169592979107878916'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('46770480873406.409882', '0.0000070956746212439754972487', '6591407212131559214.2696047445573145755811032180453546396659194926912322518859416'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('3.754240463072038', '-115117.4885688923668289', '-0.000032612251272536256054753760718128290585012986196327512602851762942681368'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('4', '0.0056705434513331', '705.39976182699589005149617'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('-9050', '-1110617973.258696', '0.000008148616552140008896135150388571481487341383070838106781751554751750807288566249'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('0.000000000000000014', '-4770178679', '-2.934900544005387350396984993106586313e-27'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-2.1611115285091044', '1', '-2.1611115285091044'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-1.486211747365416', '-1386302473893.3388076342', '1.07206888493208023054074800312104610361989162636431378141145313364812e-12'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('-0.00000000000000000014428', '-3', '4.80933333333333333333334e-20'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('-32608018749047.9996725803', '332.159913589', '-98169638824.61663098063583714993775277959765'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-0.000000000000000000661438157030', '-33292.064829009268', '1.9867742070886854266568898631488887980727035276739897454831283052178e-23'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); - T('178992107258447203.67', '7', '25570301036921029.0957142857142857142857142857142857142857142857142857142857'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('122641090582555142454291285', '-19338960887519151968841287700.2', '-0.0063416587528084004561775821574233856070818007325775576443265439169'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-7', '-4906.459444175730287072723974', '0'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-7691.6200805', '0.00000005979', '-128643921734.40374644589396220103696270279310921558789095166415788593410269275798628533199532'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-3547231646.3828711', '7.78154', '-455852138.05787428966502774515070281718014686039010273030788250140718'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('127.6570', '-0.000251316107215474764266674', '-507953.9127611456689859414656378008562846463183737483733030129'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('0.0000000000000000751948126794197435', '-9.471515838720393536', '-0.01'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('1.4', '1771.9512519134307055', '0.000790089455614661281192204203464890374305788190624271762375083'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('10.10', '80325048.161', '1.25739109172471374349282788225230454835680854762207952658609299828415947260000796901359e-7'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('3857345278902280', '-2452638478359688.015970', '-1.572732921275'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('-0.021', '0.00000002882977', '-728413.7195683489670573161006834'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('-36206966.8939129954925798651759', '-22.7013433495627012494', '1594926.18284241116152432797478154892604082831306502511561248383742079121'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('5.5110610412115985840905338', '-4901879566436940738.477642', '-1.1242750798990880390037343298118832909837831e-18'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('-292125.918633265', '-2390686440.2576276060503', '0.00012219332226679824515550937357789383313825356191649299186874000273523091107167169375245388194'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('0', '-102275090.1', '0'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); - T('2.666778067490', '216.21210', '0.0123340833722534492750405735849196229073210981254055624083943'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('2363.828945', '-0.41511719893859553946529868', '-5694.365232382625093743741062342'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('-16329.50', '21363731.3167546173519', '-0.000764'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('1.1396176388245', '-5485.281', '-0.0002077592084752813939705185568433048370721572878399484000910801105722751487116156'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('0', '-33143947602683866.435849148873', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-0.000000000000000000055196335', '-72.89889049', '7.571628954705645205218266690247949204418680309602e-22'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('-12.471836599', '0.000000000000000027069', '-460742421182902951.71598'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); - T('0.000000000004406', '-3.8', '-1.15947368421052631578947368421e-12'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('-47.9653', '16753400954657', '-2.863e-12'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('-48292622.6', '894.910689010519453168902686', '-53963.6225078459557881137025384011498164613577179194959550666717656710800958124435690706757022'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('104.4', '16728461156682781', '6.2408609508169669877e-15'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('0.00000000000242526901875700822786120839', '-0.000020180224165103702340737812', '-1.2018047960789563562387101610719677162023172609323952542918769865608172696005280649776e-7'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('-1816974287.73852', '-2748150389.1808717035915', '0.66116261136643872080726488469'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('-7.6', '5009220859436611651783', '-1.5172020186897437e-21'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-0.00000000000000000498398533825394', '25882849761072773.5995635665', '-1.9255937364940943765693045003752394728474718216467301581e-34'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('-82059240599', '377376698042.4017333228', '-0.2174464958347266361200674350905444260783111107023398'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); - T('90627979', '174273716385155737169698170.541', '5.200324000648872237330439812746e-19'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('1803768.648947634', '12779000526.591068884', '0.000141151'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-0.0000017977320993875685730', '0.000000002321196536', '-774.48508625017548837148531743285351861304001188'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); - T('21', '96592.00', '0.0002174093092595660096074209044228'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('-9084159902.2773', '-0.0000000000000000003819750', '2.37820797232208914195955232672295307284508148439034e+28'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-475115003.43806', '-0.000000000000000001181287678509513467781749', '4.0220093046050820583944191642895006512408869334056873162428415838264772935e+26'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('214.229235', '-96718.991049', '-0.00222'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('-18918149257957412463884', '-12933208565390138378746.1679', '1.46275761055792844404673151942791058773622292664668166595152619195819218153'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('1159.3', '-0.000973', '-1191469.6813977389517'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-15.0171621', '0.01112357298508184819314643', '-1350'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('1257949.03', '0.000000000000022102066080572533260', '56915449687562150843.321252993243314644749883359919608357053897347202786399238773645987'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('-12509289.1748544943125636400748', '0.00000000019570', '-63920741823477232.051934798542667347981604496678589678078691875319366377107818088911599386816555952989269289729177312'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('5103106614703706.7', '-0.000006855059817629', '-744429188142190173489.2713016971254171088888271678386913354383444543485128480265142256148634497157227198749636248722828'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('38002724.5614025131', '-1.71', '-22223815.532983925789473684210526315789473684210526315789473684210526315789473684210527'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('-12309000072530.8782101', '0.000000000000000005004668128957057438', '-2.459503758363294183324008531673735403936497133985113056082719930636152213430809622794608640259961200476256210907e+30'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('365159985032.3763673086467605', '0.0002248991250864720416537834309', '1623661207627975.73236893711916990791838169197927385941853797750513823629941899829442490537'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-0.000132733440397044287025245800804', '35.06', '-0.00000378589390750268930477027383924700513405590416428978893325727324586423274386765544780376498'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('-9', '-15069582487318433', '5.97229552150751792890065332726072e-16'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-688440865278.1976957', '-191734448.78467510638', '3590.595584893261972185203469698709886249651463039636148228569063563654046627'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('-6.884105', '198.528', '-0.03467573843'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('98494481', '0.000000000090907', '1083464210676845567.448'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('4.1', '0.42104952', '9.73757196065678925367258464040049255964'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('18686.30172522661238', '-22626731230.8', '-8.258506955609394854491e-7'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('-217561642539525707', '4687.6', '-46412160282346.127442614557556105469749978667'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-3', '0.00000000072', '-4166666666.66666666666666666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('10.3369964842', '421357.91', '0.00002453257964043'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('-966.95', '166.35184', '-5.8126799198614214306255946'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('88.312171688114496097823009', '-1', '-88.312171688114496097823009'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('-0.08100046091599871990126157625', '836052437639404688.1260', '-9.6884426465765284782792330904408446819277826640674697982217950846e-20'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('1307029672025726.8946196', '3588333885571316791', '0.000364244162808062686280269617983867361116163528210105586323320774998223691317505'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-306094430745053063639434225', '-12.142338824106155973001689520', '2.5208852691325375368534545536856115462837e+25'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('0.000000000000000162919', '0.002409301029588780599', '6.76208568373903066167611260640812687570871901190402134288403285417264259e-14'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('1428742', '241634.827979485972105568060292', '5.913'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('0.000000000000000002510050622', '1523.2', '1.6478798726365546218487394957983193277310924369747899159663865546218487394958e-21'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('-0.000000000000000000035749559428282832870653983656', '-24286992018217719702.563900', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-138402.4665046532', '0.000000000347385397352979926188763', '-398411872114537.407536113851520690910631203'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('36438.4910796968134561', '-1', '-36438.4910796968134561'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('-50687824864.112', '19163378634568526756727650.450', '-2.645036e-15'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('488334449.2020317740855741', '78.13', '6250280.931806371100544913605529247'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('0.000667304', '0.00000000000004928708049', '13539126143.52'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('507.3946759', '120.660', '4.20516058262887452345433449361843195756671639'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-0.0000000000000209691683203167478229886865505', '1076.27788', '-1.948304309693398866748862901e-17'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-113.257633861192413018879', '0.0000000000023303326777400552', '-48601487222429.156054866043674'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('-2077566313336500634596', '-38810801724.61887469', '53530620884.304922435225040116'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('13917443811993', '-1164251924.0598120192232144558', '-11953.97965370079'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('-1439867048.03', '-6', '239977841.3383333333333333333333333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-14.1843451280640557', '9395.3328084', '-0.00150972247788629551108132302742026195917932779804177309147038474588667770603633192'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('-3831836247.8565953325900323625', '3169.1996790786465189454871796', '-1209086.405363574724665960371338376916663187706990416314468'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-0.000000206244605375083882357269', '1445859182.857448', '-1.4264501537936e-16'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); - T('0', '1.21', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('83335008717067160822.171945907', '0.000000000000000000120693306315870', '6.90469183924489231374137123999663300649220373696042103284760306718607591350537867610533460388107985601192585e+38'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); - T('10846307850991.30628627477717', '-1.310684754730377', '-8275298703098.531994827629365416255194325218938141649862829575721253963'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-678310684269746238023205.639', '0.00000000000000087620', '-7.741505184544010933841653035836566993837023510614e+38'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('273969047512527019958734', '250143298211591.665974', '1095248401.501372969143862693'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('-37913913.68389085010', '4349730843058434231425100.95', '-8.71638155367617422094891802420120647e-18'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('0.00098741424750804361', '73915637811812314022106790436', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('0.000000024440295818881073037', '-4', '-6.110073955e-9'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-99.1590286313793831503558794957', '16787996379118410.56015892', '-5.906543365396325479029718112268663527602296600354973223720357251e-15'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('14723174275120', '265178680875168135247.4552', '5.55217117248233043623251282398647489648930220277513034207786907942086015047e-8'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); - T('-1.9457690461029591399869', '-0.099', '19.6542327889187791917868686868686869'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('0.000250', '1395491087969', '1.7914840313588129521412774522257497935e-16'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('503.15', '0.000055143785802', '9124328.202757369327995707928780047309382227895227961374562427617199890268'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('0.000000000000025660757724442223488803162730', '-3790245.532665333', '-6.7702098724979855589219544271270126505188e-21'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('14.463', '-0.000000002111666808880372710015801068', '-6849091882.8564768623016676014845618727081781903335062812202548971724'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('-0.049977764242150', '-3554330936225373958.9794672159', '1.406108917230575984432591142761469848719374481586786332741084e-20'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('5999976195382498.2106', '1645742458.4628816934', '3645756.45753616711261372450729345569328619981313857117469084254846554829522'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-0.0000000000000000234', '92.7', '-2.524271844660194174757281553398058252427184466e-19'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-261323770210', '-330138315587204.04966262', '0.00079155844042274'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('-266747620889317710970', '16715859169459882384', '-15.957757132619870995789063025'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('3.1999829102086268', '0.002585180334233347790', '1237.818061600566349853496904836550436749744609638869515041'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-171766371.918350352954', '216943045727495078.512735', '-7.917579074376427781751348437342336e-10'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('15.52', '0.00000000000025530580488751', '60789843798648.64227787529457012617431943426961714858379045883500607718007'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('-0.5622727159023', '-817.5', '0.000687795371134311926605504587155963302752293577981651376146788990825688073394495412844037'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('38.73768595163933', '9365314625538049210738174', '4.1362930665464750235406947353030673158822890826879e-24'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('0.0000009208543785903092638599', '-34569.1445969401454', '-2.66380435306408421772788564135897283463549176971345853940568337909378e-11'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('-30396165240.0206', '-225.46', '134818438.92495609'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('1940492058391889114.99304514', '95.6', '20298034083597166.4748226479079497907949790794979079497907949790794979079497907949790794979079497907949790795'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-1040764761.50', '15098783841.213396', '-0.06893037031626'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-63112243829712286.712176382', '4.53086863642258227476029', '-13929391667277191.1049048030718148987048324130822940316106043476213962789837629470215414269675882887'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('112250343.6965919520', '-0.000007472612227381', '-15021566793642.3131422877563285057056713294011180360286844613050561843696715073443827925933925429718296877346761445'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('-858308', '-797915.1043309205', '1.075688372536475592165307888197163680941989658239175669621943724756050703'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('7702738480378783', '-27211551328852834116.7', '-0.0002830687007620711698741765472408358310483607997205237758794286665'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('-10364330957928.845576', '-18586324921402.274691', '0.55763207636568597276102172540430891397353156072928592967369650601783246460086442630704'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-418215482375364', '12.1', '-34563263006228.429752066115702479338842975206611570248'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('-0.00000000032235960011619131724', '-0.0000000001199449855652686582449445704134', '2.68756212356020288555782622224'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('1731992042675229309286.24145774', '-0.00000000543884846850764546877', '-3.184482988823674786228835511596539162161550426544230885758694842325199901058255160684745968156272681580975692287458054e+29'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); - T('0.000000000004136224738967149777156268381', '-147.937118080566990703203', '-2.795934375789684904194318639235567496e-14'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('-0.00000000000000000811468340227542368342231', '32479961852.044142528631352', '-2.49836605081010033691506373017657135694584426440346612866842162464e-28'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('-1788.32930998675528964704109632', '-4402.9030009101454', '0.406'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-534035137285426204832193876', '-0.000000000006958343802621144', '7.67474491680419827675194262635906350252120322866880525282383045e+37'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('43433765.655395', '52829486770946303169.008082', '8.2215005880544534379454896415484632e-13'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-256531.89844052843379160703785', '-43565278723435678939.0029', '5.8885e-15'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('1382.605599', '496725559.747272963', '0.00000278343961140926681'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('0.000000000000000009124024133', '-85809.060510899400', '-1.0632937918998744386039106970980125782e-22'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('-28158922704444951.3318876655', '-3', '9386307568148317.110629221833333333333'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('-31357452346869.9832', '-685465.0410716072806884188251', '45746245.932320593614463966989994270901457798084302915769968731'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('0.00006296856775186224879239176', '8361.092', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('0.0000000000000000001083906851243582424', '-176733018789786191849', '-6.133018372377985414924780432053129391963905924345013316934e-40'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('34646285.1404977758582763', '318004872839520750922158.9481', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('102.519957707', '-25322.3195', '-0.0040486005915453361213612362801124912747428212490565882007767890299306901960541173963151361391'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('239446310.05585430497014', '-1062112156216.1340241041011', '-0.00022544352651880230281011078789940688440856622557785580563571076003266177694135980618363'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('0.00000000000000032758850033', '-0.00000000102209384660285940028552883', '-3.2050726204722612547170391904987164753223354245592595297271256917659439684641850986207697359e-7'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('0.000000000000000001751216', '0.000003645903', '4.8032435311636102222138109543781060549334417289763331608109157045593368775856e-13'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('0.7321592', '-18.3014143396156', '-0.0400056075674519784435921655940016725753412040906758225360442708922820561490546102'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('0.0000002141074381007', '624724950524740', '3.427e-22'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('41477386487845172040', '32686.589605629763268149', '1268942003074598.1820532054446071416406551993937513639812513532'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('73524957186494', '-0.00000000000092742192013327752873', '-7.92788649808146747219837992301661356413777463599126495012475971409076175396083145685072884002449e+25'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('6.51927747', '3.248487618329', '2.0068654204547875474372132567239346142207846063341103567'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('-248.8', '76427387571599.004618', '-3.255377527681660051014924449347117991757530529525972422912e-12'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-136982892001549.59241931', '-0.0000000061294841700339234293707', '2.23481924745376192219348229128691204934976563208655459056668279537751074405701910375123806e+22'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('-566673274360829.4823', '-1616580392609110718613', '3.50538257764116733275e-7'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('-7399.84843', '571', '-12.95945434325744308231173380035026269702276707530647985989492119089316987740805604203152364274'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-14347857328982549.68152091943', '0.000000000000000002193037540912918441895905604', '-6.54245860424706572344549418130099037034313425103219343931227823220414273319099409854830572833303708795e+33'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('447725486095370.54', '-261084333206951673012381772353', '-1.71486921714477400876618519816379556942618938130370368557234921262e-15'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('1778.78635', '4.6', '386.6926847826086956521739130434782608695652173913043478260869565217391304347826086956521739131'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('6', '-0.00000000000000000008656623', '-69311092789878916986.4507210259705199129037'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('8660818485', '-3639713019.9791331', '-2.3795333416285807841757890660196384859105526936081479610725605676155'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('0.000000000000028486886133242758360857', '-90759541920385101577876.2228', '-3.13872079238033749299151843632992877736e-37'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('-264065747359816523.15595967100', '-7', '37723678194259503.30799423871428571428571428571428571428571428571428571428571428571428572'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('733652736.1234', '9128591006429.34', '0.00008'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-912789', '-27424659551921110017.6547018', '3.328351253629541266789534424994247149545228473927555683575e-14'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('40880374.90874231446467', '-168.2', '-243046.224189906744736'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('61496.883952847393249', '0.00000000000528222910', '11642222021920138.4599164773069'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-1719909488824413777944662563', '-246077321', '6989305157562300419.97516123397653536710926725344185618795809305807583950412073935086443825516127103805718040956728'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('-293612812289214043747.58', '0.0000000000000000001354445823693525495644225', '-2.167770811892220004074067777411843143084716317536069982839371579007784821146737197752377313721918329436356512944e+39'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('-252024.7609680', '8093.410735', '-31.139499676955416497838225678534032784387038772967945756926'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('13815446674716621.06', '-128.60', '-107429600892042.1544324'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('0.00522362886930946079174276', '3510421.9', '1e-7'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('0.0000000000017192602049124017803', '9145.69189439399893224784', '2e-16'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('1411430645669589892', '1.425722', '989976058214427421.3345939811548113867921'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); - T('-42753742073377897547.969800322', '0.00000000000000004474405195762283308535569936', '-9.55517889034056160615372279164249929677188173410104884054706502204169530968066421766387e+35'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('260.52011203584432', '-3676.612144', '-0.0708587421876949335344413745699687815642486764304176219899903589068926276168009088749830338'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('-7.55456238', '-0.000000000003719260', '2031200394702.171937428413178965708232282765926555282502433279738'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-21222.41838531276', '-289985647', '0.000073184375'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('5525891.1', '-10.91656063', '-506193.41450953'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('32312.39417353723751', '-0.0021138482494108150925', '-15286051.9588118724318989155766929639454507451602078022076670388352'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('2446253233428.940231', '-31.3104706187216162148542', '-78128919338.767159502811844194454831716599966285174816279870865962312'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('146.08985841078', '-712729739', '-2.049723063552143991567047548159064539890063433988405526600314905619505796993269562447709229e-7'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-254679551.3351240205748', '-963077196919.166915969572427', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('-4015380412427088083628.66', '2039551492.85975991919183', '-1968756575396.3470364088815587613164748499818'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-19505548357651893634645.49', '0.0000259205709359478093574', '-7.52512296347636581817777703374439950046132124649587214448460528e+26'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('751007.690', '-1728265.8743523486981728681294', '-0.434544071687715892515560844698898014769657263304930643624836329871222288884130814653288174932'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); - T('0.000000000000000390405721683', '-53757', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('0.0000015791374698', '3467564978984453', '4.554024162115290937032043e-22'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-0.0000000000000291746896274500185363981690735', '14754.92402', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('11384156820601', '-0.0000000000000062413', '-1.82400410501033438546456667681412526236521238e+27'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('432.391547', '0.0018473682', '234058.130371628135636415090397247284'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('13.68132091', '74.24170', '0.1842808140169204099582849'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('8873.080150772034073915', '-42784423325262745958341254', '-2.0739043467562135419772762901090863875e-22'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('-425055.3393', '-5158.9808434788878162409044364', '82.3913389477464651275793694820442509540900451341'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('-17740546137492505779638198852', '-1499.49537', '1.18310109470311374016701357684085413348091898409796357023763267771877148243545426885846269735397715832893836e+25'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('-120967541287515870777090.3056', '-36031769380240000848665141166', '0.0000033572467677331178762017280440971752536610800072303035796168388021794690621689726518441'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('-380753599.97235919717688693', '341731.9117', '-1114.1880138680627559807927940725589544056619632342051'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('3973.86864569059095517125776255', '3790.450615450233881655060', '1.04838950532496793358231611052252426985338442899310394506730907098751686558696776453'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('819', '-0.000000000000001868873556286311654157', '-438231894953587272'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('0', '-2.70218161827305518', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('2.7', '1525317024104608.786', '1.7701238216920533733865373e-15'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); - T('0.0000000013774085200391251247', '-427044616459807710', '-3.225444056543359111984888087221769479019208413821296679755113045e-27'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('0', '381052750392378', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-0.012', '14229.9130446715011177656231', '-8.432939795435707899418891005245670460221309831396126407817938984e-7'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('-618727765534332776069474843103', '0.00000000000106194', '-5.826390996989780741562374927990281936832589411831176902649867224136956e+41'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); - T('1343044.4', '4.8', '279800.9166667'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('-29698.6587975512709624472801340', '1.09369018', '-27154.54462391833029208260801427329264307740241390848'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-206050982842545845299.0294', '-10252.57709396842301448856240', '20097481926155459.46507056716149702202267712679553829986963187484665742387256996692'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('450787174.91797094382', '34776465.949216', '12.962420494'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('-8912.5034568999175', '0.000000000001027649820', '-8672704732143014.9231184607223499538004103382220219724263660163926268191'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-291963929613551.38551581848913', '5127.96119843765', '-56935674494.28143813'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('353517668823.2', '-809912559.8', '-436.488685779237374903591413597436101891650155886371278'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('-0.0000000000345575618967481574', '-8651.8104189', '3.994257874774588630231688258982315644045347356149059273049115794e-15'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('0.00002262033686410', '0.00000000000000000016918722881770681', '133700025836303.5440032071856005751361649815034573256386641'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('-9', '-0.00000000000000000309370135915883', '2909136647387024607.211131551769362614690719452830247'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('-72.68302213970591', '24447071019007557295898.538296', '-3e-21'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('145.61599228290', '214774372.717934495176385', '6.77995193e-7'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-0.0000000000127239336', '0.390324864377574104115012', '-3.259832e-11'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-393350.90682', '0.0000000000009567676207', '-411124810570212056.9264787202'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('-0.0000000003668467144', '-0.0000000290881995629295142832857', '0.01261153044575215164761048554983138702158579139495482'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('4.787447258776', '-0.0082432922249843941', '-580.76883945298487'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('2696690009318863222773086253', '-0.000000001462', '-1.844521210204420809010318914500683994528043775649794801641586867305061559507523939808481532147742818057455540355677e+36'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('76881164209637856397179639', '33.7', '2.28134018426225093166705160237388724035608308605341246290801186943e+24'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('597716745962233128726', '-39.60', '-15093857221268513351.6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('-91356.9', '4.8', '-19032.6875'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('6', '0.0000000000000052', '1153846153846153.84615384615384615384615384615384615384615384615384615384615384615384615384615'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('-6595759.2090163406115', '0.000000000000107279', '-61482295780314326303.3771754024552801573467314199423931990417509484614882689063097157878056283149544645270742643014942347'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-8366642360683555547365541560', '-39.620862', '2.111676005606227231342301830788032829775384493149088982465853468811456e+26'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('10769162802333.3620', '32525723925789', '0.3310967905558193239276674624674343930721042133996441026370693086124554971148047279865860532'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-722856872353934530.245543', '28233', '-25603261160837.83268676878121348'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('-1', '-504284034426003', '1.98300943859593228789356646092126130439e-15'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-161.18599049116514632266705', '-10286701.34', '0.0000156693564987'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('-9.497250', '95.217589970243492', '-0.09974260011168095598895157145158668001901445580253863'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('98023548.73', '-3247574706953067067089963.0', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('0', '-150978667633376', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('13.945', '-0.000333489074233133', '-41815.462866562865851280031427636914'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('-23264894.70087300543163', '2129233469499.5357015', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-17520127173088.05', '-32144915.483903564124', '545035.720559327104969763059381957684855487085216377818567655'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-2507754348349292581124766.52', '9', '-2.78639372038810286791640724444444444444444444444444444444444444444444444444444444e+23'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('10132.85840', '-0.00000000415470652290632786510493', '-2438886680475.2783550885887106154489894064656314634276650796020629292987020657942917264533220964319659'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('-2408133581684757559117', '-143220715840651400750035', '0.016814142895110702260709558133521323305519171571563617498137562792145'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('0.000000000000000003198370', '-542480.91706', '0'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('-0.000000000008512648221547079532', '47947101838.0139888013', '-1.775424977782073370220761947962681790318209412034329729757695848925e-22'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('0.00000000000000000011093', '22917.451210427999', '0'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('-5452.9', '-117854011174594916759393320.1', '4.626825973637670289155725075691610989628825159024940840150731975804822e-23'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-2163', '-5618.908218854533', '0.38495022'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('0.000000000336304373477542493153710230', '-4186031524', '-8.03396657548779828906300969366517365e-20'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('11553.4617260458525853', '-402113198056590396003', '-2.8731864017106707904343853526999954587484204677438247997511e-17'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-181.366', '-26923110833809265.90276', '6.736442943742065990244083064716388108845247447476821880350726856024e-15'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('176664198.97382887749', '-6.703640', '-26353473.4821423700392622515528876849'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('-0.00000000000000001081719221524', '13557.51', '-7.978745518343707657232043347e-22'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('-279668700083542629396.8738', '-8989194394.50111', '31111653370.6982896042912274454917770704503039799571441076351113468002914069592993132748827192761700465839897'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('-10962559713.5256', '90423573495954484891232.735334', '-1.212356390008857658041919479438436425645429346797893680515762015192882468075426906336431e-13'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('8417526.02327013', '2777508574.8209', '0.0030306030734'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); - T('123573743499355386610.311970', '-6801791452477806600081', '-0.01816782304525656027864123540300829519018882095471454248744787831024859664366597147763'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('445.696', '4617891890.5', '9.6515035554836794202772382984178914701251e-8'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('-11900.9568454100155485', '-3476642741.8436463943548629222', '0.0000034231175674665373261181070448471272'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('11348547.8754874465167814538', '0.00004569466684935670458', '248356069930.44994350575754262658581065466587206841915638415295657073357911004031792129581118795515446'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('11.57', '-17254134620', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('-0.000000000000000492', '7', '-7.02857142857142e-17'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('244775175978.4297', '58.3', '4198545042.51166'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('16084427.989905', '13774842831298.8', '0.00000116766689732084835945526952707448756700157'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); - T('-0.00000000000000000072736713853935309030799267119', '-164.42446530', '4.423716003650906142298962800336988536948582675427438352144058941330794767072902e-21'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-437.5396', '-1.77', '247.19751412429378531'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('0.03983775', '3560454489296722751770', '1.11889507701217477177168362112653150044898592883858932108625090095410893684e-23'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); - T('109362613295.86670', '29.64', '3689696804.85380229419703103913'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('-0.0000032765290989360868917898696', '23134769823577489.12274739', '-1.416279100212553826140199909818514674618878864071375130080526341123427e-22'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-370', '1895716488790', '-1.9517686436127588143580679436793115682e-10'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-0.119463366506755', '249.81', '-0.000478217'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-7086162368075.3800108071', '-0.00000004820534953852057358915222439', '146999501837713569169.304265988413248513013633283530691155318444527059289806808714865906466809802032523276035908798809'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('0', '0.00000000000000000014803456360474978130174416', '0'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-1', '0.00000000000000019619313938607223639', '-5097018188960128.66621016506236792382745133518116907519744902661'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-0.0084827970779245676518357807346', '-1.5', '0.005655198051949711767890520489733333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('-0.000000000000000000050067235497272278048443611', '292.7081119936176', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('0', '4466725625238.749354', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('-16824641.958', '1.96', '-8584000.9989795918367346938775510204081'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('-0.0000000000000106859863094897', '-2729188667932820575989818.84774', '1e-28'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('-2.38', '-1873114498229', '1.2706110610164259521028e-12'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-4.68', '1082905.925', '-0.00000433'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-8113', '-5949.882', '1.363556453724628488430526857507426197696021534544718701984341874343054198'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('-21706.47947', '310050075109339875387268468833', '-7.0009592683844e-26'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('0.0000000000000000000208693317205862612', '-766835343696143996876', '-2.72148798202e-41'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('0.0000000000000000001002743971335117', '0.0000250220203710886', '4.0074460673596356044798592209348131568198528485765879099969546704184e-15'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-1.33127239316243150282262', '-758441.1309619468855071', '0.00000175527452140412090223529987373882800883'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('-0.457998904018211230990', '106823865246041', '-4.28742119528562117351521105182951354172417051826989560351852664958994121e-15'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('827.7662', '0.00000000000058611', '1412305198682841.1049120472266298135162341539983962054904369486956373377011141253'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('0.00000000000766056111585', '-4326', '-1.771e-15'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('-0.00000000015729606511275867583378', '-47360157670.0547277528812936', '3.32127410150526447699433470761724988139876005238577631e-21'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-0.00000000091092387', '-0.00000016666487527350474711378008', '0.005465601966251928706607718464'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('0.000000007557770', '-0.00075816935781574087888658416', '-0.0000099684456013543837066710559181684089709649944'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('0.0000020087', '-35211882697672804165890828224', '-5.7046083483992675229381e-35'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('1', '-3979309282849145379656834.598', '-2.513e-25'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); - T('288.417899033564961844', '-0.00083', '-347491.4446187529660771084337349398'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-354425.55865449782', '0.000000000002663912762955191297607172533', '-133046983964038871.4593608883168'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('34662.291247', '50631846734.64123571', '6.84594647093620534765634464165957567554562755943960923814340077924e-7'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('166199629396.7152205', '340428867.221111275338763271634', '488.20662816695633016681543159573660494212645642258549253064269'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); - T('31.12250528447262923010751', '0.00000000087826137', '35436495726.17844871180832'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); - T('3210014362437665134887.25538', '-10.7036', '-299900441200873083344.5995160506745394073022160768339624051720916327217011099069471953361485856'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); - T('-0.2186034305808468153', '-0.00002470', '8850.3413190626241012145748987854'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('12478396.1599469824217', '-0.00005802658288439887441', '-215046200201.1485876879095422103548422559818198858685'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-1695.7431718249008647067456', '-1894577221.3806', '8.950509658240235260983971505096809376850495951e-7'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); - T('-241284189093.86476', '7121957475722720030', '-3.38789145984587319969970007799531782077092e-8'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('229.159577781024488884284523270', '15827811.765113481403465788789', '0.0000144782855129804781782160081696446522432203755884279917332806673499'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-2', '-36690762702.360403462057', '5.451e-11'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('28914.0854970944316513046232987', '588918251974184326.432567676575', '4.9096942402732497225323883923686358553855e-14'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('985.3', '110692260427.6595868463953548', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('-11584428432173903', '5836', '-1984994590845.4254626456477039067854694996'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('-285.080308', '0.000000000000001579060969526758', '-180537872508772162.1425399144383005516174655559047556185290795696279787560640447736969020751579144736'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-7314926838', '-4.59806', '1590872419.672644550092865251867091773487079333458023601257921819202011283019360338925546861068'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('-11150536667.220697', '-0.0000148263718447037736405151712457', '752074532057811.16038727959854897547701'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('0.000034439', '-43.80', '-7.86278538812785388127853881278538813e-7'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('-3325765.67', '-975143369337176063355701369091', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('-11714479722402747456', '13985398070045191101720', '-0.00083762218735078839171923'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); - T('-17.66', '-2011513929495288742', '1e-15'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('-364544.23838', '-86661350.88886', '0.00420653768538'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('-8212024.05936522', '-0.00000000031142169355553117630542302718', '26369466961687087.73998920742887087815127142165724721398021346806585408574886791929503494691927452789154395683'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('355562161525907.6', '0.000000000000000000176', '2.020239554124475e+33'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('45053830577655388757.9', '-28567382886349292167417518095', '-1.577107387011780519755115682384135459e-9'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('450487189350.5587956', '-4158900812972.723005705813121', '-0.10831882'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('0.000000000013200962', '982953804', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-77306', '-0.000000000000000839093964', '92130325466147674493.341963785119'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); - T('1278794.9358822362652680550', '-516402.818101142', '-2.477'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('0.00000000000000525450', '-4.00247921699212', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('0.0000000000000731186280459695', '-0.00000000000025477319298719825567', '-0.2869949824338211924404096'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('0.00000000000000303133058001014485268638', '382508.56435663', '7.92486982640184371531271251696217534903553010456e-21'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('-234982095594308.19612', '458878.61539585853455391812', '-512078984.9655498972330178178'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('17317538.5', '29.5966544', '585118.11051184217632382124920173409870272364298040389321841728165059088570497346483864743847535'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('1.13183693', '-10708432517497979855.1615193', '-1.05695854939603537631931016638241905193e-19'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('6.8787514260155610450174866', '-0.214871', '-32.01340071957388872866737065495111021'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('9', '-54745011062627.6303', '-1e-13'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('244.7949772420', '212561.689969', '0.0011516420352025847324194690336955993342194615565994197'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('0.000000031041', '-0.00000000000010832', '-286567.577548005908419497784342688330871491875923190546528803545051698670605612998522895125553914327917283'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('-5', '-1', '5'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('-3647714057342.344419212889', '66.08', '-55201483918.61901360794323547215496368038740920096852300242130750605326877'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('-296586646905.87', '10.62697', '-27908862724.3579308118871136363422499545966536086956112607827066'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('0.00000104208542089884', '-466141.347', '-2.2355567203070702929941977449170583874422965530238620947735837730781689e-12'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-51285337112', '2983965.1', '-17186.97618547884491008289607676711768512305991782544641691687345807094057500873586'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('71220.93', '-0.01857651073264191243878809311', '-3833923.9820131231147816074654911721048995993360368248376218174400380729521529188040354'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('-6', '28767.1596', '-0.000209'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-820.65708906', '-1070782820906061.717912385913', '7.6640853125154414557334549413445715745754921798313010156e-13'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('116589557442731987886', '-5381447.7', '-21665091615167.4183'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('-967636609359503330.8', '-0.0000000000000053167817155', '1.819966779035811877125764991357580589392545656786236e+32'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('1378098.0860848883965', '3829.144881526811', '359.89708635297016136624615649284086100158'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('0', '4353.34549', '0'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-35.0', '714.58398198933532', '-0.05'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('-188.0', '4324', '-0.04347826086956521739130434782608695652173913'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-112.292782', '1353.2574746268109064176431', '-0.0829796133444354975314836744657495573860198495844430986'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('-335.4292', '2', '-167.7146'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('-3.01549', '-2884.17173068256673060268', '0.00104553066931501876'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('-0.000000000000303585323552205201200045', '-521.9394865', '5.81648508e-16'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('-0.0005968274879156986', '-114765522638442814.5', '5.20040752827783749460320576045391710563725197474603e-21'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-10104', '921.19008301', '-10.96842029278588727172841387099769273274951557709344646106993048837381014'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('0.0000000000000000273049586458', '253618203.43011359797', '1.07661667327140760880141928555493830956376043549264221372598231047482040857e-25'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('92922740.3', '2.31571', '40127105.855223667903148494414240125058837246460048969862374822408678115998980874116'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('98.0', '9012340616560.8575896792', '1.08739787109152962034444607422571496238389650882032713766511857928951409622559135329911e-11'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('-9.22766448843', '30584691562.115512085', '-3.017086005163470678943551372474647314661738810411606251930458348221431623446733989e-10'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-0.00000321', '0.0000000000029905245023738090', '-1073390.302420855083982977706400817540115916694852349782290443838748321172953000874847743245801381481218'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('1', '-478284675.8535330846', '-2.09080501735797565380343933829251104375905448306653e-9'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-24889740.944', '-797087273.4207924200426425', '0.031225866694851106957198464945590008419112817133210984653981131991133256272684495'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('13.1614510', '799327655434', '1.646565198955e-11'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-0.02997028136511', '164423.0141282', '-1.822754650498152611447305273290121442270888131882025599486482581e-7'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); - T('-83.962', '-0.0000093242194811805', '9004721.539370062771492551878267567604243603287981636648318973068259'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-2', '-9831.560685', '0.00020342650206608575696341745155998088618826442202853574717064364'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('-2408978781037.3510487', '-2.0209735274300618771100862158', '1191989280582.358613546376064132210477642527787115330582198045845612173066304486493037517120331381'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('156581443947360795736793.8', '153828658191028.8630776013', '1017895142.4832260054950889143026772449424156367352661475671925661398188827146377323678301'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('-106669940.5101239779778850', '287.16715', '-371455.929099564410406569833'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('-0.000000000005329131775399', '-2016075515213211958295433.2776', '2.643319526072123676104268301908366260560799e-36'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('20917.248494281423675636484', '0.000000000000879328552700456560582', '23787750812871521.03901071061542842588654768064339450389481'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('8.14215847559786034216', '53135.171299627387188786', '0.00015323482123892122654505696856'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('120005559', '8', '15000694.875'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); - T('0.00082521538', '2962689307305357254627', '2.785359159886241279024189699621126135113985187557e-25'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-0.0000000018', '-959.7', '1.875586120662707095967489840575179743669896842763363551109722e-12'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-0.000001066091437051389158134313065', '-54550697597988.2164086050344167', '1e-16'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('-881450466.662', '-12.73', '69241984.8124116260801256873527101335428122545168892380204241948153967007069913589945011784'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('0.0031693408972666078125263', '-1', '-0.0031693408972666078125263'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-4.535', '506.69530', '-0.008950152093378407101861809256963701853954437706448036916861080021859291'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('1834.4', '-0.000296642697475565684977543', '-6183870.412488743761227431114731471038972851587971972838707653417369269946548018381567775282756274'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('26.460334800691560145438110', '55', '0.48109699637621018446251109090909090909090909090909090909090909090909090909090909090909'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('0.00013879', '-1859.266086', '-7.46477338800875648306748063816402016596563683031649725901578134e-8'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('-8860443753.946', '791167.32', '-11199.20341748443300211136122255403572533809915202260882059688714139507'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('1659086344364514178134748909.31', '-0.00000000000019569851052023168146429', '-8.47776684632964899225070525498158826632514866528309592706027956562821436539535748195784066e+39'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-5840566934230352003627', '12181689.4', '-479454593073958.362756072240686090715791850677131859888005353346145896643859594712700522474329381604492394954676811'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('-115.78', '-0.00029632151', '390724.250831470182505481967880090783824636962736859703502455829143149277283312979877836070692269'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-17678362127870710507151.66721', '2.8', '-6.313700759953825181125595432142857142857142857142857142857142857142857142857142857142857143e+21'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-1', '49.4', '-0.02024291497975708502024291497975708502024291497975708502024291497975'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('0.000000000000002295093364019182289319365862', '3', '7.65031121339727429773121954e-16'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('356272.49131846480991666', '-0.00000000000152684414', '-233339135269212750.1086391175460777549'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('0.00000000000034718503647815561', '7634618013.74749176089', '4.547510246786244e-23'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('4419292534230334167380586901', '-98750790116226', '-44751971392117.384988619855226602933570788116660146013546402'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('-0.000000002640314227681740808806945', '-0.00000001727726621556096', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('224239562441972', '208159', '1077251343.64582842922957931196825503581396912936745468608131284258667653092107475535528129939133'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('5.07573926', '-0.0000006299941666685128408282015638', '-8056803.5841365606359821934824012'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); - T('-333956334181076018958.8736898', '216131081.6161449', '-1545156447114.7754744584147365985158699131343315862971072549909074858'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('-351329370559483', '0.0000249515526800', '-14080461246850270161.2234898401521039130780056930709612256482629440918624227275943614744'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('563922094480019', '-0.00000003973759974770161962', '-1.41911463717089669561746511053964737252150859296e+22'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-169945484449570746983136.2', '-1257007944836', '135198417120.3812776146603667877407888246796159806670569777738337'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('30369.73135366606', '7670136648490.82036957156012', '3.95947722256573126000846098351557e-9'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('1.4444343508', '-0.000000000000000030201076', '-47827247969575653.52969543204354705772734719'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('-1301765052865.662576', '-8034253087206065409336236.5863', '0'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('-43294281189.9655444155109481', '-5416370820072684.408611244392', '0.0000079932269462644659624737902334378948915704774581638949755139014111418431575371608'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('2.513163425', '-41516.26124951', '-0.0000605344351673686'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('0', '-63301017633243.7', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('792995397863538032966206.36', '2000057.03848', '396486391441214770.533170799574005957026350136'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('-0.00000000001223160894758355959512224993', '-259896322713293214', '1'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('-1976.5', '5864021.5672288', '-0.0003370553769866245326081455571391585055073452007206643'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-1158971.274333232717401185', '-926364306311.6293418018796388', '0.000001251096643552406361650562'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-218013221', '-727851107224011227.52723485', '2.995299709462445366963421695946644e-10'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('-986608546070844210107181.936', '672917810.5511805859535416', '-1466165006485297.99312049307790578350867921850442274'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-2.30', '-3574.267', '0.0006434885810153522386548067058224805253776'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('-0.00096359384288029908705847', '-13117636.77133', '7.345788419651446874734e-11'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('3268.604363654077832', '-34', '-96.13542246041405388235294117647058823529411764'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-26.01868784433545', '44235870867281485', '0'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('74.5', '882526.6667', '0.0000844167126173933662961121716323543699668242557366793730222815033720498907163504071'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('2346320493.483661205767414081', '18891988723810961.6890741589393', '1e-7'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-6643382332752.800366', '708198923.142517034076', '-9380.6727399045969877466366411125785225'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('358420023453.511025368037013', '-0.0000000088425110441501727725645', '-40533737720421213147.897212111279513473931'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('-13903.808110199', '-196395', '0.07079512263651824129942208304692074645484864685964510298123679319738282542834'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('0.000000000000000010395', '-14.28', '-7.2794117647058823529411764705882352941176e-19'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-9218614451113493670', '-0.00000000000000016185263657703762427', '5.69568383072071498871273113548441534234149560125375183394529211322856118223136764911798578479761381095302917255374908882905519623669e+34'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('2523532.104758902674236', '1425317605896', '0.0000017705051101031829994014197506080252923384113662616153652501841038691'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-141.4', '119718482665189185033519.71586', '-1.1811041775015e-21'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('12804.1563', '-719.1', '-17.80580767626199415936587400917813934'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('582037664817572050755.6736884', '-0.0000117163', '-4.967759999467170102811243211594103940663861457968812679770917439806082124902913035685327279089815044e+25'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('-2199756650967975683604832991', '0.000000000000001016247473465', '-2.16458757183196701804046535386679737451306727219918382855096114932607863474941e+42'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('-23276.4098074440', '19.9177283480510', '-1168.62773709440893442'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('2694302819292998.54846048', '148762428626556504299', '0.0000181114468496383624671273269368124102810066837334214790130527562697435433035728'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('0', '0.0000000000000000250169442196', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-15110061623729716511396098221', '1847662722830329', '-8177932821301.647568672180256'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('134.34076196', '-163212229.78', '-8.2310475226692904997820562218410493429630295196130001674191942407270750051019859303585087e-7'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('2', '0.000044476120196283495', '44967.9511426251522555540285522370682163173896901934503803808051'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('138578679.416762928716', '-1580628094199.05509158679944901', '-0.0000876731724087090263704240893373141841606'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('-117845035.56', '-11550621722901664817131.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('1', '793231057244556757901601', '1.2606667261286e-24'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('-421328249052153697.5361', '1050100.2774141333085293229950', '-401226681026.76099441905787096642316278349483887468600450047044679974507'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('-3.94', '-144029804399824449190817665', '2.735544921704276279115462111554858005441023992356721225944181878910114911e-26'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('-14.478', '-19.64', '0.7371690427698574338085539714867617107942973523421588594704684318'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('-1984442538', '155.66814357', '-12747903.92234392340804093524399959'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-803229', '-138327801322951487005370', '5.80670691153917331e-18'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('0.00000000000000772350713715705705', '248.94', '3.10255769950873987707881417208966015907447577729573391178597252349e-17'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('-87.75566506588633454483790799', '-628869755.12856397361489120', '1.3954505579290558769803e-7'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('1', '0.000000000000049923605672579949133019843826', '20030604491158.381896360582775803425921567'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('1384139740647242862.472516', '0.0000000000000020621146911147203403326', '6.7122345163983892089985173449973034403706234889005061761009869711932945762e+32'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('0.0000000209', '683423294485412305.7719468', '3.05813398060081945804588598305083677e-26'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('-0.274823236543517396592093', '-1', '0.274823236543517396592093'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-195781256144.5', '-0.0000000117909502309315138914787608320', '16604366256326128362.6867641014711305994021480467714341195589509594749613047046221518632201'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('-845550065.67484199282', '-0.000000000000011583020213752768186815111', '7.299910127678981990504260833115313467866001228054e+22'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('-1892049706.8', '-0.0000000026', '727711425692307692.30769230769230769230769230769230769230769230769230769230769230769230769230769230769231'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-3196321897906842652526.8238', '0.011866359391009549', '-2.6935994373544003968420629837142065656629591155372486394808649203789817375905652024750602543824104e+23'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-0.0000000000000072978357474268980751421', '2705850830.813896301', '-2.69705767380819467082224402367733736475401295543613580526331e-24'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('0.493510204780969111410170', '-31.4747', '-0.0156795840716819893886254674389271'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('-0.00000000000000000001149', '-1.3', '8.83846153846153846153846153846153846153846153846154e-21'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('3.975', '2722413048.230589336001894463', '1.4601017294504665890474e-9'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-1', '-1164067380456083.3133', '0'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-0.00406774079216508895885', '-1191447019986923326048554451.230', '3.414118063100895806e-30'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('133014612766098', '-4136121831945', '-32.159258883229810827917034044352936476180523568820718624394026197132984123578474447315752109'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('2880602052.52426903109739740980', '-750.32658', '-3839131.03'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('35212520694460536686618361133', '0.00000000000000007896', '4.459539095043127746532213922619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619048e+44'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-5828.32331837104557852500935', '-0.00000000000000020286', '28730766629059674546.6085445627526372867987774820072956718919'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('59023.32246338', '-2.3', '-25662.314114513'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('-26.91186149360', '7.514915', '-3.581126532182998743166090368287598728661601628228662599643508941884239542296885593516360464489618312'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('4', '-1548.43', '-0.0025832617554555259198026388018831978197270783955361236865728512105'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('0.00000000000045058186273986975043', '-0.000552882519115919330', '-8.149685460491094720267563440652111891472395108327682983855341550524023695063e-10'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('20370364868298257638938931', '693.4', '2.9377509184162471356992978079030862417075281222959330833573694837034900490337467551197000288433804441881e+22'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('35404', '-27851923.45390315508813', '-0.001271150987420888540308934579814363714714944137046733052073548329971'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('1133.287750112481', '-0.000000000000009504538918', '-119236478475165627.1770341968733890348198793076897367910803897872997272733141119639529261802324075664329'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('49.33107184109863469290973', '-284326074250012.86', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-0.000003132745516946287732321013676', '-4020613067.0389', '7.79e-16'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-0.0000000000000000000624856143521758410959879', '-6127645959575.9138624', '1.019732777715838962191676539977427242664581e-32'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); - T('7045', '-49228682.23', '-0.000143107629147683565772343445480848087'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('0.001656631748068514997575', '1111754928456906141389839', '1.490105153271402275923753726417383852409982894833468785852753708390198627e-27'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('-4921879.72798194704141569501', '-2', '2460939.863990973520707847505'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-3842875.81600287154215788709256', '1.074', '-3578096.66294495'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-0.000000050117920097154940536079551056', '-1397910398799177', '3.58520260956688483527691792989860753545766e-23'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('0', '0.0080931215100', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('0', '-23751811450190359074914845183.1', '0'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-13915159.169438739755867165361', '32.9', '-422953.16624433859440325730580547112462006079027355623100303951367781155'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('995743797116.35115542864', '-14201957555.706732240338', '-70.113137094698206269394712623561325492522134'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('65802.5484', '249400', '0.26384341780272654370489174017642341619887730553'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('170', '-10981.3', '-0.0154808629215120249879340333111744511123455328604081483977306876235054137'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('201942537975663838827', '84508089664.467591327407', '2389623748.18150606'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('23137876052.8', '-486750238185.362429540889', '-0.047535'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('-0.00000000413170142764279266714159', '4.41397', '-9.36051089527747734384599351604111491469130963735594034395340249254072864110993052e-10'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('2571974844.0088', '-2.56205', '-1003873790.13243301262660759938330633672'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-2288.26338054', '-9', '254.25148672666667'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('1943.0954931552832430914361473', '10715986.655209780472398', '0.00018132679291930719773879837496526569531146097023540738852483'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('0.0000005591951101822447394', '327861916054130937525016856.154', '1e-31'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('0.0000000000778429607078534448233979411', '0.00000000000750103048859169', '10.377636'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('-24266547.905', '-1170740261.1', '0.02072752489283978550278627639143040657833578966852189004299375589313625254294246'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('301.0', '-1089916139863550590', '-2.7616803622862486062850164540557338539790749327672777897590219388059732611421e-16'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-18403001013809.814080', '-282780.004832288', '65078862.364134692779334796303606'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('-62444881822127582837603.59424', '-27.3651008519838850', '2.2819167435153275687231640005567034402782244595814686e+21'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-1', '2.040593173', '-0.49005358502196655148762472116728972316325592254639969826067824446259675886899578488396717'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('55642.6031364', '-0.000000000000000862582262902', '-64507010553637696390.073458125613230811714588454907783871949338725796446379199'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-111.0747736416', '-25663.8', '0.0043280719784911042012484511257101442498772590185397330091412807144694082715731886938021649171'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); - T('0.000000000891240067824482', '-2', '-4.45620033912241e-10'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-1.1771580965', '-384394400500325112421125611', '3.06237056254674652913427814e-27'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-105012166625.1026618687564906', '-0.0000000000000003275', '3.206478370232142347137602766412213740458015267175572519083969465648854961832061068702290076e+26'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); - T('50808964142001.14', '-219110914192.4', '-231.88696158415042981934463247576107829874493853519991170237890107319026305334199'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('6572664354129149393.4019651217', '9.026', '728192372493812252.7589148151672944826058054509195656990915135'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); - T('33.31', '-4.40618812712408', '-7.5598224676215640005099392658811743777115996670683109744'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('18.4', '0.000000000000000009063796984004646283347', '2030054295398654285.716267915678865377862968128412680743328636'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('-826206.5', '0.00000000001348675401954832170', '-61260589375505647.34524063429409961187895088582'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('163649.52737', '90914229.30812336259', '0.0018000430583353974223210959'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('361495398.724177091515', '9621300075383.51524', '0.0000375724066281933838311981786550364827931583670196281658447763588'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('-4830845132049.060', '-0.000000000134', '3.605108307499298507462686567164179104477611940298507462686567164179104477612e+22'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('2', '-55', '-0.0363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('62932082345602320.61003434', '-0.0000000000000000000128306583754', '-4.904820976783304950188966278975096902493124109775290494872199712982469624424632235618240214096005335685792340778902786715996472419024e+36'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('0', '-20042656659491873502.8780627967', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('422300.832', '0.0000000000000000058894360480', '7.17047996715083780123593932265753673398237739044042337141615566788136044634744287489035316883705e+22'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-23732871163291602553.19952', '-234088.2', '101384312251927.2'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('0.00000000000016146202', '4151.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('0.0000000000000000042', '-0.0000000000000051003065', '-0.00082347992223604601017605511'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('21099.156363620443872', '0.013005585', '1622315.05646385332701297173483545722856757308494773591499344320151688678363949026514378246'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); - T('-39719382.4097', '0.00000001206', '-3293481128499170.812603648424543946932006633499170812603648424543946932'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('-25684646695530101.09663290', '1986420121012', '-12930.11'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('-1', '-467714', '0.00000213805872819714611920960244936007902265059416652056'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('0.000000000000000000033286877570123', '-916.5099', '0'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('-1.043852662559036', '42240709131514578739126498.6', '-1e-7'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-7.1', '0.0000000000000096810955853', '-733388069298768.68674779946344013503105681395776477666217263849082719375430604653757358662'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('0', '-178045896984030995126538.3213', '0'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); - T('-377840682286.889417008650', '10024.5862044', '-37691399.38375184600838106190987946490963690396'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-4.526', '0.000000000100219845842383081', '-45160716043.3881820432324'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('-154', '-0.000000000000000000357470393647111044759003621989', '430804907866093922870.601661067205523043745373628598982920969630143060439226956593292728945988714384628'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('45.2153662086445686333586366039', '2.0', '22.60768310432228431667931830195'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-4859389835978.26', '-1108.719806029077', '4382883582.9878'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-1692359.9586057645036945384', '0.0000001662465868', '-10179817770585.137232390616515201742476'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('-15.899462279', '308886629788805392480384693745', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('0.00000000000005787864', '-7.80284811', '-7.417629971013238139272199673767582796123401663908590423657497031555058682284153804962e-15'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('-124433586765045.99829685196779', '4.3', '-28938043433731.627510895806462790697674418604651162790697674418604651162790697674418604651162790697674'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('0.001131144301861439425560554607', '-50.0404909', '-0.000022604581'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('9664584701747956.26', '-220.524899', '-43825367319397.14553502640987492301266171308846172513154625682426908174'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('-70.094740430880', '0.000073254285972', '-956868.796150334825353555082222759529759627536786988423176163041831198316113183505074'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-10.183', '11933032273454430', '-8.53345550958790588136189212586e-16'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); - T('-29736253', '8700.333', '-3417.829294579874126656991174935488101432439425019709015735374726461619342615966538292269962540514'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('0.00000000048212885', '29110460.881250', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-18982193.25771004623685', '0.000000000918', '-20677770433235344.484586056644880174291938997821351'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-46898.939287762958868723', '-154.84896130729768720', '302.8689304198304373897050660480649147739932698320575588'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-736.040064754', '6785462.05675008', '-0.0001084730942'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('0.14750193785287', '0.00000000000000000019221833596519455301', '767366636029866259.8568751222788549790355404'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('97.7', '3', '32.566666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('25725.8309417978', '-802068.425741749136043585041290', '-0.032075'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('246905186178997605977402', '755699748736449.29666038698706', '326723922.5523494590494444506845130782237605736040767460536008488'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); - T('1761946694.171', '-15994035825084456785', '-1.101627327486429467069944745236433100004619177818181e-10'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); - T('-0.0000000000034592824941049711', '155800958967233410222261.80', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-165628.0818075039162', '-1660.013', '99.775171524261506506274348453897650199124946611863882993687398833623593'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('6.1', '0.0000000115108583928302174187348', '529934414.2570213992514206144659067334355751837511402020097748572764397262506'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('79.6765487483545', '-64638113.02', '-0.00000123265585930241160991119539337072064793391457825078693796312186961'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-1325.4526431089831', '0.00000000000000000316328834358410214940938364', '-419011009792172419912.147033054074431563097584718398200111548374447345258856'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('-0.15736742596443911', '-0.000000000006199441964683651494199', '25384127613.568093276217026453299470655'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('-7703543907102', '3.007202183901463022383421', '-2561698028932.537507540384252365699669732703188900300993841196283805'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('15404621.4720', '0.0000000000000000038004912839753', '4.05332372079191356879942794920756510024545207139489987e+24'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('-0.397391835935851010817', '-133797678838627077699', '2.97009514204759817547e-21'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-110', '-0.0000162146328953462154', '6783995.709922686856592619329903740238927539692022340187216'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('81535305762924867262.3842', '4209656.737600', '19368635222597.648614128703679984342103855817243962262202288120357645000969449115304037325'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('0.0000000000000866345606234415543799', '7747124882046092', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('0.0000000000000000137029072682227285152819136219', '0.000000881683373', '1.55417553374035652992652200348344325644893385e-11'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); - T('-24.2536052715', '-0.000000000000000000210129343932237', '115422267150471659440.946101553035975211241209548721277513006464856778199802926435411352'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('1669686.51135304', '0.00000000000000287487030352847584', '580786726032039799848.79613536481530428690282575927510569109'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('-22067077.00922301', '-911395.20440', '24.2124129057168539123816350859877313614'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-6653', '-2008644586121049283021.103530', '3.312183771071116973243223e-18'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('-93244887.6182', '48608417700077241.66115982087', '-1.918286832407050936334e-9'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('-860835344594.186', '15989403620777', '-0.0538378644389'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('-1.7825', '-2847048972405282.254', '6.26086877070500246829279599429901e-16'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('13980.0140745', '422163', '0.0331152044932881375203416689762011355803327150887216549058065249678441'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('27453298.7243917949', '-3967376.02404', '-6.919762220178'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('3177824.7003906950471237', '-10425515321.383134386331312240', '-0.00030481224212225307571'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('18582522299066378696330.2034149', '1343770.7', '13828640778569125.444043543600779507991951305382681732828376150782272600526265381437472925998460898127932'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 6 }); - T('5845735489', '-0.000394103143', '-14833009055702.96352597218439336323689253094842738'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('0.13188581154124472618789', '-0.6528213060657947', '-0.20202436764211950142170611086000503933889563714424658073703470623916956321490786383609'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('86791429156.659202979', '1491123.2804929570339922361', '58205.4015'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('0.0000000000000000127782', '2113.149485585', '6.046992930300200288847233555284598510151547499992100517443810274167788460839e-21'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('-2617586.6', '111536', '-23'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('37030054236.0757694124', '-0.00000000000000000003975', '-9.315736914736042619471698113207547169811320754716981132075471698113e+29'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('-0.000000000000000000541322608970996545', '0.000000000000000000052998971144844978', '-10.21383240613434202029666132622942'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('0.0000000000000000000126149038', '-1.610067534458280489205530', '-7.835015320797944458056437926214003215e-21'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('794375853290', '124881.67103676996495', '6361028.3774638570420370064288497'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('1.145363030413104437791030', '-659980800709.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('10.534261958', '0.000000000000000047061071046', '223842375956621359.2120633522395843009390738718377786577670997275586'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-2.9049167569', '-34.0141849962616', '0.08540309747887'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('-444.536278', '-737781.991', '0.000602530670879441403985150946846573271805437712290269226698974819514129343935151705268446976'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-336.064', '36023.656491885578', '-0.00932898080670127'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-6.1', '58264633665667035361818.929', '-1.0469472846e-22'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('-1.41464728421911929360176', '-5.825', '0.24285790287023507186296309012875536480686695278969957081545'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('-0.0000000000000000002694415597171509704', '0.152740958144576121156786735', '-1.76404261e-18'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('-0.000342706198824227354729023378107', '-42567218609718459777456.2648', '8.050941781429538853063759206e-27'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('12107227564675.217', '-4.648', '-2604825207546.30314113597246127366609294320137693631669535283993116'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('0', '31.84853', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('0.084673856129762004577481829345', '-389.2532447720', '-0.000217528966725399062481477362098232061131300035630881916280084131121011417375828435705626251981234'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-15487575914223598308.2456153', '-7066', '2191844878888140.15118109472120011321822813473'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('-218422676784436096400', '5056.70078975', '-43194700629149697.33799247084471021622601829'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); - T('-807346069698272071.114596', '4066662191536774681.039', '-0.198527940525391748518053704773212430736489129165543508955173628964823411161850001256383681063525766'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('-1028.70188', '5', '-205.740376'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('5952962.53716704950370407994371', '-2479', '-2401.3564086998989526841790817708753529649052037111738'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('0.000000000000000019365709603030', '-6244211876.5', '-3.10138572906415e-27'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('9.102028098037924220', '5930265240759.7093', '1.53484333811549539763766345e-12'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-2.09', '175217506055601', '-1.19280318904709755363024245374548870321951211092053728421809180676381661004e-14'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('6530.35228348105626633386855', '4250507986361021.989', '1.5363698420131360200509150201873482089117026298378797097e-12'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('-2001.714686985807', '1.6278003', '-1229.7053188808277034965529862600468'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-3999125495.505055323146302', '-1650754579.289701310', '2.4226045141282165250267914990506233922905'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-0.0000000003546152003', '87098.1809880', '-4.071442093e-15'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('7686.41', '-0.12', '-64053.4166666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('17008982.901597', '12852.5038922', '1323.39838557991080691469809971694660818521000751025938677832443348808714084164407050402246911'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('0.0000000006190975331411008971', '-1599829.22', '-3.8697726319881874460325208961991580576331766211896042e-16'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-163115836589544710.033', '29.71879', '-5488643265406993.69096117304910462370776199165578410157344898631471873518403676596523613511855631'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('5257289988298610268609597984', '-816870426253', '-6435892179882063.140206566873'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('306.600916918', '1151648641074631.3993', '2.662278285084443950868295801066532613014293687419597e-13'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('-2045214.233517', '413457455140479.7471701', '-4.94661351026334979189093049432828253867506308947112481537775099643873515231581237375e-9'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-1', '-3661602.26438', '2.73104484813e-7'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-24275661716096386654.29800073', '245.785', '-98767873206649659.88281628549342'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('-5552632008878974768445187975', '1', '-5.552632008878974768445187975e+27'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('818159648.6768', '244115702596473698.05040388596', '3.35152405181090749628008186404258507666653773605447977668859045018011860933977e-9'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-15796333282922929455499903149', '-0.0000020', '7.8981666414614647277499515745e+33'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('0.000000002082360', '19', '1.09597894e-10'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-99', '78208258243999', '-1.26585097562374586835550833861e-12'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('-87591825036885332284936.419874', '-32.76607', '2.673247815099135547379848113429532440112592080771358908773618563349221e+21'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('-13.99194714219043', '-175351498463913.6829', '7.9793712997952459641116235509868042e-14'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('1384130089.28691', '526.0', '2631426.0252602851711026615969581749049429657794676806083650190114068441064638783269961977186311787'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-0.00000000000212499939513233', '0.00000000007240682698871396301175', '-0.029348052988'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('0.000000000000555321932980958774807', '-1090.914228795737465940464197624', '-5.09042707779125620188873691494753470313655439031236863103412e-16'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('-424555921771720.35307', '-228881328.337904694108', '1854917.2396663790355361642607437525602863521420340515962001637218134916730345661451066457'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('909122084896', '40615.8', '22383458.7745655631552253064078511318255457235854027250478877678144958365956105751948749'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('-275033147844970356791032348', '18663383.93413520', '-14736510207130049635.24362147911622458165648356299629041443063427770606019649246'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('0.000000000000000000912924219932977059801557750', '-31362811384.8107', '-2.9108494411796090256457433013559775679e-29'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('19195717211692613843523452327.2', '-0.00000000000009529771716949034797917020320', '-2.014289301133242718243099752615590254660068282237752019352055064398393473285901006691203161e+41'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('22839435968756335976825925.7886', '-1400.9085784802758', '-1.63033022422725535268845225997557667897899183e+22'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-1', '480.136', '-0.002082743222753553159938017561690854257960244597364080177283103120782444973924054'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-3.1', '0.00000000003102547924589', '-99917876382.5433082369631082122258715714197495324277761342970442563578079746707084557250348277224401986293001'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('-64842062381.1794872', '1', '-64842062381.1794872'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('-0.00000000000029', '-405.209557011440027214', '7.156790726725446209851753467534831083526943237697522179267126899e-16'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('-402440.646366', '-13820.8377666858638', '29.11839739093488649489320061497376'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('-15766532924534.894137', '-44.667', '352979446225.0631145364586831441556406295475406899948507846956365997268677099'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-0.18545932128668082353226624341', '149853395295', '-1.237605066749320753401793941047987517338820934854681298464202408981526840619457317049e-12'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('180176.7022950027042', '572424114259497094664651363', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('1189180.09948269121395358871663', '2396918591.035796963342618', '0.0004961286978748838588079275731640643086904538376747322163'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-162130238.50', '-541003.9284094244115796', '300'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('23880963761.43070', '2036.1', '11728777.4477828692107460340847699032464'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('4102911461', '-3676443725.1', '-1.11600007175096906802915991681528703620194031295278590690374878764'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-1650239242655225', '-0.0000000000000050625712483330699174451284', '3.2596859613552932393129153402861586036955044336911362958043e+29'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-16182.764285316648602695', '5542940763.334796638593552', '-0.000002919526831742762543598887894075115469395923637093427826391782604223422627269491199365903503'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-2407603954205383635721882', '2143107365549', '-1123417329858.612809923082676425885742146282404083703459326'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-12339.440719898219344670280', '98703186807633789228.5882162235', '-1.25015626333798134296491858057012493610869357932089916422218620688080594916e-16'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('-0.0002227041381338091297915124768', '178788347', '-1.2456300529128396147178008e-12'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('-15846657355.062117827825383', '0.00000000100360520510159352655225199069', '-15789732132226220625.46707498843739636961'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('-503475.661298', '-907234523646711946016951524', '5.5495646183e-22'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('0.00000000000000017380472101435825', '807.54409555459', '2.15226291630546689744062968270283888865515459033941399292092451455048343022735791e-19'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-163520122.133733234791861936', '-398865478.903', '0.409963084756'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('1', '27', '0.037037037037037037037037037037037037037037037037037037'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); - T('2.0', '-6', '-0.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('-0.0000000000136948538993685388021127209', '-21662.0815699657428', '6.3220396687806380279671599940823081571e-16'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-1261219515900192.23821', '1616867.52132244271879742628786', '-780038871.007'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('144', '939194785.95867158250614059106', '1.53322827333430905374910110906343649177622e-7'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('307988608.8312845502416975', '45749.22883141104530', '6732.10492719435955626955333667896'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('33316333.3281046085467801626', '-871263729.395801928', '-0.038239091338289261517183131434824955795926259835680146638135598'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-1157431127.9', '0.019931884955614253042634360160', '-58069326131.344346791615062099778998406644548'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('-2232799206839243.258989787', '-7.404699948336398', '301538107204584.658047021668487234427606847211714'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-0.000000000000000000098180915239949553085671', '-21813.4373', '4.50093737587837901574874675986989e-24'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('4242921222328373135613', '8.2', '517429417357118675074.7560975609756097560975609756097560975609756097561'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('957.39281054', '40494.8188794629', '0.0236423531955972'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('-8326808.497519433892', '0.0000000000000000000490705229500531361459202464', '-1.696906410798790393843617961526811289554079132589725760670291352160736862358530128911e+26'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('896679849158361750330.3', '-137738441622013773066', '-6.51001883424134568586497747769574199893376'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-21050443445135200327662101', '-768532967305.3', '27390423496007.17132845013217685972688586659598916714817323805142988800752181030550845753599047354108117059851'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-0.00000000000004529233557356', '467.75', '-1e-15'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('275310.274', '11028656591', '0.0000249631740482942017103558936990751025189845808301675860930793941700674'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('541913418635146823954958', '10555.952', '51337237857385750139.34868214633791438233140885824414510410808991931755657850660935176666206894461058557295'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('1977', '0.00000000000101254320724972684330834154', '1952509271549935.9654343768254088247606354930480506393749154718487737952702538576473345627569697789893884941849'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('-0.00000000000997082', '-8', '1.2463525e-12'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('-0.000013245144369', '-63328467267444968862608997.2325', '2.09149927994686876280205149202082357406793140080026504433216336e-31'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('1709.084890702122', '7.79419809', '219.2765530163888867751371199753533592831741847608084079371916502060573110222298699621579671707'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('-6.5', '1.5', '-4.333333333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-4048995142031910647.396', '0.00012553', '-3.22551990921047609925595475185214689715605831275392336493268542e+22'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('-12609.0384427562421280659598750', '-8.75296', '1440.5'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('2.01', '-0.0000000000000595060042074436702083417336851', '-33778104021116.022665217883058809681921245023337809066415008588705222492653348391126863560929443112237651681'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('-4445.9329936', '-1265484694121428880022659075467', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-507.372723086674', '97275886.743106276492', '0'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('-1.4613460', '-2.61346193', '0.5591610052647677175079416595901972828814078037861450692721588640091650388035306104497186994'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('28.1', '637.1296149', '0.04410405566285033786458824989081511301131640427847894094178606670822954395366311'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('1614056018629639286992.0668255', '0.000000001995043946297100388', '8.090328143524891175220309357127449514597010377716670384132155189530961665299646362389627746812176231253071694777762390848e+29'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('-0.00000000000000000336992256387394267526736', '0.00278761238', '-1.20889209276432567546114858336222484418726824566620700687231127881e-15'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('14136588337891570845225315527', '-0.4708849', '-3.0021324399851366746364802793633858295307409517697424572332e+28'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('520122.35441667105', '-0.00106639226761502159262351', '-487740177.9927763757352981916504'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('-3.1416022', '6863044.0864', '-4.57756377556350939777055021541818198861453841527227290404602113733e-7'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('-73888251352624360026', '1.019027898110', '-72508565751404401485.13531259242827482906938998131567061577668036745404703294988183569388'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('-0.0000000001071532', '-34215005684429.9803651097097', '3.13176040327e-24'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('0.0000000000000165091645065684622887738078', '-0.000000000000004445', '-3.71409775175893414820558105736782902137232845894263217097862767154105736782902137232845894263217098'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); - T('-497352.791066', '8.24', '-60358.34843033980582524271844660194174757281553398058252427184466019417475728155339805825242718446602'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-0.000000000000000000411700018405971704865', '3592139.1', '0'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('10972491284.0775448', '-85621859.211271', '-128.1505842685'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-794448.75096', '27118343480723', '-2.929562240867447206618714738309475429809780153439e-8'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('0.0000000000014196195975477079', '-0.0056327275608126093185', '-2.52030580606122107857192332768599843864183422831534835001654001071604463649295551424182e-10'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('2388.932', '-174847412808.37863028', '-1.3662953e-8'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-904270784525.592260', '-1487101457806.47398128', '0.60807605276604524'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('0.000000000006956553632', '-3809761.043588211608466', '-1.826e-18'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-222097736193251.4', '0.000853', '-260372492606390855.8030480656506447831184056271981243'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('-8.020357521213419800', '-7461230.62753277', '0.0000010749376237771567387552680998629257106913482717513873708676896190549587473106921'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('0.000000001487977619', '-14831757.761039625', '-1.003237541344324731681695588913489457056492e-16'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-1.3671417', '-30337609.555293895810840851705', '4.50642525907725825415613547e-8'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('-0.00248871', '-5094.80', '4.8848041139985867943785820836931773573054879484965062416581612624636884666e-7'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('-1631801844.1464211', '-5209700932.1295226557917', '0.3132237081178101556075382344313959958552079808832159382810898881498933311621493119008109764054131'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('5220265', '302.896899850306429208090', '17234.4616'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('36129471206013106712004', '71316.2431811639', '506609288352918314.2438496347901928758057680753991964'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-0.04095799045794223557935162', '-0.000000000000000002045837039', '20020162738847664.1903987055539862087715384255490546918385321109635067077304977857525239575056887'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('-0.000000450', '-13.2', '3.409090909090909090909090909090909090909090909090909090909e-8'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('2416468777927017', '73368843.3148534680959960', '32935898.51971681121112106262843095746474481157602212900505'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('-488930153.09447753670035', '0.0000000000002014703934348232568468356', '-2.426808945765269674922705980722179029088081494676722957929097356899777219475532993398117558416e+21'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('-0.00013449517476975725317177', '-4009.66', '3.3542787859758e-8'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-2370941814.13', '3869939744', '-0.6127'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('151634267.9959408', '-179885280374841901657094', '-8.4294983825228990180837395136e-16'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-5834723.5', '222042932132762145245.30724696', '-2.6277456543905430404066e-14'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-5182977179047885.6995271', '-1', '5182977179047885.6995271'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('-275.960627353502935065449', '7', '-39.4229467647861335807784285714285714285714285714285714285714285714285714285714285714285714285714286'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('435232.77562', '-0.00001546518685876415454550044', '-28142742767.66029'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('17152565.5962872563', '9', '1905840.6'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('-3', '-11463015244953733454402.43478205', '2.6171124576674228049372733594758776085978e-22'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('96048852.6731', '-2147476359.33', '-0.045'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('802308719785992.83478970621274', '-0.000000000000023838730872', '-3.365568092084767400824349609025612561141715464054675e+28'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('-2469405771867598621970691794', '13208274832082.460244615114', '-186958993756663.37116178820599078371359019473821063140433284377352248576527'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('63.875123211938', '150998.71801786282', '0.000423017652404053601423846679595081615559116'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('5968.9052418179', '12.4', '481.36332595305645161290322580645161290322580645161290322580645161290322581'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('-10092373627843.309', '125661719213560584', '-0.00008'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('-9.640758704116', '-114294011941961818265', '1e-7'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('-874445.630645176011', '121870243724375', '-7.175218526869000257915855129395306454293973034671008927176e-9'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('95.70', '-18563880782489325261705682133', '0'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('1.430642138666652442526502557', '-392019049568.976', '-0.001'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-113338383169.0552034434911870', '0.00003773', '-3003932763558314'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('-274727599727.7349315563', '2.473802773', '-111054770706.14268066240056720964796169706613874832130766634887267142698768411478'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('-0.000000000723177006176790642200537', '-0.0000043772648152855214738319769525', '0.00016521207573538569355249974275710762198470322975315'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); - T('0.0000000000000012036205956083601262', '70088335.8944243480092127517', '1.717290873365007784367132876526666300424035651543339613e-23'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('0', '2694365.37496980120960923', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('-0.0000128808548871', '-113150287338.889039', '1.138384637815e-16'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('64959579', '-2844.3362', '-22838.221093554271116051611620314082421058382620169865995447373626226041773824064820467'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); - T('8.3', '0.0002226690599953', '37275.0484516133167657984570860417'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-20396012735836189340289863', '0.0000000000000038055713585863487623676850269', '-5.3595139373270543140990778099093060551778324027594486634088540722918075417253512422242403145808377511038296551680862e+39'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-6499564679968251157540869.3', '396.03513', '-1.6411586214506402897997632937259e+22'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('3049042776', '1223454.64540264', '2492.15840362971309031446140883774670563743674081366740871606642562100290557804812625322511'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('-82746934.447', '-0.000014525734132830', '5696575036436.984038815209622'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('0.000001758411398963638209852', '-1.243591206900', '-0.0000014139786363936843705034081'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('-182.6601', '1.1', '-166.0546363636363636363636363636363636'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('32957180677.86684', '-793.4', '-41539174.0331066801109150491555331484749180741114192084698764809679858835391983866901941013360222'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('-2105395842137873185470341604', '914113.92100030522648107434', '-2.303209472878348370484730710269503799585183184090941166581925825770069246561308502688099882363764773e+21'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('384433.68', '-837936819000580187.4041483', '0'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-44924.680363662327413', '1427815449.49888665769', '-0.0000314639265035473042299610791394'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('4.2', '469161809505184788566', '8.952135307922127e-21'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('-2.446', '0.000000000000001926000337', '-1269989393568834.0432517795556335876175913670154253976124823492177820942925411336519407888348671664848'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-1798391642460647981.97', '-85.801', '20960031263745737.019032412209647'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('497190320699.5', '513392304.6658800203726', '968.4413190086197216716997847'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-214020470807', '558884.0577', '-382942.52243974859760971134961755055980728147365080941724632772612365035081586654462196158'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('0.0000000000000005509', '-0.0119736313841', '-4.600943375721e-14'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('223526700163168.46486200', '-1', '-223526700163168.464862'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('-25286459726182070311791.909', '433.7360740475', '-58299185240038067511.28129774424559013541570090517247178984773028120836638467521748428037638736196547396310559'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-3.84', '-230672031462873433.0153', '1.66470116712786066303352770626517164690855571283072395514036e-17'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('632950152864580.65806833710', '1011836402.79441682522548', '625545.93916224456910414210535241390621121167829557801534106250932338'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('0.0000049339291', '-0.000224984438551534164275604594713', '-0.0219300905065478611457684694214449309434783552017018631671257490485809082'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('-338.94738367925637130', '-0.00000000000000108308163937159066800236', '312947215942018297'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('0.000000235260614812120582298055', '-0.0000001110910457371282365718838359', '-2.11772797034255549563416'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('-0.0000000000000000107107322284477584466235196', '-2391721641165.67102534484', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('-0.0000000000000005398629480878534175959', '-0.000000000000000136008', '3.96934700964541363446194341509322981001117581318745956120229'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); - T('9252954275750', '779920382572.108232331', '11.8639728907129951645131952586665510691059605616223'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('18551323.658736281693135', '0.000000000000000001083710261119958768495433103', '1.71183427197269901846890303728930083400789583517718237462254164308070293413156940798718e+25'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('99120792392919606582512779054', '4537894940425.523', '21842901542278753.061995238086054191528706471608646417028260674251502929926905209213308388020971982838402146645258077'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('-0.018317364097', '9108893695511350715.938', '-2.01093181118431183740457551868150570844544523605691148485e-21'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('0', '3.99909', '0'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('47249329.6203246', '0.0000000000000000931583884570847', '5.071935056292967267476182009888681080061574005814478713655830342537044378983434440124388626884310855e+23'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-6632917305.13784346', '64275', '-103195.913'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('0', '-1.1479982', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('23.0967232', '384787.39531594', '0.0000600246356329728956379107568015799360998008653288367583039130337974343366992013749911280684891016'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('-4415.59578', '-5372410.269367', '0.0008219021926112623725445542'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('19316731927846138142235063', '159905027625861', '120801279450.9664076025188136923298399099407554218077763806134954509770172738601456973870831070721922'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('46.5509916352', '-224.72783911451', '-0.207143858182518974872177506176201666620231893723310558999073'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-0.00000000190', '10283106', '-1.84769076580558442e-16'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('6320896863', '-96.36193239591436266848', '-65595372.6314853240033007239640504363062001768345687037728328017566'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('301.78', '27385431970323599.982109011039', '1.101972758096442823253204778745779442886349569482e-14'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('0', '0.000000006392962922861835147', '0'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('2679177081032425767', '-27531764737796501802392', '-0.000097312217598400597951764759122021435057787'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); - T('-22441668653796507212372.4', '19207705157', '-1168368030973.12908281291981516644435235069659185939366926320421547899336072675222604157553'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('133549443521931581.906855', '146203567577896984.3', '0.9134485959159422766611615024730449619301718162748067575802409439785938547408037424'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('-1973.3', '-7209198961380.383', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-4358138915031470322954690950878.886329', '18029764583.0320924329653395024835', '-241719124781747737817.71414364474833657361287091699324842760959752'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-0.0000214327748810414114303341654806744', '-0.000000017085379167844184125664', '1254.45122818107041'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('1540.1', '-1425597386989588797745164.9723', '-1.08031903962184199768125145492905743065463781105236977988615625182125023686e-21'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('-0.00000000000000077789825931627563318456329252077008249901827', '-11488403098437.659253590452', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-0.00000000000000615479882', '-1.4311', '4.30074685207183285584515407728320872056460066e-15'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('185.078', '-21444991541014268320202.565818494950093203880961480246', '-8.630360130757435548395346186973954342934428993977502062613538763e-21'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('-8403047783.120864544336509023524769', '-0.000000000000000078190', '1.07469596919310200081039890312377145415014707763141066632561708658396214349661081979792812380099757e+26'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('4473003396718403421919082.611713344497', '-38417.45740577489', '-116431531360168154589.5997046763279826'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-277824796039913334543271479781483132162831479540.0755025060', '0.095719943083002968965774929987', '-2.90247556665385023432767761396065649281824544931592998896986675081931625237505184e+48'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('0.00000000000480152428506069103957', '8069769.20434799655998859066255015933021758352308471341', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('-5340545366390612877073.2853', '-1040.695', '5131710411206561842.877389917314871311959796097800027865993398642253494059258476306698889'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('128346487385118982217601527756330318.32681', '-79533315369210789756297.5093144498895602545561685358154358', '-1613744966990.3351'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('0.000000006632234145795642791822618250723750481', '183815.968207832561239237830808792285843424648628102963133314', '3.6080837864406153478491135463736e-14'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('119187872518674.60527655439323732477', '988901492413169302830866500425857795341646.4908639', '1.21e-28'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('-2106863123095.357296277145943882664823531441361779337', '-0.000001780807017292321314224', '1183094576019133877.30319497876236979272050322057698912933377664141368828772347'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('2', '-12532644992723.506915213853468150635', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('-2045474499442314493533914694359611192421769290', '-79.7801143293890064538106805679656', '2.56389015813783140881031622900806078899721203732113311997893479064590200658081902329139876513933329019112731810687326191885e+43'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('167818325272.44229267', '3604.93', '46552450.469896029234964340500370326192186810839600214151176305781249566565786298208286984768081488406154905'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('-15043187989467552228909212', '-0.0000001256248795877713296556543872376', '1.197468848434374731008452641095000047995170305648878285566e+32'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('7998870000070061263277', '-26543843297186440621735904979552147897363942278950', '-3.01345585509763575250102538326648638249839863370004343453062e-28'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('186931322330723238889.9', '-8437975.1', '-22153575960507.7809354877096046419952104385802228783538363368718639617696904557113471453595543319391876'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('0.000033260133387301381636134255123645581044625132783663', '0.00000000091', '36549.5971289026172'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('1.7465938', '193', '0.00904970880829015544041450777202072538860103626'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-0.000000022616261038169584', '79255422813879639941760997747.1367068030864', '-2.853591620005704086326498760681941494986556861849305029108030768e-37'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('63925969210016.171616618421', '-0.000000000000000001998952851878522909618298952831777425008911426', '-3.19797283612474997830213615498823898997462341033957771240421614362e+31'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-0.000000000000000000107951584872217583243487104532878733600748082262', '4.7584', '0'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('287879454865962605748634828463.143352997052678922433', '0.0000011099839415495924789496834394776605568026699033157532725166', '2.593546123415701393690678024535080924566944608085602841986648129658557077697497509144729455581093725286069074168844031180128663e+35'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('421290769878188.44965397506247576163716334347466036131', '-695290179.98023799179742953756', '-605920.79'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-50.588764102894', '-1469737395263449361661861746995530.7961293255083413748731405', '3.4420274170016610853e-32'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('71825729291974748475', '-3487925170402093447966915709296985344.79514361227346', '-2.059268068635043752814904577559487216735436672e-17'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-195599191873495.035306732143', '94922439367019975.93898951447276490022725129864755659', '-0.002060621210093494209086288239396527883002832627329896345270729976350454248118360433421084167526'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('-8298636455267829969272001790569', '12441338.5', '-6.670211935209246150863913710384939691175511380869510141533404946742668e+23'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('193672718244911748316310.95', '32025627598640491403990244863864935493862070264684993094', '6.04742928607379673691357771393506072163e-33'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('34211916252046207724173639367665.73', '2213017876522886287744383245.8137737', '15459.394438241176844242330642075713842374671533599'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-51102698466952108661987108352168504578549351669673607306504.8', '-426105160328610268743577', '1.1992978077886207989099912552560016492808203461057166111391637632e+35'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('-0.000101118126658365675783246638377813', '48187783117573989816933123531631999309', '-2.0984183151079239767283259802182599811803883e-42'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-18339345307912384963.705031044423259760626683581224957714636', '1.25501030272431063608661224912151589098512453059762475047532', '-14612904187401724640.7077'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('11733626597810620260900194913480892214.83238408124932480450', '0.000000000000000000012593148030063312136', '9.31746896788572839054694954351994165865763815272869861443498428106859e+56'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('647049772487082769486131722793669960.55', '0.0000000000000001061070889473924760124131290400487265681320705654955', '6.0980824081215514832347135028491060346583271458502108696485040787360284799746369844016534098242406e+51'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('0.000000436698220827227894615051167309259870460497230915', '-0.0000000005841497117', '-747.5792799012827016260447592193168764693190396639204572597240913779945977503081938095562360610508541'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-37513654565218568136965757801.924083043009620922', '-15865721697985590918663290533489768.90', '0.000002364446778994083275827835226151'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('-0.98347293041966760043529713', '1156.5', '-0.000850387315537974578845911915261565067012537829658452226545611759619541720709035884133'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('125176113754065635.8920', '4', '31294028438516408.973'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('7760475.985296', '613572764342975.528571424937', '1.26480124873307466949099359027788016239202160901478534560952858567398389820628355e-8'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('342098206914085968453220098514855365282100070', '-5165030720317219514520097.3608', '-66233528015313605114.67568754858297559280470661979590349532852678391'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('-139498.75765393143263357632022519885624816', '-5831567121073581992795421673.6', '2.3921315618545077972373650801742926030882156512774998442153565319318e-23'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-38429863125.34', '3781400327394870', '-0.000010162865551930489712339099696515327376718924337987713498883079662540061533572931830509691604'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('444068824966018.962300196359416176247976643926867420059834210', '1891413422', '234781.4707249227516057017593777952200535055349033153153939128597343748785134718156821877517584836087729'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('0', '0.000002513915127705055306056640528958850699699738670', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('0.0000838632325862484536350098267314013808462051735760', '337423.030731', '2.4854033349343543578311333157652438e-10'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('0.0004131749462', '0.00313847736137418425513550014648', '0.13164821619713423520927479472893363477634355087719536919245876347954531603582571976295'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('43858700.0293363960939216', '-2599614823572595448893772454340010230040671331440', '-1.687123e-41'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-904125891989.3', '-4990657690680025.468181105292963130180267545', '0.0001811636758172656972061239309710892703790054'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('0.000000093168465371689914647', '-0.0000000000005411225', '-172176.2916376419658155038831318232008463887567048126810472674856432693151735512753581675129015'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('0.000000000000000000028554140680060', '-101.2780662948661400', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('-246157.99057958574881562217581994144426', '-5.345', '46053.8803703621606764494248493809998615528531337698783910196445275958841'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-1886816427992533234539229418864549307215.4784746048900326', '122.037427', '-1.546096533150058329678836492402080311981240373582188054980870745496789275965315132381478347621996324127679289731337911606412351e+37'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('-53819387.67776846439676506538154669384035465454678811', '5665364.9440479410496592303761', '-9.4997212376073610606159188035294123164780013803617164013005984101222925367506692183964840995107'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('0.00005686363033975136662906365093969614774037009988694265', '-48200077251340376', '-1.179741477243588224057499806813833527192369820508921489528640410001657395306e-21'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('0.0000000000122869862436239838756718951003949613429845', '7.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-1347317275008.10206071427330257630227482457494766279', '69000.23', '-19526272.23138389626692944795367062218234018854231051113887591389188122996'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-9727252508944082022316065757779070333921212.85', '188085887081717930385302.7678711814739', '-51717078085278505960.5'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('-0.0000000014742345745628408588118699794934331774364407395001734612', '-7481382.0977534045', '1.9705377366109144191110042861992342302928651539163664891404646115927920142340563e-16'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('-104698165188516.36027213667980567646491', '-2172843537871425077764953721938488541.89', '4.8184862e-23'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('0.0000000000002645228752463466030700107177183293746878390282', '-452775.4895417327493755177358', '-5.842252536993067001665276434092777724611662996157773525922966398679141919241e-19'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('1602367518942292542112439723694.951758582993078837518540', '1638319886465.5249043202490238215560676918', '978055343269503244.018485844692995577857027'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('-12949514164.3046335907044971050036463576514259298838238', '-212.231913361', '61015866.837509520363054731'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('733141709040640273329828977521564929309588005225.7', '50303.79', '1.45742837476190218138599293914348189134374965628971494990735290521847359811258754062069677e+43'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('12077750.6291575370577220', '0.000000000000000000252514056706', '4.78300130563407046138669704097973813017484016848774090044181510548497361876603267245915583108702662972e+25'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-1679818566679125024187586427946214017262.883222815', '349473839348.02797698', '-4.806707620269843131722151256967209072971614676290512684832283825e+27'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('0.08029436596716315538113734732561036194186232269297000990', '0.000000000000000006851154249897162642328142839821636418768119346', '11719830416658388.88002685923929076'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-1026768618795574006.2846223162551677285190094', '-27738938919837948725957689635733986', '3.70154252029180503021913367026524596e-17'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('-0.00000031340912183197', '0.00001876658699629442685518077130407260330656', '-0.0167003793440892836404270533895010391668087118954482824834223019831457212942'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('-67756988833335965947898002.397023603751040399832629502236', '0.0136674856433809637223379039', '-4.95753137053047104805901743778895648014262824267606598269739554490371038184499242988205724609842894078111956417934304762162392e+27'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('0.000000366237795258926865181761033018233240088862403534465', '199511031389040045529', '1.8356769182590963269880941397590613649631186609371410182487e-27'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-95114948561513352172', '1492872272.5581130', '-63712716961.732447911884465826'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('1.9', '-13680157281285098755672610111559871101171', '-1.388872920780861164025823e-40'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); - T('-23438535109854009568518651705670252727680354016246612', '1', '-2.3438535109854009568518651705670252727680354016246612e+52'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('-0.0000000000239', '-10701397.52331632160190', '0'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('21975460381002361.83687232309627337826198946029615', '0.000000056642789', '3.8796571936107104183857053889548726603115288507686300545688172240247562668569e+23'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('16850767091655686029451426.7130603982866', '-30034629512168694102403019.8476595706860421725434916421523', '-0.561044613013405267938804354742942797338932661092870945282555616957947634505421502503'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-0.0000000000000960007504494707406733732011306869108413764', '10.407', '-9.2246325021111502520777554656e-15'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('0.00000000000000000757362633437637', '209261111569596898740570182929.88161793119', '0'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('-2612640565385626022001698972052921169.999233419551243289', '560104404385.626664333997', '-4.66455993726992250681589081531779854598501528974818146e+24'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('157481998763563933.576298867885808342438534417952771481891', '-17365225068071338577270941492358476226826704', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('2546388402471796199060769918930023442003.845194', '-162325117491540253127.367180925181780016674989346', '-15686964789072177633.7308021600152706'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-6.7', '107334.87832289565536386490138297725435040159', '-0.000062421461734408280638263949652154880714318776'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-38.5560487133305685938268557071730315816087', '-222170.78', '0.0001735423925'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('-7228207240915961811063423227702494933547823017955', '-210608526491.7123296', '3.432058217833074998553556902534721687588631411359151918877469887845134363144530332419641020364369812269208316728796232274038864052587e+37'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('7087077732911514990421.718491155248900', '0.000000000054212903555214315260270041468711838687704671209666463489976', '1.3072676924034378532462856132938590938744655957106487796637555435091072405316658044229e+32'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('-288036.80', '-3672.50405', '78.43062827936159798108323393135536501314409714537959461201955652029845957555853478228295'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); - T('2782501838850655112.13235120', '0.00000000000042475914269995684999136', '6.550775625837842096570379023636036657744290078928999172875994347834566697861822510732512112e+30'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('2085966385769.6822146429426148124599816822567195055374861885', '-22668740650478182.1330389830836733875708845803617129', '-0.00009201951'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('455749240058.432717871764', '213.285963473032811', '2136799030.9219583556592241253006390014049940692494738'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('50.3693', '3241719836350468739346937.216525', '1.553783255270628371879735301438597473641575332591253120094778e-23'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('0.0000003390997721026708632209297630764385534425751', '80609843.11345', '4.2066794699677e-15'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-2219589450028777558675949700.28245589983487', '1199614667413307000681332845525', '-0.0018502520103516335631572514110011223624779207645650784747900292773'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('69265035793457102886394984752176.561556505', '749235603622.5025904992719110654932593467136994978363', '92447603208610777141'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('986426', '18586275440565367354374527', '5.307281725993803316392399815614888085176102744474073229243384378909257740310466e-20'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('0', '-290816038635.723038753', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('-0.00000000000000000132916584702643508382547848857588943508525233140219000', '20155284063.95184432', '-6.5946272094655146379665613405234206222864897459e-29'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('952063481.98599187118379776', '-4232866339274352925.490937701343567028706315', '-2.249216974210448711950095436068575112528955438753532238294e-10'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('285292430610904911895206', '77527243764697.175429459855502609228198', '3679899049.12388672411083524731437191683055664146980717875672125221546893380027765641035958262393785'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); - T('0.0000000049141233322', '-119732610266833732648839394753', '-1e-37'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-104156583', '333240.6552807296694373304883172766968807443129', '-312.55665042506915864071589114922215519462865919862581560781657669877652'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('-775.5672039409328626401114303362741', '-0.00000016693416752333222447217245221195848', '4645946455.704058'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('-1042543329667310875144385693.47870820', '-133302423882869890929240172948256058069482.13942800', '7.820888e-15'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('-0.0000005594168136250496551943633409366356584941233836', '-155333163.57129', '1e-10'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('677741.0', '0.000000000000048545611388960621791794106024302515629563001129689242', '13960911823104977636.4886632915329065906279945487485181517422914'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('-14246783475672473094374', '-149283577.5840', '95434365294842.8731861493515746127832964917135851376288115043275931248129565860364757588485313212481351'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('0', '0.0000000000000001207848168046516341108', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-11.7', '-74647750.91858573128961021604743782694040686036489112681', '1.6e-7'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-7.34', '9698682311027857455398833030730471.224716275', '-7.568038383579257100616746e-34'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('-37882578334427751786191262.1476669652295625176504114442012', '2720147194985163.7780019', '-13926664852.647568168691796876660485205133557051303933672373585206310547581627923'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('1784297', '-60643972817184956177051299.216334', '-2.94224952144687939890351676962907764881403e-20'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('0.0000000000000610073339077686555597847598696588553729496062', '0.0000048710639217445150719', '1.2524437143070704396881275046e-8'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-19575885010043762585.63479', '3734076.4363074380470778410612747870', '-5242497132544.508926971018355016520670701306627656808444557852280137119362113687811956'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('301294982924.2953454775741211743365342540', '-19106697449406581306347.7847967800301', '-1.5769076980577457698713369968322206617602949168949e-11'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('0', '-69919.3263764630460591434529218712320080435258723093898298', '0'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('0.0000000000000230003592864206349802178664690183622903390185298', '2840738519640.265058610', '8.09661259823845717370098303790512562658009194223844875415776022496483e-27'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-44.02944567871767', '1636041557975908022265540917066623362361723537410', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('-6', '-18722872007463096014328377948433835478279841645621014', '3.2046365523453607822e-52'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('-4593464186153780906583342.5527540561004903434686', '25781719737565225271673922242095', '-1.78167485835356404293325963720725819910427821e-7'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('-3363720.8930635', '0.228577321666', '-14715899.4975827498416165644249692124660543400874306751620873636105386668495482448943430783335128'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('38128866863866491251', '-0.00024252108819812315909452383049', '-1.572187686735011354247874527909662003073945e+23'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('-33176721817409588820003', '0.00000000000000028786703467057093436292344521684978816952674271926', '-1.152501600448149311646257647082077178772297210692101489433777607983496766321758013882645200002485188315714675666279583461034e+38'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('-883', '-12752496287481.24135354', '6.924134538794696151120500756281595757849e-11'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('-29.1419953', '1889484740363126046982459976594.076085275754965390', '-1.542324988261055e-29'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('-3341584032814423339321004883614949822747200.2985143717692', '0.001227', '-2.7233773698569057370179338904767317218803588414950055168704156479217603911980440097799511002444987775061124694376528117359413202933985330073e+45'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-3874880850169314237450658694725279481210339682732447536', '-2680406.51', '1.44563178596716444978737896541121274966995199647252294429026737440657835143073130351410764183e+48'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('0.00000000060223997248190123283043885606751', '786.6994', '7.655e-13'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('-0.00000000001441891961132955720389216634310873951090606763736348', '0.000267', '-5.4003444237189352823566166079058949479048942462035505618e-8'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('1313524088747.8', '5535335650070248.726249801889459975', '0.00024'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('30060859029542.3848692854', '-55375941130.729183', '-542.850530676778540030474685565763103760275544100911084559401425971353455'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('-0.000827100719268175671086830191340355899274', '154.278743238288983774258', '-0.000005361080223415414479471738'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('0.4765257815828847644182356988704735378797', '0.0000016095806197307715196711016292844', '296055.864329797556126269465789748940552603559236172'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('2383839881.66464', '1.676805832', '1421655290.1783084924289552447119589932342267759956121144979414646978637178308668955058835'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('0.000000000000000050606645897867672442972574275031289410912', '2693549667313129709978520437039434348086562053.82187', '1e-53'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-0.7258504577695793943509193554861614365708806', '2.524314960434057069225409849542066825947300924443437', '-0.287543539196380268036218735171571647050319839346168576535269068687'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-0.000000000000028885584156185150', '77.5', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-0.06711879785767251358135011891', '2385212433376839016587.586621319136168265', '-2.813e-23'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('0.000000000000000000083432058951516992373882110712631865853005711342023601', '955440228312237.9699983760968458', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); - T('-159860539866213251269608', '476291877008672', '-335635662.8843002896752642873393704929807001077300996436388197649030326733847717933186739168519148601668'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('3.4055961543833163031955623902412873943633179220658580', '-5638173.314118741444977300', '-6.040247372061527821806277144762792364021425249203651092590971694125336372532672131595112108e-7'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-3493556180375848730.848130393358438160491', '718685222018.797305232950026805146', '-4861038.00849334051793473'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('23.485', '-0.000000000000066598986405042017256663698275584502078182', '-352632994399776.9064690649941293302469561880937591761458806724536981375061501064450685308282170615944879'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-822.90', '76092.60', '-0.01081446'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('0.000000000015084', '-0.000001912385433146559342084020', '-0.0000078875313200756892604204464311476238462'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('9483186004328519.899267358722553159293541088', '-320.45595501616058746075866630772838', '-29592790696775.42118699025'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('0.0000000534', '-38740477182.330224274977499027165728234634799426529061021', '-1.3784032589138080220562463869113934987094771722083508684729812045379072e-18'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-0.0001954657197300273066647138944844914845862509008372575236777', '168060.67886884789467094219584088427984858277529', '-1.163066e-9'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('1150344439.958156697', '-0.0001115798448123750060997401563155120021006060102', '-10309607813960.45854166944088515213012733315983456349573700908178034971170409565162'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('0.0059295', '-6327267465345.7543737378793777186620446106878506104333', '-9.371344000353526516217144486032579896762423824055952274964299224467874251e-16'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('609963081962334114.937377417886308919172152824323657593', '-0.0000000034870603144043430699562858194', '-1.7492186167319779613825396256986094509717728289296461637619523489196444381147883e+26'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); - T('-0.0000031852353441801206076222381975926616222634740191', '2.9856013', '-0.0000010668656073334777177455804959'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-1488864252921831.25831536732717807799329136', '6474156.733', '-229970375.18922099569679468'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); - T('625084489642715799565494363.417748488859', '0.000230873', '2.707481990716609562683788764462490151983991198624351916421582428434680538651119879760734256495995633963261186886296795207754913e+30'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('256770123819.9', '22412746815438521661854347587580733.8915585015437419311582674', '1.14564326244487630922539542203993e-23'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('-0.049911992', '-62810718780308357014459144405688282702', '0'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('443180719833539342827985492522430618.63430974702278297928', '-0.00000000000000525611979007928380995849101', '-8.431708894268834058898041333257166278406932019074937028707916277144897108740020410537475905778879362684282621457193747163618998932277384997601111814e+49'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('-0.00000000000000003450293376086498436791378576700539008489930', '2033.857978436912', '-1.69642787877360271584343942176475323384052341883641062769887571758013322426814447e-20'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('10723887443064792481210151761395366824', '-226.3479643498394316073', '-4.737788331283660546772318293399771486485754243656984350212254100827492754718091434214376133324e+34'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('0.000000000000000372899189091300451367945878036123625876735470022169309329', '23254426481409060097', '1.60356218e-35'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('57446960.7020586268901672397015', '13924561060097769201834626.56987437985184', '4.12558503310231250724824967455819889067e-18'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('0.00000000000000545056475271835430103855248600970440971406246221470171825', '0.00000004298708852646016198291685535720397', '1.268e-7'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('22261699938052229573323683185837366581633512', '0.000000000000014887331841', '1.4953451817835535257028387472374987937661241254520108738671058685914865810775e+57'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('-12758219415.0261496467012388529078170409549623267451973', '6.0183243288', '-2119895625.095037773880704794379976991736989807066377406164093'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); - T('3298265783586490569932640', '-5219021966096084567874.4', '-631.9700903756970309117387678067401491846779965274936773895436458197783981034864011295595793733798'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('-3.1', '-4507.08745151922', '0.0006878056024750688990088'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('-42971.695', '0.000000000000000000017659192036373461', '-2.4333896427135056197903261465912904582316910976355800931381818188432390339e+24'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('179160.757624028179', '-7163360.4386559665142872334563278482982880917873', '-0.02501071377858007321212'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('1677504.411824', '-14646872.6189014099162', '-0.114529869650072875358731469381513318575548167143459977572541'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-0.00000000000000782882328973611235818109', '-4788.62', '1.6348808821197155669443576646298933722032652413430174e-18'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('-398596073931934968473113250377', '-1127648875665298404515191860194593', '0.000353475343729464002040920603210655494527390322158152328576373824293514'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('0.0000000000000000001826692980', '-1085386369186475721916.07909005', '-1e-10'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('9.94377259201165', '-0.00000000000000000003785930736782844700997577207618252837298333870663517930597', '-262650673859435951327.9002827234361612178385404817872748226720771470032061529620073091462587522075'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('0.00031338426831763587995996978365091836671439981903', '-1.9710177424701826837705881355', '-0.00015899616810393918561267830219250011019280978988464367850746121454599170133872951957'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('365.622', '0.000030469303056299', '11999683.72510620954999349701386067517253866452'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('15.5497', '3270.25410', '0.004754890453313704277597266830121855057073393776955'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-870200101503721383.51965', '-884576667833211780595521295660709623938837953807417017', '9.8374751804758078968275622511295837083002249e-37'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('-8627201481634031472775639.02', '-35.88954583151', '2.40382018823419996015933836240912383462062392472807889733222073668766587140736811419758426482048485e+23'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('27166159113573153158218.135032422640', '-0.0000000000000004254856686581243705034381532416', '-6.384741276774007537705363563056955219895020671530279717600122039908e+37'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('1.15', '-22864397113383806966051253809220365902.8247924106561', '-5.0296537201361012708975757086664320480315e-38'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('0.0000002333144399314152774599452', '11886.0084271', '1.96293348908839995365465846851990744875382286779903338135333939066e-11'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('-1.4', '-526030357.89775934608923525372', '2.661443353944427117747712072585784816383e-9'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-78185011.374385749', '-1177.93747', '66374.5006552731097008061047586846863781'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('0', '2', '0'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('-0.000019691624801077', '789724640172607638117.14615891967744780537294852202576', '0'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('-10398074866566369874729479404758795484097', '39097018415729345107193924086732344183', '-265.9556991'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('13471.08', '342569337268989267429289.929240095140092421818', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('504855661348378460.56691121741008042', '2674583057855000818082.15776502', '0.0001887605097421313958154576626856770256389188979522609360577817944863888582115807348244806395'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('1252955516184.1', '9179631108025347.69919', '0.000136493013873803284442700977622413'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('100572331', '21381655.21', '4.7036737807353315749'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('-0.680', '0.0001023962933734199876112', '-6640.8653828920167158084148'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('1408586402592570871877536736630', '-71282669808626854262807002933.430075394538', '-19.76057304'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('-0.0304672086581822723', '-2304150208926492958299207311692957050618117750642287631', '0'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('-3257773.73321142551666', '-136126208859759763315457882399157905817562572941969190802199', '2.4e-53'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); - T('-3388911005216920030200707342267.687215707301269933121655158', '-2.24042737441029', '1.51261810310138977469895800853862078119029023683878514951826991960514629682667166245531906432205873462930761431097e+30'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('0.000000138115063695530081270314206', '-2205711745203109613847465751461780.624840399490493415533725', '-6.2617005143984471794719823e-41'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); - T('23898689430389996578244006638947272744264', '92111697653220', '2.5945335977155944600896827812182218409815327692208641481173354255626639178513525332308175610201313823414824115e+26'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('0.00053276620201795190372807960271', '-0.000000000000000794688709486483208304658286', '-670408671544.1295421'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('1026342337656.16111542877485828326751384551678666163', '0.00000004973324483282952402954896455', '20636946998050285431.20023096195027233273768104632097760012933667433149392'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('540050869173895773.424426904326491781543129896', '0.00000000000895989186388639422064025633565887849312514138243985430933', '6.02742619417781935328562300720637989e+28'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-5938.622', '-0.000000000000000441470800918077672', '13451902113684776033.876762578582838722193971530567149367030921794691694'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('-643016680179.5574', '-41351.26558819809954910396212183376711', '15550108.83060077939716915940438899056254498339925880611745634521459682866865543956545201310119290772247'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('377183841614474999303.1509', '-0.00000000000001682510837897453705285405430455679857552360', '-2.241791453098881851047931346403699546189986296210130328376566971094795027618e+34'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('-0.00000000000000002874771492599091839043765095450703', '-0.0000000000000000000246053412697581', '1168.352619490960748177930651375650333524830229500802060304699'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-75466375201925192885078218', '328284.032518165', '-229881345806087593488.150042339594309939217861167079783424739050426'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('-0.0000000000000001458387757541566650923346531455358076529363209321880949', '1039660724', '-1.5e-25'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('0.00000000000000000007201433211365864812050676168861631569', '21.058', '3.419808724174121384770954586789643636147783e-21'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('35406333.65425365444', '-47699.2054027416103', '-742.2835109160665875778372905140836839307704'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('1.6467243', '3179202137271953.999867', '0'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('12368559.7655645946606078', '-0.0000000000005370318077131559312937260277689894299333665170817913498754', '-23031335552047964835.06745434814525'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('952970053130035362789358', '39364146300133649626004.62', '24.209087271042883694639401133946545862495050075765185744384807962419660137722883439104580538'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('-1175.74452217080906238136', '0.000000000000008317103', '-141364670146661531.3506830443'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-281353421116', '-0.0000000000006597704686962552218738218482173745099707', '4.264413678168571358888074134658601474658911119122815649281448043676121e+23'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('-7219523920097563556181232937078301106', '215954011203925463555412484', '-33430839648.91100857455429422938'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('0.000000717658856646399090862400533683857748886352', '69542205782774637283441456525902695.499720262', '1.031975975694692007919534912528e-41'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-38203019.354', '0.0048211569639252', '-7924035587.27873807137229096192908092256676321999293319188756273871716857316078129027130891822842835'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('10128234086168280925890886.599484735363522626588600146237', '-4119282794.3125357366762010270654', '-2458737258862698.433468855443166152443838'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('14640184250369871388.37100702916569398015738844', '58551322848286248848067253369539620977', '2.50040196159263685407381621606e-19'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); - T('-1083681003608604033643548194.9', '119169682', '-9093596503921224138.565278666263454491722147920139620746827200562639749261057859'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('592117874017678.813255527048431677933', '466.7', '1268733391938.4589956192994395364858217270194'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('-23896667170068568476530969283941478707269695211', '-133610708633921647146034.10074', '1.788529333793353026151379363557258505368398116073368544502305595e+23'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('282898292487160910703267277995106619021883676929.924460161023', '-11447661789031355856845201.0', '-2.4712320970053602157884087934365549564e+22'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('-717.80255046097476806353285702027141354262687', '160415502.003776', '-0.00000447464578856025090122480400689234232245586'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-6430550635897275', '-1177462571585965733785194717063572810797712495968311.99218059', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('225', '-61761439784620984627142813719', '-3.64304978615518802502665622300028500429e-27'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('-195.523689600', '-167064836731283986153984192206479814829949537.24391580755046', '1.1703461567708036255855243452084423e-42'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('3.436', '-12508626406010003696850920561737979.2585', '-2.746904327040345120515529643732939778083475753e-34'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('2590425', '0.0000000001145676379294', '22610442589348811.10849144035124033620032882004378247455089405529415837571660141344'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('-55461828684169485010301146336919649775052817.0180', '46.0169344557709809833971869110406', '-1.2052482274210689062878457286003185728949114298659930715269275094725859608915e+42'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('0.00017260', '-3404498403684126500.46767062597658852674782', '-5.069762988087276476469338e-23'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('7409154644117.49516751325896622', '-1082845369464899121.7012509556893606955212655145085607', '-0.00000684230163700918514622437948547615875283398408647133872349516'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); - T('6636.7313333', '-12060593132402143291632525325373854980073972080517646055224', '0'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('106818808701039.84547715905', '12221056300516916667535058613.36168150545', '8.7405545048116427685652075086113386323829650372286739937901999493e-15'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('369.557916130845', '-419464295167825002212185870265208.5005939460325871225', '-8.81023534989997714325878006177572415183918733223705657924136e-31'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('-0.0000000000645439495204991350846523292148771', '0.00000000000129208540625636', '-49.95331516629876957887408926096711789426284229436361094'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('67393774679548074617110386542143925801365009043.0', '-1092320671375326.10154520928644392601845845626436644', '-6.169779300678571750101964970468279947291743116391085444593294149e+31'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('-121027988050756830025641308.712901770', '0.00000000007126382432444039853374141746443519712', '-1.69830891336615348258214639706015061247339987062220111730020833449231165027849749453333526080981186093370789e+36'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('-716900765010107.762871173192', '11385355.31333073338140850097242124430921', '-62966920.6872017890686108666849470147304940347940883377290971407447194424453008882402'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('20886435275525736755660378681250732329264655953691.380', '-1.29409561', '-1.613979300611779121610680580336002556199433823416755119044102158726896538965926945691439290177330869702896218000461e+49'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-55753655909319131271843349202.87719779740851081114209443', '-0.595620028839275438430986238238468911051966405926660', '9.360607973168734289980188482140775761596e+28'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('-264635918573859707596403359325208407', '0.00000000000000000354626821691974030', '-7.4623774172310156461112574889518111124548438729507108888796896579264628217596211584397426491359004312721032482e+52'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('-14325912003785042.56288723129905052462976120195637437110865304', '-9245328333014.38783626694493499457870739360469', '1549.5298260666702253568344292668269177984299048155412204879714419131073'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-1129590318587195938445234016303521870520137985828073222338910', '-3061584375691766.89717249492522249842483359655', '3.689561285835750655025466114301838115877292367779690786e+44'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('-0.2515867523530108605600496137267476237074174916179436763', '-33624.2135287940460156', '0.000007482308906275678793492493465395099190398868342150883'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('0.0000865195295746708088866771125640918227', '-350793020221.171183114818319924648199147182195572787046780985', '-2.466398263001960150194250624144808e-16'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('11728121459652509661793201047042821273705', '38.140', '3.0750187361438148038262194669750449065823282642894598846355532249606712113266911379129522811e+38'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-250471697245291579519203881749031751382007763935', '0.0067942570593290', '-3.686520763905687928813971718511538060840167627146529024295604290147707552102703598244620157839912540181483995022963667591995499351069442766e+49'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); - T('0.000000000000000000570863031266464054061282093562606904320', '-3701611.051635016263', '-1.54220155306244720675e-25'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('-7646.952831750430', '191750.7388509', '-0.0398796524987'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('0.88174753004373804938093158577997676', '1138199379359199839', '0'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('1577.95001', '-131.311990094895031933441386427065', '-12.016800665801084250425314522453251647826917908228222400546877896536593396343582303'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-1577.76928710083314023631795412877045181025', '-33367026224254432.0', '4.72852832762769686802691755643196033870527710791847216953468737e-14'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('-0.0005968434298289396315631121', '69959148634528.0708204079', '-8.5313135090722049543462336e-18'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('-2', '-13666674315974256724.2733065', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('800659435665671863047228213619069079180548770985658357864820', '-404584339130828240814444028615465729390.83425', '-1.9789679387633612011626363783680693252755797440294456093699415572840030090901e+21'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('-14164987398.154', '-10823347.03684348814847738', '1308.743713930202596887849021949283595813370541890702664984146957681092855895340482521234041212666913913'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('-66639967214576506023448799662784.8120851681881705', '-754.9709298123252579', '8.82682558799214006575456582142314590967082981674293456802399068140421957405080507458976823739558557208552135632511198767926e+28'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('28.538637614', '97', '0.294212758907216494845360824742268041237113402061855670103'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('-3374783162858941545005351458815794090250914130.81', '-31524083082565114', '1.07054126015973420268121365922315423006570122477926323459308e+29'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('-555139115732.219118946044638930', '-187131353148221858197483269569454572.4282311604652091469672', '2.966574581932873225848648e-24'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('-3580670709933895504879211497822.62573263710180580083', '-16595562728719812263924018677556.884214647588798', '0.215'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('-7800204268422.6630976051925', '-368074375459785921822.4', '2.1191924210097251919466525090900679934161001895850112367e-8'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-518296340.3117302473040625440596494724', '11318311159193499699635581642435247210015192537544895.6872939', '0'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('-1642590470351481064495.9285537066231805276894804805113655417', '-0.000001970263561317', '8.336907318397089832301582143621967064206762358861678195376140345756393710412443238500950733156861452806046652283634865e+26'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('1273137748195148939370227531002272006611943859', '1305.704918253306118685731152141683286137', '9.750577870980806367967702943834873454117411899323816774306697929812313456716692452636273616285899185762960612454e+41'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('-17.88551460012634842908254237071', '515674786038.35182387039160670', '-3.468370974181422339678383601951010161757125234050160394413900135489260200473e-11'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('356106374867687954731276514387594223575481513688128770487472', '-88625132888658790915827758922430992.3664431409', '-4.0181195024561513310161914962555e+24'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('-1173401490784017510110594353623515417366834463178905259508', '-847245245690376328994.832121515569214422', '1.38496084428054043151887091880271091841030165137578406435475089911317967522337044269861929440531213953107883004374787689544e+36'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('0.000000000000000000073121300058313275464', '-3580.489098392922289651469472184041861461942', '-2.042215408256186679e-23'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-33244142', '738.68547495917336', '-45004.461475078254309842614491013773999662579782180750564018294685172971'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-0.0000000000000000902384628927888', '0.0000001599435367663604175894053775880663491414991446307487060448', '-5.64189492849628538037347343e-10'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('-34177.885715656428595242211188483316451607937004', '-1809517072277078470860', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('0.0000000000001879718896', '4517764177408901714386060344044.0591654085629581', '4.160728232e-44'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('115.5', '6807122973315026560401587219858615', '1e-17'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('376994297172407832139945598036890904929033426', '-10204965.7433858333140800676996804381461', '-3.6942240341840438564156278379508523898040066862017183222916327870947875811464180204029594420804792899910987594442175569245e+37'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('148025607.8094158167800', '-3', '-49341869.26980527226'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('0.00000000001546123044543608773', '-1.817180', '-8.508364854024e-12'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('1074121926068050591788300835971345971788', '-1241.280697206', '-8.65333625573806747854467478207570701695396166666360710889818738200113442939310149245398367179674217040520941323e+35'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('27481425', '-0.0000000000000007927277614420371368617342782703302176992806993667584', '-3.466691383433957558203400370807477727711306952957414523938106880283577564127713146679e+22'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-1.543237126110417', '-2306376.61505288494472138', '6.6911757431e-7'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('-679730843323816689711820822622001556354.34', '0.000000000000001265121816937578415255', '-5.3728489559148505645776337439770904080651370050996160957e+53'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-1530724682451909893676509078079154.73796521841838721716', '-13062681299838756592125432251864.48745668', '117.18303825347135171318882550486022006997620174963871497285797580025764747'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('0.0000000000000000002215783376893165306592038353870192152649', '-42051797263719797554394741006664.19360556448944', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-0.0000000000000000056478638069700252282277439647000544', '30458350475672388144010698070285', '-1e-12'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-14776555475031', '-3007838302135524661203586405082215746332704522551', '1e-11'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('0.000000699367831101856240231002717990963392410922923601341', '337615.7416', '2.071491e-12'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('3708413174148246392059623903.146227235281104189453143244294', '-0.0000000000000008364936396763804174385604833163', '-4.433283169472685579224523369601497080227942160571944829626681007102694489193316457249257447974620118e+42'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('20964219130028366790348745', '-5140671536036869364980193050.55', '-0.004078109053081116657293014769115691847406069818077643317121119583764646360828077134385840930539901'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('-35874739427124479026757362234424342.5147902', '12.231229356', '-2.933044453910613024625663166611323784483058302974398087151690232763876560242633389794477172585528940677318455e+33'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('1247354405068407468295934441.96903978322639871', '44455128617130727159614005', '28.0587289671622058453323341248094867383557419293146599023247495460194952166'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-0.000000000000000041', '12641', '-3.24341428684439522189701e-21'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('520036441848903948696.8384700224744368744720010219', '21186194968377.84', '24546004.727375615939845100895692057616489867939937362153778422978015915361795535164155540919289791292695'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('7685267837631132.61807033', '18.95', '405555031009558.44950239208443271767810026385224274406332453825857519788918205805'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('8487131435696960347200653554092310144755975718046565506850', '-20330', '-4.174683441070811779242820243036060081040814421075536402779144121987211018199704869650762420068863748155435317265125430398426e+53'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-48593426924187279257266827298265477.13166189800', '1298.04450401437', '-3.7435871246252220784764543701337077298448e+31'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('25742557689900465549015734223240765339.6081311899470726150', '0.00000035176595320', '7.318092457704194195737682956418866218917553613300365481476619494509964985434525560559565831227807410214138939016e+43'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('-80349767.383', '-76465355.365309107874047', '1.0507996333651144806823215162643809043930020540937357346717534770956776631114957608428'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('-720918157553221.5534128617682451021902484', '886.1600033145472386747549', '-813530462734.4231341729303684657319385070909227361625790329315655024971349661169585714350764283432901044316'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('-425033.0667115', '140765.1648264', '-3.01944779616232565360740871838743735719031853660839525144745445829071485'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('-8135821509630428945348107453152546376154.882392', '-3112550578769.74862526932115118119930087124', '2.6138760812832007336319028765302859550106848231577886768202032565043118641039398178e+27'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('-531742441771349578541245193675455292168000590280167.44', '-0.00764379118981424237664876316390882401565448382139252376814404', '6.9565275733843255185695016972840382847570250634685453690143785219241992913608419252525424964938194838191792911e+52'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('0.000000000000000000074590513117417027422364725169776', '-46895045444034069521.111915218063471055105338207453369993829', '0'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('0.006792814170816870077685', '-1697052154906429529139107604360', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('-523239316422658564260578461873', '2253.4675656873', '-2.32192965361395090311713280107388393931550533255997992805879404589752364696433161106599503406402106e+26'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); - T('0.0000000000000000008950208541030132360488918888049', '-630175132180377.8', '-1.4202732040635768535863976870227615952476933245990586e-33'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-8041797', '-347.1', '23168.530682800345721694036300777873811581676750216076'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('283238368357281391325815972970092712804079971', '15751079791938020080106094367.62', '17982155642577162.80712894052764518565601791527146014173446447120250703284587996'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-0.000013912807863280215627728387074361954', '-4095279098.581868309703264', '1e-8'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('0.003567219', '-81547060553.4545313968434', '-4.37443e-14'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('0.000003592650064486776188', '-102623211740139453848094112274', '-3.51e-35'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('0.000000000000000066660315006768198273280034892', '8134114032937925625529010132696268541', '1e-8'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('-2.29306986997868829082421602792545127020056551566', '-189003.758266302914163168893013258129906795171402950623', '0.0000121324035617735911'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('0.0000000000008282395016874', '177001696701294272338204603', '1e-12'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('0.00000000000000000045143442524680428467594742039178125242589041162296749748826', '48.8838659', '9.23483478e-21'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('-3733417243902664198.13023941405535293221232879525416', '-959.079', '3892710865218260.64185561295164981501233196514078001916421900594215909221242462821102328379622533702'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('594177346114900.121022415301944560506449496999111928', '12525605832754558641574079217732126761911651638148', '4.743701454832002187217678631516e-35'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('4992278162383072561186288289113199.716281380410535688', '4.2', '1.18863765771025537171102102121742850387651914536564e+33'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('2822.14', '94329104.5496367223916', '0.000029918019613076763237578118406028698168774402148318896814669'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-0.0000000000000000001110503896009121755680689190900384427', '2328987821070715531750813', '-1e-12'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('153752792737', '2483.2', '61917200.68339239690721649484536'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('11.60161405461718555', '284550672.49642250544934058', '4.07716978942056307283464697962903921909474830617156492e-8'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); - T('189.688', '-24754517032224622831526449966562258743085549225563672714', '-1e-20'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-0.0007441266572355504', '3.34684614329', '-0.00022233667918300622134004329574327475866716300378990045760849570887894150933041769117684202718'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-13535294945545412124035063763.77', '154.5024977570741433787379018192789895664', '-8.76056707304958572975370146622824195219447623315167572318757036142049924888057525660130840269890650882880343977076154563e+25'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('11983453407535022649614764881696589382224754704463.8684062208', '5802376340', '2.06526648830486280550612559572387015872616678711740859025714281745468443710081721448629786740099660615946879446981889492538500183e+39'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('3178038020148431820455312016467389665739054.4576778458', '21054959864871703366821506201711538207350457986704613695', '1.509401129493816267960052581506929546499e-13'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('-903599029877560268530347275265207.87', '-8225110328731212019948660254554280832763', '1.0985859079861698683e-7'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('-0.000000176707618136247054976126963225805867552', '-59785395331783158900858443125.5141498726544387028', '0'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('-304719819875', '-15834235671935165309709902051659343938622588678', '1'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('851777284247449228622262256799930786281959157570022219812934', '-265201007359497920383609044818696905113.345687881993778', '-3.2118176802126827969944145846417028592839421242620132655414958e+21'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('1094076851200232612485495', '45170230412955.87341467888498221131321290', '24221192612.876862966820444934376959326917921982087707316670750434'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-266009630563.5751817996772', '3', '-88669876854.525'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-9854650515088757094838236690274767247758517272568094336', '-0.00000000000000000022781292734166224423171119487999190', '4.32576440243413112255272208081733670067732321142244280276402802126595381401029065133890157642846933655514108837510716979328849339257369661938462709437434111231587e+73'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-6132.53', '9148419661.3', '-6.7033763502805478804013771877489723352e-7'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('-1358616615337255527426604965418371026149417529691141', '-411131303075406997.6936', '3.304580811955510499674020126518173701108868436644291184112191274708277758126412610036977470571487191443315381609149755e+33'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-1666.62', '-41.9029412763736208', '39.7733416613334504072586922905645360163057171834688429688965737440585'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-0.45978697415761062736019244197731022477008535480011010689', '-564466415549217929918544.45405143594', '8.14551515363840256607739e-25'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-2929430205196483609917236829698354', '-0.00000012825995', '2.2839789078324789694033381657316676016168726091e+40'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-0.00000000000004940541829384556296990127644311117691929920190835131349', '1.83587', '-2.6911e-14'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('1663533737152073150809636816464535', '-78.59384606968353399', '-2.1166208556292523684841659407900603043163901831451164886205587911132360575237341769309937351851240893561863173992069e+31'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('-45109676317097561400.602', '-145051085.8603397643566869612956643715100627722122277', '310991648559.8096681714427995304888806425341985867939466056887318610557801235490219056919231184'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('-0.144741146637846045233543788664754684233', '38.70763164', '-0.00373934390985245113367891367752'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('-213267319781136840828.81841', '3597329340433289539097389.10090419', '-0.0000592849026593292991850793512666592236518565710292148200766842011917685'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('12555.00260521758264', '259293850', '0.00004841997836'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('0', '-247824935559712858127074692451936153866797521949546499987', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-0.000000000017234737', '6363218480232.8367', '-2.70849367400148788714459129576630236022401201401e-24'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('8780588588869959337251863409776071.80424', '-0.0000000000014222373755692', '-6.1737855717340015690565505752294571901679865271128752812921622101855544823960081829660763501280574499788473773e+45'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); - T('1202044426514841285067064.0', '145353362935017823272770950937196467165.223443222', '8.26980815746403762433534151431755002946643158949517393353190134e-15'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('0.000015383640', '3.18383325016056515707686799850106296', '0.00000483179827311125089585459680057859870112712042013390296318998786813132002765219573826189'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('45364.765582867720679', '2505216730726952225381.591530531927253863209', '1.810812e-17'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('16706416155831105738957243800950347579146352.7664272078404', '-15801636784314764426537155863046169373', '-1057258.58554187599826669137387590751139542741145195067853557546643523667385366401064'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('-924707.21688529226667444411037974980141732477682106', '-224402928790739496518320930648809901676927004.4', '4.1207448667e-39'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('-0.0000000006242159873954031688369074037997865246112334124', '-10264.3', '6.081427738817095845180941747608570721931679826193700495893533899048157206e-14'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('257245.160', '0.00000000001291022197451592060663879005489083638559539086089039557', '19925696127284877.2140183030202499640385557595126820061218721467'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('-0.001204285809516927', '-16890909222793486497', '7.129786760630979e-23'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('-167715187686647891294529344766156.262451454123628', '-2801176082730364487.3454119660', '59873132831825.557950786942831650585385474196'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('-9402008294809.218468841889988', '772569013.18863540085189714799950812258588705943569080948', '-12169.797305232540922377133862643439160080727303691466952493558'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('-0.0000000000000000000519557604552289148573453', '65086901.35412863036802', '-7.982521e-28'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('71566340268678504341888350.28557064701580670', '-24.1035117', '-2.969125045321860894729640174612840626696179710610383797e+24'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('455763207112884674.0643198', '-0.00000001156426434172901828270543736814', '-3.941134460825907916686687297851e+25'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('-216340160216652.167517103015371520320504576122', '27153293.0739938991521690277527954349191', '-7967363.65004111527420646201345855398721703089346456189966028029972695571949603659856337560035292534'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('72929941665984.598885280816971615', '-3288295196863.2055', '-22.17864799229535715800361709629244268816136234234377026368285173191990763390155503877219155599773926'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('-208849615990706743659818282970.370397342055437315746876', '-0.00000000000000000005533218', '3.774469323108302323527073810762026678545024564652013999809875555237476636561e+48'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('-8601734511522478.1611637791900687131738653313091', '0.000000001308739965094750507087269496807181975342111768527447736197871', '-6.5725313973274495964673955593556821550145738948627060769657084e+24'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('4690.08177', '-153.7', '-30.5145202992843201040988939492517891997397527651268705270006506180871828'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('0.000045534097599795625379088782042993008874734445184308', '-221381645', '-2.056814493351317602644464135361945154700356e-13'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('-9257746648135675560285366734014321238513113635818328', '0.000000001688971424354875053059621839175', '-5.48129264630501027446190896008315133533114168046699834517239592613977291740331082888161684360902575877236308292547167194915292314747658072690018895e+60'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); - T('-71879677346223956249925412.237057479235032358135', '9592996.68319302', '-7492932575715107271.0488585740293462533529381937739815092394884015917462763001313062945993'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('673013280310051', '2646188524609059034750626867043201451715480110745', '2.54333080977093353608292839140221555847523612798053459934e-34'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-37391146770901318922073915062043253418156240674231966776', '-0.377392359145418812898258331304876547646153600428657770920', '9.90776465521750671579002459833852973105457673647834347457894970963595573594856679877267498369712253e+55'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('0', '-1057817.28862', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('-30053.49699', '62926872710082113.39973602372340789682800332318148184', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-0.00000000000701586226100438349070826401693', '0.0000000018882719221498357441465404661', '-0.0037154936101664227048530258989385614409631'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-0.678525953823435944174324400605592707', '-357.1', '0.001900100682787555150306145059102751'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('0.0000000000000000000182701198320864627982069694892636234489800419636', '0.000006393172701188154407', '2.8577547777946009287133771085218e-15'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('-1201914011702159323537662546733.597189', '-467840137859313195848152555257.565526023266744467', '2.56906989041541697746110123591885306583844485308307293725182957185042538622400828'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('139592236802245692289252849780094006877123.13881106202', '2585.280319726769945535609082460957', '5.39950100331861698546584074153230136879729906298113565752375135954626108427452520233190320530079426389174890693149e+37'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('-895170083971138589203712544185399054442917192623318', '-0.000003502258111551637847481643025927160261055601386124983284', '2.5559797577984424918470954298386752245726802584457072713106972242e+56'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); - T('-40431597.91947608248641454794200778208342384', '622.71751234426812499766084332865810899688349864558797', '-64927.671244170109105137167388159585218336945661028432501409483756970130666640456046333483019400746287'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('-934892.2', '402750149113355843063.43422390460', '-2.32127089725017179438360028145743823591884001301945711774186712e-15'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('0.000000000125664321461616615334255735', '70176889041819143010970.595', '1.7906795695479166985e-33'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('0.0000000203691205662848665373766215358980302867', '1477998213.71936537', '1.3781559664423552161765365475672187634849224776e-17'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('-358.68', '-1021.561810787167533220092752870382468653', '0.35110944459015949765358525681071494213733010418104923396023358754079290260322039254304644'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-4018349366961177732739424469495558461051683311650730286763', '-78811777801.816737857103576753', '5.09866606113857811769781968152402700905594792768193148709782334248e+46'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-205165177654170172389930120190188.2', '-695951097838436.715746744416134608039318216994160606437072', '294798267136003209'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-2850331473521261308881655118.3443917118829', '-10.21794123974453070428905176282599189446170574143919', '2.78953598053038460036427044e+26'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('256298451255.4030365797651583126559', '1585630833.04858776372324316577636838105', '161.638160606800839009380115889267188434054850962509811728493475273761907712360672665'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('88177649804448.285235381356775207514183788131857377525288', '0.000000000000000054700486157782', '1.6120085212789947923120646579744342366e+30'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('0', '-1226962614687715.42416', '0'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-0.000000009887749657448858208654042781460188', '5612199856791342.72760075529307883872859967029721', '-1.7618313513e-24'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('-4.56750916876632', '15.1', '-0.302484050911676821192052980132450331125827814569536423841059602649007'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('1437120172642436393061', '-442400520395.57', '-3248459498.5499638861626808'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('55010429541901600090701044137.30499490824202', '7395954439610224303938.810922', '7437908.11464229570123270141116154029911783556110156028784363032923437377057701338835849933'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('2903034043437699745091431259427608784719433889138614787', '111.58823605', '2.601559220039037210940329457271323884073023564152499914887e+52'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('-0.000000000000037294965843016026197169517880341', '-0.00000000003048586785128866853988246544783596458432673705774418496903', '0.0012233526047197482089158865473243921886439502680292026576442563596556356293748369172'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('564.485354582604471454113173530455452', '-149680535746472408203037263530852928547.25902816623', '-3.77126759847202086e-36'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('-17594.033117785589933523841128115761783130970606611590731742', '-15658681997037879581936246931621466507046570872509317157848', '1.1235960421901293e-54'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('200377596526456574076692.972653', '-134.5', '-1.489796256702279361165003514149e+21'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('-5710158133006294602665096578072464239642825934.499206731193', '-9899685915451947007218189521838324652009113852873361284.1', '5.76801949251095073e-10'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('54.87', '0.000000000068307861606255', '803275036134'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('-0.000000000000803640804839014385575545425103776', '835249350518300716158.81198', '-1e-7'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-27336772967.54933294246518821832363091371263937122844912', '0.000000000047862010055429464271603859678895514941565034144690478771', '-571158063271691838284.862854228326127036693245640710336784243541044182'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('0.000000000000000002115895823295045763032853731145322', '-199597862.47', '-1.0600794002055355593272019127677194307781306171219339511396e-26'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('-1922125922582145324357704373604380121775097229.4', '-16990531167665931.726252472819341581808', '1.13129242612501366569849895414679665469000630822922545993744661151457530778018934023458067301534794686e+29'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-132.7', '-287895268270367424616830747.09442', '4.6093150747923767680017946568686046974956967041646188609957e-25'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('1416266269343299776.5', '93299724.865279602420587443098855770369720926599948666', '15179747543.6108884643590326209280626064215759779663643277777203988692050799'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-5339406761374017811732.88602378178403752697', '-4469140141720.249671766568242947740083901645002693987054', '1194727977.207442727694694005819478968302727811400860478354037090596908702789500682137'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-6253463320645931839729398669009255185.754728521636100793', '199410057481802.1825874081306302190884190828', '-3.13598190563513181927085047490496e+22'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-441350317401498959949158769', '-53783384178114902570547941319277531964', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('-12785562225540639653048.208552733869', '38158938422157746834376495468984.246171889621891362547016', '-3.35060742101684059309e-10'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('0.0000025066276135990015625295257554586577026423831403', '0.00000888935644847151206', '0.281980774213414040251090628974510781472480770773981315600178785347302293772593658066861'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('0.00000000033896123924390456808086427417238299552671988101458027', '-24979399853350728356760719683594094225', '0'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('-2503641852531763566974549316971734178103665141733944323232', '169.462750272899828875916', '-1.477399516117815163317850508929472217352089090657168712935496345603131554460603439227889964028002932438517295526484687083036502252141876e+55'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-170847', '39094697925.3308', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('6270077.92756774838684263325366473390232', '206.78349109', '30321.9463725891599988009142072790115709231785753'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('84703267403711289741402809502578155102366055.073857', '-1046146334785502790186313678991043560880897482200177', '-8.0966939889034235764686891744655459841256967972765598470867e-8'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('3545.1407579067497', '0.3459', '10249.033703112893032668401272043943336224342295461115929459381324082104'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-3494.20', '-0.000000000480840756554490261421396556146719241216698163415392140095709', '7266854883596.01476020367444703'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('-16650762529824305578738973542416', '0.000000000000000094', '-1.771357715938755912631805696001702127659574468085106382978723e+47'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('-135.0', '4225705320433704.8397098115330815', '-3.194732944277910240197793697326411481943087817037607196e-14'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('-2995506074584621266599631960111312877166732494844124', '82804233.3084102547261584', '-3.6175760041490220642358349515453623086913834013850308361387469586e+43'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('-347688783540526823654.9899', '491590298897394420180889810517081629.2708', '-7.07273484282278380762870567598523e-16'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('68.97874788835555463770500278854830624641240124220', '6732686000571465869842107.60409913862949426908699447', '0'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('1060728314557064738109126481120466266837.162', '0.00000000000000000288998199547', '3.670363054924699191863531381976240623202494002767940365212921691005181091181007474458305920000929354440342526567553585e+56'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('2214963945079.9484628235968014462503635218584005808416855', '0.0000000000000216336715767932185892098107689', '1.02385022219528158743570987586401555916180399907739137473573213383859451514006190585854291485826227631266698113764870495e+26'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-0.00101149645199419076694756', '-10063665763193914407065501.293496469025780457740', '1.0050974225451335469535999549511283458e-28'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-0.000000000000000000019185475868122708030208927', '15879740999105202756056360329717870685504695114554.8046794', '-1.208173097358e-69'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('801572915782.4912832617616401', '-2849.6523834657892042113', '-281287963.55420954745'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('1833387173877945422672', '-0.0000093322172642483', '-1.9645783225618277278491678904374735968217783e+26'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('7350501756971752135823797362779270090656932', '0.00000005112', '1.4378915800022989311079415811383548690643450704225352112676056338028e+50'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-28190035525877869816543636286.9356251154376570729358300191', '-1810804.076774988385639', '1.5567689452126620516791203797362577944674444340957666224e+22'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('1844473405308469535530560487879620652080615603320173696.775', '-0.00078849996389950871004348158085', '-2.3392181227081712107359969447747777792439216175540029824692e+57'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('-231693111992827834475921395.7005408572831597652167', '-0.000000004116', '5.6290843535672457355666033940850548417e+34'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('-3', '-11931468133051028511674830403083922434836101044', '2.5143594791e-46'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('14659907264763.6879596805197248324', '5122294726480220154273.78922188259848198827666718053671', '2.86198043017279269220526604594116030762403468944452992719931176615831789682673637e-9'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('-5', '-5510812943513', '9.07307152547375337530703852788484844697714007432e-13'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-0.000000000004786329685610511015691956495', '-69867798220438028219748793388549983833832.353842034', '1e-23'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('-332231721', '-0.000000000000000000011894726310054691678991438851056154637779', '2.7931010124979698348379903328288146229762553558696709423192367676245866471114772369087445551509132881686983022776263e+28'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-0.000000000000002075858352050927127738375993195590601282117912490', '5863967368300060684657653.554829374819243602226788567474', '-3.54002371035142e-40'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-92.0002753297975338659777545', '-110761204179480957979884152503734.5112', '8.3062e-31'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('739235053', '6945061467493074831466926760549620.8163260376607', '1.0644039026292996846558102516170156946325522444e-25'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('233077970564414552492254389124', '-6.515', '-3.577559026314881849459008275118956254796623177283192632386799693e+28'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('-97801384199.048951866736152086672526808991949760886076422217', '32622656062133512.2589818437558403820526385273270', '-1'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-232.0155758670362061964340213', '3073.895743315', '-0.0754793250134183938'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('0.000000000000000020232521680689204838655364975887876983246569651572', '0.223057095793266', '9.070557297778650701453174445089199332424409847e-17'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('0.00003846089235782156159638', '-0.0121713956386476574058', '-0.0031599'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('-43168211675418986572265954868784979849387435.3022223821157', '0.00000000000000229608704789', '-1.88007731305695129798182639705239036242954603787717035880274202020075225920706589365891377490252735193307793473195819918257532974424203375e+58'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('-6342771513789412966690370629471313.3491415', '-553339916.277586362091095605737495125123674158237', '1.1462703714668440334977516e+25'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('1455694.8185707586702590872957830299613527235225093277', '-1444311.07240551629454597', '-1.00788178'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('-180415510015366169187018315.93', '422', '-4.275249052496828653720813173696682464454976303317535545023696682464454976303e+23'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); - T('-89238.062538', '-0.000000000000000007569681094769494144933559664120779522', '1.17888800625513545335286163213398750962453703e+22'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('49439.6679315611533062489413231', '-208785626399956', '0'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('-624543459250761.7424759511364533556458', '4477531294244125365082.7698', '-1.39483884803577698495727079613753595389155245e-7'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-356908235519.71444083032467453390227880319955148184157', '1.5306788853374988708482675402655598', '-233169895357.2616012348273715319952073899926462999398380558436985'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('44066683550405105669624884328870069022314879447', '-40770501792465902237453034227.3256094462036', '-1080847220736152781.3481128021472592814155077674569111667555300023690897393571703604'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('-2786342133225766496.3702338301569', '-165650538939124201836345652088473601.4574844690271527', '1.682060409262981146172971109824e-17'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('-27919.220476', '-4179806.6616764499018', '0.00667954829872491564251784270468808686308419116657243607'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('4717013884021421661239642619803336709657446', '-4396945714.850835', '-1.072793295602796604728660784784714449361778834434e+33'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('4857571399.040444595942662244', '235459.415989501', '20630.1853702764679928756592238265024244813146438562020490437565058468946493729797'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); - T('1896453874608071174280167452575.78153057727', '84295814589973288303632462340.69692148823798850938', '22.4976042266474303187971208456534528011604059650531484706610682'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('1349.21861774471', '600801146756400414339331720940860929.19297368', '1e-32'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('-380710280449994245527205.803445644072373925', '-6282699867838372405.6862362783503435232742435', '60596.604717484545128564924856036354467001617319065528212815689140862146569868287761955'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('-16408382343680930801622921026173292010.95184', '10.28420', '-1.5954942867389715098522900202420501362237062678673e+36'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('-572210837.06281547085212132889004786845500563257764747902', '11174933632587.888635200676212120616579965146776824585413', '-0.000051204853279321267251539617856120070847316696999394'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('51359578790378880398.04793830026219449183', '-455536654230074.23174939755093407387209616', '-112745.21669'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('-56161288675323037889788006369690.5728858', '-1344804.735014362693770845939698743390913699834', '4.176166785635479476729192379832848688266908371343918271530172573425201796828236768822077194256e+25'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-0.06647', '2488734728502626956945778696723078815802336866604', '-2.67083507289e-50'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-15709.702083869748710483750', '0.17343238577', '-90581.1334724035302676200393250232343845822654394774978825455616633532285173730041343'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('-0.000008986079351526333799928', '57158779759798.7587388', '-1.5721258202657563972830928281622437814997897501794197664807e-19'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('-0.00000000001388422828798892162774186257473892', '-69686337968148273523849327314060722575577', '1.99238885164765353309613753258918e-52'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('99883611200513084646975210060.60952323092198205344133', '6184477507904180826.367614', '16150695199.85400049006270290779814055968601439594063052012683068413'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-0.0000000000000000000150207809788679934221011249575790605', '-28817046896.758970', '5.212463661763124150056312253142344531e-31'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('-527083357783510.481321402212159156076', '4756796954943078601565972017123.3001236870', '-1.10806360409347708706496e-16'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); - T('-11916867.623189151', '-7.4112922348688463778178290807622357293427', '1607933.845480057142567124343022113195564935260597336976958134855837379'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('960299171557437856346556589204892.36952339465963106510841074', '23606941669264716370', '40678677696217.99646471'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('1047.5896930595555356981255029478888260642', '-103799285857826471881446418054582493405323846656553543983', '-1.009245e-53'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('-399488979125776633057389835971328054031.4924', '19142186348378884.30958', '-2.0869558568455196441280685191066041366482575030706546217893406693976412457e+22'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('-832487933142277526.9', '-65167.578', '12774572244226.6847311710740577162465666592672816534627080969619585984920292725931904358943645258689834997397018499'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-0.00000004156549255089827512480694974', '-168623120040090001730204587.75804171', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-0.0000007632302681012970461950055613', '-391242138.5231094072110969254393', '1.9507874867e-15'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('-936321317324817171462176644.2', '55757247.767120980969192424103202722050525215437039061', '-16792818060810895262.02308790888001520822277412773933215635853015603'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('65299.6202353082208802901933150582868420', '-0.00000000000000005406664881119624429', '-1.2077615622772948225517086563246e+21'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('2.8', '0.0000898339717307499317300278617758244559235559513474777516251', '31168.609670205279151887942612009240993041965427036466080808192563385626'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-1298869866494.475594214516700374497540945560324132893', '-0.04110811957006315804911437246309620418497699', '31596431071986.395539936717651006392482754034827777746817636445878750215482'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('1.3918628657223935652424680689538914172564804555523212063755', '-934909861878189027772780342196426148', '0'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('31720163278713.406', '385.764105', '82226839842.22276460895707235384173444545857888981143022625186964971766878102875849478011957592581093049079'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('1.7896331', '1387.88263921082', '0.0012894700527543337354754038117822982353769870061886577135541986'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-0.000005151738661445534791677035190155609582464704943', '6124729.17021146886074923028312971419', '-8.41137382286515115853084495840961e-13'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('760605159957971964.526993692017563512354923347040', '-1981158411651079799305483187381.02492550046373', '-3e-13'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('2', '2061430867494832196328135394348457', '0'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('4057584984469066272218033679335984', '-1', '-4.057584984469066272218033679335984e+33'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('-214768779586268.327071212443153527207616306729529743416124443', '1587502.626505197089431660056901151238655', '-135287196.380311139858555320270185719711243345481870709141810842'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('34257185.91', '32478274032798474.1', '1.054772364917085061474363969e-9'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('-759.891819055675897396308244822485318435449', '0.0000000000000001474661347453780982630566940489', '-5152992043683388943.4636'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-45.5', '-0.0000000000000014249435430510', '31931089636420433.55576127403712595722405163120316926606027532097875260074783441252582'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('325882101178204344924705970016340527784218384', '-0.000000037', '-8.807624356167684997965026216657852102276172540540540540540540540540540540540540540540540540540540540540540540540540540540541e+51'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('0.00000001296293682348577', '4826180903855555093518758503.18506167', '2.685961649951807003241893e-36'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('652938', '40167425703568058483130738057612236723', '1.625541066083306e-32'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('-0.2047789134812762376372728712574', '0.00122069219604562311', '-167.7563878467055174827544832568728645393736350593536991176006909249142121508'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-0.0000000000000000000735510585292195036412154236560427242', '806566752154265322458.0530216714607132789553', '0'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('5.96738586777695317673351', '-0.0000000131103553092425065356339650240811875296230', '-455165838.5314759501070905001449000422673614835145139226419992986266304'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('253439307973073.79909502258403781082034844541589896004090', '-0.00000000000000000003330', '-7.6107900292214354082589364575919165269803428197885898168168168168e+33'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('1089680054292535889217177656211145', '0.0000213360854160840823096708397596', '5.1072164037695827703326822383250037106898722602484772580409e+37'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-185936.62007', '20370869194.97455053229846832075003348284556795690420198297', '-0.00000913'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('1.37768166764465755636653', '0.20408', '6.7507'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('0.0000000000000000009669444244397709515925799260593182719648592', '9.2', '1.051026548304098860426717310934041599961803478260869565217391304347826087e-19'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('1.750', '2071244345460032170734902551.6508094475326625249707908886', '8.449027290458661764009243351093569120947924832533049268705e-28'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-3988397945262857491438843500707054899997', '-214129.9', '1.86260673790201998480307677755748024913708921547154320811806291414697340259347246694646567340665642677645672089698823004167096701582e+34'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('295783124913117715560874760916674521', '-0.0000000000002618293341251230605645364205924110442350', '-1.1296790938320486652761249195950932668596773743409194389158746961537211233107766329625433757095606824354e+48'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('-50710.475561047970', '132.1', '-383.87945163548803936412'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('8611662468.1272', '949040009695874.96070863580584058121657006', '0.0000090740773625411789903522765473543117649192826'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('2133393570885427035909375926083046680565861276', '70694057333404.94022299835665', '3.017783462086477634294527605965005751852951438132300383829730062196242995632168889854093270927747631448e+31'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('2613005310836623', '-677508480', '-3856786.133269686897498316183437290703726689885859436032446413069250439492654025525997844336944682965444212'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); - T('-71368779920225744729992101649423801013.9826397267764457', '-83273287.6391659199300973471958', '8.57042899872958433994977444944486516265889892525299612767160815191262755920396329859133752045133245e+29'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); - T('211208409622743840484103493394505.246103663548399', '-767386956806589826985766327524128477304930268638194243742361', '-2.75230648305084820188844632852158236744385890645776827212232048e-28'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-100744.08431499', '-0.06551885488328366094728119464062698894646878061872889', '1537634.99826816460387156938259580438652967442179025881429425178830102616497580229'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('-0.00000000000000000336004973090925295770216060', '0.00000000000000000001515260842039336040123784515497940557955604703549', '-221.747281899470240379958517263'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('-17532870057814109047.600859829217332735092564821487411138', '23019.6449040', '-761648154475550.4212707754733494707749247114459957879434541949961262530168523576109808'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('-0.000000000000000026988260097683516148610380', '-45420382420145149189834745476421586567446848185762.708375835', '5.942e-67'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('-0.0000000000000000023799691081599249086032764017749602896732817654250', '991105482710213.567', '-1e-19'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('601453', '2041.66764295913', '294.589083621990798160301139631085149923553179452222733024041143164011323620273068508'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('-402521315714183175054571726943679054.7675', '3', '-1.34173771904727725018190575647893018255833333333333333333333333333334e+35'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('2206957.4504253', '5483536757267773.0781508858951720347886184285', '4.02469710356229758887237979439122257676387502e-10'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-0.0000000000000005289549144694566634009672940013915898308679385505', '-18.89', '2.9e-17'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-2211019241730.118931085998956737464', '1883345', '-1173985.25'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('676660413361215098841.6447', '-0.00000000011016974787223439675745714624897538289345097697566', '-6.141980229871714946783543386659759345952836e+30'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); - T('-0.00000000000000000001122585876532469760883703742146468722976677', '-0.0000000000054744422221837600557', '2.05059407145349178334038027799621311225211509668637086903391590926456766746e-9'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('-58.2', '-1364461667135886369603850.1784667971192', '4.265418472485667689287105862913268192243368105085866387266e-23'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('-47225932306386643219733.96765155309', '-0.08091271579981112281034023212381984889369879198108909359', '5.8366514879107400140856446166707928594799801466940076002029905146259292256804324968441972873664122924704057077e+23'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('0.0000010981334284061199519633859544035268395486390675316144836610', '-8233507251008518719.119447816686546693006964245267741540211', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('-12629847025632238433603053865614665972.1494239645227896998674', '-2591992428721377159251056998048.128872', '4872640.40036664294743635414136385753534'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('-4252.07', '3415694163747861025', '-1.2448626241567330165894468829708493576e-15'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('67828346273094326856933', '-0.00000000000000000001981766141', '-3.42262110901077943368359324492061750287013305067865724525969686551426453097323353653966782551867203386638141175104474650523358599e+42'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('-13.806931363138', '0.0000000000270109174387398904696405526860183322846580991144310044469', '-511161140470.3963666869121585635945898573137993'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('9.63', '1171334609000199324775253397721344579658013052', '0'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('0.0000000001168642599645515450579400931900955126185213013465768', '0.0000000000121793918568216690573762516759087773884128915423497231', '9.59525'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('53506114651950883942285065699033', '65910628177729867715794374064.1138413', '811.79797752298971851967012659297691173513982414824506104066132362'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-0.00000000000000000406627260678849033336293998551088992', '-3303171.983301811542274853533900179067748154', '1.231020554589438136806289366857685e-24'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('0.000001084617', '78817036436563311090367542.130181882621560', '0.01'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-5744.73419', '122155848887.064230599', '-4.7027909366101111765684860860155074448700724899701e-8'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('426.344', '-127873488954305077741949807322665432845121236', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('40030987601502826523314779745936856', '570996.314388459918349916072985491785987', '7.01072609275529678246947361074571833074130496873796082431e+28'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('470581.007268845392131980979824886', '183334837116430.861534072111318027730101341054073', '2.5667844402643043142954711637004e-9'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('48323137770242813929658748393131737173669293941681.2', '-302.5177156686213980269795794973417845274346400597970242478', '-1.59736555141703139979090089819188708015873544578179904997943129115168986035033030299897874617620575984889131116122934e+47'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('8.7', '0.000000000000000000166761710281741', '52170249305440090476.62082302362'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-3387155.337280447827589', '21.94263', '-154364.14583304'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('1621091487090991767', '-625690863595514294116971833.8982', '-2.5908824651449069100905040391792376372343161e-9'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('0', '0.015395', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('0.00000000000000178239599595974964583290109935985132141544888408370628', '-29516.521811036968024710638888599116696', '-6.0386383171111545590219859100069758779882121614779757e-20'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('74.969990492713749079688', '0.00000000000000052282880601480435829451617959658965518187770782597', '143392999066296488.15598221416532487350857268505818468778132959087203234559315393563482665694193790662836704381101'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); - T('9596615571258.492610962809423', '-167633520.5824796874157222071297', '-57247.5930704'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-2232071124436735511943814137.0522431130665912245715784551', '3564396711.368', '-626212878414444584.725490318710279686312169391968867215929674014486509260688453315113231564206302732269601343632478'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('-1382227618.75131191316862730899075392511410652', '754635905531929458984619.180888454231', '-1.831648359982293967304909354245656965e-15'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('-71067330303000363858876867.973933654727826106685', '-11661754495838287260.07549715908674', '6094051.313493355982412064832079563681'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('-1252371590193744774917140670', '-213356828779653985738.357', '5869845.3541749151279418641211276959015930731289804820486'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('13352367841149988', '-0.000000000142031141374476971294', '-9.401014250772902375534890054877166473120970323e+25'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-10321.73245286387727432273304720136578247', '0.0000000012116081638922756022964368396', '-8519035081197.7404251464625469036910252'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('-0.00000000000000039871298374', '-34669636664769580398726661099025.86943584', '1.150035079961372033160736089419637803806556114650312e-47'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('-303137413399920257.30569152070980396', '4040056.76913163224875', '-75032958872.27754452352532363389769842427145464424631624396469616635312022963616794108317'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('3158137570873460228072670005805543345755314.88870', '0.0000000000083', '3.8049850251487472627381566335006546334401384201204819277109e+53'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('-2432289038390.2', '-318696105128138999338893487.9', '1e-11'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('0.00000000001159', '-1319597700477306095503339987.9244', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('23648504.6466', '-270134.1', '-87.55'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('-346539606072077.2439', '862203.062816695290396772865420408873422969589343', '-401923422.70274641808047258150883287943664547849847021654039885668554386812303515806801631981'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('0.000000000000000000012', '21194406', '5.661871344731246537e-28'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('0.000000000000000000111480007578139775', '40759282340479757739197.929065157327869698454301', '2.73508268980055839501863e-42'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('-18128041192.156711945350321873109876', '-33986859592609750.47129863121', '5.333838256741600071709984030510568296793370390855043571400753611875916969218330361484e-7'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('37278526076638974862118765.098259276278986122514405', '422484277198516023929200423121333952607119189697795', '8.82365e-26'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('8768.0457926837864490653237778856176282232936793297952', '2911070376371882980749989481391259968018315772791348.594263', '0'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('-15955789117760043118300438387.88821275514711148675', '990985099985142384569.56827257552943577101744765232273140', '-16100937.4590992989250162977644764748579171495897739589653639122908862455819077118275788475438161'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('-212339967169681140.0656347177691098032583634264120432109692', '11427913738903003526979637293.05945166976', '-1.85808164133083e-11'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('9531.020434', '-334535567052877548087656305116448', '0'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('3841583091234025971151324407364910092214432429401407480438', '-22416824307585236203987598514653148538792.945067', '-171370531281459881.5845028347181699363'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('3216714522.970', '244060566972964907041409673187177473756.579577073127866342', '0'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('-0.0000149274144207078807596236297196457', '365070321314504.979770', '-4.088914806045830298008984522180321e-20'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('27022766.473594173737137389937884830415185959525864', '-539299052785656617700079811116319917441', '0'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-28599579971171430131634037723710371659862', '-0.00000000000000003644973478672098783210762417899790764846187', '7.8463067395460310450266452407524485868916851065079313125316782921027252528619835701517998070723638e+56'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('0.000000000000000107501465095829712656', '-36.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('3504221306553522426085327256227', '-25730.57184190476446062096107175383931', '-1.361890177989186277274384722436967581e+26'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('-5613976985159967030036081584308829303811752101719', '5826360651980204533629650242959093732650762454761251564090', '-9.635477994744361231994675869384292734433202261344614e-10'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('31450598647096365977207660693799877880.7722033791', '107521368334565489758', '292505565491262148.019571293699173528327044279742920906207753129416525762209451256122138367129671204843851546'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('1500908.503777', '-1015794940302252137891895242750618498147131.9366486805297', '-1.47757036802172020799761083929871197843150569793966301441245e-36'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('-73296034', '-5', '14659206.8'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('162689268248656604911961.73925878415346621140', '16.8530012184832', '9.6534300413050659945667091905274e+21'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('-0.0000000000000000006349044078849485', '309418015201986203793355024.150967286295740', '-2.051930969405536238876578741356000088614244e-45'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('0.00087604094095', '1392643254462374770962.4', '6.290490677658813987746781212472635606387062383544e-25'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('0.01471018444847', '-0.0000000000031444004384214340642523517788169191904279950', '-4678216002.2'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('187743709993796.4707441185609022061433785613916665', '-148037593060997360064291511624701384112069161633.117310780564', '-1.268216444970424611070255845307078487869328514291e-33'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('0.000011258', '0.00000002533815962089606530705098', '444.3100907263867470311330952968235026076982471394'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('757411567322940237009357511826689969429965.236585820277', '732371310539520997815.583055808555097036195690159014046186', '1.0341906576938037911928068192477326e+21'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-568.38271', '-0.00000000000000000009831306318615957356693126102654593877784118926', '5.781354904218022750361120979397811789718111958564428281983974648837588268358968369893867421753377610560567601e+21'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('4961441143214745081236647304879610502095528582', '152849955322703', '3.2459552459403407242938276150370472621615e+31'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('3.07144121980414068036287438221', '-9172805577814.461', '-3.34842071354133190529054610280498225047720875195151670690172482e-13'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('44314348083704254263362409818654768380209.012579280', '-9.417687525064823672162', '-4.705438353710852226448547042633572616984454390342684398583290673e+39'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('2085098969276295556177971788779802383262842.2573', '0.00000000000095273487', '2.18854062649800521752496766364791747704462864605763825984453e+54'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('109753.2295760718524527484177', '-2410159320462121517944570628199834932322126563296852', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('0.000000000069254571', '0.000000199024731561379031663465058346103053493401562136877453001348', '0.00034796967420424309603498770442174869249118067854495112595546767'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('0.05513850425913127663195321149816649956181', '1583707666489.2', '3.4816087227e-14'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('-0.00000000000000000001911867896259825309', '0.0000000000000026470470353798680890064052204548929047195017581076193006', '-0.00000722264421714539010209156219178435935'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-6073252477791750891.3306202701', '0.00000000000000000318941067336920340144282050435242157283523553432927425299128', '-1.904192686285876887623788577946073103761642119860783779636402053198955991467191518914690989817783177670381359194515048092874262743002e+36'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('378672312.587170', '-0.0000000000000000001053', '-3.59612832466448243114909781577e+27'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('609789798178485116999338276095741737992.379075331', '17.0', '3.5869988128146183352902251535043631646610533843e+37'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('-124.716', '5216585338728473.111922771500014302179232803666', '-2.39075931671423873e-14'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('0.00008981163034929156059932182280362293647', '17.15462944126793230', '0.0000052354165187174924421618028002824702737088914242483722088492099572847282013733240288959490404'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('51.131', '0.00000000000000000163392086120629508806283832967421051655309', '31293437285726849899.9548981381946366968329515395443936573946414878412107077307898590483457854490120470465228429287396'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('0.000000000000000224443342970341249514955', '-195.075348122424284622226008810924357674021585884736420502', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('-0.0000000000000523354375249977172294108', '-59305406992817199156555859872622215551484.43155864914470', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('6', '0.0030', '2000'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('0.000000000000000000034611171122223173101604291856002430473572402', '-0.00000000000000001306934614', '-0.0026482710574396932379054957'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('1588463948.87932840027706', '0.0000000000022448099935370064122298031327392982562438924009101', '707616214046020578248.81130758203250848509051455636434814147439890491'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('331.68', '-33750.2034498218032862327555741660509773034307606364769', '-0.009827496314003737584808993904721204561638977989420994442365465662925539835282246204506787'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('0.327498818868821216689791032955550931752264897623', '21042718581930356317251390092870285676850.926244716344', '1.5563522250877247306423254201e-41'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('3958539212848304459958011955905583053', '-21696668207847236', '-182449174911407951863.4531483205530341836363930866093940294762697819985445794'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('1247355676807195054228866279313', '16.258834134091449785731551775353859635', '7.6718642094499587743177888766100455319156336611325707079731669e+28'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('0.0000000000012350636190251876598396', '-951304829839431745267098098582', '-1.2982837680259132276449985e-42'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('-104.734641992', '1733564860345817076999292.62701', '-6.0416e-23'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('0.0000028957367658033897750603780262704357073704233855043345', '6356266743779871175690.8320757525027414064', '4.5557193908470029595714225575995705e-28'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('-18558028455212231571697031', '-8', '2.319753556901528946462128875e+24'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('-13821411732239834470835288846455021839518308', '43191343517856916199296009474.4583', '-320004209327860.943280120415530700855745713808556291320032098976026114433405693'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('1105537642062114566378066835007', '-67031135832125199.608799899', '-16492897342972.91956535243888467391305299684032312977820150518076720770163876179182196342933551'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('0.0000000000000000001255914148577465716438366888116166812811129178359847494921', '14253616998215507072480525.5466822973429', '8.811196124707861086162541630740460525710456e-45'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('10307.48645', '-233.40', '-44.16232412167952013710368466152527849185946872322193658954584404455869751'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('51547410618891864439338459879661143474.873695893', '0.000000000000000676829184531107024516', '7.6160147636959276036734477149740626732082461515375015431101882226904527697230136479333303806794331563205180614e+52'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('204708594426498174030950107.254', '4440698384508500810481273876415279950855610099962910', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('-6.13262', '23040527189197.48966', '-3e-13'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('84389016596253.6582867036429852020414930676618', '-0.000000000000068476172931286069798457953929796189460178155', '-1.23238512001737718906979098515503064223947711793583508345578763371912048018025047351275887045048034847634525910066e+27'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-38248107466844304398754595001002', '0.0000035010431864427607738252', '-1.092477454004397498727080290040187638747725994106560343172688418173937260394324598159119517021792374783673726682471104291825439097915e+37'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-6.04', '-52596312949208048443865032.445961', '1.148369469516388467461983778327576939930189067065907333733000607931365766262e-25'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('-813956145912449846600403054832', '10796.36780196', '-7.539166512692186931160646370173229289e+25'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-2421788107883639375.690813214146289140632086497030390', '1731175528149788838817994796202724767.68013543816827528061235', '-1.3989269536821316086138504672469213952044063942010898714620955200178235e-18'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('6809195547555535.498930321150996302023166384162374', '11654400.3394158857916', '584259622.9105349102'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('7650.2', '167313423904874555768.53143200344236', '4.572376693665353260468390163017986446812909378918e-17'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('0.0000000000215178880', '-415105913902008739133981.125527139819700224156205940189343', '-5.1837102964231878130039665575920669505879406859e-35'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('22142223705380302372371177782.1735702866136041227753', '586007244566197651865789605.262', '37.784897560048902907217450655951502520247844259884569454602755728879103478107373423844615729'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('-692051984878.44837389610506', '-0.000000000003543', '1.953293776117551154095695907423087778718600056449336720293536550945526390064916737228337567033587355348574654e+23'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('-2098291.044481392971917438527834118527', '-5693120152498224716798827599', '0'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('0.0000000146185660337188726116266948236882286', '20.7', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('10704495556869164920.51', '90619.2588', '118126055086086.898346050034123651'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('0.000000000000002487958710561768110187226959259', '4063693787689666341932152579391331936357.573517570229', '0'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('51618848316969818775925143304056624489535103456.6', '5', '1.032376966339396375518502866081132489790702069132e+46'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('2654107.13441542394', '-6123874494540609.39129700002676534532585907120017117261', '-4.3e-10'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); - T('-1714194716329674533705519065.5334413206217103223746696', '5.98522507452367335745', '-2.86404386633045136335500224142654677487187643840811577337806125077173786775401349379930631210035469203499993508952054e+26'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('5702848846892587648420853565547712298213651451', '20315551290068.9958657451780294280', '2.80713467504096443336245665418400813749841454239681391965351719619477522552050607483391155099224061119513736999774116474859166959586e+32'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('5822711428013.7278457962610451325840881631471620796996', '7317134960.07267345871391728', '795.763841966350301550416023965287902186366947585252329405753890743811409560180259233344579873'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('6998999857049233887139.178', '536565672053559187736681540252526377121.4733799', '1.3044069387186968841309942400771742644732909128490501807562862836e-17'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('-736427.362', '26561785052330377.2389583235', '-2.7725070455512e-11'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('1706905651154879542863', '88.56507646747069', '19272897616498006457.7522807926014250674708948336033069877118029704230360991538'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('257245103.59464744281', '0.0000000029115137887165463109918224', '88354417070456755.53515'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-0.00731213642756679', '22000291.2308', '-3.3236543784156522957658811e-10'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('-1.00153755', '-0.000000000004817370897527122943915648885377070823386522456337944', '207901274638.021808115928034265486'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-18876185760828306319586606769243165085658142.582', '110420998917509223452862481780135937729683.9442', '-170.947427988130159944154589178595087116373885300937'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('10139455414077721510362752985718.349777032029', '-1592.15854283316275020881903273194474638353703333947', '-6.3683704488593777697061166680042965589526026607894963695742224646320751612955e+27'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('64058.2040554083', '0.0005021239538086', '127574483.49063637011849827272068476023898087743836443210535013094588197053638633850291146474453448271'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-1428475428.20735903897201934602', '-0.0000000000242430554', '58923077336504335133.104523863770075780135'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-51554046121.3034', '-0.000018880638', '2730524578740580.694360010503882337026958516973844'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); - T('-2762810286803588.45192428', '-8640345932207758420293371601.59940312431169954302570739', '3.19756906549879589027267406125e-13'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('0', '-0.000000000011202663303958747975051152590316', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('0.0000000000000000728863062144561648570757530722', '322752261571.8626880286', '1e-8'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('-734510557070.068348834319420815381', '-246514712290287800069556.88175493105500884097', '2.97958101667024372312554181557200100600882497777415203837744586470161731601583448849e-12'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('1377663375802999968849430.3093839', '566468290791214461291218484296464177560', '2.432022053482903606051085e-15'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('42.717407896393966477614218353439273979669938970221536036678', '110923.68743842532496727427151897458876838975677629026416375', '0.0003851062'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('0', '-32462950625688705502194075615292.71', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('-2179016107.7151039', '-8998016829991.427774977530562439090670', '0.000242166262731604582217366864917233636794614427746718291884330094957283'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-20294295265203512774.769698852042811556484427715976', '0.000021624092225657109443305144', '-9.38503917455744803550043940290482273316338e+23'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('0.0000000008493664', '-0.0847262743', '-1.00248288623261226063377e-8'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); - T('-21440281347750189310337', '-0.000000000000000000387132410079674043729097884456491866784968', '5.5382295022361103568950998795402234908365568150385575865160019717068179574792611353491e+40'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('206821560851854169617748462848949473773944', '13211894344505757704466014.438', '15654194278193127.234892190339874212443694'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); - T('87335372170833177344.8303029843663', '37000975631892503811354619634411655865.6169807323644717989', '0'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-153953834712343763790686290606.3999', '32832548130942465220.147', '-4689061418.515142415435868663051072079842174369411856550042224630514916748907728876061295'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('8591618553304102854549436621158504457632.5171957714', '-1542797194645238675645482061085323571995441155624030', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('37700127.5951420458769322687632041', '-57762387264539495550418.0153494', '-6.526760644861067e-16'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('0.010041502557250876166548957814077913236106', '-18220674406719803170800673691038472842823530', '-5.511048786178605911409e-46'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('80.29', '-8524769191419139053935120.494218774674499753866', '-9.4184368e-24'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('109702701616263639000350650001761093468367469818592253226', '-2021844707442628.03807051', '-5.425871789877639160770322751829476922008624495250501167900874909467126706972380441248639983205158035489570536069623734497094883214019663e+40'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('-3005.5299969285543736815073486739041595222490', '11869355000843396498.275115952278894077', '-2.53217634548380388605943229997686131910154e-16'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('-2.9854066005', '-2.07', '1.4422254108695652173913043478260869565217391304347826086956521739130434782608695652'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); - T('60997727678079129329650246720589441117', '-164345597279206048954528559846381714544641.400997176', '-0.000371155228298877666235893044021252300333269'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('0', '0.000000000104418206', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('-272327.1', '694.45577474495', '-392.14462592'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('6237855.72', '0.000000000000000056118290958004531753653601257', '1.111554827047036507995706512423927767064027042762859524443941584662214168498358135819148727524390167927840316489194652889418e+23'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('0.000000000000006937403050062051741264875394222559344579302', '1509646995595711435.959', '1e-27'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('-164471871725054325379243876510073498031765815264104734195', '-0.00402430947386126023272568404053794601387820869747399428664192', '4.0869588383630498731416861920107609850137223086980649346785688450001052069390464103e+58'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-133380508526066123553.924166134978708537056649683776', '332452693837394951885538.01', '-0.00040120146715160475560382614621874425251758726814333122'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-1002134.167299', '-251.640', '3982.4120461731044349'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('3091342449638972957936252157062677150123597', '-16288785543666.3129808', '-1.89783482712804340336650119939870960656049694756418219750511012425980687183218750107631468549277698312382362559693096e+29'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('-2121799566979', '-20804629779048036144946756642230281', '1.0198689375937973728019325041709023668770063207827995907217465870058272029e-22'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('-2.95', '-1', '2.95'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-0.0000000000000000000128531295816420791177802740270342784459', '2133.1090', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('-22.4694657270600021059023860420', '-11079.1', '0.0020280948567176036055187141'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('-0.0000000000000000014765999000906441441566319', '13980667685799243617101573702.2033564634481522785621111348', '-1e-25'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('-36625617695236881.773942648961', '1311498943574337365145309982488.6557', '-2.792653236564417936966141384470842862580855171690821248973320554198267761643707277475e-14'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('-2104684780739', '-45.6', '46155367998.6622807017543859649122807017543859649122807017544'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('14570972898277952428626.0983801671394340', '114423093266432345.2524483', '127342.938233191046005191826845887793763656551737627592531031804176335098511683913206903'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('81260582666910888471517.696291', '157183273101224011686.118', '516.9798354725703896250771557514765169801823622101619483914412'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('-2.525060632104990744774590726583480995133091410643517095', '8737246559917825.103222789941919016', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-6908481234802683425254138906190088906940533878.111', '15381.89870114390985717228404934058434081488126127180', '-4.4913058972940177512058867064538945149459323054127e+41'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('417982.58607482343146733674248486', '116386843556506317108.22539086', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('-5780608294791.624458881861849817493', '682392959.70758196837', '-8471.084310818098502691272384981'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('40159.97604002006812174866', '-313664.679534078486903276', '-0.12803475'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('-4.047', '-1.81', '2.23591160220994475138121546961325966850828729281767955801104973'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('5061613769913356854864601678.89379478', '921818732154416225536544128239745673153253611567047', '5.490899233609274193409593992073909981216429810581822729779521522e-24'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('-25506.3998849214929', '0.000000000013985173677629659', '-1823817170445362.78619963707679912302299395613'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('11.4581525319001337207', '0.00000000000000000009416824099681963524706645466971745', '121677461643221226049.4121814719193701493831141147430299424294358706877279967065063044082706631899843825377434102964830059'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-13.1', '71689907220027014271360598291.258402249236137629239531728', '-1.827314402820211048849800495e-28'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); - T('-1125106278543860.42641857171081224001205', '0.000000000305408269978069643760450306647132844200436249835', '-3.683941756471265763378768331539492008773195171551609918202663377907462939251038817895e+24'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-0.00000000000000000049608590807042330411', '27990', '-1.772368374672e-23'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-25928884865429476681995775592751670033286619073442', '-219192400010954.9422554036825930132777', '1.182928097148148648508822522228604781132162339640607517123442344178576719677e+35'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); - T('-4.46763325', '0.0000000000000179609090310047', '-248742045421410.882061859008635736643114865517174911865521227799944534457085'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); - T('-1287033681371878104057667.7055777252542186915675', '195707186672724900856206502221720418737', '-6.57632e-15'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('0.00000000000000193175636808677074413', '1096214462030958100.02309399230397185919335500330064378', '1.7622066e-33'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('4.1855102693159094752', '-1769.223', '-0.002365733584356471442661552557252534021997227031301311366628175193291'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('-0.0000008679493116849', '0.00000000000001377', '-63031903.53557734205'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('619020164695232324.022470822521', '-0.0000000000004062829882447739486123366057322303105417101432919615', '-1.5236182232722239291358561175494240320173964254115460755085158141082760696213303513827725096088371826207242532e+30'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('42561960553952288419610167869608672152477976.7637409739', '264520977464840304990428792028340802894082649682880151.87', '1.609020235818898502867215862305232329970845e-10'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('-8432160850933490778.69395', '-903254.8849', '9335306115578.905936669072754216997426392772559'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('-68334918980853445275646478865113316249836762.819', '70067642250.1174035246005', '-9.75270706796744613698328349792670077865167e+32'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('-125210874454495603116740976.379', '-77140850018624120914', '1623146.159580377099547403143409912506569866772423197071869436970879279367977438726091333988946827384'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); - T('-71924.8159', '11792', '-6.09945860753052917232'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('26738605472616.34809488607216342324130569467943599370', '-17848616068000574690442.240120938', '-1.498077238635546584508183889182860823798452319e-9'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('307728725034195445693818971152253110685320114730380.6360569', '-0.04791701101144421929437607982012423', '-6.42211854492967670147798513527529587291182927874576501544632945181254387470070916840287404357386e+51'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('1063469210609337404733995767077620', '157322.98262357845381312530739737044008643142255', '6.759782918391938594011489608657438980256117690815000289918435942612008089111174784431469936177200692245e+27'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('4721242310773063039516988216828059', '171400453736307845213676552.5264455791334235426375810', '27545098.0896263513314335'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-3554846810422675439500939761.48523775084025501057', '3315590942268820.06130581', '-1072160852264.283056864970073195051461622948996967853643073530490983'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('-315298.27020265072220508757446517308919757747772180364', '24674904266140137236693349157364359', '-1.2778094974630368249191962362594215e-29'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('0.00000753194455756794779974643789264996726', '5991522948863651', '1.257100176674855652252945e-21'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('-3.3', '-776998301627358692703026', '4.24711353047802405395217647701160391118416266e-24'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('10977918093.74255295043893514908080', '4088067972470992.747117265605094792327745422289731492', '0.00000268535605759682552653099970835593'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('6856439', '-17246005.9309043907638765902', '-0.3975667773437002568945641473'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('298153651523492269765657502906019847', '0.000000000000000000583575767236932787472350570065527', '5.109082115166741717506899313404018033667092958887247086907247281013218226491031783e+53'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('112673834429924858801595684285086.239309381981428', '-267459587411.5959056', '-421274240046329341201.64843123511725546164313842329550287026178410911552652826352283112794653674395'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('0.00304013112747436879592085927', '-466567742.705324788338', '-6.515947951837847345154447e-12'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('408039980934080654190.10495', '7740827823125488053793915672307134647697764525', '5.271270596086294571867592375848040651671580781285931860265302318308353e-26'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-14.35994958840514231708055641', '-138375506625046841270057381331164746.7022255338810', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-2.30545415622', '4.1764147639455207766144357157533380499118421354269', '-0.55201752855647971419990305582933793'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('7', '1517830154233.256354618065521871308', '4.611846e-12'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('-21565167379464493382078.1', '-0.00000000000000000015054398271503612276516', '1.43248285255512869987845415014282003732353935506369813229992050816e+41'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-131265273607.6', '8527358545951160003249799367499710', '-1.539342727296549809434811171262223366509053565931192709376536462468975683e-23'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('-7400030128880533683116353483202129315391542218419503647458', '188653216.4064145408994610', '-3.92255709700633529926085692361021860510356981553906056412282862405749365644716719294480094765319042816975315928831243535386869738152e+49'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('0.000000000000000002980505992129620520127442706896038555653286379104580', '207.911145544', '1.433547963160473961381177693472099296632254e-20'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('54641030767.2', '-0.000000000403625437861745840964628129162180522645168390994640836', '-135375587467101709281.226161911575732696130284100795168990520198665934091307492071006553764178017574533458784'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('851736532738029.60209470571380221276333463072', '-0.00000000000000000114929416269306152351105287227218987361', '-7.410953264934490688278940003920834703403777176356982558393641846764034783e+32'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('-219483098', '-0.00000000000000000018804816235407398287255832650176', '1.16716427989728235020019911955583225548719003865002e+27'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('217289940219309246936943195754200410.51455750668', '-63355238534381491744596342895551077252.71', '-0.003429707554512493626949130409168057711026740378896565331657739651625001466882133520579718359906689'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-176541.53078', '5636726158518564799096514888456095728041', '-3.1319870047829032e-35'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('310106593797778297794006050555480612566516210.801605287605694', '-62617459184350755065823836651746823705452786558', '-0.00495239822626465799890522013613597052253609868931450749761349632061009409030943676'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-3.93331852', '0.00000000000000000017547329228603830', '-22415482542997560447.66801836373937215965155736854780121152633001674'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); - T('-3', '33.42273262067', '-0.08975926756343902112491292'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-1085841368229.94743889887943410676813741370545796101970', '149610498943278043790373953905696078398598966574.065396393', '-1e-33'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('-6855.326', '-6.61', '1037.11437216338880484114977307'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('482589.39032468525307515', '345620881.1', '0.00139629697369197885849365714148108512532809465139691758051015511979146'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); - T('0.00000000000000018873012642883182832958209507253635128', '-316826894495349657610523346282389288091344754546005352412', '0'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-0.003915504234894627513', '-2561178368548558.3', '1.5287901393269916111965312123266261603335417944432306248e-18'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('-0.0000012845584111321936644262379417469638861846223574683905234', '951434782049434793413124934712308714591814021.8202740667', '-1.350127654956228395192441e-51'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('8415663741.6', '-1168289085861655174422234758990445457837305401386032655', '-7.21e-45'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('15858062669861942257032429298168.061284122274275', '-0.0000632521476327715811032330323136282408108535316', '-2.507118455792277110934258995900949920340359411372602248666188373364931628696825287100597787416097233309978475814394363763e+35'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('0', '-0.00000000000000000159599025962211', '0'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('8012431158360693111.3422024194980884319325209488819277405', '2948627644398253137185410152161559.235676341420', '1'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('-16692108859470873479799641256137360063087170548211631950768', '37848415114043098758799686016767986.0657242693524879935887', '-4.410253060577300514678904143e+23'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('-4243226161', '-241235.3', '17589.5740009857595'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('5671433914958075722313198736271285623794662361', '-1529262.981377059120344780400627536817216209608491794503', '-3.708606030501768874471207730787071653798986595411035303838097501627810686978706206155e+39'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('15076573039121823.4228488681', '-161804219260400857597665.80520571234560198305156', '-9.317787328436859431009430461085894566148816536724215e-8'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('294.8050', '-1.964', '-150.1043788187372708757637474541751527494908350305498981'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); - T('-84259403135132485171174.02638116507', '-114.25883199713512140486366465931939269178', '737443238849537430255.562897456860924998387708483089712271920400180306835801578116806671059372285530053918368188248465511'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('0.00000000000000000046329876', '17951420713085087388514.79177201848797', '1e-23'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-0.0002610697214141198547803066285872786447209856526772883974', '-178463559138028170694183028.197759979905991059847', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('10467906625915426931.86040412', '-47739824225253084453503246028.8', '-1e-8'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('0.00000016666446981689100983647498315835174605580766', '580387622169032702425477961127755252936733664151030131299360', '0'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('-224.769', '-24801326309696', '9.062781449398827959722015515861155e-12'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('-7', '0.000000012707354813051516957', '-550862087.58493263467522230046127695732435950160199797173188670287711444397512'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); - T('-4.3656189571419062523183949678080584000285054747999', '-3293692576993760246104014415046803314.10507195460869', '1.32544821809888565170762281523897677163949595277716403402859734e-36'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('14.1957398777937590270133873552634805598', '-0.000000000000012563918029887170815634048090532307766027871798898663876504', '-1129881605724010.2'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('16935191410004228.460802414832644503742366518153', '1643218550169899824827110750524231685.35', '1.030611016912705990838456e-20'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('2050277235517443724707910505052.4731518708963', '-0.0000000000042732754158552556793926871242449077002300282150840251359349', '-4.79790567186529005222705249614533112509378367129076106364835811006606986e+41'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('72300288767.4686', '-9079012869267363449548957.7441533', '-7.963452614127962619893834937e-15'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-192278.89137554', '683.9', '-281.15059420315835648486620851001608422283959643222693376224594238923819271823365989179704635180582'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-37071737652639279645773001054327733919457032661726466338296', '214460775018254857803.123699146008820945', '-1.72860224204093922691043082274757832113184495522998e+38'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('3508739066826554438413966431669941507968277256138700398.3075', '26272394523500608871817279308.076254831783976099304629', '1.3355231338688956416143598722e+26'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); - T('-0.000000000000005888147537781712378940578659229857732339205517', '-0.0000000000357908539645432479549', '0.00016451542462817163'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('8.9', '2351287825342227.207075229251', '0'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('-64917.2734106506408', '-79744.96255', '0.8140611185308110825616'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('1471910.39014886', '-0.00000000000000002292836897845593599690424193', '-6.41960355545526809487536529467727428238048655970053407194427902647011729951927080268452364187789104659194714727650982884e+22'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('3358.2557686025', '-13824816.20862637369171939065', '-0.000242915039008404617'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('0', '-176919225043114407825860493712084027468392984564250681392777', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-94.74', '-329651568302571800500603522925.308423', '2.873943554639563322615843605e-28'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('0.0000000000000000110731296084', '0.000000000000000295624180561344759822516282345296563007307492621010', '0.0374567790340216195083300376735558825475464199235127102791290477'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('83646713.06305786000482933881370', '-0.06053394237208041753996944641', '-1381815057.5574862847330003528953448813081937401796458491197415668944330729137829413685834'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('-38.86923', '110300320411935711291231863077329191512675361', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-289778228389644.735858', '19872423685993.5061287641581109971172568923761866135070070', '-14.5819268433717224346668613163636009356892'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('2349185036898629126357558810676316514842302299.0', '1207399206492272243854506147853098478', '1945657264.1980319963362423395380699788180442632737552157456700012'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('-0.00000000002296696350413542311429801774342', '-214365998434669728.291424303429733970843831227714', '1.0713902238155014381665505340351475808957657678046297897617544e-28'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('1.2', '0.00044989117011003817105772781526543396707216835596267685462', '2667.3117405404820335329558172000325992151689227771625583656817424662783'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('9595745885499426.7169802725', '-0.000000000327743137731955836', '-2.92782511081812216573540637169470332617972314738093221280858903756193467761589986022579484529723405084138308540303e+25'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('-688719.8', '0.000000044444185325676', '-15496285846016.33736365698488460633918072624981148372653014620199623652720088517243'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('713224612262773653680241404914834356988249073', '380979.615840832555552739491029492', '1.87208076917361364947269850626183178839836232939369106393408135378988816660528694640277e+39'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-3275063595', '-0.000000000000000072', '4.5486994375e+25'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('-2.6', '170162024025946751328594.69323995086202421', '-1.53e-23'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-0.0162866737821637854634366877470516190361196456175', '287.485', '-0.0000566522558817461274968665765067798982072791471468076595'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('0.00000000000000685125450752007', '-25463715301672573', '-2.69059500012162339283072238861321781124021695474267719e-31'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('-0.00000006417176012350484981296579048552883728704381828848778164396', '0.000000000052422588311249876007', '-1224.124221843002820600268753483592272'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-16621167342820978706536182564384834520748084784088309400267', '25771141077830118867510', '-6.44952712517627078574684074824441580996230842092e+35'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('-7888.596835206861517863152770552325131999866', '-0.0000000000069530421297744953074562967729205968985', '1134553291634191.2930516886628897927997661960306833620003034495097750648'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('1.2802', '0.000000000000000320733183354699837542267', '3991479729692399.14388544644270182793510362289414907'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-1143167591244810954376007417870910708549794020221806675.867', '-83.1001483252906', '1.375650482319176190320461611356383156139441669005066072939373e+52'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('-361334608750433443027647', '0.113122', '-3.194202796542082380329617581018723148459185657962200102544155867116918e+24'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('-0.00000000000000000002494217', '4.8', '-1e-11'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('0.000000000000004645660102106500861269', '-0.4071388488567123873955', '-2e-14'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('-0.0000000000000000140510767340573128875519317863769472177687242606399626', '-956282191.599509427461617089251166031', '1.469344180775238969387615485222865453266870409511e-26'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('-2906876362334903297.024', '-19.60375223', '148281631405566040.304111719534827032447144941293'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('-914878775966528731607.022587027744', '1671043826055263405', '-547.489396568509031642388212363936459110501972'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('70450801694587804894143.61391892280709936158771890305892', '-108591331528118593575781087160101701786013931909', '-6.487700325909099293397426242451e-25'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-891918043949231447159022241220674070858767357271692794630', '4.0980', '-2.1764715567331172453856082021002295530960648054458096501464128843338213762811127379209370424597364568082e+56'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('0.000000000000000005733565055241296218580315962162371319238205673524041', '-70690401.6714', '-1e-9'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('1.5', '-253064781747908408661311723771677219591548.42553453449777', '-5.92733603482697001046428303053562006e-42'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('-199265060704729205211360524527945335218.86764046022', '7109171105669220246688089204413433520955053246149', '-2.8029295925347042674352163178171548898777443107245580741e-11'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-0.0000000607986152676359078812147626961003363', '532.239727', '-1.142316369548940263176084988035858e-10'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('-9344541484.76898', '-2373.199483667610410542181360631', '3937528.87149952439694531588665'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('48', '-3550719.914288', '-0.000013518385329929660293949126688380820429236008649140673816900638235114992003924'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-1.021086528836383939047778', '-0.000119076372102297630912420193554175995', '8575.0557'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('-6705971596222771.022777582265649902', '1537909959592.9', '-4360.444871556660007578271067790611195272808960542501804095769354694463194903891490920167'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('529745345068548744372662151971878714.04526189296', '-409.8616', '-1.2924981141647540154351179812206820888935725936755236401751225291659428450969790778155357808588e+33'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('0.0000000000000000001302317170194506400686998546015573602071', '-24.78978867731652441155280376758014', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); - T('-2146274113875.49496314', '9729696205365623186698890257059.75517088857939198406881714', '-2.205900439822460138471e-19'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('-351.2', '-3', '117.0666666666666666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); - T('-548554848.30501', '-27614851500', '0.019864486626155132501798896148328011107'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('0.0000001111574933510049', '215750993474963291939983019990989913881.71402092789336', '5.1521196524132859469e-46'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('-0.0000000001048421705472715553356589700382964723258539804228872585', '-29109', '1e-13'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-49680877924193', '417064263753223072731709638223877170625145.512441832', '-1.19120438363880478031774493e-28'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('0.000000000000000035480345932478838641527', '9562537233485133001.244440733051688169050', '3.7103485263552569e-36'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('-279.7217286066255', '-3147.195', '0.09'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('111829376038647492442232803887249585787639546', '-785143155.00968401893972952268461155222573094239818435', '-1.42431829565231553100788064745240767226374600650422274265871991e+35'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('-960689828.193588938349683105430160033541668181958553575', '9684405008594.22166376', '-0.000099199674873267376107866212657265407443705080626617764172227837998739700676364'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('50376720', '-0.0000000000000000001570607389244761570', '-3.207467400508285297088827902284001067549518139205000192129304697371527353270951720777532405603810353446983929799951617047558699e+26'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('404', '-6183.77113262816412790095', '-0.06533230149290728824615010987067121839540402798'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('49337215720677521.3443833806616883904146777', '1571453293327845', '31.395916079819832887132998326286413259879389138684913919250570049327770165026557'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('0.00000000000000003218259158136497095066393123', '0.0000000000000008461224058775031', '0.03803538513790897970897588277140181040692134848067786983140446'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); - T('0.00030', '11022951460.37551699698035372674421839175342441352404496550888', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('5719176664843253317578321046372.25184848', '20017755600840139934572319136465973644724390561613964532', '2.85705189876692318995459448300938593640135107e-25'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('-53063085311888565757232761359792949.5308110327468742', '0.00006630772089294890911071543105161542606', '-8.00255001940976627814140218779213334551277226050833965949950813384147e+38'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('0.000000214165487233603125515625830085104756776', '0.0000000000000000133131666', '16086742821.47142404990453811981176'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-1.3809', '-104175880995529544230786200013858153463.6469561', '0'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-80.67336', '-2.4', '33.6139'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('0.0000000000007711074021569872054857920506375960354991911113', '-5035148688719256503890304372097300573538350546.1866353673298', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('0.00000000926040147909616485250107541245568393863', '-0.0026523052948041324107443300384238377', '-0.0000034914538297070464119113675'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); - T('-0.00000000000000000007299155404265500', '-14921050856070539136258836028715661812605', '4.8918507648513796522067331050373811e-60'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('4185278545255683361119', '1291.04892', '3241766040326096520.896357669'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('2739.863031800302191994479658708940460984249926450286934595', '0.000000000000000002501528355313917315261103710668929184662215159415032', '1.0952756245917013434979529e+21'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('6.0', '0.000000000000000000446', '13452914798206278026.9058295964125560538116592'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-85532865547198467812607', '-0.0643871', '1.32841618192461638763986885571799321e+24'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-0.00000076', '567905990280637889298798417785362163', '-1.33824966280851596454298604e-42'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('101398028158543389230299115547369007286824902001700116.2553', '-52.2912983373674988296405356', '-1.9390994559812658653832384200571004042037835706815005616110831197380767996466795759350907618753752320858682762688914411513987920202e+51'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('209146073148637058825542155473422546.08331', '-6475219366.0774934458548879804017034412490751', '-3.2299457566536760101397850799376230370553508534555202198732360787918707517850145708654685805035127577e+25'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('114628368289852.820180317085131197751245220', '0.0000000000438542841932421628941970348155178396469330199902031464', '2.613846523745490051969847204505399588223338833211389607553540441069773718251499138e+24'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('517935605107341851096345074856072992.7156008827474683881', '127863800225.0482905517', '4.050682086687105904243568694437970615324e+24'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('-27286.7821863357398984', '-248871877396', '1.096418867083063497845949282782980272286610399834378561244933632043150788431238808799716e-7'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('0.00000000000000013', '10860.2671042', '1.197023965918158619058617241555118620007835884254365096244425387638340255e-20'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-34576748.1602107548', '-0.00000000000000000008931227430020711652680604102', '3.87144414708187212666840381667854701596189258690906315001487272148181857244354283721918201250906497585496589e+26'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); - T('0.000000000000115930341935456194307', '0.0000000981174908550652891749896427792341965557406130630062531', '0.000001181546133366814704555871801'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('0.00000000000000504719252613475311161395980979664810884', '-0.000043082057015271834248968602242413955837904', '-1.17153006977953996190998594253150683389023987586146099e-10'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('26641.49783545436873820701305448661911594248101355910145979', '-135.010709152353975219390385818328987', '-197.4'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('0.0000000032140124045405954', '-0.005727093', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-0.000000099134380264803867304756248610297405939983585', '-0.00000011736539996855192079409890', '0.844664443621092260838038656775263676785023896530963481'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('4.108835145', '2.16307342640344721563818985739931434776831645', '1.899535676803991'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('4656898732572132613.4410483143447805', '-0.0000000009501781415852752916737394036430371199560948203715', '-4.901079627871224417824715320394975940766906006571005665754e+27'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-73.263441606903292174252398', '41834794533354231988607405203742026051715713499', '-1.751256159474895662739518935572654737e-45'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('5904.9925', '-0.000000000000001969995137425189849707027492804513926489', '-2997465520507783916.33831653542548149707564847473062713070397506965140542636523575676815465298609254'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('880022438074316975848739277453909252022061607980.53194460', '5242501764328018092315439.6288940', '1.678630695105007602278206462360343332224278913580415169255108606490213582659658913697707617099644772083987778310417840744e+23'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('-709221917884584205726767929753430.745157457926918049', '2.076632660276337510040', '-3.415249752405454532590867318577044409344398629076630420528864457538549690273648046774419e+32'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('146127526244109040849597787', '2.8374023987494239474733725457373001365241', '5.15004591201143277102110410621545875865437570800644910341093887982827771307526737146399470946988638685e+25'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('904680341646808206060972295', '0.31148361458275280949052429518', '2.90442353720169443586293613e+27'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('2203.4076345788', '724154063664.87046', '3.04273323196941940848187357605107963583858770536700794093631e-9'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('1695969273341.94745291649760098', '15417764236218795258.43748711', '1.10000986353e-7'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-73659.540208377', '-7102156144000910331.562', '1.037143350763924834327534486604821120969035141662779199421366204045278117756e-14'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('-2784953382351286.3086364024258778406', '4107211058684934182', '-0.000678'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('0.000000000000000000019553789848042961164455254267', '33692178941832704881943898861492602275813376012710964549', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('0.0483051225529222178571395836923582375668787163795829', '-564324922583504501767854.4731149680171842712', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('-858453249829127994094226059212202311366908614011', '29034593154.1283532140920733437', '-2.95665672073337373881597003673065506153688282989555301421030066565454579780325802308201e+37'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('257334687865074235664067782848438082936550966405972.9', '176273197.015992281231', '1.45986282782247206172160069403941119085726865919459578203280519328395117540850944210193286328940285732489888274735976297331e+42'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('0.00000000000000000133217566057607597276199009470313325350804245', '-0.0000000000000101200408354784046322638106120605309413493311442431555996402', '-0.0001316373799506610430010703195442828939530157166299880802038865535054498692020690474160903264'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('-1867285.33115732', '19603126380430.651403412416051145200210569', '-9.5254465788752341381720655515657815792150430965485531082566262974e-8'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('2359244379735388.679109363378009469', '-32.80437753596009375903638080174562243194634612123402', '-71918583949632.626233'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('0', '25.3', '0'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('-0.000034397239481491218241448049401692260200746', '6242147450743749254584513236399823155746667146550', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('0.00000000008090115235821457237042557042', '0.000002260746735132616032831452512375486215969231', '0.000035785146164755552882292240073664970094847240235802197408557921086'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('0.000000000000000000753854880082021663', '-0.0000000847084338839566150950878853790084567', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('316033663553049202534769174666', '-36485934550866303347893992823469.719631', '-0.00866179439949539297322773053625108376549649093'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('10350911', '-1554504392304.57922084867', '-0.00000665865664403469343653105181196'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('-0.000000000001772239', '-35562461.9776179842035639740470021156474995631481053688188', '0'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-0.0049554685787730540321344924794239555857558650835', '240110', '-2.06383265119031028784077817642911814824699724438798883845e-8'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-166.74225666994937800532899', '6131671721.783', '-2.7193604653946343511577077632404311198418677432590846226466038070643979e-8'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); - T('36259960930.792501556', '-120492187706.163067280', '-0.3009320489658420990850285700429899529669080813568870895438293314'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('-570058350623765908', '-3.4747', '164059731954921549.486286585892307249546723458140271102541226580712003914006964630040003453535557026505885'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-2609.47', '-1109610', '0.002351700146898459'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('454946353192200382741.398543517963735540199082579799572681', '-9933180406199232073881.485077659037299291573620027', '-0.04580067355952494109598732785954730693081'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-250668891074943688181903895734299909.55191304408', '-3', '8.3556297024981229393967965244766636517304348026e+34'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('8.89309', '-42069038047408448018408161.5775583', '-2.11392758493269976782067132153016897036258530108627831048883e-25'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('0.0000000000000000000173745082126754244569538931516859447571118122', '0.123310867245083651940795939037593765653669051123530055393', '0'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('0.0000000008775456040', '361131497699701998764610751966.50423036', '0'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-5153091518.7406040817400744299613233833', '418492316246282598198213462451341163504999408.4406', '-1.2313467460912738294189675806054139004135565214069e-35'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('0.0000219673332856121664698', '-254444683189579351762035.301650774', '-8.633441662148995949718645766516727344425906188881263491056e-29'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('0.0000000000000124622659253523913966', '5850.420189065839038762899001934149661715', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-688730416.557', '-0.0000000000003951648906503041270453814', '1.7428937460096442372912826654274612114e+21'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('-9931679467.75', '-1502870206.88709372530814748081674179420111', '6.6084745191147023911621614637629767474400210980963073076390839554208942588543709811596179927'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('-108428301296313798056110.5721', '-0.00000000000000000204108406597952289572874685216396019', '5.31228983183888130868233422038052762615048646618698180513643611e+40'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-365370146.51147866658932522008385261549678', '125512291743327891715725307.614734016887918162081', '-2.911030795761893012183859646040100496262923971339613128613262618010840457978133e-18'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('55091794759768865373533577657924816002194789011.09983520679', '-73.60810429054803563072034723276752733800453478', '-7.484474065832335746328690987160521918973730100422535780658416323279822817020347204019596161981598133613537277e+44'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-380352779968328863604.7159023137659034062381486362120851020', '-8.31574', '45738897556721213458.419323152691871'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('0.307701303956069746120229064754446779950609104168219710688', '56234631729368940685764364261340863038476403298.3879528464', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-1', '19309036609717.9975597446909', '-5.17892228500262130489913347375e-14'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('-44654585420706993.31742542473', '-0.0000000006027289838445011151208026441190957324081397995183071725019', '7.40873371243542049803459654582339018756502925344373225030046922681306937066090383255310952621481032745967895e+25'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('-54925165836485672710857725560837377208296587799017133333', '-2825.605707071196726650040560595682826678276353136983797', '1.943836880674226514803730943918030498268112825893215789880695267023603689423771097277245357710607361173152416757068727241872149202600201e+52'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('13374123411670978.062911770758751538931', '-787.9274745092872469065678639698824', '-16973800056915.43910091242974365104264145175506'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('1', '-6449.1757131107317276427416', '-0.0001551'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('15126486128137.793045187069', '-0.0000000000000000022510496179161314088799917337142144133422767760895', '-6.71974798233939632384744366781417676196601258305334434426205837476671258054663726653497745279e+30'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('-6783497223986906248522.10842171360686239', '995239063638516604728939933320055232395', '-6.81594751635548551852626892275416128903090281787135e-18'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); - T('12991.8369610336087353450639391088888468', '8032379664056113843191371.0433152382963207479', '0'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('207320924234.5712', '303336074981166.6737735336493520369939370482505115', '0.000683469396930263576853474725388888959253945256305'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('-122.45739844454730332010332354973634641363705433251529879062', '9447912296854805543914573195864219175336', '-1.29613182888364839866e-38'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('349590.7', '7207227.0', '0.04850557641656076601999631758511283188388543887961347686148916913537'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('-0.0000000000000000001888860109365319078', '-0.000002321644201149817244536824228879826140826', '8.135872449490074464564492664223720373248532002695337135382540057507505e-14'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('500826035582651297779424569682263507887877', '33.50', '1.49500309129149641128186438711123435190411e+40'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-27.315', '-20.342583461', '1.342749806206632625696665932435276540218000583283928648889323'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-4.90239', '-1203284257311414630620587028501239894112650148935741214512974', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('1540.7100926644385965642886366140301649420536640800072', '-74261873930837283483541410115094', '0'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('155.7220256964369725', '-0.000000020746714034683094342180099017091', '-7505864564.19606322718679'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('32283641211618963310071449025.8495', '-576447533321496.2747620144597', '-56004474553998.53948365650714366827469487780203947325964417173665506'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('-6433147.186', '59931478302051899030586452865719', '-1.0734170703377669987152475363845462e-25'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('0.00000000466577741427532463', '-18573976984136355921', '-2.51199698280032716540277156996073220430913119443365130462967571657e-28'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('-228072032680546.770883', '667966.49336024786', '-341442325.24780685952619124738397467667467644134322751996736273482306290614526993858625428910843656185'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('53808201.2', '48235479867479092736228179549920990039221992991677076129.821', '1e-10'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('-0.00000000000004030778700864994296078948854865', '-72221323.757995430943875648364307870759083262', '5.5811476322029579127873718839080941865e-22'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('746358785365811820360.654028722178793304905563959742', '0.00000000006840313334942773374783021640222512135814698', '1.091117831624968857486483033762341569518050806597252386832902689378185612786696e+31'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('-1.9928460955491', '0.000002915414882846452686', '-683554.888628198725265418444707421403141297633390196771552126781196548031150391'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-0.00000000000000002640606620253759119845156292542123235528407885509361011', '2225877810.7054042845879699', '-1.186321462729763623968610113e-26'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('491006992221852923.2372757', '-5771788.05147488482793524714404816081', '-85070170256.3'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('0.0000981386485829161211029033509485910521986286585709653', '-0.00000000035935692266885312474359284336230032101002204910280529', '-273095.1941987513659486714742389901737409321797571382330304242394579590130429502291583079670345125880776264'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-3923683972442238455.688548446964266542022', '19713681370671230635254350180084405861128341616369.4584429555', '-1e-9'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('-12019045506661.95195991748896', '-186454790035745012458002110.71958138495746529141878', '6.44609103598668391198203675729393100331753335263482e-14'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-65488790684370436924148606100053700570184631958478581922', '460.84', '-1.42107435735549077606433048563609279945717888982029732492839163267077511e+53'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('23908388557585898.944763203126346515', '-0.00000000000000210805209717029661834691580082360216713215139691', '-1.1341460009303786507920438774534305298096762e+31'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('-0.0000000000001369312765059911255372554888849748138390660848424486', '-26311153142729071623.17111628', '0'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('2833029876644.131673912415342', '-45.65379979003026165930', '-62054634875.3822709505913533021000904804'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('19656492438.7641125283751890529465696420484811555300946', '-1005436.06768996539408355729', '-19550.2161404710578624949538334409283518604168677743645083066149816019041732132891539115571943493'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('0.000063991196310882687246812203176', '-764595382.4375863', '-8.36928887889357219598670551030780707299e-14'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-9810.22806', '-55098903081097.965527877279202077917868239272912209454994647', '1.78047610958074809297040708909727550678747899737824375163321547306442698717870558649741e-10'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('-257974616398835703621139090661778182291833909045.657', '-0.00000000000510402729238806919217601232779156465287463125660636', '5.054334579745844122489589261660803166075894965367213510821807688904375456262367095936903170827544723e+58'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('-479439506286434445997467789.002', '0.0000000000007160566', '-6.695553204682904200554366638084196137567896169101716260977135047704329518085581502914713725144073806456081823699411471104379178964344438694e+38'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); - T('1.1', '-0.0000000000000106915112901957396962988796099221567390946735312', '-102885361119032.33566720201763022927171653367059674347435084890560649723342406596400208115045'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('3', '414020.51', '0.00000724602'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('-0.000000000000000000061882221', '-4050.56', '1.5277448303444462000316005688102385842945173013114236e-23'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('3.493977827604', '-2260.9669858838401134240638110470714575857000205587', '-0.00154534668105211656336476613115631570453524176333962186796661763534818999'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); - T('3726948435765826.84326915', '-0.0000000000000001199875176686771574119495523565369900549966411022', '-3.10611345928256491693925279371396690965e+31'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('0.00000000000000000839371334481157616928404090451838851429883790182523489', '0.000000000000000001174084780027432860197437306718', '7'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('0', '-12107750456.14393218963304300', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('32452469555159529657043699375492918544407971123035001805', '-3477672163570311948206.46815498316391271788119679886142737565', '-9.331664409057631447563529641108012734742022362851228519678586e+33'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('-0.0000000025249569', '41860562832054775078467864.9889979', '-6.0318274031e-35'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('-57420834404667479679602871688255.649313755187824928', '-526.869920757904877517805158954329176436765', '1.08984840740324172059414548358126843066175829927983359182059463499020186860098749851485099825966999174869239633061771228495e+29'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('-555674591960483912078.5951', '0.000000000000461167689042817244270167028412844448806527289735424240146', '-1.20492958453750680639966040339288280102588876934e+33'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('-10269864203446021737948535841920170109700177003', '-8868278165.7332530984614728126275155317340', '1.15804488893102754123887900813714712918932223002003560913873793494119808283875232529043328266724198e+36'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); - T('682458542873211261451752430521.50', '-0.0000000000047317422583988520', '-1.44229864097488822202187839202570736463468686e+41'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-26794151020408.4608794932680594008286263653818575932035677696', '-0.000000000000010618255426571737851651013858255943564445', '2.5234042640712168480007125119498330722733482066532969571905761e+27'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('0.00000000000000698022055022659864002062387583190', '1.4', '4.985871821590427600014731339879928571428571428571e-15'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('-0.0000003324810418286578', '-153279272.1421553773097635827640004423163164355773643413303', '2.1691193935231230363867783229324e-15'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('-9404703133195.13', '-45525021.3371016485784', '206583.16804633'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('0.0000000000000001830187412365033410994083139636', '-2.404', '-7.61309239752509738350284167901830282861896838602329450915141431e-17'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-13.1217336639451305439590042', '-0.0000000004897887830525073032777704194170244636961721242635', '26790596514.208918842869983534986205269964226588243435750012963390544818454757631234642456690595'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('-4005965010496578889385402.4457424061322459174', '-495851632.0429975', '8078959010362204.171060091563633796500721355364945604379286889945542443933241987931947409'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('1468007492719556720149.7243', '602653117999682820388399772457357438149080226', '2.43590790269557576647632180273158488611240246727647613867086194e-24'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('-3067720546455460115054583624.90563917', '0.0000007922540348', '-3.87214253472358600483404395141067089709695726500072852642542326122085910517851994409306351947909322278910027205834307225922632e+33'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-162209.617275', '1770288709185568423.68896278566909349', '-9.16289057447728252989e-14'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('0.00000000000000276328664329193085095978498036928931806454342774', '-9294328798787592994233339.072', '0'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('6.909024540243', '756611909', '9.13153025753e-9'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('-12059873714133.493148039435702897368991609', '-2224844545756841788321221865009881', '5.4205466791528110588556926535e-21'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('104754143837318182.4', '-11549180444', '-9070266.4440349774831174159114211862'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); - T('-334030072820632119710072', '-1.0', '3.34030072820632119710072e+23'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('67796811842755861918265.1423594922053348', '0.00000000000000000013716284029732259235206650049087658840821899770489301325723', '4.942797312726634332534530226132606387503176112095456172429358696109437734575169459831901881448319263110745e+41'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('2022854952999872055850234034154.369917295566462391873', '13.75836', '1.47027331237143965985061739491797708251242623567916016153088013396945566186667597010108762963027570146442e+29'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('-0.038747', '16439037192115022080201430.915947', '-2.35701151759574969347678116027526521525307302208203579637e-27'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('5835060438169234262736748.328559855177221323', '1140114664918923170677.221356634518134', '5117.959287528489228206379959134811856240476081634542669211680204610408031'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('-0.0000000000000267595746177751020908523341076736116122831657874402545134', '4068716223280464463190.66605189736073370652', '-6.5769085749115693384978725140734e-36'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('0.000000013615410894818066521708546825107702688528499647', '3', '4.53847029827268884056951560836924e-9'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('6.2', '78756', '0.000078724160698867387881558230484026613845294'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-148428436744.287221266701376626964', '14647.3443717355154907539131930670153547426932766', '-10133470.81746125599475440250281824581067466'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('-1131485176.36', '243.935512969657494', '-4638460.23313851'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('-1384271134192800808858028587220494947', '-4', '3.4606778354820020221450714680512373675e+35'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('-0.000000262795322', '0.00000000000000260448783427139897456119386569682623768617148230930', '-100900959.69809609139671503315458646839423292725929534450987089464573'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('-3100575428627.4279', '0.0006563910304', '-4723671234108667.52148720403964861979'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-60.4901', '-7153802399007784077376399639542532364448308688190006085969', '8e-57'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-1.22360', '-0.00000017357767807793899723685184287804837922756376495441002', '7049293.512559749372859153421040296683'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('1565440', '0.00000000000000000318507005', '4.91493114884553324031287789102158051437518619095991311086e+23'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('0.00000000000000025', '1.64792487', '1.5170594518668803147560968601681458936899228907201333759833359393380597502604e-16'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-1.294', '-0.000000000000012346068350', '104810694653249.672'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-29168.554', '-8', '3646.06925'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('43520', '-485.75606652', '-89.592293333115077284037786596164402751883515478364755925148502250351267522446834227135819652'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('1148978.24', '-15564548', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('74159102.0', '-2754521', '-26.92268528720601512930923380144860031925695974000561259108207924354179910046066085537'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('-0.0000000000026876', '-10255741', '2.6205809994616673724502208080332761913546764e-19'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('0', '320295', '0'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('0.0000000000000000000443996740', '7513.561355', '5.909271502847799663705547793453800844087204502504525032922952686795488e-24'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('-0.0000000000989', '146556533.88', '0'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('0.00001391471605', '744.27894259', '1.869556594141772197897753236770100087428835180475907168e-8'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('-40310.2', '87709217', '-0.0004595890988286898057704'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('1044345208', '-78177.473', '-13358.6462689'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-4682.4005', '-9097023696.17', '5.1471785238631063197511178523858062911980363528445549978499721443800782131606e-7'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('394883813', '-1.18', '-334647299.15254237288135593220338983050847457627118644067796610169491525423728813559322033898305'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('25.579', '2', '12.7895'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('0.0000000000030', '-30142812', '-9.952621541e-20'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('-1.89', '1.5', '-1.26'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('1843613.37', '-36', '-51211.4825'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('-2', '-6556.35592955', '0.00030504750222388725256420745657319634802955829712150804993051660367510469671127160930692062'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('10', '-0.123889533771', '-80.717068630544761887592'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('0', '3.8', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); - T('0', '-141.14989', '0'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('342.75', '7034856', '0.00004872167959088288374'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-88980', '79214827', '-0.001123274560708186612589585028065516068096696089483348868514223984860813998874226'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('-10.16', '-417.5', '0.02433532934131736526946'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('-559.8', '-3.38112', '165.56643952299829642248722316865417376490630323679727'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('-1.9', '65.8', '-0.028875379939209726443768996960486322188449848024316109422492'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('0.0000000001462574', '-0.00015154345556', '-9.65118549392539666857785356415690803e-7'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-115.231696', '-2', '57.615848'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('0.000233315045345', '-0.000000000000133029473', '-1753859803.270814'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('0', '-3532615.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('-4.2', '1.17', '-3.5897435897435897435897435897435897435897435897435897435897435897435897435897435897435897436'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('0', '11.3930229', '0'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('-0.0000000000000020730', '0.000000000000000852834', '-2.43071922554682388366317477961713533935091706006092627639141966666432154440371749'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('-136440751.770', '-303', '450299.51079207920792079207920792079207920792079207920792079207920792079207920792079207920792'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('-85.113', '1', '-85.113'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-10.47', '-0.00000690102', '1517167.03'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('-1.4292444', '-1144.70690499', '0.00124857'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('-0.0000000000000000000465276721', '714.1', '-6.51556814171684639e-23'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); - T('3.20', '8.38866', '0.3814673618909337128933584148123776622249560716491072471646246241950442621'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-303854.8', '-0.685651', '443162.48353754315'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('0', '3.73', '0'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('21.0', '-0.000000000000000002895581456', '-7252429371822859194.32963795027149807800122891794068735049946'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('27606161012', '1508', '18306472.81962864721485411140583554376657824933687002652519893899204244031830239'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('4.28', '10.7', '0.4'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('0.0000000000000347360853426', '-4.659453482', '-7.45496987506999646015566767278652273494250114e-15'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('-1169747921', '4.12', '-283919398.30097087378640776699029126213592233009708737864077669902912621359223300970873786'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-0.004024373', '-7', '0.00057491042857143'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('1.8735138997', '118.931177', '0.01575292490126453553890246961904698883119604542381683484053975182639'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('-2.2', '764.12', '-0.00287912893262838297649583835'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('-0.00000000000000000009903285', '-2.0', '4.9516425e-20'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('13.43', '1.49', '9.013422818791946308724832214765100671140939597315'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('0.00000000002818631', '1.2282333', '2.2948661300747993072e-11'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('3080315675', '145441.14', '21179.12218647351086494509050190338167041319945649490921207026'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('-275.0', '-16890338.700', '0.00001628149706672252818707537226592146432208609292127457'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('-2.95', '-6976.96721', '0.0004228198171508964279624298248636888749259293136336812452928240148630424765891941177692'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('-2267', '-3.5', '647.7142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857143'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('3', '2', '1.5'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('1', '1.5', '0.66666666666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); - T('-0.0000000000000121', '-0.000001452', '8.333333333333333333333333333333333333333e-9'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('2951740.2', '-6528832211.10', '-0.0004521084482737351136335745064281668900369882'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('1.2913929', '-582958', '-0.0000022152417498344649185704630522267470383801234394244525334586711221048514644279690818206458'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('0.0000000000126439856', '1.3', '9.72614276923076923076923076923076923076923076923076923076923076923076923076923077e-12'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('2.1612', '-63497969.006', '-3.40357342735763028004650382313363403892805131714420176332151331360017074e-8'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-0.00000000002762629214', '69.16', '-3.99454773568536726431e-13'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('-211.50', '-3.98', '53.14070351758793969849246231155778894472361809045226130653266331658291457286432160805'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('-17667309622.8', '-0.000000050947899018', '346772093910253341.548302901600133653621272866125786431541286'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-0.000000000000000181', '7', '0'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('0.05964073855', '112.04372', '0.00053229880755476522914448038676330989367364810807781105447052275665249243777339774152446919'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-7.77', '30279', '-0.0002566134945011394'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('2819.841', '3566.03200', '0.790750335386782844349125302296782530274546050063487932805987158836488287'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); - T('651.8', '-48389.208224', '-0.013469945550312'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('-164.881', '-496055826492', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('0.0000000000000000015713402282', '-119.9', '-1e-9'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('-322.159598', '4.16', '-77.44221105769230769230769230769230769230769230769230769230769230769230769230769230769230769230769'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); - T('-2.47', '0.0000000000093', '-265591397849.46236559139784946236559139784946236559139784946237'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('-1', '-51334.1413', '0.00001948021286955860699280850734713663165921117687031418211333'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('8.36631', '-0.0000000000146683885', '-570363267921.353460197757920033274275493862192155600460132345144'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('-2.7140570863', '0.000000000000000481895', '-5632050729515765.8826092821050228785'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('1.9', '-1620.0524', '-0.0011728015711096752179127045520256011472221515797884068441243011645796148322116000692323285345586'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('-4.72', '-1', '4.72'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-730000.67163', '57682668.476', '-0.0126554594459119211293404'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('-9854.20', '100.05', '-98.49275362318840579710144927536231884057971014492753623188405797101449275362318840579710144927536231'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('109901.8', '-0.00000001677866616', '-6550091583680.45150974027127314868752356176565110226854886062051549871232434128124997511721158173397974086'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('23253.75', '-0.000000000000000339', '-68595132743362831858.4070796460176991150442477876106194690265486725663716814159292035398230088495575221238938054'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('-1', '2051.814989', '-0.00048737337691804921306187026787530695829223226324720059836'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('-2485.45799', '-22032614981', '1.12808125233584591726316065650854664658109744508497295743671308155194236133508913333e-7'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('5', '879097.79', '0.00000568764937971235259276445229147942687923262780584'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); - T('-1624053653', '-45901.775', '35381.064305247455027610588043708549397054907'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('736', '-31820', '-0.023130106851037083595223130106851037083595223130106851037083595223130106851037'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-33307.60', '-26398.486', '1.2617238731039348241410511193710124133634027345356093527484'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('-5', '85111326221', '-5.8746587816256136023628558422155102937812556824e-11'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('-1.649825', '-3', '0.5499416'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('0.000000000116045', '-786270', '-1.47589250511910666819285995904714665445712032762282676435e-16'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-32.1', '3.29', '-9.756838905775075987841945288753799392097264437689969604863221884498480243161094225'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('5.004', '0.00000000000000028911148288', '17308202186064620.13937977834220293976031506424543437352660297'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('0.0000000000000000000942', '-2143.2', '-4.3952967525195968645016797e-23'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('-2.7', '79.3695', '-0.034018105191540831175703513314308393022509'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('-0.000000000000002036873550', '-215.2', '9.4650257899628252788104089219330855018587360594795539033457249070631971e-18'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('4330632.78', '-0.000000001568875959', '-2760341093352173.67557354481712725384429196929264692748089971847162456264013667635020468817063440003927040863018285'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('427991.031', '1293.75', '330.81432347826'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-8.92547', '-7', '1.275067142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-5.4', '-1.0', '5.4'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('1.383447013', '222.81', '0.00621'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('-2209000304', '-16.558357', '133406974.133967518637265762539121484094104264088520376749939622632849382339081105691827'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('5', '-3', '-1.6666666666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('-1511.465', '1829195341.20', '-8.26300486315714874072e-7'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('0', '-716.3', '0'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('3', '-52345222089.7', '-5.731182102655194878948627237808030249e-11'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); - T('0.00012', '0.0000000000000101949523', '11770530794.930742343934262448682570098930232366070021'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('-8374228864', '77.675', '-107811121.51915030576118442227228838107499195365304151915030576119'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('52.243', '7', '7.46328571'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('0', '-241759.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-396.127118241', '-0.0000690786761', '5734434.13518169610665135488895103477525968393595199'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-6844.1', '0.0000224093', '-305413377.481670556420771733164355870107500011156082519311178840927650573645763142980816000499792497'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('1.63871', '7842081035.3', '2.0896366571877829368596501781675487298187215660485e-10'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-371', '-32445244', '0.000011434649713221450885066544729945627778296258151117618348008108676883428585095553604096797669328'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-9', '0.19', '-47.3684210526315789473684210526315789473684210526315789473684'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('352830191.6', '-0.000381293058187', '-925351731494.04473608489781199248613'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('0', '-1.020', '0'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('219.352562291', '21384681', '0.00001025746244664580219831195985574907570517418520294971900679'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('161914.41633', '-695267', '-0.23288091672695525603832772158034'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('0', '-1.09', '0'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-0.00000000000000900280', '78.30556', '-1.14970124726775467795645673180806062814e-16'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-32.37', '1.14707749', '-28.21954078'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('21.571', '1', '21.571'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('-0.00000000000000776386', '-1.5', '5.17590666666666666666666666666666666666666666666666666666666666667e-15'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('111482', '-1.911', '-58336.996336996336996336996336996336996336996336996336996336996336996336996336996336996336'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('-10.7659', '96.707', '-0.1113249299430237728396083013639136773966724229'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('386.5281', '412647.720', '0.00093670237654530115906129325033'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('-5.7240', '1.16', '-4.934482758620689655172413793103'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-285', '5', '-57'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('512168', '-7', '-73166.8571'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('-0.000000000000000000285654941', '-63506.19980', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-70.1', '4272.202', '-0.0164084001646'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('-11.1381428', '-34', '0.32759243529411764705882352'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-2.0946', '-7.7', '0.272025974025974'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('233298875909', '-118661.20', '-1966092.336071099904602346849686333864818491638378846665970005359797473816209510776'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('-0.0000000000000002412', '310.1', '-7.778136085133827797484682360528862e-19'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-0.00000001472', '-796413753.5', '1.84828550929840264e-17'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-1041.2', '-0.000000645681', '1612561001.485253553999575642'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('8.37456', '-2808724.72451', '-0.0000029816236268796314943861290758029707760497802718151357226'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('0', '-105271966383', '0'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-29', '30.9036', '-0.93840199847266986'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('0.00000000000000002126401186', '-67.1', '-3.16900325782414307004470938897168405365126677e-19'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); - T('-7', '-10.381', '0.6743088334457181389076196898179366149696561024949426837491'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); - T('2.5', '2.3', '1.08695'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('-0.219855997', '101.7824524', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-5.21850', '-798', '0.00653947368421052631578948'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('-494.272', '1866', '-0.2648831725616291532690246516613076098606645230439442658092175777063236870311'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('-6.5449', '-26.022998995', '0.251504448094453765320141189'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('0.00000000000000232033499669', '0.000000000000354', '0.006554618634718'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('0.0000000005015', '639650467', '7.8402193990737757094453899617023182756466274e-19'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('0.0000000000103187470', '-0.000000000000000012571', '-820837.403547848222098481'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); - T('6', '0.00000000000000012', '50000000000000000'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('1.090', '15002564.0', '7.265424763393777223679898982600574141860018060912787974108958975279158949097e-8'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 5 }); - T('-264.50930', '589878.7702', '-0.00044841298477366358352796335303677284299051045929640408679349348789294671924099023965856909'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('-21198985599', '-30720.1', '690068.8994827490795928398670577244214699821940683786836631391173856855934713754186'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-813123', '-0.0000000001663', '4889494888755261.57546603'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('-44239.76530', '-0.00000005206822', '849650041810.5324130534902095750536507681653031350025024862'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-316.68', '-8624321.244', '0.000036719411422703725065462090757'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-0.000000000000000007135328753', '41264989.38', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('176180337.2', '5.6', '31460774.5'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('1.6', '-0.00523482', '-305.64565734829468826053235832368639227327778223511028077374198157720800334'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('-0.00000000000021866724', '-28126.0189548', '7.77455353178172209997205217413586893583984552e-18'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('2.135', '0.048050825667', '44.432'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('-1.362', '-11.2026409', '0.1215784753039794393480915736574221530210791635747246'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-3.2', '-1.4', '2.28571428571428571428571428571428571428571429'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('3', '-8.154', '-0.3679175864606328182487122884473877851361295069904341427520235467255334805003679176'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); - T('4885365', '32646', '149.64666421613673956993199779'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('0.08525779', '-0.0000000000000015', '-56838526666666.66666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('-0.0000102', '-17150', '5.94752186588921e-10'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('0', '-1.0', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('-2', '-123843217', '1.61494512856525682791331236170972528919367461198944791623105e-8'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('0.000021', '2', '0.0000105'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('116116.0', '-5', '-23223.2'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('3141195.729', '-0.00000000000000867781', '-361980237986312214717.7686536119136049302761871946954358300078015075232115015193925656357998159'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('1.93448', '411691', '0.000005'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('-2376.356', '2951222.65', '-0.0008052106810714535550206623685271594130656323066644937819245864083'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-0.000000000000001025074', '-0.000027628974509', '3.7101413216262778086592935152937492617525944238077548e-11'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-0.000000478862541855', '653620457.66', '-7.326308964828859515351663358155728873732633102e-16'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('0.00000000000000318051', '5.368931740', '5.92391588126244272e-16'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('-11799683', '-54', '218512.648148148148148148148148148148148148148148148148148148148148148148148148148148148'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('325.3661', '1084482292.48', '0'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); - T('0.0000000000000000037', '3.458751534', '1.069750158006001479954818864996851780218104559574298695489931656941044670021678e-18'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('0.0000000000000000066858340', '-1', '-6.685834e-18'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); - T('-5', '-2357875.2242', '0.00000212055326282010644149165490858123'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('-70.0', '-0.0000000000000000160541', '4360256881419699640.59025420297618676848904641182003351168860291140580910795373144554973495867099370254327555'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('2238692.91', '-304048.2', '-7.36295399874098909317667396156267328666967935'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('48.36165096', '-17.2', '-2.811723893023255813953488372093023255813953488372093'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('0.0000000234101105561', '-0.00000056848429', '-0.041179872457161481102670400970974941101714525831487797138598148420249220959122722634956192'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('0.000031224', '-71558987.88', '-4.36339318442579403346362701517851596533788202595243302091264849231123585e-13'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('520778', '-14.1', '-36934.6099290780141844'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('-1', '-1', '1'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('0', '349262', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-12.1', '-9.25', '1.308108108108108108108108108108'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('-0.0767', '-98934421979', '7.7526101094e-13'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('0.000000000000024', '4', '6e-15'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('0', '6.94', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('-1.2283864', '0.0000000000000084', '-146236476190476.19047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619047619'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('632.884', '1.4', '452.06'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('-18.23', '208221530', '-8e-8'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('-0.000062913', '400.8777994', '-1.569381e-7'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('9768.95198', '5', '1953.790396'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('-10', '-0.0000000000000000277023144493', '360980668900489159.96729444430868143982879657940927594970630669325877985206687832887720379010476659480245'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('-5892110.9', '1.5', '-3928073.93333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); - T('-5.03', '6044.396507', '-0.00083217571748887915899922281521495823338116425127501980405733829201949805176803236479006191047685'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); - T('-0.13389091', '-117.19', '0.0011425113917569758511818414540489802884205136957'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('-19.20906', '-0.00001042226563602', '1843079.103032289899499099103753645'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-0.000000006355', '260160366.550', '-2.44272411062222190738222574202473193740201e-17'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('-1.10', '-0.00000000000000017597992', '6250713149545698.1682910187'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('-13228586', '-20693329673.3', '0.000639268123'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('1.26', '2.9', '0.44'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-197.26', '-9.309', '21.190245998496079063272102266623697497045869589'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('-47.49', '-0.000000045', '1055333333.333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('-0.063686480', '18267', '-0.00000348642251053812886626156456998959872995018339081403624021459462418569'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('-21.023531339', '541241.4', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('2693.21', '-0.00000000000000000011874', '-2.2681573185110325080007e+22'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); - T('0.0000000000000006163225', '793', '7.7720365699873896595208e-19'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('59804615', '0.000058386725465', '1024284450338.8009961589305922895534'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); - T('-1.88', '-6237933.024', '0.0001'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('-46.3', '-7840795.2', '0.00000590501330783387889024317329'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('698', '1.6957655', '411.61351613769710493579448337638665251769775950743189432737014640290771336013145685532582'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('-119345', '-0.00004408673767', '2707049927.1986617829506548743461'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('-24.8', '8989.322', '-0.002759'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('9.726', '2.529', '3.84578884934756820877817319098457888493475682087781731909845788849347568208778173190985'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); - T('0', '-592.8', '0'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('0.00000000000000005825980', '2.8891214', '2.016523085530431500732367978721835641797537479733458067909503560494204224163096781e-17'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-2424545.2084', '871.2930285', '-2782.69781702953221781689029088794092193290170460717740036'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('0.03141', '7784326.563', '4.035031128999154759638261594344677032275733419792809892166390604700020214195630990771e-9'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); - T('0', '7', '0'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('-4', '-1', '4'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('1599.3', '63', '25.385714285714285714285714285714285714285714285714285714286'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('0', '703.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('2', '0.0000000000000000001711184', '11687813817801007957.063647158926217168930985796968648608215130576255972472860896315066059523698211296973323734'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-4.2', '-30.1', '0.13953488372093023255813953488372093023255813953488372093023255813953488372093023255813953488372'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('-0.00000000011', '1', '-1.1e-10'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('69561.2', '10940288', '0.00635826040411'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('9940.98', '43061', '0.2308580850421495088363019901999489'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('30459876832', '228', '133595951.017543859649122807017'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('117805414517', '-0.000000000000000400355774890', '-2.9425181777224944477183434889855598655680977380992961852266e+26'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('36555877196', '0.00000000000012', '3.046323099666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667e+23'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('-0.000000000000178916341', '47.6', '-3.75874665966386554e-15'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('3.293', '-0.000000234257318', '-14057191.587927255275756209246790744868000238950912944371710086768772790269886040443782422'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('0.3088049717', '1229.0', '1'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('-1', '76968695', '-1.29922951142669107225996231324956204597206695527317957e-8'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('1079641.41691', '22.7138', '47532.3995504935325661'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('0', '1.1', '0'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('678740.294', '4.6', '147552.237826086956521739130434782608695652'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('-0.00000000427', '11048.19', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-0.000029833', '-46.65726057', '6.3940745e-7'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('-0.0000000000000016492401761', '53.1', '-3.10591370263653483992467043314500941619585687382297551789077e-17'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-115.81587', '-1.2', '96.513225'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('61515421', '-324783.60', '-189.40433260792724755806635556721460073722934286090800151239163553824762087740883'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('2438034', '-9.7', '-251343.71134020618556701030927835051546391752577319587628865979381443298969072164948453608247422680412'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('-215251219372', '-0.000000000000000000347192993', '6.199757014451037610658231227610057211033633965072561e+29'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('-39.9', '-0.000000000000045976', '867844092570036.54080389768574908647990255785627283800243605359317904993909'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-0.00000000000000084628779457', '917.5', '-9.22384517242506811989100817438692e-19'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-6294.4404575', '-0.0000000342498', '183780356600.622485386775981173612692628862066347832688074090943596750929932438'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('-146382323610', '6', '-24397053935'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('-147.42', '-860.2860220', '0.171361612568430177283526757104510992509'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('29.2', '2566652156', '1.1376687694801133777007218269899444839302953835868361431364913010051058901648845e-8'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('3493', '-5', '-698.6'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('36.33598029', '-0.2664688060', '-136.36110295776984867789740462153757689746243693530116241823817831795290890446666391412434219411033'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('-206.53', '0.00000000000003011551082', '-6857927837732091.3064293159480932224811586310658502056250361155255343598'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-2185167.14998', '2', '-1092583.57'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('0.00000015544', '22.360', '6.9516994633273703041144901610017889087656529516994633273703041144901610017889087656e-9'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('-1', '-243969', '0.000004098881415261775061585693264308171'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('0.0000000000000015909805', '1', '1.5909805e-15'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('3740375.9865', '-9436', '-396.394233414582450190758796100042390843577787198'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); - T('179.506', '312', '0.5753397435897435897435897435897435898'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('74542005.0369', '49234198.2063', '1.51402902357738847367808769587778211275856571'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('52693.3621208', '34', '1549.80476825882352941176470588235294117647058824'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('0', '9.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('11.2', '1.31715041933', '8.5032049761614526410948365863433733808854270153846483990095181591608779'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('-1.006', '13234.8943280', '-0.000076011184907739446214'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('-38581.7829', '-0.0000000000000000056', '6.8896040892857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857142857e+21'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); - T('0.00000017788', '-1773.0821', '-1.003224836571301464269477425777407601e-10'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('0.0000000000000217830374553', '-0.00000000000000002371157929', '-918.666664454807809640418092961196428177686345918631554802691508'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('2.3', '-0.000000197', '-11675126.90355329949238578680203045685279187817258883248730964467005076142132'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('27.6', '5111.79861782', '0.0053992737319081'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('-41484045.3618', '2', '-20742022.6809'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-1.3', '278.24', '-0.0046722254169062679700977573317998849913743530764807'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('-3', '14.13', '0'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('3942.3337', '39.4', '100.05923096446700507614213197969543147208121827411167512'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('806322064.23', '11.937959', '67542706.775086093024779193830369161093617426563451926748952647600816856549767'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); - T('122', '-3582', '-0.0340591848129536571747628'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('-1.18', '0.00000000000343', '-344023323615.160349854227405247813411078717201166180758'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-6.9', '-1.6822', '4.10177148971584829390084413268339079776483176792295803114968493639282'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); - T('-20047', '22.44', '-893.360071301247771836007130124777183600713012477718360071301247771836007130124778'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('-0.000000000000003783719', '11.7', '-3.2339478632478632478632478632478632478632478632478632478632478632478e-16'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('12.30', '-40.5769', '-0.30312813448045562869514428159864356320960940830866823241795208603910106489160088621852'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('-6.73', '-0.000000000000034239868273', '196554494495732.9567586213476318416909932952533237101218564025052083178614511371312482735964175243951879674335686'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-0.0000000183', '-13836.03071', '1.322633e-12'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('0.000014732663289', '-11907.468', '-1'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); - T('1', '-3.0', '-0.333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('-2', '-2152240.45', '9.2926420001073764783112407352068863866953155721982643714367509448119516572e-7'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('-0.0000488540655', '7.117', '-0.000006864418364479415'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('19.7779357', '15.5318', '1.2733833618769234731325409804401292831481219176141850912321817175085952690608944'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); - T('0', '-7790934', '0'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('-5433809', '-24.9847486', '217485.03805237407912121237033379635446882183157128104943189222244165386559062675539589'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('6.4506726', '-0.0000006634', '-9723654.808561953572505275851673198673500150738619234247814290021103406692794694000602954476937'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('0', '2', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('2732.745', '2.9', '942.325862068965517241379310344827586206896551724138'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('102.610852', '0.0000021', '48862310.476190476190476190476190476190476190476190476190476190476190476190476191'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('-45983380565.6', '-21990.85', '2091023.337688174854541775329284679764538433030101155707942166855760464011168281353381'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('0.000000000000000067586178898', '-80', '-8.44827236225e-19'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('-166379189.9', '0.00000000002611', '-6372240134048257372.654155496'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('-20635674995', '0.0000000006175', '-33418097157894736842.105263157894736842105263157894736'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('0.000000000000000002728336', '5540100.5', '4.924704885768768996158102186052401035e-25'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('48.99', '-0.000000000000000055715', '-879296419276675940.052050614735708516557480032307278111819079242573813156241586646325047114780579736157228753477519519'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('285265.038', '359018944.70', '0.000794568203743037741707227518347724673'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-3', '26715362', '-1.122949410155849656837889750473903366909271152679870106195828453e-7'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('35', '-5.48580575', '-6.3801'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-194676582', '-0.000000000024805310', '7848181780433302385.65855455948746457915664025162354350741837130840130601068884041'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-256.3169164', '7938.868', '-0.032286330544859'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('3094.61', '468.530210', '6.604931622232000792435561412358020627954812'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); - T('-16.54', '-183.3', '0.091'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('-29526831086', '-0.0032601', '9057032326002.269869022422625072850526057482899297567559277322781509769'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('32.4', '0.000001833940816', '17666873.2803861648717457848432552689312085194356675466456274126569196767362'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); - T('-0.0000000000000616896835', '-70.8235095584', '8.710339812958805083264135380603e-16'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('1', '-52.2', '-0.0191570881226053639846743295019157088122605363984674329501915708812260536398467432950191570881'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-1', '717', '-0.0013947'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('3068126.8849', '4022', '762.83612255096966683242168075584286424664346096469418199900546991546494281452013923421183490800596'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('0.000855562', '0.00000000000606', '141181848.184818481848184818481848184818481848184818481848184818481848184818481848184818481848'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-1.3', '0.857190837559', '-1.51658177273800091850428574583107013319652621945040908472429380581341'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('16070', '-2228', '-7.2127468581687612208258528'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('2.8', '-0.0056', '-500'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); - T('7', '-3534', '-0.001980758'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('2317042.797', '9', '257449.19966666666666667'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('9.192', '-2575227269', '-3.5693937038688603603785464575243281178535858382136446691998740247884506227632680445960282e-9'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('0.003172163', '-4799.9', '-6.608810600220837934123627575574491135231983999666659722077543e-7'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('0', '174602409.27', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('-160.15373', '-1570.58626986', '0.10197066730646759914875956726708577391128728531899124518938954835414'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-4.0', '14.3', '-0.28'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-1621865.6', '-0.000000000000000000021', '7.7231695238095238095238095238095238095238095238095238095238e+25'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-1.1', '-32.701912', '0.0336371769332631070623638153022979206842706934077738329183932731517349811228163050527443166014269'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('1', '2', '0.5'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('-3.04', '3059.4705628', '-0.000993635969884220518312221493880228681506044526796517148042029855480066'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('-0.00000047745', '0.820', '-5.8225609e-7'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('7871755256', '-15.0', '-524783683.7333333333333333333333333333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('-782997903.71', '2', '-391498951.855'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('-11', '0.0000000000000022091766', '-4979230723338279.06741362370034156617447423623806263383380033990944861538004702747620991458989743056304326236299'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('0.00000000000000001791715', '2098052450.48', '8.53989612886029129450365274644980714458e-27'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('-14.358261', '-46.3', '0.310113628509719222462203023758099352052'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('0.007315', '-118203872186', '-6.188460551012629583e-14'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-105.225331', '57', '-1.8460584385964912280701754385964912280701754'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('3584', '160.004614', '22.39935405862733433424613617704799437846211109887118630216501131648616083033705515517196272852481617'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('-1626627.5', '-65167101663', '0.000024961'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-56643985.906', '-22360018221', '0.002533271008375176940782690608166119347278147282866'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('8.80', '8020.1258054', '0.001097239646050802084840822414763065058191412494523012660172454107274570159574968404896488109146'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-23.0', '-1953.512250', '0.011773665611771822777154328057067469118762884645335600019912851839040169827447972236'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('-164004', '7.1', '-23099.15492957746478873239437'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); - T('0.000000000000306300993', '1', '3.06300993e-13'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('0.000012616277', '4.9', '0.00000257475040816326530612244897959183673469387755102041'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('-1424554.476', '-1', '1424554.476'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('0', '9', '0'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('-352', '-1.840340', '191.2690046404468739472054076964039253616179618983448710564352239260136713868089592140582718'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('-1.45800767', '-5.2640370', '0.2769751941333239109071611768686276331264388909121'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 1 }); - T('0.0000000000000317829012497', '0.0000000000000000000411245727', '772844.53461810680406169910186082006391278565187377618637238752391948865161096251341719108'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('-4.3', '8.43', '-0.51008303677342823250296559905100830367734282325029655990510083037'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('-3.89', '-2489.03', '0.001562857820114663141866510246963676612977746350988135940506944472344648316814180625'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('8.3', '-955494.70778', '-0.00000868659965609255046166133355661190473328568036540381307940099954742'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('-7.20242138', '-1368431.52', '0.0000052632676715894413189196343562738163178235'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('355695.465', '-1', '-355695.465'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-309', '0.0000000000007297626', '-423425371483822.2731611622738682415349868573697802545649777064486450799205111360872700245257841'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('-40640.908302', '0.00000000000000290351316', '-13997149681250282330.389024308744651944336288112432733041237533085608608021600977'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-0.000000158322', '3.09268248', '-5.11924521912123355126970551467669581133333804122044886e-8'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('7978.2', '0.0076056771525', '1048979.57'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('-7742.6895', '475.0762115', '-16'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); - T('21578.902630', '32.5630', '662.681651874827257930780333507354973436108466664619353253692841569'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('3.13693', '-24541106.36', '-1.278235e-7'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('63409', '-3.1', '-20454.5161290322580645162'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); - T('0.00002566', '0.0000000001944451620', '131965.227296321'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-0.000000245', '-0.253', '9.68379446640316205533596837944664031620553359683794466403162055335968379446640316205533597e-7'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('-0.0000000000000000000171175545', '133490374.369', '-1.2823062772063923029449392375e-28'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('-1954781', '0.00049611053', '-3940212678.009475025656077084273941937898395343473157080540096578881323079354917139130265991330601267423209098'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('-6.2', '1', '-6.2'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('-12286.3140300', '7', '-1755.187718571428571428571428571428571428571428571428571428571428572'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('19.849636679', '519.354', '0.03821985905374754021341897819213869537925961868012954555081890194356835607312160876781540144102096'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('7.6', '-42', '-0.180952380952381'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('433249', '-30893585.3', '-0.0140239145373651403289860306372404111995379183134176'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-8969', '57.600315', '-155.8'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('0.0000108950356', '-81.23', '-1.3412576141819524806106118429151791211e-7'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('17257554596.7', '608', '28384135.84983552631578947368421052631578947368421052631578947368421052631578947368421052631578947368'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('2.9', '-22840.8', '-0.000126965780533081153024412454905257258940142201674197050892'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('-13734.55427', '-827538', '0.01659688651155596480162'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-17.55380', '-357081.491', '0.00004915908676991605818068010699552052671360667080893307908810092876'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('9609', '-0.00006559', '-146500991.004726330233267266351577984448848909894801036743'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-1986505519.2', '-1', '1986505519.2'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('2', '-452173479694', '-4.4230811620209633602979431439702536337489266551571568427190599366243954435520300874941211e-12'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('-3', '-1', '3'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-0.000000000000000045', '-52784.4850', '8.52523236704876442386432301082411e-22'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-18291.6313', '-45', '406.480695555555555555555555555555555555555555555555555555555555555555555555556'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); - T('-4.207', '-213213497', '1.97313962727228286115e-8'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('1.641', '-1.6', '-1.025625'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('5790881110', '24095.79849', '240327.4210814501213070196122809624309735833950361028272360855056270849482855216224876389228137174715'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('0', '-0.000000000743462591', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('96.5', '-2791122983', '-3.457389752718037075e-8'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('0.000000020126701423', '0.0000000000045', '4472.60031622222222222222222222222222222222222222222222222'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('2.3', '10.69', '0.215154349859681945743685687558465855940131'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('1.66', '-0.0000000000000000391535668164', '-42397159057924873.1803926502001743692152496396540277885915094781888235162703821490195813464452711347436564423093'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); - T('5.5', '8', '0.6875'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-21.2', '-8', '2.65'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('0', '3', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-16289', '60495201941.0', '-2.6e-7'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('-13.34453', '1.6800901', '-7.94274664198068901185716170817267478690577368439942595935777491934'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('2.6', '-837.2419', '-0.003105434642'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('53.3', '1', '53.3'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('3315.66598', '-1', '-3315.66598'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('-0.00000000232', '-1.4301592', '1.7e-9'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('30.1580564592', '0.0000000000000042', '7180489633142857.14285714285714285714285714285714285714285714285714285714285714285714285714285714285714286'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('-3640656264', '0.000614500900', '-5924574339923.668134579'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('8', '206.213627', '0.0387947203897'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('86.96253', '3.52672', '24.65818947917611831957172670356591960802105072135014971'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('193776850', '-211004.2379', '-918.35525166956848121200697457650446555320109994814469079438332930279027348388626842835558043547712'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('9.1', '571.3', '0.015928583931384561526343427271136005601260283563801855417468930509364607036583231227026'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('-0.0000001420', '2864706.57', '-4.95687766024846307382888434e-14'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('183.9357', '-14954.475716', '0'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-538.13', '-221752.405754', '0.00242671549907319613376373579869'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('-0.020915', '-84.2', '0.000248396674584323040380047505938242280285035629453681710213776723'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-76.09', '0.0212', '-3589.150943396226415094339622641509434'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('5.5438330', '-1029137.3', '-0.000005386874035174898431919628216759804546973469915'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('6', '-22', '-0.2727272727272727272727272727272727272727272727272727272727272727272727272727272727272727'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('-24.077', '1951789.43472', '-0.000012335859376887159257283511523895190685203526266580589086262045958945040026054148206461197'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-173648245', '-0.00000077', '225517201298701.2987012987012987012987013'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('0.003909285793', '-5380.4971', '-7.26565913956165871737018499647551152847940388258921280712148325e-7'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('-99509.037', '1.016538634', '-97890.06897695538'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('197708682', '-118627.91', '-1666.6287216895248344171283132274689826365481782491'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); - T('16225844', '0.0000001233', '131596463909164.6390916463909164639091646390916463909164639091646390916463909164639'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('-2123.68659', '1893.270', '-1.12170297421920803688855789190131360027888256825492402034575100223422966613319811754266427926286'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('0', '-0.0000000000000000000121761598463', '0'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-0.10981880570', '-0.00000000000000101', '108731490792079.2079207920792079208'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('1', '-4', '-0.25'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('-18179003', '-147331727447', '0.00012338824308253344062211089157949279630698091288089992960061977328564784516043454247492639188'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('-4886160', '2', '-2443080'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); - T('-2955.153579', '-1.4', '2110.823985'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('2.5', '-0.000000000000054366301', '-45984368147466.9391246610653169138728051408169189218887634087888377765483806'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('-799.2', '-18.646', '42.861739783331545639815510028960634988737530837713182452000429046444277593'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('0', '-7730750.2', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('-17.8487823412', '7', '-2.54982604874285714285714285714285714285714285714285714285714285714'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('1843.40', '-5.5', '-335.16363636363636363636363636364'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('93758166.45', '-59380379', '-1.57894186647074111803833384088034'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); - T('0.000000000000000000028', '0.00000370007', '7.567424400078917425886537281727102460223725497085190280183888413e-15'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('1', '-0.00000000000000151725384', '-659085496201479.37803208987100009580466772784704239074458364857392616650091984608191863267915670590756258'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('1.18', '147.003', '0.00802704706706665850356795439548852744501812888172350224145085474446099739461099'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-1', '0.0001050274026', '-9521.324675699444556196'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('151068', '-0.0000000000007817', '-193255724702571318.9203019061020851989254189586798004349494691057951'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); - T('1165746.4', '54210098.36', '0.02150422956731193062531827510965615595315440781649967107715094726863727461423480804029295622181933'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('-344.953', '-15.8', '21.8324683544303797468354430379746835443037974683544303797468354430379746835443037'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('-247522439806', '2', '-123761219903'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('16.4131', '0.0000000006580318', '24942715534.41642182034363688806528803'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('24.14', '6.521', '3.701886'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('25194.6', '-436989173', '-0.000057654975355647999086695907680989615731280372019651846156838306838325259834297999872870992'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('346.01', '-0.0000000000000000011604272172', '-298174667804577239969.27293028679920556'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('-7253986.6', '0.000000000000000001040', '-6.97498711538461538461538461538461538461538461538461538461538461538461538461538461538461538461538462e+24'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('0.0000000000013848905844', '-0.0000000038192393595', '-0.000362609005103389095401366660533338065060857833359370520490154684'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('-315.3003', '-1.30', '242.5386923076923076923076923076923076923076923076923'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('-0.00000000000097624807', '23974440745.1', '-4.072036884528911513157680911262659441396e-23'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('-0.00000972384040183', '-6489.7', '1.4983497545079125383299690278e-9'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-340.6133115', '-0.000000000001381520', '246549678252938.79205512768545'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-2398.15210', '-14', '171.296578571428571429'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('-4506.7756', '4067', '-1.10813267764937300221293336611753134988935333169412343250553233341529382837472338332923530858126383'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('-0.0000000000002056', '8555298162', '-2.403189182969822016590051370789384301063474729660743e-23'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('-1890.634', '0.00000000000000129874859126', '-1455735169010480840.6735549493465249989787'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('-215', '4.3', '-50'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('-9045.91', '-93.909595', '96.325726887'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('0', '0.029309783', '0'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); - T('-0.000000000000000072', '-11.4', '6.315789473684210526315789473684210526315789473684210526315789473684210526e-18'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('-5', '7930.738', '-0.0006304583507865220109402176695283591514434091757917106831671907456784'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('2.52', '1.4', '1.8'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-2362.497', '7646.45', '-0.3089665138724506143373722446363998979918785841795866055489802457349488978545599591967514336718346'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('1.6', '131684.99', '0.000012150207855883954579789237938203890967376008457759688480820783'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-3', '-0.00000000031029503961', '9668217718.7576214892621950412493092576898122'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); - T('-0.0000000000000004155575', '-30.947327569', '1.3427896126845691837127043142521241072142153e-17'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-274.3080', '1', '-274.308'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); - T('2.7', '-8.06', '-0.334987593052109181141439205955334987593052109181141439205955334987593052109181141439205955334987593'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('1355257.02789', '-0.00000000000000037743272', '-3.5907247996146174078389388180229843347974706591415815777709998221669811774665429112770085222076135847e+21'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-1.8560488417', '-79.0', '1'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); - T('0', '-55610.94717', '0'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('-1', '0.00000000000000102635', '-974326496809080.7229502606323378964290933891947191503872947824816095873727286013543138305646'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-1048642006.2', '-0.0000000000000000000117799', '8.901960171138974015059550590412482279136495216427983259620200511e+28'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('-10.606', '-308371.8482', '0.000034393541634583'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-1563.76', '-1.0', '1563.76'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('3620.41', '-0.00839', '-431514.8986889153754469606674612634088200238379'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('-34.639108', '-421919490.29', '8.20988572397812942949457600417220109644629519729125192293329929449180744079249773972322457888e-8'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('-8', '67714.5152', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('-78539595.81', '-27567.48437', '2848.9939363299256311503623788941319348973299154898550505644124538593145487'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-12631.2256', '-10622.81721', '1.189065513441137334603538753727646980757941517850894094411326126922972818431844220729088493842209'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('1.4621430288', '583933', '0.00000250395683888391305166859896597726108988531218478832331791489'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-17.4045', '663.99681', '-0.02621172231234062705813300518717853478844273363301248390033681'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('889993.2', '-0.0000000090576728', '-98258484232285.36142307988868840570173830965'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-1429240.257', '-490.4', '2914.437718189233278955954323001631321370309951060358890701468189233278955954'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('49.299562', '-7459284.2', '-0.000006609154535230069394594189077820630564'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('-9308.8', '-0.000000090', '103431111111.2'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-3180', '112.741', '-28.20624262690592'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('-15.5696', '-7.6', '2.048631578947368421052'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); - T('-0.00007028933030', '0.000801688', '-0.0876766651116144934188861502230294079492'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('-172.12151767', '-0.000000000008024', '21450837197158.52442671984047856430707876370887337986041874376869391824526420737786640079760718'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-167.292', '-31.31291781', '5.34258739524344569535980907682777199484496076095'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-29.5080', '1.2916', '-22.85'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-66.6420', '-18434630213', '3.615044035600151476713540519121667721407198047385101621620469442285526e-9'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-161.612097', '-12126', '0.013327733547748639287481444829292429490351311232063334982681840672934191'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('2', '42059.8', '0.000047551343563212378565756375446388237699656203786037974502969581405522613'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('-538162', '422869947.0', '-0.00127264186972360085924952240694465809366206863596291462159641247808986529847'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('36', '3.274', '10.995723885155772755039706780696395846059865608'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-4.7855', '40.6', '-0.11786945812807881773399014778325123152709359605911330049261083743842364532019704433'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('353.14338096', '19.9', '17.74589854070351758793969849246231155778894472361809045226130653266331658291458'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('27145.87391', '-0.00000000000000013462451', '-201641394349364762776.1096400647994930492226118408898944181858'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); - T('1', '-571.2813795', '-0.001750450891424512112949062082987075548468843451950808769533858052168493617075786381376359'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); - T('89', '2.2', '40.4545454545454545454545454545454545454545454545454545454545454545454'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('-0.0000000000000000005676736475', '-99940906931', '5.68009301628537769948086484010175807156744441931224083180018186e-30'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('-2', '0.000000000000278785654264', '-7173970286527.2681655161538703269695'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('-404537.8', '-65334.7', '6.19177558020469979964705'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('16203134.062', '10', '1620313.4062'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('11129875.4', '2037.690514', '5462.0048155163566708344601932028231447123476180642415259337071242802085302341452623555767311189'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('-0.00000000000000010', '-41381717', '2.416526119493785141877994090965341046626943971416169126090152325e-24'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('0.000011380', '-939.665917947', '-1.2110687194937580380915434840947927246809264549787460761281687158465110383410384423797682e-8'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('-102081', '15.22005110', '-6707.0077051186773'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('49804.0200', '-7', '-7114.86'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('14.12', '0.224636', '62.8572446090564290674691500917039121066970565715201481507861607222350825335208960273509143681333357076'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('71855082', '-4598.44013', '-15625.96879999'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('8.656024', '4', '2.164006'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('-6', '-1812116344', '3.31104568416165667561574622606019605549123616314560429791035536292254753815078442888e-9'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('1515436', '127663', '11.87059680565238166109209402881022692557749700383039721767466'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('-5.5', '-188266070.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('-72175.13', '-8', '9021.89125'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('0.00000000718317730486', '0.0000000440347595048', '0.163125162613344106476974134238442341342990115832326674658114845878539402'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('3.1', '2.32', '1.33620689655172413793103448275862068965517241379'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); - T('2575460.6269', '0.0000000000000000066369929', '3.88046313398949093346174892e+23'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('-102052425223.2', '-5.0', '20410485044.64'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('-6.27', '4', '-1.5675'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-1.313021', '2081.6', '-0.000630774884704073789393'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('-3.366795', '1777.602', '-0.0018940094577'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('-57628.4', '-446564.474', '0.1290483308799884515667943617028523410933042559941747627689702875916636'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('-615.29440145', '-84.0341', '7.321960983100907845743573144711492120460622532995533955858395579'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('-5582198049', '-471953164.3', '11.8278644392171945863569666080105144026470509671291974003192418049012750310317179920219469116504'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('1023670813', '-46.346047', '-22087553.9'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); - T('-1.489', '-2651742.7', '5.61517525814250379571140141160754397476044715801423720334e-7'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); - T('-4.9', '-0.00000000000473', '1035940803382.663'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('16249004.8', '4798211827.3', '0.0033864709155917927600328225718'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('808.0', '8607051.1', '0.0000938765194504305894036112'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('-0.0000000000002115738944', '-43.9', '4.81945089749430523917995444191343963553530751708e-15'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('231.525', '-254.160', '-0.910941926346'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('0.004330', '33883.93892', '1.27789157282544174767e-7'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('-0.064056046', '0.00000000006905', '-927676263.577118030412744388124547429398986241853729181752'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('3.74', '2.304', '1.623263888888888888888888888888'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('-0.00000000000000008849245494', '4748.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('-0.00000000000001435592', '-493380', '2.90970854108395151809963922331671328388e-20'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('35.32695347', '-0.00000000000703246216', '-5023411810295.4712521339752221290302683974911000445397348572437963889449495'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-103.47554767', '364.6', '-0.28380567106418'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('-54.0643414821', '36523221', '-0.0000014802730975479955615086632145614977386578'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('-151.46', '-12485.2', '0.0121311632973440553615480729183353090058629417230000320379329125684810816006151283'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('1703565.3599', '-2025802.6', '-0.8409'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-2534.536', '-2.4', '1056.05666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('0.00096', '3.1', '0.00030967741935483870967741935483870967741935483870967741935'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('-2.15', '71252.588329', '-0.0000301743424403425365704233152672395461211624948435212'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('0.00008312', '0.0539653', '0.00154024901186503178894585965425931107582094419932808675204251620949017238855339'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('-430', '0.000000000000118546277487', '-3627275432981474.940271820633284192902916707002'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('-808820928', '-0.0017', '475777016470.588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('916.17962481', '-282479.3', '-0.0032433513705606039097378108767615892562747075626426431954483036456122626'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('0.0000012273818', '208020665.891', '5.900287813919081346067702e-15'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('-511248315191', '-180948.231', '2825384.433799742424671728346435174599745050837219845492714432781605916887908122185510618'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-1', '22081167', '0'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('-1.699677', '-85162.06', '0.000019958148029768185504202223384450775380492205097'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('-998641097.19', '-16.9172897211', '59030797.11074819395941497103146162421254509397656638'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('212.16740294', '1572.3589', '0.13493573441788639985438439023050017397427521159450301073120138156752888923769248'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('-211336.5909', '9.62149', '-21965.058520042114059256934217049542222670293270584909405923614741583684023992126'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('1.36768', '-4526', '-0.000302182942996022978347327'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-4.6661', '8.66', '-1'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('0.0000000352', '2181349.67771', '1.6136798404991751871451949779e-14'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('0', '2.2', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('-5', '0.000000000043501390', '-114938855976.7860291360804792674440977633'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('-236277460749', '681.9', '-346498695.92168939727232732072151341838979322481302243730752309722833260008798944126704795'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('311', '2.40', '129.583333333333333333333333333333333333333333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('-100.925767', '-500.2', '0.201770825669732107157137145141943222710915633746501399440223910435825669732107157137145142'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('-273471796', '-308.40', '886743.82619974059662775616083009079118028534370946822308690012970168612191958495460441'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); - T('-206.253', '37617.8137197', '-0.005482854520383457743277778061233467488667495061608281272505660236'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('36648083.4', '-0.6364', '-57586554.6825895663104965430546825895663104965430546825895663104965430546825895663105'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('0', '2.50230', '0'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('-159', '0.0000000000000347', '-4582132564841498.5590778097982708933717579250720461095100864553314121037463976945244956772334293948127'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('1', '4.076946653', '0.2452816004507086691085040302586466048615230678614425323460321471123257'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('6.3', '5.7303908215', '1.0994014538001262921365301506250850747492947414494248906788983485042041996785995305782827'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('-0.00000000042', '-5', '0'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-0.000000000000000000922546501', '319.02', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('656909.320', '13246.7992', '49.59004134372324448007032521486398012283601309514829816398213'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('2', '-0.0079292', '-252.23225546082833072693336023810724915502194420623'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('17098545635', '-5046745176', '-3.38803427530140071411443897321119666534159877304651135411319606520192570150880944736647824756'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('29', '1969.07179352', '0.0147277514692129710661135122185059778805012273628863880491832723208506691523957308755955'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('0', '-63049974183', '0'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('-8.136797', '-268.885', '0.030261252952005504211837774513267753872473362218048608141026833032709150752180300128307640813'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('-218.6', '-11670862', '0.000018730407402640867486908850434526601377001972947670874696316347498582366923711376246'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('-16720419', '-24.4844', '682900.9083334'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('-5', '-1', '5'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('189666', '1148004.40', '0.165213652491227385539637304526010527485783155534943942723564474143'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('-4.624690795', '37651159', '-1.2282997171481494102213427215e-7'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('-903888809', '1.166952', '-774572398.00780152054240448621708519287854170522866407530044081'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('926476.5835', '0.00563907060931', '164295971.3911729543425435735936'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('-1.15128', '-0.00000000026989', '4265737893.21575456667531216421505057616065804587053984956834265811997480455000185260661751083774871243840083'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('0.000004894020116', '-1.1790', '-0.00000415099246480067854113655640373197625106022052586938083121289228159457167090754877014418999'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('7748609', '-123.269089', '-62859.302870324611549615654253760243170126778498379265218711886481127478763147182826994040655236772294148'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('10712886249.5', '-0.000000000000000000275092754', '-3.894281508229038995334642656563756673867171361409250350519956e+28'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('0', '-396.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('0.0000008557', '-6.2', '-1.3801612903225806451612903225806451612903225806451612903225806451612903225806451612903226e-7'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('0.000000000000000944', '7600017284', '1.2421024383554546663580982456092003803395560804095666054014200318231e-25'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('-107898.743', '-2441.7', '44.190008191'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('0', '13879311.683', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('-92630.816', '-131044.0', '0.7068680443209914227282439485974176612435517841'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-73.4429', '16619210', '-0.00000441915710794917447941268'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('26097.0', '-0.00001000', '-2609700000'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('10397870028', '-1.9683', '-5282665258'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('-0.000011017', '6', '-0.00000183616666666666666'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-0.00009577512', '0.0000000000000000006721', '-142501294450230.62044338640083320934384764171998215'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('0.00000000001915129223', '0.000000000000000368382', '51987.589594497016683768479458822635199331129099684566564055789913730855'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('36.0', '-2.9', '-12.4137931034482758620689655'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('-6264.93', '-30.685', '204.16913801531693009613817826299494867198957145184943783'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('-1354.9273761', '-1', '1354.9273761'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('0.0000000005858', '-3.244', '-1.80579531442663378545006165228113440197287299630086313193588162762022195e-10'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-0.0000000000000000431435', '0.000000033279193', '-1.296411e-9'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('-3', '64.431247157', '-0.04656125920843782992862548044748846114594540751456464935737391596490900127246159'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('5.4794', '-384.98124', '-0.0142329013226722'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('0', '-8.386', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('4830.7056843', '-21348.245121', '-0.2262811606724571297843306227793429691152364392040840292167263615709914444915746103'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('2', '1.7', '1.176470588235294117647058823529411764705882352941177'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); - T('0.00000000000023428329582', '1', '2.3428329582e-13'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('5.711', '47494.99695', '0.00012024424395715220695'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('3.34147426764', '0.000000000000361719', '9237762649017.60759'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); - T('-19.9', '0.013696', '-1452.9789719626168224299065420560747663551401869158878504672897197'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('-1483166687.75', '-1.819', '815374759.6206706981858163826278174821330401319406267179769103903243540406816932380428807036833424'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-5648.6465', '-2803396092', '0.000002014929861720018406874486004669796051067620593658157956795781964013667462870958443213810402'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-2032', '-75185.56', '0.027026466252'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('45.49507152', '-17965.8272947', '-0.0025323115253045570066297003831901140467329'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('3217.36', '528742465142', '6.0849283197557059817291008593275512266174569e-9'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-0.00477', '-103', '0.0000463106796116504854368932038834951456310679611650485436893203883495146'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('-1.8', '-1.57443061', '1.1432704550885'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('-35.079', '-3475909.119', '0.000010092036011025523017996950109557798251514066700200167'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('28633605453', '-4499.466765', '-6363777.520423578459302165775637193755336028134880557'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('-0.00001962946', '1.17', '-0.0000167773162393162393162393162393162393162394'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('20.9', '-81191', '-0.000257417694079393036173960167998916136'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('13859.720', '0.002234750963', '6201908.055738915907114434030115238393120227061291571753536816800109820559008'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); - T('66862279', '8', '8357784.875'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('-0.33207744', '86.5469', '-0.003836965159930627209062369651599306272090623696515993062720906236965159930627'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('-0.00000000072', '0.011', '-6.545454545454545454545454545454545454545454545455e-8'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('100.7246', '2', '50.3623'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-290.44553', '0.00000000000000000288851173', '-100551964869465840805.15400918936202485146217495194315863138281249'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('5', '3', '1.6667'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('-7', '51.074', '-0.137056036339429063711477464071739045306809727062693346908407408857736'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('-0.000125563936', '14842', '-8.46004150384045276916857566365718905807842608812828459776310470287023312e-9'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('-0.00000000000215831568', '1', '-2.15831568e-12'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('83.467991', '-160369', '-0.0005204745992055821262214018918868359845107'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-653.190854', '-1', '653.190854'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('0.0000000000000018012391', '-347451712', '-5.184142249959614531989987719502156316904260929357573578454550829786e-24'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('-0.0000000000899441471', '79.7', '-1'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('18523658.1', '40.5', '457374.27407407407407407407407407407407407407407407407407407407407407407407407407407407407407407407'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('-9.141003204', '-1097.67920', '0.00832757257676013173976513356543514717232502902487356961851878035039745674'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('26.8', '4890416541', '5.480105789622553135397633606196328e-9'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('-1.5', '-0.00324588908', '462.1230002104692992158561376348695193244249738811'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('-2544699.37', '-229680', '11.0793250174155346569139672587948450017415534656913967258794845001741553465691396725879484500174155'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-47.19', '-0.00000000000000161461381', '29226803157344479.7923536'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('-13.76945', '104171642.7', '-1.32180405752591631157986913457783074779140446443204643829620630528849287311e-7'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('225855509.5', '4', '56463877.375'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('0.0000000000000120918545', '34.696', '3.4850860329721005303204980401198985473829836292367996310813926677427e-16'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('5387.3366', '52.3632', '102.884022'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('3.8', '-26369.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('8', '-1', '-8'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('0', '-6.402', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('0', '-3', '0'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('-9916091.06', '95.15076964', '-104214.51237354384472638302455668922952917903'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('0.000000000000000000106526', '-0.00000000436617', '-2.439804222006930559277352920293987636761738548888385e-11'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('16.0', '-31.1', '-0.514469453376205787781350482315112540192926045'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('-0.001435007', '-0.000000364478', '3937.156700815961457207293718688096400880162863053462760440959399469926854295732527066'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('-27334994', '1.8', '-15186107.77777777777777777777777'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('0.000000000000000000449195', '-0.000000056604', '-7.935746590346971945445551551127128824e-12'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('-1.01546', '-244.337', '0.004155981288138922881102739249479202904185612494219049918759745760977666092323'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('-24376.6', '1', '-24376.6'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('-0.00015178729927', '-17287059', '8.7804003717462872082521382034966155897e-12'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('6.847', '-331569.11', '-0.000020650295197884989949757382405134181528550715'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('12', '1', '12'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-41177.8', '0.000000000000001601174', '-25717254964170040232.9790516208731843010191272154056960705082645608784554333257971963072095849670304414136127616361495'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('9.7', '-96483.25', '-0.0001005355851922483954468780850562144206377790963716500014251178313334179766954367727040703956387'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('-1935', '-0.000000000879301578', '2200610175636.46405738623614752571273106483609654115735022597673536757828950467321918078031698926394966619747'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('61.519', '-7', '-8.788428571428571428571428571428572'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('0', '7467389320.2', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('-9417.3', '0.0002750016', '-34244528.0318369056761851567409062347273615862598617608043007749773092229281575089017663897'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-2', '5.2', '-0.38461538461538461538461538461538461538461538461538461538461538461538461538461538461538462'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('228504', '-16257', '-14.05572983945377375899612474626314818232146152426646982838162022513378852'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('0', '4.8', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-7', '-1.846', '3.79198266522210184182015167930660889'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('89.4', '-0.0000000000000115477', '-7741801397680923.473938533214406331996847857149042666505018315335521359231708478744685088805563012548'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-0.0000374074', '-9751265', '3.836158693256721051063631231435100984333827457258109588858471182969594201368e-12'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('0.000000021799764755', '-1355736924.87', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('29.054', '-12.2428480', '-2.37314062871645551753970971460235396208463912971883666284184856334'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('2', '662578.45207', '0.00000301851'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('45.3', '6.868840', '6.595000029116997921046348437290721577442479370606972938662132'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('-204303.3533', '1', '-204303.3533'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('1.04', '-1', '-1.04'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('10911.805832', '-0.00000000014725661492', '-74100615703600.474968734260240185072970846205025612577078788658603235533346049294068615820929261926021734'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('109994.8', '-33.89433', '-3245.22715156192790947630473887520420082'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('0', '-0.0000000000000001972885', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('0.0000000001829998084', '0.0000000000000000927080191434', '1973937.2072758604029349566645268001499078182061383370648849962471476338865469'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-122741857.9', '-9.19018', '13355762.117825766198268151439906508904069343581953781101131860311767560591849'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); - T('-302441205691', '-0.00000000003062798189', '9.87466973100655702392411203035356111084601e+21'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('73905087.2', '-0.00000000212', '-34860890188679245.283018867924528301886792452830188679245283018867925'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('930.90', '-3.49755383', '-266.15744753240867203464885628365010753815903385252543775716526999099825148366622851949'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); - T('0', '697494057', '0'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('-2', '4722857.909', '-4.2347240559339046589979e-7'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-93.2', '0.000000000000000000012', '-7.766666666666666666666666666666666666666666666666666666666666666666666666666666e+21'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('0.00779751', '-0.000000000000230916455685', '-33767667084.91669875510630609997966719831173559786573510087001576351'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('-79577437', '0.00000000000000000921603', '-8.6346764279196139769510298903106869226771180215342180960782462730698576285016433323242220348675080267750864526265648e+24'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('-9', '-4.7', '1.9148936170212765957446808510638297872340425531914893617021276595744680851063829787'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('0', '-93.161757', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('0.00000000000000955711816', '-0.000002757595', '-3.46574393991866100714571936778243360609516625900467617616074876840145126459832e-9'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-4848.3', '3', '-1616.1'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('-6.5', '-0.56', '11.60714285714285714285714286'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('6.76843', '-0.0000000000000000000149', '-454257046979865771812.0805369127'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('791937322.74', '-1.48513147', '-533243917.280939444371211122473891149852208033811309647892655'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); - T('-7.681', '-318681.61501', '0.00002410242586400528860555682546652222703633147375'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-60629466.21', '-6', '10104911.035'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('-5', '378.6', '-0.013206550449022715266772319070258'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('169365429578', '0.000000000000003750', '4.5164114554133333333333333333333333333333333333333e+25'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('-72.26816939', '-99300810870', '7.277701839173309864433335618742666970127229938903e-10'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('-615.3', '-237.99', '2.5854027480146224631287028866759107525526282616916677171309718895751922349678557922601789991'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('10000.265176', '6', '1666.7108627'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('15.089279', '-3526', '-0.0042794325014180374'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('11.93', '-476103.58589', '-0.000025057572245961'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('0.00000000000000057027', '11902546551', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-503944526.66', '46.8', '-10768045.441452991453'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('31910346.2914', '-15.345731', '-2079428.2326074919467831151217'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('0', '-0.0000000000007322481773', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); - T('-4.69', '-4', '1.1725'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('-16.9850', '28555184.76', '-5.948131711545612846526719514036161327e-7'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('-51521013', '-35.308', '1459188.08768551036592273705675767531437634530418035572674747932479891242777840715985045881953098448'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('39364.463651', '-2', '-19682.2318255'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('0.00000029202905324', '-2189.5379715', '-1.333747379772262606773430875848137808831e-10'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('-4.5507392', '-241.78', '0.01882181818181818181818181818181818181818181818181818181818181818181818181818181'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('16.2836', '-57', '-0.285677192982456140350877192982456140350877192982456140350877192982456141'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('3.1', '0.00100', '3100'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('36.9', '0.000000000000000000146420913', '252013180658148197723.640747957909537143782187'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('0', '-1.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('-178325.79522', '-7.7356', '23052.61327111019184032266404674491959253322302083871968560939035110398676250065'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('-0.0000000000468001021084', '59.857', '-7.818651470738593648194864426884073709006465409225320346826603404781395659655e-13'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('0.00000000000059958', '0.00000000000000988455', '60.65830007435846851905246065830007435846851905246065830007'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('-0.00000243467', '-6', '4.057783333333333333333333333333333333333333333333333333333333334e-7'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('0.0042', '3', '0.0014'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('-1960.96871613', '939803.491', '-0.0020866'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('102512.0', '-0.000000000000000000016', '-6.407e+24'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); - T('-270.92449', '-1773880.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('205674.52799', '1.33', '154642.5022481203007518796992481203007518796992481203007518796992481203007518796992481203'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('0.0000441990616', '6.96', '0.0000063504398851'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('0', '-13844.13', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('-344.0', '-1375921.3', '0.00025001429950971759794691745814240974392939479896124872839747447765'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('7', '6055.93', '0.00115589182834015584724394106272694697593928596'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('0.0000000086955', '-1.409328', '-6.1699618542e-9'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('-112561144099', '12726026.1', '-8844.9562506397814161327234744552346941988434237141789297446121063668099816328366637563316014258370882958'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('-880056994.8', '62', '-14194467.658064516129032258064516129032258064516129032'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('2.4', '14.5', '0.165517241379310344828'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); - T('2.2053382305', '15285423607.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('4.2', '-13879644.5293', '-3.0260140964948912756879101350430288789629484996093098033920986060278064645953483e-7'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('0', '-3.067', '0'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); - T('-0.000198747592', '11443941', '-1.7367058428560580660106514005970495653552e-11'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-7866052296', '5559461.4595', '-1414.8946536104681130041027492799727717943360625252302822'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('-2303.7', '-191766.627641', '0.0120130391212421'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('0.000000000097', '40.3996', '2.4010138715e-12'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('2775578.4', '450.4', '6162.47424511545294'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('-0.0000000004032838', '0.000000000000214', '-1884.50373831775700934579439252336448598130841121495327102803738317757009345794392523364485981308'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('-0.0007736003596', '6.140', '-0.000125'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('-8', '718737.77', '-0.0000111306241774381774871800601212316976190078336915562403239223117493'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('20.597', '211523', '0.0000973747535728975099634555107482401440978049668357578135711010150196432539251050713162'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-0.0000000001384248666', '43747263.81', '-3.164194844303795099454015430456700830177017646946637689613255837588348591166438e-18'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('3', '10761.278', '0.0002787772976406705597606529633376258842118937917968479208510364661148982490741342'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-58712', '-6076444.1169', '0.00966222989473536254188076428485783'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('0', '2222570', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('-753067', '29', '-25967.8275862068965517241379310344827586206896551725'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('2068746.523', '26663971.323', '0.07758583663100199022067482591'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('-170411.0', '-0.000000000000000923174', '184592503688362107251.7206940403434238832549443550186638705162840374620602399980935338300255423137999987'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('0.00000038326528', '5.184', '7.393234567902e-8'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('-0.00000000000001092', '-0.00000000000000000227083393', '4808.806'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); - T('-0.00000000000029', '621.83', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('2950.6', '-2657.941', '-1.110107410209632192738665004226956128823025040811665872192046399826030750870692765565526097080409235'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('0.47939552', '-3881.69149183', '-0.001'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('0', '1417.60582117', '0'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-0.000000186729799', '-111357.44676', '1.676850578322293423244072949863671964096673942096e-12'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('-26651082640.7', '-4.9', '5438996457.285714285714285714285714285714'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); - T('0.0000000000000018629', '-237', '-7.860337552742616033755274261603375527426160337e-18'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-0.0000000017', '0.00000000000177', '-960.451977401129'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('-11.7760', '-36788.11', '0.00032010342472065023182762039147974712481831765752576036116016832612493547507605038693209'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('3.2055791071', '-345', '-0.009291533643768115942028985507246376811594202898550724637681'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('0.00000000000000000024877145', '-397.8', '-6.253681498240322e-22'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('-4.035', '-17306', '0.00023315613082168034'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('0.24', '5', '0.048'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('7.3', '0.000000000000010341641502', '705884070588622.8853342822055213802943137450095685979813613539047236642452315400325506274738781793056976149665026'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('-0.0000000000000000008919436032', '305.8173', '-2.917e-21'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('-0.00000000000289', '0.1070651024', '-2.69929223922359971515798036541176464610563899297218623871601e-11'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('0.00000000000000175906577', '-981337', '-1.79251957e-21'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('-2812463.8', '-299.652460965', '9385.7523844214359162388132599663797325'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-473960479', '765598.68', '-619.0717035'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('3674759.55', '50.2', '73202.381474103585657370517928286852589641434262948207171314741'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('-0.0000219', '2314833250.79', '-1e-14'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('8.7298024', '-466.52', '-0.018712600531595644345365686358569836234245'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('82.70455184', '6362544', '0.0000129986608878461194138696722568834101579493989'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('-10.20008', '-5', '2.040016'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('14643850.501', '2.4', '6101604.3754166666666666'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('0.00000000000000000786002', '0.0000000053443', '0'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('399.150', '0.009672', '41268.6104219'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('3.552', '689368375511', '5.152542713272929982489453159129746031190798066507624e-12'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); - T('0.000000000008575422', '5', '1.7150844e-12'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('0', '-80802828.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('37009.867', '-2368.6', '-15.6252077176391117115595710546314278476737313180781896478932702862450392637000759943'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-44.3025265', '-848426.1538', '0.000052217304124318002607052588010400393199194185425640281576147705973'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('0.0000000000000092', '4.6', '2e-15'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('32161496195.4', '-1134104527', '-28.3584937981646906872808911730937830918295946454678070427982693344809'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('24.54073', '6', '4.09012166666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('0.0000000000001885095', '617379873', '3.05337942236e-22'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('-1.683046172', '-94685.625215', '0.00001777509699258313124716266890417659687626323078718026501653490718834030988871682870474'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-30785853314', '1.526001', '-20174202581.7807458841770090583164755462152383910626533010135642112947501345018777838284509643178477602570378'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('-0.0000000000000253748445', '3', '-8.4582815e-15'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('0', '-2631.4486', '0'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('0', '650.53', '0'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); - T('1.7034706', '-183997774.362', '-9.258104376026669843725095916495e-9'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('-4106.133278', '2', '-2053.066639'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('-14.82528089', '1236.4941006', '-0.0119897708228499735714792459237067548043908556598575655185782615'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('0', '-24146874.220', '0'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('-0.0000000001425', '-58741317.18', '2.425890443745749182398568747926738267941576995464983204518601841812e-18'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('5891398', '0.009468', '622243134.76975073933248838191803971271651880016899028'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('6173', '29807783.1', '0.00020709356275475582080439923759'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('-0.00000003589532', '8.8', '-4.07901363636363636363636363636363636363636363636363636363637e-9'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('0', '-0.0000000000000006638389', '0'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('901.626592', '8167935.7', '1'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('9358.84', '2594.09', '3.60775454976504284739542575623821841185155488051686718656638744222444094075379035'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('-2', '-1.4', '1.4285715'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('3529307', '233817.80047', '15.09426139885713210259076901665458558831853166649'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); - T('1.31', '0.0000000000835735480', '15674816151.158258830892281849754661606564794879834466283518320892634593'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('172119', '1313.7', '131.018497373829641470655400776432975'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-2.0', '-0.0000000000000000000158', '126582278481012658227.848101265822'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-4.2', '-1408.340483', '0.002982233380846441236611104361756815308418567983463981699658348882384573192'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('702263', '-19', '-36961.21052631578947368421052631578947368421052631578947368421052631578947368421'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('0', '-16.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('1.39', '2479563.189', '5.60582608326502301530981471e-7'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('130384.6', '7738.439', '16.8489536455608166'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-77.37646245', '-15575006446', '4.96798911244572591812845789688349257e-9'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); - T('-0.000000000000105997475333', '1566533913.92', '-6.7663696515677920855567403738e-23'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('-0.078', '-9.3', '0'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('1459231246.57', '-0.00000000000000000248564', '-5.870645976770570154970148533174554641862860269387361001593151059686841215944384544825477543007032394071546965771390869152412e+26'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('-6980419.8336', '40', '-174510.49584'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('-817230113.72', '2.9678', '-275365628.991'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('-15.129', '-0.00000000000000000012903362315', '117248509579652146658.3339909882'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('-88.78607', '-8.02', '11.07058229426433915211970074812967581047381546134663341646'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('0.0007810', '160509488837', '4.865755947881176168373644971512582227188e-15'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('439.43430', '4', '109.858575'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('6', '-2.062276', '-2.90940688831174876689638050387048096375072977'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('7.22', '67307.673', '0.00010726860219934'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('2.7', '18020.888185', '0.0001498261335558028712112560061'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-1.8', '61', '-0.02950819672131147540983606557377049180327868852459016393442622950819672131147540983606557'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('358020', '99441.0', '3.6003258213412978550095031224545207711105077382568558240564756991582948683138745587836003258213412978'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('0', '-1.22', '0'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('0', '490.85100', '0'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); - T('8206.27628159', '4114304', '0.0019945721758990098932893631583859628'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('-0.182715262', '853.02', '-0.000214198098520550514642095144310801622470750978875055685'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); - T('-8363.1', '0.00000000000000091', '-9190219780219780219.7802197802197802197802197802197802197802197802197802197'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('1169.5', '-15463.00667', '-0.07563212155039444214376711511823980866'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('908786', '-200681.3', '-4.528503652308411'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('-0.0000000000000035169', '15994.995', '-2e-19'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('0.00000000026', '-8587343224', '-3.027711752260573206e-20'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('-6703488.435', '11.1', '-603917.8770270270270270270270270270271'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('-170483104.5', '-10', '17048310.45'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-13213.36', '0.000000000000002009', '-6577083125933300149.3'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('8.76590183928', '-0.000000000000000131359888', '-66731952750142417.90461940710547'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('0.0000063876', '-1929.4276714', '-3.31061904765009062676e-9'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('-0.000022982731', '-1326798.381', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-0.000000000000000000899452', '-0.00000000000000010457', '0.008601434445825762647030697'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-128.5', '93543.2', '-0.0013736968587775487689110485850387842194836182640747804223075541567960044129343447733239829298'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('38279', '72312.99', '0.52935164207703207957519112402902991564862689262330322670933673189284525505030285707'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-2.28', '2.6', '-0.87692307692308'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('1.55', '-184.292', '-0.0084106'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('1.0', '-1923', '-0.000520020800832033281331253250130005200208008320333'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-0.117024182', '-21025', '0.00000556595395957193816884661117717003567182'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-478713.598', '12517', '-38.24507453862746664536230726212351202364783893904290165375089877766'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('-13.57330521', '-726098987.961', '1.869346388722558733493483109779855307113324826e-8'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('90.9813', '161525.59', '0'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('-6', '40925001', '-1.4660964821967872401518084263455e-7'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('0.00000000000000000041', '-4.5', '-9.111111111e-20'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('-3', '-0.0000000006696', '4480286738.35125448028673835125448028673835125448028673835125448028673835125448028673835125448028'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('10.2', '-0.00000000675155509', '-1510763055.92286887493944746883491696'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-1033130.9', '-8332.83', '123.983196585073'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-4.03', '3.53', '-1.141643059490084985835694050991501416430594900849858356940509915014164305949008'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('100.9', '0.0000000000000000100', '10090000000000000000'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('-16.7', '-495.59', '0.0336972093867915010391654391735103613874371960693315038640811962'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('-96.6', '-495003.5298', '0.0001951501235'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('2.1', '-129939161', '-1.6161409569206007109742689503743986772394197619915369470486268569950209236767351453e-8'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('0.000000013437161974', '103.31', '1.30066421198e-10'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-0.007308316', '2784', '-0.00000262511350574712643678160919540229885057471264367816091954022989'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('1', '-0.000000000000017670059', '-56592906679032.5940620798153531915201867747018'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('0.00000000000000089362492', '64229.8', '0'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('0.0000000001502918671', '0.00000000000482694', '31.136054539729103738600438372965066895382996266785996925588468057'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('-17086.184193', '-5.4439535869', '3138.5616942280988938605383244950971020189'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('0.0254426530', '-458197.07198', '-5.5527751170593589e-8'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('85008.0462', '-84385.98078', '-1.0073716678321458030223299373021'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('0.000000000000000001936', '1', '1.936e-18'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('-0.0000000010049430843', '0.000000000871553', '-1.153049'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('248.283056', '-8249.702', '-0.0300960029828956245934701641344135824542510747660945813557871544935804953924396299405723988575587'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('48518.8', '2042', '23.76043095'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('2192632.42', '-3.847', '-569959.03821159344944112295295035092279698466337405770730439303353262282297894463'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('-45908816104', '12341.507108', '-3719871.139096215476570951062162609905454668559592908350979009135129689867371423467481423906497498'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-2.17011', '-87.7089375', '0.0247421763603053565664274521624435366122181106115896113779738809400125272296224'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('192.7', '-103777225', '-0.000001856862139067603705919097374207105653480327692323628811620276028772209'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('-5', '-6389', '0.000782595085302864298012208483330724683049'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('168756033.40', '312791485989', '0.001'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-0.000000000000000999', '27.8637832', '-3.58529921378371907516133702906502660414038823e-17'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('-111914.7041', '0.000000831', '-134674734175.691937424789410348977135980746089049338146811070998796630565583634175691937424789410348977135'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('-8305.7958', '37623.0', '-0.220763782792440794'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('575781866', '39425376.5337', '14.60434665748426061683343511539359013125051608769944423598665'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('8.5', '104.7', '0.0811843361986628462273161413562559694364851957975167144221585482330468004'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('0.00000143', '-1135.09', '-1.25981199728655877507510417676131408082178505669153987789514487837e-9'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('0.000000000000000000010446', '0.0000000000000000704440', '0.0001482880018170461643'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); - T('-4.5', '-96852.6', '0.0000464623561990075640715891984314308547215046369431486609549'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-1227.44993882', '1.94852', '-629.9396151027446472194280787469464003448771375197585860037361689897973846817071418307228050007184940364'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('81549.77863', '-344.6631181', '-236.6072096125449'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('-1', '4.1', '-0.243902439024390243902439024390243902439024390243902439024390243902'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('14.132', '1773988', '0.000007966232015098185557061265352415010699057716286'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-1.3227014', '31.6', '-0.041857639240506'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('1.1978', '0.000000000009367527', '127867258882.73393821015941560670174743024493017207209544205210190480369045106568681360619510357429'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('-1023459.1258', '-6', '170576.520966666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('-3.53665238783', '140942000.890', '-2.509296281801920713458660761318783062722843965437335008448665709871347e-8'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-4', '0.00000000059523', '-6720091393.24294810409421568133326613241940090385229239117652'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('0.0004846', '-92789.337', '-5.223e-9'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('-5296416.381', '3271.11', '-1619.149579500536515127892366812'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('9', '113372725.7', '7.93841723785952867851002015734371639968430255355499493e-8'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-188.1', '-65.559116130', '2.869166198443072267820093931458'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('264105.994294', '4.228', '62465.9399938505203405865657521286660359508041627246925260170293282876064333017975402081362'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('-1632935027.5', '5', '-326587005.5'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-0.000000000000000000159617451', '-14742180', '0'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('9420.387558', '-2.7899', '-3376.604020932649915767590236209183124843184343524857521774974013'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('-12.7', '-0.0034855', '3643.666618849519437670348587003299384'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('-9951.6613', '0.00000248255061', '-4008643876.1463960648117461742300593017920387935213'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-4029471522.6', '-0.0000194', '207704717659793.8144329896907216494845360824742268041237113402061855670103092783505154639175257731958762886597'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('1', '-66871334.88', '-1.49540905949386365831134729099339313204e-8'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('909516', '-1.17640904', '-773129.04701922385771534023573977296196227801853681777215856824765644439454495'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('13196.6012', '-3.68', '-3586'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('2', '-0.0000000000000000021855345112', '-915107947163858997.31383'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('-1872907', '7', '-267558.14285714285715'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('-2', '-88.0', '0.022727272727272727272727272727272727272727272727272727272727273'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('9.7', '-267.844331', '-0.036215065533718538922520633822935009216230154223424650342888907363135492309523624003824819'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('-2749.160035', '-0.000000001363677066', '2015990518241.94864035353660483133768563355746865658588409523050525512027640127519751072795412'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); - T('-133043843', '-2161.2339', '61559.206062795887108748386743332130779551440498874277328335447634797880969755286551816534064175099234'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('1.5', '0.00000000000361964685787', '414405067372.423947871882454568264051104256736485079886692'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-1199.8951', '-289851.54', '0.004139688545384302598495767867923006377678724770618779531067'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('-932.59698', '-4.168240', '223.738791432355142698117190948697771721398000115156516899218854960366965433852177417807036063183'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('76943694944091384167086915802330', '-3170514344.13111437411632629436402363000882134793762203080559731', '-2.426852131627177782103584719976324063198598249615667667537013034965147477765909459742787670213e+22'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('-100106813802380591049673190434.29485007726830983381860757169221843019100', '-78094528555018220969404221099599857932226474465981358723152985003774326996070488958663.442862362122064587341729645', '0'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('2765444538823009380150927888.62817583856680697300833760', '-373748288687906995883.519458069547968158219485', '-7399216.591817636693983101292832142580414091203843524104084009183630806757'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('0.0000172463179744500990608615554398722487', '128351898662310623329971900021427807014001736937674026359996931286121280901491747367836548202.528608641660908590739943216651336106395324584507151', '1e-12'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('1618182994977486168089504.303412002229357379185662538096814339710756228978272205292369429799229740090454', '-1', '-1.618182994977486168089504303412002229357379185662538096814339710756228978272205292369429799229740090454e+24'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('0.0000000000000001522032939763705088667535980533375348092536476465289413241', '1496543943364674787461682993652979296106902960456836.034677750383049103427390868675285804492754316540692799996989618573', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('289251150440844894569227868596141248263971687018908.7582', '969818345137713519457348076418917350.37856042901482781836418515983', '298252917044760.00160068480697641721380359737601457865036690355925562692260445875'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('-2213024.10057343', '-0.00000000000890742736591171593701106620816057819688709922018889419831412741863646672006726805124790913781880723722136288', '248447055436293962.98257200988127959945635068362403073'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('-15000278752002677229489373453133974451779691958658411412581239029394262255826590548325824084926.364426980013744537479550093154967968151133218', '19930817564922229.5291352024629512480065750746678111999803194282693935048894', '-7.5261733258764132558180496549931107141952632304821423841286112570949320236190648553080458511753045259342783429114610461572193346219434419429e+77'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('2096800095471614267703827121104.6754238308397', '2.973744016791308902667556831639027', '7.05104435227776125703251584926381124242257216881232643916317132478678635644883e+29'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-576734896916364067204534325671000853418944286761094369396994587390.20170231389237709680027328398585710017952537281946222360187352', '482009602275141687123306632546133845144058354871522511369929211612892', '-0.001196521592503775676990724935172199634474240903524148649627067119770277994733693557'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('-75918192392719163505045309838518111893013980009840517848891803953427.331330077457915525677681132397253540608104431728701657413', '-60979444819.8751292844264416314741570622847181849330960883', '1.24498005216300401626112591056125561055479097283160657526274169782872486314816546784862028914263938033873610945100941389665795564937849448482476657e+57'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('294.95', '0.00000000019352898985320522149531968704', '1524061073349.9110789035044962295678018844264382'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('-0.28285407443755989683129372477710347255628834145187398883521459316293173768845235732814560306340433698915', '0.13871292707912833655802036597064044560547677333278215519941645627237614443', '-2.0391327642895655512488938334656344761249691410161901311361129106689190000978968816312793966'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('242992584878322186712025587579252842.56039954525291656310959074824986645465943491015032457106137684405819694', '87473659275731441930066028841855978813198.22321903332667067910515', '0.00000277789436145994'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('2.269347201823999184', '-7.241321231807619199976531960675934417862803419339662663862610722343621731', '-0.3133885556'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('3417885238696572270129533944698388854525514341906650023562052290280297627647749736866679.81692498536029901538050463542979536148441', '3298004280850374294213354990796411195649603604998968859911.9799801664027118', '1.0363495458578626394360904317930653776117e+30'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('-11601794306', '-81767908348879851406690153959787322235864066.27197447304998889596792931520034109538966807267862795165181056608451', '1.4188689108321717760383402370309730605641516497841200518e-34'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('-0.00000000006616495227868586', '235258142311710116186006815624097650601046483181302591778203830815439582160063948086684271928090450039326479.93618472866635377602947742', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('0.0000000000000007067996790061306734918199720686295541286585430436464239709795110073573528404300274616929677689236', '-971695691184134545850288955136758986951477249164414605379951990283064015944899942693392909033092608070796379272686752559239639568070', '0'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('-4496428489.8107752661458715428395066220930608392696841546473410', '10562602494277713859668354432350036023079132.087319618829217004735542670195303530490537681062066586195417639', '-4.2569324105936144046817190246976033493852315745693034949779e-34'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('35920122558051508748063125686822913942860176999279879579817.4020267319839180494015750914006655283919319821515593314026309161089242741254532628', '-3950.5538090611987650712194288974', '-9.092427111273163634904721539148569267471666846523573342584757998200405808139310245590083081928179492591002169976154857060760636871413767504456e+54'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('-243088505742038547731796747307.96086361844657478672072692415024978317837834142', '-8232283011028479.1700368570722455752415600074197665455778628677608248', '29528686685866.1250710377075976261763077799873288950475673'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('-1162784776.475576897828', '295.56', '-3934175.0455933715584923534984436325'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('23003353363599076353472193017303616218.849544590304416073580685', '72774733771332685416379.473364778', '316089831889711.742249'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('-567752330920072378093754598619213748233796179.54236418430788356845643', '-516520833.596513462515354879978446982223512087368936146936784699018442590224803283390144545006111713728220298', '1.099185732677685220775424804772784445315257767579090407441376702516440306426402195129e+36'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('5129631143957037743474086115152.0138944779473626911495605637223009720022208294444131290756814960940058345929700', '-0.001628420094254817289714854197741233263679962156674346005003765993855502866127511748662568192380989025289687', '-3.1500662280296980938785103011087640202801405120334662125500878292149054795017318453511463392253496963668008164268072237026849994e+33'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-8052237465249088503330516428019461935931483233368828144163108905362304793799154588586652106494205591271530372984422846128124216637054101172159.8198', '-24948480627686294479961182555344635149376544700047', '3.2275462323397798259929627015697611798773642903722190156638697307068475254156318133306212183904140821509558932647674966629e+92'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); - T('-12397061088902295.897360560', '634103874676968188199675493521107.0366802278632285774300608544418732486752517833267525055540644', '0'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('0.0000000000000335809635072419405931374425439253273613830562335226929106905186893650025407202550455008965953735437464348179712812728248580871044244477117', '19646313.80579117165029', '1.7092755332729762558466647740958821730919210007978474484e-21'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('0.0000000582449227209204919890209314208406523857981092654', '36223019307853521430962039853003183168570769.95', '1.608e-51'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('-772946745603673867.340258837457273595019679255997676192580433280245108013129', '-1696902776617312106444048777217345449275764437258316904173651389899152.0177594787711491431721464369846363398155263812514418858122974236900857586', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('0.00000000000000000003116524543476809140307229914816902649111431106585959830341459426429296249727811891222585676328199187921592070560172826', '-3150132884709031864614.11492430581197981118226227987562414450886655921687736229752913126421963646080717789305641758399', '0'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('119359.6666412324178632889818329515821650909368467852407575', '-224637567294185974886852529049358455101868576658680255021071380843.728422713272676496', '-1e-57'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('0.0000000000000000128654230542111067189423898238246405929981191833566220411470745683627400928267331464973925678552845736018633685886179568342056880782221550361374348', '-2887131640135059115551339664820433789010005472214094930355978045276915703595155257443084452714940719251528954510676362728841175644799114073678579', '-1e-11'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('-0.000774747', '-0.00000000000092798776373720020193054530221803748143507437902179574930854083957227391839348385502561988739064', '834867689.289277159219024232798273768579767988713805739979498226428144'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('-827868461536829883533615801499842330245604823727789265080484494296581973230327572709857581087284918649127281', '49303677512716864518400823500434096286826505119302.9743946395242917733813874643090568032061657164233181387246372366819', '-1.679121118953648692303782747314078964567544504528672079427533110600711645262450980541570282263724901434251183336538506148689706453e+58'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('-0.0000000000069385090826146798419962983124409745984969407476180725103074040574177183775134748722769', '50.2643657525834508627402118587581506961727676928022152870922843242765047348968567892276415345576593488544742272811011442', '-1.38040318995929228e-13'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('-36465830.99057', '4246.9295268361765684367203054099354321276927054849374739', '-8586.39889363453836551650372642855884118816685562303698224837571'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('1476708674658145763017333981.841951672822642013473098', '1507399190942938621889136186496523930356618676890447430300602059037448422589737696344109263118154130274452931568.00767568326234', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('31151456263.8', '719445144017520697175948798073.23266041169', '4.32992793444184626238433952e-20'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('0.00000000000000001944284988655185994709008040377222083156202951329463977687875625', '36570102195549551310626600317527912852058509458312802954769714868502228113301386469182240406317883836444017.7959365986203099011251100198700', '0'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('-3.41', '-180189999778582206969329154333161380.21867908917048900452072652645219508769542874832226452800919404132628121507168368', '1.89244686397148236887940388896859740933131345108857683e-35'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('0.043254', '-33900799706350726803823554324197.2289101658777904906663', '-1.27589910487855286067700916396919354333975443789157114e-33'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('45767308681814684662405180145407351015025789138220579904890513', '11703616727219168124423089130009645431065621809814113.44438980735', '3910526954.91756783366082309176987991868244379431829011307706609785215151070062077'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('0', '409946135037084139112508529443331984520338808007410045687712390.37341052002741668352098872558939749', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('83991645554946550648660501622076948829205475727077980602090363500.3529373353607961673548760361397', '-62417534038612853524431031149788470754766910341134390055001497443989592787068960019605873895837530483.711068197247897385515638370383789971173', '0'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('399.15978890', '0.000000000000000508936472472487791935715900753504990212713895672381439601328142012887053703220389114369591028834', '784301794997759517.3613143903819238439194126203801675984212192753757427861426142820114480649605235'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('-1096651136061566062469896114565053904890092964982004245212697461541271120220336327715857955687292684162607855553175728010418531321461909990074196341', '10154.984', '-1.079914193918538977973669002890653402201414561541410843397387392773116255249970189727387020685894418112926475859711574149618090310592227412740577770481962354642803966997880055744056317567807098465147754048652366168179093142835e+143'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('530291710465271519400057929362823808769925622.725711326079625482029469223470276638323050654170531083472274717560', '0.00000000000000010530294239590880893716635789973366225869274314505', '5.0358679292315218085087477235739742436851272590298887703889366505136434193799912706129762097494055328994e+60'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('250890059887771999498847058254721688658828501929057517825850189564527881369512022170292724566387372942161149167967', '-5938359923718710898348182592.6693', '-4.2249049082673318364687888913057932494050497269933317856958173693850003558331497456054093e+85'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-1378616154058662492767568271138278820747355923137795.2894351872685597640513128546176', '-37903646936042996172994267.048159645793972584', '3.637159654808100213648289387294782958927162e+25'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('-405032149949645531698438.280211765368612513947036412222426700623121403877400357070475693933100669', '176191874946088045557632944491735936258291661871674031465169621', '-2.2988128713289362888558334108185818798e-39'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-2580695182601869673918196714341800309674884455224565088301569943.2288274', '-0.000000000000002540862334586134935858336175389092350190923138909786692053890433753196878414040354336771350453861966', '1.0156769012919477433312399525282475220324945569172607675511111700657141391184536754311230324749217531787797433524338875588150029457904343196733453131e+78'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('1683784432854764760318037677647356479258132056087368331404.7901349274121272631991953907393965668110904782111', '6098763.78830840832873090895083360527456728317690850679', '2.760861858730537673264019978069684088098674051042009367085739711554244066456823360955119091386170307547779216190046166314369772727903423469613814e+50'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-2530637191334289339737358351191006220110627855345270379.24464258326802980441960151480838549544839800106528099664769831900729044019049792251953842', '0.0000000000005630735131653553549064876725', '-4.4943282398565391204427516201011048233046420457279955876277507634918635719590037824058731199609495e+66'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('-6016514303387087370402318550.6923153806838045524779637206539897873368973099362667678596187646318534447942829547334688115', '42063250650445111261623586421695502971901833122937548372402100380934529958016372546.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('-0.000000026315944617863612115639219149412047957937278455665071240177388414490625437453442371901796371717069144110689088162500312', '-2.72299972943683965188220367', '1e-8'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-0.0000000025474072806440830689586180541261721100964401394173677164038', '836486791609582458507489170248190.24332716383034253743391258375515097987391331247574', '-3.05e-42'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-53013010047301437313195229107041695663054443105621563368715814088060231437445919515771354548001642958971257675436953938693573030623638', '-0.00796582379779070199223958039275317264241408196576173862276559143700498102322472', '6.655056826891456110588198397760479231210742064163853251683197496717259792361971893844369531103744582917298501592030438072823956184780768158137980361044298970332381029403854666621122182e+135'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-0.000021687139718147001344084346966546200647538067256875719646483903526067224', '379125104172643148686301251195225058433045909719144509494703160390891.0170200088661', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('4750140431498572971884.02444080212658169679978723632529229252457007826396773526300081724651204250517439743049309878', '22950611345566180502757288198630366770990837912160599255293.240692976132843', '2.0697228322051e-37'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('-0.000000000036570892794447705585614624821983128340381593076828081186793139782426772027967459744045422188551482237816591716314', '2560596797097993138941873567696297135779266794271386064153376725986803756424263745.682976536715541668128630255613888292075729181635435292', '-1e-52'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('3215201509569438794539395241433586240904044490694071836228405661637343', '19209955897019.37898330988372930240098575251229', '1.673716236937488322770450732532987109445543659818411514193939316406168e+56'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('0.00000282494954542178986719684575203456013530718295572798942815487088262092660380952260355573509586164313188435614251378', '-2393493491867465608168880873625388541785217835882244163382042684.14580574857237744565825651728634720874755475134164710774169412', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('-138911208177979510918803338057536699138', '47484983457487684526753652269251469092668812125.2717610240593097820889181874231447310274090873968404783764276108027743740', '-2.925371308223026314e-9'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('731241406311509903674243319413234680513560211005222568707790678525996236175934378681980527062623332869973136034551326117781889599187427211146.193394487', '-2687825772761.8689341190319351155213905676762471173107963898510595496404265593416492000662004897007501358729657', '-2.7205684747941253212498747243949969403982533754958137154056312955596826856387360980498258942150169615667959998506179760995692747353769627150318824922188291195e+128'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('206939904334186501184151978408304545220002459073583245265171036400836008.478', '-10084745301004162428994304777972806212660507886355223903181084400320349971431386594095351596008397278869696036276954123347146', '0'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('-39897603831431975.898726350018069055698508506479008835931923112170261', '2387737702875316321155641022232111227438399324663798098137222136357169394335629586576077266281484468887573', '0'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('244402366994683.389936331', '46893212566947754952628148221078712047972256.355523427887089555207033604948598651391255670650506432106005809409641579984514266497954', '5.211892161275129331004143444134219900562480265421439944e-30'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('921553120546680443171008695023439170379233255684062899262992193.794917224650781623583', '34776592716492405622044088435.4067262371762', '2.64992355076132660490737878527388874952228235144501129356105179745782042120074057971014066235636686580551171373518e+34'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('0.000000000000001096563555410145551886745', '-13045975821369490557686183610', '-8.4053777994e-44'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('-221260119049855126902502314167490585.20799122411762790676886491913916461096538682265', '1593466127202707486930181372092240602166083899835008909740648436940251311560988478236191', '-1.3885461088418119708264230587238319e-52'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('21144017850052012114002430609072631261540111692934004274597.9268271743256176148636873010674646547207', '69525139905449724584797389144221440768597505', '304120464609013.16850543564659082427975287876469553'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('-0.00000000000583266788198021', '0.0000000000000061025691356020273372684847905447', '-955.7725201264448788049473037983438124250855924615229'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-156663038406770648005174622303705622.7579041672395005235498789260', '-0.00000000000000000279640660545545434058450137348238079234837546590841727943835550147521988427900118849', '5.602298253091657872084698931378902499954041862670597788676126142104438506469e+52'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('-10566951247364.13067143255962777017389679088649800105253368256681791614050139262091025457535223660042444759101038199584', '1487798968.81452848476368061577537587057227379428626', '-7102.4052770945457887313'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); - T('-4668.1', '119725391676743966273773855042970.28053142529825905284', '-3.899005828775045144018056878422920342348377535725165495259672533200529e-29'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('55145840802614703675780118424602174215345069858293299936255447790771825169501037382715931054297849423823668684444190452788350', '-5109708972121238121337032349.891448492221030161628519862566339', '-1.07923643212348215319627390227472765176959299472361859473063017742967902546478586994945026310016152356068340783023191816582426745086395041456559937e+97'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('-197225815302194313889667990513694164420673065787.084932500684', '81738452500743439114379636892702094715301199582161638069266331867043759961814861.28757610773710532695', '-3e-33'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('338100639769773661810919487422094307.5336058', '-880545986717635548339964965154416822474394118319503023985079917', '-3.8396704416323949e-28'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-1662797505.65535176968783183655568367434611', '-581.960249598597596154667772484', '2857235.53593609354275465707353881349082806891990385315'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('0.000160610077675684146304552027076418779474569051481519903465057107576282597616429863413312032', '-34060940888951667885141940759531275369588062486617036626790624.473751149557296807287327702821902987273566077309855776874103947410793018863211877420', '-4.715374076110186525798803e-66'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-207405485962595796054501054613781720814263441017518647041343154889940476237161034783864767115064779.34235138081465997406408488906217129281505944644784', '-0.00000000093303413425827094526096475567364786774471842617364847706513764924856542906038903595215249479094234074185548433373674778967214814', '2.2229142359028033154511990611173655293296336332206588038453748114511470584621308854680838501629883581745482679024467353488331250486413881244065e+107'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('1477.22889187002425723777429417396550491538475837092', '1761.3', '0.8387'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('34098317161560739433890908142909751278554.6930022877561086429320566396040491171871835072970338682888', '-37724261420227885.58215329250987023415665188141548153119211386522822083124724793770295346648801201311871412682289433', '-9.038829622593246661590439e+23'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('50623519047580605172184984056336202404.3760583038771349760555077386002334157410700615188634691157835559775', '-0.00000000000000006139710831330702021319614773510605739787476066740813000994936327277523', '-8.24526112683528770106542983732390678768189877193258726520495343940809472671727076e+53'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('10728.59', '5824163674089127623690504744435273553136', '1.84208250323217471512375284637258221177216212e-36'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-1.4', '-3813346210311479709541381781490830445870609120466', '3.6713162739179822524861e-49'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('-4799217929592734484537517487908.36992727', '3.3934141944923', '-1.4142741364676708625668237899363022984645293725867854343852978917115114e+30'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); - T('0.000000000003576650362579233331081232620172381206846121159501556354149447107365', '-54512905937178594044728031220880675540771601222564092923', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-8125372282301887408375220913379041960349929890.62455', '-1790460199295669106247191209704778284796248830123278272533504949.777383', '5e-18'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-765746835279349140819409189902608939522965225756855681984520198', '-0.2458823151440970935522013071618517432598781582118744011898171590155937054619264848359000725442111657566195240237628055', '3.1142818662277121288437132157877831416359946632925686448321076827434830094251546601195911606253987567029621850150409881252598708742138280652195860931073145758e+63'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('81965007161658.0547343638301154851084560488552', '-0.000000000000004261559354294540140114492951839225329005337277856986267793697637058674710822403261836354253969282946127380963265117', '-1.923357164533182185195153252080481961629834669817308e+28'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('-0.000000000000000000065889933115566879895515836698319434467360644777858211720588117831158517205383027852887070850900716340952465033158953134', '-0.00000000000000007908737871894736179930044739134129252658812997987977029914237397560831585918570996834124936441532405901393160446609993', '0.0008331282966112682229331'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('0.0000000000458887', '-0.00000000000007920739464409770182', '-579.348685892163588470293269827812483800348640005621965767695626614309958240238636967681609128'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('-0.0000000037666515796183731842937900251875355', '-3275441302599371054338586817042216323073127784053613466464433018.537786728515034048117509170969225078859247721', '1.1499677e-72'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('83.39662443568', '-0.00000000000000002003152279999036168607346445798938073488008467463259124348624491238949667009462878406718904207439173283600253638482948274209051576357898888377243147402', '-4163269326469784259.074364130103393795783206135919553720762453192372920347086091930230269553807323'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-0.00000330', '109434048584872145809570196046154298805745503330569166951015891452732202220587810005.98717361588303691003203719491658892592695834034237414897181323', '0'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('661510957981362354.675586031673491649623307368815700089', '-6132046439808977110693422347539910465597.524926496445313468843607211615349406925814780881225164808283588825422222481814130200680430', '-1.0787768234872817780707108935091697973540974676747895321936128e-22'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('240645477863953208383256180378821461697005668395222275831882459357397472109203767724881575267577033502461473493422161508786793834549218188', '179.633068890179035550126501837996890817635942524483', '1.339650206672552513732915483211084687492828115679933306207775936177308128834624497824175070285464372582119837653218399512382664275446656108624090174313226738623291795409543341109107394925580009120035261319741987854221053573864750278e+135'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('-766365170984667044870484337547371150484988429808969008514795576128048891668669105924989237341486385915120644587680287103858354', '2445751367297732436141052279257892687788556037231498276997324552712597131221011195516437849402580435388649388861322697306622577156219766103731', '-3.13345494244335396303e-16'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('-18058842314368683976478687652768663959807272264111648002186418.202272100393867', '-0.0000000231279891873873831524846024981', '7.8082198015800234109110710756825533282836360892482051132376093488274557258e+68'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-11711339209668773344982626987099295880675887894380080989641832695807303807116201', '0.000000000000604980060637221761498279329982314575639688591904703076944583644618268838055262788114307046405084556659222251998944445759115019204243245798541095876396', '-1.935822347158564545902799821915818258071805920079266430341870600078973567248346441460842317610956938785440088712560444671603373719507540064391699452526437e+91'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-0.000028154022631163645234323579837517742974', '763714225', '-3.68646042060610370775e-14'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('21062233519542444965824728279914.653213795455323072654677744778683570844371223391434996821852872307725640641729538169125085230104549811712864738905143', '0.000000171703083251092985870323746701708482113299956795635958844911266243301132752', '1.2266660051026411667366702282614551559014534199266716754244013766513719984823303199747701978506983918117786457e+38'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); - T('-121257486105813564310134681312053320611077676259088875416194.47153110485053263404554085813496448318', '-4084791526573552732873599473516219634802268496638841468581734356', '0.00002968511007648119281280433886543605'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('0.000000164578657788588019000116202176232404908041728145', '63119865.4177618888922134116051365657910248178312341961601', '2.60739874363350103433523981000588299516706471965550343854536e-15'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('0.00000000000000006596271466668487', '-539419239.136', '-1.2228469042435127550630100260688526099356201e-25'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-0.00000000000000199788581510442427115087092276680447460565666179306750837088275882162058969391398191642075728411841395624008869134397568404721265572447381', '-0.002028577018227795', '9.848705753601688878231692808052534233554172889775981022319906806336915094632912895e-13'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('-9887034207993526508563691608159867317275531523.01396873087646480937106267730699598450248258523176444512402264482606024599663403761737647463303159', '8772920062368017041328549154681563574802.98973126923491698447317067300819744100491915062397666591201700', '-1126994.6765392940225916166969206228895948211119254973175'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('34648817936384012285095138.9033284237027691083719295724088752091659041134562734817206655068482823303472564684527417382649419001003061975214289', '0.00000000000073129840984615009847770183025645601294694470', '4.7379862269457688865194244036393170482427099288471334761305588440042180924511828827769256776661666757793969933190342816957e+37'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-410236615838101179461003106082923506552161864023253078619.42383715734657498731871501341149044489675184080204634673208', '-16700539039984360840000288381875688192758730134701984438502896.059622768667942635184286', '0.00002456427393486607747670324'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); - T('-0.0000000000008261580047417753196019777820265960458240724510855824773446269060589966697084218488066759878381989061', '1472567393186391365433240354050309702841455502933514845209507757008252424524630725988331270495257462495809930443112514286386727777534106903540357537840', '0'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-0.0000000000010133051516043563571444092178778617007841179', '2841.631237610061318204026527525461909600878371', '-1e-9'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('0.000434746683110784676350512124273115131526691635488621245898351568418905144524240538757666', '-72.754939209315378716529155446322462548155056', '-0.0000059754937305359013925521167107'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('0.00000000000000000854651118154424773615696011872928173942382083706149187646457857355809608100811648271879534541972313644107157431654992339085547463379527', '22', '3.88477781e-19'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-0.00000394892074850948987873089825542954517462502155991604329884199934813459956719272328729708509121706336173939287967480', '322144987032878601907718372304451697.01159', '0'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('208859709030919022668026840603676129671468435.33607886149686015823', '0.01889073200221273425874122349502352549427956172837681307889380375053438909209797825161457166530112944290616595', '1.1056199887143314002138931452389730341497907319575118366203107346836990822658147120643404038323533401588660264603730440281486699288371e+46'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('-2587030969033635395116299220693238227817249983119048917425686389.9938', '9002647902.166073', '-2.87363339891498524938146402047434581585175314551744655959347825635385293396011197036576520825766337679980778948659204e+53'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('10942687.37267270972749191', '1223028609417510798257150450863710728400112574753822913624040596375380.636103063240116883753619541538711824386875697240375421870207137471575150', '0'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-0.000000000000727175557022683250030094239938027469890979345925006324236384264240507152468370259771726832762008917826728798232836587230180549086738583336336196136', '-99692702089561102666910827430004445013.4633346742701326', '7.29417040346051916273494433969764735713e-51'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); - T('-0.000435854665924446274149989727822707565279192689899987869618794982461629756411792802473', '-21479980655764289345477008567297503725301337815770106747360860697561555706454247768461577', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('0.0003661424946181228662544929843135642461', '-35541723023331275234931465000.3434160778574144692609693947', '0'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('29511043086232682578298902433029441912767122483715484336528860737562383987162415257', '0.00000000000000046991515004893762897688645593294701223251163738620756601403640138', '6.2800790915464974417238635529785551698938085918374781178739742809295933496204542846776626640063091485312691640142866673025483528632260971e+97'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-629.54486', '-3804390832054237197732585520105512857086714514451063674129724348813938242029720919803496627174331383149317667508624916115174380162610.4', '1e-12'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('-0.00092138581743579282981369074351185363008543791080560303477', '-0.000230991881481976', '3.98882337995799814468394510251061380533'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('-23033476615970509548342', '6667695578819.681810038616467102328949290169', '-3454488337.64061930527858389624314516095365835459827'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-17609583262089829349614527901463987025975160200151.4820645710897030443374385465092892', '16870249287558515727103701322636559681739080746456750537410713485304497780078664815867842085135794504652737821295544703167229966788.07959249777', '-1.04382473e-81'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('1349754860300394469926085895424254955915398031581010550799071969866756394839212719635286006491', '13412861067171333299.84177303429285692571286631558385009295979180821715177980990983167100956466924033094092553925260547177604110713037231783105431476', '1.00631390539337565310018357332892955002994225647946004870372436649442631607699915701e+74'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('-6186799896.21170397141881093515171173147157756732289393211637798253167', '893.091', '-6927401.45876702818796607617269876387901297579678094833798165918427'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); - T('214744420800036091723235327386836286091072499.82497486682144788792915901591597911', '-715116823112325737.2466174071298635872411470704596237300360657750552662790180883559706657', '-3.002927827448208186141147717660718139667684913298399093948689796248917476883191412928e+26'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('10784824161.537439230227463899676', '-11262180156432062747048177456745766565363391724436692706657204194840723282194660736622526420015840791431252480525869816968701138773587059519556961', '0'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('1065475535010405771216088743120999368', '78256467309231123490607919376895818.6878352116648506364836670768071490932035482239738554', '13.615175481921126856133686342327097687306334430228791860260596510008956841778876892927993075408915'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-4720967076711694069198987.566', '-26730767756103443137829904940659855284477689929810503207977148998370094841105845647981234', '0'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('-4142076414964352827467635184212322570640153530421111422699654544405985173134941479224380826617774348813350115902374014129112579647', '-1123920.836060533', '3.68538092903659423188259410965646827940853170201720041177477321176740140646972165385369647666630547277380365846243405462714106940736106225684761023365016040126731384881104356605229898933571882395330993973105263208971e+123'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('-9012546797305778913749072705664218779598777693194018397051301720249575705315186211819737108442078207855.95097311271066311789437126035831079152248451', '-221696431298318943617594310436493479484437358300747895944247886573964283577260576.230554488', '4.0652647155958609721257535779485826311570413278384982152932483257957600446920806933441382642212114e+22'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('0.00000000002538387070543995416405436499183653403597088747366207520144542550245681558184831091988077404423487890839376340304725844427690', '14562891408915478681.421127181921914449589980053944489651677113447812731103604100978570606466', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('0.0000001139087102258881402161089659878951562048252365503155737106113169695', '112999330291096081712666114036319726856888730969', '0'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('0.0017737339683220256362258495322853553726', '344311488386394946670123243419052980555279569441.2581092289564252509313088826893414', '5.151538732078254393229534399097e-51'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('-230601295798682631284071108851165376367326185083060912813945409971432014125737.67610944055117004937', '2759980627394.674745824644987752843648703444381939763379508829430416469000302357857891571669', '-8.35517805849101902114638182220772719501729983601164872340485404304496519183873969e+64'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('-842570312246603784256854878768113013090390680.4800826', '1835117010332854583781870084893679257611413400275028539694753574598984870187.174117913536', '0'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('-0.00000000000100684943301409650686603204274713', '-31144152.5321601643531272794334628', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-0.026503227279838553113169386052389485374661223774285251294146269277263514377060436706297988370', '-71045451218274393350706888.0027862323455368609062085008505902080395372345116114084151338799957479745433746186733925305567951229335217540', '1e-18'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('-110419631346006605487521542409376009922843127021.32729252503643353043', '244333847708274713267176368482599559622993490167843827', '-4.51921141428769337154851414365744921974137172e-7'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('138893.800038647216078219578724974257662781528220275806760809453342527939336259698744105819334031462550443269', '0.000000000000000006348171111337101567342719021981976900938596754527204884080611802666618593', '2.187934093184711195124371794142911460872e+22'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('-0.583518556009536368891167105653', '-10441784574938354731049901890211616945183846927326453960214418739234414890916007304010255785348300872046501133.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-7.7538588120693509533017285566489706570750381485420112364801121058765556097495024175321672371025233059644071513855874611523627', '-305644204.4597562604754745015566044566739234835770195994902485', '2.536891e-8'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('31789997685790129513765060203181448380957005660036613335.44368544620228705185948716548766405754804498731108711764', '-52434089730.1286441452387', '-6.06284915966102621783408308497372568922152725e+44'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('569876777333896496210397829911575985990203658453376498274111925946243606155.0604438014870819666635730795627745086491091661201979151197', '199620035528203630659934347139027630264446304681', '2.8548075138148172480690662079981736361263912869268405656928082643654167528071203766793714948500869935874115843576114943669e+27'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('464203469483216305594181907657494380404.0131577756200', '2048.0377607488', '2.266576712499163303328179649892198707410967454841685911989506281906764109714566510065582e+35'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); - T('1047446033974859.93', '-610168529437812151818980787637.081958441810504970300511542324279', '-1.7166503735286706929530210967953340945869136079522966136115448125308e-15'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('-118.33066509', '-9606875158.2747354159409455217', '1.2317289768055087728278381056836e-8'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('-38916180536707971109723954801032296697.305', '-2761.28', '1.409352928232847487749303033413210420432009792559972186811913315563796500173832425541777727e+34'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('0.000000000000000025459344835883054040696405051913272865874831295085304164847010428416894706100600297496207917376', '-0.000000000000082408868083455992459669242206585971307278856656421299962183', '-0.000308939382714251228962409534148751406407122642268738288023'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('1608.221', '7042457108573780622242600547019826545691513759236748675875889745320169815672519884725638137576300515921692993080878948', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('0.000000000005815702621450130899297250913060333774296826828362981337889656145076977693211768352238805403527766702548620501917360720005422693391397563666452561', '-0.0000410389771294771', '-1.417116e-7'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-11283729679337191958753450479886227801706907034479328160816332391375318739208071063224069992461362595601882', '12969.8423904513102281564841724235620506702074460180022088158788721958927648069337750397204515848010713511642997', '-8.6999744018821135539847925790643947979489690032352266720739413327073294318035168762931945901643780530767800577835469292594593782001806376e+101'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('963562926172000437989222165501001948619777097693976.019152224055600155732251799412248644709320568223', '412176.45445765048731626271608246638', '2.337743739971451343920642558467838059208364280737481450784483438693973819066391311731602887641315626777957478045350411084e+45'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('188017317881037467142744350440647251727837092834115555212.61169097805664040953502697463903428907436616545320956525738548268521889', '0.03430362603533945933717', '5.48097503416527374671169477464124580416386360623089291577202404593e+57'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-77688889373197281303709368144116728208944181866527.194329986257499976867357688522213395034508535505986832056929680', '408619346377674.710100303477364202860289496630069330695596842055267', '-1.901253331784045075849928931814210121717387026383480878918888601880392000146415858910823265784124031638153758876778e+35'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('-0.000598131376898130173273368371', '-33834310680426732.864137084262872986652328820914', '1.76782492348558845634046504235670092482442601e-20'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('10.07882789313470526436392', '-0.00000025401734936054768178518709450341982916789030441578045976075113', '-39677714.60692236908709650312064312268828912885512989366573740586526'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('-25761367516448895365422437716902', '-7294379443336532687174200876161368710123746577153289824016319241010661.65837654623', '1e-38'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('35771326681716.57241202022647225590857673709935880130954808350655811207', '349118337811509482840869951583553281668788032940835136131494252501238463766250167', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('-0.09624422709388953184652715019078120429546513', '5170531470626723240558594459627185589778150939979586184270820777476797.5956769453369948985727876109875514210900', '0'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('0.000057884266097199895462680021752066848854688228217', '-4761853299294789852.955408629409', '-1.215582725023728e-23'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('20728450374669601887839.552320873488315014522133858670895309037684623025097732', '1132688096327184110103004437024774873963.26815201444568485699742053281035020679063787648576003176844763889605228900976272254054879', '1.83002279637995401752873042212819846136694755879267663e-17'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('0.000000000086774370372564903480577294114866314088427466069062376707737298079241239', '0.000338137223353011131111513637077704972150', '2.566247203194589454868423478287602357042300504761582701917771480785000084144e-7'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('2983534726729756.75814502398727035291', '232407189512289916975300.944276368684577331714804764466', '1.2837531975e-8'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('-57415411067167602331063928.20050398168346262738205597292826088263171232118273941933890', '6310863991456586.974151639438526476457', '-9097868555.69925941317721185720709058423706826912790945475135548324'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('-0.00000015775728458726498306773317209748308498729981829072132370543723712809732386345160025746366490983542448171', '19242719862', '-8.19828411568781289925e-18'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('11552994563085256986187084346.142302277913480048628672763423906524750187841526866411217768', '-20.5', '-5.63560710394402779814004114445965965e+26'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('812144110944150119838381673295335582060267859298353045809434439357', '0.0000000000000000031349423794202464326668987343219568331222224557022625230990', '2.590618941756569628392306103273989328011790305545243608100444916082914443451931168413483853055477086e+83'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('9614489376768900692760895.527073066530251785421855330349', '-32601067987574457100555933941600938282851621206745972.05932516695823657436199460272778', '-2.94913325552198439358718281779388167358864451629725021092083494e-28'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); - T('-11583534251297278', '-7883365928383773610465677991775637448155254748377729591041178141612700383829044484308620681465778556959039879269907314046', '1e-95'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('223612641244955642904353401755577586252256232079489239167850500206850757881664490453712619388439.9866968252386670188226025069540843', '-60481932676102623838187954032557013742871278087143283642052995554284640962756152740.025029', '-3697180816665.74394403322603085612547303191221613672256862205285142592077737141641318238108646439426145'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('-350.349', '3', '-116.783'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-0.0000000078925715817074841568218505489212637237837850245467046523569515632845796706869299872723194727515353882743977331', '2', '-3.94628579085374207841092527446063186e-9'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('95368714741420394016083342043033.00784372549234384294358546454', '3585012151550330759303021666823107542630331906734992426474705980905403008440453961.7841322904181', '0'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('-2485620832769956808425209188746139311251888822574439855533201630539287597598325860653.28414365674', '241.3782617750', '-1.02976167550950407386792492314364679132750326251886020962427722766265976338801806778951983513045579433475477474984812144647817260966767934212413813791538146476073653049654371e+82'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('-39833308190442209260.09353105836552704367203454209099943130776671246082562477353686588645', '-4562390593', '8730797457.7095155912474'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('0.00000000000000509749647074186006528231614714908640308021420659866055767456046470814261818879186939103185920091216299799980890886608080876743163190', '923912437853859095256023537649611274', '0'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-0.00000000000000000061303283331263000157056558184702117427444976518223689103457982927186788642884636448192218746034798482034003261983960690948357701483527632814588196145', '1.349016634998595471349205316201900685818511461958790386', '-4.54429409844355448e-19'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('-0.000000001125145029887940635965123902335679328124477202368746008308468242235158851466733207', '-149242808842832237.51452433265921089167595693212751981437458634433350017668814156835361282628', '7.5390234116595331363755680397164907341667188430847036e-27'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('-1067698823499635663628797160629920191921919332668840833079974729.4592792194147191454910492415227008133926462', '2986573924530388563776047596678868501.078041067258658328747831898425248466411204698171209735', '-3.574995464636026175354026069188351714579231839156305431953167715148767959230683015424161196084094280821534908951785386901092e+26'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('-131558573136380341351526263881272015691105162167477.43641577', '-21028836019557051563771351115247425946031595498611415211335954724493007138746037794.5902422656034786549274717494663973261907892978493002913117916917673', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('484912688854430445901238078539.9327388805215', '7675343013.208368630074287849959404386587228380884784634212253665072295641059597176646', '63177982797635540171.37420635'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('-12489030880907701606924229137856109508824645513538011.4866636311446461213479265402263844866290245240119778', '0.000000000012635859212', '-9.8838002793250032983386085687388628280520964651738883956976705389443692924287230705055806133213539416395010717059895016500441837939654942081353731372992445e+62'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('0.0000000000000068486422494524596969719924543', '-0.0000000000000000860530227743174154892543321017696403856276705035877305470475366175730095253824587965', '-79.5'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-7583869705359432525760481762644610763035183738780200118821468808036843413330936716113850064916779065729143081765539679358825051304836745850.6', '-0.0000006055982309374903162654476366299493807077266080677782248313129886619903156891521074690993808095640197564654707619837534400871511071579', '1.2522939001356226686471860751979813853162302842384027385533502758473626983036115201672725792177064268800542320082925102987771543970384192138191248037631285529883852e+145'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('-2324158705657062571504768932244003687791982053032086887435609400349623234.8847490173933459569044283100698303779486', '7947361216056610348892930352280110458365416285971299474457628074690297636141245156892456233813439323211882813717047908148127893604121840938', '-2.92444075772144595364474e-67'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('330860553574997611420845241615411032271.580685318332472617576015516495972857272447322507213797761155935319903525405236867', '0.00000000278434864148915656819429165228781824741971614143838388587', '1.18828708677101248141214779984169455306527259694791290514596002265144928984957405e+47'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-0.0000000000000000121020668919213362550711754611616886638', '-0.000000000000000049375156639', '0.24510437466364'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-394802176170946185383623287716098305655356865182282630086828.5964628406385145629597276869513411714693556446431818475220471434691425179044277034838', '-0.00000000026746586998637309623288792', '1.476084317565679106389290357424595824168694787489557585159991218711391385243481240043321664965214926198007610749846626169138875626812596915597784301572627506e+69'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); - T('10.4', '-61109341288178920361559650208577059902457327675126037235513424500323768453228146026659.5878105570337704702103', '-1e-25'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-16361357720439859515991210103353300934432258144405930670633090423823', '385748.287755599110761', '-4.241459583822190406083003028241023712304490745393782567275050213693077008095405973640051052432256215016050136707300274703155e+61'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('-86705405.255842516299401932228291720865', '56640479994980166550590540661976482821130455927516362968094944322340974875957471148423417325066529533995371.3462406278132009081978405932425088209056', '0'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('-0.000000000000000094914', '-137839741941703276714729.323085324892718177', '0'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('60455124150058896265786012923520033281598.78998030686', '0.0021523827516723502651678484010701159886163599243977186686131893032242096226863503971597799739241221486460582591097338509479887173743585631534', '2.80875342004514303962666735157334054635296243757109157067891469696250405517688687660013099745158145798413670468674921462694333819e+43'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-5919427358277736121036355510363929980734158554498206', '-0.00050337563645548537163555889565612', '1.1759463370057649309214690061769196099262493416877295782378711895907257439993109937747833453695247307759245320841939666397716819524e+55'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('0.0000000729423656823523161763149207076345620182644168427894042787797012912731740507538998522001444213', '-7257094262641984828367782787823231874022685970775.12563012911815916459640884557517', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('41454575815121550945249311651184611690694.79913841331976343412188746472269', '-3200381443148112294922788210421014186475008201856838957.897657078709224585556728313319365060099241381051762595', '-1.29530109305795805322575761019374322e-14'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('0.0038649725946740304936644001354450316452925391', '873644820559845353883954013774352313795619130308608659936964087919658936.3765726', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('-39380858140905900403039619284673213946855305695.49283157048331780783', '0.0000025661629', '-1.5346203524688904357178423585140761697885705422478374841473749701482318211365303e+52'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('1819197663957471386300657897690721503401952356057608245592494045176595405462249961528464032031032015078641', '-6657150166644585302700536.2593980027370484802132928884784544640921459772735357204016065961305999', '-2.732697353099373860882510376433695374553785919029713342177411174901743822440081364060822427039104225620224778168e+80'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-437210.0040882405119137212856092357997132509560463755042436533856183328172199610437076429802232051886233820671923098242562931012214927104557786295', '-0.000000078910911692107846719217617946420187723860855364977370954912695662426156352492348548312315002258612', '5540551930183.407030727075237'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('372890080685858653791897049490719597078914761123261687954344045467510', '83858134146406399034530033386323890867261870710050374409850683224382501969089447382261002756360912920886906350.392630718449167908115', '1e-18'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('12012.987358266093130258964056', '0.00000000000001474962686582364625240831800934374536576500883104176098826397051575455266411752404100168850259065089232372355634', '814460424493949790.091156618252295069546'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('-41414660318908334595689654490453470.7564694125513827283706590498180415906833323210401065562381722595732070094746258542216964188761695276', '2145398530225886920232708565246589418530838144185820004.68', '-1e-7'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-1130924704242056012035837690878098284338180004218796434072.66974326603183473779429828776647877764258010306835905546', '-265757117331641918530768430756590909287777877780654167947006623461453966259037320614699138149641422190822683223340030806919', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('-4588.1925442043', '863447601549324043065532673831998405845285228974578665227645766290170863.2030322709793216613222988785114827410963651195713781145023', '-5.313e-69'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-0.000004509022482841480424627317183136893777310912377293389091294708900407185726477457642860649845324817864813234873826655348443838', '-89614218054668846271654743413464030769218741689857702835170614842564565478.587308139851769991297516306392988850870848647896160655995714431207976872', '0'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-2410.41', '2892050006077318614173832.836587226318414081034320363', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('-0.0000000000000045621481849548325001418900905909585251735259336553615288352493594048801397', '0.00000000000495380040070865399628832449529636589128087028242937324760231897728877786675113319670285338494203209262776532652', '-0.00092093903991412439006804009722438948506568506335922341009'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('1889965641287467460605353585809007676852655515492287271970671.92', '-872540642268987950148.40330774513868729000074986271252895505805', '-2.16604883455368767186597041313318871847793456249174819460223460987219195e+39'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('453168756013294702791780936116383819338712265758', '-0.00000000000000000001703576853626528442876796272592863047189717967103246543141068505181358950127191381821131519024957914097587584926194882458231864219623435762974766946', '-2.660101627047827526234592323586601021537755776148906617805742448861452674889193803229068376798406303532428574864840806318986515350355248e+67'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); - T('0.281191748267215900387851412002796180529424194708369219618787534241641927302840921591590699686487262437912311492191253047679223717038629398067060', '-736823256514559562094254.92461890400692007068515177306', '-3.8162713484011694793905318647490767069533087178909746e-25'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('3840619393321571903696669805269490076853531507895686473256344089016810829967129561480080890216396664625065300119841824271269406520025', '102172.78', '3.7589457713899650216982153223877142981266943190698016372426629568235403108020840398784107569710804234014825671963137581959396685888599683790535992071469524466301102896485737199281452457298313699597877242842956803172038580138467e+127'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('1892247491641900606228794628270696213035658424492967998934163234332192991517343447153747403277987998711948422992.8183708552424749795191945092', '-244505466618807008712853320517611846387936179619142959452870395575986399.050340202551610512633848260213360590087334138150506', '-7.7390805114062494814637570263377044612370608350798535119814354463968478114343712347541731534774816203430823292900983341989240167e+39'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('2295381812038943850502.324', '-253779137094126721187776702581.895891744352896517020905474133325281', '-9.0448010751474278262007767239558082785217770867577559e-9'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('-5695943614.77072609944987', '-176532479661877276147.9912373264637178949262666646514566005927690534500079605735234199101141069403355519979895408614', '3.226569765337512e-11'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-27584738609667485013722216661.8421350233359390210635886470920620796816370800366533139814805753573380984948', '4313107568442504734715067084549266805421558688193581510035', '0'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-2555742210398264587305957454082174995014909.3900530099814369606374837', '-0.00001440', '1.77482097944323929674024823200151041320479818753681248710900044269701388888888888888888888888888888888888888888888888888888888888888888888888889e+47'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('0.000000000000314944695132472241453869823257342603122172592363685042887405988618869983581296798806139236459037902793571160951361312344558248775', '-4325.4336', '-7.28122829425638e-17'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('2372983283183260603073328946737270500842645483514847068961453233913956606640900074365120698178842980420863', '4.264390312970053218050821223418104420963791650352392308523490460052', '5.5646484234003674193443140692245726820653101384942591564293156359613261141751452349867413237846987898668588317611130126820465847686933141838e+104'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('-4929737321564416946794444595100034584584275413658668225267555783372750233317098821588418499', '28424.5505500279699822525350080435474958567777045000729250347252638401490401918318893925377023852720881450800154637429835312060509335334460', '-1.734323753998483556086516853465012393861506598300167231474336706569606213704384969174734553709154637e+86'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('-21761034747572684690940063300423799039711372853154062067483292390919972513.128461864192183766012455023397983865176796343513765704515560', '-0.000000000000000370518717601007734760218875634135874385738169288508545052430993920619674833347596206435018730919635286496687530863892283219235', '5.873126974115787328556301649295695597865740591759543814911655466898584785840651110993004783773323892447812676985881696237e+88'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-0.0000000000529128815853925126111888246377363492558042670403782845160556805724033452691946651390343077935752291223303254497743198268934438129373549547732', '190796845584739495286083824726789854300125556149509941677391175737424747877187365711691200873797144752399737466401564047525537368619366814232389026', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('0.1738288617078757424969996650252925445723904180162162644658038108320637527055349684164347129085119473', '40150435051330116187710586057442183955103686265758761407957348994528421914113', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('-2818021876.06049744914273', '-0.000000001255994176045901959662683145025352204805973683344595325551280381851348919327804825422941616667063462747364903546976156151893968477515151694091036435671', '2243658394127385772.2399616417668729072667716977061852452476766052844368573039742148337572714669721107189733096726223487'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('-0.0000000000000000000798739998076872124738417560415802504246249107273298126348402299690351215611460652085120914256051181363877348346676552311861855515', '46182994916067780015766084495323699010504604.09567815372129601618556544089749998205672086702635417005840603957254140819968739', '-1.7295110452e-63'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('-0.00000000000018278570237602871909777071990589057201', '2533783600.22686301', '-7.213942909712690186846064e-23'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-23635856566188883656725779.261087946565827087612147083445053753', '-0.000015983055409', '1.478807146778682837808197406411678327043900671754661965274912036688916918213256505141106590528994893256707723148455738423073873e+30'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('9675925041663.288671218488108323029451158936618138578', '0.00000000000000019145059354550346438348756476', '5.0540062908520263838834301351259547717147667612660420461717525400109588153798536731552786867471188611602627e+28'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('27530734744572553145811394409155751285114981369827827050606790395212699176195816502875540648483743', '10018638440069269682362497.5296', '2.74795172111053878923517565227297764074667648991325127688577578258955262100838901555647e+72'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('1753543712820093784913450707262591849304835890313674574592777278930623364571260530603857542.4236', '-418723139520592512428', '-4.1878357017187384892049546833395312659786498094293034760966309470263223675167624157719477e+69'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('-183691591904659333.339525462569802158358640667215860831779055844371698407987', '5571790194707557578583124091999072068420790617488114407485574879343772879636.5578258978128192695105710627695803', '-3.2968145871526416609414243846e-59'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-1339912.18', '3181724877175664388202135340557380053309.6372658165999319399125323931357918678887932697638825057102937395296864993629927588640544725548279185663', '-4.21127605850511403837900068294021511687794e-34'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('28291.7789788', '164513902542210734619823233869308585615437864478107318378622012226.0637862143099668913711386819475125439510804551009962207503163661950620', '1e-50'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('4352123217.5125039454242550283437', '-8.5571089855709125117416994669008071143304642667730834779287190411862924930833429021927127165224334637039644012852088175', '-508597380.8269942628609'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('0.00000017280194538643380427938241203330369357202306777699418921781472580047363492702741507862927802298171165219765', '70198248850625050655990271091780809131279636646410342739025918526822476835014657892897365995822005281543632450103200002855646347949575', '1e-8'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('0.000000000000000462366653119210200754101536012131893385', '0.000000000000000060263928158724437406735', '7.67236169'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-18261.2123919216000349573172534364099590430911319328288424188440187724443811421013387223457238536215926225022443140045861926293507393814035703', '-140319509983436944302669669.22959469450941740188', '1.301402235090267903971468121955525131756831209565e-22'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); - T('-472475346818122468757665022906424104282086514700546139294778422104033911157201097185232.9356094878445129096993717075115024401337423343569832676', '-0.0000000000000004866153002299724920226970875', '9.709422342347897066545280432474293134156576409161562172783895377093807646331921987845386179891007510935026172502905186314192871935707338193e+101'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-18391179105879192585113220019333608029947244529.44652382528440055358228582356376', '-131856.225044', '1.39479035591547649867005698253422296192664877953007294083780114392748319544889397068851823484029819348329500170913447525741073725321e+41'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('6450896314113636045.47096019696529028907229538', '-431908.8200970344', '-14935782771614.5072603449252406146201767873137666360901845966631813'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('0.12205908631751491295961258226918082044380232821819630409', '256278517003835644401361472618.144928103006342169734856778810127134997704942359589946928195523242347769590471009525560528282944606865058637605240700', '1e-27'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('0.0000000000000000406425098059398281508518444917684297358996203687406103075406950878391785627772387778578061805193849419781', '6197978318930058354121079353391.356270123951020905563904056655371685259878584579853787609139742190928595107285545069512308177337377747424', '6.5573817323316877872201363880688482034050776e-48'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('0.0000000038480677023934917705398182426209', '-6669689628206425960506958408211403952828561513641383982126683688644654333164720823552653985031621158.891769852084720550', '0'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('-6', '-6793365827756549193323796860313499.15', '8.83214617338140399504359557075447443839092597350907e-34'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('1408518677090.220167896131480891051094648589004373065909215871954', '1911711346095095923944902803491781359370106605817791906518095.504218912499767051381623040172453209730092773055639822964346295', '0'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); - T('-132797007578088940349926211760241414803647402421376896348997.23792892159645', '-1701611827927775516564614973063779810105086000983882827308815123378.912703618670806447441030040099430523', '7.80418926329451182750361401585051547668455844772811334047553570784185e-8'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('-590884861242163293617093.7024642253223740276992787995660007437880', '-0.000001042308695399276450393851409116010874384694561153002962237741039042501567066057521316448629055624780547030086947926312392019625361821', '5.669000593109447774561219009958841393772088394420613441914214578498439067447745711711104172222799598120242237250785925636e+29'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-1447472364909393408577030447805951858384942637', '-54508619973776022181790674.1711738879483079027661870', '26554925910906737257.865651374015548'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('-1698282253323721125622279589.08132160264778', '-36588616017.336159354547769118704090', '46415591464816625.89950467791588764198225854888984659204128685329179391195181112277308784235988205647130513265'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('-0.0000000001728346681414185953835115837332393528661230771657299247831783196382015218634433005619336173179480399892092671637927785667244664', '1383965881.8', '-1.2488361918e-19'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('-4200.655301241575', '-0.000000000003291749081743256944461923783605118923797595707726863855985331722143509605373389325015410154615732', '1276116495190750.09745770589788051603719885202408563'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('877038807529.783172486', '-0.000029209862891093207595413365024177509128219463737317144089467908137420440648512427860174664', '-30025433902232162.7'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('-4.6408633251187', '286479092605471083193073918698008180482239006030252783557309183848433607004260792891230391548122.7823829749544423447444227336', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-420332834811837519083151310779822.674520517011425285434915490010798556682722514686372849111363615703534', '-119372093809512401458364321778161263935763724902835.69976360734010871610858783314726459546649469292009', '3.52119847610767522253039707960588498792e-18'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('-503265559715361658183921070977047895861177537026026456.109010394162', '0.0000193627364272292518121424322', '-2.5991448140957699129320512332375913453644658627723198493046925506570999856031259401970274657799e+58'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('-718740639593637440650569998843587880832228790327991524480269330285905900765.7553786602112662963770525293', '-0.0000000223532388156215347002372187473397195850067720560979370528409860479426378092382492968866513342888989186813893183200510613958831588511668595170632436', '3.215375836683435729143752908778275268383734423571405894740894706182122467630835805745819338225351859e+82'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('15919129.761571574442700544984542588386223768822496273633714907581964890531644168371312042732204', '-11391106082802056.177820844865101395010096479188135272401778080252913008122776891526790', '-1.39751e-9'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('0.0000085600717551026795869429429343722866818966395448334155574126290636650121748943963191466064495151249911159090570604721962959493346606872796618273', '-20281610814854557999097269', '0'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('131977712013758710275585422995136772245460579344.8993481134', '-212818196441274972834262534532930203096181143190471914219945641669731308697988948532275323902939404240614', '-6.20143e-58'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('0.00000000070676459140821697142817934837622264413789864469815713676245717459192837442971756953392484226804353805992171088', '294614725303407521512.865852425148708127118528745039606260252144109322440114', '1'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('-19539376265352952757542646.875375665421754785138638245258349740095637', '-4019709446983400741462046003126425681656527577169108611440961983729973333374593190790505052551972072130345000734988733070851.872292165009202108', '0'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('0.0000000000000000007561234954961080050633722714187119744', '199373925591174867153218862608600168609366436830371491017392311675346692689691839738870943992670941223084334019596882033', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-128298154020104176451531500186484300024132654695151917200818949908639571998471784180307267585182706454784622128226532979088995574532696165', '0.000000000443354899283588936652619267294663168843825983520909084201176620380223190447785', '-2.8938025547348048479226089027796572991789582389568685480052735464004698133602112614940908387407001993590568619301937067062832523941619422261651454208578361981242657638225443184931394e+146'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-843919557133465751446790586000226211580634781.8357483272722173434588169966498670918397654653934539459854951483221431386642465994284', '70034415.278623319628438752687950698005396341384886586801532577403985022211340601119987996696748996231070239588849449239144047229936071714710', '-1.205006929487503312130170074289300991689357468539547863091483694640727735272757699346713785308038760543e+37'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('100901.9733615553273', '-201226503873.0056976868225638569100371875796147830855791027270519481558676022991', '-5.014348081365797167297948455069034074781065192103055317568e-7'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('2185509476186193976476236444601120840637672231.456972175916243', '17078841521730582448797416.1348671910989474552473005821932271105320514992112534243771176204', '127965908776975314465.14597896958267934913124'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('15647.411671367548270936100581196549646878636254953620208916953892648092855965022422928937005171', '657859080531868266652575163546476845742007642976608029557287829321150761791174807914502468723877871807128210385430721558259', '0'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('6218218196156610.479944398920633145718283090445629229605963564515717383573301858136594053085442738204555751890652557571914754051153724128880885', '-0.00227638385362701198988915503005665906945025452190948795341724419090807930977738985287537088037219', '-2731621113130365931.381125250298985420736'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); - T('18324964603109953.1163476979058181', '321600514724219251804651628897079178363374739602892807118446489711142934604331244130586732142939.4647', '0'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('-0.0000000000276771889943352608976901953339522239882950165675081930010870226838224396', '0.185461366631453934267511690392859410170948689453367173967962195436705541199337', '-1.4923425561365003136538631417892207196116550900382828714295993797e-10'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-2466348.4', '-0.000000058622601163072624633393966377309533289471872220745058713', '42071630242732.9833712403637446802055286788851079998534'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('7500046826932982536787796.8043713713985004174711286749227848244678', '1733234.96442639227196567268762930', '4327195666408158002.8338323040764618434874465533058375322047867728565960041098650697742959068730580953'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('2183260098757326474321869599229.9638303553687602348196802744272160921854211920592502212331209', '1243856652233713967422651273546182917195982.51197260', '1.75523449172107949421864358033410249400625452303716723173804599075162589353e-12'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('12929676.38209541477994771901774848256324688104514698097696', '-138214486183191079184253392392467034619894009052172102200211912574644783047595398295251.512899180092115', '0'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('-424059582917507499884433612600401977628239624.18274777', '-5277.72913180397245831', '8.034887208630965636246243719527896316953239535951297778143391326854211891017316e+40'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('426152213.40873786736352916197808', '-2757276145.138176463942019897552966', '-0.15455550731114091362818891934919369745035508020805219'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('0.0000000000000038217663585091307293590381', '74567612397014152796.99581455716974', '5.1252363266792252220034125739415901045092179113e-35'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-305636263804921543022341715022100896164734554367656410607052185540656585843997.765306320759234861824222722689967858185363762', '1623413941844.8092848033119', '-1.88267610574788896420488400269727736260775847848662788465722368125250685169287203525838917354839721585720330490870890824159789959047770663722e+65'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('87942.865445', '104793948401400040302571994912565224194061969756796544296236980540194230254746.80', '8.391979383e-73'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('776840698021740039806762816816872348656324347091831898695969961991462149507117612390142161282.1653768037952714605661541111885036281', '-16172748219127975263940729848368583364374580459090634000636139706780939015861371915.09500704', '-48033932606.639'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('47095012065726011307417335907012751959524942794714112221907715739961716166309275.16497012213523813719418727309317419958331373001', '0.00000000000067248144935870176704051772559991208784645061252866075217397512891140598198919813862137173221677873526377828856026', '7.0031689514464986423359090219717723853721214893756358432888292505514066899200923039123867705876470436047631369105377740265789600367951175515936768289179e+91'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('4710530214890381370276579800620538761177847584623583448617839732450139121804', '-147616758473374826828851587343791481465215900415842328993525561197826639880872', '-0.0319105382316060339224807086317037923016040448952462317561753805309673424747818626928'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('0.000000278200129486982077688649271481571260509854740782714876539836790025938358311', '0.000000000000000252909979128753340269124880782612176600424812163698540567255360265224242218771207153316039138784961398652914905155828749095593663889994006049007679', '1099996648.7892272327941351901883441557717512310930206254292705843067'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('-3165462945043449825822697770173873801013', '-0.000000000000000000559089342606676757512810461453126381542470013180847602350714641444372036204185074951205986112031426110205407', '5.6618195050632096057165840473322988023200165281880374735653572833787186852205013065308132e+57'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('-262429733692810207972645037144400.18269806103689', '110033413673906528545769691721255999.406368311361429', '-0.002385000382434223681365443460195'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('5213379032418921.8', '0.0000000000000264675185669630528861090418602094343870859301566265134428963592318723379747899679393693690958264490140098', '1.969727165479841778395949688752678132716083506911032610296299084980225536183461145035291112e+29'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('-2236796860017822677036286909688240244682842748105504673512925531404527284134033477894225886620573808344252929159403', '-0.000000000136393998351376511719645635269388412449720942729207758590290341887036848011273', '1.639952554404494102088386417346975718433527554531410172228983218567080475972061304927175860610465118785193152751004073154230056e+124'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('-353294560586778145181637320.920664427927685483540489865359547', '-11440419371887358998629655429786795668646167348160026994881761059011238817402656120075565.452943242502601569758041', '1e-29'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('-0.000000000000001477376383378754834999381638465885543873270974437045233067902339463097874724054585824664003739542997850789686186258897', '-750257596591194896760725709388346524334189578568310794940856716941291827.154063498104', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('22866110851600356915197767841862317221498636583609951091122365228465381622784182673719955.762216878558951', '3244540191694802958857712.162', '7.0475659109206846830966960354624130300913036527250327266345842026204020975929256857716622957477137929033200652171298089486537004211007879488390083991205634127e+63'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('0.0301241657700865517241455145898807840960061286158190134771938997287189891336704261487445150480999772482991', '5214673821583031951476391179363041242596704869859858115848572474453289.7076117703318753', '1e-55'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('-2109247614259596462261104154037710034.8118633945841888040142011292353494685949644320160729063575699923835624', '5564588430118519605437541058812832442564871117702632074340959538752166301566932366470175090929575395276087470139854820', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('-12495599787027704660395044587542386281629884014618025485933557.5356936686795029718495623556234410602257435149070394722171923443103572129665', '8.3418405831175531566609189025648844027', '-1.497942769646862329558576775763500083835492309824060671140650026458127671289048e+60'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('-6180031466962071416984693901620893946222715098068634438275786.202095455277150189161450660984327458412445725163', '8244204.49927', '-7.496213209545317539468486112883412138142866524178365171000800452704094992e+53'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('-137253440641025747708581049786105390865287089352987718766633682921586.811574722902566767075663921435484548776831982025538', '-6523941909150.6993143270831567220247575410360173605953571356142335551628703309802', '2.103842164022176182023934114545642548562175441928005779467112545165684329700005415352595605350561965332552757982929548425958227572e+55'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('-4165494587924624849546177349771071835027598328578240377.4240162018756639096756752853356052697859975974337308943842128108922477811014882670', '-172424234368962791956594727', '2.4158405592865049774748458477501160510327372601190215397634596612506304490787184143867728540352248333915351590364e+28'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-2916194358790793748898617610079310564.2186861795', '-115837440673706918264621131113267068002459561', '2.51748859594126e-8'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('193251171594020881589793807041776404775969357399045403556625230079459931.346633134861296746184020663851437287163504617087610577194728060332714220386', '31730278802310092089786310690.457828758669228337957197427153110050322113084658820753290356126127083760756700405541415', '6.0904340865719534107289036145051050895212278e+42'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('0.000000000000000000276239841509500540675216476212', '0.0000000000000000002047828473753414442566556610560196982396419464842721556757755317854235892376563808430565208641170660276', '1.34894032898755103925760363733943868773491371994767801808902220616653851248892194'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('224651620300431636505792537643599012708467099084801373094962622700759738677436409866260582748022310704030786577703815641', '-0.0066805684041666466359904650227745786004054235142965354005566220331912860200763605067655193391533215030524905', '-3.36276206917239592778149757849243713734324410400943767318036544487399178832022185895841600254358259100728250836619547719389983155856391854740459e+121'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('42323448156024821152475613027193905826841455573105120602956661894.72517130154846768153348728741130739577095', '16128690281486824.08571036282540824142003942384354643373591662239551428402612976639671736835787340626002', '2.624109423479067021808258190546466725373963253821247012578250624167785203029270785095406864296817560595583925953580754373213850245877904131849442e+48'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('-17260355744028898102536840251428727.47167067', '584813681248.65268', '-2.951428172332735296210773054759418636496212202657535000383311484056900119295387196738446790702384e+22'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('6351.102', '-722457543832900.8959669257551893317038692505171023051335267221678929', '-8.79096917765587492179148479688691152233917e-12'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('391260775279904506743696126065386641.59', '0.00000000001211721537826195346423931590711810292741787138412158', '3.2289660872234610718256524076193001098974866804053393534890149668394152381149166140221132895885314238326241867228211778809596955e+46'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('-216805576094.3459931437568298361', '189836620399483756266459271154782254859777972784322384879244638098502745619017524990605375423805.391793092702277561096789473723751120401', '-1.14206403189285e-84'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-101635158639251759816081198995530080536806974830945335098720636320332879027548146875327300652940771.33881663612345434488400915938302448892654931', '-22870.4438146458357541', '4.44395217963222760435076883637477124931022534160832120922225388368844186768410598943777557078009307922192e+93'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('0.18218115325918652080364187814856610785', '-0.000000000007500258887274874455316113171960391907638358845596334587266282124798879070171140855266399060309474525609221663629927361079959195487451564950409729473', '-24289981985.592469487742089854303512889'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('-16512932730081.3826300879467559316857426018', '2998167170026065614480429332151694554768142821397043829992688178659454700940895488489009003609801879265966117001.524753950', '0'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('65474243896431235221407155339193508007673819185311743.4929500841614637675', '1529079623512331186190745074117513973129237085479934070925384733161', '4.28193816003089399970159121184642628971634901538631146521985635e-14'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('0.0000000000151377175539751752889574872158236224600095494349763057043523648238554292274543641471058359', '2302258641188299400222169194354367203323152593379218803549050.6822267840859875402431199757840123770587', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('-138012747.387969833778248240153500672517982002657538729811077629341411108511165', '-0.001167923728331321995156', '118169315375.71924426365139520957072649480751778080726907344125768775443144630784'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-2136879710630007092.831760313', '-12298.06630126523380017449215', '173757374393904.78726879348213705478299093879933824375736159'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('-5522342293.36236639957030059768955363363752219815573866587', '-149888210623104707936695808130558228', '3.68430730502770973586717827530357582250469108e-26'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('12070.634461810887', '0.0000000000000002170518561169756999134341773912905638576608788683698885269302555876693467937968126587531469', '55611754157521063233.894395304456955302199815766485498922427745701707936648911812149'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('-2794613797196490246184890667417633192277951134708479902', '-0.00000000000055205', '5.0622476174196001198893047140976962091802393527913774150892129336110859523593877366180599583371071460918395072910062494339280862240739063e+66'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-128399182252646', '0.00000000000004384918822899140', '-2.928199755537398742704957490883343090005134e+27'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('1664173189394725629403489840805310542525504230268679885491575546', '159061.358657019355995297593905911963566606708503108682009776024201484457881481319453646694970757989247313791259204388464904626025769', '1.046246054633009319037426165868548680330954199316448547207790019679e+58'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('-5496103887001714123841940726282631687942749309284260662935217418127390919', '-0.000000007339252011667030488716008717202577100006089170051776558272379465113872814464160200450895', '7.488643090964435337146734997991813537601962498849148092015498704386560923558302953709572716175492692383364303721239607490582899235482e+80'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('-0.00000000000000000603190124983089384094465950250297812148627842353213834389603743882587401977996871804237119069462599161650353808957273964000758388009', '66788687461109134007614298445509100076155808825659873241790965563.06996512177773338', '-9.1e-83'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('24097795042803693912303347503674593023831164126744932918807129120748045585536768104874424890756691468811871628918125864', '-15.4057104716018806266376902241538417152751548380294763345892341696102303929964485772895', '-1.5642118607398450762022724835594933407291033309911318100172674173373431537337675741460926956370922433277124703376970506670995965626718654049750834794e+117'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('-23143914572846690460428694056056827835103733729201347085682.308830442829417669669924', '-0.0774311952961774201982867710899774700743693779812149334972367752131408074834460856251764984838809211962487092302927716073627998787103534217040352', '2.988965168924525984775056195638973797379606793876425146799465499304310477199305787549502376231360786464086479911412221475401723286892697363101427429481e+59'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('-5727778678002877810.45076524', '2.583704665523832219756485515353', '-2216885991047123607.997005418357098898392502671610881062456959608308446729212866225064625107778214916480465'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('-0.00000013250095007649612402266873643120113209217614680', '0.00015890369', '-0.0008'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('-0.0000000000000004774820408646375541748977713421637649627137243928356160113440521759916440485963369649386109947525', '35468804410', '-1.346202807811636507808913120740186136324051314118810513385850132679991409e-26'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('0.0000000000052518667918689286398325836253575966191256561666116790606153644659683456893044628665340335722703201936579', '0.000000000000000011272257625878610370791190193812022718920399732384785698873', '465910.819835398728447831810232764270036767345693331370229970563773777510712840455109132787683'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('-0.00000000003830276111906255993970801935061062576870925900747891436201795529213200339740471374458939163', '-0.3504438911421781941823943397315623033180425382039257701257425602048412142481828164193', '1.09297842215e-10'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('-2.31', '0.00000000052946', '-4362935821.40293884334982812677067200543950440071'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('12860033851084408135641782273271604741.8559086833177152223624717900', '9.543', '1.34758816421297371221227939571116050946829180376377608952766130042963428691187257675783296657235670124698732054909357644347e+36'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('-0.000000000000008921227585895644291500450248495227316599941600725625147897184043668351138336583927985640057798252088782407315089474562798', '0.0002620485518132748289137743426953465691588558655478950066741046970927911736988499887', '-3.404417816532162819930437617419212728487e-11'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-3056.440815582082124272599611849059840816357258009892', '302.3482139292620457592248865327186477257473960864801952575203547892864175', '-10.109008999461703'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-363289907705301330185166342887.7847', '81582297388203841077960836800056398595444981404938864424325392220121106294894259978964856232971907601192942535015535832951975168528.252', '-1e-74'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('2296516224651979830297464.96956839247', '68045824807116579941624973733395808321854798672516523570524572686043511663861855683892323399666954637758699354872406770699870692899336', '1e-79'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('1109420413960762331029.455835780280393628978489105963', '0.0527574753126000904825740856791060169906867869935640611893325419321672632064534436917408156809749496179791161907245616', '2.102868659630114970998941026066197338658552286853e+22'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('14291471321399196708748924587453402129076677581537443839514.573203083365312707541768208100608749831043311867206549317352', '638388488420920295891589359021608', '2.2386793591390922648023566830716199778412530029e+25'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-57911300960614165692638274958417991410207402319875633999887568371029868356080110249', '-1.4810200486324264339038329783179927289228434911039171470629063157559084909999560995832114991931104344335048303411052183180236470833601835780733623', '3.9102307233510746487570180875868531324897993346810427093406827425659614992815954340589420570161650813e+82'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('0.0000000000000426285056506080950064133048850537137499693259922650165245373450531748781558436899315472239295724725841163665769432778350314366433266150', '-5779195907704654032548969461228542570066713638682962217178649788187658662', '0'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-0.000000000001398031380745122555139341299781437884251788646184279', '0.00000020146216689857977364011615129682178851026745397012075427830879338861', '-0.00000693942392394161282059818741243869455460096745989016115912589356045542051718796348936'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('-0.0000000018281405235993306573729847264951062317741802688456526747584219244685755244146239709408859742677', '-0.000039977411760397363452116441068400613873854122773419085299', '0.000045729336720350989782'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('93.874830678659540224', '0.46388617207938526711279072582642076655074168793377847', '202.36608963328756896829965459129398111962414293407503586'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-6067609112729336.5641389158174028843', '0.0000000007132038331186246087595345637228616705970872979896242214523505385786974090998151199635608250797124420975179730066666021352180478401103585117451', '-8.5075385618687962529929035371789625929642334291459295164276298211538189129665534e+24'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('0.00000000000000433771844284352802326548983713676100075889655381535915309063548269887629783063924332916', '0.60476927774613064820958465516606346665521900423', '7.172517855089210536653893878745196319021954130581531446479671815157566119078637208e-15'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('26762355160537621016082743064295.080067862585415820836397592379007572501818714958250145285385957435', '-5871.665530424', '-4.55788140892369243973252976993880089852606673167328454816855114006281555607073627955e+27'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('5400782777118266253220.3604549383146344518474984883630457317782760', '212080883610.0053405387143231717032886408372941339512826', '25465674629.353880655491465646635526501057360762443680100871194655924059751770000081549139011336011'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('20.77041654716778297414458217600899840770494097528715266455063312827520464248564409990015045356357538488', '0.0000000000004484442840189590379525674891037241309254709670584590669581148534191', '46316604508866.17770208200452'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('-92171139886.2', '-592514313065668557458.16374560297863802699287438060780939136308560270752159071394275940584781865057712029', '1.5555934743467478405847657874615348589160126124969369199300225288497841912e-10'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('-1.73141', '0.0000000000000065059890886460822933200792819554410184307914670072084454675279458029847045326173763458710374392', '-266125561603164.6481065129861199786500770384274172169619885156974022934989'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('0.001859328353159714363321469660024984845786586153722037720449296018893801641919319381453625004345627219334745099168087651782771195701785834366016', '0.0000000000029762686563045156688993', '624717916.247637951532404712362243884526'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('67162649430668510155429.787732014861061501618925863', '-236.614826553838478207932465774710561701685', '-283848017509530683827.9556713847709'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('-0.000000217646930938741115111466517044242535716684253500115893355171981150347876580196232672533925973269540234380973583815450', '-132285417864115507435251390828437786854099674431111764370942550850977334692494917177761883791402633834197328087', '0'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('-0.000000000000000000046680932882216251617394884793706741937714919553715649951530456939224676411667594694333115693147475611796139019549919', '-3644474484546523437086163830771009643582875859529700136548813411552777987975614101', '0'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); - T('43.86754082995769124119405561033228740811050643940714559', '-87769101040835904261149660962349618325876095974465061347561.07734541439622400299392053847494492509159707970719758153633707200', '-1e-37'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-69097286533891955501666445951695889917944041836679579490274884686479808450601762828719379232555211.464168189127859822639025310124291164355646968878', '-58821105741403076530530664065722948506417551033305709063129798777107826508171796269342.01217334150981725', '1174702271624.51431865906695984974463725771232026205875331837518080884'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('9041636265152378637157327151399645223627585778021483146050449875915960587780957.011514048616324401939780019262', '375428654351101566466264093976.530146667443907343822845172341997674633876621072243523265376455244592144', '2.40835007140840768388739392208756303107845733097464640610139246515054013647374065111574787070276398115296145362274543291398075e+49'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); - T('4360624497214267907387005.48284527700915574059974152280230117285400903188809898048729116969500966813507856427810907', '-8119801838999011.02575801936508385856521986', '-537035827.18858996800046363321799539681458780089399070149208302130584117879861378917309001785362625'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('447538448932939821135533209385574726.999129182629528513369697885680276177980080472433938883828696128997303875333052874470109', '-6368301359731239874931361545116070401531720301695926947100905984400301695842082221435827011552438929050651858585139063', '0'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('-2063834.517626562523135232310567316793', '-0.00000000000000070107213975625877203258839288362815899327451913231793067497874753297109809930914797490313679024856727952374866847', '2.9438261779224236904702214889776893449887784437556784352025548527885572862188847200352206246068587691771714286e+21'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('33027008169690105634816068559724706808923415773327.015527858161928614391285425483366275198184587804406704994844593736881', '1955751768.2230', '1.68871166097415889595880934015019445864504426875448780412584825158719987844520908736012871751e+40'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('3374245896870844425548461008173716930805794726086165400744655538619069411443360465712914030117090495412392208057262216', '1438668236215834660636686862218.430303427456916257331950800032119083925643', '2.34539542330218431284055647074890096403960687735631018435380799106468168265649361938388230442569966738108031238185858529671402260720524113238085600314009172748923207492215e+87'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-4397991762183334515646102.4647946033986239732551193534808541946505424403119697025954989227216087600038', '-0.000000000000000001309310777068216172367884926521215644215562451382653727249946321416245076207309362533728642519049131116066668568201', '3.3590128785399858616894844930849641709373058417350705338336537223329422059258815134387660076274443568160804503424980334109854992673514690137e+42'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('3778149113705545526018562196775435279458', '-0.0006964468917648584', '-5.42489191692905607968787881365542888273387455388666683403075199311e+42'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('-49586497931839593912557000362055451669722521481472795709900395803665510112669010598789.93256203887798759539', '0.000000007730636239396951030874083637860149480910614389067389278444', '-6.414284205889335880923458303359224556138242167330384329448398345627090947349457268582143476335216106813906433026801672417197666018496833222575399337393674433139347850478041119759e+93'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('-30.61', '-1218773636243305682928698105414537557722577755117520364308947828946', '2.51154103516309388992739424407303e-65'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('7837.85425197', '-4924201364768546154091768054816877908044319654750206853683883187450708815915970.26120', '-1e-57'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('328612846507912440195895320949.97880973689', '-74093433362687796234732796000026611813849885047953975898959442905406582392244924227468980782203235995581849287944526627.9467766', '-1e-69'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-0.000000000000000262386736781607554119176572519838669441588659442395142995275179459235189042024362526997735063369741519818929464815095248173849714455', '0.00000000000000103533440318658130846004063466103711293231818809309123094434209882633604277459619235001', '-0.25343187280749706110681147629427095838017850949849764966606755516172'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('-0.000000000000322432448564741584339199183214950196731593789971512714485477682494095134481209913223923119930846635502812', '326622415640382004330091150077429.9604314115936583647', '-9.872e-46'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-1522584539163.51961939035517', '-18701310931279048588339319679178119484886874', '8.1415925587168700943027845074751571624847931e-32'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('-90558127980337144935926146713051405660023043.709734425117178325791783664294624970951', '227135242088470738342348340673455214034602753816278843099968.5147421782261587205588136', '-3.98696949e-16'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-142360756712.9628518058827179348092374075157599015252566070459583192544507613919918737005236747495977670122253720', '452664.7791873838', '-314494.8828767426713618550484858325223775720701584135560211010457708'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('-332430460212660418334640685435602340486744367646333583929761668829129441741273860735150261087380331642775562434.493628257286898761531415430936915752', '-12773822173744527946945352241777487614384940699496786026430373.94891373254810706379263055687667186587167044988100388564148365146145721007864602228580', '2.60243532195040335686018540229438057542066541716911101476582563056311201664783530252883873795758810590583577899737316941873834280768183214833003e+49'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('-1456234373638105442126887571003692582872067748502.83060615310841144160798623533155017503004909109', '-2577402016398059729629852253016480016715321902659900317234011361788515601490353326785.9736500332116358015946986445909693', '5.650008669090764573237722103893029526602580293053061797e-37'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('-1', '0.000001505173689176735670136790476340231206410120652137741696393873992345105366801675965982936861911208213462', '-664375.1529745091180083851734560063139843083140854426978539692950873529056'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('9398596543542648604069684434464332961225347551100554373590714483735425042927783468545519.30', '-240475881254266057645992650522163857746548650866202234477713142554822191906958234727013391569735402429880449813542023581766.26252785778572365938', '-1e-15'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('23619943335582180681563953221208403530666785379061989956504046069219190202869927837503698514687381277', '6471793226090782771143276213019502359606942573956983356423480330897279844876426842310422683095354515904769089', '3.649675215264804421572736003455667285562991725200480593830141860993925734727e-9'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('15280144164041863971453423592085478238323177732723827062915112531134543514121698538407599390583581.978317', '-7.93', '-1.92687820479720857143170537100699599474441081118837667880392339610776084667360637306527104547081739953556116e+96'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('0.00000000000012183457923138078266692462295149758615914063', '0.0000000002143248855015892192235420872657900272424743646164899393878249562420', '0.001'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('-733440663', '1038507994476889827158389690702181172393885088789796311046631163736129461192.247844400116002721704647439830896', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('-0.0000000000691051292899636275946254155870639156043778701438855762023283310983413001370155778120594530140708378895345280', '-10027311689094384145668140987547', '6.8916905e-42'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('11359120624522154.53023', '-2550066103468355693910845303600708535551713199276185341634363815744.004717047270320163183448760067867802013667339034541657861414156903356182450297949', '-4.45444163548253378e-51'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('-52708994559929466242780826241190188267288957045778695793224196458877.89252001756041056', '-1522917728921740097150220037765480825123518302856603628725087304924959086265252527519267055328761803397973987775137611395540037908247690091091996', '3.4610533162056374751e-77'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-11165328701081.4257112898', '-24959530845518955496605684781380264355964682863741574790385933551049268928275747739569707770147273583424324.041182416708196547861', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-4773610.84', '22', '-216982.310909090909090909090909090909090909090909090909090909090909090909090909091'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('-6836773211644461696107713553277748809321479076423818938386143460001184753786637479647627545709037633619234477587974458.12414165847', '-0.00000000000000515154630003858448134268186053972', '1.32713030485492386268968038852626076949228451353445518063130642075005837958980212169859615469571874484247092297182951469771823174308362479399401805152010109664594972766438102187936770325839048e+132'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-2778.0429380436', '-228574120304150509.93633862948886848632880765855966', '1.21537947268352914851929108947295372671956410842896564239e-14'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('-40155867.4692', '0.021958056331393069602794177925507490', '-1828753276.84581176220235398719333810712'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('-0.00000000051364856828450921948681529991843102776822771569870399038842327218548974035030728793', '45297873834227276911847741.460307540547555645664226582603209420807095413867035', '-1.133935270702251049987351810993966712e-35'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-34755259101316819628107054698802052991490868848405157436437774467957274927694958294973057545663400', '0.00000000016806976065534297209525672681893628545526073', '-2.067906740974581308588601710681711152047271605697020136705387772142288905538099935023745554546254066549719693916540022e+107'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('483701128655610710462059386841552.23428026777405745634056109804544166892563233022827515', '-0.147748426679463517910246778', '-3.27381576593697406393008840795433400914034e+33'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-1768719208173205132370941848398177.82555203735963819962601112417663490', '-651791921152437137591780698038712686697839014597685.556625352529548108696424', '2.713625546395116826835505296902051157787896068444841552527408183059190079795466e-18'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('0.0000000000000000000116409211334756117796421454726040182728029706782586560372354', '-195750459249224092174322.9524725753284699693145539754539744261301487720930697298545585583', '-5.94681676769642296321783820617365e-44'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('-1001663574341113191015107704016663769094751976791065070936063655062457138070317805959215957410832028469518206846767458394047588', '0.000000000000001927638461729248159701611055290267930819901123886819050275079158796663198260911909162569824451599603350160262664574539026827892407612679905597', '-5.1963249033874311854914483288632911031720642484893401316699761274458777624492546940478687383187802093971235833254047331529086538329373017559921977388196364330715192133449754987426594465068690278313031907606982151272535658547549332601211e+140'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('45107984107407546633731040234669943746223757421086812276151175', '6570739.55512198111283137872024497742259916654387981139', '6.8649782462074999939174187484334558889424532842877095510401752511100114530695303139647748256181475528007192674225442277871479186150732365801782e+54'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('-1939019173017959289673537548091.42574322', '-28364816051020445350371723077313', '0.06836'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('0.00000000000000000003958711472302434', '-10336921715770888655018287383263237433033131293696708328095462.26581633038219092238605955538842322', '-1e-73'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('0.00000000360620216751902973550311438153812255550584486477376375794853593093274243571181897148522432', '-0.00000000021361331', '-16.88191699065488819729030172107778562817947'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('-790158223.981507618099539817069435823662655715183365767487593453916243957788511546656932240172412405293980469406614365235479450821540090', '-6.390823560', '123639499.129202624723931482951069896797879319826405247759272117022'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('2816568668914919894184461316328112686403162283419526.037898686935349578022761207496388884025302185306760500150819738851518852348581120296091201', '-24359069157465989851999751295699220564079490972064971615148408960511.069800945647793749994706', '-1.156271058925767323491e-16'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('-0.0000000000000000024890937874691414832780758414290817480213020179263215656654817118841152359625327670686290364905590966774686272638666774', '895259242907016.0502793593420537333', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('19.8064649721071437008269', '-0.000000610471699350340626524661977449179143416264680806880502799487146825848660614272804299271821502010143241929387462842', '-32444526.082347526'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); - T('-45289296066158223218975737417', '-928257556134713226122051113853071323481509785437.9580004683247946082155141', '4.8789579752783204416317411498894373813729502066779191802429763220593603e-20'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('-0.00078535502903380947391345955437624724068791174093701655373526043250494899077637070000824976392144327726121891764125927532007759185560467741', '0.00033304165069526690096299415595923020128400941162386700917975599797630916234477195385920220999258987846764383579764299409515938262', '-2.35812856258152917551026948879551194972598994164'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-0.00000000000000000008825251516501312058940920752063296903840000436871599720760748237461134319724333864621583004595932821349886876529856620', '-1.069022355834988402', '8.2554414959901509e-20'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('772501446257033183307692089313828879302168968892627034487', '-81384567655316761750463795931268411572976483902961095936051873255429098175748058407202432776421996767418992938712067148960006', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('-0.00265017197393737674878379337531359823824938425704924996611013433756744890535609162913776080524748014471110688967245', '-7', '0.00037859599627676810696911333933051403403562632243'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('-277310922478082.727664976536472274', '154529797348502559260809623214894553999958281920.68284', '0'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('0.0000009313320140538311704253939589245127674', '3863.515', '2.4105821099538404029113228728878049325549402551821333681893301824892617215152523026311532e-10'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-2568129441898937556137786104568163040208787348887340706590516102430677178523003610340952122154266048038803517.9730399', '2008033988816.448818286257251013236779556387322447708', '-1.2789272772283169601264070833637617968495425557009005099026629460069620253257540859429895418421573577447732149647655339979825739828772894437610209251266094e+96'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-19864358680856516816965874962516514095825848944861003560824471282641009178302723950309966162223203662500825173538382807849542795490864', '-212016590736544138965692245918445194436743.36955', '9.369247289491768092776264587159160494552988464730248092984466747489758038653366618968029715883528381407847681571034553201507075708328995885146302574046779291068619982154e+91'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('1511027826251489127749427412.594728420145970907761608905', '-0.000000000005054254929588544894407021979291751880822369870454217947279389954476649584113736749761735972913677160254565233609609842627', '-2.98961537813546413033570359173078020590873199079297173668655504760939876822597828916836670706313129157434826e+38'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('22285404622935267793795197992056404.53391687803083721925751604043871437161875065851355130686038100493717842376997', '-4433819880661.57', '-5.026231381237359578736427609583397447404830026960320692274017472790674094608582126881777430863932037366e+21'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('123562606073560146296123.7046584273217991', '123660907906476375.21060629614283', '999205.0694550085812041263906'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('78898068989628943401506603.08270675806502466782931937791', '1194290107270593798187109116843401631571498310092606492.3812296137492117', '0'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('169618.404758790672300669003011659982169103226788460655085196350560268581341040077434921194540955861041765539534830329925806180771926', '-33241831203.2932498831181596750871234634196372764398718354398950105612738023294', '-0.000005102558993259874037640634199954927858349496975542935252463143304542819421369658162930206'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('0.0000000000004256523277467355704328266207146459724948242380197393426799174232335053760581798310771934582472', '-3751.6999327899249360004425625782491517752048297958012648165386626140051399995905192389910930599494479093645321707694003235782006873', '-1.13455856111126203084455485321856616400159860094794231149790756129248740961379556119e-16'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('23813599381691561229007340870372803387640938880462859216356795005078604814.9882719216101924236603961', '38308651070420356711.31559427577116814710341917692560657321003533709179197980154442215370094187551437840068447305431970852934823060423749792', '6.2162458651745622955827942872136467555275870267453834906201072823776003e+53'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('123318241287275162822.18921655260382872027152248806374505432037854629660201486592877056393401883557841579361303737894282226111043730914426777', '-456456870233698104500134908313823656919763409036810694906752062765896775554992772273526763414.821049', '-2.702e-73'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-0.00044924439041557164526403710647109171619023074888798', '2896537554.9643121132126596022879137094956679374358705958834082310239566109418666114233785128708983990494959155411325221335148', '-1.550970363376168035694279112e-13'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); - T('17745.2955392961297211454125402462484113848245919170', '-0.000000000099224718451726955927686055622403272238198795216324565595298085034868448575767391976853193092154', '-178839464764309.2591447558517793515299087235428648310893153237708280103884'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('-0.0000000000694814101631245596793089297088211135109252430430852936684424089336464000093052558120735468149', '-3798.732284911850396016', '1.829068356280255116529398511883463143917963805234e-14'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('108362353608827313268923', '-7587475', '-14281741107394398.43543774444067361012721623465'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('-2437306615589890757396045177852340188890781157666797.758328182028601588889289381762106826', '-0.0000000067236341318004956925274693470194553548248404304579053109249950576333554557142672086384285660967276155604', '3.62498400093226659476203739344917752015130930481260759192617567062207360357352316987495367303747021613308511833497156590706629890507591201133e+59'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('244988517990808930085467508261590051387045702050595134044233866221490340947152783388022914260519574142338054725747610963833396.1981754822453301022423008', '0.00000000000004844724052', '5.056810570865697060045216962577790413790232155220285269701339559834446086778954141927729225815554750244793812783861956144977072022831533714979526398437687530030657770887628668597697047947365733679974720673729716071762759708981666e+138'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('-8661.23764355576609715813061378733799386150386113736711466', '0.00000002746550005875609134264398274317779051', '-315349716008.339'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('0.004084047591682', '0.0000000000032831619542706580584142574696305103978401516228210867372723583222083349', '1243937292.331731969037188'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('277.3055135528460243580', '-12816393.20060667602565', '-0.0000216367826121095837692489281740042365093693285056386368353765783488626148054053296096'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('108943826822403564658955722844387181692.08070', '17956512383891224117968085143785415430720528657689150267073648.4996172245174500838100977991267032167366120333319840181577617438967264566242034311425', '6.06709279025346830003806908834554369487376222264450832057860002548116e-24'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('1218602407652272553917425396824889774408764317377422710850106480274990119689727903314661655850713934024851930707956995544036054851232204314825162118384', '761190693432782933.64337194443708884826858807341264891408761000973550405990790742592204569', '1.6009160623820493873575601067919584360157853271743142286601103008698951935875610296249851613091888583864370374493428467326933214038637700347112962807200988021831e+132'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('0.357993343189568044894696414183551838912685603488527040312180940359257', '-0.00004871334604822953683966094899017750718162', '-7348.9787138647836935789771'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-70384419738273212082980167906205025390385278922361099370019370514471617614918759874825.0968041227010334018165511719334774882361', '-9485535443.3721609', '7.4201841486400220783041528838155943601598191710271697019152285206166947685907647495910649208911100666143546691486096311978840081494730449273473635655991898192730622510614237e+75'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('728833029216775114.848868091419422053', '174273372885738292445587123518930875630273224225600720393234457013207634849211187407006878404245995795992915047839719297487000353613183952930220', '0'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); - T('14288725.298447668461069196056326124584479502434011463528734406498090064700828497758', '-23577164346464368715591356951222880586046465914352944685473402841563781393590871752173710073876024828233931511264641696246181697614580.9306164364', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('-1072383742631234330836349556630563550044561408769132023979982507867022584644999221.360492835541094441894060082118312853118651940513', '360947434543926891199091335810194343170924006386178839455975948816.1722627808116794053224391', '-2971024697782486.807471809419726509097566494'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('-5868052.81873921557294337625030742481039656', '-58837964.45893536843884565909543056590172465704349797267166369942', '0.099732424000403528902172910358489624611810837087'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('1612040', '0.00000794103475470686100081692084019937802726640263203606721720379054195533340757393430931', '203001252329.805170830142123506823342889353430474297766213449310326943'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('21317146000144010768999844337.09405418305272761083343833305157341739156', '-0.0000000000000000757193290849889312911825751507888440033946174186910125790903709584028592109335626795542286954334597472983510498121', '-2.815284585553737269426231370641010660565418051037612422994606767099732969097097789353525e+44'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('-0.014774874400113761275608315008410716240020003723449012821995398453187269704996948301479566757073214153779919007657996441', '-0.0000000000806493262726523159219918774844701743368445047223735259792392263754101924782666797204608953839743505777878942483435511937557', '183198981.10697335278713668584937529398989758670399283382712218949276209266326354897355313149339935535891'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('-5020395207847045587727077822854380739791994932.504221342', '-74.560660543522053645514753840038270581853127300632212275', '6.73330301964877823929748011165377224591701723616789060326824962023526688646477888047535705e+43'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('3609662930524403234872562856716221223809358860565279701563424303123905958311859287738683872033007265471771790.27931527380155673054427138450665409', '-16794861609975881587529093087945512128074521.8600898019055683338112609046', '-2.14926625437646992547969446513122412619322996353514537842439113690086159828370263502283952142780682828700756036392817917120126832820988735967571618352760750529351143e+65'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('-209988405242950665631125009649210907924178901.5873429339493463688159064579862138303938474730301184064145339310589283537311', '122569030859976508852246994830123364416.839524872412501134762656285560330488', '-1713225.631055551867872200381862880712944424'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('47420894138604525437802946544789192269386517706561870968888268715.94284369', '144391219557916288080545064326186839709918688878883756325748745387822257762330379166.90133558573313654585654061826370302276458556690373825246863081918', '3.284195138997609633701571208e-19'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('-1308.3407640554295633138303751449390044619045210832648462939047683491785368189241638500544435394779', '139897.170891202872445332860351471360991118381599841632343765791145944598307655379', '-0.0093521602740123868377384615892236251'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('22694078.88024570233564612', '-103651966799102889200282761567605028300454815274784159102379155983367521850058760610422.44835166114776390493475081358376300414537311', '0'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('0.0000000016040003695568230879054824', '0.0000000002071223092570452784024285221', '7.8'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-0.00000000000160486518', '2000593113460475653267471363183237276024632954073910660524421220510512507287858956989710464053183389648090530044356759951939404939121570506069293.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('9906428975181302.54887731911260593747588310831803790859593036337074878585870011073458494582', '-397802766783631216105934288942707453764433787034150600083769514863762243976304563720310383139730329806133430388364738219.0637920060892298', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('2372448042620504597371648108873793114912985466259613.353350132438952846988122884875738349', '-1764.80', '-1.344315527323495352091822364502375971732199380246834402396947211555330342318e+48'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('-0.0001157332635650475407713018168116431237125041538776377390530686807857574178284175634791546302355710141408674979023683725384881981444027014280402', '0.00000281561515149383689194302008444442670960906950880195369760891106615998656', '-41.1041'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-2278482554690743451116787903639276368232226.66013929334144203016049308412938167233648262684966359705041443467563802410865800730861965740644319', '-0.0000285627859101525846417950839372511981150657031908402772381658512315358472462141610401734401821536946991257108968597050239867948233205', '7.977101960074774858211228278423949748026430860250159654207880264e+46'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('59269537807238301464926245600012460478807876003104742707188939016142085932.461535987165237904369', '-258026813793798647883605234869509408101831192264071908426636279960581099948371251263586124700908939249794338905998034191710232991039.1707483647', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-1223654840276336417110.720248945988622443849428748592681708133806032494842645', '0.000005831237077411969651152036899437660106177539656797108710536978889806840010886384299730740491464098643257049074427503358368686702426868', '-2.098448106348337933778408317445108689803477267456922732635079970475386825568124960925254029599e+26'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); - T('-160773012905405114202302264705.237006267046611946082538479652779007371207354482', '1.00882982', '-1.59365841213342716418020102444272519885511128077164232198898302795382484e+29'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('0.00000000000000000004323777444337428413401949854456498464107873509686060294293240239522287718342572817672581228188853960600088276', '-1720809525311020427781913988340982076898548107102852062.676036648142132007995157885488336157', '0'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('275964569992834158046.85755492921522352968031279303278320854591089076622628406831', '0.0000000000000000011567413250188073652649295282698546264', '2.385706847538686076052372330461031480699214143842428420048025129597251853556690269292568001621528e+38'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('-461277.6333138647416813912224020971', '0.0000000000099173109876618658838716685018082208815532263892509632703426084173504611870016955196', '-46512369521107142.338455538950483324289471901187887073378652573449823154471'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('0.0000002108442322507065273331916223534695254104558598616968253642258920245687870102832329146234616963726682601037919994780108', '-122733644498769014232860259898669330756311954767551860271513349667053602485734694104734533969504443767273932914.6142703760252739736307212317412780386', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('-0.0000000000000060594249199960178678557214', '19', '-3.18917101052421993045037968421052631578947368421052631579e-16'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); - T('-195811421292774532695127684610', '5364891515549654383840359386200881808248648273.38684679459888274463788963963832393300317472688786484183567033543759756562080', '-3.6498673034717063995885765222443344626881916521520475459963682437300164065e-17'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('321599344772386898451916.7627715300945560317184253492986616105408473681672', '5198578201870724452821312525638369209544427519', '6.18629425746944383858562e-23'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('-59021937615669339998841043645954574650537447011352862778879088165342870591133705', '-31043943961314907903.917022666104157063875271758', '1.901238376451746005226788041162920350756241738370907016373353852151918648648524831189935921563308495877744181071742471860065257227400576969614987717462942965288e+60'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('74561832673.7829007984960603332233266617918423177170', '0.00000000000000006873561532223891756546085942022131897875653674106575946797061921115929939619806214882799422660', '1.08476271470372583117204400816138572483447652824576914007705772365515600352921907957e+27'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-0.00000000000001181612138264114852893', '-2014138394172789635968869539481440379570926693879119877148890105101899856887', '0'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('0.000000000000000001366669157340155864638406598347121179240648516312903388337468824794236443', '0.09279854219071497335086066371807349978611087519054983041812503112761286510457945850068199743095099213533450370544152422434530999', '1.472726968632163443775e-17'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-78371120871915218416109307836350714728084542.8509580566711220007561197751135664622126109003299', '43007007872.5122600819455753207310134111591735810929769934012081040632613037822382277069049207138502026056395', '-1.8222872212880862983930187423262228886865683284215449750904200136563208402080615970986029585126e+33'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('-0.0000000000000517794840657346263669444830486376125575898943952169421632193391568427990119566089652988965287', '-2481869359091334705649978843485179', '2.0863098162706e-47'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('-3800753242813048078685520378088479159769007810051420138798.318437359569382034181747551050841109869610287520897097665424309018', '2120739344587363.708696', '-1.7921831141170099205343015684935713366086039e+42'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('0.00000000156378007339816589413849870302278061173107221245900492549184494264768908538501760700913700705661694518521990', '-147905231008539027703441521999592678242939864307282268778051433970041755560991878988691539683117377228346311196265663176368', '-1e-79'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('741656271869496797735790303832261133537103891264692918629895512112118849942429341763013083975.14426416177529688110423', '-0.000000000000000437337826800047678192062342330646339091550872169853273984551870245339880543712828', '-1.695842953480867168862390919936147283150013042613258578865996738907912123224955139261119258615822423702514014472e+108'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('-0.0000000000000000003945300955779', '847727675538094603.20881447452191164062072672479536794', '-4.65397210640164923961095649499515968287606288438807723038872665e-37'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('30406270810174239529374782771.278433634', '29987421017195.34213074507456021388181141951276966130667', '1013967516337557.710497632723045632319445155498074564685828152439862518088518960613'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('1321582320879431980643741421114187366478053138649637668992881959.2129046722412557062278480288961369942243087270503235048', '5353687452618.583059658211501436312520038528750985790285597473822087079065473605352932561835681782367558615873020688109276602501572923764050812', '2.46854589957996657645910450288106599408003631101543652425393688899855419319127475552578960011427121170083197322297744165290631533010105e+50'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('-71114384870614983561285', '1133992198.158', '-62711529220509.29484829183226353193172706639273290971086'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-39227358344309744601.6190052074465462527776360266851581447664962', '-1444964189776599171579507378211841602075962.41427204488178093029', '2.7147633568949932545095387341963803e-23'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('-115837657853606995844720884404547510799589826002075856641765645.884897817702221155047697110251074014', '-0.000000000000000005854147', '1.97872820504177629712272145548356593709706684854473002884563106947771925956456431735822674509324781219193846686801680928066890018306680717105327215e+79'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('-0.010373063953923606543561967610595048856094941146349335325081365967597094701818986463775428252905398466576085651939530455129876', '-775977129938895143191026019050875712630.081238325561355555977712789958391927923556', '1.3367744426617883252061067e-41'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('7.07270032357039696248182238248680345100011862565879980707827264424914118160062052198454592559803381016252310534580195317268199231287552134562708919', '-0.0000000042430', '-1666910281.3034166774644879525069063047372421931790713662687420797193356543956211458837'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('46.866633682813410785775987851527123392474653581600', '14744446532935759609287921364976802650424701828423320583228334739180.71031053744910344739840934476919166750128785863253737834003504018235025403581', '3.1785956548537e-66'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('927926535231817963312783236933887609006699734378688849483896193306043550581226971475691162837812939291919734222589466', '69.511710136713279793', '1.33492117142105042044272745057547679402654942069096851346518705353507990873911816934880681475837540541622519330139834175120161949722916325495e+115'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('787903250684746738646483568711405989.8072', '451387626240172731.019210241194149882', '1745513622620931050.6672583063048538001140979597440641826636496534946948935720003329273468561267262176104913662'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('-35722157.881486131645169672', '100206671548947719359824357693430577834853556935970147502331389167925089539796326', '-3.56484826102991e-73'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('0.0000000000000000059667', '-4900078900071412352023154638895657134937627488698766471691.9372614175301411259218255283959138249', '-1e-37'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('-0.00000000008650', '-22396792171036667264820309801315647978357144334162083.12866630502374705743738714172542142604509322806665229821313430180867933237369724', '3.86216023e-63'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); - T('-0.0000000000108218545232858599713247632273393827652613606236609120082718375337518468', '-63988964186730552742407129236660184331567940737451910.3304633376739900323747684284915260758624361563', '1.691e-64'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-611570462009056827.435569946920300837761877488706885146112946472249255617564245022342854093878918337418143372753709154', '-0.00003825691236243693776344', '1.59858813543336415108781383220135731029245763562744870737466231608092674465245313558622952768650754e+22'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('-0.00000000000002350727657', '-915612530549.4986498012664321383', '2.56738e-26'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('0', '2081391145458817054585942415346886612310280066727237054540620444.4205926710227810347374001861892887965917226', '0'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('64396.051084014341723823184970', '86155258221040764790041031697500330477136224068314716800965714827382301059502', '1e-45'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); - T('161926311334485920669832025449.009880427298015253186', '-86582605145623002508536223281526203729561742002210759062959789469031200041674589645110030900182321286311210186122668939505495973', '0'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('42087279734600054895122284961359726', '-1582252444748.4434081621928924796519078616601687577335016738990864202624769180498313201555599178778167228264', '-2.659959848650533084475129893774578626283565245686747443405755946430798508683e+22'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-24393115207688675596870569.60246572272274488061', '688252683.929', '-35442092384495610.853541920910354488'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('-1567344498539073681247622389927625227296212807940565689018967154193560163921622741787409136074905827768114983650967330722209873040961151534', '258.33717', '-6.067049888868387314328876444406452340157681559879926256910560544553306688006308739030504731761619234925098016870616530800464652612557269764935491087093661357364873200399307618024924558862e+135'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('-0.0129422056645921791719601465787390482811787325920494010286599323572427445323507748474706026834212758691218654442246584732314391687165342190568', '0.00003154136776197801492301730977304527456305458680388423929845888122232881776610108874270552996290271983429445948093446850212726414607906194786215098186', '-410.324807797128661323887265083889695306'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-406970415760561057780064386617119757.263519308742495691905858945535446149666597', '818672923102846493332563572860615696408176367551324730.55063831266', '-4.97109901006748024156434129695480500183959174647946e-19'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-78183.4852518372967216919908152105019548353604155968802880295485344023361930011504010144273262654014301571795708830431176358087718130912170253094607', '10607986437598718347213922016340671665645380719280718296850684653.76305', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('0.000000000000004145660464', '-5669081450251908.97', '-7.31275516215380030908528456273152405e-31'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('8085929460048766432605442731895337580721930731531160363205580.26505446576581110416693140843978', '-1243721289394947316887845245824193097361966.249653947607831559997614092106', '-6501399894812812831.198713198187909917407983439'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('-2.9', '-1699646950681199591783028036599109.904466', '1.7062366974727970760023478564214356178487652157693874893e-33'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('32574896572752', '2109.25', '15443829120.659950219272253170558'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('620515750041051508976194269482692426.792374124676375501721806655902069776290778032909930175761860106409778247875', '-0.00000000000000000025502027337128501334086671256562706677428', '-2.433201650355225687343826966938669897350496730043906032795984741439204415735680231346983110085327281725e+54'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('-253.813', '-1869585213725782328284740947349296462812912473332034597003.3796368114407427121179229153285713', '1.3575898982116549522e-55'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('-7749.189083081911855387', '-1189424888787048603763869473895462110995036714135783822648383660167677227173.24822876013469206546', '6.51507224721384284654098e-72'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('-0.000000238652049254131502728658064452379793668878410887660555167523377063582772456856506170027418975766063658718364642', '3959898526590884727868890244043572810183271778744890639631359016535003209034837033601678211117581133648954265931607133', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-3453361.707350403941292074070462462215003897171541056568419329951886979682783151212845680167855795597', '806968173732110495460370343360332907753082343769580247019418335040085295622247944.113181040401', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-724857600294781667694752928854814757656504767543457037538172015151996311767.09336880355830077089902713137225902023265589', '35576495139923912764190751090614238451172063111222.28063124953341132555160276949186755806110953', '-2.0374620868185159744695260524883428541795538598441228267669481351163e+25'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('90459314193271192639929240904675200094595891741', '-0.000000000019889929160726332308405810144349653373871391299062112473', '-4.5479957953740563425543786103581716954987416312106136180058330915250854154594112110449049208323220551385018515955e+57'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('44600.84022950209680023', '-0.00000000000000000115311776106711337183380070428186718210460174435684789414208726423071388959408295974956801272167126248976268399', '-3.8678478239922152849528900064954332217596446721701658710556060137824772796869614416953897607521919019343e+22'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-10715501213702182653755677059471903986745712416039481030034888018947251957554262751035425774219408354219229431010174855261565', '-2381854567973257344135529417942273596912976138767390831640225026922807713902.0071335774919922551743584084296711', '4.49880582877908634337568444276962272138025492001094392161322382200062887587834825326e+48'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('2777668415334837530456350437716178428331624492107076073.41625457761506567113771425576298699683994847170140889', '184494.12575792230943', '1.5055592712905453936018666314097684118462644696286316455992236418268694912929902592e+49'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('-428671235661827622145886760609974763913477446573786520227211838324915172681321030', '-54033836316293132277076121712987415255211481254501215369680720161566364356486560208721024943916240198460611516.16193777087396874626696220631068', '7.93338516911056208275506907306087670605307211111003e-30'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); - T('-978985672242747393376284400.086508828304570555143389028101128064378740092651676', '-0.00000000017031419270073073837437059', '5.7481156251198730821256455176555394133620762834287734861999760249384322e+36'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-0.0000000000000000001378730557', '-1699779642968351661661031.311690625306919991313407575', '8.1112311393040415341897777811568499173559964608262755e-44'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('25035.81', '-15426707.4618102211736741817027124267128929389864672346971215453628022333618070343283714435933840549370440817800415731266379926224', '-0.00162288745423984430491332103031999704602'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-2606249681620290829340667099634910134015377448379297907355930709477129127287931080970.3823', '0.00000000000033908909007639111913931032300995225563862871453348017661978845392733842725731860200639', '-7.68603224902678592253345758414787292010555942627904562046643516437873453392526609764369131977904478093051086927914850258545236259386289331867081963276534886186775e+96'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-18.676019163851617971086645663075862553105101236104859133581502931178', '0.0000000000006375599116277133928718524563585300723831600550472104160406441918422002752', '-29292963411346.031950995103512983839156509002886050570463618693933772717951886862'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('0.0000000000000000002964729033966907', '13895575541.08962049977303092171871262', '1e-17'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('-58980089059039419671272933750401215.5085969954169088', '-0.0000000000125213936688911194374', '4.710345399136598676040815418635405786309422752100955873790600841e+45'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('39690352436779.4736', '-0.248929065534135392063186265360632', '-159444427879944.680634442270293792464789705288807312174022895428661121490808590177215482036142766'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('-17123758708.9649564601228520', '5545507646642530171986596252367364902598174165564195515271857107056083463857906774263438570754254091969296', '0'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('23365731929760087456.804640391878252648454186223486144064', '-117757934162037809278172617398911796345898781763536011679981980116.750540814266830722899218955991265238892913561', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('444807234941979522201.4377324457637171347360541790112723107359368409461559006408932036173841116665180019', '10596400391', '41977201552.3096254622677679871528475857812698783110065579944483659655019448236790586952995509611182643258803601'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('0.000000000000000316569832379940145341666909905669974831156007789376490451096259060196030786124754300574665663045', '8171371376785690519385585.66701351562686282609022822813906461874031199730400050192', '3.8741334567083008327580963619961298167968009906262279841008e-41'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-472774357119430324036326668012132089659224779691780449119591400743359784143595980403408625527315308155508917631466423744737135', '-0.000000610999707968028327893541028926736631403178652', '7.73771821743929709056982083941520742372719279283796163835376988970165864888874811606092407408406612567500206742994576505018921387373967309708278272562624909756996817913608228003053914858831348442647458554996e+131'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-0.000000000000000011185187492603045638053', '-0.00000000000000000041164932486862498504970881233015226828321374130173621404210045031592096096', '27.1716405612294404297'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); - T('-54591088934771685301979038853788129815502105752730536628129386943849491450034859339399639788058404794249160.9775031630212873970742766620803112572621', '-2192151722.637650', '2.4902970159878517012397056375294605095675718386007277829874517342203381243325672186112045450193551435639746702061290325559872583574490985e+97'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('-3231763423467127269100.18505608', '-3.13326711', '1.0314356580556986949957755296770724408491301592222056037858834193041396971737912252236931054371550212327732250060225474e+21'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('1955114107801948058.5092090650976512', '-22524335.791647136092584364897400645950764607967220096', '-86800078185.967077384347495790490734197197'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-30.790', '-213014.6489630208957', '0.0001445440496693028350771572054962468560063314976370719645271743152409028882684'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('34179925021617590935187180066109531776226514967114162257854629299928499', '0.000000003063508106169776354847939', '1.115711917092063862544394218888964553782373466442043171279573403322669964006576523132474048453129637844536324535553852396281087914037409662317072309775853147240349e+79'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('304537523646.1753115318713779438263463839108727690259207871526017494105154110757369332548256496615515146708977376629630738464401627358793118283', '1645972458153509472825876526525124262646183411615223661149854250942320470406467.99248631705447915', '0'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('10730', '600087011262096100947134546613401985681628488732289866802893293.4789959830436760144858111835538414084803511922254436397019080617747577133132694693548', '1.788074029036687096006233786675e-59'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('-15944715365282477655012697051418033363146962116842560336620509095388747479936979318196.9150740135476751963209781689565411283717995989206', '-1137392888500286967783149313346277.16933385670644329340911202', '1.401865224100920229505756531471088159424213471155142253519954330647372862437731950075994514683169998514756e+52'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('-77616949049052624869493746.7161905624535278878167162906431', '3378695176523.7711316772863751051858448279547509', '-22972462738976.6966249948641494590524792517967393648725860242712522790826048944088891928847068057083265738944'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-616684354616574331148.6921559', '2964745499577529510416017186535082094815367092403859067055344008400002.66303665626590704', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); - T('-1830435241775442899837854942212586718896268738896751218940459076163231291718573878', '260711614318.2277418681340041036233554343169895542755968880936961527552712599392668923941074322045', '-7.020919442204793990907303359587024014267306822240973218186509927227632239199091884881925114776171913063759715175e+69'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('-7.139876352757289461542505822558172659517318708717430099678198183806433553136298542230251443427747760829103651954310325030796995376', '-574567782248709473337780865800359181439010460721072288856336.06275720688321566', '0'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); - T('0.00000000132628378738601974691', '0.0000000000002978470409072811377360391343289749273535256379495688261910048831854626823170399869004467475206207549926', '4452.9023466071223660735776959961287235709'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-21847487066.7605217478921936229274321792356598452089386602086133607661585870779419', '2304935.749886714939313409', '-9478.5666228806168427849323830261036170085281053'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-2442312258500177154631833803193441592681917803929450596619096717808766254347447296555677450630527111828582774828661145181840466593999746747.51896', '-61343.55195783684341328877097596738024920167710546025', '3.98136752853640979247682810971631609686625145909735333930926456883544863739349358178072866001923197043975305147205378033628453560140556665797994093620519482465738244274740136379187291999268888231119420014170199550896828313558969806741e+133'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('9275485496', '84678132215204827584759285347242680917856', '0'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('-19794976320208680629831215516378854942', '-52750113072939297803954990926911853555613103143494221215262490371480858.0906154181519291193065190739944573225307343060444', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('18848799841030076029.711579280668537234365244317138', '743933756033367782502360177590134864044887', '2.533666430399838950967086928619016e-23'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-594784739002268205667736419524886418.55764520', '540342359808684924587533359548099389095421413554428744755.1538583364878', '-1.100755e-21'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-1726.075138495709002661567448098686057504327383296796313150002411931406077373073513344429353556354725453809', '207446120536', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-0.0003059309163364787587041720955829015320065042366262609333245079352877246189593335615545342001672654994603853127687340113897933341007388519584605192', '19221450817116751204809732739853558613080514439575062008086842670295721483726006065798', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('3080212117568931.9406', '4807128.444773379988516521143439853225061609533551472005759', '640759270.93604856109428814416757191472828207863181401'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('0.000005619525024600401578782145633650268269238119434994207418753350684434625741830141462900912224038939300796144023025797602584566889341737912', '-0.0000069522639073796584507616524', '-0.8083014539530659823420212243849918237162'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('3.864084', '102777249767124272827613.3573725', '3.75966861e-23'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('-0.00000000000411953726181119004487833370002571174457065444710109901614680047196797796656796232677318573024328647057612847991371591299583195680200706', '377302087299171244933.05643480446431808131642449619462015572621321620129', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('-0.0000003193716624856563111935912371', '-5900693350171710730666551514921044468319047071273346378968698377579186138999581.30001230345108893279944871641', '1e-73'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-179140388919344089254559094470262868418890624293750229460657170016298574966364977731008988659834641373781925948643291802091117038363735399985614', '-2342120530200004205488612809319553814303876.5177054493274516', '7.64864090508811200171925277947156369591644992014204322002567749382687218201510689321037413380175604998297096738437747e+100'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('5122342360245340.2307953867169401811656978279121415427296587169957180771857874129658501373773578101964297176290109172', '-173381699.14828534877', '-29543731.46305618857056463280272225752453363229341936621254410075321'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('174745315127421168141969852.302663004789400219681591352365728', '0.00000000000054859224166677445926266873407403088122175847297895300263721834565064', '3.18534062013886177412996818235873849681823288208176164339043124338500898204261604483e+38'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); - T('0.0000000000000000003438865298049905811857297760239525241590283770344974582124294742221853527597457038851486391', '-0.000001408257562047358432010666435253252367692495164316050607062209445651913855651914611164162643579923894622459642391547666557661182253651721761070', '-2.44192922568113280448908287037936546425898689105833556608787796260451693810871813e-13'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('0.333646134598859999543235659901387624660147', '26910.5148946258', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('0.00000000000000015741890085344004822612249961739147736218583594913176676336253154215235', '62123145933223032.424807076475104916', '2.5339814732282174972275675581954338603635890679015484811821792961e-33'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('-0.00001111772731670302871436022591511635045245989853584437206248415827174517169914210538893490462', '-2989189.6', '3.7193115206553069481976740167690769607e-12'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('6144637543780035324041015542995572258526302.8252871899307509340889062293501037871784543277116702587456051549850203393161254', '-21341451922355.6', '-2.87920314238011329822491105116231108390047570221e+29'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('17595014339836146135415402521949745038609937060624032692727913036850044940221238920872909675776808297288.7193819', '1047196892822332476619839790751710405870401699', '1.6802011599189607148737162149648470300229147254640276162383230992448471244724389879879553601659802830372798231756267150860965026188138336217927443534513e+58'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('-861013991813852618661450041364763949463695247908562946826280097460259583454703930312.069436995804002', '-0.00000000660203117661869333391008179789075205463628255825253006598363232603233429020945770285962300076652626', '1.304165292134883401534205906114798959117533361222113075961516083831659756781081432844245620956768431433575470252e+92'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('18964485733678635745669304324510.902018555784104664269930761786760150966793464250656714301947', '-0.000000000000860215048722322553274488581158728716058099505080456408033247509564134988530705172526450476527006322758428608526775577840014111509567748', '-2.2046214794598847316603626888696975599518688754676585469606709377707177e+43'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('-0.0000000000000000045434184846937299216855854', '0.000000000000128896028168154367112959974017842928472622282602167727915227416370640935480721242519522231389', '-0.00003524870819732712'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('-227.96443', '-3328395901354856091398502.9371246353045885377841478141934677904755836332251199452045365605447632170806766', '6.84907795695833089133170482400915385505896729289772851240872190258238e-23'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('114008071806506716387885.38507236728281799424116444188215400334013368403508847006385630841', '-0.092161198210375125931229751981334900000406137583559552739482677605716216810182233366016217607914141', '-1.2370506679639952849967075598921609673812502409262589476568309350924370850875602067261353e+24'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-0.00000000000313461925140003543282334451012255842223674671', '19900672650541044585807033236451300959160004287619.0648430649265053', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('3134463.4599489676245689666482931402073621138180301351868682447', '-336216719580496.76450216809998', '-9.322747137e-9'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('0.088282583111744550504636202154743748642063399', '0.000000000000000000550996644346331159832365099069695862403708163738892236086493022930354750458616053625423159680048909673004643337040164590864054509233', '160223449666336220.64193808051820590117106550792750292994'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('26556317805978922234443810', '624803506430721758008370872058372614424539594328229548210393601746497748101', '4.25034711435690189965542552901251e-50'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('170125016.39083', '-351725053753483997156877582904.929166310992204939591082080976355143002732995877138789215733131507530240637133709062658643626820354805857', '-4.837e-22'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); - T('0.00000000000000060672902231713', '-302299787979.930507332617490784681098721426', '-2.0070441543194544283e-27'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('0.000000000000000000737973423458099877024435030273911792718652674094341316578909012531335052924748', '96417848024254236645960941993928926.52250382680747393523941801', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('-242859957233290455808872183680612124624710994232560919295721829.560013320945976377903570349006502732418839412155469', '8645849305546729917012.6166017448611858420073279623841460173130', '-2.80897744860628166749205149100563693174029572744220253953e+40'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('195917418.5428342557982429', '-21867750879399792910325752536547917341411054205106', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); - T('0.000000000067', '29554560673814924103706759848299150511394.639506674963', '2.267e-51'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('-445586580996158504033858168624533127598605610225961613540082052766034223414816798644', '-3.745', '1.1898173057307303178474183407864703006638334051427546422966142931002248956336897160053404539385847797063e+83'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('1173951598490.437863081165954920089348336351184472248', '-7591038.2297423708983385790992056156', '-154649.67544107337739455436720295321871040946156129707750914127'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('-25848403775018429509421533550444829754070452453812121903169467045390.16089260751648127767043200260198750554242867590127133018718650', '-60764778736329651.1347128739950', '4.2538464407448510615791123884099536854965211831513714291799033426530933441e+50'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('4.17214688', '-251219516428004386511040705610.96384233764396213404273184885321515253613560740334', '-1.66075746793966643415893578323122980582414069211921e-29'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('738385014447825.2744649613568248193081196823091559906213393391515924596507031', '528744046652952500045873047514118006519343831570.6055160188912265483205', '1.4e-33'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('-24721813728700698141804102457096980045.40077868084852547588922466', '-47549165347852161039888817749.7398279014650027', '519921086.89700491048524453452992996114180195745096554852'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-2380649854558566804310287486793735744438489385384174596945829539944405989796377753690487014587', '1846210304.96632772276', '-1.2894792365499154261619289250592786417884611467624141065080783828418902110954692888923809688e+84'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('81379907744436270679953689228755.9789616404508106358141594775005145024091926647', '-29729588870688562494924450.87029786825008317879507669951862227147246427970218894287270952528817811236641140349341304337560139234485857703022584735', '-2737337.139050434604615498118226220078861478940583254360625857665497809765444'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); - T('-7709844161214836750776020358.1274071795526616454682187697436077137192366756444845181440101779945305669742181078575280047406690188175382988464771965448', '68329325585523340776034875809953930863439150253064542777137685289943715986380923062138742429709226.765893490', '0'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('-48889782335266.086377', '0.00000000005213840929633658919173773558172137649863371740047717294985055200995827641435326516992288634783610601433819227055942786241582560435309996523457837', '-9.37692250206437316476205308e+23'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-0.07242273692298414', '-1786429774361846114108686636547373632377616190672350167658470002491036392680741614785076789310542626932592607813720533873534644187068', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('254974601967092218788476192946586504128676814334312654261585473166410687842163972307817871765635884357606460617712028784428411968638179161986126066', '2.6', '9.80671546027277764571062280563794246648756978208894824083021050640041107085246047337761045252445709067717156221969341478570815263992996776869715638461538461538461538461538461538461538461538461538461538461538461538461538461538461e+145'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('10596945659336642172981413532963922636047011774616658548152', '-7', '-1.5138493799052345961402019332805603765781445392309512211645714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714285714e+57'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('-11448.03560573913408027230411238283731632036730013355696241879027857826220399937671363883127461428783892', '-29804998339189975833666.7', '3.84097844108461125189805266746392343944172935238361545336748001974929e-19'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-0.00000001118626577241983092169798799781615911598627213942989996546499679308452345843584760', '-479705453526334356888471993672585986608943898326919381025096414969.578', '2.331902981337638528284e-74'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('0.00000000000000000011023215294540131868482738585488798510803328353366743199871644564131839025', '9512617014966774607479593080377169504319326736213932454132662404835550339069903337929.267907379699416441528929275593487733629226173', '0'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); - T('0.922318702393468161912', '-32856722913699753279344300924099688774532365173499801898301087134616100249271607979170323503344120562205518024520829362642880218.77477287729539110', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('990692197960318254345', '0.0000000019958514844476048474683772034868524380391155636316290667434779936180379', '4.963757101568676040392331432075075194536862716171906745009359584710099259584e+29'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('0.00000267577961293328590073330190603567586341977186329292283763326749435838585647273148748215125445518770966989536299055', '-0.000000000534924956459176991809287804932124460735595310705292913481', '-5002.158864759358209231'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('-63.951', '-216987286235939383658727229.045550401204225424540632964306866889027056674906447443646897344466142216395389523166083598078', '2.94722336544931916265034e-25'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('11510789089121773842747277991574245143192006347968441716186024266177181695494787551.6929006029617554949340615133422', '-3.3', '-3.48811790579447692204462969441643792217939586302073991399576492914460051378629925808875775847325924088910954949763636363636363636363636363636363636363636363636363636364e+81'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('-1076837418780017750394539423290227716329', '26829833853133634906257281252196280791658739654971532905910450901148784990323817887790641264728864411617819849939207835877874123191782272043204768', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('-2535671051453184672175486679554799383311689468486426700142900252467439606395321615032170668.747374421788445865648420951070', '-2307678829387103212120719168615890.54676473', '1.09879720659682697294120796567016077464429761317598727017821612650108853106909408362925385398123039506e+57'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('-4193824453980527155063464781349417.7109221225817851', '-7205240544019522682059877113650053149717497163473051082147335294423284132906750379765359943362406856556', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('0.00000000000002128789105780', '-0.000000000000000016728489676192358971910290882587685072991599967864946424620907043629', '-1272.553079797543642747971299307201473084777079061726229515761106118100904782849'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('-16578303926910104271772733073671801041619099273970.7007444012126329543881758056281271923657016113802926145816768678539250147490504399773', '2015', '-8.2274461175732527403338625675790575888928532377e+45'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('-14487.591832004633901826097169041931482452603200325693594573981988040294642062553194913546730', '-0.00000000066944947318505386532993382047344447', '21641053451094.2445851912759442973222376073188132058'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('-8229686739239381708662.33742735636146287063045609345953036', '-2647244213404262439882911637252785489226846626705592856444818166118.7', '3.1087750414444368927e-45'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-29162473874916196402533253712288473659347188759.49669762440', '-342112791962012114732057946746742.191015086162490635163887048014672922771760017567924296835526832702720786302676', '85242278453459.2038768349559818828137934016217733'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('42022948694867103603050802418471699.1269555229356577653143747225594108213237028987180', '-0.000000002589549669491921474956130959610694089747921144409250333417143147530431052981800286455172670362396763146881330017477403135680204127703', '-1.62278983060062911397750404176294133187723113887495920654288635923375022321120285877424175386244553506331367297632269e+43'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('-37576455182.53312629439138776368260835830547508779050377503250764898041507099064344909409375764836587845407908603082292960740372745757708380884582', '15038952368828403397463320963862224104336906303009770585448088037198731970025090722789.7309099945900396936924597893781107548630293', '-2.4986085640127e-75'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('-0.0025704619610525559048889484855316342846745707345232655654692885805316949824786950649707239599785246562460', '-0.0000001639379851158592830936587952150943293166731179544000508788937965215435683602082130899079539094330583016631933626587077980930603716999951112886316', '15679.47757340034936962097683761989900805628460355961239705163'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('621373835929896923161801956794.974604713304611881031233924255943294696036229565470839021148054348533973666104715286', '-0.0000221383907720096686562557702482112891193705479203958187839941824986391636718743', '-2.806770565797046570282244463495974404992490502007941326057620478345027487811424868013719227888450907836431924130958601787532e+34'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-43815643032.093360955997667723954809856085692571904587', '-1443751908.07452438952296212150242732791674974781', '30.348457229420098337290930523241306667023389446013778578'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-3648429077136707350006880.75508', '0.0000023813463506255787368356136470956577201394502017369806001746304788424813592215178160715343676417785000441442827533703991799529845172346996453662553', '-1.532086702204518249148905726541046045137e+30'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('-0.04102112755155243972860649114120550483844385123706738747864642737382503804224115885148147411378510728916810716421199', '-14345529964500998791249238442530092529872.23503597601326051620033137282158705769490871091028249206709104185199335720933172264039161327827', '2.85951e-42'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('1483258325481.3703925', '5298367435599816838756.10465279563065128', '2.79946293553620614777007967985e-10'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); - T('15515711874492474279222649369110669742122491321521.384973179583240063940459149', '-0.00000000003851323858035178818868749158219136', '-4.0286697370623331350755811339199681973498641888036843097290579232484043908475099653101953714524328611085687323672558113562209907437467488034062014e+59'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('1809441079505642251898574656526689262311176960954786766599586418966862504429126490564103686114541927452962102425362715821995439860.987664807608101612802', '8886507515234135658487361057354722120364139720518634483728476753617706207706378.0739530020162157090529669348095124438355675820458749525', '2.03616671274256873060301686909046894475972477482978706249459495430864061921907781920236e+50'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('0.00011338640403965278766556287752138008589690261166663786562173105522347361014923788385015003240560715164368513988676785124410986436194123266260627', '1194173291180361867938', '9.49497069454448895061719689639e-26'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('-3607506.157514134444092621724996152494529158024654713067567207423189505690130453507527458454805514268983007962623628550027832', '-1049845587607603619455497940480584252205596763467473908071260521.99', '0'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('-2562573.457663482', '-64955620770904.9955952239222783363137640723336', '3.945114259936860102647311789451947576470640755487579267426703618724419529e-8'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('1406524264866972950639758682647075849863477030298985657607215488204258.6812436400728750049833307611664374', '1360927253153346699297527569240275447559659.061092022245761564304848418732594389246', '1.0335043710881499017374911911396637e+27'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('3.8499', '0.00000000000668010879682', '576322948786.80822940219928296661780715815'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('812797217.913702325057604386169507459762507442451919184136830102450280614819341527456349446992755422236', '87740481081428271910312490106725838669473203724.90802817767034615465582676442943074383785527274486301804761', '9.263651257614819909298611813847881172603160519276e-39'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('-14.4360070704007068204479133257569394125619', '794798851202363424.12766171785375637418589837', '-1.816309503789803631186015016110470706601e-17'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('19912764824549679482731359446005915742994499830671769692141318634.353931', '2646191434.953476294', '7.5250658593790563887921238049035942881469707461572214800574841389995694907774044341260962759243376018518474121027832608631849532874480500276e+54'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('-0.0000024659852564404444572628539348324013952275357810649510888727', '-10040524471155732557131859445425415047777281318160212640055', '2.4560324e-64'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('177136493414989385164933402829.64366090452307132831344136120524494110951165735859018503268061065574916376715783557023', '60187891777818635280359606466814.5298388', '0.002943058614994'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('-7393488401877396900086660', '4643522408356425475242044229446831856950172592312146157564105615175310306207', '0'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('-24615528727.48934232611976802942607567911562025748187690514666465255067247750309129790993101081569116851641927920873', '420661451213815587302170651860471630012019395170556532739885724741635518501.278606598', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('1.91990063974867928918337381079148017337147001769888528317', '10078919218839044941769446643483607730880380733282185589593952094100268332736334083148.63627', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); - T('237808077297578935819226799575402626259299593170.0910215981753307316735307961018153198874086067557017494183455119371304622833616995466406661936201146266', '63055475889159143979275262398175229543347025173856257439969', '3.771410396070997743720096841561e-12'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-4904079.8300344081', '-2720512536102937838958.994730305103198126564638420242641023343997346756526', '1.802630851706852482478134226173805253512179970696278185071576e-15'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-77889533745496738869229447644691273683680615077311174351663178838229431603707097369489978602526412919913781623378681628510061710888909916512637', '-318540594041982429254619641933716670156719361.47', '2.44519961356106458727374569781174504459604486259603208121953147086565777602048587638350292884194304991881592575e+98'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('14938358488121669556367959655370514636497247545078914567687389702166565327568594244021707269351169822', '20039203490.062718824493588703801945499927733204130', '7.45456699191137131792448342334165752468308824781653798839660824653749117672120923041575637442535087400245776884709209254088706501844782272751475e+89'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('48407.441100399893527', '-49914762867435341373609229012871802878249769536300098081350', '-9.6980208498558584478e-55'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('180759825156221312434054874665347131160072363893777191871968586225.5657480309810428', '99628.17982080675982529333128191115209263398377929', '1.8143443499754743617602178758840533560819368250726775194861051560387e+60'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('124.635963997546839885349003747702526642207986139957268624399953842642619921009173610970240559859680382383501844241469647750263340', '-4901973690204727768135111108893445830.3560228505490541617954169857232989892975669919037', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('0.0000000000014107925075310771591595606797625202818785', '12386394840432336963994.943755767352425361629457315680330718156042295375708947556653121969360110805455673853', '1.138985577083246445675665789069355266675e-34'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('9654625784529107951076400463831.0872923536217679265793513418784115088017810854222268497016908434175871293339894417742419307', '9598314040263728069176699.289649494001504772215073860394143265011510137892369266453693446307858079047419515709091577', '1005866.837032957991474180272580014087774352588529848202663465642879021736593180124870412868019'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('305112099545450647851161993868110882113552656790670653094321170385003482454988168963700802006692063568727922463910455736702339', '-13912342973908647095916614853904635361452200346181547010', '-2.19310363551028792881568403878783264015797115276059035942137691575167395810185293868248322264575508137759030028125512759614112610711722e+70'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('9591317249950356059905450.0654567438881311397254557514865420468428527233233343654118556442146884475779577627527', '167400348511026.156411559469772317845282601856890283690919584627900184214866552631440483460616938973350076', '57295682686.81713587288932313674148715326928262035243294822467450010618535314143'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-1134159886712762259916', '5391492078578729.9905053192078034900355415036138560079058188424664', '-210361.0410963902'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('0.00000000015155872936389446115086395444549864431108799133925534531833041920912063350103994949352660099057234865771387382603864541362945437298342151575604', '-622159863431038059284262654920095960874083417068435366133209240250136536455236664687427878038827741144480740332157803741', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('-17179571683888479010516907983936833492365898013', '643476582358418286773845.204359506070957148049161813771020', '-2.66980526640508087899147870788071473464567607445862283728735350208490313645231744512865423954721325399938916370550532299286e+22'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('0.000000000000491253980431211194628211603829815779547378344214049628399550111067969369495996507232841888591232316180093349726878502552172395323628992306897115057', '-2461317363809255772941739237350560508540968577481675200105985067118684968609180345403471054855329464172680700029391770335329021626461730', '0'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('0.000000000000002727798649835142592267521965189153594719932631321976839730535108261624538480157874684', '558597754.84705249026', '4.88329683777914696940924735055866083084342614872979e-24'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); - T('-0.0000024695353690719742170166999884925860383022208953944079760760718103780990393208319641197541882950879886135590160617494388826084', '-19570', '1.2618985023362157470703627943e-10'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('0.00000000102941670501711766403028451056161724837846810205454548884791390579294602029552939970405798284307096', '20.21', '5.0936007175513e-11'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); - T('-0.00000000000000151716614076504814328783108682909811751320774837258276317548888490554882197937101195183442708090549911467547044574', '-0.00000020612950877125844270441932140528002337207503037258962381', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('-19023576472120.882634755212040837', '4969543365948128059514362544.8953383', '-3.8280330950470369916153263106827902688133956281641084095e-15'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('8015238463394289363558971679414816161212655906736576586294568265577767998859345177411864246.36494068479930419778282085399344281', '-29378933132528128568860352313616963906152072539954868687102763084161250224427.95910623401937244440593318573897458404308423', '-272822652450911.46785512'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('-0.00000018318044998712501785746962041819300124984449527091314836844439518496634538990915126201633478731094683459903373857950606912', '-50260274422193098.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('0.000000000000000036252201669267818816776342223191339936664870703543979984168233662004415270348005127497058056162419795842866210204395036776840289942792064495234730329', '-0.000000000000000000179357830194059685645082549154616146217418239903075662373840804948063674789835931643935119', '-202.1222136220316981945903839685168646072941300843510375'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('-15506570654579796521.6790299986404', '46237357.2351996389438346207980862758109085552721319697903907757349293013499894765305689197502226168047624', '-335368878798.612068489270224488944266921938533586240305257228015010387166812348642052419150264631141293'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('87303051951341802985849174960942.48597277207212', '-9790069486471041695911133718356799467162093870.77074889053617528930', '-8.9175109606715699974377398786681160043722188142272519517213e-15'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('35127196371069787906060832446215347331792852844200192936928233943480174200', '2184057692.451489741162559775349505027286458', '1.608345626238534014016197707074111572037505787153919166460397078040153304043718501523011310281155674900096563938183838e+64'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); - T('-1796807569032560044825646.4933720663', '31919477195377684793.4892949188374533179325727172274534682789622643294909528', '-56291.88592389473362473590361682233454869146948381216614543943476730342346322360148922436785128008717351'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('-1867145331240446.087650013540', '-0.00047142351608451', '3960653780592759476.70824175988578916982166828788059612408306509163140722302497479905554685933786921'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('-0.000000886198008813381153171572516080682289250189118704', '1676630.001919031433124112364037338782527148402428443521503521055117443828166058373828898575321636896507000025367376195681548902071870055', '-5.2855907850811429311e-13'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('-0.00696731522879746863342805456414992288137602555612523782621801699385593834422373877830117876938169998381', '1506871780355070817620232129801244762594678082853.179820986414123157031119020247899457342741288883124549493377298953978878279235', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('0.000000000000026434094823195651047980957065649061963909889572510258818902856974563655611705651078469733111978752', '-5829010583471183110.4852999750745072899', '-4.534919682278928791967808836144339886747533e-33'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); - T('-0.00000000009774366677344691632363185045504747838493202785984732', '303777905886959208857921976715266674582800967574973181037568112324955188454105325264.647926672180', '-1e-58'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('11729879984042237752390640528185467775033789', '-642441140275916528357087522523498004204346.17673939464', '-18.2582951941783683540161358951084876460655385807847498645257448131090813546626822820609780242'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('0.0000000094627011794347618529524997222170576314794185732745500031818009896922860311058011263671330388964339345488041698159291689162802654', '0.00000064402079018526723251400695114040196576445422066519624238599940859942799204247280522505080098899034173142881793573499053489', '0.01469316103399798'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('16189723838.0710', '-10341660196826579284206836275245254', '-1.56548595969522819699492533334627666171180039e-24'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('3277924795654216922713743886215213934558234408140793494048978796379635435165013745039489920249982941', '-0.54336735219777618442798665488056187857763074465503032864685931626951307213110815707731128151986180054979480494732', '-6.03261271108005362564469759900983422465897159205493476850675475134859937498517293647602955946712704041955397379463380294821897465280042707212449897288998004817421217878e+99'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-2738644792905685920749846986139017784488537398665640730199038259627285642508874157110249240094.08654233854806396870983593', '0.07048893791651941015', '-3.88521216782849523903601264082805246827857943249490151440012419399068263560000616742255426701819991440598148799889467166221774e+94'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-1021492542122916481066194044577113755476618195682639369591088612908207031655730855760.261897889905155831270857', '183374554200722282407413873055918925009662.3033597426494437840028349983737706403409956', '-5.5705250195443582915852472906193737439842541509498802273574427448473176103922133808156e+42'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-0.0000000000020947631992437788260334128526352108784946954262421715067727671602313406673460244799969353876741630755', '0.0061599517660707198340969727429459623695874102739196597068259959714844228339373452774105407166290813820782551809253247300937', '-3.400616236610528233193564938520924106947596863e-10'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('-0.0000000000000028364', '4339706650281920237449218962507595352433911428075316457722836609039165542220916550034260996', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('-0.0000000000000003965078289242872199294090729766510245471592367757563323807071211599581999702793982', '-7', '5.664397556e-17'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('-41276579348139205664214817.061117397441511425496021813583663543794498584294575611567172200905096831', '-15546273984390733433793478381454318749597894128472412011914574903190265845285785437910787598246818563648418017.01917873031659900', '0.0001'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('180137628272858932211726828049207473719', '-407.572', '-4.41977437784879560449998596687720142009264620729588882455124493341053850607990735379270411117544875506658946149392e+35'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('20359545447084534827352882996697649022', '810959908914768942946403650700500307542126770380805304862862857933904161563272040920256887.419445309474077045303', '2.51054894616551287888852631e-53'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('28908998.73515783', '-3723.0255452473490444394049082', '-7764.920864446334129042781339351349873376126336'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('11353771731770213109935979314204766077.803429457229492', '14676941568007005489652401648364649.3704053248573450123647291147308307652519058222332972283634934609881798030115404111740716259266007518901366', '773.5788603614337'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('2765022680224928913934.856366328820914512549419399744601258906300255803783271856072003411006086986', '-30143729465582', '-91727955.67257268853455784760512905058366719627007010404874350870901551402319849087'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-27973803353732467597874093314681240300146817936274.7', '2711805085115170134405647647869391029436491912213838402534819182816577170039191806230633438', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('0.000000000000000003186937962056', '-40287888691067864531255656654498186477826119257.83486205924350399940026473132675064210251730473941889097', '-1e-13'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-4853119707399881662896013751041882676424871.34255119620658968812561471551918847065999919327264257586536', '0.0000000000000000789787666480410402195930327956520638436124171894371726007897667552693325038787239588213130213', '-6.1448410925777056667540794754946487747565056729325715792347269833451509500111345747271066474343e+58'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('0.00018632202618906250236563803490223248286137802628984042368050529522909420866005529457506429136800674003703919089708163008', '-1060413927490185650862162264.58587819883181633855751353684185941850759798616987753412241670431421648686406805818216488438279040756757650735508', '-1.75706883282883844492e-31'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-296582197552258351073088798547782213145621017034908997551219368985808845357104758012233532715885021.06854', '-514.52972472839968458051708733863739311617381978335602510446807660384466862964082668954528387294081831892060089004743575941830665737716796', '5.7641411817133132081079568811889594648454414358403776418817860520037551325103997146756972692460525581477037712081162821534951403163113421454367610771414410931943153871696e+95'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-8.785756028885638309942', '246947608177624323.263', '-3.5577408883289224383160281388273242173e-17'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('0.000000000000000000063225585970325864485396075291771611465795264', '181237332716316048045378472203695275160865853026681059427519806.128226535863849358551920805', '1e-78'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-11691010859512', '-4034859089160127161470.5773065004370792550445178779530908274730755343554226624691455824126275628788101015', '2.89750164780736690697856634400408978e-9'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('17264790298661.24778339612120219726129732910714646561221181455417055130204095335327479350715774222457892429326697', '-5015531732.061071723293298831498173782290062679330257', '-3442.2651916045'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('1778308318430766333341410656754788654176198566926863100735.785026985865888502589345119640126859619824416787029438709834800499047327', '-0.0000045139150996358534708356166705107677927082820813299926711361781861773080211743798815762556302066561', '-3.9396140139503864622623283819637870320019602693311774326400218864636615597136804e+62'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('-2979525352792790601198298192688649786141341801230834442555941134313501985214547248972630509147162876124367050537418867965756714363', '2393739131031912074274211806414.55564866983450529413395930977988062148062512555673551', '-1.24471598185736853893414811397455283846630654230489745594456593361104535938282880638009772610705876945e+99'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('10760437822305315859349467186067685011962223758508.2292898340272957', '1.3', '8.277259863311781430268820912359757701509402891160176376795405612076923076923076923076923076923076923076923076923076923076923076923e+48'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-130518920372713990312225179896', '0.0020846050392103976518667096210508344925578933815526902355', '-6.2610862929771902834996819889289388566333471712217742449678778762921696831584778992829913092129129392e+31'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('1680290348239783460061677586576479477632276448', '1877861105146962.868326502', '8.94789472785998532406201969642850131006e+29'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('98212340272764478744036769743.53998661159918447', '-1.2847611573829504844252349018435944786279389740735941066061131438086743', '-7.644404542305927958394180943795163441854807258471249766705603049665551139607897850853477407663496394813688800957599e+28'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('-4431446791145757147387577.2991245746222262915497590341158402040826616731440394107005242509097835958746301836678363344980328789760128354932814748534502', '-6841473917438138930486.423986', '647.73276118915008474176790489779406139826138'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-0.0000002933887640674863470860654803397102517051207073431749289429108077', '5806535990808146428.630716856942036', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-0.00000000000001013', '-80382710505730005224826.82791298310513883887498469801317728041502291077554033850826919518584870075231296208018469022107', '1.26022125109576798417096730794451e-37'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-35322105230793066143717772.4724214458026', '10987517620163601004566319950522202204012434627922114545224282.322402022609687901968441581170778347', '-1e-23'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('4068944423230418685355265614343228850013418408713106622.555979248442241363299377756681660955324620808272691427', '0.0000000000000000000253599045776991074682670099070661463705', '1.604479390197923272303517472845245208647420620622818342987962920172750468047384281772486395946256298141734032492716380712631097003768968808547509013483e+74'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('-678745033872819590083932457185.28205218134760913393462346391518927873560028807493242245873888505764916957404997931370614312848474046307949', '-0.00000009109974910356490384074814252070846305493', '7.45056973868503250802841453952887682821722695744750483500736625069335e+36'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-28572733163749836041333377030383051825005531243253823754744624351600443418642018015', '16183335809283440758996327657609', '-1.76556511589899264660470022054852754988618384672249007081146582068834188443575378733749175348905663865558480287081232429e+51'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('1598794110', '-51767803619804258370774453270228164567580041461709925160228565195668850468842561401214442136634964740940140592975009300449359120696952748.5023659', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('2571550152173393501524176098.3132351998625568672957719726318367033934862940482388662', '-5237440273565.1207228524099679581472775379477956505205110714835', '-490993694983549.98991681993164368998534323741524989204756100064018596814230660552'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('456912203930126460719485395721.22003648609684663992', '524305770799388126062304932995736997191627321086276395583819883638111833622261358604755.224661770965322643572815974062105794498422593010687236', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('-0.000000005648452498863216040118255040511384505604423060351742890041607', '1232794216550095854019195950450', '-4.58182916745836744846893637910381661110173368619e-39'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('4544417.73193287626082515217201228429174646210', '58863320549389442176353896248682433.6871043363476740', '7.720287760728464513638913975135e-29'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('302008786430477451865913173921469918.53981539706766348678537', '-1036387133038666959306417848321396092934291038310964313295788481128308560831899639810737318.04874620326477804842185662604869006953286', '-2.9140538009671497136586147729651e-55'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-211813072139414419237378700885656074457716799267611690735376412291752663699064535170948683056877853428140.0', '5078436005033133716156804205372383900390695294047690451360304263387981919977197326.4265641830646742373766008824737575346807071215634501435369', '-4.17083275105742850356678471870739792069246340665612254152335879755994125516033e+22'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-736668226198969993047756194703946262763078078728962850215087025295', '-311409300431151235535387264151286378806946020073530456668535824508403904628.872991645815365337057086066602882613894892', '2.365594814217304576715789902252463013970450697280445921986656073155597e-9'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('-12038519896178.343050583830622798587165301678714', '40340462361494993145172207379228147634247889779962825870865259393574788283.813082482302180257936546709351060751528560844883', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('0.0000000000000000268509610166701800334912706135203400873603368954922062436317253116942166789935714', '-486998463662879616958481229259078824081826501329210169074798.43828397140', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('-64909823269900045761346114378555621.369886684266321123849', '-2715516319.9228794823292737397897142541381156835304385138078896200673726', '2.39033081089136968459642354284372461779770166025252776375238847685969761e+25'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('-15480951193336067629393671.418465', '-0.00424708358273824697058394287931995107788656965461947522851981137664770296921298466356688037954760782850606341865212940941984', '3.645078061627161024601523640016341e+27'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('24684896.01518271685680962063108620101646702283705428496221148607065462671230839758975796837001445596441348271619831917', '-0.0000000000000012485922867340065887180882914038664278123625622790446817239268277611161569655245749385870285984733170601212773880677779079333429006', '-1.9770181409459127030130282324344514639776814627422747067000085599690053740763589018259832855036376e+22'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('-0.000000000014807613715736006881724155523216287303286101406215339189727852651201006329891411214269372813', '47138481795.674594971801063274107203438644606484339365703302891787822073636', '-3.141300515345563502246717814357829328909e-22'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('-408933410930331366351505306747613637.4', '502301608967263078078817020044251410495859611955292180874725849617629549750600278.3033594011017317450703182714619757255669621249363839878', '-1e-27'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('-115835252133107207748230083386149347695375947320217160', '-1145645316426674131036122720039891961130160258839262814.833163686', '0.10110917442965964049616495551603037176187'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('324410114528078358164225634288515521712.1960331540300033585581775465', '0.00000000000000000016880505004767778581153232729174744246812547975061933315858340411987958904970545075748755970918513886980214608665646', '1.92180337280461116882324890306010466157811443930093788648147283137848170478431669854800995664511056948150066785236743353315873955132013676480239319e+57'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-7348240073236898148127361553814999208471464251945186075790063614750080486706532516500107114083265070307972262437836405550898.6921976', '-28201182611399638209563658840984116442017737602945387683718986735940565751787618797824404568.7303145140391777544083084880689164015722', '2.60564961919949834024024286204035087946016558710246303922541253929369674984466140038019986841816135896968210977328511278536e+32'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('0.007297026672050746404702116781', '-49010133555716180456644577253738369084643566864099762865278837386925212233307.48376173767127842352706140893647414334624473813072778322', '0'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('4852490500852643734640383257370930860500.926230004246358888434335013807764035654376140471319113288921733192', '41022016177492389242191788983456656934790212440217758123.250284', '0'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); - T('21154142945164.4737436207974497074070105471573040015764205565068333127130276476', '-4290761302747137287019137676906342923979101397205720416062341096.63', '0'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('21404795109738399287315622682393563132970611482057057408015049430283263228.74111310068413183505876746078406010224917', '0.000000000000000000012615672770675627482534560056344943179462367364576860545296973446303598607717168976051891074817048788685311', '1.69668280866420045489481749515215838710659927672039090183748525662324101909299067643564687435794574199998889731079365486197322604330597129209311012e+93'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('-3450790382821963036098567395961031863812208976201226121960.15676705645150163038246850982390947156903372055044602536001863326103241130492192695297810072', '-763049.4310', '4.5223680703091475552107021962526460016614690014770827107269761754877076916795218e+51'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('42313230199651672735489325884062025582352.7419585331025893934481865894655211677073719001789932289247216', '95185821534871.759', '4.4453290960093282636970055658666540868060568467528026933472524977781314079115242997821941498675915753e+26'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('1752257597609747491.69', '6539528305.78203897191908488589585858704158645216539398937460932', '267948621.930492772271645037284811611672582511391898595308741494002372333430228827163423'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('790.3855380044418360414190826995162992', '0.00000000001009614138409195528319486359546033', '78285902300240.9089208169716490416659656953882740186474378912910833288707621998'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-221096887211673464233.029434021207971903959700430242372811681549616265238747082824532995430363024140803', '741831053553803245328361052525454080331736054300671.7822498155210741048673906237917851738792555483456802791272418274661789835762', '0'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('-0.000651139662592009486341738951403411968137306774317479717873592038049661141163082842698', '-505300425801028665383762175122150001868137480355285515208663655910011.666858266721037287776934243433208679', '0'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('-3671341436129243736752381349616365042217.5945187056827841332382473006446185297629388254060464214310637055889519874', '-227247.573154384146163133510159381', '1.61556904004209596931865096874520063691595870755179037257644188612979896e+34'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-0.00000000000001540173930826297206570050485142539798943714098329265886679382', '-2811614151582023531974.44462398314990697512312968266966793', '5e-36'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('95284078615312471887522819461623.26477693383735687249490580589167', '0.0000000000001907980575072794816854101364273354819844880911577900320625777457203327253927566347670488701269315396762013441731474428043', '4.99397529829029400445512070483471174259050367099609006118704282973842856741652045471476316647819741755371043523320670978724437e+44'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('37696516976809.67', '-5588437953273115926044870421.35647', '0'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('378929565.44023', '394795362320270792098898494652903896531440802470264311764198716459375.817', '9.598126057337777349449592e-61'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('15352006644304724464768062425561135603919740274357285270804381610637327574316835765230776715422094.5858877396272023484675903979294931153616243148725', '-405339297.6969596', '-3.78744590804077814687449048795712353471016256174527167078862900257992553642086103146670463435e+88'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('12391997349857348619953349.479939998811972166535711907181601637950135', '-0.0000000396579276389002618774584094439147848379360880516760322791085994648217599228277203973654235245715501926', '-3.12472135778020349928209979108857544599794304107991572220480753813907523425877732021587353067795034086798779299951e+32'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); - T('0.0000000000011729289882247307770578706071888573569106820969659193408240506544694', '-1255499908017820757805258295311505070506457152583896428367804075279506733427340869856179', '0'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('17.57024622423931', '-32794563963723474099591095718112355996227112378370191106069881991104995.8038681166412740013882364843563458', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('-1306895671944468591070288992511351404563473756459932471509002653.277237767592929758', '-322376962163459308964.9329202915815135482520368155925183149799359954660406', '4.05393630851889150655852349978721479028532515056978951425002051162114902278959544833608646256e+42'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-32077490814252754358984388552327268106030042358073061263106246354805512173487060806485134928542905180083273866767283944301153567', '-2542480028804156750343727594232002464916104443196105627017424.46223250537045772824884122578939553140601', '1.2616614663966602655440794143610549039105196941635092999427352633032831829099547154979022790412911086871644372733806163239451594689228e+67'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('153825947194693152969349223214523690589243544635139206926681835035412', '-23.641', '-6.5067445198888859595342508021878808252292011604897934489523216037989932743961761346812740577809737320756313184721458483e+66'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('37106919766560282593678657.7096099958827461744354258881970168052165335487652453945420045841831351550299435322743323901', '-0.00000000612984026535971794707958117104425939246', '-6.0534888610809068134667815813473264511557573757042390207722922555568709364037060533844141625398223231686451724e+33'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('-641144573.3', '-0.000000692650658567215776814444016562883106433269355122817556680783206508598080653325521680878424076700131284', '925639159322018.3806'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('-0.000000001391455855279603850130715155412806189081748706188733572987679735751435531762129652831698896587955285725611545928297431036277318359077533', '-5879.778740003149453115553595686947102674472974724003724756870496314835', '2.36651057260508161353e-13'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('18.4467637908568967309576906800818709287266942905204278027881957919506414846183259700', '327100340291470052.018885253570111280696645646468831427010411192851281152509330141749901256', '0'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); - T('0.0000000108233917338259594156939274553', '-0.0000000000000000004565264148381930450416004239178145878360488986541233507680378267783546624295898380997488887836168755720265634033974417939239163234566951897892', '-23708139073.75348961340655697764781672842871945294433941227257145619495165558942758765095741331331454732289173'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('-6754599027838025126815716047495508066346043054422120219372348926712625080840725656799.23189671095732920949609178286055102546857205616253000915', '107595207784639024394558987050103336772457004049998529168426054849379721.85220030402155', '-62777879860206.52'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-767567474494048891607.1575508751572148699', '0.000000004875311703403470460827491267679111088375437277', '-1.574396717974376118930413375427055257405913586777089372054019979803905250184355319308435849646064170819910667818190892995390347e+29'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-281313529988951591674.56365585621460813819037925750341565101965593423141074', '694790235093351991667165454140550441260.28362494255687291896654159682', '-4.0488987291416713079187223486286600048369859121398223177830254033691257405204e-19'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('-22032516111912199200839884249875193102620746223509928608444522784451947328020683449560083423.3320014349559756171162999598598768265058038942598886', '-297286286479698401818930.7927086368819048356427445406005784385378018400774911418686083165798471', '7.411211722144739301662341736378327510690297157739590972291891536186909176131100719408304758388950100264204e+67'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('-504095727490029865108405982465023657063', '0.0001418108435423937783007517785233764245161030889541884080802903629541241457204582638467882030562326189604752419580188697572669326', '-3.554705090935676477791525324089215907953481197167887910898400870765471810521830909e+42'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-70222200877721976565100755417575500277629999832398082509168582124795779398759382301433050650013056058674778167124529942105', '0.0000000000000010124346565650714258010', '-6.9359736376437089721359719899145571672143372111083474721223434403202326101970030123813824892397458056643609341113695530397807616524250937342611151136157870513639717824741934190318511787690333719478482297694861249299259683014e+136'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('-0.0016821113685730833060380092942912079806011286446462149294640213475147323465279094621352205833715636184306521853469706773604977393588', '8818078.5109322786143396929032251482432725328678286150251496', '-1'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('68547944749882829549489008458779589815540451393182', '-211789487168159696858830149083691311508860082075074910244285500485575116345894739232630326.13876985196084241793739829236577541073416634745446063670192', '-3.23660752317966262199779983900851713515143928e-40'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-19.21616495486753037639761208089923695156492819521502781212915545358345288921278241726325489623906100082702841188492596712483469308850895965598096581', '7291143776818.0662432529008780776517831079', '-2.635548762042609445001785268618088938599105073054726315027e-12'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('-94427654720186260692998219276328393584213089956492863260951740894504293965.2367915578312852891464633412219127621602825904441021', '-4450034212444858370097948816155700281600827527767526525517795.2803430536196384191292137870675323639390335877446605450463807155101063378', '21219534550119.223474139679249593535623337505741605175031723732'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-81339455827944255393951311490306552895', '-0.000000041862345870128785373777175927993230340289266744242636189306537061752041960893730298132985829504898420874', '1.943021924291745922388131837480037009278159092124366742577117398514961073879058349548510345118513679005293459532526878367e+45'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('0.000000000884045464206287253425139994499348390288621', '-0.0000000036751322066576242171170006304801483172830300278718127470112736591597470668463955371955632851604', '-0.2405479352837455735885044998438611520131695520747394681512821220924441741246997083961404'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('-49.3990403355615170766063344213815145105583203699819922', '-39262928148055071996.247714340202110107307994666794816646669962799497898937', '1.2581598639124562447879179724e-18'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('30185936135911346753544000929543531356504696.9321307586198575820635046392369468170677443210', '0.00000000000889546501605943055462900338069432634169148894284443468891730291115009150304068070437440901803462', '3.39340732400331601441220953053085097561845467363670953317010393027311226659246041870152e+54'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('65110764894005495791149102013197168751.46013107633104474', '122849867324792.4401485739882105228893993200368676056606566637252742726987458948922404', '5.300027286302606764232334083567823916748792625109725207432062806860743132346277174305e+23'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('175732730964798637504787501648379401015078431281552342604541041523143130739596109605795217820445856365840690677006305370064088804787156156975', '0.000000000000000000044627078377391111797717707506386678729832320747307962147931472220466', '3.937804968514990885003457302559977315967418595600261882422669439995898759557598799552704733122198387306415523922855107365186616672946780150539751697306600548161005852808900873665263768623778598109224110276816147685618926161299826634e+159'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('157404058876.132092550077030439261897362752853871830997192658734129732225056949295101038459', '9913222631494173169793541281586950606405', '1.58781926652248828880468116471553557806107509380640024881172932536875611e-29'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-500496066549058122523524538057773915826826913208646429765183500446544788213209101442562920.4215012300087556197473', '-3469701195497062066968643121', '1.4424759895710792261194716054180048222637307437625373952868356782579138408616912264789487837e+62'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-139994010285559455656361067601490015580658433314557659656116377008140532040106593085759989858103974008161.97612211191350004439596548', '3100374.4', '-4.5153904730202731533443531078533616965956896468554784756355999136149663743871254092976638517626765983e+97'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('50.5825100008643335639002030', '-5113880152155098174745734107355881365.414192017256590724083', '0'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-85897819669896341477399212217868091056217064017.413943752402392352766779573867742413386438726379529922858959655464746614585', '-0.00000000956809058284455081136304901312313622213572227631594575563416175500319040573483454557180486339394375060900551570428', '8.977529939349644138129189595049487029809806737572203060359215020586723120622012130285548298605448267e+54'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('-13406027181869131942219323628000052135440457119214139194062030510132615800506.105170187274525350527283076087883835545916891745544', '2432350930516151.718929383717436', '-5.51155140225770596842962683948996664881832225682187833028819954624461026110479445009418193371175496859534625381201886800812973958975e+60'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('21.770063074003', '40284326517215758067539078.04686946078901278456139861931375323993', '5.4041025272445420756576743176730573932148771470344031142746e-25'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('-169598834344610711289485636044177213069669025186093189522692330815495446385394933456802329829.89814856505555574078439109464846', '4073519161665461297.0705210797840162689150775433601758807115568150837151937266265880060497431564361229138188944851274622581', '-4.16344756496174436727634644468101079646812205801424950112551927499646520315786067377323933470114041655458820971891011661939688688329899108494027255245390225880835574143e+73'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('6450825612664309385413262471232615420425386423840857373618549230654350482950448030796.355111967920589725979910671875290527521454517933967', '536453462509631523673841120977259976874895472096249453886631000037443998100180512286931180065863.3189583482454504212885227485664083196417293852676554', '1.2024949e-11'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('-17520315251457681139169240125154352407.730053852981236520933835994797692974179310', '-2151609422402119268361091388577166717650764365388264909600751367254886131216642181208237', '8.142888e-51'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); - T('-0.0000000001714226329930445076430282571879111331855606207358607692264215328802202739969631292443117775558920847040670700105818', '-47421716329510804539274769917188268913032796877737499941241566424898458543604931480945.6047437099021683973588923557', '0'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('0.009285228717006832804766101423935067607438919314783568187443629529274565217625420900069661204469159210493915283768314424133122124990655979854', '26010741084328545870244893269433803874392121409768666543901152710348.7987991180143214803077412711160363271863', '0'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-38096329876334489238903761051687.505909434494982846476648545901', '16745736743363870967810665450.021', '-2274.9867897828738483201764635987308032940474942543283340120073308886436858862021063712926662'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('-1852217789725050122438170820.28325931905146699020306554945621134740056415276362', '-0.0000000000000022219735130576607077241455597715090688027', '8.335913001844071298418070909327002279799405145610418355663896072274220673173691352497252427009443461242778791749718486195e+41'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-5.052912753102736', '107023920349655873.54567', '-4.7212929003109380284034549969485e-17'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('-266.97485346716564956157280050094877184640708568130912395456679351152029', '-1753853035.61160', '1.5222190688e-7'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('954586193559726460107731285168494722.9037565484058748268362752807954096508569225053466442585', '175025134902024857.946659604982714683517822925827863152370160381284460535905875321378737938766', '5453994902469764616.58150337495'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-267237149648929650770841208112045365329816.439542499886044710089179505546406746998352250053357569589659024098206947838778804412901042009', '2865956990464.2419103294110091444804788397357697927936776876529534305', '-9.3245345459856762702231422155008533916528403844303985372147870486165483887045103066371e+28'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('0.000000000000011798785370557154', '-0.000007172072059991226804827454975003309679226745300089619652718388564816837765575110301627043075680798604465594161926', '-1.7e-9'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('84607', '2382032689860148308531395739.145192996759100481488003531576684203267158718171003088620851830764617037937929195251940479071065144531602276588713499264237', '3.551882405315242237e-23'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('0.00000000000000000047538803909839962706', '0.00000000000024039', '0.0000019775699450825725989433836682058321893589583593327509463788011148550272473897'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('19679924297334293397819794933736106194546137901961386201611155750965635026795564258383470442575.260572732334661986776494114890517593816154', '-0.028543668858124904602163953705481332784469412744477052870101191010922069308523653503847377589791', '-6.894672298488509801002555119667337674521780487655722074777233542267155675228661637040428771077684735646741948664238280164160260869674e+95'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('199552146833565065.60343239349268850658366323254334', '0.0000000000000506642066169812124424066588866', '3.9387204529258495649874909100478672979187554902310346669093354173798682952241546650577690501640693752238250721462665745e+30'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('-387161866735686167691534321080543.0837014138', '-322.7859891874614323881383732336514774516575971614318648517427391578', '1.1994382646851432963916978216940809600824844920678376351532980676778233546372312577779858407685e+30'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('2760024313.5778704057669856497022953922822386', '5872891.20345055160524909866', '469.9600619123080229602253503600815885043009784997903363248726938530266220060896484204883406'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-4528131.806393258706983', '3168972957516567936169681971345116655042036400321964003489252924457666024659.040760470145109369158157885488664797', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('273292204162.856672176868803568506201360158581697337', '-203923668506156435403094859695837035346323412975048716798801109398063980603468004686', '-1.3401692e-72'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-0.00000010004256187631071099217302483879302028757550203011673627029202998985108084948622165168409499', '117972776380484.93915178837827763865573', '-8.48013965134245625178836063051441323435647271026797907086855220052226306901e-22'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('674605103234322783.3237', '-1547968573115392911964985462870966980028921979919547094140583060509734631.576774388506268665328912809339946759987978943451323455847', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); - T('-15486548575410436752622064418.0181922761103719158776264635687475932616828979736848925661001354060303348716362733980966953827228197', '-26502027044661430625285256551247785723966919.24648766263790801109567144985787101364907', '5.8435336094527334313380874442292552757714007922160676702287943e-16'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('627040165425499495171153029889504.31671937321473687047233822601663676265664744306887293941652655644769', '-299694032178944026.84069784469535597844847667649446020292184', '-2092267773457366.2599983671489917243335863920764461348071'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-5407835010747849549162812758879087690424595044353151941744462471604631573009700167584742.679971019552971807722846633879079646240318162581665', '23785912294.196714', '-2.27354534224329622818940004179260458785011107401324434849239099642317816441985626899544554395e+77'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-3437992854142703284538293514293287579724965437595255626789898452286905464879603.686908794794846726361032049594', '0.0000000000074777328304945359092709244468056835524', '-4.59764066472448901851878980248313723924655316906084357740049123168021045989767328444918153657822331149e+89'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('-33240294219', '-226069762860245268437272123400574797895866315054579499385790733208804786814838316285516673786443254579', '1.47e-91'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('0.000000000000000000559929373520986063303443207', '36933.4273431237036497606164370219728463', '1.516050401494174305838357e-23'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('-0.000000035811883955605972145313778465', '5527078033940442210732762483079568725277452988799329891469839611510732047337136057081786294644193232432266432240833609588710665413078739225994547', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('-7739007094817715141415534.4', '-0.0010310442772165592938636050348144881712', '7.5059890887617268105018254498699286018459975922907203293975111378837e+27'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('664736881718687667849986931928276145068978792429084590393781571627859660480521515527094764276561967727571596730811078810632063149488381786440881', '62937288793949374018170767795206877739598679449526233914308932715137189098568527056769931656294739322689322329056.946645', '1.056189255140894676319184795924484581774417112174941320662584460123968687363680482001e+31'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('1479520195156023160509166908192716104626988.6', '2567', '5.7636158751695487359141679321882201193104347487339306583560576549e+38'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('4144933797043719944241370197349096775202783978960.7117056182390516050247135310919420201434961226284796322442627509451846774324333806928133', '-0.000001436549536960041433102142293970410560736641737553385170498154902239727624354281411916039988931974674024884950365465641053670732852912317910923743', '-2.88533996942077883558047681601227555314984906258385914674338622914140371267219866e+54'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); - T('41.7256544', '417768338427947272756830602167.8630664876', '9.98774932466464204745666911992458172855e-29'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('-0.6477113172989271633442504679000622043976951893186690203208872837111958128235', '-0.00002712595585889323017717655462257053054998647101877672740855721465714609886151470803531089253836693185401695482758345567991720762267657', '23877.916806628414276926998089074622687649042325041355101856950977903586156136500718471'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('-21917091964871342451992206772564762844369711509423475', '1879669887488887416581267987281341214.4429304654218', '-11660075054003819.59818915298550278545677359'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('-319.941085435931955099871648217609532586578785076603616857456171814802275189049894025923049360257324887671288005110624870117659723756', '-1209259540630640.7050906072352737775129200512204839', '2.645760274664275483725949459220661851854853412747262139035971e-13'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('0.00001042424466361432633821283150526031692563832637225253937116119282386305414197932321951800953816212514', '18954988639424361425607124230156398503821983407305007.278', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('4064061441012260075188848967395.41163501510560019', '-178.0811111', '-2.282140658213952526933020111527938257015460411842634780146539640497559766180052e+28'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('-10076.89199988877284010331336055060877115259816336517467218371386440933122838419234529824881687047023444626634100506929123', '100519630764850777276127225937170937041300592.5914818239675539', '0'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('-422609553944352857434436099933780797900138739284126565812881817586613739212989790522.7001416029294745327091', '-0.0000000000000223093898794034569593357582034154446629578960334147394270717104933058850702702132394868082939876147817328216231591836904251475523241182', '1.8943124676597083462180954817109145444459795027300602126169075731888263640006849874136104374769000225600307547924918475955454550867487558013232495157156648486742206063763750307325894278109e+97'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('886675680842288459.5356266771584490143609421165282813737701213', '12759521004999265123255659902105793387283770693576146370411779987827655324263758528791529730160060932010958838163', '1e-79'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-11177657150.65646', '22.5757', '-495118962.0103234894156105901478137997935833661857661113498141807341522079049597576154892207107642287946'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-327878164464081720402874194688.12136244531891652019031713687558058155067131079890467794666951656', '-0.000000000000001665773016162063861285566461795871095629939669512108146362381274207388415', '1.9683243832314684068694981732003714767530521361138727e+44'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('-63094305154421569864857062196205834006893528165294358709622717600166658284820486095.20979871251009575334824980244215983875178120163105', '2278599435786497009442063983727216254769084513168684321.9495220026945639870449781267261382539211632677463356802966665042258410858909072740', '-2.76899503104825033690325751380556830457514694175768561291465961820072546587796850359413e+28'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-0.0000000000000000464315768550899871500193684502284909370813260407289530945283911817805543721614906648675621468311473606607374316', '-14657114581570295624445573315579518326047.7216185748486577279127938474270096670527475557629714', '1e-10'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('1415848354602977301022564605988276509146139307061146005729375907494474657847229204078089112651532247961.2498603051', '20795855.976728151580671182795037498', '6.808319677667508066571933391558937430285632750111632425581199108274540329768069465268012060040463006349928435431691118523e+94'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('209217270216491723249057454930875024026196514659170035978197086188701765103863307225136265641715805608441566738879373033369122705449646277801782103367', '93106124.64158412311457273725223321043451262597909109831281377', '2.24708386287027041878070444131306874150351695153291788748025452289178038734621019319316274325504310951050759884886886403662534783223656676396335186772970019e+141'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('-0.00000273732923294441935493666908942841033515730542834279103731869694419', '-0.000407328055840682087718999158109736', '0.00672020793484225121288'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('73.16779', '-0.000000090700563689158672612164381048472768963053510275398964035070908', '-806696089.0205102044317056193127811340361540554326111841171123845420023017343855213762056939934454003594181'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('-0.0037095970887334179057042966617363226689978735352342006055636068569109547526674', '-1.746', '0.00212462605311192319914335433089136464432867900070687319906'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('588.861433890458300987619308938508241304189748563107484117213', '0.00000000000004293063193126322253506919708910593505519175028839767667711868920297535260471779185028676340081594977910156663986146041705819', '13716579686814109.4801527962530600690169654844007549458818514715312002107436724472149246597821861495065'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('0.00000000001663472681569937736021764468636408343947938441762572896949579084480124706652852698', '-127027.21905243629769199', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('0.000077881388218281005687336778116246367234713307125149611494456661038547296704075668396994096946267492966671812957606989', '15691751660415623132113012675219564855125381001352467351543756776971649081573575472.9720306430671202626044375403', '0'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('5018470142843172752988238446296281104766400309565140338441746808488124.521663', '414014171618758740750133.4674670147070027117433150268900290176025747146917972092888324395268942570587534672207640945924', '1.21214936271901007471005718838156413163402153170883868246954488e+46'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('-1832914338931696283253701994430445171212271.95823483324541134507191539703991467075728062389781178462788555134423060709657917771', '-12031.4', '1.52344227515642093459921704409332677095954914493311937548e+38'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-105.5668573855974034', '-0.0000000000000000000505080467178606893826007693521151808014830274', '2.0900997810368061695852459723885371044945030594418173202307869811934383649e+21'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('108718250076038260153655912870515978342.00377869107800089604074247785733113514358982948124392501830228193022809726014441184715572080686', '-15899622644794646191471360921732059006346455.85705357407498455317820', '-0.000006837788'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('0.19980713409898847304465279726012318707675751396900400173162554118780539343821', '-47368350449574490517752260479972114089188459037.897173178741491196402302380732406318', '0'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('-174074481522451307041170611922566358145', '15533147612724894801435359564263920589962105182625817145924486476064075469456376251836463637221004382078005938389749352027440867705', '-1e-87'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('532164888257576692409296532357256109132835857046340194756990817306212087277.733837988', '2807856120005059255374873.6034089884', '1.895271215879173418261611419721318714981393843995758414176773287420225360469468444791198118615652714e+50'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('0.00000000000000078936739235676687781048697471069755245617', '0.000226', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-4.757', '-0.00015390799666060423372811043004740375083032283821397005011836280302139314159964357942698276528052695369075098060467955891231827', '30908.0756244918840088857418083632668135191730355459469328351'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('0.0000000000000024086600463806299424374121416890201561074038886878296571892378709973569307557556598815096869720271879070921871793621514095998237208', '-0.00018267383650436296642734825224979356749023139391700542706611803293888182378140451160391086957687806217665', '-1.31855775981532073973356030848385469374644265678625171094991413730337640548e-11'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('-0.00000000000000566339', '-96726469543567045686080198731796552602525901758368736232549164989040575593444074453855788545532851.5949763831974132484492570065944329423352571', '0'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('16233126225250017239357792388796845628839602788760722792.453362213405880166713109524605579504406984411465580205725967962502654508133808950000768194', '-784330484460898350357646319220780944579454673767199974320.7460455944153056585632904028918800511788168812967069164912', '-0.020696793694570845174286957594940800138344900939750553472711294668787393104488'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('-0.001027227256904838404076883669167087383248041', '-0.0000000147801674790446518333269676210150733391205337179850941245838314675715834402855498818739028333287912525977435496', '69500.380043815001799615692643077023293588724619925816701350653879436495088501077999309'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('-0.0000001990043750371168', '2415439288627895583143324072485704.15761799024842376407789705776116715405499594097624', '-8.23884814551320804683528445216952331803735569672513e-41'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('-56876.55', '-286884694441389260975558562.68761178612544125809046971858121051871389394063721121229978222388403502505799617452213418492118893453300399160186065', '1.9825578395092777601362722054536146763450825e-22'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('23183117357670318840207286779.242191940176', '2441594243119571302087603432924028052316961487487341075546889771795605508900', '9.495073730207423539895e-48'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); - T('-31031314146924995', '80943698506460330141829058227002559323342352405399480229766085802.73623295758518488008784968699935295906439393184586098019102870553480600201153317', '-3.833691161e-49'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('9554004513125108404454.332182829', '-0.0000000000000428070507696677372446142868295574463706781408788400262', '-2.2318763711455904495917325800934504534278861298096679501991840956753990995597092670470281864283769126772933167094010772479607488715139e+35'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); - T('-188318292118020514853926201588010679957912685912520050100632462422877619868161685230958711843756798778233311', '132996437.39', '-1.41596493720951478829628672046649534660826666157452061731976640598400934255402677919024453233706878302895050954417148241176658e+99'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-0.0000000000253046119541707155341319133738179042090207530859028', '183617314322876.3843388', '-1.37811687571437713828216455135235670426253451409492363018493e-25'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('-42983.951863855905', '-2813978704145178281459185721082321712134272674268203694186397209647978.65393904624792638717190430063059680799351572965675889514606153', '1.527515179860376253681e-65'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); - T('-0.0000000000000000052576336175273095418683503744328917024741423886898192072968825295608281835403325939628995766411924797296362311459317663462998083', '0.00000000000000000635138682360814339656226767395782178622304745960310840815806579774726400528516117064673477214645140209682965', '-0.8277930101792341563711820383870995947773403726418026909269'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('14.510662', '-6460977193611710.382458732290006019458367086538', '-2.24589277522097021144960364847064895052756482295594419405304216930508553877595513258e-15'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('0.00000305075352127112867790436342132153304812674804825099', '1145593318925749490712370981825229018726.0929629635595122268970069928215193250755895206273738836343252203924372011249888557339544475354757', '0'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('-0.00010409292164615733255094982837667284444963881640472653539261289047143443796793765346308903423063400761614619592811443', '-910008186461205239.127162051', '1.143867969484414533732048839930898965202065938776741991472557932224816704971e-22'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('-69224654862065764827457960920931035032846898.270747371880524018589045953231029264548773980415492085057935536963', '27722.7974739183517122996227898377773462139628445426903600322572140365864846885180318665848321733332850952117877469580659938958717', '-2.4970299237366799314615107853411874721389361788061682389441515126234e+39'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('748328219291816002567179573245615631918010310524147605072502032845081519883', '53976076527955807214798385812228741.42671549665780851140356826764262550967043918485146793472932279132292584518392976084673452210', '1.38640721487830756717514342962081532673049970583869580500187134917531707860796097770789341042590001302971710208e+40'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-66096336983025155007.5220511215740675352418119840246737832194293904729678484038594073569399935657025712484320547254202112738396447702225', '-47395071000079000864207822463847460164969086692962555384461096.91095392786373863613723947638365443737557314257197', '1.39458250801892419961095624497744143748492803636e-42'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('258659989403036381662678196509125919573150803197965079', '-0.0024128949479267778078540054019202956570751016107942978992781301281505845332707173003934035748317893220323526695673189852303394867', '-1.0719902647451924184519408522873337172855140546829120811209098609498644614493683652023e+56'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('-255669456502609829675.1754570053733971644767575667708240795171306472406606028703384242193104814321565455014432265673237865614999', '-160209080640356763214498353032787518205.81824768012172641778084256321801379237119003770288489188251214191941127578937229900265229222', '1.5958487214376195646051132916531607859987846926501e-18'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('79332245721730794305433305.57125077116744904', '63.16069259007087721', '1.25603824892512581959792292319223137051e+24'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('5646984399916039752736634417752740757912946759288778', '27102250627116511555658883115535676464038667691892505474.49934453626777172121212764261264232359174493', '0.00020835850415559525403700740238114'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('-0.000001833204', '-70032493828.0462760607863944502271405984706585431640042645892591362349650922351', '2.6176477514868209438502651278222355064223158661452876524235e-17'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('1643290537424155577796064755302208.463709290498773494124727961655077611185', '0.0000000000000021758574682770342707923991356114108943145438806402313572809257501515087667155834891', '7.55238135485687397818640667440855290096077122043429316369443181871884343547076279457111380079552675248e+47'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('0.00000000000000001669225353724326249448998648071682103917420867656893815385345849552816287588317523521565176863936380610879001200667158874656768007418618', '97251151442885135849001043061692210364802177672125457972893459880', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('2232749647333352791881113926645372.34182416259209', '-1919220460056572909075401113153052783819875527740981924724295791352984029662689499.76611798540319163843370902120280294536', '-1.16336277869168714e-48'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('9191674.4793132900722157785788553450700110648470547649053246813005103102798867779412063404788356', '27987515814537513427.54295693583755847320485566632537666454854542018912274848528', '3.28420519356665172912117731679711366e-13'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('268544456176590551228416255234754012.978423972942', '42755282940.90691715500064', '6.28096547852933553492632311532241190003741515146399629261029875555487046371736315e+24'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('0.00000000022793719926001557870302579145905527347886600946741374898155679045335596131204096937048478565755124577951330735710', '35792534427563863196938393781453935443.7999401092216381109498', '0'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('-3442643999906587666844868172078592801320762633923948733756859111208732345488468033455180794679714351516847250384856323399581196946136110965', '0.000000036014507575334065020', '-9.559047816231745969792741298249599865990162294983728442351441090864464819322143517836559818831355892530917986753014028183477511513031345894970186973963363057009372137e+145'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('81741616723017006497822269553968297189299929736044754049602310386728770988752923740377486132998273316651271846247370444225', '81126403311021362988339148734237367331633947754186757315875171456.00', '1.007583393160387577305293909526638721713866926529770426708181568314812209839363396126767228220188033476873315883402864084678038379973e+57'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('-0.00000025775621672283396732767630591013281284', '-0.00000000000113112177508646706263827769038192496', '227876.628670799078731022374792437747137208249884441244875762679381641243743018'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('-1238055996867338715989439845494196.602994794912408122120948795262806329177848717052374938', '-349378147055192824558611337219704719883737450677311892640541798481423792746924344638864749321302858195330089126865026761152814882033404.742', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('-0.00000000058946410475204713', '-0.000011832888717583602387597691727694768559040334127243145271303547', '0.00004981573974207219321950980265928387761714878244676413448555988336825599553422671373'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('-513.63491785227008061291411777776338954398572267897385330505688506258027422', '7463219701943872073370450.8', '-6.882216233276485231e-23'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('-959552258348866338791129314756377976624367468137765850396480512899835638462382059570865324.45799673346664713198692357941260320331283378490142926303', '-2.22', '4.322307470039938463023105021425126020830484090710656983767930238287547921001720989057951911972958258858770864805962069426140555463215247303735419054054054e+89'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('-77883119700103963752264584100183435.0736204991947993893718715649695', '2333460567880718719594262823561329375619353258748990.918298159216358793650603321367179889345579967711807431663116', '-3.3376659872525077302924522309136969705216916179e-17'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-23085170097384093274972665451689092687328238951119453595497082490949759588867071346163017183648834094422009033630029341272143696439695402896', '-18086866658375839947851624913063503607', '1.27634988046387741564665512404914275394621578213783045249404842019782171899530433736356246229042901270714260617530954223288074096395550492077535596e+102'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('-1449068720600143437592.86874345113339256703842757704', '638423709046022938156322320162140640541195697853560467728060213175.52059634523456808011795512606785071804714042267000908673888494366196867266', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('-3', '2.190000177676247587968922', '-1.3698629025607'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('-0.000000000000000000212636955011389414839466', '-0.00000000000547133250917031259091402456004843035767087076198801752343779161394408952098079493807626900940806528936571596926583827387986856031746662474220', '3.88638333815383938463911113305e-8'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('4105803267451796098700354366317990626490793344.9427541580688128905741135112842298255240509063197472146451', '0.00000000000000000002415371770318597612543137459331265437239426595378149520249777367302756992574408286672', '1.6998638958632126100530099316755376351587863359383119895961776609478443848995573253450009639527748020320992925483242261075260845703161199802713e+65'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('1536560320642901878970181558216997347019834883976330464476424777280620033456797921497798356588806450402450622059908047462407498', '-6368600156760249976930924897417348481170030471234872668542819714438402228393329736938892817571664495264216294', '-241271281415249111.58830548698631847070138657104720205374313339216470189795216775425226632343021943837'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('6844820358486326194744159322308790843106744280320377008954541441044086', '-6232776150615393168477614896815395922933568579837.418', '-1.098197688009459932217399879700623500892903624890944427014883279240052795368e+21'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('1204688342277055965926379717661660411720688849872516698942674329382163376498291205040236943207092922171959399494914.39011443079158181256672596', '3034517350117681138346738557210062717172939593791401204645.3', '3.969950418079953101894124164568887836138078905589854545003614622505225873033172829206408652910629734844182990422e+56'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('-0.000000000000161196500013731342135880240572358905856843574326480831737185683677379073538753176666026540859531189671616672113637670083', '128440423109099451950325153756824777809528912713046540.743', '0'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('-8021209952320152857.4878831448334373766839169468808096800382793135409190492245466152537276074399945804162378509725564895492004776', '-12294.73904503469', '652409939156827.4442134394077978312360046849763214154626418660528098970087455'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-0.00517388086766833111733245112786346947323639422972973966551869774864327198718901177259417949555417334912135153898206114320954172867814126447584055', '-0.03517476661743945594675386610533927084329952861306622597741716386233453296240601914139672354527111013300704519530092', '0.1470906949842603766410501906977565055631364274063897751633'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('2573184278501499.8946176652926360190865431824560912727401079791346260554669708241862345911576291903764866699897164309950153863449330050713632041175', '0.000000043241501321629753526820632045775520519389477498990882842872887482968503164029794600119774116937359114105067670589634593793488348204314020725411100465', '5.95072835090110994658531253952277104918859305783e+22'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-6940702240308624593019484948231957948843766.184509559555320218721368728491521296608512372180710521266142766421504400057555709716770169544671', '-23375842193663737842275569.6936158276446636235603347421129063536999054607538810111679250798539565263876614', '296917740238252174.47986428376657061330786593813063'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('65648425.01180871514246724305614457967515067023467295347850669937619354644479642108771771127641', '0.00000000000000166331728135031480258375999655996342572341481785346', '3.946837187822276959776576071102153502915106781806411650618747392665080222989322793033450482203813683884929e+22'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('1153.8', '1.032', '1118.02325581395348837209302326'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('599854675229234875531510843632464421316765301', '10692666448967456551.17357142627520572161147276567490382868418740', '5.6099634089601680710080397632397697057201190308769900155756132849191067585240528670316228985292264623266972777421914641e+25'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('-91003154193327422318054977979559798038617.24475602943727257350', '-97164.43555398453386646402573925477261096177733241758254990430', '9.36589130317811548377193954259236823396468645893594190648495337e+35'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); - T('0.000000008923846499877102966022022724927927305505623352384958714910299624734808349340038032388088533376134576612671621098639464445', '2323043673890365404072353101065788418599089133008528.48664319918012059564599954103135', '3.84144585836928106349595541556116685e-60'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('-46799039556564983375609015238952166942332338.336', '70591564515825593103568139941828658075146291678283188216481741557727018642248891354.59565', '-6.62955126119542587893e-40'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('-36.1179461029742312522673847078996883965738928503', '-100569467167841102140550919449278060898188922968819.602233099844893563645024785643324195812', '3.5913430905124e-49'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('0.00000002479295909306169487242742853847942399677274865352201616277394801303697463391770681143478578', '-975102087.940198171467818631687898893644299737144418720321072409833167062645', '-2.542601374737515379702975646189299020480969558649620454043232922284568672e-17'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('-22704.6514007298851360157029855944029770', '-0.0000237259788727499103563872516086869904668403642073415041045581124411757882484640913456570', '956953199.802725341519292592452059918169329599946179917320348608125261079184320112813'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('0.000000000006696949688432960159969756123681564135755842', '-2108422300081693781235179093528225050930052974845697.955570499448273929659693052830371912141313813942220496005', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('388544724722977238072599.85105881568', '1119502301548081', '347069161.1671419201048623305561411516977843187446263880418'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('2499833150241992476861383217158', '24842.806938577597611681288280499261519959074131335827532312007098774218994152805597', '1.00626034587101419900384153906414128379e+26'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('0.000000000000000075207971460109815781578029738530719182', '-0.000001252114075716431179907851124948371096085525196590897471', '0'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-2431215342181996772981861978777959489747291159041531887.4260610078297188041001258499984761128614584389853180540573473285885761798543658353', '-0.0000000000000000000602452416497034439753397868859220924283164668346443307865392234488622501612643356251294446058052370612921519704379', '4.035530899383427708420533850950801617603263881782841628213157245563085253796113721165322376257920697853813979429237609632e+73'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('-407831746738950597449364836360790405890616752952418.9819287191146342464653389498070582', '-0.0016562936145919801805083922955297251024054241416693402898660748687576109090725423948840534145442012567640833878946340376579461613517664', '2.462315516681007978854774489192771647323890746368098663553118408304656288381857357663609206216e+53'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-3374732972793083645750776092246840863415276871396777646.420558762189352107316007310937411', '-0.000104684541074035590084725187308919085090334423139351523445490833599909272825834065737033457170315371799582109616299652457425059891608379866921', '3.22371664256175704755746904789107482221884721469026471438546648065568416093642164068502446507190361997825460584330769561155220142746e+58'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('-2473283609019884187026789617880425.5292', '-0.000000000000000000012629560700156750844742128651038940562337604172', '1.9583290881916322023307410267121451340090794305482720970277e+53'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('-1404482098715017500566440471472979845183069261054584897287814242487239267004568787170554993685910209103145003498', '-1617536252667148116081061850408841416455174665207754497642731794305747363754.714903728875245403788805437786097579', '8.682847734628348531930390594592919060197228137041571171563249190604755150351229996013258337462929641275023754412046e+35'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); - T('2168165259874', '0.00000000000075588149586060819104186427987769944909836644183903985432252629601447845760197250954050695394086860163', '2.86839309038176336264134620990047211480103555575604119209136497e+24'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('-49999037754203038494748194130135480756653249820.50', '-477838183854181143128032706335056029040474575.159731344891403379', '104.6359195301582024018051689988803119224761424364673522247848762110933344858'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('3384425457979559561425092835866696982506431871523977204902603949.76146368711218894575822938101642716816585813052249478551420475924034476', '30321929004931437310276217291757920766818622486697561816.3163126783639034538589498855266374840067252586426724325300151111694988282999082345719', '111616429.72744676420247993931734393915595006879474992'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-224818432373113057932269131568462251173627386571177801533800760.32409', '-1695376460710.3108459', '1.3260679122495366951431400279524987016153243439210812707665894116283984110338827213610756814616975001334055919534976385903817839190792064322e+50'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-237.578', '84.91553751340315592695506241570789130308896653823', '-2.7978154170254229823460689077145936'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('-103772.11', '-0.00000000000000000012359388598271456139794552736048812520958193178449264362833512730122738103677292334672889946035166832053771059016318012811', '8.396217108548009367707120637040570491415491600095837475920856749568873747971260965596560371476662507942284833617000732e+23'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('22909648747874321834002861748166913834938225445334337582075.91577617352530837700404418138563', '344997348755274633375686780004807427237266721270788600978798421.31667232973698994105219242156804410304', '0.000066405289288542853704464526792983880279517370745526436521714'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('22.7093', '0.000000000000000000031482402641136721681302175040141334303861664544258583558677552712724221091570109031291009573901616627307034449943797019159196295837', '721333128823107034407.245588580283601865156902265694027404835211281464004207920098622691'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-53.3482008111094893315', '-179875603511294433120572352881730127395532524029934609151628237104587157.20139982', '2.966e-70'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('-0.0000000000016965884607882112341570473022123635213887877', '-254193932392350141293665499056643496334844702171.0011957979', '0'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('-3608818103.6257', '0.00000000066687566458790594', '-5411530657451355102.96900423991961831653534633882826719471593894648307767'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('2318242408326881364050125597979239', '112310944635701210834391077699249659690575868442.76453626831', '2.06e-14'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-0.00000000000000618702564082704832709012756540185267449760034770120968177308119606015', '0.0000000636992736953289541753851889023710808159676823930954566680270109511630825121023467230722909747266089629998915475752295286219924691553386019', '-9.712866853740501579238837122769674331721942058210092878959040848e-8'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-598192155524599.543469895866422907968312515845807798812410543694536906451748175', '5694882.75800932980130397772', '-105040293.3551699886292866504040483598198656759423392804848834787366'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('-2049743760490918742562713287128097078960201454.7049014175851231280129287812874', '0.0000000000000005771177413168', '-3.55169077944831902790783522124802412003623956082372578582048268563797255797286310356936e+60'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-0.00000000009884649504038136938680320284773210466871053456420299408286245343032575711592101304225442', '-1098525608842646403217112781968194558531214', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-92318581224219215407076957352744169354858712728142497119299358628912215021294586712890999326827690277362149690350438983927874511888748137479592656043', '-290760936622051110642', '3.1750682294788645045471768037259286560603641852570628867381214349882098982439068147409937961868755790796593059293749776446591995499123894524476912116518548983598710420846017432939463458659085485919e+128'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-9269786200775977340361260306515894998.021', '33193', '-2.79269309817611464476282960459009279005242069110957129515259241406320609767119573404031e+32'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('0.0000000000000523838637138708498596608193031525072735103662301710366353432022220335881062938126235613172748770850903840988895888', '-0.000000005390098997912356392648612061230099204506807958291145755415705955992896925483127908', '-0.00000971853461952362777213043286495'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('11958219415768809322523664.23510148866112269670', '-197354727314347918145898028040.448589287170209', '-0.00006059251571269269954205910357'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('1970642653364229432816602515045582440712477643422054228961879708118806395724379583117602361343660652032', '-31644394765386367730800662519558297968988.94299193490', '-6.2274619817339032278732958869917127861770080996927559003305288e+61'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('12.908', '-6090845987261539127416937275863176894837056503709934034705496307351876662575410450246138356839229866026764921029348319480510482423385605152870', '-1e-81'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-3739413063818.436', '-0.000000000112265754744654239729057667928492728400303558521884186145185975438813258745093576284952622933', '3.330858169816469071325141276282506e+22'); - - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('-770817.6149120', '1', '-770817.6'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('-0.0187466210691', '1', '-0.0187466210691'); - BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 5 }); - T('741750111.2', '1', '741750111.2'); - BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 4 }); - T('-658788.8898', '1', '-658788.8898'); - BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 0 }); - T('9.61', '1', '9.61'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('-0.0200812135393285', '1', '-0.0200812135393285'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('0', '1', '0'); - BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 4 }); - T('0.019711206', '1', '0.019711206'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('-37901147', '1', '-37901147'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); - T('18.9', '1', '18.9'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('15.5', '1', '15.5'); - BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 4 }); - T('-7897.752568795', '1', '-7897.752568795'); - BigNumber.config({ DECIMAL_PLACES : 111, ROUNDING_MODE : 5 }); - T('-1251.5193', '1', '-1251.5193'); - BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 6 }); - T('-322.51', '1', '-322.51'); - BigNumber.config({ DECIMAL_PLACES : 279, ROUNDING_MODE : 0 }); - T('-1', '1', '-1'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('-30817.8', '1', '-30817.8'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('5945.68390922', '1', '5945.68390922'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('-34433584302.1', '1', '-34433584302.1'); - BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 2 }); - T('674578813.88', '1', '674578813.88'); - BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 0 }); - T('-27788.40581695', '1', '-27788.40581695'); - BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 0 }); - T('-0.00000001312054398836', '1', '-1.312054398836e-8'); - BigNumber.config({ DECIMAL_PLACES : 259, ROUNDING_MODE : 6 }); - T('7285863936.63', '1', '7285863936.63'); - BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 1 }); - T('-160424.958593708', '1', '-160424.958593708'); - BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 0 }); - T('-1', '1', '-1'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); - T('8462674971.041', '1', '8462674971.041'); - BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 4 }); - T('0', '1', '0'); - BigNumber.config({ DECIMAL_PLACES : 286, ROUNDING_MODE : 0 }); - T('-2', '1', '-2'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('572.2', '1', '572.2'); - BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 2 }); - T('-0.00000078870910606', '1', '-7.8870910606e-7'); - BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 3 }); - T('-1.13508762818546', '1', '-1.13508762818546'); - BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 5 }); - T('-66055.885279477', '1', '-66055.885279477'); - BigNumber.config({ DECIMAL_PLACES : 210, ROUNDING_MODE : 5 }); - T('7', '1', '7'); - - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-3627799291965346540712456501882577638718153439964273.69768754745407377945437075521783565726672078877524231088948196974675990545252844538838313048', '2902582598160223924761958365823830027858536030974673247874848195750710639118580059329', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('-36001492.432242546296733753651918782904968060628', '0.0000000268571386752795633902', '-1340481309923749.60424676488025244368284003'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('0.028761002817864251956109170412427462717070528743863157542939339484227653369339502297446', '-0.000000094653664305603408767633117494180308734767461188738807756952982012636', '-303855.1442129602517346583444983127341880783118168865288269447897099302126198776'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('-85322335566464', '6469888.5944307193591905163370', '-13187605.060141139610979582454208887767681099267106809857522822603509317013524918783027403'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('16809851622.475024268444162553728588984396380486399687835621352324230348800918507804359930399204804510891779303641052273377163383820147883', '-57215392073691534065404484981855847094198821321.61', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('-6811137700468.4120764694970441135733', '0.0000000023059798665870351445075811611361310997931893558813170397607609131', '-2.9536848084234293518878460220105623971538070065410169e+21'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('-638779241138332540350253234404280665291777745188393412936839021876823463401783663308918096038128976596374.561', '-68051131834015582432107963260604318921316821583135690566786271984905882370557171397765996', '9386754105668476.6600599'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('-14657920224077.8196317636342', '-0.00000000000465223224472437622998002168098960600459077322855753439284117569067355580658376103876790291367613451291596099691519239625284134126680082838843170451', '3.1507283929558497932940390469545446644371974034666360324e+24'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('0.000000000000000799413784708489070154804455019351539040017795947686353303982626226154902676475791766853951996180403160495135659', '0.00015899044548165972', '5.02806179507626533025725613512141576199220345614439279312943689111263e-12'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('112.4', '-247122773803885104678938490543776215767287187710036178178642833042340408207332559624129671164074382472407914940407329096987525835763247', '0'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('-6749239072680037611477387165520399718627171261275656871594447516707739157447375453.0850906452508074838041592952394', '-0.0000000000000000000425367400205957', '1.58668460944871412110921030222520659939459453295210959028883529105346640505416908988034240818782790363642220342859700167068855612092040209711e+101'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('-78585520044519312578903851346721582390295041942545224540.4077480063430', '15608189483426918496442359748.328547440633', '-5.03489018556335172543283965718069901158499515404324025173365767509373422432477748944903e+27'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('0.0002433958238870374223584900446577514807866249098', '-974085668642024438754153215750261556218494099322336875511140345748788013.37160781313866594498158089317715605416277197000420491691481779975851730965', '0'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('35355658849855129861180132974521949639236227942273180070920909591997.5412718864453961655409496833643232', '-6829894701612572880956944.30', '-5.17660379764090344784461795557673945820085318e+42'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('0.0000000000000004863277441095313650020277658', '-1915156649006139193824415428828548.226120476308930617348969557716204059468127709020706212182973396317634270963094', '-2.53936274279134646909595038496863193e-49'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('3110214615781612992890984598602049585353025840029996756.8', '-12363633.735703916761979890620833004650965570622978', '-2.51561529746702304379852124316472359173133213146019874592196121688793016060937069742986516173e+47'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('-2492672185265151812046174378926367157329542788.012959590780989023454605', '2952729318474530090870658399786053537408219.3906284777551455998495603485592436', '-844.19258130743328424729732809565777445198353443'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-0.0000000000000000007320310887201006223680530966667619613517348866729624512960684347441584440958295121362771380217317647500564562116357111207761629175246399818', '-138414223976457986589511933703538109754713884281537728200.91943242818721', '5.288698427732450616331e-75'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('10999864907092520920895380713856004127397682.532596580677990930328362005963039243358204558185910', '196343713.6849006266166504', '5.602351458394789894333113940137448028976772623932537000358638579200945e+34'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('221045710673710276492009437067143592662773.856846445724783089474622164404197148759178814745808223790625805135636', '-0.0000000389477677414362297767674108298752973871495647000802842813777875775407282', '-5.6754397874911185057037157523236644823930384830352417175752110746497657133548282615982344419113556016327559255673e+48'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('240678363889896535476608890834256839099354200642282132.3567674776854817276669811640194672649868976944164254551737266436840749954620074', '-0.0000000000003270561052230022070885151941886998875327220508415003856939907938256551789027282736470999947552147075245018856709429461672576524075', '-7.358932001155909554704741657237282173970051372138657023587316029170115689537846892416866064347805401735668699561439620407617493743577191366190959232502857112108757e+65'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('-7.178031909440888369704885323707', '1516020040884738327154002675958432784538802896161509426211008572828005010593393496212499875624324908766875671036834866713', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); - T('54965252469790288.652938530020939781427224341939297915034220301430902042349180160604051708024915967324883143322801228723358372853', '623946023243580345168323881734.4620771717220859', '0.0001'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('-2795638.1', '-2161096419.94539189', '0.001293620254144256162867799066739494523291287326399017485930407237805526109189927'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('0.000000000000000003852018722689322934971027565056757680249879397479902038546745253385039422647290', '-17246108988600613193981252482413.01314088520161996158451216439550151353590714427134854025418012751181842007418232652053551313400069601766742100', '0'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('221801304731867898722038636258624536262037365890856604315282884653157', '2094327674927908258391134166024509186528722409321102998398672460295465253591729278.96582716180542732018913846048640937', '1.05905731651806982574099150484324282372652447760899e-13'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('1532838983776695487599528998729549071388657144993487023435228991.9', '990.589', '1.547401580046513223546323448705314788866681484443585607588241936766913422216479287e+60'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('465700444880360273077764592.7986182609', '-2503537671301153955344095007925259354071482854', '-1.860169512202001663e-19'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('-737.9477460', '-2208882228473942560046621538408466604050799418518411.359689327180780337087341150988044640763423839783525726874628300323581490779705', '3.34081978879348533408762709794460530393880741912e-49'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('-1780.935', '0.0000000063599557312757408886184969827919637733185077905549489709055686000144560690972584654631309913966808095690705362617488552800127402759644403578323745', '-280023175513.9532999919255525243358694199755546'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-3174812496720.2024472161401049345990356687496259647362835882746075189931008133652106507076289350917733050877266685', '-11577402298228661788066668885649046899568558593977323012221669916977009075263.68987879858', '2.74224943985e-64'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('0.000000000000037393089998235', '30.48028567299956', '1.226795917e-15'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('-0.000000000000000014361552929811982736615965481580567217525637319317240063009008734218786729641811914528272953', '38894055.24', '-3.6924802109711773877287179688750211220005551983e-25'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); - T('-1106712834746496271590139438978918.284493457211966539186940267648623517601413699972073', '12.651903442803950284122677894500273050579262355162185398259009250085918287743090096911728314267336', '-8.74740184154632998685570715135187099129190523606826573808969334655308536685525947172863935518914297815606e+31'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('1965816920105.701', '193318595333060825523082692725318850724848310012764635800422866840602225944616048379730199886885832561560510098980592365407100269336056728309672617390', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('-93640040324023752251529412531185332867956555140665056973180546778724498284012702822548570943019087150145776861957801211909463864512251577824034', '-143231624126283297491786421936221797175607422617226.013004717269172628467439784881071187990876523911857290645231919390', '6.537665190577184298014654831331041237300337917886585974164714424079643658287946824279228245192047128164615398717555388e+92'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('-12131310205530178549986982444919200922452750101913903755227517798481860220928943578277008850211909085315660306919866449158279174719742979917858572', '10099444477949939699307890962009803302145119975370786040785982897958245734502493657340584708838245922196599201528769240812710', '-1.20118589017607848240663555410549241113804583900945574602316648957593596767104398128e+21'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('-155911155981121697946504715907032', '0.00007713234002563812643249182407072677029361418001885804605134796432669022', '-2.021346116678142665492634136637705651399478440912868181711281002264263231182256160625624195021327e+36'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-314519720816.294641993510410042', '-73900264788779898482484025551.2789786937107751050093524120030925959202365579923494746768958358324131625416622963', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('-0.000000000000000000022056684946133452223154877758058559745782371622496016852274708161609469345202799864210511471961718727568797250983', '2192.4', '-1.00605204096576592880655e-23'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('-36718441550169372371365706865920954220515130374010754420775299383130574258014428968818638300100167261047519525107435192917209537633068.6987406', '486669343803413216.6570235994569604541241883174903', '-7.544843746106501830550929477783142021319040138888657861453606554546672602582819541534595959892887319664966162568994848849103211961019778178e+115'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('-174897603.6829025255536616965100335620728022186021824024738814468540609170297407222690674769997151788917219289220320647', '-3090631934656302827461849613845387320538781882390263576900269.96203524879585780492687738568481060148212201875530310065841371200747460299396388019057826', '5.7e-53'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-0.0000000000000000000516635551329299730054951454997484763051286676348350719016083089595328539668314795616230172195369791117989547921474840417479838289', '37158674757939157993806627436353261.1693133803498125', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('-116211456037739778354514403171070990290045964305800566666581525149565486.32', '691105844361415778213381366158312468', '-1.681529059345744224343857153033090610271694090791790398037247261895639783202993203557556001605441340067039008803140995633541845972971384e+35'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-266123221842708273091923489090.44699490158783091683586819391224186615489948199901610194471068906250718585', '-32022496369765241675524333697024321255620899023355408645576679616065845108442066436105122545172230348409185.3287445324413516115', '1e-16'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); - T('-1797688265425.7165515', '0.00000001738534543188409980783340157189761914309185224423152375400233581685255509123238', '-103402504854969448367.9442019148179289847567704024747005025133086683014233516225496372066135892'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-10984212754657202637672673959837294920049108', '66798422529499247294838021394095462563622966883604447314209247', '-1.64438205854433154292727033196794337117905605306943236068e-19'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-53728320914823485656962471346789246888085720599563024297225728806563759597.08997812964997715166804294389691757990554791437598952982626', '161986897.212190847247930402167370789598105972372356016401292522857077503612014300986685393882', '-3.316831289412461645528953055028515828986318158340012081483263853064100616867908460183631017188747235206664340288823720112312483935290441934775455091087550590435261e+65'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('43499319623237565178359324186732885047347808350193390861109947292568223373928330829578849395492942843044863204487853834423629319010077404', '41.61584639', '1.04525855885728544900944700422643224407931616142707006135481718584285228504584382741371535986902567099380489626244638381422162201060732538906317315441244351440427353999563818555319307059754840660829e+135'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-0.0000000029566841246534331279657636450833574893146205734156302396324472852389800000520273047202036875', '178293878201991423271468500825009131886066263126087140735726743237756163465204105131686', '-1e-12'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-53285984.2730196558626413', '0.00000022251203859045276846118178068673238976534040397169920739300651950103910444091385416803551627124476836809100670767957171883776738529248470267338926312', '-239474612747114.418096957880031470643644150387920667074980777785'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-0.0000000000021241416901713887978056248575347198323545756122975232381823836383371939553270979083264153498307676759237644777281660799420859049004048904361204700', '36679048355616055800277781408267813021767139312403514628691728644295598845421524239970510639806879.6945149256633616388109328661753190177005', '-1e-41'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('137574367839771834643.393381075516790041905084899117844552825342262', '2611019781396503523904141094448721642995445153136976323137569094666196747752629789123.3341477720667223549496535765203833491631689201904030781304366462', '1e-21'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); - T('-46528959.7394442732924916035177731048000767876497850170219980388259', '1037248701397072471510989839316688758413582838330610129126886393101433389394585975632286834135743.787548166373358914448', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('-0.00000000056695591361167840304172988714223322951491340767159863538777178312445969763826386935046712059795678046539270261679031967257607760440924899096022660', '-779029210176534831045360217249568.30980168036216148309578587927769139848738105890895104989746513915926410335893309428593918260725239773017045566033087', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); - T('-13536625136815780.744306114543699', '2.3', '-5885489189919904.67143744110595608695652173913043478260869565217391304348'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('3828596461558459272689391034.819361202105624858791543660878267672483858601126237474504353490573335717987597176461232833', '3961994280872253514567880', '966.330638093595121842939810134710239620276'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('12599638221152309.759580', '11336877437079.7', '1111.3852373443218654215797135397663113'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('-88.37874582921555583012595131704636995244428718407695437048798589292198100811998511949731349', '9771661424624630602696201302125658718468318947410559134582776640149515206573413089145551182999199848.976786489964321075171160128096611871174701344', '0'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('-2927120046541815610111604317174084416389151672310745506669425625751707198319307905481195306939915434378276670663938336984100459602882414666739238', '28375670960860533566126717597042623586721711867346949078603553.961690252700453027034899981369000418', '-1.031559764905395713608499094713689979147866827815838375742327221955329968696830466391247813620712877131843983043022446116077328828325714886717168694179208257626570794495812884425806e+83'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('-19470574904101509325332331844986037767740399660560019057.7119', '-492073026322248393605882095057847550345748645576816340124093551078296738464192541723849045789', '3.9568466188086958171880465233173766690032026629745e-38'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('211872876026497009829063883393233809481191362190883849253684099737680426913907201054617907234117865033184.403186292426187511', '0.0000000000235411610950606792007241228964067314935178706017234354189703612990579977911087014870100085875178570060549626', '9.000103060802358048215024300287481951213931206246371042229672906316070218904715481032206444135472089495320677006553492015303007635540926239602846226244158732372969514391243502512e+114'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 3 }); - T('-5844455100853651376654250475252964203821845263432078985483833480198.51472537564940283680797304546064130915324997343772', '0.000058497152341298204924493051718564688435050872861886324684792417903238087063888341977808292118', '-9.991007881468350499077540958997813363816099982733021160139526414847479777982598244125723450988545976629726106e+70'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-208539893283563850007.12643120990936066514350129267100171', '0.00000000003593389363501178150231050905656637424998749048521394992496271441393538046117383924866658559', '-5.8034315847246614933801374673895793847064415344319377921323484677322966821185e+30'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('8043645587396641021732938502681359817543439337253058801052675740727721571730611228132672600646378605923337', '-1323168.0924182', '-6.0790806802907468246561587887883818559253301923676419145425764182242811472128643594651107453686007508486594959358274782215931402672682865301655132211915388078279766064418822e+99'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('5345077442239697454774886011336423018078704256068877803956836.23670510981228', '0.00000000000000011060002574332742516535915190923257434052767174581226361318129403016189732388821484995223249750300118960318109112292', '4.83279945580136505083168821214294440490791659361794451962055705475361639771415302893151132245139970562331724322926429058741027119693014735827818262705360391630191471509021e+76'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('37380113626925218715479908638517128519818838419387968758726972455361593237513712458449673118747923669546576138252264740929482975939', '-0.0000000000000006801939143670958029711273998707649', '-5.495508389207880808350127256226214657608101009599899937862259967580635635162812932348658262637085316678783747639804163466588837613458273577204072680194370104490392648318243300970515044257684662231363345437817216189655097e+145'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('-0.9240980589910997704959111664719986817089775045950366247068688279255379005723485652', '2755.6517853', '-0.0003353464555720329641810317761965302698250818448919198516365858150087574131'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('-14735206357348664992865735695185105417857687409468279761627208898647639982660985611846182127951822610594979835', '-1101.435920065550795028', '1.33781785112580264818549467778872109422330749864153338258575618875337349603120233840090224841974504016817513947058883351448908524776104006557258225856439835456989256889447413801105919735883507e+106'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-11526.519029803437218611745', '-1980641645745226278812446291533504566961012681.6852819482283250153725775125045633888369820790039112495797481', '5.8195883412653009499001562175289054617e-42'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('-6932745342923694183863.4407712889787388', '34870883.827073144167437289748257172399669498831227487', '-198811861990754.361'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('33243257027', '12751607507856865851589951449477366328020361795144300426079667590.64133288964626', '2.60698e-54'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('-1069197506689172.41', '1533236526211500507519256343794194823892728051.876524428551329407055560589140164359', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('28.66476546644904598250037221', '13561.3771956', '0.0021137060825761378236596338190565475019637983'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('-10.096692387169004444076101', '-7410.64884007451703882184197', '0.0013624572699449996017890531485487416503'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('44.7', '-0.0000000000000000301026373988561927150', '-1484919723402656472.793582'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('3.56894291995338299991755', '1743568375310759.8', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); - T('3', '-826.135811839846027331161', '-0.0036313641861364767959206955234182098243004715472601430821909469785'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); - T('-1808754472.784798621211119', '-4.80680493504930', '376290383.576019'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('-13719.54124584038123510031', '-82799.7597925792605642', '0.165695423274283022702'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('211', '-3', '-70.33333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('3928.421774', '9', '436.49130822222222222222222222222222222222223'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-2004652978881980253.113402793', '10322816999041770.04392455520279', '-194.196310858563604831647952256897110242003406104346850039990186256351'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-2018773348883.71465054', '-95.6599547821640', '21103641053.153823906720595724139611921871346297547041415'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-4', '3.4', '-1.17647058823529411764705882352941176470588235294'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-0.0000000000028137592443635124', '-13000014', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('2493563679699245721581.10118959', '-2.3', '-1.084158121608367705035261386778260869565217391304347826086956521739130434782608695652173914e+21'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('4263', '-377673230.165946', '-0.0000112875355188051814813466004829001'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('581039154', '126.1997353157348695726852159', '4604123.396505687590451186522030874068448145555'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('36718233569568035.5623632966', '-0.0000000000000000004253531230970461102986', '-8.632411889259977432652492553440731066395804170439188684436466736195285017185879275448308e+34'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('1589.0', '29956064269104627619425204', '5.3044351411638043170732068e-23'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-1', '6430.54347880709805273799', '-0.00015550785144298652946840350151154071856470065693057863326908156052'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('0', '-0.00142730507727', '0'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('-144192.00037156754667924551', '-7.162', '20132.92381619206180944505864283719631387880480312761798380340686958950013962580284836637810667411337616'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('0.0000002125446846991632617065', '30187422146964858.751132393', '7.040835870794392858896523523804956400228144991244039904910599480948e-24'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('-0.000000000000766736698720', '56374815559565768750.730069', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('25544518.93', '0.0000000000000000469', '5.446592522388059701492537313432835820895522388059701492537313432835820895522388059701492537313432835820895522388059701492538e+23'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('-1', '0.000000000113429652580411765983', '-8816036876.169455829162161705581854144993945032508218'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('0.00000000000000035422355864762072645518', '-1.6', '-2.213897241547629540344875e-16'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('0.00000000000000026', '-0.000000000000260917323134327', '-0.000996484238289326852105214922572476320767735966922488817544716433433861636109648679809'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('0.0000422503149', '-73.0', '-5.787714369863013698630136986301369863013698630136986301369863013698630136986301369863e-7'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('-0.000000000648027233537154668482004765', '-134504033.997745367898', '4.8179018448473e-18'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('243894540410762058029407888', '-0.00000000000000002232190341731310376303022675', '-1.092624297539048035018341587483106663186005083e+43'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('-30848889531', '-0.000000000276330963520701001', '111637469568946777225.042184589341630228759558909484344277094396913777361082423533527'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('0.0733847676285075658223', '3200754441.76241498', '2.292733446558933402859704013400566526564506089725566867031e-11'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('55459.7094802769', '0.00026', '213306574.924141923076923076923076923076923076923076923'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('-3824411944005565', '-1944006272447294.9050169336', '1.967283747079191009528212074542465311767640289'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('-49988911.88240', '-0.0000000000000000000602946', '8.290777595738258484176029030792143906751185014910124621442052853821071870449426648489251110381361e+26'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('905.265', '-0.0003762667212876294', '-2405913.0100639133708110280512999354206013620719162208025088154429338195961215800157338592084057296053077'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('491681428.2', '9889159450842871336.20055172', '4.971923353486762549830247141081325652241006265772730475626693624654733935080926456805817e-11'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('11.516921', '-967562944223487787311', '-1.190301992108930994314e-20'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('-147.2', '2762717260.3346237541', '-5.328087753075787159592127888919297641410658444033425936501613e-8'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('-463636264923890408.70', '-1523796614007631384233641.36636', '3.042638765973583e-7'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-37055587088693300137.079346', '-929484432460697135181725', '0.0000398668184152295421171433434'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('0.000000015003766126680', '-3126735711697635910537.847162', '-4.7985399183398926661e-30'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('21403298.27', '490950349594', '0.0000435956472741079271932239552'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('12747419090.74910385808', '5609552870700.213864971009786', '0.0022724483367170588812509767026961008324355580443991349489495630841'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-0.00000000031650284413470156532719022', '24884.25268228752104', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-0.0000000000000000025560659549131481713245589909', '-1839.19039965941103767929', '1.3897777823255771365831427167461403931142788015230608260379260680349248504469029e-21'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('0', '0.436', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('1.647', '491019608.868', '3.3542448616196921e-9'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); - T('-0.000047732386384257731', '-148.74', '3.20911566386027504370041683474519295414817802877504370041683474519295414817802877504370042e-7'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('0.0000000000000600', '881.6632103841255050511', '6.8053196836759278403754559818100822e-17'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('0.0000000000000000006637245', '13014712642.3817540382848', '5.099801418885075542945e-29'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('143776841518863171', '-0.00000000000034609861', '-4.15421609231147073950975994962822878716560000053164039000329992657294983068553785870448887385014346055882743938208824e+29'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('645.46862418407791010997', '-0.000000000000000167', '-3865081581940586288.083652694610778443114'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-7', '34.6', '-0.2023121387283236994219653179190751445086705202312138728323699422'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-1121235833199899', '-32.8', '34184019304874.96951219512195121951219512195121951219512195121951219512195121951'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('0.0000000000188990009740969592', '3378889801717.569696743', '5.59325757368297407e-24'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-0.0000038752364', '21865.820957', '-1.77228031255757803194199e-10'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('3932331.838871822', '-23243490297748.2880832875437', '-1.69179920420676512721486683805551646729696968236e-7'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('206040930636923340359166692', '538.2', '3.82833390258125864658429379412857673727238e+23'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('0.0075', '22087187408224417.09296328', '3.3956337950060989374730469091936150605677e-19'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); - T('4706.821112', '-4484.0913', '-1.04967111441285773998401861264510827422269479660238'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-0.0000000000000003941356879017724141765125', '-2978880330505.199022894078127', '0'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 4 }); - T('-3717638164756266179.31373', '-0.0000000000561', '6.6268059977830056672259001782531194295900178253119429590017825e+28'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-166897.9202', '-288870139993051017637902283', '5.7776106663019878573e-22'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('-109773551.005', '0.000000000000000291', '-3.772286976116838487972509e+23'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-69483831516149064933', '45666797733.7', '-1521539388.886757599986395999920494858843131'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('-2615008789.04', '-0.000000448699711223001786', '5827970742197229'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-15.73379275132695121', '6940.2776264951217530', '-0.00226703'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-6.2', '0.0000000000000061493836805438314318105727', '-1008231120724556'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('690', '0.000014578939930754707820', '47328544.0009547235807333066257912877'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-29256.628612', '-755504.1526726314415', '0.03872464301950333628903545496047362726515935622535422'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); - T('-322915.4117033386', '9.11', '-35446.2581452621953896816684961581'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-4882625292842289459782.0713', '-13.38', '364919678089857209251.275881913303437967115097159940209267563527653213751868460388639760837070254110612855007473841555'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('0.000000000129351956271', '-1.23277829937087117', '-1.049271846665476808964426796136761445163472822311e-10'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('-48182353470928.914851766197711', '2272941918553283127', '-0.00002119823347778141066704688834669339833'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('3196.64592323932531030', '0.0000000003245910077253889108961189213', '9848226990760.5008268589452525184898665826000345443245395549409514626098519146023853166565543551373496'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('406.7745', '-6.090912', '-66.783841237568364146452944977697921'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('-1914.2', '-165340.870423515601', '0.01157729480373990431549028002660588664420183544300321207365966680648027280245'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('79689754768065472164971.285', '3449964290146359.9564723427', '23098718.730414668928941553485511848664319501601702219791827719624588756164690478609945244772535870938469521'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('9001.46330089645627336', '-5365000999.299', '-0.00000167781204552852879566574147623862228074948620117785436144852086837922548'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); - T('-9587016002791929.4856188', '-3031413369917389888311716631', '3.162556482045597308235495224067632584707461093481480654259077736452205618657579410106e-12'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('4296083.76674', '-194.0', '-22144.7616842268041237113402061855670103092783505154639175257731958762886597938144329896907216494845360824'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('18.755207714630171', '0.0094306822594364919143130833', '1988.7434650725730232507495283304038983882113409878102620841865180583795237557817888781235508759'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('357139.77763854332', '31461893637685', '1.13515029245017195115729683926708304080654495656947213475032038e-8'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('495109692881305.22330433373579', '18890', '26210147849.72499858679'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('725835.2', '-56469.3051', '-12.8536237291150940690431836038301098201401455'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('-0.0000000000000008539291084466621', '-66462.10331086', '1.284836118490894791666770536323048e-20'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); - T('-437950623250185.1796', '4525961511', '-96764.107'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('0', '-419919711657396843.359722150078', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('1418494254750712738754757', '4591733826207580942881672', '0.308923449929649'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('-0.00000000000000001121505882526814442165', '-0.00000034022765195967647788365', '3.296339601049636215256616888976508295137995323068555837387e-11'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('7633721603085398572526346', '45335909347835.3783', '168381349638.6806344236154879430718880607974785'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('14896648161672846137148209', '4.125', '3.61130864525402330597532339393939393939393939393939394e+24'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('-7914781164126.1', '-119014.0', '66502942.20953921387399801704001209941687532559194716587964441158183070899222'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('91019909259953143323', '-5522.06153359199', '-16482958168114892.84740240589841073937417129944138279714524430633829860712832274184766934216152'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('-1137517608314921022353199', '-0.000000000000000000107056140182953206696174', '1.0625430791461044518578148113716784804459024574335198467207328302373884979194708111129803963870744434655116384071360289838829502244352737346538e+43'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-1173767.2326305257', '-233061127762110315635636', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('5.8876889668', '3.1', '1.8992545054193548387096774193549'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('-2.14761558914686180054', '-301574070805882062973', '7.1213535812541532012972515757551e-21'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('0.000000053624403845025055012694', '-0.000000006053504014848', '-8.8585'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-504313761620588', '-0.00000000000377', '1.33770228546575066312997347480106100795755968169761273209549071618037135278514588859416445623342175066312997347480106e+26'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('53662399.4035417690', '-65017.90', '-825.34809'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('704021459384072.011987216647', '261808795961066517287.30237', '0.000002689067251540191817460319532140345637081639220151448601586269279206225927743'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('-3.00', '6046001143510655285.0', '-4.961957381069941064583069603421034150719179715307203065064584517e-19'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('973187354320146232724757050', '-568184.017437886808358801', '-1.71280311387240648806239296872607262685395385114971208588734369281880271e+21'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); - T('-7', '-228023476845.9625107669', '3.0698593394086058293957362e-11'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('-0.35128712', '84029956765557847990155625003', '-4.1804986402656983115928354008537100293091431728296533e-30'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('1.580', '26596811565693', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('89476761206818481.30255306413', '6431672239.9', '13911896.917217546364625511259955397093741757541639618090079161404687487019778350630314121'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-285.84043874171354004290', '-3.80', '75.22116808992461580076315789473684210526315789473684210526315789473684'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('5023551710351214.645250', '59', '85144944243240.9261906779661016949152542372881355932203389830508474576271186'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('55.8578416393', '-691700380830418738.5565', '-8.0754389020634e-17'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('-3911724.737800850440974979', '5777887024710204784553820488', '-6.770164804316e-22'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('50', '-1.7', '-29.41176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('53803800627864394248948141885', '0.0000000000000001263391910050269947733', '4.2586785778708650076551456104714784704241888012e+44'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('-4427033.670465245740417', '0.0000236581313971487858', '-187125246544.145067202651826613329029261197764651089163179'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('0.00000487987924778308703036015', '-14382977', '-3.392815859875940168965124535761963604613982209663548791046526737823470064646561000549e-13'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('0.0000000000000000013173879240462', '8815.9760593357349633294', '1.4943188538393812027029e-22'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('34082970570302.46', '-0.15378396401309', '-221628898624315.1965897283937656884389168635185823292768143062677620972948453464654511988959215787053869058463'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('-9422972.687', '-4.8', '1963119.3097916666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('17603175301812980820940043.5084', '203586376416168.590708', '86465389343.286908319080296673397986841425082701014310790406348979937008055804195811226'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('1118292325.2750', '118787658708800084.56755', '9.41421303720126381391248975149497111817115e-9'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('-0.000000026208118477668289226', '0.0000005384213204675190936272', '-0.04867585565688854465822983'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('31749974', '0.0000000004175827007223264109812', '76032780919993846.10794696063811129544098498574186417516454488089632546613360229415793309'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('-0.000000031738815698', '0.0000000001049015889731270620336856856', '-302.55800706823061140814796512005417608408899124716685671684150270243619123677554'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('-0.003598212372110673145921', '-50235787946648897670', '7.162647426e-23'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('3715826298925020920', '1321522734797', '2811776.294938892222593957205879302040757927871951336015423'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-0.0000000420723296', '19531.99', '-2.154021663947196368623985574434555823548e-12'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('922.0412414065612641312654', '279432164508408308430442379', '3.3e-24'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('-4639753615932249995340108', '76003590732624477.33', '-61046505.45070418182476591842813719'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('0.00492075860196', '14', '0.000351482757282857142857142857142857142857142857143'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('0.0000000016012749138112683', '-34037956761326454044211', '-4.704380245381294320617370852e-32'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-33029000879564897264715723.4560', '1.4', '-2.35921434854034980462255167542857142857142e+25'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('-15.036556', '-2069699249431016.1324294', '0'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('-0.000197817958547740627072816814714', '555.517400440320', '-3.560967818306755e-7'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('-0.000000000105900350', '1', '-1.0590035e-10'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('5646.1', '2.4', '2352.541666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('-8043002.78244', '4.763038409266', '-1688628.5793524502308694794819969125421740476382083'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('75.921737052807005487819999', '1.658', '45.79115624415380306864897406513872'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('2508.200950', '16.71', '150'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); - T('-65726540475412104681231', '-2069320713111227459943487969.92', '0.000031762374995315313595244296992084961374019662798752859038'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); - T('5088562922.2405271423822', '-38730', '-131385.564736393677830679060160082623289439710818486961012135295636457526465272398657371546604699199586'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('64320.654498', '-62061861429.158163', '-0.000001036395831785035719284619257911539667175955615207'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('2.204900879951290506663426', '53104454625924734.643', '4.1520073889901010464572015511640417e-17'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-452538835226053697.9513964592', '-1.47441386143616894803945', '306927957653120064.86755228873937747952745849883789748764499494386053150512496291850412'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('525553312.763821648302342614504', '6', '87592218.7939702747'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); - T('397688', '-68.03', '-5845.773923269145965015434367190945171247978832867852418050859914743495517'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('-0.000000000059202582311012372084', '0.0000210309', '-0.001'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('0.000000466389968406448397778096', '7134.82908265011410', '6.536806460305781678007928e-11'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-252296.9378333427567934319534', '2406.8709161566', '-104.8236264519835084047570650788548743295593201143617169663331272407432390421138849167950000780307334885'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); - T('522.9', '-912873877159409564322', '-5.728064008437927742351620614e-19'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('7093.173057', '614703552193.1495338', '1.1539176944224349223e-8'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('0.0001341235', '-0.234609357848', '-0.00057168861988402299887104885146311779013688748127'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('149.469751611688514266726302', '23047796109300906.73', '6.4852079957167878439324712165596730871967775320908715873906582105380758688019048047119e-15'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('5917.3544', '-8.23', '-718.99810449574726609963547995139732685297691373'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('1.99', '-420666718873240.2935832610537', '-4.7305857837535459160671048752049702182468640700531401206877e-15'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 3 }); - T('-0.000000000002700385943990773294175301648', '-242', '0'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('0.00104', '-9205109310.92', '-1.129807332940903148676935060015840240444187292197548894851554458807026366305859299241e-13'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('3044202687.526990830', '-225715777273711234248.5778', '-1.34868848083910365863654079744878054936819021293833286108835021122610654896355e-11'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('43549623346172485962556947.75', '4010974.58356981', '10857616381954945829.173'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('-5500861681629397.60268386296', '-24688659063.6', '222809.2529229201600939986565500250719740754417828'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('0', '0.000000000000000001611281945098345849', '0'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('286037.7278439472555897310', '1766.08071636693189589823', '161.9618657'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('1.30', '22016412865861919.05', '5.904685781105360772902691452716470778294132411902331064455e-17'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('342975419362.63241869', '0.000000000132776429612170725496026', '2.5831046998660533379821777956012147966560751819092431647637200684436601466266722365014710913251120473656227e+21'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('263838.7497999996', '129.28310', '2040.782977821537385783602033057685033852065737903871426350389184665'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-16986431229246565059.38639', '908.214', '-18703115377264130.5456493623749468737544235169244253006450021690923064388'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('6549.3303050232', '-321113733064601735028025274431', '-2.03956717843194959702044897190339858252408113861632671271582153247826949622e-26'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); - T('293406476316171018592023.8', '70.3117518813163', '4.17293650727734053819019473775029265657801285573865240005155183520385557372804241537981968667505121686394e+21'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('-9647374130', '7946137.265686351', '-1214.09608309436924121296'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('67.235726', '-5573105471252449696.7', '-1.206431967721042366696605205e-17'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('202151625', '35175155404.094130', '0.005747000195952824'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('14835331211045.5493152', '0.0000000000526993611934416', '2.81508748400005203302285837296595379515264240755406139468921221479492486503e+23'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('8.069344', '-1033236.93413135539256239', '-0.0000078097711506837641217'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); - T('-862630169598821067434895771.20', '-264324327', '3263529238452656941.54172866275755239130902998572658807904579'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-0.00000000120003533', '-12.69445', '9.453228221782e-11'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('365895428531107702.61163381', '98087842.582662', '3730283171.666'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('713857126359238153466129958.2', '155931649939351528.34', '4578013037.35891749636140441'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('0.00076074305474025948675149820', '-8885880406', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-5.5062225112792408403541', '9514589.0213163653965887', '-5.787136468998470961850846060990378991351091119514e-7'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('0.00000506877891572040497122', '-3.902263937071', '-0.0000012989328752388233797415850039254655020843332436413852802139307588062849466157864782046595'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('-684.64', '-163036108473143.9045182524546', '4.1993151481089e-12'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('-115.2432253756119374', '0.00000000004559', '-2527818060443.341465233603860495722746216275499012941434525115156832638736565036192147400745777582803'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); - T('-0.000475387045386359848022134', '-1153538800396479.29', '4.12111881475478780474633380955501014884339769086551346373265e-19'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('-1.19867', '11243158.062340655763654254507', '-1.066132836836107775099490457235780480587763022452727371256982516966577648609949e-7'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-5360', '0.0000299063979378797693010823945', '-179225863.68086026271'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('1848.7', '-0.00001905117238', '-97038647.4451710357155458167136693558173557401'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('8391182377.4232316885', '-0.000011565465464', '-725537800751953.5219373856408759235044653625191958811075137200375111508784840032271441314815377498930206480792963'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('-103265.04277385519', '877.661', '-117.65937278044163976751843821247611549333968354524127197175219133583467876549146'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('-0.000003172790', '0.00000000000734552178620800', '-431935.27871052691777125857143344101398079282329855'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('845.149698634', '134608.469693066', '0.01'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('1213867.736088558497', '394513337588257389235052561.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('903382849144828905627453.7', '-145214841100.492', '-6221009108288.50653300185138436076207033700018325051347599'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-1851.2013658186151007551518', '902158.47437813188', '-0.002051969158849468552481150467195438558033'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('0.00000000000009286532571046638105826044092', '5.8170675953588773257319281514', '2e-14'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('-1.8', '-14023648062663978059.5676', '1.283546187095389865277054852377378944975885409409388208510620959318e-19'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); - T('30310353.7', '-325658', '-93.074187337636416117522'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 2 }); - T('43.01', '-0.000004044336362136732681', '-10634624.85530670587485242332285837151141452123361995240726115365877739982920896502305890948'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('-1560062512144707718870.67', '0.00000000000000000109417237569969976616828176251', '-1.4257922670978429728476419788183802901064679946982495391739203862934972237293303746615318547e+39'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); - T('-1704748', '-4.91256432071590973654', '347017.950037052435135205091406149748637297580526596'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('-103112743.806', '1448819.007144005', '-71.1702036607469319471'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-22.09025670434107593424', '0.00000000000000000014868299631332127983', '-148572851315089453888.8890409270305198846110678875706559456425503395067262158'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); - T('-12.6729146', '0.000000000000000000767442393', '-16513180292869226472.351000291952858017318310952363560661418921641457979765264283491308252500979575153597229023'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('-470.0', '8.5221', '-55.15072576009'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('0.0019934', '-3670467', '-5.4309e-10'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('745572843740672989124', '-0.001095304349461769722226', '-6.80699245015365759160157081e+23'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('49048', '-1523712469872472779.163', '-3.218980022136661765426723332882842415809493840139805314497885e-14'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('-14698377.2089310141307668788', '21760428853932061359.601', '-6.7546358151278116387319138742166820347476156445131447537598812600522255302845616957e-13'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-877816.2827087289083455', '-39.96', '21967.37444216038309172922922922922922922922922922922922922922922922922922922922922922923'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('-0.0000000000000000003890854543', '-0.0032469533', '1.19830936373492036365290501714330169146565797543e-16'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('-8068590451.8882868', '17.046084578176', '-473339810.962716'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('-2.90097482360513435000', '0.00000277734770479378', '-1044512.654500540381425199131650498389768221612690731735719'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-19375401136.648943378', '-19.234', '1007351624.0329075271914318394509722366642404076115212644275761672'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('-0.0000000003693', '-3.88', '9.518041237113402061855670103e-11'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('277800', '285535042428019089.423986180', '9.7291035677356825087203059416983111252168571123895407726511593161081e-13'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('348909203.36249206', '-4474831.4', '-77.971474715783048273058958154266996517455383905637204565965'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('-27508947.295331', '-4798670.394836815486650664', '5.7326186280536307976693760690453135065084'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('284476418915134.1', '-0.0001080492748979789624084', '-2632839685261554383.430387221295092399884'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('1376238677546543815969.34113', '-3148.1', '-437164854212554815.9109752326800292239763666973730186461675296210412629840221085734252406213271497093484959181728661732'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('264911.6783682', '-6423503007202402040674.17300', '-4.12409985752580403094885811084792477341436221996458658046257e-17'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('-721557029276.24813685590673828', '328593538.3318233192391474709', '-2195.8953695175796385889646124916770635080959054'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('5193929913.1695128898908851', '-95.98868603988046371325', '-54109813.6400324141378'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('-24621657592.547626830', '-60.67', '405829200.47053942360309873083896489203889896159551672985000824130542277896818856106807318279215'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-1272153012554733.962', '-449', '2833302923284.48543875278396436525612472160356347438752783964365256124721603563474387527839643652561247216036'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('2.715306', '-0.0000000043675376914528829954781', '-621701789.846887398302716883846832678856864'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('-1547473749939.752847843', '-3.12', '495985176262.741297385576923076923076923076923076923076923076923076923076923076923076923'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('-47438.43', '-6408314287110301.7992', '7.4026378661573712114249169e-12'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('14319188785', '-112.66', '-127100912.3468844310314'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('-10415265.16446510215382885', '-306712043709.953782146', '0.000033957796500206664839577'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('1020648162585306.6', '-2.1914898184005', '-465732559656720.572478372067308602018356676157574623601966177717104294492460074'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('3', '-41094051.07508828237681', '-7.3e-8'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('-1.500', '-46509992746526152636592.9583253', '3.225113381923792099892011542084055429665680469192e-23'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('26.35176', '129.279716', '0.2038352250093123657542688289940240895949'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('-327986.31492440227273268', '-4385770.7548116758221', '0.074784190342043070123660027229907124036893230965876429396666'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('-0.31396142411336445', '3760338356.14', '-8.34928653696065027314938490119187724335547457472740082316628740223841701645175613491967214e-11'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('29084829.399916', '-441225.25610969', '-65.91832402423812982677791123384997461876705508459707'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('106668039.3316', '16509842', '6.46087584191296318886637437232894173063558088563173408927838316078373130403065'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('33660.9012992698241', '231215262368.74297832866772', '1.4558252320552823585058e-7'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('30183289889874653144216.021691', '-0.0000000000000001850', '-1.63152918323646773752519036167567567567567567567567567567567567568e+38'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('4830163975203099.03869950', '-165327631.1366', '-29215709.0862339470497822764604891788203097047531376913682467957161830239082624908242430677144850454563'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('641.583800', '5.0', '128.31676'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-1', '0.00000059794', '-1672408.60286985316252466802689233033414723885339666187242867177308760076261832291'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); - T('114468080072.82454', '15882189820058955342014753', '7.2073235095234260194407547081109103e-15'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('1205.63063736256589', '-13323156977', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); - T('-0.0000000000000000032005131', '-20405770.066', '1.568435344340510908116982e-25'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-46655578', '-17435198', '2.675941965213129'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-1826391.95321290281351', '-21019556', '0.08689012999194192367859720728639558323686761'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('433', '34259436007990415554844288', '1.263885371314e-23'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('-0.00051660223042684501971002', '710667.3449091584106', '-7.26925521662853510559568125138211960288020929323343966226839411644763293707228331684697909e-10'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('6632516058123153544978.8173136', '4798337824752', '1382252834.28557935015374641580975576914925105981861839059550113290901610933603575423857'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-410294', '-487431396', '0.0008417472'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); - T('-10467.4881368', '-4862.011612840367', '2.1529130266073011054275331072440845263173777913371721864220333'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('24178718956171512.95123', '4.4', '5495163399129889.307097727272727272727272727272727272727272727272727272727272727272727272727272727273'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('0.000000000000000000053539203975686828042162', '-175327185.4193', '-3.1e-28'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('-0.16317738810100647624', '6260323849071065.14632897136', '-1e-11'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('0', '-0.00000000000000008058624768587745533362074523', '0'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('1786661973243896004484674.8427', '396.91748100', '4.501343626243299685973455129077572675616169195631874928683224e+21'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('699824037892.29566', '10830178822298.096957295230378', '0.06461795778029428029688562942713791286349020898535266704475778004693770130354368139085380837514233'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('27.3', '-24', '-1.1375'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('-7743258.888321', '427071695122.89611752', '-0.000018131051476246310744180936426415946345485474108798530074610022052497467343665750650673516727527'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('3415642986.56132818693046', '-503.857', '-6778992.8224899687548857314674600134561988818255973421030173243598878253155'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); - T('1006977044129157.219131', '3684285614569777143694463103', '2.74e-13'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('-229620369743438063605.676', '-18871110490850755947707048.164', '0.000012167824985962774368145291902717428271724819608759746787960261966985276'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('0.0000006359069', '0.00003461733', '0.0183696'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-7666.2423', '-10.8758', '704.889966715092223100829364276650913036282388422001'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('2014', '566568.530511420021', '0.0035547332609'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('1164559012.7176849', '-466', '-2499053.675359838841201716738197424892703862660944206009'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); - T('104977760.2379348', '0.0000000000025883', '40558575218457984004.9453309121817409110226789784800834524591430668778735077077618514082602480393'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-378.651', '643.2196', '-0.58868075537499168246738749'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('0.00000000000003804587158049396', '-123.01687', '-3.092736108510479904098e-16'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-227517081435932.55145705', '-8166', '27861508870.430143455431055596375214303208425177565515552289982855743325985794758755816'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-784864.156117905419381933', '21083.34', '-37.226746621640850993340381552448520964894556555080931'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-35583.60392955878258', '0.000000000000002884675637890853264', '-12335391703025555319.5290377003260258830568498949507101804961452297199748848871811'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 3 }); - T('-46867057274705.55865435', '-1138818.46884253076', '41154107.135564961256231603510856158997572290958926194322513203845887459961432163465955478890762330211878911'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('-1.2', '-6', '0.2'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('-8207827251.758670330228', '0.0249', '-329631616536.49278434650602409638554216867469879518'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-204', '0.0000029', '-70344827.586206896551724137931034483'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('0.000505328', '4.108179912269881792084', '0.000123005323717868153287233442170341302966'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('-0.0000000000000001499619618858708257385374', '-460819196825', '3.25424728221164261039327199908041722e-28'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); - T('-596982512215274295078785.735', '0.00000000000000061723389213118', '-9.6719010382598740585504450410175347589618746831863556822631733606e+38'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('0.00000000000065119748298572231', '-604761812.462268448884', '-1e-21'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-2', '-2467866762.2323039904896202', '8.10416522726252839662e-10'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('-0.0000000000000163504', '3442474120384657.4416341533', '-4.7496072383466540718483367624878967622316129367226e-30'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('-1456836486847167.3820074310958', '18.348653631347632487368279', '-79397459678362.7216974369636088610616179608860365968652475007985815597289323599403276228111689'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('-0.0000000000061111053071278970', '-27010.1591677120452845', '2.262521027433675639966055892145185675275e-16'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('1.478', '-1', '-1.478'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-423.50102515043', '-345239290652.31866', '0'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-1619830981494', '0.0000000345300706937655922072', '-46910734584347684213.071410576712370812560889045558568021991524352862470136820101002794892044733275'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('-12592503.5826583', '66', '-190795.50882815606060606060607'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('-0.001131684507013295031968373268', '-1041308839.16589692192831', '1.086790454904608603556308528336041092853580165784500403e-12'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('2002612.9276540289151', '32.61', '61411.006674456575133394664'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('60179824375164.647', '-2389940381984.057698243', '-25.180470956018216552468050930430455353105359149977'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('-0.000000000000000010257504915', '0.13', '-7.8903883961e-17'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('0.00000000000000001106225394185', '0.00000000002142311562290', '5.16369987287242537734434196204470693651936467886e-7'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('-38408325908633', '-0.000000000000000000034', '1.12965664437155882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588e+33'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('226', '-11732125147230.8', '-1.926334719105379310085744898952893012241720872e-11'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('0.0346521063872886074127', '1235370579840.8907669333112461', '2.804997e-14'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('-0.00024553564076967669613', '-48318029780838', '5.081656720759988483909641930985285304028270561e-18'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('-0.000000000000000039307110614795850218136427', '10043496.0989154139669730335', '-3.91368804524557754442045244867e-24'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('-789085778', '40255761.13304', '-19.60180992211711531081325177406048749094552564053148240778982120019150023089919500667671'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('0.00000000000000000002198907053365', '0.0000000000000304933802714365', '7.2110964209000519571252202e-7'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); - T('0.00000004737622612955945552644133460', '-0.00000000000000000718366077', '-6594997682.436423779855258198669088880153231400429839618'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('23337903.63240600072819', '0.0000000000000000520391013613738286985', '4.48468613443978996424855994720818598234971037446297964712585838232770537436719897126681773615112190118163077747630026671e+23'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-1.5', '254470968.25381', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('-5828.58448682', '-43.8218293651656', '133.00641646542484859664930706784050010755559914955615164289099278883875166'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('0.0000000003645684417429705143', '1', '3.645684417429705143e-10'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('0.000000000000048179713841546694173307306', '36474207385148', '1.32092e-27'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('507886502424730178045.8', '444000', '1143888518974617.5181211711711711711711711711711711711711711711711711711711711711712'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('21211770845.2670443890', '15.78678731521718919', '1343640756.1417267463530524445250781593586116124781790172841'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('6', '12828787846358101348991', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-677.33593594269800456', '3910.1', '-0.173227266807165546804429554231349581852126544078156568885706247922048029462'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('5057789983', '-2057580884840423118', '-2.4581245e-9'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('61.8', '-1393023442879678', '-4.436393394230764374853836563e-14'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('15130648492041', '-0.0000000000000049033748412962540', '-3.0857621498994085612562086024076826592956600727994442798897726436952885803687419900663e+27'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('-10940965618.4208627065777054', '0.0000075', '-1458795415789448.3608770273866666666666666666666666666666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('-1741.3655', '168841165413015.1911413231958', '-1.03136311321964e-11'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('3.7680', '28080825399761145000104.7', '0'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-135733.9312513', '-106.1', '1279.30189680772855796418473138548539114043355325164938737040527803958529688972667'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('-0.000014995192150239849808540784149', '-0.00004634419097', '0.323561418084667663118357466689853837360018111456526306'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-2727467849220.6430', '0.00000000000047071402182077', '-5.794320378795002290140887837e+24'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('3254886067375040047.294976', '130247729806.1422490', '24989963.911229303180155633881696971'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('0.0001517750011829757', '432077080925300787814407817.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('6043586055628194917.630', '-0.000000000000166204696467716687', '-3.636230614459255444865064142597998778455504280761986176898912590297958063490881820084729136663144758e+31'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('-246902424152.817893492257113', '13190015922447327.3986', '-0.0000187188874982803392436242509391433373124566'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('2.79212748799125', '8083944027095884508070529', '3.4539173930850526941492139280556318060780640828790362133181298e-25'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('-155493993094499.12419', '7', '-22213427584928.4463128571428'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-0.00000000000000414742783414239816978844774', '2.42728', '-1.708e-15'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('-17629052489392655', '434332523231244065392.661', '-0.0000405888381515623389231388156237036804908819597794848'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('384.4654474606', '-1.564602804294462821742184415', '-245.72718801559969519149234022478471772421'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('-287.92', '-8593.271084374839516354559324', '0.033505285376546011804383803592571414'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('5562575760.416226299', '4443122744661918354065.75470594', '1.2519518546047928825867310877506335902491501374251192290179e-12'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('26264157570226149.7', '177.88484626156', '147646964439048.44868754299487257196861575311417400679233039774168318512463589000043453173906867748773381582099'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 1 }); - T('3124.127', '8774950118672.1981065667', '3.5602789277994602551065899974055122314322157851087771961638791254e-10'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('13361719.6', '66313281.36', '0.20149386858813707782'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('9618552.8', '-99199767586577412901.538436', '-9.696144491069e-14'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 5 }); - T('7398643406.2', '-0.000321637234', '-23003068749807.74147560291480432268609796588413641189315786741282572'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('213492069.623808509436', '2873695523.80684948', '0.0742918196639672996323466832204954120547650487609529149428439626218125680802'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('-0.0127546845805340602341642508', '0.000027127613126094468205620217590', '-471'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-3', '3544311799306681630.95675230', '-8.46426660483663754346120595708e-19'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-27.59814248907', '-0.0000000000333355', '827890461792.083514571552849065'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('0.00000000000000011151816004735', '141371580601581560607539', '7.8883011403568065e-40'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-0.00000000000007814196915071266536731774', '-1861949.4113867779275', '4.196782612504633540604394141091970482497e-20'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-1773.7', '-680582251640777140', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('-253466754.5702558294508004364', '0.0000000016915460330', '-149843249681314365.6556938858074813031115423389722199774151815826'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('3035622320.74860494450562642361', '-171.9', '-17659233.97759514220189427820599185573007562536358347876672484002326934264107038976148923792902850494474'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('7', '323935.73706', '0.0000216092242971742464529918327992952813108183958145713828762453493281146656576304826180452'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('0.00000000005148472716539298157457', '312510049836876.427842', '1.6474582878940024381560607237302547675904884227203911e-25'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('1295.04', '2.7', '479.644444444444444444444444444444444444444444444444444444444444444444444444444444'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('-8.3', '79850188565363554', '-1.039446512165191466917812606438347257466854212445764877244764116930149631716572e-16'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('-2539862220.0207', '-44236.550550726180875', '57415.467264072333635960729236763378'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('16839944980983150.90655868', '44432765.7621', '378998351.6026631957333525953564219350038387962931060748756882525145122694635411377580328146268455715'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-0.0000027046395062488122194', '0.0000000000000013619006519452', '-1985930106.124687565841353954068087337021798551917276386357928512080934434020694783'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('-1.1198910236', '-0.0030109339351', '371.9414134414762104887739355035442205574814705936920043848889'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('2009385673', '20.9', '96142855.1674641148325358851674641148325358851674641148325358851674641148325358851674641148325358851674642'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('16.7003690316461037', '93843.32', '0.001'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('-1935073101337397', '-0.000000000001658979394', '1.16642383162560064926279608750824544599497297915202435600595530965347240473319586029770783e+27'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-330.366065140860', '1534019.623575', '-0.000215359739'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-0.00000000000000269032', '-25.2161338454486377449', '1.06690423539514e-16'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('3.227', '-1630.742200259200945873', '-0.00197885355483354713384065004992007650246834325039707920127279577862987539580196966597908560236055'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('30126844.5139992367407931165139', '-464.64', '-64839.1109547159881645857362988550275482093663911845730027548209366391'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('-7977466949919.20197939320571750', '25201187.5848772923514999213774', '-316551.23089144869109015446556078962824'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('0.00000000000000426441195921089884284213238', '-18690382297316625066', '-2.28160766932153106668e-34'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('962013664.0107040', '9.3', '103442329.4635165591397849462365591397849462365591397849462365591397849462365591397849462365591397849462'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('1006973806184.623056', '-1.066971', '-943768674298.1984102660709616287602943285243928841552394582420703093148736'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('-25210.15', '-1', '25210.15'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('-0.000000000000001376148315', '-0.0000000029456', '4.671877766838674634e-7'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('37242.4', '316145754497658724540554.1', '1.178013605122627241684395290884998159939e-19'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('86328906834.10816309', '-0.00247371887769057820998', '-34898430703938.096391606813152501754497939669327'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('0.00000002765836017', '43.4221', '6e-10'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('910.80105073607989', '4268684621919.65', '2.13368082068917954228345323193625136056867444933e-10'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('980986779253.7448670475747006', '1260.3', '778375608.3898634190649644533841148932793779'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-0.00000000000031260', '1.981416', '-1.57765961312515897721629380200826075897237127e-13'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('0.0000000000000017052396538958004912455', '2649918125.767736006', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('-1752732913576622160', '-205825254612177219.70', '8.5156358333149142698669189920154989458330771987368756031356343736501194705'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('6922377660970977.67946', '-4388778700989588504770506415', '-2e-12'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 1 }); - T('-0.0008967346570245', '679037.25394626927', '-1.32059714222315208715715586429957141837846338692429127615686697655109811863574e-9'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('10604413834153', '-11598666613031363424932579883', '-9.142787001256421998531972726183529e-16'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('-0.000012348', '-0.3832284502169', '0.0000322209898378141479427691532588808859523574928660271955209972049087057765552158694511685'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-2225005.8', '6610854707.4', '-0.000336568552551819466114802969538939'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); - T('-105884473', '-0.0000000000000106268', '9.96390945533933074867316595776715474084390409154213874355403319908156735800052696954868822223058682e+21'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('-8.45166', '0.000000000000000003351828', '-2521507666861187387.8969923277686086517565937154293120052699601530866142296084405285712751370297043881726627977330579'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-0.0000000000000102799919001671062777', '-18.142', '5.666404971980545848142431926e-16'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('-265.4142', '-569510.1041779800093296', '0.000466039492632169853045073207505280730820703997180116748757530048956809346930242922759289414621'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('882686.635528258', '534854.79223598628', '1.6503294881927558448557149'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('-95518761105458384136', '-1.2396', '77056115767552746156.8247821878025169409486931268151016456921587608906098741529525653436592449177154'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('1.69', '35776.574327736085709825', '0.00004723761376700098130499'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); - T('8323545844568', '-150063.7704', '-55466724.7289689583862408404473888922092550594743686382'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('0.0000000000006622282463026677511277066', '20.5189951491', '3.2273912123406992083565695120075562063187485370445576465444e-14'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('43639749.88168014571993635', '0.0001944531891408009166056131595', '224422906482'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-534009631180.1639', '-0.00000000000816145981853309725394', '6.54306512626002613848073235507820758076881810664755420270658726351886723388988603806097401394694319021680507457e+22'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('-494.78', '0.0000000000502244061846267416152229571707', '-9851385762156.5648051354480419191043985260796743999792172888696167729874567795594797311767'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('32938895612.90205187310670102', '-266.600409', '-123551556.940417341494426218'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('0.000000261644056205', '-0.00000000000056', '-467221.5289375'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('-770099.9', '-104231373347875873118.705', '7.388369502e-15'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-4.39', '18262248.4620253', '-2.40386611e-7'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('-0.0000000000000000001405023348228197256122144708', '-2', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('0.000000029157741696510063602171886', '0.000000000000000000034197750520731428541', '852621627227.61543233059837438165351588654888496179313105145195'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('9896848222760313471057816756', '6329344480963', '1563645058746197.88106164640236766422840046452141444395927046942264430801623765173551797916657179'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('221029107103276915937628459.115', '2579105924.031', '85699895085278482.416445655901680672758226699008'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-0.0006470642268843603568', '-527435284.19454490670', '1.227e-12'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('183.45894620', '-585362564798551263285', '-3.134107939805412881505758209697476944638229116718813831659e-19'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('-0.0088', '-4058596', '0'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('0.0228', '67.4', '0.000338278931750741839762611275964391691394658753709198813056379822'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('55.431323569482853085983', '38.1', '1.4548903'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('-0.058875222931656', '0.00200804', '-29.31974608656002868468755602478038286089918527519372124061273679808'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('0.0000000000004341979552550051945', '-7', '-6.2028279322143599214285714285714285714285714285714285714285714285714285714285714e-14'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('0', '27317835842.70343824', '0'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-525.27647489', '-619.8870361', '0.8473745'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('-0.00006609858451732327857498', '109329.9017282701215411803', '-6.045791999484780576837103178476487168e-10'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('-734.32240155005644367008108', '1020431102461134.464', '-7.196197761700671525612683557342740515746394888e-13'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('-783284249205713.7722', '4233309885107498641823', '-1.85028800268379933984683953559449871104453089752776e-7'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('-0.00013146956713094358376', '1649552.9140934', '-7.97001211708323486024554763937270450633303503661265062490767630606217887777e-11'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('0.00002432214054499571092367773', '-5.252', '-0.0000046310244754371117524138861386138613861386138613861386138613861386138613'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('0.000604917865', '0.00000000000000778053428052857257990576', '77747599739.24371047489910403748467035'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('0.00000002729181865511587518', '3314925238926460', '8.233011814153112751033242807836060726342149614257168374901160828951724e-24'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('0.0000000000000551834247709145', '1273.7053272329239235620', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('923198613722607072044', '6507.0', '141877764518611813.7458122022437375134470570155217458122022437375134470570155217458122022437375134470570155217458'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-140335830907892435742395', '-42744.018650766016', '3283168858185435867.2081298364009743668600863110327906457706897393160602911'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('0.0000000034057477562160254', '-56.23', '-6.0568162123706658367419526942913035746e-11'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('-50863101304', '-1.5', '33908734202.666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('0.0000000000000015', '-0.000000000000000000140806553', '-10652.91329161363676021527208325311393710490164474092338585974759285528422814242175220353558402925'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('98.0949085616362', '20494774', '0.000004786337656694150420980489953194897391891220659471531620695109885085827245'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-3009', '-205469071446121021512734996939', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-10.33', '3', '-3.4433333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('-1.0', '-0.0026695218361', '374.598921228880372371343271066191673171757053454131886207424456287256065124'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('0.000000000000000000096299113359374660689872154', '-0.000000041247', '-2.3347e-12'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('8556123431827', '4608076357009950869947910.5', '1.85676685214018981902e-12'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('5279', '-1.3', '-4060.7692307692307692307692307692307692307692307692307692307692307692307692307692307692307692307693'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('-2', '3460.2', '-0.0005780012716027975261545575400265880584937286862031096468412230506907115195653430437546962603317727'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('-9840946810698489631.31', '0.000000001340199962655292', '-7.3428944074889845947016437140958301917208345973724709410330506874828356015861442719287e+27'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('0.0000000084', '-4479933315301219812670', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); - T('-0.0000000000005699', '-22418743580046824.54672034', '1e-25'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('-11393.31', '363.1954', '-31.3696428974596043892626393395951600708'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); - T('-698013.4', '-4.748519', '146996.02128579458142633524263038644259399614911512410501042535577935'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('-75.98013345303526819', '-113870220948852.52747420278', '6.6725200688917185714557430189134938e-13'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('47640719793996101556544272.0', '0.0000001618025948413210981769785058', '2.944373039302434525226651249791802071388e+32'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('144.183772508248322848066195', '13889798338085.6', '1.0380551898503722365962133982817630259181003e-11'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('-49.15', '-0.0050647233410506314951440754823', '9704.38002046'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); - T('0.00000000000000002719269323045919967229425', '16885.056050', '1.610459162820439655709301006436398533601551177557388090518064937071973771e-21'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 2 }); - T('0.00000000001283006158894564713881', '1490290.79', '8.6090994288072109328475417874656e-18'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-3.9', '27.810820298880595815042028907', '-0.14023318830897546800743113515138209017795825036'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); - T('-94.18025276', '-0.00000000000000058354337', '161393749979543080.062755232743026452344064846456913733764124507146743865841539764216668'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('-539194507864', '2199020327889191', '-0.000245197600506751705168663020061920219134073106013610032805600382847009212741981'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('0.0000000000000764476069279609', '-28649374142186508.40', '-2.668386630317029683579821472979771636953091090656555471e-30'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('10985.707500957', '-2.3', '-4776.3945656334782608695652173913043478260869565217391304347826086956521739130434'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-248952580924183', '-54333112891.780', '4581.967932152968478312557734782930587065915921'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-5497496711.36315630050', '-212.837', '25829610.03661561'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('0.0000000006315637381937849956470745', '-633237604453.9132585685602', '-9.9735665372941368623730877601909949270062103558673e-22'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('-7209257842336642543480.6172684', '0.00000001186587', '-6.0756251689396921957518641856012243518595770895855086900496971566349538634756659225155846136861435360407622871310742490858235e+29'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-51.2235746', '-2470965700588586130998460', '2.0730184392198767054399446176223631735502262760322125e-23'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('-5548065325827168241016699205', '19.2', '-2.8896173572016501255295308359375e+26'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('0.608330875132290749638579785', '-0.0000000000000000013969514468857994362', '-435470306780119398.23061608733868406207780517187821743248822329021800536250361694733'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); - T('554050694986108208197843.837', '-2840731954.122951', '-195038005673846.16055268929386425534558903896534424031411869009769261494138091259712787228192'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('41.2600702526', '32422630.698541066068', '0.000001272570095752797619026707957116103877804433827479818600005179141764'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('-29508937775900336.96745703', '454.55302087085945968891517', '-64918582477717.06655285685'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('121835792112.031458', '13349.97', '9126297.071231729958943727963433625693540884361537891096384486257272488252782590522675331854679'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-21234198779772116', '789117.741758', '-26908783893.8540070263844982722300123'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('-4989566.19348002', '-0.0000000058782019556554347130250', '848825241310320.11668156337771690850186479657900594611'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('3.0724536', '-0.000000000000000007041585830794818488792', '-436329780510989954.551091499054526001846286342348634'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-1.28569', '-1001851216730.820102348', '1.28331430708382561543184857731880253016036120026369611231e-12'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); - T('-2334384.1', '-38916.4332004820517912', '59.9845337308837529352697890139267681024424027'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('-0.000000000000000129624500411481739', '-5960733230894', '2.174640189224513503489449892371786582406678648715e-29'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('-177489857688.6', '0.014425006442433703003409982', '-12304317394721.03457'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 6 }); - T('0', '1182.8710995356238232492063', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('998432143981659996.993382568', '-434340863870260542987.88', '-0.0022987294704094337996759'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('-3567956347.2603722232', '2.4', '-1486648478.025155093'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-1.726189', '-87.695294132959800168957840', '0.019683941049138'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('-0.0000000000000076501231125108051749049281', '1390866687485864.9523', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-3501189.4337841', '-332814638322740159026312', '1.051993822e-17'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('5', '-76468.92634638', '-0.00006538603637968689'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('-166180752313186081244', '-0.000000019463969232913111', '8.5378655465699341944431399221283885177159544860608042644e+27'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('1.2378513', '-1794652768216408.5', '-6.89744178886605376390792751059537065240428823174398413219990197564881671489e-16'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('-0.02515333417248128530602182941', '-9159180545', '2.7462428597078479476e-12'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('24', '5320413068307816737991980355', '0'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('0.00000000000055468552191490367', '5455.5911167119423159', '1.01672854517222302495377290574484970750900740427457643959007255083056105e-16'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('-4.30542', '48312907914855.521', '-8e-14'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('-45806055225642.7438221194666', '8301114504507.38', '-5.51806088215874465568385836791718635727978846176910667636148904452549733057'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('-0.0000000000000000083149159157', '380096.3712', '-2.18758097833163422739880132799331497537853894e-23'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('233827872456283396852', '0.00000000000126085991008017285690', '1.854511120441724976283342150744787908987129181188673584057999195838106954460750818521245082619954462967485194e+32'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('0.00000000203028823562624013804059359544', '16.11', '1.260265819755580470540405707908131595282433271260086902545003103662321539416511483551e-10'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); - T('-2.83009547324126026828144052', '-1073136930546', '2.6372174814646808617440131982856733797578118336233519974395530395156599824e-12'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('-0.00000000000000003964312', '84.4068521', '-4.6966708286944869965124549408471542798e-19'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('-0.000000000000243095170', '253804.416083019328507441', '-9.578051231405038351889375026857344e-19'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('67.127246696253374606', '-305571635070725418.59', '-2.1967761072036867437957e-16'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('-0.2584532150', '-4405295.213841671', '5.86687616729808034079509881452356786e-8'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-22.4366', '87219275575596656.6', '-2.5724359497291678704993282533069081903125857440676861487e-16'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('3.572518998981', '0.0362382837285606476215341', '98.5841113707428129124708369537235554273561188433169663353586226990901081970303'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('0', '-620.908', '0'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('956649237392.54526837482487285', '-252.26108413', '-3792298129.1063765966810636367576289619904599908134867175717310669911929867515550346334746'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('-59667102295.65250210', '19489263897530983028.9', '-3.06153698822927267569035561030547666864105216155187107713349341031e-9'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('-1.3356004155738307', '-1072483976.807', '1.24533367814e-9'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-777418.242914108353702', '-36608', '21.2362937858967535429960664335664335664335'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); - T('-1.3', '18589084334848', '-6.9933514560636904777010729e-14'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('8.298506', '-14835308451533207540987920', '-1e-15'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-194552786577474447109419.065219', '-30974490016275218', '6281065.046599597'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('-1089462.83769175220337676', '-37527420511', '0.0000290311143920059718750105488698559487303846147369966245852958939600377054010303010458357160065347'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('-7031172930206.977', '-0.000000944770240264', '7442204073068850183.83921952438557552951943962609032640434583738502675415596593'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('76357519096720', '-0.000000000122402795947736068', '-6.238216905545472540943255902322080472226793380593928735266890562147246785044889660533610115945649499822663700873023421142242e+23'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('-0.00000000000000000163631470899168095', '-62696.72', '2.6098888570114687817799719028363844232999748631e-23'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-0.00000000015610167379594', '8307382086265.32', '-1.87907179632467487195e-23'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('-41155.97286243387', '-51286550749616883.0453954314', '8.024710623133748231167952577192199879705499807762591984e-13'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('0.00000062', '-83696.33363', '-7.4077318935003867743495564155693590326269588112661512769301935e-12'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('-2454', '-57996', '0.042313262983654045106559'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-0.00000005445430299887755', '18702365804889.09828730546915', '0'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('-2.82500727732799102592455401', '127386323.4', '-2.2176692143451806584791927592440429911960234814344284623572078068154685434621782953506e-8'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('-10414867049350.37506', '-774.5', '13447213749.9682053712072304712717882504841833440929632020658489347966429954809'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); - T('-0.00000000017156347571', '-1', '1.7156347571e-10'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('-146886024132', '60.846634517415', '-2414036952.03486638986274256171950379'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('1597035367262802184.9', '-5100462308.96744', '-313115806.08192221728777946889341283425748564273596394348484989186886406'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('357978994284047', '-1.85390296204564701262050526', '-193094785224919.879005988841865468690729521149775159443'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); - T('0.00000003446220246575602525654', '-0.0000000000000000000436359188998647477', '-789766855714.429404'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('13.341320967', '252', '0.052941749869047619047619047619047619047619047619047619047619047619047619047619047619047619047'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('0.0000000000000001024979524445496413574468', '776847686.16529646052', '1.31940860827562900232013736775142099759115524e-25'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('35539521061792.894', '-589.6', '-60277342370.74778493894165535956580732700135685210312075983717774762550881953867028493894166'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-0.04843032565810874317879', '-0.0000000000000000230470', '2101372224502483.75835423265500932876296264155855425868876643380917256042'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-0.00015760545760472', '0.0000000000000000020881', '-75477926155222.4510320386954647765911594272304966237249173890139361141707772616254010823236435036636176428332'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('3741994818.43', '276730971.190268761', '13.522139579588868'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('-0.000000000000000793120', '1', '-7.9312e-16'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); - T('19505793668996.2029018489250', '0.0000000000000000027031057958951928489759383', '7.216067420896647128431761647720817838984379537149604615544851269905951848e+30'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('3', '0.000000000000000002268109065118827699', '1322687716449309311.392732396838212'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('-2822.5667173146', '-0.000000000018395023355040495122590372880', '153441866467713.780883476041'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('1.039074254', '-0.000000000000062746', '-16560007873011.82545500908424441398654894335893921524878079877601759474707551078953240047174321869123131355'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('4251433992377.3033810', '-30360213576311282.08153307', '-0.00014003307261627788209840535004431934847487826'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('-83.847', '-52544439413789508586255433619', '1.595734980436304717448092703632869706e-27'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('0.000000000000000000060379', '-0.000000000751974225833533', '-8.029397541261779523413113e-11'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('1011.642321995', '-0.0000000157', '-64435816687.579617834394904'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('2.45111', '-10841006815.8245891', '-2.26096158930748128285706408217049424480420881500218093692115118582618759959848353e-10'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('-1.6453946770', '-502189.190381561', '0.000003276443835339898124338106783579765302296772201509039455867238791380277419994145965885115'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('164.71063415565168270', '38688858306.9', '4.25731441463280949903434122419329819182248246e-9'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-253123055870543795901570.532335', '721689950179663019087825751933', '-3.5073656742418181837455443362691936683987e-7'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-3', '4.193811123766', '-0.71533979749331923242174048379644845283890017598329558'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-35764692914053196', '5.0', '-7152938582810639.2'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('1', '-7833230747484274.456179967818', '-1.2766e-16'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); - T('-130921316754051.5231492', '-13743800862464217321', '0.0000095258450019900660069760935022508907014851641735532551961'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('-0.000122083426444', '0.0000000000000000051793456353047282', '-23571206681366.26271248245922921459993806882663221841053754120075248348191554068065707391940769657618571878843'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-13.013082361464', '-19', '0.684899071656'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('239735.962', '-2117596123151685.940495888490', '-1.132113717903833858667987356e-10'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('-11.1939672361', '-6495.3', '0.0017'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('-3.02785696172038664440868369240', '-9759.1722', '0.00031025756075094019187'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('0.00686', '-0.00030702330', '-22.343581089773968294914425061550703155102560619992033177937961060284349754562601601'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('-0.00000721285235008372', '-2966404137461530', '2.431513716892279e-21'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('-3.6', '-111843172425284814877820055', '3.21879281670495086474816711397358889e-26'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('0.00000014798600456383948117017592', '-806120083076757.711', '-1.8357811406833347103770610957283504911572088180974e-22'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('1378.3718188', '0.0000000014240198803', '967944224563.505905992652453842290645441911'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('0.00000000267701455033', '52.8369968257752', '5.066553e-11'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('-42281.583633647', '301.008944', '-140.46620366751294938266020427618921516165978111268348225559'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('173072565057820.81884340', '-22454475637400280', '-0.00770771'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('-148.308309396608', '-1', '148.308309396608'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 0 }); - T('-4.5', '-237294.549210115502960438352084', '0.000018963773145987509672643934563265116870186716351801954670293442297143720469368694764456905957'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('0.010105711', '-58.2', '-0.0001736376460481'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('0.00017', '-2042316.522', '-8.323881150093344835605262e-11'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('74771', '-1250.843139741359215801621670', '-59.77648005925078317905100978646789953648061773213365672669249'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-67817.820861392699', '-0.0000000000000000812716176', '834458853706791471565.345095333749084871174017336157955345040406824632957718'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('6120230832613', '1', '6120230832613'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('8941060662864547952.8', '7665854.8236635996797444792', '1166348811519.9542509005070975483058276516898971541382367391466160168477257504036493054809998209085999366077'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-116.953733437', '-178.5', '0.6552029884425770308123249299719888'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('1.7545566', '-1.8', '-0.974753666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('78506.12699118476818330', '29343.15987453266', '2.675'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('0.000000000007170364785', '1217317394.9', '5.8903001099306808237904692739390674092798e-21'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('-358.72597358844265031347081211', '-0.00000000006346267365643402622986', '5652550592659.65847839264302852377853927'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); - T('-1047517545182138713.714', '-48750265694381704341698147', '2.14874222788669109758607218005930509171320140363946801313938343353364880699695125962791e-8'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-19980949.4', '2166.303', '-9223.5247793129585288853867626089240517139107502505420525198921849805867415592370965649772908'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('-77347.56665998993', '-61011519988736362016915678575', '1.2677534779377639866583728733529e-24'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('1.00725666', '44890598391792.6558241348538145', '2.243803148287184888604262977643616586199053928157e-14'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('-0.00000000000000069917314913823617496', '-0.65465', '1.068010615043513594989689146872374551286947223707324e-15'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('-0.0000000000000013275084047200776', '10892.626', '-1.2e-19'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('0', '442484646.9644917', '0'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('13934130015777.759', '-468599827.881745750969665', '-29735.6703666867935099330274301949766831'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 6 }); - T('-504805212729013492748392', '1.1', '-4.5891382975364862977126545454545454545454545454545454545454545e+23'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('112.8', '437508', '0.0002579'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('968026520286705', '-0.000000000004158357327526631313450', '-2.3279060553040111015228875482714428199539764540780806e+26'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('4.082', '0.00000000000000002899730037408421', '140771725206813061.411657268233204678443287205'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('7983402611108711956214129.366', '-6304037314790', '-1266395202385.4184544456598352850309175890175536966493489539721043482329295052925801401464962347'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('-31319770.3170', '-1767017197.60054', '0.0177246550625141'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('35966943458239770.89', '-86.1354', '-417562854044211.44953178368011293846664669810554081132728239492705670374782029'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-0.1746', '-3', '0.0582'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 2 }); - T('3.1737080818', '-154.74071034759696', '-0.02'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('-1', '-151793425935557285.74160344', '6.58790058816211312844e-18'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-0.000000000000000000500696640746446603578239852374', '0.0000010519078635126583383791103703', '-4.75989065310776976547223588231620465207273332539646650682e-13'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('-337408141555794467703412', '5', '-6.74816283111588935406824e+22'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-2390151555250111.5101748841', '14895139724394489980239711', '-1.604651986805900738738324857172310183686390366703e-10'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('-2060873', '-7221697220', '0.00028537239061'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('0.000003306351834', '230229062766143314184', '1.43611401370227903719665743401327961340582045683781850026652503851636e-26'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('1', '-2.00', '-0.5'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('-909114859099118221.52', '1036707955444474.3', '-876.925'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('197782531157200.01287194570123', '813.946', '242992202378.53618406128379675064439164268882702292289660493447968292736864607725819649'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('0.00000000008452451909296', '58', '0'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('-6137.8543112978414470200306898', '0.00000055601458262650773045979675', '-11039016786.7608409116128147797862018931350388082314771512335152754772845202'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('1615966037605689.47637174016', '22863276.1852274648', '70679548.48263634212893741417946789662468271367679521697865762414'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('0.00000130888943456524437277141723179', '-0.00000000000000000002344964776537404390495', '-55817018987294.2152070206760779214763469358747746513558103351411085850215223'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-72741.239', '-0.011694513184', '6220116.89204146353630721598406639583296740674315'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('-62284855.6062803049', '341872719741819544129', '-1.8218726446882774353698764702650666206826659826324725196666055243467e-13'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-0.000000191763', '5181.004', '-3.7012710277776276567244495468445884234021050746148815943782324815807e-11'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('6554.0872023548', '-38.934724', '-168.335268085'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('-0.000000000000000000354411206386009672609701', '1.571', '-2.25595930226613413500764481222151496e-19'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('3729560374040.937001', '-0.0042566551', '-876171615135305.8886542158419177'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('358.8', '-7338649.72444145235', '-0.00004889182798914801941000704346106583259887447309571581025317301009141101768963144'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('232510', '-7811879', '-0.0297636458526815379500885766407800223224143640729714323532148923453627481941284'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('7.6083', '-4.09', '-1.86022004889975550122249388'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-2.0', '9658.6063706', '-0.00020706921094619145074780442983839265230320846056159082541253'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('-42502549943849636.0', '1005909889', '-42252840.3474614175902589222880181864878753567955031805040739588553741715924218337215293048979'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('0.000000000003947406983189274583637576', '-4.758472', '-8.2955347497879037296795610019350749568348831e-13'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-0.00000060783743822161435027278947747', '5', '-1.21567e-7'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('55.062', '0.00000000000000092390575762187489545047', '59596987621041665.999708408735627809281012767259065689121245799870507035879298918578047617775711407910273'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('120.5', '-72963.576389705129', '-0.00165150895779009637027322974274505457157008990450575477856221236714119651890204'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('480898006334101303.0441566199', '0.0000003493', '1.3767477994105390868713330085886057829945605496707701116518751789292871457200114514743773260807329e+24'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('0.0000000014271644', '-34.7', '-4.112865706051873198848e-11'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('-908168.55', '-0.000000000168092101', '5402803252485968.98672829367514419966706228509'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('-3931.3591709457711', '-0.000600', '6552265.2849096185'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('-0.0000000000000000003854837', '203153327235594.07', '-1.897501287551938289621998275022661405168283841714e-33'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('-464.6660989580066682583', '0.0000000025287048776334050', '-183756555803.7'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('0.00000001598491495112256503271480', '15845.41034728929139', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('-376478.1141996546346', '-6.04226', '62307.49987581710065439090671371308086709277654387596693952262895'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('-167220290541503805543.7759', '42212184.8388', '-3961422304485.89858655510848710351023338606730785989993238'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-4.1', '-12.32618', '0.3326253551384127118052794945392652062520586264357651762346485286'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('1396.22658466738050270446461434', '-149201.6902', '-0.00935798101747898632521298753'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('-0.0000254634', '-16910781436593647508202009', '1.5057494590344083722e-30'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('-66473969681.2438255944722', '-0.0004003', '166060378918920.37370590107419435423'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); - T('6', '137056187895.95934', '4.3777665876382445796889579864300748217253498127475115041805154412475968297585454338e-11'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('12868623290.812478961603', '-36.75684007199992660969', '-350101457.731546011544686690663319393081017964364798328515129174553990948059802265406973292412642650085'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('8.0', '-143.2', '-0.05586592178770949720670391061452513966480446927374301675978'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('405.8940851589920143275', '0.0000031595641466437612', '128465214.2891771800155255184936477227590071373152600189283713412231665928420004315342'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('-14403263998864', '10940603451138682.0975641', '-0.0013164963032605783027414142495158631633'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-12.2', '-66130.6039611', '0.0001844835'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('0.00000000000033214', '286610831148.287475471847134', '0'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('875086261927331070.4107', '3251.015177076', '269173231825510.45494302877117092'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('-32517.76957877', '-14838063424.73286421609961', '0'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-2.1', '-53837150', '3.900652244778930534027154111984011040703306174268140122573353158553155209739e-8'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('1822846523', '6.097110380', '298968922.88'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('0.0000000000000000001738767135828308076615318932', '42', '4.13992175197216209e-21'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('-65144.180447124765622379367086', '117535240.5467065104543', '-0.0005543'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('-60595315535', '0.00000786477671092226653', '-7704645378024249.5202802823297289694303782144532071537437'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('7', '105.15540244011511302', '0.066568144266162889689357612294978262491909834788419868590726910520285755'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('0.00000000000000000125943445406265325', '-1.05014763', '-1.199292764258919719696934e-18'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-207260494748141.8', '276513', '-749550635.0447964471833150701775323402516337387392274504272855164133332'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('0.000000000000007406675259867548048659529', '-3.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('-3', '-33805144702182391429', '8.874388873141921791142106887133754461004198094372124469735641818469357576e-20'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 3 }); - T('4580747.41942959797145', '-199398645845444290963175', '-2.29728110740540187798940427340107312524125e-17'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('-11921156770183281402.5719', '0.0000000000000000000138107', '-8.63182660559079655815556054363645579152396330381515781242080415909403578384875495087142577856299825497621409486847154742337e+38'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('-1074776287618563612.8', '0.00000000000000987368099173690', '-1.088526445727813061987063599938594859673165781329712410974746563427097586832555160507624921930388017640329804919138993e+32'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('20.2', '-15.1', '-1.337748344370860927152317880794701986755'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('-0.0000000000000000851106468662433872', '144621243746567181134', '-5.88507225227508292021159593e-37'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('-3771.4', '-538627092842309059307110304', '7.00187578775234832011214088670320479524277077178383611e-24'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('681048142', '-15.778877', '-43162016.0294043739614676000072755494'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('0.0000000000000000000241220235004242', '-7084', '-3.405141657315669113495200451722191e-24'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('-17.771348422082', '-642.401', '0.0276639488762968924394575'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('48142861548200777', '-1854644.538', '-25957999261.7435875466935432777793024185424797557622332910890119042315374397635650869935055986453399837'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('12339.593347848', '-8', '-1542.449168481'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-45173807850681', '473007.8', '-95503304.2809886010336404600516101425811582811107977500582442826'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('-0.0000000000000001369861', '-1214.9774052', '1.12747858037286239403392651667725022150889296225078e-19'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('8.30', '69753.3968', '0.0001189906209700170472558262567651759147'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-194205904343783801732.0', '-4.1', '47367293742386293105.365853658536'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('0.0000000000020', '-426481958.84912', '-4.68953013955639869740954138570056513052759933250542067428558653599743312131825e-21'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('3432.29261', '0.0000689627576', '49770234.3909751079907512283122506690480718247844543849853243107552300083777392335598830520083495037037208036'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('-0.000000000000424', '3.34', '-1.269461077844311377245508982035928143712574850299401197604790419161676646706586826347306e-13'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); - T('-2.066599', '-9.6', '0.2152707291666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('425561826519', '-79795578713362.785801', '-0.0053331504499476015817508373855477129269136193267837599742419662810065857350796356860281621'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('-14', '8.0553176', '-1.738'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('-140.3861908135416725', '293950969537344578630', '-4.77e-19'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); - T('-267236083264', '0.060922691', '-4386478648226.48756602035192437576337525865362710258481523739652275044777651'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('24989737425588.62175', '1827822896000508', '0.0136718592814813259924746054206314214484193217141450026920820529751326751719870307396634288513608'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('21446276399.799358210142', '-0.0000000210072221265056367', '-1020900158557363445.99546688234348152913192810846078726356781'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('-1748.969178739', '-2207390888.747795', '7.923241813012793132648873360471548592079799470743165609540929876762878230566521879007e-7'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('1887616762070.549', '0.056', '33707442179831.2321428571428571428571428571428571428571428571428571428571428571428571428571428571'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-0.0005749256442', '687007.3852166546834', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('0.0000000000000000046995089597839284719', '0.00000018312', '2.5663548273175668806793359545653123634775011e-11'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('-9959.1697726779267095204465', '6143.24618', '-1.62115752500706828413645739653558861611500648017332100469397109526221200531'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-5289707829.72', '-0.000003040633883722975865559', '1739672723518834.3150238413181745523044517377463696'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('728675880125731956239091835787', '-306184298095375170.5', '-2379860380360.6949390200137058611643432190458095828381998338996234775199077352612506687236762070249610395377'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('0.0000000000007281192369822181091925810616', '-1370285311893397378.91', '-5.31363235570361877202435312121036820107e-31'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('1', '24770215340909710.0476889854', '4.037106606612464094e-17'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('0.000000000000000212873933075169748138', '9858498.115', '2.1592937442598450822749891046664768774467630965307538632115465998e-23'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('-1637.6', '-369935221702679655391147.04', '4.426720960666335798413e-21'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('-4468679873.88672609693', '539.53', '-8282541.978920034283413341241450892'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('-179.2', '0.0000007655816638410681', '-234070391.78670983961863301569260757607010287281281593333929'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('-219680.333923311818378846', '-166364130', '0.00132047896336375'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('-0.0001871978372671329473471531', '-3', '0.0000623992790890443157823843666666666666666666666666666666666666666666666666666666666666666'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 2 }); - T('-401320638224', '644367549.141339409', '-622.813235642895395647640582425328355316646002650582340426262307784707012517064871019261165052'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('4873861628995229209.679696263', '11.3', '431315188406657452.18404391707964601769911504424778761061946902654867256637168141592920353982300884955752'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); - T('209442.3', '158149615372619.95680722', '1.32433012566314603912819065693378117517811e-9'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('-0.0000047763583896869', '0.000000000000031', '-154076077.086674193548387096774193548'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('-0.00000007062563491432162547958465462', '1678294912481632682476209.39', '-4.20817785891337228664197163e-32'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); - T('0.00000000000000002858071968937038', '-2.88', '-9.92386100325360416666666666666666666666666666666666666666666666666666666666666667e-18'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('-15537801.13', '9673381.312387317833325771976', '-1.6062430114383020650447665999331371841520357527309569579958513422263988998184828601088618924812317'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('164420550135149389227725890786', '-15391746.8', '-1.0682384025128933983485610014452680575540652734750028502287992419417e+22'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('1609313.77506384424142919639', '0.0000000000053685372834216378966', '299767644351376825.93162778894'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-89.457432402492322024345', '-5.06', '17.67933446689571581508794466403162055335968379'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 2 }); - T('-0.000000028628393568561339370307241016', '-0.0000000000000379', '755366.58492246278022'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('111763009.2499833', '-1601833.0823050590361736215681', '-69.77194470797'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('-3', '-1152346002.8380362303171', '2.603e-9'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); - T('-0.576489682551979324775037271601', '5459327', '-1.0559720686303995433412163653157248137e-7'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); - T('0.00000344431255', '-283415783536.257346006', '0'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('12276870.853890295703', '-25421.870298715077667', '-482.9255562094'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('-1.06344616778', '-908115415.12', '1.1710473691711028996236867667808035039095813383267480812456e-9'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); - T('23.2378944663779563', '-0.0066688655545191427302132980', '-3484.5348547521468539685861979249'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('-4633127441615.055', '0.000000000000000000330562768231669865040542542505', '-1.401587803248307270887186423812142740668131751793115327680250246636587862964172169120846474218246693691205e+31'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-388346637546565.620781165398457', '401421569938655130.99', '-0.001'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-0.0000000000020', '100.0680659261421', '-1.99863960744095248390643549023035102721e-14'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('4332077715.94645857919', '-18136684.20002200638019792766', '-238.8572061006169030996048913019246422521488028407800616438387217410426'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-1.033', '149230209.393876280357', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('483.01441958764904654509', '-34.074616461', '-14.1751975444971405850005232726543058124665299369164'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('0.0000000000000403', '0.0096466', '4.1776377169158045321667737855824850206290299e-12'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('-2.418', '-252533196343121', '9.574978795e-15'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('-184519506518001195547.617786', '7944.825953', '-23225116271845558.395408411787016525470762568887706381199814812356028461886180730534626477046501'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('-2.6', '18838675108065593678670.65917', '0'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 1 }); - T('-2741783705391098549.43113406124', '0.000259901002941710438610', '-1.0549338688031207307464801041e+22'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('682.9', '281397927443588576240', '2e-18'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('-850018004663.26329901717460497', '-2267827508109509.016187085', '0.000375'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('0.0000000444531854698111342391368331682', '4.344829467704764', '1.0231284288654566289500698235746505516089188728211808317481780953622470478425618084e-8'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('-1.4712311051264', '0.000000000017313', '-84978403807.913128862704326228845377'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('0.51697085407', '-1117.24070346677865353580050330', '-0.0004627211060838083923081019471245413295285971182727067902125212404'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('0.0000000000000000000250264', '4160.2267', '6.0156337153453680781387e-24'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('3169656920942359', '-0.0033438053832729141674557', '-947919079500943088.70924699289'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('39', '219292934629915523529759119729', '1.7784430704900464425561021192412728476325490159712828579054247923564e-28'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('134805.132733741256', '96353.06742654718840121401', '1.39907463596327352679301491137258398946955291434938512429695494829240923996386862656333'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('-1010315990560397955586700120', '5820.541', '-1.7357767784135494545725219013146716087044142460297075478035460964882817593759755321713222190170982388e+23'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('-214138675511540759696445678551', '23110893.120537394364820827', '-9.265703164074059939660599846596097069029593680212763791197148166552525577946368777388857952201748274782919e+21'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('-2.28881', '-0.0119610613466593161348', '191.3550924675473610818148277270442402773776'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('-0.0161582566012842558193575308452', '-8.23472647543961990370020', '0.00196220926699591798771447904701588328'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('-179000423547519.2023', '-513.817074', '348373833033.6589832746585606845754604098656324526887948453032528070486034490944144841710729137817635075319'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('226948030083297747864723826069', '111940411.24367524', '2.0274003602619475687096e+21'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('556603251322736.618248', '3399677831.62463', '163722.352202046266598735202475258318227942521970482638506688967937552453909908915341059'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-0.000000063249491783918312083725', '0.0000000002279936166021383', '-277.4178186501257928732090476304116713303274593662213996987721312414328162894997658'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-0.000000000001036022', '4609298841620961439.36555', '0'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-99.76442277', '-150.6295233', '0.662316527227567744682625573973385866779809426642'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('9356790068617', '-10.9549716416570764', '-854113581913.541908584220019292914535890315334066826070885177252273694217'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('53359751342466.32896', '-2511127.77', '-21249317.529735386168741226576455725309429396338522432094325491052173'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('-1.2937049565170074827034', '31844.056894911021375', '-0.000040626260679861856889123161868912398713347049981238434464715739281931810450534141335814528867102'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('-0.00000000000449280401429153396355299', '-0.00000000000044269813', '10.14868532264081161479717567363567'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('357856299251.255875863839110', '-41.81', '-8559107851.02262319693468332934704616120545324085147093996651519'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('165.2195393', '-3306', '-0.0499756622202056866303690260133091349062310949789'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('0.0000000000004460853243656367992315561', '1774106.9664', '2.5144218066559348e-19'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('-55757052.3958980146175417', '88055591318378830858', '-6.3320286152300798105944625052701644533073133076425193458944567692978853725246750721e-13'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('-0.00000000000000000017501811482480412', '304243.050989991239479', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('40.5285753', '8.0', '5.0660719125'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('343914072241', '-17.29445983972872982947654', '-19885794377.397243002401340809473068975113518371'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-20930690196036875509134599645', '-0.0000000000000000123346086295836262', '1.69690752455949008439548907337338602597713354108285134991008814289369090897467648957705439201566775045786379691526479255661937282585766e+45'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('-3.1249', '8', '-0.3906125'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-6401747968.386', '-0.0000000000000000205542332869117827903841838', '3.1145642257852591903963836968051918026316129813344744834582282680135500872934734806400478973820414088979144e+26'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-59270232988727537945508164.513', '-1744971.2', '33966310153845254262.9403651550237619967596026799754632053526155618'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('0', '-1916860348382691.3', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('0.00000000000359530750316701120586642522', '15933168241950.7994941', '2.2564925246322603057614614761000621705069850864008968471755048e-25'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('-286654.36656907', '-4.9195037345256', '58268.960049221874337564835121675287798459768123662033157876089818660624923780569193'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('3967522531561598762', '-2.603298589257357', '-1524036677134839892.498635318772582298767052624610095249311495599985876774458020002005927160414468'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('1285.2887756282824121', '0.00000000002859924093606470276', '44941359755023.62480204313935956776874801357605356836723534864865307'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-525236154.822171572778825', '-22.4', '23448042.62598980235619754464285714286'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); - T('-0.0006790321081124', '-37401.9', '1.8155016405915207516195701287e-8'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('-674534675.7886', '75.74167566469', '-8905726.865283246111402727'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('-2', '616116112.1605491183018635', '-3.24614136933791931945060578786471986907825936137392901089505558e-9'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-2491734141496.31813218981475473', '-28413221701601.8197178637', '0.09'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-0.000002215891039369097', '-248.5383893034218', '9e-9'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); - T('-43263395762254640.270560', '5.5', '-7866071956773570.9582'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('2670851932.7', '0.000000000000000000067581497161355428580573', '3.9520461145203087972642466099835435695433146040211992748405392726712672155711875985311059242282e+28'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('-30251', '64.59', '-468.354234401610156370955'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-10.9', '-16.01856788583404017289157', '0.680460330641628313590394440806331853148322515656735505804471216653727'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-1440859822060.4', '0.00000000002310', '-6.2374884071878787878787878787879e+22'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('-0.0000068536779319811155121801496', '2109618699981048', '-3.25e-21'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-0.0000000000000003024503216376523', '-172121734.50504768238966356', '1.757188437052280407219407663806098e-24'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('-62776449.44174200', '0.000000000076815783306459991438658086918', '-817233734261259262.239270651053433855593374339919643384216403627421848938502260263157818313916'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('0.3182941364219034896875', '-1166370.2', '-2.7289289148669e-7'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('-0.0000196301560737', '3.8618108426775101', '-0.00000508314800320199522813287909164458508020625832554720190545073'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('4960786698', '-49940646.8534064974425840165', '-99.33364925291551720975367361333950760050129314565632011714845156519'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('434429870.9218843047071635', '157.49995', '2758285.770388398883346715348163602591619870355514398575999547936364424242674362753765953576493198886729806'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('257045.6411120298008987345', '-0.000000000029005991404382415113743', '-8861811945279472.9262243'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); - T('-12237.76553742096579866570204', '1168.658674994713016767363726', '-10.471633676510662234490086039663251446847408070052'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-0.617857977787326595470565960803', '0.0001000334366187952019963329124333', '-6176.51456024492671160985799354725620484043082324296'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('-1700.567', '-551439.92', '0.003083866325818413726739261096657637698772334074036569568630432123956496'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-164.3', '-9', '18.255555556'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('-0.000000000000000034044058622', '220768334120836848545819009.7', '-1.542071636205131317651186500274991513e-43'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('2', '-0.000000000016652759804630464', '-120100213026'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('-0.000000002541892', '-9045137640110758211.42226', '2.81023031504568060023693859241363201800114987035634458167242259869e-28'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('-122704155075.94535066173086314', '297930944.5700352', '-411.85434850692741315153485298486551223024886855233016737260686347412'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('-0.000000078354399312162277905', '227793.9800316789', '-3.439704565558127225698153407872459000046222286398594593287353606705099291160152e-13'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('13026606.4', '82714.884182636809176406303', '157.4880570616152199992784118588164179365063681591'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('-1285910115249173', '1617.307272371111698558', '-795093262249.3671622683559000592943810834076119341107228166013329322926295571433128608008075796230056665620344393'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('331.6', '-28353.5364332930309060087', '-0.011695190149565670153895216856810268914825899885062520249777120581'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-105.9185366619230190858937495507', '-59433131284249066.41118418', '1e-15'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('-0.00000000000073014656012387866406506', '-41.684601938810999358984', '1.751597775110492449719062255076518e-14'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('0.0000000000000000022300089630621', '-419.1360828229', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('1130760492380.9356450677', '-229824210.05546399356665486097', '-4920.11042747866585496276384081135570263713611480062010574772859033361792653'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('-6.2611', '9157537', '-6.83710041247990589609411351545726760372357763883455e-7'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('-19.04877', '200438675451598.0641778', '-9.5035401511620432778216303144836011206859589559490268245486790460075227481e-14'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('0.0000000134636658966203491923', '457.245', '2.9445189989218797783026604992946889e-11'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('3952117806001695548132', '105103967647.0759963457', '37601984915.282538236635442731746402464993193389008265715020195723349787877331156219110117874945153473094823'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-555.10', '-0.000000000000000538447959', '1030925998922766833.2567679024297313753955561005292992483977453427397985549798'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('-0.00000000000000002066326455046243', '-397327.6', '5.20056108623272835816e-23'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('-1775.59', '10.507470', '-168.9835897699446203510454943'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('159489624838596149.7403499', '3176277939036815595', '0.0502127420520889'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('0.000036052516423310979994119280567', '-358332155519058774683271', '-1.006120044434400151705042743428452514742291605495317647674204486e-28'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('46758', '-0.000000005103526281844419083580283411', '-9161900501294.49237862035133479136014813799931538266394606991141604284156389978703764576062167309479'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('-0.000000000000000001097284289107548509079464', '-161.15853', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('22277707083244.2519652', '-0.000000634651864129688541271613', '-35102247928939971782.61068893072514165936361175429836333320824549127627620588515332608195'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('8435.925', '256954063266056432.856652', '3.28304790855369344579195264342821100926493e-14'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('-158618479554019427.7963038', '15884869.8362750', '-9985507038.3891443654601'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('8263779425.6987122562225390', '529225363240624053', '1.5614858999e-8'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('-30.102314488', '-2903263.197983', '0.000010368441451989'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('0.017525494377364', '-8', '-0.0021906867971705'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('19.79023', '-2827056513675068250', '-7.001e-18'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-0.00000000000000227368298735978', '0.000000927130760915485605', '-2.45238652756452114275525189681918961497198801e-9'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('17662001639199304074239945', '8.80894832', '2.0050068404986742020345903221282605959e+24'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('7', '1.181856080838791289', '5.922887'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('22.441720084515', '-1381983133.2014379', '-1.6238780015012e-8'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('0.0000000864273040060855342975053506395', '879056.4149', '9.8318267793901897726206275865e-14'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('0.0000000000000001344423906812106089491', '0.0000000002227485960538881686', '6.03561113e-7'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('1411.393', '-1271776.5', '-0.001109780688666601403627131024987487974498663876868301938272959124500256137772635364783042'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('-155277765869632648881792.431913', '-1', '1.55277765869632648881792431913e+23'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-152686469974611487615994311687', '-1933.794345', '7.895693271075911002107843669746588280565068e+25'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('758726', '14635', '51.84325247693884523402801503245644004099760847283908438674411'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-3.0192872066759212', '6136438.214992262', '-4.9e-7'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('0.0000000000000000000504744446657', '-29.75477709062572163044393565', '-1.696347598638271587024025181442e-21'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-1288750759514799390.105312', '5', '-257750151902959878.0210624'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('439817986945.4458085', '-2407', '-182724547.962378815330286663896967179061071873701703365184877440797673452430411300374'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-0.000000000000000000685343541036523881', '0.150414815775863514565983011', '-4.5563566162110628738965304458260327549194937340930838731e-18'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-297981142584715048.58464547696', '140960611730478162479362', '-0.00000211393196245817856906'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-3612.15791360', '28.5', '-126.742382933333333333333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-0.01222472', '5', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('7536867975772246', '-0.00000000000000114381534851634', '-6.589234866928853684878125702812328913259067484491e+30'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('325.4476805', '74513.6119692044311954954', '0.0043676272280895947550504036961048974'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('235.005', '342491671689116749', '6.8616267029499181999423386276736744860589500446065169360201815384769794878163e-16'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('0.00000000000000000217276284142833543', '-79911278782135', '-2.71896892972019267609882426457309422367294575576129030645265373133756e-32'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('-0.000000001945777094292394', '0.064410386141132194563', '-3.02090580551546972718801107566976993411551848363338412612882804877260800482475969e-8'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-192.89072453322062982', '-334338882933096761058.872337286', '5.769317730591904683898446209699667225e-19'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('531.7', '0.0000000001088942', '4882721026464.21939827832887334678981984348110367677984686053'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('1170194087', '1908311.7851705051264004435508', '613.20906577928234653196650443134207034891718661419179868075798779120233331273647204376813041396405'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('0.00000000000000395459875', '-0.167', '-2.3680232035928143712574850299401197604790419e-14'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('0.000003889986089150080', '887.03227284813628', '4.38539409243801241101366379951623694240025e-9'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('0.0000000000000560044015241818176716657397', '176547271136065.503677462929', '3.1722043146744001433625334e-28'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('66952.0131463229', '3777.04679928', '17.726021599490277841310571011654822791285369408112'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('0.0000062074425828486761101', '950092578565480052', '6.533513389001660656215172227181728690216460407720924304900769914841550077e-24'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('-5302963245', '48600562889', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('98828421.68031429338289345112', '1.57717162', '62661805.7458542738569525180271757616333471686486471269372701494591'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('-22117311927.3540903162740', '-0.000000000000000116033960992561', '1.906106775823333579624070391760766140219141009217898e+26'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('1631.55664890810', '0.58', '2813.028705013965517241379310344827586206896551724137931034482758620689655172414'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('38924.47442500084940314073618', '-248176004575545850537.387772064', '0'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('-1.7', '-49465', '0.00003436773'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('-35869043124810001695165403', '-0.000000000000000000294761423155287080103', '1.216883903627828763511390880008878233917053875596703451124430601838e+44'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); - T('38369826032107.3366', '-0.000000148589149580774368496', '-258227644080089183909.2257764243564993353523357572867146099830505925874631318'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('504879645444545886653820', '-0.0000000000655042437033101618837230', '-7.70758682034874828339733688726527971016278336825669005531564758824777324938304919355876842577550332162114596886482492042805561365e+33'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('36.77626', '373337972354453.09678819426', '9.850661524749490301351472673809888625949320411140152909393418231e-14'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('743.0', '0.000000000003863741140306753299573774', '192300667415056.46927480046001044'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-1.8', '40881', '-0.0000440302340940779335143465179423203933367579070962060614955602847288471'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-0.00000076973840830008', '12659447038097991.1750917', '-6.080347790733589194468242112049861504078992e-23'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('163373374216.57858619780', '14434433023287908624.8', '1.13183090706090664437052047265425181009950836e-8'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('-0.0000000000003358622556795248989092', '-25122710746307732252', '0'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('-0.000000142077636052', '-8197817443.0', '1.733115393699308e-17'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-186.2345348677', '1350048231963.03111424433134052', '-1.379465788395623270691451262396792731080110034909682107e-10'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('39.448', '-4940066138770334.89', '-7.9853181904603542759566033849464102633606642198925134507667121e-15'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('-5102.02', '-2230117688975780358.4836323519', '2.3e-15'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('-0.0000000000000000001012697436141962154', '-13388043549631439', '1e-27'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('106760734619617567333', '0.00028100235731097821648761', '3.799282527066780329996423436016902152808e+23'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('23.7', '-0.0000000049170', '-4820012202.6'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('1.0', '1279292333.18013773', '7.81682164477717970744296838656904509907798355232108387059921801345669686529795e-10'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('597145249532385642.51', '862329.1435747784096027606207', '692479494612.6080072815557484172016013671196692425240831772477297841'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('4112111934612991443958', '10887.997707', '377673842819536464.837905388805754641035579711111708080377170123516816056581485832'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-1469277', '0.000000000000000267227074', '-5.4982340599216380298352553903277030979278693894616381572175579784254944167820360896516046873304461657953115933155785e+21'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('-2801233344017', '-219534.01153', '12759905.96853008'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('-87.770012652947444054739333', '-1546591879469182.2196063', '5.675059711491028263467484661270226724199e-14'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('217767204358757.914155177', '3.0', '72589068119585.971385059'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('27421361743819677932126.9024813', '-175867.30094046307966067', '-155920751596129398.148630935136929046113850742976778700859018743825821'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 4 }); - T('4.454340437984504303453423', '-441173094358179511112016', '-1.00965822597697e-23'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('19728713.62', '2478819.33120125077', '7.9589155093603964335778685317333'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('-1120416668960295880.350225688934', '38555924.0', '-29059520631.90849427834295162875619321170982700349'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('-38743746841.2910335460252', '26858385765897939', '-0.0000014425195608919998313993014674161354104614344377991575109970896012905928399344639'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('15', '285026249585564801389', '5.262673182491216179599354884524479018951326176134286918303336507405554389e-20'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('-4.2', '-458.33060', '0.00916369101255731125087436885078151011518759602784540242349081645432358214790808207001670847'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('-1.6', '-50437548861791', '3.172239801708685145552089878150280259837211447999607534786786680997266549e-14'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-8.026', '-149937.06210387328634074', '0.000053529126737455704519743771206938187495268193696700988193976327724966217'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('561831.58', '-171.7371143376721672238815790', '-3271.462794555393'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('498543482.202883430', '0.0000000000000000002018825187426992473911723', '2.4694732625080864925739696523432984202460157979090892828512008635943874044826603643324923000564e+27'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('-1573662164485796782591', '0.0000000000000012717', '-1.23744764054871178940866556577809231737044900526853817724306047023669104348509868679720059763e+36'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-8.755', '0.00000000000178', '-4918539325842.696629213483146067415730337078651685393258426966292134'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('-130.72832', '-5.732694', '22.803994073292591580851864760268034540130695969469153595150901129556191'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('0.00000001382571888', '-2.1', '-6.583675657142857142857142857142857142857142857142e-9'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 1 }); - T('0.00000000000000117973743502524272807', '616457987975752652412292723', '1.9137353364486627983539871950537570451010962116434e-42'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); - T('-4.989', '-983417176.219033559', '5.073126767198964388356632047378424801286e-9'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('1332207.5', '7022394593146857662165215.6', '1.8970843667772513370874478944195723674667926480514644114408178277993533e-19'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('4575507719802.39', '-0.0000000000041064303129709269964750071922', '-1.114229968873401897618592082481401867013344062753280408e+24'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('149810634239754073748.905583612', '788.0', '190115018070753900.69658069'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('0', '2020', '0'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('2023025', '809029355333.449', '0.000002500558214190128322397542547791559225908993583651'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('270046217678654471111180.3', '25440455374', '10614834275122.29841075722483645822809240726'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('-0.00000030939', '1161284757366711658.286050869', '-2.66420443424713373199316316676927976387246206522913702255534422176284e-25'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('343.67011844890596207778', '399', '0.8613286176664309827'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('-122295994', '0.000000000472961570529772', '-258574906758310732.3008002674034180847656531468244458024370134308192069827746196764390903573275736191797922791483525'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-42003654.2804947407997', '60077.942232', '-699'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('0.0000000000000033763310745', '1.4059', '2.40154425954904e-15'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('-1.91058737', '-313.1567413782311', '0.00610105776931811347706950267962'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('-0.0000000000000000002878187632313', '0.5606618799', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('0.0000000008278370435046068492319062071', '-0.000000880731236552972862445603389339', '-0.00093994286695747890058381231279310103363840897673733064301301511'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('1324.249659895494', '68.98', '19.197588574883937373151638155987242679037402145549434618730066686'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('0.0000506866917672316080', '34045600152707123076.514', '1.48878831742965396924694051950785690106414308555e-24'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-58286144583364.7624865', '78910342.026185396114169682', '-738637.6'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('29036909800547801473341.853', '-401697350838892483423640302.35', '-0.0000722855396977550525555470543751203687329457517323'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('-197.12480598', '14.24', '-13.8430341278089887640449438202'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('3217.784', '-313770600087962922083208.5', '-1.02552119258398383800794584022506253132439496e-20'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('179578022483525808217.1316', '-172287187.34609198399320350', '-1042317918411.355406728415577931041850948374861408892749402437587315539028106051384979284470940339961497'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 6 }); - T('362284144974', '0.000000000000000101112141394033338', '3.582993495926281620007214082634348044701971116e+27'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('-0.00000130075283328887201', '-57041022947403161774214774.001', '2.28038132220784414222844833755234690488e-32'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('-0.00000043703', '142531697127734679769529674.807', '-3.06619516084440181062784091283950942979717606469995903981861e-33'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('-0.0000000000000014831859180403', '-3', '4.9439530601343333333333333333333333333333333333333e-16'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('-0.0000514396769744008569', '-496256142383.40032', '1.03655497e-16'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('124606777.99164957816372803', '-6874807226141.076', '-0.000018125130478981165436'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('4.0287', '142.27074604365076083956570', '0.02831713555'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-5.4555', '0.031534939666219313459', '-172.99858689262'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('-0.0000000000001977206609', '0.00000000000002948016823586864811439', '-6.7069040894899784621012000948675753193250795429905038168295424558941'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-264583289.26', '42103887343.2274512581610', '-0.006284058455295080780351067255229403202650473692031'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('68569.34654', '0.0000009147865', '74956666435.2829867952795543003750055340781701522705024615033'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-528.092', '-0.000000000000000000125934369482525440823101890', '4.1933905904319285294420792769e+21'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('-311464845196635906.8534656', '-3', '103821615065545302.2844885333334'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('-20.58', '23209.710350851686266', '-0.00088669783848658893879169353682363382'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-31059942.6', '145937792210.4', '-0.00021283001564954857414407763549064840923979153'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('-2135283474988916964055301655', '0.000000959304232728583487099', '-2.22586683362738166737604285328971401078789622426237484217080281616869456824358411923531392778594182e+33'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('-0.0000000000202466646687769', '1899.8182002211122701', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('-0.0000000505666', '-246613339258.85', '2.050440586546064542650514103517e-19'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('67.455969518524277', '2534684.28', '0.000026613164428717045974656851542867500641933992662786388528'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('-3648288330493924570343774970', '-207495.1591764992289', '1.75825226235308115558193901526476978211787005652587261620298365776e+22'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('17.551331623430330226', '188465.369675', '0.00009312762155560359567156113928652977609691465987357393275439157944601314989567724678594'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('0.000000020846722863573693262', '-20892853', '-9.9779206140844877729240713e-16'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('-0.43446572', '0.00000000007962205', '-5456600527.1152902996092162912158127051'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-10.50', '-0.00000000000000000094479855715193131038928500611', '11113480138720739387.7707469412891215469747989806676776721515227540795555586299113786558333471180181810564303868092'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('1717147608160081', '-23.792', '-72173319105585.11264290517821116342'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-1141498.2', '3971811270', '-0.000287399909613530050736776322204252167298976419'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('1378.889588', '-98690837614052218259080', '-1.3971809555334699911941342306296379042116241440981401e-20'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('68850', '-162944125.01438491229237023858', '-0.0004225374802185831210963669732667209689539038194093814050306540589'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('0.0000000000000072', '-857292014', '-8.3985e-24'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-772283703581214.910284313805', '-200294654', '3855737.9748'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-44166299114510.2130932', '-23.0969', '1912217618576.96111136992410236871614805450082045642488818846'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('0.0000000000000000000545766837772511648200245', '-0.00000000000000000027772664176901089098696', '-0.19651223746349603529169661'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); - T('-83817.53770754852873213', '117071840981.59231820166152851', '-7.1594959987626316690706180214222462003215322671048196026166935348927411932497e-7'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-2.1737756225', '0.0000000000000637', '-34125206004709.57613814756671899529042386185243328100470957614'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-16302254329273.597977755', '0.00000000000209097618512853240461589', '-7.7964801537285311721788969888105365429241174122552680570119e+24'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); - T('616.42204378399664939', '-1929', '-0.319555232651112830165889061689994815966822187662001036806635562467599792638672887506480041'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('-403164085027123.051770367589', '0.0000000000003676264645331271', '-1.096667742729369337310582813131448517061570772281682780945568912782496495350548845889392e+27'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('25.384878', '-0.00000000000000000641206764727775', '-3958922362707320532.07205374984357008780337161157723099967'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-21801.93921883534110401563753', '4.44054734', '-4909.741423640658925'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('-0.00000000024674274151002574', '0.4455045966025422799158726', '-5.538500464231073169371052615661215257e-10'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-6002483.370042742', '-5996990081.0625363', '0.00100091600768151219096018822465890558159258414202434'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('-53769698495425729825076', '225204522003660778121526', '-0.23875940863457299763118464040945229796195576137308791494722967469'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('6356.1', '-0.00573345', '-1108599.5343118017947309212'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('-129723.5406013140977863527878', '-451371512', '0.000287398599939364577767931414776571012306155467'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('48743885824779243079.1456440', '3601631418.0153094243302411', '13533835133.9792893416680067539286874712504308991771184819'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('78056881416067084323940741.027', '9.11683376680', '8.561841030854396681916775851133422905837072567209770702561714717783813129336919127996576514259406623537691332e+24'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('0', '-1820471614796783779972354', '0'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-36694668.43388024741040778', '-257464458926266337808.85', '1.4252323830214176e-13'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('-5954069341347.3962', '9.321320703600117351225', '-638758125664.294759063489088884443'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('2011.94', '-418.99536726455978645', '-4.8018192018090542213510612911452364444253030853395678'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-0.0000000000001898123850490243104322', '3639.666428793560713086', '-5.215103877306178645096249304317762354281760319437790004953610055678e-17'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-0.00000000000000000029503687721065987769', '14649759459802649182', '-2.01394e-38'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('0.000000000000134426715319514646459907', '199.6', '0'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-0.0000000000001398996670272781802', '-6.9293322387574', '2.018948755910217943900181183560966783531346063039409208344261738312692e-14'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('0.0000000000000130179069', '165.633', '7.8594886888482367644128887359403017514625708645e-17'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('0', '0.000000000000344409200387463', '0'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('11233155411010241522566.1234', '-1185238162646.401378534787', '-9477551234.0311730021348245152688760415135368'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('1607.806178595786832002572046', '81678425098925663307', '1.96845883e-17'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-2.28', '43439864.0595907635669862', '-5.248635209521600255931723062834114760379154045021137331630848661939e-8'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('0.0000015905036957290081176524782630', '-5393849809.70', '-2.948735600440217273431432050205608082191239660167210309856618549962366409e-16'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('-283183278838066521', '-34.359', '8241895248350258.1856282196804330743036758927791844931459'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('-47979841', '-0.0000574301851987706', '835446391717.83652534656824028944749066579445307142293005536063202892'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('4.022', '-32.359458663', '-0.124'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('-18266258241.5', '-181823071.895293149780143', '100.4617183677274471413567067213913250422255253290544133838475593806402907232112362916248'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-4.294441', '21734.95878115474436853992', '-0.00019758220124730519805411626206325106564714958801319453077996747414734898894280042955969'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('-12379.8035452530841121266264816', '138011169506', '-8.9701461045258915408691417466380150450081644278070624815128287505e-8'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('-592.65589', '24019384020037.9', '-2.467406697463946258442231127491047101393072665268840751311919e-11'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('-575677756154979112.503', '-20.15814383824', '28558073638849544.10104929569834078336594902374325305349086770749741446260041417851975'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('-0.0000000000006772983105', '-44689405165769642955.5728273054', '0'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('2807.811361442421600', '0.0000000000000000573930684179517836', '48922482084337832483.7410205786946682942661163644554950857598026661626716747966149113609962540130406020868412662411915439'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-0.00000000001387593307458545093', '-185096365518565959', '7.4965994257697271501624147357388158152423436475615674516065064968428e-29'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('3127683043147299975', '-101931.418089856', '-30684190426843.089340772119585303722769195153224'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('-1023.0079400029185485619967750', '-0.0000000000000000937329007351488106', '10914075335121916073.7406371444449996786088778769599699374737'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-0.000060138', '0.00000000000144058408110821802990', '-41745567.501854393272232648642893873814372044515900394040835'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('27193.607425610341', '3', '9064.535808536780333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('0', '-452238074986.839', '0'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('12942446846259465021062948578', '-9.001', '-1.437889884041713700818014507e+27'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('1373987495401708455205346572.2', '-6582407504.891', '-208736316367648027.237933851858801742456479742046562383390919414034304795921282'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('14107739736320519038715652.04', '-0.000000000000000253001022262111130617270', '-5.5761591831454282262758775666003260573525562011504183580173212815054028496304605858204789245425968521880049171744069071933235e+40'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('62810.31', '56.247378876', '1116.6797681091645398363611385289398316246618197348905030246195538293939825150760150418640105024474'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('1', '93986309.331800', '1.0639847517255929198948356316332577484672270623860126340350381035515966186264452830012e-8'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('2542580644573489213065.4916205', '1388716781785.4289741376149311', '1830884942.07189905862450538321660635668802930697912458162051255803533678603266392759258349'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('0.0000000002313', '-3.7701435643206353618246158623', '-6.13504488765215829394803132e-11'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('4534637163.30685505182205', '220860649.8011970337570979', '20.531666312621153730556364204359195'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 6 }); - T('61.2684742832754584873427570', '181.5229533', '0.33752466654736527189006877512057314021234580695861783337347233'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('42931293974741.759', '-0.000000000000272131799215399781781137280', '-1.577591964574506138810245117144621230381062283384007772945375013863e+26'); - - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('-0.000234165067858386', '1204524.58490781295081290690165872894736', '-1.944045566129375287285413911441354845634213911376682320674485555498202e-10'); - BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 6 }); - T('192611801.989', '-0.0000000000000002454390450845060800610181288641730924556', '-7.847643064398439322927009591803480592172095149169993303836146619219889495421629832014651148041844658332924171063103644643774334479292843063280041167308901704195736109752589168741736653331736624025714424106113942034331698658198125461756386624763e+23'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('-5.7', '0.00000530568171612961', '-1074320.0035297325370775240385470160210725918436357220360533165'); - BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 4 }); - T('0.0000000000000033124526299709013935', '-2763518770598702844.5257', '-1.19863583530256778728299146187175203922171872179799864636802734104900031920120940316532340914091294177225700870458187447011932777568573345799530311017003420260142628e-33'); - BigNumber.config({ DECIMAL_PLACES : 210, ROUNDING_MODE : 6 }); - T('-23.5', '-10.07', '2.333664349553128103277060575968222442899702085402184707050645481628599801390268123138033763654419066534260178748758689175769612711022840119165839126117179741807348560079443892750744786494538232373386295928500497'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('166672266184423.021626904', '18059995237353198700384386643.010', '9.22881008515979e-15'); - BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 0 }); - T('26.913399141', '10383640753575568607140776334109', '2.591903916912039712271834490487152193455348739851838101216180411159779609836189141388848951365988108198314614508052418916462825623970036e-30'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-21926821018666568031129910213716652606395.27', '-997410.64795140439778768906113385719', '2.198374467297132899908106309536727825928127237180292788209481559738646061389e+34'); - BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 0 }); - T('-2290.58025841712192', '1.463986746228', '-1564.6181663316704494784948944605425847639445027283195454407092997271699887795331465099660421350069670598086217307623318096530010165810037792647687934243311210272749999375891207789866701855995076048887346047635382828212525849716636783175226105111233328088230384290571625422181021168714001'); - BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); - T('-30.67', '3.8976', '-7.8689449917898193760262725779967159277504105090311986863711001642036124794745484400656814449917898193760262725779967159277504105090311986863711001642036124794745484400656814449917898193760262725779967159277504105090311987'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 3 }); - T('-0.0000000000000000000119043120923216765732104322725575428058', '87817.89', '-1.35556799330087258680553954012759163375480781877132324632258871170783083036952948880917088761754580985719424595603469862461965323922039119819435424832001771e-25'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 1 }); - T('-8.22', '-0.00000001143117438749799522340376445810527', '719086221.708770306101496099214219738977492479461485245168128419553808427085843089054408753339121243720319996621382861685508200871235175150646512977253811584667001513248313566877602993993156224540490724218018265753103797965261216493574440524368555738508046559954931130391396783024'); - BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 4 }); - T('24241610948142963.9', '0.0157491490160419356128650778565549717', '1539233067351809684.469265815405185606200828852801248741726233365240159848514220693363870435065715331745076363378396080222501942223998796092795555675069522002800429749707005771467749498145281587997018831928051937500760888517569868248519621828163517328159957565866970545184'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-614.6470035284084362635939', '0.0000036178254380789796882746012143141', '-169894046.589151728283103'); - BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 3 }); - T('20836540258977175409149289779', '-0.002237832774886680', '-9.31103543249888363278621802840801374310875222451288112986092076948682617341603960643194423149016034958754457013226135750352832196422712123562772351406879972459706082586592688222073556604034175625285116660183560596895807412079857e+30'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 4 }); - T('-43040.4061516774233', '583988523334470923611250125489227.08', '-7.3700773956865342991994517695288528995346732712900162726204530185819328662358254662731547463004357865451232508161517484991367092169323944728800811313034790353095013941810415043379e-29'); - BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 2 }); - T('21573161.6123', '21061.900868809168951109968897445394809603', '1024.27419759856354869821834876947559421500476427609702906474448069825230498699726433100734001773187870696580093168542369134548786462894687459126274774540068641498275946786115647'); - BigNumber.config({ DECIMAL_PLACES : 211, ROUNDING_MODE : 0 }); - T('94009053862245443881.3603794710', '0.0000000058168420037618034393043154461638', '1.61615278189520968504239946028963612269837658139871704937578383317407342442917699584484230849408630553645512442004196444124893032110071914199393032561462735978793767777348936013401587676832922067808678882273169183313633589728782245039913857e+28'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-6849296.8859053283860081298179335235441015607788', '-500455913.21990038402867', '0.013686114410832721185583633556349194628367603017752125936498725135912'); - BigNumber.config({ DECIMAL_PLACES : 235, ROUNDING_MODE : 1 }); - T('-627035709418.6020324', '-79702921980991091036.6376088482349836675350131382567662', '7.8671608748315171841478877977295258118465768558399546636644915160062461118171015205714945947896483476474086123189393772072219641778063008647052648244130123458715848940820725007425265231724647407032453698683129476970042023470888e-9'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); - T('-25608685328.2454', '595441.7535484623298737222706688866955389477378561', '-43007.87638023966370657370588811569991896888010198690960470207207809737643848305517837719294870598091143'); - BigNumber.config({ DECIMAL_PLACES : 228, ROUNDING_MODE : 1 }); - T('-683736.37214134972814430654521', '-18.9632336191967708878780457667913396', '36055.895627905620517070391305008251657031461496549456866381178192783516693312982413358362997877079444763779520250252809587168906447803518489617404000729918769745948542665598545897867746398147465320091110241144601165475200429977742597'); - BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 4 }); - T('-3962705340.46948881671717568477', '-359459657606734649076972256110010591102497758835649899758.172', '1.1024061411656020093273134532564541404009617872358603779079112573776128879166732595386083848338310366653955933515894109785230723539248656433759522919591615796e-47'); - BigNumber.config({ DECIMAL_PLACES : 125, ROUNDING_MODE : 1 }); - T('-0.000164649877064', '3473903189132376093687', '-4.739621920929871763491457616805555400954945279731892757240637238185763574931431523866580835795309872e-26'); - BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 6 }); - T('-0.0003821118213706362653', '2229838191471697765551185863982841615.4264298', '-1.713630266232195448767156601693087011826009303221898043502017963648992395220864692206283954267374802605094974246895338259700194996166477912729483e-40'); - BigNumber.config({ DECIMAL_PLACES : 232, ROUNDING_MODE : 6 }); - T('-7930506936554962418131409569.90680798297410951', '418.0015772', '-1.89724330460133068084782565502406146973124615042720465601152281967992536081751415937001875982395216665704006822106316205545647400490239107164785118901699684782911866965079958554759252233749705574077436758532881440046394159873519252357500434809364159499635496e+25'); - BigNumber.config({ DECIMAL_PLACES : 219, ROUNDING_MODE : 6 }); - T('0.0000000015275164848097027132638842894347279291822', '-652956338855735114488.2661321', '-2.339385336983754852668142390338799091602532252166662910143498682538039863301188586605186506875177560545446242295832730977894808699190822303700804454042246041544737278266538281738754423609008e-30'); - BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 3 }); - T('257220387376405932965.30430665355867', '0.00000000000000000016406907169784924477234238', '1.5677567058470642513917519149329316821430489392115044166519585435434145581978810387812842645969888020679169410610635675706382200059244588674632033474023e+39'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); - T('322.2545022603820384336960780316577835345895449859', '-0.0000000000000000033237160910991028348796084937746467305076764358310342578860', '-96956085726870049767.8376794973510084168478956304'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('-2.1739431099861472', '252818880555243846143023971950005151203557565', '0'); - BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 4 }); - T('5241783993808', '319345904842191565498073.25140921', '1.6414126232175382253348783343337209763201724541901095776708522787278387798532468612538750123617125423681161603829617212562814785000109850683358376352827443e-11'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('-75142529610880369220698783112207960140876', '-515634485899288431.1771010535585914874354906363733674', '1.457282855700169237368010601807522542876527475981835e+23'); - BigNumber.config({ DECIMAL_PLACES : 136, ROUNDING_MODE : 3 }); - T('1546541001687701840914167.67479827236702697801593033', '0.0000000001441702867692414916431619983873168', '1.07271826694989551668095805578049361509418883192619913013281004675319041509234918086639219718387074160053135894972836600663651145114640578654185091844157644929608981760012e+34'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-7176.753914176182310920719452429', '-0.00000000000000044653379635370284804768093217270703', '16072140502645001232.813062020153734'); - BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 1 }); - T('-0.000000000000218656828763770361', '0.0000000003260312010373939723926058611814', '-0.00067066228038307178521418053555565521880888076076217429181362514336626956172410554898665120314887327156197575503374982855983523561088830701051313845455144492900357205167'); - BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 2 }); - T('-5810648646756939273193272697961097957.80034194', '-24478238498739569.55019', '237380179421658158920.12375796015085031167264933356195283794525855874119979186210326208872542818500442797698902978871939789074410235635635930945876382718777295508207593340943442046354066831575961780380810123164244556920715935805120214654092971463513690234667664284158975269'); - BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 2 }); - T('325211926241915776901459978759404793118112.4035036704774', '-0.0000000008207326278655673580171', '-3.9624588471360755753743696837860669218067054262782956563625649467326707278927167655841657825600770715600933189312282205341981728032955808726356404691354858853082338667465259519594006306790836025348680448013428787196609963069076886410608746960685978631049473357479085992379454902440980594e+50'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('0.000000000000000000266903165631981912924608178082737916582195572131', '1.27177919413428084884872865260', '2.0986596326075840271491140498886753236589280972359263843124503e-19'); - BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 0 }); - T('0.000002733263268624154307668605692883605816623313483253587909081', '1044092973798.6777', '2.617835132708385505912103850840101680172114332932674597664682489428789612314285730426934494539305686765391892449118478781382131128840493296681991122777731498667469525653739242655338266773578352941651318155910710274715154617197229384276812281e-18'); - BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 1 }); - T('908663019348799717744.1808970', '-641881433449989221874535429729541392318072002.28809907382762', '-1.415624400389509311988932092690069441016471703557385986131168587436857409306887868912071520245e-24'); - BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 0 }); - T('-0.0080669144171038870851704121842', '-77365392755933.74653648391376', '1.0427032203601362086966402753152126358803721683264665208330327846582644868438176180575445802662484574780511789429261112199846252621752675842864956825e-16'); - BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 4 }); - T('-210.222', '-84751483590963717829585.44', '2.48045215367078324007984321453334507191907907493971805185853574223617993874805730582776716265291530707193410880613287180874128627434310753e-21'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('30138507635261786122314042933625994584629942727120675.5216192', '0.00000000208', '1.448966713233739717418944371808942047337978015726955553924e+61'); - BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 1 }); - T('-14306357.4100655733182294966533250184311675581143995250456', '-1091634677512190221842949349302602728012476.2', '1.310544425234770452356115506554350533770693679532872980612370322113200883840809144450213582072732311231280550290256551885176241753552994126026377453650238647199215563886223930579543004359572521774702767282897717211825063631069801406693239209860779319628294e-35'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('76684144324315387882960167710055593944236701.8471372220', '2266090205881393', '3.38398463244269590810638171240493548569128865819965019e+28'); - BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 5 }); - T('-0.04843932063182036616659520596475092794485564179', '10.340742542805263737224972424575915219077686422776182', '-0.00468431743961392740753757571807431903633407477744153557783732352088948922422789465931798496333358351351865086588931339688903854612526220276043883912142183126008440495581452352758369339083424842302676893117238965038958934140337300248958747965388'); - BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 2 }); - T('0.00000060307', '152.93098368558551048631549070741954585813298026941772775', '3.94341280927000460134587922109853030326794149496030704765025321005503089676360613394235850297313616216249766082799779335877038117516291147657452783234674856388582374268910957705678321205113483390765273192764274548078401703015070147492892125e-9'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('17080782645769555714704457227966901164193270.29845561', '-30391154887848.2554644606520118486138121046860', '-5.62031377511067124177509277508491860108479228022084079991223459422496469426745707223249134974052e+29'); - BigNumber.config({ DECIMAL_PLACES : 246, ROUNDING_MODE : 1 }); - T('28772803908025649575183335244667919055.42290869956032', '-91299828074098850296945769.926537043678002664491412842', '-315146309855.848472568206087238799259664730242817457910334121842973021426810651869987856447606513193000621752927940568965272478460622274562101627248343964588180029900543217655644308185874787148004793034785861252751127096314210516710913919686482871664537233545'); - BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 4 }); - T('6951759681668432032711749392750783.9175356237927532111656318', '2.7064', '2.56863718654612475344064047914232335114381606294457994591775051729234407330771504581732190363582618977239136860774460537984037836240023647650014779781259237363287023352054389595033993496896245935560153709725e+33'); - BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 0 }); - T('3610.4019733373874707786743105929447', '634750877775355682588872001419455991096038.24825615001121', '5.687903868665688955305694340347322964961954295167397589705336952253660328941e-39'); - BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 5 }); - T('-0.000000000363816408313404776598470', '-0.000000000176054995898169309', '2.06649295271255569435711935566071788588382725518115529717617541560570250053194099172053838652853511065500135841507304305'); - BigNumber.config({ DECIMAL_PLACES : 121, ROUNDING_MODE : 6 }); - T('-0.026120257089245975337460', '-10313527642984828336594593633', '2.532621038448735499393356786871240840301703234531308009570150881137642734676636913392599603e-30'); - BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 1 }); - T('0.000000000000000004410941969151600946547', '-44281616230979038183093822629266520089022454962.502', '-9.961113311997279471841231246847650178644604097067120465778325734554891728411328577767291415744156156277994614481535402329799780287979095306881233592159622160728e-65'); - BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 4 }); - T('7764427107488', '-0.000002674812529667537596160439177377599760935488475327567527', '-2902793007498387014.48044362598228935011502311864234520569237714021083485607508423178277747936902105982430826830844683987813637898007482287809417852492708407047036731916276421684209217493488238977913'); - BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 6 }); - T('-949447181444969388947439985.4511355136104554015685159026817', '-0.0000000087299690851609182780383315644678700719613188423859', '1.08757221495643860477671732382164515257232863364500426357541158900924919270988871484356865061458205925354004879341062811806591159958603279828617300998726180176412434026219829669010640818680113933753274951752231792693043029144284250664616486783003321188472316319944387399318528080581818469403693776006031621264708604e+35'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 5 }); - T('-91.31506127828229385505713468471614752441511702771161', '0.0000000000000000643558902746', '-1418907591654008190.809986241947612339532570656579649628079546598288929018149855306422609225920914256055148103573058048903344507723249545289416009374221439962042209134598392962000545600948882502898132007873295678732638249894727'); - BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 6 }); - T('-31554080359351593984257.861', '-127382663623337.76088376', '247710947.9564264278154194854190110992765619566919008461755829484956933768480404139937995269294075970417035512431438477815271307323909693632471528470640493162729'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('22249838871724078527587945.8699503896079838447', '-1', '-2.22498388717240785275879458699503896e+25'); - BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 4 }); - T('-0.000000000000000002083153505440341144129691078388694364097599389078397', '-0.0000000009199547951874264021633564793246', '2.26440855174403563628185648551914266444661412168807984323558197598569789345264827294479692906361062627706137896503756850114672223307908523118328975263282917110735263650615651466791390217654489925e-9'); - BigNumber.config({ DECIMAL_PLACES : 136, ROUNDING_MODE : 0 }); - T('-56991751624054885329.62124419640377577', '-547769428347', '104043323.1114019970642917136571093031701343357920358152594152664266303349626866612350401719597995898558061592295276156729103132084620854683106856'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); - T('-16614759121.808030790648153770665168859226024', '1675576781526404464609628471598.39243996226', '0'); - BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 1 }); - T('140402.4955689790129', '38.703291658309349631849805526276280190792023748255', '3627.662908067807546554546567961344417536160876701687058333923486712232113900805891416673641596804432716825638493586794139628279751075644857258429655105395158227092111389062025685612980085941185691260575152773802143033318615394798093094354365408066689272476511042593884457576686'); - BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 4 }); - T('-986.12927285246', '-51.783879974', '19.0431708351630360976087334231777740293431493500085718393489029370350672132507596484566191420934873496236796294564190702949816782301659055672211805053570858950562266341'); - BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 0 }); - T('149685729436965196651800746', '81423776671944924604623.491184348956444', '1838.35404786057237833730572985586976512927556979841747586628317036871206199519163472936169401588761008566621870655257071544945149431089940802700420277249461116644979830629799'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('-37697.828268964546789359723810362357506482061', '-21492050362000369841372301770.5436241360851355099', '1.754035917189e-24'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('0.000053833706439646507', '-78551781135060843503.44066130522950432032755093324776531', '-6.853276356278360952234275200210729467471495476e-25'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('224744814544284254509320.087848915106225733819572573252946', '-727138623660756550283107964299965058655317004.4840', '-3.0908111222701050915917924293370185043817249357785579219388e-22'); - BigNumber.config({ DECIMAL_PLACES : 235, ROUNDING_MODE : 2 }); - T('-4444316.9857612757250520327859862653954', '20.2519150375403', '-219451.6902486996137209135371652041269261246412477636376691576432553919629279309682119736861443495210223465620888100387157187112231265470485365204146780421840039271841619606011779503540084673634772777110141905861847623366702934736145288933154'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('3770218975.3218768507381318', '66962532857490959877.3891482868472841860', '5.6303410495920484909689619060175443155610217965552026349425613453086915225114328348006e-11'); - BigNumber.config({ DECIMAL_PLACES : 219, ROUNDING_MODE : 5 }); - T('-351929.5059950121636449931652370344666', '-276462171730092.517889', '1.272975263822342073956025578954950406569335984729242556842303201573247612431654327770275210319881617825675660071574970977428110702557606956220740902965628098423393898616593144593990463991101529498881408398990921e-9'); - BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 1 }); - T('549939013280743366287306914133384653.017995023107953111296495', '19454772164114976.71', '28267563795741877226.86698851440815891895636313236931269723451909766146922098278835311088950918299696100520338231824401344966458227376657628415894512404547218693229974942152291874445664115324897642232541679844539417280713292980188428338762828563214947989'); - BigNumber.config({ DECIMAL_PLACES : 241, ROUNDING_MODE : 5 }); - T('-668745550681598621582583804095646066462058725641678', '264052064036248991010193468628.12521', '-2.5326276207020802750763062481677002457979951538003828919438534461902054246662026822485046205122269607140121802803694532951581193979232264393931985037548447141995015356574024903195198993082048425773154088271988091290194429231627039216720085750865651055700094296303e+21'); - BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 6 }); - T('3.1', '-5', '-0.62'); - BigNumber.config({ DECIMAL_PLACES : 189, ROUNDING_MODE : 0 }); - T('20342930567112406829.97018880374399188', '0.000000006985017039911170320744871420071412777362156740513', '2.912366634308326816045839714298380349234973210350490510671740572530490331524590455483756080914170139344030457945871593218168395195499092382973594397599643614827558651878878102219386989797993508395998223437229245867183e+27'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('0.000000000001449391616416383972624544', '-0.000000000299724653755519105602388608', '-0.00483574373430966051216532582069414619370642995455351178141233982286869194424'); - BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 6 }); - T('-337166591187627222959837068482769092090', '1877117704.6', '-1.79619312289995660062156481821491148749564673409665521941185999722097554819472027689275250363540788266879788077408771354039041756103204355233164103629434170965732630168917964612968788680829e+29'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-34702909066749522432986714.2008702247872646843785756642799', '0.000000000000000002476390358299324799927908723567', '-1.401350516102878995475924693766672419938287537375658992107442e+43'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 2 }); - T('0.004203823399985374880939201911558602258469876', '-30.354546075933444352361954089987421635', '0'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('57882568444730850.7347', '-0.0000000004105', '-1.4100503884221888120511571254567600487210718635809987819732034104750305e+26'); - BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 4 }); - T('-2147795585616616533438839.9846434489206669901264000913210', '-1360.3', '1.57891317034228959305950156924461436496874963346327377857825479673601411453355877379989708152613394104241711387194001323237521135e+21'); - BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 1 }); - T('103627772268366529324849553.630410311675420', '23163260891816538861.1714438292', '4473798.95051726888675417899776060051418635468232666481643123719508837226240037600651036011666235453789349428245744797512274093342265025892420939793796451741911612407280333125108585633089776466439735159421068'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('5454769299322608063.4712765672977063238418334999673878', '-376136926482592751624136211305629379190205580', '-2e-26'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); - T('-1027724122236.10082713', '143443274247031991054938501287842443698218355835615202.0', '-1e-37'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('-850958478098791039473018.18287396540791729793560758', '-0.0000000000294335687278052873765373825673731895145979468189', '2.891115535354393014802897394422773469737491210520764281227329747930525482187006474623770632071954e+34'); - BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 0 }); - T('1270015001392174006045494316793364072', '7244.786910421467967425356095521101366', '1.75300532244127860350274767414151687963769159401375631795501517657512699951316107370467267239694969494659495421930581375096445217375189104254341619304896714346222864122963749845625721311943952192783734751629518718251020941630851902816827880523985175337987749257873289347276073462960933124079628573486117935680973926155860608261302e+32'); - BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 5 }); - T('-71602452.01483867658875', '-204.3604674729832323', '350373.3031159983558332612139533746082803334770360528071683743002604007218606763845430242306823591323787537781369106490198367441111141615859452576939703204194061350807276956509743788893939336535650658526095790076187579422308402846'); - BigNumber.config({ DECIMAL_PLACES : 278, ROUNDING_MODE : 1 }); - T('-0.000000028223094479', '44442.6649632592195277755793855916583481386708090888813', '-6.3504505191873734040293686726261847082563756408010544180415038483180629900335422410917627289350523968843082802464361107894529456257096178315042158275071578510067665554807050790481842872664581598644850687546663501005684722624857486578461689543722634285457239998977454e-13'); - BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 6 }); - T('22.932422979358020304934246680478393429274710574067352', '211528565242.8951314', '1.0841288954532007179914467620847195221131227334939910738942036362608534600140751399402561684032513047400087366354238496242374175366197555523816850138815579616863006415208737415577091287955865463287026132353216274439491147719937e-10'); - BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 3 }); - T('0.000000000000000000808861271796', '0.0000000000000002679641107827668794626832088949645890066167811339902631', '0.0030185433020608031386101726748810352426529971414538892155683393442431073375499473507563602926171081826945329533733266404736778310882502600600685074990615871410736608696660670790575419978126642171769308295379298142227632588981084'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('34684755663550714671859686849007985608014800679606734064', '-0.0000666', '-5.207921270803410611390343370721919760963183285226236345945945945945945945945945946e+59'); - BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 4 }); - T('-29.6097767887', '2094582945535170617847874112711091.58882529775', '-1.41363591505490062792816445132674890986294627193018559601346859488478309774451032472350323078040857248897695981445555510153685791864888680668348296370546210066543024500299864776522416838451494736e-32'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 5 }); - T('1.4444510910796779246174450728118494735671683', '262235276726.38967568', '5.508225701406242704740928579676368041933489827888814179939945412735538638082118086482847357089601920684152776356195423025587276479703111706351683153933834126084099810335412350723212046189771921914664119815965741278637066001067046048595513468695491036725396293e-12'); - BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 3 }); - T('-0.00000000000632108402301087993380876330535946', '-64124.8518411459466328954009498516942', '9.857463746925857474093435057949453930888381653926164585350740530687752923195898813625957483576990128568102184082793484480444615473947850719426160713252372817129639905393786206342314723564266188565326489109034609279197392400942897133904576331705585105516875252553383544e-17'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('1', '430.3690512916', '0.0023235871561834077'); - BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 2 }); - T('51115228', '-0.000000000000020253678863189062141', '-2.52375029471320468452379354492250112591088396867805999149948845707047018620942327709496959652950081376780178518069046553886384629435879895397024244047202682824108000458935202729939953229898730997812379045044925145332609247011673660831835374681867511305919185514152249981476275854909356323300376589593255397705335919512748e+21'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('1.4', '6057838961461570426274062781546871991467.65553959654117451', '2.311055161595e-40'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('-9077507600', '-12267607209122962079724648348196154806.524301614311075471843', '7.3995747053666635623000906764e-28'); - BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); - T('0.002073877082125619602089562316586690187407497037509383905990', '10633634779540158412389732344427869352.377', '1.950299333315359996089935757578413452760215224571366603621559706707847050361e-40'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); - T('5367709', '-18586319825801360904165418695477252328221555063372161957', '-2.8879891502504949714183315537275737326779496065e-49'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-91.9734981219', '0.0000002322757882297997924962159870628768', '-395966789'); - BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 3 }); - T('0.000000000126261840434056685735897262', '-0.000000019159544606721739674552784487846678207101863042952993998084', '-0.006590023042080043301119526658635347940335423555323218493451122296099211559573316389866508318190663996710505127584468842873729713209918897576245622076744976802695017280162222731403812710641030237'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('-263887360808456263598577582.8894537172011', '74341394.946129048025057557719190951340586', '-3549669211879603863.213429'); - BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 0 }); - T('-2.7414', '1431230849.8622486', '-1.91541427454826801553292977629351884274023231927529150053285840617989892507770478032104250846459608874453059872143150933108757431721820200060727550071077146667751730240784102503863e-9'); - BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 5 }); - T('1011.92816323719278', '-0.000000000000000000202610738884873374231320069425', '-4.994444859174944148565299552059198843558160599738484673372988382621408239073949798611033087706247696171294424632116435229609045693850516224691123681244991919716534719254809180362698236002868339079180080222210782161265799844738989224004396499668298282412352415373360472001693376e+21'); - BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 2 }); - T('-19.62153319462348612851185393518760625231449464', '-0.000000000000053808916279383213645', '364652079085663.35756008412905828833458471774827626259895868550544676671991313042463137534185715416559846302573541706726315'); - BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 2 }); - T('-165725671739.434332748624577701', '-3251752.1884296', '50965.03735097655993416834368968871730975513286676358343713932623804386456774373231595632668090178649797054969198404729491140832350108315948457960249873278558905497853729497704896387936550997637848807504140642188512669070529724318'); - BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 0 }); - T('198266.613', '-40617536098125762.20194464201317602507808', '-4.8813057621471216655921566922081782639250781079457575845537506873802592773421869580307285814698298630452650551148723605635695891125082696845276826375632529610828652601658572550796048466889731769714167027006e-12'); - BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 4 }); - T('1388.6813321798612', '-185.0005', '-7.506365291876839251785805984308150518512112129426677225196688657598222707506195929200191350834186934629906405658363085505174310339701784589771378996272983045991767589817324818041032321534266123605071337645033391801643779341136915846173388720571025483714908878624652365804416744819608595652444182583'); - BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 4 }); - T('-0.000000000000000000015108', '-0.0000001591494936792421404307498927052532604689860195', '9.49296139794790663286235028441599299498331791538678505083552263244627476095132113673992955756042696507729772777733009467225611013e-14'); - BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 2 }); - T('0.0000000000000000036200351239008445', '-58.5975', '-6.17779789905856819830197534024489099364307350996202909680447118051111395537352276120994922991595204573573957933358931695038184222876402576901744954989547335637185886769913392209565254490379282392593540680063142625538632194206237467468748666751994539016e-20'); - BigNumber.config({ DECIMAL_PLACES : 172, ROUNDING_MODE : 6 }); - T('-2.180767', '0.00000000002569342879705165885431', '-84876449041.7193647198135647191422770030303975642686499653379083777932335591803594382779918172540108479096855867315665842323009409099957124145081698832340654265420377829107561623621977'); - BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 1 }); - T('-0.072124536092138090734611783846252231194', '656.25986', '-0.000109902403740094801371230877729215727431508610019207939976703740496942781172080218345214653232029153817208933058925773701899122704228779130267086577563954620049442000002864718863043063459648438653554096695781454620735145983178066078885275719895469456260817170807917461232'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('-359307131619962159.19811825025530774965183285227', '-0.0000000000001461710786257598150256945960423069796062905997254188', '2.4581273874286185392379195369668629096e+30'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('174118688647237.406843877809', '0.000000000000253643104418361464406558253852', '6.864712094047086981098558601064023441640546559713514386841420553566197892333893859635234323e+26'); - BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 4 }); - T('0', '0.0000000000141457985934319753277947917846270747776464846501195787', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('1642.7', '-0.0000000000000512505158117148284471148131', '-32052360332040055.2414546189691600611749178775355592369343117212752624445003723762071938'); - BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 3 }); - T('4717885893920078056911829865657.431584853092', '-8999339354.992525959914', '-524248026195695818126.4876719700911333320623822306784212821636332903503544468818936571950512506149919440800908526182166256833'); - BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 5 }); - T('0.00000000003503722442064426025864124523736182198139487586594', '19878727.11836870836', '1.76254868895848554713860285725728352086352276476314094436383602828400970732126577837102618562806388756525919699687025446195206648968050747835508082171400742564176769002035263450773264010298662278e-18'); - BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 5 }); - T('0.0242828331634036914409326450055226589635690', '-216677733847469401154997246041713647702619699100', '-1.120688902003083822866660733697253592205440940812115823570898409147251064074265391935700656769274621358593926112214501882485711247978430299245195867597122927731729511323535787638860455222207981013e-49'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('134306821469.9623282648087157129750390912074', '-1', '-134306821469.9623282648087157129750390912074'); - BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 5 }); - T('-30627.725787661675008', '0.000000000000146969708544787524362678564649115319', '-208394818843423010.4089388317777900109671479717897344709633071549566039697169362831836702715659548081646155264976857535498387667060364389605584951367320163312108738468348647085739553366917799839423228387714144006361370178060027375368859643159572049987231037962571765691768080406290835329230605989237887222247'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('-313616926697744429484234.420233448292', '3391757405238533705084335628866954577660235820054243.3', '-9.24644333976735419251966122733765e-29'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('90.652813', '-0.0000000109693130108332206625792671951913', '-8264219729.20928448932351032056800298838836060711886882692589807063265689630957023873055'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('0.000000000000000183510738607075753108085477645181498', '-7478880.733323', '-2.453719281675704185e-23'); - BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); - T('208837262.247982980555894', '0.0000000000000015505084559283556922', '1.34689534552033890376137781707228221016449502131156991893142804954373256141407643196422044869155513229468764868109195413956930783902721756601127419319077776546299386731640433061883851593e+23'); - BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 1 }); - T('-46546963780405368862246.0823405754260294675562804325396587', '-0.01390761958249528849584824527107421877663754534627986', '3.34686777304372947272151574726966799973557699630367511193553332579423159137704890041792941264982616096914361988359087220501492414789308720282967059908923617114516684545777751e+24'); - BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 5 }); - T('357.65', '-394589175193614852891.0448229798749997490', '-9.0638573606209612579918310747547404124623960759310836773337953747558837695090056393077211856997603984336916293115109717363645413322567571329624970330425454916284510901420100977148267077559726593551604906469272066046920433882822e-19'); - BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 6 }); - T('0.00000000000009751487004066178233785752307', '-18597314733723089.11864836638609788284', '-5.2434919469225864161384606556852484096160052986071583726466104089126927364263831388690036653122216294440985519930810530252359509972523869092864116e-30'); - BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 6 }); - T('49789784577.55102899631109660455', '-0.000000000000003932', '-1.266271225268337461757657594215412004069175991861648016276703967446592065106815869786368260427263479145473041709053916581892166836215666327568667344862665310274669379450661241098677517802644964394710071210579857578840284842319430315361139369277721261445e+25'); - BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 3 }); - T('1728022199014108007177420958208674215344174555.3825', '-588666929086207208131338005', '-2935483740689377421.0605487526355056260642213116660841854997738884740435033980974641064610189576063972561434384391072350079060311182113390031009286680471380179648798212'); - BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 4 }); - T('423.51', '-30630307383976085980532116610580803970387228670191', '-1.3826501794152894330388744522146084381354593312765345432914921858769e-47'); - BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 2 }); - T('-9515.2288984274918378', '-3033332321591813886435672424588956243', '3.13688969411506724145895334821695451829729415971188096686401420618687400036920673795234513e-33'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-215721828203342422438819162094074636', '-0.005428307259563418376', '3.9740165375364593561423493544693129357510916395057598946136750579119773535795586342835327861e+37'); - BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 4 }); - T('3616875638685577487650003.5374830465863587991', '-266.59599563503209006337010159389892', '-1.35668790901010118453809674370545961440962890333958991555407174854269740988256994561314847256943815969477212950797123255002975369e+22'); - BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 3 }); - T('-2.6702493796552982903459008255862460830023039', '-8038533406414.83615210', '3.3218116348492257975518009761620462080402221973417271560475680951368245899220578500764487688888615787238245471232016170433124298884395893928040595198821754476033715560998841953037888211476285497549032225e-13'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); - T('-38009769348878296499599157.865070246477942807', '627421815071283363449416638866574420.74565186959211', '-6.058088583445235673957921677e-11'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('56.09496062544893609582738876482', '0.0000000000000000634844490420434522874046703288434900', '883601598059066000.033433829367837608177832667164620287855200554410027692412318948979964'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('-98278', '-8060985.0109042125568186902873446125353045258', '0.01219181028956857122921517322141074034918957099314944442622802827495176316355977065901985959'); - BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 3 }); - T('0.0040', '-154.222', '-0.000025936636796306622920205936896162674585986435138955531636212732295003306921191529094422326256954260741009713270481'); - BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 0 }); - T('8402.2', '-1818108861518275982673035599278649795936059734600', '-4.6213954388756712283555758268247951328207148497733913180451617583745755540637584510929140132081173249011067911403347846981153394476908518195151661691290567476714890894890343823183599e-45'); - BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 4 }); - T('-408924775021936773056316995206607551269142185634427595209.3', '0.00000000000000000700260296561489567997776997176324598358', '-5.839611027926231386989582837238996985766296906694071791989506895457746485581708323860424176115555875775665210011339561184448703037754488691130203280226485597108909122742072007197300406956640722e+73'); - BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); - T('-111.5325', '40166.87967437225410802244092895831848011259', '-0.002776728013332867375725737559862094928478860461768509337125110725217390039627146471599824788448991006398336684462875814604512343528251673437752046881700236158997297107'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); - T('-1226004983408597362607.9556571559', '-0.00118298758972138', '1.036363351620069758835204259e+24'); - BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 6 }); - T('0.00000000000000539066579432940051717895566226191048158412768651483177819', '-0.00000000000000179224', '-3.00778120917366006627402337982742851492217989025734933836428156943266526804445833147346337544078918002053296433513368745257331607374012409052359059054590903004061955988037316430835156005892068026603579877694951568986296478150247734678391286881221265009150560192831317234298977815471142'); - BigNumber.config({ DECIMAL_PLACES : 180, ROUNDING_MODE : 5 }); - T('-229538918875558072593965178904262.8763359718491005', '21934297048510404981876490181210410056561.3643780285489399', '-1.0464840444528695155315795229126238724622668373401064443053985968474899338863925553178309323274657390437605690574384405208483639638747002881705976561240023669909259414276437e-8'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('0', '-253886763882308779', '0'); - BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 5 }); - T('11.2384329828122182058323746858865224', '36057265465192473215.6537524877650730204999954521672266563925', '3.1168289768565863696038150015829032837949774431034003830560742387506843565265945568298888006334501600151072193341182563e-19'); - BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); - T('-0.0000000000006121871158656636', '134439.692127', '-4.55361884708389547947153340776111906901971984757667831727672995342666580874652288171852992657664448773630149388835e-18'); - BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 6 }); - T('-0.0009229571213', '-0.3960', '0.00233069980126262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626'); - BigNumber.config({ DECIMAL_PLACES : 119, ROUNDING_MODE : 1 }); - T('236628663455007177', '0.00372369177477415584907958633728378236083725493865108548116016', '63546791132936572895.35864769312006908180499240532216402115163458114234415359785424603118510296859771741453462910174895637657805778025144012'); - BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 6 }); - T('-3740629012216353.578', '501782494616728147584.0', '-0.00000745468216278354512885620411365735420071928485510663217940971231491348794931265999846558280510022104165231832402831258087477102225846141448365685666099359566171953435796867970300879691046608216298552425298'); - BigNumber.config({ DECIMAL_PLACES : 150, ROUNDING_MODE : 3 }); - T('26535222657283.96445', '1120111076064339542.29594363253441930036166374799910424560363', '0.000023689813648231233705608499677191988578459331738405494616918043142138613738659280319351170209913550208565082097018930848396147939716144869294585983'); - BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 6 }); - T('0.0015642085828327875904209897987544583', '-7.514', '-0.00020817255560723816747684186834634792387543252595155709342560553633217993079584775086505190311418685121107266435986159169550173010380622837370242214532871972318339100346020761245674740484429065743944636678200692041522491349480968858131487889273356401384083044982698962'); - BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 0 }); - T('0', '-698581.52817240', '0'); - BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); - T('-0.000000000000027736296540198405443831794791888713237', '0.00000000000000000053738037719305', '-51613.89905056831323805406076687161356090126640792469896970230616347751342461220170936501177825308734004673469683463686798536254076025883897549171419741164939148807267477358513620410703879460253562757461926'); - BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 4 }); - T('0.00000000001256591715812221860282341150225418103068870713584401433953324', '0.000000000000000635189689452025495484496458591971647137024', '19782.93628941421154659632186676990801096388543429251957536315546607636633436282587757025682751349292510444059073957338814318659968182487504414463159517306008647606113126910535053929335226627568743034184637181963127479860158881467353258644'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('0.00000000000000890214462731853', '5317628.7311751812566116393661', '1.674081e-21'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('-0.00114839266817553911910525389346394245330', '902529.7777667001809425', '-1.27241526702556441375203e-9'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); - T('0.000000000000000000407204962527802862697923153239393848899994409151857891360', '-0.0000001191500896', '-3.4175799942310984439068617640334015233505490301524531238e-12'); - BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 1 }); - T('-37362125087003278805530189473081575529788929952146846', '4230081926155263381', '-8.8324826183595569660794205584532649024071331692951422675632573137691333777943539759054062063076302925084987573092009924598975701971122524158676342509653258800084339052356902846798606246501695619424375970323767699300199360334578000639039190186257072208813e+33'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('0.0000040147100402191120243564352917763128645330978663977', '-317962140098551', '-0.00001'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-35617266375149495309772665893021.1474316444', '13674373073710166384962483365654009.11792822484140944', '-0.0026046727102704187210169652514893325409011597372224434685'); - BigNumber.config({ DECIMAL_PLACES : 172, ROUNDING_MODE : 3 }); - T('0.000040834254840742335668405872659119523637014', '-12669415797020896379525878611452763473.1649', '-3.2230574396606477905551857041559001099754080043936904518767855372922219986808335268076538804406342315504659034253910268714992269742e-42'); - BigNumber.config({ DECIMAL_PLACES : 282, ROUNDING_MODE : 2 }); - T('-16197710652676475185849080361460961665165227', '-0.00000000000000224238120646127106715471207629877612723398685033972', '7.223442029394403679469709530740595006960638772143932059581499840317158761934844117055711250514827250660472839555739186117670761465711862291150354072577990327503978652480421676346254715392495979827657528334703698266989371917338922731478832439915670289827284025503886584662445382171647763463434670541413203731381928585592111851709081866485627e+57'); - BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 3 }); - T('-23.039133115581792071142020710175445576681722593488817081748', '-892889380', '2.58028974603570624517250061930128965994440684169508400713064814367038389458725559038455581138169657701606888862313492853952412335781169219416631430872209500352664066852267858757598841639263309414655598210833238939408149305124448898697843175153455179408674342167671430922383688783486258e-8'); - BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 6 }); - T('0.00786213058750249776096994135', '-317.07072880132791759832851338995981473266016498281462549425', '-0.00002479614128123696585325395906241445937824603248289811541609239430304887170225714156997425675329737020495749956365141248689020227'); - BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 4 }); - T('58179886031811957939020607545684641221498100329125196420816', '1506214361.296040', '3.862656440332329948689207721980092757948961935869703841302528169707711053114656380464518174333941329132088927761681588312403417985998137843691102127762600801611371476420924649595974385171599e+49'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 0 }); - T('-190982887244.79496383078025', '-9145156877491356.62835947986', '0.000020883500392962555571626012683706869719619160005169089488963254088407365949376153129484189510009484187082822557964960011800927780290561133548186059713335625764936293754096685594033019625465109185613222836851485410526665657804685359923926827353032489380616336899649913'); - BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 4 }); - T('278.495345646854930302888849449046998413711515', '0.000018176610655120499302149923445166183617964695613772605', '15321632.3400974935114001539888832876943670232394672292722147482367081153193388912118563920139469452193306693644528085977079956107754057270583892595961216955836048628885546197409000297526833612222358469890190521662564411673'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('-91404371703938.19963216515616591161245916846769800', '-0.000351715025147272371586528668014762', '259881907705435031.534278014758666051655316724669124608520618'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-74.8927185683704965', '-0.000000000400520067811668430938168204312', '186988679437.621507382963746866573'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-0.000000359947253971845113537233653974122267996331498573916546', '-1440950295578699316404463977083798390073028875772.4369693464', '2.497985219e-55'); - BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); - T('3.5', '-0.000000000000000016836234136656116236245888747155935409', '-207884968312465103.92546667003183155349004743814016787619209771690581251838782633379621060886575565127581880243136521306493099115438996244528606756245126860536784058895272857258163668115240455868499988697454936544728911201993827436743165'); - BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 4 }); - T('117556281049621160806398580488777450103025706.9231371026749778', '177418649499828062746944976.623253482097691805631698263957176', '662592581901797675.192119029054356542878625972660828883732257538247146459542105138622765462195773596950267492165848159684757962296110657668557838021479175937246'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('-0.000000000000000229584085', '4', '-1'); - BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 1 }); - T('-27482.41873121533', '11274.496907749405091612', '-2.43757384086252069184920908789136606410876439249909171626216444592863484859257872878818492441750312637463955391397020600252512398902369463869453693902640114539746724962640936787663540355005527658071033744852920304697987161866722393963513553644509520778179115083456065'); - BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 5 }); - T('-45.31802249709425519435780217290298', '-3204954485815239802179679775.857745927430308955770167235009', '1.413998941253818555331446628537811274724937711349765542477044901735407723110613295737367282379598586135677189145733895798012063594572507530387122047276011072085198509115883863816026552809059911930382105544260114314246121618356211599622126271146827744578365721e-26'); - BigNumber.config({ DECIMAL_PLACES : 109, ROUNDING_MODE : 1 }); - T('-1518950338708895298633061790684963095021043', '-3', '5.063167795696317662110205968949876983403476666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666e+41'); - BigNumber.config({ DECIMAL_PLACES : 191, ROUNDING_MODE : 2 }); - T('1', '0.0000000042', '238095238.09523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809523809524'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('-36860680116739.4673', '-714191652805514145.216030', '0.000051611748711906638'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('-11.0', '92.08198182812685918733833', '-0.11945876686854713291580457023363018642967812291603764177490126984299571425'); - BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 3 }); - T('7762759.75385296050386473141400459025886087053461265533345', '-909581896823924676194518835256205735470.48970932', '-8.534426400700081650659814565798223953012951504204402488483850831337582374822797477896402516788073305423040074e-33'); - BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 2 }); - T('-1591271411926.40053473052278004', '-3', '530423803975.466844910174260013333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 2 }); - T('23086557378499364903404277889218381.47', '-86.0555991350', '-2.68274901465531059815847482673137529484007583511898815856172936050525354348867842554937549793633192627704781826686889407361744469481462753167316031608964057443721381163096820033545165323541617336506851338883540503282326023398965439089438744e+32'); - BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 4 }); - T('-35624.3903', '-43.77456506898309140400458787880752', '813.81483160050904185495580524836686653849135979858614846344672066639081746900539114730668802472802032712780595218383029863019375886636883378282885915029285478620148862606386024679617164086015472306648498744131867932859587517548250068216147289920361'); - BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 0 }); - T('-294670170227705702811369', '-0.00000000000193374334898340771556343604563781725153836596017', '1.5238328829036044414292208426172989183209184987972877669084679287326238824268223796920096163349419047354678444794286139849932979829555213486830249547979681822716113423777410307342180935614199404906965531176896651795514204856922826004012619646609e+35'); - BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 5 }); - T('-19071465814005.294690235272', '-0.000000080', '238393322675066183627.9409'); - BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 3 }); - T('-0.0000000000000000042840562138379106046743677364876924', '1063687959236630279015.386448', '-4.027549787169180858225888937073650927094456773096715135673350189004623192792278599001027630845979465450698694497072376958248e-39'); - BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 4 }); - T('6', '-0.0431415451895770', '-139.077076948314785281086431901487939280144485671249113584170589951140879837116761189681912503218697276078291273363199562501174135968355116292824981547487890690329'); - BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); - T('-1428.528', '-4016.105413480080402956', '0.3556998268036336236019839154795036575638731219025051906248327348719789958418008313874653788722178165455256345382739'); - BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 2 }); - T('-0.00000000015258178233850394438994250905841879821765', '14755907523277.56634277032360889186640299510604837753256822', '-1.0340386187552674676180995717053737232564985414921072525663046479303516290546819134010340682363818160499550865789495738008179669417921132539131792844147306134743886812917237124265425164077922144534818111568408918206035227258578435157194623225084430640121e-23'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('-57.6369007429645071825179385904840571', '-0.00000000000251998070491786549064370599326540639921481941388128845', '22871961134656.0228874169640075792992353663071336186120390190464849402168612832'); - BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 1 }); - T('4719535908934856.3188423', '-0.00004590396071295404717205573913226', '-102813261331565415043.593555510997302181233867427985290551695275659397593471781285699080638438522606241559627217355231631403584719339196104541714044624882017919670228131612981213086561134510437891197497983156524326011971'); - BigNumber.config({ DECIMAL_PLACES : 178, ROUNDING_MODE : 5 }); - T('90560574.19', '-0.00000000000272020855863261404655577977', '-33291776067171374153.5540943533184444211410447691379595883136496085169692808045011438164893709653683535108332731017664700664245666237236765678686152489938678460963372424576373927997080122723977923108'); - BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 4 }); - T('-0.000000003602759247', '-0.000000719730493542043086033522', '0.005005705995961868568728717106450635438948371755549645411177827166383370746646160424849871824305534599445074248844765752914200145'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('0.000000000000000000063462657467310847324181579614903877724471554', '13969995806267346.9', '0'); - BigNumber.config({ DECIMAL_PLACES : 171, ROUNDING_MODE : 6 }); - T('-1.728745149', '-767317068494361925851361076.142570164977510444085', '2.252973666273530096229549790286979780117970186089063237972420102279503859520303271326548392437033536616731345224561019790666069443796853779977042e-27'); - BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 0 }); - T('0.00000000000000002116383397', '-6823032369.118301639796304692868231186795960115', '-3.101822302029452578625626490579297286885018019779182904580999360172501871148189661358829847714617205201664224490931065093207406815423047393e-27'); - BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 0 }); - T('-0.0004848148333238926', '12904816184995616640289106.83115522218980318074075', '-3.75685190996819515204136529412265340589567474735175608258469795499860194982608552080271642438597220858511e-29'); - BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); - T('-3549697821.51855627492424017', '290982157953066117.4482628012016389965745204297026795936', '-1.2199022257890821446248659415361277198823213590856772993149298379670675001360988681054176609068796708301946e-8'); - BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 6 }); - T('-0.000000000000589896254543183', '-182450.125564367539762047', '3.23319182553848337370053683172914277707287723324418981014560956775014533063194875083593814991638259413198e-18'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('-52567567268408975665728670459', '-5528146859.45737855527854987', '9509075754468795731.23067171751344965999816461361464529796218412174775983170160347609903732'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('-7.128160985', '1824386707845419063788460858239964352989420358008454019729', '-1e-24'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('133731.9168950012128850281530928', '-0.0000000000002348975210018', '-569320256444836795.120657943689337'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-1828885852435', '4577369497510613328213004467.4862523980219630643429073057740', '-3.9954953460270867059316053550429e-16'); - BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 6 }); - T('5384962276924.7562', '-3656385265688062076488.8610159317578440532521443', '-1.47275570970539091925240064198808393503364100875127069126594220364228690441920944089764455848379636537284725160364682917827636874926780902198597199254290630859247756413733602899420346140711393097196957739293275522019177795427051028635910732725397954292579436468259390202220758910177e-9'); - BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 1 }); - T('229522331372685919956947636941213450406738405777', '28721824337908628916041.7882819687632375', '7.9912170157572421163737667451055954332362897022080422205503308822050136342594378736058501894053188522333644111075165510849628129643509065127252231218573547879337330491201718325065774957676354101336339798132463847229472902359804448509748875230689090832696250286968020408608016089190806915943220633e+24'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('6.9', '-149.4151', '-0.04618007149210488096584615611139704086133195373158402330152708795831211169419958'); - BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 1 }); - T('-40840218134364408934771879324224478.145919388', '0.0000000000000000073477184901600845136727313', '-5.55821758673209925541290695401272680473214350128299305493108189726173299818117845506881743385012211620613630018097693973844680507619740667183672017643114514422086357033642080339728200348214695423536813560853343978e+51'); - BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 1 }); - T('12605706179413.7336018312', '591552.451730980920510221774523223995610069098', '21309532.472610568119106423315516425618079661279065633564500459228761336953937661247182038617123827270516078298256526030896984967360669136324756188007889569189524517335240254465978156043649977161219485081250743812542272905731642239618889403866223482333301662567682941922492531309096993515817683719967'); - BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 5 }); - T('-189980552124615498634852.3412680945570', '-98438166259033658191926119099723556988067334644973932', '1.9299481018845270002606424984821256661251127640026552657218981689402118620345772277804362928174596675134369904635534716484532019661569378787224035839752269439438346906126797024189025889242554798404329502307467e-30'); - BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 3 }); - T('63412676281.59012502786', '108437062', '584.78784939405795619822307616560101932676855446341768278450775436907355531266606983505325882030997852007462171927896755446952260657892040638282877859601175841521785236121576219023713497512501768076305866715569995800882174399'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('0.00000001480319643891516212235956154351000246', '-11392872494815218823394014490229.35482719444421230358', '-1.2993383754318278619672346672281872056429558627141365608245e-39'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('141019805.5245794482857879701641156255383520086847', '12037849497473127330444746727219.13742079814695496478118532', '1e-19'); - BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 0 }); - T('119790.91139929349140550187348217236477074350558725377', '-5777.042709591300426608239758121800881756', '-20.73568042008956432783242383568890624173925278021387847056403962568560010280639205565758815896562330713607927801972972502586274862079959488911752046494242134509962944654289991533473427653855862679701399756845804030243780967782611774708498946144916920217987349054568600325416309659037783022980538299553'); - BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 2 }); - T('-74255792.01', '11273332303151865455500762856529058.4269545819', '-6.58685382575293402521065454122389727987534301575856973564632115180134424260238975425414484985574343165915358874653525167997572e-27'); - BigNumber.config({ DECIMAL_PLACES : 189, ROUNDING_MODE : 5 }); - T('-1.99', '2.02957886703023899022226515613921936539173455451807', '-0.980498975588885406473946445648953510849056440161659698597036310751221238034779103703880418567450972306385580730431672961731585138039525359894208853302970439152882195974847086075237842378535'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('-0.00000000000662553885261713805709882997529921268', '917951771', '-7.2177417833176532507597612939288208857325686231504639692012751724404048e-21'); - BigNumber.config({ DECIMAL_PLACES : 109, ROUNDING_MODE : 6 }); - T('39727772236789.745415749', '946.014689422', '41994878812.149085517024235034701213624977960411203827202382884903169217672541435709342895975537328996297696138164692102'); - BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 5 }); - T('-1595.683177902580188', '-12423.0973460576230232424592941920350789759736774350170', '0.128444874370155225701375887885074854165362738492227119742210901355065584251862991433857904300091236546058352594909589629238188878940586337336952'); - BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 4 }); - T('-13.493976805206652118496494293', '-0.16348979253970542348276', '82.5371210984287032613093408457949587368693736972544114140604882723926664186467093312229488466679674328566746900163426115646881522747654468512043240548069515232115505054041043654236586559116321308407785941539806699863332216939080583339071637502536225880211523651412461839262830413'); - BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 3 }); - T('4256019223285.117109486383376260331', '6347253705.59130348694460107880', '670.5292431490464315565006956437035888523526622925340056227797990599033414418301666634838939500439366360217087970207352162016381512343803454554519122848066147363635388487'); - BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); - T('325654995408953940788811351545601523220557315848566', '-26677382254056155772637251420324566.4784191382920', '-12207157070646982.62023879621977307694573373293924452223056955621477692382163169310098782785439897905655670638191390612196820236007412'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-3', '941521578462320.6890776751075159534215216358050676', '-3.18633164510106741091267096465494e-15'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-32923697.423', '513696534559174976027235043562.124993789', '-6.4091725772012919164236668786392e-23'); - BigNumber.config({ DECIMAL_PLACES : 245, ROUNDING_MODE : 2 }); - T('15542298519313474911058418.72788768331928021263', '29511759411951889905334398058562085033.084491829576', '5.2664764246549937207087888914081974049031532401831172175740365945958415083991717537075288380475566640317106332244118190767918153345055546048673577292715961083876478499560347073184014288780631047840719212831088296938186648685718914177e-13'); - BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 0 }); - T('-1.12256870617717945', '-0.0000000000000000000445831', '25179242945806358238.8842408894850290805260289212728589981405510159679340377856183172547445108123930368233702905361000020187021539551982701965542997234378049081378369830720609378890208'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('21212965439.09', '0.0000000000076513', '2.772465520772940546050997869643067191196267300981532550024178e+21'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('-811.0072717709985104220988105449741680', '-275402309857048314124231166341712916293', '2.94480925810667295583330360825035e-36'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('9182839.0746', '68850679.253189978618736251808', '0.13337325316473972439557570739378753733468691854769053680437'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); - T('-201477774196321216539699345869.44341', '4362213780815994556947.2225104487786233007', '-46187047.2929075102200110122139396261424149917096253084092809755489163075432139180096466543838373814559121092334614709185768932599734974855062988675758217463162111422954427524579668577371494'); - BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 4 }); - T('-0.00000000000000000162497948180306124987727256', '0.0000000127628196175968174', '-1.2732135456671428799684241530363339471843648065021218638078868442224903439326677033461828865260973177741496216477520897956921177038969114744220611220290397197e-10'); - BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 1 }); - T('-1099.1', '-319070272161654401441.760571064317512569242883', '3.44469571719658601001722198091244729270089019499654299748251331969283599923290365473093617892225689845095818732374241666866795197379284694299052066619870651198361853249026931810914958359482224346368e-18'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('-0.000000030444457802993411251880', '0.00000000000000538575320059549682', '-5652776.2541416121645468563480292840570102150387'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('-2684648478777449095249464885162.42', '13083270901.6469542166649572467997272605933562928', '-205197041241383984713.62344092929525276034444224561252194494442443802861'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 1 }); - T('0.000000000000000008825076533991651133690937331074715', '49838857501697.065449', '1.77072207838856418564359488847778228637386696670666431055887841490967407432774528735148725210571318304572775693241529135473717030777856707077685915816700763523593102371020255623e-31'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('-123625272191.482431410149371422742706', '92493676964796850.44125446296170082325486889035749283499', '-0.00000133658079393399275278411266929789218347946479983512353'); - BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 5 }); - T('-0.000000000140212864427137205939125189750693043695025658650', '22155390052.012698318', '-6.328611868171538667033374848667266324532595948449808582737249329451673293319698937110336331587700406339681892563755866630832430750615073901097289112895387181329075364673176178589871483017943891007850650173957270122611531049093316129186590745747e-21'); - BigNumber.config({ DECIMAL_PLACES : 147, ROUNDING_MODE : 1 }); - T('83067463598.29947', '-0.00000000910613126665791940460932', '-9122146514892753007.25307779712104966225214974042686574696869979233280255121577231812223871258155921230428381673406249197882298170312132700634002615364382765094077612'); - BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 0 }); - T('-0.000000180596160502695447667203361330505780887313', '-16170334', '1.11683630345975196101208151501697974134184859756143565123639375661628263213363434546249941405044571126360160526059634884474247719e-14'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('1709.78715732861097348777109', '0.00000000000000002550750771075103328432210', '67030741565078944966.81126156108524563679472368241914097296'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-3.9402', '-19451.16121296143267106101495847', '0.00020256888300192674675476394574738203903804914212881041718398712778080934978'); - BigNumber.config({ DECIMAL_PLACES : 120, ROUNDING_MODE : 3 }); - T('16852085015685868216273178583268706959270537', '-8.279679122', '-2.035354844961088120810049259692639929249487284659532244128916859732381305199088124758369108208055988476989193156802145937075361940578353732003480412172427181653285e+42'); - BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 0 }); - T('-0.00000000000015954089825738435141606491172956616684830243193202812988', '-2282.06392289696374', '6.99107928821096822747817981700541416638571761368588755711656665485343962126901791730019652918881078496090659119106369631946376845226228656646928401876201e-17'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('2658723965607.373643426228569731544749541191', '-0.0000000002228302887', '-1.193160939259409415927498445919997926000618694167674881264918452713023e+22'); - BigNumber.config({ DECIMAL_PLACES : 230, ROUNDING_MODE : 2 }); - T('-0.000001025670161792', '177358.72067465596720082362710534170967140', '-5.78302638793540424118732015688191977938203379499468808076300287671520828824108916250620754932005005147207111576823717875111738860492014468910575747731644732936140664190063060573417083398303296274479988720384527920804785e-12'); - BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 3 }); - T('43.8855', '0.00000000083471640354269637200079292279683344588987529', '52575341533.65326030736186639711903713669724682246138276450276583035004456628921559087539851313965580321243924083223418552540548023654725009934517347488424'); - BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 6 }); - T('69744464973533674437480827', '0.014', '4.9817474981095481741057733571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571e+27'); - BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 0 }); - T('0.0000000000002104555829946104', '260707122664.26821544855529423087', '8.0724907261405961557182695598365682878850140259175437261394871546289916574631753203097799856792251265637259569870329555911204800220026041842496357e-25'); - BigNumber.config({ DECIMAL_PLACES : 150, ROUNDING_MODE : 3 }); - T('-15.52', '-0.0000127', '1222047.244094488188976377952755905511811023622047244094488188976377952755905511811023622047244094488188976377952755905511811023622047244094488188976377952755'); - BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 1 }); - T('-0.000000000006691479923316420761654', '-269215447654129121833832.8', '2.4855482780145693638156447860203068386625148732371475778611069020621957595393031858115547797e-35'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-63493093791273308708650506328518413196107086277044337672', '-0.00000000515043959036041389800', '1.2327703815827152129163943525722905688706355755915449037746266713107010518102485820641123862185325367485568758201131275691695047901385e+64'); - BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 6 }); - T('-3658835.64177782026153128822109198750833783004092227', '20.67945951', '-176930.9125322405615199412057115213988655078752066605632479608264191040261864174805021294292038293219395655278419798506619673252765782755218634822047145467197948057008961932970752000084551532846130948032693529522522806013124856569329166185736543943164209'); - BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); - T('45778051531295128912112577.25515382107', '-590096045233311557913296150095628.1577328331764265837', '-7.7577289156709143373890110544254716492605157877656798994570156268353810414142511002435738518128374969853411e-8'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('0.000000000000450', '-46819520498356100556.89958075119', '-9.611375665750360153824213948502663e-33'); - BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 3 }); - T('-890676667835024208655.8562559384730393609188968820', '1.268724660886831979041593230958513401', '-702025187413355567917.332631378741137017568745342925049809812167772725546547178177177893219778896765841958659135867183861091608513627472034838554880467502383246547224140694972969450233548193240881496406582468655774475300092581790380126614792423729944474799506'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('-161583898858161.495243091097703604385260740800056441', '-1031721232402171097737178962857047.50352513377727509247827640', '1.5661585104916705e-19'); - BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 2 }); - T('0.2322852986919915819487', '-4228631479.5', '-5.49315540543290282121875784990594141936269431302662183192026724351967734529560818400940535305401043756288860120330095556154978011485997121163889779438038163996976885296821477252118157770054504462286993197889993620097865990925492754327872141074808455651331486522837346720367e-11'); - BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 4 }); - T('362291709337', '29702.98144911035', '12197149.634884588131898627093259138590396217368507496905900424168440987002718998906655848764209034505964672026155524884794663019047119'); - BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 3 }); - T('19577879840223040854791309921057161620103902883692965226', '1550289603164722', '1.26285306953341181773986800752863568296423539995840489362299595394540800547070720600249950048388235064574185332837590502504535223440086470685375599707071995673476555417932190595002896178753469286888696906345130193195920868416210053e+40'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('128268741773463976359587229966588766.836519219481523298', '55542856042772090089299997891982741248650398071426.0647', '2.30936525256619136991671889449308284783192345378e-15'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('3605366393988004038264', '3270067838210037371504447023', '0.000001102535657474770205907291620216720491894675888320040472677437'); - BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 2 }); - T('-5107900606850205.10509537139331424857469927944862218451497', '-55809910067637089534572329.17839895461', '9.15231829017434966062677255809816064581335039416471635068327168150666664320010207736777585390290146335359173570400936577407214402855687751387455824457146249117195986477464600772097935225607535051864006266253137460012432714456993427219667246709639e-11'); - BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 6 }); - T('-210186755512817759902.0', '0.000000016138846800926505007313555572241590', '-1.302365392679427871669903019652757365968408528609718176805559988224718202378440771561804855738159133160238705609950191832437338600449859316657702468980049332244538412273065424239861439746114841537314e+28'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('713642996381759.0708956605410621006', '-1', '-713642996381759.0708956605410621006'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('-0.000000000000000039412155477850300674494759057281', '30930044681711744589506752200428370453855', '-1.2742353230790462361031e-57'); - BigNumber.config({ DECIMAL_PLACES : 126, ROUNDING_MODE : 1 }); - T('-95216722984153646974137871155619004669.012446', '-2346132156412237630839388541.441', '40584552206.028059454314637564440437877814822300903317177937403712045180025504844138332743040154443693994780096100973449653841183227890711'); - BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 1 }); - T('0.00000000000000008010', '-42343973148', '-1.891650547765929260597310257863570851894117585982557595022589777691779486578093e-27'); - BigNumber.config({ DECIMAL_PLACES : 257, ROUNDING_MODE : 1 }); - T('-21110631740213789.150281347', '51709.94', '-408250942472.83576717128944647779517825779724362472669664671821317139412654510912215330360081640009638379004114102627077115154262410669979504907567094450312647819742200435738273917935313790733464397754087511994792490573379122079816762502528527397247028327629078664566232'); - BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 0 }); - T('0.0002422764050174274335948315574423519', '4979.981984', '4.86500565254710434701105853322604911656644258253605762442051436947527720212732400117855526764090397962371423711560158126066023936844828553500244951890171336009395491017904855135315284706861300966505665173908388179421975997252925001746351699251448536967237349748613066468475e-8'); - BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 0 }); - T('-301887867798505974609761388735606565332.4414327917145751', '-7896380.9688057948440634', '3.82311680491476885532705197932070439704243382676893190450305477046319579257737500617147163152464991403311152133971009873364640320793083329818783543984575299786203417030207921221390513866621507110943349218019734e+31'); - BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 4 }); - T('0.000000000000000000012381275648586218116297477279458092864906184', '-0.0000000000000213859794471590528297144209516939621923019859775833', '-5.789435868101409898717886783754238396734477374325409573037359950839440519861636040271589865755404020228728328876906872137186554363041565006866859979057011231414765306037820760800308143412855326198877526021613631788414731e-7'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-7207521886683991503673062482088593645417658022', '-0.000000000141962486386662859416170445937465277624', '5.0770608983649966933902911723650304777078841612539525923425798611557449528040281575583192345073445230041818721694e+55'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('-45067323655953518766324676389.4', '0.00000040273759563282512111289380338279407', '-1.1190244999386967411404579059048991017787258853452058206e+35'); - BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 5 }); - T('17.6', '-546940187178.007', '-3.2179021422450182717427400018457412793685338248576080576770120614250788523277884291462520838553103162433514444541441958936748491687531110673675272616804597222438994160480846082855648768279509382083253965434992275261011914009553392394809396736e-11'); - BigNumber.config({ DECIMAL_PLACES : 268, ROUNDING_MODE : 0 }); - T('0.000007779982457407784', '357', '2.17926679479209635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635854341736694677871148459383753501400560224089635855e-8'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('350869895535216933723706156739.47656410122441612', '2989537245424772437710940736115509163.95373', '1.173659555746271060991574e-7'); - BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 3 }); - T('853615488696.88430067100370883523771307947112128638114645614', '-0.000000090647064237067795919913773', '-9416912680861208776.14911575047084587656950474329586820268555071383254994632642150718177250303169918724243863525021179264226171033305'); - BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 6 }); - T('0.00000000000000002110520727', '0.000000000013935384205458510350589084388', '0.000001514504871830735709539628947282121885886507186200880530031189059320698236995623419999457743013451838258222218714718141365483666129864032939645058535242913524519694729177005352821077005981412950406068982368997244414662605734003440173775397993730269'); - BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 4 }); - T('-22663.48', '3.4095', '-6647.156474556386566945299897345651855110720046927702009092242264261621938700689250623258542308256342572224666373368529109840152515031529549787358850271300777240064525590262501833113359730165713447719606980495673852471036808916263381727526030209708168353130958'); - BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 0 }); - T('49445708241272432876427619.153', '0.35844660678329552440268060981', '1.379444171197458299554779339312387309149652227797554138577226515755706745694985348801160476588485092723310605933828890399332952726691750149476122976533039661480039631964971124434450544912190676e+26'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('1.25130059225890071404911', '0.0000000000004148665', '3016152406277.442777493747988'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('0.000000000000093697825639163524085163793663571', '-0.000000005371039715417716', '-0.00001744500703843268184158229549330982927869052097542021439702412807851164238'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('2261595855414439074374436065973193026548871932787850', '42337383750944990650990750649638958.0', '53418413114956806.3'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('-232621787.9083173', '41087199429196013050768561.69', '-5.661660836952040501e-18'); - BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 0 }); - T('-0.000000018969801236682335996388305979', '-4388885503156541297644054983', '4.32223652748266453959749962375030611685928609409494636023493218408047803036295752118254156706828354897728e-36'); - BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 4 }); - T('-0.00000000000137744075241931218632613106359', '-6238.73931', '2.2078831699401656619727088157334786921878933261598327627509090454366172257965367685799328582620324297538247354656657388045278013067034211435899859710599127438136215375859325655971350404125156497362926356991826286134722304977990817827584464e-16'); - BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); - T('-1959303.438095', '2889888493.3', '-0.0006779858263173492805436058102733579267267571427303416226242946299079615079901325270971139307107050447661644385011'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('7019950897.7372695151921954668851', '117.363477', '59813760.4404585722625804232681782254968468597773394188040287865704592239'); - BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 4 }); - T('-0.003169732053907503197517770280538974', '0.000000156625575435089467216331529236', '-20237.6402774726865103378380596161285582299798137396117670272535823698231077710465739224814741588076876336521261442604209960984835023352253624321967597807523348738924684203'); - BigNumber.config({ DECIMAL_PLACES : 260, ROUNDING_MODE : 4 }); - T('6', '-213225.79784407447', '-0.0000281391841919035388433166093861669087355979782195949132797654870938809751849143076609548504380199123964305059886186790326541139082358130877861248322962685834195203522795019544256462362019380739862086538584735278770959498306389775509049463765306473064864353'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); - T('46018307459476946722640199958866584585936965059580666', '0.7378872289524195128948239', '6.2364959920514225208189707462460938536324054233846307167692004517257770330969118389754942910188566343918487982791386e+52'); - BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 5 }); - T('1758.60', '5.972', '294.47421299397186872069658405894172806430006697923643670462156731413261888814467515070328198258539852645679839249832551908908238446081714668452779638312123241795'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('-0.00000000000104472613841765779256', '4699961885244795.304715138650', '-2.22283959726886960255714e-28'); - BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 0 }); - T('-103576.266104809732475504797329445668175432877021848', '-0.000000000010206979249125078053239213828423165049856464708256114966998', '10147592502814981.608099461901707761514115696579082515481026939161327890586126063203439088718117414872208077236983832836370281848415122763503751912788549593221131534121660613801321155326870401610733123666239317202039948139364820112571379118404647511829664746447551824719286929884387248945459656'); - BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 4 }); - T('289089783845176115544983362960027936616906135421', '2415465.4623151454823287905530', '1.19682847200842570746470433564921277740325812369454166392911351181253476839087697641651618533204719976318019498765575980962784562310559707313342747638e+41'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('1.51948206297088', '-1.4', '-1.085344330693485714285714285714285714'); - BigNumber.config({ DECIMAL_PLACES : 286, ROUNDING_MODE : 6 }); - T('37.3712', '-4214373566286140383918948366963469680.5719727857038101', '-8.8675575176722797637891925549550655305221125311630136117421804284615644799017882302066574474219457327639332866882667489404981625138364495820686617272560027434449611133007468516863756261048278416477879231173260431732040719573195221291332551309519781e-36'); - BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 5 }); - T('3459084916327800755999859853533101658210694050493.50737133', '-55565567173194124106832053381436079030630238926246404', '-0.0000622523100600425159258046767264183477860470024105630063674880415988452828179010818540039192472214229844675029568766226667323791735684640679460007367174703494647807739875934006880143501281'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('9.091718494075587089958936014281964', '846920006.984', '1.073e-8'); - BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 5 }); - T('-108769159009102538970617089802029180606819984591', '19686403949907609184129440659089188476259871920.031864954', '-5.52509027478393313009625967168640316489376795740060113616412036315215161618326216438304078567452621472771603094478601128550466465230325052515519012207085527176440657542811505296'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('22052389027.33485', '-78659853225.0158801821', '-0.28035126081727313025921625863631334821384768286106477652983827115892524426'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('-472289.0051023', '7275138392179136204016786909830406445.9522825', '-6.491821593524825929191994686052177926102470330343403643706673549279e-32'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('-95997', '-1000674930', '0.0000959322524449'); - BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 4 }); - T('18.95', '-328165444377289176426.04865048409', '-5.774526332581603917229492189094958069284594013024686823171718969960332233731097139189242048527869769399128197847178940680014215659273051383909823631914083560903214983109804407646e-20'); - BigNumber.config({ DECIMAL_PLACES : 260, ROUNDING_MODE : 4 }); - T('278994712283340206224.21854159877108206051702828796771', '-34723609863169871132627603777287159670.5040093331', '-8.03472661346941991801387784235950425032188676784988471647100796612576403513593787619302396274728180210718764642331657392208098334098594773199746793142415885916875978151830718150919003516032896586845948873804156021406634084573707035621396568852e-18'); - BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 6 }); - T('0.0000000000000000000972546578', '-0.04988029275454903638282417120256573343325610929278929', '-1.94976116677122881389945277835585419317517470009302289810650076495173549953596809704096966723089562605303942344061695587461758335122678825462932209791291053461267005949334031298444308797612990362103595349927091387693195432735102433011013e-18'); - BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 2 }); - T('26037949.16959376379150517513441005199287', '-44022561370642811786685.69638778683207742981', '-5.914682916873076302365484167189391665819491176490411854183046769038015581635177759387884978205817514539257256691868965751873074552530872030079398462630499081182603118468267592463439706260719969605887188835278192998397668842629934549827921482827639806639590805e-16'); - BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 4 }); - T('-189922524258793.904091812', '1310441193729347545846650.028284831597173783869175037', '-1.4493021523407606074224793842169257897054772924175924798541459480154918742236807615459391201127324439134129605977789832982868697025099901675626974960833269012586261748073729379637811396167574183230904073465042229451672811994714396608371022478535e-10'); - BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 1 }); - T('8.18823120002549907007828445053314159', '-7853110539635870.894', '-1.04267362068803464002038631801823544454457809836451503713389101518939278010752997928683294393382026651645350414376288007203266401450837970127456111551610134339650345871438195850832577378875985585788779170326329630923843857770224283384843698090669406231927e-15'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('-2556889.80899338225067103085421627945148868', '15770.7', '-162.1291261005143874825487045100267871108245036681948169707115093179123310950052946286468'); - BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 1 }); - T('-1745765992613285237444622197.3462533377', '-1049854.3567414744989123088', '1.66286493112413518040449334373743340570121736454096698647494370246284541430957134925844230406674233408981395991182808259768546619543734993070487448401867107683629942095510291045207823832848062e+21'); - BigNumber.config({ DECIMAL_PLACES : 261, ROUNDING_MODE : 1 }); - T('-828.4404', '129032823171733082535.60543204126299', '-6.420384981404363260952005499506289257407546631909609921551835770845053825828922137905141803951283209766857148573276449940426634687022015720243534325635824564651246340381756708178115004109063998084902261807711991759470479934810915009703648369846e-18'); - BigNumber.config({ DECIMAL_PLACES : 185, ROUNDING_MODE : 6 }); - T('393.9', '9858.7509519', '0.03995435141041743551907119354848544300207498986431516654326288499739416974570709461761548203289693448818643952786389891480711276734975090754630263539236935412741085899506563434482289004'); - BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 1 }); - T('17100474.6470033624819411751910818628060', '0.0000000000000031066770', '5.504426320149588284183124023218977320783589668317626840511581989373211312279969884220342185557108125498724199522512317823835564495439982978597388785509404421508898414608277590492992995409564624838694206060044220882956290596e+21'); - BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 4 }); - T('-982203639402120441618285.996664949754', '-20977019352046787437373594831539784888.129', '4.682284088689101767496127863114841707206611582376296996723978066403411697098086429648889406596665542722372956980749026535912449937807604140100900200692618562464065367132344503949386896546763327170637e-14'); - BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 6 }); - T('14475227', '2014821260.4', '0.00718437277018123726366055175263327293804051423637637926525028244634458890981831531600608277957001847805198988657644204398032964095677'); - BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 4 }); - T('-0.000611679', '0.00000019686629381171931402681051711051656363000724064965465', '-3107.078353316301284844835873925501830130197672042673768991588542825246014136510602221917172848876502274347'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('783.3', '-0.0000000005479231481682049677376602530177232057364912125123543', '-1429580047162.996541786085197058352270645280499186368943362024219325965984273456045805890262399536136277423288691'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('4166351.5', '41090838718091189.59548631131809378', '1.01393683603875129619526195200979608739624e-10'); - BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 5 }); - T('19714272147134795647.91883239281421031377430579746757360379', '-635974373425873808225388.5850651425906926066', '-0.000030998532285094658451383721442546892740425669010262098538600374999954084527984169185448974920237247721989742975769378809712226625550199548067226462433830592850463056352796665263716825634528691892059632'); - BigNumber.config({ DECIMAL_PLACES : 155, ROUNDING_MODE : 0 }); - T('69997.135118736383214475966956573491502499909514929387803864', '-0.451705085340016826797235994733', '-154962.02586704705107557384663765928929182378524150151127352941380284326205103847435561970612036290081468585836113192038787180418167351061144309357943121176187502'); - BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 5 }); - T('8976014751.65926576931', '6248540232642.7', '0.001436497872698025798120039826215245596852141969997181952349924656646541925181809008585359357286473104214780341982626555041402494577855286942611527876289357791544556345808339453538622944279816398837801705693961969156205097220106525517'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-1371490976879618.65662926741752245918036169608360801964', '1.322', '-1037436442420286.5'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('-0.000212269787643082190991110677031539365221739458527649', '-909381108184943052504270363131086.37985713567934087961', '2.3342225358821987633602722399538098288e-37'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 4 }); - T('-0.00000000000000025356569319264890', '0.000000000000060551077307488029798101666947384497719375135408730217437', '-0.004187633060680355209107234400451116912062840840606191254582820540976341239421'); - BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 3 }); - T('-234326719750005652006087361103622738', '-0.000000087057668722538597936562221800066176', '2.691626403376686868539418767783174083406922637791778346443262148335713711143713338928015666665436388834450445048717686882619607447483781552818965925727776895165815961573142459598532970305230162733333237131e+42'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-771653694254108901612202.7169160265998376872881527024224', '0.00009482650876205682225149952394752969440939785722762368', '-8.13753141740543233641460452710486198782360762555804867393230406117209772e+27'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('-0.0000000000005107219351354923562024664953531892971314085456565', '-1160011124420.9', '4.4027330806026074008571554857874933855773347657789355794864e-25'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-795288174.4574307', '4559973606995642914971163.583580899404618934146736', '-1.74406310869288021106307943769593813236987773488323655344501e-16'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('-8.612007765524090', '-13999047.2997772612301744', '6.15185275190913571054999384993849034181939973779247534538446163828701e-7'); - BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 4 }); - T('-0.263943140297', '-818576.9698306194778893254825339781067264013652', '3.22441444146193485213250194517867773508755669887704297546778241954593923897941567128764511058857435156966098425947158502415542628311464636164385048393986949014766354437552983179699641755306640774665195216900707661690201216911e-7'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('2.6', '0.0000009459053499984248899416364525794793966732224608', '2748689.39054455024311508957013802886653557439848477380287527550187431210128103908253032648530489'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('-151768104593154859724315', '57427038317652308564282015276107264', '-2.6427987414859136287080553682292e-12'); - BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 3 }); - T('-1748845231511693.8807361717038370446032862', '-8668024029496691426707575608787356373', '2.0175823527490157757238932212360895953090598140524870419904046329640290655284692542458356585766620622039498458055487423809587665534291306660806433669807164194043536615966112104954334754782472965346545192279899749793487269420823166516542780851508472232406362586693e-22'); - BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 4 }); - T('1325.40659178', '-40.5129', '-32.71566813977770043615737209629525410424827647490058722036684611568167176380856467939841383855512688551054108691305732248246854705538235969283857734203179727938508475078308390660752501055219448620069163155439378568307872307339143828262109105988462934028420577149500529460986500596106'); - BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 1 }); - T('45114781600358843806855927931600798499353304364', '-0.0000778222166466967324794809548809484357520931491', '-5.7971596729471725646029704109835564712187545693754512950562123697550650286074638380281562528931851764274331620751977535152074849768298567008473490045402734891603038534039003641661685902255333334417697847674614072075386588065975968049310942952503e+50'); - BigNumber.config({ DECIMAL_PLACES : 233, ROUNDING_MODE : 3 }); - T('-275976600932.5996732310744343025336725717', '0.0000000000432797771705404369837199068851730938526', '-6.37657166868342122917582832608735580395947180420812733591498732398467102725171253578696241440488943552525652166805676660718134338698555877652415509224466604810004448768781000266131265048575786043629299808147594052402947784923423804084867730031264541605431e+21'); - BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 5 }); - T('3428275288823.249', '140.3316050325250889289455899246820037', '24429815992.118575586294806462671677334499792697128042486383144200096606525878246271367479990010274251652480635740788790729149526282874785275642117284146859843457494411547447745705755294290421399471178817917653228203182220313104343673909563629999692449453215963299511301490117989076030061420640610696662737125'); - BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 1 }); - T('1295598819672725183443768504932620492590695.432383112', '-425.0747990843755672025470763771598348506866', '-3.047931381637974365833015282411567536659164074344897479003051318599919928637194587091627583094890988166328924090519907928606818539850357023098e+39'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('42137242731484001.470769626', '7595072.10456471722', '5547971388.732317753317430808974178330725397279426343292680713202218165708256199015504992004246717'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('-4564746416979756870043297247811.429909038', '9287625891499021342342740.865037869', '-491486.8956078298201183662923566114332423968698292'); - BigNumber.config({ DECIMAL_PLACES : 252, ROUNDING_MODE : 4 }); - T('-65431486230422821154422019104587706263', '-46.34878936', '1.411719424259473713995234742083621626293110150827896403117615324915144666035350356775748155161738187847243481916913654635314944933871299718452883447655168700181988960585010628635759473481099787673073323182049128715365436246207920370155704968773751807009442026125016353609457038901177461089e+36'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('3460528225527697228490059.1020736685', '-139.0869345490386203892337525827663124694441167221', '-2.48803256520661930591177874206866445631948289295546019982373607e+22'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 1 }); - T('1061223587948058437603866147389396780.9985084605612479200456', '11.0881388300587107809840', '9.5707999711475415048928367278114126028068354361636129068569091869347895252587393927761992871421130476524401952835495682859834224e+34'); - BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 4 }); - T('2061423998368628681610977.4095730690455769815', '92.43439', '2.23014832290084748934998912155212907834084424638924971539272342252704864499024659545002677033948079280882364236946876589979119243389824934204682910765138386265111935070919e+22'); - BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 2 }); - T('-35478049164259528012602794052310.37262570318745851801', '-120.85844886673814720', '2.935504261135984103745235179540829499263088068471534420022963730663410758278110046039014470700781287136966557724408418099034330481887689712316847393721245457503300049717446123602653438945484136323534105583978950070026638208226878312691121881841762308937589640143646018588468950023035733276209299169429729881009038295261e+29'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('58240249403771631000777.2772383065372126721106', '89334205106617550570827871258178871053.1032269289975124842', '6.519367283143532077186073752825536492973646472801073519547689056279185e-16'); - BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); - T('-40.34225260397', '9.403262543363267274168919218785868626111663185', '-4.29023994788310742889803172788586500220763588388824254800378486089958356487519450173874239261808451223313911041600422256961513576269041505976155113541372841203198304695784985219159552875947806003769828'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 3 }); - T('44.62359264', '0.00000000000000000509', '8766914074656188605.10805500982318271119842829076620825147347740667976424361493123772102161100196463654223968565815324165029469548133595284872298624754420432220039292730844793713163064833005893909626719056974459724950884086444'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('103967584366772472.336595', '2754', '37751483067092.40099368010167029774872912127814089'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 2 }); - T('-462555971046251.271344122602855919308768358217259393', '-3.055', '151409483157529.057723117054944654438222048516287853682487725040916530278232405891980360065466448445171849427168576104746317512274959083469721767594108019639934533551554828150572831423895253682487725040916530278232405891981'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('-32847', '0.0000000000000233491511976819489642385565516074255', '-1406774906800936559.517980211071083426303'); - BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 1 }); - T('415692.3', '-22905092881845710647.21046525047649096618781616152574040', '-1.81484660264998315529359187348996358620192053847002157908168627895250762732773960746130670363611620706796565573076739e-14'); - BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 6 }); - T('-10.8850939943278020', '-1725830767.805', '6.30716185931255721045642445982803498707033528937451147668264872303697189676723246358857957873640888632807115004104149466525392914986234396779693817216752908392502837298203767609009120808394800015314703210220184883152422771161721715449527629763903877627450698e-9'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('-5828982166839', '-2530842049129393876126061719481416514738', '2.303179e-27'); - BigNumber.config({ DECIMAL_PLACES : 157, ROUNDING_MODE : 4 }); - T('-0.00000000000000602747842966530319581280', '-23433562408877416818725756759901085206127862081710513393', '2.5721562622428644778013955184819204616672887257338672839068268897700165221686673020444e-70'); - BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); - T('-6686989907764132164847697467.91010577472080555271328404500', '3840104277358797454607051.3716878414419091882', '-1741.3563343033504672028961429350882844099788498086333729167441297917213706486365143891864974783182330623024209824925547467547139517698279795476396133010142739641962484960492840769082977225496839577329137852357621350574915161422221604946375994862780445342531'); - BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 4 }); - T('-0.00000000003902751692084172683', '-12504498346563482', '3.1210781783634981382002718961446159874134497721641183297959243278618714264003419753748418387796581000883888392691538751050780167097508950310957277458852260252274738530204746670572526855414600366124697167159377653841844057360786988812980009007846718984583e-27'); - BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 1 }); - T('-0.00000000000117269146565915247632078746166430393529745', '3463399370659839541.1635820926861206453216907725558034', '-3.385955069443041945170208042711952782299470857991519685678828932435891658115505684e-31'); - BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 4 }); - T('-25.1115098319161', '-0.21967644068496681816745', '114.3113469683713937946156843238326298664685462663520088713697560975106979107142025453921149210455580216758485585857103959170065242500772645572825076570732'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('-8830341471500879023580257444305688839812107797', '-0.3491487234', '2.52910604555883048191613621243035277837481785190453885531806587152482196359077393665189039038600133687328269349187028990866990522125e+46'); - BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 6 }); - T('2447151306220717.78975', '6954776525480', '351.8662745316352171322737211569150475104131080897673715140561848136814189424199965803557435860858581762522970607454417682877578803614938896151638650941011141626626838598414794855361782953827742752'); - BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 6 }); - T('-1874079115850446978829432532344776929053658368056654', '2.00440383024', '-9.34980809543779201688576659694128867598036589180297674145198853568919929245724509008260135802084137609884634362142327254027369055183571180242627513210134604876287676435786374273397427191298380962527091443939965956588e+50'); - BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 6 }); - T('3309595721.5135853', '13491569197898308418678348.55', '2.453084346948424629527410734568894106615535492037059503924148577389619227603737359727088369570843711133724043687011703961301416281193013274370117678280467171453393323504579886397986049844383624286946170302440442690164073272185249676868724479000011274218554e-16'); - BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 1 }); - T('12.93876502087889', '-7.774802489', '-1.6641921179586238103855193638990460533099723866181419081448771193343687267526160303465941847156292435559516372429354970331774302131728403833925355939675498552719568642407991079707542651634297998949'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('-44075712087.130556208162637063382162593045726984177432243', '1633151753348657756009830986026131168245396', '-2.6988130157994531025295980860007338998e-32'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('9561331527260011.860238515', '-1386801682025745223459.08689118931535066678766543059603871', '-0.0000068945197076004923029241479618753856985112741157916335328234'); - BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 4 }); - T('-14.3282790', '0.00013418549230457843461307881151074', '-106779.6432678223023167340906118022954434575578075726562219369094110425569515987966776429639111600297832547723781765761070520612067703'); - BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 0 }); - T('-51.83165388995427', '1081.8055622', '-0.047912171744197258667043669966443809064748770617848095216606383982225008382379714852606809789612301921292524853686687764748858304585263667818845311535041763533650280209291384617730152765154640096931829215917484954488062623865847229972765248183709144548896459722787696348932676'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-62256519716149385934020127.46542677407975072886294352999', '-11876862.07527449844404034888226684', '5241832339347976398.2986832735128984206762592415015035098746132828160230474698420653742'); - BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 1 }); - T('0.0033839', '-28017723222276377139799.667397599419452154750208110510672208', '-1.2077712286448469378878071879650813615964361612047393615886594278881080903538967517470449657838356210694332140440899117875935163613376532770138091654226936385922666463209896446556186966830358243694049773549284694056e-25'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-5689976.92052713959555', '64864418019484087', '-8.77210818235966351469448859911094562992015457063633724875591976612e-11'); - BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 1 }); - T('-3177288176694802395182792477847503', '2956453360037850385644156506897.97722423096145087654803', '-1074.695856745774857261671032523151808160517894399762101835624715235395775564894922080523610727933160178604528470274551769508330315840324674940964333110394947961508283102906770117688266163231'); - BigNumber.config({ DECIMAL_PLACES : 175, ROUNDING_MODE : 3 }); - T('238254.892691038', '18663341053635.134050251621486505241', '1.27659293159962982973145884977739766882945439086402137678794663634541272576595521064591007820498446992630047787544660893348191681967370578130030405334404915890607347802e-8'); - BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 0 }); - T('-21080513784312.5875809194', '-0.0000000283227172569213694679673374964863081339913', '744297010526454094977.8480955755860858865792637780324063888648701283296217928392639696832503837212786584943280257524113256408225953066925598360259112116742113304645585972873071723544226385931422356071529726570296480881324981525597'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('-0.0000000000048003708894111750186258056661324741572443755884810290792660', '830770927350206975534871025853.4495416263379', '-1e-14'); - BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 3 }); - T('-11158191.57566175085899924969', '32105907106840146360137208781.566272655424685570053', '-3.47543258582608435436954087928228377351514395561283518785501826162995103831181883939296416823201733488693469657832630324629185907405922890409836229544454883013018681334913e-22'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('1710604.5260170025116371745961647180445765301364', '-560968243.14313759730585446497', '-0.00304937854669345657270558697711139632828290719202219753'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('933033911533067981575740796571.089182214611125476', '10712260.7710', '8.70996264447703839019753822394218844221796554579039009467742913294693542706327009746017692421614033167191650323576686948e+22'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('-4889776737017976', '-26831915.2419617073262596020127958488720039437440396160986', '182237335.38674072242834807428666'); - BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 3 }); - T('2994308611505779749339.98076968508900834542159716', '33729821', '88773332402380.0704231422031467373932504836476054824008701380300832310968979052690496045027929439649264667013797671799088409037213686962643531372431534694477032653093534056999590955433768830258541840468112771781385972964398476944185384203491622442941514572520263300537527311514638633866453071304469715389'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('0.77114010', '0.00000001544745076048635964683715579904552482439054', '49920217.3845104278359801'); - BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 4 }); - T('0.0000001158784769118582451037900', '-92262.50', '-1.25596506610874672921056767375694350359029941742311339926839181682698821297927110147676466603441268120850833220430835930090773607912207018019238585557512532177211759924129521745020999864517003116108928329494648421623086302669015038612654111908955426094025199837420403739330713995393578e-12'); - BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 4 }); - T('-1905164836259094183621458036793', '-0.0000000000002119191328576672846818', '8.990055831998299280754398020999734599969171684819825456306111223717733602469589230875204517145004450211688103882778288906066024055292868261004790511861574774426913037125572776223194050078016846707609200828779293539775168337517365189566633004654346864854167971267818365476168820219291761044886920712480598235932e+42'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-0.00148298079335633960438658541245103786116719422867960710972532', '446099089723666157762121662.2199495195296627803688164969', '-3.3243304627116917320233294e-30'); - BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 0 }); - T('-221661455358.0158412', '-3734926468531111.4012457', '0.00005934827826615602702905532801242019557525866408427474506520094743509070433423637262198575680678092122136081587312962157385925167062213762643400662744666406943535086617458519686154818234078999784450299287576'); - BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 0 }); - T('-487468630455734860583178863', '7233658695240402066159678.1909', '-67.3889453446952294845578835831800685384785750299258689385686510304913401911915485239695068020143233285514706714142721988437466176534558177387249009114319648593327434532847823027143442509783635201'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-3518.2465822386713806003560662862139', '18.20148', '-193.29453331480030088763969008488397097378894463527141748912725778343299555860292679496392601041234'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('28868885283132.483101371744209989312567250440301', '-13.690', '-2108757142668.5524544464385836369110713842542221329437545653761869978086194302410518626734842951059167275383492'); - BigNumber.config({ DECIMAL_PLACES : 209, ROUNDING_MODE : 1 }); - T('0.00008092803856989090972487071983087981392117', '-109847536178733098782550375365898462491167788311', '-7.3673057571553330936236108342591811431042031160239767226738036778704195585923832418358326458431087176636756727400242450961526838248593373264293428948109190011e-52'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('-0.0000000569405702003177777853', '-25555828558864548264055.74474282403966840416', '2.2280854666544085352967680979046e-30'); - BigNumber.config({ DECIMAL_PLACES : 171, ROUNDING_MODE : 1 }); - T('-2171288.4486', '0.000000000000000000055717014671377488', '-3.8969935151881305595576794102449712477486632548951171103787538034269665435544950511587092848269699275447965569984148843898094563459433486477738307108383221186281253668872345712957638802519665004894e+25'); - BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 0 }); - T('0.000000000000000154352057679285508080118341', '-0.0000000000000008327490018877', '-0.185352437924747686289112485985623951760899942552857077514319074266339417408404071044403097559384968024157334155667794634813015768092750798345376959880386422359912231069858602543416943135076519388094196872160260251796251598842167155848450205169721666073590494798412515'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('35629224439.64994424509872', '-0.0000000000000011786908400', '-3.02277944568144300205970210135848684460803988262095936878579628225498044932630510643486463337578834497433e+25'); - BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 1 }); - T('0.0000000000000000007265987100666922825305760938534', '0.000000000000000000034968942900303494473927', '20.7784007694549483427480443595448440562265860748106932180244471958482188972338381572078942144109003370023489288836078913802446538237164'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('144741686718969058111442192.47250397516797195', '-614331853673346614569773445.1792365794386243247729132666413', '-0.23560830494707068951348895602100294027267941568697771020733205213594830445630673695773014'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('134003403004982799175417212755213263224008578.3709883475894', '916.9146249', '1.461459980743544132943158738302869262304953102847911043166959087730437180858625434277332574368887678541378667456785158e+41'); - BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 0 }); - T('2792105056657.739435078105978624209057218', '-0.00000120336003392343834112697723524762816062390', '-2320257427491880782.15612128857738532345600925006371338603700713948269590575559319799041893051863149715909235241848095174688236969964928266185980950903272554525880773722420021061334142493253067248417227243971138413723410648558033762820672260856277647823190175199648989'); - BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 1 }); - T('-65091467280.383835790953440271622641702327026', '1.059204789467664671466097697415383492510', '-61453146669.6799179059599829916905758673401606316056158856484846822718684342246349479979097775388085917544272956467886944886402095215559197299864944144469993143872440179419806472866788983700256855861932327075669384997067759262890387990032346483310454561393378504352541577289814067303723408831173194342378'); - BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 6 }); - T('-1023348806.0679074798380775219783213362', '0.000000000000000151659939712375133301696361', '-6.747654047658864798589709976003342586651565147892624899992359136285817115084968004669549101164627826980622915369817502835649704114949268508407291103181337647795705880748e+24'); - BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 2 }); - T('-1165840153287026617.68986944747727783910313076052', '48.267069397', '-24153945285095109.866876541236164370543110368995166943095689601351414735033700724434309702948381803119067042619272864489631073260662749493176982658896024625366794568142982878186280533422210249215309325319136280023609820406267082401708881194372381837276351099779616064681541411214094225'); - BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 3 }); - T('73320748375038600850644682237490423304443305401017.0094577789', '526377526816301.14', '1.392930827015086100907904721231632852979496225797366069222533008934593820631811850533482818459100336136735731831376528463931896753604833420775786254048061308043455372473930830227743505530945705321569362495728707850766809999962086380693139491410802069430186999301674597058811e+35'); - BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 6 }); - T('42748478697.9', '0.0000000000000043253341664', '9.88327769677962239583598245427810190106101486346421495300816811359326838067999869023946311294187639763120430333648313050719483942807161694e+24'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); - T('-0.00000000000011460156257990541054245344333721306657047394882990', '23.805277020198898', '-4.81412430036690624688051063135752691051516271926e-15'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 1 }); - T('-48.29732', '-0.4149111638986017876826399134154088042771769402628', '116.4'); - BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 5 }); - T('0.00000122636345318042979192', '-6606.7238', '-1.8562353903464676272981171091184408223634231538482053692028112330047761342770224479491635475967680077680862033312184172130822239004451798030364e-10'); - BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 1 }); - T('-1115707285226495734659592826355369803105.231111', '-214852116.644230', '5.19290804602114593170397252579872000334370327190953074503451950236511285274622730210996844528026444243674676328984645739203339637730319142795859169646826504321814364261404491412481059750592946810333047296490861370812342286084651495988454527203064362372720805917601831781369897755570956391830568537156007489858677001851564e+30'); - BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 4 }); - T('49652987661086037.5296292215171682253960', '-13701319097835764961648176124149.596057367455124052609', '-3.623956737780753655975029546379676183351150587483199178348626935704386772986645056852675041966308897928321370825145e-15'); - BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 0 }); - T('-0.000000398419', '-699111.71950540209040962542', '5.6989317856360350361079966207736852761119124700408731205507402271211303625616929971009028239272785e-13'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-0.000000000000000001464462226612500495907628601', '904089632080463.478000066862013287664215568029871589680703', '0'); - BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); - T('909542526768456176056.9039088317095826561751542295065394056', '-91528715317691713440596947.07188818303821667', '-0.0000099372368945797869024243894885179647849231211363475234353293277400040279390429701016105501304251053981296805430032358138272167911655588694370026737247770001237519502367834244453088763280055671260580303363780639092'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('-37675658823045629839327.6939712033', '0.00000020858283046563440689173411', '-1.80626846126018884079357681865934657733425863485985689131722082253812485438e+29'); - BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 4 }); - T('-0.0000000000008051935140777843875', '3781540328791101.78099414160922', '-2.12927390446525247183697072436064047026733682810153455189805242700278780935e-28'); - BigNumber.config({ DECIMAL_PLACES : 180, ROUNDING_MODE : 3 }); - T('-79788532804.3855843186722426', '-6436885066294376933477997093710889.3051043747952', '1.2395519258559436482949012081880847264651623745780336439536272594080277362689298629178733144535860149469047276701410083403243612574394342076604395395337374163e-23'); - BigNumber.config({ DECIMAL_PLACES : 279, ROUNDING_MODE : 3 }); - T('-1.15233980618423550779019539', '0.000000000262317044204810653513315057684632', '-4392927686.713781043665658802704079647291209948732015650288330350130089457081538493345699700649488483211117289494629010243025530170916414954661981597636789845997240316772989193471667398140232270716918902137771289254394804793783830170821128091978572249746936896230647309780857628596586930432'); - BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 5 }); - T('-2635440250307.494374339423692143366', '-1913.20503430950', '1377500164.93065430293729103024316756326271491462644235020506228325736948867543286176349958803432506413914045380299581082326004195021421682941730117321829359502351075893114309049576294052943693535469720518607061902331955886557770604899197645422721759753464884180470235134319880859109216035078495218481223027'); - BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 4 }); - T('-398995078159163783824093908450987512.88678', '13533189345602254479145952362663.97823517257', '-29482.708618779595631311912490468193073725167505217973892316362112984523453004604676166840760827793507582011594563403294849695434675874086880111968025048350658749146438959577844605412802841948673660872923452202435750119123069929560559248884402056973750465608878142689895507'); - BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 2 }); - T('1456841073106834402673058364402', '-9563288512570322533464', '-152336831.74902767953322140533492168547849338573901143359749345511451353409078576515933799850582805558831948128594748'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('6823114855903180582542653610830039629749314007.91457341019', '511573354536314886209121920731', '13337510242470672.728859518840837799500819453683025969114014507637810443154172'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('804308622822673252042594266437331', '-0.00000000000017127916952571956504014122391515152365', '-4.69589282251801747072524056790005013329141098980694882904481522034e+45'); - BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 1 }); - T('1327338845330940369.3440913237592551098484769197269562285216', '-0.0000000000000000100708128148990971925011685823459227033', '-1.31800567613294420729059324226791112791721893312050679794233693856880972324721013740879015943598663127566733985517682047825452546754514951887772127658650332732880593220298636429476216077e+35'); - BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 0 }); - T('12809599723874306328578534769132991.413850364570554', '93552681959241474124530331343.217039412570500660081006', '136923.91768581389650108010225305773276536831542420193410798071091442532952747245381630988656768192039773622397820646305499553838364543606435056776697069887808678855170166253841438302622913791696997798926889833425075460417622104427087'); - BigNumber.config({ DECIMAL_PLACES : 204, ROUNDING_MODE : 5 }); - T('92.05770034059258726828', '-0.00068350633871652052280267911147479669255963603602', '-134684.486633229125217604376615567334207228726022455521171642864029090117603616311471771447213553658424365113991266814885624701388727689877284995661020869247297194037263226378735346047283582271402239274627645712'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('327.83958026464581667019173', '5.8388838271372963836980726', '56.1476456751803340795992076616782297591294867004211964493385476349442238983'); - BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 0 }); - T('10151485093.13558', '32082406615206935762889249564492835490.2958249076343285415727', '3.164190646571948754494164868068685254870663897934497411075459212737349374361508675609394079887555800528727933031717867383389584213738297e-28'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('-0.000000001416146620903033732150372087413820928589152648292511191785', '1808541258342889907972831260108293782', '-7.83032521027806036966513935535044237e-46'); - BigNumber.config({ DECIMAL_PLACES : 190, ROUNDING_MODE : 6 }); - T('-3.970180705', '4283020852569477484425.2', '-9.269580610652880975553277102990123209568049596218445401220280846349150800083200622476066571961139462999336769617051143673132898574207458057109884231273064007618382385787e-22'); - BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 0 }); - T('-465403163396251155924610402', '94693648471.277126245632734649418747702413262546442853', '-4914829779078785.745522257726399792574241912533618479616275646498931721538962093999738434326372960554938847878482068857038560126215073679417152411438671356963437181078388352153640620328770501894440910882944774789661871451975337378463498692245540049'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('22784528', '137433232463170293229014656091.94917137260989993751930', '1.6578616097169842596313106206568537878490407196e-22'); - BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 1 }); - T('1508891859829832195943020078113860719740059', '8427264227598.14255930651475752', '1.79048837093349567082839342340165478991791187033570768831222601661950614620881880281108997158442988596564789856390531839862903958538966660995006571221175712128493312928391510525049740705784554667e+29'); - BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); - T('-2', '33052345174297530737690561696525075090819.1454', '-6.051007846654277445481381127100392180493461628111763888819589149854336397471882009909893828920905967409894607022380336644903604617331795364861543784543857896e-41'); - BigNumber.config({ DECIMAL_PLACES : 144, ROUNDING_MODE : 2 }); - T('19166443511349220734772320190057933029658', '-248410421.960797578899574112784500636525110606492113', '-7.7156358256071626421946828089961251848104408035722055184738308436850079786677819889455814428497990568651098248146500104096217189478464864520929840652994007030514882685896702292e+31'); - BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 5 }); - T('869990945706127527941951.6028964', '264809219315230415350762164563884627537914716510461', '3.285349913253908694977615253205313522510309402540499671135205471547719045915829993299043276187394972360009815212407188218163514093845186015359182656134e-27'); - BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 6 }); - T('1.8967364206774576', '39042043197378509277.36490403759503157', '4.858189442310781996978618315371724779315976888728376071753132903265063924033431239723923186120631212722357968803810142584877732858170322358714466660436764688927e-20'); - BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 5 }); - T('-127020205694.320072252', '33175946.51398854664452', '-3828.68370133049110471723677265828691882007244137459849148798319455734349287887603616566424440989978287501021937066058498924323885417711325379379463394850829390147505292381428119749615347236918937394847286266333502899796772910994119263665583146416'); - BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 6 }); - T('995833.0', '-71436513031902123918710.026147240160934246677296', '-1.39401121042299589316481093373783347104285713377297550860450237655536185116559232149990921e-17'); - BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 3 }); - T('9960245080825603121369571764597175075392172082272442.2959690', '3517164318937025947332571456.6808240054', '2.831896430655203379010042620019114749340599702558126540940914590566990412655839023657834467548851544248079962047559911628059257497547087987138327283131471498982466333748683153400156972809168989e+24'); - BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 5 }); - T('-9876731185802258.2041950981685631561679801432694971185775360', '25555073661284826594464196186322357634450162887923799643648', '-3.86488073433543296192731481260672277307051469727164232987761801218915334990305136402773600753633619592459863678436794172026865503508652583376490432776528624447154406e-43'); - BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 1 }); - T('-80104044547726619487150250632400996592.71', '4272.12', '-1.8750420060233939937817816595133328790555976892034867934421317753246631648923719371178712208458563898017845940657097647069838862204245199104894057283035120736308905180566088967538365027199610497832457889759650946134471878130764117112815183094107843412e+34'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-533009288906627970576196.2140677599821354860739', '4323.128068', '-123292504992389221668.5994818110856812432247551681830028080491276345875766'); - BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 5 }); - T('-2.304177311150875227399745240724', '0.7827323864847599213', '-2.9437613045486758856056120647071522765307303317354334273788543602211922467393766378263152630511660086265141043812'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('-15757239374307854529803752212135410839205625.5095942', '-153372.40', '1.0273842865018643856263416502666327735111157880814409893827051020913801961761046968033e+38'); - BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 4 }); - T('-22873603522632572608881934832185522999858', '-5.4', '4.23585250419121714979295089484917092589962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962962963e+39'); - BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 5 }); - T('1.5', '16.52', '0.0907990314769975786924939467312348668280871670702179176755447941888619854721549636803874092009685230024213075060532687651331719128329297820823244552058111380145278450363196125907990314769975786924939467312348668280871670702179176755447942'); - BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 6 }); - T('1539204014.2471351835803', '151.4109', '10165741.13387566670286155091872513801846498501759120380368916636781103606147245673858354979727351201267544146425389'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-7', '0.23', '-30.4347826087'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('0', '8209230482735460739165186919608149282477470698.2294', '0'); - BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 1 }); - T('-0.000000000000000000366305078080800693730700231992405389522682478', '7573.3', '-4.836796087317294887706815153135428274631699232831130418707828819669100656252888437008965708475829559108974951474258249e-23'); - BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 2 }); - T('-146.828450146824261470512713254756545536706012403919', '-2815589250628612087.6276213220856058132107827928', '5.21483913585915105735562444285912806140058931853713521740460168303513600371076271799398361239235995441791985696356368950454780176530371750911781708107043329536604156147712430154939691939218413269881214834836092467547838854117538071365673144696622106569007601450379007764482806099e-17'); - BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); - T('4512052524672305897.265', '-1.8', '-2506695847040169942.925'); - BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 3 }); - T('-0.00000000000000034362273847356363118876924', '5060658.7069537365150528928', '-6.79007928358020683444648292494539904606294894775127848688501939514515634155387729832273768343261121220907783647236617946983388e-23'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('29584612', '7650501680259620757.82500929209', '3.8670159469850665256e-12'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('646304382575445766656839911090754', '-9148327617.085430116961', '-7.0647271242058138680633500159104055166439e+22'); - BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 1 }); - T('-3518675702504903072849000894068849825144.04550897025314', '0.00011257304003184599779106351', '-3.125682402740032892348602449400727106773155867864740358040696311851215410941600069428017367819515323122665135010254120082918699421870646135274025286054615730592114337431878423493538647715953190243317164292049665233617651339998766154390110154864465465421154558745741279046960497564843584046885985152e+43'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('0.000007627485649576687977948632632860', '-0.000000000000000001070915397423760605917602397873082686921788', '-7122397967127.646311926470197392560654705419469647370537358465793959152137726466118190529871'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('78448720392088325568153240870741230', '-225.683', '-3.476058027945761336394555233258208637779540328691128707080285178768449550918766588533474e+32'); - BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 2 }); - T('-955580.4286602999395381199708647876353752088274639645460', '2308830210418995525528188784616257012374815957.4471484847', '-4.13880771460836762090822812448952247857193141177901649634837191989696162967613192232796316148960798341406162621040048927307855250075780082528848609e-40'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('0.000000000079890549573400209160151699521092756991271729762941451', '0.000000000000000034223621070685574534769411054519363538517252796376247', '2334368.69255868678976612159761060389346642283506161858161083226'); - BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 1 }); - T('392612.0385', '-0.00000771322780807567554574944613911', '-50901133516.2354417708251692552125085477579615119932380144211358906899606110554765569646198387407301584456498931592995249838402498049991140248550128087021278571863547122574930316354407132299952209559089519028557587891244707617693805'); - BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 6 }); - T('-16165760656715270945449.20', '11739360311802910962496.82574517924', '-1.3770563495237468315611292717072871722828542738767818161481929374632943157783094610685524312107471094651457084909686039611424402958382877271680633467400222148604724510781819920959433511985578942327565058522196139259283144564826'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('-0.10742409258651041437592142', '740443732.776', '-1.4508069665707939812775376029905143691315099815767611283e-10'); - BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 3 }); - T('18334486488933.71818600193026', '-0.00497779489229612', '-3683254711299790.69472913835749036474152498149832157095610540001503904250210449184057638706664664243096832609376659291993862179095742768407776463164703901128047499470567292802946532746611102'); - BigNumber.config({ DECIMAL_PLACES : 173, ROUNDING_MODE : 4 }); - T('-169.211464771527865854667597189789202157', '-207863104972306339678126461763328401499174.35669', '8.1405242548489765516705633011568534975738448321155198096150599940351703480180572220311973953069989762960067645428582069850004977379662e-40'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('-4900478.0062417814076688110824', '-5183481028346496739', '0'); - BigNumber.config({ DECIMAL_PLACES : 241, ROUNDING_MODE : 2 }); - T('-382384972.45206392942023251390', '1.8621126566852593208270898519899470948019288807309513549598', '-205350074.3251196059517081286768166001687724134586187243415322283131112184630210382941333111621921845286064018978475277815759566903427949736669849609499572640981965516051499352769710482818966175458505605208966970468485753842204120505245279253907805798'); - BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 6 }); - T('1.6033950', '157773312887888617232452.615166', '1.01626502648096688808885795466311274662353690805206632535320280038646985382353142458366424079548341188330380007934396600142682064751849155511107926997010556056411335626546575938027322497367274697905331832951906139866418111926931e-23'); - BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 2 }); - T('-0.000000000000024390446132763317501799186808123', '-0.0000000000000024354', '10.014965152649797775231660839337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337685801100435246776710191344337686'); - BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 1 }); - T('8.949256091778713416170336309585927', '-43008284888707.48280038127255', '-2.080821431251373754814499907029371730352966993428672863906646674096708362709492363642217924752489432535460090943985374364641805148191609138738073328969757095738599687411085195662649012224e-13'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); - T('18151693389219154844', '-592994940854200428966333872416765666', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('10671521912.60667718', '-3024025622624891.3456608', '-0.00000352'); - BigNumber.config({ DECIMAL_PLACES : 185, ROUNDING_MODE : 2 }); - T('5555656927652001106840363134907735956048033.836016280597', '2685506242203580183806014224551572002073098.48081277379609', '2.06875591661009566816977833083780350234457412157752718904474731856705838607234088404595371810042544568346884729968885236693445088564691418441019321720748173396897313212434579346666991599'); - BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 0 }); - T('2.9', '0.000000010181819887079948514752232854449658976070', '284821380.8692399779070875087772384638067450533772092269132336223510842187598584158556549024889239940050693282697025539090545926350671722284746095741123733162997837478788306693323573641756556850011157543869286195074599971462832'); - BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 1 }); - T('-3668.93876418621891233619783410276079274711495027795209501', '162988.89', '-0.022510361069311036551854533361769386813709296077039067478832452935902563665535730686919826253188177427308082164373289492308340770956842'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('-4010277866851.50068', '27234712318840966.38253364350322623014516951710394626', '-0.0001472487691407407145898084930687792129497134339296916237025'); - BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 5 }); - T('8.102188223851484323844340549478', '-0.0000000000000004195', '-19313917100957054.40725706924786174016686531585220500595947556615017878426698450536352800953516090584028605482717520858164481525625744934446'); - BigNumber.config({ DECIMAL_PLACES : 228, ROUNDING_MODE : 5 }); - T('101066361587081.237795041132080784151662054701', '-257312331557433009609776883.75453240003575880303096299495321', '-3.92776984201874030615107607567103526808277180288080272777505065283222319685695700758169673799188082672350927719231465634048337408327667103561182032875072504960716517175222617441892628023599454972201808083721814472225e-13'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('7.0556320038072082229252602780', '-15504182652402646.4413', '-4.55079263e-16'); - BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 2 }); - T('-17971633.8197599429906', '0.00000000000072444175060445516360', '-24807562243292692471.5663234061467186799864528993333315852513700731685270144891208065879125718993132968525127360803805813806975273460804298287743355060498501697470487114941400057032058166324121919574399010655184635124552427006839896177716886467257201446426054622642030940056084459367696125930734507840625793302262'); - BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 6 }); - T('7738.1660360868845160451665257', '-0.00013322685446', '-58082629.567826280089486145822646032920531358164139905641663229583090766308857278112456607796728131203226187766288871667772917859521457923341260878704078652162152083884004657299480010555823791683327265430057050676688325078391'); - BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 2 }); - T('9542252.9492073016487924', '-298.5208', '-31965.11917831957320492374400711776197839480532009829800804500054937545390471953713108098330166608155947592261577752706009095513612451795653770189547930998442989567226136336228497310740156129824119458342601252576034902760544658864641927798665955605103563972761697'); - BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 0 }); - T('0.0000000000000975125214469340841699893980567675388687742530368069', '-0.00000001148768872931098176730951514125236598', '-0.00000848843694712319838366658450360791643626601576660960889784368089967445990540019793195644880675265919312989940350934939057591033945093601894142676408794632249741346584699025031667943615669681250164400946134971022381325666049668573820379043934993559074372461881237'); - BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 1 }); - T('0.162194827931997338728669312400303856617210365987328978465167', '2623516118358157462098460478.3811723452565119574874', '6.18234539506095031216263229216523168638254707932597128419287812998721307505199639410335078779694583526697941729e-29'); - BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 2 }); - T('-2059692816797520379.32842416453296', '-12964127.2753715000848947850354508669649149', '158876318709.891546744316310394864047495425378327410507201874903755769032658054249861925189372821353920699812490827867514735429449171802287289068638336250267160043818229820423'); - BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 1 }); - T('0.1406934802917583885630752629806', '62667.219426460', '0.0000022450889249500247590193479664257778255336779588529003922703526817168222409078658356042819731349161949708289990136671786988264944723086110991979668131760414141394303539478675646256521833168369878149802399309202930970932634782087084011676697387518594564070573519569509169449295645'); - BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 5 }); - T('176248024513059823373194289840565927902352.86', '38.7', '4.55421251971730809749856046099653560471196020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416020671834625322997416021e+39'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('76455549372627137533803060035463866722472396559608', '-21131.89651', '-3.61801645850607743364360532898823413376977571425784e+45'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 4 }); - T('0.000000000000001135478555683957706303513555462359', '189016966284140000', '6.0072837798964993072829358730209731598369888466198213610171055146478207626503126100359698662414225938118284270540405919797956454070946483927169088392e-33'); - BigNumber.config({ DECIMAL_PLACES : 146, ROUNDING_MODE : 4 }); - T('-142219283571886530729398730594', '-380575073116.33401952748452383263252', '373695739995070573.67226573743700415270692911992196491865319849810652910152625659145875000291338564642791685801818688506705202501418506516688339959731985528258559282'); - BigNumber.config({ DECIMAL_PLACES : 227, ROUNDING_MODE : 4 }); - T('4.64704', '-113.6', '-0.04090704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633802816901408450704225352112676056338028169014084507042253521126760563380281690140845070422535211267605633802816901408450704225352113'); - BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 0 }); - T('21459427321746135387.3702529390027221334446', '67497.732766399482159783161817146867660120927', '317928120578720.9029750133284438224559146706091088705985299404418477748542993137160586137448853914641138705825744759829365714695336888738466247648116155976899562989458218232552756997250792891197249845116756234257939037807888079628140065759592184047139872124822303289269063928647566571092337'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-0.000000000035432725433359029849418222952863128809828867205625722', '-297913391087344615896316467611573', '1.1894e-43'); - BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 4 }); - T('13592077261045786588042900790480874993069896724.51', '-1709631102395704692.8133645882281', '-7.95029830821352022772024744598055088210575090053257820400303479970758903263578867251524731757531943220074711936359339635075091337771287393434924401467755980575e+27'); - BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); - T('829.42257576637751660492485950362157', '111.1326', '7.463359768118243581135732084947365309549133197639576505903758213161574551481743430820479319299647448183521306979230216876056170736579545515897225476592826947268398'); - BigNumber.config({ DECIMAL_PLACES : 218, ROUNDING_MODE : 5 }); - T('26411720916340393.207751155', '5506', '4796898095957.20908241030784598619687613512531783508899382491827097711587359244460588448964765710134398837631674536868870323283690519433345441336723574282600799128223755902651652742462767889575009081002542680711950599346167816926989'); - BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 0 }); - T('17261708.85913600793736159161167742', '-85482890.0523260', '-0.2019317415282722382239676088907393151680198761941505716321111416422415339774786450609525768085355498148994356693552607915492401323983601961997705549455663693859472247079026635614949988995600486551357926021378607613820063617400527183345111689652557204457'); - BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); - T('-3', '974600880689632826443562516081582.2139098370', '-3.078183140853703990357711769812026186512353369190086524932148100756279408052597515604293473601517885e-33'); - BigNumber.config({ DECIMAL_PLACES : 193, ROUNDING_MODE : 6 }); - T('45356052342566412697400812327077958846504613', '67538307534082258099.767035610038138495013', '6.715603928878158230041124255214648345667892573779674667803726766009674324475543077018515978647504489470427431412131426703920884145599401841503088786322763717526811984193256171085110801948249806043176350072300046126174e+23'); - BigNumber.config({ DECIMAL_PLACES : 267, ROUNDING_MODE : 3 }); - T('-17762788846003453381', '61568.9541290053055226999', '-288502364499892.554690307576787650187549555673232897435499322188524169949848746784598012446601239035142749036410151753986934077586374498294725785698368832178210337801050546922644148319494585991617779085830056772604231371177970566725288535306174015228066208608076191387185512913492008'); - BigNumber.config({ DECIMAL_PLACES : 202, ROUNDING_MODE : 5 }); - T('-9942592813945809', '-423540485384145468480063747315317576972', '2.34749525890730666281482900648209824556464116660343656918826028894231787562187379971191855418324369430721985739979640780395648777454629061898551719712051609800578424543848324768824e-23'); - BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 1 }); - T('0', '2', '0'); - BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); - T('13302381359621554467656583', '-115022.186', '-115650569878941045927.05778518241689477193556380505583505429117822539036077787636552134385621918192373773873502977938534397181427242219166309358787529911838051834626060749706147994787718605869653703156015483830223849162'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('-442471201414302445462006221364668630397900156747.65735', '59674407734815.001544409919396048797575990', '-7.414756479537838582945380691144444660725379430037394146551147261640192140085511469139554468901202598378831488181988845112847410733284e+33'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('29331354.27070268082207289305372553429476135102240044497', '-2091561072639.33038179945969784', '0'); - BigNumber.config({ DECIMAL_PLACES : 292, ROUNDING_MODE : 4 }); - T('9118746645777384605851341529854699343.1078649850526400502', '-2.82374850794705241', '-3.229305520698434858826322493589979206358643902355429919362321390430329801321221282743618003100856587028890918220116872565565700130928168624496828239415123585758428952631806803677318960304632474943280591680787917400210546486620831152662105365273691209124248128660654417236292906866589894609934712513693175215638890610125046436352e+36'); - BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 2 }); - T('-75767603073824579636732878.60830667581364469489586617', '48721890266574824673213498217977935729.303665345246312959', '-1.555103930887595327515969372024528263003147339000537251022806156470608360385103819538945290638404040414859408137918678947e-12'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('0.00001057915609291582521418293339567933198424243088533', '0.000000000000855401471686587510704914879', '12367474.73915025745767491397343145568563578255237433592282196392770624'); - BigNumber.config({ DECIMAL_PLACES : 202, ROUNDING_MODE : 3 }); - T('123.733252579139418919030', '5', '24.746650515827883783806'); - BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 6 }); - T('-5670460450363806561944175150218603462.45', '237623661324161217984833314937787177510', '-0.023863197876697486254202731921090655916785245853713803659660900866816149928948576049275832117606225854444947216651605306499360092208653612924601288005351624694995262147477365095952977164724558'); - BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 6 }); - T('-9062095756784282458668427780.0433054150815749626275435765479', '320.7758098', '-2.825055842719061061401902438605676123861374462853134873933969568300034574489912175416165062706046981975384603954633988114399267272927635829477064264588445285e+25'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('-0.00000000000002559582791709', '-5346890.3', '4.78704938402981635886563821965825631395504785276780411971421968391608857208e-21'); - BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 1 }); - T('2.7462028447340143813492102960710151500582482395278967917', '-0.014378813342773459473', '-190.98953295156362687304003245081036038745328333087398801304938176323246884377243513087165388642606975948923130755279418548871199955621738186233643020687'); - BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 0 }); - T('-2388816615532673533361613193322.022886690915', '-1162756.6', '2.05444253383096129780008403592120903608796114337256825719157388571262463700485553038357296789371051516714676141163163468605553389247586296220550371419091493438953603876e+24'); - BigNumber.config({ DECIMAL_PLACES : 156, ROUNDING_MODE : 0 }); - T('-35.72624', '8979760.9461162681647706770485336761911423', '-0.000003978529073811429247606739529684407520439393359792509636952684761754187825079606700025103811740269270519900208997076832992186785427657903645156908362892'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('-21102980896734514069.74641484030925718667967756412', '-411366393698.5788509880915837134260203328', '51299720.20076422352733601325135757218760670832863785816145885313612176208358213282099040407670795'); - BigNumber.config({ DECIMAL_PLACES : 149, ROUNDING_MODE : 2 }); - T('-0.0000000000000000000857942', '-149323510112533679075430064.88220889733813237379723', '5.745525264932728300562215911707874500488713513394074754508420454148407744599533305751093263991520298839e-46'); - BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 1 }); - T('-7.01389529', '-170766268435115632110512762.04', '4.10730723009562063103039027679778113006078206691174918289494074299420055183319828658391882328272297988767506775477811322591274028612459068096262703396918978176993456365120526434366584262544e-26'); - BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 6 }); - T('0.0000000000007340044381532477529768539197482138873581471', '-812619687', '-9.0325702157551562367803417461163956191249289780005046813491733679841305641417471590249572676178592261942086076976867531883952498925859766919479025617059656591854142465539356296692821816904861671164508718086225740184411751766974e-22'); - BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 5 }); - T('-98138866', '887913', '-110.52756970559052519785159131581585132777648260584088756443480386028811381295239511078225006278768302750382075721382612936177'); - BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 6 }); - T('-13199203667167823812', '0.00000000127825968245584296366', '-1.0325917220364012939087160411460057098934786354552912480166665258832928079221415255098438444510364283253921082003837234118142939055265028757705297603474353405718975990306520198513381884861802654771707794753718030606e+28'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('-0.000000000000000008252596880488606318233830518207282931220945146961874653', '4.0', '0'); - BigNumber.config({ DECIMAL_PLACES : 122, ROUNDING_MODE : 2 }); - T('311899.2496', '-142050897187.306379259288918434433252839170431619408248', '-0.00000219568658682059498318020498495863423063649170779155010388237623009321866831668416029300549544555119398839313117715563'); - BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 0 }); - T('-899049538242046286', '-150643546283313.7', '5968.0587746601070631567503432302860175845682515987170518213674868978232776548964484775468845174875611589618604973506607685120748566818825260292673845137842745953223655700670901466411540944578671908652'); - BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 2 }); - T('5533337901390587809.79574358', '-0.000987568800386493303416273452480490900997620823', '-5.60298978585093998357843546467132979777594694510448034823516459881734039680196055554964379985123768492603771418368398642708641373005039917961598281759136751437074739356709192637293670302e+21'); - BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 0 }); - T('26180563908932863610909287', '-0.1208792569233627146774085438', '-2.16584421308374733831690893198998994972717433544296813055264156238894122425665572894196345494556883235730588839206891028754554689708463651823422156975409076397009143309563562332527365030377059675685396472331081714389454799408470116779187957937623517879630605002e+26'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('61310275236913800', '598047502740321547859591108273.6', '1.02517400300115223e-13'); - BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 2 }); - T('25105.51396482290116342046309715665', '-361134266899802217610069225931.63704381274673', '-6.95185039634815410513977245227841130749665095900068916971268869602164190768574e-26'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); - T('-1.38681922', '672038', '-0.00000206360238557938687991'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('63348372957199911.551749694548357719036470867702', '16216660366241327772', '0.003906376006312247788587132691339369157766917620803466'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('0.000000000000022955', '0.000000000011585442762125490207390508073223469', '0.00198136579423992824656487415634032754727570950749590359266700942597622350669782021'); - BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 4 }); - T('4275777172005941344244434.707755460', '0.17508305452156496745', '2.442142207131355577414744211434928363843057421874272303084593488123913253022015612207385947732342648771669844650740642167401879736270428229355078054320765846967579336189114009373129535751442277110184503912484523792865823e+25'); - BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); - T('223099698004028435390543346369353999273727237', '-382959025456.6', '-5.825680638758359524882241656616679688711074048025173423375270539418287561447624584491812445785912571858444437206915987869256142844257672677414892247264208487837993645542554066835922754615112335432595452324114613747e+32'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('-4222241040740745182174499811156187.24809043324', '5484715337605.72313230', '-769819540458394382268.42922'); - BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 6 }); - T('0.00121766778329132124219386288082477004017618569638774546798129', '135361.52733113069735232', '8.995671128271021856434496019603376799245122550024256524760532534659579046440323549352079964018705774551628860626874092557166887044961719866979025129109063471805771591775924349655343760009892944712072498971022148857971070382146043409244e-9'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('-29.69126406417232764365281867234228725032768317', '-0.0000000061896202523816506893875836995940340025004792330025', '4796944376.797216559723487849079072295274121421'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('16981970476423093128815155412180624.49143555605', '0.00000000000000000003516450712407880988978013520561856111228842804326581136', '4.82929290505958223782860433683966471420124949383441757628300879625365450379079094264641511946049356869951375878799905359816373460129493012e+53'); - BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 3 }); - T('-0.2272017125206851495671211156140', '-0.0000000000000068195452657907516548907', '33316255507593.62331026774988946996619276605420745678721035707677750890846815352758617488360680501124786587700311719102155565520646110616431806127494059385852749809074513884474832308582512490107213'); - BigNumber.config({ DECIMAL_PLACES : 158, ROUNDING_MODE : 6 }); - T('0', '11809720.4495574', '0'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('0.045491129411361787', '-153624838165477244600574548551921312753229.8707110971450178', '-0.01'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 2 }); - T('-212959.320106167939', '-49517387416634629408826935639006310.568', '4.300697819825353398347007512679350383374321186347683671042336937263050642578446259635534707353878947073451327186776365214863326172487360959526166095644263534689156653312455804047960091225651057575472627043851681091986767423888386716331578518e-30'); - BigNumber.config({ DECIMAL_PLACES : 139, ROUNDING_MODE : 3 }); - T('-7847330.58', '-1976985309068564680048827526871576339604.43', '3.9693418782647328939318721495965566120976862338388612226698610218259502332617228403481309333560361728716024e-33'); - BigNumber.config({ DECIMAL_PLACES : 106, ROUNDING_MODE : 3 }); - T('-8988.631590', '-265.707639073', '33.8290296107387444679980452268297137608506276157830154971488789929300144566641870039103932149822056689393826'); - BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 6 }); - T('-0.0156527814519736690639741902408204272252694906865011442255906', '2613062806550695879698624732.9561805737668086821', '-5.9902048327095923403726362953721862498926659612726930178232522041611199327876040095586810456385744447078115676964504010225050395426045739125487229810113754206859335878359908904415693135098956172837513199786294897788649e-30'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('88604695212042184730647326586102405707636303', '-6832948397232988727.732', '-1.29672712365166946691190624889138100466055179316813243528738822617160013588188709677302e+25'); - BigNumber.config({ DECIMAL_PLACES : 300, ROUNDING_MODE : 2 }); - T('-2217970.01266', '0.000000000008384762036013568225075563050647', '-264523906955683444.525670971423292764069156404980999011088710210052361611656674471144119063588436076932903881289342036777451356252228389071183166368113332574070438483896361388600223343284634760876384627261648322397038130563687746642323735843376989210789485976684919139115415174234807221412418170766452318781475369156753'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('21259981664254395017814019985992718901028251171.056085844', '6592974422373310068.8046975352', '3.224641914597526967746077143881926952325076843648906889544999960217260558879222214661907863690354233223885025261e+27'); - BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 6 }); - T('15273355225419786282464482.7182808211399', '0.000024842173179136415806623356255064218549288715', '6.148155845820704202638997820824089665356112091068693661317846905908212891505562283795846722418189816633262704999389780246483678927186170978163171781362373565813962341223100824848911221293702114414020866286404409063735055331318301005689391685528236047365792023239366921e+29'); - BigNumber.config({ DECIMAL_PLACES : 296, ROUNDING_MODE : 5 }); - T('-32942856416160.6254410068065507966469486', '-1354205422219646903.651822968655', '0.00002432633622317413894713635654596975735563706052736384690663246575090719595904671583305943358238878789584488608555306976925080617152899831590614649838624886282040452689515845098062552707681103828133482792775977170516537911266568470328877879031403664710000018016755946949499721274136754969752328'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 6 }); - T('-1985428052909.872403846592', '7977499455506690364301316694951258.25935', '-2.48878494318088056690916663361759515082273322293946509724498616946968178129739307538248941675750348039715194736517231749092346179519771372420746933372593127737956638051461690676543514604131663633247477631561893206451406436721610236366849106872966163e-22'); - BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 5 }); - T('968075567856070217500255506122089297235', '2678374985233514131539878.905540', '361441386360494.4570753280128035034061543732762526017045197148269408890626289361009885035636697730030520657547690656029078221848514432926782873805670352343953416939680931297739843376'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('543731619083314243004', '-0.000003711', '-1.4651889492948376259876044192939908380490433845325e+26'); - BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 6 }); - T('-0.00001915939761660051442926290816554006973466772', '1.091053595368939785', '-0.00001756045504815165740716492578382181542277356497744937711656254334438217521245641404012238398074868749271215691050134687705544734580041'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('-5642757788313.97383562537970269152821623817307112843376', '4293762849467357272.622705869809589', '-0.00000131417546477071'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('1597867934.622738380483', '-0.000000000000000128848510530738023395330109858863986420175251', '-1.240113624939072900125261036778809203819840398417e+25'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('-8777898032.8632272', '33308079129708.15211726337829337207051436947767161', '-0.0002635366032'); - BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); - T('-0.0000000000000001379179697978904907960107167726287103359641749409818356817067', '-0.0000000244952749758450602', '5.630390756335343880228632534717399149361840657285468531201614343418043525866901580043283877338401118232788292401929906445770226870986824793803258770822745556155030526484894814792033968209531430925202738087493626476884855566342479e-9'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('-4141679446066006627.9608886985073686154333', '-18961285.58196199793057399601386162829090039', '218428198244.4278419557623014002680683546425619603795075142017856682454017101284558622024703'); - BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); - T('281.2871454231', '269668474827252576513591170.7613857955918559791389', '1.043085016160269564393708548028105270692651627252178204951610873882611202843068009604545879719649886994839396140702961359026379856819456170861045e-24'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 2 }); - T('2.7229559967662288866', '0.00000000000058567854965772063953794886918', '4649232925394.93781860935558322515658671598971733145713767131559798128464232545855209712553601477831957190853267901869606413497736397235584282605970751924251350623748749516399995053411332671306372093280431669198414462385346008200006420521025445267909188893831345342476960129794326198'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('426859069.1', '-984718042022771699.6791573112854062545212199345225', '-4.3348354644052397982223661404408100746970500739115441010077264264405400229e-10'); - BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 3 }); - T('264510322.9', '-2580.779257134023536', '-102492.4243981024847755716572314312118932470242809696371038317717409907354978897931700681246528783691991416483947730164654155062499089173914408547236968126774849733585850175963409178877774006857628821910533643409563410584746192997324020088386891544990186760127044869962464068772918837138'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('820945094966845928402907835763', '0.00000000000000000018795332944109846489672721718082863422', '4.36781352800731763704872593752206560118514222957381423873618379816877840082798224148170963378467986617411826798499503895101943968144438544390648422e+48'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('8428153740583528916.3939030414220235904495005', '-1188827687011.6003982742558364557112236511301', '-7089466.23019'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-410274998.10230531554114', '3', '-136758332.70076843851371333333333333333334'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('285.19260815', '-4501418027858507746954982832272073804456.43697586735', '-6.335617051893239703154004415551094101945459e-38'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('1035567665050591124.44398372571422734755', '0.000000000000000000123091976846972400512913592312045541945831948111786420277', '8.41295827377933765468287219421677194106919450426442791848179371161311178569205798998241174358172210632895585442e+36'); - BigNumber.config({ DECIMAL_PLACES : 214, ROUNDING_MODE : 2 }); - T('-4558141974675690505097770234721323909071', '0.000000000000007409728192119573241614850440140493050609101139', '-6.151564344186586670592542650950104254277652215431759443150476481624188483156733429937657983911624366022455328190289175907728294638844009178183254105443006945083513427844368843307416077579187634715522435004896987702900347493978570633797208996490897547052618208370420565e+53'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('31407764315159662200067885019895402826186256783', '-0.0093371062', '-3.36375785413682691111169807835059248080376945728645562583405123955856901359866721875777743643956839646956141507740374635558927e+48'); - BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 2 }); - T('-15830122567704120.68178392631374', '8945452942567.67418368693312139322725286117', '-1769.62783990234629332620451072118507080025723758839849455597512218550064802710005390298535482592120540954277625242238959857234513106009978151'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-1378523278084878860818889390.35524411345', '0.00000000000000355', '-3.88316416361937707272926588832463130549295774647887323943661971831e+41'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('-56899698397757607696096590.382779113568929997430', '0.0000000000000005023618207651734114590528811235569722409458', '-1.132643764828519777755606928628467323773596578184307681163857859565768897002764e+41'); - BigNumber.config({ DECIMAL_PLACES : 263, ROUNDING_MODE : 3 }); - T('-0.0000600118439103493561923673561608022055894287240725267', '-2560824499779271761474401685834016654899.38799768005660', '2.343457894733591838253729742409168473565323412287521265908224954493873196011703741327411823466070576491299928032956081000949633079376137909369156454292574446212432716398088837873294371434838632093502894558754404881169283e-44'); - BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); - T('-0.000000000002187655945906377', '-28717988545296791672168052', '7.617719961325962154170436496366890092278947197761856630651737112401104934775011012406803752742097272794591198670068215068387535565015504650380691e-38'); - BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 1 }); - T('-0.002056280363595356735', '-30.748129838', '0.0000668749733537975290957596352530401332046046891029132384529382641928468104968069050209791168893398374494011072153974686881572937112429790436479423'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('2.827', '-5.316325518146', '-0.53175825866'); - BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 1 }); - T('84354313385837246179388', '-679225881660.52987760535672379030', '-124191842012.2816609448835112993626132706299809213176145910414427985934837386082563483576028725394970339459568493134350028837910841774878107786831'); - BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 0 }); - T('-15.3', '-24166770', '6.33100741224416833528022156043194849787538839489100115571919623516092551880122995336157872980129326343570117148464606565131e-7'); - BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 0 }); - T('-9203391503334882761646016027858074063491.56605', '-264910247', '3.474154589171057154933691948827511403698765208580247935822580694660708990996486443953978118483276337740155442156225840520242314371478427559655705e+31'); - BigNumber.config({ DECIMAL_PLACES : 200, ROUNDING_MODE : 2 }); - T('17100448156828327.6070351527899412372645', '86001744566119445049', '0.00019883838686180655106704412234097880540687425980093361120412645135461909586742035306583853047398486905365559795765954559523258329214134967507484126229782499580692999451336753772923203427776524078068'); - BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 6 }); - T('0.0041158504', '-30.8580646417', '-0.0001333800563253099046022016875967065551874350748712852645291112803340252133010036088053347815215066861501473163530436354092693293354978901272291063158428369687628983187295271949420546605154336431231'); - BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 3 }); - T('-359201865759621599231435137737', '1485.9589705589306066149306930020942678', '-2.41730675527676868575525826254677992165271049611384971326913736849832913224704204989878957127813717915721483155415827217687680518964578718293383647603487233966988632478593915232687906285924518504808390308905275083955966027462428384027699310885682065271729258191638124369565506600037108682617e+26'); - BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 5 }); - T('0', '26112552580415548829.454813109202677552874497', '0'); - BigNumber.config({ DECIMAL_PLACES : 226, ROUNDING_MODE : 5 }); - T('-352671804.585', '1696.936620673873342381940242796294603372107765309823463323', '-207828.5071395005367092943298259789255338090919326321297461039650049780577689566616688127047378217065014720325013595202248319085784612036270399131145872774307933536677752594787945158629775706821378690743247333183853076996281060440264'); - BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 5 }); - T('-0.00000000171269930539969704231', '944703678610869243454463118341824', '-1.81294869934043216662712864317188499436091872940027912243236517712674869223869442589695e-42'); - BigNumber.config({ DECIMAL_PLACES : 179, ROUNDING_MODE : 0 }); - T('-0.265047986082328558', '-1.5484184', '0.17117336378999923922371369392148788725321269754996453155038715633965599995453425249919530793485791695577887733702983638014118147911443056992864460923481663612367303307684796305702'); - BigNumber.config({ DECIMAL_PLACES : 111, ROUNDING_MODE : 3 }); - T('56067417504154742805378148469.1607375730360427549902974889', '-181863217772701087328761293012.050295848971748707507832637152', '-0.308294432435643649946833209129017221267704219884703436832735239183109309530322216003726792980686210344360978492'); - BigNumber.config({ DECIMAL_PLACES : 282, ROUNDING_MODE : 4 }); - T('-47.4069', '-0.000000000000002021317102553366582955', '23453469987521845.770524425967851124105220851572124236393028040375453875179222282083506894282959800509051503740098321211966567319530880012655344017265829834672622891855747079730825302100785006564711199823504249095919069992545937605688638351150429254101824529299512127014362783799114227314523917225154'); - BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 2 }); - T('6380562805224216321260.19489976232092622', '1599761301096557306629452702423789588634387419728821325.1779', '3.988446776935193935438503918750269693335791615700466575490296006026433080928697191401948927916667e-33'); - BigNumber.config({ DECIMAL_PLACES : 221, ROUNDING_MODE : 2 }); - T('1759056639967675.7096306059015137317304452971036149514', '82452115158542856489311002394', '2.133428155948792544669300003342644889432951927589651270845053344391334796806087512268873641217314349652757018141990599665445263970630705999453435387813576226832967761787849111410410275753779129580827233445522e-14'); - BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 6 }); - T('10.30', '156821478703373851919657687333409109426.068860537782891113', '6.5679778593864299233319236990231085902197603352945852251007005121305096179541728395065617082388193866937934802418388056490459565984353922398236818e-38'); - BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 3 }); - T('9.39532707', '21865273.0762', '4.29691732513812655458153925363231041630342078407524736843972405580726236290242559271202192789195584681851282956445695359890453395040960673021498369389754440866149e-7'); - BigNumber.config({ DECIMAL_PLACES : 194, ROUNDING_MODE : 6 }); - T('-119958353.7193570616189121', '-1972901787460625926621548.529192315776947', '6.080300321171011333426560365578141445791070323044439490519457009806595686695357112349221523209400827863042675502130313222239789015881844803819730658282899030447646599706459051113e-17'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-3290230424586778368943368053029', '-121499567081947.8450551824040501304428540', '27080182288778163.190297462835528090510910737945317336860651066448862309152531317901947591887703962208030103475078'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-0.0268369550987462340036470753353527368958953020', '-10', '0.0026836955098746234003647075335352736895895302'); - BigNumber.config({ DECIMAL_PLACES : 289, ROUNDING_MODE : 6 }); - T('0.00000008464940', '-10814673.84221270527272783306942794070834532', '-7.8272725775223705402694117848921764898564758899660002174687237921588809219075870706055215191312105090918077053774782323861506209813727823317747835406912771028381852696380348476521778839522350429687391826774400311985425246775291735676477975510714438552767986649934466040459725e-15'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('-374583053453.43897699560661370517344768134808858', '7.35168056713086916977461163418913570274616', '-50952030632.04186780174350221868264243105324832475807166296516121504551294423226386'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('-60071719106610.2288352018331254', '0.00501998197978963117195067655466', '-11966520865703906.7310651460580073640208855847319225457998060130294731523775775336527002724567433709940800935076'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-622937646596845153117415.75517279', '3912077.728493156745922613054201249680710895947', '-159234475854033337.13275028604163009953984261467058037081661119902619958495804913257'); - BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 3 }); - T('0.0000000003646020432572001838626', '1091531741592615708576273272712644952873506719196148942.633', '3.34027888850233636794793072976170197689582848190194124033860398017154371786146741274972470232764995941108890323423767978599685699677641512e-64'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-695564016100349916786276554070274602.368205', '0.000021807846099224461245', '-3.18951267784802380689318180163770317827267046257893070426032298566217981904220838148e+40'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 1 }); - T('0', '0.000000000002462', '0'); - BigNumber.config({ DECIMAL_PLACES : 141, ROUNDING_MODE : 3 }); - T('-26340743870367645066258596290350402911506188.407', '-0.00000000000000025325800938698501312552543', '1.0400754524654848646413132865851741682776669340730924517775375597395665102029050181283877767316791189917566940367065462948761838783791952694210626983209654782068564314578852174268865774528453410795459e+59'); - BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 3 }); - T('3145971493533908639356752.3428829203594366775324617', '1411910722903870720901.9163857', '2228.1660182193407935460697068090646470927063977363713900785292388938060452858375531142570291937800918940925004936303064851208377159576859064540159853441191146012610331094316843809482006352190151093789826744863843747902949203936046617256816050811055369450531035784306407360714168539332747598487861082'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('0.000000000000000000020540434276369914412', '-3977804531558458498337024128175243085272903773.6939696', '-5.16376159597827354009e-66'); - BigNumber.config({ DECIMAL_PLACES : 104, ROUNDING_MODE : 4 }); - T('-665896129011017549213856625332.23967335800795583', '3171.93522', '-2.0993371012508179445539137628801879294306898103360383255241889839099551345818468512102841747190536886185210301993494053765700801418e+26'); - BigNumber.config({ DECIMAL_PLACES : 294, ROUNDING_MODE : 6 }); - T('-0.0000000000000655182506467117431031071292322137572588320137854730', '10251251.92267799461446643', '-6.391243834498999077819661508396173404757818195532189568588068444498054042602663946225790543528481226915404809942710352071181542389581007911463770200628955475560872909396105253165299462108682255029584836334999045992165198875154529047216283714400212841149964106826775483255024e-21'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 5 }); - T('0.0051158414954496467729059421537', '1.28321419910608337278024354164318343138601', '0.00398674009297392440827024119816861452327703025337601844912107644128552645607669198736259'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('56038962776461.2797346', '303129150133459900601496629531', '1.8486827398e-16'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('9915710834500.3465', '-1.4', '-7082650596071.67607142857142857142857142857142857142857142857142857143'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('-1549027644025944', '-91820857571.85991312786431099', '16870.106476773641698142767245423408839744996893810201880487331532805738599959252247675'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('95506379529996131069130935396812546065947494411473342457749', '0.0000000517879477504743912589', '1.844181584297695354141847708676436470728006387574197908007668346681e+66'); - BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 6 }); - T('205.099774774230626478083460675', '-449982301573.440949313602', '-4.557952036270399715512524788833189846107552157086408011532774804177977983307814358260811959717048519937e-10'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); - T('1482.8406', '-0.00000000000000001727790576189820', '-85822935975840795587.8710037491895233420516380216740793652331081211380860179235'); - BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 3 }); - T('-1153104396365529502939216.59', '11765014040911232042408.3495212457965', '-98.01130643412461750008575478537024175105975954383637398481500509465403272137237131402487656724462559539085144272214960543019564189479814618'); - BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 4 }); - T('-1239516.78884240684758533', '-35076195036250765616720646036910081973041049805570', '3.5337834892336049491710352405683891671627283710554955550882848197255904639968340024230631426905185923690614073106304702889741211759104136142842476783745615453130980374313313531532953958197012166387657288379805732159e-44'); - BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 5 }); - T('-57716520093512', '50658.13516443959833837448', '-1139333690.55454618595478461694822547462547264851682943358948704901734187004406684500737817259695270067818913111625866674119051153278375404248580693866944094419491846668226539159657832785469114661591517274015745537698719625277031844413727331306168805098428834321702167581346752235995'); - BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 4 }); - T('0.00000000000002716456899405', '-10728281731479516387166487775598.983320673', '-2.532052165850773880400639191130059263614628758693376705520159268895877829358368744545118549170323002994589211731468097142850172933664457298662526848191847e-45'); - BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 0 }); - T('-7831101069665371600393129611782', '-25672065508112239.00325538415989789', '305043669633469.28379784439441591241205239521437052790596615965381149546130376836417458338289091904946530427438681096175171393085499965068769049271289475149206839907066697133691363829733350317590225385534036095448597226005282307963626985030720444042796'); - BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 2 }); - T('7.6', '-0.00000000000009046796955100059485380894000931938051003242', '-84007633173590.358252556098142690359633565219964153721599855394205571211266955146594640888040812855428767007008199662032445736919870997047434103550137996586138551808154982683578308450810333186258091757582382733560731294254511519080101866036826193549058049570452361379267913665552070415000346145937628259422138795'); - BigNumber.config({ DECIMAL_PLACES : 268, ROUNDING_MODE : 3 }); - T('-9467869039621038835918314441.406', '1467228723133.957919994774520427', '-6452892374815254.2099858564863008178760958711743454969529256224127442518877511404250684709463273791482667167512254302548073670574538231125002297555281578906852307437260675053827291979912207296468148625295990357643458983072701448003847839460219008825856231103598845535310865494523918831'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 3 }); - T('-609475310522475962414302476.222653768416691', '6102081498600.6170', '-99879903384156.078749805777286290461124275708929727063525652393750840270442836941816183295511467034424683326998224561272207931216059004031480454208713078062289324276976736786404530462985315920949889041863275437581382020490704215599274302930558903852377964887825938352121407275370987962'); - BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 1 }); - T('-3172872984318758863943564449.715522', '-142.832719255338450346216', '2.2213908695854861107920603096617560636821821633979800975189910715461273042413884020923206593619040390651566621421138114193338343464631753671317216021303251769200721098511073791840987458297910662981585747266633485119144011505619549897130886041169334765209636819213495504816905e+25'); - BigNumber.config({ DECIMAL_PLACES : 242, ROUNDING_MODE : 3 }); - T('38561261492174617050435836082.0252506143701229390', '-276.7', '-1.3936126307255011583099326375867455950260254043729671123960968558005059631369714492229851825081315504156125767979761474521142031080592699674737983375496928080954101915431875677629201301048066498012287676183592338272497289483194795807734007950849295265630646910010842068e+26'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-371.84945', '123092242548887.962501', '-3.0209007675874807184127880877722661988721990619494e-12'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('2034383814096560337662039352184036335014252691742261', '-886278493811685823107.2319663', '-2.2954227461247874787306595199684477740135912085564852332831337397886e+30'); - BigNumber.config({ DECIMAL_PLACES : 108, ROUNDING_MODE : 3 }); - T('39360061748459633473756799064571.8270', '-81873438148', '-480742749282248371932.103791935798100887150739519472610288065021495327664372558847142357581501964995505736312980420166048209865389'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('10.02', '-608093636084537131486593586398', '-1.64777254774740322306395336991397443614683286042172176527e-29'); - BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 1 }); - T('-48946040302', '31570130776951076660.3805596689047740684203', '-1.5503907997028266569235034714309893247109342272518379694778625499225992447304505898388797230061708147110119482982492827839785651886193230126471131168581350494144100317149913800613717349927008880617904338090309840672640085310916032081385253615935028604127284281387e-9'); - BigNumber.config({ DECIMAL_PLACES : 112, ROUNDING_MODE : 5 }); - T('593265847.78057159818104', '227846838.20312', '2.6037923214527528437658495939903306030021976777145075311627946764405532163733377361604976015997190497024368037288'); - BigNumber.config({ DECIMAL_PLACES : 163, ROUNDING_MODE : 5 }); - T('14455640.6170216014000857868526824', '-3.0', '-4818546.8723405338000285956175608'); - BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 4 }); - T('-72280684225394597729700130040325436.019711091110467647964705', '892308799850790515684.48664808363416260181436208', '-81004114536897.0695875523366475258607915037550630773694304370770483952947994050812890997846162428770238577341236809960785489011487107136201035519062478603136775513495087053730649572659492563462352276930583664314534000410955016670927197175753702974600911581347257782'); - BigNumber.config({ DECIMAL_PLACES : 154, ROUNDING_MODE : 5 }); - T('-29.0335114169077', '-0.00000006868270154', '422719415.0189174402122680394496317012518025655983828384511737131066845335973370042252417783972916217354719969857493173964630279451293697612465812741820696879943957'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-42119671121.1776108129967889823985848062573', '4775069674.08348', '-8.82074482594057643'); - BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 0 }); - T('-354744268750166854753379871353.8578159230421026859633205', '21330178447258444722314.0', '-16631097.092193428262677804869343124778290967185317934376036587888953686313580577100770656549591099652587049117622472847710788834217172096458028810599783892238748655611842406819858733617818766566525908833731016009618661019672856973156580568031733962692115781082387552380191'); - BigNumber.config({ DECIMAL_PLACES : 211, ROUNDING_MODE : 0 }); - T('0.000000000000161569825431083235577513859303754951', '-6.967425061704654826122536362248981082078764528', '-2.31893165696357637139194368501960338724247231287711943486094408762260380439198627140495092670605965201075556177441056927057320135095371632737446304387050194331027521855065799327862604397351977316685e-14'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('-1252668285755520661.251344', '479507', '-2612408756817.983181166'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 3 }); - T('-239663672764274843796937619.150383232608198583606227651159', '-27802725.3571717730410166913363023569367610392303781', '8620150351643605395.52'); - BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 1 }); - T('11810621498949943142887410568053.89406631535498', '0.0000004432223087743353888455574417656584470134825242823425701', '2.664717290880605708797551855406387114654984277046050427731725364316623529337486816821739538655867598918228544552795556861760061035132724785526563947790437178735446158489338509514582529224487403400328556591965480924990904542097e+37'); - BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); - T('-0.0000000293030744913025', '2622073217675502577313959320487222758.070095368248839', '-1.11755363251374061113808739620508682574989551743699198867860249309514442792920940949e-44'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('-38053516416360899172842557379.560501', '2465703.94', '-1.543312471503002066535309887186232950578811177144000508025306558093912929384376941864318065696079e+22'); - BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 0 }); - T('0.4659955192654724333695129609052460857753169372712280001', '-0.00000098977383542832026322076402221033475283289', '-470810.1008386576788537804212345438983561475077420796562854251380393044003068091805818723375736620862822143211298571800300907196710719003784495335296847039332269264433496495785177822463973270951061363327575868275367648790901030863136737556998180238017844800164524826761414751293'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('0.00000000000000001289546801370178581628448024', '-23.85306209433699851', '0'); - BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 4 }); - T('-0.000000000000000002981449315396', '-0.000659989143002065720018777061933042049834879220', '4.5174217591434958975361177865700625660514957971505630425658606251053819431850586597294324913083917343441121107264661057253852617524504388307163037076537670913611180462835779571807945491272907838594433069e-15'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 5 }); - T('0', '-0.000000008614810672231220408932800073', '0'); - BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); - T('-6653380272019766445095.580143843499016729419769919610', '-10', '665338027201976644509.558014384349901672941976991961'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 1 }); - T('-126024248130053999592229.79522479746216240298328685352', '22.8', '-5.52737930394973682422060505371918693694749926696725964912280701754385964912280701e+21'); - BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 5 }); - T('-6093096693216885521122.4', '-475.1955', '12822294599205770090.6729966929400636159222888263882970272235322093748783395465655714332311648574113180785592456157518326667655733271884939987857629123171410503676907714824740554150870536442369508970518449774882127461223854182120832373202187310275455049553289119951683044136571158607352131912023577664'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('2838066023144006476557.33585253397606', '361913705058687862037.0743800454319040636013160786180375482', '7.84183075543874801608869674'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('-8912120527276385707185713.36348174507076527', '-138595676937364.6000272308', '64303019576.1735848210918847974594190139268975695559310464'); - BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 3 }); - T('-2109445934524366389653.11071202109', '-2529937073579670912392529854897594314244244551468701', '8.337938348560025060571399348991344614682842686609826968680827268986333029502247845634619255028765965865798251267883636812043257441345348928881319046703182133850281855508004183784428687514904384878079970429530453118570989563178752643128476337797e-31'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('1362268131522324849421611285979599323015799314.5', '7967841135862648558137', '1.70970794760309580373943195085335961896069021248e+23'); - BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 4 }); - T('-13.3489335', '348247099139.4782260605601614309726108479', '-3.83317866336441481702261735465730886134182858179365305100303003206420508719336454481239879367453567875367648194559801630261667713481982249534527637719337682066528264444311854358819368151219273332995627808679233553687532950443756230818098136019082571670321383622182248022e-11'); - BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 6 }); - T('206326562825.9072634574832909295302847', '-646549993648312966960798586111907542013270814184.525784552816', '-3.191192712904694159865083652735944999235332803105041830307950393726597401971224890197748512657e-37'); - BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 2 }); - T('-36022378902303.6337241308770686270134088130947868622970837556', '13578424515590413.5570445', '-0.00265291299892293269665145659042413245901000619767595833864439662704864041314263874683099349326335620385223661682486177046611234091447'); - BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 2 }); - T('-159540906057017882019.1550648164', '-20510.292270945915884714393270293083', '7778577893939490.00166000414527928622843397522207155300792172899843206724934309088909076517353732381926866850865842811485578741264404699633750435448046231006588094553667853303779375796'); - BigNumber.config({ DECIMAL_PLACES : 157, ROUNDING_MODE : 6 }); - T('1765888808226401695383202231727943.6529280993', '-3802536782039279982453647099788917361939070010171234', '-4.643975612720740191711625263989649703622782486469839070625079507044942445633503314180370572937935425472469260449687041164513716954415440367e-19'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('-0.14912820615290798745027', '174530.1', '-8.544555131344563914778596929698659428946640149750673379548857188530803569126471594298060908e-7'); - BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 6 }); - T('-816281363562218723797692080137304200383227228307169.81050063', '0.03151207469555254421234990134028594', '-2.5903764555287264896939010825254815324859859226848271758791787494771312939546830200209642019019899286706064279512978044210399067893552614583934288714466179450822103579918737049557309222940603852366574213774985909043470490904834397325151656349535377679783068638817406000816614631650591652364504e+52'); - BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 6 }); - T('5099800008.979562261560228116', '-2162291.608828653712', '-2358.51630194421444248681651513364657320151778113938948729659099335407633345047756202312930590480452477712257388969222067448002730285256774933100121701317740342703720641534492684476728201301660140548580482107'); - BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 6 }); - T('-0.0000000001805289082291201368261085356193967', '1807', '-9.9905317226961890883291940021802268954067515218594355285002767017155506364139457664637520752628666297731045932484781405644714997232982844493635860542335362479247371333702268954067515218594355285002767017155506364139457664637520752628666297731045932484781405644715e-14'); - BigNumber.config({ DECIMAL_PLACES : 168, ROUNDING_MODE : 2 }); - T('1146690180.71200580', '-881154.121319456844861836532060550361', '-1301.35030066582476879693704636411939807452648329356238433857507462952528424966993485504542262823070402510871938773184660967896035487235203047393259421235952996827163565066'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('-0.0000000000000000160973160543472055762355765416426874371074728994675404520290', '3761171179921075710630.8843299219413810607706191431294990', '-4.2798679678e-39'); - BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 0 }); - T('7070.6', '-0.000145606236436591691', '-48559733.2438373308995099933333650691937906953404860600972568939987638179704882475133025753274789937095899338360190003809613478061917688446777469738385799535514510315359744526190113615619213651499675465832878218353305796958194748375468606299490210421292097642179698165287732952230364425'); - BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 4 }); - T('-0.000000000000000015480712431709444329812945328920683450802186603602697705421', '100066859395573554117646467521957510143339878235271', '-1.5470369036478656432194424074619716418461957473064336434329800639876360673327549747383799287649079648e-67'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); - T('-2.9861577', '-438001798009735866185210.11251867869200344199670316', '6.817683656937006327592672071029593996285459e-24'); - BigNumber.config({ DECIMAL_PLACES : 276, ROUNDING_MODE : 5 }); - T('-0.00000000244443694283348821783546244046969721403019898324368', '0.81903701867172464464688481587547846220480314400578', '-2.984525591770882357436538810320776975435486474958500771439280366917094188009518155617809588186592103521847816796300149642786943277747340425230201886751388570055323831421137744310284396301360161812729882087890890506501948381563897731711680708058555881568416792177287316e-9'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('131.8', '-0.000000000534986807852076265014443038071361169998361285500', '-246361215016.058248450782765246454499249132660343977423404'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('-0.0243005024640459', '0.000011301133144399209317520417050581', '-2150.27131824290731093'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('5465777.9742678260337809716148771', '-0.00000000305639212263554277266889509047', '-1788310450674325.5673025352058903536003073726626'); - BigNumber.config({ DECIMAL_PLACES : 152, ROUNDING_MODE : 6 }); - T('3951104989166.291629778031837010936028877374918759391862', '-1752.822', '-2254139318.86197892870926530874837035870007046851271370509954804309850058933536890796669599080796566907535391500106685105504152731994463784685495732025271248307016'); - BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 6 }); - T('26079196508929708235932373056884051345409.0707513615317642897', '459154144236437331165949377207476.625424383213', '56798347.213654808277411284969119627071835039723276157988509805667000410099719290968912107666070777543943894835923366076087775942160607756641235888432397328990759503526406626973382249663'); - BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 2 }); - T('1.95999502420771680', '-0.00000000605336322719182915867', '-323786125.2738609501583269241656827051727302857553347826316924634768121285666678574686171284491571944987544448088554099397667480735129838824416'); - BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 6 }); - T('2980869715.15307080894451368776466022955051977675', '-23037896331023947862905398641887126.9402219359747323', '-1.29389839780591735956453314130606673533568424583151819964363580348421330247329455844727287260042067575717494925438886592376866151971696912725349675942014665165807271426618105628903598173279898335462271449907718099133759837480195688910073846907971163203355866588677567e-25'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('96832115342.29552928350903812033911316015', '247856455866026795175321987.833460779941', '0'); - BigNumber.config({ DECIMAL_PLACES : 121, ROUNDING_MODE : 0 }); - T('-293234671779938033307224884628671156430', '5936683153613310921783', '-49393687382737157.4007694093795947121535681324810872175605782301354870877059794646681477642341525539923490233909589184596712731674420686306'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-0.00000001251521953904579466180770859989188568351', '0.000000000000000000124750779055900674998', '-100321774611.4253903299'); - BigNumber.config({ DECIMAL_PLACES : 250, ROUNDING_MODE : 5 }); - T('4888435.07991914', '-289442314988433702829117882547583577.41646005231', '-1.68891514017723529611657483953131704184452585016197836704143088773553864559270182457600103339950763982674068091317404598027038798517586280063864161198278876132234359138189202564039345012690897624232010014002207523787438682e-29'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('1655333198571404541749487.56002', '-1.0384557', '-1.59403352359797778735239987610448861708785459023432583595e+24'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('-1.63996', '8668688714241359135882263258276', '-1.891820151883e-31'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('42102134040566.391567837766953194508854271095335485', '-0.0000000000182008621430593045067184956600215229324', '-2.313194490988525515892961664153687458225784253642181046495394201588984584087576800999450251332728124457526e+24'); - BigNumber.config({ DECIMAL_PLACES : 300, ROUNDING_MODE : 0 }); - T('0.0000052581046503077188067948441172793667220173727', '-18466.0514226727708599966583659217', '-2.84744395537195048266342727302582394039417491162540524941848660662305983103035825975666206669623114383321681838821817930551745150733457073504217394906088556217541711535419981350903104910507241192273159293961874700978577956325887384646715132624264086076386282762979144477378516516257388546584e-10'); - BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); - T('-0.02697969836976162668872870309017164744281888345862', '877766362743928431787777072573.8203', '-3.073676494667914073439530205319061128326417250056270330825297287028028004269995453915111595062888238063730432008508979125595815156703686732055688781751144620211857662e-32'); - BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 1 }); - T('2.9', '-0.00000000662501374231809', '-437734941.0576906985378686578582631049615512011028188110951097804347401955836597404580589129829605778905643317198103997115068187817453731726485246356961037075885700663431396317240892923939363561523028738906295809528193483699973'); - BigNumber.config({ DECIMAL_PLACES : 242, ROUNDING_MODE : 4 }); - T('-164232956492021053532271705054.8858957951765769', '6807214753671449360404823', '-24126.30751856954964206020674130573592945546606765066608501697337500424559349604716170982761660557081604606261463337684307963793106317313923735997783983778116076441066361756800392406801168698964254694276713530096866412055141505864825357839012225025'); - BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 3 }); - T('5310118868764049191600032796055051413', '-110.2124649068932461007483586195603358', '-4.818074682614169031627916829261256132086439604079019185680382129008807675013960819276432592715708549843808512887032607973561680202157091046156292681159154721739305455357990563568687516460063308252017001793309695451270697843105205848708474750864740875362894876e+34'); - BigNumber.config({ DECIMAL_PLACES : 208, ROUNDING_MODE : 5 }); - T('0.00000000675823179589774992292722262898462101903831106625531220', '29824576103801692.4843099744864667', '2.265994249969000763758565488858846719254006293524642113354787950891188552955632880608907146948969530378484734927638909309663133941937772963802739592875273798175292161122610492051972886e-25'); - BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 3 }); - T('-0.00000000005290747543146156', '12.018932051814', '-4.402011360358453095032662746904434806012182693211407297582193017073085280237475283974936844315503436464779478161114158775508e-12'); - BigNumber.config({ DECIMAL_PLACES : 287, ROUNDING_MODE : 2 }); - T('-3089521084991426324087477311760754614261.7580240', '272963802600.2220186333174', '-1.131842777526177905839853650756986067625953813516061315307663981827974478132700821765932895424846457981456683202566942779259691021115137392247599854950379631304174725170924742331928722697213540501568226615277435727719614247769485289759238905087747375366474394045523699280642973120153035784222079116713075704595922959e+28'); - BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 2 }); - T('-1676880748951985408708849516627159241705.785761', '-2', '8.384403744759927043544247583135796208528928805e+38'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('-3177336591875107162705100.847120305256', '0.0000000000025133263', '-1.2641958156706939177396507755957932147528953960335353193097131876589203717798202326534362052392480833069705275e+36'); - BigNumber.config({ DECIMAL_PLACES : 183, ROUNDING_MODE : 1 }); - T('-0.000000000028334', '10467723615004932174204441002171952.5655837', '-2.706796725066823385651261296727146950436243675379457221318323732288291498753467079627663767184391153905970702346937019552656922753410201723e-45'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('0.000000000717483955208080534', '-61146916817930.97778189208423269418409758344', '-2e-23'); - BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 0 }); - T('60680266058321519153090653083551290588754.97284', '-0.00000000000019690697186270641342992794281170737', '-3.081671790708908795312484307561547787551023984841927203616039477866919070506741735583986941315031987314779607009672873041925980772946272076202447947702805560121737616867817564182423222355223634900044472778215531037802904097886669697273143024852800076605994727968360184301126455973053596379264e+53'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('183.7', '0.00000000000000010925421487', '1681399662416520553.5928080391870011156486'); - BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 1 }); - T('-3058466056978263779557608595631.7068690610921471685', '120492309309793.28082412090519793229370212509169', '-25383081082085959.6417354916668552862210359271410241209138811189333118748259044124179789792621032645719432935165756046530434720657749057413694554301975992351725184329609258318258501695357243024919809615067168614756657141239308339489721727819788192556709280870467874417211'); - BigNumber.config({ DECIMAL_PLACES : 272, ROUNDING_MODE : 5 }); - T('-287702256019.72332990279253507', '-7348.2447750020468486997', '39152513.94434437448778855732509409502324459411348630851253369635814661159847616711741174927298666175199247970493164341671399780310055266066581661702446007562686353640296482784327557295162424104715744113616705513531689030766592807403129905429418351271424761578872795018589442905503'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 1 }); - T('218362821823152', '-427428.03624264072494916498', '-510876225.4874470197093781182823629357731188540503887097132994555167154946227455113711463937144882453930644443764395873393290104639967553243741314244621401408795024377169231224165902697570435'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('3512610977932727821248085135991.64362350458397', '332366415.82934', '1.05684895062813633986114367632097685e+22'); - BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 2 }); - T('283069958448.713202074580489066', '568402223435932952032974548470947451064164701869040395199291', '4.98009942215891470612063116424248091470225902416930202626189832795786381168596298522567155592721763629087408085324803349161372096963753854201220180322843758745618174256723334739417295e-49'); - BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 3 }); - T('53961910955842962056752112393094579054189', '-3659591183283494197617050720675757101158792.981416', '-0.01474533855101998810768228248680932872888735787867356455976031052775672420792166275872334215944750527764992493346321533012907042007431511008951188364546091620237048897806801062113473990435132299317931345'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('-10836401636.6401027213286580', '-12146284942380595721816487991.3', '8.92157699909535953776034054822951842765223136204580012685357e-19'); - BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 1 }); - T('-5205546295637226727249281129928401035.18847541281188447830770', '0.00037909736012343271985671174556', '-1.3731423225796982102395904646341192012263484381096307767950618016870969679385968172377981568427009613964671462530338490375132813655989596649751350011381898041088031763635122076528518331936123575593723173041903500861528439546220050075864e+40'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('-352.88718641', '979839379932028.28416206014245661982233190862835191074675607', '-3.60147993270570404159701651891818e-13'); - BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 2 }); - T('900872149910557106771437937396420826.617465', '4', '2.2521803747763927669285948434910520665436625e+35'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); - T('-2499.000863', '-18072893447405471.93337869618542896592', '1.382734242456762937466021429575825416021539079586e-13'); - BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 2 }); - T('347.1', '-26897607535492', '-1.29044934402434758860570983442323435482693270315891495180319627054565942215468256010821804789288880225446038761569005431e-11'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('-36083511723943380014', '-1.42201661721163467413894', '25374887527473368449.9630012068579400539362'); - BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 5 }); - T('177622329032283.44164414146844039903', '3683390520117457700', '0.00004822250805668559323966868140696957593296531306730369174847487069215651974385324941078536744094210123197364773478463773546932690054774981'); - BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 2 }); - T('7.200557', '-12130543987590457647645529695250577', '-5.93588960838538432358509376824068186234657378382856805469754865636042223404958916496830683112332242419180446413047189313389204601249799647342307751189e-34'); - BigNumber.config({ DECIMAL_PLACES : 229, ROUNDING_MODE : 2 }); - T('-142352650018637644982.894545', '0.00000000000000045655250658348006593881690311261446601955508', '-3.11799076701835252108429962046670676621438037589634232718433946791485799432157664185253045470787064599498965009148939997154095590880176775307462661522156750014260841093621873330094880872289151899022849816633125839598690585487048126963803172223460103466105999268155e+35'); - BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 0 }); - T('5943961854622625.00', '0.0000004889328119390981904090835833399747078336', '1.21570115759852276066823247614220899330663707901913765818462968918614524188549702319616698092675696766433467486493760177977470560540641742397966205453294164165166645821166686793422442182258841901003455629128549397991219865773103516795346451201789267868677140359702613151e+22'); - BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 3 }); - T('-9.73', '107877.10', '-0.0000901952314253905601837646729472705513959867293429282025564276384886134313955417785609735523109167747371777698881412273781924059879251481547056789624489349454147358429175422772766416598147336181636325040254141054959764398560955012695001997643614817231831408148717383021975933724582'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('-0.000000000000000019829885358087437960235494', '-693321832339309278041763827865443259651661541834', '1e-16'); - BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 2 }); - T('21861.085854742432297', '-253317995458118756985218875666.991005', '-8.6298984859750088516076665392047692541238104781525392378756311035204201128886977097227227811741417251060215227596413876277433463577059e-26'); - BigNumber.config({ DECIMAL_PLACES : 142, ROUNDING_MODE : 3 }); - T('2076337.9', '-2066457567221557459126548958422023599909897005697', '-1.0047812899404109614716837107338921468544850570684080075956002125448452885533922869419223696394598431e-42'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('0.0000000024715116648600', '314867688681333580.98090570271019221598209985967707509', '7.8493657930119634753316836800963745033454136e-27'); - BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 1 }); - T('85.5032', '2269889931805.8110736637704476113642726571257320719630747075', '3.76684344037677298414636726315641859833435415870284555946496584487885463210335786685911435721149609905482823796034722657831771198820765532056166538523279149766e-11'); - BigNumber.config({ DECIMAL_PLACES : 225, ROUNDING_MODE : 1 }); - T('-878447093953645818260102264832468970551856123619.3364737', '-0.0321801228236', '2.7297816691657166216189614482465370479123012554570903545841244469028148970610382017982696584849836576681548797269208941130786144461619238777602985556306501753659142612521175162964271415211727986351973135481429362433578626572784377717859071869623999815093110967364070505355807e+49'); - BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 4 }); - T('-43217422.314686293151875092274526827', '-172.25', '250899.40385884640436502230638331975036284470246734397677793904208998548621190130624092888243831640058055152394775036284470246734397677793904208998548621190130624092888243831640058055152394775036284470246734397677793904209'); - BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 3 }); - T('934044509803710.031', '2215450.4539256893907883241626781065882032269398778360517', '421604783.8707566688539417234911930291970000816369616751407221284895813210180351175345778163400640903934907977266943577986534521978166078350804914438274219568982438173624979713831494231085341917307110815023899880191'); - BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 6 }); - T('-61673618376150077735105282.32389881289046067', '580126573106122019236717205540651106962845540631806811475137', '-1.06310624672709449526492535531490045106445863633066135113002531869296728604103194642150428828918666609299891321792894844384077308674766977865000804626486307169603956091019855780842725388683208936716701748756130647891699112423470869015773752e-34'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('0.000000000000037953564273421360974525286986557062748316', '9.9', '3.833693360951652623689422927935056843264242e-15'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('78.788494332435194841297369789305379', '2960574779.76224', '2.6612566880936072401085822383242603e-8'); - BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 1 }); - T('-0.00884033479494503875011051054848', '-0.00000000000000000003073745393848120884762218612879977161380590851450682841', '287607907038700391.9386691232917865285000162747620806087721118424095534296139200510822980311737775004980032046267554363164670402076851873775075909'); - BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 0 }); - T('0.000000035825234436874458725815231678670', '248704.09196351538476428010', '1.4404762766078646183528523818329613183633549389722421363506513592489424701455505545820862493707022113496949417051780495219588961668954111458099918576834515526585393756362338712e-13'); - BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 1 }); - T('-11890841249720941003340131568.8', '-0.448285132780975547543447565754894854616797795', '2.6525174225509287109008275900581758745656416060405416608376934955450921635126740129313598589973142842709854408731763632284545491223060278476521298576534682156856e+28'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-79999890792516728703785210.293275949583326', '2238618671360933932870184834154524.554', '-3.5736274255178091780838294625533545534e-8'); - BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 2 }); - T('523036262457407.9231574304588', '-42325640367366929726.5204686677863151208112751608435', '-0.000012357432939412037831070223261728288578014924445740262398299293226133962016627218473698110333245943923835660220850424477875443864664548613683004600257116752'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 5 }); - T('-0.0000000041286755678770', '0.0000000110564855419579942831310543', '-0.37341662974271410060901686622969775811'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('-772545.60868', '-0.000000000001373662387332651048013693114', '562398458168540916.3707047890052467698944553379256207237415983606506907843604729462276116333472410717492'); - BigNumber.config({ DECIMAL_PLACES : 160, ROUNDING_MODE : 0 }); - T('-0.000000000000000234838118662348396', '4.9607142482566858080278966310749', '-4.73395779135789073153550910323880386103124721594233442875440968425335409065931840451191011389183925700687542921313613178360714542362607580156762e-17'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('-25470877029136458.461572069402318317869339908911993', '-19788421946214575881837247262846064', '1.28716059817033097143124319946722349767576454963531457795e-18'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('0.0000007608256038883687382330921800098873466555520966152558', '4084024157469937028014547746681770', '0'); - BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); - T('-60593935100716637576.779124226', '-78089154643.3398697105499380823346933482681923', '775958394.958558071500338249096776110501831340377956044864519861717344537495697320556111328429168006012349243247851949387890247027968414427872945899772549980746925825100931899573261430814243662488905947964247134248105608266206245'); - BigNumber.config({ DECIMAL_PLACES : 236, ROUNDING_MODE : 0 }); - T('120200820437', '387689496.8040973', '310.04404666071845082705639677630364379138488716543831502070512009771234254242928775392324345085494793473809688678416009031735847856980861882806602550723464704832108694013222493491135567636091734943087685254045517457022321119851762885508307'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); - T('323590.58', '-30602659640217986546339973043344923648528124099098332011', '0'); - BigNumber.config({ DECIMAL_PLACES : 187, ROUNDING_MODE : 5 }); - T('0.002184407364266776792138989179577074788592902', '-5387393902170.50826166406732599919929902225', '-4.054664284686346322886089921637881011695368077425220160377039462179267548296175538145260381577072330244855092355763020492833402533575231089958704759209007017996657889948755e-16'); - BigNumber.config({ DECIMAL_PLACES : 137, ROUNDING_MODE : 2 }); - T('8338918643868645247408.3883455814124240962297433030931555852', '76390171950015689477386403006816845', '1.0916219234753185484432073685343052849240279711055950892264649053607637247519291785805958502378749491100439233502256082134638e-13'); - BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 1 }); - T('0', '0.0000000000000005262870969944363287966971419746196984506', '0'); - BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 3 }); - T('7', '-78156995776919615238622640478166990.50200', '-8.95633197056322356662567988499850763139263072636596503501898741826919037684989877497087801741807791961361135760609928904999023392056920447216103029361565738478484153062680383086255843225584249401410645703684133634095656e-35'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); - T('24.1609503653656174905040', '-845840421154.192190497016066', '-2.856443103e-11'); - BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 4 }); - T('-30.95207787509671936194539304098189430723147200095851336232', '15793254.28652433', '-0.00000195982900759767594730360080846558702051969928995350942287858990053761925209915600655749800868378844445503973346958930972979651023833175022853776353124380982614053588435077849665659187568709860142253037806347168992008085044925388898306393725024773439411064804691234767025408538692'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('0.00000000000018209730481501437353687636820985110', '0.00000000000432086493606712228925346064478750366', '0.04214371601736'); - BigNumber.config({ DECIMAL_PLACES : 143, ROUNDING_MODE : 4 }); - T('-0.0000005553075724698638127187462955079819138174106', '-0.000000000000000010549809475997890291690169102285131785847606678744325', '52636739434.32406123628211128902900923607108654048502037466453196880088243188283204228908191883378835747158786416820534873430061744591062343575877307870373'); - BigNumber.config({ DECIMAL_PLACES : 254, ROUNDING_MODE : 2 }); - T('-8507.4', '-31611118342410651066.287255899282366741756486641109', '2.6912682771448031995832202512770436547187935120037530273296218347166872776298484520115458342061467521532249236513612825317884352187170570573598554583265089794988675565694897744942941536240326667686887829217571385934754800298928378797347681e-16'); - BigNumber.config({ DECIMAL_PLACES : 201, ROUNDING_MODE : 1 }); - T('341868272534512579483294630101041404087', '-227197016940835393812522104129336912.37630313525924548177964', '-1504.721660247585222184545332112527476380821548583435076394533870831527512221217981193086787237823562978794231656548081796489337612493403554821668058781133339890502918373561994949215363926544374519865666144'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('0.00000000000000437742', '0.0000000000000000000200303787355146280915492763', '218539.05299547166371779311558890808831179'); - BigNumber.config({ DECIMAL_PLACES : 151, ROUNDING_MODE : 3 }); - T('-0.0000000000000534322916017120915670331281662644280597428866', '-1424.77749901', '3.75022006164746917868530862083721727820879664749528167101202037111191057368662227467078617673572071075544322088739384828755360735601037e-17'); - BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 0 }); - T('-416904702172153041.26891879162130712422724206693039976', '-1492417792792741636616.85', '0.000279348520357697422876919371806999054778919203273179931069212605569609913461069840673300681928567724197103421784691807186805590754474225075554848274600977306765474318633861'); - BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 2 }); - T('-0.000000000014145159541995954595019', '75286314359.303757785825', '-1.878848720696860524911845987739168912042755878980910896266255578525504559236986971506094819775648678624305752410753284616370908384058077653336364854521389519941929908006483658028987464466470871992271276526386753342138e-22'); - BigNumber.config({ DECIMAL_PLACES : 212, ROUNDING_MODE : 6 }); - T('-856449761377.4106027005835', '-0.12886167223806177710047958961530', '6646272289522.88629595844444803094620478694392834125277536502509139598292167530634061669645708554597441149938198254016521395355218219907515631449168243123908585492915406688068634055285586774476740307585325963085677047571925594'); - BigNumber.config({ DECIMAL_PLACES : 131, ROUNDING_MODE : 5 }); - T('705051.5714748881282046710370536257169', '-3.690', '-191070.88657856046834814933253485791785907859078590785907859078590785907859078590785907859078590785907859078590785907859078590785907859079'); - BigNumber.config({ DECIMAL_PLACES : 169, ROUNDING_MODE : 0 }); - T('-56970701115117049802746696481693.06197826', '52774171.48234231347102140385892929240488248', '-1.079518626534551116776647376170899911322930789996468424200474585922124737338324430900738525116029050886798808473947642585594124786724157692349083285559602854594168836141683492575082185135889484e+24'); - BigNumber.config({ DECIMAL_PLACES : 248, ROUNDING_MODE : 4 }); - T('1536.80', '797537940790.16204370540879609250609816130996198497962', '1.92693027052407417679073838856981865538509524279931557871046258846342061768572781543861899644466156118948850948896470902434251214085617673624065270654935318750683127587751733903011318898363697418632103362914826583288103899538519980902669177e-9'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('4521798398474707211452169719274772724688.209746762423', '113966135.2853091333519386764965477252492237804473584', '3.9676684544532344891518753895135901917807148727042638514740974556455741382836470597753293843833469077660544920113222751422500214591e+31'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-0.00886155497', '5240512159922862756756611815681766274134230', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 3 }); - T('1365098150', '-686632351222425520397133197387897340831713401120.58814562', '-1.9881063680872129581225444091158763443242565499666241150059946886673559494313889443055230582e-39'); - BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 0 }); - T('72992032688.9248118520537008802205359470827881874151611075136', '0.00000000000000001413538780857322913068346761167087807482368455346793', '5.16377998802795794780049007018477492723093188473174173616389588298822876606582489236629797220136073532860057997777048856237946488833747829455507280628526250391295745891897315488435542975037666852668137616e+27'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 0 }); - T('5119117400797949493931501073033165644033469269.6829', '0.00000000012728547938966837104138082411164260684491082384529801120', '4.0217607109185015869038125517519539780970547769657431948364246520268330199307627984799823558533852492133620889509131647176046953722738532406336195842757406761375664746788168745291236250612131142207061713737039356124325227988419646489196356806439935591082014024539e+55'); - BigNumber.config({ DECIMAL_PLACES : 263, ROUNDING_MODE : 4 }); - T('55364515639999012.3694564', '1233', '44902283568531.23468731257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965125709651257096512570965'); - BigNumber.config({ DECIMAL_PLACES : 166, ROUNDING_MODE : 2 }); - T('36579301894.3272', '0.0024385689135275134684598210661763159636717699186160855486280', '15000315017307.9942798524140248776004846185613110063074971537884183495711084022282941766871430522924575895996373723131958845559105813285344961758901225035253726600468182572254974526'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 5 }); - T('-0.000036644420369185350500335611154538522406078126377916', '0.0000000000000002017077787157820510', '-181670833928.6184015374396921160292901271172156517136818760012274887799007411778794167435492509992280818256731982542776000329722531822320356487724373495232750106901001140927407119588816698128094'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('798375056238124849780744954513979594995284817168617741486027', '-0.0001514303631286191311668941584594', '-5.2722257263559208237590960912449915312558983622840023031622957900413917295457780182206488059586588916929123994128751334544538192256970000413075755939847e+63'); - BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 0 }); - T('1576512259467293381001570881.46563186796470409100093255', '0.000000000000000006105805298664153', '2.5819890781846706075186292775660987821206616709197826912550223225697923588454236189264964942580307240332585725600612198326468255268116335022203770858924348716226099521962235901645060143418731130749531388565300183551675084414656082546566803219484188986559773763e+44'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('511209204698.96020245275211030115894313', '-101356341563180051638269163.05304', '-5.043682e-15'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('315.98', '-8.482063190', '-37.25272883754595089263889343884975230890728603496763150145784282939302177021390476106556805785833'); - BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 2 }); - T('-79.0', '328.1', '-0.2407802499238037183785431270953977445900640048765620237732398658945443462359036879000304785126485827491618409021639743980493751904907040536421822615056385248399878085949405669'); - BigNumber.config({ DECIMAL_PLACES : 293, ROUNDING_MODE : 4 }); - T('-0.0000000007057906', '-1376221693595250111.2', '5.1284658807854441473166477895130637369491854222125750409011651561470023220989378084334186208239948650179912699354694059238918124651341765278796076199179877802082069338161665378524997774363526896411418582170912058143976851253119226686506620098742279341971906586964227e-28'); - BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 2 }); - T('-1', '15739694482176278081652', '-6.35336347304838628156373018103107499116109637719197814569978583183740183607310083351801943904010533454975641981038277571136111425226698902310886537212268029809956782602373467609333206168376476104828e-23'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('-98959741326242472136877.58688437409572654592968874916748003', '-1577026721.538198057441472422328913123', '62750833562109.3736755505302911623693757994065497857179220345921'); - BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 6 }); - T('12843568.6', '9756619199498069983585883200769346263965', '1.316395396538663552943843415543396294410996492367201828002765168307733262083670579921516561939775006580978870013773678706424438359288943809644368754937363031859741185605881199640059139818693601860316658007786605275177671201203669231872590548443156892324734882047645e-33'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('-3233146837471658213114171357041562518465680315558338981', '829330838922.619', '-3.8985006775725701598387256024613392488467937075873681876754834360265681424e+42'); - BigNumber.config({ DECIMAL_PLACES : 270, ROUNDING_MODE : 0 }); - T('0.0000000000000000000266671546349797639', '0.00000000001970429732630583897435599847653340972347', '1.353367450428100152341066904082325043611411338063074527785432187349727925635936105294561325527648770473547163455437660994400601851671110210333376912032198811485829361425678558987155990920072055290710462818538743685439393924736667429844343424052118413628867012933e-9'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('-6397147143474.22067087747735649585', '20202372624037678616281194280.01412209129899031232808211657', '-3.1665325962073441726920788992e-16'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('88351.9303446', '0.000000000000002563399390160317591101025938358994532557855', '34466704909013176013.82323112303980750644625'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('7.0933185579325449012090422569728120757220455', '1437825366756199104371656176529986848721936954126270', '0'); - BigNumber.config({ DECIMAL_PLACES : 215, ROUNDING_MODE : 3 }); - T('0.000000000000000442159492382513128427571751220494405137088137523248', '0.0000000079483115556786646523559916289715061611963', '5.562936093850179323090933512066164062507170496326604025267404120950833681722276043160122632116266606550423105658529701923436061669773008126464992892726071224764309212321494563221354505940260790670840668059225e-8'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-0.0000003504228524237', '-1032952077.446644962044606319803815615152', '3.392440560165293626459680787251958063761e-16'); - BigNumber.config({ DECIMAL_PLACES : 113, ROUNDING_MODE : 6 }); - T('69124597843.50539947142644802980', '90799591642662819371324783.949177998573604217890931479', '7.6128754097861742608339747459251817571899075951761421920492207126528165811658022258066410622469863e-16'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('0.000000000000041132818206403790315863547877080363482551563821657', '-0.000153262430323090275701451205036963970857022878', '-2.6838161263456609097e-10'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('197268470.35', '-678630004230.56963692051966802414265516509321274', '-0.00029068633735648469315'); - BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 2 }); - T('-0.0000000000000000005987629601880069531317839363724947336548709470219', '0.0000000000000002510828614302796337610733655803694598620621022', '-0.0023847225444906389292201702013474109939071651818878048195707052759343733264813941364372150528789500908744837121876621032157353348814714417719166051739440585895734373385936856191700260518114458716265397093970984364925853922267727967826326276508495827664681205912342231881785075023'); - BigNumber.config({ DECIMAL_PLACES : 232, ROUNDING_MODE : 2 }); - T('2.523992393', '19453657223.261', '1.297438504253086301560251588035949755025793954483016531450474641957323549087248074088687167193582901415064933404099183164759832429067452564521491922694390666357880445731784713047835334005695458419690768566620626602376729688e-10'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 2 }); - T('19.82961545454921640774848', '-57882836397629549740115286663914824964586260552285469229.384', '0'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('18663245904805999.515390848', '924.89476306', '20178777792036.511777576858539683815344101987394812268773016357'); - BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 5 }); - T('178455.36407390127', '910.12193057856733033415608', '196.0785231935424765559140250745457716018895078438259823853720631173518826313275042638655970214751138140716784965181892650219031806922873638816234955316418168022543663282782427030262850682838162105293927127797470161988166762219845863444679433365144190734011028821264'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('-51385327564861576919746.1470481795793562', '-79771673', '644155069492670.37335102834120301801062'); - BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 1 }); - T('-314642.35022790', '2220006965113139045451.39152376707792515767154608909393216', '-1.41730343720730067259018251625799227007544749801321937053214873543030134393793452012757465529271890036077684965623138686056961571194281081785327910258848569949312260933786604892957768936185278157312741930243467837056757482e-16'); - BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 1 }); - T('0.000000000000122091688910077661372629911120733960', '-5567.25555803168600421124743052956612599167', '-2.1930318742767291732899571027508445096570330070627677977557241821878889510713429017196441788995865311653731842480839745751334050264844723430747930595996833333405737128680094769207398223043558909530003544100598892212886394093958372500696080834031966e-17'); - BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 5 }); - T('-66429.03', '-0.007674499644926302413', '8655812.505498905719889403106838810325574563697689183974559619689046726558122139841154741099420517037842278668055285788526119417809910822865955745617915832596383711322909237615920560595'); - BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 5 }); - T('0.344155038684519819076171328846299372051125570825309', '277282243381178031028.7156205784378126423338721241406472', '1.24117229609763437712196031424136652295152755387397907148470754930983485486550715142800920780286300487413596423059452697216062899090317299652327454237404496631536864973134321241792915621551031151265316639439231118207321e-21'); - BigNumber.config({ DECIMAL_PLACES : 297, ROUNDING_MODE : 4 }); - T('-3807578562266890707.2243009426024368453763', '-354724245395933.67738801081736665507490', '10733.911232983169109269081528401857034010514263051482164787116911884445385237395261145573567863590288009664501760381712136025375241515258819537810357330338287645974373725477248216436776472288370861520609535883234959136868073362545734868170529335354625903818728859211695271094684228650978661486103585658'); - BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 0 }); - T('-0.00000000000000581524533212211', '-1693.31953804599397966807376387113403404969823271727405107526', '3.43422797733298001327084246426134700229059731711546098146484504703195468645128919825421305e-18'); - BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 2 }); - T('-214432650823225826170450832412705161181650881284515.97971505', '-0.00000146953053193119636676554385758', '1.459191532015515782895028709758958994348694755148926568177454618952506950876539033795504849627847196214472843119238304481924692200068596202059000308055938525040311180969611781332383836201777726641568350014e+56'); - BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 2 }); - T('-2.753084133516891534631878384376841322396312328', '2609771981201343037805059322.650202155118081', '-1.054913668070563905743945158180639266096819982869283724949037469462506310335725713526150444663723427081343446746909521762109867317322971611118047687743055211032201759025789187466612778333639241735442192514e-27'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('-158020.0971401257134721778352449209026523806838', '70437.9630479793648724466291471181932299458498755680970', '-2.2433939072384744948424953804068249910026085297915822901714893350698697950765239116'); - BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 4 }); - T('-4064938332175191470776362396353171030862288332293', '112463265588208754675369735739438790638684.673570', '-36144587.39851300536972642235921485108381275408420090638480520011678815266627288760786459018500429386107754962590285012391114337432066372865552910100148072969401124337020066914964758781939681400771331388045482062'); - BigNumber.config({ DECIMAL_PLACES : 243, ROUNDING_MODE : 4 }); - T('-0.00000000000000003545434645', '-31652.9344236964062899182621572', '1.120096670198695202773589854997853984349649640076178532531654703870663918982750592689123929465498772432329970391738047419021331869477263529243482236131671611550607722163644504740925005258655827352743085916853442614196493578e-21'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('69707702181652340412996942393807028632.88874469', '-2319.99966623', '-3.004642767683125263317419558980960803605242193242106395869763685108200508001760154e+34'); - BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); - T('-0.00000000859627227', '41942015753.46806653930', '-2.0495610703424998316084339065959867670131919381975808837334780740698806549875476581140075106840980671647283008963679042652012802774122673512749680851401960572257400982091239326932597757908113999250803005938702047873036e-19'); - BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 4 }); - T('-0.27858502', '0.0000000000002148090475579216136227161437208585590658115618410966795', '-1296896118516.0587061143807902704492642316338816051013663356531763378260238060766132300335935915635302703031633801406898207390941630567083211944589375577080764059644075477119482033437243786485414714993379133959193'); - BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 2 }); - T('-3368832017105385575764034400463912956348479905841608480', '-0.1124132611646011282373808347675417388616', '2.996827938451650270815982416204714251537984915988789943325557540012137462382804039504751820181310578964802993861026651536150894386125119136843395074880905121533532153583195770581161738754114736440056201490378798176609279105e+55'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-0.00000000666996073516980102135350690038051557076952452', '362109938.0183', '-1.84197119020597559339722219023682910076778527811614363760012179348670008382700998519e-17'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('-785.42455826', '-1865535659575425468295951577.96652336125647929834911411248424', '4.210182497604e-25'); - BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 3 }); - T('-0.0000000000000429749659666943840335226914567618834517', '-35944687155795431922180096044098168655936813506930', '1.19558603418712594262437246257423986551097591657336571183912550475137058755500464357888770059941959411115322700999986775430787279774242827072890744098884609509205395094560840672209834724612412567384353637838751379317020925880218007905708e-63'); - BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 6 }); - T('-223597368931.2372', '-0.000000000000000792399246152032873616480092538675958', '2.82177664879222914780541865004991714011648597296273912762933197172092177661703327060936941778993381399619820041299007909909260249628918e+26'); - BigNumber.config({ DECIMAL_PLACES : 203, ROUNDING_MODE : 2 }); - T('-3456992176960', '-0.00000000000000001242096384225362694977819624176699928353274', '2.7831915629606828069887131870368319417750565165038027057508787543044582832424397575820855800519123910140023283600820223394046375153945318982761556842511255832125581448133500782689354760136916627010446313743375055074044368759730774131e+29'); - BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 6 }); - T('0.0001185260873311176306096326384045841442409', '9673394116406.0731580555833298951718568087', '1.2252792133228338798006852463335050193973440006501469758787125353507436998980871417633705733080188399867544e-17'); - BigNumber.config({ DECIMAL_PLACES : 198, ROUNDING_MODE : 3 }); - T('13065602.0526445508170768742500490102', '-0.000000030962951588303796262963712611048701363279', '-421975340929062.472732364965452838405972812344309392798081291291561825045438860601606538999180636277175652396026866225597783260733520928245547177502820184586765515281541111862479725038012952649729618169588548738219'); - BigNumber.config({ DECIMAL_PLACES : 222, ROUNDING_MODE : 5 }); - T('-2170.57', '60778803956902432353893381', '-3.5712614574303351254417112539184517565776619585813969475331755275054595527580193310627295098058718197435664946123235268400962128066457918239225758638812422508126933055633095771266818804694261696702234e-23'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('-452429589240494229.412637104524', '147.78352936', '-3061434458899528.811555222316853185756126131808603599856535460400646098089641672366133563'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-9636006563886901032.38711887811666657', '-526693.61387', '18295278906239.57193108907378770353984660512739776386687253304'); - BigNumber.config({ DECIMAL_PLACES : 177, ROUNDING_MODE : 0 }); - T('0.00000000000000420', '-7485872742485628155874561090121626632152854', '-5.61056825901293822488108761867032420165735067943904954187630777406056144052739126719984089981724398989158903562179426075e-58'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('341.132567141533589477106912356979040174396447986233982362', '-61', '-5.592337166254649007821424792737361314334368'); - BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 5 }); - T('-493844617493728135650648960836996786798471112592932283', '-0.000000000000000018385574974244991697', '2.68604391315212588404336057639413755277716306025746617256821886681466898635115033963694204129871990836176187816418993149942746327143728473556550780208205687573190697173156146919364512267020252829767465238363244705336071431867173484274500627836290330930763405432815086014481888598351708831171681770141270491048670437553755827398e+70'); - BigNumber.config({ DECIMAL_PLACES : 239, ROUNDING_MODE : 2 }); - T('-12385216271220514017.7103345430365388082240060', '0.00000000000000000021502740756141811181388594100149557', '-5.759831461337287569025273529514240303245826030125384486883048647860020416224599306600826339089902902165616372521378830619153978452824992419123313093694089460726105193107025254012289341941649527241310405619815332517834647536669693523177344651834995919667246658028133411515770346e+37'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-0.00000000000000001161983508956321382168280764700467', '1372912056706881822885091176839074542.911487968608916', '-8.4636412309139338e-54'); - BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 2 }); - T('0.00000000348944204828108020921942879627575', '0.1132658385675712878912248', '3.08075417302400046925398397442666845714320923353175280997200834523319465313552222621235722062791879077261021e-8'); - BigNumber.config({ DECIMAL_PLACES : 117, ROUNDING_MODE : 1 }); - T('-1509346.46114520', '-60676.7245830285451006625828', '24.875213214250667696341957055494376699446097123293815250060926516859436333220035817598009189880736821244337291355056465'); - BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 6 }); - T('-60493722634666202618279995741.9152', '1085119925.521', '-55748421176231995910.9248923544771616679302969863062050677343033395229821810787653573479108761381728692632862078482504002597330810828849768'); - BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 5 }); - T('-1494820965424.92404952076160', '-629079919004241555460452085869247341253.439559', '2.376202005924854925988177714967899229584440509335776722433658335411978107928e-27'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('1679737228315247611008680811886881746898.012678826', '7116.46', '2.36035504775583311226182794800628647796518589133642288441164e+35'); - BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 6 }); - T('-310.41395933724591435408865483888484178701950363457603514', '-6.733', '46.103365414710517503949005619914576234519456948548349196494875983959601960493093717510767859795039358384078419723748700430714391801574335363136788949948017228575672062973414525471558'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('0.011', '175004523773376368811209423974.89465521581672626', '6.285551803360549546152410813657247213e-32'); - BigNumber.config({ DECIMAL_PLACES : 107, ROUNDING_MODE : 1 }); - T('0.0000000000000189734448733697221505', '-0.000000002402762696384977186572094', '-0.00000789651216989334560220014280453792676801477711345168795812931187815738492650235674220478030381217345352'); - BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 3 }); - T('0.09819456516372840371284202496477253430251499750596070', '-2696.32214084024151668', '-0.0000364179649294904048913413431747308181483800035162818551645670946952058381858182064988560493386164015323213730997'); - BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 3 }); - T('-270.807', '683439897.187302936237800', '-3.9624113417215804144275575950992950014709627620404373386667559311809891153595211180278516684355738319773499668426471866722988661122264735402715385336852396071443395093570732168386956e-7'); - BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 0 }); - T('-36916844011.084', '-77073993.9199556052600758116865746524686101', '478.9792527090733662521624438319174623714130825393066899777619000853534442033025812833031552359261923124281382475123884609762492055180240309019401670245912461813142763'); - BigNumber.config({ DECIMAL_PLACES : 240, ROUNDING_MODE : 6 }); - T('1498756.379094145881908367180112795514279970825151692477439', '-217.5', '-6890.83392686963623865915944879446213462055551793881598822528735632183908045977011494252873563218390804597701149425287356321839080459770114942528735632183908045977011494252873563218390804597701149425287356321839080459770114942528735632183908046'); - BigNumber.config({ DECIMAL_PLACES : 103, ROUNDING_MODE : 0 }); - T('373792319970831180573921.680169489813', '170474937115919273281277227438.552446131', '0.000002192652634426024047352948701031803098142401935326380995080895542582154439299826979728263449580395'); - BigNumber.config({ DECIMAL_PLACES : 176, ROUNDING_MODE : 3 }); - T('143.23406091649624237', '24617124520581100857880326750134851911568955496.04148237887', '5.81847245387029967525642263541659467319235687847010473056511924110965224838250018372170219431500948864714294914447920197966483247687e-45'); - BigNumber.config({ DECIMAL_PLACES : 237, ROUNDING_MODE : 6 }); - T('0.1037658134136542454549718806147427342838', '486676241503221568296817.2031384689341793', '2.13213229996902087263184936369002646696477620702908795399290121226287075412860814248158704404807703971834997522375601251700095150779468851319233223570961638018197560337633623108115293122817414343910052981271159838e-25'); - BigNumber.config({ DECIMAL_PLACES : 191, ROUNDING_MODE : 1 }); - T('144940144163730803', '-26.23522648279107856251491553390467018402973730', '-5524638571685435.00665543939781189704858014752697856515035883477991258946267088420595900389279838159220006108715817423857836009982626608845809845438174913951185281785176165492674117315365837527769844691183245'); - BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 1 }); - T('91370390607432135043833484575112704608745763.3', '-24015897771863707460528181375397913677228.5024', '-3804.5794279853612143238701883472721463912414199732655528079740189323889738387848435737394829030319004880988613525749565134322700284372512393081012332153349198627899731479607820794982783321422716733988583734732808320261480884913381630779064668725123215709337854770430981876387321'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('0.00000000000010564283139916068061', '1836702626815765.684621966886341353', '0'); - BigNumber.config({ DECIMAL_PLACES : 222, ROUNDING_MODE : 1 }); - T('8141733263483523950536891097903628428299301008676332271961.3', '-1.015', '-8.021412082249777291169350835373032934285025624311657410799310344827586206896551724137931034482758620689655172413793103448275862068965517241379310344827586206896551724137931034482758620689655172413793103448275862068965517241379310344827586206896551724137931034482758620689655172413e+57'); - BigNumber.config({ DECIMAL_PLACES : 265, ROUNDING_MODE : 3 }); - T('-1251082911783', '0.012295681563529171929962302642510870', '-101749781443096.1505358980581083912974525420001278848062978732211896463100008307393560536117459270801203102481508062216669336487515741129284311489109985245573107351348829887676314472042816413829359097701465060538681506643926046081744702186233208613091445080493800738076378769192381'); - BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 1 }); - T('-143906596499234149655948273212.064434045077725571', '-0.0000000000104067197154650062686077977130122878058268600045415771069823', '1.38282379495029892160047614332417108848571694219143535307535632425803199542551561586361007754466361251719545894912571891484622944160776814047097016711094323933111847523140818794906586065200669369363605090427932192426657927806969973980025632046944224515020659540685734868601555501621760362e+40'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-228394458183785537696136096189', '-2.244', '1.01780061579227066709508064256e+29'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('0.00000000000000001282674960326596381048951594315420029152567073542478', '20579.8285767136017929', '1e-15'); - BigNumber.config({ DECIMAL_PLACES : 277, ROUNDING_MODE : 2 }); - T('-10897409776353933242513', '0.00000000000000000001382960249336675355529178526657', '-7.879770789927461328156899205340301449839013993783128934505656104289643219119885202483761429947276290177636286677085904944040052153999592512022379675143200677517091671777582251257433111303648545390004173378228821151300976000997064967670248517083597646485647288918528344143533902405780804470851619245760208447272146577516e+41'); - BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 2 }); - T('-4190603853.744986', '20.1070309210948423214925405', '-208414851.013558027625631868856773395159405268670565956151152023664877002151704685570394263702919328566846654652418680789360498409925'); - BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 2 }); - T('-0.0529084517767297839967464788640862582172932408507193848376225', '0.0000002487933343362348270682587825797133032803239769917019', '-212660.2463763197241937009051150062082328295144658321609489836639836476243136425836057695327556543013795011583774737176409659351651346841'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-181.2', '-0.000000000000000000412282983010075543837691711983618505', '439503951089758557107.25859278626467307696375771506188111618825926064592928336917933761904577475520450146308114342902'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-0.0000000000000000000148222252872730424', '-4.98250', '2.974857057154649754139489e-21'); - BigNumber.config({ DECIMAL_PLACES : 244, ROUNDING_MODE : 3 }); - T('2551323472554.1407949247678', '-1454676541660860888114084063067825178832856', '-1.7538768238066143389475473183623988849891860145200130558859657751591938208039651149659970128340006320340305355921712194913145154183186376240719320319188734135516716569433817092156290844105414465495860802206887853415e-30'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('0.000001442076145115913636245444747615', '286.0795703792537022764363578', '5.0408218357017360328794508490717342370735704330378958675254417671269217429167997e-9'); - BigNumber.config({ DECIMAL_PLACES : 132, ROUNDING_MODE : 0 }); - T('-2325629707643764.03150674', '-173361218513031.3', '13.414936325386695247355615224999902566550423557876131711027681573627639062248435610113815397726475009793536875751005885500429365084777'); - BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 6 }); - T('2823281046511.85672506534131817966', '54.051936216425770', '52232745839.248838146918831929116815949761867699327300071822785402815143673132676744115735715620971071789737700425397160379308004973120166436381458685919904703812948830374190730479411191287042221375'); - BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 4 }); - T('203984296.54702441665048979322644638399', '-6006528911617744430.311485', '-3.396042865164285413358711220853449332270972842417215264553826694865062113305833977338737944123612446116240859863177249510552536118085818537881371503397909402944e-11'); - BigNumber.config({ DECIMAL_PLACES : 134, ROUNDING_MODE : 0 }); - T('1.038', '0.2658085636849562201592625901942631806928', '3.90506605810588845991225401366484989981460787174802789814564503896347413002089787430061321768750017961097314721138696498955603361222665'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('19270.18206448403351139832033908280583718', '-0.000000027', '-713710446832.7419819036414940401'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 2 }); - T('-7.6779939679598', '-71191372879152203381340303099724876309099.450848310617097356', '1.078500618465841688338539770085180349799362678488625326291561596810540608169996776270300124207553667411820435426633818477791071303140173921988e-40'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('4138.044', '-10681771389609751276841931107483558622710', '0'); - BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 4 }); - T('-4910225019473700.842236835817', '-923727505.7150720', '5315663.96918387568903730268407317577394691311370254471956910489775692131474548087817556054854212181051476633545905402802812861794114273225153253844425919164287166193405540626127738020958449340400662545239483187685866599820573707754975551635472976785420141347957424615209859389812859828622011960797465550372'); - BigNumber.config({ DECIMAL_PLACES : 181, ROUNDING_MODE : 1 }); - T('130.6225882684837762105837888716938451', '-3498131947095444632171564507923323005451449988451726344.69', '-3.73406693183605660494123265970287129905614719489716390528222903937528652266687501483847522231276751584147950432190464551895588792e-53'); - BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 1 }); - T('5.37697763', '-0.0000072152260708899588489795556624888473470', '-745226.494245769223271470655514514117965181356243958711874110194705793912318861490275399506887285810346337695627100796266'); - BigNumber.config({ DECIMAL_PLACES : 262, ROUNDING_MODE : 6 }); - T('-13.683707550705175', '-11460360.05752569262315724123133592260252359874453', '0.0000011940032845407394761132518201266542432139836849185956890963942826533021622328711029282052931723127130615921689401033688458155376710911643283438238818511648846438205068707928523714274858412087737126523654704096199302033643663953660340827960787478592510412953'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('-1.1', '532959986098980624647949943202670187587200425318382177358', '0'); - BigNumber.config({ DECIMAL_PLACES : 170, ROUNDING_MODE : 3 }); - T('4483996522799.377840', '0.0000000074492182450048110743959432459968678', '601941891795986956316.72081414644162380311384871056002667826017136893174457937843305960356642660104629457209417035997166310754024901907557126560927736464421711586999620047110960869358028374406'); - BigNumber.config({ DECIMAL_PLACES : 127, ROUNDING_MODE : 2 }); - T('0.00000011038111639360927158074252077008120661994335918276975', '0.80261606693665424071169253556846972473303944187454175640', '1.375266717683599561261999012603185478788185745201251377562271624996674163339119665565198908619639639637266939120044609113e-7'); - BigNumber.config({ DECIMAL_PLACES : 256, ROUNDING_MODE : 4 }); - T('-806302.349', '5515170738878548042014545448842819.706566505', '-1.46197169076936519559730078104198629171471867776887285857209891716487487068868878760148367528817718076659326561276837904805583947580014216286433669317201120332142304258671720194906503594277397136095615955723151574689238719577451e-28'); - BigNumber.config({ DECIMAL_PLACES : 188, ROUNDING_MODE : 4 }); - T('18010382767088062671419.75360076164312909114774', '-1914068173845009784501461077482788607', '-9.40947820625872844502799793926282464443414463411276146178726438954482953571793756741062034654357408057011755990911118078603022710812500938514329675051465836241420519016364164e-15'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-47772992246.9696659232869282786313812740', '0.30', '-159243307489.89888641095642759543793758'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('141990.7689498908574158', '-377639', '-0.3759960410600887551757101358705006633319122230489965284305911200908804440219362936561107300887885'); - BigNumber.config({ DECIMAL_PLACES : 153, ROUNDING_MODE : 0 }); - T('-2962.90745', '29.14150128851816098897490329004872', '-101.673123174590680132144567856578947132497869769968043035639134249369219471641079048742094079255916965724333361585440644519985539029984661562087382365966939'); - BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 3 }); - T('905992035566540052337247037401911576333', '-0.00000000000000017615773598476110868610707', '-5.14307265872737361703517709105328056126429592535814861565643256855617080424398169237812353435755784015944348338942480480193692613979709866546803354633153171768590698114532e+54'); - BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 0 }); - T('-11130632183625.6586719502347007698765143795750029439678', '-7932312441403617151965652196197', '1.403201432854314179426490150814308806683187887341950793212225434004755692371191395477402813916847593042422825948110971905311725834610326422454272722727864056450312493649248698e-18'); - BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 1 }); - T('0.00122708758480883764056897977998910400264555969042323', '-9232511657147698271218855271352592', '-1.3290939999613662572392840585486205603105869549607461946562719992654984424663083886079004119808992248343930289938860263003250848081334155772111463e-37'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('34.668564391821', '-7157395069668207214.775700133922', '-4.8437405025664062096058445e-18'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('-0.000000023021840268591836196', '-3208926912036999079.905', '0'); - BigNumber.config({ DECIMAL_PLACES : 139, ROUNDING_MODE : 4 }); - T('-0.0000000000003594223783132442952025609288685373148302380', '-5082879.56678022572', '7.07123538126483908189046777495526485629357335627016313939776228214609650600242427786351650812622416769560164272408780253e-20'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('1149295747227942158446', '3769467847401296005982024834.139786579364386880927', '3.0489602080576882104834481876350470109876192294303918669418259394833046e-7'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-4704704975.2', '0.0569175072995078493129513483846432031377593558', '-82658310218.035'); - BigNumber.config({ DECIMAL_PLACES : 274, ROUNDING_MODE : 2 }); - T('-548866899699491412107930350', '-365026979881703612745468787941335', '0.0000015036337858570505027564615989732516410756650320570810475497884499675250239480775416477157200159419825802384447547761003188184299751313186203165479933567102519507363983828086206400321681365867861082975579317290332328567652136189093027879598714262345816310778106071841442'); - BigNumber.config({ DECIMAL_PLACES : 124, ROUNDING_MODE : 4 }); - T('0.000000001144809503826049447899406852024433393516801693905107475547', '3249798939885326147062423092', '3.52270871214711426418052424059243914521961096129310144716093379919214709302287842002521e-37'); - BigNumber.config({ DECIMAL_PLACES : 114, ROUNDING_MODE : 1 }); - T('-102545071096316233997890553072.95685369403376313925802258663', '-77693492020751755.018198136607646944', '1319866933885.873976796802743514510409781586039525249696653518917366611887321297822332051432830845672200367273749403186523474953'); - BigNumber.config({ DECIMAL_PLACES : 206, ROUNDING_MODE : 3 }); - T('-0.0000000000000000416333200825886392936824140474669186581173', '0.0000000001125116566276869484110591846085902445242457', '-3.7003561524614048127087995487401400938375832841381786997089805566405053873396052004240685182194881152645803810632400749261807330444089587148783604427239587648705861382352196902412428133812908509511231e-7'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-9517.93', '-110225103619777768147537067303713235463261967083072.15596', '0'); - BigNumber.config({ DECIMAL_PLACES : 154, ROUNDING_MODE : 2 }); - T('-0.0000535496438', '-2213229575797455', '2.4195250409440862719692934168326063139110880225518553812818582848188605565149180490706193582192616596004319584620305521467023709177804e-20'); - BigNumber.config({ DECIMAL_PLACES : 118, ROUNDING_MODE : 2 }); - T('6295317089303.6', '26548885.73', '237121.7064748577679760874845574921987507458377990464912818772375649529755236172015419646766470903033262631772229937576366977'); - BigNumber.config({ DECIMAL_PLACES : 299, ROUNDING_MODE : 0 }); - T('-26058953500276139433467299710132.4937626975185', '0.000000000000000017', '-1.53287961766330231961572351236073492721750108823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764705882352941176470588235294117647058823529411764706e+48'); - BigNumber.config({ DECIMAL_PLACES : 253, ROUNDING_MODE : 1 }); - T('-0.0000000000000001493042630', '-0.0000000000060778603690351038741771098023753392098433733', '0.0000245652670404639340204435110423919704729217439347602130414403104881091553411817461803275259108437760918366088913847774353441559659397553361889939945317028793802041505764799507565698417575746333387012890730188442902601582761312145371268672096868323951'); - BigNumber.config({ DECIMAL_PLACES : 146, ROUNDING_MODE : 6 }); - T('1276275760477065658755865687302.679006899741223', '0.00000049608790', '2.57268068920259022394189756956918120135512521672066583361537340459221037239569842360597789222434169428442016021757434519164849616368389553544845580793242487873620783736108056656894877e+36'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('-274180362390551633923434746270311581362297550769077', '3094224947392109923347536.0441182400221', '-8.86103522052065710762472972244408604727688902925940984797542112e+25'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('-2109132906322452570373149329314.66441904', '-0.0000000000000365', '5.77844631869165087773465569675250525764383561643835616438356164383561643835616438356164383561643835616438356164383561643835616438e+43'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('-0.010224419800061', '11674132424094070888166', '-8.75818384495876520879386729450740899613e-25'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('29172443.146', '-2824647549173228850820421484511374630826957616507663195', '-1e-32'); - BigNumber.config({ DECIMAL_PLACES : 199, ROUNDING_MODE : 3 }); - T('160145386.2655', '14.02', '11422638.1073823109843081312410841654778887303851640513552068473609129814550641940085592011412268188302425106990014265335235378031383737517831669044222539229671897289586305278174037089871611982881597717546362'); - BigNumber.config({ DECIMAL_PLACES : 159, ROUNDING_MODE : 6 }); - T('112206983448328.283044205651799295998783440522', '4321495', '25964853.239059233678207576729649345604574463698326620764341969619309984160574060597085036544066347409866261559946268594548877182549094699866597091978586114296094291443'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('-1395102637561809582728128415381628972549040.522487612357520279', '-0.005947979803', '2.345506682551540571746168747677620472493457998528466687061e+44'); - BigNumber.config({ DECIMAL_PLACES : 238, ROUNDING_MODE : 6 }); - T('764305465.386829531', '9987.696501266061134293236', '76524.698692030197771079661311499247551427600932863153670022851997011077225380964462554209802957379021804709213601565599400164784952002592636960358288312473874027019419109539627949043898364241487061598421744213959406347133377229059465142590105'); - BigNumber.config({ DECIMAL_PLACES : 186, ROUNDING_MODE : 2 }); - T('0', '-2498081878584305986840601569679', '0'); - BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 2 }); - T('-6392133158902638801758509088074.9', '0.00000023893415336553956687861358', '-2.675269763181770542693975529838390691486277107450440976938935090338671840054677748224247380024502105881706235110586189459141031883700546791172938360802988329999673433225803185020918502800316976026322e+37'); - BigNumber.config({ DECIMAL_PLACES : 184, ROUNDING_MODE : 4 }); - T('-20.91563751600587109', '16274679431470471061471.3070452500572021335885716597272097', '-1.2851643317509003697116257448633857545972022161403762220420810226872249333662094734787351227239460231388803379983252654743292676249719009984592083286172992612631001e-21'); - BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 3 }); - T('558214.9', '-323292.3502380298119', '-1.726656691966278300106360497186621523401583735551520397140768277101421141514983724367449904265456491021270326299316965996634190339927522690463460438689627477902327379394648859802812519487662064677332186716106908815347451909679873924622'); - BigNumber.config({ DECIMAL_PLACES : 207, ROUNDING_MODE : 3 }); - T('27157176.93189846816074011563', '-1354864548700246737565542329828863', '-2.0044200697369329952604438421592536928919175630228569875434228577480235389860431168038607438639670478266888755317401383848302553523674535366349981668160582017449653115569024239078642e-26'); - BigNumber.config({ DECIMAL_PLACES : 220, ROUNDING_MODE : 5 }); - T('753056872638776281295490967.64', '342983286928292534888056003143.56', '0.0021956080699530346805824124500924919128264331125361508841353994360195836879040252411717333579739246373436225297245297271109222372920775107015804908608690460453343719828189748853867179653658051980406081817157275936107681'); - BigNumber.config({ DECIMAL_PLACES : 165, ROUNDING_MODE : 6 }); - T('165947641587434546530597443157214.02440979731262', '0.0000000000084776073504023745736416985342865847443661560793', '1.9574820433215527079662345632302427589890454112223870897240707386255000941355370633699082046009172856320831019733020255361550112257551779528995161866107885670954059766743190427206733370185273254454686423739695e+43'); - BigNumber.config({ DECIMAL_PLACES : 195, ROUNDING_MODE : 2 }); - T('65901726.1950363691852445503303823209330', '0.00000029925018464626969021489432429922372339', '220222842211228.251646289763843407315781448078421833368729521346170558330005423344201489496766411806119770013243242069591656148627303869840447605487189053222957932126125731408651742404954882326180722923645546036'); - BigNumber.config({ DECIMAL_PLACES : 164, ROUNDING_MODE : 2 }); - T('104.924561736729913573643232', '-0.000000000001849949673542845922045122704279571', '-56717522231720.21281340572308971058766086162714586350749606738382744506142904118902780673267487146647270637795655498837051503220521488172183493098955775372717052891414945139232077'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); - T('-172.31273088769687731506579273432389', '100708959275807032.0689', '-1.7109970367e-15'); - BigNumber.config({ DECIMAL_PLACES : 284, ROUNDING_MODE : 1 }); - T('-10058556026190767060589730526.64796078700077259921675', '69804777861457868983.2976486975459128', '-144095523.74987952817306983501618179681909099617002603624447096288935558942900781376738119675768364699037856250508453396919782599855688460689219693408216568367528231833815116493239714837307790187305682031211729742360057112895504564170000713684208501012318444852554356985080457213263239076941019'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); - T('-16611683.149189235892803591819111039', '-0.000000000000000000010983315399927853839748944417100990369541440601719217', '1.5124470657829195309444364255042433624060649922719269406973855811869720126685414817897108099464709518996694523706279509236997e+27'); - BigNumber.config({ DECIMAL_PLACES : 140, ROUNDING_MODE : 2 }); - T('3644346004620883867470466.2727301188344540368833', '2540411425014666.27901699818191', '1434549525.61467257763734041796695904484305676539521956214321230992602140227923499770842342719291942101857231349528050138026645873324034556053790978686'); - BigNumber.config({ DECIMAL_PLACES : 104, ROUNDING_MODE : 5 }); - T('0.0000000000000001982653514966263222419399330976618570323635507300153', '-1226', '-1.6171725244423027915329521459841913297908935622350350734094616639477977161500815660685e-19'); - BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 1 }); - T('-63167703649949659', '1641317088.16017093448657790', '-38485984.2778809373692306707474006982676284472451432293978403971522954547132372582677310087481074314741937725849727116025579430028038944728538993123682998036106197745502660076979267250518200954219564895474384360723906298667752'); - BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 5 }); - T('-0.00000364847480818972341867989364039317428862446666102014', '-1436716105182889877124376', '2.53945424223199818892202654422472356472617527625186191322012999743681732691797401e-30'); - BigNumber.config({ DECIMAL_PLACES : 123, ROUNDING_MODE : 1 }); - T('0.000000000000000000021734877338056', '-0.000800276175', '-2.7159220800314341483426018524167610012880865783615262568575154695814854165813445589580372050936040923622398e-17'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('0.000000000000000000203218732432793472959845694281035791', '0.00000000000000000075780816783661099212837016664301128224', '0.26816645829107627739963004668854739455312713130408145286865430457617075992'); - BigNumber.config({ DECIMAL_PLACES : 138, ROUNDING_MODE : 3 }); - T('-1663274291319493.298031772433330344931951159103843', '793935642240197129.32786338698642684', '-0.002094973701679822844974267240742764093693942839597131751996013867893673672589450763271640272825195404662888775516034051347719755745420575'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('878.367225', '-0.00000000211472437363267955633057579336354982804469', '-415357781823.42424010899875939160917260359275156346'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-9182162678.3101898431272789380128603186243617246100938', '-2.270088953696', '4044847081.1509104218993330718044882273159266452754765045932842583'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('93061156417143024', '-377797339784428253.941556063527', '-0.24632560004325034077851736382612253537'); - BigNumber.config({ DECIMAL_PLACES : 133, ROUNDING_MODE : 0 }); - T('4.824655', '-2101727370077783665', '-2.2955665271759021829101156105378933340144159777970106381649252093622129699747473730071989269847011584928175270242985e-18'); - BigNumber.config({ DECIMAL_PLACES : 280, ROUNDING_MODE : 0 }); - T('-1.804', '-0.0000000005828558', '3095105170.095244827279749124912199552616616322596429511381717399054791939961822461061552445733575954807346860063844264739237389419475623301681136226147187692050074821250813666090309129633779058216457655564206446946225807481027039621120695719249941409178736833364272947099436944781196309619'); - BigNumber.config({ DECIMAL_PLACES : 197, ROUNDING_MODE : 6 }); - T('0.0000000003625830106470833672565200086393389699', '-17646899429096805962.537081', '-2.054655618704576559685514068893117263531485382869965622628220904339657304024186830900647993830889370634202630270200174222581544091468058863449292018247236089323691557945e-29'); - BigNumber.config({ DECIMAL_PLACES : 255, ROUNDING_MODE : 4 }); - T('-0.000117386661795741118697895', '248940.406749455074', '-4.71545231762573537913038909050954222563362547734266377387473449365866139595150894369561912014772699789792409938711777326917468989680791660820530072812553915257300646130745103765254623158578032414094267132835729298942457209687014851948882767121184e-10'); - BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 1 }); - T('1733.56493', '231230767600133011452365586256235212', '7.4971205086247475533294384980690859155154472523121939279301042904155541616316099667792560753007147692462688678172436e-33'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-12.3', '10.39034600', '-1.183791184624650613174960679846465170649755070716605587532888702647630792'); - BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 2 }); - T('-188286696165756264811751388752520241649627066989496464555407', '619895834297989.5186149564685370341262317', '-3.0373925060971639267073115686212846711395175952508892449242277379495102265813837340574363087640964705111705501238947032140717695085946514912854851496123591969114496771387306287483341424067175283891660812525819708757114413318922858870554e+44'); - BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 5 }); - T('-191374651046449138.1865270700004', '177.8260810116768736', '-1076190005187611.3916403971557709523259316673527685172237725658156892342120642917122203782391339719619499573627468421707489340395069218214730845222055870771402141313930225460616763173658853103668469884276961492819'); - BigNumber.config({ DECIMAL_PLACES : 110, ROUNDING_MODE : 2 }); - T('14849749.55973', '1284630673209.47', '0.00001155954771236310153143237388837504477179962164242292948469997256623180189824988279442522469728678834267516'); - BigNumber.config({ DECIMAL_PLACES : 129, ROUNDING_MODE : 1 }); - T('-8.64', '253937.4', '-0.000034024133506919421873264828260823336775126468176802629309428229161990317298672822514525233384290774025409411925931351585075691'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-2503011291082741152558172157128490843.388137', '-2273195645150790262402.931328732531754275', '1101098049533130.39130765867167'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('29189820482592596.193394247499332295676386', '-2480577725438789237.6491735759692832420975', '-0.0117673476558486836715957424177052903123965597755245117764453359'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-20507863612708354363166284190622369882327057', '-227418.38', '9.017680810455317799364450749593049551371818320049593177121391859356311e+37'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-53185250672519396135716275562185131226.791835637645968173632', '9243266711148.428813267855386982276389208217282', '-5.753945259241729660101638834402808716798353128839954724530154790654628e+24'); - BigNumber.config({ DECIMAL_PLACES : 271, ROUNDING_MODE : 2 }); - T('-12475.4358268084948', '0.004391993121604150372445803131974373981469350783', '-2840495.301652911788696729023437904309555144440000089017507813279301024343184158066734106815961671791606628271520526901762721246526896632476472545227751033127109410945061587151932183132124557352971708369795566831334586449910029288658711353422367768139381681174858660496808117645'); - BigNumber.config({ DECIMAL_PLACES : 283, ROUNDING_MODE : 5 }); - T('-1.061527582', '-622588162.2617', '1.7050237160689786670000132171579846728112948140592563132620125578605706184434143949453353930664774310863026918342122051896429503615753617402955500341888199217844842775359427161238632596910587980933211392139798794756098583532542336854669701293056290350100117733010797576441992e-9'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('6624880631726252598700657.239324316174258217', '-1129984311845118795710.814766', '-5862.8076180178785553750906910113577915858495845090446287798885159922583336119886064223451206559829967'); - BigNumber.config({ DECIMAL_PLACES : 278, ROUNDING_MODE : 1 }); - T('4815883643854333118.271024728143949', '-368.5953640', '-13065502483786890.8146957180073050213404203314939142859105520383050721169678086347282436248981145622873325124078337566936951491337802067418297751569116316937724696938944679727442258335077703256191795184922618831418617625369807961013855833520467175490573994305582204772385579977072093614286478112'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('138905623349743953527527850872', '-937327256770725209505921244928173890636644.07819862538', '-1.481933042556565089980827972031156476687840906866e-13'); - BigNumber.config({ DECIMAL_PLACES : 234, ROUNDING_MODE : 6 }); - T('-6208734990323488049779245942519271680436514357', '-16439396720130815609425313400.4307949521370816', '377674138292471499.964770981640030360283531775688780671482014480415358327724618697815506675400673555585863158590221936886906953295141780645924064864511500032807663518140349742846854676656763960131048883933143803130286224213314548290566430706412428395964'); - BigNumber.config({ DECIMAL_PLACES : 224, ROUNDING_MODE : 2 }); - T('-465768500.94', '-10539299777418116356619191.448469210650420896634899676', '4.419349584665694593899304248585182563031829888288443702434463563338375866327380742592479728196546235594324793857865448380122158076819712183926789869614985548696907960359863344897655982112218722308083163102187e-17'); - BigNumber.config({ DECIMAL_PLACES : 115, ROUNDING_MODE : 1 }); - T('447824340220482323687837186299424.060306273628090749622', '-2183.3', '-2.051135163378749249703829919385444328797112756335591178491274675949251133605093207529885952457289424266019328539367013236843310584894425869097238e+29'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('3650548744170498310333486374.781438', '-4.0', '-9.12637186042624577583371593695359e+26'); - BigNumber.config({ DECIMAL_PLACES : 273, ROUNDING_MODE : 6 }); - T('800179073426120483927466569281923963429851264472839410285', '-36172.71847', '-2.2121065467881614923797198626247566165569730387831683756916155270649195418350320077560927645701492669704788156608789154131826575985844063104500202082821230659913960290195463432085257926151105778365349382047702095197270364291755150466577581499641157603049235243170265383706451631806261643127205086723469583899371221352388448233e+52'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('2480.68', '148769463685465001071952636.5141386445', '1.66746584853244056105967269762610107872728e-23'); - BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 0 }); - T('-136836811670713700861557.255968878', '545672226612627730.76575558051803334046', '-250767.4112720676216787099439063343102213491148273816922159514641846171462285523100534464265159901686009784034072304069339527969664615007738651985083038458230062620518459038814412990735841955289947464255'); - BigNumber.config({ DECIMAL_PLACES : 217, ROUNDING_MODE : 5 }); - T('624700348787847913238159215333907158566945121.726565926561', '-4218522292899116076446123044757', '-148085112609072.4016515420452922746255736738713614938679829987563348258191683370779348823094566326410828241440291637355496377213361007886462085431647056083445719007212518791140269925353041328118501830930452332270078034989866217395952'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('-8.1', '-0.0000000000027483206266799932973505588', '2947254378316.4427545062316262273642584624'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('0.000000000000000538267468788112414506281808647722', '-1138613423391806952522619221911.785860841391', '-4.72739437046747178862072134755421729043e-46'); - BigNumber.config({ DECIMAL_PLACES : 161, ROUNDING_MODE : 5 }); - T('-3658.24734249109979568369', '0.00000000000174625340797579000321364162105752750100291396', '-2094912070483310.75335991231530233634799208050209554484387062988117102541705537541246030902579328571752900407458511493583359910146212964018086524194340563363589661914259286802101'); - BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 5 }); - T('26031286190.843509157191486212811731', '216370152151930132931260950.669630', '1.20309044163193729626092412633591472338303842514731374950137461050850446462637081939144184493111023863764556752652926336549243371630379458781469205734360078596587871378530950424e-16'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('-0.0000000000019753705798340641860323061184641060495537', '-1007149456.35507516', '1.9613480078547927332917949090603337877709348935535037903271296e-21'); - BigNumber.config({ DECIMAL_PLACES : 167, ROUNDING_MODE : 3 }); - T('-60826395622229865.996', '0.00000011073', '-5.4932173414819711005147656461663505824979680303440801950690869683012733676510430777567054998645353562720130046057978867515578434028718504470333243023570848008669737198591167705228935247900299e+23'); - BigNumber.config({ DECIMAL_PLACES : 295, ROUNDING_MODE : 6 }); - T('294125529266567952532432137532929398803755068528125597941', '16091304458640213665627600', '1.82785385748286848025236449527635587440032090861225625821463628382514874670919706551801077754754002543885532667800082947987927574283754966769395404919267704333557768406816890479303221950772152692543194464766785551244078884849432903298600161237226931058203121771921781952764813112246656103933206382842047873432314314425531745039e+31'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('-2727182975624451130904.97996', '0.0009962903598090974433055774147700427748', '-2.73733751287828967917445007598257374e+24'); - BigNumber.config({ DECIMAL_PLACES : 223, ROUNDING_MODE : 4 }); - T('0', '-0.00000029096844095313187', '0'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('1385629943584886384592607499734583429872.75198882395129045', '-20.79111798997276760977', '-6.66452830604469719017692131500252360557477420956414e+37'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('0.000000005586736783', '-9.580178941542514980735388155102178556784478357177779312777', '-5.8315578624259741265524521811154589615e-10'); - BigNumber.config({ DECIMAL_PLACES : 291, ROUNDING_MODE : 6 }); - T('0.00000000009647784117027347345734523669', '-0.0000000000000000000266447293802537168409007092750059841002647849697060644164852', '-3620897769.063954017691505798070208352285583632538690026853095546666919752813308027288422488603703891621286222952783069677442730378012011293829775984113264283484850271031889878060266090614051002693447468159102569827893162384124775038203299290498906367958924807153983183056566563986016299839588599649576'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('317038202289417541212964567765364903987531016085223179273', '-3253614702.157886792', '-9.74418397111216279887578917143713190659370054140768229827370563614154e+46'); - BigNumber.config({ DECIMAL_PLACES : 192, ROUNDING_MODE : 3 }); - T('99999838193365385', '4.7790350624023625309480', '20924692304537453.683372489002990060151293910355880670547000901246628551683048842128952943591501443775624009443403368471105133712261831736470815329802887515739969861976357590341100228281201163014575793082962351'); - BigNumber.config({ DECIMAL_PLACES : 290, ROUNDING_MODE : 3 }); - T('539975262.6', '-51743500491228110640475991287815965362340286159281', '-1.043561524585179663937065674823747771678328836848832851642518443609812300249272324084815802333536699276765440047279286778900706986511962876066163639537839032470631639720432142752590570905692572210803956873991915626392483097287417399984563103904205364e-41'); - BigNumber.config({ DECIMAL_PLACES : 231, ROUNDING_MODE : 4 }); - T('-3129.92125878778496383927285147375179008830', '3713020330.9109205540653319036258930280764235978', '-8.42958287281965120221795812350772599183187218134705635779461837437291618438567320682897692969115682540077603626155296742917522602149410044443398577061446405727453002170110406555154189415889592877072547537398629337945163999826e-7'); - BigNumber.config({ DECIMAL_PLACES : 258, ROUNDING_MODE : 6 }); - T('329.3330750644104214067819800555349418510704376856', '-127896552520408653539.510064901452151839574621259561020', '-2.574995717823263656274120210733082917892852202039690494921186419116376300003045895018283005219396742263519695430408375138534997221029447229903615197771230551736264656433524741053000346286856791443143638972244414415861927059375416208888226744e-18'); - BigNumber.config({ DECIMAL_PLACES : 269, ROUNDING_MODE : 6 }); - T('-11767695610896788787', '88327785272916291721729723445817.2605487080468133128', '-1.3322756338265265265606662524451404103327743237596951271769488911447064094549173258808689504947090802500347202647049975690308900463530160556381253432160795271621678635972865913759272687226425139984000551802102926107323695329688050898505477884969965375691707e-13'); - BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 6 }); - T('-0.000000000000001043271755836', '-851025571.2355700326072725160394130658722655085687431', '1.225899421942533890323914559461582076480642272922596206808045672563091055513806721686132216340398767029331144704314687818501199590861207158214604686661e-24'); - BigNumber.config({ DECIMAL_PLACES : 216, ROUNDING_MODE : 0 }); - T('35160830697978950.2871242366438894659870477971538357064720', '0.00000000000000000006936514037650685337060683777351255238292', '5.06894825082592995637765519810874430011226792501991010917350150679320841149502398988161444846830912031726052933196678592175476705511305613291858588974656812474603055732254316905093682494430995263888022230210964204126024473492526645253836465472749999826e+35'); - BigNumber.config({ DECIMAL_PLACES : 247, ROUNDING_MODE : 2 }); - T('-1300438835830775541970072.633280585716480322191841', '-944142789123106139955806320563308', '1.3773751712265761968017329728900678897849146372848010670778310455461064937849396828350433872149406504961930112994541460674065723130152138129788053065023092971876470130764468903689969556928394385913155552747018775263209304263590429372204182e-9'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('11998675429601529255834350330033', '-406525947', '-2.95151527673620529216413099703891717396331408090908401475293777496568995139687848756182837205222720998913262478667813e+22'); - BigNumber.config({ DECIMAL_PLACES : 162, ROUNDING_MODE : 1 }); - T('-0.000000000000000000344323374206729909768079920652922404224779234', '-0.04696655233483434196989700881392115040841036148', '7.331246538003828754482176508969694410223032316011882719666774295908985850227829110954641892626569096497842844622279288361783600433814998268453539e-18'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('-734831971955212232788677194706753906200.2558076', '-18497118465537108466490973465864894691374', '0'); - BigNumber.config({ DECIMAL_PLACES : 196, ROUNDING_MODE : 0 }); - T('0.0000028352954360675712879208121277730667926342115935', '-688511687031402866', '-4.1180062582412694604065597324247413854514303759204226585577789046156689505848974302805434359651701192883399553343881656146647562181713191827898475435168915461423531159899671e-24'); - BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 3 }); - T('0.000000000003866856191732', '0.0004488070349547561000327267960685709844701', '8.61585467821781106259586484183453912608265521177893922572083799214947756895250419152331101505023668082705657e-9'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('-955302817.6043676871181547480488557246', '286.3', '-3336719.5864630377'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('22189014794561455089769648037933513282434596774291', '-54353.572508976923255308990248298456876262270090818596171', '-4.0823470786389916591263508386188160659674685742019734703047450100121431290059668081882390992435687039701453805154297371335687e+44'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('0.0000000000000041323330197244607770892681949683581783713684072198', '0.0000000000007920195', '0.005217463736340406741360873305478410794647566640997854219498383562525922657'); - BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 5 }); - T('-9549653.4', '18254902046909643153002806', '-5.2312816444921175048773792896046747126384672381807391811151001827922647106638853674990656532334407099835021469886815460811228368332928817789809408526451705294251195550544743044650092351121391586293777591522816213010935542142727745627247945426515586472910421355776e-19'); - BigNumber.config({ DECIMAL_PLACES : 102, ROUNDING_MODE : 1 }); - T('-1.6806464810246591931073969381119924560504868697938767415', '-1.234278', '1.361643390730985396407775993829584952539449678106453117936153767627714339881290924734946260080792171617'); - BigNumber.config({ DECIMAL_PLACES : 128, ROUNDING_MODE : 5 }); - T('122901866522252.847589', '-961802320671538794244416706794682462075362387666209564393880', '-1.277828758371488324380804809965041815235695373945264430137970281217686827795456754e-46'); - BigNumber.config({ DECIMAL_PLACES : 116, ROUNDING_MODE : 1 }); - T('0.000000658578017704', '119656.39033883919', '5.50391011996149602306607993401830156067707920993139295729218351631209953769670307993977306788799198181574e-12'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('0.000000000000000000371917760154464841748872955421', '21618652488', '1.7203558841648782126853574289296841765302536834043215321052e-29'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('-7.8857628', '0.0000033562997810340611206175184744460', '-2349540.6591989322696950297541293053454234564465069704371658291409315363667949'); - BigNumber.config({ DECIMAL_PLACES : 135, ROUNDING_MODE : 2 }); - T('626679773.3107457065273063712548652163223224368094679', '-1378.5565', '-454591.286835719614341020024391358073696886878999495414224951969687132881387161135579136582359881513742817214963623181204397498397780577002103'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-0.000000000000000000165150294704311851730419652617482212698453723107527712855', '-2485036222881054761280674830701410760109597.37691499', '6.64579023773e-62'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 1 }); - T('33.46621733915314904797268645723063', '-58153553796429316455578929933862745229089297041', '-5.7548017540431048670372762213353215e-46'); - BigNumber.config({ DECIMAL_PLACES : 266, ROUNDING_MODE : 0 }); - T('185228452630679039.88730854297473613625056', '15265837398805580030', '0.01213352715555398009338416726561339180217057267149634525421916812461621667507273841280098266753683602929832513898054650009251311567252147680062278353263185949356192144672944344393088704301387533342848402704311457481699078618245160205376747017176488989130300278391695'); - BigNumber.config({ DECIMAL_PLACES : 281, ROUNDING_MODE : 5 }); - T('-459294172881.35606890392213', '-0.00000000000109680098774575846113893396696142182360400339838198065948502', '4.1875798619158587384827552981696629833846824865087871775054806261259231977424547504399475441382643070260159617658000388755460382250530832966433287329816489320373152683277109644952383136010574428948314472879569942243842664827788187323266358072026595816891023177662575066552293694208276906689818258844247335e+23'); - BigNumber.config({ DECIMAL_PLACES : 174, ROUNDING_MODE : 4 }); - T('-130192.8958673824101799783742885006', '0.0000000013954450877380955676017223303', '-93298473018680.111473911191763226324004772626836696819272569649621824673970921667124937589200178387441270133766857849097381135987389527675883166405539542423570249377982463257703408550018423'); - BigNumber.config({ DECIMAL_PLACES : 229, ROUNDING_MODE : 5 }); - T('0.000000000146285544305667216396289278', '151722681442023752855863477639296327910', '9.64163979408483006240234724842259233538200770009767499900086709597520505828033678895674078149870324908853139975818325606244544454036677095123608834273384216028831378436379824732035e-49'); - BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 1 }); - T('-12654915918708900017274197715494848537532380.65722781232', '1.84', '-6.877671694950489139822933541029808987789337313710767565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608e+42'); - BigNumber.config({ DECIMAL_PLACES : 249, ROUNDING_MODE : 4 }); - T('-2500004574.709941621328256524353022210082736200559801190', '0.00000000000557008928177304730331910699', '-448826661161551564950.508109260877386664969593629737830669037817158737354932983635393546975604152278810791119966496891097246632116981870789107341459882548556739506348548357553738343057455157348191222048005846236301514899655633027390587728597077748870635215254585386548409'); - BigNumber.config({ DECIMAL_PLACES : 205, ROUNDING_MODE : 6 }); - T('-5588684451773363184639793500721501318209', '78003965425478851569600050960349979886133426074298298.8410', '-7.16461582598966353677682706222314718935358855970010244523590641879170747150934778342715175935109150886484154549230095669606747560914292624390288996811188490262415494981096016824770034711534505e-14'); - BigNumber.config({ DECIMAL_PLACES : 130, ROUNDING_MODE : 5 }); - T('975161.36195489989900238553798402773943401', '-5046009123800658038.644666', '-1.932539831042571707870972015882957659552372203880877313753126800493230385545598920483820209110305135482088767859978887e-13'); - BigNumber.config({ DECIMAL_PLACES : 148, ROUNDING_MODE : 6 }); - T('-258503054975054668728908940568162663824448373049618', '-4415333936663665648.596', '5.85466600450125640546808595203486089349979919708492456038570250264710500951237873641099077589881321390730271675776476424184219834742818175641417587358230824551843874312278212726969e+31'); - BigNumber.config({ DECIMAL_PLACES : 264, ROUNDING_MODE : 6 }); - T('0.00000000000000000189', '-40057268377.9932910', '-4.7182448442698364644004684191009381948481636476492450138760702187588916913713784491237983780925694843774008240904790730093658266100558175043197615934957570980410990578497593462032927749992587847355852974580180705940758405859068549892544e-29'); - BigNumber.config({ DECIMAL_PLACES : 182, ROUNDING_MODE : 0 }); - T('582876615664316806926506530515698093.322', '27604699373308594.0711890145', '21115122747104035460.21337532875946214674803273269781389442262848600250343819009917807627269597021112102186520739770446714009558582511713864614690767008819523634354430262123229283774316367842068234116818'); - BigNumber.config({ DECIMAL_PLACES : 265, ROUNDING_MODE : 3 }); - T('0.06265262744921950464499729884', '418.1968377069103', '0.0001498161195879942693163229102072748977977139502261436093345004263680394676108975676909295159359005592165627855144486334867842679720394133268043505391809993987171116761771848835386657427593521903807787893246704584828325920426874665944118323962941719647343196145648'); - - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('-2.684589e+0', '-8.298191387835406867663644795762577999681e+33', '1e-8'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('6.977911290006014182648715746194971078277555330014970461399e-7', '4.321829466480785587848132891783076314e+36', '1'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('6.86140621534e+4', '-2.4476846364974384372861666982952981676991222127645053978394e+22', '-2.80322314117984e-18'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('7.357561152451242940317e+11', '-2.648460003354772976631704945839085e+20', '-2.7780525826825805216131501793e-9'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('3.8258392715e+1', '-2.228654383349426575347306076218045986778346e+32', '-1.7166588503284108260451166287229525317827195396729e-31'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('-1.2570687218822116166125857102810153948324213786e+46', '-4.809117934e+8', '2.613927832783756424744367082683016179973808433120450898886190633394435e+37'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('-1.376189857312380383142846382511311919e+28', '-7.694075937671282443624789e-12', '1.7886356574340012413308387752652601567546700392520385799661743200905210552131420895850910722343227343225628604194655722933103953426624479e+39'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('9.626195658e+7', '-2.0085501626269837453288189876105866300475813045157981e+4', '-4792.60903566874026466045202923289181547579680145575014194856793200300036317880008519360363'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 4 }); - T('-3.64533907917885729535739841744314937737517731530437841e+23', '-1.7265126331152074647790745439743846377979463548536e+28', '0.0000211138859297046890962298'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('7.39795272246012132e+15', '-8.507649324190330772e-9', '-8.6956483989356028289430730108548466741894629427205910354758526866523678980437464869746571187378462716425111145661225601e+23'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('4.3343427747354259351058185933767988216018653e+20', '2.942769405736425339909419857531486875e+9', '147287883525.170761322706812750128616543853659164696768704020314521886872955783231335178457'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('1.042351453472645229718e+14', '-8.1066266385402751519347723e+25', '-1.28580172733887853360689025161397132403478201888896064498766e-12'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('6.38906035177779493e+13', '1.60337080310451456115855e+22', '3.9847678025613446771717106354216247648325819717141849e-9'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('3.1408858250837517594e-13', '-2.5696781557770853056570768387942747953e-5', '-1.2222876308546624206e-8'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); - T('-1.1e+0', '1.65625870433963801924812297552444726205e+38', '-6.641474531e-39'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('2.13111e+0', '-2.113892292836264709191412822070652655316e+39', '-1.008e-39'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-2.16169668759945865460592071150656e+8', '-4.61319410657275351248683519834438786301441e-7', '468590013266411.660197185452972162138337424697682692'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('-6.694576234276447704831254188731081371011543645e+39', '-4.9933816383e-19', '1.340689880967243773995926456869849096431228739194284548342730665421889e+58'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('1.363776449037400581647682806552021277695181e+8', '-3.28729315613180082e-12', '-41486304514507415355.9873445662363079631786908075443085749055713190839053593601250526358412929936002812015659573822941'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-1.8622866502154589395913494293567400069289993e-12', '-3.51901484483879256773e+20', '5.292068184784173628395225e-33'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('8.171e+2', '-1.017285344548424669090869e+21', '-8.032161324045345318349494756349111649247256388570208173061814265805930600586683e-19'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('1.1593291795888842255456406799619572356750950858596669e+24', '4.3939043260187083422239580622172109613895683484967375e+34', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-3.691954879536400550465345429e+6', '-2.3286565939140717663765119466326782700047244284979272e+52', '1e-16'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('3.290995909250644626602403233982e-5', '-3.72804885383603841528932457594039248874217e+13', '-1e-15'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('-2.8257790508124e+13', '2.2099490200460778342645851618607e+11', '-127.866255066530086694493637648'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 4 }); - T('1.222504367031675454484326842964789696580983337378049696e-15', '5.398989058287691837779392874e+27', '2.26432088273095513074257888426898404438e-43'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('-9.0955497166616772560134361788715705481650282e+32', '1.006178216642177399360607273452622897436513257e-8', '-9.039700488662324513300190438213233647099495171586067259100775488679950796211088995617068393892952904823139558012544535759620278109170568e+40'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('4.061170008482961e+15', '1.2941019701447e+13', '313.821484100581'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-7.112855e+2', '-4.471379399262893594476210623345636203005298072e-16', '1590751838498104940.448'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('1.51658497187542231e+14', '2.0466256499056096481968585948298376e-18', '7.4101727980657683623438886297543422771e+31'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 3 }); - T('1.15629093366e+6', '-1.64780587468499e+14', '-7.017155063129310675892792381270633e-9'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('0e+0', '-6.4215255610276741653e+4', '0'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('1.53383929416394591831573929326266805686729e+19', '2.1001119162527479394989376499513738164781e+6', '7303607404412.959609521511410682657466697211721578772169'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('1.566217258556207333735292e+21', '3.972156275361908175025e+19', '39.4299002854188384418021271234531369238709074556162666394708377262437'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('-1.127161561152447628384525481045262e+32', '1.34216e+3', '-8.39811617953483659462750701142383918459796149490373726e+28'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 1 }); - T('9.1213795513994124954741359394651099072203888930318348402e+2', '2.58716189598465088e+1', '35.2563152911151557748910665212033545809325810216646'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('7.4324711466962356844069138844597778914115941300760727e-15', '2.4255221e+7', '3.064276819698421088147130831939143284413526526959318449418e-22'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-1.0037454226892777914136301342549839000985270605559e+49', '3.16760019496658784751994509663413740695778340937023e+19', '-3.16878823370531265855597256067959092153148985748326541373252958515953514436808610023215894449091e+29'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 4 }); - T('-1.151210688443460005245e-10', '5.64429338006705896765468750322346865809556401e+8', '-2.0396010818803019961856984816441e-19'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('-9e+0', '-1.284667267146645202597322557792781234816749051281e+34', '0'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('-8.16383977729e+2', '-9.46731059144910060833938292323238700273303856328331211542121e+18', '8.62318786146469218394225429987826229976305e-17'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('1.60254524932163044190224193987222755331272357e+45', '2.7472017615228386863893214657310884e+32', '5833372967966.1454465819347248524876236156471103524157861685311400539697612517911120233715414376'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('-5.3207722e+0', '2.0155523744116957852262280482788781562e+33', '-2.6398580694550493279366944428184415747e-33'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('1.14102385186386041655018166211663550774271628173e-2', '2.134783493258839951284722193192e+15', '5.34491603231406771987659954273183534569412001579251176615e-18'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('-1.10678182750716064703967111313996867399272652595e+12', '-4.2323571177080288728539704625120218663e+27', '2.6150482974993427927834183820781596307248766831447249228068107036260778292118632e-16'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('1.83395038646692248283155237788079303413997259681334688e+48', '4.62387352556641061495469782346733e-9', '3.966264164291277993799910513458450004611630251694002784599395923e+56'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('3.050638661366832442292808537413012398794503785533928837964e+51', '6.2467837205570484298933781506664116212544674586136547e-16', '4.883534948277024540183845067781496268644589614327240405421609769249613589117449683325989399497795797661786431831935467163707026e+66'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('3.22884712158807e+6', '6.1818784696911941663320793603579e+31', '5.2230841117608e-26'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('-1.11959719784431162899359e+13', '2.176211015431916005560267354712736969126888285709700337214e+17', '-0.0000514470880767094831194756095658352065923765293221540580509786301354491514299589'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('1.4184531239263454962400471579847717448e+9', '-9.045173964459562515700703201e-3', '-156818777560.249637705624768350730872146554123192753833226253469477853'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('4.4520521864043734792663602327839683864921433485964e-1', '4.634337525652011919e+6', '0'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('-6.83048398289181666952021562206e+19', '-1.02e+2', '669655292440374183.2862956492215686274509803921568627450980392156862745098039215686274509803921569'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('-3.9019633429186701133666823934994052744540282372224e-12', '5.27507431812331195866605782075928779e+25', '-7.39698269e-38'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('-5.1460450210738226230405884328533068570547e-19', '1.29386654181688367984212003546e-17', '-0.0397726106577236466920869775826329733180993146849688031015873756796073348788951'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('-3.8685221116675758707293434728747610229950996852e+18', '3.1897344996347148658091457858222594101176637438543004e-7', '-1.212803796714301791688087105099710436914444797749598037229151511772121313364700095469555e+25'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('-2.46942e+4', '9.1025584843870185124740143872301900448164885426210358984e-14', '-271288561807718488.5196242238250254929854695158851604707066668853126037797695308780292022829123'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('1.1837939137372343e+7', '-4.551005460308206359577589733803e-18', '-2.6011700580492482744167952339151813112133235715820624347679056853103665846640780415849455706077711975e+24'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('7.941828289678651079241504e+22', '2.62662673407814661752043707378745e+12', '30235846558.02246230241812305216278227485125692337989976810864975434944383939875159725932585769'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('3.983459649952e+4', '-4.43007833195742994603987896254311885354607075295409907017826e+59', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('6.78591935399298e+11', '7.3743935853990604278178275154242145498388e+40', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-9.368271358463985794595010572399063528050211600971117e+6', '3.536365904968796699190024e+22', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-1.21788e+5', '-4.6487152e+3', '26.198206334515824'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('6.6731708723476079058886985347462890741983281866952601355082e+58', '9e+0', '7.41463430260845322876522059416254341577592020743917792834244444444e+57'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('-1.09506302e+3', '4.869496261415839850481677414e+15', '-2.24882e-13'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('4.279526224252e+5', '1.7846634677365185817579e+23', '2.397945776118623477061832322071525026e-18'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('-8.423955049192861030967940476881511700753978237699737e+51', '4.123332e+1', '-2.0429970347264932901274843929330725007721857560098815715057628151213630141836747562408265936e+50'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('-1.3560772953707170567e+16', '1.171639510240212457042280074438448259602e-11', '-1.1574185434329461154443955689815469e+27'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 4 }); - T('1.3682373349575334e+13', '7.3600491108875015330874e+4', '185900571.360799840901532589795015622988508772394680944957251367253071994448592590501014753952246546273653151'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('1.3154004825473805973728e-7', '-4.2582470979271932781366124122462035e-4', '-0.000308906564672511419324094397349121405120205734129928276'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('-2.104683784186112035861065543719370616598874094e+1', '2.949462623949027449275e-8', '-713582117.33097219832176840146725375704044380206297228453272535'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('7.264384e+6', '4.1347781511967869682324184706673016934485517898e-12', '1756898129564065538.5648236691867481772804909'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('8.452e+0', '-6.498752841059176815657360373992243370692529926e-6', '-1300557.231012109076220298338725550868419'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('-4.993594946835093846057985799914752582216782034739476325e+54', '-9.9800210431303370202060947045843994236750947381671e+39', '500359160091390.0522022025279178501845115180032990838020458013582838577980303243830071241586995547088417'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-8.1e+0', '1.395459695825119273719768559e-18', '-5804538837082330156.779223742084551100646177915819'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('2.29759989e+9', '-6.74056783179189161439e-13', '-3.408614744834061231017348297805381333362918884614317205392744042799e+21'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('3.97091582794225350279171799532e-7', '2.41641837877861e+12', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 4 }); - T('3.91755997773439294874762704576067485095445759725e+8', '-1.250019237909e-19', '-3.1339997489059339788321458120106149277099554172394312726319722815414057472452e+27'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('-5.88024471232446948649e+20', '-8.47609867526076e+12', '69374424.928383325316192683904844889709235557779702197243871143943081592370136257760539021736478527'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); - T('4.62653566481581417883704493628225e+7', '2.338441527793468175731223125091471817382739415e-8', '1978469681549561.9830730024638681222283016'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('-3.70841e+0', '2.0212835550025920164236650527972686e+14', '0'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('-1.243519842187341059877996186201005242904186e+24', '3.82960151991082846e+0', '-3.247125936529020862492815416213503335626772746119281932758760079466e+23'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('5.805502676478053e+3', '-4.436490697865052222068353951847332008937e-12', '-1308579927660347.1317553786911547314648452364448033931774319044807345184'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('5.2494545223e+10', '-5.27035784208457683653e+14', '-0.00009960337949697341656415916012814401160294873770325650334566064690145467'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('2.49244061004426376013957150764335770342176989668160077768341e+59', '-1.59257486429992561624341440625009396614856277710345973905e-13', '-1.5650382697330256825184745368958962442962165441841972434001467977532021426696860087596218088678570111739490499980142692727755778391867073416614e+72'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-6.491148513421149560857391627411087984e+6', '9.982586739202018304193114651e+2', '-6502.4714365166987562205089717878495692701415667688831557'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('-8.242562587219826322756135907789392e-5', '9.68887286050664118022635136173134360297e-10', '-85072.4610167793470479405418881672102046151305762553603939826873340437920415615727192625401557768007046'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('-1.9168988826688945002797462392e+8', '-5.6803714774636698531824146882277509515920145e-6', '33746012743603.25453300564268832335590229566345157198883904613540264'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-3.0258848821938566680797457e+4', '4.0777429787685523978273163156521728105076e-10', '-74204894667187.951707382924811293760803562598157029520944344469016807'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('3.69927674623251618e+4', '-5.220718872545424800848019614582913381e+7', '-0.000708576124580500336192976887065487350085252556049744741097735562040616366441083'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('9.0360008962766875594763448795524371902981009801e+9', '-2.223480500424439742e+18', '-4.06389932115519213237591244399326869093522905516048989011451996203527973232052e-9'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); - T('7.846135938905626718e-1', '1.1227167968e+8', '6.9885263685988408630887956445331058219721470546364591452062258840875302027012481229852e-9'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('1.70727356485719357771889024622608240016418e+7', '-2.611709352972367924505574729526972189307321059e+23', '-1e-14'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); - T('-8.146425e+5', '-1.9277404692834179214047867012804398030805175180163596757e+44', '4.2258931e-39'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 3 }); - T('4.8547000826477016024456452593554872e+26', '1.48551069033736534532935793131415257927835e-7', '3.268034430331282259778757092657146e+33'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('6.03584602176774046327932728e-17', '-1.2586589303123068e+16', '-4.795457988185954652905480897359524202862898328367111641e-33'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('4.4172739030183528644508688032320793125e-4', '-2.3061374143740932698459421e+25', '-1.915442625181657396931840988726152e-29'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 0 }); - T('8.195483493646410802532840494364654882888160274e+24', '1.8136267401926565382e-1', '4.518836931559482477970235635572593907994799170688954822187301371053449490854291624484682892916282561496632818332304755422601e+25'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 0 }); - T('1.4068028613883262515279256094430309654735814056843454e+53', '-2.07076327391642e+12', '-6.7936440592151796515531889859599302465619955e+40'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-1e+0', '1.40766974210848837512174406460979031888474180076364280389e+41', '-7.10393901414789748275425e-42'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('1.7579655365177340193424e+13', '1.2e+0', '14649712804314.4501611866666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('-5.14439925941092475978e+11', '5.17344285354751095733170689026326670354045626959509e-14', '-9.943860220439720235358395841971427324498245807154312225967e+24'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-2.37593121448325e+6', '-5.046060106975311967927899320989374191943529e+36', '1e-15'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 5 }); - T('3.02711053991410051857924824689543e+26', '-1.075056872845582e+13', '-28157678131963.403137625452169598982'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 3 }); - T('1.7031e+1', '-1.1e+0', '-15.48272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272728'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('1.11316380861757648895194104293992512257677e+23', '8.793892933245547e+5', '126583734538003185.4758241204022051444374083708665989607584433419645145130072780879142188536521'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 1 }); - T('-1.2445771504873016754168e+6', '-2.1271991905337074249602498312341407038514567859e+48', '0'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('-3.2126287105084394430000471990181426501347496904162318481486e+11', '-8.3179486349e+2', '386228486.31561215352847732683444136017055289575412'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('7.690902892945358830667793524605728734978227614373987e-14', '-1.4356798866863650458584021720666350506943e+41', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('1.7895458349982693e+1', '-5.416619312e+7', '-3.303805809342558611769022914121309029516675031195e-7'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('-4.9323788e+7', '-2.50190605470094677463478e+7', '1.9714484445698213940290620650359219518342171516654875835474849479064879154999306'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('2.4736831834e-14', '-7.4969e+0', '-3.2996080825407835238565273646440528751884112099667862716589524e-15'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('1.6917100595076468e+6', '-1.46580165410522403243e+20', '-1.15411935494118749818764893135261277486721803740858622355453e-14'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-5.847430247560464729871452390733940532932e+32', '2.3541096749220802874394138545934615951759723816573e-20', '-2.483924308987010725424240411422860427064539227981711351325205989e+52'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('3.17135563092456572471636397368039837592982433063e+8', '-1.05914712549883732501350758e+18', '-2.9942541074554868997473426603892327061035895442213978e-10'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('-2.06351590455020120049e+16', '6.876717e+2', '-30007282611022.108376569807947600577426699397401405350838197936602596849630426844670211090553820958'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('-2.58574038568472804398707132394333396261003537509e+34', '-5.21101118437e+1', '4.962070304973522088497308062328913175297198877790786260422926984000792e+32'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('1.0902927014420428768829601430368355906592671e+9', '1.055311509526061274313257267095679915243147902389364e-20', '1.0331477403593291618651997366870712877657798362117890624111285603482011526479e+29'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 0 }); - T('5.240416698263987e-10', '-1.333644541451033895111125e+4', '-3.929395378893315244205009777387015604392422371871707395300212485273e-14'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('-2.14459463571407661232358156993163236e+3', '9.50710872243e+4', '-0.0225578006766069890476863268275831247472021132902642208034682013658062249109412597'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('-8.76570122913186285413266288e+26', '-2.29060139655641091149799231649e+22', '38268.1213864176952764740852047'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-4.298685082322146249068382224749649229024974889e+28', '1.133736034155732441317831862744713483858036136e+45', '0'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('-9.03007143e-4', '-6.527e-20', '13834949333537612.992186303048873908380574'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('-2.1983602077137e+4', '7.618052445037037559598956806049795697231989369872038175438e+19', '-2.8857246961405133513202683415394692463335185692463717333667e-16'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 5 }); - T('1.06464442348e+8', '3.3798404104228937656216886e+25', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('-1.4834231106114591731402527448376685e-20', '-1.008042281392878891612406531524600516179351763e-2', '1.471588184338572638073105330851883960616731833612321362739486010713142111976394343e-18'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 1 }); - T('2.670388961061965347980551054975608950852709569216285620955e-19', '-1.60813026578e+0', '-1.66055512907515135118e-19'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('4.8418752886050656347980335514333887020889131e+43', '1.097542967900589815280405934238056787462980720668271e+49', '0.0000044115587546123474461506361364672762222874748810055883596997210401117'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('3.3224789713227436115862e-2', '1.608e-20', '2066218265747974882.827238805970149253731343283582089552238805970149253731343283582089552'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('2.961317953735582624263692428362719343623646795e+19', '-1.3517568497144e+10', '-2190717919.6918822065726495016909794400572784395953745101039724415568485'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('0e+0', '1.1939703967465696474752689253333379e+6', '0'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-1.26796190094173770423550237861043095542063898039529199e+43', '1.26298820426297231964005010029776128172101839e+22', '-1.003938038900108198770681530243365490954891052649781926766409539371771486e+21'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('1e+0', '1.6170590286500285361572052458334865220135332303348474870906e+44', '6.184066149e-45'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('-4.344226793252287936662575858173495666e+16', '7.4902162293477512160241201542473027963977e+17', '-0.0579986833521705106175436684208656934679279030765860884254386621756617457'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('1.1041615788559476498e-16', '1.19209500912407230760038267262966923373459798900839109e+19', '9.262362231239132586738e-36'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); - T('2.162814956487398129962292148404305956266611109789601012e+41', '-5.915867999480806710898718365e+18', '-3.6559554010961922762856860392852451655514603695899749943344699851e+22'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('1.146291872478340289884233459851149740837841441815228909e-7', '-6.435879737791406e+8', '-1.781095855081518430889798713961693993561465771293013785195918295375263486769e-16'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('1.987825836e-6', '-4.828551591717747253234004666945657377524888791154e+41', '-4.1168159814418283e-48'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('-9.1043267860469662982384830806192792e+30', '-3.5735063034496425898824960323416975460847901026255576e-3', '2.5477293204319272438344709139526955621347444053241700169298705609906904001227879397756593003e+33'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('-2.367801552425790979304601717059614184406079e+40', '3.211561625490428517091311e+14', '-7.372742075482393033660212776964122499020480714494052624961080189e+25'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('2.298283581516075763910625062672569636598280933354564514e+54', '1.074331e+2', '2.1392695375224914518064032990508229182610209826902179253879856394351461514188830071923829806642459353774e+52'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('1.4e+1', '-6.538600777557645070419198519e+3', '-0.002141130874368721062351217232'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 6 }); - T('-2.2306372789925e+5', '6.087280013886758774792105120955348021e-17', '-3.6644236406142041854728332764842849689742925874428248228222464514080225611127156359298422740410250856e+21'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('3.0916302684309718e+6', '9.689969983289990587602334156217453449306148e+20', '3.1905467960812866286700078293262977288858007762091149e-15'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('2.472242340658775423383338e+25', '3.311980964418811592260328e-11', '7.46454272297608447562578490860244017598403328296566586426992265211496907421150480103391314673389860920199e+35'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('2.0667944748628464421657784261580525169470681951620475408e+21', '2.457425640707239072529899e+24', '0.0008411'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('8.15509163387e-13', '7.9253614422701106738777291255370038774222512634924e-3', '1.028986714772984066644091185941599096621795451380458698733367e-10'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('1.651313805562909447176880998846e+30', '-5.76743933174730865525295264418916547952e+38', '-2.863166321443776e-9'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('1.2486688707964869459e+19', '-2.82989576831e+4', '-441242000775945.86715515268447226522295488226649200971467987897582849684'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-8.7828104612557296045754796993179e+5', '-1.03233956355612335e+14', '8.51e-9'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('3.8990844981046752045360026872079350659405084e-20', '-2.695919e+0', '-1.44629141235499850127e-20'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); - T('-7.413007254775067343779449915809460599226e+39', '1.43446731218463175502139e-3', '-5.167777049924809717443440027679719253039437453707533757929740275891963119956e+42'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('7.14321472519238312874067225981396629256702165561701687819e-3', '4.35412003983276021716841044396819e+28', '1e-12'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('2.938059200145926264847352563204907755716225111222321484e+52', '7.52004086987658309e-5', '3.90697238350799669357400946469326817124139491115813292967181191497292252623716669133708910816062457199435939612727349101488248441e+56'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('4.305028611073344e+7', '3.18067289646115523384611501e+22', '1.35349617870581940947853280257127346559530606596327e-15'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('1.183179488487125253140530741241348947094489e+11', '-1.7602259917256719183640030137978911305e+22', '-6.72174762813933988509930227027765382885528544070345597819313408109535e-12'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-6.879513926786496523467891202666122435727881787e+17', '1.08824848e-11', '-6.32163890252940810307209544888693291418e+28'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('1.699581450633584e-10', '-6.86399451848e+3', '-2.47608217934583737293043072051494800657019186693446e-14'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-6.85729609129944845047e-19', '-2.1805945313032243123249225273722265276742646081e+21', '3.14469104e-40'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('1.5924784192801458636895321e+3', '-1.392980451078160260176079559000603796462914786945087e+28', '-1.14321663168178356174193185371690503743306393722958174836550309640375e-25'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('-9.754142756698401558073375447273628699528463547911394156267e+57', '1.316719380045008261525774924350086978877743882173251424164e+19', '-7.407913109295151611947872129638459638803771697120658772832578868301402446872433463482099904155815386014734491264040157401580941623795e+38'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('-2.33641941613676863516717479468761193381171832015069302e+24', '2.038623000304704384411143701555981259e+36', '-1.1460772373251718812553297256494514042081707043e-12'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('2.12043950679913503026778076469046848467323279203915748e+41', '2.742015618e+0', '7.73314160896633897388610995391663915997882106898764381873772390745004137317791163653393895439147e+40'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('-9.2581956946975006840871860062691368464897e+1', '-2.0221539066219726626596127993779216939721353587484287e+52', '4.5783833091930201e-51'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('2.92207461871320315795285390664826e+12', '3.804e+1', '76815841711.70355304818227935458096740273396424815983175604626708727655099894847528916929'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-5.4318679905378e+6', '1.670623735329229880306945005647428416872603e-10', '-32514011836826570.5112007133449'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); - T('-4.9845914245756149501436602e+15', '1.055052431283008884577e+4', '-472449641058.5058867843073548474530078753'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 1 }); - T('1.512564e-6', '1.38979796076405906704794232910476562908998439e+44', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-1.2745097050268076893738682530705733701606363302e+46', '2.1262972545124879705009271349773306004576107738758e-2', '-5.99403353563104719691681943818281528974024096973367009496794825248035759629417365855665363754848933205901259074772609866e+47'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-3.1e+0', '5.41984766608571557254330454890699771056e+38', '-5.719717953325541142e-39'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('7.1578423670097998051879745833089835465359027461506408958e+55', '7.7e+1', '9.29589917793480494180256439390777083965701655344239077376623376623376623376623376623376623376623376623376623376623376623e+53'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('1.081131976757387131882134e+8', '2.356e+0', '45888454.021960404579037945670628183361629881154499151103565'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-1.04572607174804778256239183637028817569562863252103637346509e+38', '-7.26634695689060300286803860330126324870796853854e-1', '1.439135893113934467304491273244797042360962147162056611355e+38'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('-2.528e-5', '1.65937627149288527912309114881548774973949532296261907e+54', '0'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-1.3453068243728082336349490882179401367571090051080616e+52', '-5.9543066589039246340936086990658553849983281715533037188135e-19', '2.259384511815610457970772266971641184777064611238632697862697842821299001585747485626147669863057680247040759847771254885692114651779128505571539e+70'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('8.93648433530533885374133849421944025769343458143626e+41', '-4.808128352362641710821e+4', '-1.8586201699283017924626570774401784131853983415447795685562898752827263922814411964420472682079404773088975605058402689189959e+37'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 3 }); - T('2.83730151879228871233687537544881353202409174311639660587e+38', '7.5548773007973893e+12', '3.755589145693765340622594121437925064e+25'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('-1.08328010942954610962003e+5', '-2.040051066901515974502652637145748443977930612177768887e+22', '5.3100636891156889573841770459665916841337179378121648906921921000646e-18'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('3.0506760595e-17', '9.18969111944231821275032565546747730264216889349573186898e-8', '3.31967203233391e-10'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('6.007459e+2', '7.54789521172973384e-18', '79591181799452729746.6142908834722197517'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('7.154888199745248648433005334242021014e+26', '-4.534613593168835400628615587441511538464079650158252813358e-19', '-1.5778385639128598718438804267248967706282630702257573609250637842257952225741076744299962525048392523929942603e+45'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('1.0433600681003394759618897771250673963671e+7', '-2.88761046e+5', '-36.132299787428373422705006309094315871369298198206415972049083102434806944147'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-1.1371376612546e-10', '2.97802390130871296219839282020743256149861091470867783838e+1', '-3.818430271009165107465921832538108858341785003462060916588131305350668864346562e-12'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('2.8229065250743404122721833e+6', '-2.248669788684196117661917515512615275098e-19', '-1.25536730171758903810971281840999557514530792223944285245061533757097155965880006409501754538336376178528e+25'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('4.5058886e+7', '-1.1880216334115198639557698579229e+13', '-0.0000037927664558269885175416416655'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-2.7535225428311273e+9', '8.0997202e+3', '-339952.7977313496952647821093869390698212019719'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('-2.2385016841e+3', '1.387035768767767521328461678439642947866086257628787949645e+50', '-1.6139e-47'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('3.06121118955298703779956702994536198809690663939713603e+38', '-7.3035050611920762990236825431122148949e-13', '-4.191427491190561180588968793197797570908917939897845615294946488791739226610209705339633360071222740444211762778029523804728712852236034646e+50'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('1.0016255724547355991077369440287252551656932150464723691e+52', '1.80880801397902971407543898709494600103357157e+10', '5.5374896877604605378169307382135633669497777116481941788443299045207113944498045700778e+41'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('-3.088048360168477331792557775463584165425963572e+45', '-1.4e+0', '2.2057488286917695227089698396168458324471168371428571428571428571428571428571428571428571428571428571428571428571e+45'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('4.0238189014690547e+4', '-6.7564563648585e+5', '-0.05955516744543239956135329596521881650294'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('5.7427903e+5', '-7.352522632005089658008354842188067529307739382751e+32', '-0.0001'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('-9.78248e+5', '-3.06960476416271421302008579728334481507254699771089e+16', '3.186885854e-11'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('4.05994259e+4', '7.8907749282655877870860749608e+28', '5.145176014914400317062311e-25'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 1 }); - T('5.4762132837699175441102089813175399999764088e-16', '5.7030184815364007560078579249421278145041535217095e-9', '9.602306e-8'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('-7e+0', '-9.2159043738098493e+1', '0.075955649234956245854703504394092356676290067751808275195765802961690703027820671'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('6.195697861269359927881e+20', '-3.57e+0', '-173548959699421846719.355742296918767507002801120448179271708683473389355742296918767507002801120448179272'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('-9.629875273056249651966949225008701e-12', '-1.254336183986894116e+15', '7.67726819e-27'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-6.54890462715559031006242205524360507902981061544216e+1', '-3.69152226209790919921200153737123586568e+0', '17.740390446497857'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 6 }); - T('5.275227534804879035e-15', '4.5389442133760502760188809102632635407464777499685005106e+55', '0'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('5.3381728917331921730285926e-15', '-2.76623631914364289572342790678292268542941061193724300445e+15', '-1.9297602503410685e-30'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('0e+0', '2.64994276761338025671828590140655914746143e+15', '0'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('-2.33504609e+6', '-7.197364794210316381254761041469863560753414753847e+18', '3.2443069884110238548675488318070708e-13'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('-3e+0', '-6.2e+0', '0.483870967741935'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('3.47891285848114300116174616324957931945042548133742277e+0', '-8.9837096539842887e+7', '-3.872469e-8'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-6.05961122567500478221618603e+18', '-3.14396592411703776787729712449924e+20', '0.0192737814974149470002810582449413874302177975001810351674842984'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('2.774042606910497862365244089177696536349584544727e-10', '-7.8470185309070224431502704762599134501231241948504e+31', '-3.535154907541490638e-42'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('2.19512869386020462054124110517e+5', '1.2e+0', '182927.3911550170517117700920975'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-1.5074753e+6', '-8.1065922619928717661740852111502504e+2', '1859.567190849946738045449007950750897366429832333815584271306035903516452398884120555109'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('1.1766173634e-12', '-5.66747706e+2', '-2.076086680093240642071518150970689592875034945443608024061415433413329069566627e-15'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); - T('2.394892233129659489208910623612984e+9', '5.09296293526679179304573296824e+26', '4.702355512045768507736436114982e-18'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('-1.369216676459106984e+0', '8.6808946526933710996891265108702348956013350311e+26', '-1.5772759965866974614e-27'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('-2.29758826020964952364712054599338570980189854396e+17', '-1.78583389337877620342065013e+3', '128656325133500.530995125399088722466690431084706281554571510642156194959865103587355407'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-9.278841048360548236646763714876101874543e+39', '-2.8419331418063233629359036881e+14', '3.2649751367700886051436471065386186012809809832486115945e+25'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('-4.3179008758351221823006096364401e+8', '6.20391310364281006813633074984998415870666906e+26', '-6.9599634999718801205399148323869105e-19'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('1.20291914e+1', '-1.4276430588e-12', '-8425909631859.3049149352261047115455635345256931669116451280854292484723142899365736053967777677399'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 6 }); - T('7.42609747626423939e+1', '-2.8962192862361266232302219809883181228805332108813895e+5', '-0.0002564066026200336246740255'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-3.2469285014199734903543324848961e-5', '-1.004078367498033204621085824001959694516021e+28', '3.234e-33'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('1.59209390368e+5', '-6.95630800488e+8', '-0.0002288705305404981796324097327769041428367904041851601205088129'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 1 }); - T('-1.252328476245750877736007224299768883853171183686e+48', '-1.30554631365833378e-20', '9.59237112574383780974783097258034876588235937984555536341805725079759514423e+67'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 0 }); - T('6.52455498462528584548664290811550009703541886619689582768074e+35', '6.36749688940559641122766817131948831574075467073355e+19', '10246655943375499.2411977713873718855658569674377435621'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 4 }); - T('-4.605658e+6', '-7.9730560437412644561609620123001921187e+36', '5.7765278140937890371463800327054039308127371991198158794e-31'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('4.986883150805824792798190568349429040756111709e+40', '2.0298859706399905078014298184259267e-17', '2.456730684844105048065068076706295523057029803826305087595843103635674153116076397239321169844654628530516110040741109430504569000041516449001e+57'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('5.24013157067723826392787374436116355e-6', '-1.654298944482872783648579079220818514e-1', '-0.0000316758442490288983418'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('-1.619813418862550524051983626338569083512822621172e-2', '-8.88942851464259536167193821500652163619e+30', '1.82217947553592095418774728729978112733813820443059e-33'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('-4.79701754397011101988904832240955526503250234941047e-9', '-2.589958432808436599476604696865464224958762506342e+19', '0'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('7.54860291310077184e+18', '3.17240732237e-1', '23794557716067373281.978281818398865657135947'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('3.535e+2', '-1.9367798014656460062e+5', '-0.00182519458192'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('5.8477188737827191112395859385879993317325596324590995e-9', '-3.30123674802177005613538455715848177250157274202e+39', '-1.771372161444313426698922036465592759e-48'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('2.90345344463e+3', '1.19811605074978831727706733464399968704243448097028864714581e+59', '0'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); - T('-4.405737649551180734271639844152e+18', '8.665687320429951988638222805387523254162685133e+23', '-0.000005084117954688201318303152477535869'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('2.40590343694868e+11', '9.615067877771284512367958e-9', '25022219994003350627.9907208147493557695'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-3.7122486687302895895381340440591469508298813907336e+28', '-4.450927214657691094976925735032894e+5', '8.34039401162346058201294872580504522393506789379448365081226719977451601479867488629316635573894436e+22'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('1.43485055943535656490484e+13', '4.55427932297883956108947188219e+5', '31505545.83237237415892524503456536177066538115991432839510235143523699740049'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('-3.99517658879239500654168590133754036e+24', '-3.14659168130760878023582236908930576652104205186095674372e-9', '1.269683833630471328762619262588320060995414561319236600079474677648533585116772591500561312512797e+33'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('-1.16907419e+8', '-4.3613030803711816469360781701768e+8', '0.26806'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-7.3838959777365098666394093694508503629546784795816384e+6', '1.52605442e+0', '-4838553.514845499328024887454177977717829144310319967750560297843113615830292605162'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('1.24873948351044501062231345029988704844e+24', '9.229e+0', '1.35306044372136202256183058868770944678730089933903998266334e+23'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('1.723186062490445682405e+2', '-3.3302578457437e+13', '-5.1743322658718354938433050799490674308559067598780664812693150364397716499935884e-12'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('-1.436559000596944990687764508250907638531781e+15', '-3.07390134602623660156369160289134599622169e+25', '4.673406329237098296606236235212285669e-11'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-3.144745270263880221783603e+1', '-4.15786280849205348546792218731336603759e+19', '7.5633694883848173133841758122e-19'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-5.22542287273217114e+18', '-1.33235330154458332258484216e+19', '0.39219498812172362701831820120074302288129160373013333622019'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 1 }); - T('6.5349e+2', '-1.147628535686214808696562116052e+31', '-5.694264125362229366793202e-29'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('2.0753974053463172433510910285508920143294659032497383157e-3', '5.269240387230348981975249218e+25', '0'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('1.44793250749e+7', '-2.70305046627007613206961208559485346341480093e+14', '-5.35666102264081580421263052240146214387235273278554754854881e-8'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-9.4990364100082739684520043865097642535811419222444856e-15', '4.48860909443300244717180166047940783260388230136184241e+48', '-2.1162538796e-63'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('4.8845911084046830077123804450630388169077e+34', '2.7499066530881177e+16', '1776275242986643197.4240022742275207738507920882164024707380398166570953158997121318220047727131878501766'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('-1.36505345466529594069441239177958e+32', '5.1314327e-10', '-2.660179981830992230872310557204774409298985836840459780365043080463668557905865159256595141547895580896929623e+41'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); - T('-7.134815e+5', '2.7642976646292786728381718816660648208473550792917490401e+9', '-0.00025810588676081863162455451580595031422362669738873679'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('2.121318575924122e+15', '-1.72678319e-2', '-122847997838345994.090896842700906765255225816739622071488893750465569449978256969249277901529722443035827792602035'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('3.78121837554398045598e-4', '3.71652183162e+0', '0.00010174078202296'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('1.951816045919345711008131597619038268e-5', '3.1e+0', '0.000006296180793288211970993972895545284735483871'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('7.0707e+0', '-5.59775213430031025964987552202428545347610850011e-18', '-1263132026992438549.6204657786826165932805405884563682832868987057654093127459227378'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); - T('-2.9797965817680345689e+6', '2.1535287981875260235578124463099748970367642693459229582334e+43', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('1.220617511695461565339083803604503248165770826e+22', '-1.31707837693732887083846897331882141939e+38', '-9.26761484410538427684253812961024444864e-17'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('9.65524e-13', '-6.733541930559968585474947219434340314e-13', '-1.433902112672677730285870851012268785993865990523762015487'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('-5.23614891224023913334429045096038e+32', '1.16214862942169111e+6', '-4.50557594758413453398156953032584890242529737101638370519991322657e+26'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('1.305046934971232772238622520596849096e+31', '6.1911130409682e-11', '2.10793588541413939328238391289209716247369173012111109295732391276104352758914536901884599634380982104308716212134983237749267e+41'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-4.0384878167411940832622379708171e+15', '-1.25e+0', '3230790253392955.2666097903766537'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('-3.209378206287e-6', '-1.155723241315695076124847002535e+21', '2.7769435549581827549516876413738411958627193761651279264291588242345841616e-27'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('-4.9238e+2', '7e+0', '-70.34'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('1.06218923107336326862449065757631e+25', '-9.27070679993426266917e+20', '-11457.47842096457099817735577281413'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('-2.4861923661e+2', '-2.87714114949179581361591153398074361054813911868006735465e+25', '8.641190115191772566278600014764e-24'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-4.110539439392834e+15', '1.32686540606636889756826311855188e+8', '-30979324.81018522'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-1.66556730495609517675e-18', '3.942946911637040572466680987914378500137e+20', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('-6.219642003466062596505709273698035e+10', '-2.8751356987077335126886072e+25', '2.1632516358311575307947598873847304488739254085532924881880571814244e-15'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-5.83359252088139871111308594530597432442434e+31', '-2.4440191908e-1', '2.3868849077948077751702267628961591394490698284741144512947578120138220970306e+32'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('-1.40974341572315709438812324253011e+27', '5.04876497541819254052755963051917636882e+39', '-2.792253991990164119e-13'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-3.465828658613736751498191278105137953666195e-6', '-2.0511309617351316211987482158358834466054070670674e+38', '0'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); - T('-6.335696975300406808590074114208022406e+18', '6.6125342998523530242132799140014228764889567314128565065e+29', '-9.581344591954513512145149953e-12'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('-5.54961011314309569666969676244309590937e+26', '1.214679172748411540000353356228719e-3', '-4.56878675262554264592593256239126894808866372144128065178186052526e+29'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('1.278852704179e+0', '8.4826e+3', '0.0001507618777472708839270978237804446749817273005917997'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('3.575117845431545025e+0', '5.476995399594260806232321748501480830180247088766737696e+54', '6.52751661192994969056019008145458966e-55'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('-6.5012318e+4', '4.8741704405965822407914136256e+15', '-1.33381297991792647768876351387415604119103866830323154408156032218715514e-11'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('-4.09807579e+4', '-3.61411659059939766021001205151016702726189932182035e+26', '1.133908020748256542955115133519209491950635393793469083596721427946e-22'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('-5e+0', '-2.868638183513205544227118800631337e+33', '1.7e-33'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('3.3699125275607164851755136009714266648456377456627e+23', '1.577111963768597555370435362007291129229850253285956e+30', '2.13676175501713991111251165365380208752590381097789326986679667e-7'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('4.46912507e+8', '-8.530059420914262687145e+14', '-5.23927e-7'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('-5.65371681117055625627e+12', '9.38730212e-16', '-6.0227280840627256346043755540702678481599780448953953556146971010665628816471925802e+27'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('2.37267190166668668e+17', '3.94479095707125982529572013e+7', '6014696158.77500111662288382093125061302639854428765614486959507662141032799547690193815415709952914118104'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('7.167011325672868426989761788484714e+1', '4.5805211881401763046191823171603105190197732114415e+49', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('-1.619417144199e+7', '-1.499581018667551371759149e-9', '10799130717444854.637232627590516825182310726441'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-1.159e+2', '-4.45522735426978209786560237858107941e-19', '260143850770992066905.002567332367838963813443738822484878192234025785439'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 4 }); - T('-8.0922106885074095066306492835695793499271403905946348e-8', '3.4210144418448656480450458623351284649104497146e+9', '0'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 5 }); - T('4.280115130063213216041225264999579901915465248643e+36', '9.14434074536221695564283378284044844953e-4', '4.68061640445100600151138642418812452172407515e+39'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-5.42217602242808471711892847790688e-5', '2.956192069385034236011287645586482391767444681356251521111e-14', '-1834175823.20895680284003'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('-1e+0', '4.6881163169731125e+15', '-2.133052877505503338654455407578589665306563537985256483e-16'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 0 }); - T('-2.39353705331681242119144874902967528e+11', '-6.3747674748322e+5', '375470.487789017962422613063721855949277981692703049586'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('1.06472209507088359394231373287656793e+23', '1.818659018444486012291946386907024e+28', '0.00000585443496704263530432719290118442613833432'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('-2.10016973597553035696821462625319e+27', '2.3731805002815762165930705873147156131360283e+24', '-884.9599664780435697036093730518'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-3.4839034973251939262326487e+19', '-2.011163083e-11', '1.732282939545780199781366362719775520064078264507403947808045559674784464010569748510046611670029e+30'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('9.7171641e+4', '1.250644689569399819670508216478401454951922699562e+6', '0.077697240319675803119394574531389969073470358652336381922'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('-7.5710616640825011815104e+5', '9.451242202022377628036082483736650081e+7', '-0.00801065246477594739'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-1.704041340419726610074336154179338564660539258979455014487e+44', '1.2327107844519011346213910428367823027292406408969e-16', '-1.382352910279269335468028458736200971370992477548215948108808e+60'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('3.22817069107305295581377047478101377960503878e+18', '-6.869377673004481992500791135e+2', '-4699364112355082.481054269190618447327181395749044268'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('1.3389414114437867999036179224006456461480240424e-4', '-5.06951067805751602593059793029066675985196631798047e+33', '-2.6411649890376182545323961489807e-38'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('-1.92e+0', '2.0865128374378439843993098387219839709312567727985631e+43', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('-2.3249056323512566e+2', '-2.2410663822015267295027165733613383198005705603e+16', '1e-14'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('-7.579516177031886181784e+3', '-1.530062338379817262091e-10', '49537303068696.10628564844293'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('1.084223028866836461935910967916e-7', '-1.949443448012856975086875332182396037512904031574429212e-3', '-0.0000556170547020498022196956081864547429609634163896485100679090071798720271014257871705975'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); - T('-9.42916989636453357228161077722910058536297795034844963e-9', '6.76121556121e+5', '-1.394596845937133734676798110881436661545581544789306489853274127422959771130003534e-14'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('-1.003962846078115341724e+2', '8.944572452816409298512282425478502093022008723e+32', '-1.122426869896944033804e-31'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('1.078359e-20', '3.1945258e+0', '3.3756465513598293681021452385828281618511266993054e-21'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('3.5886543850497976496752035186416285838e+13', '2.6958457862999644629e+12', '13.31179403245913687051311362691398137025931371052452290722385757745856796265257344882849079488086'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('5.9295e+4', '1.7222385181331812535056690632608228968e+3', '34.42902906635299092292162615052214885263473'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('-2.7553764775966268301895794866575747362452482844e+18', '-4.761388925368866766525368325578939e+33', '5.786917474680282868272796870307013291971902968539350696472e-16'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 6 }); - T('-1.6225819735425613024232000392866795916741648546374252915466e+44', '-1.376276046947572564e+18', '1.17896549688652064476235580350301390936839264207433125311947168474968081901524663181132107998788966789052601e+26'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('-1.5182008699385604e+4', '5.41966045854557363e+9', '-0.000002801284105436351537197311809509521596277834898851020811623908884'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('6.251133026e-17', '-2.11e-16', '-0.296262228720379146919431279620853080568720379146919431279620854'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 0 }); - T('8.33847140797473629643e-19', '1.4157326615e+9', '5.889862990898254625334855284046153935539474731543445428944778215812887072e-28'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('-9.16970099403e+3', '3.667075394519654453329895912717313926531710666272475e+39', '-1e-22'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('-1.906488988420756221515447255765540323355510359099e-11', '4.626554510164239308633e+9', '-4.1207533256818306757392e-21'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('-1.99620549320197365464363092987e+16', '5.93386025050179057428821590581205508e+12', '-3364.092528187138654766699104256796006704273260721168624814519'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 0 }); - T('1.145940278542701e+1', '-3.529553712156278633e-8', '-324670021.197275383157905823022514540171219669326686309437557989241129145504'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('2.767506761328509952064778147061e+30', '2.545149328519e-13', '1.08736518141310702022249894626439107186593376e+43'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('1.32304870049002944170332839109166967e+35', '1.27749011305606806826e+3', '1.035662575364261814630167368899608837368209150765568399025973111188e+32'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); - T('-7.04097514923541657584631837992450960209237016644904541e+7', '-8.32262137286187964e+15', '8.46004501922241539680509874540959237140526624678906958848413241826644373335216384886602781e-9'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('-3.2360876160936191817767007555074607182087e+40', '-1.899082929899719771084796853038103784020136825588155546092e+15', '1.704026488334819242519591376726538287134019594357321614384457226714016931383105686227869123190077074512036054207929506e+25'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('-3.98925778357985164908e+8', '-1.86477459975293825151816719437198016879394142476548029e+11', '0.0021392707644711503602774885168556667717915'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('1.6622e-11', '-2.49e-1', '-6.67550200803212851405622489959839357429718875502008032128514056224899598e-11'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 1 }); - T('6.0727075918e-12', '9.527958945976325128845631006988156339697e+3', '6.3735660766721877682258299616996331662856791625338972e-16'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 5 }); - T('-2.5011e+1', '1.62717969806433753107763604840806956171014130632439119e+21', '-1.537076699626514e-20'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('7.998794e+1', '1.274572014657465478565143988206041118883436681013340113e+55', '6.27567050588e-54'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('3.85623227269198095411527056110936403902666e+39', '-1.28955567899004525747860212e+19', '-299035732657321668958.2181777109595896048'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('1.188e-7', '-1.280490118705664538759364187635398461568401493534167085159e+9', '-9.27769752101519760270724248e-17'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('1.84122454784753600734777618078188571e+34', '-6e+0', '-3.0687075797458933455796269679698095166666666666666666666666666666666666666666666666666667e+33'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('3.6403007332e-18', '3.176e+3', '1.146190407178841309823677581863979848866498740554156171284634760705289673e-21'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('-1.9534606819665169330124655827752693e+29', '1.7604909119024995247e+14', '-1109611341222705.82'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 3 }); - T('1.0164849870504e+0', '-4.760167723781898502831722485373795957921286238831953119e-4', '-2135.397418817869656664529057011708823947732503465455294676919158552132959681804438'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('5.274925376912008705499893e+3', '4.5400020032617574e+14', '1.1618773236492509799e-11'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-4.02002769478321689692e+6', '3.534477907400024556189638392e+2', '-11373.752503493124'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 2 }); - T('1.24789049183043823e+17', '-2.2163021994411734180668742961041637669973203037021229e+52', '-5.63050694144997881996472755363154297885509239801648523858841e-36'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-3.23036877745037309977528085178245549072548178883351333e-8', '-4.72059947393363605943147956087253266046182e-20', '684313252011.3030931889'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('1.612878481975188863232106e+21', '5.6101240182667483241e+14', '2874942.651398798809616051503263192799001909272881791139890364654685253442934643059278'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('3.32428974809080229691671097154212603950764910076e+43', '1.256523080538672685e+5', '2.645625694886301651018870335010366996586139275590193315536930373814279240202582279937361006797e+38'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('2.7756e+4', '-3.11053590271e+11', '-8.92322122879792850806113947861984554267327973271596444983635660367831588249207e-8'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('-2.668747180162028268773707450609661585274863864742e-8', '1.345436522358382406643159905e-5', '-0.001983554880377446076965683237923575753825174386339313985832'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('2.0329534947446651840145979496802136802853076e+31', '1.933579201109296126048883616438787293380757272312319161862e+49', '0'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-2.4115746388903301174779005e-16', '8.687351947756104e+5', '-2.78e-22'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 5 }); - T('-2.9562370193417282e+5', '2.2152180355275920557579249600578521722366691e+43', '-1.33451288854175918701330304e-38'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-6.594939549799e+3', '-3.810903814979e+10', '1.73054474e-7'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('4.883247406505615721e+18', '-3.4558169941840708218929239074331e+10', '-141305150.55408961765751574170221376128593348136084390073078372552498303278'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 6 }); - T('8.902877473602032835230616890019e-13', '8.3309773516931729731523719022189834897938619904095294086323e+46', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('2.56522642387380546072368976200699772192887873825e+23', '4.362896095817453251e-20', '5.8796413380850232420456727050358924892240031665244955012595267367605107437961341787e+42'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('-8.31543075575440962794633508905603322451033007461e+38', '-3.08919081344415970799006452408e+6', '2.6917828188422843652800521618988633049018441017498170492411414731188902829583692206897222222464e+32'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('1.57214404378329883686312946334159192177687874549561669207702e-9', '1.327185210837997983928600150377132e+33', '1e-40'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-4.494252620537804490033864785e+21', '1.91928726199001938e+17', '-23416.258261819149027349573106876247114040374019567339595956310880219968591391266693522510078632879831274'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-6.6620088674050788136405712996e+28', '-7.64946935029114474388677022238536e+32', '0.0000870911243948120085293653397612509715'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('1.77173077658982767429148036509164861303e+7', '3.974536637136e-4', '44577039749.3810521951498149973210289628446919914637389941264067650356417333372671900385181'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('3.710600384390821459414e-19', '8.623326824194791837387e+3', '4.30298011433342714640329e-23'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-2.666869188961064e+3', '-2.872924167e+1', '92.827691715437611131348737754552781413530432388889435'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('6.41880055528295371271924691739782381346596299504286649e+18', '-1.4130341800143333726e+14', '-45425.656690185961576847596866629226191369016102199377716476594104540064145879800238780638745'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('-2.73528519722352957e-18', '3e+0', '-9.1176173240784319e-19'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('-1.9626404104810382516573594326595578e-16', '-1e+0', '1.9626404104810382516573594326595578e-16'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('-1.5757187747713995884217685649905401120371e+8', '-2.2393e-6', '70366577714973.410816852077211206185506055463760996740052695038628142723172419952663778859'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('1.480835147390577628445960141787666040994191407369e+12', '-3.46539109211483720777346240960284709546959034427e+7', '-42732.1219460647604383219331138800261730200372795762604518684740237983142326932461152963120732682918096066'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('4.484318539845160321753458871389325519098373850294e+15', '5.607814797303005689008492636683631171084199573e+7', '79965524.93141938246441974307891682936389297447137517'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('1.35e+1', '-1.1677973157260636666418264822210582443246705183475e+49', '0'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('8.6536e+2', '8.2442391680978712887805298966243100701121526751523e+42', '1.049654167419863600184768906243125774165e-40'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('1.0692693176355857259806636599484697808433195100395904322479e+58', '7e+0', '1.52752759662226532282951951421209968691902787148512918892557142857142857142857142857142857143e+57'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('1.227655720043460518276302272997417933308176116e+20', '-1.173e+0', '-104659481674634315283.57223128707740266906872259164535379369138959931798'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('4.3907030188404130885653950063068e+14', '-6.569079550992238634552125738045289626717e-11', '-6.6838938161088509290569798040694186429146481086822161e+24'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('-6.53644739e+0', '8.7834710029399887709854994562378869966e+37', '-7.5e-38'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-2.7479594724454402030812592683704016311325e+40', '-8.455030151007699241885905293135108270410391822e+38', '32.50088318275161975197034050532552605685223692'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-6.36e+0', '-2.78819398872000965873655678223e+4', '0.0002281046450042637608593310752328550986331416670517'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('-5.41691113602878118999735800399063619632383102e+35', '9.071066033854418764256711460567622402922046577e+25', '-5971636757.81010968204198841428442'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('1.356417944253669913351208760266177416e+25', '-6.132297861490114912344960128e+9', '-2211924428478540.596796143077988742335141463949076780885767486491137334936730453574644'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('4.715556673104617203548659543267341428127e+21', '6.2760400536921382710428327818779843054168e+36', '0'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('1.0317652830960034398453699285e+2', '6.1829675144044260363e+11', '1.6687218244189467765197512712584915393917500945172698826433184102065454534234108477e-10'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-6.268346540757896995955790276886761e+33', '-2.798429531723388124523913358498302e+31', '223.9951540569110243569342604592798330500844357110556973'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('-1.6624621540837732404151147322498204314634349e-1', '1.56328841e+1', '-0.0106343918592'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); - T('7.6161454067479047556223907398161e-17', '-3.8582948370917617886492095694e+4', '-1.9739666687807275116651e-21'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('-1.29176772662987536e+16', '-5.09266917896438263429368605119e+18', '0.0025365239351607798'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('1.0073573787565267e-16', '-1.981003983676413545854832845923167276e+32', '-1e-16'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-9.6768142e+4', '-1.79696e+2', '539'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-6.0477677e+6', '-2.19597560417411889123470558904291251120912008389282209e-19', '2.754023172436150861164453543182847206812675939874175005517876663337993546643686205e+25'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('1.261699492172453014018092679981487796178e-13', '1.080225322668030878877958754510767811383389262270059e+32', '1.167996588948870452581485424509281395833013346693792e-45'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('-1.159502953021659234017e+9', '3.950033565369688e+5', '-2935.42557001826406810320053'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('5.12335648790260622032484326543911024740555594437e+24', '3.7505305088939940628886453372494086801160748622e+29', '0.000013660351450956332044618895'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-1.46966156284716990527494920594962393853410257522365321e+12', '1.0776860047846269e+17', '-0.0000136371963291931069490657735708'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('-4.540048216254137e+0', '-1.133706585235283117781288653149e+24', '4.004606020094626873942359883456765163281122690525449179887628978174889e-24'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('-2.29786804039100055196053306926595949048285e+18', '4.083849473294012528739e+10', '-56267207.09021509798296578299598544505'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('-2.907236413510747347827705952106309e+3', '2.780400503429919011079250700040402660132e+35', '-1.0456178561053930125706314941292237e-32'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('4.5010472266359015e+8', '-1.214638285103347199749924616005837201754e+18', '-3.70566882489870719310162768524526599220559747824e-10'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('-5.4e+0', '1.5750721066529406e-10', '-34284144688.9381266182603110888925497366606562451655461638197923'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 1 }); - T('-1.8497048882001466e+15', '4.794611116582358983931777034e+6', '-385788303.41482053903672236900793707833744334439484623'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('-2.120252067840788888612751008e-4', '6.78642685252057316389423427446814056802841663821467834573448e+59', '-3.12425391729271764050739741e-64'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('-3.8194885484056583309853291e+12', '-1.0823626026412643451596105005641681033239927255030360508573e+13', '0.3528843789581281771863113667186679739520698721752024'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('2.68124993e+3', '1.5953866438589370234872568300984755455477714587772e+49', '1.68062703816710292856861045614608661096036890826335974e-46'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-1.219877047369145e+10', '3.66092064335470571432e+16', '-3.33215921952163279487170395646358025012426241393264454645620511358967453602564685649e-7'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 2 }); - T('6.66629794570161149222899127983354943e+12', '-6.308953575665103160481420643879e+30', '-1.0566408304880950620052147400293819964166036254808867532571554725224287e-18'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('-3.980852969839127008639786231584131916557247110432e+48', '-5.11841225494101511199035259489828e+18', '7.77751531443416840525931402599024451589046906671966e+29'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('7.453652183365153360502643934817177961790240146e+12', '-2.274473231558113970582844474e+12', '-3.27708942886044631026315833752242902005'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('2.095936172334698877398439562038111769645716801648263e-2', '-9.69039170081322222260979231426382655741383615071657e+19', '-1e-17'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('-5.8207791953766837540943314431e+1', '-1.18357630423732954e+8', '4.917958541868126920200404874333493925171278252e-7'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('4.61056059006e+6', '-2.07440399904612408794893747e+0', '-2222595.30553358'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 4 }); - T('5.8071e+1', '7.9784490756857401832455944778399256449687681e+7', '7.278482252518338251899949297854210037001968693656166675394656163e-7'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('6.76442007200488342237237857961359757349795757287783e+32', '-8.55386468355755784254803678496292573850506357383e+37', '-0.000007908027917495132444245091585547753726194690156368086798295478993'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 3 }); - T('8.3376305184495642298818671705786770306524469580611554337e+13', '-7.325536870820546190516379149090804798183139509834697152221e+38', '-1.138159655118308299590211929663671760159898393397066434754870309299928894e-25'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-3.4304287413537982527819689877203663e+10', '7.1414492124429393531e+19', '-4.803547066296815176130776598806964147646706679213792447840710563686043360337009e-10'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 4 }); - T('1.366510611666465759959233643447011226073187e-13', '1.38300074682646612533946492e+17', '0'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('2.08100787440011305e+13', '-3.976752601936868492051090370650417875518896855e+35', '-1e-17'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('2.61837292523e+3', '-6.3380277624255913e-8', '-41312108803.82665100551479260369901993600029757911806959246895894373816180098452665305'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('-1.94133136747401361547356020990483123341103383113e+5', '2.45709e-11', '-7900937155228394.62728'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-2.32272433910860004186167866059586312811267459933702908371e+31', '2.740310768360056819e+3', '-8.4761347724755976636821850258296660146383381333000707945171197229887917703129992089013032957193e+27'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('-1.332e+0', '-1.8158039094930935217577782152883430305945135e+28', '7.33559385480035674488228900560161890525182979812285e-29'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-9.84933786751815837e+8', '1.93811065012307635e+10', '-0.050819275292'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 4 }); - T('1.925908405e+9', '-9.093382567761151682368945778883426278786e-5', '-21179229958144.94620570154189826156144718562744913925'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('1.4e+0', '-1e+0', '-1.4'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('2.76605963830845290415197828656050351e+3', '-1.99993576433266511439357862515732723814925943234954648616973e+59', '-1.3830742405026326404153e-56'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('0e+0', '3.96672850369802552383282971901872365106370354487e-16', '0'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('2.76857523583049347310212188e-16', '3.1452245783713142824815207978864e+31', '8.80247234130460589e-48'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); - T('4.357274317210552993960992796319346403425583991317217565129e-18', '9.094268885060035e-8', '4.791231018436935e-11'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('1.4039009724006305010974e+5', '3e+0', '46796.6990800210167032466667'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('-1.58346432263184003672652745058411498559850087e+39', '6.6773e+4', '-2.37141407849256441484810844290973145672427608464499123897383673041498809399e+34'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('9.73228e+1', '5.115109e-10', '190265349184.15228297188'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-1.8530906860057e+1', '2.5252632238440060837832e+23', '-7.338208027220577702508725091186e-23'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('2.1693806046892803e+16', '2.05017531663766730588144547794985470551554948150675e-19', '1.05814394851222396588324507253150221197882158562e+35'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-3.496196484866649020332764869e-19', '6e+1', '0'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('-2.317721799311436579383425494659623010340469386570355945e-4', '1.189911351644474501700532560346e+14', '-1.94781047857751076432509e-18'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('1.19890141474862435e+15', '-2.03047465249265460257713423226394761101e+38', '-5.90453770637730957e-24'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('1.98513293036932958973751311071185721751e+4', '-6.5415646637956200290819953741594589587739407969506172e-20', '-3.034645428724530092307638502769599017628697705e+23'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('3.17526517601104291784905e-9', '5.99109457762345999857913595424635469004e+38', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('4.8941e+3', '1.97859080153533358545e+8', '0.000024735281272925706475601086927797855050790185586656378118996586512708966'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); - T('-4.121446962927e-8', '4.582394751714746876631460438e-12', '-8994.0897417987423949251748793151784536659572640866065297971'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 0 }); - T('2.85778552174886354404223401424014e-11', '-2.2227100424261236420923264650125244182481642994861203159e+55', '-1e-53'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('7.2251578752014560028324536931212314571228257033e+44', '6e+0', '1.20419297920024266713874228218687190952047095055e+44'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('1.1440132768507606927650220047747784759082981687031e+34', '6.41425089765119244731103668844907368207684369892387103868e+56', '1.7835493109097e-23'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('-5.059e+2', '5.31040971619709590484744737604e+4', '-0.009526571903801923461704869044014671299807031287576007757239'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('-2.017224591942822302481233322922747368500832e+1', '2.7560493027840594e+5', '-0.000073192616326024951279013805032222874322442564379231223360154025'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('4.5272193500978667342e+1', '-6.9541563214139826062554896e+24', '-1e-17'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('1.2321314743004878464383729e+15', '-3.6605923110953916088711e-7', '-3.36593471653713380059005480533422506815101173728835981994358821477104403275633746584392905916488905707907102e+21'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('5.34497275690245106081709015835e+2', '1.3246422423389318767735090947438326377122544297550315119e-18', '403503118507287522273'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('-8.2066415917795e-11', '-2.032154290376e+10', '4.0383949342060358540682117e-21'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('7.73098532291085467046715330348604232059e+27', '-2.8427828995107482376840795394780097405017813551606561e+52', '-2.7195130955098193552123e-25'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('4.159994522e+9', '1.33219431148459346996777673915179379208e+17', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('-7.578382158233609147013992440824152e+33', '-1.194790131876113934368330767351391476226912906694e+17', '63428563360610352.4744837689373958725373895778837'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-3.3523912075112814694561102514002305660335936968214849e+30', '-6e+0', '5.5873186791854691157601837523337176100559894947024748333333333333333333333333333333333333333333333333333333333e+29'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('1.0124221513835964646350754553678196377980104978550149931e+0', '1.06223493251028739351360993865751826931269242483365932432311e+59', '9.531056835e-60'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('3.1412680718672726534259165731384642759801440307320437e+52', '-8.587098552390722698636089693462242e+1', '-3.658125096273311528740779267854560394066057385783271547104152546813775658278133132135780036639716164431696355031263756842057e+50'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('-3.3189176972735816006303141742516e+31', '1.0305408464997978941041994403628692087955e+20', '-322055909627.084586851594012420324993263245221123165476447398500637369159544'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('-4.41996359037973136e-10', '8.3637252017880817592764771835338336554948916221e+46', '-1e-56'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-6.01286395e+2', '-6.51924117226437854230337805304850611555114e+38', '9.2232574177210648909268616981448831912996e-37'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('6.72130200333126348620242332254e-3', '1.470690629963978878986042713002185082336370207421353846468e+33', '1e-22'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-1.81395651269631437302845197e+8', '8.793397570432077947919559140501e+10', '-0.002062861934954207532616785189028623'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('7.51158709509e+0', '-1.176960625056056068607994268251373585573269e+33', '-6.3821906486737731630815122030718382190115091447644714e-33'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('-6.62098070588533082674697128193106090224175785e+12', '1.59464407661588600230339174188328819300530278981e+36', '-4.15201160119455082725930806188158e-24'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('3.0010634710512838227e-10', '2.145072033029717544248145014646271e+7', '1.3990502066322485526895e-17'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('-4.9378581910955998250725892592344946065039e+16', '-2.6639627720482927110444586336746996345597e+40', '0'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('2.1e-14', '-3.721628900729286792960485901133824370672021e+31', '-5.64269e-46'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('1.407290844938339400405941683041650860391613062e+1', '7.4433592e+6', '0.00000189'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('1.7801707015164154744049548117e-11', '8.99547466046138262004826009548369088489571203228e+49', '1.9789624991563e-61'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-9.058549727605376903029621709151e-14', '-6.280609879085796e-6', '1.4423041554881509582304308427717680178832125470306881158085308744291282361143256918814803e-8'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); - T('-2.78687102227925412316e-20', '2.3e+0', '-1.211683053164893097026087e-20'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('1.191210938183934787663432717589372402287600047e+30', '-6.912820209e+4', '-1.72319097295928933895904353555475552552100237473426238214493681763856213723784408060539507082094285666673556618749897535e+25'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-1.93199234441211857e+13', '-1.6817109528340911e+7', '1148825.4513394484247756049518702595762895930362753'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-2.0093417044490203540433263556808329e+11', '2.372397078319043397865939666128034e+16', '-0.0000084696686014835884446395689999651834142413394797890563578916443'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('6.9760668364517881187250228873617916088087687251726e+12', '-7.537e+2', '-9255760695.8362586157954396807241496733564663993267878466233249303436380522754411569591'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('4.062581289845341763821800622443523733e+36', '8.924702582909586373710978648364914e-9', '4.55206350251380541793211968076115432739938532546232249822039630695343091570546147405720455998001329e+44'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 2 }); - T('8.276498449374e+12', '3.0238213900883324916575967405259702994906680958904315216e+55', '2.73709898226899745127e-43'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-4.24478834924531985617064348938904219879237365738e+47', '3.2202748163729775e+7', '-1.31814475201413416323977852842956795110527438813987002340907e+40'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('6.6438573008483046256073583680081275729412891613e+39', '9.413781613906943755332125240718379584663901643127685051e+47', '7.0575859663382880237826726713507760833378822602218647475865524323926144422415e-9'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('8.68e+2', '1.75981415269573306e+12', '4.932339012448405793881746522573096806023333016968009976945e-10'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('-4.7929625941127417273e-2', '8.97459870533419765e+10', '-5.34058708526317396154647313899145291e-13'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 5 }); - T('-1.70795881993106042756586177878724829833868739747166913141092e-14', '1.84531726520870367725e+13', '-9.25563778182009186116769542e-28'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('-7.05545813882718235954710411910087648623655626112e+12', '3.4139762592085546156e+18', '-0.00000206663948520333724913777739052220687722064980024149927298261781262007032504303'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('-3.370537781271e+10', '6.400852200283646126637958453293430097314531484e+27', '-5.2657641136e-18'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('1.596775313e+8', '2.324646725e+0', '68688945.11272460119719911420089002986034361844808914'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); - T('1e+0', '-2.546420372841898e-11', '-39270813674.9614334724923882608553067717769730988684180625966483470844643988287585030186311570341'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 0 }); - T('-5.79e+2', '7.948616362585015845441596414074816e+34', '-7.2842866429610906023406328059145e-33'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('-3.85491067016337035196695500968775807776289390957e+47', '3.0606365138716056049809162421420644957973020677149e+34', '-12595127362206.8691288992474211516220852359189436964527445187289'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('2.92332947883191144399509618771587677e-12', '-3.079037e+6', '-9.49429798612e-19'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('5.98930745209766438320126482750923e+29', '-1.04398682e+2', '-5.736956958994620624809482582844513305254179358317952711318711858833620140913273215460708594003131188955e+27'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('-1.4111549132238576653650229718141168029e-5', '-2.5895025984e+5', '5.449521132343257915786391712215077431682873726673453798686097506871688799e-11'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); - T('1.764215446e+0', '-8.753889492675622e+11', '-2.0153503736551835545893e-12'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('-1.82322e-14', '1.6565026160004191568565e+6', '-1.1006442020611566951103076886048960121343367627480066626992964e-20'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('7.71929377944460022023385141e+2', '-1.142016304e+6', '-0.0006759355144411843896261792257214569504079514437475141336'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('-1.5307e+3', '-3.80660699168276022599648653015e-19', '4.02116636507131017976277394020437240867131765178294986366952e+21'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-3.4363266002981148152615590279838721144212321937759199013e+8', '-3.4106154434770170030428038029173e+6', '100.7538568111005233330613714095642457'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 4 }); - T('-4.87442476478703502691e-4', '1.84748029510706437170263884879782289e+30', '-2.63841772910739190885606381961440742772863176497262592539937844e-34'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-2.43911315019915e+14', '-5.2884732364203727902615629563615777997159613529e+46', '4.612131027536637345459848386605582747706417273054840433e-33'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('1.0404772238708764206189704291172607249144721409e-6', '-4.69125789382596841618827942133258e+19', '-2.3e-26'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); - T('4.158e+0', '3.025752529083598011226611844663e+6', '0.0000013742035939929704'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 0 }); - T('-2.4141e+0', '-6.6044858009244630875999014356433050274e+7', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('-2.7825016972932337625439128073513214834322917713882614537e+18', '-4.0407771493161067068838334649444697846337161e+5', '6886055811724.649306904048331675267251307335270480245666'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 2 }); - T('7.697296520466808323e-3', '-1.180237649672953028709481636834e+2', '-0.00006521819162945487739308931071078946581100600842546187298922108535740057'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-4.025e+1', '1.27878825880292867350151e+1', '-3.2'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('-2.72390433335668e+7', '6.20381758713439149584180989066102367409648990642385301e-12', '-4390690562864985883.00256809620112183450059335880926477452983733342379878430105423'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('1.28236196691710055e+17', '2.156e+1', '5947875542287108.30241187384044526901669758812615955473098330242'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('1.20960129969207e-14', '-6.69326167582e-18', '-1807.1926039614762356876760666519295505274590610664394157166311115592776355216072347675369'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('2.3481416018542294138332892663766000932203167287086213848e+47', '-7.4115948809072572618198734e+20', '-3.1682001506898231254540363443293779848080168695629914143106522579361535670335635882686e+26'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('-6.42303962230503497057046294766382867786116866644640946e+20', '-2.24482573800323316657580610891710523516078143291621165e+36', '2.86126424584667873522316251738359678416067931369402655724655146601960171802115737224e-16'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 0 }); - T('-9.73622563685977827413734127145194929370097821661e+20', '-1.036043917869311488829e+7', '93975028171420.855983780010911369598028765040990272035590282225686082844444262623388'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('-4.1825694369758739591184e+21', '4.8777e+4', '-85748804497526989'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('-1.4258350426877118575541e+14', '-4.68067882151273667e+16', '0.0030462142288731100346784472756447'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('3.2866136093547541671426738634566486512517819e+22', '-6.24765751093847724557691e+23', '-0.052605534211830750604804929258940471757775632727823306901'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('2.74090288232e-6', '2.68378316668857183407237227311885487724491399373572e+50', '1.1e-56'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 0 }); - T('-1.128246200706225140379211e+9', '-1e+0', '1128246200.706225140379211'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('9.097120826606508094444541221181351781e+13', '-1.296180337e+4', '-7018406750.1453758702131439764167258625834253802601851998314953608187624'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('6.7704285424508575314186203667844e+31', '-3.181597e-8', '-2.127996896668829374499228018754229401146656851889161323700016061116477039675358004172118593272498056793490816090158495874870387418645416e+39'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('5.41400511952313147480823297140496844396381940069272753e+27', '2e+0', '2.707002559761565737404116485702484221981909700346363765e+27'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('-1.24408749429972863809619380908e-20', '-3.533067086814805141399e+7', '3.521267679695606937961163423669965607838460027870446328185179414e-28'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('-4.0384301052831983636043746466627e+2', '1.10626775e+0', '-365.04997142718825199454423638967148775692'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('-4.0092327030210790439107260789766500879979675803077e+47', '2.3573105e+4', '-1.70076564076776438399214956153491450871574515970963519655132406189171939801735918963581590121454089310678419325752801762857e+43'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('2.7789994742319526886402627980116043345055e+40', '1.0542857069062600057110147073543994512700666111e+19', '2.63590737883259820317219262637695297267927111516897869253229851e+21'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('-1.756137e+3', '1.27e+2', '-13.83'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('7.84973e+0', '-9e+0', '-0.87219222222222222222222222222222222222222222'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('-3.58952950025445562649220080873664588099e-1', '-1.648948247439151361092372409133906366e+26', '2.17686001111864160870895568515e-27'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('-9.19860057319781399583997445814025009347440189704153213793278e+39', '-7.460513190493e-5', '1.23297155816568685909183290869672418198444561362985814256207486655712180180293186395548140449972821073206e+44'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('-5.70890497956252658913450445182657509220065195136326927e+45', '-1.0574e+0', '5.39900225039013295738084400588857111046023449154839159258558728957821070550406657839984868545488935123888783809e+45'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('-6.93467884737287245293401929546681485489317419843e+5', '4.899701464986656009905455721773075526e+10', '-0.000014153268106084007222'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('-1.537838728915552987945225668860762967364459916916e-5', '-7.3223761094038243037496873e+7', '2.100190847804950109343797055232156071475e-13'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('-2.8860519062e+4', '3.7662667274076311047478942078388914335566e+3', '-7.6628983422703732164983015590399822443246960235590574130643013211793'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); - T('4.548244993737432954346493902297390861607648200451e+47', '1.6396854e+2', '2.7738522241750966095974837016280018481640735475543052344065514030923249057410647188783897203695294231442202266361583e+45'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('2.53212862457587e+5', '-4.5793399455653357405665227073500963648123523939e-5', '-5529462006.91652244'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('3.8317786586151327634e+16', '-5.65e+1', '-678190913029227.03777'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('-2.6874555668071096894724565389362326912e+20', '-4.0276557408368436098922400259861e+29', '6.67250564530305491886027140988482261605081043443615800523170422947527713e-10'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('-3.0781281377298395638676590460091776960040664514154731980958e+58', '-9.396800830321372663204393086751253442257502004387405964e+33', '3.275719250957633526759174282124841505911819079656619469e+24'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('-1.28453e+2', '2.67101773394488524714201657e+28', '-4.8091406645318269531133520513478006955072385427e-27'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('-5.8557674608e+4', '-3.31453697677e+4', '1.766692452623176532479918265962486259259907432805139802048792214898624801018'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('-1.406565070446e+6', '3.1361296073e-3', '-448503488.8774764063304087413313583049249891885997246169998874714555232214812425108'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('-1.1729470639144622474184298417950072059118692e+13', '2.82334215416350426403808560075134455113609729006025626834e+30', '-4.15446304368299742807349620769381810680774503645157800709486074262114e-18'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('1.529288752124570689332823e+7', '1.336497694044271406144044359810104514792140626321849687801749e-7', '114425094703823.1920006429911594750492036183752795867802277981041097756514217525829215034101818'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('-1.13217140733355189e+4', '-2.43020464426027711727243e-9', '4658749253926.186'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 6 }); - T('6.19603014832887041236955227961616499300922171010445003056e+41', '9.066774801109484423981723413988153664182940131418e-8', '6.8337752775889765009073761461406737738481654041331871541030998711214761946010243290737268504709392e+48'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('1.11192912299130286126945894945995296018653243192015021206293e+4', '1.018513899703463314540954769524596069618244e+20', '1.0917171806050335253e-16'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('6.067516647622294901506038350906683676478956702605625402e+54', '-2.3630303294542695231841253246479696e+31', '-2.5676846259622738980016481226962788835668185681e+23'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('3.0951457131582254245139997021287234213367529291069533054e+43', '-2.6282888151172e+2', '-1.17762770033330886355993410995035533933532768290415332493192276143289018728334285821263224339273364867033139064507153907147666936322709e+41'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 3 }); - T('-2.87902985440875315371655741739416597195e+38', '1.119057478112371e-14', '-2.572727416347825166147664093129796153456303230601316574798939375992685501164512961280298521027327941142303087246693024451601814e+52'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('-1.63353170025199723577955825494176196178798564188624e+27', '1.089884459788696100476e+0', '-1.498811810353458949180604050144250099803509192783102e+27'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-2.69323566440032401698637010871641982327627458844676743e+8', '1.9264548643899854257927e-10', '-1398026870073148992.7'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-1.8634612922816308530437581317846e+2', '-2.529904975732811096125039546370980065541412928541e+29', '7.365736302968697564e-28'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('9.23244551e-10', '-1.7118528831334919996734668417450305629137334387299697515413e-13', '-5393.24704883535525'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('7.81547272819026433863496830779339828672637516e+44', '-1.10357391523129640265e+19', '-7.08196580249201624598769584432510507623916059920882432451058839824506424805364402465698446023270819531035e+25'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('-2.548258498100572416462209595860967100773788845311e+23', '1.975782533439574140315369506223306039208754586993e+46', '-1.2897464447488529507042303347637613909999182e-23'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('3.4405972476430995117779134e-6', '4.843624609391849565374784802688470836704544996e+17', '7.10335239640937037128307854209555545433e-24'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('1.565867432002e-7', '-6.605908959738623454598681683189e-10', '-237.04'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('-3.693337380646948917069e+16', '6.72204963852034976269555950023592455796159e-18', '-5.49436195692824772774147080568112823974070892893025429431859626143445693763907190450600095309189863877999847308245949932346707e+33'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-7.539494148372597699573527507634012955342591509409e-10', '4.36e+1', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 5 }); - T('-1.01901897752972523396449024437574896639081e+41', '-4.037297773835272085458e+22', '2524012432607114315.85039996731242324901152075645191282270334461849152436327884479156218624456134496121831'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('-7.08272422015363342934299129424984577768542562037114851136e+49', '5.03377532124726538162931234092425704374083969e+9', '-1.40704019709776814213115508262193235718211858919544886060847714e+40'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('4.6851279634162228491261171400013935557449538150627903368e+47', '-4.1572869204291596090787374e+22', '-1.126967672207857581183503761953311694566023237785398197911098636750422864781137154460485148074e+25'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-1.83e-13', '-3.12967214633373665269562581559759220416634828859e-3', '5.8472578e-11'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('-1.39518131260891e+5', '-2.33032982767e-2', '5987055.12002090211824165'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('-5.7881445525713712976994123768087097671e+0', '-3.7994872152049425348e+3', '0.001523401507816143955'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-2.338200117677144093098434e-19', '-1.524274417177e+5', '1e-17'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('2.95552542450948844597046245734371586022e+38', '2.2734962637302145896725195861540685987883961753505087533e-4', '1.299991326865099761391527454420983211645095560080468949680285395599101850019362118036e+42'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('-2.726526947959238476e+17', '1.186128475127148467e-2', '-22986775928020488201.735223143140358077523416596681763687638943547207600322109298900606105454422336'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('-7.7289068293980800770010214908792416923879756596156767761e+44', '-5.3221587789089602139713071151e-1', '1.4522127487114358440135238511492841985518141455301077536768599696103822828180495742604365668933303347042612137627105904989771575330500422e+45'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('-4.5973242825519885871166968323e+2', '2.633815246687344797353e-3', '-174549.991246889012180206975444515779731913760166971465640593667'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('-1.940266013879066065108173037186648638659496537161086e+1', '7.73335937137416658539411297955478785e+35', '0'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 4 }); - T('-1.603444957189512597145603919446074601287792617192472424964e+10', '-1.63249274746e+8', '98.220648127491963415084066387995284361469466861264583456197304'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('5.035470550034386772e-3', '-1.095524802737e-13', '-45964003165.0040154795071819757880815954764517180998108372907831373010693625621009717603194745495543306348426'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 3 }); - T('7.21e+1', '7.136396941683978515968559158e+6', '0.000010103137562158437532406966667285004325584390767567672769115517'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('1.08e+0', '6.999130880547144469406896e-13', '1543048727666.559854733262845362400084906715556'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('7.611e-19', '-5.809404885238066099596356502627157805047748874432764486778e+48', '0'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('3.46668182209730480619166742195321191262074943e+5', '-7.9490575391189e+3', '-43.611230702974171198609449798801680013980513123863766887946865334298483772964410325'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 6 }); - T('4.09949500806835495555781838456207e-2', '-4.966155498071208032908553468734143107604008505e+1', '-0.0008254866384390394043683003676779100411841520228965219126221'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('4.339625310516935597140574204980873082369528334381038e+48', '-1.412937e+3', '-3.0713508886220232021247757012385358174989602044401399354677526315752223913734e+45'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 6 }); - T('-1.4204220066094262415419286170580047650222795412403958e-9', '5.616821297520519757303558048192906874640777631705e+0', '-2.5288716364119594964180469499332669634501413872459263661e-10'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('4.874426899280757322e+3', '-9.055052224e+8', '-0.0000053831019178015480896689746137459714776792434764427041'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('9.60246e+5', '3.5473955460328015248177871307351183639e+37', '2.7069042274518347196e-32'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 0 }); - T('-3.6017722934896175050441919455093994415e+6', '3.43589538626650294113503280972969e+17', '-1.04827763612539989943998054919962281970987348605219110451629189e-11'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('8.72363436153679675706e-18', '-2.41232835e-3', '-3e-15'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('-4.490204886993847143381112332870740868073548287e+15', '-5.24042259641403020428085578674724035900603329e+43', '8.568402269821617663232503656529852386657295058861077074053468590030266e-29'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 4 }); - T('-4.3657546292078216e+12', '2.0557935164324119256940389460467713160316139449375913e+52', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('-4e+0', '-2.23482e+0', '1.7899'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-6.5425e+0', '1.0715194789859364160630620378345204493633338900016613e+19', '-6.105815272897964410774690445146686997356997829616089871968499214910107701457e-19'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('2.31306634437e-2', '8.404739740233606558e-16', '27520975257536.16252932108204828204804660200470914792206093893429881408669416643920082434098776'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 5 }); - T('-4.011045223673719076167483866452819493071929912685313470259e-17', '-5.782923914613783263240653684307126739518299198123419268e-8', '6.936015902850763373701552791611380210273009052491564096623674866356e-10'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-7.948139697679759040542333131187556894208224e+22', '4.64297494246999639516452150375e+29', '-1.711863578021263705941168007703616440090934540959178136467147897925528476321351585924359797e-7'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-1.83e+1', '-1.2681038319e-17', '1443099495455439921.378255082930642471470005184202456158511352574992562010883708299596'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('7e+0', '-4.5616110996888646872531881294809250602156461009214987076e+54', '-1e-49'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('3.464049904e+8', '4.136344776669033265672e-1', '837466432.5708295593313128870267228078342600030744438418688462047945386'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 1 }); - T('2.08358388e+8', '2.70688223453756540681554036221375389372736e+41', '7.69735695707483341366731853275675008170718355252871200671e-34'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('-1.9063092e+3', '1.31581803e+8', '-0.0000144876354977443195545815708270846539472'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); - T('-6.0416173441011039711036376681431080691645e+11', '2.24072340581609e+5', '-2696279.8390998629111086696329734788789744326438442121167048625'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('-3.72080938157140125160034247042328863e-1', '6.73082491998278928799684730767e+26', '-5.52801391479503133048963375124638181411438725729279908977744531e-28'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('1.6413242e+0', '3.581047086923e+7', '4.5833639160838319972469e-8'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('-2.38e+0', '-6.273600448319043e+8', '3.7936748117864286736009909244204898164e-9'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('1.11202811344e+7', '-2.229368739101654834892963609240144458095010569013e-15', '-4.98808516480814304005515484419405311890787307014025575649177084088281486382e+21'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('1.51018909178486990427701398238591605267044e+39', '-6.51645e+3', '-2.317502768815643339973473259805440159397279193425868379255576272356881430840411574e+35'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('-5.6840752260630399434657445e+16', '7.63394679392410265702525098627698916797478123074495616170749e+43', '0'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('-2.2353942566e+0', '-3.9066748900974504055585337531e+15', '0'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('1e+0', '8.1555003339332679175063879564749099905886e+12', '1.226166340572897661951098266833422518279226833319326786810209173315e-13'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('-8.444889584181819e+12', '-1.9969251561743747528442047776629998335144496163934e-16', '4.2289464670574751901294991658686036615789e+28'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('-6.869830705344451e+5', '-6.95291281610353001069505051e-15', '98805074751309208643.2213'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('-1.522492872520561130184184913260458587635409351322187802e+13', '3.44224416019070642319342352136816221133327910209702e+14', '-0.044229659538044283543458804822000661629167942415797913592598362233024'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('6.67994902754442e+15', '5.1676e+1', '129265984742325.644399721340661041876306215651366204815'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('2.44831039315420342e+5', '-6e+0', '-40805.1732192367236666666667'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('-7.08069274392360166378458597857785548798416491766350485091828e+50', '-5.15397141784150480716662606182040045977217183446508e-18', '1.3738323653507982044947364851807746525773453172786528355924399503329e+68'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('4.96642362307840152928108728394520483547167e+0', '-7.0080871600128557237808489795939880935e+5', '-0.00000708670356073210005414906141661983562764188'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('-2.9688465513396129050236377614548337749e+20', '2.175415219330661411e+2', '-1364726386465695932.2513406767701964'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('0e+0', '-7e+0', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 6 }); - T('1.00789451000879664571252484e+26', '4.334414709156770715962933851444e-8', '2.3253301256096818926892488231052793581699593108456626638550997365594371436816941368776474626807887188e+33'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('1.8665078844953659008903922803e+25', '6.087837853350479213330260562750390527567314e+21', '3065.96188902784548225990405405929866569469996906242295936128427262834'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('2.5e+0', '7.8e-15', '320512820512820.512820512821'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('6.99866e-15', '1.328168165847422176632976077922634e+6', '5.269408e-21'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('2.27906163999347954170012906e+22', '1.238327530024930539125181147411e+20', '184.043525217241717838452802725577638916286107111995624029'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('-1.52759589e+6', '8.1057910517214423896e+1', '-18845.734861072955137054334516670719125505'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 0 }); - T('3.851006974e+9', '-6.0856405208591330282533119293254916480648829e+40', '-6.32802243379360615332567e-32'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('-1.070241896937e+13', '-1.77660742702e+4', '602407645.41448235603470228703445916319436326252401326629685407403965723'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('-8.785683999714580728410574044073332140938095793765e+24', '4.44050066247888998363011940846043158755e+38', '-1.9785345544369339738260003294455880847626022689030601092776804e-14'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); - T('-2.505920163657374697854096827790561559564e-19', '6.33319943776954360827348124257431e+8', '-3.95679970018427465796001472014469e-28'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-4.51166764628611e+14', '-9.05e-18', '4.98526811744321546961325966850828729281767955801104972375690607734806629834254143646408839779005524861878e+31'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('6.143542592091e+12', '-2.49618654906066461431e-14', '-2.461171259176468703425900272279242213125817058683962e+26'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 1 }); - T('8.08731858292774282163e+20', '2.32485890086771530778e-3', '3.47862770506600822608056497832642262149982485632952822623942000698040822e+23'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 4 }); - T('7.748326131458517626200690594249956944e+28', '-1.3331115275861422364603342534597474140796093e+33', '-0.00005812211485027340092594'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 2 }); - T('-3.1e+0', '-6.91022762484427795921493247895200592490944651404077e-17', '44861040305743307.9490129700806538280507603070878342146974395500397961125318'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('-6.5977516578883134750576118101930823839e+15', '2.23065980628145405938229494632846932e-11', '-2.95775789715190685972048540529022005841208857355085392774689324e+26'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); - T('-2.54748538963310009220098284521588508213946408912715276613404e-5', '-7.088308928873998057714864790981099860369379107164992e+11', '3.5939254555568260151148355e-17'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-3.2634e-2', '-2e+0', '0.016317'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('5.5560819440383392953536632e-17', '-6.09534241998421810114152429429413431277110559904942e-8', '-9.115290924136014257418359791499467514e-10'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('6.2700578715825120973120492643501689344228564331142218662e+0', '1.34626104500587786159205556903772257048946723e+45', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('-2.2446338148664091899014232317e+0', '-1.086844065482979296036410733287606764390058e+36', '2.0653e-36'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 6 }); - T('-3.03611452256219537408952921770250333871e+38', '8.3691165959566240608615530104910074177113e-7', '-3.62775985703083054904338228852979496389831745388032702826762098576907177782811080330326029182965267362214012417418754127780545415816137460927e+44'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-8.232229995135996119830651161946837453563e+14', '4.936913755118814915498713010628e+3', '-166748507336.196599645556982324303964188989403'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('-2.350347579553968338784e-15', '2.379610873089751727163361e+19', '0'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); - T('-7.33121465030218595e+17', '-1.2614257226923759879966717812750999282483234173341e+37', '5.81184806875073529007375103246658747995851957461328e-20'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('-2.55861611168242430354910811927393050708976064301e+47', '6.3430885e+0', '-4.03370709975499207294539264157189436516574006969948472262368718330195140742557824946002251111583891664131755374373225282920142136e+46'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 4 }); - T('1.6750730105231481847179e+5', '7.42e+1', '2257.51079585329944032061995'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-6.6103914657356e-7', '1.93725443313067447968340532014750924192599805508474587028e+55', '-3.412247432596122e-62'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('1.029292562877562e+15', '-5.921462365505e-12', '-1.73824048747421339961949116148645098472214e+26'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('-1.4706339e+3', '1.284038267879266752576e+18', '-1e-15'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-4.968407e+2', '-1.00023067811125655633099176142841937536224253183323960864e+30', '4.9672611615771293397244175907493179370001888e-28'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 4 }); - T('7.730239176647193103018171681299527991870070664332424721485e+49', '1.41e+1', '5.48243913237389581774338417113441701551068841442015937693971631205673758865248e+48'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 2 }); - T('-3.246923547479570395336092437124077332659159e-17', '-3.0156797e+0', '0.0001'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('1.896295477158868528670495761106092673e-7', '-2.229e+0', '0'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('2.84791386581546032423578146067217e-13', '6.8188949491413359141e+2', '4.176503505416345621675002739098617944517258029804705e-16'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('6.50946783044616961391902967493999099215348394680987872792e-4', '4.33655097574945711613280340134495255123292327e+6', '1.5010702899257818140415e-10'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-2.671645968325862463083705716295497763e+19', '1.1756892714198320384633484502423269327357e-18', '-2.27240822321991971848862017057495504833709199948381870081361268027872213192518157425459792727461313622153e+37'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('3.133013254030258702149e+21', '-3.367e-4', '-9.30505866952853787392040392040392040392040392040393e+24'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('1.40423998236290959553122866629624906100643905e-4', '-6.39512709134219060964440752021835794164120930752998858e+12', '-2.19579683453670317337043e-17'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('-2.080346103510817370572786779979586572358484819450297903e-2', '-1.49033914865e+1', '0.0013958877114616936561359695984388154402646442347083'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 0 }); - T('9.5970109965512572316687076235271e+9', '-1.39222827214077707905622091670931345e+10', '-0.6893274034'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-1.66648516480997216702076e-8', '3.488144489288722387704298811113e+19', '-4.777569191664391080723881161039e-28'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('2.803989525133946371375559106331632588894744884422226894601e+4', '1.8917961768014114679e-1', '148218.37360274415354290794753895221692091347152171968764937062563794314'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('0e+0', '7.756552236736901059071744043817454899950588e+29', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('2.9575e+0', '4.96235345010984617928e-2', '59.59873736794248430857325460037754374'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('0e+0', '-1.79838796060736755257725959945252962544239654548361541618092e-11', '0'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('3.564885e+4', '-3.247677120820840326918626850372720140332e+8', '-0.000109767'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('-1.132077519097093500210740713827912842e+4', '6.28162223180959658030375297087886468363682e-15', '-1802205668090561025.050162472322029945914398605460083954458684985163402447436616991483658420631618933'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('1.86672638830344305649138912658904730830234715533385445313e+6', '-2.2301061998458015973239766164874568533183565966e+38', '-8.3705717173133545627597055633e-33'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 0 }); - T('-1.4610797614967516745070776129444e+4', '6.88614970791009957671e+2', '-21.2176589744834289876'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('3.83422820734976235836937631816350903674898539424423e-13', '-3.61169821904072878674378850359884926668683250679368367e+50', '-1.0616136716893632916042e-63'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('9.362499731532147931201996383794e+30', '-1.10355302665545774979309901474901835177045078291380464642e+5', '-8.48395999592979286790989676885315364960432217807452660032752720761128993039238289233319e+25'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('7.721931310855628406085667291446e-18', '-3.146449075416884215265571808405303967995097946805460171e-7', '-2.45417330005015965363066865532637715776088110759091778302143638062485299898895234445e-11'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('-6.36692047256509831055652306921356672356525959250806e+40', '7.66135802819423952943964457446550934e-15', '-8.310433279758580218105604231913158316033349040694694390399884383918790673485830172788596098643173958696997122539994198365152e+54'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('-3.42087895743757174587773e+3', '1.0657952035801e-8', '-320969633372.953631381771755296063388974320264468291864306640052981846743464120005160563651933003704384'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('-2.585185748871749500787228506e+15', '1.5850738934898982284305427797476803620165e+18', '-0.0016309559822349222519445939123'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('2.51255461580755282902e+13', '1.9672345059751823722109994423825668e+24', '1.2772013749128747426282626825051632930610152e-11'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('-1.2049422480536151523395e+14', '-4.651870271343596184932211687962962e+33', '2.590231837453181149977115147457106921e-20'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 3 }); - T('-4.732e+0', '-3.99015144672674056329880910971446617426188829542597675640256e+34', '1.1859198988253499751248284953555804253129661781483e-34'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-1.89725637494748509587754611e+13', '6.7922451559248095038237439332047655602532566994e-10', '-2.7932683985832383868121957688990626386516061490556219650626e+22'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('-1.22854461643867067809375756447603765e+6', '-1.69645086658491372317112521498156e-3', '724185203.731732961556689019966606665969864152795410132189383339630281125298526353896141554762024219053'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('2.64562337593965546453300217077672e+7', '5.832613889825228518271558e+5', '45.359137873927229938659829'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('2.1203751311577938873378167900893673338033566229595e+45', '-1.667616372017153758761e+1', '-1.2715005481704294959212729428651681432960955557707228467070391647971876993100725678860140196759111212e+44'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('-6.7869609205009206193578567757022014931462424108280047071e+55', '-3.862917045455992520752875543554336057e+10', '1.75695228259807570348004759800931840163935270401602995388165008128129105383594715309207446428e+45'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('-2.3519445306259e+6', '-8.064018e+0', '291659.1369991857657063761514421222770088062799462997'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('8.671298172705266870915652679858994067669924819162294273972e+43', '9.6298693e-3', '9.0045855271423744774144054892406422044273485821477289146302e+45'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 5 }); - T('4.5559264031391881627889052318763808620578103634427e+3', '-7e+0', '-650.84662901988402325555789026805440886540148049181428571429'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 3 }); - T('-4.4710343204740606969010668283811540532516487336593e-12', '4.35412761342704043375097150447419131962e-1', '-1.02685e-11'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('6.44428112687596342343198422845844557344581e+36', '-1.45921986806866754033281447454477831415684279456962845127605e+44', '-4.4162509488067842e-8'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('-2.8e+0', '4.55414147291278228617859e-17', '-61482499317465178.585701725651626578565353575562931913291561175344969826941957523022253064831290780019107'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('7.02681139273332811e-7', '1.0622e+3', '6.6153374060754359913387309357936358501223874976463942760309e-10'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('1.657508332007055578351979651553033226275773578939581631313e+35', '-2.1238685034e+0', '-7.804194701101454162428065750433658539256689741348426794100175646495723629741925952043382988660784713626729702742481001378176000687e+34'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('-2.764080129398250969e+17', '1.2949e+2', '-2134589643523245.7865472237238396787396710170669549772183180168352768553556259171'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-7.7991835327300585309075183283025872088199449056190883e-14', '-9.75085458502e+3', '7.99846153455283182e-18'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('6.19924e+5', '8.669421890762855648304872594388691404298768339923843207e+37', '0'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('-3.5806677921269913e+4', '-2.31683932948568e+10', '0.00000154549680962204281085163081139390479827365202'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); - T('-2.70735777091227212093044793427e+20', '5.7671231282731358385646641249e+8', '-469446847361.301796470831459256421940188934073'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('-4.6688193197e+4', '-1.22198213095461e+3', '38.2069361034987285176085830075155604568420086734771236795516829401287299909399'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('4.16674579249361e-7', '1.578127079691912716040002e+2', '2.64031068607418874536e-9'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 1 }); - T('-8.75648136915274623057446896380654776897615682431037003543576e-10', '-2.130462725e+4', '4.110131224733230772941342573269639e-14'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-2e+0', '-4.71195270515e+0', '0.424452477592584861982631523612163520528836775'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 3 }); - T('-2.154359368986072250524524975615717769998946122e-14', '1.1613061220266980568927812645190389914759491972608250549349e+35', '-1e-36'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('2.7728619091228486269151023001617727436359285e+32', '1.737627941941107e+0', '1.5957742403850159536937839163285397719624522432951211715519130224e+32'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 0 }); - T('1.02738716445772650827135e-1', '1.0428801788138772666035e+4', '0.0000099'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('5.94000674598581000492613725424708428430183333e+43', '-7.0220590391338599902657635890572e-3', '-8.45906693874576656506282923432609742012113220674294874225682585668054846626049474911504545805121728205753829189027553174976721051e+45'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('1.80880753196217476902856794e+4', '1.16337936447335295454242481e-17', '1.55478736102646872976635440447892000524992658589318970370823381254359318804447428e+21'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('3.21985390008010603285074504411720036471193e+41', '1.102013956736134154605753149728161710446261682437585e-3', '2.9217904913077854520353826207026204608715334527890507813761403072252920121408341470197636947188686003497546412161090004331927185e+44'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('-7.71e-10', '-9.5885627368524049949226765463166521675581438411961562212626e+14', '8.0408296963710825538150497407533187267104e-25'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('-1.409472e-8', '-1.831352054342751515086495319785653e+2', '7.69634651435625362919637016222128087287583795847199617037237679823128369e-11'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('-3.645e+2', '-1.732633774241943595520124503144072253e+30', '2.1037e-28'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('-7.77177417841e+11', '-2.25172404636199025e-16', '3.45147718743178484050006514325830994557653649901257179121864e+27'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('-5.74117749951482071251062836818469191744312e+17', '-1.408312e-19', '4.07663749191572656663482833930598611489721027726810536301614983043e+36'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-5.279448990789888178544628318780147533426825801984934e-2', '-1.40902214982323169815308082237895872760389588325437493029144e+16', '1e-15'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('1.2355215374588488866626452962493545401e+37', '3.27779220192511527453556602644183161760629649e-6', '3.7693711539529610457788797729857804380903931488178453750362318653988405337262587149699441e+42'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('5.9780971906959502237283103144636868040612e-14', '1.79565027213404744776161726006360224734e+38', '0'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('8.21423325589394799686775096044117e-10', '-6.88751728351754662889821451337592958814443289592967445249e+17', '0'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 6 }); - T('1.825666996146600553998e+9', '4.27693837003413706723446279e+6', '426.8630590840215219304505187189881604140219426215'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('1.82e+1', '-1.7541960863134087512e+5', '-0.0001037512290786649588152088082441006973270467869939604280386306028425349692662681867595551'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('1.104490415030425319e+16', '1.69914977249366414323873934582884595022e+12', '6500.2534379855192339702757806365274316721726691488252441042266361835528817533770996108122145082'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('-1.408580331806669728167563191933541604548228165e+17', '-1.41996832852681051909213808e+26', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 4 }); - T('3.2763266975e+10', '-3.124286575020841147111664173e-13', '-1.04866394897790214406585056911636756382e+23'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-2.08250712940384206426458910537560911132774029965685412e+50', '2.398562149589760719201380587665851739467548e+10', '-8.682314651550824797666976161897169110231398744107279756157175951161003365124357494857278851523e+39'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('-3.746135011145165193814946e+17', '5.647027994793033435026336116300178305193365502982e-15', '-6.6338169646039855072433662497984545128820132968359241180368566244977655363985198678798525e+31'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-2.3372300514908379021070188579270108379924011652330043e+22', '7.050250968245260561107892616e+11', '-33151019190.917566871308'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('3.83121883922893150162141680532496909653962616493955e+43', '-3.87897206463879503e+17', '-9.87689206157170340875022860878896662730336576330606119264e+25'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('-2.72972657830054702930791633655722327753086e+41', '9.17739e-10', '-2.97440402805214448694881261072834790450319753219597292912255009321822435354714139858935928406660281408984471619926798359882275897613591663860858043518e+50'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('1.2910940973279193941491845957807220524e-6', '-5.56954184027693324073313535369e+18', '-2.318133401909630998669234183656243718886321259e-25'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('-3.02413379521989703097012195693086332294060914169449e+15', '1.49e+2', '-20296199967918.772019933704408931968610339658669090536912751677852348'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-1.38556014447707091379298257628e+29', '1.205494506617197711385462735756454702276286e+20', '-1149370765.998067442'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('4.6506366346743e+7', '1.34682883860121e+14', '0'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-5.4686963489725658647405e+0', '2.4128708555273441256317773917829677078797977516229688974e+55', '0'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('6.602535230674085936339555706786686455456202296898766e+30', '7.005e+3', '9.425460714738166932676025277354299008502787004851914346895075e+26'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('1.751728983061290874284724888244372891167281275092905e+22', '-4.4338731e+7', '-395078736705678.58026534969804263746095197926956748153211692053162279272268753023175155824825027130343446229889'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('6.606630194400048814599681033491792515e+14', '-3.902637829625690517074566689660333961576560853712e-10', '-1.6928627463834386584271374488e+24'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('-7.65523401025669581840187531201953250295272495521181741233e-14', '1.41906890626583313624904465052681503208229e-20', '-5394547.0698817823665090628562414321781526878817338066357095269830728319608557339993'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('-1.4190519900533519327205949140097784950472025e+2', '9e-10', '-157672443339.26132585784387933442'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-9.0566604925734026480770982368e-10', '8.4746001657843403107988204088326423e+0', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('0e+0', '-1.115912687166514039689279199420767026e+36', '0'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('9.445312880277e-3', '-6.1031501925724680412635531197189868e-9', '-1547612.721668220282361361478696454973823599345920127948748130318716181830129'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('4.18313063e+2', '6.705221089544031432e+18', '0'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('1.49410591276216401371432070609313e-1', '1.005138841238458297223242122452672412760405e+16', '1.486467193846808649782741551891176427547500733982699932298113671532110915794937e-17'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('-1.1548056897187851378697e+16', '-3.4105531585207980187e+19', '0.0003385977687618390995219003253550233018523790123264658320563592626143143520225032373495425742'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('4.82154e+3', '-2.992762041198346384048383032515754240730616434e+45', '-1.6111e-42'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('3.6417092019e-6', '2.17049466296106562190888661798e+25', '1.677824536519178280456055081015910976527830028759323610629932153e-31'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 3 }); - T('-2.00687668861702947957395415839051945560005285949871535155336e+26', '5.60267743868393398275504980009688782219164693e+27', '-0.0358199577002320478092385759002937'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('-2.46741766e+8', '-1.074724183719845773315e+21', '2.29586129853312693916876453437821425709e-13'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('-1.6443175265351620398e-6', '-1.5353849740251572e+16', '1.070948038669694566e-22'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('7.4e+1', '-1.779930316777719535384e-16', '-415746612676192958.079826'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('1.7002066502502853710687375428351480702197906916468090526578e+11', '1.57766110073709939648675432038e-18', '1.07767545859876461486373845018582719639233668232002899951262670805151301619980454253878413e+29'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('8.66367820793728970879038066816900273068744428881978e+1', '6.1425167394183459125948362673126494895e-11', '1410444378985.5557555851230772077867308991485987289499111639862795048837363829329147738640028869878965'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-1.8893143777691139104177807719312560829717396691504e-18', '-6.50983331865e-20', '29.0224693212408892560483066'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-8.68667e-20', '-3.49916728e+3', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 2 }); - T('-2.0976014878103076514631485173505655581199131e+6', '-6.562871e+0', '319616.4434453012487161714008016560981'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 3 }); - T('1.942e+2', '5.5788508128565731234e+19', '3.481003642407182161704399289671504991111660078173245850310444658594948919588e-18'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('8.78552615729479974902850134582154479e+36', '-5.706051581870012102527101097906227664915e+12', '-1.53968572334839791481148918173729689973229221658916383288892274e+24'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-3.65487011414426e+3', '6.57152206489908908779181123e+1', '-55.616797418458997711909034842387432202293038843596326'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('-7.8319872388169117345071480952274245812268485607e+15', '-1.49728975520332000920786506239e+7', '523077594.807518757154671231735576700314172203280238437220908089220211425880339141'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('3.8611211970005516219910804564963950732211e+40', '1.5158280794273938e+8', '2.547202581482126662282012464437511646330828415093906692650095619308582265e+32'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 0 }); - T('3.90352554912231811402e+4', '7.625306988942964063152817262021753154686755e-11', '511917166716383.30405477979'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('2.769420365598801142529246051199984633496559707179249e+50', '-9.52e+1', '-2.9090550058810936371105525747898998251014282638437489495798319327731092436974789915966386554621e+48'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-1.49031037178321078446506146331174233873315e+39', '2.200531161158487473132179700085e-3', '-6.77250292151566172247414617356965580018109033147230156103916e+41'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); - T('-1.2188718572425e+14', '-1.9829182084896327271572302374e+14', '0.6146858967878969963095191083259588893518596057164405673642799079737'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('-1.146099963366700083841099176758806276320897402875077100151e+49', '1.237607632961748090848355e-3', '-9.26060839350142953535595202763017800866076464221503563286263987968529133071607981685413247110886303444901771745012437696101e+51'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('-4.282736810686907e-8', '3.502374617358670715949443789741960918526598807e+9', '-1.223e-17'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('1.2077437770326238957404e+18', '1.772883200451728193460437534458469726422365218620429072e+54', '6.812314408105917229372924402094624323716391e-37'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('-1.4903311945934642325700339866618805966874471396726106e-2', '5.5640236e+7', '0'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('3.136818222435530139669676251e+23', '-2.38144e+2', '-1.3171938921138177487863125886018543402311206664875033593120129e+21'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-2.272e+1', '5.782626073149888422651103815249733567910503982766974891e-4', '-39290.107491982538875505537241'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('-3.1374927485667080692994909582e+26', '-4.37248619683874513285387480072302520941953593423e+38', '7.1755349412768359224286157402511342905690337602982147757758553487e-13'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 2 }); - T('1.9553600931736186090088251641098604e+25', '-7.247206916002125962329814556188174805402384204227256e+51', '-2.6980878507223306189033730697e-27'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-9.86242820048558799936513306604288e+10', '2.8547858539618140546368301466573510633918454643e+46', '0'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 6 }); - T('8.27822223629209817227584880237823211643344671713763935e+53', '-2.691584532445229033274246900317436e+33', '-307559437071499497822.89415559842286550530427003800856793960762057957360801747373023514521148897678042'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('2.344178183109e+0', '7.349852161919e+8', '0.01'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('5.9272191459507949664758485526378296029703121598684e+32', '8.3190482970891653823e-19', '7.12487646937297944749828029188710323566047358532804619438852298445374529039819142722243781465127953988108e+50'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('7.745777026e+9', '5.2441830717e+5', '14770.226210827269125368966664787458815747'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('1.869194987648e-15', '9.41146115946258698680094504807e+27', '1.986083729165317751930918e-43'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('1.034899843234176402e-10', '8.25761e+2', '1.25326800761258572637845575172477266424546569770187741973767228e-13'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('5.23538954830709765827771114062808e+23', '8.4473225578915269385670244696706484792087483384728e+49', '6.197691058234982472617880325190227160999044913078773755e-27'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('1.458275801773956600354858280638829041132981e+42', '-2.642556322697490344919141116430960685109596237375e-3', '-5.518428459777787636394063221353851539830905127527117159470217022706596126317340721162122848015421212917058185916325754928009061199817e+44'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('7.54525e-4', '-7.73253966309221010923022098322e-5', '-9.76'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); - T('-4.25242064e+0', '1.070005007001185609564556392974165e+9', '-3.9742063001349003435074951824027056e-9'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 0 }); - T('3.2879903813229382344521943763034745e-10', '-1.11983511951248201800842085085494502e+24', '-1e-13'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('1.428828895258306070679857955628493395371424114576215046e+7', '1.7248120705718867375055453416442548881636713116549e+44', '8.283968553075796227111008926294527197901175e-38'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('-7.93777531589104535712236987412e-2', '-2.455850507945338486894672505e+0', '0.03232189944058159158158503304091010299743072829843301373'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('9.2640957e+7', '8.804130194266798830366721681406e+26', '1.0522442871225062275510973069099789093859488495293379506986097287816758445e-19'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('-6.9100609787700074098710767e+6', '1.8814215849484481510198e+9', '-0.003672787127590728888767'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('3.046270698105506513465614681229473272073276990162347e+36', '-8.1588310832895245740362611828511307e+29', '-3733709.72754260469792524682290129221624697178632059445146356184074975'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 4 }); - T('1.983615568067104389335664255351817831701535416543710586014e+1', '-2.862553e+4', '-0.000692953307088848447290116289672826260929154994350745850300064313219702831703028729948406195'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('3.095782697887500684211541375929666215361183606e+45', '4.96632883632401351892e-2', '6.2335435286619942353033199607991642379346107398740494157066695877620521035420763930846e+46'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-1.7962731981851881042656169490539864389594531312e-1', '2.3826840046056590456797038432578719011482800837295219352e+12', '-7.53886455238312815413992950469965615300198e-14'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('2.19831709261078147926097362293118374626319395e-8', '1.3290439251943e+4', '1.65405902012561233568752601319e-12'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('5.5642011585440936375e+19', '4.701098769102304059553191703e-16', '1.18359588509700740847891832710799397176147545356337256549121792273315787246402431446941759906658445522540969526231235901464650502689e+35'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 5 }); - T('-2.4885063216181213847863323237452642090315945418991e+25', '3.158e-15', '-7.8800073515456661962835095748741741894604e+39'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('1.013724171692959789e+15', '-1.437603438056205e-14', '-7.0514868346699579000710312827079561330009836311651055713532352037697974783029967494637975870619665e+28'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('-7.03172175383256062325868679726142414e+34', '-1e+0', '7.03172175383256062325868679726142414e+34'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('2.5937492035466413857327974408756455150459189933e+40', '3.6460177398809657715225780116348e-10', '7.113923706886081765807426114419867386211161818637323487974033293119714514577981876141585258061333527397723522219161413967796920422259922286356036e+49'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('1e+0', '-2.931929922718117790896922684995835390028387944326922e+3', '-0.000342'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('2.01826383e+5', '-9.266962672635257272628448810537609739e+36', '-2.177912981089049641918237772414177093043e-32'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('-2.5925453328877035992083416179278963e-15', '-1.058641478461206990164504071649170894377510205026484578318e-6', '2.44893609936397858739054637689062606781670939421955862e-9'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('7.02577048337212332643240479004403275534798857919140489e+45', '-3.824804564617150229017697418e-10', '-1.8368965955454978305159939401149329662635046762348908261690521054396772496844081850707160128721750531063611221439e+55'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('-6.723744052789397503581135654401116421279192e+34', '1.11557001081777e+5', '-6.027182505435538255560595013800459405361381409023018757149312351060788e+29'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 5 }); - T('-1.4752163359987961782648494391086788406e+9', '1.016653743364769773438917184842715314909279845221939607e-6', '-1451050906591209.656146653767895656375750147525429407933282799'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('6.4073325949678131539231848010164338105458648752506253747e+56', '8.727835392825981797743725881634681774976400777757e+48', '73412619.5853149092'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('0e+0', '-5.48093803244039526717757394868869275953542e+41', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 6 }); - T('-2.0003404755679534025330772267472197733315e+27', '2.6144605787451498236992490146038156706737647e+14', '-7651063824905.89045901859689851508509516108849602747920710471122586004170086094097776'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 0 }); - T('2.57605062602266323032560458173034e+32', '7.69657908815168179205188887394285749242650117009659604312906e+2', '3.3470072827398135404698316264166165411570751087357049639e+29'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('2.666659213871079431280716513882624501827958939336e+27', '-4.733006178507148610026187165086317995501427192816477282518e+58', '-1e-21'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('9.2294312718960378431142461763275917192e+36', '-8.186474258251074299924239467e+2', '-1.1274000235930353635097271400044952500184988717104430662062286348965514915097e+34'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-2.8908098329175346611627e+3', '-8.434346555755024899046820927205094721247472190765539802e+14', '3.42742595861803009269767530774322923037672813595339594293152e-12'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('-4.52923252121745441785010052145728903646501e+2', '2.8071676612908918750850535019880864031800720126481749084817e+58', '-1.61345279930115086478e-56'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('-1.5559378099525261442175753261e+14', '-1.5538e+3', '100137585915.33827675489608225640365555412537006049684644098339554640236838717981722229373149698'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('-2.75036606139027e-7', '-4.1378504151079897165713373641870722e+17', '6.646847482326136437750056555875867240917491721605531663202859762e-25'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('9.2159666322463679041110651594710322215662582e+43', '-1.6497142444115745e+4', '-5.58640180471591259082079901885132615475073334186568634621566683575259233192905903483395242616801546e+39'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('9.78145388278e+2', '-7.90850606971854525815299e+13', '-1.236827005827677239885414e-11'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 1 }); - T('2.49709e+5', '-3.4706586491689235861233383e+7', '-0.0071948591100941251331544388'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('5.02787137968630657192295191438412535407496737985e+14', '-3.56629911261660263982104130335051314730962713e+44', '-1.4098288508384100959841539980852e-30'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('4.1275175407360715228027691e+10', '3.3658831378381879253912124304165511e+14', '0.00012262807030748726332'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('-1.161355063107016e-13', '-6.9582814009561566485640791959681e-6', '1.66902572084456227372322380073123582542957e-8'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('-1.08960773085093919932476649213411057843e-16', '2.5710917e-1', '-4.237918588632755491e-16'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('-1e+0', '-7e+0', '0.1428571428571428571428571429'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-9.0351815131036896108809339286380587e-2', '-1.90427014798333323387548e+2', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('3.0027531448195e+10', '5.24812136826577331922608412890794e+29', '5.7215771780288518362228280650261082247781032571752856555171464922879527513696005e-20'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('-4.1421379503967152993242826581232468e-11', '-1.08e+1', '3.83531291703399564752248394270671e-12'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('-7.399709498047321126129633592818011e+33', '-1.271033757392966857692572205310080825842375545366625958e+49', '5.8218040669706186850160521545272704542439799568664170078484239067747585544887e-16'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('3.874906680973237070281107761625726e+30', '-6.4755908029361756621599018046842706e+13', '-59838658724641293.5209752198866751364011517040571584976629572099489'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('-8.187794415119181710497321540822626822505e+26', '-3.8710440362149307711228e+3', '2.115138535888402731140431015146688044486809018527516060128629221568093882063873293669e+23'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('3.18525339838759904528772118448626807e+34', '-1.4868926018266364068914e+11', '-2.142221566288337934210933941319177198790078548667892231356931380676919923187541932499701673755774599959898442562203811054628e+23'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('-1.3250532286562e+8', '-2.3800080137743321795426e+1', '5567431.794294113750225205918804723133214108606962563716690330376501531022'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('2.326034274975947617171091547137093840144247899488139177e+55', '-6.8509622933630039720462931556266335279304938337e+18', '-3.39519351497429230412338976003087952121968815716777152642147477860372585955832698904529350644e+36'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('-1.116635320136759027139480909e+7', '1.946766987618427e-18', '-5.735844747926367528580321769347251289271984879271734952153582399301553646875736e+24'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('-5.01871382131921e+14', '1.7852397008390922e+10', '-28112.2687276130564351419922642'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('-9.4873666972260986685095841229463423784564815568e+46', '3.93564148476860816981511788426581e-3', '-2.4106277804884705453630341485851361387783622025365426451941568215569352772889925075301108629755862645428248103524505923533147039500598729898951e+49'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('3.3873266665748698298238756431459e+24', '5.670714698910682767333127646123797786616e+8', '5973368166847750.45717777623601722796786412'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('6.36010488561041416205623007821e+12', '8.617184176774e+13', '0.073807229312248904255'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('-3.040130969610165577583437907007217351403e+39', '2.4508129436592053e+2', '-1.2404581824474431010403377175868746887794728749809450266177754715101165250254401742e+37'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('4.294323713722448450443045842289e+2', '1.0143237516268995023116617864600375143606590409366599358e-15', '423368151128737161.757627861484517557423680671462065165026458724930363424060116546772397467391'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 6 }); - T('-1.0429008546339987528314778933903367409219773294029649e-13', '-2.8468669928772769598193574478420967253850675390344e+4', '3.66332834390677918118633276558662561849678897482592497471224e-18'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('-2.46280213375540827371535455518186295e+25', '-6.08666009009594076875607923643136977250210982e-4', '4.04622912615543878748565932142274332956686221771036699134655121388e+28'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('6e+0', '-1.30540458380292533394637310113e-17', '-459627618475239672.836962928581323537882402508121637'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('-1.164749047223062151164624878024040124e+7', '2.0662066365831166046066883535894513776121424403452e-17', '-5.6371372862745530150219061029747123287955491430704338947161828477777845e+23'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 4 }); - T('1.4772928e-14', '-2.218059758938100189075124627058334178444469964e-19', '-66602.9305'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('-2.33917833341e+6', '2.29318602584222986969748294097e+21', '-1.02005607353676346693286935953502125288466908515258475340226077314995e-15'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('6.730599841051686320189027713666836604631216571280427e+28', '-3.7344396e+7', '-1.80230518149274293261806342072498283400572781289070172670619709581057355969e+21'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('-2.10021689094677686598160367279176118e+3', '-2.45363745510517702204603627664407806140799815105e+1', '85.5960560341523431486753897051372215608103586383729569548931194278931119712262477577735'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('8.8004486650157457886483e+12', '3.43401123485697245387405513871030327277012801e+30', '2.562731471489285032113514405300769362580194183435505764300624716414e-18'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('-1.2706689385829067364915510269884212864649422693e-15', '8.741859225468531164873440312983e-11', '-0.00001453545'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('7.13e+0', '2.50150327781989399164755091172569420684e+29', '2.8503e-29'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('9e+0', '3.402305654651561322273195e+24', '2.6452649801452693502e-24'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('1.942698433458917496262e+11', '-1.827852868815172883180238663241006577362751e+7', '-10628.30858327338084821374169009018300475712890323782940158454273339681433316588130632807797792360126701'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('-1.213063441725300796821602082843332688344820493e+22', '1.4542083210188951483664314598198540068136663e+32', '-8.341744605582812826071467858531326511230556848318526e-11'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 6 }); - T('-2.94555946563586007664154490972697153787066e-16', '1e+0', '-2.94555946563586007664154490972697153787066e-16'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('3.3547264298596360578903598598122683916303101119e-1', '-3.4604298263605549855521425801422326092878e+24', '-1e-24'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('1.8385121543310937442100081257135e+4', '1.093914948871867941075931439e-13', '168067193544353117.682304112573690307306039961796085981513645'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('-6.70137736243257442821557371292385894234123508751561793546e-2', '-1.336711019757567992050322303418442914115285457337972e+7', '5.013332921911548836482858677493629170561251766882165547697447931875564104591e-9'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 0 }); - T('-3.060136077964060665704e+1', '-5.27078644525618821445683449071162332169528922121126448e+32', '1e-27'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('1.0018146402750597245819950058907152e+34', '9.7026827641357968325782224797669231559411e+32', '10.32513032352336037525'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 6 }); - T('-7.75646187134977021929405053556527654016342256570143603195974e+28', '-7.856005334316372167922949389391178117995160370815690903482e+57', '0'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('4.26245412917833546496581979557027553619068043136604275e+40', '2.469641373651984014492417932e-18', '1.725940525071147580201630067416878017771790410139192240938902857591876806769708057625944578712153807543864204196e+58'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('-2.7814045143169050206562955218757410738033367884e-10', '-5.4476014936891843412338484072908114992832907525998175059496e+31', '0'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('-1.4684493725478801916262731401857285e+6', '-1.63e-3', '900889185.612196436580535668825600306748466258'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('-2.994189172235446630179676777704091036657029209759025504882e-5', '2.5419343971086022114224692e-3', '-0.0117791756374250840978091263'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('-1.99075480630387851875803012927311780348222369063870496681082e+29', '-3.3353292e+4', '5.96869060572455192356433700539400369679317918794555e+24'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 2 }); - T('-4.9487415160185613414838169772066576310822672005e+32', '5.994978617472851551363e-4', '-8.2548109539457783939342819030959263493023376697269712046659544149013725282357995498728086057e+35'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('7.2107872988141590611859077930102268167074899805368583602e+7', '-1.10022954631091775e+18', '-6.553893524303188666476686361414797949591433881875842951024873795121646411036135473e-11'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 5 }); - T('2.6068784148052e+10', '2.2799021189528113442450894189397849463505549223926e+22', '1.14341681300010068650365543037446925561994677139863760644397326632928639557957027439e-12'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('-1.6504902477129444877365745606175485e+18', '2.787708374350602748498901576748428475e+34', '-5.92059866411753538498615e-17'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('-5.501037995828409136862448794197e+28', '1.13798355188919145546e+2', '-4.834022413325759672101846445977835404887623260055061969565752859938600281490833683821849809878012825692456e+26'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('3.6589343211651372438014873028431637954958614467e+5', '2.5479218704612521e-20', '1.43604651444934525143584817300278944990458498912828334651254519708881e+25'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('5.3478e-8', '1.0004897029646339613698191032147494716791404e+43', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-5.07971092663297629068e+8', '1.16237403981231959661531813346716e+31', '-4.370117322521381906128253536059771e-23'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('7.9835459698214929550337673609984399792e+8', '1.1e+0', '725776906.3474084504576152146362218162909090909090909090909091'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('6.13682871981e+3', '-9.251450308245344380227368874447939304042e-9', '-663336938030.19819560782538761292460579133946384434513995678629296'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('2.1693386008e+7', '-1.79307859484733628e+7', '-1.20984022'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 2 }); - T('-1e+0', '-7.0984199483591605465679812107634149958020592e+31', '1e-20'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('1.3397598595300528236767970369339320608218016405446877e+18', '3.9476995855160420127093655257994532208718483631e+42', '3.3937735901829e-25'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); - T('-4.39475008052878276209e-18', '-1.4543101778512438736102e+7', '3.0218794776105224e-25'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 3 }); - T('-9.2082959956947e-18', '4.68043369415024605014512403316e+2', '-1.9674022959033730894242360899489693e-20'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('1.3994002846456504063e+10', '-2.142e+3', '-6533147.920848041112511671335200746965452847805788982259570494864612511671'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-2.2191274680390552743098177068133655e+34', '-1.060507383912673e+2', '2.09251486760208010032385079153239202535543043272031915753088930031410320659165697117110278255399576990789984787012776708300094921e+32'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('1.73e+1', '2.4015833506007631104191410666e+27', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('4.5292596307898278177697069691336405129953565233673e+27', '8.1621144426923224013081949947848207197e+37', '5.54912536768575908e-11'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('5.753e+2', '7.02437565043295047621369300991772879991886378244139e+44', '0'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('1.7816396231524754234771553020982708831315e-7', '-2.758e+0', '-6.45989711077764838099041081253905323833031182015953589557650471356055112400290065264684555e-8'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('6.710156449444037425158298358e+0', '1.55544518630350073572185212096992925248e-19', '43139780871292894932.1818835522014'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); - T('-1.819121018698023627437534967215253e+12', '-3.560787470439322324462442690910909466377906164e+40', '5.108760446e-29'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('9.97e-8', '-2.0070114200885e+13', '-4.96759e-21'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('1.10048090031787533163994e+2', '1.042364733528621461756259145769761007093891993e+27', '1.055754156793580837716686722731834e-25'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('-6.9046079709e-12', '-2.45822e+5', '2.8087835795412941071181586676538308206751226e-17'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('-4.84635919968771908426079e+21', '1.4256848e+2', '-33993202422356744522.076618899212504755609374526543314482976882407668230733749844285356763290174658521996'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 0 }); - T('-4.500054004849797622975e+21', '2.4443181383316728553783505603678804638845530371301274757832e-4', '-1.84102631088816932455134036158188700296154933651042245521774037030053187171716155118713e+25'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('9.7009340832900580271755789108017722772432797e+24', '1.48e-2', '6.5546851914122013697132289937849812684076214189189189189189189189189189189189189189189189189e+26'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('-5.39424135365454350726001e+11', '-1.51128e+0', '356931961890.2217661359913450849610925837700492297919644275051611878672383674765761473718'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('-1.91233029702277737969977328621811019480638674375340064e-2', '-8.7770377687197060618346643474763451682819e+16', '2.178787818184045781218877465286349616739893726027e-19'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('3.779662927463272934586323531060507929121172953461e-16', '-3.56171478964553431672697202829322933155076389941165059487e+43', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-3.6444617109139556238821800690335845399473341683e+3', '1.75008858e+2', '-20.824441417210754120126765635106'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('1.9628611664963e+4', '-5.774344850927108355436890298e-18', '-3.399279428524519043809823874584482849069449807691824947020600073312428720229753965935156911853332556011213e+21'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 5 }); - T('-1.268887e+5', '8.2359578936690515204781390599216938464393601324806256877e+55', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('8.783402278573720372227198045660031e+19', '-1.8909551684795054684598228506022e-18', '-4.64495532468723176692896530126341959063064336779221189629771925915961649137313819457323877154255526665e+37'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('1.62059746047170539600898697113779281e-7', '3.260814605118201614e+3', '4.9699159772162520322552e-11'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('5.731791992628e+0', '4.59405600514119218188957515528894850084014e+16', '1.247653921983879e-16'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-1.813173e-12', '2.50902e-9', '-0.000722661836095367912571442236411029007341511825334194227228160795848579'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('2.2837887327574120752954238801724465348982335577808012e+25', '-3.749686960057121266169527586886083883732226765841887252151e+13', '-609061171528.4685338114256694656829716475853479'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('7.690482972e-2', '2.41e+2', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('3.577085790636323250886309479413241606062581e+18', '-2.27945416247e+11', '-15692729.64348718918280406986232456787'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('1.3598517296981252272564302e-15', '-1.465e-6', '-9.2822643665401039403169e-10'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('-1.13828085353488661886608e-5', '3.00138638264359357e+7', '-3.79251688525453791680279289793370147064530908742996199836409753941121077052e-13'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('1.6637801266501468012098566857306014893977371661789873624286e+34', '1.0951788670438385076006540136164785386824321263830374635e+6', '1.51918574829799739482764295497250736738145848e+28'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('1.1420545975010746649563622337711607598701345870788753e-2', '6.6259751872611985104e+4', '1.723602285285851056134497142911351829503893e-7'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 1 }); - T('8.87354452761546265242054886287921569100659800881155788061e+34', '1.5281e+3', '5.80691350540898020575914459975081191741809960657781420104050782e+31'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 1 }); - T('-5.041026395485259479826984977321225093589111969983e+14', '2.7e+0', '-186704681314268.8696232216658267120405033004433327037037037037037'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 6 }); - T('1.4165045629113103371e+3', '9.224797557921583936651987e+0', '153.5539998593160928941774084653949475247422558101897128551926189854361947427108090517083286690349229395'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 0 }); - T('0e+0', '1.56577794e+3', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('3.12574391614794188587097657e+21', '-5.425293688082749634464664769151227355774667e+42', '0'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('-4.09693686824100340169688521836937552850523616252674144443069e+34', '3.4548884511e+10', '-1.1858376692123249205233609802347391129942337612182773389081737001381358433867e+24'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('9.742017166722599279319061819844403195229e+3', '1.0747173536351651177106932e-7', '90647249100.1548219612122076297677'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('3.02946322290348201780891e-4', '-2.20403668947804e+7', '-1.3745067118737118396783642616396367748331017171006739330905e-11'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('4.78096279080176909292543513107592392066528985848892865058e+36', '-2.4326916688846408247727081726767709873011843490142e+2', '-1.96529747355684481877149599387676812128139524227181708862621441286857260092938487748859994856364367084385196431506079287e+34'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-1.2e+0', '-6.79309567292212524389813e+23', '1.76649948386e-24'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('-4.433149727946876158642e-4', '-9.1010279e+4', '5e-9'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('8.645364308112120452120307271110130766336169e+0', '-1.4273846460183e+1', '-0.60567866778085556455652183768805141470179829796975207980985493726508787'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 6 }); - T('-2.93251497583645503515188661611718246439285355639664194574e-13', '-2.8116268555471146e+7', '1.0429957908713376584346e-20'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('8.549915096181065334588233947973779570784051465e+14', '-5.3585248140057447465515e+5', '-1595572548.96606683413408059486087308222327873608287048300451607298921405478645393658562802108'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 3 }); - T('1.620650208684937884852013551962e+5', '-1.938574313972575224952465487332302860332699316553926e+17', '-8.360010740902992415530567284669062089154037923369252703397249e-13'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('1.39990788514023359907e-7', '-2.7880297633283168986682e-4', '-0.1'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('1.2147034496129666796337477579e+9', '3.29e-16', '3.69210774958348534843084424893617021276595744681e+24'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('-2.3595898093100315950772097e+5', '-1.360224124717153472624963642604e+17', '1.734706631380095057332935379366222616740848786042347725178571896765674681495e-12'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('3.082386028440677875328e+4', '3.0185587469615039583139056269305737e-1', '102114.4952551750987667287'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 4 }); - T('4.9359e+0', '7.453e+0', '0.66227022675432711659734335167046826781'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 3 }); - T('-1.39e+1', '-2.8361586615351524267835684917894138430761187125799323e+26', '4.900995204716870570923653502e-26'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 1 }); - T('-2.57144111056735978258324349384933185182040890598640810825e+17', '-1.0678621825342158315627573687444425805220630056e-5', '2.40802713367459019626709581794527646339142982304436611882353911346885030124848557011784546711280981474942964129428490633e+22'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('1.048596115047377963717631101474909437788760144e-11', '-2.36483913349438347955467527904366220847107e+30', '-4.43411181841332799344141327316e-42'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('7.78105988288549893107541943690031e-3', '-4.0466218248597429333998379517392386817522e+20', '0'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('-1.34723938637846839225393057180903356215187930658e-6', '-1.743938847270424507164548363659837389174e+6', '1e-10'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('4.250402462487980246205857613476692e+5', '2.0247898066011489472317492252151143923781451179086472723e+51', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('8.3484358673122809837222108298527079080406084930504698570578e+26', '-2.273675645e-17', '-3.6717796074700360278179479860913529326389949930833119589746056324581864446192807769641214589339544955190827141925074365653418e+43'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); - T('3.134404401815e+12', '1.3390197837537002332974572e+15', '0.0023408200833510189872011500974677596892464186001159923261'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 1 }); - T('-1.72126299819476190891057067053186839902470099154659e+25', '3.03792053256058509683792028965831141329500024266905e+35', '-5.665925029131534227365236837686867175158620766693317443900910393707963202e-11'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('1e+0', '-2.939975046688809188350421673411642007758878368983363390051e-6', '-340138.9413581128647024395877912442822159157246526'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('-2.8799781065335629236299415397922436750515902010787e+37', '-4.391480824237071945484e+10', '6.55810243013846919498768607405789794051382200537963030271725962343633802224860315219376733282257607687290362638e+26'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('3.5787142220840064175857594300169919704377044173726713e+38', '-1.181645294289742037064e+21', '-302858585345197319.6775048248694723253807508179985824'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('-2.8246093714697547091670049283789e+14', '3.82579e-2', '-7383074793623682.191565676444287062279947409554627933055'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-2.84779369663177732365367233318327625247815244e+45', '1.31393066624e+2', '-2.1673850605687932921090388365112614943073789872000970888e+43'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 4 }); - T('-5.04878763368633913601e+4', '2.0865689365553309103868029249304809e+12', '-2.41966011533808585432360918408206681865892223474989817900917381215519391312579510055483657309e-8'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 1 }); - T('1.957798750128925705685719898545101e+10', '2.43192553161689499005266735715792079650638534141393209227309e-19', '8.0504058396362968346561720628510573352360562767398330508738163709866794082543827688550686533985721686454059730412102e+28'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 4 }); - T('-2.0222607e+7', '4.9467082310169266124568153854060414e+19', '0'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('-1.5906369949629e+0', '3.0255416971954995514679934141145066040094784544274052e+52', '-5.258e-53'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('5.5668606928154293573954215929570699990366616565e+28', '-9.7521240191953684684e+16', '-570835715569.042'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('1.032985128326695105895492495350025072e+22', '-1.501808602e+2', '-68782741485901750474.5583082863461366696846233672059'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('2.0832256e+5', '3.95274218483520266894052183558814141e+33', '1e-12'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('3.77e+1', '1.354474e+1', '2.78336830385817667965571875133815783839335417291140324583565280692'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('1.842713436665480361428619195654820738082e+39', '1.7417424681025642057883271791588e+10', '1.057971238809439411092797912785e+29'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('6.675734414283297222357436e+2', '-1.01298476308303988484891747454e+29', '0'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('-6.23860945829300190566965469238e+29', '-2.651188337151012662516209e-5', '2.35313703325847439295362267785953812038087057918270178569228127914064966901435889737350150454136127164319450878289848269321e+34'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('-5.9251615681039070371827630552043396555629328351836e-4', '-1.8714936283919442833021814200253567484224938495909672556e+20', '3.16600680772556109819e-24'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('1.1304086972280810511089682558613205176914070591355347e+9', '-3.259389604974e+6', '-346.816071175725023200942897547390635746854575755742744037391415607'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('-4.845812964e+3', '4.7156288461e+0', '-1027.60694748223603203647388936095939113353707330482435781365935859716175468918230137806773647473638055'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-2.9078551054049892353706815690526773071819522646602e+49', '1.43280566584213410255379202195890449e+2', '-2.029483254238733189552538980193555164988301092952962754777325201232539944129617890956431969e+47'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('1.3262460345e-8', '-2.94349159799574781750769838319096186e+24', '-4.5056898936047715586791107749571702134685849600532e-33'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('-1.07535586e+8', '-4.3443989107065164319529887109280234764994620418767443804208e+28', '0'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('2.49514101973155389178e-7', '-1.3320082640039933952325221390629129e+28', '-1.8732173719637473618987414336679458253027603532286856550174466e-35'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('3.5426634793166964286e+4', '-6.837512665748e+6', '-0.00518121669750375726671757317534639700222637833202970293988359028523526317543486'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('-3.980839536433195169114e+21', '-1.946512140488498756862821697491967570855e-16', '2.04511415758966673872832407336553531014273410155707170939e+37'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('1.09413052696967761148757584652e+21', '2e+0', '547065263484838805743.78792326'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('3.8176677194666184158532243175342318388938541e+2', '1.839063964438703033623222e+5', '0.0020758754416852493784'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('5e+0', '-7.3390741926489e+13', '-6.812848417595e-14'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('6.486086634148230094080192508467807093837803449e+9', '-2.535934612087311196295878778221457560221e-20', '-2.557671086325674067420204470169823075573319122951890398364812844590458592073730384e+29'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('8.6885036983e+4', '-1.177721981e+6', '-0.07377380942591068104'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('-4.5065229428343237781413917223156e+26', '1.258375465530366050877860302774614974549027e+6', '-358122282758823875333.56534033521315891176207380857166682271755272697303071912130388957862433901431058775345809305755171'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('7.825409728735081840942926808875e+25', '1.0956735309605483647669272120591478904094337612309545855e+4', '7.142099820440810993596186764322175788148808775229e+21'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('1.838165789921448904010496873514135951164635928e+43', '3.4664505850560548694738584086900914443255569895878005014e+22', '530273184289954189518.5089523282529263271210841900983888557445412827590714085887'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('5.16100856441e+2', '-5.0370519862265e+11', '-1.0246089535154e-9'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 1 }); - T('-4.95135753897440300264795475002319809451705381240974e+39', '2.184777681292882753920198900864664008599327e-18', '-2.26629811416067984345562413287852853979930711031611035973468110729161031126981816157094488689497444602047499196599601186590974461319820357390559074842389e+57'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('-3.932045005016421154649997128305291e-6', '2.622399076807498727961567794397718405334902381654e-9', '-1499.407561492616791956478262232995884265937625066353358193977246295984075579666859225468475'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 4 }); - T('6.30172613952970875248874131909101e+2', '-2.6e+0', '-242.374082289604182788028512272731153846153846153846153846153846153846154'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('-8.41861124685200027e+17', '-2.77206721227541e+0', '303694340799973203.752275895377743710946506301582496658266871992188449428054985826591630402898903113153'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('1.21206833215728249e+17', '1.5928896705390474161571665273782341880888055578535512044244e+58', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-1.053225579742766915366615314411e+6', '3.09345240762224853620432797088401649834396e-10', '-3404693012724635.04568575235915201647242873033509164'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('1.2987171417713041713557e+11', '1.68677959286848e+14', '0.0007699388510876812161259955636331'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('1.783032440984945685916979530360287689256507019420087818e+18', '-9.267033171037568411642948e+22', '-0.0000192405962952360009362723308098137279090014853718249549865892138883510646'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 0 }); - T('-2.11838581655135078759766768460472012130443850785360184e-11', '1.5897957352314215965665614e+10', '-1.332489306396952929870210540676782805335446e-21'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('3.19094543674759535237082144160273e+32', '-4.08504775370075839495270560808678e+22', '-7811280624.21505138546127214378605110955163023952028672708387664536780640954519661707996845144437'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('2.99107473509347466420766e+9', '-1.53223213095222162608077889209130635080873713238575177e-17', '-1.952102866577168107236205276312689895341796e+26'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('-1.74651030764404584218588086228e-19', '-1.14054292582131505368564277890302398907011188260843e+50', '1e-66'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('1.461822833e+0', '3.767444987610520280308812467274535e+28', '0'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('-7.1386062452483209193209013340616e-6', '-6.227610526881786675819e+21', '1.146283348072936881068691385623e-27'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('9.53891801776729633949828081875e-2', '-1.81e+2', '-0.00052701204518051360991703208943370165745856353591160220994475138122'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('9.47965037782022360203486594312501138874278398004194e-16', '1.5520237238526e-9', '6.10792878493430317237482e-7'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 3 }); - T('1e+0', '3.8983452533897708872332163772e-16', '2565190959242152.9022261694154694291554926461590575667977171181'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-1.7754154987340135666117878e-2', '1.02262900802191664769687352e+24', '0'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 3 }); - T('0e+0', '-1.3744668015242127431401259761110934144e-19', '0'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-6.69499773e+7', '-9.86406756649029162033403642978948529e+22', '0'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('6.353273438739760264986e+18', '5.04004625277681544592642510826e+7', '126055855841.3907767113746845185'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 6 }); - T('-2.2146491914941334757695450110654981781505636922e+46', '4.523610020347639999248024774017184509519e+39', '-4895756.224635689101122953685763963373709294052880849000519028725600095499408026447159827583816'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('-1.95802524913126373e+11', '5.6383983540939670904760951220434e-1', '-347266213943.462735030282614146208821635386985096630007238164542137169952216554436390530508359637605313127'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('-4.601299777754390269332725663043751652144004007e+45', '2.8999365e+0', '-1.586689838813501698858828689195005356891091928e+45'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('3.2670288297194920916293403084801795935483101366442e+10', '8.73582400975299173120971217961456619798842466577323211486267e+25', '3.73980614315496998632020238263164481e-16'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('5.587359189048561e+12', '8.920066368442599718685998559023767894000218624048517e+37', '6.263808987806989588543585714052610058e-26'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('4.528512804285449229605412379015082804414179764165833283297e+57', '-4e+0', '-1.13212820107136230740135309475377070110354494104145832082425e+57'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-5.523719227815053e-20', '-1.0303474885220394057724594633675775222e-3', '5.361025565984964481421869561904327597610484463313043345943157537408629749e-17'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('9.7126292505708371633123283239842536332334151671341532997e+21', '3.3194161321735468899448693748821251468748e+2', '29260053165467468544.144218704'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-6.5446955975447e+4', '6e+0', '-10907.82599590783'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-2.464332419375129399886092291737e+10', '-1.378108457819256487655182224112615546948045325296103e+10', '1.788199183738218375499640126965963740277215052109977583049493125687894567654235182444441167545321885'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('-4.24989012e+8', '-7.34892442887926696304402167094178923409659730807589645754857e-17', '5.783009692274276116779773058519352024209510356106677508267661452100083090256e+24'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('-2.0857073684091818634816566588489236193e+25', '-3.25490553963201875e+18', '6407889.08622208485676236464659'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('4.2646249911599555404172e+15', '1.458941841612e-14', '2.923094580965562736826241728893112238815704312811458370230803105343764351e+29'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-8.49153134135389217e-3', '-7e+0', '0.00121307590590769888142857143'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('-3.7764235766913070388899863245e+18', '4.877859241741152499859826e-4', '-7.741969149858682976220069342931526810701919058411659028482384960231882401179814940066886011919477e+21'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('1e+0', '-1.7349253324073177725471862738414124194210875972551196e+22', '-5.7639368180326080420481413311031640097262083973593650987292179852881960481e-23'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('-1.43534747849737296056572131573194127824e+5', '-1.122018451224995e+15', '1.279254790266855450338427789083699050360013315114591e-10'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('-7.1113764119475409664353070527153519223202097714e-18', '-9.902654460258814948673195176633702328901e+39', '7.18128299890378950712010374e-58'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('1.10642414595632939962196e+8', '-1.617925159306929545699359549838e+21', '-6.8385372437763945215e-14'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 5 }); - T('-1.624e-18', '1.8923764617463355584e+6', '-8.581801944954068023220089916103881418109861233054e-25'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('6.76125485181390075072526964320536191870725828459902589e+22', '-1.28956e+4', '-5243071165214414800.9594510090304925080703947738756055476286485312819876547039300226433822389031917863457303'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 6 }); - T('-2.2355340587990218539463278578398755e-9', '7.97399675440677819488142631644085569e+13', '-2.8035301839865539017155254762313686053697449349347509769654621291e-23'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-3.0865461659e+0', '-5.43800304541790431794361e+1', '0.05675881642804049690144172578785289848769413859170687069097739576995019008'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('1.7491233382556140373726225193151901714895209e+44', '1.8384802581085069249383293540103019e+2', '9.513963125473936686136768626407875007315988543167692537888369522767085885449264362978372422951346621578514055653462813311550886556816e+41'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('9.135051683450092943611092535397008607878286594802e+47', '-9.2992889427112771554525721544543848058942007340102961e+52', '-0.00000982'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('9.807003773559935959e+18', '-1.1564748597058201e+0', '-8480083843806692154.26150147117891786825462590738147'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 2 }); - T('4.44195740191428904e+5', '-4.1082266283164660664339031e+7', '-0.010812347525566242766115410520090221259'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('1.4873797061005034026400224628055982535920783118669134359647e-2', '7.33003892209461338754e-12', '2029156627.8279372885425697'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('9.56019018e+7', '7.150574912763037954e+9', '0.0133698203244274073349224559365942317776931757366570773919526123925774798700567246044503408726583176'); - - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('3.3318037506614135742155502048e+28', '4.409578671034652100058731108267997839339882142974068e-20', '7.555832425776061243314759534752255703639735133310792905929045798613459137832579997789500013e+47'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 2 }); - T('1.927406136495888507993987941e+24', '1.438030590252297923893913048795149e+29', '0.000013403095522173357874079534560468176113'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('3.24212326974135648418e-15', '7e+0', '4.6316047e-16'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('7.613303622309e+5', '1.078208490228870823391454915626976483e+36', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 5 }); - T('3.20416228054285510572085206278236105463442970534e+12', '1.6960413350263732023625025547364237937819838557e+46', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('4.68376751747081772453555e+10', '1.010074941588327094331114419135254620957629904072800679e-7', '463704951447034845.052918206239065548768109656566239271394956911735230251515860184981176945397797111961613517631647983'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('2.8911413131575642260662731490594111942142882166e+35', '-3.461501273823146644845128038782335929483950196744381029515e-16', '-8.35227574527039456158017854200104316835171563747791527325880345e+50'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('8.593191363445046350756152e+0', '-1.570433736289043766632234946600540541686553633176108561786998e+47', '-5.4718586113355372590242787449103e-47'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-2.68758e+4', '-7.0953708292053258e+10', '3.787793569488469121295862362727346329e-7'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('-1.531318158077305e-5', '-1.1380617052691314216353652177811558465991399982531118517422e+28', '0'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-3e+0', '1.14435432275196793315720126619108758e+33', '-2.62156566402050665387412562251e-33'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 0 }); - T('-2.675005685229929746166160572513230700756e+20', '4.14436597781000061858591078142577363785533e+14', '-645455.9514175622782476040846544677'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 0 }); - T('-2.790577035019601748887352496444737377e+3', '4.5815026890742697183857667572120302672207723872343345e+9', '-6.090964524967813080968480884101645435127413600350303568486651236063625995303792e-7'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('1.2943858e+5', '-1.8466054547987821437798758500362545e+25', '-7.0095417331096560421575374461008227452969325188527599e-21'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('2.828495065320869006176625593653816409328638936862545e-9', '1.19269986839413e+3', '2.4e-12'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('1.210243877847039612e+3', '-1.82081562734910535203427760801450474e+20', '-6.646712932758673573125313203777193186183734559614460847922e-18'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 0 }); - T('5.8148830377197331282016541541289207399557003956e+7', '1.056229070997461188792e+9', '0.055053237951767283878863413034205894856371908333169733927057002882531331286728'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('-5e+0', '-1.96568535828529880853418483305657775840927511e+38', '2.54364208337064997575e-38'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('-3.2710975342156963031791144657528359522602e-9', '2.86112985684284809e+14', '0'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 2 }); - T('3.8319e-20', '-2.520431557490889161632506613701323929471352731856219e+43', '0'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('-8.232343400551955e+2', '-5.20932026777726541853187791660407377644637694122e+32', '0'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 2 }); - T('-5.3494773221010117237806889955664072547846163248739e+30', '-2.59387637572e+3', '2.062348603879057547215513523296281812201359604151882946e+27'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('4.210650286098887243291899736898e+20', '8.91e+2', '472575789685621464'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); - T('1.7992317374233982019511957167830673053571616653993e-6', '-7.1959332e+4', '-2.5003452469839467130561964038e-11'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('1.3039014922714903415878677282333717236e+29', '-2.0624030550460194576245255510741567877598483e+12', '-63222437975024999.1040068134919151909227671917526718093910435972967388054275054461833464065360630968298387832045'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('-1.573715055172521211522215811309672084e+8', '7.55616231614213598442e+5', '-208.269090753994686855749971'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 6 }); - T('-6.112373e+0', '8.470579632143570229306087964378037933636252233195e+16', '-7.2160032317094208461e-17'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('1.49502278e+3', '4.6797822e-4', '3194641.79337235'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('4.50192713240673e-10', '-1.83138737441661804498055171563795220495306455282233620356e+25', '-2.4582058363489608126459180746648559401468394e-35'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 1 }); - T('3e+0', '1.23022804e+0', '2.4385722829078095147302934177959396861089266'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('6.52170109089127400063480207122874352e-8', '-5.0413201777893220182578778e+22', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-3.4931500754729915735520354536278025e+29', '-7.0803342052231544601687791639049399601321e+40', '4.9335949041729e-12'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('8.4219412111336339e-5', '-7.6558806514206402233358672597608123579466137963472512586e-1', '-0.00011000617165539070906639094386733'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 1 }); - T('-4.56922805217674411421595300737838921234147e+20', '-1.932275643042776159425443488200888505533e+18', '236.46874961'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 6 }); - T('5.801123356279104329877669712e+13', '-2.350209490371783634e+9', '-24683.4309028401326292537826872846360450510445427584138231002584049526379811646768'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 5 }); - T('4.24426294157757637883660684629212538512497004677855e+50', '1.279908447404359376917014937214444446e+31', '33160676063861412641.36535245328359337538382850511175806974077794093137694920622970215651558925266841197'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 5 }); - T('-2.0683221e-17', '-1.90516529542282269709801887794794869648767e+20', '0'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 6 }); - T('6e+0', '1.46347633775982708214268078973949e+18', '4.09982713433161598924535233481218591703156500235191121565951808598073e-18'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('3.7794660097004378210125529704e+25', '-2.5441044120856885168019828924e+6', '-14855781829339246591.910553049512291377540659463848859247436341904104744613787166122156914870056263571701180487512'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-1.104187257041818439239e-14', '4.40128334891945718931344238589210027216364e-9', '-0.00000250878475550296795217894008810765745975221390594190696'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('5.1877e+1', '1.3103003307286068834323560431766615e+7', '0.000003959168656482993073974772012210824283071061'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('8.941988246622787e+0', '-2.4623932e-10', '-36314217593.7733543123819542711537702427053486015149814416316614259656012695291718641848101'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 5 }); - T('-5.2980207337333299991336e+22', '-6.6721054945920543383019e+12', '7940553005.38568809625317549680403879186371719782517992'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('1.97986576327700624189364e+12', '1.2738234105229773295825566509987595447e+37', '0'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-2.36098639281821977630122e-7', '-3.44105053573270000838e+3', '6.86123719573765841605056520283802613476492e-11'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('1.9545095879018890682606501393047079e+25', '5.328035298266656e+11', '36683495481678.58865692194372424944324651254224135546474678950544604295'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('-1.336328832747700384e+17', '3.2e+1', '-4176027602336563.7'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('1.2109012176e+10', '-4.505350912330563840959e+8', '-26.876956782343406047377718209584885968315549384970878827735533366228049050624794771125792'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 6 }); - T('-1.2949718255003949992593932119645318518873397024460186994812e+58', '2.787410792558460107298e-3', '-4.6457875134787319856702667289116661936914494242107752084293825027756327684635140572075467335758747901525e+60'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('1.9490429982482747197036332363503105451858709648972245708e+54', '6.0215007600329310686543798206422037456738e+40', '32368060321188.360549790441674783101240846666105335140548032799057582305238605457126500639234346'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('-1.026023269024557930061389334680380368568165403325606458453e+57', '1.69886247666782432351187596226043561704587122344198e+15', '-6.0394721945770217058474301798609392842488511074574372123312116821012732133654e+41'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('-3.355801690456180322565474221962100185437e+20', '-9.282519861920478765130512813646516e-18', '3.6151839590698079260797529944210854361538421082172978194176398159611253154831358534675096607851864773998555812639299853185e+37'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('1.49869192273892650013344991844921189991876948426242527860285e+53', '-1.3622712499e-17', '-1.1001420773204607436775135589310596225324989032218621430387202360057675911464598251741e+70'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('3.111382542600966e+7', '1.2278765640929304956960844431124430065711e+22', '2.5339538464922475814714512023890344085230033788141194e-15'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('2.1653520252665943178786e+17', '6.49511426520246649498515816434950910703808001489158217697032e+14', '333.38166764323979143092'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('-4.8518265967788457677179e+10', '3.31040075102353608004456225759708591728643e+41', '-1e-8'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 1 }); - T('1.36837237977959550903776758684897e+32', '-3.684358886866245e+0', '-3.714004041944658064199049240955945948602173333923450572441188770467590771374789961829588e+31'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 0 }); - T('2.177699358089344987360951436599809417975282339e-19', '5.2030070964887038064987783057875725501661362e+28', '0.01'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('3.58e+0', '-2.688704424296120359588e-18', '-1331496302698729384.7866855593593000520490969183956809319751423410301220536455204387'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-2.268454219458114757815396922012605631433386092870212e-14', '-1.09474933351269498569799972e+14', '0'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('-2.05209700237419166454e-17', '-3.0709248036830196e-18', '6.68234207465149254405509695027088076277612556368445724782615834'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('5.4046420290424507e-13', '-4.179004273853063242933752e+6', '-1.2932846378879969890777046684330924830051367063541337533428572e-19'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 4 }); - T('1.58400755581268047025424145151705e-2', '-1.5959696941375685449138454859289511095574256562772715857e-4', '-99.250478353766473924218120396249692137210245799211978619596833861552441248020682855061'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 5 }); - T('3.81148895119210187169599028222884283678e-8', '-2.9701146466824373148364263300641847833857e+9', '-1.28328007656184718940443206263025883340647845055074820195999544885356710601702300166e-17'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('4.49008e+3', '8.689657335003219286202e+14', '5.1671542696e-12'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('-1.5946734525e+2', '4.52118414866581288924758024e+7', '-0.0000035271145789772422362885582265014191636438330246669572393487356540344090939917071'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('7.610578634455773076134189379865470344862472011249194171555e+4', '-1.1649311077973715753657286470069e+23', '-6.53307185593635905748777479229977e-19'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-5.3575981042571e+3', '8.935729367186173155324128582899234399791777828857851e-3', '-599570.318672731586761585084863571675024043375304115163'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('3.69e+2', '-1.2562490101300234257955e+17', '-2.9373157473119761056698685e-15'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-1.2998177446296097240525082320413196107954665075371741e+11', '-3.4244164821e+10', '3.79573498557776'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 0 }); - T('4.94e+1', '4.56838323363482961321624179064445998936302930009827432492286e+52', '1e-30'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('1e+0', '8.64182125633251631363983155369011869087139429701476701641872e+21', '1.15716348480041094982762810567962182e-22'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('3.993975408163954147285094514954904858958e-20', '-2.66722286349412e+10', '-1e-9'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('1.5567622653e-15', '1.5028194e+7', '1.0358944430049279374e-22'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('-7.557578e-19', '-3.2335604174153e+12', '2.337231e-31'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-5.989911278884e+12', '2.51892127512023506793037001994892134251649740742753416e-12', '-2.377966845588727259761014826439802188708564602020039218024669479952070521178878e+24'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-2.57e+1', '4.0234895732828185373607611581807785e+24', '-6.387490145533303555459e-24'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('5.2259107793005831331e-3', '1.091382034498148692899092300032e+11', '4.7883423165414473617416e-14'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 1 }); - T('-4.817248e+6', '-1.133686049927568668e+11', '0.00004249190505879272774206394758255254543582190221526241845546'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('3.277097445126e-16', '7.054516371862691529581300334768690678121626769965e-8', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('1.3936248120801381090513747266745290193e-20', '-8.053893160077933179823e+15', '-1e-18'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 5 }); - T('2.32064033092970843664954948784087753583041216e+17', '-3.615111227e-15', '-6.419277818058980669502785087726645307531535488216390637764462896842426807024491033730509337935786837133e+31'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 1 }); - T('2.12664997462592137369956190807051384300440311477378e+27', '-9.14978474014484923376370646832888975224932507538522e+50', '-2.324262302363470260550894902456257e-24'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('-9.3735010383806623635487882e+25', '-8.665913602716640014724e-10', '1.081651799002727629823101066135855439197703238337573085e+35'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('-9.33456e+0', '5.1097037422e+8', '-1.82682998290248703100241356298177282611694034976335657975360730493977013e-8'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('1.38184839557403816707665402179456610830962367723975e+50', '1.808334881264795534220320555362652442384712765415479e-9', '7.641551406714768216514572188140965014291289611616667139389533705973792782997367661e+58'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-1.82639748802688362350005077027638364644443085055233310644497e-4', '3.5662613126352735e-15', '-51213226624'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 3 }); - T('-2.542623945989746270879379039368625760071115734461e+31', '1.6272411990956368505573932159726723197192155961194e-2', '-1.56253660944846209653465182532914837433289580415086647e+33'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('1.82031740681354151338308744672598642687118944853e+39', '-3.346967552429e+11', '-5.4387064657752051191720999006371703872851135394439241613473988452882276091367826788182499328834158888173812160391519261e+27'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('3.428418694506e+4', '-1.04e+0', '-32965.56437025'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('-1.14710639e+8', '-2.0576450373023254344893212805631573278690023e+3', '55748.5071139341553810716080941416250951289073040366315795875490803975486957051493696543303812938'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 0 }); - T('6.06910031912579603075163650077301063386513e+26', '1.756285510243160873757e-17', '3.4556456132724788146966813135468468977660154057678872739735566302820030237952071583e+43'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 5 }); - T('-3.90605514022806485720221042500769324323736581269348671e-10', '4.0593180145965868644895e+18', '-9.62244181456733391599132e-29'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 3 }); - T('5.528886e+2', '-5.68717521038400004816993491246491187773380607589632983e+25', '-9.721673406342421608577825911319271020373526164887944e-24'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('3.72365020586868229145574e-1', '-8.3108274933427095592958647248003181967722856008189e+18', '-4.4804806848072209593189161771755027874320409513783904661342038898374406693370618e-20'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('3.7509490726672160635263349210882224671051512121008e+15', '1.837647987011687504484463752440466083881e-14', '2.04116843877529842620756656613070857883739e+29'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 3 }); - T('3.92836158644157173487527367198e-17', '7.0684264028255533733e+5', '5.55761829092715321182515788486691969921469112592071527097e-23'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('4.525555820719068749213427983578024137194e-9', '-7.68863767700660740960792346381123153785634e+41', '-5.8860308039394943225e-51'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('-8.349555462289792e-20', '1.55856431902488498069349393e-12', '-5.3572094268869746573743511666430217422115702015183538053811118e-8'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 2 }); - T('4.2245946745197906917e-8', '-1.79339610040587716162181818575234544017267244514968e-4', '-0.000235'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('-5.774793154960727098877246652216e+13', '1.691693e+6', '-34136176.9243043926934570672823969833770075303261289134612485835195865916569969'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('-2.598716034136613005772487787684e-14', '-1.386323758531479015699e+2', '1.8745376165877809319182601233019063485910918364572435866167922192e-16'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('6.15351909311321460413200987189e+4', '-1.77785984015652589984070820009413104693967217257212e-3', '-34611947.2082312629657648446820718231446957271281771'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 6 }); - T('1.155922507793e-1', '-3.147279429869929206271673543872831846173426e+22', '-3.672767333025691894852221764744712889587078925e-24'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('5.31733118010839356e+6', '1.935732381107395542585851627989728462646323037201844002e-10', '27469350784256912.0963853112200350731237920925262619759828151961501'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('8.42672444294536299766244e+8', '-2.138586073610043835580070416613103e-9', '-394032512739625979.2024324135574482589490533197844987891038312691855942329828833289849150130808872773028720332'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('7.2670769588897391152727506230883844854371350081800514279088e+8', '-4.75262927699e+10', '-0.0152906455255694242124206820335606100073071102662976726391425999554964711798527610492179627'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('1.5404641671662e+9', '-1.67314046776792545248727858299826872766651259168209189e+21', '0'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 1 }); - T('-1.28280080412952281488188135011754515997e-8', '-6.46426323073493705765e+12', '0'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('-9.8111488972459283571522783e+13', '-3.07855e+4', '3186938297.979869859886075684981565996979097302301408130451024021048870409770833671696091'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-1.4e-5', '-3.062e+0', '0.00000457'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('1.4419041097349896276732463379735549e+34', '-1.164926376880634535235074260744069971461e-8', '-1.237764152611968817166836687782721198756269914503940580162683458101244387634455273758084293823955197903428019900662056642183151712e+42'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('-1.784938664778507938329516604285042177139945071683147e+51', '-1.099701856021749e+10', '1.623111441528027108820050534401675955766726487475507603057000919657548788385756776790779714626195313056373415939e+41'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 3 }); - T('-1.144858097690765727e+16', '-2.16e+2', '53002689707905.8206944444444444444444444444444444444444444444444444444444444444444'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('-1e+0', '-2.6291698157169478600461175327012358e+0', '0.380348'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('1.15736211783538299961215009168140190677434638e-9', '1.9143055086673123356012111887079535252803523218596770013e+37', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('2.227835284218315528e+1', '2.65905579750147274874085364052e+29', '0'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 4 }); - T('2.03421376988479202905e+16', '9.209976974849011632657e+6', '2208706683.45850118768347641813970490676860303802841997904178048982249933515627383015'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('2.685671618673821738918519561777556033330658230560362e+17', '1.08826139e+7', '24678552812.333'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('-2.6701826994e+0', '-7.31279571226990573e+15', '3.66e-16'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('1.08552531516619e+4', '-1.07303114356446695384e+20', '-1.0116438107846703008e-16'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('-6.31579e+2', '-4.17845218838432029530229954432e+4', '0.015115142439'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 0 }); - T('-6.0746933e+4', '-4.57624387176461434406270958623088e+30', '1.32744090354991914814633e-26'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 3 }); - T('-7.72448118740403275367246115532129891374121010887153106508855e+42', '4.755600248544829343646447e-18', '-1.6242915265570637734914784332672954511258311352702689435212522270366305386890169933099848068590618456172508157831111829096991345e+60'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('-4.639777571042945259022505e+14', '-8.59e+2', '540137086268.09607206315541327124563445867287543655413271'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('-2.3020750134575195514445347821261626792634199431625859009935e+58', '-3.92222650207898488410757125871461098716339199e-2', '5.8693066609929323780891185838133305560007787678357007816777765392113192e+59'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('5.4667729167235500549e+6', '-8.084528100293215e+11', '-0.000006762018572890206822727228569651954784466579079349434386312363'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('1.2261103981e+10', '-2.44511071816705062e+17', '0'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('-1.42420272298234993917e+2', '6.0701464806431124872984632707962848259421e-9', '-23462411121.773460785160021677053026981460506372375450912428345721009'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); - T('-6.47604807276e+11', '2.2823408847663635566434482346535736e+3', '-283745873.19470175316528549855633658118846607902814'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('3.6686723432538176880683939931e+0', '4.675771298e+4', '0.000078461329894878397623'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('-1.969059638497421508330517785466147062462821526996807e+51', '-2.5463463850243090393472840670857777713422673888177093e+31', '77328821015001995292.29367118996203186569121349'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('-2.162750959e-18', '1.346407617425818703334204e+22', '-1.6063122e-40'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-2.11366520256529651274043289583154452957116941974142985549e+56', '3.73536883563683947771e+20', '-5.658518062259679756637010449252428818091256835404879088124450062541982995017890037759846913818031817732015006e+35'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 4 }); - T('1.299196051e-8', '-3.36293303690472426888379465586207695111083796846751e+48', '-3.8632825475341384e-57'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 5 }); - T('-1.7229451528342311e+0', '-4.2796707751658845459405876253306e-19', '4025882464679652680.838853081395701283716767471150976311912052472173814571991742097595184465006495719087477'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); - T('-6.3704067187468335042574242864413399048957e+23', '6.92328693184629368296786617657109666451713177238227180462e+56', '-9.20141947236611387943835667867777121331701406247027e-34'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 3 }); - T('4.0920126568798e+7', '1.230215173840457585562464949514e+22', '3e-15'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('-1.4392495761263320428327632607036e-13', '-8.8105221351484e+7', '0'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('7.311615200292e-18', '1.2980548030409449594783729777807e+7', '5.63274769536935134614744238279605697040141921685398829157345821849e-25'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('9.78202313986295301e+15', '9.495721316e+9', '1030150.6135590292854378035961307270530263316754651058674772085107810255369967093925'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('1.178638053412398017349804491989080300091419784574666653e+41', '3.513321214208652230743796379439210700041087539130623036e+54', '3.354768839939040134522406983e-14'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('-4.8276054039456529e-5', '-1.90531e+3', '2.53376374655339703250389700364e-8'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('2.14848e+1', '2.0459060458810641476956e+0', '10.501361997172077587912215021856201412580479851195420241531589174270660161526'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('3.19625508716517448025423430147865686848240612016195869e+53', '-1.1735022756598883138466143036906865085125e-11', '-2.72368887002613098842940078785932598938717998816810055434831160880098180027836612617295784889970125440482607164750942622976437807108021919913989007909266e+64'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 1 }); - T('-3.055638962466851605e-3', '1.5820727935000643428612810032474707340964284621402708323e-18', '-1931414897608330'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('-1.0429888109030004449511599763176612630134143e-5', '-5.266e+1', '1.98060921174136051073e-7'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('5.235397631786837277253237516187732524e+31', '1.88587089515897397697319410528959515274410701341e-7', '2.7761166712027267219109158409030121215419529279133001740936048442288253043150153240018380087223771821e+38'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-5.8461019782159550815368958600341261e-4', '7.2076431807321283281876422e+8', '0'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('-1.072e-3', '-6.2226250670741434772153726938779783680057864158642842154e-9', '172274.5607271579753419743717863649918294033827582277618188632134164'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('-7.73893488393041297e+10', '-6.10866470979295972943143632499e+22', '1.266878319827232390385112091177376865310437875356269518e-12'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); - T('2.4737489791204767259e-12', '-1.143884367193056074400887e+14', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('1.9553328475186660527428982315682e-3', '-6.1316918035249630259e+19', '-3.1888961e-23'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-5.8e+0', '5.71572737e+7', '0'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('-2.6158015369622294637737914312799631e+11', '-4.79524762718944093853339957196916e+25', '5.5e-15'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('1.748205863e-4', '3.709125e+5', '4.7132568005e-10'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 5 }); - T('5.27080240759242341930529800890535386287151e-4', '-1.21165044367497757e+15', '-4.350101495944571269652287362406913422019342444300166647938421e-19'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('-6.465427426796690642535274540554e+24', '-3.77672269521317591659882076480051580503324712593716e+49', '1.7119147865929700297374476718162274922554875e-25'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('2.8100453117403708438123384663111215155383804364678e+45', '-3.94730870352644146620787352135044335555948561891531562385e+56', '-7.11888915409614721336e-12'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 0 }); - T('4.1091099251787326266016993438615107e+14', '-1.9e+1', '-21626894343045.9611926405228624290036843'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 5 }); - T('9.95162962414437928450981522639092732e+29', '4.1032732859603383051255272667330592866100735872e+46', '2.42529047679925124426201614222e-17'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('-5.662275259502836253952138202643053155538145629955540451e+54', '-3.3185355084674883678993558701e+4', '1.7062572466243386172956620385621631889894058325383320594e+50'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-1.29748e-2', '-4.213764157130912855545319551064177966919710413480493739e-14', '307914717487.04468489533944253009776146027385757'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 0 }); - T('-1.81210430800593779617463855797503218374273474184e+10', '-1.5381177430741651185153e+21', '1e-8'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 5 }); - T('-4e+0', '3.51907189e+8', '0'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 0 }); - T('2.21863744069006666052582901465058740629316730146e+29', '-4.434978186087176856273181524060536005e-2', '-5.00258929716966968574514059093375857855938000892977e+30'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 2 }); - T('4.0823393171235391e+8', '-2.70368626550359e+0', '-150991606.134566078089942091981107157749027602664234117257801855530801967355204002288184430484464218207776'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('8.9442747523676788161885e+23', '-3.347090181217279032480999e+20', '-2672.2538886343361648200670897806551533769728165657196755425922348996478640782629610772688435675'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('7e+0', '5.40420500449420503453976209161094304222357223444553e-6', '1295287.649'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 6 }); - T('7.028445511182081995541013996e+16', '2.5102253272559340041211147747147949646909125381e+6', '27999261400.4307896431180085870678681760607552765970091244053029051440662128452174301577242980052539945281'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 2 }); - T('1.0601310955955936e+16', '-7.2898305260362985312824427257374333612356534e+5', '-14542602764.3473758416740179124382758595781429079155'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('2.6452e+2', '-9.262837255477826144094831326216435505e+31', '-1e-8'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('-3.90089408676e-18', '-1.1110298778e+6', '3.511e-24'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('1.76885047079958774536252123376129099042783874e+19', '2.0249e+4', '873549543582195.5382302934632630208851932632426292656427477900143216948985135068398439429107610252358141142772482591'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('1.205615202635851546016358551966522959e+10', '2.317193323336e-5', '520291160212804.4437597649071351315775402'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-6.93454822e+4', '-4.54e+1', '1527.4335286343612334801762114537445'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('-1.000540476280478315611880144301369064767813323703682e+20', '1.11376484621317482894663758902611128309813223360678264153063e+60', '-8.98340865832081267900200821906540144497392493110197807657652e-41'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-2.09732713097906379e+4', '1.8738082589245579420186976880043274021077e+22', '-1.1192858826349665590066119362490655013062474034902e-18'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('-7.325490256622605586102477749e-10', '-2.01836618685087474230579595304693534161075899e+44', '3.62941586335831891440877527969515e-54'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 5 }); - T('-1.07615286e+0', '-2.5086e+3', '0.000428985434106673044726142071274814637646496053575699593398708442956230566850035876584549150920832'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('2.8801864061246439586279437265e+23', '-3.3994521624931466142002006645121e+7', '-8472501651596488.647098961804323876901'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('-9.01310398074547316210886740036851e+3', '-4.5432397897061668151e-6', '1983849499.0220170568564192178'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 0 }); - T('3.05550985358647261837693896034e+26', '-5.135592160467994682089e+21', '-59496.738800770173400470178228695939682394147624700173086171296'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('0e+0', '-4.036945190420874470896353212870113317735715917770409396e+6', '0'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('9.854805535179212555e+18', '-1.842054701412308148e+6', '-5349898419207.3706750299601276764078545373755077227976997140507734858192986995853282700724558629675'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('3.533950028682898427434589041553550780382377037931e+11', '-4.703043653970614710075546551856999e+25', '-7.5e-15'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-2.8893237276749756486832134401e-15', '3.47524817021873e+10', '-8.31400690297499926658314384823351160733821320338308749502169143569793e-26'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-9.2119401062083750377874543076152147065706490670276e+43', '5.1085134426188e+1', '-1.80325259190979384994905409769630200591653398369710089350259831754409469186314303226122099174008e+42'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('9.85435328017809475871047819e+21', '-6.4468990417108467350708881124035910396252834805284361336e+15', '-1528541.585097165470490586829378750375239139730251327009191430390850332646044757932499986836'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('4.8547e+3', '-2.034883593978042e+10', '-2.3857384345555768653693177e-7'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('5.09933664998801e-2', '1.3600202443658585323419450478123982236493e+10', '3.749456429867847888805749393845466979832830382443844946011887e-12'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('-2.0626276758825054218624959260323599847854085167218e+42', '3.90493254708352738202395963395851075307503752752600737325e+40', '-52.821083360915359591'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 5 }); - T('3.3614492849204607400899018296211328810873509076824651674e-19', '-2.05637675978488e+4', '-1.6346466030242949824683333642856967292377346202240131516e-23'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 6 }); - T('-1.327840561633609171e+10', '-1.68337150906924141010847687584268206471e+10', '0.78879828634369008164222932703291468220520738947940911557353509777338380422921516801816530761381176'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('2.264640581420576317136612420218282480151e+32', '-2.277031177344401e+15', '-99455844256894397.14498145176283613575069089711077166526831139989697571258335110077879328814331944158977699'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 3 }); - T('-1.097819795140174e-16', '4.623262828779684541770610129425780534989133474553e-1', '-2.3745563161719377695558896468884011275554102797e-16'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('1.950161534442643877e+4', '-1.8647021196871283689033513400747765322e+14', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('4.54103601948189675e-3', '2.7153406046494129061305835593512e-11', '167236331.66706192076722437510852038974559134'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-3.14319239703203891591894401472767482245349e-10', '2.22833373138665984792024877290559690632614914754855546378e+18', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 3 }); - T('-8.482182257009733601127348485938999598952298941625177303281e+51', '2.678446652672185206934378e+21', '-3.1668288963483294585736922680211793192544444504919321066041506951852944602150905624323838423181244366766182125854e+30'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); - T('3.03057424645355458935993296939654221010182508767e+15', '-1.27383754710059e+11', '-23790.90060072033596774869684302811705830339493188550321778326199'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-5.189606428216710646374474712844057366247285825e-20', '-6.151584349959e+11', '0'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('6.22128400479128228713648738e+13', '-4.18313671e+2', '-148722942521.074867934127053189232249595782395550730160095580524'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-3.8595315383258477818067515337e+10', '1.971181644930613279741933670615e+6', '-19579.7863086418172148604'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('2.8396398271407e+0', '1.4007844376000654192455329647488e+6', '0.00000202717830875234117001620851700028775551551407730035446218333265226599654'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 6 }); - T('-7.7520935694483e-12', '-5.811218295358714775930720760317677065173729725450245e+48', '1.334e-60'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('1.50695374547572420215832303185808273893758272e+12', '6.305892936498348549057922004629926844851005e+27', '0'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-3.593197265003281415677274812670346090799679252631541222e-7', '9.4699129890580005588330029e+13', '-3.794329756941839723008402e-21'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('5.61212e+4', '5.4286597601163741158408129842555370439294730106573068454731e+22', '1.033794757452195355330324303764289237030962656486403993662125e-18'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('5.43324599201528989062433389997237462e+24', '-7.6578845958564448000794923672884e+30', '-7.0949697974753103362057861344478822879106e-7'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 0 }); - T('-8.0268001304860409453540737281708342471481415465263912002e+55', '3.76613794e+3', '-2.131308055723004385058204673239035489801560891985382564134121970051898842558060950895494815572262337263196472299153227510301972635659754937175775e+52'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('1.65912563233027009212316750725127535421346362238679e+31', '5.00084767174e+12', '3317688802452549490.5'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 2 }); - T('6.29619522511557655893144564090950412200822974489733361793257e+59', '4.83663548471053818776077e+23', '1.301771705769220223964253908610690647447402401224339405695974291376778946059439568904350141363888987527e+36'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-7.59981586158762368120877895474e-14', '-5.79870405622771193021486650702240911193708505587921510736e+56', '0'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('1.23272599279637618024818738552421012527125699145e-12', '1.77359653124e-1', '6.95043078334463567716527141353685705504107361229956213364295596264092e-12'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('7.27406134142945150641791270976329497152745026788316643e+44', '8.28398856173702973902816689427e+8', '8.78086840320816250780937534540864901377022634486000430685076863358228e+35'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 1 }); - T('-1.15526910572109520014120828078320325e+12', '-1.87506634901088457571527422878972322588052606480450184412e+13', '0.06161217208823'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 5 }); - T('5.779678960222114244851358841240102681019064478928174e-8', '-3.301461021906077298e+12', '0'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('7.890144170165107e+9', '-4.5462749851861763414053e+6', '-1735.518462010056904268322534763888763092'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('-4.486939667327684e-12', '-2.414777748926455346445236405126297401829664670083955e+16', '1.85811703347128140755899041612747011e-28'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 6 }); - T('1.69813797606256583369528488206381209609e+36', '-1.241184493412634072e-15', '-1.3681591939595854541082341194728109793123233230082324815562626769079159245714700393138326638e+51'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 4 }); - T('1.037856939226e+6', '-1.7260192022757165658e-1', '-6013009.228736'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 4 }); - T('-6.2916731388585446e+4', '3.409559207090871e+15', '0'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('4e+0', '-3.6143242169244e+5', '-0.0000110670757793936644308858252687780301559813329496312280528851'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('-4.0652283761994923639772088e-9', '4.40003313970616097215733317074853572661738e+20', '-9.23908581395587571267698603933113078251391549321e-30'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-1.4532417515294380505352650897484235322033e+32', '-6.36472788019403503294418758859e+0', '2.2832739731916622592109626251683363405458816780749956302804925979964396612102562039198125387287842e+31'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 6 }); - T('1.027682523873433086499307183027840763990090057368e+45', '2.1324206985991e+13', '4.8193235253651970231189259886502279111251381373174655529127237852621833725276596154661218376404290590268970230831e+31'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 5 }); - T('-2e+0', '-2.5035639762053087275972004063124392679e+35', '7.9886115114639e-36'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('-1.79721496577102199881852495383e-18', '-2.2890351902837533341e-4', '7.851e-15'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('3.57212712587e+2', '6.0561621641945475976110735578765694561760098642903113978e+56', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('-4.4563487830150478121e+18', '1.7964872213975340578e-9', '-2.4805903041984002416305935836523769205637042815086311e+27'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('-3.6908474693475246852869164343969127157121506046453749e+18', '-2.302314698129360813e+14', '16031.02943462226025018387751703775005'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('4.70612309822188583854333927819099e+20', '-7.8e+1', '-6033491151566520305.82479394639870512820512820512820512820512820512820512820512820512820513'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('-3.3404e-7', '2.814e+0', '-1.1870646766169154228855721393034825870646766169154228855721393e-7'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 4 }); - T('1.4232379e+0', '1.160447e+0', '1.226456615424918156537954770877084433843165607735639800869837226517023182'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('6.34747778812125612400341e+12', '-1.114613622311774629531806057e-9', '-5.694778586104314307451623003877758027242e+21'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 2 }); - T('-1.5333619222084748e+16', '-6.8177e-1', '22490897549151103.744664622966689646068322161432741247048124734147879783504700998870586854804406178036581251741789754'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 1 }); - T('2.3798179e+2', '-1.69664275473136514529862e+23', '0'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('1.14555654155595629134970722126157447106857457471520603749077e+59', '-6.92758316413895333566234090597691893454713893688e+18', '-1.653616440847650774320636232067498389455369509931511155041982279141599701e+40'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('7.2332394047727069252432e+15', '-7.443809298201294676811451832760234274114924e+22', '-9.71712078454311e-8'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('-6.69432533125189126694700254305655589577926e+29', '1.761844828827825012882e+21', '-379961119.26075240506254660712250901049329503462732131412483909000949311283883066594438175141'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('-2.4130178835595964742558296142893859210087294e+17', '3.452338636132145425323899644612127470638470539166e+9', '-69895167.8234855871611150701480683220184527263906806394812898006382582632511354794025916677'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 1 }); - T('2.54963813404581306453e+14', '1.97713211157275048109303526074293e+21', '1.28956386835356736489233961106561299388588390847735105300452516168e-7'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 2 }); - T('-1.38746455209878402530134727e-11', '8.591127845937769823840816001868213375681e+4', '-1.6149969794185206e-16'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 4 }); - T('1.6639521425931124147154451392666164491148e+42', '1.92920892e+3', '8.625048979107521515686570323687993569482355493152084326875287307e+38'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('2.4973209182169190724188217024082110092149e-9', '-3.0444646040999073994696e+11', '-8.20282461111171054659002141171005e-21'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('-2.73630880347215358546735836781048e+15', '-8.036043764974990414103e+21', '3.4050446755881617093172747681483411e-7'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-6.36544404446311263506812929513680206971497e+24', '2.2525981254462389259878050694e+22', '-282.58232005773867564641848251847016818783380658176288449307102227688676344764727767543689563'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('1.82819051068994851460438950430873895607034685720211e+21', '3e+0', '609396836896649504868.12983476957965203'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('1.9e+0', '1.490741470608424941842587258396915e+34', '0'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 5 }); - T('-1.05090161972829793575e+21', '3.0801485282516284311082114134926e+1', '-34118537144856996195.32516231868303177883022873'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 6 }); - T('-6.670538194815167235e+16', '-2.121809310490570685732947018575045526339034042864558885e+16', '3.1438'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 6 }); - T('1.080569073506090886211002e-3', '1.43592011644804083349241749576879897163092e+24', '7.52527289734638644823125069382789901359916933678021640548942272e-28'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 4 }); - T('4.91002487656425188852377e+10', '-2.00440623806984556707345967912764990117408e-15', '-2.449615643429841039437233555809862374219296807179812453696159563073898964604846077002445010021825873988315017006372132032e+25'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 6 }); - T('-2.943175455433610227235e+4', '-7.6636558611466733e+7', '0.0003840432697865478087537804611869058628495472052'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 3 }); - T('-1.51719645208215782237668048533727734233585519889994141360149e+42', '-2.550879672562988876522596686423987946305852704705e-16', '5.947738219097410944418174596769874078850050143335315073796851720454311263758574e+57'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 4 }); - T('2.6110108987009436226076959234686217260439596606e+1', '-8.58789365411570256e+10', '-3.040339114e-10'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 3 }); - T('1.389064720277617509178597341196915e+10', '7.026036063398392990615443927690670946276717057e+17', '1.9770247515720077e-8'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-2.05140355659764717008738511843296414524e+22', '6.071199089905871458444031228126412896e+18', '-3378.910041030218229111779009199060737204635943241522624672434450684440479549413131683'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-1.314e-19', '4.2648981383367708469278923711170719537e+11', '-3.0809645561955554862199629702128680637642401845537793412218119e-31'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-4.0597813580991029477169989484145e+26', '9.34538682240575579505385728753057530742998792678602492e+35', '-4.344155501798699457589993145799674244161193e-10'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 0 }); - T('1.0018200401275595903339115682344558572633270804e+46', '8.81139267321976617930455357798e+2', '1.13695993049131140037125767625346721458195947241e+43'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('-1.2280735669143165475446e+5', '1.10102560960248605863427422923e+27', '-1.115390556045013197867542463885541168664479231181377587454975483215e-22'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 2 }); - T('6.7082192809678563962162194594386435875e+25', '-1.71790824342059386152717e+7', '-3904876355684084910.111760388367215781609213982133097404'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 4 }); - T('4.1278125780422546665953395041944509872760679487138e+5', '-1e+0', '-412781.257804225'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 2 }); - T('8.259835298888e-7', '5.34066490685461e+3', '1.5465930634005343e-10'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 2 }); - T('1.8426220886667036290616536083832917e+34', '-7.997381733e-10', '-2.30403168209840362894886164161959192551150415368074315229139006512395523786359692579151e+43'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('5.6424531566839249211071e+19', '5.74748066963653937414895457337104216909762130207398e+46', '9.81726339071053159491586530524973e-28'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 3 }); - T('-1.2399471396360879396835759940372784823940663087864749e-5', '4.3878248953086319241675053635098078071996e+9', '-2.8258810896529002e-15'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-6.34300658631121962368858167366881418759032e-2', '-1.28352450068574604586716824026e+29', '4.94186638659593509113113820093381910926216553909442703098435e-31'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('-3.9689842428210670859875967578916064e+34', '1.8182473825584777881158730317543760768228627e-7', '-2.182862618636778435339722244875608102637560298183181002104515521142307254849808669727348070645458076424429253554156891803466219779535e+41'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 4 }); - T('3.08018795632501172706224e-18', '2.242798713829312142486513346099279818835760163581229e+37', '0'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 2 }); - T('4.6669078251e+7', '5.390164254506657335728203599108065232e+19', '8.658192227069981120840641782285236543019935288576784630651117737363166435e-13'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-4.763038967035678667425654945213259439774075261381900617e-7', '9.33901257284945472465207267726e+29', '-5.10015264449142214024921307797244918252984355641012968e-37'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 6 }); - T('-2.133605981326826293923435937504e+30', '-1.1177891405212282285363353987352004e+2', '1.9087732238406966521282892577807343845745802496660390850671364235934118591781436272865639003e+28'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('2.76527585809449777563633644930595716244546e-13', '3.0001024020092905128037424559480878163977551122471405142e+42', '0'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-1.7110132882492383935588586899931425895061e+40', '-9.6191187870121269195067e-4', '1.7787630303094637331562594685783036737284333105369588976017725202974330352216606884531691618914227170195381448911471e+43'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-1.08910400379894844349196871748334229714615028018338e+50', '3.985827e-5', '-2.73244173367019803792780950473601161602385221481860602580091910662454742767310272121695196505016399357021767377259474633e+54'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('-1.302156069877990534483599036592e+26', '2.166149780191755666818104e+15', '-60113851857.590328633878193952382064059805466930609831940013328243809182135262639138999955674993301153625'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('-1.69865537226e+9', '2.0093306401845017188353741269846253715367437218264014569e+42', '0'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 4 }); - T('-6.4287101918646874743716276949902581737092170275369e-3', '1.51741940421415733729533709131599e+15', '0'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('5.4829493429020796197e+0', '-2.137430148e+2', '-0.02565206328745990729658221326819237884165934390104803555900812530319002499631'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-3.0832216252080367540171446752324273e+15', '5.5264698627899400048493474087565807463187e+34', '-5.5790073985e-20'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 5 }); - T('-3.787764096073192450495e+20', '8.56080716085581596896635019e-13', '-4.4245408463266134116867309754241741552173633456978878978050073111062033244e+32'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 0 }); - T('-4.565118710281652043205587e+18', '-1.0768501357485338531981498736813253355144135945765971e-9', '4.2393259365736840112289457899768571182305950804409789854049842737766244141203174999047786698457641144004241958939814e+27'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 0 }); - T('-1.13737377e+4', '2.39672067889640067918676018386712868197543279e+5', '-0.047456'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('1.1581797117048585800437723131800381940670958298323249865e-7', '4.158e+1', '2.7854249920751769601822325954305872873186527893995309920635e-9'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('3.9177480051098793315e+1', '-1.48389811758681607570541737038695e+31', '-2.64017317542062981775247816258745283056e-30'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('3.005923866141121045247898962416705369972140068123506153e+54', '4.15073648236102377881158357015816460485290127834017e+28', '7.241904849693782752130060912698917736290164881044921819594383013999439892969064997721651291785856799979242814754346046e+25'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('-8.3414350613148997769231158985428870355e+37', '7.519139028e+7', '-1.109360397547220319454254929164595709547505390267402833291513917728826439249608193307e+30'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); - T('7.62232420989345792932643399532553660945033205e+9', '3.546254722796595951616967161e+27', '2.1494012150042203378569e-18'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('-6.411e+0', '-5.886802720840736290495173212026142e+33', '1.08904617e-33'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('5.38785591321678035450356e+3', '-2.1313564527232543868839883771873473923722049839892511e-11', '-252789997014936.927663619422'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('-1.8375199248563026289334113517820101864193123453179889673e+21', '2.53353887e-12', '-7.2527796854220066847974246859769322837320918834688688526022101251598322626090200858059067394533402205113987455815114452e+32'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('2.096164878785696688636271502225300969510394288e+22', '1.6599866609911060613934375398052217446e+32', '0'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 1 }); - T('5.1914325745708e+9', '1.269735010750339990288837063e-15', '4.0885952821785731935320459964719577351634688215103650028661120240797065846261251178893e+24'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('-3.40269969165377186723554713617322268339825908238e+13', '1.579726092989314070406753168803172757e-15', '-2.15398081145500782364551348037118049721898729116518236621306226881029682045148538975457845189807222020592916409565460497028e+28'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('7.07761075858482789939366123427509748239558464675607916e+14', '3.181642412092089782313201e+3', '222451483915.5335226309323248048612287514336059581132215978473999145475064012112175748280353528345419168'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); - T('-7e-12', '-2.52325743368261531046115900833975133351e+32', '1e-22'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('3.6067668496694263013521414450966007916746291382759735758e+31', '6.827723069253867656420030717897241780099868387443e-15', '5.2825324241857002134118874502088063070690230140241721395260396263559625719946470638252066536062470631e+45'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); - T('1.0834953046501370758802165232e-14', '-6.05637425405890190868117498e+26', '-1.7891e-41'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 1 }); - T('-1.9506279824752972821372077075674221666452197467521264791e-15', '3e+0', '-6.5020932749176576071240256918914072221507324891737549303333333333333333333333e-16'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); - T('-2.1693759471833175873e-1', '4.5515219138364272458104132184780818337729034e+43', '0'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 0 }); - T('6.32881730280121156206410564112642311471e+38', '3.13893166980721585503068134122e+22', '20162328997718861.77345695034924554442906535351410535056602449751700077831229938823869747916979'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('-1.555971152961551330903485377282047252953612416704372252e+37', '3.80693896268786345930625309227624452033520391582734289502e+10', '-4.087197531170734719117825190571527229082e+26'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 3 }); - T('5.9183141e+0', '2.648861310195652114486969005543229600661764637647280250443e+27', '2e-27'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 3 }); - T('-8.9551915318277681675e+19', '3.917225e+2', '-228610598876188326.3662414081396907249392107933549898206000421216549981172896629629393256705959'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-1.07477279325373337557240127417807692678e+10', '1.2686e-10', '-84721172414766938008.229644819334457416049188081349519154973987072363'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 3 }); - T('-1.43445291847104540719480368407138500372646221012377e+48', '4.345e-12', '-3.3013876144327857472837829322701611132945045112169620253164556962025316455696202531645569620253164556963e+59'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('2.0954478e+7', '1.53986464392932017456152151888024146833e-20', '1.3607999951560554864680121615011578541363119443508316052226456031150797726183451e+27'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('-1.250091427743948668246622447017843708148283052927731211e+54', '-1e+0', '1.250091427743948668246622447017843708148283052927731211e+54'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 6 }); - T('5.6758631618241666964475079252598362892256966910193e+17', '2.94664387659901875615219983882883e+27', '1.926212803284250389998514453682328724096414204311678778978699659759838919429975058e-10'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 3 }); - T('-3e+0', '-2.47466544947381642e-15', '1212285079034778.015293785445'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('3.6042333176839534052834899427e+21', '1.5947612506210181108875409483746556795324e+2', '22600457067040123341.262943049601011982052457081051322054435549972434391998'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('3.46928589015151151224242065e-8', '1e+0', '3.46928589015151151224242065e-8'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('-9.019301406909e+11', '-4.85725370439548e+14', '0.00185687261893426599086'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('2.566889e+0', '-6.70721664959455838294e+17', '0'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('-3.11084740702514286871485769505580794328691287870845e-10', '1.5910876e+5', '-1.9551704174082827801026529e-15'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 3 }); - T('2.4269107472646520956770013e+15', '2.8745856109621794177779499143087112128716443811e+44', '8.442645569537649344235981615816e-30'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 0 }); - T('3.97252e+0', '1.548939276078652e+4', '0.0002564671231048494297678054247040105191'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('-6.3e+0', '5.8690364137680785464741614e+25', '0'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 1 }); - T('-6.8137941022461812680047719160579275395400712e+43', '-1.046987619470002203934857620914434266806e+2', '6.50799873421178203991729406989443034111151170473151e+41'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 4 }); - T('-1.1631433593378409165207684394786246992e+28', '3.689253560366864826581626e-14', '-3.152787793805574648001297861553673866761420561503993546532496159938898627082395001611967385943223374e+41'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 3 }); - T('1.53592787782164984169670245168279271588308165405594488014461e-13', '5.74693959298662675002906911949718002057e+23', '0'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 5 }); - T('-4.369397449454654500615321054230276043619984268e+29', '5.24801546986518267528660609112448233763402950374793e+26', '-832.580901208147702034817'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 0 }); - T('-1.47793635449474418162790025007363128246510397e+13', '-4.0311055974468508565753385738089562823383551139320599977621e-20', '3.66633003965664635938598932039497520941395269631956178044633131060155153584e+32'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('-5.7052072710315394560511337462009242396919549919319e+42', '6.27432931323509935475802813014752386e+5', '-9.0929356528943241420295550584270473994696443062489638568717678348095857514087935769869142236559272e+36'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('-2.560785520006531400251699966772e+5', '5.5510232696929483481973994891101258117229e-16', '-461317741899536258818.0608197139803747414543238'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('-7.2123486426388541242775563968e+0', '4.619423742444157417018988e+25', '-1.561309168581008e-25'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('4.65760284524911044998976808276645440797000595132e+7', '3.816726465949637918795174164549680432e+36', '1.220313503417451340549963130850565938826291703362578e-29'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 1 }); - T('-3.39515064894245702976142489942538572032944293834e+30', '-3.190517451178851693325309076728704044337407e+42', '1.06413793401694017e-12'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 0 }); - T('-1.12971175678496761518042827771480583041035379585531292740564e+60', '1.1135019977475364041327134404577288914950353923e-6', '-1.01455745842416210855166092488428629288662495889166320866894809187483852974381597749668860834938486e+66'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 4 }); - T('-1.61107062827717139412280581447896440546912751337055027e-6', '-7.9868182e-2', '0.0000201716201362536509735855238883359634'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('-5.9602377452504052024635056322386719132385834997988020543e+55', '-3.498531286473903713e+9', '1.7036399726633869221323030554383704939733658508821406762344e+46'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('8.8678285156182557026067087883515e-20', '-1e+0', '-8.8678285156182557026067087883515e-20'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 6 }); - T('-8.172900544549032947357222781512645262126304658655905516e-1', '-4.3773239399897252214957553884619053796e+7', '1.9e-8'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('2.1938141727317212455590510016849823560636555748854812815e-5', '-1.152634318814916200089398e+7', '-1.9033045753724361288571e-12'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 3 }); - T('2.8461588296170431285e-1', '1.90071041378103477912558980478768073811314e+4', '0.0000149741844364142347922830912992588913762933317498045262197925557573'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('1.94176577147468478609702628834870198693618436686466286501e+23', '1.366700498587062696311699598145443739386716e-3', '1.4207690518018705483123365071820858279329228470863191808681144222545893e+26'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 1 }); - T('-1.147088324271573723219620098977412358417e+35', '-6.8420757220714e+1', '1.67652094315655889153791839384123030768903497908861683049e+33'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-3.4261625872519427236184148705326694e+1', '-3.656977023004e+12', '9.3688381570348061450087e-12'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 0 }); - T('3.178982122983257629900089663528174e+4', '7.9e+0', '4024.0280037762754808861894475040177215189873417721518987341773'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('8.80250523729885325662597139757429308244444760554011e+17', '-1.60975301309037181131362e+8', '-5468233428.18286068151959437946271099134'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('4.131471973078503249608785603737670333e+10', '1.57484286892879068139527487680388e+13', '0.00262341853564650143896176778348543403497050301463382759425766301168132358128225'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 3 }); - T('1.528585895331763840069115e+24', '3.4197765738180730499249314496468094e+15', '446984141.31340333043353548439883'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('-8.082841639227090469245e+1', '3.1691838e+3', '-0.025504489954880781825418266999850245353393514'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 6 }); - T('3.2238563984165e+7', '2.8062784587035137467085680744e-5', '1148801320274.5051606528539252884416106410737944273'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('2.0154408498918e+5', '4.30900269497597338542444160749771097706975486766992786564213e+52', '4.677e-48'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 5 }); - T('2.48973808166649107472563e+16', '7.773469e+0', '3202866161383664.197703277648627659028421'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('-1.876233464908725268866091887181294e+16', '-1.9027863e-7', '9.8604528785430359093193591270932211357628547146886647228855915138762560987537066038366998963572525196339704569031214908e+22'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 3 }); - T('-1.480302016623546957756720617e-17', '4.48675237307651206e+4', '-3.299272822601800274884019740677e-22'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('-3.64371087263156062192935582799e+17', '1.04379068944648426323950949332e-13', '-3.4908443900412619376776296200878493436163771937560780289138565225881051748383290309208423232001e+30'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 1 }); - T('-2.79462269634029e+10', '9.171536006562322411712371008882911861507797208491e-10', '-30470607042710299834.7432085676428408'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 1 }); - T('-1.29784048438874624021e+20', '-7.81658848499248784763163473043552e+32', '1.66036690671453907699103222539981767269959e-13'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('-6.597295693757315e+3', '-4.16593865309750956562336926008730168740186203511235e+29', '1.584e-26'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-1.733446e+6', '-3.773482388092225554199223240068901e+25', '4.5937566993028558008339111973252023492964259032e-20'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 0 }); - T('-8.591446397952e+5', '-2.1338854e+4', '40.3'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('-2.5065059377850069547637824452936029353036204106279362560509e+13', '-3.516138995179143018517006915479090094604954604417150237252e+20', '7.1285746701754135756225199719702995705315196231393683774e-8'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-3.4639682847745124412681859833318897e-19', '1.27938322882835038821277277860055181653355112452e+33', '0'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('-8.242064013153929194308e+16', '-5.88334204864119044962e+12', '14009.15320749964947459873313784078010659724212034788068072600022'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('-9.295527689899477623179726383980164313e+35', '-1.20397940136725175038994132464e-10', '7.7206700374968026863491592880531954750229221325124051573418863e+45'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 3 }); - T('-1.2993408634661707140025892e+5', '6.4008213695336018769564880218049e+7', '-0.00203'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('-3.439e-3', '5.007165479996500833097779388632839571712066842668444465e+42', '-6.8682e-46'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('-4.1075711824676853850298647179142751957575238106153166179795e-7', '6.736010848029373298409137e+17', '-6.097928395809159715274109761887996027382064202781475036225558005982e-25'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('2.10811e+4', '7.039650080732634e+10', '2.994623277895374761215744974527407745291e-7'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 2 }); - T('-2.6922407507855523516498813e+4', '3.385600892832e+12', '-7.9520322566241315483997502301377015966728520910279187923444024083e-9'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 0 }); - T('-1.06393575735452126749341238926286918765875015683812157908e+56', '1.976746e+3', '-5.38225830407407561463846335979872572226654388999963363568207549174248993042100502543068254596189899966915324477702243990882e+52'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('8.39028921330038762342800857115e+8', '-2.62116597e+7', '-32.009759432747357174899'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 1 }); - T('3.32080026608352761689993530772440349217e+15', '6.3e+1', '52711115334659.168522221195360704817336031746031746031746031746031746031746031746031746031746031'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 5 }); - T('-1.7436019457469615070996622e+5', '-1.537142139952287588326813384142393964461884060572341585595088e-14', '11343140627197185333.9914956314439278246782386974657129323437'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('6.3068e-2', '-1.62742639346165873727213806313110423996682365e-8', '-3875321.19752891589575249733699092578021103894375685686374009095324996068474580334243824017'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-2.67459600065252213e+9', '6.800463743262528454476856327536849586501415128073680255e-16', '-3.932961194451398323719174571651676019224406263292113633385902e+24'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('-2.617285444417e+5', '-4.47954959e+1', '5842.74242718451521819183611270167900965239677143523'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('3.7579e-7', '8.54683111980676470002e+6', '4.396834273806222532435072949873113510325440312678639576e-14'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 4 }); - T('2.8477068028058652584776269115790807261989e+34', '-5.226292045160877578498455975011326654e+30', '-5448.8091713944893715908188010500732055243096161167780571703276924743464242079738811209697'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 6 }); - T('-6.8507994711488854651893712090287356346646275780892589e+50', '1.4196276232088019525156065222e+26', '-4.8257721666925149810137958222907344779870874725996e+24'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('-2.510875589771772534352701964086446678893315e-19', '-4.660709492566915161266813973541648e-15', '0.00005387324813477898104552680951936241'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 2 }); - T('1.841169315225278628077665447866018253191187289462057e-18', '-6.698588447367633798507872595601290230706e+40', '0'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 6 }); - T('-4.6030903641073196122984204022259818458530423963791449143596e+58', '-1.193210663988888018144937457943644434e+37', '3.85773485188210377239318464774846598686982825603335346499529370372641562226279596956021e+21'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 4 }); - T('-8.192996939019225245336662e+2', '-5.91452878551692232348205067809337786616592105886513524e+48', '1.385232405848062449e-46'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 0 }); - T('-9.564651336313779258350769302394654279056857763720314e+26', '-1.6261e+1', '5.8819576510139470256139040049164591839719929670501900252137014943730397884508947789188856773876145378513006580162e+25'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('9.8274874788841622718851425990539444100847489201314e-6', '-7.62193965807557879783269099915712298531636396e+7', '-1.2893683e-13'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('6.837027364882200392820791e+0', '-7.345570989011759048491415001517951174322659655632854666e+52', '-9.30768673410101e-53'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('-1.32462495e-2', '-1.65640786003702080437932348185e+29', '8e-32'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-2.825350191927226947579184950855406476572e-2', '8.5862e+4', '-3.2905711396510993775816833417057679492348186625049498031725326687009387156134261955e-7'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 5 }); - T('4.616934e+4', '3.87306e+1', '1192.063639602794689470341280537869281653266409505662189586528481355827175411689981564964136884'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 1 }); - T('-2.381057185151378125175009249137791842202222570377464e+19', '7.3884865773725849186751872373034854117109498605406211356575e+58', '-3.22265887637046283780231e-40'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 4 }); - T('-1.0255381436149549830635312526039032986110848719e+45', '3.0309856974347856e-14', '-3.383513635458256279767067899326593394103171254321104183121206634014392150695151267856582775195529055027720502797324656777805811e+58'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 4 }); - T('-2.739259011988857806059105488724082242303111e-15', '-5e+0', '5.4785180239777156121182109774482e-16'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 6 }); - T('-3.32223e+1', '-1.1615523533912084077188609829035381401727064677018345282e+46', '2.860163806048507803780968392110539535051052434589317e-45'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 3 }); - T('-9.9958751104048399016235136218418342519215227584053e+14', '-4.174284831598177548656417478e+27', '2.3946317785357e-13'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 5 }); - T('-2.27599757196244338071018183231562e+32', '7.391713275268524384498161147662130450883e+29', '-307.912047884427915336373420680933095'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('-5.16676622139299374486206443403294147387872878649e+21', '1.04254236544521519508428636588e+29', '-4.95592926737949755093336377307446188075e-8'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('5.99385491814645422256534224820678004143e+0', '-4.21892137854353683477642038221794837752673974e-11', '-142070789672.20913091969810090056421616210883875959308692799992255364155640025073556656333631768328163'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('-1.055898189e-20', '-2e-13', '5.27949e-8'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 0 }); - T('-1.82437065579e+11', '-1.0528795499040785286656252424780016895382e+34', '1.732743936337454125516261366910477e-23'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 1 }); - T('-1.16341688413351799246810589199e+27', '-1.47959980238064534054851281040415394460426702558145e+52', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 2 }); - T('-8.850870779843568233557260439e+27', '1.100898843176644673331602771778e-19', '-8.03967670118025745712004174403591219650847318239363008235259080536190121377456911295622498573057174389026268724112803081717056822402184260674e+46'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('-2.0486838175030549398886e+2', '-5.8397519e+6', '0.00003508169272573129245248586673690709360443891460525917205489500333053532633809323303615005'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('5e+0', '1.03893970491266913107075705230859813676241308906901442e+32', '0'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 4 }); - T('2.6645825683538625099506046e+13', '-2.475035960146816312944169309774717e+26', '-1.07658337545762466747712540367293153183665e-13'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('5.101e+3', '2.9362813207424995171954481770316312774011520265112971721437e+58', '0'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 3 }); - T('3.09522146247e+3', '-6.322338844352208994e+15', '-4.8956905643154253172146449654e-13'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 2 }); - T('2.45456642336136333470644201140274e+21', '-1.7665776756829023068419137351023e+25', '-0.0001389447210359718051750387241676849475724303613868783563044569855208379238649595959961008410614'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 1 }); - T('-3.770212335285972630720190882176634746e-12', '-2.5499445673108723e+12', '1.4785467823961262573670322463361037790776919446498014897730298449781287869e-24'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('2.476448373899395757500081721167316e+11', '-1.41441100788459721407617214e+26', '-1.75086899e-15'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('-5.123605791097145953620816077425138174533e+39', '-5.161957851055049432560687119883616458e+37', '99.2570249299872775079007193761502534993170993206103026117202574170143402576775679'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 2 }); - T('-1.07e+0', '3.166e+2', '-0.003379658875552747946936197094125078963992419456727732154137713202779532'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('4.380624760388172502727543101266542714218799e+8', '2.8539859748769352e+16', '1.534914606781508960228225419e-8'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('1.03185376622492461699185461110221149187354619102758912e+53', '-4.66836554686682e-7', '-2.210310559158022020717995733195170371794879219725235714169537138093590458084859218332274602123716755188973336293895724984370216596797796872773e+59'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('1.132e-3', '-3.5360931010016902090684381186243942579e-7', '-3201.2731782410695014796187705458888870997472249522934834804647189847'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 2 }); - T('1.64791690525897130868814615366641349762056564001558815470838e+55', '2.5065703696943209e-2', '6.5743891541330900063925297936228288417226716279853376946771667294962044558207808191203050254224291464422781241518640384073597991915651571326355242e+56'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 0 }); - T('3.38184385415090507322657124511095e-13', '-2.98893892749152424348802013045240519e+3', '-1.131452979197914706533597111967529905515408699499510540200224536601681114519213e-16'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('-6.7086552499653551678849527015770387733867008e+7', '-1.125934173e+0', '59583014.805'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-6.1477060605422141925e+10', '-4.0751487010160187e-17', '1.508584474232673805534982137603051061e+27'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('-4.92866456197345918527960029e+8', '3.5253054471508670401874085606697278355872e+26', '-1.3980815665084509079703284821353458681071469930662035e-18'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 2 }); - T('9.372943232737349682249017198e+25', '-4.76297903763151442984327875778914124315092641313e-7', '-1.9678741305983641625380627038909928e+32'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('3.11995595606361445319764411442410560063419352229631157696933e+33', '1.926611002e+9', '1.6194010896983419454165683802235992840210062925e+24'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('-4.2333e+0', '-1.93228543824537736e+8', '0'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 5 }); - T('-2.077988683939533026878799694958868422e-15', '1.2559679525799138506768697356e+11', '0'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 2 }); - T('5.472628118790725072160395462e-17', '1.8394216999448616162205991250928342500257585707598767096444e+15', '1e-21'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 2 }); - T('1.97183964834324084618715708767e-2', '-1.183563978426472559556348202307999166603220724e-14', '-1666018638861.2188846148118824778364798100387831767130831918354560583075248793369'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('-6.7156819595674617902425234439062627646759819327223660222549e+5', '-1.160558974192102038079731367753229776383743281088203e+20', '5.78659258935327965530055724540823528e-15'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 6 }); - T('-2.6e+0', '1.14523521140958407390592958802743091726541547863213250616e+7', '-2.2702759870610816491292081733743403311092671441137767872727411929814872668259859876363e-7'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-9.968928e-7', '-3.55431167717573926633549e+11', '2.804742213243753373062551581632669575e-18'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('2.798466628558250019024201982935823835137846503e+26', '-4.36899493141410715286514e-19', '-6.40528696528488259803927528587083864202698192127528510210166236949762009885690496529835355328787796e+44'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 3 }); - T('-1.56429950533148611685100071324288826962358389632991125386e-2', '3.0098625788874470832161522560211195790085e-13', '-51972456028.5309501512399451533455117001582657337602595605495152788391995'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 2 }); - T('4.6445e+4', '-1.45990335057432948297074977166147e+20', '-3.181374984976123624719804976138747439984032990177319139190081091e-16'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 4 }); - T('0e+0', '-7.57155021016208371740392308452529742790199336774116e+30', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 0 }); - T('1.9292073856068758133674002207184838e+32', '3.2470573e+7', '5.94140234484582644527831467808863058868717838764348260808332516953119367496224966525844802e+24'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 3 }); - T('-4.4795295995040994e+16', '-7e+0', '6399327999291570.571428571428'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('1.39559941490777564118e-6', '-2.00265847326725076969527530693283569078724707221943147622657e+12', '0'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 4 }); - T('-6.1738668683414668401092427633498363323780007724289657279e+7', '7.46830173074093955134587258638713582663298469146193e-10', '-82667614284097086'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 5 }); - T('-2.325747270546053710033134939965e+24', '1.036596847064418906290279664243163e-18', '-2.24363722225514453456879694388701211580798954492266838358381966735507418695200517650609572668956541758719298704712848818e+42'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 3 }); - T('-2.434716159901557923356094432e+27', '-1.85155198684344169731137917473241739e+35', '1.31495965395619527634872320165e-8'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('-4.3846999123997195596859391184949084199761e+29', '2.1037378011534457793532224037934723483879155585068e+37', '-2.084242584791535688102334572415166823167e-8'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('-4.1012281e+7', '1e+0', '-41012281'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 2 }); - T('-3.608701616354768017527895281763e+20', '-8.15472e+3', '44252918755699374.31975463635493309396276021739556968234348'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('8.96088778843661285914373662533075878804804583072488390819e+56', '3.72840970562522716336735003789750605891481473821380208269537e+42', '240340748360270.058243369991733585169'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 4 }); - T('1e+0', '4.51726314080705494668678e-2', '22.137297935256874186672219947578865542153'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('3.69177884233796707301171945975002982486751e+33', '-3.1390052719070526030604276539e+26', '-11760983.2496238074'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('-7.2911813676489950804782754070153e+1', '1.64038534404438707301917378448255735703029415200439e+50', '-5e-49'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('1.339063201286e-16', '2.58293063641981858147867855140764163e+8', '5.18427859581264555255972411406683090150699649846246e-25'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('-2.0997e+0', '5.8e+0', '-0.36201724137931034482758620689655172413793103448275862068965517241379310344827586206896551724'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 5 }); - T('-2.6270045091364068731963965317668854758926e+27', '3.34195446e-14', '-7.860683143888223040586844297593706515954738653141e+40'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 0 }); - T('-8.62524623e+4', '2.364385282468933993634706874696742382953147792992e+48', '-1e-31'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 6 }); - T('1.922984371006168736678235016756651363e-19', '-2.83456675733525280335e-19', '-0.67840504'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('3.563221766144e+6', '1.17682e-11', '302783923297020784.82690640879658741354'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 5 }); - T('3.8802320399344e-3', '-1.883103193470263e+3', '-0.0000020605519938520961541989864313495017497'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 0 }); - T('-2.227445290806357210625840212359403e+33', '-5.9090748325665548323697e+12', '376953305537829156704.044107421265802945219782803282653266957637612711648862'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 2 }); - T('-9.478840250917220454747445718439604350090832164775367e+3', '8.698053848362551e+15', '-1.08976564369070399791134258028484e-12'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('-2.8706196102300752993244664126788576654842903476676826546e-14', '6.4971552856568461156504599568485694629707821694353e+17', '-4.41827151117546800533950454713043927601087421e-32'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('-6.319964350152839916299595580927374522444058339e+2', '-2.64689600194851141564550615e-2', '23876.889554785683795430233754863239468065874797458344226457085'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 4 }); - T('-6.94086547093359744759775863049089443447844819786157444098e+15', '-6.772506087445494677489870991888473795e+6', '1024859244.320237420714894303442354821008569676223287543'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 2 }); - T('-2.33778299518251243651672e+17', '6.52328049745753203e+16', '-3.5837535977391594765534423031263323796886751901795937247777825'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('7.7623006117584625649538850225908879123607072045731908e+47', '2.131454276099432967515442679307846435424345669872741468e+54', '3.641786126401685458135155607358253667303753899779414421751e-7'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('3.1927516331890049645109303512747e+12', '-5.291380601653877878486797997e-17', '-6.03387258174374401655312821986927987582709138330787348064e+28'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 2 }); - T('-4.3050953153833046369747450777055925176e+20', '1.1593521248828129299763848370434825328311624159e+0', '-371336302662874126357.3731679805598750101318048489679393050959520469174733958559116746'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 3 }); - T('6.472461969778376536035575514e+18', '-7.373e+2', '-8778600257396414.6697891977675301776753017767530177675301776753017767530177675301776753017767530177676'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('2.24386383283259431854801613845e+11', '-1.64591252477114491167023659553694428182567271511443174764e+19', '-1.3632947067734302885180051880234176510177446939229121866972431565e-8'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('7.701421e+5', '-5.328049264e+1', '-14454.485344263138179572207499018349917419232030584317810466851569261316049272925791776'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('2e+0', '1.11619734175923103617821885323e+2', '0.017917978525623556917048553290567159968240292293'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 4 }); - T('3.335227693371498724210721095549003172639e+37', '2.519779376380890283541613854411256133e+2', '1.323618934512362296969311570540004089366698452248304997459977762621381392610839983194581974448e+35'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('-8.2034346003860483e+8', '5.97734590961091611644951317196450684971281766e+8', '-1.37242092467759410016133874325904151090224477'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 5 }); - T('4.383795456267658003368742480708788050320201697533e+25', '1.27599320141819368527136961645e+7', '3435594681378646313.386029937'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('1.0663693443559747154498197511057191036977786984031126e+9', '2.137690935637784731792281e-8', '49884168313499495.957995301438081176868409594428328729161790097972560815025899'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-2.5954644732393251427556661047954865097196e+6', '8.94316591102e-1', '-2902176.36468213878138607399389519651921820374127414932235114574668578762154'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('-2.4460338813368045e-14', '-2.30060100563041292734e+9', '1.063215166537119683850198426446423763056666282668736147249195e-23'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('-2.085408775652955533992611775265132764e+27', '-1.03734171017804781196616942456032865e+21', '2010339.26929923508598166281122719665716417682354550312432111861056'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 6 }); - T('2.2812e+3', '1.8e-17', '126733333333333333333.333333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('-1.1941893090812467237205837102655629290327693093206661722e+27', '-3.007667390443100768153762325942e+23', '3970.4832817478341729541'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 5 }); - T('-1.451096475314355e+11', '-2.842651296597428922871581313773483473246203287142540885e+49', '5.104729085312980013504348524670312534735969530969413764945e-39'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 4 }); - T('-1.93306769927e+2', '-3.7875274746099150677119085503890525172214364662560238e+0', '51.03772084106374591472101865472280084184498490023'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('2.567668008558950331923618839869163071492e+16', '1.22704393078683969008e+4', '2092564042847.624770025016076774486914902667934494382'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 6 }); - T('-7.8290296e+1', '2.060802496254917618480650272974079e+31', '-3.79901985475446692493975191032e-30'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('-7.241388424659274e+7', '3.64340144411138971044915337158194266796511092768186e+46', '-1.98753515e-39'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 3 }); - T('-1.252970090094676733024915840585797801524115856879594636151e-3', '-1.96417633845027664170996827332885514436291891e+44', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-4.9165732284210953881992786006735147785863930531931834731e+2', '1.1054041200516669445635945374469136414958513654255611868262e+32', '-4.447760904121918029520179772115058244822904147134477675938243925901035e-30'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-4.771189988e+9', '-6.91299203676923276838686997383079770032024476863302e+18', '0'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 1 }); - T('-1.418818101555744076041680063386509463305215e+11', '-2.434204806919664765677473467404091128071896514285407289e+43', '5.8286718419193757177665889023525608566091337694213024542585159e-33'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 4 }); - T('6.19772e+2', '6.6554434580304499543493945147e+9', '9.312257010495429288814278909016558152501675794594619663e-8'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 3 }); - T('-2.54755724281e+11', '-4.509102422405437459447209951680532146e+36', '5.649810104448622201842984598015224369154494384e-26'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 5 }); - T('2.06e+1', '2.3e-17', '895652173913043478.26086956521739130434782608695652173913043478260869565217391304347826086956521739130434782608695652'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 3 }); - T('9.3378534497433169089840956174329076805072e+40', '-1.165305163604261463e-8', '-8.01322584108488442258857292049398253673344741686087923293108609289045442882935216e+48'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 6 }); - T('1.03156e+1', '-1.806e+0', '-5.711849390919'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 1 }); - T('1.026216765422282122857015285384426588659492743264435122e+38', '-2.9367e+2', '-3.494455563803868705884207734478927328836764883251388027377668811931760138931453672489529063234242517111043007457350086e+35'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('3.4333084480440073e+4', '-1.5007409672816427894791736741559280675121952e+23', '-2.287742203948032294950234097261627090622812e-19'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 3 }); - T('7.611290444757686725409555118538913880791248834354694099e-20', '3.05612e+6', '2.4905077172223887561e-26'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 6 }); - T('-4.867846147504492163356591296025380497118545e+12', '3.1591106598286187017164466940749639009410821808141774185686e+54', '-1.54089130507652812508139410952477653472655955902198252e-42'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('-7.22389890032951929622130657135550558e+35', '-1.790129005921703733489095605888e+14', '4.0354068765061262788700751829235864691220253e+21'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 3 }); - T('-2.419660306703718705221304462202646563709e+13', '-2.886954712625003679288945903363117e-17', '8.381358724202531588637527878906073340123629889296798148077133200101643812605387702349267947702885704674220681301140675018662297329e+29'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('8.594037006054988222214634606869e-16', '1.49572043553e+5', '5.7457508782446635869790486e-21'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('-7.61558972778941844313837208e-14', '-6.668304659667249764494426352460214954e+32', '0'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('4.5268069455019779699703165452e-5', '-1.248309125682906023471317531592710811193509e+5', '-3.626350919308966105614e-10'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('-9.63388594189e-9', '-3.44326078074231256136088231e-16', '27978961.0934234454720924071'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 4 }); - T('-7.805746370509002754816876016901e+22', '1.46212572783957148655689e+16', '-5338628.6978498958611'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 5 }); - T('1.3002187274579276220236551440051201715160580954e+7', '-6.732610466921588678579537665011056061958240950695061575e-8', '-193122524145146.0634961359'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('6.74e+1', '-6.129934015162884178884109223830016118548182299338688637e-15', '-10995224391205628.9733800570760878468256941295607114376650304969159553390392160724523'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 5 }); - T('1.3039934895940597038720258637834e-6', '-4e+0', '-3.259983723985149259680064659458e-7'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 3 }); - T('-9.93617312617723091329242396241874992e+25', '-1.137770003094008544700705447212e+21', '87330.243363396635485012766500806649145754612598809840164051738672041'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 4 }); - T('3.748586386693786355e+7', '9.958946687501428806663908114124313441e+36', '3.76403901368233782564608598328300953e-30'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('-1.37173999625143922621220206e+20', '8.482538739549862861187373e+19', '-1.61713378313935'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('-9.80330108234652944668092642844595838209383072624e+8', '1.2035962e-7', '-8145008336140085.3929922'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('8.82525807878e+11', '-4.01956964028937251798011791712477184451480520373296930176e-7', '-2195572876837795388.518407615585317'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 2 }); - T('2.717811832453550934e+11', '6.33109033088671696038824807379475780232282e+29', '4.292802172154288129760309517506757508349e-19'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('3.5435685185374257067408e-12', '-2.406774391297e+12', '-1.4723309884595424894432142396164316553233259819777483178948320252362344869676e-24'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('2.3553e-2', '4.2058837490523369145172742434125536e+34', '0'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('1.197996303657042339814794e+24', '1.8840178058646547298362779e+24', '0.6'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 3 }); - T('-1e+0', '-8.518135473048e+12', '0'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 1 }); - T('-9.2476258287508948769849911825604e+30', '-3.59179774375776611810787561600558390217353607056e+47', '2.5e-17'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 3 }); - T('-1.15838265382926020882486075537597e+18', '-3.035820487300015808291852943955864894470533542614e+47', '3.81571525284585352772029922016620355476139131208055e-30'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 5 }); - T('-6.41966728868477146382390929334918998766693410069e+47', '2.037427223666932865191e+6', '-3.1508694956626448508186544515625341736856563329256024107333593788787339757e+41'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 1 }); - T('4.3000534139367009431196546172162560687918e-3', '2.4338788407485078493524444811559606216885419006853e+11', '1.7667491667803296748936306144689339926467136514110846e-14'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 0 }); - T('3.254769352816791766525e+21', '-1e+0', '-3.254769352816791766525e+21'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('4.11e+0', '2.00145e+3', '0.00205351120437682680056958704938919283519448399910065202728022183916660421194633890429438656973694'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 2 }); - T('3.99594657156145209e-14', '5.148241288760777922453255340965742473874108e-20', '776177.01802071281449507678418605475772964908173366724388048774815402612045478942351604235149'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('1.23840811876701293037728869684365282191e+11', '-1.875021965657457379046576706e+27', '-6.60476592515e-17'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('7.4785828075118405417362e-12', '-5.05793e+2', '-1.47858566795345932856646889143e-14'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 0 }); - T('-1.2276291520190505515628764326700617100447994041482458897e+57', '1.29e+1', '-9.5165050544112445857587320362020287600372046833197355790697674418604651162790697674418604651162790698e+55'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('-2.48261876e+5', '-1.9587291103900309275815669e+10', '0.00001267464064750459452327777539965371036412259896'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('-8.5405559e+1', '2.362777300800422974614550076641384551314945e+31', '0'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 6 }); - T('-2.4030311589271287499127806755807596113804917662488905e+19', '-2.216820899672964064774e+7', '1083998783700.4041715431719535013282249496709578696667143872009229778286930308283359689'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('-8.7556036328932664854e+8', '-3.48774255268939905564981478688654e-15', '2.5103927542306179058032934854881018447871662351646745367082834366e+23'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('6.19473091325856079485580014558544091e+4', '2.29472465104391503795785306551407117665646062694673181e+53', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('4.539272362927260859e+16', '2.60373683872605470938e+1', '1743368337158150.2614291257943325626704246865824'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 6 }); - T('-2.5190661882350518604315e+5', '2.9764919777064e+10', '-0.000008463205031636512477643734494'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-3.93143330771236e-10', '8.772022817e+7', '-4.48178645875535460317761277888842044036830963477e-18'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('-1.18566127366e+12', '-1.08843733304579336031580771423856202648296487903935109624441e-10', '1.0893243346790973938793245898039903048599432065740889354914100157570251852e+22'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('-2.55599076618851597975039483709131607328159951532692e+2', '-1.2989572165915307113796613794225e+13', '1.96772513639475107240111480235074502e-11'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('-8.725616078967545222621552525254167e-3', '-1.02e+1', '0.000855452556761524041433485541691585'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('1.5195666046173485833072613347969721382357841601293385e+38', '4.6051251677271179984907554502510250626476906157135e+49', '3.299729213152610349460152240524107596156618183660058195820552669914607216218e-12'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 4 }); - T('-6.52400628645105164569398974664810171e+34', '-1.35565e+6', '4.8124562287102509096698924845263170508612104894331132666986316527127208350237893261535056983734739792719e+28'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 1 }); - T('2.8341010111836986663e+19', '-2.0494623300535500796478588955931843257998422206822974459256e-16', '-1.382850989561563146987853054731684426e+35'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 0 }); - T('-1.07291096621168546094216412723781495611010329718735086789e+4', '-6e+0', '1788.18494368614243490360687872969159351683882864558477981666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 95, ROUNDING_MODE : 3 }); - T('2.200160592738870422e-10', '-1.55104286712903207138035554666485613833638793196844989766e+24', '-1.4185040525742206361824038134332655939326592620889107896510832e-34'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('9.43221843161602347089284e+24', '2.03822495757641152508305608519546e+13', '462766310291.459409510667241425206757049151840375346446691394508861532727110987023088301062173273666587212'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 4 }); - T('2.54594354301812923875761e+12', '-4.362128518310639171207137240232835e+15', '-0.000583647073288001093147516029271358139773488089544323531387977861027019365915069497919'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 0 }); - T('-1.312535887571796e+15', '-2.50694553471368697247940992877537713716e+14', '5.23559793939319862284452444041271965995044450881003999889988936858474788592653648849'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('9.160537898038173611e-19', '-1.749250692921071105580953085943320435133449e+12', '-5.23684e-31'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 4 }); - T('8.74304e+2', '1.4958394303332805315e-5', '58449054.24141685323587723706446843667064082'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 2 }); - T('1.149690754540849801970244e+9', '5.33424364724494e-15', '2.15530228945325456689319460071246740231652e+23'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('1.52036398023914987678544731738470919315e-7', '2.306213569985097478851e+10', '6.5924682779876900844839345632e-18'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 2 }); - T('1.24378069e+8', '4.1673915118468168582295976845979854465864e+40', '2.98455445442131606187163203923e-33'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('-1.6e-20', '-3.16903991336982e+11', '5.0488477385525548378691228e-32'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('-3.681565417829715699e-20', '3.761610697809957544165820956356128399105789e-19', '-0.097872047736709040540219186410191636447173138565591841465010993285099605'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 4 }); - T('3.8675649644779855400200074863587720076e+22', '1.99925315757085184622870398543060944556080078370112389e+8', '193450486739617.531334401520336741154357027245584052202806451498498235563011278081404636200650538677763'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 1 }); - T('2.654941913274616980869188491528784899593179588052455361023e-20', '9.23775143365037698062e+21', '0'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('0e+0', '-3.28580415207978749946369316279805006e+3', '0'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('-2.871227051513980569774531668338334723925740635186427e-20', '2.5088319275522727744893526485872368581813234104846e+31', '-1.14444774876381475366e-51'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 2 }); - T('-1.84257e+1', '-2.56683117883903468757687430620012114253414142173771695171507e+7', '7.1783840526410680753720705367048383099589747041685093e-7'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('-7.794889203370073018e+18', '-3.1769260301e+10', '245359480.501493248097391387860000272406090605'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 1 }); - T('2.317341053773726223383054090558480273585529903382267e+44', '4.155777340790218902e+10', '5.576191561151072222997412743341318687918759951904311323282926966690953278318632e+33'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('1.10010154926e-1', '-3.6072763850557643733815756e+19', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('1.350288081958066e+0', '-4.847410911095431834554e+4', '-0.0000278558617522467065325'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 2 }); - T('-6.50042358522661157072091988416306306478e+31', '3.8333036059305455577020624e+4', '-1.69577582510546145739230671318464135140175469540459227358356058957486937758932706134205317074837248473868026672e+27'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('1.36e+0', '-2.8327912345373157885262e+22', '-4.80091855488295776794718751080593163920873042987e-23'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 5 }); - T('-6.195389792e+4', '3.36473799030872522e-2', '-1841269.605492091714387883371927994768076187706688814118775174048438175199893538725'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('4.625556775717785777112e-10', '-4e+0', '-1.156389193929446444278e-10'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 4 }); - T('7.300501550784771100022114775062283197124984e-6', '-1.789830297010992867212295806931569871743997584e+32', '-4.07887918925977e-38'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('-3.630177946103978927371470378624973706194e+18', '1.8591318200280351885339835717703760834471130467668e+26', '-1.95261998476753351355327157301832545842513128559393991870081179845678161296140061558e-8'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 4 }); - T('2.2815156001968212792834895584154412256126281397520368758312e+24', '-2.1937512878531702705686440267359115e+24', '-1.0400065006592147251571817170169174462321371146353893813957806545260735065113'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 2 }); - T('3.4571934059069013019435589203810314871094225e+43', '-9.39763294687833054779228671932e+17', '-3.678791697280854609444242913844209080201512252076146691809061562791421606637866159526232743228536840427e+25'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 2 }); - T('1.9461010869164739226626405589006235e+34', '2.5792576e+7', '7.545198614192215320651339978219405072219230836035919793354490842636268668937914537888732013428980494232138736355763768e+26'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 0 }); - T('-6.6416115718502371737689145e+6', '3.375e+3', '-1967.88491017784805149'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 6 }); - T('1.744750593613404456767141715737693e-16', '1.4317299845179991126146202592924377598413825069454e+49', '1.2186310355e-65'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('-5.80010634931161813529081064738976468762508e+3', '6.6789535858620946e+16', '-8.68415429864521491901927618746e-14'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('-1.48433766042292013471718e+6', '1.7261491566234060946272407869824616924844e+30', '-8.59912746e-25'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('-6.2058842273334585415823303391242318e+7', '9.17574511064245210813813e+23', '-6.7633572560070222e-17'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); - T('-2.19423732087131489042819354467114757746220503577701405316451e+59', '6.933790312393479218092118224313838277164113700149112282e+7', '-3.164556789306604801927484142650372485751796661611641615170438271529300481232738799146833007689003733995926792449e+51'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 0 }); - T('-4.8596654346261470129468786343752035258038945e+18', '-3.989419854e+3', '1218138379131390.1183956153827210595532880943295171'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 1 }); - T('3.4657710555410879564e+10', '-2.1345630067049445832400422409103197511309714885e+38', '-1.62364429846045e-28'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 3 }); - T('1.074350964760132842392393885269756423775654e-17', '3.8e+0', '0'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 5 }); - T('-1.159851247251664059745405009972046978744561e+42', '-4.94451805051793105145116805624176249e+29', '2345731647455.855346481131417078370805922988147116122854145123521569271033584294263583791793312855'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 6 }); - T('1.961616996619820680858813761e+16', '-3.1514041869168032547885639497868503814968209264995e+49', '0'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 0 }); - T('4.3936700221156577588082649637896333973205815e+43', '1.5106078132527191296858e+14', '2.90854448359761854896552174179015456397898024594434e+29'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('7.135077743563996988982814477474349093994352e+10', '1.7604916959107301173018751802944135e+25', '4.05288917870919507623436342605608693431099049e-15'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('-1.295217838986670615091372685856015513e-20', '-2.918095994529419274843162797351552797775993276731e+42', '0'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 2 }); - T('2.22187462704e-4', '7.86941305509437913938e+5', '2.823431190465e-10'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 5 }); - T('-3.148073729755592254985341931849309741372764e+40', '-2.4290723320660894611308575913750920007e+35', '129599.83480928061645442210620015337560182637567543129937446862963952123742581301832679'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-7.01854724651270991249345189104908549916164874716164064e+53', '-1.2584514942472849577e-4', '5.5771297333241273281058084105457199649806654778426853661423848744535491362717825111677770601639704295780527058262131220382137e+57'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 0 }); - T('5.847271126e-10', '-2.5750707057007324018874e+22', '-2.27072255261e-32'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-9.782927912636599178664895684986235898e-6', '-3.12022627850579506500901013e+3', '3.1353e-9'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 1 }); - T('2.928167887475868128827868066289485339e+34', '4.83877541238771516830441e+19', '605146475692896.5855371210420533689019126949293544682368286'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('-6.9919462282490640422034163977e-20', '-1.30056067947581180906900911088564748e-3', '5.37610150651882922153766497829221817e-17'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 2 }); - T('-6.7567689e+2', '-2e+0', '337.838445'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 2 }); - T('2.12e-7', '3.99264548449252e+8', '5.30976268299828737896772492413724556977569206391730725088324617023e-16'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 5 }); - T('-5.32496920242441489746306635603059127214728912512168616119671e+26', '-1.08095512087628410462272104218817e+9', '492617047607646283.466007328094459676181866858371136511364260482766574756050547882148881168'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 6 }); - T('-4.71159004872816222667823e-17', '2.9301378836492897884560643409947731074169831528192e+25', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 3 }); - T('-2.9535897157268262524204891318916154804337780434e+24', '-2.099e-8', '1.407141360517782873949732792706820143131861859647451167222486e+32'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('-6.4833353011341258257553610498107e-4', '2.6961800003581528262033292178497221e+28', '-2.404637413033587572151384322827817243981923150712234205402e-32'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('-2e+0', '-1.4e+0', '1.4285714285714285714285714285714285714285714285714286'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('-2.720194684498461931305631e+4', '-1.960728402820127301397000736296392535626869e+23', '1.3873388485e-19'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('0e+0', '1.3933189499878001906261552006009387127468739620286e+27', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 5 }); - T('3.29167037734866404379510390582818275817804169e+32', '-1.4685615144961546168793728623179837038125e+40', '-2.2414249215008168330659302143750615e-8'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('-1.25012467890959337e+8', '2.61957520399140798433461843145457812e+31', '-4.772241991773310768424996904454751022445500981091884e-24'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 5 }); - T('1.49263050430373352175298534280392168767597579769645626e-9', '-2.043053549532317010690722944980754323290927e+5', '-7.3058804780002811179458878318088809200737776290170762835632616848636699e-15'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('1.179255029471894751e+10', '-8.4202818901272635990166663181340663088525402751041457346e+55', '0'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 2 }); - T('-3.7200780014e-1', '-3e+0', '1'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('1.16010205734992858198565515677547e+2', '2.66644688384e+6', '0.000043507412968948547888493129'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-1.99151e+2', '7.244158484786415e-20', '-2.749125387279150884816957099156235506079390332466748425115372177335552422e+21'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('-2.124112397746040612627101685e+2', '2.0374399781278993725e+8', '-0.00000104253986401983735798313'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('3.4263939461575248036041477751408871e-13', '-2.0377871463601904784953561458383001066141197717593893833106e-16', '-1681.42877546244477509059184282327'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 4 }); - T('2.77535711945304662910934e+20', '1.548e+3', '179286635623581823.5858746770025839793281653746770025839793281653746770025839793281653746770025839793'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('2.4582922047426939737395996833756540989840753092e-4', '7.499088769422419467069765488713e+21', '3.2781212228963011382416739307027640435997681965827588575961e-26'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 4 }); - T('3.9404778505315565430772478752e+1', '1.22012817194484965451308e+23', '3.22956058317262419952561912775635911e-22'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 5 }); - T('-1.885706272633402829872077358804e-8', '-2.3397684361151447e+2', '8.05937136139998531082149391787976591426841084103e-11'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('3.23998602e+1', '-1.96759690448480483187e+17', '-1.65e-16'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 2 }); - T('2.5394625074047308129076629659521032218171827525085e+4', '1.486963018731560141565052553769728153865855384388e-20', '1.707818200866216222275005139686826483208741748745e+24'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('1.04e+1', '5.6174581978e+10', '1.851371142213931652018460882261769912409120161730809916094753e-10'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 6 }); - T('-2.278216739851811573090234549305900165857725808543254e-16', '-6.17167696950635642700968026421152025437639884e+28', '0'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 1 }); - T('-2.600656256062268757599653130269627818785956358e+39', '4.174826974074446906113e+9', '-6.229374947063118665231142334365121752480404402846343520954031862574189964917604453799515078405526478911989499e+29'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-1.4252728700283e+2', '-3.6812771216831823241655821825104974e+34', '3.87168046011332498780205469646774508427940968e-33'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-1.2011385394562689623080701219787926535106034462957977874e+55', '1.484418621396725486414923462648023356077945356450275144e+30', '-8.09164289737950455063845272323937414798239250266548200102709e+24'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('-2.93880926075357614753407716e-16', '-1.3791e+3', '2.13097e-19'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 5 }); - T('-1.42160165400037360222355577402e+28', '-1.4543062639302850856563883443167927305675194942132e+50', '9.775118826473821468681927e-23'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('2.85461906793193446689501385665585837e+17', '-4.4696221966448e-13', '-6.38671221490443677597572001439233935527910546999530624152713656683821030982340369428e+29'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 5 }); - T('1.03198543240961786590361813596555e+16', '2.176179752393469927128827e-20', '4.7421883751771393857836343896161033683171195970822244332027946250906796856e+35'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('3.14762519071979379352084610662679e+19', '5.8884352287892950725129449989034436487279404963e-6', '5.345435703072118750380329048113484942063099851778247821469541821931979113704398843484733870677150619708e+24'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('1.0291050554e+5', '4.086731299779289549386928860705649e+0', '25181.61777495815'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('3.8693794428021087689923855170698458966201975691706399e+44', '-3.70930188348821084200721687483e+0', '-1.0431557107892662833674573194914702357747142747655923e+44'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 3 }); - T('9.87581802319693703161109938e+4', '-5.2021670380355478531094701154172344261990003692e+39', '-0.001'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('-2.817804158984e+8', '3.084936503603324417755852751488885700233098566271e+48', '-9.13407507e-41'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-5.641066606610146198560673010618169464452985470536036789e+34', '2.3760125293215658408844704320606672774112738e+33', '-23.741737625520294620465709755518390073824686461685402204481871579935'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 2 }); - T('-6.679046e+0', '1.845106957279212340082392243007094841333782209e+39', '0'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('-5.825921e-20', '-1.08640948057977360856019e+19', '0'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 0 }); - T('-4.42375562261132346786e-13', '2.01869003477516067451376981263436819679957126e+34', '-1e-15'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); - T('1.94e+2', '-1.17418924948163522529348163692664e+30', '-1.65220385117e-28'); - BigNumber.config({ DECIMAL_PLACES : 2, ROUNDING_MODE : 4 }); - T('-5.86326961013848701029433519755881197676016532174223776e+42', '-9.36010712113617e-3', '6.2641052439438088020441068124196496300925688441e+44'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('6.579537068e+4', '3.1587324304561876881013030138816973044900876e+33', '2.0829675234789595208208366200884704209340477362716667791623891427e-29'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 3 }); - T('-5.14323085660282445564529658412430694242126760047e-9', '-4.49408047569390365813647218807966e-9', '1.14444565121159505532245584477706636827450865713267892528524185238'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 2 }); - T('-7.96217993335335361547713357267e+29', '-2.140330649878680730191385354270339218534e-10', '3.72007004329198845830956963875400703051886347888092524e+39'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); - T('2.059721431717707761973659e-9', '-2.8585e-12', '-720.56023498957766729881371348609410529998250830855344'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 3 }); - T('-1.09934730228746907e+6', '5.481364942566032350401384950650899375860805155719017e+41', '-2.005608664641882790654622324670406476893754032265834e-36'); - BigNumber.config({ DECIMAL_PLACES : 37, ROUNDING_MODE : 1 }); - T('4.0936284699e+4', '1.03e+1', '3974.3965727184466019417475728155339805825'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('-2.13849871809837058001616451167138082883528869852e+26', '7.75656516657454818872746775810557e+25', '-2.7570176646150369356243789814970779668441179902219001674396388575493'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-4.118768662320701179933717900613e+13', '-6.2349170094235901589819084845537198250007593988899063598992e+14', '0.0660597190964290942784247690235913512580465933587631145646'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 4 }); - T('-4.034852421353510640903454052e-15', '8.51892268936e+11', '0'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 1 }); - T('-1.4572002514374007496208725914930149825676539748187990178e+3', '-4.006366399870811657901101783455228e+5', '0.003637211642660514734295607118454112262186510851305420710240982867898231241659230245572061692282'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 6 }); - T('6.8966942690317593877e+19', '-1.2038112368632337938726e+2', '-572904958671298709.96464906515014'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('-8.461437355e+3', '-3.891573761e-10', '21742970516960.477573741149499954190897835072539435800764717922045831164704473913221042503'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('-1.50532941108627429718843e-2', '-6.3348978698e+10', '2.376248903e-13'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 4 }); - T('3.526090095588159e+1', '4.423395682817525543658e+18', '7.971455299115771409943907878373597762273973108373522595538235592994381528e-18'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 3 }); - T('5.2556798e+7', '-4.1804308609669802919004377071909151694775457e+27', '-1.2572100758973687783532893770608320867050188431514032311205215076822741e-20'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 6 }); - T('-3.24409e+5', '3.1826471914339344874509e+17', '-1.01930556699198021827845323704637655861586721e-12'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('-2.070769093876e+12', '1.9236527717904300858266851920321362066341902001832626806e+17', '-0.000010764775869340713405544222410067272568269777366642283883872171552795978650799'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 6 }); - T('-1.2229148430910559578484e+13', '-3.101e+1', '394361445692.05287257284746855852950661077071912286359238955175749758142534666237'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('-2.359651921343667745965717771698188e+21', '2.53784e+1', '-92978750486384789662.300136009290893'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('1.646e+1', '-2.4145209e+4', '-0.00068170873981667'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 3 }); - T('1.999922587160297158837485889910674907231e+39', '1.042614411234913959613421862825633522199399109557092e+17', '1.91818045636978040252560846179469898304705685512372559740187879e+22'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 3 }); - T('-6.33e+1', '-4.7579684118790087075298295215414064690307114979377159909e+44', '0'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('4.21500110663901595e-7', '-1.946030919510743179539e+8', '-2.165947654983159575368935904e-15'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 2 }); - T('6.947422981451529252198084061668065785994211907670223e-9', '-1.5993103821004138529969973e-14', '-434401.168103924076311096604656699461539894877857160570581829666267958815429'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 5 }); - T('-1.25034047e+2', '-7.924873940601202214696320851303584878597e-1', '157.774177781450718558168102555891953783016311458964491658950739843440454'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 1 }); - T('-8.4498406847279762666441234862568898037259764190343267277e+49', '-4.120141456228256185267e+8', '2.0508617906685421282769358786879755733117466124413836514119965414326974436026195e+41'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 4 }); - T('3.96728163581235985e+11', '-4.0655871655362802118515147006216756066e-12', '-9.7582009050076456671844243444612881081088865779908045266507866486168759958860802512339e+22'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 2 }); - T('8.377935228073938470886902025082439214729937031686449147339e-15', '1.8705596758166772084e+5', '1e-11'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 6 }); - T('7.887362755738721033e+1', '4.222385514500917079172510078961227368351950079151224533e+38', '0'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 6 }); - T('-4.13697936763e+3', '-2.66192326476939722127533674547323772698922147813872741111e+20', '1.5541317146076286657694636800845922614912948050453986276342221e-17'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('1.78388991432008918449923502557602149e+35', '-6.8880812462399102542899021555788e+31', '-2589.821244187392845937108165933495359047193118764579479697030046497096699971962461956602938622734'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('7.310856231038743738006972578e+1', '3.953772959709131458834635874418352573710153840945305782009e+57', '0'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-5.43694520251045211677860851445256808564505958746497524e+43', '-1.88302420910384378014501617e+21', '2.887347478712430637686468592409563e+22'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('-8.84480314987915e-3', '2.485672907020868917970460002908114977851963191e-10', '-35583133.7457824729393195894031453473771800463059494'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 0 }); - T('-1.842664499858708e+7', '8.64280319632410385089217495892155003163e+36', '-2.1320218197753445082639445340341847150845768770852e-30'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-5.69289886131319105470231893741207508333786087939892543991e+12', '-1.157070028959235705673362382e+1', '492009880027.214447044738833785955556424955628517861704093425274445314155512550013741207185367473999'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 3 }); - T('9.1529892690338e+7', '3.69795147e+8', '0.247515126774603129121107692632861945048727207877609059050198947'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 6 }); - T('2.040936401972e+0', '7.30192e-4', '2795.0681491607686745'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('7.8342829198168303012269813436688776790363358e+41', '-9.97714065170314686896855609984e+0', '-7.8522326118350148371427659878203848146751958700610342561492551104312933241292324148141047829329380382042316261238416338317493e+40'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 3 }); - T('-6.224139150302056812162930383444020261998001661480334367e-8', '-2.200474704222804776662164e+10', '2.828543831182275e-18'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('-2.111907316853534443267945413030124e+33', '3.035193089358538579351137066159724155e-8', '-6.9580657792676627345697886401977478627195308884142417393050604155803650358753128456006840173551540452279962038443004363808443626319265e+40'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 4 }); - T('7.1019910621668866906001022319396116676509826589415e+37', '-3e-20', '-2.36733035405562889686670074397987055588366088631383333333333333333333333333333333333333333333333333333e+57'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('-1.263505371326162877793175510269241e-17', '-2.6295119435e+8', '4.80509462772920421912194866693230899181120224487773e-26'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('1.25753421623835120676356e+5', '-1.24e-4', '-1014140496.966412263519'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 5 }); - T('1e+0', '-1.6343267272956510340957355231089781279070615606828115e+52', '0'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 3 }); - T('-7.3343350211129444859698483507412686598373e+33', '-4.3843858592183644627006838292043613541538028979866527e+42', '1.672830644157877191339849787941151074468617542989663526075955647378572982443e-9'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 1 }); - T('-4.108611403904808302411892431161217780240728657750746689364e+5', '3.6824849477300703610724915340707846252e-1', '-1115717.093816610873677645590956733383'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 0 }); - T('1.401581623326732000821603376983279829245646625e+8', '-1.025090770212736e+5', '-1367.27562480721903'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 6 }); - T('-2.94568e+2', '4.14192625e-9', '-71118600916.662869117961721312638050955156432'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 6 }); - T('1.7759920185337547720817865596e+22', '2.350740762006532104979009412138827927354021658e+9', '7555031363891.4972210913734422163808480420697'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('1.0947348955799084189730995189273274351905325603416797167e+31', '4.153961824757862e+14', '26353995095843748.0493281532'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('-2.4622935887443704835158888971778206584895907358120324532166e-7', '-1.12906730198878908358403856082462293507622394677804e+29', '2.1808209168817285300617361646285948515975483824583722e-36'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 0 }); - T('5.7753573152354701280188037711e-3', '7.3622821751819861902677289036283647731671577315e-7', '7845'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 6 }); - T('-4.8205540868978450154671132067505596153705757e-2', '8.1183992929751288420984735186669192604024e+9', '-5.937813493688444827723808286658854244188750679714e-12'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('-6.2941336527302448612953596496278502611441e+21', '-3.5568500636662819918590062441096475503230146320989567e+37', '1.7695808201266888847503987500283022806912903932828369207190396972028315644e-16'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('0e+0', '-1.886335671350525947167498146176216809163432865841308760356e+45', '0'); - BigNumber.config({ DECIMAL_PLACES : 49, ROUNDING_MODE : 3 }); - T('-9.388865394241840862648843223003751545e+16', '-1.26262312206798400456688656413722861e-7', '7.435999887966816286693931782193008802332593057015175495574569295812959984e+23'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 1 }); - T('-8.774972002985035666e-10', '1.0096039769517326876506064168433248399882399907454446e+34', '-8.6914990464667622493530131032429473e-44'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 4 }); - T('2.0358122995416e+2', '-1.185788087652726874326e+14', '-1.716843271356773428083586941195529440001003234082441920090862215671473214969501034555e-12'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 5 }); - T('-4.81494682083685778756376680383503854821494e+11', '1.88469801436875758448943512e+5', '-2554757.72995363887411108098322566033139836436153539171984892227398'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 0 }); - T('8.425989871297069164847509809184e-18', '-3.51926008497875433972381873443330235632674e+3', '-2.3942504014584465119158723882331982396890146771587804121365542995034390598873e-21'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 6 }); - T('1.27444579556638727979295885015787844222933e-16', '1.978970526730892637344166773842383457668295e-2', '6.4399e-15'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('-9.605849175039525e+0', '-2.0607825364337260302e+9', '4.661262896599883622140312721859695212285726413101438285248661435001991329e-9'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 5 }); - T('8.98380237238777847268e+14', '-9.520475603e+7', '-9436295.7766068847859847826974154160856999362240789936300832512096087139145836220888218161846384'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 0 }); - T('1.43105051935057310084000077734625910751548015485e+47', '1.435248248460772139723819361148986308530557e+3', '9.97075259200141242877636239157217890998797798886339280131044746055797542831945114292189166994100617973599911868e+43'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 2 }); - T('-3.4034802881655461978766888034351860622311e-18', '-1.7981952473022468608e+10', '1.8927200999288802420575647573236761989046149e-28'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 6 }); - T('-1.43210402902042035558426e+19', '-2.69701938689138970149793193133529358653757062093087863e+48', '5.30995081452149713406531003230358760718136409882834788473858805e-30'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 0 }); - T('-4.842369180095923840828196486950285389348350886702e+13', '-3.6369207448e+6', '13314475.403456209626303860188948'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 6 }); - T('-4.595408078199452557501026049538472866e-15', '5e+0', '-9.1908162e-16'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('8.37359957427871905021486159553992619985284e+41', '6.592e+0', '1.2702669257097571374719146837894305521621419902912621359223300970873786407766990291262135922330097087378640776699e+41'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('5.12904053485500369e+11', '-2.356006590714538855034790956761608989302e-4', '-2177006021574603.617700507922417593'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 3 }); - T('6.015422454953036042240341552597696910116184712e-14', '1.61889975588901098009509941804921e-8', '0.000003715747335850140925748953013957471'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 2 }); - T('0e+0', '-1.46309763225394183731384919396993881995112568685128916575e-4', '0'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('1.480852744475266171384371266e+6', '1.513981551285759949212863278757677622717144544998283946e+54', '0'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 6 }); - T('-1.048704844895298764267e+6', '1.93834152691212568826528e-17', '-5.4103202677906697979269528e+22'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 3 }); - T('-2.3974993340594324786216049305189901567727128178294281171392e+15', '2.5500221621595942064232332e+4', '-94018764606.696934948388080256864169096744754729362485888099609799069392975272684'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 4 }); - T('9.9869279344481835661235709466239341269531092877823e-10', '4.5756874e+6', '2.182607127936271076149907213203405050562044358140003e-16'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('-2.7417e+3', '-2.585883427e+4', '0.1060256611482587146029146966647077706801823282654883576080090635887740658001440526653717557547113665'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 4 }); - T('3.815341923454329027881636868507675546064e+0', '-2.964570510035186895077e+10', '-1.287e-10'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 2 }); - T('-8.1735549810305097961598075249725560718718368702887e+39', '2.835116912708471284502428249232106162e+23', '-28829692858140619.92748633016109227282199'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 2 }); - T('-7.32981605626e+7', '-2.677690427184525475227e+2', '273736.500001868454321579249937084174751100655446811304267461519388794890747782155104943336466202375'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 4 }); - T('-9.16315973852115522938999e-19', '9.042919595827616506965819304445732730604125e+6', '-1.0132966e-25'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 6 }); - T('6.358523e+6', '4.40132300111923255492109e+20', '1.4446844729148626688667634730302332223061054105797893844168294564761836e-14'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 0 }); - T('-5.139211254201668171872995890983365e-18', '-1.5083548976487459847e+20', '1e-29'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 5 }); - T('-2.8171189907015895e-16', '9.21897171849502e+14', '-3.055784394098866960992360306205e-31'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('2.99789199300705852204601120743344e+5', '-5.47924104180702447191479787014077480048927716e-2', '-5471363.58873959984079548421500443497199597555'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('9.81875142583037809567952350607452e+15', '-3.4687305453795171406878237005224971585308082903e+37', '-2.8306469174751361585690876350308857981841849345008721637086100419586e-22'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('3.08707183854467667877929107971867e-11', '-2.35196612423659700350835514e+26', '-1.31254944819695515834706234783901960977e-37'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 5 }); - T('-2.8213964861859564875572540794222e+15', '-5.168452270204616617876498382023891751570689298634394e+33', '5.4588807996755646055239612145045168073595850093e-19'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('-7.0813e-13', '1.56e+0', '-4.539294871794871794871794871794871794871794871794871794871794871e-13'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 5 }); - T('8.14110403542517745202706485105022282210091784e+33', '-1.688350089087425048701536063780485447383159723854329977357e+38', '-0.000048219288689264374989622358741134'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 2 }); - T('3.25863096999194643003413683826719734e+21', '5.618007636999568e+2', '5800332040367778169.288168104147613832911027025215810963069876871784688'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 4 }); - T('-1.4805436682325022741525936347181e+25', '1.1607299682512709163737705286415115336e+2', '-1.2755280803708853363018579801475806040882834110865071562813129287335720726372e+23'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 4 }); - T('-5.34258251e+4', '1.781311271905240595172943e+25', '-2.9992413983243498668198433e-21'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 4 }); - T('4.64027469376348916497545810919e+23', '-7.6667505925746e+13', '-6052465953.774063335633809580856235190654'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-1.035229349852707396403267161937236208909910350243e+48', '1.920776186243e+12', '-5.3896406945652288898449103320672098745016258249914104904084266124e+35'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('6.1e+0', '2.18982168e-2', '278.5614945596848780855982757463612288284587629'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 5 }); - T('9.835509353291310001253779704e-11', '-4.2516886120831444413650359047292837460082152440653091592776e+44', '0'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('1.419584e+6', '-2.2456336913636681912199059228777e+4', '-63.2152966647892206941805953519556072'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 1 }); - T('-7.48337582900726312264340518579849657238637691523485724e+53', '4.3873595e+2', '-1.70566734479070227152422890939265327411313727886553569179822168664318481309771857081691162987669462691625794512621999633264609385212221610743e+51'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('-3.09214419956268660769745136200171129e-2', '-6.55586e+5', '4.71661109230930283395e-8'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 4 }); - T('-7.47e+0', '-8.3129091173899363050150814171607681446853871716922e+11', '8.98602389911055526387557585983734018562027115035296874467136654217e-12'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 1 }); - T('1.5422046315165910135380507050728981458652385138161e-1', '-2.49726e-7', '-617558.6969384809805'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 3 }); - T('-6.027637019608787827e-12', '-6.168e+1', '9.772433559677023065823605706874189364461738002594033722438391699092088197146562e-14'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('3.637226529475938420584939413779884e-20', '5.66313959899573343471844023e-14', '6.422632650837252791397005531104336453119706157765433798349495132461747790991253275315193204e-7'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 3 }); - T('-3.63374636457206226704031388321678018796105838933222e+50', '2.23192771280273673e+10', '-1.628075292818957763041131704226551253202464586433286576776793553341257498175531583626214149783436764e+40'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 2 }); - T('1.447686237310682627523628e+17', '-9.27654554283e+6', '-15605876461.5199239744'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('2.71453219554577365344652764796906e+31', '-5.3518882960376187325270737493510349390472656e+43', '-5.07210174314649606349701434887509976007194300223113568e-13'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('-1.393286404513102609558473024204958251590327e+13', '-5.855484674573725995e+17', '0.0000237945530036680115402924601438159362983628669729'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 4 }); - T('7.1103309548815651860677898639079346939568246446974791588e+2', '4.8769843784483012350610212859958724322732926813158586488e+29', '1.4579359709050047503906905151014730519791327462580222805885996817122e-27'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('3.075599596358771249670517627321e+12', '-3.996877616428674653242322790899941288312991285277372896e+9', '-769.500568072661712562729357197142813533506324140459'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('-1.261205984992223545369223006225826905349496097e+9', '1.620181828427829772e+18', '-7.784348416103738355015056096212753317762213e-10'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 6 }); - T('2.00315828570172542523825739959349049373689988751035915e-12', '-8.60950076872653662809989252228863051954124324893e+4', '-2.32668e-17'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 4 }); - T('4.732783706338582085066293769921629336210353e-6', '1.30387863763199470335371599109946688305257044e-19', '36297731780726.95627843902'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('-2.618107512e+0', '3.1009576053821111482452309390112e+30', '-8.44290004950708565638811123268641903928980998484442e-31'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('-2.1304372261326862138082080606924013109809844300767e+37', '2.568536980894e+2', '-8.294360727448706480271480075619277212900477871427793413721282178360217236407460947146546402166648002265872258e+34'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 6 }); - T('-7.7281100283375912478317107816593e+29', '-4.21076848235299162110478588819217733599092986582e-2', '1.8353205740770381455375610012735730324744466865758076951e+31'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 5 }); - T('1.214288115112062302e+1', '1.220191369594032493649996470678162491331918075709845175258e+58', '9.952e-58'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('-1.06900256342e+4', '-2.11663631027871906270848975313e-14', '505047824337490243.5542612133960286734567711128278517'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 5 }); - T('-7.68253410247759654823769087582989853109e-14', '6.88782057679461630572026058847263346e+25', '-1.115379533601732685983818924e-39'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 1 }); - T('-3.127314521519152147318e-13', '1.7562796368659513842290434961976e+5', '0'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 2 }); - T('-6.52236449271294278465e+20', '4.2960112422402385396e-4', '-1.518237296164925555810052883406647891702984011317411762992531555858254e+24'); - BigNumber.config({ DECIMAL_PLACES : 64, ROUNDING_MODE : 1 }); - T('3.3906898910846761551010975837e+4', '-1.26278246991633428e+14', '-2.685094204158002363589830198713041152886030846980192755e-10'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 3 }); - T('-2.57818822600894851e-17', '-4.099305302080100833321083658448116029e+4', '6.28932962055962148397265177133023154e-22'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 2 }); - T('-2.762537942145269202456800168866810678263800547e+2', '-5.5794642063741285950032443049e+28', '4.95126026436243150232814545310867295193e-27'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 6 }); - T('-2.2220067359042534782306082679695109e+11', '1.6627392333290843252114537311353886966580422528954392603276e+58', '0'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('5.521683785579646113987296059772570849e-4', '-4.2913090938318336417419787109e+28', '-1.2867131369111366966810237114048549533082295727403624926e-32'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('-1.1330391734902077792296703145369409541576832e+9', '-1.62534341919687537646390049102383023e-9', '697107552845706921.539726219737110667961829115633'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 6 }); - T('2.473822379563497271686201797064009750024074417793299e+34', '-2.01808576030533418e+6', '-1.225826190453477376997876172521931063596401405891474069853839906134571344e+28'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 0 }); - T('2.5303793265608409202121202350210168e+23', '-3.74835746663196393e+3', '-67506350423789200447.46795099178037550119481486011217189107361181727847200917369894322869609769'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 5 }); - T('-3.5e+2', '-8.1277456186986807687172477738133e+31', '4.306237134129671395535982088e-30'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 0 }); - T('6.26741953491444e+14', '1.46879850802e-10', '4.2670383314612539308017699330233555774687190031177684311329955622322433e+24'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('3.77109858829632667366e+6', '9.04407253151767774269062602081257111546091913879693653e+37', '4.169690783830436600896909869720047189655e-32'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 5 }); - T('-5.33759542e+1', '3.9254295722506153140124716999039738854029315340346842450064e+10', '0'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 5 }); - T('2.7853980946488063151300371324976142755438e+40', '2.506164302080989e+15', '1.1114187893969904686622434666819892478943674510939079980971476965607620825505000907544e+25'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 2 }); - T('1.451043309976216445610153251732462926744256554271133783791e+17', '7.41721005576179e+4', '1956319558253.61343090876133233530811364932433139975554534744'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 0 }); - T('-2.072406664008045081e+3', '2.792666557127411860644489740802167608215209346715373797e+42', '-7.42088832166114617933e-40'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('7.384e-9', '6.3032089502188606e+9', '1.171466797042102193664274335794202208750112818022893729166287382032e-18'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 0 }); - T('-9.35958558496231459721530506986e+22', '1.5322681929812264284749509548e+13', '-6108320741.65295265223629647386189336663113192202'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 1 }); - T('-2.24014624554423389811452741803132e-4', '2.0565175971296507937343506885052795768498421551e+15', '-1.08e-19'); - BigNumber.config({ DECIMAL_PLACES : 78, ROUNDING_MODE : 2 }); - T('1.5770237677964810017477151767788e+21', '-8.54123834256875008633168521475344720149263767688138754686e+2', '-1846364314571036958.678647267777970781569480978902586909530172075995984569742629175408491216602985'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('2.79199995197752e+10', '1.71487499012888548514204330386066220510264e+10', '1.62810698625191369851034'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('5.323153894454409490553769852429203328e+28', '-6.030342e+2', '-8.827283584338018458246265058315437711492980000139295582240609239077e+25'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 4 }); - T('7.9518637909638206148115e+22', '2.703335682421301079590396752958261171133813554763659e-15', '2.94150069585200821391486581040338326583968580475156088168501517339405393235746268e+37'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('7.545889908678269e-16', '2.768050039756865098086378735666300998213741845102978484e+30', '0'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('-8.7739572453231244975835179927171213809985647391042414e+52', '1.72059865043563691558140227646933386936e-9', '-5.09936308685448154396527818485662863105492320887039977042649830179435005e+61'); - BigNumber.config({ DECIMAL_PLACES : 79, ROUNDING_MODE : 4 }); - T('3e+0', '-8.22592249104333739875982e-1', '-3.6470073760924704277112396365477092237792643308701857467008212355984275209879073'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 2 }); - T('1.0636690860267415531231769812428010959148138741441452e+52', '1.11600369794194131724e+20', '9.53105341844555065087419949570868503012652317123623801062045754948248088657449086693921681642325647683254809938321207941421253407757e+31'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 6 }); - T('1.3289530386979555936177503e+3', '-2.033e-18', '-653690624052117852246.802902115100836202656173143138219380226266601082'); - BigNumber.config({ DECIMAL_PLACES : 67, ROUNDING_MODE : 1 }); - T('-1.038385084749453e+3', '-7.98067150071936701490588681029e+29', '1.3011249550314837072393526477353924717272e-27'); - BigNumber.config({ DECIMAL_PLACES : 26, ROUNDING_MODE : 6 }); - T('2.14775414921936585323587276274e+29', '-4.91873e+1', '-4.36648108194466021358332895430324494330853695974367367e+27'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 0 }); - T('1.2567973e+2', '-7.856923e-7', '-159960495.9855149401362339938930291158510780874395739909885843'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 2 }); - T('-3.6622319707770708822522951468817e+30', '3.656425313596689513775283919805799908329e+11', '-10015880694072401484.0955229421703431721941247711210456195812948764079007519435905440229821531467'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 1 }); - T('-1.71282745930071396282535980981656663328350069966145739055e-9', '4.3e-5', '-0.000039833196727923580530822321158524'); - BigNumber.config({ DECIMAL_PLACES : 39, ROUNDING_MODE : 6 }); - T('1.7119045396419008400413343130033368266876039e+37', '9.7540924600109638962e+3', '1.755062858651615249647388676534433549015738989093280937133672437598343997e+33'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 2 }); - T('-1.1757530693902304387459376726656306596014299349464e+8', '-2.36900729151398204933354971996709e+30', '4.963062264949094862684756523944872810528016135331257285976e-23'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('-8.65095140446550937314480735074e+15', '-1.549244905882360406819969208475918262360629753795329e+52', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('1.1955e+1', '-8.3088677e+4', '-0.0001438824209464786639941324375642664282643470180660115'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-4.468624569952628910134461106488333506316952e+41', '1.6984769356286874427603898121908162573708e+38', '-2630.9598183024943520710960422578191'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 5 }); - T('1.609438374637232251e-9', '-1.1614e+0', '-1.385774388356494102806957120716376786636817633890132598587911141725503702e-9'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('-2.09472e+0', '-2.1861989602310764423155108389064835971067037971421668638758e+2', '0.0095815615967'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 5 }); - T('1.9258712316623456848312022859e+22', '1.7266625389642846412968734570371957657e-4', '1.11537210555199379330974948807628766827486861972553536365e+26'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 2 }); - T('-1.1337e+3', '-1.1e+0', '1030.6363636363636363636363636363636363636363636363636363636363636363636363636363636364'); - BigNumber.config({ DECIMAL_PLACES : 83, ROUNDING_MODE : 4 }); - T('-2.5591414805373051642382850492440071030443358585e-13', '4.35706627e+3', '-5.873542705002981660497638125765773819741180706209455932833447584904e-17'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 0 }); - T('-1.25613398729978160245584922259023879602040016e+2', '-5.13386334045428147107910905292885089491972852226657825592e+56', '1e-22'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 3 }); - T('3.234484877844011920715828817817e-12', '-6.019346634481209758868677e+8', '-5.373481665461159981210755854e-21'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 0 }); - T('-1.5027e-11', '-3.7e-15', '4061.351351351351351351351351351351351352'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('-6.1e+0', '-3.6447856210569630636497103311780875864519602982229700446e-13', '16736238106182.6112278499938760815912762242062491581632413344974496636237303042133510924299460319'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 2 }); - T('9.75662282281192e-20', '5.985852528528966395302090457416703826321725395934423e+17', '1.6299470754268025580362743789465e-37'); - BigNumber.config({ DECIMAL_PLACES : 42, ROUNDING_MODE : 4 }); - T('5.604825650503286068631433167e+1', '-9.305749535486041558944682995387991e+11', '-6.0229706689720664863014764391915e-11'); - BigNumber.config({ DECIMAL_PLACES : 11, ROUNDING_MODE : 6 }); - T('3.7431314e+4', '-2.392568982213598249449011107876184466e-1', '-156448.21227001217'); - BigNumber.config({ DECIMAL_PLACES : 57, ROUNDING_MODE : 6 }); - T('7e+0', '-1.1045e+3', '-0.006337709370755998189225894069714803078315980081484834767'); - BigNumber.config({ DECIMAL_PLACES : 100, ROUNDING_MODE : 1 }); - T('4.93378864967962446907506937527311536635683791413e+41', '7.525850766108004307875561045756e+19', '6.5557885786129327670937629942817841888955144563221611526126799543788215289326409947589027585070936969510766374326411765874e+21'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('1.63422955175006958166513854885209386483861856935343529352e+35', '-9.66349246523425560648983043983869582551620345e+13', '-1.691137606439323420220329379736035181700003167537521018776107161092670305077229257476923828508392563262361909516126e+21'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 6 }); - T('1.495e+1', '-3.07182848020739641490746915491908811922782217304689e+3', '-0.0048668081881286032707593791164998482196454255205826232850685249135503912'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('1.259062985419626e+5', '6.9977635329877923006e-9', '17992362552468.982571654491210293172532864322672755501964483658087290004741310828649074'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('2.232711537863227029e-16', '1.434154444949708573200667470524103058046097898258998725507e+58', '0'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 0 }); - T('-1.0751815403564395827663050799878971629329089299025396757e+20', '-6.7886864e+7', '1583784368587.7721244662370616911942830838509934742893348262485655545968362892709258156334928066'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('-1.26823286542697996624791496849e+12', '-1.16793499550969226361833557823609159e-4', '10858762433721897.7307394483624331'); - BigNumber.config({ DECIMAL_PLACES : 1, ROUNDING_MODE : 6 }); - T('-5.7713011483807317754531570826e+11', '-4.55900876358621281e+12', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 0 }); - T('1.38268797477236323560159318494411944404e+24', '1.42312477553014673043161482450533329e-16', '9.71585906272540399036878915395275312201434618904599449140527428820711950864006e+39'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 4 }); - T('9.3815075054718519832476108772926868476360928969089361e+4', '4.857002415350223602938997571365002900982479e+42', '1.93154268892727741077333196519480753687344966025561425e-38'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 0 }); - T('-7.749096154328703865887694942014525e+15', '-3.45112372602868218963907841288692e-19', '2.2453834662270527218695605226800210763996175658727845e+34'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 4 }); - T('2.06047471323273675e+15', '-1.549028959604836834354557362898635678316479740834989842523e+41', '-1.33017e-26'); - BigNumber.config({ DECIMAL_PLACES : 96, ROUNDING_MODE : 3 }); - T('-7.05085729272211009849091807126021118782328859699569811025041e-16', '-4.978374031401085198009429258552458040848568e+42', '1.41629721837869964741050077431131056176e-58'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 1 }); - T('-1.08558638711697951122296184010253247220521597866289e+33', '-1.095189258480639988351439864779e+30', '991.231769952727097382931022367907874314569439543907641'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 3 }); - T('9.8729e-19', '1.8011865910309926369717116294617624146153936e-12', '5.4813310565e-7'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 3 }); - T('-4.85006892273786251519379926157564148194080803e-11', '4.2144285392117088636044457532336606821307e+13', '-1.1508248099622653733336646374169959360771924094604495212554679882303e-24'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 2 }); - T('2.8784194884454653011319e-2', '-3.879427369887867496479778593e+6', '0'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 1 }); - T('3.4590661358872593115553923594619847654866114989082695893051e+46', '5.4e-1', '6.4056780294208505769544302952999717879381694424227214616761111111111111111111111e+46'); - BigNumber.config({ DECIMAL_PLACES : 28, ROUNDING_MODE : 5 }); - T('4.1e+0', '5.4786917624775196956187078223916e+23', '7.4835e-24'); - BigNumber.config({ DECIMAL_PLACES : 21, ROUNDING_MODE : 6 }); - T('-3.91495716942234069922659077207497778622749365160426460071e+53', '-4.0102800972250268937783468190379e+14', '9.76230356610590288767648100711089415886501956837749100702679e+38'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 3 }); - T('1.19424369580399282513575056508783725247e-9', '-5.371698598032159396495139952175043506e+36', '-2.3e-46'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('5.63636041344363e+14', '5.2173072658597998389260730622052729474722e+36', '1e-22'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('-9.031145452408285626378639096151350422e+27', '-1.731e-15', '5.217299510345630055678012187262478580011554015020219526285384170999422299248989023685730791450028885e+42'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 3 }); - T('-7.31972377269774149472754055513497055157319466674421771e-14', '8.546500533655590532217386133188970641018e-14', '-0.8564585872162672868942623705976116327542913560436307588971838437181301932291836031310937755135'); - BigNumber.config({ DECIMAL_PLACES : 40, ROUNDING_MODE : 1 }); - T('-3.54679222738451876223205408554904004041520901298e+27', '3.4586346581660271194125550911766413700791897294324995365342e-19', '-1.02548912444693941909583024429178218782025365317128628938450518851820276916612834088689e+46'); - BigNumber.config({ DECIMAL_PLACES : 82, ROUNDING_MODE : 5 }); - T('-6.48643644215162929485708075e-1', '7.14984347440457975908726489684000602e+35', '-9.072137684373297046785189769824472850697249143e-37'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 0 }); - T('3.552171243977769502671049000867317211343e-20', '-2.15595163566681273217424395359713674128281892118e+40', '-1e-23'); - BigNumber.config({ DECIMAL_PLACES : 45, ROUNDING_MODE : 6 }); - T('1.7954544527607735150981985546109e+2', '-2.7258844e+7', '-0.000006586685967903750852744153620787807436001'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 1 }); - T('3.3674081394487145799921e+9', '-7.1275409800764541139561409433836095e+2', '-4724501.96899828111377581909732715146907289'); - BigNumber.config({ DECIMAL_PLACES : 44, ROUNDING_MODE : 0 }); - T('2.65735472097886935495390169965511921020563011e+25', '2.19349988440193952607880287238101699e+4', '1.21146791019932076607700836983269024923057710126299235619548140485e+21'); - BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }); - T('1.0575868668469067477716236166764e+25', '-8.383602155882908531775616123746973325e+29', '-0.00001261494578562248'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 5 }); - T('4.6852215e-14', '2.19919753326e-5', '2.13042e-9'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 2 }); - T('-6.97048526434790465102435138712502202538705868792308978e+50', '-1.152016479378653648042654041111e+19', '6.0506819035327287840871358846013130018087169719821002176269531e+31'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 0 }); - T('-3.37577295170516785222e+8', '-2.37545219078269355805e+1', '14211075.115735653503575269101098904554789070803843368872554096743257129931508392'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('-6.91828885134279364979634143520912856688568e+8', '-4.905271406e+9', '0.1410378402891330993927951768711802155251769977190126551786561838205452'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('6.986514784850857947742579938525217639695e+26', '-1.794839665783077e+7', '-38925564873799947424.6882982473922192210282154361988028278101097559636017307592156'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 4 }); - T('-1.77830063090048661263986622e+10', '2.270924196212392806152021613176845793480717971355827611111e+29', '-7.830735318538864287947570037843942222717162247258832e-20'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 3 }); - T('-3.61553162775567272024302892183569e+26', '5.2136257994244279369565366891886574752823e-1', '-6.9347739305625250934549596504675255779365775719511346687127674e+26'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('2.72e+1', '8.10677952046480558868896688782129127976e+5', '0.000033552164495575767975227338046013372453730165565364132066649209675865'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 2 }); - T('5.00209141376450945561177635215306952e+20', '-4.06407024489331769546669285640221297039518589733394e+50', '0'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 5 }); - T('6.4941507325829041e-13', '1.06803844907e-14', '60.80446577777906232995125593732572832159078855174121620164454853430551132022'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 3 }); - T('4.59037507825880083772724613e+23', '5.9206491313738816076555721197850369064037338348485286340196e+32', '7.753161817906e-10'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 2 }); - T('1.24258229484774e+11', '-1.34608804095258113553965970247594e+19', '-9.23106258316065561528587558e-9'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 1 }); - T('-2.312e+0', '1.12229569882029501318267761229489045381220697e+5', '-0.00002'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 5 }); - T('5.99386387928871248266583462338374271383421779265e-7', '4.54276178498770507623593493e+26', '0'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 4 }); - T('-1.072e+0', '-1.0093621232770885252715439716044e+10', '1.0620568924456423474469510806320102016101382698470840962696843605524920313968902e-10'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 0 }); - T('3.1477153130156971113238565625851776140762151077886911e+46', '9.826959778864853474755755753495e-4', '3.2031425627543381746914096126702169849354775990622144170749047897876647147271148203797679834222535856032885497801492664824904454346e+49'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 1 }); - T('8.29789132e+6', '1.571815286618497636e+16', '5.2791771340076160975768969825714902024842632232591240172049653e-10'); - BigNumber.config({ DECIMAL_PLACES : 86, ROUNDING_MODE : 3 }); - T('1.52164415715764465447303e+25', '2.87924899438469325984e+19', '528486.47689910053985881783677296216257810461518732161341341792834798642202721337736804755992'); - BigNumber.config({ DECIMAL_PLACES : 60, ROUNDING_MODE : 1 }); - T('4.208837080395082250914160579456486936330714130498162873255e-11', '2.27010087532800876360273860899e+9', '1.854030860979666324529697068207741338852e-20'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('7.668283651166955701e+0', '-2.59554989752628450796804615643995026173575873939822982e+53', '0'); - BigNumber.config({ DECIMAL_PLACES : 87, ROUNDING_MODE : 2 }); - T('-4.269827082310622058516334206139255614554809934590597346781e+26', '-2.86618498009960504659861e+20', '1489724.882363397892828752161863673946377166456932407861354348065593006446060320670620929585694'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('4.34026302347822527e+16', '7.87e+0', '5514946662615279.8856416772554002541296060991105463786531130876747141041931385006353240152477'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 5 }); - T('1.2e+0', '1.217453887745260320295322901007862553505569150298797e+45', '9.8566361492542018442563e-46'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 4 }); - T('-3.7522310633980853325867082990170673e+31', '-1.0292373198653534141843851980822223e+34', '0.0036456422546832625689136006513990189060244021257648515'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 3 }); - T('-1.35790490505570931093648290702810551910772e+17', '4.294449e+5', '-316200030564.0396034360829310182'); - BigNumber.config({ DECIMAL_PLACES : 35, ROUNDING_MODE : 0 }); - T('-2.4782632e-3', '-4.05169398973704e-10', '6116610.00627750363922491894728964580229301'); - BigNumber.config({ DECIMAL_PLACES : 36, ROUNDING_MODE : 4 }); - T('3.756357804151096896837356423059514649527372376901930416e+33', '-8.35113e+0', '-4.49802338623766711431549553540600451618807559803515262724924650915505e+32'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 6 }); - T('2.0910203634740244001484289229808869070511242e+8', '8.02731501357361831201449656310303952281e+20', '3e-13'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 6 }); - T('-3.1698436883263758907842835e-5', '1.0802507484344631972264715e+5', '-2.9343591688505869236154844739170466376631961498702362054626834807562627783027501e-10'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 3 }); - T('2.721239287933e+11', '-2.2412026024947078257073e+0', '-121418709977.5789096584346573366430238344682252618674469533621057930935379913349656066911664673289481'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 0 }); - T('5.407536640878138389743338300626293850572182013779e+29', '9.65717889e-20', '5.59949929733375622468492794030275424521227028215379781579255802726462696809378458143069564697687815121337158951603515340907182884338181707e+48'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 6 }); - T('-1.407077764986670621849439170701523150451857671292308216281e-17', '-4.1579607126487320994975506399283957855950459483224663e+51', '0'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 1 }); - T('-1.441505586834219591581996149087923330198635935696660167e+1', '-7.3202010555262200157717662443151643404e+27', '0'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 4 }); - T('2.441776264479681806716738298456671e-17', '-1.78406279813694314834986307099964805807329806664911767944e-12', '-0.000013686604905553627996'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 4 }); - T('5.10140649101411765e+12', '6.1899268048903359299676290735372105234653266354e+46', '8.241464966893896751223180874476897717134549759895885559205e-35'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 6 }); - T('-4.3620916548258882483528769576e-2', '1.8047591129224229943228186843920124915612131569287428e+7', '-2.4169938378991808382337249713327963963819305e-9'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 6 }); - T('6.42281238744617747935824187719036657371e-2', '4.3350798745859359400910160329315845099386758471658e-9', '14815903.220375266518527'); - BigNumber.config({ DECIMAL_PLACES : 80, ROUNDING_MODE : 4 }); - T('2.465991672234244959093928122489457556184e+39', '6.108829166965532317296514733893591376592411635e+10', '4.036766465118206435614185736756057288657773615400609260966944868513631488419017972532456294687997972218413339e+28'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 2 }); - T('1.153200244637552713320161158311786084646e-9', '6.56566163383858080832e+9', '1.75641132447964e-19'); - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 1 }); - T('-3.7862449918709461215480788954277027542635119e+44', '-2.48191716299e+2', '1.52553237808694803942130939517658504874736536502506697627855143276705142569162793377923720790104080201286331e+42'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 6 }); - T('-2.319766197008371429642922e+3', '2.1729e+1', '-106.75899'); - BigNumber.config({ DECIMAL_PLACES : 69, ROUNDING_MODE : 1 }); - T('8.03340286495794866966241438602064440121086532273e+1', '9.1251158614e+1', '0.880361738631715546850931996871033657822665519753550643941635289930632'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-5.440572145054479422049668949148854525893474277e+35', '3.9971133726835147752137353945421194492977095308071895950804e+38', '-0.001361125301632832987221653247595128114977341147062273632678950498625345776512047144344783907762334'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('-9.68442049254161857510168781861e-1', '-3.409651e+3', '0.0002840296702665938119503048205992'); - BigNumber.config({ DECIMAL_PLACES : 58, ROUNDING_MODE : 1 }); - T('3.555075917103862988684791048517766337536809368296007676036e-18', '8.87175e+0', '4.007186763720644730391175414678914912544e-19'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 0 }); - T('2.99103737827925059323239200345428714e+6', '-7.701088877270243283457521248899363219520751505654e+3', '-388.391489300596783892543822601209004355674896370038946'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 0 }); - T('1.350223e+1', '2.34761460206965359787881103867751198152920817e-12', '5751467889191.204463481'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 5 }); - T('3.15621320335032541976564899638959645896178154788794896170234e+33', '4.296256546955836349e-15', '7.34642628729119495114397413872390174893190414987515592016715245744118873793e+47'); - BigNumber.config({ DECIMAL_PLACES : 24, ROUNDING_MODE : 1 }); - T('2.37218509210530059394943507579448892298100229851e+23', '-1.62692615757209788944838e+1', '-1.4580779103369823679061687192778057317094128596e+22'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 2 }); - T('4.878005731507031e-11', '-4.44790195666587259994945869672e+28', '-1.09669812397653e-39'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 2 }); - T('4.722619473331688768232e+15', '-1.456444723124023567069825767067360659815834669327072e-15', '-3.24256691541429276263697747398781928625546780683841992853487e+30'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 1 }); - T('-2.195698971527617777838761335193563e+21', '3.478156933398994769e+19', '-63.1282318070074107023223149962725043506589287831761401'); - BigNumber.config({ DECIMAL_PLACES : 33, ROUNDING_MODE : 0 }); - T('-4.81e+2', '-3.6196e+4', '0.013288761189081666482484252403581'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 0 }); - T('3.8106e+0', '-1.68631804101229512773985812930393121867791487059807881252267e+38', '-2.2597160839911909013914868780831714865e-38'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('5.1453641376e+10', '3.8161104559268143928699715e+4', '1348326.83619225882232074493879180157392063413273607475207309549030944420276685926954044781995282079'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 5 }); - T('-1.766752791482e-9', '-2.2248081755686205693938592247744896299e-9', '0.794114661606927109'); - BigNumber.config({ DECIMAL_PLACES : 97, ROUNDING_MODE : 5 }); - T('1.07e+1', '3.5694846551911999114971941017111214723574489411561208839805e-3', '2997.6316005277386752844589722347729748825802678625637341931193548684651965908690269486826380875506585'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 5 }); - T('-1.070223299865544e-7', '2.11425777559388482853946385898128854354089e+29', '-5.06193384846331441e-37'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 5 }); - T('2.334700147652e+8', '-1.6801514078762469767833014661009025574448734274217e+27', '-1.389577234948794795652139200374723004115301552098936e-19'); - BigNumber.config({ DECIMAL_PLACES : 9, ROUNDING_MODE : 2 }); - T('-8.990729953840491347231278733483218542630317243e-12', '1.76794e-3', '-5e-9'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 1 }); - T('-1.320555263408879277572868747426701674e+36', '-8.280318696431684320657028912505686208821959e+3', '1.594812122361858593384666275294206775380477386239664128388472280487930519223575938267970753622820899059467907e+32'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 4 }); - T('-6.231912384589897854133779639848e+30', '-3.43189565984372085538646069857139e+11', '18158804935443993377.0751933169966139471194602146070091'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 0 }); - T('4.4415362952296514295e+19', '1.39643690008178464005185146939344633199e+21', '0.0318062083218334140239237816307785327376606457328643271461090039493434588946'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 3 }); - T('1.1742928469887653678489205983104182614756200996e+1', '-6.9906485440108893963e+18', '-1.67980529931635504817020737838900453766e-18'); - BigNumber.config({ DECIMAL_PLACES : 16, ROUNDING_MODE : 2 }); - T('2.1566662626629319042256416557181912831932666e+26', '1.42302534466269546467e+8', '1515550141641457440.4655660866942607'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 3 }); - T('-4.8146044046046959308e+9', '-8.40724e+1', '57267360.09207178492347072285315989551862442371099195455345'); - BigNumber.config({ DECIMAL_PLACES : 54, ROUNDING_MODE : 2 }); - T('-1.18810238e+3', '9.74127342365354222e+17', '-1.21965817848319130241016938997978134735e-15'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 4 }); - T('5.87453940985908343285738604241e+20', '2.1589366474822240030123991237675e-20', '2.7210337166262089309442295474582002270327559e+40'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('2.8402399093269e-7', '2.29461160255535856229460480721437111633446121658231e+50', '0'); - BigNumber.config({ DECIMAL_PLACES : 75, ROUNDING_MODE : 1 }); - T('7.814632967948295805989727852979009232425599220867683407305e-3', '-2.1855562561097858541591253249940846587604e+40', '-3.57558079143571018411113233263763e-43'); - BigNumber.config({ DECIMAL_PLACES : 8, ROUNDING_MODE : 4 }); - T('-2.07484006218997673327834760683047751066112044e+21', '-4.2343e+3', '490007808183165277.20717654'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 0 }); - T('-1.174628459863851785055746341650852577960316e+38', '5e+0', '-2.349256919727703570111492683301705155920632e+37'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 4 }); - T('-2.18031244388e+2', '4.9707067e+4', '-0.00439'); - BigNumber.config({ DECIMAL_PLACES : 62, ROUNDING_MODE : 0 }); - T('-3.5318426831698e-11', '1.744834377768283326385768191171847918793999764775332687433e-5', '-0.00000202417073400810429774305830088179811979022168174920885864'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 1 }); - T('4.603247010352344621295928161305282953e-17', '3.85024303536071236681680123e+15', '1.19557310228887580284053475976953609839e-32'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 0 }); - T('5.6652585082225360020865725712732622636097569528715411e+30', '7.82248e+5', '7.242279313238942128438260719456313424399623844192047918307237602397193728843026763890735418946421083850645830989660569e+24'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 0 }); - T('9.40290220646761003558174981105847485978e+29', '1.540600509715740951214714205008966296603104625856179918032e+44', '6.10340068510204303949264446723367e-15'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 3 }); - T('-7e-1', '-4.27888647534096688050483033121609213295359e+32', '1.635939639983600818542538319489686587195e-33'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 1 }); - T('1.72082816995428430797615448257083562141770055217331e+23', '-2.7201e+4', '-6326341568156627726.8341402248845102070427578110117642733723'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 4 }); - T('-3.153102984e+0', '-4.977851364107271003202629484936797813056878179759195174e+53', '6.334265033977e-54'); - BigNumber.config({ DECIMAL_PLACES : 68, ROUNDING_MODE : 0 }); - T('-8.49387714e+0', '-9.45054620259658286223674682547382e+4', '0.00008987710295163962637083185864525273260397410828505470512439124838'); - BigNumber.config({ DECIMAL_PLACES : 22, ROUNDING_MODE : 1 }); - T('-9.311975726515998074155346632126152659845407414403728541526e+15', '-1.2724127e+4', '731836119406.5414526399608108380364'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 0 }); - T('-3.674297468159500390156502433406753075149461e+20', '2.2070345225046097978222093124224963839784689973e+3', '-166481195952920394.0492995478783782657094670464162402895892210975115096339663670419040478923040241894015329446'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 0 }); - T('-1.8150003598665833976021678902349937972e-12', '9.964919276121040376508464825057262783846e-15', '-182.138992757912'); - BigNumber.config({ DECIMAL_PLACES : 43, ROUNDING_MODE : 3 }); - T('7.0189459089779438798574e+14', '4.5622493810854e+5', '1538483612.5087212498761814627907062459367285706464986'); - BigNumber.config({ DECIMAL_PLACES : 6, ROUNDING_MODE : 6 }); - T('-2.27577059368628490602551877708365e+16', '1.6950572843204e+4', '-1342592144075.361162'); - BigNumber.config({ DECIMAL_PLACES : 76, ROUNDING_MODE : 3 }); - T('-1.4545e+1', '-2.39141e+5', '0.0000608218582342634679958685461715055134836769939073600929995274754224495172'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 2 }); - T('4.26068e+2', '-1.377737835201116479534815445957191281256100978924e+49', '-3.092518686167926519156871274760772691541984883128957e-47'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 3 }); - T('-5.503468462778599482e-7', '8.07665374429389943790757771e+13', '-6.814045317550925423366152559691137529806580817371877453148683e-21'); - BigNumber.config({ DECIMAL_PLACES : 32, ROUNDING_MODE : 1 }); - T('-5.848733993080881770424982329e+7', '8.0038810550681e+4', '-730.73724519899409774861163662599175'); - BigNumber.config({ DECIMAL_PLACES : 89, ROUNDING_MODE : 3 }); - T('2.265045675363689237e+6', '6.4761121536492474143896152898643018001e+12', '3.4975392976901281938389885246232578839048066422817737012983923710148316563180967182e-7'); - BigNumber.config({ DECIMAL_PLACES : 7, ROUNDING_MODE : 6 }); - T('4.8865055959832394053310098256526219164091e+33', '2.54448396839393717534256536740336269817e+26', '19204308.837'); - BigNumber.config({ DECIMAL_PLACES : 52, ROUNDING_MODE : 2 }); - T('9.43987760059592237947358314268891767411016698884722628e+53', '6.941736916e+6', '1.359872567172340009705084470632640390618653486989512738255435204971977073986824078021570473472550138e+47'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 3 }); - T('-9.4555843664304821120443854458756981429686141898273052e+42', '-4.038426625597324898335671374e-9', '2.341403037137490093910868564806637740922093050737553862998837279287645e+51'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 2 }); - T('1.8e+1', '9.8349873842965767449e+7', '1.8302006191426757663302662547213753106960184e-7'); - BigNumber.config({ DECIMAL_PLACES : 25, ROUNDING_MODE : 2 }); - T('-5.88308127e-12', '4.919775647326018e+12', '-1.1e-24'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 2 }); - T('-4.6308973760853953327001814625712286488346449216105175950755e+6', '-2.00398084061039276564454531752265553652218114992496256702e+47', '2.31084912701803563305144150147e-41'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('1.7e-9', '-2.88503390887047329960178250261e-17', '-58924784.0302012661186747772006608809102301993926263137789045605314160576242574818698805742587572836618084'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('-7.405083002074059516648379361320032329944335393726739609376e+9', '1.6556106449874e+13', '-0.00044727200954487797400282081334675084505910663555827687'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('6.0497889983053272189781837e+12', '5.390638402564282362230025698691742435927066249e-14', '1.1222769079498065272537005470398646717816465210380024579583156149207854843321590288839061176865722831193e+26'); - BigNumber.config({ DECIMAL_PLACES : 93, ROUNDING_MODE : 5 }); - T('5.448304e+1', '3.1492e-3', '17300.596977010034294423980693509462720690969135018417375841483551378127778483424361742664803759685'); - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 1 }); - T('3.220753067202506e+15', '2.057901432381929819e+15', '1.5650667308563106859051583305980599694865953104127288105059337312844551398'); - BigNumber.config({ DECIMAL_PLACES : 53, ROUNDING_MODE : 6 }); - T('-1.970004649047161189e+0', '2.34711024152190208946286228795944172922073e+24', '-8.3933196413040237898539117521e-25'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 3 }); - T('4.0104094423822081719879215420041100057888945931e+26', '-3.992065465182403164722197282679e+18', '-100459510.931366122894597070623973283456209980720066043246091'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 4 }); - T('-1.172548389687914049197781603e+13', '-1.0095165117466329472564e+2', '116149500879.307917288636269435813816567925319756587745662146497'); - BigNumber.config({ DECIMAL_PLACES : 56, ROUNDING_MODE : 4 }); - T('-3.366604e+1', '1.52803440896e+0', '-22.03225254784252054229343000461957345895394881671029042427'); - BigNumber.config({ DECIMAL_PLACES : 19, ROUNDING_MODE : 2 }); - T('-5.41300062319490880734936806137892720844470175838875618777e-5', '-1.344e-12', '40275302.2559145000546827981'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 0 }); - T('1.6457211129964164341500335562263942435807110689675e+25', '2.5188547952729012955393944550555281036337662041694727310645e-17', '6.533608511633610906153210144759391068412945320476292119142177798234135400231219783518480565350860910071560809872203792728829626e+41'); - BigNumber.config({ DECIMAL_PLACES : 31, ROUNDING_MODE : 5 }); - T('-2.47754507883181224382061601929648866e+35', '-8.290209128043376039902492705770167581944177405005061e-8', '2.9885193974793650466728879599534492576677747563744203670472386689562240821e+42'); - BigNumber.config({ DECIMAL_PLACES : 66, ROUNDING_MODE : 5 }); - T('-4.7227595213519353613092231960779e+5', '3.31814153192981587699392144069268225503584e-9', '-142331467054848.625222034511314674268556658940757539089286751164890009410454133195'); - BigNumber.config({ DECIMAL_PLACES : 14, ROUNDING_MODE : 3 }); - T('6.8506679344968447210816003126910712827e+35', '1.993118766568317455759548551867416587357158e+3', '3.4371599171142653031186804218003080226412784028e+32'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 1 }); - T('4.8985844145021808176685922e+16', '2.747743862428642455820955475504906462565719e+28', '1e-12'); - BigNumber.config({ DECIMAL_PLACES : 88, ROUNDING_MODE : 1 }); - T('-2.6062701234e+0', '2.9288100258328928138617153553825753437922149199012e+5', '-0.000008898733958201439997374634267953034276265544438493683277409168637100200126947586243'); - BigNumber.config({ DECIMAL_PLACES : 5, ROUNDING_MODE : 2 }); - T('1.6157537454e+8', '2.356410978611863625721378819626e+23', '0.00001'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 3 }); - T('1.3226344263949745e+1', '1.5134622161574201663058e+11', '0'); - BigNumber.config({ DECIMAL_PLACES : 12, ROUNDING_MODE : 5 }); - T('7.13378975743669341980657349839e+30', '-1.077355370700932622574621785091799108e+19', '-662157534221.546159797954'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('-1.30668491770024533871382097517e-15', '7.739747536662e-3', '-1.68827847615271530426895209005095818365544497037197615248076378431599198028192806275708e-13'); - BigNumber.config({ DECIMAL_PLACES : 72, ROUNDING_MODE : 6 }); - T('-7.310224019e+5', '-1.20187e+4', '60.823749814871824739780508707264512800885287094278083320159418239909474402'); - BigNumber.config({ DECIMAL_PLACES : 50, ROUNDING_MODE : 5 }); - T('-1.36594744373998329125183129397035154767615739862e+23', '-1.6221844e-6', '8.420420290935995262017260762527068733222668141920240386974501789069109529101624e+28'); - BigNumber.config({ DECIMAL_PLACES : 34, ROUNDING_MODE : 1 }); - T('5.91339512442594930756510267595267112832977719e+0', '1.06379573691046094321632609927607382099371510837970460425e+44', '0'); - BigNumber.config({ DECIMAL_PLACES : 99, ROUNDING_MODE : 1 }); - T('3.4600072801140082149120093e+24', '2.419385805087341473032573096507979259036169859796904e-19', '1.430118037742682217185741679309760641844767273252571695335791118413641227665278278846097472044183336943613526599349723904182792265666390902193e+43'); - BigNumber.config({ DECIMAL_PLACES : 0, ROUNDING_MODE : 6 }); - T('4.2989936567621962434647067163244712499754286711e+46', '-7.287361590832233591725730628156e-6', '-5.899245705291318197490442137821233191034725732731152e+51'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('5.08255843892386163e-10', '3.6769867553503517317613932366705820276791455e+14', '1.3822618293439e-24'); - BigNumber.config({ DECIMAL_PLACES : 15, ROUNDING_MODE : 5 }); - T('6.018e+0', '9.82936025658216212324214864902440546928e+14', '6e-15'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 3 }); - T('-4.88694832494423e-16', '2.6685695117656813935805e+14', '-2e-30'); - BigNumber.config({ DECIMAL_PLACES : 71, ROUNDING_MODE : 0 }); - T('6.187367411590709211084e-3', '-1.9016490483589853410164513292944135e+5', '-3.253685224899964775762923531318992984544093576167679281165724876e-8'); - BigNumber.config({ DECIMAL_PLACES : 70, ROUNDING_MODE : 6 }); - T('-2.698534206828656555645951400586392511e-20', '1.41566409819611657131347812519308548766678285194938434253806e+23', '-1.90619668201461996680522995e-43'); - BigNumber.config({ DECIMAL_PLACES : 23, ROUNDING_MODE : 5 }); - T('3.64338680869165730432721264095799056297576253203915505e+12', '2.49734543640219665770981076900260707826855027946e+11', '14.58903824670929929825096'); - BigNumber.config({ DECIMAL_PLACES : 51, ROUNDING_MODE : 5 }); - T('1.37750576475437616802e+20', '3.1186519496663986e+12', '44169910.172301452450746870217307380822060649144439661963399'); - BigNumber.config({ DECIMAL_PLACES : 92, ROUNDING_MODE : 2 }); - T('-3.7953891171370774966517431e-8', '3.111810168415618559e+17', '-1.2196724452087975157365242667935153943383951245128650341171253148108e-25'); - BigNumber.config({ DECIMAL_PLACES : 18, ROUNDING_MODE : 4 }); - T('1.758687497055576219230940728575659698853957728014345e+25', '2.55987906294351248373600134010276392866914703516483e+46', '0'); - BigNumber.config({ DECIMAL_PLACES : 29, ROUNDING_MODE : 5 }); - T('4.983521732075865023238944583705028e+3', '-4.60355004431025072736834106351363219067932246888e+19', '-1.0825388415697e-16'); - BigNumber.config({ DECIMAL_PLACES : 38, ROUNDING_MODE : 2 }); - T('1.36210873191087156571300625683992927337759078388519616116957e+2', '-4.856011861229238531e+5', '-0.000280499465577102362081282866149858'); - BigNumber.config({ DECIMAL_PLACES : 10, ROUNDING_MODE : 3 }); - T('-6.27292639398799941804769052811144481813654523344e+23', '-9.223861100927221622570481401681e+12', '68007598177.7025920604'); - BigNumber.config({ DECIMAL_PLACES : 59, ROUNDING_MODE : 0 }); - T('1.451185082463737847802616854453333e+16', '2.67423846293035097281847174648822449142303424568339e+7', '542653582.53563236627592952195668145679814392738365254624328253671248'); - BigNumber.config({ DECIMAL_PLACES : 46, ROUNDING_MODE : 2 }); - T('-1.30217e+4', '3.34207562054215771861e-2', '-389629.1250850749937369356768877727892124143497377121'); - BigNumber.config({ DECIMAL_PLACES : 63, ROUNDING_MODE : 5 }); - T('6.0774200897757313464657364607565620534e+2', '1e+0', '607.74200897757313464657364607565620534'); - BigNumber.config({ DECIMAL_PLACES : 4, ROUNDING_MODE : 5 }); - T('-1.4977805511498677e-5', '2.562493654824974661853706878407e+26', '0'); - BigNumber.config({ DECIMAL_PLACES : 17, ROUNDING_MODE : 5 }); - T('2.37738940731e+11', '2.1197520687627033e+16', '0.00001121541260577'); - BigNumber.config({ DECIMAL_PLACES : 84, ROUNDING_MODE : 1 }); - T('3.568714642593951821147425302697509378796972e+42', '-5.567444895768511376780232462925349027461438338986e+42', '-0.640996850333682278715341380001557537577078630198953922106208118826563871324885854582'); - BigNumber.config({ DECIMAL_PLACES : 90, ROUNDING_MODE : 0 }); - T('-1.092655133385021909286285557050656614359635191341348377e+38', '1.79046e+1', '-6.102650343403493567498215861011453002913414381451405655529863833875093551377858204036951397964768830356444712531975023178401082e+36'); - BigNumber.config({ DECIMAL_PLACES : 98, ROUNDING_MODE : 4 }); - T('3.195e+1', '6.3559613761446696e+14', '5.026776927864197611599309013360652084107428630046636070537160730904010007615944523607e-14'); - BigNumber.config({ DECIMAL_PLACES : 47, ROUNDING_MODE : 6 }); - T('2.322e+2', '-5.398093488026379244431502845e-13', '-430151868460684.3768540542081462239159342450111793279240742283'); - BigNumber.config({ DECIMAL_PLACES : 77, ROUNDING_MODE : 1 }); - T('-6.5565196e+7', '2.711104726376443e+7', '-2.41839407242788026484854848409113719460326005903320644117285296918683756878243'); - BigNumber.config({ DECIMAL_PLACES : 41, ROUNDING_MODE : 6 }); - T('1.0645627403778739844e-13', '1.3523634769128119105942e+13', '7.87186846252361e-27'); - BigNumber.config({ DECIMAL_PLACES : 85, ROUNDING_MODE : 6 }); - T('1.043904773373277442180173714797789481695e+24', '-3e+0', '-3.47968257791092480726724571599263160565e+23'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 5 }); - T('-3.8784966818454064082276654510557840673048257e+11', '1.27615024340009655855691378584236771e+21', '-3.03921634768628603145473809535079982052e-10'); - BigNumber.config({ DECIMAL_PLACES : 27, ROUNDING_MODE : 1 }); - T('1e+0', '7.8059434837451907016038344313692e+32', '0'); - BigNumber.config({ DECIMAL_PLACES : 30, ROUNDING_MODE : 6 }); - T('4.090963382185467544867391401161e+3', '-4.947353627083592126859423580421306070697601e+42', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 1 }); - T('-2.252526e+6', '-2.2751905784830644458152204427279971293971386564923526505e+55', '9.90038e-50'); - BigNumber.config({ DECIMAL_PLACES : 94, ROUNDING_MODE : 5 }); - T('3.337179e+3', '-1.124109298808773078000919303240413683125e+18', '-2.9687317803850864155193603510953192628283148654325926932202383719798270184788317e-15'); - BigNumber.config({ DECIMAL_PLACES : 48, ROUNDING_MODE : 2 }); - T('5.396459229758622243863307316004851823277030500822e+49', '-7.986950723654444885269354583056275536e-15', '-6.756595121810720018302055529532811905268493757097879742186761291708971892162113550298139220290162637739821309226e+63'); - BigNumber.config({ DECIMAL_PLACES : 91, ROUNDING_MODE : 5 }); - T('-3.5448477151290801761877523164961721974368752265e+21', '4.421408100681322564028445047780585001526e-6', '-8.017463293159553200705023268652798425703321341288970441362156197087995291733427882034028035790626803772684855154253844e+26'); - BigNumber.config({ DECIMAL_PLACES : 74, ROUNDING_MODE : 2 }); - T('-4.350832932450342098804623837197850016325667240511e-4', '-1.661298881760292928966647592693722368086242162075596e+39', '2.6189344856719883193139326952496e-43'); - BigNumber.config({ DECIMAL_PLACES : 13, ROUNDING_MODE : 2 }); - T('3.83705e+0', '3.570563711367172540823838290282453562478e+23', '1e-13'); - BigNumber.config({ DECIMAL_PLACES : 3, ROUNDING_MODE : 5 }); - T('1.6901977568389407896942317215665594164649791131e-1', '2.22007914080350807009448350735886427080696147e+31', '0'); - BigNumber.config({ DECIMAL_PLACES : 55, ROUNDING_MODE : 3 }); - T('2.840481e+6', '1.3327e+1', '213137.3152247317475801005477601860883919861934418848953252795'); - BigNumber.config({ DECIMAL_PLACES : 61, ROUNDING_MODE : 4 }); - T('1.8244693340188831428316255121e+19', '1.00024476176549778435583070853827e+3', '18240228829577420.4741187267696143148954146464874986680767286208183813649772543'); - BigNumber.config({ DECIMAL_PLACES : 81, ROUNDING_MODE : 6 }); - T('1.345966506e+1', '1.6817041820786075207825e+1', '0.800358660187410885552441495604885001196139987870917888069245179641377499257626555'); - - // Rounding mode 7 - BigNumber.config({ DECIMAL_PLACES : 65, ROUNDING_MODE : 7 }); - T('1.9640', '2.444', '0.80360065466448445171849427168576104746317512274959083469721767594'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('3607247394853566951317.77076581', '15782819408764618683425.244', '0.2285553234455921540387285974114769405274281136836665305041152998320784526374246178556985'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('1', '0.0000000000000194052811234', '51532363465435.329092388839409191'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('660716722326173271523', '479.97194389', '1376573632557148738.4776939404452905552516668788409085775073968563583659260705043457035'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('0.0000000000015', '5360559278853.1138548', '2.7982154882930862e-25'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('707502522397750932', '1', '707502522397750932'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('43125000853', '0.0000001802317770188696', '239275235290417027.96'); - BigNumber.config({ DECIMAL_PLACES : 99 }); - T('0.4241762859699751144', '6', '0.070696047661662519066666666666666666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('33139607696828445002688', '0.000000001792296820835179632717882', '1.8490022027370419145710042278124111872435976327485643069e+31'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('173121.73744340768266', '0.00000000982290101590940367574518', '17624298276345.817480994098505871724687735852356624739604466130187169643522698514888693800981'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('72500577491.827058757', '1384314218.9', '52.372919747539160927851392742780993766761344937594789303944496239'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('0.00000000000016005742', '0.0001072510743316228614932735787327', '1.4923619273509435184608337879188270656177343392e-9'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('64.9247864841747039291', '4.942', '13.137350563370033170598947794415216511533791987049777418049'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('35996.281', '0.00000000000000074542201143965294641517170', '48289801545408412240.6700434620478582483162398124101957'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('7.28147866409558076', '0.03910511255889906305327760', '186.202728687416881931933868388966882657804173481008718667916'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('0.000000000000000823756117121327881', '0.000023106510', '3.5650391042235624549e-11'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('62583.79738', '178959437.41591752', '0.0003497093994241261156338351568369208'); - BigNumber.config({ DECIMAL_PLACES : 47 }); - T('0.000000000443086974862808087088', '2487.74798091496736961', '1.7810766133145262917354356670998647e-13'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('2815926609336708.7', '0.00000000000000001001094905', '2.81284680930097102032499106565725654152640004e+32'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('0.000739794640371', '137321505041027011039861873710', '5.387318178241451967964081027204864758e-33'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('0.000000000000000000061851613', '24.062', '0'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('0.0771696832062', '2.1', '0.0367474681934285714285714285714285714285714285714285714285714285714285714'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('2529', '0.08465350119477616', '29874.7241910422103039742193188143373076032334005926511491689125172187743129512536'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('5', '0.126482574333741460', '39.531137204772734573055325355697133859836053208427591310576043239956817198183217645'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('0.00000000000009378684189488673074114501086', '7', '1.3398120270698104e-14'); - BigNumber.config({ DECIMAL_PLACES : 40 }); - T('0.0000187', '4465054263059521', '4.1880790015721968729e-21'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('3.1864657', '0.0000000000182219', '174870112337.35230683957216316629989188833217172742688742666791059110191582656034771346566494163616307849346116'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('39819077.7207634188', '3393.28', '11734.68671042867632497170878913617502829121086382497170878913617502829121086382497170878913617502829'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('0.00000000000000000493115050264682953202876', '53.5909308156704932657', '0'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('0.0000000000000310741', '0.00000000008984416638925743537', '0.000345866640526985787017354106989915167446365'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('0', '69563752623', '0'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('63.43260001676', '1086125180.7184756659', '5.840266034049510731491489501810883327466513892469824400126826926582081431415e-8'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('6523672727931649502', '0.000000000000000000434', '1.503150398140933064976958525345622119815668202764976958525345622119815668202764977e+37'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('12870616112352300332.7', '252600421736629380772963.0', '0'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('574191.68966', '0.000000000000034439', '16672716677603879322.8607102412962048839977931995702546531548535091030517727'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('12.1', '0.00000000000309613994708762118732362135', '3908092078131.62469168712555874225899954380960302'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('5.7302793', '50878587876729840772.76', '1.1262653975152556294179452325870732792984423847779921331877432894905264370203e-19'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('5573.086', '26150952594220522.98', '2.131122e-13'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('168186325277194054376873', '1.61', '1.044635560727913381222813664596273291925465839e+23'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('58236248756795.9900527', '252537967.550469224', '230603.9338229709497'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('0.00000000000000000001138047224833670', '566502039.976811672976', '0'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('715846101.8231243141900849', '2658.45445', '269271.531743989186720910301848504494782673443962901075848788757693403398354258054'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('559654492614629609571232', '0.0000000000000035492549047527', '1.5768224814318441564203219886464439859081537559261572461898277455455807566104982592423229234110550476113391222528392e+38'); - BigNumber.config({ DECIMAL_PLACES : 60 }); - T('0.0000000000000000217172631', '43728.1', '4.96643190534233136129857002705354223028e-22'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('10918850.97505', '0.000000000000000009353517255427747', '1.167352416943894172108361615414923895822878e+24'); - BigNumber.config({ DECIMAL_PLACES : 80 }); - T('1', '0.000000000024506088608155668091726061802', '40806185596.96214818148515993262878438760674256131327543011945572368751014760958644113863312'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('227794877.826863756631939', '240432470695110862966.411', '9.47438077595298409185055810628228404579316683619935327287797e-13'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('31611287495276783548533221067', '2073240039945.869561', '15247287765145673.1121303'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('0.0000000000000014148163739447713375129068', '28.413089850789', '0'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('29425898489.4727866910401', '0.00000000000160393107113352382657806', '1.83461116372519874093803481296646218449925093785900540751563279136392e+22'); - BigNumber.config({ DECIMAL_PLACES : 39 }); - T('3737757585710940', '195050171601038626200196.154915', '1.9163057151040397991462588170012e-8'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('17.4433702063910', '0.0000000000000000031', '5626893614964838709.677'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('38750870710122252693', '17644957716082679631219376', '0.000002'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('524474068.7', '0.000002789', '188050938938687.7016851918250268913589100035855145213338114'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('0.00000464240477182', '3128190452409.2', '1.484054389413731560053972393e-18'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('2', '3418684.78663', '0'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('2.2467656', '7', '0.3209665142857142857142857142857142857142857142857142857142857142857142857'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('120346443.16', '10795.972253', '11147.3464677123'); - BigNumber.config({ DECIMAL_PLACES : 80 }); - T('30.665927794529695749918529609', '13710005334545760885', '2.23675535101793726041875619585950659615902979082071524893692077e-18'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('6633593816637931424587', '444197881205229005', '14933.8709105032132218253006505943896289155435162360528575521807293744'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('1571.549', '1237.453980', '1.26998581393709687692789997733895526361311634'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('0.000000000000000015794505075839547404564047992', '6.1', '2.589263127186811049928532457704918032787e-18'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('76559.94', '111629.7005405322970563974', '0.6858384428989970505'); - BigNumber.config({ DECIMAL_PLACES : 52 }); - T('244551812.15724', '56006595.2223526197705987', '4.3664823970523685618310184966997289543047553093959901'); - BigNumber.config({ DECIMAL_PLACES : 43 }); - T('0.0000000000000000008642890306628732071', '0.0000000000000000065072462188738', '0.1328194756417952939496716723354783765019753'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('0.00000000000000000002071098103220294112', '0.00000000000000000169909', '0.0121894549624816467167719190860990294804866134224790917491127603599573889552643'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('0.0000000000000000150048564643898532465014623', '0.00000000000000062620106822249151915', '0.0239617228807705788219886937261993269368455270569958890204360942043911812763'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('6', '482332800801.1376014798687', '1.24395437963875019892040028789683014676578136731092388876046146e-11'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('1030107435.88667', '22.98709', '44812433.23477090836639174'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('20.38421819966', '1388.8', '0.0146775764686491935483870967741935483870967741935483870968'); - BigNumber.config({ DECIMAL_PLACES : 97 }); - T('0.000000290', '0.01226', '0.0000236541598694942903752039151712887438825448613376835236541598694942903752039151712887438825449'); - BigNumber.config({ DECIMAL_PLACES : 60 }); - T('9011546386.3', '600935335126742567574145813', '1.4995867041833020699502671609097127059674764e-17'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('675890990.187954036', '168219.67', '4017.907003312716259638364526574092079'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('111440801838835', '72724921.52233375857078', '1532360.56507275334901916822250664379203332142633090814283424789804076617073030238973326672111201'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('313.58', '2414861916168.724704150652', '1.2985421563875886056403211877459005314470820608369116293430403688704059998594562355e-10'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('81465775764.6721077', '21935100139.4945706812436', '3.71394592441323793557453488321185928621238370485979200381224'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('11792938.18701', '66040043', '0.1786'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('2', '8337344.083', '2.398845e-7'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('283001531705038626', '0.0000000000000000364782', '7.758100227123011168314226030889682056680428310607431287728012895373126963501488560290803823e+33'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('90550804574.460682467', '552.9449449953936', '163760977.3'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('5507.2276', '105395.8', '0.05225281842350454192671814246867522235231384931847379117573945072'); - BigNumber.config({ DECIMAL_PLACES : 85 }); - T('2.60', '0.277947421041438305408673', '9.3542871894910447489326863886756667775526560092606691887434241614357773209297510953944'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('1.627811963945396061', '1.1', '1.47982905813218'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('16191893456602475', '0.051415', '314925478101769425.265000486239424292521637654381'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('0.00000000000000000016175855761', '0.000000060', '2.695975960166666666666666666666666667e-12'); - BigNumber.config({ DECIMAL_PLACES : 32 }); - T('0.0000000018311297116910805120217377', '2.3', '7.9614335290916544000945e-10'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('664.1450778', '2815689593.9115356966', '2.35872973795159871701992471952059263967036190631445213618529e-7'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('47797327162.2', '87470295196300621.499466523701', '5.46440675145011867816909510499127013339953114016677191490819e-7'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('83837224395420149', '5.4', '15525411925077805.3704'); - BigNumber.config({ DECIMAL_PLACES : 97 }); - T('552.696169530231988140', '3279501', '0.000168530568989072419291837386236503663209738310797892728192490259951132809534133394074281422692'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('0.00000000000000997268', '0.00000000000000000012240324757473093665387564404', '81473.98208459602353194963615251083215979921534755534180942844561629851421128799181515050003304'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('975027858433.3925', '0.000000000000013521480722321248062', '7.210954764915778782160596306991516802579265488282443328731892e+25'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('15061.884981243', '68354258636780906782812232', '2.203503524378554846533499723090610604e-22'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('0.000000000000000000036671006543330', '2447454417984.5014868313', '1.4983325643927158634340427366961e-32'); - BigNumber.config({ DECIMAL_PLACES : 47 }); - T('178402158272272733747.98326', '0.0000000000000000125814945508250840107533', '1.417972702301677408463731595182742641977077119785296004418407146971519328221279829833e+37'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('42247173', '0.00000000000000000504442268', '8.3750263766556532887525594901179058214844121666664142426700848946305982432066933772488708261854060176e+24'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('765659229728755695156.9082', '0.0000000002856', '2.68087965591301013710402030812324929971988795518207282913165266106442577030812324929972e+30'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('7', '643470.0303827', '0.00001087851752137825493530528816743596623812029865737703697532239061630286202'); - BigNumber.config({ DECIMAL_PLACES : 0 }); - T('397.4', '983057.9893', '0'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('5103.92', '0.00018068326073165321903680074', '28247885.16286646527'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('19.61', '373318.166171813', '0.00005252892'); - BigNumber.config({ DECIMAL_PLACES : 52 }); - T('0.000000000000000001662577895090753263', '2228416234059060691616130', '7.460804986e-43'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('54297525.059590468063632576129', '0.00000050686352239646624582390441', '107124546668637.95578'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('696047.2912663272603657890', '154', '4519.78760562550169068694155844155844155844155844155844155844155844155844156'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('982690266962.637009', '0.000000000871679040793538843583', '1.1273533272843618602522783702763994066094122611943721708491657217737e+21'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('11', '5233148807229.55195904', '0'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('364238.538076974338426991545', '0.000000002247870914170050579975634', '162037124009612.87206351260573'); - BigNumber.config({ DECIMAL_PLACES : 80 }); - T('204187.458192293', '700873.253124745303', '0.29133292971582493162814663011415070407599267571475859793180279506135196600778935'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('9757567873.2439599', '3.62394191', '2692528775.452683760044045518378632068084115619833432'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('566814769534522178180', '3.587855605105755455', '157981488644054496158.261832756780430094168'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('0.00000001479126040527474770', '29128.1319', '5.0779982925285873550991e-13'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('496', '48738201953', '0'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('6316787574385342587.5140', '27395538971708885508405597', '2.3057723306369805e-7'); - BigNumber.config({ DECIMAL_PLACES : 40 }); - T('849919316761557510', '2.6', '326892044908291350'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('7.089610589881496', '57235949.3794', '0'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('240375088183.198416', '16.31', '14737896271.1954884120171673819742489270386266094420600858369098712446351931330472103'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('419.98071', '73751832.2', '0.00000569451222392818059372903280903169209673'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('235771.666012878', '552438.5', '0.4267835533057127625971035689945577652535078565306364418844812589998705738286'); - BigNumber.config({ DECIMAL_PLACES : 26 }); - T('0.00000000000000000380753434486683321337165292', '2.0', '1.90376717e-18'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('11.5932', '0.0000000000000000262287535', '442003467682899989.890865381765092267918870029412568157308733714699785485422'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('10779351792796719162.3617', '1415090585486344', '7617.4288086949771952766896621959742901751841418823659573004'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('0.027598', '1.4', '0.0197128571428571428571428571428571429'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('0.00000000216460367495974647080', '3.3', '6.559405075635595366061e-10'); - BigNumber.config({ DECIMAL_PLACES : 99 }); - T('11506516140.64410', '2', '5753258070.32205'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('85.52', '100993785025857123074524', '8.46784779658516429845025154337022e-22'); - BigNumber.config({ DECIMAL_PLACES : 52 }); - T('6', '814288396.736913', '7.3683967793765940195459398039541052986450373e-9'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('4.4759', '0.0000000000000000281635009877150383490293935', '158925554104668817.1877179147909227857905'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('9844006.4346460', '279.163961', '35262.45436331948306178389552224472126615225953'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('0.00000053552527520459569140536870931', '35565565.400671653136477197', '1.50574092994591430064e-14'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('4333.7690', '0.000000016396479178639435474', '264310950709.8225768837965320956179316644683592293115566421757871173160024351'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('1349.2', '38.2013647053751026', '35.31810997867732026930769809015256179566815137'); - BigNumber.config({ DECIMAL_PLACES : 93 }); - T('280835487062136497723.25201', '42329.881831', '6634450060204716.797884037305901356037262971115710696253656168161959261293738431839753179111585694235055564902'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('4204.803128135912', '647533787.553192160', '0.00000649356560068381793837735493734519852'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('4108.034', '41502.0203238', '0.098983952297960346169185015823757298470469311018163383187582111036063122867821'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('7117.131844542984516505045', '3', '2372.3772815143282'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('853147827.593', '2958', '288420.49614367816091954022988505747126437'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('409537.9932941849932417', '0.000000000008097424', '50576330607633365.035806449063307046784261266299010648324701781702427833839502538091126264352712665163637225863435'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('64548404726726447985505252', '5169956070701948.577270377', '12485290753.730218041121059766763942628372064639331888'); - BigNumber.config({ DECIMAL_PLACES : 39 }); - T('23978.3767956833276762', '1941213317', '0.000012352262672883429264152322936078436'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('0', '1', '0'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('0.00000000000000134872', '3649502.8219702176842945945', '3.69562668065531484072725465054914173730388168818847787068078e-22'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('1', '383972970.8', '2.60435e-9'); - BigNumber.config({ DECIMAL_PLACES : 80 }); - T('64227380.914', '89.343838182', '718878.68509929111520739703427844391194973298578407384499531529203897214320373241562469'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('1803264827', '12772665.85770752', '141.181554977564870796280888146795849121098557274333646474978278173712297'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('11.8685', '3.17951331950', '3.732803988336932645455458046'); - BigNumber.config({ DECIMAL_PLACES : 47 }); - T('145236800.848226297', '328.64868256807', '441921.14118134255694083304943429217710315248716869087'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('14955841523.44', '0.00000000000000475', '3.1485982154610526315789473684210526315789473684210526315789473684210526315789473684210526315789473684210526315789474e+24'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('0.0000000001055969764713269265345397', '3778.15', '2.7949386993986e-14'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('6.217300712977116456', '7.1299198313676854075269195', '0.87200148950125'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('0.0000000000000000001872784271946', '356711.7224947037', '5.25013380229971635893496600115749563131312693014209454291234e-25'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('5811567928404769055227.6201925', '0.0000000000195380900225', '2.97448108884347784523962938071778453952509420627530021403349791019727603981e+32'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('10.7455', '61581069424.120772697182125341', '1.7449355947350730019666238078620874059537998722e-10'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('1', '42308.6368', '0.000023635835981366338893717322511322321781825880052935196437243754447791615'); - BigNumber.config({ DECIMAL_PLACES : 26 }); - T('0.002785488234303046302207428', '1.4', '0.00198963445307360450157673'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('5.947', '105', '0.05663809523809523809523809523809523809523809523809523809523809523809523809523809524'); - BigNumber.config({ DECIMAL_PLACES : 60 }); - T('2.4', '50665073.8926', '4.7369910188772809337536933684365420599224747453378591e-8'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('19399827615448', '2546.04', '7619608339.0080281535246893'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('263931.904077980', '83624.23', '3.156165432889247530291160827430040312'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('91706.33360594206', '0.000000000000098870608303590', '927538883187109868.41737'); - BigNumber.config({ DECIMAL_PLACES : 26 }); - T('161998903316171603599847757127', '2139.036952885489870603', '7.573450430467807420229925168400494428730501521425893e+25'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('6.4425', '0.000000230427956814438850748584754', '27958847.0473'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('55162223949.3145005', '0.0000000000000000058055892489191465774844579932', '9.5015719480299621712483104520641446289238145666681103000866792017939064644550265334e+27'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('0.000012351236298682709183561906', '11683472', '1.057154611119255e-12'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('1.352595532125539064', '86151.5768663410948217', '0.0000157001831112622389924463794820232201336822917273663937690415503358498536'); - BigNumber.config({ DECIMAL_PLACES : 80 }); - T('28.1334107', '6.824', '4.12271551875732708089097303634232121922626025791324736225087924970691676436107855'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('3448561079551.72267260994250', '1208814054325123900771.06', '2.852846612109453563467101964917726728235e-9'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('2913207326.4120702184705769500', '31554.98', '92321.63437948844266326826859025104753671211327023499935667840702164919768607047128535654277074490302'); - BigNumber.config({ DECIMAL_PLACES : 53 }); - T('0.0000000000188959919227442507209461', '14249.808', '1.32605238770545194159430779698926469746e-15'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('0.00000031961836747325457', '628.7', '5.0837977966161057738189915699061555590901860982980753936694766979481469699379672e-10'); - BigNumber.config({ DECIMAL_PLACES : 32 }); - T('610034101.8572879443330203', '8065.5', '75635.00116016216531312631578947368421'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('9945132982.247494450109274', '2.41', '4126611195.953317199215466390041493775933609959'); - BigNumber.config({ DECIMAL_PLACES : 34 }); - T('548029693', '708.5664168853676220272309463', '773434.4726764839502815725844759987873023'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('25997.17', '769', '33.80646293888166449935'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('6276464.5293', '378.02091906', '16603.484656106534'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('88300360.6026', '0.50561116620258089675226', '174640843.606727429932941719496777628734582536789836212832540484649057495692476'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('21.16741219283602783922082', '512734027803711870440926', '4.1283416050045097372576229860930386382999411296407709238604204e-23'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('26830021105.84961363460299163', '0.0000000000000001883525711904361599458', '1.424457385225858912736488224182135765865667880373955137231250317096420340613822190801088887299141094418604014554901224e+26'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('0.022730515253373487974270831830', '4.73699344492', '0.004798511021320902177430922'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('32405457534.532895960970708', '0.279953539011802', '115752984044.851739642674664558311418984715205308200769510374414371088058156651553305190395781681'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('1.24', '5318891663089000', '2.3313127593951734836103634998889199312706298537964626227454926e-16'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('32134243034308902.447648', '0.00000000003557211718244444956', '9.0335480650467983160859896413068900640325287143340989454864560338690857917062941638173614489939134650530200965585e+26'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('8947350374237878', '191180492118.8378812163353', '46800.54055241264323648724086136633393610145072949895919461150526'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('0.00000000000000061664380125508017650', '27.1869360236808', '0'); - BigNumber.config({ DECIMAL_PLACES : 38 }); - T('148050826520.4', '0.000000000000179790', '8.2346530129818121141331553479058902052394460203570832638077757e+23'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('190.070694219797153451730144437', '426.8860821893515882867721', '0.4452492178826493267171157000626186131483155051939161332856002631084414'); - BigNumber.config({ DECIMAL_PLACES : 52 }); - T('0', '237.460215612402342291', '0'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('127235244.05', '53434071963.16978915', '0.00238116316753'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('428164.011', '44.145', '9699.03751274209989806320081549439347604485219164118246687054'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('1040432', '2982551810.11597277', '0.00034883953950813'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('2304698169507', '0.0004144778913307', '5560485173546078.3675631854'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('1045458150034864935.83781190525', '0.00628845', '166250530740463060982.88320734839268818230247517273732000731499813149504249854892700108929863479871828511'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('23081914285899', '13.959238782420001626566338356', '1653522419500.97747774493812524342713467807159632915607501913202534462073519768222710262075897844837975492270633'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('0.000000000000000025892454234938166127524', '32.59885548', '0'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('31297232028431', '0.00655086199774837367044865464293', '4777574621353390.2574707866999292562230839279'); - BigNumber.config({ DECIMAL_PLACES : 49 }); - T('52837979063971.2442597626177436', '587.5840', '89924128403.7197137086146282805522274262062956104999455397016'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('117.859', '10454576726143939267506148', '0'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('478927169.11064814179', '1119296.91529954804', '427.88214866336595130068781569467964999865783818'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('3.35882542084660020962', '31.4098', '0.10693558764610408883915211176129742946469'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('0.0000000000191708721587788884', '2901154135.152313', '6.608015729496013730478085632864760335459208463953329932685522914473784050887e-21'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('273.107661610370201929', '122427274028521.273025430086', '2.2307746682879312379082023740658364002119994404050678835260047063448449081464e-12'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('5946842851467660996.563', '2188055384510599896.03092', '2.71786669275640170258856706306481078824741653645053581726296288451453822022872797714977624025515142'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('82440663254486941', '25621.295162186026145275930', '3217661821255.6061952052808989660077314900348883939461791696025746833421521'); - BigNumber.config({ DECIMAL_PLACES : 25 }); - T('14528448.170821472', '0.0000000000000714841415', '203240157410598153437.9901589781280369716687442'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('2.0', '30.9005', '0.0647238718'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('255829.305796259299396', '126713.955', '2.0189513127915492764470969278798061350069927183631826502455866048849947111192291330501048601948'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('15431192834572000.90470021028', '0.0000000000000256620486562425459818824', '6.0132349686034171420539373578309006898207465e+29'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('4011508326542190985271384', '57100496547046048.45', '70253475.3482755194651509429045610952533282261'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('0.01036658009829337', '918438077.9387792373', '1.12871846e-11'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('0.0000000000000170838967453027186', '174825417059270589.9', '9.7719753985e-32'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('38032598982758946275.324739939', '190.0053', '200165990015851906.6327346655014360125743860829145292262900034893763489755285773607367794477311948666695086926523'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('4664321492627766.879150242', '0.0000000001428', '3.26633157747042498539932913165266106e+25'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('65.2095874987', '1198302437444680054032363.181', '5.4418304979631169022906688292950306147628879222266428749340814636e-23'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('88095913.78353840534589', '3.805535', '23149416.25383511263091523268081885989749141710692451915433703802487692269286710015805924791127'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('11122847708199', '20.20320310764714', '550548724820.21807841343324038758478501374293896644566334692417'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('0.130175140633411', '204070899', '6.37891738955935113511701636596406624346766855768102437770904316935458788761449e-10'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('0.000066665028671734084958731777399', '141645764535715667823', '4.7064611420078603678792513547827127555138290695677177785892654e-25'); - BigNumber.config({ DECIMAL_PLACES : 97 }); - T('382.7', '2505476050361988469938456.90', '1.527454233476739551800040769773752108196110003643051660062558299452991821461e-22'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('67759000406154385', '0.02521038485909572693', '2687741610644528548.368391410155399301247432527422941953500610022370114419260848683535578313'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('198.383853', '0.000000000000000026046885269109038', '7616413669056942682.782827482640405300928645768'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('7.21768', '5267650284.16', '1.370189669e-9'); - BigNumber.config({ DECIMAL_PLACES : 53 }); - T('0.0024940405', '0.00000000000004445742115581387190', '56099531532.85510601457749585122588484865796691686314093436613448'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('0.000000279619307867857', '4.0999', '6.820149463837093587648479231200760994e-8'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('0.0017159651994522573', '0.0000000027883556696', '615403.9881499116270414543818997745552165910821866696915586338656084908803'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('0.0000000000000000001786270', '2980122255611031775.7565027', '5.99394872689124187142255875398493175825317954487825271077e-38'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('2041261099.9740998108591522609', '79449621696975.89220008170', '0.000025692521328289682278091959382409222930806060726346373969158507394888032587019332899'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('0.00000000485557500', '0.000000000000000000139754896', '34743505515.5420100631036211'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('15732633606153.7198933614', '115169907056898', '0.1366036841410425335596073888079588254908008109030114564670131595'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('0.00161231018861641985218', '0.183341984731657095143027833', '0.00879400422645270526350420722026729302828'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('296746579.8824504809154', '9762616616582589361.5320', '3.03962135907705883681054572915476511880339479e-11'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('71.254220189371167106686', '7751861.939565268745605542997', '0.0000091918845749421547'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('6209.4706014993', '0.000895839658826', '6931453.12369495448238792705641479008'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('47366246100063.2483530828', '1052864669574212.36473815', '0.0449879718342'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('84016573140888713422197.0407', '1.73', '4.8564493145022377700691931040462427745664739884393063583815e+22'); - BigNumber.config({ DECIMAL_PLACES : 90 }); - T('10.40710', '0.00002815302747971432552', '369661.842141092633726562850098552395700969276516140729940591267260489984119007491579317910120302'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('0', '52635556463940794625.52389612', '0'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('11010.713', '7178387825026528633.499551', '1.5338699e-15'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('1627653770565866.500', '0.0000000000000004231550519086848290022', '3.84647131878531296895166013319158209474615570098230075915383876653657804044e+30'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('0.063494008345035770490303', '89.32856343726', '0.0007107917770292012652942201'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('0.000000000000000342711931874642283134641832', '8.238', '4.16013512836419377439477824714736586550133527555231852391357125515901917941248e-17'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('6.6', '7783302567285502979', '0'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('211153932636342.3', '7803357038552252838107406426', '2.7059370933963753050603072567861653549289587314010504955676166520166595e-14'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('102908.73467848', '0.0000000000000170569902', '6033229395798093382.26623358205364976993420562556224016591156862'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('0.0000760729907927999440250446', '0.00000000000015890209022486', '478741284.5554780228497926728465032749646985360069076951315538749220907'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('0.00000000000454090', '82.38851', '5.5115695137586539676467021918468970976656817801414299154e-14'); - BigNumber.config({ DECIMAL_PLACES : 99 }); - T('301052414934642090.5101536', '21942.79', '13719878599514.559931082309952380713664944157055688907381422325966752632641519150481775562724703649809345119740926'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('-6087246795159.18662980254720369', '13611.20392390104', '-447223245.58'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('-0.000000023978513162598438538147', '2.5', '-9.5914052650393754152588e-9'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('-10144.9', '355958914523.554621619', '-2.85001992816468390198293884720241046712297231916127035914e-8'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('-0.00037208840961776', '0.0000000000000000749073754354443486', '-4967313398110.3'); - BigNumber.config({ DECIMAL_PLACES : 47 }); - T('15482718217056188596.158306', '-3352455.994914340', '-4618321087746.83378969593299088937142633533167566003637024236'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('377092496691345150.9', '-127498303155909435.136', '-2.957627571170285356160239808471211052581246176070421219189879159085886004136234119014365068954837'); - BigNumber.config({ DECIMAL_PLACES : 43 }); - T('-1359703.8361769409', '36.38781', '-37367.0148375772243506822751905102285628071598703'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('-0.0000000000001733589238387324800538597', '756272628912108.3558869229', '0'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('-10482707013782.55549', '0.000000000000121679703861816792268648', '-8.61500043235397698986559743658466273266437465901472939062822262498192727625876622201508442005841468469206e+25'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('-2202688534808213716278667.2726', '1049513399766474713.9683415115', '-2098771.23560149862725671205968894910158582378774463142851564209037830648912689718707'); - BigNumber.config({ DECIMAL_PLACES : 52 }); - T('-30692572.9', '28971193989065904244207', '-1.0594169129371666894834088126698235712e-15'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('-0.00000000000245', '3.388023', '-7.2313559e-13'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('0.004268434057', '-101538473064491718754990.585', '-4.2037603365267495273770001874032686152883780431863e-26'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('0.245497', '-454143995', '-5.405708381104984114124e-10'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('4', '-0.0000000000758767', '-52717105514.6046151'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('246.08092818928387866', '-0.0000000000000000043867188851978938040730233', '-56096808259046366468.33190521818927387440240164527'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('-3', '138871518696208152678486.18', '-2.1602701750261150897669197e-23'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('-24226.54935845659225882121599', '120354.30303635593076853278297', '-0.20129358691'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('-31.8695', '0.00000000000000000002459', '-1.296034973566490443269621797478649857665717771451809678731191541276941846278975193167954453029686864579097194e+21'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('-0.000000000000000692717798321382073178', '517294.198627333564', '-1.33911766294604490628118e-21'); - BigNumber.config({ DECIMAL_PLACES : 40 }); - T('77735.49995176549986', '-47.2', '-1646.9385583001165224576271186440677966101695'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('0.0000000000000466099043570323031', '87769334196052069911', '0'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('-3.4194', '4837700.127', '-7.0682347194605268264905002450971471717267108730817783489290674672e-7'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('150329968.0', '-0.0219', '-6864382100.456621004566210045662100456621004566210045662100456621005'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('-4349.077116612635', '2852268.76219665', '-0.00152477816054866830067962030945222428732198838066513557565729883663992256833991832181204355314'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('-0.0007857896787500243812', '15429864467', '-1e-13'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('-967018952930714.206742', '170408633621.371104262290154', '-5674.70633606112939324782576385375368597464776233194192770922367669970714270241667204912917062429'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('-751039058360574034', '3.4269', '-219159899139331183.86880271'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('-37883543940.646067824658736', '213.838736949', '-177159407.510348312652'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('0.521598040129430619', '-541426710309.1', '-9.633770004284620316710314975234305749627823298171e-13'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('-0.26883230588104219', '25.5', '-0.0105424434'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('7565247800163216.93336759826', '-3', '-2521749266721072.3111225327533333333333333333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('0', '-85908895673544761.98836', '0'); - BigNumber.config({ DECIMAL_PLACES : 49 }); - T('0.000000000000002767512230351828925', '-895895.2195206', '-3.0891025758935790503306645578e-21'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('-1613960445437020555.352446', '52527030079358711.55', '-30.726284029358260767137073087343550502479108754500356263252014494867642749749601'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('-0.000000000013246195', '2265913525391301918', '-5.84585194959e-30'); - BigNumber.config({ DECIMAL_PLACES : 38 }); - T('0.0000000000000000040299737469408272864', '-11461814490866425552', '-3.5e-37'); - BigNumber.config({ DECIMAL_PLACES : 49 }); - T('-0.000000000000000000045123419691119489', '378887.2632580407', '-1.190945805438390787770065e-25'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('-2228389446881164.569583386526', '1.7', '-1310817321694802.68799022736823529411764705882352941176470588235294117647058823529411765'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('48936887596017274238', '-161.7', '-302639997501652901.904761904761904761904762'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('40248.1752', '-733206848.884751441879538648', '-0.00005489334321033651263042538779438279572906654102547687346861817'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('6016075881224.5', '-18744.5787627104274450559393335', '-320950177.509061709657958921608109958611955412'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('357148', '-1014734345992278.2839833760', '0'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('-1.28', '134534.543991648127634449', '-0.0000095142850454784467426396195954924017894534202269264679132073917818193408954988'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('-3.1', '38.80056173', '-0.07989575051958919152483105042922789664468087070655922691972841188039161'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('-0.00000000126976154890935660', '0.00000000000000000099376', '-1277734612.893813999355981323458380293028497826436966672'); - BigNumber.config({ DECIMAL_PLACES : 39 }); - T('-20845.30906', '0.000000000000000000172211024371950066332356', '-1.21045148741332894556456104033622585482017040899045184261921517e+23'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('-23790362294879356527851', '68497245877.7183', '-347318523395.087388040273290084163184839352772220510644863544098138054197759835512134442283185666047651385283'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('8.583931069048565', '-0.0053766853303', '-1596.509846070834137168810241466996'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('0.0000021043997569277', '-142495.10181961243', '-1.47682252235708723609e-11'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('-3160482200893344218611', '2.81620627948542224771194', '-1.122248119363908290618108553960186614023265325364715436562859187676683476518e+21'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('861.846', '-0.000000000001368813673879419387625', '-629629887870276.4606141715970185467184132090190814468966283236638652154421410107'); - BigNumber.config({ DECIMAL_PLACES : 99 }); - T('3129.8183167098383028206492356', '-6.7464917', '-463.917908134362383165853333162775550439052641241669355348054456214627819078173623188478835599842211323'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('-2696.17096', '15758867512151197.01504', '0'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('199908738906066598302', '-497355133128.441314925906185', '-401943652.714730154441169259507959263404861416680136981594'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('212836227263', '-1161074202862496094.32493278645', '-1.8330975465502251557078469432276792259632438939752396515808467e-7'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('-8', '699941.1367930', '-0.00001143'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('0.0000000000000000004346846097188249974', '-0.6468606811307', '-6.7199108308609000589517673316350542100042998513190478019371229217e-19'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('-7', '0.0124336761913', '-562.9871561958472313203613033197006802285389994302963507320206916253'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('-592487865647816074208.9', '0.0002325813133042', '-2.5474439766056511020103362077436364184786668630544257881063887332084867340910502792e+24'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('-0.00000000015150248650122631', '31299828314741213.7957670', '-4.840361582107257280684185621263865832363038403166941198514442e-27'); - BigNumber.config({ DECIMAL_PLACES : 52 }); - T('0.05385251423043878014329410730', '-7009731.9176165631080', '-7.6825354897095149757976838088185670184786821e-9'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('-2869296738160182.08', '5275711255483564', '-0.5438691769148360120657047290700255653760152871566722132296398692657076'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('-3.086', '300617851.8', '-1.02655247568368127098698e-8'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('-2162538670232.82', '76', '-28454456187.27394736842105263157894736842105263157894736842105263157894736842105263158'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('0.000000223', '11392868435907243260020946', '0'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('273.614', '-20.0768056468842', '-13.628363237279395299357053838579'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('21494.42065902', '-161359338353634278541', '-1.3320840850198e-16'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('0.0000000000000002441632932', '-22637271688.276618400030294805', '-1.07858975481770266889298727445471e-26'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('-0.000000000000000050', '159751141000999218.54446', '-3.12986809901328077371135748209199228658137e-34'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('-0.000000000000000060253739715834011849757914', '-59185017.11969744078424660', '0'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('0.0828659039180798114893763', '-79044963871022419790863275374', '-1.04833881704711783221790638641876382e-30'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('141101753155.93921', '-61.7259', '-2285940798.85330485258214137015418163202156631171031933110736335962699612318329906894836689298981'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('352177978.04833885867316', '-3850238807.599', '-0.0914691258509121489638716902503655164940606905113607012645994921380742563922979856924531'); - BigNumber.config({ DECIMAL_PLACES : 93 }); - T('0.000000000019242304009909548', '-1103.02862808630674', '-1.7444972433121590113350537202648637562642369357005293714752956472438159076957305e-14'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('16008715289429670922740', '-70717248310762607343318340768', '0'); - BigNumber.config({ DECIMAL_PLACES : 62 }); - T('-80796416620772.49', '582234076329.1', '-138.76964593034812260683009705892276744363639278697810729615472539'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('-6', '2284317445897.9', '-2.626605e-12'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('0', '-1', '0'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('-90293.2467603640021317080167', '514956.067659497', '-0.175341650348449452779933259704642639008984223699789775314'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('42.99', '-49723990781296484140030', '0'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('346867740262195.5276611', '-284675.8171779896732317330', '-1218465775.2130775565206302399188403995613678817'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('-197013.69860197495737', '1454360428173808638', '-1.354641495914175946154713798295457924435812369729510086473393391e-13'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('0.00000000000000000082484000183949687657521443975', '-1116673451057963519275795', '-7.386582004416989114355580556503329656812438480990852e-43'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('-32692373581030122881584.1431462', '100.884572013739380306464098', '-324057216365826258794.9'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('0.0000000000000282742789950039935723613063438', '-3.57206025395698724841646772052', '0'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('5.22043785262', '-308402801281.85564', '-1.6927336038847892523762980966128027e-11'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('-21721356.9197', '148671949134', '-0.000146102590611240677675475615050195296647882313355451942116999083373300788758596'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('44960.510157279', '-30424592651942.0875382058813', '-1.4777686811333213974853344785940453236841834732823614913817e-9'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('-0.00000000000000011636910762', '449', '-2.591739590645879732739420935412026726057906458797327394209354120267260579e-19'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('-144539878734454885586679', '0.0000000906421996', '-1.594620158958001341206188028120182555675756129819250326312690232e+30'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('-22081842237071469', '284922994484996039870.1110722', '-0.00007750108859056755506349932481083822895927837291306991972114894458652246264255274407'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('2.14', '-269885643638262984.7870', '0'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('13.353763161', '-0.00000005203262508730', '-256642119.028112516115529004026114729912630471336538563109591'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('-0.00000000000000000063240380034504119331863466949', '7', '-9.03e-20'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('1084295779773917230', '-21463532888.28479949279732', '-50518047.77049291306855488793938320622722483061248617095243'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('-6.0029075812975942', '13463169477049170.25', '-4.4588e-16'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('-0.0000000000945', '-1295.635726084497405947123504', '0'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('145207619444229.4', '-5641010', '-25741422.09360192589624907596334698928028846'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('8150729348899225.709684485', '-9', '-905636594322136.18996494277777777777777777777777777777777777777777777777777777777777778'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('26.7131833488810748720784483088', '-374128', '-0.000071401187158'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('10298.7', '-7840043630', '-0.000001313602383613265682808451411640932411494755929'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('-1500987398.158', '8385183368233', '-0.00017900471966354879364379251712996007835290064246'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('-942418105884.9762426609', '0.625214732956398862117578921596', '-1507351084688.36812446263084236256657662852815385546645436201131093940206583773952585385929168203507616'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('-20468473392546630967438.9133608', '0.00000004046201823988790038541384227', '-5.0586881927626106144306203802293948e+29'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('-0.00000000000001075547910728888542191909', '233.822', '-4.59985762985899e-17'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('1177836559.736550390351', '-0.00003760747700316374', '-31319212390596.278110929242370854304284800424'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('213.88961302626348247', '-0.00000000000000077361085634702828288292462', '-276482176111443228.824'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('46697093.4', '-20723907537471492012355.0213', '-2.2532957800340329243884850474515815198739629799399150373623375448972808133929339818853e-15'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('-40658898945782219470416.90374', '19405449003411531807950.568095', '-2.09523103220308234863'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('-96200111.213345', '12.685992', '-7583176.09007990861'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('89621369.6424', '-3620221212', '-0.025'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('-1234363566267.41', '12163652.21', '-101479.682660822312347255117712708755588466'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('383468905455.437167186810832818', '-101796.9774', '-3766996.9703387'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('2295041689330090973975', '-0.00000000000617787320497619', '-3.71493815619502705822351101397463883321e+32'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('-0.0017097176217824664195662', '0.00000000000000000720119661649', '-237421322154624.8046104500149285855150555985177148448416034369290736104940637453160060704'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('0.00000000000569151899406225575759269', '-0.0000149178498425356740446144', '-3.815240838417525618960024220365413235083149662771580580992606563675918370259e-7'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('-8372779', '0.00000000000001464686057743249018718', '-571643251175652254131.4321136213344319088513737753429223932116218317349858742115861062'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('-0.0000000000454859144088600', '0.00000000000000032397823887905649', '-140398.1'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('-0.0000000000277', '57961.55509', '0'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('311741.778345224139', '-0.00001931836468259', '-16137068715.04348943826012100910946705383379688484949265737951759265510715242504017557'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('0.000000000000000017333930078997', '-1502877529963110785422463329', '-1.15338274299852455941403316073046645113191957535e-44'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('439329.418790988247209033736745', '-71451006680046026674105824', '-6.148680602336129939194989800776385838981449739616371547331751596e-21'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('32485531877991.2396', '-1174912009878725269619108527183', '-2.764933169875793919833937614169141e-17'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('0', '-1.0626022746419562', '0'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('115148.6131710989310000', '-0.00161', '-71520877.746024180745341614906832298136645962732919254658385093167701863354037267080745341615'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('0.000000000000036725683560979526299402', '-252.8367493753159247015399810', '-1.4525453143863666557198601432320272195848995490868650390224984029622493e-16'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('-4.68415', '428.865838789', '-0.010922180263242137211922097044702043700039562304024750374555298'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('1789034028666225905476933590', '-12.1431059167', '-1.4732919575426154657687418851928163e+26'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('0', '18752004595259004034.232', '0'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('-33094285525423.1', '1153.535673900762509691107259', '-28689433950.067995403484583593162726553039749442560958950377965'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('154924518173.06', '-16072344477308.433', '-0.00963919846241402539226090125981243883973606734009921417279060345236051624015836410289373835'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('-526755.99680798148680', '1031144031041433508617', '-5.10846187293514320791149086796475886359358206319575561796437535800006e-16'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('0.00000000129532365', '-66423.203042185957717085805', '-1.950107177423119163185231356838612799231416661465646416511454368111971e-14'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('49088919081620947576823900', '-89496.29598784', '-548502242911714858575'); - BigNumber.config({ DECIMAL_PLACES : 97 }); - T('183.6', '-110983133499774', '-1.65430542651216342730485032605941781391214214028246142575983256304636345629264899194e-12'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('-0.0000000000000000004628920720112747389', '0.0000013627927993533014921', '-3.3966430717195977e-13'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('29351', '-40833836436.51245', '-7.1879114385037733803822287841037363472380354594428602889946812795942962026677767562e-7'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('-4306.1915', '3.25', '-1324.982'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('0', '-124478312817954.3812142660817', '0'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('-44426.901196', '383655444836490633023882.198874', '-1.15798959180506911643331401407257423616980032323967173929e-19'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('0.00000000018875376062486570745829037055', '-4', '-4.71884401562164268645725926375e-11'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('0.0003661179207403712', '-356285096184.2311059', '0'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('1475.970509573956', '-170444236', '-0.000008659550737602860327878732138527700050824833994386293004358328667682255913893151541'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('2.91398', '-27457681923.8431588', '-1.061e-10'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('1.5200', '-611647.0045456291518890', '-0.000002485093508'); - BigNumber.config({ DECIMAL_PLACES : 26 }); - T('0.000000002795986705820173250725441998', '-15812956587128.3811178703066463', '-1.7682e-22'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('16931675', '-166.933029172849586', '-101427.950381636103707826792452493472486374033343802'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('0.000000001827969353', '-0.0000086263', '-0.00021190653617426'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('-15370.000', '43962.05964298935764961', '-0.3496196521459171064989623731323059954874621505738507951156748277043685987999043389124165452484686546'); - BigNumber.config({ DECIMAL_PLACES : 0 }); - T('-118370977214.1226', '2025', '-58454804'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('-231287663424299.8513325014', '1737349688.89407', '-133126.718761799003983325'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('-0.000000000000000000114369682499894100', '346451176725.76308254', '-3.301177487136219883763263254954959553880615562738286765216e-31'); - BigNumber.config({ DECIMAL_PLACES : 0 }); - T('-0.00000006895', '-2334066710432.41962437', '0'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('14814025653103.224687451232', '-340.9364406', '-43450989360.45859771157366860830657712920347769947358'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('0', '55384', '0'); - BigNumber.config({ DECIMAL_PLACES : 49 }); - T('0.00000602239289726264791395945362007', '-3612.49', '-1.6671029946830712095976607880077176684226e-9'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('0.00000003076765653944140249326946', '-0.000000162953028546', '-0.189'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('3551.6170974', '-0.0000000000000000000403993958947885250', '-8.79126288583477177063322788976061895e+22'); - BigNumber.config({ DECIMAL_PLACES : 0 }); - T('5117.1807', '-426.74033433604132955959062', '-12'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('0.000000449865656708', '-0.00646', '-0.000069638646549226006191950464396284829721362229'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('-0.000000001509496360', '368453885855070.481278236887039', '-4.096839300519015147813166237174198490790445033523731055e-24'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('10325083760456', '-1', '-10325083760456'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('195201713159.041', '-0.0000000000001678706857378681675919804', '-1.162810006410830522982744130340477246447936427266297453527042507162937872390754988322320136761669503e+24'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('-90.68053083405683', '35295599838.32309719026533760', '-2.56917381343376780493451453883388246130562997049418718691415e-9'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('-2849157.0', '9.52990', '-298970.29349730847123264672242'); - BigNumber.config({ DECIMAL_PLACES : 49 }); - T('0.000505068647902848043', '-7.6', '-0.0000664564010398484267105263157894736842105263158'); - BigNumber.config({ DECIMAL_PLACES : 47 }); - T('83219971646936300794306.13542', '-0.00000000000020', '-4.160998582346815039715306771e+35'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('-4154268181473153337', '72414644.088348531147124', '-57367791194.34452029'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('-457067781911.9760754982805', '0.00000000003558631116216360943173283', '-1.28439213558595446764566555636062725371453e+22'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('56767989770720959.22', '-444092006075594509263.2', '-0.0001278293439064016'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('-675391228125677423.636683', '0.00001721212', '-3.923928186218068568175698287e+22'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('-1.29524', '6294.488', '-0.000205773686438039122483035951454669545799435950946288244572076394458135435320553'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('3.068', '-0.000092452460368206301035469113', '-33184.62253769356579735779815488922331806200909209429126300172358138439344947294183'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('-2.78626', '1746.468083380448', '-0.002'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('-2215841545490634361451248', '0.00000000002340886937065013959436', '-9.465820456364455823068204109973565026106517233e+34'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('-0.0000158270981924009894', '7902019.222874', '0'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('-13.29', '1285.2', '-0.01034080298786181139122315592903828197945845004668534080298786181139122315592903828197945845004669'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('-0.0000000000000000000478438', '-526009.834063261613852045748', '0'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('4610403834044306479816316.521', '-3256541.2', '-1415736375159112520.92137403973270782'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('207869.0545', '-72932990693088824862049', '-2.8501375375478438962361314970980939004483672608891163469734e-18'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('40.43714', '-188.50022950304', '-0.214520375421335272478907728712681066018083811'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('2.3', '22336677063984259.08', '0'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('0.00000000000002175927850', '-77224.6', '-2.8e-19'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('-23149721658836330807558648', '5814442707701474997.222336', '-3981417.10609'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('1333.866734507903709876', '-7070734811057702133420280651', '-1.88646e-25'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('-4560425036005.582776', '80.8', '-56440903910.96018287128712871287128712871287128712871287128712871287128712871287128712871'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('1511765514663409.78', '-0.000000000000000000073638635296164468110533683', '-2.0529515635145826662188281610788133129511185060716564e+34'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('-23543643', '0.000000000000000000041997393778663357', '-5.6059771527921033322615738603183415651793212065528791828636767e+26'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('0.0195', '-126764211576876.83826753960421', '-1.538289061039449613471897578165359641323374205047037264562e-16'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('55.446', '-32030345653417401201.609', '-1.731e-18'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('0.52272269961315407', '-429.78662391', '-0.00121623771083814712664355334008235631038952963770007339128592007'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('0.0000002196701418358686', '-508970103971763312488546', '0'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('-100004021095.663953962373635416', '0.0000000045534', '-21962494201182403031.223620902182984143716783063205516756709272192208020380375104317652743'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('34540.071022932280763', '-59.59207', '-579.60851205424280047664059999929520823827734126369498491997341256982682427376662700255252083'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('174778773.42377864467671', '-97.4', '-1794443.2589710333129'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('-7.0', '0.0000000000000013579093424307028725254050345', '-5154983312413012.2373980900074522160947301027219'); - BigNumber.config({ DECIMAL_PLACES : 40 }); - T('-1187429217160.895861976740510176', '47.88', '-24800108963.2601474932485486670008354218880534670008'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('0', '1.2', '0'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('10.50184615828620532989098', '-15965843628.553989590163718', '-7e-10'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('64006639.058', '-1', '-64006639.058'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('738.4', '-10255.8', '-0.071998283897891924569511885957214454260028471694065796914916437528032917958618537802999278457068'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('-24476236689.079', '4846294.0932902599', '-5050.505854146693584867831531066272355208439244177011183672939584339049504634283845'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('-991408148470363235443.494311', '0.00002033568166712810', '-4.87521473191104750082000907017566350647135636561304848289376836699974824955973934646620653110942892413466703e+25'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('-0.0000000000023797696408774593', '134919162817006', '-1.7638485083880903111144426414213399524592121e-26'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('95453.16345044452', '-12623427274889812306472', '-7.561588574310356139348134041215762100188607179567923e-18'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('0', '-11304.9298719618293220229418', '0'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('-6', '-227222120700146329648915.5090', '0'); - BigNumber.config({ DECIMAL_PLACES : 26 }); - T('-0.00000000109953701028880385490871706', '14.339249434385664063', '-7.668023457713924e-11'); - BigNumber.config({ DECIMAL_PLACES : 90 }); - T('0.00029382283548', '-278902025.8720431895413102', '-1.053498390918115072872378281569812193389271328071295862109487360627803249206521e-12'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('-2239906038.825625589977060', '0.000000000000013316056741104528065', '-1.6821091126109394436614252485124563576407825107313322043066091580430616518952605429463215316570249e+23'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('41558406932.761', '-0.0259981', '-1598517081354.445132528915574599682'); - BigNumber.config({ DECIMAL_PLACES : 34 }); - T('-16889244448527724.5317', '16.5982', '-1017534699457032.9633152992493161909122675952814161'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('-11527722853992907.0732990057', '215629.1589013135', '-53460871955.952735564767172042406358983030375524391982413602556287204128413064812902395638701593'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('-0.00000000000000006542517463648212668759', '-1160782864', '0'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('-13057455871', '1800', '-7254142.2'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('0.000000000000000085892600', '-216414964601081767130693768.7', '0'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('-0.000000000468753372916607326', '-25596.5', '0'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('-40713683082797.943619860501', '43214701062054', '-0.94212576003557844138763603612880795852464537338142536263733562676'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('11060731.4', '-10896.67463422902', '-1015.0557'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('0.0000000000000000444111786699613385010092826924', '-151.7938', '0'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('-438708982319.19364938635', '2514.766771', '-174453149.046796296079398927289229717597537000380541452605347790321983700174'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('-377609912449686010094993846', '0.0271867', '-1.3889508930825955709776980876678670085004800141245535500814736617537251670853763053257659075945223215763590284955511334586397e+28'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('-6930606.43933187535503068986', '18561.133929', '-373.393482631115783218843766148011614'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('599.205953130921538045659', '-1217874296044481', '-4.92009688583686517912820815455259e-13'); - BigNumber.config({ DECIMAL_PLACES : 32 }); - T('632.22646', '-2408415565179017275087792832', '-2.6250721e-25'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('0.0000000000000072', '-0.00000265139479', '0'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('0.00000000000001580832780', '-0.000000001014640248863', '-0.0000155802293648'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('-28.5', '13.752930224', '-2.072285653734005303857637022502790820528778682182893041048849867268839'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('0.0000000000000056', '-2652.6094296414820878', '-2.11112873890253698896665555492939636611705010925282e-18'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('0.03257', '-5912515099441.78956893084628', '0'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('0.0000000000029469210063592843221', '-34552.055843', '0'); - BigNumber.config({ DECIMAL_PLACES : 26 }); - T('2657.36', '-0.5708938602669787524359', '-4654.73564342990916910223309038'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('-17.92758963011355837', '424797960970965706886524.5', '-4.22026263712195214473274707686480883537999661452279e-23'); - - // Rounding mode 8 - BigNumber.config({ DECIMAL_PLACES : 73, ROUNDING_MODE : 8 }); - T('98.279720', '2.53957847', '38.6992255450960725777455500321673462604209272572703768432876972689093556538'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('567760561.7785308681773297', '25.70527530', '22087316.9'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('0.0012191112606041703889162', '0.000032', '38.09722689388032465363125'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('129657255941820913688848', '33081581802.919547384', '3919318511256.26277'); - BigNumber.config({ DECIMAL_PLACES : 60 }); - T('0.0217584130', '20.190198000585', '0.001077672096101759964106368368502268997284037166777108290738'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('646.5843279', '269072952197356.049', '2.4030075212678825104846927800254704083201459834859925333e-12'); - BigNumber.config({ DECIMAL_PLACES : 43 }); - T('7864078301796658569643944.23236', '10837904158.13', '725608769652890.8010656231924413617780013056071223314347263'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('78679420542045375.9975', '0.0782661303193792336016', '1005280575658712602.61680378079930506136624703481529194064192962117609952681462485873187679145246510441123971833116'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('7.514', '256.60', '0.02928293063133281'); - BigNumber.config({ DECIMAL_PLACES : 26 }); - T('0.0000605257696842294792', '8033035003.233', '7.53460798563e-15'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('13837937692767479166.65', '275610217.5', '50208362441.3070940182034434191468246274287708509935775512386437560138713'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('2.2565965', '100585389373.34587', '2.243463503058204274951773207641628982021885698427e-11'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('6133264803063744580897553177', '9995746.796702745151086720621', '613587451523571883660.1575705543668700897162744310354121480887959030268229442699890503634942309767'); - BigNumber.config({ DECIMAL_PLACES : 52 }); - T('559642614623878559406', '0.1484896293938559908', '3.7689003394269008645348669826984575696063765927445382806274759040238226477e+21'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('7', '5.583', '1.2538061973849185026'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('0.000019392833638', '912499614.60', '2.12524294013000452175752623052121560863177596349200693678846404194415535920819226174e-14'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('1856578117288670194.164370', '885051.284694629512509739', '2097706821508.3693696462196233117313417739235657909916514451444495705075128837'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('6.7', '9723.09', '0.0006890813517102073518'); - BigNumber.config({ DECIMAL_PLACES : 85 }); - T('2714014896637441245', '34614182791153137', '78.4075970538614742132440602741198612612885622756238264830395543075257221019743367280142'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('0.00020170', '8', '0.0000252125'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('102538367478655695.075405188', '0.00013596981288', '754125973308140181617.974349896009064802649156958963375459489710816464573'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('1128723265306.844245', '26132204626636641662.6', '4.3192806785093551895102839159321771479520060953807911856977757e-8'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('113223838307388069631593537.840', '9304003647533688952924', '12169.36736019031062911900307415852967418356356710503674260874013723509386108779872158719419219'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('12160.3647741798522812607676988', '60689168.916732881', '0.00020037125225531081480095322605'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('42884.218', '5329.5', '8.0465743503142883947837508209025236889013978797260531006661'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('60357614629933.010037051378', '574812381.00740122422567785922', '105004.026747217631156932482582114856103973819981158519761390819080955050829400336586'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('0.000150194537', '0.021', '0.0071521208095238095238095238095238095238095238095238095238095238095238095238095238'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('8804964.1459992689585824461', '40378291.606', '0.218061829656282386663549474688986176717443957923552571809617735'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('0.63909253839264108', '294.940692616505391', '0.002166851012395284369118179744'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('1023243.070', '9.51441130417414270754', '107546.650789743021923557496742565683663'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('7', '2117.74441844', '0.003305403588388'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('41488521062.77986', '0.00002008707', '2065434185412798.38224290551085847761769138057466818206936103672661070032'); - BigNumber.config({ DECIMAL_PLACES : 93 }); - T('844263691.81902410775', '849374349595.80775419530', '0.000993983032594266994271775568537851134160059362982128423015854142015009634155367884379090417'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('13349918933820', '4.8', '2781233111212.5'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('103760735.6946522860573', '0.0004066794', '255141361216.359338725541545'); - BigNumber.config({ DECIMAL_PLACES : 99 }); - T('68917515178552754.0', '0.14', '492267965561091100'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('1031321877143445764011877', '33533.28411855', '30755170698384932347.16716890130212497978525108505503021614960729391920145088917232195595937553032431988707255'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('0.02960', '1016451.52', '0'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('17245127707901932.49', '15580355401258735553027686444', '1.1068507273273560966150042669129924380128661863167389006956883625215153093650921e-12'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('1', '209.18012626629520667', '0.0047805688707107740463542216'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('7.79', '153378108750701532.05407442', '5.079e-17'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('0.004200', '1635366313', '2.56823194082755940931504316733470588494383398736427316881e-12'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('0.0228701', '5645801207898376084612044', '4.050815669528912e-27'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('0.0033960799', '6.75182164', '0.00050298720568690851851353111276796109205278118099103103677365505762975'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('7.08285516742655064343921', '41358.75514', '0.000171254070473131524'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('0.261974324049215172124', '1038017550335', '2.523794746675218045305497922287208145983452082381019041925022001e-13'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('112905012578123386.8', '290487062922.09', '388674.8395690345891611134670102067513236044112423072681893863179188640425926943863878606519681'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('1.5087535', '187.4054956619681', '0.0080507430941161297879756641335428652573953779583996227223557'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('588.42740761976096', '9.5', '61.9397271178695747368421052631578947368421052631578947368421052631579'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('68296130005806947526.81816792', '0.039530792374', '1.727669138520136144003571951269382364645034069207549854209254257434025e+21'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('566421798102744783494667', '5195.650', '109018467006581425518.398467949149769518732016205864521282226477919'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('11359422564.37423411195876', '0.00006551526', '173385903747832.70511265253316555562780335452'); - BigNumber.config({ DECIMAL_PLACES : 10 }); - T('5.80', '407750993888797', '0'); - BigNumber.config({ DECIMAL_PLACES : 53 }); - T('7687825.6738488', '1057505129', '0.00726977625263962194929458351591597812477370972637618'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('0.00078563973970489', '202107544290040667654103220.376', '3.887236087423997640951095666504554463e-30'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('7.957', '9332.9282488444250412050295', '0.00085257271756966648521864328811305903793546656282144671796441534561142844065'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('1363993.640215242473', '11322181003651970211710339', '0'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('70051191.07525111147', '180874508835.433332', '0.00038729167269770674'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('19.967022398', '911742389938', '0'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('811691978843777618265931961', '1.39233479313', '5.829718418650414913702990162380156278182283191594640546408220604573322130150537811835339292897642824273878813315265443e+26'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('785907', '7600844.0115014771025450', '0.10339733308705953458'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('5417495622857086103130303', '42514587331142358.59392', '127426748.3925150700035933258199706194577051286199226663494412517'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('3580181223966485629383762', '86567.2', '41357248749716816870.40544224602389819700764261752719275'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('0.0000943', '0.001990995881', '0.047363232088976883222391759433278305210115098'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('8.91022368966896404786448', '0.03976933558288092342', '224.0475873955624205613672819256304872438280858760387773354384'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('381700.72', '2.2105', '172676.19090703460755485184347432707532232526577697353539923094323'); - BigNumber.config({ DECIMAL_PLACES : 47 }); - T('0.166', '3418904.547797444446176113', '4.855356377437969759910445352291295989815e-8'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('65903.58933744566987', '56.2615595533', '1171.3786439746873377398855234090000936127676128572206789737162868850253237119769182038338319'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('1364.6', '1', '1364.6'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('1', '5897.1660228538858402716968', '0.0001695729772783398899888240918068539485885533810472934733226537712262559577239337'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('1569245.6135066', '7114895275448.255083650', '0'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('0.00009130', '44.7', '0.0000020425055928411633109619686800894854586129753914988814317673378076062639821029082774049217'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('147753814958.677594', '1306.6440741771799803', '113078854.355744229099762226676784700240199575836518150301745721'); - BigNumber.config({ DECIMAL_PLACES : 32 }); - T('921277167355764.87', '0.006283411187', '146620544149940711.17758921225920400679326097396147'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('68535077.68961895546', '0.00020476107110133807', '334707556084.72246032'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('1872307.169908427', '633.45', '2955.730002223422527429157786723498302944194490488594206'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('9107.60078475', '36542593.211876613610568939', '0'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('3.72394', '0.0193816788', '192.1371228172453255184478653108212690017337404229400396419736354314157760163'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('1.07', '0.55756802460172206', '1.9190483542601185304611221787'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('6.17', '389593.210', '0'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('38780128.7122', '3549568036202326830.2', '1.0925309309943740094679096249984072870308e-11'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('2', '22.81806926', '0.1'); - BigNumber.config({ DECIMAL_PLACES : 0 }); - T('0.0000100', '1139564681325', '0'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('46.50319', '3416231842748933380.74230902081', '0'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('1', '7379791076831238.56', '1.355051910804748180507625617404703505832609199543246e-16'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('0.000022443054742391293104475', '0.008064051238131175', '0.002783099223907265067377410989707648496147253672561285876033737240647636187236'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('625145862686.997263120154', '2107779905203297.038208159865', '0.0002965897251149196483307959749934321300112818055438759362685105274'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('184386.9682167', '84432536994766383635239875.1', '0'); - BigNumber.config({ DECIMAL_PLACES : 38 }); - T('3.5448928900685867111376203095', '163550.93004066', '0.00002167455048520543104468539239259044'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('318867142782283.0363615', '676591310394863109686.52422', '4.71284714839435475918651247413746523e-7'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('428.1', '777.391', '0.55068813505687614083517817932031628871443070475475018362702938418376338290512753556447141786'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('0.6926940356', '0.00039099680', '1771.6104980910329700908038122051126761139733112905271859002426618325265066107957916791134863507834'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('0.002130211805', '140.19660134762083', '0.000015194461096229350255974061693960641852324192167557092840177376'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('49981882492075177635482718', '145796595747510229984200694096', '0.0003428192697903148316427330346057289022069783388696851477455'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('152.8586609630441', '107410163', '0.000001423130332304254114203327295946846296099559964358307509504477709432393'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('2.933829723', '1491.3817233720637', '0.001967189001328589019839007543945424526885'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('156217760732890.34181906', '0.062726236685805602', '2490469203746142.36826638502513312167296'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('0.0000547574887966090149', '24563584.6437', '2.229214082e-12'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('27591022.7711878347573089269', '935.18100071', '29503.403886777445219371373877619759754411146691782752054238'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('11.076', '456170163920614807291064343', '2.42804130476352356723599286207859050694e-26'); - BigNumber.config({ DECIMAL_PLACES : 40 }); - T('1', '912586039339459022586.3891', '1.0957870895371271241e-21'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('30521310.73994', '13399401100577405739962147', '2.27781156119169971932669239543326815443551088771527744274e-18'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('0.003060360361', '40814243495.1557', '7.498e-14'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('393562142372.6699944163', '2709111978097.9730553380', '0.1452734864983263187522827746799'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('159837823.83396', '14505.28645341', '11019.28075307911293485694830191635452262752322811523282893369238174101063535102774433337684219419086'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('277723.92715223712984194709', '909319009144881.8606790641124', '3.054196869956639796826219565e-10'); - BigNumber.config({ DECIMAL_PLACES : 90 }); - T('5154325576234', '238231.85', '21635753.473912073469605344541462445092879058782442398025285032207070549131025091733116289866363377'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('24812964145333591', '1878494699477.89929200135933136', '13208.96149040505631773529079144196060102935838240800320787494878988367434179429'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('5.4', '2417740018257723686.948179', '2.2334907637800353956807877701697903215360962459590518620256780423842788e-18'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('3716641856955803178.210', '3562351870.3701495053437060', '1043311270.8121171722993'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('922353440.1222198038485563827', '1171478560221579954809', '0'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('1616227508.5386179952261148005', '125752725147536.893701', '0.000012852425318357205'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('0.00002995', '269908512252198465961060', '1.109635251963271509119907392064404912967049003603986598448525389918281476e-28'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('0.26', '6792618697591', '3.8276843081477385884074285311309311873334525946946333526154459025428012291e-14'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('1084.902723556411673448636981', '13.27757', '81.7094335451751844237038088294770805200047900331159993884423129'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('207389914022.22221', '1053192.0136883', '196915.577906766007469497356564880225194'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('131.669219908878655', '0.0005307509', '248081.01108990800580837451241250839141299619086844694940696285206487638551'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('2', '53569022282027512', '0'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('0.03738172891910893041812276477', '52', '0.0007188794022905563541946685532692307692307692307692307692307692307692307692307692307692307692'); - BigNumber.config({ DECIMAL_PLACES : 60 }); - T('412264171442951057.7361095', '50867725637.06220391', '8104631.498259390479455821393714832842253133346477938618046134121269'); - BigNumber.config({ DECIMAL_PLACES : 49 }); - T('0.000014599', '0.000244239824', '0.0597732170000253521309448699897523673289250323076'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('2985804868.615', '482745099093247954326254', '6.18505475088884599340849357229221901935477717691061428e-15'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('1116399', '84553466081700776.9557', '1.3203468192791368128410881062598342805009693925396921044310838e-11'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('56.47', '517123748551.41', '1.09200168e-10'); - BigNumber.config({ DECIMAL_PLACES : 87 }); - T('91890006292.8931376', '1571814055.6', '58.461117563817984221873629617643177410965506065169201175579562618589933927551016614029062'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('22630058916.8929', '158399.84399', '142866.67427729011363655699772258342613788075612864118452847978717254796'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('0.00257381701', '2728.0', '9.4348130865102639296187683284457478005865103e-7'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('2613.2484185', '2009900023138286.18110', '1.30018826230950390436120395966100721290467931993643111597e-12'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('0.0000561357186557576060078609217', '34430.01836170882655364741890', '1.6304295300111912206696516226345647077432147176729656846977674487871225e-9'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('19341833369042334971814.3', '792', '24421506779093857287.644318181818181818181818181818181818181818181818182'); - BigNumber.config({ DECIMAL_PLACES : 25 }); - T('8', '5878749.616759672569203', '0.0000013608335992390072977'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('0.0013157737110166924023882', '0.00002450730617641171810659288', '53.689038752171162045564690319695207836437329411996357070555570567750137'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('19810.5', '2877531874906.917236', '6.88454580564492706183282039699170937193096e-9'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('2445412586541380912833.924775', '0.012371088804317191', '1.976715732319369476938170286069551427398460449463285166e+23'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('13488954.69149290270474', '0.0002040', '66122326919.082856395784314'); - BigNumber.config({ DECIMAL_PLACES : 38 }); - T('141.84130518408', '0.260237160284', '545.0463147895052597399253290108960863272'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('10641673.3330931452141539307931', '26227452783350405180887260', '0'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('255357.87552', '294742078902132776442', '8.663773984059804047707640588294408274426684397902483873876159418581450563171e-16'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('211.47519696522740215766', '173739178.714', '0.00000121719924389274560754650074499488231764083760776421969750741617978476246522634980941596394612'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('6808350866.212', '4670611887821094.6', '0.000001457699982301074980352460135688'); - BigNumber.config({ DECIMAL_PLACES : 62 }); - T('1724257.37586183654376', '0.016567742613356095142153', '104073162.89859702904495573149679115062463446876792498334187044473069739'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('0.2218267497479178849103995260', '1', '0.221826749747917884910399526'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('3056.9914315', '107136957848669820324475752', '0'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('4056795545010022719', '390912.7712', '10377751365238.64666972538143568331696398667058949237010755406089940506911737346687127115278038785139593822511'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('1442.5062', '276.5', '5.21702061'); - BigNumber.config({ DECIMAL_PLACES : 25 }); - T('0.0103820', '1359753057.55', '7.6352098951748e-12'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('0.000081938669733472684', '0.0003843206754115', '0.21320390750702984183938899483638612110791882628768645606333050734244129912757206051692144092244537'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('8060854277465.20', '34816969.58', '231520.84672227237532026473396482198954203181976069038458803168474951460723883023250755874659'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('46373882311.61444695839575', '0.00008180466', '566885582210285.4159945869831865324053666380374907737529866880444219192402975576208006'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('970857716.251238514376609', '2916245920577737.689506786', '3.32913527422578210495339372249610679e-7'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('4.63829341424348180', '5', '0.92765868284869636'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('3', '7785988.0942216998', '3.853075503963874149149e-7'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('1935.3968306', '2818173.183324', '0.000686755818291203686779830523099309085475682725743217320530154795724'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('0.0001212706832382449165409924', '50.62429', '0.000002'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('0.3383', '3', '0.1127666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('894753589335624184.1', '0.0007282180', '1.2286891965532631493591204831520231579005188006888047260573070152069847216081e+21'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('4935', '42444950178982881491.461877618', '0'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('0.000101227', '643454825446.7392', '1.573179592362523674372385137884108898258340821485311619323561798503395263196654097412e-16'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('447076.3579728966752', '1.1182', '399817.8840752071858343766768020032194598461813629046682167769629762117689143265963155070649257735646574852'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('32560.2485', '32.214236', '1010.74098109916373618173033810269472168'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('0.000089141364072600114211582982', '0.058894052315174', '0.0015135885640124804477286342832647245668598876396635397587634744519103678'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('39794.415496636', '0.23223897147290588944', '171351.153'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('13222.3699543614940085382082', '0.0000963257281071901769', '137267272.349582354600071093875354367370306911268702940649616770695129108517948339716901186'); - BigNumber.config({ DECIMAL_PLACES : 93 }); - T('0.02110', '0.000014144469652', '1491.749108954148859309949615635118618161110251572972868364424979572927998813595955672527325098749'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('4183.27039', '1576756721946563.77771220262471', '0'); - BigNumber.config({ DECIMAL_PLACES : 11 }); - T('83913736210587', '10', '8391373621058.7'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('0.011284', '0.032590668', '0.346234081486148'); - BigNumber.config({ DECIMAL_PLACES : 43 }); - T('51.6272963878555410936484', '23.642305', '2.1836828679714410711497208076792850781681397'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('583912624137558', '1124434060671107001432.3098', '5.19294678595075379865586684385004327138783407390491e-7'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('104', '3', '34.666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('2668382615715798173123151', '6.1137556071482670562425858300', '4.3645555811813892029201940395212164303426674241111771904485973967696192232876186631794064681353e+23'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('76.37127174', '4863221747.602433', '1.57038431935889035317222305715014276666744557610406465375819928e-8'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('0.000353856712310493111557783', '457025665893058678922', '0'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('62.65', '432183501730946.484920337305229', '1.44961572454939338754482668113673893912501326e-13'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('9484925.5725276', '643230.450929164', '14.74576578087428'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('29219153059082304711205', '2020940', '14458199184083795.02172503884331053866022741892386711134422595425890922046176531713'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('1.6167291799635', '319507008492609390.1421', '5.06007422995510608489707654880904e-18'); - BigNumber.config({ DECIMAL_PLACES : 32 }); - T('7067930442222519996104.1426296', '11.105', '636463794887214767771.64724264745610085547050877982891'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('6296.23', '0.30350', '20745.403624382207578253706754530477759473'); - BigNumber.config({ DECIMAL_PLACES : 85 }); - T('25220031721402951.1439', '97910318600212525993977680.5', '2.575829808539526912014591264828608640845044624118941024688322346629446658315e-10'); - BigNumber.config({ DECIMAL_PLACES : 93 }); - T('1577.11816313025207154072242023', '17136.39555258', '0.092033249249595332110361240079175693431967185826632290859281004959240393304597814636353771505'); - BigNumber.config({ DECIMAL_PLACES : 38 }); - T('3', '8', '0.375'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('15.1', '61290622253851.77', '2.463672164635439012310274841034978278027626024273909715584303482e-13'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('9.4', '1505720715559061196199752696', '6.2428575916283788173290365578659968143965835269092137878498321540696e-27'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('0.00044042684', '14883.434400120415248', '0'); - BigNumber.config({ DECIMAL_PLACES : 60 }); - T('279581221438.3', '0.00013', '2150624780294615.384615384615384615384615384615384615384615384615384615384615'); - BigNumber.config({ DECIMAL_PLACES : 85 }); - T('17.18', '174172032024380424.5303862336', '9.86381096914294541321544968454441351189152416981008744412356486973897e-17'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('1959.3331629', '33684517964766.44422', '5.8167172377216034752746539569641866632289466116513576163464801987e-11'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('3730145731260474.616558254', '2.491', '1497449109297661.42776'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('0.000070641941766584644730804', '0.3291958', '0.0002145894381598569748787925'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('184143180271115578469693.832', '5200058984134.449881234802669', '35411748373.03623806483776476169862920772983365204009241171274640979941377637'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('8.55', '18404481135049739859', '4.645607739365857875138332905785370282093050454145e-19'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('0.00052803317487995302294196', '28450974995.9125428563861', '1.8559405256087490728777491003348741e-14'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('0.000020', '372.226399', '5.37307403605191366343685902836784018642374690893431e-8'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('51.6144314750083', '2116334.32611183720', '0.00002438860006104760749'); - BigNumber.config({ DECIMAL_PLACES : 93 }); - T('0.886692079005', '0.0002023', '4383.055259540286702916460701927829955511616411270390509144834404349975284231339594661393969352447'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('0.000949241051757155928548909473', '1165.73771369', '8.1428355676376772961269868393392014082124415480186282108101846530386484883357e-7'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('7321043.1701028857', '282.6', '25906.0267873421291578202406227883934890304317055909'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('7241749441.16774', '36082305498514055363620060', '2.00700851597910514724420850539022854346971126250568644267e-16'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('8540688406508771321', '224808745884484358105', '0.0379909081068283502508138011'); - BigNumber.config({ DECIMAL_PLACES : 62 }); - T('564642157256018408', '2777587712980782.312', '203.28508605406733283559863484081688471149884747330661700082973938'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('3.8941', '0.03998275372309104208', '97.3944923095944659689339456020563758559352376616897052140538837623754354532'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('0.0000224', '199364221', '1.12357171651176065338223351521033455646988935e-13'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('0.0113', '17986834990.49682032535002', '0'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('128069584', '2475631.33113017', '51.7320904730729608717817979026539325079383306631134518864200470760420758595220747694463604796175'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('20278323832.0661423731861', '0.1495850174401728398628807', '135563869825.241981350361154937815718661'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('0.0003733162232627504541358', '1.7403268061162433011674', '0.000214509265'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('102.399781', '130071', '0.0007873'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('0.00332336560167', '660.1', '0.000005034639602590516588395697621572489016815633994849265262838963793364641720951371'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('56360', '28807118343416832832349805.843', '1.956460876375012671343578134305688e-21'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('27.357711909', '15558609318940.3897751906530', '1.7583648607781342108682741145181217107739262681e-12'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('5607917719.914091', '558327282741703577153', '1.004414058431111378001554170714674335379190033812125138541554850258693e-11'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('249808497289.8181921809718673', '0.0185459992', '13469670444600.158948619596'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('14336586303.42721833248000902', '21024.41925362603752626', '681901.6559020824006332647891439414806430356895809583512778821951970093031262272765580418'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('0.000034395345862687832644534811', '0.00001652814271194670', '2.081016993992104564925455017653318454262928188686141716832059463736505324616969324593'); - BigNumber.config({ DECIMAL_PLACES : 90 }); - T('198.90330036522219270371510277', '1602784673888', '1.24098578933080834752366839927909796117707260510767283002611201469656961896181433e-10'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('0.03632017', '0.004017299637232151671383679', '9.04094124903860896103579352915717852236321040917032615566004912686786771493640555764773'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('0.01946', '4884', '0.000003984438984438984439'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('0.62463407084918258318382', '384926970', '1.622733971717239203020303e-9'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('1419000.37801892862', '6', '236500.06300315477'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('26344538006.17038043', '858.734', '30678345.10590052'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('189.722', '3455486245440338422', '0'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('167.217780', '126.20', '1.3250220285261489698890649762282091917591125198098256735340729001584786053882725832012678288431'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('0.00619980711742262658', '229.697222529847591027153095', '0.000026991214996589712065220243812489790598294903467466834316087386609129340267'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('1156127509047391571768106258', '1.353087336', '8.54436722809880449408112898042820792463613745624473127135970770773661279762358222233779002717678232707958771406e+26'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('18172196068.7813163195', '10605003.16917', '1713.5493293967174045549366342886814437849532107534024589004742410546015537'); - BigNumber.config({ DECIMAL_PLACES : 71 }); - T('149392168942196308754', '312.0', '478821054301911246.00641025641025641025641025641025641025641025641025641025641025641025641'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('391.572', '1.1', '355.9745454545454545454545454545454545455'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('0.96673694498', '13.7085477932', '0.07052074074976351886801546756852722061967680487745042354'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('214.4', '0.43055301443328664879070028', '497.964229288239863242612600332265970541721257966295542048'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('1095055008744.285325925138264', '88037833184697750.54782767', '0.000012438459343347647651984097273610566773214136862127891887384360629551'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('51602.4330', '135619076866053720687181462499', '0'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('0.00007028184408115', '20584916.77374118', '3.4142399e-12'); - BigNumber.config({ DECIMAL_PLACES : 53 }); - T('103137069484639350621490975', '1254266677515076835', '82228979.95581932205041681001816617588816534716840801393930375'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('0.002352949776316576468515703', '15560944737919350', '1.512086711922343598163709834465958193941995575535050264193470963524169e-19'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('0.244246874443097643161156343', '17778708631589260712350', '1.3738167349743225615398361622673e-23'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('0.6638', '45060680816.33729984155', '1.47312465762685771e-11'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('0.015524617474958', '7', '0.0022178024964225714285714285714285714285714285714285714285714285714285714285714'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('0.0568396955226606', '659939362592299.9955462923198', '8.6128663850856334865e-17'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('0.0000230828799', '2.8', '0.0000082438856785714285714285714285714285714285714285714285714285714285714285714285714285714285714286'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('0.000040414341256', '0.0031768054343264', '0.01272169230740734109146649233'); - BigNumber.config({ DECIMAL_PLACES : 38 }); - T('635959831206068.69', '1.555168', '408933202847582.18404699685178707380810304738780633346'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('0.0001571614099710879491050', '0.020578821462237', '0.00763704618651197903855922286'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('0.00014754453938996367291684948', '3075050.41', '4.79811774500189975477018212524197286248715512927e-11'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('0.0005313750', '0.000212', '2.50648584905660377358490566037735849056603773584905660377358490566037735849057'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('9364.18179191', '227835766622922.486875056765', '4.110057841536401041396709790606128539e-11'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('20148', '-0.000078632271431590126', '-256230675.1818648429115557343222536936245425718992431835224697391595895970615625701044674216738452373694001932'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('-921.894009989260573959', '514388534758565851', '-1.7922133712057989e-15'); - BigNumber.config({ DECIMAL_PLACES : 30 }); - T('66521405510.01629', '-48902', '-1360300.304895838411516911373767944051'); - BigNumber.config({ DECIMAL_PLACES : 15 }); - T('581889.32710174', '-7866.565450148299', '-73.96993399333763'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('-1475163898997127.72721', '1019385.134794294248591', '-1447111448.505482547670647264759973332601952136970965778734713259'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('-8', '0.00011624833430977163873508', '-68818.1903637610530937591533135243434320182013488787353488961419444528111'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('536833.51', '-235457808072736', '-2.27995628768515971005273362321288732621679476197e-9'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('-2.3', '0.09407820945226943370888360925', '-24.4477442054943092371310781031607983444036170357'); - BigNumber.config({ DECIMAL_PLACES : 96 }); - T('-62317227.2341800257128681155841', '10958052412530104671312.48329509', '-5.686888955095954081346146355051544269878892254825073471383095423168233097501145949e-15'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('-556640152383073368164.53313', '0.000036604270357539413472661607', '-1.52069730374620542263449302129499854522590056374565936140432611122454001940873820956241744673058327e+25'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('-0.0157407207825538370645121', '12113643566876.76704861240', '-1.29942083037632508281427631131689432652032967665067885586284056e-15'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('511525.2279', '-66.8090889', '-7656.5215350511987000020292149201873040361129666595408398092972646420867445777'); - BigNumber.config({ DECIMAL_PLACES : 85 }); - T('42.6846067', '-2.6', '-16.4171564230769230769230769230769230769230769230769230769230769230769230769230769230769'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('8.6', '-272458852453044.97821', '-3.156439925725e-14'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('208981138996906208725066.8939', '-18118433119346450.488842597', '-11534172.829424245585058743171248845553244466959846113220726474'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('-0.0227615913414513748477922836804', '4665626429468076679413', '0'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('-38044814.7', '2.379', '-15991935.5611601513240857503152585119798234552332912988650693568726355611601513240857503'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('-397.86', '0.002298920179844344917742', '-173063.859932247960585408862090972883740283911074216314411808372382313692635340707'); - BigNumber.config({ DECIMAL_PLACES : 34 }); - T('51685561963424.5451381577385', '-16.83', '-3071037549817.2635257372393642305407011289364231'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('-0.000010668555882111627116088370650', '0.00008416476499059', '-0.12675798338300379903303284217452325857337407005384557301629'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('1123285937.04813', '-0.003447230110409', '-325851742144.030134809623043952486298'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('-79.82495610066', '72101302094', '-1.10712225413891288829905163848343745557544687855855908698424677301223774484474152747746908e-9'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('-0.000214517', '27679709518.14784249281694', '-7.7499729489341176647519227192100772644516641115525250883e-15'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('-0.00001152511440495596', '0.0001319', '-0.08737766796782380591357088703563305534495830174374526156178923426838514025777103866565579985'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('2169.2587337822315790258986', '-967685.439747003687897785981', '-0.002241698226181198885348'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('186.799820', '-0.000014402200396', '-12970227.802959949870704465373417374576573000491389635292504230198742195032570771625305469746221687'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('1.2892420009404443435665766393', '-0.3549225038004799177988', '-3.632460571'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('494914737356784.284014520479', '-159011.43', '-3112447560.25893411570803733417151207306292384138674810986857988762191497806163997141589129787714002697793486'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('-1.4', '0.00026216587619', '-5340.130532416717722793273189639974708105813151136021612836279'); - BigNumber.config({ DECIMAL_PLACES : 75 }); - T('358220529470.25669', '-0.0001091248704941257826247', '-3282666250582535.950193708009260499191050428762268451195035619392124715369404416631197948429'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('-189.4', '0.0091973594204', '-20592.86707659869327683189776759504315347958672453491714366274414255030846048852972'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('-48672140160157', '73.93144', '-658341568352.476294253162118849571981825323570053552318201836728731376'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('8.32405', '-94.009538', '-0.0885447389391489191235042554937351144093485493'); - BigNumber.config({ DECIMAL_PLACES : 28 }); - T('485413125626845550010577', '-2.308405649336', '-2.102806869176013003277237098330653207893315340846251e+23'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('0.000030303062182398585532', '5615.142553715980101902489', '0'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('-857454.7301', '0.00023612289361770881', '-3631391759.4464562046024198049188'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('195751.967', '-0.556542205447711769391', '-351728.88'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('0.0000489069392369', '-12046171705155914.063', '-4.06e-21'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('0.2006220821824234006', '-0.10', '-2.006220821824234006'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('2725870.084133', '-1.4342768250', '-1900518.8096328614945026389867241980989269627221369905352824758916396770198110117271120239'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('8210.08944865', '-82149482779765878059', '-9.99408538050128e-17'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('-0.01103011313368660', '1904.73990484135024047844', '-0.00000579087627956'); - BigNumber.config({ DECIMAL_PLACES : 80 }); - T('-0.01018899241', '519599.967788720311293853', '-1.960930146582119710493071968453528963385076138400602109515536753485239657e-8'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('-0.0412806625501653280343817407', '-6605974526412685975.82396189', '0'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('17688345680490875581110', '-0.000053541', '-3.3037010292095544687454474141312265366728301675352e+26'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('3642.900398786', '-17360896174256765.61091', '-2.09833660786923955709071436508473787176746608118033281259e-13'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('-22932124070.2182506600', '1945397643327886193100751', '-1.1787885191e-14'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('8307.080533', '-554720398.058517268977552335525', '-0.00001497525701610072910493703505165604011477203373720175'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('32.0164', '-15.61', '-2.0510185778347213324791800128123'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('-2594.3661', '41737', '-0.06215986055538251431583487073819392864844143086470038574885593118815439538059755133334930637'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('2349542666.701711', '-0.0000363407350993121243', '-64653140897697.03983099125531067397124393085200528039966849015826920469849170827505958383252138462577507'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('-22.7688843435139888868', '28472491.8500712528', '-7.99680072380352949070690389446558254500609937798743067872e-7'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('84897.39612374648963', '-64682.54868086172022', '-1.3125239783395539073033'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('-18.25404855094631466', '0.00585719349482019802578300255', '-3116.51793082971569759381063168299494472507903312005730635833'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('0.047433711910272230', '-0.000939', '-50.5151351547095101171458998935037273695420660276890308839190628328008519701810436634717784878'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('72098642345.315284481354999', '-0.02286207682868543757654306', '-3153634855029.96336309143018862141102770585463125873835803889089856907868038067'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('21950225.634589', '-0.035893469', '-611538150.1461728316090038553'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('-0.00045544597', '997635453811223890.29820722842', '-4.565254455022416410451577490449652559439570114735212605e-22'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('5090.164399792547140', '-0.000058909143485014942373', '-86407034.60723990212092751348007526730020692283178466934693483189785230728745656609720439573572'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('0.0025806746195240439454625754', '-32525.2', '-7.934385090711337502805748773258888492614957017943010342749621831687430054234870193e-8'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('44.296730067753045949640234748', '-0.00388', '-11416.683007152846894237173904124'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('-201.25', '130131483168273.77839327424547', '-1.546512766167142301018891364819322533432990971012615965157257548118180769e-12'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('-128.809982', '6405732799.895341', '-2.010854745644472408656259411541105094760193637504284772213346291930109324817156487049543931e-8'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('0.000052269102258', '-1664673323.2698522476451193', '-3.13990147660502308004722290350897703879064922995e-14'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('16766992795.1', '-493622972826.8', '-0.033967205170945558759'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('24.6995489', '-2935.512397900845181145712', '-0.0084'); - BigNumber.config({ DECIMAL_PLACES : 97 }); - T('12416633304.1422', '-1713218269217.34511', '-0.0072475489709869423950617796012900409105793045430019523626605343732315676491255089889707304101753'); - BigNumber.config({ DECIMAL_PLACES : 82 }); - T('0.00058429560901413259189', '-223.4996587257249708151', '-0.0000026143020188284508944253752010197755692093993239021273378437427671345515998827'); - BigNumber.config({ DECIMAL_PLACES : 85 }); - T('-73.65632625', '10187412457998218929168.33825', '-7.2301309634490973876075189782676617424067705035020624821980420091e-21'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('-40288474081489912.5287798740', '0.003118', '-12921255317989067520.4553797305965362411802437459910198845413726747915330339962'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('-0.00045913242914239307922', '71011.272331227915', '-6.465627414768697446502917699164923127824062512717097745876946532967035899862e-9'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('-0.0003492615907872644', '0.0342800946423312172564154', '-0.010188466351431078529400939265177739224038984282194427364946440046029426'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('-8828047.90240', '13.188', '-669400.05326053988474370639975735517'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('-10.8', '455674708458725423', '-2e-17'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('-0.000409604124009511702', '-233228', '0'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('1932.63', '-32667209106279586542404373', '0'); - BigNumber.config({ DECIMAL_PLACES : 42 }); - T('2130052265525219972.646', '-12513193', '-170224519475.182710971212543433158906763445588987558971'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('-0.7132711510741836008474325281', '88.40865828670340', '-0.008067887974966124783904418815296776144146903241469775'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('-0.00001126277262603942000625', '161562264702', '-6.97116535647324130330820695281689491007961966368648434e-17'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('-586.75296754911055535831', '35.195', '-16.67148650516012374934820286972581332575649950277027986929961642278732774541838329308140360846711'); - BigNumber.config({ DECIMAL_PLACES : 80 }); - T('0.776086383646642515', '-6.392', '-0.12141526652794782775344180225281602002503128911138923654568210262828535669586984'); - BigNumber.config({ DECIMAL_PLACES : 97 }); - T('42.29', '-0.05034030', '-840.0823991911053370758616853693760267618587890815112345377361676430215950242648534077071451699731627'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('227256304817.9320085444', '-0.1003890', '-2263757033319.70642744125352379244737969299425235832611142655071770811543097351303429658627937323810377631'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('3783.18', '-11739586517.66048634354', '-3.222583686664569046852339469987709053243224756983323597748964868092567456e-7'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('5.78', '-0.0000502832', '-114948.929264645050434339898813122474305533458491106373500493206478505743468992'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('-5.00156433', '92565353837836618405405052', '-5.4032790051903652329871560144e-26'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('863593873627265.70537', '-43735915.713064287918', '-19745645.1876530142368056074182029418922563'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('-0.15354410563827', '3288929397499.5962685', '-4.668513278363520974873296477282762059746136002437712528338780851356245937322918569646e-14'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('229890114416782030.08056591', '-37.807530838638400245497', '-6080537642036114.7456835225140765268376383310067514380539508252872141717409309944'); - BigNumber.config({ DECIMAL_PLACES : 34 }); - T('9941870929.06806', '-3358772.97', '-2959.9711019075099916622230052065710175'); - BigNumber.config({ DECIMAL_PLACES : 62 }); - T('-46.7', '4.605293411075756683738631435', '-10.14050481293683395755655889723066595780577435812636700075876312'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('2266752438236610.699', '-0.0979611376308566842921676', '-23139302922127443.056470612908108268132877406361862'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('133513037222052.14291163693983', '-0.000397277193', '-336070228985060672.5154669017961974978009875336588979574269192946094944846229821201943500442'); - BigNumber.config({ DECIMAL_PLACES : 67 }); - T('-356.8', '0.0683875261872944786039', '-5217.3257301751740172634542361525223377363378689532453249412045026797997'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('-58300936033', '0.04918400305331317406', '-1185363785249.535183066963261429880422864'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('298.01', '-10198157.91', '-0.00002922194406381769783754995807865461851826'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('1.2', '-5.3', '-0.22641509433962264150943396226415094339622641509433962264150943396226'); - BigNumber.config({ DECIMAL_PLACES : 23 }); - T('-0.002821', '-106305045395449711716048782', '0'); - BigNumber.config({ DECIMAL_PLACES : 93 }); - T('58495053224579838612300.5', '-1112637769', '-52573312585957.918000804896278871511146769277072779290130317336009829448814980861934051422624320422471655283'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('-0.1229626', '2399515556875488807430756821', '-5.1244760488285738687261901227172107e-29'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('935083164002341.847', '-957.2', '-976894237361.4102037191809444212285833681571249477643125783535311324697033'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('1.524', '268049304.4019691396', '0'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('7696891453746597242', '-22509568.6', '-341938647982.2006558579714406432471566780715646411810842078954813909672174'); - BigNumber.config({ DECIMAL_PLACES : 62 }); - T('24.4', '-0.000026530682908636828510866', '-919689.85811732710477113134993548660065552262575537647019098108562321'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('-2052451793', '117100687.57193624502', '-17.52723946850573534907177080966239301943331726617324'); - BigNumber.config({ DECIMAL_PLACES : 51 }); - T('-17.9', '2217096756690125948619632', '-8.073621480878746239396291441e-24'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('-34240510142429402130267', '0.055604689530495437', '-6.1578457557344659572813945e+23'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('313323156491867399786815977', '-0.00430783529772936694706', '-7.273331843884980391058095975851323643350714805610473847548110502947546366230915577073503055648810462653546019573783392309e+28'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('311358691277787.6', '-1.43', '-217733350543907.412587412587412587412587412587412587412587412587412587412587412587412587412587413'); - BigNumber.config({ DECIMAL_PLACES : 40 }); - T('1151.8', '-192975068238228458627.3', '-5.9686466781195719116452e-18'); - BigNumber.config({ DECIMAL_PLACES : 4 }); - T('-8', '74.597', '-0.1072'); - BigNumber.config({ DECIMAL_PLACES : 70 }); - T('1267199204.4131652693519', '-0.014679847', '-86322371371.6611126363851067385102855636029449080770392225477554364156520159917198'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('-4.481', '1915687744390066835523146', '-2.3391077241696816180526e-24'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('2405959.7', '-209509722348.24156491788952530', '-0.00001148376157933557325071647713617424522679150317564409169946439'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('1151.591068010863010128504511', '-54.6604', '-21.06810539276812848293288214136742504628579373733086475766734235387959107507446'); - BigNumber.config({ DECIMAL_PLACES : 27 }); - T('5916.3017', '-231', '-25.611695670995670995670995671'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('-0.0002384700118', '183118409490327229.213476559749', '-1.30227218805434513331503149314365575886990740421695023876621902e-21'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('0.0002014219970979045132', '-4.93', '-0.000040856388863672315050709939148073'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('-767014140860703097372522.5151', '16434171188416.6591634', '-46671908918.736329'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('-203.2', '4.63', '-43.8876889848812095032'); - BigNumber.config({ DECIMAL_PLACES : 21 }); - T('-31265.76', '10191402.68664719863169430224', '-0.003067856404198852548'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('0.268267682840', '885918105753', '0'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('-12588995.82179458699277817', '0.701527163626506085215990966', '-17945129.532428175045194547436271083018244231294058685535385380400228937'); - BigNumber.config({ DECIMAL_PLACES : 45 }); - T('-992018780823565.13392', '3', '-330672926941188.377973333333333333333333333333333333333333333'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('-26173330.992', '8.48', '-3086477.711'); - BigNumber.config({ DECIMAL_PLACES : 8 }); - T('-170493257676246735617262.04499', '10.80358710', '-1.57811712071305220112736486375e+22'); - BigNumber.config({ DECIMAL_PLACES : 100 }); - T('-6906959.60', '9407767.3262708374245244592', '-0.7341762780115292987122079744142850443703895983541102275303996090477391895430144134326597802504634055'); - BigNumber.config({ DECIMAL_PLACES : 95 }); - T('-5.08', '61381677.31966371', '-8.276085343097352243225246041319390553129239542408643843258804626586400089724278985965211e-8'); - BigNumber.config({ DECIMAL_PLACES : 62 }); - T('-1.3', '2822.2', '-0.00046063354829565587130607327616752887818014315073347034228616'); - BigNumber.config({ DECIMAL_PLACES : 99 }); - T('22327.549256913788111', '-525.825053590610', '-42.461935018975493108432937323791650694124331089152628898105328287752793817472067926483567457443949944'); - BigNumber.config({ DECIMAL_PLACES : 37 }); - T('-68.4', '40178233.28429', '-0.0000017024143275793296039791592349212'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('13.5571783196468071', '-3906674804125031980.70004110534', '-3.470260259526048e-18'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('-1.6947927370', '0.00093478551693440552256955205', '-1813.0284501604282491'); - BigNumber.config({ DECIMAL_PLACES : 54 }); - T('0.04167449018510273942113', '-66629122872660245.6882676', '-6.25469590298372730782974685843316163e-19'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('164.82798000560455', '-990819314730939', '-1.66355235061565443847751252090922147232097109306367609847291456437869387e-13'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('3214359.501680985909534274', '-84607147686054399607.60367516', '-3.7991583330622092924397e-14'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('-85071812507959907092.31582411', '107966170', '-787948785327.4771819016625681'); - BigNumber.config({ DECIMAL_PLACES : 32 }); - T('-1.570465', '2.9971073668330609537184', '-0.52399357373021164358447515821695'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('-0.0073642667970623825219304', '0.01145344098479565973859084', '-0.64297417752781724691846166835'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('1.7', '-16824578707.379760733', '-1.010426489463495110844841573599091411397272950299365084137154944465467224715526e-10'); - BigNumber.config({ DECIMAL_PLACES : 89 }); - T('798812270.702847936644301526', '-79.51', '-10046689.35609166062940889857879512011067790215067287133693874984278707080870330776003018488240473'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('-1.299454', '8004.841479908', '-0.00016233350819770820530404671484987'); - BigNumber.config({ DECIMAL_PLACES : 90 }); - T('-0.0190239', '522.83', '-0.00003638639710804659258267505690186102557236577855134556165484000535546927299504619092248'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('-62442043252142283090506208', '14.233061', '-4.3871127406917094706828143292577752600090732e+24'); - BigNumber.config({ DECIMAL_PLACES : 84 }); - T('0.0004399996445417911980250678961', '-134.0023017', '-0.000003283523036244915470918869269691059343945582391440370311191453213672672310523454'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('0.0323', '1146967189758157470962250323742', '0'); - BigNumber.config({ DECIMAL_PLACES : 0 }); - T('-5.210261', '-76013934512.0464022', '0'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('9.34197271543', '-4428', '-0.00210974993573396567299006323396567299006323396567299006323396567299006323397'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('-5', '54679951', '-9.144119386646853432622863909e-8'); - BigNumber.config({ DECIMAL_PLACES : 98 }); - T('5809538458876614.65173', '-0.000065820880934770434742', '-88262848755153579674.22639768635508218962245506631750284731877517298470762606225560442252609045684756213856434233196746'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('-1', '340.75965832813459886631469', '-0.0029346196815265'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('-277371521.153', '-44777557615232.883346568', '0'); - BigNumber.config({ DECIMAL_PLACES : 90 }); - T('321329699077890420.0', '-0.054959132', '-5846702583983502869.004554147616450711048347706801482963741130409410396073940905762485477390727349915206084405'); - BigNumber.config({ DECIMAL_PLACES : 50 }); - T('-50991', '0.6868044740532371346008', '-74243.83784088085426709823312616743717983754249425435513'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('-0.000120441290310', '216649.584839239456162501679', '-5.559267071726496950311021531757707301526387557448470701670857855917810195e-10'); - BigNumber.config({ DECIMAL_PLACES : 39 }); - T('6843756132777408.964571060', '-8337642.50506151526', '-820826286.162159650207137340791514170662502085774'); - BigNumber.config({ DECIMAL_PLACES : 65 }); - T('419163526950485.7943704', '-0.00004917483172934', '-8523944306664363599.90363875467675955335875353294710251836676874912657819834747285288'); - BigNumber.config({ DECIMAL_PLACES : 5 }); - T('-0.236843005402557395874861', '1.5', '-0.1579'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('532342857.5297788244197492', '-5761939038.69009760542392', '-0.0923895330990520328482967530989797578264603259772912967910090079486341090208488768974404'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('1307.7244266043028', '-0.28818143037500155679559881990', '-4537.8511200482333836543898407548020438761113521971507335877340969854020619281359552'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('0.0000477960642104884', '-181041361906850269152236.4', '0'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('-323.955112704', '0.0078813362', '-41104.0849524982832225835004983038282264877876926503909324411259095888'); - BigNumber.config({ DECIMAL_PLACES : 44 }); - T('-262292.1', '1072575.00138', '-0.24454429728692993006926014171915344328141925'); - BigNumber.config({ DECIMAL_PLACES : 2 }); - T('2956132595.01', '-50401.6690247370435220430826', '-58651.48'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('5676617544463.3291058011', '-0.0001294173039', '-43862894476998366.103353'); - BigNumber.config({ DECIMAL_PLACES : 33 }); - T('-14034.485361', '3.521143', '-3985.775460127577891610763891156933984'); - BigNumber.config({ DECIMAL_PLACES : 19 }); - T('3.1953583224280239152771324254', '-0.3351', '-9.5355366231812113258'); - BigNumber.config({ DECIMAL_PLACES : 60 }); - T('0.02319087713874832466428452737', '-195.3568569238968712292022', '-0.000118710330949798973613611638758921415235452210491777756996'); - BigNumber.config({ DECIMAL_PLACES : 56 }); - T('0.0026885961270378768563633126516', '-697113.7', '-3.85675410917598787165323626777095328925539693166e-9'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('15229113.27979008967', '-7.220290962276', '-2109210.46802101817857824425202331681137611'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('-5152440', '64766249729636196474.030479846', '-7.95543978771139227186201962908190820450102455e-14'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('-938421.8866', '21450245005076368.89923', '-4.374877239760735098462950720592702096669156439208982521048129333147411481372e-11'); - BigNumber.config({ DECIMAL_PLACES : 77 }); - T('0.0009073724874207837136702749', '-3766012560572162617.7', '-2.4093719094843604552288933058486328450937613206964330785e-22'); - BigNumber.config({ DECIMAL_PLACES : 34 }); - T('15538845682.3562388159948296', '-0.0687444989815613827651', '-226037659922.7824863191382303245520144874104122'); - BigNumber.config({ DECIMAL_PLACES : 88 }); - T('-29138031.30817025752757358', '88266411236982977530910.82142', '-3.301146030502896052982289441461966780420841536448081827698849216028729898e-16'); - BigNumber.config({ DECIMAL_PLACES : 64 }); - T('-61372427699455', '1415.732442905657136447632', '-43350301115.8618984499232990588091165800884950710863885496745660589008360746'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('2', '-569050683079', '-3.514625427e-12'); - BigNumber.config({ DECIMAL_PLACES : 18 }); - T('363526582301.4518084891186', '-3268269711487.576009648501', '-0.111229064426261846'); - BigNumber.config({ DECIMAL_PLACES : 63 }); - T('0.4791194988641835627', '-0.810931185385530719294', '-0.590826333354539647435050491743172784471281849259579128368022963'); - BigNumber.config({ DECIMAL_PLACES : 59 }); - T('983952965426.54981648062537958', '-63475.224', '-15501370.50995755157131269642435606056309466509326536602690838869667'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('-37.81', '56942576133869218533854637.10', '0'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('-48.7', '-14582137.8', '0'); - BigNumber.config({ DECIMAL_PLACES : 38 }); - T('-0.000146667280629921690732909814', '3021878494996', '-4.853513497408698137375e-17'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('3039292077236123159.32', '-27593984685063.73481', '-110143.28347008369726777856530040110856206001197'); - BigNumber.config({ DECIMAL_PLACES : 14 }); - T('182', '-134648744.10665', '-0.00000135166504'); - BigNumber.config({ DECIMAL_PLACES : 92 }); - T('-635676476389495916.7944722', '172.3491', '-3688307489795397.34640025506370500339137251079349993704637854215658799494746418751243841714288035156551441232'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('-1.5', '31879693713', '-4.705189496184919008478304573226876409670479571586466201505e-11'); - BigNumber.config({ DECIMAL_PLACES : 76 }); - T('0.0000279', '-2192', '-1.27281021897810218978102189781021897810218978102189781021897810218978e-8'); - BigNumber.config({ DECIMAL_PLACES : 12 }); - T('-2971343589643858485678.2686401', '230688638031.2', '-12880320483.065977816413'); - BigNumber.config({ DECIMAL_PLACES : 78 }); - T('1768622670603951253243859', '-126201.388', '-14014288579805090996.652580397927160674334263264996736802926446419115453785658839188044429432107355'); - BigNumber.config({ DECIMAL_PLACES : 48 }); - T('-38915187693075336.56', '719.89522079786089', '-54056738493062.336315315478163590351331437145382472291184377176'); - BigNumber.config({ DECIMAL_PLACES : 1 }); - T('-92775359551607483477579131291', '71883182752.8601208379452', '-1290640675588562405.3'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('-0.02344', '911.263859460822351518', '-0.0000257225168722'); - BigNumber.config({ DECIMAL_PLACES : 20 }); - T('0.0038', '-245.9', '-0.00001545343635624237'); - BigNumber.config({ DECIMAL_PLACES : 13 }); - T('-16946311980', '0.001764987656345615401023347913', '-9601377051603.3661257139879'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('-1123.03073661398124', '41522.0652587', '-0.027'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('-14940430.01347909815', '1.22', '-12246254.1094090968442623'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('1', '-0.0000942', '-10615.7112526539278132'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('-1.0692667768653', '62962.669144861425', '-0.00001698255158791288496424646020355623304'); - BigNumber.config({ DECIMAL_PLACES : 24 }); - T('-32.6891915228641', '0.00645059910152821', '-5067.621008274985016344309035'); - BigNumber.config({ DECIMAL_PLACES : 72 }); - T('-0.0013343635561', '6168816912.26', '-2.16307855311456187633247331366957530777271193228421996285794e-13'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('6055431494598202868.2', '-1372350306661543044580.7', '-0.0044124531944973932536452240547'); - BigNumber.config({ DECIMAL_PLACES : 3 }); - T('-1.7', '0.0000305385095034731250877616028890', '-55667.419'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('-0.000246', '991486783059686310384', '-2.48112233267350671516856213469539e-25'); - BigNumber.config({ DECIMAL_PLACES : 43 }); - T('-4035659139.056', '18400905983022904453.709', '-2.193185021856745079114923818102201e-10'); - BigNumber.config({ DECIMAL_PLACES : 74 }); - T('1', '-0.0079', '-126.58227848101265822784810126582278481012658227848101265822784810126582278481'); - BigNumber.config({ DECIMAL_PLACES : 68 }); - T('1187259254676723679659', '-1', '-1.187259254676723679659e+21'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('304966065.08925', '-49232723.397167191', '-6.194377317481435280794506427738104875162245303157523171976148694209'); - BigNumber.config({ DECIMAL_PLACES : 94 }); - T('887049196', '-314364426.212411921301306', '-2.8217225679365911713093571314453907929521830667507799224920733788905780674766769010524330814454'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('-0.0000892413612', '58958', '-1.51364295261033277926659656026323823738932799620068523355609077648495539197e-9'); - BigNumber.config({ DECIMAL_PLACES : 35 }); - T('-99670.4851312832433', '127786924586760420866637090', '-7.7997405019018e-22'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('-0.00022589', '0.00860040', '-0.026265057439188874936049486070415329519557229896283893772382679875'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('47889.1', '-0.56208168562317', '-85199.5381185675954388235075661437977471302406124847280115841028426698063138873788413419'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('0.036061200587496281920624', '-1.83528043527', '-0.0196488775745005340153963205170020751953417079'); - BigNumber.config({ DECIMAL_PLACES : 61 }); - T('94417.0748138538586463487384', '-4', '-23604.2687034634646615871846'); - BigNumber.config({ DECIMAL_PLACES : 16 }); - T('-290', '0.0000148041', '-19589167.8656588377544059'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('-36613111.97691', '2825805128774708465819.62849170', '-1.2956700943063875e-14'); - BigNumber.config({ DECIMAL_PLACES : 17 }); - T('61907365438.484557677', '-0.0000158111294483955947393', '-3915429675061353.29538835233699148'); - BigNumber.config({ DECIMAL_PLACES : 22 }); - T('192467.0837', '-0.5266083578447951', '-365484.2936555233201376118898'); - BigNumber.config({ DECIMAL_PLACES : 46 }); - T('-0.03838066877467', '7803864928460491941572351309', '-4.9181615938400858e-30'); - BigNumber.config({ DECIMAL_PLACES : 66 }); - T('-15293.66207', '97816906864055.513989', '-1.56349884292036597088070243434902399271543658673655501057e-10'); - BigNumber.config({ DECIMAL_PLACES : 6 }); - T('-181493926373969274.99', '4200.352646286398907588', '-43209211620465.022256'); - BigNumber.config({ DECIMAL_PLACES : 7 }); - T('-90.151120033248945250', '504332994175285143641.325202', '0'); - BigNumber.config({ DECIMAL_PLACES : 31 }); - T('-10934976.5157072837', '0.000807897039077844593', '-13535111513.9483119865563461117840534199074'); - BigNumber.config({ DECIMAL_PLACES : 86 }); - T('-7.078782346245', '562452681113034087.09605119', '-1.258556067727660567103258087527221857023473940131851320747440790411871e-17'); - BigNumber.config({ DECIMAL_PLACES : 39 }); - T('-41611910.9', '0.000056591459260165894', '-735303726816.780753985870216515746868307585972099723'); - BigNumber.config({ DECIMAL_PLACES : 41 }); - T('17.69243871905722', '-3320064.89', '-0.00000532894365177820967228143543905251804'); - BigNumber.config({ DECIMAL_PLACES : 79 }); - T('620024868943.9286103', '-27603607791950584.7404191', '-0.0000224617330320398345510739288525017312277972099335278166887587999495426915462'); - BigNumber.config({ DECIMAL_PLACES : 36 }); - T('-4.955174', '60392501515.881', '-8.2049490841126559991095403e-11'); - BigNumber.config({ DECIMAL_PLACES : 29 }); - T('1', '-30985.719547', '-0.00003227293135740069634988361'); - BigNumber.config({ DECIMAL_PLACES : 53 }); - T('0.8852094231267525926', '-19584914890083.56240806066', '-4.519853305949065037457201893338562051197e-14'); - BigNumber.config({ DECIMAL_PLACES : 9 }); - T('1565548130', '-1935.3', '-808943.383454762'); - BigNumber.config({ DECIMAL_PLACES : 69 }); - T('61790270543532479714380229341', '-4063.563', '-1.5205933941108450813825263528829256492393498021317745042958605539030648718870606903350581743165e+25'); - BigNumber.config({ DECIMAL_PLACES : 0 }); - T('-0.0000435052334368463012371', '219188662526371.256', '0'); - BigNumber.config({ DECIMAL_PLACES : 91 }); - T('-0.00006521496311421916', '1.4735162', '-0.0000442580564192094800179326158748712772889772097517489118884475107908552345742788576060446'); - BigNumber.config({ DECIMAL_PLACES : 81 }); - T('95.2451', '-3', '-31.748366666666666666666666666666666666666666666666666666666666666666666666666666667'); - BigNumber.config({ DECIMAL_PLACES : 58 }); - T('11298179623224', '-53438143.35488024586439', '-211425.3773412992683362572145230163175744530909060632329620342655'); - BigNumber.config({ DECIMAL_PLACES : 83 }); - T('0.001395397', '-52.8711906969003', '-0.00002639238839918557927088552480937343181967745671767997864643878031311986864968747'); - BigNumber.config({ DECIMAL_PLACES : 73 }); - T('-3.3', '0.000197965', '-16669.6133154850604904907433132119314020155077917813754956684262369610789786073'); - BigNumber.config({ DECIMAL_PLACES : 55 }); - T('45573.038', '-1951245006.57', '-0.0000233558768102170098357070718333190030237587540949009'); - BigNumber.config({ DECIMAL_PLACES : 57 }); - T('11697035101999953412797412955.51', '-0.00002645182103613', '-4.422015061278092346231915492159911911859012754718621042083122434161972684365584014570167e+32'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js deleted file mode 100644 index 69993ab..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/every-test.js +++ /dev/null @@ -1,39 +0,0 @@ -var arr, - passed = 0, - total = 0, - start = +new Date(); - -console.log( '\n STARTING TESTS...\n' ); - -[ - 'abs', - 'base-in', - 'base-out', - 'ceil', - 'cmp', - 'config', - 'div', - 'floor', - 'minus', - 'mod', - 'neg', - 'others', - 'plus', - 'pow', - 'round', - 'sqrt', - 'times', - 'toExponential', - 'toFixed', - 'toFraction', - 'toPrecision', - 'toString' -] -.forEach( function (method) { - arr = require('./' + method); - passed += arr[0]; - total += arr[1]; -}); - -console.log( '\n IN TOTAL: ' + passed + ' of ' + total + ' tests passed in ' + - ( (+new Date() - start) / 1000 ) + ' secs.\n' ); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js deleted file mode 100644 index daa0763..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/floor.js +++ /dev/null @@ -1,216 +0,0 @@ -var count = (function floor(BigNumber) { - var start = +new Date(), - log, - error, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(expected, value) { - assert(String(expected), new BigNumber(String(value)).floor().toString()); - } - - log('\n Testing floor...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - T('-2075365', '-2075364.364286541923'); - T('60593539780450631', '60593539780450631'); - T('65937898671515', '65937898671515'); - T('-39719494751819198566799', '-39719494751819198566798.578'); - T('92627382695288166556', '92627382695288166556.8683774524284866028260448205069'); - T('-881574', '-881574'); - T('-3633239210', '-3633239209.654526163275621746013315304191073405508491056'); - T('-23970335459820625362', '-23970335459820625362'); - T('131869457416154038', '131869457416154038'); - T('-2685', '-2685'); - T('-4542227861', '-4542227860.9511298545226'); - T('2416872281', '2416872281.963955669484225137349193306323379254936827'); - T('-757684868752087594264588207656', '-757684868752087594264588207655.27838048392835556'); - T('-438798503527', '-438798503526.2317623894721299587561697'); - T('801625782231888715214665', '801625782231888715214665'); - T('-91881984778675238', '-91881984778675238'); - T('327765350218284325239839632046', '327765350218284325239839632046.91682741746683081459605386'); - T('-7469045007691432295', '-7469045007691432294.362757245'); - T('8365540212937142194319515218789', '8365540212937142194319515218789.4106658678537421977827'); - T('-14109', '-14108.495051214515'); - T('49104501', '49104501.10055989379655329194309526150310568683504206945625'); - T('131370406', '131370406.330005158136313262837556068534122953'); - T('3017', '3017'); - T('-690', '-689.6944252229740521128820354989299283'); - T('73441822178', '73441822178.572653'); - T('-2330', '-2329.42655772223486531483602927572548264457'); - T('-834103872107533086', '-834103872107533086'); - T('-1501493189970436', '-1501493189970435.74866616700317'); - T('70591', '70591.2244675522123484658978887'); - T('4446128540401735117', '4446128540401735117.435836700611264749985822486641350492901'); - T('-597273', '-597273'); - T('729117', '729117'); - T('504', '504'); - T('4803729546823170064608098091', '4803729546823170064608098091'); - T('24147026285420507467578', '24147026285420507467578'); - T('-6581532150677269472830', '-6581532150677269472829.38194951340848938896000325718062365494'); - T('-131279182164804752', '-131279182164804751.430589952021038264'); - T('2949426983040959', '2949426983040959.8911208825380208568451907'); - T('25166', '25166.125888418871654557352055849116604612621573251770362'); - T('4560569286495', '4560569286495.98300685103599898554605198'); - T('13', '13.763105480576616251068323541559825687'); - T('176037174185746614410406167887', '176037174185746614410406167887.42317518'); - T('9050999219306', '9050999219306.7846946346757664893036971777'); - T('39900924', '39900924'); - T('115911043168452445', '115911043168452445'); - T('20962819101135667464733349383', '20962819101135667464733349383.8959025798517496777183'); - T('4125789711001606948191', '4125789711001606948191.4707575965791242737346836'); - T('-6935502', '-6935501.294727166142750626019282'); - T('-2', '-1.518418076611593764852321765899'); - T('-35416', '-35416'); - T('6912783515683955988122411164548', '6912783515683955988122411164548.393'); - T('657', '657.0353902852'); - T('0', '0.0009'); - T('0', '0.00000000000000000000000017921822306362413915'); - T('1483059355427939255846407887', '1483059355427939255846407887.011361095342689876'); - T('7722', '7722'); - T('0', '0.00000005'); - T('8551283060956479352', '8551283060956479352.5707396'); - T('0', '0.000000000000000000000000019904267'); - T('321978830777554620127500539', '321978830777554620127500539.339278568133088682532238002577'); - T('2073', '2073.532654804291079327244387978249477171032485250998396'); - T('677676305591', '677676305591.2'); - T('0', '0.0000000000006'); - T('39181479479778357', '39181479479778357'); - T('0', '0.00000000000000000087964700066672916651'); - T('896', '896'); - T('115083055948552475', '115083055948552475'); - T('9105942082143427451223', '9105942082143427451223'); - T('0', '0.0000000000000009'); - T('0', '0.00000000000000000000004'); - T('0', '0.000250427721966583680168028884692015623739'); - T('0', '0.000000000001585613219016120158734661293405081934'); - T('0', '0.00009'); - T('0', '0.000000090358252973411013592234'); - T('276312604693909858427', '276312604693909858427.21965306055697011390137926559'); - T('0', '0.0000252'); - - // ---------------------------------------------------------------- v8 start - - T(0, 0); - T(0, '0.000'); - T(-0, -0); - T(Infinity, Infinity); - T(-Infinity, -Infinity); - T(NaN, NaN); - - T(0, 0.1); - T(0, 0.49999999999999994); - T(0, 0.5); - T(0, 0.7); - T(-1, -0.1); - T(-1, -0.49999999999999994); - T(-1, -0.5); - T(-1, -0.7); - T(1, 1); - T(1, 1.1); - T(1, 1.5); - T(1, 1.7); - T(-1, -1); - T(-2, -1.1); - T(-2, -1.5); - T(-2, -1.7); - - BigNumber.config({EXPONENTIAL_AT : 100}); - - T(-1, -1e-308); - T(-1e308, -1e308); - T('2.1e+308', '2.1e308'); - T(-1, '-1e-999'); - T(0, '1e-999'); - - T(0, Number.MIN_VALUE); - T(-1, -Number.MIN_VALUE); - T(Number.MAX_VALUE, Number.MAX_VALUE); - T(-Number.MAX_VALUE, -Number.MAX_VALUE); - T(Infinity, Infinity); - T(-Infinity, -Infinity); - - var two_30 = 1 << 30; - - T(two_30, two_30); - T(two_30, two_30 + 0.1); - T(two_30, two_30 + 0.5); - T(two_30, two_30 + 0.7); - - T(two_30 - 1, two_30 - 1); - T(two_30 - 1, two_30 - 1 + 0.1); - T(two_30 - 1, two_30 - 1 + 0.5); - T(two_30 - 1, two_30 - 1 + 0.7); - - T(-two_30, -two_30); - T(-two_30, -two_30 + 0.1); - T(-two_30, -two_30 + 0.5); - T(-two_30, -two_30 + 0.7); - - T(-two_30 + 1, -two_30 + 1); - T(-two_30 + 1, -two_30 + 1 + 0.1); - T(-two_30 + 1, -two_30 + 1 + 0.5); - T(-two_30 + 1, -two_30 + 1 + 0.7); - - var two_52 = (1 << 30) * (1 << 22); - - T(two_52, two_52); - T(two_52, two_52 + 0.1); - T(two_52, two_52 + 0.5); - T(two_52 + 1, two_52 + 0.7); - - T(two_52 - 1, two_52 - 1); - T(two_52 - 1, two_52 - 1 + 0.1); - T(two_52 - 1, two_52 - 1 + 0.5); - T(two_52 - 1, two_52 - 1 + 0.7); - - T(-two_52, -two_52); - T(-two_52, -two_52 + 0.1); - T(-two_52, -two_52 + 0.5); - T(-two_52, -two_52 + 0.7); - - T(-two_52 + 1, -two_52 + 1); - T(-two_52 + 1, -two_52 + 1 + 0.1); - T(-two_52 + 1, -two_52 + 1 + 0.5); - T(-two_52 + 1, -two_52 + 1 + 0.7); - - // ------------------------------------------------------------------ v8 end - - assert('1', new BigNumber('1.9999999999').floor(NaN).toString()); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js deleted file mode 100644 index e7bddef..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/minus.js +++ /dev/null @@ -1,1846 +0,0 @@ -var count = (function minus(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - n = 'null', - N = 'NaN', - I = 'Infinity'; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(minuend, subtrahend, expected) { - assert(String(expected), String(new BigNumber(minuend).minus(subtrahend))); - assert(String(expected), String(new BigNumber(minuend).minus(new BigNumber(subtrahend)))); - } - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - log('\n Testing minus...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : false, - RANGE : 1E9, - EXPONENTIAL_AT : [-7, 21] - }); - - T(1, 0, 1); - T(1, -0, 1); - T(-1, 0, -1); - T(-1, -0, -1); - T(1, N, N); - T(-1, N, N); - T(1, I, -I); - T(1, -I, I); - T(-1, I, -I); - T(-1, -I, I); - T(0, 1, -1); - T(0, -1, 1); - T(-0, 1, -1); - T(-0, -1, 1); - assert(false, isMinusZero(new BigNumber(0).minus(0))); - assert(false, isMinusZero(new BigNumber(0).minus(-0))); - assert(true, isMinusZero(new BigNumber(-0).minus(0))); - assert(false, isMinusZero(new BigNumber(-0).minus(-0))); - T(0, N, N); - T(-0, N, N); - T(0, I, -I); - T(0, -I, I); - T(-0, I, -I); - T(-0, -I, I); - T(N, 1, N); - T(N, -1, N); - T(N, 0, N); - T(N, -0, N); - T(N, N, N); - T(N, I, N); - T(N, -I, N); - T(I, 1, I); - T(I, -1, I); - T(-I, 1, -I); - T(-I, -1, -I); - T(I, 0, I); - T(I, -0, I); - T(-I, 0, -I); - T(-I, -0, -I); - T(I, N, N); - T(-I, N, N); - T(I, I, N); - T(I, -I, I); - T(-I, I, -I); - T(-I, -I, N); - - T(1, '0', '1'); - T(1, '1', '0'); - T(1, '-45', '46'); - T(1, '22', '-21'); - T(1, 0144, '-99'); - T(1, '0144', '-143'); - T(1, '6.1915', '-5.1915'); - T(1, '-1.02', '2.02'); - T(1, '0.09', '0.91'); - T(1, '-0.0001', '1.0001'); - T(1, '8e5', '-799999'); - T(1, '9E12', '-8999999999999'); - T(1, '1e-14', '0.99999999999999'); - T(1, '3.345E-9', '0.999999996655'); - T(1, '-345.43e+4', '3454301'); - T(1, '-94.12E+0', '95.12'); - T(1, '', N); - T(1, ' ', N); - T(1, '\t\t', N); - T(1, 'ertgrt546', N); - T(1, 'qweqwdewee', N); - T(1, true, N); - T(1, false, N); - T(1, 'e 4.3', N); - T(1, '4 .3', N); - T(1, '4.0 01e', N); - T(1, ' 4.001', '-3.001'); - T(1, '4.001 ', '-3.001'); - T(1, ' 4.001 ', '-3.001'); - T(1, ' 4.001', '-3.001'); - T(1, ' 4.0 01', N); - T(1, '4. 001', N); - T(1, '4. 001 ', N); - T(1, ' 4.001e ', N); - T(1, ' 4 .001 e ', N); - T(1, undefined, N); - T(1, null, N); - T(1, Number.POSITIVE_INFINITY, -I); - T(1, Number.NEGATIVE_INFINITY, I); - T(1, new Date(2012, 11, 4), N); - T(1, new Object(), N); - T(1, function () {}, N); - T('0', 0, '0'); - T(0, '+0', '0'); - T('0', '0', '0'); - T(3, -0, '3'); - T(9.654, 0, '9.654'); - T(0, '0.001', '-0.001'); - T(0, '111.1111111110000', '-111.111111111'); - T(-1, 1, '-2'); - T(-0.01, 0.01, '-0.02'); - T(54, -54, '108'); - T(9.99, '-9.99', '19.98'); - T('0.0000023432495704937', '-0.0000023432495704937', '0.0000046864991409874'); - T(NaN, NaN, N); - T(NaN, N, N); - T(N, NaN, N); - T(N, 4, N); - T(N, '4534534.45435435', N); - T(N, 99999.999, N); - T(Infinity, '354.345341', I); - T(3, -I, I); - T(-Infinity, -I, N); - T(-I, -Infinity, N); - T(I, '-999e999', I); - T('1.21123e43', -I, I); - T('-999.0', I, -I); - T('657.342e-45', -I, I); - T(I, 123, I); - T(-0, I, -I); - T(100, 100, '0'); - T(-999.99, '0.01', '-1000'); - T('10 ', 4, '6'); - T('03.333', -4, '7.333'); - T(-1, -0.1, '-0.9'); - T(43534.5435, '0.054645', '43534.488855'); - T('99999', '1', '99998'); - T('3e', 8, N); - T('-3..0', 13, N); - T('0 0', -0.4, N); - T(' +3e0', 4, '-1'); - T(9.9806, '+ 1', N); - T(' +2 0', '1e1', N); - T('e3', 4, N); - T(' ', 0, N); - T(323, null, N); - T(undefined, undefined, N); - T('undefined', undefined, N); - T(null, null, N); - - T('-0.00000020', '-1.5', '1.4999998'); - T('-5', '0', '-5'); - T('-2', '1.5', '-3.5'); - T('7', '-3', '10'); - T('0', '0', '0'); - T('0', '0', '0'); - T('0', '-9', '9'); - T('-15', '-7', '-8'); - T('-3', '0', '-3'); - T('3', '-5', '8'); - T('4', '-2', '6'); - T('2', '23', '-21'); - T('0', '0', '0'); - T('0.00000000022', '0', '2.2e-10'); - T('3', '-7', '10'); - T('0', '1.1', '-1.1'); - T('-2', '0', '-2'); - T('0', '-1', '1'); - T('2.3', '-3', '5.3'); - T('-3', '1', '-4'); - T('0.000040', '3', '-2.99996'); - T('0', '1', '-1'); - T('0', '2', '-2'); - T('0', '0', '0'); - T('3', '1.8', '1.2'); - T('0', '1.4', '-1.4'); - T('-1', '1', '-2'); - T('-3', '-1.0', '-2'); - T('1', '-4.5', '5.5'); - T('-1.8', '4', '-5.8'); - T('0', '-1.6', '1.6'); - T('1', '3.1', '-2.1'); - T('0.000000000000000000013', '-7', '7.000000000000000000013'); - T('0', '0', '0'); - T('-3', '2.4', '-5.4'); - T('-3.0', '2.2', '-5.2'); - T('0', '-2', '2'); - T('-1', '1.0', '-2'); - T('0', '5', '-5'); - T('5', '0', '5'); - T('-1', '0.0000014', '-1.0000014'); - T('3', '0', '3'); - T('0', '4.1', '-4.1'); - T('0', '-2.7', '2.7'); - T('-1', '0', '-1'); - T('-0.0000000000000030', '3', '-3.000000000000003'); - T('-2', '-1.8', '-0.2'); - T('0', '1', '-1'); - T('-1', '-1', '0'); - T('0', '-0.0000000011', '1.1e-9'); - T('6', '-15', '21'); - T('-2.2', '-1.6', '-0.6'); - T('0', '0', '0'); - T('0', '-5', '5'); - T('-6', '5', '-11'); - T('-3.1', '0.000000000000029', '-3.100000000000029'); - T('0', '3.6', '-3.6'); - T('0', '-7', '7'); - T('-5', '-1', '-4'); - T('0', '1.5', '-1.5'); - T('1', '2', '-1'); - T('-2', '0', '-2'); - T('-9', '-13', '4'); - T('-2', '0', '-2'); - T('1.1', '0', '1.1'); - T('8', '-0.000000000027', '8.000000000027'); - T('-0.000036', '-4', '3.999964'); - T('0', '5', '-5'); - T('0', '1', '-1'); - T('-7', '-5.9', '-1.1'); - T('-7', '-1', '-6'); - T('-1', '0', '-1'); - T('-0.000000036', '9', '-9.000000036'); - T('-6', '0', '-6'); - T('-9', '-6', '-3'); - T('2', '3.1', '-1.1'); - T('0', '-2', '2'); - T('0', '7', '-7'); - T('2.8', '3', '-0.2'); - T('-2', '0', '-2'); - T('0', '-3', '3'); - T('-3.7', '-5', '1.3'); - T('-1.3', '2.0', '-3.3'); - T('-4.7', '-3.0', '-1.7'); - T('-1.5', '0', '-1.5'); - T('4', '0', '4'); - T('-4', '0', '-4'); - T('-6', '-3', '-3'); - T('-1', '0', '-1'); - T('3', '-3', '6'); - T('0', '-3', '3'); - T('-2.6', '-1', '-1.6'); - T('0', '-0.0000000000000000013', '1.3e-18'); - T('2', '-3', '5'); - T('7', '0', '7'); - T('-1.8', '-3', '1.2'); - T('-5', '0', '-5'); - T('0', '0', '0'); - T('1', '0', '1'); - T('6', '-3.1', '9.1'); - T('1', '-3', '4'); - T('-1', '7', '-8'); - T('-2', '-2', '0'); - T('3.0', '-1.8', '4.8'); - T('0', '0', '0'); - T('0', '-9', '9'); - T('-4', '0', '-4'); - T('-1', '-1.9', '0.9'); - T('0', '-2', '2'); - T('-6', '1', '-7'); - T('1', '1', '0'); - T('-3.8', '3.4', '-7.2'); - T('5', '-2', '7'); - T('0', '0', '0'); - T('-5', '1', '-6'); - T('2', '0', '2'); - T('-6', '-32', '26'); - T('-3', '7', '-10'); - T('0', '0', '0'); - T('-1', '3', '-4'); - T('-5.6', '-0.00000000023', '-5.59999999977'); - T('1.1', '-3', '4.1'); - T('0', '3', '-3'); - T('0.0000000028', '1', '-0.9999999972'); - T('1', '0', '1'); - T('-2.9', '0', '-2.9'); - T('-4', '-3', '-1'); - T('-1', '0', '-1'); - T('0', '-8', '8'); - T('5', '-1', '6'); - T('50', '0', '50'); - T('1.4', '-0.023', '1.423'); - T('0', '0', '0'); - T('0', '-0.000000000000000000044', '4.4e-20'); - T('6', '1.0', '5'); - T('0', '0', '0'); - T('-5', '0', '-5'); - T('1', '4', '-3'); - T('5', '8', '-3'); - T('-1', '0', '-1'); - T('4', '1', '3'); - T('1.1', '0', '1.1'); - T('2', '-1.8', '3.8'); - T('1.2', '3', '-1.8'); - T('1.0', '-2', '3'); - T('0', '-26', '26'); - T('-1.2', '-0.000021', '-1.199979'); - T('0.00000000000000022', '0', '2.2e-16'); - - T('-0.00000000000000121361969403227661937847795811', '574992758622232775968317372974458171501.4254915170813', '-5.7499275862223277596831737297445817150142549151708130121361969403227661937847795811e+38'); - T('-4550837208408065075504522665550667460', '5.751431060476645646485961575720', '-4.55083720840806507550452266555066746575143106047664564648596157572e+36'); - T('7996662362107395829425.18720176386230', '-8731907507950', '7.9966623708393033373751872017638623e+21'); - T('-68461838113448256548677344232782026104.040843480437532', '0.0000142986280419', '-6.84618381134482565486773442327820261040408577790655739e+37'); - T('-665.7', '3908931.49090108734150120238488', '-3909597.19090108734150120238488'); - T('338109.679317396058', '-45.6', '338155.279317396058'); - T('-2471514788.354942554630483008', '-0.0000000055765369280717362958649740', '-2471514788.354942549053946079928263704135026'); - T('-18642529601026.27209290620938355635', '67022255553746002366834404466320.198', '-6.702225555374600238547693406734647009290620938355635e+31'); - T('27195199183.93214817879349469171272068644528813652023534', '-1', '27195199184.93214817879349469171272068644528813652023534'); - T('41026854231898.0486363115993557', '-0.0000000000000029972604673995461216855', '41026854231898.0486363115993586972604673995461216855'); - T('-1220181643016279028.87348578653647757882815849', '-4124297626266.931179306588915876637', '-1220177518718652761.94230647994756170219115849'); - T('174593431895507873748465653530769377174', '7.3340', '1.74593431895507873748465653530769377166666e+38'); - T('93091029642275068666781.0284945435443997658445', '-31928424886539383422.9555351175713959', '9.31229580671616080502039840296611157956658445e+22'); - T('-86027968259520771550471521850.6', '0.0000000000000000292728157559323008342389754688224199225762190199185607', '-8.60279682595207715504715218506000000000000000292728157559323008342389754688224199225762190199185607e+28'); - T('-1.44467944259873814286', '2.3245669450269604739750258313435250093720066817981549442', '-3.7692463876256986168350258313435250093720066817981549442'); - T('15548437865455556312866591689712167475961', '2.2', '1.55484378654555563128665916897121674759588e+40'); - T('0.00000000000000000020770604235293769845', '-0.0000992358273674621622485217917158420', '0.00009923582736746236995456414465354045'); - T('-1626846234967158413103510196475626.88719324087757539708', '-0.0000000000000007877989096708003891755677772229305473607860191', '-1.6268462349671584131035101964756268871932408775746092810903291996108244322227770694526392139809e+33'); - T('-0.00001339836', '0.0000333909797773140', '-0.000046789339777314'); - T('-20.6409', '-0.0000000000017673756783209754', '-20.6408999999982326243216790246'); - T('-0.00000000164445378704494553248164602947761915692700', '-294719705242476177981296942472301246209096', '2.94719705242476177981296942472301246209095999999998355546212955054467518353970522380843073e+41'); - T('-714.4854312', '479.74301995618099492271043882', '-1194.22845115618099492271043882'); - T('41306640988462651378.04879814073', '2.3', '41306640988462651375.74879814073'); - T('1888287331013305459263552414.6839815', '7369526522887481233382690934873900068542595569442820447065', '-7.3695265228874812333826909348720117812115822639835568946503160185e+57'); - T('-63087590127015461742418723247183314165549180801856.76047', '511852', '-6.308759012701546174241872324718331416554918131370876047e+49'); - T('-712813331685105224867937788768200257082.35597637750550', '-0.000000154423320652795188516788493', '-7.12813331685105224867937788768200257082355976223082179347204811483211507e+38'); - T('-0.00000021267799883027266680922532294584', '-99920149812553578396', '99920149812553578395.99999978732200116972733319077467705416'); - T('-0.000001314853272479802673030806326616332901672901446530', '-0.00000000000000177806', '-0.00000131485327070174267303080632661633290167290144653'); - T('-335141130.448', '-622097386577809642069744047.28826330', '6.220973865778096417346029168402633e+26'); - T('0', '120769246650024506936432254.2242696', '-1.207692466500245069364322542242696e+26'); - T('-23641982115679784801339.39566245781597254522', '-3682962980152156410.3125514', '-2.363829915269963264492908311105781597254522e+22'); - T('-88042183866221727883616143734328.731116339192172335', '2124601502534008501755.584348081323605468287', '-8.8042183868346329386150152236084315464420515777803287e+31'); - T('11947261350807745084450506573219.467267625392669956554', '-2144324041379.38432776094911354677701674948588', '1.194726135080774508659483061459885159538634178350333101674948588e+31'); - T('230257242957.393', '-10607111174738890296557505.142420583396378', '1.0607111174739120553800462535420583396378e+25'); - T('-0.000000000000000000205207122559582205445490420', '-137363469389767969588812337824785302440844', '1.3736346938976796958881233782478530244084399999999999999999979479287744041779455450958e+41'); - T('-681.369980', '279143637047358960283640320234319673269492015123776', '-2.7914363704735896028364032023431967326949201512445736998e+50'); - T('0.00000000000047867734749297313578318166203844289133575435501552', '5318894.3577269473404992938443574038899509659386283', '-5318894.35772694734002061649686443075416778427658985710866424564498448'); - T('-7009640457950142150404723076242641700234100735651466.001', '450572184269898130184881623816.351532207', '-7.009640457950142150405173648426911598364285617275282352532207e+51'); - T('-667761.1964938970806540832766776998292', '-11916.0', '-655845.1964938970806540832766776998292'); - T('78115005042419615473330500516096634.176852324566877077', '-6798.68296696083172787385428', '7.811500504241961547333050051610343285981928539860495085428e+34'); - T('7810338218505304105029156703754.942106797', '0.000001731538457890332023362604451262238656250891', '7.810338218505304105029156703754942105065461542109667976637395548737761343749109e+30'); - T('147524.3448475445608', '1648294473575921', '-1648294473428396.6551524554392'); - T('-0.000000000000000000171463070071732948056011420608183352219588685', '586793187554936.5855', '-586793187554936.585500000000000000171463070071732948056011420608183352219588685'); - T('-1211390378858441999502927549647140419603384681145414251351213', '-635082911540249607321.024949083796644', '-1.211390378858441999502927549647140419602749598233874001743891975050916203356e+60'); - T('4', '16059489423456265750163100012.9030479691340920432572860034', '-1.60594894234562657501631000089030479691340920432572860034e+28'); - T('-0.02386494924652569606758900911891223878669277', '6954997.21231337279682439457198586266365943551328684831121', '-6954997.23617832204335009063957487178257167429997961831121'); - T('-77097949257283524913898.9005058281976253594672', '2548220758876398059247570217121711835.85372529', '-2.5482207588764751571968275006466257347542311181976253594672e+36'); - T('0.0000000000000000003167303237768130560', '-1774472.102377282878491377352513811904', '1774472.102377282878491377669244135680813056'); - T('12826152962883951576635.9617817', '-85603180142227733048283563048771.16275698594', '8.560318015505388601116751462540712453868594e+31'); - T('-28594.58153422332574547631803496831493', '0.00138135692454804974058929153874335145729995858764536203', '-28594.58291558025029352605862425985367335145729995858764536203'); - T('-1076543179517781327152214.4430186084047103180550303835484', '-0.000001966501043041903595634052091', '-1.076543179517781327152214443016641903667276151434749496309e+24'); - T('1.1303763207006847408087108827484230273165561756244577060659', '-5226422630308737810960949550589969908179555303', '5.2264226303087378109609495505899699081795553041303763207006847408087108827484230273165561756244577060659e+45'); - T('4.6379', '0.0010851657258206953367908525441350095857171922501796819281707', '4.6368148342741793046632091474558649904142828077498203180718293'); - T('-0.00000121970222487531743738910465210', '14700571395.710868072772989809', '-14700571395.7108692924752146843174373891046521'); - T('-0.00948647116781336833163259991', '-1.7768824919899484548781987321907266047229337854', '1.7673960208221350865465661322807266047229337854'); - T('0.0000000000294045914362167819882890883773282671860065407908497565282', '1203484199859679.515373248387944', '-1203484199859679.5153732483585394085637832180117109116226717328139934592091502434718'); - T('370605558535696550704041748.54', '2859.002553198485573190388217618142019', '3.70605558535696550704038889537446801514426809611782381857981e+26'); - T('23063425385264062114.4182185521', '919024.6882123634392645395934284705089', '23063425385263143089.7300061886607354604065715294911'); - T('196575005.9706725', '-5209445831094830', '5209446027669835.9706725'); - T('-749632.806770304627392347831545996165984090513451938727374', '772302148117130.7584834', '-772302148866763.565253704627392347831545996165984090513451938727374'); - T('218023.954642124004155088474898834365173675390209344675040', '-4493284.9', '4711308.85464212400415508847489883436517367539020934467504'); - T('371184371226569100503051893.30461921952559443426660043299229', '-0.0000000034906715619289934', '3.7118437122656910050305189330461922301626599619559383299229e+26'); - T('220152166905051656324095658827324313008647.0', '-0.00000541198892301696315819055681172535', '2.2015216690505165632409565882732431300864700000541198892301696315819055681172535e+41'); - T('343183254236262724.51785020', '1', '343183254236262723.5178502'); - T('0.0000000003890086401641242121857013479571090262584101373', '-8317.38612508391889137944463821522953', '8317.3861250843079000196087624274152313479571090262584101373'); - T('0.00000000000000000086155332', '-17.6333243552751', '17.63332435527510000086155332'); - T('0', '268666137918342629663843421660.888578', '-2.68666137918342629663843421660888578e+29'); - T('0.00000000000000135738708106732310272812674949101792', '53327465.2335089327976851709827349825', '-53327465.23350893279768381359565391517689727187325050898208'); - T('266910608197788439217725496348217', '-0.00000000000000138658', '2.6691060819778843921772549634821700000000000000138658e+32'); - T('11641358', '81237.72625754123497510364150080', '11560120.2737424587650248963584992'); - T('-10397358465137390.59112438352080341792626708545', '0.000000000000035771048469575519305632795707', '-10397358465137390.591124383520839188974736660969305632795707'); - T('-319067503684881132718867038113132023386552638920.93464409992', '-4362498854097189202568295213849864755626616334057699.89553', '4.36217978659350432143557634681175162360322978141877896088590008e+51'); - T('-291431002924776541728754603601.36970805037321548645', '5964565940.126384157441377', '-2.9143100292477654173471916954149609220781459248645e+29'); - T('-1.2311860880', '-596880833224', '596880833222.768813912'); - T('87.132412112577000', '3', '84.132412112577'); - T('14496251944930895122386093.97997766', '-0.0186085382187367427216451737443431075455317', '1.44962519449308951223860939985861982187367427216451737443431075455317e+25'); - T('-1454167.8755560906631572', '-14023057721.47963687', '14021603553.6040807793368428'); - T('-48.0205403500832716158268160170078138883305085421632055636', '-4225012867.41212544381914188804', '4225012819.3915850937358702722131839829921861116694914578367944364'); - T('132233805697430308711156924448348175516180746442', '0.0000017428839153838195472106854742425800', '1.3223380569743030871115692444834817551618074644199999825711608461618045278931452575742e+47'); - T('-3464742138515.3596070', '-116196292944709774661.6869498643733175605', '116196289479967636146.3273428643733175605'); - T('959618941323760340533285165929739125596307241332873169.21229', '66867302503354526158135738979.180422740', '9.5961894132376034053328509906243662224178108319713419003186726e+53'); - T('272744684991153578922570226355.46751565943', '2120.8826649154579918903365041556839175862', '2.727446849911535789225702242345848507439720081096634958443160824138e+29'); - T('392752713096323327908999', '0.000000017921157295538031059674698531743345633301', '3.92752713096323327908998999999982078842704461968940325301468256654366699e+23'); - T('98160222492281761742.521218301', '-0.0285627038777634002456158926936381577455032644551906387514964', '98160222492281761742.5497810048777634002456158926936381577455032644551906387514964'); - T('-4.36', '-271625870935.20401097518', '271625870930.84401097518'); - T('-19.4212927874167898', '-3296800120589635669055398465088086245282862075.96730', '3.2968001205896356690553984650880862452828620565460072125832102e+45'); - T('-7384530397856089', '-45.9', '-7384530397856043.1'); - T('-774820079197336364734223154.8', '-10.942584818509498694779756530950038148', '-7.74820079197336364734223143857415181490501305220243469049961852e+26'); - T('-150596940796161658996.388271502068869', '2985065345825248339763675882859244909723097343219', '-2.985065345825248339763675883009841850519259002215388271502068869e+48'); - T('-23847.667194770678602066965772568166575932862070476568359149', '1.05838941', '-23848.725584180678602066965772568166575932862070476568359149'); - T('-139.90436152895151552565739375535355738822610296926957375853', '0.2047189', '-140.10908042895151552565739375535355738822610296926957375853'); - T('-4859551136289853679597736', '5705851489', '-4.859551136289859385449225e+24'); - T('-2.822932759210967942204799418357885484503668027660403642776', '-21260029158.7755772147552', '21260029155.952644455544232057795200581642114515496331972339596357224'); - T('70214727623926969557083.633194040081188', '0.000000000000000008876781900', '7.02147276239269695570836331940400811879911232181e+22'); - T('168167915122787.2659904', '-0.000000000000000000022424096865237242831921499442051317229853874001', '168167915122787.265990400000000000022424096865237242831921499442051317229853874001'); - T('-10381081602312', '0.000000000000000923228830', '-10381081602312.00000000000000092322883'); - T('6481217378435019509.3', '204127.50354634007763', '6481217378434815381.79645365992237'); - T('-1055871579008468883600015600194814.219411847', '0.00000000000000001993933675383625869609055753063233531835884', '-1.05587157900846888360001560019481421941184700000001993933675383625869609055753063233531835884e+33'); - T('-11.9', '2190021917.5', '-2190021929.4'); - T('8893568.397103781249', '-7.29674059550', '8893575.693844376749'); - T('-270074164732402092470707995826826345208506171395062650454324', '392935540317', '-2.70074164732402092470707995826826345208506171395455585994641e+59'); - T('-582332724559151988564243629866.793819328', '-752.316045', '-5.82332724559151988564243629114477774328e+29'); - T('115780050433.9744723375949160', '-10354559440726926933085330907464207489638', '1.0354559440726926933085330907579987540071974472337594916e+40'); - T('-0.0000000000092082909772982168202901287881437', '-140307240110991278811078363131.3533385306060728599114476021', '1.403072401109912788110783631313533385305968645689341493852797098712118563e+29'); - T('-0.0000000000000000001302905868005538222253', '-687601306119.30280105580919933093896015091959269610032847933', '687601306119.30280105580919933080866956411903887387502847933'); - T('-17406776.9106520', '7404147683526942010449859408523376672505043.20', '-7.404147683526942010449859408523376689911820110652e+42'); - T('-5810490488292821.088550524158200456214711210120', '51309126128019006928075619352.35509020203161', '-5.130912612802481741856391217344364072618981045621471121012e+28'); - T('-244663279887797845457244.69627014023746468381042256674045148', '-0.383335594341020704911762197811406655', '-2.44663279887797845457244312934545896443978898660368929044825e+23'); - T('316759637646274728459769194971270681520143070356211369', '138969888208.552504340', '3.1675963764627472845976919497127068152014293138632316044749566e+53'); - T('-1026716565990818152.338103221159', '1255719213990793975090997507278', '-1.255719213991820691656988325430338103221159e+30'); - T('854.93693123842152090961298359199223034349519195749', '-424117414357060.756799', '424117414357915.69373023842152090961298359199223034349519195749'); - T('-0.006379478941040566506054', '3928.2672878523130519347199700529360289380801729479368', '-3928.2736673312540925012260240529360289380801729479368'); - T('3469779053.85027069235104893994561560034151457638008273176647', '25676509132014403666611211903.3702668974', '-2.567650913201440366314143284951999620504895106005438439965848542361991726823353e+28'); - T('-6.0694', '-820322384540258597408240140073275834913353.69', '8.203223845402585974082401400732758349133476206e+41'); - T('-0.000000000000030532', '24.896880201507626275851', '-24.896880201507656807851'); - T('105468873', '0', '105468873'); - T('256760156309110476', '-13837063158475039.0608439897688680023912472959404758275635521', '270597219467585515.0608439897688680023912472959404758275635521'); - T('0.000000000000000001698545937726615224762953174', '0.0091708187464', '-0.009170818746399998301454062273384775237046826'); - T('-21254127772.055477', '170724844816140294005708794935062810958442.2386', '-1.70724844816140294005708794935084065086214294077e+41'); - T('4.3', '-42289375032753833461292867654449379918122659582300511814.86', '4.228937503275383346129286765444937991812265958230051181916e+55'); - T('-10.6945731348037109472689588888585520230967031058063284652', '-0.000000000000000013225637814061559914861522643297461025', '-10.6945731348037109340433210747969921082351804625088674402'); - T('42022129692143246218.588174513905523856665669864568', '-6688196881698', '42022136380340127916.588174513905523856665669864568'); - T('59567595164759708273.58488961999', '-2882669546962777869333', '2.94223714212753757760658488961999e+21'); - T('-0.00000000000000023219819555088939', '0.000002699155773875942009505196424', '-0.000002699155774108140205056085814'); - T('69.02', '1019.384525', '-950.364525'); - T('0.28885545083047505669261757814370521673472269407769277', '-54409284625846293530958014777988170910931971864508243085507', '5.440928462584629353095801477798817091093197186450824308550728885545083047505669261757814370521673472269407769277e+58'); - T('357051970556175609969558033601717918622832633809282', '-0.00000000000000009191759009979', '3.5705197055617560996955803360171791862283263380928200000000000000009191759009979e+50'); - T('55324032341233413075839541.33979738365146913154063', '18778204875511803067.37488033228813311299318998557567838806', '5.532401356302853756403647396491705136333601854744001442432161194e+25'); - T('-954279324346950395396438207814989843', '5855883956282.7418', '-9.542793243469503953964440636989461257418e+35'); - T('0.0000559372400719154055', '36326.3773033065', '-36326.3772473692599280845945'); - T('-2308273733231941938445560342695.8870897860340173552415859451', '0.0000000000000000000176744410303783123790738765240224970704250496463086', '-2.3082737332319419384455603426958870897860340173552592603861303783123790738765240224970704250496463086e+30'); - T('-0.0000000000000075315134692867358694825', '0.000000000020673253575755655053286884627683943900054889', '-2.0680785089224941789156367127683943900054889e-11'); - T('2141565935846165335053366646564.55', '249139386942.433521867737894', '2.141565935846165334804227259622116478132262106e+30'); - T('0.0000000000000020997422982353397148204786811844837507999862174', '0.000000000000000002356388173646211525529238', '2.0973859100616935032949494431844837507999862174e-15'); - T('-9.3', '1210724787708353076304704165555.510002672635727895531335', '-1.210724787708353076304704165564810002672635727895531335e+30'); - T('-94455687.8', '0.0000002761251584122631449121019167818539664249453145710', '-94455687.800000276125158412263144912101916781853966424945314571'); - T('-527306114203076623189237999707479.9688776820253214193899164', '1599.728954415768000917144378511032', '-5.27306114203076623189237999709079697832097793322336534294911032e+32'); - T('5201144349263847987496751693.2718392256495115509', '-0.000000000000000008062522688625856069134486136704806619173555611278', '5.201144349263847987496751693271839225649511558962522688625856069134486136704806619173555611278e+27'); - T('-769134537.983940345', '-596619628089684709170992.484', '5.96619628089683940036454500059655e+23'); - T('16103.67287682796494953', '-465781.44458474726', '481885.11746157522494953'); - T('972019.0403266398942', '0.00000000032060736406868701231737725067236', '972019.04032663957359263593131298768262274932764'); - T('-3722457663697211882835707', '-16.8', '-3.7224576636972118828356902e+24'); - T('140260.1', '5', '140255.1'); - T('5314287735775902656123286734.69857230', '-33935993.716814133855691839888466392152019494030707469085', '5.314287735775902656157222728415386433855691839888466392152019494030707469085e+27'); - T('68283872710781941018806771046574852133', '0.00000000075', '6.828387271078194101880677104657485213299999999925e+37'); - T('-369081.4527', '141567.2246', '-510648.6773'); - T('20446533321512161063774845264.22916016420704184590862638', '-68295029.764030715', '2.044653332151216106384314029399319087920704184590862638e+28'); - T('-600307.74138395225787263', '-0.0000001304496382302165936930', '-600307.741383821808234399783406307'); - T('24411161239.85690978507516121', '2051270884829.8383684099295195107651592681789671', '-2026859723589.9814586248543583007651592681789671'); - T('4384414740.5595825362370080404420', '-0.00000000000000554366638630081310095841078569927213406536019558277955', '4384414740.55958253623701358410838630081310095841078569927213406536019558277955'); - T('9025031.8925028', '-32.8', '9025064.6925028'); - T('-256722752342173962991.91', '-0.0000000000000000002123046323462613566369', '-256722752342173962991.9099999999999999997876953676537386433631'); - T('43542362222453910743776206071468.7163717435431410983843', '1100168.647375874421732648073262226', '4.3542362222453910743776204971300068995869121408450311037774e+31'); - T('0.062784590888327314154797', '1057478188.877253410081536', '-1057478188.814468819193208685845203'); - T('-7050', '45104384760478621637071269060904128288820257014210.74', '-4.510438476047862163707126906090412828882025702126074e+49'); - T('1592658310474883023', '-399176738358380589054069565962.3840352823659556138516', '3.991767383599732473645444489853840352823659556138516e+29'); - T('206141261', '-1266053.469', '207407314.469'); - T('644.1', '-0.4369751366969488640109929651726886244920517832668019', '644.5369751366969488640109929651726886244920517832668019'); - T('1612132.216890744513316472', '-51082267675271', '51082269287403.216890744513316472'); - T('1230427083.97', '0.000758744063330274578234716889288876558038637793691373850', '1230427083.96924125593666972542176528311071112344196136220630862615'); - T('-35776247491956058344815123524285', '0.000000000012958363043907', '-3.5776247491956058344815123524285000000000012958363043907e+31'); - T('8661462327754244989542.365', '0', '8.661462327754244989542365e+21'); - T('-1629190886816579351740029513722257473580386199203949.0', '-6496265115300408904692604.738158', '-1.629190886816579351740029507225992358279977294511344261842e+51'); - T('13.891128134595', '4', '9.891128134595'); - T('-11113.7', '0.000000007958782556879962582439914573325191682999786', '-11113.700000007958782556879962582439914573325191682999786'); - T('-1118611298789753369562561', '0', '-1.118611298789753369562561e+24'); - T('0.000000000590336252071681886600391810609976', '-67.75', '67.750000000590336252071681886600391810609976'); - T('-169823638653318606537007998653864233599165.937', '-281597273362859424.39994', '-1.6982363865331860653700771705659087073974153706e+41'); - T('-3.156805980919999726868943', '546306412638131947574220', '-5.46306412638131947574223156805980919999726868943e+23'); - T('-0.000000000961866927553387950929926693447189622664803906118589565996', '1599939073440130339796992146.295983955944260728', '-1.599939073440130339796992146295983956906127655553387950929926693447189622664803906118589565996e+27'); - T('0.4283', '0.000000000020729812246752207692169547780166634734001', '0.428299999979270187753247792307830452219833365265999'); - T('-0.0004573434550153087210903', '0.03770996737891493754829068954377697580116', '-0.03816731083393024626938098954377697580116'); - T('-3960.59579547', '-1814.0503015604326701', '-2146.5454939095673299'); - T('228667830414358772925710849158.07453', '-242389246', '2.2866783041435877292595323840407453e+29'); - T('-4938.8', '33796487947361', '-33796487952299.8'); - T('23066858157696468038.419700247057090437730118', '1017294462916594953213682499527318061014200', '-1.017294462916594953213659432669160364546161580299752942909562269882e+42'); - T('-3.329', '7129476962505466189.958258', '-7129476962505466193.287258'); - T('0.0002134952691176147868498212012808766187', '-55.418', '55.4182134952691176147868498212012808766187'); - T('-287906196200519721661337752259844531254735020373.400102226', '-149964438772134655329086295.489409993989261332871176761', '-2.87906196200519721661187787821072396599405934077910692232010738667128823239e+47'); - T('0.879756603251906828679553532880817', '-169.6608007559773549752480442', '170.540557359229261803927597732880817'); - T('0.0000006245253019711867486517080491', '-0.000000000000000016145400714914217811', '6.24525301987332149366622266911e-7'); - T('-0.00000000000000000028355442083', '-6.7960400', '6.79603999999999999971644557917'); - T('-327828.933845', '-0.000000000016720812786354347397949935318536433299320234', '-327828.933844999983279187213645652602050064681463566700679766'); - T('-12062798839897370982166084543665094512857864041322339898381', '-983855787277604624519041110446627116266868551757862371483', '-1.1078943052619766357647043433218467396590995489564477526898e+58'); - T('-368029067460.235618031440780659671986274176149669', '-7.8327366781', '-368029067452.402881353340780659671986274176149669'); - T('48.841', '621799398797787989614515.034591400113887912474171355', '-6.21799398797787989614466193591400113887912474171355e+23'); - T('0.00000000000000000001028447389', '11411023852013652', '-11411023852013651.99999999999999999998971552611'); - T('109388.053063770057103', '-0.000161002185201484294184231320866015688631673966536', '109388.053224772242304484294184231320866015688631673966536'); - T('0.0000000075454081720580498999564801', '-6133333234722476.50731423128929112324554345104797981', '6133333234722476.50731423883469929530359335100445991'); - T('0.0000000000001748707964040132704465271', '0.0014559085438085897564402233344521317116113630490391191639', '-0.0014559085436337189600362100640056046116113630490391191639'); - T('169.5777437575868731193679671977293144862017912', '171384684233482289557.248837', '-171384684233482289387.6710932424131268806320328022706855137982088'); - T('0.000000000000000963994117406293262728543', '10931977.50377877', '-10931977.503778769999999036005882593706737271457'); - T('-0.0000000000000004943772275105155307931235866139', '-6331812416762098838522', '6.3318124167620988385219999999999999995056227724894844692068764133861e+21'); - T('551506392806.03421875426724909838', '1494156988342161962977365.44', '-1.49415698834161045658455940578124573275090162e+24'); - T('-35954803866862.46955421251697497767880', '-96620255925.814702354', '-35858183610936.6548518585169749776788'); - T('-8973170535214416154002860437001664', '8701360172863868015378154133091486710755411398837050.58411296', '-8.70136017286386802435132466830590286475827183583871458411296e+51'); - T('369.0854266274373143948330319405738975782757717917', '0', '369.0854266274373143948330319405738975782757717917'); - T('4130252362617611707187141280611348999706', '-120506138511555615072992404.1670872857058427291541946', '4.1302523626177322133256528362264219921101670872857058427291541946e+39'); - T('0.00000000000000000129518837', '-43970554119955228415415630801336595257.433109069593', '4.397055411995522841541563080133659525743310906959300000129518837e+37'); - T('-199832949667155587976206363450860330500926252.4790', '88697015896564.601775678484183991355335780830', '-1.9983294966715558797620636345094902751682281708077567848418399135533578083e+44'); - T('-3', '-94608429043423790061', '94608429043423790058'); - T('5914252851', '-32833159514298.717701562542', '32839073767149.717701562542'); - T('0.00000000000000000062135622742614277', '-934153618.26014440731275', '934153618.26014440731275000062135622742614277'); - T('-414018564163156440', '82550425859087829706198633745536278044153640.5895796189250', '-8.2550425859087829706198634159554842207310080589579618925e+43'); - T('-1496454100585258488602.0286', '0.000000000109895026640912465560937708538864597016913853723419507', '-1.496454100585258488602028600000109895026640912465560937708538864597016913853723419507e+21'); - T('-1341525946245998', '193723560793329369351971060', '-1.93723560794670895298217058e+26'); - T('0.000000000000004972247161753329501987430882626554770098611002363504786', '-0.02206405830101097017174889990515767580456922875023374', '0.022064058301015942418910653234659663235451855305003838611002363504786'); - T('759412612479446413', '-0.001641148192720654679893469509982581527584330378', '759412612479446413.001641148192720654679893469509982581527584330378'); - T('202578904.71133021395689295350439448588680928447617886', '-35337424341284.346281238517', '35337626920189.05761145247389295350439448588680928447617886'); - T('10862970759795016587884612569718575353781870555253901512816', '-214.533', '1.0862970759795016587884612569718575353781870555253901513030533e+58'); - T('-0.00000000000000040285962950086', '-216829085197233503.866070375365413688040', '216829085197233503.86607037536541328518037049914'); - T('550250782173491663208128526734.569', '-0.000000000100710017655581949422409688681756709469258865537626639492015', '5.50250782173491663208128526734569000000100710017655581949422409688681756709469258865537626639492015e+29'); - T('-19678891452829871158.36095', '1040.72243146362968914160338864', '-19678891452829872199.08338146362968914160338864'); - T('-20972447940296172836322634.7', '0.00000000000000150351', '-2.097244794029617283632263470000000000000150351e+25'); - T('-135716917862073377635780105702430442287902.2441615427680', '-156170394359696385001989148011019228708', '-1.35560747467713681250778116554419423059194244161542768e+41'); - T('249073042918039345', '758712100158049101656321168.88542968', '-7.5871209990897605873828182388542968e+26'); - T('9228932554571685674.6101721970', '93.5210831751023', '9228932554571685581.0890890218977'); - T('0', '-3271.372', '3271.372'); - T('712617017414340344456425371594378983', '-7013575085098427106742320.320014442', '7.12617017421353919541523798701121303320014442e+35'); - T('0.00000000000000991278822903249', '-266685953910734027663766948621954.4074654249748', '2.6668595391073402766376694862195440746542497480991278822903249e+32'); - T('-0.00001168408090912846185222706894568927004955366630406', '-0.00000357928456', '-0.00000810479634912846185222706894568927004955366630406'); - T('-0.0000000000000000001077428', '-18065.9571', '18065.9570999999999999998922572'); - T('-26767075956743559361260276966383.60643853154', '9.811418917439919669145337064909359580107696', '-2.6767075956743559361260276966393417857448979919669145337064909359580107696e+31'); - T('-94992614046521719511194550871785575096581461042589', '-7.24', '-9.499261404652171951119455087178557509658146104258176e+49'); - T('249.84717238354744614', '-58760885296179353551418799.1637574', '5.876088529617935355141904901092978354744614e+25'); - T('0.190077788951733727544', '3029470118670840', '-3029470118670839.809922211048266272456'); - T('-535577308373493988698.28', '-0.00000000000000000001223589264699363887684193', '-535577308373493988698.27999999999999999998776410735300636112315807'); - T('17330374908582279821881.6419631817630053975265540001599', '51572037568522929067270779857332002426120', '-5.15720375685229290499404049487497226042383580368182369946024734459998401e+40'); - T('2620791577.5388', '-429.387', '2620792006.9258'); - T('24955342165062415125441804.9102804783908687387110', '-894.26', '2.4955342165062415125442699170280478390868738711e+25'); - T('-30.966199737786598010412005660223057114288056999548471748', '7554891.786144582480621940890219161695392942927639518', '-7554922.752344320267219951302224821918450057215696517548471748'); - T('1.1132', '33358298757744778319077792505.510848143559223', '-3.3358298757744778319077792504397648143559223e+28'); - T('-71806617.15', '5002475659678496285425142082140754487', '-5.00247565967849628542514208221256110415e+36'); - T('-64642.3969', '-45742744308293235253.79', '45742744308293170611.3931'); - T('0.000000000000000005061114767099631770343151056312', '-0.1380692319876694309061865652400348112805369059470451819398816', '0.1380692319876694359673013323396665816236879622590451819398816'); - T('1104962688677222230.43026613036133967074026481598059', '65279233245714944288887', '-6.527812828302626706665656973386963866032925973518401941e+22'); - T('-244.20751029974608088458301628723627482919450688930317756', '-10.309887906765666581', '-233.89762239298041430358301628723627482919450688930317756'); - T('-374204737.17485473467771059091311676198780910101246261', '-1772169195775224156804629688653654033.48913943457', '1.77216919577522415680462968827944929631428469989228940908688323801219089898753739e+36'); - T('0.0000825267296819574292144866422', '0.000000024644261884116746400488936364031', '0.000082502085420073312468086153263635969'); - T('-337528893876584865851246910311878729078289', '-181706307425668740481.5172', '-3.375288938765848658510652040044530603378074828e+41'); - T('338.68219932619', '36769458628.200', '-36769458289.51780067381'); - T('946213.052924553279580429320', '0.0000000000000000000164588680615834011158188287840390933880557701437361142926', '946213.0529245532795804293035411319384165988841811712159609066119442298562638857074'); - T('-2', '-1595717583274440094311744086944287786728005322', '1.59571758327444009431174408694428778672800532e+45'); - T('17453173.964073494242189989440985005742212919109806776575', '-14.66', '17453188.624073494242189989440985005742212919109806776575'); - T('9035579398295.9420488582066606273524126698350184209', '966939914253463733672441.61004035647', '-9.669399142444281542741456679914982633393726475873301649815791e+23'); - T('7', '-27403953633424153.2922529596537493', '27403953633424160.2922529596537493'); - T('-0.00000000000000000065661940373886034771780807724464', '23789019501708804655829.7720420134937860512', '-2.378901950170880465582977204201349378605185661940373886034771780807724464e+22'); - T('-379831', '1792454931672118909115.7219790011', '-1.7924549316721192889467219790011e+21'); - T('-6815476482314.81368548838834442636132177246866027753', '-23737403998114260637862634', '2.373740399810744516138031918631451161165557363867822753133972247e+25'); - T('-277091361.834', '1255049423087969154842.0583316773528577200623', '-1.2550494230882462462038923316773528577200623e+21'); - T('0.000527964207481201439802251215793030527669347056468169977214382', '1104312503520806883476040.604659402909367', '-1.104312503520806883476040604131438701885798560197748784206969472330652943531830022785618e+24'); - T('416.19049862551799054889649850446495', '25962521611212.630583656', '-25962521610796.44008503048200945110350149553505'); - T('-2', '0.00000023172759362622993578493256103424786936904115653889542088', '-2.00000023172759362622993578493256103424786936904115653889542088'); - T('2322661483960492703.7985297249359258447971802752303052984194', '-0.00285627578605593051554020854314614896', '2322661483960492703.8013860007219817753127204837734514473794'); - T('-50114375544024117743137634.7132631195193', '-4518136285230626801', '-5.01143710258878325125108337132631195193e+25'); - T('491790857283052164040388091239524266252647468540.602280', '0.0000000000000000002505634', '4.917908572830521640403880912395242662526474685406022799999999999997494366e+47'); - T('223757557.31976336704487143430860', '-30.36327', '223757587.6830333670448714343086'); - T('2266.004651', '-0.0000005867989135639875708', '2266.0046515867989135639875708'); - T('6958762418946097.285', '8704860092930499346311.824744308693', '-8.704853134168080400214539744308693e+21'); - T('-0.0000000000008758100333932644717298947984578724622849096677225', '-310962285610.30017170574463655670078', '310962285610.3001717057437607466673867355282701052015421275377150903322775'); - T('3654335458448.908519039918424', '-1017862207107897070244694254273184418309706541.32954379163', '1.017862207107897070244694254273188072645164990238062831548424e+45'); - T('0.000000028485591', '0', '2.8485591e-8'); - T('5073947900606220328306097118306928028865584', '-0.0000610672338767500', '5.07394790060622032830609711830692802886558400006106723387675e+42'); - T('184963915.618593586643741543203', '-1677.631219', '184965593.249812586643741543203'); - T('396871997862363101002483892.26', '-0.0000000000000000066839646413390330134202944396013877478232108451615', '3.968719978623631010024838922600000000000000066839646413390330134202944396013877478232108451615e+26'); - T('-0.001443', '-0.0000000000001480307586020440332395145414988692178570219362536734359922', '-0.0014429999998519692413979559667604854585011307821429780637463265640078'); - T('5173379226320319729203764178125730829947033.85', '16568260.329616', '5.173379226320319729203764178125730813378773520384e+42'); - T('-378684740425288590329.865832078814181361689411770555828033', '21039423253539461585612290662', '-2.1039423632224202010900880991865832078814181361689411770555828033e+28'); - T('-143411025.19904252040830704437889996439197644180', '0', '-143411025.1990425204083070443788999643919764418'); - T('-3971034326547', '-0.000000000000001192201124343158918732899783', '-3971034326546.999999999999998807798875656841081267100217'); - T('-1957074390.30', '-785.9373', '-1957073604.3627'); - T('11798157981084854910522713.726423390731883', '0.00000000000000000794673726058684351969247016507', '1.179815798108485491052271372642339073188299205326273941315648030752983493e+25'); - T('0', '63718006.533955912499520687', '-63718006.533955912499520687'); - T('-106057718559494874723085290836.38939560519223757224643923', '68938204335.59', '-1.0605771855949487479202349517197939560519223757224643923e+29'); - T('765027217313815006', '160135.21207763126955482', '765027217313654870.78792236873044518'); - T('-821923031708250104665643576287477708843314087.882590093', '-3990962158191136912693.079142196669532', '-8.21923031708250104665639585325319517706401394803447896330468e+44'); - T('0.00509812696199828345610871074161', '696247014515864996317842', '-6.9624701451586499631784199490187303800171654389128925839e+23'); - T('29732795045547659.0996914254', '-51709086127799933076710172937271558434987133.720', '5.17090861277999330767101729670043534805347928196914254e+43'); - T('-16286.209377407275812137531392451949', '0.00000000000000000022372394617291', '-16286.20937740727581213775511639812191'); - T('-1375253307827927096349134575050603.94211767852698652', '905513058712.3724033', '-1.37525330782792709635004008810931631452097852698652e+33'); - T('6307.78968779279695539093771472627844783336', '-0.00002778260088313361218945039359426278958850789168', '6307.78971557539783852454990417667204209614958850789168'); - T('-1251971126793648464770.62302133464300', '4108332118551588855518884176084', '-4.108332119803559982312532640854623021334643e+30'); - T('796875815810006347157872416846682346.70724147', '-26887.93843', '7.9687581581000634715787241684670923464567147e+35'); - T('503761901876.1', '-0.00000058591916804106576202', '503761901876.10000058591916804106576202'); - T('-0.0000144343551936630598170853542', '0.00000000000000001330848692526361142604488661622', '-0.00001443435519367636830401061781142604488661622'); - T('333807319855762444667280144179919.21709315488049995404', '3710.87428669634', '3.3380731985576244466728014417620834280645854049995404e+32'); - T('0.000000000000007381560468758912676992936863885310325961189', '5277874186685074734.78128632893251930850699235193165881271', '-5277874186685074734.781286328932511926946523593018981819773136114689674038811'); - T('0.002045907391481002055126364741722746123920492354', '-134940106198957372161636571.3843066120486149838380841998784', '1.34940106198957372161636571386352519440095985893210564620122746123920492354e+26'); - T('-30130112088.993827003962835076', '188322529121371266385077234579252182224.5691709790', '-1.88322529121371266385077234609382294313562997982962835076e+38'); - T('-3', '-8324641628446525083548695251230914153428', '8.324641628446525083548695251230914153425e+39'); - T('0.00018606293964295302172654549272224527271134692398', '-282281050085963.9114203115670420384745855159215452', '282281050085963.91160637450668499149631206141426744527271134692398'); - T('-16333583942997041272867370326132870504131195981.4696057800513', '45720082683202081441524403533698410.5545453845767', '-1.6333583943042761355550572407574394907664894392024151164628e+46'); - T('279328203.5', '-5825567.71080931239385137020833', '285153771.21080931239385137020833'); - T('-269224.94927224666095', '0.0000000000000000003064416316790457', '-269224.9492722466609500003064416316790457'); - T('6744812299069336942789392301581837129883725551922493.40', '-5703915992.9167440851668499293951029', '6.7448122990693369427893923015818371298837312558384863167440851668499293951029e+51'); - T('-0.000000000000000066706723472682', '-145217233354840.9452974499221403003294897671707915', '145217233354840.9452974499221402336227662944887915'); - T('8627053077274630737609487236548.4979774', '11.791146312838460410035604930189', '8.627053077274630737609487236536706831087161539589964395069811e+30'); - T('-0.01202422952668513636643178716923354493558618790', '-0.4635434098404790609527188243911111255589856688195077910287', '0.4515191803137939245862870372218775806233994809195077910287'); - T('-22486311958570.75', '136623992244353739977111844218335966565067420559172408797', '-1.3662399224435373997711184421833596656506744304548436736775e+56'); - T('-252554701524493.902565999316640', '0', '-252554701524493.90256599931664'); - T('0.00000000010355292', '-13318465915882548061708659853990135442387095003099676083', '1.331846591588254806170865985399013544238709500309967608300000000010355292e+55'); - T('0.000000000000003588941991478575635246817587941', '5787662416433534641981775919801763640029.288211579210799', '-5.787662416433534641981775919801763640029288211579210795411058008521424364753182412059e+39'); - T('3803854629.170758287238', '722557244.90221176531910610529831590', '3081297384.2685465219188938947016841'); - T('-4035292286478852880912536818781650501388972481375613031', '7023934966.329481438434165', '-4.035292286478852880912536818781650501388972488399547997329481438434165e+54'); - T('0', '-4651.5712076', '4651.5712076'); - T('943569.4471', '368852398555888115298707.33698897234448443580026', '-3.6885239855588811435513788988897234448443580026e+23'); - T('-7688139997698910283021899776208658703126', '-3014.021539', '-7.688139997698910283021899776208658700111978461e+39'); - T('-76014.328438738930802423876495451104480710964006', '0.16299839827610198847716746', '-76014.491437137206904412353662911104480710964006'); - T('425793955', '236826394', '188967561'); - T('1912.281988', '112194.49296301061246', '-110282.21097501061246'); - T('-5003494177.4861', '-1.82', '-5003494175.6661'); - T('7617479678.376905694802432279901930587745665869', '-947377.04', '7618427055.416905694802432279901930587745665869'); - T('367903789829906246.71158889842', '21491233153686072381957715968967883669600234520102964736911', '-2.149123315368607238195771596896788366959986661631313483066428841110158e+58'); - T('-6397756530845969250791946194979007883084.20444410377877774', '-2', '-6.39775653084596925079194619497900788308220444410377877774e+39'); - T('-75490132843212222631302495635041908895.42', '121330908238673', '-7.549013284321222263130261696595014756842e+37'); - T('7452613620257648176992750760.263566991938225', '519063023319381552888', '7.452613101194624857611197872263566991938225e+27'); - T('0.00000000000000778133736110171456441934891601883471609303002832912018885', '322394945530.295120804275213239014033', '-322394945530.29512080427520545767667189828543558065108398116528390696997167087981115'); - T('-8453.41542', '-92872449307.96646595226774421156553041473428714203142', '92872440854.55104595226774421156553041473428714203142'); - T('4184618260709992776470144081019630641.9546', '-39747088643178.4900618612667154842919288568428', '4.1846182607099927764701838281082738204446618612667154842919288568428e+36'); - T('-1002876199682238092689386871396', '-115235.191932983', '-1.002876199682238092689386756160808067017e+30'); - T('-0.0000020', '-67044918017341867873741', '6.7044918017341867873740999998e+22'); - T('19249573172273106187.51981325183516777379', '-0.0000036330230998383752637622876226209213994133789721626367167406', '19249573172273106187.5198168848582676121652637622876226209213994133789721626367167406'); - T('2367.8562797376185225678048', '-336.407580836131941', '2704.2638605737504635678048'); - T('15788198606260330370566880001150524384989538847.1566', '-13709725199190579602641841302109970817776478707296', '1.37255133977968399330124081821111213421614682461431566e+49'); - T('-0.000031568319907', '-319812227.101518430949692784775684487114739', '319812227.101486862629785784775684487114739'); - T('12598796115', '780974770970176277984213873835856961457.264132549460821743', '-7.80974770970176277984213873823258165342264132549460821743e+38'); - T('-12.05916350311631637603038624139252323932639510735991686', '-5079694354454213499772.98021638032478529', '5.07969435445421349976092105287720846891396961375860747676067360489264008314e+21'); - T('71001042332266', '-3.8749502633208489001742955080741839268852411926', '71001042332269.8749502633208489001742955080741839268852411926'); - T('-820079175.6236', '2602133034534013517476745071429', '-2.6021330345340135174775651506046236e+30'); - T('-0.05761', '-39324478925.37411997', '39324478925.31650997'); - T('-62331428327357976057401629977344374544913756472193', '5', '-6.2331428327357976057401629977344374544913756472198e+49'); - T('0.0000000079919621468803275713173314506', '-858.3109258585612540534304739091057092569004843368', '858.3109258665532162003108014804230407075004843368'); - T('0', '49228741196127252', '-49228741196127252'); - T('-0.000034775952537402974515789650718361816884555', '-81545435078.9081293428693463384918512495662737197672903499', '81545435078.9080945669168089355173354599155553579504057949'); - T('16831812489134711005.277009209496663', '-2711976951712313.504224327994229016719141489', '16834524466086423318.781233537490892016719141489'); - T('-14.478', '-7657287359215.379', '7657287359200.901'); - T('-5818291298159242639134804410045447574555164535.312859', '-2.318', '-5.818291298159242639134804410045447574555164532994859e+45'); - T('-0.00000000000000000538849432020724', '-0.00000000000043292954381309', '4.3292415531876979276e-13'); - T('129925455598327874.011965', '-373481502322636.54947846', '130298937100650510.56144346'); - T('23460218954598.255822499367', '5031071127.77603001713489698449235', '23455187883470.47979248223210301550765'); - T('0.1925927960745748035942288444958429531342391265261594074', '0.000000000001459509170829311723098341575950975186409687619', '0.192592796073115294423399532772744611558288151339749719781'); - T('-117656959944939983221909881756492.60506693656', '614774667011953263151051375859904824607146.03088402', '-6.1477466712961022309599135908181470636363863595095656e+41'); - T('4636798651708977942823954.838902837557757807933209543802058', '90429847774248975608629.657240991460781465643663', '4.546368803934728967215325181661846096976342289546543802058e+24'); - T('-8547.67216', '695927494328.0531238602508437', '-695927502875.7252838602508437'); - T('0.000000000000000000014395480531584764422752572199140185540212150740674066683', '0.00000000000000000165514253473158542904', '-1.640747054200000664617247427800859814459787849259325933317e-18'); - T('-14004821946.12197759187', '504302757065358604146449888186847067296187319675184252.5', '-5.0430275706535860414644988818684706729618733368000619862197759187e+53'); - T('0.00020661761959205061422959604052997905', '5983723321093859965577864973.03971707767767374', '-5.98372332109385996557786497303951046005808168938577040395947002095e+27'); - T('46.214922256501145', '-19450859033.49527912435693482', '19450859079.71020138085807982'); - T('607064966949689390411116362805267199510935776380', '-326141246118.898400528715804016912422852185420861463709', '6.07064966949689390411116362805267199837077022498898400528715804016912422852185420861463709e+47'); - T('7237360928.529978130333768130950', '52337694872297307366400191176848518321.9397556503425061', '-5.233769487229730736640019116961115739340977752000873796905e+37'); - T('-8.77', '0.00000250309032382179368', '-8.77000250309032382179368'); - T('2238967687307501052.8777593247573250304131289359965647930', '0.0000000006178212737146909670918694', '2238967687307501052.877759324139503756698437968904695393'); - T('4800872.6343266910471003503', '-43.630262', '4800916.2645886910471003503'); - T('6647.98125718514930441819193526467280173179366', '-4671450984642064474363.0922986578251558474619141444116721601', '4.67145098464206448101107355584297446026565384940908447389189366e+21'); - T('5213460994088.42423086209586241417259053025217796299975798215', '-4383637172725.279', '9597098166813.70323086209586241417259053025217796299975798215'); - T('-3.853', '20.661', '-24.514'); - T('-14271230745287310945.6312400262684102', '0.00000029645344606', '-14271230745287310945.63124032272185626'); - T('0.00000000032289911998', '92366796259.63491126551', '-92366796259.63491126518710088002'); - T('0.0000366129951186090146374619139990790117703732293398409315027110', '37573094701656757193581695.06285323469', '-3.7573094701656757193581695062816621694881390985362538086000920988229626770660159068497289e+25'); - T('-0.5052577098964168325539487540838485290578969474', '-2.469847', '1.9645892901035831674460512459161514709421030526'); - T('4157486.219788', '-0.000000000000000030', '4157486.21978800000000003'); - T('-18128173766.45100920958', '0.0000000270000492658439841803', '-18128173766.4510092365800492658439841803'); - T('0.00000011629092179596057280755013975516', '-21061915294588585007285269886442442.89790253758527', '2.106191529458858500728526988644244289790265387619179596057280755013975516e+34'); - T('1628917.78', '-21383191736538.31532452805283554', '21383193365456.09532452805283554'); - T('1559380098949430706272504015810.69555717100498119630529074', '165173284.748129', '1.55938009894943070627233884252594742817100498119630529074e+30'); - T('36374023831462155387508503692769818148680320937241486', '-1.031827911563637271237851439355833437004912', '3.6374023831462155387508503692769818148680320937241487031827911563637271237851439355833437004912e+52'); - T('4.8081', '0.0003519196291075952295892328224194785771237221553', '4.8077480803708924047704107671775805214228762778447'); - T('-3782511514044035022728785099618757257160775562240791309177', '-0.000000000000795400939', '-3.782511514044035022728785099618757257160775562240791309176999999999999204599061e+57'); - T('-0.00005330668607181480434', '71992567276897950313737317415196.7780236926093645024753', '-7.199256727689795031373731741519677807699929543631727964e+31'); - T('-336.6', '0.000000127038712398089934486863716910205972688100425270367714213640', '-336.60000012703871239808993448686371691020597268810042527036771421364'); - T('0.000000002105290992087417133622746', '534450465748570290833221890995266975.81084848298', '-5.34450465748570290833221890995266975810848480874709007912582866377254e+35'); - T('364174039086712731', '1199801.7839398845629477125742176401101168032886363303997296', '364174039085512929.2160601154370522874257823598898831967113636696002704'); - T('53877990578308734625625639885060125168528280779536508786', '103516583128.45068629304281452459340', '5.38779905783087346256256398850601251685282806760199256575493137069571854754066e+55'); - T('3.754616214', '-371.3860189917370620745548727151697481689878945779565644', '375.1406352057370620745548727151697481689878945779565644'); - T('-437926015567097757255992979555892654.76', '-176655130153455.0051', '-4.379260155670977572558163244257391997549e+35'); - T('-0.1515104603550', '4834028992891471292.78', '-4834028992891471292.931510460355'); - T('2.585364', '23561717378268.26567934', '-23561717378265.68031534'); - T('-0.00000091447444444639', '-14131860317888699752291325342793026389759140', '1.413186031788869975229132534279302638975913999999908552555555361e+43'); - T('-16752710965652120653891175893', '2680897440943339017130745026.27310', '-1.94336084065954596710219209192731e+28'); - T('-7690583538728476436923091784910770916580375622563360.6', '4501948.1501019307848784354357334781717072047589062130609366', '-7.6905835387284764369230917849107709165803756270653087501019307848784354357334781717072047589062130609366e+51'); - T('-210025330495963043.1263117974098', '4.0408', '-210025330495963047.1671117974098'); - T('0.000000000000000479418012427570596658200595436786', '-0.000000049076192452', '4.9076192931418012427570596658200595436786e-8'); - T('-4960517.52677', '-0.20046636670669982714317739081794719428221226519297075795', '-4960517.32630363329330017285682260918205280571778773480702924205'); - T('0.00000000000000288393352959940194003685227429', '-8.192356703062703306084975083202', '8.19235670306270619001850468260394003685227429'); - T('-0.000000028227155496211712', '-0.056083781', '0.056083752772844503788288'); - T('-839454439636.987095', '775436321034387281261238203040959529197645939448222.14142187', '-7.7543632103438728126123820304095952919848539388785912851687e+50'); - T('0', '0.002509727311267980178283', '-0.002509727311267980178283'); - T('138194000652491447330479606912366232', '51353410500300307.8188174125', '1.381940006524914472791261964120659241811825875e+35'); - T('-0.0000086433365715041098678710807336961726259747239597811694878263', '-145268834.890490551072993367', '145268834.8904819077364218628901321289192663038273740252760402188305121737'); - T('19818.037591821397251595707488', '-14488431569410083120931256684496228387192907.10558580383653', '1.4488431569410083120931256684496228387212725143177625233781595707488e+43'); - T('-18346363094160301954515801173824097.520003457764168574', '-132648009061.542335857', '-1.8346363094160301954515668525815035977667600764168574e+34'); - T('0.000000097667699203314068161184', '-350287455.727299', '350287455.727299097667699203314068161184'); - T('15800829403166795.5956516579102376267581193644', '29.54785', '15800829403166766.0478016579102376267581193644'); - T('-195433133492107651439595.4648774', '135838131242484112792610949874.2647657738877701854426', '-1.358383266756176049002623894697296431738877701854426e+29'); - T('-2', '-331826679660519916423352740752709.621460214', '3.31826679660519916423352740752707621460214e+32'); - T('412805093083.82448845946357429243448308860021150924', '-4809048739065577.4431952808766327302', '4809461544158661.26768374034020702263448308860021150924'); - T('-0.00000000000235767643592123724694037105632168276114465', '-631328471724074335984942302107.380800425094037515623490', '6.3132847172407433598494230210738080042509167983918756876275305962894367831723885535e+29'); - T('-0.00000000000000220460849133312061988', '-323463691145097046132093042761677037355966973.1622930610540', '3.2346369114509704613209304276167703735596697316229306105399779539150866687938012e+44'); - T('-253226218107370.687861922377273342910306', '-52546031966435521927925716976', '5.2546031966435268701707609605312138077622726657089694e+28'); - T('-148850237194.787856', '1335742711780796103930791.895449687698338781835275', '-1.335742711780944954167986683305687698338781835275e+24'); - T('3481814465412.29117434619146758762840', '57.076809325489408713318479840', '3481814465355.21436502070205887430992016'); - T('-15060251059.6808167001235294317015914788204', '-0.00000000000523357091851957064551', '-15060251059.68081670011829586078307190817489'); - T('29418890050482267.571', '1512904619571947700639.092531808891009', '-1.512875200681897218371521531808891009e+21'); - T('-142805667193382230472426114.689990961689308909', '-519593843130556.62290843106349543226083561151272', '-1.4280566719286263662929555806708253062581347673916438848728e+26'); - T('-358638707277120721995733548.388859943630638806306978', '-12.513', '-3.58638707277120721995733535875859943630638806306978e+26'); - T('-0.000000000957413518520', '154616552.5166', '-154616552.51660000095741351852'); - T('0.0000000000001317378310642388269736805357842209597616683098', '-379.8345851707018360080', '379.8345851707019677458310642388269736805357842209597616683098'); - T('1372405.3778516179192341', '0.000000000000002163', '1372405.377851617919231937'); - T('61969275419603.4874854962928918', '5690625807302485253835751613390387468762288135', '-5.6906258073024852538357516133903254994868685315125145037071082e+45'); - T('0.000000000000000000034542917777656343403295447877924', '-61797209717624749784326365240476675880321846180162004605.08', '6.1797209717624749784326365240476675880321846180162004605080000000000000000034542917777656343403295447877924e+55'); - T('149340986382607394618252', '-348422861056802876633.244173070463082440851567934244', '1.49689409243664197494885244173070463082440851567934244e+23'); - T('21.0305752637461994', '-0.00000000000000000018', '21.03057526374619940018'); - T('0.000000000000245763391729127989068640916678750088674', '3273.6525', '-3273.652499999999754236608270872010931359083321249911326'); - T('8345432957379892013764872946202.3591286636257', '775586.72252749606', '8.3454329573798920137648721706156366011675657e+30'); - T('0.0000000009480848572374298346871921803725380637', '0.00000000000000911217413808095850740763197861728244451', '9.4807574506329175372868477274055944641755549e-10'); - T('70880626.4544855056079364096562061524443476869494980365', '89384389228261065.70802344171649', '-89384389157380439.2535379361085535903437938475556523130505019635'); - T('0.000000045482894532333129301508476587210437088400596510400692048', '24.795178', '-24.795177954517105467666870698491523412789562911599403489599307952'); - T('12.868', '-781064.3974167751464737017896493722545380625', '781077.2654167751464737017896493722545380625'); - T('25861.13776', '-13581866495119551449671.4104186135980', '1.3581866495119551475532548178613598e+22'); - T('0.0000000279851374783866294881264604138618', '0', '2.79851374783866294881264604138618e-8'); - T('0.00000000000023206437663193708130977441410825096207', '0.000000000000000000425087532539980230979512', '2.3206395154440454132954343459625096207e-13'); - T('-0.0000000000000009639012508328042527698', '-81245998951741764.163321', '81245998951741764.1633209999999990360987491671957472302'); - T('144172855150098.8332813431897919012738325392504726164868382730', '0.00000000000000673875', '144172855150098.833281343189785162523832539250472616486838273'); - T('85529799866102780989277206081042484508661294846.1678649', '0.000000006974145550375375', '8.5529799866102780989277206081042484508661294846167864893025854449624625e+46'); - T('0.000000000000000000012367964247205144574', '-24.9923163', '24.992316300000000000012367964247205144574'); - T('-44089358978.731833149676054401997', '-3455102051335455388472971892.2931', '3.455102051335455344383612913561266850323945598003e+27'); - T('2736316.76004751504759105989955248293683757', '8624.126564458951823396869380153', '2727692.63348305609576766303017232993683757'); - T('-7512235696480.75815974687820', '4322425432060440.112621890781', '-4329937667756920.8707816376592'); - T('1041115705901246425717958893168', '192120533687402856766617056619385', '-1.91079417981501610340899097726217e+32'); - T('0', '2999934433827046995221465.734220582881837016702755103103369', '-2.999934433827046995221465734220582881837016702755103103369e+24'); - T('9132760.7806176704193036626898196556957735479237133471', '-22308955.789058912', '31441716.5696765824193036626898196556957735479237133471'); - T('3', '2510378.8302', '-2510375.8302'); - T('-601681273.341517', '0.000000241648614891714420578', '-601681273.341517241648614891714420578'); - T('7267886123144958232.238682838203', '6452575385170169.8619732325801597156212862621827', '7261433547759788062.3767096056228402843787137378173'); - T('1078231543180', '-48380974651269509996197011777331635750068803914.42093022312', '4.838097465126950999619701177733163682830034709442093022312e+46'); - T('-1565742468.40376463', '0.0000000000010050045763134196571949420320006727965700414589703', '-1565742468.4037646300010050045763134196571949420320006727965700414589703'); - T('-38.8392135498095373389405034839742338375432749653', '0.0000000000002005139891413163385623', '-38.8392135498097378529296448003127961375432749653'); - T('-548507159746966309439370232114407604859278960168.292101', '199162629302104211276079352651591547730479754027.137688159010', '-7.4766978904907052071544958476599915258975871419542978915901e+47'); - T('-133758998429281991365.53', '66349112060274991956125.55718817444465', '-6.648287105870427394749108718817444465e+22'); - T('-39898963484560669919956991873123027250358.023847', '473431260689632044598244688486253.757', '-3.9898963957991930609589036471367715736611780847e+40'); - T('0.000000048220620061585093302526746146', '11163285812734658091858.1', '-1.1163285812734658091858099999951779379938414906697473253854e+22'); - T('122477777.735604874', '1468489954', '-1346012176.264395126'); - T('9276934317177450323278091141313420338701', '0.00000000001807544083251601944163916296938991', '9.27693431717745032327809114131342033870099999999998192455916748398055836083703061009e+39'); - T('-726473085520805.68375', '-0.00000123946378123648562805', '-726473085520805.68374876053621876351437195'); - T('-862282453600744233837865549353.0199427', '-778120.1206481', '-8.622824536007442338378647712328992946e+29'); - T('181724674499441806352104852243619274064166.468709530648193', '87301023839580890632.74008889', '1.81724674499441806352017551219779693173533728620640648193e+41'); - T('6267361382130301.64571563169641350047', '-26946623311829959264900239615329966386.978158853097020829667', '2.6946623311829959264906506976712096688623874484793434330137e+37'); - T('9277033429827', '-11814312598907199463437424804147161225245724986.3549313', '1.18143125989071994634374248041471705022791548133549313e+46'); - T('0.00000000000000002212994406752', '506633182883598094135216', '-5.0663318288359809413521599999999999999997787005593248e+23'); - T('-1416.8382390011', '-616915584637554', '616915584636137.1617609989'); - T('173.67513129697677560331958844251459', '1761111548897687055316514264676906704871', '-1.76111154889768705531651426467690670469732486870302322439668041155748541e+39'); - T('-67316184421669659743.09478', '-247379520759715899369976143088432782692.1213428655', '2.473795207597158993026599586667631229490265628655e+38'); - T('-754359424425.325316286', '0.0000000000583', '-754359424425.3253162860583'); - T('-10745411.84893952612941343946024114284555985539357467110', '-2141617925741482283282941658235570196', '2.1416179257414822832829416582248247841510604738705865605397588571544401446064253289e+36'); - T('0.0000000005131824448956120259143731094456835119548321563889982', '0.0000000000261047578282225790207950702922733665519445636593133768591747', '4.870776870673894468935780391534101454028875927296848231408253e-10'); - T('0.0004478755432082113312483869192', '0.005599339808981958070363083539134166424719944', '-0.005151464265773746739114696619934166424719944'); - T('-0.000000000000001512526283647', '-0.0001153048049432909602774', '0.000115304804941778433993753'); - T('88012539757.9404775939244071255700825395712721930057171', '0.000000000008035455856306225847392238301065068', '88012539757.940477593916371669713776313723879954704652032'); - T('0.00000000000000000073487390383290696928688042616356700', '-0.0000000000000000019730868218008762078515130641383111305700506367751468707226', '2.7079607256337831771383934903018781305700506367751468707226e-18'); - T('54733464273.704359284996374313377912882194031', '0.0000000000000066', '54733464273.704359284996367713377912882194031'); - T('0.000000000000002583138166590499538768478879737734800', '-1493063867598060178500693.39747107', '1.4930638675980601785006933974710700000025831381665904995387684788797377348e+24'); - T('0.0000000000035', '16749083849855920068346', '-1.67490838498559200683459999999999965e+22'); - T('-0.000078422658166136557055297306793562873739079876517', '7.9665125435', '-7.966590966158166136557055297306793562873739079876517'); - T('0.000000000000000004026190822483046169679424015359624776872534298', '-6085341714.088449383656', '6085341714.088449383656000004026190822483046169679424015359624776872534298'); - T('-5.0471797394110', '-3508848877366497564225222.8325257807827', '3.5088488773664975642252177853460413717e+24'); - T('-1495955602856711738.322374249597444877184247', '0.00000337196217180', '-1495955602856711738.322377621559616677184247'); - T('-104.2132489251390', '445169760230242591585531000760.7493281224701823786204109196', '-4.451697602302425915855310008649625770476091823786204109196e+29'); - T('-11595.7728900', '0.000000077', '-11595.772890077'); - T('5693501895857569.824083133994650783219625725263527941848014', '38554113375996.91610257332', '5654947782481572.907980560674650783219625725263527941848014'); - T('-30342286.086738328729', '-0.003035138441', '-30342286.083703190288'); - T('23.0418', '-21373402684893068914382744570171080639', '2.13734026848930689143827445701710806620418e+37'); - T('1', '1792759503737685636350819178488081433275948', '-1.792759503737685636350819178488081433275947e+42'); - T('-38470355434482826491837564169', '-5414067362036587155177091588060858998697264.4', '5.4140673620365486848216571052343671611330954e+42'); - T('5376267017268469803391742461123.1484717294535169', '-3003564661167.71329437830040953302813675659856575', '5.37626701726846980639530712229086176610775392643302813675659856575e+30'); - T('242777368241805037089.180775943923462029927', '-0.0000000000102172171156058275649815', '242777368241805037089.1807759439336792470426058275649815'); - T('-0.00000000000000008656604284642653008106731777826037099', '-6154.026848568460638', '6154.02684856846063791343395715357346991893268222173962901'); - T('-25.0959689', '0', '-25.0959689'); - T('4.4106469958140159750720', '-2.7', '7.110646995814015975072'); - T('-1191115481.24960789843322513194152993', '101480579638.7', '-102671695119.94960789843322513194152993'); - T('-64335581449382102148651961778', '-13922618962022310.38526581442116512370091', '-6.433558144936817952968993946761473418557883487629909e+28'); - T('0.000002419556771906375756783331125070178732526767', '-704659820.24047391470481450387646', '704659820.240476334261586410252216783331125070178732526767'); - T('91086229113018291.85868623557295042563793418491', '-6412976188024708199931810226.6257', '6.41297618811579442904482851848438623557295042563793418491e+27'); - T('-166376886435906071.671676003286240157545425223534', '-0.000000000000091700715807851859225796752901241413659885', '-166376886435906071.671676003286148456829617371674774203247098758586340115'); - T('-1604178602185.15391140031008758283', '-0.003382166434467926234482400431856589755224770', '-1604178602185.15052923387561965659551759956814341024477523'); - T('-1550.5067982', '1755233709470197458.5321953822', '-1755233709470199009.0389935822'); - T('0.3014', '43133762452399944536671349566322158.93626365', '-4.313376245239994453667134956632215863486365e+34'); - T('-64.5979', '-0.00000150928436566222094395688472086656530077', '-64.59789849071563433777905604311527913343469923'); - T('-771717.603678878', '0.0000000000000011883865777330973023055360', '-771717.603678878000001188386577733097302305536'); - T('0.0000066980807778368470000446256117729524345121272595145987', '-32254507023.88915752082', '32254507023.8891642189007778368470000446256117729524345121272595145987'); - T('-3.896651617783010917182197706278524524091', '-234356.4491086908087268932525516', '234352.552457073025715976070353893721475475909'); - T('0.000000000000000000365309384905118249080774978958', '-2593982058025640086344149662711100252281819944.0726056015', '2.593982058025640086344149662711100252281819944072605601500000000365309384905118249080774978958e+45'); - T('-807268846295783.66565769288073589114', '-9279.26445753', '-807268846286504.40120016288073589114'); - T('-0.000205066477824679946712948821846487595173765417878', '-11856312001.2579', '11856312001.257694933522175320053287051178153512404826234582122'); - T('21715853560267741681005732.8864129839650731630056482243802', '-26518465662155265718064844202342', '2.65184873780088259858065252080748864129839650731630056482243802e+31'); - T('-0.0000000002358578440972167', '214498383035810423', '-214498383035810423.0000000002358578440972167'); - T('4361467034560145704861429904045767902851.92573820902038', '3.59', '4.36146703456014570486142990404576790284833573820902038e+39'); - T('-5399354467819638876391446017237518290882302', '-9418844852716336037742898633771821467185538647360652378656.5', '9.4188448527163306383884308141329450757395214098423614963545e+57'); - T('-0.0000001178659835758080442880526500344288949201205201989828562345873', '3789033099896128122043510040864191.7055425399', '-3.7890330998961281220435100408641917055426577659835758080442880526500344288949201205201989828562345873e+33'); - T('0.00000000005982976503399938136849324', '0.00000000000075755295405642132036', '5.907221207994296004813324e-11'); - - T('-421450565450862733739882741263410125987400848651432120569319841269419221990711610801409.8070215252564874', '-243392659607204009035334731041415676417559363520670299047012358737705418584457146.868335409', '-4.214503220582031265358737059286790845717244310920685998990207942570604842852930263442629386861162564874e+86'); - T('2995340172136827282681082940837304688534605164044247935816574334297096539991453139359346773494887259928780399192576191569246077843624156140842225', '-1221176047834651784581078792412765867711628546241044712073657285378727907841444910656147964990491084587511386617.262995074491', '2.995340172136827282681082940837305909710652998696032516895366747062964251619999380404058847152172638656688240637486847717211068334708743652228842262995074491e+144'); - T('66496777.1048248699226846854182647353383780982905985351644739', '611110887295764011339.52942021906792320951632532924734194110935652615437372802282890281281736794257440312255694791', '-611110887295697514562.42459534914523852409806059390896384281875799098989982802282890281281736794257440312255694791'); - T('-1008448844147', '-0.0000000000000000019476287', '-1008448844146.9999999999999999980523713'); - T('-0.000000000000000000516432305268991528777659423596262', '-298372128925675105602022884944348.2680420889095373857666394', '2.98372128925675105602022884944348268042088909537385250207094731008471222340576403738e+32'); - T('-123500072490134997.714568930708754033518940686118181893673033346987867', '-2578011852826744661373892702884.2218394002814041283307474989342835625859515222796606255126639775600582467053535947189955421841414538276875776982', '2.5780118528266211613014025678865072704695726500948118068128161016689129181752917936255126639775600582467053535947189955421841414538276875776982e+30'); - T('21874922820040.11669694092724059036160007405283774815020181046771169772206306814891484445951224460904841652605502865721442462130288010', '31200659.3720643364048896004458800281137277425602565342', '21874891619380.7446326045223509899157200459391100055899452762677116977220630681489148444595122446090484165260550286572144246213028801'); - T('-67826336382297566597618786205691264038459363425175950127924836604587803884808989.730966693870183767', '-0.000010934566312291377545830845045333824309160616881090991', '-6.7826336382297566597618786205691264038459363425175950127924836604587803884808989730955759303871475622454169154954666175690839383118909009e+79'); - T('-86697937667412', '-0.000000000000000010885508014854389736820644838727265143960231771135151634179626636837681706789395306987969756304048180103464002627364375565746495636426525896', '-86697937667411.999999999999999989114491985145610263179355161272734856039768228864848365820373363162318293210604693012030243695951819896535997372635624434253504363573474104'); - T('13239420394588114639023745289048683419202338196760858236726250820537420580804213017510790278292290014782026362194', '-0.0000000000000006743804370173243035185881087573', '1.32394203945881146390237452890486834192023381967608582367262508205374205808042130175107902782922900147820263621940000000000000006743804370173243035185881087573e+112'); - T('15390.4', '4140709577543085939068096954669836524172838073868529566429367862425997374799588343038360402928322145938978599798868.9860038387559873', '-4.1407095775430859390680969546698365241728380738685295664293678624259973747995883430383604029283221459389785997834785860038387559873e+114'); - T('1068041657610774618407195645889793312307387843651159034936031674459010136784601252596838684187431642727503640875306262502315681768438', '-270043310707338335874517438680428125320070134440535322728713924276969', '1.068041657610774618407195645889793312307387843651159034936031674729053447491939588471356122867859768047573775315841585231029606045407e+132'); - T('-154248552738364025256732966577155380446860806518778173860697213762291995224.05508159477619681374', '-0.004301153450587648414307336514788194741568895974277211381969307271', '-1.54248552738364025256732966577155380446860806518778173860697213762291995224050780441325609165325692663485211805258431104025722788618030692729e+74'); - T('-63378626295.9', '3581805238164539487164037240742370503938629203589842975477397652', '-3.5818052381645394871640372407423705039386292035898430388560239479e+63'); - T('-4278738506861855303803.685941371999517217112263860961', '1', '-4.278738506861855303804685941371999517217112263860961e+21'); - T('4722957382126750592971015303833730398703112.9325022739644', '135935655079909511034147686928535747252480216156484264244569583366838078412.147497624', '-1.359356550799095110341476869285310242950980894058912932292657496364393752992149953500356e+74'); - T('-0.085968464304838528608760871311794870568574888285345150515011250264989219693613274665433658244439289382746661487914586830547', '-1063290105646753333057649979045695307527992816411892112479790721669979250549466052710783805392449284495837713080894121068105045830138816290.52', '1.063290105646753333057649979045695307527992816411892112479790721669979250549466052710783805392449284495837713080894121068105045830138816290434031535695161471391239128688205129431425111714654849484988749735010780306386725334566341755560710617253338512085413169453e+138'); - T('16124498471436271836.174203105207953106915', '-0.0000000000000000024763633167036725188984815540228360744116272407116469322488952920669576143580628085795995666173708903799390536974903000256740969', '16124498471436271836.1742031052079531093913633167036725188984815540228360744116272407116469322488952920669576143580628085795995666173708903799390536974903000256740969'); - T('13060329629573076844480853604358182661217396692808889824.8934224473655695659109683301950879985310417264401844104664883', '2655975253497367378557314381561996.880511919813781979361114586185190856887597866439252779127105', '1.30603296295730768444781976291046852938388393784273278280129105275517875865498537440098971416434438600009316313393833e+55'); - T('7828918777589631958673609756697717233158380319992892621665', '664080.907156046062276770226566166774715944049', '7.828918777589631958673609756697717233158380319992891957584092843953937723229773433833225284055951e+57'); - T('1102045632452.9793048891721127647873110178015535129097555045251534115765524554358921107344361810504392212504634634', '10480858160855531623861683.3953304547', '-1.04808581608544295782292304160255655278872352126889821984464870902444954748465884234475445641078892655638189495607787495365366e+25'); - T('1588237583004474241570674574155806135977994054265831583868733852477199751.6125369120506144977', '-1758643150655173823782138162406249816325114275744255398376729480619194524', '3.3468807336596480653528127365620559523031083300100869822454633330963942756125369120506144977e+72'); - T('-121908802598585866222616306604158404572834073196639.30608547355363660580248376236860407669299263592702', '-47300202299798563445786841751110283088211407088073898239866395', '4.730020229967665464318825588488766678160724868350106416666975569391452644636339419751623763139592330700736407298e+61'); - T('0.00001018', '-0.0000000000000000003775949557336735085158573036212360452188352127143755001043595772762253543341426632340961625924634823303829450325116', '0.0000101800000000003775949557336735085158573036212360452188352127143755001043595772762253543341426632340961625924634823303829450325116'); - T('-397079706875731796310420230640137723941921196836019.63', '-0.041045084177321369958383091589758576', '-3.97079706875731796310420230640137723941921196836019588954915822678630041616908410241424e+50'); - T('-25255670718458145585125947408178.20003200206718595937', '23790086654614644315060006023753790313128255720789244411931242762019828811933845880517294907262', '-2.379008665461464431506000602375379031312825572078924441193124278727549953039199146564324231544020003200206718595937e+94'); - T('388216212.4067014280868903953571410637325737919396528867014154838280455505188062329013057244757878', '606945158458429249401712430149203335884502730947097871424092354090910701814671093294150735256.311971299391789036587867972923', '-6.069451584584292494017124301492033358845027309470978714240923540909107018146710932937625190439052698713048986412307269091904262080603471132985845161719544494811937670986942755242122e+92'); - T('-13758420895788683271912900568609892935336486526537239092874365', '0.0000000427931529718203244548288038739877932413390488514893154906501275029696961218603307975431172274454', '-1.37584208957886832719129005686098929353364865265372390928743650000000427931529718203244548288038739877932413390488514893154906501275029696961218603307975431172274454e+61'); - T('0.000370061363293', '-0.00000000729718323650351200936805011200230897331673895494582965292153458641292454418451631', '0.00037006866047623650351200936805011200230897331673895494582965292153458641292454418451631'); - T('-0.000000000000000037267063363570380515693697474002406633393933', '5371503530945116760368005450503842267224225935.443693351128547707505116811332630555129489463135', '-5.371503530945116760368005450503842267224225935443693351128547744772180174903011070823186937137406633393933e+45'); - T('987277696994412694084034600111639245624814061790126142560388376636239445837.3', '0.0000021235425818843833696026604635378067565443474', '9.872776969944126940840346001116392456248140617901261425603883766362394458372999978764574181156166303973395364621932434556526e+74'); - T('-0.0000220122231289032322357369232053897035669971251749680777769003202659812319155442107', '3509368133759059638669289822772173467.5789662072733463078733831264876196643926418400220747139696586172005930587312837', '-3.5093681337590596386692898227721734675789882194964752111056188634108250540962088371472496820474355175208590399631992442107e+36'); - T('-0.0000000000000035350393604865398332629110742215182474841758918373895373399045442910854670022381868595891655052656143931905987096001246764946455093272', '0.000000000000000024560182', '-3.5595995424865398332629110742215182474841758918373895373399045442910854670022381868595891655052656143931905987096001246764946455093272e-15'); - T('-207299473460686051638799737978676287687756682811506270896244029691640707953363231798114058314798954715497689478762298979167444328.2154321', '84.9875755884409473552243470559913666018369306750346853705848251516641143427438599427140088', '-2.072994734606860516387997379786762876877566828115062708962440296916407079533632317981140583147989547154976894787622989791674444132030076884409473552243470559913666018369306750346853705848251516641143427438599427140088e+128'); - T('3271753269852982202221073139870131965618400215989200201303890204830390736963230557181963499423.97161923384826121516522802454125216009692783106615', '610709896713545517320.61325351307180550727524165198', '3.27175326985298220222107313987013196561840021598920020130389020483039073635252066046841798210335836572077645570788998637256125216009692783106615e+93'); - T('-171890925468345318289557520417686524897898778387.7049747769377054087', '0.0000000000008626202220397871613368552810353647018975957787995640929353071154146588942452406480447534761421336774021631535188253352941985865', '-1.718909254683453182895575204176865248978987783877049747769385680289220397871613368552810353647018975957787995640929353071154146588942452406480447534761421336774021631535188253352941985865e+47'); - T('11797561306382075049308870675243395524960617768982687731904993854819896455053370294329059.5', '-9266409282787978360416645397432756233517921427389.714082569117296693989915074785029952731114155890581220089683737330882', '1.1797561306382075049308870675243395524969884178265475710265410500217329211286888215756449214082569117296693989915074785029952731114155890581220089683737330882e+88'); - T('-424430636249988989578724500467105386916790551644026356512230425657196415575958762209685893722637592.42515458907522545588092531969', '-699146481762025356180846176956775322378040371282973135438056771990065583612223969221925059327626424485', '6.9872205112577536719126745245630821699112358073132910908154454156440838719664801045971537343390378689257484541092477454411907468031e+101'); - T('-0.00000130798527635604695258712844244105224418951215845097932279572456369133399455', '0.000000176284029965375880004181656007589949467118245220868298039483413025781635383510797', '-0.000001484269306321422832591310098448642193656630403671847620835207976717115629933510797'); - T('0.000000000000462071916734680776281054', '1143549992221513568696244482022549056707895554082064.282542', '-1.143549992221513568696244482022549056707895554082064282541999999537928083265319223718946e+51'); - T('0.0000000000000000426800518382365970695662273350350877364291904795717019319799963342380112501925257351654', '0.0000000000000013278679842106035272342072', '-1.2851879323723669301646409726649649122635708095204282980680200036657619887498074742648346e-15'); - T('-0.000000000000000000016354802329513866', '122022209857.15312653353983161651403936785710765909662481656738699983151473856575442647972705932905488645338136045162567147688725', '-122022209857.15312653353983161653039417018662152509662481656738699983151473856575442647972705932905488645338136045162567147688725'); - T('25801628293435628816490256345279207687083725145006124892029160063238265267.3431144744384935936819525999160077311803590506825603145972954326789291', '-285119248451148500201319196762968888442368918233718192676490082873043334950267626673646944070692473524519642', '2.851192484511485002013191967629689142439972116693470091667464281522510220339927716797718360998525367627849093431144744384935936819525999160077311803590506825603145972954326789291e+107'); - T('0.1423', '2429833169520732752372574762485088466742598273119469284544035996929667546050321271916945887077199411341346293601.72939677', '-2.42983316952073275237257476248508846674259827311946928454403599692966754605032127191694588707719941134134629360158709677e+111'); - T('3.80188793676049024809', '0.0000000000002833272682244473387924044230539081036171682212105326649350597590901815021244717391629977491943712364070741264536987011350709308', '3.8018879367602069208217755526612075955769460918963828317787894673350649402409098184978755282608370022508056287635929258735463012988649290692'); - T('-322814450973877874279521.0', '263039808493736512406179831713394337242295861157184.672295063', '-2.63039808493736512406179832036208788216173735436705672295063e+50'); - T('398742236640963', '44.00495510581548851408966', '398742236640918.99504489418451148591034'); - T('-3573583864.539627856711706646067988209079651520670851811891852561', '-0.00000000000000000329278234017133237246586831901282091949913572717292793996445894343939371558967511917774705488676891269560643860123317086289974802538004355597691349812', '-3573583864.53962785671170664277520586890831914820498349287903164150086427282707206003554105656060628441032488082225294511323108730439356139876682913710025197461995644402308650188'); - T('1912764785977618050454430552593203249088615699', '-485515908236945825.82230967655356283052002508081428895192743749813173660196480495243134130534734417501263634', '1.91276478597761805045443055307871915732556152482230967655356283052002508081428895192743749813173660196480495243134130534734417501263634e+45'); - T('-209.9480474748934376775111457605595206860865832017099805042786198516620696960966458436798888919348', '-539891303089085349109418789373221841481476900927418909970947.98689276127478239299357632782372174032445906', '5.398913030890853491094187893732218414814769009274189099707380388452863813447154824305672642010542378758582900194957213801483379303039033541563201111080652e+59'); - T('14686906472232406033983442617897900163963974602', '-1420622706271964656354950704.1697326665068929806041828344182380198712418608178840095762', '1.46869064722324060354040653241698648203189253061697326665068929806041828344182380198712418608178840095762e+46'); - T('86543050569726858572005888237520502257116260484789853410061111403475802158093598826908247486.836335533846125875491403509186859062493992', '-0.0000051065665739422395774587551282612336173295903645593309699764793560943989004198255241', '8.65430505697268585720058882375205022571162604847898534100611114034758021580935988269082474868363406404126998177309809679419873237276093295903645593309699764793560943989004198255241e+91'); - T('342895773116306829110212528967784741562164292.01513115088269038806033385850', '0.00000118862709647506650871551520859000440835170689555307064827601186026157168885360722702508608962915698632770928960656597545', '3.4289577311630682911021252896778474156216429201512996225559391299382514298479140999559164829310444692935172398813973842831114639277297491391037084301367229071039343402455e+44'); - T('739924109312422522091016571038779963072584', '-64775259.6826186518884824872925596155743958419605122483453848814970771390948590513454670', '7.39924109312422522091016571038780027847843682618651888482487292559615574395841960512248345384881497077139094859051345467e+41'); - T('6609838981181176735659252.7740697649501200112', '-11286186232989566466114315553164377878561114785839243669268249646267418129841210.35980783715095457778535932', '1.128618623298956646611431555316437787856111478583924367587808862744859486550046313387760210107458898535932e+79'); - T('-187391162221219921070460320744240172407912239353798545547332717684757305669457677296318215340489442645.28366529601614598850373', '-9113.9748812203681488412701629366868978775543399390741272418220574874035442918413045437197807171343403867576380368103250028', '-1.873911622212199210704603207442401724079122393537985455473327176847573056694576772963182153404894335313087840756479971472335670633131021224456600609258727581779425125964557081586954562802192828656596132423619631896749972e+101'); - T('545567297425658900059033345039628434103460646144205348817463850197715173654.760035446992603845914884479975954101703', '-3.25531678994006', '5.45567297425658900059033345039628434103460646144205348817463850197715173658015352236932663845914884479975954101703e+74'); - T('41005341883885124910253307373863933024572386393999832504926014424.04068230757553061685965194104847256614930594539431445372085538790197', '-0.0000003064573352368766798045131330999970376084101941252529063279240676746738279894937999916288137325237148909161534147848901003719756893653182826', '4.10053418838851249102533073738639330245723863939998325049260144240406826140328658537363317455616056661463435538045085789737617158260376746738279894937999916288137325237148909161534147848901003719756893653182826e+64'); - T('-21772543213224719483282057502996460271243910021555859843788194322560764800215622961743791', '-219538453980808949925972347106117120906813214436418773865178519764872595507494270091275.549469440429227', '-2.1553004759243910533356085155890343150337096807119441069923015802795892204708128691652515450530559570773e+88'); - T('4843564632.07325685271287267587642074472329955', '-2253.1', '4843566885.17325685271287267587642074472329955'); - T('-1465639293224611258.1640919252320447', '0.0000000000000009272840616057150840199792579106702667313583800294803029238640296064513396998901049886143310419234155012846386', '-1465639293224611258.1640919252320456272840616057150840199792579106702667313583800294803029238640296064513396998901049886143310419234155012846386'); - T('46668145279017817857972034174120636924960629989668564040596683624271865534.57', '84.9', '4.666814527901781785797203417412063692496062998966856404059668362427186544967e+73'); - T('-738241543348122522391845849281775440907729860333.816380311486149269839379', '0.0265469560323666758057467119830695293620004914159121944165101243889371879961', '-7.382415433481225223918458492817754409077298603338429272675185159456451257119830695293620004914159121944165101243889371879961e+47'); - T('0.000000000000000001734597550329925170683988212040626455377015149950764555153937498632499946117886619477443', '21522778596700039662643518332810996834742527241604682606746145945739181821479030002316968608237.843101668183269553916654985900396859343464324', '-2.1522778596700039662643518332810996834742527241604682606746145945739181821479030002316968608237843101668183269552182057435570471688659476111959373544622984850049235444846062501367500053882113380522557e+94'); - T('-0.0000000000000000000309703805445398610474900212495574298677865146433319735295565686883503979155963415371001608918561542864325055703887850430784945642120545934153', '-5.6227', '5.6226999999999999999690296194554601389525099787504425701322134853566680264704434313116496020844036584628998391081438457135674944296112149569215054357879454065847'); - T('-5064143323681064652393632163111.93089333677771516967546169174265515779023117868686275683397034493611565', '-0.00000000001073777696437370169', '-5.06414332368106465239363216311193089333676697739271108799005265515779023117868686275683397034493611565e+30'); - T('-1396826091243475193.1', '-1288002403964300782016794952204121336647057494337679233.713597178033979199448274404277214801719513817499902870656', '1.288002403964300782016794952204121335250231403094204040613597178033979199448274404277214801719513817499902870656e+54'); - T('364339635.011212286283196681723183929801097146881219006560017', '-1005720700996298', '1005721065335933.011212286283196681723183929801097146881219006560017'); - T('-257562976090545385234669132851624833292427282439090020.719343974047857466853161243072384425509047149775370947901720407174956846928296202473095472', '-1623127319151265475871704129654550871405407416881602056343569964910663809884633229508196329223823041.7206810159931522079791856822', '1.623127319151265475871704129654550871405407416624039080253024579675994677033008396215769046784733021001337041945294741126024439127615574490952850224629052098279592825043153071703797526904528e+99'); - T('0.0000000000000220607316968906929903970883560258897819751208683268360364851788263', '0.0000000000000000600784639775121406482942932372611353', '2.20006532329131808497487940627886286466751208683268360364851788263e-14'); - T('-0.000000000000043989086', '-44309230851677894984939938565089867097397779157566647630330915058596891092311151485774600807340241541392574864911717487.862518042789404', '4.4309230851677894984939938565089867097397779157566647630330915058596891092311151485774600807340241541392574864911717487862518042789360010914e+118'); - T('-0.000000482926598434254495862080721294034240317086724705402508463332112037991339240729385845354673866033075192672349090063032508', '-131360031110406516192037002195365556732148135932795271282547111275387791270050177023234968875866030325638578', '1.31360031110406516192037002195365556732148135932795271282547111275387791270050177023234968875866030325638577999999517073401565745504137919278705965759682913275294597491536667887962008660759270614154645326133966924807327650909936967492e+107'); - T('90662704837359221983067383218111894.9575101269344703639471125782669325117231999424752935395342', '-1003082878257466499301963750949455756319801133590.9096038135671589349331563057210', '1.0030828782575571620068011101714388237030192454858671139405016292988802688839879325117231999424752935395342e+48'); - T('8122241424803915907910045579802249996527160493328189939983695513719757201277358369302040281397660429815708520244075564900409812', '5953815721349504215933972982145270510517473063697276921387486344144210713.78', '8.12224142480391590791004557980224999652716049332818993402987979237025298534338538715676977088018736611843159885658922075619909822e+126'); - T('7991350014483385014452400954462003012335870376818921107933891647581751944961549909381574328015589839.2322422374080381874344210390470431707892', '-18688.878545993875113185968540055115951056413820404', '7.991350014483385014452400954462003012335870376818921107933891647581751944961549909381574328015608528110788231283151373402961094162994227203020404e+99'); - T('-1201549207285023471623288363.093077137984596708144478749068', '0.00000026539824642010892262104442818872329795607002102749766710877993859556577972466454691281569600833952883562418043758499574880445814224717667678262548541', '-1.20154920728502347162328836309307740338284312825340137011242818872329795607002102749766710877993859556577972466454691281569600833952883562418043758499574880445814224717667678262548541e+27'); - T('75311239722806498991168677625201999153196464897386996233710029214675693542594584.030032275297208734980242411305757844200195419550995808', '0.00000000000000174652609458505387986677857979923', '7.5311239722806498991168677625201999153196464897386996233710029214675693542594584030032275297206988454147826251877977421615620320995808e+79'); - T('0.0000000000000353682715117343396008139392193804645279990939015187625700163231712251406332', '0.000000000113523402513085710775666504535102628539977357555114115140', '-1.134880342415739764360656905958832480754493584612125963774299836768287748593668e-10'); - T('25393267156020697622507966272559237.59641792718917124986994778365558647150342934845113943261397901868166533972121', '-8953602751519594072912851200714566873449464820520095981074552864073057275.64400277107712961954031710933646037', '8.95360275151959407291285120071456687347485808767611667869706083034561651324042069826630086941026489299204684150342934845113943261397901868166533972121e+72'); - T('-109621598899109119.681443742531046712086897', '-374581278609124761376087334567960408592166724187316443183587025428047356270871954503065666641000369697417943372656053785.43872597385309997628624757', '3.7458127860912476137608733456796040859216672418731644318358702542804735627087195450306566664100036969730832177375694466575728223132205326419935057e+119'); - T('-1', '-975353903601003155097156088969595825652369092261504414412601751527209186035985001687896975402318843359120945984358141908733802607901210061', '9.7535390360100315509715608896959582565236909226150441441260175152720918603598500168789697540231884335912094598435814190873380260790121006e+137'); - T('-1010180736624357632304278472376562', '-2976630172749484868944762912267709771588766925127519991889274779878786428243958065464677092268718803221719459273939687', '2.976630172749484868944762912267709771588766925127519991889274779878786428243958065463666911532094445589415180801563125e+117'); - T('-0.0000000000000000003534066629774631966159394411462082995873351999578646015320944827942055231355490842935810', '-0.036044356747079611060903437812032142854350', '0.036044356747079610707496774834568946238410558853791700412664800042135398467905517205794476864450915706419'); - T('-1526096527808476160349609179852946562211.685903646022496376055878254', '1362591651000463812653063829143557737447628829546619971189589.203149513988762118328955262250680582456193660886095627130648934202517770563176', '-1.362591651000463812654589925671366213607978438726472917751800889053160011258494384833516250680582456193660886095627130648934202517770563176e+60'); - T('19320521819464336609965537393303850154554779478967237541.181740342436742642132602701909555424833647068652587', '36.95235866', '1.9320521819464336609965537393303850154554779478967237504229381682436742642132602701909555424833647068652587e+55'); - T('0.0000000000000000059086539273106107233962061788234561229771196283927754983525', '0.000010966647043776077878565685051717652096966', '-0.0000109666470437701692246383744409942558907871765438770228803716072245016475'); - T('0.000000000000000291508913251611559233670098989956434773070295291467160805172311376194998291058162533782938726179866516047606', '-1628909277725099787508683923508579707615799.2781649599495440150562819682935976323342667567117971951187701859394514400', '1.628909277725099787508683923508579707615799278164959949544306565195219905156866004365746668231968189065477406612245172311376194998291058162533782938726179866516047606e+42'); - T('2456565085671291252533213649183332261726393175508794379993650690041356484115074939702355', '-792071839545569033370633444973336689417838.95905325719912926858163081', '2.45656508567129125253321364918333226172639317630086621953921972341198992908841162912019395905325719912926858163081e+87'); - T('36242208914619642339819083618221621528937544636695183870528988863103659500324120453213846411263678533206476169383042170996012205255558591125924287', '-8527637110089077004296133078.548689219750368210567156616', '3.6242208914619642339819083618221621528937544636695183870528988863103659500324120453213846411263678533206476169383042179523649315344635595422057365548689219750368210567156616e+145'); - T('-288139905642.85133972865494566177561360699121828453190729669018251776515265250985806198704228574404406409996058809130695', '57.685745719', '-288139905700.53708544765494566177561360699121828453190729669018251776515265250985806198704228574404406409996058809130695'); - T('-680590848077096656729099299986105268010775', '-3940756250582632953280085589688456490450830441053358639711015662685.5876458545849231450334623183020123887046847733341586636887427156443214389386142', '3.9407562505826329532800849090976084133541737119540586536057476519105876458545849231450334623183020123887046847733341586636887427156443214389386142e+66'); - T('-0.00000000000000464798477570881362597831391087848642171588956612352664397214025637282503146289569312188996809201235391721184701297091963', '229510668379945446635992190232641551178111333311952316902120658018936303610', '-2.2951066837994544663599219023264155117811133331195231690212065801893630361000000000000000464798477570881362597831391087848642171588956612352664397214025637282503146289569312188996809201235391721184701297091963e+74'); - T('-47431205694992565418930842840793703282717398.191947035122622', '-38262831081463216678995758515.24', '-4.7431205694992527156099761377577024286958882951947035122622e+43'); - T('-919364307978.8988017767137102', '0.054658', '-919364307978.9534597767137102'); - T('-143225400724940647154298336931676918152131842385395309001703075947743779850991836523285204182327721048431248004372787336203288188136955101.42539412', '-0.0000000000036444268460743503614664927361907234', '-1.432254007249406471542983369316769181521318423853953090017030759477437798509918365232852041823277210484312480043727873362032881881369551014253941199963555731539256496385335072638092766e+137'); - T('632955343367277745405583809562259843947443640083859269919841228715604160541151817585859720.153766976201457179988669391500248183047854', '-3980620775419876921723363242387478932830746531218598561304844371368103759418106738578.2191228007189231296352120987296973541145408118698522', '6.329593239880531652825055329255022314263764708303904885184025335599755286449112356925982983728897769203803096238814902299455371623948118698522e+89'); - T('-11431356965911717667550228258416437331889929786766103155708832250235968861451582992625848777060561188238182761522625940473897303', '-21494014792784787595184007767480630.4718359202897210704378425198', '-1.14313569659117176675502282584164373318899297867661031557088322502359688614515829926258487770390671734453979739274419327064166725281640797102789295621574802e+127'); - T('167445439608039555943133.2565349346255919159524753710331727927482546974522844127', '-170610177.84658737421848366816682443401980132194941329175375443204315', '1.6744543960803972655331110312230884407558411929980505297411469766798920603884474315e+23'); - T('13588050303471.14204224509147709748772701071961428', '-2846670239.21559765880387140454090103138633524132996006051956914300933861577438157749445114659138365637629', '13590896973710.35763990389534850202862804210594952132996006051956914300933861577438157749445114659138365637629'); - T('2884217633259642787319342000051603653521516691886608156996898524479398460095322784150599567666195414054636506165396248262312499110274037149829793', '-0.49', '2.88421763325964278731934200005160365352151669188660815699689852447939846009532278415059956766619541405463650616539624826231249911027403714982979349e+144'); - T('1628348053926578504775310683640594840.18', '-5', '1.62834805392657850477531068364059484518e+36'); - T('0', '25.6085', '-25.6085'); - T('0.686217890943093321456902957432427930920753888456197188131905279831038714006759313970367467076944122805245768167433186925922801013913340', '-280.9846437544474336300817147012964188574151285470284551305', '281.67086164539052695153861765872884678833588243548465231863190527983103871400675931397036746707694412280524576816743318692592280101391334'); - T('0.00000000000340332021329324173250202191356270977362746852052557847139210569709283686364254219951529694529651271453552821650417', '-164368911717325046920.73329482756545681454251205873812192944414945415279875808501852199453462518417817132233', '164368911717325046920.73329482756886013475580530047062395135771216392642622660554410046592673088127100818597254219951529694529651271453552821650417'); - T('-516534324070139884.7741879765292957505952198282777909600935487202', '146754452557367377599239860534956890285095395520562623.08414402490725339577004922478313417', '-1.467544525573673775992398605349568908016297195907025078583320014365491463652690530609251300935487202e+53'); - T('-7862150161740.333843293297844', '-3489304238554590513247507065916226966675791294808848752.7395893237178003837558347838402377186885033242010881848399380565235778', '3.4893042385545905132475070659162269666757834326586870124057460304199563837558347838402377186885033242010881848399380565235778e+54'); - T('-76425877353723218923193769976112627809694461006515127338.70903900591342267672', '-81405', '-7.642587735372321892319376997611262780969446100651504593370903900591342267672e+55'); - T('448890821004569959750117.3985925529062982149919', '-0.00000000000006771592275943991478905618644801247941193384606583159209550989858234', '4.4889082100456995975011739859255290636593091465943991478905618644801247941193384606583159209550989858234e+23'); - T('0.00000011406978978113385456966935146505617316701596378729845687370006219616672043338275771066022032618558072376690445085965016785383519759578849021601322', '0.000000001074333633497324260534', '1.1299545614763653030913535146505617316701596378729845687370006219616672043338275771066022032618558072376690445085965016785383519759578849021601322e-7'); - T('0.0000000000000000098388959587739740341162303378089561994855515112821239635081705976158309039469451054135', '-0.000001410700377949704801346056617673576599569410838070841791880586705430927605302815864034641907656163728488162489705472103253731031782190814249810704', '0.000001410700377959543697304830591707692829907219794270327343391868829394435775900431694938588852761577228488162489705472103253731031782190814249810704'); - T('16965', '0', '16965'); - T('-173296003170746074411974480464449849275789060677253187906655130.35621428918277091401054198685991445606', '9987307250642568848222273488.07237677103631', '-1.7329600317074607441197448046444985926309631131982203612892861842859106021908091401054198685991445606e+62'); - T('56313995097156205794032855788026957442153004380906', '1959197690.09', '5.631399509715620579403285578802695744215104518321591e+49'); - T('-16265987991789427405120519655124290086694897782465483955109881892312790.0', '-8472377582734657144678697107349408612484052002424435997452474401137339657179.8354793580669182195980931547215677234501775415', '8.4723613167466653552512919868297534881939653075266535319685192912554473443898354793580669182195980931547215677234501775415e+75'); - T('554861276750786050195093192911576646864838216939018115253478076548406847106024415049015009323070447826851.1693209493824199114881022365592076838779457', '1729203992886560182769799176627696.7030206', '5.548612767507860501950931929115766468648382169390181152534780765484068453768204221624548265532712711991544663003493824199114881022365592076838779457e+104'); - T('2350978155540287801691924042190620635285451442925634874069224914124883396043040648506312047176852810899548676455764006316837438', '-2551506628086094864840341408447994216741146364868142569612506063507487425025110.309931396625986', '2.350978155540287801691924042190620635285451442928186380697311008989723737451488642723053193541720953469161182519271493741862548309931396625986e+126'); - T('13203137085009109554034420.10176018304241579430683160045', '170019441677688.0741576755619011964973604245532745397', '1.32031370848390901123567320276025074805145978094711758967254603e+25'); - T('-91119940320533621629925088838381377761994531140379743426003837742546140176935348401012460941486552655906857745993505840563823144054409171683778779229', '-74652873494135054265048456139803801421904108545479487454387811725432723023321219093564112176252137605.48139182125841144031282511', '-9.111994032053362162992508883838137776199453114030509055250970268828109172079554459959055683294107316845246993426807311754050192496084505950752664162351860817874158855968717489e+148'); - T('8687124396055842976264601096501451863929462701537236230130347130957533866751062788203.6801997865475627493037980272028364235779819787945862854388786', '4393.0547331217320860218042817496323025348168504', '8.6871243960558429762646010965014518639294627015372362301303471309575338667510627838106254666648154767274995162775705338887611315787945862854388786e+84'); - T('4227267383837391491108630568817648.18', '4703737939182568540209790636363.1253794769484641462244847000439730177702702662024029476513485225861537356914086556572097', '4.2225636458982089225684207781812850546205230515358537755152999560269822297297337975970523486514774138462643085913443427903e+33'); - T('1331599892524734478741104974374901736796', '8613986863.5286325031971100693336720522422497083861729312475851625078455', '1.3315998925247344787411049743662877499324713674968028899306663279477577502916138270687524148374921545e+39'); - T('-1435605.5713', '-0.000000000018538927081499603430462441110384554897082244', '-1435605.571299999981461072918500396569537558889615445102917756'); - T('-0.000000000133889283781216077153647008712974175960714836447518299614317834783467849261908546492568082004751707979306122', '-0.0000000000000035759233716787482258438019525200', '-1.33885707857844398405421164911021655960714836447518299614317834783467849261908546492568082004751707979306122e-10'); - T('87163032789315876139411128215473910733429571507063141054764287035611190214823258259', '0.0000755980441879469673888177662328951349071414731847083920686253624381293723357131370215782774531128617325392065045408062', '8.71630327893158761394111282154739107334295715070631410547642870356111902148232582589999244019558120530326111822337671048650928585268152916079313746375618706276642868629784217225468871382674607934954591938e+82'); - T('-9968522225042314632060285988443730732405555397698281720591792230663115171346412535.174789294146936609880713903210346686578323', '0.0000000021461329196842167039414796333960450676424674430116711196401669424125946978994613357227', '-9.9685222250423146320602859884437307324055553976982817205917922306631151713464125351747892962930695295649306071518263199743680676424674430116711196401669424125946978994613357227e+81'); - T('-682416717526953753240801236778041538122363074270539580771563.1595987724242158270047634677372763495475148', '-3227642122668496595741822002740302413422234499976652746605683904.9121550427442753468836876331877102668', '3.2269597059509696419885812015035243718841121369023822070249123417525562703200595198789241654504339172524852e+63'); - T('-429867232476019516593307236395662379525520042732934988570902.8316836760759159804393112331039824296654196079561094919062415600057', '-0.000000000000000026333381057307903712946311446867749470440652084025735627892221995697998435370429702', '-4.29867232476019516593307236395662379525520042732934988570902831683676075915954105930175796078716719108161088360021465589475979964372107778004302001564629570298e+59'); - T('-138287645002871107111044106385113952028931497798857994040661009094288998455256.8095564239091729600518464971437959597906', '-0.02071931654118840583447405976401564732916585950777930', '-1.382876450028711071110441063851139520289314977988579940406610090942889984552567888371073679845542173724373797803124614341404922207e+77'); - T('4607551890089700279547745482119886413441062288238756662240999999639177353304250157030', '43307073.38', '4.60755189008970027954774548211988641344106228823875666224099999963917735330420684995662e+84'); - T('6920.57190940428', '-8645401812213044670689632263.29035180132881948349690692829976371388993201328638', '8.64540181221304467068963918386226120560881948349690692829976371388993201328638e+27'); - T('500991793', '-251557191089121012500206645723710630.646511742483974550401389816576313099323805855573024993', '2.51557191089121012500206646224702423646511742483974550401389816576313099323805855573024993e+35'); - T('-115233062337818810389000461509795282853985222.0275735411960280352874012910144768141872396745625756737723537749444300561710511610476184357904253808912', '0.0000000000495099894662293514089120418920723309611170282344708775045419868213594847406514716827907876160549261', '-1.152330623378188103890004615097952828539852220275735412455380247536306424233888560793120055236927020068246524489720429924106457882699074732161685072549261e+44'); - T('1084723297738639869084299710762779016169159497808468673580004946719115763988516377.060148266799130410609492416453157', '1150603671275361.430584849644', '1.084723297738639869084299710762779016169159497808468673580004946717965160317241015629563417155130410609492416453157e+81'); - T('-620198612430107265937225529159584510224233045.598796327230401974796505862412', '8699552316331245145807826624182809542207885635402715254490655987896376746007483640710686.1', '-8.699552316331245145807826624182809542207886255601327684597921925121905905591993864943731698796327230401974796505862412e+87'); - T('-0.00000000000000020169002470441637778693075769563628101156942009213003841435019513553874336624464221898908333827', '55.3331815493788993877220026432941015', '-55.33318154937889958941202734771047928693075769563628101156942009213003841435019513553874336624464221898908333827'); - T('-509764.93911892369554928129540502547911386352816580281788234048871931011148766546995671957100520016074479741', '-7382417043131145488539352159357244152353681306894423489936116601393190269054624158211831.7', '7.38241704313114548853935215935724415235368130689442348993611660139319026905462415770206676088107630445071870459497452088613647183419718211765951128068988851233453004328042899479983925520259e+87'); - T('-893000341.075147812975752038206750463966592844149263520700585107620473591684006742845795349014', '0.00000776091913729118336285439866565205907149064403785475', '-893000341.075155573894889329390113318365258496208335011344622962370473591684006742845795349014'); - T('-0.000000000000000002814616587779740535288495495412599887159946708410461905984819284638731116086722791161143897920235719807012684318952369879227930494144', '-0.0000000000000000005799625258433885817982609943558405190973445644397869297994874177616229666024278363086227571999810218116665', '-2.234654061936351953490234501056759368062602143970674976185331866877108149484294954852521140720254697995346184318952369879227930494144e-18'); - T('1834227012352.2713316845164117139085412957218639331749015268185070505', '-4.100048574136744539426673770238786618959827409', '1834227012356.3713802586531562533352150659606505521347289358185070505'); - T('0.00000000000000000142961844636281549156124640702213622371103004167390847447921367714972088995760542647850152690627680982452493981026', '6.1225395082722753161364268570886553216', '-6.12253950827227531470680841072583983003875359297786377628896995832609152552078632285027911004239457352149847309372319017547506018974'); - T('290235134201682761299.48447329578802943221996178987974147165456654679438349900205350412258435388669557', '-5.251662064778328732803891', '290235134201682761304.73613536056635816502385278987974147165456654679438349900205350412258435388669557'); - T('52669199650648.0733153757733982313403970813057', '10386465556240559678192244.497235287453859060119988808620945435183307855210', '-1.038646555618789047854159642391991168046082877959172731524543518330785521e+25'); - T('564130335207659724622920169067214809519472975333569366119272839995955208278726184985111100693242720484069747466014', '57536812827159741113793203777862678446119346340872225907713497972953215.80310853441834229459084096442571657822478233621137898187840818727731', '5.6413033520765972462292016906721480951947291779675653895953172620275143041604773886576475982101681277057177451279819689146558165770540915903557428342177521766378862101812159181272269e+113'); - T('0.00000043656429426791027383754468210558259906392852085133878453458581222463232577586181', '-271425626170236597587007634813280769267131068497092506238139897701753645335886637971522821911055750072613148529', '2.7142562617023659758700763481328076926713106849709250623813989770175364533588663797152282191105575007261314852900000043656429426791027383754468210558259906392852085133878453458581222463232577586181e+110'); - T('6481867806858740818821154.19518001214840199197053504721', '-24870963461424.9780802848031479299059282084582297393626139502421237942537429692805914399653118951', '6.4818678068836117822825791732602969515499218764632556682297393626139502421237942537429692805914399653118951e+24'); - T('148.5411044804108834287889704020144411630326474907357936225017786074238828250511258990554797855720803620532362291284421872991756289113870701', '1687016782820477407264422479587.9602119652053424651802657', '-1.6870167828204774072644224794394191074847944590363912952979855588369673525092642063774982213925761171749488741009445202144279196379467637708715578127008243710886129299e+30'); - T('8753847156263969.74982484420314345673976831768407096355073194364180012848383603365570684241235747026243411927098077087739548', '-0.00000000000000003613762', '8753847156263969.74982484420314349287738831768407096355073194364180012848383603365570684241235747026243411927098077087739548'); - T('-16837319431920685704407321.888557412698092013196681699716686208311450572004672272353233944129089212943388330973909123531051036641', '-1434889199750833697003122178022.058644773719134292792949141816179232326040948745', '1.434872362431401776317417770700170087361021042279596267442099493024014590376740327727646766055870910787056611669026090876468948963359e+30'); - T('2735023455757108232743.584761329', '-883406375899961097762446633306214261625385142201740151414521222441704673205539113483156696740358847547521951238312862.0627294', '8.83406375899961097762446633306214261625385142201740151414521222441704673205539113483156696740361582570977708346545605647490729e+116'); - T('-689135077159362593015820247134066.74813269929304775244252204', '62605354599199881779688698278184513063808732', '-6.260535459988901685684806087120033331094279874813269929304775244252204e+43'); - T('-93750448497700582903413063583342246551210153127015625232845923539378736289601064020685503346328943587228412139711305446249370169912156093', '53953865201297384977039465.35433748887805', '-9.375044849770058290341306358334224655121015312701562523284592353937873628960106402068550334632894358722841213976525931145066755488919555835433748887805e+136'); - T('-0.0057925051239501905861387596709549007647236435494415395249013033629943873073216811979342031615889626092942975371394702866419123165012397470964059557', '246259164947571633614812263148098657772268077205108363195576642177873196268402803807976843988029200739623402923', '-2.462591649475716336148122631480986577722680772051083631955766421778731962684028038079768439880292007396234029230057925051239501905861387596709549007647236435494415395249013033629943873073216811979342031615889626092942975371394702866419123165012397470964059557e+110'); - T('202392866176', '-8676236136205102485012807', '8.676236136205304877878983e+24'); - T('-191.8725060079318845278193570544207471357649633582270807761589989403533787967818943544130158154895636289', '5967581749760718357075978833.8340341311556837206664', '-5.9675817497607183570759790257065401390875682484857570544207471357649633582270807761589989403533787967818943544130158154895636289e+27'); - T('-87951143371583656362303007410293120018882465816507444269402753743368383718', '-2822.68023786349119776278475695671489424412910651386641750260764', '-8.795114337158365636230300741029312001888246581650744426940275374336838089531976213650880223721524304328510575587089348613358249739236e+73'); - T('-2049698402682368740429778132608', '3963994567.44431117756210251278243787772', '-2.04969840268236874043374212717544431117756210251278243787772e+30'); - T('0.00000074347728103607719356135364801379323744725864451372933321009322616176605367628546021691519809986', '-8540850540817997066546115303931551402143341270504721504778718364110693.89400762910442310131822804681639793', '8.54085054081799706654611530393155140214334127050472150477871836411069389400837258170413739542160817004594379323744725864451372933321009322616176605367628546021691519809986e+69'); - T('585159105540713468004754266887.654351367900', '1854705740580.2225867', '5.851591055407134661500485263074317646679e+29'); - T('162041637982.2683403774133705140156618173084938487183540577160265469', '-2197013308.144', '164238651290.4123403774133705140156618173084938487183540577160265469'); - T('174785435.552717047585130654711', '0.00000671119928322725418238685556928705875440728878357795977246824794908748816696845271345930860829862726899160137025675180272592756862877515530420748', '174785435.55271033638584742745681761314443071294124559271121642204022753175205091251183303154728654069139170137273100839862974324819727407243137122484469579252'); - T('4747036426204027106781637076.99097717205130208396664801692006667885526524697426', '391523438182724274674956108257313659034734187677930.91506053303114035059545228819956', '-3.9152343818272427467495136122088745500762740604085392408336097983826662880427127949332114473475302574e+50'); - T('-10745175155350240219231799201005463136151.98855739210592020709205390996178000687517676358804699378042357529248908687167266714727400279', '-0.0000002750441382972253188972707268540147394058399897719491538526', '-1.074517515535024021923179920100546313615198855711706178190986673501269105315286043735774805722183126972269248908687167266714727400279e+40'); - T('-2016841186074253812287860201579902794714901016418893309168903524134146272466067614888435632384131092578883301477097742275', '-48984', '-2.016841186074253812287860201579902794714901016418893309168903524134146272466067614888435632384131092578883301477097693291e+120'); - T('0.00000000000000000075207122050490580445284855903892869462082699466860383714628003131667711449129', '6753.26798748946603087152519732149922074864703600110831025894212287136691857176209', '-6753.26798748946603087077312610099431494419418744206938156432129587669831473461580996868332288550871'); - T('-308768135249863901090901133014590589993514630400.7468363567730076836979817211331706945342868110424488561974871997974143', '-8486713.9935588503385776986188852583327833173309260920238377195', '-3.087681352498639010909011330145905899935061436867532775064344299850790964628003873772033607190186111366974871997974143e+47'); - T('-0.000000001028796916762577891829', '1261021215925756356473356031384588949462200699880284631995758278856051', '-1.261021215925756356473356031384588949462200699880284631995758278856051000000001028796916762577891829e+69'); - T('-2903534117347456791838333880169161579106798055500855912397515413217562006547074531951197755159', '3307709092093724676970726712003.7206946987943424741314293246854810621', '-2.9035341173474567918383338801691615791067980555008559123975154165252710986407992089219244671627206946987943424741314293246854810621e+93'); - T('308731033791553222538788495713125564554678655165.2376522348907919208222504963793054507680223355575585755605662130362013509014505533795599', '-169.6211818204352308680313496650435350420', '3.087310337915532225387884957131255645546786553348588340553260227888536001614228404927680223355575585755605662130362013509014505533795599e+47'); - T('46348756895149965005917587370622806277924635266696727', '-0.00000000000000002398533517999676328004879683029567483442514435593265672823703129497223737239', '4.634875689514996500591758737062280627792463526669672700000000000000002398533517999676328004879683029567483442514435593265672823703129497223737239e+52'); - T('0.00000003006579713187753751924205324740743488561146075520720007968290383452647952341024387158387162086926340315695048074352907454', '1105061311685464009276168371271826257860.49712297124331664597', '-1.10506131168546400927616837127182625786049712294117751951409246248075794675259256511438853924479279992031709616547352047658975612841612837913073659684304951925647092546e+39'); - T('-3.6658927729870468', '-285149436709749.875158993845', '285149436709746.2092662208579532'); - T('1013170470745994100692839107539318414591831785271578048439737249808144480351311573254823428168517820353394587009371292.096734997794012533488133881722531', '41152002543729538774558905430724841814570756403811876570254628123254482638637.6488377939839037328832602707121007518768718906728163', '1.0131704707459941006928391075393184145917906332690343189009626909027137555094970024984196162919475657252713325267326544478972038101088006048736110104302481231281093271837e+117'); - T('-33927165312151896961929125486531.3854145399412684039819801379567554380', '-6267032.778812', '-3.3927165312151896961929119219498606602539941268403981980137956755438e+31'); - T('-4363114224107555270076478029292860456660849819228669713810028502419476164665171', '-36729829795867171018424681856707243732121421681', '-4.36311422410755527007647802929282372683105395205765128912817179517574404324349e+78'); - T('-29943384747492648907943443.256412350894815929125401', '901747579048273816602550102529926854.35549646674102528482365191696613584123624344078663288749130490435297134720727576379819588420174171101450551687', '-9.0174757907821720135004275143787029761190881763584121394905291696613584123624344078663288749130490435297134720727576379819588420174171101450551687e+35'); - T('952557.246599587', '-797618074571855160635860103922751796538514948531.1378948', '7.97618074571855160635860103922751796538515901088384494387e+47'); - T('0.0000142901236857676679196257053214336506759362362251650293753952658734900913009470163591148854555849408371350202869477370839162018128614', '7274936081690054967838223208959684283904860805239531936252446172884944195802432384674846535126802169513987351992902768514276949331803322.9', '-7.2749360816900549678382232089596842839048608052395319362524461728849441958024323846748465351268021695139873519929027685142769493318033228999857098763142323320803742946785663493240637637748349706246047341265099086990529836408851145444150591628649797130522629160837981871386e+135'); - T('0.000900929560788911182381071562865432668409466182204594172033162144812128331193077475077423880166489', '-21408597957321978981807151751183219484279556440', '2.1408597957321978981807151751183219484279556440000900929560788911182381071562865432668409466182204594172033162144812128331193077475077423880166489e+46'); - T('-0.000000000000722138907853996119863088603030135349132652185245300184344322987517460715495745561630491364910862090541897814776826750915053339581143330860038', '209219551544.876995097117350588163000906011435189490577683711751207988391411412107868148561383392176930291264602055541628014525', '-209219551544.876995097118072727070854902131298278093607819060883860173636711596452191136078844107672675852895093420452490105066897814776826750915053339581143330860038'); - T('-0.000000000030345983499647050827143736470118525842662060717', '-140869900251790823527224455558474696.4221968423139', '1.40869900251790823527224455558474696422196842283554016500352949172856263529881474157337939283e+35'); - T('1388628543041917754379950101913898878882776054395652240051594608900168911', '-634307381507440042083604924255544396160446890170874345571896298473856984277777.4362135602582999033', '6.343087701359830840013593042056463100593257729469287412241363500684658844466884362135602582999033e+77'); - T('-99178063079827.224433662117625116489799642020572811986957525604609123159620902928779438653713181794557115326708644398427245972390297968858510824615', '0.00000504045524028117298744681753139617460039787354788645269348683810171985366129261406243335125957027159417139707333860235220380988', '-99178063079827.224438702572865397662787088838104208161557923478157009612314389766881158507374474408619548677968214670021417369463636571210714634495'); - T('-7964344017627.65729896967420320480697541366008605972016325458796553432374728674811327', '363448465190438134042900077564563226373185360490340453089461130955156779944343856777497645145316462888016452339862253.6350461018654269710898806', '-3.6344846519043813404290007756456322637318536049034045308946113095515677994434385677749764514531646288802441668387988129234507153963017589685601366008605972016325458796553432374728674811327e+116'); - T('22398969506188688342902196074268860817610249888096.96109576852487881868553737058841014408233230362878332132', '150517970635382784547231206380342822229.6234502535074912839215712571451888428718057053541076659669932226957916203900023162576692335713154540338973281941', '2.23989695060381703722668132897216296112299070658673376455150173875347639661134432213012105265982746756553530067773042083796099976837423307664286845459661026718059e+49'); - T('319606363926195232923049.458147549841648', '9555894221042120529332254896056451521165707003469529318473253597473821865716922096418529662756642900117543029527432853335.21880839479040', '-9.555894221042120529332254896056451521165707003469529318473253597473821865716922096418529662756642580511179103332199930285760660844948752e+120'); - T('-1.7470999677375', '-0.000000009390885937723498768042482633173355191224894879999587923088', '-1.747099958346614062276501231957517366826644808775105120000412076912'); - T('0.000031694970', '0.0003489109755744784300779153529542987938823096920725044639439934321377263762937670754333912101552258897473271605646851768747294780640640656588128251', '-0.0003172160055744784300779153529542987938823096920725044639439934321377263762937670754333912101552258897473271605646851768747294780640640656588128251'); - T('15171023450028723096297246476058654442156062896548968046928610610466495463708888690638445384052.5655402936580877003227652909723023235', '300381994693137917085900.481742', '1.51710234500287230962972464760586544421560628965489680469286106104664951633268939975005282981520837982936580877003227652909723023235e+94'); - T('-2510422771394805479647755240376039069.235025776988445880809314981927377977492349', '-4325650526595464202944513201707597153545181637871972811769276403384719489760146217058876642443138050881786664883495941202481550', '4.325650526595464202944513201707597153545181637871972811769276403384719489760146217058876639932715279486981185235740700826442480764974223011554119190685018072622022507651e+126'); - T('11989030014394748093925142998.905998360', '4503.1829930104967074062224350092529380543376637410353675591178914025067457206266908222070994034406954750129621950217244', '1.19890300143947480939251384957230053495032925937775649907470619456623362589646324408821085974932542793733091777929005965593045249870378049782756e+28'); - T('-19622700098117555355413025589212248976721079203363291412', '0.0000000000000000047154963464125735069117227717041172013254203483060822909726449561031204371411673028528388174607696692799950770173459572692814680509896623815282932', '-1.96227000981175553554130255892122489767210792033632914120000000000000000047154963464125735069117227717041172013254203483060822909726449561031204371411673028528388174607696692799950770173459572692814680509896623815282932e+55'); - T('971668743073894893699159113569468037426157854834.4859245308812504877580159133281293', '2155437400819398246908875466354226177837114235441458903251149825.33', '-2.1554374008193972752401323924593324786780006659734214770932949908440754691187495122419840866718707e+63'); - T('-75219128342703758653804581528133672565697676079415639891282318101552836007137960680191708674953779692.830850412286175003379303061502973114', '8890697637237157877394293', '-7.5219128342703758653804581528133672565697676079415639891282318101552836007146851377828945832831173985830850412286175003379303061502973114e+100'); - T('-2207826365359691933623472386278119104.10928610148472698325737986521030447640095006599795584977677429732704747959908983', '-0.0000000000000000020914676583255446799691346083866342797576131478040257513927024455', '-2.2078263653596919336234723862781191041092861014847269811659122068847597964318154576113215700191611495230217282063873845e+36'); - T('0.00000000000000003529871868734909395544492984890736625012421342', '-102670940276960616548987079748287921392363616947', '1.0267094027696061654898707974828792139236361694700000000000000003529871868734909395544492984890736625012421342e+47'); - T('-16411029.5930820', '1443249803759620996.044533632703181774392190634172289219280976531099613177406267663822437005138144965669407971461692413376915', '-1443249803776032025.637615632703181774392190634172289219280976531099613177406267663822437005138144965669407971461692413376915'); - T('4764961911712179295885207525501495839960553554868719797653093551996007318270912309189493238056884734776455.4857499673', '40.70', '4.7649619117121792958852075255014958399605535548687197976530935519960073182709123091894932380568847347764147857499673e+105'); - T('5188138747138380958829180.51675828531601306918974036835433546892123023643482179063194941268993890524469204530549406272435329728', '-218356026557832392846658731388880742380232559055047578182115570398', '2.1835602655783239284665873138888074238023774719379471656307439957851675828531601306918974036835433546892123023643482179063194941268993890524469204530549406272435329728e+65'); - T('-284221651007245305082697851875743201255770321818102228785943924728887176146409104121604051647768402471354721655179789550685066', '129802078488939350592312997875682679945769088382.2879783911513234655169373537741125669105835698742', '-2.842216510072453050826978518757432012557703218181022287859439247288871761464092339236825405871189947843525973378597353197734482879783911513234655169373537741125669105835698742e+125'); - T('124593177725250773807727158694606.48780660352148825658767811933255518150599696025419899514439334', '-6627581651662715635950762070180.79290709812889445314806559015208127150071', '1.3122075937691348944367792076478728071370165038270973574370948463645300670696025419899514439334e+32'); - T('31366660201652105746754295566374870763019559240421554119188881694316784695785923310969085305946601572113197265575586214263032', '-0.0000185119', '3.13666602016521057467542955663748707630195592404215541191888816943167846957859233109690853059466015721131972655755862142630320000185119e+124'); - T('-0.00000000123441941', '20577.06632', '-20577.06632000123441941'); - T('-0.000000000000000000030367929295105668550777381180120786905515151003716045995461753738312176999386', '-8296319183891479588134987898667542872737578839488792548834441415271860494822651335094309535757878796690.933873784093259915387382991882725', '8.296319183891479588134987898667542872737578839488792548834441415271860494822651335094309535757878796690933873784093259915357015062587619331449222618819879213094484848996283954004538246261687823000614e+102'); - T('-40308545430969720235947527422528929192769782793205800044070633029892426929802242614838.13803009279797050440596035398833519975310207504', '1959239464986228954812427023.535609294269733799545341029686339869114158840301903524765921157569249146361346526131', '-4.0308545430969720235947527422528929192769782793205800044072592269357413158757055041861673639387067704303951301383674675068867260915341903524765921157569249146361346526131e+85'); - T('672932217082947936267931802569635295900508909649104706736777590283845640515821796262381421.68141583026180417434416456', '95.0', '6.7293221708294793626793180256963529590050890964910470673677759028384564051582179626238132668141583026180417434416456e+89'); - T('-0.000000000000000002099033004183951058449767693649425035305130331498778862127487553169994535996', '-2133980231896312773907666627097548168415.7102448765553114470129805463990038', '2.133980231896312773907666627097548168415710244876555311444913947542215052741550232306350574964694869668501221137872512446830005464004e+39'); - T('580445381354905284048807368831006691784.546059063403641312301109310676306914676494597505919617349947441960647278533345556960169308273917366276', '3.604904939285817554324885708126246946469619276624534189637434215912939543315825766859553647518276673500996166212799836185950984610359767998387151515', '5.80445381354905284048807368831006691780941154124117823757976223602550059968206875320881385427712513226047707735217519790100615660755640692775003833787200163814049015389640232001612848485e+38'); - T('-712252720953571012672166069903348092161944796663143300420882328496228974.04618394348904074586863813372820528', '-0.00000000000000002092030775039740453919504630522275260893114360423604255725599892060864590', '-7.122527209535710126721660699033480921619447966631433004208823284962289740461839434890407249483303833308007408049536947772473910688563957639574427440010793913541e+71'); - T('-0.0002570816455207099536036261314936090157674967926099800795', '-0.0000000000000000130674933467131551680491886017016042522946101681008', '-0.0002570816455206968861102794183384409665788950910057277848898318992'); - T('348881507908033302985005.68757522', '1549290074464248686919664413535348476523309010487683201418540220237090492636459013101704289528591313898108.981495311', '-1.549290074464248686919664413535348476523309010487683201418540220237090492636459012752822781620558010913103293920091e+105'); - T('8637413948644495520046181627871244127949368908598113230287818578.76219', '172462329166.2925867381763494812410830828530111105472625398762231331365955149682132409286466618708916', '8.6374139486444955200461816278712441279493689085981130578254894124696032618236505187589169171469888894527374601237768668634044850317867590713533381291084e+63'); - T('-28059829346271297089846697823619339730697463927882137285411047187621.3365094609441835662258292', '1732861001433499169623889562015115612698521681606694360771023126224313336415239339086113519268958723711', '-1.7328610014334991696238895620151156407583510278779914506177209498436530671127032669682508046800059113323365094609441835662258292e+102'); - T('0.000000000000000000279920475007074858021168221493722708848631480438782694735575852706998', '-36266411773095115580689400782807334211196172564607435961552009343283932464.9837695007775892543051564275268186', '3.6266411773095115580689400782807334211196172564607435961552009343283932464983769500777589254585076902533893458021168221493722708848631480438782694735575852706998e+73'); - T('2118046918816158.19627388128567915392498196852916971435774168271017092737124387676986128523446', '700283033083138972861857057593773868572323954863349193882758861910219422329615290916944812790080302082455986032622356459796411429994571952107', '-7.0028303308313897286185705759377386857232395486334919388275886191021942232961529091694481279008030208245598603262235645979640931194765313594880372611871432084607501803147083028564225831728982907262875612323013871476554e+140'); - T('339538851650247942.278697506630118637945095728103', '-18620906912720892893391275141765114456962630526288263883096512988776949390578497946714236563676541486658', '1.8620906912720892893391275141765114456962630526288263883096512988776949390578497946714576102528191734600278697506630118637945095728103e+103'); - T('0.0000000006904532369558150510262488281807825581586827251', '305468661281838707389527955487753.82749543444315394761867888706263', '-3.054686612818387073895279554877538274954337527007106628638360363811718192174418413172749e+32'); - T('-908820873408880798933264474895850726464711747913205439443550022010444648198141527361971583612034255103784.08541958237725093777442080304887210', '-137777781478673113932594166168320795125870691409923883994778273765714588733515698043941904144625098636345868758', '1.377768726577997050517952329038458992751442266981759707893388302156925782888674999024145421730414866020907649739145804176227490622255791969511279e+110'); - T('374355450809837247.5174995', '-10.2', '374355450809837257.7174995'); - T('-7.24216105787', '41335238394851454012288137625393602319.3264096053286738641962006640465495687544256', '-4.13352383948514540122881376253936023265685706631986738641962006640465495687544256e+37'); - T('66326977.9050567217', '-0.0000000000000000000209', '66326977.9050567217000000000209'); - T('0.0000000000000000000265737965021', '-81974150526768898581207134037679.2068387354409294052459', '8.19741505267688985812071340376792068387354409294052724737965021e+31'); - T('6007018972384004427335278306100547732730414161628343888635552404650.58282054220706207456023620752991471499255', '-146656810017560772593186152454856504300187695304259360339772717751599966472', '1.4665681602457974497719057979013481040073542803467352196811660638715237112258282054220706207456023620752991471499255e+74'); - T('-34292722587178232282501917441324831663740801129878989387480983625715484621782.0919', '-55883431183450605660044015172082536043911915919486680333854135673827331840347136897324', '5.58834311491578830728657828895806186025870842557458792039751462863463482146316522755419081e+85'); - T('-3985805244044837084411977422757376378060.290541664260691735184074947', '-870047741853.19289603162319510263029755253365086206461589052739480724332358851742990324', '-3.98580524404483708441197742188732863620709764563263749663255377739446634913793538410947260519275667641148257009676e+39'); - T('-73929816747605180484918003597961235850171978225512788042904593650909580403443769374087641707696975944827828354020150979988740026532938', '385361544903059555711806156019448314064782', '-7.392981674760518048491800359796123585017197822551278804290459365090958040344376937408764170808233748973088790973195713600818834059772e+133'); - T('-12.31698991', '-751188829485947331552.960312839846836094417204848662429224188702772253892719659281557251306277105093575994993846127669453550207016018564227856026', '751188829485947331540.643322929846836094417204848662429224188702772253892719659281557251306277105093575994993846127669453550207016018564227856026'); - T('-3628724754364816284699558478736662262101049.8686961811050797854712833273940271907427771082320587042061269470622', '-36853113191655566744.0036748111113230617191140153379097532999540758924150850150462749161630182517728624293985456773', '-3.6287247543648162846995216256234706065343058650213699937567237521693120561174374428230323396436191910806721460369817482271375706014543227e+42'); - T('-0.000000000000000215', '19894059835635097553.40565542831442512355858226792638029459899976138082', '-19894059835635097553.40565542831442533855858226792638029459899976138082'); - T('-30106887927.73937362847', '-102.030', '-30106887825.70937362847'); - T('-1218248850456.97353951682445947974274913192207119277095702137346638965795765469780537397426794516539138118094328539', '0.00000000007851693763154494785066647692511713030801839675154976889840604918825877872638771285849514900835419977768857575607733', '-1218248850456.97353951690297641737429407977273766969607415168148478640950742359621142316252672389177909403943843439835419977768857575607733'); - T('178340800930010683157306838387114508530123729280296661983521452605952899303508793164498075.18', '124104.19653839526727306978867606725200681644881825667', '1.7834080093001068315730683838711450853012372928029666198352145260595289930350879316437397098346160473272693021132393274799318355118174333e+89'); - T('-124972459343817845451907386538316.88444543539384522567165512709192478339963512253604376341607496802805641627423480880098070424177758544304960846746', '-12151860990400073737429990488961466727732472556130861379738694459231286354909360090762808804561520156.93885466', '1.215186099040007373742999048896146672773247255613086137973869445923116138245001627291735689717498184005440922460615477432834487290807521660036487746395623658392503197194358372576519119901929575822241455695039153254e+100'); - T('242305619480044.117669571', '0.000000000004954617457909921566083069296578532961927959570975042077881955980821090098114246814822601513881827860466408504361049103', '242305619480044.117669570995045382542090078433916930703421467038072040429024957922118044019178909901885753185177398486118172139533591495638950897'); - T('-149393121723.8', '0.000031123464017479325434907565167758533432136444707393019391355781893113282833929057474217941299740843262816249', '-149393121723.800031123464017479325434907565167758533432136444707393019391355781893113282833929057474217941299740843262816249'); - T('304991568028921434085139022483844876733665.542738390605319884', '0.00000000000000138699174160296898158944175519528763014061938962295885233194249035736092848113286092759686854653852969146', '3.0499156802892143408513902248384487673366554273839060531849700825839703101841055824480471236985938061037704114766805750964263907151886713907240313145346147030854e+41'); - T('0.000000000000439684683303579860356147180119042386845099669639708374008856922269915124921301748', '-155818221549284043593101823943330354192243873661833929849877145194258036053339831371360183.4319505793302857955106411234496205383496363144', '1.55818221549284043593101823943330354192243873661833929849877145194258036053339831371360183431950579330725480193944703309976685529755356786845099669639708374008856922269915124921301748e+89'); - T('-13.155103645301', '-0.000000000000000007137064', '-13.155103645300999992862936'); - T('-10356428764148893775275.9673266649810109703809707584633512809703095548147864827191283851408290', '116469121259.580', '-1.0356428764265362896535547326664981010970380970758463351280970309554814786482719128385140829e+22'); - T('-3963571363397152992273906802160286886086920884936747622634365849406904936980386.45359892835130720540151945758060955916317802717566903116864480481972522', '-0.000070996697013405007160606340379272860030484625815078099084045955348142553', '-3.963571363397152992273906802160286886086920884936747622634365849406904936980386453527931654293800394358851240230286303147542549853953069560758864377077447e+78'); - T('-2002.01719868890096247452400760373', '1.8', '-2003.81719868890096247452400760373'); - T('126616415747207305303537223662274177712840.6700589197974', '12097.7020794393208690215', '1.266164157472073053035372236622741777007429679794804765309785e+41'); - T('0.00000000000000221572441427972677866185400843138814827125078372356950505019583272816338112', '86011656827173.81', '-86011656827173.80999999999999778427558572027322133814599156861185172874921627643049494980416727183661888'); - T('45543191029347952618469386523689325602984824853133335610432465910372937520283489097581912486080942672641037', '-15716512380188479.932083641807869052147091043255091861011843759620263027387952842807874862983089866', '4.5543191029347952618469386523689325602984824853133335610432465910372937520283489097581912501797455052829516932083641807869052147091043255091861011843759620263027387952842807874862983089866e+106'); - T('0.0000000000000000035315502420788508529985856314419012272238207473944358204104290394926106351779', '-5624156772170117.1657476003837553942295755292258482770658649647601920538662932208435924708861640276207503440293532949', '5624156772170117.1657476003837553977611257713046991300644505962020932810901139682380282912965930671133609792072532949'); - T('-1374562994880051964271.27898098906188407287205169338', '0.00000000000000031865339921207143913309344392566436421', '-1.37456299488005196427127898098906188439152545090545143913309344392566436421e+21'); - T('13691023568703828954478002891170478555913926785952721.6937350094794685112055123701357309217624134750110846096769', '0.00000000202148677107507460297752891791329356574084754670408775226519607249962621030745245954851134740234779971411203608026098975', '1.369102356870382895447800289117047855591392678595272169373500745798174013043776715820200384911990927023706297281224773480392750037378969254754045148865259765220028588796391973901025e+52'); - T('-125671888607778034275154792009202764081572882956209693373934.74566972561590141388688468937614644443796008254', '107551721884298521156095810104481388698517320600299802047', '-1.2577944032966233279631088781930724547027140027680999317598174566972561590141388688468937614644443796008254e+59'); - T('-0.00000000003969378933740708691300122226819421581066663873920896781273585494818171435695407330811294202', '107041184511163885.04271388462119128657386073279129422270006', '-107041184511163885.04271388466088507591126781970429544496825421581066663873920896781273585494818171435695407330811294202'); - T('-2951965402440738579279759050624852782460407526269383738169962367847588117867127018487856370629062877269116277468600261229135554565114176766056702', '0.000000000006287363483881253518833462795616481179', '-2.951965402440738579279759050624852782460407526269383738169962367847588117867127018487856370629062877269116277468600261229135554565114176766056702000000000006287363483881253518833462795616481179e+144'); - T('-0.00000000000000019636276967708885671764139154128434128626403182943490041425988637275339748810419236540254220706284324560538931703795739814', '0.00000000004481901971403795542991680781566338421560653872041361060', '-4.481921607680763251877352545705492549994782498444544003490041425988637275339748810419236540254220706284324560538931703795739814e-11'); - T('-354719950361379273301359534196300717853.0186108408149835703024', '294514396703359984682344528266458432292891368613559732314480483030279392081064357195630432442505889982.13440538511210586133603914935112321050428', '-2.9451439670335998468234452826645843229289136861355973231448048338499934244244363049698996663880660783515301622592708943163843914935112321050428e+101'); - T('-33927540600930859899252442105999310587077967493761773461091899630388700204633168728544588442837280913459638158456686740859615.1414', '0.000000001894808120791736519518300794339416227', '-3.3927540600930859899252442105999310587077967493761773461091899630388700204633168728544588442837280913459638158456686740859615141400001894808120791736519518300794339416227e+124'); - T('-104666170827444788671824735700977493877060949970738269558671964530958.55363526374', '-2386824408518725780122101607313193461624217723024418681790730644945410612236759422226411833632517989926779141564329843840707189394654888', '2.38682440851872578012210160731319346162421772302441868179073064494530594606593197743774000889681701243290208061435910557114851743012392944636473626e+135'); - T('179421.5289096829953298', '34342876175696462977913441783684065522884009795140039066541213786441.821375732575578', '-3.43428761756964629779134417836840655228840097951400390665412136070202924660495802482e+67'); - T('-41426466350219117773090054766644394486314258063933223051089090219912755660263417233021.9855607046947587791892004394939235', '-170862420310795633399339976259565748191370.489727472434638', '-4.14264663502191177730900547666443944863142578930708027402934568205727794006976690416514958332322601207791892004394939235e+85'); - T('4.356', '-14.51838553571377330631321826342372952104419616215052089825233325146382745555567077756959361343373549160815949781902924303746486223707861', '18.87438553571377330631321826342372952104419616215052089825233325146382745555567077756959361343373549160815949781902924303746486223707861'); - T('-0.00000000007415111125701712334659040023188433045533322445707355817794327911316470827191624585971', '-89496941499485282617443687.11', '8.949694149948528261744368710999999992584888874298287665340959976811566954466677554292644182205672088683529172808375414029e+25'); - T('395406829706311296589271889719583140635568635127665', '264737687.61137854553903553659981221568900541026391672130446196896447248', '3.9540682970631129658927188971958314063556837038997738862145446096446340018778431099458973608327869553803103552752e+50'); - T('-91265516152809240955984710790601792219643671438700946275373285010553537355097749911888722836472150250555502817.7083486', '0.00000000005908292684015754961053591782663005124668197067163418657692319967418105412597307502992726349390479329489028174099287376424396743766', '-9.126551615280924095598471079060179221964367143870094627537328501055353735509774991188872283647215025055550281770834860005908292684015754961053591782663005124668197067163418657692319967418105412597307502992726349390479329489028174099287376424396743766e+109'); - T('1393668664736340396506094893169761479672219453971818718110678752454.93557171027859666584700501067765267442071267740729381267372577', '-7.26506721396234349631410058152182568345755302761014440038909778541514253256903438374', '1.39366866473634039650609489316976147967221945397181871811067875246220063892424094016216110559219947835787826570501743821306282355541514253256903438374e+66'); - T('154487157373823493137066274.85878615066004288744973873503106160140296864897001622023987434759035195222460780528406318750', '13509881005355988338518293330867947988093581878486275639404094210458245268756845889504384099465156294654099130595946018501027161729896016', '-1.35098810053559883385182933308679479880935818784862756394040942104582452687568458895043840994651562946540991304414588611272036685928297411412138493399571125502612649689383985970313510299837797601256524096480477753921947159368125e+136'); - T('-0.0924532442681963280236579804820783805412208183173216', '437714061304750576304069895787070747586930126317209775578680048.64905430778651377650282955909271100702270378704840241396672781384650762', '-4.3771406130475057630406989578707074758693012631720977557868004874150755205471010452648753957478938756392460536572401396672781384650762e+62'); - T('-2903867214462079147781503.43110967041878698272228130248023004255630098538325966386117388084280644624246779280709038813631', '-0.0000000000029001819398679', '-2.90386721446207914778150343110967041588680078241340248023004255630098538325966386117388084280644624246779280709038813631e+24'); - T('-68478988612026757357956003683332744549804329487951781618243422133228484235053139292.63859031920959545863', '-0.0000000000000206209573312295241705394462020368371700010471324470113265516966420178900', '-6.847898861202675735795600368333274454980432948795178161824342213322848423505313929263859031920957483767266877047582946055379796316282999895286755298867344830335798211e+82'); - T('2383784.15779081', '-0.000000000001342350812195198392532374798854977110090674918085941866638293587449553312', '2383784.157790810001342350812195198392532374798854977110090674918085941866638293587449553312'); - T('-930945859272044558989235909016.68900733503225770344925642072767208409841301004231082154342176269488246587383976591788', '-5242498654293148790270310863665439318251858135048956.2717470020461119420226047241249204047819006900600244190387', '5.24249865429314879026937991780616727369286889913993958273966701385423857334830339724832068348768001771359749527823730511753412616023408212e+51'); - T('313632278451489633607271056572839346933772283691577954375047188993463512.092647131238398999623', '-959538307079783685461423074240027842581631060789324748920778178110453051', '1.273170585531273319068694130812867189515403344480902703295825367103916563092647131238398999623e+72'); - T('-1288931819347065003984018264113291238692657741.766349736546125023857675298415334704473602112840757695193462502084969449569542319748464264978', '539036429230664384725011772246635819519599525128.174476503860', '-5.40325361050011449728995790510749110758292182869940826240406125023857675298415334704473602112840757695193462502084969449569542319748464264978e+47'); - T('-778185145541293282976352747700447673380643846202878141.94156682254735142708475873940521', '-1743702845400679249.985436319726446594414323812859185183027678188541351470985', '-7.78185145541293282976352747700447671636941000802198891956130502820904832670434926546024816972321811458648529015e+53'); - T('-34198990286492455559791232025411563407581563098497220768937957961783704810043975778308343224151175569504114685192665.30536869253744218089551619675327', '-24305945127441184832105158951553331385997091194202426787946078772275521880625289746661831499392830801691448841424.759', '-3.417468434136501437495912686646001007619556600730301834215001188301142928816335048856168139265178273870242323635124054636869253744218089551619675327e+115'); - T('0.0000000000000018763276930197981120089551282335569865999686905948962583363764311923118368944319393384148082395872202253088856212394945596283231828525914885594', '0.35819808711067029153542041472676295936698327566168897', '-0.3581980871106684152077273949286509504118550421047023700313094051037416636235688076881631055680606615851917604127797746911143787605054403716768171474085114406'); - T('1418031575151863438477712278537563020829712238913927232796816808973295891102.55296374071457002140814551720742132636073542069579726675621573941382622600', '-3488182224093174883184', '1.418031575151863438477712278537563020829712238913927236284999033066470774286552963740714570021408145517207421326360735420695797266756215739413826226e+75'); - T('-0.000000000000000205390684486171825460536006353563548135276787747301988476146287694114350379000036906338511378609', '-0.000405', '0.000404999999999794609315513828174539463993646436451864723212252698011523853712305885649620999963093661488621391'); - T('-3202016.0694803128322148239145232929204107555210732105469003170128506695838996492', '0.0000000000014', '-3202016.0694803128336148239145232929204107555210732105469003170128506695838996492'); - T('-628423720237204906120199547323758489801025.51874281555091178803625021347340455594130', '-81477111818306314666306661562', '-6.284237202371234290083812410090921831394635187428155509117880362502134734045559413e+41'); - T('-0.000000000000000000047888974392267564390331997035456851568895821244693231371197999015834461798775529541', '947453380002', '-947453380002.000000000000000000047888974392267564390331997035456851568895821244693231371197999015834461798775529541'); - T('773747345', '-1335821513605028779157', '1.335821513605802526502e+21'); - T('-99273.596604127', '-1154952503563378596462693693250.5187439232425471346', '1.1549525035633785964626935939769221397962425471346e+30'); - T('1395668702641787254510091198553284', '1578568229336237285301359008898017.5404224057562993167719876179720474361379874854903455492277573607378863860373466275770813782848272509058803097', '-1.828995266944500307912678103447335404224057562993167719876179720474361379874854903455492277573607378863860373466275770813782848272509058803097e+32'); - T('5386712177299027464798225011978949139476122', '469103363732559983685.648370', '5.38671217729902746479775590861521657949243635163e+42'); - T('0', '419192442362435629465014450272844841376382155269323588979357043630935966384025897855088784350716859.22651317', '-4.1919244236243562946501445027284484137638215526932358897935704363093596638402589785508878435071685922651317e+98'); - T('15748527253971616615055630358104959795592326115279195892785474069003661098024748903045029419699640409113503023237945492.3252432550999839712', '0', '1.57485272539716166150556303581049597955923261152791958927854740690036610980247489030450294196996404091135030232379454923252432550999839712e+118'); - T('0.000000002333438210472843133760719971852', '919118976014042057478336651114029860028401924997726.37482700254255653557019028924295996133470278160287964', '-9.1911897601404205747833665111402986002840192499772637482700020911832509734715548223998948270278160287964e+50'); - T('79', '108926743127104368181585148150.21181757229942036662043384365317289250377588166675035927', '-1.0892674312710436818158514807121181757229942036662043384365317289250377588166675035927e+29'); - T('66999786317143790144990981463093917201197515876881754571980957877868116674749519019018943370951009463.847271877093748797400', '-476103985245129257652983725336203640462984911959107831794737195876658142.344', '6.69997863171437901449909814635700211864426451345347382973171615183311015867086268508136805668276676061912718770937487974e+100'); - T('-1405033234114', '-783177164833364354044558842295870625108912898123626390937631256466.542569106951119275629030077420445312292985', '7.83177164833364354044558842295870625108912898123626389532598022352542569106951119275629030077420445312292985e+65'); - T('-426205767054867887.03542915655127780054256765661941922641508457335701462240270994743442393487518141488173295859', '-8298.4660255243403790577839381771224207771986', '-426205767054859588.56940363221089874275862947949699844921648457335701462240270994743442393487518141488173295859'); - T('-464425272555675063916245905964590494968787633124183600713545419950133228198836596648857626820065', '-2237730394988417178529397.358188196946174766853203174768301504251', '-4.64425272555675063916245905964590494968787633124183600713545419950133225961106201660440448290667641811803053825233146796825231698495749e+95'); - T('-0.0000062461634807333371859314155489802574', '-8181353643032489942675123036461953565314428349623.6339704961199', '8.1813536430324899426751230364619535653144283496236339642499564192666628140685844510197426e+48'); - T('269031915782887321035697046572774089182793600032731720080010568383408337.749033224541645681839966449764521621943733799440', '0.404132605183270165863226749047082654939280193886231529898349131828226447630704284', '2.69031915782887321035697046572774089182793600032731720080010568383408337344900619358375515976739700717438967004453605553768470101650868171773552369295716e+71'); - T('988459584582389858260070961884.0298077770057303924476954237850807378083146026121046406109614', '548657365885761906.16130546365', '9.884595845818412008941851999778685023133557303924476954237850807378083146026121046406109614e+29'); - T('-4579867386321723251708179657431459719237903598.4249552191197039811767', '1700354336203076885308678693.5509603461600890657301710589520939346267614885400052674765795335958411640877837509557489194202307107946', '-4.5798673863217232534085339936345366045465822919759155652797930469068710589520939346267614885400052674765795335958411640877837509557489194202307107946e+45'); - T('-39518020854854496682.408531833821299513675968633019378670635010897754414243511999567768675730681912611391338379426802378786621', '-69488349149463743032009.4871074472497372391041043969145996', '6.9448831128608888535327078575613428437725428135763895220929364989102245585756488000432231324269318087388608661620573197621213379e+22'); - T('-280346355147300855628404.763216', '2.0516001318909', '-2.803463551473008556284068148161318909e+23'); - T('0.000000000000000099623328', '0.000000000015534855199084239745828402971988998230014287963399588591303464021723633191191744223224494006485956657062304557069407148666768780677134976225521', '-1.5534755575756239745828402971988998230014287963399588591303464021723633191191744223224494006485956657062304557069407148666768780677134976225521e-11'); - T('-334431356812439.13448916221758530842995', '1667521702832986056260091238367720285408933716412273493571950628545108649803910938622937226194497229999330474159307225451757494492442', '-1.66752170283298605626009123836772028540893371641227349357195062854510864980391093862293722619449722999933047415930722578618885130488113448916221758530842995e+132'); - T('-25720.3501395114447395112201', '-0.2953998138840', '-25720.0547396975607395112201'); - T('116226570322143124260726476527797976180664474951141971508306422788718375438939254351135212826259379114908655', '-160024900712467287748021197823552179871601569963013469207712918690534434663724462868758130292404825253945347600017444751054592974832', '1.60024900712467287748021314050122502014725830689489997005689099355009385805695971175180919010780264193199698735230271010433707883487e+131'); - T('2324224807171911990671839000597607829497219555298.55014120924636442879633120922286793218', '-1270380349602863576806275283032958213074398270334091077777630627191054790255851313419272408473587843637275886291610.642667419393', '1.27038034960286357680627528303295821307439827033409107777763062719337901506302322540994424747418545146677310584690919280862863936442879633120922286793218e+114'); - T('-10622788500960972991004261.8032858098042872288506798796510154272226938496951067890622789073880670340432116295332571771677661755224600880395', '17077138128499655920.4093059483819429666765577064075794109485305714940654287018169021314700994059258023402097770797726365433681288588963390967078', '-1.06228055780991014906601822125917581862301955272375860585948381712244211891722177640958095195371334491374318734669542475388120658282168983963390967078e+25'); - T('-6336513.23', '-5249172002022980268812313222482147319.6010671183072060237015049011583118322', '5.2491720020229802688123132224758108063710671183072060237015049011583118322e+36'); - T('267635446505753748225432544372279094104011987689607870636.88308855576649357656458127950511', '0.000000007151544482605747363599261338379766369120662716754539', '2.67635446505753748225432544372279094104011987689607870636883088548614949093958833915905848661620233630879337283245461e+56'); - T('0.0000000000000000251680172', '-43996141.9473547548529', '43996141.9473547548529000251680172'); - T('3008681171818278308404.634698376660136232243907341147927120093956', '-72008045405579488.929013843', '3.008753179863683887893563712219660136232243907341147927120093956e+21'); - T('-1917507321972333152063718.3', '-458382.6165374681213015', '-1.9175073219723331516053356834625318786985e+24'); - T('-0.00000000162489680974735997523039312016450827505959711537297137706530', '-731118718225310016148587418433198514412521393862386540689205275178569598255098419588588653874560984.082237617343418975656930427', '7.311187182253100161485874184331985144125213938623865406892052751785695982550984195885886538745609840822376157185221659095704517696068798354917249404028846270286229347e+98'); - T('531802532279637137552808013110951053732.907624514862128773520547166755212879477296231276825579342', '-173067154812932973797393419951029156470968384903254747150744.1037243073944890748534755651124752', '1.73067154812932973797925222483308793608521192916365698204477011348822256617848374022731867688079477296231276825579342e+59'); - T('1216376563.861151456186911150794802999960874196553469479145822420208291551214685836322120517079008', '85984.5', '1216290579.361151456186911150794802999960874196553469479145822420208291551214685836322120517079008'); - T('0.000000000000000000054924120831599544196056464059913345528362581686003585823080198063175104748720429835436816', '-33.965305825679', '33.965305825679000000054924120831599544196056464059913345528362581686003585823080198063175104748720429835436816'); - T('-0.0000000000000000272691295425523253281545245364330746310034056347651726374661392748936831102659438676749529105824808034929101186122342434701063245841476', '-781187391210758142167459761699751749533058942483806705247714720005729302232618042462.31429718942883993867507', '7.811873912107581421674597616997517495330589424838067052477147200057293022326180424623142971894288399114059404574476746718454754635669253689965943652348273625338607251063168897340561323250470894175191965070898813877657565298936754158524e+83'); - T('127262997433251959079279503780471.05197845683869545951325487141398044178736403887617606907597695630472759165663283084977628891449702428789338877110708', '77396683518158379744711.66156663437342404789854794363811642267757202778894836789743946370198310026950193022769015766161296030', '1.2726299735585527556112112403575939041182246527141161470692777586401910979201108722770117853749260274449138713090062208613125288406398789338877110708e+32'); - T('42170499815256385540791846972137805290009126085642915432609561244148971544358403270767061193697589382522357089597879438170922900180458360491', '-0.000003885040489695371692757168739195827258540410745579', '4.2170499815256385540791846972137805290009126085642915432609561244148971544358403270767061193697589382522357089597879438170922900180458360491000003885040489695371692757168739195827258540410745579e+139'); - T('-1484024306291646967346493622090638440659128585952793958990883359092640546575462579828476965972418873274552.1834807695558477417523', '-10598014380036531229136810438900071681432863341249945982490785444176829679842459382408061192080712.9619817785969053235790359984721057762058', '-1.4840242956936325873099623929538280017590569045199306177409373766018551023986328999860175835643576811938392214989909589424181732640015278942237942e+105'); - T('-0.0000000000000037', '-3076174224740955436355989748079441650915310480031800204994005115124341562063700871463141434110179138410587089277839517152320944517479716270543461', '3.0761742247409554363559897480794416509153104800318002049940051151243415620637008714631414341101791384105870892778395171523209445174797162705434609999999999999963e+144'); - T('-0.000000075027040201482330625619859591861141930627870540731155446710', '0.0139177672366169698378876807351533299376331910835826839154061965617972722046119104334991574172', '-0.0139178422636571713202183063550129217987751217114532246465616432717972722046119104334991574172'); - T('8875143592690748989920787895291661147029298230059201908543304359430935440199.867134812405756511257745234125626824', '-247943204197117001912763303824992424614854547911.72151922913414922441109501', '8.875143592690748989920787895539604351226415231971965212368296784045789988111588654041539905735668840244125626824e+75'); - T('31916591334815493867348.2006986155618932404016660295722', '4606925311680888622.612954414237689607109445591833340796649297129233762211446696674', '3.1911984409503812978725587744201324203633292220437738859203350702870766237788553303326e+22'); - T('381592731768551523450237299269065558626439762823266272728608770256434241300666186155782732703413979594892722766059796378113553693016425636137853', '1074098218589615684162333302525523', '3.8159273176855152345023729926906555862643976282326627272860877025643424130066618615578273270341397959489272276498569815952393800885409233361233e+143'); - T('859384792671165504880.591270312184098707804090920437508527546076998804061888741623409867', '-415064661757507462508064979252020173304919.38161995361360609605709210292378740874075259401137388397242347603728910288128847206', '4.1506466175750746250892436404469133880979997289026579770480386118302336129593628682959281543577271404688590428910288128847206e+41'); - T('-0.0000000378511781638932', '-0.0000000019415746608194397271645430475998139434698262967689419183607208269227560180148712767202698791460535585478881851701240', '-3.5909603503073760272835456952400186056530173703231058081639279173077243981985128723279730120853946441452111814829876e-8'); - T('-127323.654151371587544406942297034389812264638323249811302292394967515069458109985654766167188775393537479581494034', '653407290188829294787949470104324404483492727890', '-6.53407290188829294787949470104324404483492855213654151371587544406942297034389812264638323249811302292394967515069458109985654766167188775393537479581494034e+47'); - T('155323920605544966037456890780901792411.6779803510786020326988033806935198', '159029239238266232.68574849991657262205375600388916', '1.553239206055449660372978615416635261789922318511620294106450473768043598e+38'); - T('13156801663791593515197335348715600238117690700.815038836887843190319660754853410804197810482520222445623353150435061783014391903811607138', '-8270199589564900477356715352108242301640427858623530223929697653745713628878.564288094121549802323184040403763027925657974', '8.270199589564900477356715352121399103304219452138727559278413253983831319579379326931009392992642844795257173832123468456520222445623353150435061783014391903811607138e+75'); - T('0.00000000000000003786195460340598104288682558070063337088309567282201351032563', '-1912699796464583227379572473541475383216013821339026581757100140817849255701729993948439667349733408806253839792.24198692029', '1.91269979646458322737957247354147538321601382133902658175710014081784925570172999394843966734973340880625383979224198692029000003786195460340598104288682558070063337088309567282201351032563e+111'); - T('0.0000678213457017134314852892364803864629433537599025120942836845115758304505087119211392119756099777668193068326923413902250456637918108722842255', '1140640116158968963485566592.5893331949954139196192113429058069640694322621110308576696441720269550777832332421', '-1.1406401161589689634855665925892653736497122061877260536693265776064889083511283455753604875153792473327245301788607880243900222331806931673076586097749543362081891277157745e+27'); - T('-5941423076793531487369004038913872115546949940523795.371014687155306260796761670579766889905', '47861971864566209979133077736766504352908819881729160935697807580950039529832250339875991.2370', '-4.7861971864566209979133077736766504358850242958522692423066811619863911645379200280399786608014687155306260796761670579766889905e+88'); - T('-3651590804629633244384272036497219152794961178826414247756327968228195689150408706412981706033290645060605', '-0.000000000000000000047076028716961617745970472461943359903971686105244537457258691', '-3.651590804629633244384272036497219152794961178826414247756327968228195689150408706412981706033290645060604999999999999999999952923971283038382254029527538056640096028313894755462542741309e+105'); - T('118687168472.901776101483448', '6575654819663787.704095301960878738190', '-6575536132495314.80231920047743073819'); - T('0.000000000000000008221087096832270706747915015998320970007508295513800923805028534762897555917424732521734252235383609982', '-4730231.56580380830953', '4730231.565803808309530008221087096832270706747915015998320970007508295513800923805028534762897555917424732521734252235383609982'); - T('0.21789670842440974974661994228192699055349', '0.01334643986427991665741664557', '0.20455026856012983308920329671192699055349'); - T('-14226117087.28617301017414275549732687575166423932', '-2570477277243155.1204160224690347778553830976260385383374348745734315475200813314035', '2570463051126067.8342430122948920223580562218743742990174348745734315475200813314035'); - T('-46.941057107072660652688121977370', '-1198710434479146302024548885128439972868624935885330601645871874157901.96708543469474', '1.19871043447914630202454888512843997286862493588533060164587187415785502602832762207934731187802263e+69'); - T('-295140171894972088951187786.0843050337025558841174717700928362793074491331276762385630102550855368430612108831357', '-0.0000000000000004883812758401282299689103133449934936', '-2.951401718949720889511877860843050337025553957361959299646063103971357881341826385630102550855368430612108831357e+26'); - T('1.4711261754068130281842564186342696000895948066', '-120648633751429663556459972182655021410865.5086632989898240206360208470238848290763965597192371216857894570350195365591255381749962060', '1.20648633751429663556459972182655021410866979789474396637048820277265658154429165991366319237121685789457035019536559125538174996206e+41'); - T('-144700', '-0.18213538140165154164724446677239877238828512236771523708810552188227956132323566115125955382011533702944784', '-144699.81786461859834845835275553322760122761171487763228476291189447811772043867676433884874044617988466297055216'); - T('7527305921883997190334173981195704877744988728728518609052340094791.8855544226349862816292745519085545', '-0.0000000007048946656101980003207741963970650160207507827240902', '7.5273059218839971903341739811957048777449887287285186090523400947918855544233398809472394725522293286963970650160207507827240902e+66'); - T('-63795532.1247756163974543523664090934199701938480314046575430119409403191645390756181006417970791', '-0.0062137513829573043880447774252661092604135729387774810554', '-63795532.1185618650144970479783643159947040845876178317187655308855403191645390756181006417970791'); - T('9170218742863146.63960565263545342233167920145227196559581870281019754919446058190890025166080356692023953226567583', '94899.938506789077785525289197268929739161960202702966987511034', '9170218742768246.70109886355766789704248193252253280363561599984321003816046058190890025166080356692023953226567583'); - T('3901879734193765914331129847202500304665157801252541780432220949839069127986525493675829826983735746021109803224777662529', '5885103402359590328286381776411514113770718249033564454051018031288461.42208859547727201936136', '3.90187973419376591433112984720250030466515780125253589532881859024874084160474908216171605626548671245665575220674637406757791140452272798063864e+120'); - T('3', '-15200.9143662493055675379993', '15203.9143662493055675379993'); - T('15423485096047599053364024548519496681508881945096830176039851680666630029365886063521259842', '-0.000000000283965132096', '1.5423485096047599053364024548519496681508881945096830176039851680666630029365886063521259842000000000283965132096e+91'); - T('20462143', '63769737', '-43307594'); - T('0.000000000002655335762566545159279103266301165139940149572346903456821981448916315558904', '760001783034845256482634525599227420841592883976982090372844443290413192545720519296', '-7.60001783034845256482634525599227420841592883976982090372844443290413192545720519295999999999997344664237433454840720896733698834860059850427653096543178018551083684441096e+83'); - T('-2859.72', '1143457536770062100322750086623.71845', '-1.14345753677006210032275008948343845e+30'); - T('-0.00000000000000035489705537003133966656620934689', '11987350492635913981351083990815685367027572166189009953407790102342640597311.916155924353548989207704206322071476178972779', '-1.198735049263591398135108399081568536702757216618900995340779010234264059731191615592435354934410475957635341114274518212589e+76'); - T('-672459565845298082592172835281835774315217847427856401542010053256271699439933658929866947464739169479833929233830480664939232420953.2923', '63108751.15749592458552', '-6.7245956584529808259217283528183577431521784742785640154201005325627169943993365892986694746473916947983392923383048066493929552970444979592458552e+131'); - T('-0.000010035206280282747019162655750927410618908635896952580', '230.1907049834484816952377627084616053336290', '-230.19071501865476197798478187111735626103961890863589695258'); - T('7173044628.5777843255026455413348266', '74453983.680083199805556', '7098590644.8977011256970895413348266'); - T('-83919871511965703755476466.256569440941669204141450851398993', '-120420004260233575347420874147255645547454760214523', '1.20420004260233575347420790227384133581751004738056743430559058330795858549148601007e+50'); - T('3630900902246671948646521726957218461983828034217333961862682876897350087684.6822', '142378828011194667522298164078675050366271553.18418507871350239937970327468837520064392740785265', '3.63090090224667194864652172695707608315581683954981166369860420184698381613149801492128649760062029672531162479935607259214735e+75'); - T('3600368521700307314019929721242984506937722877903512324371675383642175079745764808500491934491199396', '-8889151549.0980820465205798627062897257998560429872362749013588868330096', '3.6003685217003073140199297212429845069377228779035123243716753836421750797457648085004919433803509450980820465205798627062897257998560429872362749013588868330096e+99'); - T('2566124149510189054603184804420483142674551293246048640739644229580149479831221856889682947040898.1947', '2.26262852', '2.56612414951018905460318480442048314267455129324604864073964422958014947983122185688968294704089593207148e+96'); - T('-6445706060883314535319320109991761267536435348960454296790760967040816468929', '-0.00000000000000000062830932861674764819252613026097705872828029129848817631757479456721702066162270528458013184133179280907256876980768150732125981012639579785215', '-6.44570606088331453531932010999176126753643534896045429679076096704081646892899999999999999999937169067138325235180747386973902294127171970870151182368242520543278297933837729471541986815866820719092743123019231849267874018987360420214785e+75'); - T('0.00000000000600072079222315465580504023456367837739567604666764878391621677969104485271956013728552504195645646316020084441518304737259573663289004508147', '39.31302175525738768291245783088445596818951069182891044427517151104661708832', '-39.31302175525138696212023467622865092795494701345151476822850386226270087154030895514728043986271447495804354353683979915558481695262740426336710995491853'); - T('-0.00000000000000000294054960556608929', '-0.366150388110291163127790', '0.36615038811029116018724039443391071'); - T('-511163388228633237873316822527313608282340841918478362004266090071119793101871.464037584689475734', '-329989907679436788948852901850804713300444041228309095926110784330762590667953827054759693', '3.29989907678925625560624268612931396477916727620026755084192305968758324577882707261657821535962415310524266e+89'); - T('0.0000000000001704747491801544304246616272150314276800251600985090', '356912525185464485672340637548121974961395954891152868968788980713248525881582063315953007660073165537954814817936395362149647051889219299067882', '-3.56912525185464485672340637548121974961395954891152868968788980713248525881582063315953007660073165537954814817936395362149647051889219299067881999999999999829525250819845569575338372784968572319974839901491e+143'); - T('252850202046876977851994.143212', '-848887102457721130097.091770', '2.53699089149334698982091234982e+23'); - T('-1463813561256.991439146629821901956687441988620850205985146015744308635116738069577049349761881704662355647698634718200189276416926210554813240', '62029849111463410013756762844374812825897194275000462631388966790212235003405628390', '-6.202984911146341001375676284437481282589719427500046263138896679021223646721918964699143914662982190195668744198862085020598514601574430863511673806957704934976188170466235564769863471820018927641692621055481324e+82'); - T('69782305662663437094541084757082159939270157247.9716354', '-89147785350539844445.416910718922580580536969939488837234964042787197740548106624', '6.9782305662663437094541084846229945289810001693388546118922580580536969939488837234964042787197740548106624e+46'); - T('-131.76', '-0.000000000005696147108564746426888775570848202211810884752865344375891071070092502829538629785436541334365692051020683595375875811133291302478345676258', '-131.759999999994303852891435253573111224429151797788189115247134655624108928929907497170461370214563458665634307948979316404624124188866708697521654323742'); - T('-497777803060949043131155159968723958.16915576601446255882706227712009561', '187513374620216567870246128064.585091639963330830047759047069515276559563684958977723723813958088783235081595183826887', '-4.97777990574323663347723030214852022754247405977793388874821324189610886559563684958977723723813958088783235081595183826887e+35'); - T('4125226628898214776459043043848665640891754611330056829115889332318900550787802063162881102.0172', '-5654133954935729315244416.571910565', '4.125226628898214776459043043848665640891754611330056829115889332324554684742737792478125518589110565e+90'); - T('0.00000000004139915941037474807032518234750457019529957219537984823906929653706764566737605928162402285281158810275719639', '4918252046919178557340409576205071237879887503291090041', '-4.91825204691917855734040957620507123787988750329109004099999999995860084058962525192967481765249542980470042780462015176093070346293235433262394071837597714718841189724280361e+54'); - T('-2311168251436595165228357269442780578123112.83612714285098893733488905613344909999353', '-23179010559927745251596254686184413186603531856508883463422590120878079108990895937457179980442401237385839673669330286893540161257', '2.317901055992774525159625468618441318660353185650888346342259012087807910899089593745717766927414980079067444531206084411296203814416387285714901106266511094386655090000647e+130'); - T('-157110395920267638794958655839617698095333501445314955918734069161689933642356923466527500.842491896021313687363006263896039621', '-0.00000169938824017905253390365814790480115170799502101643798', '-1.5711039592026763879495865583961769809533350144531495591873406916168993364235692346652750084249019663307350831047236023789171619884829200497898356202e+89'); - T('-0.0000000034695699166026892143077647500761510769012638170656915865714501717320327171654999280961297567557115531', '0.000003285105858090918101513244579', '-0.0000032885754280075207907275523437500761510769012638170656915865714501717320327171654999280961297567557115531'); - T('12.821444033432329487', '-828945494613921320615913033922430384667832091835552867448637507842855527762415897847274731250460560.5938743219195296432763484012308615936905854362', '8.289454946139213206159130339224303846678320918355528674486375078428555277624158978472747312504605734153183553518591302763484012308615936905854362e+98'); - T('-21780810408046000685162929853231193847862416557439280736028379007620.9726981547505', '-139252299485951365181945740150018259705534184833100450.519901854594606176500', '-2.17808104080458614328634439018660119021222665391795752018435459071704527963001558938235e+67'); - T('31153778331.4387887187891452717104214859599795399160108427720346733063507', '179728021.06909075407924714', '30974050310.3696979647098981317104214859599795399160108427720346733063507'); - T('-618834912531652.0057377', '21797574580198291897359627810662681102637063422664387863754038865817', '-2.17975745801982918973596278106626811026370634226643884825889513974690057377e+67'); - T('-0.000000000000000765821929389877370458202611860322225362885792434335153360684490327702934795208517771383256418915784282787289167843225530943806979468309', '451287395769559434110582968934970.685236', '-4.51287395769559434110582968934970685236000000000765821929389877370458202611860322225362885792434335153360684490327702934795208517771383256418915784282787289167843225530943806979468309e+32'); - T('77106705055908475310440141267552925652440318989464386727898512296975567.66061423617574863098323698323360502040356558', '-0.000000011450841720290860862448039550281180968988484941121896581469341885197489647153563705690545985946332080104331971976300', '7.71067050559084753104401412675529256524403189894643867278985122969755676606142476265903512740978456816445706847465489884849411218965814693418851974896471535637056905459859463320801043319719763e+70'); - T('-0.000000000000019290717114050931338105101245194653742552644960059', '143276467308241499701', '-143276467308241499701.000000000000019290717114050931338105101245194653742552644960059'); - T('-0.0000000000001540616672147681280171217297593042431394881995494063140060573330749436996881403638596216426697967870302615524370008926698907505446249500632', '-0.28350757173542186862807156137406823418555996167492030058802005151707375796930334126928268135255', '0.2835075717352678069608567932460511124558006574317808123884706452030677006362283975695945409886903783573302032129697384475629991073301092494553750499368'); - T('0.00000005655991707149037399922054071139097387281061191477648236574838149302923575757471824009608753090882473645396585695414457', '-1037735687954213696569384673332890401637635622739449765500.241575915381331', '1.03773568795421369656938467333289040163763562273944976550024157597194124807149037399922054071139097387281061191477648236574838149302923575757471824009608753090882473645396585695414457e+57'); - T('4855675332.7083066004691748608', '-9495842049673468279.5671213956484193849367821937814670521168063407441607221529038456882314074643242900887127616369767306383357140885', '9495842054529143612.2754279961175942457367821937814670521168063407441607221529038456882314074643242900887127616369767306383357140885'); - T('-371727694604000265531518957397404745190308397247774643342809559479423488145460577873367071667140515223960430330052550077105059687.602928315818224370992', '-0.006182613654799728503894831274202426819463433943221582526744062754609114781332193519619', '-3.71727694604000265531518957397404745190308397247774643342809559479423488145460577873367071667140515223960430330052550077105059687596745702163424642488105168725797573180536566056778417473255937245390885218667806480381e+128'); - T('252.7286', '-1048727383.8417648117635129245612611075251', '1048727636.5703648117635129245612611075251'); - T('246339105236279993029.779136671622836638254622844315', '-0.2081466910740537', '246339105236279993029.987283362696890338254622844315'); - T('-0.000000000004251821155298564603972810714958089479168033107886959502196802756203470788176960484264054952475484390527833088494710819240861104331195786410885', '72374649981010622768585141052423674921404658971075010108219334219091239517373927587321641489790577909684263', '-7.2374649981010622768585141052423674921404658971075010108219334219091239517373927587321641489790577909684263000000000004251821155298564603972810714958089479168033107886959502196802756203470788176960484264054952475484390527833088494710819240861104331195786410885e+106'); - T('183837148.90443961940430047231989366651993476031567037971215956651037637016802721769559763173816796542803144211780111934219050428648', '-1132210802667233013885301883421427506588959233625', '1.13221080266723301388530188342142750658914307077390443961940430047231989366651993476031567037971215956651037637016802721769559763173816796542803144211780111934219050428648e+48'); - T('-3691822058.57085474396080945369673728122984439428444257734562382467780353804871181415538969082586191879205496710', '3926432506300249210509179487381770792289628403911395731250431112551381231067577307.7886693710023579159088025939730616110630998092011', '-3.9264325063002492105091794873817707922896284039113957312504311125513812347593993663595241149631673696055398752029060053475423865467238246778035380487118141553896908258619187920549671e+81'); - T('161380629205776417370619978.94790585532571175965001173657717968258603', '15770163883113132525352877130764618385076935573552026524962864893082340267956294317512981350074440117.51141761065457763829', '-1.577016388311313252535287713076461838507693557355202652496286489308234026779491368830720493270382013856351175532886587863998826342282031741397e+100'); - T('-0.003870041060244155089', '372037566.3292566800057303692867308995967514456947136761173', '-372037566.3331267210659745243757308995967514456947136761173'); - T('306847039405846004795255377789835522736966045.703419256307644158563670046841211782545782850044162871280281083966845034443161', '-0.0000000000920455239477610995683838741187048041416049264294738878526378270582', '3.06847039405846004795255377789835522736966045703419256399689682511431146409595656664487654185767797709754971819482861501361e+44'); - T('-0.0000000000003210953781062772150098343898602436843086564236327052301688', '-150338459473158557923119665782760876423441993048051543691089147086917525625936551761033445707803557045155557.52837300270019703', '1.503384594731585579231196657827608764234419930480515436910891470869175256259365517610334457078035570451555575283730026998759346218937227849901656101397563156913435763672947698312e+107'); - T('25983124363595065.33092768399411430713290111808632249366', '-580933674475894898982997155309901918649485043287834362560222468094831906478743818165029199620003568770150378311086272184208826293576318808290', '5.8093367447589489898299715530990191864948504328783436256022246809483190647874381816502919962000356877015037831108627218420885227670068240335533092768399411430713290111808632249366e+140'); - T('1850916610962229939602303480362676023908431072215702014137566112296384421153424607176.8059784587131', '512243500267', '1.8509166109622299396023034803626760239084310722157020141375661122963844206411811069098059784587131e+84'); - T('-184877142422294703520975479796306025809263499292.7931910621756669188662102660938494746987999101249089061195470207030', '-0.00000000000000008498222206556406262243165', '-1.84877142422294703520975479796306025809263499292793191062175666833883988200529786852267149910124908906119547020703e+47'); - T('-0.000000000002591577406696730110925816397500154615', '-0.000000008203755062608231746294494108119453489077150713983075114286087573203872407396100452280836', '8.201163485201535016183568291721953334462150713983075114286087573203872407396100452280836e-9'); - T('0.00113187652077011811375354713438890135407233573999645640576361426763004959545048824419375996447732201405034000719887068357917006193372968721', '-9513299452685933145884287122288569823742580460859259721427216624858272956972621512882828978401205032497576349955400997444307472.127288502040606', '9.51329945268593314588428712228856982374258046085925972142721662485827295697262151288282897840120503249757634995540099744430747212842037856137611811375354713438890135407233573999645640576361426763004959545048824419375996447732201405034000719887068357917006193372968721e+126'); - T('-101282948616724272484953545953349716593478543806497.286950890059245094039', '117309932329495122737411487914013724789825355301759777928575644736371090499526769006843968707622513899074453', '-1.17309932329495122737411487914013724789825355301759777928676927684987814772011722552797318424215992442880950286950890059245094039e+107'); - T('-3527672542958095940230507255558332.170340607904850914382797250686015987003437982374864974619427360612046545786860047', '-44308074539', '-3.527672542958095940230462947483793170340607904850914382797250686015987003437982374864974619427360612046545786860047e+33'); - T('696251462779098640018848016194974848273984539897182732503721195581.022', '-0.0009913757384911224166061061275859102001742166932949065339677297902168319985124401', '6.962514627790986400188480161949748482739845398971827325037211955810229913757384911224166061061275859102001742166932949065339677297902168319985124401e+65'); - T('1078800798224.734663928613388302956878421495374656333024393408174361403843900153053669034118433549172155326377609', '-395534581529124125726253950708301388351136671971313.269513765972391964435573515235', '3.95534581529124125726253950708301388352215472769538004177694585780267392451936730374656333024393408174361403843900153053669034118433549172155326377609e+50'); - T('157736254008627834038860309559683387724555', '-4594454316276846.22889', '1.5773625400862783403886031415413770400140122889e+41'); - T('192386447850938643364980037157714078.667670', '-851657218576.302225280595205926373252086357245881159099186004946924709955966414529108970202216172176', '1.92386447850938643364980888814932654969895280595205926373252086357245881159099186004946924709955966414529108970202216172176e+35'); - T('-30904996899995566378174385484494931717271463370895674716598098724288017981274999017442756424.6379761510688077348608197361985605065677866468436805', '4689937374232446.45257401892489335752', '-3.09049968999955663781743854844949317172714633708956747165980987242880179812796889548169888710905501699937010923808197361985605065677866468436805e+91'); - T('-75737124093497081558918300645262008779192868684414555820427607278946300576673', '217541673539103', '-7.5737124093497081558918300645262008779192868684414555820427607496487974115776e+76'); - T('-0.0000000000178582787097936410955952527724904571812233290700799389147161616449340030526614581183800172797335354127416587536811082238416196766809706109306282257', '1655811940148466388814205.23320907612777562208494378505895383608907847845502485386735176120340958223402858437920118040340355068270079322722548', '-1.6558119401484663888142052332090761456339007947374261545490888615689356362481829374317001181257438789625874318626385217835679624343286399671387536811082238416196766809706109306282257e+24'); - T('0.000000002919991993491021882536587348', '-505934880332731792510691865564845809059631032976000339923495992940889398540650687707453464781582591628461285346207100158557879217', '5.05934880332731792510691865564845809059631032976000339923495992940889398540650687707453464781582591628461285346207100158557879217000000002919991993491021882536587348e+128'); - T('-33466744637598795529381545892043857804617468.46401319673766053647481787577214595481626050900894623520', '-0.0000000000003357237902324', '-3.34667446375987955293815458920438578046174684640131967373248126845854757721459548162605090089462352e+43'); - T('-89425417162201175465400546339403148500149133957193.96578038786595026758317811953966733498932978601', '-1405803301520003345575789184231943451603588638985.9376135626367435873857739001195431353742', '-8.801961386068117211982475715517120504854554531820802816682522920668019740421942012419961512978601e+49'); - T('0.000000000000001871288647830989494290689415161953067408619362137083942908468831270334812418581424545772814063266068263844492510500380710872894374', '4.23013879231167686677612360843795550900659989406713647936612', '-4.230138792311674995487475777448461218317184732114069070746757862916057091531168729665187581418575454227185936733931736155507489499619289127105626'); - T('1081898192142823325334768391585696724.266551471539993', '-17659238921005307.917413084214192739', '1.081898192142823325352427630506702032183964555754185739e+36'); - T('-211840291024698604.48893683835289524386164142885412599596', '0.956798615642965592754457212313533228615333073536496635490759649687294643223525742190828313263626448735964', '-211840291024698605.445735453995860836616098641167659224575333073536496635490759649687294643223525742190828313263626448735964'); - T('221425316830895877056683698880899917852135343813023998859360273819797052290640.9315231787425484197016892424623525', '0.00000400616385054508', '2.214253168308958770566836988808999178521353438130239988593602738197970522906409315191725786978746216892424623525e+77'); - T('0.0000000074648516794219838184240130975016099', '116876.42749590099927445693850031173280282361261639', '-116876.42749589353442277751651649330878972611100649'); - T('-73443010540402954576842026', '-4926832937510632043653806478767750613389877126019642141260618065698.0792895022817212282107503047772151899589664246413340', '4.926832937510632043653806478767750613389803683009101738306041223672079289502281721228210750304777215189958966424641334e+66'); - T('2784502990835628144358253950083873358740549170601580432289611124376226555234877.9858200557236237337577147596', '4917661361731789584921195447270.5587547070375957130008047176901629887458255', '2.7845029908356281443582539500838733587405491705966627709278793347913053597876074270653486860280207569100419098370112541745e+78'); - T('0.0000000278504063853447146762310784743311219577950698679342514425094994531041925550104863191773566381681464090705194734640', '327544799712156512794784451228653130604976681932044866.8130716684653513802', '-3.27544799712156512794784451228653130604976681932044866813071640614944994855285323768921525668878042204930132065748557490500546895807444989513680822643361831853590929480526536e+53'); - T('-0.00000000000002008111880513429242547', '-1168142699198895682872256551220621216397424308459153677585114.96438975713066891515', '1.16814269919889568287225655122062121639742430845915367758511496438975713064883403119486570757453e+60'); - T('-0.0020759804305965617', '764484378925575955998262271107967177799.3921673495985811141655562538838430225703', '-7.644843789255759559982622711079671777993942433300291776758655562538838430225703e+38'); - T('314538242246288.42720726996770214230667062396125055947593471536', '-5709766296171650602.24185600104198360224', '5710080834413896890.66906327100968574454667062396125055947593471536'); - T('2601655151900642206636222997530561092879117314164702943580485229395095933.8148647041', '0.0000000000000000000545923963200601881583792553271167476403317094011785783473945906028127827591476470085229569639102315240902527107858916390', '2.601655151900642206636222997530561092879117314164702943580485229395095933814864704099999999945407603679939811841620744672883252359668290598821421652605409397187217240852352991477043036089768475909747289214108361e+72'); - T('-43151301919298268068196451304198990983037212765635867863105642809532901509070161236071836104869066552364969311762463975552', '-65792506329.162401577209876729615122943184875102458456675147552153', '-4.3151301919298268068196451304198990983037212765635867863105642809532901509070161236071836104869066552364969311696671469222837598422790123270384877056815124897541543324852447847e+121'); - T('-58145525166565890.04122722148517396992268609808559449424081643957465013', '36895', '-58145525166602785.04122722148517396992268609808559449424081643957465013'); - T('-1380019075368410665434910685837646231061500678571273.437', '-708783781474372956418809.1668488022806394799579905891256533778023871539', '-1.3800190753684106654349106851288624495871277221524642701511977193605200420094108743466221976128461e+51'); - T('1963393100153283900680602317090841091868.7057877321407368918', '-4558805287590516608986267171325288983366964400655106', '4.5588052875924800020864204552259695856840552417469747057877321407368918e+51'); - T('0.0000001407996470540256884206972291699170231269478445264415596334101718170629891348240406473704424192652557212601717979646372575017642378452081', '-68319808.85143904948777163237579395976723632411831309906501022', '68319808.8514391902874186864014823804644654940353362260128547464415596334101718170629891348240406473704424192652557212601717979646372575017642378452081'); - T('-0.00000000000000000520745300386927858263802847774818906513849609279791649851542455109794569658396745790033', '-0.0092550980435850490662646493376107', '0.00925509804358504385881164546833211736197152225181093486150390720208350148457544890205430341603254209967'); - T('2967617678347088013.1738970622321751596070351867397208390655655108226821804468393275334586999342460367780260036922367170801495', '-1037314302.0266874363156528872956184434218993246886249535339781421', '2967617679384402315.2005844985478280469026536301616201637541904643566603225468393275334586999342460367780260036922367170801495'); - T('-49291697.79', '3118337286372049189132894.361136097492458179780194692374756783544285588810310527347173746912677367611366854072067678627774', '-3.118337286372049238424592151136097492458179780194692374756783544285588810310527347173746912677367611366854072067678627774e+24'); - T('-339.2', '163572547291591069133936914034534.567315194', '-1.63572547291591069133936914034873767315194e+32'); - T('34325086548698898487887478294.36420', '355576739939045466327.4975269472620813909920831535481189862294384252210442757667064506332182539172503591866982', '3.43250861931221585488420119668666730527379186090079168464518810137705615747789557242332935493667817460827496408133018e+28'); - T('370044764.3013082042', '1790005633588538461650641328587108706658340072380027626477.0132722745841414452316360238830847702114898024038942988300305', '-1.7900056335885384616506413285871087066583400723796575817127119640703841414452316360238830847702114898024038942988300305e+57'); - T('4263702202353975994071.31690964522111184782225643263309765852647473593539755902567196', '-19975397854626091996286240550959532193241549861480938890275634702569032237325096179631367809302680197661729288714.051', '1.997539785462609199628624055095953219324154986148093889027563470256903223732509617963136781356638240001570528278536790964522111184782225643263309765852647473593539755902567196e+112'); - T('3486961.94860938', '155083657058384127930580314746.0523483468034310636373779', '-1.550836570583841279305768277841037389668034310636373779e+29'); - T('-12500272340430247337584871234769182598217741493536064909830797164011240022929666553931.1010', '320228573980378863122568709145317117449935889878174725217701802157098986085371.51305672546876049053871', '-1.250027266065882131796373435733789174353485894347195478800552238171304218002865263930261405672546876049053871e+85'); - T('-5051726177322.81786601098426577', '-0.478083315601904193517321798543685421468736554729083533236145832716201463299848292219431026180384620242431752321517', '-5051726177322.339782695382361576482678201456314578531263445270916466763854167283798536700151707780568973819615379757568247678483'); - T('-1805640145024569891681224418968926516432842084069.4683478', '-0.00004666227081', '-1.80564014502456989168122441896892651643284208406946830113772919e+48'); - T('-122539612725006940436479306393463901576107037860603468764716.442090206833953614902041846195976605726465853757952136575397703', '-41270858.6670990535407801373074922648949382808920775900799658210502034041462604039074761', '-1.225396127250069404364793063934639015761070378606034274938577749911532931734775945495813010383248343882636779863155251942988537395960925239e+59'); - T('-122359.1727490376', '1581678069.9607', '-1581800429.1334490376'); - T('0.00000828479828485256539017422162536712777837952542406358440363757753554784788015690875096756272853061031753883063876226018540022889614127275718921', '-0.00000000000979390831128660928240121877046', '0.00000828480807876087667678350402658589823837952542406358440363757753554784788015690875096756272853061031753883063876226018540022889614127275718921'); - T('3014937410709080363048635820022478067970287003612206702018715047141006381003373200865760747279383102148885920325786', '13192212031830204018622500889173518071465445462648474880006710438901406028.19078998512989422200926796249911378252', '3.01493741070908036304863582002247806797027381140017487181469642464011720748530173542029809880450309543844701891975780921001487010577799073203750088621748e+114'); - T('1137652429855.7006716974270280155270950682974135967673015740628328197884', '0.000005536906484', '1137652429855.7006661605205440155270950682974135967673015740628328197884'); - T('17516195002079504046599923580222888468136191973844988762823377013157696208127912781416616872247424539619546427766', '0.000000049332322771448227773362567337764784013258792663644857484303435435122827459514247309673313863866397145377917359757', '1.7516195002079504046599923580222888468136191973844988762823377013157696208127912781416616872247424539619546427765999999950667677228551772226637432662235215986741207336355142515696564564877172540485752690326686136133602854622082640243e+112'); - T('-27506767197655948181.328949804790883947367925537829924105775693473950222413500805587179604', '851744208518189337306972955526150694905469056618627352385522013393688952141414396074470925490405490728735', '-8.51744208518189337306972955526150694905469056618627352385522013393688952141414396074498432257603146676916328949804790883947367925537829924105775693473950222413500805587179604e+104'); - T('0.00000000000000016100516695902975851532468630731065388238733922125157107578982740360720', '0.000000000000005453287371976994277320664460255897903401402435852268978047976350868347882510607594', '-5.292282205017964518805339773948587249519015096631017406972186523464740682510607594e-15'); - T('-1015.36', '28726679251696495519418305.7', '-2.872667925169649551941932106e+25'); - T('-936968911546704282843988971022862859429380575863600004134648546127147385.550916104277091139359959595538873413416181058503593874140', '-175348106986507342335754762602245018364666640954631672307547275757550482650641067', '1.7534810604953843078905047975825604734180378152525109644394727162290193652349368144908389572290886064004040446112658658381894149640612586e+80'); - T('-82283247317913068455250030332808481250588157.87622854768457973434714154261139038109409280493164157480405984455365143662342695995148270', '44.99825878', '-8.22832473179130684552500303328084812505882028744873276845797343471415426113903810940928049316415748040598445536514366234269599514827e+43'); - T('0.0000000008490168', '-0.0000000000000006074865058947945839', '8.490174074865058947945839e-10'); - T('3636426464211118305138698215541505022990147742911418561057930702808150291', '1598908059965309335026038743126561583060668905575689367.6003785995795', '3.6364264642111183035397901555761956879641089997848569779972617972324609233996214004205e+72'); - T('-7516190.940861499379106729192131043068573493293233100655140480083907054072822505940742766302343169414520157351216195387299511801647', '-0.0000000000000454932933336808575963301305396992632885880696675679107651681040430359684592346731492202438', '-7516190.940861499379061235898797362210977163162693401391851892014239486162057337836699730333883934741370937107416195387299511801647'); - T('-48288936.78722249318487555690454563461', '-2005716261952974336303267852338923837806513', '2.00571626195297433630326785233892378951757621277750681512444309545436539e+42'); - T('0.00000000000000361164834854643173545096303609810033142721680028195071060833143531948647509219803554613154933367271433460345060095402441586344758203', '0', '3.61164834854643173545096303609810033142721680028195071060833143531948647509219803554613154933367271433460345060095402441586344758203e-15'); - T('117527597286243844925820166915403846128409126690409737.7024153118718614783138378277032681506289005899206380178136648075347527401515', '142970923259618812743278564725226081502378163356150859956591622347575726634881287085', '-1.429709232596188127432785647251085539050919195112250397896762185014473175081908773472975846881281385216861621722967318493710994100793619821863351924652472598485e+83'); - T('-421.637794298766899659968770626491660939483442168172530357951266709389524009618302536438221', '0.000007500440138930182530717119147674010713308857022125249921960367734502038756006365022302482030874542048185964246356551809776026365', '-421.637801799207038590151301343610808613494155477029552483201188669757258511657058542803243302482030874542048185964246356551809776026365'); - T('151539803714.55419760516058121061664', '5947110489174350865159529800495269979412122032546964623633750977098107', '-5.94711048917435086515952980049526997941212203254696462363359943729439244580239483941878938336e+69'); - T('42.96514137222747126649680518556598169535979854687275322179628273846143520146782958673105379865087129307601', '-10953889685.72652645743016845401321258839294061151336635450954240593892170965006938629511080', '10953889728.69166782965763972051001777395892230687316490138229562773520444811150458776294038673105379865087129307601'); - T('-45444452978530864728152294556239654908077032829329359349565438897.0872421377694', '-1.10543198001234853494574224133819939759899818427770986357398073461833864778527689', '-4.544445297853086472815229455623965490807703282932935934956543889598181015775705146505425775866180060240100181572229013642601926538166135221472311e+64'); - T('-0.002845911806687586456195667795987390886482178862015476630127308203573595922990347328439736545942442607248575854261113227721222844030682403654028296609', '-108143910626361371525060838061026913900811972840772563215348121329650489043833335691285421668618034618407054685798027697197635.65860759495683373744', '1.08143910626361371525060838061026913900811972840772563215348121329650489043833335691285421668618034618407054685798027697197635655761683150146150983804332204012609113517821137984523369872691796426404077009652671560263454057557392751424145738886772278777155969317596345971703391e+125'); - T('-46907095890372173836389327440139250674757510384063869086116234641758602924747249181765303804967251303089507.19103700711514447125694845740498171264', '25808803835091891711851699685937630228367986645198551990544154370479382.0551364316906891141232071494', '-4.690709589037217383638932744013925070056631421915576079796793432769623315311523582696385579551140567356888924617343880583358538015560680498171264e+106'); - T('774303554476944464976310906.2756072907223780702981916825924935009102144113269340555014106355954', '-2936542523893120558694770993613502855976036487473.1185405114318897552959636978670899057597113825111455591', '2.9365425238931205586955452971679798004410127983793941478021542678255941553804595834066699257938380796146014106355954e+48'); - T('-13275374194717318544585743586295562757313566313778528439681338744852144432953462009763652326380221990178967224217813656923840876936', '-1268893501255453921460255787670811403994557320916562978493176785265067911028531055.964036945884980267232', '-1.3275374194717318544585743586295562757313566313777259546180083290930684177165791198359657769059305427200474047432548589012812345880035963054115019732768e+130'); - T('335836320670736795110387481821779195576314622771385546058961565', '-6308825096439610198958861602887495693205.4798888075506048902810900464069359363711381750141774362863', '3.358363206707367951103937906468756351865135816329884335546547704798888075506048902810900464069359363711381750141774362863e+62'); - T('0.0000021372107920', '-1492049097078082888491204608304758854999.3774548350456232694485449355735093537220396664845726422284909165974459140941684162404595576799509302', '1.4920490970780828884912046083047588549993774569722564152694485449355735093537220396664845726422284909165974459140941684162404595576799509302e+39'); - T('-64732225450134517358652.7727736714979370370316688953979348962291764', '2981903640111957881620728082679423538602.35210787691735540826362359673812680870549799515376723672419104726837070300471', '-2.98190364011195794635295353281394089725512488154841529244529529249213606170493467439515376723672419104726837070300471e+39'); - T('0.00000000010852624286329189173169519346885793702035699273525590064499030', '0.00136476424465186406412883677012902', '-0.0013647641361256212008369450384338265311420629796430072647440993550097'); - T('-177975785070132616812935423102873085249499780810541192549343263252072028435998023073647418141301', '-283854219686234199819511886405040807512965424302362972904060004217971747993015757990079005629446149391437513331803368676845228.9308370137200554682048', '2.838542196862341998195118864048628317278952916855500374809571311327222482122052167975296623661940773630015153087297212587039279308370137200554682048e+125'); - T('11674840520046183.070270802775802015272346477', '171117028337514616542538412107099681879.7091235075363784803038814937481135947601822871', '-1.711170283375146165425267372665796356966388527047605764650315350167481135947601822871e+38'); - T('11685421494153882328823406', '99823703745248486246555543362896398057.69654850969729974206782841252942985600643', '-9.982370374523680082506138948056757465169654850969729974206782841252942985600643e+37'); - T('-9109482616.16307635880678540039795900931968117400633485165763268347733490749858174229181208845630928397440346561525883931665961736391868364592211620', '14097919301831317803788298625489630505329242071596241458071703375084752395181642884783601132188.8522', '-1.40979193018313178037882986254896305053292420715962414580717033750847523951816428847927106148050152763588067854003979590093196811740063348516576326834773349074985817422918120884563092839744034656152588393166596173639186836459221162e+94'); - T('-396517877066594063060677506383119536072199294985913999200669.59905258559791428967320074613407023609823115620484119798490058332639', '17256241436287752756476467398810586324749967766162129140817034689021019365.9302352418415133924725065381333905577352346319497471430577092460069', '-1.725624143628814927435353399287364700225635088569820134011202060302022003552928782743942768214570728426746079383346578815458834104260982933329e+73'); - T('-0.0000000000000006853990620674437', '-11653311815829554561363099986.3318015068509425148506115888737905', '1.16533118158295545613630999863318015068509418294515495214300905e+28'); - T('-5723499348320995600234845601896898858316706679233.56868503185838526295669696287365718201389967796395316338461191538328404398163', '461418995024299794224540170173617.270340', '-5.72349934832099606165384062619669308285687685285083902503185838526295669696287365718201389967796395316338461191538328404398163e+48'); - T('-0.0000000000000101517398894041224975316', '30047274158786647140078597868700853194123877763708264122482641575288270215565704601867490408221403474129054083514278658302219', '-3.00472741587866471400785978687008531941238777637082641224826415752882702155657046018674904082214034741290540835142786583022190000000000000101517398894041224975316e+124'); - T('-618567708703808887087390708806987', '-0.0015997812131968024699920112', '-6.185677087038088870873907088069869984002187868031975300079888e+32'); - T('34635015.52962864534284905231551787970767779289829087969225962977505217622119009888696504123088304563966631377931959000', '65036143001432807857013922660931089988524905416395272216298294489190408991210531327960173961048126960813108032096.485609144979688026094', '-6.503614300143280785701392266093108998852490541639527221629829448919040899121053132796017396104812696081307339708095598049963683897377848212029232220710170912030774037022494782377880990111303495876911695436033368622068041e+112'); - T('0.00000545779896722128', '75.894260707608627618281140481123324654999311980', '-75.89425524980966039700114048112332465499931198'); - T('-25447415.284973', '-0.0000000000000007754252238300503245755256660265406480381126460350812317568910629452911860373986555887795038942931814558679883067258919646131547862678299152', '-25447415.2849729999999992245747761699496754244743339734593519618873539649187682431089370547088139626013444112204961057068185441320116932741080353868452137321700848'); - T('-0.001075197560340105849714564474713709665034764454198356529111553747592026589852279831398339755093155322360635646225772353512853661478291013155199651968', '-0.00020617706103921965422517798875780714829530744843284313739680833048742357175207280371959115967601565', '-0.000869020499300886195489386485955902516739457005765513391714745417104603018100207027678748595417139672360635646225772353512853661478291013155199651968'); - T('-116637095502756610832663.0820790492356971286520755389123518333397635564353785857413082439598928', '1333189986026163882571196149909544777510081036404785123663838051125806079402280.39239585', '-1.3331899860261638825711961499095447775100810364047851237804751466285626902349434744748992356971286520755389123518333397635564353785857413082439598928e+78'); - T('7263206331639956734034338857142.2483005287993760580093202768989231263952047014145290402299553496171737360348099042', '930482152339662', '7.2632063316399558035521865174802483005287993760580093202768989231263952047014145290402299553496171737360348099042e+30'); - T('17084', '-9268741940429543879.25831048455993577463', '9268741940429560963.25831048455993577463'); - T('14223703.25068993203', '-337469327718493482402348015976790428942562', '3.3746932771849348240234801597679044316626525068993203e+41'); - T('3449947415518601.021', '967.0', '3449947415517634.021'); - T('-0.00000001950779962429255860674296257770624055952071967804562271969656131634150181850350309', '0.0000000008381662576798806596505469925921281919496917780384885026235741778910169613942109570101961434140020955862069084082830238300586284', '-2.03459658819724392663935095702983687514704114560841112223201354942325187798977140470101961434140020955862069084082830238300586284e-8'); - T('-150022.550348329907362699413739505634058542', '184370701561492907256959190967889134766063594155869181275951.2113720965937284915580147334609117040504470778054254305016213147502', '-1.843707015614929072569591909678891347660635941558691814259737617204265010911909717542390949702460504470778054254305016213147502e+59'); - T('0.000003620654231399775474818103408872051818273000913919007645231626869893019046908014555613658', '0.68604446001049997675748396664984795835553205960118589677575278373113193853373621258895597212465646303658933', '-0.68604083935626857698200914854643908630371378660027197776810755210426204551468930457440035846665646303658933'); - T('65368354350846125525740295379107787645781698927087650085.02206520625654961397', '-0.0000000674457908966051035778148933613021264363709209074145574586026651385058583013192568248506496786927539106989162985222622021758286164962220899099', '6.53683543508461255257402953791077876457816989270876500850220652737023405105751035778148933613021264363709209074145574586026651385058583013192568248506496786927539106989162985222622021758286164962220899099e+55'); - T('-8920208628291.3008573264554796861275279433556810380829567356987428005869325303620053400734014217983382463883243235802100794975758488782407', '-513373869275942293084285976984505491137681087793006719363115134289902581030528408559950531152647492241975261279494', '5.133738692759422930842859769845054911376810877930067193631151342899025810305284085599505311526474922330550526512026991426735445203138724720566443189619170432643012571994130674696379946599265985782016617536116756764197899205024241511217593e+113'); - T('-0.00000000000183230276994692835786255816165075667312', '-229380247132858507707379441535866.9842134679934568352180933906622411983573128385632545016159055477', '2.293802471328585077073794415358669842134679916245324481464623043786401956620818901345016159055477e+32'); - T('-287936424370618182.780178943170029610095984105232897190551066507742776730608050074096160389428747382606461428337968', '-0.0000000000000553002065739653836900325094668610744480924050098363944976572396316708026350418744470424301014068736481205320698956807538835', '-287936424370618182.7801789431699743098894101398492071580415996466683286382030402377016627321891157118038263864635209575698985931263518794679301043192461165'); - T('-22.334064568139055296413453550456558402422719815', '-5916832358056988948884.3608360136502313', '5.916832358056988948862026771445511176003586546449543441597577280185e+21'); - T('39536714308273957618181661117092495089825904732491104299979330463137078095213622807057621623.41662', '589200756584346355393503066.219095388726950444141250942', '3.9536714308273957618181661117092495089825904732491104299979330462547877338629276451664118557197524611273049555858749058e+91'); - T('3332373913416111574992795772547417643215092643096621602439954355776074197.0830941294911902023033935298448733337875606874978778273299805496488198', '-376783721571530269384664901.84367020991', '3.3323739134161115749927957725474176432150926434734053240114846251607390989267643394011902023033935298448733337875606874978778273299805496488198e+72'); - T('344530122785201375772271590504206290220784446141965110231600995362970158247376180772409197123197131294077.186098277324338477562529348577734786615', '-6800118879080455193015443336230714183574736068660393152304.8553', '3.44530122785201375772271590504206290220784446148765229110681450555985601583606894955983933191857524446382041398277324338477562529348577734786615e+104'); - T('-3163.9', '542978947164157706891911715882635312937995954746776936', '-5.429789471641577068919117158826353129379959547467800999e+53'); - T('-0.0105476924518869569128457836748478061179109848158054941752355692339310906027532526097315426003502305592037541108758447196738444856373715790727005274', '-6071446248.8516018389629874549426069280533669184418994141964930724996411053034540030731460065', '6071446248.8410541465111004980297611443785191123239884293806875783244055360695229124703927538902684573996497694407962458891241552803261555143626284209272994726'); - T('7010541707164752', '193282362072373636518312100314810747000413165206769770654226368116684704540011812177387120657825195495894912200085910730717115', '-1.93282362072373636518312100314810747000413165206769770654226368116684704540011812177387120657825195495894912193075369023552363e+125'); - T('-0.000000023007226851065128925630962810852833918316878559874', '-2227361414820256464065922780424658.1090', '2.227361414820256464065922780424658108999976992773148934871074369037189147166081683121440126e+33'); - T('-1299409497083890403177181021135821640390762146063059101862994.03242662743092991583924105899423080674085051582932994688405941727718256319443172611542', '15608748.5795516673514981732595600003601066848923630692039049676154725134079753969829680892279555729548167054550621674232927404', '-1.2994094970838904031771810211358216403907621460630591174717426119782947824280890988010593543374916332135850332349144995319306851579601773998153433755729548167054550621674232927404e+60'); - T('0.0010233218531674933882798080038538892677859219827', '0.00000000000000000045199509493736627851797824870803', '0.00102332185316749293628471306648761074980767327467'); - T('1948739934183785636586602970179911734844812119742663347882584684214752603558036589222.0466138568409029422628086739352361053669148', '1', '1.9487399341837856365866029701799117348448121197426633478825846842147526035580365892210466138568409029422628086739352361053669148e+84'); - T('-44988.17201344296154165057134154894617', '-974065266153241716711223.01990357382515241927388516358056793645871008786729345524788381378024038040395896194', '9.7406526615324171666623484789013086361076870254361463439793645871008786729345524788381378024038040395896194e+23'); - T('745292098682291838946082762537313754587386896855334901324378413687611576868785947032214747734817.29211388635775339523', '1603867082712698768798395795990225766099634680717512610131434577189024930073228282709539770294753232846533372678799230422356361956.600981654582985832103', '-1.603867082712698768798395795990225020807535998425673664048672039875270342686331427374638445916339545234956503892852198207608627139308867768225232436873e+129'); - T('631756437278888751214121898961751903012419248661678700380667.3292365506360170752783293706267811846643253079106924335724182257177006394590934297614', '2.5458577', '6.317564372788887512141218989617519030124192486616787003806647833788506360170752783293706267811846643253079106924335724182257177006394590934297614e+59'); - - T('1.28687824652704e-1', '-6.698774e-7', '0.128688494530104'); - T('1.96882453e+4', '-2.36884e+4', '43376.6453'); - T('4.808718317e+1', '-8.925037868396601e+10', '89250378732.05319317'); - T('4.46523409841128641e+17', '-1.95389255e+8', '446523410036517896'); - T('1.6093613199311543706483e+9', '-3.73783629619292e+10', '38987724281.8603543706483'); - T('7.725438045407340759132811929e+20', '2.138563034e+3', '772543804540734073774.7181589'); - T('-1.87913317632093687e+17', '-1.463e+3', '-187913317632092224'); - T('-4.050502080705989793958e+18', '-8.7328619183422188241e+8', '-4050502079832703602.12377811759'); - T('-1.487e+0', '-1.966e+1', '18.173'); - T('6.1045011712250705486e-8', '-4.629661371271963538730865e-17', '6.104501175854731919871963538730865e-8'); - T('8.04812092e+3', '2.72507554517550342397e-11', '8048.1209199999727492445482449657603'); - T('5.5494e+0', '9.98100066134314965301158e+17', '-998100066134314959.751758'); - T('-7.4960224131954428972698482953e+0', '-1.796223184996831375e+7', '17962224.3539459005545571027301517047'); - T('1e+0', '1.01572540062334032198739881e+12', '-1015725400622.34032198739881'); - T('-3.075828909877630559405653e+24', '-6.20852829406318715e+15', '-3.07582890366910226534246585e+24'); - T('-7.3885363256616208126763e+18', '-4.22e-11', '-7388536325661620812.6762999999578'); - T('1.3633033e+8', '1.098216485205929e-1', '136330329.8901783514794071'); - T('-2.199452313170283112273e+20', '-5.39263091194725e+13', '-219945177390719191754.8'); - T('-8.56e+2', '0e+0', '-856'); - T('1.2877828562642718847e+5', '4.31337491e+4', '85644.53652642718847'); - T('1.4061037483985e+10', '-6.6330709216531850592433e-6', '14061037483.9850066330709216531850592433'); - T('-8.4483135e-12', '-4.113751474103595929387e-2', '0.04113751473258764579387'); - T('-1.03739443149798e+6', '4.343428478300989093e+4', '-1080828.71628098989093'); - T('1e+0', '-1.263607183e+1', '13.63607183'); - T('-2.2320214496959336032e+19', '-1.634037313014e+12', '-22320212862922023018'); - T('7.10073836719e+5', '-1e+0', '710074.836719'); - T('-2.49072186445097e+13', '9e+0', '-24907218644518.7'); - T('-2.9e-20', '-2.15971658258839e+6', '2159716.582588389999999999971'); - T('2.963920096335082831168e+18', '2.2582253282839e+6', '2963920096332824605.8397161'); - T('-4.14586e+3', '-2.9154876269e+4', '25009.016269'); - T('-1.03004879281543026e+15', '-3.78177957668791144e+3', '-1030048792811648.48042331208856'); - T('-9e+0', '4.022232761275766154688145458e+1', '-49.22232761275766154688145458'); - T('1.86836560622539908029690893881e+22', '7.662554282002068984274562e-7', '1.86836560622539908029690893873337445717997931015725438e+22'); - T('3.97689874072e+11', '-3.5744e+3', '397689877646.4'); - T('0e+0', '5.0942844226755638584371e-20', '-5.0942844226755638584371e-20'); - T('-4.12770106201259e+14', '-5.0659330520967113815e+2', '-412770106200752.40669479032886185'); - T('0e+0', '-2.4438628e+7', '24438628'); - T('4.8284508891459500047917633538e+2', '1.0650081449195084887e+2', '376.34427442264415160917633538'); - T('3.0960998932675992e+13', '1.5217314605145612561e+19', '-15217283644146679885.008'); - T('-3.731852849155459781176419989e+27', '4.33183367677e+9', '-3.73185284915545978550825366577e+27'); - T('9.08814632201479508422122537138e+1', '4.73770550569e+2', '-382.8890873488520491577877462862'); - T('3.810846909868531e+7', '2.4444336909e+2', '38108224.65531622'); - T('-2.000986521711238411058857571e+5', '-7.048740793695688315e+18', '7048740793695488216.3478288761588941142429'); - T('2.09309765830355290819000023e-3', '5e+0', '-4.99790690234169644709180999977'); - T('7.70724770820309161581e-5', '2.533e-12', '0.0000770724745490309161581'); - T('2.53375068e+6', '4.00994583e+0', '2533746.67005417'); - T('2e+0', '-6.264387065771998085033e+17', '626438706577199810.5033'); - T('-1.2407705424252222353e+19', '1.8244036019e-1', '-12407705424252222353.18244036019'); - T('-1.799721324042e+12', '-1.3447368530231020851721e+12', '-454984471018.8979148279'); - T('-5.6651404522751594041444107472e+20', '-7.535689111154473052048e+13', '-566513969870624828869.71055424'); - T('3.769112233878e+8', '-1e-10', '376911223.3878000001'); - T('-1.839105258587571e+0', '1.20177991131103601214234e+23', '-1.20177991131103601214235839105258587571e+23'); - T('1.082600317037849190993749e+19', '1.4938307025455867644875688e-4', '10826003170378491909.93734061692974544132355124312'); - T('1.12e+1', '3e+0', '8.2'); - T('6.526872092482495666296825e+9', '4.8645966080716540006e-18', '6526872092.4824956662968249951354033919283459994'); - T('1.339857855971657033752952445e+27', '-4e+0', '1.339857855971657033752952449e+27'); - T('-2.419044558390159646056e-13', '-1.3079097339e+2', '130.7909733899997580955441609840353944'); - T('-7.1705677513767136563e-17', '-6.3081315e-10', '6.30813078294322486232863437e-10'); - T('-2.124781842799053e-2', '5.5030007661157553e+16', '-55030007661157553.02124781842799053'); - T('1.55629535242e+4', '-5.1428769625e-1', '15563.46781189625'); - T('1.01504354636013042e+15', '2.63791456408046734975e+15', '-1622871017720336.92975'); - T('-9.4294e+4', '1.8866986e+7', '-18961280'); - T('1.71775e+1', '-9.97178848809e+7', '99717902.0584'); - T('-6.51108703897071e-2', '2.0481127e+7', '-20481127.0651108703897071'); - T('2.5575417677e+10', '-9.875210228621188311e+18', '9875210254196605988'); - T('-1.515600255e+1', '1.78e+0', '-16.93600255'); - T('-4.934811484526990303505e+15', '3.903941767e-17', '-4934811484526990.30350500000000003903941767'); - T('2.660689025e+9', '1.210751379395e-18', '2660689024.999999999999999998789248620605'); - T('-1.3039e+3', '3.693e+0', '-1307.593'); - T('-8.150211374792494231850488e+10', '-2.4154e+4', '-81502089593.92494231850488'); - T('-7.04276965355095765787e+2', '5.12083556215696675027418e-3', '-704.28208619065792275375027418'); - T('4.560203906e+6', '6.662833107173476e+6', '-2102629.201173476'); - T('1.18219623035280292278e+16', '1.35881201163097673230180989e+16', '-1766157812781738.0952180989'); - T('1.01145921064769030827e+12', '1.0162177943917298766993291463e+4', '1011459200485.512364352701233006708537'); - T('4.478831496443e+12', '-3e+0', '4478831496446'); - T('-4.8033663475504622462769283e+6', '2.400585121791519891706e+17', '-240058512183955355.5181504622462769283'); - T('-1.197167677719e+4', '-9.5568526467142828986e+3', '-2414.8241304757171014'); - T('1.0454e+4', '-7.5783e-13', '10454.00000000000075783'); - T('1.497160982390283668405594719e+2', '3.01769088202242341433267860826e+29', '-3.017690882022423414332678606762839017609716331594405281e+29'); - T('-6.8836180118422e+2', '-4.8579187557539e+5', '485103.51377420578'); - T('-2.2015868446618e+0', '1.112092601534267192772461445e-1', '-2.3127961048152267192772461445'); - T('-1.72703850655851149109833572e+24', '0e+0', '-1.72703850655851149109833572e+24'); - T('-1.722156947575281448505e+21', '7.2324954621329520621898740974e+7', '-1.722156947575353773459621329520621898740974e+21'); - T('1.5403804214964843217980824e+9', '1.2891e+1', '1540380408.6054843217980824'); - T('-5.945326523e+4', '4.669485020980197203323689e+4', '-106148.11543980197203323689'); - T('5.55266637914837652416872269693e+21', '1.471120167304946e+14', '5.55266623203635979367412269693e+21'); - T('3.73778817609658865295139e+1', '-9.87441939032866e+6', '9874456.7682104209658865295139'); - T('5.1012538663005271824613969722e+22', '-1.50156e+0', '5.1012538663005271824615471282e+22'); - T('-2.058e+2', '2.8646830031089679744e+17', '-286468300310897003.24'); - T('-1.632e-16', '9.9938831828547468539e+19', '-99938831828547468539.0000000000000001632'); - T('3.74855475772666e+1', '4.636917906044210284685212e+14', '-463691790604383.5429209439334'); - T('-6.125e+1', '-1.01695009327434527205612623e+7', '10169439.6827434527205612623'); - T('-3.713055373107057485e+8', '-1.579459775785685628895042e+12', '1579088470248.374923146542'); - T('-4.973637071239865e+8', '9.700610204149955956e+18', '-9700610204647319663.1239865'); - T('0e+0', '-4.4905032171787016875848189267e+20', '449050321717870168758.48189267'); - T('-1.4666228937e+5', '4.268680884193908e-17', '-146662.28937000000000004268680884193908'); - T('5.70462240242e+5', '1.140990056118581205e+15', '-1140990055548118.964758'); - T('3.4806661e-11', '8.29856853e+2', '-829.856852999965193339'); - T('-9.086912118595249999201e+21', '3.898423213142569952135e+9', '-9.086912118599148422414142569952135e+21'); - T('-1.61819145378513602550953401e+8', '2.6469734905241672957e+10', '-26631554050.620186559550953401'); - T('1.8497588e+7', '3.133737672348e-9', '18497587.999999996866262327652'); - T('-6.21844625e+6', '6.448980631426448042e-2', '-6218446.31448980631426448042'); - T('2.0553505882011009665e+19', '6.92603e+4', '20553505882010940404.7'); - T('1.92248242840598741949091e+13', '1.339870445733828207038e+20', '-133987025348558536643.9258050909'); - T('4.7736392e-14', '-8.243397452128704948729866e+11', '824339745212.870494872986647736392'); - T('-1.7e+1', '-7.923074334739511792397e-16', '-16.9999999999999992076925665260488207603'); - T('4.9635811440987476026476e-17', '-1.466e-1', '0.146600000000000049635811440987476026476'); - T('2.512230419e+4', '2.5397165598196246028285880532e-1', '25122.05021834401803753971714119468'); - T('-1.11299e+2', '1.11035558611694808056e-18', '-111.29900000000000000111035558611694808056'); - T('2.026822870015760981220174257e-5', '-2.047169266002425550414624e-19', '0.0000202682287001578145291283428125550414624'); - T('-4.0648049768873318277e+6', '-3e+0', '-4064801.9768873318277'); - T('-2.588724223892656991e-16', '3.0098072257229e-6', '-0.0000030098072259817724223892656991'); - T('1.56373140247e+4', '-3.91671625230328e+8', '391687262.5443527'); - T('1.00341736976978e-7', '2.304833813547170392924601625e+22', '-2.3048338135471703929246016249899658263023022e+22'); - T('8.35221698180089026e-19', '-9.32578907000664374e+2', '932.578907000664374000835221698180089026'); - T('-1.08764251456624192e+8', '5.0280989399438845291162488994e+9', '-5136863191.4005087211162488994'); - T('2.46130217148349070169911254e+26', '-1.5624487714497915185829268064e-20', '2.46130217148349070169911254000000000000000000015624487714497915185829268064e+26'); - T('1.01340342215606347222e+6', '-9.22914210865038825420171003e-5', '1013403.4222483548933065038825420171003'); - T('-3.4384e+4', '2.364774267367323611e-9', '-34384.000000002364774267367323611'); - T('2.754440021463e+8', '-8.87772958126791e+2', '275444889.919258126791'); - T('7.866841036008389399178e+3', '2.250087110372669759e+8', '-225000844.196230967510600822'); - T('-1.048e+3', '2e+0', '-1050'); - T('1.51258199632721102661464e-18', '1.37889e+3', '-1378.88999999999999999848741800367278897338536'); - T('-1.247e+3', '-4.576980640479189083e+3', '3329.980640479189083'); - T('2.01135499e+5', '-2e+0', '201137.499'); - T('7.03046195059871843437588e+23', '-2.434388173985239e+12', '7.03046195062306231611573239e+23'); - T('-3.54e+2', '-2.0062114120746252479542e+4', '19708.114120746252479542'); - T('-1.703025e-18', '-3.4292979189222437121973e+21', '3.429297918922243712197299999999999999998296975e+21'); - T('4.87547962612395e+6', '-3.6652187394898226692963e+9', '3670094219.1159466192963'); - T('-2.0143114813870112462786921e-17', '3.767411e+0', '-3.767411000000000020143114813870112462786921'); - T('3.26586277019e+6', '-2.38239842063e+11', '238243107925.77019'); - T('6.097001595334722255599827169e+1', '-1.27e+1', '73.67001595334722255599827169'); - T('2.5862383503225371e+9', '-5.1214922610895542e-1', '2586238350.83468632610895542'); - T('2.231e+1', '2.117312218972605e+5', '-211708.9118972605'); - T('3.80021425650817317250555e+13', '-1.93695171769468e+11', '38195837736851.1997250555'); - T('-7.810946417020212022651917386e+18', '2.290482727614761942741662e+7', '-7810946417043116849.92806500542741662'); - T('3e+0', '-2.2205773655663464012097e-6', '3.0000022205773655663464012097'); - T('3.64246615622912558467016935e+26', '0e+0', '3.64246615622912558467016935e+26'); - T('3.77e+3', '-1e+0', '3771'); - T('-3.58605723986826101196397318e+26', '-1.485e+2', '-3.586057239868261011963971695e+26'); - T('-3e+0', '1.40899579022e+11', '-140899579025'); - T('-1.45909430175366456235718665e+19', '-3.4261617579351795158e+18', '-11164781259601466107.7718665'); - T('-2.348189590117898492617e+8', '2.878559430244312e+14', '-287856177843390.2117898492617'); - T('-9.7e+0', '2.690189646188e+1', '-36.60189646188'); - T('1.36455632e-1', '2.93006388540946905134174872e+13', '-29300638854094.5540577854872'); - T('4.048592176739e-20', '-6.005127e+2', '600.51270000000000000004048592176739'); - T('-2.566085007096806352945241e+6', '1.0191e-13', '-2566085.007096806353047151'); - T('-3.31696e+2', '6.3e+1', '-394.696'); - T('4.1079014482683004e+8', '6.4446707e+7', '346343437.82683004'); - T('-1.577640941527783e+9', '1.27337662718184094697659300437e-5', '-1577640941.5277957337662718184094697659300437'); - T('2.7420244617713377e+16', '-8.623235881e-16', '27420244617713377.0000000000000008623235881'); - T('2.13592440096179687295287e+23', '-5.24330594e+5', '2.13592440096179687819617594e+23'); - T('4.5966088142543734664499633e-4', '1.9622997228567688328e+13', '-19622997228567.68786833911857456265335500367'); - T('-2.003763953536177099e+9', '9.92e-20', '-2003763953.5361770990000000000992'); - T('1.549844513583e+5', '2.12886113900670758986381e+14', '-212886113745686.307628081'); - T('-5.035786855374e+12', '1.5195491474751e+13', '-20231278330125'); - T('-8.837922375208113241898942499e+23', '4.91312103789241e-17', '-8.837922375208113241898942499000000000000491312103789241e+23'); - T('5.28121115884713e+6', '9.35111e+2', '5280276.04784713'); - T('7.0534112016532323024600701578e+21', '2.158e+0', '7.0534112016532323024579121578e+21'); - T('-1.22304768148016734601138489e+20', '9.08133282381327051184228774e+26', '-9.08133404686095199200963375138489e+26'); - T('1.899e-6', '2.153419180764601e+10', '-21534191807.646008101'); - T('-5.650839046342472094e+5', '5.0808365974271307182e+8', '-508648743.6473473190294'); - T('-9.4e+1', '-2.6927013e+0', '-91.3072987'); - T('-6.571708892881e+12', '-8.545294322652905079217675482e+19', '85452936654820157911.17675482'); - T('-1.76782224366755e+10', '-4.13948649746403e+10', '23716642537.9648'); - T('-5.54107604714186288144437e+7', '-4.96270174556976430531733658389e+25', '4.96270174556976429977626053674813711855563e+25'); - T('-9.978651982580698767e+16', '-6.954508412732601e+0', '-99786519825806980.715491587267399'); - T('1.8693160127470428298008436e-4', '1.547218677067e+11', '-154721867706.69981306839872529571701991564'); - T('-1.38945385393184793207e+20', '1.37289934375618017208481128e+20', '-276235319768802810415.481128'); - T('-2.03189937609562003767063412e-3', '1.50517775495e+11', '-150517775495.00203189937609562003767063412'); - T('5.37526674392168e+11', '6.281346735299e+9', '531245327656.869'); - T('-3.1901487e+4', '-2.47278901189761333644390687e-17', '-31901.4869999999999999752721098810238666355609313'); - T('1.911067e+3', '1.63809954792658e+10', '-16380993568.1988'); - T('-6.262e+0', '-4.732755159790421866759181099e+12', '4732755159784.159866759181099'); - T('1.9922595737406200707054959707e+19', '1.5757171e+0', '19922595737406200705.479242607'); - T('-4.20463196e+6', '-5.39927e+4', '-4150639.26'); - T('5.698457e+5', '0e+0', '569845.7'); - T('-2.3755793e+6', '-3.03634360026652225878481594e-5', '-2375579.2999696365639973347774121518406'); - T('-1.2540612364355e+13', '-9.7056758273427691e-14', '-12540612364354.999999999999902943241726572309'); - T('7e+0', '-2.1217135735760987306431493773e+10', '21217135742.760987306431493773'); - T('-1.878187232e+1', '1e+0', '-19.78187232'); - T('4.083686618644527491e+14', '-1.0207e-8', '408368661864452.749100010207'); - T('1.936437398920283252217215e+7', '-1.426953028e+1', '19364388.25873311252217215'); - T('-5.36e+1', '-3.270440850977315671331954027e+27', '3.2704408509773156713319539734e+27'); - T('-5e+0', '3.9771e+4', '-39776'); - T('-1.41165283690117849025039415809e+15', '9.2653033582808e+1', '-1411652836901271.14328397696609'); - T('1e+0', '5.853518072e+8', '-585351806.2'); - T('9.28866302211484528e-16', '3.42924e+3', '-3429.239999999999999071133697788515472'); - T('1.5141918664046020576449895893e+12', '-1.61e+2', '1514191866565.6020576449895893'); - T('1.38289322288900523715e+1', '7.080258718068754274828878e+11', '-708025871793.0464952539977476285'); - T('4.021120497e+9', '-3.58323864641440176097e+12', '3587259766911.40176097'); - T('3.9109896247281e+5', '-7.7768225519466054995224860986e+28', '7.776822551946605499522525208496247281e+28'); - T('5.52e-6', '1.34849494404812613034319555618e+29', '-1.3484949440481261303431955561799999448e+29'); - T('2.0537e-20', '-6.4758411334071e+7', '64758411.334071000000000000020537'); - T('-3.1417778482733028111928e-15', '3.3188180849003762977741480641e+28', '-3.31881808490037629777414806410000000000000031417778482733028111928e+28'); - T('-8.744874784408647631e+0', '2.135742081446470378868598e+24', '-2.135742081446470378868606744874784408647631e+24'); - T('4.84800483e+2', '3.91e+1', '445.700483'); - T('-3.7016741e-12', '-4.1497617308e-1', '0.4149761730762983259'); - T('-6e+0', '-6.8805897379338e+13', '68805897379332'); - T('6.250477943675354e+3', '-2e+0', '6252.477943675354'); - T('6.3749589779023191251153515e+1', '-5.20173903691687372543e+3', '5265.488626695896916681153515'); - T('-6.6824849945959e+13', '3.901733743171141119056850874e+27', '-3.901733743171207943906796833e+27'); - T('-2.0817240249744817154064994e+21', '5.985e+1', '-2.0817240249744817154663494e+21'); - T('-2.9323306082438653e-1', '-4.051822836352475688965270021e+15', '4051822836352475.39573220919661347'); - T('1.41083866e+7', '1.222938e+6', '12885448.6'); - T('-2.685513393949e+6', '3.6665913622890279695898073188e+8', '-369344649.62285179695898073188'); - T('2.1722453e+3', '5.27433180346789078179e+12', '-5274331801295.64548179'); - T('1.82945984e+1', '2.84080338471485422824162e+7', '-28408015.5525501422824162'); - T('3.8282192270741792760092388e-2', '-1.034837658465e+2', '103.522048038770741792760092388'); - T('5.90588e+0', '3.041191e+2', '-298.21322'); - T('-3e+0', '-2.22554559e+2', '219.554559'); - T('-1.58686397805828293e-1', '-2.50678032123148961445e+20', '250678032123148961444.841313602194171707'); - T('6.9731426202279009749874e+16', '-6.8033025527322349e+3', '69731426202285813.0524267322349'); - T('-3.5288065255382459e+8', '4.319711887733e-5', '-352880652.55386778711887733'); - T('-3.861521213463773165e+10', '2.1786e+4', '-38615233920.63773165'); - T('1.712e+2', '1.34100827765345675353094e-1', '171.065899172234654324646906'); - T('5.78089955830190857610305894e+1', '6.36549849502761e+4', '-63597.1759546930809142389694106'); - T('-2.044680654381125e+11', '-1.96641728023668398742736257646e+29', '1.966417280236683985382681922078875e+29'); - T('-2.9076e+1', '-2.7871249e+7', '27871219.924'); - T('1.0798349049680377701191303e+1', '-1.28969281e+7', '12896938.898349049680377701191303'); - T('-5.84e+0', '4.096887717702998692e-5', '-5.84004096887717702998692'); - T('-4.444975675033721e-1', '-3.1452254562577476e+0', '2.7007278887543755'); - T('1.183597e-16', '-8.2003e+2', '820.0300000000000001183597'); - T('4.08955925538021395e-9', '0e+0', '4.08955925538021395e-9'); - T('-8.518844894710593442e+7', '8.021e+1', '-85188529.15710593442'); - T('2.68232609980658991729575880176e+0', '0e+0', '2.68232609980658991729575880176'); - T('4.4477770435926438470217122e+8', '5.12429681263e+7', '393534736.23296438470217122'); - T('1.6841448787702267666418174e-17', '-1.2182119751289e+1', '12.182119751289000016841448787702267666418174'); - T('-2.2729761e+5', '-4.46452153e+0', '-227293.14547847'); - T('1.0246412734413008e-11', '4.66232758476e-16', '1.0245946501654532e-11'); - T('-2.68821719678017623378e-19', '3.39024822961193e-2', '-0.033902482296119300268821719678017623378'); - T('1.853752578428008999076e+6', '2.3969844952707427e-18', '1853752.5784280089990759976030155047292573'); - T('7.61e+2', '2.4131847562072898e+13', '-24131847561311.898'); - T('3.109821644875197306e-16', '1.606639839e-19', '3.108215005036197306e-16'); - T('-6.1011e+3', '3.906986073489232797471e+9', '-3906992174.589232797471'); - T('9e+0', '6.09778743145589590112609339e-2', '8.9390221256854410409887390661'); - T('-2.33021e-12', '-5.805032816747e+12', '5805032816746.99999999999766979'); - T('5.785870917e+2', '2.8947e+4', '-28368.4129083'); - T('4.9138011093118555140264508438e+1', '-2.688188222207754803e-17', '49.13801109311855516714639066007754803'); - T('6.86328788e-20', '-1.0903e-4', '0.0001090300000000000686328788'); - T('-1.5222667065790299e-10', '-5.30045567313202177385949422e+8', '530045567.31320217723372275134209701'); - T('2.102091e+0', '-2.69376496330958751240504762e+26', '2.69376496330958751240504764102091e+26'); - T('3.944367498734539718e+1', '-1.46339226240020591588421e+15', '1463392262400245.35955919734539718'); - T('5.7233801647184e+10', '-6.5e+0', '57233801653.684'); - T('-3.803540018773522987078e-15', '-4.8838714337004857737078494e+4', '48838.714337004857733274953981226477012922'); - T('2.4743428039e+9', '-7.150348863482e+2', '2474343518.9348863482'); - T('-4.72e+0', '-2.74711687758923547052379498e+0', '-1.97288312241076452947620502'); - T('-7.65e+1', '-1.3497715e+5', '134900.65'); - T('-1.302284775e+7', '-5.259e-14', '-13022847.74999999999994741'); - T('-7.9577e+4', '-2e+0', '-79575'); - T('6.36947759756484191820773706e+10', '-5.37489619395631884896608e+10', '117443737915.2116076717381706'); - T('2.8137158805278468362788e-15', '1.45644e+3', '-1456.4399999999999971862841194721531637212'); - T('2.214e+0', '-7.164325571694427826653861996e+15', '7164325571694430.040653861996'); - T('-3.80573224245e+11', '6.30327705991065191e+18', '-6303277440483876155'); - T('-1.3156481902267089e+3', '-3.987e+3', '2671.3518097732911'); - T('-2.473947689670568922810605185e+3', '-5.9864037611282e+7', '59861563.663592329431077189394815'); - T('1.1001731e+7', '-9.2848140928651653621884e+0', '11001740.2848140928651653621884'); - T('-9.8044989570620753370567373e+7', '-1.17e+1', '-98044977.870620753370567373'); - T('-3.7000443862e+1', '-1.9192804071866287509957721855e+12', '1919280407149.6283071337721855'); - T('-9.5557565112682694e+1', '-1.139475090734929511787e+21', '1.139475090734929511691442434887317306e+21'); - T('-9.36659e+4', '-2.2488368141052655e-10', '-93665.89999999977511631858947345'); - T('0e+0', '-1.96659668503522757503562e+15', '1966596685035227.57503562'); - T('-2.46588281577379345e+9', '-1.52735567584678502576392632012e+9', '-938527139.92700842423607367988'); - T('1.116693556411266004e+13', '8.181470064283092308441666e+0', '11166935564104.478569935716907691558334'); - T('1.42867858509369e+11', '6.36335708310839028e+14', '-636192840452329.659'); - T('9.46345944e-20', '4.09009002345797e+0', '-4.0900900234579699999053654056'); - T('0e+0', '-5.752093e-16', '5.752093e-16'); - T('0e+0', '-7e+0', '7'); - T('6.671e+1', '-5.22802396973925929e+6', '5228090.67973925929'); - T('3.80635453384970742358475002e+21', '1.6514766472479832640394018164e+1', '3.806354533849707423568235253527520167359605981836e+21'); - T('3.909e+1', '-3.0330657786e-7', '39.09000030330657786'); - T('-4.177266320643e+2', '4.36481347232e+5', '-436899.0738640643'); - T('-1.93e-3', '4.44897e+4', '-44489.70193'); - T('-8.493203254439607467238e+13', '3.780960689802534388741349e+4', '-84932032582205.68157040534388741349'); - T('-8.62e+2', '-1.21242637514496e+9', '1212425513.14496'); - T('-2.034125439802066e+1', '1.041223699e+0', '-21.38247809702066'); - T('-1.8756615731747938145167676e+9', '-5.9079882582580697796179e+17', '590798823950145404.7869961854832324'); - T('-7.68665407063362e-12', '2.68347734852e+3', '-2683.47734852000768665407063362'); - T('-2.5e-9', '1.0094051112011317e+2', '-100.94051112261317'); - T('-2.273663293572256347483e+16', '-2.0246e-14', '-22736632935722563.474829999999979754'); - T('-4.8958e+1', '-1.18656711e+8', '118656662.042'); - T('-1.1921912260356353311433328e+25', '-6.7981248360658545755979997e+4', '-1.1921912260356353311365346751639341454244020003e+25'); - T('-6.849149772761089815191e+18', '5.24560558802513e+14', '-6849674333319892328.191'); - T('2.99306425443292501e+17', '2.8e+1', '299306425443292473'); - T('2.5471860004e+9', '-4.98536550694988897317422126e-12', '2547186000.40000000000498536550694988897317422126'); - T('-1e+0', '2.54e+1', '-26.4'); - T('1.814452890048444838634591e+17', '3.50190331311817e+6', '181445289001342580.55034093'); - T('-3.740775006407299187613971e+21', '-6.411975563570869469e+1', '-3.74077500640729918754985124436429130531e+21'); - T('7.68508730852e+3', '-6e+0', '7691.08730852'); - T('-4.97430855e+5', '-1.74704104775e+3', '-495683.81395225'); - T('-2.25986972303734e-18', '-3.563603e+5', '356360.29999999999999999774013027696266'); - T('7.300705399e+0', '-2.68400174895358537123619e+2', '275.700880294358537123619'); - T('-7.4583833263680087e+11', '9.53468014076291e+9', '-755373012777.56378'); - T('8.9104e+4', '-6.4430091336482802107567729773e+3', '95547.0091336482802107567729773'); - T('2.34280052861242466e-1', '0e+0', '0.234280052861242466'); - T('7.269051098e+8', '-3.4459676199e+4', '726939569.476199'); - T('-3.211997876e+3', '-9.38450118638793709019229e+14', '938450118635581.711143229'); - T('7.7969891679461230711262e+22', '7.69e+0', '7.796989167946123071125431e+22'); - T('1.097e+0', '-4.6249580639699552947992543e-20', '1.097000000000000000046249580639699552947992543'); - T('-6e+0', '-1.456695321775709567231919891e+20', '145669532177570956717.1919891'); - T('3.8834077979e+6', '-1.95675144721034531902e-6', '3883407.79790195675144721034531902'); - T('-1.6658487619383064e+2', '3.100133628146717733340869e+7', '-31001502.86634337116404869'); - T('-1.4005754211993309661536063e-14', '-8.84275e+4', '88427.499999999999985994245788006690338463937'); - T('-1.3403661333569183042528493e+25', '-2.16701427914547231e+16', '-1.34036613118990402510737699e+25'); - T('2.6104592333650733834147661141e+8', '5.5581589300093249719048e+21', '-5.55815893000906392598146349266165852338859e+21'); - T('5.315518589225007574739350338e-12', '5.299157680175e-14', '5.262527012423257574739350338e-12'); - T('-2.17607896075487810392093064e+0', '-4.372277792215178893233e+16', '43722777922151786.75625103924512189607906936'); - T('-1.1360680787648690671166707184e+0', '6.64626014583885222275e+5', '-664627.1506519639871440671166707184'); - T('-4.322698247e+9', '7.5666e+0', '-4322698254.5666'); - T('7.329582e+2', '1.1e+0', '731.8582'); - T('4.70556124361e+0', '1.9128794148091e+7', '-19128789.44252975639'); - T('-1.664718e-15', '-2e+0', '1.999999999999998335282'); - T('-2.3441520698096713166992980212e+28', '-2.45124495841653227069e-11', '-2.34415206980967131669929802119999999999754875504158346772931e+28'); - T('1.08447643843924835e+14', '4.629055171533282139112789e-9', '108447643843924.834999995370944828466717860887211'); - T('-2.56258604619015315966e+3', '-2.033704783173576458375994e+19', '20337047831735762021.17389380984684034'); - T('-5.86438097577803988896572e-1', '3.9380601967502959955e+11', '-393806019675.616037647577803988896572'); - T('0e+0', '3.50862e+6', '-3508620'); - T('5.16326e-10', '-4.653750284661785074950340187e-4', '0.0004653755447921785074950340187'); - T('2.448434809857e+3', '9.861166640454948250573581e+13', '-98611666402101.04769587881'); - T('-1.377207013806422897185e+8', '2.93868995004852419030725393e+26', '-2.938689950048524191684460943806422897185e+26'); - T('-1.21087028473668e-15', '-1.79392219447388957457557920332e+16', '17939221944738895.74575579203319878912971526332'); - T('7.1194812461460298471228e+22', '-3.11548104971e+6', '7.119481246146030158670904971e+22'); - T('-7.9973363706063079e+1', '-4.18e+1', '-38.173363706063079'); - T('-3.4658e+3', '-1.50428792912533108828785e+14', '150428792909067.308828785'); - T('-5.43e+1', '1.08e+1', '-65.1'); - T('-3.958612981624798584713e+21', '1.905323655927183e+11', '-3.9586129818153309503057183e+21'); - T('-6.05e+0', '7.113109139228e+12', '-7113109139234.05'); - T('-4.668265354520068e+15', '-3.4465582208309591e-8', '-4668265354520067.999999965534417791690409'); - T('-2.771846365e+5', '-2.5244589e+4', '-251940.0475'); - T('1.11530656435193641253e+18', '-3e+0', '1115306564351936415.53'); - T('-1.05624e+6', '-3.9048304233341053516492008879e-20', '-1056239.999999999999999999960951695766658946483507991121'); - T('1.0127e+0', '-3.135359936645349731157475112e-13', '1.0127000000003135359936645349731157475112'); - T('2.2181732450662751e+7', '4.985e+2', '22181233.950662751'); - T('-1.458218486287662421604e+16', '8.6772071348685837314014362447e+3', '-14582184862885301.4231748685837314014362447'); - T('-5.2949825314874e+13', '-1.34587e+5', '-52949825180287'); - T('2.7853732e+3', '-2.8992603343141478e+3', '5684.6335343141478'); - T('1.0093686351168e-16', '2e+0', '-1.99999999999999989906313648832'); - T('-2.69782596422e+5', '9.281e+1', '-269875.406422'); - T('-8.4892243734618044988822527303e+28', '-1.093399419157518929e+15', '-8.4892243734616951589403369784071e+28'); - T('-2e+0', '-9.8226109e+7', '98226107'); - T('-7.91355730171712559764046812857e+29', '3.738879817007584795015696e-16', '-7.913557301717125597640468128570000000000000003738879817007584795015696e+29'); - T('-7.20113991704e+6', '3.766628446721078627562e+2', '-7201516.5798846721078627562'); - T('8.09195711497727858010623376e+2', '-2.299005549455463322634739396e-2', '809.21870155322241264384972339396'); - T('7.1e-16', '1.34172774450117955431064868e+26', '-1.3417277445011795543106486799999999999999929e+26'); - T('2.479213128129e+12', '-4.3266851790425848916602875204e+19', '43266854269638977045.602875204'); - T('-5.167953131767e-17', '1.089636317069144688e+0', '-1.08963631706914473967953131767'); - T('-1.043599533780483997e+8', '-8.4604453857096e+13', '84604349497142.6219516003'); - T('-9.86113e-3', '5.25012650031541380643072e+14', '-525012650031541.390504202'); - T('-4.607800742854309e-16', '6.629214050478863773e+7', '-66292140.5047886377300004607800742854309'); - T('-7.0726129234663936285e+0', '5.1813062685268139626360921992e+0', '-12.2539191919932075911360921992'); - T('-9.59114856809630214548e-16', '8.19552038958943023267524e+23', '-8.19552038958943023267524000000000000000959114856809630214548e+23'); - T('-6.1160705538571976049e+19', '-1.5e-14', '-61160705538571976048.999999999999985'); - T('-5.20340090331936061e-19', '-6.8907407213853599371e+12', '6890740721385.359937099999999999479659909668063939'); - T('3.266e-6', '-1.178352424764155283425353405e+3', '1178.352428030155283425353405'); - T('-4.88224490036702e+6', '2.067e+2', '-4882451.60036702'); - T('1.01802113642363671778919360155e+10', '-6.088e-5', '10180211364.2364280578919360155'); - T('3.210380386593524862226e+16', '2.8740812364241127382e+17', '-255304319776476025.19774'); - T('-1.465851233021161325672097e+24', '1.2772576319289909484700907499e+28', '-1.2774042170522930646026579596e+28'); - T('-3.7269879590593e-13', '-1.89917687e+2', '189.91768699999962730120409407'); - T('-3.54751669e-4', '1.507681824540198379007387131e-20', '-0.00035475166900000001507681824540198379007387131'); - T('8.6e+0', '-1.718010447132363e+14', '171801044713244.9'); - T('-1.523861475830427411616557095e-1', '-1.4263256386185266172813e-16', '-0.15238614758304259852909184764733827187'); - T('-3.0492e+4', '-3.19247471953735496043e+16', '31924747195343057.6043'); - T('1.64e+1', '-2.300091101743972533e+2', '246.4091101743972533'); - T('-8.4166616e-14', '-1.08365043381515665671178336e+3', '1083.65043381515657254516736'); - T('2.834233434423066e-3', '1.5147922394810634456e+19', '-15147922394810634455.997165766565576934'); - T('9.809683833546843226149927904e+7', '-7.04744e+1', '98096908.80986843226149927904'); - T('-2.78659733581828216291e-6', '3e+0', '-3.00000278659733581828216291'); - T('1.88550609258935040490277736481e+21', '-2.0139e+4', '1.88550609258935042504177736481e+21'); - T('-2.961956555914393326e+9', '-1.736319970053323220680261e+17', '173631994043375766.153632774'); - T('1.1511839112e+10', '6.1439877305045904627491e+21', '-6.1439877304930786236371e+21'); - T('-2.6e+0', '-2.49048e-15', '-2.59999999999999750952'); - T('-5.48e+0', '2.4e+0', '-7.88'); - T('-8.281668732400133e-7', '3.4802271248601324e+13', '-34802271248601.3240008281668732400133'); - T('5.4692910497907010278816248427e-19', '-3.995182600549255e+6', '3995182.60054925500000000054692910497907010278816248427'); - T('-4e+0', '-2.6796842621783387684139e-8', '-3.999999973203157378216612315861'); - T('-1.2503809566311e-14', '-4.194893531803037022861e+13', '41948935318030.370228609999987496190433689'); - T('8.20101101549315479737983e+23', '-6.21887189572000039915995509e+29', '6.21888009673101589231475246983e+29'); - T('-8.49630557904938058714202e+2', '-9.656431846752105646935065749e+12', '9656431845902.475089030127690285798'); - T('4.709804775734875967339134e-13', '-5.238417348338395e+4', '52384.1734833839504709804775734875967339134'); - T('3.215642768985439973e+18', '-6.47876e+2', '3215642768985440620.876'); - T('1.057e+3', '5.4e-14', '1056.999999999999946'); - T('-1.27406478713275073021e+15', '-4.95098112170149342507601184272e+29', '4.9509811217014806844281405152126979e+29'); - T('-2.47741050648e-6', '2.867648067351452617036e+9', '-2867648067.35145509444650648'); - T('9.683330132790537859047707237e+27', '1.4e-13', '9.68333013279053785904770723699999999999986e+27'); - T('1.8191377569793603e+1', '-2.22262592888890757e+16', '22226259288889093.891377569793603'); - T('-2.647537436000328921472e+19', '1.73756170770793102269901e-4', '-26475374360003289214.720173756170770793102269901'); - T('3.9166725e+1', '-3e+0', '42.166725'); - T('-6.896e+2', '-2.4697e+3', '1780.1'); - T('3.049991467813178e-17', '9.921359715790652629887e-6', '-0.00000992135971576015271520886822'); - T('0e+0', '-1.014702489558798e+11', '101470248955.8798'); - T('3.63e-1', '-9.504114905372600685531012901e+7', '95041149.41672600685531012901'); - T('1.43e+0', '1.032179739e+4', '-10320.36739'); - T('6.002271250385225215266404e-20', '1.198673608430859644679301e+24', '-1.19867360843085964467930099999999999999999993997728749614774784733596e+24'); - T('-8.165072327377418555e+1', '1.15946801209912e+14', '-115946801209993.65072327377418555'); - T('-2.855963912187238e+15', '-2.34813677339491877e-20', '-2855963912187237.9999999999999999999765186322660508123'); - T('4.7139819451281756523160792425e+8', '1.711815969456703e+12', '-1711344571262.19018243476839207575'); - T('3.51917952e+0', '-1.9090638600782859881987727e-9', '3.5191795219090638600782859881987727'); - T('-1.101278668075627123510003e+3', '3.23115293065e-14', '-1101.2786680756271558215323065'); - T('3.1909723769e+4', '-1.7298288176e+4', '49208.011945'); - T('-9.30120609629212846377709e-16', '8.055569687891446e+0', '-8.055569687891446930120609629212846377709'); - T('-7.474064e+1', '-4.271718880894195123e-6', '-74.740635728281119105804877'); - T('-1.621114105166716832660982e+9', '-7.814354217e+7', '-1542970562.996716832660982'); - T('-3.338943287283e+12', '1.245463771082e+7', '-3338955741920.71082'); - T('2.1732853867827159984017e-12', '-5.54912539966658289e+7', '55491253.9966658289021732853867827159984017'); - T('-2.878598492994e+9', '-5.57847e+3', '-2878592914.524'); - T('-1.12e+3', '3.5382811477716371e-9', '-1120.0000000035382811477716371'); - T('3.6386011498e-2', '-5.6384769154648814041207571e-18', '0.0363860114980000056384769154648814041207571'); - T('-1.890178944623951306311749095e+16', '-1.01868789996777383e+16', '-8714910446561774.76311749095'); - T('8.76907e+2', '-3.0262476312e+6', '3027124.5382'); - T('-4.2809356122824992293797e-6', '-9.5432581914885e-3', '0.0095389772558762175007706203'); - T('2.613634e+6', '0e+0', '2613634'); - T('-2.31839833569e-6', '1.324426936e-19', '-0.0000023183983356901324426936'); - T('-1.10399938484009e+1', '1.85186916549461617452156387962e+2', '-196.226910397862517452156387962'); - T('-2.75009407098166054593418e+23', '-4.97e+1', '-2.750094070981660545933683e+23'); - T('6.61314773892e+8', '1.16976318594169000300606933902e+3', '661313604.12881405830999699393066098'); - T('-1.65790748026635119525e+19', '1.13625143013338763e-18', '-16579074802663511952.50000000000000000113625143013338763'); - T('1.63212008e+0', '-6.5032932718736077532455e+5', '650330.95930744077532455'); - T('-8.590257420137321035e+2', '-1.4660197718643934781936e+1', '-844.365544295088168718064'); - T('-3.6e+0', '-6.453e-9', '-3.599999993547'); - T('6.875e+2', '2.496601459911533840095e-1', '687.2503398540088466159905'); - T('-3.4091253800019e+10', '5.06219863404e+11', '-540311117204.019'); - T('2.387640687847751e-9', '-7.507348694854873e+1', '75.073486950936370687847751'); - T('2.358337603147636672593e+20', '-5.29206788288316214838405e+3', '235833760314763672551.36788288316214838405'); - T('8.4460769897709104577e+2', '-1.15924234770358e+7', '11593268.08473477709104577'); - T('-2.8e+0', '-1.5677449559023e+12', '1567744955899.5'); - T('-3.826911067801817992605e+13', '-2.1058817772376e-17', '-38269110678018.179926049999999978941182227624'); - T('-1.69888440840703020274433621314e+3', '1.062612513780848e+14', '-106261251379783.68440840703020274433621314'); - T('1.648578064349849e+13', '-1.21870444531163389687261e+5', '16485780765368.934531163389687261'); - T('2.800963824434122005e+17', '7.48550615366110606948944e+18', '-7205409771217693868.98944'); - T('-1.204700704881831924047852e+4', '4.1180094e+8', '-411812987.00704881831924047852'); - T('-6.25e+0', '-2.76872444100293e-3', '-6.24723127555899707'); - T('-1.017210130108320604980095901e+6', '4.176006246137492e+5', '-1434810.754722069804980095901'); - T('4.1443694206107e+13', '6.12963489e+6', '41443688076472.11'); - T('1.9e-17', '-7.420644757780278e+11', '742064475778.027800000000000019'); - T('8.1905699267317e+2', '-4.97714998177821e+13', '49771499818601.15699267317'); - T('-9.30893198737591725124852e-6', '4.7833151233848e+8', '-478331512.33848930893198737591725124852'); - T('-1.81958867206789289436468142851e+23', '-3.097e-2', '-1.81958867206789289436468111881e+23'); - T('-1.444361606243966e+3', '-3.956649026995563806968275e+24', '3.956649026995563806966830638393756034e+24'); - T('-5e+0', '1.12518838778955247e+6', '-1125193.38778955247'); - T('1.63068443484005465679998399962e+10', '5.74911714044959689e+11', '-558604869696.5591424320001600038'); - T('2.76768430312670672e+11', '-3.509356457052e+6', '276771939669.127724'); - T('-4.7752e+2', '-1.66411766445e-11', '-477.5199999999833588233555'); - T('2.92062139592881e+4', '7.5417235168554886240845487e+25', '-7.54172351685548862408162807860407119e+25'); - T('-3.44544937179490458706e+21', '-6.4975e-20', '-3.445449371794904587059999999999999999999935025e+21'); - T('1.67e+0', '4.0077e+3', '-4006.03'); - T('1.6243825105e+10', '-1.0098e-8', '16243825105.000000010098'); - T('-5.9619584679887e-7', '9.66507394754761256582e+0', '-9.66507454374345936469'); - T('1.80193e+0', '5.50148888976681094630325187e+26', '-5.5014888897668109463032518519807e+26'); - T('1.160439596351493417e+12', '0e+0', '1160439596351.493417'); - T('4.0943062e+3', '-1.663541448179706e+1', '4110.94161448179706'); - T('-1e+0', '-3.35949335221661870210955798738e+27', '3.35949335221661870210955798638e+27'); - T('9.26520428366e-14', '2e+0', '-1.9999999999999073479571634'); - T('-1.824416684e+5', '3.45961e+4', '-217037.7684'); - T('1.13072307e-4', '-3.34360798215590565e+15', '3343607982155905.650113072307'); - T('-2.17632297389949094797657e+23', '1.19e+0', '-2.1763229738994909479765819e+23'); - T('-1.573702e+6', '-1.25528655078116284599e+4', '-1561149.1344921883715401'); - T('6.64914341532954197034212171e+13', '-2e+0', '66491434153297.4197034212171'); - T('4.83091120908653225429424458e+26', '-1.187019616662875213797e+16', '4.8309112092052342159605321013797e+26'); - T('-2.2287372197e+10', '-6.1022242482e+5', '-22286761974.57518'); - T('9.86041489707e+10', '6.466463546e+2', '98604148324.0536454'); - T('1.576597918713765858286e+19', '5.733014936878637e-11', '15765979187137658582.85999999994266985063121363'); - T('-1.66885015827009e+9', '-1.0080560673990663464633e+2', '-1668850057.46448326009336535367'); - T('9.464436245828899351275554369e+26', '1.096e+3', '9.464436245828899351275543409e+26'); - T('2.443594208008465567246e+15', '-4.554332290621012278987216e+6', '2443594212562797.857867012278987216'); - T('5.633400747825031776e+9', '3.7814892610756903304424493614e+28', '-3.7814892610756903298791092866174968224e+28'); - T('4.58055e-16', '-2e+1', '20.000000000000000458055'); - T('5.8468767369534498129149668101e+21', '-6.216283e+1', '5.8468767369534498129771296401e+21'); - T('2.821e+1', '-9.2972318416976897120959e-7', '28.21000092972318416976897120959'); - T('1.1716e+4', '-3.117484326301445402577599e+5', '323464.4326301445402577599'); - T('3.99770350169601009505e+9', '1.24807913187467085161e+12', '-1244081428372.97484151495'); - T('-4.33494867e+1', '1.86891793238107724209212e+23', '-1.868917932381077242092553494867e+23'); - T('-1.49454787799250031e-14', '3.530543e+4', '-35305.4300000000000149454787799250031'); - T('4.17405829e+7', '-1.101329481059979917182595274247e+30', '1.1013294810599799171826370148299e+30'); - T('-8.233e-4', '-4.3503021e-3', '0.0035270021'); - T('1.54205169188e+11', '-1.184e+0', '154205169189.184'); - T('8.47800873e+2', '-1.782e+2', '1026.000873'); - T('-6.3788050181391747328e-14', '-1.37296254009260334434e+20', '137296254009260334433.999999999999936211949818608252672'); - T('-2.3187272390455607805797367e-15', '3.03283266313882322447430852e-7', '-3.032832686326095614929916325797367e-7'); - T('4.3489421504381358410994764309e-17', '4.84138351196e-18', '3.8648037992421358410994764309e-17'); - T('-4.5630374165368095e+10', '8.62482790372860322202392e+23', '-8.62482790372905952576557368095e+23'); - T('-1.25355946295e+11', '-3.311539940149343915869e+1', '-125355946261.88460059850656084131'); - T('-4.7415711963385615707e+16', '-1e+0', '-47415711963385614.707'); - T('4.458641e-16', '-3.8021524504141994601653134206e+4', '38021.524504141994602098998306'); - T('3.8057808011e-1', '9.59582e-8', '0.3805779841518'); - T('2.340942415924217e-10', '-3e+0', '3.0000000002340942415924217'); - T('0e+0', '-1.3748e+4', '13748'); - T('-3.634008711669113e-7', '-5.865299497e+9', '5865299496.9999996365991288330887'); - T('1.39690641e+3', '7.12382644256362362011e-19', '1396.906409999999999999287617355743637637989'); - T('-6.52e-7', '-5.4715e+4', '54714.999999348'); - T('6.56e+0', '-8.1504302966189587144e+16', '81504302966189593.704'); - T('4.2093554363975272071207e-17', '1.223e+3', '-1222.999999999999999957906445636024727928793'); - T('-3.739622748318e+4', '-2.01200115180528303803076e+9', '2011963755.57779985803076'); - T('0e+0', '8.987465875243974e+15', '-8987465875243974'); - T('-6.4436e-16', '-1.9979e-1', '0.19978999999999935564'); - T('-1.01268732158001903838205690742e+4', '-4.7518687460936e+6', '4741741.8728777998096161794309258'); - T('0e+0', '-1.3030144588487978649e+10', '13030144588.487978649'); - T('-3.9e+0', '5.24670125e+8', '-524670128.9'); - T('3.8313670568933092257440033774e+17', '-5.741523524290048567e+2', '383136705689331496.7267527667448567'); - T('-2.56218040669566121e+12', '1.83637202203675e+8', '-2562364043897.864885'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js deleted file mode 100644 index 1f33a49..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/mod.js +++ /dev/null @@ -1,1905 +0,0 @@ -var count = (function mod(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - n = 'null', - N = 'NaN', - I = 'Infinity'; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(a, b, expected) { - assert(String(expected), String(new BigNumber(a).mod(new BigNumber(b)))); - } - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - log('\n Testing mod...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : false, - RANGE : 1E9, - EXPONENTIAL_AT : [-7, 21] - }); - - T(1, 0, N); - T(1, -0, N); - T(-1, 0, N); - T(-1, -0, N); - T(1, N, N); - T(-1, N, N); - T(1, I, 1); - T(1, -I, 1); - T(-1, I, -1); - T(-1, -I, -1); - assert(false, isMinusZero(new BigNumber(0).mod(1))); - assert(false, isMinusZero(new BigNumber(0).mod(-1))); - assert(true, isMinusZero(new BigNumber(-0).mod(1))); - assert(true, isMinusZero(new BigNumber(-0).mod(-1))); - T(0, 0, N); - T(0, -0, N); - T(-0, 0, N); - T(-0, -0, N); - T(0, N, N); - T(-0, N, N); - assert(false, isMinusZero(new BigNumber(0).mod(I))); - assert(false, isMinusZero(new BigNumber(0).mod(-I))); - assert(true, isMinusZero(new BigNumber(-0).mod(I))); - assert(true, isMinusZero(new BigNumber(-0).mod(-I))); - T(N, 1, N); - T(N, -1, N); - T(N, 0, N); - T(N, -0, N); - T(N, N, N); - T(N, I, N); - T(N, -I, N); - T(I, 1, N); - T(I, -1, N); - T(-I, 1, N); - T(-I, -1, N); - T(I, 0, N); - T(I, -0, N); - T(-I, 0, N); - T(-I, -0, N); - T(I, N, N); - T(-I, N, N); - T(I, I, N); - T(I, -I, N); - T(-I, I, N); - T(-I, -I, N); - - T(1, '0', N); - assert(false, isMinusZero(new BigNumber(1).mod(1))); - T(1, '-45', '1'); - T(1, '22', '1'); - T(1, 0144, '1'); - T(1, '0144', '1'); - T(1, '6.1915', '1'); - T(1, '-1.02', '1'); - T(1, '-1.02', '1'); - T(1, 2, '1'); - T(1, -2, '1'); - T(-1, 2, '-1'); - T(-1, -2, '-1'); - - // Due to Javascript's internal representation of 0.1 the next 4 results - // match BigDecimal's remainder method, but not Javascript's % operator: - // - // 1 % -0.1 // 0.09999999999999995 - // new BigNumber(1).mod(-0.1) // '0' - // - // 0.1.toFixed(18) // '0.100000000000000006' - // new BigNumber(1).mod('-0.100000000000000006') // '0.099999999999999946' - - T( 1, -0.1, '0'); // JS: 0.09999999999999995 - T(-1, -0.1, '0'); // JS: -0.09999999999999995 - T( 2, -0.1, '0'); // JS: 0.0999999999999999 - T(-2, -0.1, '0'); // JS: -0.0999999999999999 - - T( 2, -0.5, '0'); // JS: 0 - T(-2, -0.5, '0'); // JS: 0 - T(999.99, -0.99, '0.09'); - T(-999.99, -0.99, '-0.09'); - T(999.99, '3.01', '0.67'); - T(-999.99, '3.01', '-0.67'); - T(1, '0.09', '0.01'); - assert(false, isMinusZero(new BigNumber(1).mod('-0.0001'))); - assert(true, isMinusZero(new BigNumber(-0).mod(1))); - assert(true, isMinusZero(new BigNumber(-0).mod(0.1))); - assert(true, isMinusZero(new BigNumber('-0').mod('-1'))); - assert(true, isMinusZero(new BigNumber('-0').mod(Infinity))); - T(1, '8e5', '1'); - T(1, '9E12', '1'); - assert(false, isMinusZero(new BigNumber(1).mod('1e-14'))); - T(1, '3.345E-9', '6.1e-10'); - T(1, '-345.43e+4', '1'); - T(1, '-94.12E+0', '1'); - T(1, '', N); - T(1, ' ', N); - T(1, '\t\t', N); - T(1, 'ertgrt546', N); - T(1, 'qweqwdewee', N); - T(1, true, N); - T(1, false, N); - T(1, 'e 4.3', N); - T(1, '4 .3', N); - T(1, '4.0 01e', N); - T(1, ' 4.001', '1'); - T(1, '4.001 ', '1'); - T(1, ' 4.001 ', '1'); - T(1, ' 4.001', '1'); - T(1, ' 4.0 01', N); - T(1, '4. 001', N); - T(1, '4. 001 ', N); - T(1, ' 4.001e ', N); - T(1, ' 4 .001 e ', N); - T(1, undefined, N); - T(1, null, N); - T(1, Number.POSITIVE_INFINITY, '1'); - T(1, Number.NEGATIVE_INFINITY, '1'); - T(1, new Date(2012, 11, 4), N); - T(1, new Object(), N); - T(1, function () {}, N); - T('0', 0, N); - T(0, '+0', N); - T('0', '0', N); - T(3, -0, N); - T(9.654, 0, N); - T(0, '0.001', '0'); - T(0, '111.1111111110000', '0'); - T(N, '0', N); - T(-1, 1, '0'); - T(-0.01, 0.01, '0'); - T(54, -54, '0'); - T(9.99, '-9.99', '0'); - T('0.0000023432495704937', '-0.0000023432495704937', '0'); - T(NaN, NaN, N); - T(NaN, N, N); - T(N, NaN, N); - T(N, 4, N); - T(N, '4534534.45435435', N); - T(N, 99999.999, N); - T(Infinity, '354.345341', N); - T(3, -I, '3'); - T(-Infinity, -I, N); - T(-I, -Infinity, N); - T(I, '-999e999', N); - T('1.21123e43', -I, '1.21123e+43'); - T('-999.0', I, '-999'); - T('657.342e-45', -I, '6.57342e-43'); - T(I, 123, N); - T(-0, I, '0'); - T(100, 100, '0'); - T('10 ', 4, '2'); - T('03.333', -4, '3.333'); - T(43534.5435, '0.054645', '0.019545'); - T('99999', '1', '0'); - T('3e', 8, N); - T('-3..0', 13, N); - T('0 0', -0.4, N); - T(' +3e0', 4, '3'); - T(9.9806, '+ 1', N); - T(' +2 0', '1e1', N); - T('e3', 4, N); - T(' ', 0, N); - T(323, null, N); - T(undefined, undefined, N); - T('undefined', undefined, N); - T(null, null, N); - - T('-0.111', '21', '-0.111'); - T('0.000621', '-1', '0.000621'); - T('6.41', '11', '6.41'); - T('21', '11', '10'); - T('1531', '-11', '2'); - T('21', '-0.0161', '0.0056'); - T('-41', '-21', '-20'); - T('31', '-1', '0'); - T('31', '2.21', '0.06'); - T('-842658.56', '-19.52', '-19.2'); - T('-34.871', '-7325043345', '-34.871'); - T('78691958', '49006.018397', '37298.472815'); - T('-11618324684', '621.3', '-394.1'); - T('0', '69.07362125', '0'); - T('0.27474921216', '0.00000000002460017868', '2.224673016e-11'); - T('0', '59137483772', '0'); - T('-0.000000000000000000014634493', '-4.2', '-1.4634493e-20'); - T('-5.470', '-1.8989', '-1.6722'); - T('-95519.5319132', '4.1', '-1.8319132'); - T('43.257', '-4704608304', '43.257'); - T('-32128.403', '68263.11', '-32128.403'); - T('85.4005884', '-0.000000000000000010953667', '4.132633e-18'); - T('3197.909', '-10738864.39', '3197.909'); - T('1.03436722695', '2.6', '1.03436722695'); - T('-4', '-56.36464628', '-4'); - T('92.0618', '-454.866', '92.0618'); - T('-6.147123243', '-53259.9', '-6.147123243'); - T('-3', '-0.4911', '-0.0534'); - T('0', '-12.3', '0'); - T('-0.001713264153', '0.00000000000000000001843605', '-1.36779e-20'); - T('2', '-9325.1665961', '2'); - T('42016273.6500', '-122.861496017', '99.24210634'); - T('35.9', '3867744417', '35.9'); - T('0.000000000000000479760268839', '-209975.082', '4.79760268839e-16'); - T('0.0000000000000000000428713848', '3', '4.28713848e-20'); - T('0.000000000000000104698757876', '-15902.7654', '1.04698757876e-16'); - T('-4', '3124473.52104', '-4'); - T('-9.58', '1.00', '-0.58'); - T('79', '1', '0'); - T('0', '-0.0000000000013618', '0'); - T('1.55', '-31', '1.55'); - T('-2.6', '-13.58133', '-2.6'); - T('0', '90950', '0'); - T('-46.1', '61.8', '-46.1'); - T('-0.00000000000023461', '-0.00000000134', '-2.3461e-13'); - T('-9761.89778', '4645363921.75', '-9761.89778'); - T('0.000000000000000090372203', '0.00000322253', '9.0372203e-17'); - T('-23560577.226', '-0.5304109598', '-0.3270269352'); - T('-11752006.868', '0.003773', '-0.002016'); - T('0.000000036524', '-1.2', '3.6524e-8'); - T('4713.9562', '0.000000000000000000561', '2.23e-19'); - T('-351870798', '28.8', '-1.2'); - T('-4.6', '-0.00000000058', '-4.4e-10'); - T('-21863.82', '4214.9937962', '-788.851019'); - T('-30.221041721', '20401.1', '-30.221041721'); - T('-2.35', '3', '-2.35'); - T('64462', '90.840', '56.44'); - T('46', '433563.55477', '46'); - T('47852501568', '-147426331397', '47852501568'); - T('0', '3812504.1', '0'); - T('0.000000000000142963770', '1210345642.9', '1.4296377e-13'); - T('-0.0024002323743', '-0.000000000000000013220659', '-3.535752e-18'); - T('225.773', '66128.74787', '225.773'); - T('-158.4165', '12.78', '-5.0565'); - T('-21042099137', '10.935', '-4.565'); - T('32791.03', '411590460', '32791.03'); - T('-1984910.86246', '-153845.7', '-138762.46246'); - T('75010460639.6', '-0.00000000005103249', '2.835305e-11'); - T('-0.00000000000000025595509', '25.023', '-2.5595509e-16'); - T('-103052291', '-350.4', '-1.4'); - T('0.00000000000000015307870924', '-0.0000035499', '1.5307870924e-16'); - T('4402230', '122.112', '92.4'); - T('-3073677', '532.95653726', '-116.64962158'); - T('-0.026619162', '-0.00000000000000010', '0'); - T('0.000065666975666', '-6.558', '0.000065666975666'); - T('-3.3', '0.000000000033194405282', '-1.2721464422e-11'); - T('94101.0', '-810285.8180', '94101'); - T('229868', '9654.7078', '7809.7206'); - T('0.000000001926', '-0.00000000000000000005918', '2.562e-20'); - T('67', '0.00000006016496', '2.00248e-8'); - T('0.0000000000000000000832655', '-327907966408', '8.32655e-20'); - T('-1534', '-293318.339', '-1534'); - T('0.00000000000000000511522652', '-1145.46888006', '5.11522652e-18'); - T('0.00000000465574', '707.0', '4.65574e-9'); - T('0.230910067', '-1712.01', '0.230910067'); - T('-31874.7', '-2617976302', '-31874.7'); - T('22.8', '3819', '22.8'); - T('-0.0000015419', '329', '-0.0000015419'); - T('-9176.3441', '741523.991', '-9176.3441'); - T('-5.1103', '-25460.136', '-5.1103'); - T('15232730973', '-2.28', '1.32'); - T('0.081', '-1111.578', '0.081'); - T('3.1', '-42.207', '3.1'); - T('-0.000000000000000433', '0.00000000000000000254528412564', '-3.016986412e-19'); - T('-83943.1', '-4303134750', '-83943.1'); - T('19.825539', '4432543.44', '19.825539'); - T('-2416', '8097.16337', '-2416'); - T('-3.836', '0.00000823841385579', '-0.00000502522549283'); - T('2290356160', '-965232.20', '825381.6'); - T('1.12', '-35806.5278', '1.12'); - T('0', '-0.0000144726783', '0'); - T('-1571629111.33', '6.4736', '-3.8676'); - T('-0.0053778', '1.1', '-0.0053778'); - T('-0.0000013840', '-12.1', '-0.000001384'); - T('-22.9310218204', '-1.6843970', '-1.0338608204'); - T('-71.300', '-25.868806', '-19.562388'); - T('0.02847', '-63397392.02', '0.02847'); - T('-0.0000000000000331096', '0.00000183271', '-3.31096e-14'); - T('-27821115', '-34.83906', '-0.40734'); - T('0.000000000000436294954175', '-2261.01154', '4.36294954175e-13'); - T('45.86441', '-530611.936214', '45.86441'); - T('-1999679428', '0.00000000000000000002297558409', '-5.828173e-23'); - T('-105924.2800', '-426.10612', '-249.96224'); - T('754.9', '-1', '0.9'); - T('0.000000238266109662', '29355.83', '2.38266109662e-7'); - T('25.3', '-0.00000000000000086417416', '5.8408656e-16'); - T('-1261.3', '39.0', '-13.3'); - T('1.017', '-153', '1.017'); - T('27.690', '-21507592', '27.69'); - T('-2623.072516', '3.06', '-0.652516'); - T('91', '13034138.923', '91'); - T('-5212749.21', '-0.00000000000000000001986395', '-2.1827e-21'); - T('117.4212', '-29.978', '27.4872'); - T('-47179.732', '-77504621680', '-47179.732'); - T('0', '-3.7234', '0'); - T('443705716.830', '3024.9575', '1925.7725'); - T('-0.000000000000000000017191196518', '-14.725715414', '-1.7191196518e-20'); - T('30.4', '399719414108', '30.4'); - T('16145.97', '-48642', '16145.97'); - T('2765166', '-18.6825', '6.54'); - T('37.63', '-1284.342', '37.63'); - T('-0.0000000000000000000177845858', '0.0000005860954024', '-1.77845858e-20'); - T('-2.3', '2582.24565000', '-2.3'); - T('16.7', '-0.0000000017369', '1.362e-9'); - T('170180366706', '4626.181', '2388.659'); - T('-1404312.6', '-17000256053', '-1404312.6'); - T('-7603530366', '316.496322753', '-236.943012537'); - T('8', '1.59866', '0.0067'); - T('-4.963', '8.73', '-4.963'); - T('25644160.8', '-5842.06855', '3321.93405'); - T('-4.31384', '-220.2', '-4.31384'); - T('186.9', '-48200.85', '186.9'); - T('5', '57089.99', '5'); - T('-244278052979', '-2', '-1'); - T('8', '-5763.4', '8'); - T('29549', '-1', '0'); - T('-2.0', '-0.00000000000000446955628', '-3.76062704e-15'); - T('737330.9', '-746370915533', '737330.9'); - T('-0.000882183174', '-16.5', '-0.000882183174'); - T('-45', '0.000000001106035', '-7.5858e-10'); - T('-594.06', '-29.85802821', '-26.75746401'); - T('-27.648237', '-1047.5249', '-27.648237'); - T('2', '-739163.624', '2'); - T('544827.1330', '54848981.1', '544827.133'); - T('1', '0.00000000000076553', '2.9959e-13'); - T('-10.89', '0.000000000000000000047', '-5e-21'); - T('-3052.938', '9327.5819201', '-3052.938'); - T('-24.1', '127758.429', '-24.1'); - T('3.9', '12173.38', '3.9'); - T('0.0000000000000213926861909', '-77.4', '2.13926861909e-14'); - T('-90173804.260', '-5062619.06909', '-4109280.08547'); - T('637', '43943.2610', '637'); - T('14867.1', '894449', '14867.1'); - T('7.3', '-1.1', '0.7'); - T('2894844.4', '-1', '0.4'); - T('-0.00000000000196', '-2.6741', '-1.96e-12'); - T('0.00000000000000071433493', '5.9227', '7.1433493e-16'); - T('69', '-7204969', '69'); - T('-12468163', '-10022891.867', '-2445271.133'); - T('45469.1932906', '-3095367650', '45469.1932906'); - T('73072906.39', '-112013211', '73072906.39'); - T('1.4', '972.159255713', '1.4'); - T('66924.3855375', '19.93', '19.3755375'); - T('26.4256214076', '11.4775634275', '3.4704945526'); - T('23362.0174956', '-0.0000000001748', '1.536e-10'); - T('18276818006', '-5.74', '1.1'); - T('-8319.8', '3', '-0.8'); - T('-7.7413714358', '43763934316.0', '-7.7413714358'); - T('-688566579', '-1.83', '-0.3'); - T('29854', '-268509731.22', '29854'); - T('-194.15246', '-3.2255572', '-0.619028'); - T('2.0186177', '-326915', '2.0186177'); - T('-4', '1259', '-4'); - T('3.56', '-0.000000000000000000515993', '1.2338e-19'); - T('0.000001783', '-16426085', '0.000001783'); - T('-1766987819', '-87.259', '-49.72'); - T('-17.1', '0.00000000000000021840564', '-5.750892e-17'); - T('-8589.659', '0.000000000000000505', '-3.75e-16'); - T('-65891.7', '-38663.83', '-27227.87'); - T('-1.0', '0.00000000000000003836', '-1.78e-17'); - T('-33378.26', '-1226528.13', '-33378.26'); - T('2', '492342441', '2'); - T('1274', '-3092459411.0', '1274'); - T('0.2631770', '-493249535.4', '0.263177'); - T('-0.00000000000000000141', '4201192116', '-1.41e-18'); - T('-574.29154', '133427.3', '-574.29154'); - T('104617.3', '293188753.50', '104617.3'); - T('0', '38.96345', '0'); - T('-0.0000017289693288', '-5.4', '-0.0000017289693288'); - T('0', '4', '0'); - T('9.65', '1.2', '0.05'); - T('0.000000000017', '-50377365', '1.7e-11'); - T('137.3064', '0.0000001012', '7.04e-8'); - T('-9.89405', '29.2', '-9.89405'); - T('3.23', '-3048751.09', '3.23'); - T('87020568364', '-1', '0'); - T('-3658', '-0.4067222', '-0.3472554'); - T('0.0000000000483229749', '-508858', '4.83229749e-11'); - T('3', '-0.000000000000000006525172012', '6.0850742e-19'); - T('-52.63', '-373.710', '-52.63'); - T('-6.49915814', '352.2', '-6.49915814'); - T('0', '-44190.198', '0'); - T('0.00000000000000003763584929', '6', '3.763584929e-17'); - T('1.299983', '194.7', '1.299983'); - T('1', '9.52', '1'); - T('-86603.9', '446867516', '-86603.9'); - T('-1482885.420', '-0.0000000018878840', '-9.643e-10'); - T('-170.531717', '-633436587.6', '-170.531717'); - T('15.36378', '6540.267', '15.36378'); - T('-20570.61', '18.955913858', '-3.44346407'); - T('77', '0.000000000000027', '2.3e-14'); - T('0.000000001687849', '-0.0131699248663', '1.687849e-9'); - T('-0.000000000000026', '3291407.1', '-2.6e-14'); - T('-290.613', '0.00000000000000000008353794', '-6.386436e-20'); - T('200', '66.97', '66.06'); - T('2.2', '-43.41589', '2.2'); - T('98201.177964', '0.007000', '0.004964'); - T('35.453991547', '128.68861', '35.453991547'); - T('5.27', '1', '0.27'); - T('-1', '0.000119683476689', '-0.000044552263405'); - T('-34.0', '3', '-1'); - T('3378', '-44180', '3378'); - T('15', '-4', '3'); - T('0.0000004190944243', '37285824.4', '4.190944243e-7'); - T('-298.4', '506466', '-298.4'); - T('-0.00000010893', '-0.000426882829396', '-1.0893e-7'); - T('-1.9756065817', '941.5', '-1.9756065817'); - T('-1026297.2', '-205657.802', '-203665.992'); - T('2', '0.0000000005621541447', '3.513430991e-10'); - T('-7951901.67', '-0.0000000000055383', '-2.3814e-12'); - T('9', '0.000000000015125851830', '7.24233339e-12'); - T('72.245762', '-39.70217', '32.543592'); - T('6.62321', '-912632', '6.62321'); - T('617021', '-42.5970821', '2.2657815'); - T('1469815.28770', '537.217915', '524.290175'); - T('345897.6', '-0.00000000000108024', '9.7032e-13'); - T('0', '1.8688906295', '0'); - T('164', '-82114.2', '164'); - T('57.84537', '-1.4', '0.44537'); - T('114.340500', '6333334050', '114.3405'); - T('4.80', '-6077773.6', '4.8'); - T('162', '-37.75886044', '10.96455824'); - T('0.000000016367092', '1', '1.6367092e-8'); - T('148.2', '-46', '10.2'); - T('1.5768318844', '-7512089036.8', '1.5768318844'); - T('-0.0000000000000014460', '0.0011257005', '-1.446e-15'); - T('64.079', '-141', '64.079'); - T('-0.0582', '-13.35353476', '-0.0582'); - T('-1.0007', '63155.153933', '-1.0007'); - T('-623313173.6', '0.0000000081031', '-2.4548e-9'); - T('-36.9', '-1', '-0.9'); - T('2.0857', '0.000000000000000000205859744928', '1.887979864e-19'); - T('0.0000000494417', '492420240', '4.94417e-8'); - T('0.000000000000012194', '0.000000000000000013778591965', '1.372470294e-17'); - T('-16179.166', '16.4610327', '-14.4318886'); - T('3.24', '55986', '3.24'); - T('-61938', '47825328585', '-61938'); - T('4.36', '-1', '0.36'); - T('-9857364.3', '-1', '-0.3'); - T('9943.75', '3.5', '0.25'); - T('151.4907', '-1', '0.4907'); - T('0.000000000113985670', '-2286508', '1.1398567e-10'); - T('-1468', '-12915320.7', '-1468'); - T('46.543901', '0.00000014040913', '3.32077e-8'); - T('3', '190.34681', '3'); - T('-468.5022', '-0.00000000309208106131', '-1.13251725725e-9'); - T('-0.00000000000153707', '-112649.31435', '-1.53707e-12'); - T('-1.5', '0.000000067829063910', '-6.729086517e-8'); - T('42031.2', '-1.165644', '0.408648'); - T('-137623012.4', '-71.9609', '-21.9379'); - T('-278354', '8', '-2'); - T('5370.3', '71543859', '5370.3'); - T('-0.2469826911', '-0.0000000000008289323096', '-3.584481336e-13'); - T('338.68861185', '0.000000000000371927032', '2.00995384e-13'); - T('-0.00000000144', '115767.5757', '-1.44e-9'); - T('-3183918.6386', '-980.559', '-43.5656'); - T('-0.000000000004661097', '-0.051176618', '-4.661097e-12'); - T('-1', '948.171', '-1'); - T('1057394189', '62.751', '54.866'); - T('167.9', '0.00000000000009753', '8.45e-15'); - T('-12.172', '800.4476', '-12.172'); - T('-1.4', '-139187231194', '-1.4'); - T('359356.2', '-0.006806', '0.005734'); - T('4744567.6711', '-1.74', '0.0511'); - T('-0.0000000000234390', '-75.75283631', '-2.3439e-11'); - T('-6557078727.02', '-0.000000000000000015', '-5e-18'); - T('-1.33', '-5.111037', '-1.33'); - T('-431.277', '-1', '-0.277'); - T('0.0000000000000000000697336', '-8212.9015367', '6.97336e-20'); - T('3370.2674507', '445.572089', '251.2628277'); - T('-2.33567', '-0.0000000104784', '-8.888e-9'); - T('0.00000983659', '83423921', '0.00000983659'); - T('-51.2', '-0.0027394686', '-0.0020713346'); - T('0.000000000819617035421', '0.000000011', '8.19617035421e-10'); - T('0.00079279091535', '7', '0.00079279091535'); - T('-0.000000000095324834', '28091.00', '-9.5324834e-11'); - T('-0.00000000000000015', '23.52', '-1.5e-16'); - T('0.1438', '1035688.4', '0.1438'); - T('16693', '-1', '0'); - T('-781.09402123', '6.9', '-1.39402123'); - T('1', '20.70', '1'); - T('-3', '0.000006782445', '-0.00000249249'); - T('0.00000000000000000022', '-54710642.596', '2.2e-19'); - T('-590.69625205', '26.40', '-9.89625205'); - T('10', '-5.67', '4.33'); - T('-7', '-0.00000000000643634802', '-3.80362768e-12'); - T('-9680099.05', '-62.737684457', '-50.764391642'); - T('-1.5', '9914.9781', '-1.5'); - T('-1', '0.0000000507688288763', '-3.15199093625e-8'); - T('-0.000000000032713211391', '-0.000000046529', '-3.2713211391e-11'); - T('5.40', '1612427.39748', '5.4'); - T('0', '-0.0000000000000000000146', '0'); - T('-0.000000000000000000817527', '-52.0', '-8.17527e-19'); - T('1053329.8', '-120573.937', '88738.304'); - T('0.0000000000713', '-100743.840', '7.13e-11'); - T('8219', '-7505759130.86', '8219'); - T('16655.7', '243', '131.7'); - T('259.650', '278.73', '259.65'); - T('-284.091', '-1', '-0.091'); - T('0.1250', '-23713.35', '0.125'); - T('0.00000000490018764513', '-4.41', '4.90018764513e-9'); - T('-584.70403', '11076992', '-584.70403'); - T('-221.643', '-30.5', '-8.143'); - T('-9.69', '1177241', '-9.69'); - T('-4.97845868064', '-1.3178692059', '-1.02485106294'); - T('-1.04328912629', '-12.828540', '-1.04328912629'); - T('26', '-4.91596', '1.4202'); - T('94.686', '7.5851', '3.6648'); - T('0', '-0.000000000000000363', '0'); - T('-1.431', '65.06874', '-1.431'); - T('-878.898828', '-5.21', '-3.618828'); - T('-0.00000000000000014146660', '1.05112178985', '-1.414666e-16'); - T('0', '360.6112165', '0'); - T('4.464476', '0.00016302503', '0.00003555345'); - T('1145096', '-217.15', '64.05'); - T('29.46', '104.40', '29.46'); - T('841.82', '-2171922.59229', '841.82'); - T('46', '1', '0'); - T('22829.8889', '-1578709411', '22829.8889'); - T('-0.00374341104', '1.2', '-0.00374341104'); - T('410', '7', '4'); - T('0.076125848849', '1.103', '0.076125848849'); - T('0.000001844875808', '0.000000000000020813', '2.0037e-14'); - T('6.685', '0.003905472818', '0.002736008402'); - T('41011740.6', '908.670191', '728.869597'); - T('-152.527', '-1', '-0.527'); - T('12815.035', '-1497.81264', '832.53388'); - T('-0.000000000000004048729', '0.00000000126', '-4.048729e-15'); - T('-19949.700625', '-314.64', '-127.380625'); - T('-2.4', '569419658.2', '-2.4'); - T('0.00000000000000597954708', '4', '5.97954708e-15'); - T('-17.0', '1.58', '-1.2'); - T('22811600498', '2', '0'); - T('3.1328', '-119317.4', '3.1328'); - T('2.26039694', '1567.2', '2.26039694'); - T('-0.0004559', '-1.59', '-0.0004559'); - T('-0.000000000000165', '3', '-1.65e-13'); - T('-215.9051', '14846316.4792', '-215.9051'); - T('-1', '6004363.2', '-1'); - T('173513829480', '-117.2937046', '37.6296904'); - T('2269413223', '44.831', '39.204'); - T('-1411953.506', '0.000003338150524', '-0.000001742597716'); - T('-26.596', '-7', '-5.596'); - T('-0.00000000000010245141710', '6652789979', '-1.024514171e-13'); - T('2.042', '24673', '2.042'); - T('-2.71', '68.05392544', '-2.71'); - T('-3', '220821.80', '-3'); - T('116.073', '-0.0000000000024392780', '2.029598e-12'); - T('-0.00000006283674', '0.0000000000000079', '-5.7e-15'); - T('-3', '-7', '-3'); - T('-0.0000000000000005058', '-1.5', '-5.058e-16'); - T('-683', '1013123.5', '-683'); - T('-6', '16985130.432', '-6'); - T('-76481.64', '-0.0002575', '-0.0001725'); - T('1610.8849133', '-2.02567', '0.4772633'); - T('-19.3482', '-1.5', '-1.3482'); - T('779.8394', '390457.98231', '779.8394'); - T('0.00000012', '-8855.3', '1.2e-7'); - T('27226552.2', '2168.811', '1467.717'); - T('6.353167529', '1283573.56', '6.353167529'); - T('2', '26.2339535', '2'); - T('-34', '5319.486', '-34'); - T('0', '3123027047', '0'); - T('1', '27465.6301', '1'); - T('-1.5', '-41136.47', '-1.5'); - T('0.00000000000000000001311857', '-23', '1.311857e-20'); - T('14831.7', '4.41', '0.87'); - T('2953.07357', '34.48', '22.27357'); - T('-1.5', '-2465544', '-1.5'); - T('-376', '-244.16', '-131.84'); - T('-1799906518', '219', '-49'); - T('16431536', '987.209', '429.404'); - T('-0.0000000000000000406462459', '36617.26003', '-4.06462459e-17'); - T('-0.00000004133646', '26594407.6', '-4.133646e-8'); - T('6.3642', '-0.00000000000000000009857799', '8.84487e-20'); - T('1.780751', '11652994', '1.780751'); - T('95.6', '19178496109.2', '95.6'); - T('2.57393833', '852658757', '2.57393833'); - T('147.77838', '27.129', '12.13338'); - T('-773.3025', '-6', '-5.3025'); - T('3', '-31458.09', '3'); - T('-2.93096796427', '2.3', '-0.63096796427'); - T('2', '6190.943', '2'); - T('-2', '-2.47', '-2'); - T('-60.45556497', '0.00000067724055444', '-5.489328444e-7'); - T('0', '52221', '0'); - T('0.003001960', '-277761107', '0.00300196'); - T('5.3848225844', '434804', '5.3848225844'); - T('650.7467123', '-4', '2.7467123'); - T('1.4', '-65970188', '1.4'); - T('-3500.45', '500254.11730', '-3500.45'); - T('-0.000000000049', '4919966334', '-4.9e-11'); - T('17.92802', '-4.826', '3.45002'); - T('248.79', '936.1', '248.79'); - T('0.000000000000000000062725', '-1.050053808', '6.2725e-20'); - T('-21.4103', '1.9075', '-0.4278'); - T('-7785809980', '1574', '-92'); - T('688.6', '86674028', '688.6'); - T('0.000000000002917443', '-245.8', '2.917443e-12'); - T('-0.07547', '-15.028', '-0.07547'); - T('0.0031519195605', '-2272651712.25', '0.0031519195605'); - T('150494.446', '-51709.2935', '47075.859'); - T('-12010', '0.000000000000000016290', '-3.28e-18'); - T('-32.408275623', '-1', '-0.408275623'); - T('0.000000000000383814', '-1', '3.83814e-13'); - T('0.000000000000000003469380524', '0.0000000000036', '3.469380524e-18'); - T('1', '15.8856255428', '1'); - T('119.378058192', '-2.4396301', '2.275813392'); - T('33773052.62', '0.00000000111954987477', '7.3387294787e-10'); - T('6', '-120890538.30', '6'); - T('-0.00000000000059065444364', '22714637', '-5.9065444364e-13'); - T('-1774625862.4', '8507651416', '-1774625862.4'); - T('30.1', '5.7', '1.6'); - T('-1.806', '38.81', '-1.806'); - T('3', '-1683506', '3'); - T('-88.75', '-1411.1', '-88.75'); - T('-31', '0.00007026872', '-0.00004067864'); - T('2437.18437', '2.70220899140', '2.4940687486'); - T('0', '-41630623', '0'); - T('-258.66793', '-182.14421', '-76.52372'); - T('-14228.6', '95437.0', '-14228.6'); - T('1733.518', '-128426.9', '1733.518'); - T('0.0000000000000000000532527998218', '-63.28534135', '5.32527998218e-20'); - T('-295.03967', '-3', '-1.03967'); - T('2.956649054', '899957.06', '2.956649054'); - T('-2313.023', '-63930.69', '-2313.023'); - T('13803.9', '5.8329456', '3.1507104'); - T('21.8238290', '-3', '0.823829'); - T('-22.3', '-77.5771049044', '-22.3'); - T('0', '10.70', '0'); - T('0.000000101', '-14430384604.6', '1.01e-7'); - T('-600271019.62', '-2.4', '-2.02'); - T('-53874920.5', '21.676509', '-16.648855'); - T('-0.000000000000000061', '-69.27505', '-6.1e-17'); - T('-0.00000000000117570154770', '874813.194864', '-1.1757015477e-12'); - T('3724726', '0.0000000000009126675', '4.24705e-13'); - T('6493', '-82605.38', '6493'); - T('-2.88', '10', '-2.88'); - T('53970', '-99064', '53970'); - T('-12.440', '-0.000000000019', '-5e-12'); - T('54.64', '-6.1', '5.84'); - T('0.004000', '14', '0.004'); - T('-1570593.12158', '-2.56612', '-1.9417'); - T('-0.0000000000000113891', '-0.000000000042', '-1.13891e-14'); - T('-29.9444', '-2245', '-29.9444'); - T('0.568740', '3.7564033753', '0.56874'); - T('-52606.48321', '-4.34014413083', '-3.9363443404'); - T('-0.0000000334', '0.000000000902008057677', '-2.5701865951e-11'); - T('-634849.178', '3953007.487', '-634849.178'); - T('127992.04562', '3009797.1', '127992.04562'); - T('1', '-43.9035960', '1'); - T('-11.0349', '-2', '-1.0349'); - T('158.7', '257566', '158.7'); - T('43047346', '-115148338070', '43047346'); - T('9691.0996', '-15.5219', '5.434'); - T('-77.9', '-2.0', '-1.9'); - T('-38.3896', '-0.000000882', '-5.14e-7'); - - T('2318237922853539360.167157597022570', '-9702015238687.680494235371626139504030926823802574', '9295675788919.833075194557918488338251940141560718'); - T('-3346995255.54414928936', '-19484973963827626752773520333240590885639375', '-3346995255.54414928936'); - T('-270721769', '22539228.03492196260802407744489638356810047', '-251032.58093644870371107066124339718279436'); - T('-0.00000000000000000308066481692295683548642301228852180070143433425056969292333', '206232915.762239501154732324', '-3.08066481692295683548642301228852180070143433425056969292333e-18'); - T('-0.00000000156454306292867840840689', '2635', '-1.56454306292867840840689e-9'); - T('12886035692416820.3977457533594029154555584175743', '-113496127978790341.941210015456704515', '12886035692416820.3977457533594029154555584175743'); - T('-299395547.883083669188105176893563510454667', '-3152.9580', '-115.077083669188105176893563510454667'); - T('8076327350.789696755252236317', '9', '5.789696755252236317'); - T('2241730616485747642201052100686334', '15115372376051.1433309224128', '15028644606255.6407694748928'); - T('0.000000020545442143', '910205431326260.56522101419792183224139104902865869227', '2.0545442143e-8'); - T('-299.2', '-1095069605114867345071265098807585478368438601713540771676', '-299.2'); - T('0', '-0.00000000000000000006258032721', '0'); - T('-9561792051.46130', '-0.00000037912322661422', '-3.0664875638608e-7'); - T('-4589.274150042', '5463826693798.059180748770', '-4589.274150042'); - T('-177372488891124.8209441829612234253673371', '-2184484411972.871928873110', '-429251521322.1947054610512234253673371'); - T('2840794355990579101690516447419567416103576933551526', '-225384346136689418.311568171615', '4159399848092788.810925291935'); - T('433169940324134426366793327.235', '-1918606541369710.9167801826', '369802826989779.100695574'); - T('0.00000231962990639112417450960779176176525188784519762202020426278', '11491626.8146875740651454657723913302260', '0.00000231962990639112417450960779176176525188784519762202020426278'); - T('-118317530966985340050567.3794340230', '-1290337888625470391870404816877827630953112876.297', '-1.18317530966985340050567379434023e+23'); - T('507941745866485347809651792.3258074064530387681549475622', '-78.8876', '48.5294074064530387681549475622'); - T('3280516686867.41769205935464611912132313550145186748', '-0.00000000000000125477', '5.0338132313550145186748e-16'); - T('39.99', '-196.666', '39.99'); - T('198328732837738155510399443.82996', '0.049415792708', '0.034407057628'); - T('23.9909397975464820637937485614', '0.0000000001050229258855441', '8.54924991032156614e-11'); - T('-1157214583831665284482', '1.0988344', '-0.0759048'); - T('19626.043251177620', '0.0000000034291719721621', '1.7452276531105e-9'); - T('11144329315299884830592174718286.015391668774749336449044', '-276730.619204816478', '84261.983174911066749336449044'); - T('71.3348063927327012696442274193666742024', '1.003', '0.1218063927327012696442274193666742024'); - T('2353.964728726069', '-1147885339335726766004631.4827280116227481840172642411087841', '2353.964728726069'); - T('-3.4', '99841150890712628939215423679763543630485717', '-3.4'); - T('-17423609848720294448155093008156493860946579332348817', '-407401303.1', '-39793145.5'); - T('268219889', '66408.228187594864', '63463.578491939168'); - T('-7067928231578399800943353710459167713.4021506', '-44099.172874028', '-34277.265446476'); - T('0.0000000000003143', '0.763206816948175243403280699590867', '3.143e-13'); - T('4.036744136250', '0.00971177', '0.00635958625'); - T('1793819.269108', '493646013195.8520', '1793819.269108'); - T('-15826468630.86978', '-0.000000000000000000372629410691473337097845426967193919000496413569810554360', '-3.3602620906243362074116532307435310028959396493592065148e-19'); - T('-18.7707479011363', '-0.00000000000002581603178761489486464393960475608950385662413624987', '-9.1067040799565470223405647782611453765936052898943e-15'); - T('238432236541400642177165.39210', '-5', '0.3921'); - T('-6811268416946324947973610791528879575619937612025', '0.0000000000000001069504654335424482337205845600046597647661', '-8.16882733210848477277494710610839496492589e-17'); - T('-0.0000000000000001763427790981229873712832162', '-0.00000000000000000002454861590426229238192323806393241482688272809526858064170', '-1.00710578069411919285971867734642985013640916857852506689e-20'); - T('19755770505453660565232908.50109071', '11636774869145974997.1', '6173329669666681241.40109071'); - T('-0.0000000000002209009508639970169662640887364083811', '0.000000000000000089645450775854240465099382429782771424049138745143690592', '-1.4560152292168460259210429423632311142922131965946381312e-17'); - T('563088', '-0.00000008456562014728262541201891984898', '2.11408406705846430113462806523e-8'); - T('0.000000000000014349029064561994176595511', '-185.73981699167343715247600', '1.4349029064561994176595511e-14'); - T('-0.00000000001083082172818863769543', '1190273509470734307.14840', '-1.083082172818863769543e-11'); - T('-0.0000007000816503264538441903792097551608671', '426939', '-7.000816503264538441903792097551608671e-7'); - T('-74639664.5738469080670677219615636886365697', '11681605088890876252615.81485333', '-74639664.5738469080670677219615636886365697'); - T('-17473762843659544328007830640965916', '4735599287262364762422146713625.0556784154158620151196', '-4.1370729486807194325314144030856023255308850262237956e+30'); - T('-35798372944152782907433662314743475258228956226653087.007402', '2986648933436031786673397525017144049.527376', '-2.586979851276128040119426347481949619034666e+36'); - T('594962882338997095.95600951831319665393181826', '-0.000040093460748026675395936734376802508692547860', '0.00000106629014969426833642467613848819248141182'); - T('-98128552510799809261642798951333594.3', '-0.0150759218573700771020952512609526302985126417', '-0.0093980498660155309329725865407755408137845842'); - T('-28905866.022560718711724183906982038769016', '784580.53565571528753557678117', '-660966.738954968360443419784862038769016'); - T('-47314330483943356635.9', '4636924735068749202877120062.478835103', '-47314330483943356635.9'); - T('792568.576', '-1979027334.876406', '792568.576'); - T('2082231914.648466978927', '0.000000238131951894409076127502052426857902593605206359', '4.9424034607223232258131091994225827538144585637e-8'); - T('-3411944212928743691.0878807671609226126352448564441', '-35500488815007653257376478967389.5309684', '-3411944212928743691.0878807671609226126352448564441'); - T('41501124315127150415.980342038928850343648471670', '0.000000000000000000053662500082765049695814837696308208138940564988179296927086', '5.264308454143252141026226146634076056628101699532578384974e-20'); - T('-8105952948653953296.0699944999485216414062634578', '-86.16623488113', '-12.7456165483885216414062634578'); - T('0.3363661610339352417675708613420020704697718205608204221483', '0.000000015893', '2.1879352417675708613420020704697718205608204221483e-9'); - T('-2210034411007336613344093585636474574394416824601186', '-5697969717442263672614992696703295962015334995729800', '-2.210034411007336613344093585636474574394416824601186e+51'); - T('-19624478.484621985479326459244324640415206', '1107819793188885.038860867', '-19624478.484621985479326459244324640415206'); - T('0.0000000000000000027', '3631127636124777836273261304119863249137.03745979717836204256', '2.7e-18'); - T('428890527306795', '1668185806826743336487.38672816383301425507832145712664', '428890527306795'); - T('-118370476542022564.70047766418757366578', '-1228521.83117210457036591052269149317400179607062584234', '-805751.95595400766902842055758098139122173498985457682'); - T('185286933', '2634674111701244320881602650.2421109389', '185286933'); - T('-7816588257503735832158705.4', '-11446124074192432060805137497617191.5046', '-7.8165882575037358321587054e+24'); - T('-31168709097858.0', '-17218.68615703', '-10432.31999475'); - T('-1193968682851815353278.892', '16233847.397485882794799291566785542165584', '-2556325.316384280762019592125096432742624'); - T('-0.000000000000000000429785230445766557625717658510987246778343793367089404', '-716612915846390386454071955208510757337687098919716', '-4.29785230445766557625717658510987246778343793367089404e-19'); - T('760.787298', '-2603560575.1399', '760.787298'); - T('-18743620234475404481049.76769588257', '2970338095303214.63301260929704123104600934034050653148876822', '-2683854960098077.08770269798321468491598555389258155949698992'); - T('-226541276978', '101925495756252505609089275771221594.112426392858882002885', '-226541276978'); - T('-0.0000000000026983', '487122954421920311203.9905962', '-2.6983e-12'); - T('203252938.721649167192089873629233502162687452', '221.20710344937374', '109.823743846799189873629233502162687452'); - T('-2171101234717018601412530711075541768098', '-1268548470639454153963685.60015', '-1.07365992860948866922827981755e+24'); - T('11052697820027335752485837522176323720287184.550750155', '-553810966103.02590552831652788244539331678489580819303648', '525192380831.77413824185332709628772520041226644631472352'); - T('-3884559198046300262478611735179875511934488582167963637380', '8.036636030768', '-3.27660412216'); - T('2.0', '-45.2', '2'); - T('0', '-0.163349511377933876791410190902077510', '0'); - T('-730572579439411951784822207340668557', '0.0000000000000028', '-4e-16'); - T('0.000000000000000001168651449131923286954932276275033439404771143330881475', '-47210255.27658777658181021168421281357', '1.168651449131923286954932276275033439404771143330881475e-18'); - T('-30769567698.202004635902421797597470637', '-2117030646075139493515312478944809325583483881105', '-30769567698.202004635902421797597470637'); - T('0.22203824107047587018951755693974277131200048220', '-136.52076', '0.2220382410704758701895175569397427713120004822'); - T('4489045408103326401151265241469016732232592556114681884438', '0.000000000000001314763381159004315842197', '6.8074495798791174068935e-16'); - T('-21348129287570112842795163717617654521736400718052510', '-1995504519697835638540568077.0196418', '-1.1402642626986948193867205135517104e+27'); - T('-14.48287435139371979106', '-278112747003022610742126629257947172194929.64536', '-14.48287435139371979106'); - T('0.0000000000000110719145581948062251355493585472867', '-7978399748.1558009430388367158631487853516499292946094', '1.10719145581948062251355493585472867e-14'); - T('119501784974', '-0.0031818401885065375156179', '0.0016290398380208417060804'); - T('-0.133707475845003705950317295850288779512882217932', '329652021145697865591302212038174941275757995054.713783674845', '-0.133707475845003705950317295850288779512882217932'); - T('-12542871568091185279.0460234294798148233', '25754.120417', '-21877.7952474294798148233'); - T('-3818054566.20841286030331762281612', '-1936.24778639274331686587963417792515204476546099', '-472.43293099041187629213445041741051174848665583'); - T('118000308055.9373727402663957624604063', '9918.67574327356', '4846.8753496034663957624604063'); - T('-11.38', '-24193758424792525116909481098205.677446', '-11.38'); - T('2.46889727437003280961289299604392122014099570', '-4644753841435365046988433379518839103541882981334804890807.8', '2.4688972743700328096128929960439212201409957'); - T('1805667164641860305883.31324', '0.00000000016618955069904640141657751519707415214669847044', '1.046133052518583849356487736801523519251586328e-11'); - T('-0.000000000000000000012169689776926610597997556555980427323944885949030949402', '-434910402113045297454505.1302573189763520', '-1.2169689776926610597997556555980427323944885949030949402e-20'); - T('-1739.4', '0.155584511367509963502532516739270411', '-0.120747422606118005188995371696075431'); - T('-569589695561180399227800563933576000706960457.3656765081522', '3483.46493456384339944984809629410413910476502', '-3467.25917700145185407850776398960809939327178'); - T('27827944878804.043096443231553973596298120', '327784539432851688676.574297', '27827944878804.04309644323155397359629812'); - T('-0.0000000000000000000273570270893076789122004877379023084477997941182649713787', '55071786762378989.632689594', '-2.73570270893076789122004877379023084477997941182649713787e-20'); - T('-1', '30698458.1545228514266', '-1'); - T('-77.6796737181065072239544734403386720988476876081692968190', '-48043379.33911367817680827247020826', '-77.679673718106507223954473440338672098847687608169296819'); - T('-0.00000000002231552048713565363805177481170756001463248', '-7745938658044151', '-2.231552048713565363805177481170756001463248e-11'); - T('4080930738001215900471542815678.870', '-259094.384407758455239', '219215.641754292988748'); - T('-65148376658415.8821831041618603950', '176.7', '-41.982183104161860395'); - T('-20649466814.805802613083057980846632715554163812995', '-0.0000000001319860149268122557211741866249364289650956', '-9.623959984992160004489809813728963916899e-11'); - T('-8637039792424460231', '1171511157428179825785002.9414399798460302750', '-8637039792424460231'); - T('170120714324740496497515610676549361259437493939036', '0.0000001984234593401508456286993357944778724317751259644793106', '1.80272091831781979821089649811533712715612789460516662e-8'); - T('3040385342.35657760274052', '-372946621956569451.93539995558371617994622295531744', '3040385342.35657760274052'); - T('234417346052636032.106833697570476435658983423056', '405728269025466785030711845788149565209977.743', '234417346052636032.106833697570476435658983423056'); - T('3003698058950457901967364.923201608', '-0.00000000000033926708389437080558726155721138587500872389823', '2.3077148260391721408496333950768060426097166773e-13'); - T('-1', '13121297327432473503324600878404', '-1'); - T('-0.00000000000086987493647337590015438704985', '1126309963348141179998313355117347492625867522.06445459173', '-8.6987493647337590015438704985e-13'); - T('0.01175883004658442799157', '-1304796615695885174911897002429657121243.096878772927435101', '0.01175883004658442799157'); - T('-4.1', '-925940.0049', '-4.1'); - T('94413979984015715031.72143', '-44956570520496128861135438942192313346223.4679844', '94413979984015715031.72143'); - T('-2084.96276512750756221737052806049261165250425', '1.5202660037865707', '-0.67807393611913251737052806049261165250425'); - T('5530042131715182582', '0.00000076755550127601384796182326285660346554068838', '4.3620483782819522891660511451578934939479584e-7'); - T('-67042.802', '-28411888994.212820705785482909844033014', '-67042.802'); - T('-5360742.0', '327368856548045.08220112714929243516', '-5360742'); - T('47117230722.16973123915245237545229011004357913004', '-47488231.617918014245187991287717374685823103416490829', '8904957.195061107925965018036654421707060540881097632'); - T('-0.000000000000151343572349948255798487186356', '42.39640064100021994629331666', '-1.51343572349948255798487186356e-13'); - T('113840373593648670861500086', '16082411799435623101958677220820405667', '1.13840373593648670861500086e+26'); - T('-8.22', '-2867798109411674.996765068247085164513407273890902397064937', '-8.22'); - T('-3.50238614', '-6860188389136636488339219859054193101069684390', '-3.50238614'); - T('107107360259917227679425620190.388983860971684', '8800479523270977282088607107997626691064406556317263323.341', '1.07107360259917227679425620190388983860971684e+29'); - T('-175822.1223383477', '-88621983013742415713.67926832', '-175822.1223383477'); - T('-0.0000000001165498478337125015371156469966957212161218123244751', '-62550285299530518719359714148367546793907', '-1.165498478337125015371156469966957212161218123244751e-10'); - T('0.0000000000000000320110187403311537074296810233047925148', '-60407506473103.897451724471', '3.20110187403311537074296810233047925148e-17'); - T('-0.000000000000000338282064563114', '-96190376454071434357.783403611375151575341982065544942431', '-3.38282064563114e-16'); - T('-0.000000000000446753711341', '-9.4', '-4.46753711341e-13'); - T('369078971611659797359596697169091.7394557', '4390355307871218680185944', '3.2920328769890124360129157394557e+24'); - T('0.00167752355829931578551694576878658836500507142636702529088528', '3276066309050', '0.00167752355829931578551694576878658836500507142636702529088528'); - T('-40341913269616270298908054352.555424105652', '-76.6805753', '-22.343535105652'); - T('0.000000000000000234899796181467417005659941', '-0.00000000000000002455754630676905247611', '1.3881879420545944720669941e-17'); - T('-2288200091016313974155687089998490026813781889257797', '173612435224249143072698340434416969557762958', '-4.06305517399251906560023908396396030698941e+41'); - T('-119.570203264189', '0.00000000000000000270873280446606560343105459296495864', '-3.0654086667132932857371380394960016e-19'); - T('9636003428434421863325355207384758', '27189148267469.7985900247652', '763104629651.47867591268'); - T('336.422676596', '45198935114500.3922307046', '336.422676596'); - T('-14.0627943158485824648781649958871436175344604029182482603314', '514937038588634.2538384203447', '-14.0627943158485824648781649958871436175344604029182482603314'); - T('0.00000023418399644897328432613203542773200097298268', '150.05994', '2.3418399644897328432613203542773200097298268e-7'); - T('-7549019185595.78985813486261693520665842030485693423', '0.00000107047', '-3.7760261693520665842030485693423e-7'); - T('2084', '-4702062390.892', '2084'); - T('-0.000000000000004338', '23.449915', '-4.338e-15'); - T('355378988141704324089218417352212802.4373051939435896809', '-410089.6820', '397574.1193051939435896809'); - T('-0.00000001989462540690061730462809985539649615779', '-38.286442069994941913718432', '-1.989462540690061730462809985539649615779e-8'); - T('18131048627056749262739468342.355859006591', '-1199.6142723004281428', '211.04880824112304'); - T('-7485271015053088795456302791998022618551521.6832', '0.0000000000000000000469320709938399196323702081094328803321', '-2.69710660151015687863998038860418026399e-20'); - T('0.000000000951589985684289940380019704065655070039753', '-26373114201649323963859575.5038618827163', '9.51589985684289940380019704065655070039753e-10'); - T('29612852829840055823.4234313598', '-0.000000000000000000390000839472495342007727670085919905954881', '1.00427280201824924510562417012541840544546e-19'); - T('-5607158.61839129739841', '7', '-4.61839129739841'); - T('-5033.1047890916762223467249791215764', '-125308255061340894094178.363334', '-5033.1047890916762223467249791215764'); - T('721650415570508.30568044521', '40444523802228.33072733', '34093510932626.68331583521'); - T('2909689458580570441', '35832160731.298726', '11893825723.095282'); - T('-5860896283.24109', '-0.000000000000000001291619269537172108644', '-3.63300889125010974528e-19'); - T('-194225255714783295041136360134265455943072328542285', '69.6', '-40.2'); - T('-64931541870946970276.043833373186791755', '0.0023858644', '-0.001926882786791755'); - T('1768097901758505513385227.27886663656389579248832549927529', '49683790014635', '22391913150827.27886663656389579248832549927529'); - T('15607444724715380472693190116075827307544230542858', '-30863780897913937221259082805810494697060093553853613140', '1.5607444724715380472693190116075827307544230542858e+49'); - T('-5', '-4637217487418.54919740129555570192754032790658061945', '-5'); - T('-0.0000000000000000000828', '131673552653745805914768.46227', '-8.28e-20'); - T('-0.00000000764789734', '1709371095001247612801478608832281576263433223592134788490', '-7.64789734e-9'); - T('154437761882957023383482721504354803201034660811788829', '-0.000000000000006907027', '5.846749e-15'); - T('715263.3', '0.00000000000001885535871127301429501799', '1.588206408282257808507009e-14'); - T('2', '-139137', '2'); - T('-33.5', '252567485444977003649.689937162645', '-33.5'); - T('0.000041876254378856129586442165482266321783', '322959107295001633.58', '0.000041876254378856129586442165482266321783'); - T('-54186163890839675559037155.29991407802075734', '0.0000000000022878015271202914230826203651610666594361551538884626909', '-2.2681269475854053487147725795128202226083088877672780421e-12'); - T('0.0000000009449673438295910508', '-17.0733222', '9.449673438295910508e-10'); - T('21265617482392966322733539382375295590999877466103755238889', '-352694528885882768342.45632391826455624336', '221163195874277534438.6290731360549322576'); - T('-1307793651716492003679476694280841686029964.654735755057269084', '-89261449075265.032742854725660037428102593', '-30163701590263.071635290265954147983863299'); - T('5914702572.83224302033871291000363', '-0.000000000000000886450497717875025851850', '4.967313925042229243866e-16'); - T('263730784.16038091', '-58734788098538430712.3', '263730784.16038091'); - T('0.000000001854032486183296214519', '-0.000000000355070869879153', '7.8678136787531214519e-11'); - T('-31884740503448053282155167604', '-9334262264990899277546182645450.74129764939998707', '-3.1884740503448053282155167604e+28'); - T('11557392706097.3454852500293825329599950094143', '2.52303246491988770256', '0.4512976779915504676799950094143'); - T('-71596377460606253231921860426759937622737054', '4887438282022459980414.75188230501531', '-3.01046057949271437163960532658638822e+21'); - T('233.31782712896541142', '-0.000000000000061176056765670789881258454117135367568123364367998', '3.1635882250994428931750935802393986143468670072e-15'); - T('365.885010333042430035757670950257510558158528', '0.00012', '0.000090333042430035757670950257510558158528'); - T('535753130902782277401868.255371439243127', '-143.10142002690254095307', '118.497092196935045142'); - T('0.000000000470393111281920', '-51.9318603511297101', '4.7039311128192e-10'); - T('13458.12201247046122595270157739959756782786002', '6387839814.018150125742976314622109379608051443', '13458.12201247046122595270157739959756782786002'); - T('-5.831075554650765329716', '-11970348016752784794040399571598021585032773536121.380962', '-5.831075554650765329716'); - T('0.00000000000262395619618229355713043239', '-87185298877269401376712558913.7470', '2.62395619618229355713043239e-12'); - T('141.0', '188771.3963534769931324152', '141'); - T('-9236972803514324.7806408277606845', '-0.00000000000007809628857086731989071851354', '-1.650710030068608338878824096e-14'); - T('1.2974663175859402553689735548443', '-0.0000000000001062828009896091833554986467183627932744813138557760818085', '7.61109945460281796836350249437619994413734484557859166905e-14'); - T('0.0270550933935502424060575696830352678525170478229935415832', '-451291.14957148684', '0.0270550933935502424060575696830352678525170478229935415832'); - T('-92.3630313298', '-0.0000000025494749392548', '-1.4586947958892e-9'); - T('5', '2.230', '0.54'); - T('0.00000000000000047652193195365538282280574751077165811188614512152190254', '-0.2219408161751349997065647158660685689613558', '4.7652193195365538282280574751077165811188614512152190254e-16'); - T('-11584699154744825490947848080895226756397973538', '87574.623306', '-81181.758812'); - T('677064505276662938729662254128.29994114', '707.4', '272.89994114'); - T('-0.00006824223430307152214885541', '-259323624933420687586166700605273793769205140227.53768209', '-0.00006824223430307152214885541'); - T('42649.4427', '6691515410463', '42649.4427'); - T('-1168876626035009643806416736226233', '615863945.824703012224567830126', '-392657283.272481237688137233096'); - T('-99850601104584713060403542.32679025848626541', '4984333871554095648842233050848980249665273650', '-9.985060110458471306040354232679025848626541e+25'); - T('1', '0.000000000020714284873094147095452920238214225', '8.535434304189538408987784126387475e-12'); - T('-40382172868238902141831024410171370609.8497129774930', '1302788268944196991798424860.3558746', '-6.82458913661894485779787415457058777493e+26'); - T('-0.0000002901522230060366316110382713638332433750838395', '1797816163.6022664896252467454244679282', '-2.901522230060366316110382713638332433750838395e-7'); - T('15.07', '-202256.9', '15.07'); - T('0.00000000001513399901378093', '-0.0000011431', '1.513399901378093e-11'); - T('8067543766555814361258.9809653', '-1063782.5113', '771356.4731653'); - T('-0.000007452478259217127353', '-1269742061.7650', '-0.000007452478259217127353'); - T('3083816844578.0036462734892162357142', '-62.043', '12.0776462734892162357142'); - T('0', '19676669.3210', '0'); - T('12000.579726', '-0.00000000000000000011473979542082043429', '6.885862514870385948e-20'); - T('157760.0162346769710343762123266316522595', '0.00000000000000002072', '6.6923266316522595e-18'); - T('12.56649651', '0.0000000011486174569183055328395211586383654058895981238621', '6.243894925921526655230893363862847927286267313448e-10'); - T('1619418216785919248186484303127025755692.6', '-5.32529795', '2.4485417'); - T('-7894381522375439472424053746795845545020655311347324165373', '22494560920042179494908995572822416399654.3988', '-1.79805849224239031722296510506179645210727012e+40'); - T('0.0000000000144180437967392496819227076903747539933453407576', '21.003335', '1.44180437967392496819227076903747539933453407576e-11'); - T('508588836239.155636417726778522264', '-402450669.2', '293641039.555636417726778522264'); - T('15935406874866887008916010678224808183941097', '-20533021922984769932524329949941646599184', '1.781862630705541277130637070090422974313e+39'); - T('10577358966.62645197', '-3902498.5606677997620066743', '1587867.216714614961912647'); - T('-2.3', '-247.215776', '-2.3'); - T('-0.0000000000000000004534097652705', '21900.378494953943', '-4.534097652705e-19'); - T('-622302543239963404259053402472736239978107701', '-37144508134104022867053839784711386961366245133.798061', '-6.22302543239963404259053402472736239978107701e+44'); - T('963', '-1143859.8306131050309784880555908137246920', '963'); - T('-1105334398087211096372825533031660097846.368', '676850877469691.4610087010635866598320915855', '-528741020326514.019428617163961817534907474'); - T('-33.537', '0.00000000000000000240610602831844082653894660603468520326205996616490648230', '-5.055045646408436609503461106111907664625346674246231926e-19'); - T('989.69', '1818860793340242.34985869797714179945790', '989.69'); - T('10897111350996763207208776906688937.9374615427', '34065063399932552093174621472004861573778946476274074', '1.08971113509967632072087769066889379374615427e+34'); - T('-11632431937037532580778695673.04032', '74582043438.8721965449504177221562482147014523596481', '-53296552278.8841298987146598409845587169502001115997'); - T('-141.4055769529530650', '136398726400805051012116675708221546904997943.0983953382506760', '-141.405576952953065'); - T('2436945370.995', '1123321514602145559580', '2436945370.995'); - T('68966344530824.7651173919961179400965271017811497107820', '3016650.5058630595142431070', '430737.119987074593653282096527101781149710782'); - T('0.000000000149640169704895568509292298172960103', '2388965841.03588731292125318485549177319506347036', '1.49640169704895568509292298172960103e-10'); - T('0.000015', '-3304.73941676117143286536062311830598946', '0.000015'); - T('0.00000000047066315132394427031416', '-6192', '4.7066315132394427031416e-10'); - T('-0.0000000000000000000581928591150593239271964107701426222875128', '5909007611163710886717422164.5826709875973058037321', '-5.81928591150593239271964107701426222875128e-20'); - T('31384923094914821999292552425.2009815380728309425967', '77537672972.35166', '11679771345.2858615380728309425967'); - T('-37567843820039777389745510805385', '-71883985.6201303', '-21998426.2683717'); - T('-8457.2', '-0.0000001173257195508166367392288464056131809270998457', '-2.69885424250247290675786668651098778106586768e-8'); - T('25100609273081546346038727027615', '0.0000000000000886831920439450', '5.162428876817e-14'); - T('-18047576.1098270311193001138015699506418833418804938917', '192214125807611.95755841586183852694517418512423624080241', '-18047576.1098270311193001138015699506418833418804938917'); - T('-95.588906373514114132242', '-0.0000000003929994337493746273806772122562877169246192899290', '-3.19339159019421511190151559546325880388122429492e-10'); - T('-0.0000000000000000002355739833279382506655556792223696880503752520', '-0.00000000000000079651826138154154521027236636093398105375492817', '-2.35573983327938250665555679222369688050375252e-19'); - T('-2007', '-6160033729282.9851660562442', '-2007'); - T('0.00000000000094972368099037971103433', '4734161412127674820247110768919593576233188914.242822976357', '9.4972368099037971103433e-13'); - T('0.138175287929598290229868824644141412392715', '-31558584857557504718252045560.11304', '0.138175287929598290229868824644141412392715'); - T('1196620705.9415675785887940558444736246545644683738095', '-70465530484696222361776144167727350283884319.64044686', '1196620705.9415675785887940558444736246545644683738095'); - T('11074860894', '1561765758632.45', '11074860894'); - T('-4381924184574059696448709.53108872210260149095882186', '1.028', '-0.23908872210260149095882186'); - T('0.00000001155422786572893769342087552370206756710219340', '-13931734385.2', '1.15542278657289376934208755237020675671021934e-8'); - T('69191800707.52', '8416.42298638305', '181.0075723297'); - T('2081967242.78645435603091', '-0.0000000641307577303646051321340042511613883', '1.04729585981376168223728825373660659e-8'); - T('851318799560282460315775006926769346175917826.47889714', '3053712.3623410179455158701230239730564268230', '440718.735027453982530562337797644313071866'); - T('-10058222.5796344546386', '6627451174822895.34794097800071486253721590178533538', '-10058222.5796344546386'); - T('0.000000000037566442917643747268847042234718910033651246885819716699339', '1.3779', '3.7566442917643747268847042234718910033651246885819716699339e-11'); - T('875.90002405088', '0.000000970077655599692785652735177637', '3.5638028118889148093740648709e-7'); - T('-62.7931846870391496', '-636485693987795148000356.1626652406993787', '-62.7931846870391496'); - T('0.00000000000000100341179', '-544501716519662.633193865233920', '1.00341179e-15'); - T('0.00000000000000351499628540049570637673', '-223431373521.7926681956463703562745846396661', '3.51499628540049570637673e-15'); - T('-220603353886874667147934643649.87295033625852695', '14892.592908', '-14434.15489033625852695'); - T('-0.0000000000000001612847241392420250768267369', '17433478642639304.4236073577621811634134', '-1.612847241392420250768267369e-16'); - T('-1883174595828380403709352050091085026369077660279268.9', '-0.0012895', '-0.001097'); - T('-125549014214.7375819121786172926612698843039792917253281', '-101.5885766453', '-100.8153792133786172926612698843039792917253281'); - T('1065766474589037077293252213448', '104.84555', '81.7216'); - T('-0.0047533898584759553535897361825760775807323217889394835', '-18213101567414468503998329412491692494599546949.8', '-0.0047533898584759553535897361825760775807323217889394835'); - T('1270005291407.8881300436', '4138621074845956468.09769209', '1270005291407.8881300436'); - T('-260441856275307932803222450437995247080731478', '704992903069127.4325788', '-431855187882906.333326'); - T('-0.00000000000000000009754763692467059466885260432113614665268499743', '-1095452837.106034703346392429672156', '-9.754763692467059466885260432113614665268499743e-20'); - T('15.2', '-9898.141488362', '15.2'); - T('-4.642097816103323517795932640', '2320173035769155029864.2360071417144711754883993503027', '-4.64209781610332351779593264'); - T('27232043073441728507866158240.138995261078', '-215290045818292170941580969748443497', '2.7232043073441728507866158240138995261078e+28'); - T('-7820551181460133788154158506805766936661586187217825438.43', '9043807302.81268', '-8827979159.46068'); - T('40454701041551859098452066940764312196468.06490346453770', '1.43336157528769251880838', '0.053020665769834197966'); - T('0', '6893071800513.175', '0'); - T('-23294105221282442798534198559904763230604376248570', '1108006854160532581.643019501', '-634324850398077026.428796591'); - T('-70.48', '425148951767015.661297750583259821000170', '-70.48'); - T('-40097263.65021696329198038628255519578725029828361985869', '8008783649.929271', '-40097263.65021696329198038628255519578725029828361985869'); - T('-3744957147569480041094559658.8985734744', '-1.39589737574796529539305515486016767152', '-0.007414375129527604087594017204876948'); - T('1', '12243765348634238072286305372976115524601373993259986307', '1'); - T('1133226250873003731000285272922.678821486883559776563400259', '-48449121713.05851357863749277194726', '46399517902.028653911554106994622540259'); - T('-1110.00985672050392625354008504049692', '0.000000000000000144467905969585159040405525015114077352752345766119586', '-5.0667226393916955793430389451065661055080904169044368e-17'); - T('281516884461013501680.63', '-1.4', '1.23'); - T('1424834076734161906.49994168746374', '-0.0008975084074165482738612610040251114952525910764632040285', '0.0003696875090618801911161885049781983725485998646848861645'); - T('-128763476617069.02187580755667', '-6603.36282886993434', '-2812.31711094080867'); - T('572750920744637008914545508209975834156579.5795909538492834', '-11502534832438064096814', '5.5309188778180859429155795909538492834e+21'); - T('-0.00000000000371736421699926447258798163058670009', '257486.470069146779', '-3.71736421699926447258798163058670009e-12'); - T('-0.00000000000000130129857', '0.0000000000021237415884955381438534891507974579736322323393189949494486', '-1.30129857e-15'); - T('97510480169357047959.778521006822362538', '-0.0046089528809', '0.003841092011662538'); - T('0.000000049938779602084071943723403', '0.00000000000000000040598762102204974283610961143933322030167695316672919233780', '2.328791623754087509772477793320317342677727105556945004032e-19'); - T('-0.000000000000017579612833728413841360648325607406735458075688296134041848', '-0.00000000000000000046795016181219', '-1.29104929872111360648325607406735458075688296134041848e-19'); - T('417587148573267450086061214415849335522635545129971', '72162262599593511511391535.25753637130715', '1.588290674385543384224627617743657423135e+25'); - T('1899704999505146.65318875024320183643806671', '8011298158372506449467236619268.06739540', '1899704999505146.65318875024320183643806671'); - T('-0.00000000011026161484148139283420032525', '3', '-1.1026161484148139283420032525e-10'); - T('-641378081607809826819509989054058308747306', '-32614433220951683931.97290822167335112076028624', '-32321533365320656543.47914416134229484916012224'); - T('73426.2174993055579013322865502961038551', '-22991170194389000791863400240', '73426.2174993055579013322865502961038551'); - T('0.0753432448671128796055779867138537182985932603289568836', '0.000696623968026162316598353569181604985489965', '0.0001078563202873494129558012422403798656770403289568836'); - T('-77918852302.666', '1', '-0.666'); - T('40834438105282568531887549132894212920316057.4119', '-69096.2816004', '9282.443256'); - T('0.0000001081007656128892877603069470142579', '-146763.9202434867', '1.081007656128892877603069470142579e-7'); - T('-19065040207291206222014126191923749015295117270838828148117', '-59458447985079036923403398069307106616288796371525.0', '-6.933918951125046770982521962871037753580749088442e+48'); - T('-50.454890710', '1.57811064514885740036542902647362298773', '-1.53346071038542058867170017931768738037'); - T('0.0000000000000000029130545090762297054692', '-0.0000000000000031732390760633505614997707573729383', '2.9130545090762297054692e-18'); - T('-0.0000000149477116306405895605823556902142791919238574341861798', '206795087.6', '-1.49477116306405895605823556902142791919238574341861798e-8'); - T('0.0000000000000000071', '5470646583815966704709512378933741816164381248458912550', '7.1e-18'); - T('-2357250201772857325710', '-177521457545596938.745399459682135971137972095', '-120288482421173048.58597434059857523000652259'); - T('0.0000000000000029091', '-22982331952112767752908263644179706433315770.17359251594', '2.9091e-15'); - T('70410732817903246800961841933624181629.60085297037', '0.0000000000000000000103454336294636075289', '3.524329949160506449e-21'); - T('-27369983157.1458440282472352878', '23.763912432052919566354032773607568646834308263895', '-6.32537443505237861917552362621110083695094947093'); - T('65056.653', '32408712.331948093248921801757883672', '65056.653'); - T('-79299703594581340711344589476907732591.49009044336', '-105750.084896815429373214442762165', '-104265.478222642869860762619825095'); - T('0.81012834507591033602543', '42890384.300', '0.81012834507591033602543'); - T('231647806.280', '2306380.2577620003122660083794072550721890979450664365063025', '1009780.50379996877339916205927449278109020549335634936975'); - T('-0.04266283385', '-231833828.7857580897334', '-0.04266283385'); - T('2.9617', '-417567079608596894283345450125373793666347.08065279467956618', '2.9617'); - T('0.00000000000005671393697246617', '0.00000000002372488709978367633405147788335971135485863563547', '5.671393697246617e-14'); - T('20411507237949901.00007048085657674491003063099663777294', '0.0000000000000179718685180331186307', '6.87219923858062022287294e-15'); - T('78562464348554551960.51656952881040712219428', '-360452902524757862924847627712001.90071009646781972063', '78562464348554551960.51656952881040712219428'); - T('-1784.7', '1.107', '-0.216'); - T('-21207.62887', '-30083662469912.93830185385', '-21207.62887'); - T('181794573664525362505571198963.74048513161596812818', '-0.000000000000000006966183124261834480', '1.44054114626355864e-18'); - T('1497127573695.63303', '-7299620151322256127312252586', '1497127573695.63303'); - T('-143331341997458746373473632414689879129001.0510139759652713223', '-1039245311665254920360224447402081.203667', '-4.163981858938863521252654102664372514539759652713223e+32'); - T('-7.42318768495154312740078', '-5725.37969786010009373491349369', '-7.42318768495154312740078'); - T('1.7', '0.000000000000000000358545942655', '3.3438498447e-19'); - T('-0.0000000000000000230187885344529285768794826532', '-97947.8515169117863685621966428355043134881268104806819344', '-2.30187885344529285768794826532e-17'); - T('0.00000000000032661966', '28146830442002.99800238434978678633563002677', '3.2661966e-13'); - T('131444649737941070', '20345737092636.1111991821569377453431132947653', '11188119511791.653283266182165083488115816162'); - T('-70.95', '0.00000007627177390524757759931', '-3.355915079851121925592e-8'); - T('-0.0000000359844794247092743644998506637111', '-821842552305272024445101236331.431697024181064278117', '-3.59844794247092743644998506637111e-8'); - T('11559244775803152829995363390516552788279232383634', '-0.000000003810335052601512043915061311335400346835301683933', '5.89171798463495478689746049513730071363650371891e-10'); - T('2527.74183', '43431759.31595200153', '2527.74183'); - T('-6716182884374088980171.84153844', '74722140.737467381748608636560886010812295783760526770', '-35823304.85096169083049875979729671181231669302395569'); - T('12972207321585575187726304322503969808542965.246569633947495', '831901009396237267279615788531418438.849563723', '5.26615819172264979504828722953264235810155283947495e+35'); - T('7665883776671616025905367508643801886903976481377913', '-0.000685209961385', '0.000289003802725'); - T('0.00000000000000130', '4084984.0344696574643138186852656784876', '1.3e-15'); - T('-23744.44703412', '-346011607426.441393159348354522971440097840365544826', '-23744.44703412'); - T('8434642778165686647233872583840184835847700452.5722438', '46', '26.5722438'); - T('0.0000000000000044601453487291992988959798617835937678162460190934757181', '-34957408111696949000006895.170094', '4.4601453487291992988959798617835937678162460190934757181e-15'); - T('-717775516482666361197134085201665528104789114410', '-2', '0'); - T('8276714696969298506623725320011988.89729', '-0.00616112392295074383996719947907960025278866567521351783', '0.00016560800550555404330800366686568701046935505208586586'); - T('-742605.43840212025', '-33.033107325052', '-21.18573495129'); - T('1172677829393895.629925304143622500366643409500207216001030', '37.100', '5.22992530414362250036664340950020721600103'); - T('10537016513706770761008.26248373823335994957890378', '94969063464568723440795883667.8253648809642701', '1.053701651370677076100826248373823335994957890378e+22'); - T('11451.575753798226574650597066008283798', '740458328282622534051565222682743827901164966582017856', '11451.575753798226574650597066008283798'); - T('1.572', '49515379454772293729194042647.91538', '1.572'); - T('-1', '7.059040', '-1'); - T('-34927437284064606817941117126.257390774', '-8736962940.827', '-3438064168.261390774'); - T('25409.947283363583521450111285770286331002016996164554', '-50439325984133502226433618670969699480790', '25409.947283363583521450111285770286331002016996164554'); - T('-541726513791047904976207535366014345', '-406733502885622404519647553066345.1969741566', '-3.642214502844845605566422347088878273975654e+32'); - T('-890820344589514985.0665574100007448', '-159324785981391287370653452100749211478426067970583818.931403', '-890820344589514985.0665574100007448'); - T('515196923836873751650822811674732842614640352.18206884311573', '440807068101717819348891.987', '2.0134973484292983702212721006884311573e+23'); - T('-443343.14120147', '-81519350429738153710983021502973.9213162228', '-443343.14120147'); - T('-0.0000000000000902702192042232797334789149068563741867484672231', '-7320', '-9.02702192042232797334789149068563741867484672231e-14'); - T('-45277903240084126.84557360106009', '-20896812318476199906609422.521834898564460854802489', '-45277903240084126.84557360106009'); - T('28165869957795828694237799735446687517170194.348151719250977', '-38550284385557947404379815866117040.122550', '1.842769006556153994091762719885883071901719250977e+33'); - T('15021482085.44976192138587853899725782258348', '-9904.699', '5677.35076192138587853899725782258348'); - T('4917.303585861', '-18.964359', '5.534604861'); - T('175476267.7992032958565', '-1036388592.3909824125745400050986887954', '175476267.7992032958565'); - T('170405946320111', '-17818386128487328808126289961', '170405946320111'); - T('8550180809850301212655626511667743382400090.02', '-6540107956116752962567.2', '3.55071180489327368509322e+21'); - T('-818705136461275003.08078930092467399502130815326105604518', '-39778740814076648429007.124204603754658', '-818705136461275003.08078930092467399502130815326105604518'); - T('-1.20675758374006649995086560', '-3', '-1.2067575837400664999508656'); - T('109.3', '94.6', '14.7'); - T('0.000000065573671480225125603602776141267516038374303', '553.480300880442516', '6.5573671480225125603602776141267516038374303e-8'); - T('296362415.06624949768701', '244445717421187779.650675510094172662242508672751839189', '296362415.06624949768701'); - T('29374332532.3238432343394', '0.00000000000000000005936857517089413921548905299963269225088201364509247681385', '3.119291720989480852560154607439451452770778662623725737015e-20'); - T('328821752173776490.719819431468332405273703018690', '-2542341869177777917056573693425171357215.954882228930423158', '328821752173776490.71981943146833240527370301869'); - T('-0.0012143107904367445170056', '-1003.4406', '-0.0012143107904367445170056'); - T('-3168184610490460.8945194460195', '-3573568062298202180968377963159', '-3168184610490460.8945194460195'); - T('-16901853866719201501332692.8432369358905099363918280445405398', '-31691345775963588152383111237433553165931816.117915', '-1.69018538667192015013326928432369358905099363918280445405398e+25'); - T('-93621088901252.29805520418', '-2.0188684214862682192621695358466139055618', '-1.8934621792649249958167189632731171199736'); - T('242258091070118423201219529950729719863290357823444711.8', '1108727758065732675.6587799039404934075575195715350085051', '882685173218682761.8921148545569801605823909846489452171'); - T('-3399066202816.303625', '2618943', '-318805.303625'); - T('-28834481903864652309.71183', '0.0000000000000004565222353934092602845491745327666313637270997826', '-5.34810620719243797216459942508340612766671723426e-17'); - T('213672683755841644553544017650723723396202652336.302605922', '-0.00000033677276118692029744817391550088675892', '2.934185014134463864485655375166849324e-7'); - T('-6', '-999457121904797189706147649392540679689483876019', '-6'); - T('0.000000000622195463951304359', '-448.8352331', '6.22195463951304359e-10'); - T('0.00273159264338707604', '131503167', '0.00273159264338707604'); - T('-0.8826707721080745', '-70.82', '-0.8826707721080745'); - T('-6.169582503328100', '-1', '-0.1695825033281'); - T('161790666328890520068178.994438807', '22534.8', '14223.794438807'); - T('-617570557615637.65256125752701839451975945', '-0.0148696896889671858', '-0.01332652388531174471975945'); - T('131606.29662152417276937754010546930907406', '0.000000000000009288216788868504125788635720602972497436211', '4.548851830590558791346414703724411897415634e-15'); - T('51.3977490595725037876457161936459379346361103', '-143177764436300664530563651.36873324', '51.3977490595725037876457161936459379346361103'); - T('-0.000000000000000000055480154187811579505094934438713145361465492675145621278503', '5', '-5.5480154187811579505094934438713145361465492675145621278503e-20'); - T('-426820677348783115368590283660534000419588.633035253', '5649682945695760173704.00', '-3.898820592824218831748633035253e+21'); - T('-18877995762227202359719425947641943773826', '0.000000003168736894305713249647662065', '-2.410163138756323232829425645e-9'); - T('-230734625.125675830245801', '-24887751.105039540142964', '-6744865.180319968959125'); - T('-2.55', '-0.000000000000000003328273034182616010363199785', '-1.2785182565162876532434802e-19'); - T('0.83072894855068062175257214671400', '347832.9728307138', '0.830728948550680621752572146714'); - T('1554', '-0.000000000000000009695649707683834887551815366596414977600762431389183799355', '6.05878904773660946108899894496980695021759226671044100733e-18'); - T('295506566.953646020992273150648001797147299', '-21973527294862.8233628', '295506566.953646020992273150648001797147299'); - T('2181379173600069460.2272418575314841', '-33121557.64630663141', '31392819.5003625467214841'); - T('-1102425661172241572593712529.4318', '-1655029068876808.4683087946075879962249', '-666832641952964.5659918135994689948094'); - T('98281131957208481431777620.35596736255967554627181769', '556842234645404079383345567305273.303513803874857641931', '9.828113195720848143177762035596736255967554627181769e+25'); - T('11835752763446.82223054394121198', '0.0000000408069264362150926140815302294483025590', '1.2484009569088335298499242835706081261e-8'); - T('-50148655247666948.0767382', '-374032530098.019610', '-243774774968.8659882'); - T('-173042648372113278197497944864583449315536350193384127', '0.0000000000000000000366841720', '-3.265408e-21'); - T('2', '-3771771239046067919037045', '2'); - T('-0.0053190456442251124794436212618', '798725962261113.7', '-0.0053190456442251124794436212618'); - T('-370307', '152017395754118405461987924364280', '-370307'); - T('-277699892815627339975120', '-143.6810986', '-27.6564706'); - T('-5775916.6464283799155032293780149633514899100', '2134.505358', '-2079.65303837991550322937801496335148991'); - T('1429207694023.57717520337', '3', '1.57717520337'); - T('-5', '4', '-1'); - T('-52848862092.572286019', '813661418640716426286793.75702600471722081556694278784', '-52848862092.572286019'); - T('1844275644561406088.1', '66184292639.361611328054340279', '30103188873.61915648682705296'); - T('-195554.912236539033400998430626025643711716348904995', '0.00177428671859871088664745504177813109978841798', '-0.00128510649380978957377209918017012798784363842'); - T('78.250868739', '200592382754.965094921301649595609', '78.250868739'); - T('-1.605', '-0.00000050108803722427943381', '-4.8521755346940298951e-7'); - T('-175950845282749621749.3060626398844805224872563725036868663', '-0.00031', '-0.0001626398844805224872563725036868663'); - T('570951706006271.614500911029949202716327198256', '9579594454359595046.96141239240213595155989807741151781', '570951706006271.614500911029949202716327198256'); - T('-101348056.99', '1.2', '-0.19'); - T('0.000001115108462416442750881276832385920295416166957454340', '2.391104283537695024603255485729184', '0.00000111510846241644275088127683238592029541616695745434'); - T('-384.29267210', '-42.6115840552808285042372718273816', '-0.7884156024725434618645535535656'); - T('-0.00000000000000394320', '1490433052780511340442598422397421169.9727476', '-3.9432e-15'); - T('-2', '-124412814393298131.63102541685397', '-2'); - T('39255373365250694983.01012619735480364604931589', '0.00000000000028924174', '2.8356244931589e-13'); - T('83649682374745658097928332400566916840.904100062101', '12515556884', '3441295412.904100062101'); - T('-37978362152425454856329406585920723065797640812416', '-40807030880665280609832.633548429382227699775', '-8.44139811680207521268650854435671218648655e+21'); - T('0.00000000117630746081997641552101447', '126289176518.39164497878613023988707803064880568', '1.17630746081997641552101447e-9'); - T('-1880854096029528626232093236836285358.8229354826767064', '-13.55', '-12.4729354826767064'); - T('0.02073', '607.8621233700367', '0.02073'); - T('-804231633252810472161116.753061839', '-51.139385439676348957', '-3.050773812069762116'); - T('5877876231822600040431086011103959340188703599.31851144', '-5388452483964553888.345931647692324169003115975043825880851', '1930961800526326288.60986182402199524006990099301495612649'); - T('77946964651085243.218457918863112', '0.00000000001144602007465348949097950134087916681540997', '8.85127498118220306889399715954400610693283e-12'); - T('-288323254635330759933511.4835', '-0.000000799099661848570195554780769778567229952228099', '-6.07308413294153274384235191515598586543048706e-7'); - T('34156.9612032703394033850068373910911950393885281598409066705', '-790.014721903868173877309773404251366', '186.3281614040079266606865810082824570393885281598409066705'); - T('-62309462096741992398456920.82284105487052640595', '-0.0000000069200714440436038475285366066199260381235724356693', '-5.1591434837700767752333272066996752713093302820209e-9'); - T('-0.03081418420901964033772890', '-2258.6097737546792912978930040107448576', '-0.0308141842090196403377289'); - T('19440352005832939832434953349.524735305804224848165284560319', '13663546035.3870791', '9500641135.581258405804224848165284560319'); - T('0.000000000000000000174792814753795064312182753542642524992498259236217566516', '-77523522800322397605770.38924241467650641624', '1.74792814753795064312182753542642524992498259236217566516e-19'); - T('-1815265994282465978739.24367005494108', '0.00000000000000000687759', '-4.05185e-18'); - T('-1.34345147096631', '-6865002719881812387470285582221951284174906039012461831', '-1.34345147096631'); - T('-1331063.88165', '11341955270415278370914418086588317083074.0482', '-1331063.88165'); - T('2.046', '-0.0000000000000005877097220931', '4.012083803814e-16'); - T('3545.91036649009998376741645699670257681183407320627384466111', '250.0', '45.91036649009998376741645699670257681183407320627384466111'); - T('3304.02', '299035.58', '3304.02'); - T('-0.0000000000000000000942622', '-0.00000000000000000025221802', '-9.42622e-20'); - T('342502985242332681201199551069.576', '-25743002421256401.04397330499669057', '13427630853006016.61638681371921084'); - T('0.00000000000004233681060170499506821015920037', '255095113757561337754353944933355753406.38155', '4.233681060170499506821015920037e-14'); - T('-28.5269472861067005353912', '-270472762833365.3801132655767', '-28.5269472861067005353912'); - T('-277847759.515216', '135166968528972', '-277847759.515216'); - T('-29856675437162421995266099874726439278', '-19896996992.6267371979256450155346521949519355', '-17602172309.435172515150769689705114114019276'); - T('2', '-2017800319934087984840833728734', '2'); - T('0.00000000000000007184336760908973', '-579084.38782881989356541750992', '7.184336760908973e-17'); - T('-0.0000000000000199905729465678002272254515680192399295794760827', '0.832997729248146391449238508309446517475', '-1.99905729465678002272254515680192399295794760827e-14'); - T('-0.000000000000000127832283699455', '-17051853.75327', '-1.27832283699455e-16'); - T('-1698692.68276072', '0.000000000000342190555852264550226068807192', '-1.32201147548526749368535158272e-13'); - T('-89715846809778312.0866002761050235922348184666331', '5683352', '-4378864.0866002761050235922348184666331'); - T('1867077.167389665646672502266524422230512016', '-8121328626157873800223785135.111300799674416212197931655390', '1867077.167389665646672502266524422230512016'); - T('215901.879', '-29.8', '0.879'); - T('5119759698.60147051603509092616983122712457476', '97582629730470.286607', '5119759698.60147051603509092616983122712457476'); - T('5632091904144.80457549', '-260531502143715092510.9558622691', '5632091904144.80457549'); - T('-0.000691477562292642246090904144721704048411477714', '-202833029325548043615849420487515503451726003', '-0.000691477562292642246090904144721704048411477714'); - T('-5014290818995813355670219945.489013253728448913277', '-49', '-38.489013253728448913277'); - T('-1.19', '1.14', '-0.05'); - T('6.01200548016561079', '-25.3', '6.01200548016561079'); - T('0.0000000000000008934209997058692257', '-9845722515207.841', '8.934209997058692257e-16'); - T('-8271.180908766644265814', '-532.21', '-288.030908766644265814'); - T('18149268424457.205469', '21102403', '20109889.205469'); - T('0.000000000000000005630166790779595999136', '0.000579481131868747005452691950764827230956628754512075686', '5.630166790779595999136e-18'); - T('-0.0000969512096310107418573215633893505216', '146313161286844954805207556174167131617843885.68176097', '-0.0000969512096310107418573215633893505216'); - T('-4.4', '-6.1775206278626', '-4.4'); - T('-534834.70968332438874787934900992041831587', '-38363548234134309078598125637011026.84251944598377781303061', '-534834.70968332438874787934900992041831587'); - T('-0.00003406607808', '-0.0000652979835334948349904827499755959633629915945362770066', '-0.00003406607808'); - T('-1', '-2110983581171793713817325.1475619322694002968191006', '-1'); - T('-80227305.1656', '1944676344179122208154551672251566716245569224444.0', '-80227305.1656'); - T('-45889999955242942968871808966625304007272799508621', '8550404.862499169389885162309987843918802343917887', '-4729231.891447747380274990179385678025799484562412'); - T('-27878389918833569427320729603169170858.95474004228507890192', '23932009803269840591376795875', '-3.41193385706058529612983948395474004228507890192e+27'); - T('567202319309292978520604165782060160263365186515328568', '-11334572195439351811672.1473522129007618', '8.0497193228717959915213827171314311074e+21'); - T('-8697359171345893713842426564522034778871562.5154932', '15619404167072.618217767650', '-3493725216866.96939850825'); - T('-218.363776', '697131146810968473489.82299654842890962', '-218.363776'); - T('26202481114591937993.735307329625927271775', '-304156997.304184411106538785706126202394720899', '140113250.272976945765125367941961760435198404'); - T('-0.007731087980246464302345811575', '-24413038924588027145692146.387588856788321', '-0.007731087980246464302345811575'); - T('680497639988324180.39625512073408', '-4532942013750624897951996571799269425412122', '680497639988324180.39625512073408'); - T('-0.0000009293033204732942233089593840249955775555658283600103866', '-173511.41982571409206143199884579179605', '-9.293033204732942233089593840249955775555658283600103866e-7'); - T('0.0000000000098336953795657517132120257800838', '23300757376665714817666483157023722058388.5033214128449579573', '9.8336953795657517132120257800838e-12'); - T('41084687427290874759976776474299799533721185272283', '193585163.52662', '163743760.94914'); - T('-116.95132', '-39255072372928843286086966431.00', '-116.95132'); - T('2347142650267689935587322698.7284595028691', '-3', '1.7284595028691'); - T('0.000000000000014286361610', '0.3810969482393140582407695856576689976423039861', '1.428636161e-14'); - T('-7308074599589641011784024611055476301285', '-2979647.083231856789860049490151382783519022739462374', '-41940.765367177770459610205511353021036633288408806'); - T('357753139664202.5873944', '-41.95942286390296', '23.4743830801152'); - T('854571067694022997.4884', '6537373963.3180845607368152893095548460', '6053336053.291260561298904945337925438'); - T('-0.00000000000004386908462560891112864885989973', '129740635819911122760039.7464589619454', '-4.386908462560891112864885989973e-14'); - T('0.00000000000000021290574183432875072166863135108510281580702', '61908914489485349291471752909373768165637670.8208', '2.1290574183432875072166863135108510281580702e-16'); - T('2871883224301570575582468652.9376262287274595077514806', '-0.00000152916795423240707414339', '5.3155439780727520002144e-7'); - T('3', '80708788610217964553584510306368.549353793563', '3'); - T('-10835622995844.77266724348161957054233451560047028326613046', '-1175193791680339.76056817361012416666902891954476177079', '-10835622995844.77266724348161957054233451560047028326613046'); - T('1025038648031221253.57383030896217', '-5242.40711853563044167975', '2542.2793327788128154595'); - T('-0.00000000252', '-220187026862816215614922589820191309081445441861274232.84', '-2.52e-9'); - T('2438882128515521004992810616244816644660.875', '-14585625494005545128827621', '6.211192260353379557970309875e+24'); - T('-1253637.42184071686942470', '6043.294', '-2675.5638407168694247'); - T('30.3149681983737', '3.96', '2.5949681983737'); - T('458648663984496211521246069201336181', '0.00000000000000041796956694972368386032730115563266442065659', '1.189340470755219691379214537787056846685979e-16'); - T('-877569106991311.769260729863', '2246530785645583.53767418', '-877569106991311.769260729863'); - T('-33180244.9424', '68040037.571844483716882853268188712468340362', '-33180244.9424'); - T('26056925297726128046555.65872815844589322660275', '23799748744565261102060860.628349245228', '2.605692529772612804655565872815844589322660275e+22'); - T('-2.932266679268', '-2061492876.118067901623547245130932150882910', '-2.932266679268'); - T('-24303392384298907971178613116155773044858954198134', '0.000000144547733182595133021', '-6.2763446759435083203e-8'); - - T('9977', '793339.568052455522323049704543732060826', '9977'); - T('3044797849984420605285366.474651143157', '25186260049851668345583291614301619318511974775753812002050.8326735955299366787084106211969141751506', '3.044797849984420605285366474651143157e+24'); - T('639737463904283952640443433078141655542321388667481890755297474427803997023609757112922145297681502347448794470168805201764741986941', '-14552442514714892538227035420.61249278214225741', '3.07716512012830819205367001585789874568359778e+27'); - T('0.0000009480666812553237528290117310639076036954221787358487462393246935364400792376', '1.0', '9.480666812553237528290117310639076036954221787358487462393246935364400792376e-7'); - T('16673429143256557896853574875292172327063389650998117777668136985538005.9156698099892691658894660539763873869793114863329930039146096813387028', '-107478408440617999633969729.9071529239187240331642550654002067338975836414285167506215860', '8.20260811545606661396908107304136068380872993912615354808000919495595106968750582594596813387028e+25'); - T('-2433298586307081.77465641473337660801763802817481653388429397435772288734383710955919905923279924807', '8945608818026652762135420517379.424606537007', '-2433298586307081.77465641473337660801763802817481653388429397435772288734383710955919905923279924807'); - T('-70843295832985633806095066724872543838444364150876355516508644344503020757888058408332911592444048015580157647', '159194370214483300881159411658565511338185028333524386712582766324718381977826309423371642975467856662959008464353958219661', '-7.0843295832985633806095066724872543838444364150876355516508644344503020757888058408332911592444048015580157647e+109'); - T('3.2263', '71756256022538928427069542438.00966178692388729446382444038774751007836179716329976575691385315023922435789196791754653262230986812059146', '3.2263'); - T('108061134.3910585273259047952072200021695505338334592792817809710438', '1260951025714501457005284501987116458944716243549637898428510181316826466436575714044748818353924236900363398289', '108061134.3910585273259047952072200021695505338334592792817809710438'); - T('43607983963968869595947769368216107706521387015680146006305613629433990860442947600228456010092', '121385730326389922895424600532542775257956396540395781939587936260842487516174244325430.384295616198856908112758', '1.1504925896106825966642741273863721105609952802207648727165046290817382897631508088378461034727326937297965944e+86'); - T('-2.6480956814', '2148671523057716670055099537649941488566244507589768590863804139800870729193528442.071130969310679730958621114', '-2.6480956814'); - T('-470479333263.84377245126007813562135983915023544360010239389244912214130585392185699431847364158901094167357758815083446794565320814454973581796', '27849448232164647723510637195798019946766053448137414448566670989993.67717797401551478004030639298176072944', '-470479333263.84377245126007813562135983915023544360010239389244912214130585392185699431847364158901094167357758815083446794565320814454973581796'); - T('0', '-6993020667326513594.01598727239030644128692238032346465300777782504759087255641592855556786881965341488969418534051814789', '0'); - T('-10372286284244779022048585', '-0.0000001930730138191035178741471788596965420386122185118633654121349245216394001018297980054707996074710125164147', '-8.47592995170001700266169749815180334434465081954780254569435821161404742961756995939834569063835498482552e-8'); - T('274897009856813.734380955979520483734957204601027214931003941720546146487845256149072527968056465339318846303131569226913408938616354923540700172412', '7', '1.734380955979520483734957204601027214931003941720546146487845256149072527968056465339318846303131569226913408938616354923540700172412'); - T('738408012842109785457164849764507323379297.79095792233769102310198027453532813226348191188862586945019214410536832', '15306177324248047715406533.5158700026', '1.506634005344982055089315836033881173769102310198027453532813226348191188862586945019214410536832e+25'); - T('0.000000001307002813605936443383593439823579112009200431906135937099617451361199016339230482184530115838223218189460633917243083200', '-156347131201.0667716470724866', '1.3070028136059364433835934398235791120092004319061359370996174513611990163392304821845301158382232181894606339172430832e-9'); - T('-4792567274869561212802263.9162146352653952716695372928501404982289832583166534206544945624150460220976057951121526613072397239125750526383369389', '-2571615359217819081745372380499521952091705406387642084116393860754896982150026573094709965566690085424189906211974018648786870967996877095142', '-4.7925672748695612128022639162146352653952716695372928501404982289832583166534206544945624150460220976057951121526613072397239125750526383369389e+24'); - T('-40.05748869168454725527441481953494139473673991070979113635160468475219376406826789262579745739976', '-41875468662578995790027634863433077814557063632577215827031.031982081918392876105825240291071725658144212578666', '-40.05748869168454725527441481953494139473673991070979113635160468475219376406826789262579745739976'); - T('-0.0000022907766811721016183225617138609000543876574860984718810338550238748128247445010491861049613', '-3279074504656188611648707.4983942082641992057679531912380705659521798322669577604617597486447068188912830230847051445600458515668443081070949175', '-0.0000022907766811721016183225617138609000543876574860984718810338550238748128247445010491861049613'); - T('-0.000000000340313277', '-0.000000001255112168870655023338247473949331250106676281883642901353991', '-3.40313277e-10'); - T('-50225365.1475566438998761801442412', '284028617245837000189928101232939099744527904229835535.835746075', '-50225365.1475566438998761801442412'); - T('63.344721423304857459331086841825237874925064097', '57155073593666.40553442288889921516416834083269742567707391607', '63.344721423304857459331086841825237874925064097'); - T('-405919933.1066287819696386581647229483641869199888974504501408794124002251348919063696581146156799005', '2647178729438306865645909642983752549443679075960964976334982663855617.77', '-405919933.1066287819696386581647229483641869199888974504501408794124002251348919063696581146156799005'); - T('-0.000000000000130754174234156809102364575558', '1512769765054847098913787446631276445464675564737758845532029029227218416561642292270741819169983956650914922547871552583245517440681359875', '-1.30754174234156809102364575558e-13'); - T('-42805325218726498366672740080295203192725414965527973209314316749.7120445518644682586008052614425260815242140724520046592053081', '0.000123298332335657505901061098051881119196170384724006568439947745355121025753230625359269654114501774394590171609541470588517', '-0.000032325304000891296915093212441483965264186154572168660357953720611674306961720593830907904561258705086770592138813164224068'); - T('-75210406056668422373802918016368260769067586508935441638493539318778550326.50528533489988415483952', '440622997.6355053630471029', '-340429684.42458949795004585483952'); - T('-1222922824327546500522220970819290434122898473371530650066004876062845284114.47721875136651190', '-1379027454245733767586', '-881180208974102493198.4772187513665119'); - T('-30656582150188875494703614722772772221409126232115063256882064964663663147033209144753246762464712.948730003091026599897432459556025696', '-2913934951186033025005819092772439514996587951119743767357433798109195725658300879072952407504422194931477368634077', '-3.0656582150188875494703614722772772221409126232115063256882064964663663147033209144753246762464712948730003091026599897432459556025696e+97'); - T('-6460522065030402275014019.2874194931729240210323452441436174892', '-84550416554285528170014238135907266547165974999578715609084038263.46129840157771271779704084743623515311185778729738812', '-6.4605220650304022750140192874194931729240210323452441436174892e+24'); - T('-0.016364386296444405533757351682555346465502820950062088651150128675773350177464733695707386307349689534592475248473689442', '-662351516465.9032743599806965674027961010966377214913163', '-0.016364386296444405533757351682555346465502820950062088651150128675773350177464733695707386307349689534592475248473689442'); - T('1103343525164099798605597537113983882179727144422100669678631936027042820706120285756898888893404677995338896062374110057717750895679', '91748792242920404655427917872546031638524.76204683127448751123961871264830271567888066463998429231705219642715054074868199195373673227635494751953719', '3.076328553647557636193208401331029365654020485144903415117912662361833098755573989373555529561896396760648323565651091850507799771898789127729144278e+40'); - T('-0.0894652716283348818337684886989151280762017763427032659791509101256464820297', '-12966.6884', '-0.0894652716283348818337684886989151280762017763427032659791509101256464820297'); - T('13114418006467273871814114136828793244459258873580991741468083458844936', '4759000553255960840361168620.3774494470837273198', '4.2761722071204063036259345611428685193209688534e+27'); - T('-28951495771059579052038784935583719855135835316878812739160571275658593082655402834569052032878823395641241968136.92574783376902191547024436698530', '-3031768663774740737176934765360849728180780437211886327623459816735182479695223019269147895285170079834032202516966937529989903070284157092473214668.7', '-2.89514957710595790520387849355837198551358353168788127391605712756585930826554028345690520328788233956412419681369257478337690219154702443669853e+112'); - T('2393723882767965821294763322394195744548891304060902', '-140981135960273230.0025778', '86668711566444988.9814302'); - T('-3224488416109581472101333552995382215707383396998952009319985210337309105631785072396803.91964338865842816515912815197781787', '102818159313377657005579111128189067224885718.140628085554012525428767372817189722551478405035418445112060974169840360487565259217', '-8.1595634025043932590241822413741540317627232887069206304733728507469999734166316619875329520357299837254473649437591096347440866e+43'); - T('0.000000000000000162614535957335504400161243268689702722565890737357214918357356590168738846464706769774484467251167640135858015634083627803179977581109102', '0.00000106803134832455205844954340150714254354766339175870844951355513521917239107042458407307482848507498559', '1.62614535957335504400161243268689702722565890737357214918357356590168738846464706769774484467251167640135858015634083627803179977581109102e-16'); - T('-3927.4031809', '-0.0000000035029583866611658486269733571456482523405154883369032001554318344330512146832289592781514675456658500756286236294841624823979375753461327906', '-2.6932691679676130460056959057199199083055272525449126446015947490329456323969370838199750438158748550553789684640297326857241719276712355958e-9'); - T('2592701578783037181466698143885146669128411307594485136303860886846006143235135122817836647040961317262173311873893155', '-2476735053659095937599211826013828027536167714634610749923083443278572078026871812469079060633677096037053974280521689349022693979242065', '2.592701578783037181466698143885146669128411307594485136303860886846006143235135122817836647040961317262173311873893155e+117'); - T('96.04335877730532081621787788158383111099350287030581038188446699532128180774027960706578', '19731419380883276630592147059117156462461951865864609673166.4479371059569659447212290002838890816175493435199181043231716596224989574671224595362826', '96.04335877730532081621787788158383111099350287030581038188446699532128180774027960706578'); - T('325023114939529014657978169628372760601480839073817238211782426113558723164836055970989007713696933704', '106223840476390782472173917090144170488887005908229635819404889799358852135763.040387492', '1.05150216674283695595324235267625323135707751092953285615150305395692443496735212656796e+77'); - T('-0.00000000000000033647992217979179179186957', '-0.00000000000000000003156150266634952697310752', '-2.74225383948473157029928e-21'); - T('67711097909563003399071203293654909244735459519561246144664768566612029202546308760389038038790661412078936611567061527752843866673871533', '0.0000000250914595238219383127319568059987481594970145735261435136883603429568', '1.1931039593784471503157310210681907892950978516052505236994695043296e-8'); - T('942307044555108835920493820461160734540503253601173239.92559776036964181595894387449189836528222244015903442453788542293705358104537', '-341315427404722210577937787468731.95', '4.792118403841194654638154768215812559776036964181595894387449189836528222244015903442453788542293705358104537e+31'); - T('-94130661760152187286400649382778774100247360104073487553172289492592909079685814047724040987.545360', '582.270609307311781203990506333968732999092917722', '-429.29359293653441023844377749905124203115916886'); - T('3313638785820621590180176562638.00992668522579291400041235393589181972606810182197653338554677836315505146', '90527335216395767852035210539.14', '5.465471803037394750690898322896992668522579291400041235393589181972606810182197653338554677836315505146e+28'); - T('-0.306955389372676043580907106603221153651127238512560719', '66.904579801977727781298', '-0.306955389372676043580907106603221153651127238512560719'); - T('141390900187450346.4446228025914244', '-255850256279441962530367023331027625163686895444551579538905939296353570502455036176395785785059148507467346341628419844281564795408561', '141390900187450346.4446228025914244'); - T('-31281694978574998092.32325767151', '-1542462855.73276869937293894166028800355184049470473', '-519767223.60416992161136296357867627633975428783569'); - T('0.00000000465065764192519767209223768411174160970559048882576195807880851927339930867660413363177803', '695983282190820825900286910552083743912340874031142607911981006600892487992712378.27501435873441215408642204715421306049', '4.65065764192519767209223768411174160970559048882576195807880851927339930867660413363177803e-9'); - T('0.000002299699', '105', '0.000002299699'); - T('-751157538.56375056723760379542086174039490718435868835658852', '-0.000000281235130627575144572363209737439923', '-2.4952865744315606513538295859410866335658852e-7'); - T('-1492151820229229.7080972636031810741838557504286290118227845200639080208767965213313891261997405771908981', '518534900915966328248424169467.8926376495890764066267652', '-1492151820229229.7080972636031810741838557504286290118227845200639080208767965213313891261997405771908981'); - T('477573736732380117689005270695410306243996300502014352674644518059825662478485969426161545468188704450446835856', '-44107433160804154887771872206618010747863690779283512394813143542934429409262133052168377457307.7801829320544', '4.26587795612760356325706643922768450442822164299827765862986444105362242670998534111196655345782505509351168e+94'); - T('-1708419546267714621908304198526.86627770247445328880', '-6561936.23828726436959004970934079513865615878124751998092886724055429258975571944079950471550813589210381712752008129366876', '-3255473.411304257056507423459569857877329230063250469248244750150261213529383645499126139366386431281819493395691345793149'); - T('0.0000000000000004527321152996104608068898547927166509996670208320178171898523653701667544358478578289218730097763063669131852', '0.000000000000011707656496202100248575019665652640050450842478555351860415163190039866', '4.527321152996104608068898547927166509996670208320178171898523653701667544358478578289218730097763063669131852e-16'); - T('-404484', '-85217.71121979405', '-63613.1551208238'); - T('-18533', '8494505138020021210045546239850616033745106209211751083199296574492725741699134845133691829140.5819', '-18533'); - T('14584780882835094104107586638253636777793348510840823526783209012506801757754406089008052927648564160645244670', '-21080989782.41894706651964371557621722316246417', '17111578889.18009353060098900510442621989297665'); - T('-18850349239022849269493437768828110069.075', '-266968030820801670345292489489385463532596835667614989691512484830998922088460557950927724249457393516001647830350289181903170.7820256518', '-1.8850349239022849269493437768828110069075e+37'); - T('-19610683914857783540233383.2728721254117951549911093483423563874335264906700610318012707642300033397357755301605728080', '-13420179588.2352455625807856166075321914322366264262368350508886102902970310625894710130400', '-7601279880.505746566871435903625090660503811218236450145616817130204180995181500543203615530160572808'); - T('-124398303.94329995879106090298579425682430326155902347006975479300049695495574497472662209495203134041033423161', '-37909502210888557786693637049239639643429705500565493503854388407978303534883740337011543195819593982677420420894837793713.5474583522280847996415528834', '-124398303.94329995879106090298579425682430326155902347006975479300049695495574497472662209495203134041033423161'); - T('-481349016.43741541655560095983436187596328463184925547241485317034574087191806756468994011864', '-0.000000115888750399354267961415724244044331087', '-8.505867489584104076963971731986268339341485317034574087191806756468994011864e-8'); - T('4253613611868.577209622157479284930905750102791384', '-43984324685835869000303697875967.082217047029855677646732359601172199279', '4253613611868.577209622157479284930905750102791384'); - T('-121720240860962699516920276862045784990182862', '1391.961143', '-606.43001'); - T('-536976703647420516808876195121833670717045212754909788504401613131.09832340493070', '-0.19', '-0.1083234049307'); - T('-153530020474096871971881884794986454397802757290849940749180641455669', '17505687549970976977562427455563558027158236049114219594525022835524956857408951202033619176205709302677596086790722061676556549481353529948', '-1.53530020474096871971881884794986454397802757290849940749180641455669e+68'); - T('-68463793074671329', '526225751933655101274278816933572067012685551994.60347692993', '-68463793074671329'); - T('928', '-0.0265270808592803498688377952309584753581754116559858632164273181218506763174144086', '0.0031302997955205384474094353796565449495740386465470997231301432977903878917439462'); - T('-5145804390488853836236431219.38753169290767614', '-644164778290743967724692154273953884635573804098220159016', '-5.14580439048885383623643121938753169290767614e+27'); - T('-48662.5540827771318125347572899275647466291424610808453885768596532572841012738459644479349273928355994065901331259154173718078854995422986659565794', '30351303292454515546174815773976.50499295966113', '-48662.5540827771318125347572899275647466291424610808453885768596532572841012738459644479349273928355994065901331259154173718078854995422986659565794'); - T('-3764151.657035364928443897184118536717270878944518929297476941743265064271975725529716777507698244379183234036', '0.00000000000000092398996106085832046054510220753163692327079109794497033611990981439273055580421698549040809961268572', '-1.1361392097591721210516136641195398063669177345191861811669379578999595682832164502803562581741006244e-16'); - T('-4.9187386', '-65979133267007831443913.4285', '-4.9187386'); - T('-2941173670207131755888751957586931136097649817241', '-0.0000004814846478935692967474817070197814917779433964', '-4.143231488767554469914989546635670710760768348e-7'); - T('504086121738234114557048964595466438854236194.1238871658511576861524800891', '0.00000000129609070', '6.848482861524800891e-10'); - T('195880.545202875997253', '0.0000000000629389391841695155107474938177568932398308312865', '6.2576456087309632014641966027161174341134495538e-11'); - T('177588678283865131748445.20341144781962491999105521', '17633411549371694148601456488804240695997368248839673881068256513149766988205700935004.46173570', '1.7758867828386513174844520341144781962491999105521e+23'); - T('2996061752747054491320141560401547784315542844732729476182822177717526975778111415770939188808229.09633410131208348150766825247507152776287', '-16624186814169509834280278960.382105391846684300669229217099456249591810668575643552119700009655524933947866332356', '1.814501977947587086559582750402803833652237808310528352266882376452699987265363325517337507007541497009363881064e+27'); - T('-0.00000000323462065679722578298211032318052426076792102642153162888985566640317479966266628791447782540983746324805874876', '-9760478555851830779132259667610197027614293415305346099207953950643351758497122945313648929352', '-3.23462065679722578298211032318052426076792102642153162888985566640317479966266628791447782540983746324805874876e-9'); - T('-4425946782408559872230702296548525017691907874768090.842721989595157930188728939976', '-20910144556974972002031925667197905782.3842669103600658807854243828908705698618611597944713721513', '-8.1174842407036734952567527185747399937378885936959608945880838786170489622477090755781556136846e+36'); - T('-0.0000000915636502802479794654280073153529001575316015250756659772393754338719833895732465666755842320466463187168294526995626879755559065', '-3893976987070430373575695657419905796411.063325237201233825164129403122912495195291694115473863', '-9.15636502802479794654280073153529001575316015250756659772393754338719833895732465666755842320466463187168294526995626879755559065e-8'); - T('-1361794.7698127968', '62068.38928754185504150471180387153', '-58358.59477441784412840105211869787'); - T('56946343438026239453088.035469510090959501909086942675972', '0.00000000000175389432812412891469059096827552600092473688468378873071', '9.3971542153953297729457229138638683477757090580201369713e-13'); - T('-216423551430826376828740104992259241726966617148112640804095596112778449.41524', '0.4617285434914380589707413098498642094246733418452292890078428014343835392766', '-0.405084120420214123348047058484819751957998976642922377415700300110247041758'); - T('-609540688948287254916667914127779172583532177977109039873.52', '59942.85701', '-2421.80657'); - T('209146818192414024940477485662106872447921248923844.06942710', '194887998177776027858422538823791035671522302666816586057503286336727561981.277418658314883331800489638082180', '2.091468181924140249404774856621068724479212489238440694271e+50'); - T('-0.000000000383471293733892695539029352514599525885254801315847674728451500273625909999928055692998459043656614805973747464908442983325518554611862099', '1436914643087593231998188537.43007915688640422462805553206387040332979752282514782607648003897995312517526015858941762085280', '-3.83471293733892695539029352514599525885254801315847674728451500273625909999928055692998459043656614805973747464908442983325518554611862099e-10'); - T('10973736.04887910157362615080', '-1914749385959783542863340891438235602833614861656892143731096463693925359032389835949786237963580576640993170', '10973736.0488791015736261508'); - T('760745776921863883695925202158755621973717376920162944676687742379357095109520213981477435495396177945964651.782946554742559101819380914', '-69587305864702662068384544.416103380560483738456', '5.8598017452652424661892011091840662374011392595380914e+25'); - T('16517561.49886168205217694542953018253109738947136601119171501851647671572730355', '884446285891886647986941885828001196309147.2792', '16517561.49886168205217694542953018253109738947136601119171501851647671572730355'); - T('-126432585406331428026504773834234402700464127021090.294922390288914827690266641336640485828519895540001279706441657289346676025896', '-93341638437704.72913174198140578585969178589732172645484624397170924423918151900900579966645769211771726282849407857845312304820605914315', '-75654522250027.80364908433251628732320633450589708873254066633079438869841763142004458404461623673413329149660061709636674643820441363495'); - T('14047.80', '-231827244539352913982806428147776204855673320603750218551746829240475.071834413853548835', '14047.8'); - T('765290437.4274705525375273645201254509124811109914652423385744196687082906715458538518828538063', '-170265424568071609492595764439416049305779878526025255248414508', '765290437.4274705525375273645201254509124811109914652423385744196687082906715458538518828538063'); - T('3311720.61', '-404471983513006673196933.1466618881459376508409282781068373319987742328030853185755897212344359', '3311720.61'); - T('45991089210393111564308702224024179778983272166206394790320.6444639679813430135956296', '221492062325759306969421300129294571085950901905658970894066426987989464689596714996882711.33527373477304903881568245457206872272357', '4.59910892103931115643087022240241797789832721662063947903206444639679813430135956296e+58'); - T('-2676337743.2669218950557047383697749234730579636349195010443938930301809798701005736724197628525', '-0.0000000050641988267157160357685504958602', '-3.7830662640990149837887633696455195010443938930301809798701005736724197628525e-9'); - T('-0.00000000380228587817867341197616338523104640068872756692679613177059750823089', '-4137484037122167456128781504273195141726445714.987850478841723411486102808695385497342585068965', '-3.80228587817867341197616338523104640068872756692679613177059750823089e-9'); - T('17754236857117435132308613993859837766610271655972290799038080', '1704833941929076220640814071735309403232964483307878895509518095943568281423168227984718596.14467827501524520840433884710', '1.775423685711743513230861399385983776661027165597229079903808e+61'); - T('10027836760407284995344.880831', '-3855354419049536789489248488666738929318752483890215632137859537808426365760274903064967999211093775524598713395085010.359171925318425848171423905809', '1.0027836760407284995344880831e+22'); - T('22202026217695996204973556985884720436842373263831402061744953156987742182762967091937136', '43185871335981070591623795158076323942623952636793.0437867028967265139844569485433664719704674775842634206503820291927569963965227634755940752', '3.26504703695283949129971347692208384440451033569938192969127171775632235348169726099152160569117154517580009333832314710480195174528249498288e+49'); - T('0.0000000000000002128976517031894937726394149810371372904281093627057948171053965578050857567259999271356289456690', '1638227219164.830694905159101117562037676449467894880755446732079715327877', '2.12897651703189493772639414981037137290428109362705794817105396557805085756725999927135628945669e-16'); - T('4814208595346449.043008706195329135991290736899', '-42226706042290308331808643328.1624582074527758568288134403184705773169740487518531767292082378956608507002902325', '4814208595346449.043008706195329135991290736899'); - T('3038935470646078516363834582672813654955.584857107298587208166650999390267178660250688913496749522905532796141150317042799346138826323656895204692822688', '141878380568380505848720966069502343909172636', '3.038935470646078516363834582672813654955584857107298587208166650999390267178660250688913496749522905532796141150317042799346138826323656895204692822688e+39'); - T('-6169003413317472256185593952980507739590492599058739528722582082779602743497784.3427049376611779107', '-31.42072280707122325885993720075056590730611405102283453158861014159701198218841889427', '-22.19776446374536431053795008714160003252266054630255634003844573319866809719521193069'); - T('-0.000024509540379901693081094681822253648979115777140798043255679480624', '-0.0000760', '-0.000024509540379901693081094681822253648979115777140798043255679480624'); - T('724279904087095753394226280693707412319943662527127531541790583722341314962022986924003081613987164108631904455425855235377854', '6273776855104234371654058867999.169516300774', '1.476368318259034422871338396645233240954186e+30'); - T('-18588676215231158085.946211173603363600678120130466593615153207303801832898083927420536813131520643032959684506944922819431821478386072330111143921503', '2387112710.1232817341660077099628961860306411347682458219818878317649399403544141963545255184471115705860288103752677826329794816', '-1517183187.470515201152916387886061279636026354398496623478118729449319473763829860908182395451873749194364531069367833125880637311143921503'); - T('0.0000000131867789180977263531745735221989806107871520141527201347496177906746916558678489315586403635471727664914100888', '-0.000000000000114689475499172124081924590658780042763626380186641948', '1.24041539138704830479374337688539109180730530022376056177906746916558678489315586403635471727664914100888e-14'); - T('4311427478.283637806857955975409340894341757614838371194103474257204535', '-649782518102516258848559576865098567584081840293172629619735846503681807002436279687009986', '4311427478.283637806857955975409340894341757614838371194103474257204535'); - T('1084223088975587942008961639610672564432452165063129695399364194.7724214344063983401791208462284827932750', '-84781318440.755680735460810732984305718976302629343574203', '76961803391.186713545521492205652920042921934475118638462'); - T('-0.000000061', '8786983807198223058379063246618879186867662783902087862998860315406531227728533477069121826634550907069994890047651666829499803810', '-6.1e-8'); - T('100528259107227.081922566140125579756940512053795436712849097175289286237932581152', '942713200517839530382833024395280742818911844807588995366076616161481.3198459965316435128156454232997381607367702732751935460', '100528259107227.081922566140125579756940512053795436712849097175289286237932581152'); - T('-27531354435.67909536742252514929056355009540359368305025535772692824010557599100912735927621003', '11000389644039856717798395867260.389464825121873765842743496221295063610909330014396388749003477966675244072', '-27531354435.67909536742252514929056355009540359368305025535772692824010557599100912735927621003'); - T('1241134823.82242025576415', '-2436983229830352502914812262238245631.638630950318028', '1241134823.82242025576415'); - T('-144010855465.52294929635059866397929363679648857972113703', '-0.000000000000000000016080987773993260753935707240', '-1.063553116788584594723506728e-20'); - T('-0.00004038256977505864160533312084023171599294433697748308177067704771939462', '-2155348555606824361074827496727023440.727544202034420464676729642053697349860774140137856318160073308875496365295680765947736972447496259', '-0.00004038256977505864160533312084023171599294433697748308177067704771939462'); - T('562656152020791212164121284176482277264519513933510410360247916921555.021006097720457824068898265551508', '269214854076690329599299119058534607707434613306556247775662477434328445134773154913640995897232700833.3509809427607', '5.62656152020791212164121284176482277264519513933510410360247916921555021006097720457824068898265551508e+68'); - T('-0.00000000538631554992448118188735718881805592894263653000803275203171961114344766766783936939408658883502898545560241278071', '0.00000000000052', '-1.5554992448118188735718881805592894263653000803275203171961114344766766783936939408658883502898545560241278071e-13'); - T('-420165011302009959726745508121475336218614630482602804564105573952263470925277981868876777955931.586980555730131401861', '-0.00000002570711692260590889431201869485340369724462830564055937185895849465134', '-1.195661613348988387547281332958532992374725080459688873047446880846196e-8'); - T('206614495821030856258957814325343392659221587476465034962662750862453963123443714469071555929832788665781745529.367727', '-0.0000000001661160112583532898587677052979754226652657040117961034695013256023840810657258489771022699005804343245729475750048', '1.0429548835437312814921716318665620042989758877917059041179013022218706823693124370915675661873453951861654108688e-11'); - T('2.129629456244559693351889093283039010248199571059181269533286862278672114837554726244186016512512923248786195784306579695279176870950', '167942663220994525565277036378341943077.97', '2.12962945624455969335188909328303901024819957105918126953328686227867211483755472624418601651251292324878619578430657969527917687095'); - T('12176138559764154534976504354019977304742047856939022090614225781269098414670923528582943.10977195914', '-583632504653.317910211697569945462945466919', '159535682461.909372767660403987685629831037'); - T('26801.70776', '-1839840489500540849073275119242455920755679371644846892291102931868727750660630725018122594847841701320602357870867176213530.54397', '26801.70776'); - T('-337515772588445810907775628658674617832446340456706715404089682413724911029602181006534947673106470310169888744481390287932929420452374671107329763', '747003702426526.08588776581732211783056883055836800674965151006190388206832049147104586571457728195327987825881461665724657243756841', '-447197560243704.27747928725749075767284852291932690545433431257640274850422177065998793355714235779800038252557174834517670442529162'); - T('0.00000006362058132140170298', '0.00000000000001458044816', '5.95243898298e-15'); - T('-3594215153876751761296964832202126901729901462252166973917215.57369585920992111877692697850590420143534264638009736180', '-0.00000000000535939139326835434743507032712041831099958079045601050357452232464286959087518022443128930720117303095792238065043970685201723040458303209993', '-1.06066578271026895852431656785059635221975944055981884000221087847830772261936494977835528139047391689269307714517916852256490493941403060644e-12'); - T('0.03040477493704564561379391504523657646163165', '-3829968110375376699653656403680127708.96', '0.03040477493704564561379391504523657646163165'); - T('143839023389620287917080598136939204834211679465632489449268587070547858891919951735433984918754860511172087386798608655301168386080537222501170274566', '0.000000000000000000050904519883269410714066625387981521860251471402534287519580544338323972447562512119520450981009639220992736058455654970440678522343564343711', '6.947705519998581358090053013911144054426549810249668609792468243672747095472094889504331332164049453364474197265004105580867309484110017621e-21'); - T('-358101998722704280658404123884651237259779040468133477835791002975414884911463470305794344', '339013470613986503939750434731451482.80428540724852964369292178705210529584067980487', '-9.197311229967124089066230086719075507485006197972684367837222888572478434033179797e+34'); - T('319046228556.957337976107234589381614513669506109842572986792638453', '25341573899216649823607289015612827072.54559124982886262122240971817339', '319046228556.957337976107234589381614513669506109842572986792638453'); - T('0.0000000000000000006665605465014236098898571199127258214891647138029333052871478626750277409', '9.2994763002872765347756456272', '6.665605465014236098898571199127258214891647138029333052871478626750277409e-19'); - T('-8597100765432', '1.4061930205430936722438880987030631627463886746451173645000969851082153846054399284881', '-0.7694289567800680544500753441563271099198878457218307264536433333802305802000687849826'); - T('-0.0000000000000000071063790240674330676736540699556204549815235157130766649', '-15261432741466337551829351259412618954339608783801902625.23542905091', '-7.1063790240674330676736540699556204549815235157130766649e-18'); - T('24597860958863607.704638609505578054232793927642701487793854676929560010244268672980', '1802481949139187718903504517799237488488797785109994700474213611312061877322390386.5344597552', '24597860958863607.70463860950557805423279392764270148779385467692956001024426867298'); - T('-844517336468436751756396415750.8694448224004606845713303248407308924369', '-6675658540060519673536104856700279546693289387521217726077810.838663278894308972962912969825', '-8.445173364684367517563964157508694448224004606845713303248407308924369e+29'); - T('297434395027988881726438857041249149217423028818746940800314053389411843447774222656867639852014201825402955.835636255767352939888666344841', '-1165785127343555259111383115954948069159135335071767276621771249681211270602118289526766642905999531428644272986091711103938455034315028421', '2.97434395027988881726438857041249149217423028818746940800314053389411843447774222656867639852014201825402955835636255767352939888666344841e+107'); - T('0.0000000000000004255616740012919799050699535141777230034734861498243296211362650503864808633010961169436418851564388251642437913320231793888336551754996718520300', '-1651576988821130188451193720811416856607234210129237.883909970833794549608325237454309557258670200886', '4.2556167400129197990506995351417772300347348614982432962113626505038648086330109611694364188515643882516424379133202317938883365517549967185203e-16'); - T('0.0000000044147096298613431712166079076764897780999854959248060119312935665040776072223628259716132024850399516711414810843280407052112788935682838888941697129', '-54936210850503.113414', '4.4147096298613431712166079076764897780999854959248060119312935665040776072223628259716132024850399516711414810843280407052112788935682838888941697129e-9'); - T('-0.4323857463176142463414675213681184495653706035704024732142', '0.0000000001609886172491629520941112538601281073954128848183360', '-8.6849995449369811756464752459042905872384200820824e-11'); - T('202209.7253876600644276744210492692', '-0.00000000000000000338892963079640180409274746855742569075588575425187261714270297603518981332021947785032402317811726294429963236196669448038', '2.48774060567808536908087435166803363667804416042024979495412690793460127819789298078609537589467861727739804721043627194686e-18'); - T('0.00000000000009465531808110383618357128551578926701934798401879351466017414251990316347221304454773710889175218068990694997919702598', '-15569690510391365108565127049060079732945584147892308249635814990299790974106289975322836618585675485711', '9.465531808110383618357128551578926701934798401879351466017414251990316347221304454773710889175218068990694997919702598e-14'); - T('-906454225978706010766508621855689367113309691338376322545315495042716078153614424771069415704594308824862632391131402393608738253280649702961.6641981', '11660199610678028374818731841856.7121334882150901542261870618813695156', '-7.528070467742355916798912382526137282899052453804150111657562206506e+30'); - T('-0.0000000000004101322450307718410872494863474574665562369115054909734079224620478881782969556316998111941117895920501524161853814989807532', '423210910279868701995463018234848119188756375891085182100812368574543773666', '-4.101322450307718410872494863474574665562369115054909734079224620478881782969556316998111941117895920501524161853814989807532e-13'); - T('-470158060793806640223969538148754202660458782.612615684822290245236803305653425956424810905330203916882572522005759948', '-0.152695767111052424631688337299212951189573836707404959632830139430511960774250914378066254704926391912654597758822835198889', '-0.073651654118155896924523703948320110247909645704509802452201735369382844041627083824661314684771341842243469753325238257779'); - T('9.994426780915974145347014135575893960205706681677054334376705730901774629743310179236', '-7', '2.994426780915974145347014135575893960205706681677054334376705730901774629743310179236'); - T('-39230663720925065911.709', '-0.0010728700907817921430794540906048057564326188014160081208465534724741317514197503024274778176377553223843602448853719066858744960609415784093590679', '-0.0001564596298149334550945778894989078903899810456404686403803445329346353151049500880628673488460793553585288642059251153644557695926708694554291526'); - T('-9075671784025800106573820389326423822119789380499', '438119.273000651189410948408459618402001563677344624063470699316786673102238473929433190146989564587119083078896154298057276810', '-78320.54798431882932621652203547903308024478004733552908568056196964210261306773644726193677870886973142528414057490679038002'); - T('1079464599531882583207284547902100846423694366679824675144404048.87000005666550200', '0.000000017634963780257411646578062463223304619646810432414929790810861732698710183011522017480097941669752799780304922650857504090532971627', '1.3442627394777667466341237152453278981336433385361428945890803207704744384963683817727469649088690273630173830384666866982410070125e-8'); - T('-1377931339724154311913175642590.56223327166804475379410759818086421', '-7343859629910618280997050209823875113651629358554', '-1.37793133972415431191317564259056223327166804475379410759818086421e+30'); - T('1802318417733734399696737845540821628492664765097395909955021748011122554913873397', '-8.79', '1.97'); - T('0.0020082022907469851361342734885482', '17100037717357489922255553618227047318529253455381725674352785.849074888', '0.0020082022907469851361342734885482'); - T('-0.000000000000000201309146027982061988473635139635744221112298825585606183375367564795322337419170860', '112.510399403346289716543031187076', '-2.0130914602798206198847363513963574422111229882558560618337536756479532233741917086e-16'); - T('5143252640334.9471010534789709623389109664', '-12505822857859299547007903357.4580719301', '5143252640334.9471010534789709623389109664'); - T('-310614518267845321018804317663129885461172347268277845899925992136506193955.6878276728370903441307046405502757962598225976', '828661056524342624928394882871650012268186140555930515187891793804915086043336905141599671004678775857.154200318917132520559533243825', '-3.106145182678453210188043176631298854611723472682778458999259921365061939556878276728370903441307046405502757962598225976e+74'); - T('-1929389822669343098632227827981105567.947555377437838103088250130930057647071898153543733069402740720937034698316740', '-307415836138079404706197455082684322873455098421189046955.7609473524278956753826621443402955422788867828551884929404606716804681', '-1.92938982266934309863222782798110556794755537743783810308825013093005764707189815354373306940274072093703469831674e+36'); - T('-11914253674.453144069362', '-0.00000000000000640136130420098419950776623218693603250164367282493846395409073044734225569347829418824701162864570620545495518155534050427613', '-4.8273343562972522020998663785108839173049437316343375965321326163190438505924066772178429290654069832627450922751727028332871e-16'); - T('-0.15173695389851714323653081625731481081839738235113367548743715930033221373451204809777430598802691008061', '-691161057878002558587.1381127439742482649867259644071300276564300364420601832039698998854339739003491064795364533103890488', '-0.15173695389851714323653081625731481081839738235113367548743715930033221373451204809777430598802691008061'); - T('-3838177724.07192160266376738721758615938561957533876517355792902066836939676750568185', '-117267768035354.5367107462355928310645', '-3838177724.07192160266376738721758615938561957533876517355792902066836939676750568185'); - T('47087514451451061936440267540468779859177214505564890370985541624177363716426632243202744881820164276529614848', '-1172054812668893105303.109439', '456515720116084107668.775007'); - T('11.3734955974031313554231883290508217719632632214092285252072004770873986564338', '0.0000000882199238947298298119767888364932094713663602767583773895510', '4.07724040263961106723900703199982684406983245152715796283133986564338e-8'); - T('113112144333915213154140879978802.056322513047654529205838659001489881104759568822806', '-1070387536549080109047458692952163930429421126062620116475206035463717082814252900889701717285876343686799120756181867129129332436.65606609657679300632', '1.13112144333915213154140879978802056322513047654529205838659001489881104759568822806e+32'); - T('3375429238215022669388.0525445329603537774437395034276346136375188392713458484753507732527974095303619960839673965312316444565719192307138736', '-15283720773236316823.1386624805243134789068589159295817320630835525511329', '13010668103032968297.5467988176113884179347779989196535597591372780221078484753507732527974095303619960839673965312316444565719192307138736'); - T('546144540025218603622035747267.184599682578', '-1960769463.9717088415363003312719807015447675844185997229455947383216237877444003008215006845488457016693384374828878563804', '444038342.3009350705462712125797459325898357133660731360753819139185958293625962717311560001031089517417729661706079253452'); - T('-9560649763280410877866958.6894727605272476369381283550793302379468448211577761', '-23461693036891534270.66763', '-9850747110662569899.4644727605272476369381283550793302379468448211577761'); - T('-7.556218606', '0.394476467282531274033012749331622902099878763812408645207952399507467807592020641605998980948602455345622981947021804677652524', '-0.061165727631905793372757762699164860102303487564235741048904409358111655751607809486019361976553348433163343006585711124602044'); - T('-58056996634143665360898635240765086115939487200129800582322012124896427026358562634.523876053912312753303154016822967233902154761507412776886982546', '-0.00000000000570977225444819760113544221498368980194767956186945188399903686296', '-2.45163677721343452196746595282018225334170521591501642928558451408e-12'); - T('18782896745334687682661478191340244563495.026805139784759687443039109825113018630522104252165496195754', '-9359445141829484597852388054639726608853279955027525490131658108964763122303352.11139858', '1.8782896745334687682661478191340244563495026805139784759687443039109825113018630522104252165496195754e+40'); - T('8', '3900985326526441441709979123557070376512415196847270644745821164883858274100930336537915531', '8'); - T('4.77286747468879908670114975931', '-3524175598424140013239.80796623070242774065271011395748053461', '4.77286747468879908670114975931'); - T('0.0000012222802813622598440592629347721226314717119700537496676757382132', '0.3110009405107017209802725018936257999673470989741925009496294357363888407985893667857735227882746384521443945285824197537397541092276675845639132411538', '0.0000012222802813622598440592629347721226314717119700537496676757382132'); - T('0.00000000000018384088619365879016178677544274849275468587911722905323257047268461042780866', '-74691051227281886487283380566166059678639451432198951288186231108115005924732001159134690543080138545.89943551', '1.8384088619365879016178677544274849275468587911722905323257047268461042780866e-13'); - T('-0.0000000000000000143373721383179309670662810405823454166842726925', '-4713427367869967855559206933578165851630208266683044', '-1.43373721383179309670662810405823454166842726925e-17'); - T('279088431668978817721818400435457144048964563707000478127542007364526390756155888729758450016626555984216682907494069.3863391561390029008', '183068579713138743128987913913465863438011702698993606515690229413.9450791032516285344867478204174704882799732', '1.15006278031659660278253789496724532897780093575043549889457711140788489320423312230736014908551612694280186e+65'); - T('-16267494087786592277827896738531922083730', '0.000000000000000000088706162618472944512399910698929840282305406666674993734458901273843764276', '-2.5909627800753460482545058108789409575362212803250623497766964477362719992e-20'); - T('-44.24084992', '68339625270.168878456952498', '-44.24084992'); - T('-56857196985399826069072678731164191368337062143007401708', '-592412264968673971778440741608484470265561140708351266072976205766765457328334968787621711087457877572916180459788168624044681603157772.513540649385856', '-5.6857196985399826069072678731164191368337062143007401708e+55'); - T('1104996654.18304259798965034573324286', '2510117408561620824893581029911555831891170476567955656689227848034987920.73715648491088584003908515877296524588851119764300771', '1104996654.18304259798965034573324286'); - T('48029.5677151', '39713342481092.2036831420612922', '48029.5677151'); - T('-2677.39369111834569676567245932', '-2034534263100368999018977132035007334300490999268060730506703.57', '-2677.39369111834569676567245932'); - T('6075972262973206757621791006694737099204289938612010291817208034207716598155036627342694635533302369062510053834294276312030673359251989177221', '-4216877637213071624668885955274710017470051201390436656203.3175514798774907157554310607394066223414256256857538268149428', '3.4548483050634980937680079005687259547830032613011978548019536253507542566475495763279403287594055753811530981533191188e+57'); - T('-39778415088348582474737099860821880822219551752035911412802038639306564534087888730860157447303578769441574808129741.7837578735678589361592672812', '-438147577016143338832668633949246668826241701286508135724906278119313424092726.09783913373814771620054174557624677579917', '-1.2108902975451343030038388997376413494545893581949027873931312889359460168754039828862401872164621816124117110545720507e+77'); - T('115429370.636804045497572883414508754301504446475', '0.000000000000058502293269352180410451175558983836676566315944378566117451162832925169472129608582', '4.904729335492343815789815485351399819289163720633876216160558528963863725402504712e-15'); - T('1866863299414485869402976070337638006397265759003452910.410739287460164932952655292210247956540858637537378190', '13247512825788295255972523418673482573223602517867812976052652428259865841176971399205990505517917171898503843932790970.39116746434798125080894456', '1.86686329941448586940297607033763800639726575900345291041073928746016493295265529221024795654085863753737819e+54'); - T('-7434850786753.20616600514461', '0.0000000001503863022082014768371050790030147497084483425232971401283357127842725596313687', '-1.119036084550700826530363097548971535460013328630270913936600073612544699109413e-10'); - T('-0.000000000000004381873159982123279917425506558261522812871473725919073758015893922809957534001480944265329307788953888508410293960888807232862971987255245464', '8109725899091573689402454319931.18350836066336534830831850485049011849459896265310046326036965005589194064300915126620', '-4.381873159982123279917425506558261522812871473725919073758015893922809957534001480944265329307788953888508410293960888807232862971987255245464e-15'); - T('73314226283.9570', '0.00000000000002960597549365951830985161616855027789228405534080693647514805969585779006342966275284091628479572363547635870715940487197244239361', '2.924235162215933531454887853805516514067221019818723756217344334797277757263190674533556736476951724389592416040236618857138094942e-14'); - T('1429287903385', '0.0000000000000000026227169585162217601788967257094420724372717782024286696197384612049185', '2.1241263611786451580084403357462126454870868777472160598748154573957925e-18'); - T('-1399843654872820025220110414591055060649943.5381869', '-233177597420892.6290391881528712', '-56301841991516.0574900024787824'); - T('0.00009781914227799259379359855012042142895087114611171661229344677069', '-21540700792390405728340.4941249102647270294567971', '0.00009781914227799259379359855012042142895087114611171661229344677069'); - T('-0.00000001302596750035354750648883838249600391852130416107', '-2.4', '-1.302596750035354750648883838249600391852130416107e-8'); - T('-2539711480375833.8787680706295245', '-10090855425.2645916699959021555055665745313421124618054996540701587614046326913632297741', '-4623523540.3888968219914182369822556536917671629446250650061622946364257069368775354156'); - T('7345.4230955739343601041285338890479611692071680966332935062378031079686398419251932', '10343720308772182919388574543611215023360174132529300268435042772499308507904636046339051573', '7345.4230955739343601041285338890479611692071680966332935062378031079686398419251932'); - T('532915932842606535532293569407035699330783484419226736382170882419377135.138557713281159484931821544535832004298377411148874', '0.000000000000000097120843870050544930766762870205724485889381952725697657146115928483473606129290764002', '1.71016654827126847483437088121564862848406256560494847328799197734413796459426367264e-18'); - T('2786090273650860122222172462282569662586653226066049425730478407697344778285269847718642316826852059959216286066975560496533.825834439051898', '-5380036545379490040214706947292642792370009348813692.063289320229799931446171213951400074916491', '1.781447213237295796176679883614734919384147627324841950220937474739207582830548622084657210704e+51'); - T('-716.7348911856148935007182289841612962001831614930661016798201260045476506309090856624487785381070365022326338215134362779468515437452558', '-0.0000000306560034406942657956579747805603108115582439761037677331584709683937577229617811570358119993112158520602288036719', '-2.19481002399560872732138539978666667251957992848584452120211572484597113365001309147957304008789361389740924421480515437452558e-8'); - T('-336717351299839216882509548843025942568273773003071.497660', '-0.0000000000000000031038145656560174696376744', '-2.2939638463514411725670632e-18'); - T('-0.00000000088871076289105659831158653574816303487230', '5925437964261078438361385421140', '-8.887107628910565983115865357481630348723e-10'); - T('0.48996271173862812059175117673224279978397098563975331374734405038121210035666997472343508724564255860333', '-981298146452103756333.6485476848759145496522568968470756059845109847612507162899799', '0.48996271173862812059175117673224279978397098563975331374734405038121210035666997472343508724564255860333'); - T('-0.00000000000018739622832508484881716365605238857842994033219621274071493422768019281918672926632721149273548760595828153562533317', '0.00000106753414191503143009924816334903', '-1.8739622832508484881716365605238857842994033219621274071493422768019281918672926632721149273548760595828153562533317e-13'); - T('-3724.961037270823216784122123949498899097506867404482079742878', '42728642472000954973441392924603786297505608884064716022000636585801915420974504713108514988096981528010203', '-3724.961037270823216784122123949498899097506867404482079742878'); - T('14978135246.4293498541153489397855384604096560034577747263780459028396569631858547180442863807949567', '828303155938367860166633696033166352096650401684421199987339292282009346446', '14978135246.4293498541153489397855384604096560034577747263780459028396569631858547180442863807949567'); - T('-0.047628555773786673881971100151948530011265912029463606745633469100975125377519599189', '528778913516649959178290334959803065311351416856125792866633653171089280622199248330023808917526801982365664091823181214120997718352635826074081634962', '-0.047628555773786673881971100151948530011265912029463606745633469100975125377519599189'); - T('-14939980526.554849200622465480029433340799030707', '-4277663.20464126532165338128222730657269719173360820748109791236846681210102912850976196526639900951364332750470003', '-2380615.94755069740885804249167878894043717324013947600609000931389214320628324391121728973465877835750035358749524'); - T('2254531950203810106512216769432345108091659826174197419189904121779.389571456070872185209145597270163484908459842159938150', '351324574544938907598852971025447067037136331.482475343426592007773285255333055388053662880975118962130456971569884230555', '3.8576251388287727477083730712363952890778696110331013414195946435626943548779101574535478551480436462182350780178784985e+43'); - T('-908518.75611434289871133928585849050982371141988492763900495559', '-2779194162891933223959992755504791535540247332661669041569801472568536678056446261493500597102205548860753869532010745212712506064454.783702', '-908518.75611434289871133928585849050982371141988492763900495559'); - T('-9751937701702146526197396852280722495497246508393405343698179859443679270762240734774756447384850662119283788899226828510395349600364', '0.0002072564098631731321614418369973126331436239029891982973755759590617485920152211028657689658898215', '-0.000065268138309116378751853481282714106859124860733683378586695149698540722854723270248930520518111'); - T('-57002171357681472900693.4729019652902136412209956798425272', '42968990107768657015543291491936311784108036470373857830494358', '-5.70021713576814729006934729019652902136412209956798425272e+22'); - T('-779.38806641', '-276143375215931856852117654482995176051154954022602259784790966214726724258520671956887000901811473384735495734582327432375381533', '-779.38806641'); - T('41533880399742218630278604056671763202881405110846632341263992670456086753127.62137428620211383152736798612114176', '-5742400619641926749269144425184140455944367080.9420632770462859801809027506509', '3.39721948198633333959235038541298988556228578133396634945632115085817616022404176e+45'); - T('-0.15640159643564267665063068794647422832178482162992118215600544420009053201945', '-172445117372769.48208', '-0.15640159643564267665063068794647422832178482162992118215600544420009053201945'); - T('-0.0112275442296349836418573333090591', '-2255922450411587809292229473263097797796627000972898359618569482413455833816036469768975961421349683187.94437348566944556679726583316945094', '-0.0112275442296349836418573333090591'); - T('-3368.00', '-345972426936711495192918207758303734495983755979074790217123728465.80047743465885662352027565018300048657834525845654295443495093971910868969090063171', '-3368'); - T('117.5750947029273379673675410632947676619639847307327388', '-70731203121207004885270875832693445747215727294572904020461929095227705068450.50513528539516122022720282675281', '117.5750947029273379673675410632947676619639847307327388'); - T('-138977748373044113.3788174734339534653', '-0.000000001480926486083', '-3.3086978011e-11'); - T('1179292018572.9841303121610809323250406574524443113684922518685441369442051369712691843553144676353714219768250', '0.0000000000000001266875917107419', '1.2238670441939944311368492251868544136944205136971269184355314467635371421976825e-17'); - T('-14538354899514474066263227062556630420353609726008', '2842.054050193988254028322928854402650042920389288352515795', '-787.841734262540552719016400749913558239542081451238833495'); - T('-515534361438701466202657012041091704270306493888955748464478928404889500948.6256180199199867611', '-0.000000000000000009203', '-8.732e-18'); - T('-0.00000000000000002436967040184567917080710249017189150294192', '537233794697555587617971898562122287499751326330104438900861362285369159209579.20894448555179628336166706113083738', '-2.436967040184567917080710249017189150294192e-17'); - T('-10973344995231896444164895312752280156537575740345780145078213554021817209401278502799260096810348280045597821463610756008906936006453379225098199184', '66541527624892473810370053621624002938324370658164532933374927090501743364535993599537688484603548966183655370713388789701765327723856591.969224975', '-1.450342823427219830229311998566498376289753623139511311534558115476690478306521429471030288042940332558759442503472209827991313811102369736966505e+136'); - T('-0.4316267645066591176857475783149345786635888459807302418058772908006064030240231203951076853432363297761508', '-55028014026.1557830721022778741606190299296', '-0.4316267645066591176857475783149345786635888459807302418058772908006064030240231203951076853432363297761508'); - T('-2909306841301704095060647742525040306501994081937165245987916403783220066141979481349904813308176225805597723367483244491162516969865072625547738', '-4233.78204828611709673177663912398115727530134420059828072548075540672034293877636097492224160666425080181579999527423978551885309647443462307117921121', '-988.81224272086075541367603049719895260811349125347394416104634518954247717715773679094698039335395189402484412782423394374527794816743393185901317177'); - T('-6548887805272011465.323257524030453759629949332296153558585801121085431308130680538770399260078998930389034743598626100088171804960350705360197054', '-12080564112679438322760485786027548072559769334761890502356163626145033668765598657336384176583391733506824623', '-6548887805272011465.323257524030453759629949332296153558585801121085431308130680538770399260078998930389034743598626100088171804960350705360197054'); - T('-17825205605614995267760724571708651253966055640698821354906323632546554721347699817715902863307436433504779452592432809608477.333181451786', '30680736166916309201884925906.6012446662423515442058844013145290522721220129756414013822170839078121709611675310', '-1.476583352405265718076287125956418384435618608746712341181884632993097339340803769809278074193221038608038868e+28'); - T('0.00000000912468064832360078329428188145559810429725609376050682286774993859391174656196966186924848665919094718780', '21914190263.100035808759435146366532139123334498047338566', '9.1246806483236007832942818814555981042972560937605068228677499385939117465619696618692484866591909471878e-9'); - T('-20606794163218373220385623629829988033.57174497128', '0.0000000000000921595473430223940199410848478707835684064295358119717430281404961143732177360181223932368247886620954', '-8.55963065519011748284526920363755341557853021589815372874944759648859916695380966744766940378956445724e-14'); - T('-0.00116515061047312393907595074853372157514235898351272755761457983036507134829330366786074496438528935230083275916775473045004', '-410007620964954722625074616747232948064935562193648550794528374214082044.695992770579155345699714674119972463090345', '-0.00116515061047312393907595074853372157514235898351272755761457983036507134829330366786074496438528935230083275916775473045004'); - T('0.000000000000000002866262471198013003247450550898087733157498823752490067442065500489968029757441844010991443903735220764', '-2387063555802958241360682309588269568721119805287196269429670036507643298607.716703434577233592987993414932', '2.866262471198013003247450550898087733157498823752490067442065500489968029757441844010991443903735220764e-18'); - T('383137082334366134473626747321368129198523267298422116111379309501154', '7792834478569981342900412293473610112927620218475883827152315031697511988080100013693178713319824297431492360416857', '3.83137082334366134473626747321368129198523267298422116111379309501154e+68'); - T('-5192609399231404787818967904763339039804702106.2642098584571392384864215', '11995.0', '-8751.2642098584571392384864215'); - T('0.0001613753330983460459597', '1343718759722202811633465441653970587609134570741564553699639538938957247416670787866631449', '0.0001613753330983460459597'); - T('18625.82', '-108460234364121807955833.501117158', '18625.82'); - T('0.0000000086960654123918299935978162138867774634877845457981404751377524026363658271257851070628323331401981944601936516808916534072490865752', '8049043891570.20498300587421', '8.6960654123918299935978162138867774634877845457981404751377524026363658271257851070628323331401981944601936516808916534072490865752e-9'); - T('92177258893168796369930099881793244231828885.994885469150932397211053118484704286168', '0.001697557910838632235527648236671741804284351643458802110983125809001092966432046553593908808466256476', '0.001048051559814391786998156983752684121311392378515748632423171613713154633150574252483089353288542512'); - T('0.000000000000000000135340591193604907157819487179265603170243663378275824462740462', '-3538552385863005446402997819693840644728948859866382289131015243925156152538296009253.88595397921380748370626209756254143', '1.35340591193604907157819487179265603170243663378275824462740462e-19'); - T('-8942810941342318692131683034298222491.298966162751297487298160818082351741848617', '81468788300903008016446735094927250.9025421163811657618870083563515329169085218713537560955357573689069255755678460294064978585998748322865700882101945', '-6.27130165438908183389889089511521429218754772042294416142499757652637988197330224405855866024467891451122631047827946917334126136432807638603850887995e+34'); - T('4112.5', '16501231733092448026854714811537782791022.61367458788581352140616404436355216872103784298148436462627878442916700470', '4112.5'); - T('-0.000000000000000100039272920978804953224514434658947574659086841906774034035770202605930568482069278916', '8360130279092670037383877853101379752066508243.7914548725194425829919568', '-1.00039272920978804953224514434658947574659086841906774034035770202605930568482069278916e-16'); - T('-0.55733808633010832738832311322243', '-30341809.7768885100044771345', '-0.55733808633010832738832311322243'); - T('106317245251707976645199.36121706418143436338271', '-0.59881135427287180381497846634181133656689910033999166', '0.32560278164243629083243463276569802027691289241346654'); - T('-5809879419309871900248097028036783697200487662.72078280568345188008643358457456973', '97479961515864803630625758944755018442629963763620', '-5.80987941930987190024809702803678369720048766272078280568345188008643358457456973e+45'); - T('-0.0000002582736304792493854476455750807714448789871391914969265606245281578616804637963665810949001173698932167004137735325550552542025992276', '121930479865943189690176599713519584015951299852971842228.150293808603', '-2.582736304792493854476455750807714448789871391914969265606245281578616804637963665810949001173698932167004137735325550552542025992276e-7'); - T('-141', '-1.290460', '-0.33986'); - T('-1672922546593.31971778277173', '-24004744487670982178071549599909616293578410420429907254240481309690669724949467538663.43257166059', '-1672922546593.31971778277173'); - T('-0.000000000000000000096506747661828537633255606033313182920993286310754098242241527192506663129986680230116508640760013474440576093964790427764', '-0.00000010591032418873774305782488821422031008159269224396547763341455910365931704698604755331650104205032352591665834970710247264938146932851', '-9.6506747661828537633255606033313182920993286310754098242241527192506663129986680230116508640760013474440576093964790427764e-20'); - T('-13827401304111289312736198643718536550239860723009716248160536677', '-0.0000039286228820013610690203711803131600098718683633', '-0.0000018687648571863700673078239442130544157030166194'); - T('-42.4692049472839584484885223292994575479989813667615626032513742843562250259364746786558133445767723482540247', '-0.00000000000000000819275717705512539909834846743982191143678579675280080605996356880686842267', '-6.4653951124095444397419580073920159575587091030342708998343881853687266199867723482540247e-18'); - T('-2466733580603659963575534598558841787749140591761688146584246949860119069729862200150585805915812920870610199177565657789103756293844601451975927', '0.00000000000000000001220964545466869353977', '-1.73255416774937445048e-21'); - T('-15028378815304663676509006037945962004972477648490101799915638280371939420560.0041911393147636614007445', '50622452443346007758014952215939952642084376096904097662205047592117731694004927204947361193840079003397393315495612132043954828016869740815677950', '-1.50283788153046636765090060379459620049724776484901017999156382803719394205600041911393147636614007445e+76'); - T('142588144195311580010051.5364511066747054069508651215066362734114680562635989353532168705092760233791521149157821867553492562330410494546864139650', '-14503165820788.7989118526503493452200602820958797693990568472997380353527541143720627492477025', '2915050714654.819054833603896590465362673501332752905041274459514111791099261470796120059809614915782186755349256233041049454686413965'); - T('-969615612019600562266997847', '0.000000191644650609545820597008991399827106864514006', '-1.231577096546224847608911542095213749611614e-7'); - T('2256513056638995361107016553105302955081979298952482814125065516118737356068145.82', '-158065108111543929811518473313411.60992867508424058272054757815774769019280374359986010771', '1.2747118706198757060172327002063737680496619401702267612146633003684640606557668930745563e+32'); - T('0.0000000009237134280775239488177645583957175262248471518379247948959', '-0.0000000000000001658030328961634', '2.71610961190711645583957175262248471518379247948959e-17'); - T('-29037971633171746964110337225165989562263266513890039145139101509478815612783351650243947553265889073155208935272292022915303266220845856601847833', '0.0002291490081859774827', '-0.0000175625699645664842'); - T('-7419630363912248895351350605409627746954992624899840002172405589436855414.53245142763', '548.8847974769155367539649264103154853090755290', '-311.331663008566145443936338341729777410460137'); - T('-31531682519443763389714.61342909941642731349791408998579283062988631957213607', '-0.0049509892638980905715921538869775154076564720153', '-0.00240704556517700786995420557935621901418625076453607'); - T('10.199939958363750394845392764', '-938958758058.7364', '10.199939958363750394845392764'); - T('0.00000000000000000547428861001874500', '8542.618867822931747906923388', '5.474288610018745e-18'); - T('0.00000000000605257123060057047947264779334280422324573184783056036871244530739641764616333500517830537807440912208', '-7720892347085081968920717984388501900819875846611343246381710158287747831369369498946504999.69677595776775728276345177652950285580722556865359060', '6.05257123060057047947264779334280422324573184783056036871244530739641764616333500517830537807440912208e-12'); - T('5197872005452089687845492226606310126958533004786.01262820209011362035440472786789414494121891863808333760222524857381721029192192394837170796', '-1553107578156990684479674739994879909980690781747809215157294762487391417358259.146954264798337814197978', '5.19787200545208968784549222660631012695853300478601262820209011362035440472786789414494121891863808333760222524857381721029192192394837170796e+48'); - T('-0.000010459044875719686467201064277204760401116231048766758416108501254604582446941866638877706771900478867008604302', '4570483969034967530134798231269839607555086988204402691978.0846842677197598069225306405016', '-0.000010459044875719686467201064277204760401116231048766758416108501254604582446941866638877706771900478867008604302'); - T('34950082865877722140999896945527676095434244644489049.47442671960077158711230616940136639915609220577207968', '379002403.050778311803417819043114867', '283625356.05019950260262830045876010540136639915609220577207968'); - T('-0.0031090306995447730433562939728182473162977550600870500009238934708225472008899875393691975288926245842294981202786862852967148112', '-179021575013512153729485967283056990.1980994548847179904114211031571610186752960630950031860150656109870473715205099194325984', '-0.0031090306995447730433562939728182473162977550600870500009238934708225472008899875393691975288926245842294981202786862852967148112'); - T('350213646089009419745026624604797595763993333334620301840610383877418878521099968820864105567.6181312666', '0.00000324117432025964624180746008701209658337644053764142142257723637790781637027233123642211394947389418444055224', '5.7055181542801922990712697286936826369136399715709266248399293604043992259309658307682824893308496146676808e-7'); - T('3328107.8494', '418714348020467109958856616981538014194347311895744037569297648600727758725623', '3328107.8494'); - T('-551844215309008408275168733.623176966939595953994851048267562459636894172209764669184645704359671910176962904921966067381393678263185580431892958828100', '52489.2323', '-38379.2058769669395959539948510482675624596368941722097646691846457043596719101769629049219660673813936782631855804318929588281'); - T('-9161822288156514844155956374210640490022366908510', '1389019572848235000704785709077750964197706899388709294785368095533089044973589', '-9.16182228815651484415595637421064049002236690851e+48'); - T('91056139545088458766054934573084198168.5710642286038189576393294864960', '-4517685791348280307925690612882502300237833708968552977972888084474038473.394339218360256523962637702858180915401362080730', '9.1056139545088458766054934573084198168571064228603818957639329486496e+37'); - T('390029336502365918513931.130015474228581793566056937195029617483963133928361072920643966836693549318455838606', '-677948403080048563372.836374', '209004731337994574550.214965474228581793566056937195029617483963133928361072920643966836693549318455838606'); - T('-402587804331.52384475209667561672439292038632064986705375834023160394', '22953293360768232064948813431816046275755734572489568108170437942795164066617787530406717846925329560915859870010112631465336783868468156816495', '-402587804331.52384475209667561672439292038632064986705375834023160394'); - T('-625315195115297944213401252771807597994808320636040980', '1245525668172581544516010393636352381040839194590487646892457620457541581549954855850913555273127518858.5699453665074315653164442153272409410', '-6.2531519511529794421340125277180759799480832063604098e+53'); - T('0.00000000000000000106014797651953270761670971091554825136816009688246397263410062266680994943', '-2837919311814592501835.894615149733052873373862623419869', '1.06014797651953270761670971091554825136816009688246397263410062266680994943e-18'); - T('237381233514476032201357341.4041', '-0.065815324672679848778208005159859', '0.049044652806221841033273417056172'); - T('-0.0000000000000005144544006903982929329271186335022979326957607423453760483024388746093708635051243834072032', '53859.824448316', '-5.144544006903982929329271186335022979326957607423453760483024388746093708635051243834072032e-16'); - T('9.465307046802752058394916832226320349420927855272418', '3177012152819988337055628473453787701666615', '9.465307046802752058394916832226320349420927855272418'); - T('9573738794726021107.734106032', '-185794949125622556219134912729610938207753649877619366539537127820541141774242915', '9573738794726021107.734106032'); - T('-234.492043915944790198500267399199969588539805', '-0.0000000000000000070050048053389237694672406069762', '-1.7957735143268502710881087411774e-18'); - T('257434448562147186372612642412.726354747500293136781463967693646812824724851090463016', '10376593029095719663406559308.704088391790279215064412899034913970170280677326597734060879629830748435773301327', '8.396215863849914450855219003828233344533591975235554390855711528737988595252117398538888884062037541440768152e+27'); - T('12285490012463121838351929674277761291240995729813968431132385721778827202446854153384062524345407227973315579239229493694920.48275614705', '-197015608939.8609489308', '196270462249.41659606705'); - T('0.000000000002240974449242592254790173835564041606148621842662292012652507440629547097709122038267701655839515607132861720217869106265565545', '-23335987271047953972812286009148867302941199929709819822218.47662872390777570098607457661024567895703928912305401676859', '2.240974449242592254790173835564041606148621842662292012652507440629547097709122038267701655839515607132861720217869106265565545e-12'); - T('165366904096962525782012054078987504568761069721.4060389256731697873983611830230858921671529412698579846557699', '3444399121879479169341765797909079931147798377878056422577985615184975145614404658705092317852628448.8200951', '1.653669040969625257820120540789875045687610697214060389256731697873983611830230858921671529412698579846557699e+47'); - T('2705886232366102755195760426990938611198454960222419636993746631582409715337015469937064177880977434.52524166361088019858326697993', '-153335210993719572189122942382836225292613994436997443668536033261124985431110232311472271345055289442071134321117800654483720838841', '2.70588623236610275519576042699093861119845496022241963699374663158240971533701546993706417788097743452524166361088019858326697993e+99'); - T('-2.131', '81.141175482525877411234926403452', '-2.131'); - T('36280697805.456872085448120623178135789191532017507413855482045239572847567984946', '-0.003264019500578350726232120923403720087351790298292836973891286679030626156471457', '0.000840690677320778506160517859695422697759302805218793948421046952872287436211442'); - T('-0.0000000000000000383294424564471974556118502909006204805914338360402016898543', '189834035009171131324219625463596327097619764552465816576075046748053426206833060327761155383041718993336', '-3.83294424564471974556118502909006204805914338360402016898543e-17'); - T('10640490.5446167580829516100444812115028794128019', '-3356962116245265447.78909316730481260744693416477010628711925187303', '10640490.5446167580829516100444812115028794128019'); - T('66770.3424620469504716946257076842243098386178403211027502322850765242199540112623715366358838507920992543105400494508613543146408231317', '12.513626579144904009386433045173431405442032767743437096384724485707600961521450554612546096', '10.1446623088875816180054116839677618053730244098658410197799452741688242943236626787024616907920992543105400494508613543146408231317'); - T('2006898576304765006614781291454031779440425434725470591551164794.861776715854234923976439', '6.073', '1.986776715854234923976439'); - T('1659509756014472961738450001016716874178644554.45519598', '35836996.118873689899485945983497236111', '33163606.3246718766078753085595268271'); - T('-6249029048938249062243170609092474550191037331.385626639511695286190999439371', '-108733052645.39651948756068195820182', '-49787722470.154741457236628551037439439371'); - T('3229906275442392424418195788904419876739.198022479413785727883243013449038330977486395796373161974679847911', '0.398968452931', '0.076770579754785727883243013449038330977486395796373161974679847911'); - T('-68.48010837866100691663949964911341141391335', '-431347497460708500535477713.921644368607', '-68.48010837866100691663949964911341141391335'); - T('-0.0000000000042873818496651474800023665212086183152315505087', '-0.0004833294030302505015641228567431906450483537828093124623545261018465548063776320121938591921894456004211776094377978846', '-4.2873818496651474800023665212086183152315505087e-12'); - T('-16963834223166719706079539302.342838131750515721187172994523', '5062538155437557.3543319054238404926367207556617251997556392366074322977693815298577958036063656158349192791752169723637271257149', '-4653064987731577.213544580641442966920884382870283356443820101043539787185918274106379472389554877383448200968409644573003915622'); - T('27752292382966155484621019967155951075006009060959254418846816259283474988719280207751032859907637274084223944989149146855286224303', '7999040368028070748765438.41605114691880938406', '9.2270733244135400413176158796214648476494776e+23'); - T('-0.0000000220775496923969762820783886936932950453320119723971850235755245075630658843057584853140734663613038065152584371146863744860271944228900', '278937252004422983259089672008219526227049167', '-2.207754969239697628207838869369329504533201197239718502357552450756306588430575848531407346636130380651525843711468637448602719442289e-8'); - T('4088817811601835043414165021549173.34648405001199965780370323214083852306094738315385019245330167477793092158413628', '3872463786824467850519422587588270837871264684182279002671582068189548558089190.6338668856949165', '4.08881781160183504341416502154917334648405001199965780370323214083852306094738315385019245330167477793092158413628e+33'); - T('243322131742241598643288437886384992875664969619768995471553676078266766770945268905658381465660972347322840413666337352', '-520908752399942059927.489465648336426083977336790367066585385183838514818914251238668315053257532155725', '336517846493051868082.5236480255207660421751407980256923055283675410001569182573777995089783207908381'); - T('0.000001076734879087', '259571475955474', '0.000001076734879087'); - T('-0.0000000000000000001708230742803565810750173450663838191720653599608146843168311123', '443087835486092973824776431839302000581260502094303047590360860043969772847300210', '-1.708230742803565810750173450663838191720653599608146843168311123e-19'); - T('-10116828102714929396303805403687032885954344533722862963220965618949477520274569058488672373457467461916061160346468283787006793', '993946132322903524101486258672429377833245402642388403366584727501532708958381633056725438997379324147994463788158057061040895860915826346549.0421', '-1.0116828102714929396303805403687032885954344533722862963220965618949477520274569058488672373457467461916061160346468283787006793e+127'); - T('-389784540685386262354634876838022505911248721618526216253571784.633075923', '14179193090251546307844809845741115123.68591663451283228630854744359859823006233091006350233571476950897344052975285852270872779781057686080568', '-7.1414462195758796324750930879094812700989420115077711452950042736953900296594912665141710395533192640587241839627883909055803037985187199944e+35'); - T('-45984185801341303910880240243.76714118367503791509966241100863013219378666011186705299', '0.0000000051570812174238260137276061944120837059018185942344919696042121715357536276082362935247589887241145383799', '-2.8738700535334248371703727635151089062632056136632218642673399518792415040952650429114119520426674977435e-9'); - T('-14905432087844530139366283324831046272631676943288697485416020309138739737561809233765151341023796257375655678814935895432051879324532', '94242798089904800354993279286346515', '-6.8721799631260899670134950264021572e+34'); - T('1289853511883958265825415665788637565052635440054342593643104070764287224769.93948274270941526387678146636906574620943512848445780376', '87.9539218424403804769323138636392398940152461892195350593552856971443615078621862619014423', '72.2591398780413624803529381690619313389774065636772867904263511510258955159663755970342588'); - T('53465238938510497274637223297650593182339185202252203083.1774604451123035468314690671136303407336840099522332334123316657221949276993', '-21334279.8165058978', '2832435.5604826875123035468314690671136303407336840099522332334123316657221949276993'); - T('-3108015.3661', '61126330169820996757526065.416264018282776618615327293283282822614202595204241400248642232068625532106', '-3108015.3661'); - T('-1275542230072231958406146247425815282449610680324545602271.8884038039259', '-243043979558321439267025469546543715381639907851772902031.084835381233691203862582992711992315936833776447731819010', '-6.032233228062476207101889969309670554141114106568109211646422689775744398068708503644003842031583111776134090495e+55'); - T('-0.000000000000000214815544265849149385478069939689813189252105406530375164638737376691673594643332117128360303977189949176016884413230594676158437978215', '-51027595198082649357603319772041435902079915041106170467.57451940249204354029924413238799739283659245365065632265429523372460397305377634', '-2.14815544265849149385478069939689813189252105406530375164638737376691673594643332117128360303977189949176016884413230594676158437978215e-16'); - T('-111350.754570123005196804918034331227325061895360176437728709656573510003457243639517558983859956764977218771481494447793', '0.00000000000034514677625704452', '-2.04176719106943547325061895360176437728709656573510003457243639517558983859956764977218771481494447793e-13'); - T('0.0000000000000596075948515369263847934641280425766058217698627698921776443246618249228249287653194626588231171757500449899328884288', '0.00015836637201409230200', '5.96075948515369263847934641280425766058217698627698921776443246618249228249287653194626588231171757500449899328884288e-14'); - T('2350976577509944947853224866479625205856731752244171284555163774825992062785340964744094088086550435965919613918802628710407949945051994', '2863077556.17572911282887032307292811887736', '1969784678.28266366932123519437643424462424'); - T('-109420981536615914626321665928421681390611584416442196835511987438396387.3285665769331549736310', '-0.707107', '-0.147319576933154973631'); - T('-155772215583445307101973376728964254746022086862918345349651130316968950879085903647.4700888378639266', '-0.00000000156250631895772405757624035051977475', '-2.005231219066573949078690311357765e-10'); - T('0.0000001837341912533402186255699654239577837158324509985744336931487388729640675913909', '-0.1644732520351148576255123808206799034683336488831104519232031408287760056008', '1.837341912533402186255699654239577837158324509985744336931487388729640675913909e-7'); - T('-0.000000000000001833320027801786983664774213824269815', '-32078261563376466267956235494913303920.158358109032084353548239902600710775887991985', '-1.833320027801786983664774213824269815e-15'); - T('-39.6', '-84001578606.1', '-39.6'); - T('-29724877149747295025888412038962646.2553837903819421016896996057751232598092947824478468469244594', '0.010594787103499106023921039896104036529348362781865379404768004199946120463319843372131130828257677', '-0.010560411121165907362703538197379906418141401977625517318897269171797412206019222827160029917370617'); - T('0.0000000297371329456338047054799880006249839037726', '-0.0000000000000000399', '2.08338047054799880006249839037726e-17'); - T('3510347687348.9918310', '0.000000000535137751617828949087071435929520771260034369415874463215729', '4.3970413363665598746475030544260422065911721854665904296016e-11'); - T('1172939419948541405468859374692318735483069696661.0016798921467104516384190202866844256851817314237012552533419694922981805635888196421299458565', '836225885046.0339803680834170441728042601393459064753318767659265177747', '489848285142.9652308075799720859670922143649859637996694219485574044875419694922981805635888196421299458565'); - T('3304012503481.86462667433235823859144825699221873', '-6331887562487821340332306152704795208243157181038687350549806653670754776238030105276438.1', '3304012503481.86462667433235823859144825699221873'); - T('-150211288508225998712214977612499531708.2501845877268623292755528138', '-12205845572868490041320605820426679815.764517713', '-3.7411416338041182163677077673793739190759720317268623292755528138e+36'); - T('0.000000011094742677563476721248293381876559856937729234232159020961832701368001460631326', '-6221917952403340240791870643787532087969062682748828170364381367809149895647888374041427464551506847.51299431101992176148174207489487663558', '1.1094742677563476721248293381876559856937729234232159020961832701368001460631326e-8'); - T('326721863970144140942581356605337628165729694455912.5775012098511224625843', '-5268757703002526369983689288253', '1.3801824327726670886183774879205775012098511224625843e+30'); - T('-165640236596750856195.895988', '11701057069048906945118088505193697795574', '-165640236596750856195.895988'); - T('-46180228389542924839944399544341711000150191241548446973614685877508179228647290933889351181899671153310459870760689493.0640313663321381860', '-13302007.25660543726751034427143226054726399423446928373342294891495068748409491646', '-8810440.01892587916183525077832797812112229177221241364171480643762179372031812578'); - T('647315854763046741826812737683933902168764597679636554385105093993558679.47', '-4490828077170522297233893004993.13249786', '2.82037423805486254216576591662663109074e+30'); - T('1599377725182495758517742498272843305960693020206048973447583115243269.1410087798545951915296847822871200148003875672207221059954691330107473', '5088063662255167160094549907732541865919416012140789.267488408929408273548538461707216938135207', '2.1844508625218647076211356222081320411196598385437706721627302640180596421073005329651875848335672207221059954691330107473e+51'); - T('0.00000000000000000091951455826031110073950473421217054945023004137', '880047376210923670087515320566136957381678956755035166368292510311615040924779967631184922.514417518390289574344', '9.1951455826031110073950473421217054945023004137e-19'); - T('-347310950900872385776467889423388243805166699963730339415360267534470.83828754168432611788446288344053', '-268630368745759667653.586235048837', '-254067255574127219771.59303783483232611788446288344053'); - T('186870193173432148130646645388.879740942923234926201708997173946572', '-30134593142508069785581273.715295334882352524247146983041708195688381392356164514745081831753250268038414517', '5.581096739607390257167080333369337455232069643267155541425108346985999423844065747561298095087893791580083e+24'); - T('-0.1807674864812454987374199', '-4469727073230097681266362826888054961977099149359.0374588261941846339229668347809983286076968459321981644745510609932772908293349139744841118084627847', '-0.1807674864812454987374199'); - T('-609942528111000950646441027284423914421676073338789300919146249735345832203325180490401721.169829288886540318797384013020069162311817163984967658940423', '0.00000000000491817438446678148457562512594581494844507213406015271765904587', '-8.43098438842919315107982234851497412708959280904973168566191e-13'); - T('9224445890397894331131171246915533737228450834032414548525009296813800.6194126855929999859102381839862079418242513149339463', '0.00200244838742528040113150017076386237193859471381402369402196727101743578532914482170210335402189674320', '0.0013517807556936445819076570223433161315655337951471334183465116029136530599646156000418832705275726904'); - T('-48683037685508014142805509729454.7708328664705019554487311077038575660905772924', '-3009.86809', '-2773.5774628664705019554487311077038575660905772924'); - T('-45.40878406155210820981388806994', '17322674941061069468.90696296162077004226138639510007304608119673036621826170347783883962799199837139339763365258311616188171455884', '-45.40878406155210820981388806994'); - T('-0.00000045798269200527002110503804633046978211168710862544855', '-0.0332022903595637863650592445124818543441138270869626594601406767165779904542946340747', '-4.5798269200527002110503804633046978211168710862544855e-7'); - T('-0.0263593463400', '16431622834110668320883651807426049458531131391388126888382321455092604238225568419342828987836945825243059', '-0.02635934634'); - T('146967376566418942423384976079370477844114594100864341309675391342034713364.6833806684984731707692088346576', '-0.013333681564204393251252427627958', '0.005064205951219194772596398940182'); - T('211754646034325622462.5754245', '0.00000000000160680374735486298985', '2.036680263359390281e-13'); - T('51605045186016481873235601735007249791991888297129512533440103662214424121299.1344940307379598284739161103280966', '0.000000000000000000011786218512737462780105791891803245937674332997646395012525762681', '2.588799129973576402223004629808690177116789885879883368785248142e-21'); - T('-617.554294656699194846345554', '-4.010908756729124879238839707729807689382950249519874348632636426606498742511278085488539497726029165636382561543373147540415292914484080714369027', '-3.885254877143088322803078717339423524408611823459224659206626729205692395774452920253456847917537657633468083863908426316460184083935650701538869'); - T('-0.000099945023165063334867500208938018190178130741558039812499297741499312773735009571', '-6722316615037541443129.257975301497143186395975837045082051651840624355546256470906712376653728222403894020565138962973624024728169204846444569100775', '-0.000099945023165063334867500208938018190178130741558039812499297741499312773735009571'); - T('1.47399214966951503197706669234', '-0.0000000001840478582583371644381', '5.02470037070635715408e-11'); - T('-3418446258', '-3958503176047281021850594866790858400.121417849614913', '-3418446258'); - T('-12686959556778981227071587746211507082286108179183876439271646348604072647005650127081913277412890.87493710443296410449', '75268789302897574467144387179003360679990148424', '-6.783811385634916183071487831399702281781586685087493710443296410449e+46'); - T('-13107.4826208600544806407030932767550902829117391520', '-0.0000000000000000037384466887246671347259264227228597229847149881116611194168157515133538054652289640187466938841', '-2.0126616347799094847193752802827297838499598456064986684374889162126566609421987606571510583884e-18'); - T('35404712862830131528829951583097767175730528979755821351149896205565020402884938392577568669927538981512991749406271', '-1031829364936517351885757530329733298799430897476255354154166810707348414663475611609730484965498257348081066493148106978487899', '3.5404712862830131528829951583097767175730528979755821351149896205565020402884938392577568669927538981512991749406271e+115'); - T('100539201018290722728826872367457614631333', '-1045913633296200056145880201567560454793511080052389543593290266185071912897427558382653862152861912376736712460547.2617511718', '1.00539201018290722728826872367457614631333e+41'); - T('5900417857967.684122320330266311315988571303719434583688056', '8470102.1', '743371.984122320330266311315988571303719434583688056'); - T('-0.0000000000000162275925487344742900779431398339947832550078717275513304235810620', '-98527398065181443.95890070566948299821236792792', '-1.6227592548734474290077943139833994783255007871727551330423581062e-14'); - T('673799374274922.944483940435547205550045463560294607616912043082182683195821140728435', '-0.000000000000000016485778560418899864685352845577378671092383279170185079302767621027277318696115879445674705947984124222523466771393786233625', '7.82834750139086490154197864647850303623771092697051197255144188339215023494951403366683672964266180245577656923491776051375e-19'); - T('-359760700574909877872.1893981874549355621361385437217', '-0.0000000000000012525895046273044615704543219559935320885590084464816796118205647431065997743952', '-5.273873466758084448309839663582338093952872688281491316326187652956128120625712e-16'); - T('-0.00000000000000000344', '-278600563952441146592998231079910916344907758061277029729847723704754927633299267404490050381652171978731152168944.3624353', '-3.44e-18'); - T('-19885391235.72444811560527014674591026983', '-0.0000000000000001210077665069172292508225410469346919696252649033898358285924802170280105173635047594325479625128232032868344035725367034768312666555169667118', '-3.27041730165540323618629447140644363558794072504731638157226990591284204649561893100263048858295969889235470457661290945938793086438381112962e-17'); - T('-4388062185.483', '-39594387554948541710295853541397266260999826140754757455063575150482412990992087849313100923544071923172382024125465206259558449365491157951841915852', '-4388062185.483'); - T('1.27', '21551626592.4081971013247452256236019543192696982517035660906335460694567861697569727904693502', '1.27'); - T('0.00000001329440489079501558889737803395626', '-1309144737900.376642959151800307497717804787800342628351', '1.329440489079501558889737803395626e-8'); - T('-156180543107.87592902679287176867109874431', '-4686280179444986299955463199189.092904143822557816915953501163200171428106923307793221186641484591113126104675812379227570402', '-156180543107.87592902679287176867109874431'); - T('4295520.77026900841676666457392998671922680353168654102503126542727033', '-38.020', '21.17026900841676666457392998671922680353168654102503126542727033'); - T('3756201184729.353948914504331418531', '98764.22688418263420', '9105.893120837470131418531'); - T('-183445480599552748298061627642.054002297', '-0.0000107', '-0.000007397'); - T('0.000000000000909591216320809881489928409865189195215922428863268009816135413196049055956596319025228879647140264146595335905308933772188246737897', '-12795.4852229887102245317', '9.09591216320809881489928409865189195215922428863268009816135413196049055956596319025228879647140264146595335905308933772188246737897e-13'); - T('-398115161708797899244094', '-0.00000190822', '-2.2942e-7'); - T('-848992173816.728883939845041393969214986771465330815208069567930789668049373073351425877934822175812944020178983059783798362', '58562228020085626501399449892933178818812686495472026995354960915893982723005540323314902834042032988.31762122657557564887837408661222893484485', '-848992173816.728883939845041393969214986771465330815208069567930789668049373073351425877934822175812944020178983059783798362'); - T('170689702928493785198704770480731726844384694228880632000086674248431636854235360847784394580.85956251018513598050194639733320', '0.00000000000000003249511361722935184708182221178448630186575980523410123888723074013021153647708920596380343297194452156472646750', '1.32996935134055436147559167404493656358621211234030812331554355557884963071617424821454322841322328537630845975e-17'); - T('1321696536903060333507124214923130056533062275039547547929702694853188954923451499474519149', '-0.00000000000000025469171278', '1.218603981e-16'); - T('1519725031000099259255503608727143117600103.950594546108601767133460279781', '36369953008089867650245915598882421133753955282.449761084477781573225146186400665554685339940078210117714275205598825657812211050146', '1.519725031000099259255503608727143117600103950594546108601767133460279781e+42'); - T('-83497099821374016986286773.646990311001433716310815087541958164127982967474303128253316028', '34.885503706835596', '-31.096961763167985716310815087541958164127982967474303128253316028'); - T('-281551500617863299353204258388337646826959732785417359702291456810294245173', '-680761080887665089.960819023854303651778569787', '-75711260041960558.526892392939593150576805521'); - T('-1.15721309733221526556327685277570425765587629667165133407328940007759291237969184088163508432164257007784170132569200710694878', '-3218490902199503763628322542391806103361580787103.2620354099117464128382431498128680419559189', '-1.15721309733221526556327685277570425765587629667165133407328940007759291237969184088163508432164257007784170132569200710694878'); - T('72685543', '-501466282854557781199312940523192072364105342282967607632661628.19377138387', '72685543'); - T('245721737418068480302255303255239643597822590292208445238466792403750601113775053588192850226', '3386598210277254485823559672192', '7.42596358685217392305157389746e+29'); - T('-2659239972.775732441119988378284430845255754722338730479949959770532563552221440837219977492287', '-366766093425414896727693582201631208201498739206701475487999587.04784925264477357068332', '-2659239972.775732441119988378284430845255754722338730479949959770532563552221440837219977492287'); - T('-202937664456304.89555195325400615051606086193279', '367508289819471739156301421289081005042399.214321331102128714358354131581972689141507241561', '-202937664456304.89555195325400615051606086193279'); - T('-272399937191.733', '-33398478226504197401967686042303959950770799816157551894222273006.68924', '-272399937191.733'); - T('0.0087589373702205672661687978512384214861196280910391339165', '-373449691484745421909661659779737619793741839646928018592372485434538362245960211318420579829536.7917148942879686985463255295177053873', '0.0087589373702205672661687978512384214861196280910391339165'); - T('-0.0000000003525427146401188285154486', '894317500882.51091293970592971909046143867805856323040', '-3.525427146401188285154486e-10'); - T('-91451509534712961197767251912.12413503036698723430206046435825379830131588169', '175966443745543358277161986311916627186504872290571423072359410287954017058417918465262148785893573180476929551596101110996620722038220', '-9.145150953471296119776725191212413503036698723430206046435825379830131588169e+28'); - T('5239772947176538407844432421154043692127337338786315971056005937511720316060149414713137609138942592364274998260.3914418522', '-0.000351999447227731010425590682', '0.000220009266937371477472993074'); - T('0.0000000000000000119885361224350878697901381513746669638803014061044667195642049359814289191991814187212222202848050879631237494325242872', '-78535546704.5392511810713502849597204629156277123901805', '1.19885361224350878697901381513746669638803014061044667195642049359814289191991814187212222202848050879631237494325242872e-17'); - T('-39212530235163840641.889', '0.0000153516323003372462432711273284710', '-9.9431734462012600433819830344e-8'); - T('0.00000000003095857781498', '101110441905084702.0357403762824', '3.095857781498e-11'); - T('-10334049534629711384154568939144539037486810844012775904747573760967321021577642786297034994468008867806308331807710193171907638257163287742135', '7', '-4'); - T('-15218677194629873309845552539810909.24144546875160065973098514044701774323707782894779555789259131657466804', '-34518535980025586317185189406244975538787915397779.23976886730365452862236233621200723924917399966293372039141790286540026470', '-1.521867719462987330984555253981090924144546875160065973098514044701774323707782894779555789259131657466804e+34'); - T('1140580.761784', '5541289870140054.14605122999270451642719393072416088141141309658972740905789791956116896048544622227464211', '1140580.761784'); - T('-19230493275938204954207576965451693824417167596.852559467', '1772734380358953111610301912647488842242624961779873682671334193795568636568468773326514107362478536842717561130919918', '-1.9230493275938204954207576965451693824417167596852559467e+46'); - T('599.7', '-1619645435801723194772984.179363365313908446470145035129596757155977', '599.7'); - T('0.00000003527897184750897367124288669208530527416142299801842725622500628314084302757630841538287485331290943712878461770448393129110928068601146662', '-78850.70929109605094', '3.527897184750897367124288669208530527416142299801842725622500628314084302757630841538287485331290943712878461770448393129110928068601146662e-8'); - T('176028.398859288392592242830374424713538809024937584968933934', '-55388056.672', '176028.398859288392592242830374424713538809024937584968933934'); - T('-3687887449589971447806306109197252366886458742730568279682018480906663049444897395704418760650684470725759432270992', '-3.7420395715065178572722', '-1.37688512348852048922'); - T('0.00000000000000000005256579563216950668763224444694962365341802542', '8723053021165901635236330129212563.3636641322636657590577963894918834488095316505676835145660950358', '5.256579563216950668763224444694962365341802542e-20'); - T('-0.00000000031', '-40709625512787616635932401858411015489778633837395274172588092946942501539158146828356731279975556752797552634865553259851', '-3.1e-10'); - T('-149135372988628919970496739114893960253872819.29190786741735400203191111811808959575782606817793421565345731848675379351509', '-27246318921164548382835661684073753930547046090475812149871172745414922', '-1.4913537298862891997049673911489396025387281929190786741735400203191111811808959575782606817793421565345731848675379351509e+44'); - T('-24363147306500486229311532771740994620057318471544291974564601298526862244753274543680731501921598200150080347486100220249.95', '155112283879060815501594513038826638314014.151622292976655', '-6.0684495386164490837630162468104486251948666896636943585e+40'); - T('-21581136768145783809281720761.44048211993924021469354146024085251250876602551196346646616560379632610', '3976135041682843254167378300.9535996945876700278842158983543387014253903902294', '-1.7004615597315675384448292566724836470008900752724619684691590053818140743649634664661656037963261e+27'); - T('0.0000040326918148754448903294471525102', '-47372770302411027590776261462082130188562141598263.7', '0.0000040326918148754448903294471525102'); - T('-0.000207149307738031286357317412628083411158171708095191007176464575073542347747004508854126911118', '4571168574.53730007', '-0.000207149307738031286357317412628083411158171708095191007176464575073542347747004508854126911118'); - T('-97509529222819532741120.7501430099139821788', '413204.03894124413846481557841831902206393440828094465180414091136336556519710979330', '-225763.5035665848727274739410862425313052713554127953879950852567857905478666569684'); - T('-2.00', '-27821012567074003433639721305709103428961197219622539.5685794624070639394524366200311619036627965777978152267632220', '-2'); - T('-0.0000000000000000294734806609719368469844343453588795984107909582873623530491162658480309441610559248449712368676186348212527994', '125.2766533052382457665605834964486208493706839813580506', '-2.94734806609719368469844343453588795984107909582873623530491162658480309441610559248449712368676186348212527994e-17'); - T('-0.001633958178625393150319605773581603368794536210123014338662866483443630520788262608537108853222673749309263319138110819633916150775', '984041712528385604819023678382822872190082698761085069290999301227.7932731339787355560947196826063289233812103279464', '-0.001633958178625393150319605773581603368794536210123014338662866483443630520788262608537108853222673749309263319138110819633916150775'); - T('-647590209400834319944871139406631294085860629844127321070709716929419594078771338864670085558591972653967722448703626313095422674915141792986000', '0.1598243963757636855858934473058567117813241414088147740804621207975238365569266130451403849392927831342716601396536406385033', '-0.1044367829611085137461733259113676442705082608844196425772771026984610209105052891722465431157849664696915079658107241925781'); - T('-25494638.01708', '53771122205901307230592753088190036050267061395902109215165014594840247575345774715515212', '-25494638.01708'); - T('3699534688828621863573818255225145699064136663560216492004997448846', '-9352801580752779322144587524942771278907911645795358120645130483618643349473297562259322949157930678655.0985025', '3.699534688828621863573818255225145699064136663560216492004997448846e+66'); - T('85032671555909805603615516661404.435251', '-731048436229736323522.991409687588012443676785142131368263222377948374546633511253019699058056630484634450274338643065674171', '313431824866633070885.329503399810155585075007013107299041216892826957929258111083849330121077202750028714374886317572152301'); - T('-209945559192857.1946165', '-27531413554176324889547266436322269.24', '-209945559192857.1946165'); - T('-295428170594032684107120468868902197984687862352304428967023482208137265881.1518679174044920', '8841356497728907803087292.54', '-6.173111942792252980851311451867917404492e+24'); - T('-24870862326767803723609181211951886785506016576823555683020976203476199.6383226631946206831968357575', '39.0192876', '-36.8342102631946206831968357575'); - T('0.00000000000104093732456948791535660490005579952856632590144252349583941188680067059085582490969', '-0.000000000001845', '1.04093732456948791535660490005579952856632590144252349583941188680067059085582490969e-12'); - T('-110171543516072519154077470043041622245899518010724357.97', '-215985365493128751969338708436174659881146326.47130407981449301251477', '-1.8642809482641267496491145390027069075248347603428080841787298772523e+44'); - T('-5897509163.33237929190342310229239099251637748593970183365297489393099622646591458028949809204', '-0.00000000000000001049808087192732915451590248336583114743497320652254457639908692412845756123814307660410407578158294', '-8.86866462108221132146017741372701042754803104583264417668482799703357268955774117913535569071970096e-18'); - T('1947618330530090666893298405354739308961415698078028620052704641974391377424081.4370720895447112874307354517864830938810415902572192711612629905619', '35798247027.429407843795', '17046145447.5748487031747112874307354517864830938810415902572192711612629905619'); - T('1452534530844578587286793835405885853021971526781401425425378487935294373177736296627509724.7721554655330008757886130352256', '-2230097289481941875743.70308986073045123685990370268605393875797132020959914189', '1.533131766810854713997740773599277043497855099271539159216055642143596393742e+21'); - T('128826616832138303811999586234163151680224444940', '-0.00000000001208356353496390300985175475564359178694913852139721834444645980664649972867877606030662673387062705957528277363458571248', '6.69584035445008621624129454859440871477459703283008018887200388923227463902698155614027423236686957320538416711587060032e-12'); - T('274755781466764052656410387030227146979693383969398878026929839099188933143187954.316630799958652729870465414351983831108637697738523329171365404311371', '5027580651709666928642445905700005774592840179967656101.79182444554585905527707052212762780497609', '5.48687928393824668751094954125758077209867579670314978177150003853834520394957509967430136734987697738523329171365404311371e+53'); - T('-2406059574284703894148440688533903170413209795439273014905177947511690472468600917700926344523744291780294283495749086476739113840212', '-203.98100910360', '-185.5516256192'); - T('0.000000000000000003179154784807166104910307727154315003026622310376783873362697561702481688909293567273102622264690939490656665370251098076', '-5350134300750700517120759400898359875793', '3.179154784807166104910307727154315003026622310376783873362697561702481688909293567273102622264690939490656665370251098076e-18'); - T('0.00012091743522867814073847484062603275868239331576857596900007215494716545366688505334', '-10378723922985921543083277863626740941254369901608094932235751553750705682535457043031.41378179327287353', '0.00012091743522867814073847484062603275868239331576857596900007215494716545366688505334'); - T('-1660767751.4', '2459907786914500616387727754259763565894446392427524988.3089887', '-1660767751.4'); - T('-0.000000000000000000033631822597167449133998986776130306365257623634866807914936753769658125021314951009961432799089', '797319763411607221.38591797885093271728899657566132838267977116823008412182171464', '-3.3631822597167449133998986776130306365257623634866807914936753769658125021314951009961432799089e-20'); - T('0.00000000000000007281386061841728062540615021553752512420210250015235565748841313988186929535298959795327001', '-0.000000000000018307307966434251165', '7.281386061841728062540615021553752512420210250015235565748841313988186929535298959795327001e-17'); - T('12297805724713550651709585300138356133248943868', '-163701508250759793576897510100944.363665567661696351838785854587582512790473802696800243554593953318621704650392740611277466227704883765281194971', '3.1332237910487269499049391286794358622794996271733943713726789898996217900759489344672017564153060898774887549719068362196506671085592851829665e+31'); - T('17961425562245817409581216294804746.065661120381362624317312407718862471407015786507000357168717692371625586', '9046942197910576941857651741.55434563534612137400298066696827535805595960684000066125477228083537184278377', '6.49408647019344859254849589352376161554251481462630160649054320755389913647417290498278294020058008596034e+27'); - T('-3360310711195664412184900840786504257661992132828215038244142041.22859603911690657528947205783809347874816594', '-5735628655860989.451138', '-3519456098473580.96254003911690657528947205783809347874816594'); - T('-0.00000000000000001469591999823677591002239452537827102191452346037061990719157543642750620200165386046868332215843328867721811877823863271769224341852627352', '-52861761302592655772535505924331973233.9199278286451051457115517367966126642231724169207509694259781203858104417456554118076000749697086', '-1.469591999823677591002239452537827102191452346037061990719157543642750620200165386046868332215843328867721811877823863271769224341852627352e-17'); - T('263428047166492021214430897.349', '-935321863128449821208776543.4661', '2.63428047166492021214430897349e+26'); - T('-64.23084746043437274748289661517354551174901810407232904876189241671863464191391813766386551115089149323979310399810268895863595', '19838093993118866366953732423596875847833914', '-64.23084746043437274748289661517354551174901810407232904876189241671863464191391813766386551115089149323979310399810268895863595'); - T('0.00000001042725590087839885246040660938289118002692929859', '1895509692.418538195', '1.042725590087839885246040660938289118002692929859e-8'); - T('-108703266290337059775.6444368018636935234787428949076436661761248981668101717329076241048414498', '-2258330970500035491281882848071727906499835424315004637497720003971765589145517945042230744562306208501662783826524402', '-108703266290337059775.6444368018636935234787428949076436661761248981668101717329076241048414498'); - T('19785588947095741.16', '-209378513090293702090937928908481270047755761853726892468236568171933572299844184320681716923601277379094105477', '19785588947095741.16'); - T('6.5627', '-24491197303184669250685680749224554131071232120525816290954743983460746359901828278732159826845479302974005432248.98478397721775763807590701860762', '6.5627'); - T('98040252941.5584387068346031648', '5799356330802.26678574689410221475982263208559136859429961045221424410142780663576353327734590059939940621596297615', '98040252941.5584387068346031648'); - T('116459945', '285087451924', '116459945'); - T('-0.000000000000024977925576784464857382157052766774720130135842951378009457010637198779202473727325439', '382620017160416816899117416971.937114437851011757205933117037959418794157533127476013068487945074162512915274505494963681134423226214835793018854460', '-2.4977925576784464857382157052766774720130135842951378009457010637198779202473727325439e-14'); - T('15693959990166898467530406779039841070032574908199729638250529357153104897', '-0.0000000000002824974164922651345048893785611071689041377509099951591709879707481443285597447959', '1.171281807977374285869977160622664270509881729566135484299178262958875818964075864e-13'); - T('38848812619964290843361545253566362214', '0.0000000000000058425180574815230559485050316708859218673791077977584355914797766947281173401829358941785694963992', '3.1516654254079360183309571610860641637778291889893615348383342541484388461460984134093274298941168e-15'); - T('1747169015246368594998.464722228648492098168730638104125762700809327003329875209', '0.0000000000000000000284393447186198269469304488191298546623882877275494399348981067472547693385217621583802872048566279451580304473660909939163358', '1.51262832017785291204651557051891862995924391738284925362711136214365955363154169051468433756051932474065931228616555991508102e-20'); - T('1431452840526919937933101541902740083072.42410139031811129499443', '-37469198013000024864225724154390.5943722958', '2.035118407303377297932806595854716825940131811129499443e+31'); - T('15195.99', '6038496355477993856241855699590649428405756', '15195.99'); - T('-2041396228526158683078620920473339987062472388906811556.219705106443467336064724639399525662209445478538446773454254723160644110', '-9896112700699691291.92454132620577755838251', '-437387204257609623.94163554707241697768552463939952566220944547853844677345425472316064411'); - T('0.0000000001675722009116506345401287561663653181456651402449423225303665889095', '2318773737623386732448176059369887376294723563923814698031839194174397762959815701', '1.675722009116506345401287561663653181456651402449423225303665889095e-10'); - T('-0.001277093413988786193792338596676914602745937422', '-9054497669216982378641234353912833868366784112824225472373455575687.06067706432215821280', '-0.001277093413988786193792338596676914602745937422'); - T('-7586359.946325387213858428685527361653731476271038018930272114935277172424094509714364626279197619817316315689963471346611526175969', '0.0000000000000000430136274016202618412879577873962429424232143628863509810616167892960358806475007016344779281704267625230587638895190481865206340', '-1.7310828493766802121394011969560202470214375466524665165343928089767553023528999738804774624545501070324448831891021818491806068e-17'); - T('-103412754444480069058780993539472717862718628742017032622717305153554156500660602780.3951870520597328029305', '0.00000000000020266200284082826503473600665777073078290305445466856192999389981999174414790577002212363701234328068734339302422794462188621520017527973975244678966', '-1.1778610247698432518015282589512280988772755012414363311971091185982964630918238442878242291061344089450155031117839124238643126352705822770745553166e-13'); - T('-4649840103983286431118728885.5686899779272666748077658422319061095341256831328876230', '-0.000018283271700643090900759826621345966959563090797', '-0.000012253346082427405840049943876343545027546355616623'); - T('11177150046419761513519128718157640126', '411523640124736736627670200725572416567962335255822909421', '1.1177150046419761513519128718157640126e+37'); - T('1096935867719575049333091824804333510580945589.83824692435717061889762037572296699239931905470583854219762636627842602007335719758', '191153987761529206300925.3273', '1.2912957009764464951516411274692435717061889762037572296699239931905470583854219762636627842602007335719758e+23'); - T('281098490751309919781.837846365353940940012601874942516251228270125', '-0.00000025737546499923055582341344593708193968274528519657943958684105481278501660321915687980677654353727621750', '1.513406720586607228234865179218366144830241157041834126753669969930905426261187858947727786029406807325e-7'); - T('35010488237245036697520709084885266506843.425268', '5352655279155382458162.94330921', '3.34054595183665523603034231901e+21'); - T('31145808975597255138857994779920960247290282089774585062872200414184550100684.303586528813', '18.3819835858', '11.042075433813'); - T('356018189420944082693927775557.325504971417155535076952686936532414415559512252384067063438680483994312420857090610153342560066768401075', '-8727338718894573084672497563561164796452986318031589007265947314318840375612702741093080619723378442544516952773104113190035800', '3.56018189420944082693927775557325504971417155535076952686936532414415559512252384067063438680483994312420857090610153342560066768401075e+29'); - T('131429872161991712843260938039674340723308898895521699771855.024419884969996712236865308648727765263561351531', '24712061.01438024179678320259', '3429325.950976494326109883486865308648727765263561351531'); - T('-34341392.101415133561441008979017430685687626916432806544362758', '-1799749026300082270308704328638985.5768', '-34341392.101415133561441008979017430685687626916432806544362758'); - T('-8413086128647.685221', '1606998396292485000476010332910518280001488901905838129531.210325550440342452530296261171681625711233494822776448488394', '-8413086128647.685221'); - T('-3.0', '-3139', '-3'); - T('153157.73428689664192233409327048703188379081578410604659706896677053628345674074129524175863661791683502264736428459474866594560693363338143', '-750845024214409.258', '153157.73428689664192233409327048703188379081578410604659706896677053628345674074129524175863661791683502264736428459474866594560693363338143'); - T('0.0000000000079148423562335767793913910035210781639819699467034642740182963781086448957016588218561890889449126109310405024351752573234749277921432649542353715', '20.00', '7.9148423562335767793913910035210781639819699467034642740182963781086448957016588218561890889449126109310405024351752573234749277921432649542353715e-12'); - T('11859857545035115534901402622688845103.26562817190421979271737710348373108096466579924379735578113634951611925484107971222', '1851265684423437968651977889678101896760692374632438502425532634360068350.385560161140916692762655434938124023616766184141', '1.185985754503511553490140262268884510326562817190421979271737710348373108096466579924379735578113634951611925484107971222e+37'); - T('48109224570352158844369436263326645.893373810649056419300323575418280726520558310461296', '997.098677101792499906198905275633517346903196994899968608672152519988658750302936220222619145776458182531806754907465557169', '935.865574632282320424247042476598393609973055983379471096359067799052781834688483510305261831102736621823846394515810747161'); - T('288352547873858.5', '0.00000000054104505228159386805524414898723018589882606496349575056289472447535373273397426133779673431360860889934275', '8.2673783217939116398724200124183517796838889199181998847282343820866487394178542482519715167131249859192e-11'); - T('0.01383525030381675505711753283705031809489417131896036954963744982627869295128813174764504280572980911841888', '367605263666452149870730318125641658304719350393018537475278503369754165680652067258735', '0.01383525030381675505711753283705031809489417131896036954963744982627869295128813174764504280572980911841888'); - T('-3505042194759758434255338972290034512117930395098910381818797807.88446', '-3902404098859498614003813210221299711513544600259011148097595421079608627612964369831566426492055190022939.50548422319511214', '-3.50504219475975843425533897229003451211793039509891038181879780788446e+63'); - T('-36026.8915685144533733380523666761979285283755516228130824117905334817989501255635498677420902031957643520214809171824', '-114223033898589812722834379611264506788064644828093.94800173309118106933782098399593703341461245', '-36026.8915685144533733380523666761979285283755516228130824117905334817989501255635498677420902031957643520214809171824'); - T('0.00000000000000013809121', '-0.0000000749288', '1.3809121e-16'); - T('20724213487987.4778151388942299169660827860781497232254137576387255648682698796172600059231860766018620789364227232170076071666458413', '0.0000001505314883568650229916354199483681188910572425586579937337120672732036834724306361544492395168511705791', '2.29883655297313793669989172506206203246334456768066197147148446745240375475037698012664723934396524013666458413e-8'); - T('-153138392170770562583816571476981650458239771831947250.84840860593737927903083269', '-308451953716202377192878310778513020451424572722485447176140047813202767698204721821724806119.758161292949455744622007277884667216068789328280721', '-1.5313839217077056258381657147698165045823977183194725084840860593737927903083269e+53'); - T('2024889826013722491642109209599457879536241401674305584888599322154577560286041916004095464239039183545712355073451878243704708180367087', '4683338288486975605179756026626993457497864317101799400353744322277088843093746348285508196719464116323961318584747939876770.2', '4.2624056691905146720562441944677299974218341770933920083702456621928076177796341929265641218876544182677248833016820278781996e+123'); - T('28313589531.63989269287899646520', '-9540641513056039416103997609028907233031199495306430017143', '28313589531.6398926928789964652'); - T('-2641228946549921949803625465.800690017957640611162874431878273597335326201803', '-2.04', '-1.280690017957640611162874431878273597335326201803'); - T('3804757657533490618037113031910761806055921644578987055.96708854321879766867635040692197', '-56283755203464428334670377565843348841905251379123127204289309457333750328700.80439297', '3.80475765753349061803711303191076180605592164457898705596708854321879766867635040692197e+54'); - T('-0.000003122558770454963876212', '-39544839986003369027933892780750841310717452858887832507369587012.160870183482262070063337198049486352931637085710934033181', '-0.000003122558770454963876212'); - T('5392479076929588293587612879284527077531852805129124829184368274349602728517523896911896867945402316135762773529299018121736199918072580', '0.0000000000031117750112617018767807786730379346274843985783', '1.4353640854938664984508258039534714987084307583e-12'); - T('0.0000006215288163619792375122235621598208666024377435574215852804775078406912545206606730739256331954317406302758639949372100097183229', '-1700271804304.2321825527640867380703229974396263910191256790985519859411209446664490975402918158602308456057531026581023238119814318747861781914', '6.215288163619792375122235621598208666024377435574215852804775078406912545206606730739256331954317406302758639949372100097183229e-7'); - T('0.00000000000000000001395090317654918659456545517103197123320734631379609159286124417697908168852487462191684425104983578404131395432', '-36360831023.627373636', '1.395090317654918659456545517103197123320734631379609159286124417697908168852487462191684425104983578404131395432e-20'); - T('-0.029041934347034050874280668604145494973712402916841954749197882673846083921928051487', '-24321172024135194808.395261648243950525857', '-0.029041934347034050874280668604145494973712402916841954749197882673846083921928051487'); - T('-1195623993147803871345536056905699481677978210464192436338258797046728634803018357673228508044459476891363148600.9832229463899180212881047872', '74333560130107705155367279487127775431014050908659963244531.63816885515954178693780861744425312763135160774863427607199163982187', '-3.086071550827133408617073704504470924384848699160039276410221417738588615789646409686448568270317981309079754174890980893975151e+58'); - T('0.00000000000000056280331289271771568763154768933854147024773200443808381650318222961243204491709538', '114.456600080136471439211636731189295907102935969767768173395401795448559059693594476527026886599808770208262292019087718144844542649882', '5.6280331289271771568763154768933854147024773200443808381650318222961243204491709538e-16'); - T('6349098329627676906649327567422334464124358967178664653673220067.12545346036152018429985973661814570758371069143', '-40.149580757418441824336470759561465678877107568894320488314323759826632493055455043642548602102537942593850156261255887938596477', '35.559837216237967922905742415355706498518504880575653814975327971087870426830614164516845532783586654567238760012791188596876952'); - T('0.000000000000000000134958665891757075394771428809225066409494541557306409079645322067754548797099784994774515332106618219339715207891623', '0.014098046208108624476748153262771647868771485742957685480766065052014710323', '1.34958665891757075394771428809225066409494541557306409079645322067754548797099784994774515332106618219339715207891623e-19'); - T('-0.0000000001198616208882375095568849612873993998239584002760230102327127648031323996108632845557417295759919543714234552132382176739713', '268502661662756835424685753368073720149943858868258883021295906122336165047282467800229455912077913155968019665198341299031672675184802671292795982', '-1.198616208882375095568849612873993998239584002760230102327127648031323996108632845557417295759919543714234552132382176739713e-10'); - T('11076417241349251662298800548993053870489927630158', '2688.3', '838.5'); - T('234.1833389564397314620433643408344637353276768649544802303136396105002821774541067155967638799471344828367', '-812930653675251477172818677593163802475335395321516392160988863518282232027.9562556743336062078852192049177044015303006113839518790342145303511416', '234.1833389564397314620433643408344637353276768649544802303136396105002821774541067155967638799471344828367'); - T('-140875446895336688695775538626569168776437615910859.266762102378021102701836180989625107023822491824898835037416036752', '-0.0000000008120648359026855681066672', '-7.04899443282288314693761107023822491824898835037416036752e-10'); - T('47302831592291859921582694268176274322977565414806988738441.7361304674456421666929415117545213713741289186588622962427363296591821124', '-4883810167764887872263063592054042463186129668615153318291940325670910399840788193978235038.40572599417807', '4.73028315922918599215826942681762743229775654148069887384417361304674456421666929415117545213713741289186588622962427363296591821124e+58'); - T('-0.0000013500524235084418996188348105405437586078275799625742804819565981475194354476354686524527', '-0.000000002779302718018358208070594207983495336655239720268299505135366323424005449637210093828893056230701144', '-2.09060526953816870459661966854852033003631563244902049130393128687679237358857314543956772810994516e-9'); - T('-8856430201.81983563385', '-938319623036559525783829785765639.1967490372320401152237017199929134065194059252249435216165450476221132716254629851825940147', '-8856430201.81983563385'); - T('-294598922189601641529872833094268363637995845166.9646336278254278800792178104215750273817481774076459356025057202968', '-10223015027442426717349749487745963093309181008.205638767965256198287559296860180242914602395642001035903820036797933102584301654148', '-8.354501421213693444079847437381397025338776937206748124798254328027557498336528225772881099431616930295544689954673127639553683856e+45'); - T('-134482328774078327.78079185017538184873315143896148192681352250548636020696397', '0.0000000000002450342135144683141905584800341536509151970912600522688818921301', '-1.60073903831321955625426419137488883923201731240764068955671173e-14'); - T('-78800324525137220517451995171180995756206048564118678612521109029482402593085439.179075675835830559536829101701753174835', '0.0000000000019610051403211771404265319419334586289897793595385183097754722977683927786401175145119430883943240234469175280289689345365813902443272222', '-6.535925793221845660690544723959477724568508804990257790953954534740872982749100270224419170325353310184590062864940380043185153774656484e-13'); - T('-0.000000000274926667753556399411968202786585104173511', '50122654291684689961017965995633281037050370088364056805776193660843878710891076787.95089764411489192357442121111434586112155176770186465', '-2.74926667753556399411968202786585104173511e-10'); - T('0.00001541285093466595032153714556336460183444913540837825470619197642409009049424847511805411133860049617440', '7665422149126503228084815387690205422619171304204357008349412728229292.3453547259', '0.0000154128509346659503215371455633646018344491354083782547061919764240900904942484751180541113386004961744'); - T('431221936', '0.000000000000000033002980288810278906842632506499735728904330341685973153145895066915569913336407191052426472565118072610', '9.10099606819992067300761400250765866243445746733753730198731073886381276861851209124916361256120258093e-18'); - T('4666715111789921577904245361334034970447224117169861897028729415807979546253890966745728334297280769367.70886147058269253176521844671243912148148079', '6.8', '3.70886147058269253176521844671243912148148079'); - T('2197002885429890116954900514249548697857546929350020990766722904092684082.2392268693970414838', '0.0000000000000332559964853018317783655876966402252962358315523892307692184125776284852387347864848368445935612207352750309642788316', '9.3491979527670904641879713520022687811716489510692050229377615200828160049260989946844066618421874281834484917990608e-15'); - T('111094585048273140985385584415256560233393427038902518.784369340636556911255874165728', '1132940880188177667933583369443202220027425411297999020483308891037542098', '1.11094585048273140985385584415256560233393427038902518784369340636556911255874165728e+53'); - T('520386', '91455585201495693176033076068679833231426120905022134379404266046062624029800133847471370511643609325721500716912256.984', '520386'); - T('459661201486307760729688778845476517533962920316992893663687352420276986833260305315498074609385953532821599018231099', '-270279027874029833827081796161869449847637992962004968243052096882327994299.79117493308674063254110578511458305133003811803355185433888227224', '2.424027017863735990977800631861728865952035304743598958695126250204835032809271219019609279133635203601969578977452650333362539299232143024e+74'); - - T('-4.785068183e+1', '4.100602340813778290214569907944153985840287e+41', '-47.85068183'); - T('2.80464647349124269012895506839600253935327310965e+18', '-9.5524432014496391100798143628e+26', '2804646473491242690.12895506839600253935327310965'); - T('-2.8475390576301982648821864330615e+1', '2.699279786373606e-17', '-2.6651296488681e-17'); - T('-2.9148775309735883444412038961e+12', '-3.7791910283459953859509024618806015827414491747e-14', '-1.2484519780688810034904273898769796515468689534e-14'); - T('4.75952e+1', '-9.2480596298788483952588449013e+15', '47.5952'); - T('-1.059098439e-6', '-2.61519835738114698145e+4', '-0.000001059098439'); - T('2.0737545782540501468649951383811505929864648e-11', '8.001141125055718003273562341771790690597363615833e+48', '2.0737545782540501468649951383811505929864648e-11'); - T('-1.22658750490728083398e+13', '1.8753238083480045539938865768259755398e+8', '-132148191.84975394758545561202438438412'); - T('3.0610455075185277682819215983121128590345078192561e+45', '-7.2132877592078603887799551646099823518259e+16', '61373855855082630.483565489609741494295639'); - T('9.0188012787220251521914339e+21', '7.34972521506799782052e+20', '199131020640427767567.4339'); - T('2.732276e+6', '-2.155e+2', '167'); - T('1.81970803337505025123814446711e+19', '1.552273391587321102352777093263e+8', '121079294.0355602541613892510099'); - T('5.29521849750516603814171596807e-3', '-1.186023062792866863315593132074754530817309278318e-16', '9.65458477943067357182194529851732179008303939488e-17'); - T('4.17590665394570316906941267960925070278431e-5', '9.049524633791428612160450019368774628e+0', '0.0000417590665394570316906941267960925070278431'); - T('-3.349078310428002e+5', '-1.6540638667696404135343644190345e+18', '-334907.8310428002'); - T('3.1992755000743044238501551275241732747e+28', '6.7694639443884902632801069e+19', '58012283694485729642.404216747'); - T('7.824216663065598374539197703051941e+7', '2.8264285749437427237554422632944775049521496e+41', '78242166.63065598374539197703051941'); - T('-1.67058990412026696591650976e+2', '4.22502522584451063700771426002353559984275436807335e+7', '-167.058990412026696591650976'); - T('-2.45635416234991644154081e+10', '1.6511720053714564535061012818217797956053950352564e+3', '-169.9750792296892367202705840388216243464507038608'); - T('-1.234302917437106938892e+6', '-4.66222869142052358935242282170391162075612576838441480514e-11', '-1.16831454856809476137891894092632703280451615639647891166e-11'); - T('1.839710778457895734645309275939324e+23', '-1.16318585777868797619955e+17', '90437897170854441.0401789324'); - T('4.31278525467628823588407602838382746643207760247774704277223e+9', '2.23171038985847514593e+20', '4312785254.67628823588407602838382746643207760247774704277223'); - T('3.0774747e+7', '-1.292178569466e+6', '1054639.902282'); - T('7.1986256721501851444121681387782246892728127232221676165644e+45', '-1.13782811077947907584409056830168328555517006340535538318684e+28', '2.4664369028970742315721904655905118416446174179007597618692e+27'); - T('-5e+0', '1.8187074446258529890089548133661805568989582581e+46', '-5'); - T('2.90713213183891582843410750914399986513758162e-3', '-2.63153627e+1', '0.00290713213183891582843410750914399986513758162'); - T('-1.1994289233986543701822561078984450080807572663172692845e+26', '1.3308098373134e+12', '-1101301973800.58984450080807572663172692845'); - T('3.80222940163e+10', '-1.86439621006147e+8', '175050952.052159'); - T('-1.0589771547255325020757865564001533466983148718e+46', '-4.66653476326811630302573645173380627372e+30', '-1.34743461530630312563356791528734704544e+30'); - T('0e+0', '-5.8555382904168e+10', '0'); - T('-3.877410561846137535676828506580217538851e+39', '1.8546585782329946703671500695022434e+25', '-8.304732800863368666145000987852196e+24'); - T('-1.163627582049e+10', '-1.190310616961783801595291761751e+7', '-6941092.77337225841399948769273'); - T('5.50922178592853292e+8', '2.7726691028626755345614e+1', '9.067016077612284334026'); - T('4.585813032273175774206281699078636679246584e+2', '-1e+0', '0.5813032273175774206281699078636679246584'); - T('2.143209743784799995437859351e+27', '7.89686033593298254046863395059167e-18', '6.81868949928986360863748711628261e-18'); - T('-2.2928677299898057914670255997347455786e+11', '1.43685706448112139571439918598028632e+6', '-306934.405632425577309870670368346'); - T('4.354911010988471845818170482045217459828e-19', '-3.4255381103210061953947764102346444839325208e+5', '4.354911010988471845818170482045217459828e-19'); - T('7.6205756951722652979726396821744395258e-11', '-2.469701682300246385132843673488255945931294e+23', '7.6205756951722652979726396821744395258e-11'); - T('-3.0414336636936289483194714509757754918625515721268383983891e+22', '4.536514951e+9', '-2390201439.714509757754918625515721268383983891'); - T('6.1950756263395220720928988581672084e+12', '5.50299097228515217025542686233486e+6', '994424.9277391452982364908047321'); - T('1.5592703628193685590607028031257876838163995140476313e+52', '4.644158636847e+12', '1438695302628'); - T('-8.321953e-20', '3.425924048971005175376011737e-6', '-8.321953e-20'); - T('2.50545873839057298343115607524742030919655663396773e-12', '-3.81e-9', '2.50545873839057298343115607524742030919655663396773e-12'); - T('-6.626563801610720283429069e+24', '-7.318668911456127669428074219e+27', '-6.626563801610720283429069e+24'); - T('6.579221387782276980734304828884120337616419799251099653496e-1', '-3.8969000319182257446208467342247396396093882352e-15', '1.9767722676183043776377919004479568382127247136e-15'); - T('3.1401513e+2', '1.237032386460703e+15', '314.01513'); - T('4.232794809535764324617667621124324483982653495945584e+6', '7.3809184815598732203484798105535965548268885342e+0', '0.4405677713499586621163276690389136391131296364'); - T('-2.54046333929067768396256156730192176704492639570003e+1', '-1.43509613727037812846035760529266475517733244287446e+5', '-25.4046333929067768396256156730192176704492639570003'); - T('-1.7784812894976825e+5', '1.348176239051319766183648668812555533668836074076e+47', '-177848.12894976825'); - T('-1.34525103103779e+8', '-2.1e+0', '-1.903779'); - T('-7.5e+0', '1.1485396369968399088809663888589e-8', '-2.897466364518558819119797833239e-9'); - T('1.02502826667e+1', '9.3481096028282686300763053917132870455928e-15', '7.7634911550320902212280587730161073680336e-15'); - T('9.56858647594739448303715711e+11', '-4.2315e+2', '168.239448303715711'); - T('-1.121662781899762e+3', '-1.153e+3', '-1121.662781899762'); - T('-1.1987521321e+0', '3.3717546189279471902193720771211135e-6', '-0.0000023276964037193028773035373618806855'); - T('-3.96409663517864928212668914312890035732488673186557035e+16', '-3.503768915124379422490579250903005526551657e+9', '-1073469883.0404370184683678233259100444904567035'); - T('-9.780642443954005196506214589e+15', '-9.0202154557465647565999764323022181914347547218716e+44', '-9780642443954005.196506214589'); - T('6.22723611860453496632948443539098691396413e-10', '-2.77824094902753769648885834726391520861911e+5', '6.22723611860453496632948443539098691396413e-10'); - T('-4.7319718694e+5', '6.8346446241247783161447574947601984306026821486383635e+33', '-473197.18694'); - T('-6.1933379823501920314298624358203814e+30', '-8.089868231074264910103113854481018685411838271163628e+0', '-8.004699925089141256941499632457605509538837084388632'); - T('1.5e-3', '7.82546748299781600669e+20', '0.0015'); - T('-6.7242596508788e-7', '1.3806352e+7', '-6.7242596508788e-7'); - T('1.9762609860647814575863656621674468865989380864741e+45', '6.51277646556899014436272323991705259786529655e-5', '0.000014790203177222374955576884258500785345510175'); - T('7.004000748022736e-8', '4.736649441368895442161035451e+22', '7.004000748022736e-8'); - T('-4.29285701374473103585848390846585847338e-20', '-1.39970996245e+6', '-4.29285701374473103585848390846585847338e-20'); - T('1.44068396723397585225000633824556784092935879966094079042e+14', '-1.85739402953385383572444765551721122270675395703645487708e-6', '2.2082902769721875195705810453565730977529281295245227248e-7'); - T('-1.90763083929612502667113570129e-17', '-2.989745679222607307608195e+24', '-1.90763083929612502667113570129e-17'); - T('-1.8008915784029129140878223332849e+15', '1.2709184544773109938594286324169565032629e-8', '-8.198978038773931537165401098330611286589e-9'); - T('2.5283393571163e+11', '1.42605397244976960657e+16', '252833935711.63'); - T('-1.07482517991266460493961480563252855043997503069929863e+53', '4.0293147259356676513464190395e+2', '-327.97566262501963085789832435'); - T('-1.791459937048480305498333255301e-17', '-3.60140444532360031210882850839206992361061e+32', '-1.791459937048480305498333255301e-17'); - T('-3.7973618905e+4', '2.076660739009108092554128277835978289058948608e+27', '-37973.618905'); - T('4.296835337235213305241997742797979761241859185e+32', '1.016128323816741556885745789299051e+30', '8.773810728563935184150511955984541241859185e+29'); - T('-3.3476803669790089330287396786213536648e-19', '-1.0485228843496121655433179024642877076320529176e-16', '-3.3476803669790089330287396786213536648e-19'); - T('-9.265001828356e-19', '5.82146621596502038608123809e+5', '-9.265001828356e-19'); - T('1.6574237778185417162412521417931606051387220789593e+6', '4.3416420707553748006564234818e+29', '1657423.7778185417162412521417931606051387220789593'); - T('-9.774062277712948833378e-13', '3.080037033054419810654271948e-15', '-1.034488293043803360395792484e-15'); - T('1.0480042083686042910696085478682293620068215e+43', '-9.1636346772043682784439956904897547881091051932e+20', '711021412902451879505.0635467550321309923369716'); - T('-3.40923816647136940940085344632137226188233200061358e+20', '1.6073165168980479523827835495337e+31', '-340923816647136940940.085344632137226188233200061358'); - T('-8.7800373379e+9', '1.589967630656932636460925283862063976207125245919e-11', '-2.20858757786189096197325170019616955392212367465e-12'); - T('-1.508492483290420652523454481016576379245159230227181384539e+43', '9.65407339051e-1', '-0.95207917271339'); - T('1.70797882e-17', '-1.221287649130143636399302725332474299568133811751e+13', '1.70797882e-17'); - T('2.25e+0', '7.2018713275608502122703864334941124435400603003965e+49', '2.25'); - T('3.66e+3', '-2.00125759501079698887197092755e+20', '3660'); - T('1.074410572430091406447031457374002693e+8', '1.14072231468921335177378921904e+16', '107441057.2430091406447031457374002693'); - T('-3.8968391781145045605e+7', '3.823518283e-1', '-0.379345773205'); - T('3.8807293359084454309373e-14', '-6.54951383e-4', '3.8807293359084454309373e-14'); - T('8.3790348726489133341557987289125627922491641304972332e+10', '1.88761931097750519978e+9', '735099043.478904551237987289125627922491641304972332'); - T('1.5282357157991306e+9', '9.951e+0', '4.4051306'); - T('1.1776422045e-12', '1.94520506072334528824768019674726837220814205e+44', '1.1776422045e-12'); - T('-5.738265352165406462762631804597466473267412948e+18', '-1.5172659934372962e+16', '-2999896972426826.762631804597466473267412948'); - T('1.021717777232460732646336675651455853866e-8', '-1.31332207597e+9', '1.021717777232460732646336675651455853866e-8'); - T('6e+0', '9.3047796711618934817610173062034274e+10', '6'); - T('-1.182956037757676026896657463893805186423539855204970266169e-13', '1.7827584304157093780925160931953100051299721649998e-2', '-1.182956037757676026896657463893805186423539855204970266169e-13'); - T('2.2104533461720397849851124115599254191623707092353e-11', '-4.0310943429346438323447892668604172339295221650618858e+41', '2.2104533461720397849851124115599254191623707092353e-11'); - T('1.722426520663101950880778227697e+10', '-2.69592201025681600543464676120992735285696714886632140343386e-2', '0.0223237854099389241141349574091483444628934259089076259401818'); - T('-3.25603413629979799893671467886183127646824550309804207e+34', '1.47161894610216114600651e+17', '-34172500003558300.1070534550309804207'); - T('-1.08739354e+2', '2.9193728838924110750652340949692628787e+16', '-108.739354'); - T('3.206759288064547512180035e+2', '4.35800600237216221853047563599293340753408e+23', '320.6759288064547512180035'); - T('-2.21248e+1', '-2.6325594996226359777509157939720585725219065458496707707e+52', '-22.1248'); - T('7.073189319e+2', '1.08209742786e+6', '707.3189319'); - T('-2.1907210461355111297041e+18', '-9.2745316314605247152343780428919501619175952441700562494e+16', '-57578770899590445.200193050134851462758953093840887062638'); - T('-5.16796251732448951395790039385689407742691059264573e+50', '1.6780101630562e+12', '-1253088706638'); - T('3.51223602606475213080940254052176926846990239224958899e+38', '-1.63965e+2', '137.150239224958899'); - T('8.1882456091960208142365059003084619285549256998568554e+32', '4.64295172738148816415249852304269862921945245047076609476e-12', '1.24381368401600627920725181533134960575834680987278935368e-12'); - T('1.5813114524781473056173591272288745672e+30', '2.42e+0', '1.9745672'); - T('7.454553e+7', '1.538906639e+1', '15.23005577'); - T('1.51240970967848419751948592395604701e+29', '6.5611662e-15', '2.51558e-17'); - T('8.27911469397271464898e+18', '-1.2068203240037786014348e+22', '8279114693972714648.98'); - T('-3.20852252575e-6', '2.775014697501612276189583840612e+24', '-0.00000320852252575'); - T('-1.170515851548909718864331941709405324e+36', '7.57552e+1', '-34.552'); - T('-3.84525210626e-14', '1.010105187954696781e-14', '-8.14936542395909657e-15'); - T('-1.77609228049985890329999e+23', '-6.46964642626693630854488379333298772649377016e+44', '-1.77609228049985890329999e+23'); - T('-2.6073763079e+3', '-1.0248349080124110516237552578873628724235803267839057233638e+47', '-2607.3763079'); - T('-1.3843135851252423514202512138558e+2', '6.264100013e+5', '-138.43135851252423514202512138558'); - T('1.737e+1', '-8.726745986924851889490167717196421297465059646521e-5', '0.00002298524516705360208547066072715688662132777520597'); - T('-1.841251966e+6', '-4.01007093384313393333803996623363e+3', '-629.40736600152459783965549876383'); - T('-7.9035320783720205756630542761451846e+28', '-2.599e-14', '-7.27e-15'); - T('8.04680904556172181303021860819810222422429215449526e-9', '6.067916963498582356994976035938910323855806689699e+7', '8.04680904556172181303021860819810222422429215449526e-9'); - T('-3.2591991380971738720016943747147239739143e+31', '-1.73144320279140892221728899407693684286357446057721685e-18', '-1.27592813736665621853520468633947214694438394987425995e-18'); - T('-1.2588878e-17', '3.261793e+3', '-1.2588878e-17'); - T('5.43e+1', '1.052831202498586189323776187910882192514844872077623859821e+39', '54.3'); - T('4.06387835714e+8', '2.33202324535463287957487622607173811837788707819610667687974e+21', '406387835.714'); - T('5.67752073680296031467842e-19', '-8.601036147246856e-8', '5.67752073680296031467842e-19'); - T('-5.6e+0', '-1.8453950994974064478634206768933065169074111213e-6', '-9.38967160341442620882313109909923108359525446e-7'); - T('-2.401261282811e-19', '2.056364582076044663398637567011867699558230779795276645e-10', '-2.401261282811e-19'); - T('1.0071885115326611960091167358045295888291572049818e+17', '-1.155335154293012676567e+5', '25104.02532384871469245888291572049818'); - T('1.014158574325029197139040004809e+30', '1.232019764151304366892839731605883657742763048324806262665e+25', '9.1852662414944875300513403008082924671691409524768246786e+24'); - T('-1.2960509353603657966595552033959658985645676032863193e+52', '7.312148044790448624282108771e+15', '-3433711470718028.563736068134'); - T('3.01768950813493722706548378704076026752577936470035725e+18', '1.9656153202749223229990334e-3', '0.00073182798214321319862218230035725'); - T('1.138167248709526636888918903478056867722716985003746e+26', '3.6048159266517496763778284439e+18', '719311038898532672.7955886026722716985003746'); - T('1.8330798601350027076470730268735578842175174524571662455e+23', '5.956531185e+5', '15372.61868735578842175174524571662455'); - T('5.64642126873494799157e+20', '-8.4189838723261978274550066411375501139050432727008990287e+35', '564642126873494799157'); - T('-3.35038698584922285256354681261850266025e+11', '-4.971223451368832884824701430128927927628669283992608676e+11', '-335038698584.922285256354681261850266025'); - T('-2.18228628448939641477994931560863e+14', '-1.9848009280011383843320378679218954e+17', '-218228628448939.641477994931560863'); - T('-7.9673369189287490637419160450685121345328702274551959142e+1', '-4.36967584013770925112063732602257274835575300806170773838e+56', '-79.673369189287490637419160450685121345328702274551959142'); - T('-6e+0', '-1.355953074987858129012845374276873617e+9', '-6'); - T('2.8980599713949417129214483614111169203417835e+30', '2.09234393781487031432546596319751546520229578e-7', '3.5199820166059069684596128491376185333182764e-8'); - T('-1.05885215e+2', '6.96134e+3', '-105.885215'); - T('-6.63850464900027698e-11', '1.47441847556286416976794431734798800248343e+1', '-6.63850464900027698e-11'); - T('5.329e+0', '-4.2052296626044402413438748554367560246832050927e+46', '5.329'); - T('-3e+0', '6.310795365619607762092711e+14', '-3'); - T('-1e+0', '-6.151436486161577e+1', '-1'); - T('1.27372286268e+5', '1.4369236059213560786734339762024606028559549e-11', '1.1838867423641287048289062782741685583483082e-11'); - T('-2.47796406858881525393148342132e-19', '-1.114448296870693752476671e+24', '-2.47796406858881525393148342132e-19'); - T('3.31716916602e-3', '2.18973397623066249876504033115990763189329335e-11', '3.5801106985221822189595541951629188768773145e-12'); - T('3.36130377710864393490577917996361199494e+23', '-6.01033888502758381063377894374191325727e+38', '3.36130377710864393490577917996361199494e+23'); - T('-4.05078537570850079118549718e+24', '5.77875486336186078309057e+19', '-51579137737238062500.3271'); - T('-3.882925224099795993538502419426e+9', '1.77e+2', '-114.099795993538502419426'); - T('-3.1151827562342815382088011269e-4', '-9.5939986106878750496332e+22', '-0.00031151827562342815382088011269'); - T('1.263515691650061656757086438088937011975691e-9', '-7.548241773275363671025372541e+26', '1.263515691650061656757086438088937011975691e-9'); - T('-2.54581764865280637563363587278172942730649726409174798929e-16', '9.70709912979e+3', '-2.54581764865280637563363587278172942730649726409174798929e-16'); - T('4.544262038438149962548431721262064539926203e+22', '-3e+0', '0.31721262064539926203'); - T('6.7686482995324e-8', '3.57628817229923120251439846315e+11', '6.7686482995324e-8'); - T('-2.5837243515207675215858826036e+0', '4e+0', '-2.5837243515207675215858826036'); - T('3.5866287777543048262613523108599769647097333e-12', '6e+0', '3.5866287777543048262613523108599769647097333e-12'); - T('-1.12950543165722419512831984028282909551894468294664944607538e+48', '-8.8994740827559322848961144561345767240206011017e+24', '-4.3060230186943786250552209277543855025500782967e+24'); - T('1.32629615572864315471240257652101515250879349726101e+50', '1.24518406684607715300780841979783985e+7', '11819939.0138645251983859235118410325'); - T('-1.790115489391445059426395198670071179664972568459e+32', '-1.6684469764e+8', '-13018319.8379664972568459'); - T('-4.043663364e+4', '-2.201805700480933156346652411e-3', '-0.000764247759663998270288369046'); - T('1e+0', '-1.21869963007789517796039072048232e+19', '1'); - T('2.569643022111077e+3', '7.5897425087682454375918533810051138006394242e+43', '2569.643022111077'); - T('5.462e+2', '1.185649353252424966708806431224964085816087803853753518e+25', '546.2'); - T('1.77779806e+1', '1.884041077778132016302158377e-11', '3.69280262144004372920946142e-12'); - T('-4.30600314463832449294350446141214505790227492e+37', '3.62303831544018299428603870984582744317996855543826e+50', '-4.30600314463832449294350446141214505790227492e+37'); - T('1.46820318075561560819e-20', '-9.2923470300743146049252849193885672e-19', '1.46820318075561560819e-20'); - T('2.62e-8', '-2.272918110884608589603164353380779123924726e+42', '2.62e-8'); - T('-4.946872029105116445758491681281820008627914126e+12', '3.553464565566610158e+4', '-18242.079207968012581281820008627914126'); - T('-5.444799946684106145173105e+19', '3.2264562027032003440966e-1', '-0.29741218915109159338806'); - T('-6.6641862567771859738211631116152852541e-10', '4.53837850928448871996774473572127726597085345e+2', '-6.6641862567771859738211631116152852541e-10'); - T('2.04412473664652568585117378133e+21', '7.17977970071262225892475320830525724040709899422645111e+7', '6850552.6641959495615784496161192519568752280008915477'); - T('1.90389879643445938760898252e+18', '-2.820723572209116115220857118861930149808002989789986560298e+16', '14014003054351590.41100825036250679962863799684070900460034'); - T('3.54399572690074523717477041687706132576531580993088737845e+56', '3.86305546858881436338415083054757481145199924812285238142249e-8', '9.0010818560321987858218342657711149479512082543264309237906e-9'); - T('-2.81021903922014238242334e+23', '-3.81351478552287812572563406e+26', '-2.81021903922014238242334e+23'); - T('-6.6613160898e-13', '-1.35501662654877262254698379956968e+8', '-6.6613160898e-13'); - T('-1.37322505522894140472667261498601533454460065766486158656811e+56', '-6.101994414072054045611858917329e+20', '-111378121206362165144.3203824528'); - T('-7.174927106677644467861669419e+23', '7.3781216744e-6', '-0.0000029266955552'); - T('-2.6550841471735130755928352857461281e-13', '2.29146598195364764153947e+4', '-2.6550841471735130755928352857461281e-13'); - T('-1.98282995527163119617853095482026820489347564940576571365074e+44', '-6.7343972311468478371503508710588269021e+22', '-1.8425585476108166553720676776558276153e+22'); - T('3.45510770293428430743226307247e-10', '-3.453355686854751488683981e-4', '3.45510770293428430743226307247e-10'); - T('3.0940169147998267e+16', '-5.1679827115186675000881679620188097860809e-4', '0.00045494105050079175531229543905152624215823'); - T('-5.683707359160590767482385181054893368911539362771215016167e-10', '8.86164094021739567981e+19', '-5.683707359160590767482385181054893368911539362771215016167e-10'); - T('-5.1599750984803110105e+16', '-3.5042033e+8', '-313986840.105'); - T('-6.648136108552158227395470978468104077135e+30', '-7.670622e+6', '-1963500.104077135'); - T('5.7863814022935592013463113844081501644834124668e+33', '2.927394204321791269473573349413773145813098792e+20', '144279721918792318844.9709640995481667887767448'); - T('1.846283862301720586500752e+20', '-2.76680920710526658074e+14', '37882799751297.269222'); - T('-4.074907e+6', '1.2292e-10', '-1.156e-11'); - T('-2.4670327357021349034013736e+26', '-2.247694648202153e+3', '-1262.063905639966'); - T('4.5429277175861978297034645864160147622314348499084882862362e-18', '2.7386e-2', '4.5429277175861978297034645864160147622314348499084882862362e-18'); - T('2.157162452863075302863915e+18', '-3.60299993558464831757535049083884559e+35', '2157162452863075302.863915'); - T('7.7382289705506563990171491235511002471989281027800113e+22', '2.48970493035763788684e-5', '0.000011085865185482489695400113'); - T('-1.9064913834485914061878309425875120670837105e+5', '-3e+0', '-2.13834485914061878309425875120670837105'); - T('-5.48175104358179142491638230233e+25', '-1.52434523822871140847e-11', '-8.8309288545189098888e-12'); - T('1.07984359784457855e+6', '2.92533631912192887348822954567386e+32', '1079843.59784457855'); - T('-5.343344296409307514661858172266262866671109159598323e+9', '2.3273061846552018803169584402231121660442419923712e+8', '-223270690.167863377964549603775416101373776776381683'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js deleted file mode 100644 index b5ae381..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/neg.js +++ /dev/null @@ -1,544 +0,0 @@ -var count = (function neg(BigNumber) { - var start = +new Date(), - log, - error, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(expected, value){ - assert(String(expected), new BigNumber(value).neg().toString()); - } - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - log('\n Testing neg...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : [-7, 21] - }); - - T(-4, 4); - T(-2147483648, 2147483648); - T(-0.25, 0.25); - T(-0.0625, 0.0625); - T(-1, 1); - T(1, -1); - T(0, 0); - T(NaN, NaN); - T(-Infinity, Infinity); - T(-Infinity, +Infinity); - T(Infinity, -Infinity); - T(+Infinity, -Infinity); - - T('0', '0'); - T('-238', '238'); - T('1.3e-11', '-0.000000000013'); - T('-33.1', '33.1'); - T('2.61', '-2.61'); - T('-4', '4.0'); - T('-5.8', '5.8'); - T('-3.52e-7', '0.000000352'); - T('190', '-190'); - T('4.47', '-4.47'); - T('6.9525e-12', '-0.0000000000069525'); - T('1.3', '-1.3'); - T('-6.21', '6.21'); - T('2', '-2'); - T('-1', '1'); - T('147.857', '-147.857'); - T('-26.517', '26.517'); - T('-3', '3'); - T('5', '-5'); - T('204', '-204'); - T('2.1e-8', '-0.000000021'); - T('3.7015e-7', '-0.00000037015'); - T('-50.1839', '50.1839'); - T('44768.1', '-44768.1'); - T('3.8e-15', '-0.0000000000000038'); - T('-7.4379', '7.4379'); - T('1.5', '-1.5'); - T('6.0399', '-6.0399'); - T('109.07', '-109.070'); - T('1582', '-1582'); - T('-772', '772'); - T('-6.7824e-14', '0.000000000000067824'); - T('-1.819e-8', '0.00000001819'); - T('-3e-15', '0.0000000000000030'); - T('-424120', '424120'); - T('-1814.54', '1814.54'); - T('-4.295e-17', '0.00000000000000004295'); - T('-5', '5'); - T('2152', '-2152'); - T('4.6', '-4.6'); - T('1.9', '-1.9'); - T('-2', '2.0'); - T('-0.00036', '0.00036'); - T('-0.000006962', '0.000006962'); - T('3.6', '-3.6'); - T('-1.1495e-14', '0.000000000000011495'); - T('-312.4', '312.4'); - T('4.3e-10', '-0.00000000043'); - T('5', '-5'); - T('-1.8911e-8', '0.000000018911'); - T('4963.53', '-4963.53'); - T('-4.3934e-10', '0.00000000043934'); - T('-1.3', '1.30'); - T('-1', '1.0'); - T('-68.32', '68.32'); - T('0.014836', '-0.014836'); - T('8', '-8'); - T('2.1351', '-2.13510'); - T('162224', '-162224'); - T('3e-19', '-0.00000000000000000030'); - T('0.00004985', '-0.00004985'); - T('28.9321', '-28.9321'); - T('-2', '2'); - T('-16688', '16688'); - T('-1', '1'); - T('5', '-5'); - T('-20', '20.0'); - T('-1.9', '1.9'); - T('3', '-3'); - T('185640', '-185640'); - T('-0.0000058', '0.0000058'); - T('9.67e-13', '-0.000000000000967'); - T('-707.98', '707.98'); - T('2.57917', '-2.57917'); - T('-1.3', '1.3'); - T('-4.2655', '4.2655'); - T('-149.6', '149.6'); - T('-1.32383', '1.32383'); - T('-26.925', '26.925'); - T('-0.00013', '0.00013'); - T('-6868', '6868'); - T('7', '-7'); - T('-5e-9', '0.0000000050'); - T('3.2555e-16', '-0.00000000000000032555'); - T('1.42768e-13', '-0.000000000000142768'); - T('11.2962', '-11.2962'); - T('3186.7', '-3186.7'); - T('-6.9', '6.9'); - T('-6.2618e-7', '0.00000062618'); - T('8', '-8'); - T('-8.04', '8.04'); - T('-22', '22'); - T('-750.6', '750.6'); - T('12.803', '-12.803'); - T('-20513.4', '20513.4'); - T('114781', '-114781'); - T('-16.9046', '16.9046'); - T('4.6e-7', '-0.00000046'); - T('-31399', '31399'); - T('1.04', '-1.04'); - T('-51.2544', '51.2544'); - T('1.023e-15', '-0.000000000000001023'); - T('281', '-281'); - T('-128315', '128315'); - T('20.2', '-20.2'); - T('9', '-9'); - T('-10', '10'); - T('-1.92262e-17', '0.0000000000000000192262'); - T('-0.0023', '0.0023'); - T('5', '-5'); - T('7', '-7'); - T('13.72', '-13.72'); - T('98068', '-98068'); - T('3.2', '-3.2'); - T('1.1', '-1.1'); - T('-3.97e-18', '0.000000000000000003970'); - T('0.00334824', '-0.00334824'); - T('-5.4892e-8', '0.000000054892'); - T('-1', '1.0'); - T('-2.8135e-8', '0.000000028135'); - T('-1.816e-13', '0.0000000000001816'); - T('199724', '-199724'); - T('-19.4', '19.40'); - T('-12.74', '12.74'); - T('-2171.8', '2171.8'); - T('-2.7', '2.7'); - T('1', '-1.0'); - T('21779', '-21779'); - T('8.9e-12', '-0.0000000000089'); - T('-4.51', '4.51'); - T('2.6', '-2.6'); - T('-0.00016', '0.000160'); - T('6', '-6'); - T('50.566', '-50.566'); - T('-16.2', '16.2'); - T('-7.9156e-20', '0.000000000000000000079156'); - T('-2262.4', '2262.4'); - T('6468.59', '-6468.59'); - T('0.077', '-0.077'); - T('-465.83', '465.83'); - T('-604.59', '604.59'); - T('-0.0014917', '0.0014917'); - T('-2.8954', '2.8954'); - T('1', '-1'); - T('1942', '-1942'); - T('-182.308', '182.308'); - T('-17.8', '17.8'); - T('39472.5', '-39472.5'); - T('214.21', '-214.21'); - T('-40.11', '40.11'); - T('-3', '3'); - T('141149', '-141149'); - T('-8', '8.0'); - T('-2.9', '2.9'); - T('44.51', '-44.51'); - T('-5.3', '5.3'); - T('0.05498', '-0.054980'); - T('7', '-7'); - T('-922', '922.0'); - T('-1.5146e-14', '0.000000000000015146'); - T('-0.000008117', '0.000008117'); - T('1', '-1'); - T('5452.81', '-5452.81'); - T('751745', '-751745'); - T('-2.7', '2.7'); - T('5.1', '-5.1'); - T('-1', '1'); - T('-524124', '524124'); - T('-183.5', '183.50'); - T('44856.8', '-44856.8'); - T('0.00000387', '-0.00000387'); - T('-3.0544e-14', '0.000000000000030544'); - T('1.3', '-1.3'); - T('-0.0019273', '0.0019273'); - T('75428', '-75428'); - T('-91.7925', '91.7925'); - T('44.5', '-44.5'); - T('-2', '2'); - T('5.3', '-5.3'); - T('-57', '57'); - T('-2.53e-9', '0.00000000253'); - T('18258', '-18258'); - T('0.829', '-0.829'); - T('-4', '4'); - T('-1', '1'); - T('10.289', '-10.289'); - T('319', '-319'); - T('2.4', '-2.4'); - T('89.9207', '-89.9207'); - T('-9.06122e-17', '0.0000000000000000906122'); - T('-102.639', '102.639'); - T('948.5', '-948.50'); - T('-610.7', '610.7'); - T('-1.61', '1.61'); - T('-99.042', '99.042'); - T('3.0232', '-3.0232'); - T('-15', '15'); - T('-3.835', '3.835'); - T('-7', '7'); - T('1', '-1'); - T('21.46', '-21.46'); - T('2', '-2'); - T('-2077.79', '2077.79'); - T('-14.7446', '14.7446'); - T('-9.11e-12', '0.00000000000911'); - T('1.2', '-1.2'); - T('-105851', '105851'); - T('24.561', '-24.561'); - T('780', '-780'); - T('3.82122', '-3.82122'); - T('9564', '-9564'); - T('-13.21', '13.21'); - T('25020.5', '-25020.5'); - T('-5678.6', '5678.6'); - T('1', '-1.0'); - T('2.6', '-2.6'); - T('9.6e-16', '-0.000000000000000960'); - T('12.6', '-12.6'); - T('-5', '5'); - T('-537', '537'); - T('-85', '85'); - T('758.15', '-758.15'); - T('-67.55', '67.55'); - T('-9444', '9444'); - T('21.4', '-21.4'); - T('2.5', '-2.5'); - T('489311', '-489311'); - T('6.8', '-6.8'); - T('4.29', '-4.29'); - T('23982', '-23982.0'); - T('-0.0111781', '0.0111781'); - T('4.96e-20', '-0.0000000000000000000496'); - T('-40.5481', '40.5481'); - T('-32.52', '32.52'); - T('-7.4', '7.4'); - T('1008', '-1008'); - T('1.2', '-1.2'); - T('-5', '5.0'); - T('-2463.4', '2463.4'); - T('7.363', '-7.363'); - T('2.8', '-2.8'); - T('-14498', '14498'); - T('201', '-201'); - T('3.2', '-3.2'); - T('-3.05', '3.05'); - T('1.1', '-1.1'); - T('-380.4', '380.4'); - T('13399', '-13399'); - T('-20.44', '20.44'); - T('1.6', '-1.6'); - T('2.1234e-10', '-0.00000000021234'); - T('4404.1', '-4404.1'); - T('2.4345', '-2.4345'); - T('-117.256', '117.256'); - T('-6.025', '6.025'); - T('18.43', '-18.43'); - T('-47.5', '47.5'); - T('45.1', '-45.1'); - T('-3806.5', '3806.5'); - T('-4.6', '4.6'); - T('-1.3', '1.3'); - T('-74.6', '74.60'); - T('-16.2088', '16.2088'); - T('788.6', '-788.6'); - T('-0.29', '0.29'); - T('1', '-1'); - T('-4.058', '4.058'); - T('5', '-5.0'); - T('0.00612', '-0.00612'); - T('-14317', '14317'); - T('-1.1801', '1.1801'); - T('-32.6', '32.6'); - T('57248', '-57248'); - T('-103', '103'); - T('-1.4', '1.4'); - T('228', '-228'); - T('92.8', '-92.8'); - T('3.46e-17', '-0.0000000000000000346'); - T('-15747', '15747'); - T('16.36', '-16.360'); - T('0.00223', '-0.00223'); - T('244', '-244'); - T('3.8', '-3.8'); - T('-604.2', '604.2'); - T('1.03', '-1.03'); - T('1487', '-1487'); - T('7', '-7'); - T('45', '-45.00'); - T('2.55374e-10', '-0.000000000255374'); - T('3', '-3'); - T('-5.5', '5.5'); - T('-5.4', '5.4'); - T('-9', '9'); - T('-1627.2', '1627.2'); - T('1.0805e-16', '-0.00000000000000010805'); - T('-14.0548', '14.0548'); - T('-207137', '207137'); - T('3.8', '-3.8'); - T('-33.4785', '33.4785'); - T('4.28626', '-4.28626'); - T('-4', '4'); - T('-6', '6'); - T('-1', '1'); - T('-44.951', '44.951'); - T('29.7', '-29.7'); - T('-121.17', '121.17'); - T('480', '-480'); - T('-2.696', '2.696'); - T('-3708.62', '3708.62'); - T('2.8', '-2.8'); - T('17842', '-17842'); - T('-3', '3'); - T('-2', '2'); - T('-1.855', '1.855'); - T('246866', '-246866'); - T('-0.0022', '0.0022'); - T('-1', '1'); - T('1283', '-1283'); - T('2.1', '-2.1'); - T('3.289e-12', '-0.000000000003289'); - T('-1656', '1656'); - T('3.9', '-3.9'); - T('1.12', '-1.12'); - T('3.54e-16', '-0.000000000000000354'); - T('-0.001123', '0.001123'); - T('2.06551e-14', '-0.0000000000000206551'); - T('-19319.3', '19319.3'); - T('3', '-3'); - T('-6', '6'); - T('5.747e-17', '-0.00000000000000005747'); - T('-1.756', '1.756'); - T('2.71004e-15', '-0.00000000000000271004'); - T('1.4', '-1.4'); - T('-0.0000019', '0.00000190'); - T('-6', '6'); - T('-31.4', '31.4'); - T('1', '-1'); - T('-39.954', '39.9540'); - T('8.4', '-8.40'); - T('5.3382e-17', '-0.0000000000000000533820'); - T('8.4', '-8.4'); - T('-106', '106'); - T('905', '-905'); - T('-2030.8', '2030.8'); - T('0.19358', '-0.193580'); - T('50057.4', '-50057.4'); - T('8.0731e-15', '-0.0000000000000080731'); - T('2.4', '-2.4'); - T('-1', '1'); - T('0.026038', '-0.026038'); - T('-22', '22'); - T('-2.8', '2.8'); - T('0.00110001', '-0.00110001'); - T('7', '-7'); - T('-705', '705'); - T('-36046', '36046'); - T('2.42', '-2.42'); - T('-1.225', '1.225'); - T('36.8', '-36.8'); - T('6.8926', '-6.8926'); - T('163575', '-163575'); - T('3.29e-16', '-0.000000000000000329'); - T('-3.9612e-20', '0.000000000000000000039612'); - T('6.3', '-6.3'); - T('1.1', '-1.1'); - T('-53', '53'); - T('-6.3', '6.3'); - T('-3.73', '3.73'); - T('5.99e-13', '-0.000000000000599'); - T('-0.0453', '0.0453'); - T('6.2', '-6.2'); - T('5', '-5'); - T('4.85599e-7', '-0.000000485599'); - T('-6.554e-19', '0.0000000000000000006554'); - T('245.2', '-245.20'); - T('-12.557', '12.557'); - T('8.7', '-8.7'); - T('-38.7', '38.7'); - T('1.1291', '-1.1291'); - T('-3', '3'); - T('40533.9', '-40533.9'); - T('135.1', '-135.1'); - T('-213', '213'); - T('-271352', '271352'); - T('-159.9', '159.9'); - T('-103632', '103632'); - T('-0.00000225418', '0.00000225418'); - T('-2.1e-16', '0.00000000000000021'); - T('14.5', '-14.5'); - T('48016', '-48016'); - T('282', '-282.0'); - T('9.3552e-18', '-0.0000000000000000093552'); - T('237', '-237'); - T('-21.1', '21.1'); - T('2.281', '-2.281'); - T('-4.68312', '4.68312'); - T('7', '-7'); - T('6', '-6'); - T('5.3', '-5.3'); - T('-681.586', '681.586'); - T('-1.59e-16', '0.0000000000000001590'); - T('-2.94', '2.94'); - T('-1', '1'); - T('7.03', '-7.03'); - T('5.73608e-13', '-0.000000000000573608'); - T('2', '-2'); - T('-1.26e-18', '0.00000000000000000126'); - T('-1.5e-14', '0.000000000000015'); - T('2', '-2'); - T('-44', '44'); - T('-1.3928', '1.3928'); - T('18811.4', '-18811.4'); - T('6.6', '-6.6'); - T('1.99', '-1.99'); - T('-6.6496e-14', '0.000000000000066496'); - T('27.184', '-27.184'); - T('0.00007614', '-0.00007614'); - T('5478', '-5478.0'); - T('-30.6432', '30.6432'); - T('-108', '108'); - T('-1', '1'); - T('-61', '61'); - T('4', '-4'); - T('-0.032192', '0.032192'); - T('2.6e-8', '-0.000000026'); - - BigNumber.config({EXPONENTIAL_AT : 0}); - - T('-5.0600621890668482322956892808849303e+20', '5.0600621890668482322956892808849303e+20'); - T('7e+0', '-7e+0'); - T('-6.1095374220609e+13', '6.1095374220609e+13'); - T('9.01e+2', '-9.01e+2'); - T('-1.016984074247269470395836690098169093010136836967e+39', '1.016984074247269470395836690098169093010136836967e+39'); - T('-1.497639134680472576e+18', '1.497639134680472576e+18'); - T('-4.1717657571404248e+16', '4.1717657571404248e+16'); - T('8.983272e+1', '-8.983272e+1'); - T('-5.308416e+6', '5.308416e+6'); - T('-2.09764e+3', '2.09764e+3'); - T('-3.83432050166120236679168e+23', '3.83432050166120236679168e+23'); - T('-4.096e+3', '4.096e+3'); - T('2.679971527468745095582058350756311201706813294321409e+51', '-2.679971527468745095582058350756311201706813294321409e+51'); - T('-5.067853299870089529116832768e+2', '5.067853299870089529116832768e+2'); - T('-3.48822062687911109850066182676769e+32', '3.48822062687911109850066182676769e+32'); - T('-1e+0', '1e+0'); - T('4.2773e+0', '-4.2773e+0'); - T('5.8169306081172252508071119604378757744768e+12', '-5.8169306081172252508071119604378757744768e+12'); - T('-1e+0', '1e+0'); - T('1.51655708279450944384385164853883404204414169862685507e+46', '-1.51655708279450944384385164853883404204414169862685507e+46'); - T('-8.1e+1', '8.1e+1'); - T('-1.296e+3', '1.296e+3'); - T('-2.9e+0', '2.9e+0'); - T('-1.764e+3', '1.764e+3'); - T('9.3418332730097368870513138581415704704611459349313e+49', '-9.3418332730097368870513138581415704704611459349313e+49'); - T('-Infinity', Infinity); - T('-Infinity', 'Infinity'); - T('Infinity', -Infinity); - T('Infinity', '-Infinity'); - T('NaN', NaN); - T('NaN', 'NaN'); - - BigNumber.config({EXPONENTIAL_AT : 1e+9}); - - assert(-1, new BigNumber(2).neg().s); - assert(1, new BigNumber(-2).neg().s); - assert(null, new BigNumber(NaN).neg().s); - assert(null, new BigNumber('-NaN').neg().s); - assert(-1, new BigNumber(Infinity).neg().s); - assert(1, new BigNumber('-Infinity').neg().s); - - assert(false, isMinusZero(new BigNumber(1).neg())); - assert(true, isMinusZero(new BigNumber(0).neg())); - assert(true, isMinusZero(new BigNumber(0).neg())); - assert(true, isMinusZero(new BigNumber('0.00000').neg())); - assert(true, isMinusZero(new BigNumber('+0.0').neg())); - assert(false, isMinusZero(new BigNumber(-0).neg())); - assert(false, isMinusZero(new BigNumber('-0').neg())); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js deleted file mode 100644 index 781a2ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/others.js +++ /dev/null @@ -1,361 +0,0 @@ -var count = (function others(BigNumber) { - var start = +new Date(), - log, - error, - n, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - log('\n Testing others...'); - - /* - * - * isFinite - * isNaN - * isNegative - * isZero - * equals - * greaterThan - * greaterThanOrEqualTo - * lessThan - * lessThanOrEqualTo - * valueOf - * - */ - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - EXPONENTIAL_AT : 1e+9, - RANGE : 1e+9, - ERRORS : true - }); - - n = new BigNumber(1); - assert(true, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(true, n.equals(n)); - assert(true, n.equals(n, 2)); - assert(true, n.equals(1, 3)); - assert(true, n.equals(n, 4)); - assert(true, n.equals(1, 5)); - assert(true, n.equals(n, 6)); - assert(true, n.equals(1, 7)); - assert(true, n.equals(n, 8)); - assert(true, n.equals(1, 9)); - assert(true, n.equals(n, 10)); - assert(true, n.equals(n, 11)); - assert(true, n.equals(1, 12)); - assert(true, n.equals(n, 13)); - assert(true, n.equals(1, 14)); - assert(true, n.equals(n, 15)); - assert(true, n.equals(1, 16)); - assert(true, n.equals(n, 17)); - assert(true, n.equals(1, 18)); - assert(true, n.equals(n, 19)); - assert(true, n.equals('1.0', 20)); - assert(true, n.equals('1.00', 21)); - assert(true, n.equals('1.000', 22)); - assert(true, n.equals('1.0000', 23)); - assert(true, n.equals('1.00000', 24)); - assert(true, n.equals('1.000000', 25)); - assert(true, n.equals(new BigNumber(1, 10), 26)); - assert(true, n.equals(new BigNumber(1), 27)); - assert(true, n.equals(1, 28)); - assert(true, n.equals(1, 29)); - assert(true, n.equals(1, 30)); - assert(true, n.equals(1, 31)); - assert(true, n.equals(1, 32)); - assert(true, n.equals(1, 33)); - assert(true, n.equals(1, 34)); - assert(true, n.equals(1, 35)); - assert(true, n.equals(1, 36)); - assert(true, n.greaterThan(0.99999)); - assert(false, n.greaterThanOrEqualTo(1.1)); - assert(true, n.lessThan(1.001)); - assert(true, n.lessThanOrEqualTo(2)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('-0.1'); - assert(true, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(false, n.isZ()); - assert(false, n.equals(0.1)); - assert(false, n.greaterThan(-0.1)); - assert(true, n.greaterThanOrEqualTo(-1)); - assert(true, n.lessThan(-0.01)); - assert(false, n.lessThanOrEqualTo(-1)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber(Infinity); - assert(false, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(true, n.eq('Infinity')); - assert(true, n.eq(1/0)); - assert(true, n.gt('9e999')); - assert(true, n.gte(Infinity)); - assert(false, n.lt(Infinity)); - assert(true, n.lte(Infinity)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('-Infinity'); - assert(false, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(false, n.isZ()); - assert(false, n.equals(Infinity)); - assert(true, n.equals(-1/0)); - assert(false, n.greaterThan(-Infinity)); - assert(true, n.greaterThanOrEqualTo('-Infinity', 8)); - assert(true, n.lessThan(0)); - assert(true, n.lessThanOrEqualTo(Infinity)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('0.0000000'); - assert(true, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(true, n.isZero()); - assert(true, n.eq(-0)); - assert(true, n.gt(-0.000001)); // 81 - assert(false, n.gte(0.1)); - assert(true, n.lt(0.0001)); - assert(true, n.lte(-0)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber(-0); - assert(true, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(true, n.isZ()); - assert(true, n.equals('0.000')); - assert(true, n.greaterThan(-1)); - assert(false, n.greaterThanOrEqualTo(0.1)); - assert(false, n.lessThan(0)); - assert(false, n.lessThan(0, 36)); - assert(true, n.lessThan(0.1)); - assert(true, n.lessThanOrEqualTo(0)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('NaN'); - assert(false, n.isFinite()); - assert(true, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(false, n.eq(NaN)); - assert(false, n.eq(Infinity)); - assert(false, n.gt(0)); - assert(false, n.gte(0)); // 103 - assert(false, n.lt(1)); - assert(false, n.lte(-0)); - assert(false, n.lte(-1)); - assert(n.toString(), n.valueOf()); - - BigNumber.config({ ERRORS : false }); - - n = new BigNumber('hiya'); - assert(false, n.isFinite()); - assert(true, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(false, n.equals(0)); - assert(false, n.greaterThan(0)); - assert(false, n.greaterThanOrEqualTo(-Infinity)); - assert(false, n.lessThan(Infinity)); - assert(false, n.lessThanOrEqualTo(0)); - assert(n.toString(), n.valueOf()); - - BigNumber.config({ ERRORS : true }); - - n = new BigNumber('-1.234e+2'); - assert(true, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(false, n.isZ()); - assert(true, n.eq(-123.4, 10)); - assert(true, n.gt('-ff', 16)); - assert(true, n.gte('-1.234e+3')); - assert(true, n.lt(-123.39999)); - assert(true, n.lte('-123.4e+0')); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('5e-200'); - assert(true, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(true, n.equals(5e-200)); - assert(true, n.greaterThan(5e-201)); - assert(false, n.greaterThanOrEqualTo(1)); - assert(true, n.lessThan(6e-200)); - assert(true, n.lessThanOrEqualTo(5.1e-200)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('1'); - assert(true, n.equals(n)); - assert(true, n.equals(n.toS())); - assert(true, n.equals(n.toString())); - assert(true, n.equals(n.valueOf())); - assert(true, n.equals(n.toFixed())); - assert(true, n.equals(1)); - assert(true, n.equals('1e+0')); - assert(false, n.equals(-1)); - assert(false, n.equals(0.1)); - - BigNumber.config({ ERRORS : false }); - - assert(false, new BigNumber(NaN).equals(0)); - assert(false, new BigNumber(null).equals(0)); - assert(false, new BigNumber(undefined).equals(0)); - assert(false, new BigNumber(Infinity).equals(0)); - assert(false, new BigNumber([]).equals(0)); - assert(false, new BigNumber([]).equals(0)); - assert(false, new BigNumber({}).equals(0)); - assert(false, new BigNumber('').equals(0)); - assert(false, new BigNumber(' ').equals(0)); - assert(false, new BigNumber('\t').equals(0)); - assert(false, new BigNumber('gerg').equals(0)); - assert(false, new BigNumber(new Date).equals(0)); - assert(false, new BigNumber(new RegExp).equals(0)); - assert(false, new BigNumber(0.1).equals(0)); - assert(false, new BigNumber(1e9 + 1).equals(1e9)); - assert(false, new BigNumber(1e9 - 1).equals(1e9)); - assert(true, new BigNumber(1e9 + 1).equals(1e9 + 1)); - assert(true, new BigNumber(1).equals(1)); - assert(false, new BigNumber(1).equals(-1)); - assert(false, new BigNumber(NaN).equals('efffe')); - - assert(false, new BigNumber('b').greaterThan('a')); - assert(false, new BigNumber('a').lessThan('b', 10)); - assert(true, new BigNumber('a', 16).lessThanOrEqualTo('ff', 16)); - assert(true, new BigNumber('b', 16).greaterThanOrEqualTo(9, 16)); - - BigNumber.config({ ERRORS : true }); - - assert(true, new BigNumber(10).greaterThan(10, 2)); - assert(true, new BigNumber(10).greaterThan(10, 3)); - assert(true, new BigNumber(10).greaterThan(10, 4)); - assert(true, new BigNumber(10).greaterThan(10, 5)); - assert(true, new BigNumber(10).greaterThan(10, 6)); - assert(true, new BigNumber(10).greaterThan(10, 7)); - assert(true, new BigNumber(10).greaterThan(10, 8)); - assert(true, new BigNumber(10).greaterThan(10, 9)); - assert(false, new BigNumber(10).greaterThan(10, 10)); - assert(false, new BigNumber(10).greaterThan(10, 11)); - assert(false, new BigNumber(10).greaterThan(10, 12)); - assert(false, new BigNumber(10).greaterThan(10, 13)); - assert(true, new BigNumber(10).lessThan(10, 11)); - assert(true, new BigNumber(10).lessThan(10, 12)); - assert(true, new BigNumber(10).lessThan(10, 13)); - assert(true, new BigNumber(10).lessThan(10, 14)); - assert(true, new BigNumber(10).lessThan(10, 15)); - assert(true, new BigNumber(10).lessThan(10, 16)); - assert(true, new BigNumber(10).lessThan(10, 17)); - assert(true, new BigNumber(10).lessThan(10, 18)); - assert(true, new BigNumber(10).lessThan(10, 19)); - assert(true, new BigNumber(10).lessThan(10, 20)); - assert(true, new BigNumber(10).lessThan(10, 21)); - assert(true, new BigNumber(10).lessThan(10, 22)); - assert(true, new BigNumber(10).lessThan(10, 34)); - assert(true, new BigNumber(10).lessThan(10, 35)); - assert(true, new BigNumber(10).lessThan(10, 36)); - assert(false, new BigNumber(NaN).lessThan(NaN)); - assert(false, new BigNumber(Infinity).lessThan(-Infinity)); - assert(false, new BigNumber(Infinity).lessThan(Infinity)); - assert(true, new BigNumber(Infinity, 10).lessThanOrEqualTo(Infinity, 2)); - assert(false, new BigNumber(NaN).greaterThanOrEqualTo(NaN)); - assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(Infinity)); - assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(-Infinity)); - assert(false, new BigNumber(NaN).greaterThanOrEqualTo(-Infinity)); - assert(true, new BigNumber(-Infinity).greaterThanOrEqualTo(-Infinity)); - - assert(false, new BigNumber(2, 10).greaterThan(10, 2)); - assert(false, new BigNumber(10, 2).lessThan(2, 10)); - assert(true, new BigNumber(255).lessThanOrEqualTo('ff', 16)); - assert(true, new BigNumber('a', 16).greaterThanOrEqualTo(9, 16)); - assert(false, new BigNumber(0).lessThanOrEqualTo('NaN')); - assert(false, new BigNumber(0).greaterThanOrEqualTo(NaN)); - assert(false, new BigNumber(NaN, 2).lessThanOrEqualTo('NaN', 36)); - assert(false, new BigNumber(NaN, 36).greaterThanOrEqualTo(NaN, 2)); - assert(false, new BigNumber(0).lessThanOrEqualTo(-Infinity)); - assert(true, new BigNumber(0).greaterThanOrEqualTo(-Infinity)); - assert(true, new BigNumber(0).lessThanOrEqualTo('Infinity', 36)); - assert(false, new BigNumber(0).greaterThanOrEqualTo('Infinity', 36)); - assert(false, new BigNumber(10).lessThanOrEqualTo(20, 4)); - assert(true, new BigNumber(10).lessThanOrEqualTo(20, 5)); - assert(false, new BigNumber(10).greaterThanOrEqualTo(20, 6)); - - assert(false, new BigNumber(1.23001e-2).lessThan(1.23e-2)); - assert(true, new BigNumber(1.23e-2).lt(1.23001e-2)); - assert(false, new BigNumber(1e-2).lessThan(9.999999e-3)); - assert(true, new BigNumber(9.999999e-3).lt(1e-2)); - - assert(false, new BigNumber(1.23001e+2).lessThan(1.23e+2)); - assert(true, new BigNumber(1.23e+2).lt(1.23001e+2)); - assert(true, new BigNumber(9.999999e+2).lessThan(1e+3)); - assert(false, new BigNumber(1e+3).lt(9.9999999e+2)); - - assert(false, new BigNumber(1.23001e-2).lessThanOrEqualTo(1.23e-2)); - assert(true, new BigNumber(1.23e-2).lte(1.23001e-2)); - assert(false, new BigNumber(1e-2).lessThanOrEqualTo(9.999999e-3)); - assert(true, new BigNumber(9.999999e-3).lte(1e-2)); - - assert(false, new BigNumber(1.23001e+2).lessThanOrEqualTo(1.23e+2)); - assert(true, new BigNumber(1.23e+2).lte(1.23001e+2)); - assert(true, new BigNumber(9.999999e+2).lessThanOrEqualTo(1e+3)); - assert(false, new BigNumber(1e+3).lte(9.9999999e+2)); - - assert(true, new BigNumber(1.23001e-2).greaterThan(1.23e-2)); - assert(false, new BigNumber(1.23e-2).gt(1.23001e-2)); - assert(true, new BigNumber(1e-2).greaterThan(9.999999e-3)); - assert(false, new BigNumber(9.999999e-3).gt(1e-2)); - - assert(true, new BigNumber(1.23001e+2).greaterThan(1.23e+2)); - assert(false, new BigNumber(1.23e+2).gt(1.23001e+2)); - assert(false, new BigNumber(9.999999e+2).greaterThan(1e+3)); - assert(true, new BigNumber(1e+3).gt(9.9999999e+2)); - - assert(true, new BigNumber(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); - assert(false, new BigNumber(1.23e-2).gte(1.23001e-2)); - assert(true, new BigNumber(1e-2).greaterThanOrEqualTo(9.999999e-3)); - assert(false, new BigNumber(9.999999e-3).gte(1e-2)); - - assert(true, new BigNumber(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); - assert(false, new BigNumber(1.23e+2).gte(1.23001e+2)); - assert(false, new BigNumber(9.999999e+2).greaterThanOrEqualTo(1e+3)); - assert(true, new BigNumber(1e+3).gte(9.9999999e+2)); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js deleted file mode 100644 index eba29e7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/plus.js +++ /dev/null @@ -1,1969 +0,0 @@ -var count = (function plus(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - n = 'null', - N = 'NaN', - I = 'Infinity'; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(addendA, addendB, expected) { - assert(String(expected), String(new BigNumber(addendA).plus(addendB))); - assert(String(expected), String(new BigNumber(addendA).plus(new BigNumber(addendB)))); - } - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - log('\n Testing plus...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : false, - RANGE : 1E9, - EXPONENTIAL_AT : [-7, 21] - }); - - T(1, 0, 1); - T(1, -0, 1); - T(-1, 0, -1); - T(-1, -0, -1); - T(1, N, N); - T(-1, N, N); - T(1, I, I); - T(1, -I, -I); - T(-1, I, I); - T(-1, -I, -I); - T(0, 1, 1); - T(0, -1, -1); - T(-0, 1, 1); - T(-0, -1, -1); - assert(false, isMinusZero(new BigNumber(0).plus(0))); - assert(false, isMinusZero(new BigNumber(0).plus(-0))); - assert(false, isMinusZero(new BigNumber(-0).plus(0))); - assert(true, isMinusZero(new BigNumber(-0).plus(-0))); - T(0, N, N); - T(-0, N, N); - T(0, I, I); - T(0, -I, -I); - T(-0, I, I); - T(-0, -I, -I); - T(N, 1, N); - T(N, -1, N); - T(N, 0, N); - T(N, -0, N); - T(N, N, N); - T(N, I, N); - T(N, -I, N); - T(I, 1, I); - T(I, -1, I); - T(-I, 1, -I); - T(-I, -1, -I); - T(I, 0, I); - T(I, -0, I); - T(-I, 0, -I); - T(-I, -0, -I); - T(I, N, N); - T(-I, N, N); - T(I, I, I); - T(I, -I, N); - T(-I, I, N); - T(-I, -I, -I); - - T(1, '0', '1'); - T(1, '1', '2'); - T(1, '-45', '-44'); - T(1, '22', '23'); - T(1, 0144, '101'); - T(1, '0144', '145'); - T(1, '6.1915', '7.1915'); - T(1, '-1.02', '-0.02'); - T(1, '0.09', '1.09'); - T(1, '-0.0001', '0.9999'); - T(1, '8e5', '800001'); - T(1, '9E12', '9000000000001'); - T(1, '1e-14', '1.00000000000001'); - T(1, '3.345E-9', '1.000000003345'); - T(1, '-345.43e+4', '-3454299'); - T(1, '-94.12E+0', '-93.12'); - T(1, '', N); - T(1, ' ', N); - T(1, '\t\t', N); - T(1, 'ertgrt546', N); - T(1, 'qweqwdewee', N); - T(1, true, N); - T(1, false, N); - T(1, 'e 4.3', N); - T(1, '4 .3', N); - T(1, '4.0 01e', N); - T(1, ' 4.001', '5.001'); - T(1, '4.001 ', '5.001'); - T(1, ' 4.001 ', '5.001'); - T(1, ' 4.001', '5.001'); - T(1, ' 4.0 01', N); - T(1, '4. 001', N); - T(1, '4. 001 ', N); - T(1, ' 4.001e ', N); - T(1, ' 4 .001 e ', N); - T(1, undefined, N); - T(1, null, N); - T(1, Number.POSITIVE_INFINITY, I); - T(1, Number.NEGATIVE_INFINITY, -I); - T(1, new Date(2012, 11, 4), N); - T(1, new Object(), N); - T(1, function () {}, N); - T('0', 0, '0'); - T(0, '+0', '0'); - T('0', '0', '0'); - T(3, -0, '3'); - T(9.654, 0, '9.654'); - T(0, '0.001', '0.001'); - T(0, '111.1111111110000', '111.111111111'); - T(N, '0', N); - T(-1, 1, '0'); - T(-0.01, 0.01, '0'); - T(54, -54, '0'); - T(9.99, '-9.99', '0'); - T('0.0000023432495704937', '-0.0000023432495704937', '0'); - T(NaN, NaN, N); - T(NaN, N, N); - T(N, NaN, N); - T(N, 4, N); - T(N, '4534534.45435435', N); - T(N, 99999.999, N); - T(Infinity, '354.345341', I); - T(3, -I, -I); - T(-Infinity, -I, -I); - T(-I, -Infinity, -I); - T(I, '-999e999', I); - T('1.21123e43', -I, -I); - T('-999.0', I, I); - T('657.342e-45', -I, -I); - T(I, 123, I); - T(100, 100, '200'); - T(-999.99, '0.01', '-999.98'); - T('10 ', 4, '14'); - T('03.333', -4, '-0.667'); - T(-1, -0.1, '-1.1'); - T(43534.5435, '0.054645', '43534.598145'); - T('99999', '1', '100000'); - T('3e', 8, N); - T('-3..0', 13, N); - T('0 0', -0.4, N); - T(' +3e0', 4, '7'); - T(9.9806, '+ 1', N); - T(' +2 0', '1e1', N); - T('e3', 4, N); - T(' ', 0, N); - T(323, null, N); - T(undefined, undefined, N); - T('undefined', undefined, N); - T(null, null, N); - - T('-0.000000046', '0', '-4.6e-8'); - T('0', '-5.1', '-5.1'); - T('1.3', '2', '3.3'); - T('1.02', '1.2', '2.22'); - T('3.0', '0', '3'); - T('3', '31.9', '34.9'); - T('0', '-0.0000000000000712', '-7.12e-14'); - T('1.10', '5', '6.1'); - T('4.2', '-0.000000062', '4.199999938'); - T('1', '0', '1'); - T('-5.1', '1', '-4.1'); - T('0', '-1', '-1'); - T('699', '-4', '695'); - T('0', '-1', '-1'); - T('1.6', '-27.2', '-25.6'); - T('0', '-7', '-7'); - T('3.0', '-4', '-1'); - T('0', '-2.0', '-2'); - T('0', '-3', '-3'); - T('-2', '1', '-1'); - T('-9', '-1', '-10'); - T('2', '-1.1', '0.9'); - T('-5', '-3', '-8'); - T('7', '-37', '-30'); - T('-3', '-5.0', '-8'); - T('1.2', '-0.0000194', '1.1999806'); - T('0', '5', '5'); - T('0', '1', '1'); - T('-0.000000000000214', '0', '-2.14e-13'); - T('0', '0', '0'); - T('0', '-1', '-1'); - T('-3', '156', '153'); - T('231', '0.00000000408', '231.00000000408'); - T('0', '-1.7', '-1.7'); - T('-4.16', '0', '-4.16'); - T('0', '5.8', '5.8'); - T('1.5', '5', '6.5'); - T('4.0', '-6.19', '-2.19'); - T('-1.46', '-5.04', '-6.5'); - T('5.11', '6', '11.11'); - T('-2.11', '0', '-2.11'); - T('0.0067', '-5', '-4.9933'); - T('0', '2', '2'); - T('1.0', '-24.4', '-23.4'); - T('-0.000015', '-6', '-6.000015'); - T('1.5', '0', '1.5'); - T('4.1', '-3', '1.1'); - T('-2', '-1', '-3'); - T('3', '1.5', '4.5'); - T('-7.8', '-3', '-10.8'); - T('-32', '17.6', '-14.4'); - T('0', '0', '0'); - T('-47.4', '-1', '-48.4'); - T('15.4', '0.000014', '15.400014'); - T('7.2', '2.9', '10.1'); - T('-86.5', '-47.2', '-133.7'); - T('1.1', '-31.4', '-30.3'); - T('-121', '3', '-118'); - T('-4', '3', '-1'); - T('-3.98', '1.2', '-2.78'); - T('-4.90', '0', '-4.9'); - T('2.28', '0', '2.28'); - T('-0.0000000000051', '-0.0000000000000000236', '-5.1000236e-12'); - T('1', '-28', '-27'); - T('0', '-3.12', '-3.12'); - T('7', '24.9', '31.9'); - T('-7.8', '17', '9.2'); - T('1', '1', '2'); - T('0.00000000000000000016', '-2', '-1.99999999999999999984'); - T('6', '8.5', '14.5'); - T('1.10', '-1', '0.1'); - T('-1', '3.3', '2.3'); - T('4', '-1.3', '2.7'); - T('0', '2.09', '2.09'); - T('-1', '0', '-1'); - T('-1', '0', '-1'); - T('0', '8.1', '8.1'); - T('-3', '-4.96', '-7.96'); - T('9.73', '0', '9.73'); - T('1', '0', '1'); - T('-1', '-3', '-4'); - T('3', '-3.0', '0'); - T('-2.78', '-403', '-405.78'); - T('1', '-0.00063', '0.99937'); - T('2', '0', '2'); - T('3', '7', '10'); - T('-1', '0', '-1'); - T('-4.1', '-4', '-8.1'); - T('-5', '7', '2'); - T('-7', '-0.00000000000000000511', '-7.00000000000000000511'); - T('0', '0.000000000000000000233', '2.33e-19'); - T('1.2', '-8.5', '-7.3'); - T('2', '-2', '0'); - T('-24', '-5', '-29'); - T('-2.1', '0.0114', '-2.0886'); - T('8', '-5', '3'); - T('0.061', '12.1', '12.161'); - T('0', '2.7', '2.7'); - T('-0.00000871', '0', '-0.00000871'); - T('0', '0', '0'); - T('2', '-6.0', '-4'); - T('9', '-1.2', '7.8'); - T('7', '0', '7'); - T('0', '0.000000000000000213', '2.13e-16'); - T('2.5', '0', '2.5'); - T('0', '0.00211', '0.00211'); - T('6.4', '-15.7', '-9.3'); - T('1.5', '0', '1.5'); - T('-41', '0.113', '-40.887'); - T('-7.1', '2', '-5.1'); - T('6', '-1.6', '4.4'); - T('-1.2', '0', '-1.2'); - T('-3', '13.3', '10.3'); - T('0', '0', '0'); - T('0', '-105', '-105'); - T('-0.52', '-40.9', '-41.42'); - T('1', '0', '1'); - T('0', '0', '0'); - T('-5.1', '-0.00024', '-5.10024'); - T('-0.000000000000027', '6', '5.999999999999973'); - T('125', '-2', '123'); - T('2', '-365', '-363'); - T('6.2', '-55.1', '-48.9'); - T('4.9', '-6', '-1.1'); - T('0.0000000482', '0.0000000019', '5.01e-8'); - T('0', '1.7', '1.7'); - T('78.3', '2.2', '80.5'); - T('-53.9', '4.0', '-49.9'); - T('0', '2.1', '2.1'); - T('-1.0', '-143', '-144'); - T('-1', '2.2', '1.2'); - T('1', '84.9', '85.9'); - T('0', '26', '26'); - T('51', '0.000000000000000757', '51.000000000000000757'); - T('1.1', '-3.67', '-2.57'); - T('-1.2', '1.30', '0.1'); - T('-0.00000000000021', '0.0000000013', '1.29979e-9'); - T('-1.6', '-1', '-2.6'); - T('-2.0', '63', '61'); - T('-3', '7', '4'); - T('-221', '38', '-183'); - T('-1', '0', '-1'); - T('46.4', '2', '48.4'); - T('0', '0', '0'); - T('-1', '-0.0000000853', '-1.0000000853'); - T('79', '0.000190', '79.00019'); - T('0', '-8.59', '-8.59'); - T('1', '-1', '0'); - T('0.000000000000000000110', '-5.8', '-5.79999999999999999989'); - T('6', '3.86', '9.86'); - T('-9', '8', '-1'); - T('-1.0', '-45.9', '-46.9'); - T('-2', '1', '-1'); - T('17.3', '1', '18.3'); - T('0', '0.23', '0.23'); - T('1.14', '0', '1.14'); - T('-1.99', '-1', '-2.99'); - T('9', '0.0000000000000000000157', '9.0000000000000000000157'); - T('-11', '89', '78'); - T('0', '-13.9', '-13.9'); - T('0.00000000000015', '86', '86.00000000000015'); - T('278', '-2', '276'); - T('0', '-2.18', '-2.18'); - T('0', '-0.000000029', '-2.9e-8'); - T('-6', '-0.0000000045', '-6.0000000045'); - T('0', '-24.7', '-24.7'); - T('6.0', '124', '130'); - T('0.00089', '-0.117', '-0.11611'); - T('-0.94', '44', '43.06'); - T('52.1', '-4', '48.1'); - T('0', '-0.00000062', '-6.2e-7'); - T('2', '-0.000000000242', '1.999999999758'); - T('-6.2', '1', '-5.2'); - T('3.4', '1', '4.4'); - T('-1.5', '3.8', '2.3'); - T('3', '-1.27', '1.73'); - T('-1', '7', '6'); - T('-2.29', '-4.8', '-7.09'); - T('0', '0', '0'); - T('-5', '-0.0000000000000016', '-5.0000000000000016'); - T('2.0', '-1.5', '0.5'); - T('94.2', '-1.4', '92.8'); - T('37', '-0.000000000000000000028', '36.999999999999999999972'); - T('-0.00000000000000000750', '1', '0.9999999999999999925'); - T('1.5', '-1.7', '-0.2'); - T('-1', '20.0', '19'); - T('2.6', '0', '2.6'); - T('0', '-28.4', '-28.4'); - T('-12.1', '-14', '-26.1'); - T('1.7', '0.000000041', '1.700000041'); - T('9.5', '4', '13.5'); - T('2.8', '101', '103.8'); - T('0.000000022', '0', '2.2e-8'); - T('6', '28', '34'); - T('7', '-97', '-90'); - T('-1.7', '-3', '-4.7'); - T('107', '6.2', '113.2'); - T('-0.000000000000000118', '-2', '-2.000000000000000118'); - T('-0.000000000000000451', '-5.3', '-5.300000000000000451'); - T('0', '-1', '-1'); - T('0.0000055', '145', '145.0000055'); - T('0', '-8', '-8'); - T('0', '-2.7', '-2.7'); - T('-3', '0', '-3'); - T('-7', '7', '0'); - T('-1.1', '0', '-1.1'); - T('-92', '-1.4', '-93.4'); - T('-2.7', '-3.25', '-5.95'); - T('68.5', '509', '577.5'); - T('0', '0', '0'); - T('22.6', '-1', '21.6'); - T('373', '0', '373'); - T('0', '-5', '-5'); - T('32.2', '-7', '25.2'); - T('-1', '-1.7', '-2.7'); - T('-1.3', '0.0000000048', '-1.2999999952'); - T('5', '-5', '0'); - T('0', '11.9', '11.9'); - T('-0.82', '25', '24.18'); - T('0', '3.1', '3.1'); - T('0.000024', '6', '6.000024'); - T('10', '-0.000000116', '9.999999884'); - T('977', '0', '977'); - T('13', '-0.00000205', '12.99999795'); - T('-7', '-9.0', '-16'); - T('0', '1.05', '1.05'); - T('1', '0', '1'); - T('-10.1', '0', '-10.1'); - T('2.2', '-0.000000000000061', '2.199999999999939'); - T('0', '-0.0000085', '-0.0000085'); - T('3', '3.5', '6.5'); - T('1', '2.8', '3.8'); - T('-2', '-8.60', '-10.6'); - T('223', '9', '232'); - T('-20.4', '-213', '-233.4'); - T('0', '2', '2'); - T('-2.9', '-1.3', '-4.2'); - T('3.0', '0', '3'); - T('-5', '0.00000000000000000011', '-4.99999999999999999989'); - T('-0.000088', '70.4', '70.399912'); - T('-1', '-505', '-506'); - T('0', '-4', '-4'); - T('768', '1.1', '769.1'); - T('2', '0', '2'); - T('88', '1.4', '89.4'); - T('7.8', '0.0000000000000025', '7.8000000000000025'); - T('2.6', '-3.20', '-0.6'); - T('-24', '-2.6', '-26.6'); - T('0', '-1', '-1'); - T('-6', '0.00059', '-5.99941'); - T('14', '4.1', '18.1'); - T('-30.5', '1.48', '-29.02'); - T('-509', '5', '-504'); - T('-1', '3', '2'); - T('1.3', '0.000103', '1.300103'); - T('-2.8', '19.1', '16.3'); - T('10.07', '0.581', '10.651'); - T('3', '-2', '1'); - T('-29', '4', '-25'); - T('-3.80', '-48.2', '-52'); - T('6', '-21.3', '-15.3'); - T('3', '-1.7', '1.3'); - T('0', '0.00000000033', '3.3e-10'); - T('0.49', '0', '0.49'); - T('7', '1.1', '8.1'); - T('1', '-2.73', '-1.73'); - T('0', '-3.89', '-3.89'); - T('1.27', '9', '10.27'); - T('-0.00000000151', '-25', '-25.00000000151'); - T('-11.7', '0.000000000000014', '-11.699999999999986'); - - T('3', '-7292337998569017257242651.028572395143563730317242', '-7.292337998569017257242648028572395143563730317242e+24'); - T('-340867371992331.2987436', '337.06898', '-340867371991994.2297636'); - T('10.55995846458487041359', '-11363016227498211122402159.8244', '-1.136301622749821112240214926444153541512958641e+25'); - T('-2493625481630720848504.2253423230119762824868856426', '-2.5572303947825744924097699541922801', '-2.4936254816307208485067825727177945507748966555967922801e+21'); - T('0.000000000000019478219401872667571256888553179333787767', '172.34675119', '172.346751190000019478219401872667571256888553179333787767'); - T('-34', '1679140391.9', '1679140357.9'); - T('-80049928601879665221091.2', '-422696.2614386', '-8.00499286018796656437874614386e+22'); - T('-2807730637205.01726166308462171615083', '0.0000000000000000000622355365575749096529347607937593112149767278', '-2807730637205.0172616630846217160885944634424250903470652392062406887850232722'); - T('2011299643403413077489630775210103349137877109', '-163066968.786271125332323161612905', '2.011299643403413077489630775210103348974810140213728874667676838387095e+45'); - T('-0.00000083671937317281562083962202394322135659', '7878332.295282735111804499965213784837870', '7878332.29528189839243132714959294521584605677864341'); - T('0.000000188701196610233915664001509614338431694523153', '-23707678356144422298078574459450831700.985', '-2.3707678356144422298078574459450831700984999811298803389766084335998490385661568305476847e+37'); - T('26203291462.747893543000897830970817', '2.39160879274042658647090', '26203291465.139502335741324417441717'); - T('-13.731026951', '0.000000000000519065974912984366352959010635376943677199693101323558', '-13.731026950999480934025087015633647040989364623056322800306898676442'); - T('42946999115270631061563709594990331564869354319610', '-689518233710514.17779877383431696209686368332723612515969802', '4.294699911527063106156370959499033087535112060909582220122616568303790313631667276387484030198e+49'); - T('-316537.13', '5.849231740', '-316531.28076826'); - T('-4483733651090758635203278665262327.55342', '0', '-4.48373365109075863520327866526232755342e+33'); - T('0', '-2599', '-2599'); - T('-5148.92870373', '-0.0000000000003511413413454972', '-5148.9287037300003511413413454972'); - T('-134406704543039418795782131496347812', '39838386849529610034769612280421774691.6785604641098', '3.97039801449865706159738301489254268796785604641098e+37'); - T('1.084309017285818872', '0.0000000000004353337515049604976685056082181', '1.0843090172862542057515049604976685056082181'); - T('81757261120729.3998391292', '0.00793', '81757261120729.4077691292'); - T('305717993676885329951937476257830866546431763156719336807', '-0.00000000000000000001482815967', '3.0571799367688532995193747625783086654643176315671933680699999999999999999998517184033e+56'); - T('203522961261530443.917820906776579027929', '-9185.139979750596690606', '203522961261521258.777841156179888421929'); - T('58302388.37179491476', '9936044410052508775.881727897883802', '9936044410110811164.253522812643802'); - T('0.00000000000000000005248972194638156020825779794502284697376', '-0.0388379024820383074988759583112', '-0.03883790248203830744638623636481843979174220205497715302624'); - T('0.000000001932861108418416669193839546006791915101090', '-0.000000000000103564871', '1.93275754354741666919383954600679191510109e-9'); - T('-97.5', '-3.1', '-100.6'); - T('-3644798362098266765793', '-11528555350.16536616701926798156538624434748578548375', '-3.64479836210979532114316536616701926798156538624434748578548375e+21'); - T('-371577606534.62392858950803524930468', '-0.00000000269386577418846418', '-371577606534.62392859220190102349314418'); - T('-691678464095856590.95634633025558439435402102', '0.000000030539948265', '-691678464095856590.95634629971563612935402102'); - T('0.000000003928034045864', '-39380632121496755483.22', '-39380632121496755483.219999996071965954136'); - T('-795.89085780158799717759425220514961346582715', '0.000706564963643740242942689304765914029848878612899171', '-795.890151236624353437351309515844847551797301121387100829'); - T('157678510.5484789671095156751921759005061', '0.0000003723795', '157678510.5484793394890156751921759005061'); - T('-1307.3', '2', '-1305.3'); - T('2952858872457.929554397223499', '13455320760120.8707665014', '16408179632578.800320898623499'); - T('-255588821522540889862114962636995141.122', '0.00000326851523835', '-2.5558882152254088986211496263699514112199673148476165e+35'); - T('0.00000000000014406509', '-560153923805366388086033', '-5.6015392380536638808603299999999999985593491e+23'); - T('-6.099826371', '28726540983564666452792216637044.9356006234', '2.87265409835646664527922166370388357742524e+31'); - T('8636541368105344305914147830.15649125124', '0.0000000000049754', '8.6365413681053443059141478301564912512449754e+27'); - T('-755310742571241039658903028788091708555.4969131794', '99330105954469.4', '-7.553107425712410396589029294579857540860969131794e+38'); - T('4020318299.7', '-670276060499479628473243989367746661643882288', '-6.702760604994796284732439893677466576235639883e+44'); - T('5095849414624671459392138104904515509922724138164588773.042', '149494908418030920.00255211471236475197791306529', '5.09584941462467145939213810490451551007221904658261969304455211471236475197791306529e+54'); - T('138761505665961028617702243300', '9857942288.8', '1.387615056659610286275601855888e+29'); - T('3804404287.52574', '16416902504', '20221306791.52574'); - T('-2055.8130', '0.00218842416232671530104849459457718', '-2055.81081157583767328469895150540542282'); - T('0.000000000000989697422064467113678', '0.697065625725549', '0.697065625726538697422064467113678'); - T('-30288347947284335685837645153586172422797922983.37915571667', '-1335.069192', '-3.028834794728433568583764515358617242279792431844834771667e+46'); - T('0.00054054406579017', '0.0020445688232423225788738738557412646944032455769768734602', '0.0025851128890324925788738738557412646944032455769768734602'); - T('-68994411860.328728', '48816504201613414531319144006465274996081421325116090708', '4.8816504201613414531319144006465274996081421256121678847671272e+55'); - T('-809830632609724847526268.50966586512675871946995', '45805247683771870541946686267298071051761.71368629398645', '4.580524768377186973211605365757322352549320402042885969128053005e+40'); - T('12.244685335891505325017912752605737279289', '-1953.157', '-1940.912314664108494674982087247394262720711'); - T('0.00000000000000012201816814103574356713495876418475275883288964', '-14514327327765802694345312637.28121049209345627407', '-1.451432732776580269434531263728121049209345615205183185896425643286504123581524724116711036e+28'); - T('-35760010680713914665457.416640208061422564137087770', '237677.40440', '-3.576001068071391442778001224020806142256413708777e+22'); - T('0.213764724863667178076578241157520057358951', '-195.381', '-195.167235275136332821923421758842479942641049'); - T('-4', '-20479253407195868023.7190887', '-20479253407195868027.7190887'); - T('-2636506939789983.9517900975', '7166515142782230578873295164.094395142727', '7.166515142779594071933505180142605045227e+27'); - T('0.00001177737517372381877477801315318', '90325802810983024805454390865176398367442693156.692576771', '9.032580281098302480545439086517639836744269315669258854837517372381877477801315318e+46'); - T('0.0000000000000006940972689786006700192372751360485539314987602213580801251', '-321024060655325518945438734389309904797132969999', '-3.210240606553255189454387343893099047971329699989999999999999993059027310213993299807627248639514460685012397786419198749e+47'); - T('-0.0000000000000000014803670473728307445', '-0.72148924607942442354320737482582513411299162884', '-0.72148924607942442502357442219865587861299162884'); - T('0.0000000000000001043810048169882311646196761962068118', '0.00000000000008989735712546153946422343611927620630428259597102874', '9.000173813027852769538805579547241311608259597102874e-14'); - T('0.0000000856354489413072352886007888280862870145666795091412287', '124165153666113222225049048396538922054986467641', '1.241651536661132222250490483965389220549864676410000000856354489413072352886007888280862870145666795091412287e+47'); - T('-0.0000000000000320757814372847561957016', '-81190157394157.37730', '-81190157394157.3773000000000320757814372847561957016'); - T('-4334587898155190922720532.94504694431', '85522.93', '-4.33458789815519092263501001504694431e+24'); - T('657.44690790930416714587', '-0.000000000000000000046335131044673181381027', '657.446907909304167145823664868955326818618973'); - T('29982214095954021.68565215319585', '-44628768214034.30768386111941549271096', '29937585327739987.37796829207643450728904'); - T('0.00000227708329764590268495570108111', '188682548499636418836270555181954622706559207', '1.8868254849963641883627055518195462270655920700000227708329764590268495570108111e+44'); - T('-105740086870.87902330897898941693939252887655925', '-0.00902789833804655794', '-105740086870.88805120731703597487939252887655925'); - T('5321976.194462', '0.00000000062660860859824908696344225671974056962030135135', '5321976.19446200062660860859824908696344225671974056962030135135'); - T('1400649337343672602231550299981618481761671319', '-109314621074190268.0231', '1.4006493373436726022315502998723038606874810509769e+45'); - T('2057998276732722646423663', '22081288', '2.057998276732722668504951e+24'); - T('0.0000000000000000017861940166096730915828677929399660926585274067', '19858.316504586', '19858.3165045860000000017861940166096730915828677929399660926585274067'); - T('-22618978889574488865872.1936326217809072732', '84743644438924408560024120708247557837387061303912', '8.47436444389244085600241206856285789478125724380398063673782190927268e+49'); - T('16899677', '0.0000000000000006200595313980106282035', '16899677.0000000000000006200595313980106282035'); - T('84223630138728231319265207385866523.7037949685268627985151', '98049376624950796086168448377.9', '8.42237281881048562700612935543149016037949685268627985151e+34'); - T('-23139798585733154920035503271.3293705839340975', '-203534508453530507372.39865759096937', '-2.31397987892676633735660106437280281749034675e+28'); - T('2132422616', '313.8131489937516147609', '2132422929.8131489937516147609'); - T('0.00000000031757080246638721492851445443', '3794846068194592901324442.377', '3.79484606819459290132444237700000031757080246638721492851445443e+24'); - T('-720523766692302305335100081586272082042593510557835022', '-48655616939922.2105', '-7.205237666923023053351000815862720820426421661747749442105e+53'); - T('-0.000000000000681090019432916245992942611570731948008', '-78075676178', '-78075676178.000000000000681090019432916245992942611570731948008'); - T('0.0000000000000000000326999427026228462203921452389557015799356287967578926', '-0.0000000000010075912482623982890', '-1.0075912155624555863771537796078547610442984200643712032421074e-12'); - T('-0.000001663549464265503879091759952912765557', '-2288485846519565.90882', '-2288485846519565.908821663549464265503879091759952912765557'); - T('15283021016799660238790294783012978152064246848.302809', '-255.33064438', '1.528302101679966023879029478301297815206424659297216462e+46'); - T('-2141275004855302313', '-14324404392255657678513289015273', '-1.4324404392257798953518144317586e+31'); - T('-0.000000000000000010204742781305685387176792401033809', '-1797802696763189176117325682047878480266832090717009269338', '-1.797802696763189176117325682047878480266832090717009269338000000000000000010204742781305685387176792401033809e+57'); - T('18393642772198629.04467960835946581820412498120401305795', '0.001275506381558716433091344352361195683041600198429562', '18393642772198629.045955114741024534637216325556374253633041600198429562'); - T('-1985677.0479797102021852689', '3421136183.732859', '3419150506.6848792897978147311'); - T('0.0000000000048772038513856900253878297299144253261148646117991377226', '-0.000000000000000000633993968849724597473885254797830639072', '4.8772032173917211756632322560291705282842255397991377226e-12'); - T('44812645985.34921549502557530796823798603', '-3581800787100727450085636788', '-3.58180078710072740527299080265078450497442469203176201397e+27'); - T('1079812992968985436999219069272969', '2', '1.079812992968985436999219069272971e+33'); - T('-1753778882883960239.7357211808838917234439093151132461', '-675.03089678041125557523363798883874525571164770741', '-1753778882883960914.76661796129514729867754730395199135571164770741'); - T('2.5', '79808580452454570.6021583877', '79808580452454573.1021583877'); - T('-2318172325.38510421', '1', '-2318172324.38510421'); - T('1374939.4348', '5.6626826003903229567653167590578', '1374945.0974826003903229567653167590578'); - T('-1433073.1818631797258961330292384136', '121881788197.262469654057', '121880355124.0806064743311038669707615864'); - T('2.494544723114530285809', '3576653', '3576655.494544723114530285809'); - T('7938514604943790100.9276107434535811520579868735844807580453', '20401419259674024936996903873847920688818394344', '2.04014192596740249369969038817864352937621844449276107434535811520579868735844807580453e+46'); - T('-0.00000000000000000659293074407431751262', '26538.5176499542676', '26538.51764995426759999340706925592568248738'); - T('171650791296', '207021136095822862734047.67963169458559659', '2.0702113609599451352534367963169458559659e+23'); - T('111202958445.9250724298025103213740842327570768605596136302', '1.537803126215', '111202958447.4628755560175103213740842327570768605596136302'); - T('-66398807.32298869', '-6090756873.58292331915049610499833418951253059357', '-6157155680.90591200915049610499833418951253059357'); - T('2353147.270338458726403618253', '0.021384377221532', '2353147.291722835947935618253'); - T('-148563993416893680237652940993302142753.35541587', '64239.868', '-1.4856399341689368023765294099330207851348741587e+38'); - T('0.00000000000000952989372890150229168153411', '0.000000001089981372067260502063827792831910332175826', '1.089990901960989403566119474366020332175826e-9'); - T('-0.000095942657103193473656868628869530806593380', '2056191383129368498489079272615326194', '2.05619138312936849848907927261532619399990405734289680652634313137113046919340662e+36'); - T('-322696702507520517171977833895787676173146086137211', '-2440854162625.37382074757014', '-3.2269670250752051717197783389578767617558694029983637382074757014e+50'); - T('-1211219183955140821584', '-5210569206996623901353622002846939989302.92283', '-5.21056920699662390256484118680208081088692283e+39'); - T('-0.0000000000000079666993349250232202', '489285196659741383.006297750838528045433123', '489285196659741383.0062977508385200787337880749767798'); - T('0.00000000077141109510594202471060992900492', '3208.3347', '3208.33470000077141109510594202471060992900492'); - T('-68024506176127817746586754376221734884', '0.15464521042533657299008608160', '-6.80245061761278177465867543762217348838453547895746634270099139184e+37'); - T('-145880984716.215', '2337129866657263570', '2337129720776278853.785'); - T('188974623061492483.142804194521468235379066778', '-0.00000038525080631123327317383933592', '188974623061492483.14280380927066192414579360416066408'); - T('-16356113742963595266465952932662', '-125355883826.39416781321896', '-1.635611374296359526659130881648839416781321896e+31'); - T('-6055715.8736074588411038198577757669624785013783338', '314649408270458779064780.10', '3.146494082704587730090642263925411588961801422242330375214986216662e+23'); - T('115404161731.4660458068936241750308873387559102', '-22544800348.350741696032151441813827609476762', '92859361383.1153041108614727332170597292791482'); - T('-15403035163985572960537283993932052281699167401054521716', '-4.51871358', '-1.540303516398557296053728399393205228169916740105452172051871358e+55'); - T('494.839191894412897545883335718', '-6838.818196825251112157347', '-6343.979004930838214611463664282'); - T('12.6', '0.00000023237282267118', '12.60000023237282267118'); - T('80998.93', '-0.000000000000000006657264362722375638995179208931019910', '80998.92999999999999999334273563727762436100482079106898009'); - T('24311907546797437.192938', '33293941690', '24311940840739127.192938'); - T('-2439553576035597703284083776782658338714854480.76670', '-552371860516159411553653432588968147375569940274.6', '-5.548114140921950092569375163657508057142847947553667e+47'); - T('-2', '267.41036926198544821143', '265.41036926198544821143'); - T('-221185414.39378617220971422653741297827696718276', '147716681512356798558369414201759187083768076717531.7', '1.4771668151235679855836941420175918708376785553211730621382779028577346258702172303281724e+50'); - T('27782844063780674567856973058456377099880', '0.42833855291455356', '2.778284406378067456785697305845637709988042833855291455356e+40'); - T('-6779946038658269907151725830212.3231241258972158956574549786', '-59152624443548.397860097634612838089', '-6.7799460386582699663043502737607209842235318287337464549786e+30'); - T('5583728', '-12088255617331322291590332122631397105695', '-1.2088255617331322291590332122631391521967e+40'); - T('-122.55488541428134', '-1849241463858352827933557649058195369965078195', '-1.84924146385835282793355764905819536996507831755488541428134e+45'); - T('-5.40620', '-7926553114777.34793', '-7926553114782.75413'); - T('-0.000253850655677758430078658974284641259587365835647', '9712716976.55714607561630095490035500071', '9712716976.556892224960623196470276341735715358740412634164353'); - T('168095465368167755.20132', '-0.000000000000100770026067662522650967001796393', '168095465368167755.201319999999899229973932337477349032998203607'); - T('-23084021.1912', '-0.0000000002552886320752142', '-23084021.1912000002552886320752142'); - T('-0.00000034692938443702777764811193148332', '-2291330567445.020091462', '-2291330567445.02009180892938443702777764811193148332'); - T('-0.000000000000000000500', '-3638839062523.16788353204231378745138113805005277262', '-3638839062523.16788353204231378795138113805005277262'); - T('-21291430264059347596', '-278661231050935040505252800716670488924003.0', '-2.78661231050935040505274092146934548271599e+41'); - T('-3937382504232.4631934324802032008', '-12670428.0658912205267960601919307115632', '-3937395174660.5290846530069992609919307115632'); - T('-146982.22450149250', '623504303083058604561989109312642337', '6.235043030830586045619891093124953547754985075e+35'); - T('253.01', '802625930614062.9705947195646834588541152620643', '802625930614315.9805947195646834588541152620643'); - T('115359268370848989850854005321447663172886737834785520883', '458.4807', '1.153592683708489898508540053214476631728867378347855213414807e+56'); - T('163.09176', '0.00000000000000001823481782581109744', '163.09176000000000001823481782581109744'); - T('-2213687948.07450556690935288', '21871988945935811925735.3643007186962826339', '2.18719889459335982377872897951517869297539e+22'); - T('-13600.9931855956842627546715', '137199858862267.530744593929324697303900300812048', '137199858848666.537558998245061942632400300812048'); - T('64302.84879', '-0.00000000000000000031884862211764', '64302.84878999999999999968115137788236'); - T('-21.0343150', '0.00003762594931905088097193777529518846', '-21.03427737405068094911902806222470481154'); - T('-43.2', '0.0000000000000000088209059726558824954701945990768141500402895240582621', '-43.1999999999999999911790940273441175045298054009231858499597104759417379'); - T('-21.716', '0.00010435033062418396646761217', '-21.71589564966937581603353238783'); - T('-14349223886609.8996911241', '591424', '-14349223295185.8996911241'); - T('387.146464770977292777877373605881', '0.000000000748129478828479148973975406341232062736061643261337037', '387.146464771725422256705852754854975406341232062736061643261337037'); - T('-5400652.348672', '-272186438747803380.1804043255', '-272186438753204032.5290763255'); - T('-21.3', '6.8', '-14.5'); - T('0.00000000103600815339389940326020721966409', '29645237.7502768697756870856787621204', '29645237.75027687081169523907266152366020721966409'); - T('-534005184647169042.131454403358674522', '0.005694323359477401172045805857601828035888769857500968445222', '-534005184647169042.125760079999197120827954194142398171964111230142499031554778'); - T('1862736418', '1', '1862736419'); - T('351490387188996259', '62.100460124428609287573', '351490387188996321.100460124428609287573'); - T('169499641692977052216453491793.9787615383724028133893', '0.00000000000000006361911', '1.6949964169297705221645349179397876153837240287700841e+29'); - T('-8', '3417322569.4831394174', '3417322561.4831394174'); - T('-838501752798.326614960580367718115', '-2022114720338558.047757485234', '-2022953222091356.374372445814367718115'); - T('-1549912.8026532077081092082547', '-45506131.43371799701886630176768733952185393859212', '-47056044.23637120472697551002238733952185393859212'); - T('-2183663034044253888858323830694952562946010.782', '1354851.73581347266611421085387946798291', '-2.18366303404425388885832383069495256159115904618652733388578914612053201709e+42'); - T('-0.0000000000046712261814706680606784284472438172230285748063131539', '918514605286328938996265974.307597316850270', '9.185146052863289389962659743075973168455987738185293319393215715527561827769714251936868461e+26'); - T('-0.0301991824416038881101099', '-4464346608', '-4464346608.0301991824416038881101099'); - T('3.98', '5218371.49516', '5218375.47516'); - T('4832441872354802689671', '-0.0000000000213837', '4.8324418723548026896709999999999786163e+21'); - T('0.000000000000000016298281', '-0.00000000348998960378566871408591706715068151875573445053079845095', '-3.48998958748738771408591706715068151875573445053079845095e-9'); - T('-2059458247822896700102858412401366415.403909858', '30110.7306736165788262027129954556', '-2.0594582478228967001028584124013363046732362414211737972870045444e+36'); - T('-106653', '-6554779180145425976', '-6554779180145532629'); - T('0', '-12771592550606134879262234468876731140678883443896', '-1.2771592550606134879262234468876731140678883443896e+49'); - T('-141742173848073082.100575461779634531', '-7', '-141742173848073089.100575461779634531'); - T('245.6735', '-3537763728425648898.536045229', '-3537763728425648652.862545229'); - T('23.71866884462009661132193', '48487130568434204612649872032673642473034', '4.848713056843420461264987203267364247305771866884462009661132193e+40'); - T('79401597909529525308.48420609229175', '2591403158790529529573511201.19', '2.59140323819212743910303650967420609229175e+27'); - T('284576176526552350', '-10', '284576176526552340'); - T('1.0682', '7861.283121183677379038987', '7862.351321183677379038987'); - T('-1.60444805', '0.0000028847098483848786064787560152209651320682639', '-1.6044451652901516151213935212439847790348679317361'); - T('-0.0000000018996053506896890911603732691263731955475477051763872', '-57581.875373867812973783', '-57581.8753738697125791336896890911603732691263731955475477051763872'); - T('0.00000000000000000012392510786805471753525331968033845561363410307741609902317', '0.000004349947715706492223712976943980034293671355123', '0.00000434994771570661614882084499869756954699103546145561363410307741609902317'); - T('128907.8518369701779', '-1', '128906.8518369701779'); - T('-21.35510004122675870004717674727620213', '0.00000000000000000001009606209896423416929193498290467', '-21.35510004122675870003708068517723789583070806501709533'); - T('-1036072.70', '30288483890840.7644829772783388118', '30288482854768.0644829772783388118'); - T('1', '0.00000000108663482163751960896', '1.00000000108663482163751960896'); - T('196690688540287471600138402631254097', '-1296924088245887989211255853', '1.96690687243363383354250413419998244e+35'); - T('1791156.834533749567213189130', '173011022354550416183638753635.63334944502450395340681', '1.7301102235455041618364054479246788319459171714253681e+29'); - T('1861430347575777575680356960079436184499.919613', '-612614849498276685996593027243', '1.861430346963162726182080274082843157256919613e+39'); - T('-7758655923622034030955.9291230128', '0.00594001420381222017096211329', '-7.75865592362203403095592318299859618777982903788671e+21'); - T('-5459.708512054323229825378150954057236451373947101', '0.00000000000000010467896268967026375601267236689054126519', '-5459.70851205432322972069918826438697269536127473410945873481'); - T('1.5357640654914', '26484040831501596185144229855201045526.8772', '2.64840408315015961851442298552010455284129640654914e+37'); - T('0.000000000000000000551032982567013358317393735391', '3951981877.70635', '3951981877.706350000000000000551032982567013358317393735391'); - T('19966337.40327464680217082908346850752429077', '0.0000000694117823464637414804852860124695677260107514259062814196', '19966337.4032747162139531755472099880095767824695677260107514259062814196'); - T('0.000000000000114387', '26.0780', '26.078000000000114387'); - T('-0.000000000000058566632687', '154445365803820719089161481686648591330608966505075815231', '1.54445365803820719089161481686648591330608966505075815230999999999999941433367313e+56'); - T('-81.9', '-290987195118120910.650828527355125621', '-290987195118120992.550828527355125621'); - T('0.0000000000129766844476802102046046856035673832204965536', '-15.50195731', '-15.5019573099870233155523197897953953143964326167795034464'); - T('5081846528', '22.8724', '5081846550.8724'); - T('-85904518857594634808347910122940606952070250543093.244309866', '87863849.691319671938088226', '-8.5904518857594634808347910122940606952070162679243552990194061911774e+49'); - T('-170442726618237824341261070261982330084077537445839818', '0.000000000000000780053862947758376946726067312229726087592094', '-1.70442726618237824341261070261982330084077537445839817999999999999999219946137052241623053273932687770273912407906e+53'); - T('413.7126477448411377495505703', '-316329.243682', '-315915.5310342551588622504494297'); - T('-0.00000000000000483378251152198797664837453061179141660023', '4083329356329023991816392216832315734019339465889233737667', '4.08332935632902399181639221683231573401933946588923373766699999999999999516621748847801202335162546938820858339977e+57'); - T('0.000000000004945130554715279352', '20393092845', '20393092845.000000000004945130554715279352'); - T('66.60837', '28592560366063.746528', '28592560366130.354898'); - T('-10824143490362152769146.8628434597262310327475178771', '-6.442', '-1.08241434903621527691533048434597262310327475178771e+22'); - T('-17.63', '-0.000000000000000012319', '-17.630000000000000012319'); - T('-134.1362825800766312455', '17351.358339090284637450403853', '17217.222056510208006204903853'); - T('0.000000000001327776', '-0.00005717732', '-0.000057177318672224'); - T('0.000081202465051128565', '9.25', '9.250081202465051128565'); - T('-49969297933006175912135', '201', '-4.9969297933006175911934e+22'); - T('-0.0000000000000000000351971832201257343216570588903268', '-614730534926067941867', '-614730534926067941867.0000000000000000000351971832201257343216570588903268'); - T('-4699376204284239198897468324308327.578823266', '0.01240127407873530917', '-4.69937620428423919889746832430832756642199192126469083e+33'); - T('-166859773331579667092627457017924681891', '1.177', '-1.66859773331579667092627457017924681889823e+38'); - T('297611546807476.7389967424', '517878390231.954956053920806357536', '298129425197708.693952796320806357536'); - T('2.26', '476121878051171262698479334452067496570446544422226', '4.7612187805117126269847933445206749657044654442222826e+50'); - T('0.000000000348934602334173547747920539533095838627739', '-0.000000000000827121544297495855005100518267691068913070523148', '3.48107480789876051892915439014828147558825929476852e-10'); - T('0.0000000016630321489412099873134278851', '33382216672582.0742647965724', '33382216672582.0742647982354321489412099873134278851'); - T('-19.715751399', '1455362393129824490954487356267083.8186754959749850983', '1.4553623931298244909544873562670641029240969749850983e+33'); - T('11152141361730026829285665961687.3139561070881149371766', '2.76963401441423333517597101345', '1.115214136173002682928566596169008359012150234827235257101345e+31'); - T('-44836120135503200078585015978983219367221886861731704', '-2', '-4.4836120135503200078585015978983219367221886861731706e+52'); - T('16.02069381131', '0.0000000000000042', '16.0206938113100042'); - T('-329678350725130.3958196996612366385400490474513156349559', '-3467', '-329678350728597.3958196996612366385400490474513156349559'); - T('-4182765105477793237555.273265434', '56254364076240107601891319154234794697144.298685574', '5.625436407624010759770855404875700145958902542014e+40'); - T('98796860384198464024305164555588491131671343895593228060535', '-1405573031776506147878053891673759594011202270592763', '9.8796858978625432247799016677534599457911749884390957467772e+58'); - T('1092363940258060395083098718642956733485643364', '-10598809886235236342944197021319583170547674110389928477485', '-1.0598809886234143979003938960924500071829031153656442834121e+58'); - T('37586361614.095', '-3148149077577', '-3110562715962.905'); - T('-254953108518285985', '-1.07910144271207423934923587934451351214', '-254953108518285986.07910144271207423934923587934451351214'); - T('2442.32751', '43535097.033480512037', '43537539.360990512037'); - T('91995040568885362527648040727723', '0.4786144932196936758637061866474810131052563763028', '9.19950405688853625276480407277234786144932196936758637061866474810131052563763028e+31'); - T('-23863678424756722926637928011000581.244001324799381062566619', '96688.916787457820799184195711813964401021274965053735523', '-2.3863678424756722926637928010903892327213866978581878370907186035598978725034946264477e+34'); - T('0', '-0.00000000000027852776765692', '-2.7852776765692e-13'); - T('-1623378710787743245737360669094938021186.3532080061729827', '0', '-1.6233787107877432457373606690949380211863532080061729827e+39'); - T('0', '0.000000049048339295559358355126332957758142200703099', '4.9048339295559358355126332957758142200703099e-8'); - T('6192378510550191959653347.846386529481410301978431652948347', '-0.38294548165530032173705676329607616564872132520398', '6.19237851055019195965334746344104782610998024137488965227083435127867479602e+24'); - T('-24283320565469963929558662982.9349694043', '2673821469225170314390', '-2.42833178916484947043883485929349694043e+28'); - T('218.110682218445321922075046444527', '0.01497687885540092217834', '218.125659097300722844253386444527'); - T('-150034638.4607772346143954532', '-20008571757063313138', '-20008571757213347776.4607772346143954532'); - T('-2971683662963108664767', '19264012460036395799353855810042830620021', '1.9264012460036395796382172147079721955254e+40'); - T('-5252175.40891737279869057', '-2027371894615285196604888264930073402643.5207', '-2.02737189461528519660488826493007865481892961737279869057e+39'); - T('-20871238425800671889182.829701547250', '-76082554384456.3158288776570471938928399650934647043692665519', '-2.08712385018832262736391455304249070471938928399650934647043692665519e+22'); - T('0', '-6932.702341315865', '-6932.702341315865'); - T('0.0000000000000000005738499200802402637492440447802302210350633678412977240457', '31318.68', '31318.6800000000000000005738499200802402637492440447802302210350633678412977240457'); - T('-934961659015198853393126550.25200823467372663246334', '74878058.044873358837373372754304', '-9.34961659015198853318248492207134875836353259709036e+26'); - T('150.22669', '3684561512708165421004.40592369696065395561261265524', '3.68456151270816542115463261369696065395561261265524e+21'); - T('-0.0000000000000015', '0.0001183766448622143702316173650526018028825820894748606870475', '0.0001183766448607143702316173650526018028825820894748606870475'); - T('-2.8', '-0.000000000001829913701194321808657770171290559944848203', '-2.800000000001829913701194321808657770171290559944848203'); - T('0.000018752442721586663741713313007598397434839252', '-396673155594371.6367526145400674503928659772089760230841322', '-396673155594371.636733862097345863729124263895968424686697360748'); - T('-13096091967075751663002949891851210', '-1477304896251731689853.4603171477120194670', '-1.3096091967077228967899201623541063460317147712019467e+34'); - T('-740512796205842509947742580189685788668.411', '-2824022128765.93600320598135905249475748957', '-7.4051279620584250994774258301370791743434700320598135905249475748957e+38'); - T('-0.00000000000000000007489577842583193917', '1.663748696735089', '1.66374869673508899992510422157416806083'); - T('-358935750965455.3592219004802490902523174719', '43371.1', '-358935750922084.2592219004802490902523174719'); - T('9667988395245566159878.653259', '0.000000000116385624231571218', '9.667988395245566159878653259000116385624231571218e+21'); - T('2758033402.5184130', '661106474725.93', '663864508128.448413'); - T('999070419142037555127.53', '-381460743151065544049291431867372559397611945291347286', '-3.8146074315106554404929143186737156032719280325379215847e+53'); - T('-92699966163766696.7490442006', '-1915615.8916014755799758113439947795642627', '-92699966165682312.6406456761799758113439947795642627'); - T('489937.3780742473458733440028228509907624', '-1', '489936.3780742473458733440028228509907624'); - T('-0.000000000000754489936', '-0.00000000000036618270314381889826166978763226', '-1.12067263914381889826166978763226e-12'); - T('390379828579195857322601563326484972906745.91988878145980541', '704108103.1382116', '3.9037982857919585732260156332648567701484905810038145980541e+41'); - T('-26.87', '2353822.691199775358305790461', '2353795.821199775358305790461'); - T('-1587155103407939753589555224978500385.2263024764001305020', '0.0000000000011377959206097569335266885356013552156589880648', '-1.5871551034079397535895552249785003852263024763989927060793902430664733114643986447843410119352e+36'); - T('-5708346691.2506', '-2970137689.07191265257072771', '-8678484380.32251265257072771'); - T('0.0000000000000002334849322956799148269551416529021258', '51972.5801195102957735093196127055803694295535', '51972.5801195102957737428045450012602842565086416529021258'); - T('-104080.3162441765370132760114', '0.000000390882311111306995576914162226185882353716', '-104080.316243785654702164704404423085837773814117646284'); - T('-1923634420932885580541323911945854', '-5442.2', '-1.9236344209328855805413239119512962e+33'); - T('269402746056235370532350773376.6611241372196686370390', '-2.398', '2.69402746056235370532350773374263124137219668637039e+29'); - T('4.6142', '-91954290028090809.5727705166649650', '-91954290028090804.958570516664965'); - T('0.0000000038792075674539308578456', '-0.00000000799999446190038', '-4.1207868944464491421544e-9'); - T('86889265743549292727829232652504603134424', '3966264277627964.8584259691377065', '8.68892657435492927278292366187688807623888584259691377065e+40'); - T('-0.01849718975477457', '42293783764.387302167416177115129958269578', '42293783764.368804977661402545129958269578'); - T('229183.9324129997835780196022124839', '-180.13280', '229003.7996129997835780196022124839'); - T('0.0000000000000004071', '-6632946124.9569670001116089493461386479567752', '-6632946124.9569670001116085422461386479567752'); - T('-79368388.12060961147325951196402', '-8818967839841756190843118.1854748170628718251708829084816359', '-8.8189678398417562702115063060844285361313371349029084816359e+24'); - T('-96.8977819169541179624268824', '-110441943210894571.8830072797816067381187179609278660643', '-110441943210894668.7807891967357247005456003609278660643'); - T('-36873417583534015.45598304691218697443', '1060166.917377718838271', '-36873417582473848.53860532807391597443'); - T('0.000000000000002700871444392', '-0.0605349026669693089396005912402318', '-0.0605349026669666080681561992402318'); - T('-0.000000000000053692523', '-0.00000137254604803', '-0.000001372546101722523'); - T('1074227134372692301132209354432413147.1963324', '0.000000000000003598619851546479146545077911695828898095102737795956459', '1.074227134372692301132209354432413147196332400000003598619851546479146545077911695828898095102737795956459e+36'); - T('-1017687657058637575723357458862923106911128795220693738771601', '4258563010.69702', '-1.01768765705863757572335745886292310691112879522068948020859030298e+60'); - T('15695318372.722371', '-7262689556596731591510081797054945.08235892482', '-7.26268955659673159151006610173657235998792482e+33'); - T('-0.184121579717', '-0.00000000000032197634799642162905185759509417879', '-0.18412157971732197634799642162905185759509417879'); - T('496711464563303349082978268361607314429719423836547893298', '0.00780349823846259456540557', '4.9671146456330334908297826836160731442971942383654789329800780349823846259456540557e+56'); - T('-303514.82542426177461216895784715957208157971', '-0.0000000000000010372854153009492220571724887918212517847890822413245347', '-303514.8254242617746132062432624605213036368824887918212517847890822413245347'); - T('-34126709757832', '-1034.8105337', '-34126709758866.8105337'); - T('-557553079116126732746.60346222066', '-194401.4', '-557553079116126927148.00346222066'); - T('5', '13969995', '13970000'); - T('0.000000000024420167617316425311147207326564663249988502924425073', '58388856055235574885008260342295638772198164.947520', '5.8388856055235574885008260342295638772198164947520000024420167617316425311147207326564663249988502924425073e+43'); - T('-1952712333.155776956436338241', '-0.000000000000001787', '-1952712333.155776956436340028'); - T('0.000000000000000000442399285756922519285614916177278059874646382070215708393687', '-0.0000000000007944556433362323923998778322490216082668198093259', '-7.94455200936946635477358546634105430988759934679517929784291606313e-13'); - T('-17.91', '1176950886190171466875.8668061191330515772843337822020031191', '1.1769508861901714668579568061191330515772843337822020031191e+21'); - T('157077985623370359640124976052501925', '28604427989766282.76371', '1.5707798562337035966872940404226820776371e+35'); - T('7453449.6233221933856360936994951958191632578932339027257', '7220.0', '7460669.6233221933856360936994951958191632578932339027257'); - T('19787312872.5997045141158923178398412505666161654557403133090', '-37306481586787392775866703659600367821024385.6498012', '-3.7306481586787392775866703659600348033711513050096685884107682160158749433383834544259686691e+43'); - T('0.0036377269513631890696573602180806431948860786178658756', '2028146793266265751425109925774562808347846641', '2.0281467932662657514251099257745628083478466410036377269513631890696573602180806431948860786178658756e+45'); - T('-69329355007729552.734184155872579911364124970', '49428086084838561002968128.908102465415944072794710779766855', '4.9428086015509205995238576173918309543364161430585809766855e+25'); - T('5.236129243946948546627393853048424524035753709977', '1458.28382091564243822112', '1463.519950159589386767747393853048424524035753709977'); - T('-125770.7986824578099574150670482067998529', '-54536494221899508990432759126.5854', '-5.45364942218995089904328848973840824578099574150670482067998529e+28'); - T('0.0000000000000000040282063397187671534478', '42.9342796393702', '42.9342796393702000040282063397187671534478'); - T('112255.6473762401', '625578631883141131859950104709.402446232383239610277', '6.25578631883141131859950216965049822472483239610277e+29'); - T('0.0000000000008204051137050998759261498906577146164344577915568026', '-914503544747584022218019464876', '-9.145035447475840222180194648759999999999991795948862949001240738501093422853835655422084431974e+29'); - T('0.000000000000032086696834814061554271827918462166063', '-7', '-6.999999999999967913303165185938445728172081537833937'); - T('-16102511193600.208625575', '0.0000000005921920429652733476192339', '-16102511193600.2086255744078079570347266523807661'); - T('0.05330917360748068', '-1387662245.82971965501508', '-1387662245.77641048140759932'); - T('332566083814742507.4381', '50225079040717.5', '332616308893783224.9381'); - T('0.0535616342876656884145', '40.302980205257854', '40.3565418395455196884145'); - T('2.095810329351761236733504648511', '1291032886241879180795380.39652395418615', '1.291032886241879180795382492334283537911236733504648511e+24'); - T('76.93666308278743385854202793941924424687995851136', '-0.0000031951856193404', '76.93665988760181451814202793941924424687995851136'); - T('-4089192.401545276102326047095158140681', '0.0000000000294587249643456047378078626482043840305033', '-4089192.4015452760728673221308125359431921373517956159694967'); - T('-0.0000000026917607386', '-0.000000001463738085548829246226730', '-4.15549882414882924622673e-9'); - T('5997.3860262975745', '-9.2570184551997909', '5988.1290078423747091'); - T('-0.0000001736810132395059213491577845055187737', '-16125521840386.2', '-16125521840386.2000001736810132395059213491577845055187737'); - T('-12.393', '-959175810182.97', '-959175810195.363'); - T('0.000000000000000012703677534683229539552879126254493256638930817', '-162613165341774647773791411159812774229455.506', '-1.62613165341774647773791411159812774229455505999999999999987296322465316770460447120873745506743361069183e+41'); - T('5765801580384047256456488623813074.84286854632242004465357', '165435022359303094.00576799365464765649', '5.76580158038404742189151098311616884863653997706770114357e+33'); - T('0.000024851933157201952923401889849591044056443558822429', '-19872544695921164383628718578914483460945374183201070203', '-1.9872544695921164383628718578914483460945374183201070202999975148066842798047076598110150408955943556441177571e+55'); - T('15967162444205725.5835876977581985895876178', '-22.09383479755539543658379', '15967162444205703.4897529002028031530038278'); - T('-1895.5870000978149', '158456457583275411.151255931089745677273050725', '158456457583273515.564255833274845677273050725'); - T('0.00000000000000006613200838614468668274572771438132', '0.000000000000009799052946232089973195569084478957663245622', '9.865184954618234659878314812193338983245622e-15'); - T('-0.00007217386', '-30380533.92750742177144456679338699', '-30380533.92757959563144456679338699'); - T('49321761839.8798408956884550', '104924407952098597601614114560902417392737539279.14066', '1.04924407952098597601614114560902417442059301119020500895688455e+47'); - T('-1691047173618367369.8797144744337845447480409090470639328', '-10750', '-1691047173618378119.8797144744337845447480409090470639328'); - T('-16791796.527002378128880210996658740114552744738867694', '115759936860192797305173026', '1.15759936860192797288381229472997621871119789003341259885447255261132306e+26'); - T('-1029316.894', '261548573279697971.910', '261548573278668655.016'); - T('0.0001296647057215427680944560864883468441013790931695', '-1054.824421', '-1054.8242913352942784572319055439135116531558986209068305'); - T('-46699431235320232532.67509849580', '0.000008979993955818623', '-46699431235320232532.675089515806044181377'); - T('-6298558991125571.36653922609195960880571', '-4113889298860378827260223247091017172.9329596', '-4.11388929886037882726652180608214274429949882609195960880571e+36'); - T('-2336086975140170284498.42499016188003935830', '1457086105105141790243380324424465.1603058805177211619', '1.4570861051028057032682401541399667353157186376818036e+33'); - T('13584368794590929.65056685978986415743426966', '1.22576526919', '13584368794590930.87633212897986415743426966'); - T('-1327351.46438658329883133911209577075273465014', '0.000000000005775966498832314718', '-1327351.46438658329305537261326345603473465014'); - T('-516531363720634698623139507801786560806', '-137346717602427886117612615306931.7600975293129786', '-5.165315010673523010510256254144018677377600975293129786e+38'); - T('-497191321049479298.6006597', '-1047994963280.836414', '-497192369044442579.4370737'); - T('-0.0000000000000002185586000243939351096925920847', '-0.0000000000009048521726041772916157', '-9.050707312042016855508096925920847e-13'); - T('6016595778895316729168438939349.8686687192', '5526181676412323789926982786789.74580518160', '1.15427774553076405190954217261396144739008e+31'); - T('3.0095', '-0.0000000000005426618174200484334', '3.0094999999994573381825799515666'); - T('-68807659807110289490038532736.1520217818672205564919342', '-523349129605691396252486008533.3780711514', '-5.921567894128016857425245412695300929332672205564919342e+29'); - T('-113364492557824.61981595', '-4469693.046218916056590', '-113364497027517.66603486605659'); - T('-0.00000000000164215561823273145124136513441258', '-4973023665107453759495929363162.8237739698', '-4.97302366510745375949592936316282377396980164215561823273145124136513441258e+30'); - T('35.9888417583081351968218538', '-14915.870931400193663433176830', '-14879.8820896418855282363549762'); - T('-2331.988493276549717942', '0.00000000000141823854809196715', '-2331.98849327654829970345190803285'); - T('-11371.3496728385913350997078680648168992940913566777190', '-2397016.60966829969942721806170794681095113', '-2408387.959341138290762317769576011627850424091356677719'); - T('3383157742756319045795578039331661679255299628783006818', '112.431', '3.383157742756319045795578039331661679255299628783006930431e+54'); - T('0.1199645670415880693938857655777249', '-44832078259011.6759', '-44832078259011.5559354329584119306061142344222751'); - T('-0.000074515', '0.000000000000822522086975415741166136452344243213662423269', '-0.000074514999177477913024584258833863547655756786337576731'); - T('-316363904412657873.82463253361', '6029091127919181004154328007134773005154138.82694336', '6.02909112791918100415432769077086859249626500231082639e+42'); - T('-2948135076910640.90049', '5761548892564240496281853871829076765874909400', '5.76154889256424049628185387182612863079799875909951e+45'); - T('58372178458636173167435580966904.9', '-0.0000000000000000069124', '5.83721784586361731674355809669048999999999999999930876e+31'); - T('-1030343159494169', '1.17687493992567335710622120899406991559327721710205732290350', '-1030343159494167.8231250600743266428937787910059300844067227828979426770965'); - T('-364369717.74', '1051.2619702659448865', '-364368666.4780297340551135'); - T('-14700708312683508124053613483934', '169203221928.16495122822999668712809968967', '-1.470070831268350812388441026200583504877177000331287190031033e+31'); - T('-7136587497.6210794583359262865362602', '0.000000000000000943850201474525427491095625665832833080048218', '-7136587497.621079458335925342686058725474572508904374334167166919951782'); - T('543052781691689788023396133911013281045', '-0.14820404005794765846900406675812481', '5.4305278169168978802339613391101328104485179595994205234153099593324187519e+38'); - T('110663366765368921.0866334279485908190131223654028', '36120532541712948438741340607422573739675370', '3.61205325417129484387413407180859405050442910866334279485908190131223654028e+43'); - T('380658.3', '-2065165618.375157186233', '-2064784960.075157186233'); - T('-17457782.9819883601', '942920318414698402627635914937488163385896', '9.429203184146984026276359149374881459281130180116399e+41'); - T('8629631914097.8362771910', '-4.034', '8629631914093.802277191'); - T('288071238497.1261824965452941330232', '1052', '288071239549.1261824965452941330232'); - T('78997931984403436704001039530.3024629578317209', '0.000343258751917970970676216110596811', '7.8997931984403436704001039530302806216583638870970676216110596811e+28'); - T('-2.25', '111337103342848345761099521859657477916973094722775.5951', '1.113371033428483457610995218596574779169730947227733451e+50'); - T('-1', '0.00000332919915648989163252787357017400732468280', '-0.9999966708008435101083674721264298259926753172'); - T('-16445332684883.22825', '-0.00000000000000012333460118914012271577551957339747141406', '-16445332684883.22825000000000012333460118914012271577551957339747141406'); - T('-31175222200344385644218736866483.2725089', '-3327088982173967964155665008077925357598', '-3.3270890133491901645000506522966622240812725089e+39'); - T('-1252051655804', '0.00000000264882354935793977626553543541414436396686075411715667541', '-1252051655803.99999999735117645064206022373446456458585563603313924588284332459'); - T('-0.0000000000000000000158865062136901543406179703019550687767953302019945978597', '1020942680079952748611824.185392743482507618487632660693', '1.0209426800799527486118241853927434825076184717461544793098456593820296980449312232046697980054021403e+24'); - T('-35898806424024840518', '1209273562014126837', '-34689532862010713681'); - T('0.00000000000000000063529152935584224393904', '0.000019230208356140680362397434569942324862475539', '0.000019230208356141315653926790412186263902475539'); - T('-33441632499.7607713725472193611665003418', '106413', '-33441526086.7607713725472193611665003418'); - T('-4.75634838524050727239455330', '0.00000222716225977301166476', '-4.75634615807824749938288854'); - T('-852521157106518977717317.959654055992630233016032351392', '-0.0000000000000000017823481878995487452645517241108404', '-8.525211571065189777173179596540559926302347983805392915487452645517241108404e+23'); - T('161134348969753.7818551261464', '14778587228410.68', '175912936198164.4618551261464'); - T('-369981.81', '434675717524696906710428616481.721', '4.34675717524696906710428246499911e+29'); - T('-2332861219206834364527.48368', '19149287947261990184026730628.5871', '1.914928561440077097719236610110342e+28'); - T('-0.00000000000000116369456154760102530923593100791059354951050808242146', '-81782712838440550651059561384159250420604069689985758.44650', '-8.178271283844055065105956138415925042060406968998575844650000000000116369456154760102530923593100791059354951050808242146e+52'); - T('-351.475892554479058', '-447032714556907039546625862961730678.7', '-4.47032714556907039546625862961731030175892554479058e+35'); - T('-0.0000000000005359206060244700158823650', '-0.0000000000000000003863162428565', '-5.35920992340712872382365e-13'); - T('2', '-0.00000000000000005866552459931', '1.99999999999999994133447540069'); - T('639324673786985183757123973071419.69', '0.000000000000000105695777609583429374882466829273', '6.39324673786985183757123973071419690000000000000105695777609583429374882466829273e+32'); - T('4294088930905823047177509660568176369997.858000657', '0.00000000190441051986057354054684652513790', '4.2940889309058230471775096605681763699978580006589044105198605735405468465251379e+39'); - T('81952.93187082317', '-3354935.93728410227615128341536014594398120471', '-3272983.00541327910615128341536014594398120471'); - T('22.4490', '-60024492865596734181918135790584892061552368', '-6.0024492865596734181918135790584892061552345551e+43'); - T('82042481481926776214220048262853946881327742847', '-8538522144679468521.62573001550037', '8.204248148192677621422004825431542473664827432537426998449963e+46'); - T('-4821483203793.49440644526137664', '-0.000004487693742178692907867', '-4821483203793.494410932955118818692907867'); - T('6.110882058707251378846629539352045716', '-418562303949284087382062254279932829.02', '-4.18562303949284087382062254279932822909117941292748621153370460647954284e+35'); - T('-0.00000000000000003499186801952540123648020382', '-65374665927301037435189057407673135706346962', '-6.537466592730103743518905740767313570634696200000000000000003499186801952540123648020382e+43'); - T('-117.491', '-35267005558911708.73667772625498979866', '-35267005558911826.22767772625498979866'); - T('-1305188291195132404665648036283152', '-48817.0270426507883050419161', '-1.3051882911951324046656480363319690270426507883050419161e+33'); - T('-332959.31909282242075209', '-0.031741578746012412923914', '-332959.350834401166764502923914'); - T('-17.1394344634', '-0.00000229726550687811210739718966133', '-17.13943676066550687811210739718966133'); - T('810780860238944784555214657769411196386947.54', '4.92693024082761080', '8.107808602389447845552146577694111963869524669302408276108e+41'); - T('-1048758998827591442543266558.0106480081485758097', '-94.076883827230674850527236', '-1.048758998827591442543266652087531835379250660227236e+27'); - T('704447412485396882279061367382703398302182548530873140734.6', '6.1441561936492973077606028', '7.044474124853968822790613673827033983021825485308731407407441561936492973077606028e+56'); - T('-9', '14240110.34382757891637692908119148', '14240101.34382757891637692908119148'); - T('-2.17399974', '-7.782135494523838665700444005467417478', '-9.956135234523838665700444005467417478'); - T('423939022366100.1303605421315647706922839530', '-148861179543023924.831222210', '-148437240520657824.700861667868435229307716047'); - T('-524884.99509383', '-8951228003529351713733925073.1782', '-8.95122800352935171373444995817329383e+27'); - T('-0.020796655578405', '368497345356.14', '368497345356.119203344421595'); - T('-1963433333827228036507.697737169766323166530902591', '-957846652507696110363', '-2.921279986334924146870697737169766323166530902591e+21'); - T('0.000001311', '-3369850772751642763158244569.8616096', '-3.369850772751642763158244569861608289e+27'); - T('4794.0', '-1192644326919702801393470130877439453668.01186106844617097', '-1.19264432691970280139347013087743944887401186106844617097e+39'); - T('-1021147107953300067786801337030572.294185965004276223', '-39540941781.309992029344807273', '-1.021147107953300067786840877972353604177994349083496e+33'); - T('-7044613941200081350320568560980315.797014086930', '-22.98', '-7.04461394120008135032056856098033877701408693e+33'); - T('0.0000090121286833758732990328348454967225169260742236026', '990483291162514723456237581.12', '9.904832911625147234562375811200090121286833758732990328348454967225169260742236026e+26'); - T('-26.736', '-50947076888389365.5543516223716887', '-50947076888389392.2903516223716887'); - T('0.00000000019379047403352963512763584433797131380295276579883848', '351648601080041724641347981598154974909945367236167357297', '3.5164860108004172464134798159815497490994536723616735729700000000019379047403352963512763584433797131380295276579883848e+56'); - T('-13975.741', '373024094875867055483269157586785.905835293458170355', '3.73024094875867055483269157572810164835293458170355e+32'); - T('-299.92', '-11054263.84681950544', '-11054563.76681950544'); - T('-1406576080.91', '-11.8662', '-1406576092.7762'); - T('0.00000000001874641346', '0.00000000000000486443153897052258296310659171509120488311396238084788', '1.875127789153897052258296310659171509120488311396238084788e-11'); - T('1205.34627565144026871663097', '1249.7837058417060142511952909501288363112688', '2455.1299814931462829678262609501288363112688'); - T('-4.39', '545534', '545529.61'); - T('-2916468.72915302357477562892725843748', '-78412.481653315', '-2994881.21080633857477562892725843748'); - T('1', '1157759807263227857254563934897', '1.157759807263227857254563934898e+30'); - T('-104251055525855379611.30896754', '-16664469.85', '-104251055525872044081.15896754'); - T('0.00000000000261749383970', '-11939719.526854341', '-11939719.5268543409973825061603'); - T('-0.0000000090677528576752114233457187000354303371555029332226226', '-0.0000054807823719971287602588898631186660', '-0.0000054898501248548039716822355818187014303371555029332226226'); - T('-116485999654579416404.1770995047267', '-1056453978415557512986444149851256428790784', '-1.0564539784155575129865606358509110082071881770995047267e+42'); - T('129605008229833515.738549411440577906', '-2966237394191984.299672767366997401377001384652892925560', '126638770835641531.43887664407358050462299861534710707444'); - T('38233691542980267658744125', '22629558718.76465481003636074', '3.823369154298029028830284376465481003636074e+25'); - T('-8533862254008034912764735.004170692', '0.00000000000002245605992555542408030328467190', '-8.5338622540080349127647350041706919999775439400744445759196967153281e+24'); - T('10553.65', '-0.00000049686576247164541003858453804', '10553.64999950313423752835458996141546196'); - T('-51954241699518441712828334574084047.068703826124873318564', '395669535095772787686098943620277851996703327535', '3.95669535095720833444399425178565023662129243487931296173875126681436e+47'); - T('-23122182991889866069296720914272472', '58837368013.02465555264983929119523508427711325303360206', '-2.312218299188986606929666207690445897534444735016070880476491572288674696639794e+34'); - T('0.00000000397559426', '-371081877267739.52921835969493214299461', '-371081877267739.52921835571933788299461'); - T('-1318006475307606890136618572999490756076602355.97', '632863313713664.4745327432714901307248136075', '-1.3180064753076068901366185729988578927628886914954672567285098692751863925e+45'); - T('-23439088778534600.8640688389613841', '16', '-23439088778534584.8640688389613841'); - T('21557692582940554231371458355850911425', '54.498980233719', '2.1557692582940554231371458355850911479498980233719e+37'); - T('-15841465782.23786068092567135289691949618', '-0.06849728241', '-15841465782.30635796333567135289691949618'); - T('0.0000000001081504196289698603171046129405333329174', '-1442109.88437873202181493001814004974080724589', '-1442109.8843787319136645103891701894237026329494666670826'); - T('-0.00000000001647', '282001122341733786209765075874760.2208698094645570', '2.82001122341733786209765075874760220869809448087e+32'); - T('99430939117933248217120.374139300891394898188889827982140', '0.00000000000000029379095872418716620806971498023154656656222336363941', '9.943093911793324821712037413930089139519197984855216930620806971498023154656656222336363941e+22'); - T('32.0', '-27722898.863296087173', '-27722866.863296087173'); - T('156106106814604967305174465335864706671583.70259565626257897', '-13917199525611', '1.5610610681460496730517446532194750714597270259565626257897e+41'); - T('0.000000000000012756394816575404961299', '7517.05', '7517.050000000000012756394816575404961299'); - T('16.12', '-420571324087664540438479.845', '-4.20571324087664540438463725e+23'); - T('2418460022267862452.4', '41.457986607816857109', '2418460022267862493.857986607816857109'); - T('148234016059793326337.640', '11.03882097673491443395332118707526905738860', '148234016059793326348.6788209767349144339533211870752690573886'); - T('590735628836667929357165331457381099840530274992323824', '-35.537', '5.90735628836667929357165331457381099840530274992323788463e+53'); - T('-91.305944234004155285775629491875981263029245580213970209', '-0.10312097106790790600287727466092359571108', '-91.409065205072063191778506766536904858740325580213970209'); - T('351474.4', '-409.9417808528084374954481354713200702998578', '351064.4582191471915625045518645286799297001422'); - T('0.00000000000000000268393845813954', '232389665408735', '232389665408735.00000000000000000268393845813954'); - T('0.000085437842245145501815518395009858127503498', '-228105253425581861', '-228105253425581860.999914562157754854498184481604990141872496502'); - T('113814704131627223061784854080682', '-0.00000000000000495917538613516689674', '1.1381470413162722306178485408068199999999999999504082461386483310326e+32'); - T('-104597143810254066499700', '-1320192161655050.18', '-1.0459714513044622815475018e+23'); - T('-808665613705806138579.9252448473426840', '-0.000000000463', '-808665613705806138579.925244847805684'); - T('-10652723155657612558630867.3337753966347961185835734448179360', '-1074473046919580926107363821097544239456092192199611', '-1.074473046919580926107363831750267395113704750830478333775396634796118583573444817936e+51'); - T('30.873', '-2877.8117541278', '-2846.9387541278'); - T('280550729.708', '15.0', '280550744.708'); - T('-165734300554398023710.52770', '44297520438', '-165734300510100503272.5277'); - T('0.00543767539426789750178885690131013907', '9444317260148.44999438456024566306', '9444317260148.45543205995451356056178885690131013907'); - T('3.906258287', '-101756814758789018743117855884.8664231869', '-1.017568147587890187431178558809601648999e+29'); - T('0.0000000000466441425', '-7925237.129420', '-7925237.1294199999533558575'); - T('-8793636.6549628644427603574935', '-168717.26735969139', '-8962353.9223225558327603574935'); - T('16229113210072', '-1.66', '16229113210070.34'); - T('-274', '5543767652349683046313915.6084123313153941360541851', '5.5437676523496830463136416084123313153941360541851e+24'); - T('697036466897177207083246447.2299025435243117175710148553', '0', '6.970364668971772070832464472299025435243117175710148553e+26'); - T('-46.3370059936', '10533716878.34472089', '10533716832.0077148964'); - T('10374324.55170082277424656551004841876', '27751581009979569031375460467333.939804424', '2.775158100997956903137547084165849150524677424656551004841876e+31'); - T('-26.207', '-0.0000000000000031037896000885366', '-26.2070000000000031037896000885366'); - T('0.00000008010', '18.21', '18.2100000801'); - T('4842596615336.5226989764856168408', '693189245669296426406216', '6.931892456741390230215525226989764856168408e+23'); - T('-0.0000000000000851077176424519554600753331960725209384331282631736', '-0.00000000032044460270651016683689341535385222681285333039475669967745', '-3.2052971042415261879235349068704829933379176352301987327745e-10'); - T('-45733275107439777530880615832524693352357490.41665', '-9002296385923358097661509924413196524814431890711992169', '-9.00229638596909137276894970194407714064695658406434965941665e+54'); - T('-0.00000000000000000156439224707874070263669523081315808081534434429692222172674', '0.00000000000000000004291737953641998', '-1.52147486754232072263669523081315808081534434429692222172674e-18'); - T('0.00000000198897553988595375857564654222391162510361117709636863903', '-10.007927501632868864725076236004253517352', '-10.00792749964389332483912247742860697512808837489638882290363136097'); - T('-0.0000000000000000823558627325', '0.000000118691410206725495', '1.186914101243696322675e-7'); - T('-6276754.7824301277909646649809', '-2300076804510676.99579229048', '-2300076810787431.7782224182709646649809'); - T('-1477245255838368818869339352082881086281616770202', '260.2', '-1.4772452558383688188693393520828810862816167699418e+48'); - T('-69931380572295540885943992404507908544953094482.1746111', '6493037948200.611359', '-6.99313805722955408859439924045079020519151462815632521e+46'); - T('-32658268317284858182413184281435089775970459834815.66170', '-0.000000000000342812261960547876364567574654890642067512409498', '-3.2658268317284858182413184281435089775970459834815661700000000342812261960547876364567574654890642067512409498e+49'); - T('-226963.2043', '-496091', '-723054.2043'); - T('-103912.138149562507', '-62.4', '-103974.538149562507'); - T('-2.2', '-192.817990', '-195.01799'); - T('222123997760197158313997248315192554300081415.469', '0.000000000012667203104882341577765952699206164', '2.22123997760197158313997248315192554300081415469000000012667203104882341577765952699206164e+44'); - T('131249246364141493511095170397038.4', '12005458301968.10861506047414540', '1.312492463641414935231006286990065086150604741454e+32'); - T('-6103920949696.969088220006245342108451032227019740900968', '-8610778484315116167388258277248987747817680', '-8.610778484315116167388258277255091668767376969088220006245342108451032227019740900968e+42'); - T('10233395574.3608814100201268800987627468958287183008442076', '2066089654793590701954', '2.0660896548038240975283608814100201268800987627468958287183008442076e+21'); - T('1054800822950425857387.3975342786210238442171979019733049494', '268210275857404541391650497878689.609927', '2.682102758584593422146009237360770074612786210238442171979019733049494e+32'); - T('0.0000000000000000005358606622145297463680878712323075380428171088961554207868', '21625227877279.763', '21625227877279.7630000000000000005358606622145297463680878712323075380428171088961554207868'); - T('0.0000000000000000038580163605093667407219262159717409196345947134', '26563841772035062352711123348805920.54972', '2.65638417720350623527111233488059205497200000000000038580163605093667407219262159717409196345947134e+34'); - T('0.0040413342647577519898276000725944344977704', '56147277645684.4193402', '56147277645684.4233815342647577519898276000725944344977704'); - T('4364458714.2682', '316321.1973', '4364775035.4655'); - T('-3442146624234450575848597310365404902.6280403978894069', '9600031560472464093658037177768209030975667.931701', '9.6000281183258398592074613291708986655707653036606021105931e+42'); - T('0', '-549407495633380422499474.55571333', '-5.4940749563338042249947455571333e+23'); - T('-37479660228.14714', '-1.75484', '-37479660229.90198'); - T('-26584742.26667643650870662855172761916351306', '-0.00000000000000187865453650020', '-26584742.26667643650870850720626411936351306'); - T('-58.001178998055584357671459355923764911439509141805', '-50935290675172160.97675237172778455', '-50935290675172218.977931369783368907671459355923764911439509141805'); - T('-0.00000000000000000034052335201240933961815921', '0.025619781818507958387831333698180', '0.02561978181850795804730798168577066038184079'); - T('-0.00000000000000008274050377833639593377852710426025817', '242065602.8095741290098057721936971088', '242065602.80957412900980568945319333046360406622147289573974183'); - T('-221524.27663105095567467682134', '-2258391802026441769618755584758918156197711875845897035768', '-2.25839180202644176961875558475891815619771187584589725729227663105095567467682134e+57'); - T('-0.0000000017893705878914010575881803996966689837370969008155370432', '-0.00000297259632962708146112815320511201052652', '-0.0000029743857002149728621857413855117071955037370969008155370432'); - T('-0.00000000000406710488085149344523', '-278522.037156181204952078706297015294979477127184963777538', '-278522.037156181209019183587148508740209477127184963777538'); - T('11973889508.580802', '1871682273132124693', '1871682285106014201.580802'); - T('0.0000000000000000033353113686655236115870191745605104608147650', '11625246.252195', '11625246.252195000000000003335311368665523611587019174560510460814765'); - T('-5318806059561785713953', '-0.0000000000000012146467404768921900862164865027461683067265853186116641', '-5.3188060595617857139530000000000000012146467404768921900862164865027461683067265853186116641e+21'); - T('-309.3', '-0.00000000000006218919975652358743864716', '-309.30000000000006218919975652358743864716'); - T('-1874575484506897571974850167460839993082172311.68616497703', '-0.0000000942559460072629437399413345982786975068449962297', '-1.8745754845068975719748501674608399930821723116861650712859460072629437399413345982786975068449962297e+45'); - T('-21', '-0.0000000000000397635708714407055658459', '-21.0000000000000397635708714407055658459'); - T('-1302141913979670987068496048', '-0.0000002335314231823837373064', '-1.3021419139796709870684960480000002335314231823837373064e+27'); - T('-8663116.663729764613058828364567651431', '609.8', '-8662506.863729764613058828364567651431'); - T('122805001870129.621993', '546.98190600859999', '122805001870676.60389900859999'); - T('132753213.74892150691420521615', '-2356523694.1', '-2223770480.35107849308579478385'); - T('-255163.150', '-22815991158761.86650580', '-22815991413925.0165058'); - T('0.00000000000000009834358', '27695886984688431669.7', '27695886984688431669.70000000000000009834358'); - T('0.000000000018235737891993707047558745084', '-0.0000027294384492006549909198104817456693956836003182', '-0.0000027294202134627629972127629230005853956836003182'); - T('-13126.0', '0.0000616967410806266771382642088892371968', '-13125.9999383032589193733228617357911107628032'); - T('720874433286547149.29011960', '-0.0000000000175150100264717579452770317006888697250136125181729', '720874433286547149.2901195999824849899735282420547229682993111302749863874818271'); - T('2905655849177158035847281414357098453.291834904651188', '-3', '2.905655849177158035847281414357098450291834904651188e+36'); - T('0', '-1475966921783333685644104279864374261258954134383883947232', '-1.475966921783333685644104279864374261258954134383883947232e+57'); - T('472816652216998927468244178551354910167729088.966726827004415', '177527765826935.24974826329344', '4.72816652216998927468244178551532437933556024216475090297855e+44'); - - T('-274.5620579869', '78329265787241405566496082713913236369654243529457197134761863524633387852302663270044189362081880226597475301.025458805177854094773', '7.8329265787241405566496082713913236369654243529457197134761863524633387852302663270044189362081880226597475026463400818277854094773e+109'); - T('133883508068780764759485.5683529446087107456184862039990020823869300840561329290914475177233060368335', '-14.11123105188787211647630936581927502853383341149933197', '1.338835080687807647594714571218927208386291421768381797270538530966725568009590914475177233060368335e+23'); - T('-3199032706015694214818.7992938105687331661', '-7.87195', '-3.1990327060156942148266712438105687331661e+21'); - T('0.0000000000002295193152912890007348152875969581183350688584884783586480814376317641609774249', '11968142585488462774385062859935899134826448280897530108166161884029199683990896601020507477.320319', '1.19681425854884627743850628599358991348264482808975301081661618840291996839908966010205074773203190000002295193152912890007348152875969581183350688584884783586480814376317641609774249e+91'); - T('429850894793934827539600845168772.8751965913520453918272995739036873865390677578368381581396285338126446790691976041147571854', '-0.00000022801170604582813255353545523124229818428689101495876171494691321154484217536764378725027141584278379447842816929409', '4.2985089479393482753960084516877287519636334033934599916702036823215529676957354994714318086681886573146752435542874711339814972858415721620552157183070591e+32'); - T('0.12630479339914084342606977043625120835780195245007714525361728866248064543254204354136033894', '-57300622033341549450152055498951631223725420435.499102954248138500376888848777133938393663605560964812373961734244028047764768563', '-5.730062203334154945015205549895163122372542043537279816084899765695081907834088273003586165311088766712034444558154740233222651945863966106e+46'); - T('-0.000000000106720353331827', '4068913567129614779805806799030791537958519754660357531521550859320707940360600331986.6231458520200147185933974407694787756642025356767729344', '4.0689135671296147798058067990307915379585197546603575315215508593207079403606003319866231458519132943652615704407694787756642025356767729344e+84'); - T('1481.538992', '69979426854562140198395309', '6.9979426854562140198396790538992e+25'); - T('-481304712134904590633063526049619366756244902183946511856972789126658742068757286270722005910044731533367098.3473844315585478022917336214585042983934', '-9035651250061107335979601717303646.90745896455428', '-4.813047121349045906330635260496193667562449021839465118569727891266587420777929375207831132460243332506707452548433961128278022917336214585042983934e+107'); - T('5998474356563587104327566.3263164708068830115821012882772814947553985814910059469343679580428581460206', '-18057674949163421506117960386922177149977514555439908.159223871467357039682517588208442666597309817931705956866923', '-1.80576749491634215061179603809237027934139274511123418329074006604740281004162999311611718419112364407000099325550419571418539794e+52'); - T('641786663107582574187375964645432626362556087596248087198360354.064673626930039', '106200869851859350.797479350269434371025574271015473262363560762378677', '6.41786663107582574187375964645432626362556087702448957050219704862152977199473371025574271015473262363560762378677e+62'); - T('5280129522068699720461117125312358415979019162822.4201114673061632909516268898605984', '-205756343429440469562776948821275114561497830505910222682069.31376408871563202774509593696096457576461665289977493017361973671523262', '-2.0575634342416034004070824910081399743618547208993120351924689365262140946873679346904710036617576461665289977493017361973671523262e+59'); - T('-0.0000913314112194237567199921654806413644776347028968332389534560276307374133431440995704693847453686', '1.1', '1.0999086685887805762432800078345193586355223652971031667610465439723692625866568559004295306152546314'); - T('-2207121715490045.58', '-3295992738515109953967433108145888727360416859361202947062658620012196801551806622678192.686847483520554027598236734312161', '-3.295992738515109953967433108145888727360416859361202947062658620012196803758928338168238266847483520554027598236734312161e+87'); - T('61759391974251637508280834914990322126219035347147', '64943964591891233846314007885335.444346971691325618829', '6.1759391974251637573224799506881555972533043232482444346971691325618829e+49'); - T('-5540305476191589915887668399303961108947288288224548320', '0.0000294476901910227000564933914711035233697829465135452464583418791303186801762813', '-5.5403054761915899158876683993039611089472882882245483199999705523098089772999435066085288964766302170534864547535416581208696813198237187e+54'); - T('181474807531688120166683732972009536.64969213', '-3175669398983347716917468673419554.2177188765670101302869684383001638592478444069723506434104220110726821325272', '1.782991381327047724497662642985899824319732534329898697130315616998361407521555930276493565895779889273178674728e+35'); - T('-12493662650.119745851863596480945654415210619543132', '399561145206467750513891779469494975331120274361101613876792177943730662310953547064702574.65756653452860298452313916684555', '3.99561145206467750513891779469494975331120274361101613876792177943730662310953534571039924537820682665006503577484751634930456868e+89'); - T('-2166.664029173675712500257', '-0.00000000000067461152096758750665879707326349452924143528959808406172771844392251655077273026039982145730838447563291749346650348630096104418925967461686234281319', '-2166.66402917367638711177796758750665879707326349452924143528959808406172771844392251655077273026039982145730838447563291749346650348630096104418925967461686234281319'); - T('-55126691014038404667432234769742600667346582750812.76081290000540326323203936990298784699977785727177293701354598905047747033', '230955903911091180768255072886786497585594803905488997.065428', '2.3090077722007714236358764065201675498492745732273818430461509999459673676796063009701215300022214272822706298645401094952252967e+53'); - T('-12239899294934406744794741209740399921097535320596.080402725637531427417', '0.000000000000007975735707900012257888169944647551205385287889146629466680800976795', '-1.2239899294934406744794741209740399921097535320596080402725637523451681292099987742111830055352448794614712110853370533319199023205e+49'); - T('-0.00000000000000912462079748634949064954444536474698633137152955660092121181721134185040726847080723736415320180821995', '-28192491050430', '-28192491050430.00000000000000912462079748634949064954444536474698633137152955660092121181721134185040726847080723736415320180821995'); - T('5365712579646207337626428460702379954655063519', '-171091164429397358988968907423411173590072414448497446341010313844726796866187751610819558166794791576734732137347669225657216896755433103171081237', '-1.71091164429397358988968907423411173590072414448497446341010313844726796866187751610819558166794791571369019557701461888030788436053053148516017718e+146'); - T('-1981290034036713612.3587708893531360121978707494237', '438761731488571.030446306123818027751940714135233838', '-1980851272305225041.328324583229317984445930035288466162'); - T('-2755875412874743140386728151346', '2.8472810', '-2.755875412874743140386728151343152719e+30'); - T('-157.549092251345721782955172995326812019919432214305439543', '142439127771945282929407965570725127160359050662864293026220308331445962610.79480267325422', '1.42439127771945282929407965570725127160359050662864293026220308331445962453245710421908498217044827004673187980080567785694560457e+74'); - T('0.3491333927087766478511955867195720082891559879520214956234991486163801992970042826730252168795279033184196910108870648', '-756356333951812709085600894164769015473490895.271157080699', '-7.563563339518127090856008941647690154734908949220236879902233521488044132804279917108440120479785043765008513836198007029957173269747831204720966815803089891129352e+44'); - T('63261615358197872923073425992.67414929587646886049878412684052256635783684', '32232093735028677679866848653553607775797749686636316132824223211080228103818061093254438705652919', '3.223209373502867767986684865355360777579774968663631613282422321108029136543341929112736177907891167414929587646886049878412684052256635783684e+97'); - T('-0.0000000000000009295380014651692075387777504579033936499297749005685897989061480633040541931247624617087077690289771853068486993070710805656', '-74240982721590027061065744723039918113222511184444001668610337943', '-7.42409827215900270610657447230399181132225111844440016686103379430000000000000009295380014651692075387777504579033936499297749005685897989061480633040541931247624617087077690289771853068486993070710805656e+64'); - T('-38662088769617027684868436557208874287.531787', '-0.00000000000000000004404702485696046546186749454135837739919620970432790136280242735880480845505606335438999503830238610', '-3.86620887696170276848684365572088742875317870000000000000440470248569604654618674945413583773991962097043279013628024273588048084550560633543899950383023861e+37'); - T('0.0000005919093535654695188705799210533565699038', '-1050230870542550895325305037586388557344285623573695378599872476398998237594436121662.36921877939195132369', '-1.0502308705425508953253050375863885573442856235736953785998724763989982375944361216623692181874825977582204811294200789466434300962e+84'); - T('8531356548289.68', '0.0000000000010663385403102579270265567147867424805920', '8531356548289.680000000001066338540310257927026556714786742480592'); - T('-77352959873895499881.6761162233029992762254367454845614002262158269218399300505823906248006070788666306', '-0.000000763350249168968817759292626920653670602769749623937342230173000', '-77352959873895499881.6761169866532484451942545047771883208798864296915895539879246207978006070788666306'); - T('0.04585173770263682911835172946483907318715956718860423056098335799507649567731835', '-545336428117302.06514791235190', '-545336428117302.01929617464926317088164827053516092681284043281139576943901664200492350432268165'); - T('-2000777096546022469363680806530511943528746650101273997534.242598610793331542113919999385909', '-0.000000012960554065829921984561617848403788685435712387766345566655415445798299917451084000', '-2.000777096546022469363680806530511943528746650101273997534242598623753885607943841983947526848403788685435712387766345566655415445798299917451084e+57'); - T('-4637067617611402422338031964698807990446537844332708147280649406995000008716', '-3099749512371613407546572880261013353834801183114544503924317759.7679498142950006458622486041325542794064397790374869775038357487455568411693227469', '-4.6370676176145021718504035781063545633267988576865429484637639514989243264757679498142950006458622486041325542794064397790374869775038357487455568411693227469e+75'); - T('270678062855542005084307870824127678467656.762955855629442335926610514941014722825992247041', '282974792.523705817808', '2.70678062855542005084307870824127961442449286661673437442335926610514941014722825992247041e+41'); - T('-0.00000003225236579904856895487056015821433730938371824218643897684349658964835496773420825844721647906790768973764870027244455', '-0.004924810165331790880550482628308491946560589374047905819960040503118511618345', '-0.00492484241769758992911943749886865016089789875776614800639901734661510126669996773420825844721647906790768973764870027244455'); - T('-2873277.7031566090883', '369526947446567818357.08166567158618885089868282383289', '369526947446564945079.37850906249788885089868282383289'); - T('-2178986538025.6281171045', '-0.90007456268766834245637565755250114155754042861579405494550640641064108080486501982231697766610369506873393983', '-2178986538026.52819166718766834245637565755250114155754042861579405494550640641064108080486501982231697766610369506873393983'); - T('-12610827849005379185996946898193295000242048930.3057', '-50566291142615310315.413773094', '-1.2610827849005379185996946948759586142857359245719473094e+46'); - T('-0.72263391095435659584498561750405291423', '1.6716', '0.94896608904564340415501438249594708577'); - T('-0.00002308861674194925960442185653345749705673163043872636646918599512354359169533298098626366738286911364737665763586940744987791360736201819133314717054', '450814153774.5', '450814153774.49997691138325805074039557814346654250294326836956127363353081400487645640830466701901373633261713088635262334236413059255012208639263798180866685282946'); - T('-0.000000000000042613856152865288514141630996935837135169348614328862241783421937354219792185365968886244399960104759290619174907', '0.0000000000000000974480182403539706738405642564651574120855033994898433979613263953303312911354243605961011258564221775753219595811881303591336456508263682734', '-4.25164081346249345434677904326793719777572631109293723983854606109588894608942305445256482988342483371130438529474188118696408663543491736317266e-14'); - T('134411245152521998394744941365564060927709793292932748805716150.96086322753', '163717756163587942012853208387334527056988170322687172258242323330600618595724408258555875633809739823926575887736071927568012683', '1.6371775616358794201285320838733452705698817032268717225824232333073502984087693025695062057517530388485428568102900467637372883396086322753e+128'); - T('-1135858630959255507879446', '0.0000008656110212823553443864329542508631', '-1.1358586309592555078794459999991343889787176446556135670457491369e+24'); - T('-0.0000000003175675944478684925401856872596765776036876508094511873354931239253559389081387285155438349993170191128163568912691363523242026430941295514496034087951', '13806374012994737257255.1886211194405', '1.38063740129947372572551886211191229324055521315074598143127403234223963123491905488126645068760746440610918612714844561650006829808871836431087308636476757973569058704485503965912049e+22'); - T('-27708159800573272.0883231101900212685541939067996078907774725322218231069648770193298081146113593454964992974439864811', '1069672.96681867083', '-27708159799503599.1215044393600212685541939067996078907774725322218231069648770193298081146113593454964992974439864811'); - T('0.00000429880802966674008131137959417215280776628630203493369987886551523668068778978', '0.00000000077008967289490676642801409841947753617266544157841315779815188796831111777973779955219440658094362925853693153209608918067', '0.00000429957811933963498807780760827057228530245896747651211303666366712464899890755973779955219440658094362925853693153209608918067'); - T('0.0000000000000000000299565', '-73131153293465264.481', '-73131153293465264.4809999999999999999700435'); - T('133297778031366687408810593803463309652201134859997.4758048870790461770038771730220839594432975561216897245860371442353803167578892021729425784575887741', '2364940340353511166077790398873799899.851022395047720', '1.332977780313690523491509473146293874426000086598973268272821267661770038771730220839594432975561216897245860371442353803167578892021729425784575887741e+50'); - T('233341303466412748783092751385962706054310564979814063054720210979264.76320976947', '373546701810748884756.35246337986916104538633936243091901195', '2.3334130346641274878309275138596270605431056498018760975653095986402111567314933916104538633936243091901195e+68'); - T('-0.00000000000001298143460683533187542098532057471443650131347027927061505315402201377004104838055385241660827862931318282364149013913156553270415', '-3144.73816785889762413352612917538951639565049692192872179639873257494799763607259781490677831922245389370215618142714372657806598580728875889749', '-3144.73816785889763711496073601072139181663581749664315829771220285421861268922661982867681936760300774611876446005645690940170747594642032443019415'); - T('83823188981575692224309101153864758580078.5955259490170379255716122945113031579157318931038231', '-40028920687917.16848969', '8.38231889815756922243091011138358378921614270362590170379255716122945113031579157318931038231e+40'); - T('2808691776034467055726891904371173436595982589447978253042154698627671398488784', '9812791602520619.597754130838314809582665890845794489994575586', '2.808691776034467055726891904371173436595982589447978253042154708440463001009403597754130838314809582665890845794489994575586e+78'); - T('348504897735551663451493471155931032198603500912341395392663329685030763642073580083352277207617381115118735257611119505096273334530366023', '3012062864730334700837949872371998966828679.4047646544156150438268952921094746263', '3.485048977355516634514934711559310321986035009123413953926633296850307636420735800833522772076203931779834655923119574549686453334971947024047646544156150438268952921094746263e+137'); - T('93548859880851212916468686274573175909', '-75118428101074788562.506120603990328548341139932377168056', '9.3548859880851212841350258173498387346493879396009671451658860067622831944e+37'); - T('0.000000000000000000194012323991964077673853360201053367800566124970905963785098877971072180640313745271154543409391042526877924567117182739810', '0.0000000236189282059323667779215335', '2.361892820612637910191349757767385336020105336780056612497090596378509887797107218064031374527115454340939104252687792456711718273981e-8'); - T('-389202042550335503825154365205711290405537538112817615439726097659782032124231125784313789925', '0.00000003186474240443828135635273567868516420016402055460073651185', '-3.8920204255033550382515436520571129040553753811281761543972609765978203212423112578431378992499999996813525759556171864364726432131483579983597944539926348815e+92'); - T('175494756398169060188389869312520635210512554543656594330140', '-411530581933818049374887440657899352512027.09153247186642746768921170931268854307755443936717', '1.7549475639816905977685928737870258583562511388575724181811290846752813357253231078829068731145692244556063283e+59'); - T('4598950112574467183729719937465962791614617983103965921055089220439607671.599007540382070086491128969863554413197224811888258922835', '-26938781266346831074998405687771608325810543240305.7378923235384660560482541777264792878816806719888726231', '4.598950112574467183729692998684696444783542984698278149446763409896367365861115216843604030442874792137075125315544139899386299735e+72'); - T('57361809317883677060860671734348051270932088942529602386581.68900107141758948907', '-295802867132191509532524058', '5.736180931788367706086067173434775546806495675102006986252368900107141758948907e+58'); - T('-0.0000125601146369033513236980781240144461675622310937097773', '311729685945211093658295182', '3.117296859452110936582951819999874398853630966486763019218759855538324377689062902227e+26'); - T('-0.000000000000017031301308338958768641001044966021634165409838760713', '7354226011798172001332233249137409933327535976109274125337', '7.354226011798172001332233249137409933327535976109274125336999999999999982968698691661041231358998955033978365834590161239287e+57'); - T('-3.6', '-2815836861296137045153782405432811863217898809.59007', '-2.81583686129613704515378240543281186321789881319007e+45'); - T('1883757916919577797545040700765718683892962925168476980916591444220044498023865115.414486424', '-20632263651557034535417971371523039152817223695099485637652293509653426916474374628814088965383.41423390427269280942433875156452181764219', '-2.063226365155515077750105179372549411211645797641559267472712503267251032503015458431606510026799974748027269280942433875156452181764219e+94'); - T('0.0000000098475053710376389804550097928552217095921881011378913867422148039984790157547999437804576731605639912393200622917271102003', '-53035373614.717805924235005616321273', '-53035373614.7178059143875002452836340195449902071447782904078118988621086132577851960015209842452000562195423268394360087606799377082728897997'); - T('-0.0000811390350949663620350120726675225941477085450778', '-655.20852663603498591718010139782212', '-655.2086077750700808835421364098947875225941477085450778'); - T('2426894083677867432345228015404', '-101468490319724506034682885345783370059542917.575868248657413589', '-1.01468490319722079140599207478351024831527513575868248657413589e+44'); - T('0.30280', '0.000000000000000000254561077129670600967185643', '0.302800000000000000254561077129670600967185643'); - T('2460767093793617543980763007583218463976172951977824518682800860159902541914492786569.988063268009300275066475501733486973382818662', '33247165254498490053797.4453', '2.460767093793617543980763007583218463976172951977824518682800893407067796412982840367433363268009300275066475501733486973382818662e+84'); - T('0.00000000000297623885327264628872813944566975202437690710653591748231030925179641495339618475769115114527914606543143194147848430495597', '120677689870942459137299176289089761143754326820862009921425274349213001568104474801947554427316998849125038885919', '1.2067768987094245913729917628908976114375432682086200992142527434921300156810447480194755442731699884912503888591900000000000297623885327264628872813944566975202437690710653591748231030925179641495339618475769115114527914606543143194147848430495597e+113'); - T('0.00000000000000140253681305432813286110569633536186290552984308384603424304253311258844823992792716702555859199219343153509752', '0.00000000000680532732610522954462416342609639850515130341357440142880229', '6.80672986291828387275702453179273386701420894341748527483653304253311258844823992792716702555859199219343153509752e-12'); - T('-62741750762018440848873834757672851831867995632459744339895230073473.21603443732', '-874741125356670695571041484420725542382859690979070399875164371412.46', '-6.361649188737511154444487624209357737425085532343881473977039444488567603443732e+67'); - T('0.00000000000021176414395474510305287866523610550765676408675802', '256510633937671286139867882266916007823374156029717017148', '2.5651063393767128613986788226691600782337415602971701714800000000000021176414395474510305287866523610550765676408675802e+56'); - T('0.0000000000000000664215993897397955795237104020638588228731275806541568161715250236709545538098694857746988330740', '0.0000000000000072103606167686672117631228552986024686236649558161717746101379938704517818104841311722678845013668413146919184762655', '7.2767822161584070073426465657006663274465380833968259314263095188941227363642940006580425833344408413146919184762655e-15'); - T('-7562874182.83873823754546340019820202614555774800566970410202356651856', '-391433409037814397456500851811078785870089119160317598515862901999756095733578802714504574456.70518495722', '-3.9143340903781439745650085181107878587008911916031759851586290199975609573357880272206744863954392319476546340019820202614555774800566970410202356651856e+92'); - T('-0.0310379152847371895860555796583283692667844392505377548276647230042445', '0.00000082283513482603951054300917006814118588679056861856581955986306659552380016853864396371024709306483760781400794588331', '-0.03103709244960236354654503664915830112559855245996913626184516314117790447619983146135603628975290693516239218599205411669'); - T('87994958901421.56173641605454399949453740849330489135088167019977159972118641759021121261627327050792415022189885286236293442163107348031602461', '-100300365307636143430499359339922108619124158914798.44948', '-1.0030036530763614343049935933992210853112920001337688774358394545600050546259150669510864911832980022840027881358240978878738372672949207584977810114713763706557836892651968397539e+50'); - T('-1550007004.74515351306585502801', '57296100584443643484072467509091114834539973592176211806934477387549446567272546346798', '5.729610058444364348407246750909111483453997359217621180693447738754944656727099633979325484648693414497199e+85'); - T('19679349947742.994127711806874970698304897', '-8.6373642811', '19679349947734.356763430706874970698304897'); - T('54030292.9001', '0', '54030292.9001'); - T('651054592756506304745571531773834326.83644', '-13757776534587654.0116063063442543177687640729791412475434103606212206897637619312584893291977232262578', '6.510545927565063047318137552392466728248336936557456822312359270208587524565896393787793102362380687415106708022767737422e+35'); - T('-508728777596140418455412767451446817854358041268106849523.35989817998722029624762450551681595146802924988664', '-50262054005503525686132151227512844312491027044172912.40', '-5.0877903965014592198109889960267433069867053229515102243575989817998722029624762450551681595146802924988664e+56'); - T('-28915075134892302952316258686216304990690277355', '12.6179700286426790566', '-2.89150751348923029523162586862163049906902773423820299713573209434e+46'); - T('-0.000000000000000204506794915221132784856197218478429446796657919285394521228788556955524', '-86151293785140264277.3878186179195', '-86151293785140264277.387818617919500204506794915221132784856197218478429446796657919285394521228788556955524'); - T('42235147499429175944266679795088142906175521777163730652253755746712473163633468251357976', '-0.0023908655154', '4.22351474994291759442666797950881429061755217771637306522537557467124731636334682513579759976091344846e+88'); - T('591589.86', '0.00000000000000000001860329292788516991407643664465772674133322798829000748004481876019355253701810078529570613237182776549094598706836269877507206606048', '591589.86000000000000000001860329292788516991407643664465772674133322798829000748004481876019355253701810078529570613237182776549094598706836269877507206606048'); - T('-350651107084655269140529689112278274003508608230449884077441.95115833128262389', '0.000000000001117808991674427079320983053134086985164', '-3.50651107084655269140529689112278274003508608230449884077441951158331281506081008325572920679016946865913014836e+59'); - T('-39134659750772.877480206401712009933563545303653', '166958406518764640192354635927301907690317389127470622845773787156043063093969532575030322149816302478163328082727649181925765.252883933714', '1.66958406518764640192354635927301907690317389127470622845773787156043063093969532575030322149816302478163328082688514522174992375403727312287990066436454696347e+125'); - T('-172056481099057625655452551706739628179114255612273491148921284864736703885146667722.8388377144520839161622951529099672906561615777554908439149426', '-53188016746661398958851588477178244943851165029295827.73281273540583347372612339273431422', '-1.720564810990576256554525517067928161958609170112323427373984631096805550501759635505716504498579173898884185456442815106561615777554908439149426e+83'); - T('-101.2715534026922239603773241958969231368570306133332758128133966689708114732', '-0.0000000000069524253857033293796239251561117850631416003514681200491262005294123143215554850258908298728505228195487713881587714484422961615066116684637', '-101.2715534026991763857630275252765470620131423983964174131648647890199376737294123143215554850258908298728505228195487713881587714484422961615066116684637'); - T('-25333165941026', '-6.96905', '-25333165941032.96905'); - T('-23159930599967762034619306845640878338289007418537140350162347387358954515654697539296', '-0.0000000000025055077873630358869224326917384442359589577625318652368309033754969806200104209411667012418713252227441129227486821508788141961', '-2.31599305999677620346193068456408783382890074185371403501623473873589545156546975392960000000000025055077873630358869224326917384442359589577625318652368309033754969806200104209411667012418713252227441129227486821508788141961e+85'); - T('-272690054326355360717463915920945.79117473701250126513511144304624422023780335575219366', '-0.04646617289953036368927399160045218571026521306334789242996846430687659493840681112221758307480649419116688540343801556', '-2.7269005432635536071746391592094583764090991203162882438543464669640594806856881554155242996846430687659493840681112221758307480649419116688540343801556e+32'); - T('-0.000000000000000000824794592791708470343498439383184471216678775736929136783274734656085', '-15464590993770169004834442995125190019352837990780198498620045480008050531227509554782670484128441573926502719591921520634735942184', '-1.5464590993770169004834442995125190019352837990780198498620045480008050531227509554782670484128441573926502719591921520634735942184000000000000000000824794592791708470343498439383184471216678775736929136783274734656085e+130'); - T('-0.000025886438630912380429166846355627957951159888724105900108725398458013138566376225646226120608061663021', '-0.00000000000000000922559195021433452347561162265923135770528238859359860082308634808051034873284365047902141945318959511946199226', '-0.00002588643863092160602111706069015143356278254795546360539111399205661396165272430615657485345171214204241945318959511946199226'); - T('4208526064828419952094154623926319503361267122786727994718336255550699863529999970816217779807244768234375837054150463771544173571075249738067912741', '0.00000000000098970610', '4.2085260648284199520941546239263195033612671227867279947183362555506998635299999708162177798072447682343758370541504637715441735710752497380679127410000000000009897061e+147'); - T('782154833767130832317687050316770373560511399580384993381585732162357039470401244281856195.066130334377022511400443485932219487910616611626636101', '-0.00074331374743997058610568400177871943926460185889915970549597536944046651458673936138785020737671331878048877509692365190559231823', '7.8215483376713083231768705031677037356051139958038499338158573216235703947040124428185619506538702062958254081433780193044076847135200976773694129450402463055953348541326063861214979262328668121951122490307634809440768177e+89'); - T('42247383.064', '-0.0937875210571846395102908228397490109201012337594873628817471460764217967528951691863690241707606495782508382461321094202624928680498275', '42247382.9702124789428153604897091771602509890798987662405126371182528539235782032471048308136309758292393504217491617538678905797375071319501725'); - T('2576315957194062278091487692155019635858438293549959035082229215955048823715650588390178638212566542.511871428870771408965933726237972177952115', '14221275732102839762375835558162468599546489504738010046753467831312431.748866797310416772779810575075035266788827703', '2.576315957194062278091487692169240911590541133312334870640391684554595313220388598436932106043878974260738226181188181745744301313007444740942703e+99'); - T('-182341620.75963819', '0.000998366694277196028537550780159837727537078256289848938775652509142720967559421265698965121960614893238144882990784373782561165842054284561355', '-182341620.758639823305722803971462449219840162272462921743710151061224347490857279032440578734301034878039385106761855117009215626217438834157945715438645'); - T('842047793825512583448880280167368274851233502546714872003645854281826035260762377793954087704796997.25746974352168013713893221905548161407096643850', '-879630826.1', '8.420477938255125834488802801673682748512335025467148720036458542818260352607623777939540868251661711574697435216801371389322190554816140709664385e+98'); - T('-554969229244174864065407853658438.853', '0.000000000000000046413279985045478767808596461145151129534715272056', '-5.54969229244174864065407853658438852999999999999953586720014954521232191403538854848870465284727944e+32'); - T('0.0000004594903425141532404871962049647498137', '-932661375466478095759388985035813536638008334074283723919735.05355344249627897324401366029784201920498102254155227173893629037627164808010183', '-9.3266137546647809575938898503581353663800833407428372391973505355298300593645909077317310163705445516732254155227173893629037627164808010183e+59'); - T('55622408985624324409029884623142142230.3564337866286742532877692296727906360723088525106961633413366259718859274228008870960807098', '15964242335991562370631446343520536873365067961244.3048166767601763969347103883920143084337317316579770484121318738881953338102', '1.59642423360471847796170706679295667579882101034746612504633888506502224796180648049445060405841686732117534684998600812612330008870960807098e+49'); - T('4116.6343', '-13125881395295867999756142722598662945291700853448430819633768649050051199293316003551472339311180106761185979863040509.660957581', '-1.3125881395295867999756142722598662945291700853448430819633768649050051199293316003551472339311180106761185979863036393026657581e+118'); - T('-185.999886254076738335134043252415796249753374218519734071455', '-0.000000000000000001138037685382195961414405158218078543316186398616143756105152301597533', '-185.999886254076738336272080937797992211167779376737812614771186398616143756105152301597533'); - T('-198.9786279245', '1746794213.948368961266', '1746794014.969741036766'); - T('15874309893574389.8', '0', '15874309893574389.8'); - T('16588576987819.81660754169192038181188060714025162116858077319124964265625043196845919043822440466', '-89246600501318562304915309660228383388276620845488564802.496235049288379013778246594577495893634435949828063691098972563490365127', '-8.924660050131856230491530966022838338827660425691157698267962750759645863196636598743724427246585517663681404844272213152190593656177559534e+55'); - T('-127347284441930400932829141510983278557342554346089741297398296382897208587382099.5435745742690549551823615645727067', '-23318951044403467148495997370.7883388335', '-1.273472844419304009328291415109832785573425543460897646163493407863643570833794703319134077690549551823615645727067e+80'); - T('-5077543273110250868221405268190259167.97565436390533404678643216521675105958934642804771', '26014332970671415773600104084765496839411707080753222580030511682112031082495461045172183069324313539709881831959', '2.601433297067141577360010408476549683941170708075322258003051168211203108249038350189907281845609213444169157279102434563609466595321356783478324894041065357195229e+112'); - T('0.00000000725881132557751716179805811333894302315168261762649561806817469605831550855169620175635494174620728378066598111147687734973630755961025899', '434515885287.45022424035155504385780922882248468547935186640429869578572525153830676791908425738454517466', '434515885287.45022424761036636943532639062054279881829488955598131341222086960648146397739976593624137641635494174620728378066598111147687734973630755961025899'); - T('-0.000000000000005190715334165879366906953397614175481033368428717937549118481651827304967814441188123242137007460', '-25.81020207', '-25.81020207000000519071533416587936690695339761417548103336842871793754911848165182730496781444118812324213700746'); - T('-5250099.76439982', '1', '-5250098.76439982'); - T('1196038410000291625428567.6600927087933557619055721061645233907526288367', '274708477195241356599569', '1.4707468871955329820281366600927087933557619055721061645233907526288367e+24'); - T('1193283202443516969171199.42749207631310978334573154570736931304683327423627434514888492883630124033894042566872', '-2705842436304954369628829105664616526636750473333202873059187377027354726150010013782785345680025581966172299828118.857377088370514', '-2.70584243630495436962882910566461652663675047333320287305918737702735472615001001378278534448674237952265533065691942988501205740421665426845429263068695316672576372565485111507116369875966105957433128e+114'); - T('-100501387373.2156506022473571945511270816570649486799902805849591635129761139096179741555986743162675121226826359781143695356560', '-617089847302145796251638901404458614481659.476726016550865549', '-6.17089847302145796251638901404559115869032692376618798222743551127081657064948679990280584959163512976113909617974155598674316267512122682635978114369535656e+41'); - T('16333090935253715.586262', '-0.99663564938317815363068300949250859179309525545225', '16333090935253714.58962635061682184636931699050749140820690474454775'); - T('321070028467230447383995878020953.3888568546912021134358772343603579280658629722635803579108', '28832623126702540650471917064799132201501970153523973751436115142706664061743228360740052.89377744216939547659256989919800076278264836074', '2.88326231267025406504719170647991322015019701535239737517571851711738945091272242387610062826342968605975900284471335583586908485113330035803579108e+88'); - T('-0.00000000000000000003787025783187787162540090434491007131260214791563020212712224638154647089519712810087585510020487818551239718654495070616103779447174795619', '5152327951088416826370.49800740890621823749333954384917083961142478820631626896455924008645842950035037082504155566540807507', '5.15232795108841682637049800740890621823745546928601729296798602388386140619765195709217082822737322812444349508477021094696912414489979512181448760281345504929383896220552825204381e+21'); - T('-3781578965051244011802834529658700587745611157492889345003479370244990285997045726143735238169075073132478791.794030078', '-398406181131828029423189359168774589795627542.69216955808205240294903823537210247931306802', '-3.78157896505124401180283452965870058774561115749288934500347937064339646712887375556692459733784966292810633448619963608205240294903823537210247931306802e+108'); - T('-857281769723716632426451761545805487782866662040001135988125619524781917496404046.907015785954', '-0.00000000000073616976036884849929013414437985061753356336526778613936461244959197744911962137302874551', '-8.5728176972371663242645176154580548778286666204000113598812561952478191749640404690701578595473616976036884849929013414437985061753356336526778613936461244959197744911962137302874551e+80'); - T('3089627721247383947360751941786039174000627343590658682240341607417650', '-5343911762378383789737796312183683590895032635513074691383250730453', '3.084283809485005563571014145473855490409732310955145607548958356687197e+69'); - T('178191.66604428931197081347222738459872958', '-0.00000000457431668529', '178191.66604428473765412818222738459872958'); - T('-0.00000059402965420877250077049277056387386461138162956320009201234837822718242249019319520691853', '-85966889247898245.45722015', '-85966889247898245.45722074402965420877250077049277056387386461138162956320009201234837822718242249019319520691853'); - T('0.00000000000036703131', '-1690706009848928777.495021644332320103184605016856460586815056781662', '-1690706009848928777.495021644331953071874605016856460586815056781662'); - T('-1201941125816287616412820133589940378119107883736149474619667856427578308106640475701376366656637044297989392894431464368963531768836140765436577394', '30399.3500425', '-1.2019411258162876164128201335899403781191078837361494746196678564275783081066404757013763666566370442979893928944314643689635317688361407654365469946499575e+147'); - T('-5911232068256006917083493799668612278296458371177903401236223682450786815464114645404870555701', '-3666175952907291515352144888988964318204590.50095772343418568691895368', '-5.91123206825600691708349379966861227829645837117790706741217658974230216760900363436918876029150095772343418568691895368e+93'); - T('-2459545344690.7997076213355757525315040568953385869184764316593583226907', '4164315079449261632762812204636584837224819345915404704039302166.1662755649220', '4.1643150794492616327628122046365848372248193459154022444939574753665679435864242474684959431046614130815235683406416773093e+63'); - T('717000944256731362781243642636076865324406926670042', '-15881954495698535614971299471328513969444270448080565895751331092451780915657006942144214705830428876978218653.40439815564850025319446970516', '-1.588195449569853561497129947132851396944427044808056589575061409150752418429422569850157862896510447005154861140439815564850025319446970516e+109'); - T('2135955.98546847496701957917801628765161676501430902420565334363847226731093782482383515268139253106808269937151040195861', '-0.00000186143738178071752355591997816736943677781854280530890582737750128944', '2135955.98546661352963779846049273173163859764487224638711053832956643993343653538383515268139253106808269937151040195861'); - T('-2753001186629.1654476569387069958961438785379535103689665000111045009651593729849009490188549152460050154549811339425832561', '2994415432463123195.83557', '2994412679461936566.6701223430612930041038561214620464896310334999888954990348406270150990509811450847539949845450188660574167439'); - T('0.000000000000000018408379822942006989333252748149670155210581048845628953786929400969225780392593930060103', '-350080792300.4', '-350080792300.399999999999999981591620177057993010666747251850329844789418951154371046213070599030774219607406069939897'); - T('5854211899389381506945331507818660152894470704.9769422579022684177921767417413505638887249265068371213031063935537133330368277125538929754', '-6238089', '5.8542118993893815069453315078186601528882326159769422579022684177921767417413505638887249265068371213031063935537133330368277125538929754e+45'); - T('0.000000000000009383448945864756120696895884403358543889635556010530179055321923499853947812003801655721924', '-19052898127325499710380.9743286252434506021419112451035829611583', '-1.9052898127325499710380974328625243441218692965380347462264262415596641456110364443989469820944678076500146052187996198344278076e+22'); - T('-17256820969785465284434808952852690245011499274233791647620649273158761764638386391819039.862028829339196251615676315363239', '13.156452841246543538', '-1.7256820969785465284434808952852690245011499274233791647620649273158761764638386391819026705575988092652713615676315363239e+88'); - T('-665097561.949707', '-2162357984514826.9250074134451642962816183', '-2162358649612388.8747144134451642962816183'); - T('-1787583563218949877447505176411981054278266273447362590023794164049587059.8952802595404997239841103802373009222385203752749', '0.00000000000000000760974939459', '-1.7875835632189498774475051764119810542782662734473625900237941640495870598952802595404997163743609856473009222385203752749e+72'); - T('-97829644134932448583893137101111730259820.05765691989', '-0.00008062307539130036460992642410736502245711006627314391776591134965421657938611242879211258420030106690367460157448425', '-9.782964413493244858389313710111173025982005773754296539130036460992642410736502245711006627314391776591134965421657938611242879211258420030106690367460157448425e+40'); - T('176.49118337833630469590257828139881196863600409523', '35933.6589226268793460337176730393325086784341893690115486029833220604354746534', '36110.1501060052156507296202513207313206470701934642415486029833220604354746534'); - T('2317.37783', '-33432.9207570414', '-31115.5429270414'); - T('6637712385532453617053848832374521936910779.70621790725066804869722068097', '-2227675488368.765036410422350452356577021856408570307494950931297002601448393249899536', '6.637712385532453617053848832372294261422410941181496828317596340643659113591429692505049068702997398551606750100464e+42'); - T('-29796953630.4913026375328064186913399668764', '183881988687448174550.05812049319254873917759915275571715311496797038130265358357168647155176800096292869421', '183881988657651220919.56681785565974232048625918587931715311496797038130265358357168647155176800096292869421'); - T('13199507764.3046118900484236', '2889.225410430843647396962046960496506372239727670782057756607', '13199510653.530022320892070996962046960496506372239727670782057756607'); - T('21296975756.7155683578416319475809678174056385498809428133837225514886696657380', '-12089429986715170910650388697796567002415981764555993502477488839251139863938357832329451138126477861065923975862099475655105604012728', '-1.2089429986715170910650388697796567002415981764555993502477488839251139863938357832329451138126477861065923975862099475655084307036971284431642158368052419032182594361450119057186616277448511330334262e+133'); - T('-10171266580517816.0917067510409', '315013465687559910813490005858570828704.32710226291611151322994451850467532608107794030518681711210056375276848', '3.1501346568755991081347983459199031088823539551187521151322994451850467532608107794030518681711210056375276848e+38'); - T('-104378676461688732476982045085768915711531135396792471359807651838019425066099516.3887940021256850', '-0.0000000075463669108526190909746406521772574', '-1.043786764616887324769820450857689157115311353967924713598076518380194250660995163887940096720519108526190909746406521772574e+80'); - T('-554004567.5248864688113348892343007508509027941489605', '24036.8693849642440730', '-553980530.6555015045672618892343007508509027941489605'); - T('-0.13862781295596173373834834617362885552230456574647246122144469327684018389680003345722428926923436849384730389514581111500008577', '999130309696269960369411189504977138022060325178635804383777964396643757881930599444544232699066835337985580790738', '9.9913030969626996036941118950497713802206032517863580438377796439664375788193059944454423269906683533798558079073786137218704403826626165165382637114447769543425352753877855530672315981610319996654277571073076563150615269610485418888499991423e+113'); - T('111333740621290857055005859873614448428448428149963.63294760371993029666150267467043126547986051822019939851697686673961129595', '4999995459444511596846816663006330762507788928567760', '5.11132920006580245390182252287994521093623735671772363294760371993029666150267467043126547986051822019939851697686673961129595e+51'); - T('0.3638494649282355263819067061458269397737971067286076619347353611281169315189527491523244687688286', '-1790006094624306575957063565992185307582798107924013187.71', '-1.7900060946243065759570635659921853075827981079240131873461505350717644736180932938541730602262028932713923380652646388718830684810472508476755312311714e+54'); - T('-505517596445.1482', '13658590629245746', '13658085111649300.8518'); - T('-0.0000000000000000003526114927031853853794194624925423016782264', '-3648850034079477562581394480009152297642761812144625299013120030846235.2420343951205906', '-3.6488500340794775625813944800091522976427618121446252990131200308462352420343951205906003526114927031853853794194624925423016782264e+69'); - T('11151882673607076860108980480685547378102216722783817.5164597052664085858745970369334', '75.19', '1.11518826736070768601089804806855473781022167227838927064597052664085858745970369334e+52'); - T('721971138118087482240206073369515811598326847978080496736102280373630157207437819185711943223296522977798907649465741783364603042045658293259.583212980', '-140176921692721492746085636102764157797617196402727800746784082298282387.90860726314021850408568982802', '7.2197113811808748224020607336951581159832684797808049673610228037363001703051612646421919713766042021364111003226933905556385625796336001087167460571685978149591431017198e+140'); - T('-1.4681874863', '-3367963466800407715599.44244519159656022505642088971735092327417182287381', '-3.36796346680040771560091063267789656022505642088971735092327417182287381e+21'); - T('-0.0000000000000004372619977839161258710643393271233757307937114407266184997518559013565243060131612462006611450037791975727499469', '-0.000557380206825781899', '-0.0005573802068262191609977839161258710643393271233757307937114407266184997518559013565243060131612462006611450037791975727499469'); - T('889975261077.730985', '-444512813658612993665287376887226223666949336282284327.65111812283484181956398112803471368231154715336519231346350829789199178743774349985755167017', '-4.4451281365861299366528737688722622366694844630702324992013312283484181956398112803471368231154715336519231346350829789199178743774349985755167017e+53'); - T('4228.494108579658047102292', '0.000000000000000037431967516705914275', '4228.494108579658047139723967516705914275'); - T('5081895821751331032957687842323663780819055.0589539655583256', '3045235045891993287321120869322585059630654297351523276745951018307395.66088948484478706336724055686328883825124984361740259408994712721', '3.04523504589199328732112087440448088138198533030921111906961479912645071984345040311266336724055686328883825124984361740259408994712721e+69'); - T('0', '0.0014970897348316271399696665513926791886689361148588977237211047578120594034554421644608967215193', '0.0014970897348316271399696665513926791886689361148588977237211047578120594034554421644608967215193'); - T('-38086604857440351908282393909820732805333576481045075753031751734398766308', '-8466726560595694017777483540348440264157355649896385800844069368330876512659274241703013842599067504442486011483149390298', '-8.466726560595694017777483540348440264157355649934472405701509720239158906569094974508347419080112580195517763217548156606e+120'); - T('3.606', '-0.00000000226457426250954670156179129629125380257442683372667979', '3.60599999773542573749045329843820870370874619742557316627332021'); - T('0.00000000002432', '-2721049388922460690679999802237503439420773586591695831186196683218833781609933786136614218796838155186664711199485697050894450944907939921399737566841', '-2.72104938892246069067999980223750343942077358659169583118619668321883378160993378613661421879683815518666471119948569705089445094490793992139973756684099999999997568e+150'); - T('3419034647852504243.4', '0.00000000000000000001109196145046743', '3419034647852504243.40000000000000000001109196145046743'); - T('0.00000000000000001986294624152158258216394967520873041627413436833216557224760286108648966762394958388810402835384523225417563557', '-3796809284763021958367848219266230972066614510710559054.1146025612649983495607541466475364622687018577099048021869', '-3.79680928476302195836784821926623097206661451071055905411460256126499832969780790512595388010475218250117438591276563166783442775239713891351033237605041611189597164615476774582436443e+54'); - T('-204798018073795.6529529448002736801844846511974520623046560206000445277488879317921030460527861542787789702381941427349799245079342628083413', '-0.000079632857050636167683223005840115134570250229161360215975374259917315308577662215961670005725116845981841223176067219103818019091320131665778', '-204798018073795.653032577657324316352167874203292177439226270829205887964863306052020361361363816494740640243919259580961765731110330027445118019091320131665778'); - T('50550.28', '2121486761751437744953605262799815319.26905', '2.12148676175143774495360526279986586954905e+36'); - T('-889419638834002225522284149508929700476.172650890', '-424305840473677688810924633337769721763339720196709604554205748170445987058261155373223662505888873.82144770710851718819750629065194', '-4.2430584047367768881092463333776972176333972019670960455420663759008482106048667765737317143558934999409859710851718819750629065194e+98'); - T('-40760.965467', '-18942690834.2607446380197806', '-18942731595.2262116380197806'); - T('-21150396424144685285717528391770170039197157268878001492574230326386339596909894.1137843235394802222980337381818083735', '-6846760956505006842349358088765499381514.63658', '-2.11503964241446852857175283917701700392040040298345064994165796844751050962914087503643235394802222980337381818083735e+79'); - T('-5', '0.07853343679663140617550934559203677556312857282298714862538145367932278351423091814533627541733407490114923772813040559584747319434161156', '-4.92146656320336859382449065440796322443687142717701285137461854632067721648576908185466372458266592509885076227186959440415252680565838844'); - T('-1298989.19', '12967839159417800347248402834223327087001590.131521073718772815256761575699', '1.2967839159417800347248402834223327085702600941521073718772815256761575699e+43'); - T('-413624643703430579993792415.246', '-25047788866699.6065823802634', '-4.136246437034556277826591148525823802634e+26'); - T('-17002802435731054578579213050913648941015840438503895311063267366815.4760438', '0', '-1.70028024357310545785792130509136489410158404385038953110632673668154760438e+67'); - T('-0.0217487468807944116026287464540188864099826755097763413913523783549695801368408124880816141876938600', '-267928116215095659487396148857045537314243422826493604265786416560942224473274359760818137268229757952314852408659289722', '-2.6792811621509565948739614885704553731424342282649360426578641656094222447327435976081813726822975795231485240865928972202174874688079441160262874645401888640998267550977634139135237835496958013684081248808161418769386e+119'); - T('0.00000206058115026074270537347836316498830244149457757397506761076895276562936750930508221328', '-1156.25131151512762526101028', '-1156.25130945454647500026757462652163683501169755850542242602493238923104723437063249069491778672'); - T('8.52146', '8138996167927465829623641115119430224272617006293469478795384788419955586210311969.0911005211', '8.1389961679274658296236411151194302242726170062934694787953847884199555862103119776125605211e+81'); - T('-606792703514189222432342591095705024217062979215281726656222323623605437267298163559450093248410482334853425555387131742072494232274', '0.0000000000000075030205599538617170140424842633341870457951188905504524861678938064353730637261119815417488091644638014246916703266791', '-6.067927035141892224323425910957050242170629792152817266562223236236054372672981635594500932484104823348534255553871317420724942322739999999999999924969794400461382829859575157366658129542048811094495475138321061935646269362738880184582511908355361985753083296733209e+131'); - T('-1117646260533756972074615305111827894317502144279827222046925514965408293805196205607164567542139844488130299', '-8950710397293888186512785146937760727214387326213534247514635587853382873562774281822836130052011695722019446354140619086496577801', '-8.9507103972938881865139027931982944841864619415186460754089530899976627007848212073378015383458168919276266109216827589309847081e+129'); - T('17828132133.73128014639', '0.772844155917667013531128306734169323', '17828132134.504124302307667013531128306734169323'); - T('12409597293458966562697810991027046599347924039429686698803091382', '-127221396169370244097597696512688383579380113278994929674479641504219148260281326655899637.2600931768649107131099205359376530727886079199210691234204076', '-1.272213961693702440975976841030910901204135505811839386474330421562951088305946278528082552600931768649107131099205359376530727886079199210691234204076e+89'); - T('0.1848091145595494469555974732282088098544574667848', '-136107941934475938.0155896841', '-136107941934475937.8307805695404505530444025267717911901455425332152'); - T('-248947197724784384796094883777245432118187542578980970162991361.8625105461901333288766567084315189172715325691802', '1377349914239986.46343962270751134940329738658340912130', '-2.489471977247843847960948837772454321181875425776036202487513753990709234826219794733593218481097959715325691802e+62'); - T('-0.00000112660065275108830213180725478020363833427172529177370245297090375761920', '6361232368958886237.15488020607904', '6361232368958886237.1548790794783872489116978681927452197963616657282747082262975470290962423808'); - T('168065941825836172215.28538451779543155718349924675090', '-10020380537725454351590492009621817226308186635527799419512419.1501669170488428784662186956119820551', '-1.00203805377254543515904920096218172263080185695859735833402038647823992534113212827194488610820551e+61'); - T('25062938769541121.630478568522733066136124658086663843828053304849719245047', '2168109004490.945949015343314182595182591703278150478193635235835903', '25065106878545612.576427583866047248731307249789941994306246940085555148047'); - T('0.0000000127998547493889280163892364925927466380437055151407280212547688372695203587233106472126969776111613683412368835630499322381390265', '-21556437448948972049.5307444304476294707119579088623127759607498145900023581252', '-21556437448948972049.5307444176477747213230298924730762833680031765462968429844719787452311627304796412766893527873030223888386316587631164369500677618609735'); - T('-537626025690553743403625600240698190650679101924299218506047682820.61793992322367129916021469763743818692611951563337836906205744108', '0.000000000000078704422482734288110772342341176900316159707688584083247052769004920995218116598172244299647861085206345', '-5.37626025690553743403625600240698190650679101924299218506047682820617939923223592594737731963349327414583778338733062209354368856996752947230995079004781883401827755700352138914793655e+65'); - T('4936866312604172729288711401711374147250', '655874195881897624287118400860713782095501006074749065044610537625092.95069141905913994401259276838353408866', '6.5587419588189762428711840086565064840810517880403777644632191177234295069141905913994401259276838353408866e+68'); - T('-2382178805319965099104798246704598336951576480741895282006149578757854993414213685118', '-0.00000000000000002613467607235150454275071440605158933185803781754976383299500468377641084642463280487309618916557583346059257437473874331', '-2.38217880531996509910479824670459833695157648074189528200614957875785499341421368511800000000000000002613467607235150454275071440605158933185803781754976383299500468377641084642463280487309618916557583346059257437473874331e+84'); - T('-15946824.09950277073438320718451422330046117375794902861875105613916239700142602', '-0.00000000000010267855303483749668481765879881882622179514', '-15946824.09950277073448588573754906079714599141674784744497285127916239700142602'); - T('-581425628881991347289393948535594023431644044950894384975254331720033.7644030704523982311900267238328134677', '-999805005439068442805051046377911526225724977745109030159313147640897377464.83555602537429836574687154635825719', '-9.998055868646973247963983357718600618197484093891539810536981228952290974985999590958266965969368982701910706577e+74'); - T('60413295.642986556398', '-4226075045367317431795623702749235954814399556250656668352316.5728962846147542124931735298180367334281333643494998', '-4.2260750453673174317956237027492359548143995562506566079390209299097282167542124931735298180367334281333643494998e+60'); - T('-81794690209841974740.53672088428717597735688956390645130995150579644016165479898744379', '-7.88107898048618399872607957392671978662', '-81794690209841974748.41779986477335997608296913783317109657150579644016165479898744379'); - T('-1997717463163142285894367278389823014470638.3025530535651929616090187971946674805858924875948817390067051806853814519986698027983653385', '6', '-1.9977174631631422858943672783898230144706323025530535651929616090187971946674805858924875948817390067051806853814519986698027983653385e+42'); - T('-304875626379421812877053824267.89813338244318006612477499081284272413190571121891074444720931096507130284584180247091056', '-0.000000000000000010980103787919551156900136233767434931235794906561314315549096503926892808208116475271649840370149590820545219560834375927', '-3.04875626379421812877053824267898133382443180077104878778732393881032041944986345675683004217526385618394938306397803368208116475271649840370149590820545219560834375927e+29'); - T('-88815210861255646356014368338106338503849425126132.285406775673561905065', '0.000000000000000034992420410611731246495160913', '-8.8815210861255646356014368338106338503849425126132285406775673561870072579589388268753504839087e+49'); - T('-0.00000000000000237643259847411171950841188633341948147021355426920101030032158183296245118336593123026984501161674321953387313970740020', '-0.0000000874212145702142670184949308326411041422527293858413318840288404463319361607051392899032509388086790', '-8.74212169466468654926066503410529904756722108560548861532298507466535179936675904732691821690785240116167432195338731397074002e-8'); - T('-0.006555884028715480652', '6930118317156.576980190277', '6930118317156.570424306248284519348'); - T('39.384744166791242957726294455842839425402642808858550449900179430725398075422668018325305226767828926369540183994331444452642090521391283', '3260986081387.207629495556353019281390351729387452232726', '3260986081426.592373662347595977007684807572226877635368808858550449900179430725398075422668018325305226767828926369540183994331444452642090521391283'); - T('3908267232516297546694850213843945511916410859719238136818722842077.27108076292427902546404238314424734106746892397683459219351842029663495194', '-0.00000000000372286358808905369841368779659136965109619662993128616667816952276941560286526066255037987308726016479323693533782656017305522143883165700131792', '3.90826723251629754669485021384394551191641085971923813681872284207727108076292055616187595332944583365327087755432573839556358713412995678241723058439713473933744962012691273983520676306466217343982694477856116834299868208e+66'); - T('-0.00001556397239423792402602941437191887477933365239361893990546595775376870987107277583', '-1732082517354208969230613795180012699705122410188783671659220771290170536520910', '-1.73208251735420896923061379518001269970512241018878367165922077129017053652091000001556397239423792402602941437191887477933365239361893990546595775376870987107277583e+78'); - T('20451329027854657865397803520110269731953546381423082243753661273233534094096458728774066484280346143633534282606929883', '1.37062391834155371473359912213772362707849619840251030918103616690753987794703765279270817110400101918287849263050336091', '2.045132902785465786539780352011026973195354638142308224375366127323353409409645872877406648428034614363353428260692988437062391834155371473359912213772362707849619840251030918103616690753987794703765279270817110400101918287849263050336091e+118'); - T('-9873613763574093.9169949677113266651552362204071722363114406302496589482078244525416517', '-546631047066885391316821969502606459323760036081517906369260562129.5282969018129257869570273191088510708842914399537183835952083014376', '-5.466310470668853913168219695026064593237600360815277799830241362234452918695242524521122635395160233071957320702033773318030327539792517e+65'); - T('-720103743977684216550279573635737782.371525679181701893280139772', '0.00000000047196', '-7.20103743977684216550279573635737782371525678709741893280139772e+35'); - T('-124523382475.065647339231367286548664060598351481238512537358040678937053065205', '267195207211327546143.99593799833381494', '267195207086804163668.930290659102447653451335939401648518761487462641959321062946934795'); - T('-669248421565027510098621757579904855957549198616536004694615.801532771296796860509827700071860799103269705247335116543', '333905925959634844', '-6.69248421565027510098621757579904855957548864710610045059771801532771296796860509827700071860799103269705247335116543e+59'); - T('74741.757595631932381120479050874298796374442246866101939364', '10920811144639.430670345', '10920811219381.188265976932381120479050874298796374442246866101939364'); - T('1170639975951201522249787446299288957.534087576257621574901157627904404', '-0.00014785053034279838988159517', '1.170639975951201522249787446299288957533939725727278776511276032734404e+36'); - T('240641615318369852633021813201283453473338354696847465428407816540707799946328465329158700582983365200972956128970708198340862470221701303619', '-0.0000000000000000069337247648616552808723398415008620822832893391786175057036755718378355', '2.406416153183698526330218132012834534733383546968474654284078165407077999463284653291587005829833652009729561289707081983408624702217013036189999999999999999930662752351383447191276601584991379177167106608213824942963244281621645e+140'); - T('111714245279259151600970278454866645262571826000337873347902770371946919658476476.581635152136516883108103196', '-145713944701659169049317661586406655886350.64439112401759220725326887023191998402271373838960301529', '1.1171424527925915160097027845486664526242611205563621417885345271036051300259012593724402811892467585483432576808001597728626161039698471e+80'); - T('0.00000000000000000011659916431504181998777280021990151674872574004317563534059818105024140361220410041950905384756907730822832402571557634171797064450234198869785', '0.0000000000000034973095978104435865425237181247213055722049975492', '3.49742619697475862836251149092494120708895372328924317563534059818105024140361220410041950905384756907730822832402571557634171797064450234198869785e-15'); - T('5208299735981215934383073700988540115', '0.00000000008193999192179', '5.20829973598121593438307370098854011500000000008193999192179e+36'); - T('-0.000000000000287395113688235501898364131112180654248398999683488052724240112623987258282732482937', '-0.000000000005224156433448505010390917879000913540363966165400734673984060714544377832355795421', '-5.511551547136740512289282010113094194612365165084222726708300827168365090638527903937e-12'); - T('251290.029', '0.0000000408265742458950413927784669187015196483849964746', '251290.0290000408265742458950413927784669187015196483849964746'); - T('-0.002069526456699789023016398781994820749838585707371628', '-208989.20687136738198249707358292330050304648320312788', '-208989.208940893838682286096599322082497867233041713587371628'); - T('136830053104872291586007040221524635644507855229364036.990085839244669865877563203743313609845467275010746564518697656354953714652400', '12996360060717584879190082832087158897977012928919981.1724803374445157382323851607362941658942137', '1.498264131655898764651971230536117945424848681582840181625661766891856041099483644796077757396809750107465645186976563549537146524e+53'); - T('349923146008625248221940071805133632424745448085367309153304.41451', '1.279845995348543772724126048570984529358929917199046395358884958125978504501534072647803741667566840006664141118201898026492588582829', '3.49923146008625248221940071805133632424745448085367309153305694355995348543772724126048570984529358929917199046395358884958125978504501534072647803741667566840006664141118201898026492588582829e+59'); - T('-0.00002588190901774483141446130106109665568218409839877790718167670204180165388892638488618624373249215908731', '-0.000000000000000998380445484244673146797637364810042331013877503942848237747500650941845596181353662072946500712838803596129029770361640568986086478118', '-0.000025881909018743211859945545734243453319548908441108921059180644890039401389577326731782425086154232033810712838803596129029770361640568986086478118'); - T('0.000002397702115545082706325', '-0.86184468879219410762921439972937635313400330685547662030210928411728749240902108881486043419424702673819765398803611924680684916244185716500', '-0.861842291090078562546508074729376353134003306855476620302109284117287492409021088814860434194247026738197653988036119246806849162441857165'); - T('739247350528774318310976592372378823989.9340970329512293', '0.16461323830286423518914252503718472208992620706491311143767005406182583700046088073642382183228439964918345692170788', '7.3924735052877431831097659237237882399009871027125409353518914252503718472208992620706491311143767005406182583700046088073642382183228439964918345692170788e+38'); - T('20138770597416725450254724328732818742267620348802456988572150217738319484193183724229804103329780221759485486678', '-789269493613323078997155252278243776415270697547093524400899466707939123164245744251', '2.0138770597416725450254724327943549248654297269805301736293906441323048786646090199828904636621841098595239742427e+112'); - T('0.00000000000000000077718007226574178859573156113273718366023940333047610', '0.00000793842663906287702694882951591808277980436371652228248293328108479174722056639404425886138539535746075798843345', '0.00000793842663906365420702109525770667851136549645370594272233661156089174722056639404425886138539535746075798843345'); - T('-0.00073004266755307447297787100885736643137065171791847775170199', '533767943554264575564059388781105481229849071443170662645468384072829601890382711597239.43317227373401753588313752941835310264692801', '5.3376794355426457556405938878110548122984907144317066264546838407282960189038271159723943244223106646446141015965840949573621555735828208152224829801e+86'); - T('203795797050226528701909939354095.74227652473566285394054153851636316880904908195101127405638217584507290263629702856344914721596751573682519', '1048176497643', '2.0379579705022652870295811585173874227652473566285394054153851636316880904908195101127405638217584507290263629702856344914721596751573682519e+32'); - T('-88244004722847480146822008275080880695915873140049053843555316989873895145229459150435483330020885756477515260816717989568792030863738799712004', '0.0222020450217264733443', '-8.82440047228474801468220082750808806959158731400490538435553169898738951452294591504354833300208857564775152608167179895687920308637387997120039777979549782735266557e+142'); - T('-245.330813553080793', '-139455315144533860778775215600928891795189892914202233172560603256768538146961881693882554366322835347536572308601', '-1.39455315144533860778775215600928891795189892914202233172560603256768538146961881693882554366322835347536572308846330813553080793e+113'); - T('1312620952926614444601139109837919862847383911012476338291408744344284710456350.61901295', '0.000000005001841441858025051749066429', '1.312620952926614444601139109837919862847383911012476338291408744344284710456350619012955001841441858025051749066429e+78'); - T('-0.00000002568121501817024789950645', '0.00000152064801516710974357034365714164447372286990018294642975122815566995939556502510124016256086916899095831799319898986550479847', '0.00000149496680014893949567083720714164447372286990018294642975122815566995939556502510124016256086916899095831799319898986550479847'); - T('-50146741.71136917438523439037364041570643531039880309166796', '721.58', '-50146020.13136917438523439037364041570643531039880309166796'); - T('-0.000000000031373829058590280763397830914839643150936549070276134150319113360057425916282823335964570132205357792953166020744035018731306854352936', '1209934516502680876038974890161267538909081686211586564144614326182360480572106031540130067011132046106334621001880794855659284874', '1.209934516502680876038974890161267538909081686211586564144614326182360480572106031540130067011132046106334621001880794855659284873999999999968626170941409719236602169085160356849063450929723865849680886639942574083717176664035429867794642207046833979255964981268693145647064e+129'); - T('-13404342125936188871742118602022353067169949299128900358060758959144.618999657876884344030397439486785962997196322120897869261859638385586348924333', '-168915526978312.650128129957132282649873584573819887866036969239069391528581261172175429771', '-1.3404342125936188871742118602022353067169949299128900526976285937457269127787834016626680271024060605850863233291359967260790440899557761778695333e+67'); - T('1806842795835990618047801.084576277957835712505618234152320757352128501462413034062746347', '-50734288417028257924421286860848404602443885854272475391326979005189668017648768244414775061314743386961522762.585374718651305701111', '-5.0734288417028257924421286860848404602443885854272475391326979005189668017648768244412968218518907396343474961500798440693469988605381765847679242647871498537586965937253653e+109'); - T('-116120201222725247610527954599536747256108402740643449687724143269086567616449171607864628957429974416', '1148190510672125444192340349744778820699595561256574541295058422369656677509037208045122028374935585403541656043987495821745', '1.148190510672125444192224229543556095451985033301975004547802313966916034059349483901852941807319136231933791415030065847329e+123'); - T('-665059516301467503087062204795807129205981985820520012687625179.56870702735969931519884226663966750454', '293092076876324270859.1678050313417760917885816996452', '-6.6505951630146750308706220479580712920598169272844313636335432040090199601792322341026056699446750454e+62'); - T('-151941033837572720599600925337962250720110163460498264898016203736097072978877965550197312865391818', '275519398845322762752039373616165590950134853231913357677442.98089023579266433338582691582272222226713269975686273608935285642960', '-1.519410338375727205996009253379622507198346440616529421352641643624809073879278306969653995077143750191097642073356666141730841772777777328673002431372639106471435704e+98'); - T('774.27298241935872782935734853935110700980034942643', '-2335613505940656938918706780962782666653609805431040481805.54016', '-2.33561350594065693891870678096278266665360980543104048103126717758064127217064265146064889299019965057357e+57'); - T('-0.0000000000000000003606517118223376107369897317076138705797620611885910564859903965167670077845554058709312065326542523687696158170393314', '-1057235201.5625889131220869434', '-1057235201.5625889131220869437606517118223376107369897317076138705797620611885910564859903965167670077845554058709312065326542523687696158170393314'); - T('673588976883236537490.1143689352121199626156550908385672312863492899095087287923630764608919202964646650938598591666124915', '810684376454419924392927167848507180923498918725351613660889567923.47605095181300135828', '8.106843764544199243929271678485071809234989193989405905441261054135904198870251213208956550908385672312863492899095087287923630764608919202964646650938598591666124915e+65'); - T('-3430020671178955527172622925417363583260241197.62027095120829845', '-2697651899209144982439207207158758256041163754489319553122389855760271821650344473467567943237904607070691739749282365941241955206', '-2.69765189920914498243920720715875825604116375448931955312238985576027182165034447347099796390908356259786436267469972952450219640362027095120829845e+129'); - T('0.000000000000000000386684190', '-0.00000000000000593500383841354', '-5.93461715422354e-15'); - T('-229553467063496173115623569488071051955397518369782894211290517387417359092419.21316953918885760546743923347047910041156791448271162', '128761823394.73391412805150185026077404187271056727840511587820472574863102356882320762518910948767394645397112340047229286811934703310025622306', '-2.2955346706349617311562356948807105195539751836978289421129051738728859726902447925541113735575520666519159776853313316279860450689425136897643117679237481089051232605354602887659952770713188065296689974377694e+77'); - T('752803651337807242880562206786.554894468', '-0.000000000000000001071337', '7.52803651337807242880562206786554894467999999998928663e+29'); - T('1327499528941.259705731396165260452862352568124098842440934493864336643088192293192971501913307764464886787116200010928852119632015468364', '-0.0000013012400459295541997244614408586478387764368200', '1327499528941.259704430156119330898662628106683240194602158057044336643088192293192971501913307764464886787116200010928852119632015468364'); - T('-42732826522401556404680286738458727450161584.56982929732944313055951751542753245303762787700081314483', '-0.048575929228921161125311723255416867769014200391591416962565880220141310', '-4.273282652240155640468028673845872745016158461840522655836429168482923868294932080664207739240456179256588022014131e+43'); - T('-134317115975228516279277369440412329142525813492681218176.452257906478095711445159604268249481814005710', '878.87016124066018104272829846171161822902416', '-1.3431711597522851627927736944041232914252581349268121729758209666581791466871686114255663125278984571e+56'); - T('-67249264605177190041089081168585468792215793614566298512516668756953699746352828585714616446517294544062645676845293.91', '11785.189223441658736456882609485294922576241169', '-6.7249264605177190041089081168585468792215793614566298512516668756953699746352828585714616446517294544062645676833508720776558341263543117390514705077423758831e+115'); - T('473845447573029801116507496764870227913948278575637638312271.6929093', '220256599636715846396470132047447071430762023364054132738307.92410966839175642212437153019718871180', '6.941020472097456475129776288123172993447103019396917710505796170189683917564221243715301971887118e+59'); - T('61663987226727831177358451280.1273785663169955851813593', '7750.4529567880816153892714518857989477603684894511929835815714039337396479', '6.16639872267278311773584590305803353543986109744528111857989477603684894511929835815714039337396479e+28'); - T('1114249782085628259131.6300784647405324495788', '-75441254269515041497240125862191629.18821756865035216838014718712510162118417621758193335236088548825411631090241783', '-7.544125426951392724745804023393249755813910390981971880134718712510162118417621758193335236088548825411631090241783e+34'); - T('-47284766640683124441541777476988779051324489666892557826451642191773394572968326419750395845015488519009501143710.226604466706051616676759471', '-178533979356035013007.0486021615920523090681110580689173330395242698234732472413898657172920542549863', '-4.72847666406831244415417774769887790513244896668925578264516421917733945729683264197503958451940224983655361567172752066282981039257448705290689173330395242698234732472413898657172920542549863e+112'); - T('86971785918916738535599981140236508672686072922404606596498347463786815664561636214', '-38790942580106273917029.8616351336817911518100068189254182509141591442742642', '8.69717859189167385355999811402365086726860729224046065964983086728442355582877191841383648663182088481899931810745817490858408557257358e+82'); - T('229890914939905533517994656115939439222611214166185047720.6737', '-16450908510999308489324339587686508934693633813727800191296126619327316733314370883200772189175967292716357616129.25956476613892564270457543510303499', '-1.645090851099930848932433958768650893469363381372780019106623570438741119979637622708483274995335607855017256840858586476613892564270457543510303499e+112'); - T('8624299879022265728690568197694576473349674764163914006555775202613.80066', '-1951918312957524571038442996130836809607213863913860985460832910117284832599299718784244014.9462', '-1.95191831295752457103843437183095778734148517334566329088435956044252066868529316300904140114554e+90'); - T('0.000000000001791442922101442150265', '-176219478666778.39032', '-176219478666778.390319999998208557077898557849735'); - T('-0.0000000000000000000450909281658069443034906463413806497945746964537569542795485785087816', '20059612657232793812777346178916639350613903200274271932748642060630002343102688319925466687857659887751178879826484844955146.4794139791133416216349437', '2.00596126572327938127773461789166393506139032002742719327486420606300023431026883199254666878576598877511788798264848449551464794139791133416215898527718341930556965093536586193502054253035462430457204514214912184e+124'); - T('-6787468140564734605294950923721904660396026978942519331890016886817683748193913278435340067132052148355490986326961525834411933314297910293075891258', '299875808414865644293530981481903399783597394891051377970871372993113352087', '-6.787468140564734605294950923721904660396026978942519331890016886817683747894037470020474422838521166873587586543364130943360555343426537299962539171e+147'); - T('-2985845195375048154175460145131625566631330811.0698198381350592343482301558903611521655008133682589725943686764286694288782', '0.0000000000003440896409210193126584537498187185057931457434599306493995078695234961055215715664902', '-2.9858451953750481541754601451316255666313308110698198381347151447073091365777026984156820948624658268509087457792699210086765038944784284335098e+45'); - T('54523776480140693828539812402923.03280118600797412859863998481055730526509253892247361691821925554', '-3018017693744641785170272539537468727331662967020516461365187921.622252481531570142507295', '-3.01801769374464178517027253953741420355518282632668792155278499858945129552359601390865501518944269473490746107752638308178074446e+63'); - T('-148950590810862085091278929767052107224.8773813216218095795711623868958220961874', '1.75192', '-1.489505908108620850912789297670521072231254613216218095795711623868958220961874e+38'); - T('194487565128888901387639549948511413965636783508366826662059481869489007007469884500747433533356290730733602216171', '0.000000000000000000012232074647167060238846099337052578273155522711981842441546203086466766954706886327921', '1.94487565128888901387639549948511413965636783508366826662059481869489007007469884500747433533356290730733602216171000000000000000000012232074647167060238846099337052578273155522711981842441546203086466766954706886327921e+113'); - T('125779680121395715709804872384269463897503936971384019.82361436591484229964552907887172032', '-10705813706184352649413600364408885130948697893', '1.2577966941558200952545222297066909948861880602268612682361436591484229964552907887172032e+53'); - T('-2218129701029502833268536.3661385527823829459113120296928740', '25227558478464802399374718020711143953033396', '2.5227558478464802397156588319681641119764859633861447217617054088687970307126e+43'); - T('15922278874844168795624334393750706784541723182329429804868920436645833815588763261631529887040208280', '-26296.887413892620188356349250229', '1.5922278874844168795624334393750706784541723182329429804868920436645833815588763261631529887040181983112586107379811643650749771e+100'); - T('1869337163952851887099278621758788.4912775488811143022866151909022695202327782530199655924124637283188619937985055306138431', '25.12', '1.8693371639528518870992786217588136112775488811143022866151909022695202327782530199655924124637283188619937985055306138431e+33'); - T('-0.063341123812589258651794426063119957591863528264980035743077602252627967706982211651872386199270743459561294', '-0.000000000068714090541923937797208713394623709878340222046720399207', '-0.063341123881303349193718363860328670986487238143320257789798001459627967706982211651872386199270743459561294'); - T('-123065986062521895461889579855429054876.865438792794260927192006', '7084594017255215876752497968505767888079486468316419822128516563096248999466202123.38787540885020434', '7.084594017255215876752497968505767888079486345250433759606621101206669144037147246522436616055943412807994e+81'); - T('179397967161885408347722783468000236145781976956498009525966031884761882791548055245739198861467543753736467441189809830950974868855035870976.038552', '-6573750410552527157063328131505255371227573474471234861827269.61525370370996879661223', '1.7939796716188540834772278346800023614578197695649800952596603188476188279154804867198878830894038669040833593593443860337750039762017404370642329829629003120338777e+140'); - T('-139353860859081662533478815947566213452966893244463520929326236932221117460953128298317531935014131121470.4619756268309', '169812848393858427202383142897502241915472009842575593156979023589.9908950026432880351156036902370299251473942264824787465775921562579669735', '-1.393538608590816625334788159475662134527970803960696625021238537893236152190376562884749563418571520978804710806241876119648843963097629700748526057735175212534224078437420330265e+104'); - T('-0.00000000056135129922386681', '-595119376867293381235464924', '-5.9511937686729338123546492400000000056135129922386681e+26'); - T('9999400699648583439.910165407231452805204397263', '-239336712014958618084045176038.81761359335921757157899131356', '-2.3933671200495921738439659259890744818612776476637459405056e+29'); - T('0.000002623585411494924528522745861928371567645115623878', '-5636993000244072951029.8588310419570237', '-5.636993000244072951029858828418371612205075471477254138071628432354884376122e+21'); - T('-16469.08018532953044652581289843852712919053726120839851886233541371893823', '6420210.71382431387667941690927', '6403741.63363898434623289109637156147287080946273879160148113766458628106177'); - T('0.0000000001500611664251128666574118039477481282151196384889645376085403596652469864102626694482747', '263135384759861159877959298119330040825421757978037356875485701572152302094162243110', '2.631353847598611598779592981193300408254217579780373568754857015721523020941622431100000000001500611664251128666574118039477481282151196384889645376085403596652469864102626694482747e+83'); - T('-12317435659483.46', '-238178727623943.57770836536163790335018945716578328065826254', '-250496163283427.03770836536163790335018945716578328065826254'); - T('705138698371479924718654705441277066425', '-264458728957414529691672105440971342620756281273769616148413659.83139211549669420724473557409844984235683219270687462430060909545589521338825', '-2.6445872895741452969167140030227297114083156261906417487134723483139211549669420724473557409844984235683219270687462430060909545589521338825e+62'); - T('26845297854.21830300459071341439856406557876499767147640691523616826235445154220875683891282566002689437474534485000263914', '-787376261006598490249180340720309857956285707959849.0204685624653359640496048535548108297789532801386418120', '-7.8737626100659849024918034072030985795625886266199480216555787462254965104078797604583210747687322340564373764554845779124316108717433997310562525465514999736086e+50'); - T('55036049768.146079287001237352665049000674092', '-22143566056427860768945972894580679205849885116613091602005627.33897358443738987438843476838059361711849053157259882779343', '-2.214356605642786076894597289458067920584988511661303656595585919289429743615252172338576770650161711849053157259882779343e+61'); - T('-299420594788150782543317652372306174815941523345478009592090041773731019434882.753119389560259765940107169762142160679052728098688521999921', '-12453366463782072599491184208879912917463798673347144858330325.3505439835880291946926163036554982195666987139373567106718470730123422', '-2.994205947881507949966841161543787743071257322253909270558887151208758777652081036633731482889606327234734176403802457514420360452326717680730123422e+77'); - T('-256022815746044576351192361407997374095362780421849294332421070473692422546466754095230.656295542710250921847773406', '2439108134.33476347036328940422149059899605979832', '-2.5602281574604457635119236140799737409536278042184929433242107047369242254646431498709632153207234696151762628280700394020168e+86'); - T('-137304230559003045184479307675479065631585995407517838007075545485391216662724836', '-1173188488432045163948013790.3943256082040520817421175529478290364828174703361614075880892748696574370905742309087558', '-1.373042305590030451844793076754790656315859954075178391802640339174363806107386263943256082040520817421175529478290364828174703361614075880892748696574370905742309087558e+80'); - T('520707804236215170390228230926413098433541569396930548508375720908453157589569499547054273496534756616492929935502789', '275182891299865137595.3277925634463705149893539835817542834549123082412850143300233066529878447078650880805064450173373918062760558', '5.207078042362151703902282309264130984335415693969305485083757209084531575895694995470542734965350317993842298006403843277925634463705149893539835817542834549123082412850143300233066529878447078650880805064450173373918062760558e+116'); - T('2960407629256095014394492264783919104375530133643554797532898.80192159867955337779238068661889924', '276684036811079285530960359872097261579493580.0498287546202754687941154667048', '2.96040762925609529107852907586320463533589000574081637702647885175035329982884658649615332369924e+60'); - T('-5517355901446910.93833484348629903096547', '-642213064278646161225254.78548483470', '-6.4221306979600206267216572381967818629903096547e+23'); - T('152801618545615441308342159364435799274895358751942316139180186', '-44665364463201090323324.0002892895', '1.528016185456154413083421593644357992748506933874791150488568619997107105e+62'); - T('-42990335950341162574017016', '-155734841164152934379337800729168607491698641563818839018593201886.9108295077085945123926518226547', '-1.557348411641529343793378007291686074917416318997691801811672189029108295077085945123926518226547e+65'); - T('42132979000424460466648083857741221621925059', '230035200616600947476235404386815897149843926902113349799669418017872910933828', '2.30035200616600947476235404386815939282822927326573816447753275759094532858887e+77'); - T('-13721903019805428754977193786.436261994441376688889424250392449552098872713999965025277', '10194877.68498209368023', '-1.3721903019805428754966998908751279900761146688889424250392449552098872713999965025277e+28'); - T('0.0000000000000000000124951715848249957980344035116', '265848190673836152145387.561232311400411988900021332089088465444147046461212646850', '2.6584819067383615214538756123231140041198891251650367391346124218144997281264685e+23'); - T('-2478.622067383552773557059143603127982', '0.32513599534141365489000782897237000600555505333921918961022131484515789518698137637587', '-2478.29693138821135990216913577415561199399444494666078081038977868515484210481301862362413'); - T('1279542454.892945577837995361708396', '-135890698074837524994261181604433.067602982488449328126084049766962', '-1.35890698074837524994259902061978174657404650453966417688049766962e+32'); - T('0.00000011558150572741272723618033490943108053756815783338338515794075800230701762335698251644854707498749273387290233658497030939253228419', '10177968039270056306413680.184343176766129455291207155884626542169167703074423510915329626878514', '1.017796803927005630641368018434329234763518270393439206496145160024824064258134429871478481927200230701762335698251644854707498749273387290233658497030939253228419e+25'); - T('-1435068.618647657046101438708930395218818069312124176746881282174539906140539486722465500068653075714727202174518522871035823011751', '17.77', '-1435050.848647657046101438708930395218818069312124176746881282174539906140539486722465500068653075714727202174518522871035823011751'); - T('1133468285512298621716517199739886057755521547545846865283277167663070426262818957724352964984613242138379271360556', '-141537307411.00826429536495677705445', '1.13346828551229862171651719973988605775552154754584686528327716766307042626281895772435296498461324213823773405314499173570463504322294555e+114'); - T('-3578677705738240793482085438614614551372365641536961576081303950220125233969517175095644.5329094147681', '6370326210773977367247462308.43303220494101174275111504449143', '-3.57867770573824079348208543861461455137236564153696157608129757989391445999214992763333609987720982708825724888495550857e+87'); - T('4539369410251014415308963272777018911975282268127892682157655.2687008509', '0.000000000000000001809319965416452365878526603785327342157425587339349', '4.539369410251014415308963272777018911975282268127892682157655268700850900000001809319965416452365878526603785327342157425587339349e+60'); - T('-11612662163115798192491748988208694545917762161675688590981743152130989015346035128837953127650326301679404956035505966175985535696091516284466656479', '-129128951232580369482047739685813992608602054001765557698178402197589395906493483213995', '-1.1612662163115798192491748988208694545917762161675688590981743281259940247926404610885692813464318910281458957801063664354387733285487422777949870474e+148'); - T('0.0000720244123748728799957336555523697', '71791325249354506431814914086989', '7.17913252493545064318149140869890000720244123748728799957336555523697e+31'); - T('-133560.04', '0.0364781487240002253276365093066436254283459521449826381477605260349961957510696178085420533616152821352777161063017', '-133560.0035218512759997746723634906933563745716540478550173618522394739650038042489303821914579466383847178647222838936983'); - T('224439133349456441836858561541114452976410738191588.76028', '7143422387100306585012321998.95338744534500001350', '2.244391333494564418368657049635015532829957505135877136674453450000135e+50'); - T('0.000000000098363222378328329588864342385890675532349142951521770288606050467173967001464527333472294637844', '0.000005565523790105586010252525454', '0.000005565622153327964338582114318342385890675532349142951521770288606050467173967001464527333472294637844'); - T('-19302672950888869853468603175885975100580447783425209560751846890885724469162939072204904025589809680230949.15', '-5221907579579195185631992055573', '-1.930267295088886985346860317588597510058044778342520956075184689088572446916816097978448322077544167228652215e+106'); - T('446571007966420189521982224619283959966447939678911167542457919503539937579809547715586812124362669', '-0.000000001532941453246004602861225513798223406668763246640071116663063458244535088282298106516453270820501460262785607', '4.46571007966420189521982224619283959966447939678911167542457919503539937579809547715586812124362668999999998467058546753995397138774486201776593331236753359928883336936541755464911717701893483546729179498539737214393e+98'); - T('162256387512654913999487367376656275516', '-16092263592753754060348826948877883484399357352376898503109928037035273000095267537045095647020.9340480402341251915539575258', '-1.60922635927537540603488269488778834843993573523768985029476716495226180860957801696684393715049340480402341251915539575258e+94'); - T('-86.282711884059841689767705467465544410310216259432751729', '-92429065419108217418705866104650901.759952292192027196592545226813152124130603195434172370', '-9.2429065419108217418705866104650988042664176251868886360250694278696534440819454866924099e+34'); - T('-75868293.338801243263000230664880224491442311102621282662689408530004543', '2944972.7213068711096384504382609733072677', '-72923320.617494372153361780226619251184174611102621282662689408530004543'); - T('-238444972635059326925252856448297027255504596325494840989337749695326400426034906266359680165724.6162269656460992471659583387303201989744940449', '-63316025717469', '-2.384449726350593269252528564482970272555045963254948409893377496953264004260349063296757058831936162269656460992471659583387303201989744940449e+95'); - T('-0.00000000000000000002628376740857869992666514908906633928490609752241821541445544366572977726597123951321896262451176771066761534225489543173636033414059', '-0.00001057742323776455463981263889953456044073157406788745965110714274589491766184028326935', '-0.00001057742323776458092358004747823448710588066313422674455720466516411033211728394899912726597123951321896262451176771066761534225489543173636033414059'); - T('-0.00000000000003565805735839291765636742503', '0.000000000000000989774781039626', '-3.466828257735329165636742503e-14'); - T('0.00000000000000375655426038511007746679974331400659776884912884102085329769227537463698444', '546526458201961217312998279716410991.2240626147007447545948388', '5.4652645820196121731299827971641099122406261470074851114909918511007746679974331400659776884912884102085329769227537463698444e+35'); - T('-14278318423785251476284397565212.1237964463782332', '-37174052283987138.47044217178181655468224887601671623199409260448279688190513294184710815453374043139975669500607120979735080911231772347', '-1.427831842378528865033668155235059423861816004975468224887601671623199409260448279688190513294184710815453374043139975669500607120979735080911231772347e+31'); - T('-17330.438895896038328483940004', '8350320541724405487824535323446674.061386758095913411145749626626909634263800865346657', '8.350320541724405487824535323429343622490862057584927205745626626909634263800865346657e+33'); - T('-0.0000000000003788156589604414602956818964327013143296398421560231778437969245', '1634246393878053828481992729777312078472156.145364321882169640446334568077598604110397446683352082023376014305304686515469544910814539917743927216291855', '1.634246393878053828481992729777312078472156145364321881790824787374126617302922213964745369022442181219991127460889590969544910814539917743927216291855e+42'); - T('408110915553257916118522792717017858639986473034925463411181033631049938756007592', '-4438008.684761039161', '4.08110915553257916118522792717017858639986473034925463411181033631049938751569583315238960839e+80'); - T('-204903173380829791053251747', '-191455970489532344774803952466.94684645095468153608792233241808335603853244943133837112979971481605', '-1.9166087366291317456585720421394684645095468153608792233241808335603853244943133837112979971481605e+29'); - T('132721140690308763835711368030783660696277559510011717622014.3314196', '0.00554064704637147709273658476408607464726088564072789893070411751226529035714577466777850716116505710506906049773777298273003529699', '1.3272114069030876383571136803078366069627755951001171762201433696024704637147709273658476408607464726088564072789893070411751226529035714577466777850716116505710506906049773777298273003529699e+59'); - T('0.0000000000000000265193728860055071583880736', '-0.0000000000000000011892979550800567635892667658882072063', '2.53300749309254503947988068341117927937e-17'); - T('1924004.96231', '-7445082351600096.3980954490079933041653479391080501268670868688846572103759932357179141189615092741415678649052246409361594010562380231156977081147310', '-7445082349676091.435785449007993304165347939108050126867086868884657210375993235717914118961509274141567864905224640936159401056238023115697708114731'); - T('0.000000000000000000013903352680411740283535242027183387301940111406117407562975303647341986279', '0.000000193241459485855551124461468088220083733257451375352357494658457700846322832086915983440402233205', '1.93241459485869454477141879828503618975284634762654297606064575108409298135734257969719402233205e-7'); - T('-0.000000000003326499271235431532653228418183469394009927691863875127864766277232493921924691425777066908583580479571', '38538.5', '38538.499999999996673500728764568467346771581816530605990072308136124872135233722767506078075308574222933091416419520429'); - T('-20818471791668358551694729332150711.171307610', '-0.00708772819104515753090752104339593647529198186926535557761440185947368079580', '-2.08184717916683585516947293321507111783953381910451575309075210433959364752919818692653555776144018594736807958e+34'); - T('-752467347549701119616683978206438108', '0.00000000000000133182829836217784813241401889873', '-7.5246734754970111961668397820643810799999999999999866817170163782215186758598110127e+35'); - T('-71331.43876400219162800429885965449977637326182916850599237355086577534159328324037916425312333490817913501686724307', '-0.0000032139466257383829211495727047401282848726415697991943119851858819503701337097998682466465136331', '-71331.43876721613825374268178080407248111339011404114756217274517776052747523361051287405299158155469276811686724307'); - T('0.00000000003870179783985381063243324820910313', '-548412148702636016270138827097973238704618012095820424598631550144908156181914050173920.55528708694731', '-5.4841214870263601627013882709797323870461801209582042459863155014490815618191405017392055528708690860820216014618936756675179089687e+86'); - T('0.000000000000000159733765895', '2415466722403145928603501563265788955.65674020714185313333653211954046063741077995756304216513522037423497068589560605814929217258491053368146', '2.41546672240314592860350156326578895565674020714185329307029801454046063741077995756304216513522037423497068589560605814929217258491053368146e+36'); - T('227954506189379566132.3531049565054147523709893227464306251862462550700080825380345883105195752839361334678871895593932042077071912003898512892', '-0.000000000000000243005506005006402417515376832343523332630896909903184829530830475018969291441011676442441851780434411064620687143851249145363683686213768587121', '227954506189379566132.353104956505414509365483317740028207670869422726484749907137678407334745753105658448917898118381527765265339419955440224579312856148750854636316313786231412879'); - T('7973988940224355015214336919379953485029536', '-46903881814522001507986816.99248409698766603253677611753397276067931254075552578', '7.97398894022435496831045510485795197704271900751590301233396746322388246602723932068745924447422e+42'); - T('-28179553528461976563', '248852934964030510956645790197846644600695689011471340357218184219306881752129281687476727', '2.48852934964030510956645790197846644600695689011471340357218184219306853572575753225500164e+89'); - T('-0.00000038749442098332718476018064732023168357745188079514035581267126125927216662843067618614699072618739224559403486391045982462716534370262', '4925006594013147257537583640291677799280156031827105', '4.92500659401314725753758364029167779928015603182710499999961250557901667281523981935267976831642254811920485964418732873874072783337156932381385300927381260775440596513608954017537283465629738e+51'); - T('15886467257912495.75689320719759657353210920879083109402692609', '-1849440876713050806208487397730416627460.30935631710582208341731553877239172695260308652973787159595347848456382322348819127147788006459039327206090843', '-1.84944087671305080620847151126315871496455246310990822550988520632998156063292567699652973787159595347848456382322348819127147788006459039327206090843e+39'); - T('-5026233483715918355642138258166736347547068019235638147637409254751306580678549839', '0.00000000000019779052536990808660692', '-5.02623348371591835564213825816673634754706801923563814763740925475130658067854983899999999999980220947463009191339308e+81'); - T('0.000000000000000000062846132155934866382475838803414329167925640917238247929247187597144605858850', '-28375804842138366819355751075050288391048198685203076654182288294782980828652856275283802825108048295625084622829828083365524827680002246249410431', '-2.837580484213836681935575107505028839104819868520307665418228829478298082865285627528380282510804829562508462282982808336552482768000224624941043099999999999999999993715386784406513361752416119658567083207435908276175207075281240285539414115e+145'); - T('-48863470201397.143927278109695419367309919023804132', '-168361072783150231412254024286758558795677828805121174243492869928073465709719014.023363549742186056665143055249248475718140936364', '-1.68361072783150231412254024286758558795677828805121174243492869928122329179920411167290827851881476032452974273052607718140936364e+80'); - T('0.0000000000000018997661230877089423253849452578256073300966468605209561343912897439707821108359408910538145364970969403440848507153309', '-0.000385522197', '-0.0003855221969981002338769122910576746150547421743926699033531394790438656087102560292178891640591089461854635029030596559151492846691'); - T('865008.237475', '-141572245488815215559.668813721278969595937436750693180747505198056296244191362365981067', '-141572245488814350551.431338721278969595937436750693180747505198056296244191362365981067'); - T('4531430332.974369182979674290738630476176408845410151617472188112662759', '-0.000000000000002990088033905170812634080622222063618156981784899967819720909679583969232226858480299674669693921077115362022886', '4531430332.974369182979671300650596571005596211329529395408569955680974100032180279090320416030767773141519700325330306078922884637977114'); - T('1713604693153132011650052009647770010715862661891416010.39872031838645104', '-5209348059320160498592207950890250846.48', '1.71360469315313200644070395032760951212365471100116516391872031838645104e+54'); - T('298.64569377145669370010760887428305419049211767076463966663182890471105450765507454904166021', '0.0000000513282401911235340888997773718547011660029236548742535384576211684698905846807631716329563685023698', '298.6456938227849338912311429631828315623468188367675633215060824431686756761249651337224233816329563685023698'); - T('153158125588135275971624448998303827924375983937687494263.6', '522574.2172656390720935407437590923430209583762529523179633299440845173022407980283974345034782042', '1.531581255881352759716244489983038279243759839376880168378172656390720935407437590923430209583762529523179633299440845173022407980283974345034782042e+56'); - T('-37584369371625804653778917725.04710852052873625022089539878880649643091488064967', '387289160645786908822166966661304359256521.40416120883', '3.8728916064574932445279534085665058033879635705268830126374977910460121119350356908511935033e+41'); - T('333145493405211943110181488709393444800555889546483.25', '337039689069037487854189149366025543071617091671893617361194217844843723876472794060690078788349535879526770512127905359.772', '3.37039689069037487854189149366025543071617091671893617361194217844844057021966199272633188969838245272971571068017451843022e+119'); - T('-0.00000000000000000875947840124838794446714154793538138133101442657807977884554262860149896878671504', '6121126413234312706434650834319645665575176210124040301876334782352.2701746892166273345074659234578320327195185867786496894475416', '6.12112641323431270643465083431964566557517621012404030187633478235227017468921662732574798752220944408825237703884326830811652717342192022115445737139850103121328496e+66'); - T('-27101285266584198282389701705604910688467857152047550105271200946392221564235258269.0800011597617806021545806843947528587392169', '-93984277.78258808561', '-2.71012852665841982823897017056049106884678571520475501052712009463922215643292425468625892453717806021545806843947528587392169e+82'); - T('-19256051893600692288537586.59353458509306480025521794532051383696889407478585008231545758785', '-8963065351854.7878237484328880211387666531886258820788775118', '-1.925605189360965535388944138135833352595282139398459850913971904777158658585008231545758785e+25'); - T('11569497283022449921394189469855978299381812519350940701313946487504335257098102797076761168675477401606', '354878912159213729324887521064557506231700037558958924247470744332285142081086865543601683607743.711010177974', '1.1569497637901362080607918794743499363939318751050978260272870734975079589383244878163626712277161009349711010177974e+103'); - T('31410760334069399540603136630010363.370516', '-0.00000000000000000250028865888009060099213589080181239288708801576170886559433463009608557725740080566463813772802697909277043093845092263791985', '3.141076033406939954060313663001036337051599999999999749971134111990939900786410919818760711291198423829113440566536990391442274259919433536186227197302090722956906154907736208015e+34'); - T('48450334100677709.292858595098179054162833212046954235133498994154015488631434964418926099', '-5452278790911076.131563791561554078354880486603279', '42998055309766633.161294803536624975807952725443675235133498994154015488631434964418926099'); - T('-726362472599493167754185550127976323995131102302190474448.022897051088265272546787050801660', '-26697.1300027', '-7.2636247259949316775418555012797632399513110230219050114515289975108826527254678705080166e+56'); - T('-5169217768018238832429254316846393556631723341237749333387854823.66306235977379827807976904396539087620041043309411525365990764018230223245161', '21048346121126363354727928959697501228648890358940.20948083990111835371727450225140678862878629117909606507623912415702402888341685852', '-5.16921776801821778408313319048303882870276364373652068449749588345358151987267992436249454171398408757162414191501918858366851602527820356819314148e+63'); - T('0', '3880335331987075756173782777964278144918139052756795465605564193503574084038075', '3.880335331987075756173782777964278144918139052756795465605564193503574084038075e+78'); - T('1471118130122845147276641392737353012928182703107626659491246625014486338076282524169910132047730182612396587213027711271216.07461', '-9022200078219.61142095898083863316225395343911361206316438521617777', '1.47111813012284514727664139273735301292818270310762665949124662501448633807628252416991013204773018261239658720400551119299646318904101916136683774604656088638793683561478382223e+123'); - T('1961360640267', '-8237317626242593351740131071931066270126645544302536441310151862831895121602611.6685378785733350998', '-8.2373176262425933517401310719310662701266455443025364413101518628299337609623446685378785733350998e+78'); - T('250056193902937472244979.030455795040281239421914909457299497068011838527472729233340186411522', '-389637478200780623396903050063520125697228676163384342985662391907774888793755259018717015963204238731047741576614654499.6', '-3.89637478200780623396903050063520125697228676163384342985662391907774888793755259018717015963203988674853838639142409520569544204959718760578085090542700502931988161472527270766659813588478e+119'); - T('-41.0667685182669426103291702409386770119233174954666626675833072533459819908153', '-24683428468133023718789488350081878137388951325390325606955366999359.7544', '-2.46834284681330237187894883500818781373889513253903256069553669994008211685182669426103291702409386770119233174954666626675833072533459819908153e+67'); - T('-1465078045399636479827859198546113217231061854355552775', '286781605726130466373594446109778466785174261888370270594913242', '2.86781604261052420973957966281919268239061044657308416239360467e+62'); - T('-0.00000000000000004372082675620531277773860157001154109814365737979121603370264972266779787151695587487529163780797491077618453622889827822', '0.0000000000000000115010056472096691762701979992534492116764302820728655795640758846469523814776292792892505', '-3.221982110899564360146840357075809188646722709771835045413857383802084549003932659558604113780797491077618453622889827822e-17'); - T('-5915475824828715769525622713448197545310987686571625215824865265460902144119719.60667712865151405621927923268842958349404793882328736294067066', '8289599618691777653744294128182319598849442999.3869210944639310536363962387071546926', '-5.91547582482871576952562271344818925571136899479397147153073708314130329467672021975603418758300258288299398127489089404793882328736294067066e+78'); - T('-6781589283952862541042634770259255399053423179553784209358601916774267083862536888853055882080202198759767010533235152604760503522710009', '0.000000000162', '-6.781589283952862541042634770259255399053423179553784209358601916774267083862536888853055882080202198759767010533235152604760503522710008999999999838e+135'); - T('-7401754762477043478410731850924229267152.1385806493837710954211647499789972995005461407065862284241906466005572091609381993770', '6814772121230277085632920582844817329083526354461024137801607310774405037993936581203797318438915758471288490759159235041741129', '6.814772121230277085632920582844817329083526354461024137801607310774405037993936581203789916684153281427810080027308310812473976861419350616228904578835250021002700499453859293413771575809353399442790839061800623e+126'); - T('-8', '21559462366454603856476372397626468240404955163730871821082532003169939666641.3471758', '2.15594623664546038564763723976264682404049551637308718210825320031699396666333471758e+76'); - T('-10740658919737638642657973180452168052201470445', '0.0000000082551674495554316423778277737071293814860377807246652498052504231443776872267372379', '-1.07406589197376386426579731804521680522014704449999999917448325504445683576221722262928706185139622192753347501947495768556223127732627621e+46'); - T('95996905118671016719266871729.520398129746', '1424664524272137031863748414508.04407607261068488341354804735012808909858790022643537811522935701269430843913849', '1.52066142939080804858301528623756447420235668488341354804735012808909858790022643537811522935701269430843913849e+30'); - T('7545686522420.04', '-110343136.2377175', '7545576179283.8022825'); - T('-3778460127635156232285998080.7598066400530666299808051012', '-0.00056022982056213327166370574884842481363234', '-3.77846012763515623228599808076036686987362876325246880694884842481363234e+27'); - T('-205.787', '40023148.03084250896', '40022942.24384250896'); - T('-10469.58581784685565292886210019593298608566213', '0.00000000000000055769617173', '-10469.58581784685565237116592846593298608566213'); - T('-1697421104198498565372', '130856814871284869392577271881365150502943114887052960993846', '1.30856814871284869392577271881365150501245693782854462428474e+59'); - T('-0.000000414035245121759801970634606896989047228634707532', '-38870447038068433224878605004808090705226214661500574171036129739107587668370820311143094.957', '-3.8870447038068433224878605004808090705226214661500574171036129739107587668370820311143094957000414035245121759801970634606896989047228634707532e+88'); - T('-2028389003568384286508207197206771601505013066674015630980.40648010665804431311941439248759845544570040200920378245684409301143522362121397976187113415', '-0.00000000000000000001828002844616325557520485512882126384242054987542132167273332845067757', '-2.02838900356838428650820719720677160150501306667401563098040648010665804431313769442093376171102090525713802504629926464288685654529394730821254870415e+57'); - T('-0.00000188443084941099579692438787131849288418100707817192098239393848434584554053801905703996798261121316300897664557', '-3594409179355959594852497571834744071660256911.32474274552929134136288086348918314067885678172370772397', '-3.59440917935595959485249757183474407166025691132474462996014075235867778787705445917174096273078589589098239393848434584554053801905703996798261121316300897664557e+45'); - T('-0.85273', '-279017792692170227516916053414297917923905837082261296273831887211350843745548269287411294.07131470147929582735586577119', '-2.7901779269217022751691605341429791792390583708226129627383188721135084374554826928741129492404470147929582735586577119e+89'); - T('1465314670123686042148720875703178202039648.513007703872541159651633499734046400788', '777575543578333746326.8333028060', '1.465314670123686042149498451246756535785975346310509872541159651633499734046400788e+42'); - T('-26920347118432602525813368030981387.1405710723', '-9.7088124301334057558783763899332243970338509361338006057662744040169648799290478801660095182592839804430939342926', '-2.69203471184326025258133680309813968493835024334057558783763899332243970338509361338006057662744040169648799290478801660095182592839804430939342926e+34'); - T('1316027450661167908370945255095582684.489766006179613245381691072', '-27247880103214807605061248065261158542.238847334604', '-2.5931852652553639696690302810165575857749081328424386754618308928e+37'); - T('0.00000000000000060630789744883065327236848700992137069065181792024986218307439791524854229166347681155', '23583422975999413573947442313781193552150628103226534113902', '2.358342297599941357394744231378119355215062810322653411390200000000000000060630789744883065327236848700992137069065181792024986218307439791524854229166347681155e+58'); - T('-270309750628324546215936875977251097460648729.2740106846988640562244700895457240150700468834022435265506238503209610561582721812729822740951287073436', '6623510422802645083643613990747833105477640970454392196256901453016184756585217878929893750.897051821348362132957036238424470', '6.6235104228026450836436139907478331054776409701840824456285769068002478806079667814692450216230411366494980767325661488787459849299531165977564734493761496790389438417278187270177259048712926564e+90'); - T('56833947334627412648354391179890', '-0.00000000000000020974557897099293264846', '5.683394733462741264835439117988999999999999999979025442102900706735154e+31'); - T('-32374924556195581487094651860979067186648013640229524477572717027565077414917194641088084918165166494.4007630', '0.00000000000494296301119272380546991072751573073742664686905799391552910274849845882330521177213047667', '-3.237492455619558148709465186097906718664801364022952447757271702756507741491719464108808491816516649440076299999505703698880727619453008927248426926257335313094200608447089725150154117669478822786952333e+100'); - T('-1797058201757575606389544872285070938241126244.769314657904583268612759343503712876640776918509', '-123578693378839714952814254501905650483998928961025522981908260845901294079261880178955413386', '-1.23578693378839714952814254501905650483998928962822581183665836452290838951546951117196539630769314657904583268612759343503712876640776918509e+92'); - T('-225494018080889118537669713.9577313306531049801615408808777093224321509314', '-682519588810576318453197726941395968412861.368346014111618610229581846002026209517358035441594633629722053374906068945767849660172087', '-6.82519588810576543947215807830514506082575326077344764723590391122726879735531949508966841594633629722053374906068945767849660172087e+41'); - T('-146483103623737636574187312839618731854', '-164095488530068730324672.278737858685739790237796055945', '-1.46483103623737800669675842908349056526278737858685739790237796055945e+38'); - T('288065905331021752942013707735111579224784706910.9694544539500946696884975171333618909754943414924752306735638546017809645829364174230805972', '-1879997868031626.13530883243794860502747913408966454', '2.880659053310217529420137077351096992269166752848341456215121460646610183830436973509754943414924752306735638546017809645829364174230805972e+47'); - T('-30585397102026875650261239591045069897098845982837987425500176089534774480799.196611528585829637554', '-8.2', '-3.0585397102026875650261239591045069897098845982837987425500176089534774480807396611528585829637554e+76'); - T('0.0032143', '-0.00000327364505987922707888345463293127602039856777788995949286363555265326340970495', '0.00321102635494012077292111654536706872397960143222211004050713636444734673659029505'); - T('0.0000000000000122089', '-0.00000000009606197314249053393037900593870599194195536081517004235811304298818227827198075675001652859716008205203077623130159549042380478073889176477922188', '-9.604976424249053393037900593870599194195536081517004235811304298818227827198075675001652859716008205203077623130159549042380478073889176477922188e-11'); - T('-1519120.89697395603485201266905849077718172383773866152054', '-1252690569967.49008', '-1252692089088.38705395603485201266905849077718172383773866152054'); - T('135272242707147130668128741572727753877823517.5267897682843968097498958339590924822841849811607010672', '5323052067036940514642933493723371314528945383203996481350033868198902738290466758895359108447.5', '5.3230520670369405146429334937233713145289453832041317535927410153295708670320394866492369319650267897682843968097498958339590924822841849811607010672e+93'); - T('1373517886847509715943778293771477989783556837632514732917942', '-0.0002918853', '1.3735178868475097159437782937714779897835568376325147329179419997081147e+60'); - T('-7.74', '-0.677942863330392341680315597792114620456629945201714481742115371479319069952739078864753759584', '-8.417942863330392341680315597792114620456629945201714481742115371479319069952739078864753759584'); - T('0.000000000000020414435064555641261166870351580734289075091673294774203415476224497625497586758753668', '-295256622638190096478809549470566', '-2.95256622638190096478809549470565999999999999979585564935444358738833129648419265710924908326705225796584523775502374502413241246332e+32'); - T('0.00000000043262197364654223753368765660064439474065876064265664457730559389', '7732179149449785953403196073740747199538706014956074135203031279754730991083612056065.08514009015794758031660841', '7.73217914944978595340319607374074719953870601495607413520303127975473099108361205606508514009059056955396315064753368765660064439474065876064265664457730559389e+84'); - T('-31545120553641346250429.2041019063650382985', '-0.00000000000000322497856922376578447917222257195', '-3.154512055364134625042920410190636504152347856922376578447917222257195e+22'); - T('-0.00000001491640137712266436315173456229606458713951581451514404607758964925714049589638484422967721927256', '875664170041898483278650.4', '8.7566417004189848327865039999998508359862287733563684826543770393541286048418548485595392241035074285950410361515577032278072744e+23'); - T('0.000000014725515297168007', '-0.1721217425079357563094435985505347277188701680317422409696115500647420231', '-0.1721217277824204591414365985505347277188701680317422409696115500647420231'); - T('-0.0000000000000000074805926405562', '-32346407643566307755196.3614356592764197829600176806496', '-3.23464076435663077551963614356592764197904406103212058e+22'); - T('-313255500747185422178551717566317427599882739101058623548833613806257.69583741347200945021282349083047007656822121171291826489554745460530313085870235', '-0.0000000000000277730681342000948755480478956572325828011175067392454201615642985418337229601771222072988252633636962852384552843309099649046742455014449802537116792', '-3.132555007471854221785517175663174275998827391010586235488336138062576958374134720372232809576909253456246161168689455010660130541938507232924230008918337229601771222072988252633636962852384552843309099649046742455014449802537116792e+68'); - T('796875527749558859721941966594505581298971405919740366253609646289883816950441012', '0.000000000000000106051762207090679888452342439518714917029053485988097086863407642961157123252080954014447191265506482837715480', '7.9687552774955885972194196659450558129897140591974036625360964628988381695044101200000000000000010605176220709067988845234243951871491702905348598809708686340764296115712325208095401444719126550648283771548e+80'); - T('-2799308221255727632154376162818591439464534253442269002690075449594707354769913622', '-2653089999757580649494973458723447833943060689063627290.948', '-2.799308221255727632154376165471681439222114902937242461413523283537768043833540912948e+81'); - T('5230.6', '-1457159088427391036497085292606459576.080762789887425314064087931228782784478984069210492316', '-1.457159088427391036497085292606454345480762789887425314064087931228782784478984069210492316e+36'); - T('2265111540331847.44385', '0.0000000000000000026399730647357391221240416795810255729781114791438489591810343937780321771723301295667448186691762052166888791236524529182049438', '2265111540331847.4438500000000000026399730647357391221240416795810255729781114791438489591810343937780321771723301295667448186691762052166888791236524529182049438'); - T('-0.000000000000000000130351174611495679446350395997550522969873358970359485781', '6837379692457094204055811341371130548614625165355.865146', '6.837379692457094204055811341371130548614625165355865145999999999999869648825388504320553649604002449477030126641029640514219e+48'); - T('7777457612952579632757962073721379887227173983203369078658939826377158630604554480732826290762', '738745470.90386876186959774624', '7.77745761295257963275796207372137988722717398320336907865893982637715863060455448073356503623290386876186959774624e+93'); - T('2091587164056284398722371839269632038542800738624345517942031403189897878173896765128677273428424903855243972440613077101074439732042713569', '-4951053013270976201467725287896995979570086801989189606256031245422534338962187224417', '2.091587164056284398722371839269632038542800738624345512990978389918921676706171477231681293858338101866054366184581831678540100769855489152e+138'); - T('15596526663192771382682194043241293744360284406119405225927225287207668035938290350623.0136029816344460485336790911173723056262086400741246575531343349', '-0.00000929115562', '1.55965266631927713826821940432412937443602844061194052259272252872076680359382903506230135936904788260485336790911173723056262086400741246575531343349e+85'); - T('-0.143235913932920000943491996904423637', '105465669771635331021255530853326638414654835668447488251.44604956381929966', '1.05465669771635331021255530853326638414654835668447488251302813649886379659056508003095576363e+56'); - T('-131.66335836273650457236601594959663422039552341367012898208021864544080993', '0.000000000102821561249286522291590439126847620376937400555244959227688218488059751276284980726909295138051809044', '-131.663358362633683011116729427305043781268675793293191581524973686213121711511940248723715019273090704861948190956'); - T('-8211501623.467468766754729150340637983678978062348865062714034523840862885354594840', '4138.57064149204825240856224917824913', '-8211497484.89682727470647674177838880542984806234886506271403452384086288535459484'); - T('448392812.1018844354312957', '0.000001316332446359801420119858000840615513663646321599278426150890005786837699907597501844047946311701498712958992807897', '448392812.101885751763742059801420119858000840615513663646321599278426150890005786837699907597501844047946311701498712958992807897'); - T('-0.0000515081990743416226512970055332416111901', '9721676157492236482889538449332613888622823236564458642190.9068670871984057788931368828097465243944915994782715793742390978277016751898427038', '9.7216761574922364828895384493326138886228232365644586421909068155789993314372704855858042132827833014994782715793742390978277016751898427038e+57'); - T('0.00000016348993711366066763304174336589379906596596798355118', '27092941593289173149253532518.630793971858294366753', '2.709294159328917314925353251863079413534823148041366763304174336589379906596596798355118e+28'); - T('1750188741743624090823079726633157080090405425107855229635890.59733375', '0.00000000000000253442', '1.75018874174362409082307972663315708009040542510785522963589059733375000000253442e+60'); - T('-120.632964973', '5599333570130562863508293629418111213773068135437215884309301113811346990002242140', '5.599333570130562863508293629418111213773068135437215884309301113811346990002242019367035027e+81'); - T('-12956.8', '-28125616598.519875442790896131080979434706515929141364365696194890485115866976051969974226520962106271082896', '-28125629555.319875442790896131080979434706515929141364365696194890485115866976051969974226520962106271082896'); - T('0.000000291488949451719436740561621135104503110544381471384117075881655619830678129379740688277538395366270063296614253757547811832765458961027261', '742031645768480260456626682374347039419606586767893047218475327818790868744906.4174591102001653101442893099824528369555', '7.42031645768480260456626682374347039419606586767893047218475327818790868744906417459401689114761863726050544073972060003110544381471384117075881655619830678129379740688277538395366270063296614253757547811832765458961027261e+77'); - T('-87648513454369557979997099620411798538786483894671.07140', '-1', '-8.76485134543695579799970996204117985387864838946720714e+49'); - T('11680.216847571', '15545171141903075635187317512728638503.5120154558326692202036513424672740379112385241218565405732440132', '1.55451711419030756351873175127286501837288630268326692202036513424672740379112385241218565405732440132e+37'); - T('217933206105480443145202005696333545459278284908.49635092233713353554300078449954457018472363340', '851760835565720226699101062761084114408263270495330844773733382141014174507794413266810316.1227643422652856425756237116285709', '8.517608355657202266991010627610841144082634884285369502541765273430198708413398725450952246191152646024191781186244961281154701847236334e+89'); - T('131096.71', '-92311622283713248650111150643196971194314788501758170221195801273003488.29608754610346056452229667146067507425547000551040945788003726', '-9.231162228371324865011115064319697119431478850175817022119580127287239158608754610346056452229667146067507425547000551040945788003726e+70'); - T('-7.3', '-0.0000000091386734958004013759891573873629383131', '-7.3000000091386734958004013759891573873629383131'); - T('-83570037032769234234524544857963', '-16329401826664066011232.5825604925166033769207446067722340786326', '-8.35700370490986360611886108691955825604925166033769207446067722340786326e+31'); - T('207724189276.2354966467766137168630074255', '368.36464299671427627280350157241857056036300267791934105571800636754609729339278308276622409777940247912804080708853009235428453986', '207724189644.60013964349088998966650899791857056036300267791934105571800636754609729339278308276622409777940247912804080708853009235428453986'); - T('1036451349506118936704271313996579271029057412.5954933332585621063133644518747511868339417', '1919224338475644109', '1.0364513495061189367042713159158036095047015215954933332585621063133644518747511868339417e+45'); - T('4594184.672287496737761641402840568569137816292501654869263256716904015818', '9', '4594193.672287496737761641402840568569137816292501654869263256716904015818'); - T('50922584112695986965179537750579107265371590444561808302376506246479343493.0485900097493874734', '-105588622877722030471490473554330788644165258321036318195143132112931', '5.09224785240731092431490662601055529345829462793034872660583111033472305620485900097493874734e+73'); - T('8762733230291549920959.461299029519859816221596648161', '-0.0000000000000031719158', '8.762733230291549920959461299029519856644305796648161e+21'); - T('-0.000000000001088450644628700841462499123795267689859321764189574607336877911119745839851152785101218885203868', '225068092611409981730971194567763438117689044018909866535690426664845083547381487510884944286310222323340655938142842019712684', '2.25068092611409981730971194567763438117689044018909866535690426664845083547381487510884944286310222323340655938142842019712683999999999998911549355371299158537500876204732310140678235810425392663122088880254160148847214898781114796132e+125'); - T('-0.0000000739096483131943', '0.0077245546142820934802776687821282016447278885', '0.0077244807046337802859776687821282016447278885'); - T('13773756.65', '82341713701089392.952', '82341713714863149.602'); - T('0.210858539297226184666150871507845048599002989549496974738305', '893397778957253392646834827705840161788170516925929814290917857496573588954994819301103.84678150026', '8.93397778957253392646834827705840161788170516925929814290917857496573588954994819301104057640039557226184666150871507845048599002989549496974738305e+86'); - T('-311598106485014524446810253701.9', '-273597385676217579425078047906355.35858548639357', '-2.7390898378270259394952485816005725858548639357e+32'); - T('0.0000000000000010949761538307759705645612635463870582102620259', '-642669739487957339653187054422612017200108895155999822088234612866942591002244842.544328938390312037134789574351984286413492175445739315', '-6.426697394879573396531870544226120172001088951559998220882346128669425910022448425443289383903109421586357435760137218522286290586811047379741e+80'); - T('-1413496343761296278143773037357799924448219743939.91034833304743349454253527380297135637064998230', '-0.0967154985326414596487190403709602844792653613', '-1.4134963437612962781437730373577999244482197439400070638315800749541912543141739316408499153436e+48'); - T('88324430808176237552938.25850832460', '-1355506260987917851790849984926562224803792482721611489882549294623263720214603522264447050471402562893267497494827198102938336997669.605991', '-1.3555062609879178517908499849265622248037924827216114898825492946232637202146035222644470504714025628932674974065027672947620994447313474826754e+132'); - T('1913616274506284536238001245388057898244388034.32351451667730419851', '-0.000000000000007988642436925641812976903901681868680726375828237077834585228067490119284435811740642127567200765018765914463975898057', '1.913616274506284536238001245388057898244388034323514516677296209867563074358187023096098318131319273624171762922165414771932509880715564188259357872432799234981234085536024101943e+45'); - T('-0.00016620663104623655416647045', '-12686797041.8875795703189682', '-12686797041.88774577695001443655416647045'); - T('-955318682044891602024512908305401581438484362308395.3064608014', '2405264255243858252389318787930524.596646933647908', '-9.55318682044891599619248653061543329049165574377870709813867752092e+50'); - T('38251344747049710395611359429944', '0.000000000025044307069557002354176630069758745187110935106932295261690460', '3.825134474704971039561135942994400000000002504430706955700235417663006975874518711093510693229526169046e+31'); - T('6556082.32', '-0.000000000000001855587562856033456366238361224693109198376760772204394200539703419686910321614077786337510464951', '6556082.319999999999998144412437143966543633761638775306890801623239227795605799460296580313089678385922213662489535049'); - T('-601066282116.773646944861803892913655', '0.45869929801033616081412998252506077240747661632297824035019059504580212743644756970631731956591592148421555634', '-601066282116.31494764685146773209952501747493922759252338367702175964980940495419787256355243029368268043408407851578444366'); - T('-23.6504678041285333307941', '9322173289440937942221726663585040711544412727245532618749747902349893601059242945545713822289661475003325571215052971921099787751298.5', '9.3221732894409379422217266635850407115444127272455326187497479023498936010592429455457138222896614750033255712150529719210997877512748495321958714666692059e+132'); - T('13954.05335659426859124804949201546230433799858282911276550573060408965278409946479104625725605515184113476163', '54942938376898283461251972594178875731793459692.69288668376868', '5.494293837689828346125197259417887573179347364674624327803727124804949201546230433799858282911276550573060408965278409946479104625725605515184113476163e+46'); - T('38338476138349711098378.3943108022013227510', '184968761212298160660521125177275265078971984111374634082506646317710944619077959845438.025316842804835238303934013763002232693292615810218', '1.84968761212298160660521125177275265078971984111374634082506646356049420757427670943816419627645006157989303934013763002232693292615810218e+86'); - T('-535317800652152416.666011782506679594256929333292104206593745014', '206357700474622846234363174929527883904699924195458.1468414719961788534413928358700225430521698882933015922823192348467761048', '2.063577004746228462343631749295273485868992720430414808296894894992591844635025779183364584248742933015922823192348467761048e+50'); - T('2833257851650449534329564356827343715273182823625486392869199675024054992102672521.4119632200042590623653138732343284', '27874145222289935847607844819151291', '2.8332578516504495343295643568273437152731828236533605380914896108716628369218238124119632200042590623653138732343284e+81'); - T('0.00000000000000000002618552546853233266995429732175655051680150038461910732084518605757265', '-139.1176780483072', '-139.11767804830719999997381447453146766733004570267824344948319849961538089267915481394242735'); - T('-5231728462708550604235813229', '-91296185221416978065707502278539916045872.674264172531093353580151543119', '-9.1296185221422209794170210829144151859101674264172531093353580151543119e+40'); - T('0.000000106213737285740538348043261083184649640660300492624731818517303939576491624096820480026083363433', '-22201770785094963881965679358073543814802495287033739904412088335159142995847539301013.995757400073858039256583163281728323829172117', '-2.2201770785094963881965679358073543814802495287033739904412088335159142995847539301013995757293860120753516044815238467240644522476339699507375268181482696060423508375903179519973916636567e+85'); - T('-67911351036760640240904249364595686607959826796143043932178763791112125413384969479427858233781973657171072664684275848926309593074.2736408437759912', '-77343795081059041036255490247057579', '-6.79113510367606402409042493645956866079598267961430439321787637911121254133849694794278582337820510009661537237253121044165566506532736408437759912e+130'); - T('-365663287930535233624529826657412624347925682105954594671581052959938622', '6954200.1293731825636', '-3.656632879305352336245298266574126243479256821059545946715810529529844218706268174364e+71'); - T('-86904523910181630995087116839233134949554297554466494568778841810992441.93482682', '8131622.282657081038690', '-8.690452391018163099508711683923313494955429755446649456877884180286081965216973896131e+70'); - T('-1625898821893719962579186943572639572628075158134', '154905121706840975019322074123957122201752614177688556257506327062930427205660262365762413912612.3699041018353', '1.549051217068409750193220741239571222017526141760626574356126071003512402620876227931343387544783699041018353e+95'); - T('7155707429106159594597753.602', '-8825753984190829367467677923527023814575827126015236448.1769432522585118457684798455299849721603516850', '-8.825753984190829367467677923519868107146720966420638694574943252258511845768479845529984972160351685e+54'); - T('14702524453269326207746839725456981418982455947784576163899708846627563947982587259694248527512065356328701857996383.8405344660118236145367576964488171', '0.000000000000279801481414509128', '1.47025244532693262077468397254569814189824559477845761638997088466275639479825872596942485275120653563287018579963838405344660121034160181722055768171e+115'); - T('-225100394111865994732205121145289659406.81347348992302868556770481345355033428867007077210213924805668907831310175342503282790874586923576524594', '16536197888541991489345013693415581039371231147607496617201758269219830229742518663209266982586909041114114', '1.653619788854199148934501369341558103937123114760749661720175826921960512934840679721453477746576375145470718652651007697131443229518654644966571132992922789786075194331092168689824657496717209125413076423475406e+106'); - T('-147016978159508669835046590756636450424769212453306265233290290589028698490660334843817522777298255009234097047902836152977047399695261588489020507996', '-3385444909290343226731953993543122186484062389074939550327086795043944171', '-1.47016978159508669835046590756636450424769212453306265233290290589028698490663720288726813120524986963227640170089320215366122339245588675284064452167e+149'); - T('-199818369850480446138557902023384546574063876954063983588740826564571725789062130098498070856521310723010198313678089493931618667410', '-82297155933721780656979816142942540102465515796252492877737040', '-1.9981836985048044613855790202338454657406387695406398358874082656457180808621806382027872783633745366555030077919388574642449640445e+131'); - T('1224211946370320242988310.539593783414725138865000500768803244328120208411774168803312677659248392891734554652728756344327699042687781768182371130', '146158963047904046913411919077533655315762900865.56618168609343', '1.4615896304790404691341314328948002563600588917610577546950815513886500050076880324432812020841177416880331267765924839289173455465272875634432769904268778176818237113e+47'); - T('0.00000000000000000008559294799519157774769508766803', '-0.551609783500231605091545012587226546044881570184707190', '-0.55160978350023160500595206459203496829718648251667719'); - T('-0.00000000000000364248749061745076846426096689761350484416821596341761277974108029120654192812240270659121286544404842359764995', '0.00000000000000012915182634025629462517104694343718453070590970719003893358456085974950708638362321445540916204635318582523370886863628537009101151163541', '-3.51333566427719447383908991995417632031346230625622757384615651943145703484173877949213580370339769523777241624113136371462990898848836459e-15'); - T('-0.0000012159213941933105485030856059051020630869271620812934680783745913', '435177388107137395111544818911495302729591053552420773207670273108531988732273993785286.67035351430698075129626580', '4.351773881071373951115448189114953027295910535524207732076702731085319887322739937852866703522983855865579857172969143940948979369130728379187065319216254087e+86'); - T('-244127359165.119239441740', '-156775332029133323786340200106246008327217172695025168660963117705504796367803174489432334620737960393.807345425858853639626141', '-1.56775332029133323786340200106246008327217172695025168660963117705504796367803174489432334864865319558926584867598853639626141e+101'); - T('-1.3', '38822623294205506.9130785519203', '38822623294205505.6130785519203'); - T('-0.000000000000000200529323920298995078835589947427959287114325689776790905715952540392301944664052487332084825933878060366283983109838980691230645368608610691238118', '8.9235511422835689686003636129516379856485298', '8.923551142283568768071039692652642906812939852572040712885674310223209094284047459607698055335947512667915174066121939633716016890161019308769354631391389308761882'); - T('-2957229910068789430753016717681830773467703355331693598573435320975440031813155744826634542489276009415208500102073', '1387116781565930070372821993801771.117', '-2.957229910068789430753016717681830773467703355331693598573435320975440031813155743439517760923345939042386506300301883e+114'); - T('1700002853156086652196589662796447571836354710587680189245495702990262116528669877736.14002354840708066274724201698188364950277252310355226408545', '0.00000000000000001040670152065846069679024081862566530541721990959996195085462554562276036783860750708035', '1.70000285315608665219658966279644757183635471058768018924549570299026211652866987773614002354840708067315394353764034434629301334172921756950266990959996195085462554562276036783860750708035e+84'); - T('275376444375379941033818605.172279107271998841', '479542807197295799803972994083414159220618900334356109151914563415527998484615170546961833405749594109884901428553537510172052.3945910', '4.79542807197295799803972994083414159220618900334356109151914563415527998484615170546961833405749594385261345803933478543990657566870107271998841e+125'); - T('201072.84', '-18291007075346088677522680107496617786379481993162852.5235791884', '-1.82910070753460886775226801074966177863794819929617796835791884e+52'); - T('4.79698005010389753070269243940420243222736581061677999244886345403385181646604209917629845674090797104700400712679893585', '9488800450.896868361907362310326', '9488800455.69384841201125984102869243940420243222736581061677999244886345403385181646604209917629845674090797104700400712679893585'); - T('1079602565226551350070617572381861809880919380670631.1941110380393840344419101968428407597315561768248982401339351384570356479736868707938705396478', '-976453379501315909711332105625801476050587869483628203480762777882592729043296523674472960763347999942046454132907563626456686905612777665215490', '-9.764533795013159097113321056258014760505878694836282034807627778825927290432965236744729607622683973768199027828369460540748250957318582845448588058889619606159655580898031571592402684438231751017598660648615429643520263131292061294603522e+143'); - T('-0.00000000644271271718069271020345607284106825430330344982447309294205280695455856', '-4416.748357493646036829616437', '-4416.74835750008874954679712971020345607284106825430330344982447309294205280695455856'); - T('3445711155679699718853304199017871443351956851656285424813892934989061182900239514362410627083188779604842513142', '-0.0000000016502205307974697933105166599651672169912797927812530032512206464857476224692850052', '3.4457111556796997188533041990178714433519568516562854248138929349890611829002395143624106270831887796048425131419999999983497794692025302066894833400348327830087202072187469967487793535142523775307149948e+111'); - T('-0.000000000000000001721243717528274638265294074343297487403293013692904865481482446596237956150738926135318544866402636735967915186120920316527028', '0.000000000000000436433664131032429923892680858273396689173735933956', '4.34712420413504155285627386783930099201770442920263095134518517553403762043849261073864681455133597363264032084813879079683472972e-16'); - T('1204447398244110346590693828919979918701287883959208424098228210909783249592980543967052564154', '-1.202', '1.204447398244110346590693828919979918701287883959208424098228210909783249592980543967052564152798e+93'); - T('-0.00000000000000000003511', '-36043841896699925', '-36043841896699925.00000000000000000003511'); - T('-3025613431812032994475405709985.7993469679039433736384733579074386422934426781633847239705968789457410845', '-1002588615531.9649364944823485872292540973546318938467102', '-3.0256134318120329954779943255177642834623862919608677274552620705361401528781633847239705968789457410845e+30'); - T('-0.00000034223095611049552775891228859686202901218738308167914660966601362250385709703952480432247', '-972934111420524554955644957601045537.987527746161528768501935193004724606168511203759505291457031083199089815', '-9.7293411142052455495564495760104553798752808839248487899746295191701320303054021594688837313617769286510343750385709703952480432247e+35'); - T('-260.8020033716610908017940221805155296272264320025030641582384857795184385939216818072400908848372378517124042819164098083213511102035', '17001.46833548258145536106307267277476995298424211430854042389081593596901026449283938670366734353012622907027133923538851172235700848608201622', '16740.66633211092036455926905049225924032575781011180547626565233015645057167057115757946357645869288837735786705731897870340100589828258201622'); - T('4753081575672367265214388.9329438810676699994575479313858093392877635113982018254535256873963800876321781902066650227606038529159973094772009', '-7324419798632309384717050.254499146068562829441638', '-2.5713382229599421195026613215552650008928299840900686141906607122364886017981745464743126036199123678218097933349772393961470840026905227991e+24'); - T('261907813073953576038800700421412.5334378919400078993318520596126658082471977395259716516663364', '-0.0000000086951723661290447823645735627390797806202562817264370379556867453', '2.619078130739535760388007004214125334378832448355332028072772480922455081179589057153699398993620443132547e+32'); - T('-21057062244163808361926294417077492805710.769766499111898332671', '-540838928.18483069140526251205066101016721497478267885509539520800221', '-2.105706224416380836192629441707803364463895459719051716084472166101016721497478267885509539520800221e+40'); - T('-158255.62893406', '-31604958588557863785879282950522895919205970023779482993880870538808826806472714286351962262535559188830287123905862547286466', '-3.160495858855786378587928295052289591920597002377948299388087053880882680647271428635196226253555918883028712390586254744472162893406e+124'); - T('-0.00872805303919760722958348618910955647808183701772080233955945973054140753844133709507372345122366634238497203383151041725907235916579449430863', '-101853444464243101382759799835868417551993254203707661817114852', '-1.0185344446424310138275979983586841755199325420370766181711485200872805303919760722958348618910955647808183701772080233955945973054140753844133709507372345122366634238497203383151041725907235916579449430863e+62'); - T('-45631392014.68038550439368025039999458620767416686726', '-16083812762280564885084.27247572', '-1.608381276232619627709895286122439368025039999458620767416686726e+22'); - T('-1439626983041987850913974184983601119473089147100564746927844789096157891.4841085238151384299', '0.000000000000000000031951455735478942002429224112959031269033600382871577234131203139', '-1.439626983041987850913974184983601119473089147100564746927844789096157891484108523815138429868048544264521057997570775887040968730966399617128422765868796861e+72'); - T('-3773188261867111267717109.48643521972869867743466506227122436366440807932802199071587048', '-10773530952405638442737529189330991723231726109739.439911386600615356849445155509285190', '-1.077353095240563844273753296251925359034299382684892634660632931403428411021778050955366440807932802199071587048e+49'); - T('5276177017268.35565399021279131413495227030075', '33380791872.126', '5309557809140.48165399021279131413495227030075'); - T('-128.032971413512325119332251541126003042400653717001958956874845360597144465880718042889612181', '3394406625963422663090321402154499517163312515368646.5438894836165998162937', '3.394406625963422663090321402154499517163312515368518510918070104274696961448458873996957599346282998041043125154639402855534119281957110387819e+51'); - T('-0.00000000000000000319057978729978801053247482850854', '-5970871936587764739377055460041397843015391161297703354420885181193398466623676.491266129426', '-5.97087193658776473937705546004139784301539116129770335442088518119339846662367649126612942600000319057978729978801053247482850854e+78'); - T('-1059900849522366748033951746353058622121879424133545530750.9681536282', '0.0000643997702370519405494192784251815344112451050443536256021694283534059757585612317456776719019257679238083053', '-1.0599008495223667480339517463530586221218794241335455307509680892284297629480594505807215748184655887548949556463743978305716465940242414387682543223280980742320761916947e+57'); - T('912258587155780697120724221920358016075695895559841256853912713603948747888.0315678411874212150256690949682329867739341', '2.256661', '9.122585871557806971207242219203580160756958955598412568539127136039487478902882288411874212150256690949682329867739341e+74'); - T('-0.0000000000010627444491654438', '413858262712309329471602287282236771662.23037198528863973813156909657677576430461650127105324676789469187837272211762396717083479560627202188', '4.1385826271230932947160228728223677166223037198528757699368240365277677576430461650127105324676789469187837272211762396717083479560627202188e+38'); - T('10889284485250482936848754210451881764666355121565381521609141220124805252627779969564893095316988849809.140913232560678725', '265462397841083205283689782772736396048751613685021523052966574884200782708580692276859125750962879382252839837', '2.65462408730367690534172719621490606500633378351376644618348096493342002833385944904639095315855974699241689646140913232560678725e+110'); - T('-3940354048038348812232523779780977.34694963308484986947203317656721412409336941345032192250794544448871277436178166955124911913191273620514614922051333', '108461342576678368692525128056407844311709242137736115728865741966953.265427848893134917162575927126158297967830952', '1.0846134257667836869252512805640784037135519409938730349634196218597591847821580828504769054275055894417387446153854967807749205455551128722563821833044875088086808726379485385077948667e+68'); - T('26059607473911021896148097458633904533525723836841783.8770871138672438759194942708994459838051487010227902', '-455763990053647411202608788023.11837212224235256867341260022328839083293408', '2.60596074739110218961476416946438508861145212280537607587149916248913072460816706761575929722146210227902e+52'); - T('7485939927194657722950.3195815053046002170111816290687951', '3027.358', '7.4859399271946577259776775815053046002170111816290687951e+21'); - T('-0.00000000000005599703632158865779999224097099964286077696620548833919840351030138988682760507', '3.5', '3.49999999999994400296367841134220000775902900035713922303379451166080159648969861011317239493'); - T('-0.0000000000000000653970485009455424706348378806364512481181501902433188498531335390353104396782305272068893617841048746913384690805807406227445668817807', '-173224891091130915632980803868987591469417896552426790538575965839932016256122849190', '-1.732248910911309156329808038689875914694178965524267905385759658399320162561228491900000000000000000653970485009455424706348378806364512481181501902433188498531335390353104396782305272068893617841048746913384690805807406227445668817807e+83'); - - - T('1.06832442449657e+9', '5.31512565221766313e+1', '1068324477.6478265221766313'); - T('-8.9672012052076147472375857e-20', '6.391778063682e+4', '63917.780636819999999999910327987947923852527624143'); - T('0e+0', '3.803634150690184e+15', '3803634150690184'); - T('0e+0', '-2.250919143163409794163082811e+1', '-22.50919143163409794163082811'); - T('2.8352844e+1', '-9.8421821e+10', '-98421820971.647156'); - T('-3.96169309707604251e+17', '-3.28373582e+3', '-396169309707607534.73582'); - T('9.436349291685128603888e-8', '-2.264108528075248e-4', '-0.00022631648931460794871396112'); - T('0e+0', '7.2004864761158514004448e+17', '720048647611585140.04448'); - T('-4.8717347274e-19', '3.61737685608086525157404817e+26', '3.6173768560808652515740481699999999999999999951282652726e+26'); - T('-2.168389290841e+6', '5.223e+2', '-2167866.990841'); - T('-4.38725314493094e+12', '1.40054785697916026635598226844e+11', '-4247198359233.023973364401773156'); - T('7.1223378147664003e-7', '3e+0', '3.00000071223378147664003'); - T('-1.0656660973e+10', '-2.97209463056314635542851541186e+2', '-10656661270.209463056314635542851541186'); - T('1.2883277094e+1', '-5.54548048203261067457185e+22', '-5.5454804820326106745705616722906e+22'); - T('-1.504e-14', '2.71e+2', '270.99999999999998496'); - T('4.7287555806698e+13', '-3.5935329574452318e+14', '-312065739937825.18'); - T('5.4e-15', '-8.35468469007e+0', '-8.3546846900699946'); - T('-1.735565e+4', '-2e+0', '-17357.65'); - T('-6.89525e-18', '6.7229852843e+10', '67229852842.99999999999999999310475'); - T('-2.63508402e+2', '-2.478965e+4', '-25053.158402'); - T('6.4909990971742952e+9', '8.633411384049431980845536589e+27', '8.6334113840494319873365356861742952e+27'); - T('2.87817691607168594282e+13', '3.695e-1', '28781769160717.2289282'); - T('1.2558509833653622e-12', '9.46079802e+0', '9.4607980200012558509833653622'); - T('3.2795331525179582319e-17', '-9.431388519232451406922e+21', '-9.431388519232451406921999999999999999967204668474820417681e+21'); - T('-2.7943785679585251935425773745e+1', '1.177045839871050879e+18', '1177045839871050851.056214320414748064574226255'); - T('-6.73086857309438227946149e+24', '1.71905552920711054538516e-15', '-6.73086857309438227946148999999999999999828094447079288945461484e+24'); - T('1.9905292e+5', '3.0839223106e+3', '202136.8423106'); - T('8.31048846338017e+14', '2.83123673288364500197794e+22', '2.83123681598852963577964e+22'); - T('8.36725e+4', '0e+0', '83672.5'); - T('-2.110811501755e+8', '1.646035246034983555808013262e+16', '16460352249268685.38258013262'); - T('8e+0', '-8.45386934e+4', '-84530.6934'); - T('-1.5014313151e+11', '-1.3943193159404694868e+9', '-151537450825.9404694868'); - T('-6.19826535590383384678e+19', '1.45912696e+4', '-61982653559038323876.5304'); - T('-2.30128559243369e-20', '-1.74358e-1', '-0.1743580000000000000230128559243369'); - T('7e+0', '2.9175e+4', '29182'); - T('0e+0', '8.074398952e-13', '8.074398952e-13'); - T('-1.10169992553226e-6', '-1.489521419796568135223154e+3', '-1489.521420898268060755414'); - T('-1.2847222948669e-8', '6e+0', '5.999999987152777051331'); - T('-2.0748595e+6', '1.7737013267831817855508474e+17', '177370132676243319.05508474'); - T('-1.3e+1', '-5.537580936457497529591215129e+27', '-5.537580936457497529591215142e+27'); - T('1.53041098285404062449166636e-20', '-1.09698519e+5', '-109698.5189999999999999999846958901714595937550833364'); - T('-9.0549157165169081301152736658e+13', '1.71861116418514e+4', '-90549157147982.969659301336658'); - T('-6.84667133296448035e+4', '-1.2552e+3', '-69721.9133296448035'); - T('-3.38133320737533874e-3', '-3.6195193454909046017940982507e+23', '-3.6195193454909046017940982845133320737533874e+23'); - T('5.28063684109958995e+11', '3e+0', '528063684112.958995'); - T('5.6486677840434364930096077898e+6', '7.7345049656351983276666e+2', '5649441.2345400000128423744498'); - T('1.071698848e+5', '8.09702667e+6', '8204196.5548'); - T('-2.56438e+1', '-4.7752581981e-15', '-25.6438000000000047752581981'); - T('1.11255906527629e+3', '0e+0', '1112.55906527629'); - T('5.29214639434e+5', '0e+0', '529214.639434'); - T('1.907665907177150817777618e-16', '3.996484323e+1', '39.9648432300000001907665907177150817777618'); - T('-2.284817838850737484e+0', '1.70660375373e-10', '-2.284817838680077108627'); - T('-2e+0', '1.2057236765392598216859e+0', '-0.7942763234607401783141'); - T('9.5417e+3', '1.19709798011e-10', '9541.700000000119709798011'); - T('-2.1e-6', '1.73249589179219564051e-11', '-0.0000020999826750410820780435949'); - T('3.33966813434843e+8', '-4.33492101363039e+8', '-99525287.928196'); - T('-7.6863012322962e+0', '5.40256e+5', '540248.3136987677038'); - T('1.893278638203e+10', '-2.79127597942747e+9', '16141510402.60253'); - T('8.708419184498120859374e+8', '-2.125e+2', '870841705.9498120859374'); - T('-3.79886239868039785166793949e+26', '1.9e-15', '-3.798862398680397851667939489999999999999981e+26'); - T('1e+0', '-3.2066099723526e-8', '0.999999967933900276474'); - T('-2.101824983e-20', '3.3833950371681e+13', '33833950371680.99999999999999999997898175017'); - T('-6.1088406176222166146368e+22', '-2.00280388042170752227327721005e+18', '-6.109040898010258785389027327721005e+22'); - T('-2.0983e+0', '-1.1343932020174e+5', '-113441.41850174'); - T('-2e+0', '-1.19204063249021e+4', '-11922.4063249021'); - T('3e+0', '-2.989e+0', '0.011'); - T('-1.5828496509e+0', '-2.60683254419027318e-15', '-1.58284965090000260683254419027318'); - T('1.078440230361e-17', '-1.7739037620412430484912549e-12', '-1.7738929776389394384912549e-12'); - T('1.711170067502562238123015e+13', '2.259516522692505152e+18', '2259533634393180177.62238123015'); - T('-1.1997027e+5', '9e+0', '-119961.27'); - T('-6.7259257776601e+7', '5.960973996e-14', '-67259257.77660099999994039026004'); - T('2.85992183e+2', '-6.064117834028922826e+4', '-60355.18615728922826'); - T('7.934778e+6', '-9.4139862782877690738251378918e+28', '-9.413986278287769073824344414e+28'); - T('-6.263942705879383579638312222e+18', '3.2403266e+2', '-6263942705879383255.605652222'); - T('-2.329980632158e+5', '-1.08e-19', '-232998.063215800000000000108'); - T('-2.60095989544433e-14', '2.56e-5', '0.0000255999999739904010455567'); - T('-1.001038173511924331447439e+24', '-3e+0', '-1.001038173511924331447442e+24'); - T('3.68958378497693152e+6', '2.3811e+1', '3689607.59597693152'); - T('-7.20153952e-2', '-1.14726471710912029765e+1', '-11.5446625662912029765'); - T('4.66584406082341e+12', '-6.1465061983e+5', '4665843446172.79017'); - T('-7.088494e+5', '9.24436069228226918e+0', '-708840.15563930771773082'); - T('3.45085557305234282971e-8', '1.40482921012791804198897e+23', '1.404829210127918041988970000000345085557305234282971e+23'); - T('-2.8679709521880775607842e+21', '-5e+0', '-2.8679709521880775607892e+21'); - T('6.49984583317234152952e+17', '-2.9114532734232268763826e-20', '649984583317234152.951999999999999999970885467265767731236174'); - T('2.6e+0', '7.759622397664468658e+14', '775962239766449.4658'); - T('1.12464142221080461622674e-17', '4.39864275886353589274384e+23', '4.398642758863535892743840000000000000000112464142221080461622674e+23'); - T('-1.0485669677437140330013740955e+14', '5.37355740951565887959624082769e+5', '-104856696237015.662348571521590375917231'); - T('8.019083936288e+12', '2.1955080947893037e-5', '8019083936288.000021955080947893037'); - T('-6.2275998681220583433895e+8', '5.5575382458820654178885565e+23', '5.5575382458820591902886883779416566105e+23'); - T('-1e+0', '-1.8359922820027707246784e+6', '-1835993.2820027707246784'); - T('6.8845860200016e+9', '3.53338102476e+5', '6884939358.104076'); - T('9.89004923e-1', '9.5157252327953911020394e-15', '0.9890049230000095157252327953911020394'); - T('1.95366847613052662290905e-1', '4.61089e+1', '46.304266847613052662290905'); - T('1.52850891752130568e+1', '3.8790643093207712266859866e-16', '15.28508917521305718790643093207712266859866'); - T('1e+0', '-3.351589594322899987e-13', '0.9999999999996648410405677100013'); - T('4e+0', '-2.25635728971207153477e-17', '3.9999999999999999774364271028792846523'); - T('-7.1521e+0', '3e+0', '-4.1521'); - T('5.73130841108862822977457839205e-6', '-2.0226350480263253215e+10', '-20226350480.26324748369158891137177022542160795'); - T('2.38700916108487e+10', '4.6410211658583484277994722e+24', '4.6410211658583722978910830487e+24'); - T('-1.10178448051944844475771905272e-15', '-6.39395321758408376910624e+18', '-6393953217584083769.10624000000000110178448051944844475771905272'); - T('-3.013637e-14', '1.2228170261603e+3', '1222.81702616029996986363'); - T('5.701362229840513e+1', '-4.1266579254956732345e+1', '15.747043043448397655'); - T('-1.26549524e+4', '7.114747175586575423929900617e+4', '58492.51935586575423929900617'); - T('2e+0', '-6.19566611167700965419057181e-4', '1.999380433388832299034580942819'); - T('-1.59294729923996920972246e-17', '2.05841676458664250980624366171e+12', '2058416764586.6425098062436616940705270076003079027754'); - T('-3.611261022614801981543826e+5', '-5.4e+0', '-361131.5022614801981543826'); - T('-1.382436556533e+2', '-2.0005230510874070622654e+4', '-20143.474166527370622654'); - T('2.725e+1', '6.5907103031686003312192e+10', '65907103058.936003312192'); - T('1.7102043e+1', '1.630185891228e+5', '163035.6911658'); - T('1.06251e+1', '8.86362042342990151231977e+15', '8863620423429912.13741977'); - T('-2.0075903158e+3', '4.632965490155132e+15', '4632965490153124.4096842'); - T('1.57481186e+8', '1.9928e+2', '157481385.28'); - T('-4.4540881340084554082e+12', '-8.567827997230912244e-19', '-4454088134008.4554082000000000008567827997230912244'); - T('3.0149809456450947682607926e+26', '1.52e+4', '3.0149809456450947682609446e+26'); - T('3.55773e+1', '-1.296139601615599519887e-2', '35.56433860398384400480113'); - T('-2.88697527177e-7', '8.20473793e+9', '8204737929.999999711302472823'); - T('1.22209473e+8', '-2.071859795614941e+13', '-20718475746676.41'); - T('-4.29227481925874031992865289e+13', '-3.3e-4', '-42922748192587.4035292865289'); - T('-1.12e+0', '-3.656079060826e-5', '-1.12003656079060826'); - T('-5.6653957709162986e+0', '1.8713973e-1', '-5.4782560409162986'); - T('-7.598187175103e+12', '2.95663854017257699181848633626e+17', '295656255830082596.181848633626'); - T('-7.904686344760362698443617622e+19', '1.980883539639923746866474445e-3', '-79046863447603626984.434195336460360076253133525555'); - T('-1.887416922022595192028e+16', '-4.59e-20', '-18874169220225951.9202800000000000000459'); - T('-8.148255639724e+10', '2.891684342e+8', '-81193387963.04'); - T('6.23847007946890103e-19', '-8.4455421112902026239156794885e+9', '-8445542111.290202623915679487876152992053109897'); - T('-1.625684355377512651803808e+7', '-1.348895528074479183e+18', '-1348895528090736026.55377512651803808'); - T('-6.535179015515075206e+8', '-8.95738948608652714735e-10', '-653517901.551507521495738948608652714735'); - T('-8.153e-7', '1.65820611454448412e-13', '-8.15299834179388545551588e-7'); - T('5.051843689061792432745588e+1', '2.8243308408e+8', '282433134.59843689061792432745588'); - T('-1.8e+0', '9.44922368261817e+2', '943.122368261817'); - T('-4.6e+0', '1.636104301545649956e-6', '-4.599998363895698454350044'); - T('3.9366814707165145667343522e-12', '3.0389e+4', '30389.0000000000039366814707165145667343522'); - T('7.436644701432e+7', '2.6484854e+0', '74366449.6628054'); - T('6.072728e-6', '1.091e-13', '0.0000060727281091'); - T('-9.57628017436746e+6', '-5.39066706500255775e+13', '-53906680226305.75186746'); - T('4.09624190548576e-18', '-9.6749e+2', '-967.48999999999999999590375809451424'); - T('-8.6632e+3', '2.120751089392768905787515e+24', '2.1207510893927689057788518e+24'); - T('1.857536e+2', '6.75400474e+1', '253.2936474'); - T('-5.6e-18', '-2.0950506003186642599853e+3', '-2095.0506003186642599909'); - T('3.33788850991236125e+12', '-1.58862526437795e+14', '-155524637927882.63875'); - T('3.1483e+1', '2.28650378766881198016e+12', '2286503787700.29498016'); - T('1.234624954152162611e-19', '-7.4619712e+2', '-746.1971199999999999998765375045847837389'); - T('1.080098052386732090801e+17', '3.09363317193526857948304e-13', '108009805238673209.080100000000309363317193526857948304'); - T('-2.51e+0', '1.409033443601486029357e-19', '-2.5099999999999999998590966556398513970643'); - T('5.427853163e+2', '-1.29492978844337839542353e+23', '-1.294929788443378395418102146837e+23'); - T('-2.02e+2', '5.4765009943616783637932886e+25', '5.4765009943616783637932684e+25'); - T('6.0089899644e+8', '8.77139309e+7', '688612927.34'); - T('-2.52975e+2', '-8.063181606e-8', '-252.97500008063181606'); - T('4.5094208494899584309066e+0', '-1.103e+0', '3.4064208494899584309066'); - T('3.0782e+0', '8.6800615973178390115257e-7', '3.07820086800615973178390115257'); - T('1.242839052621980122206838e+18', '3.9218504671511828734123451441e+14', '1243231237668695240.49417923451441'); - T('3e+0', '9.0309539359826e+1', '93.309539359826'); - T('-7.79925520165e-12', '2.4e-16', '-7.79901520165e-12'); - T('-7.82454855580508259123083736e+4', '-1.4505891967290641474446448e+14', '-145058919751151.9003025153059123083736'); - T('-3.23795969916119488744e-19', '6.13973898934392e+6', '6139738.989343919999999999676204030083880511256'); - T('-3.2125638937067043056e+16', '6.26147244159010381015573613741e-5', '-32125638937067043.0559373852755840989618984426386259'); - T('-5.6388596462772628354639232512e+27', '-8.7402462294e+3', '-5.6388596462772628354639319914462294e+27'); - T('-5.18916166140020398584e+3', '-2.286072187548843381829615e+12', '-2286072192738.00504322981898584'); - T('4.07978e+3', '6.009589348894649131e+1', '4139.87589348894649131'); - T('1.24981916598699796711558874e+20', '-6.097e+0', '124981916598699796705.461874'); - T('3.40205966339e+9', '-5e+0', '3402059658.39'); - T('-2.011230243535947305604087574e-1', '8.09834868377e-6', '-0.2011149260049109605604087574'); - T('1.823304324438653941487094855e+6', '-4.755e-7', '1823304.324438178441487094855'); - T('1.984404125928134e-20', '-6.0867637168658727533522913e+25', '-6.086763716865872753352291299999999999999999998015595874071866e+25'); - T('2.15e-7', '1.40111e+5', '140111.000000215'); - T('1.8919e-20', '7.1771e+4', '71771.000000000000000000018919'); - T('9.95146e+3', '-3.9373688835252249931e+10', '-39373678883.792249931'); - T('-1.014255162652494738303244155e+7', '-2.67797715547e-5', '-10142551.62655172715458714155'); - T('-4.428e+0', '1.3437431538744606393264041272e+3', '1339.3151538744606393264041272'); - T('-2e+0', '-2.229409910360055e+4', '-22296.09910360055'); - T('4.0148389757764685838e+4', '3.07591618307944204e+15', '3075916183119590.429757764685838'); - T('1.5e+0', '3.204179e+2', '321.9179'); - T('1.7628168176292522230070264e-9', '-7.857162462055267e+5', '-785716.2462055249371831823707477769929736'); - T('-4.7068322333826667e+2', '2.6204796284915915378e+6', '2620008.94526825327113'); - T('-5.7849662e+6', '-1.67379927e+8', '-173164893.2'); - T('6.36341614538e+4', '-5.684708914970007106903e+11', '-568470827862.8392568903'); - T('-9.8170683973203026118362784916e-18', '-4.76099856150535148899823166528e+24', '-4.7609985615053514889982316652800000000000098170683973203026118362784916e+24'); - T('-1.450475441789747351396091722e-14', '9.5e-16', '-1.355475441789747351396091722e-14'); - T('-1.2401309543790470973e+12', '-3.283421840845701731666242363e-14', '-1240130954379.04709730000003283421840845701731666242363'); - T('3.8284741521518e+9', '1.040053292332476e+7', '3838874685.07512476'); - T('-3.629548186614033358094334214e+14', '3.88460431849184e-13', '-362954818661403.335809433421011539568150816'); - T('4.492353541896215e+4', '4.2278871477030354988345988e+12', '4227887192626.5709177967488'); - T('1.39125503887158081793020576e+12', '7.107400120480733e+4', '1391255109945.58202273753576'); - T('4.29162281457350835270745e-1', '-8.29e+0', '-7.860837718542649164729255'); - T('9.8480007978020274403298876e-14', '-9e+0', '-8.999999999999901519992021979725596701124'); - T('-6.065629590943247e+11', '2.1353939336e-5', '-606562959094.324678646060664'); - T('-1.90520093211683e-14', '2.6011329423597853e+3', '2601.1329423597852809479906788317'); - T('-5.258159e-8', '1.79707627e+3', '1797.07626994741841'); - T('4.39e-13', '3.909008772398642e-9', '3.909447772398642e-9'); - T('-5.5413711e+1', '1.72056051290943960725138e+22', '1.7205605129094396072458386289e+22'); - T('-2.653033e+6', '-2.3e+2', '-2653263'); - T('2.1e+0', '-1.03e-12', '2.09999999999897'); - T('4.5e+0', '5.57773e+5', '557777.5'); - T('-1.31252712310416354e-17', '-5.34133135e+6', '-5341331.3500000000000000131252712310416354'); - T('3.5452349200934969e+11', '8.46089262134099e+10', '439132418222.75959'); - T('-2.39151247297029e+0', '-3.4e+1', '-36.39151247297029'); - T('1.04933449400897990977690656e+16', '-2.0991e+0', '10493344940089796.9986690656'); - T('-2.3192197014588986e+10', '1.3582e-16', '-23192197014.58898599999999986418'); - T('7.142194053338425321066077e+5', '1.90025134243757962899e+1', '714238.4078472669079028976'); - T('-1.136854e-7', '9.38832e+5', '938831.9999998863146'); - T('3.32614494028772216103868273496e+27', '2.7733154489672324e+9', '3.3261449402877221638119981839272324e+27'); - T('8.53310299029659557937678946674e+29', '-2.171026229e-18', '8.53310299029659557937678946673999999999999999997828973771e+29'); - T('-8.7775827884702947387676403e+9', '-2.24368450892611e+10', '-31214427877.7313947387676403'); - T('-5.2404730569306871e-14', '-1.95066228095626569312714706e+26', '-1.95066228095626569312714706000000000000052404730569306871e+26'); - T('-1.3962539732462279142518e+9', '5.818337806672885323307992101e+8', '-814420192.5789393819210007899'); - T('-3e+0', '-3.758144520778459805048058852e+16', '-37581445207784601.05048058852'); - T('4.533812642503788216091413e-2', '0e+0', '0.04533812642503788216091413'); - T('2.2345667600317984449936934959e+28', '-2.312549676277765984005310857e+23', '2.23454363453503566733385344279143e+28'); - T('5.890444410932411361081252e+15', '3.886333434874616465e-9', '5890444410932411.361081255886333434874616465'); - T('7.0771471576147436232551549e+25', '3.31023407231546910086281e+14', '7.0771471576478459639783095910086281e+25'); - T('-4.579025795557e+9', '-9.412662879882994536113862e+19', '-94126628803408971156.69562'); - T('6.68976500113452229442881759e+16', '9.35885176e+2', '66897650011346158.8294641759'); - T('1.8481649705340526197387e+16', '-2.6037916468e+0', '18481649705340523.5935953532'); - T('4.57418412e+2', '1.2332172148052647e+6', '1233674.6332172647'); - T('1.11e+1', '-2.6e+0', '8.5'); - T('-2.1661e+3', '-3.7327283613e-10', '-2166.10000000037327283613'); - T('1.756224491703e-3', '4.5319398279654e+6', '4531939.829721624491703'); - T('-1.34077579411e+7', '8.24170643747189e+13', '82417050966960.9589'); - T('-2.0495814528228973658098e+10', '-5.20314966589367e-15', '-20495814528.22897365809800520314966589367'); - T('8.541190743467170007744156375e-13', '7.0401506297973216018710560963e+28', '7.04015062979732160187105609630000000000008541190743467170007744156375e+28'); - T('-9.61633628e+7', '-3.613868352359377835e+11', '-361482998598.7377835'); - T('-2.767001037506171092080557112e+14', '9.244954929589141444423604e-17', '-276700103750617.10920805571119990755045070410858555576396'); - T('1.89901678657288039300855105894e-13', '-1.58598406112309192413155018311e+25', '-1.5859840611230919241315501831099999999810098321342711960699144894106e+25'); - T('1.268441520208713701742930596e+15', '4.970632009043856853119754828e+18', '4971900450564065566.821497758596'); - T('-1.9274080087e-7', '-1.226582591e+3', '-1226.58259119274080087'); - T('7.6027378901641e+4', '5.6020622089981e+2', '76587.58512254081'); - T('-8.955651e+4', '-2.311647517004775402486236216e+27', '-2.31164751700477540248632577251e+27'); - T('-8.640119777677045398616e+19', '7.1041062169678654e-10', '-86401197776770453986.15999999928958937830321346'); - T('-4.9472e+1', '-9.5254025997e+4', '-95303.497997'); - T('4.9115e+4', '1.1091035133e+10', '11091084248'); - T('2.00178779e-3', '2.3e+0', '2.30200178779'); - T('-1.22635159837898393566542487e+7', '7.6174490056742349880855e-11', '-12263515.983789839280479758643257650119145'); - T('5e+0', '4.83e+0', '9.83'); - T('-5.18305e+1', '2.06741e+0', '-49.76309'); - T('4.732184851555942426024763e-20', '1.536847890671368e+15', '1536847890671368.00000000000000000004732184851555942426024763'); - T('1.88358776282573960911e+15', '-5.5178544e-9', '1883587762825739.6091099944821456'); - T('-7.250860069e+9', '-2.0722613389416e-6', '-7250860069.0000020722613389416'); - T('-9.37492384e-16', '-3.59438537290428941803686306e+26', '-3.59438537290428941803686306000000000000000937492384e+26'); - T('2.29612282112427409597796e+6', '-2.44261697753e+0', '2296120.37850729656597796'); - T('-4.410025312651288094581277836e+21', '-1.448656017e-16', '-4.4100253126512880945812778360000000001448656017e+21'); - T('-1.7181773728e+9', '-1.896321199e+7', '-1737140584.79'); - T('4.3098015497657959948133e+20', '1.274986092270260964754410066e+11', '430980155104078208708.3560964754410066'); - T('-2.1959570176e+10', '5.725576310292088e-18', '-21959570175.999999999999999994274423689707912'); - T('-1.44792248534417343390548623e+21', '1e+0', '-1.44792248534417343390448623e+21'); - T('1.040704879928354425713e+2', '4.86388848511334545e+2', '590.4593365041699875713'); - T('4.241468133452732043755761186e+16', '-2.73798399968495e+11', '42414407536127351.94255761186'); - T('-2e+0', '6.24224662705e+11', '624224662703'); - T('5.6641294006148610219533163e+0', '-2.12295174799e+11', '-212295174793.3358705993851389780466837'); - T('2.865e+0', '-4.095879034404159898232e-16', '2.8649999999999995904120965595840101768'); - T('1.897905e+1', '6.596474438004821e+15', '6596474438004839.97905'); - T('2.8032755954946389580459726817e+0', '-3.504845500434e+4', '-35045.6517287445053610419540273183'); - T('3.2100930836673e+7', '1.7556652634247164889788e+3', '32102686.5019364247164889788'); - T('3.94508726739917261971194668167e+20', '3.2678976e-12', '394508726739917261971.1946681670032678976'); - T('1.013478996e+6', '-1.35851240932e+11', '-135850227453.004'); - T('5.76471020553517e+10', '9.361663010412251704182487e+1', '57647102148.96833010412251704182487'); - T('8.039198206551479e-19', '-4.7304610153534734555e+11', '-473046101535.3473455499999999991960801793448521'); - T('1.08616611370746e+10', '1.63357530853972701257283441042e+29', '1.633575308539727012681451021790746e+29'); - T('8.985857919040188655e+18', '6.9122771945490484660606087488e+22', '6.9131757803409524849261087488e+22'); - T('8.55516146e+6', '-5.20868e-6', '8555161.45999479132'); - T('1.35007756418551e+5', '2.1871207843576e-10', '135007.75641855121871207843576'); - T('1.997393922577102e+15', '2.04297682524767e+14', '2201691605101869'); - T('-2.8299e+0', '-2.0533e+1', '-23.3629'); - T('9.801120776319968546478e-1', '-5.506831779512856926053754757e-6', '0.980106570800217341790873946245243'); - T('4.7906337242e+7', '-3.024012845303e+0', '47906334.217987154697'); - T('-1.27217277089e+6', '-2.5964435963219617e+8', '-260916532.40308617'); - T('-9.42191e-10', '2.844075292805153735859165701e+3', '2844.075292804211544859165701'); - T('-2.6967949047958223297482e+19', '9.67282581408114114e+13', '-26967852319700082486.0706'); - T('-1.1745879912966672172374876e+14', '-5.942752909258700258e-14', '-117458799129666.72172374876005942752909258700258'); - T('1.17492331131707e+14', '-1.85e+2', '117492331131522'); - T('3.8237936883565271658e-7', '-7.468507e+1', '-74.68506961762063116434728342'); - T('2.080597621127443899864e+7', '2.0363911e+2', '20806179.85038443899864'); - T('-1.317672639296246e+11', '-3.47791814748480321636668116e+26', '-3.477918147484804534039320456246e+26'); - T('4.02924099e+1', '5.28393737349807e+9', '5283937413.7904799'); - T('3.62917205826288627489788295e+18', '2.49970474597037787872e+12', '3629174557967632245.27576167'); - T('3.08272649390034127669268182e-2', '3e+0', '3.0308272649390034127669268182'); - T('5.85719579984856882552621456e+26', '-2e+0', '5.85719579984856882552621454e+26'); - T('-2.50225156633622568317671509e-9', '-2.2582829e+2', '-225.82829000250225156633622568317671509'); - T('-5.15193401834588205516587050994e-14', '1.4e+0', '1.3999999999999484806598165411794483412949006'); - T('1e+0', '8.8924e+0', '9.8924'); - T('-3.3e+0', '-7.8502049490351637397e-8', '-3.300000078502049490351637397'); - T('-7.33960473805391e+11', '7.439838102434947302e+0', '-733960473797.951161897565052698'); - T('-3.16e-5', '1.726737549992789265e+13', '17267375499927.8926184'); - T('4.270228010774903285941e+15', '3.46096007736828546415995945e+26', '3.46096007741098774426770848285941e+26'); - T('-2.10368325850606703058e+20', '-2.08133369e+0', '-210368325850606703060.08133369'); - T('1.7e+1', '-1.0122120905476e+13', '-10122120905459'); - T('-7.07684131786e+1', '2.63774583435255785325881638e+25', '2.63774583435255785325880930315868214e+25'); - T('9.1072366943654984307009963e+25', '1.439998771392437399072989e+2', '9.10723669436549843070101069998771392437399072989e+25'); - T('-2.291554e-12', '2.61075274155651389913495756e-20', '-2.2915539738924725844348610086504244e-12'); - T('1.7602843372492822519e+15', '-8.1404508102e+7', '1760284255844774.1499'); - T('-4e+0', '-1.944878631711881888860126e+0', '-5.944878631711881888860126'); - T('-2.187281084011878193e+17', '-7.474048902432652904641e-13', '-218728108401187819.3000000000007474048902432652904641'); - T('3.2e-19', '3.681598265268061504382107e+7', '36815982.65268061504382107032'); - T('-7.99963142249e+5', '-1.10759709047786981579e+17', '-110759709048586944.721249'); - T('8.6126004e+7', '-2.260854106319155e+12', '-2260767980315.155'); - T('-1.545857065710954713345527676e+7', '1.693211571e+2', '-15458401.33595244713345527676'); - T('1.7634085229179948402e-1', '-7.72257679334452942471286361e+10', '-77225767933.26895339483683661598'); - T('-4.09737779175073422506155472749e+17', '-9.371187455652828779751905571e-19', '-409737779175073422.5061554727490000009371187455652828779751905571'); - T('2.94436782641191186e+1', '-1.757436041e+0', '27.6862422231191186'); - T('1e+0', '6.393155e+4', '63932.55'); - T('6.94692049e-4', '1.1351884189267733e+13', '11351884189267.733694692049'); - T('-6.30461698646036622857426e-5', '-4.09097e+1', '-40.9097630461698646036622857426'); - T('-2.0402e-20', '1.67107872884e+7', '16710787.288399999999999999979598'); - T('5.532395277106440788e+9', '-7.24995e+5', '5531670282.106440788'); - T('6.000727e-18', '6.917267560158418e+11', '691726756015.841800000000000006000727'); - T('1.166055456823e+12', '-5.5020976743949e+12', '-4336042217571.9'); - T('-3.91173319151e-2', '4.41620271855e-17', '-0.0391173319150999558379728145'); - T('4.91856485935137e-1', '-1.08457423464500916876e+19', '-10845742346450091687.108143514064863'); - T('2.09824848244684254866384581e+26', '3.638246794566e+10', '2.0982484824468429124885252666e+26'); - T('-3.2e-8', '-7.140239683783e-17', '-3.200000007140239683783e-8'); - T('1.2946e+4', '6.4275853487855044216637711965e+27', '6.4275853487855044216637841425e+27'); - T('-2.31e+1', '-5.1e+0', '-28.2'); - T('-5.98100271250578949179e+8', '2.012527542898146781797867e+2', '-598100069.9978246593643218202133'); - T('-2.2616174364e+6', '1.808741032320373831865e+21', '1.8087410323203715702475636e+21'); - T('-1.59844056581e+11', '-3.677066761421338e-2', '-159844056581.03677066761421338'); - T('-3.070121910623175279e-4', '-8.191845955248936529857e+0', '-8.1921529674399988473849'); - T('3e+0', '-3.131384399e+0', '-0.131384399'); - T('5.493193351746495014e+9', '1.0058110782705526011700063e+10', '15551304134.452021025700063'); - T('3.7662480770326031342303292983e+26', '-1.532179017e+5', '3.766248077032603134228797119283e+26'); - T('2.2078732616074486433852e+19', '-8.0117272927216e+5', '22078732616073685261.12272784'); - T('-1.101469921604903937413697e+24', '-5.6493478665614358249763e+22', '-1.15796340027051829566346e+24'); - T('4.002068393e+2', '3.88674498621732e-19', '400.206839300000000000388674498621732'); - T('1.18924625762106479751351e+1', '2.12367151349326e-7', '11.8924627885777993244611'); - T('6.18899636825e+1', '-1.34517400616695669045e-3', '61.88861850849383304330955'); - T('-1.727166e+4', '-1.232546640708229439e-7', '-17271.6600001232546640708229439'); - T('-7.39e-16', '2.158174383154757e-7', '2.158174375764757e-7'); - T('5.95645368014790753037091178681e-18', '8.9194691702199e+13', '89194691702199.00000000000000000595645368014790753037091178681'); - T('2.4544990425537516895759e+6', '1.2777961e+5', '2582278.6525537516895759'); - T('-5.185388510885e+1', '-7.693787224e-8', '-51.85388518578787224'); - T('-2.7398396455549889037919557e+23', '-4.220983829023255e+0', '-2.73983964555498890379199790983829023255e+23'); - T('1.02153991719e+1', '9.3244708599174510285e-9', '10.2153991812244708599174510285'); - T('4.60472064169766494e+16', '-1.0328246092260039e+0', '46047206416976648.3671753907739961'); - T('-2.38454077437299e+14', '-4e+0', '-238454077437303'); - T('8.370371680400711505807e+17', '7.56e-7', '837037168040071150.580700756'); - T('2.10262406584177455194e+6', '-7.99673704574e+1', '2102544.09847131715194'); - T('1.35918051082554629399892854005e+7', '-9.05428949025616791486522594e+1', '13591714.5653605603783101367482406'); - T('4.19333658548894567e+0', '1e+0', '5.19333658548894567'); - T('-1.12684363429737223640594383707e+22', '8.25876483519322470373806e+21', '-3.0096715077804976603213783707e+21'); - T('0e+0', '6.04e+2', '604'); - T('1.8364537e+2', '1.0468696299566552286716e+22', '1.046869629956655228689964537e+22'); - T('-5.073984e+6', '6.9887615721504817196587e+8', '693802173.21504817196587'); - T('2.5457e+2', '1.341466050473471653464e+9', '1341466305.043471653464'); - T('5.448451501591168054051559931e+5', '6.906967417242e-6', '544845.1501660237728223979931'); - T('-1.194671553787672e+1', '-1.91896603190801227e+3', '-1930.91274744588899'); - T('1.279395975361696355442e+8', '-6.96569613221558540371e+7', '58282636.2140137815071'); - T('-5.97073932850348e-7', '-2.2291090891563813e+4', '-22291.090892160886932850348'); - T('1.464561173e+9', '1e+0', '1464561174'); - T('-9.4963284032193e+3', '6.16644216458418847e+10', '61664412149.5134814807'); - T('-5.4865356898608376e+9', '5e+0', '-5486535684.8608376'); - T('1.807335611418e+5', '0e+0', '180733.5611418'); - T('4.79648059622793e+11', '-5.79415144368e+3', '479648053828.64155632'); - T('-1.19816450616e+11', '-5.716149095e-7', '-119816450616.0000005716149095'); - T('-2.3561102073882235262820415e-17', '-1.608713271019924e-3', '-0.001608713271019947561102073882235262820415'); - T('4.34065400608679942e+8', '-6.6465252539670797297214992789e+4', '433998935.356140271202702785007211'); - T('3.0930179144e+10', '0e+0', '30930179144'); - T('5.366042e+2', '2.270835328764610647e+18', '2270835328764611183.6042'); - T('7.48097472370778786852679e-7', '9.4767671341211803315002015e+26', '9.47676713412118033150020150000000748097472370778786852679e+26'); - T('-8.23842e+4', '1.229458568566523723615668197597e+14', '122945856774268.1723615668197597'); - T('-8.7862458629211487549e+19', '-1.1019849690697e+0', '-87862458629211487550.1019849690697'); - T('0e+0', '1.089862696164931e+15', '1089862696164931'); - T('-1.4492938845e+8', '-1.42921263881025236036504955e+26', '-1.4292126388102523618143434345e+26'); - T('-1.6381521194899074907e+6', '5.6572651171333e-11', '-1638152.119489907434127348828667'); - T('-4.396054117495148392356145377e+21', '-1.829550398438512721241206e+17', '-4.3962370725349922436282694976e+21'); - T('3.742420087218951e+10', '-1.730936977e+2', '37424200699.0958123'); - T('-1.1285098282e+2', '3.0174920978669756069e-1', '-112.54923361021330243931'); - T('3.328692e-19', '-3.74463079e+10', '-37446307899.9999999999999999996671308'); - T('1.28232894392211733573999076556e+29', '1.149729331569322243219279e+20', '1.282328945071846667309313008779279e+29'); - T('1.07034e+2', '1.4997e+1', '122.031'); - T('-2.76584099e-19', '-3.3993789e-8', '-3.3993789000276584099e-8'); - T('-4.60271074562e+11', '-3.45574059291359666323689575e+15', '-3456200863988158.66323689575'); - T('1.73104292971e+10', '7.220485847821601e+10', '89515287775.31601'); - T('2.26079231553066e+14', '-3.429835324275129e+15', '-3203756092722063'); - T('4.909949450328607351257e+9', '1.693032494154686e+15', '1693037404104136.328607351257'); - T('2.804004587e+1', '3.054e-4', '28.04035127'); - T('-1.21373e+4', '-1.7051357521743463e+13', '-17051357533880.763'); - T('-2.010863577144665818021832751e+17', '-1.1990113e+7', '-201086357726456694.8021832751'); - T('-7.1235473e+6', '-3.145986004148e+9', '-3153109551.448'); - T('1.3665398036864664266039e+22', '4.089516e-2', '1.366539803686466426603904089516e+22'); - T('1.727799e+0', '-4.8149925e+4', '-48148.197201'); - T('6.6630744630002551658489e+11', '-5.8410410897522728193e+12', '-5174733643452.24730271511'); - T('2.0767364695045007623516126e+11', '6.25410192352696e+8', '208299057142.80277223516126'); - T('7.75e+0', '-1.569335603101854838490073823e-12', '7.749999999998430664396898145161509926177'); - T('5e+0', '-7.431618517651602908e+18', '-7431618517651602903'); - T('-1.5453e+3', '-3.9000399435568029e-6', '-1545.3000039000399435568029'); - T('-7.0748737648616353693e+0', '2.591961010757e+5', '259189.0262019351383646307'); - T('1.651e+4', '-2.8703125534636e+9', '-2870296043.4636'); - T('3.087702748515e-12', '8.3067008464351e+3', '8306.700846435103087702748515'); - T('7.7880835734433871606349974196e+9', '2.82154e+4', '7788111788.8433871606349974196'); - T('-1.9482797447534242447e+5', '4.172181002194178915e-13', '-194827.9744753424240527818997805821085'); - T('1.23e+0', '1.22e+0', '2.45'); - T('1.692421753e-9', '8.9292167159609532663074588e+4', '89292.167159611225084827588'); - T('-4.003138001375e+6', '-3.6225528729195e+13', '-36225532732333.001375'); - T('-1.043499514e+8', '1.85379394110541607112156303315e+27', '1.85379394110541607101721308175e+27'); - T('1.2e+0', '-2.2e+0', '-1'); - T('-4.59964147358e+0', '-1.245052236142679713264875449e+25', '-1.245052236142679713264875908964147358e+25'); - T('1.435745816367079985483e-17', '-2.2506199410005066316855e-13', '-2.2504763664188699236869517e-13'); - T('3.9212949955518e+12', '-6.253e+2', '3921294994926.5'); - T('3.272898632836139464918e+14', '-1.125321770879687081334515545e+6', '327289862158292.175612112918665484455'); - T('-7.0051742181e+0', '-3.558851591145309897e+6', '-3558858.596319527997'); - T('-1.17791e-5', '-2.8283187205369969776764952883e+28', '-2.82831872053699697767649528830000117791e+28'); - T('8.6191671e-12', '-8.66936689467088e+10', '-86693668946.7087999999913808329'); - T('3.67300220532035e-3', '-2.20592e+2', '-220.58832699779467965'); - T('5.307907765699952590606427e+24', '-8.116566770561e+12', '5.307907765691836023835866e+24'); - T('1.3693156074977e+1', '-1.86125e+3', '-1847.556843925023'); - T('-1.305776227522e+0', '3.1e+0', '1.794223772478'); - T('-5.8e+0', '-4.2864143878e-14', '-5.800000000000042864143878'); - T('7.3171907466448357479336251741e-7', '-3.6643373621770251e-1', '-0.36643300449862784551642520663748259'); - T('9.5507944480252871732e+8', '-1.473719301517056667482e+7', '940342251.78735815064518'); - T('-1.594802356375808285e+18', '2.2091549349442255368551009e+23', '2.2091389869206617787722509e+23'); - T('-1.38180012856133843768288e+23', '-1.4881225686551882e+12', '-1.381800128576219663369431882e+23'); - T('3.9944940533448e-11', '-1.42182826302e+9', '-1421828263.019999999960055059466552'); - T('2.1246e+0', '-1.190013e-18', '2.124599999999999998809987'); - T('-1.6725888942e+5', '5.22591577449581327e+5', '355332.688029581327'); - T('6.2523356350387526825216271e-1', '5.8015517e+6', '5801552.32523356350387526825216271'); - T('-3.5042195675619e+11', '-1.61923859937529243154197361e+19', '-16192386344174881071.6097361'); - T('5.326226512685426512311428421e+15', '-2.14826116e+2', '5326226512685211.686195428421'); - T('-2.033908204665857e-20', '5.0334987e-20', '2.999590495334143e-20'); - T('4.92122690634e+11', '-1e+0', '492122690633'); - T('-1.850639822486488995e+3', '2.2247255806523203254e+6', '2222874.940829833836405'); - T('-1.4652329507e-8', '-2.2e+0', '-2.200000014652329507'); - T('1.031983768655972e+3', '3.196384720063040238523e+7', '31964879.18439905835723'); - T('-3.95755151236389821e+0', '8.219752462201035868e+15', '8219752462201031.91044848763610179'); - T('4.960062e-7', '-4.48e-18', '4.9600619999552e-7'); - T('8.424039578e+8', '-1.3745220992603451351702e+8', '704951747.87396548648298'); - T('5.306671354863915213e-8', '9.108152565584071569e-2', '0.09108157872255426432915213'); - T('-1.469495615534e+1', '4.847e-3', '-14.69010915534'); - T('3.5853e+3', '1.7093298564986700250582085e+15', '1709329856502255.3250582085'); - T('5.482e+2', '-4.105575442089757e+15', '-4105575442089208.8'); - T('1.99e+2', '3.8145468189e-3', '199.0038145468189'); - T('-3.49258722592820006912e-2', '-1.949843151114522843231e+2', '-195.0192409837115663237912'); - T('-1.1936922e+2', '1.94667093809609e+10', '19466709261.59168'); - T('3.0612779617e+9', '5.5021749870968147533e-4', '3061277961.70055021749870968147533'); - T('1.6469577765954843637144527776e+25', '-3.53617804087992991e+1', '1.64695777659548436371444924142195912007009e+25'); - T('5.762086232617e+3', '-1e+0', '5761.086232617'); - T('-2.085492256313382505e+20', '2.73885062e-11', '-208549225631338250499.9999999999726114938'); - T('-1.0504694638041059389625e+14', '1.2117447209021816889456469472e+27', '1.21174472090207664199926653660610375e+27'); - T('3.266124155553289418147501e+25', '-1.196361921508326229864197918e+8', '3.26612415555328940618388178491673770135802082e+25'); - T('-3.681434944093545137202e-11', '-9.8172931644e-9', '-9.85410751384093545137202e-9'); - T('-5.5110319265e+9', '2.511e+2', '-5511031675.4'); - T('2.24384830388360906481037e+4', '-6.688e+4', '-44441.5169611639093518963'); - T('1.30685382594601602875155e-13', '-2.9e-7', '-2.89999869314617405398397124845e-7'); - T('1.256635121672088721271099e+24', '9.2e+0', '1.2566351216720887212711082e+24'); - T('4.25e+1', '2.097673647e+5', '209809.8647'); - T('-1.0834844778746335e+4', '5.724238385893731161972e-7', '-10834.8447781739111614106268838028'); - T('-1.3622153693079e+13', '-1.82203795563644950428091436626e+29', '-1.82203795563644964050245129705e+29'); - T('6.124567392189732e-10', '2.086068109112e-5', '0.0000208612935478592189732'); - T('-1.01e-15', '-1.6428548827105e+6', '-1642854.88271050000000101'); - T('-4.277650516254732251e-20', '5.58481757486e+1', '55.84817574859999999995722349483745267749'); - T('-3.9947160422255e+13', '1.230577e+0', '-39947160422253.769423'); - T('-6.97056460621311741e+17', '-1.19084697861e-14', '-697056460621311741.0000000000000119084697861'); - T('1.99e+0', '2.432670941489e+2', '245.2570941489'); - T('2.8e+0', '-6e-13', '2.7999999999994'); - T('1.48e+1', '-4.493331507903141119919e+20', '-449333150790314111977.1'); - T('1.5212827e+1', '2.37852664031269644800630723e+6', '2378541.85313969644800630723'); - T('-8.68972e+3', '-3.409629e+3', '-12099.349'); - T('8.7e+0', '1.053877931698399708032024498e+3', '1062.577931698399708032024498'); - T('-5.569516602e+2', '-7.674336919779554845819e+9', '-7674337476.731215045819'); - T('-2.33172e+4', '-1.1357215e+6', '-1159038.7'); - T('-7.728437483e+4', '-1.954891686102566032254774334e-1', '-77284.5703191686102566032254774334'); - T('-1.794108984118418586e+19', '4.29563121585293316012291166e+26', '4.29563103644203474828105306e+26'); - T('-2.5159616882775e+7', '0e+0', '-25159616.882775'); - T('-1.1497021250372501e+2', '8.3582955257533834133933719723e+22', '8.358295525753383413381874951049627499e+22'); - T('2.8314056900555843e+12', '4.23695829388274243636e-6', '2831405690055.58430423695829388274243636'); - T('-1.31709787273518408e+17', '8.014510794225900917778e+4', '-131709787273438262.89205774099082222'); - T('0e+0', '-1.629e+2', '-162.9'); - T('7.65253317420838491672142405e-2', '-7.99262139691085667872536301e+15', '-7992621396910856.6022000312679161508327857595'); - T('1.890960123000345821183126769e+14', '7.20788924150109e+9', '189103220189276.0832083126769'); - T('-1.3e+0', '8.319553612816369962e+7', '83195534.82816369962'); - T('-3.5558858e+7', '-8.10954e-10', '-35558858.000000000810954'); - T('-6.59635684e-11', '-1.12991511439649957747410439089e+29', '-1.129915114396499577474104390890000000000659635684e+29'); - T('2.84985498518035e+0', '-2.69695005783e+4', '-26966.65072331481965'); - T('-6.85881760429450007919e+20', '-4.2520891329373816896808041239e-11', '-685881760429450007919.000000000042520891329373816896808041239'); - T('-7.60611902357978e+5', '0e+0', '-760611.902357978'); - T('-2.8400853393896819e-12', '3.9346602572408205959634e+10', '39346602572.4082059596311599146606103181'); - T('-6.2918148769550413935353223e-6', '-1.46926127598445193e+7', '-14692612.7598508111148769550413935353223'); - T('-6.6e+0', '5.29e+2', '522.4'); - T('-5.32901866812117076e+16', '5.923499732512e+7', '-53290186621976710.27488'); - T('2.8826366994411923511e-4', '9.0827607747846942e+14', '908276077478469.42028826366994411923511'); - T('-1.16063858058205683e+17', '1.63197623001574371048e+1', '-116063858058205666.6802376998425628952'); - T('2.33448774537387e-8', '-2.344769e+1', '-23.4476899766551225462613'); - T('5.221324777342731268951204567e+27', '5.2831642468607302614700095e+25', '5.274156419811338571565904662e+27'); - T('3.176941232598488925334e+19', '-5.78631858983696974141e+20', '-546862446657712084887.66'); - T('-9.83148865e-8', '2.162567052649e-8', '-7.668921597351e-8'); - T('1.45780087267250652143848567879e+17', '2.31e+1', '145780087267250675.243848567879'); - T('1.938157e+6', '2.60157906e+1', '1938183.0157906'); - T('2.428e-6', '-5.322e+3', '-5321.999997572'); - T('8.2046484844e+3', '2.1549373877917e+14', '215493738787374.6484844'); - T('-8.834664968e+2', '-2.55430491293e+5', '-256313.9577898'); - T('2.3572045735847686172e+12', '-1.3818314700215998e+16', '-13815957495642413.2313828'); - T('-3.2657953413e-16', '4.1453273974121236811839e-18', '-3.224342067325878763188161e-16'); - T('3.9e+1', '9.93455000207993341247941942e-15', '39.00000000000000993455000207993341247941942'); - T('9.37900728e+0', '-7.836904346001529841e-17', '9.37900727999999992163095653998470159'); - T('-3.0891e+0', '-9.719267672741339831199e+21', '-9.7192676727413398312020891e+21'); - T('1.76267171902379081421e-4', '4.274711452739918e+15', '4274711452739918.000176267171902379081421'); - T('1.3371e-5', '-2.337338537516546e+15', '-2337338537516545.999986629'); - T('5.1552633575093e+3', '-4.78079e-3', '5155.2585767193'); - T('-5.5504722943333778362e+19', '8.8121340924893706238e+8', '-55504722942452564952.75106293762'); - T('-9.56289179492575435222173761e+9', '-1.5507589407486e+14', '-155085456966654.92575435222173761'); - T('1.813253984710071e+8', '-1.19293200963040761850166359388e+11', '-119111875564.569754750166359388'); - T('4.813328953637197259781466269e-12', '-4.47e+0', '-4.469999999995186671046362802740218533731'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js deleted file mode 100644 index 896d5cd..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/pow.js +++ /dev/null @@ -1,1535 +0,0 @@ -var count = (function pow(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - MAX_POWER = 1e6; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, n, exp) { - assert(String(expected), String(new BigNumber(n).pow(exp))) - } - - log('\n Testing pow...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : false, - RANGE : 1E9, - EXPONENTIAL_AT : [-7, 21] - }); - - // ---------------------------------------------------------------- v8 start - // Tests the special cases specified by ES 15.8.2.13 - - - T(4, 2, 2); - T(2147483648, 2, 31); - T(0.25, 2, -2); - T(0.0625, 2, -4); - T(1, 1, 100); - T(0, 0, 1000); - - T(NaN, 2, NaN); - T(NaN, +0, NaN); - T(NaN, -0, NaN); - T(NaN, Infinity, NaN); - T(NaN, -Infinity, NaN); - - T(1, NaN, +0); - T(1, NaN, -0); - - T(NaN, NaN, NaN); - T(NaN, NaN, 2.2); - T(NaN, NaN, 1); - T(NaN, NaN, -1); - T(NaN, NaN, -2.2); - T(NaN, NaN, Infinity); - T(NaN, NaN, -Infinity); - - T(Infinity, 1.1, Infinity); - T(Infinity, -1.1, Infinity); - T(Infinity, 2, Infinity); - T(Infinity, -2, Infinity); - T(0, 2, -Infinity); - T(0, -2, -Infinity); - - T(+Infinity, 1/1.1, -Infinity); - T(+Infinity, 1/-1.1, -Infinity); - T(+Infinity, 1/2, -Infinity); - T(+Infinity, 1/-2, -Infinity); - - T(NaN, 1, Infinity); - T(NaN, 1, -Infinity); - T(NaN, -1, Infinity); - T(NaN, -1, -Infinity); - - T(+0, 0.1, Infinity); - T(+0, -0.1, Infinity); - T(+0, 0.999, Infinity); - T(+0, -0.999, Infinity); - - T(Infinity, 0.1, -Infinity); - T(Infinity, -0.1, -Infinity); - T(Infinity, 0.999, -Infinity); - T(Infinity, -0.999, -Infinity); - - T(Infinity, Infinity, 2); - T(+Infinity, 1/Infinity, -2); - T(Infinity, -Infinity, 2); - - T(-Infinity, -Infinity, 3); - T(-Infinity, -Infinity, 13); - - T(-Infinity, 1/-Infinity, -3); - T(-Infinity, 1/-Infinity, -13); - T(-Infinity, 1/-0, 3); - T(-Infinity, 1/-0, 13); - T(-Infinity, -0, -3); - T(-Infinity, -0, -13); - T(-Infinity, -0, -1); - - // Note: Out of range exponents become +-Infinity, - // so the result will not match Math.pow. - T(Infinity, -0, -10000000001); // Math.pow(-0, -10000000001) == -Infinity - - T(+Infinity, 1/-Infinity, -2); - - T(+Infinity, 1/+0, 1.1); - T(+Infinity, 1/+0, 2); - - T(Infinity, +0, -1.1); - T(Infinity, +0, -2); - - T(+Infinity, 1/-0, 2); - T(Infinity, -0, -2); - - T(-0.00001, -0.00001, 1.1); - T(-100000, -0.00001, -1.1); - - T(-Infinity, 1/-0, 1); - T(Infinity, 1/-0, 10000000001); // Math.pow(1/-0, 10000000001) == -Infinity - - T(NaN, 2, null); // Math.pow(2, null) == 1 - T(NaN, 2, undefined); - T(NaN, 2, NaN); - T(NaN, 2, 'erger'); - T(NaN, 2, {}); - T(NaN, 2, []); // Math.pow(2, []) == 1 - T(Infinity, 2, 1e6 + 1); - T(0, 2, -1e6 - 1); - T(Infinity, -2, 1e6 + 1); // Test 75 // Math.pow(-2, 1e6 + 1) == -Infinity - T(0, -2, -1e6 - 1); - T(0, -0.2, 1e6 + 1); - T(Infinity, -0.2, -1e6 - 1); // Math.pow(-0.2, -1e6 - 1) == -Infinity - T(0, 0.2, 1e6 + 1); - T(Infinity, 0.2, -1e6 - 1); - - // The following differ to Math.pow as the exponent will be truncated to 0, - // so the result will always be 1. - T(1, 1/-0, 0.5); // Math.pow(1/-0, 0.5) == Infinity - T(1, -0, -0.5); // Math.pow(-0, -0.5) == Infinity - T(1, 1/-0, 0.6); // Math.pow(1/-0, 0.6) == Infinity - T(1, -0, -0.6); // Math.pow(-0, -0.6) == Infinity - T(1, Infinity, 0.1); // Math.pow(Infinity, 0.1) == Infinity - T(1, 1/Infinity, -0.1); // Math.pow(1/Infinity, -0.1) == Infinity - - // ------------------------------------------------------------------ v8 end - - T(16, 2, 4.01); - T(8, 2, 3.99); - - T('4096', '8', 4); - T('-1.331', '-1.1', 3); - T('5.125696', '-2.264', 2); - T('6.7266e-7', '6.7266E-7', 1); - T('1', '-1', 8); - T('4142779.6499215776', '21.06', 5); - T('731.1616', '-5.2', 4); - T('1', '61818', 0); - T('3.2', '3.2', 1); - T('5.4139923025768140625e-41', '-1.945E-7', 6); - T('1280630.81718016', '5.8', 8); - T('3965.318943552', '15.828', 3); - T('53.721', '53.721', 1); - T('1', '-1.9', 0); - T('4.58357323731267363492522744606954913014016e-39', '-0.0000161306', 8); - T('-8560814308.6108448224', '-96.94', 5); - T('4.4127502627834341562081e-74', '-6.77E-10', 8); - T('79327261142.56790234534719652175488087744161', '23.0371', 8); - T('3.101121e-38', '1.761E-19', 2); - T('1', '-1', 4); - T('6.23201296e-28', '-1.58E-7', 4); - T('-8.50893402176e-19', '-9.476E-7', 3); - T('16', '4', 2); - T('90368789.0625', '-97.5', 4); - T('1', '-112.8', 0); - T('4.122181458338334221291398681640625e+27', '40042.5', 6); - T('5.94467302491009e+21', '1290.0', 7); - T('5.6599836943004175019970957e+25', '141437', 5); - T('9', '3', 2); - T('69.75757441', '1.7', 8); - T('1e-42', '0.0000010', 7); - T('8', '8', 1); - T('-2.5090696333749305038864384e+25', '-664', 9); - T('24794.911296', '5.4', 6); - T('7077398515.1515538432', '93.32', 5); - T('-1.4520042511984659693722813984375e-130', '-2.8295E-19', 7); - T('4', '4', 1); - T('372088627687.312953646321', '781.019', 4); - T('-5.3864523289963490660381317787272961329536e-23', '-0.000658806', 7); - T('-1.8', '-1.8', 1); - T('1', '-5.9', 0); - T('1', '2', 0); - T('-6.4097340625', '-1.45', 5); - T('170859375', '15', 7); - T('595732589817199.440265999920799232', '43.82', 9); - T('1.7080198121677824e+36', '-4200', 10); - T('1', '658.8', 0); - T('136.460505366756569881', '2.269', 6); - T('-1', '-1', 3); - T('236007.159691873761', '-22.041', 4); - T('1', '-1.1', 0); - T('287803125756.085809269657829376', '18.76', 9); - T('4.1069049025e-34', '-2.02655E-17', 2); - T('-8', '-2', 3); - T('-5.0787635527751e-52', '-5.51E-11', 5); - T('-8', '-2', 3); - T('1704883919.2576', '203.2', 4); - T('22106814.0740608', '11.2', 7); - T('3.7481851264119295287828498195966142655968201e+23', '227.71', 10); - T('-3', '-3', 1); - T('5.308416e-54', '4.8E-14', 4); - T('1', '-1', 8); - T('1', '-4.1', 0); - T('398', '398', 1); - T('1', '1.17981E-18', 0); - T('255896509713547.45824', '761.4', 5); - T('16807', '7', 5); - T('1', '232.6', 0); - T('2.67066142562472466573674890357652039841e+30', '-6358.1', 8); - T('390625', '-5', 8); - T('85766121', '21.0', 6); - T('2206809.987903620081317314341735861401', '4.309', 10); - T('6.1917364224e-80', '-1.2E-8', 10); - T('64', '-2', 6); - T('-1', '-1', 7); - T('-39.8778220049', '-2.09', 5); - T('892496818.033068251283537321', '-31.029', 6); - T('1.1289646949223432899980166202016362758071452681629968849e+25', '320.087', 10); - T('1932991.455312009', '124.569', 3); - T('635307227133823.258624', '-293.2', 6); - T('784', '-28', 2); - T('-43361725294765860565.175323475675341312', '-152.02', 9); - T('1589.6036888689492933115234375', '4.36775', 5); - T('1', '-18.4', 0); - T('20832.8532313216810321678408500840248440324096', '3.46612', 8); - T('6.5536', '-1.6', 4); - T('174729381067.247616', '5590.56', 3); - T('-4.084101e-14', '-0.0021', 5); - T('7.46848810699576790739263937619996819197249e+21', '153.93', 10); - T('2.09881105970752e-16', '0.0000059428', 3); - T('23298085122481', '-169', 6); - T('1', '-4.095E-11', 0); - T('30016915.773120638290557721', '17.629', 6); - T('16807', '7', 5); - T('130666515.5580240243056896', '-10.34', 8); - T('-5.97080224872032e-91', '-9.02E-19', 5); - T('-3450.25251', '-5.1', 5); - T('43046721', '-9', 8); - T('1', '1', 1); - T('3545.66529682492339392399', '5.1279', 5); - T('3396.171616714297', '15.0313', 3); - T('4.622674003397519975764019459730496e+33', '-408146', 6); - T('1', '918.0', 0); - T('7.59375', '1.5', 5); - T('-67822.3072849', '-4.90', 7); - T('3.7588592026706176e-104', '-1.18E-13', 8); - T('1', '1', 3); - T('5237990.22862336', '47.84', 4); - T('11698.5856', '10.4', 4); - T('110075314176', '24', 8); - T('3.24210716131761936e-27', '2.38620E-7', 4); - T('9', '3', 2); - T('14641', '121', 2); - T('62.81386652381601821841', '2.81523', 4); - T('1', '8', 0); - T('4.29981696e-160', '-1.2E-20', 8); - T('1.692652673311521044295612689449216e-7', '-0.14242', 8); - T('1', '-19.5', 0); - T('1', '8621.8', 0); - T('7.907e-7', '7.907E-7', 1); - T('1.61051', '1.1', 5); - T('1.553e-14', '1.553E-14', 1); - T('858461358961485360081', '171171', 4); - T('64', '-2', 6); - T('-2.9', '-2.9', 1); - T('-2.0661046784e-179', '-1.4E-20', 9); - T('39.0625', '-2.5', 4); - T('-391460020121.8781037', '-45.3', 7); - T('-80.1', '-80.1', 1); - T('3.5831808', '1.2', 7); - T('41.08469075197275390625', '-1.45', 10); - T('-128', '-2', 7); - T('-5277043158.170301334052958483', '-12.03', 9); - T('100.31024025', '10.0155', 2); - T('262144', '4', 9); - T('-2.66450474490105494016e-70', '-1.86E-8', 9); - T('1.58541338622748269695158625134808009096449e+21', '-131.83', 10); - T('1.69e-14', '1.3E-7', 2); - T('81', '-3', 4); - T('1.3979045762098993055105649e+25', '327', 10); - T('-2.8334269484119140625e-17', '-0.0145', 9); - T('8455365204.69607', '96.7', 5); - T('4.826809', '-1.3', 6); - T('-4.2027e-14', '-4.2027E-14', 1); - T('-3671885391606530844.02199', '-5163.9', 5); - T('1.4833', '1.4833', 1); - T('1078702060.96', '32843.6', 2); - T('16384', '4', 7); - T('0.000041046707114327285209693732389121', '-0.185729', 6); - T('9.04141586678594150656e-76', '1.73404E-19', 4); - T('7', '7', 1); - T('-5.408864751631992324037382349788164206309e+39', '-25989', 9); - T('3.6213725246884329693766314512921496510839580087890625e-58', '0.00000180255', 10); - T('51.58686976', '-2.68', 4); - T('32562222.2784028467808485507564561204461862636001', '5.6399', 10); - T('1.5269627878770126091369423832739776731492122624e-24', '-0.0041532', 10); - T('2.27128515349184346452713121698128944001e-82', '-6.849E-9', 10); - T('788.12330352545906108118941549114886272', '2.59298', 7); - T('-128', '-2', 7); - T('2.43585613160298150834272926486523151679435546875e+29', '1841.55', 9); - T('3573226485.213841', '39.1', 6); - T('5.0912', '5.0912', 1); - T('1.302260124847515625e-102', '1.0450E-17', 6); - T('-1097881.796860068547323829', '-4.69', 9); - T('24.137569', '1.70', 6); - T('67.937289638464', '-2.02', 6); - T('-91125', '-45.0', 3); - T('3.5658406477912053139330818066558837890625e-96', '1.17225E-12', 8); - T('5.11226325150500959599107782635087831282590275214649e-160', '-1.17723E-16', 10); - T('67.937289638464', '-2.02', 6); - T('-3125', '-5', 5); - T('-3125', '-5', 5); - T('-2983765.0756983032103435524997723277', '-8.4133', 7); - T('4535877.137495584829386816', '-12.866', 6); - T('256', '-2', 8); - T('-7.9', '-7.9', 1); - T('4.18161601', '1.430', 4); - T('2.3591116836e-38', '-1.53594E-19', 2); - T('6648326359.9150104576', '9.6', 10); - T('65536', '-4', 8); - T('22777216155500625', '-12285', 4); - T('1', '-1.14E-9', 0); - T('1', '7.4', 0); - T('1.21', '1.1', 2); - T('0.248', '0.248', 1); - T('-2187', '-3', 7); - T('1.48996e-23', '-3.86E-12', 2); - T('2.49173e-14', '2.49173E-14', 1); - T('-2738.124199', '-13.99', 3); - T('-2.7044661231722633428249e-63', '-3.0649E-13', 5); - T('0.0000998001', '-0.00999', 2); - T('9', '3', 2); - T('-331.370935156703232', '-3.192', 5); - T('2.611824102393094023763', '1.147', 7); - T('-527', '-527', 1); - T('27', '3', 3); - T('2.313441e-34', '3.90E-9', 4); - T('1', '-8.00148E-16', 0); - T('6.427669793976056365481141274099681e+25', '-1682.7', 8); - T('-27', '-3', 3); - T('256', '-2', 8); - T('59049', '-3', 10); - T('8.7713801081173367580884490451432713332434379776e+26', '494.66', 10); - T('20234327779106168.4159474599729911316138226499265176167424', '42.7178', 10); - T('-27', '-3', 3); - T('0.009411328144', '-0.097012', 2); - T('349044.64', '-590.8', 2); - T('4750.104241', '-4.1', 6); - T('-173928970714601588962.8103429', '-778.9', 7); - T('3656158440062976', '-36', 10); - T('6.12220032e+22', '1800', 7); - T('1', '3.4', 0); - T('9.70097321773035876225154576358130561e-37', '0.000031503', 8); - T('-12.812904', '-2.34', 3); - T('-1.7340444960685031988323168e+25', '-111638', 5); - T('282475249', '7', 10); - T('-81.746504', '-4.34', 3); - T('-7.219028320823404915424e-24', '-0.000023534', 5); - T('41.0338673', '1.7', 7); - T('2.0415562993764162403236821478431932029075456e-128', '6.4896E-15', 9); - T('82955.444920574689', '43.6129', 3); - T('-160578147647843', '-107', 7); - T('3450.25251', '5.1', 5); - T('82854921260716023991.1435387164164096', '308.88', 8); - T('1', '-285', 0); - T('390625', '-5', 8); - T('1.8189597967773564082837969e-101', '1.6217E-17', 6); - T('2.825761e-74', '4.1E-19', 4); - T('1355738723022659.5905381376', '-32.6', 10); - T('1', '26.5', 0); - T('1', '-1', 4); - T('9', '3', 2); - T('8.02677619844494861156679981606477327016984576e-140', '4.10268E-18', 8); - T('6', '6', 1); - T('-97.65625', '-2.5', 5); - T('47524', '218', 2); - T('4.70681', '4.70681', 1); - T('3588.01', '59.9', 2); - T('1', '-52.1233', 0); - T('150837370166.726828752896', '-72.960', 6); - T('1', '-202722', 0); - T('531441', '9.0', 6); - T('1', '1', 8); - T('16', '-2', 4); - T('10.5413504', '1.4', 7); - T('-43003385433558549', '-350349', 3); - T('11656', '11656.0', 1); - T('2.5937424601e-80', '-1.1E-8', 10); - T('380008', '380008', 1); - T('1', '1', 10); - T('65248.283129848297112850803864372537279713', '3.4273', 9); - T('-1147575293595.98432', '-258.2', 5); - T('1.3689e-20', '1.17E-10', 2); - T('5.9969536e-41', '-8.80E-11', 4); - T('36', '6', 2); - T('8.38561807e-52', '9.43E-18', 3); - T('4248380.5456', '45.4', 4); - T('15400296222.263289476715621650663041', '-18.769', 8); - T('2381343457183.27934976', '1242.24', 4); - T('1', '1', 4); - T('4.78918476762052235286361700161e+21', '512.9', 8); - T('2089309226.032466059985824', '73.114', 5); - T('2641.807540224', '2.4', 9); - T('1', '430.260', 0); - T('6.1917364224', '1.2', 10); - T('19407735094418288.17030696889622168576', '42.54', 10); - T('1', '-10.7661', 0); - T('-3125', '-5', 5); - T('481.890304', '2.8', 6); - T('3.341488431860881e-53', '-7.603E-14', 4); - T('1', '2.8', 0); - T('14214.495945642721', '-10.919', 4); - T('40353607', '7', 9); - T('2.033478055981629545259599e-91', '7.2719E-19', 5); - T('1.0007101809887004032e-16', '0.00518', 7); - T('82653950016', '66', 6); - T('287365339.799', '659.9', 3); - T('1.2675964125399273523216299738998904467161547776e+26', '-407.66', 10); - T('64', '-2', 6); - T('41933.25113121', '-14.31', 4); - T('-300763', '-67', 3); - T('2187', '3.00', 7); - T('1085328071.651663', '1027.670', 3); - T('3.02024876193621053068500168512434520049e-112', '7.047E-12', 10); - T('-50817457664', '-3704', 3); - T('1.2167e-14', '0.0000230', 3); - T('-47932.2', '-47932.2', 1); - T('-2187', '-3', 7); - T('-10.611843208841110742516870554084117001', '-1.3001', 9); - T('1', '-1', 2); - T('-80473337380004.2860993293', '-604.13', 5); - T('574015339044', '-757638', 2); - T('1', '1', 5); - T('2.53295162119140625e-13', '0.055', 10); - T('-6.12220032e-20', '-0.00180', 7); - T('-27', '-3', 3); - T('11040808032', '102', 5); - T('416336.3127196737601536', '5.04', 8); - T('269175550798.26432', '193.2', 5); - T('-1.528', '-1.528', 1); - T('4.782969e-127', '9.0E-19', 7); - T('-7.51e-8', '-7.51E-8', 1); - T('1024', '-2', 10); - T('607.850029476310544160862292358275390625', '2.0385', 9); - T('-11.8', '-11.8', 1); - T('1.076079329936225357094692222242816e+27', '32011.6', 6); - T('-351982550989147112', '-706058', 3); - T('1', '1', 0); - T('9', '-3', 2); - T('86.44348156327976252176', '-3.04918', 4); - T('1.382898042825325230836148576046154775429376e+34', '18518.2', 8); - T('193.180743258112', '5.7808', 3); - T('-38.98', '-38.98', 1); - T('456976', '-26', 4); - T('-5.156993509526072073746875e+24', '-87595', 5); - T('-3311111.840687797824457', '-20.137', 5); - T('-3854601532649', '-329', 5); - T('1', '-8011', 0); - T('1', '2', 0); - T('1', '-0.0185', 0); - T('245925124', '15682', 2); - T('-5.774467426440121643433984e-21', '-0.00564', 9); - T('1207.269217792', '2.2', 9); - T('4552.045708313044707921', '-4.071', 6); - T('1', '-29.2', 0); - T('-4.3847739074110089716547584e-136', '-4.604E-20', 7); - T('-7776', '-6', 5); - T('3.0745786029631524271923429376e+28', '498376', 5); - T('-322.687697779', '-1.9', 9); - T('-31084123244.396440017759765625', '-14.65', 9); - T('1.4641e-56', '1.1E-14', 4); - T('-172.10368', '-2.8', 5); - T('3894161181.1810745401', '-9.1', 10); - T('1296', '-6', 4); - T('1', '6.2', 0); - T('2.91506581425215873264648192e+26', '872', 9); - T('1.85843153221037962890625e-175', '3.85E-20', 9); - T('2534495.8401', '-39.9', 4); - T('-1.85738630687872790421037608793067224429e-7', '-0.17869', 9); - T('20711912.837890625', '6.5', 9); - T('216270112.515625', '24.5', 6); - T('1.61051e-30', '0.0000011', 5); - T('192541.45824', '11.40', 5); - T('1', '-6.91E-13', 0); - T('2313060.765625', '-11.5', 6); - T('31653832624.2576', '421.8', 4); - T('0.000008916100448256', '-0.144', 6); - T('1', '6.074', 0); - T('200476.12231936', '-4.6', 8); - T('-2097152', '-8', 7); - T('1', '1', 7); - T('1.024e-37', '-3.200E-19', 2); - T('-7.56680642578125e-40', '-0.0000450', 9); - T('22363441', '-4729', 2); - T('0.326940373369', '0.83', 6); - T('0.0653', '0.0653', 1); - T('67937289.638464', '-20.2', 6); - T('1', '-6935.7', 0); - T('37366.9453125', '4.5', 7); - T('84736910327822.09024', '610.4', 5); - T('89.3871739', '1.9', 7); - T('-74088', '-42', 3); - T('2.6', '2.6', 1); - T('-2.74625e-52', '-6.5E-18', 3); - T('7.25211296602410832237035188113814152676619241652224e-20', '0.0121912', 10); - T('-0.231616946283203125', '-0.85', 9); - T('136117620759552651.464603466304', '-717.22', 6); - T('7149.24299', '5.9', 5); - T('-105748.898523294431279732941', '-5.221', 7); - T('4', '-2', 2); - T('2.177e-10', '2.177E-10', 1); - T('729', '3', 6); - T('62050623946302131.87381413659819', '250.59', 7); - T('39413.40648961', '-14.09', 4); - T('1', '1', 0); - T('6561', '3.0', 8); - T('0.000039304', '0.034', 3); - T('343', '7', 3); - T('256', '4', 4); - T('187914065609.1136', '658.4', 4); - T('-2017403668.061600505811231934445020891', '-10.811', 9); - T('1', '-1', 2); - T('-1', '-1.0', 7); - T('-5', '-5', 1); - T('-9892530380752880769', '-129', 9); - T('6.6241549228613285241719980684340096e-106', '9.4286E-16', 7); - T('3.43333904131263903194677248e-46', '0.00000888', 9); - T('-9.7699019384092441818970744182751232e-92', '-9.9668E-14', 7); - T('22518.75390625', '-3.5', 8); - T('9.90817568487338826820891768064226576961e-66', '-7.49030E-9', 8); - T('-2', '-2', 1); - T('3.7805311079775207424e-77', '1.832E-13', 6); - T('-14326936981.650438436683776', '-107.456', 5); - T('31509057.52576', '31.6', 5); - T('-1729271944.97024', '-70.4', 5); - T('4.182119424e-81', '8.4E-17', 5); - T('5406147534197334.84011776', '-92.6', 8); - T('-0.00000363167', '-0.00000363167', 1); - T('9536.7431640625', '-2.5', 10); - T('11094619561', '-105331', 2); - T('3.0073480681463454661678314208984375e-137', '6.775E-16', 9); - T('1.5374535781262326309644119647446644001e+29', '-4449.9', 8); - T('9.70138473177843532176348676096e+29', '99496', 6); - T('127.45506816', '-3.36', 4); - T('1', '-84.7', 0); - T('1.7499128828948144488585826444218125390625e+40', '-107245', 8); - T('3577.714596', '-59.814', 2); - T('-13012.5', '-13012.5', 1); - T('-1', '-1', 1); - T('16', '2', 4); - T('254016', '504.0', 2); - T('-1607.369262344', '-11.714', 3); - T('1', '1.251E-11', 0); - T('208.5136', '3.8', 4); - T('387420489', '9', 9); - T('1', '4.2', 0); - T('6104030772588134.765625', '-427.5', 6); - T('161.29', '12.7', 2); - T('9', '3', 2); - T('-2181835737885608.101460104333373352538009179', '-50.619', 9); - T('-3997.92155722610103', '-3.27', 7); - T('2565164201769', '-117', 6); - T('-512', '-8', 3); - T('6.04380441302073327515625e+23', '-9195', 6); - T('1', '1', 5); - T('-9.2389579776e-25', '-0.0000156', 5); - T('7.997656216391946134348627101293601e+33', '17293', 8); - T('39520792565978809.524305593609', '-583.63', 6); - T('16', '-2', 4); - T('7807.4896', '-9.4', 4); - T('248832', '12.0', 5); - T('496981290961', '-89', 6); - T('-4.3606774182392e-44', '-3.5198E-15', 3); - T('16777216', '64', 4); - T('1', '1.0', 6); - T('1', '91.4', 0); - T('9.851127637605409e-117', '-4.63E-20', 6); - T('1', '-1.4E-9', 0); - T('-4.52470110728381829e-7', '-0.00767709', 3); - T('282475249', '7.0', 10); - T('16651779441254092864', '1598', 6); - T('729', '3', 6); - T('6.90946358996746999370693799867018948630842395035736169049e-104', '-4.82997E-11', 10); - T('684.84796416', '26.1696', 2); - T('-1', '-1', 5); - T('1', '-6', 0); - T('0.0000078310985281', '-0.23', 8); - T('2.274064', '-1.508', 2); - T('3.04122555034158459939649e-47', '-0.0000223', 10); - T('696452982073287.871843324909094936562277581368328192', '44.5872', 9); - T('-7.5151448e-29', '-4.22E-10', 3); - T('1', '6', 0); - T('-12.708', '-12.708', 1); - T('70', '70', 1); - T('2187', '3', 7); - T('-1.628413597910449e-174', '-4.9E-20', 9); - T('-6.312457192887951173182283446626151709594241e-66', '-5.6961E-8', 9); - T('0.000299069043583441159212021318210939', '0.4059', 9); - T('15.995353981724701', '1.741', 5); - T('1', '97857', 0); - T('0.221585791441', '-0.470729', 2); - T('1', '52.0023', 0); - T('-26015680550432', '-482', 5); - T('22903.7956', '151.34', 2); - T('6.561e-17', '-8.1E-9', 2); - T('-93189625398108974.44387339079552', '-265.58', 7); - T('-3086125724460522.34468469084288', '-163.22', 7); - T('0.0000051', '0.0000051', 1); - T('19683', '3', 9); - T('-2.4507253464874125175251e+22', '-30051', 5); - T('-38.907147732329430154371456512', '-1.502', 9); - T('4.68733667816790896452997907438948199465216e+41', '161758', 8); - T('64', '-2', 6); - T('27541696650101.74182563635028557824', '-22.08', 10); - T('1.352771823277379852935844331805603817270014056494234420224e-23', '-0.00516562', 10); - T('1', '1', 4); - T('-2350072823968', '-298', 5); - T('8941.5936', '-94.56', 2); - T('97241.5', '97241.5', 1); - T('6.93207873781332929149e-50', '9.49E-8', 7); - T('-59049', '-9', 5); - T('-8882.144880086754771640625', '-3.665', 7); - T('8100981934880.472', '20083.8', 3); - T('16', '4.0', 2); - T('6.561e-49', '-9.00E-13', 4); - T('-446592952.353220867168501', '-53.701', 5); - T('-3.2466525536194576823494051652634346881e-125', '-1.47210E-14', 9); - T('3.89751', '3.89751', 1); - T('3.8443359375e-107', '1.5E-12', 9); - T('493.039', '7.9', 3); - T('-16807', '-7', 5); - T('-4.7471727261300877329502034895519256591796875e+34', '-7127.5', 9); - T('49', '-7', 2); - T('1.27e-12', '1.27E-12', 1); - T('30373391.06115737305088', '11.72', 7); - T('1', '-1', 6); - T('-19349.17632', '-7.2', 5); - T('361', '19.0', 2); - T('1', '0', 0); - T('-10077696', '-6', 9); - T('42180.533641', '5.9', 6); - T('38.443359375', '1.5', 9); - T('1643032', '118', 3); - T('16', '-2', 4); - T('1962.49', '-44.3', 2); - T('640.09', '-25.3', 2); - T('8693.75638483077329986588967330173480782272550321318049', '-2.47697', 10); - T('8105445187812500000', '6050', 5); - T('3106365092236328976', '41982', 4); - T('1.9e-18', '1.9E-18', 1); - T('1388437454689.837102639637015104', '105.622', 6); - T('217.67', '217.67', 1); - T('-1', '-1', 1); - T('-40.84101', '-2.1', 5); - T('1.542564e-12', '-0.0000012420', 2); - T('-1.18009517625e-37', '-4.9050E-13', 3); - T('5549069137356750625', '-48535', 4); - T('1172.7599043051', '4.11', 5); - T('1.024e-39', '-3.2E-20', 2); - T('64', '-2', 6); - T('9765625', '-5', 10); - T('10174708482.4576', '317.6', 4); - T('4596.544052624786837880243001942570369016159210753', '2.55233', 9); - T('4096', '8', 4); - T('729', '-3', 6); - T('19034163', '267.0', 3); - T('7.13342911662882601e-183', '-6.1E-19', 10); - T('-8', '-2', 3); - T('7.458836077824580594735138491702651752566987e+24', '580.27', 9); - T('-1.488656882033767469315065509517197312e-126', '-1.0452E-14', 9); - T('-22512044836648447.5871232', '-216.8', 7); - T('1', '1.0', 2); - T('-1048576', '-16.0', 5); - T('2.96566225198439749053708901e+26', '196981', 5); - T('387361397731.0852349972153162834577841407848071071001', '-14.4149', 10); - T('2.5937424601', '1.1', 10); - T('1', '-132.84', 0); - T('1', '4642.2', 0); - T('-7.3499661205554469210497482752e+28', '-1612', 9); - T('2.56745903401e-35', '-5.06701E-18', 2); - T('-8.0416926477372443174045490389e-14', '-0.013469', 7); - T('481.890304', '2.8', 6); - T('-2.0079766520165347109375e+22', '-1535', 7); - T('-3.34255384e-7', '-0.00694', 3); - T('65536', '-4', 8); - T('15700.150160096030724096', '5.004', 6); - T('3', '3', 1); - T('-1024', '-4.0', 5); - T('1', '-0.0000026', 0); - T('3.75e-11', '3.75E-11', 1); - T('-2.197e-33', '-1.3E-11', 3); - T('850260.560009615038237114368', '7.032', 7); - T('1.165611915415579117119882256009e-48', '-1.02587E-8', 6); - T('1.874746414628249416823686235041e+30', '-6083', 8); - T('3541035030023585410.9685579776', '-71.6', 10); - T('159873594510682.812023861622308942042241', '59.631', 8); - T('964', '964', 1); - T('1', '7', 0); - T('1', '1', 7); - T('959554720546.9939335182868736', '-31.46', 8); - T('390625', '5', 8); - T('8.58117156760783434066136732224e-67', '9.7482E-12', 6); - T('1', '1.10E-19', 0); - T('2.7206534396294947e-38', '0.000067', 9); - T('-2.7993930117296371229848579851719540736e+30', '-22365.6', 7); - T('5531947943217503125', '5605', 5); - T('2.77921878692682183940201e+33', '2210', 10); - T('-1.34775901066369285240390603125e+29', '-669765', 5); - T('1', '1', 8); - T('-187.539', '-187.539', 1); - T('114983.567789585767578125', '3.65', 9); - T('1', '1', 6); - T('9.5563709286130016454092290324007041e+28', '-67615.9', 6); - T('2.39576999392237432790890516398336', '-1.1154', 8); - T('-23.924567789936824982851522063', '-1.423', 9); - T('39.4384', '-6.28', 2); - T('46411484401953', '33', 9); - T('3864', '3864', 1); - T('20554002898923904', '214', 7); - T('1', '-481', 0); - T('1073741824', '8', 10); - T('64', '-2', 6); - T('-15633814.156853823', '-6.3', 9); - T('7.9', '7.9', 1); - T('-284.68', '-284.68', 1); - T('1', '92.6', 0); - T('256', '4', 4); - T('-4233837892.359375', '-1617.75', 3); - T('1.01054975167057821704275308297863156222443369140625e+40', '10010.5', 10); - T('4.15867265447116306999621451776e-171', '-9.16E-18', 10); - T('14796.346375', '24.55', 3); - T('0.000003596774583043934673428448834277192142749696', '-0.208684', 8); - T('19619412024963200000', '7220', 5); - T('203.33219575276960518721', '3.77617', 4); - T('2187', '3', 7); - T('-512', '-2', 9); - T('1', '2.4E-15', 0); - T('-79', '-79', 1); - T('-281399112371155271', '-311', 7); - T('2.0441457156547956272121e-32', '-0.000005229', 6); - T('164546156906.7655853425459503979807203014092043691201', '13.2321', 10); - T('-46.13', '-46.13', 1); - T('191707312997281', '-61', 8); - T('1019.4513038883292709315124224', '3.99644', 5); - T('1', '3', 0); - T('1', '-44.4', 0); - T('545516.0701056', '6.6', 7); - T('-4177', '-4177', 1); - T('358050', '358050', 1); - T('229.97659811731444699830505796029057408', '2.17462', 7); - T('2.6108288368639387032909799e-70', '1.21159E-14', 5); - T('4325169905.757', '1629.3', 3); - T('122.5', '122.50', 1); - T('1', '-0.0001858', 0); - T('3.17145729137553882999930496108165023687245824e+34', '2819.2', 10); - T('-1', '-1', 3); - T('-49.358166606568', '-3.6682', 3); - T('-3.0228559084421978498330001408', '-1.17120', 7); - T('24.76099', '1.9', 5); - T('-17.576', '-2.6', 3); - T('-20', '-20', 1); - T('-1', '-1', 1); - T('30804.095140913337149030892729572601', '2.811', 10); - T('15625', '-5', 6); - T('117649', '7', 6); - T('27', '3', 3); - T('-65939.264', '-40.4', 3); - T('4.56976e-27', '2.6E-7', 4); - T('3052847.6176', '41.8', 4); - T('18440755681.001536', '51.4', 6); - T('693.43957', '3.7', 5); - T('-10187688835060.27636096761856', '-72.16', 7); - T('-290.1', '-290.1', 1); - T('-2097152', '-8', 7); - T('63.582', '63.582', 1); - T('-92713.643576', '-45.26', 3); - T('58778272623218534616.288838935169', '1971.83', 6); - T('606071.1605323', '6.7', 7); - T('49478904727733663575.051582184770446498259493718971258958961046708278746324459568256251259157238318185790764612200843144821137580796334089638532287323488178607687532035618686192601481827902773410791645057647691925965756808571011539462511641266331263543939501901006735272661302011976870015625991111560481188335365459566760212844848008439578745211448299643484693328447464460429576345111356618402802188681216', '-1.60380', 96); - T('1.17647340482075248419254427344376045314316013640615098803852731448350843468375614975229837000370025634765625e+81', '-1312.5', 26); - T('7.0251816660378376802360594609084621021532608383100803495211258733288152327693358768741786747381360859889479870288549139760601303377485234176e+87', '-2391.76', 26); - T('85.717123455378345835968064', '2.0998', 6); - T('7.8189586726154755713303078223442071754329e+40', '187', 18); - T('9.145283009860369082115124525217171723626500086794105722560960199131059600008740516579605574000306840952542591838726900925804876261491646795282472377021036430500854987560433039755667787412917103148092128371355207976203112911565783359385741850905996481e+41', '-6.4113', 52); - T('2.05766289512932241998482631797034621069017517962263802542480365981262536498089637707776e+86', '26', 61); - T('98190573319064.214163360748608660888346857427032348178060040012159036566957731914573312588336568078808326155328828092023492584783227218123097647282496144318320115860427194595696623235777670393347299594686642872330179664094829207439052010438267983369137644871417464586087393161049', '-1.6293', 66); - T('1.392598192044227355988772015943279484446048049140235246881310663971517522995991944491655264930301742862780134225258915488062891063359354742689683631308848403923615202977361e+171', '109', 84); - T('1.5469996446227372120183605762031536360861258626528255060075983309687394111102266369973688377324297491658050323998067994446097153176237864040180207896595918522219595889946775556217e+64', '13.37', 57); - T('417.53905413413116367045797', '1.3', 23); - T('1.624290817967129588779052613030846258081e+39', '79677', 8); - T('-6.3573488855626874208656330920509964477352567129457629687143164320289038602869782661489925857813432230614125728607177734375e-576', '-0.00000000000000935', 41); - T('4.64886146511675512184781529230310759569090675635563199653956477629674515058124652544e-866', '0.0000000000014', 73); - T('6.613998972307900952958925063693292646912001305426127894831260851822286968476028114198011923029274945784114379928252947652708965396453170282038903005249536e-263', '0.00000908', 52); - T('17179869184', '2', 34); - T('9.7756260861181096053516970094092017016032995016954767790504110039917368643756356818044285001644705953440430468819149794081183248976623767084182482857941562203266736374606395800621259352114936429301555533971456e+141', '131.6', 67); - T('4294967296', '2', 32); - T('131621703842267136', '-6', 22); - T('7.9228162514264337593543950336e+28', '2', 96); - T('-1', '-1', 41); - T('5.0096959237841976223015468271587016074738912992534254294320102857326166341642003475731604090433896328441157235303061782495282575910872792923981113856240569836427242032573810996210128117467500761653330557379347005097932959928243111015057764620250811725789666461853189934772359267843261626881e+197', '140.9', 92); - T('2.404907604760405225358828131112281116032698930082119547604265954848982041717359046106827774346003151904701415424e+111', '32', 74); - T('2.69721605590607563262106870407286853611938890184108047911269431464974473521e+22', '-2.7', 52); - T('18.174', '18.174', 1); - T('1.36891479058588375991326027382088315966463695625337436471480190078368997177499076593800206155688941388250484440597994042813512732765695774566001e+43', '2.7', 100); - T('1.25668660115116491467662710973545031109788152235501170924313646703423681882164573441433515503588152722789494580469301248e+72', '34.2', 47); - T('1.56438420672167084519979701497174364597412396629019101951505612890666817698608365177006994887516584111152450449887451995069033040411213741933147153316594951835865202053237255800944727011696760985308614176976019463960094165747239428884158901702435389388132623055120422260406418255249330452909476806656e+299', '1308', 96); - T('-3.3612593878633377323120299366598552550657318092430645826641551765299195886060921308858703945250378295445932063495284056402608601041200858277129191414584253234377130155413110017511561906751453442173764185430889086682955797697564561876544299009572864e-463', '-0.00000030640', 71); - T('-1.366174308182025187777528918308146941320736787278460889575749404867695325446359807161410602138908197731224033169833047036778978022709170976735608988099868310813030127497812540494011203545816852288666658682985428600019476831917843e+58', '-4.83', 85); - T('2.966806088806219456880539423158152815514806645521282752514016241570099725287916962770395912230014801025390625e+28', '-5.15', 40); - T('8589934592', '2', 33); - T('3.92012913845865034844198476089476040042936801910400390625e+28', '-10.5', 28); - T('6.26204859896956162110746451442214931102399028194694661966016701109504299345041406486245804277657094315831017177064948219797627444240188709011456e+72', '10.6', 71); - T('-7.4010922571797388655581604684527426699437277457499992187268655958229686891933340740793991046504324130585438416249947232728346081088006867719609592595610095069331022367447133421906806310032697675369409918188139600222703781482594772971289070262621142441874895437059567046831661495957273728351051362944953711082346089727330717918651409489163662706555003193741825901442633007312863953564385259087744338361955671878877893732351367361843585968017578125e+364', '-31956.5', 81); - T('6.192736416792149755132475219493405669399778858602560762871794455317449717448580836229845787580888290473782381059983387805505374173265513677435445890655671110840202944429668728225878544903602239e-270', '0.000319', 77); - T('2.321827472731847506187210910989207010589651530892302311791322352855446782760907718473019283821056753242967949096791603718944064726033664384082861996009850744961116407128920163494805886357836270766853975184523023642990429569615539676822828070446559161161124635674389704743948383107212919966543969471039720464085404567773913503635201792672811032312063265454094042341369554833714443413857449688164664657173315113983032808001e+220', '159.83', 100); - T('4.953736650985698001275587761883016173298229503362193331584010106486052779761329981195411366329068322677550960044762649449732919438910119549694010717647780952298320287365138145210431380601324547389442337520392258009e+27', '-2.797', 62); - T('-338678221586896.02233451034424755534030583977124338116841050703894756829829935320421996887', '-2.47', 37); - T('-3.181403788572786716059998378326698266679069780899509454959934125355133265193e-226', '-0.0000057', 43); - T('2.2481244795444847556680083178853571141700204725943661497539185751725919215990484669445118877448657555202573745174750533635052209260608084995835891707958259234271442982681066779696130155696868114346639852814575962457281749995256623713554214237458259176913852401064878760784275382146658972801541462348779288776844691139086889351786721e+179', '229.03', 76); - T('1.09544203269304121665791452848994634135137143229447033238750572549632571476402641497730897157401184093614916314911584167715115647604065370616785146866296916632437569033863034458711783186506727022529378159297811462454675308057682780534190256280910865229376785975491743196806996272790525705427972427376758443312371576466422700240638756574402393677191376501159420836822933903938571935476091044876631814554274289087939783553959776485376e+31', '-2.0436', 100); - T('-18437563379.178327736384102280592359424', '-2.4', 27); - T('-2.565217290810806995636762133271387046711787821113755094865559403845937698002650308359872294490245896048511431844327060222279092126522644090602653932364773936569690704345703125e-1286', '-0.00000000000000000245', 73); - T('-9.9938258857146531850367031e-85', '-0.0000000231', 11); - T('2.45673281757908854552870925433471410070214400334169452520459965621921664416713287959754208329284439619509099451538227140937811535553399003066102795766261859069268099803838998995339331311912275460846260697085073312049264485545427543086425664188963659692922005683716104197951717376e+78', '-6.08', 100); - T('-1.270210714458885172439348525985048001607770314656078008119108251089872343340175575576722621917724609375e+24', '-4.15', 39); - T('1209.5', '1209.5', 1); - T('1220703125', '5.0', 13); - T('2.2282376678496302739664556233420633e-74', '0.000000006553', 9); - T('-2.0143178310003212256300583293456672172631020531521918361472772972889521239226102046625809514969363623444910359830312781808037277269448486731571232348276098930038993446113250228220070581715505392835999598313673094262893473819122138457089550860895343281662272401621942844086800579631762991581889839022236592407099699255051163050728007905851774204682372669170991112060985568225152641619715730738207580551834481069203501503809308865543720800327e-380', '-0.000067223', 91); - T('2.218088039378445352751296336694731578146959285984085545221611060271486214348079661041003283535646898758718143100202167951881147633680620698026648392938984778649e+159', '893', 54); - T('2.10030968607618842407969732186669026418164521383378412734005003194384320968659491239802049483617846390172315534146347011074332799904332281963786542263761412332465321180532568441958976108339460464558490863953503079336356338135760894630619724493454777575270501253639608281424341291617698518141921861556244699796561591915201261004739209197698527393965924844797945393999012105081714167479170123104969e-75', '-0.16053', 94); - T('2.5812157101662325924336748344070521698410946762506012782923924916938485004644329931151074914373301798478548152505612780265485671672098712055026947247254600014458282820627468534250894082132928621697659949721616819635951012296371246281717642419683893063297904005186874144169940879165882368e+286', '25488', 65); - T('-15.625', '-2.5', 3); - T('2.9729685996261878754343622542880008372085710279050331084451543295302017053107644303792930816e+59', '-72.2', 32); - T('8.15730721', '1.3', 8); - T('1027.334860999330573407176938442293022889', '-1.47', 18); - T('1.20109289910050514343148045475506579676136202628631781424931463646123976128634333627993215283736800191296195442718065238702508520055513255346146658609301480565930380776363581062628797012612519067602295957218821773367819208495782017345400726347727499503218384384326417098721424389373157748956399698521853695814977704822352568748499324367082691064737392226159651276162776412093080580234527587890625e+315', '8679.5', 80); - T('-6.00774319642841528092711102659123449286352750007573133369794363392e-33', '-0.22', 49); - T('-4.399348626310072691340857398671747903319767685984244866658805429802943497233040561059795990923598510826890908258017493538766494536483606174431755682553269424176946343755577041745496403493430254087811474250251864009392456889456030217048416123130922140883015639602300329038985615284964386359900403921860549312983015992252637174331659470716194350399038561704290046291e+177', '-81.31', 93); - T('-2.8207084178214872249481823288498698761858927113247705134064774975584407746875292397517412079545141630385439164566258891612557809688920433687345470043533104587152797682527671453716396264049694524828296706083384902442044310310028264740195536658201877924115112455928789057407729309051948428713154253269588754827200494136242524139799015813072692354239567376152196027070283776e-140', '-0.022816', 85); - T('-3.05410827582876268390180635074883196222812916959850956275590047122226930793718597160851022493537771838978253152932907298258251555751167476560688772053768410645587233357374279876239597797393798828125e-247', '-0.000000217485', 37); - T('5.94029530519133658573841651381893916937282220672559984930445801765696530117833330901747112098660456061962952244422396324466169433806822249922825538552986841011e-19', '0.491', 59); - T('6.30523820693302485362185385323378612453984181696300485861970499164041182778517073604560519798249286847423997356860449832519236757706844668669858983416671702949907296869514603475482872905487176008793424936405673085021973514041591620544995041842415714193527926259387876594710020672351902248919941484928131103515625e+217', '-207.5', 94); - T('1.3437482898194084408359108790569717431056936319064040016470306278420649755238589129250716839755182586596297106623509972801915917688676116852207e-198', '0.0047', 85); - T('-7.2125976851811538835264180669311252876757309817127885777282268797579465235996423577991265862898834402822899090972405912847104748143261578733778979456054998346007864343435284069799588577484912513898046820531311312862161018665360468415091050892814436289818311468501837802070896183140379745282036670643116477155731121958797307187300620339307163520531060733946755523082115115646976e+279', '-767.6', 97); - T('-3.6014175419419889979825978713404525121917028354184157603813105843373968813713708575013260529677555144144724689493141661197266911743582631754736205113266715503341523389605232359965730457026715491821102337726896541765297511282920487936650122950956509166185123335946923710632464810273024751e+116', '-23.51', 85); - T('864441744884.215763637320205869663958329635842919446190153261333597518371076208416885489806126587561695103959519298009135858834566699504679568405218950836778578735139166130606578479646072479355927241854902595925015466294859320621226069690609744261681250304', '1.404', 81); - T('2.1740698194376449374483147468467027620784304276072222988616865620688896e+52', '808.4', 18); - T('3.8358611506121121577937e+22', '113', 11); - T('7.708142065054490966774434895299862856570563111111152865942369472254266622057906176e-375', '0.0000000000000002582', 24); - T('1.697054670829812124918589801369405630774787179949418285317226086899030607907838200923128944336540480137932154797404155642362243064347816887752994688507537824596616056930370261936449615792564115353680658971035397858675806419291627327666883921628766762017e+153', '35.3', 99); - T('-4.710128697246244834921603689e+27', '-9', 29); - T('3.2505902718449668133084058626546515621706592677748264541998335302067693284031047914414370910433910917853346703702752017311701370087768406221174636457161634693311184118695477205673579866365261461786447054994132502457715569269165081396243597525386428206972507983546973520886724081775555138991647659604473279e+52', '6.8159', 63); - T('10125003344964.40019736846338763496828575459544161517257186895064610033021488387585533013795387142569984', '1.4', 89); - T('2.42345584530855605369352607812401621812969514892052587699595659920444177232215830190610734163995767659717739085262295176867928060719223680015363045876418329825526462245791557686517318912084055326038644410192581225881763601238326486032097397313474568621301371994854117791159281618952104825018353797567777238802251899860635626775962501422496596274647502903894924414615487350912292031481351426623112873751676007424245517123533625171075882961511452925284934841852786866383531618051093655741591513417469573410554311639321196001e-979', '-0.000000000163623', 100); - T('-1.4631650542473900277009650505078819321358806229e+27', '-26.90', 19); - T('0.000005295825289418576524939548312590198218162176', '0.468', 16); - T('3.05549283928318655080789264037405744521084525112150000840590011398025015062827701972944507923133274963552582295751430636384831621423236859444282002625831436173279343347208611168256e-1317', '0.0000000000000000000436', 68); - T('6.8737496584907426626313819245031248376837843308744720028536801727310422590256416090562808800210844531270544472690018733914673078562856645346395894509829890694096382823686071373178326267458718358846285479617141539840116621230393837804338664073754005311299301249174709116759875425996420794047622228612301608179896688165566947248834248141957503280864708798493297587091913325875132574818764391975237904072613078649529818121345346997223704868660928398187111003322117526971179779471513066563912173514255531973497213908454568244522179614576040541056831042204810866674499062704103999143936e+424', '147892459.992', 52); - T('-2.8146479662541597081274416178733121860079696712353521349953087140279328650573199835200989048752954416072723266612561673395327067860385419926496980826273624648819979832189443473160998127180490840670643347268997115172483666046588726408061842543063557107507571471460449079090247848491631453237051551777817536688202337705039020111356944014738131800368308453481235885327559176247859131329636754873006899345889798004981220291943445182637375840333548122722503521409219604293110110218239977642014577818005413689988750976249287035141420798845245155557117360125630350198594871668428356167381408479509575844631810711980641599329408885428661560190538079795413218925648499321738196539353823363150418207529405972685060870280312509298991051194276419276281665021145145231388777163604743396002252126683136e+708', '-928355316.6', 79); - T('4.1550056575303757228119633897485161478257545991080710781246444078890480445595483297162130879326322767394020818992612209273113282741423297800374026062917889514219222760102972249776783705399405702208500983661432328199077976712616889331132073633345739451305161947343186063845584853370234906486236182246156880042982439581300028796255911192143593205953934116870666334468549426713036166883165227311236788431588170407270107831386834377236415331046139978378131343210669779889432793552847716954802965953947383085829332369100621026610341613919587586441133939688279844321511780619910499072915827001583773089715651976020809993294119257087611233862264828674135126902550664589266837280471718998978964104111815396251418310806010610004963036079972123625916091809522896488981728056893575146362581153784045875486607998050213627823201e-26', '-0.433918499439', 70); - T('-2.13825209215512828440269455240169347772084407562319954177735966744864590012014618496355742013223900851293500036195697397558882293948621657334016332630442341312358031641684225772703692879077286212410249112292259617578818732032e+224', '-203479518', 27); - T('4.07921626152759874706750636234610711277511981267140799487233110013700434628310396204835945123342429644616677263924098409140271398300308140751898877152374852101672423561384671338353950413166856702896620695812471792217562634286857498132969913812033679861984845959241689697235821203390602245450598886660048044481023188506388871537857616153846606889656647661553925800233006508370220964183808519443488054785371171178458637493447718543668982370416902695149696323193977948327786874993513535986236378654219637640158954029160466244562872094676729043997615005949784734421964950592990177655538750040478391007794104382875758798061808214848367338145330473927905182075863984150597953008335668923177942931986912633579578368880902417004108428955078125e-349', '0.0000007725113250445', 57); - T('5.444517870735015415413993718908291383296e+39', '8', 44); - T('-33338.549041729', '-33338.549041729', 1); - T('2.7214030202002235259872217354276868322505756236796101744750922254072943468398158090938361760503196297567571421573431913968089480080443473498108606049915577803053551131894096917430267992139228904833591260925102332702863889641131058350845466180073805176058062062511496305436593986927276878340795001904960142635221849217162104418149855782368706167456898339731322626805338533602069310753044118499679070391659043014863756212342671519561753648641528938961249781667596503442752009505056776106357574462890625e+355', '25403380.775', 48); - T('7.488967886646769020135665775188919173982517766411546419429833806092666779946692720558606535250488757150058796202968413241639517383652620019580992048245618242802791919565261399799275748008372859035772846386750851749482155871108863512939378067436886935381752737141129513585362569208124557454386670272939418822453438670913670149714787757724915875534683373244734438381987473430196456436990814262346701710120113213932002664424213764208834743329181661358839573220074737883074138029822996500442023856383570524772344040729242866145735668954219795903770313321694206678450634108956120637363083442475459132238765735069225942833258958556032448438304510175681777905847909119739292131657606066356382458693278659384332038729633098815077443043626686315515128390302721e+430', '5400237.28783', 64); - T('-134217728', '-8.00', 9); - T('6.4919612772480684272077477598407081955951769084986853540654908040236664132468736e+31', '4.6', 48); - T('-2.19516244547091597952961625454695348245614659050655334765404613313384017646438800510561124115050347626607557413049526710505947787909678168881471450760692589194458296975014469481607782428972426101228030076378151928725802874208326366011927330053807955414428037618766935246244704158022651997839e-412', '-0.000000000027838959', 39); - T('-408518.488', '-74.2', 3); - T('2.6122383559387081296537383480965114437482497294603331038492821930754511334614082451247995976011754175948033208350877260508339210350470971773483611262598975948388081226982520139805939801386768827832059816233575763932242012655210850575522139572300856461682889553829554870249034765972111622144e-53', '0.119534', 57); - T('4.9850229727065564838552075936058884072483546836617925693918734591757063770692197370714015506959425473376386516711436607268208277636503475437445688665069491061323537515635105084625953963084527783397499370629700852265394871597666675552871197319798769732286411073611671053518019648674881861991039408411419655406435532953187363560760310907326462424912442938917143874903625529560559341987014054017728254155646042683657020960066518571091535493426634709747560461439105274695605741238558071638728063086433086290881426724576410242527931842535143281385481835738259965154613661873378195341787543569962613719963795456e-148', '-0.02709904', 94); - T('1.56946509471456053067919046607778209965771259504948582489855492239980383980825548822368765834159376513519684340813231776441618746842197628264511664812727788324193189716236172201170988327488959873357917098281e-1180', '0.00000000000121', 99); - T('1.88522188856624562372708154656751441041381726119427387599765763695834615013232142421520586436232009071932931843172032205056661409003338693915273301223126561630347970098203184279906247655542800284362476149094060315694708604230353242909365032002466875120342181047689475694706227284673985251088619705863125778538982501735383260557349198668384156297528069830916927729430864813333996813440323955895348081117644429414429531206777610934118661932545955356203081687958272101e+350', '1396953.01', 57); - T('-7.4641079962956705920034912695642465787383566977879750308559196923222402311665962335871104200586964218306687527948988363660881738310704671349709669487610144905689251123467238632699575375039822099609504292687413249132266915915320573775450823119373280252201183083672896166447786672561808861768782076443312543759437244643146889964363933455672502577964296155349186564340392078021387512970362139779496580009767098175116221996336815276032e+365', '-425417.2', 65); - T('1.915651048048760989675223006710502095760272088541579446290639477213455428121307995153274075329786132157611746651e+72', '363227.051', 13); - T('-7.65032026817518248876564402449082201253180407179105772287243705588834467106246226864795794350056707139677395342984049031608196167e-158', '-0.0000000000008205956327', 13); - T('1.5286700631942576193765185769276826401e+37', '7', 44); - T('1073741824', '8', 10); - T('-7.492788722116264058568890205770570774859100309722464309788118049412229345772411480224300523702767256086276612012745150464681862935165491623598382139203570285583278591609354972796097254467143774807748614976801272704624819215123157317922738427454525033948883547809409740884056108275497786621497433099431568320476275959806764951584862378486525479494452910448127181400467328943711415916384184330110378180608e+38', '-2.6742', 91); - T('-9.9615483925456314514941835282258027490657130453558630944504898425429565393128463181577359582035968e+22', '-34.13672', 15); - T('1.399922200750534682219817715626042346444265577310152832656021878942015248035909712686518235139333930615671437276362060231490721869741275050613538630628001507198150040959125681675660226363983554975062957910826317184614904091530578807538850671607301864207908455029708464592014690257839027200102495492869235566493012545340996194182688131148892605629158333606816661843824439253963260085811270982958376407623291015625e+181', '8668.79595', 46); - T('1.1972515182562019788602740026717047105681e+40', '9', 42); - T('2.202115503151472939378975945429179012130502358719841711078827390192395746343741047199171734327335651520251442046215323779489495715592781811364085280202651471923814503516348966730262218625708815960745017538450289188340543284914566286787264564178893226078936128988787471928557990525062334846282320996222324625945765877847033774462855391128649374296526404082041033729448885939056214542657236719090328218184247313009075703142241933320700374462796901110200768625476731302618344824136736084289091354487089946804741870143078521211017751418875276281149037837553896673998109493098384421833504725859181031374464775140113274356212635994412769954920908641601e+645', '-116623347', 80); - T('2.809433795080632851709145012225734908409054034941321241601987773815883609706743541544402166343924517939889529050536360240983658675834106822309237371584880050176e+67', '29.26', 46); - T('1.07868398780558185107374474403020532661797776728251416174497323943011899689646635171198704732611201406021634948916076829493438856010253804362200645063540951721664626993793950535311074968979486772512114485903108974813153787515086384110800820767447561947653627148706348696137405309393089297059509877094341371443072935310278087678490134404105182181366232864420501488011018398616532312274978834403446637210442398221579810182631353067504903643457223517919753185513169702647264458151237138501509960401271778857785196059943376161475076004628662470655380785641707995265694079267410121449453510909358494365516418648346056999086350031787200888670260526532745451073436638759925695050423663041216049456771565033256332270529303132799570858912705564112506445240662496492805855959005388730223329638719134014885120936603994232094072118708951475531280218682408087208751084100846868818757315278245976624833064394058879581085028991210887627047410825276390136344004466080305862737728217342821469057995832117084467798274844185879951131300757779959691834097216917003287899924056620049926974974109199191606737920319507952408320236800792559969771048293815035062609730066303408711203037138390978875350456123554886388685750150167745416719567226420868939694324912807423373360490897739135611243033809540137389420138490212707060759530504538976563026719537360751101833747910242549437103469735149162329286577965743319935974856372834520558206976e-156', '-0.0256152689843076', 98); - T('2.88578006478481109681709292955455719460704031113277109068984071037918062293570113975476734737301949530731913632979303450186466568369318518876187546075767065504326813e-502', '0.000000000000027853', 37); - T('-1.130764362193076554708917348657069436161383119992010510285626112959278426786936465605907875370782367006311207257151205709430547608789956273155866459033031412425747753017041228269946019068798157376004812291000927158419091251680264057450083682494989856683271885476193403159681085354715517423876371812000883161101039915298940406738346701704184093773206563783365396974283025554248166993067633181013835776e+229', '-495.16', 85); - T('1.4079204473765793611205659398747988324553877949122198881761823569037754286497795555255078328593539192688183469346829895557363028984266513451480429352198565079209701785014261786299007878956587947295766448428517173439894654471188272662954572295701492355589193513351750151274620765557903307460230125360124013361832687856567900491820049531825904083512531047613995244068915188374911719721681159419255851678650464403431153812796388113981457279816536052532029022159116363377812871507097009696999094856073325011666162559051661029942614061375069471909443382620314251546452011990276242995027453796323946493608369520697971319607477108850805623943653859336240552463433942656966057268476396727643619402363764661755104039596942016778012443861853146848694945561138583599984515041713806683288152679908819567129262792401029872485370102439410128369121641465473638876158320127373102022232994888209825736760912929558531292428824599483050405979156494140625e+234', '-219.5259075', 100); - T('-3.077228040283419501485435148888847716813106712632276671229710377509021026817676725408321326107948661263691709915698886286976007892051135335651197784824163323643144277812710153968406419716183905139635176333083510237302643593683953953477494067043109636077672667948180821005422658784541128359007025402810248257138220199195378601727145592714535208968044372704483391015842523268884989073259915535384596690721656759730286732238685451797332150695395077171985430070293527840123294365665570804795301448909420756992e+418', '-5398620298.48', 43); - T('2591500643510.8703986391408896', '35.620', 8); - T('3.477283234494247174955772981135213481734078932418183722882598073322692286025940951446621170551672753962398590460771481424186923218942154108093532866071869012357999740676113816609494789228401437424825811561820654792528325225812752470383184957891230592748660748903040466372367629077067239697577276390325455061343687182891385586253067945740768918704902176664219044850100644662536723412908533903648591296570565588579797033639391045393005317694425271135677214884155349799855536719234969547130129e-1361', '0.00000000000000000041249830', 74); - T('-3.35390966929685775566428232543003229321430942684482327393890454463616e+26', '-6156.933746', 7); - T('-4911940958770.721866380729238693889243243167048192', '-25.7122', 9); - T('-7.2098871027996882164550848582893324736206875895159968045387594761033704208535510362468505731281582425298017917320284602282447985874106953873551e-295', '-0.0000000000001626351', 23); - T('2.09670982511886308779364382461226064522913244291274975553909045464953985730555995547122852179186171376596687978705841751285402054060384366505333092240660435368377833186306191605049e+179', '2093', 54); - T('-1.3120135409024675389197377e-32', '-0.0000000000235855553', 3); - T('3.06580286249339590556181770635869764259023245764469206004664101e-78', '0.0061', 35); - T('-4.429293345196932276984549040219058245905488651609667018402382745119170674779904528756935495114384894434070998056621967747005022674509457845620395626349316891933712941619646377506486625368600115937614507993729672492431012578899815005421568e+37', '-32.051870380', 25); - T('1.299270565684257922619246441017034698039805547412943905460754496572097300952165266370194652051376805296279609746312644347199238836765289306640625e+56', '-18.85', 44); - T('1.566108714385843340192620380546546555641735293434509574033302065853656477829384746549085411912657151882140111651595251043453318950397645765893613409097202898027341727466585518405768283017471302953847629952837298920882176e+24', '41.0192888808596', 15); - T('2.61958676888190130160363553014940478261307337527924200329289138176e+65', '-1866', 20); - T('3.23590932372253866812859949454563891250217856922745576253641197253435665205998361592799809e+89', '2474977', 14); - T('-9.7368504802272205153595678239454304952368475046930119079817985916928e+67', '-12', 63); - T('3.44552147465294110719732986332367243247925798357929806000836849e+62', '-7', 74); - T('-1.452398236000580121072066902680504451473423787336338424980953647832201352052465847557295963455561081881743103593061176242491787910639717141192177431170020387387239122306327928120484949004627255099437140135623570858068768556995906899604425201341758241176605224609375e-198', '-0.0000000003794433436895', 21); - T('128', '2', 7); - T('5.65251025822228531444194278761233641822281792819659230058333528631972497846690920646507426317458140864925211864848848044857090776165664263450974899867329254381660849739991179791628529582217569168185463633540183106805961127540063207424e+251', '-96880334819820', 18); - T('1.14107582607108828738727786705842372956085739834768525725464902794127546836243697599408154971875430236598124720627825695807225748800206865776759209466523560191022176894495595957948456740052589766169910566748987526231116768317131023909655394007055203701522554585739267475902349909475429549403555539653461493158398661311247261808161537169043101921093658271479583004747121113491003276556799338354235965632672999762610653218768326389269215399799820616040039956676066934784e-213', '-0.00000054573252549798', 34); - T('2.694661255697411397638382996364833318896569132107254175704475656993408149148787257876989709118912535228351106752665777548202167498537778413043897904425246334243516040510224069308160416421621694293323335359415777019643686364603342500176348207942392201863311693577378702165646022467014567507350758519739242895637828787757898674096128347546314083698792347687986627552406389069409804518896369803168004318670513348178554684863589395170672076476692813070782506346023243347685532106534664790313142896989018262863589145173454075951584755268325058105333073378797737002280203168643844576066486206631537822243062881472854331833497932080918039317893726556287893765343937829144478219032999389426126114377441753098232009323368937575158666282216495169817356507116769115165201637431411429901795895447411017897288700508354934492324978841890388723566094744246181121450362989343657238605524996170413474765724415123048917997930643380598337786915363082241543058132144906707064242590005607032784044327110468761297341884902367668493103410518314292043153000929758576269862004120759966136121319405434151364177997201999380295579576988910231518865392237933271936797413045669678563984190093867545214722525723761e-162', '0.0119276152381013', 84); - T('6.819668312352580735571062160710567114849175817831511892010723043920379092031215450236971346081546538898709343868035480833649809755005794379226534646933878314382300734811205288513924832344426178927991401393582816473921386210239936761734834845537558625877346857367488344220978330978463797202471868399404300493221286022793154457818428986435946448801449065938442082235318928992721704504378480165785082979441671849270351366472512862482347465713408854026594512160429600282728718794411008926422853751208126199019311146437195308261518055169159585380164716319779975316169881503852676219525036820498468552310784e+393', '510194.414', 69); - T('1.214529036103353599078303402353988354368901290518483617131872964733929620706476271152496337890625e+43', '6.5', 53); - T('-6.347837933056513353722482549802422893506022350398412637063463118408446866348060970316579990161491662971791431669434501980107126871004910084045827612746953888709955252364570683937894037212845688709149304388261135750051460016927221140392539241810645976791531257356157419153359404750948111183767643741377517979124849570287898660377838281034265223482576628270475748463593328028769895760141786535396100135700043132605861966879736164432625165034941381798797087075873047582570991477092202474033008636487673565486409112008997813187783434059853722747545465564823272494338930887139620822174942289758209743101745474476030369348174618632813079185886197394019109147868498920361931074940617039630508529285432884170952988080710596227749489369515496826666987363170244800209006727739277360232390906096945537367274422272e-1224', '-0.0000000000000007921325322', 81); - T('4.427788351999056892908779661304294204303506505740727156388644268519265092320054815319679560671232535269063116229417433542825837713401836579398864981866891524018752289794372972338646723907744000865693630274469282762772410301411230122599123677701587004286800853942816776387032063244935274501241310871747398849676492965589671571039172675061157921330595997693266588428933017692954803972839671865559553974412513763174029378195757001005995534096180268496099336902456639779966934268998934512369301143425326651935144496827467217523298707659499118081164646205877729620930792063706409045131266902206188922084763864137797951942027404778289235617846011440638260873801319970320165240018403702195879801694584203559689412731527544179035983805204513123788649219706079228081e-76', '0.0355539787671237', 52); - T('-1.2019514515640847575586926976222420288880922930930392632826439389028070216309009753873171550956237644053737905713930601182266550298694556856644221165736835506561041710133625619715943531598437067853105931820970146527606676211927176997675395162032067921680902917533169975496828556060791015625e-332', '-0.00000000000050893518745', 27); - T('-1.3089738102615705488950036718911116878301386483323342409513651601949943841095689259436086715966084434967103664037924413474102289403813212913777522181382481044473580351805322191321973e+181', '-78533', 37); - T('3.96435664551023166009432527884162006067853796367737813024190430384615252569493823212334015555476045223745267710440584785405114790003193045416759973795409712664077896837596687988358977963017261551575085886339378601753188813933464452096512526061746367179589942239837535849629855994642069316614543080293743786862266272667077293905812061925850138605681557967339405649099920095406780826427052068862402508544030914598887413326170889080842118181707782092869110288450380556681201356803298480762937106754408669544846715047370740072553230754652098629105895209895679440213970887252806092019885007412267948350528687016986211524428725145096245261205664457425524504259402407667126129396321622738877790982973827629236592975050954770759254867539024593007061691314559144608057254973749886498871153697476316002651798291357530399789489708421091129587128561305692205004611764864589809192513065786225109359726736441344e-1183', '0.000000000000000440688901534', 77); - T('2.678568043734091619878005678603454046890065730319059041066922617779738732552013071823964867731789481610691269440500962742418256182423074462657908268651743482014494029327824586172450705847083812144127819545703393146264767652584905037972471212033862288363332136481985535835026012527790465668040492097675469321915742224501044837369992177682352931842218853184230289300338298905895371981623996281414258096442423897257161265043380604655709475991898216307163238525390625e-458', '-0.0000106265', 92); - T('1.726146302297509640766292449752859764903022078656430010248920859830072010352007366328438911617657425649650367170506346895173396486476847725257574613405822496736182549233608967999820941307875511369188178896525716609263902445331754066625178138893213646783862066055205225450522717549872978272577099559202040965374304210695726239275248389809683461472065386641615538014939133369785455245219942798762563171967930161818698263654632146616677273270255164005761339575073597428814125346630365394507885993312732399706334184762774047407763728952601184374357825368624589796928083783689318973871597143367328054205245865104545174016228334760205754534111255523758589108503454315120311926536799827472005648122589642825287832641320048477707961989609306835298991026782291839544666294097047274554107822412948625252397092571160782378777183761424371215388093802134334984812532390805884157055020448204417356561101547571620503859926648120658212095674300954695082023275140281418952276189324248672101519574402708232154221216402609706003426735616605880789673740701217723552955825804146586105232550363059826111286997462404300893227116277343564362324133906878692598854932115522796052836850267098160405721244179608199869338374556585830298585958747040887791760204298688011390939627724800498866877415562066410814257206608746120224395781406201422214508056640625e+222', '260.387665955795', 92); - T('1.252453015827223091648143056289e+30', '47', 18); - T('4.593884321465082753417847006029094939767153045428871371185146539475234934788078659649525017869031479813190380591953477672897146298354193774199686172307595609685062957351072442717423824419651156326307969688849329e+172', '34973.7', 38); - T('6.4993779802563991313942147088910855038980304493628711994552936552675080091715543868582664478495863312478503560216160496462563144213423384672637506819444007554298505039521124189159003567749810227911510054190116940785207230365438230686589958633589792785739898681640625e+25', '19.527362557915', 20); - T('22876792454961', '3', 28); - T('429643228077338878294.90980773552148447232', '13385.0992', 5); - T('-7316.89', '-7316.89', 1); - T('6.87914590155026303370980110789497161335603936645395950008039524549423998547430459718690832485899591715423495939905041962091003793736119955958518759896414837384978971473726237305516963629287255286872328980051210041042418780821291070799434690334936525030793157741585829279074161542016174895927147907012499623328711921362945061656483581268375800046383063714806105729927399779641951702986991589688809363278120544452733946185051027375853021790353396740959054941411469330354238589831745170722278547542572570113574396538111546572410672138305451026720042576080626158546636278154541296219048542847365418147562911738603614657265796029784007988955899036541413836373006221312e+589', '120217094.2', 73); - T('1.239574795810526079748489147215724813987666305795348774093301305206857104388667872792722298696320762041716833793171380166642565938543813063965908215730138726274640558732378376081345774829243873301016011042987213064608498952230404692092930689186546931537772947407974492191946655043420261314494731696589682500096515708673465576418083366037746066181944261200756080966915362706737228961228094676733386508269067016989638785370510316351486703825902385195520744639816051326954756067123576368987864531312848054804595825163440506228252295842312598308190174979485478767598866319117877799314143909178603119708443578223570915610468469949806392232326089217551025083863958495966830034713358088911166327675839869180039029601144061805857957059401720225647922270097400056178339656509407631860651339114653575907071912293895974822551650560599072628850817170660484929519400346271419914740172937356080849208976491109534798334462570451085006567233874961401450283993130878770062700272556416772479998171111870509759292224746999678148420295642269858123285894535197188590937033092112714248284586801385841210089015311172545935949730111157433149124120743103281523326976e-1070', '0.00000000000025873908155486', 85); - T('5234016485162380478.15409743331356736233224871362317808951664029477472141754368438049197212877764328120319129016485361', '2.41', 49); - T('2.3587523476214488265105602233384822170431351571499949327792901375176219636953224670476463392373342279772850838452001851364491120595912397303760903286261541146631936830192308870389073374785895767836490477131403524578795077182693968484924474587814719179230245985331005838316256612823429831217004241217996728082675400098261089625533152223187450996066900095561520954236869900406302680423400482744491187930028993448348081190342732950402585676045621897388802838551757987655079454177981594526914994900926245046947484718071152759157721281932920908780781390332713691860960870572770040761154320419837824189071690254844854593343459633607733189681415999534694236173627509165089552965354274533408153893430075897901955566030923516936720199506503090119996175174794124435874644332511673899164593545913859009450879811276894036262929185905062064201251350256407499186307953211211742221462225577354600131030662462776599229715013951102968270099539931356477033894609326532954524810067603029689715219319863214513567526378103385141785789916386486343106420900301324775823843071160771421983879429528958998947915991010621806091931816141987852367290525737e+34', '2.386282102713', 91); - T('936715201610276565.121219177846759965092294037184459655112420506770954861339939295097568524612228771176779451285540872548572669139410080641220337509779355970915039117791045026675942372796217903566744371329096278047272159067195543527515016330528461268617826559677152033625945241108753484887834868554776141004652395753058963525578493344234441729097555557721919163232938285249196150226085243092573393734731092201479606268037047533934826431548289543047983548470548923290980238572301772673775072264037139381648624711690145835765678758822594470249537696766900852116381823037280731383416971641039263361', '-2.368146093671', 48); - T('1.3458439131498195323786528583479606393575536164255741666418955356844345324579594678199724544070952537313508949217012282459611297214665778807265341646101943507184150142509791982872347949683325035172100020000154912216772842085357404197730651656947685019039027437632994864578420850298458434675021508281598421364790325204120523582697615926276683088910375524563225657663644596592216948974056331399590460267403223032587644165524444425820025328591360851973651333314015380853968023632372287350054207185599371069878908668849043723938217393218749026137508121697823922573029674248393275179922555863853082171000692921875494766992093057203484510278165328340192460964396895589377301082266621542097676974077616873128400267882521248810555224844925459156239671725294657022129911051697181823809807228700964467590836700654852334498610034031401231488158553123767644737259941517947087785101465826866359735042387848014989852599568750748869928849235262872434098103652425750975704592582899579447794113208368377654003816485721230449311530271585346790530790428425713522163601027306457750920785462406436356452477565333325504326467125792987644672393798828125e-410', '0.0000087069115374365', 81); - T('-6.1929235359377507312281131012038351587368950153152975357535571845644005480462974619161439022738726479946690750026534164068777632032187658972625047122850721897565751294389171057608669479324287486532007867156146673581246410700360784140288599508760017944860321480468003345825664794759524541276131175689087951776415011273003161501760326678723814154494949608727351108658698662447773169903947201447280945550901147241628131791799019695838180988668491614860985218842845383323542953554350520436926580209264504224289641207101059908641550039414260263864284289634535580271422536744706681662746231304579346896472244224610217365387765143127793708245503177386221263366770715991973516535247445600197317181214103464901242633208165352628228359009946968657720259318250928483525927379586656228952459195584561227411138226350339186199256456210254130733123824550545306156294840068619857494045273956142065000283386051662650884544228310001e+238', '-1527.186030801', 75); - T('-9.18448171920669942200338050009727274073573579465100492416464784644248864677562331387086995022599687737054074140424187879986024804042070022603490146718362719056788563440317890910682257768632925460866552260450415793672740716743856864948011399578402033107962721324762764871499139470157293091799845778141752390211181570286270362089589942764421437922022663206638528993662330911966459538905107421403529415706249287725923857606476849002798755812680628308770502507877888997449832630062999974358780733e+247', '-11613.6333', 61); - T('9.00534500151871393968393182204789895254808009774083925739583913139744428258820018895294210766290738563245192706173741434367174311803991979819858136383571385689405915210566734194237574513700408103748220971184119700751936043969773600887138954770719916145764591788895536769504424586656704372424183902701252759414411596149470601541857251360631738659563583649636774213282738217476649973300597538010960389409378261220341346226990122343134167832094311982679300076141215464857703660864924210486350832131660412093540844768322422730252869897097733912901747800467318861862225211148617574307735346975751376032341961536913141883210606579274491424216450106329517468829186737530608281956211322014174714075245950188408511119277135829814966934159576369452442208992213257734675865633857771370587246881314008195421762766997418140893877428847481759362859431583598206066370359444199841730507231732351726597037154719568424203772133372253713759753114003013627088700294122141177777020252868547836359305587452020511868681628046227604546542259628717458912576794483424426690392370814102629028715884512020934842234539838799872e+1097', '181614013181552', 77); - T('-1.23528311430017745980681640966956076652030679452919906158752021718722301574640224534929754544956717572460637538159556600593377996815523698860198279346656557673391582603822239136397525796715515594924893485174002763423256737401358209070784994372919823627795438659925045145838110381445677693346919667629645750108678235386703421232818567784359923933722891257791623191263321196551881442530246560410717585179292007822202786185443194364605326148507122824090647294413224330381273679824886549106621139051707355050164555704989028861454165044951508278420052199256381844433504794321028008032654947772671808005663922922038567755972745149376920700771177235017180770498424038993156220009935199044697962770631826942473822311984815669248e+475', '-61431287.1198', 61); - T('2.648409294963988844015616e-24', '0.0000000138355056', 3); - T('2.40863472207038829716951461596425356200891165327233287498341065017430044564718221477455813374032856667895504085743031089347856425830213625711815509685491800628989456526993157007511653813393067316060298253585492583958097263354394562221211900373157618798878275619835293896301261289133749847496154802330721946407650402052956106639135229248180394944200385403412146150497882700273381421471626181859523581299015700836664867216504968658889499860010034200157321932124862289179191239642591047175122517733014555125735104472403712501002006088016431555682009e+357', '6337.73', 94); - T('-3502571449.82200575261531309080576', '-2.6', 23); - T('3.476476818948845998001030650476295453181247545559522084788918535203260597551626095245998397584095580303926090518042805770647508288690085639158825885044253780231438163844934309393e-520', '0.00000000000021393', 41); - T('3.01264602077503396553028159046697775952364093583950024836015253833440897836386470207048971682950128610418919156549188373312577357571717925360563881487841993249907698003381917913550805575200795765716052288892628051588664016510473689746879884622780863018244491731859793637242017876542348273336934204544690232710638389609197987886252503990407378825398639153993405459244929392649916196490420428591295051414371300821828051366484998485944752317128395695896528773542603956895037622256170062938519314235861903738115128360302046928256980541146446559607826088951046677218861706599854555915276720853351646088067836131525708447208119772629571725216339427934609234459201358526789418029470210806603721281e+161', '2312.83553970261', 48); - T('9.005184717176930478102791782076862228006327352615805784783146333035706197635879005693552412099811970184378799956879273e-246', '0.00000003753', 33); - T('1', '1', 25); - T('4.05129929545010159177895753388178150581456809338867612606558959308891452424132880822384248894555509941430703770187352267719278049966852159867408411313868048284652990968283076525530668485093689102888375971926511478236021580486207199815304541755517361681744424769768925178687424398875682126555432767026580854082660116786254097997542073404521882149466694962687119267533030305371904385001716197248516783116746628128159682519599799144439980293050507629744383718958560423968444215424641122740550965524020102239043491734038919336670135222799567722578231175799352527458223575143415900224592903685252952681818992387167675100469288777308071037639375810753979067339068471e+77', '6.310711', 97); - T('-1.1809125003067061836785344667120764389443931749265317457525459548456128442105786285468877390219672806038351135283671645849621670658638427296075188535296e+27', '-7.46960', 31); - T('-7804725.584345565904628551916716032', '-1.8', 27); - T('652.68343537143736977925527144667849979675453569710942641839519790994481', '-1.1', 68); - T('6.347632690470980780771578675552276637061059382774318001265539984506213934765263884921639481863522855446850248190640384975242547827559674641143687363586046653926918728263293566118669512822042487976415052111413256676605941161792519436820477099825895274456934341461395679285131684015935258759683653353217057215413375333241770058757608263160466756836580028579606957497117342564425931824695481220509415164212500845154298184282125397297745919183962458931412844756465334244299196320609660981439919849161615207060803762786556888490763055537968954854206553722868857068202003810763342647095974540704073677096870053573460935331503249667563019861185471271460943390068145540005687872827e-1245', '0.000000000000000002992906323', 71); - T('2.15563894172196024093920977150538929699155317817435721941139671042584098028409386483275286853014376052273085179955316467499415655783131107622838141170698636978879185262823690153018555305556315588279210146398953033272874508316308577279223442110325742384869562140427172170238905749958161250632960545305389673718773669576798283170556914818983685326769736551061354350641792755121899728402406494468077316475802887495468901294965903992610334661015465862948472103491723924769010992037621122249854108885083324606934823928420467636542974980236452139793226916820487035909041906512281298939379459990899889643386394707926539730879629157307711871371840222169925653434081781148892704580585587764074713326028394355564539751395890997165055128928791058726295150819453922316393488593599284988720811174363504621711710563117496721630026298161236567852610043373993852510501083512789025524730162959143248393084069076712374797747281972636928788000180283289392557e+413', '324425.0251253', 75); - T('1', '-3', 0); - T('4.26825223812027400796974891518773732342988745354489429495479078935112929549619739019072139340757097296812815466676129830954465240517595242384015591919845376e+55', '3.6', 100); - T('1.143346541001259437465016483752642875340200408207372315398374410086504054045958634479945641547514904516533919702060746490155830653988883705469429546657675670673347514271976875109918113055399954802405065425692486675365016543448426931378922954782957026636988416e+190', '-388997.14', 34); - T('1.391479860226959780852496779461260634580951060711489905798047445581119629509685004732118558920853318033429289719854192097911392274604744812177542476869031306237630906988638098552100901480110526866015997536096860367785128698535455722265589251495705036009334110148089566472594008624482378925581538366245059147829461639938451131334656e+162', '785.994', 56); - T('-2.039429275458086101347617297850948854294429450037773018607110681185721614063201210356599410953e+93', '-27753', 21); - T('1.8072708076715752612606017458825273480777271963492548142293548724970849500539908571180569517655791008990836891664536992680448e+43', '64022.984420938', 9); - T('-155568095557812224', '-14', 15); - T('2.18753957001465798602093911444285519704647324430365134831536108015616e+44', '4954.46', 12); - - BigNumber.config({EXPONENTIAL_AT : 0}); - - T('5.0600621890668482322956892808849303e+20', '907.27', 7); - T('-7e+0', '-7', 1); - T('6.1095374220609e+13', '7816353', 2.435); - T('-9.01e+2', '-901', 1); - T('1.016984074247269470395836690098169093010136836967e+39', '21584.7', 9); - T('1.497639134680472576e+18', '4316', 5.55); - T('4.1717657571404248e+16', '346822', 3.00435); - T('-8.983272e+1', '-89.83272', 1); - T('5.308416e+6', '-48', 4); - T('2.09764e+3', '45.8', 2.9999); - T('3.83432050166120236679168e+23', '52088', 5); - T('4.096e+3', '-4', 6.120937); - T('-2.679971527468745095582058350756311201706813294321409e+51', '-517889', 9); - T('5.067853299870089529116832768e+2', '3.47508', 5); - T('3.48822062687911109850066182676769e+32', '4129', 9); - T('1e+0', '-429.32321', 0); - T('-4.2773e+0', '-4.2773', 1); - T('-5.8169306081172252508071119604378757744768e+12', '-66.6082', 7); - T('1e+0', '-7.0654', 0); - T('-1.51655708279450944384385164853883404204414169862685507e+46', '-3956084.3', 7); - T('8.1e+1', '-3', 4); - T('1.296e+3', '-6', 4); - T('2.9e+0', '2.9', 1); - T('1.764e+3', '-42', 2); - T('-9.3418332730097368870513138581415704704611459349313e+49', '-356673', 9); - T('1.517108809906561e+15', '79', 8); - T('3.1063e+4', '31063', 1); - T('1e+0', '-21914.49416', 0); - T('1.4586250332983909737249e+10', '49.43', 6); - T('-4.208092749838142546109102616048103440952842087045576022556672e+46', '-4577028.48', 7); - T('3e+0', '3', 1); - T('1.4301918832998497740081358663795354088849575358074712812593899025686055664154241e+71', '784195396.7', 8); - T('1.914994057877243921847839041839022064004621019747303000421532785660701999616e+57', '2315715.86', 9); - T('1.40379741624014849127481344e+26', '804', 9); - T('2.1305364420464979969795870610432e+21', '18437.32', 5); - T('1e+0', '-48', 0); - T('7.018e+3', '7018', 1); - T('-5.8149737003040059690390169e+25', '-729', 9); - T('2.537640625e+9', '50375', 2); - T('1e+0', '-287', 0); - T('-1.879616311308566413901e+11', '-179.81', 5); - T('-3.73314280039567349e+17', '-3269', 5); - T('8.503056e+6', '-54', 4); - T('1.114538684361769559136325232186960408417483078419495901986816e+28', '3205.4344', 8); - T('-4.27504205e+3', '-4275.04205', 1); - T('-4.18195493e+8', '-53', 5); - T('-1.32651e+5', '-51', 3); - T('-4.309348e+6', '-4309348', 1); - T('5.2697770766776504576e+19', '-7259323024', 2); - T('7.334473e+6', '7334473', 1); - - T('4.2587208337796928798976e+22', '-674', 8); - T('2.5398714208994744315474847375553672678449979949471296663472852498581058264323e+76', '82219173067', 7); - T('3.8595867893817789e+16', '38595867893817789', 1); - T('1e+0', '6607929.612', 0); - T('2.03571124747179512510686558355453870501244709050625e+34', '-377727882.4895', 4); - T('2.45293306092383728169089251608498030232760591201e+47', '-838901', 8); - T('1e+0', '-3', 0); - T('3.834566459566834602823771544700625e+33', '248845085', 4); - T('9.9603189655699799982630929090395077799549456e+43', '-99900649454', 4); - T('4.96981290961e+11', '-89', 6); - T('1.587141827118019619140350040987490145402132153698899021243321868668968193390822866803131555419115810065' + - '08901525889227579394470766224134369e+74', '175595288.8066529', 9); - T('1.326409999413464946341631126231535779147856072448189797080406801e+19', '-60348.91227522707', 4); - T('-2.050107090202653994550415295865311714194868710425929507925126964581376e+69', '-72837546696276', 5); - T('2.0550048143314549586011369057890711537772093948321e+49', '-2129135057417', 4); - T('1e+0', '3943801.89538088', 0); - T('2.17438998607457e+14', '737', 5); - T('-2.273581752472e+10', '-22735817524.72', 1); - T('1.51891070159203e+12', '1518910701592.03', 1); - T('-6.42199562432576e+14', '-86276', 3); - T('1.33010089e+8', '11533', 2); - T('5.1662108991396663099278667856407361e+26', '-4767525.59', 4); - T('-2.197e+3', '-13', 3); - T('5.7261215932713209368576e+22', '489176', 4); - T('2.63105908732834720740862027188940646962896811537209872829318157804817881e+71', '800488505731', 6); - T('-7.8151742291e+2', '-781.51742291', 1); - T('-2.5619022164869008875e+19', '-2947955', 3); - T('1.888497394256858387595532951034741052100428552247961627495355202904723558656e+3', '-6.592180609971056972', - 4); - T('1.227102111503512992112190463e+27', '1023', 9); - T('4.762033342402709161761620616017059035607e+39', '86210167', 5); - T('1.0526899962331857933889886363874543386374239042307e+34', '6374705.107', 5); - T('8.3043861038534085480857730707894983974895341475449922046323943309856240866914720437665233e+61', - '7584431.953', 9); - T('5.4787291089024129877918140548999194405505068584642366052046899220357579072497678119620025119214429570421' + - '679076944647727607529032984620150444553526120397e+151', '72419131838243117', 9); - T('6.1203577224967e+13', '61203577224967', 1); - T('-2.6742593337474927167986914400257603e+34', '-82827', 7); - T('3.490938536648870448335810684618787855050175354916141007545163425555957335829e+75', '247548469', 9); - T('6.634204312890625e+15', '-95', 8); - T('-9.171271e+1', '-91.71271', 1); - T('5.65625765123605544067809018296482219675982471958093705254464e+59', '-9093998202', 6); - T('3.518743761e+9', '-39', 6); - T('1e+0', '-5420353171006060062', 0); - T('5.93548365959371477646876280183482286894691258676416e+26', '840398698.65610156', 3); - T('3.05021119744369888239209417566581849921624834657246971302432870103990316674041818082170961e+89', '-82045' + - '5414011161', 6); - T('3.2696530375744e+11', '571808.8', 2); - T('7.5976962512577721e+4', '-275.639189', 2); - T('1.902906615566371112511312310657143013376e+4', '7.1760176', 5); - T('1.518464318469541965652429354308518011195184133938752135708801e+60', '33317743', 8); - T('2.1320058778623362693743157943232639078619851096757416882191780337397507274264845664066920942408900138964' + - '6413824e+92', '2444169945946508.968', 6); - T('2.22147484530834915265639755288996e+8', '-14904.612860817114', 2); - T('1.492078384275163354935132877205588401e+36', '-1105217899', 4); - T('-8.706315974131812740752872336328574378946466095300435988405613445608906916485832445671913193616433992611' + - '1276712486987242162931090900645752178720048529774274761e+31', '-3538.91793390607241', 9); - - T('-2.137188356786572105085597593380951428481871335229083554584070474976079844687257680784073933135806738155' + - '846154867946651092729083821725815874768375163982851482102962410568100645181922392637169148087702583906275806' + - '254987676848814681203987550808366160736707783273633323341494160195050788402536450819951456112231044987896082' + - '054284953492245429169226582932327802987445013148530522433068163661483119195972210188504560615278918448219025' + - '00302159789434488225792e+125', '-43837.525307806238', 27); - T('6.6067183217034216835242910438119195789788339709493349261334009277024675568767116522521737472677079426635' + - '748603259327817717050761351617610783486587612028204471198915744801916514515768618923473461233676712402753179' + - '616115705829361991013069927369820940249862144e+28', '-63581.52864975395137421365938883267810362492', 6); - T('3.4979655423042386318207008930737637967359866053138998526505479068249644854876701482811561341347105355107' + - '695596776164641704434681969517211923069874207364828070027467521475982678466251216378786468053405366050900916' + - '905682920934733855175647035328921497719019616796867272653837232009633511918699584196136643032274244642212313' + - '884180837128156688381283842300678798685499010807063746785776492193558002382725297304258913361e+62', '8606583' + - '55.93419774133511168973596889241553275604551215135281', 7); - T('2.43e+2', '3', 5); - T('1.1341259418236998571758990926811782086077524757263871423863079766086030645673726799115988350322336274469' + - '528121736526520039192242333771040454545272536238688950013853620343757910936524944674880346697808001951639020' + - '756685105416346426508389541123017097529060283829118103883424462596062875341251599735321937114348037712815556' + - '934333412355272212045907182873831909566029976608100685207198148793211027456e+142', '-77969657.57799062937836', 18); - T('-3.002868635110885376257819498476291928435426781135644398581841720946695913529443732738563280115637723690' + - '527669601811845008088443533185638348230873897655818695558823986816170233733475974743919539739293881958257711' + - '082964428156108562084141530748801048154746755861630902751665438161045606541506565311391326592002987029794247' + - '9155862011879884534002975129045737955826661617772520189976935251896803639204375428428030749e+58', '-3144155.' + - '647351179442684823966727126493552586749', 9); - T('1.2017535763663944855319855165568672417473424918240625939835372525654871294098024731568097136162414533196' + - '302209237255696285222881479316995572849461193750229851490507274307754777241507309897136938873682646559601827' + - '818522406048398360528045183412226195227922260847969487653141933223147699460606337223535312433317282585307625' + - '14582945950418550784e+31', '27540.61485935537676544614263765574563131573245204', 7); - T('3.3715504067877824494301254520391898692874566929517185069539454439093971130103103995461456226946881594407' + - '231961561136789085959653748072704542114811853522742743643494246976010868257225332083632035616264964911458078' + - '6938367825230347818905248996593031355662611333376e+4', '-3.68110925219710489918033269313682', 8); - T('-1.157385562678413511184308898769846329872668259271078544423253372613586833033423503791374542602879075132' + - '311305638124240471079826030985837104460703581522437292662638238646090030670166015625e+186', '-7784665', 27); - T('5.7216584769709576633639728428105243709762039786762015993329350164736e+39', '-8697220540.1137988', 4); - T('3.605080945893673836738483946060969335788919921875e+3', '2.48435', 9); - T('-1.362404507662848650537496030549874060243136512349225493914817345823216048548172723419966950986850374951' + - '739062406422122991421171819900345266361503090008226665166641608549693639479556058501083403734722051283642171' + - '702315664077013568676066027004539719689871686866966504316666900974963459985167975529154752566435990494883222' + - '43247996920458277719083301674288561258518312772229949771006312491204843363917607453589630126953125e+161', '-' + - '3009460118.872263767875045', 17); - T('-3.843371297315665982931203359606126137800390271392237908468836564381335317605019011842110932416054439429' + - '378863667709490793077731714107684101027634234502991961374605763957702424230907755584087764579064955483406351' + - '493859629284536525094600819056677481423671987511092619602892825089212125285973667322259735000675496129438960' + - '5594296221696e+157', '-271616.155606', 29); - T('8.880125173267286184293229956929e+30', '-143903', 6); - T('1.2933690030633029978317864458950890700698349292432976269804895466563737201880939364145851524416113479708' + - '518067001609042030295271670130750045121e+14', '-7.62048571', 16); - T('4.4911854404409149925571757890570413318443326899494030577850505583635288027204483770002925339061413234579' + - '0751503571600332872e+26', '765808758.66956931514481639498062905791538', 3); - T('-1.128193052103617375313057818469912250487118062091774976e+29', '-646363.29196', 5); - T('-3.852842458277771128223673975490918109e+4', '-38528.42458277771128223673975490918109', 1); - T('4.4731752932054401250767895500165212172045977003048118078740540509372027814009045673824755086223811265665' + - '9162732461713512251836889602737214995151906586537236627456e+105', '5932.48', 28); - T('1e+0', '-13.97065588562499', 0); - T('3.600545803275794460618862354918801e+11', '600045.48188248151', 2); - T('2.5693800113130673596912052579425172401156285606894961933662611589081996263592777487294665112945054695374' + - '79575614097255886064905027804073982599354300474897943e+129', '62080.7', 27); - T('5.8184614940398660397269861002282485754727820202610984176867121393228080929668759435750127783038726637982' + - '733623328431481036051105505754347945097758662358771120575735317995690686375214099713422708363500801239117100' + - '825191190580442024497060759059174441880072773407853158923191005671440255110099432788599963091463491081295880' + - '09524947393206783018441414022970002633906397294399684375635228021017590940658971148436650082905540838555648e' + - '+102', '6398.880593717242', 27); - T('1.3497135645575897529253431118705664765245378061900400303221733155570426158512526184604071289685694603714' + - '4900053640398406244356726653396169868958721875222540716653887768486266703330919098362921e+11', '4.1528548909', - 18); - T('-1.77396388128500114222945974047586725531284545911409446577e+56', '-913', 19); - T('-1.234934401068907372254145669800965657224014404194120877473524432765749324191815980973795365542372548417' + - '270938366077639126652036699333110108213095940749940674117006576189505444008333197068723155539463584326235225' + - '64358319794505880365894233180227408889879677018966524371664896e+230', '-90520083747.46', 21); - T('-2.175250019420677231502945585316047309543226583810643532856810988679256810815060837059831560661631867460' + - '91443633027643554689317160117967955473175500964155968361524273945120598810972722792061e+14', '-3.121741', 29); - T('1e+0', '-562610.16179592649796590823394093366548', 0); - T('5.5399516545866639955830015026176e+11', '14.94', 10); - T('1.4941893958492691882112550397099333090864242597784459064194649425760971480442163767897353189803927503362' + - '856448046387436008075500742061282723456500292550169543216112640021419198404623695509050987637232549016751357' + - '87504979910497931539962354019230845564318816091666473025536e+126', '-32698949771.110178432792', 12); - T('1.1504940871276742926708823617505372960241390892442547940194260102743306128298973371802547471453755938653' + - '944600792141533514422490556963535378521856840746722206160260148176604222079226186281680715577736316488196108' + - '040509176925372372483300649927835887344415603493563915019264675154039059770309142781930141352329958156926976' + - 'e+15', '-8.7358521345995835476', 16); - - BigNumber.config({DECIMAL_PLACES : 1000}); - - T('5.5626846462680034577255817933310101605480399511558295763833185422180110870347954896357078975312775514101' + - '683493275895275128810854038836502721400309634442970528269449838300058261990253686064590901798039126173562593' + - '355209381270166265416453973718012279499214790991212515897719252957621869994522193843748736289511290126272884' + - '996414561770466127838448395124802899527144151299810833802858809753719892490239782222290074816037776586657834' + - '841586939662825734294051183140794537141608771803070715941051121170285190347786926570042246331102750604036185' + - '540464179153763503857127117918822547579033069472418242684328083352174724579376695971173152319349449321466491' + - '373527284227385153411689217559966957882267024615e-309', 2, -1024); - - BigNumber.config({EXPONENTIAL_AT : 1000}); - - T('179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120' + - '113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768' + - '838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216', 2, 1024); - - BigNumber.config({ERRORS : true}); - - T(2, 2, '1.0'); - - assertException(function () {new BigNumber(2).pow(4.4)}, ".pow(4.4)"); - assertException(function () {new BigNumber(2).pow('5.5')}, ".pow('5.5')"); - assertException(function () {new BigNumber(2).pow(-2.1)}, ".pow(-2.1)"); - assertException(function () {new BigNumber(2).pow('-11.5')}, ".pow('-11.5')"); - assertException(function () {new BigNumber(2).pow(0.99)}, ".pow(0.99)"); - assertException(function () {new BigNumber(2).pow('0.04e2')}, ".pow('0.04e2')"); - - assertException(function () {new BigNumber('12.345').pow(undefined)}, ".pow(undefined)"); - assertException(function () {new BigNumber('12.345').pow(null)}, ".pow(null)"); - assertException(function () {new BigNumber('12.345').pow(true)}, ".pow(true)"); - assertException(function () {new BigNumber('12.345').pow(false)}, ".pow(false)"); - assertException(function () {new BigNumber('12.345').pow(NaN)}, ".pow(NaN)"); - assertException(function () {new BigNumber('12.345').pow('NaN')}, ".pow('NaN')"); - assertException(function () {new BigNumber('12.345').pow([])}, ".pow([])"); - assertException(function () {new BigNumber('12.345').pow({})}, ".pow({})"); - assertException(function () {new BigNumber('12.345').pow('')}, ".pow('')"); - assertException(function () {new BigNumber('12.345').pow(' ')}, ".pow(' ')"); - assertException(function () {new BigNumber('12.345').pow('2e+1')}, ".pow('2e+1')"); - assertException(function () {new BigNumber('12.345').pow('4e')}, ".pow('4e')"); - assertException(function () {new BigNumber('12.345').pow('hello')}, ".pow('hello')"); - assertException(function () {new BigNumber('12.345').pow('\t')}, ".pow('\t')"); - assertException(function () {new BigNumber('12.345').pow(new Date)}, ".pow(new Date)"); - assertException(function () {new BigNumber('12.345').pow(new RegExp)}, ".pow(new RegExp)"); - assertException(function () {new BigNumber('12.345').pow(function (){})}, ".pow(function (){})"); - assertException(function () {new BigNumber('12.345').pow(7.5)}, ".pow(7.5)"); - assertException(function () {new BigNumber('12.345').pow('1.1e1')}, ".pow('1.1e1')"); - - assertException(function () {new BigNumber('12.345').pow(1e9 + 1)}, ".pow(1e9 + 1)"); - assertException(function () {new BigNumber('12.345').pow(1e9 + 0.1)}, ".pow(1e9 + 1)"); - assertException(function () {new BigNumber('12.345').pow('-0.01')}, ".pow('-0.01')"); - assertException(function () {new BigNumber('12.345').pow('-1e-1')}, ".pow('-1e-1')"); - assertException(function () {new BigNumber('12.345').pow(Infinity)}, ".pow(Infinity)"); - assertException(function () {new BigNumber('12.345').pow('-Infinity')}, ".pow('-Infinity')"); - - assertException(function () {new BigNumber('2').pow(Infinity)}, ".pow(Infinity)"); - assertException(function () {new BigNumber('2').pow('-Infinity')}, ".pow('-Infinity')"); - - // Test limit for exponent. - assertException(function () {new BigNumber(1).pow(MAX_POWER + 1)}, ".pow(MAX_POWER + 1)"); - T(1, 1, MAX_POWER); - - T('16', 2, '4.00000000'); - T('0.0625', 2, -4); - - // As negative exponents involve a division, the result depends on the - // decimal places and rounding mode specified: - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 0, EXPONENTIAL_AT : 0}); - - T('-5.196101e-14', '-453.8', -5); - T('1e-20', '8308633', -17); - T('1e-20', '834', -23); - T('1.6666666666666666667e-1', '6', -1); - T('-1e-20', '-71', -29); - T('9.765625e-4', '-2', -10); - T('1e-20', '62.8159321', -18); - T('-6.333754988633e-8', '-2.0557545', -23); - T('1e-20', '33', -24); - T('-1e-20', '-5235.7923', -27); - T('-1.29728108e-12', '-9169', -3); - T('2.323057312542e-8', '3', -16); - T('1e-20', '1523620.62', -20); - T('1e+0', '1', -16); - T('1e-20', '13', -25); - T('1.5241579027587259e-4', '-9', -4); - T('1e-20', '531385.4', -11); - T('8.4322648810503e-7', '-33', -4); - T('1e-20', '480546.8181', -13); - T('-1e-20', '-83591', -9); - T('1e-20', '457.54', -29); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 1}); - - T('0e+0', '41', -25); - T('0e+0', '-26403', -25); - T('-1.83965573171075e-25', '-28.5112', -17); - T('1.3846500590693220280355384e-15', '72', -8); - T('0e+0', '388528.736', -15); - T('3.934117957191277521704056558e-13', '9', -13); - T('0e+0', '523512', -7); - T('0e+0', '65', -30); - T('0e+0', '-43284153', -10); - T('0e+0', '825797.7867', -9); - T('1.45171e-35', '14.49674917', -30); - T('4.11323023e-32', '713.2735', -11); - T('6.75896391888332043299090622098e-11', '-2.8992', -22); - T('0e+0', '9006558087', -9); - T('2.35898248759e-29', '9', -30); - T('4.2316349570524877e-24', '-835', -8); - T('2.306295e-33', '-18', -26); - T('2.735111227791253388712174e-16', '6', -20); - T('2.11e-38', '-5855.32565', -10); - T('0e+0', '-3338', -20); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 2}); - - T('1e-2', '95636', -15); - T('1e-2', '802.942', -28); - T('0e+0', '-31645', -27); - T('1e-2', '-839791.83', -2); - T('1e-2', '-2.8383287', -6); - T('1e-2', '61689855', -2); - T('1e-2', '7.404284', -20); - T('1e-2', '898183.004', -11); - T('1e-2', '-771825.7331', -16); - T('1e-2', '-33080.258', -12); - T('2.6e-1', '1.4064', -4); - T('1e-2', '-21411.3', -8); - T('1e-2', '-444', -8); - T('1e-2', '-456', -26); - T('0e+0', '-84450.1821', -15); - T('0e+0', '-393', -15); - T('2e-1', '5', -1); - T('0e+0', '-7902377.6', -27); - T('1e-2', '4695.5', -19); - T('0e+0', '-198', -25); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 3}); - - T('2.5224883818467056168924068720414334436865e-10', '-62963', -2); - T('0e+0', '231061', -19); - T('-1.33787022089433001581801823890617687241090613775e-2', '-74.74566549', -1); - T('-1e-50', '-64577145', -15); - T('-9.2e-49', '-7293822', -7); - T('0e+0', '6853973492', -16); - T('5.2813339504e-40', '61', -22); - T('0e+0', '-376283', -30); - T('0e+0', '728444.059', -27); - T('-1e-50', '-368631.5722', -23); - T('4.704e-47', '52631521', -6); - T('3.57224508459076360310928212162780064014631915e-6', '6', -7); - T('4.406926288364964664194824943180564261e-14', '469', -5); - T('1.4551915228366851806640625e-11', '-4', -18); - T('2.44140625e-4', '8', -4); - T('0e+0', '32065.3618', -15); - T('3.7252902984619140625e-9', '-4', -14); - T('0e+0', '911', -18); - T('-4e-50', '-226', -21); - T('0e+0', '6584.1', -26); - - BigNumber.config({DECIMAL_PLACES : 101, ROUNDING_MODE : 4}); - - T('2.59086221967070203169073279093835370593438251373865163612424184820637293172653704e-21', '7280902.7', -3); - T('0e+0', '-864898946', -18); - T('-6.92056804675353e-87', '-4243081.8', -13); - T('4.535096358699077993843952445171547362594555572598969066238446195262298595680218449724146e-14', '28041.71', -3); - T('3.935198147655009521015158343912785620124855179789168611080864740903996079598197380173314783859e-8', '-71', -4); - T('0e+0', '-22174.6', -24); - T('-2.99258857055507737893205013175602880569082447633970771174973412126870110482831422782576004e-12', '-44.287279', -7); - T('0e+0', '470977.3', -28); - T('0e+0', '1491202647', -13); - T('7.6416831024439568243705975297501568471970365586580909307933089678e-37', '-63.95', -20); - T('1.265999063160693261086986795629771233969286862727721581486029700338021749863905100710225474433149e-5', '78989', -1); - T('0e+0', '4669863', -27); - T('0e+0', '68895.202', -25); - T('2.739979564368301888555652244200021058884694833454583774293368045917370205983074157e-20', '8174.2993', -5); - T('0e+0', '-84777.31264', -24); - T('-1.61732012052302022569648421623255682672403613813784e-51', '-8072.642', -13); - T('9.226701330968798029567410873712667474511623e-59', '86', -30); - T('-4.52671289980544818356121416933990316474525113390656357838131753149833770190909867e-21', '-805.966', -7); - T('0e+0', '-62548432.8', -25); - T('1.2208830071779439347812238188621035387222053043582168736013775635140091964690008930489382362e-10', '-90503', -2); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); - - T('0e+0', '66772.53301', -27); - T('3.40661780943015419152e-57', '368.73348', -22); - T('5.601099885e-68', '5310955.57', -10); - T('4.7583024e-70', '4452', -19); - T('6.90016290197904917102412334010616805829465226173165163729397834725e-12', '-617', -4); - T('0e+0', '-107429', -28); - T('3.31141522e-69', '2654.601393', -20); - T('0e+0', '29989989', -29); - T('0e+0', '86252993', -26); - T('2.526578217600621656723144619575640216185522e-35', '27.64147', -24); - T('0e+0', '67591', -22); - T('1.045378162048104058782115833482674315266588732330848431111612381555126e-8', '95659163', -1); - T('0e+0', '-442', -30); - T('-1.1560137793600081456221291815651129339464282155352978388454e-19', '-13', -17); - T('5.58677799866283804991416971229e-48', '8664.361199', -12); - T('2.279303152972397504104114985089222523674913654876994600999395e-17', '352695', -3); - T('0e+0', '-1058', -27); - T('-1.59341022326498995406233262095617818e-42', '-6306.5', -11); - T('7.1812368392200578e-61', '-5741', -16); - T('-4.13699730669298062229277514676940165486322151495730381776e-21', '-71.29', -11); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 6}); - - T('3.50565137890907848896561225350273375702045873464e-52', '282', -21); - T('2.5679471225603104166379068675724780241775210532444313569170923793768408333314758e-20', '91', -10); - T('-1.41295214664272077547931481358044650743763505172248724988734056104337e-30', '-57', -17); - T('-1.6987939248665576039846745813760545846750230030808816733060274510838e-32', '-47', -19); - T('2.5752032499330351923455285237362946185406503583972342814435847681120726508860096355483248328e-8', '78.94', -4); - T('0e+0', '171036487', -28); - T('-2.69509379734942915218278341741127616464435811759556667850711208302182540858969514716020661667e-7', '-3710446', -1); - T('0e+0', '186138.741', -19); - T('4.37024265074487259941007405227545667043223030296145105953223847971330338431363825001208e-13', '-5.922', -16); - T('0e+0', '-68229265', -23); - T('4.928268737732714614617566124770385834839673627880400464580256256e-35', '-522257', -6); - T('-2.022506359274224265530332563554654257153128338531e-51', '-7935', -13); - T('4.113745803364219006888865973815476523221392611155744131624798603545707151167823836246769e-12', '-79', -6); - T('1.58e-97', '7449', -25); - T('1.118728735197209316850322750834837614213911286885421936356799842846357177424981773587541512e-9', '19', -7); - T('2.30221163139014605760922065192648652054327053388946752033272296649e-32', '-433', -12); - T('-2.267272190443616852157926557261723579010324347431719319355102519288715860877837553741191e-12', '-7612', -3); - T('3.9978176310189055673570151190218519691760260637389486960244942965129919180092262453024314407659703e-2', '5.001364539', -2); - T('-7.116521605575577249405567849234479247439447514e-54', '-804088', -9); - T('8.903896183702542287639673e-75', '-294', -30); - T('8.07793566946316088741610050849573099185363389551639556884765625e-28', '8', -30); - T('0e+0', '-81529053.21', -19); - T('6.5536e-12', '-5', -16); - T('0e+0', '-393954461', -21); - T('8.6647113997049045695e-80', '-80579504', -10); - T('0e+0', '-148396', -20); - T('0e+0', '-9359', -27); - T('9.90263871916064254974009912780157486232613002968707056446243636671e-34', '-562.8', -12); - T('4.3492544377486037018080360300067123809538178904353011549513518579352205e-29', '-53325', -6); - T('-2.4321805935844144232493980416059793684e-61', '-323865', -11); - T('7.85857243441531254691813393990245178596730427987853282250959743319065590613e-25', '-52.694', -14); - T('2.0976497180691992906625338620920916459004443120221572748409028790029453e-29', '-62', -16); - T('2.364680619496191078868743412738756777204213983827334426304480201936157926992330323938307469e-8', '-6503', -2); - T('-1.6469853898171534943494115141107888422500959997099727812322359810844298906326507134302e-14', '-34', -9); - T('-2.8509481595561976509829554676872915624841643712635341972335222140599199298237e-23', '-32285.1', -5); - T('1.146039e-93', '2086', -28); - T('1.4679476870451975270004793115264473958785611246906228067920825392511892301766856e-20', '21', -15); - T('-2.7632000420131244245e-80', '-884.33', -27); - T('1.28e-5', '5', -7); - T('0e+0', '465056.3', -25); - T('-3.385374643100272485246768762282984762e-63', '-8732826', -9); - T('8.1099148118448025737743300061125240950246836242140801097075869941095902018e-26', '-24.771', -18); - T('0e+0', '41616', -24); - T('-4.600396873004638534957365480807567e-66', '-693.02361', -23); - T('4.743101317987169079986565102514233588322445597602857643390328860354941191426667037e-18', '-54', -10); - T('1.25187781672508763144717075613420130195292939409113670505758637956935403104656985478217325988983475e-1', '7.988', -1); - T('0e+0', '-28456394.82', -20); - T('0e+0', '65420941.8', -28); - T('6.936158419792753387019531369763661408e-63', '8063848', -9); - T('7.76868869438579094965029841442548135292087504293659500457724060495468797e-28', '8.0104161', -30); - T('1.418903330951799073514333098017321859067165230705198534199808126932321545716946e-21', '8899161', -3); - T('5.5856834219770636694175782782449695904056e-59', '-668794', -10); - T('1.459854014598540145985401459854014598540145985401459854014598540145985401459854014598540145985401e-3', '685', -1); - T('4.71680980075571e-85', '-186379', -16); - T('8.28459140195479963018738579860475551841921130300932e-49', '-2719', -14); - T('2.67077966735439243101042271765185051646201817465563634664049302592659362084276452403367853161e-7', '1935', -2); - T('0e+0', '3635', -29); - T('0e+0', '2554338', -24); - T('2.5540033620655455476185589070642885151916557690202314061872180456116463869710334413505216200293094e-2', '6.257333', -2); - T('3.90625e-3', '4', -4); - T('1.950390958369440429127151141521415628594542650755102593292842679774e-33', '282908.755', -6); - T('7.055018227999164719047034313928978751513528911694565147012740459916e-32', '19.86', -24); - T('-1.7926074978022214012194558178183164876939431544374262895950448410755196050436473373785e-14', '-92', -7); - T('4.17170159620302267465579950126198740043495589902397687214801e-40', '422', -15); - T('9.094947017729282379150390625e-13', '32', -8); - T('3.840702799092530418345764876794193332866602413557110156e-45', '-597', -16); - T('2.86244662448576320862533497809376104296326075367736978e-46', '56.45', -26); - T('-1.9579266376951475915762057927633263263525293205616726853270204e-38', '-32.2350348', -25); - T('1.25868312332880899610888409696274260282720434321518772464e-43', '52', -25); - T('0e+0', '262233', -24); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); - - T('0e+0', '-8645', -30); - T('0e+0', '7.24173993', -23); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; - -/* - -Notes: - -n to the power of 1 is n -Anything to the power of 0 is 1 -Math.pow(2, null) = 1 // NaN for BigNumber -Math.pow(2, undefined) = NaN -Math.pow(2, NaN) = NaN -Math.pow(2, 'rferf') = NaN -Math.pow(2, []) = 1 // NaN for BigNumber -Math.pow(2, {}) = NaN // NaN for BigNumber -Math.pow(2, 1e4) = Infinity -Math.pow(2, -1e4) = 0 -Math.pow(2, 1e-16) = 1 -Math.pow(2, -1e-17) = 1 -A negative number to a non-integer power is NaN -0 to negative power is Infinity - --------------------------------------------------------------------------------- - -http://es5.github.com/#x15.8.2.13 -15.8.2.13 pow (x, y) -Returns an implementation-dependent approximation to the result of raising x to the power y. - -If y is NaN, the result is NaN. -If y is +0, the result is 1, even if x is NaN. -If y is -0, the result is 1, even if x is NaN. -If x is NaN and y is nonzero, the result is NaN. -If abs(x)>1 and y is +8, the result is +8. -If abs(x)>1 and y is -8, the result is +0. -If abs(x)==1 and y is +8, the result is NaN. -If abs(x)==1 and y is -8, the result is NaN. -If abs(x)<1 and y is +8, the result is +0. -If abs(x)<1 and y is -8, the result is +8. -If x is +8 and y>0, the result is +8. -If x is +8 and y<0, the result is +0. -If x is -8 and y>0 and y is an odd integer, the result is -8. -If x is -8 and y>0 and y is not an odd integer, the result is +8. -If x is -8 and y<0 and y is an odd integer, the result is -0. -If x is -8 and y<0 and y is not an odd integer, the result is +0. -If x is +0 and y>0, the result is +0. -If x is +0 and y<0, the result is +8. -If x is -0 and y>0 and y is an odd integer, the result is -0. -If x is -0 and y>0 and y is not an odd integer, the result is +0. -If x is -0 and y<0 and y is an odd integer, the result is -8. -If x is -0 and y<0 and y is not an odd integer, the result is +8. -If x<0 and x is finite and y is finite and y is not an integer, the result is NaN. - -*/ \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js deleted file mode 100644 index dacf80d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/quick-test.js +++ /dev/null @@ -1,1416 +0,0 @@ -var count = (function quickTest(BigNumber) { - - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - n = 'null', - N = 'NaN', - I = 'Infinity'; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - log('\n Starting tests...'); - - function Tplus(addendA, addendB, expected) { - assert(String(expected), String(new BigNumber(addendA).plus(addendB))); - assert(String(expected), String(new BigNumber(addendA).plus(new BigNumber(addendB)))); - } - - Tplus('0.0000002081', '951', '951.0000002081'); - Tplus('-0.00000000000101', '290.41', '290.40999999999899'); - Tplus('591', '-0.0000000000000023311', '590.9999999999999976689'); - Tplus('0.000000000006331', '-0.0000901', '-0.000090099993669'); - Tplus('-0.000000000000000101', '8.811', '8.810999999999999899'); - Tplus('9.71', '25.2521', '34.9621'); - Tplus('12.61', '22581', '22593.61'); - Tplus('11', '-38.91', '-27.91'); - Tplus('-0.00000000138751', '2.11', '2.10999999861249'); - Tplus('3762.2711', '-744.88784434996040047048938241', '3017.38325565003959952951061759'); - Tplus('-0.000000000000000025415273976364280222001', '-492878574085250915901', '-492878574085250915901.000000000000000025415273976364280222001'); - Tplus('426904249750.96038450081242691', '56433.631', '426904306184.59138450081242691'); - Tplus('-0.000000000000000134741', '32233.1553231', '32233.155323099999999865259'); - Tplus('-20527603846670651', '-19635621.807985261', '-20527603866306272.807985261'); - Tplus('-86085754207.708686061', '-1', '-86085754208.708686061'); - Tplus('-4.96914656033745696212200401', '-1.241', '-6.21014656033745696212200401'); - Tplus('329060927228852916217075.1962341', '4100482994459676741454741', '4429543921688529657671816.1962341'); - Tplus('615901601', '-6473391841168.33422241481', '-6472775939567.33422241481'); - Tplus('-5812703356423471', '-0.0000000000000000000000000000000000000001512809242910987744755268662361', '-5812703356423471.0000000000000000000000000000000000000001512809242910987744755268662361'); - Tplus('-964262.331151767124531', '-56784.754061', '-1021047.085212767124531'); - Tplus('-10804741298331762053003.61', '-18727784577281', '-10804741317059546630284.61'); - Tplus('2455658857532054049742171.776541', '-11', '2455658857532054049742160.776541'); - Tplus('-8.419821', '-1121', '-1129.419821'); - Tplus('-14118910.8630102182791', '2231454017.61', '2217335106.7469897817209'); - Tplus('-35192.01', '30.31011', '-35161.69989'); - Tplus('21', '1214.75047979608491', '1235.75047979608491'); - - function Tminus(minuend, subtrahend, expected) { - assert(String(expected), String(new BigNumber(minuend).minus(subtrahend))); - assert(String(expected), String(new BigNumber(minuend).minus(new BigNumber(subtrahend)))); - } - - Tminus('4.851', '41', '-36.149'); - Tminus('21', '13081', '-13060'); - Tminus('0.00000000056061', '-0.1401', '0.14010000056061'); - Tminus('61', '11', '50'); - Tminus('-1137.71', '-74.211', '-1063.499'); - Tminus('-1', '-0.0000000000000131', '-0.9999999999999869'); - Tminus('-0.000513821', '0.261', '-0.261513821'); - Tminus('-0.000401', '-0.0002471', '-0.0001539'); - Tminus('1', '31', '-30'); - Tminus('-19851', '-1.51', '-19849.49'); - Tminus('8016778098131', '6331.62851', '8016778091799.37149'); - Tminus('-270.9996571', '23960950851', '-23960951121.9996571'); - Tminus('-7986807223743730.000000000000000000000000000000000001', '-7173955.760471', '-7986807216569774.239529000000000000000000000000000001'); - Tminus('1.48968081', '242980.00000000000000000000000000000000000000000000000001', '-242978.51031919000000000000000000000000000000000000000001'); - Tminus('-118422270.0000000000000000000000000001', '14530.0001', '-118436800.0001000000000000000000000001'); - Tminus('9330969181250.000000000000000000000000000000000000001', '50.71', '9330969181199.290000000000000000000000000000000000001'); - Tminus('152192135853041', '-12.46214721', '152192135853053.46214721'); - Tminus('29353.8632116991', '29.491', '29324.3722116991'); - Tminus('-24835555113.72271', '16121.144514291', '-24835571234.867224291'); - Tminus('-55940242410820.01', '384349225568820.00000001', '-440289467979640.01000001'); - Tminus('283535576260.000000000000000000000000000000001', '14.121', '283535576245.879000000000000000000000000000001'); - Tminus('480.0000000000000000000000000000001', '-164098203.91', '164098683.9100000000000000000000000000001'); - Tminus('29364155498.97581', '-2885650871', '32249806369.97581'); - Tminus('4.1021951', '-165723099860.0000000000000000000000000001', '165723099864.1021951000000000000000000001'); - Tminus('-530.81', '56840.01', '-57370.82'); - - function Ttimes(multiplicand, multiplier, expected) { - assert(String(expected), String(new BigNumber(multiplicand).times(multiplier))); - assert(String(expected), String(new BigNumber(multiplicand).times(new BigNumber(multiplier)))); - } - - Ttimes('-21', '131', '-2751'); - Ttimes('111', '0.000000000841', '0.000000093351'); - Ttimes('40.71', '21', '854.91'); - Ttimes('-0.0000000000036161', '-1', '0.0000000000036161'); - Ttimes('7.8121', '36.121', '282.1808641'); - Ttimes('1', '46.221', '46.221'); - Ttimes('-128.21', '-1', '128.21'); - Ttimes('-180766.9302821', '291', '-52603176.7120911'); - Ttimes('3714507177452301036251', '6867200.8062651448391', '25508266683878109110598887924.4875346622141'); - Ttimes('0.0000000000000000000000654341', '0.00000000000000034029824715606780001', '0.000000000000000000000000000000000000022267109534234856032634341'); - Ttimes('2902811542.1751', '21.7592802616132547300301', '63163089892.83378534432594919064247051'); - Ttimes('-0.0000004236706737870443510907850088041', '-2870.7155483080953029218351', '0.00121623799060263520422140469527350360094358075600762840391'); - Ttimes('806512666721.29120081', '-8211', '-6622275506448522.04985091'); - Ttimes('24.0654772221', '270.37988121', '6506.820872573358786741'); - Ttimes('128868235795911', '-4897225358224393204401', '-631096792209375818286886121943004311'); - Ttimes('-47584.99084549466512725031', '0.000000000000000000000000000000000000000000154041881', '-0.00000000000000000000000000000000000000733008149720777859166674211023311'); - Ttimes('-98.9161', '-18710464022168031', '1850766130263175171.1991'); - Ttimes('-141', '1387696355.96881144331', '-195665186191.60241350671'); - Ttimes('-546863822.0898879518644444391', '-16471500507546.2972881', '9007667723112297421676.09483644538995959345560471'); - Ttimes('0.32596723638370271', '833.075641', '271.55536439535165708668711'); - Ttimes('-363496.57279544085492428981', '-39403998991', '14323218587663509.49683689305463158171'); - Ttimes('3.11', '36726825625425561919475.9510331', '114220427695073497569570.207712941'); - - function Tdiv(dividend, divisor, expected) { - assert(String(expected), String(new BigNumber(dividend).div(divisor))); - assert(String(expected), String(new BigNumber(dividend).div(new BigNumber(divisor)))); - } - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - Tdiv('999.5', 1, '1000'); - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); - Tdiv('-223891', '-0.000000000000000000005965201', '37532850946682266029258696'); - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 5}); - Tdiv('-2.51', '21', '-0.1195238095238095238'); - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 0}); - Tdiv('-9.11', '-5.61', '1.6239'); - BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 5}); - Tdiv('-789.23741', '2996.9101', '-0.263350378778462524'); - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 1}); - Tdiv('86.41', '0.00000000000000901', '9590455049944506.1043285238623751387'); - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 2}); - Tdiv('-1.031', '-11', '0.093727272728'); - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); - Tdiv('1', '1.691', '0.59'); - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 0}); - Tdiv('-0.0000000210121', '2.81', '-0.000000007478'); - BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 6}); - Tdiv('2844.11', '-1.681', '-1691.9155264723378941106484236'); - - BigNumber.config({EXPONENTIAL_AT : 0} ); - - BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 1}); - Tdiv('1.59425939501316841840968291765489155608078575071e+9', '-3.08038002682802076462608674211e+24', '-5.17e-16'); - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 1}); - Tdiv('-2.7776797347790808834515841467871979111321511e+24', '3.3415875353512401063640184461e+3', '-8.3124553985000249637933047177077877273241264998630019e+20'); - BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 1}); - Tdiv('1.256012023778514778181132285841e+17', '-5.465631858655701463629691267993890472939145146541478599849959175484551e+15', '-2.298017971681387626003643396450012590362066053e+1'); - BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 0}); - Tdiv('1.378656411343789736916650471e+20', '-1.354076170203205324162874106485640621111e+19', '-1.018152775804995e+1'); - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); - Tdiv('1.577809310668934678754980869332886769208471e+23', '6.93677728955357384105850187632701172506828921e+11', '2.27455667784669044615322243776416258218503335378e+11'); - BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 3}); - Tdiv('-5.3967707960012001e+16', '9.289226824998276692885063155660376484197905615639719776994658491e+23', '-5.80971e-8'); - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 0}); - Tdiv('-1.7511951356552580494958278051e+28', '3.1019236701050639775694537481e+28', '-5.645513306895602e-1'); - - BigNumber.config({EXPONENTIAL_AT : 1E9}); - - function Tsqrt(expected, actual) { - assert(expected, new BigNumber(actual).sqrt().toString()) - } - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); - Tsqrt('4949554350723.461435143921800511302655747834828959172999243354749297834846074272605873894779037895263058987767', '24498088270765545887271078.495701603537518591752268455746'); - - BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 2}); - Tsqrt('34024250164506590698940450635557.52953427667455604566896038084827726129860253810440168217368794648838157166948213114635075589', '1157649599256926764239267638462457331268783688179593190844781949.0026'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); - Tsqrt('44.40502294864850084', '1971.80606307'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); - Tsqrt('53661161093118917.324727467936347226946388973481645944102836490011463645342312303037845424027327131', '2879520209861659438086912639838761.96836512'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 1}); - Tsqrt('14192376.643123461322847366137186892667087869800484670508360531721790645551341594437545247745705539930735', '201423554780276.3686384009255372'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); - Tsqrt('4855847283088595702176944.8112532951528228009352578372167502504010846351042776625505257853252286361', '23579252836678896488410638492374748088831131237827.786414707871968195569'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 4}); - Tsqrt('2553252336.0331', '6519097491458426345.3554782053764871036657698339691144086'); - - BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); - Tsqrt('313415140.8429479671745256541153927986977746351343070479080617690487091', '98229050509604911'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 0}); - Tsqrt('1.537808174192351787259717', '2.3648539806128145775'); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); - Tsqrt('62.30949119560079364913', '3882.4726930546528212066'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); - Tsqrt('20416269776260474006.927083982432268806569265768750039002235065141713481228428261', '416824071577046905366185925400975939799.8'); - - BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); - Tsqrt('174228234.709795821707519878032640346805381350977820681861118903584344693715322225768054125', '30355477770091701.53717021425249799086667828628302277998976752563'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); - Tsqrt('8346080245081.12842427016192329441165264650792513611706834892396914269233387534464159247031782538653', '69657055457333468703224935.763141948224298'); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); - - function Tpow(expected, n, exp) { - assert(String(expected), String(new BigNumber(n).pow(exp))) - } - - BigNumber.config({EXPONENTIAL_AT : 0}); - - Tpow('6.1203577224967e+13', '61203577224967', 1); - Tpow('-2.6742593337474927167986914400257603e+34', '-82827', 7); - Tpow('3.490938536648870448335810684618787855050175354916141007545163425555957335829e+75', '247548469', 9); - Tpow('6.634204312890625e+15', '-95', 8); - Tpow('-9.171271e+1', '-91.71271', 1); - Tpow('5.65625765123605544067809018296482219675982471958093705254464e+59', '-9093998202', 6); - Tpow('1e+0', '-5420353171006060062', 0); - Tpow('5.93548365959371477646876280183482286894691258676416e+26', '840398698.65610156', 3); - Tpow('1.016984074247269470395836690098169093010136836967e+39', '21584.7', 9); - Tpow('-8.983272e+1', '-89.83272', 1); - Tpow('5.308416e+6', '-48', 4); - Tpow('3.83432050166120236679168e+23', '52088', 5); - - BigNumber.config({ROUNDING_MODE : 0}); - - Tpow('-5.196101e-14', '-453.8', -5); - Tpow('1e-20', '8308633', -17); - Tpow('1e-20', '834', -23); - Tpow('1.6666666666666666667e-1', '6', -1); - Tpow('-1e-20', '-71', -29); - Tpow('9.765625e-4', '-2', -10); - Tpow('1e-20', '62.8159321', -18); - Tpow('-6.333754988633e-8', '-2.0557545', -23); - Tpow('1e-20', '33', -24); - Tpow('-1e-20', '-5235.7923', -27); - Tpow('-1.29728108e-12', '-9169', -3); - Tpow('2.323057312542e-8', '3', -16); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4, EXPONENTIAL_AT : 1E9}); - - function Tmod(a, b, expected) { - assert(String(expected), String(new BigNumber(a).mod(new BigNumber(b)))); - } - - Tmod('-6591', '8.81', '-1.12'); - Tmod('1.11', '11', '1.11'); - Tmod('0.00000000432701', '271', '0.00000000432701'); - Tmod('0.0000000000215581', '-0.000000000002301', '0.0000000000008491'); - Tmod('-0.0000000000000591', '-1.71', '-0.0000000000000591'); - Tmod('-0.0000841', '6.981', '-0.0000841'); - Tmod('-2.4471', '-14359441882754.391', '-2.4471'); - Tmod('2.31614421', '2097.74828131', '2.31614421'); - Tmod('203239281', '-1092.361', '55.145'); - Tmod('-46.3306582161', '133931.6342079549871', '-46.3306582161'); - Tmod('-6038925.2969825025061', '-331548954963.41', '-6038925.2969825025061'); - Tmod('1338199.302617179356379591035511', '568.441', '89.188617179356379591035511'); - Tmod('-71', '2935538995927946.15230380421', '-71'); - - function TcomparedTo(a, b, expected) { - assert(String(expected), String(new BigNumber(a).cmp(b))); - assert(String(expected), String(new BigNumber(a).cmp(new BigNumber(b)))); - } - - TcomparedTo(1, 0, 1); - TcomparedTo(1, -0, 1); - TcomparedTo(-1, 0, -1); - TcomparedTo(-1, -0, -1); - TcomparedTo(1, Infinity, -1); - TcomparedTo(1, -Infinity, 1); - TcomparedTo(-1, Infinity, -1); - TcomparedTo(-1, -Infinity, 1); - TcomparedTo(0, 1, -1); - TcomparedTo(0, -1, 1); - TcomparedTo(-0, 1, -1); - TcomparedTo(-0, -1, 1); - TcomparedTo('51065.7214018651', '21', '1'); - TcomparedTo('1', '-16594.7051', '1'); - TcomparedTo('0.0000000000000000000010511609090481', '-11020751', '1'); - TcomparedTo('-5.8551401', '-0.000000000000000000000001123091759805151', '-1'); - TcomparedTo('11527.63339771', '-0.00000000000000000000004429516529932561', '1'); - TcomparedTo('45875.11', '405079444.71', '-1'); - TcomparedTo('1426.641', '20.9286431', '1'); - TcomparedTo('4.657171', '-50001.941', '1'); - TcomparedTo('-190771', '-686381.317791', '1'); - TcomparedTo('-0.0000000000000000000161', '12855824.31', '-1'); - TcomparedTo('21', '353565391626181', '-1'); - TcomparedTo('398788950.02241', '-46.7685077791', '1'); - TcomparedTo('-78.15411', '-105.31471806641', '1'); - TcomparedTo('41', '-71', '1'); - TcomparedTo('-51', '-0.00000474054791', '-1'); - TcomparedTo('-41', '17.241', '-1'); - TcomparedTo('11', '113010.8763991', '-1'); - TcomparedTo('-61', '3702421785.491', '-1'); - TcomparedTo('-0.00000000000000000000000000000003464171', '220.26991', '-1'); - TcomparedTo('0.000013781', '0.00000000501652742971', '1'); - TcomparedTo('-14762.331', '-1.11', '-1'); - TcomparedTo('31', '61', '-1'); - TcomparedTo('0.0000000000000000000000000000000000000000145668763947641', '398563006.4471', '-1'); - TcomparedTo('493.11824741', '736531', '-1'); - TcomparedTo('75077024.211', '1', '1'); - TcomparedTo('-90.74569446258221', '-21', '-1'); - TcomparedTo('15654315.61266191', '-11', '1'); - TcomparedTo('1.494421', '41821961', '-1'); - TcomparedTo('-26.51', '-0.00863321', '-1'); - TcomparedTo('-3.21', '30292255112081', '-1'); - TcomparedTo('-3.20191e+3', '5.11e-30', '-1'); - TcomparedTo('-1.08821e+5', '1.939813191e+9', '-1'); - TcomparedTo('-7.592791e-17', '-9.291e-27', '-1'); - TcomparedTo('-4.901e+0', '-1.39230141e-31', '-1'); - TcomparedTo('-2.8785721351e+5', '-1.084971e+3', '-1'); - TcomparedTo('6.8649111e+1', '2.1e+1', '1'); - TcomparedTo('1.4421e+4', '8.7711e+1', '1'); - TcomparedTo('1.497851e-9', '1.81661e+2', '-1'); - TcomparedTo('-8.631953001e+6', '6.310131231e+0', '-1'); - TcomparedTo('4.91e+0', '5.381e-15', '1'); - TcomparedTo('4.21e+0', '-1.63069631e+3', '1'); - TcomparedTo('-4.081e+1', '-7.801e+1', '1'); - TcomparedTo('-3.1e+1', '-8.41e+0', '-1'); - TcomparedTo('-1.1e+1', '1.037475521e+4', '-1'); - TcomparedTo('-1e+0', '1.6500661e+5', '-1'); - TcomparedTo('2.07751e-24', '2.88755811e+5', '-1'); - TcomparedTo('1e+0', '-1e+0', '1'); - TcomparedTo('3.821e-23', '4.25729041e-22', '-1'); - TcomparedTo('4.831e+1', '-1.01e+0', '1'); - TcomparedTo('-1.61071e+1', '8.22705601e+8', '-1'); - TcomparedTo('2.474493111e-20', '-9.0664201e+7', '1'); - TcomparedTo('4.27903551e+8', '1e+0', '1'); - TcomparedTo('1.1e+1', '-3.1e+1', '1'); - TcomparedTo('-6.3993191e+3', '2.9980701e+0', '-1'); - TcomparedTo('-3.7599935031e+1', '-1.14011e+5', '1'); - TcomparedTo('-1.631920621e+1', '-5.947675381e+5', '1'); - TcomparedTo('2.0690564941e-24', '-5.690831e+4', '1'); - TcomparedTo('-1.30864281e+0', '-6.1e+1', '1'); - - function Tabs(expected, value){ - assert(String(expected), new BigNumber(String(value)).abs().toString()); - } - - Tabs(1, 1); - Tabs(1, -1); - Tabs(0.5, '0.5'); - Tabs(0.5, '-0.5'); - Tabs(0.1, 0.1); - Tabs(0.1, -0.1); - Tabs(1.1, 1.1); - Tabs(1.1, -1.1); - Tabs(1.5, '1.5'); - Tabs(1.5, '-1.5'); - Tabs('Infinity', Infinity); - Tabs('Infinity', -Infinity); - Tabs(NaN, NaN); - Tabs(0, 0); - Tabs(0, -0); - - function Tneg(expected, value){ - assert(String(expected), new BigNumber(value).neg().toString()); - } - - Tneg(-4, 4); - Tneg(-2147483648, 2147483648); - Tneg(-0.25, 0.25); - Tneg(-0.0625, 0.0625); - Tneg(-1, 1); - Tneg(1, -1); - Tneg(0, 0); - Tneg(NaN, NaN); - Tneg(-Infinity, Infinity); - Tneg(Infinity, -Infinity); - Tneg('-5.0600621890668482322956892808849303', '5.0600621890668482322956892808849303'); - Tneg('7', '-7'); - Tneg('-6.1095374220609', '6.1095374220609'); - Tneg('9.01', '-9.01'); - Tneg('-1.016984074247269470395836690098169093010136836967', '1.016984074247269470395836690098169093010136836967'); - Tneg('-1.497639134680472576', '1.497639134680472576'); - Tneg('-4.1717657571404248', '4.1717657571404248'); - - function Tceil(expected, value) { - assert(String(expected), new BigNumber(String(value)).ceil().toString()); - } - - Tceil(0, 0); - Tceil(0, '0.000'); - Tceil(0, -0); - Tceil(Infinity, Infinity); - Tceil(-Infinity, -Infinity); - Tceil(NaN, NaN); - Tceil(1, 0.1); - Tceil(1, 0.49999999999999994); - Tceil(1, 0.5); - Tceil(1, 0.7); - Tceil(0, -0.1); - Tceil(0, -0.49999999999999994); - Tceil(0, -0.5); - Tceil(0, -0.7); - Tceil(1, 1); - Tceil(2, 1.1); - Tceil(2, 1.5); - Tceil(2, 1.7); - Tceil(-1, -1); - Tceil(-1, -1.1); - Tceil(-1, -1.5); - Tceil(-1, -1.7); - Tceil('-2075364', '-2075364.364286541923'); - Tceil('60593539780450631', '60593539780450631'); - Tceil('65937898671515', '65937898671515'); - Tceil('-39719494751819198566798', '-39719494751819198566798.578'); - Tceil('92627382695288166557', '92627382695288166556.8683774524284866028260448205069'); - Tceil('-881574', '-881574'); - Tceil('-3633239209', '-3633239209.654526163275621746013315304191073405508491056'); - Tceil('-23970335459820625362', '-23970335459820625362'); - Tceil('131869457416154038', '131869457416154038'); - Tceil('-2685', '-2685'); - Tceil('-4542227860', '-4542227860.9511298545226'); - Tceil('2416872282', '2416872281.963955669484225137349193306323379254936827'); - Tceil('-757684868752087594264588207655', '-757684868752087594264588207655.27838048392835556'); - Tceil('-438798503526', '-438798503526.2317623894721299587561697'); - Tceil('801625782231888715214665', '801625782231888715214665'); - Tceil('-91881984778675238', '-91881984778675238'); - Tceil('327765350218284325239839632047', '327765350218284325239839632046.91682741746683081459605386'); - Tceil('-7469045007691432294', '-7469045007691432294.362757245'); - Tceil('8365540212937142194319515218790', '8365540212937142194319515218789.4106658678537421977827'); - Tceil('-14108', '-14108.495051214515'); - Tceil('49104502', '49104501.10055989379655329194309526150310568683504206945625'); - Tceil('131370407', '131370406.330005158136313262837556068534122953'); - Tceil('3017', '3017'); - - function Tfloor(expected, value) { - assert(String(expected), new BigNumber(String(value)).floor().toString()); - } - - Tfloor(0, 0); - Tfloor(0, '0.000'); - Tfloor(-0, -0); - Tfloor(Infinity, Infinity); - Tfloor(-Infinity, -Infinity); - Tfloor(NaN, NaN); - Tfloor(0, 0.1); - Tfloor(0, 0.49999999999999994); - Tfloor(0, 0.5); - Tfloor(0, 0.7); - Tfloor(-1, -0.1); - Tfloor(-1, -0.49999999999999994); - Tfloor(-1, -0.5); - Tfloor(-1, -0.7); - Tfloor(1, 1); - Tfloor(1, 1.1); - Tfloor(1, 1.5); - Tfloor(1, 1.7); - Tfloor(-1, -1); - Tfloor(-2, -1.1); - Tfloor(-2, -1.5); - Tfloor(-2, -1.7); - Tfloor('-2075365', '-2075364.364286541923'); - Tfloor('60593539780450631', '60593539780450631'); - Tfloor('65937898671515', '65937898671515'); - Tfloor('-39719494751819198566799', '-39719494751819198566798.578'); - Tfloor('92627382695288166556', '92627382695288166556.8683774524284866028260448205069'); - Tfloor('-881574', '-881574'); - Tfloor('-3633239210', '-3633239209.654526163275621746013315304191073405508491056'); - Tfloor('-23970335459820625362', '-23970335459820625362'); - Tfloor('131869457416154038', '131869457416154038'); - Tfloor('-4542227861', '-4542227860.9511298545226'); - Tfloor('2416872281', '2416872281.963955669484225137349193306323379254936827'); - Tfloor('-757684868752087594264588207656', '-757684868752087594264588207655.27838048392835556'); - Tfloor('-438798503527', '-438798503526.2317623894721299587561697'); - Tfloor('801625782231888715214665', '801625782231888715214665'); - Tfloor('-91881984778675238', '-91881984778675238'); - Tfloor('327765350218284325239839632046', '327765350218284325239839632046.91682741746683081459605386'); - Tfloor('-7469045007691432295', '-7469045007691432294.362757245'); - Tfloor('8365540212937142194319515218789', '8365540212937142194319515218789.4106658678537421977827'); - Tfloor('-14109', '-14108.495051214515'); - Tfloor('49104501', '49104501.10055989379655329194309526150310568683504206945625'); - Tfloor('131370406', '131370406.330005158136313262837556068534122953'); - Tfloor('3017', '3017'); - - function Tround(expected, value, decimalPlaces, roundingMode) { - assert(String(expected), new BigNumber(String(value)).round(decimalPlaces, roundingMode).toString()); - } - - BigNumber.config({ROUNDING_MODE : 7}); - - Tround(0, 0); - Tround(0, -0); - Tround(Infinity, Infinity); - Tround(-Infinity, -Infinity); - Tround(NaN, NaN); - Tround(1, 0.5); - Tround(1, 0.7); - Tround(1, 1); - Tround(1, 1.1); - Tround(1, 1.49999); - Tround(0, -0.5); - Tround(-1, -0.5000000000000001); - Tround(-1, -0.7); - Tround(-1, -1); - Tround(-1, -1.1); - Tround(-1, -1.49999); - Tround(-1, -1.5); - Tround(9007199254740990, 9007199254740990); - Tround(9007199254740991, 9007199254740991); - Tround(-9007199254740990, -9007199254740990); - Tround(-9007199254740991, -9007199254740991); - Tround('-4.1787893', '-4.178789328', 7, 1); - Tround('372', '372', 3, 6); - Tround('-9.1645', '-9.1645354', 4, 6); - Tround('83.241462', '83.241462', 6, 6); - Tround('-0.00001262', '-0.00001262', 8, 6); - Tround('63.4147', '63.414735', 4, 3); - Tround('-2', '-2', 3, 5); - Tround('538601216', '538601216', 2, 3); - Tround('2138522', '2138522', 6, 1); - Tround('301527.309', '301527.309', 3, 5); - Tround('-7.568', '-7.5683', 3, 5); - Tround('-1969563', '-1969563', 8, 1); - Tround('-249815496353142605063083339706423770452529255711064841247978.1649', '-249815496353142605063083339706423770452529255711064841247978.16482575714251625720191747855256', 4, 3); - Tround('-8757939868931375459275247990933877309', '-8757939868931375459275247990933877309', 37, 5); - Tround('556228688742576287254121716253667920283844645854057755303259369', '556228688742576287254121716253667920283844645854057755303259369', 25, 3); - Tround('0', '0.00000000000000000000000000000000000000000000000029171651270270187897342247995644546232788426', 35, 3); - Tround('-0.0000058979376152458865088785307705', '-0.000005897937615245886508878530770431196412050562641578155968', 34, 0); - Tround('-0.00000000000000847145658', '-0.00000000000000847145657888758222743159237', 23, 3); - Tround('-6049825281564367887763596943301191584240212075976455', '-6049825281564367887763596943301191584240212075976455', 53, 0); - Tround('-64680661822322715719008107701612.741312367131318202976964422', '-64680661822322715719008107701612.74131236713131820297696442216284615573809', 27, 4); - Tround('0', '-0.0000000000000000000000000000000000048810387700772580768508931440796984745771392', 29, 2); - Tround('232730083859746141163.7653402888578932348762190816502', '232730083859746141163.76534028885789323487621908165018267559238917447610653431235463768839108', 31, 5); - Tround('-499311204526771278437755030091270601.471802335', '-499311204526771278437755030091270601.47180233568698638607829334564', 9, 2); - Tround('-4793558721695298336734196955569628362250.1', '-4793558721695298336734196955569628362250.107513868618556605590137359591047843592593', 1, 6); - Tround('0.0000000000000000000000000000000000000622', '0.000000000000000000000000000000000000062176566496', 40, 5); - Tround('-393323198834362857317921391989917230.1575124832953752419421908305674188204', '-393323198834362857317921391989917230.15751248329537524194219083056741882044261538788798', 37, 5); - Tround('0', '-0.000000000000000169092170076859363', 3, 5); - - function TbaseIn(expected, value, base) { - assert(expected, new BigNumber(value, base).toString()) - } - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); - - TbaseIn('-729.0001524157902758725803993293705227861606', '-1000000.00000001', 3); - TbaseIn('-4096.0000152587890625', '-1000000.00000001', 4); - TbaseIn('-15625.00000256', '-1000000.00000001', 5); - TbaseIn('-46656.0000005953741807651272671848803536046334', '-1000000.00000001', 6); - TbaseIn('-117649.0000001734665255574303432156634721649541', '-1000000.00000001', 7); - TbaseIn('-262144.000000059604644775390625', '-1000000.00000001', 8); - TbaseIn('-531441.0000000232305731254187746379102835730507', '-1000000.00000001', 9); - TbaseIn('-1000000.00000001', '-1000000.00000001', 10); - TbaseIn('-1771561.0000000046650738020973341431092840981941', '-1000000.00000001', 11); - TbaseIn('-2985984.000000002325680393613778387440938881268', '-1000000.00000001', 12); - TbaseIn('-4826809.0000000012258947398402566721524761600832', '-1000000.00000001', 13); - TbaseIn('-7529536.0000000006776036154587122781861854381443', '-1000000.00000001', 14); - TbaseIn('-11390625.0000000003901844231062338058222831885383', '-1000000.00000001', 15); - TbaseIn('-16777216.00000000023283064365386962890625', '-1000000.00000001', 16); - TbaseIn('-24137569.0000000001433536083296850401481727781882', '-1000000.00000001', 17); - TbaseIn('-34012224.0000000000907444262711670884293370452072', '-1000000.00000001', 18); - TbaseIn('-47045881.0000000000588804597472215429921222500439', '-1000000.00000001', 19); - TbaseIn('-64000000.0000000000390625', '-1000000.00000001', 20); - TbaseIn('-85766121.0000000000264390375792455941496210138949', '-1000000.00000001', 21); - TbaseIn('-113379904.0000000000182229445394427114965206410085', '-1000000.00000001', 22); - TbaseIn('-148035889.0000000000127696005408659110598172017909', '-1000000.00000001', 23); - TbaseIn('-191102976.0000000000090846890375538218259411675049', '-1000000.00000001', 24); - TbaseIn('-244140625.0000000000065536', '-1000000.00000001', 25); - TbaseIn('-308915776.0000000000047886513275010026255956100003', '-1000000.00000001', 26); - TbaseIn('-387420489.0000000000035407061614721497695336509027', '-1000000.00000001', 27); - TbaseIn('-481890304.0000000000026468891228855948366647868677', '-1000000.00000001', 28); - TbaseIn('-594823321.000000000001999014833671504164315094574', '-1000000.00000001', 29); - TbaseIn('-729000000.0000000000015241579027587258039932937052', '-1000000.00000001', 30); - TbaseIn('-887503681.0000000000011724827159637921277158030113', '-1000000.00000001', 31); - TbaseIn('-1073741824.0000000000009094947017729282379150390625', '-1000000.00000001', 32); - TbaseIn('-1291467969.0000000000007110309102419347878538765581', '-1000000.00000001', 33); - TbaseIn('-1544804416.0000000000005599750325378321880787999147', '-1000000.00000001', 34); - TbaseIn('-1838265625.0000000000004440743054270216786320984887', '-1000000.00000001', 35); - TbaseIn('-2176782336.0000000000003544704151217464391770978328', '-1000000.00000001', 36); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); - TbaseIn('1072424547177.982891327541533302850175278158817253467459228776101', 'donxvwix.zdts', 36); - - BigNumber.config({DECIMAL_PLACES : 86}); - TbaseIn('824178538787196749922434027872451367594239056.93473392033316110609748881918323116875731371037529199959272159196515804304815690839727', '402kfhkd37bt5n8scr1ir9ndlrnipig.s17oe7rkhi91bh', 30); - - BigNumber.config({DECIMAL_PLACES : 84}); - TbaseIn('9560389177469634483515162.499335215204179931606951906984830542647805834768203380512715304247460734647288652625', '195qdkkqsa8shmhp9e.edr89', 29); - - BigNumber.config({DECIMAL_PLACES : 65}); - TbaseIn('5955289028666603391738616069969.70235175643053599414353772852590894151261634747374296179598348968', '8qp28dk3js2iqksmqaqnq.lntnif5qh', 31); - - BigNumber.config({DECIMAL_PLACES : 49}); - TbaseIn('27603501710202437282037.4945845176631161140013607910579053986520224457133', '42545302442500101544532043113.254455200225412543300022520330204033', 6); - - BigNumber.config({DECIMAL_PLACES : 39}); - TbaseIn('9464300204295306111422098057.77248824166891668678144149703717008528', '25473f3dbce5cf3hg8318d7.dg52d120b14ea966a7ag06a2gh03', 18); - - BigNumber.config({DECIMAL_PLACES : 15}); - TbaseIn('133262758349237628352120716402.993431117739119', '3bkobquqthhfbndsmv3i.vp8o0sc4ldtji02mmgqr7blpdjgk', 32); - - BigNumber.config({DECIMAL_PLACES : 65}); - TbaseIn('171510920999634527633.53051379043557196404057602235264411208736518600450525086556631034', '1fqecn4264r1is.ijur8yj41twl9', 35); - - BigNumber.config({DECIMAL_PLACES : 48}); - TbaseIn('325927753012307620476767402981591827744994693483231017778102969592507', 'c16de7aa5bf90c3755ef4dea45e982b351b6e00cd25a82dcfe0646abb', 16); - - BigNumber.config({DECIMAL_PLACES : 48}); - TbaseIn('72783.559378210242248003991012349918599484318629885897', '11c4f.8f33690f15e13146d99092446da', 16); - - BigNumber.config({DECIMAL_PLACES : 81}); - TbaseIn('8535432796511493691316991730196733707212461.36382685871580896850891461623808', '9l0ah4mf8a0kcgn44oji4kh7l6fbenb.929jlggo43612jfn', 25); - - function TbaseOut(expected, value, base) { - assert(expected, new BigNumber(value).toString(base)) - } - - BigNumber.config({DECIMAL_PLACES : 40}); - - TbaseOut('1111100111.11111111101111100111011011001000101101', '999.999', 2); - TbaseOut('1101000.2222220210221200021112101120001001102122', '999.999', 3); - TbaseOut('33213.3333233213123020231003211120010012021032', '999.999', 4); - TbaseOut('12444.4444141414141414141414141414141414141414', '999.999', 5); - TbaseOut('4343.5554412021453552313300510342441202145355', '999.999', 6); - TbaseOut('2625.6664412312515410253566644123125154102536', '999.999', 7); - TbaseOut('1747.7773716662132071260101422335136152375747', '999.999', 8); - TbaseOut('1330.8882385024534603137817105667427164213206', '999.999', 9); - TbaseOut('999.999', '999.999', 10); - TbaseOut('829.aa973a4913443083925788751826a12209617036', '999.999', 11); - TbaseOut('6b3.bba3320237938b1770119a7a5699606ab3b294a9', '999.999', 12); - TbaseOut('5bb.ccaa5926381c699320b4278283cb62c494684889', '999.999', 13); - TbaseOut('515.ddb38266d3049bdac14b5d165539a5b770ad942', '999.999', 14); - TbaseOut('469.eeb9595959595959595959595959595959595959', '999.999', 15); - TbaseOut('3e7.ffbe76c8b4395810624dd2f1a9fbe76c8b439581', '999.999', 16); - TbaseOut('37d.ggc18275989641138dge6d54eg08g529aeb6faa1', '999.999', 17); - TbaseOut('319.hhc307dh7b6deeha40a6b43307dh7b6deeha40a7', '999.999', 18); - TbaseOut('2eb.iic2ch24i43efhgd61307b0e199g6fb74a55dcac', '999.999', 19); - TbaseOut('29j.jjc', '999.999', 20); - TbaseOut('25c.kkbfaii9d8gg7b6ee594cc372aa15087k2j65i0h', '999.999', 21); - TbaseOut('219.llb7g822a4ceh5a0fag44k937cak18la89ii6f3', '999.999', 22); - TbaseOut('1ka.mmaj3f2cgc81fe490kebi8f9m173blcfb08mj6j3', '999.999', 23); - TbaseOut('1hf.nna4590djiena4590djiena4590djiena4590djj', '999.999', 24); - TbaseOut('1eo.oo99999999999999999999999999999999999999', '999.999', 25); - TbaseOut('1cb.pp8b0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb0g5lb1', '999.999', 26); - TbaseOut('1a0.qq78f2dle09cnjl9h6mblfcj9ij58geni8qkbn0n', '999.999', 27); - TbaseOut('17j.rr619hjdigg3g9nr2pf067h6qc2j7ar95474jjq6', '999.999', 28); - TbaseOut('15d.ss4hkojk13n4rnf1dpo9ham09782ifbgg63d28cl', '999.999', 29); - TbaseOut('139.tt3', '999.999', 30); - TbaseOut('117.uu16eq9rha657cl1g2ngcbdir7m8tmihjp2dsf4t', '999.999', 31); - TbaseOut('v7.vuv7di5k75c10oidqboqjuv7di5k75c10oidqbor', '999.999', 32); - TbaseOut('u9.wvu22k10p1i619fhuaq3d5gsfqkr584weg2bahcu', '999.999', 33); - TbaseOut('td.xwsnmjjt3i7kw38x68nvs0igtcqmabee4ufqd1up', '999.999', 34); - TbaseOut('sj.yxr4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4', '999.999', 35); - TbaseOut('rr.zypcdtnwjl0v3qs82axzf9i56mgpcdtnwjl0v3qs', '999.999', 36); - - BigNumber.config({DECIMAL_PLACES : 20}); - TbaseOut('b8b057c619.881cda90778727315519', '240240367775.61294728461437827', 14); - - BigNumber.config({DECIMAL_PLACES : 57}); - TbaseOut('3uke1r.qog7jpuls3wumhw9r6ij66xbtr9fxmcxo7pjkdsets6obc03cdkpohtp4', '177198677.78587988442236198004', 34); - - BigNumber.config({DECIMAL_PLACES : 53}); - TbaseOut('rxp7iouofqsa.5xr0ytex5w3u84ss4bmqr4d2r58uk0w6vou7okvti3sqaf8xdt7m4', '2699846669670878465.17042631933406076262750289627556', 35); - - BigNumber.config({DECIMAL_PLACES : 10}); - TbaseOut('71.4dadah84a6', '127.26419', 18); - - BigNumber.config({DECIMAL_PLACES : 62}); - TbaseOut('pho3b9iei6hp0dcf72fih.ph9881jc7d7c0c0mgpgd1ji1k02ola0l976leng417ng4dma8k5jj95gommail', '511945071604551808598197283361.9872166378092262156654881169655510', 26); - - BigNumber.config({DECIMAL_PLACES : 16}); - TbaseOut('98.1902712204800298', '107.16547', 11); - - BigNumber.config({DECIMAL_PLACES : 20}); - - function TtoString(expected, value) { - assert(expected, new BigNumber(value).toString()) - } - - TtoString('NaN', NaN); - TtoString('Infinity', 1/0); - TtoString('-Infinity', -1/0); - TtoString('0', 0); - TtoString('9', 9); - TtoString('90', 90); - TtoString('90.12', 90.12); - TtoString('0.1', 0.1); - TtoString('0.01', 0.01); - TtoString('0.0123', 0.0123); - TtoString('111111111111111111111', '111111111111111111111'); - TtoString('1111111111111111111111', '1111111111111111111111'); - TtoString('11111111111111111111111', '11111111111111111111111'); - TtoString('0.00001', 0.00001); - TtoString('0.000001', 0.000001); - - BigNumber.config({EXPONENTIAL_AT : 0}); - - TtoString('5.73447902457635174479825134e+14', '573447902457635.174479825134'); - TtoString('1.07688e+1', '10.7688'); - TtoString('3.171194102379077141557759899307946350455841e+27', '3171194102379077141557759899.307946350455841'); - TtoString('4.924353466898191177698653319742594890634579e+37', '49243534668981911776986533197425948906.34579'); - TtoString('6.85558243926569397328633907445409866949445343654692955e+18', '6855582439265693973.28633907445409866949445343654692955'); - TtoString('1e+0', '1'); - TtoString('2.1320000803e+7', '21320000.803'); - TtoString('5.0878741e+4', '50878.741'); - TtoString('5.1932898288391e+8', '519328982.88391'); - TtoString('5.690616778176956027307884725933410349604387915634524e+49', '56906167781769560273078847259334103496043879156345.24'); - TtoString('3.25099780528575457273246693147645e+15', '3250997805285754.572732466931476450'); - TtoString('3e+0', '3'); - TtoString('2.5811494197573291905990947355226e+13', '25811494197573.291905990947355226'); - TtoString('5.60372259169833930471746454125e+13', '56037225916983.3930471746454125'); - TtoString('1.2615810663732236602461593613783e+7', '12615810.663732236602461593613783'); - TtoString('1.4654366449266911507705477499035407722184965108377032e+11', '146543664492.66911507705477499035407722184965108377032'); - TtoString('6.4986735507448912857131832908423940757e+38', '649867355074489128571318329084239407570.0'); - TtoString('3.6146989180120676857245474944e+3', '3614.6989180120676857245474944'); - TtoString('9.928654762302286149994896625074e+4', '99286.54762302286149994896625074'); - TtoString('3.46424170787806074650506079e+3', '3464.24170787806074650506079'); - TtoString('1.25934313355319666474752550204680303068865719647e+33', '1259343133553196664747525502046803.03068865719647'); - TtoString('1.23014105337660651106978059198916100450966081493207e+27', '1230141053376606511069780591.98916100450966081493207'); - TtoString('1.386164712267169624993434287237e+23', '138616471226716962499343.4287237'); - TtoString('2.66076369930322488334961932e+3', '2660.76369930322488334961932'); - - BigNumber.config({EXPONENTIAL_AT : 1E9}); - - function TtoExponential(expected, value, decimalPlaces){ - assert(String(expected), new BigNumber(value).toExponential(decimalPlaces)); - } - - TtoExponential('1e+0', 1, undefined); - TtoExponential('1.1e+1', 11, undefined); - TtoExponential('1.12e+2', 112, undefined); - TtoExponential('1e+0', 1, 0); - TtoExponential('1e+1', 11, 0); - TtoExponential('1e+2', 112, 0); - TtoExponential('1.0e+0', 1, 1); - TtoExponential('1.1e+1', 11, 1); - TtoExponential('1.1e+2', 112, 1); - TtoExponential('1.00e+0', 1, 2); - TtoExponential('1.10e+1', 11, 2); - TtoExponential('1.12e+2', 112, 2); - TtoExponential('1.000e+0', 1, 3); - TtoExponential('1.100e+1', 11, 3); - TtoExponential('1.120e+2', 112, 3); - TtoExponential('1e-1', 0.1, undefined); - TtoExponential('1.1e-1', 0.11, undefined); - TtoExponential('1.12e-1', 0.112, undefined); - TtoExponential('1e-1', 0.1, 0); - TtoExponential('1e-1', 0.11, 0); - TtoExponential('1e-1', 0.112, 0); - TtoExponential('1.0e-1', 0.1, 1); - TtoExponential('1.1e-1', 0.11, 1); - TtoExponential('1.1e-1', 0.112, 1); - TtoExponential('1.00e-1', 0.1, 2); - TtoExponential('1.10e-1', 0.11, 2); - TtoExponential('1.12e-1', 0.112, 2); - TtoExponential('1.000e-1', 0.1, 3); - TtoExponential('1.100e-1', 0.11, 3); - TtoExponential('1.120e-1', 0.112, 3); - - BigNumber.config({ROUNDING_MODE : 0}); - - TtoExponential('-5.3453435435e+8', '-53453.435435E4', undefined); - TtoExponential('-8.8254658100092746334967191957167916942544e+17', '-882546581000927463.34967191957167916942543286', 40); - TtoExponential('-4.794121828559674450610889008537305783490457e-9', '-0.00000000479412182855967445061088900853730578349045628396662493370334888944406719979291547717079', 42); - TtoExponential('3.6149e+33', '3614844933096444884855774574994631.0106397808', 4); - TtoExponential('5.582954000000000e-12', '0.000000000005582954', 15); - TtoExponential('-3.88740271991885914774802363151163005925700000000000000000e-24', '-0.000000000000000000000003887402719918859147748023631511630059257', 56); - - BigNumber.config({ROUNDING_MODE : 1}); - - TtoExponential('0e+0', '-0.0E-0', undefined); - TtoExponential('-2.856376815219143184897347685012382222462687620998915470135915e+6', '-2856376.815219143184897347685012382222462687620998915470135915511363444', 60); - TtoExponential('7.75700e-24', '0.000000000000000000000007757', 5); - TtoExponential('7.0e-1', '0.7', 1); - TtoExponential('5.2109749078977455423107465583658126e+37', '52109749078977455423107465583658126637', 34); - TtoExponential('3.631093819552528994444977110063007461579154042777868294000e-29', '0.00000000000000000000000000003631093819552528994444977110063007461579154042777868294', 57); - TtoExponential('-9.893937860425888e+8', '-989393786.042588804219191', 15); - - BigNumber.config({ROUNDING_MODE : 2}); - - TtoExponential('-5.28860565e-16', '-0.00000000000000052886056528317233012115396784629214632', 8); - TtoExponential('6.4114675970838738000e-18', '0.0000000000000000064114675970838738', 19); - TtoExponential('8.00000000000000000000e-20', '0.00000000000000000008', 20); - TtoExponential('2.74000064578288771723078597711103520450391668117802304078152085625023633681179e+24', '2740000645782887717230785.977111035204503916681178023040781520856250236336811781347278', 77); - TtoExponential('8.1936742669491704846805837777816457628e-16', '0.00000000000000081936742669491704846805837777816457628', 37); - TtoExponential('-7.2157448e+14', '-721574484716710.00141299844961546', 7); - TtoExponential('-5.321807464703650000000e-15', '-0.00000000000000532180746470365', 21); - TtoExponential('-4.449e+27', '-4449471658582621135143349142.228707647170080816912435271162', 3); - - BigNumber.config({ROUNDING_MODE : 3}); - - TtoExponential('-9.99999999000000009e+8', '-999999999.000000009e-0', undefined); - TtoExponential('-3.99764422903251220452704763278376060858663250289320247532595e+24', '-3997644229032512204527047.63278376060858663250289320247532594416986984981431156065660613', 59); - TtoExponential('5.534083545686157907280686578717428772e+12', '5534083545686.157907280686578717428772', 36); - TtoExponential('5.00000000e-9', '0.000000005', 8); - TtoExponential('-4.08363116583051e+14', '-408363116583051', 14); - TtoExponential('9.278230415634296945273818e+19', '92782304156342969452.738186255580532649103987374718221928871873054827841260470670536425', 24); - - BigNumber.config({ROUNDING_MODE : 4}); - - TtoExponential('-5.002239116605888927178702930656e-39', '-0.00000000000000000000000000000000000000500223911660588892717870293065633642', 30); - TtoExponential('-8.52292947230244775435e+29', '-852292947230244775434968241532.494643593912804433318745222587246680109833509655450267792446', 20); - TtoExponential('-6.1169514510867e+10', '-61169514510.8673382', 13); - TtoExponential('-8.05745763527307676170759722175169266017831695215e+48', '-8057457635273076761707597221751692660178316952146', 47); - TtoExponential('-4.923572102098e+10', '-49235721020.9847017846898652687600227388412980598816', 12); - TtoExponential('-7.981341661715027117746906076515945e+41', '-798134166171502711774690607651594491039629', 33); - TtoExponential('-8.00e-3', '-0.008', 2); - - BigNumber.config({ROUNDING_MODE : 5}); - - TtoExponential('4.95474614815842e+38', '495474614815842191683004449862568813538.573064401156', 14); - TtoExponential('-8.9667567079038139e+16', '-89667567079038139', 16); - TtoExponential('-7.0e+2', '-703', 1); - TtoExponential('-2.6249e+33', '-2624861185343559570287214983819906', 4); - TtoExponential('-6.510119186347371697501169416839709631422185436811698613000000000000000000000000000000e-31', '-0.0000000000000000000000000000006510119186347371697501169416839709631422185436811698613', 84); - TtoExponential('7.73e+3', '7729', 2); - TtoExponential('1.4393781011009257793117531801549e+4', '14393.781011009257793117531801548751', 31); - - BigNumber.config({ROUNDING_MODE : 6}); - - TtoExponential('-4.3502707501164e+36', '-4350270750116411997402439304498892819', 13); - TtoExponential('9.5e-21', '0.0000000000000000000094520280724178734152', 1); - TtoExponential('1.39631186750554172785676012693418617250072200744214625994656047727270672248243741907e+34', '13963118675055417278567601269341861.725007220074421462599465604772727067224824374190703237660781', 83); - TtoExponential('5.9446570e-26', '0.00000000000000000000000005944657036540768164877637239177740419063920648', 7); - TtoExponential('7.00000e-12', '0.000000000007', 5); - - BigNumber.config({ROUNDING_MODE : 4}); - - TtoExponential('-2.033619450856645241153977e+0', '-2.03361945085664524115397653636144859', 24); - TtoExponential('1.130e+8', '112955590.0430616', 3); - TtoExponential('-2.1366468193419876852426155614364269e+10', '-21366468193.419876852426155614364269', 34); - TtoExponential('5.82086615659566151529e+7', '58208661.56595661515285734890860077163', 20); - - function TtoFixed(expected, value, decimalPlaces){ - assert(String(expected), new BigNumber(value).toFixed(decimalPlaces)); - } - - TtoFixed('NaN', NaN, 2); - TtoFixed('Infinity', 1/0, 2); - TtoFixed('-Infinity', -1/0, 2); - - TtoFixed('1111111111111111111111.00000000', '1111111111111111111111', 8); - TtoFixed('0.1', 0.1, 1); - TtoFixed('0.10', 0.1, 2); - TtoFixed('0.100', 0.1, 3); - TtoFixed('0.01', 0.01, 2); - TtoFixed('0.010', 0.01, 3); - TtoFixed('0.0100', 0.01, 4); - TtoFixed('0.00', 0.001, 2); - TtoFixed('0.001', 0.001, 3); - TtoFixed('0.0010', 0.001, 4); - TtoFixed('1.0000', 1, 4); - TtoFixed('1.0', 1, 1); - TtoFixed('1', 1, 0); - TtoFixed('12', 12, 0); - TtoFixed('1', 1.1, 0); - TtoFixed('12', 12.1, 0); - TtoFixed('1', 1.12, 0); - TtoFixed('12', 12.12, 0); - TtoFixed('0.0000006', 0.0000006, 7); - TtoFixed('0.00000006', 0.00000006, 8); - TtoFixed('0.000000060', 0.00000006, 9); - TtoFixed('0.0000000600', 0.00000006, 10); - TtoFixed('0', 0, 0); - TtoFixed('0.0', 0, 1); - TtoFixed('0.00', 0, 2); - - BigNumber.config({ROUNDING_MODE : 0}); - - TtoFixed('6552606716539719300271040797809220.3', '6552606716539719300271040797809220.237838405', 1); - TtoFixed('25605410.260045950231371', '25605410.260045950231370974066', 15); - TtoFixed('-65593283.0000', '-65593283', 4); - TtoFixed('-2238743875407788208860272230040067273281097722822075126.88000000000', '-2238743875407788208860272230040067273281097722822075126.88', 11); - TtoFixed('-1714042659419404211.0000000', '-1714042659419404211', 7); - TtoFixed('580861301.000', '580861301', 3); - TtoFixed('-495746734.000', '-495746734', 3); - TtoFixed('-909962202.00000', '-909962202', 5); - TtoFixed('-6588.00', '-6588', 2); - - BigNumber.config({ROUNDING_MODE : 1}); - - TtoFixed('0.3', '0.3', 1); - TtoFixed('-200258348374.3', '-200258348374.3595802551014614089785610548492885372322083789', 1); - TtoFixed('-8996550690041157178188143247448286757711.5580857413', '-8996550690041157178188143247448286757711.55808574133329', 10); - TtoFixed('-3172413669280032477.00', '-3172413669280032477', 2); - TtoFixed('6547946357820.750067107731812021675', '6547946357820.750067107731812021675351468709784004', 21); - TtoFixed('24188393190716631282750407915133817062572333100239.0000000000000000000', '24188393190716631282750407915133817062572333100239', 19); - TtoFixed('539982361589798324286450574560330534901309503.82000000', '539982361589798324286450574560330534901309503.82', 8); - TtoFixed('829898800701640360552652.0000', '829898800701640360552652', 4); - TtoFixed('-1585782773394.4', '-1585782773394.44501382110847', 1); - TtoFixed('-7604844176594943774211951887242195107.399', '-7604844176594943774211951887242195107.399576743428669618164', 3); - - BigNumber.config({ROUNDING_MODE : 2}); - - TtoFixed('7810971819938620325901899057970512790433.0000000000000000', '7810971819938620325901899057970512790433', 16); - TtoFixed('-623395.0', '-623395', 1); - TtoFixed('81334094079413997693749807.000000000000', '81334094079413997693749807', 12); - TtoFixed('790143966.5', '790143966.406169480041929356421', 1); - TtoFixed('-0.000485', '-0.0004851099615478', 6); - TtoFixed('843581583868277359263.9721265', '843581583868277359263.97212648230399373761717', 7); - TtoFixed('-921038771017147427324121032.000000', '-921038771017147427324121032', 6); - TtoFixed('-823.0', '-823', 1); - TtoFixed('505.0', '505', 1); - - BigNumber.config({ROUNDING_MODE : 3}); - - TtoFixed('0.0000', '0.00000000000584', 4); - TtoFixed('-79055907138737329232.165677999092552368', '-79055907138737329232.1656779990925523674', 18); - TtoFixed('47206303530045536472421888342339.00000000', '47206303530045536472421888342339', 8); - TtoFixed('3974.0', '3974', 1); - TtoFixed('1296297430771.39', '1296297430771.391670729445980444292', 2); - TtoFixed('0.000016', '0.00001686928031', 6); - TtoFixed('-0.00001', '-0.0000000000008', 5); - TtoFixed('4883938724383.000', '4883938724383', 3); - TtoFixed('-5.4115622307', '-5.411562230628539329345282639155988044655000352687981880842', 10); - TtoFixed('-0.01', '-0.0000000000155280115429218804426906540524', 2); - TtoFixed('-2730930776035874709906.00000', '-2730930776035874709906', 5); - TtoFixed('8419336352549424092369623.00000', '8419336352549424092369623', 5); - - BigNumber.config({ROUNDING_MODE : 4}); - - TtoFixed('733744593401073823825766410831877679446.0000000000000000000', '733744593401073823825766410831877679446', 19); - TtoFixed('-64.6849459', '-64.6849458687691227978', 7); - TtoFixed('-0.000000', '-0.00000000009', 6); - TtoFixed('-62537287527837589298857228059657673223234916.95923265430000000', '-62537287527837589298857228059657673223234916.9592326543', 17); - TtoFixed('3393668096256773847245721315080265089731.000000', '3393668096256773847245721315080265089731', 6); - TtoFixed('0.0', '0.0000000000000056674956638008432348702401392', 1); - TtoFixed('72516372734.6', '72516372734.6447', 1); - TtoFixed('-418.28', '-418.2800731793741351', 2); - TtoFixed('0.00', '0.001', 2); - - BigNumber.config({ROUNDING_MODE : 5}); - - TtoFixed('0.00', '0.00000000000000070362', 2); - TtoFixed('682377946933004839.0000000', '682377946933004839', 7); - TtoFixed('0.000000000', '0.00000000000000301722508588270616971784651380892069087869575', 9); - TtoFixed('-356330174906.7', '-356330174906.737986270704', 1); - TtoFixed('771875969530483104163034745359742192923504.000000000000000', '771875969530483104163034745359742192923504', 15); - TtoFixed('-85.57612133364', '-85.576121333642541652128540737082', 11); - TtoFixed('-796870619982006783.00000000', '-796870619982006783', 8); - TtoFixed('985819.0', '985819', 1); - - BigNumber.config({ROUNDING_MODE : 6}); - - TtoFixed('-6614662975368684488885953285955838893900074215956.00', '-6614662975368684488885953285955838893900074215956', 2); - TtoFixed('8642393776898.000', '8642393776898', 3); - TtoFixed('3612207878528.1106344698085142865', '3612207878528.1106344698085142865438924419', 19); - TtoFixed('977910386.93', '977910386.9343537', 2); - TtoFixed('-8937937492688941768401276851642629965923372.0', '-8937937492688941768401276851642629965923372', 1); - TtoFixed('-8327876772303865517454752161.4376112752921904774', '-8327876772303865517454752161.43761127529219047742910886', 19); - TtoFixed('-27707.00', '-27707', 2); - TtoFixed('-7287595765894242586375.92700435484', '-7287595765894242586375.927004354837723619581861634319', 11); - TtoFixed('-0.00000', '-0.000000000000023670858459165486137218740358207859', 5); - TtoFixed('574676836802209077.64156', '574676836802209077.641563875647945277493356873895', 5); - TtoFixed('-3041038455237222898218053653661.87952947815', '-3041038455237222898218053653661.87952947815', 11); - TtoFixed('-628244132307.000', '-628244132307', 3); - - BigNumber.config({ROUNDING_MODE : 4}); - - function TtoFraction(expected, value, maxDenominator){ - assert(expected, new BigNumber(value).toFraction(maxDenominator).toString()); - } - - TtoFraction('5,1', '5.1582612935891', '3'); - TtoFraction('14645,1797', '8.14969395596340', '4682'); - TtoFraction('350921,81990', '4.28004634702', '82418'); - TtoFraction('923754598113149102531799372705758450549,100000000', '9237545981131491025317993727057.58450549'); - TtoFraction('23665467152910525354658972818814752082,49447', '478602688796297558085606261629921.9787246948249979233505266225354557384', '57466'); - TtoFraction('12401124714135748113774134798397,2', '6200562357067874056887067399198.66971421701', '2'); - TtoFraction('5747456325233732815460960864983211610837351385715799969377,100000000000000000000000000000', '57474563252337328154609608649.83211610837351385715799969377'); - TtoFraction('4744,61', '77.7705294446793765233206385561288346447', '86'); - TtoFraction('230406626515463254737498487452583023685806305331639,100000000000000000000000000', '2304066265154632547374984.87452583023685806305331639'); - TtoFraction('8452816572418429518944119647,5000', '1690563314483685903788823.9294'); - TtoFraction('48239499471878294436129777581,10000000000000000', '4823949947187.82944361297775810'); - TtoFraction('45172634468362586403517152343110493066053,74300', '607976237797612199239800166125309462.530995962577562', '89241'); - TtoFraction('245629009658126699398365025147112883705717,1250000000000000000000000000000', '196503207726.5013595186920201176903069645736'); - TtoFraction('19575206081236584421562241755643406299,500000000000000000000000000000000000', '39.150412162473168843124483511286812598'); - TtoFraction('124335953351113119989680198250484096210027176457861877,20000000000000000000000', '6216797667555655999484009912524.20481050135882289309385'); - TtoFraction('62359286968916651021817694022163661098254437249041482587,100000000000000000000000000', '623592869689166510218176940221.63661098254437249041482587'); - TtoFraction('1406253392003122107350210973,50', '28125067840062442147004219.46', '90'); - TtoFraction('736337826,1', '736337826.0', '1'); - TtoFraction('2294354321,3019', '759971.62007285863174441704674479534091075', '5946'); - TtoFraction('342555042697121035185957633789368546657896318423873,50000000000000000000000000', '6851100853942420703719152.67578737093315792636847746'); - TtoFraction('3511582655801640591,52', '67530435688493088.2885316751682999639624370547426320', '73'); - TtoFraction('697806103903081,1', '697806103903081.3297023089715266281593302923590', '1'); - TtoFraction('504239849856718524776121635107896338763895,26083', '19332126283660565302155489595057943440.70448184108567544983900489517214731', '26482'); - TtoFraction('3513961,10', '351396.0988885676988110229927700324193', '11'); - TtoFraction('1514998954038665195379885,15263', '99259578984384799540.056673', '55079'); - TtoFraction('1190687310674838338273481559,50000', '23813746213496766765469.63118'); - TtoFraction('31747884008318370382077439489,40', '793697100207959259551935987.225181146039', '45'); - TtoFraction('39451289109544785156061546711681,59993', '657598204949657212609163514.271348320970259397527780637349273932', '61325'); - TtoFraction('3859539118592118171061,65', '59377524901417202631.7076617756627530296590420377861', '248'); - TtoFraction('2529860848590369124121129138,36761', '68819152052184900414056.449443703377131320899467509', '59208'); - TtoFraction('17331073,2', '8665536.3781112033855216846406980971689', '2'); - TtoFraction('11088761069693879,25000', '443550442787.75516'); - TtoFraction('37298162459148947522489,474', '78688106453900733169.80801275320205353359142143262532', '517'); - TtoFraction('12411782390212011049587005051032466579057,100000000000000000000000000000000000000', '124.11782390212011049587005051032466579057'); - TtoFraction('288377889236302421024476469650301879883847,50000000000000000000000', '5767557784726048420.48952939300603759767694'); - TtoFraction('64269805556832147,1', '64269805556832146.8921574533060466484388410550211', '2'); - TtoFraction('1019428223041680221,2', '509714111520840110.44623631764611004359625363775303233110', '2'); - TtoFraction('15446409508173177876456900755482517,250000', '61785638032692711505827603021.9300680'); - TtoFraction('794012664285496747924956753856029102507539,10000000', '79401266428549674792495675385602910.2507539'); - TtoFraction('1254937597799095507639361,5', '250987519559819101527872.2'); - TtoFraction('6200289913593672418541428454415821,29', '213803100468747324777290636359166.2447131068603257501', '29'); - TtoFraction('28363420172665408049802993720278,1', '28363420172665408049802993720278.0', '53164'); - TtoFraction('614972069955669535218947919309413188717428438,76097', '8081423314397013485668921499000133891183.99461213951158548435230604703', '85075'); - TtoFraction('456397843623966327008858405616124567381,62500000000000000000', '7302365497983461232.141734489857993078096'); - TtoFraction('18578778016377890885386246496020651,1000000000000000000000000', '18578778016.377890885386246496020651'); - - function TtoPrecision(expected, value, precision){ - assert(String(expected), new BigNumber(value).toPrecision(precision)); - } - - BigNumber.config({EXPONENTIAL_AT : [-7, 40]}); - - TtoPrecision('1e+27', '1.2345e+27', 1); - TtoPrecision('1.2e+27', '1.2345e+27', 2); - TtoPrecision('1.23e+27', '1.2345e+27', 3); - TtoPrecision('1.235e+27', '1.2345e+27', 4); - TtoPrecision('1.2345e+27', '1.2345e+27', 5); - TtoPrecision('1.23450e+27', '1.2345e+27', 6); - TtoPrecision('1.234500e+27', '1.2345e+27', 7); - - TtoPrecision('-1e+27', '-1.2345e+27', 1); - TtoPrecision('-1.2e+27', '-1.2345e+27', 2); - TtoPrecision('-1.23e+27', '-1.2345e+27', 3); - TtoPrecision('-1.235e+27', '-1.2345e+27', 4); - TtoPrecision('-1.2345e+27', '-1.2345e+27', 5); - TtoPrecision('-1.23450e+27', '-1.2345e+27', 6); - TtoPrecision('-1.234500e+27', '-1.2345e+27', 7); - - BigNumber.config({ROUNDING_MODE : 0}); - - TtoPrecision('-0.000090000000', '-0.00009', 8); - TtoPrecision('-7e-7', '-0.0000007', 1); - TtoPrecision('68.9316834061848', '68.931683406184761912218250317', 15); - TtoPrecision('7.8601018089704732e+27', '7860101808970473167417935916.60087069', 17); - TtoPrecision('3.21445885399803244067719798337437062000000e-11', '0.0000000000321445885399803244067719798337437062', 42); - TtoPrecision('-8171786349835057630612358814.162756978', '-8171786349835057630612358814.162756977984', 37); - TtoPrecision('3340.9039701', '3340.903970019817086594869184429527413533291595472085', 11); - TtoPrecision('-7269097658095414435895.9161181115739745427300313060', '-7269097658095414435895.916118111573974542730031306', 50); - TtoPrecision('0.00000632207', '0.00000632206077863', 6); - TtoPrecision('6e+2', '573', 1); - TtoPrecision('7.4e-7', '0.000000738', 2); - TtoPrecision('-5.031561e-7', '-0.0000005031560306227217140253964236911907612837', 7); - TtoPrecision('-4.291e+11', '-429050053964', 4); - TtoPrecision('8.514e+7', '85131637', 4); - TtoPrecision('-3.4e-9', '-0.000000003326783057540398442677461', 2); - TtoPrecision('6.9404295962722512e-20', '0.00000000000000000006940429596272251146200868514973032594273', 17); - TtoPrecision('-828376248340605120247.15155295014', '-828376248340605120247.15155295013990774586360178257303370779', 32); - - - BigNumber.config({ROUNDING_MODE : 1}); - - TtoPrecision('-844789036.5239726', '-844789036.52397268892', 16); - TtoPrecision('-5056.20629012767878749185273209679064306054', '-5056.206290127678787491852732096790643060542', 42); - TtoPrecision('-0.3287519131314873763501859870298952500', '-0.32875191313148737635018598702989525', 37); - TtoPrecision('-60729764', '-60729764', 8); - TtoPrecision('-7.622e-14', '-0.00000000000007622481594531380999826456196664586', 4); - TtoPrecision('-4686402261639729535.736324492474', '-4686402261639729535.7363244924747488', 31); - TtoPrecision('-2.0', '-2', 2); - TtoPrecision('-13801188035233586637950193108.13592574381473451125649500', '-13801188035233586637950193108.135925743814734511256495', 55); - TtoPrecision('0.0000807327587149839799300000', '0.00008073275871498397993', 24); - TtoPrecision('-6.000000e-8', '-0.00000006', 7); - TtoPrecision('-3.83574993e+11', '-383574993535', 9); - TtoPrecision('7.6987000000000000e-14', '0.000000000000076987', 17); - TtoPrecision('80928866804.6112050947427973', '80928866804.6112050947427973864826014844575374353', 27); - TtoPrecision('-0.00730140', '-0.0073014067221009206110062377503733', 6); - - BigNumber.config({ROUNDING_MODE : 2}); - - TtoPrecision('-0.0300', '-0.0300921721159558', 3); - TtoPrecision('65317841202.20949859371772273480125', '65317841202.2094985937177227348012464402154', 34); - TtoPrecision('-8.9231575495202e+29', '-892315754952021994731329589682.1894180393920044085713', 14); - TtoPrecision('-2.8075679202e-8', '-0.0000000280756792028583066', 11); - TtoPrecision('9.71456e+9', '9714558552', 6); - TtoPrecision('2.9514099281e-10', '0.00000000029514099281', 11); - TtoPrecision('-1.24459e+14', '-124459985101107', 6); - TtoPrecision('0.0000734657394154607815562372000000', '0.0000734657394154607815562372', 30); - TtoPrecision('1.78719530353972e+15', '1787195303539715', 15); - TtoPrecision('-2.8e+9', '-2861102528', 2); - TtoPrecision('-8.74480375581000e-9', '-0.00000000874480375581', 15); - TtoPrecision('-1792404726015427380.248150830448457643618022', '-1792404726015427380.248150830448457643618022', 43); - TtoPrecision('-678437320202616518.2220157912209286', '-678437320202616518.22201579122092864', 34); - - BigNumber.config({ROUNDING_MODE : 3}); - - TtoPrecision('-39449414270333.925852213835', '-39449414270333.925852213834759031494508489474', 26); - TtoPrecision('-7.50437989976', '-7.50437989975503711836768', 12); - TtoPrecision('-0.000004303975760000000', '-0.00000430397576', 16); - TtoPrecision('-16040233916257241895.97650633973989', '-16040233916257241895.9765063397398857', 34); - TtoPrecision('-7438.9287248601393819', '-7438.9287248601393818639176907606', 20); - TtoPrecision('9.857465584298e-7', '0.000000985746558429876825600458537705318327799', 13); - TtoPrecision('532637.9095983547284850466577958315920', '532637.90959835472848504665779583159203905641996', 37); - TtoPrecision('-1.40416695292e+30', '-1404166952915258058306475434520.7856110230505157', 12); - TtoPrecision('60346876.6670832429026869255506808488', '60346876.6670832429026869255506808488', 36); - TtoPrecision('-2.52466133e+23', '-252466132238128405832984', 9); - TtoPrecision('55', '55', 2); - TtoPrecision('8', '8', 1); - - BigNumber.config({ROUNDING_MODE : 4}); - - TtoPrecision('7.905300379788e+16', '79053003797878062.6454954', 13); - TtoPrecision('-6.83490000000e-13', '-0.00000000000068349', 12); - TtoPrecision('-62760641815.69084973661201201', '-62760641815.690849736612012010742308663', 28); - TtoPrecision('0.000704', '0.000704496313', 3); - TtoPrecision('82926865286287.8852357368342860830310721063079299643', '82926865286287.88523573683428608303107210630792996432', 51); - TtoPrecision('-0.00032388272393900301214220090249', '-0.00032388272393900301214220090248744799603424908', 29); - TtoPrecision('8.6e+12', '8621641486938.4837308885005093571508566552428700982454', 2); - TtoPrecision('2', '2', 1); - TtoPrecision('1.4641440117052559075e+20', '146414401170525590746.047955203899370771105088', 20); - TtoPrecision('3511.925583', '3511.925583', 10); - TtoPrecision('2861824.253079699095728', '2861824.253079699095727765750377038689', 22); - TtoPrecision('-3.940097756e+10', '-39400977564.548924098664431671700066962', 10); - TtoPrecision('-888', '-888', 3); - TtoPrecision('-0.000302106125213724988141721256104', '-0.00030210612521372498814172125610432438685', 30); - TtoPrecision('6943.4804552555315615809650428503', '6943.480455255531561580965042850266831249032130818358478956', 32); - - BigNumber.config({ROUNDING_MODE : 5}); - - TtoPrecision('-1408003897645960.648499616456', '-1408003897645960.648499616456', 28); - TtoPrecision('-7719307749101742537.6299396338672184', '-7719307749101742537.6299396338672184334306', 35); - TtoPrecision('-1.0', '-1', 2); - TtoPrecision('-8.28e+14', '-827860423543649', 3); - TtoPrecision('0.00054398953021585321711560388890', '0.00054398953021585321711560388889590290139888', 29); - TtoPrecision('-4.409e-9', '-0.000000004408792', 4); - TtoPrecision('4.0000e-10', '0.0000000004', 5); - TtoPrecision('3.40e+16', '34001779327925905', 3); - TtoPrecision('-9.03e+34', '-90332622851356543193546536340366547', 3); - TtoPrecision('-4.5320e+16', '-45320100856429143.39155209710530673318222777', 5); - TtoPrecision('3.618e+30', '3618328715720583671291544414202', 4); - TtoPrecision('-1003.61140', '-1003.61139687804673322250551', 9); - TtoPrecision('-8139415035028632370.38737', '-8139415035028632370.38736602659835', 24); - TtoPrecision('8e+7', '83198058', 1); - - BigNumber.config({ROUNDING_MODE : 6}); - - TtoPrecision('0.08000', '0.08', 4); - TtoPrecision('-4.5132e+21', '-4513243388120382069815.8508153058993058875', 5); - TtoPrecision('-73549', '-73549.2594630551663822238', 5); - TtoPrecision('1.275868004728922895890883e+29', '127586800472892289589088296800.6', 25); - TtoPrecision('-0.0003715444034899460421534099962225699000', '-0.0003715444034899460421534099962225699', 37); - TtoPrecision('-6.9625565265e+24', '-6962556526511822306135536', 11); - TtoPrecision('1.67583703641e+13', '16758370364138.915293525076269061228714877', 12); - TtoPrecision('-173594.95064085553515176707313947534918109631092170', '-173594.950640855535151767073139475349181096310921699', 50); - TtoPrecision('-6.9503965525e+19', '-69503965525000308384.151383', 11); - TtoPrecision('4.411225e+20', '441122486054080817112', 7); - TtoPrecision('2.467044064783596937642371770e+31', '24670440647835969376423717700462.39', 28); - TtoPrecision('3.9711897549481645654e+24', '3971189754948164565361634.8039734590476326224193520402091769', 20); - TtoPrecision('-1.4757613208690e+21', '-1475761320868963235919.64499841336073105746686372924161', 14); - TtoPrecision('91683083887068.6191146', '91683083887068.61911461351134520171343337804061135', 21); - TtoPrecision('-7923074181102822.578', '-7923074181102822.5778', 19); - - n = new BigNumber(1); - assert(true, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(true, n.equals(n)); - assert(true, n.equals(n, 2)); - assert(true, n.equals('1.0', 20)); - assert(true, n.equals(new BigNumber(1, 10), 26)); - assert(true, n.equals(new BigNumber(1), 27)); - assert(true, n.equals(1, 36)); - assert(true, n.greaterThan(0.99999)); - assert(false, n.greaterThanOrEqualTo(1.1)); - assert(true, n.lessThan(1.001)); - assert(true, n.lessThanOrEqualTo(2)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('-0.1'); - assert(true, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(false, n.isZ()); - assert(false, n.equals(0.1)); - assert(false, n.greaterThan(-0.1)); - assert(true, n.greaterThanOrEqualTo(-1)); - assert(true, n.lessThan(-0.01)); - assert(false, n.lessThanOrEqualTo(-1)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber(Infinity); - assert(false, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(true, n.eq('Infinity')); - assert(true, n.eq(1/0)); - assert(true, n.gt('9e999')); - assert(true, n.gte(Infinity)); - assert(false, n.lt(Infinity)); - assert(true, n.lte(Infinity)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('-Infinity'); - assert(false, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(false, n.isZ()); - assert(false, n.equals(Infinity)); - assert(true, n.equals(-1/0)); - assert(false, n.greaterThan(-Infinity)); - assert(true, n.greaterThanOrEqualTo('-Infinity', 8)); - assert(true, n.lessThan(0)); - assert(true, n.lessThanOrEqualTo(Infinity)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('0.0000000'); - assert(true, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(true, n.isZero()); - assert(true, n.eq(-0)); - assert(true, n.gt(-0.000001)); - assert(false, n.gte(0.1)); - assert(true, n.lt(0.0001)); - assert(true, n.lte(-0)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber(-0); - assert(true, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(true, n.isZ()); - assert(true, n.equals('0.000')); - assert(true, n.greaterThan(-1)); - assert(false, n.greaterThanOrEqualTo(0.1)); - assert(false, n.lessThan(0)); - assert(false, n.lessThan(0, 36)); - assert(true, n.lessThan(0.1)); - assert(true, n.lessThanOrEqualTo(0)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('NaN'); - assert(false, n.isFinite()); - assert(true, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(false, n.eq(NaN)); - assert(false, n.eq(Infinity)); - assert(false, n.gt(0)); - assert(false, n.gte(0)); - assert(false, n.lt(1)); - assert(false, n.lte(-0)); - assert(false, n.lte(-1)); - assert(n.toString(), n.valueOf()); - - BigNumber.config({ ERRORS : false }); - - n = new BigNumber('hiya'); - assert(false, n.isFinite()); - assert(true, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(false, n.equals(0)); - assert(false, n.greaterThan(0)); - assert(false, n.greaterThanOrEqualTo(-Infinity)); - assert(false, n.lessThan(Infinity)); - assert(false, n.lessThanOrEqualTo(0)); - assert(n.toString(), n.valueOf()); - - BigNumber.config({ ERRORS : true }); - - n = new BigNumber('-1.234e+2'); - assert(true, n.isF()); - assert(false, n.isNaN()); - assert(true, n.isNeg()); - assert(false, n.isZ()); - assert(true, n.eq(-123.4, 10)); - assert(true, n.gt('-ff', 16)); - assert(true, n.gte('-1.234e+3')); - assert(true, n.lt(-123.39999)); - assert(true, n.lte('-123.4e+0')); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('5e-200'); - assert(true, n.isFinite()); - assert(false, n.isNaN()); - assert(false, n.isNegative()); - assert(false, n.isZero()); - assert(true, n.equals(5e-200)); - assert(true, n.greaterThan(5e-201)); - assert(false, n.greaterThanOrEqualTo(1)); - assert(true, n.lessThan(6e-200)); - assert(true, n.lessThanOrEqualTo(5.1e-200)); - assert(n.toString(), n.valueOf()); - - n = new BigNumber('1'); - assert(true, n.equals(n)); - assert(true, n.equals(n.toS())); - assert(true, n.equals(n.toString())); - assert(true, n.equals(n.valueOf())); - assert(true, n.equals(n.toFixed())); - assert(true, n.equals(1)); - assert(true, n.equals('1e+0')); - assert(false, n.equals(-1)); - assert(false, n.equals(0.1)); - - BigNumber.config({ ERRORS : false }); - - assert(false, new BigNumber(NaN).equals(0)); - assert(false, new BigNumber(null).equals(0)); - assert(false, new BigNumber(undefined).equals(0)); - assert(false, new BigNumber(Infinity).equals(0)); - assert(false, new BigNumber([]).equals(0)); - assert(false, new BigNumber([]).equals(0)); - assert(false, new BigNumber({}).equals(0)); - assert(false, new BigNumber('').equals(0)); - assert(false, new BigNumber(' ').equals(0)); - assert(false, new BigNumber('\t').equals(0)); - assert(false, new BigNumber('gerg').equals(0)); - assert(false, new BigNumber(new Date).equals(0)); - assert(false, new BigNumber(new RegExp).equals(0)); - assert(false, new BigNumber(0.1).equals(0)); - assert(false, new BigNumber(1e9 + 1).equals(1e9)); - assert(false, new BigNumber(1e9 - 1).equals(1e9)); - assert(true, new BigNumber(1e9 + 1).equals(1e9 + 1)); - assert(true, new BigNumber(1).equals(1)); - assert(false, new BigNumber(1).equals(-1)); - assert(false, new BigNumber(NaN).equals('efffe')); - - assert(false, new BigNumber('b').greaterThan('a')); - assert(false, new BigNumber('a').lessThan('b', 10)); - assert(true, new BigNumber('a', 16).lessThanOrEqualTo('ff', 16)); - assert(true, new BigNumber('b', 16).greaterThanOrEqualTo(9, 16)); - - BigNumber.config({ ERRORS : true }); - - assert(true, new BigNumber(10).greaterThan(10, 2)); - assert(true, new BigNumber(10).lessThan(10, 36)); - assert(false, new BigNumber(NaN).lessThan(NaN)); - assert(false, new BigNumber(Infinity).lessThan(-Infinity)); - assert(false, new BigNumber(Infinity).lessThan(Infinity)); - assert(true, new BigNumber(Infinity, 10).lessThanOrEqualTo(Infinity, 2)); - assert(false, new BigNumber(NaN).greaterThanOrEqualTo(NaN)); - assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(Infinity)); - assert(true, new BigNumber(Infinity).greaterThanOrEqualTo(-Infinity)); - assert(false, new BigNumber(NaN).greaterThanOrEqualTo(-Infinity)); - assert(true, new BigNumber(-Infinity).greaterThanOrEqualTo(-Infinity)); - - assert(false, new BigNumber(2, 10).greaterThan(10, 2)); - assert(false, new BigNumber(10, 2).lessThan(2, 10)); - assert(true, new BigNumber(255).lessThanOrEqualTo('ff', 16)); - assert(true, new BigNumber('a', 16).greaterThanOrEqualTo(9, 16)); - assert(false, new BigNumber(0).lessThanOrEqualTo('NaN')); - assert(false, new BigNumber(0).greaterThanOrEqualTo(NaN)); - assert(false, new BigNumber(NaN, 2).lessThanOrEqualTo('NaN', 36)); - assert(false, new BigNumber(NaN, 36).greaterThanOrEqualTo(NaN, 2)); - assert(false, new BigNumber(0).lessThanOrEqualTo(-Infinity)); - assert(true, new BigNumber(0).greaterThanOrEqualTo(-Infinity)); - assert(true, new BigNumber(0).lessThanOrEqualTo('Infinity', 36)); - assert(false, new BigNumber(0).greaterThanOrEqualTo('Infinity', 36)); - assert(false, new BigNumber(10).lessThanOrEqualTo(20, 4)); - assert(true, new BigNumber(10).lessThanOrEqualTo(20, 5)); - assert(false, new BigNumber(10).greaterThanOrEqualTo(20, 6)); - - assert(false, new BigNumber(1.23001e-2).lessThan(1.23e-2)); - assert(true, new BigNumber(1.23e-2).lt(1.23001e-2)); - assert(false, new BigNumber(1e-2).lessThan(9.999999e-3)); - assert(true, new BigNumber(9.999999e-3).lt(1e-2)); - - assert(false, new BigNumber(1.23001e+2).lessThan(1.23e+2)); - assert(true, new BigNumber(1.23e+2).lt(1.23001e+2)); - assert(true, new BigNumber(9.999999e+2).lessThan(1e+3)); - assert(false, new BigNumber(1e+3).lt(9.9999999e+2)); - - assert(false, new BigNumber(1.23001e-2).lessThanOrEqualTo(1.23e-2)); - assert(true, new BigNumber(1.23e-2).lte(1.23001e-2)); - assert(false, new BigNumber(1e-2).lessThanOrEqualTo(9.999999e-3)); - assert(true, new BigNumber(9.999999e-3).lte(1e-2)); - - assert(false, new BigNumber(1.23001e+2).lessThanOrEqualTo(1.23e+2)); - assert(true, new BigNumber(1.23e+2).lte(1.23001e+2)); - assert(true, new BigNumber(9.999999e+2).lessThanOrEqualTo(1e+3)); - assert(false, new BigNumber(1e+3).lte(9.9999999e+2)); - - assert(true, new BigNumber(1.23001e-2).greaterThan(1.23e-2)); - assert(false, new BigNumber(1.23e-2).gt(1.23001e-2)); - assert(true, new BigNumber(1e-2).greaterThan(9.999999e-3)); - assert(false, new BigNumber(9.999999e-3).gt(1e-2)); - - assert(true, new BigNumber(1.23001e+2).greaterThan(1.23e+2)); - assert(false, new BigNumber(1.23e+2).gt(1.23001e+2)); - assert(false, new BigNumber(9.999999e+2).greaterThan(1e+3)); - assert(true, new BigNumber(1e+3).gt(9.9999999e+2)); - - assert(true, new BigNumber(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); - assert(false, new BigNumber(1.23e-2).gte(1.23001e-2)); - assert(true, new BigNumber(1e-2).greaterThanOrEqualTo(9.999999e-3)); - assert(false, new BigNumber(9.999999e-3).gte(1e-2)); - - assert(true, new BigNumber(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); - assert(false, new BigNumber(1.23e+2).gte(1.23001e+2)); - assert(false, new BigNumber(9.999999e+2).greaterThanOrEqualTo(1e+3)); - assert(true, new BigNumber(1e+3).gte(9.9999999e+2)); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js deleted file mode 100644 index 6738f0d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/round.js +++ /dev/null @@ -1,2380 +0,0 @@ -var count = (function round(BigNumber) { - var start = +new Date(), - log, - error, - u, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, value, decimalPlaces, roundingMode) { - assert(String(expected), new BigNumber(String(value)).round(decimalPlaces, roundingMode).toString()); - } - - log('\n Testing round...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 7, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - - T('0', '0.000084888060736883027314038572334303632'); - - T('-79998', '-79998'); - T('30845717889906383053', '30845717889906383052.56472015469740823'); - T('-446807', '-446806.9227761147047517'); - T('76', '76.0719'); - T('0', '-0.00686876124450101884528'); - T('71710176', '71710176'); - T('79', '79'); - T('-20187079148819697784', '-20187079148819697784'); - T('6309793381', '6309793381'); - T('76162410487880977', '76162410487880976.81307140573688335764284'); - T('7491318926', '7491318926.312122759153805942088431'); - T('74909422733607112719', '74909422733607112719.13179009875'); - T('559', '559.2110851431205'); - T('-20306363016185', '-20306363016184.760368254019194925'); - T('-6717914940586242526', '-6717914940586242525.574537480672174624149'); - T('-5', '-5'); - T('8', '8.0606265529'); - T('24701408591129838', '24701408591129838.22163'); - T('3806471925924246437202', '3806471925924246437201.71339576511057957'); - T('-85883753924431578007564277', '-85883753924431578007564277.399776'); - T('826068555927524695', '826068555927524695'); - T('0', '0.000058441452091833136219167587256'); - T('47353089', '47353089.2019161006899898'); - T('-372', '-372.03039745'); - T('3103', '3103'); - T('5620', '5620.48101861977'); - T('9105547112', '9105547112.1319443692'); - T('7472595749413646784408602', '7472595749413646784408602.1095168949'); - T('335816732795', '335816732794.51601276961965281205689254'); - T('-7911332887831436027', '-7911332887831436027.40569259650318'); - T('-52182567851715', '-52182567851715'); - T('439059239410', '439059239409.55703238112278'); - T('43465109466157505', '43465109466157505'); - T('5390894521', '5390894520.8738091063016'); - T('-583532700278695860335147', '-583532700278695860335146.6674153779'); - T('485669', '485669'); - T('3', '3.284095344472285718254591781467536534546'); - T('0', '-0.4210910538061556801483189'); - T('3134', '3133.654494231705614'); - T('8136642604255255554627376', '8136642604255255554627375.87998'); - T('-54301', '-54301.2807534165371279131810401278'); - T('27796900', '27796900.0685101'); - T('-36', '-36'); - T('-7930085746684', '-7930085746684.2599205'); - T('736988809325', '736988809325'); - T('-181606874378737533', '-181606874378737532.738571718716743'); - T('577064478018279', '577064478018279'); - T('-862419646909', '-862419646909'); - T('3269018763090', '3269018763089.5711045989917554'); - - // ---------------------------------------------------------------- v8 start - - T(0, 0); - T(0, -0); - T(Infinity, Infinity); - T(-Infinity, -Infinity); - T(NaN, NaN); - - T(1, 0.5); - T(1, 0.7); - T(1, 1); - T(1, 1.1); - T(1, 1.49999); - T(0, -0.5); // - T(-1, -0.5000000000000001); - T(-1, -0.7); - T(-1, -1); - T(-1, -1.1); - T(-1, -1.49999); - T(-1, -1.5); // - - T(9007199254740990, 9007199254740990); - T(9007199254740991, 9007199254740991); - T(-9007199254740990, -9007199254740990); - T(-9007199254740991, -9007199254740991); - - BigNumber.config({EXPONENTIAL_AT : 100}); - - T(Number.MAX_VALUE, Number.MAX_VALUE); - T(-Number.MAX_VALUE, -Number.MAX_VALUE); - - T(536870911, 536870910.5); - T(536870911, 536870911); - T(536870911, 536870911.4); - T(536870912, 536870911.5); - T(536870912, 536870912); - T(536870912, 536870912.4); - T(536870913, 536870912.5); - T(536870913, 536870913); - T(536870913, 536870913.4); - T(1073741823, 1073741822.5); - T(1073741823, 1073741823); - T(1073741823, 1073741823.4); - T(1073741824, 1073741823.5); - T(1073741824, 1073741824); - T(1073741824, 1073741824.4); - T(1073741825, 1073741824.5); - T(2147483647, 2147483646.5); - T(2147483647, 2147483647); - T(2147483647, 2147483647.4); - T(2147483648, 2147483647.5); - T(2147483648, 2147483648); - T(2147483648, 2147483648.4); - T(2147483649, 2147483648.5); - - T(0, 0.4); - T(-0, -0.4); - T(-0, -0.5); // - T(1, 0.6); - T(-1, -0.6); - T(2, 1.5); - T(2, 1.6); - T(-2, -1.6); - T(8640000000000000, 8640000000000000); - T(8640000000000001, 8640000000000001); - T(8640000000000002, 8640000000000002); - T(9007199254740990, 9007199254740990); - T(9007199254740991, 9007199254740991); - T(1.7976931348623157e+308, 1.7976931348623157e+308); - T(-8640000000000000, -8640000000000000); - T(-8640000000000001, -8640000000000001); - T(-8640000000000002, -8640000000000002); - T(-9007199254740990, -9007199254740990); - T(-9007199254740991, -9007199254740991); - T(-1.7976931348623157e+308, -1.7976931348623157e+308); - T(Infinity, Infinity); - T(-Infinity, -Infinity); - - var ulp = Math.pow(2, -1022 - 52); - var max_denormal = (Math.pow(2, 52) - 1) * ulp; - var min_normal = Math.pow(2, -1022); - var max_fraction = Math.pow(2, 52) - 0.5; - var min_nonfraction = Math.pow(2, 52); - var max_non_infinite = Number.MAX_VALUE; - - var max_smi31 = Math.pow(2,30) - 1; - var min_smi31 = -Math.pow(2,30); - var max_smi32 = Math.pow(2,31) - 1; - var min_smi32 = -Math.pow(2,31); - - T(0, ulp); - T(0, max_denormal); - T(0, min_normal); - T(0, 0.49999999999999994); - T(1, 0.5); - T(Math.pow(2,52), max_fraction); - T(min_nonfraction, min_nonfraction); - T(max_non_infinite, max_non_infinite); - - T(max_smi31, max_smi31 - 0.5); - T(max_smi31 + 1, max_smi31 + 0.5); - T(max_smi32, max_smi32 - 0.5); - T(max_smi32 + 1, max_smi32 + 0.5); - - T(-0, -ulp); - T(-0, -max_denormal); - T(-0, -min_normal); - T(-0, -0.49999999999999994); - T(-Math.pow(2,52)+1, -max_fraction); // - T(-min_nonfraction, -min_nonfraction); - T(-max_non_infinite, -max_non_infinite); - - T(min_smi31, min_smi31 - 0.5); // - T(min_smi31 + 1, min_smi31 + 0.5); // - T(min_smi32, min_smi32 - 0.5); // - T(min_smi32 + 1, min_smi32 + 0.5); // - - // ------------------------------------------------------------------ v8 end - - BigNumber.config({EXPONENTIAL_AT : 1E9}); - - T('0', '0', 0); - T('0', '-0', 1); - T('0', '-0', 1, 0); - T('0', '-0', 1, 3); - T('0', '-0', 1, 6); - T('0', '0', 10); - T('0', '-0', 20); - - // Tests generated using java BigDecimal and random values. - T('0.0039', '0.0039', 4, 3); - T('-41620.65299', '-41620.65299', 6, 5); - T('0.0011117', '0.0011117', 7, 0); - T('938116', '938116', 6, 5); - T('-7187', '-7187', 4, 4); - T('-2.4263', '-2.426346', 4, 6); - T('-0.537', '-0.5374743', 3, 5); - T('652506', '652506', 3, 6); - T('-178587', '-178587', 3, 2); - T('4093', '4093', 3, 0); - T('44', '44', 1, 2); - T('-0.0496', '-0.049635', 4, 4); - T('-1', '-0.05', 0, 0); - T('520216039', '520216039', 7, 1); - T('-2932289', '-2932289', 8, 3); - T('53937.3', '53937.399', 1, 1); - T('63101619', '63101619', 5, 0); - T('-0.00207', '-0.00207', 6, 0); - T('-0.032', '-0.03169086', 3, 0); - T('-755', '-755', 5, 3); - T('-3583', '-3583', 5, 1); - T('-6.616', '-6.615375', 3, 0); - T('7528739', '7528739', 8, 0); - T('-0.9028', '-0.9028782', 4, 2); - T('-8.78762908', '-8.78762908', 8, 2); - T('-0.000262', '-0.0002613', 6, 0); - T('-888980.3', '-888980.3', 1, 6); - T('0.00009075', '0.00009075', 8, 0); - T('-4.42', '-4.4195', 2, 0); - T('-0.336889', '-0.336888682', 6, 6); - T('43759', '43759', 6, 4); - T('0.0000804', '0.0000804', 8, 6); - T('-4', '-4', 0, 2); - T('-3', '-3.614204', 0, 2); - T('336379823', '336379823', 4, 1); - T('310614', '310614', 7, 0); - T('-375811635', '-375811635', 8, 3); - T('-5446775', '-5446775', 7, 4); - T('59.7954405', '59.7954405', 7, 0); - T('47086', '47085.84', 0, 4); - T('-2564', '-2564', 3, 4); - T('1.4069997', '1.40699967', 7, 2); - T('-0.4', '-0.42528874', 1, 6); - T('-0.00005573', '-0.000055732', 8, 1); - T('-0.00003014', '-0.000030137', 8, 6); - T('57', '57', 3, 6); - T('365474.9164', '365474.9164', 4, 5); - T('-7', '-7', 0, 4); - T('0.843206', '0.84320562', 6, 5); - T('-62734', '-62734', 5, 3); - T('-51246', '-51246', 7, 2); - T('0.0003', '0.000332', 4, 5); - T('-609', '-609', 2, 0); - T('-0.00004595', '-0.00004595', 8, 1); - T('-22243', '-22243', 0, 1); - T('54693', '54693', 5, 0); - T('5', '5', 1, 6); - T('2', '2', 2, 6); - T('3808', '3808', 0, 4); - T('2616', '2616', 0, 5); - T('-2477', '-2477', 3, 2); - T('0.00009', '0.00008892', 5, 4); - T('8.8953', '8.8953', 5, 5); - T('0.07', '0.06922', 2, 4); - T('0.08', '0.08', 3, 2); - T('-773.0965536', '-773.0965536', 8, 2); - T('-326', '-326', 2, 1); - T('-0.356', '-0.3564473', 3, 6); - T('-312283993', '-312283992.7', 0, 3); - T('-2.3995861', '-2.39958606', 7, 3); - T('-0.0449', '-0.0449', 4, 3); - T('0', '-0.003', 0, 4); - T('85942', '85942', 2, 5); - T('6738', '6738.1977', 0, 3); - T('-0.003', '-0.002995', 5, 3); - T('-572936', '-572936', 3, 6); - T('684.2426407', '684.2426407', 8, 6); - T('0', '-0.0007851', 1, 6); - T('0', '-0.002', 0, 5); - T('85.05', '85.05', 3, 3); - T('1.66', '1.66', 3, 3); - T('-17.14', '-17.14', 2, 0); - T('80182', '80182', 6, 5); - T('-0.00064', '-0.00063953', 6, 6); - T('-3.76703298', '-3.767032983', 8, 4); - T('-0.000378', '-0.00037877', 6, 2); - T('675', '675.76294', 0, 3); - T('0.0003', '0.00023235', 4, 0); - T('-0.0155175', '-0.0155175', 7, 0); - T('-645406477.5', '-645406477.5', 2, 1); - T('-0.89603', '-0.8960278', 5, 6); - T('866034', '866034', 7, 3); - T('484.002', '484.002', 4, 6); - T('420', '419.83', 0, 6); - T('4611867124', '4611867124', 4, 4); - T('0.0080252', '0.0080252', 8, 0); - T('0', '-0.02829833', 1, 4); - T('-8', '-8', 0, 4); - T('-0.0073554', '-0.00735541', 7, 4); - T('28', '28', 3, 5); - T('-3903', '-3903', 6, 0); - T('228', '228', 3, 4); - T('0.88', '0.883', 2, 5); - T('-0.01', '-0.009', 2, 3); - T('7796.6', '7796.6', 2, 2); - T('0', '0.005', 0, 6); - T('805.25', '805.2467', 2, 0); - T('-85023', '-85023', 4, 3); - T('0', '-0.008097491', 0, 2); - T('-0.026', '-0.0259', 3, 4); - T('-0.00801', '-0.008007359', 5, 4); - T('30745', '30745', 6, 5); - T('-81', '-81', 4, 6); - T('-386', '-386', 4, 2); - T('-2876', '-2876', 5, 6); - T('0', '0.00002329', 4, 5); - T('-62453828', '-62453828', 7, 6); - T('0.317', '0.317', 3, 3); - T('-706', '-706', 0, 1); - T('36.911', '36.9109527', 4, 4); - T('5040908', '5040908', 1, 0); - T('-0.08', '-0.08', 2, 4); - T('-0.352847', '-0.352847085', 6, 6); - T('0.001', '0.00006', 3, 2); - T('-0.4389', '-0.438905', 4, 1); - T('0.00390964', '0.00390964', 8, 2); - T('-35105.1', '-35105.1788', 1, 2); - T('-8858843.829', '-8858843.829', 3, 1); - T('-5946.90816', '-5946.90816', 5, 3); - T('608475', '608475', 6, 6); - T('3.5873016', '3.58730156', 7, 5); - T('-7988864', '-7988864', 8, 0); - T('-6056.29', '-6056.29', 3, 0); - T('-4481788', '-4481788', 3, 5); - T('-1.6', '-1.5678', 1, 6); - T('-351561391', '-351561391', 5, 5); - T('3104642', '3104642', 8, 2); - T('-7.30071897', '-7.30071897', 8, 2); - T('-0.0256033', '-0.02560321', 7, 3); - T('-0.5', '-0.5', 1, 0); - T('-7.173', '-7.173', 4, 6); - T('0.1', '0.05', 1, 2); - T('0.0006736', '0.0006736', 7, 3); - T('-54.37621076', '-54.37621076', 8, 4); - T('4823.725785', '4823.725785', 7, 4); - T('0', '-0.000084', 1, 4); - T('-7491', '-7491', 4, 6); - T('-226', '-226.80088', 0, 2); - T('-0.8', '-0.8109', 1, 6); - T('-0.0548897', '-0.054889654', 7, 0); - T('-91.1579356', '-91.15793558', 7, 6); - T('47988267', '47988267', 1, 3); - T('91', '91', 3, 5); - T('-5.0091', '-5.009088', 4, 0); - T('-1382.949', '-1382.949', 4, 0); - T('-697', '-697', 2, 5); - T('-5376196', '-5376196', 1, 6); - T('-0.6', '-0.6', 1, 6); - T('-887591', '-887591', 8, 2); - T('0.02000666', '0.020006669', 8, 3); - T('-39983.5195', '-39983.5195', 5, 6); - T('-0.723', '-0.722771', 3, 4); - T('-0.0007', '-0.0007', 5, 5); - T('-8637388', '-8637388', 4, 1); - T('-775918', '-775918', 8, 0); - T('3281682.74', '3281682.74', 2, 3); - T('193', '193', 4, 6); - T('0', '-0.369577856', 0, 5); - T('-0.34504', '-0.34504336', 5, 2); - T('-22', '-22', 0, 5); - T('-548324', '-548324', 4, 2); - T('-28', '-28', 3, 5); - T('-6.70773', '-6.707727', 5, 0); - T('11.062', '11.06169236', 3, 5); - T('0.00052', '0.00051869', 5, 6); - T('-0.0421539', '-0.0421539', 7, 3); - T('-0.248552', '-0.248552', 6, 4); - T('-864296', '-864296', 8, 0); - T('0.8599583', '0.8599583', 7, 6); - T('-49755.36744', '-49755.36744', 5, 5); - T('-605.095664', '-605.095664', 6, 3); - T('-103637', '-103637', 5, 2); - T('868619', '868619', 3, 4); - T('-0.0003926', '-0.0003926', 7, 4); - T('1', '0.9', 0, 0); - T('4.3567', '4.35670557', 4, 4); - T('-238', '-238', 3, 1); - T('1271.594054', '1271.594054', 7, 4); - T('-4.1787893', '-4.178789328', 7, 1); - T('372', '372', 3, 6); - T('-9.1645', '-9.1645354', 4, 6); - T('83.241462', '83.241462', 6, 6); - T('-0.00001262', '-0.00001262', 8, 6); - T('63.4147', '63.414735', 4, 3); - T('-2', '-2', 3, 5); - T('538601216', '538601216', 2, 3); - T('2138522', '2138522', 6, 1); - T('301527.309', '301527.309', 3, 5); - T('-7.568', '-7.5683', 3, 5); - T('-1969563', '-1969563', 8, 1); - - T('-249815496353142605063083339706423770452529255711064841247978.1649', '-249815496353142605063083339706423770452529255711064841247978.16482575714251625720191747855256', 4, 3); - T('-8757939868931375459275247990933877309', '-8757939868931375459275247990933877309', 37, 5); - T('556228688742576287254121716253667920283844645854057755303259369', '556228688742576287254121716253667920283844645854057755303259369', 25, 3); - T('0', '0.00000000000000000000000000000000000000000000000029171651270270187897342247995644546232788426', 35, 3); - T('-0.0000058979376152458865088785307705', '-0.000005897937615245886508878530770431196412050562641578155968', 34, 0); - T('-0.00000000000000847145658', '-0.00000000000000847145657888758222743159237', 23, 3); - T('-6049825281564367887763596943301191584240212075976455', '-6049825281564367887763596943301191584240212075976455', 53, 0); - T('-64680661822322715719008107701612.741312367131318202976964422', '-64680661822322715719008107701612.74131236713131820297696442216284615573809', 27, 4); - T('0', '-0.0000000000000000000000000000000000048810387700772580768508931440796984745771392', 29, 2); - T('232730083859746141163.7653402888578932348762190816502', '232730083859746141163.76534028885789323487621908165018267559238917447610653431235463768839108', 31, 5); - T('-499311204526771278437755030091270601.471802335', '-499311204526771278437755030091270601.47180233568698638607829334564', 9, 2); - T('-4793558721695298336734196955569628362250.1', '-4793558721695298336734196955569628362250.107513868618556605590137359591047843592593', 1, 6); - T('0.0000000000000000000000000000000000000622', '0.000000000000000000000000000000000000062176566496', 40, 5); - T('-393323198834362857317921391989917230.1575124832953752419421908305674188204', '-393323198834362857317921391989917230.15751248329537524194219083056741882044261538788798', 37, 5); - T('0', '-0.000000000000000169092170076859363', 3, 5); - T('0.00085774283834918184933525579624189945402764', '0.0008577428383491818493352557962418994540276420616048890965876345513', 44, 4); - T('-127706837731025454069338274697755478243.226555768723254468591', '-127706837731025454069338274697755478243.226555768723254468591', 21, 4); - T('0.0000000000000000000000000000002', '0.00000000000000000000000000000024', 31, 6); - T('0', '0.0000000000000000006', 0, 4); - T('0.000000000000000000000007810237984104', '0.00000000000000000000000781023798410401506609033130277607174', 36, 6); - T('-0.0000000000000000000000000000000000000000000003', '-0.00000000000000000000000000000000000000000000030032464295099044566372323', 46, 1); - T('-685966223751248103958158215191994961086468451812432', '-685966223751248103958158215191994961086468451812432', 15, 6); - T('-342139733926317660019.326340161146875487297', '-342139733926317660019.326340161146875487297346019153178', 21, 6); - T('0', '0.000000000000000000000000000000000000000000901836202', 15, 4); - T('54703159147681578.1514852895273075959730711237955491690133829927977209580124', '54703159147681578.1514852895273075959730711237955491690133829927977209580124', 59, 0); - T('-460718430436988680547605508933197195738591668941440213118174196', '-460718430436988680547605508933197195738591668941440213118174196', 16, 6); - T('70597943458486911871858911963104830835210711517857117431432573585719054629372', '70597943458486911871858911963104830835210711517857117431432573585719054629372', 17, 3); - T('0', '0.0000000000000000000000005', 17, 1); - T('612277653819449429818059108521923195679275819340316389136081740197236376194', '612277653819449429818059108521923195679275819340316389136081740197236376194', 24, 6); - T('0', '0.000004077002116450599035175933786605407147118579202271612670066923117668943811493201471493894', 0, 3); - T('0', '0.0000000000000000454362126792715044166595091', 4, 5); - T('-0.00000000000000000000000247815', '-0.00000000000000000000000247815', 29, 2); - T('-0.000000000000000000000000000000039578053693', '-0.000000000000000000000000000000039578053693375996216932325600263217353654', 42, 4); - T('-232816283401672701377791127757043050155711815150567236808118951', '-232816283401672701377791127757043050155711815150567236808118951', 5, 2); - T('-29071348593675752783607764808066026', '-29071348593675752783607764808066026', 0, 3); - T('0', '-0.0000000000000000000000000000001261801374206123908708248209346534624420321535319795165638569', 3, 5); - T('-400979013779505784551704647545324555644743917317817725', '-400979013779505784551704647545324555644743917317817725', 51, 0); - T('-707984518604562445981560648691697348187535181109991331112833004096934116229906958', '-707984518604562445981560648691697348187535181109991331112833004096934116229906958', 33, 3); - T('-0.00000000000000000000054943542078511748325889425', '-0.00000000000000000000054943542078511748325889425029425118', 48, 2); - T('0.000000000000000000000000000001', '0.0000000000000000000000000000000004', 30, 2); - T('8361324754302.257', '8361324754302.25608823898722021345099998761427662952277448263515002938433228636937277798222125', 3, 2); - T('47845474280015515238795364952786480611238289992139357357828.2393536', '47845474280015515238795364952786480611238289992139357357828.23935359', 7, 2); - T('2549907485257905040787802731022172814.032473410309278713663931353982863019132463', '2549907485257905040787802731022172814.03247341030927871366393135398286301913246263649610180999011', 42, 4); - T('7245563391265598645357861460253613932139592382610560614764364520097782949512752649', '7245563391265598645357861460253613932139592382610560614764364520097782949512752649', 40, 1); - T('80140230840302995211398777354070268652682793260175436489292', '80140230840302995211398777354070268652682793260175436489292', 35, 5); - T('-6237457908203764779831412120415113057397781437576879126960196359736451276', '-6237457908203764779831412120415113057397781437576879126960196359736451276', 46, 3); - T('-64022435787355811014521281511793708435812347405139910972682589', '-64022435787355811014521281511793708435812347405139910972682589', 59, 4); - T('23773726397.29160222442891928943538179152516815326677387048397317891529', '23773726397.291602224428919289435381791525168153266773870483973178915287792', 59, 2); - T('-0.0000000000000000009191736362201691567821986127083610325635', '-0.00000000000000000091917363622016915678219861270836103256344707473557037101545788367584278310776658', 58, 3); - T('576493832674677623548573635478304255.82263895978273', '576493832674677623548573635478304255.82263895978273', 14, 5); - T('0.00000000001', '0.00000000000000000000000000000000000000000000000007822968340296738406', 11, 2); - T('0', '-0.00000000000000000000000000000000000000000000000803017739', 16, 2); - T('-76782672919180281245123823777032511965124724736456274885479622075418722', '-76782672919180281245123823777032511965124724736456274885479622075418722', 48, 4); - T('4455851923984827076883518360355220330356', '4455851923984827076883518360355220330356', 36, 6); - T('6861599706553109843427643365400432566541688718985576240352998201999416183743', '6861599706553109843427643365400432566541688718985576240352998201999416183743', 2, 2); - T('0', '0.0000083135366316053183734543904737952651532784316140061929170739473518406297062533554026617147464', 0, 1); - T('72361127388902796012114362477322144735533135802605580980837229637633107.0925818254603', '72361127388902796012114362477322144735533135802605580980837229637633107.09258182546029609579105130429', 13, 5); - T('-273219046129778472266.058485499109338596573075', '-273219046129778472266.0584854991093385965730749815531346353045049027336176088162559', 24, 4); - T('-0.00000000000007280978660680040221854732703892674800762227646', '-0.00000000000007280978660680040221854732703892674800762227646226836240552990665555', 59, 5); - T('6276464097096605785329824864148.527049815380996985914', '6276464097096605785329824864148.52704981538099698591393138250952524233217779', 21, 0); - T('-597198', '-597197.628834953506966767991553710700934413500204012426446876175175114500037146677042239668', 0, 0); - T('-433359038877962603713455049783', '-433359038877962603713455049783', 30, 0); - T('0.0000000000000000000000000000000006381735336173415547900207', '0.0000000000000000000000000000000006381735336173415547900206847223271181528556195', 58, 0); - T('807050820.676699481791051456', '807050820.676699481791051455096629111775329549493444751897213743866128850061622892', 18, 2); - T('0.0000000000000000000000000000489752745584111598026871408099', '0.000000000000000000000000000048975274558411159802687140809907', 58, 3); - T('0', '0.0000000000000000000000000000000000000000000226067497099004331941912856', 36, 6); - T('39094507220356523575213839820749561678857032020620050894656716293.67495126324', '39094507220356523575213839820749561678857032020620050894656716293.67495126323710280607325675762434', 11, 2); - T('-22678769.817248435493696742588538', '-22678769.817248435493696742588538331241538369550386799148219117165563326051964281', 24, 4); - T('5767307789536064608781837241295188919', '5767307789536064608781837241295188919', 30, 0); - T('168139421336703751454723348941581.0989620502676347173183006762310303463068390391675336175', '168139421336703751454723348941581.0989620502676347173183006762310303463068390391675336175', 55, 6); - T('-88504154823150878334701258558002569539793415193610842759120001088201133334307983', '-88504154823150878334701258558002569539793415193610842759120001088201133334307983', 44, 4); - T('-329655464734888739743767364510089523323', '-329655464734888739743767364510089523323', 25, 1); - T('0.00000000000000000000084501920385200277918', '0.000000000000000000000845019203852002779189', 41, 1); - T('-5840123488663376216608124416421102623453621285401805153644515702191', '-5840123488663376216608124416421102623453621285401805153644515702191', 59, 3); - T('-0.00000062136', '-0.00000062135994705765807424168688040116009865960794', 13, 3); - T('-0.000000000000000000001', '-0.00000000000000000000000000000000000000001462340018509', 21, 0); - T('0.006', '0.0059936079684973012978514720463815026319867172', 4, 2); - T('526400924922583880463185416850358172941032433541198785132036360013561525242705246671523133061757', '526400924922583880463185416850358172941032433541198785132036360013561525242705246671523133061757', 38, 6); - T('-882873192309626516849737955750920016208815071464396145314', '-882873192309626516849737955750920016208815071464396145314', 46, 6); - T('-6758735221049379519.2572393', '-6758735221049379519.25723934716782621573177906', 7, 2); - T('-0.000000790786371520517683432954223230156393', '-0.00000079078637152051768343295422323015639290504929', 42, 4); - T('-0.00000000000000000000000000000000000091966', '-0.0000000000000000000000000000000000009196610338039484256720548095', 41, 6); - T('-0.00000000000541933780252974657673566396725809671507', '-0.0000000000054193378025297465767356639672580967150744942399', 50, 4); - T('-0.000000000000000000000583479626', '-0.000000000000000000000583479626800396501245049473177007318461587644875162633137088', 30, 2); - T('11604528953141243475', '11604528953141243475', 13, 3); - T('566807769866890.02801522720838416179840190775794257854696482', '566807769866890.02801522720838416179840190775794257854696482590456963092114076898', 44, 3); - T('-35620697798492911.0669248410687861643251268323797667576839159303711022', '-35620697798492911.066924841068786164325126832379766757683915930371102255700535220012496346147093317', 52, 1); - T('-0.0000000000000000000050597138398214172387021051', '-0.000000000000000000005059713839821417238702105087169671933387005', 46, 0); - T('-0.8174627036499993060703761337876311', '-0.81746270364999930607037613378763105641195817852303184573911882', 34, 4); - T('0.0000000000000000000016801618027332596946', '0.000000000000000000001680161802733259694523102897059933026814910108114561982575916856344241', 40, 2); - T('-0.0005550919624693963627417354876271038367574907', '-0.000555091962469396362741735487627103836757490736793688', 46, 6); - T('0.00000000000001', '0.0000000000000000005989657036', 14, 2); - T('26923162467831521466200388799932149017792464401239965995848900909703513553682', '26923162467831521466200388799932149017792464401239965995848900909703513553682', 59, 0); - T('0.000000000000034716604224301619113605162061332208', '0.0000000000000347166042243016191136051620613322078875442915881933', 48, 5); - T('4554587644116353728395891927482', '4554587644116353728395891927482', 4, 4); - T('83', '83', 1, 4); - T('-0.0000000000000000679512312597136188846870750884127001656543', '-0.0000000000000000679512312597136188846870750884127001656543162955358', 58, 5); - T('-0.000000000000000005843127017405787209162333', '-0.0000000000000000058431270174057872091623337743081992327769648', 42, 2); - T('698142412071442689875148052035405913655358215178078673989', '698142412071442689875148052035405913655358215178078673989', 31, 2); - T('-0.000000000000000000000000001', '-0.0000000000000000000000000000000000000009', 27, 3); - T('0', '0.000000000000000000000000000000000000000000000000086322062431379058693358', 36, 6); - T('-7097679626212584135194693334505819500.76271239784243114877303953752095973790591', '-7097679626212584135194693334505819500.7627123978424311487730395375209597379059174819443305631091738', 41, 1); - T('720941616590530465684319461159925340787620861616050215112729354513077297889437424470222725372.4341', '720941616590530465684319461159925340787620861616050215112729354513077297889437424470222725372.43418', 4, 1); - T('-8565045.0741813', '-8565045.07418120224', 7, 3); - T('7179182230007440380654240229988748528461622212340003478705', '7179182230007440380654240229988748528461622212340003478705', 16, 1); - T('128138852434106311723518159896099183377408757231649238006509175039', '128138852434106311723518159896099183377408757231649238006509175039', 51, 0); - T('0.0000000000000000000000000000000000071444116240971906475', '0.000000000000000000000000000000000007144411624097190647497044019271703768941206', 56, 5); - T('0', '0.00000000000000000000000000000000000000000000021714481944', 43, 6); - T('-0.0000000000000001', '-0.0000000000000000000000000034534834', 16, 0); - T('-0.0000000000000000000008286492885892336366506247591678062602', '-0.00000000000000000000082864928858923363665062475916780626021532507656936043414109352811732', 58, 1); - T('31161421229261423772494491055755169247634601491928', '31161421229261423772494491055755169247634601491928', 51, 3); - T('1748715317929813133410156549170209422179478560908330825848622104018934659066', '1748715317929813133410156549170209422179478560908330825848622104018934659066', 57, 4); - T('-554303811557294466.269761483473739646624314242607077', '-554303811557294466.269761483473739646624314242607077815435340758612837177421989342652', 33, 1); - T('-0.19004485', '-0.19004485473016995992614957080209680408919713640428488619', 8, 1); - T('0.000252525605711892', '0.000252525605711891731866212005527221984514215823140269482997380211714402276122070798053', 18, 6); - T('86245969707619', '86245969707619', 14, 3); - T('-31435925010862195008998682761', '-31435925010862195008998682761', 9, 3); - T('-7376.12482208', '-7376.124822087908447175101', 8, 2); - T('0.000080221434577125714125624728141606555230430450054', '0.0000802214345771257141256247281416065552304304500535613033078792598113626175', 51, 0); - T('-6050582615205191601389958119203059837835097590785064613410822037914417495686026661', '-6050582615205191601389958119203059837835097590785064613410822037914417495686026661', 31, 1); - T('0.00000000000000003455493043277403696896050418463562482', '0.0000000000000000345549304327740369689605041846356248273019036250593274409786087865531980510674', 53, 3); - T('-20967.65067808575', '-20967.6506780857520813447701235001803657407937', 11, 6); - T('568254966593770.553753276551449605949', '568254966593770.553753276551449605948238816764309803642928261672349658172008375162162314878680613', 21, 0); - T('-451.149170475956331479335', '-451.1491704759563314793340102771090380475440750267088321862964226523091325726805634622304958123379', 21, 3); - T('-0.00000000000000000000000089587927281631480799', '-0.00000000000000000000000089587927281631480798176250533957436898566513857011780218162097370714526', 44, 0); - T('0.00006', '0.00005989898942742447311513559', 6, 2); - T('0.00000000000000000000000000000000000084666165975', '0.000000000000000000000000000000000000846661659751645', 47, 6); - T('-274912.8896024699', '-274912.8896024699118787839924993246206752520896053416203239133353705', 10, 1); - T('2884607226068313798651836226110538860137007975185098848', '2884607226068313798651836226110538860137007975185098848', 55, 6); - T('-0.00000000000000000002773912168', '-0.000000000000000000027739121678637743521714908420713523555500095414277237781740952561559672', 29, 3); - T('-2651358523359639', '-2651358523359639', 16, 4); - T('-4813276596516131663456402092.38944176', '-4813276596516131663456402092.3894417517916213734867', 8, 3); - T('-0.000000000000000000000000000000000000112895859', '-0.000000000000000000000000000000000000112895858119340820153717620708673416', 45, 0); - T('-0.0000000000000000021', '-0.0000000000000000020224974226159732231298241899365279396237510862449464734463589', 19, 3); - T('-7589382547973376572325815568183010749314649708', '-7589382547973376572325815568183010749314649708', 33, 5); - T('842229243093860852173.05443961588175098377444082861489172139756969332835', '842229243093860852173.0544396158817509837744408286148917213975696933283408713841831638764', 50, 0); - T('-699708233495.712278374225898965891885496', '-699708233495.71227837422589896589188549642075052667001859282382939797996992686357419809583', 27, 4); - T('-0.00000000071616892037859054', '-0.000000000716168920378590537721800581109521242491374877', 26, 0); - T('3951438403.277181863849692687044689923289027507211228628773736', '3951438403.2771818638496926870446899232890275072112286287737359542096', 51, 2); - T('109559.01297171197941271991562118124015322', '109559.012971711979412719915621181240153223610175595763848035079898263530366', 35, 3); - T('-0.00000000000000000000000000000000000000000000489005761683947', '-0.00000000000000000000000000000000000000000000489005761683946256390055271579820502403', 59, 3); - T('-0.00158', '-0.00158276409341184629828973465939702170102740363504722102864514069935682480434491', 5, 2); - T('-2625562538887919963240549817430379735187837775384', '-2625562538887919963240549817430379735187837775384', 44, 0); - T('0', '0.00000000000000000000002', 9, 1); - T('6744808.28630410992583043657159413157574982400492', '6744808.28630410992583043657159413157574982400491999838773235902794700459508120619939892', 42, 6); - T('0.000000000000000009', '0.000000000000000009', 18, 3); - T('6067881766683695479556751950119377724336039886809300136812181462', '6067881766683695479556751950119377724336039886809300136812181462', 31, 1); - T('0.000000000000000000000000000000000000000077241022793', '0.0000000000000000000000000000000000000000772410227935606591033087412064412570098277', 51, 1); - T('743268323094543466714.5656060177009296968524561226948074051004264', '743268323094543466714.565606017700929696852456122694807405100426400624651576046667459841457817767865', 43, 3); - T('-596135', '-596135', 3, 2); - T('0.07662404229928167815820747802086592943344134084819', '0.0766240422992816781582074780208659294334413408481864862625859275536716954542357278357044523255', 50, 4); - T('-0.000000000000000000000000000885256', '-0.000000000000000000000000000885255222637729340070545710310579917592457286140653', 33, 0); - T('55893020145100569857309952693924435456669213.356281068124371401302229274073839082240544043386519', '55893020145100569857309952693924435456669213.356281068124371401302229274073839082240544043386519', 51, 0); - T('0.000000000044398802543439239843437872656117', '0.000000000044398802543439239843437872656117345711426288269229', 42, 1); - T('0.000000000000000000000000000026311845042475573561274888459', '0.00000000000000000000000000002631184504247557356127488845876295156781061349824020867304', 57, 6); - T('-127546673151161350153045221729711', '-127546673151161350153045221729711', 2, 5); - T('0.0000000000000000000000846081', '0.00000000000000000000008460817346743347251678412215465432867047065857', 28, 3); - T('-51296363216658187515760473402291', '-51296363216658187515760473402291', 27, 4); - T('-8623967090632480689370959269411792112227821530531202541003992985', '-8623967090632480689370959269411792112227821530531202541003992985', 54, 5); - T('-966322003490784535731979767036707880939452169502093813823674817588484', '-966322003490784535731979767036707880939452169502093813823674817588484', 56, 5); - T('-272472379898107893040761485379027824396136886208', '-272472379898107893040761485379027824396136886208', 40, 1); - T('0.000000000000000000007578294653267877535740172858883482', '0.00000000000000000000757829465326787753574017285888348202441720573692830214583542806201', 55, 6); - T('25958781094763030494523126276550672249453141421083859868561356127876297714106602172585', '25958781094763030494523126276550672249453141421083859868561356127876297714106602172585', 29, 5); - T('0.00000000000000000000000000000000000002', '0.000000000000000000000000000000000000015806075051053843417566111132263641553843698646164', 38, 5); - T('-73099329416955017257739991488405608089647281115099586', '-73099329416955017257739991488405608089647281115099586', 21, 6); - T('-88307320.90319141093816288808957670297463', '-88307320.903191410938162888089576702974638474154077235587259266824247410860533478169707304792818', 32, 2); - T('-35236814557361445958969411965214520.30399877405421', '-35236814557361445958969411965214520.303998774054210302477326477', 14, 2); - T('-2908087206403224796868158372851057.39782067611', '-2908087206403224796868158372851057.3978206761117082535006786132666114643644421715709235528929678', 11, 4); - T('-19581413994383784948718328954653', '-19581413994383784948718328954653', 28, 1); - T('0.00000000000000000000000000004', '0.000000000000000000000000000040608230569366379665209245709785291404206510745612419401142658', 29, 3); - T('-0.906238977426875501362745', '-0.9062389774268755013627459831223515271076867650054627805581400941104277662892230888597201', 24, 2); - T('0', '0.000000000000000000000025517761823978244291048210421988594612225022695964910425529', 21, 1); - T('663336.45734367931832199866', '663336.4573436793183219986595282312647796998714487327022132545955984591825466144183', 20, 4); - T('-461221276.52047063868261544207237644195170184', '-461221276.5204706386826154420723764419517018397461911607', 36, 4); - T('92664692270788697481952993240101', '92664692270788697481952993240101', 9, 1); - T('0.00000000000001', '0.0000000000000000417218487798321067688965201563233239322412080713783058725771499175637', 14, 0); - T('-0.00000000000000291161', '-0.0000000000000029116100944057582762735577555', 21, 6); - T('3593092835933826522602826541522473977510499517734180584911059518', '3593092835933826522602826541522473977510499517734180584911059518', 39, 2); - T('0.00000000000240671872382434259', '0.00000000000240671872382434258731759266816542514881094906467645247797685306920193421', 29, 6); - T('98445608185462908936594271820438358882244286228', '98445608185462908936594271820438358882244286228', 43, 4); - T('-38275693035627727048820160757435988950513161', '-38275693035627727048820160757435988950513161', 28, 2); - T('0.000000000000000007838540274247171557849126', '0.000000000000000007838540274247171557849125417291807341828802631329086161031903106930206518314803525', 42, 0); - T('0', '0.0000000000000000000000000000000000000008760161376', 38, 6); - T('-274462946120897177140732986024361620867165740004629583369799434.752624497847', '-274462946120897177140732986024361620867165740004629583369799434.7526244978472107528071824755321251', 12, 1); - T('805407519521180265118391229', '805407519521180265118391229', 27, 0); - T('4837.60752412303502514', '4837.60752412303502513085517977565448616961234363618524491896285197928079211821305450283483280681236', 17, 0); - T('19446.966116400627008657626752077217581388920002', '19446.966116400627008657626752077217581388920001650492489914443643730475', 42, 6); - T('259711114990641', '259711114990641', 1, 3); - T('-0.0000000001', '-0.0000000000000000002', 10, 0); - T('80565580.149080509196072203611545842035798415', '80565580.1490805091960722036115458420357984148292066084650845696757793247885015079193577022206528568', 36, 5); - T('0.000000005126609951384222369644011060208031', '0.00000000512660995138422236964401106020803193692417523731220078957765716642', 42, 3); - T('1758006742538130240388703498480688686072955030356.7524172233646685', '1758006742538130240388703498480688686072955030356.75241722336466855', 16, 1); - T('-128086989690.52297791537155595882257011356310571016034760745375196584546', '-128086989690.5229779153715559588225701135631057101603476074537519658454607884909539951', 59, 2); - T('-361166416734639117275346911473316661252428418964862.401', '-361166416734639117275346911473316661252428418964862.400974469693342990746', 4, 5); - T('71633752430127836728495483808.07484204148983764432608854793881189', '71633752430127836728495483808.074842041489837644326088547938811892934755621628332271860178432369', 35, 4); - T('5744453717566208360238616812981884481035389801', '5744453717566208360238616812981884481035389801', 46, 1); - T('2988347090930431122495200201632971168964831173901728', '2988347090930431122495200201632971168964831173901728', 31, 0); - T('2320482568655945754105081468655336561175857', '2320482568655945754105081468655336561175857', 13, 6); - T('0.0000000000000000000000381190632343589292', '0.0000000000000000000000381190632343589291525554226892790057468635150617798724', 40, 6); - T('150674298726358630368887.96642348553527918072509638013912555500029', '150674298726358630368887.966423485535279180725096380139125555000281054567239883226587200104', 41, 0); - T('6381234380831959100617925908319665780846.339213369897450587263631892568406353114597203918925', '6381234380831959100617925908319665780846.339213369897450587263631892568406353114597203918925036', 52, 6); - T('0', '-0.000000000000000000008153818897577980935667335', 11, 6); - T('0.42425', '0.4242532985015934975349331325449597502579863812797694513697436078382', 5, 6); - T('-9492241803854916508301408875627456379508228876824584339472513249476134', '-9492241803854916508301408875627456379508228876824584339472513249476134', 40, 3); - T('0.00000000070312', '0.00000000070312002679979045924', 16, 6); - T('0.00000000000000000000001', '0.0000000000000000000000000000000588002549246249768755359919888343240679086056339612762', 23, 0); - T('0.0000023310091287510842138474107374781945319497631823824', '0.000002331009128751084213847410737478194531949763182382321012031067524722385571777894', 55, 0); - T('1032461863864997072747819312364575151426447594160280088333654341664616268438.32980502', '1032461863864997072747819312364575151426447594160280088333654341664616268438.3298050176666367344933', 8, 0); - T('-0.596499', '-0.5964989918041972', 8, 3); - T('0.00000000729829591', '0.000000007298295908208407232392829275577759290253056591354761667316714193254528425439374', 17, 0); - T('-0.00000000000072754727282', '-0.000000000000727547272816813510126252359571002375852804848057969667686650624217565437395780898', 23, 3); - T('-10046269443437939423878986686151143710819158649636347587133691874104534887801867140686292', '-10046269443437939423878986686151143710819158649636347587133691874104534887801867140686292', 27, 4); - T('-0.0000000000000000008264058640698', '-0.00000000000000000082640586406982678835', 31, 6); - T('0', '-0.00000000000000000000000003', 4, 2); - T('0', '-0.00000000000000000000000000003', 10, 5); - T('-0.000000000000000000000000000000000063243952023', '-0.00000000000000000000000000000000006324395202396400840212', 45, 1); - T('-87462022143445554762309727721395432699696551899513954523', '-87462022143445554762309727721395432699696551899513954523', 34, 3); - T('-74961550733018', '-74961550733018', 3, 2); - T('-0.0000762276772207934863238537452', '-0.000076227677220793486323853745211809223538788353453336644181293192727858100277468114', 31, 1); - T('677858883593.5379217458786753765661983639736854979', '677858883593.53792174587867537656619836397368549787113022327012837856', 37, 0); - T('-681966362209838078248167523', '-681966362209838078248167523', 3, 3); - T('-0.0000000912679235575807736981', '-0.00000009126792355758077369811497315481776589586611502', 28, 6); - T('0', '-0.000000000000000000000000000052634779034188540046239', 18, 1); - T('-482621290791225899125767045587660152129007959948148807767495544739447223766118', '-482621290791225899125767045587660152129007959948148807767495544739447223766118', 54, 2); - T('-2457603484411630301158179244599424', '-2457603484411630301158179244599424', 0, 5); - T('-40619874105070540993401576950183421101632408', '-40619874105070540993401576950183421101632408', 21, 3); - T('0.000000000000000000001', '0.000000000000000000000000000000000000000000000036589692229297589126710894495725996984366827', 21, 0); - T('0', '0.000000000000000000000000000000000007697850604448866757088056283820271725848286928', 27, 1); - T('2545.02415115677316212239', '2545.0241511567731621223858827267448711169160082660710108790421759089', 20, 4); - T('7077834165184988414848217637710910868788', '7077834165184988414848217637710910868788', 1, 2); - T('0.0000000000007378707001477130995722524252437998233512333191', '0.00000000000073787070014771309957225242524379982335123331910271174142678466671942', 59, 5); - T('886722233239112661944981617508479963315641616414109829288', '886722233239112661944981617508479963315641616414109829288', 25, 1); - T('812428046316564095375052061800123688188698505372578.955270821798095254315857427809', '812428046316564095375052061800123688188698505372578.955270821798095254315857427809', 30, 1); - T('1438455226828583407739908136218110419280473454035031999178004364062408', '1438455226828583407739908136218110419280473454035031999178004364062408', 37, 6); - T('0', '0.0000000000000000000000000000000000000000000000001348157598970921392138758145247802207211', 46, 3); - T('8620798.4029829269497633530936626', '8620798.402982926949763353093662637749577322989003026264137629102694703457796723', 25, 3); - T('751975428988.635400218944734023463354339122072205244589', '751975428988.6354002189447340234633543391220722052445885192557635746411940404597083340565', 42, 2); - T('8829610679653473597763374223696575198221475058', '8829610679653473597763374223696575198221475058', 41, 1); - T('-714009623555639702450738551.145067501536358187497', '-714009623555639702450738551.145067501536358187497017675344121707361', 22, 1); - T('-91951388.565056345983796225029824384051390812152355713461736499009', '-91951388.5650563459837962250298243840513908121523557134617364990085137853372087283116655848', 57, 3); - T('0.0000000000000000000000000000000000000000542781491', '0.0000000000000000000000000000000000000000542781490608507', 49, 4); - T('-918330560556906040463237216497732461443', '-918330560556906040463237216497732461443', 26, 5); - T('-0.00000000002283026704705211170643908282642668304190779', '-0.0000000000228302670470521117064390828264266830419077982617173461771678023456426697428455618', 53, 1); - T('59904336933832006778100229635633495994764541035048455.00685752534587785481499778785', '59904336933832006778100229635633495994764541035048455.00685752534587785481499778785', 29, 4); - T('43327692187687528267656066572368503890833128899944', '43327692187687528267656066572368503890833128899944', 9, 0); - T('0', '-0.0000000000000000000000000000000000000000000000002695', 35, 4); - T('-777052914895060678617199377851347.5589977794726166264477644804368', '-777052914895060678617199377851347.55899777947261662644776448043676196992892646996390102480483', 31, 6); - T('0.000000000000006551347385', '0.0000000000000065513473845779768621371949710746347910674197', 24, 5); - T('0', '0.000000000000000000000000000000000000000000000470471271824608482', 35, 3); - T('0.00000000000000000000000000074155927643355', '0.000000000000000000000000000741559276433554007067939207218187264014389', 41, 5); - T('-0.00000000000000000000000000006', '-0.0000000000000000000000000000542442671677483510134381455061499028186524037533', 29, 3); - T('182677642047881.78165441673019155464219406264001214565556885348479', '182677642047881.78165441673019155464219406264001214565556885348478627713505384459736760885446', 50, 4); - T('0', '-0.00000000000000000000000000000858982569563495450566974610707502362885052556461927131884762464', 11, 6); - T('-66550.5958713958756', '-66550.59587139587555170096651751421783721693', 13, 3); - T('0.079645', '0.0796449604330762624732668777200614644533142680923684958378555199983606783579469672288424123399', 7, 5); - T('56438173260305527207719104.511696429', '56438173260305527207719104.5116964286835910881140135476295960487687321558005814404822', 9, 2); - T('0', '0.000000000000000000000000000000000000091993511185191449503021969935560319635', 37, 3); - T('391931928701260491527786928262480614065303505453326538607192588983468700108524088153624', '391931928701260491527786928262480614065303505453326538607192588983468700108524088153624', 22, 3); - T('0.000000000000000000000000000042665152', '0.0000000000000000000000000000426651524086', 36, 6); - T('-0.00000000000000000000000000000000000551985053689556', '-0.00000000000000000000000000000000000551985053689555651547913', 50, 4); - T('444439156087385667746972959760087580376298869566168', '444439156087385667746972959760087580376298869566168', 35, 5); - T('11036262983412.43034', '11036262983412.43033528368482450310801430632754197929230502318864896161821328429506937237954870210095', 5, 6); - T('114826904256612733.386864222161825009298982005624415354243438170865464426025', '114826904256612733.3868642221618250092989820056244153542434381708654644260250420408639727676555', 58, 6); - T('-577359880659584271099782733770129532093949030313381759511', '-577359880659584271099782733770129532093949030313381759511', 58, 3); - T('-44532141731964071674958', '-44532141731964071674958', 19, 0); - T('-531493422957995027553658.0152656', '-531493422957995027553658.01526560425994156916529061354056445595443554505916649107700199156398', 7, 2); - T('-5530039742938541509225190148354298332277611200.665402397065792402231196232513009208', '-5530039742938541509225190148354298332277611200.665402397065792402231196232513009208', 36, 3); - T('0', '0.000000000000000000000000000000677545257330276611824', 24, 5); - T('-0.012993495776054845588950537203826106468', '-0.01299349577605484558895053720382610646775576321', 39, 4); - T('0.00000000000000000000042757024280062', '0.00000000000000000000042757024280061750977250160981050270300489211926017361343', 35, 4); - T('51635888852808817365000118067', '51635888852808817365000118067', 22, 5); - T('0.000000000000000000000000000000000603396', '0.000000000000000000000000000000000603395945277167356481154505825030896299189393402', 39, 5); - T('0', '-0.00000000000000000000000000000000000635911', 8, 6); - T('-9221344189318249072741906770568381333452267699521431676394690183761281215217417612', '-9221344189318249072741906770568381333452267699521431676394690183761281215217417612', 22, 5); - T('-0.000000000000198393562', '-0.0000000000001983935629747875006466687380426976581147913876793006421232132970749204', 21, 2); - T('-786436693838.7', '-786436693838.60830508946831272795106698745669695326924668266049292676146076463', 1, 3); - T('40246366508270205742209645855527350916237478820639394287714514966410603115762211835', '40246366508270205742209645855527350916237478820639394287714514966410603115762211835', 58, 2); - T('555474.69496086509055978', '555474.6949608650905597751694947446839037372128', 17, 5); - T('8022325851625826110929789153501954481551485.5', '8022325851625826110929789153501954481551485.53871', 1, 5); - T('4297429245247860561728651321437204111140731778009688377629142154614688', '4297429245247860561728651321437204111140731778009688377629142154614688', 52, 0); - T('777513737240382763744724918104359012326554895457341753355494648093023051263742525018117', '777513737240382763744724918104359012326554895457341753355494648093023051263742525018117', 48, 2); - T('-63505.14654339787504452160585107121514668311657241064416542113167', '-63505.1465433978750445216058510712151466831165724106441654211316601988813466429148514', 59, 0); - T('0.0000000000000000000000000000000000000000000000002132', '0.0000000000000000000000000000000000000000000000002131584245576870011395143175854664918396', 52, 6); - T('19014788003727720623764101959539818230764908892692480197047', '19014788003727720623764101959539818230764908892692480197047', 58, 1); - T('33939997624.0197921818931949496918774963224187187', '33939997624.01979218189319494969187749632241871866115828172706446', 37, 4); - T('-0.00000000437', '-0.00000000437044548720085802473659895081938205039437794', 12, 6); - T('-0.00001', '-0.00000000008', 5, 0); - T('0.00023979483633295840978657582202107097322330670894', '0.0002397948363329584097865758220210709732233067089358025735733289993174', 50, 2); - T('-711428494121714888531607863770583992472769521259376456808708067109440833105179', '-711428494121714888531607863770583992472769521259376456808708067109440833105179', 28, 6); - T('70933783348593982835568459890416.0753238571138802414615804703685410118914879', '70933783348593982835568459890416.07532385711388024146158047036854101189148788148847143786341', 43, 6); - T('0.00013443010000122739', '0.000134430100001227389387332790313969924187247172103522415803', 20, 4); - T('594572866009', '594572866009', 11, 2); - T('0', '-0.0000000000000000000000000000000004', 9, 5); - T('0.00000000000000000000324829343842244367023387519850894', '0.0000000000000000000032482934384224436702338751985089395375621763002572355324477891525815325', 53, 4); - T('0.0000000000000000000000000000000000000080325957441397992219', '0.000000000000000000000000000000000000008032595744139799221910158364696096013396500786388556806', 58, 5); - T('-209.9943998837517521171865', '-209.9943998837517521171865', 22, 1); - T('368594811778601966053268169', '368594811778601966053268169', 14, 3); - T('2230531204252229043182083968194792253467124991147983364421488274258087435683', '2230531204252229043182083968194792253467124991147983364421488274258087435683', 16, 5); - T('-71115775450983349128763558836649132287', '-71115775450983349128763558836649132287', 23, 1); - T('-483654527751509330685538809742484358245140579666376151497197', '-483654527751509330685538809742484358245140579666376151497197', 56, 6); - T('-5091778328', '-5091778328', 3, 4); - T('-256102825585696490271420790932070946958683447238', '-256102825585696490271420790932070946958683447238', 16, 1); - T('7200079680269727637144953340960521911223150535738461003051', '7200079680269727637144953340960521911223150535738461003051', 46, 5); - T('0.12237956363887424653903641168389546218306318289244', '0.122379563638874246539036411683895462183063182892438860817851', 50, 6); - T('0', '0.0000000000000000000017330538236509731544529580860737930783953450084798359954428313202503031054', 3, 6); - T('-7307466372310844673325729456353434', '-7307466372310844673325729456353434', 11, 5); - T('450885530532123553546806459524324682026463783', '450885530532123553546806459524324682026463783', 41, 1); - T('-46895193988088327212394383852584799863173436374526341947', '-46895193988088327212394383852584799863173436374526341947', 31, 1); - T('-0.00000000000000000000000000000006245724297', '-0.00000000000000000000000000000006245724297115808171139353612583649806973748910846638239545613215419', 41, 5); - T('-0.00000001404979970762467943', '-0.000000014049799707624679436414100982684927402505487462368435636661232', 26, 2); - T('-0.00000000000079152154548705699405289418014456022', '-0.00000000000079152154548705699405289418014456022009611438790933023626729', 47, 2); - T('891231598035185094864874932491664', '891231598035185094864874932491664', 34, 1); - T('-21623630838130.41753786411051466836143', '-21623630838130.41753786411051466836142541353', 23, 4); - T('0', '-0.000000000000000000050344267763315930908573638914842950751277', 4, 1); - T('0.0000000000000000001', '0.00000000000000000000000000300465169060014934587800113159517165498719502916', 19, 0); - T('-8649178.18', '-8649178.18048714649483284871538420752288818', 3, 5); - T('0.0000000000000000000000000000000004963883754245', '0.000000000000000000000000000000000496388375424498127114868980814', 46, 0); - T('-10974421088223640446696', '-10974421088223640446696', 20, 5); - T('61312908452999172017014058433.355839803569328946823364243283374629933567367136', '61312908452999172017014058433.35583980356932894682336424328337462993356736713518814151050627295366', 48, 2); - T('-0.00000000000000000000000000000000000000000336353', '-0.00000000000000000000000000000000000000000336353', 48, 6); - T('0', '-0.000000000000000000000000000000000000906129945659174995729787364905385796', 13, 2); - T('0.006', '0.0062358322221514410119027818669885643269659203708743396114652392713131263018122602098661', 3, 3); - T('16627860442751852915382651943208084134328', '16627860442751852915382651943208084134328', 32, 6); - T('0.01670470626375882709919052077738319859836353121358428', '0.01670470626375882709919052077738319859836353121358428381884805750145', 53, 6); - T('0', '0.000000000000000000007', 18, 5); - T('-0.00007215749036271791941521566318078882873853148647784214', '-0.0000721574903627179194152156631807888287385314864778421351738105827688353', 56, 4); - T('3548263666.582689458461665694669644358', '3548263666.582689458461665694669644358336891947634669931', 27, 3); - T('60399519401632991079247752823778179593673529', '60399519401632991079247752823778179593673529', 22, 5); - T('0.000000000000233104769165177107585997076128792', '0.00000000000023310476916517710758599707612879202633127248344707016405290189235744990032222', 45, 1); - T('843965301062452449522948600607', '843965301062452449522948600607', 25, 6); - T('-0.0000000000000000000000000000000001', '-0.000000000000000000000000000000000085032621910742886084799453146101567282871', 34, 6); - T('46886807836678689688638922017651004255677288992864679552776076502293724674686314835', '46886807836678689688638922017651004255677288992864679552776076502293724674686314835', 34, 5); - T('-678740886303261267240.1239864904330523466883632237562037876', '-678740886303261267240.1239864904330523466883632237562037876164582', 37, 2); - T('-0.000000000000000000000000003066472712192994', '-0.0000000000000000000000000030664727121929943743232462354894897120672997544666290457788144220575', 42, 4); - T('200973057640705826285554717494.6405080060649747545974566436926', '200973057640705826285554717494.64050800606497475459745664369255835236446509521462789289', 31, 2); - T('-0.000000000000000000051634708278695104973', '-0.00000000000000000005163470827869510497289920040400838424017896443243312029801753587875534', 39, 6); - T('0.00000000000000000000000000000000000000000000003', '0.000000000000000000000000000000000000000000000031050069069237', 47, 5); - T('68206233796834824043797769872734137955118693676156480446872816.8518492721', '68206233796834824043797769872734137955118693676156480446872816.8518492721', 10, 0); - T('366211876730525184.2112925847409', '366211876730525184.2112925847408882079013862619705659971494103242295', 13, 6); - T('-28807871103897.272528960587971967675130166801', '-28807871103897.272528960587971967675130166801514140074724279602', 30, 2); - T('614620959.71471965275572405064779427741657286', '614620959.71471965275572405064779427741657286365469689495728000154430488188257888436646377190255908', 35, 4); - T('-0.00000000000000000000000000000000000000000000000089569140974', '-0.00000000000000000000000000000000000000000000000089569140973898433038300266513138758892568395944807', 59, 4); - T('368726531601472541757005559', '368726531601472541757005559', 22, 1); - T('185087426761612490062', '185087426761612490062', 10, 6); - T('-0.000000000004801489265532052458447318275442325425429984', '-0.0000000000048014892655320524584473182754423254254299839958730570547833935253', 56, 6); - T('1010261342.998866261745786097198968434321083737387072668528701921554', '1010261342.9988662617457860971989684343210837373870726685287019215543856058268', 57, 3); - T('-7.4410130019668366481281', '-7.44101300196683664812816428831629929', 22, 2); - T('0', '0.00000000000000000000000000000000000010766614619304664816351956826', 29, 5); - T('43602302059280765272143387205410250266701746805853.7362679778148565141761499585818918', '43602302059280765272143387205410250266701746805853.73626797781485651417614995858189170052', 34, 2); - T('3275597767569392135242802401183979090547557454995', '3275597767569392135242802401183979090547557454995.0002151574698063113783887531071555180731', 3, 4); - T('-0.000000861448005696963823990190602172681039031672943', '-0.00000086144800569696382399019060217268103903167294337421574', 51, 6); - T('-0.000000000718', '-0.000000000718175217221857329067204632862589275369371649657488041167798', 12, 2); - T('7241100033055179060849224143084272528685', '7241100033055179060849224143084272528685', 9, 6); - T('376930688703097473231056.140603329417775643180186381618', '376930688703097473231056.14060332941777564318018638161819677', 30, 5); - T('-335971623127888104123118574609591.54117174980023793282384339085373172820351', '-335971623127888104123118574609591.5411717498002379328238433908537317282035103147883860427215696679434', 41, 2); - T('0', '-0.000000000000000003', 17, 4); - T('-748898896256442137389196280.23031', '-748898896256442137389196280.230301813855222', 5, 3); - T('86874389451266246842831776279891856093449827972726827047273353918588358382027307437483326', '86874389451266246842831776279891856093449827972726827047273353918588358382027307437483326', 39, 5); - T('0.00081378123325625046095444674524950183268906906', '0.0008137812332562504609544467452495018326890690605771240762295999653129452516984857208', 48, 1); - T('-725450248090600004049167587080239402701356513779359607967489181865', '-725450248090600004049167587080239402701356513779359607967489181865', 21, 1); - T('24145300356288528084078711212894384414734655496038619409625797965831', '24145300356288528084078711212894384414734655496038619409625797965831', 25, 5); - T('22790948246303245', '22790948246303245', 2, 1); - T('26063.51488387693273367995592341542227268081315828530152', '26063.51488387693273367995592341542227268081315828530152248204562165099342', 50, 1); - T('0.000000000000000000000000006245246349730684267507002191086', '0.000000000000000000000000006245246349730684267507002191086872975015194060738411939654043163861', 57, 3); - T('0', '-0.0000000000000000000000000601239333161651028525297370999283901806959', 22, 5); - T('-7837268670151009998118347281852918290117079531785', '-7837268670151009998118347281852918290117079531785', 30, 6); - T('-0.0000000000000000000000000029961775048293', '-0.00000000000000000000000000299617750482926278941', 40, 5); - T('7697726478481038997299694825766803440383452890589677184654250970055060131212130077568341259760777047', '7697726478481038997299694825766803440383452890589677184654250970055060131212130077568341259760777047', 46, 2); - T('3339891140949070830.699260440247664205', '3339891140949070830.6992604402476642050432122493196994256397882111', 19, 5); - T('52884809054155176454341672916484263984322480794139167239467359676888945', '52884809054155176454341672916484263984322480794139167239467359676888945', 50, 6); - T('-172796003942538519677094591694286.6871237311', '-172796003942538519677094591694286.68712373112737765917257', 10, 4); - T('177347646033111167332285715', '177347646033111167332285715', 19, 2); - T('7476674346050072822509313046812.7766604692', '7476674346050072822509313046812.7766604692', 11, 2); - T('82575172816978114.87683857936991415384457', '82575172816978114.876838579369914153844570011199517178441757629522946782860018297776571802906754196', 24, 4); - T('7158070632454719426581379086266518238712824559043518252514520974817379095158141323665044775646', '7158070632454719426581379086266518238712824559043518252514520974817379095158141323665044775646', 17, 6); - T('917115601052562718812283551186941547064940933626510928987.4562952', '917115601052562718812283551186941547064940933626510928987.45629517752', 7, 0); - T('-65119253549637159293086371328298510.229376017664092812944609', '-65119253549637159293086371328298510.22937601766409281294460900299739094729288137887', 24, 1); - T('-579005874942088042877307886802326941', '-579005874942088042877307886802326941', 37, 5); - T('-2601068115420615446305982791459.426', '-2601068115420615446305982791459.425989121248575552659129706', 3, 5); - T('60808268310943453653', '60808268310943453653', 5, 0); - T('0.00000000000000000000000000000000000000000005', '0.00000000000000000000000000000000000000000005256617601108', 44, 1); - T('249699615589458766148275472771371667542386092', '249699615589458766148275472771371667542386092', 41, 4); - T('197124783477415252140047709100049763856382077536494207', '197124783477415252140047709100049763856382077536494207', 38, 6); - T('814489916413714424739999786410796548452821032.87345595765165005591329846', '814489916413714424739999786410796548452821032.87345595765165005591329846329301564522512436756', 26, 6); - T('-49538016657893548118648418565252666426527317632760162518667129336789273', '-49538016657893548118648418565252666426527317632760162518667129336789273', 48, 6); - T('-135962402495274524139379723587561300376789400012147878152663948.959882330347226358434638817587', '-135962402495274524139379723587561300376789400012147878152663948.959882330347226358434638817587336', 30, 4); - T('-4358076197279432775165677949552222928787316311', '-4358076197279432775165677949552222928787316311', 26, 5); - T('0.000000009549660800446030405915591714374', '0.0000000095496608004460304059155917143740402066739073312691924883427', 39, 6); - T('-2437094615.41350858123042926442269584680387347048427179419', '-2437094615.4135085812304292644226958468038734704842717941889573519082323297558840308', 47, 6); - T('358466133.8601641175863834378441113254257530617354281379949', '358466133.8601641175863834378441113254257530617354281379949', 49, 0); - T('-154871213567638221959950687949306409.746351834947226354559186488773883', '-154871213567638221959950687949306409.74635183494722635455918648877388290383966146367365785249', 34, 0); - T('87976555906224409024900072725833110552887623978068697732792.9607157608696', '87976555906224409024900072725833110552887623978068697732792.96071576086966754763036', 13, 3); - T('-590375526445828770053040658061151605713512472014244563701327', '-590375526445828770053040658061151605713512472014244563701327', 1, 5); - T('-1353905521062450729740654018889029895510321597436677310509112', '-1353905521062450729740654018889029895510321597436677310509112', 14, 4); - T('332180937526303', '332180937526303', 11, 6); - T('-45680079491730638451939229416160824932393128593694', '-45680079491730638451939229416160824932393128593694', 22, 6); - T('-0.000000000000000000000000000000020571686416292021497594053', '-0.000000000000000000000000000000020571686416292021497594052393236318666913399684096461', 57, 3); - T('0', '0.00000000000000000000000000211213791085573837356864067911953194887302837267780203724344126645', 3, 3); - T('892521802506509803646883747443168', '892521802506509803646883747443168', 2, 0); - T('-0.0000000068819004877595917438112866483406192855698741553', '-0.00000000688190048775959174381128664834061928556987415527831307983170062116415194754', 55, 5); - T('-49804930268043916112990775622805558821229045379525', '-49804930268043916112990775622805558821229045379525', 49, 4); - T('-0.00000000003844997', '-0.0000000000384499609113122581', 17, 0); - T('73509462899114913097162.936659564199247116284287739794425748', '73509462899114913097162.93665956419924711628428773979442574807443872985516875078680777000792039', 36, 6); - T('-8664068510121727818868488574074194031123824480425809', '-8664068510121727818868488574074194031123824480425809', 33, 3); - T('0', '-0.000000000000082925154369503381952218', 3, 4); - T('0.00000000000000000000000000000494371559', '0.00000000000000000000000000000494371558998398758931188718756430525144657522366194157303586974', 40, 6); - T('-794260065998077.13884134275780911657238759893', '-794260065998077.13884134275780911657238759892090024486502952023782930417809262337', 29, 3); - T('7838449608010724090333915161039617854245', '7838449608010724090333915161039617854245', 22, 2); - T('-0.000000000000000000000000090299235692899474107765497', '-0.00000000000000000000000009029923569289947410776549697487571276313069', 51, 6); - T('129880371850258.61412133178439830260206194863575968506722', '129880371850258.6141213317843983026020619486357596850672151597348420116071764738002312480591', 41, 2); - T('0', '-0.000000000000000000000000000069654324810754007197818319458155515746102410831', 16, 6); - T('6917074928997406802340600287671366643463094979793703', '6917074928997406802340600287671366643463094979793703', 11, 1); - T('638352.2306719047482582143371628643608514910846959631257', '638352.23067190474825821433716286436085149108469596312565254436460123392767413281842895306628777', 49, 2); - T('7707946181531948', '7707946181531948', 15, 2); - T('-309838422086.048', '-309838422086.04808185', 3, 1); - T('2192824211.0080201985789590980919632264255672632048439891468', '2192824211.0080201985789590980919632264255672632048439891468602698480648434545311112376637021504392', 49, 3); - T('0', '-0.00000000000000000000000003969191310224666076414045470704912231091500221968441708', 21, 2); - T('0.000000059490243929978874247171531061445881135951312465129', '0.000000059490243929978874247171531061445881135951312465128875040394691104895', 57, 2); - T('0', '0.00000000000000000000000000000000000000000000430795892406074968248098271778852650237875158191', 8, 3); - T('0', '0.00000000000000000000000000000000000000005514079663792325895423321318316302278796368854622155', 34, 4); - T('493569761100274010110454077911624728967134', '493569761100274010110454077911624728967134', 3, 1); - T('0.0000000000000000000000002350261513856073030241856209142', '0.00000000000000000000000023502615138560730302418562091419767176841', 56, 2); - T('0.000000000001', '0.000000000000000000000046445881046455824754584852684456291036351797', 12, 2); - T('-5908575948461246157379027387757419774048142302098485973238118063421813737397525', '-5908575948461246157379027387757419774048142302098485973238118063421813737397525', 34, 0); - T('0.000000000000000005399089004454655777227', '0.00000000000000000539908900445465577722722971033069332071477587781', 39, 4); - T('0.00000000000000000000000946098557678120770671083814', '0.000000000000000000000009460985576781207706710838140980751323648544309161', 50, 1); - T('0', '-0.0000000000000000000000000000000000000000440403318867241576885154196', 0, 5); - T('3747046262', '3747046262', 5, 1); - T('0.0000001', '0.0000000000000000000000000000000000758646', 7, 2); - T('0', '-0.00000000000000000000000009', 15, 5); - T('596882052577426293863257301421465966502279', '596882052577426293863257301421465966502279', 33, 0); - T('4473039625977222144334479458063492239418825.96014198784271458', '4473039625977222144334479458063492239418825.960141987842714579094764752465747291142009', 17, 2); - T('0', '0.000000000000000000000000000000000008840970191233691325423106101165338878559781109762868155273', 30, 5); - T('0', '0.00000000000000000000000000000004', 16, 5); - T('169029712348.55170414716062751882592912346872779338106493155966548277055', '169029712348.551704147160627518825929123468727793381064931559665482770557368651', 59, 1); - T('-40067736333095467.909018103042482184697237903897840593507536857833592926589', '-40067736333095467.9090181030424821846972379038978405935075368578335929265886811466250958381', 57, 0); - T('-879372926673376715647525088389987030762829133462771771854', '-879372926673376715647525088389987030762829133462771771854', 12, 3); - T('29923919417788684712505451388250973913525516205739.62177676', '29923919417788684712505451388250973913525516205739.621776762470308785065158523', 8, 5); - T('-50200282715661012003363003', '-50200282715661012003363003', 6, 0); - T('0', '-0.000000000000000000000000000000000000000000000011547', 26, 5); - T('5538533228138305238117805063', '5538533228138305238117805063', 0, 0); - T('-8.98259597', '-8.9825959693939731006579032794091529508335050728015406034432905524309056850714530113740093', 9, 0); - T('-7138142982581499581552578584558628530515907316812965044194805157928305296221837271', '-7138142982581499581552578584558628530515907316812965044194805157928305296221837271', 25, 1); - T('-414052004150361683820310924925020.9862395245441307980875407937909', '-414052004150361683820310924925020.9862395245441307980875407937908147411525882356716741678', 31, 3); - T('-503755672587004363319584711242281208', '-503755672587004363319584711242281208', 0, 2); - T('-0.0000000000000000000000000000078587947', '-0.00000000000000000000000000000785879472681', 37, 1); - T('-3', '-3', 0, 2); - T('724326828597266930679679932585984135363842086368099478984203778942630037200185834576870973751', '724326828597266930679679932585984135363842086368099478984203778942630037200185834576870973751', 58, 0); - T('0', '-0.0000000000000000000001069196569505157465239433501017695267116353907894886133969', 17, 5); - T('85972608415515722814484953328108168327861432', '85972608415515722814484953328108168327861432', 27, 3); - T('735203353605367618463183405487305335425', '735203353605367618463183405487305335425', 3, 4); - T('-0.000000000000038685598587815953783879233', '-0.00000000000003868559858781595378387923293510596996438543568027764671', 39, 4); - T('39417777876786859925775897228.414515103190999545938444157261853177310365', '39417777876786859925775897228.4145151031909995459384441572618531773103646804525566998911941365927', 42, 6); - T('-0.00042729698662369', '-0.0004272969866236854339301384420491548821671090593596154031221535925979534328791', 17, 3); - T('-0.001', '-0.000000000000000000000000000000000005405329234046634574698589533972367873335830589026185244', 3, 3); - T('780253449349101270418037346037809619092763848109347741511253928090145408496147938502521', '780253449349101270418037346037809619092763848109347741511253928090145408496147938502521', 54, 4); - T('-0.00000000000000000000000000000000067451325390149', '-0.0000000000000000000000000000000006745132539014862711234', 47, 0); - T('31.0602835210115', '31.06028352101159116694707249229172391419071049341139', 13, 1); - T('0.0000000000000000000000000000000000000000000000000495', '0.000000000000000000000000000000000000000000000000049499482322322842956811022466314', 54, 0); - T('0.00000000000000000000000000036747356681216113823925277207', '0.0000000000000000000000000003674735668121611382392527720704138622451221314733501', 57, 1); - T('320701762086356051254296033221502209341446339599208346957463888343997136', '320701762086356051254296033221502209341446339599208346957463888343997136', 32, 0); - T('0.0000000000000000006229756350932003529439584563700569061023', '0.0000000000000000006229756350932003529439584563700569061023', 59, 0); - T('-0.00000000000000000000000000000001', '-0.000000000000000000000000000000000002779554968030959772451850537321855864675620017588372276903500536', 32, 3); - T('19504345494555478351182477703565457647566876858685627027379505944698694624726169090861984', '19504345494555478351182477703565457647566876858685627027379505944698694624726169090861984', 0, 4); - T('-884684852128576325857920870487060224224863003891902747660876195738072', '-884684852128576325857920870487060224224863003891902747660876195738072', 29, 2); - T('-0.00000000000000001927120482', '-0.000000000000000019271204816104208235432769229247337783831896121690184707573452963345555747139521261', 26, 3); - T('-17476187434.5449326082784577197411497434939321355651616981523713348786', '-17476187434.544932608278457719741149743493932135565161698152371334878519825208420735438717588271', 58, 3); - T('0.000000000000000000000000000000000000000000000000671942359', '0.000000000000000000000000000000000000000000000000671942359005812', 59, 1); - T('0.0000000000000000000000000000000004917118136701612', '0.000000000000000000000000000000000491711813670161116275010479557699441078855323071908', 49, 0); - T('634166172293272998158876.8413', '634166172293272998158876.84128062603520572376508413295607032369731651393103539143496669193918096843', 4, 0); - T('-28119944334730255826834221613922194267786170327968560369991839067', '-28119944334730255826834221613922194267786170327968560369991839067', 32, 6); - T('0.00154819734046993', '0.00154819734046992352816640604555843660775840335436322950452318455817', 17, 0); - T('-105913645497507508669973802578229519978763548843414114661.54980455412849338374', '-105913645497507508669973802578229519978763548843414114661.549804554128493383737493', 20, 4); - T('7289695139546080448297917061342289649234847530317672856838500148', '7289695139546080448297917061342289649234847530317672856838500148', 20, 1); - T('0', '0.000000042979420754347314988434544000447696776811769466455886485920655', 0, 4); - T('0', '0.000000000000000000000000000000000924077178027327', 24, 6); - T('282942634910281488152070543.81977405730745731368050238', '282942634910281488152070543.81977405730745731368050238222825081313', 26, 5); - T('9829583855774518751527887659888828937143309416650.01061691363', '9829583855774518751527887659888828937143309416650.010616913621011666291387767132900103741582580722946', 11, 2); - T('2843.5579809036184', '2843.5579809036184434137308509550969034869063413306363790685675', 13, 3); - T('0.0000000000000000000000000000006935112798', '0.000000000000000000000000000000693511279803301217125480155013139742885382224949324725789805812', 40, 5); - T('38402002761517.0373', '38402002761517.03726339201008642458566869258242930397372981070695839443682553444750792077030923352', 4, 2); - T('-0.00000000000000001', '-0.00000000000000000000000000000000000284', 17, 0); - T('-0.00000000000000000000000000000000000000000328559961', '-0.0000000000000000000000000000000000000000032855996112178825812918129', 50, 2); - T('-10857376233280.74203', '-10857376233280.74203521516266128862336259662162270285388060400166956185959712257522107', 5, 2); - T('-0.00000000000000000000000000000001', '-0.000000000000000000000000000000011428328539927202527982255539515744018395155', 32, 1); - T('0', '0.0000000000000000006362859957256', 11, 4); - T('4325993183488742208455442659071054631148', '4325993183488742208455442659071054631148', 11, 3); - T('-1163899294989774891167097029980639467528238979769081614588667904', '-1163899294989774891167097029980639467528238979769081614588667904', 27, 3); - T('-0.000008771176272398358315944222330846161437656443089', '-0.000008771176272398358315944222330846161437656443089372426117023897251811651901343373735604735', 51, 2); - T('-0.000000000000000000000003961015971842', '-0.000000000000000000000003961015971841840897153173232191143604645950090459018394', 36, 3); - T('-0.000000000000044516333', '-0.0000000000000445163325234697173332966370812630194498631820837056547152354402952422626816765', 21, 0); - T('-0.001', '-0.000000000000000000000000560288645294823225485858180788451420057727431', 3, 3); - T('70431396474321596927755.0616724357770297517853368489945852116010015382199953', '70431396474321596927755.061672435777029751785336848994585211601001538219995373286052198980239404', 52, 1); - T('-290563347.4018618590644496547932201955716045339506671235383081837373', '-290563347.40186185906444965479322019557160453395066712353830818373739840892194032111993775', 58, 1); - T('-49838122704426512042478', '-49838122704426512042478', 12, 4); - T('65731122722942661959967857762.18', '65731122722942661959967857762.18226768355365269085129302733326389972791821455019761189700189', 2, 4); - T('684132827465730082618383537053250641255400578134', '684132827465730082618383537053250641255400578134', 39, 1); - T('710427365331082486088196567.85693834564371170948582954685019', '710427365331082486088196567.8569383456437117094858295468501870885566575655950543328963118398231759', 32, 4); - T('36646445.4', '36646445.42824516523285194093354092096642673855547686910006', 1, 4); - T('0.43424917263886958982405140577413037118', '0.43424917263886958982405140577413037118797467795184', 38, 1); - T('-0.00000000000000000000000036588414680611016888031201521581', '-0.000000000000000000000000365884146806110168880312015215814', 56, 5); - T('-0.00000000000000000000051018357371038710352736277553359016842', '-0.0000000000000000000005101835737103871035273627755335901684125664187418843827676645536966728787', 59, 3); - T('-35159732781823.97716511119720206064558667', '-35159732781823.977165111197202060645586672946470926242812549089110584121041', 26, 4); - T('0.000000000000000000000000000000000003364306363591', '0.000000000000000000000000000000000003364306363590521522380481558802243742946674208931', 48, 4); - T('-4306747914757314388890273349986190769173944.39291819807120899471231887129063365500089582609', '-4306747914757314388890273349986190769173944.39291819807120899471231887129063365500089582608837', 47, 3); - T('-0.0000206161005604222009966692502', '-0.00002061610056042220099666925021597014337038232489136426449787194485033490838383', 31, 5); - T('29588529819920739172563477650035803968437251317221514791', '29588529819920739172563477650035803968437251317221514791', 38, 4); - T('0', '0.00000000000000000000000000000076512226709342597183392545931193073264251232258187043154966155', 10, 4); - T('642634746714122.488629063706747265885497766263668674846', '642634746714122.4886290637067472658854977662636686748455506370584335783149463152080002791966876190272', 39, 5); - T('-0.000000000001', '-0.0000000000000000000000068031607833728788218500078443799438145', 12, 0); - T('4478793059557.919366066899688681937166624937', '4478793059557.919366066899688681937166624937037651207942775207986303596524642642692579', 31, 1); - T('719126016681991174787244179437135662886106', '719126016681991174787244179437135662886106', 21, 6); - T('612370379.042280015162966981091543536169122', '612370379.04228001516296698109154353616912118620911001007', 33, 0); - T('-0.000000000000000000381148646471375542749', '-0.00000000000000000038114864647137554274933758', 39, 1); - T('-0.00000336921984240686812663817912975898', '-0.00000336921984240686812663817912975898003855606655763928424753588827973199516045', 38, 1); - T('6614908420764830574613829691575811991052782880888895087915', '6614908420764830574613829691575811991052782880888895087915', 1, 5); - T('-75576843314854333307451548', '-75576843314854333307451548', 8, 2); - T('-7094775936348915.769263075129454561542743852557970402', '-7094775936348915.7692630751294545615427438525579704015758356635999962', 36, 4); - T('0.000000000000000647255404244969058746125607', '0.0000000000000006472554042449690587461256070155216132767410199433477488145722851174', 43, 4); - T('212191747967678055259704020533185819.7153877789442928970247278', '212191747967678055259704020533185819.7153877789442928970247278005685961467993140759589633126', 25, 5); - T('0.000000000000000000000000000000086866886236741', '0.000000000000000000000000000000086866886236741491884373982593431074047696748', 45, 5); - T('-21896707599295196444127', '-21896707599295196444127', 7, 6); - T('67963466958486868433411681965', '67963466958486868433411681965', 8, 1); - T('-0.0004618114320999748548', '-0.0004618114320999748548227742586597847789768814695996979397676648662277615278571112727802', 22, 1); - T('0', '0.000000000000000000000000000000000000000072014201946018446425103586624', 34, 3); - T('0.000000000000000000000000040626999', '0.000000000000000000000000040626998084581879309101940084150929007748602990641311915569084218', 33, 0); - T('-0.00000000000000000000000000000000000002364670058488838781', '-0.000000000000000000000000000000000000023646700584888387803963852870078295754301293417634319', 56, 0); - T('-61312195050009621627250721752682.05458', '-61312195050009621627250721752682.05458776416651498653588646631355122', 5, 2); - T('88558823477934754368770485901911168548905661612129649349536492903025217066', '88558823477934754368770485901911168548905661612129649349536492903025217066', 27, 3); - T('-5761274593909054578402071821461472994565942226296450524728000900348368713263854424411989', '-5761274593909054578402071821461472994565942226296450524728000900348368713263854424411989', 54, 4); - T('4397525934482', '4397525934482', 10, 1); - T('0', '0.000000000000008', 3, 3); - T('3832505074710.8772241868692955359876737605513385536', '3832505074710.8772241868692955359876737605513385535657156382235008771952598281484', 37, 5); - T('0.0000000000000000000000000000000000000000000064039785838957', '0.00000000000000000000000000000000000000000000640397858389567536112989058804434974', 58, 6); - T('6899986941802317801470081277005392880851864737732161265779438709', '6899986941802317801470081277005392880851864737732161265779438709', 36, 2); - T('0.048906322648425185632628713058196452313509', '0.0489063226484251856326287130581964523135085310426446391', 42, 5); - T('-29068667316141265922020323299656223961691022983876401059969277924346', '-29068667316141265922020323299656223961691022983876401059969277924346', 52, 1); - T('57896564283529490722728198636247192473162.955437706', '57896564283529490722728198636247192473162.955437706585876490347082', 9, 1); - T('-1377052660765266598224922578884764678982220316470617198042071.84', '-1377052660765266598224922578884764678982220316470617198042071.842763168339803148921', 2, 6); - T('-0.0000008472294237476439209693038490556088683', '-0.00000084722942374764392096930384905560886836719554554921990211', 43, 2); - T('-0.00000000000006211378313284557438319018', '-0.0000000000000621137831328455743831901849526312006248559047579838', 38, 6); - T('-64132448927708626844067839788020.56104426721067307770150847932963341750262', '-64132448927708626844067839788020.56104426721067307770150847932963341750262451491448713527', 41, 4); - T('-0.00080510769276', '-0.0008051076927558161863905844170590891349375387966097254255501665792278513428990177180729', 14, 4); - T('-0.000000000523495070412194527222', '-0.000000000523495070412194527222245530916445', 30, 6); - T('-776981501784122653016725778489064077038674642417508137241453166338683', '-776981501784122653016725778489064077038674642417508137241453166338683', 25, 6); - T('-85.754361554275952592904696122168206579', '-85.754361554275952592904696122168206579375505261', 36, 6); - T('41971686031617689086324682083921394293937303185646952166039268116965193583', '41971686031617689086324682083921394293937303185646952166039268116965193583', 7, 5); - T('0.00039420287057734077878369443635344083421129327830247522826', '0.0003942028705773407787836944363534408342112932783024752282629774898259222473719', 59, 3); - T('0.00000000000000000000000000000000000000000000000675866720473', '0.0000000000000000000000000000000000000000000000067586672047328993602503820470338', 59, 5); - T('0', '-0.000000000000000000000000000000000000000000000088705230880406784828084160640801289390145869866', 36, 1); - T('-304191535324135351444668650070326671', '-304191535324135351444668650070326671', 28, 0); - T('-0.000000001', '-0.000000000000000000000000000000000000645202999', 9, 3); - T('-1475932977772754862911365548920235009', '-1475932977772754862911365548920235009', 1, 1); - T('0.00000000000000748482924758', '0.00000000000000748482924758907665350364240578489492856151184272179973', 26, 1); - T('-1', '-0.0000800368117241283577308465283698286330423189888237592540844483', 0, 3); - T('0.00000000000000000005436973621557718727915791605', '0.0000000000000000000543697362155771872791579160464793433', 47, 4); - T('0', '-0.000000000000000000000000008105812474775967121736315163', 10, 2); - T('-162061415319361123389400237365697567694754077666970.95367098983987825787039', '-162061415319361123389400237365697567694754077666970.95367098983987825787039768461541526', 23, 1); - T('-0.00000000000000000000000078141830260660528317962609581', '-0.0000000000000000000000007814183026066052831796260958153167081281', 53, 2); - T('-760450372966873218121690338416694511378045594432280482201.6', '-760450372966873218121690338416694511378045594432280482201.5743953451455', 1, 6); - T('-8969924824887750.078167576440491913960555993', '-8969924824887750.0781675764404919139605559934327012046423719029', 27, 6); - T('-0.00000000000000000000000000000000000000000008850594039644162', '-0.00000000000000000000000000000000000000000008850594039644162037424244532346653', 59, 2); - T('-260213417057955846142647463609725738084865895592932493537647341857', '-260213417057955846142647463609725738084865895592932493537647341857', 51, 2); - T('565141621099385566886468464466', '565141621099385566886468464466', 10, 1); - T('83664.29974759139108443286033487', '83664.2997475913910844328603348762233403', 26, 1); - T('159684867991933938188684086.84829503153331708926629620984773984546340485586957818589', '159684867991933938188684086.84829503153331708926629620984773984546340485586957818589283205', 56, 4); - T('4783482240722.889565506051950025731026748125580032', '4783482240722.88956550605195002573102674812558003270323257226548107196735812', 36, 1); - T('0', '0.0000000000000000003', 9, 1); - T('-73191538351494680542101.097679556493531497949879615674615869073278632189', '-73191538351494680542101.09767955649353149794987961567461586907327863218941724713424903198', 48, 6); - T('1377196679485199902841228391473638877532', '1377196679485199902841228391473638877532', 20, 0); - T('-17772153798727918242886392361333023042650831518530553', '-17772153798727918242886392361333023042650831518530553', 46, 0); - T('0.08328506397736199', '0.08328506397736199281189505020297381756462266529288847578', 17, 6); - T('0.000000000000000000000073181265651336435623978981763', '0.000000000000000000000073181265651336435623978981762922547674290225409720410306838731933043556', 52, 0); - T('2290053898142311723842871344607971300300.4', '2290053898142311723842871344607971300300.434151478993367452964917933417740817968087394784172', 1, 4); - T('-4526903994128138106185254976553.417454138027126670650882487065659163773887419248789373', '-4526903994128138106185254976553.4174541380271266706508824870656591637738874192487893725731607711', 54, 4); - T('0.000000000000000000000000000004529650848633752087137797', '0.00000000000000000000000000000452965084863375208713779692', 54, 2); - T('41790148346489387876273166411501052202', '41790148346489387876273166411501052202', 8, 0); - T('-0.000000000069328660259658436177', '-0.0000000000693286602596584361762589565091715124753019116431269', 30, 0); - T('934822253075684362315304330796079406852179', '934822253075684362315304330796079406852179', 20, 0); - T('6138685955473706895.27191846437634217823067', '6138685955473706895.271918464376342178230674192673963926883446477458738606505318684196487099828273', 23, 1); - T('-4995207495760013820781008', '-4995207495760013820781008', 9, 5); - T('-315575628071433482711097581911695580094607581401113654130956785', '-315575628071433482711097581911695580094607581401113654130956785', 53, 2); - T('14237742301009518268544482664657681590264.3699281317800082179089', '14237742301009518268544482664657681590264.36992813178000821790889652431207007693905617376813211534954', 22, 6); - T('6933324085798448906217582066829684616544680559688340085427', '6933324085798448906217582066829684616544680559688340085427', 59, 5); - T('0.00000000000000076326740786404408348160812965284434866778', '0.00000000000000076326740786404408348160812965284434866778747625162316325969396896612585666', 56, 3); - T('0.000000000000086813905963104592136996896057455896843', '0.000000000000086813905963104592136996896057455896843175022732573388730069970550757', 51, 5); - T('51801898867306672572496403839561629956832174080646016677953156', '51801898867306672572496403839561629956832174080646016677953156', 8, 6); - T('-0.000000007315101480415581536176467876648223789983200337', '-0.00000000731510148041558153617646787664822378998320033685682677794506948090883516907520915603842', 54, 6); - T('0', '0.0000000000000000002560972936441568309868552845452461441', 1, 4); - T('-4148384973258837308705900867312127926039628611927712693805299864565985491', '-4148384973258837308705900867312127926039628611927712693805299864565985491', 57, 2); - T('0', '0.00000000000008081392179', 11, 3); - T('0', '-0.00000000000000000000000000000000000000000000000045718218551581160547165', 32, 5); - T('126371519643424683947919776390544767992024526388', '126371519643424683947919776390544767992024526388', 33, 3); - T('-148196', '-148195.22330505940168207920977604763714302872718112527157', 0, 3); - T('0.000000002384518595846426', '0.00000000238451859584642619680666569487976797096982144404778137134898742245621718069', 24, 1); - T('0.0000000000000000000001', '0.000000000000000000000000000000004625', 22, 0); - T('-16911.7419832374869', '-16911.7419832374868955960680613558461083659651878098', 13, 5); - T('-0.000012', '-0.0000122184223277020419635939917289023624698188785457519029895428324113502565328671558', 6, 2); - T('0.0000000000000000020288542156920825061442115612294420237', '0.000000000000000002028854215692082506144211561229442023610384333574312922', 55, 0); - T('-926348619407629319522119393447968619', '-926348619407629319522119393447968619', 9, 6); - T('0.000000000000000011172996664320313188853949533840233', '0.00000000000000001117299666432031318885394953384023300040666548394933514811631768406408144820507299', 51, 6); - T('8676085578448129636.46125142815995954615633699159686307427564866280997975', '8676085578448129636.461251428159959546156336991596863074275648662809979754896', 53, 6); - T('0.000000000000000000006911673453476612828647988180511', '0.00000000000000000000691167345347661282864798818051074447846', 51, 5); - T('0', '-0.000000000000000000000000000000000000000037274661429910134438335779699', 20, 6); - T('0', '-0.00000000000000000000000000000022912429406409774126564962929569092713860155341547', 5, 2); - T('0', '0.00000000000000000000007', 9, 4); - T('-0.000000000000000000000000000647', '-0.00000000000000000000000000064679122351281910373', 30, 6); - T('628253552286979258688877224011928439269818309', '628253552286979258688877224011928439269818309', 39, 2); - T('-7473225474290375395406057107593674409', '-7473225474290375395406057107593674409', 9, 4); - T('0', '-0.000000000000000000000000000000000000000000044980341254278389339188217614184616236700512663', 42, 1); - T('0', '-0.0000000000000000000000008169851496807201249112045355202923', 10, 4); - T('44979151873456538589159481816187996063744819950498068666276244930081', '44979151873456538589159481816187996063744819950498068666276244930081', 44, 2); - T('-5656502680950453.307129232', '-5656502680950453.3071292317099969560559506107', 9, 6); - T('0.000012916983213677608946870037474', '0.00001291698321367760894687003747317197534115902429539309092', 33, 0); - T('186614411842436994154261287798158888894696101481267805116', '186614411842436994154261287798158888894696101481267805116', 48, 4); - T('707.380045900803464776244462046183', '707.380045900803464776244462046182987', 31, 6); - T('632194297368023228055660745485057870911107495734770014', '632194297368023228055660745485057870911107495734770014', 46, 6); - T('35280495669924811181641930079387327223136396121465358386312882495656970347', '35280495669924811181641930079387327223136396121465358386312882495656970347', 1, 4); - T('-6325867003724294.663698111988027895808356539794935974343081043', '-6325867003724294.66369811198802789580835653979493597434308104291301033018168875746098749871551255682', 45, 0); - T('-799353555477135814839251032527782560596504969267009081682848404947106492', '-799353555477135814839251032527782560596504969267009081682848404947106492', 39, 1); - T('66595791053662779211189537167463453717540557304309464', '66595791053662779211189537167463453717540557304309464', 27, 0); - T('86863819.0795207560566246205038942404911', '86863819.07952075605662462050389424049106413333666160054769765', 31, 4); - T('-0.000000000000000000000000000000001', '-0.00000000000000000000000000000000000000000000008', 33, 3); - T('0.0000000000000000275', '0.0000000000000000275440961091735938216613771820776939226812444657855328490901237788725', 19, 1); - T('0', '-0.00000000000000000000000000000000000000000000000225083583687450018290901147795588587262327956', 21, 4); - T('106844609528473355525467772516478055461312403965348968485756541728796', '106844609528473355525467772516478055461312403965348968485756541728796', 16, 4); - T('-0.000000000000000814523751192634198253241238297485319828', '-0.0000000000000008145237511926341982532412382974853198275271819634843873247036611', 54, 0); - T('2606400896622366889946488350737590139429931326875963144243247149520.3226059185533490213723413754', '2606400896622366889946488350737590139429931326875963144243247149520.3226059185533490213723413754', 28, 6); - T('-183452660943051448746754671284613', '-183452660943051448746754671284613', 10, 2); - T('839807437987291944449694079569638219', '839807437987291944449694079569638219', 36, 0); - T('-8132217764461224416834766794322810048760447551363872095', '-8132217764461224416834766794322810048760447551363872095', 48, 0); - T('-0.0000000000000000000000000000001', '-0.00000000000000000000000000000000084013749996116337258106', 31, 3); - T('0.00000000000000000000000000000000056286653735314698', '0.000000000000000000000000000000000562866537353146980064941975206481554805', 52, 3); - T('8826215431283658953381909149090157677663835064029813383632728867019103467383915169736679', '8826215431283658953381909149090157677663835064029813383632728867019103467383915169736679', 35, 1); - T('65532958561624805787499.79879743257742173928432822969962227122981569885', '65532958561624805787499.79879743257742173928432822969962227122981569885', 48, 1); - T('-2776707353947863935313425463872380342255574023352080451291774137989569263228187316199185', '-2776707353947863935313425463872380342255574023352080451291774137989569263228187316199185', 45, 3); - T('84870733020575140260092508553754661695.368114319072', '84870733020575140260092508553754661695.36811431907190335719', 12, 4); - T('-83503440279939.973261442707162100212414583470064391568958643329', '-83503440279939.9732614427071621002124145834700643915689586433289964', 49, 0); - T('0', '-0.00000000000000000000000000000000000000000000000593635309628535746', 10, 2); - T('0.00001', '0.0000000000000000000000000000000000000000000005286316917406446218605705578095483616474', 5, 0); - T('0', '0.000000000000000000000000000000000000000008', 21, 1); - T('-0.000000000000000000000000000000896870792', '-0.000000000000000000000000000000896870791266', 39, 0); - T('6740911664689729', '6740911664689729', 17, 0); - T('-0.00000690323521226292545282', '-0.0000069032352122629254528255683555238', 26, 1); - T('-0.00000000000000000000913384438905427651481080851110444839', '-0.000000000000000000009133844389054276514810808511104448390238589693895571906', 56, 4); - T('-37939815047550295525500362964223610089693995885662719445639226194590163762795367', '-37939815047550295525500362964223610089693995885662719445639226194590163762795367', 40, 2); - T('0', '-0.000000000000000003', 3, 6); - T('0.000000000000000000000000000000005425', '0.000000000000000000000000000000005424109435043055109323846477896259', 36, 2); - T('-0.00864924723907831760464760343418947', '-0.00864924723907831760464760343418946520325901534', 35, 6); - T('0', '0.0000000000000000005374923', 14, 5); - T('11960649002', '11960649002', 11, 1); - T('6205972.6375129878468500799969491683169898210504634996318', '6205972.6375129878468500799969491683169898210504634996317075719512025074532662', 49, 0); - T('-0.0000327696652066428583356559', '-0.000032769665206642858335655876746559995630835559846294876125981984', 28, 0); - T('-7106283670343099889326720878025602271833620303', '-7106283670343099889326720878025602271833620303', 13, 1); - T('-0.000000000000000000000001', '-0.000000000000000000000000000000009', 24, 3); - T('-0.00001', '-0.0000000000000008', 5, 3); - T('-6133916442630955317842810214.86821373617414489008214917421152', '-6133916442630955317842810214.868213736174144890082149174211518886339289911249129630570965984027', 32, 5); - T('-23881.773402249', '-23881.7734022481', 9, 3); - T('-7943072313454728932408805268809876911677807547292409069069320924', '-7943072313454728932408805268809876911677807547292409069069320924', 53, 3); - T('-0.0000000000000000000000005184238277412160705490261079943', '-0.000000000000000000000000518423827741216070549026107994302914', 55, 6); - T('-6502553383150595', '-6502553383150595', 18, 6); - T('-0.00000000000000000000000000000000690227527', '-0.00000000000000000000000000000000690227526594856364875794508690356161782941768', 41, 6); - T('-0.056303708323832222458882734633919', '-0.0563037083238322224588827346339194', 33, 5); - T('146170653842047607933686838505110978214296', '146170653842047607933686838505110978214296', 43, 4); - T('-6440173.72698277131181168466528058795104036685676747477', '-6440173.726982771311811684665280587951040366856767474768344', 47, 3); - T('435822485701161806484754025865621399846162883184293991478109154521248459436', '435822485701161806484754025865621399846162883184293991478109154521248459436', 4, 3); - T('-0.000000000000000037815186790363', '-0.00000000000000003781518679036284917443497339141496107319487738088629444641566971505', 30, 4); - T('565930492095544460683321420785084911874956.4375793957430882229833768389375836010018', '565930492095544460683321420785084911874956.43757939574308822298337683893758360100179', 40, 2); - T('0.00000000000000000000004152', '0.000000000000000000000041522594866881469408628302850804768779275384292937914047860237548127164352', 26, 6); - T('-17034881662549539727165518222983064951722670573249', '-17034881662549539727165518222983064951722670573248.5125902187644045205097633', 0, 6); - T('276253842420715594878582609882869589958601896297494973', '276253842420715594878582609882869589958601896297494973', 36, 3); - T('-2486857760541953491833813995388.9805692056860091745889', '-2486857760541953491833813995388.9805692056860091745889748664644781', 22, 1); - T('-0.00000000001', '-0.00000000000000000000000000000000001343364842101594718687600286348068', 11, 3); - T('0.00000000000000000000000000000000000000000000007224', '0.0000000000000000000000000000000000000000000000722473881816060373641', 50, 1); - T('142224026751646621535876997526167808747124874491.8218160208781636', '142224026751646621535876997526167808747124874491.82181602087816353785918805465', 16, 2); - T('2054722951827331212352617437865565678128465963', '2054722951827331212352617437865565678128465963', 46, 0); - T('-0.00000000000000000259639195619', '-0.000000000000000002596391956187822298458567687533150431', 29, 0); - T('0', '-0.0000000000000000000000000000000000000000000000004783091262527', 35, 1); - T('0', '-0.00000000000000000000503086613010142201530941795090898678065118486089549316623317411283716858', 6, 1); - T('-679.96730494488662265292122816939430658266', '-679.96730494488662265292122816939430658266', 38, 6); - T('-4377850752966056', '-4377850752966056', 6, 5); - T('445003949563154132133680872348175496003398462600208906574865645004', '445003949563154132133680872348175496003398462600208906574865645004', 39, 2); - T('0', '-0.00000000000000000000000000000000000000001178758870852233489202054', 33, 6); - T('91936091236094033738149099398253993909296246976317855675164622956828', '91936091236094033738149099398253993909296246976317855675164622956828', 40, 4); - T('0', '0.00000000000000000000000000000000000003', 31, 1); - T('-898629194744631919581491799266418977651679996825530874', '-898629194744631919581491799266418977651679996825530874', 34, 3); - T('0.000003467700718336729714643811584256', '0.0000034677007183367297146438115842561720677348016451716438690590079270204', 36, 3); - T('-22546644480772822606187389406474962988389256779810505350888', '-22546644480772822606187389406474962988389256779810505350888', 52, 4); - T('-55082020290223830995673899832810918291437742407509337067868', '-55082020290223830995673899832810918291437742407509337067868', 2, 0); - T('1', '0.00000000000000000000000000000000000000007958953405109879', 0, 0); - T('-6621241335299355957642029172.6', '-6621241335299355957642029172.6111786502352678896678324397010972489567', 1, 4); - T('-0.0033627', '-0.00336269742972398707755429219378413396', 8, 0); - T('22743478716848471813054723697837.9399566865524', '22743478716848471813054723697837.9399566865524005957435185765916723113785', 13, 3); - T('0.0000000005992973504613566123673628822458384541', '0.0000000005992973504613566123673628822458384541', 46, 3); - T('1042630777875163117448109887506935525', '1042630777875163117448109887506935525', 15, 4); - T('221830139371014042990375785475202619672388755376281035547439322905698500192065908918841004849327', '221830139371014042990375785475202619672388755376281035547439322905698500192065908918841004849327', 1, 4); - T('-77589.796358', '-77589.7963584873098058997214465516938135824363', 6, 1); - T('0.000000000001819253160967', '0.0000000000018192531609674821174014441217356', 24, 5); - T('0', '0.00000000000000000000000000000023716920156897944671996308882014675', 13, 5); - T('-44856.778787975729305979715', '-44856.77878797572930597971463489707665657021962477424374876719956949220865646499239709551116', 21, 5); - T('-824225425379483553475089927776690875947364334175898675', '-824225425379483553475089927776690875947364334175898675', 2, 0); - T('87122038423032466553825622664295676697747152041634317', '87122038423032466553825622664295676697747152041634317', 31, 3); - T('-0.000000000000000070582005393075667', '-0.00000000000000007058200539307566721824589217372033295032', 33, 6); - T('489167543699462369.29206154', '489167543699462369.2920615397068117518054274410906616895686747969646065180181122832961', 8, 4); - T('0.000000000000000000000000000047024525824', '0.00000000000000000000000000004702452582390298338191679929233670770515206599960650313812431598721', 40, 2); - T('0.000000000000000000000000015966925641239639', '0.000000000000000000000000015966925641239638324777906483140603500193', 42, 0); - T('0.000000000000000000000000000000000001', '0.000000000000000000000000000000000000000072802411951783460267416348', 36, 0); - T('-7140703693356903422350486769685753717988557066347312584825633769978886.3629', '-7140703693356903422350486769685753717988557066347312584825633769978886.362931', 4, 2); - T('1736062301921704.3544399700210783', '1736062301921704.354439970021078301187861306249924535576', 17, 4); - T('2', '2', 2, 6); - T('0', '0.00000000000000000000000000000000000000000000000024894143738651545275937572115200791168651', 34, 6); - T('-68729847089572652805731356629429656670148403900488325598543', '-68729847089572652805731356629429656670148403900488325598543', 59, 6); - T('-346930759824.8932559917769593999', '-346930759824.893255991776959399952245588688', 19, 1); - T('-4340547831472081803462962486388614438943892232', '-4340547831472081803462962486388614438943892232', 48, 1); - T('61616001329905068913964', '61616001329905068913964', 16, 0); - T('0', '0.000000000000000006', 5, 5); - T('-49307863225330198431734', '-49307863225330198431734', 13, 4); - T('298024701456973658362011859788351474', '298024701456973658362011859788351474', 30, 5); - T('-425424728525125303177668913491238360367678741', '-425424728525125303177668913491238360367678741', 36, 2); - T('24056413149115583034277863478145', '24056413149115583034277863478145', 33, 5); - T('-68662564068039829470775924161168787917897062354279632533471702872755.986663', '-68662564068039829470775924161168787917897062354279632533471702872755.9866639308147823', 6, 2); - T('-27101699509736837178436357.31', '-27101699509736837178436357.3100268139', 4, 1); - T('0', '-0.00000000000000000000419594981553879981941810661', 1, 4); - T('273877393288860727439964596728486053482512130635.909', '273877393288860727439964596728486053482512130635.90913019', 3, 1); - T('102473879333862989052456171039164098', '102473879333862989052456171039164098', 15, 4); - T('-39381337887967273.903118568586532771031839637750510080526', '-39381337887967273.90311856858653277103183963775051008052576239248866475699378', 39, 3); - T('-3388998591124688079', '-3388998591124688079', 13, 5); - T('-150567903893972682463213974956', '-150567903893972682463213974956', 16, 4); - T('-0.0000000000000000000000000000000000000000493095312761862', '-0.0000000000000000000000000000000000000000493095312761861866451073373325095600742298256276', 55, 0); - T('-7953667604', '-7953667604', 5, 1); - T('4604171467545769381273154343552810484270535161', '4604171467545769381273154343552810484270535161', 40, 3); - T('590588071250370946139445102570765117263428130058924147992458327492312529138', '590588071250370946139445102570765117263428130058924147992458327492312529138', 23, 5); - T('-480177823684830812634801592253452743963534397293491478160746754380654483824166', '-480177823684830812634801592253452743963534397293491478160746754380654483824166', 50, 2); - T('0', '-0.0000000000000000000000038859594862', 21, 5); - T('0', '0.00000000000000000000748620339565797', 8, 5); - T('0.00002499835647695345918605661945571070775336188', '0.00002499835647695345918605661945571070775336187978592874439346863', 47, 0); - T('4159973699834074325565638', '4159973699834074325565638', 4, 5); - T('0.000000000000000000000055715176658', '0.00000000000000000000005571517665842097957139681288363708572', 33, 6); - T('0.00000001', '0.0000000000000000000000000000000000041593906324710134345258956249480933017685', 8, 0); - T('278216706345217684734', '278216706345217684734', 4, 0); - T('-515039538585', '-515039538585', 12, 5); - T('-5156282216060787005389201808449011961455755', '-5156282216060787005389201808449011961455755', 32, 1); - T('1771197246191236979629384473461.83606571991', '1771197246191236979629384473461.8360657199109008737', 11, 1); - T('0.0011131469353', '0.0011131469352378249447935166749689277812743785507290928314830661852468909137787363822177', 13, 0); - T('92115423409743', '92115423409743', 12, 5); - T('858.2661281409167634547302646312611320956987', '858.26612814091676345473026463126113209569860657925193123562', 40, 2); - T('-1', '-0.0719443', 0, 3); - T('-0.0000000000000009', '-0.00000000000000081331379483643709', 16, 0); - T('0.00002697436643419847452779353409412459199', '0.0000269743664341984745277935340941245919918623531756557204282278703617', 41, 5); - T('0.00000000000000000000001', '0.000000000000000000000000000000000000000000023801773695682720261287808392663674484132464627', 23, 0); - T('-0.00068344382770949159674695980739380635445', '-0.0006834438277094915967469598073938063544463198925827927897963802449983538', 41, 4); - T('0', '0.0000000000000000000000000000000000000000000000050279214787679199305', 11, 4); - T('-588947409514785639282485632722383004287882037069573499096951.3145927013550028697730488', '-588947409514785639282485632722383004287882037069573499096951.31459270135500286977304875961', 25, 6); - T('0', '-0.00000000000000000000000000000000186436816132981351522904214050221580878', 3, 4); - T('-2372.6417339151826508053284670230939641484', '-2372.6417339151826508053284670230939641484398', 37, 1); - T('62178674327740811042508553727964', '62178674327740811042508553727964', 27, 5); - T('0', '0.0000000000000000000000000000000547293246671362566489950300676458220362775126945519', 7, 4); - T('49251652967453539726484585223974655821592759', '49251652967453539726484585223974655821592759', 31, 5); - T('-296495898199.58115237407948666112', '-296495898199.5811523740794866611232178652873298488744263', 20, 6); - T('-95652710114780760171030049795936499140918623272399896688565724875008683384093', '-95652710114780760171030049795936499140918623272399896688565724875008683384093', 57, 1); - T('0.00000000000058426002118757843091739264518599980607', '0.00000000000058426002118757843091739264518599980606639684373685326021916693294', 50, 2); - T('2772843216253911884822930634835873229720748.35205347294264485414722818229074309092764957', '2772843216253911884822930634835873229720748.35205347294264485414722818229074309092764957', 45, 1); - T('0', '0.0002', 0, 1); - T('0.0000000000000000000009', '0.0000000000000000000009', 22, 4); - T('-0.00000063377460212762032425176962047901364151137812855454938', '-0.000000633774602127620324251769620479013641511378128554549388907545372024969906304253032', 59, 1); - T('-0.00000006646203569453454444708452552277428018333642748745699', '-0.0000000664620356945345444470845255227742801833364274874569813785409098392133873982373960550117596', 59, 0); - T('0', '0.000000000000000000000000000000000000000000018538496533514574221730165720097', 31, 5); - T('128484998383401376820534767951931012435370666908970446', '128484998383401376820534767951931012435370666908970446', 44, 1); - T('4387738573794731066916336352026833902940795.8852740466656380585076098286734723', '4387738573794731066916336352026833902940795.8852740466656380585076098286734723472438018787975', 34, 5); - T('-0.00000000000000000003405365175859259155568376', '-0.0000000000000000000340536517585925915556837608377203983174081729250328', 44, 6); - T('-187112408058.7234570771077', '-187112408058.723457077107737466758', 13, 5); - T('531063677635775810446921905944792595119327655554346497', '531063677635775810446921905944792595119327655554346497', 21, 1); - T('-0.0000000000000000000000006791908058045691073817', '-0.00000000000000000000000067919080580456910738169344941664639835178052777348953964845369', 46, 0); - T('307899704537986547769348847994164364550840818783793849762539', '307899704537986547769348847994164364550840818783793849762539', 14, 4); - T('-435801778695359687591423580.427694338967317762706300283493834282886549420729852', '-435801778695359687591423580.427694338967317762706300283493834282886549420729852017', 52, 5); - T('-0.00000000003917777044145525747611380850933123472924171119', '-0.000000000039177770441455257476113808509331234729241711186132211007540710149907', 56, 6); - T('62928039693272623682271.27541008736912709308116480951633335017303574647668632724622', '62928039693272623682271.27541008736912709308116480951633335017303574647668632724621535388', 59, 5); - T('-0.0000000000000000000000000000000000000000001', '-0.000000000000000000000000000000000000000000000007000182632515075', 43, 0); - T('907824547333163182771486955205512585202844466110951892146887907879200198061176', '907824547333163182771486955205512585202844466110951892146887907879200198061176', 24, 1); - T('-1544386137499412381886438484', '-1544386137499412381886438484', 25, 6); - T('-0.0000000000000000000000000076', '-0.00000000000000000000000000768056506477829996048633181519', 28, 2); - T('4890192706601958001267805328506308744627862445358671612', '4890192706601958001267805328506308744627862445358671612', 43, 4); - T('-0.001', '-0.000000000000000000000000000000000000000003024424622329171771637603264679763397312441', 3, 0); - T('-0.000000232115524236009432926', '-0.0000002321155242360094329258', 27, 0); - T('49465993391406248092231222.0801712487751425033643', '49465993391406248092231222.08017124877514250336430361542116940315722', 23, 3); - T('4180158455264386144163419573028038177659222536720952339274298247333816505172', '4180158455264386144163419573028038177659222536720952339274298247333816505172', 45, 3); - T('-0.000000000000000000000000000060254658062', '-0.0000000000000000000000000000602546580626641397565454810564671579837553', 39, 1); - T('0.0000019257899344941444964', '0.00000192578993449414449637565345019538269354146347', 25, 0); - T('0', '0.0000000000000007', 13, 4); - T('-0.000000000000000000000000000000000000007', '-0.0000000000000000000000000000000000000077279149653677340608947700558217181', 39, 2); - T('-448376506822431348847333799886', '-448376506822431348847333799886', 0, 1); - T('69867122143002481442816258286999167805918307181607743074904979008771841710463824003', '69867122143002481442816258286999167805918307181607743074904979008771841710463824003', 27, 3); - T('2178943445964550611', '2178943445964550611', 17, 0); - T('588387425474973011615137458350384132121857043644620739740517932.762', '588387425474973011615137458350384132121857043644620739740517932.76207074', 4, 3); - T('0.000000000000000891030290232918573851', '0.0000000000000008910302902329185738510097719', 36, 1); - T('3082156529442568521513326353208207517976381714116608.9434238802561825638640926017', '3082156529442568521513326353208207517976381714116608.943423880256182563864092601674468', 28, 6); - T('-269047218334585112717070569715', '-269047218334585112717070569715', 20, 3); - T('794322372403220770530191708', '794322372403220770530191708', 17, 4); - T('-0.0000088706942874980615965377284', '-0.0000088706942874980615965377283623276238900639610011564988041972', 31, 3); - T('-18762392383129800103435772599858039146861024540145071643', '-18762392383129800103435772599858039146861024540145071643', 39, 0); - T('0.00000000000000000005418504797326945324468962601702987844065', '0.000000000000000000054185047973269453244689626017029878440651506342739333005455074', 59, 6); - T('0', '0.00000000000000000000000000000001455552106862800727428835727449445351956', 2, 6); - T('-845184120395843729177378264132032391293931221704496190873', '-845184120395843729177378264132032391293931221704496190873', 3, 2); - T('-22928704982133259844820264310150045267.8329497378477851667', '-22928704982133259844820264310150045267.8329497378477851666787234740604182218327262831065786', 19, 0); - T('-753282787421295813612681585527569219114746603', '-753282787421295813612681585527569219114746603', 6, 3); - T('0', '-0.000000000000000000000000000001114691322399392322421', 0, 5); - T('-4470337.856339789341346743328195402056', '-4470337.8563397893413467433281954020555766465023528610798962516623771308', 30, 4); - T('-30259936572085000771571577042343302258005437254494921143265833920775250590681264568', '-30259936572085000771571577042343302258005437254494921143265833920775250590681264568', 37, 5); - T('0.00000000046019029818715', '0.000000000460190298187149944541124538982908213632543612794526400527723071339103700250052883', 24, 2); - T('488789246040736024354688778283025974423012332029061586465391.05657634342713960705278', '488789246040736024354688778283025974423012332029061586465391.0565763434271396070527794705650531927', 23, 0); - T('-6754886810347257311369815292802990704436078888019328596021676996446581588371838421302183', '-6754886810347257311369815292802990704436078888019328596021676996446581588371838421302183', 17, 5); - T('-2219143949146.543192979755734', '-2219143949146.5431929797557336049181837818262147309272936749984443073357094259', 15, 3); - T('25642596132200847246923459489123979011650156', '25642596132200847246923459489123979011650156', 34, 4); - T('-869559474794910580.4702422545', '-869559474794910580.470242254580425701508344203389450340088616045503344062196', 10, 1); - T('873581632317363936846913522953208947257070629891494175.1987423890811633389352647', '873581632317363936846913522953208947257070629891494175.19874238908116333893526471237141433112991286', 25, 4); - T('-149595188298843646987316097444673881', '-149595188298843646987316097444673881', 36, 5); - T('1314405778222365740681306509390140309', '1314405778222365740681306509390140309', 23, 5); - T('-43669276969497246217249931136079143593668679948650792993674045.547575505339753429132018021618569924', '-43669276969497246217249931136079143593668679948650792993674045.547575505339753429132018021618569924', 36, 2); - T('778437789780670221576981092962324328921406844694078635347625850330135239051380.593313827', '778437789780670221576981092962324328921406844694078635347625850330135239051380.5933138270296', 9, 3); - T('0', '-0.000000000000000000000670532931448014402320805028695397125747680104246730672291510758362070539', 0, 4); - T('-269860226.555168110686802', '-269860226.555168110686802406496811651255242690733933523277397815449890266344932488292555', 15, 6); - T('-0.00000000000000000000000000000000000001', '-0.00000000000000000000000000000000000000000000001', 38, 3); - T('8255334830426368087757667915495316773111372', '8255334830426368087757667915495316773111372', 20, 4); - T('-498.288', '-498.2877551595647284860735236925190739383420573843285964682707105606057458671350918750993', 3, 6); - T('90275906866311700418329778663.453021601770244972374', '90275906866311700418329778663.4530216017702449723738726140283616676480577425596798642530312', 21, 4); - T('-58249061380532235.683643040770210682572744295', '-58249061380532235.68364304077021068257274429468', 27, 4); - T('-0.00000000000000000005874732963', '-0.00000000000000000005874732963903011696675103873912247327240795349388835921', 29, 1); - T('-0.00000000000000000000000891849846684592', '-0.00000000000000000000000891849846684592', 39, 0); - T('-317305030488680572949072951462138920358812787719661772458316652068525445', '-317305030488680572949072951462138920358812787719661772458316652068525445', 58, 0); - T('154344118085858988045736881532862450933453810805000737193200.8311028461495237875501818767647353', '154344118085858988045736881532862450933453810805000737193200.8311028461495237875501818767647353', 34, 0); - T('-0.00000000000000000006151217562036449', '-0.00000000000000000006151217562036449913306415978013249544', 35, 2); - T('0.00000000000000000000000000000000000000635481634', '0.000000000000000000000000000000000000006354816333226622007293085007542785238974690455300658', 47, 0); - T('-72104134714968004316834628241028266449839170680955147176037571084261', '-72104134714968004316834628241028266449839170680955147176037571084261', 54, 6); - T('449011810931249785286308861907624', '449011810931249785286308861907624', 8, 0); - T('-5344557217.952340951684183652094', '-5344557217.9523409516841836520936077337920245188603000165', 21, 0); - T('26763304918.6071132280297527249552897014', '26763304918.607113228029752724955289701414261410830249608167321604531533418376564217', 28, 5); - T('-5.9354', '-5.935401329955359917419849571921209501551', 4, 2); - T('0.0000000000000002842770147295499709278', '0.000000000000000284277014729549970927748689066908625707440474139245449815727102349121121703585184', 37, 2); - T('-0.00000006536334906818', '-0.00000006536334906818007245367103563161239', 21, 1); - T('3987294744.961449803344679269558748056110724042180299042772', '3987294744.961449803344679269558748056110724042180299042771934156686853', 48, 0); - T('3670550979301523677411452367600923241928927', '3670550979301523677411452367600923241928927', 16, 6); - T('8186460244315446238612369289', '8186460244315446238612369289', 14, 5); - T('0.0000000000001205038039008310782739771735999409', '0.0000000000001205038039008310782739771735999408450010198815947147909379151151097718078660678', 46, 2); - T('17790773861566.9127491793774523928', '17790773861566.9127491793774523927742086885', 19, 6); - T('-45973691512980904832772447657128646184729588347720906399317356124291', '-45973691512980904832772447657128646184729588347720906399317356124291', 6, 0); - T('-0.000052578846594552360365003261412', '-0.00005257884659455236036500326141292751072228323274374276273184032573733734930586182920538869496014', 33, 1); - T('-8451030.38187527151851343992271353120147534273330863994132400507052', '-8451030.38187527151851343992271353120147534273330863994132400507052', 59, 5); - T('-6913729808236204745703016735366143142854267317875', '-6913729808236204745703016735366143142854267317875', 48, 6); - T('0', '-0.000000000000000000515816546619846222740519650659244354', 14, 1); - T('-0.0000000000000000000000000059770244313969237968717', '-0.0000000000000000000000000059770244313969237968717414549698422124221759010405670994', 49, 2); - T('727784599805850866261167964.5891386990587296184', '727784599805850866261167964.5891386990587296183810717', 19, 0); - T('60455336921761571297330062708834209593753553971798623628973754356', '60455336921761571297330062708834209593753553971798623628973754356', 34, 5); - T('0', '-0.00000000000000000000000000000000000000000000002', 14, 2); - T('-0.1', '-0.0000000000000000000000000000000000000000268246264078205', 1, 3); - T('7867937945277457921518274222617202749835981396620016683948282927454552756', '7867937945277457921518274222617202749835981396620016683948282927454552756', 45, 5); - T('10798101545970440531103848', '10798101545970440531103848', 17, 5); - T('-662862030859665015252209082020387338342609', '-662862030859665015252209082020387338342609', 41, 6); - T('-44509783950769310032819987921393220034667288606302636', '-44509783950769310032819987921393220034667288606302636', 10, 2); - T('0.000721', '0.000721015686405377087216290192146931451368869346018108792313779', 7, 3); - T('-429429431898.92798147529486', '-429429431898.9279814752948602', 15, 5); - T('0.000000000001', '0.00000000000000000000004107', 12, 0); - T('-1523647444816999427298977167480522782325629813153844', '-1523647444816999427298977167480522782325629813153844', 27, 0); - T('159233142565064172480281097992202157794955635367088722816913405230709', '159233142565064172480281097992202157794955635367088722816913405230709', 52, 3); - T('17734356336750552208117881', '17734356336750552208117881', 13, 3); - T('0.00000000000000000010516440931', '0.000000000000000000105164409309278409833867961542984330406756444964971586826869142', 29, 0); - T('-0.000000005607865232286053212511', '-0.0000000056078652322860532125106865502282497985819996577284499049194079530138833114274376005211', 30, 5); - T('-1848824671208162.036118636322531620559621761039257152', '-1848824671208162.0361186363225316205596217610392571519859349877420578173659325511361795', 36, 6); - T('474121748.258771413359324788', '474121748.258771413359324788219351236297274357376611118786304644016953198682051204228387618', 18, 5); - T('0', '0.000000000000000000000000000000000000002', 9, 6); - T('-4082518153742954140701880216101112933681579', '-4082518153742954140701880216101112933681579', 2, 6); - T('485561797431709913', '485561797431709913', 8, 5); - T('-0.00000005169583157473170767787', '-0.000000051695831574731707677872752277227315759207157035374591647416039798341232', 29, 5); - T('-31444130984617191013282867777267050079417810443829', '-31444130984617191013282867777267050079417810443829', 43, 3); - T('8800583786371595440869107', '8800583786371595440869107', 4, 6); - T('-8815.8895192223252405825465547234263054813143616472980391', '-8815.889519222325240582546554723426305481314361647298039143773292329917612441361288012832403085661674', 52, 4); - T('24193532123207943347431137579390758056362200617916927652557', '24193532123207943347431137579390758056362200617916927652557', 8, 6); - T('-1.337926538823846889672640236908474426590700086', '-1.3379265388238468896726402369084744265907000856185156132950540139555844532982184035787153238', 45, 4); - T('1558843239.299544313206143220207974', '1558843239.299544313206143220207974153124813171090852680122860660088788288026393496', 24, 3); - T('-59589972311323891941872406112978568670975162132927304.08231126490356', '-59589972311323891941872406112978568670975162132927304.08231126490356049195534195298897388522', 15, 1); - T('-743294747766629171048480641662764189036069326862056657538375964541286934', '-743294747766629171048480641662764189036069326862056657538375964541286934', 5, 4); - T('22265', '22265', 3, 4); - T('960209483951475422891115334433638881085096.26588580775357747606657536401221311373248396571', '960209483951475422891115334433638881085096.265885807753577476066575364012213113732483965707', 47, 0); - T('44550253.862798116411937890173846464380254722540077', '44550253.862798116411937890173846464380254722540076612180961686217459396341111804577388882586249791', 42, 6); - T('43402590248081760572362131719223.753209477296474800070796246196620361', '43402590248081760572362131719223.753209477296474800070796246196620360891', 36, 2); - T('23302193755473927447547.0400871612708276023203865329170219302115999767999', '23302193755473927447547.0400871612708276023203865329170219302115999767999489', 49, 4); - T('0.00000000000000000000000809577123038853204379', '0.0000000000000000000000080957712303885320437905131515608754123689963443056574402556634345', 44, 4); - T('5757764236108545477867413983', '5757764236108545477867413983', 19, 3); - T('0.0000000000000000000000000000000000000009', '0.0000000000000000000000000000000000000009', 40, 0); - T('3559280912885112533280423534223324103634509100163633301839596057', '3559280912885112533280423534223324103634509100163633301839596057', 59, 1); - T('-417080158865542582854655944868550771791.046398310335547707041055645769929951581637541553712', '-417080158865542582854655944868550771791.04639831033554770704105564576992995158163754155371200816', 52, 6); - T('89983719097904808464', '89983719097904808464', 1, 4); - T('-735429992378182205630619451123590.3947291140982175810651340488182275175', '-735429992378182205630619451123590.394729114098217581065134048818227517476', 37, 6); - T('419077969568256244823720087754694848763408887642073576695421791', '419077969568256244823720087754694848763408887642073576695421791', 36, 1); - T('191461.889031503960878427762073940304873639', '191461.88903150396087842776207394030487363817696768685154419315097935845754622181742599271', 36, 2); - T('-0.00000000000000000000062342', '-0.000000000000000000000623414', 26, 3); - T('127194045893446729075351171047', '127194045893446729075351171047', 21, 0); - T('-229500965923850.70051429223116003250968598721393599828363661825696333', '-229500965923850.700514292231160032509685987213935998283636618256963339786490679495749782904303115', 53, 1); - T('-0.0000000000000000001', '-0.0000000000000000000056041231775239402844541555853241836954476161592639531971958216635667906218', 19, 3); - T('0', '-0.00000000000000000000000000000000000000000000000037582095633137036754003160897330055440194309661', 35, 5); - T('3374255136237325085491942038388147404432627458905669250744778', '3374255136237325085491942038388147404432627458905669250744778', 45, 0); - T('7690224951153160774526032743679621', '7690224951153160774526032743679621', 33, 6); - T('0.00000000000000000000000000000000017074840686264748628337821', '0.000000000000000000000000000000000170748406862647486283378213576419477915575', 59, 5); - T('-0.00000000004637857649826847069795159309827675', '-0.000000000046378576498268470697951593098276745844317758', 44, 5); - T('0.00017652709951498133638383919005461463529305123', '0.000176527099514981336383839190054614635293051230467643495742837724131', 47, 1); - T('0', '-0.000000000000000000000000000000000000000000000112634125418', 33, 4); - T('723368046640065130294742958718721773826602583088486440698866940503225379031577817', '723368046640065130294742958718721773826602583088486440698866940503225379031577817', 51, 4); - T('-50933665584184852038671079863303718636397390288718740018317103418.102', '-50933665584184852038671079863303718636397390288718740018317103418.102293292287286568351413551802', 3, 5); - T('-2410200702497', '-2410200702497', 11, 1); - T('0', '0.0000000000000000000000000000000000000000000042239344371306878587914753063390073941', 34, 4); - T('-0.00000000000000000000000000000000000000000000001', '-0.0000000000000000000000000000000000000000000000000575180898854911', 47, 0); - T('0.000000000000000004344458301', '0.000000000000000004344458300844696324', 27, 5); - T('36415144993270477751194428581026117927500927.44375086964836279651713', '36415144993270477751194428581026117927500927.443750869648362796517124098901167909583083796664632', 23, 0); - T('5334215483112576666595260269852476258881', '5334215483112576666595260269852476258881', 11, 2); - T('3572677626411797212153520390351.131380872979421133958812687842550117369', '3572677626411797212153520390351.131380872979421133958812687842550117369055722382', 40, 1); - T('0', '-0.000000000317959455183002008629386273613319488458668668911799807504500387889375132126574196359', 2, 1); - T('0', '0.00000000000000000000000000508716881203357016907853303274028327363526105723619349316', 9, 5); - T('0', '0.00000000000000000000000000000000000000000000007059146600634404411', 2, 6); - T('0.00000000000000000008044178973467803785', '0.000000000000000000080441789734678037845949859474890695888', 38, 5); - T('0.00055142638660941844622938085879706786353818237626618', '0.0005514263866094184462293808587970678635381823762661734377953648597433', 53, 0); - T('-17599444586797881418318563414502812139457', '-17599444586797881418318563414502812139457', 29, 1); - T('1134429695712029417607873744122149717054918253194205124127', '1134429695712029417607873744122149717054918253194205124127', 56, 5); - T('0', '-0.0000000000000000000000000000032833397936417991775542735318772256', 18, 4); - T('-0.00000000000082748682928206867048022608063733', '-0.00000000000082748682928206867048022608063733', 44, 0); - T('-892190137424331421784517600329772157761277945477908134895153411935646898622686045781365887203805522', '-892190137424331421784517600329772157761277945477908134895153411935646898622686045781365887203805522', 21, 2); - T('-57225378653330495581042999105043387285455715448557023450921912.731', '-57225378653330495581042999105043387285455715448557023450921912.730815794217451434674350759', 3, 3); - T('88944978837600241675413451540.41662447490467530719484465416514', '88944978837600241675413451540.41662447490467530719484465416513364729285517299279519760671836409', 32, 0); - T('-0.00566575519125872879638699056271355696758097', '-0.00566575519125872879638699056271355696758097875409951260368210651006', 44, 1); - T('52101710101744937632626526544984055.2507495489669041508372470444630234511783474876012526', '52101710101744937632626526544984055.25074954896690415083724704446302345117834748760125260024', 54, 6); - T('25552542841746347884157299301699166856285838610487.074735318379', '25552542841746347884157299301699166856285838610487.074735318379', 13, 4); - T('0', '-0.00000000000000000000000008442227169', 0, 5); - T('0', '-0.000000000000000000000000000000000000000000000024981374014605917033767473869314720387745536', 7, 2); - T('-480402927391768064318296499265102782166804733100958844081491000.164525046348783775063556224', '-480402927391768064318296499265102782166804733100958844081491000.16452504634878377506355622448905', 27, 6); - T('-83963278511727947.84244986971165729356', '-83963278511727947.8424498697116572935579418275332796753821475270524', 20, 3); - T('905516486335617027566122447589928241315669260318', '905516486335617027566122447589928241315669260318', 35, 4); - T('6552963687555211427868764317.90444524', '6552963687555211427868764317.90444524617', 8, 1); - T('-0.0000000000000000000000000000000000000296558323', '-0.0000000000000000000000000000000000000296558322254714710784144978368282230551424514', 46, 0); - T('71233459565941813768643527698052038451814432324674330534.182221666', '71233459565941813768643527698052038451814432324674330534.182221665956151724061357615822583899564696', 9, 0); - T('-0.000000000000000000000000000000000000000007692392', '-0.000000000000000000000000000000000000000007692392232033940021796786860993673', 48, 2); - T('0.0000004142741301072051705173415526', '0.000000414274130107205170517341552625080742', 34, 4); - T('0.00000000000000000000000000000049', '0.0000000000000000000000000000004844225578184253767706840696504802592', 32, 0); - T('0', '0.00000000000000000000000000000000000000000000586004362384730418793774932852260308', 42, 5); - T('0.000000000000000000000000000000000057244859768', '0.000000000000000000000000000000000057244859768035439766499099449028148846', 45, 5); - T('-827141688560282316577471043529435271414984', '-827141688560282316577471043529435271414984', 27, 2); - T('-368402916220866.36823893036045234503764', '-368402916220866.36823893036045234503764172264459272073949130478550198453350142034438121269721972', 23, 5); - T('9103003038081670721316405', '9103003038081670721316405', 18, 6); - T('-7852165677474979.5938719858816080949974229232217347241', '-7852165677474979.59387198588160809499742292322173472401655014999447181095216397', 37, 0); - T('-6715185377564.74139538353174075359773259963669721907215595224', '-6715185377564.7413953835317407535977325996366972190721559522323030678428100131570087002950444421', 47, 0); - T('1706349694.76350749557800040706127419362257045545428491995', '1706349694.763507495578000407061274193622570455454284919951774181697932220714269', 47, 4); - T('78588826016299437743619705479876210302676979259827058565445', '78588826016299437743619705479876210302676979259827058565445', 30, 4); - T('0.000000000001', '0.000000000000000000001', 12, 2); - T('-2589582973458706776296834369656361634439983', '-2589582973458706776296834369656361634439983', 39, 0); - T('1743441368337597162867911.2951052396023395109004737465489', '1743441368337597162867911.29510523960233951090047374654895392832378911231920027143594963', 31, 3); - T('-73199678471', '-73199678471', 3, 0); - T('0', '0.00000000000000000000000000000000000000000003', 40, 1); - T('0.0000000000000000000000000000000004667447051117350698', '0.000000000000000000000000000000000466744705111735069864674296158720400075859650953', 52, 3); - T('-0.000000000007594399656167355193566547921', '-0.0000000000075943996561673551935665479215549769984862601569756133629823648103539458', 39, 2); - T('3.1652680597256250889013415555546409571597090799265', '3.1652680597256250889013415555546409571597090799264826416835791052587978940383354082674008433382', 49, 5); - T('50502759777095272980458734330295487385.5034260436783855', '50502759777095272980458734330295487385.5034260436783854754464126887951593337', 16, 2); - T('-349476928883536309320539866916636955806193888951300354548141473494386', '-349476928883536309320539866916636955806193888951300354548141473494386', 55, 1); - T('841906075761357751506861189609878618918101934357106', '841906075761357751506861189609878618918101934357106', 25, 3); - T('-59181751544129813715475076424907785097207348427962139893929324499', '-59181751544129813715475076424907785097207348427962139893929324499', 35, 2); - T('-1521196888137155531754333457458022000831356615', '-1521196888137155531754333457458022000831356615', 41, 3); - T('0', '-0.000000000000000000000000000000000000009', 8, 4); - T('-8289795629.1717218118944', '-8289795629.171721811894356069463885446122', 13, 0); - T('-0.000000000000223889609679829899532021178692653007372269973', '-0.0000000000002238896096798298995320211786926530073722699726206380829817413519982043525', 57, 6); - T('-7258143388738798481910452159781024994720650112469214442658774256937667959953614727386289', '-7258143388738798481910452159781024994720650112469214442658774256937667959953614727386289', 22, 2); - T('-359558549295372353924483405244841350664470.360298499922130388371586275901555831355657233897572726855', '-359558549295372353924483405244841350664470.360298499922130388371586275901555831355657233897572726855', 58, 1); - T('-0.000000000000000000000000000000000000000000237870554', '-0.0000000000000000000000000000000000000000002378705539415969705231398235316441614230302', 52, 0); - T('0.2393241059673690394127252863371489989987293405009221276', '0.2393241059673690394127252863371489989987293405009221275481644601266835423187167949827392', 55, 0); - T('-689590028428083520425141553232150041665855900447213740339177308861649878', '-689590028428083520425141553232150041665855900447213740339177308861649878', 18, 0); - T('0.000000078110011766889375023084610838180269', '0.0000000781100117668893750230846108381802696891356733714996828302', 42, 1); - T('-0.0000000739636485110881770771812970480784085432490937791404', '-0.000000073963648511088177077181297048078408543249093779140448174989076410926', 58, 6); - T('839622336342426602772908498745047009924846092679316564429', '839622336342426602772908498745047009924846092679316564429', 57, 6); - T('-0.0000000000000000000004456538488579841701862456826545336942', '-0.00000000000000000000044565384885798417018624568265453369416231186707532116823535364936', 58, 5); - T('5457344694848495013.70758306793373443062303840408774687096091471', '5457344694848495013.70758306793373443062303840408774687096091470997296538132975451', 45, 6); - T('278810146198025452859993052541559705412200658428450141592249279860660994', '278810146198025452859993052541559705412200658428450141592249279860660994', 53, 6); - T('-0.0000000000000000000000000000001', '-0.0000000000000000000000000000000008', 31, 0); - T('0.00000003870782543245692370508', '0.000000038707825432456923705079513311568', 29, 2); - T('0.00000000000000028905839185125858911474408672313456633629', '0.00000000000000028905839185125858911474408672313456633629272919468390905836955324418317503957', 56, 4); - T('-51357247691860499903562435980838.792767', '-51357247691860499903562435980838.79276727924860634529292348327', 6, 4); - T('36984058670396140.944950463552746216537895105829140616432610621131124', '36984058670396140.9449504635527462165378951058291406164326106211311240265980364777353', 52, 3); - T('4324247714235544003727336020912959171914181632133', '4324247714235544003727336020912959171914181632133', 26, 1); - T('-0.0000000000000000000000000000000000000000000000008937166', '-0.0000000000000000000000000000000000000000000000008937166', 55, 1); - T('-2442300682026632859154542947848984516683026198562824', '-2442300682026632859154542947848984516683026198562824', 31, 6); - T('0.0000000000000000000040559', '0.000000000000000000004055940890427693898528647800483601', 25, 4); - T('-0.0000000000000000000000000000000000000000000000005', '-0.000000000000000000000000000000000000000000000000533883534094325559019527373422252174198', 49, 1); - T('-601022544723155145451207670010213497437.14164798', '-601022544723155145451207670010213497437.1416479757860807842495953660628318061595534', 8, 6); - T('70433022521741511411711454.3981934256304734737098098', '70433022521741511411711454.398193425630473473709809802903058576643802930136306958583', 26, 6); - T('10908799783188529757366993500335', '10908799783188529757366993500335', 21, 3); - T('87532.4007713298943414092792987798224322373504067', '87532.400771329894341409279298779822432237350406676898594464428537143159348548268047779886855749206', 43, 0); - T('-0.519371276718530514624846800754582116141529266132757', '-0.5193712767185305146248468007545821161415292661327570320784267894852821486214528653', 51, 1); - T('9843596527442895375096439245255836073.70931062242142483683526808', '9843596527442895375096439245255836073.70931062242142483683526807533268520820713372314', 26, 0); - T('0.001', '0.0000000000000058501267284656327224026025031332724569171393523546241494751676984130276', 3, 2); - T('88204244847517941308668679833512765096788828649032102210342660386515548133512234443', '88204244847517941308668679833512765096788828649032102210342660386515548133512234443', 9, 2); - T('-72474655403865728422919', '-72474655403865728422919', 25, 2); - T('-64978799280092373.2357486192905225486909493417592884977935811274', '-64978799280092373.23574861929052254869094934175928849779358112736784', 46, 3); - T('-3900549976428555791621079898632755518751734773176044166588963', '-3900549976428555791621079898632755518751734773176044166588963', 45, 5); - T('-0.000000000000000000000000000082479', '-0.00000000000000000000000000008247901689204830195155306799530867952682774163311949867', 34, 6); - T('0', '0.0000000000000000000000000338254327291878442621187444947666248001402914296565659898518000736', 11, 3); - T('-0.00000000223134', '-0.000000002231341114998828837864161402405342720671858261823364908867', 14, 6); - - // rounding mode 7 - T('-4227925468727766007369594003870427.86133603669917314695806481136062429', '-4227925468727766007369594003870427.86133603669917314695806481136062429149585050333617751', 35, 7); - T('0.00000000000000002542497815049223865530599542', '0.000000000000000025424978150492238655305995417803361817364414794153572487661433133', 44, 7); - T('-52231667.228724632', '-52231667.22872463243810129366255', 9, 7); - T('34077267364474763.91234860081333406989016992096282251', '34077267364474763.9123486008133340698901699209628225111620410327006274894046060867566994460704', 35, 7); - T('5856401617744968221752230029308.1679768661242918708685642495558141063641674034', '5856401617744968221752230029308.167976866124291870868564249555814106364167403351653', 46, 7); - T('23796511434278450866104444583677797487678290864898492636634411901159527', '23796511434278450866104444583677797487678290864898492636634411901159527', 49, 7); - T('0', '-0.00000000000000000001622749974913381', 8, 7); - T('63101238791571926526656526888', '63101238791571926526656526888', 26, 7); - T('119975362395419219788856351528506147606875253314643205183185766', '119975362395419219788856351528506147606875253314643205183185766', 37, 7); - T('0.00000000000000028638823981166558781214435', '0.0000000000000002863882398116655878121443495241084176650123383124435451', 41, 7); - T('0', '-0.0000000000000646493344101476775', 4, 7); - T('3727665898156798714702225969249372097434686068956916500942749774019588426536', '3727665898156798714702225969249372097434686068956916500942749774019588426536', 55, 7); - T('409593411642458946972739997054469022719146.491026', '409593411642458946972739997054469022719146.491025521359231357', 6, 7); - T('13404825779782337.686240571775407373089634963', '13404825779782337.686240571775407373089634962567081893468942784631003987766301470481820407103286888', 27, 7); - T('661581721939770480643', '661581721939770480643', 0, 7); - T('82201282103354391377948704606454107732823853693730778633', '82201282103354391377948704606454107732823853693730778632.679770307020989736730343202980605582', 0, 7); - T('188489334274192797369124659824920031586552510451', '188489334274192797369124659824920031586552510451', 20, 7); - T('-350373000061738168422367720730846856693416103657170981784.47171168192426', '-350373000061738168422367720730846856693416103657170981784.47171168192426', 14, 7); - T('-371822329041221965657417973472237384192854529035779701345758861333.911', '-371822329041221965657417973472237384192854529035779701345758861333.91125259284165', 3, 7); - T('11390.30218059', '11390.3021805893183128284582351157607918846791695198255651493155092893025770778456684', 8, 7); - T('31051565651391', '31051565651391', 10, 7); - T('3381673772647503796291366133103', '3381673772647503796291366133103', 24, 7); - T('543390727353666255169063924082693597248278069190643870027', '543390727353666255169063924082693597248278069190643870027', 55, 7); - T('799421038004579749157298710029180393', '799421038004579749157298710029180393', 9, 7); - T('-0.0362677922831722959112878701030537328697742', '-0.036267792283172295911287870103053732869774154760781501898753153437796985370382553866', 43, 7); - T('-0.00000000000000048840974104900508184409730782', '-0.00000000000000048840974104900508184409730782', 44, 7); - T('90721186387234427125851848111061056765611723546', '90721186387234427125851848111061056765611723546', 39, 7); - T('0.00000000000478987425349763447387328875752791010733067', '0.0000000000047898742534976344738732887575279101073306690331160727348729434112548998768887148899', 53, 7); - T('15590509654436423421185143897507920201916474372180041409856165500105', '15590509654436423421185143897507920201916474372180041409856165500105', 30, 7); - T('20.749566685219600998729078427300664316775', '20.7495666852196009987290784273006643167750133692770467181607553093280822', 39, 7); - T('-0.000053459060231372', '-0.00005345906023137227399335260530503765672935', 18, 7); - T('-0.0000000003951749339568017915631', '-0.000000000395174933956801791563099248827925205492855063788550039874086544657303197463564591312', 32, 7); - T('8679339310554212663278369614448693.5454104727306164118703439386963341', '8679339310554212663278369614448693.545410472730616411870343938696334073', 34, 7); - T('33955284728592200348127638127333126188369126163765426829286263844316', '33955284728592200348127638127333126188369126163765426829286263844316', 58, 7); - T('-594503494522354581672092284773632917525938683919588064506930195373570676846343387.84', '-594503494522354581672092284773632917525938683919588064506930195373570676846343387.8422460203946', 2, 7); - T('-0.000000000039360661299713', '-0.000000000039360661299713264121639691847249043522176561382860930019972250155868911494243265848', 24, 7); - T('772954079526310860071529507548873740833690851501083576478349475089452727853278468874693', '772954079526310860071529507548873740833690851501083576478349475089452727853278468874693', 43, 7); - T('0.0000000000000087453797413879451313', '0.000000000000008745379741387945131324297953447', 34, 7); - T('5367560449328479105254540606212332013053671843660775766151', '5367560449328479105254540606212332013053671843660775766151', 48, 7); - T('323195274385200326456762447968768', '323195274385200326456762447968768', 32, 7); - T('-0.00666873745951635736846493280695487641727423448', '-0.00666873745951635736846493280695487641727423447512328693008180656151418503780844889026', 47, 7); - T('-7926588167337833445785869654809557874339194445079754658952051495268464651', '-7926588167337833445785869654809557874339194445079754658952051495268464651', 52, 7); - T('773169576814793176793181528896362236450108', '773169576814793176793181528896362236450108', 30, 7); - T('-8.1575381767765005493134495350395', '-8.15753817677650054931344953503948694358980563360390907469324255712308578813630240549552277566', 31, 7); - T('-21.0687436857970456', '-21.068743685797045585476881980189937156684', 16, 7); - T('170893057097642104712842895333915433672.71614098604436028244004249890377265867813183634', '170893057097642104712842895333915433672.71614098604436028244004249890377265867813183634', 48, 7); - T('1419314989888991829914000521', '1419314989888991829914000521', 27, 7); - T('60.82455319459720635738568680187', '60.82455319459720635738568680186527959160858773466033409815105410886097854659665276583589', 29, 7); - T('-326121410879335855857666649461844584751.890652900789444294337811561299374410085', '-326121410879335855857666649461844584751.8906529007894442943378115612993744100850340106799465', 39, 7); - T('0', '-0.00000000047316992670949883926600553413571239606520662308124419529296046257305486386553', 9, 7); - T('8727742090301337651614326326111889945767014507', '8727742090301337651614326326111889945767014507', 7, 7); - T('-53786060748605241244291153266999830828105314220961448804386112379126610916027104677231615675462', '-53786060748605241244291153266999830828105314220961448804386112379126610916027104677231615675462', 41, 7); - T('-7291471902884803069229597050854712688481', '-7291471902884803069229597050854712688481', 38, 7); - T('847593479', '847593479', 4, 7); - T('1373363663030811404110606699087734488483568208061113004937904474604557886571038', '1373363663030811404110606699087734488483568208061113004937904474604557886571038', 51, 7); - T('-40747376548681307346900781782230386637811935441.3112009014674226146734340597796810731578811', '-40747376548681307346900781782230386637811935441.31120090146742261467343405977968107315788114674885', 43, 7); - T('-9195689298211729379676090128793323261891000554', '-9195689298211729379676090128793323261891000554', 35, 7); - T('-0.0034576620308478723296001292094731200618886', '-0.0034576620308478723296001292094731200618885915140945281', 43, 7); - T('-834830377500140623938088', '-834830377500140623938088', 13, 7); - T('-2591671475562784513632.7426072061600211', '-2591671475562784513632.7426072061600211449224236386965047917900134074059687266614653350608538539233', 16, 7); - T('-0.000000071830212114487276777707572429272192915812377', '-0.00000007183021211448727677770757242927219291581237659932896988676370766529', 51, 7); - T('-640413896696784439726742018298253474508645956359', '-640413896696784439726742018298253474508645956359', 17, 7); - T('-0.0000000007984874929607838512528277745379438139977', '-0.0000000007984874929607838512528277745379438139976936507024', 49, 7); - T('-191366559030669593366830590135909135496110802292432471355483754482684086882649187.03963614483', '-191366559030669593366830590135909135496110802292432471355483754482684086882649187.039636144827732224', 11, 7); - T('8142815084790919737688042342962162664546160121642099901931307232971548145567222', '8142815084790919737688042342962162664546160121642099901931307232971548145567222', 39, 7); - T('-332782287617659420418475853661', '-332782287617659420418475853661', 8, 7); - T('0.000000000000000090055750282893', '0.000000000000000090055750282893334403507', 30, 7); - T('-21214000845.333611178419231112230625322747176660692', '-21214000845.3336111784192311122306253227471766606919954698312144738447328491967907213627789511', 41, 7); - T('-3308503261988645767218602554122821282075149204084296957091595953533605', '-3308503261988645767218602554122821282075149204084296957091595953533605', 50, 7); - T('0.0000000000148313954826', '0.000000000014831395482560045753365765821761099871603901006599292947641903057294622382', 22, 7); - T('-2540286161517932530549634211256175558471.6859862264011445254812864800971', '-2540286161517932530549634211256175558471.685986226401144525481286480097095411420704429841593275576', 32, 7); - T('53072382348521019562214270117475451722847127807.9201176137241464512', '53072382348521019562214270117475451722847127807.920117613724146451247168428976198', 19, 7); - T('254629197539322919418061.82042110551640609842973441', '254629197539322919418061.8204211055164060984297344124295121369080688739190169652019849566879168623229', 26, 7); - T('-0.000000000000000078419972351846537383122302261056', '-0.0000000000000000784199723518465373831223022610558577146950907022375450619', 48, 7); - T('11595408011.00123572', '11595408011.001235716255147528059507314235781168368767750180889928736025154811960130245171531056', 8, 7); - T('-88737685279585592831151984911995996', '-88737685279585592831151984911995996', 34, 7); - T('-37552253678559041341461701227356.158965', '-37552253678559041341461701227356.15896541954380463879908913349547402024', 6, 7); - T('9003148188594382524113049819941839640533061131950519887235499386135779479186433401692', '9003148188594382524113049819941839640533061131950519887235499386135779479186433401692', 28, 7); - T('5361439166674927508874087692620586593056959', '5361439166674927508874087692620586593056959', 27, 7); - T('0.000000000091', '0.00000000009088521688422520393209050649016376675636278197884083029252', 12, 7); - T('-85657245717942136252098076569728416271774563165859', '-85657245717942136252098076569728416271774563165859', 43, 7); - T('-3646212560971909.35373247444', '-3646212560971909.3537324744426713329988288580585598165569188254140994718', 11, 7); - T('370765.6513425131872580849719776983168312523', '370765.651342513187258084971977698316831252349262543626', 37, 7); - T('-0.000000000000000000079137759978805203671743111106', '-0.00000000000000000007913775997880520367174311110627', 48, 7); - T('-1611465593139807523207984983928164779476993618071493833576191', '-1611465593139807523207984983928164779476993618071493833576191', 54, 7); - T('-0.00000000033726114', '-0.000000000337261144121803302303977879693673326581217799', 17, 7); - T('-6903218163', '-6903218163', 0, 7); - T('-7394201623023154', '-7394201623023154', 6, 7); - T('-89820218178368462032325999901068153419219023209648734123533475637571406377255460273403483', '-89820218178368462032325999901068153419219023209648734123533475637571406377255460273403483', 56, 7); - T('6856221590550350247215669709857430594517289.154687344282048067223977700265786705429299', '6856221590550350247215669709857430594517289.1546873442820480672239777002657867054292985437290849', 42, 7); - T('1713217233116965517209765946255483359142721898296301440743911736', '1713217233116965517209765946255483359142721898296301440743911736', 49, 7); - T('-61567856267375488815199698038892', '-61567856267375488815199698038892', 31, 7); - T('34856837444274112573644196165166306557489218761519232806183215580575570476', '34856837444274112573644196165166306557489218761519232806183215580575570476', 19, 7); - T('-605776974882763519', '-605776974882763519', 13, 7); - T('-47418341187456097944575634049467431694845063678', '-47418341187456097944575634049467431694845063678', 18, 7); - T('1585.955173007361693854365', '1585.95517300736169385436496480295446937143592132714724734106024847451264683205302947963649', 21, 7); - T('-0.000000000645133213415476611350444263216682276825945168', '-0.0000000006451332134154766113504442632166822768259451679249815370738204997714034783482', 54, 7); - T('8302757044275405219378536899241030582612132769226851500125963466033484914477.69666886019', '8302757044275405219378536899241030582612132769226851500125963466033484914477.6966688601893948', 11, 7); - T('45270612179603070143114444578079928392447807.32', '45270612179603070143114444578079928392447807.31953', 3, 7); - T('7301116759454965528151147816987787832077100563626120303568921', '7301116759454965528151147816987787832077100563626120303568921', 44, 7); - T('1347.918925815662323176162011734192369953734988907893741421192', '1347.9189258156623231761620117341923699537349889078937414211917111615784661239064', 57, 7); - T('2745551364781081262572434756', '2745551364781081262572434756', 25, 7); - T('-0.0000000000000000007702847033377973269515', '-0.0000000000000000007702847033377973269514520366', 40, 7); - T('-779091641487404784136567.4569597590049318948543232527454505450307', '-779091641487404784136567.4569597590049318948543232527454505450306884403', 40, 7); - T('0.0000000000000000454', '0.000000000000000045425771078016534055033094636873778207765101376805036792267244437277308175', 19, 7); - T('56037886202598118256341767914293907027232', '56037886202598118256341767914293907027232', 38, 7); - T('456832180283905827046262334942695632683335636856760196', '456832180283905827046262334942695632683335636856760196', 7, 7); - T('835408846081276629656740640207846703234335963484085602007567975275144', '835408846081276629656740640207846703234335963484085602007567975275144', 10, 7); - T('5892208545916340693141737610813531078984299948', '5892208545916340693141737610813531078984299948', 43, 7); - T('0.0000000000000000648486346789469454376605', '0.0000000000000000648486346789469454376604957149144419097073694775265833471038380610746092239', 41, 7); - T('262034975067781367618641670843831216012635510399715', '262034975067781367618641670843831216012635510399715', 48, 7); - T('0.0000000000001753084053965545624370536153934309', '0.0000000000001753084053965545624370536153934309', 46, 7); - T('322685018236508000449322148450559922708614699674162314336435015392855585932088', '322685018236508000449322148450559922708614699674162314336435015392855585932088', 6, 7); - T('-0.0000751245672641759875031068805293967164447087335563', '-0.00007512456726417598750310688052939671644470873355631128944237042822656', 52, 7); - T('119777479.69030463302136982513942340039304882524620509', '119777479.69030463302136982513942340039304882524620508857791460878231096405985356133971', 44, 7); - T('35553204237558471570629583797360426827090262465551670477505712708774604078722600420011', '35553204237558471570629583797360426827090262465551670477505712708774604078722600420011', 19, 7); - T('-291943404908366202882510361495002297845826668767795046772085261154931', '-291943404908366202882510361495002297845826668767795046772085261154931', 35, 7); - T('-4534915638090657787513612506781133713200439475.0867572558553302530492308505380074065078701', '-4534915638090657787513612506781133713200439475.086757255855330253049230850538007406507870065', 43, 7); - T('-4628007825261462798342072.911906258290433814410271477744026909511632016076', '-4628007825261462798342072.91190625829043381441027147774402690951163201607620251591', 48, 7); - T('4.4783487885384154042674977520386158763493723', '4.478348788538415404267497752038615876349372276082911556304299004285541926525363120311938399325', 43, 7); - T('994636826214072644153969326141', '994636826214072644153969326141', 15, 7); - T('-5505235444849638686149329852308536500811963484639683908157841253614298429625', '-5505235444849638686149329852308536500811963484639683908157841253614298429625', 4, 7); - T('614148606644556790188235.0255904986548346451861728211971653475326466503852137269737', '614148606644556790188235.0255904986548346451861728211971653475326466503852137269737', 59, 7); - T('2193724261100974203871998310680424123017389161396709538479', '2193724261100974203871998310680424123017389161396709538479', 57, 7); - T('-1956878070881025122270372.337521825043239627169969252259537214', '-1956878070881025122270372.337521825043239627169969252259537214113849107454904456961545052', 36, 7); - T('-0.000000085351', '-0.00000008535110476842370597384', 12, 7); - T('641105.998789180105078291507747673', '641105.9987891801050782915077476729519884908863536991235498773209022192197109739345514224', 27, 7); - T('-21.197585767523889474671349269775310955379095', '-21.197585767523889474671349269775310955379095140158', 42, 7); - T('116146.494005975894598315121282665834747215927459854167', '116146.49400597589459831512128266583474721592745985416695', 48, 7); - T('7485928.847855308413604360975395065166506118993796', '7485928.8478553084136043609753950651665061189937957371746846213016715624539634852', 42, 7); - T('6076054393834960260724553991126463655232706.998159020156971123267673392190851428162156', '6076054393834960260724553991126463655232706.9981590201569711232676733921908514281621564918', 42, 7); - T('-826178119212535027', '-826178119212535027', 15, 7); - T('-208338831092277473', '-208338831092277473', 6, 7); - T('69243933206144181076562868181368044771717426832955483549265453790367.885941195178679', '69243933206144181076562868181368044771717426832955483549265453790367.8859411951786792008', 15, 7); - T('-2967', '-2967', 4, 7); - T('-41501138725996819959124846804770912118526003045.185796167930212824055822', '-41501138725996819959124846804770912118526003045.185796167930212824055821995991', 25, 7); - T('-18057852043794248196575675918109156108791090767', '-18057852043794248196575675918109156108791090767', 20, 7); - T('281718409203896229312414254327976677356070865725930122957218157', '281718409203896229312414254327976677356070865725930122957218157', 58, 7); - T('-57791881810902060710765', '-57791881810902060710765', 6, 7); - T('897687437107677390019954648718257777584106700283464841488202716343791452515', '897687437107677390019954648718257777584106700283464841488202716343791452515', 15, 7); - T('-2074411348618460421873509155369584886131842509398520763333892604629272098166', '-2074411348618460421873509155369584886131842509398520763333892604629272098166', 56, 7); - T('6412163494823707737671130186405578927125993163390203934159490599840161448487', '6412163494823707737671130186405578927125993163390203934159490599840161448487', 38, 7); - T('2570935346175677196878', '2570935346175677196878', 9, 7); - T('2922237829561344881354422214117488.09791032403417844482040226257725168516472', '2922237829561344881354422214117488.0979103240341784448204022625772516851647155', 41, 7); - T('-360113314811150792166325832443', '-360113314811150792166325832443', 27, 7); - T('60014328059462865087436739179650691113359513', '60014328059462865087436739179650691113359513', 19, 7); - T('-0.000000000006304400685027434212478867369219111834780823862', '-0.000000000006304400685027434212478867369219111834780823862330243813719233306', 57, 7); - T('-7205740883575345558.3035609312', '-7205740883575345558.303560931199598', 12, 7); - T('53085840415323322403425172031495', '53085840415323322403425172031495', 13, 7); - T('501486.7129443291838593479218597548273888277689050437', '501486.71294432918385934792185975482738882776890504370426', 46, 7); - T('0.000000000000000908932850021752246249043079995293384916', '0.00000000000000090893285002175224624904307999529338491636808', 54, 7); - T('-0.00000000043256345933043079995692824366141', '-0.0000000004325634593304307999569282436614050910377417779512451575', 41, 7); - T('-57356950707173599793269435282846849386194446656814419867723389602143804102082390505', '-57356950707173599793269435282846849386194446656814419867723389602143804102082390505', 54, 7); - T('708838339642304601261089699220144910531439729426156936490112289', '708838339642304601261089699220144910531439729426156936490112289', 34, 7); - T('-0.0046078939476187', '-0.0046078939476187097406433991788939813592464396622249737415711345731', 16, 7); - T('-0.12323576577', '-0.123235765770465267088639292854754', 11, 7); - T('0.00000000000000000095580555623555550814768224905099', '0.00000000000000000095580555623555550814768224905099420276782483589081456723662215426756599134555', 50, 7); - T('-2570339352145966269634677761640260169032119', '-2570339352145966269634677761640260169032119', 28, 7); - T('38236133483427843764612112447', '38236133483427843764612112447', 15, 7); - T('-336931025688483976222819902541535', '-336931025688483976222819902541535', 4, 7); - T('-9131418940.626118397155251', '-9131418940.6261183971552511339709100767636897756353245436849948601735074456013276755274', 15, 7); - T('-0.5390546818595212848113530704801476758617232550071935366093', '-0.539054681859521284811353070480147675861723255007193536609276138828242044691640655011489223249255041', 58, 7); - T('-71416755738083832515056950347140525452730269982573.3282170765632710695719312', '-71416755738083832515056950347140525452730269982573.32821707656327106957193116691737786397252', 25, 7); - T('0.00000000000000000255991442876714392607715869138', '0.000000000000000002559914428767143926077158691380360601109197', 48, 7); - T('0.0008012312849268656243687029355101489200440567', '0.0008012312849268656243687029355101489200440566607892247', 46, 7); - T('244.1299004975136113934851571373', '244.129900497513611393485157137342367594', 28, 7); - T('8873145.130771366', '8873145.13077136613329539431464116435056918385440213780105794207728379404299861', 9, 7); - T('90421830817071276704486549442201016086558530905157803796367055646.90135601654869', '90421830817071276704486549442201016086558530905157803796367055646.90135601654868751923854163', 14, 7); - T('-36.526533442608873306192392', '-36.5265334426088733061923917926640502233384568457377017150304742119162081602297', 24, 7); - T('7756944055327836674900630471616647295.05850876072750123732246', '7756944055327836674900630471616647295.0585087607275012373224596', 23, 7); - T('0.000000000000045081619273154020727317734277869142539661', '0.0000000000000450816192731540207273177342778691425396607541', 54, 7); - T('-6657777084968602905612118294092900774663152', '-6657777084968602905612118294092900774663152', 43, 7); - T('-0.000000000000000005188433862917015864715902', '-0.0000000000000000051884338629170158647159019984830235182423', 42, 7); - T('0', '0.00000000000000000317', 15, 7); - T('-0.4149264099071581632611228387619456297727645178621012', '-0.414926409907158163261122838761945629772764517862101198886202115978635194007190868314555521133717701', 52, 7); - T('-6864484.8819017398097', '-6864484.88190173980971584504271598165', 13, 7); - T('-0.000000000000000001679161583143115920667389957545331', '-0.000000000000000001679161583143115920667389957545331037811592028938944353273214379643791129', 51, 7); - T('2757136.4258217552704766493458823230944375263657904360372', '2757136.4258217552704766493458823230944375263657904360372469', 49, 7); - T('73592128777516437498892', '73592128777516437498892', 16, 7); - T('0.07257197707618528010135723118752', '0.07257197707618528010135723118751971071518538894191478337895115762517662900499752291', 33, 7); - T('-0.000004438131', '-0.0000044381314450238844267302840448432030161991750345428173', 12, 7); - T('-595708298116615541357228353744113762188591036583833859568474759300695041038994506', '-595708298116615541357228353744113762188591036583833859568474759300695041038994506', 26, 7); - T('-199080228621514339171672812459767795971.316371238367118391139875956069', '-199080228621514339171672812459767795971.316371238367118391139875956069353409632336022093730932235', 30, 7); - T('373244977600891908151269122085847490535520152535249519596826077513', '373244977600891908151269122085847490535520152535249519596826077513', 29, 7); - T('-5639594880101200527887384823782946761462906320.140387160404385845875304739793220257', '-5639594880101200527887384823782946761462906320.140387160404385845875304739793220257', 36, 7); - T('-0.0000000000087947389416162510202344444769', '-0.000000000008794738941616251020234444476890906037567993523566767799162529587006731256066852047615', 40, 7); - T('-2811163289244542298.314552033404146359617103886433288499526162438312', '-2811163289244542298.314552033404146359617103886433288499526162438312107482463', 48, 7); - T('71312169853960180892335621188140367568370992911790488', '71312169853960180892335621188140367568370992911790488', 6, 7); - T('-62901173098.92897012666077517055378671774520634', '-62901173098.92897012666077517055378671774520634147', 35, 7); - T('-225945189426218018978712161605939563187347', '-225945189426218018978712161605939563187347', 43, 7); - T('0.00000000000007', '0.0000000000000670546442643248060364526003698781540676945356538481', 14, 7); - T('-80283941091068212735380828801414422106056308023', '-80283941091068212735380828801414422106056308023', 49, 7); - T('-582347756606942164157330806711292105702409851721143752567190054087620149322902471723806842', '-582347756606942164157330806711292105702409851721143752567190054087620149322902471723806842', 1, 7); - T('-789926098528886434848959110622484454631207369243255613772447578642734', '-789926098528886434848959110622484454631207369243255613772447578642734', 47, 7); - T('-635798687539890156072639669428587757239', '-635798687539890156072639669428587757239', 8, 7); - T('-772569903906438796789911092772836.040164878760556480065413195516497', '-772569903906438796789911092772836.0401648787605564800654131955164969017', 33, 7); - T('27480851396278530398639821633448999360391209592648305694853077032079.542019003323', '27480851396278530398639821633448999360391209592648305694853077032079.542019003323244917259654092', 12, 7); - T('-37187774977797692205929824486204948247323', '-37187774977797692205929824486204948247323', 8, 7); - T('-3066994074128464238846827107369679938251453783778612958797836976139626988170384146746054', '-3066994074128464238846827107369679938251453783778612958797836976139626988170384146746054', 25, 7); - T('1080460621508171861173510076169499142582659362076277316', '1080460621508171861173510076169499142582659362076277316', 26, 7); - - T('-815303438910393610000000000000000000000000000', '-815303438910393610000000000000000000000000000.5', 0, 7); - T('48079804879135055337410501154945563557501499846191760613365317572636043210233866737200001', '48079804879135055337410501154945563557501499846191760613365317572636043210233866737200000.5', 0, 7); - T('775141321458031580151353003447938403271713528287267233801607476638641728594600000000001', '775141321458031580151353003447938403271713528287267233801607476638641728594600000000000.5', 0, 7); - T('-3246099003639468003580507000000000000000000000000000000000000000000000000000000000000000000000000000', '-3246099003639468003580507000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('616052744557652711', '616052744557652710.5', 0, 7); - T('-47298707260000000000000000000000000000000', '-47298707260000000000000000000000000000000.5', 0, 7); - T('431370739475777039213491701837719630211035950221951900000000000000000001', '431370739475777039213491701837719630211035950221951900000000000000000000.5', 0, 7); - T('54683100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '54683100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('672783487870821678831521822264427999625400000000000000000000000000000000000000001', '672783487870821678831521822264427999625400000000000000000000000000000000000000000.5', 0, 7); - T('85750000000000000000000000000000000000000001', '85750000000000000000000000000000000000000000.5', 0, 7); - T('-357280726879877087440504485199000000000000000000000', '-357280726879877087440504485199000000000000000000000.5', 0, 7); - T('-4341299477000000000000000000000', '-4341299477000000000000000000000.5', 0, 7); - T('31902000001', '31902000000.5', 0, 7); - T('333458122140379389691720067000000000000000000000000000000000000000000001', '333458122140379389691720067000000000000000000000000000000000000000000000.5', 0, 7); - T('-459839025400000000000000000000', '-459839025400000000000000000000.5', 0, 7); - T('-82390000000000', '-82390000000000.5', 0, 7); - T('76701', '76700.5', 0, 7); - T('190430490057932227000000000000000000000000000000000000001', '190430490057932227000000000000000000000000000000000000000.5', 0, 7); - T('60159411740605592996051862591038032930184607684088677320000000000000000000000001', '60159411740605592996051862591038032930184607684088677320000000000000000000000000.5', 0, 7); - T('-2234900000', '-2234900000.5', 0, 7); - T('56189665877093832601689082910000000000000000000000000000000000000001', '56189665877093832601689082910000000000000000000000000000000000000000.5', 0, 7); - T('2320000000000000000000000000001', '2320000000000000000000000000000.5', 0, 7); - T('-6305981611547961162835048322675738149574948489012480000000000000', '-6305981611547961162835048322675738149574948489012480000000000000.5', 0, 7); - T('7135722984978446900000000000000000000000000000000000001', '7135722984978446900000000000000000000000000000000000000.5', 0, 7); - T('7739620000000000000000000000000000000000000000000000001', '7739620000000000000000000000000000000000000000000000000.5', 0, 7); - T('-7310071091565097458378697755962864041334940666867342517847595229165394387202247229680000000', '-7310071091565097458378697755962864041334940666867342517847595229165394387202247229680000000.5', 0, 7); - T('5138337172269533148524367880141880518489245800000000000001', '5138337172269533148524367880141880518489245800000000000000.5', 0, 7); - T('-6000', '-6000.5', 0, 7); - T('463879090754017750000000000000001', '463879090754017750000000000000000.5', 0, 7); - T('-629850000000000000000', '-629850000000000000000.5', 0, 7); - T('-205429044500000000000000000000', '-205429044500000000000000000000.5', 0, 7); - T('-5416257015618874559905147873000000000000000000000000000000000000000000000000', '-5416257015618874559905147873000000000000000000000000000000000000000000000000.5', 0, 7); - T('623364421289248201317000000000000001', '623364421289248201317000000000000000.5', 0, 7); - T('911141136528601', '911141136528600.5', 0, 7); - T('-276055672501612195718314543393745315761189100000', '-276055672501612195718314543393745315761189100000.5', 0, 7); - T('-51740866419136700582070000', '-51740866419136700582070000.5', 0, 7); - T('56999862161113789759865220000000000000000000000000000000000000000001', '56999862161113789759865220000000000000000000000000000000000000000000.5', 0, 7); - T('-4111633071145139947224365900000', '-4111633071145139947224365900000.5', 0, 7); - T('697451872400000000000000000000000000000000000000000000000000000000000000000000000000000001', '697451872400000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('5000000000000000000000001', '5000000000000000000000000.5', 0, 7); - T('5350000000000000000000000000000000000000000000000000000001', '5350000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('10529587347000000000000000000000000000000000000000001', '10529587347000000000000000000000000000000000000000000.5', 0, 7); - T('-2219716000000000000000000000000000', '-2219716000000000000000000000000000.5', 0, 7); - T('2211360517426407426481005085784959830631111751668394294258799150000000000001', '2211360517426407426481005085784959830631111751668394294258799150000000000000.5', 0, 7); - T('91550904625902200434312440338781865630142094511605342285084477183074410000000000000000000000001', '91550904625902200434312440338781865630142094511605342285084477183074410000000000000000000000000.5', 0, 7); - T('658054801757836432123543171404589184297504018642564438772090020000000000000000000001', '658054801757836432123543171404589184297504018642564438772090020000000000000000000000.5', 0, 7); - T('79944791864921246971621269400000000000000000000001', '79944791864921246971621269400000000000000000000000.5', 0, 7); - T('360829991900000000000000000000000000000000000000000000000000000000000000000000000000000001', '360829991900000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-1480000000000000000000000000', '-1480000000000000000000000000.5', 0, 7); - T('-64280200000000', '-64280200000000.5', 0, 7); - T('-75061307733616254618964203889755925762439000000', '-75061307733616254618964203889755925762439000000.5', 0, 7); - T('44130000000000000000000001', '44130000000000000000000000.5', 0, 7); - T('44702568841946912396571635908221096745886412397401280570000000000000000000000000001', '44702568841946912396571635908221096745886412397401280570000000000000000000000000000.5', 0, 7); - T('604039501485544598558831356363400000000000000001', '604039501485544598558831356363400000000000000000.5', 0, 7); - T('-19917984485520', '-19917984485520.5', 0, 7); - T('-311996565804449030000000000000000000000000000000000000000000000000000000000000000', '-311996565804449030000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-173984786383490515959556081806759606423524092895768000000', '-173984786383490515959556081806759606423524092895768000000.5', 0, 7); - T('-53469189427189740866342899750820440774650016000000000000000000000000000000000000000000000000', '-53469189427189740866342899750820440774650016000000000000000000000000000000000000000000000000.5', 0, 7); - T('-75', '-75.5', 0, 7); - T('27983400000000000000000001', '27983400000000000000000000.5', 0, 7); - T('-55866209', '-55866209.5', 0, 7); - T('-4236500000000', '-4236500000000.5', 0, 7); - T('2698000000000000000000001', '2698000000000000000000000.5', 0, 7); - T('176755986000000000000000000000000000000000000000000000001', '176755986000000000000000000000000000000000000000000000000.5', 0, 7); - T('10061938000001', '10061938000000.5', 0, 7); - T('-6910178749421869055443921431000000000', '-6910178749421869055443921431000000000.5', 0, 7); - T('3577828651898578960680400000000000000000000000000000000000000000000000001', '3577828651898578960680400000000000000000000000000000000000000000000000000.5', 0, 7); - T('68020066499785661939171192017417847730323210000000000000000000000000000000000001', '68020066499785661939171192017417847730323210000000000000000000000000000000000000.5', 0, 7); - T('-670000000000000000000000000000', '-670000000000000000000000000000.5', 0, 7); - T('-40412630000000000000', '-40412630000000000000.5', 0, 7); - T('-61065894754899019888087081382802643548863976547845002280076808300000000000000', '-61065894754899019888087081382802643548863976547845002280076808300000000000000.5', 0, 7); - T('100000001', '100000000.5', 0, 7); - T('-14822039000000000000000000000000', '-14822039000000000000000000000000.5', 0, 7); - T('-63700', '-63700.5', 0, 7); - T('-15144885754320000000000000000', '-15144885754320000000000000000.5', 0, 7); - T('-5272200000000000000000', '-5272200000000000000000.5', 0, 7); - T('-3247040000000000000', '-3247040000000000000.5', 0, 7); - T('-2681260809546501000', '-2681260809546501000.5', 0, 7); - T('87599201647856572613610170000000000000000000000000000000000000001', '87599201647856572613610170000000000000000000000000000000000000000.5', 0, 7); - T('250000000000000000000000000000000000000000001', '250000000000000000000000000000000000000000000.5', 0, 7); - T('14130422050230001', '14130422050230000.5', 0, 7); - T('-215000000000000000000000000000000000000000000000000000000000000000000000000', '-215000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-43726827420000000', '-43726827420000000.5', 0, 7); - T('-4800000000000000000000000000000000000000000000000000000000000000000', '-4800000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-7300000000000000000000000000', '-7300000000000000000000000000.5', 0, 7); - T('491352128092860358920632352122032679985453000001', '491352128092860358920632352122032679985453000000.5', 0, 7); - T('-882188546069284263665240261471556461467006545965824525162469092995249760000', '-882188546069284263665240261471556461467006545965824525162469092995249760000.5', 0, 7); - T('-85741667839249074', '-85741667839249074.5', 0, 7); - T('-527599500272614000000000000000000000000000000000000000000000000000000000000000000000000000000000', '-527599500272614000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-832820000000000', '-832820000000000.5', 0, 7); - T('-198601973381063265872709695924943530652918000000000000000000', '-198601973381063265872709695924943530652918000000000000000000.5', 0, 7); - T('-10000', '-10000.5', 0, 7); - T('-673944669918113000000000000000000000000000000', '-673944669918113000000000000000000000000000000.5', 0, 7); - T('-84188225', '-84188225.5', 0, 7); - T('771154817579711197000000000000000000000000000000000000000000000000001', '771154817579711197000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-87389583669272781200000000000000000000000000000000000', '-87389583669272781200000000000000000000000000000000000.5', 0, 7); - T('2626469664216538014114045286014123593449500000001', '2626469664216538014114045286014123593449500000000.5', 0, 7); - T('-696131077975000000000000', '-696131077975000000000000.5', 0, 7); - T('-78690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '-78690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-442122610891418980859993032200000', '-442122610891418980859993032200000.5', 0, 7); - T('5661090000000000000000000000000000000000000000000000000000000000000000000000000000001', '5661090000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-407000000000000000000', '-407000000000000000000.5', 0, 7); - T('729350422974116892063715545463978850831800000000001', '729350422974116892063715545463978850831800000000000.5', 0, 7); - T('637954990213103000000001', '637954990213103000000000.5', 0, 7); - T('-1138365762514721521483834034584523726374412779304481429041180049963600000', '-1138365762514721521483834034584523726374412779304481429041180049963600000.5', 0, 7); - T('2475696728487804739525182918139219026008027679054000000000000000000000000000000000001', '2475696728487804739525182918139219026008027679054000000000000000000000000000000000000.5', 0, 7); - T('66193237237200326100000000000000000001', '66193237237200326100000000000000000000.5', 0, 7); - T('663179971604113808385191042094969369727970974320403970845752700000000001', '663179971604113808385191042094969369727970974320403970845752700000000000.5', 0, 7); - T('596157270311242', '596157270311241.5', 0, 7); - T('-430859454062137256578640000000000000000000000000000000000000000', '-430859454062137256578640000000000000000000000000000000000000000.5', 0, 7); - T('7032813000000000001', '7032813000000000000.5', 0, 7); - T('767314152225968313318624830508438163176729385050170000000000000000001', '767314152225968313318624830508438163176729385050170000000000000000000.5', 0, 7); - T('-321648005175685895332610984400000000000', '-321648005175685895332610984400000000000.5', 0, 7); - T('-5914848242008475427391535555998338828544179518249385611394025548931079438027758333803040000000000', '-5914848242008475427391535555998338828544179518249385611394025548931079438027758333803040000000000.5', 0, 7); - T('73480016864560536978879028863212252705530701', '73480016864560536978879028863212252705530700.5', 0, 7); - T('8976064818931304755883643401472118930622270000000000000001', '8976064818931304755883643401472118930622270000000000000000.5', 0, 7); - T('-5079754732761006567963078886040778070', '-5079754732761006567963078886040778070.5', 0, 7); - T('-51002521076071416214838521445923939000000000', '-51002521076071416214838521445923939000000000.5', 0, 7); - T('8684049955981816069703979854267267479779343491340480759376275884260000000000000000000000000001', '8684049955981816069703979854267267479779343491340480759376275884260000000000000000000000000000.5', 0, 7); - T('37507194800178617805104432695868625191287264624719442564304569000000000000000000000000000000001', '37507194800178617805104432695868625191287264624719442564304569000000000000000000000000000000000.5', 0, 7); - T('-4281839065682230128346600112666094892582742848537366052855118901071834009400000000000000', '-4281839065682230128346600112666094892582742848537366052855118901071834009400000000000000.5', 0, 7); - T('-333000', '-333000.5', 0, 7); - T('-502583575785454685986915469822211140422238465305000000000000000000000000000000000000', '-502583575785454685986915469822211140422238465305000000000000000000000000000000000000.5', 0, 7); - T('-32030575969596778652213137431653825274000000000000000000', '-32030575969596778652213137431653825274000000000000000000.5', 0, 7); - T('-4506117101680962000000000000000000000000', '-4506117101680962000000000000000000000000.5', 0, 7); - T('-64730463575631254944664602047280130000000000000000000000000000000000000', '-64730463575631254944664602047280130000000000000000000000000000000000000.5', 0, 7); - T('27570663944600021244014689614081019825668139000000000000000000000000001', '27570663944600021244014689614081019825668139000000000000000000000000000.5', 0, 7); - T('-350302102100000000000000000', '-350302102100000000000000000.5', 0, 7); - T('-3918501626000000000', '-3918501626000000000.5', 0, 7); - T('51812774862668048505100000000000000000000000000000000000000000000000000000000001', '51812774862668048505100000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-61696491490996741116958188157141279933341663428216950000000000000000000000', '-61696491490996741116958188157141279933341663428216950000000000000000000000.5', 0, 7); - T('4656808510000000000000000000000000000000000000000000000000000000000000000001', '4656808510000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('23272197523886798346038846952829185419450839280000000000000000000000000000000000000001', '23272197523886798346038846952829185419450839280000000000000000000000000000000000000000.5', 0, 7); - T('4065544662345173976170000000000000000000000000000000001', '4065544662345173976170000000000000000000000000000000000.5', 0, 7); - T('-422635258000000000000000000000000000000000000000000000000000', '-422635258000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-3582000', '-3582000.5', 0, 7); - T('7740826542065848739126877465966868569935787226324870000000000000000001', '7740826542065848739126877465966868569935787226324870000000000000000000.5', 0, 7); - T('1614965644012243386199869835574326000000001', '1614965644012243386199869835574326000000000.5', 0, 7); - T('-20000', '-20000.5', 0, 7); - T('-2291933618897112688229402464046600000000000000000000000000000000000000000000000000000000000000', '-2291933618897112688229402464046600000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-663605069281623297326832485568849000000000000000000000000000000000000000000000000000000000000000000', '-663605069281623297326832485568849000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('1939060273775317149434400000000000000000000000000000000000000000000000000000000000000000000001', '1939060273775317149434400000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-726114440793216017690000000000000000000000', '-726114440793216017690000000000000000000000.5', 0, 7); - T('-8529164154875627047383959874881458179234088946000000000000000000000000000000000000000000000000000', '-8529164154875627047383959874881458179234088946000000000000000000000000000000000000000000000000000.5', 0, 7); - T('359551952970277110582000000000000000000000000000000000001', '359551952970277110582000000000000000000000000000000000000.5', 0, 7); - T('-6822800000000000000000000000000000000000000000000000', '-6822800000000000000000000000000000000000000000000000.5', 0, 7); - T('28024094231179167233916852000000000000000000000000000000001', '28024094231179167233916852000000000000000000000000000000000.5', 0, 7); - T('-5768619642107599734543714041179604138353000000000000', '-5768619642107599734543714041179604138353000000000000.5', 0, 7); - T('-4336937232847962038320625210133958133684710802758818489207914168472208196240530780800000', '-4336937232847962038320625210133958133684710802758818489207914168472208196240530780800000.5', 0, 7); - T('294276367161162465235912532501878152936548550758709465137169762240500722165978566', '294276367161162465235912532501878152936548550758709465137169762240500722165978565.5', 0, 7); - T('-5853377924485346629722284422247261298818024606786760212628942481993981005105147485025005541304000', '-5853377924485346629722284422247261298818024606786760212628942481993981005105147485025005541304000.5', 0, 7); - T('-57376528507859392114198303459327987043203713812970277355663102705761801186615364048872085338570', '-57376528507859392114198303459327987043203713812970277355663102705761801186615364048872085338570.5', 0, 7); - T('8981899774674151341273723045246779558611526093370000000000000000000000000000001', '8981899774674151341273723045246779558611526093370000000000000000000000000000000.5', 0, 7); - T('6880184505510000000000000000000000000000000000000000000000000000000000000000000000001', '6880184505510000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-9144765542574759986504560099796367000000000000000000000000000000000000000000000000000000000000000000', '-9144765542574759986504560099796367000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('-33550940230832658386583641510', '-33550940230832658386583641510.5', 0, 7); - T('570500000001', '570500000000.5', 0, 7); - T('21171552652016197991647323966415490225947817225636864710000000000000000000000000001', '21171552652016197991647323966415490225947817225636864710000000000000000000000000000.5', 0, 7); - T('-219451479377926100000000000000000000000', '-219451479377926100000000000000000000000.5', 0, 7); - T('-46023648500000000000000000000000000000000000000000000000', '-46023648500000000000000000000000000000000000000000000000.5', 0, 7); - T('-5788386698147635042359128255204287799666980072971472360314579333990755726292753882057820000', '-5788386698147635042359128255204287799666980072971472360314579333990755726292753882057820000.5', 0, 7); - T('48425486699992611674833028561543095971459492320411160921', '48425486699992611674833028561543095971459492320411160920.5', 0, 7); - T('-59344633366981652200000000000', '-59344633366981652200000000000.5', 0, 7); - T('-65482014253687833342600000000000000000000000', '-65482014253687833342600000000000000000000000.5', 0, 7); - T('-30128014553929563000000000000000000000000000000000000000000000000000000000000', '-30128014553929563000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('794768001', '794768000.5', 0, 7); - T('-150865959000000000000000000000000000000000000000000000000000000000000000000000000000000', '-150865959000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('873381282566874884976602503384155621488078946785261238', '873381282566874884976602503384155621488078946785261237.5', 0, 7); - T('-76364822618102400000000000000000000000000000000000000000000000000', '-76364822618102400000000000000000000000000000000000000000000000000.5', 0, 7); - T('1590000000000000000000000000000000000000000000000000000000001', '1590000000000000000000000000000000000000000000000000000000000.5', 0, 7); - T('15883352501', '15883352500.5', 0, 7); - T('-1678796930161119374892', '-1678796930161119374892.5', 0, 7); - T('7519225332612480000000000000001', '7519225332612480000000000000000.5', 0, 7); - T('26782458868551013018628206420511402980374696236993201', '26782458868551013018628206420511402980374696236993200.5', 0, 7); - T('84182962247257426278629190001', '84182962247257426278629190000.5', 0, 7); - T('-674633568509895706371390517304490463246553534599391649648000000', '-674633568509895706371390517304490463246553534599391649648000000.5', 0, 7); - T('2036599383754410655598351317310763047828000000000000000000000000000001', '2036599383754410655598351317310763047828000000000000000000000000000000.5', 0, 7); - T('-1747000000', '-1747000000.5', 0, 7); - T('3960685307896400000000000001', '3960685307896400000000000000.5', 0, 7); - T('-1', '-1.5', 0, 7); - T('5', '4.5', 0, 7); - T('-8542007911699875753350816000000000', '-8542007911699875753350816000000000.5', 0, 7); - T('229448019839399741', '229448019839399740.5', 0, 7); - T('4340972004000000000000000000000000000000000001', '4340972004000000000000000000000000000000000000.5', 0, 7); - T('-773300000000', '-773300000000.5', 0, 7); - T('7155533863912051817808706333952649054169243324075500000000000000000000000000000000001', '7155533863912051817808706333952649054169243324075500000000000000000000000000000000000.5', 0, 7); - T('994879015661912752196001000000000000000001', '994879015661912752196001000000000000000000.5', 0, 7); - T('9735231726716596452594218428908047051010710000000000000000000000000000000001', '9735231726716596452594218428908047051010710000000000000000000000000000000000.5', 0, 7); - T('830000001', '830000000.5', 0, 7); - T('-621154', '-621154.5', 0, 7); - T('-7026505943196190557292140834274961200000000', '-7026505943196190557292140834274961200000000.5', 0, 7); - T('-5698210301557000000000000000000000000000', '-5698210301557000000000000000000000000000.5', 0, 7); - T('633325185790000001', '633325185790000000.5', 0, 7); - T('-64165596081004870', '-64165596081004870.5', 0, 7); - T('-41646941216693066756777307741427764177371639363417043000000000000000000000000000000000000000', '-41646941216693066756777307741427764177371639363417043000000000000000000000000000000000000000.5', 0, 7); - T('-30276599950453', '-30276599950453.5', 0, 7); - T('844934410001', '844934410000.5', 0, 7); - T('193536068479533070654088534028865405146725922969081990000000000000000000000000001', '193536068479533070654088534028865405146725922969081990000000000000000000000000000.5', 0, 7); - T('3571390090807278635466910226000000000001', '3571390090807278635466910226000000000000.5', 0, 7); - T('33758731615573853269038256552240314238547949393669248932000000000000000000000000000000000000000001', '33758731615573853269038256552240314238547949393669248932000000000000000000000000000000000000000000.5', 0, 7); - - // rounding mode 8 - T('66201703687996196493948073895661219741.79732939050299983848272445', '66201703687996196493948073895661219741.79732939050299983848272444531659415942809827190951', 26, 8); - T('-432784391834045276975262545157922', '-432784391834045276975262545157922', 28, 8); - T('1149345737914160007440457748332143986414.9571', '1149345737914160007440457748332143986414.957136799115537152433594986979', 4, 8); - T('-8955086490844848921210649185442547', '-8955086490844848921210649185442547', 35, 8); - T('425088038661656538743278817856878424164093767.85670041722429249440202331857043', '425088038661656538743278817856878424164093767.85670041722429249440202331857043013807', 33, 8); - T('-309644694334054373034963302293381012433965117503313464512444644', '-309644694334054373034963302293381012433965117503313464512444644', 15, 8); - T('-6113258580590430007589739873373442564851315606055053637944', '-6113258580590430007589739873373442564851315606055053637944', 20, 8); - T('-79578809228411034521778967729244470830365009197702327546767865195836773388369068481948969.900741', '-79578809228411034521778967729244470830365009197702327546767865195836773388369068481948969.9007405268', 6, 8); - T('-98635952437161220.96618', '-98635952437161220.9661782723695091452045447927505345126085', 5, 8); - T('5306244228965561737.62447596491901907069113187489713', '5306244228965561737.62447596491901907069113187489712907837802453330192181391370636667897993', 32, 8); - T('881494696226260293271264.36459456081728760273917638738994049272140009', '881494696226260293271264.36459456081728760273917638738994049272140008956721', 45, 8); - T('0', '0.0000000000000000398975254', 1, 8); - T('-2966907742563204474300609285105763571411556718257633358168823625207636310562902929129639632', '-2966907742563204474300609285105763571411556718257633358168823625207636310562902929129639632', 59, 8); - T('4815226942078558754202763870371111530259178454324372013168459692655444158537', '4815226942078558754202763870371111530259178454324372013168459692655444158537', 58, 8); - T('89735736519038061687.396102956878866121243318078603705593756032576774631567136', '89735736519038061687.396102956878866121243318078603705593756032576774631567136', 57, 8); - T('-5139206863826452924558709317549576110217185', '-5139206863826452924558709317549576110217185', 10, 8); - T('410799450059.233711597011245238081176283367945619000645947401973880735', '410799450059.23371159701124523808117628336794561900064594740197388073499637579092523992206', 59, 8); - T('-1861173217597843873200339700375118033056165470698896905908777053211294087744', '-1861173217597843873200339700375118033056165470698896905908777053211294087744', 38, 8); - T('0', '-0.00000000000000006595', 11, 8); - T('-5407783849362963393803124142731051275240080145012', '-5407783849362963393803124142731051275240080145012', 20, 8); - T('-34168517091385789116719661427034183841563988149', '-34168517091385789116719661427034183841563988149', 17, 8); - T('5795445846', '5795445846', 2, 8); - T('-208487757.4947118655668802941616876105973734970142836273035', '-208487757.49471186556688029416168761059737349701428362730350350449276293511255885603228665646', 49, 8); - T('796420627119046.3257623490013937727996276166953155756033788473505312', '796420627119046.325762349001393772799627616695315575603378847350531229664668561098545265510186232639', 52, 8); - T('-764919.2520201660863571182709007', '-764919.252020166086357118270900678004721225081351152', 25, 8); - T('1711778256244239.6432803280511675051780680294577052774533541577657', '1711778256244239.643280328051167505178068029457705277453354157765665691237184194081804579550628', 49, 8); - T('-5303437679211478868344273161947940791429451823884596427841.337465439843', '-5303437679211478868344273161947940791429451823884596427841.337465439843017473765793878253395', 12, 8); - T('7894537442022400587189513519.07614612464633', '7894537442022400587189513519.0761461246463343271909512896919921757738101749442', 14, 8); - T('-852162476174009362657224788407373904292.060834168512303', '-852162476174009362657224788407373904292.0608341685123032205848264284500246825574591705678252075211', 15, 8); - T('12263206466360474155347209378267179331790532796950452218705592936654936382476475166224', '12263206466360474155347209378267179331790532796950452218705592936654936382476475166224', 50, 8); - T('286739.751858335177', '286739.75185833517663282910779633883075386374977590348991259883429540928694021465959067075843', 12, 8); - T('-1762282392342322391451423.95138646013724750227039851', '-1762282392342322391451423.9513864601372475022703985059087755006296016821468', 26, 8); - T('-87248674085961920378373182112140016225793103119799077836448861613155523873993867027371', '-87248674085961920378373182112140016225793103119799077836448861613155523873993867027371', 18, 8); - T('-74092308.573751689088057271221141335221234751439463510099422792', '-74092308.5737516890880572712211413352212347514394635100994227920017954257506493659703', 55, 8); - T('-20760047489279', '-20760047489279', 11, 8); - T('-0.0000000000000000000513', '-0.00000000000000000005125373071584388602667', 22, 8); - T('553838249451575699354166087894479427887538748821541', '553838249451575699354166087894479427887538748821541', 49, 8); - T('1423248954610786032951054974531156745902169', '1423248954610786032951054974531156745902169', 18, 8); - T('-455513127477032432052165898762670896803882354533268751050143', '-455513127477032432052165898762670896803882354533268751050143', 59, 8); - T('-0.112326948668716031138310473397726709406273', '-0.1123269486687160311383104733977267094062725419900260888852399393388797266733492952', 42, 8); - T('220496431007708742488102987834369132032989458669949404568519039366030060413', '220496431007708742488102987834369132032989458669949404568519039366030060413', 50, 8); - T('-0.00000000000325811433456091828013955203891346578756293444537', '-0.000000000003258114334560918280139552038913465787562934445372834409816', 59, 8); - T('-457504832634108650876363681507414265221', '-457504832634108650876363681507414265221', 40, 8); - T('-424186796605368850991004250916', '-424186796605368850991004250916', 31, 8); - T('656926.697474746923763802615025035828093602941156686984327', '656926.6974747469237638026150250358280936029411566869843273144638083499809', 51, 8); - T('0.000000000000000005397242366818203996', '0.00000000000000000539724236681820399616017543171572414502390014285527039717119783434813739074418', 36, 8); - T('1090684201.48935564', '1090684201.4893556381714726135555970595559735352509535058941537207185560561831', 8, 8); - T('69374039942373.3254580716722156975426911', '69374039942373.32545807167221569754269111', 25, 8); - T('9113500111924420134168224777108947212846008765793966704145', '9113500111924420134168224777108947212846008765793966704145.431817424332', 0, 8); - T('30823.68236248962442', '30823.682362489624415303797164930829692243120825797614790110298558566891', 14, 8); - T('69510854030784689448691205235110864752020705135715463000353620416781464635565813359264377', '69510854030784689448691205235110864752020705135715463000353620416781464635565813359264377', 31, 8); - T('0.000000000000058862529560768', '0.0000000000000588625295607683198127617212575718008706568858558601170114', 27, 8); - T('-17848760834059263091993243721898202503622421343253601508', '-17848760834059263091993243721898202503622421343253601508', 23, 8); - T('-236803670466123595831349021922016939098010857534796192', '-236803670466123595831349021922016939098010857534796192', 21, 8); - T('-102.198091649633311839521389772950955038', '-102.198091649633311839521389772950955038425200879430185191719111255573192340640709444075063237279', 36, 8); - T('326989728850104213753.8335807775873', '326989728850104213753.833580777587346167082725672681674988508273423', 13, 8); - T('-122.0291061318001501339747396650645162229074064349133', '-122.029106131800150133974739665064516222907406434913336614242606358', 49, 8); - T('-831410519711671441355', '-831410519711671441355', 16, 8); - T('-253620339160158444333927384234542070578', '-253620339160158444333927384234542070578', 9, 8); - T('-7348280719663124699843895522030312381252008175705772142979880256543246476384943464878409', '-7348280719663124699843895522030312381252008175705772142979880256543246476384943464878409', 50, 8); - T('6664146236447212814277572.0999056094992', '6664146236447212814277572.099905609499231171', 13, 8); - T('-45131966684154664823729921239622741743388388032363350525350351', '-45131966684154664823729921239622741743388388032363350525350351', 54, 8); - T('-40833932047032323008.1477121334939888606975457955366723579560220387882733564215', '-40833932047032323008.14771213349398886069754579553667235795602203878827335642149629', 59, 8); - T('-610147668317151494655953188414347.513062160034037994471478116919185602379422684392', '-610147668317151494655953188414347.5130621600340379944714781169191856023794226843916275138433253', 48, 8); - T('68480060832241105622.0309399631877587294933', '68480060832241105622.0309399631877587294932744437074077578726838602811862463', 22, 8); - T('194232568635561193478658679661926001447122084303161530447723323350451591165847396942433467', '194232568635561193478658679661926001447122084303161530447723323350451591165847396942433467', 53, 8); - T('301488112835117984681216562501634945527931425479867644918437173989635003275', '301488112835117984681216562501634945527931425479867644918437173989635003275', 45, 8); - T('-6851957382967116770156790585389162381351471623360536810366727929091181605285629993', '-6851957382967116770156790585389162381351471623360536810366727929091181605285629993', 58, 8); - T('-47712893537299565607733312598395281973889458872107933076', '-47712893537299565607733312598395281973889458872107933076', 22, 8); - T('0', '0.0000000000000000859670879420002853724584828504688225809552905002764241975507797099562754888', 9, 8); - T('0.004432633947152', '0.00443263394715151891254682580745644237652322307', 15, 8); - T('69262889569389462605539771733767837082438188', '69262889569389462605539771733767837082438188', 44, 8); - T('-3891963561578294887852441074022523556630020645085806037968401206141034018227239650504315', '-3891963561578294887852441074022523556630020645085806037968401206141034018227239650504315', 29, 8); - T('517455700713583735581011224355747758835072', '517455700713583735581011224355747758835072', 33, 8); - T('3286559014183405381681284382257494050726761990059', '3286559014183405381681284382257494050726761990059', 8, 8); - T('-63655023123174740325953043492297676892760601721778538384', '-63655023123174740325953043492297676892760601721778538384', 38, 8); - T('-3616486456360129835721411345', '-3616486456360129835721411345', 25, 8); - T('5302046753446852414769871718814521746.07821211750152648928158273941305583283', '5302046753446852414769871718814521746.07821211750152648928158273941305583283', 39, 8); - T('7748631583295908.9', '7748631583295908.93', 1, 8); - T('698840974194462996670670779801788898006147', '698840974194462996670670779801788898006147', 39, 8); - T('5115298308143358514121930351981670511745255186478118611705507709680743067049815465', '5115298308143358514121930351981670511745255186478118611705507709680743067049815465', 3, 8); - T('-612675133207.913892413366818256954190842994', '-612675133207.91389241336681825695419084299362927950456589721655286975937658897251713491', 30, 8); - T('-23760765404011175917916548731905430881375361039', '-23760765404011175917916548731905430881375361039', 37, 8); - T('1.537325640830455556577284161295194462534093392', '1.53732564083045555657728416129519446253409339155685994767622443301510890518218163627512409985028874', 45, 8); - T('85488099619561530625377.4192191219015077695264716986497372124636', '85488099619561530625377.41921912190150776952647169864973721246357123472247253263193079654814', 40, 8); - T('-0.000000000000000000050862650388973728733959', '-0.00000000000000000005086265038897372873395911474890963231183754251032093750396822', 42, 8); - T('5526230849632961555873105581682031232032076652', '5526230849632961555873105581682031232032076652', 33, 8); - T('5.35603726623675478881750325031077857085', '5.3560372662367547888175032503107785708523437510821741384889170003345091454641716', 38, 8); - T('-269', '-268.5690822533536300367', 0, 8); - T('5757355935873247215361', '5757355935873247215361', 7, 8); - T('246850624649836235549257820435684838216256457058297475944623153518238931267', '246850624649836235549257820435684838216256457058297475944623153518238931267', 29, 8); - T('-692278289514395596822246030611', '-692278289514395596822246030611', 29, 8); - T('5011884712679298647620944560807194982963074154957144073408073782.012902676141595080232825022', '5011884712679298647620944560807194982963074154957144073408073782.01290267614159508023282502208799', 27, 8); - T('-1601088319576953191651975449908738521284', '-1601088319576953191651975449908738521284', 13, 8); - T('-4414644735536629652380210044243136361770887495321', '-4414644735536629652380210044243136361770887495321', 1, 8); - T('0.0000000266191991852311627685858864306795', '0.0000000266191991852311627685858864306795247265183872439736762861', 40, 8); - T('0.000428744212691549043417829548631538073876', '0.0004287442126915490434178295486315380738764488424270530614427525474179623980503815', 42, 8); - T('-0.000000000047', '-0.000000000046905000977649660171', 12, 8); - T('-0.0000000000000000012796854596101', '-0.0000000000000000012796854596101112', 31, 8); - T('0', '0.00000000000000007196452', 10, 8); - T('-86284478039635020.88154442791139797502881588209234679333543929358069793135', '-86284478039635020.8815444279113979750288158820923467933354392935806979313474421195014946654603', 56, 8); - T('345.7906584145207214494773389942349751491', '345.79065841452072144947733899423497514905046668326852378724478389764822926854507387015', 37, 8); - T('-30568645130233018977700516286545868158267620169281990416832482986193', '-30568645130233018977700516286545868158267620169281990416832482986193', 43, 8); - T('37665450910098298765355672911622917', '37665450910098298765355672911622917', 25, 8); - T('-47992849', '-47992849', 1, 8); - T('-2289649689772323.458246269770512751882357714601759751619429', '-2289649689772323.458246269770512751882357714601759751619428559799708215001792781583', 42, 8); - T('205469749210966781349300242506558230047710955467288617413646386581699317243', '205469749210966781349300242506558230047710955467288617413646386581699317243', 25, 8); - T('-32056221565262365438607056649704856185526855802381047619081869', '-32056221565262365438607056649704856185526855802381047619081869', 58, 8); - T('-69387756776107867448507.5597896113493378218866042115232132608', '-69387756776107867448507.5597896113493378218866042115232132608308527098602632063024', 37, 8); - T('0.000000820570605855677101583661555709', '0.00000082057060585567710158366155570875342023482713606', 36, 8); - T('69207211379716780147073990298041848170635366340631501124460602562', '69207211379716780147073990298041848170635366340631501124460602562', 14, 8); - T('74433853443.711309574611828991681415199898999', '74433853443.711309574611828991681415199898998743211590771456662685697848481543071016889', 33, 8); - T('560136636765721.54952783053237', '560136636765721.5495278305323717513438', 14, 8); - T('66999767298684323378394675772410013.28969441028366360358403105373652837191570809785171273', '66999767298684323378394675772410013.28969441028366360358403105373652837191570809785171273', 54, 8); - T('68347634798085780973515205391681470162522109665463538490773666914168258894444', '68347634798085780973515205391681470162522109665463538490773666914168258894444', 24, 8); - T('7697922274864830543190030076775438', '7697922274864830543190030076775438', 20, 8); - T('278983937451071130016483992277822580223855875348190818.113846802586205314111233', '278983937451071130016483992277822580223855875348190818.11384680258620531411123264767447310686', 24, 8); - T('-18302541929262108151338961040808216477301', '-18302541929262108151338961040808216477301', 13, 8); - T('-917241354938259400580805453251192909557123968816077324554688.2632819065881148284', '-917241354938259400580805453251192909557123968816077324554688.263281906588114828403637', 20, 8); - T('45819385064609897668758693853072194843813609788794421314', '45819385064609897668758693853072194843813609788794421314', 24, 8); - T('-523986068289618485266030887200551590040084842900599214834165319686', '-523986068289618485266030887200551590040084842900599214834165319686', 18, 8); - T('7852063910359971787869622352527374328444882187005886753422152922497829760479356719', '7852063910359971787869622352527374328444882187005886753422152922497829760479356719', 38, 8); - T('0.0000000000247091', '0.00000000002470914629639547358185782547191865524156377299551121577023612761119607882', 16, 8); - T('440821431387771614013770385588.03139517196419817521106343238223731692566664358823035313142', '440821431387771614013770385588.03139517196419817521106343238223731692566664358823035313142186102', 59, 8); - T('-7.391761264366265837615347413187815498740935', '-7.391761264366265837615347413187815498740934589988129058805961426', 42, 8); - T('41794466666300650385807822364400569925816612741244088085922306361105114', '41794466666300650385807822364400569925816612741244088085922306361105114', 48, 8); - T('0', '0.0000000000000000038802542700538271039582060794252268615576361549601345439908', 15, 8); - T('35343256389819549943056605473715229852', '35343256389819549943056605473715229852', 9, 8); - T('-818984458678111129545223433258309212674764516267725284171918954770229.24954611425', '-818984458678111129545223433258309212674764516267725284171918954770229.249546114248715', 11, 8); - T('-7230691209.6753920167936103432715638', '-7230691209.67539201679361034327156375593719410288588', 25, 8); - T('-37368231656156642628245727340400846248755238210404670712676232100034223145733', '-37368231656156642628245727340400846248755238210404670712676232100034223145733', 9, 8); - T('-21531849930403836723.549953750896490206543923575188', '-21531849930403836723.549953750896490206543923575188115922', 30, 8); - T('0.00255705840261906787264907412348588448784776243920353187679', '0.0025570584026190678726490741234858844878477624392035318767939168622896408327924273682986', 59, 8); - T('-72553243708', '-72553243708', 12, 8); - T('-0.0000000000008856317899193899991568647156407142735462649', '-0.0000000000008856317899193899991568647156407142735462649439073', 55, 8); - T('0.00000000000000002567536449680036305412256336138415403', '0.0000000000000000256753644968003630541225633613841540257438901', 53, 8); - T('-2861414563473219891469834741889616', '-2861414563473219891469834741889616', 23, 8); - T('76315153632082828597570739187599689956646538104750912445681366544986223082108062643693', '76315153632082828597570739187599689956646538104750912445681366544986223082108062643693', 58, 8); - T('-36017699886964287552542855178455727562394623', '-36017699886964287552542855178455727562394623', 10, 8); - T('-8039050083841916177617168262552140531689510609781882', '-8039050083841916177617168262552140531689510609781882', 7, 8); - T('-75564522183815281041495497607512529468573045762495628', '-75564522183815281041495497607512529468573045762495628', 47, 8); - T('-0.0000000000000028959465568008886578', '-0.000000000000002895946556800888657768819798024109048410779074303487219485197865657', 34, 8); - T('284523781858209826579679727341459643256753883111577735224', '284523781858209826579679727341459643256753883111577735224', 17, 8); - T('855998775255794984240155453520859416491', '855998775255794984240155453520859416491', 2, 8); - T('-138150439221363970723340802061921303881866895', '-138150439221363970723340802061921303881866895', 10, 8); - T('-4733097249983425263123260326467561884629992599437098006772507345.39029977752721930256', '-4733097249983425263123260326467561884629992599437098006772507345.39029977752721930256036990911', 21, 8); - T('-0.000000000000007891361298828364332998396426', '-0.0000000000000078913612988283643329983964258020880117022087729997106646341', 42, 8); - T('0', '-0.00000000000000000005232135595017205522', 14, 8); - T('6004269558735103787710387970518297095870881046535997656345481925243412966194', '6004269558735103787710387970518297095870881046535997656345481925243412966194', 47, 8); - T('-79790582292297723097183916661305043162178089556664159', '-79790582292297723097183916661305043162178089556664159', 50, 8); - T('868633879339750610248.8719201777840534154224473677127177', '868633879339750610248.8719201777840534154224473677127177456222197014169473933', 34, 8); - T('-35193645352688585041808187638769417251065373576.318111185472303777399956841', '-35193645352688585041808187638769417251065373576.3181111854723037773999568411745', 27, 8); - T('-914456499778647874582727776237', '-914456499778647874582727776237', 32, 8); - T('-0.0000000082872578546868214209908047326678355', '-0.0000000082872578546868214209908047326678354507848678952930148008797982168429352770394', 43, 8); - T('43709030067329728774375267529433280243651742049220974', '43709030067329728774375267529433280243651742049220974', 33, 8); - T('-118010.225141375666233966986827467153774', '-118010.2251413756662339669868274671537736196650024082171238583391369', 33, 8); - T('23068625486429.2799608174027102', '23068625486429.279960817402710215', 16, 8); - T('-704545071947407222321207465462220615566', '-704545071947407222321207465462220615566', 11, 8); - T('14375372697678701853.68596153637061158763127684500719629374218600432501980003', '14375372697678701853.68596153637061158763127684500719629374218600432501980003395932938491', 56, 8); - T('-634203070629093.01725952920860266543339878670159', '-634203070629093.01725952920860266543339878670158808711459045809411073373681', 32, 8); - T('-3341330166644850447365712680571164098505980754357561658133', '-3341330166644850447365712680571164098505980754357561658133', 40, 8); - T('910.78407278867854608277033163963661161209449973499620413', '910.784072788678546082770331639636611612094499734996204129162575412', 53, 8); - T('-74657560210242704554422776032639005330.452019595638291987749374750110848265985', '-74657560210242704554422776032639005330.45201959563829198774937475011084826598462291919991235622365', 39, 8); - T('-470224275317729788265083630786402723652606489581196807283808757461349811868180256', '-470224275317729788265083630786402723652606489581196807283808757461349811868180256', 30, 8); - T('1548861035159077785270281667791270424763253422330193371408', '1548861035159077785270281667791270424763253422330193371408', 39, 8); - T('572490113577029960833837229080147476156510343599468021', '572490113577029960833837229080147476156510343599468021', 53, 8); - T('643806729774291640618659309341323785812549216455045455115986466479734', '643806729774291640618659309341323785812549216455045455115986466479734', 59, 8); - T('-0.0000000000000028832370380139686337031164', '-0.00000000000000288323703801396863370311643469222712049186100527525476992', 40, 8); - T('-7189938709688507888323269632860908682422507867792553339856907644331197', '-7189938709688507888323269632860908682422507867792553339856907644331197', 30, 8); - T('-146458270834000351215786805348778503451274270331400574216733292', '-146458270834000351215786805348778503451274270331400574216733292', 53, 8); - T('-0.00000354623728604661459577622785392304170907', '-0.00000354623728604661459577622785392304170906690465556766249117223748961549701782239', 44, 8); - T('2952633202166896462404492499220990667245459193', '2952633202166896462404492499220990667245459193', 18, 8); - T('-40658243711269788486614574882823442616218332307814675126120483345884287', '-40658243711269788486614574882823442616218332307814675126120483345884287', 35, 8); - T('-834746.130874791201613251929057183287554326432137609', '-834746.13087479120161325192905718328755432643213760902671', 45, 8); - T('-2740259405495848461193558179879029219965128521581766328834436598769356651654532', '-2740259405495848461193558179879029219965128521581766328834436598769356651654532', 21, 8); - T('-8698435709878691464261', '-8698435709878691464261', 24, 8); - T('-4854.3960864787394404064207224627696634919', '-4854.39608647873944040642072246276966349186696614541346739', 37, 8); - T('-9046342079405156048260593050430368806', '-9046342079405156048260593050430368806', 13, 8); - T('-0.0004000833397214913009450572039483114734165469785', '-0.0004000833397214913009450572039483114734165469785253268388', 49, 8); - T('-23588224945151001125418674123739250937217610361057096547', '-23588224945151001125418674123739250937217610361057096547', 50, 8); - T('-7464158850661582447.135098739', '-7464158850661582447.135098739246', 9, 8); - T('-1120821804664354.438155', '-1120821804664354.438154570308756776805085557342686456892402105759461492146293434', 6, 8); - T('0', '0.00000000000000702791991239841893249958321', 6, 8); - T('-0.0000000000000000000919', '-0.00000000000000000009190566893831833839554', 22, 8); - T('64989966866.84348665817102620621477817048264530787181', '64989966866.8434866581710262062147781704826453078718131', 41, 8); - T('-264353242609519937462651086142583415212476095512802343', '-264353242609519937462651086142583415212476095512802343', 45, 8); - T('-319660042.9060556155850335364548437', '-319660042.90605561558503353645484368385673087962874009065861', 25, 8); - T('782876222924236185663713124322579837808875447927.750634733', '782876222924236185663713124322579837808875447927.750634732835826802912809356260197', 9, 8); - T('-4820197230775172031472341884498005296391387635256546231303736492', '-4820197230775172031472341884498005296391387635256546231303736492', 59, 8); - T('-45476814068689923138802955966005002117064', '-45476814068689923138802955966005002117064', 40, 8); - T('86962370844284513181.323731711208686245837285176301766411', '86962370844284513181.323731711208686245837285176301766411023449553787804266696487', 36, 8); - T('404346421681633141340078973828115038719203880378027932732656742417', '404346421681633141340078973828115038719203880378027932732656742417', 20, 8); - T('-53694967597040342895345907112.207745463281021175645491335763', '-53694967597040342895345907112.207745463281021175645491335763004711756325', 30, 8); - T('-6559.90160086515960335469008322764225267411067302815351', '-6559.901600865159603354690083227642252674110673028153509381229252097346854', 50, 8); - T('-0.00000000061377507317560820930017891219268306', '-0.00000000061377507317560820930017891219268306242240809651039096286454694883355904014170354', 44, 8); - T('8466762839492012821866.4647006439743751275401538868809', '8466762839492012821866.464700643974375127540153886880890946782195395', 31, 8); - T('8475.6568', '8475.656838687006572512673250060913774957342621772685866238642718847562956066296778675046839230187', 4, 8); - T('3994107783920982224771924508121993204610124753099359206657026721569631', '3994107783920982224771924508121993204610124753099359206657026721569631', 29, 8); - T('-32449538518104.832133372196883764549982574662552753596186838341', '-32449538518104.832133372196883764549982574662552753596186838341255300262261822662991490178499', 48, 8); - T('0.00000000000000005', '0.0000000000000000488345616040752827', 17, 8); - - T('8225834668202811700000', '8225834668202811700000.5', 0, 8); - T('-67268029621398311238261431331851556661886545942854113916050734581000000000001', '-67268029621398311238261431331851556661886545942854113916050734581000000000000.5', 0, 8); - T('4100000', '4100000.5', 0, 8); - T('694900000000000', '694900000000000.5', 0, 8); - T('-2668752017792840000000000000000000000000000000000000000000000000000000000001', '-2668752017792840000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('5138303265393258323808903836559900000000000000000', '5138303265393258323808903836559900000000000000000.5', 0, 8); - T('-61599472977109463564534878506157000000000000000000000000000000001', '-61599472977109463564534878506157000000000000000000000000000000000.5', 0, 8); - T('-706579187032566119663804136174620000000000000000001', '-706579187032566119663804136174620000000000000000000.5', 0, 8); - T('10', '10.5', 0, 8); - T('903942469098308100136613765218227935820271584538277900367517300000000000000000', '903942469098308100136613765218227935820271584538277900367517300000000000000000.5', 0, 8); - T('7259090494485579718152684060350290000000000000000000000000000000000000000000000000000000000', '7259090494485579718152684060350290000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('50', '50.5', 0, 8); - T('-336051', '-336050.5', 0, 8); - T('-359851700000000000000000000000000000000000000000000000000000000000000000000000000000001', '-359851700000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('8300', '8300.5', 0, 8); - T('-5230000000000000000000000000000000000000000000000001', '-5230000000000000000000000000000000000000000000000000.5', 0, 8); - T('-832637338257576743857980873934631876338729504830820328750000000000000000000000000000000001', '-832637338257576743857980873934631876338729504830820328750000000000000000000000000000000000.5', 0, 8); - T('2170', '2170.5', 0, 8); - T('7530960067300000', '7530960067300000.5', 0, 8); - T('-69761077704964968462722176065747076185154464193791511210000000000000000000000000000000000000001', '-69761077704964968462722176065747076185154464193791511210000000000000000000000000000000000000000.5', 0, 8); - T('8951', '8951.5', 0, 8); - T('-62816928986109317245318155705980721116645949369247436234018847714093151000000000001', '-62816928986109317245318155705980721116645949369247436234018847714093151000000000000.5', 0, 8); - T('-273450712038160000001', '-273450712038160000000.5', 0, 8); - T('870651868531859742020859624838429666098184966539196792393834098130000000000000000000', '870651868531859742020859624838429666098184966539196792393834098130000000000000000000.5', 0, 8); - T('7467352850531742535166203140000', '7467352850531742535166203140000.5', 0, 8); - T('-27739701695659117725205758576200000000000001', '-27739701695659117725205758576200000000000000.5', 0, 8); - T('-21575913877090003604970871615441236644670000000000001', '-21575913877090003604970871615441236644670000000000000.5', 0, 8); - T('-84684097772847106401567201003729899910000000000001', '-84684097772847106401567201003729899910000000000000.5', 0, 8); - T('5639766204672194231584787000000000000000000000000000000000000000000000000000000000000000000000', '5639766204672194231584787000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('15504935934287862095572900000000000000000000000', '15504935934287862095572900000000000000000000000.5', 0, 8); - T('-1400577619554361844128289470441748896959600001', '-1400577619554361844128289470441748896959600000.5', 0, 8); - T('-562508502033790781280182919180003097225841259584126808028780000001', '-562508502033790781280182919180003097225841259584126808028780000000.5', 0, 8); - T('462676260328650000000000000000000', '462676260328650000000000000000000.5', 0, 8); - T('80610550887265206737088350828621745655000000000000000000000000000000000000000000000000000000', '80610550887265206737088350828621745655000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-802119959634183327467393167608755000000000000000000000000000000001', '-802119959634183327467393167608755000000000000000000000000000000000.5', 0, 8); - T('78620000000000000000000000000000000000000', '78620000000000000000000000000000000000000.5', 0, 8); - T('810000000000000000000000000000000000', '810000000000000000000000000000000000.5', 0, 8); - T('-3676779349655275521581849548079800000000000000000000000000000000000000000000000000000000001', '-3676779349655275521581849548079800000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-81572917297627759505118569656972784453878787892500000000000001', '-81572917297627759505118569656972784453878787892500000000000000.5', 0, 8); - T('-198003769523621', '-198003769523620.5', 0, 8); - T('5306', '5306.5', 0, 8); - T('-4000000000000000000000000000000000000000001', '-4000000000000000000000000000000000000000000.5', 0, 8); - T('-6964300000000000000000000000000000001', '-6964300000000000000000000000000000000.5', 0, 8); - T('5993000000000000000000', '5993000000000000000000.5', 0, 8); - T('-58', '-57.5', 0, 8); - T('-314705009617969030000000000000000000000000000000000000000001', '-314705009617969030000000000000000000000000000000000000000000.5', 0, 8); - T('6', '6.5', 0, 8); - T('4588255716462680467926051688938462657411100947687253979336100000000000000', '4588255716462680467926051688938462657411100947687253979336100000000000000.5', 0, 8); - T('300', '300.5', 0, 8); - T('-8095535225924203212402801', '-8095535225924203212402800.5', 0, 8); - T('30838279901100000000000000000000000000000000000000000000', '30838279901100000000000000000000000000000000000000000000.5', 0, 8); - T('-644246265100306600000000000001', '-644246265100306600000000000000.5', 0, 8); - T('-7949436643533748183697968284137159105717056926000000000000000000000000000000001', '-7949436643533748183697968284137159105717056926000000000000000000000000000000000.5', 0, 8); - T('5961899981183314783500000000', '5961899981183314783500000000.5', 0, 8); - T('329320658758032654290364416883005342614380587029114737580920000000000000', '329320658758032654290364416883005342614380587029114737580920000000000000.5', 0, 8); - T('-70000000000000000000000000001', '-70000000000000000000000000000.5', 0, 8); - T('-773550954099185953800000000000000000000000000000001', '-773550954099185953800000000000000000000000000000000.5', 0, 8); - T('-71820001', '-71820000.5', 0, 8); - T('6824221413055181208880629906440161900000000000000000000000000000000000000000000', '6824221413055181208880629906440161900000000000000000000000000000000000000000000.5', 0, 8); - T('-293663761783147249577441951060981857156831085100000000000000000000000000000000000000000001', '-293663761783147249577441951060981857156831085100000000000000000000000000000000000000000000.5', 0, 8); - T('-805331726532205040286379140828190238797602490000000000000000000000000000000000000000001', '-805331726532205040286379140828190238797602490000000000000000000000000000000000000000000.5', 0, 8); - T('2627542620785923273450000000000000000000', '2627542620785923273450000000000000000000.5', 0, 8); - T('190055193848119613272218981746041232571688473321679545800000000000000000000000000000000000000000', '190055193848119613272218981746041232571688473321679545800000000000000000000000000000000000000000.5', 0, 8); - T('-61621063888036802203530857476475979818427083600000000000000000000000000000000000000000000000001', '-61621063888036802203530857476475979818427083600000000000000000000000000000000000000000000000000.5', 0, 8); - T('-652127458000489992750000000000000000000000000000000000000000000000001', '-652127458000489992750000000000000000000000000000000000000000000000000.5', 0, 8); - T('7000000000000000000000000', '7000000000000000000000000.5', 0, 8); - T('6533676582995433778209424794015171896011423181700000000000000', '6533676582995433778209424794015171896011423181700000000000000.5', 0, 8); - T('27456600275687693800000000000000000000000000000000000000000000000000000000000000000000000000000000', '27456600275687693800000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-194516150000000000000000001', '-194516150000000000000000000.5', 0, 8); - T('-176140000000001', '-176140000000000.5', 0, 8); - T('85012661713649137873180295487285610000000000000000000000000000000000000', '85012661713649137873180295487285610000000000000000000000000000000000000.5', 0, 8); - T('-37523700000000000000000000000000000000000000000000000000000000000000000000000000000001', '-37523700000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-15124465952376999197073295421688223628463231603610811', '-15124465952376999197073295421688223628463231603610810.5', 0, 8); - T('-5432100777163613256132439687382900000000000000000000000000000000000000000000000001', '-5432100777163613256132439687382900000000000000000000000000000000000000000000000000.5', 0, 8); - T('652000000', '652000000.5', 0, 8); - T('-8507892174157676630256932627461950536321146344662200000000000000000000000000000001', '-8507892174157676630256932627461950536321146344662200000000000000000000000000000000.5', 0, 8); - T('-5780286273116071692453993336522250324675081', '-5780286273116071692453993336522250324675080.5', 0, 8); - T('2885286893929064654337716318113439600000000000000000000000000000000000000000', '2885286893929064654337716318113439600000000000000000000000000000000000000000.5', 0, 8); - T('158421702922228687046272106697601990957751203100000000000000000000000000000000000000000000000000', '158421702922228687046272106697601990957751203100000000000000000000000000000000000000000000000000.5', 0, 8); - T('77845803952870686913386535517781103587210960982825399080400000000000000000000000', '77845803952870686913386535517781103587210960982825399080400000000000000000000000.5', 0, 8); - T('-65458261744123585088042880333251536411447000000000000000000000000000000000000000000000000001', '-65458261744123585088042880333251536411447000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-5514810000000000001', '-5514810000000000000.5', 0, 8); - T('-3837413074391000000000000000000000000000001', '-3837413074391000000000000000000000000000000.5', 0, 8); - T('1891485546514380015490000000000000000000000000', '1891485546514380015490000000000000000000000000.5', 0, 8); - T('-670001', '-670000.5', 0, 8); - T('7365874638887372900000000000', '7365874638887372900000000000.5', 0, 8); - T('80464947550', '80464947550.5', 0, 8); - T('-913091300000000000000000000000000000000000000000000001', '-913091300000000000000000000000000000000000000000000000.5', 0, 8); - T('25911127696762546866341398944677062000000000000000000000000', '25911127696762546866341398944677062000000000000000000000000.5', 0, 8); - T('41448246317918170624465120157939322903000000000000000000000000000000000000000000000000000000000000', '41448246317918170624465120157939322903000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-800000000000000000000000000000000000000000000000000001', '-800000000000000000000000000000000000000000000000000000.5', 0, 8); - T('577447040809749466752886339212451433404458549958939957382201980490000000000000', '577447040809749466752886339212451433404458549958939957382201980490000000000000.5', 0, 8); - T('-57572272809174825641085924940000000000000000000000001', '-57572272809174825641085924940000000000000000000000000.5', 0, 8); - T('31581459400000000000000000000000000000000000000000000000000000000000000000000000000', '31581459400000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-27140000000000000000000000000000000000000000000000000000000000000001', '-27140000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('51603647184997719522882897042563846663899024307208600000000000000000000000', '51603647184997719522882897042563846663899024307208600000000000000000000000.5', 0, 8); - T('1644323000000', '1644323000000.5', 0, 8); - T('-9', '-8.5', 0, 8); - T('-902809102825706989238470350820560000000000000000000000000000000000000000000000000001', '-902809102825706989238470350820560000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-6868477001', '-6868477000.5', 0, 8); - T('91714927731569000000000000000000000000000000000', '91714927731569000000000000000000000000000000000.5', 0, 8); - T('-8000000000000000000000000000000000000000000000000000000000000000001', '-8000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-233083085304449000000000000000000000000000000000000000000000000000000000000000000000000000001', '-233083085304449000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('46509073700000', '46509073700000.5', 0, 8); - T('-1973764439115071357288670461800000000000000001', '-1973764439115071357288670461800000000000000000.5', 0, 8); - T('-2568500000000000000000001', '-2568500000000000000000000.5', 0, 8); - T('-24809330903268410000000000000000000000000000000000000000000000000000001', '-24809330903268410000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('7449994364098414600000000000000000000000000000000000000000000', '7449994364098414600000000000000000000000000000000000000000000.5', 0, 8); - T('2867488032797172375145449433748008158236530896489051275000000000000000000000000000000000', '2867488032797172375145449433748008158236530896489051275000000000000000000000000000000000.5', 0, 8); - T('-4900000000000000000000000000000000000000000000000000000000000000000000000000001', '-4900000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('4929000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4929000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('8267546457668258513715771480132070472862216176570000000000000000000000000', '8267546457668258513715771480132070472862216176570000000000000000000000000.5', 0, 8); - T('593747187059615072947679001676736984922713680000000000000000000000000000000000000000000000', '593747187059615072947679001676736984922713680000000000000000000000000000000000000000000000.5', 0, 8); - T('2483270425435993889589154244481827665973478012000000000', '2483270425435993889589154244481827665973478012000000000.5', 0, 8); - T('39543791425933526768174519227303827374238075020570198950767961859654305403206119372345770250000', '39543791425933526768174519227303827374238075020570198950767961859654305403206119372345770250000.5', 0, 8); - T('67', '67.5', 0, 8); - T('-219470058205534357335831751487551261713170336001', '-219470058205534357335831751487551261713170336000.5', 0, 8); - T('-183690000000000000000000000000000000000001', '-183690000000000000000000000000000000000000.5', 0, 8); - T('3450876609649939508104514905806066940000000000000000000000', '3450876609649939508104514905806066940000000000000000000000.5', 0, 8); - T('-80540000001', '-80540000000.5', 0, 8); - T('-62971517498372655372935973087516265926164530906763170287790', '-62971517498372655372935973087516265926164530906763170287789.5', 0, 8); - T('23409228118870000000', '23409228118870000000.5', 0, 8); - T('-7000000000000000000000000000000000000001', '-7000000000000000000000000000000000000000.5', 0, 8); - T('-9031', '-9030.5', 0, 8); - T('3492817610000000000000000000000000000000000000000000000000000', '3492817610000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-57688287613641931000000000000000000000000001', '-57688287613641931000000000000000000000000000.5', 0, 8); - T('1984116330670000000000000000000000000000000000000000000000000000000000', '1984116330670000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('6512025216557000000000000000000000000000000000000000000000000000000', '6512025216557000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('12182501403550393384353169696000000000000000000000000000000000000000000000000000000000000000000', '12182501403550393384353169696000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-7425931783170916885202085702943899676988400000000000000000000000000000000000000001', '-7425931783170916885202085702943899676988400000000000000000000000000000000000000000.5', 0, 8); - T('-4070000000000000000000000000000000000001', '-4070000000000000000000000000000000000000.5', 0, 8); - T('8647459874624869698149020230000000000000000000000000000000000000000000000000000000000', '8647459874624869698149020230000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('46599000', '46599000.5', 0, 8); - T('-5010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '-5010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('39508000', '39508000.5', 0, 8); - T('603089057835800884421518508711417801', '603089057835800884421518508711417801.5', 0, 8); - T('-79471558363526485324781700384768609724195801918000000000000000000000000000001', '-79471558363526485324781700384768609724195801918000000000000000000000000000000.5', 0, 8); - T('69404910310759646801954680033844865865649000000000000000000000000000000000000000000000000', '69404910310759646801954680033844865865649000000000000000000000000000000000000000000000000.5', 0, 8); - T('1907980209926030560252116696113309208138159500662562258522400000000000000000000000000000000', '1907980209926030560252116696113309208138159500662562258522400000000000000000000000000000000.5', 0, 8); - T('329472654458195399229095412173156277813634317805761763485596051933469610596000', '329472654458195399229095412173156277813634317805761763485596051933469610596000.5', 0, 8); - T('276349000000000', '276349000000000.5', 0, 8); - T('787126144338547000000000000000000000000000000000000000000000', '787126144338547000000000000000000000000000000000000000000000.5', 0, 8); - T('1471099043691184058624460905988224213538031110904992774958270704956863896897997000000000000000', '1471099043691184058624460905988224213538031110904992774958270704956863896897997000000000000000.5', 0, 8); - T('370113010930715428293470648815487051030769793281763667800000000000000000000000', '370113010930715428293470648815487051030769793281763667800000000000000000000000.5', 0, 8); - T('2065922690807733136485062524396416121715082253637965000000000000000000000000000000000000000000', '2065922690807733136485062524396416121715082253637965000000000000000000000000000000000000000000.5', 0, 8); - T('-7382816558182407799471782300849610860474300000000000000000000000000000000000000000001', '-7382816558182407799471782300849610860474300000000000000000000000000000000000000000000.5', 0, 8); - T('-20097560535463220697432958047617508689581603082766010090000000000000000000001', '-20097560535463220697432958047617508689581603082766010090000000000000000000000.5', 0, 8); - T('628909746633683135845125129915144934623519151508200000', '628909746633683135845125129915144934623519151508200000.5', 0, 8); - T('-81192352241330340442871946386698010000000000000001', '-81192352241330340442871946386698010000000000000000.5', 0, 8); - T('6450', '6450.5', 0, 8); - T('37293916349890940922992467416776788689073657558307952866668243095547190629248951386344800000000', '37293916349890940922992467416776788689073657558307952866668243095547190629248951386344800000000.5', 0, 8); - T('1718544737998848', '1718544737998848.5', 0, 8); - T('87231983170377993831727615571315627607167084700000000000', '87231983170377993831727615571315627607167084700000000000.5', 0, 8); - T('-86061664983179049931693406385826804039300476826004230043833291400000000000001', '-86061664983179049931693406385826804039300476826004230043833291400000000000000.5', 0, 8); - T('-51891604836621651634017359747812499890000000000000000000000000000000000000000000000000001', '-51891604836621651634017359747812499890000000000000000000000000000000000000000000000000000.5', 0, 8); - T('8745224135400000000000000000000', '8745224135400000000000000000000.5', 0, 8); - T('-30620233581205628000000000000000001', '-30620233581205628000000000000000000.5', 0, 8); - T('14863144633163334418622520000000000000000', '14863144633163334418622520000000000000000.5', 0, 8); - T('-7820166128000000000000000000000000000000000000000000000000001', '-7820166128000000000000000000000000000000000000000000000000000.5', 0, 8); - T('490301854395822993260221610000000000000000000000000000000000000000000000000000000000000000000000000', '490301854395822993260221610000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('89435429126192621776997940079101579134477637123767783805081890000', '89435429126192621776997940079101579134477637123767783805081890000.5', 0, 8); - T('-8', '-7.5', 0, 8); - T('48028980775647633995683237409146256399109720500000000000000000000000000000000000000', '48028980775647633995683237409146256399109720500000000000000000000000000000000000000.5', 0, 8); - T('6335331194137189544436447913317232855829543152436874057500', '6335331194137189544436447913317232855829543152436874057500.5', 0, 8); - T('-628254630769343648758471830148888672377000000000000000000000000000000000000000000000001', '-628254630769343648758471830148888672377000000000000000000000000000000000000000000000000.5', 0, 8); - T('57839375650970125223236315959022043520630147028794000000000000000000000', '57839375650970125223236315959022043520630147028794000000000000000000000.5', 0, 8); - T('-771743548959352866414440497741988370454011151128027700000000000001', '-771743548959352866414440497741988370454011151128027700000000000000.5', 0, 8); - T('-53429592007706646032950000000000001', '-53429592007706646032950000000000000.5', 0, 8); - T('499380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '499380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-641898557705670000001', '-641898557705670000000.5', 0, 8); - T('600220992462460556877273974257288999278181263177202351996538136181825896120000', '600220992462460556877273974257288999278181263177202351996538136181825896120000.5', 0, 8); - T('4060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('-8364590709247094923425000000000000000000000000001', '-8364590709247094923425000000000000000000000000000.5', 0, 8); - T('519409844212193540764606418404780000000000000000000000000000000000000000', '519409844212193540764606418404780000000000000000000000000000000000000000.5', 0, 8); - T('-3833671650388000000000000000000000000000000000000000000000000000000000000000000000000000000000000001', '-3833671650388000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('48557176761800000000000000000000000000000000000000', '48557176761800000000000000000000000000000000000000.5', 0, 8); - T('-7711489971', '-7711489970.5', 0, 8); - T('75000000000000000000', '75000000000000000000.5', 0, 8); - T('3229580853248988018262985670791998740861538127939000', '3229580853248988018262985670791998740861538127939000.5', 0, 8); - T('5248316551608552493188922201763221117178358562272408864992232158101702807890000000000000000', '5248316551608552493188922201763221117178358562272408864992232158101702807890000000000000000.5', 0, 8); - T('-65467380782429716204000000000001', '-65467380782429716204000000000000.5', 0, 8); - T('-7205690650357445181000000001', '-7205690650357445181000000000.5', 0, 8); - T('-276409666783477000000000001', '-276409666783477000000000000.5', 0, 8); - T('-58428012013195193142046078040582490000000000000000000000000000000000001', '-58428012013195193142046078040582490000000000000000000000000000000000000.5', 0, 8); - T('-751950207597055427000000000000000000000000000001', '-751950207597055427000000000000000000000000000000.5', 0, 8); - T('-599626209998027538223544864628000000000000000000000000001', '-599626209998027538223544864628000000000000000000000000000.5', 0, 8); - T('493818820446671117064848278738045865755408340205207514513699818290870000000000000000000000000', '493818820446671117064848278738045865755408340205207514513699818290870000000000000000000000000.5', 0, 8); - T('72115246495423678068962420259406315700000', '72115246495423678068962420259406315700000.5', 0, 8); - T('8355575817405490000000000000000', '8355575817405490000000000000000.5', 0, 8); - T('-760420001', '-760420000.5', 0, 8); - T('-2637320151000000000000000000000000000000000000000001', '-2637320151000000000000000000000000000000000000000000.5', 0, 8); - T('365188058248000000000000000000000000000000000000000000000000000000000000000000000000000000', '365188058248000000000000000000000000000000000000000000000000000000000000000000000000000000.5', 0, 8); - T('24776070252572097097332452000000000', '24776070252572097097332452000000000.5', 0, 8); - T('-51423316645779393318000000000000001', '-51423316645779393318000000000000000.5', 0, 8); - T('623144979783067430949482841363102540602541201810000000000000000000000000000000000000000000000', '623144979783067430949482841363102540602541201810000000000000000000000000000000000000000000000.5', 0, 8); - T('-393701403238457991332600000000000000001', '-393701403238457991332600000000000000000.5', 0, 8); - T('255574900000000000000000000000000000000000000000000000', '255574900000000000000000000000000000000000000000000000.5', 0, 8); - T('361300718195583086529006200000000000000', '361300718195583086529006200000000000000.5', 0, 8); - T('61381935060212901891392491994620938159434302730207737183495000000000000', '61381935060212901891392491994620938159434302730207737183495000000000000.5', 0, 8); - T('17103494622240782188191669794453543590000000000000000000000000000000', '17103494622240782188191669794453543590000000000000000000000000000000.5', 0, 8); - T('12.35', '12.345', new BigNumber('2')); - T('12', '12.345', null); - T('12', '12.345', u); - T('12', '12.345', 0); - T('12', '12.345', '-0'); - - assertException(function () {new BigNumber('12.345').round(NaN)}, ".round(NaN)"); - assertException(function () {new BigNumber('12.345').round('NaN')}, ".round('NaN')"); - assertException(function () {new BigNumber('12.345').round([])}, ".round([])"); - assertException(function () {new BigNumber('12.345').round({})}, ".round({})"); - assertException(function () {new BigNumber('12.345').round('')}, ".round('')"); - assertException(function () {new BigNumber('12.345').round(' ')}, ".round(' ')"); - assertException(function () {new BigNumber('12.345').round('hello')}, ".round('hello')"); - assertException(function () {new BigNumber('12.345').round('\t')}, ".round('\t')"); - assertException(function () {new BigNumber('12.345').round(new Date)}, ".round(new Date)"); - assertException(function () {new BigNumber('12.345').round(new RegExp)}, ".round(new RegExp)"); - assertException(function () {new BigNumber('12.345').round(7.5)}, ".round(7.5)"); - assertException(function () {new BigNumber('12.345').round('1.1e1')}, ".round('1.1e1')"); - - assertException(function () {new BigNumber('12.345').round('-1')}, ".round('-1')"); - assertException(function () {new BigNumber('12.345').round(-23)}, ".round(-23)"); - assertException(function () {new BigNumber('12.345').round(1e9 + 1)}, ".round(1e9 + 1)"); - assertException(function () {new BigNumber('12.345').round(1e9 + 0.1)}, ".round(1e9 + 1)"); - assertException(function () {new BigNumber('12.345').round('-0.01')}, ".round('-0.01')"); - assertException(function () {new BigNumber('12.345').round('-1e-1')}, ".round('-1e-1')"); - assertException(function () {new BigNumber('12.345').round(Infinity)}, ".round(Infinity)"); - assertException(function () {new BigNumber('12.345').round('-Infinity')}, ".round('-Infinity')"); - - T('13', '12.345', u, new BigNumber('2')); - T('12', '12.345', u, null); - T('12', '12.345', u, u); - T('13', '12.345', u, 0); - T('13', '12.345', u, '-0'); - - assertException(function () {new BigNumber('12.345').round(u, NaN)}, ".round(u, NaN)"); - assertException(function () {new BigNumber('12.345').round(u, 'NaN')}, ".round(u, 'NaN')"); - assertException(function () {new BigNumber('12.345').round(u, [])}, ".round(u, [])"); - assertException(function () {new BigNumber('12.345').round(u, {})}, ".round(u, {})"); - assertException(function () {new BigNumber('12.345').round(u, '')}, ".round(u, '')"); - assertException(function () {new BigNumber('12.345').round(u, ' ')}, ".round(u, ' ')"); - assertException(function () {new BigNumber('12.345').round(u, 'hello')}, ".round(u, 'hello')"); - assertException(function () {new BigNumber('12.345').round(u, '\t')}, ".round(u, '\t')"); - assertException(function () {new BigNumber('12.345').round(u, new Date)}, ".round(u, new Date)"); - assertException(function () {new BigNumber('12.345').round(u, new RegExp)}, ".round(u, new RegExp)"); - assertException(function () {new BigNumber('12.345').round(u, 7.5)}, ".round(u, 7.5)"); - assertException(function () {new BigNumber('12.345').round(u, '1.1e1')}, ".round(u, '1.1e1')"); - - assertException(function () {new BigNumber('12.345').round(u, '-1')}, ".round('u, -1')"); - assertException(function () {new BigNumber('12.345').round(u, -23)}, ".round(u, -23)"); - assertException(function () {new BigNumber('12.345').round(u, 8.01)}, ".round(u, 8.01)"); - assertException(function () {new BigNumber('12.345').round(u, 9)}, ".round(u, 9)"); - assertException(function () {new BigNumber('12.345').round(u, -1)}, ".round(u, -1)"); - assertException(function () {new BigNumber('12.345').round(u, '-0.01')}, ".round(u, '-0.01')"); - assertException(function () {new BigNumber('12.345').round(u, '-1e-1')}, ".round(u, '-1e-1')"); - assertException(function () {new BigNumber('12.345').round(u, Infinity)}, ".round(u, Infinity)"); - assertException(function () {new BigNumber('12.345').round(u, '-Infinity')}, ".round(u, '-Infinity')"); - - BigNumber.config({ERRORS : false}); - - T('12.35', '12.345', new BigNumber('2')); - T('12', '12.345', null); - T('12', '12.345', u); - T('12', '12.345', NaN); - T('12', '12.345', 'NaN'); - T('12', '12.345', []); - T('12', '12.345', {}); - T('12', '12.345', ''); - T('12', '12.345', ' '); - T('12', '12.345', 'hello'); - T('12', '12.345', '\t'); - T('12', '12.345', new Date); - T('12', '12.345', new RegExp); - T('12', '12.345', 0); - T('12', '12.345', '-0'); - T('12.345', '12.345', 7.5); - T('12.345', '12.345', '1.1e1'); - T('12', '12.345', '-1'); - T('12', '12.345', -23); - T('12', '12.345', 1e9 + 1); - T('12', '12.345', 1e9 + 0.1); - T('12', '12.345', '-0.01'); - T('12', '12.345', '-1e-1'); - T('12', '12.345', Infinity); - T('12', '12.345', '-Infinity'); - - T('13', '12.345', u, new BigNumber('2')); - T('12', '12.345', u, null); - T('12', '12.345', u, u); - T('12', '12.345', u, NaN); - T('12', '12.345', u, 'NaN'); - T('12', '12.345', u, []); - T('12', '12.345', u, {}); - T('12', '12.345', u, ''); - T('12', '12.345', u, ' '); - T('12', '12.345', u, 'hello'); - T('12', '12.345', u, '\t'); - T('12', '12.345', u, new Date); - T('12', '12.345', u, new RegExp); - T('13', '12.345', u, 0); - T('12', '12.345', u, 7.5); - - T('12', '12.345', u, '-1'); - T('12', '12.345', u, -23); - T('12', '12.345', u, 8.01); - T('12', '12.345', u, 9); - T('12', '12.345', u, -1); - T('12', '12.345', u, '-0.01'); - T('12', '12.345', u, '-1e-1'); - T('12', '12.345', u, Infinity); - T('12', '12.345', u, '-Infinity'); - - T('12', '12.345', u, u); - T('12.3', '12.345', 1, NaN); - - BigNumber.config({ ROUNDING_MODE : 4 }); - - T('13', '12.345', u, 0); - T('13', '12.345', u, '0'); - T('13', '12.345', u, -0); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js deleted file mode 100644 index 12a59ad..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/sqrt.js +++ /dev/null @@ -1,2565 +0,0 @@ -// Note: Some of the longer tests are commented-out. -var count = (function sqrt(BigNumber) { - var start = +new Date(), - log, - error, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(root, value) { - assert(root, new BigNumber(value).sqrt().toString()) - } - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - log('\n Testing sqrt...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - // Test the special cases specified by ES 15.8.2.17 - T('NaN', NaN); - T('2', 4); - T('0.1', 0.01); - - assert(false, isMinusZero(new BigNumber(0).sqrt())); - assert(false, isMinusZero(new BigNumber('0').sqrt())); - assert(true, isMinusZero(new BigNumber(-0).sqrt())); - assert(true, isMinusZero(new BigNumber('-0').sqrt())); - - T('Infinity', Infinity); - T('NaN', -Infinity); - - BigNumber.config({ERRORS : false}); - - T('NaN', undefined); - T('NaN', null); - T('NaN', []); - - BigNumber.config({ERRORS : true}); - - T('NaN', -1); - T('NaN', -35.999); - T('NaN', '-0.00000000000001'); - - // Test against Math.sqrt of squared integers. - for (var i = 0; i < 1e4; i++) { - var j = Math.floor(Math.random() * Math.pow(2, Math.floor(Math.random() * 26) + 1)); - j = Math.pow(j, 2); - T(Math.sqrt(j).toString(), j.toString()); - } - - // Initial rounding tests. - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - T('11', '101'); // 10.04... - T('11', '111'); // 10.53... - T('1000', 999000.25); // 999.5 - T('1', 0.25); // 0.5 - - BigNumber.config({ROUNDING_MODE : 1}); - T('10', '101'); - T('10', '111'); - T('999', 999000.25); - T('0', 0.25); - - BigNumber.config({ROUNDING_MODE : 2}); - T('11', '101'); - T('11', '111'); - T('1000', 999000.25); - T('1', 0.25); - - BigNumber.config({ROUNDING_MODE : 3}); - T('10', '101'); - T('10', '111'); - T('999', 999000.25); - T('0', 0.25); - - BigNumber.config({ROUNDING_MODE : 4}); - T('10', '101'); - T('11', '111'); - T('1000', 999000.25); - T('1', 0.25); - - BigNumber.config({ROUNDING_MODE : 5}); - T('10', '101'); - T('11', '111'); - T('999', 999000.25); - T('0', 0.25); - - BigNumber.config({ROUNDING_MODE : 6}); - T('10', '101'); - T('11', '111'); - T('1000', 999000.25); - T('0', 0.25); - - BigNumber.config({ROUNDING_MODE : 7}); - T('10', '101'); - T('11', '111'); - T('1000', 999000.25); - T('1', 0.25); - - BigNumber.config({ROUNDING_MODE : 8}); - T('10', '101'); - T('11', '111'); - T('999', 999000.25); - T('0', 0.25); - - T('1850249442642802149156602', '3423.423e45'); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 0}); - T('0.01', '0.0000001'); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); - T('0', '0.0000001'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 4}); - T('2.6', '7'); - T('30490054086086012186828338', '929643398172450327852909723850478224408368639961857.22035621170'); - T('10.6', '112.439121106'); - T('1007.1', '1014216.88354115504848'); - T('14496268662.7', '210141805141682355705.090'); - T('220983929785.7', '48833897223529771949253.378778868849049559624562513592321569'); - T('1180052939140.7', '1392524939174533146207410.12619352287'); - T('120468836204612.6', '14512740496493785900839846763.82328768609126547'); - - BigNumber.config({DECIMAL_PLACES : 10}); - T('1.0998820819', '1.20974059415009437172900'); - T('4372247436270791523.3453396636', '19116547643976509183347719022510178407.6659485696744517151189447'); - T('645.6559215353', '416871.569013637'); - T('9.3832989934', '88.0463'); - T('20195394139.0634492424', '407853944432118316238.060'); - T('203574.8431903851', '41442716779.9898655080652537763202594320363763900771333411614469322118841'); - T('434835511792648.9460364767', '189081922315974940615057855618.468666216438821105981678672603'); - T('1870631871126475697594310.8568506983', '3499263597274139582669747936294437345027253159338.2893957584'); - T('76418328144.477890944', '5839760876397101738682.29836547353'); - - BigNumber.config({DECIMAL_PLACES : 20}); - T('346.00153309920463414559', '119717.060907'); - T('263359760985014.62241224437474495709', '69358363706084030080212405554.3002793975414740876419285502'); - T('4.14645859760929707104', '17.193118901688058566035426'); - T('140510858365741634743828657.01509424473320174184', '19743301318677505942122892989445395975381650127203766.2408172612421'); - T('492974271191746.46231483998877250102', '243023632057033585989741137703.800100153395469328387'); - T('164.78781194238374484766', '27155.022964758430758944789724435'); - T('7366.78400597487165781255', '54269506.59068717789735301787194313247'); - T('23762326490698.34975320239967323205', '564648160250544549780100380.5514166040523'); - T('213634053277525452.46978666514569063831', '45639508719784583520579147409415270.488869'); - T('5.291502622129181181', '28'); - T('11.47156968462642430546', '131.59691102924'); - T('316358493873927157.1740897995245240711', '100082696646179606634487051294887359.5035240594546'); - T('500048686.48939798981543930512', '250048688859772239.7160140065116884182948058142834537'); - T('6022.37550162532363706717', '36269006.68257686850553015065182301017562876'); - T('6.8460154244205197188', '46.86792719140366873824501484885278'); - T('45189.48536114270306146252', '2042089587.204930656134881238462876156607'); - T('856160326.88774167756915629603', '733010505336524684.93087677'); - T('522130.17609423801622137924', '272619920788.2'); - T('52292561.72399606203863014237', '2734512011657938'); - - BigNumber.config({DECIMAL_PLACES : 73}); - T('26887623635.3707912464629567820776000467035000476700672842803068855485151227900078069', '722944304757350004189.2345'); - T('114762757369717325768.5268370835012953651076368760452481091507997658004031794079990971409285748', '13170490479100608368417468277815894123421.4484497151693769463078329436779'); - T('196.9765983083095309326276839454825311907994129311587833723243476358522465777', '38799.78028111312916322430363229763959902004100996'); - T('120016703223.6151811849913819241621570830640571538995217287681670128389432142005932891', '14404009052665322623144.3467403'); - T('91537950494500774895026544968.0163490860552716188715682357057804200505025482975033902996558184955299368', '8379196380733674659135406615691779599176042234171010036822.5636818392'); - T('15.1179067962466285341140019013436699388546686629569704817549228235938583883', '228.5511059'); - T('88.8125725884151110485104354919995585100283886785637267479492612921303631122', '7887.6730497725031780'); - T('3218172063439012577521546329.9090241863260351466688419917169048515469580394951005515857084741579831863', '10356631429899311993763656402168917661960022178561764021'); - T('19107253881509743.3779260316306131671181869224843248420235662435238492667857670998535738552', '365087150892469154433642273521263.83276841'); - T('400.3068500117233817006410985991134968372763336206911625632292309118077689013', '160245.5741663084'); - - BigNumber.config({DECIMAL_PLACES : 100}); - T('1.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485757', 3); - T('1.0488088481701515469914535136799375984752718576815039848757557635800059255011006914193852889331944178', 1.1); - T('0.3162277660168379331998893544432718533719555139325216826857504852792594438639238221344248108379300295', 0.1); - T('0.9486832980505137995996680633298155601158665417975650480572514558377783315917714664032744325137900886', 0.9); - T('0.99999999999999999999999999999999999999994999999999999999999999999999999999999999875', '0.9999999999999999999999999999999999999999'); - T('11111.1110609999998870049994903925471271162312358157188236047401971668110785559489100264545730662845742184','123456789.00987654321'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); - T('4949554350723.461435143921800511302655747834828959172999243354749297834846074272605873894779037895263058987767', '24498088270765545887271078.495701603537518591752268455746'); - - BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 2}); - T('34024250164506590698940450635557.52953427667455604566896038084827726129860253810440168217368794648838157166948213114635075589', '1157649599256926764239267638462457331268783688179593190844781949.0026'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); - T('44.40502294864850084', '1971.80606307'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); - T('53661161093118917.324727467936347226946388973481645944102836490011463645342312303037845424027327131', '2879520209861659438086912639838761.96836512'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 1}); - T('14192376.643123461322847366137186892667087869800484670508360531721790645551341594437545247745705539930735', '201423554780276.3686384009255372'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); - T('4855847283088595702176944.8112532951528228009352578372167502504010846351042776625505257853252286361', '23579252836678896488410638492374748088831131237827.786414707871968195569'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 4}); - T('2553252336.0331', '6519097491458426345.3554782053764871036657698339691144086'); - - BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); - T('313415140.8429479671745256541153927986977746351343070479080617690487091', '98229050509604911'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 0}); - T('1.537808174192351787259717', '2.3648539806128145775'); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 4}); - T('62.30949119560079364913', '3882.4726930546528212066'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); - T('20416269776260474006.927083982432268806569265768750039002235065141713481228428261', '416824071577046905366185925400975939799.8'); - - BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); - T('174228234.709795821707519878032640346805381350977820681861118903584344693715322225768054125', '30355477770091701.53717021425249799086667828628302277998976752563'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); - T('8346080245081.12842427016192329441165264650792513611706834892396914269233387534464159247031782538653', '69657055457333468703224935.763141948224298'); - - BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 3}); - T('272.7796965259930339886508185007545884578607374328807903817278380417881107290650631082406652753', '74408.76283681285609575234724616'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 0}); - T('2576.47265', '6638211.30041'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); - T('163256493.009563679477426538597267934928790668772138046453329418', '26652682509781714.54341292267818515442604'); - - BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 6}); - T('6413898755.503103237879757203310804711689478588298288050385897319721', '41138097245844256487.4'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 4}); - T('651.83586891179899229526795359574620017366743', '424890'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); - T('9.840172762711028743800750259911398446280416492345', '96.829'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 4}); - T('936008582670169403.24586736956499382709796268807769178807', '876112066832219350113028056940121643.4989897905396802'); - - BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 1}); - T('3.1691816831920187703897673787206897581382652839389771357354751032132', '10.043712541079797228859738302727066114683041689841812835450076520'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 2}); - T('201959414.0905242545521797507742344926679143', '40787604939787846.812484750440288725205988'); - - BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 2}); - T('3.235364585328831221179338900994013430389718885202447735097146763445925265374153439191445', '10.4675840'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 2}); - T('1391.926691686756208298398279775140528179063627807536777764086771937670002756456', '1937459.9150300380745526266059714001651697913188367053087'); - - BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 2}); - T('869.8354526359820716456765000567449871995222312', '756613.7146624438099121'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 6}); - T('118594.4273063315320244062844564170472198563498805200012242127200252960812599679770627273052218882949925', '14064638188.1167541187722341530354253926613230053009933342'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); - T('15459965429.4176806583122774869069153370447277862964242', '239010531078789811116.914'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 4}); - T('5248173.56787', '27543325798538.753780506094441280733789361778933753426582596791104'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 6}); - T('6.05855328019481326674235', '36.7060678489593315124567'); - - BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 0}); - T('907424493602245756936.066129375330541537462629768', '823419211589292150660922033473258691103594.23268549807171826865266573694'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); - T('11439280.9959241551974895751378888566402750717305622394543095198836564669553210222', '130857149703711.532'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 6}); - T('164207.20075782859923311531097410558094817321169039986325465336651402772907533144002814794168144323', '26964004780.7218252942882108'); - - BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 5}); - T('67866.91300857901339', '4605917881.314031310494203432328648'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); - T('2.723397260313830449769700482256736114679660269490922765', '7.4168926374848775741132294'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 6}); - T('145626737347.699863159799647089039014085200730659988131836086866937945539247414906654868', '21207146630535962175511.4592'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); - T('3198723.293675674761595756274163847124886137068077187912', '10231830709503.357046273671271695065871403474525'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 0}); - T('19699.655043109373052433709', '388076408.8175045546569'); - - BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 1}); - T('15625591.477694858909123645800863577029584072458683168542082897370551849161553', '244159109027810.20442572274363387'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); - T('85762713.1327157666976061', '7355242963884497.437336977648000579022368327415840055129120741942567239'); - - BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 0}); - T('41.0148460976104358708576256643898030638770464836414', '1682.21760041067'); - - BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 3}); - T('627.06679575379477143240692835573346249172484449442579029111338455375888695749139590976427077308', '393212.7663369313683879605008384834086623'); - - BigNumber.config({DECIMAL_PLACES : 39, ROUNDING_MODE : 5}); - T('5.880136052847757025272423749873232616784', '34.576'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 2}); - T('74542661576900.1739714442102128431140459355738187797819043083309413315', '5556608394968269531202589612.9'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 5}); - T('7719200214.3705019090215357285448226659983404326837819', '59586051949537602626.95016591737228440200846895047666959869445081113'); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 1}); - T('74629.64', '5569583803.0907402'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); - T('44.05501263636205450407476438041804283847324427155286698836103844', '1940.8441383900203'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); - T('1119.912102354466031064620923', '1254203.117'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); - T('92093628036.6480124503328403126750210810151658188780763586760022178450462311', '8481236324952480852423.718960437545027'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); - T('7.55149177315316950216695542333911', '57.025028'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); - T('1947605507655512.1474872179815308192647511525219417', '3793167213450085186132700081381'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 2}); - T('897186472920280057757.758955997894245720068203481844645803566957566661460082190511', '804943567191132421390195361422932115503582.03422'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 0}); - T('8775397.48306750827108348789044450160735393428', '77007600985827.5591133'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 6}); - T('557716086077.5080956743653150675842959387446784555727262266063122593621607958161147001199667165261203780317', '311047232669614419511648.6130023664452767398438696'); - - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 1}); - T('3.6766253682232922013', '13.517574098263058968167681315043395710343763189956497798543'); - - BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 3}); - T('364.437601989709154496727744417233984148798720533510776338306467381487', '132814.76574400966188457585354574350011547665650395112601058'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 5}); - T('29784617918.0127174734394784458305404701929975', '887123464522004224898.5545193466489'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 4}); - T('374863740368.0156985152529892838083189109926642299794', '140522823842699082383715.919571886197001394994582'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); - T('3321962129060763825931501.6171393711588977731624802456157919679857160686287774881', '11035432386913922898118885283020330437836330418535.765864'); - - BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); - T('3039991938095044282.834999396730197828406224765246402870200714765906547758763203772', '9241550983682863551151813316288949279.9625949439074666'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); - T('5.5727910421977962406401022785010286010813965565340383771288278905072628945', '31.056'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); - T('1809373906.386837382140423787863676125946315451309506008234344142479881132815536036260566', '3273833933113563766.3701096193056864'); - - BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); - T('948722.35086770259132293410301310241', '900074099035.9401838348750892'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 1}); - T('23603002885797536.790280728725364655699852314300322649', '557101745226966849549415425061219.969394346783798760227'); - - BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); - T('1.3760699520736582089086174843894761768111119574016193232032195760251607', '1.893568513'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 0}); - T('14865553.721249212888439807434', '220984687439346.321003197181614764009809253917'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 1}); - T('3293155557597199373259839225.706003736695865575939572351947834646050410715323588632698181660823328571895043', '10844873526533321118731760593542551681937887331657167954.4066926866'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 0}); - T('1.4602844538376761066216387158903803538206186160126991802', '2.13243068612'); - - BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 0}); - T('52497683.2535666615551547765238857555777973908683364642662996875860780953333112481757317373', '2756006746991813.49967765680'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); - T('229.108483256294986105584052287445152310628239217404673001762961439710445106676980785785353195978212', '52490.6971'); - - BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 1}); - T('247788926631.668855265587728589', '61399352161274570866824.398764295216033428917127'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 3}); - T('21424.038976941299431640698751966107735138702410669278306', '458989446.0855'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); - T('719485.015161442678887199799035233897302403555352773104081712230052841078911919691996286833814524', '517658687041.861401507658'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); - T('5.8309518948453004', '34'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 1}); - T('756731558.25262830674557663857258007802853198', '572642651255450988.3807853'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); - T('56599816.250503709163296236449780271198341341082422352679019828047161', '3203539199590783.75467227017766942'); - - BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 1}); - T('315.35186696767786854256245741213', '99446.8'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); - T('21743622919.6152043904934006640996008653', '472785137670415625131.3819412384141603569725008109774351813892945'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 1}); - T('9931.93848832625073050157085444478223645326098496189725178399175', '98643402.13589633051811977376659116574508796'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 6}); - T('12491945070243173325.00123703924746770276608629177675', '156048691637972720536868554818649758614'); - - BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 3}); - T('31142.7911241108894', '969873439'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 5}); - T('323.97605471', '104960.4840234371387'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 5}); - T('5715183064.0940040641822561', '32663317456106928967.132035290253014719696309540999261182915037018712'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); - T('135.35229191926174097438753947924689763303130529240391689831443968668652723708826191007753307865150657', '18320.242927797047184106'); - - BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 4}); - T('1.986294948124507296707366989944167364007457', '3.94536762094493913289346223994950919328456012507449654266826'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); - T('1854467167302463060.67001538852537388423828924920448451675904798181668319798201139', '3439048474602821519577229021879982239.2082'); - - BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 2}); - T('81193654.78972507709037814751156680233229599082421344592', '6592409578113045.952464677461833939906456779681791713165521338857097972'); - - BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 2}); - T('243658571.81955213863332506453273200107839362175562305528292871', '59369499621143847.5904454643435133899921413'); - - BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); - T('1.972442648088913', '3.89053'); - - BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 5}); - T('29173231718.778879604378348144121047338664684120880285', '851077448917566101882.514088939153719024901521'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); - T('2663045169970861026925375.635420072098834063612997764970291415141689017483375036375781735588621', '7091809577305132096990572152434051531398473618829.89422557768661926'); - - BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); - T('220761.160604830397059610011998293759083892046977144231182486245187301213113818936381230594214', '48735490031.5917204821'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); - T('161677855435317442406.2546035610007912236205334351', '26139728938163405854159841438358732967516.30006485122550144217058909'); - - BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 6}); - T('244041886899114069999190717.069960065813984399980837008', '59556442561279983551883153005400521473838950253623262'); - - BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 3}); - T('1107466938973440740730667939506694.2638801341959912170851419737317922658410730057816703901502302', '1226483020919202717870476287034767333832211470320394554682503342877'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); - T('2088927.797138422758659686170900239830365738839263869523289', '4363619341657.58350562244267149496471405124'); - - BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 6}); - T('90061141477839967.2682846126818450599184988316687847204716382695549492605718861', '8111009204291506563499764980695382.1759246268375'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 3}); - T('5429621071395721.253939502546988879109480438494987866198414850987001042506015656799576011128802517427918324', '29480784978944419958421524887597.42349107833570174813'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 6}); - T('1476747291384.9099630858', '2180782562612668171679967.63324'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 6}); - T('9210807993.639856342437524083401141956511342156180578284602614905116773271331676341823693120447', '84838983895699875876'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); - T('2.388242031285774017289777195752330791381535517849', '5.7037'); - - BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 6}); - T('3.37200237247840619012635848', '11.3704'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); - T('113893455834773270196180930512.9915840908366637690221083458', '12971719281987449465429560596505161586489324719573129843872.171'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); - T('90231.00398976', '8141634081'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 5}); - T('1597579508606622211.845652947503721264640830072971865988482347827730509123712404166521804347520039996034940695234128954', '2552260286319776493852490523528001935.48994776557'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); - T('1299424183315225375029397575.07015635096795459', '1688503208184440439916254126997862516329616872207524279.05763620'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 4}); - T('2693874.2163861651089144', '7256958293710.1751161960'); - - BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 6}); - T('5732941347.55256238286493674720703619067740838113000509955135586822000095629002988639', '32866616494477789872.3518055761631860371'); - - BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); - T('68038.789982024004217', '4629276942.217969996065357856482669982723691716245127238'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); - T('16288419988283588.674', '265312625714716342994884296792766'); - - BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 3}); - T('3.0446674695276658405945560356807623150745767505665219956760952761834211468101552516', '9.27'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 2}); - T('79.6969259131116047841695097300091923882482217290138206', '6351.60'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 0}); - T('126.370571227352967491262772615456540499132900009240252107883825190012068734134048217720997378442783801', '15969.52127232748969252'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 0}); - T('88796173.2384202907121064495468439111066566843', '7884760381787547.81840923'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); - T('365543004.8061649872764474380277913079084143042', '133621688362719958.9872107366'); - - BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 0}); - T('143498617762600.4140327037226405237893689515984193391783866884659658377021608257588943250828403643110208744660318261', '20591853299776899056200145422.1846447111664776'); - - BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 4}); - T('12782418240925459479.2031797451385115697726882124289981424172567856909899486963994', '163390216085943917855551726128161143915.02664633'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); - T('12.07324881148295353275508188921102928327377', '145.76333686397455005144032806105'); - - BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 0}); - T('211449127401352679264090.403777356355051577835784756039917073614638523204498613898150412748', '44710733478793476460089809808062830465327473341.01106'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 0}); - T('8434.69565989858107121020381907194564097406849153317203553829228632792387361758032492018751318', '71144090.8751119600030'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 3}); - T('431.790690033956151299657456473777574071370518767442408773272403696713563734140114626948052851', '186443.2'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 3}); - T('1.108018699799390988378447956003009', '1.22770543910513292750985'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 2}); - T('9581559.366976805376', '91806279902900.9593482950972'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); - T('2418839541.0987386261807014430009304412452809170287221944718963714320359391426925314537124868517232384773', '5850784725582756467.469546239192868802578236912006511'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); - T('11040265120287567759934269.263029933332634568404407042737837112821286414662597953247828811089203658709412952839364191', '121887453926238263019360388091188570494838624535471'); - - BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 3}); - T('233.2570187785530519308734053376321961140912819913698', '54408.8368094582511025342'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 4}); - T('29.6490992649274348544759045400715775766925', '879.06908722152055781935911221883768070437'); - - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 3}); - T('7505560981.6906822826179406598', '56333445649877598342.8475019094481329264104906070647412405735303985455'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 6}); - T('4.666365343768356140513396346961342877525930132228624', '21.7749655215223685799362730400310696'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 5}); - T('209228165501008616561872.1477049513127309490959', '43776425238917452235867870727072879650986013517.690781514934992668'); - - BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 1}); - T('17.122151356727858418696401754969183602519558', '293.168067082697642757847'); - - BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 2}); - T('32739585325.26765210723377428518717434262024156135815886665844964799952569026833', '1071880447270480993629.4640435138594357807725479611653996305'); - - BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 5}); - T('1.6928161743', '2.86562659997131621752114765980023438405067892440724267945937722378861'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); - T('16417.554697867626966836606837813475423042958767384549424626836426490725472399363532843792074346', '269536102.25747538817901717219695597174449981'); - - BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 6}); - T('109652272385643.1603769184581163062699906986', '12023620839335281581899617727.8772961473185586727206798164'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); - T('13489.123629030538320414969169194877155101718802208604977345597134035561855309153297129880622467', '181956456.27927'); - - BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 3}); - T('15162908032.86965932250477929505589077613516814656108803', '229913780013263241677.3791'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); - T('2.372129844675455365912878765809140727257324413647', '5.627'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 0}); - T('148.820093791127547454620941738144491984235834280198020332', '22147.420316'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 1}); - T('739871537758100310.43883822919081011754036378492392360075543', '547409892384536053343836850938988791.2508666160979'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 2}); - T('63478.7126270666964166648665771468502603343618655904464016578865228572987361391362408539907916', '4029546956.789716846462443886848'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 1}); - T('77140.793792105688747751462443855549841986175279935245610391', '5950702066.8761715670568717062071879678486494595966218026'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); - T('162820594803834668.752129825654424512211529624619694188452350414129430986701621110932095616631076098099130503248', '26510546092274513134180208644185957.57422670990654'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); - T('204494310168.4671924285173237222417467622712661919483412527661975953571549254104320801', '41817922891277264574994.94380'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 0}); - T('4395.909427668232162220120918266434', '19324019.69626244445210257981'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 0}); - T('5.22775235102390824796354516485007398148629306999271', '27.329394643636'); - - BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 3}); - T('997295.09412022112243931640765631069576943976068322455480694643995328956477', '994597504756.26070722226025041925449713707868740387903881304557'); - - BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 5}); - T('203637147057.7748844672269277496593344371356921412578700817688601724867963410626', '41468087661829834285659.350412232933496521226586662970934783390865142'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); - T('939333.959604513485668563847772506141997730133849933463092593953521840168273751255714815246', '882348287666.2937728893202363'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 4}); - T('4.568369512', '20.87'); - - BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 4}); - T('370.818280526354041083927163168590728498008550586626184882319882834674931772525681078764889', '137506.1971725218006486309891482928119051089854653'); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 0}); - T('9677366.13442750739243118863157357061982716666842510521012211042628756371590553458718', '93651415299764.397079279228147695065210419679'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); - T('459260874.20127731126343992531130965108732', '210920550572121463.814947484719373265508800614967431627085952061224891'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 2}); - T('31.9734264663642204389422311887643391814535306082202464098568847002787713669652098830099427401843', '1022.3'); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 0}); - T('2973063742', '8839108013968540509.06630564811'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); - T('34146881023818508.954756503743080316053431668549275132795068', '1166009483654816582318330803409852.007911'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 5}); - T('7.549834435271', '57'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 5}); - T('457768114718.924178666375597479663315126937742538839621311715859853903792113549247134805042232897618803407927', '209551646853318127271063.5596189'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); - T('2458857125246799394445091629.502227209261508743296310153768826317308293252686594142446545917844105369673045257530483701916834102', '6045978362376954524014907890057287078792404475852907401'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 3}); - T('232.95426589783669381174298578564010084473683056750226995822363784044724761408941752678312753', '54267.69'); - - BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 6}); - T('411369926586282.35173941504630680193130958', '169225216499603331644025273726.130552532747109702369176231397148094894'); - - BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 4}); - T('146.837594711181641908188613240193044745216301', '21561.27922056523889531529752'); - - BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 1}); - T('2436.80241424922206290898076140846108744470830585565672963845308477988719476570192112', '5938006.00609083724509944'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 3}); - T('237641.142572063817719734051264723120416667001252355959725', '56473312642.9559622068518833017478'); - - BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 5}); - T('2.54986118578098487598754727764', '6.50179206675241026831530806973871597654152197264612412571'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 1}); - T('5968940791314695.9391845388865719907476112181090409748506', '35628254170220508537420332407309.79446040'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); - T('7757883860673599094.299765297', '60184761995699906684011270143497832606.405945309948'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 6}); - T('2.2181073012818834324103200205219865836926753', '4.92'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); - T('603896.1020372225715031692835372960243779222201981644175886120182699827032153603', '364690502055.7515356757459417779202315'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 4}); - T('910.9629520458008175934592151820959436914447449057963517034109551518362704397', '829853.5'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 6}); - T('4.242640687119285146405066172629094235709015626130844219530039213972197435386321117', '18'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 4}); - T('1259229966702.622212273094', '1585660109041887045436663.9'); - - BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 1}); - T('163.04833062468649267909332731', '26584.7581194970792'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 6}); - T('4204818551811.1334068235516094940662770670832347987097641633616076970760141535', '17680499053655077194352936.9862782964932'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 4}); - T('39405180.06334322', '1552768215824502'); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 6}); - T('11019819.18', '121436414839837.12468'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 0}); - T('827301397472.2029918861527516536634619742535183', '684427602259459998932963.33834317372593105949228354646289796636815'); - - BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 1}); - T('2.7666477911002694164386944265228742439351110337', '7.65434'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 2}); - T('423.17097521237558847890270524607668156801132098651031712232154305066696431425891584532068', '179073.674262192994730735440'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 4}); - T('79.8964796181302813829514', '6383.4474553703074736391804543616'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 4}); - T('256884.8986204117896931254014585418288760261941990857711922965396545498637125556442506103725098664222399', '65989851139.2192430115427289'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); - T('208901.771039551638948558459935195746717360564690378279861596712182280143337256297483637095086136', '43639949943.461255846177212498507'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 0}); - T('16935269806518296805647.546457060582195325905464915681524239174883463381011239795201896196859153349350411010935076375029', '286803363419570270122726919163225156875554457.5998001852'); - - BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 4}); - T('51576.16987553369007338491641136', '2660101299.0299088953962881552848995811'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 5}); - T('19594015.1384231226764662349318', '383925429244754.5033'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); - T('13803.380831002140583034541319780513750531431940983173205661145824004926065412840500070745', '190533322.36567734512665230751076729702896'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); - T('3.87298334620741689', '15'); - - BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 5}); - T('2.59229627936', '6.72'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 2}); - T('27378680.92056694834550996640150630587355668564', '749592168950216.6421'); - - BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 3}); - T('153816531.812650974480814609014611069782098313441090291614251952157913199023826783428321238042213', '23659525458872269.27721846475011520302565099737'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); - T('2029498.8125968959', '4118865430332.21'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 5}); - T('7473970526006.1604681414601953537014727721512435634625424159607807892328716740512518', '55860235423608802990631308.948719255851037211256093771306843473391914'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 3}); - T('2241646555429607930993.608927689837', '5024979279469426302209565333918945376304889.403534974'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 4}); - T('83117929425.537107714299371091957543379566', '6908590191988567392806.80486418318444628'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 1}); - T('65772725.59339738278078887228018658173869609912689', '4326051431984351.09884157745017974'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 6}); - T('40227541142203473010813785626410.19087001878840388060497980542506597235802568540711096477426661', '1618255066347673101991637745640498016905970250767945408572170702'); - - BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 5}); - T('5470786820.0139452521385135579833672428710925952543352056', '29929508430038295403.2021080448706293'); - - BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 1}); - T('353254.68729598168174020062443678572940775163547873542847911555211434402472387360698376451692274187949171', '124788874096.581801769341529731'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); - T('4710250560799.345071943574342121547002', '22186460345510544746149875.21079977475782182108767576173806601062569351'); - - BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 0}); - T('889742696550533491635.902878780831679082243711108150405478590463', '791642066065014722475930480934055487526379.2980796495'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 3}); - T('54.68423930325994760604974477176105234826564193829924891568556', '2990.36602817620'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); - T('687.69813872076169812204913554689609442', '472928.73'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 1}); - T('1922328.5814452710447231491355356265501994748371717620744762610836', '3695347175041.3880723243439344'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); - T('259.814919028223566794421', '67503.79214964236844196364376129941576224666'); - - BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 4}); - T('89116010281422470.490792878028479', '7941663288478595468163012949770631.031610'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 3}); - T('5932381112762754622904981552.373251673627440940633090556721714745', '35193145667064258780606184878777954613913495498807552110.674'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 4}); - T('893056745827291.2797429722245393357197289561968389609411292397482876045', '797550351267631140592697284483.78129'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 3}); - T('3763501642015094266579640.1219523405439829814657228094809771542386037789129194751290098235201476058052607', '14163944609450310758114750482357005006752272738570.57225865671032927'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); - T('776.5090582120990070056744810742483620827196187879468568581488531077672537925651203290541573461', '602966.31748544096431040937268'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 2}); - T('48.604526538173376182800519112210650467428825886317769747923817613773340459260266201', '2362.40'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 3}); - T('1619107165354498184885.5242', '2621508012902278327380962859916298137513959.447556874953217092'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); - T('2995751.634073306004244447026435588871407905052680216908898588671550117511803869048557530431723092132', '8974527853052.88312'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 2}); - T('75467153073996458962915131484.3993555081', '5695291193094013185500551046546949646554620436546808622591.516878456685'); - - BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 4}); - T('10256041108976420629.199454567907275476', '105186379229014287888491059604397048384.620569192314'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 5}); - T('1663.8453977796919070850392655525052909309077', '2768381.5077126611909711080090814986835313295705839'); - - BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 6}); - T('123529131429703819443118.54931511124012408797939563765987050611899', '15259446311777039991024049097756900338962157854'); - - BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); - T('5560438.142579741702366402248857210395589101314248740685263570978', '30918472337455.6479130284098891831113215775590418915104774'); - - BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 0}); - T('36281644.76988135818686116202939957191270810974653912706871975492103944369636', '1316357747207859.31266167'); - - BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); - T('5.282991576748916225741027424914998052144656285680852715908', '27.91'); - - BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 2}); - T('26826.4127493781769703743437728144843044287785972406934806238303342625783', '719656421'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 3}); - T('2', '5.37625548458271122007'); - - BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 4}); - T('1668.6764282929150311920750595338744', '2784481.0223404'); - - BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 1}); - T('10.2385664037012525496880466372434589015640964461096948083431020419951', '104.828242003'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 3}); - T('66372960095452040.45994587668260499913729362119803066270517659552152382678744234600982770351253058209521', '4405369831832468935843830578406093.2565156168971'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 0}); - T('473407875637291658578.9019', '224115016715413405092267530282257875406682.49835382'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); - T('68651941131739807.174750106032127662294695087292808832370099322483965602512157211426100868174677659683', '4713089021155867956380018732563084.26698833111'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); - T('7348028468128439177110.54556973', '53993522368425976483646062280915010569224044'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 6}); - T('2119642072.680265413658964490823', '4492882516276291566.29881022242536487557872701343389871875'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 0}); - T('759911.9536428739189649', '577466177289.32936'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); - T('106553761.162264246284252054647064491', '11353704017824852.4611643486114409049688739044'); - - BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 5}); - T('14.7456978008019568614040993673761366504625708181901764989192874845947809143096249709002564722127596636', '217.4356036325756670544458007125524938'); - - BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 6}); - T('295414.57241487468020923791493376733960197400575508671338810222236013093392808359746725949898886883126268', '87269769595.06323634741877845138'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); - T('37516617.579099132622513300879884121967683', '1407496594576370.06261787957718'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 3}); - T('1131208352281613015.555408144638994057195008122161118805442530013839952441611311', '1279632336271681894535673114499118754.39788237415185486830'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 0}); - T('32966.69405563486904244570818399194304016536448224495617094756766158966137083438144470645864678778946', '1086802916.95783141'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); - T('31309.0857947795921595950486356877036608601136216829953948182363', '980258853.30486924605479'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 4}); - T('1770073.1489207444615594580039659422', '3133158952530.2'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 3}); - T('1914337.5501650280798142520555737935991361014908729126592669', '3664688255971.8414000128737374263789123210685'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 4}); - T('2062559182194.651333939625538780888106868996091400331597659659567648164339407129332825200701125200486512', '4254150380055468916249334.9191129113190464726018607977'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); - T('12.07145393', '145.72'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); - T('1317013851091420.6561408685542383805866756541198653673575459876412143969639093098412316192938882', '1734525483966654741818421922573.810904219017657492124021067226646767023'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 0}); - T('20690303.52001400622355151906987833847090254985134637242281', '428088659750303.9764329'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); - T('11606.7592352505839337735348351151776393253628311', '134716859.94507472'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); - T('128962450782451915346224.663', '16631313711816332632714461413913179482268224163.627580'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 4}); - T('25034434221195.1626546646428355078518084227214031163523557198228259498967796293623093732280578488089414910009545', '626722896775347450122233568.221736229089870371148583168'); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); - T('5280981018824947175.23073432389104277713300016379472042681039852099605839769140560424539432101265', '27888760521189377071172993311260489494.9228964746031216476847321190'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 2}); - T('162673090405691503.024889494298383043507184034396478832316388582171564767570698269884558142411454657165336758', '26462534342138280932191837518704625.0840975098546'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 0}); - T('5.56776436283002192212', '31'); - - BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 0}); - T('7682710.552671708235374165899366979310815641756553575', '59024041436133.2246'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 5}); - T('6391.5469', '40851871.991'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 5}); - T('1834507.975076828570245235511028215397', '3365419510620.485874651367130674850280070521899330536764207749717544'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 5}); - T('3495480.38256147827415476994571475428636224261289845004330975322527090233565328776690121708467858140792', '12218383104872.1385087696898062860761518572'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); - T('1.26009423159539937638421724613120826', '1.5878374725'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 4}); - T('1369370604956.05098382437442746815592765507526977434916820834002', '1875175853717701043262789.163'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 4}); - T('61111046097989.562614478991002463202122550327564207016373610481385147575687339517642575745', '3734559955190605346508566151.747128467087991987800252614000906073017'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); - T('487839154280.605258799', '237987040449216180199565.97996551897500100835854353148858639128012'); - - BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 0}); - T('26026.3809206474465998782648730859947008804679763994', '677372503.826641430068000281530877034016405774877793'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); - T('3.5355339059327376220042218105242451964241796884423701829416993449768311961552676', '12.5'); - - BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 2}); - T('189237794910982562213.25636508486094088772004804584906546011408616284058885391779627042175154320806668', '35810943022771097721298012826864918201819.2991'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); - T('3771198.65750627716579658341655388678', '14221939314377.1471847'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 2}); - T('29135124.530018624988827182698', '848855481379693.0036377'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); - T('998223.9287829203446196803384884403292209921824958032442949937536171090461827984654389784946553623', '996451011994.8088280477062132'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 4}); - T('5126338484054822038.6885613203', '26279346253101490909404023029363590984.22045482623574089'); - - BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 0}); - T('320594084.2355540715784886905782644237424727036120667152617154249798799923426746035027', '102780566846833539.6758377523578'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 0}); - T('2180790.7087754998512230743198519235426181143993335287947509925434061761510853', '4755848115481.5470038067258431'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 1}); - T('4435299142639732.0386665272768109416139138688675365733', '19671878484700742088824375591214.762823606521949640217195100557734'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 2}); - T('355924722776.6529947424', '126682408283637287091499.8123529985117620693781205410971392972914'); - - BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 1}); - T('1840.27953983121746818190253230579', '3386628.78472139752'); - - BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); - T('18505.45444317533478496724906701013', '342451844.14843774'); - - BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 0}); - T('1380998315760.07536639428018906694759131234868833646200425311534294649362527033527763552', '1907156348132164826104731.69607807136577'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 4}); - T('15478.581565616610788736047569976878217626279567162328064930393795809558245153963295159638', '239586487.28344637'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 5}); - T('20814354.1066762193292296130907', '433237336878109.19638027119868364020593141'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); - T('65411343534377893951480143.0687813', '4278643862972400711315519535941613397047166597617356.53505313610762'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 3}); - T('26.161836991932925045265787369493587190351416331869263156799084171994782512198', '684.44171479247'); - - BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 5}); - T('4.01130901327733662798257776541675440146186278181542626669368510258079411649993922721806882261901641', '16.0906'); - - BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 3}); - T('1149242295355.33233473660241121236631015179107791864017709795', '1320757853433592920847063.41923783204587387124699776335'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 3}); - T('9474.726373832', '89770439.858993859142728578146543311908'); - - BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 1}); - T('8.83176086632784685476404272695925396417463948093141782621020297255713993823544284', '78'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 0}); - T('3830962978040350811709514.1639124190557328292714921812', '14676277339115793415584423492635818739231491629096.2'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 1}); - T('904094739518026362.276858998253417589801385050899447007512426103468322262', '817387298024167938863983875545245626.80'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 2}); - T('3898018.2159', '15194546010949.81802721206885605'); - - BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 3}); - T('184916754268166424.532451013579940568421105901355402407206681792452037755126944803242074', '34194206009073445584566849436943803.6680118993321070740'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); - T('10728918189914538012.14436634401825539813105200873037997842267828754845567', '115109685525879046747891569700090752540.64852941266'); - - BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 5}); - T('5173978485.87510754763548985924623523505620610130206120024600441', '26770053372298470472.82008752828'); - - BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 5}); - T('12448083579765518960272733448.844733656410419557424433748732709492340453674614639609498', '154954784808827937239154352490553377950290394508934428937.6950287957173019'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 6}); - T('21937056544951997887838.266472241058656756241231521937385200509335828305313379527318257363340679517701971098439856037229', '481234449856421286927459543035431540893700257.7118353406076308244033'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 2}); - T('8705805512511376.661415004088266418167596075698134210732650646137955094273212000791730326866575509931229837909597', '75791049621673473659571306712104.5913470'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); - T('21744792388806330.69543805888148448016988971611269397259934845377013557', '472835996032289729681394667373604.66074661819409142691068'); - - BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 3}); - T('364148032238911.207459019623811970686792287639949655428263721201429401774057623001667', '132603789383471116094969998370.54564120810660443599509'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 1}); - T('6130.86992934880235087497305800565551205615083568452544051362005512506946811033000392166546', '37587566.09059338872940942140'); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 1}); - T('148902754396098661216264733282.2432677199650259537991922683099806354990954412183841781360864322902131461744', '22172030266744879178523766174920227318932007998329511426386.71431306'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); - T('2.485558288', '6.178'); - - BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 3}); - T('48675762028559728895548.12665897790225369108328127728148623968749329776515932108839536622078517', '2369329809060977133824105060183733685306224037.8'); - - BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 4}); - T('24.7386337537059632989284591358444621508831953522417226063918014385697260780257', '612.0'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); - T('31.610335068913719526253073315531', '999.2132831689965253909026235101062925484544085049'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); - T('381.951720361337291359017000726333760115427476940754', '145887.116686985200'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); - T('10249810.4776964144606649104434449145329654563', '105058614828695.2'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 2}); - T('4565314072683631718401.4254286569265369656898689812980558791518310535475002322479184308757040096111213195929252587721798', '20842092582243208192634490035016683394003768.897'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 5}); - T('11921.919157895436980161095883273297050465674732349580111298784795959952105486977509191', '142132156.40739424522513940329925953476743994585969'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 5}); - T('42221784994101.50903525126461999032247998888873167843', '1782679128088135365358664827.18789866270490430767365565'); - - BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 3}); - T('97847.44665485852461064907480959656322328400159999501985784579886747875', '9574122816.8753846778'); - - BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); - T('234205.612503318998', '54852268928.0548121688'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); - T('25529284068924417.312616362288832310787818', '651744345071838052967175093720670.309523048811416290'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); - T('90387.925862', '8169977141.632377593'); - - BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); - T('39727850756.6674266118418', '1578302125744040621188.10968243099467673952848'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 5}); - T('10922946652.61277809893232338572941735232941', '119310763575824694072.67899'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 3}); - T('1204691748.01962453331240668450742564575254687343257', '1451282207746578530.68'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); - T('2168167871148394953234.1925145526882349014061487960355124218083724786535449969286840357060655099527403', '4700951917480162980663868559509055318620701.436239024401270'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 4}); - T('468012.3980129886634423908716', '219035604693.86811504914527871748991009824119534'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); - T('152027.9034509030131743006877834012496725', '23112483427.6770883018541414'); - - BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 1}); - T('39070.768987', '1526524989.297643871802383576028102147694626812685590152575'); - - BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 4}); - T('1250964.0328412267817990068707571462032258488049181937', '1564911011462.3859182790021956920389318080447013349220674'); - - BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 5}); - T('1.574747598823379695455819287781216314798721967909499025165940557210793017153248', '2.47983'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 3}); - T('99.82965166080369078090076790080975783846377844493852381966581290508065966343620655848892826147126', '9965.959350717405097'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); - T('647.729457744512342323271374802023230498738468582236031741072278', '419553.45043'); - - BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 6}); - T('24697777055157274614045404601142553.70406771835510501104735791650848400272399441549342218507230159973062171502661103', '609980191466253139733233884276803110291097008877197723579364303731893'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 2}); - T('13.6431266042795337', '186.1349035404'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); - T('173.2188929263660950499725455519748713007516020857763370494332244159518279439900397902257637451', '30004.784866635882'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 4}); - T('46143126703751828496.866649027371445895940007418220059475791917987944465104919918209683758208288829164', '2129188141998495085389252895218765450927.7063857106'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 4}); - T('64866.977655547797763275486444509839974560207365651674817907766434', '4207724790.165337269565'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); - T('17584290857147344.415797971139463901060315043736480054621679443194306011937028118601468078448454466113714486390327668', '309207284948755688576114250910516.74'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 6}); - T('2.94358860030385493881670889399291911046241548916385003586188315285977498131365266043', '8.664713847838807868001451403595636253922161359756547'); - - BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 6}); - T('424.99280768859670787492492363122383472286022111724084853084296368784059306715270358792', '180618.886587036545015612122512773593063212916813764199769387313'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); - T('18.31090032843085055141567877490619869051620042759275170646107', '335.2890708377290305906582988852002980024'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); - T('126427741490350.05876064315047378101790577982019123921425265937548', '15983973818350781697093926569.612618127837088601804542393750879971390'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 3}); - T('16.692445803416586201775384489366982', '278.6377469'); - - BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 2}); - T('349210873373756.75981101873418700429959408', '121948234082461977906208449874.02898224579023209742993297127871656'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 4}); - T('10.406728592598156155682425873215240545', '108.30'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); - T('154577239693381679058287.97436120925772268748839189894586354157517982123268495410171938553647222928153513557194250214191', '23894123031225172524806703141007699579590862366.2631'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 4}); - T('1183519938.0327546884078159164077132538648035819895600967199921207723839756282768130542759614616292199', '1400719443721055497.588328093817233056244752470'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); - T('241257503.34869155337527048121955221501097', '58205182922043916.0906037558925342272671667138'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); - T('20.3943935923576801013979387591948549133326048632573667789299', '415.93129'); - - BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 6}); - T('1.486678588956157516725362331766399749551245061708835963596471115535207', '2.2102132268606715586559333071481289982224051499'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); - T('5480561357126273281877150.2516417121681290163460862339136083441886517', '30036552789225778387170901122576813278108089781372.771583915452'); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 3}); - T('186290.73', '34704239588.561202019698480025986856466562575839'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); - T('1019119990.3697989', '1038605554771339166.6912148749760860679670771315340046767'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); - T('5.51382659658824384028874579869515', '30.402283737243896279380556624294805637164470'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); - T('132128402859245050100.944755960799740493288068513067396744451394670499181597586057807458829316094508487338595892', '17457914842134955530797594713735952482525.87431286629942757'); - - BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 2}); - T('11194229425.7115257840132096032453966', '125310772435465796361.6'); - - BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 1}); - T('2514912879934.47954895904718779302011160467785506374230597396840365067162301819', '6324786793660337947551689.6597215'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); - T('23110048.3', '534074334023039.0646'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 4}); - T('2.8178317099209633246681281054844265828694464028893106', '7.94017554543610'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 0}); - T('83922723879121100060348.00424897481020168', '7043023583291202900493646259695479821033571894.5162'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); - T('247358400344048909864251401578.275102984', '61186178220766775849900540163098993844125752619416049989983.33'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 6}); - T('81.917085580481926713094910295288886277402363899734148', '6710.40891'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 1}); - T('1881948645458414392373493267.44076491245651937895770407455779709686155608638313', '3541730704142760714361731732288699331881581040832341249.39126'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 4}); - T('324.26623374592211771183741217403875', '105148.590347765'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 4}); - T('1662149798843078.4069237887302461551370934948249024202080631', '2762741953794086012243855678967.8'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 3}); - T('675642835238849681736474.578123268849552096600873729347635703046100261327366969339596447149784597367597431761384272288381', '456493240809591377271607984202883887598233546223.73731084236993405421'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); - T('5789496541496.6234418909569785217083510247010199083639377506967258726477304725684424188767358767048961015', '33518270204001364079261054.6956981043060432728471824679780846396880826203'); - - BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 2}); - T('3898118405075.003146968384302560049987066028159380764464068397263645779570408017201600465061', '15195327099984486320266383.0779'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 1}); - T('75328512486.03568083840615998761042897028410187816426562961651629515834372852207961734642188953302492', '5674384793358833469158.7800150542809744853291679751200'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 4}); - T('5798169.528389841210757172244446608220276215346825819225777169316424526085117502743814039', '33618769879948.4736420937'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 1}); - T('29119162498.850656252014862720939576335974293913751260474542935386631954376862430745731464008616766564510391', '847925624634470395269.44447102349587477'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 6}); - T('168.23340288442161387499486814301418324124', '28302.477846072118591243169889731912227'); - - BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 4}); - T('84.717176534632', '7177'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); - T('446.6528853595373338635581695148843692555354568157075769833229135178150603561840120444549015301812', '199498.80'); - - BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 1}); - T('13.385220437154074004622844494', '179.1641261512071'); - - BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 5}); - T('25187.464910513177055609', '634408388.6183325662617834169211144795841400981156'); - - BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 3}); - T('10422.15813601939556380841988779887735492607695215255973816250455181808482251151607984617041577195472527', '108621380.21219528176229683714575'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); - T('2208553892153424409400475031042.6572327746873142396027723799591270120723216684906399117752180406894099292', '4877710294546039817041980082316047470007304183838484383878968.2209'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 5}); - T('14.4260892287582664239790267726919919828624026033250319230120150996965846303871869390740935534225811', '208.11205043609527416641080601664504139952660870888'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 1}); - T('50518253294056311797.1731845046869551098465', '2552093915882431397702073747003243930704.039747494091408300134971'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); - T('23832299110227469789029554304.948356558865989463643235875638019404450568339468087397165994402723017298021132402151310599948', '567978480879349048201333612155955923171671328708933141291.1'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 4}); - T('97932545.8343664485428157368834804942294639641837112693533951', '9590783533600285.2329863436120504074140917839'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 4}); - T('662542878881.876031608894840844837559122854993420182484052151826850145', '438963066357084252820457.6516316337481795'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 1}); - T('2.408258174236454324395775462046657264396664516691587445008530664989455090566', '5.7997074337767003950634583826104408675441912175'); - - BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 2}); - T('19840.4326250311386701679603718626113117527540565797995311111902694479563', '393642766.7484'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); - T('15364571.38004578150166243985432371567701531656413692847732610913', '236070053692521.93070035438755932153027579886205373478180'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 5}); - T('557.884441439264', '311235.05'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 4}); - T('973.3437664448876512', '947398.08767712'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); - T('253803.10166048', '64416014412.481521657597915615475256293'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); - T('10979495135456507.342255564998728572391728604678115723240759397693', '120549313429513108511981910613966.523081580'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 4}); - T('275756032001872551178215198414.24547397537996419327607093729301388962050404448273494643547281384033137267141232586354706', '76041389185417758565246602361525083482592333735384806760948.73885982708'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); - T('622715720.6863237085763126032498599017169901239797664342712392168097039974270476', '387774868789887525.14937758830956496718493909569236992782655630649990'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 0}); - T('168020.06571690822552882775092697246077349555511570099299844483404809694983876654837809362564', '28230742483.514158818734'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 3}); - T('11.7588160560738046080529419704288531653704396950661705922012083704', '138.269755040579104756364889'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); - T('32912865546108258981522.757929715992045216906368802942491', '1083256718456200104722022580166775873143293905.1344841968439478203'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 3}); - T('4.166533331199931730602544326927', '17.36'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 4}); - T('13.1438229181471400406148696794413041749550438491914', '172.76008090361'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 1}); - T('140388.44002034207101031451179095355772785653', '19708914091.345183231428356292375830226197664009'); - - BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 6}); - T('242308.729399', '58713520342.9660909760390092854509'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 6}); - T('563619360203.007379904114453023253', '317666783195647379114879.695054964988341456801'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 5}); - T('59647218914478876.7858096522484430132157141971', '3557790724231766676348271355770172.83342006'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 2}); - T('1615983789784.28557364029229913482567909068840532382641403331829', '2611403608845582067513660.0062671164003418'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 3}); - T('49824048.11723328394671314846823689101965932', '2482435770788377.54686097356795579347173'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 6}); - T('3873399959291556633217.406801030839980478563896498128017913070289853996800649949943', '15003227244639832583385968352771422955089431.37902415349699763'); - - BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 5}); - T('1069094409.0917779579569', '1142962855551297884.450653020529661'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 4}); - T('722662624195087368689595270662669.143097757212534864309051652910227081852406821943121855819128756801032825995791664965218054', '522241268408530075571015801012379480742910546734575022468778895822.7'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 2}); - T('30862804.01109', '952512671426425.6135331321216487473802'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 4}); - T('1102616829129019317396593.875343928415659074623558923629097274645985317064624881354801034751875382964051628994443076758824026', '1215763871878532982271799732726570299157805883536.58539'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 4}); - T('1.732050807568877293527', '3'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 2}); - T('168694642.8213633884274824334697145155532567219877', '28457882516627370.2'); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 5}); - T('38.82141524469451899324885987106050839542190648554377069441850531749678620576749', '1507.102281601'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 0}); - T('3708639695.845872597235507175528689024964901895541187165232455597159738447', '13754008393603766407.7561988'); - - BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 5}); - T('38154.94717636627489849459718350118176052576391544419824369739236599682079', '1455799994.031300773784046392217039165082991'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 4}); - T('53861660.242327701941421642702708321820603', '2901078444059944.6398231'); - - BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 4}); - T('66519636.90005441495284260944015149981502627014844358', '4424862093315080.93581004496660187296078112048061051'); - - BigNumber.config({DECIMAL_PLACES : 2, ROUNDING_MODE : 4}); - T('637.68', '406636.4438334'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 2}); - T('41351116245595004128.850620728637405181715', '1709914814756711069822067981893933170323'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 1}); - T('22459732672013415497.3853699921391046229573', '504439591698306876553874829950080159407.2170874815252123'); - - BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 6}); - T('11157237081923757329367254.81266156634018984033545412569365748968958548685350160685800062464993237', '124483939302254559619977058929566395439363258244559.727038073080997530'); - - BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 3}); - T('95493319361.43998295249', '9118974042665968313514'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); - T('29.769596290034456365817227089424776835', '886.2288632716332683'); - - BigNumber.config({DECIMAL_PLACES : 85, ROUNDING_MODE : 1}); - T('5397955557584682.9062196137312779972149743250300061250217778253358986584900136549913495459719480101042', '29137924201659364934764001707116.55318205283801807954313080327696327'); - - BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 3}); - T('445909149943912057897653.3061127067661639263187209140228907079537075199638', '198834970003702246826932602696089951470569651509.383300823252946843936'); - - BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); - T('138070606399.4147429423070318301311902897789', '19063492351502107366289.2467253642099'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 0}); - T('2.828427124746190097603377448419396157139343750753896146353359475981464956924214077700775068655284', '8'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 4}); - T('2064697698243932846.565435522719237034364504912661784788335223237983', '4262976585133794377599987093885187119.23'); - - BigNumber.config({DECIMAL_PLACES : 29, ROUNDING_MODE : 4}); - T('1178718920.97866576388857757648973129508', '1389378294673110105.461225'); - - BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 4}); - T('127622.9679188807821988228260439983645956713934866081244383838758589369960872848880087674', '16287621940.42367333133099782844035945474356067647612931678720139496987'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); - T('4184557.3924000870910318746615706242234077254404466436266097920196360998523801490310121360756808685', '17510520570290.216452602485725796055410479930910699820524114'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 1}); - T('5052352182213.797005876498492011065356236496707214014862642148319', '25526262573120516662336097.11698538677217835690'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 2}); - T('42962929756.4524874753904254242420999449242014725', '1845813333257870594777.54199726872487979735452840824704377894604164'); - - BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 2}); - T('168552520711834568.361558662238009', '28409952238313421147614420010576914.875572232'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); - T('2657299207.955928329491651283753102211', '7061239080603204033.72779831'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); - T('3457111251941.512647403949385333329309', '11951618208300612934484424.7889623678041889110925531673150994095'); - - BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 5}); - T('16589542242815120252699.92265991917398936543675728311599787724806007026073243495', '275212911826147330293614584060085860179008690.253010639947'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); - T('9804797931985.8334842704072729046935810090146497008995969314820034132254912985', '96134062487073676975741888.206515315310498601298549'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); - T('225892.20559798985395295116237397587419516789890792906677567114604', '51027288549.924518711712074082612750594'); - - BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 4}); - T('212361356175642374.977190707414996501630173108910035758593734944529542910622890148761', '45097345596758041873283619282123892'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 5}); - T('29439920525604978702137963975872.69380730159987832221210796568237689', '866708920553937325445884613300050781747349007538519310874214296.8110223'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); - T('1794661.69950729989940645822298294821075937317947091890782289675406', '3220810615678.43'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 0}); - T('70943035594.1874458255551741147170761086757974', '5032914299318146884584.65'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 0}); - T('99675095.36380397144700231541652768934274', '9935124635783415.963067816149336'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 0}); - T('338.977137872157980140325006163392742535324091920552022', '114905.5'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 4}); - T('40323.511502232159196214269860943981338317851981421978663218667848589388654136721795079462638130870006184', '1625985579.870649244041736269081'); - - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 2}); - T('295.1603373872948769259', '87119.62476658174193358770628953642875013784920139'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 1}); - T('325.42058050006609869285755826829582236913188764341404269672712729886860377826386017746564', '105898.554213'); - - BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 5}); - T('1.4142135623730950488016887242097', '2'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 3}); - T('6983926090.66911511517713486643086264164426147359', '48775223639928789120.645609367588844026447525761410'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 3}); - T('2393.370169129531592840167459790940738107671625604470887826', '5728220.7664791226615102'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); - T('5.493632677928148482954946', '30.180'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); - T('285181133.07225', '81328278660373834.0857869874879'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 5}); - T('9542652739457662719.528', '91062221305878834929293220504352063866.753627'); - - BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 6}); - T('12098280403299808.817491296272404617641688923237454622741160966458759689038562738845236283437224', '146368388716868184691692991958045.0'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); - T('25105674989.27196694892019569379756456643245439196899838495631560703289', '630294916666955977775.754761194822998662848290817493307378901564640345'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 4}); - T('298760546437220458.455423225771015955168504223011027135', '89257864107466561972186848476830462.4'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 1}); - T('1.1', '1.393474'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 1}); - T('25453431235727183076231582.0045002428296642817772', '647877161671892234077761466199978409616134323779669.066906'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); - T('1166849378.009584249870469632351477502709648', '1361537470961353636'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); - T('120735117546849.465916751', '14576968609051557796737216230.279553123'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); - T('180.802933832667757267699871900802757327723388473217684830187551089875783911937647806249', '32689.7008825000351504'); - - BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); - T('1723788708991912690.6979822127245358278366754115883', '2971447513248005056078047539326528478.011258578775759932105013136721'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 6}); - T('41.31839758166512923717904870453658035', '1707.209978716550800090464759416961234'); - - BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 5}); - T('12.2574125193918108917955657', '150.244161670543100821504558563'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 1}); - T('1971415909727091.042395951589950091275895878232674723637406777994288306294009519427713077175092202052917069713678', '3886480689125093978070206267175.340387'); - - BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 2}); - T('29818.1986588727388202116378654602160649072880350624797884079437903955143243950832588490362445279127949134', '889124971.26'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); - T('1104096573655.7434508163966770646809860896275509688219219768440479417337', '1219029243958352523057154.72'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 1}); - T('8.3212032754884674791676327316', '69.242423952'); - - BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 3}); - T('2.83003939901903', '8.009123'); - - BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 3}); - T('340.03323361794512720886720764159962236524054263630048376346443471719835370047017804718', '115622.59996467604822471094600529392511693650574987150'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 1}); - T('275469969089.0278368513030849885226902642614972231941872', '75883703869909951923056.9925972076612838068953091606028'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 3}); - T('1.7381024135533556067543983015209908994079067310222845767824051781162295524', '3.021'); - - BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 5}); - T('147188.397533864935817557107794698076331354474102470320276846588830452486', '21664424368.58705752'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 3}); - T('13205967.790168468376219309952073343238141391650648614253222880670277752337543824936186866', '174397585274967.06'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); - T('476378245.2022326695078600546489393633852826695925662433781243683416850986996053', '226936232501958513.404536825694807'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); - T('65441262.7320917904408200255581619450931183912735051626126918347697', '4282558867970665.8685319872056422875263001'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 2}); - T('16370078535249', '267979471250201715812551325.0'); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 3}); - T('58598535224572228344606081143.86965847762937769186434110613067109010826343324179566657415332264633113223594', '3433788330465432215791468757905667403887370264585778014417.069465'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 2}); - T('318363725.1170424420783194862296940836221974113987521316095299779738219371', '101355461470399760.7'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 1}); - T('14365771163.04683583', '206375381109028038378.8968049886952690030430276282428851486182857624'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 1}); - T('2841081846208924.95006940291133134386661306911437159092547083699830973529759836', '8071746056857913481680923737647.56'); - - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 2}); - T('131.3328926430846569131', '17248.32869'); - - BigNumber.config({DECIMAL_PLACES : 26, ROUNDING_MODE : 0}); - T('2450172181.50221018709980940566629037', '6003343719007299620.145731224358202401202766492638826695870673033440'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 1}); - T('175.721010954473741615074590589138', '30877.87369086228070118'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 3}); - T('35222503818695.83554274', '1240624775258042717246577010.284467326536941313249177'); - - BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 4}); - T('275332.808008853169433992082394650601012733904717450517250251808', '75808155166.04'); - - BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 4}); - T('650535575.02591020903090816952476015222892057257466848913366015211767330519338', '423196534374291650.4612554166'); - - BigNumber.config({DECIMAL_PLACES : 47, ROUNDING_MODE : 1}); - T('406927200.63717875393669232657792854954820044504469731078', '165589746618410732.8838911359'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); - T('3.5', '12.2'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 1}); - T('37755263902.770333976947348906520419869045275', '1425459952367832590789.24209908593868009183303760839070054881073325'); - - BigNumber.config({DECIMAL_PLACES : 30, ROUNDING_MODE : 4}); - T('5', '25'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); - T('207981785245332.655650133225843609703074411112915893328590968293802716495668521411178574935737507656194691295', '43256422993835672341998199525.8710'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 1}); - T('5567.151876678055', '30993180.018'); - - BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 4}); - T('230454239.20351432886371300553461777852426637742579329', '53109156366870600.60918351286261378516983689388197643'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 5}); - T('1', '1'); - - BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 1}); - T('93700655057314214506084.06304464429', '8779812758169783883346075569138347125163328358.876'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); - T('9.852661929651296017820353932148571', '97.0749471'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); - T('567906032003800411043011528704.9630913901', '322517261186301576710825760318275219851051098240516062527531'); - - BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 6}); - T('1.14593577918', '1.31316881'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); - T('136701658884103.983801784031791378405', '18687343541665925641857895181.7974776695004112848393'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - T('9', '77.476'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); - T('5939114.486012363442761208219053271364071174533711946796290607324372252717149892498', '35273080877961.90'); - - BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 4}); - T('758230332146782649.038', '574913236587420337445176452427091337.30'); - - BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 5}); - T('9666198.978421', '93435402690422.29441946383951996502994575376130537'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); - T('2.590278911712160295850740530343268793109490349355580782704975797477636584901', '6.709544840460733512694560285948463771031066891686610162271281426162621'); - - BigNumber.config({DECIMAL_PLACES : 57, ROUNDING_MODE : 2}); - T('5.518061253737584236314019174438934514502897225542757968064', '30.449'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); - T('2649559.3276549431175517495047876221738510158494831871465587320520938465946988', '7020164630763.31422095634109838375574'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 3}); - T('567.9550364780740745791662861971589109151899', '322572.92346081045270510896663891363296'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); - T('3150748169414198847840463.18235887773465431759166732173861612818759700849401971501876448272195126779179581325159644604856019', '9927214027066925084042058637410661418578292156497'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 2}); - T('6230.779757580163866697716030430928315350835358299363369491', '38822616.38747072560206254107330849348366896430098893811980691'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 2}); - T('2.716247411411559909781469174249066399553542751307', '7.378'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); - T('1003856.804189946449097794004928186526019323205855400434577744585139331157822001974710614149317739', '1007728483318.452486681'); - - BigNumber.config({DECIMAL_PLACES : 72, ROUNDING_MODE : 5}); - T('58545618495785373747.978660683381606360982662056343866125407934242953992920901245175791334319', '3427589445054046448675910703464645073846.568134490845289998323'); - - BigNumber.config({DECIMAL_PLACES : 39, ROUNDING_MODE : 4}); - T('152936840373282.069033230237997018443718074008255872817', '23389677143362760272547678245.15312539480334913939812559754408447298'); - - BigNumber.config({DECIMAL_PLACES : 85, ROUNDING_MODE : 3}); - T('5925.3196723393751424830150929842214599276197242531387756086505181454007563045132273149778', '35109413.219412'); - - BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 3}); - T('38561228.56697678575069939167914746425178007661373044851182281245001919601239245478067382', '1486968348594626.53354241638419629718421662019251450932947890'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 5}); - T('150.4509587455', '22635.4909874539178687243'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 5}); - T('1.42777813310472190178856389527377945214335953146126319604328603730379698595792254248379', '2.03855039737200497185073691500462232203792065665077273244'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); - T('516549215.787659938423166339922918873941357009613190991233143989', '266823092330846471.379278'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - T('2', '1.08767122699'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 0}); - T('6324067120009086551.5468269550550503238490888524340636718633012263225092', '39993824938380022323743029539005736229.3283338711988086216840448390248'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 2}); - T('144118.390048216955510241008109108904440825', '20770110350.090'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 6}); - T('18.78297101099823345', '352.8'); - - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 4}); - T('625521102275061592166085.7029768359919241933', '391276649391408064574867871389972320049448749231.515233113926295781'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 1}); - T('15882418.01726333951134210284351839021652515057337109745443', '252251202075091.1486881249278033607224037158843540912'); - - BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 1}); - T('9246102.56100069809273634059139333855094718263186671420242936944261575893351481020001402555139465129260003', '85490412568543.6679950745889670338728'); - - BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 1}); - T('60961608.064554172663083', '3716317657816316.3414696396181849068766696759170'); - - BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 6}); - T('5246979273996.215099692426428798175290449427111226766305846934068259604146954605057636536678', '27530791501745848489064024.8188180632265280334699492709026'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); - T('549012.663441058051793486405383817407015996732587541151595200978084268869699408419983990553', '301414904618.6444803'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 4}); - T('143455.7859397685383562199471977165574195449037114065988291931607472028', '20579562519.59669265955319'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 5}); - T('7323.414075814701603113726796738850491925289154116673', '53632393.7258409'); - - BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 0}); - T('314146057801896.072108842090558464557933909765109713994989546', '98687745632472227996598145632.74641148442027'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 3}); - T('1980077181169544258109.45175016109951535899380651346232425215206090353014542452514108138787115693996106945620698162', '3920705643388328194332944477286896844012715'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 3}); - T('6011.1', '36133937.82872246239'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 2}); - T('31921798365272.20937299799446076643740006676603681348599', '1019001210873095498660884207.3946941973644977'); - - BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 4}); - T('4.8579831205964476879084184791886', '23.6'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 4}); - T('532180335383422496024802938009316.437231456810652157973165941886814685643110949100858986799826492779541359875188007141128020804568', '283215909368812049909044402175454534173632261029912991407795749397.57'); - - BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); - T('4117620393205561878616466439.3589035337592787404765061242925453323082755577389136298123562314912920363974305057593966', '16954797702542326015871361358548968955831149713211464473.1194145872'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 6}); - T('125845316.009946996954481751436769926191513940640832361751949762234621432238139835729629824687966125681673', '15837043561643421.95007453'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); - T('43215736562696288.1278295788274110509465500800588178280120433', '1867599886656364788451547336030574.1042929'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 4}); - T('15621491479513403048.699533910172088405978421413948149996097276644744344976', '244030996044509850142368364708463636903.065970027514531227023'); - - BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 3}); - T('178337437922.3409184119906563307617679811185757303031127956447827491012301101339529853906621960842816952844554116', '31804241764704800710353.817213026160423493644719533'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 1}); - T('887156.5304358788486852760691897281127658626051846106550248530081803993620243050311642', '787046709495.026433990039530'); - - BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); - T('507.236726280487857380940671340356658005564340464804099830756705102', '257289.096487746561'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); - T('706928215661578.645391690986420023561721605027645326', '499747502098463447175418473761.2978027539601447630695939'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 6}); - T('517763510430698606317.0809006022190406', '268079052733520144503181249583007928315915.4142727240345924'); - - BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 4}); - T('28120380999784456871711599714211.3366834435766268345186681299717226185752325559124860129892133352608046765821533895', '790755827573038690221243071006380153898932673099784811839693348.2'); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 6}); - T('15996.31328328727145297157844857483958854490192496672111354158713663533836276729421', '255882038.657072806407074465204520879667922106288826705864274522358957126'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 2}); - T('4529.2020575270077036355835603989646565391897334057016463815795973838051013483', '20513671.27790688'); - - BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 1}); - T('11.957', '142.978068453'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 5}); - T('1685976945242985678.95815067126816165675418912553152194874360838240711904223001193', '2842518259890869530436269343367542397.5276842644433823844843054994'); - - BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 4}); - T('375790983.100062192270906028735048485455706166096392111303292385474398132353985937006549336350115', '141218862979311228.19925'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); - T('1.3582121735950112188773107283180479288740509274225903562199127996284062', '1.8447403085016848904555'); - - BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 1}); - T('373517970953920.4727120160117475904085285980006296740379565850799987331831582', '139515674625533777927629498890.02832807275'); - - BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 0}); - T('130670434621810838954485430.74993708051', '17074762484252940770822154406823463583074092132494098.1620220080582134'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 6}); - T('410862.91578166713390158', '168808335564.6133'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 5}); - T('1.056882207249227940185147536423171386481708667802783', '1.117'); - - BigNumber.config({DECIMAL_PLACES : 97, ROUNDING_MODE : 3}); - T('152.6779992371273697633357536044552314267940328982004863405769613320275457342815692626846477563670374', '23310.5714510522657034278023418482838530446'); - - BigNumber.config({DECIMAL_PLACES : 61, ROUNDING_MODE : 5}); - T('5045832252789636.3813168206783005421277846727380224180447331191378125099729439', '25460423123292136945025493632037.90746370'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 0}); - T('241.0932155085819555358790117930184281430544398516041254679339298261706270710481942', '58125.938564267542760919843105102271'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 0}); - T('817025.371828418518631071224096112860591604381801846574731525820101525218802811325', '667530458211.36553674192'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); - T('28278311609946.326736102526929532491', '799662907509225213536765867.66273'); - - BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 6}); - T('1.60044993673654159696798740599151325319220173155080452821', '2.56144'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 2}); - T('57250.10343607', '3277574343.439725271285333261007'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 6}); - T('110855888.6785004', '12289028054700075.1523748772313326451842826700743417901399875438785852'); - - BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 6}); - T('317340360.91013300290215375746814647227032587585124984322407432345305135787860411883975304799', '100704904662573470.40604311931228040'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 2}); - T('30794104978259578447.5324907738864954704313972589515591946319482', '948276901412071352410750952884177783211.51'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 6}); - T('904743.1002686033189575318435946062559210433293', '818560077483.643999'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 2}); - T('814.22285241569076215709135504419403461514193802087829114916346', '662958.85339594374'); - - BigNumber.config({DECIMAL_PLACES : 40, ROUNDING_MODE : 0}); - T('143152984767.6392799439406910636477216233068934157431', '20492777047883963708442.98940241835545510'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 0}); - T('194263.56051042638141037702010101367144786906155207240685722988634', '37738330942.18809220193041257372062644812542074623487171376384576'); - - BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 6}); - T('125613206310637238.9999516821420060389669668726285618243029863493137', '15778677599638715084039823531413754'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); - T('2.81203323799266774393606177414945136596491179572335714244696589280445996807268708486433927395365', '7.907530931575527548477411073438'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); - T('97111976.5122288174252479213412431470964858043', '9430735982111681.5109964772635493531635006539282859130'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 6}); - T('3949738515.41597806049335653753381952486682043359067751877565231', '15600434340160414359.0242581826605547758376333581'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 1}); - T('3506245338782.0109313646218819195242298503032566600274291448066584621385570357489121387', '12293756375730578609336028'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 4}); - T('131730705.496855457', '17352978770699264.525247991247407117213299374535'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); - T('11.2973449', '127.63'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 5}); - T('848.3895866356', '719764.8907118'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); - T('5534.674100613332409185919669221553225849120645345046040040296971736869045359760082626174208915379', '30632617.4'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 2}); - T('10928938620655456801.29603452229846959727304567882485936765429318591408', '119441699374054398699281419105567220380.0967437459074243'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 5}); - T('8725513451707327112558.6421593666547417330120647038', '76134584995925513871275158019859409214493256'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 0}); - T('15138902098810276416.34547477556955649142152996550437235286286', '229186356757362192283401407016237741007.875'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 6}); - T('77016750197767918492761921.18729300767631826805523375696015268816409374420696804911556102049294908310575896539550300168736', '5931579811025384712266992972162620186506533282884778'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 4}); - T('204726156.573360406099498017635273106', '41912799185300080.215440520642760629606577'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); - T('18354.9618575334846703385169041300559086', '336904624.79150907'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 1}); - T('5.2702941094401932817072533773788105939199657130326470941562465397903460264359252040580345287167', '27.776'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); - T('1506899789309989.325166093578631118018664419471205880907150775938926778426237139996792273511931625682', '2270746975022490218466170988903.9034'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 1}); - T('215.141797893854182599917347182504049580948821046088961606891404751873995447073405879627656862967', '46285.993201'); - - BigNumber.config({DECIMAL_PLACES : 59, ROUNDING_MODE : 4}); - T('5619123349635224222077.73689475358389819964179507664344923519119631866482798769645', '31574547218415782317658255169091503768595218'); - - BigNumber.config({DECIMAL_PLACES : 74, ROUNDING_MODE : 6}); - T('3139311096862303881033372.8895562022105500271168912428067595756172195924006540181335036545047807615', '9855274162882801500447430900223953535768965599628.60066266'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 0}); - T('5188166.045323001', '26917066913842.5'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); - T('48.006249593151931618014834046061943060009707858084284198526528', '2304.6'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 2}); - T('1.099164138733610613605106295601295', '1.208161803878'); - - BigNumber.config({DECIMAL_PLACES : 49, ROUNDING_MODE : 1}); - T('1215373388900855295845.5639091709273307937490329590109938808688535471517', '1477132474448349650830670930172186917647227.199322184697'); - - BigNumber.config({DECIMAL_PLACES : 11, ROUNDING_MODE : 3}); - T('41886.32804080003', '1754464476.741510996586572659655625634656330393988765738834499008646065'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 6}); - T('2930.8115486762881469691621854256971849413713695023369381527515359143547703303370877901349455103678', '8589656.33385430252628284912359208432320350710697'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 1}); - T('196113185633565235.48902239272865560851203376619671611896859555577833436790431753', '38460381579345217875459335568935383.8847449697048154978487350092029369484'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 1}); - T('1.3090836489697669430592230864645135220438796259107745885986886542431248034364317796928116096', '1.7137'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); - T('6494.1269986060183145522727735872976974', '42173685.4740236118'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 6}); - T('1.73205080756887729352744634150587236694280525381038062805580697945193301690880003708114619', '3'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); - T('510173005.753621652801505640054349100211743000777249630455648526090128271276356538524042100252', '260276495799684872.0535671973932244012807052944'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 4}); - T('26680.140555343682781267465538767291165017590933503085728684041740432806578026822495320310875029221617', '711829900.0528947178462167211'); - - BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 6}); - T('26863311087875171271392.514957801132618076235905273081446630753668319', '721637482603957117805410790743695797070814094.4'); - - BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 4}); - T('42.095644254289553432987753554042034809688485652611694000319150583822', '1772.04326518370109313123764508971031570992396357099'); - - BigNumber.config({DECIMAL_PLACES : 45, ROUNDING_MODE : 1}); - T('29.162455980379039696650800234586962597340058414', '850.44883880754521733664670163746907111624452011747340966506055962305864'); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 2}); - T('174294956414350158.07876863178146700685', '30378731831480221313550099920962541.2005954592883112926466593'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 5}); - T('7.549834435270749697236684806946117058222194704623380138298626905710721953917811195582452074148', '57'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 0}); - T('47296675573534188016.13909410443959003286535401918757168674179806460628276222655770436524602843813149348446075', '2236975520308145512917915800636179158586.5092232275216783'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); - T('1447945.6262667282803484290772440854', '2096546536624.94796979316325227120931989581'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 0}); - T('4.3292008813174583991369', '18.741980270799858523549010'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 1}); - T('2849247060619898470261078632206729.3993355880326702595070558832203445897791540572152075', '8118208812451131388164025563919715495922430919813078457425427917914'); - - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 3}); - T('3.4829585125292549197', '12.1310'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 5}); - T('32.428290118351907948165411821421678725137118993804751360645501', '1051.594'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 3}); - T('7.2070479393438198497379099999716403294014366391234593782940686026097873630434300194405', '51.94154'); - - BigNumber.config({DECIMAL_PLACES : 15, ROUNDING_MODE : 6}); - T('3.605551275463989', '13'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 2}); - T('603824436782267945465764574485423.80547609420748446504714711955721919730100747232448916748085772070372661156640640062', '364603950455423098555431241498110457415113057007663996510897977425.745632'); - - BigNumber.config({DECIMAL_PLACES : 19, ROUNDING_MODE : 4}); - T('4.3574355751624058321', '18.987244791690926526060867101645214646023908888'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 0}); - T('504996390701500.435239100967145881400957693439105021537528696911649198853064966592673953962003822544', '255021354621542475250452411149.0055116842377539'); - - BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 1}); - T('2909.86260112701154717384254378546693847874984', '8467300.357437657503048755260363563653074'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 5}); - T('9.3053479247151205055515881569599031024893777073506787564241255718300181642', '86.5895'); - - BigNumber.config({DECIMAL_PLACES : 44, ROUNDING_MODE : 1}); - T('15184837.76261575421430103273013272422421584951851796', '230579297876961.4243352370777246641742839628933607349'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 0}); - T('50659385450.8214538694263336502871503348032787319532637210737215146773327181', '2566373334254900398902'); - - BigNumber.config({DECIMAL_PLACES : 77, ROUNDING_MODE : 0}); - T('226.60228379499643935590935027196664811910610985785113122241953538017762352877784', '51348.59502110810590185955521392268'); - - BigNumber.config({DECIMAL_PLACES : 22, ROUNDING_MODE : 0}); - T('9175842.8911770299558613410655', '84196092763564.036005'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 2}); - T('62524.6899557388029462095111297731720065761609804421739715387797639468988712711156019109649322575312', '3909336854.0612647523247262815157065521719556832865767218863239798'); - - BigNumber.config({DECIMAL_PLACES : 80, ROUNDING_MODE : 5}); - T('652.31309350134792806991152377498486054402221136563232349988445782260141722659661051', '425512.3719532982845082007576'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 5}); - T('186832499748734.4829944850442559429780865393108169056074459010304450005', '34906382962360870651268614097.94565831926234089039'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 2}); - T('3693959583316804.51199229840601385770877601259801966369268344952147731012934598215128326668350642370497748936308', '13645337403178060015123543336999.7073728144053018493'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 5}); - T('36.94471545431091826803359482480916267400888', '1364.912'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 1}); - T('43406.38666118846617211', '1884114402.9806'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 3}); - T('31987334765.001851900823021837506682024607261426616460152499', '1023189585368296079968.1551605'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 4}); - T('18838.0008560899974069055717427261526855765440186889008088955787710407', '354870276.254047475192657981134539079181359836556514113293'); - - BigNumber.config({DECIMAL_PLACES : 50, ROUNDING_MODE : 5}); - T('84947581.82669065818681578404113066561367677316674137015818', '7216091658202304.9799531382271756'); - - BigNumber.config({DECIMAL_PLACES : 46, ROUNDING_MODE : 1}); - T('1101.6975972788540124782719480347417662099926636854', '1213737.59585'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 4}); - T('167205274115.103780530647', '27957603691906994337374.3099966843916195600451'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 5}); - T('113.530603646298245333104493769623840715435780348102499661940881285297460005634412373532130963', '12889.19796429286843872'); - - BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 0}); - T('82445912016.2463318822900430706509122231808029943890719024634238434031416371678942728723333531287386', '6797328408190631297644.10179858770371764'); - - BigNumber.config({DECIMAL_PLACES : 56, ROUNDING_MODE : 6}); - T('207651.3290995157162487299892765302290963929658888771167106618', '43119074476.795382480774731451352243170'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 0}); - T('8552153877171979936586493.5446127951', '73139335938827728891918366925379870129969607150489.41'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); - T('127053.542191315698254482051137112861614287006654322252567463225598634600921108288525772345080371829053454', '16142602583.360438243472020343390659992'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 5}); - T('225.1', '50649.6'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 3}); - T('11596007050.2163502967919818632722642459840343', '134467379508667301633.785635590876603169506'); - - BigNumber.config({DECIMAL_PLACES : 81, ROUNDING_MODE : 1}); - T('69437193.18414365787090023169347820662309913940132765325216924168874836547917544180140358', '4821523797292086.456524223677764683'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 3}); - T('5233576575683568887.6', '27390323773543750860832487238432062688.6624185028799484121035355694'); - - BigNumber.config({DECIMAL_PLACES : 10, ROUNDING_MODE : 1}); - T('46384.4029667643', '2151512838.58318'); - - BigNumber.config({DECIMAL_PLACES : 60, ROUNDING_MODE : 1}); - T('195576.992166358873062953962788281277982207581311538326506522826301', '38250359864.84'); - - BigNumber.config({DECIMAL_PLACES : 68, ROUNDING_MODE : 4}); - T('139866932291876214.19345627298588358215061823765973088810201696524681681453253341518481', '19562758748740285291218891169284396.9939195499727764062935729066980524'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 5}); - T('3666563896676760573917601692322.77212311488832397132809756567872530081505667435009858623027596887637272536145349022150950454966', '13443690808413470589583040162367634914502883969219377974038547.0'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 2}); - T('6961365655.56399610188128596984179', '48460611790465945211.698621678317269105061971842437574643735599856953314'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); - T('1846705955.64084', '3410322886599335678.3442689068158599617426109752302'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 3}); - T('20383600747812483.68227625101786038548655392179182361804236021798711869594207098', '415491179446221643995603131550002.1039032281795321692412'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 0}); - T('646712979.5996517630443612769041002926810614019248010215062306018646711436498243', '418237677982659597.441624218'); - - BigNumber.config({DECIMAL_PLACES : 41, ROUNDING_MODE : 4}); - T('1.19496644978306365000998087438061877340396', '1.42794481610713918'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 5}); - T('23.211007210632864978030233482478479', '538.750855732050851236433'); - - BigNumber.config({DECIMAL_PLACES : 42, ROUNDING_MODE : 2}); - T('13144319811979.322618006430364389461341957559744602233547', '172773143319592135100403688.71821166'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 3}); - T('187740161098222151.1246717298374850292596863378927231390131419626237794062025199113420744', '35246368089186405941471994235233738.419206808'); - - BigNumber.config({DECIMAL_PLACES : 91, ROUNDING_MODE : 5}); - T('10178.8922729849318155784011624865183762792234558462424939879226978772185670426454331737205675199', '103609847.9050323516770459242872382420478556123172737547274829818796745411'); - - BigNumber.config({DECIMAL_PLACES : 16, ROUNDING_MODE : 1}); - T('118915484534858138581.323615778120248', '14140892462160085127547570668448789567436.5212757788'); - - BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 3}); - T('1381256041.58235', '1907868252407743284.86488650760'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 0}); - T('332932692.06871668', '110844177448122917.8860635946844763529034613752768046936282087236524'); - - BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 5}); - T('4066.8947213589552554383213699', '16539632.674617334307963480316101638407048800069358878699410140'); - - BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 4}); - T('22189652304.16065994787886588015884847951186574095167035995581747786105688131', '492380669379542485181.2474040'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 2}); - T('158353311059733655489.651998750507515328606317455210195317', '25075771123580765253407550077977888331941.700640558633406504581615363'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 2}); - T('1143117392445205.276951994811536971745352', '1306717372910725454386211774949.25170879486190843648039398'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 4}); - T('8040.191011551416394620773267580733826', '64644671.5022321884'); - - BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); - T('561890.07913644314118462700408674766996898826917350839637746190609856169025443', '315720461031.95833577709317260'); - - BigNumber.config({DECIMAL_PLACES : 64, ROUNDING_MODE : 1}); - T('4.8039462944541750986312884225369797018444226801916417173216151656', '23.0779'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 6}); - T('9', '80'); - - BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 2}); - T('1326108751496903140357139441.556612', '1758564420796675206900880488447739278881655552577114313.23383192739240437'); - - BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 5}); - T('14151144510912448.473766149283465377648372312085324275310001302203928077203283587712858416110305268972089', '200254890968727520521220007130381.2005848441498962923460336400353828714'); - - BigNumber.config({DECIMAL_PLACES : 9, ROUNDING_MODE : 6}); - T('1563587460831009.71743044', '2444805747667964347315337272292.5'); - - BigNumber.config({DECIMAL_PLACES : 72, ROUNDING_MODE : 5}); - T('52.135400641023178004669430567271849421048932266185106328569016760444478187', '2718.1'); - - BigNumber.config({DECIMAL_PLACES : 13, ROUNDING_MODE : 6}); - T('1351268503014631893144505099260337.724034725277', '1825926567239404241691076828603758142583205695412586217329125535956.66'); - - BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 5}); - T('11695015362959112818180.313719', '136773384339849669329939661060606953014336914.9830023'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 0}); - T('7.14759622880307922056248', '51.08813185'); - - BigNumber.config({DECIMAL_PLACES : 33, ROUNDING_MODE : 6}); - T('77955097085870883368715827.917274179795960111351375993042359', '6076997161667555092341666871976429897795152678135287.8510389381'); - - BigNumber.config({DECIMAL_PLACES : 62, ROUNDING_MODE : 3}); - T('302769879390478259.67043697315910757236727400949100809491703248976382488199775657', '91669599866124752017570835756271700.413528435509'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 2}); - T('2282.2870108730847351310392476188091352', '5208834.0'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 4}); - T('17078631911484768.4490028733180418062149995467371729', '291679667967985875726407897209547.1387'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 1}); - T('10', '111.670519788005621906773268955014426'); - - BigNumber.config({DECIMAL_PLACES : 69, ROUNDING_MODE : 6}); - T('30174323609673224480.488459745551217192738545389494419174874058939462629781457993432294265', '910489805301282971552972612705593407831.71268096'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 5}); - T('14.624254852812159605249622627938622344', '213.868830'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 3}); - T('29466625146755603.86185507', '868281997539409712828877902435825'); - - BigNumber.config({DECIMAL_PLACES : 8, ROUNDING_MODE : 4}); - T('6927129100625732.43372701', '47985117576735868701359921592072.70372575612465393845774834727674'); - - BigNumber.config({DECIMAL_PLACES : 94, ROUNDING_MODE : 5}); - T('9642346281.31563248643896664520776898744585192834730152101992432409131888949068606645072468415514441421', '92974841808801406424.6547297963'); - - BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 2}); - T('3088984.5336327982458333177572065032974592687507455458620037359367363260748579302628662882', '9541825449022.6360771777341161'); - - BigNumber.config({DECIMAL_PLACES : 96, ROUNDING_MODE : 5}); - T('255.021597053934205856842576268995125858655341587771945346677594354254384952531873852274081014203538', '65036.01496393918362398639291683514922'); - - BigNumber.config({DECIMAL_PLACES : 28, ROUNDING_MODE : 6}); - T('1.6646941094584521805350551637', '2.7712064780656691696'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 5}); - T('19884686303023658767.08797961545126816028858276270712259956194324382612814640205061878988423416501222805073703', '395400749369656702132720990647874201569.1939430970209654'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 2}); - T('9.6166664915127248990027449407750613964822315991471685061583', '92.480274408983661791945'); - - BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 6}); - T('36686.0099950360970023090500579037458831558057639869287390847137799628072928071825825683327205', '1345863329.35588841'); - - BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 5}); - T('82540126.57450483338603', '6812872494935279.00063912455569141793822346070304115108'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 4}); - T('5968822849220.00895', '35626846205370865688433017.83222'); - - BigNumber.config({DECIMAL_PLACES : 98, ROUNDING_MODE : 4}); - T('4816036.61099593028962176834662170900210233124809910321599137332324694451063302849228481281532867578835396', '23194208638453.16557264455596232474012945340603152059440'); - - BigNumber.config({DECIMAL_PLACES : 35, ROUNDING_MODE : 6}); - T('462306278297631226.13050497526669222098203681114573462', '213727094953406852826524541520000863.7'); - - BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 6}); - T('1152247133339717980785389844.0669369155655882911665420542531405497051805584818042141420118135205037703317', '1327673456289597827892437378695792745399331158560266522'); - - BigNumber.config({DECIMAL_PLACES : 32, ROUNDING_MODE : 2}); - T('8440.29450824835258603622655681205756', '71238571.3859673'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 0}); - T('372.901628755987177132359193081806236478345155487248214227646402521533643140930822086713180088', '139055.62472886808277107884115049680'); - - BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 4}); - T('33636.1271745309846040761853747749832841960229355764342958756202876527205256997547', '1131389051.3012217576165671647512263221'); - - BigNumber.config({DECIMAL_PLACES : 67, ROUNDING_MODE : 5}); - T('730642441472613374.3703419923164107610452588300422615171223528468371378585782084037021', '533838377281061260221750424175452238.799786368085667707972'); - - BigNumber.config({DECIMAL_PLACES : 73, ROUNDING_MODE : 0}); - T('4.5788382806122340708247474338099311669807185394701277113796016932695447461', '20.96576'); - - BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 2}); - T('1864801744998620.013461802873958666465697174610674741137094975087863374090471208443', '3477485548149898222390988884771.11817149815840898839369209152890'); - - BigNumber.config({DECIMAL_PLACES : 100, ROUNDING_MODE : 1}); - T('563874215863580.2177451764691813196377888522148073482708829811406591604089329763209930727281872382057875471855029327', '317954131315767460486951695672.98301031763037726866477256860609405919575'); - - BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 3}); - T('421945583.1988849379362665405151159104233', '178038075181047131.2144288231'); - - BigNumber.config({DECIMAL_PLACES : 4, ROUNDING_MODE : 6}); - T('107729651834007850.9577', '11605677884276551125438030363905372.108250181197'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); - T('40416496508882.880295518466489909876887230188810128', '1633493190052542050826387695.49412988761528497243381704242064847014101'); - - BigNumber.config({DECIMAL_PLACES : 20, ROUNDING_MODE : 1}); - T('152.2434280471558132361', '23178.0613835495093166083287924848173635972'); - - BigNumber.config({DECIMAL_PLACES : 43, ROUNDING_MODE : 3}); - T('2.6360766301456412706748188538578683408291152', '6.9489'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 0}); - T('5585761094110.8119307548005902880792769404176694786028672201071469437384', '31200727000482014779134653.665916381675162519321008239592797688'); - - BigNumber.config({DECIMAL_PLACES : 82, ROUNDING_MODE : 6}); - T('705554.1228818517008122812577645421096429956370245502968178545245876570204000353369717718', '497806620315.5790897792940015037475985377832001974452467227'); - - BigNumber.config({DECIMAL_PLACES : 6, ROUNDING_MODE : 3}); - T('12261723754.180635', '150349869423837649402.99929324676906802471173415'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 5}); - T('281477675403235918.2357151530419555292357090950366728', '79229681750409442645557612236437995.9476523401612199126960867'); - - BigNumber.config({DECIMAL_PLACES : 70, ROUNDING_MODE : 6}); - T('9952285418.2729610572401721588784084577508583224943467082894527238719302981248716', '99047985046768607423.38096514'); - - BigNumber.config({DECIMAL_PLACES : 3, ROUNDING_MODE : 6}); - T('13999.647', '195990129.039656321401845946648205546325683328673485939369440496168'); - - BigNumber.config({DECIMAL_PLACES : 84, ROUNDING_MODE : 1}); - T('14047571.047709437493635361374607055104972689228218006265314138529512357717625916281663520003', '197334252340444.4234'); - - BigNumber.config({DECIMAL_PLACES : 25, ROUNDING_MODE : 5}); - T('2205837.7005821761318559775242478', '4865719961309.6621197151014351797289406864523486396'); - - BigNumber.config({DECIMAL_PLACES : 21, ROUNDING_MODE : 5}); - T('758.30644993960060605864', '575028.67202'); - - BigNumber.config({DECIMAL_PLACES : 71, ROUNDING_MODE : 0}); - T('3.05122926047847148656588738870173096139590274766271145582324089671169013', '9.31'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 4}); - T('9987.0540005269950793629951267710033859502301660583410487260054767889497417917580627', '99741247.6094422566309427596792705224314859453123429533'); - - BigNumber.config({DECIMAL_PLACES : 55, ROUNDING_MODE : 1}); - T('153736.2249720002675176784618619275585698111135968831038733952', '23634826868.6414786551'); - - BigNumber.config({DECIMAL_PLACES : 99, ROUNDING_MODE : 2}); - T('124306362204054.700418459258259880707339315715942679895841027323391732672342072298858769481551839030444032097998078', '15452071684405638957675416841.87559955466718280375315'); - - BigNumber.config({DECIMAL_PLACES : 89, ROUNDING_MODE : 4}); - T('8354004408580181649765187.31783156135039411717464270711151376270906610358555385926351601775037854447124260858388496', '69789389658577110583494784782945375526722091196870.2723607941331503389'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 4}); - T('69612192477.44215090986896764071456', '4845857341516453584012.55400593651071611869'); - - BigNumber.config({DECIMAL_PLACES : 76, ROUNDING_MODE : 1}); - T('26894442745048233575.436901864421884016296340079004943902924557895292772056665868939809658762881', '723311050566677565290951117583555651705.50647920351246054353644335'); - - BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 6}); - T('718470177.271028322610907514636281025794525522162254026399567933688109176809379897895939350045484', '516199395627862862.91'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 1}); - T('624214653401002320394878594.342626363311637934460517', '389643933520533457715770790451497422021845205674084966.57462249521'); - - BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 5}); - T('14961.11077476503262776978477227891095270825535559491495043352456073683918164489113356909', '223834835.614790354856161392017958644437815'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 0}); - T('7', '43.66395760675375468584137073521451'); - - BigNumber.config({DECIMAL_PLACES : 23, ROUNDING_MODE : 1}); - T('1345.51506346178747090783855', '1810410.786002577965235589781993065428275582786284340392554'); - - BigNumber.config({DECIMAL_PLACES : 51, ROUNDING_MODE : 4}); - T('52557016.286119501062009568005557119407270734435843448903725', '2762239960899430.472320476603615601541'); - - BigNumber.config({DECIMAL_PLACES : 75, ROUNDING_MODE : 6}); - T('304128108642.66638543798285540424121063889329767580106958078233889375947456592753506621', '92493906466565488169925.03727298085107554398631873900964'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 1}); - T('130147293691930.7913013', '16938318055333688341214239428.8400763989063'); - - BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 5}); - T('380.30847711766825669015284843032870317433236412578443415674498103', '144634.53776756'); - - BigNumber.config({DECIMAL_PLACES : 78, ROUNDING_MODE : 3}); - T('72756584205966672305485804984603.352401313503269431826525164286447688973624911557811334526750753359694240719487', '5293520545319919032011373362935198316496639737287994460100006286.544679'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 3}); - T('76576.797797984240571846486238988876843143519708396246972607938595543560509008391915715743283102567', '5864005960.9933640357177527847992571777392026372877736596182'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 0}); - T('12178753964826187888951303.3249458', '148322048135769591351831540771148782675389671073614.2772432575'); - - BigNumber.config({DECIMAL_PLACES : 92, ROUNDING_MODE : 4}); - T('40.80297039432300938521588341960090555158418429841606635380853913866422389482874612382890570235', '1664.882393'); - - BigNumber.config({DECIMAL_PLACES : 66, ROUNDING_MODE : 0}); - T('8003.231428514446299367379006843513173610973656001982693440541673067266', '64051713.29836138476649526336604765435988757860210340327039402774'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 4}); - T('105.20351606648271594', '11067.779792750686945021773996405472111'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 3}); - T('19979049.779364305047782515786241164454568396483520587153712', '399162430086316.886209908431086170916983676744304561893703431115837965'); - - BigNumber.config({DECIMAL_PLACES : 18, ROUNDING_MODE : 0}); - T('36166928277228.730988109424899314', '1308046701010207183212414138.1873209010791907983'); - - BigNumber.config({DECIMAL_PLACES : 86, ROUNDING_MODE : 6}); - T('686799335895162784002331424287.2818926431403101047781274303105132057580624450031766616563460450210013819541610091966', '471693327786036635340416131163020770161082699744963321356476.24648141'); - - BigNumber.config({DECIMAL_PLACES : 93, ROUNDING_MODE : 0}); - T('427059.834923060848086980328496831458550638128577698933740189975808665668389059481658485647685358764', '182380102604.5119819638914025693'); - - BigNumber.config({DECIMAL_PLACES : 5, ROUNDING_MODE : 6}); - T('1355182862282090304776488.03585', '1836520590223078937218481593506430138446303673212.5687201599'); - - BigNumber.config({DECIMAL_PLACES : 48, ROUNDING_MODE : 3}); - T('13217886.656445116298311129371851749281920448872987595652', '174712527662629.85589582771304'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 6}); - T('86179288451453008625398100282.4917767047410320423825986277768734685720245779702133', '7426869757998741901399152994719251895695045225784410813119.4'); - - BigNumber.config({DECIMAL_PLACES : 87, ROUNDING_MODE : 2}); - T('145756.030733419668905069100873071310401624486529447576932195647882358629038395814721231824791', '21244820495.161579064939048774678'); - - BigNumber.config({DECIMAL_PLACES : 31, ROUNDING_MODE : 6}); - T('1.2553560373690457964806915022022', '1.57591878055891310621921366234841349460228'); - - BigNumber.config({DECIMAL_PLACES : 88, ROUNDING_MODE : 5}); - T('1980389898829432.2712605078486037862306810847539694712458886073478584925281882450847097667064103718895545', '3921944151385648986846968832057.6679856140253370947697275533733897527'); - - BigNumber.config({DECIMAL_PLACES : 34, ROUNDING_MODE : 6}); - T('2501.6649809177087331569494731239885899', '6258327.67675'); - - BigNumber.config({DECIMAL_PLACES : 12, ROUNDING_MODE : 6}); - T('2196196.716556668638', '4823280017814.292327'); - - BigNumber.config({DECIMAL_PLACES : 14, ROUNDING_MODE : 4}); - T('874813882040530524727754.39838037065528', '765299328210823255354810360214120241836069380387.27355428536'); - - BigNumber.config({DECIMAL_PLACES : 52, ROUNDING_MODE : 2}); - T('7165.9194827881318885066411753304818478310534939735256546', '51350402.0338025276330915356430492'); - - BigNumber.config({DECIMAL_PLACES : 7, ROUNDING_MODE : 3}); - T('3.4641016', '12'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 1}); - T('2581628832.3443659411183261224916944470874517039666191989033706133244', '6664807427991734308.81835798420895458431799580591091528807175336'); - - BigNumber.config({DECIMAL_PLACES : 63, ROUNDING_MODE : 1}); - T('36252.485247610266422965983738050016935932785999111018508294599446694', '1314242686.6282'); - - BigNumber.config({DECIMAL_PLACES : 37, ROUNDING_MODE : 4}); - T('1.113858159731300796830271790717030399', '1.24068'); - - BigNumber.config({DECIMAL_PLACES : 24, ROUNDING_MODE : 4}); - T('6.350335424211858118059869', '40.32676'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 6}); - T('157154.7', '24697591891.264796990694652886539719395624528788627616727785895955829'); - - BigNumber.config({DECIMAL_PLACES : 53, ROUNDING_MODE : 1}); - T('2496808231197550137.09602614853116445176036893767527178453680678846727346', '6234051343375838977712099106754338652.9448320'); - - BigNumber.config({DECIMAL_PLACES : 79, ROUNDING_MODE : 2}); - T('10324.2514732464973649724678228525764035909757738486664404504563868912514925606104179', '106590168.4828324712958760'); - - BigNumber.config({DECIMAL_PLACES : 27, ROUNDING_MODE : 6}); - T('386531949115297351728.142898431057482793224359928', '149406947686870821169328664677654478117516'); - - BigNumber.config({DECIMAL_PLACES : 0, ROUNDING_MODE : 1}); - T('4774', '22799696.79785731491262'); - - BigNumber.config({DECIMAL_PLACES : 83, ROUNDING_MODE : 5}); - T('251.45257784284141788311293466206354643346413863260081033788120457331898535528741326412', '63228.39890381022276846692010483321'); - - BigNumber.config({DECIMAL_PLACES : 36, ROUNDING_MODE : 5}); - T('1531518860296701459127.524799663297047232327147517392658905', '2345550019444507360974678507452524424491068.1160833888702371276524'); - - BigNumber.config({DECIMAL_PLACES : 54, ROUNDING_MODE : 3}); - T('29135561.909785745541160117186613533017688130999291885339151706', '848880967798958'); - - BigNumber.config({DECIMAL_PLACES : 58, ROUNDING_MODE : 2}); - T('1.6531787562148262737395863536342116867328098612496157055434', '2.733'); - - BigNumber.config({DECIMAL_PLACES : 1, ROUNDING_MODE : 2}); - T('8.5', '71.266173581517898007439610813'); - - BigNumber.config({DECIMAL_PLACES : 95, ROUNDING_MODE : 1}); - T('1293.62699352182397997386824883628486696727271220130303818496237941488924320676792238233671136280435', '1673470.7983683132214500750687162859347'); - - BigNumber.config({DECIMAL_PLACES : 38, ROUNDING_MODE : 5}); - T('71022849.96143668902502364469073874242232416113', '5044245216644747.49972893008'); - - BigNumber.config({DECIMAL_PLACES : 90, ROUNDING_MODE : 6}); - T('1169773.951601496071390789369787040569431646053789571885643406476450096643513202530182542812519318', '1368371097845.37927324536101610772653318635120755'); - - BigNumber.config({DECIMAL_PLACES : 65, ROUNDING_MODE : 3}); - T('762442649.06995637756037230561717976386559245889049246647051943766363369227', '581318793120812652.6480427310033696'); - - BigNumber.config({DECIMAL_PLACES : 17, ROUNDING_MODE : 3}); - T('20.02456159330336', '400.983067004'); - - /* - BigNumber.config({ROUNDING_MODE : 4}); - - BigNumber.config({DECIMAL_PLACES : 162}); - T('56956.133334288074055649096270448425887257859236300516446822612657765367909481348792658918577056212964517487314659149646507878360034362047738124408378251380663712880296', '3244001124.393201124203315112854063456225'); - T('8.654478609367522146986967465937732834299195635917473015566911783193688697212875063970818876014535054471159717340710683348537384638848599775961897310476836944774203', '74.9'); - T('2.090157855342270554221573582468214310613536016537697179653818592200887519700347392246743415543531332923171565100303846336657331022146874248351314711045809920119035', '4.368759860249'); - T('4.898979485566356196394568149411782783931894961313340256865385134501920754914630053079718866209280469637189202453228378249717730919675514683251567902474557105657825', '24'); - T('5.744562646538028659850611468218929318220264457982792367699877470565900721457404627027125365596788122419557476945650837869934822615203403401618532019562307772727978', '33'); - T('2761776864220467592773690125.261636709953648799225108854949552005927418667927585431550152627344259326832390700476831904159140150409161169310381661652182261480548883652702710905192306201153399', '7627411447743439090016907911169126086985950772934507394.445820'); - T('1016542.132684851351405985352421550427715149810639767584056678930969543043928600815438993175050555365846506655226675294372370499294878158021265695180065201424027976920607', '1033357907523.46593019166446894535290441918452466583813147208529350643'); - T('67416893557691730594377.689393229996593018164745728497408716814685783382213046224003027235822262763354330687209958508471208061724779548394876757652983131645878622964693470107017790602867', '4545037536969136767952040548173187304914752143.582107466151'); - T('931291993003973764424957570.943051255559335880882830118695138743017644168272132602760327188450198488698421979593757322045111416715065737343620373909805293078217072698779281254073818550714084', '867304776233313518982078261171691244956483307888374339.8'); - T('7949156432.018787509478522996179666181753678431098013792417245447999791336046537264938248517945929921988256639266549619633490785427215813297039897879841661734306307344111428', '63189087980705660327.62527705239541530402411702633104087462882'); - - BigNumber.config({DECIMAL_PLACES : 370}); - T('1809865.4646006170616739546078520411523015790932463877848464678333257743018277689819262142781464857679567195196165283927863805894754890115198595353876516167856225104865664069164914054910658837497837052107088079809127635832553363804364513985303062345471350909037103500826046492068332088151173009073561164990623048692985267110502955089488933796659145847257595817786679297018780916', '3275612999954.007450386437800884'); - T('15.467269449647536285076994289048952792417346402263779331615370527324047804918952006389255250887444861529354673321542742996531338786891880304667201838005095317222412003012101386939275591127834757079082739161518869565123311068788189396146419765711123314785783579057845157770289130253714499563733678728735780353326475011925555877160399757945810318742227262034456726810253364', '239.236424228'); - T('21515312700788.8445283321238112651368817617351069674058374989844530588669193691975020463789803512804134095628531146877959931040403076115365864125573069051677734320206655238129119512589782592335983752466615626386174785231997318261202374171285170556291668296113625567950158566625308039499284336455793814655198232231567816284588561787228106085162970376394887992755493290799749825112551493', '462908680612725763398121582.1988499361251936376406501063453105637'); - T('74521299.538521976899190350443219558946674884841824374949238074926728684231529951608824829578859140723045085427094885285460459390853176343907992141008355659931966765663861028960423841901422569042236880047925960465288786047115089356108425087999854467423897118283417884004208867563212081515310360937085763989389534476061158207010096784634714697440008094764047817723635160212611201', '5553424084910115.80715723353'); - T('1195846909.8136451949628200680969918871468342637166442528552430459926616316029985160802054349155727577926247240133710269402224145037039410361654704934859568454043181682255773043960693809830780634720080576036391829106533152077104572023692346636965236517235893617548662539881565621455421628698536701895553668525060605712336259944095451585719721016583710402332219225707779232668654387', '1430049831710844464.5'); - T('63.363458803814609930869562561468877004673338900304322840644175341400833525250548003632643676779722860896524366210225631392441735539731411621657232048800481726194808203828100942514894307898059274946673100310375760980610689938987663753721124115742622475359805871962619958182552829213760795254063144063662267166941269648405943630007682837690708592188638914255746685886657562', '4014.9279115827111984'); - T('1373.2346174982060050121030325620899957248769145184187327677463246552753848965766950735510496743337066151954054529870656708088991835100431884436734596808270643667093234708089558732282842724926267168039341016233235612898755425310217129820000361621133178074632555226320411936053443770992225078255443638854008065800708779022149941454885905152491670161465306374888415427437669047', '1885773.314695444154208'); - T('99039087799528681.3905138833923030877513778499442375472507806052812263260160068742079767622207118750338964200879423680059646588427359069818605754805574948873861241916211290058134240391945041506590998012465268591014107092271256564136984223735037018803536800185626368799784882325385180065015284472329021977308861285931031378317690220446799508322901392419207606647824465676961912238391025575', '9808740912162750909706883310050182.630527570227310645154'); - T('3.7549966711037175032676936665539744167725993728876755783348100730830605055312952529891445353338440126820518274797006625702148474699248805782797465540022583593955664081518990293569512283879169129175449735381912776937984799578622377264197905942888539479665214673739023726144209253217799902885022479674447157064859576103449224248517314930440882218595889166920009969275046849', '14.1'); - T('206071.9099345662880392539413524097442128237359131885717624301620021107001424182134616945091475733036367971785943678559801220356724867730180036789665163630501875994159091513263234064759811698332280709521477933310954189936526370887672959806770806072945194934626710227301991226774310750612896243496085684922345254659244357871503291966086952146902972859397840015475313905910082084', '42465632064.08'); - - BigNumber.config({DECIMAL_PLACES : 500}); - T('89817010695289.72578371683807498008284714528555535180774576243832060526469276583706655412471844057215592302486816618503186850287965389458117650040638501953754812900903677140548024632204429469967898609400125991154018500677065159619195677725360191990304667964228249993084865619207470251438905759438499669605919588917712329966593460182177256512515083462907857531175748343129201000221666928295926394404306298592439213726996025312323143449177688154398992378748586802380541165612583584316700420134596203072442651698983252', '8067095410237788990654508945.4938889620226978171380538868'); - T('186.91379248627563760392813675540099210378050749661641999000996750119358911115159296630333873386370549699551207601328525759106230341322609045770969551608159859115697029049776748016235872091886303045181663791045868196184184442196533834203793388185938722188507323334759581974443773297252169512928459122350262968374432650606625865642232545046019710829844705222543050921091232570671006274142816262680418047451611346801167563231483515250455068357839726457106935322253398592250219377292043183684947137995080635', '34936.765821602511000'); - T('292.92251535175646173232431728499234372421154418946156867421786152176227096294653007831356181142938132889371346675529071648577515728469391396601893486617422900836680345530254508647264899909100464612083986261265346005164216654675922351728655350260050928208855804233241090095534108831210571537049578731309192576632259878664884788879135261573200114727909644940386409994830780435119468243089463108989041078103645175912033463261798424149302644555980788660713206241347966250504060797821189239505007200036079705', '85803.6'); - T('87.99026650715407396765197446961570650402634143914903620761528887814661859660279310794320854730578987027187472233291266405007186843204281271710739248189201489451091841274017441508638469723085782460443376671758758899784113134866643875281588211922668056326695185017497400934539461041472568010022163207379422457239669042993592416973790381056817762649457565899290348718808685202005765019872456068078605894916581511896996069884199563861272506806598271531781334519497271503568279500098078388331561457291680397', '7742.287'); - - BigNumber.config({DECIMAL_PLACES : 546}); - T('9.964115615547623702713334497987282609345101391172570364849116418075816800113640413848859226514077074748449697076758383273301113543709109909215564170600206464958142454266490605912308358603735813671079804922222224887150495344623713603270259563840115497313009052230649783355536482654846683965583855936794259084015703511152134740957173368048269478700424790749310707209710341986660107034655477210204159808351721182045528640956247532335115997324595227811783575481533603875179445069446441375208735891932273626153407869944580993315321965826502787138270543', '99.2836'); - T('1.307100287867682515567807786801412047161737137612032679611924993481917045781734946943323223902612735068918688582083522849332454081551075797942682446349695592044164001986554222994267637605078971511529704949687080403427315218684552520061137105759437079989266294002711708038550421771209354048361232627247521144464653931131639432007805143883006541670565652328321108764304216848523001514451272005371748881596518362518185934727350138270219612720116871348545672028299730589386444001708243439232746226873799802838450712779197269114313367331740420673483739', '1.7085111625437785'); - T('2179715624641.104045451948581834441551779587152634672576510540355644708264438654277476265980691695066448533110871133836814682961495657626427294887178053496311230025672990968595927778033477830265241856037103266547607039668793835170188641774636594856220333273217160195552886973287073504687530341285661755863078114639819058730667005812528346789548066256665974549595181496892972941783341809790771728591496793467248475138025398858570306396853160195272474728879369794382569618121601470222156680464345972678848920184128051561184284016452602903346229119622194482045757', '4751160204304558385373451.3272332038165539477606810406144617'); - T('39700.822577241580199678797939419163898886687420779218247258787086313113076859180773033077810860147036816212863235098843384590784069398316497506974294775336733386252013568969235999557522683195367974539653911477425701468208578424416631114715708576208486734127431256111817135113173806314284300643116495170122929525074255758154469988956319381763329406201302760736651128326823314686997919541126017908099065125010684846684750979030402294608072194301572266690808347512619218310009474588358252587183377754733236309560561175738877889452782714224060764008968002', '1576155313.3096147862201867397559036886508'); - T('1.25794522328842464889802954979839811250322044212082313174176990936228267186851635174161106107130430165025307524401690618283690880517619898891441753062149884262103288048373107482275796232219249109268011616848844350466917383546494632887628802000805894961164041424123794218062370303230048277719411087505573740519315205969736920463416188404939520455876144966180409180303192875736712339448801403919111160506886246944037198526719945050982972666268955585211897123758272243907184437446082156997384618356833205776554862542099528216674650656658010050062231', '1.58242618479416454763664575065542265574614542'); - T('1.624807680927192072091976713653208069700840817345062565530315118906583360568134538999831520589587375487595902303174139599422604662135717284255618657549630378160122248467747111071314750502291444441102163105431957570130226305138621706071808286505297736384595648509872968772996129393038122816853427310850020078925936656695761188275301963596778663712697756996198695154835116221911512411787284450370861055864406526637410758400234987941681870570312002436208851096849359131928628121324230998619957793873321252762427349655447578019631964607840051797535418', '2.64'); - T('18717636231873067799.216510948844550745146581264323539180043356582323609699016487098997305478787718252655554063999956808135384833559712709262538242436026132212417100611618928564814091772415407036455749502462185745609885577739497207736237382361239184683282552834573776377544551919252603573173778169991084849083487588143333148865799493939248463005741865268503183685175205052842601336209845292039862576097287476259672443140291459083371484939336391166547726508221768343629133487223197760680035244638718987232096565446767519310698558767017657627306105991008804977618723991', '350349906108727416303231044881030663104.72849777316356826833515716205'); - T('1406647840009650.118863996881143742849154676375102411920435563067539895576725213355050743434710662527010561053318071130411761077372296190615719469716323240116449116038768804389193494725211826193028915331814451122261159238787939478074609835120057229806915907338375241900963530017435537812109185293173117802944350037251407192941405132508530625153810048779676085394020972072535926554304846973136440349018882339256154370074386916139960439011412622403829257294020556809081837690809972797912280848596346835691547349767211626827238693605471315108662202888476421988937787', '1978658145803814237711662058049.2544850135714954117875755770241265'); - T('16224378173956061607697862.633217842546427767370100855088171518705366007862250561754707243455931128283904259226113595005700826232879759488413300163002142315099475508032176198042904834129778691907469882290201099517369886984799723525714860875048918708175179481025780980785512861833918274288833606546216800173441803028496920438426672142753847581458627155975653306204761742838982103620921662180680218361989958267237075686446982867517247246816010479297470319222022775438943899994549052934785516690930630661752088290413832045273976791735833819617572894548667319311757989955998909', '263230447131541828089867036367977560519472832588035'); - - BigNumber.config({DECIMAL_PLACES : 632}); - T('3.86684626019706141613723825656699191004871243725435371952851102513193897300170783147869803597806359975114434638267696014418502590333002587206926390370265920607601489345602853935200922900139573459186086120455990493891388555877391847755178584266457035830275159909609535167181434973137025675857847818998237738460415581254272837772822208258242097068355115922762128443987625212248757154527289970249951218201075262114449980122023773692545156022247353209795532545041431858554008616906673871136025390102854614065356679474908404595273532216911231835866021312311702806567650395727590121314352963554602357180371548166632447396668297987703182598', '14.9525'); - T('6136762.26717905744611296480849548677883172137201795887253092440892121660504456966433584211515954953762017772580407928362904974338214424385785116489885777383448138309647350406214299077359122447734595685831178247253060071791025543499094904828078657524955810034216582881357125704944563248190767043385107964306199859119157271835974466792774248278303577397200213978694185732540975537354775071603950395990745619635709671790827074205226736000604510720564275623625311465188763715973066573171788415579221561790250264794581356922531739753608438715435448872139277604185884704559289000914307078242295952209310265904281185435952775847430570132829431484', '37659851123872.6452468949180815564659044706870951617310978456174564869'); - T('55584781983.24490696445791805408404378469879379761888397244664120330644772739351913528775184610233179267381874891789954760338007940124374026003041155925024622975618046085564412007615044940190982877876574993585348546104467074110944013210078722838691327953750473674565370730974387207982723611177965946904757209441712191363169109505165807521321899672463583311642877639945439852157230367246653362314539530980304123767170725630541393623958472950450526635784974484049786565210736734671468997713205366127380246276456634498806056301931312061784211915142498400899530080598267700949248388709352054923014180086178893193927288901542298741856815720408810426', '3089667988124867612740.083389049922345'); - T('1805064995.270685679369819389640432247172036506554563452359428083087328761361845652635553731357289990951745475326934025307848780337675451754210392546185393830016044551272507825821935983758954014040138643670810605163035656676595367710188204749719310806964242566460755804623103957354726598643871684791346043973374359934258681039001336439023622338991932038561462612292035112751670372206620090017313856898980333410467539643215942489844251168601645977120694640664003642300053879055949999123327998888486028967684255707894113041249429918747443321228571191289316571869868803697397454910198466063233810801875443876639885268362424418465737511676419844', '3258259637151560514.0297800164403204384'); - T('125608085.77042703662921929440576851258415350669039591021196510765322333997277721479170585932128266456989640874478239906029432251376275054410584089545239517498359890440064005754383089916535639818817512288635165379914355624246231855413853842721091980292116104830063838444932363335270696391961823972078627647993680508983028621966220040659701503608235895398573773969030627362781943814154637432716276122770088096908725956005011070226435272443863093204149560949439672185351571599604932488380558361146700216684520038630554153765869107472500236645669202075005111635063065232469777930428976428832531849390576765836025904341256201817451204276318678703', '15777391210910955'); - T('400136410988877553453582.37101163421699743482259029089762021744122736955079765363264351177743971980656087133988131526954003823716158204437583618123747540964307177407397030906491059469918005937208664667811006296696880134895202857597704648341649853175892159884095827375237964722988879265135211319838716432321482642548617255100570921567626849693162463365611013775481030077269042675179237005903008278699962449590513074693187300493182718210865710393790428022783178966907764188174129568850369221656184631847400442208130426552208194145273689796897187359838715920990228135785300048009159741600170382195085666098719445640520314294446983533576482734809632684663212616', '160109147399059929314877918876109427110612023604.056303'); - T('64425.39708677991402075085097430222723408726402575346205033002867968020486619151730572708995063516358815252500577128885851092173171595206567522039205583159322846821419081246805971111195118357652973497110646963488156724407496612917479150812759668015947988612070186616711130012713409715318722886985358698149495882008505150340412263757850467789892597196854389378140820673566768146692006440247742979249196409269612046734062701334694240456008673406876828634709710253057778438021730083759189755501262144599075931168939668888175040990882526418711846468669816130425272415774060047616063598593294412963338255219828974342389552617191145782209745534', '4150631789.7892698323562331016634257014646926299287710080'); - T('2348735572822814115892.26408027183370740113506236192664551809826630380561100793615743475343501311869598689198309313317112398706024097995873626836363321037439405890327574217792370459096267386514893897401545965801783674703449797383205640533682179139228566108876766321414465683099263110272385159768745386268309348310852289538873334789073960542826136816561584906159230939562245879068384254598940764221550586208646296806811463864282431442235899226384157724906001227498116520670108267462634019231455786976410894467414188400388964899956986375533986475289820788610178735962555060048758466647342357027384051113897165096975205112706486602166905905775844738974189124', '5516558791043312750956805399216206701389822'); - T('19103802792.01564371961775338869391426446448029286247977641509368293241906066424287682005366039677603554915595198800053308245870218297432073530945933295939680395210865727953275117534560571377076828346246298768896265547871244418699953520469341265486692862736845896173671301154158095469340988225077329614333663129688855004957099781613220058661676296497307424000643112303165084920380937145312220630345213927929149505102622408340154771991875263250438238123325276964888634956357905768104652580983969312174465484750475804611861727043684792253730740484442336788006549604123329617407383758260482554791627340811587637419676122565011048819721900614226661', '364955281116224704333.02204944536'); - T('786.66034601980542438553763403049983609539851928329220147388661995860830168191247746764643770838112443216591486730544324590358255064211791028661132434467570268525552578636466675861637897309153324177405101531421741979722830892607461959298447068614984201744211147154166256831083543381185024040849431152799003153201087012609166537695511250190586392519199228602942589459773862505985356810151934653735972412239324596989225867188473011661629585794534658478043644553227272995034111771271753677915199703704761728445313825636390237745870611713634838750078939991244597310336345791337461711284642126303822583081171392986526905442664045593489255837', '618834.5'); - T('484123309.97874763869513775027582083760255026422629367680383349228461771885785050876393607959363763562763934512375018110967693444089318521616498831171036375527664923123605952647435477649669320835658085436446422080237311136711591389890017124515694523108269386574671466685756523731039177122366440515798582799809939132135784826352950211725429348489639356434994276274903713471535999323126607571342955569317639976321722080574385327905662904910228854922313780512285515691527026937933195761382827883549497100022950886879913145746098441721130133524826420689100661999466875481778061645781459258894902002955465824742017940875767981672057269065469536219', '234375379264778573'); - T('60481.17814179171662585426325768194943112296504919133512658120011357361699298422464207199076657876167621169341810823582081006427726259877303866169887391022736822586491147183342565113223464521871784706899966618623012338886757864618596318826063555227727089240080604262744311440712982849273211826938920661172972338303097711545177717262755702859402796454231559971416344991871436949784360654196445387214315983072589147867091579864546816048090705979976439302638898419268726958146631934559321370862789950979122360237770183583617309004258400281803258965980586023033093791875491145215922928234063783157425179949277559990637828701834500469899317547', '3657972909.4191441244525931'); - - BigNumber.config({DECIMAL_PLACES : 736}); - T('2597183854328.5679091905600850947966546165753359857320959797758353429783579407079182939565903056335948426093650795717332704791479071528177519723191124947077728435798063428371161778782597345429371741476675515164182960273091825852969638261871905188816333787724804370693852910065686936635346834748197083291357776431587087848800111892221988002406355426392615087567342248786343354283235703582188835390882988811316410094207611114574124785705884308466258369161492987882300555227716609880303616554951040594534188187971605746361153720086319724295669667359878510806390096282081082192285001657224319276565070534065340503324866753603713794833032825245475870135528342060466443304262980556284100001276572690814262354674742134248012676070023441506227778586365371105', '6745363973184995853492478.5954'); - T('6774655005740.164037907899356400277125449228462111588353929941351964991999943642694024106002045654190469894640190593584143456920968883709637122260941740850619226234998910249288941064461839175935885418202698405604592790954509193961851585542921730413008144762195532966076043993178536807834225605865732009222042249139153172302609878922537826024024765317187183190793601555449704914268951048131236504332674153119659391120390475083522595748414072828021281006933882134638700653092554277006524993846324403138880161051477517078245698926520722382184525492883300322699107657083780701388937788565713142369080803278939033122119335669992754410484005485791854368115176247813286850021744435931737469007811125083823541974831435625884357393099194117719985023995309226', '45895950446800262033415363.0107589586980934'); - T('9.8994949366116653416118210694678865499877031276386365122367581659351273492347492719527127402934910091450969236163860791744738523909551604885088504796995508198925586614925391492905996535080694744240002907669198012417919217421780341030996219304862243902668663046133901610002501558783382253959667598559278107737758243226618074843443068084667653832202520143197321088490265423627229990794806222238594919301227082997948930337052138081945322151797347614794505584303510640492417811766809910911093299829106606470195648540287464840079528339429999802421027773045400050984119089599487743576041585398129111011611345309324458600582014599091265650208792257610596486142602179717725277099578410704164010928022305362395364280948034487315508458169196178987', '98'); - T('87181.6234142115525219620524691647002880373681637662664358089648865241053931751056720336743475573704667754469828869574971770860976622090504059965985957160672759992061409022462794221981547073047121333832741614179766660169320255090772060280986675121181149188392777041782943372931223028492877312925787086980314820336807572760207027632594701362292053256504201751684547275915772868234710319808033440202969911746099931970130960400927941767359496945988333067403190717036520674748830967881080827391448011943102976676893692584203783154822448864894042034636583043861494867962494678297073555456340277748807852218397069734889863567431741539523977203341337841540435143868785323742066976229168363835362478774511412078654288725506862167769261569623256490877', '7600635461.13740'); - T('4.5825756949558400065880471937280084889844565767679719026072421239068684255477708866043615594934450326776009053975857408733118991707556019635738633623447553702817228244277981919405969049143449200907589407063891768364965598654748231477641506627774586518102302361748154008139424109257393659219939175422411846714980804218526078649141055769578125547677613025186352569361961122418978100629104930136394500794769783448686170875778719949754100133598746930349723271067563482654740784196320965532158989549437375426406190866502980945808909769566178106179115952200007681424851342306651436695554446605650313382719148849087683899267628798139136482473790088818917079648337517673741700029719068290493626817167652340083439423393091048762655243512703702846', '21'); - - BigNumber.config({DECIMAL_PLACES : 848}); - T('379533758647.33202998025355894771830486671460954826351562848093352359089756978384860789725657951059073867429383079637341943322428876224868137020890589117272041215996572802315226952651591422629979697849613357409838019360130112971147443970457701882865210579938015503729060796093840510498092974918957475137648847670773105840478476180774814337983644367224768670934474545884964455308420763849854108455051079039927823221492636701262715567129335694288707429643301669699497029554944442286919275175462196928260780423046910979090241979424076642169272255969335731465485030674055509703481930565243394712596916609989415808863418419835631677700360441697210083653827363223966242987581200002526377610727629936341627933125420316464144353438091881740224503276222975587368345923672238451009927592206329287360888148821167396976641547561007365328906795045416630208044281045956444564', '144045873952971280443387.35507896'); - T('29280910699687273104284697299144.07732565567508749484602637961092769263535159046426239841768965764616197975075043919815786449076328689684216110222824295072121081997345891375218925808047569533170997772123590787790622766592641361527147653442819434809931915905219637858026995741191495013690327145578287454531481294854702286205399948005290251392013711014077536227775356988930049595580907927661449806384364243569981109141658673685934994029666133875734164693622860720260710554408636555912010467046231604717399110220057952965339477795911201244340638839241074392352601833736408661548059322837128092912263901889749977388312010067566997456646543486536129645809758335017030111183330787782491931288652088515560703734327816427347518899939257817316435042124357010083771290898500690085513377138936923205163016022860153854624965235876950834393909963448127891696108571214858469890656907205330389064', '857371731403060633386241816096841559023596513404769917799492267'); - T('168053.04565201524955446843348960783836388810418113245166824850488690908142778357772728901345436007400982876927959300542146773837124920813399432364711787980877197182718826668919533357860217297872518296792465703667850144785269168793146280553383246166503410178151205910689122332208239404835749221852981903152552178180222439382939101404418973062745842861363866266832597644550779142636812629347441140406958185996959809516768124071903548716934343215775054973484772291998064110162394410530239517557259046875734667137531966463173455499642893757346141380481602264381153514663075350700048417551424923591583912256618460494552096382446465611749335306415219871948883932584670263698301372130930285595038191486637767642010763257747895310053515488933059515998388551181750336022799922855572438292341639496128201699781316142673719517556328928078948111316144339893593051947', '28241826152.9183215732505128601928949420068589166172608979274924914576295'); - T('1.53638009381417855214702667564342109510652564612190733749841594063585238492794950136881162227066019813049456848975091045178675462617786165883956111632075830748654795458628807912771681561582305470619962729037215106906417797478639043759073671526233150625502278985764285240647638298730753064584097255132097117503260610789389208952460787617822842317892961282136931991642143510463540230197185978192801359575147064297679386685692745377174344652745131673928629270650815492384956061132688378461069498104923826104838586490333978324236045359018410309925372259501184209171535596493166826553453125808213238306178803667493845876133602921479334100929846229655991832177474753899009595435568508601133899514000384344943496815277376139253215613276576713699227714772914534633123209445267405754874955789973243763421775941905041695031197207082735610030092448816414167544', '2.36046379266846408899539510197326890965893678862224859555792838223'); - T('714.61241243068259484311371189785768955751306153276228425541721886979377905758882133446197375671353721565433127023956674702853562936178184807139172505791453268944641741010891530662590385073593152193455805953240947347607646479943534513966413454182559305296106776895316113963327870900366698599660151420070929801570405751345702353410644051682554211976059908915814146604831899204551744694140994594366464823764389570912629592676719346123171637726003544266618213687267325838123794874975527306940385282149798065123421458819840361280851912003779857428730583255104381030891533142101378117306978641247346815845252044894839537420273047299982385917944987149055257937383992606691257056568881397021059046488147159677518654506427704867625959014109859319284280932956098825423372240493017931941597922444987378795761902915931399027545696337420679858404395579037783661674', '510670.9'); - T('773.59472663687912451159535229389853939842605059162703128538789346863286440830494881075568422219621192333688675281822184873387170452981843472591508432370385971110199119193528015500760543414524536242455544083490104908083974792351201506935765119161643924169037264164099952814746396926161440416117565279304931119669840952024989118295794278477494347926021963207180850887861862534960178708980838985387368839444500154547698864030192542133112686175071539548217199903944950274902992241082394258689568848798217431438259861325777938469444568799288405922158163958958223163833937391698968594686798212843588496878387116515526389464647971296312524748306815742536620947543414457504426763294470951946122437335497099494910632585762600740409680286609238779306759977660554002182801075912581235512217070538480899809469699327979364989178344899103109616009308707414801940872', '598448.80108038774004895'); - T('19008878036934380567.84396002161007307494234445138537376816800048343616085674206626936199749636474720092004342883045275441459628576839920971330702661877884977464784187807450210290565316696580997145384562781682128000995898273298139743308228182662902555052057691717197189289590092259236658987055552383019917577612145454574579719020972478133587710937217336044281243302964649388576337469548420171603649754413233412982255987047582379037245718253216484000312226525699478281161585924999301376693452172203272239337852180725955560197800243914977419579018956725334811006235730357909615062778332245395221460477491786215707869006840640344479485584853728869293288919876710562517254695116835080137005037450411798398558498522188066156712112948975309706291905861236209197663377395628993573005290776392002172440861220587153770661110412322002802191380189193046537735515344097800652278112', '361337444223046269803581586105656008038'); - T('46167547682276.69659839142168613300984418968797481977026434015151042113254784992976400662854539508545353029755222531760805168040819029032876000018647210639969596871042153723516022413007597033768299999552605409537870966847134283383166186477065225427587170669800959221329223140225378864660505062217758873720294200147677451805234547441880387069084927910307749688653503693156999242010683739605876996616940672435261250941033196533134836202233289888667726447834984240822254637787801181963951894038647953211128853346780059900073416876543354577813540692889219448228728777909901391731624805683971528990295277436840161294579496431876765112237134229826779443182941938910283177882124027553167373791516105803517046194645899736931109009785536544701916275081569242392295709503599284148920065992874897610987646342569478342044371048498987276792566426432612227674148724386753297859', '2131442458995292379923442891.39619052405363168659553832'); - T('357.42144219667737476940723134311437237901070981997683604955545480813878989092658709890042422907764330003065939163827123844540310894482334918652641803484529491350116195509236941247526441637135860986047310858645732381561361417002489911900180310969665452837050841076667945444753611474726298122460938050651055487683172415032060683745296386129046642462594028333292429079902699978203730134661132884803238529838974477445191759967198471721764551979289888303016458787572583353512731118148130889821591351857798041593003937898405797601412782467072190053744174243225780844049835772183482949546683341934096818885756007124382254659796426711715080646604861045965994466209388552589568508290975087418855481674502829846363820364296679009102756062772768505880054488205022390142319706776092235958701849286052672927602214663014895377779429627657631859807708535799000791569', '127750.0873419527858363938899699529356795979'); - - BigNumber.config({DECIMAL_PLACES : 900}); - T('7962389669.802619226612420082472137241175608666661735561414607900997891208674399029037690473846801874885757356935098345580426591903055562834097030473393461243383271678522047266370481726950449902079177413029320835311617540338949723112537110203362427858192330773112242226738687601815379027664862463277214286567895961535965292898558369885348154321255856088316638660454457806259636801735717647353100345104124424309537274722443977557763052770155305495894443403910135805323387075986979884756306279940582254155475425470071419924272589017637263436788853746084045571609754415271337660969860121360062716460814804823355709978626612344057738355406928320053347312100043083244150469170748731787389950929048830984414804237666515908525165972258804621273737876286813438283880399279278335982619019392983109710369604460059859022468994373480045434248040713896862456845920018164581498873236394584793215632879036361684025776086529569', '63399649253779463637.88320468645646644051'); - T('36985.537435306622236467270937252825254026014721851309188254305389713697015230264185263378799026382334714397309571564625416241215217867149723572425854181806966554642360423829060014881901773199386994460664634062101904797359294551321318937235734678512961188607801986220680153014134029493832615546969623974916827167078654634358574333678389616366410278915565703581941672170730893983545040190300249274221426700113848290541507663318853535927775893362185694382544176373482231304831101837902849800951258220726268990677590958157914974175471404517996778205179950329995483136931650616286373118261630043285103533033040476431824360766396365422877272153761572905701234187642833656097211644081252236980059582418494584853215946576617549259994456993750322107749520964217795499374138097379418654677424839627787482713659455961703181646841698674573783883478313655188817893687086751450042662911182317161526490882315503431203481', '1367929979.37846755563562136'); - T('138.653825283302247079520109639909554830495824478735118824960659298570304260365235201452949658158554711469364399658798667165750129626981635907513515727752104322402093210187651015212649867280391248459370998127185412494794237194604573645718383791562171900088214128456904501530127980235949384533924069927959103110766006405141214543337550010111094563431666164054892460728841085337947430066655077091396441886965426495467949136348081716343859215231704926659844712690080814553677280196114278268613368774166884194655930307728924841441917187821902525242579401284440544702546289065296084983476636972703960454064127793719473325530264873714830294999070781526696237151909302447919905808564848939241449791664413964130684658760296224947984073972311661335447223880763498816716066907256956648196113869920459515551692886783038790708833001987620466496959254546687493058038109403699935644806603442158642646086655023039259769', '19224.883265692505457601247932291125354259868778652089681716374870935'); - T('50950.440174742357175572071690890164127102751485515727366550390683608820436132956072025681803295779371667169337127406084175358445300796083953408843705969018873810510032889756321223393470759559987454753284749000495070038043049225296587093286942372337838245436787768377078265062338033176995223379224008076742040545070485158584805287828654557110412928438688654162185555625503306254982210625622689237909265654674405693567429263013187828668914075564173639899430670900405284455694427199638591118702956228653269921902023423130819746958603054104765246190233159809281895358531923339811813637075650854380095230369039753422001934387105096606677337450258221260413504059391491686285381140987958601361542484696758005412715512502019501470056625769917175363496998761143393423591945956802212685363531078784887861348308753434147834816578247850672086197881232957501680862454026927989538997998521459117388396046360043657658205', '2595947354.0'); - T('10046454623254826961875382317790.784871452244144975743064060498244021304220015969466939024480223499960901641559066665153037197032593546502649980935727654208439388853861419936425552530271530035494928115227726482675679211892969869213891378152728772302193716001319517533416123919336946085430093922543201768660204280287527989092149328624358683559115176981914090302709863561780525393374380243154381915249441910602391360612168161991933174297686912644986231916957310635449019093633359598148150548731899729849141307548127201093974033939034042561257126753456557941211256135898280856479300825592342274773764495952079469431439741906942077077162075390603294007186657196505030105092603376243537890291750177091215762681318887536194545745370727643575228977262734270257261824137515623111996150864948935760969962110266201746190014377183448005770929873280926905656965694617633851807904103533078781099132125392433972079961527137877338300842675298415396', '100931250497118287147460895653422009190477535915527140997436145.5'); - T('50312147.895978789945318850814716769716556529351439472968676011531432412685095617354326688006158268280144448102851948493093105193248333706042845584818818717006618051899381392239777663697210274767993016068817609233147463673391458914578371028438213381481915193432915606333241411830951892952556850603476911011964242221281045401447599028993820263011805445545067496904941492500519891679173682065830498079066798970609902316454882840175774548136572667012712115571877757306654257623667462477526405934096044262931622005593806759836229355795092155596007885177190326989920383365286112949649812553854003818096593686636208662967380298108969324741181800273045253898252610330097550632621999520072653397155741940824966908033268285600350252107768305144976490584881544838157210518233799995832553321591285254897707500335337126009624774906497706411815347441932376790317896998001657977732263675649024815291900604673316858390505885', '2531312225906842.98'); - T('5.75006173879898440869241532260800496489142124887111833188883261579283008763735295296179041343250976501937101036585472900854336327489380123282821037481044202916203441849004689471000360958945402609580784572353735408452226943576599178952237206876788896067842553596176879865752033951176088455975165207593727159176177085095190710656229140725205998687018442446680477310130738465615556577329602100580746699396762667032579047007129320587668015965987773825003138735379716404415157863124832466280028377682906939092007140554677511356063954505216670858009340392141492467369216371170692156583092566735501630865322582512619490429963282482788624823392158158604152325793299574006823928013422664018092614581197981204160781788183807939164255353777192327520682879326632498396112963534952155920134048996062606067862129834413685924986614062985203382638465654985330058303916447123647081510424589324268892533850475930056739', '33.06321'); - T('2.028430427695266062116855907049682671555242569377976031112753398044812309192685964100965099265530959360284365757870326033053601551523629075378378856745863785169732838994844919825336134776071475304944281214520910583421287945003559393430216592924156944793703503429916620090936360805054797721801359569417127688057382996969292921041738603630480342967692998233877581650620914181744888433057925936957891749666196052068806893889255339075884495080504767342571830767185504079538214007613797919720564247610464573496500053065413926974012933910366107634249863611197215314558918759158057008769626766485169836568960326396402057910902853473776179915408801623228568357317462913587164892064775658027833999904990053550155044417555290139236050616243301785245316354941879867361509091783046268854502291693337916935351747382119202947309008531765489919678841207661025090634628632028473270852667224552478918030875120109633343', '4.11453'); - T('14733978519855.986227038024852091926922255130476070894431360177088165996112823755229640976682373714559133174204321582457357379198592714332912375824678967479352499320917276441508273646332050526613540155298794906758075083423887078200491328803728379571737163423282193094119893971969158039986280336661223358044916730250644983211811708805361569086764053956417999765164201297583468149451593886541587337271459070510498401319438130775438554793347084598691604611470750783139289554584374151809770130348507437456446993653835198138094762369827003035065371494357530678660768629856933317557149699487339377901600994041273525198654016009799518759093883882149332746270829795417341182432885267251862546055608965944281933745525115737980560603226764663919494161818265452113376337284183674111018389097369572010360312518568654815367830169145059770161568817087559064704425726854477168276312695713542835478594810618373570380952296080331906', '217090123023577598725208942.7547'); - */ - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js deleted file mode 100644 index 45819bf..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/times.js +++ /dev/null @@ -1,2218 +0,0 @@ -var count = (function times(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0, - n = 'null', - N = 'NaN', - I = 'Infinity'; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(multiplicand, multiplier, expected) { - assert(String(expected), String(new BigNumber(multiplicand).times(multiplier))); - assert(String(expected), String(new BigNumber(multiplicand).times(new BigNumber(multiplier)))); - } - - function isMinusZero(n) { - return n.toString() === '0' && n.s == -1; - } - - log('\n Testing times...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - EXPONENTIAL_AT : [-7, 21], - RANGE : 1E9, - ERRORS : false - }); - - assert(false, isMinusZero(new BigNumber(1).times(0))); - assert(true, isMinusZero(new BigNumber(1).times(-0))); - assert(true, isMinusZero(new BigNumber(-1).times(0))); - assert(false, isMinusZero(new BigNumber(-1).times(-0))); - T(1, N, N); - T(-1, N, N); - T(1, I, I); - T(1, -I, -I); - T(-1, I, -I); - T(-1, -I, I); - assert(false, isMinusZero(new BigNumber(0).times(1))); - assert(true, isMinusZero(new BigNumber(0).times(-1))); - assert(true, isMinusZero(new BigNumber(-0).times(1))); - assert(false, isMinusZero(new BigNumber(-0).times(-1))); - assert(false, isMinusZero(new BigNumber(0).times(0))); - assert(true, isMinusZero(new BigNumber(0).times(-0))); - assert(true, isMinusZero(new BigNumber(-0).times(0))); - assert(false, isMinusZero(new BigNumber(-0).times(-0))); - T(0, N, N); - T(-0, N, N); - T(0, I, N); - T(0, -I, N); - T(-0, I, N); - T(-0, -I, N); - T(N, 1, N); - T(N, -1, N); - T(N, 0, N); - T(N, -0, N); - T(N, N, N); - T(N, I, N); - T(N, -I, N); - T(I, 1, I); - T(I, -1, -I); - T(-I, 1, -I); - T(-I, -1, I); - T(I, 0, N); - T(I, -0, N); - T(-I, 0, N); - T(-I, -0, N); - T(I, N, N); - T(-I, N, N); - T(I, I, I); - T(I, -I, -I); - T(-I, I, -I); - T(-I, -I, I); - - T(1, '1','1'); - T(1, '-45', '-45'); - T(1, '22', '22'); - T(1, 0144, '100'); - T(1, '0144', '144'); - T(1, '6.1915', '6.1915'); - T(1, '-1.02', '-1.02'); - T(1, '0.09', '0.09'); - T(1, '-0.0001', '-0.0001'); - T(1, '8e5', '800000'); - T(1, '9E12', '9000000000000'); - T(1, '1e-14', '1e-14'); - T(1, '3.345E-9', '3.345e-9'); - T(1, '-345.43e+4', '-3454300'); - T(1, '-94.12E+0', '-94.12'); - T(1, '', N); - T(1, ' ', N); - T(1, '\t\t', N); - T(1, 'ertgrt546', N); - T(1, 'qweqwdewee', N); - T(1, true, N); - T(1, false, N); - T(1, 'e 4.3', N); - T(1, '4 .3', N); - T(1, '4.0 01e', N); - T(1, ' 4.001', '4.001'); - T(1, '4.001 ', '4.001'); - T(1, ' 4.001 ', '4.001'); - T(1, ' 4.001', '4.001'); - T(1, ' 4.0 01', N); - T(1, '4. 001', N); - T(1, '4. 001 ', N); - T(1, ' 4.001e ', N); - T(1, ' 4 .001 e ', N); - T(1, undefined, N); - T(1, null, N); - T(1, Number.POSITIVE_INFINITY, I); - T(1, Number.NEGATIVE_INFINITY, -I); - T(1, new Date(2012, 11, 4), N); - T(1, new Object(), N); - T(1, function () {}, N); - T('0', 0, '0'); - T(0, '+0', '0'); - T('0', '0', '0'); - T(3, -0, '0'); - T(9.654, 0, '0'); - T(0, '0.001', '0'); - T(0, '111.1111111110000', '0'); - T(N, '0', N); - T(-1, 1, '-1'); - T(-0.01, 0.01, '-0.0001'); - T(54, -54, '-2916'); - T(9.99, '-9.99', '-99.8001'); - T('0.0000023432495704937', '-0.0000023432495704937', '-5.49081854961890952566173969e-12'); - T(NaN, NaN, N); - T(NaN, N, N); - T(N, NaN, N); - T(N, 4, N); - T(N, '4534534.45435435', N); - T(N, 99999.999, N); - T(Infinity, '354.345341', I); - T(3, -I, -I); - T(-Infinity, -I, I); - T(-I, -Infinity, I); - T(I, '-999e999', -I); - T(1.21123e43, -I, -I); - T('-999.0', I, -I); - T('657.342e-45', -I, -I); - T(I, 123, I); - T(-0, I, N); - T(100, 100, '10000'); - T(-999.99, '0.01', '-9.9999'); - T('10 ', 4, '40'); - T('03.333', -4, '-13.332'); - T(-1, -0.1, '0.1'); - T(43534.5435, '0.054645', '2378.9451295575'); - T('99999', '1', '99999'); - T('3e', 8, N); - T('-3..0', 13, N); - T('0 0', -0.4, N); - T(' +3e0', 4, '12'); - T(9.9806, '+ 1', N); - T(' +2 0', '1e1', N); - T('e3', 4, N); - T(' ', 0, N); - T(323, null, N); - T(undefined, undefined, N); - T('undefined', undefined, N); - T(null, null, N); - - T('-19.851', '69.11', '-1371.90261'); - T('-0.0251', '-1.09821', '0.027565071'); - T('-2.11', '-21', '44.31'); - T('-1', '7161', '-7161'); - T('-4.61', '1', '-4.61'); - T('11', '-0.0000271', '-0.0002981'); - T('-1', '0.0000224801', '-0.0000224801'); - T('-3.6', '-3336', '12009.6'); - T('0.000000219', '-110.42', '-0.00002418198'); - T('312', '22.87694', '7137.60528'); - T('0.29976', '-5', '-1.4988'); - T('0.00000000000000000010018', '-74.6', '-7.473428e-18'); - T('138.583905', '9.73380', '1348.948014489'); - T('5360260.6', '-12.12', '-64966358.472'); - T('-7.01', '-0.0000000988077', '6.92641977e-7'); - T('0.0000202', '-56583117802', '-1142978.9796004'); - T('116727.96', '0.0000000000000019308', '2.25378345168e-10'); - T('-136636.46', '6.5636554051', '-896834.639212729946'); - T('12.1712598149', '53.270389', '648.3677449597909961'); - T('76', '76019.61784', '5777490.95584'); - T('0.0000714939', '1425786', '101.9350017054'); - T('-3221.71685', '-230', '740994.8755'); - T('0.00000000237457904', '-892315', '-0.0021188724960776'); - T('6511.4', '0.0000000000000186', '1.2111204e-10'); - T('0.000000011188562', '0', '0'); - T('-25379.8', '3', '-76139.4'); - T('41.9279', '23.4198661', '981.94580385419'); - T('0.0000010', '58236.222', '0.058236222'); - T('0', '-16.39257632', '0'); - T('0.000000004846959', '1', '4.846959e-9'); - T('0', '-30878.5', '0'); - T('-8065.5', '-0.00000000058314173', '0.000004703329623315'); - T('-443850607', '-1', '443850607'); - T('-0.070884', '0.0000000000000000002106611401', '-1.49325042548484e-20'); - T('15510739.6998', '4.13', '64059354.960174'); - T('-1182.8', '0.00000000000006116702878', '-7.2348361640984e-11'); - T('0.000000000000000024429766', '1.492', '3.6449210872e-17'); - T('-521641.171', '0.000000044916564267', '-0.023430329181534636657'); - T('-1.4', '-50.3861389', '70.54059446'); - T('-906235823', '169450901242', '-153562476945135592166'); - T('818.5', '-0.0000000000000002572', '-2.105182e-13'); - T('0', '2', '0'); - T('0.00000000000000000723208622905', '7281.27407', '5.26588019315858457335e-14'); - T('-8.30486506', '-1110043.7', '9218763.139203122'); - T('1.8', '0', '0'); - T('-0.000000000000339156493611', '-0.000000000000000000167265', '5.6729010903843915e-32'); - T('0.00000000000000283', '4.074', '1.152942e-14'); - T('39.85', '33086328', '1318490170.8'); - T('4.1183805089', '-5.126069', '-21.1111026568765141'); - T('-464.2025675', '0.00000000000000000106831881858', '-4.9591633849340270415e-16'); - T('0', '-0.0000000000073', '0'); - T('-0.0000002358363833', '-37968.0', '0.0089542358011344'); - T('3.4', '-32545254.52', '-110653865.368'); - T('0.000000247', '12.88', '0.00000318136'); - T('-446908', '0.000000490399599', '-0.219163503989892'); - T('-0.0000000015', '91', '-1.365e-7'); - T('794881.3', '45.2898548', '36000058.66023524'); - T('5', '3046563.8', '15232819'); - T('-95094833817', '3.101', '-294889079666.517'); - T('-12786.5', '-0.0000000684878615', '0.00087572004106975'); - T('66754192.630', '7', '467279348.41'); - T('414951476.81', '-12.875', '-5342500263.92875'); - T('-2.486307', '0.00000000000131610556936', '-3.27224248983875352e-12'); - T('-0.000000000000000477405019421', '-1.1', '5.251455213631e-16'); - T('-367046.223', '-0.0000129', '4.7348962767'); - T('0', '0.000000000000093338247', '0'); - T('0.3341376', '-8', '-2.6731008'); - T('422580779', '-10829.0', '-4576127255791'); - T('-11.6639', '-56.51836497', '659.224557173583'); - T('-1', '-36577.4', '36577.4'); - T('61.5', '-68269.0', '-4198543.5'); - T('-18.10728', '0', '0'); - T('531751766', '41.50116', '22068315121.04856'); - T('-7.63315110', '3', '-22.8994533'); - T('1249.58475875', '38582.13', '48211641.6081111375'); - T('-2', '0.000000000000001022', '-2.044e-15'); - T('10.750', '0.000000000014145865', '1.5206804875e-10'); - T('14', '0.044276206', '0.619866884'); - T('12175855.915', '52.1893', '635449397.1047095'); - T('-1', '-0.00000000000029721', '2.9721e-13'); - T('311354.171224', '194857.1428', '60669584203.5706187872'); - T('0.0000008188', '6375.414052', '0.0052201890257776'); - T('0.00000055577528074', '3', '0.00000166732584222'); - T('526170.543', '6065.11546', '3191285094.94589478'); - T('0', '-27078031462', '0'); - T('0.0003450371', '4044.753', '1.3955898453363'); - T('0', '-5.681398758', '0'); - T('-2830933', '-1', '2830933'); - T('2.8', '14.36338836', '40.217487408'); - T('725.6556', '-0.000058977271', '-0.0427971869738676'); - T('0', '0', '0'); - T('591.1', '-182368.115408', '-107797793.0176688'); - T('1', '-8.44', '-8.44'); - T('-48988695', '3.99', '-195464893.05'); - T('-54145231.29', '-164.1', '8885232454.689'); - T('1.9615', '370.5', '726.73575'); - T('-2317170.34468', '-0.0000117290196265', '27.17813645069548986202'); - T('-3865301765', '9.90928729', '-38302385651.92906685'); - T('8.9648', '-3', '-26.8944'); - T('-10645.1', '-4208', '44794580.8'); - T('-390304.9', '-9.540', '3723508.746'); - T('0.00000000043946', '-0.0000000000135', '-5.93271e-21'); - T('11.167962', '907.089236', '10130.338118257032'); - T('328719912.6', '1.13', '371453501.238'); - T('8.0902', '3', '24.2706'); - T('-0.0000000000000000000103885880', '54949757', '-5.70850386173116e-13'); - T('-60096046', '147.9066', '-8888601837.3036'); - T('-1.1', '-4', '4.4'); - T('-2.3781033', '1.488', '-3.5386177104'); - T('18.64', '-13492494', '-251500088.16'); - T('0.0000000000000000078080114', '1362291', '1.06367836581174e-11'); - T('0.0000006699', '-0.0000000000000059', '-3.95241e-21'); - T('-279.40', '-4199.537182', '1173350.6886508'); - T('-346081282.623', '5715.5169', '-1978033419605.4328287'); - T('26098.51437', '-0.00004277160560', '-1.116275363379572472'); - T('-0.000000000038243914682', '6258350.6', '-0.0002393438263964435092'); - T('-0.23215784', '1.7', '-0.394668328'); - T('270.08569', '73.4', '19824.289646'); - T('0.000000000000000253826', '-1', '-2.53826e-16'); - T('1773.911', '167', '296243.137'); - T('-609057.1664', '-2', '1218114.3328'); - T('178326076.8', '-299396.226', '-53390154391306.1568'); - T('-99153591.8357', '-67230.718614', '6666167232273.3544197198'); - T('0.0000000000001596', '-0.00349909609', '-5.58455735964e-16'); - T('1.84', '0.00000000003464', '6.37376e-11'); - T('73.5', '0', '0'); - T('0.000000000000000049', '-198604', '-9.731596e-12'); - T('1052854077', '2.8', '2947991415.6'); - T('28.3', '5964', '168781.2'); - T('2085.7', '-338.192', '-705367.0544'); - T('59.12705', '-0.0000000000016294', '-9.634161527e-11'); - T('-0.0000000000000629', '-0.0000133901915', '8.4224304535e-19'); - T('0.000000000000000000010713336246', '12.8722', '1.379042068257612e-19'); - T('0.000620507896', '3.9', '0.0024199807944'); - T('3', '9.6', '28.8'); - T('-1', '7', '-7'); - T('4.07', '4', '16.28'); - T('-2473.25538', '12.3', '-30421.041174'); - T('-1310633', '-9', '11795697'); - T('-3.90', '3031.9', '-11824.41'); - T('150.0276', '0.00897', '1.345747572'); - T('2', '-8.8', '-17.6'); - T('-3030148.8', '229674', '-695946395491.2'); - T('2', '775.7549', '1551.5098'); - T('-613183.18515', '-3', '1839549.55545'); - T('-0.000000000001224', '367.376621', '-4.49668984104e-10'); - T('-0.00000000000000000737581', '1.3490', '-9.94996769e-18'); - T('0', '-1.15490644', '0'); - T('8.437', '-12103106905', '-102113912957.485'); - T('155.8091088', '3.465', '539.878561992'); - T('179142.3', '0.0060', '1074.8538'); - T('-301.3766', '9.6052', '-2894.78251832'); - T('48.15', '518165.306', '24949659.4839'); - T('4387518.42726', '-8069', '-35402886189.56094'); - T('-28.3', '-77.67', '2198.061'); - T('9', '0.00000000000001022', '9.198e-14'); - T('-1071.62294', '0.0000010', '-0.00107162294'); - T('-4.15', '-3', '12.45'); - T('-661.167', '453', '-299508.651'); - T('-104436', '-1098478.95443', '114720748084.85148'); - T('0', '3.630588', '0'); - T('0', '-13181687.0', '0'); - T('-1.111', '-3.78770', '4.2081347'); - T('0.000000042325027395', '2.89323850', '1.224563987727687075e-7'); - T('-21.7', '-0.00001926174637', '0.000417979896229'); - T('28151356.2', '0.00000000003236052', '0.000910992525337224'); - T('0.0120', '-862436.56', '-10349.23872'); - T('3649.71055', '-692509.6', '-2527459593.09628'); - T('-3', '-1', '3'); - T('-1135.91888551', '12.37808265', '-14060.4978485386674015'); - T('1', '2172752.822', '2172752.822'); - T('-0.00000000000001091997', '-117.1', '1.278728487e-12'); - T('-605.91910660', '2036476909', '-1233940269312.8094994'); - T('-85793626', '-403556966', '34622615410698716'); - T('387.034155496', '1.51', '584.42157479896'); - T('-212937', '7812.350', '-1663538371.95'); - T('838667.59', '-297101', '-249168979656.59'); - T('0.00382632083', '0.000316896', '0.00000121254576574368'); - T('0.000000000000002582', '-295757466.2', '-7.636457777284e-7'); - T('-0.000000000000798713', '21.52', '-1.718830376e-11'); - T('0.00000974', '-2.9', '-0.000028246'); - T('0.0000000000281', '38.82', '1.090842e-9'); - T('-3.237', '16967081.13', '-54922441.61781'); - T('9.8', '-0.0000000001333', '-1.30634e-9'); - T('5614.9', '-76.1668', '-427668.96532'); - T('-1.8', '3545.0927', '-6381.16686'); - T('0.00000249806256', '-1131.1175', '-0.0028256022777108'); - T('-0.20706', '11338.58322', '-2347.7670415332'); - T('1908.3417145', '-138.575', '-264448.4530868375'); - T('0', '0.0000669436', '0'); - T('325.22245849', '-14504.56', '-4717208.6625157144'); - T('-13.8825', '0', '0'); - T('0.0000000000869261985', '1.1243', '9.773112497355e-11'); - T('2588680', '-2.639437', '-6832657.77316'); - T('847973030.3', '1300.4', '1102704128602.12'); - T('-669.7', '-1150.41', '770429.577'); - T('-1', '-6.761867', '6.761867'); - T('-4', '-128.68', '514.72'); - T('-0.0000000000000000148', '-389336', '5.7621728e-12'); - T('5.1', '8.1', '41.31'); - T('959895377.84', '976.5', '937337836460.76'); - T('152', '-1325188.6822', '-201428679.6944'); - T('-1013851164640', '-116895', '118514131890592800'); - T('-0.555030', '0.0025719815451', '-0.001427526916976853'); - T('-8.61456', '-0.000000000050', '4.30728e-10'); - T('-0.10822', '-42439', '4592.74858'); - T('5', '248', '1240'); - T('1.00560719', '-0.00000000000000538', '-5.4101666822e-15'); - T('-0.0000000000000000880', '20.26149480', '-1.7830115424e-15'); - T('-215.544104755', '-4060438.71', '875203626.65949706605'); - T('0', '13031.6', '0'); - T('-0.0000000000000047877659854', '-208.19', '9.96765000500426e-13'); - T('-4', '-3160383', '12641532'); - T('-0.00104402960', '-6', '0.0062641776'); - T('-6', '-221362529.2', '1328175175.2'); - T('-5658.7', '-0.000009428149284', '0.0533510683533708'); - T('-3', '-0.0000000000000000171257563600', '5.137726908e-17'); - T('1577941089.0', '-0.0000000000000054178560', '-0.000008549057596685184'); - T('-3', '-19154.88287', '57464.64861'); - T('-5.3', '-0.000000000000000094150109', '4.989955777e-16'); - T('-275.9', '-618029.6', '170514366.64'); - T('-0.00277412', '-2.0', '0.00554824'); - T('20896.13', '-2', '-41792.26'); - T('0', '144.50', '0'); - T('0', '37399', '0'); - T('0.0000000103050173', '-6.752', '-6.95794768096e-8'); - T('-1679844', '0.00008795', '-147.7422798'); - T('1731362.632', '-0.0000000010867236', '-0.0018815126323525152'); - T('-116536', '8818.8637874', '-1027715110.3284464'); - T('112359.12', '-6.3736', '-716132.087232'); - T('0.02767509', '4.002781363', '0.11077733447134767'); - T('-942581.9', '7.504907', '-7073989.4993833'); - T('6603793', '1.604', '10592483.972'); - T('91689.093', '5', '458445.465'); - T('4351694708.6', '0.0003242690', '1411119.6914630134'); - T('-2.38', '-39', '92.82'); - T('-759.5', '0.000000324', '-0.000246078'); - T('-6.1623', '-10.1485', '62.53810155'); - T('1819.975133', '-1918.4931', '-3491609.7348320823'); - T('-544', '-2373759.39656', '1291325111.72864'); - T('-2143.2', '-0.000000000000000000162130', '3.47477016e-16'); - T('0.621559060', '53.8', '33.439877428'); - T('-4624.6', '0.0000000000000190537313036', '-8.811588578662856e-11'); - T('-6', '-50.943', '305.658'); - T('-3021.479', '3', '-9064.437'); - T('-965', '-0.000415509858', '0.40096701297'); - T('0', '6465897.6979', '0'); - T('74528068.573', '-119403349', '-8898900982117850.977'); - T('64.56', '0.000000017086', '0.00000110307216'); - T('-9626.07', '-1051902.812582', '10125690107.11121274'); - T('1.4514', '-1', '-1.4514'); - T('0.00120840179209', '-492240', '-594.8236981383816'); - T('-1.163', '-3.5', '4.0705'); - T('-390918.9935', '-3.9645296', '1549809.9209329576'); - T('1130.013737', '3', '3390.041211'); - T('-5', '-6733821263', '33669106315'); - T('27774.358123', '-0.0000000000000128441670', '-3.56738494049618541e-10'); - T('0.363631323', '-3819136980.1', '-1388757832.7919876723'); - T('-0.0000000065598472', '53857.08', '-0.000353294215438176'); - T('-240695', '2', '-481390'); - T('0.000059', '0.00000000000017987993', '1.061291587e-17'); - T('37.17', '-61.7668', '-2295.871956'); - T('1.475572354', '266461086.2', '393182612.2135309148'); - T('-0.000000000003907', '-31.5', '1.230705e-10'); - T('-0.0000000000000000000894018', '0.00000000000000001599913222', '-1.430351218905996e-36'); - T('0', '-0.00005850856211', '0'); - T('32.75', '-2.57293', '-84.2634575'); - T('0.00000131', '43', '0.00005633'); - T('-129602.62', '-0.000000000000000123490', '1.60046275438e-11'); - T('-2941.6442', '2.013048311', '-5921.6718883729462'); - T('1.01983639584', '10710047', '10922495.73175700448'); - T('0.4077750076', '-3', '-1.2233250228'); - T('0.359', '207160.173586', '74370.502317374'); - T('-26222.646879', '9.8', '-256981.9394142'); - T('-2', '-1.1360', '2.272'); - T('6717280984', '564735824499', '3.793489214890694027016e+21'); - T('-7', '0.000000000000000000179598', '-1.257186e-18'); - T('-0.000212', '754.3', '-0.1599116'); - T('-8.6', '-44061.183', '378926.1738'); - T('0.000000000000000000013', '956', '1.2428e-17'); - T('-3', '3.8968771877', '-11.6906315631'); - T('-4485.1947117', '444609963508', '-1994162257095211.5806436'); - T('0', '-3353199.6579', '0'); - T('0.0000000000000000000293', '-4', '-1.172e-19'); - T('-225', '5.09648', '-1146.708'); - T('0.00000036757', '0', '0'); - T('-78694.836', '-43.8', '3446833.8168'); - T('0.000000000000018028989162', '495', '8.92434963519e-12'); - T('-4036233', '-0.0000000000000000000134620360255', '5.43359140533119415e-14'); - T('-2.19', '-481624.5154', '1054757.688726'); - T('-6', '-33692.483', '202154.898'); - T('-0.00000000387466078726', '137145711.9', '-0.531393112039787150394'); - T('-52.6685', '-107972.8', '5686765.4168'); - T('-7.137137210', '3.06', '-21.8396398626'); - T('-174.1619', '-2084784202', '363089977710.3038'); - T('11', '-0.15', '-1.65'); - T('177.3211', '-85578219.525', '-15174824022.2144775'); - T('2', '-1', '-2'); - T('-681.685707574', '222753546489', '-151847908952971.868407686'); - T('2225288.04', '-2945.03251212', '-6553545626.6317910448'); - T('-829419822664', '0.000750870', '-622786462.24371768'); - T('-3.887', '-0.0000000000215299', '8.36867213e-11'); - T('14780708.1', '-2000820.86', '-29573549092050.966'); - T('-65280872367', '2756.0', '-179914084243452'); - T('-1.1', '-16652196529', '18317416181.9'); - T('6153.32891899', '3.07', '18890.7197812993'); - T('1.6664', '10.5', '17.4972'); - T('-335.16960', '25.16', '-8432.867136'); - T('20.7', '834', '17263.8'); - T('8029.51', '-1', '-8029.51'); - T('3544067.44', '0.00000000000000000108040', '3.829010462176e-12'); - T('-0.00000000000000861840983', '3', '-2.585522949e-14'); - T('-1', '-5.4071', '5.4071'); - T('-0.000000000000014799305202', '-77.4875919308', '1.1467625223519416640216e-12'); - T('0', '-31045268779', '0'); - T('-437', '640.03', '-279693.11'); - T('60', '0.000000000000000371281463', '2.227688778e-14'); - T('-1', '-0.019533338878', '0.019533338878'); - T('-1117.048', '8.967', '-10016.569416'); - T('-0.0000000000001992331', '17762516', '-0.0000035388811264796'); - T('-1.209', '-3960.47030', '4788.2085927'); - T('-994748.5', '-10809803.2', '10753035518495.2'); - T('-3.0521', '0', '0'); - T('4553015.460', '-6', '-27318092.76'); - T('0.00000000403775332', '0', '0'); - T('10628.68130', '-1.196558', '-12717.8336389654'); - T('-0.00000000003389', '-113275.58', '0.0000038389094062'); - T('0.0000000000000000000810', '-0.000000002954', '-2.39274e-28'); - T('0', '0.00000002678', '0'); - T('12309', '25980042.9', '319788348056.1'); - T('-7.6', '0', '0'); - T('-61.22', '-349.3', '21384.146'); - T('-1.845209', '0.000000052784913420', '-9.739919730680478e-8'); - T('395.326251', '-371872028', '-147010774681.007028'); - T('332.72', '3715', '1236054.8'); - T('-1681921.54', '76348.91498', '-128412884660.4906692'); - T('517583042', '-13.9', '-7194404283.8'); - T('-21.723616577', '-0.000013157028', '0.000285818231564853156'); - T('-116.13334149', '0.0000000006536', '-7.5904751997864e-8'); - T('-4.1', '-294.0876', '1205.75916'); - T('-22.05', '-6.7', '147.735'); - T('-22.9', '-0.00000217178', '0.000049733762'); - T('-50.5', '0.012432393', '-0.6278358465'); - T('-2', '-0.00000000000119764950', '2.395299e-12'); - T('19381.0141', '65.916071785', '1277520.3166816971685'); - T('-4.90', '-22.5701', '110.59349'); - T('0.00000000000192902409442', '289522860.5', '0.00055849657378990048841'); - T('-27006298.37', '-8164.7', '220498324301.539'); - T('-8776869', '-143972778', '1263630212072082'); - T('-79325483.3', '248065.2', '-19677891879911.16'); - T('-26.2', '28441.8', '-745175.16'); - T('18.71', '97792.4647', '1829697.014537'); - T('-150.68501', '-1.3460', '202.82202346'); - T('-43.0091494663', '-5.6724', '243.96509943264012'); - T('12.359', '-1.261', '-15.584699'); - T('0.0000000048694525', '-13', '-6.33028825e-8'); - T('-26799', '-3.0401', '81471.6399'); - T('0.000000000003271187802', '0', '0'); - T('1', '0.0000000000250081008', '2.50081008e-11'); - T('23.590033588', '0.000000000000000880594309', '2.0773249326711650692e-14'); - T('2.34', '-35556883', '-83203106.22'); - T('127410324', '48.0', '6115695552'); - T('2.4', '2.0', '4.8'); - T('17', '-0.00000000000000000467960391085', '-7.955326648445e-17'); - T('-5827035', '63.01', '-367161475.35'); - T('-452352446648', '13167459.5', '-5956332520963450756'); - T('0', '27.51619908', '0'); - T('-6.8253', '-203490405', '1388883061.2465'); - T('-663513.1', '235798', '-156455061953.8'); - T('45846991454.7', '0.000000000000011371170', '0.000521333933819940999'); - T('-6940453.30', '-0.0000000000000000000429869089', '2.9834863373180437e-13'); - T('-299.7692790', '-2.0', '599.538558'); - T('-0.000000000000781997707', '-0.00000000002498', '1.953430272086e-23'); - T('-211968.876', '-11448', '2426619692.448'); - T('-2', '224979.5', '-449959'); - T('0.0000000000007372', '3', '2.2116e-12'); - T('2.14', '-96.5220369', '-206.557158966'); - T('246.3484', '-119174406049', '-29358424251121.4716'); - T('2301100.91737', '-431951.5', '-993963992909.347555'); - T('-13819448.15', '0', '0'); - T('0.0000000155919108142', '8.51', '1.32687161028842e-7'); - T('124616457', '513907736', '64041361285211352'); - T('-5298.3584942', '-4.1932', '22217.07683787944'); - T('158463114', '0.0000000000000000001405398', '2.22703743489372e-11'); - T('-65667302.5', '7', '-459671117.5'); - T('-1693481.437', '-27743783', '46983581502656.171'); - T('-0.0000000000000003099934391', '125', '-3.87491798875e-14'); - T('-0.000000000000004272052', '0.0000005661', '-2.4184086372e-21'); - T('12.95933', '209420271.72', '2713946409.9091476'); - T('3.1', '-1.31573054798', '-4.078764698738'); - T('0.000086866', '-103057641552', '-8952205.091056032'); - T('11.1', '660.353292988', '7329.9215521668'); - T('-92.940180', '-1', '92.94018'); - T('97808795959', '-97', '-9487453208023'); - T('0.000000000000000388699', '-399', '-1.55090901e-13'); - T('227578760.552', '-40082.64751', '-9121959239968.50902552'); - T('-4.31547', '-29.771127352', '128.47640695373544'); - T('27.8', '60.0346682', '1668.96377596'); - T('12.7', '60805396.70', '772228538.09'); - T('6.808549', '434235.18', '2956511.50055382'); - T('-0.000000000000000000764', '798867', '-6.10334388e-13'); - T('0.000000000166682635066', '21.7', '3.6170131809322e-9'); - T('-17.0856584365', '-73.70395', '1259.280515120874175'); - T('-0.000032761108', '137.87702888', '-0.00451700423385679904'); - T('6.7467', '0.000000000000000000017375144', '1.172248840248e-19'); - T('156.9', '-90.01049', '-14122.645881'); - T('-294748892', '-46912.02', '13827265916481.84'); - T('-1145.2', '77', '-88180.4'); - T('0.000000000000000000049300', '336.35', '1.6582055e-17'); - T('1.0', '4', '4'); - T('2791.3', '372.0576', '1038524.37888'); - T('0', '-1.1', '0'); - T('-67196.498357', '36318.97052', '-2440507642.87511143564'); - T('0.00000000484838500152', '-0.00004296', '-2.082866196652992e-13'); - T('-1488.65084', '-2472469.6620', '3680644039.21081608'); - T('-0.000000000020', '-9.9', '1.98e-10'); - T('-2841.5725628', '-0.00000000000000000049499064214', '1.406551827547777476392e-15'); - T('75.099315636', '0.0000000000000014', '1.051390418904e-13'); - T('3', '-2.7', '-8.1'); - T('0.0000096', '-0.000000000027265607', '-2.617498272e-16'); - T('3256481', '-8.7', '-28331384.7'); - T('13650.44', '-53', '-723473.32'); - T('6', '-8.1', '-48.6'); - T('12.819672478', '-1.0', '-12.819672478'); - T('0', '-0.00000000000000000001480', '0'); - T('-0.00000000932497', '1', '-9.32497e-9'); - T('0.21304', '-0.000000000000159938', '-3.407319152e-14'); - T('-40', '-10124.4', '404976'); - T('-138.46343', '-72.2', '9997.059646'); - T('5', '-65625447009', '-328127235045'); - T('127.3760', '-572993.9', '-72985671.0064'); - T('3793.636', '-14016.5', '-53173498.994'); - T('-0.0000342', '-3.21', '0.000109782'); - T('1.054585905', '1', '1.054585905'); - T('-18462488840.1', '6264.198', '-115652685667176.7398'); - T('-55413', '-9808.30460312', '543507582.97268856'); - T('-1.11918007', '0.166606078', '-0.18646220203846546'); - T('-1.6', '68.418', '-109.4688'); - T('73090459.50', '2990.3', '218562401042.85'); - T('672.231', '19.8', '13310.1738'); - T('-0.000028', '4.8', '-0.0001344'); - T('-0.13900815895', '103606359', '-14402129.22010276305'); - T('0.000000000000054', '-0.0000000000000000492', '-2.6568e-30'); - T('-0.0000000000000000000484559', '5.193', '-2.516314887e-19'); - T('418.8538369', '0.0000000000000079', '3.30894531151e-12'); - T('0', '675966', '0'); - T('106621', '13.56840585', '1446677.00013285'); - T('12.198402747', '1', '12.198402747'); - T('65.314804858', '-0.0000000036124', '-2.359432010690392e-7'); - T('-16207.72', '-0.0000000000052877', '8.5701561044e-8'); - T('-26109.4977159', '-60149.26838', '1570467185.380666093242'); - T('-0.000000000000030215', '2614373', '-7.8993280195e-8'); - T('0.00001270329688', '2444.29', '0.0310505415308152'); - T('-871.457466', '2348528202.8', '-2046642436441.6221048'); - T('-0.00000000000000000063864554', '397.146', '-2.5363552162884e-16'); - T('-24310822171', '20.60', '-500802936722.6'); - T('-19.860', '47497302.8', '-943296433.608'); - T('-3.55', '0.402200053', '-1.42781018815'); - T('1311.50024013', '4.4', '5770.601056572'); - T('-361', '0.000000007669817618', '-0.000002768804160098'); - T('-0.00000001735304418', '164354775', '-2.8520556717689595'); - T('0', '194.3', '0'); - T('-3.7', '-1475870.0', '5460719'); - T('-5888926.57', '-1', '5888926.57'); - T('-11.644', '-83797427.047', '975737240.535268'); - T('-0.005286102', '25.9', '-0.1369100418'); - T('0.0000000000000545367483', '-176.8675', '-9.64577832995025e-12'); - T('-112.5258392', '0.05538900297', '-6.232694041650542424'); - T('-2032574', '4.7', '-9553097.8'); - T('44405.894', '8', '355247.152'); - T('1430.7023529', '15', '21460.5352935'); - T('-0.0000000000000000010538367753', '-5.05921', '5.331581551965513e-18'); - T('1107.1', '-660486.6', '-731224714.86'); - T('-0.000000001271832580', '0', '0'); - T('0.00000000003329420451', '-4.58', '-1.524874566558e-10'); - T('-1.1331472', '22318736.7503', '-25290414.05613954416'); - T('-1320771192.0', '0.000000000000000144797721037', '-1.91244658612921966104e-7'); - T('6.0088825', '-2.06', '-12.37829795'); - T('-0.00000000000000130', '-14.851119896', '1.93064558648e-14'); - T('1', '-54959924930', '-54959924930'); - T('1.22', '-0.000000000000000000447152061675', '-5.455255152435e-19'); - T('0', '2460.4318049', '0'); - T('-48926117262', '0.00000000000019101657111', '-0.00934569915711302150082'); - T('-1.9', '-0.0000000000152246057022', '2.892675083418e-11'); - T('-0.0000000000000000262046', '-18965.321', '4.969786506766e-13'); - T('-1.5349403', '-3984579.1', '6116091.03912773'); - T('-0.00000012', '663568053', '-79.62816636'); - T('-54228857.6', '0.162776', '-8827156.5246976'); - T('0.0000000000000000001875935465', '14.25202', '2.67358697658893e-18'); - T('-13.1992', '-8.93496384457', '117.934374777248344'); - T('1.4', '0', '0'); - T('383.512', '-4258970898.7', '-1633366447302.2344'); - T('0.00000000485581523775', '0.026476965410', '1.285672520872576762275e-10'); - T('-113.2617', '-1.3158604', '149.03658586668'); - T('229813.79204', '-4.40918501496', '-1013291.5280939017289184'); - T('-0.0000735399', '6', '-0.0004412394'); - T('20950', '18.05', '378147.5'); - T('-224.09235215', '-0.0000000000000000000330291504', '7.40158000265211336e-18'); - T('-1212.5', '-89187.79', '108140195.375'); - T('0.000000005360379781', '-5.853730207', '-3.1378217045031744667e-8'); - T('1.721', '-59400291.7', '-102227902.0157'); - T('3', '510831.1558', '1532493.4674'); - T('-79731.7076', '-0.00000000199301902', '0.000158906809743878552'); - T('1', '7', '7'); - T('1557292', '116069515', '180754127153380'); - T('13174514.5181', '0', '0'); - T('11.5557387', '-0.00000000000003525009362', '-4.07340871023257094e-13'); - - T('59429490631462462063898399891833', '85.00891132032463441584595955', '5.05203629890205609747397099201262363916734883085091009335515e+33'); - T('-0.000000000000000042109349317791897577655162141761006017167', '-13008827246961207056988713615056579178448396076639.2633976291', '5.477932507570985534957063193452340625430871365299670940723162464475095465880668702087454656216987597e+32'); - T('8591855.554373470161526044552421978378391766637549711729320', '-4.18144454943', '-35926367.5773248178055078206847122253956635626957707604812328535202876'); - T('-2283433141014849078.33114178969776355920', '-453.97', '1.036610143026511036089988438269093722970024e+21'); - T('-834090482593334176100123.7933568971710257756', '-2311068.681', '1.9276403914416302737519348190500409072951706328939836e+30'); - T('189532.2', '2968613550973672055370920.6', '5.6264785726585220673297239734332e+29'); - T('5.5765', '206791541', '1153173028.3865'); - T('223004397.925983046564773982957421494273449', '-0.00000765764399', '-1707.68828752147254136863163630226113151989615142151'); - T('-9', '-861605.04321559065136010082968313802', '7754445.38894031586224090746714824218'); - T('0.000000000000000000028090298007095127212699390661641605', '-6917964065283873879.11378929124954598', '-0.1943276721961993069547944346297165198267413742521737520171142577284979'); - T('-12902.95204428144349964281942884855605291385221512', '936511255610118037649.1', '-1.2083759820067154006199526430520916600744894425420426553143497592274392e+25'); - T('0.000000054421393267623019090', '0.0693540337668146867938144', '3.774343146319828330922834963772562065116896e-9'); - T('-0.00000000007483922', '11963887185334360.01202905021298539073645325022668', '-895367.9851184189424994447352806605141113868134295543896'); - T('-136818356017962729836947190424992612288254', '0.000001250702751', '-1.71119094258963391622539632506259119343595682786754e+35'); - T('89886141515.402264741', '165920325588054483132342147189817', '1.4913937866089484761163201125053970911515450613342397e+43'); - T('-4910559.69867254476135299557110880352698481', '-0.000000000000001251373615473295746877725841601861845423548', '6.14494484412532005943449278569391549262463086794696425713068030612078654982181230588e-9'); - T('188388334026044880874021952902236669508901633565820006', '-1428610610603915751990.6', '-2.691335729036024155624090667679961618627273975496253699574106150646158039436e+74'); - T('2569238997875.3944611244282198384307876980880850', '-45354701.13646736794503189060', '-116527066896795434703.141029468202286044275680813636330729593599972883501'); - T('-20273871998054251005', '-0.00001018031347', '206394372190847.50529696253735'); - T('0.000000000127882266384995374972957752031634640610096', '56084430050054721499878916115459816143192971582.9', '7.1722040237117373866688717282573432808847848059761445842371981626319357370527308468409584e+36'); - T('954627502168195877866647607616261900931', '9.96209474259629834949998607', '9.51008962048762055845159388440432218351076192328571371885622003117e+39'); - T('27452502565473996463690067929.18801932606917287121704780', '-15999511778834005759916561695256821.291408', '-4.392266381547719678372690910805800180664096055687896418712826017984317410615883824886612653024e+62'); - T('24739272583405.47186561318831947000688841802596024659835438', '0', '0'); - T('-14628477765152447836551575115758391.03361640644696947989', '1896549844807094292937664785889813670098706728.8', '-2.7743637235263904499250092914009953677085505785952534916815852412079339245487773243303684333379283832e+79'); - T('-0.0000000065376926', '400694118953983940534743481756583594', '-2.6196149763489805485528325035782515637752044e+27'); - T('6159556.6345747363', '12428.3903194610108', '76553374049.32049544464848654145204'); - T('1', '-214152.677228898078143751453160882566438516677', '-214152.677228898078143751453160882566438516677'); - T('1234245458508975352.84372029387871714', '711.09788699', '877669337572736089357.1591886677375895858960086'); - T('-12435092008252.828827', '-0.000000000000000130972832307119388', '0.001628659220320498210781727802616997876'); - T('1222155005674.47827107178853812873657', '-1.9217613579329307675966802225522', '-2348690263309.514070047950271986297573047714307144600821921806873954'); - T('-9610326782.75790', '-1925856563138573766.221666413429', '1.85081109084807161320054127390660041302158391e+28'); - T('1897933.1084909834795612591951194123752666123', '-19444.86721593176768385769', '-36905057279.327795521442821058258453663270782572671411150172721603587'); - T('0.000584193054195683632690208', '-15427224.032385517626932779704097', '-9012.477125240345688831570386428613444841606254309382176'); - T('-9193123344.97483292546402603464388933977', '3', '-27579370034.92449877639207810393166801931'); - T('-208355', '18.5077', '-3856171.8335'); - T('0', '-7.9', '0'); - T('-146.9974821', '27.85613660690160', '-4094.78194224817268246136'); - T('0.0000002221395758167297538432', '-11018022952341415341382543191308.248305367013916352', '-2.4475389449721144325377299337884145675514764946137036517351977553240064e+24'); - T('-62634425863308865890231971109828114770592016347.2857222333045', '-0.0000000000044191162667', '2.7678881018796339994185288016784587422371771822944265151385376844431015e+35'); - T('0.014785725196930589141008331862', '1405730020396633.72', '20784737782660.25819955773732132563645741958664'); - T('3060880958477929473167827.136432332645114184906595927797020', '-134990224.755007177950183445', '-4.131890085332574931410011369432785413898866996911658019131150911202211096837243339e+32'); - T('-251157.56', '-35553.75153', '8929593483.1210668'); - T('10660825.6584256928', '-54.80641419272238648411', '-584281626.672080870616452029619482941408'); - T('0.00000000000000000018196806510154644625549186906147312734531', '290466772346954491087868523893813560578350699536244189', '5.285567654026668587345538632825206167793448119823731989523008725260266169443990119026948390359e+34'); - T('801946936195133455122.3263199289', '3353455956475898285353850471499087737905097359235396953.528', '2.6892937299611674351748616442698675657013699635861635172559630870783247800626545335641592e+75'); - T('88876291341359997.22', '-242985336224765018278774996045975', '-2.15956355339905308693512776069018053139845369921895e+49'); - T('-677.8706245402', '-40041.8855', '27143217.9316521785471'); - T('3.1852520702012', '0.00000998870874036575237809441602188548308619567919990770190850', '0.0000318165551938868335179942506676244968068581347935045219680140052189902'); - T('-2897031868709978067512290.19826378134251899155435029', '-0.0000000000000313426136', '90800550447.862773034512424935249089493462002949664538517944'); - T('-286245211287.816038991926811942762853058522756387871', '-905725.51698541', '259259591978255100.08416583456412844730858064475954566698860796211'); - T('-301283745846510635986864779646783.59226306843', '164455867753899', '-4.954787986333307027587976990843711993792791415951383630857e+46'); - T('16627939773', '-24446.50', '-406494929660644.5'); - T('2835613541302657637165162939561661439198237', '-34702274210562114517526690656890036690211485', '-9.8402238665467925464317665495284869217720281504532926830801758242091305082784369151945e+85'); - T('0.000000000000167329000479220734904842317239446253923254', '-335462.843', '-5.6132662217107750155727738207852552086794690651122e-8'); - T('1606900543967463817538016297544283302866330961.38117', '-12172415089417043266077235.5931339752547820885496331722', '-1.9559860428582011548778770036179464667831089769951903599695351323242935536918541220406695361968160447474e+70'); - T('25175391597018424433550189069315474558138086224811394.9498', '2697842514071148.65', '6.791924175882585620347727294751149080055684613881481427569426305249508777e+67'); - T('33605644614556574.500804536703659893409117374', '-32.543409918351171133101366277860678601667282494', '-1093642268261945046.079483918411013199812861395190797870188216612955697572700923777661450756'); - T('-16194637333856709349021519708.8552324881761540256020238975', '-468.317375400951782165492196622874246631857734334382', '7.584230051762041449005379580598839525796458346850505580761259136785876093027076066542485326077054219893845e+30'); - T('45938105933592236851533187176.70670204189811056', '-23728.6', '-1.090046940455836751355290385241202650071383506234016e+33'); - T('0.0000019359500318287540988972385182980431073131086249', '-1.433', '-0.0000027742163956106046237197427967210957727796846594817'); - T('3.383292222691', '-0.00000000000000000008416407858503881', '-2.8475167250671594974339763771e-19'); - T('-1781216226076936151337005862078252102700230837', '-139003643961.53840777847576996', '2.4759554610811353724544585499901643072996118138112041996180785490331025652e+56'); - T('-4942215729757062263164723577.197780606517', '-15241705.579', '7.5327797060859772211128133542568249856768162658343e+34'); - T('20212448898283508798.6625218057881201405', '0.000000000000000000473337907308896740021174588136160473489005777205', '9.5673182631015315198993602152061224371243489547543953762429365302559862133611162973025'); - T('0.0000000000000000000336083585075308914988259705527435231286920', '-1042029834722073772731648833.0978', '-35020912.2608826168412442748054117197175486895048242174316983271784220776'); - T('2376653285350901814422.788590453876', '-7116898082702.215', '-1.691439920976175340680854757410757210391140053534e+34'); - T('-0.0000067077602282', '10325935005362413727223741709915.3224340753', '-6.926389614794815252662513824455946141306951378398346e+25'); - T('118620396179863704912953340.8484888231431511', '0.00002664482432944840555300828814', '3.160619618102041148915830017998160333002812044061355761312703976357954e+21'); - T('-0.0000000000152038475299141990408716170165065', '0.000000000000005856774815228245375399878344009978104812414293866282', '-8.9045511307771647940461821641351376995341987855772716940834996589432243659697783833e-26'); - T('-552929555032574543198346', '0.00000000031628803556881', '-174885002769189.22345730619750676118826'); - T('0.000000000000000045838', '3539579713.731326460', '1.6224725491801654227348e-7'); - T('1392529024903490704995506782982906.381429', '-696.803141131', '-9.70318598668840847367530799623705904459432004456199e+35'); - T('0.00000017046264046382452', '77820777096586290650583567570533323989282', '1.326553514683081867495692236827890756347852656781320879464e+34'); - T('173.2', '400230281235477723305446756183676238679630391', '6.93198847099847416765033781710127245393119837212e+46'); - T('441.339801980', '3859926956832539877913158087979570115173.37608', '1.7035393987857371577386465661853388929161435925152686384e+42'); - T('146444036588433930865962234014095372651938826216413', '-52287041949860150983876138.09252718579', '-7.65712548440629977355786783708824277254343945936126868688503521615280343003456839837127e+75'); - T('-152996991626635397079841283901340.65158799', '139164451.4055465586500905725256511816907743', '-2.1291742406419715449781823729219758981469966625530964344454535418866326578427680657e+40'); - T('-2392095943969007513831013778238', '283213.66941826693939894680290224', '-6.7747426989201568951320097088428601075588412800688116615345312e+35'); - T('-15192560288102281367737239879605.47240096086', '-81553445736510122', '1.23900564105440798918085016560369292282227123306201591582492e+48'); - T('1.7067661013360140299015089144175628', '-8518082392971818901480808577069938345874733', '-1.45383742767114563412540521449653172561766842289564535605710831784007839607324e+43'); - T('111116813960956208515375359292296052638950332201721672', '-6723639335232846900768096240894018745358463215413', '-7.47109381153635523540473499319528741906993971058857734750058361188185043050515216086975306279606530536e+101'); - T('-19017520.49675261317806237143645102654220495050', '4439261178196804.5636234243239638305', '-8.442374044679588557398641259522603028251217372386419857709859483039768004289025e+22'); - T('17312453768.05379', '1726.44336801935101862147113581125657128654142147602', '29888970991998.0896280136870221704774967797321308901016337045551158'); - T('-2', '-8.63876', '17.27752'); - T('734608.2', '0', '0'); - T('4.1351657034625927353146715451605855050687982255845069770', '29034498780299324669067501513285520', '1.2006246357352024765485891656111571028229380504313388083084112136514462841267544463307304e+35'); - T('8113870024531627718699652079910.7068190690295904975254176585', '16923534495569343509614671152502455712381.505727413', '1.373153592527270771522358333649474524182371877317191394431842566433920202044363434189424789373922626777224605e+71'); - T('-10.01', '-4864429445729841.069760518121786', '48692938751755709.10830278639907786'); - T('-2257142436339514797101935880.78', '361.115', '-8.150879908987438859554655755878697e+29'); - T('2334599.31164827194227', '-29960204503173960913.6', '-6.9945072809951386426110474550748535657872e+25'); - T('0.0000000000000042471515826788460724024393725389035009593598059706180678', '828398091382.612675070213', '0.0035183322649037987809384707757042363075619742175811901626183872501809043713944414'); - T('-0.0000000000000000000284493127383335026590175755701910596367998889566726', '-0.00000000000000000013237', '3.765835527173205746974156478226190564123201301194752062e-39'); - T('-0.025286262', '-0.10797436581647216600797099911020807463243214320798554', '0.00273026810331915910538504877190248824967123287037864285665148'); - T('-2.16564935772054852403', '123868749404533277771925133166764554.44147780538237283827', '-2.682562775895750704487504519843216927715513029094342900139628307846103986281e+35'); - T('488112856156098659519479388744402.61', '-3114334168535743226695852106494538175980162249914143.70', '-1.520146546028510353469309736526975923164123845906295275264771051373672808879616446195057e+84'); - T('13062458273.90637045335784972', '-422551949801626.741267985176602715381458097174737967000518', '-5.51956721284152853764296726669744927261362132472755924039708895768532345915860615496e+24'); - T('-1774897196938188058987.040101468413944266333770483137507', '-546064776871.3594927107191784', '9.692088418156530694143698199431520418181775404052225935078568528036161040292642488e+32'); - T('17667764535653225248288857836.95612603671740964890', '-0.0000000000000000319890032591629766', '-565174177313.13507635499469894977748029671843469133582435048491574'); - T('-281835819.9184911063', '-7175814054420814885484554.4', '2.02240143761032232334599327109026978241853272e+33'); - T('0.000000000000000001503903188910', '2473558551492927739005724.481043938460207033289961875', '3719992.59354581446800290523978683389613115250358419250482280625'); - T('224371010310.537303586', '-8046248744083810452149728.077812213', '-1.805344959919976464767416627850984855572049419079495818e+36'); - T('21241841371778633003043.69805019497112440', '3019928870075002318121482.417', '6.41488500121878843990786691028203447626143414100289387726373196748e+46'); - T('-0.000000000000000017364919937061080720023417741392471545683503908', '-0.0000000000000001101', '1.9118776850704249872745782933273111171797537802708e-33'); - T('439522909103802363083392888521183473696.816065', '-2.2', '-9.66950400028365198783464354746603642132995343e+38'); - T('0.0000000000000081177461857815960900264491259569062173810350', '0.0610415335877925918303617472579311', '4.955196764565624988836180976890473307042478930774835424434663605140744766885e-16'); - T('-186798563956757871041672400714377.094855823', '-1262567588714917541983982710.193577', '2.35845812470293091731202495176066945197325419055745256762489749711235648871e+59'); - T('202739871381.909125537', '20323942031180.7301604586345358572504650', '4.120473393374958139010105109821762644139100410749336624705e+24'); - T('-0.0000000000871057582376852096451379468926610553156501430073631916', '-0.00000000000000000204556363069958967723715901466977445824097114499093', '1.78180371075520049530019591335531323553330829840490421849868550913658281328132369671225257713629597852188e-28'); - T('43650.3286859870996376890566772833', '0.00000000000000000001310330289622533562857521522228834136757813518300419196026', '5.71963478292282611553143218521780871633322080859969244917523136988043505512171959238361658e-16'); - T('-1092205601185294', '2', '-2184411202370588'); - T('5860768904954696696.24176142662833543847', '0.0000000000000048972255', '28701.506930951217005600908223400663331828964985'); - T('-85896656824567.02163635501735158916726224558523587655', '32321.39', '-2776299344922992287.4470686942774805948582718361870079644045'); - T('0.00026', '95786603846831218908589843126114668233645', '2.49045170001761169162333592127898137407477e+37'); - T('4045878451917596479346482', '-2.2547', '-9.1222421455386047819825129654e+24'); - T('-0.00007402891873793970469482766866928008041088343139', '580', '-0.0429367728680050287230000478281824466383123902062'); - T('-294517422548703614947348777318332.649869292704089396942', '-0.000000000000018464905130542546160683866082', '5438236266653724351.349152153311431266266033202633265447500622081254643984468321244'); - T('-83.506', '-8171012757524040761112.5', '6.82328591329802547797460425e+23'); - T('0', '-0.000000000000000052054568154502662326801153388437977', '0'); - T('-848457792560875.315304639536969249869368391843456', '2786837672040308423168750746536175069.979124227', '-2.364514139444808677729215519365182902026897625419714103499744958027008402375235640420961008512e+51'); - T('3114192', '0.00000000000000007442771895146280027117559688227552768887141498150', '2.31782206936893840902092874406007390124461849564067448e-10'); - T('0.00000000000000000004917302646400565894337036110048', '-422918872', '-2.079620088498342188194690499484768025856e-11'); - T('-497313848.92', '72015813415347226684601.47954307807272704460158688818499730', '-3.5814461352690899900766892687894799291942231391683303086680262807916e+31'); - T('4026.7272674898467547880850473160814529617052037657449361', '-21157682685', '-85196217784587.2940970833078499068622793775121577888984306494014285'); - T('161789945200634672.93574932528', '-8005803048483811151653134568908048072385822541265', '-1.2952584365012698158369216496463941318557463003471359935387477829065387076792e+66'); - T('-0.00000000000021548823070578223953868560097628121116323968225230682924', '-49653567182460198793826479862157.077878', '10699759340379041130.65114538401855139934323670216223964167385329900350710562551938222192755272'); - T('-5565648526946998.206396582068274786458395468246488801913', '0.0022945055453979742566004395333553200630524525428518539025', '-12770411408815.9541406930749916678604063671114068656466120089976699763004963995450912686342679576306781385154825'); - T('3.271826', '-23890.6474306628013', '-78166.0414204757505261738'); - T('-0.0000000008805699092114903173390188646922', '9284821552.25745813417849639083469216233186', '-8.175934471316238510307959904561765618357930068136953080998844682973153492'); - T('361333176.6552043788873570', '425816532338214481.0652246362221874080822', '1.538616403020706012031174663425818903103785031033415757451967454e+26'); - T('2805.024', '3138666568668923617772609.35105', '8.8040350531139788020189957723196752e+27'); - T('15516261613526.6610074517562', '-0.00000000000000000236624580694534592762621412652683109621677385955', '-0.00003671528898247448920639683215816512848818717755547603887938060370189964171'); - T('-0.000000003258489294057571', '-0.0000000000000000001263694100620034334234551033555508871', '4.117733697834092773082498224393477748428351275212341e-28'); - T('-21061048707054855665564434392186020553808698597863.879494', '181831629693595281071297779845', '-3.82956480945997219565546562178683388176250894166635033461551679226752688144082199843e+78'); - T('-0.0000000000000004150087739116129831368627055614', '-1518028660414097725821098740744462450073.304250189994494', '6.299952131211430047024557585815135401837971947761937657558761468690680184406091789316e+23'); - T('-329353403844205335310.931518048486742714840512646142', '0.000000000004737902605006197777999824176859382087', '-1560444350.041118731605073747643365481135986445785795088564232590700292190358983404458354'); - T('-36414599958286461846528123709871289767333710768520', '-11982666807671338.82516899790506494507', '4.363440182347893057208595495864483712233866372669435753275016489496855915098212851964e+65'); - T('119742066861.890807047', '22054829383.984629241', '2.640890854724681514607753859168565061327e+21'); - T('-484485733573777836334476960525005005848019789', '-14406177805616860655.8627771810687838', '6.9795876221485617831711438674257823866674330443283469578093046623068838325626182e+63'); - T('5988848948477.078723617', '-6.5', '-38927518165101.0117035105'); - T('-1.0', '-63379703.864490098873312332', '63379703.864490098873312332'); - T('-0.506613427677516177791327725446313117452', '-0.000000000000025064675288473359447414244747114622651598944039', '1.2698101061517425226884571964189454600296022874042153446180321519393920461477382268628e-14'); - T('-23042537.21970212804132180', '10390764065108.50823342162627716811120', '-239429567711406187063.05734442567122738046800108051885738416'); - T('9812550833139441428690193893295885866528739.860970333644852', '-6934084675959416258239634601815942.0149731256600469716450344', '-6.80410583641450037528576307977037672169914839765125030421279633360096772675136555394720496053502446210349236989229088e+76'); - T('0.0000347689', '0.000000000085057549281766287602723911010', '2.957357425222803877030347389515589e-15'); - T('17309197932605.95272164347202723030822567422328', '10372291249693770815173154703247665392420536', '1.7953604225558623153970783373103876250250653717733283278048673842023984171292886092127808e+56'); - T('-10.68586744857482180099209534824648355512284245440', '674588.26676653525901087', '-7208560.801031027382439380269948592059745431252505648164243884987079328'); - T('-158425376406388668464703992996848728.8980383980010724', '516624932849644105480296.4740763529887132394681136194056', '-8.184649944763013743333361097416811851476935800617569830052596874617614630479435342869900779234127425056544e+58'); - T('43701371988184830897740842', '7444696727806908941269732116534493096172849746185.16', '3.2534346104111212105848066810541857916878449567515264310528659180255182630472e+74'); - T('18985671206766137596695783', '-4918195942924959263752039745340080571253768938', '-9.3375251102824433332331539143355814981375199246602425748207454160988454e+70'); - T('-8164454926564686613685695436631269148628112649072225137', '3017566861500503598.7', '-2.46367886286161259704778334978048504960179943566519245177920238542851005219e+73'); - T('-167.140200050688164319586013710074703990054053511303270', '-124707.791051624249704808849761672566349962496678', '20843685.14424789642526902036712772659312890967899817539551993752122248668554302671208072486282553706'); - T('0.00013717932814418', '-236889624553106847157555062629.1419261258', '-3.2496359540522243673339058837639891572432570371217844e+25'); - T('0', '-7377966474', '0'); - T('-1165159893843574357027338982426', '-7258741844369034621359206819796872729971572863114', '8.457594876822935516127237999861301735400382433503942145536493041682252149634564e+78'); - T('127327741', '-0.000000000000001314349415125924728376790639', '-1.67353141912655226200255348893816499e-7'); - T('-19', '674693830910632347225468600360472778098653805584.98', '-1.281918278730201459728390340684898278387442230611462e+49'); - T('1115499473064514172110108362485045185533368299248344166641563', '26727699066738.5277545215239', '2.98147342251737349166633853134205297966348378257402631237265170730493167637686598378557e+73'); - T('9531022923010697243825538443.3659', '-10497868918011538716', '-1.000554293003294813441624977396834705527412812041844e+47'); - T('36948.619152016593259861704969912416', '-109424973578674628984651491823525807602358729239', '-4.043101674477927092300739573396847025094408695070482727807518216276085630888331424e+51'); - T('-0.000224994118800115645797961334226721592496197539765940949883662', '231860.641001', '-52.167280606449958627644387092820869098935873225250256147940687697225662'); - T('-81737025015671727638688.506795636777200442300', '5419138.800783060', '-4.42944283723002262118621171335050352165263579845818347438e+29'); - T('-1466856541.9549101', '-24128674849693158122765920.4', '3.539330455197531614891444994295155372575604e+34'); - T('3719432135548', '54707696881', '2.03481565841010488825788e+23'); - T('0.0000000000000000347350240379700980370747179429442891350492370249744117', '0.0005534400198558475169798243101266211771697229801', '1.922375239326751185420171365530525629522813111237423841789162415238003577693927327244648617996830717e-20'); - T('2248441073845808666637746763786280194954645599162114623.5', '-6334923145497633015473724024497.97', '-1.4243701399993365995217919270799399913979461349413953499228708640778427689308423183064295e+85'); - T('-2833.50779749', '0.000000000000000000027787099520949762309607915049358999802', '-7.873496316224179511483613883698024416527436609698e-17'); - T('0.000000000004441882942767312311877169439858885409', '-0.9432493370398481379786084999178021934162', '-4.1898031409738770478382967231410155261701150266906290976528356507851700442258e-12'); - T('-2107306488.021444213082463895093082025238625832167567', '-0.000000016561760020640192077800', '34.9007043445492445900173806825761285679208256730753889935834487955007126'); - T('-129070822817.42205', '336811489052744821.06', '-4.3472536026398913255504341077748373e+28'); - T('0.0055725231631263368659868273181674133608110946135789308', '-152412560828753089910310350.5653132', '-8.4932252556962839520515736693985586025569561774936573592091065011026694067884882312656e+23'); - T('68902.0767970349411722981874624462811895157551795177137623704', '0.00000000000298788286086686468161985148648212755894442142', '2.05871334339993176415426311877635990320333360195205545566288301397039058040718828895421507390094595733968e-7'); - T('88153860095637039945277243438872776.064214155', '106.735', '9.409102257307819458559166578448085753213897833925e+36'); - T('3.7075516820964288985011546648796', '23633186593.70572408884166096265287527701858061993092', '87621260708.792430109916115951342109977008394099657174865349158237730095429102117232'); - T('-35505760506401161908713691885731701346896104.7570686644891', '-5457648514664450630675291184021238402035211', '1.937779610897920137400487822865364585421914753043232864073023463191678738063333894770237751635257001e+86'); - T('-120.55403235772170', '6237.155894', '-751914.2934654306175666998'); - T('-50246944566472610231911381270921126440112308695', '425722751177060307857193841626947340', '-2.13912674790799614679030549405709134417922674778586880217918152980768287325891213e+82'); - T('8119749715097219059818517125264159.064450132566482', '560418609424712067.0940695322762258473926083185', '4.550458844211485491057203230529751310726950775388516102150563306194801442473073934282587480517e+51'); - T('0.00014717424858', '-7244528491321.3877', '-1066208037.026626286030354466'); - T('-42181198581127024501.50753334291048422600', '-0.008682426489650895544', '366235155926002047.202675730675546783334970920687585688944'); - T('-57.3', '-96900776925224476370583151961084756', '5.5524145178153624960344146073701565188e+36'); - T('1083976078583942678025084625.271006', '-0.0000000000000000534905554182086699326584150063088902383604755', '-57982482503.506901999157564033733434733806444040999020955818569250676306523353'); - T('1058587.736740719', '2.2', '2328893.0208295818'); - T('-337676088587247469427246609', '2694990217595978128', '-9.10033755458704844211026116003411819226167952e+44'); - T('-180266997707357275243150935948776784257767.114595713620465125', '0.00000000000000012929550822108208448723385741716775647229370346', '-2.33077130840613978574569769854573934386258812596377482210267408630672963476159438278046789605387340218325e+25'); - T('667863393175854.7645678', '16647944315358092755156.00', '1.11185525798577381655823461635163932295615768e+37'); - T('-2607482796153.37663635999672298', '67905.1', '-177061380021074655.829689213473629198'); - T('0.02649777513989417670980608', '-3.7', '-0.098041768017608453826282496'); - T('41727029296529241379347405093482273986363238008823.7495', '-0.002796170808176706621979157103112461500671267733114714664', '-1.16675901230889282855531874612261889002345278810932959186816789276573413038428661947418401753559128959112668e+47'); - T('-11232695034932926234846674550549966790.9183', '-535612384919640506677833697180021817295233383415483', '6.0163705767354292540256743939915265501958563028272108803751138896375435530577152378000080389e+87'); - T('3.481826810306751', '0.01981896398982153971994255430994006244', '0.06900620017226469113521762438686245737379444049353244'); - T('-500336401148192185730936', '-0.0000000015351207243732', '768076778560892.7643589222652324493152'); - T('0.000000000000000010152819846152021274527085743667507483', '2034271405274844529575.93770552252121', '20653.59109593400315620700194269765880413700716562682807038424236270121443'); - T('-8', '14804.920611063196753', '-118439.364888505574024'); - T('-7644880', '32.933', '-251768833.04'); - T('0.0000000000000400490024778789822215877572796299412810612705023875', '0.00000000000023561893047293924977558189853184387736389392033215150171', '9.436303130345939646688036612188083884147595770701765354726302304762424603125782629215278913888534265332625e-27'); - T('-669622098209324787.5786201166', '-442008.19657257', '2.95978456014644004507422179531566173761662e+23'); - T('3750095561598843110.3554570', '-0.000000000921072821137', '-3454111098.455188785930556597852894609'); - T('509.01003417', '-0.0000000000695541947', '-3.5403783020913832899e-8'); - T('0.0000000000000000635110973210625767420869099697944141102671291', '-302.6', '-1.921845804935353572215549895685978970976683326566e-14'); - T('-10277403.8756777588787330367830', '3.73924958', '-38429778.12561843210264377872295730114'); - T('-566623967.574094904804042946014964033941069', '-0.00000000000001662953909014460365351667', '0.00000942269541818623958668998623752446360099484415277625603154138912023'); - T('0.0000000000000000060428627571787342505274', '18.65854757486578220960', '1.1275104224320402610478848029208041233734304e-16'); - T('6026260424.00', '18673139236042341642133200165212521277908.5537452', '1.125291999700035578262744750920904785263182229257757399648e+50'); - T('1351407130504734.056748656589882', '-16213.40426049972577134801362523633', '-21910910127395164076.55243444398575049081525274237838315413681306'); - T('-1749812757762436212668429.46101826944561361814636104616270309', '-259646', '4.5433188330198551287450703583554958847579349723006019196120650614e+29'); - T('70245313181709005413989461536786.3825442617', '-509184726219286329641748', '-3.57678405606165250356068075267063781878365698344246156333141574516e+55'); - T('-16.20', '-83495.2179048376073493099472538', '1352622.53005836923905882114551156'); - T('17522790821382422258618581410703033443568', '5481690529703238.18676804112985115150792', '9.605451649954285042649291504450317447918361312248424196122189225108309342505856e+55'); - T('3', '-0.0000000000000000000298256458973606523936524717292889013', '-8.94769376920819571809574151878667039e-20'); - T('-57135112812568.466051', '2713703246.301287433494800761485396936819', '-1.55047741117257327421574162146466373193666197915868993431769e+23'); - T('0.000000000000000018433', '224.613695971469169', '4.140304257842091192177e-15'); - T('351655210258904818533038059328', '-317039471793459879795242832647363526701869253095475', '-1.114885821139012575684668438594527497497409491712701452561241865985548506983408e+80'); - T('-1317999447639091934290806166798244489675877673.24510838', '51973652129741187036804.3069426597647651181729', '-6.8501244798785198639385417890806274968448700953804306642353363730416792643087698202422857568078902e+67'); - T('416970579045160473905951389152873165527755895', '900715.23677692450', '3.755717538336730295514426258945023234083011232063852048449275e+50'); - T('337048915259856.8484', '-0.0000000007165482473721426233042063689577689', '-241511.80950813224169860503564044515006631691904953476'); - T('-124735.945324536963828', '43656784749.045127925982651536524807752332', '-5445570315501972.252440976832268388353995138128083224266646896'); - T('-229.309150279271759668506974147516151893493701324327298', '-56277750392608320423429992502109.4808173149501499937169775', '1.2905003122157966621553106534643794501210439187980937861478914275127685562045563793515134308625165671789301795e+34'); - T('-773.26721', '506120106.96085084420866486187778058202', '-391366083034.5187115273789355692667516507815642'); - T('-16179029077993579729752892854', '-0.03205622515938674669127103', '5.1863859898442754973726890489016131925911697266421962e+26'); - T('-379694977175773597575402239067729598591749627164211967089', '427.4134', '-1.622867211576197909699344273675511380147349200949881951741975926e+59'); - T('-0.000000057593691704585518467986423410653803725013114132854316233', '24689.19870977557359290982947617857947691050', '-0.0014219420989240649383441724944840134755882327254494635758934109877771747341652064425031912888381465'); - T('-104', '15074917718070702275412', '-1.567791442679353036642848e+24'); - T('-2', '-971091107444027282033715.48309206', '1.94218221488805456406743096618412e+24'); - T('1.0', '0.00000000000563083386598228603', '5.63083386598228603e-12'); - T('219100199509205287520379236835.595422414343', '249215953689501338499522.46564075955864255', '5.460326517424660882913977937259236613421658567164008732143598687724455221273009465e+52'); - T('-3956981388.58456771827964370777', '-3850656424026801387755000322904.790283281327', '1.523697580370765854419130687951064298276236466076285768791284492428581079e+40'); - T('734.960286303554479116990306863761301115192463389214', '-130000607393220114986132790422441608', '-9.5545283629357036833302332771199553820796316440028291953441171730648555190680692016112e+37'); - T('-0.0000002666120264878701311448', '322570889825538918018562439468.0160867345870', '-8.60012786223824197974573415201224841889283841235410512800651976e+22'); - T('0.0000000004031032595796909999049', '-2712762676362394173603186', '-1093523477307807.4647872649597513148096163370114'); - T('0.0000054604495949732794611395765459328765263001334150', '-298907.681810114352964823611311466161', '-1.632170330074440811222971888249135550087671561067062039655656486575779653557869815'); - T('670489501929686.291032', '627223395167741302962881364608526379428084315920', '4.2054670182466566942266803112300612071880467870075440896463575082944e+62'); - T('53314.110410802505016043147844064319142110836740', '-290216592240562577134439451.5', '-1.547263944176020278887164669780998856796671698801721678198701042353164811e+31'); - T('0.00000000000587199496778346240428737868027766', '-551005.316277', '-0.00000323550044440047912772450593052565891047747182'); - T('-89694219111352199451730456185908593505562.881', '6.32', '-5.6686746478374590053493648309494231095515740792e+41'); - T('12678032520049858276397.8', '-0.0000000000000074933793548296330814995251238051875041756343', '-95001307.14560031424594545397066655517994845175009207951656553412454'); - T('-523228.1027985605', '2361103.2', '-1235395547847.6101519436'); - T('-422058160.089943171946211', '9455722182962.552320564582039151365712747392896268147', '-3.990864706862835827499020129041439986893906907628633530927174587244916641017e+21'); - T('-265.20593471797540408456443', '-1', '265.20593471797540408456443'); - T('-117096397.7', '0.0000000000020', '-0.0002341927954'); - T('-0.00000084780432839108612959331480507149065703369783040', '-0.000010825079810960431632673973072527105', '9.177549518911214340736347681158868989278870466087868848313439029850170283692992e-12'); - T('621.284586089902789096175355124878176656898069', '0.00000000000000000001841815997332304201462126563776625573631078', '1.144291889556362115393585911981542504972877752024640554149220155131163404208000456588382e-17'); - T('62838970696961.93575529768157435967750130012543934643251895', '7799025017418', '4.900827045344027526036434980262455014867740735222443957786401853650711e+26'); - T('-247353051265858.992388279974222435772900701328741022620334222', '13.03830659799478334978416300680018326059', '-3225064920353791.19824546858361898880804876150878659765687851458354866130547449520822131539552091098'); - T('-2139441231754725391266252450690990152166777909', '26220446827901878.81347', '-5.609710505864567774726728960484243595395230887890837315312192763423e+61'); - T('14286913921.940840650', '-1242844090.352406582', '-17756406537257697634.0436449596731583'); - T('2437674767843424972272.34179653188260607311276734', '403927988104479.6110322848268399591134551070', '9.8464506462804905964641906770409128324751565746334602350400894172348609324599790162580538e+35'); - T('-282975256.593232221485634', '0.0412485784400225687488894518785', '-11672327.068171452858593608252189019369153357222063469'); - T('-256178508.2486827293794161556160000481333795995', '0.00000060622407729698677', '-155.301579786376201792071982290374904153826835212494097939398615'); - T('-92215568824012627934.74189852734', '802821222.0162469626002', '-7.4032615652217143799840729492067368601093636437189468e+28'); - T('0.00000000000631216424157187020311390', '-28896.442960029403', '-1.823990939609188046299993634327261580017e-7'); - T('-5868684173183824149727150676541321228.27946209763645', '1767678018.67', '-1.03739440114535694186833871290131127571890503338033620259725215e+46'); - T('-1464504298805396118871695503432730.5230', '2208833322892572033925', '-3.234845896720779321449912432206390896261116508330538992775e+54'); - T('195.36', '-13214599838.47575096481496546334113027', '-2581604224444.6227084862516529183232095472'); - T('-178.8581172026568', '1542628302874005920400457301.7905298303732', '-2.7591159379557450261955452194656628921038300499237551776e+29'); - T('351875781344.0280054729542235343559317', '0.0000178856834451374927', '6293538.83712970189834558679045935052951438284631044859'); - T('-307.61455274208', '0.0000002438400533036931515021270613358401352036899', '-0.000075008748937620515500399556886599434410402744867379000992'); - T('8320.987246030626877296', '0.00000000723034', '0.00006016356692446508273598836064'); - T('0.3178832760474045258804752', '57.66675963865299188481', '18.331298472973254687278485883883193525626461712'); - T('0.000000000000000263835146673878760137331888121481766389116183835336431047', '-2.082954760', '-5.4955667461965393109095371006242790355341756731284907525076043372e-16'); - T('0.000000000233346878395806113798662159173733434871136164480744154169890', '10289471873381.87490244310848109593247868', '2401.0161419951076855155738296198869665643993521903141787021173990086767696510557356775276055229452'); - T('-0.0000000000301270068082410889159', '-18488503331.384508718698847', '0.5570032657388091474587525501237955790818099673'); - T('-538244397964164173070105649994388625', '-2280.52363653', '1.22747907178713620859177763155650252117906647125e+39'); - T('11816719921.6984115', '24346834400764849090360336454820099097991.85306443422359', '2.87699723093810199016709496254407379606350048843381923576632239138827285e+50'); - T('-0.00000000000000000614056701921479118164625780', '-0.0000000000000000004526129846', '2.77930036570313218519067348427902988e-36'); - T('0.0000000000000000000211718849571685401', '-21818432978682095763187832118707.42059881629', '-461937352970.349445849940275487640330004420702796016087398229'); - T('354307691910025309530301150.530797676735046789927', '-0.0000000267343273366', '-9472177813397840300.1738065546659359293415312312254736184282'); - T('-0.00000000000000000001564140879', '0.0000000000000000012127764653067414424836974110', '-1.896953246475399564472178411611564269e-38'); - T('-2192995405.921', '-1492963957482', '3.274063099963661175050922e+21'); - T('-69077326289723825817911969975.2', '-160.497210320954020046818', '1.10867181659309712810734480548942940388027429142989136e+31'); - T('-34636483655.3', '-57826095450336990.7625812016394354487909856618', '2.00289260991541487342513087342333948596839502091235357754e+27'); - T('0.00000000000000000918981946289', '1.09999674198752514', '1.01087714686325481931551720546e-17'); - T('213150740', '-13337847744665673.1379595', '-2.84297211678281928195418951503e+24'); - T('-7062099495908.198413696', '-1.058736021405', '7476899123064.10206563783530116288'); - T('0.000095694936784775916676475094824420202134897751844986130', '-336195659475425245294044969885823799340891152365601.95879727', '-3.21722223808168692686768515627014434144106705991738803812388959163318091496999877734952100401367322242946318651e+46'); - T('26868896167028748101420733486377', '480507267329881259405862882', '1.2910699873389304567069920812073966334143151295977876958514e+58'); - T('-17.084476787578052926829789715003022556', '-42587983371473135737559540519744259126585114576504024.779', '7.27593413339692893938094555667816327719803206600514992485982114723845688369293247684119915124e+53'); - T('-76372412484569384.3511', '9012097234036431278745.3269231299', '-6.8827560730887716103930962801811543430595527769250789e+38'); - T('60654377820540327528', '-0.000000000000015117053045659', '-916915.446964550856786185798600952'); - T('-1331839674', '0.00000000618492062771114573665144', '-8.23732267252668770406834370123056'); - T('57436192370710.8629215108579', '105737032624.1773726358981981702798798174015047365867', '6.07313254651038202363973449861725599835500772846363988048609447329832343472993e+24'); - T('-965563477.0996002946011879837917175', '-4271362438679787505570708994903.70810816', '4.1242715682442838707409662264403439596770359705507151544781327654021648e+39'); - T('-0.0000000316616', '-2.4', '7.598784e-8'); - T('-2.385', '27.5499221426824606177', '-65.7065643102976685732145'); - T('-2266803.57818655', '-765116.77815066069', '1734369450442.4824101199545717195'); - T('-32731559035569126148642.446165008', '53704467616503577993.2664889330721452187634866311652474', '-1.7578309522633972201948025668355694620574985124468833198585070981942000057664555429792e+42'); - T('0.000000000000000022575861041290712552639790861752973874588224619267844', '31.3944076810173444579596934007549380765', '7.08755785280277370389292313902506994649964414578494551292873810891605957242649610987662066e-16'); - T('-11.858586370905899290715', '-991047772227373783020319210519807971818.824767583950836915', '1.1752425604652188758145553608664648912870842306418133290829487635928729138744225e+40'); - T('-2011971696758986575760307857385008882209510.6', '-5525155372891673776761633609.52070459365483366973020593', '1.1116456230453892069924547730202138929609342602851169377795116783945568725725156231784447542517858e+70'); - T('101703650999596029193296586451725488', '25620023337044890752720058833900.03506', '2.60564991207231919895254185864449131548456396842795048651050944069560928e+66'); - T('0.89310', '-4483944764830427741251990095', '-4.0046110694700550157121523538445e+27'); - T('83.0660898', '380025540261.5474990692628313817425000', '31567235653659.2200446528027713580805854765'); - T('12249047873.6982', '-142475289409910528840622723.707048987614004620751135579865', '-1.745186640801000235481534461055817862532388247975966963088442739006743e+36'); - T('-0.000498899320558508419779744140203069146893', '-0.000059386343271843835168818993', '2.9627806308777237249170821580126645410922765507304403542845338749e-8'); - T('-2297433.28538549', '-285796548778125338857408803711103260149820899037579434872', '6.5659850401116294498139439137406267368280581599271391787641901086880728e+62'); - T('34167188438641414252422741077347811417020.59175671639136', '-1876839.0519778124207491962458916326915672158166', '-6.4126313557927024892196883907714297942957465376354294400472573526515361182444034644427066219867584576e+46'); - T('12880636073104135025.684594372389347', '0.00000000000002717486381885835955193357797034462478107970045332718', '350029.53118687937886399193088901600225479341922014167752066254086091217423503253755146'); - T('1602471.60609897', '4948980398.148665647375032297236242244605323466522685367809', '7930600567173612.25671087112877473741757520842649668372026733910210605673'); - T('370646280676040583641049478094.841', '1176.901804728', '4.36214276643352994796521564113760876046208248e+32'); - T('5547404728207', '-411636889958330609055.5065082479', '-2.2835164296592677798830108543636613032785153e+33'); - T('-0.0000000000000000717041779275895653254585995816746449', '0.00321217261726873009981380480107282271306898444464862589', '-2.30326196882768081444918769519152717431393087666881910579487955526028795479141279838696461e-19'); - T('0', '-399327.602', '0'); - T('157.8', '584.2802770', '92199.4277106'); - T('-10542363099197242246550684296314627705', '-4850153229755188101.33556814417023579013954', '5.11320764348234189624759367689059634200461502178300975633252267426243050999557e+55'); - T('-2562650836927093177981.565429254128045484667799300595712', '-0.000000000000000000317395222174952988716141595565429848789500451120', '813.37313174330395999646102020198262859585476827525658527707087140151929076326008633676971110873759744'); - T('-0.0021383531474526630012273967098296654028460337299367', '-1407391260514289948513', '3009499531618102701.7588489539730050863932112182078160238774067897491271'); - T('85399454218074127051769295076.287333823347313330158', '-0.4092038950326248225015994759', '-3.49457892996962542239070012424224836131258038173055372705839875319563364641922e+28'); - T('33.127135132152', '204.48590', '6774.0320419197206568'); - T('-20073920159741041234.22437514622641538676580', '71857.713649597096', '-1.4424660066635461364336974246302806972842556483481805121168e+24'); - T('-0.000007522084816187962395438426656921829236', '256085.25', '-1.926294970674698397026448350044490870358369'); - T('5220.8153048375064912183804758', '-0.0000848053870645192181', '-0.44275326271911063141541592413054755924692197198'); - T('218437.2', '-0.00000000000001820193740822812', '-3.975980242028607494064e-9'); - T('0.157577570127431677', '101.0319296822', '15.9203659846066164839488230494'); - T('-14.33490', '290.67243363958433117', '-4166.760268980077428888833'); - T('0.00000778430585574695128213792486514057213166437662675439', '-0.0000000000000658092384657839808153501892941795', '-5.12279240351449754074675940343526036050666862079292855468757563270534826950003073005e-19'); - T('45215297824632433459231894077144.81', '77667936.103345159', '3.51177886233727320835487431074370227708584865547479e+39'); - T('14342668379445830286426805277231689892104589', '-0.00000000153230966', '-2.197740930800139119461236060924109647979621945502974e+34'); - T('1087327540724260701412332282353.246979912226498912687', '-31181.1155292590461395304941342272532923707', '-3.39040856654682932656823122420611037707430356255272533055260947181604908300590629044625370709e+34'); - T('29098578027968222529887', '-0.0038633633262596785860098746949622820633214200572090', '-112418379199558110812.573170785518748243461139468530838004471322252305383'); - T('45167443.85086931970589523202133', '-0.13322343827726157227081356406399769062787658346986566850596', '-6017362.1680079665574862292748307786959075342072628967876653391403467312455019622919521268'); - T('-1277104346263109522212350488222850419104.598041084894694', '-0.000000000000872545304590848146374055', '1.11433140080444089775987766493651597528395567239169697675262925481314760876417e+27'); - T('347.048067026229351381168979388696389522228278049448558', '-580372453576496014579764354612', '-2.01417138168992971509920131695177453316685553118682774156732799236522441451364049496e+32'); - T('85.9498795419121819013954981', '0.086819059343222766234152013147244', '7.4620876924921221071832372576722493425329853011417540222364'); - T('0.000000000955538852', '2796816770377393398221585073517643123820923752.2574913', '2.6724670860207620944890322427693843122815393358116556452019876e+36'); - T('13.3499409389365943266698006822510800901', '-142605023.688711727210398330', '-1903768643.839955511708245141067882976861272713746574494353289533'); - T('0.000000000000000000780', '-722296330274145516124092200004225017552775396318.66', '-5.633911376138335025767919160032955136911648091285548e+29'); - T('0.00000000032533771679445565923566197211480872204653266', '-33902055423889399559039392315', '-11029617306247268880.3792855595203258365194772546962226666267013992005079'); - T('0.0000000000000000477109133480553184558657389005693925237508746393136844750692', '9544079599812049753877281093753.806913927594670', '455356754773575.186639624987152382218896113143126632346387917730524427522867133635682709085290515537801164'); - T('-0.000000000005212381313104274295521085956757682135609555632962511189216', '-0.20258211424784772185707', '1.05593522667463662312577979622174586506157166623770153687938400565136484167735712e-12'); - T('5.939336816620258503935', '-181.5', '-1077.9896322165769184642025'); - T('0.00000000000000028', '0.0000000807854522591970390113967313771890503193275103759', '2.2619926632575170923191084785612934089411702905252e-23'); - T('-1420735136825498697880142035376838692614.60263288147781831', '4794758649393115914238372958725703', '-6.81208208579077187760278480672518379981721734276502252436200522274670249079192835816102193e+72'); - T('-14302450490637670545279313.292191928068', '-0.00000000000000758231718292500972333975206250950391475327599176587054817182', '108445716113.09624528335189894213613395592525495466249866985446295108569636686802306848015834464376'); - T('-0.000000000008450771622', '-69748785787966613339823993495254469.001291622669751588', '5.89431059605905165095631246704409058304793926203868597659835736e+23'); - T('-1179004888.823228', '49931113655424934777966552716734550837488773547523258643790', '-5.886902710413423665263191856093556409577570847449923030469713801232995412e+67'); - T('-739484608100691619531927074065663059218837785449156', '27.88287', '-2.061895319467253133749818345565325454400115552276670835772e+52'); - T('366.123540796397283114420', '0.000183575228961067940921266500079', '0.06721121282973553030230705091816031104204619829603918'); - T('612.24659918919924258642657076118376830990940740', '412296990330.330273291603849583', '252427430185686.8746606867196534961374184185494504035865409741651638262671142'); - T('-1253.044774927718837481270804718997', '0', '0'); - T('89.955', '3.072147874', '276.35506200567'); - T('137440172231079014714878951462.97980416140395', '238.92817663651290090629461162158684942088308705117640', '3.283832974778000222556804923252233207004641698923980593985160071015425606241073037967932310678e+31'); - T('0.00000000000013007478162945817837283572658276879385007', '-9605773255988262156131.54662615327683681096194', '-1249468858.6547626741062732720588036874502171676524751175204550553355667396106328363358'); - T('-959.0561817087475466288631232777115', '6.5232691288079290675200146125939736359903603475043077091979', '-6256.18158293308052505705738568867991673577610410424533837553637598105441295850976942461260585'); - T('1232651308.483980691765841289013994011162', '0', '0'); - T('0.244059666606121846715993202008963667291853198185038924811401', '-91.8912', '-22.4269356360364638409486745244460821438491406050610488476294115712'); - T('0.000000000000009298467342175115268976111043399158', '298.30', '2.7737328081708368847355739242459688314e-12'); - T('222487581688568714558163241.2498688', '622765319764779384998.16290716', '1.38557549953973970068746587697772147617465686740636673376580608e+47'); - T('-0.0000000000000001094619824042797469992', '819334825', '-8.968601419736362575863380714e-8'); - T('-0.000000000003213357903869884', '502881.861925654510', '-0.00000161593940573160560373542857777684'); - T('-0.0000000000000225850887358266958', '-9657.24', '2.18109622343174999747592e-10'); - T('0.0040522596025230943461061874749446981', '-0.0000000000000035111456723673138306010083', '-1.422807376670785399057088730766337512497448065110252859909423e-17'); - T('50.4', '-0.000000000000000012807615227380978390330730165878274412863', '-6.455038074600013108726688003602650304082952e-16'); - T('34509655900.4271549037478532640245880287700031396795737736', '64.71924', '2233438702537.161140732834214879190678535092737997675858151324064'); - T('-0.00000110516283770184738962025591', '-12341997806576.504800', '13639917.318826066245556761603362081169343368'); - T('1443495892579134888970475033389', '-263878898.64', '-3.8090810632514586354552763528830654669096e+38'); - T('-0.00000000000000000069532890943744308434473313878', '-57497447967704543918096254112146', '39979637790820.12873785593753087723013293250902050457270162188'); - T('-0.0000000000000000007659553263900774084490506', '-46179282173901700884047955896435818818778979617487', '3.53712671499703607070284553536887181481970539221145787819001524983163078422e+31'); - T('-1', '-80.5351111304083830696255443', '80.5351111304083830696255443'); - T('0.00000444632', '7', '0.00003112424'); - T('1748652238406104265.08687786280471813580897620802429129', '0.000000000000000000175013', '0.30603687420016752574564975540304213510233635309495529153677'); - T('605.35473313', '-8105969267.633939755450293', '-4906986862768.52514719110958199530709'); - T('3531.27893', '303826595361824791936490465665622559869413', '1.07289645457484761411696267955090137099952167836809e+45'); - T('0.0000000000000000000139500802384964877256638688566332365116099', '-669823.809722799400662636451451747822858695293904', '-9.3440958912884554771068695881482229864014701239462146074951636707559395049094067886960496e-15'); - T('-14328.20453041484587995049563830419841249274151406721890138', '0.0000000001737045483', '-0.000002488874295905724415190916871212750963235628741729704355101435146654'); - T('435835890288235470264209317728368193', '2502287905711035099019387753673794537858483', '1.090586877143053196441416655157728683500541851046587666747641275079364352431219e+78'); - T('1481352883141719129158247138.8038050', '-606388568.443511765388700681359582935123762319163277946633', '-8.98275454167975836154301999007742562427000217610359536587169076287724303365227616247338565e+35'); - T('-2254195545465844946364682.85626170910', '-68792607248889229037631606.018565330920642673825', '1.550719888214274947292592996004771619292172071432516539437011341424210097883343075e+50'); - T('-26784210511779136785823800676221849936631.56183', '-0.00000000000005019147414519109521634075017431467167600186829521963593473', '1.3443390094013180964383583232553726446281441447994273009124279348757959259512742782394910442001518393559e+27'); - T('-8770530121852166665068897500281', '11987190432239629.9682', '-1.051340147623357682201798135592086804701933955210642e+47'); - T('-392092775092295510505846799423331218731967579086912', '-0.000000001347740911042761337967635461776381177269782335301', '5.28439473916174872080749764195178381030762509320641795527675022371094325058097973324110528604680512e+41'); - T('4015679.55', '4.713361052', '18927347.5882828866'); - T('-908765.598832994503098008148905108990', '-393227867096205311879272472100531195041.383622646628607', '3.5735195811950419553683668422021541455075148867700124530307768773407398811212098138687693e+44'); - T('-2369253560877872972694', '-11.60552475086080768', '2.749643084183325817302731177345942548992e+22'); - T('174098.34305585608863845094930842', '1.38', '240255.7134170814023210623100456196'); - T('116951064421932980', '4525883193151806788', '5.2930685688844070019747986244506824e+35'); - T('600225026818135855', '-127962986020756918725', '-7.6806586716037565057838021298243384875e+37'); - T('-355276.30', '457734732040.627839182124360081830', '-162622301980885708.381620168789740259629'); - T('-0.000000000023259793972698088534519974595546178', '-2551236.5', '0.000059341235365627366949498869167230146749097'); - T('-138631', '2.3', '-318851.3'); - T('795255541856527997999067123124137485004290563483625370482792', '-64991504618917159513144692611330263343972554177.85101068', '-5.168485422178800786099741762775612989901343114104453511664262171013611241941946296162984705040765106162199674821856e+106'); - T('96045012606945538626605174.6240481976236369294325652245732', '-0.000000000000000000038130457744062248428043049303932284765937539238468630', '-3662240.294737062792567245617774026857299030801472930205579945585215779769210281070679229934569639844413338716'); - T('421989371626234493675627719459467707.14836401276576921755856', '3', '1.26596811487870348102688315837840312144509203829730765267568e+36'); - T('0.00003674095297032643311401261648', '-25144265134553986531', '-923824262782066.66182891576601261318521398863088'); - T('-383466.04881547', '53724954971092', '-20601696205553692514.69239324'); - T('-0.000000000000000014783370871610989705993827634590792', '-5.75544555955339866871', '8.508488623824452763835260497721954711915248063842451832e-17'); - T('0.000000221838708829447458147931597976839', '29539052824125603227.9202610', '6552905338548.867330870922184373002548907167329945216834979'); - T('1417021083070041108879006664525950600252.582747034547', '20386.077908379675293435494662791207239424304698951', '2.8887502197282405761889040724952549395790613139212743588512735905545957366555623236526443052831660197e+43'); - T('442.735', '0.00000000000000878277865798641273232492264611347738525943901036', '3.8884435091436144410458746277270504101628377302517346e-12'); - T('0.00000000000892', '16797743856811194', '149835.87520275585048'); - T('-28.32380770960', '3481300309.0', '-98603680531.4870622664'); - T('-0.0000000000002514438408283789730670345516227699', '0.001175682622527705754776427124', '-2.956181542035476048733420921784296951833346097731013663707676e-16'); - T('-0.0000000000000125727922878', '-13.313', '1.673815837274814e-13'); - T('-0.00000000000000311161', '995915309552512177', '-3098.90003635669241507497'); - T('0.0000132726799331352407876197984124', '-0.00000000000000000145179351917753148242751859389117949850796347504360670810576', '-1.9269190709043414470286356436843451767202221286209940752290325354825996720087060259295424e-23'); - T('-1305365.7803110685680577657011785720', '-1.13', '1475063.33175150748190527524233178636'); - T('8499682132744325149884.2', '12753066384420249097484638996.8248053537637250207', '1.0839701048535906248094606671098895649828222408103379536302544124760294e+50'); - T('-27597428686882882379490857905609.4308', '0.001777076303502550583927', '-4.90427365570610811144061901744727200974205360973380987516e+28'); - T('3851.5801', '2.4681503', '9506.27857928903'); - T('-254136480693014397618955753399722664599889.09', '-23582875375875972784153503.3854654728889123761140614', '5.993268952647068812676163151455910299034928531722912670375198720068520525866107064371629450126e+66'); - T('-36756.5', '278541826958821478.87226349825573265453570107573513272911903', '-1.0238222662611921688168353273636837316441496590258406157863626195e+22'); - T('434677757893257627333239169971.36582235872933', '-0.000000000000068725189442692668129', '-29873311257739028.68226613696221684789246137143439950127182852357'); - T('13480614688014170819.34130485033', '-74790845792983147611.766920195511401471625734274890', '-1.0082265743258914745957730201044196850059871310317319787175533254133776825272137e+39'); - T('43288920440971609207698898895824622861', '-8750.436', '-3.78796927827813844188979922058384029569317396e+41'); - T('-0.00000000000016299662731892671518950597', '0.00000000189502990635948720606833476337904040553896306692718740072', '-3.088834834050979272599008422371925718929124189963816260765249621332298025452222984e-22'); - T('0.00000000000000014', '2825.871550945769438271943129439745088808390801', '3.9562201713240772135807203812156431243317471214e-13'); - T('-0.00000000000508', '0.000000000000002145872435', '-1.09010319698e-26'); - T('6668343.896256', '-30256115.746220409', '-201758184760723.915056805888704'); - T('1910671461073245653125406909', '-41009469551.2913732728', '-7.83556231054046679894479520055900512189070617752e+37'); - T('8289.8635', '-66806493292579558025822119188753113864024114483099524877158', '-5.53816710309150098924394843355494049132717469773268118146494087933e+62'); - T('-0.0000000000000005326', '2424634.43200073035390412054', '-1.291360298483588986489334599604e-9'); - T('424284.1840077187212673385', '970.3396784215570868735428784067', '411699778.66940253812593312501264900866190088462962956795'); - T('-35760922777.0406357', '-7761344319.06347958972953830', '277552834840052130228.57982929972823169949731'); - T('-0.0000561650355483525921131526685343539', '-111333300972076302345', '6253038806812103.7204293271893852389242141697156298955'); - T('13512458606466223813008490671514544370375', '764.975563481753223231576796031842139048653', '1.0336700636505365489288540708376614928455337024474216176633151377504345359376854875e+43'); - T('0', '-1183974879.82128974148434577518', '0'); - T('11143820497441188022611097072500689220.103841042188', '14333893036294350850719062076858.50886743820472767247', '1.5973433102598649386055415009433149402160776376532075449909743742363111723311690413638261800831616436e+68'); - T('-23955066895875385312189828216196343.2', '-0.000006008550114741720774296140761236324588', '1.439352199458576433136766578653842412823876234519218069316485509338466016e+29'); - T('-2668354.95894041993791850076178801129928639334916993835', '2120902450621765046861513300898', '-5.6593205715454758964489377686065817529188126202588690397558408061055411762596596383e+36'); - T('-357473707639070742000106223385951624969553570180519146672', '-2880014494.9', '1.0295294595461685945268041406912380369425230533019395520223390959728e+66'); - T('0.1576', '-17946110296096494652', '-2828306982664807557.1552'); - T('-0.0000018223152394757689929568141403865013237549366458944677798', '-5052597332068.33289300934043046685446478', '9207425.117162735564750314224408158434255360168962984445546645230422805472786347453701483895444'); - T('-0.0000000000018113502438791982724283161334170828780578698749690297210', '467569918734591161565.975984', '-846932886.330478617799083574720382758183324318393500300146312171222449646868220464'); - T('-43456291089.3917040495022986696', '0.00000000000000000160606215298685200471957781912132661', '-6.9793504427851792555934505781676792541584728405006755687190078056e-8'); - T('-850368', '-16365313992958404661804115212963911454627853490846168779', '1.3916539329564052655449041845417695455848978517303874852260672e+61'); - T('-573001586626626136559291430.708491137026124496587', '0.00000000000000659091710510594985802988231762972361602034', '-3776605958550.27888864268809093797447339962539247097589384819969254713146626305667085257958'); - T('944831849965628473424387135285.11628879031122854553239231', '-9167656497046734408050.66645416827001933707275561667810469', '-8.6618938479540792582928343057162520481532362870957700270661322678213334143541246056098522215623568551067323309339e+51'); - T('-0.00000026160509100', '24622004042950607868289417294478649240.52229821030', '-6.4412416082584616798891690256590608321239167108346686373e+30'); - T('-0.000004846613578004694945875951019296774584875442', '1', '-0.000004846613578004694945875951019296774584875442'); - T('0.01331120519980531178226823546536111232129742873981595748', '-566030091005684186432778.7962173603', '-7.534542690641137182401329425400191730488017551596028318788787538488664119896612542640044e+21'); - T('29160798123715526401', '81.21430510259265355460162080077758', '2.36827395585454415364839027902703656652482945981888958e+21'); - T('-0.000000000000000016948492474809672735628387832748072035504038167841614', '1562956864069228066615011300882107599329713429.314843972', '-2.6489762649129436461814187882951473845942013738702479876336587925692515948461245980490938479637262418650808e+28'); - T('12.90597368208644830150566402904732366667482473', '604431199603296.47474454963005587100955', '7800773154712085.1940792711683581731610862958146209226570359806010190800492344061715'); - T('-0.0000000207428179', '-197640319459879.188', '4099617.1562541003526838652'); - T('-1', '60210209731827764276966194255', '-6.0210209731827764276966194255e+28'); - T('4583913614531584761660.71', '-0.00004564661231066039596029736975879852374375394905', '-209240127628081229.8988189542842449222791835905813694075712860987268255'); - T('-79843798348570415955954652124494715927', '56861144183144013650375039269786414203977063811583167481', '-4.540009730027938310459807409573958130149645615816392783432439536138537446203669899681959169887e+93'); - T('-0.00000000000000000011314', '-3.526', '3.9893164e-19'); - T('132407155319180608772091166836747467896048163329803.57610', '-723665204004.7159777491682569458925', '-9.581845106573894955821546492296266642173629363834000697071816757006018496183651070616925e+61'); - T('-322521422170779513210597092315316261621', '41262058870589483714064.04798992976852435145735153', '-1.330789790863694859369204982948722773695665386328207265159910537452461498636765724463013e+61'); - T('45.38814', '269533555865235093537499029287212271314833820844669369384370', '1.22336267683091115583931011911520907801556615372327715913294993718e+61'); - T('1001606998247.1329297768570186489508291933755', '5.20052838227', '5208885622264.472940958083743279523476777800178015652385'); - T('-208725364670066089848651768887053413406981733447545233.37431', '46428363895460548499939303066133160314818660457470.1898', '-9.690777185114533186791052743948505833183422796131294760780293146823565795246823794373752025269078880430890144038e+102'); - T('-0.0000000000030479119204492183257505452809182072468706814247166', '0.1831953518167469517279635239571573090896007407998', '-5.5836329657315139902372580139052711078742199613978215448274609146206088053118483963543265377233668e-13'); - T('28.71', '0.0000000000061362523', '1.76171803533e-10'); - T('-76698670010634912042.111088324461002234771829964608794', '-204.3415360766065', '1.5672724045005890926079579860206010656480530112197034797251387577561e+22'); - T('-1524.1774171342348399240363', '-287256761224.40001067164619002', '437830268377351.631000336578138459542103286567115177726'); - T('-46386057531584301786849973746261104490857090', '-4.80529036', '2.228984750949274409036809536091615714528682827146524e+44'); - T('-1333480998557541026668203845446224930066438742734237449871', '0.000000363031301806973352170691602189509034079482081910252260722435', '-4.84095342841206873734133792646560873902386616947445713637359576061752353209536356871478780155826152779923290557555885e+50'); - T('0.0000000000000011328263767573913302830489935960640008976331311323634607', '86336988667731117573.758284472483734537177637', '97804.8180526097967631959070730320562045880918766169966194605514255032840380206192312923918439683659'); - T('0.00000000023383059155254587815392387016693739292933749', '-739769226366265.5531389494840049176644417', '-172980.675813593093567219554957028220425661619804809222561967458157553863975311729333'); - T('-6750356340240.984376193207629621761115', '6785896266076286.1666119258989601680226719364211', '-4.58072178839256802270353210343421354282744424281215396734873712247233250402922455265e+28'); - T('0.038352390', '4364267397803.554078375378060505', '167380085304.84704939994306577393135695'); - T('-3677.765452', '-153097604617851523106898348175.2705689839321002774', '5.630570810474899941481304477948773393614882215140213363848e+32'); - T('3564276717.02076515', '-3724708.5652442', '-13275892016787721.61135498059963'); - T('163961034566390719', '13906850976432268007907879396507766911641292643', '2.280181673656455617109020414398350949017013169011794072158180317e+63'); - T('-0.000000000000000000097053790888310241217758521607840846169737665', '-174167724848769605456951958316132823954.290613019997555', '16903637946965240719.160592454311893126986143375067836000624105979381554916207439134564513291409075'); - T('18174121469196263476021234179885', '598847655451717090028982590433609440', '1.08835300317228983812760587141239606682288560521096139829987941144e+67'); - T('2862482160141173353.377689153266444043', '-2.5521116576031457307341661427802694156525', '-7305374090577323175.0048432033414644577500405016939717138581879110681995830575'); - T('-0.00000000000000828251723257466281232072431185606927126573858797644180340', '59246603229200010807575028.948615845949794986267082749', '-490711012217.3627547204685981714157886628710287556950766147835640216213833020293343764393555822441764905895466'); - T('-0.0219725', '-42388.442458578279694893', '931.3800519211112505960364425'); - T('295211627171624947864455852710547075994077285904641205668', '-32114221914552039416309', '-9.480491706745564194049269607588763971795849392568309012222499652763032742439412e+78'); - T('18076895076744235516275796550556474017044744513472', '1110616783295453.907507694897679', '2.0076503062103110248911265925095057715921072859968017387492670202835863677031488e+64'); - T('-30509248597412319207476984175234018573.80700', '56489216853846845634764972404741.4102289', '-1.7234435600671472183595024375663260504322309432173684665884657236439010994144223e+69'); - T('0', '-37.8349097', '0'); - T('-2851475309', '21590640', '-61565176865507760'); - T('-82809184867575581.300036713702885747495702565', '1983849666549698977150.0321478', '-1.64280973786792195412167897641267648031706071732558941631564732096919107e+38'); - T('-0.000000000000015392923450383', '-100527447118222995497036068167.83978088878', '1547411298153231.68196185030647190431319404613997140274'); - T('-90815267.41287893625890527712', '-1377.468328268', '125095154584.42972566162438210224966962816'); - T('-61531326072626014632609689592827828109737644', '6514.9664391', '-4.008745243164772945370376441467418441994843425659034804e+47'); - T('-0.000000000000000127087490497875', '0.000000000001476615944219678865852759023586345893215179308071704', '-1.87659414780029158895646469218881896708577129747276999389159629e-28'); - T('-500.0464508771550', '3031251990944702206548861174233303005657140.843654', '-1.51576679978620832480902504570356096303779609394637710501532437e+45'); - T('-155.3658', '-1.487280412', '231.0725110347096'); - T('-7246163852901276.04365667671658743999435118996620258393', '5112736623675367552557768126133416.065405138439108', '-3.704772731188096277860254002053708999588540456247342592474290019026821786006110036086254157751656433444e+49'); - T('0.000000000000006689933708640329486606383032', '729332114805.1424421852307098335222592037429719271268', '0.0048791834996288611343551405747438154907187127049172382481758395023666868320324576'); - T('-1.8', '216561.426678096257755924379012116313', '-389810.5680205732639606638822218093634'); - T('-8058045.0444', '1329279770290237732458883752.79771', '-1.0711396265608420509738201250987261701168324e+34'); - T('-0.122934172485398496827140448263042340165490502305', '912702090990315108628442662833971663.8', '-1.12202276281587270916014575371637467822687977597732727219667936221931017460398585059e+35'); - T('0.00000000000000175417191262247437274343236218710277615977753', '159777383.0958810142116283', '2.80276997699115404345306815091460487951017642480659328034789667052099e-7'); - T('1.832596787409', '0.04233218045723559484149346857663058272000354', '0.07757781790994800381556406308518949782645811636510742786'); - T('7764032078986972842.005528691471157135', '3814413634570635467562869035571042157068430937090750616', '2.961522982133170619249946192718193418202399599536127455799771152758136779037896695123404516e+73'); - T('-17135339502484788763', '-115136630978196546781', '1.972905260983705133684367626946832621903e+39'); - T('2732768992944344069188.78233921094751884724609431', '547802187776316166043551795761072525805362767.4739838', '1.497016833022191997667345517507111060165004561416898656598340429974721721725596504177233879086212178e+66'); - T('0.00000000000137207147854597410975017122036947235', '-31922289389067969062352250596.5480447', '-43799662800630948.884223648169873969145520154519727429336909041963214045'); - T('794.15', '17485441159196003764239999', '1.388606309657550638937119520585e+28'); - T('1.7375578177138444239721', '5', '8.6877890885692221198605'); - T('67346906173389358', '-466873.6162827458603696333231123965906193638807697765', '-3.1442493630625071474606471872766565213027787746877671241569093138487e+22'); - T('0.00000000000000008330954900095391223717198750270140816415917', '-1255116.84123905597608550718171171454784329986782439', '-1.045632179871276258673769748937031166781342825771332297107555550761723897353461461042815681563e-10'); - T('-149004811516278801454193569023908186952042538093822927716', '-397664736597845838069915', '5.925395912343267570007772381296883214350181601356111567003076787081507599926414e+79'); - T('1000073564757252670366408149537245435047377806404.1015', '143493737303.17', '1.43504293385121986151561356719338126856345712035100585929836951755e+59'); - T('-120791171186.75073588795', '-3356641846898638185.78959337380788876290302345', '4.054526999413445597874488228850145076904199735090551400294754224275e+29'); - T('-0.000000000000000021645765186475073728477012180542023658755317897440133896819', '-2892.41876465002535699255875339650679491474379', '6.260861740056875851324591106893702672467555630128663303516124593419559504118801178122464786716968100401e-14'); - T('303590.733684425609632655982112479958446', '-1079042632393906270486', '-3.27587344445239960885966209642701728797406978059884116224756e+26'); - T('5560006241690.3561204958103356609', '-26134.5', '-145307983123456612.03109775521732979105'); - T('-21241252966066639793327', '-9918174602168819276153472753.0892247103917800902408030', '2.10674455686285247587982556750283161206049081499338374032384978521582521581e+50'); - T('0.00000000000000000011710898531900697150827118078795784040', '1416082645912.362', '1.658360017906513490504921316067138338281826491830248e-7'); - T('171974954737627841.3571', '12776560683821406610094.4', '2.19724844530274182316145798323728537865511024e+39'); - T('-0.00000000000000068754763933835169744516274824757850275393656608356918004', '-6.09469365736868', '4.1903922366142608309254800108912871683678914634852117466941692915771472e-15'); - T('0.000000000000000001400696', '8637225390591.816150963722258184', '0.000012098127055700394515390281912149296064'); - T('-360824784680774106563254315862091.5', '19099425092005944.36343728914640', '-6.8915459463496190545354254880571561783649870472046644721536956e+48'); - T('-61.150780875663855271841725817415551', '-0.0000023333939193095575001578508180794664583584954721238120', '0.000142688860256305217839982589618557627868898235253332040049384167607214599532790926200412'); - T('-29783331896.867208404770028328881856', '0.00000000160', '-47.6533310349875334476320453262109696'); - - T('-838472500998941781878534497598346150189438395681961909493802795126225423951505690327678802846577883568622319410118', '-2884829948773734005744162960155700874127.0681001892763437635520740604769472972181496111013', '2.4188505821049618555759179210300843443018778137981932674088381260022683344838428233063800820435344194302980110031387348601685636929132993133036482870813353080292469079495502993056630049417824321203429534e+153'); - T('796691.919974655750', '-344177691021', '-274203585471964324.87434102075'); - T('-0.000000000000000000037241136189493487515236242635317406', '-236633306915237035867656873537286323242534.531', '8.812493209800553514615822924219854143174591731693607256359134469397049100346586e+21'); - T('-36918999197803067902650019640975752121441727061986591604616945161242737830954924822209930.0610216157567', '-630816248640.220238311747288806', '2.32891045775094316018876017621573827476363455570577127733350185252461212627985116895575049148402627634872854943933909453127151295002e+100'); - T('-356285686518395271578252895087932787716516776378851836556183.490949109645090654856023328687155015449097603555460351788748359722414863145', '536192552176752561042209607723742909268910764247931780563.2', '-1.91037731558344763167084704445859558938320679866577929319697485737868113003820206731226346686676150919266490086231386325706954806002421869189844369048659180671649946432503759091893660299023264e+116'); - T('-10868240043.323', '-0.0000006987483137538548533133640114148563911523216092560534998', '7594.1644037440686677326890935142678911031312404730399664663577718354'); - T('-0.00000000000011591017649385438295796980510866337031921451760232710693439920068628049494341909991139678975519329366780780539554769715433124600', '26133984739171981586185319', '-3029194783605.121387520277919164440375428744596566999709645269433197968011145816158998774967743687046263521357854521385482216635698201872145379668177474'); - T('-1711273540905209744011506141193.37033113722759550410761924564724', '0.0000000001293732763469758906747311439702612890496046217356893762894231050676460791112722303394750148856', '-221393064712797651093.576041646381279748254325855686348423517448454794870494445248164160406818767744894597164595179089851596941716698075867505673842006555744'); - T('-63062954745.8598353024049107700099585768452939988302739544094597635', '-0.0000000000000000007066107653369429290153271704760473112899492658449746935736601687393998875372553088763481649809909245944916440347928986666226', '4.45609627173810154902373805273164378070520471666107189671611539018934456392187448488034184668558120645401564953529878995106460890572197110823797727327567501341707822274253599872751551397551e-8'); - T('-0.05396306543212365254900360568584', '0.000000135925517648212', '-7.33495760274574245053942000380666682810971808e-9'); - T('-51311181621759783527978578699650628367670018837603370537970304306.5', '-0.0000000000000171073617238152543', '8.7779894447982604608252727389859997980275463423154981803549625152925376395768264295e+50'); - T('780360810680597937530828803485426316757997822572046380524663475663587783713055764905934635773988266249773631591980851269802869685048538490187809566', '0.0000000000021114006241457087', '1.6476543027298657092509209956166007749872751971298560901265194443520620935869459922698982198083609063920515096925628739206594316734184930365483909751507976717094242e+135'); - T('-0.0000000000000001558591643933212408712480642149933587830724439341932663613727360989832586450936995132509861377299507330923270242750447693180038078839868789871', '-899234589140276920.9563731186', '140.15395165697510406375504229464266777072446771644043491265354600675571562268623460258428521212930915552512830838365872392420849552201444571287189837930690619037363617006'); - T('-192128620208427347208760897481755790502927310252099946847941391701541372730741701901004842683652084499599551669587901.095113423628696460069833', '-150027.013347965686304316841127', '2.8824483068535959518771144524961420793873335181555629802553828843970441540984506755823649963472492988719283593979140183046911245632653583841810467259116227616668386421791e+121'); - T('-0.00000000000088119558575179620805745334627526', '-2342970366196339369130467230746566743437618438527.293007742982263818470063380858096529305084867946540343494845177603781376', '2.06461514423948373213684382167619940227586580537675167441830145669955691286212463457073538034124876268856699464885544965251476720909351479389090095755776e+36'); - T('-6635456782135376051461227670659894416124826680462504047183309508524677837974389566804395212269550349799505694436932101464692080338', '-36033.774951979165187136955049120300', '2.391005563910499861359276356470099138701070047532575485529233046218042255556441673237652214828582412128576389116490428262479007258867518065861096006448051838266614e+134'); - T('1.0795693', '-0.000000000000000006209261744497244037804821960982585015091967690457481640260325487223225820327780029749670765451353356', '-6.7033283550236685978221251810425966169333249952098001341386914040137368425931872572708312434887817265895708e-18'); - T('0.0000000003205206100151839365357713821428922286825107015046701389076172910755564034571464044704259976070021361285911146439621197151315883353504731', '181280954003418224438635307210393590651533286700798186230089972712042801144671899167602413575288941132381001', '5.81042819613101098829202896183160808144566548341644020145672547798396356491584355574818346795299101366223635188614907521125965341055497357077467758341149862217405975928504053356664898994511933823140023871980627595465353142713441016064148015731e+97'); - T('60.273280', '-1948051519028114.87884169', '-117415454660806895.9645912570432'); - T('-83193336723730904831044', '-8597513002342', '7.15255794190492657393641372686305048e+35'); - T('-20357731434704594485933.435192883517106779904094737872189392050585959795325610691798979690389882855327158774541534046886050', '57101254487124.26556892385946827693467498483828207557125700861375680904187175758285473565759248405589101', '-1.1624520034335964384881547289755586531335208559562766632031511288008463494925147406785220580646246607391536758053170339436847553410796246157934498139151632371860559137134623242512914876401966834601783673486087092780486894105e+36'); - T('0.000000000000196393242447331955075189676455271786947264076645295021258862881929479958110333580', '194877.520544633956108976283205922142563827316236038257841914758325718909245819798140', '3.82726281398572106089641076236903647054748740721743415697957940132522454065934785001420361718935697399839562856732355534966588993484025198806123215220764836635412e-8'); - T('-8071576425880681257819461150', '-1591541556785189268475083517665125202173160434133152.98399538151538621882421945398094', '1.2846249310556773308688003659431424152963795381736069812397375172279784904016650744805487687134414853173170481e+79'); - T('6215707454580399344821610342', '145319540897984402903779835609411326583090144758472486922947576644983828825850438698150473186142966520100265693', '9.03263753655802873031730925036374079283112281131923966584171630907427735951790460941752213245331152538824074995769485027917034562316597006e+137'); - T('-129348079468144673220614626836759706', '-88248178940421789818564716716211678654401184759743634646878788943183256531349288163631708018145656009375447214258101552585320093130', '1.141473246250472885515118898707262713605663944616163164881785239559268827685334536245384449464192711247404249908389352393586709492073897298343118518559610042335141978e+166'); - T('-5780259200186462371596484655187034250137478170873403737601291296553629304246338.1', '20317804349924669254706871559', '-1.174421755212405947511968636545739798982946944457429152629522410545955272538056812944623926565594717327880979e+107'); - T('-774.0', '31209403299230592237921875076234864775333333322171087161573695825372946329.47956111641', '-2.415607815360447839215153130900578533610799999136042146305804056883866045901718030410134e+76'); - T('-35300012822981309972161307966314653.5746532880996436', '0.000000000000000000330318102723213448', '-11660233261792292.2796305229097940998500752778977839907195278155271328'); - T('-372377963884127526301703864441812802765174863559283045963633022003526893443086066813180.3717468998054326701855782319548515', '0.93426382293185456943254764459757361885785459231935724261799663689196168735639052920121741580138452492', '-3.4789926011396505505944781064660804224349193623867972766690000964018527357693140898258100416659583488178405935796093105315794205956790824509036660608118406568210299647359494344226952122917410385314738577518950473221664938e+86'); - T('24266165641723085835767787003697599948414575.4598063181549354935463146230534386950113305', '-114046436224578769506685348541641847469702436631296179876858707928490406027412029206934467.22255852787626', '-2.76746971227383645895497368320257172653365323571255355106207704032170926692669369847993108061766552826817226048614230592101594822309797349385303976310250855456022415694582167365528080196393e+132'); - T('3296856412996342216590213367517526056709903701721644610.791416', '-17873043539632614693589701036988.4471469786937536273599351623416309394', '-5.89248582134006296943775735259576640781981176325731275908604121314963017378308625998703430431944837580972601701118670108255361904e+85'); - T('-579102350347312720630005129054780607559620407558223441199264163920137899902249163147321939579047776302298780448678174736222915', '-219492399337234160290652558813948662413370806048542871624923.1888570368753037439767245955297245131205931820059590', '1.27108564339563247096015910701131062607103942871909341223369812880561545119021551254208157534581993545107836369462180155951136922383213991699434467561508645543330227906067804094605876984754845169252387320636979899325902200224418682350485e+185'); - T('-0.00000000000000006163518675166495062601637166684339458092498600493044751669369089730774084108109728725760785705955545530', '-0.0000000006634126736829635005496725883566808801526308721290044433770358933738076656970776547028344255382880585757916925487', '4.088956403587081499616844261176845350066362599955649570127728925758519680545486693543687506509190342330458809847232254048349532057461695086500962967500458536634636810198879285867211023138454828380781894359544592311e-26'); - T('749330908047468986174543866383750336261268464649133307531895834594094676053587911029106522535833685617906328029183872567352948262609142814490', '1.72', '1.2888491618416466562202154501800505783693817591965092889548608355018428428121712069700632187616339392627988842101962608158470710116877256409228e+141'); - T('-135986987299837104129797979843691621285208421388144053924300522288644.5900287109133895483', '-17962494534979782634275.37015590780316964667993394', '2.442665516201689090665690743015967257236753951326674341795336278365795371226492213646697861453424431171591440002808134392672856130439302e+90'); - T('44006442863122570049153802624466247185058307274072774466983112669894864433785226136933.2', '46790892915789.3411524668861472382045424537291525565291001608139420856967742081828733644952251814', '2.05910075561317027401508721128826736996297356066394448240229549087424917958568533386066515904891204498637800861760830895225068854234088512703986966936540011209421699582958756520968248e+99'); - T('-0.000000000001357086727370149233250058639705046544732320894727648668175942', '-879468576980759082.033452675408474697409162575095118715838878', '1193515.132959700504049250941775088529954670578739886689678357661665327443107825618722158521731867085586347456416627873076'); - T('9809841.727201839210709', '-0.0000000000368880827799595678609037922161591383619613563735115949331671506211385891506096678952335776345631106186087', '-0.0003618662536913229896876574465145932640958294417169072448132935373449094813864973395333355003851497225742989014305327367357205683'); - T('-126.76', '-302985778493402807197323438', '3.840647728182373984033271900088e+28'); - T('124867100493.457541072094721668121610280880363817443143804305', '-2790.963779772728898849783002651075720477860575346862492661675565992697657575735773', '-348499554762481.440673495837344907334116857684623288727299421812123101984255650489865544241755462317555675735472100548275529499295106699902765'); - T('15521419716240482198113978224037109244552806478255554247304501803343108406125114544385881082700492397181091385635182384771169625695908585249481', '-2836586261373793936479454372136.74149007596046739828188227468752645', '-4.402784592410408295066853625044872038760273286404138338015606642746110634158840973424236636715346429517243853338608937452735485971423525672323975187535426255868008698725535902235665305652922137074089203627245e+172'); - T('39568702947499980.31043424352839120626194373', '-0.0000000000000000110532060314654733243303464490568893422715164279635383512851140023129429730151730074105250113850458826687408847800122155909183172465757401122037579', '-0.437361026076572434440085826634462269408809302675686544261100147571961623746441124718245098250484230095790472367852085991196762852617202769222972427292049884929603478563067747014298264342967'); - T('-99609250253802741981.4964874360244285', '883485457775161795418874408210783527590114513274007831727657306342804460473168388.873823683132057229380427284612779592765741821135482015', '-8.80033240591215667544412145489909369089691076369957723858897861506204032139051216834675560840680969094658338799237500038744626460350984691160948888063757133290716624034275e+100'); - T('23.384657', '6358331922737965853097929789343578523627007160605428122392114297855155.13891249819092314840480065973772043562526917541987676891872705', '1.4868741110537783235240747553388183892758395838730184898029361236013863860525612320785833880636058134030234898750019986664922343269294087185e+71'); - T('-14723458729544396106728.8730102546343094999696645194153', '-133727558.268817344562', '1.9689321851736756223818822532522079871040093348444209468925006088388745986e+30'); - T('14302541264229922914', '-0.000000000235627544641501596076737344190020766746331735586147665546911192908467378811964334722559869070841801090200096029602404948591646484821330808', '-3370072680.224254836492035508073157091195119213264445104738613033613662085628770149276109216999634545944893478819818145213075837742045845104662438460733334512'); - T('11859540992913956563027495896462810455142079490183890981402926486193538086518056969511874125054152356620542433.487767032922718042853047303427', '955192395684300504821406379834312349326154.0693', '1.13281433727376500867653857943948863816132096768226862985682668025650778093862402486711549896946612114014654961667306187363301784449098292029152064116984771872264804563492799411078854911e+151'); - T('-89992.89188302466393156671880484242772885323991845613962309150678501746987154469202208826173765453391736170812306681487216203314', '46028644449145217432303817391775774045082825030.2022387362122235067512142165', '-4.14225082343410889148864685916871924839200546263861436771489245494114989348152499951206927264038619116817258198774738485287373362091029303295538404627178066368057815540301560861820242440073822631213481e+51'); - T('322550604700426997899532770743249875139977021368583.850723996627574052487902691354294316078353979975', '5051247930821098558310030929577132446128131203947693097941889018946508950010.817010609850054994957659209938580530674194319', '1.629283074578125979757678549954520448550932971582730260571009370631223791910921098102919850864213539220310377679206053786662498134329234965312607315294965577812311728138336208121595820208987331544983981561498920184762025e+126'); - T('-18162869148539225267245', '-0.0000000004082605569565299430913769521458041940383792216884928840151413981544379047647242539071550738140637320695619458956310444200164926', '7415183074511.198888443043591378591772024538336265966741297786740921169768779262078997101641290939777807031074347273941892988987901012164049542564887'); - T('56.437', '-0.0000000000000000363636129586261117394059679281224058126111740191432401889546', '-2.0522532245459818682368546119594442168463368281183870465440307602e-15'); - T('0.0000000000000098328737846670488651996142598', '-0.0000021680510741625274383109785118138365114445962436956704809668310586255130207174432385040177431879924758023695894509584', '-2.131817257095195181206361651183585087468603124720413551197211179755387449478899738202568963063585962944228052493622001429362279056649894941659232e-20'); - T('15353773892289910580447352912374084465426576602840471898589013750906506890933921327042063374884073.37459230997064', '-0.0000000000010024383418176318716576007775600816833200531168899324061052647625728403071186802669732334255658386493460274446', '-1.5391211641229945537862597203687187815529728355277111549164845611017692299846743962405790219289790424490140365517893874940113367036665712735367218576203409806863531895103340714121294126379877846187972625242851311660226544e+85'); - T('-131317855179200803975486750.21706572131621841705391042457406222193797630804760305734762283213938032', '0.0292170474534535827560241963251081294772380763588549279699135998743535144719442580701100219852823099329042846816782892289228', '-3.836720006256455223034915613925802473646371948151381349060669000949432685656690149745351896865724762974757845038322594373778118540209910046753684013004635293983638022635663512882017379734293615901239976258135149413119296e+24'); - T('-1.2652', '-11354', '14365.0808'); - T('9907551115374943050635613568695786302517118070997561724624950969636860315016878905709.592450615294116872101107020677899332545772518264112371602200', '-1.4', '-1.387057156152492027088985899617410082352396529939658641447493135749160444102363046799342943086141176362094154982894905906556408152556975732024308e+85'); - T('-490.0344807942463855', '-9323932874.185090992679891416847', '4569048604961.6964723167091758356936009232035565185'); - T('3604969916487266.77582902266201875313967241643046258256599229303814897912723083869145048', '-32491432188732331176981674049239559807795.05', '-1.17130635583966083474238734587571010296057134092517034186160396265057194098968738205898514560270240397013328401070407840495064124e+56'); - T('34703234002309873855644196344429559904012545590136.8731266774035', '-30509195306542390332337786607824589011847240852960.400475884124826629604413425289601053748170330700373748814', '-1.058767743945114695217780865659236851886438030887854601194770945013467876376008466686358099101594157300090732314055284541644607734865797363613111496055241101601318724449e+99'); - T('-0.00000000000000000001846850219978014536016505660530611315774081617188936233750581313204111802184283556512413812', '172294.1773686139898820857102416866146212540421600646329719718', '-3.182015393741558008777043196173134950988956232467393142872076553361750999454632625636035727486190076054675229759462180914335313087408443832697591945016e-15'); - T('-18106034022632087299566240966', '0.1062593952762739525593394732713320570280318748229897368327', '-1.9239362260965274886455362609833980864707868629715502819707822658572629454695338283882e+27'); - T('-15954726647545197343337193.777996734931237024726479085', '0.0000004481748063179037', '-7150506525118665829.3250763667151579960827175193664627204716990941145'); - T('-0.0072925304890', '-1691234031.569314001265549', '12333375.739253610871043600667823461'); - T('-1865227748847755571775855702643769331381101998226093529507611331692677750602855545329939048493285354105512957820154901.7086', '2210049489063501217982642732440647263267341254731067280328753568541239370364.8214774408688801128406378268765465307868425869089870377072', '-4.12224563332804677406698803644377193820506176786228016964994619508823923498100669710299638948960004422089468802904369403398678960200548365227202005570666224092394691081191293375038692545892613850007520900934668836420552876480141825643798919514009790652192e+192'); - T('-29657447.9015389403059670276084073033511112446764971506273354986137667779619286113465', '-1827855316102176003105358531801341705072592351.135', '5.42095238088512761081531495719462889138251775255086295922416345110850703827501143639893274817453208270263341869965571991680731532775e+52'); - T('0.000000002303893648170578350944498774746492391128813731693885869943488294353601573494998681870582486295872268039945356590815', '-32442262.91320156091101969855721550263008139081880143903731313592785661221100831', '-0.07474352345800499923522516975799224318500890706048459253531640566042618663498550717397089326803150428347426693483873444675443808499665437424291063143582928567184402307096634148635840535523467265'); - T('0.0000000000016576004870465706885062', '-55848857027244311015.8188471734270775276780246873885866419886637427519716023962487120351937093495264631807155', '-92575092.6093544619318438795137350300013067044584954352726853911684860351652174681495037636300286854678776361173457113848293421861'); - T('4060428408888.0232603235503282900294503488016711959024243468046984749052603493273497544632749564430853860097672053826937821420346478', '-56342167050275452604675195079699398.2675991078629882729119248786198064047635210295605913955475957472202624', '-2.2877333570925316685876047368022072172371889058683599394540501407358757119526517889443532452252466779232915679501821225464672490791576862382231853032125642473217365895411111636095821515831491602289971848581424815174345498160459900758272e+47'); - T('26299685148174659.21498806517835627517278416660123809400463889', '-0.00000000000000002810938946123709113663641801589824230970112320150509166', '-0.7392680925379544113700127042857131426674666337496775201943962811858815880839349410511049278268042443619259946506574'); - T('-0.0000000000000000000237245065931924834498369898311931358407431388348456381998654995741405648243043023156623847512508812546011581686473004618459451222129595962653', '78470.0567305612051127506377842349815403261', '-1.86166337827238752251588053847936462363465535270736342476553827797069992977676755247798085804488792284146627152984361709483184324719876052483334166262924374381677162633704456690411433e-15'); - T('-183824463031586708', '143807363604069401113874611858643135635193494053567940110697592615174793997761093.2327486120912246439210504605813271646434876', '-2.64353113945062034769011701589673384301679059470040712450349324003153646920125387527703799373682836286840975022033298195495859192205669228208e+97'); - T('4709101207483984726787440699170240831795242716.2138423114488136479566547686742376976336667025624304570806054934', '-1', '-4.7091012074839847267874406991702408317952427162138423114488136479566547686742376976336667025624304570806054934e+45'); - T('0.000000000000000000038532944598313834956548814879372', '-40661.8380161978165598078232608918885279594361853172147', '-1.5668203515437617982746501980121696087743512254235020270033803551407710522231355251684e-15'); - T('2334886001264116563500830341789350499377618860287461405266703471620193083331061.9777697176990366889825738659887530082768575891812891822435971810032332', '26035538.8683211892476845585304290220478694825782227287031175818318794980679029048408253481320254733533048872460665035942196191856378829543', '6.079001523901094420088368729082607832663817841432796296671692743644677805701345873443864752415327061436957752682222783317280683048921810139315200905217552914921575411464462577484189557662106960763012918216551898062340176680217599395447139612485659290222974247963252522982643623146784276e+85'); - T('-7778469807.563', '38672644915681385296338808681298386088589', '-3.00814000855232415447033790891667731035489355100198607e+50'); - T('64622392353741.4865906677596431143150394253242646025467', '0.00003378584792447508795371328648463423391931923728963301558475258018764078318119181', '2183322320.579271598509382338738236518894882788661215479990430711558769726756727680434235068590712469349522851338102909922320467182527'); - T('-0.000000000000000001648136935803060530512720919823086792624816339685214001103485134801966927382343845709538610434741849', '-4391532746732420685914713997682658712351988556515487377264609238454668698925221533684202870806667745235943356', '7.237847324678369711768998633093781574995948295740118328002527697546317476553671589822452609098233955280840336196399777925163783629478472302267347352300512328538053758750290707036775767388047947510115846705244e+90'); - T('10333000414188250420538344710287739407808614536951039.810025625233444425363102180125538936079684897578202747788108257631148570', '9335', '9.645855886644731767572544787053604737189341670243795662658921155420371076455885147190596830385851889252265060199058498677190095e+55'); - T('0', '0.0000000000000601453886227057059980502655211529623918792629968455990334450008543269999122651600055853233978797789838530557724224959611814658608426039511317644', '0'); - T('-2297750624251138979504978190262936680523712405752289172826124262469129120913490453904199762531745620.96952540734690968359393491107', '-40416204690650952371389732084289462889292036515283404683019111928741464.2687913586781776783223', '9.2866359557805037179029429569778710628234868409496948754232191472442648400693401233340833685175058579432758055493241234301333517014914341123314199162326187649292261109846406979086483744843709435080273472996954914317297861e+169'); - T('4343355589964158622184590891340741623549153108779.436816', '-0.0000001064974529896251240308460910120111005761688204576301219728', '-4.625563077594334790148387774508543628581450404563732480957583510623242646260781687362461885461530966385708706048e+41'); - T('-11563484501688268.66686509003783', '1322408781913756518185807148018074515.664891437493116279057', '-1.529165345455618514610777438327506360176848752673257181206491978239020817017600896672631e+52'); - T('-7105422094.2179667', '30559895492351516.966189644412389996', '-2.171409566283465162387924857949138932897137105411332e+26'); - T('0', '111016869919462691384357858914534606927438531477.1293238954660357640541427103317553925', '0'); - T('0.0000000060932574133709382983', '-22.267165855523514466854715520800113116277499916129314878467293624269528017916046898922489352991777889888803407846', '-1.356795734239288861313869942530919648656125995428613119992994317378914675143711278820250703114800246598130872149242193747276361084618e-7'); - T('-44333.76', '-0.000000000000000001470079352177070580940', '6.51741451803737246384545344e-14'); - T('-21357371607823146.894996126592622902999367699791992019397626730636288058416175548036595334380731548047707750374539844136475793453543167632520829674', '-2082610833875897815259749572708491274194096.1328444788624505568347915241817370559885019276541831998071798466253171806140327187679310', '4.4479093493565988402652146155895503067864965364415050875276153305362992271006919883790488712645218749008589188930440013166012155736226914204651235463946650075417869390037652928234175055618130254249241986895815834958749240488411354040161221049340462201305247819550627184384494e+58'); - T('0.00000038779', '904315692695033441415603523306856029010929442362969497588323373295.4261037009085085062076151428035395486146494122744116706', '3.50684582470207018246556890303165699490148328453935941469775920930233288754175310513622251076227784601557274895585894101741974e+59'); - T('-108092399126602892192263936618253.11634898323699426667272696837431678187861415020697', '-10577768091951217923840244460858974390254947969430786022673684947578297621240080038309605361343066868902863031903186141346699486064112972330793516', '1.14337633046383576973976076259460800215089889515619540807214976204561990493150424651385392676061643973011767877937603525233712134586553308518682088934561533581793269433365489470332685181218952765840412804140387512176915573400652e+177'); - T('15467641140816407251201603.17330929847758676216749067445955101305983585263772950', '-577622788567995038.889222735426051145123753952194531865720030753211409854898055689387177412129339425045834175708407053831', '-8.9344620083274171838850431285315863222279965262274085151307500736726521153163765171506606924039712216379344449734092210186563577666902614357166638103925323472931546721201173791263892223252481167145e+42'); - T('-147577569629276477202061028275376955899710718777', '-1836553374816.4194414', '2.710340835498528403441827678365194491127557859039387630435108311678e+59'); - T('19607260477306481515065963386476904146461.13', '0', '0'); - T('-7587887623467943790564171894728147122394166719543547263769028178587424899740120.3214878', '-0.00000016920971191816124290279600506057889818397766687630546391612272642869578133220841440723450090978526958058420544559571', '1.283944278834391917935678304507329917170307310293334436436941584511090251795678415124232910095377726352226968886370226267649132152891311373385442150371798069034937442982381537637461944916510337784497338e+72'); - T('2183744843588421584150515470170983080333529023791.649929295654521467545253432380589261845763800323659', '7388076664655153708968991031349105352802.87524801859750438051677178784807521032697033391834', '1.613367432047663606017519920365670781068592286431464441643858801885153492675086468494328491512664083724900475004088922960826586460789211331922609342243762356185315284210154800101939767600606e+88'); - T('47663056245673578412988857668839696666285127435258253279539956729954000870254229114622792532345', '346546822020292249515761823895055766746157088669680742020667195407870883898961673353876509569868596891010435068343.891429081941502924502622209358', '1.651748066971262047841009039410535405983991643212862547257807586948128858978665397570993212728686939913279771853555026022126342707912524337215453128506654700200787070955669974964782729940854858026583385489299889179192801828417090757668451e+208'); - T('-108127035861913115550264284316138800046955088009916843670136654902573526429629906417162564166515174290526454135619208.14401004096640476727920000', '-41876811.2693259587009484684', '4.52801547390097523332116417273670654479155983631591114406304348746150113439265113473586255636518700022503707400603551613864908028442586791089724406027095241367517728e+123'); - T('-22930937565270017519558999696163059408815.2103786274010528531899481200409337071', '442710909275310619619476456914560821720723777371027183.19798799', '-1.0151776220056066916079907416732180895063328275280083903607063874114903814021738290370272558746844782372813173058269500111226243281691977729e+94'); - T('-0.000000000000935', '-1394991975035345206923314783009363790456653341293996952.89914882995729104423', '1.30431749665804776847329932211375514407697087410988715096070415601006712635505e+42'); - T('-0.00046024', '0.01162786573878994938984477754797863400638858513306671988962769958859110982', '-0.0000053516089276206863071821604186816865151002824216426271620022524586531723835568'); - T('-1627.2108799123697489132363803597735986233989579218110364523089725598273552977977776687575769964049313924', '56699994277601502191648', '-9.22628475794822699354291906781040053919455063547635119292864057974253393511179708715340019643722079742642013165442036762906752e+25'); - T('-27116910291.9182040738629485', '12691061832825245519.40893289319955481488011346305686826840916092434155363686258532264816410801529729986396433852053976574899754971', '-3.44142385229909206506408450914121490994466313457211336682505249135405026892531659087017902656062527076358954643091265672241689615713870521464190780855919935e+29'); - T('74334146952185.622333564428648946767', '476584680993387873045.31749635019901122634977692103894159588456540699130081843563616833608386', '3.542651571212300025591240199136282046613545603127423889427355578233920699125928663269397001117473297183365853355090147038788062e+34'); - T('-0.0000000000157591044652124620704467757472117236708299027185378061', '825889432875054704437419479225672139169234.4648865373257367774758779311867911088245084945960951054201828797', '-1.301527784939306255868774017049829614469141796766685094069536216576279534218241902166490354194411368867404472498297448815923977414878533155578679521444041822617e+31'); - T('0.000000000000001100192990777212594294335234679657995433198981402645', '0.000000000000000000432645284322379079219999', '4.75993309304295726917904095312991723862503538234489037361811165973555497355e-34'); - T('-300700711.27857809815492793761168238841641169113962704371', '2796485968452997110905186933271347618098487118212692028161371341773219361074458463009437202075408782.868217914378353128764067341119788514123', '-8.4090531979437954393871330563049695911136868591602684229475806517303872799072423007746634357788114292441025309971392965563899108585661101482006280251358427683195796604902336825200320040807331633e+107'); - T('1001261567690509940798222741590486780493666562063067481645961.90629710999960001', '-1650177790476279206501558139505.7050853', '-1.652259601460341163039584257033432854399411843740615967044468360193262523967905931854751303094262379472596022930853e+90'); - T('110.8604067291480106069111398751254426097826209058897035561124403844051579732', '3550086474131605383663436798312168506354131157360313848273263892613620358824680555084478737815742184487956353593187968793241400.17721303537436259886645', '3.9356403044587676036027794309018622288005376717971688259462205139902681207884104868717633863448326626441423669459931832858572563749403841913604929877516515276589416960678197046131472363670530588356080270487825651541549947914e+128'); - T('-9565239171980107624419624526395838241183446774838567911610629737292737676405985674082492.7402072097442088866372528167684894637964203298148137737241', '-36054341543178006514284988556899580296546999631717365906312843826084434013452', '3.448684000487559907760299189700848766200218042465011401311363613150401470742277874500718876731897516621371622912032460093110240951501324564382188117403446347500943089873810691365498189390424553234241009759752460955435365932e+164'); - T('0.00000000000000021536749330373908821656161952581400559880285070951784338817932051856533596270829157789717921906316591168026012467390896523070770210560122939454467353', '663477678146178303688345264055398845777282913816.2865250058407981284027739848602730238855', '1.42891524405327413808513101984282436944310120570351565859962360818367363905163907249459291799819814848604018845827474322713798614022002843947155226737103321232324111623370722541558737029258436237486465744476494522921928738155070489600815e+32'); - T('0.00000945', '-18898734150623755402431379573.925485263576945358998697169620788', '-1.785930377233944885529765369735958357408021336425376882529164466e+23'); - T('-118155484782065759745414566117547423380595772557270766076629821949550123865.7556876205552', '-3222725953437374057075335595917494.78154846586409115254934373165610464807636269976395928338097797032693881785669329213286427799731102411887254283256', '3.80782747348138016629045371008871196005073810159724255259507985221047370481336261384421677347963935331112831607680385035083546977933094742953609409763116007720964740775926559725243391158892800768754854303883925126424611683360687837312e+107'); - T('-190628036687751797516.3923598265032797533714657001', '865709203990726346661478248439122009697620464322316832519149040247619305112126151915240.927219690074057652788651697648519684669722701', '-1.650284458992685868486399903806413990004373003855903554255634262462272823920733859164088044294272768929194834986945666561794180291325817436074210916748703508868419322426333998279701e+107'); - T('-788627400197335866651447870.157709244984248131980873718306382781375', '-86747290916497451031316747659315856743776649872846183098534827784400266496743256523741518237922.2996321602121937', '6.84112905096393537461269413785832954919219508550269374591141540623116216431585547212308389464605406974151833014851983606637628384743188851383796216195778432408403881159962523375e+121'); - T('-1.04017', '148558325637199565292759778627500454502992119749146789207503706844555418', '-1.5452591357804587183056993893496714776037731319947001572996913074850120914106e+71'); - T('-0.00000000000000000071132398470582962692145075368461', '387290994676565.8926187930695693123250251643', '-0.000275489373574019100458714153409095201115930261231849509402017099019195631423'); - T('215107310441729713046298412931278726261089816.7425287833514081638904884659853465814509169056957391447566', '-0.000000000000000079530922946391176631073888012201003836910614023124515004051787554271', '-1.71076829319466519842618108119001097767954970538486717238178897562962688286230746264794767938468573458599488912245410770935262628286074407769931453705541079989415475854386e+28'); - T('15.20', '0.00000000168020242551215734349782244623375617292165135038473086956135734916317120833176', '2.5539076867784791621166901182753093828409100525847909217332631707280202366642752e-8'); - T('53.7', '-203077092210298580698048848822677', '-1.09052398516930337834852231817777549e+34'); - T('3762.1500774483361388784232631064469116842540525321933222132260527508280723', '-0.00000000000451157562475195223090446528742025080950824631951180', '-1.697322458607458258725685631392223266464385065379983966983024481605281774480724387957456810916611803963822277644621467110314e-8'); - T('10153060082382209456279162718229817773.21414954173571898129540', '13877.5946499736990', '1.409000522801288735724123829540759783413794325474382601016313019646829496846e+41'); - T('18897399203675243.753780', '-1910633732732845629536812142230308713253202119068241546428657394632038831097695534323128365467560033377437820071074546249694941907476629', '-3.610600837946073550532020697653346279388929417890343273657708768347378585716753592761967644855725372607255782094846473883590443720333438235921023941358040762e+151'); - T('-227851381988110698228234897200521545909.8859817013555168022664133019970486786396950937267160151127235063398214239139286950658576124761', '-1268874936070643773798575676971891302001120798002567287940.21946823635809002112374440535791936322353876611612756137359816293380527820953454', '2.89114907753771796464127821062921785105163932083151495322011931184509082675890958425989774091841783969857985176854191074417481688593300580341868089326459718767784372087364119694552216708565314138516855049665928747274756209929360259354799135676979673768285573391477874494e+95'); - T('696500910829095709265254100912961.759143821807206113527355359619517140', '1114499552366341774527606900484796988675131209334791717032223696865951521317145662953110337604968236933370458980418848545855167865.33', '7.762499533417764961744733643290572565963244168792774190520762259732634644303990430873725013181100121300237274692989559835517257654859131921380793007417874521366460660750927680178271377182536191467562e+161'); - T('-70.10', '-2517567781055870080456863350280219592820297586247709916931434675762.61506437297379043545134128087973548639372915', '1.76481501452016492640026120854643393456702860795964465176893570770959316012545462709525139023789669457596200413415e+68'); - T('0.000000000000002306594150940581693662924121203297813803898269978979627841840215966618235769199313660292073294', '116992676693387498070382.7747684654799920318525566565823', '269854623.7638501167227065187659703931498533193140103582402361671530932334102659535168542374567463444185883703688336666394633637064104492276191430962'); - T('-0.00000000001181358510850947772334650728239469358105', '-481890547669680463659904229596086456299864735360996516824114722268856.54851170927985881751230609513583653813147810', '5.692854997882013727740130126310283585722443259230619411261749891601386990764956284506368357210347041750883604578383235465621769499444496072167018650005e+57'); - T('-1834.126675', '0.00000000000008674517502282013089240795076167689517217195581862368207764378830001739241505540256750749795374881231669246429195318071966775335388150', '-1.591016394368981357967569774740781611664593018538591570853258932691148023923957854519289902594786129196141965293563166090383235636747739390125e-10'); - T('0.00000000000035250317144887670812951006342432995417313795500599613972504272719157358113604799695738826228638715709865929871185179926814011340468405980601224', '-0.000000000000000000021272512743884326405045478763658819652652411080930898072232071938774490149150675831747076538', '-7.49862820690587140909540970755250892258210729930767016105970954978799195506491402524535800885748254897893970247659807375624928755168639617915215048372226158776475176073323855448724956084743637169140454360251047844711344183201584482512e-33'); - T('15721631316833446647076872477517236.12954053920703267418936679341513919357706705809389209070714586294463311338245994298023554035379477', '-357511350671198870300372232100538.1303938329586437211936443603854018463080112537158549352615274628829848363889696735642169838', '-5.620661646835744415086989091837302307955447632522363902002938200959151381457803806059537394592953324800087575638876011854291111449657686052527475421964247595605170282782797258746087685871582969776908398036007564256205557694516425413130055587991480013614726e+66'); - T('3253729487345424036939309028740036451', '41382.193', '1.34646461615119395163461615513962735242317043e+41'); - T('-53618931066856441239525329925922774166747059804.731067937979588616198646926180', '428.71708', '-2.29873515597039782674008800318782280462672325780696736316522303311379246101428651544e+49'); - T('0.00460104302362018630202736794501376789373696947488687556056401041393190634456941939438735', '0.0097403733746400832576516808174515324023665911967721621686382928687157274600680878342008', '0.00004481587696284356635234124520882413754979811951974130365547261171837147431228113809768987174613255553265451013766186937944499945070524997906900028884951249482196583289287988'); - T('1677453254494.8933968213578859249745170393218098919671494230225238019960047762641999542148114948195560618412253838', '21698.9831813409037769663882983019728670821859931084790618654907569761557036686614568057014715225588686176', '36399029956770254.61815647295605403222195084034899389723728455774968833742619776793560171529933737657028158467430352145406981302848175254658241102272245868058796169820204651822347385243123767173210904612588453433543488'); - T('-0.0000000002919695530321722484984277810687310403212039464661356722375751251668297055979816704921817077930395835966342868337436171143003475385582696559', '0.0000467435515211462536099607610605749574554406010634606838859023639329665349097075031538491899684093202279174', '-1.364769384476538686936225893376326381400072912004108048321079964657333163471060859282060687267616249897947560336772938595308007366926166649543531172638654882898076593187120930620811092498003694929915967620884049583354836924979303135355647162266e-14'); - T('603854611243120547.787810466452796370957795270702329858515593134870178861102533', '-1.443648977792806959560328531759843896504517453521508829432901295106075946137', '-871754092256603815.457694771840809554026399109994406269191599674109909866767981863687374560559981613911867626356905487893301607765864732838103294942265021'); - T('-40.440526242216028465959594055135360244752337785292869659524201380035562721496158514354001447065595303342069691098', '-6241679606047503379025590422716839198006778643413679187399633462', '2.52416807903868662768373787395500221586271219331254483212435251241310894921233219736835628583965316050937610054902736153912767627312787284137615949322472984890293258224764321276e+65'); - T('190202434.508038647841031698547078216727', '-94800.49', '-18031283990554.97275426724712779530301404579623'); - T('240457787673551.0553964370137451859068301029702133344054038041468987152326', '-113811730.49021', '-2.7366916924974332953445795236260775735980418505302834775806957412715746250777592172846e+22'); - T('-0.000000000000000037347671655579143058079422192039757670106144334496120979342554992077029390338777020220866582016017618507350840075639338', '-66002749861804986801728090866144973725446555526.44841912823309868929360696717462761165075411', '2.46504903020401430710916622478946584523872946340038310101035741960964095064955939570946178742591696202144017351188867915011670426023840138265647815988159839485263479191111855834656201283339042728373652808117918e+30'); - T('2217096250855392361576457107363.550101329506097526554933312928808962970058721968159857675935', '-119.02573598179826220767289082192322334412324905093960546113476851847137178273867550322447', '-2.6389151300054870078699458746934883192689259758705923255722692155151793736620554306044775120676679617433953726881548219320386556081319536307857183199189515857363954254037282212945e+32'); - T('-7810543038413013183543974906750692474736112.830520775223157129955459725598357936920887935346548627357711660362938363582877899220351', '-0.000000024840601734880447844125586432330812489626056994428818563969', '1.94018588950360699674928168207639163235428509329502583916963340815490425553873121778659312254666940895194771657722665285619316279071834113799397487954421488584967639435397144832420520133119e+35'); - T('-215969900665491429229701.3940073328175247468', '115249.193647', '-2.48903569037205758977126520019369452248876591678435796e+28'); - T('-4035575127405764517339706203.4788226338445902', '-88902309983026598393661019935338468232233526534344738519100289640088125353379283048690019987369761984422527235042814970844399233265479337257', '3.587719509364193355575242986206913087493287494035221267169492881995478618778834577094297983987290045033929823209982268817160327957706935779582674240650855654673552267470295842307570814e+167'); - T('-28499916611563776888621.53827878180215801449832746', '5995.369746918629670729501318845959128845800374147641916915834504403849426193388405031670359811808264465541348192', '-1.7086753784267317072023465954287299476765112854412427476967519098923744309002169668338318340958052443834272196779007400662171578997777665622369069868825749495232e+26'); - T('33940277567855896556536207237998924729047510555567616051277715731698465468759889055793654824231539562678564552090900045034922322.1690641489242517', '-58557275066496364264951120471607827120696885728717812654290030305387606748831.9183665907629793676083704092979597697586525', '-1.98745016937417395543833870238306804764880834969233299088069121150704606919273152334891301543693138976149441332170609730695515633779077917894486225657656974898750258313446228915338253648124299689091087492416283574756990938405638221490525215652696287427161316283425e+204'); - T('-0.000000000000000001047064413365314260621529874256953696906592212846819', '-434397528124418421.6091661017223', '0.4548421929529367773911801643725801508623453120069985877346513296252893958219763637'); - T('-33370590738262171579.39614973283917480277678311111671774535779751556185640913284598686491', '-99094653.33173767906444057476506', '3.3068471206833860362071327479835859150736781389077457604266441207582457927611004156098420714391130319622364115692080446e+27'); - T('-0.00000000135893504172734', '-145791096031983569080162023719458335233663720930454033985903749.924827775901017923575087659941838981388109045', '1.981206291696982245471792411246101316206613787316920816048059429054568140323128384390929922747612723701453667023730777903e+53'); - T('-13865781910.2079575101787283939774081870084', '0.000000000000005111340576657977529690857668009570333996738347099523635843713836084214963667601914442680495175289459369931831218047341605612305371', '-0.0000708727337047360947483712809665199876351338098500645907437129231083200095113355222531742276112479425377592938317792723399224219930646266745465349945511268888900466157421164'); - T('2221303.063062607', '-2.525965215750429650596003299885690890329317816527744727340100271151083414522167788474814497266651607680421514303744', '-5610934.270936028330697409054729056703155654194124398987862017089179613782122545869272030899868261055124767892056053009313886500608'); - T('2955433876854127435547184981659750312874750', '-0.000039202878947452162560625708217061180169183736624538113434241595982106528764', '-1.15861516511511599582586163812175464411359319256995079161567403334139282606046617827274676780880858338633660404309e+38'); - T('-1925003256423680784876.1957689269203', '-0.0000000000000614144439205338076312802493579740530216692609642343477458243733481030491978062242259372884320561187326591221623660', '118223004.5384771047512790006924893059325401413863133808621379188835488070846162209706362064697933581769897034762423998928884355927161113795649414298'); - T('0.0001074280907302126774691277050759016234153511565364175703838489020817316583420637215', '0.0001532977223327450369874510044074807629409774927247949577150151195776859623266960380925487660870709945455405380437750382992', '1.64684816234970840550538622604713249522114056250203424510426725871022595010818109545611749855873201375214405305332022403202928107807661566637499538331414567985551667985554396394756099731355830293824728e-8'); - T('-51719564234003853480795874799029206659495378941873129625597250275327964731715068962774998751', '466532423420562663.592331220126361', '-2.4128853640345274449820011797672270168670456082913030458542405572274060582037181131606130323033781460111131337883517837175111e+109'); - T('-1724059986073957512357853.05703381906907621063941826220185749299041791046931825802106508069', '-2665994918609117220274024374289170787044923934794140833582674324712895082643859871981.5384174394916234884976873', '4.596335162250476126397000620689369599669734677111641881617412368616916429689082558324657810003289232013968094235442049486840526116938235377972333081125575786496773286246190410954882029026469852888237e+108'); - T('0.00000000000002795129561961146401319754718204318652084938036308535981529129883306076220009274119013027424', '-367284334695386275069239735137863507066443274836293057467619925457742005840610489941285870890827991341527453.1239055840633353121379761935', '-1.026607301552306124313300154008632390701208483751483889410351517683637370661669822560424911336313305943490756696083944005783385779384493150385978269507423733524787840537586575485518520814488626005350057699017603079788874630544e+94'); - T('0.065024658867154009934139288250506881782640024913856247796477081504212332678', '-665460681339474763575385930611037367230025491535512485820105677925713917024055708892630604.560260598070556046', '-4.3271353793603226678150325769871841452491924531112895833715271367485564019397270216591883369859017756012808701471442567394097379898539481503530181916728520372454137708175982196271188e+88'); - T('-276510.208587680613648136603273411746807332340011833', '2605351321798093.990970489610', '-720406237434580367010.08789881220282603686585579572198020594015398214120355513'); - T('-1141731373426523828', '0.00000000001228914544864000403177026028329087085', '-14030902.9113140661455213068073751399665217637223956138'); - T('-6945202132900812232267754762195507765101114.626933181713698994880961083764777532865251281976086752243853355949851812697573518483229325256100662271783', '198.500596182566233231418150714777497924550531544984107394883271', '-1.378626763989241829423752237699325897620912267936419616678649561070893719008729731590007841901671107837003264905764835754363036476641340160319240720502391830298256035482481144857802524759297321191775928962042193e+45'); - T('-0.00000000000003508292319046289357668381194881192144875489890254082933630984748085694196310674317752270255439632992013292438026236847255227135350509221', '-12646.289', '4.4366878563139579594698714752632876528625314168731416208665252478883885572167521207173040056393420870934788012794380752838459114284655905930869e-10'); - T('-0.287610207934561349588295090691549344568062900733', '43561994519313302798849015634739297829426206398579890440129222701736044543165037398693801937437.9243029452694915', '-1.25288743017439209045579990822356125048347677549255399828298801437378973121007271697418144364441489766184499365629256770107139603488677894036054186818978872695e+94'); - T('0.000000000000000192', '-12108079130041324.8599910305913709996877522568944631978562414383996429587415771634862023459492435054277466841987842715088475336753781193', '-2.3247511929679343731182778735432319400484333237369339883983561727314480783828153893508504222547530421273633661665801296987264656725989056'); - T('-20568177346839726327867757072303820722593133821514591458610274374266.37198646', '-534342814455338031486092101151521752991657451149454616317240974476834470502228759280758223653930620503606363601006870', '1.09904577717268667573895775359758445299657810692590923812884672106543889507154870122646024207383034114557837930915217170509202835912718118550506629814473881108189227609033460252466188180069802e+184'); - T('-1182.3299256870', '-147162546450055552210266162228061556539.797326023627550726867910750435749282172653416371899801978172967970344774632377', '1.73994682608203866701785740185594706489760121335556873257063559751827647851659356907682594962027863260816409968610867061154167999e+41'); - T('9106311100510091578555175.291251271962559609876', '1014206950166689350187558262800656656127736355378743002804820184380658978941538.13338393728923507197611', '9.23568400851740850405690546305915901453077329283645359090099261781771022159231929782452163389786781433252697559132084134612891947899159122199206236e+102'); - T('0.00000000002380790398795067678584772975148957851144823495943191934104092082796285119597281', '-311335492270699981.8187024249236948798391482088578', '-7412245.508022185205534542741414892061741870570633829375932307947952750675656606815024557059080304215250354778137764084129956418'); - T('-459107433083516704803135533549.9370726940122774506638331684', '5216864295258985882129407260355552822654299758311025336128418645120106444368253186174452684656258241404364726655870378516906394208438578086566108931', '-2.3951011753414023938728351576018231982234001717277301016858655888837322273016599246665882605588507148724528061606913078187945915687420371837702713713354429660018711277008065538782057324960908955177252669804e+177'); - T('0.0000000000321891162991981855413480133794894989319146938941669481853712504240526430027314092932643025', '-134763534415664538713532770059667389.177391730107496493', '-4.3379190821968230280422342891216605083499498614921463348518339967882865388159072601421584951618987475295234426996826071260203876918460408411325e+24'); - T('33279.339415206582540482746683123451895750217730735', '2358123523728734728589743.77319797', '7.847679312915151656953999591683173680703507048673633215999463330697682756730860795e+28'); - T('0.000000000000353739089246492910027064870427354171506304617311189028621762245079583293104983994786058488849', '89.2', '3.15535267607871675744141864421199920983623718641580613530611922610988297449645723349164172053308e-11'); - T('171.11526841158167203333557925506243707903346', '-892230436.9596630521366514219721041194232334089033401680786089416696171067640821518918159', '-152674250705.335543438952814693411686830371790621030553860131456031688753597684538585227522590915650930288422940391639997604056260014'); - T('-733600573426', '0.00000033040751206672045761849003644598960142858564314273065863456912502993453964294661705657514355828281447882514699', '-242387.14031640414208016942107704561068604361659765821593779056830839506769730896756901035759801454275354730316665273788774'); - T('5.407060250', '894983509287282057739447083.8543243233619681646503346546908188657720214623', '4.839229757472768644941169184087133839458644424846279660576202729065982810949203575e+27'); - T('-808729895781.624674969350592579908381307343041664310702922570660', '-0.000018', '14557138.12406924414944831066643835086353217474995759265260627188'); - T('-7874173051342200985556358445162694781995734030142926506325840936292568550580411005561682118906679842482219.0492', '-0.0000012325012891970851064894932661125', '9.704928437140208129135757974157260618986599406272057601438444485095519271950063154371970461800830427187707721546146166916789646799572330235e+99'); - T('-0.000000430107308276532278514', '224144306746606979302588712185931212406889.197263709151077', '-9.6406104440292501862428318854477364480895829071122484854759676386315467059578e+34'); - T('-78447932062514438523504874.05548646556284585439748424869932707256764818646061107800377213587367912600020326136', '-3618396947489172957173653777903437148775132', '2.8385575791184026440804730054109713727456120179794155436480050335238908442702365065025115219164988251654681117750347278731430170767508687816655566449952e+68'); - T('398344525499512577582336511121666224709052905420447547608128587685795296475632034766287454674444514141282803194155553367745120537420220770', '-27125618478287015045404726742380927685738591197795175985782379683976.193104266048757690370843265062495822', '-1.080534162161405142653380276457947626239920154503690438713413845124333388848808189678412350793281352453783298170743129726689403893393610196781463690430258145190692262396630679800143839228210109253361757862038429643553279024184277250644262294e+205'); - T('560555227022785413491923481073654909048982696.2480925260763', '-0.000000000055945909195749319312168314920740513457467773655137010097489061064437802811189813038277307920819234756363832360445689012158203384', '-3.13607718302193977963347461210034229231284614823237752102010861278943979945733599665261238405005674005758593157383769276422304789339955395466489473545510344991715182034227247859789021992e+34'); - T('53683812799175377405416129296695521380051667500787926235235161394163291.6772285236819124409364862784464258457438293794967799666118416541092194902', '1002085239338631.91098069654292203203638801404514242082065101889787248609067618438261168776', '5.3795756397471969187136355919525769970238781938603258307213243094992246282155354543484962264142098786182227068998815395594712635092562656959880937968190303422424114781273414341203880090074688223986213775703111763870360005321708779952e+85'); - T('85251406536953414226544773130024365036572408507583595068846068418600.1205319812043138751554685608133508306427759344342315262715891140344502', '-14640.836750817778351989018346781730874633202', '-1.2481519258851345347885051287664718872340382940818875870448237208943268320517859270539035447679237658640425284982425765828931101626280359992735997817678878451142046283911403167355404e+72'); - T('-1168964957570.815587458251340', '56538572696115.72608565692028718229319011374125733775862205437667843677102186943732802', '-6.60916102328293923983280676454563885183081101391883074333220411142712357555724202247544863269382868083511845468e+25'); - T('-0.0000035740568614143300428297245610418', '-220936232135526', '789638656.3990059006672364554989705373573509868'); - T('1346034386225456518679533104316275599194652955318802468313820086088149624400847.185', '54939560960135761994417267108815425036339300614381.4483866588714259041240857418173085472293222902548715740451745805798856530861', '7.39505382164723930246517776761647354791771483640955760963662039805511757685269752798232203634586599328591387494964164173089232999789108334073422192252509759081688578894765226433014479831461369862878497476285e+127'); - T('-155646778363951461204593301246056264317969228058189198896139899890727803045.11936198483334033209653315521827243605631548584036361770', '70010086124901511162734982850', '-1.0896844358323698924028061858087281789212298425539029658881075600265807741939071442787428242144667285959576990020034537638802277308860865062577335864173456445e+103'); - T('-96230341173782142876521207175875305814979162902343913723999663923462086933.11747987173088004223522808909664360812790761033270386408', '-32312766854681308785639606074893295460039.2098266500874834272005936578144638474562541816848168427108675212737366956591462833878750808347288369144371132', '3.109468578694861657044341174482395073888223668003904483303702568979989305498812009034748469873885971391784305796766553860166319366182690854126591215571252169482729464411083827831940112574078691557408084659925085229544889092188654423122525035195011188050614487145148823899800373856e+114'); - T('-0.000000548494172595574330396761429371414006142446808314253568896786945188386738792461354439029277', '-23599662.27946574215991340', '12.9442772355105479080497098082314463897599465046293055191920810370276950781896553331072508851470742134787983846118'); - T('-714491311271945967722626072689371246725304', '-354207932078705268748581131.065984233837379302661', '2.53078489853838501514954773016484025244072911508100754790233958626529737581211243343233944e+68'); - T('-2652957183438', '-195185962067717725512037169887386249542535008172118583806939423414913218407717522397396925805258634149', '5.17820000173808723699241726590004932229973891258816030817795368301911879552134013341717829627238806141061924024262e+113'); - T('-0.00000000000000000880590826878036444443656266764836587490740155586607932367514263056628321181262993864472136637', '221.48126943989476644014754266743958579083215022106146593457414', '-1.9503437419407411606247922977674915717900791357974569097861654104985704464836690328779827178384445759527338871093471950304259661832134813136971685648676718e-15'); - T('-347873602.23510519131378528375967688328126', '-0.00000000000000345204441953134921260412723999268616841434091539516160053217948913648444927706020879947861434828121114161104100848431013272935429403082369582072600641', '0.0000012008751272979631661860642678932206188355136599447128288384619284997247859154163277648673794145259219010025658692572618722220704615506152641552019366413559230553625413995603960631242165928766'); - T('0.0000000000000001442618965364152298486684187600173330090418464315351795690935142411476466184129035934014488253341654078976849545022104268819111681009555', '0.0000000000249240364882037699910299485535757120039682410050255081964884056237893758868', '3.5955887731310902548303070850838164719748874637094192870760300960851465410299817503704107844345957619545899785709783227712047477876114102968736355229590341265414695145023045767563414004483980850712921197398374e-27'); - T('11203361460741696775550516477439054249886501188874281520876798975981497083993389664224944576772981555476668884535000964169301021', '-0.009425091022859976408210896617129512523351916940774040126129926398280814501901637533674397', '-1.05592701529491998289184550400386588919196745317033009594950262014856245582393791969590569776888682089563381256271169054068993633728958894678614097027273021445496799602248296257190716802772690940886533141705293659337e+125'); - T('-50257275098882173690313530324319207319.7', '-0.00000000000002613102305812786358153112867873275089759049662992988804013925307324391675101078591150104728275428248350857948737528851613002722', '1.313274014447565385918882096099252569252443657688483069512563244738248437919967250811168909580079875716332790199500861141616087147571179420643034295663475485584242234e+24'); - T('-0.00000000019732481798', '11713877058294598799452.6300621325958315801323987275857206144411781296421875252993224990921811411', '-2311438658368.079557319116750642590563091456361363221635925091739233848401495958715457150683358908746196978'); - T('16669921204672133066496720461645831860294144062172262348452206781980345719813505226331586428501288033918045572872571033439052885163185959983499', '-251909114234', '-4.199305085019531263164571072959105073744794265399005234122464071331276442675313245235919630379775040752398208810774467987877807125340295724868202346024766e+153'); - T('127594991665.979', '2931972609362423110559000705020991756049379484274406531578719920328328631360570935031987.8511584086593935337222578544201427', '3.741050206564770789405448806731198284533698395535872424847129715200781225838343397951497453223347295962658413239336292329816540879152033e+98'); - T('146200133592544330684264498065226245560031705674109303503477692120859154893091630.871735716026997526317545935283624142687003866188151982212989698909', '46730789676874137872952436533.29531686073021669792243838852461391282932511897427150915122385179702857290277711857', '6.83204769364409047271650618653599900430147034336920824087779336527502529052104798054004653483290666541743622267860756708314673328113463875187686742000697177806992937541292873782614801211759243277925667772455483685539661134063357932775410662696035415889264013e+108'); - T('3305168235.08883', '-0.00000000015960253276367470672820299075290130045238822873945326349880534378217699817857400746554521112484146318053536850963687569374932812857474', '-0.5275132215302218955363945278671543840140049260367406641422620161137050522156464498199756178493590046194472374663980497123349110510329792890451941542'); - T('-14662664077162165311256', '0.000000141784657393925274142572490861043212868340562120628819802636951941686924487200580031', '-2078940802662653.108290285852001564512570305578867791848575532841089886824260278364785279496635830853128936'); - T('-0.0000000000000056998852880676332652472177552050285678774883196500512', '-36498373273900144419354144402538260265.64880867165981459073157696308446822865007237717278768', '2.08036540862304331717677642102316632522246004626115723942329232479603003027974589958566297786436869850538183264991752492295191922735133158729216e+23'); - T('-67968411827513303349511763330956716200597055731528479256856033995905188987752276494336231454282073.2592237192851649247647340481118', '-0.0000000000004483593999475811573860351927852363194231748110211408', '3.047427634237394269949752053446075793452954414318045278492820191953525157364829988068926830766709378481812043618023757341388343262182042155382714412297436468809738064216143412194144e+85'); - T('-39147071622153.33743465738395064998231007612242609707852571665922928037980935209746718640869047087190554662186743691289', '63424511281756665049556884134307448242418039636636009044809552022044426453480310050617427620937346481967898179810376485', '-2.48288388574700054052521039639443124893165696752230434717540647035194354741975215494021537917119812595584047998724074329330913195295973963059478012613800118844862490179027576674476090214756182225141979897773406174093090617028873704939165e+132'); - T('-0.0000000000000000000212', '166963558962441896333912989698468664503074325140998167446135880665447621153757238111137.174513086233214289455390442249465', '-3.539627450003768202278955381607535687465175692989161149858080670107489568459653447956108099677428144142936454277375688658e+66'); - T('-860642938911.89435988366786337586704323346250899248118740045', '140830725536103329346326306.425423317117473697116679279', '-1.2120496951448633875490135507286030453466902766109934494954321323997081079892561368828279080230440233059839027555e+38'); - T('5120155281492.6960891', '0', '0'); - T('483497234304151.93475846468237990040573513326581342398440051651712771865349390238040778985950490599787315241732009163910863036888245878997967132752', '-0.000000000000002446148373855415167', '-1.18270597345669190978054478684634031633264057012297038134354632718936884883092588556284387957205148298464894749852350309479922902362917548718181008887660019563249584'); - T('49107229571.216725255807725802556664025020334907', '0.0183027672070302023790702223019211', '898798191.0241693052645246478450553949374710665324134212540239364754063914898377'); - T('4777991472272023913003337327759575484434911659878.9391160', '-272.978878813339754436881', '-1.304290755080515609320060076869253031973150159686523391389068499267988263937196e+51'); - T('691961893816226173138683615558104657029075119080', '20888395139664451446632.865882039316262400286', '1.445397345962386803567566022135550445519666093682044976235972214321728596830297084207605688e+70'); - T('0.0000000000003033805695921308583790907838465039054504904757732225737126675767790336448122804692481183103833', '1205.341037096038791925207662937489878783324398262713191296436049856974303800264977495244455397149', '3.656770503869659792755630630441878632712190709939383192077151780666062487640831547779168381626737843643632860934266858208328198722651475946630361327414380262986385955514241668191884519172117e-10'); - T('-0.000000000000000013736762253040628738016656811899978900772420917465579992026756713474712981645066867464219941729626816955275801365161507762', '85532614698100819357606499054389025847104053990809', '-1.174941192988739408334389452599416522954290918785451326292660032528327766954585591614133632582363824486991674256064796714808554605539806946168016562596219749595467730159458e+33'); - T('-0.000000000000000000015811255247299305828768713319620074244982509614182062286978069545537489406407030102060780870055866980118153434550305', '-401137413593688737860912906172596426086830141009', '6.342486035571282948613963880018634581799042582084278022045824002489491031661976947293164151517578765536914386152201758345969760642775856850743822412630635653957745e+27'); - T('868871903240454856454229094081624011359909603881418403823490415408076494742619348242915473328227861764639800179679657635955448452.19436', '-0.00000000006357246685755280701854672125777125138', '-5.52363302722126457498705427469309802606911867827348426238286090544579757343893328680598652010805938682728728170222222699144643350355823304335981947914590621447842841782168e+118'); - T('-817490632.47780', '-0.05082', '41544873.942521796'); - T('-2566509873328000254011581163819375336312675622809818.499935237794106355143', '-14085586641244278298102529457882882173828.1386', '3.61507971863704252530700366641383269581722371260221251588353625777177940442779032699974632687837606902398909382268198e+91'); - T('503419281104.463633640902474726192736893485104591050840525886329718599066457645293563757497708980772570127618974706495417595', '-121337599145999931368859624997930779.73179', '-6.108368693302086597981507602493580554469919267653677670683934587044246440236052848418720220332789575988975507246301734145970281303551608797453924222097493814684505e+46'); - T('154.0752879034465903', '-0.008726217915728513196107992191445520422089690044688368256659372978169115950', '-1.344494537674084306953324167403048279838310386922350436364043480401117060195371791792845285'); - T('-0.000000000000000011925048592029545210459398688308718254092506044948381860935240918133166559166620982921389189346569737569028538401055', '2083276415584377368536532532727643929994867840790251749.88373757843573756621600', '-2.484317248647283703600678453474259458742779398299485727046453258915073511408926866511770738523415042481132395288773086582850710882881051220356645201811022177650375833106965396711340182675788e+37'); - T('0.00000000000000446904154566584455897206481462213986849554065179928600359644945423277723320322131526226161353244832569', '2848064161461423289727866756193778408645084968560840504840991868260331965438561614918967119347024529487381145007808689.574200435202790467855', '1.272811706229305662213683326319709782050267108388413502237287169373774908480672399099191144562736507324487505708069393969774714426776963142634656549866268950975004320862082201493957308813283909556739183697464382316012026987207034028651569495e+103'); - T('-0.00000004733747496524284528744980210835293091798469780', '-60369256501669614091439562465874779052299549893280439175064875222.062643118496795029', '2.8577281683181092272030103013062657800563801201278542890132513734588525148374106855868764763504825752739825308041149449651072362e+57'); - T('96456491774549605983464536192479065464697606538688448511393590515441846121829477068030573224599124', '552591880159850811255567071754556187177795094968199872657.3807356618203751867762303325381820718525675700180057477640927815410828', '5.33010741433215513846896037986563851532355661394443362975026204428856124749065340874569306244290877879518226101551796386327528977418142095601897892583643746390474594920802738822250754452900709400116274658794833132949668914672e+154'); - T('0.00000435296825302837417997979246513279920760355177075128726543859320043830213235385947701661297471019483638796996791390033912786070', '-2358972609625663685288774473895.6434231', '-1.026853287946401014950993771491057785216233603666290400912634027422541733751360917945594249383195357423341794633440301199534687372368265325725161906863912592796217e+25'); - T('-999234622854868865674773818245832433202378284835.73666608911561114433921', '-7.254', '7.24844795418921875160480927755526847045005207819843377581044464324103662934e+48'); - T('-78760433369517189268813718850989812439872780124626693423016073535122', '-11.0900738491866377', '8.734590224618892006011443929973965209196433850642586975929968912375943222522040392994e+68'); - T('-1510939307579695343987573960', '0.00000004320067801896720565303672103306587888166187016245346353772091834756228523943136134993165134358763411118907', '-65273602532951674469.8274051759179425105664207275230087993219234918464759004305190552070563017062681064499654251448984977190801686172'); - T('0.0894174964177934303779732054608056301726883008695547961408331314203105438641593697918217224788171493946008016972690054132568541347357906742329332833', '1542.6581508582549101995706396231', '137.94062967824784574736167582697025827541997000463104865008652399044560913829513820967821268072546354439954364140784723516217249346765923537667015058098902147542450230708975752423'); - T('-34577745227575239042650497034045377305765805548524711395.5081303310220196', '766658358890973242394467250763846956795577882707608858967751880636.0954859315385805368772376186546221646109', '-2.650931741032301486599844865029472285624680782442203783493297156082528515125839636070674383514156414623150702190980592575815090407165174168924973668598655192785690042142376617364e+121'); - T('83.3290153999204844106326', '1311627337486915320509440687345026266029743794924400721935513620655368692498627634744007885.7578920', '1.092966146044038692204564531458641541903270444270154411744236954983690234590929647426240374543484806952751680089941624792e+92'); - T('-1192151.908799751109585637800720757640651255179973011410490516408835753100899', '-6097036742802358386983942122025791952308256986659597643479361457987833051908958694867787164384275533358919693.249523575055559871322198016668187', '7.268593990954048718183298042908900396708340089605455889963655461676079135319303447970644868475734604822116794986972434401410410290069948464123089061651877757219473044801702473574398904984445482549630675240973614400113e+114'); - T('12873087032432609726511318658818382838704088', '-11137.85789449932987810195', '-1.433786140307564932441456398853868326855191909251446120695471457716e+47'); - T('-514407318470542052534960135899863052948602062295713.404163', '0.57617979470448909978527108240023648361885980490885247972540173726145900170394342', '-2.9639110315084366361019792930292554963023439694418106043485007867268143561606223483230236306497936769993015568968024431726476622934445746e+50'); - T('19864031434939435816482549499647863708767614292250', '266674221057214323300502059.20145204832171982196589122398', '5.297225109968493345109943564396209963433048692089789948298291839648394867940757685353484913375893928155e+75'); - T('-4754055625084332185755418342.562', '342203501523496667277706676371384769113403050858703638741982429.86030457236777579646956050309789441181343032128562816083443', '-1.62685448134133416999696896663497605074404274391890811668228808135026703965039960122943110479134355342110442043580444401677907314671327937812747350400966e+90'); - T('150750927242228755712.122222703133987729780', '11153110586322698752791057735178422360301.378975227', '1.68134176252326445776964103880327253856485045353577333614876702243490238494407508859016006e+60'); - T('0.0000000005454515643719086225314528110151760642884722399372', '-0.000000015543649516517081944335531513584387020723567068639189715742064587530870420218940682937593923251202031320330', '-8.478307944832903460053527019222484930464321162422574722274786852848535790350689038575946698474468453359077459886259429789018774414058766868470265072283276e-18'); - T('-2767036068909663273137653237379082714767201822111902341892857916392935025490148010094342382799970940711420469586533427545731180775808468923.9088539', '-106163436291247150687286.993186225478584736592', '2.937580574172739975981907042564559944340709871604734255385615604239771087687041986895276609517297709801222177972170328755157939564075490962060559952941922254377647597925548092640347481119088e+161'); - T('322929059228302.42232788641548949211838', '-18539056294225888575098493056536343700876218241905416897333383900668766550246400797654743627780376379843529081553892', '-5.98680000807490479064022688673406386728717075134452992916398938660729018368078136257909679075702485459797355840674648444941273018869686024213037721373496e+129'); - T('-0.0000119088486605', '-678482308015968521186583296185550742292089152413308996093003534425067540438719433029394014', '8.079943124988915136143008357350970716799926602463815180494764874359731216575673502367418360750618247e+84'); - T('-15743621782091209915924278', '3274082843013731438255081795999294296956951330200864645074905956456916040.35509269056', '-5.154592196364209761725129736597728957541850874359227108512452329645582903082160123855441179599042326424541568e+97'); - T('-22.04', '-5944551299976709752172805837341550253708966615717585971886595904737262.553978573497219171324864133558843421716871647969330963830798611962604850', '1.31017910651486682937888640655007767591745624210415594820380573740409266689687759878710536000005503636909014639851121244054442830801407655810894e+71'); - T('-0.00000000000000000555645728539942948834543543660522131579870362355003609281304516197635570002691794651513876516995679257618212853838', '-29306695827152569391012711584981295617371666610349814272.592165236226105635164951770704628516992499358459197490584668922484814646542200', '1.62841403539766953518495453372218761268090502299476097416218349383440252143468559124456611158096941013793431583395346583297449705537413859250236966991939668836100087684424197338992971973055292271335773446637724947073443337667809840027147206989636e+38'); - T('-0.000000000000020742270836226952980998683613591994841969458265756792', '0.0000085068798515187907992734965918590053220157266548600897228989451266931328328578374770020103860942048211855612454052631692704585242999552', '-1.764520058514448864430556069534618615275204892312035230025568038037623488871862099421613268028548477427078877470868347138110966013281940578093221932329336549462641760519469552917396957184e-19'); - T('0.0000000002219866544727448068271267401609565019963347224974926712349689958555511499', '112575212318901234841480884640021.488017899845441345152302010098074629364453', '2.49901947592318130801503047727550173178035497206246305960969166018454548964265488494296651336239176806475308333361242019778922151710635090703345047e+22'); - T('1315378829978163097323201091487091023884510464263405789489832239136944342027634418586990942689761050161994364084475', '-0.0000000000005431717253475371481154070141404996706352278219461841093282411', '-7.144765885648635691663776677388815688808217253830298250560692436430854724042690565481563931808762010822550658080798534063657410136765651632899419238667830655937868686635669225e+101'); - T('-11.974214873897', '-69620602709317858077606.7777617143271605405821834772501233928978990960832960289391723644435809527901763729636', '8.336520564915876725076403852155386259151906493644770055032514166066102032748457719926765893410251855328880867224141711492e+23'); - T('0.5799373425407396613321531402639174796275099785413933819926994175405948655805025226256707030596694071531988549812177396212002923068020219', '-0.000027700615530600411086471711309277', '-0.0000160646213575591435303047842679851674438314220751425839463942452348275488872543258932816330972165180823475893661313040152587644081646971818065194220662714757232798271663'); - T('3552978384198918.49229744871077180734861394888625630207038892347651291160127968', '576121651802272791027406554970', '2.0469477755224511189481484697284307523813499893489378816814079522112320677347783327847826609021022722640096e+45'); - T('-18851687060584485145327914172608439977632012360714293181151849.676443352833892494771644740339', '-710051449483.09545735', '1.338566772256972884671120004800472882868495911897525532968781498881932306536347328148798533337590085679119904165e+73'); - T('-0.00000000000000000288249562210477058762080967034190536380', '11030576382737761767940218.42753523411870710120067239740266744266743407186080051248604580', '-31795588.13253387463958232003043592787423655701203989880802112096311021607776492918973045954883598861925991488365393167246204'); - T('0.0002651045160796089842082260007521946896171492324757847312814436724243594046468985409527086868800904047336619267796004334725939839850264', '1.5', '0.0003976567741194134763123390011282920344257238487136770969221655086365391069703478114290630303201356071004928901694006502088909759775396'); - T('-45630450424356227610905727217979234106654796.6161863250137780341068134637326896292372723834060729494223789898', '-0.001886550312601736573060142331616041564292703429340077718703409523396153539560814169322896332023638792684056481', '8.60841405122272844640400481006709825973377910773092658383432035084194649814689826091063041039246763382818233815115923828311073497379982604148882785954606467953532261460988494258202205778413397486064962158760109228938e+40'); - T('1189249849326945544423032382429163536272388440707777088772904521287431570230109527744855960682093580486474033014', '6504.8683354042275751628267409987442515379734097114877784676929229119207894859954124', '7.7359136877710967170429074459214076095443123103950889587500385890668195031469937128361362071610022299701776151817353045025434440446556587282911741416992344550889955487947858660554683425301449736e+114'); - T('1128441920157431650427749624713171449845850142623381662768791487676773466730760868814283339962300837813340670485089015543152474935830631262056277625', '79061776144493796403585114968361776195990966081.4355019441515980323901471378982885369231', '8.92166224835496029459276238758633651524460082513027939264421048853489989185952160214129336946076678283640307013713880795010401659801489431413165623876916877756744842119523338662139879091814025301405422477576287618845313203749568756375e+193'); - T('0.0000000000000082641501664127551186707163886525969338633571732489264646653134052232915073527623626871791859115793743174790277', '77102203524923153670', '637184.188091283794704877392959386970281584723592270762046140361002187615856825504876006527697363766914328733379224518124369286659'); - T('-154596.64783108125962775029015421009207072050712414460575385753089518786884795842152456687953719640163452440709563114', '0.00000953332223165578725654281988611433', '-1.4738196597075074167285758911774621445701892232319827414730606050858237209327721967567187682158190683858892715205135805644946318114951019760935482362'); - T('626094027960191400373416029.419', '5878856.79754771959507653634625689098360680482358703172927092067871619778735053759313320563725801048848752364854140567987016428762009823015837615', '3.68071713217780322698039882190698318126112699362991022750878399644122991392056045799737440726628318401494664115665446003913196526833417240938632301385924540360002145766795685e+33'); - T('142.135419283057828760365017829388355940936300046104351305886714809787574819399072768256095762422384093950730185429', '-0.0000000000278515979862993195214307567411728513299170817121298333088852493894670155456948388404536227491002693927300401260266753267364837037', '-3.9586985574858228931018800299373061499410310433476663516734373778684106112589529389671174026955027434401703451041795013355130980833809943565348714743599848089313344119919746925003574800408491140122381937990968341446536009851615571381376933873e-9'); - T('-3414337375638988582664180574338695013525096328524003701356935598956539630495832919756207376.096050041684723108331618893085565788050841', '2373966573751563392591661339321041667260.9102329522532997791967528732655638468045668247650320116224114705207987248257276765954175435815311222155414632', '-8.1055228012775943922611598191168220209920422725184693447914123413517420845343602166955572458315096659666380761391540010074112348208219442252225691108563375371596959919631253585651006293756277244412869691262300395317383824508608721200136269451608738907028690741099725299413451305512e+129'); - T('-302467810214374958256067.032373830', '5575069632929333955431348.9768', '-1.686279103664794846091850650203678409366941699204314045597144e+48'); - T('82697078376296338907581778590825184109578442102991030323732250149625618801404609650700917759037258851030792.4579476961905660977126995470583812166076', '209841367832573904068305526440706142.946', '1.73532680422395935522579385025838046972848188875755297012803632653935308780712618867460319171676636851490602740492068944818297966533205669240452066743937774780200047624598512303547899896e+142'); - T('-8610723620694674804743328843770809170499375.7454758671', '-390208977887824714144', '3.3599816629058183220228074369266852148945886756309325082365153093080342624e+63'); - T('0.000000000001665736409252239537708350662977465625669000790963980', '-0.00000000005397325311245537834096132969282540541809141350200755301957235584804115716973637524555508536156078477308323210', '-8.9905212835203683504110846121534305137961327547168950515670333480752564275581116048493890275734599276350080922308328478982195507458726674696580816210133079758e-23'); - T('-55009.833387304033632191465037502050438168517958786455204058304623268020750747185676992712088', '-29561521305527851502676865044574530904951941035976693977553088501233865440936246487818963545187685243602080828543148264209993996454896778956464642639', '1.626174361692325529945956942756425331503823214619006101333940515950960317910361711714132411783105515670069490701197466001427788281114415821163283764678271096259297038980050657582474248326862791843561305280964954948600547092666115456335520232e+153'); - T('0.0000005510346818658465664306888534549271604193320861182474130165534720766271492178988616151168719125', '-0.01183566974341274034927329940717360016909321111795523305608990101374740733837917774832376107936390300470266447548265172072145593380615098624169574', '-6.52186451173066523843915450437892584263602058413986588969423688481780355800652939405885567360640536676093311565481528848197657456939614662844329592819951096602632005849951491911991775291110362116460575276787590328868726322084826837690275e-9'); - T('-0.000001849521254273283959945614449797', '-0.0000000015253958577166611145202508909209879321211559950068605128152947738844883802079744653882403', '2.8212520600273908617019782505256127608067239079286482382697098430394398747360047423507203058647464997472737712785222191e-15'); - T('-309.68', '-96055.1516378444925', '29746359.3592076824374'); - T('-168028626126473481129367789758521978889200869466491962302048311336890634520017.5719333163304589587068817821858799825706754229048601236351696679905637', '0.00000000000000040505144173091841345427692344370044084035179023758893212083311438716720662223829934353555898735535197317508971014099022876688542096545250', '-6.806023726459354860300059210154347949752163001995863383108662941548990570394989515646898112331550406123056248481183044010335252896104139538361899382958674774865348411475636358567387218161462977943906814852515597246369885881277132093738749070553676123096546436403361124299691370057425e+61'); - T('0.0000041405315442707777667317116430726678375268137201769082592971414397218413001195015562151372405002624925536507988661290804269379616336095616', '0.00000000020534154280912678549286088770865816', '8.50223135350417750807611605428001794994175049772882453947533102952716919656365787338607257071961225914246011148972124658358852928539815938659942645226103867281485281862656e-16'); - T('1043304625.7986054483292567142119628829071667318336', '-0.00000000000000000003922920237128071855393930461155089778347745292989380337114027290711582558804238092936477', '-4.0928008300346795587963967318969522795914555559316007448013653233486980241052075387119842284031574844035339709938086685807849050185342272e-11'); - T('0.0000000000577244850492733199753691968434531131534014494738041562671682385265947122048380667867064559302522087090151313923160444265178252188520771169749', '-2993829090737873263916664.0234418356069276036115961287838007488804067542802424350078567987894997758950299', '-172817242588377.90289435436410530982271580018756182908074690988652090894327112554557513833605455776187642341828319053607251432332962573366023560105756765820651824786361583489449624159271997847165480283033635286456942690484125635118492744583304951'); - T('-0.000000000019733986238945494869277217117479256444529951600715483268803452518656509029860', '0.00000000000000164627700103694856499141527646022342482582124935390975524916641794007931969687515151257818754024349160456008195507607', '-3.24876076839556011689439563662251683467519484990438085916787388341510942412905771246984808263084148148601145015559577022588882488930808591955187411190280597100157082627777854794533428182014502e-26'); - T('-11427925335330818004816066050106833418219402199072704112963107004970597981437954806793580004070019399256039487816876806901413994111491.92397663856039', '-10254398713648367399130671587602705.557162008583916929614232815559112128534704736523', '1.1718650285828592780495104592683632759974828335670562590852557778855769937220071548729686706912740577068594561471384906191535657977013468872849927726389729680735882934586903957393565745867332347237612282016833288027776053697412397e+167'); - T('194053275594004162536549158604917941716280933587153407126108810987941717.1', '29178', '5.6620864752818534544914313497742957033976450802059621131256028870061634215438e+75'); - T('2.93518376745944436515386335020372331712985006976884316865242', '-966659011212373171674223610192618777699658.9609647969094449683040295199948844301663048672586994151702046353417857765604445661', '-2.837321838378954758771215418938164310917942593004475873952183940640231881169627087395424110407746819193011896535794052106353148150659770269806093135838159918310696520280932274648614962e+42'); - T('-0.00000000000000000868510085783592320951067786028338014000842721104291268902134885144965679501434098211679237543640508019493070439633157498534035049527', '1.66186927561028596926036092509335854186047127558602856573976536260498222833648503213450552687521363067', '-1.44335022712140589682935718532287891186909515934902995812983197529942616459692310661388930461065190889143976230808707540505066234871399330617979826977854860688501351020336858399810037738138869688388995164376763031097320446355893619309e-17'); - T('-1181859428272891621990692513.97972526073548792078905838349464918869621234377765379776830944783886329774493550743931156263730', '2.9941', '-3.53860531419186480540233245610669540316812438363451970602132913587532937850467323589809531777434059977811140282404274969233993e+27'); - T('0.0407860495', '-0.00000000000000000067006193014429870550943276612546055857881417429492755101247850388305957467261270841516039308586250108088434662298612276060', '-2.73291790509309091456936475161149575524931645640945426945087233770604100240461282197497983428394457192787524651402698407269082497e-20'); - T('3534937774831542866352533130845566313027721824245809049775432305752915295270444679.5880933827075988', '-2.2480869970190', '-7.9468476468700692010170378639263153729049188935676493712057455085625903839492076731999624985988712896442479772e+81'); - T('-2313111414785056499431180531976979973.274', '7671974887242891859494.557233282222057816576248', '-1.7746132685625829899267375266227186594583558197192135674091228488559599633565223195952e+58'); - T('-0.049506264282575986354429257789413492175083859994025520010200438659280593549597224675611141989487638448856569022072780436586696496251665748576110537033', '-0.000000000000000002289376387781964560762840433567145550', '1.1333847249582310289779818259083630345427337255960896766203043455335894797786980608848419608105331975026702045607659909764116027289661369664795559011503382603816675539847618267537615315e-19'); - T('-0.00000000875646084168554507977167823489990902563799552509732315823818127203671896010029263145066030926978731172618906161505494', '-12149799422754916719269147530161643795542307713126182634497110622412638327814575847624536131684703485487672095750214266758123266193160', '1.063892428796870678069788900402015365706552939454485642953799687841866869693207537469912665183234951380917914005709858797891441500773219383040079223313752838870891947612334390210947680627998406712051291289215921823307231964371826198854050237980522104e+125'); - T('72132913784335037210708416954845481013.4936052396', '0.000000034758907396517145945375764660651269929701596542982929267988814344071126980935379146949580197412941449868688705948558', '2.5072612704706567177369364733761303227157324401681208246105574307760108529931727084685203750541786884736657231851778565267996322876935570476425834209668059168644968e+30'); - T('319.66733043418522086907604142851830292549270071301298537533804754923073658110499293992079580', '-151.725', '-48501.525710126752636360562385741939511370380015681895206073165264407033507768155053809482742755'); - T('0.00000000000000000062968826433918348928022932804766807886926653', '-0.000000000000000030428038130246925313880152590782914692618238491169604901884578172392510096079664807819', '-1.916017851748168043720386562747740471345349440563638610201143130913848507924678149083014143799108415035645952111410793293793899807e-35'); - T('-1180774887.3', '-1449.996894078842975987074068709452557439051769626362706935102826112305930', '1712119919191.295852285533989737156299954793129899433988390218967916669531638871689'); - T('3647164297747831538659156395004173038414109110759206277814463425856379161036312539485631.38948348284728053244339540610363604645614853959905', '-44392.7', '-1.61907470520630161146234332096501752442406021521200216529134130525014483182136711671623788583923408994470492599919244536883919513865273858746935e+92'); - T('17498312279239.00932701739727337804928343115988922324826729272279616797560451780334324648186406856', '-165176662774787477578875.101155425022270058043785237734912330043953397824558634005249868631913924077857553397476499801921399000', '-2.89031282647578469354264890469746211626219999574969073812160564852073608013566136037691524827633370435651099998507837807111037742964559522767880633090381980310349646177225049281653222840024159118865374106303342746711544e+36'); - T('-0.000000000000000000924379194701874135396133614362003093078303247619775269472734328426147105167965036903810455485324946', '-0.072771076651632335504153815223990944', '6.7268069232824253584377498803810917142357774490329000970581887327408582544296355494518772848722889546489345140622499161796902801289024e-20'); - T('-120631710673724347689914070602312.9151429', '-0.00002802807358811', '3.381074463822740563254319054484144416394255156390919e+27'); - T('512196210721455510182901457014276459874633282215822699880063790892256101411937345231821904839765586258', '0.0000000000000003806505766975721', '1.949677829934332018345035402585815281370286067595371424284055069028866856886403261381419605884609510991608281217242018e+86'); - T('-12004236887475073738586111006769029393080783935378309149099727.68396298775060968922', '-463794927584484417474190358889847435118899635706815444621012022509301590070944948658314884349', '5.56750417793349844330521891159840232636935946658560169085150684088850605724977314027337726117947637117197173970007342920606127105666878224551145677898907304818177310313201778e+153'); - T('6584641990290656838269978401214918847381615636.518803901787', '-10753941414172447057853743167450817.50583947377863062378420539493289850486515772906013498800287501534', '-7.081085419688558260857966029738760695277290042994837834892489736689162992602408154398193125842351999687246222800816463918193016012785992028984897208947841258e+79'); - T('-24326422199657762368640227996078927157504200019578797624814562110060901133357274750788.36441683868312318843748', '-0.0000000000006902888661514497196311777408365084768865919183378538264433157093409003947610911', '1.6792258397723212195313963158909185623783542066080048568383342089993434418422010559055047531507911817998642508826398204207544200195899037683811355076482082358044434397074053955290508934428e+73'); - T('21501938889227442926984999198582213780754593552865516434.28095561', '1275573970012590600214127925446975918013722828276558737918022879.290868107247330446595401054145784513619143055092036112746185085177017939280940668661320', '2.74273135518999619237055481685367562157141441273837681617196746425111391922129347808060414256695769199642463364622072974665066305632558241309767154727027823910405233929660720731520333952798686255808870704290440052e+118'); - T('-71541409973383879506417184487015218354.023574350361463350873760009451721040985761853384121351993525', '5992111795695111627085788865.512914195836892777247907010', '-4.2868412658217344634387154093342340829086139811418993420175349903462119580242132265078555221121329803402221988433584258370336736020674652911879732211025e+65'); - T('34142255447580822559151401211062905510', '-263926755678947832441215581540094557891886476037097583650654682043897799149499355822112508751738221779921998856296667571952006518196822431846845', '-9.01105471184188942905690908904627239542616349082031787011252961375696523930047374090057038095264861536129494798476922062541028503074147788683121044719759772706042769498406102661595e+180'); - T('291910578907226789405906209195597276379329314216442687970828.12263463390116587613', '905766156845279032080418309.2899374863460', '2.6440272319927938125314442437268631851150779004590992519957935351389114318457620877828712701683102714405409392300232098e+86'); - T('0.1447018135289410248822059919088140128370855413338568649453428485887', '-31531043177144606534540520126449707592.441165834043265865498607709043737814229488899678036083217728937497668745235164920031109748', '-4.5625991301921670224436171827297160639926118138546258979023381434676064727971907159899790572618884224647144712250542121029109924335769933935852618344978968520165094454255764789533981971966126476e+36'); - T('-431470847375352240973824243957438268864164144677055441855.1122835808', '-283926397264833307842262874592214804147456.35181960193341', '1.22505963220088520133492369378146202611227577382619697690196693448533411156116335413333343159557018405513846376263877954528e+98'); - T('43.645259992317026943608411', '0.0000000000000000000343476666438615307467230521728116897722871849771845212242115930032028373012984891992888161271678789193222138335354663458270965038', '1.4991128408007717160640135031205392680494419814377001223461964538550601533847575845289929527748139763281076549960076386814116184051973077956967114943734618e-18'); - T('-5333642642837544.62687709591677124286121489157762662337705954241856563514693012115', '0.000001092403520420007654847736885', '-5826489999.69800727677170880845575478173936457495066350494224786180067840981405695080871119365234031637361775'); - T('-72389949638529267084220162178469797619868037471866853897782590886837793391170450755475695445589382444913313865539107.825554816619359474078198937945329', '670516724101646254739075469170811171513447894797271200380414002599176331305558057030387883188608917', '-4.8538671889509795604939125299480164673783805114262471410372408819538068738391487961206173796503249288962752085213903270623213542356008521417558442327238499890085384270939054062390701273409174804755549787657232352912465878135282338593044925707898693e+214'); - T('0.00000000000093389590550371354609879546798604119093458584514838', '-436244725.94251597789915707849842497816062786670486162986', '-0.0004074071633553053150284952158066178287741661729136343492697908838085289189761762237068783682124527003386268'); - T('-210380536819319.64260798498975775170296381658684501981152412255070635544143685331980809905', '0.00030621239427093550265058736827171066633126148745977590497591435654761612693434536026517812303379', '-64421127887.4485697052582576831125251079439300578331516148925455276348682374579663836142871112701981303186673805005030452875519450671912320654524554714586680026745270896999533988168995'); - T('-2986425419210684489372385430630802680.1700076164378161986', '-0.000000000000000000174383713906052937878565432107027682509555072891773406016182697852642942595757484268776430171027151127581004748120018091764749919908464469126', '520783955905400215.3593326533209447186843411978634958052248208818590205254321998670705004791818240022569816115585565216755711284287526937950905747371255207376455031602089558157107952374519123844236'); - T('1005275502281605.7203063810011538411846251379520165504332670989327995886451', '-0.000000000000004001673036573006142766297120381368448210468914793665305672717', '-4.0227838718076871277132373250062298425694133513895898591969064598434150270288761898553450928567831052706301853626314400639691300657367'); - T('-592443055123445281554039884803217796883007011697299809752867837', '-128767025696067370042375219001771824840953470096164458063850.3083988758376157095926583752', '7.62871301025373359356475793746178927840450521702002697787427513491791642079585760593083059843100862890831979506992101025525289259825474551988167584424e+121'); - T('440119636500787798119778.1614067114799921393251', '-0.00000000000000000008016651264632167527854789402319094526310291781550499853504152970195676032634610434380960951927984204641071043406830501', '-35282.856405434903813597479779632705556601606542704671605957970152900017367125637334582859462287579739167125492423421901400646478981405910526064055108265969922348751'); - T('-71579.2', '0.00000000000000993906325920139009275587686844510659032911932338073755273459775736935248889756221559252800727756986462003224559457716', '-7.11430196843028141727391461541805973650486097872134489434700319794292355673296385342340680738522628853610212113863357451072e-10'); - T('-0.0000000000000000028252704404880797079738', '205661433462063.7105307433432819704421946280137966217786600779', '-0.00058104916870877463514486303435785934208231367367250497766551677412065596208835915902'); - T('31511547820580.4394382615198628132988414617215767834965945746200468417564092109397320304169501963915067332074901099286788653074716563043835', '39899961813398664937157171453593.90023813309746209966498824019924844847011387015958705088743565647183663555197208597527', '1.257309554722245458313010717601632793452987822633399487410911056875703458652204694414418020975982056391949850738256638817586034701650856414371301609334505840392336061143829107090319885694135741359164686790967904196966939338727755954779566674337378573596045e+45'); - T('-495789074385555943868529017377472010212654135435451505422731855063537551062677555928072920281877990746962752595360995056758586999317669647', '17819185082774026694204023148577882778297684550452324826832075039839807470403992920788019844375217029982704245209320846148492.201', '-8.834557278493440769527646032308030350371362475818934570787903683344802633346230326610094249834365327683855191264428319975098552784711089348596608431374093713258545096383387667958040878506159831317309788540734024264316478718947843168246822604530057437227626073923047e+261'); - T('-12262785235810622775007408988251878393679277845775461370985491116596241792393397087453508079734404478228220643516598880369382712979645406460335974', '-17339.4599485985180854570917062071088513028304627905849022429965380282572583049408147112553558507464317495273478217946882351121108297352639325', '2.12630073454603527661886448347291489452541354119893214674919284918523671819041714914484722504179832434598604666638655329939148126697219715586452788601752336764716691015791681243794848208962144155133293203564192719333981843088873686066209217435640467778541139472308985673249979514457755e+149'); - T('-114396868590854104192672352367580744901653263217987528344911658496559573111650716561664806136683756515973087947398968856550342371023724981841598828474', '-0.000000000905511055947334', '1.03587629274772706348234847002960858371371655011375374225792356944117914008860239779411591084427150020831085014159874092768298943748156678048631480006184964643588316e+140'); - T('-1112241862840106360548102452612787954701297842442745550953310708233414570014516673446141946344195030870599027775528597.64281848005244542515', '-6348759644967567183872592130062154839790.5635484413196596709331464307', '7.061356254242819213528914158861347824577247501609657702110667409707299733668207944491015232613785616142229000235550257974209644089293373052607176525740858805900274429133922740980503476595397297785266512105e+156'); - T('1108564966618799.684583511467562033896416379326883221554515730782746395008239020932004268892597106459172116648365972554761', '-980241488498709.989691822562361049071', '-1.086661372975934954665249154869827138993085763955003193792673025483663764315894189566505244862737823287988968852517424536981368134752599081608376589955677031e+30'); - T('0.00000000000000000002838698369819955658555277373271853993941828559300730453309757421421453', '43513833879.28', '1.2352264929772849320906997234371440706324351943721359734528135469244723396680419384e-9'); - T('-8511924985976613630478857403041973777452.09177107175699163666864323186579824676938621436941711058306956193771462975562483458844', '0.00000000000000002272278230386744849803445244424', '-1.934146184431965759189809035913423340545514889094246651943997790659345002151610321611910790026540789359818166350027713628491983499298272486356031374524485856e+23'); - T('-0.0000000000000000004316812723968992118505000444628085260048886312014882985221720513162602276841485038550245898508488835', '-76290177257460517.999473', '0.0329330407898855391252124225768438464877945578562524623859269076191844422317697448247001533505237464666728778267802556383955'); - T('-315381216106477443798809516461.945916162611156190552321997295114376958046547275354056014333919065425673748199256144380585548066158378662409475843035', '3589.161838511444431440733729960263707637958181400868325358533381567057455464602280029192715692411789833427', '-1.131954225432699752649141397708477473892667834397120107511962996304791377678417665209758473239521558381343101328776946782981992193865294194693770979873300748942276223781245879606796533776372414124841041914736508348886070269056497656762529089763048130945e+33'); - T('-429554289753358320963153203206734665772198736780.45185520786347258238318355302967532112035290', '0', '0'); - T('1463451471384605194456038106049436218092078691173664424376798273282402411629304', '5.34145410132810384872275111495210652002710418898122721083801583300401806143614616798518502693357282268142295737452661760061198730650979349477', '7.81695886392194762437336924065337257968714608565726584447407244448623703884415455226257285276362586454773057274509044560620808790280438685449822124417639104621469226432169534908781180559594976229125827018100297590274008e+78'); - T('473586353851131907618376944471474603970238923713969727224418527992189433742423567976837249481727621512554255639.8', '1286427255593.352272327514643909503984179320306560931658975694284708', '6.092343934711738377612937734307383870923174240356564095828149119059002227331699554845917346771273434048376444070758413332992760270463202297025312107690635975666422869160358961784e+122'); - T('-4048155812027991860998261874719005077642504207127030646327029367933424762620898655788666633040116830297381192885448334', '106705036497734766140329279268252590446.2335278949', '-4.319586136709639909348938311306692360922506424385494354567553905770000978932851239614330898183516223949738019390821277918151726982015490940436949045524065702817320966e+155'); - T('0.0000000000000000000915543732852883697633526279049753860806942872601198742215774747341', '-34152105784317312126489961356698852045721114680628002017655109882376030549039796836.83153535701271122760014588481469402075074299376935', '-3.126774641456043327979536556784366250157747125357071312778820430770070528036829464402201655884092881178626009467738410063014596140203388175163040146059581509034963217801746892436203877630743347979835e+63'); - T('0.000000606056178575650297523536090137837690540483833323054730991196951139940145168062878729776556286621722228058423687246723575421211', '-0.2110854059592627472281909321180610299910818145371006157746105830582652226002916315944873681237089216185278265414045060813822588197350141208020650990498', '-1.279296144887605810262234886377441922843377685091005337867319233708631851469414819167991307615079977909703057135546912192644428529187862612840717830395670958420462971297341460134768276466347220568187569616383072997479301070810241184256490139848082355340819140700544014708653078e-7'); - T('-0.0000000174023009167704116970725301110863248980544485359112331870888076484651233171728545', '812850723207869191281548186903956096.809765707322509394052629000163', '-1.41454728856777941909802731675169558153278554336163713719217823280456330004090313022045897019660317794534957404145735837838652198044782601796752835e+28'); - T('-2130698.0548286272900651895094179021589945303831135867320568', '-9165947089300259943733983387964594800521219964489263104.59571046797687349727612030295852399844295170184636', '1.9529865633834181981295933885978264475195798583990822467641671177002901506455322929500790695192903123945610282587760480932085484711958893867394353314006055160393248e+61'); - T('-326083155399690502439723947025744049762670117683.432074400669883911818553035189833194671636060400687941284537881087120570924444', '-0.000003445571861995590614007298331872337442294157873364826604749208387112491508', '1.123542944915909132217079826299777527201239718962104484441084589157856017183525173415387994466036390860102540946603848752279383640837621156142175767860780613378089921458710577851612660512939659621552e+42'); - T('-23.2079521420353162165629346282760720426054683804749740406', '0.0000000000000000100667680781319844905727827890837263875737788345658863306751556891847753254997696006873526462699281042889508598121471367829087954284592931196522647093', '-2.3362907178225593297823553952359877724440294726489222805197185879544455403490267478912169784494515330509275220029014923616029924211711606761207039492261868123451812767302600437565610895313205736991700539758e-16'); - T('2285581244840240639260487167234266.6210924312942573974763401176849472', '-0.000000000000000000918107', '-2098408139956538.8125895280916479508246913088182767764248101964273738189504'); - T('0.01199215867887013759356474044', '59219069282514349738400251796939074988014798278062054247507850372485277499304966991398291720701282976974931657695.89320830399601932636241718811893409', '7.101644756509164313135142859363774349015749437363131851507359602111507670252881439883943580721027909131341909904887723338723647408378876006443896747938535856090800949803175996e+110'); - T('10418927567085948892137885878723808945364687260625931932.039351', '599680853267121291448.38087680537808199', '6.24803137355843394317878805129936255762113268577294303839429005376139089696541797413362353758438849e+75'); - T('50831867721704613054022871310081961685717811744979380239875687986166840752637964249209739.95742211098733326424751917109066551862656', '-1632931078636285445774108746380428401452629936953024735101', '-8.300493658790009540471378875888368284941161669991237260884060249140601673097481745352940033672506184736998843139872004445042382050600280557809637308250946613651294900726384303212534288256e+145'); - T('7100289077488660412990.83', '0.842207839712975032430755755635', '5.97991912528935706872007298550620521929833614697582705e+21'); - T('71.01883', '1761970243586301256729933.7274571136169644922999518937631730701127745550670073949565808130784043676096', '1.25133065194314119280489519301543084253886394686592551344848526917216954629436791164270145276976454523688768e+26'); - T('39875156712019325311551200466142836628229123594325201379832637310133453471608904683559565236344258.967154811777952228563', '-0.00000000000000000070081075140934755506891264428157216975205610555238498806', '-2.794493853791575200615635819282954125975165218925920550666607458660524754995294291334846227959636949211292863866638640564674087684191891139999119222389967229521626102314595778e+79'); - T('5797150130947834056182621078494110956594842841052090075870166233975375056203178648058074850906399043556974734623', '5994943195099.1328888761373637634842940850229730116836324780692494703604483', '3.47535857284937649148307887121857419057110304246614305622459943600636593236940298049819575939494986921577262671435104495090825963819204860688181879997983293665235062953417708960478114909e+124'); - T('264016746346020173260674845542.56087744794671212', '44725565833116388541385131784578311136952.11515649206925514017678106974916075594822233327402018434035090', '1.1808298369744115980724840684122092341038122639077601880904123414433464879079693475998082113642766387031979298492866976697783365167381515796702082908e+70'); - T('-1204258217830.1047572987899835756536353', '3745937592881714229717990115898213651381593777161096717540301831660255825874475111361207039098321786912324541172077464946165364.14390772997939018900027', '-4.511076129706525686579204142051251397641532749272813862145610194389074922134315457597697830334597270566875350716009107169694204547970082327051675594936881425342543316554216670569498181531e+138'); - T('0.00001085056051858810623505714593197033408403035596225606886953365', '-392929408749548979689032253667965895311572351400702674561774493496364595721866845891578496858294676481040176.798243172529157', '-4.26350432917002414454392491493274497473851341095485596409214868708449409899775190195407623094650897889780302985371766392684564356442617678251382828651108441963579450892957153361763305e+102'); - T('5029414448475920188151028145401135310150737258101072206698406572639528330082067.9336479422747818663155268690086170021619688524908875089697158589347416', '-0.0005229224526200471446836303862066185994349069612658407253355478392257635933309390353751513396483385196163571877433495709051459895367873144796893', '-2.62999373863972991595232699135390284144005436661268919696790615365070651823630721931258425392749116101462135216825040904659228944045018325148257573243654477716244945479320745317393867583646412220760107366403103406898337360145950155726573614185125610071875889949474494080865196631936734378488e+75'); - T('-0.0000000000149459394556759606943604866160845855165524674884428420450005789266873424201139870021367301867234201955279838923502786908774569432473681039899', '0.000000000000072681121445777643724015525', '-1.0862876406992243098110834770746303342214020691767313742628853277726465868820586019765285955443439023247300317509304826500549194884609623643817234580349404842020431975e-24'); - T('-424139.3397723', '24.9352665519292948435181504860531561629245676859909123534754923791320492627466971516264644236625241080447', '-10576027.49238160664772089118930618199418545494982358874950081130097372753242050309994330560576035740865221100909622181'); - T('-6547933974356063515673579783328852017212683547729632232078003886270959230998276343908132763800852667899598581090407618744044143894167068562238.97', '-11922174512798027988.715520057164002099095961564815407735892440769625640988450493600253780499938690761112753154279778415248891368390538551750986', '7.806561154055215663901405645925227739464677757390641017715015265801022422067920560519544881469304761133200469523238148889436630472098386093418009954492665836535393992406767441416546896285667079520157050657599018677219464362114136929451396800416962537931259941624014093037081081406512442e+160'); - T('116971949153.5479374797237476837460980054925', '-7392852461118226343653879737274414841079276534234761286995956308826140702012532258763158080532', '-8.6475636218160290233694135116834390249179472139880806248404813419843222333387482382624808997980446329708149926437827055618140989332201e+104'); - T('0.094736370343830975556009350140982661429417188805833955451765939740836399749318571449220541572349173464405792553494108387767327206545387797', '-14063088472465823296636520114.7840889695829209677553679799383909290850887704576208141405158860265325506024127861905793354266036', '-1.3322859577055824770031704859177438035519692243531107997889353707418395463470343576295679587059797728931003195157525260292910231399354545892908442725681827168435407603526548235032165419174525789568586355685792534406527613767949403942954190037378443595809925962692e+27'); - T('0.0000000060238848102401094509085687708934429831403505207577935573', '-26397976144679538690.6353645112721463552724006844', '-159018367519.01583899352216272937345079686163173486566881281209888168576630569925947787199801314243061612'); - T('-3054832823620065247866462699675075655044.24965543051115834991093974', '-2755412779439299724.2984036924450889829105682176654094195240144615415006313170056714410711837165723063574799946207221645', '8.41732540125336804197906254683195597019539860395893943850239114957397624723405493043107443806607146233611284249167142426017200712427976573775245903141353510518411863114852845764186723e+57'); - T('-2450974019399956698469496563794.9748364333942615279874848551026505204635039431974104398444982010445818729382963397261226755940436258158321945719', '-997.24040302293', '2.444210318905143470429111243581921471467515949023475365592695716839122688195540502841004451264728108191685433698308378621706762322759533121835213000697233667e+33'); - T('-1593.003418430705083401260653839458373', '81482817738806321636670141568925456324894595.35515', '-1.2980240720128456541718518746184368534776478125249076285377131164060683232627757617095e+47'); - T('98261907174900314009700603815243346086200.8875197975215499156', '128758244401452895992559910962986981947835519218827223291426174867182696533638857.4611504455387701659979843027781766', '1.265203065937869250805348094516614652285677394459393456309889824224472248261724047240316582653646970392779473698285791164886759948690959417233989768983784053494623305125189496e+121'); - T('346496136331578345.6139565562', '-770.118198136243584727', '-266842980172845321727.9109640073233064983318371574'); - T('8094462815401859042799401705641425818247198451174542181431184727369479972319.283362207236223116403463114800998274436638818181016', '-44716739326169.50679740', '-3.619579837016970552211688799002785780552856029741836983454305219747190234820032824275611045529918418220339456506414179332920358828891256009156381584e+89'); - T('2729467653762704.3220008736708120084460677187730093661396089914034', '-0.000000000055233920094409680756264812311791211428686742640081962817736283081966745025774163718774682975', '-150759.198288205079331338550122412955542882826158428646159812354506434469254169683873619612365382943072278940175544745711284510129905967399982740638335337115'); - T('1', '98776520222261745669591551900242713389385936698028187815152403272299821654553681210659893142881686053028403096887300880878591448.26475', '9.877652022226174566959155190024271338938593669802818781515240327229982165455368121065989314288168605302840309688730088087859144826475e+127'); - T('0.0000000000000000576769268158760793228889322171711548712267346092999553202187549995149774466310618281592827181436884024', '7214897443070769737.590335358131669664171271', '416.1331118080442374873530552327247807419822048775263491897727868156732966268031408562709186237110762022701532092252726416209067252838924499674504'); - T('2563816381746605865113037452511580729789619725008213300126058517120912912629866105171095179961598', '-155142400902758369245790224073470757889134578664867029684200360213407983500899972118045933740420731880423071611781.6961697019774959718821', '-3.977566289379913215989211867005456529599318466838788807437369058021539398823672950585044348343474526479765303904605036245529631372734211590112787398817987454064611577927370338439226841015272470235504418419674575665836030379657835958e+209'); - T('21021355066083990352764111626531024748686292365672970531361459847295.43100373125999514720142962920161062', '-8692703317497385289852042779299.702257622199418950085745', '-1.827324029212387699226954866895393730056663738212949267989848701641289722199007782369745673635690581526275165825369689624008225949130316222067517051411026119e+98'); - T('-281371829459700411922161394173847749045', '4262.059148155501', '-1.199223379781965638825029107725389720131878012484246545e+42'); - T('-0.000000000002953739179434260253787432770866951567504749973', '309547007791848826075373946352866230269769314074366092085025869.7201225815415300560895', '-9.143211247914261165868175330266593984659858074863087669862336974871905611291966919042811817692587876933585012091675114363636105835e+50'); - T('-0.00000000000239144278978796819150765880370364103148388159945376101153092134918047349666341937807866834', '0.00000000000017790542655638507387717413464523193083130128517052867317685503104374366725848235452275428161059560313199945661107215', '-4.25450649602420004053833718175053649747723590806183497288310789806254330950196751041980603311711723907162265791776589017621131644531690317327724762991500539399348391156280420594867129685071798617771660731e-25'); - T('-418172866061503521911971552233519656327026674166049022680423475766548238660534576', '-90576902506171370108917411667870811129738963466006966688282481517335876800502911324072307434897211522733182430116410086632830502124065921343765439120', '3.787680291997906303359954806060523264425173800836418334594593478681399250024197130234921086970287168083653907490426018256804158591064373885502948936834304787910451280809462727218951755689222074507604311322831439358572513258301312e+229'); - T('-3430311267169742574955929826622072681758112689207488355884200258692448298952.3897753652042205852531267397500939984515487', '29178195104748190876234156211954739009200852852565396294', '-1.000902914234947463302590931129086303752468365453949881103219746142108956587996112362845161460507830640398391094393578265988318777026054838820693518977773210730880397735405178e+131'); - T('1217229941749445.9572811858261781662798606', '-7688.762839498170', '-9358992343247662165.263684546710966628782232475881555102'); - T('0.00000000000000074169408783659430746120211730010355927129635815598173767929633977753817875737683684742368617111968470780652946190285273916758224772647017665583547211', '20277751314053396744396463.85165787361341700070969293684', '15039888264.2541356850348902729846895882151710461905734702387731438442631412304238135592144651640509390778276828843359389845898882091777630101738827628755435200638106447703368100930825028533561255938115324'); - T('564381466888810169919601150245392062064224480660735222387818244250114897197669997801703266070021836470489338410440', '-0.0000000000000000002645655440014235375760091744435849282689052519875067111364162666736597818970677355465081835', '-1.4931588981175946834283111355443773198028167610654600849890869545798597157736617913162581558616543097793344871513878994482479287199763866058458885636014581139878719012494628251898131796309084420634183574e+95'); - T('0.0002901387540443867013405807910333533336446690397588380128405647147868703703433303126537291208249472115', '1532908562403392492424723937748.472475940195350', '4.44756180359692297666882276804364242887051626129128210500015334075754912171335276467442794092825498742382966447793841999956236194956994747766525e+26'); - T('-0.000000000225264190604268810784537320407445', '14950.700814220268672859713833679549117660443531292433032865528784491376833526537556454874844228048068717928075898239', '-0.000003367857517881911505578414004206612694308367570237761083545225919631139495505710310659653325677787421658102687518302736419664735602327222663837989355'); - T('-0.00000000000000000132422391255571832661986637', '-8685.9441213328949678022978068', '1.1502134908591787160769054777064094203031244635960077316e-14'); - T('0.00000000009742067142157691787222596751006921098920279989592268344573189495144592', '-118923723014528400203978798877563012809910061320326.53737153377573592386', '-1.15856289440289961067833399896083071996865135302176383556314783677919776746205807113913241561786412522310269565833727285343010237305940276512e+40'); - T('-0.00005563546373241014529561050614463373299027558680685062277259553861178444745012994288955540119513731389', '43565560449530398941183073235722526166955055524605404664121285806765679773941818978977694475240560247441941103738049224883.328637095', '-2.42379015837197033639269209261239035396339708689516443560833885654548577622441367344082188020100430582832598711242044837458341177912171781239207907145798643930933786640347757166079449567939368292304555736474640815549897983291274955e+117'); - T('-0.00000000000427087426712799927089415837629262439038369512842420608188380156879105597329387384339607914876727209877963249157620642500', '925233928141580102390081693311444.71', '-3.95155777477363086022568547662201291712827700290280460065453355510078335629837128123107501594590100763786464243066847452995303895192418602700657793426175e+21'); - T('-0.000000000005091071907525480076989317935464438083994221617598954017569512203716892574912245558148612628718382099960321042186876280738556548120017521', '-29849639725760264066839307790055758277806690063171510919436665089162295348507536342284533528662967910860808922458810578140340107788205629605', '1.51966662257574655588783076840748333702840299074683399397337485352697121303070516861952435606970784590094155132031721724526937976956111602321500551446919936325059565949482713352248442850374534543475972410515760725383665948678467615176539411200064096625744148848636243436309205e+128'); - T('-2532623712961933744380270221514261860541083273159263155049.929201610', '-0.000000000000000000012646589646423131239682610662957792721023875661746627573361000945171', '3.202905282663009949513269540690749564425465035038152243969308063023239476727318839202045865432868677151160472201684195600784341492531e+37'); - T('0.0000000113044864730', '0.0000000000000601669081479195180359444266582823155394447964452777', '6.801559992803896747300132989382930294307713993458802443785521e-22'); - T('33142360002065196584755139040522165.652289540188139925590361076693810562392719569608216426237486549208210658659065', '131866276226694967054888110190126225070936217278.208055190299743946923315513586077993', '4.370359598836895991628989736519636562344422619159613116474448702113850541696634666515624356906681122560009861221133939297280288166624498899890285407603655628297984634754638006796334523457886456545e+81'); - T('-28271980269206475098440832341.0', '0.00000000000000001997128856200158301984619314093468302232590147010149380231144706644261177500747535724053029495', '-564627876175.53771205568655371502005478701323612123758214517745046808228380387390782642610030197268449800392442510422897795'); - T('-613824085218213402416390718799790910276979950485725176851655692450022488003571999524663227579006467246542215327798466491629903216135', '144351', '-8.8606120525334322852208416649468617689392332832564915003713350860853196165803621703384661564257162553505615324783036436533268159152303385e+136'); - T('-2.6', '83102555490369.945045038594374940850', '-216066644274961.85711710034537484621'); - T('-19356482713244897360632880493785297953636172550378939890381044618408211766861486580267956414189437617939.34723659706434', '2096663623111671700117269467244749170.87006096167689688793276499897977784848766593786643930915441409', '-4.05840331762504879192862674091277246812216284989188033185403840621110675874956150938505763166302102413483441063564098934208044556598498878291756337336898624598153836135376440509322121089075137894784969112914467325506e+139'); - T('-0.0000000000961833377275620802044513471680247526397846980939658945385489196881637745633153811677968300170851695260551929219', '-0.00000000000015523082518616051240657860119777317366287857462125986656514276221641140341472994194237', '1.4930618884608626385191111567704817106628003163415171598035214188415333416493921720574942746386069040797685559452034643996408611374739944262662458626993363351126829421325696180467755211836761710903e-23'); - T('219117317452336788720880703911762541205752470989076742619261301626536476137450009416861100269148147444076', '1703053723960030665485934204490791810931377645235473549551623.9346390876850553262664923156', '3.731685634713343871742198830618170312603304239495468980986930004166517969952154798942905166375391398101794403344384735628903779970526327721072669544702681593941605616683824986240005980347423856e+164'); - T('-229026139172552757937028186554164451744686.4623797082584117720', '142692877312662716284497225068488555041426628476953112845882495240122781240223136406046110921847532189803193193212616817958104193853628', '-3.2680398778341887238160775782128956864982778025883686830736123355786002576636730049750417595903040868869020303794371246492434867047430164188551479071257052965280634450368893979035874971520108816e+175'); - T('-1073665452168840118738785397447323896819780779969711513798521784434976119794308932309275291527935867797575529606291327909398442666759773299', '-2201739131.40829642230910815', '2.36393124008131787118729847898108542201223436609958551819420766250456830353949023025701558031680369332682327153434667887063193820677205089342493716611601619687328685e+147'); - T('75900276157586733312083235.382581622118846776984080849994704930212640859922732548092821867297114657673701742587369980172993', '-148738026482687430520904431699391318319406299324616632922', '-1.1289257285170424910960307900697967942479647538118082242484827272252207217650225144658178111388034339556050832590401486962625381452243039292709188298700811929089250125886739075546e+82'); - T('3674513449.5', '0.123520835051992626211564329410225789797398349299387483082158104725685223328601760497980995245750734368030304555231401223', '453878969.6920179367892193608523230674423001146096982086973436692999598612243583269792089846259066311598292369117788993786442487385'); - T('-0.00000000000000000003630523450169119195624332326712988718220493077008794952403238435717494340472630938510', '-63664735097223219209774981628599525664223257757965282787982134793736977272874143846.500', '2.31136313719273856014857129786830896070271022062940478374598697364961332865316791963355096598256182029643618880489361616574337962520294943300606808278625781284036378715e+63'); - T('16255476060889702058292641519175308063089604.27385206453835321058', '-179922219665363.16403587084722191165281635104378752030512', '-2.9247213345924492933598059283240736222331848885894205158919467816021766897744680020212514605436690223674872782932121696e+57'); - T('-37337860121811988659501056235845132337764643336213883612586814001890615154275803513.70825146506875697717604166850546696', '-0.00000000000000499312215357184649280143043628595160134265705278153950603622340397592808084159267174620857129590490362315100615527713253386', '1.864324965411862434361080737439842005056233440510613636437519526417257892974279749554865180460594721444483260908377047401237999183242090755697516312142757552953410741754553786322115284832812113468103953081138139580969418569870010178873112656e+68'); - T('595287249.54365530407831622115559910904721', '-1768420334499109507714731763995306162286136171277649865409003891266116172008027525', '-1.05271807696104578648763801372031670967180464094032778762503630348461739223752684712175511968739692938359619321797420445525e+90'); - T('0.002815450816912', '-0.00000000000000018862881579393125180980026941613678890399387821675560344766145135638', '-5.3107515352016691075986894697522001159488606156481160553297195685733162144309856e-19'); - T('1746219149830810782027149888420786044489923228652389093.034680474110962166857959336903', '-1668828010190656.963346733783314', '-2.914139429168972634501569834110127443990322655116665224756513968188822900984956290803407975336799390526947925836542e+69'); - T('64662722228212130661621650365.32166567378954381', '-151753087137277233145197949.129178182548659416754566676577139611814504364107493968621776', '-9.81276772083142891387388835588024421410101593988612095879269873008015700198765486880253915926871899215898047800746249703290547200656e+54'); - T('84653669316972.30754613548716676668630807374200076888152269704972414345399368365406435043236681022822051377689088018808589089790', '-891907791289670302078281451791247530469932219962285948', '-7.55032672250669035947286471317344472517407746317731670298580361066330532006715429733763760659799434857873085352566481727017961595406096340089709578771542056983935886992682102727092e+67'); - T('4345027127164155965936089847807081938532105519246471030938300717258607661737728621832645960975070377608443948838275506481065283884757.660457292004587', '-0.0031549860729161313643870355404353', '-1.37085000726457005604716494913217288695044606549706377095554606468800726719208784612404038925962557552104905114304146931613984052107356347854256094879310971318422341980712315767211e+130'); - T('-61520610530668063822131867448046406754862343293090074441673351607446445867575168630626', '35605600761.929728479163049', '-2.190478297185136890729555264108152753112278766935841211441225374439764529201743516915979466007768687467908938674e+96'); - T('0.000000000000001947822987703', '-33311862590868220285105571017136406095755495416393335802876470598016841787968672731566765403', '-6.4885611717696735160488683809368479132926370588940189388177405221668999878153400559367803107491154839309e+76'); - T('-72035384592407021674980.84729507555', '40650025408409173438512516280344375884605.60024427411502645869761254054503221638189674172185', '-2.9282402139858721209738248775767586249381088104728312874024564502752576950437939324991537671241774101883194117425137328357675e+63'); - T('13803733920957278337452274188531173497859274744002844428727547285003127728359.612974872709554753729793023049535183014700983630415660322292927376558448', '1362366267088885135733900716922.19506685185416683405604525950523770517636717536975000710349005385816611', '1.880574145378278711827375831194045930202239941319475711762021264109852456142716124505511107065080979058954130330974983743544175658555804894085980685328101923082779320611251686876404105639204387659101043361189777091188374895482149778850837141250779728e+106'); - T('99584230876132495816697493861076736200925464688036538302231243310765908574488488858315092454091884601410984087967.53071632699032523', '-125146154822705515.5242914429658322722160073394188945992631305', '-1.2462583575124528246919426619953914719378688358583931729348000794287085154257080128549535423454367290540927132043549939350598411440675286201751061031732125669579309586594569286579560542932515e+130'); - T('-0.00000000012758277143478046864136383313563417', '-16907614855016026181418628647663025463883570088670313587786762910136346.2239859700447043819351603364622', '2.157120361554808579905490037140343865957737705652239636688633884876362102934163912327493095734496347577324386761512911704717665571233374e+60'); - T('11129202925396407157427240475525317417101748679895585149981795954110715244429638119040083910255519563482482.88385201997256314', '21121732286510044978255138780723583329997392678716700.9365222644226293', '2.35068044752467336469513267242489085155640464226702784189610421069783258880761029174834312728324802606762609982209717555410045636138013876460541334152485164353688420275011580410260339339064002e+158'); - T('0.0007623108288892070002324554289862', '-85942313073979832197394484133961158027209650751540287422505752621999709082525249310360508378232261949707995297970944910223297349', '-6.55147559160812975392489905452196370592406606471681012737363795317578187614200614611166153102989166031105288845674348069177007346051710313415670312952762175838e+124'); - T('0.000000000000000044051571525227145682264900344291236843501956911752', '0.000000000017712290570674458162141325247384093633836742093', '7.80254234949672231546338647163006869638114832232612780787802882189163497793578826950951184776936e-28'); - T('2497912210234.005032121063', '-36215243145530210288660899586798506035608544499.347970495067719072170763689884', '-9.0462498049813268339455589123940089929239003754340990669581623284783162621680610224389952660876426692e+58'); - T('1502959485835975870623286636747688.63', '-18.6', '-2.7955046436549151193593131443507008518e+34'); - T('0.0000000000000002380492844605809635389684807457429719545734217366913382', '-0.0000000691300263175410058423613287987265961212556285556225346008695026090127373853991949000359920026136176879063299466975538116975010485068', '-1.645635329963176721222121671096715786436871824519931699863275362362108471140125039004626432868692100285050495434763779725307894808337972261206505074892100990010512693296587878317760379976e-23'); - T('254809590039852410310539126422956405351723766563016602332405.68422228', '-0.00065877273880782339590525760713666216419301807744760105200422', '-1.678616115050522497913933697207225162184024783104908394273110760014145206072260328917980848745450315587200941660750818259780216e+56'); - T('0.0000000000000278510475015254355758436577787533929830', '457360.858470081742985', '1.2737978994588698477266685597352939795610307887931308474255e-8'); - T('-29020220592844713119041607050693801334769100420291179736770161092227817.69', '21673233203860610976626552967575106778601581986955436993267108076405912742379179', '-6.2896200853620150098094834197552528045796701728777707177496046234367216918962571321926709133055901673078103556052889626187364066099134572001385766387651e+149'); - T('-0.078265485392684407726026843083593796846197554496715815079396449815003056610109470601087662461730977229533667789541208863921705388520252404620853855', '0.0000000000000000206254796419314596280180899887058415', '-1.6142631756326962818018348319288616709731477037044772633530435371256854543702769134066969398322149439228993616976959581068599334680519507769306737453547711855684460684428941562939825e-18'); - T('4795305568846848112838662002421291203736834738342747362288755835416190464055590424568070003158113658996255292.35950008158232661087', '-8285467911375377.9458513915656103724404947804473238339', '-3.9731350415920213266579109721401773253848863967652965582593311148492458733327726591229165001156155949294034378674742185027297365357231327284258441411135637685909564095376656361814493e+124'); - T('19117591065319548455532984279934187350039995069275770.12929477022443443469354713128796911998383266548606048053491', '-65695070326024876590276239417471386610369211243031736907459699925951944200466086828836449.27041754314379361686911712287570702272', '-1.2559314895003525759288047359281823933287108050703977637835742243565477054442990115080659989437373048015263572203486399172864054362529301399064585328306575664987751933695137203217341064876484312700608044517901164971224777248000985491231552e+141'); - T('-4449958.97652133495121566', '-252540313515710072725302657773.59471991586456171844177757978469637150589979632648440614666063', '1.1237940350627462471642735367835141315103130147959353855777341370569264164618648847956641021208508179253842679614658e+36'); - T('-1258441607483954377789927095378751802020005502122407.10214476628115698182122581797494', '80891657196033813941356884134762328483.27517852967702319172611835658583660879767525096710103201452929464', '-1.017974271138177784694027841372230917155036713620577632485672383505466603972062360612431726994977661204677518975067557466197345901755339173598338486348474216803531725823378534129113963216e+89'); - T('39808017028002860936031338217973215314567637.102901794', '-57902551664450505458473980503658853607888324171.49605292290375427619687232427940212558542266526276651604284541035424385620765024160046792819', '-2.30498576262326111905050241194114191659986825956183943894195202199609220277997857123964697896577008957095100523340998232771311496428225722320228966585150676608054417194697150023556808021417286e+90'); - T('-25293916752365259143834809987793203971606533992589538543882915368792362597533769162577303959554268549391839092976944430801.45', '-18870536.1312144', '4.7730976997543781813462001933060950776383666075435301423297088056421996528868308501593986755779476128550409285754930853295224839815378088e+128'); - T('0.6419603235395239183208947139633444062611507467701373727615510595813003', '0.000000000000000000017952483446429057318650827831163686139172587165173817840377201106607889427351733260566157112519038473019359253459211', '1.15247820816075450454750045127898262549290759007121217263958499250330256525778703472457460506113402017388245419660594286457976772844458813380078355709054799484514557844989901980643920633e-20'); - T('-7754484348993.123525069214650584107205341890439441675333976581900424068864364093826806102195', '-1752105446017682.49037253813167091733073426140377278798600289379784348182745501211856094498254897275180116436441751208660573331994338298842267191', '1.358667425892973493966955704447747036342266355969033025086821842915237172969178185006052744518082018289583598988482542984184766184862727882606439182799978323965924231683530282046591309550608146208712260753677314753286354780307441584245e+28'); - T('116204805405208024790396987614152308611917319625528164258053148681924874821595877349738878308604676525193568190095523284.4546294386699942279642', '-0.00000708667732873965881702012704870812130887887783663833386408', '-8.23505959955691471303838517278590066464473883263415152528959807184051797771275805894703979322626180999206021924871332410324136063220356505352392864892088775379405012455775331410005572958884177905936e+113'); - T('0.00000000010139065992977811728', '0.2823639034545530635547682690320968784587487', '2.8629062511605290206092872865262220006122998552333654430647536e-11'); - T('-182348440817089344.0', '-365494613346284385774359945728371759418255497043130583704938461995522713031855368282526623182864551158365546976602079453.8724', '6.66473728707398913969618817118679541450450804984276803582504571866881111782170812402431629687112708340501385877734505804826605490564775757056e+136'); - T('35078436593053772121948478354132824046030742485793509661339795486768350160379351940260957647345172644134739', '-470315326468850136120.98841520254693896261066046950478030733711497927705290819414286702121213017731741', '-1.649792635827894394262863251819308110416062211172951136883946185746058880577253761809396392427026832922884334966951567100285510447677219200061048033820977456094076440088034531057882865490348221044489361050599e+127'); - T('-2329710971489131138898317317972150487.226887180882642662346810938', '0.00000000000000080780934683985383898326280513685583649350582', '-1.88196229820427637454825838040513247697835727714033766676609406173243323151115501339627651370238022434265916e+21'); - T('1689256363719086734358832495291997380220279912721648779060.022015003200579854886304', '-2259059589029194007856573438.47207932659178007', '-3.81613078678819075313019801142236253002420775187972657992120430084415285628119278545102507880850081033723214556951631082316128e+84'); - T('50563883339463774987198862916277845601202057166416042879.417778572998829235141574907848222440125486172315940364098463976083652560077213', '380058072907244.784369350321644073081361404543907907939563914660519351353607790299736723712817719111414068853481728614572841297911762329370311135686891', '1.9217212060703343272665422309643023974471329394919471100483903476011902558587720793118211708282887302802938658740501486070477164588947572483424138819524122982371487252360991540904867150086111696239666594880341944141794568786850282040411150653341851298511444181398173001624310751914783e+70'); - T('46294959374709179919178793118885893663797283026751959408680198256485686362073381865322911852807891547580600.01450863642145', '-172254', '-7.9744919321311550777982238299005707271637371904901320159827988704726854186125883198293328582935705506369486748991706581404483e+111'); - T('0.0000005527834082142680454399157347331241068314235320652520705781207217168327100784683628889780310703', '0.00000000000000266632277268185128455781020487589646959589371419742000347748975254376924718637309495578143940081972955041', '1.473898989682390821841521121371414207169953198718769475649011583919402328920280159796586990896854154136491120298716299421424991847787084749540756307376833028770272042850712186481647279973624030103823e-21'); - T('-3018957351229289626132713890715830302577902789980653248950686120322288204403609991088469882148969888336650704961738500782', '0.000000001082120521596790393125823482055072836760853689259276513674877920764922256435650861059862899919835', '-3.26687570359070362516085008576334548950877338799335353420537013795825989339548239608169241156257202285080364129276771767713053661332672872002678878052870887315156625253726777042206003909947050207392523720502088481097e+111'); - T('0.00010578119530223846946702960127201887002317294288', '-6085787778834088.70933788474669577642209247160329424394222', '-643761905600.8247941857377235732296308415119494854462530749858584648799519132617834281892261058500803936'); - T('0.000000000000000039289970150049295306833630957794488396625415545568122904585548214355360114104351072386053992611376825118885803929657418065649', '-4605169823674888008751577292618614971794.977555723667587656862637975931940238288328992', '-1.80936984908094126427921442372226709393792657401598962039210959706690306344862877971519465406694496205108752617960289681246511462795560122095156580067059723548593631880883004929720338763881489190940653165995808e+23'); - T('2514613511.2170783808206929866132543988564534527876194954598859691571100338559560', '-1964495794114274085237575951315085841.361649436638538985888913723131864823298797343859193187321313839924840812597640408726788696766685', '-4.93994766660887745881096220582576848896286904471239767301554888303067612828309748777331041576614562636212559985704314683156812973279114418194558517790467846327290437698974640024899151989425196795301938022962586e+45'); - T('5799359.56694741019279510257555786015925813988005191176124258432699765886085', '-0.0000000000007231844570746320510997217888', '-0.00000419400669980343608737887111010110559927717748555612552954077474280846281811020478125660977836613228848'); - T('-1791068145886144126734036774645051199503204286826392100458612918035133189286803934233671078314145954721325200457399093789769043791391200626757', '1.902', '-3.406611613475446129048137945374887381455094553543797775072281770102823326023501082912442390953505605879960531269973076388140721291226063592091814e+141'); - T('809656351460719225181711866.1488944461227535', '-33867.144809805871082384828278160351409245109', '-2.74207489010992553148307158515078420513099421238160223165035288480514204794793834876315e+31'); - T('-15343174181682054141420677206782114884223299540732121123190447946670136382584737580470391369', '987099689944419071747444299624152052403106779038923393493086986368730055942594131963617011747402639883887116360086428917.245', '-1.5145242477501571458201031358834948135288567189066332534201297139323596513233299183085395688552572218144560229423247824057601351422866714799537508985833062886631036720671807768726086293443750449585213823804063258405e+211'); - T('-6.1499', '-14122475646217852912636972117760232196408460299060710372963438774127.30802263764662251543254158300069146620610278670238171347884347702832', '8.6851812976675173627426114827013651984692389993193462722687852117005531608419262963807658587481295952448020911527940977299723539499376465168e+67'); - T('-252103580004042401308.937513693319696445897233569009398', '322191.07259437929639208064231154', '-8.122552284638533411190811393904476674853317117242659440655935323513978821796270385292e+25'); - T('-332385.3378738577828707399978866231142878436743418042927022688847501694303446138653358154658874513293895263254386919164060798805928631172377176121', '-1788688861556141964646237161499263851038929089394372356769751862189978338244963495542562526495618342381239342', '5.945339515995442741438198459409608195257376497495695646466626108763151210023427170436149956435379334122608797739249630758718894850267317176420365157416700495312818386418495814195596242152257323833373715286243473836090341661932706350920849774582188152382e+113'); - T('-2460917323354918446645703674853641464.424607984385990612569219446652731606596614873511538897698788038533', '-0.000000019704561911223284586046679188808477807835576405248282475083383206973764355330345760276507856652823084974', '4.8491297756448881664126623064115779205015987535516032622595439441897517259719875348865351513634911289023687531425512745832163192476366584227547545673644644097372482366494539257564003995127411984043445303142e+28'); - T('162243669579467948721172981736248370537958026297935040744.847805681773372416035821372548485508877545367724814214913560686058189175343393608601489512', '0.00000000000000043034872397155', '6.98213561759858159315183613323524194776931640410698827712570108401602008047713604207319502488289379085249184148133416471274154998412862192528868878238703113836e+40'); - T('2942112647049268674939521727079875936312678683322556734336248.11424534652681157516904544382063913587308466251549871327575873372911717', '-0.0000000160518477504399168052667437532822966025370257875590966186547766187236177521021479405317977917073345500604689071434454454499836553580673874665532292', '-4.7226344275078632315398240344022433291786804929459211275348315431326149856316741173727784448214255046618190169485768234658926420021181206553535921500696882020342752168452799288030099975139315001872319829531828024996830308930197541236951052531735501834035920248180157363728665364e+52'); - T('0.000000000000085659689652397679263363379344304760754897339', '6.8', '5.824858896363042189908709795412723731333019052e-13'); - T('-5.7783188901971298313183550831107549667729942738531150581362739386230606910679155155791688758', '-221439820124804823862034700.57305405733456151859741120374945380903497467757168028277653394776910998991571631868', '1.279549895669014265673487530332542622307080646887562219389924149894188918975837243317437652487919487957552517902434975981852190469467703844441311320668017835940689319709278323479039083091077241610139944e+27'); - T('-2847941374822', '0.00000000000000000333453862751515460136267946372896613495219431745263240560720335', '-0.0000094965705232425743530447087065739774971604318716917458420879678503055240537'); - T('4600164782241764006590425774876842089865111591027822696582831157578.739719314165811327385420927586685826049515030783212', '24936677097532922790671460124317897120172195409691302414459854884214881356875622080300.40462', '1.1471282377020572147332327802533044122369637791300506227907535665141877615112393905214612571695198704856557157162943485152720303637986357916099145417183717023786789993994223448696820674347492278452767910323944e+152'); - T('-0.00000260679215621874990889590646697464210606210167340857181603112129227967025884261071747351602786622983212594677321781361453743686420364802073156', '-0.000000001556976867693202856950382092896216853975131678027766508144349094921207161', '4.05871508611667956997596806284421681761326338922686367392307074925675080478202951240305304779651248204530654676779205376458787347615247100101002125251986813572273619622642745986755165968519176975902222802953070116e-15'); - T('112005422206895581683067200.66464306253548778644799733891467497177', '-569288990012093221416615337507679289992168170439593101496410.0385811397750145927182473472588677939073196039082322785618764898744620304415', '-6.3763453684041663102425299537134781104795400180652201585238496486086184313570463723811857606393356939337147660320432983174726251428956040334352123843908741307666227939307913535913017213265015893136455e+85'); - T('9234638972249568361641387675279591873348137130244080421631134092282316805807483776006033822789591399832066971', '-67062258760784733815191025025646336427603744103904997634972806618201463866617680780550570309742758409129550780654178901', '-6.19295748319427746239309128664117623036037907234855321924344705389173421377284837396403653127764945278959634318829418910758542716822570206539596799575970845747768528847286120187750160040083010843243686852268940286480535647178871e+227'); - T('-0.0000000000000000213737912857665573638079572432586728390000134190', '-181285730.138353', '3.874763359064957107044461619607858392925857065967379726558907e-9'); - T('-2506504.0733758501826133673932299604035650762719626337255035252843580215290504920568908', '-0.0000000000000000063307590401488217267263854328109316460163087745601605669460055525432479875260852024893294778103375548445194197525199702769907', '1.586807332169400912551173916660722325707840899719608136941744779695862574081783246376975996756197880571888252763332023979673897643998859766655287848000511959009182082181258704230204193519120752866923945862251556e-11'); - T('0.000000000000000029191265291623096374212238517809915598918566680688197689722067072109843781983891539215143111679796529799027', '-144459614607567236763647582499049882580370335188691777.776222539161298865028936239380239788850306312227587059786395648441342513', '-4.216958933935126326569517318236903884107951508793088777740048528137080091324499213666957905481836509907780548281139659624937009921418073052266920044400057847392420013165462539973879514483989622402887652609685114451199224677961134851e+36'); - T('-0.00000000000000000011367487320425818863869979220926084589271902620348942087918357405316552888186055679751253463369024199347442851320519227185478', '-21839', '2.48254555590779458168056476205804761345109081325800546258049007374708198525095269990087624386516119489548804429988819402503654042e-15'); - T('70555122248707171314736', '-81101086022274692488621411837767361950248378195397909.200440873455379623557692889032043422151272310592459622568950827', '-5.722097038804507341200180488072549073313712476829304641270901056694148836393515478119400477210997323863769882713087618465778390141724486672e+75'); - T('-2328737444159883.22585049478830', '-465474361749661451599.9951730137496', '1.08396757550285951917153850391172159248110224634381083904120968e+36'); - T('-20.3014066928633757647889348362325618964962565804945772008656587579802123642954157', '-329435370768184084561406820034073934012588977709700270652517248023565145783776412004629743988394401273.28545348', '6.688001440979140070188345542361244069517729332398623464379411528839275521534924214116901390055160850670677514105783601320874524580245478001576704187186030310275122663282192690671340259611636e+102'); - T('-32476062941804823808177212128.37047244026179396179206', '-23170264858.839398780672784729575796922981615252587039', '7.5247897993395677581189377054108136654093646195424085291052102413168985736328290334867475461403556911034e+38'); - T('0.00000000000000078020818918877022784107814476742023039526884490519321760350204369809967323559671586528756587388436', '0.000000000205123365786662618531603763262183979221647', '1.6003892978071778645361752741729365945858649779217485973276644181520266580188064434359630899417624168875864924106561648427968680391728674092e-25'); - T('16411.97479231952475505598642359391159894419529343140530675214816439312142161965104995811520160184950', '0.0000000000000027918217792698757486367905214734859040448642073369967425369035344103512043731', '4.581930866602584512178030964640390866062580122108157686730832013698006926287481502511491005515718454308878140351176787687577295267975260433555460720995298677352745266944804845e-11'); - T('-64342576782108353170532624771581267539756520906919.37', '10.7', '-6.88465571568559378924699085055919562675394773704037259e+50'); - T('-8221425425564202135543311357128878704299939907773337451688454087709054980064079701204709862893688091178322203851683767887893871786', '-0.0053653210895499081114778560023351704116389771011759394571181993140755819983', '4.41105872219414419707174038902324084811431456260158178418632957765849297276315251194170903369456489104239536734987785292755508500736273353438544501239198533098378964478014299793109607485495440119098699638e+127'); - T('-0.00000000001910608511655268019857813374990127054476192504583955285846583482452368825713345318314648457310037047203752064778987032587853577350', '642301865080793548011195664841322815727082571813145907.638646106551631362492680834939823385729510144767143760057', '-1.22718741047541772674654955433282115912253583024496254728712579960888844323021707984449130867906756160401346562961603346122134581742784760100299534939794183794586063570878664967245581007170245594883361157548393966363447660442291523748990895e+43'); - T('0.000000000000001899500268191217', '883952560680798125471977636433525656958767.4329146255465789678475476012476204472687459005798142889552058775500478237', '1.6790681260814890585836193220538636972839642793176878790660318627202422075166836170289452406463821318133532926386268184542463044429e+27'); - T('-506222074114478440.4212018359818757090468806843375176631454826045115958516526575279719878856236353605111026111752257846026439938084657014050761145504', '-5159467544042334960313178363211289944335613842064316815811191728903.574367721298576480151967142002627219994962105347353373165540336969132995273967', '2.6118363614714449452582198430103897223785994901299317101044259761348107189762413607706765732326606750493547847042725797461693311578242536847852702975212843374994786292094043375579903644474919183423720511760494827145234240751467691929508470719482500262148133264801792166487508484367183230294368e+84'); - T('8650434955204837420156251340980467125431552732.08397236030027468302684214339589220209558182529147', '-0.303570960693217884327420647078548564916276955021262691277956348864969879961811223297756', '-2.62602084976572571043981976309152638775264794392233958131099791715831899377187947876427492733764795120380985528043759980136856459126265934320288206950485593122394243946315413929694132e+45'); - T('166664781364.0082914723488023478368828305505987873686361307000655181790946128760191770642121717143556656346592000446628174724572', '-480041.0942847509055712529720906841565497160321331762055830088670429871444554935489589608266394637805469063', '-80005944024707299.88369343694993429517249943540140207247881593079529829548920836320477337300843753304432472775747784579377690170478442441481497272861023856984874550780497963725202716372180855504618999968964525770542110325165291916036'); - T('-43211558252159093527866775647205601084011492340.205459697805340231598755202803639527161744593', '0.00000000001119203318598549392536941753377009590965307584900110755022862027840043858728011387253539611180', '-4.836251939763099008266531873875699139740918027346229229666486821933921583162396652285702155362998553549998984080376784393703700976212048695921578240422117362224246009514826407968734974e+35'); - T('22228080669906830995384898726318434540920054474075066362723430068303595334', '0.0000000000000005446682564983826904165557014954366345827192263245436061673439169771964847765827397722973716801924439429612435686218283131447915481741738621944216616', '1.21069299437835559678074390552059815249561615752757133499522502582835547433276587506411508638591250461101776265492507290334698412116695650224909917771154983775120278858482062610470094757493360226297555949389464060902869744e+58'); - T('-0.0000000003773157928', '43297647023077445.54510130448338353765777486', '-16336886.012887026261648726857462053937811976384809008'); - T('-704246.0642491', '-4876468942183457666260007295840240729718873395834733463009561654592496364003930788774251638836263860.464149571397235826605163', '3.4342340599656720408721350433721409241108083813038963987160054952477748964430703827960612606796544474314358764054099696015239692357781033e+105'); - T('90714014677317257217388754359562724228350422511592300196367622823480490782750230695', '0.10551171877203891416100509846755006675817523511356135349573800436749642311', '9.57139160531570883071608150743717558732170393411960576472278636404390923564848224638754968731571966908325157310107689739849841961000661380686664893982936145e+81'); - T('16256367650251592857824070659043447853047682031758021447060795635763437999068158011730593356058028259231482670.842728511458309985368672626159', '167180302632355.05677826254070883700709474391390089985215716385024', '2.71774446347188795843522760152851417095331335558235538784521529465054664495076688729866682142620092642030334321689665117663066458919556787136329889313558843246657535262982668786110905407308427324058242816e+123'); - T('-0.000000000000000005140869693986476129573937292110832444827883905213371700103686737472419302083991260187191661701298052551015422048926889376', '-23431072984.29109719929265906334268220161090515289622128095638741310550195556470', '1.204560930025273608708687379702964400245754501914517994869604548744993478713638266232843096136298708651286988188211879699693589237471003927285113544165412103336583365360013429733201256002657445106272e-7'); - T('-600918601565864357615830916531004971541558836', '0.0002398203266606694050330194859330980464992506791531578245580976766372221543075302994826964325096371', '-1.441124953239982356850028499314436394823612382489365920407488055245261701578444032269000578787663442887261399958157232897473876372957266584156e+41'); - T('-0.000002378573545299614819606175997977561025598320050', '-2882653077216085525237966723240931593332010153721729409.189099950085184011450067199947461092968807651228141791418167', '6.85660234974270886050574307192845780707197555258670774440795390596137425374082134400993260259690471606609110758329634878468480296762286592478289418958225034835e+48'); - T('0.000000000000000022357617532781889076479320065100116692254213222725326015200603762919174701589837856906', '-896457719826992659089225870644004458751127732719124385827686320360654074025236', '-2.0042658834201645580346859820519392326977523701452584805357472701178299220185960756765568847872663515490447098727456428199599156161369223396351318781899083200879816e+61'); - T('-0.0000037591700832106546820837009314715135833879626195863911405199', '0.00000000128660973296737392590374219331743360889744123526004704657440431966332363276599678510386', '-4.836584816938601241595643894689727875085794631034207181521858384737358785559745009296624885016550841630384096559285949624409877337769212375896814e-15'); - T('-10897404485088933268299142109127940457874105398307905112497480738702104026493870', '6459527220783833615589828721781406862908330296731571946257487596628.142', '-7.039208090732380052543394587491979904440526984139707627324909518932550024566922074139234694919548719030400279757073454088117750506466392244643248954e+145'); - T('1252391487512578363516059332047552591823815440694963818513488609376352517930673851276.19244762777307975100', '22549776.9253795732526305732013511684558623600507908536351482864251791287592196740297262530719650195640957326260', '2.8241148666652939539350687862707201683973473917640485175382134027259511907319776870024731139293000940076904783362318907295063149688420418024813050345759700762391301983348609040284923961341431326021436020670656126e+91'); - T('-0.000000000004618950388937140493422755399930264176038354392749822437964314306322496775785511138074695877738144276032647315124913748488917', '-2713380462202072657447653028643460793172301', '1.2532969741222701540713742524625604310117116627579838128477044145948287310122585599028058960352298239073038474733050249887724953498915163176662179193294848309569888017e+31'); - T('-0.00000000000000000004741599927671153114706', '0.0000098605921767576416944956043265259701017397049855054246352774023236279136700079166226671683330780112375', '-4.6754983152108772107589021499824280537386842022454892219026854810089318448711395624891020610400431916945696952628194508675e-25'); - T('-600334522639128350301416069108895484950049158632569154577774908833218708159964256760025260070745036754849229258748618.286225296633751065085057954880221', '-20603943628058420.9233', '1.23692586624339624137684561274248493253093335427682675519597952187340115485564971154200167383285889714823571236526154847178654496322656526986532466296684549399002517280493e+133'); - T('-0.0028569903450426823012406248893590913347605950672345342794', '0.000000000000000000380602538484379176276476072502', '-1.0873777777486072321414819892742916452188931452780514481064796648209244384695987250588e-21'); - T('7633371138864371851511200109335895009200379214065654.14141197969364686617958181976', '46557774899433776362769332468929072168263071780847173536.32424609893425634', '3.553927752070818711219752919654829713936648328701795633611695455871498173222792379572585838047775680404274006272352702005591443767922861383251901395172784e+107'); - T('11816689310524760.33060749', '3240086146153074.763149055913088596613954276720424786571958312186345692516028911031344618033329875358392613', '3.828709132842640485458626662093761049902194180604315455762384568460513896245457880390402922939380711647608722106357184891221847137e+31'); - T('15417668979208863688007903355418023589336919725455814', '-2287252965683244062854057265399517873076559773521003653290361219949584429534587223153067', '-3.5264109096618027617770541672930242149319875097968700968868729901509384897856549235466082618911136178623675867468948846074586307080867081538e+139'); - T('-44231051261766981720932141949492661571946235314205992269845098822302266502035476097047272345277610.27', '-21829364252494551993461871095.1405414373418522117', '9.65535729263870199707274609187215999675619566645960063838135526473595293696284813052387836041619820102648568607484181212361915051957155111290134159e+125'); - T('-0.010471648280929367353726533714112845102028595890585874570958083', '31', '-0.324621096708810387965522545137498198162886472608162111699700573'); - T('9801144054.04251480', '-79669022889354091.1326070042372454589141728234307836693721872475118', '-7.8084756998336986277926157641231569523889190793366151638111003547152953122771467464e+26'); - T('29857288634175691192253935741525569423464902722491247366897306044982457983212231816738628626832523979506745945', '133673.6558945837023809692393557234541133', '3.9911329268300663632380133640663780097335900438380448470493780783062334184720774070186349410361053454199720794804033925701541209810757057340083455685e+114'); - T('-13620158075540606.0220850459251063150637623012169134311683793968716003579443803708152', '-14094712052845720944279961661927524928294844400168253261.8801483866631477108668134130846798999339316583941852334437626140968', '1.9197220618898615906375442169544326587585370014151488298656204877054492796167185482130313382428085300372006548553535032109971116684812746007217292632043932773898787721990877866744793392082655385848282771136e+71'); - T('118440515054.96300744924345961909763451770037124776047596926946', '3978918406101218410350317969873779924817925511337423100533163173007579791459856530353048879996496120205533862684343054321905', '4.712651453803007726438461712612354142589559988228956502605819373002120961113842720385180079632764208616661380363663300333950937121937309186788267547560787574638782242683284222185255213e+134'); - T('0.0000000000000000004979626118', '119953.13939299602151864098685411551208280009209744651134782647617437471653240473066119015267896990648067942927449283677891199638584032687735555', '5.973217858574576550243146820040482597564559171812500490156201032898210607636089901472178932446062156472087484005983212281811688264520970961370795522549e-14'); - T('4133032609317612147361.233208455670', '60149718767070729539657807610332371421265360276297353368024670202.145813386468110250239535755215076073418035935987159939685', '2.4860074910558688193760888076283428107792208632944279345307661267298591118711344604905557070531163947655318143762909457571230898163106422046776822919626395e+86'); - T('-0.000000000000000025988801412726981607051504723536759179533093115290316536803305521555847577878002593862833182498872', '-62190864847540861920221512167077698610328189518126509.945114225', '1.6162660362084827318707380558579363611834016595419194188990226173706520381985407013085330782761618687291735642283204415795057016756891900469697853795529736542e+36'); - T('-517391939544713325422033696525596189851051748767955039585693350056993951682945080450723027214906277369681756055494613881445451892', '-6355737319244501.33875834602457354455598517141883018726489236', '3.28840725884062937342287062927549804683222950446951497853928995858263827438383088820860677614531136832120859449547463148055636204133361775822367974808862660315286528874721657070976693834512e+144'); - T('248488108396888727192484307620472597201728811.43632801228625119529655174763542491519552462322578674423725814425253', '-244376619784336994670734053495423487949530922624294868474118463232994026818752162901576014805701186113050589437429269164232162718718', '-6.072468398663559342194397673594158367331416443540937376483832956458681282701204862291922555840434608500693418850945313497296767648108091241452234573071111256003091374254946595152378328332428736545902967819673107271115746769252798457479074985654e+175'); - - // Exponentials - T('1.153024e+0', '5.28973573008e+2', '609.919225043976192'); - T('-3.699875785122930862283231104748329088664056423999601e+15', '1.1e+0', '-4069863363635223.9485115542152231619975304620663995611'); - T('-1.2682525953252723e+14', '1.788378029508237622037088155833989378609386207655e+18', '-2.2681150773465187729527785601467557683746716925715084680772194565e+32'); - T('-3.87722166e+2', '-1.74278705869601992403691e+8', '67571717327.438998052674620914706'); - T('-3e+0', '-3.64329808384254180872888049513111969646643282968e+25', '1.092989425152762542618664148539335908939929848904e+26'); - T('6.953012278719261355e+11', '-4e+0', '-2781204911487.704542'); - T('-7.04663671550547513365402564941508037562051247993316079593e+15', '5.535517336770122093358205271769744142052184795629511766877e-18', '-0.03900677970460142822373864049115522460524845334243105937826127540936694775384656847162726619838459694385924193041061'); - T('5.08438408986e-9', '-2.606367e+4', '-0.0001325177090713613862'); - T('-1.2967e+0', '5.94990983e+8', '-771524807.6561'); - T('1.3117e+3', '-1.959557842524477358350764324331855847355274e+37', '-2.5703520220393569509486975642260953149759129058e+40'); - T('-5.3548e-11', '1.742694574037778940228462366629620551e+11', '-9.3317809050574986691353702808282921264948'); - T('4.34526424962996265825639250671e+21', '-3.754914933534859756171859142125715053796299171e+1', '-1.631609762109069348677868227008975151085048810070540943592037216417378493741e+23'); - T('4.7426914347369245430071315112274335473949505818891357635e+55', '2.099290936966289806252483785990857067e+13', '9.9562891457708756252380705318075217577762765683497811755225761339325645531279572292864156545e+68'); - T('1.2197662968047362383e+19', '-7.9257e+3', '-9.66750173858529800389431e+22'); - T('-2.18492048239986982664891448764e+26', '5.0217571e+0', '-1.0972139945426971341049955535599032244e+27'); - T('2.8477441033458111e-12', '-2.6015762266879431727233849707015975771758956198e+40', '-7.40862335895523532800693698581126602552353137494951139716821978e+28'); - T('1.17305251157767339030842411702548e-7', '3.1679877726710109082864387936446078459964397e+14', '37162160.13379088759968293791782997863641886182709969796604371507532234183556'); - T('5.516400791447843686549580838221025644959140288781e+40', '-4.534755696021348164010120097087738141133999137556364474656e+25', '-2.5015529910554782273339735168586403296046609840907360623635477256369630649686086353650780443350045195634336e+66'); - T('-1.086178703865e+6', '-5.412964e+6', '5879446221587.90586'); - T('2.193003362433320722921995078848109409779629e-11', '-1.87156484301625964803880921322257778262063404562091823011824e+56', '-4.10434799374664745958524117450745644772403340614160247100180995137281346990234693655901738534901333296e+45'); - T('5.690242268084896613323736558476149127814487192716110263e+4', '5.85123113232510962819522680703136616268672961423348513284699e+54', '3.329492270949058963099905818513145552769091859265632399465562585831994642969765945460416258196265143264172794765837e+59'); - T('-2.2964852129902920477142981e+11', '-1.01192386417445983894690800351420572044711646857422992584148e+47', '2.323868190748643763813766975749316051539457362388056941019107244885259571701270065188e+58'); - T('1.64014114524e-9', '2.33457695670849217356126573862065622e+13', '38290.357234267802543783512378452575905911293928'); - T('4.52030709268304468292307103018250587082757e-13', '2.4202633390406694150089337e+3', '1.0940333537626286438097741446790925743401036958119194290469762262109e-9'); - T('-2.531530179588420531938806173298571611356854e+42', '-3.7916295786409190517918e-6', '9.5986247081496130774858068268051041666243771242517966898979109972e+36'); - T('-1.1137e-20', '3.15532351096658148747044e+19', '-0.3514083794163481802595829028'); - T('1.26704207115899080748696654617058814620502905910804474e+17', '-1.1036640030158560360573681189153991777396167698e+36', '-1.398388724244832908797767208849960696897136903372124358147141607664782163824521550287804299792680852e+53'); - T('-1.92043925491801737087120450765880605794833102824745131e+40', '1.48390768547e+10', '-2.8497545698511264714107436784310097859137225929760606638486194657e+50'); - T('3.8135622104716384192078983238750322e+13', '-2.39302666425671400328234877933630532203640643176e-15', '-0.09125956055460405574747767900047040915488905349535492182534023415362543138557102672'); - T('-3.234931242339998871854389747974137006095446e+30', '-5.92883411067302421812958123642550690642906114730631103678724e+9', '1.917937069526724859889065751200796792104177866908520783368616010428214659504892064497475599582063490904e+40'); - T('3e+0', '1.99273095508512817553537488885e+0', '5.97819286525538452660612466655'); - T('-1.953336949e-2', '7.78542087974602115e+8', '-15207550.26792398884803047135'); - T('-6.76927248655350571291737558944587651874684243378e+47', '2.106647491079819039765594992079775666086664783295561e+10', '-1.426047090023359087715991793962565118985535044059537158764939014517624689564606363869607106631045058e+58'); - T('2.84765064643062294633e+0', '2.55136e+1', '72.653819532772341603485088'); - T('3.03393155013395755198972274893138442728102576e+11', '-1.794588238175697749312009789507e-7', '-54446.5787530056249211726327679537663382541795271931196078506483571264470032'); - T('-7.4371366140844e+11', '9.1277001754e+8', '-678839531768519399904.0376'); - T('2.56791237096035223695516010175181403674163385e-14', '-5.44464273285261087885992104112953082914e-20', '-1.3981365429151599690537623761404625947844618835506028383097657567011072106548790389e-33'); - T('-6.879908191615608804901708679355480110539e-15', '-4.0968480016502745852031526855040036466e+37', '2.81859381263577613382981765247793574699886457413439013342011267606204270915174e+23'); - T('1.407896156490752151388208148659e-8', '-1.377363868116052e+8', '-1.939185296009824854218448713898983585080174268'); - T('2.425103747079320530219213960814750892199747341e-18', '-2.365116997875961139721649192832330725431640562e+24', '-5735654.093829986735467358771314018265857755686256663053548830868280136074150452583527245642'); - T('-1.0967188654311383e-17', '5.50107804404633954170295415508097739e-8', '-6.033136071114646945658547999340034265651011304263037e-25'); - T('-3.2712219404248354159015350722161266784e+4', '1.40636e+2', '-4600515.688135871535507282864161871915434624'); - T('2.7739526916093949721614335309760564882447898334454312345e+55', '1.24528453636520646201893749622334742900013735e+0', '3.454360391469821959459359614081123116456332059470735649519645107811472952525654511905494830480058575e+55'); - T('-3.26272930891827103933126340157752087353407692e+13', '2.0026083903335067609700262e-19', '-0.000006533969089426773691398112669586901327358725244893395121554920405215304'); - T('-1.06137697482182359209772074638146895e+28', '3.0663106098e+10', '-3.25451147889358514503318856302707319949426571e+38'); - T('-7.1333686145776974736348748988848e+21', '1.62872571577602913313701931021625476208216466585507507747565e+15', '-1.161830090267232160311720624731057789079310830776668256181105708907630639297571581978415512e+37'); - T('3.271164612807454534123020114329520320585016126992181854263e+9', '1.2e+0', '3925397535.3689454409476241371954243847020193523906182251156'); - T('5.65403478840648195280973451110905199e-11', '-8.18034629055388719783063246807413028100652148732e+15', '-462519.625080035971400064460401798364338310053450183034154989804876490732716900057668'); - T('9.44482836533037505193155281233841e+7', '-2.067341641721856797e+18', '-1.952568697856325861901776699253387295308175672267277e+26'); - T('2.5111226381792956734986397e+9', '-3.65360655537789827590991569211646510131461e+40', '-9.174654132209716853544084660541570252769600723604642707862516736017e+49'); - T('3.28741239410951819553626698975108924106326e-4', '-2.62227844885453731582e+18', '-862051067357068.82790743503875251297002496305525999591232187732'); - T('2.2772892974034099e+15', '6.177601666756392528944e+9', '1.40681861593257990831209635468300461456e+25'); - T('-6.50848921524116628e+6', '-1.144580764938138569486790679009e+30', '7.44949156457235930691999052822025420513027461652e+36'); - T('-1.4551927019037e+5', '-1.3e+0', '189175.051247481'); - T('-2.2911981542413e-12', '-4.53314582071257190328650375668441355537191e+31', '103863353373233077959.40247540692426855128645966365381883'); - T('-1.4602128592500770116678944302583044846446637e+30', '-1.427582797083786e-16', '208457475794593.76574073813183484779514002948555208066927682'); - T('1.6700609441460181151986345895359954232196252236e+46', '1.68243152329e+7', '2.809763178246720865741573493401128674173862301164254857644e+53'); - T('1.05083997100929235995740938763615497143966041793319335e+49', '-2.524496056110348375423188927e+27', '-2.65284136241607138569403868866619712437928400385166771000044188224282590147003545e+76'); - T('3.100786363878827739e-10', '-2.86304063902707066e+17', '-88776773.7272606582182668524792103774'); - T('2.502713517421925552323011065985443554034244e+42', '-1.22434e+2', '-3.06417226792036033073115536852861796094628629896e+44'); - T('-7.9489222898867596260428e-12', '-1.0788548012690995443645e+20', '857573297.73592957352865844131522518881758006'); - T('-1.0755932899013878523165928263944458509156806951399812108e-5', '-1.11614e+3', '0.01200512694590535037484641917251896792041027851073538628622312'); - T('-6.4497917487303e-17', '-1.004446091246e+12', '0.000064784681113628528184449538'); - T('3.084474103157632963053e-3', '-1.340722625329e+11', '-413542421.7344814434949807418969437'); - T('2.007409677882519495029550241974657552014828965e-7', '5.222151840789271106861316521519869023311e-5', '1.0482998144572396943190891671428030237589403912003291601853143252123470079223263003115e-11'); - T('-2.488498956742602121296262808732706422946353052713e+14', '-2.23172e+0', '555363289174160.000613929563550495557821783503480065636'); - T('-2.9688672164600521862302335509380676629e+23', '-2.34340486619e+9', '6.957257882124446358953277414968471000555340527351e+32'); - T('9.6116339631e+3', '4.941558826e-16', '4.74964546426381633206e-12'); - T('-3.510917030490276336587658593367687803429e-5', '1.180564327372e+12', '-41448634.02559652698690017440995500011934045540158588'); - T('1.249503228e-13', '5.879424084035664549067080010774031325182324371002647085e+2', '7.34635937178350612118448086199642691938843199011087712925229038e-11'); - T('4.5e-14', '1.6224776733813843876610106340899993022215e+40', '7.30114953021622974447454785340499685999675e+26'); - T('-5.98567638319111415891202402487540407421463486631972864107e+17', '-4.54793136981650498391485340038861239718e-18', '2.72224453926846670043530235188742096666820419395601557608672857967843105674091877295333165001826'); - T('8.92108677749256373753068098541e-2', '-4.701266425389385608e+0', '-0.4194040574501097838530020557051108449340791197928'); - T('1.0445719060110887517378867373770257738782319e+19', '5.799e-7', '6057472482958.3036713280051900493724627198667881'); - T('-1.03890765460564576e-14', '-1.34206940160748687807435785969646342084e+11', '0.0013942861743420366640453267735350857670895370671868416384'); - T('6.39749371e+3', '2.5234527992374730183240434196649804550511817034984615e+13', '161437734106036264.31022782519073602768462872676198492440927165'); - T('7.914175439604437611967814601653913774828611014407671e-5', '8.32100403850523895222657658496599490340606e+15', '658538857943.8750019874631462394490423060270196984652115300400533954357304447023953861129188626'); - T('-2.77837203022891121310898693340776679571778100244092e-20', '-1.29e-1', '3.5840999189952954649105931440960191664759374931487868e-21'); - T('2e+0', '-3.785802336743340316719402396217939978601e+36', '-7.571604673486680633438804792435879957202e+36'); - T('4.743769864188027932328495491240985e+24', '-5.9891655632114551610420257227248006595584101099705918e-15', '-28411223110.395218469762107537426925959156755933965249012600778016167994609252836864923'); - T('-1.696501776305087785563120340668939029159482e+36', '-2.20704482451194839742722899349253308746537e-4', '3.74425546516947120760454369427493495577833827584040523256623062924543284078088213834e+32'); - T('4.0131499023574625019065378616938094123e+12', '1.177461924351806545225557804503154113578719e+28', '4.7253312067420823358733892576894302742518304481762080832752336264184374791768437e+40'); - T('-4.62155685185e+11', '1.65583875e+7', '-7652552920621239187.5'); - T('-2.776598951854774016146205e+24', '3.5341178108401263600119940986415244381516593e+29', '-9.8128278093099833546223999989350419583424311768423158174047121479565e+53'); - T('1.12e+1', '-1.313e-3', '-0.0147056'); - T('-1.400922738050340928068459005e-15', '1.669774637213352507258799185019866e+5', '-2.33922525669194448953065643831459603361384442257691893159333e-10'); - T('7.50109935679466448466358706299522e+28', '-5.03e+0', '-3.77305297646771623578578429268659566e+29'); - T('-2.38556354949153835408756963109992783478e+26', '-4.99378748e+0', '1.19129973861952045985823120474150382502278725544e+27'); - T('-2.94e+3', '-8.61615789244720791078571983086407412571238524628016e+2', '2533150.42037947912577100163027403779295944126240636704'); - T('-5.80381041944064404262216137492215065819338e+3', '5.677138821495566551897442869075850448375293389320539675033e+37', '-3.294903744480694771704130256831336545059429064900653708388680125250845128363784484521559308407188154e+41'); - T('4.58722638789532058289643e+4', '-2.292585677620131398099727011e+18', '-1.051660951688994125699713239960797492772817868647073e+23'); - T('-2.288825775843864143902825178240786758e-14', '-1.022792029007781346809e+13', '0.2340992759320655142089938144423568704277940784273012755222'); - T('-1.432063323237600412250117767285385708080998075274668364678e-14', '-9.23012609141738073365221260162e-7', '1.321812504437725779783150336060293956648246141009265660188911448444031899918334929357836e-20'); - T('-6.0806e+3', '-2.9505713511085379204927821042777582523174534e-19', '1.794124415755057567934841086327133682904150714404e-15'); - T('-2.1971689665281316657e+12', '5.06674545635318811308850459987394e+4', '-111324958779966411.74779876603862140385999575942221858'); - T('2e+0', '-7.9498279886418403969498688721389799731931074e-8', '-1.58996559772836807938997377442779599463862148e-7'); - T('-4.31446036399049665749135715315413935059097082785e-3', '-5.09957831192823753379633205333620130303488425232090581e-8', '2.20019284998799462125934843416682842768267375970275614241257898190943464155895136069876374903975748085e-10'); - T('5.6684216814938374789992297e+22', '-2.466e+0', '-1.39783278665638032232121004402e+23'); - T('1.4726466812656072908248567521825181138629034e+8', '-3.47948862867465172229571384341201136985691220463e+47', '-5.124057381519144835787886917183826378015360092082220951469308136228382069243924518066722742e+55'); - T('4.3284361218626063643720235128240704200079650833e+42', '1.4641063731834e-17', '6.33729091193628179321704177525739784198638290425046666717722e+25'); - T('-8.504503345e+0', '-1.6126451605490274984274251623885903733401871912282447644089e+21', '1.37147461621872663968730195332709350199064207907267622573942269977705e+22'); - T('7.7309990341924055295760169328629798135433331298237e+42', '-5.99563576510407238824175823080622306644936962384464739893e+32', '-4.6352254309389028017492862352717241512621152128519099776509088009611537721357769693774958840413184214468641e+75'); - T('1.31099220633236524445967265953445007243e-2', '1.7160044747e+6', '22496.68492363164434927557667458365943093619102521'); - T('-4.71244448219168433e+17', '-3.661845152473087014511441938e+27', '1.725624198341216588965585001399981214121943154e+45'); - T('-1.6192523166690470927016735287431037161e+8', '2.1063669951791069077512605999904333513315096716248026e+52', '-3.41073963669898840947516853657748402318394608095484774905332123128295765265305433698894186e+60'); - T('-7.9546255726227721651851197010394795e+32', '-1.6352825346150572721595214349862e+4', '1.30080602683123181981363225429281630656820439050469581096187376829e+37'); - T('-4.65033001e+1', '-1.78402957430342048751447188050189199e+35', '8.2963262681107211387373788951990821828756199e+36'); - T('-1.0747111621539139354559268707283340006236738352646385975e+55', '3.4569644402407395181922991072e+11', '-3.715238271095879729064413458963542564475178869110977001563130120111735883029910152e+66'); - T('6.3652937877835233734658553177768102e+23', '-2.739191316024006563208208745870453e+33', '-1.74357574674381829401359393298451323167803405210747026007699767690206e+57'); - T('-1.38596e+1', '-2.01668654e+0', '27.950468769784'); - T('3.1e+1', '3.99532408029111361202961444968519230785160272779405533506e+35', '1.2385504648902452197291804794024096154339968456161571538686e+37'); - T('8.752130293411895486461455570456266543110235191058256368242e-9', '4e+0', '3.5008521173647581945845822281825066172440940764233025472968e-8'); - T('1.7666567718645722011538689771389140608479155e+5', '5.79849364509293864972181107177185722325631e+34', '1.0243948064717127403933357900393416605736130527033851840351793404944700646104585721805e+40'); - T('-1.88074285551825927e-1', '-3.5892420997049074284601888671967281230296723689451e+31', '6.750441435745360244959256403222145003141120524314248902529158196077e+30'); - T('-1.47443449855473683902404463491959178173791276282416e+11', '-1e+0', '147443449855.473683902404463491959178173791276282416'); - T('3.6674516424397608e+15', '-1.621851622618484198437145865398587268422606620129963582e+14', '-5.9480623971657509801533671437416378775411584549470454175597505327911856e+29'); - T('1.852799859644936708675646349852062e+33', '-4.07939656803717490972435529358637164801722794978e+42', '-7.55830538869531417546824622551390200682044219768001754254044667676246763456544636e+75'); - T('-3.6242110037e+0', '-1.1278795340499000045446830565915076472512673379718862044e+0', '4.08767341815167642135552034202789183114074114504811682323070735628'); - T('1.4274012216017920060904e-5', '7.3181715e-4', '1.04459669389914186078985917036e-8'); - T('-2.3756329516520898291145904664793103180184540970355072e+42', '-2.270259567e+3', '5.3933034361686053900907941458116470570432078963452065594973824e+45'); - T('4.929295626989455124178205785e+23', '-2.09905e+2', '-1.034683798583221577840626285300425e+26'); - T('2e+0', '-7.18e+2', '-1436'); - T('-6.31146996107278795852155517509682305e+35', '0e+0', '0'); - T('5.62374544362317131178832531913e+25', '-5.028617311364517574605216817082040721294634e+10', '-2.827966369251080786848400856170544022762054465978646727405142173480654842e+36'); - T('1.117412077388384866590003439477599421523143e+1', '-1.61338414788659224331375974470976667613219454556537612e-14', '-1.80281493231544618608867814708290945943864723087524854355671733079894613280168308370993407954516e-13'); - T('-4.2815998483904942107791375e-20', '6.9376170311235847480494e+17', '-0.0297041000286500510137199365646358515056073393925'); - T('-5.86940489151059825558e+20', '1.186355039910488859404215239846695660365360637322362023701281e+45', '-6.96319807431887432746494916572974977870149668248845809245935171579248369361139798e+65'); - T('-1.18405412e+8', '-2.8902735e+7', '3422240245601820'); - T('8.642504975809385471415e+17', '7.5109001974465513712091271541148798280521311221e+5', '6.49129923292395160193292467556975546756516371487956307369563014247715e+23'); - T('1.9923555553060256693196663e+21', '-7.20338812908556886039013517835885875517875e+8', '-1.4351710356009111862906055289239352924294602722052150633824346851125e+30'); - T('2.47767224522360228025008764692368247199028078613e+13', '0e+0', '0'); - T('9.159951983506971778872e-16', '4.35572412991174861535348709e-17', '3.989822388339430055462173193590823971110558676248e-32'); - T('-1.2584903289619528522717972e+12', '-1.9048067354292e-12', '2.39718085507923740095024952130919735824'); - T('4.8222e+3', '-3.915307e+6', '-18880393415.4'); - T('-1.145743e+0', '-1.40499568633e+6', '1609763.97264279319'); - T('2.2428057847026326379001011260518421703171e+33', '-5.8239094523813465985489463975171171984367780708670099e-3', '-1.306189780938522558635234193371919783301088290650039938567007189410557075386960930089941183929e+31'); - T('-6.26193904e-2', '-5e+0', '0.313096952'); - T('3.0019845694844821786908363e-13', '2.59803721322e+2', '7.799267625032905531560694408803215886e-11'); - T('-4.6771111417557737587832171805566392575e+17', '-2.41963969908791889847485e-18', '1.1316923795638693208841937864685962710236300920790258386423875'); - T('1.368790147448792225307101642172296e+32', '2.382834531191820192940003254735240956141547e+34', '3.261600429296125258884096700972863323244136904532628866746657143899537981912e+66'); - T('2.5158133090673533e+6', '-4.50742632133e-15', '-1.1339843128842514618218435889e-8'); - T('5.45290152125555300060203251343e+25', '-2.3624677987030823546e+17', '-1.2882304253465295333570852578315749764228120522278e+43'); - T('9.10645280474914206117691354111985771303355e-16', '-7.46868647274590839548386658906247692173836809486984638e-1', '-6.8013240877528954266058199752847353931423569799021123026453827361109324522139420649351012286049e-16'); - T('-2.8051865003118537531e-11', '5.348454627859893296622387289464589021238848335043530157e+29', '-15003412719603032216.1087879676948803801286988008339781735642916313334822367'); - T('-1.7561380718435796202851095012247e-5', '6.128268306422028776297429697021742180071567401e+35', '-1.07620852873801007780502248253390491162313640920758504239716098138490580960047e+31'); - T('-4.378710689215449958543087541470086791901689639419136544e+54', '-1.9783905014509610108940939605033592e+20', '8.6627996361456371392438623941839474271341962222925165084899855051115783079519792754786048e+74'); - T('1.121716338034368180915e+5', '-8.734522008301422444882962812919703e+24', '-9.797656041632466817652476303536047619163255652072068245e+29'); - T('-4.8582993368534106923769355421057e+16', '6.98715048402856908663443073960052421774798629769213e+50', '-3.3945668563050984730942842784405126039162330280795884968022377310599078522350518141e+67'); - T('-1.147697695159307927e+18', '-3.14666e+5', '3.61141442944998788157382e+23'); - T('5.21292708738338107676256190382983420967375413562063935697e+56', '2.0716e+0', '1.0799099754223412238621323239973884548760149067351716491899052e+57'); - T('2.40767713664497193342119078614448816473118895591100004e+6', '-1.9484666614e-19', '-4.691278632167740060209890691091392232345592973376458043474066456e-13'); - T('8.84323002496195395098550834342755e-16', '2.074843038583988890307904822332637330993388021856189e-20', '1.834831425588922445909395217500126101937521988613705732420133880473831365442944060695e-35'); - T('1.4139590392221052468075225255352223739775768735149e+28', '-8.5071158697e+10', '-1.202871338167213628815991013832091374398315253263031540940853e+39'); - T('7.60905256044027294859360806368103238783888705635835726e+22', '7.626236267e+6', '5.802843259393881904794360045962793471613853022211697708475474842e+29'); - T('-6.49983097039610238828951299410887525e+23', '4.100424999934130974333860679470965920172048633176651e+51', '-2.665206940635830060248743820457885128628819326617038782969842356414737979985236017178775e+75'); - T('-6.44091388086048854999712e-2', '-6.4903080679715410063843348214810202569974e+22', '4.1803515326058717691453471440857864505008045873090454741429847488e+21'); - T('2.78029662683945916043494079823001566462283856388915e+47', '1.72292937157713197163667918785093807960421637821735095106e+24', '4.790254720078529163251026200113350912677847102429264772360101417505440468715765792439145764556851324914999e+71'); - T('-4.4878498622339775396888494885583054208940416614412529627e+46', '1.724e+2', '-7.7370531624913772784235765182745185456213278243247201076948e+48'); - T('1.352549686604181695307046110709197982598092383194e+48', '-2.3555586703119991494894059087716726417170242847945e-13', '-3.186010141308257402498477975479367405804581618494048262835305948601981051698397443353715881543633e+35'); - T('-2.019515564917190266675805443119046e-17', '-1.4788018868472268212026912165159431467984470085815808703e+27', '29864634279.168841526151723443673432805367034874393502449296552705312364840770199191857338'); - T('-2.1655275560855920418985633841581563513185032946266e+30', '-5.9625533125793712547572194147395797672923522437e+21', '1.291207350302005700228376617552289919885062421326450164415825007449363425520444307151212866370242e+52'); - T('1.012506744028479038160052533215313925528515964937e-1', '-2.212147e+0', '-0.2239813756282367818828645731194657054416130006287489739'); - T('1.433496071288945453514799813e+23', '1.3979267765863662e+5', '2.0039225421861753263084300184572426981095206e+28'); - T('-1.0851e+3', '8.013590881173773221229825407826356e-3', '-8.6955474651616613223564835500323788956'); - T('1.0544140083165e-20', '2.7639893671307065522219750157782938300627387865356111e-13', '2.91438910754047439029710260584090912925195329258292696061880971315e-33'); - T('6.9910144713252743945138327844029390845842716601381876e+52', '-8.482563824399426864364409762208780384877e-12', '-5.93017264503166569047842082409955073105581203136314428395603709690554785251717257461332289252e+41'); - T('-5.359798702e+9', '-4.932148432974659892667336636982770197907445436167e+48', '2.6435322769128916091609850224697296903108609164903710455234e+58'); - T('-1.71427280396517551988450013042709589140000549e+38', '2.403519034309521273463675792599073e+22', '-4.12028731432945393654068892074968286875285779764235024381198392132877356891077e+60'); - T('-3.1889196169851645e+16', '6.3303265668790672589901e+16', '-2.018690257104300648907301509647095237145e+33'); - T('-1.23339224241833842568898143251348600283e+19', '3.077450385078067e+0', '-37957034313826161513.8572222562474073059332490133292961'); - T('2.92677040682294450913892109671419035013083833e+15', '-1.8864e-13', '-552.1059695430802522039660756841648676486813425712'); - T('-8.6400999e+3', '-3e+0', '25920.2997'); - T('2.8174216976e+7', '-3.80064379799368614537758774048216223e+5', '-10708016301316.282693791323644782201752565201648'); - T('1.025429e+3', '-3.7942691388774640999508942702866141989404398978535327058969e-11', '-3.8907536088099791345485455606857325114052963440160501890751522701e-8'); - T('7.5475945189824540258952479977984445146259416e+1', '2.241307785984759464484472e-1', '16.9164823608512696233027083957170305568142612592815464214011615788352'); - T('-2.390294178360939572894052478069342172015510960221e-5', '1.0258531018946647560644677321558488928826911786e+6', '-24.520906973123289161325866068624287873503133376117055452224336029773591730793542320906922064706'); - T('4.13335e+0', '-4.9088577675430835705980477517385482283e+2', '-2029.0027253474204476531440674648528319443805'); - T('-9.49e+0', '3.11206e+1', '-295.334494'); - T('-3.08616078174107176e+14', '2.076558336804330489690054e+22', '-6.40859290004299236964222747218844417227504e+36'); - T('5.34715396168270921229718951112033768e+33', '1.185276582214392362269858422207e+30', '6.33785637227742951291731320592812398407062758490420416723385085976e+63'); - T('3.09857552788127670265426890018069173e+27', '-2.775660244927720047697549780961273164125e+26', '-8.60059290864598393204134197688911975222918946093511063812459672352832018625e+53'); - T('-2.152994e+4', '2.65842427162e+2', '-5723571.50625223028'); - T('5.330956358309028663608422004436504723721138561972562601791e+36', '-2.7e+0', '-1.43935821674343773917427394119785627540470741173259190248357e+37'); - T('-9.47262472923053e-20', '1.7815435405588685078649855417813049031471e-4', '-1.6875893398498851540266228993423166652387013603958400963e-23'); - T('-3.7245117604208154109238688461979388885871895e-5', '1.099513130741858342635426870578056147376018748384434822302e-13', '-4.095149586185160991329081422183979955901725647516234149636345755464052206534381389581417571266100229e-18'); - T('1.0834155200334824535073546679153022e+1', '-3.2878072e+3', '-35620.6134735782785171514593012553956333584'); - T('4.1364165902025092463453669062207235153719556580492365e+19', '6.95e+0', '287480953019074392621.00299998234028431835091823442193675'); - T('8.42371582961533136243e+0', '-4.7071941235449e-10', '-3.9652065651577439895485473058278107e-9'); - T('-7.45065795641536747833628483446224560146193991951403486e+17', '1.27523917338709350722670736519147669728e+36', '-9.5013708935291045870600560683168551870317994342017416888060151292391323390390803175995871808e+53'); - T('2.05416636316876816247008603104084729112e+37', '-2.67555245581664e+14', '-5.4960298576321336552408203766121162314254132314202368e+51'); - T('6.02518139223983254774103596e+1', '-5.541610436514578623372748271926826526e+28', '-3.338920808512969500784406497155751094267976654888337866644787496e+30'); - T('-1.886901000866449319960349324191903886e+27', '2.9119588739125107881913973682892608e-14', '-54945781136674.553048031354602674611785517327046962179124845815195874688'); - T('-3.167630633483217259922541256223568e+20', '-1.976822247538314258143070135525568198864845149591441e-1', '62618427082535077150.84042450833457702256004904708731141210786339513630567393755281488'); - T('-4.342121805414178979168499106872259725865474348828e+4', '2.87800764291519653e+5', '-12496659742.45073888635509104978249087676725149425279111442739516684'); - T('3.48934964368845845248178606547230673370875533672897e+45', '3.60994798002748312248366391691804980174190472460657e+19', '1.25963706978427685634963685436483508162346103715778631358243181904380097203373116193801232752539713329e+65'); - T('5.42527560030712498895e+17', '3.3118136084722e+4', '1.796750156280932065622648405138219e+22'); - T('1.1270004847878401285903765398526874938853992e+30', '2.0458381647e+0', '2.30566060341436511755234793837415859085314757145484824e+30'); - T('6.25593016708055943396626471164327645453174090870769922934835e+33', '5e+0', '3.127965083540279716983132355821638227265870454353849614674175e+34'); - T('2.3033584574555686865161618899734095161045e+20', '1.3010709745e+8', '2.99683283286453354141726776018746569820565525883525e+28'); - T('1.34211871248298281139772721139220298063196737768440691e-20', '-1.478359144e+9', '-1.98413347093272458362465744377928424672132387150944450161528504e-11'); - T('-6e+0', '1.05671309643762e-9', '-6.34027857862572e-9'); - T('6.4756599396864465846766547296e+24', '2.94968462813429622e+16', '1.9101154581118175282669146567918601241230402112e+41'); - T('-3.091e+1', '5.667830565788117917508080275569794124182460349e+18', '-175192642788510724830.17476131786233637847984938759'); - T('1e+0', '-4.6172103778523998784e+19', '-46172103778523998784'); - T('-2.5570672065082385679679091913879025e+1', '-1.2063049743853270960595806834829465677969295004031501739e+29', '3.08460289104848063763132960929740754910194979655799625586510645610283250550119127523124475e+30'); - T('-3.70293468184958402068082830264510960391603268883687825303e+45', '1.411163039553177355119999727715e+20', '-5.22544456090573674099746706657675074188431054961983786246940351702162084606420487372645e+65'); - T('1.74787882197705299292198556022976167231705195e+35', '7.7333671996220816e+0', '1.351698875079142520032926258655417527276870238724265543433912e+36'); - T('-4.096618331817365021e+11', '-1.013711236829518925258935118422711554106672e+5', '41527880359650616.57506268237434302892786107960903774595520112'); - T('2.12048782119154454967332210439e+28', '-9.2197418205e+4', '-1.9550350244900609425611967419011549641995e+33'); - T('-1.1505865830923532120744213733257299415660413583393e+16', '-8.46565236265629547979844640868246149886017535754876e-14', '974.0466025596414007536363196582134432561026804409558931080223917261617484174979797491453160432374268'); - T('9.07420636404752362993662380875781571271e-14', '2.51474955483770475273773727474896143461917754897697324764e-9', '2.28193564144939774816732185434917998866319599098823390828301213887829237747907197261589099255044e-22'); - T('1.246260472438897833535289124112549387151e+19', '-6.680412909470472488789414671059720951e+11', '-8.325534548643583067029478564395020366314784333266559701669016772756124900601e+30'); - T('4.0294278740792929940247525071574944742596836e+33', '6.00085175738377949776908065147e+14', '2.4179999339419911926322112001876929096606969209945947707543711809044074892e+48'); - T('1.55945832e+8', '1.1527307e+3', '179763548083.4424'); - T('-3.211101384979001257677085706325437228950660943386036671e+5', '9.228686729748967e+7', '-29634248739434.237821402397860319787760148942989060826624350048886368857'); - T('7.1768007105380238999489810862e+28', '-3.15802039762103328762026415391128e+24', '-2.2664483033540204459973246271168430597758318255590370472832336e+53'); - T('-8.146245193307731671e+1', '2.43845e+5', '-19864211.59162123829314995'); - T('-1.7260614660794362658661235883950941802e+20', '-6.765975e+4', '1.1678488727956813788943545545991497345878695e+25'); - T('-1.0423339556844604967203052423172210806005595277e-15', '-1.65790186e-3', '1.728087403870424630609117961005471539558877558014551522e-18'); - T('3.3874450138496810026558092372911790009595011319748e-7', '-1.844083119777027949884472374398549549372684360122809715262e+1', '-0.0000062467301692130573949905677401149904072205407708817196623282883165369601854286961699466138329393918717593976'); - T('-4.5677632943648704446515762998538554442851348e-17', '3.582872388623075466216438867772511708e+23', '-16365712.9851458715575421433474376658852503648131234292126180950207040799233582384'); - T('-2.86829101569688038860522495486e+2', '3.7e+0', '-1061.2676758078457437839332332982'); - T('1.06077027679826318938182294804181993899494704147284057e+37', '-3.261253544293047623648926725904240616776040078855e+31', '-3.45944082488905300826935851931788717711099607836502248838085413796777056450136214579772327128364314735e+68'); - T('-2.18507353576174076070959256350000774887e+0', '-1.59831147321681301466931141149354431e+1', '34.924281020304184328565238680515232418857862826204480512208558649806974297'); - T('-1.99647745343238059689196134517981116780466772090884720632224e-1', '8.6467613748664636508931985451006098243078232494163917e+32', '-1.7263064130130867409299452087506032624045135897393310593388261234352860098403285199668529693824805691038528261408e+32'); - T('-6e+0', '-3.4876006775596915566721213748733893e+7', '209256040.653581493400327282492403358'); - T('5.28124391735772273591469590185765758579874870468433745e+33', '-2.147e+0', '-1.133883069056703071400885210128839083670991346895727250515e+34'); - T('6.85038e+0', '-1.5901255569632960384981532502369e-9', '-1.0892964312910223916206979062357855022e-8'); - T('7.983812710598619216930700499e-18', '-1.335137072858e+8', '-1.0659484332675135134229403579270339956142e-9'); - T('-1.960334206940101e+2', '-2.959228e-9', '5.801075874534941202028e-7'); - T('1e+0', '-9.164e+1', '-91.64'); - T('2.027899432561029386047096809176e+12', '1.40213651157523255556127427614979949106e-5', '28433918.3619651531093388731497850317019747168257172892378111473796656'); - T('-8.3594749784821954269345060852858640828490521460887e-13', '-7.164172033751721e-15', '5.98887168576894141563842978474039341215235493797906672056370436527e-27'); - T('4.550077739716154666542802337e+11', '-2.7306574188036000270848865e+19', '-1.24247035360890335495046606524591731837703486895797505e+31'); - T('9.4633378246343026774101810918412358e+19', '1.578450860979302005254127126947731754671912e+27', '1.49374137370320099547200047736473092846440961340814649863546698920428216288496e+47'); - T('-5.2190603156319182229289905569617150480323e+40', '4.04355690292489982440257971296300398805279069834596e+48', '-2.1103567366054849391298527839468485796895719049012578983409941699614247722561603581562654508e+89'); - T('-5.13097206174328014241389093854003358779365258633983078e+53', '-1.59332306217979e+12', '8.1752961173757536414155211183332535775263410017806193494494865359362e+65'); - T('-3.00025764484794075488331e+16', '1.21837943722606727484247960651563238163989e+31', '-3.6554522208630400771401722295434531318286045235250273221033912359e+47'); - T('-8.034506919e+9', '9.59917303867585553e-16', '-0.000007712462219591941585402941207'); - T('-1.03623135167581303e+11', '-6.0727847191820070012464062e-17', '0.000006292809917994193771401113453514323750632786'); - T('-1.776830835655537305590797996218970905e+19', '1.4297825967432706650609604367607227448e+19', '-2.540481806177089727480969780595820579837949700040264880146150148682940044e+38'); - T('-7.06672750227869765640275129774849369371986497683548567624e+47', '0e+0', '0'); - T('1.201486e+6', '-6.4618819204288244e+10', '-77638606610483465.130584'); - T('-8.392439e+1', '-4.559646760722e+0', '382.66557300906980958'); - T('-4.892684791905e+0', '1.325742128654573684900693679335408e+0', '-6.48643835085599458713483949506930948917827224'); - T('-5.583623025078921446646733308770747651954925640892627777043e+48', '-2.49487928392226886507353963712136114e+9', '1.393046541450079222756134578078800193311267254493670540053212261265672987328881907800860430902e+58'); - T('-2.96526320854720999501457709614986308646e+12', '1.58934709e+3', '-4712832451588571.3331953326153464351003636194014'); - T('-2.278047134327102481e-9', '6.53948173493481078043032097446045568663006609238767572331335e+59', '-1.489724762625267407514295696211403251163397687148157704642933789435816632542135e+51'); - T('-4.34649668141838505956e+10', '2.7566141566303188003001360098750592488e+19', '-1.1981614283744620987582158070935888399955230644767716858528e+30'); - T('-3e-10', '3.285427839965717144526763107629871339325200898862235e+18', '-985628351.9897151433580289322889614017975602696586705'); - T('2.6431444802225494336841837930134668e+25', '1.5757672131509605631302369006921e-6', '41649804115556309200.4022799068651144359462695399494757742954037228'); - T('5.4197814884600979459047471764155193322e+12', '-3.45317672489168691123605172192567891610375269351773e-14', '-0.18715463289949233044577799707655967434015297575177174844144791767778460868554918438459906'); - T('2.1804041368605641467299918902653637965488411876504e-18', '1.5595945850567196835592942943641516156866395747026257882e+46', '3.40054648508300657595934821590957250693570708065275875065240265811212908037363934338779869619908640604528e+28'); - T('1.6644802913995172764608435e+25', '-1.64481887574951745057302561e+14', '-2.737768601606983206750201541817125086018588487702035e+39'); - T('1.345297580765936668864521475544600213e+34', '5.255894981691269736920878216903973555596e+1', '7.070742803629092178385260348541240791936901232154070386845812623023948941948e+35'); - T('-1.236303590387333100113303929204537712340659855471201673025413e+21', '-7.9e+2', '9.7667983640599314908951010407158479274912128582224932169007627e+23'); - T('1.8325580806128635358765e+2', '-3.171748e+0', '-581.2412427067688694189217122'); - T('-1.0243e+2', '-3.409589101402e-3', '0.34924421165660686'); - T('-1.273997601117917175698667546852761764039275631891486e-10', '7.856245279828564906705161224850856859963860198e+2', '-1.0008837640295551637408536690012436719563557239798756225068083188519724150459019497133976810474228e-7'); - T('2e+0', '2.0782554146127983844e+17', '415651082922559676.88'); - T('-1.0017426e+1', '1.05631201445e+2', '-1058.15274376638057'); - T('1.23321e+0', '2.76e+2', '340.36596'); - T('6.5482994824671797204789687e+6', '-1.810350618538593530488926394601031399259372856417988086e+12', '-11854718018460410708.6469761335753156476928972597617168054353701088346263301669082'); - T('-1.8464263e+0', '1.2578353631044943640519616250643946541369931149527985242e-12', '-2.32250029550618804198731651110963748297794789036777045368406646e-12'); - T('2.306905117986512123647e-15', '1.92224194054550245e-13', '4.43442977065274435217191058558414143515e-28'); - T('-7.7660157326825169689845327710896583341071831411984679e+23', '3.6431726508659866242336616738158288e+18', '-2.829293612350392270265658763343483917211646344882471424632373955590786112801497332869552e+42'); - T('-1.804410431608216174757910743628838673593296632e-7', '-2.708299883920527521842766517861172987221865596e+20', '48868845624695.20830931105195115261702836652954741973993651473991827943522861106002863472672'); - T('-1.800090865364229e+5', '-5.8264534155111055348482827550238e+10', '10488145570731753.6804095274061076304171665636502'); - T('-3.60855354781654573978597356957428456e-15', '1.866546962201332812e-19', '-6.73553466261781541696603311041890681571157507335298272e-34'); - T('-4.513629265554556014503659605626189283778885640833465154e+54', '-1.6679267957795545731497e-20', '7.5284031982332348463844383049275530663291324432825482209928639026696189755538e+34'); - T('1.0941972e-2', '3.45343163878253161341020408675072450114411418654261458e+9', '37787352.29547257500304927763151199847123286539395206554115176'); - T('1.24194883524432e-3', '0e+0', '0'); - T('4.5115e-19', '-4.72349600277e+11', '-2.1310052216496855e-7'); - T('5.7379616e+1', '-1.014091e-3', '-0.058188152169056'); - T('3.665008e-19', '1.20318611886502374360861219376e+18', '0.440968675112926294051551255902795008'); - T('3.33610310938677239000000947724228838577011e+13', '-6.096671817812092833664313029588e+1', '-2033912580831362.881020502005617192477576549025176845225368255784259601468'); - T('2.583458940580655231541895311105492814e+17', '-1.5156221815587830068151379463e+26', '-3.9155476754903950432396966951972758516587513180224498790533678882e+43'); - T('3.702736747441730847035655529e+20', '1.0018677975945079169067e+10', '3.7096527102316985801620293314995993182468964321443e+30'); - T('-2.83630154283079925e+17', '6.41074464694029283507262773575118086890104876e+10', '-1.818280493281103999466755581106175564517622369590252755402143e+28'); - T('4.4674110594344555786220486754e+28', '-6.727853004096336279764957767621729768e+4', '-3.00560849167492982673836524473329588821711484064022839144411493072e+33'); - T('-1.5688404306246196345593833419224858e+19', '2.63605019e+6', '-4.135542115227710406357993024757603658362302e+25'); - T('0e+0', '-2.64954402306017667049973249287275628634791783589648e+50', '0'); - T('-3.5009076896538e+3', '-6.6430229e+3', '23256609.95315628647202'); - T('-1.521924675204764636287003e-12', '3.7693609744915860629583e-20', '-5.7366834768326222380785330790588380575060209749e-32'); - T('1.11236129544558345600503719108591547020411211e+44', '-3.1253884214607362312987e+14', '-3.476561113266691720093444060759595557505158595083676675212825697257e+58'); - T('1.33815573609017992048200249790557568805710357380887861899e+52', '-2.5e+0', '-3.345389340225449801205006244763939220142758934522196547475e+52'); - T('1.611548475376932804e-7', '4.9802375112902234248e+15', '802589416.83347697323623227532963471392'); - T('4.166575179521503556226149051605877512974975774232e+25', '6.399872460241347446318418520381529620092936e+33', '2.6665549744944818866755013936324316057322003893851265592949522620090738985837783100394025152e+59'); - T('2.35506389265e+0', '4.006712248230173437693154988324e-9', '9.4360633440453853293582738230620847394186e-9'); - T('-7.242328039718679745240983432e-1', '-6.92464621048019340876524126396387834446077132758404786e+24', '5.015055941529240335287534191035479214939020902123532657328599638598099582175505552e+24'); - T('-4.193894403896958727143737666044e+30', '3.261588840189662e-1', '-1.3678759184684195494824524833564292922177237128e+30'); - T('1.5765195258987684156516463952714058260238e+39', '-6.4745770126610248e+16', '-1.020729708239542312739313896297935609020156882675181719024e+56'); - T('-2.040489518370981132782249800266e+7', '-1.174334689904e+12', '23962176258085484397.98077967950839046714464'); - T('-2.999e+0', '-2.745829033902881255806415521483615257e+36', '8.234741272674740886163440148929362155743e+36'); - T('-1.421995402238039424217983713e-10', '-6.62685949e+4', '0.00000942336372605751879737308119715948637'); - T('-2.91998097054133242068815e+15', '-2.008599636825475699484477749463054e+31', '5.8650727169666203572881875569551215932356120857036806101e+46'); - T('2.6e+0', '7.4773359790825494286810609654593232269035859893021495060685e-13', '1.94410735456146285145707585101942403899493235721855887157781e-12'); - T('7.50302677e+7', '-9.16389319e+6', '-687569359219906.963'); - T('-3.4496300003784699749429090893221619407742937e+17', '2e+0', '-689926000075693994.98858181786443238815485874'); - T('5.58909651552271e+14', '-2.9302356759838764984959768e+18', '-1.6377370006301816824127798758929684033128e+33'); - T('-3.21467608558886180085443357632011447658817714543954802587541e+59', '-6.05654450954627843543147e+21', '1.94698287961429431939792169536178895975298009949974623312844888292490502665078131527e+81'); - T('1.4473044599244751554764848267885956615840337279448e+31', '3.2978760548379995995551379e-19', '4773030722445.16982161490157947831158781808944842335126216028865139564758792'); - T('-1.52212585961814532229294847288693e+27', '5.4807677063154665054707604339457540829262049e-20', '-83424182.56342800099858567431320449627410280372645389871308978482983651711957'); - T('-9.90550793992759173966e+6', '3.335265462233194052458441615728696e+23', '-3.303749851791717304829547839188687665630386634122328336e+30'); - T('2.51287438279233642085429923935090523723e+30', '-9.451335136867210002148028438967398611467216454584204034e+38', '-2.375001794861871280485178924285492901455882867966860732042873907744155803603055976356149298582e+69'); - T('3.4082333651834518484189e+13', '4.35506385179170328272063457227625384554944253e+44', '1.4843073927180842671942017049002743738759608944705687993398956915817e+58'); - T('6.5818547070316952187958008e-6', '-3.73951282e+8', '-2461.2930056322368417019602053766256'); - T('1.97206174719719816981292592386e+16', '-9.0105789e+2', '-17769417968792207968.034967276795922554'); - T('3.6619571048211390692219928266376703435e+7', '-2.4799589894315235042761055970638006e+26', '-9.0815034410138196343173744241842493541845089867523197724164419200175061e+33'); - T('-7.84666331967208510490549760574105355103150267368e+19', '1.619717764380338390313718e+9', '-1.270937996998447419567301371334187807713815536655396765563064753098154224e+29'); - T('9.483006538328174932945681176608e+30', '-5.3373488401022043702090517246506626e+23', '-5.06141139480275047286128600549610642611475683804095134453348204608e+54'); - T('-1.4803912145480433328776377901902060963e+8', '-1.582058e+1', '2342064764.1054483391257298870727370763001854'); - T('8.9882523984348881655495577517148277303020468059964733526e-10', '-1.9880593317254807355650321572764e-8', '-1.786917905661241317492297819003818060408519912904334361445796515881479577099002479285864e-17'); - T('-1.28471301581497146597153639797443e+32', '1.42004323959128318e+2', '-1.8243480329229795026092654483949144472588365290874e+34'); - T('9.7783e+3', '-1.36173859052909811217858436668287617315269353636409624e+45', '-1.3315488459770680070315851512735168083938983206629042263592e+49'); - T('-4.67119137023742882426401e+14', '-1.212047464364320398948015745451394730100809445563379321597567e-2', '5661705655856.77098789712337972493426181265394901439758588512945491280590876618166367'); - T('4.21209472e-13', '-4.905686e-9', '-2.066321409857792e-21'); - T('-8.0534398142355474142562564558981481e+19', '-3.52823954947651480531133809737181713783475797e+44', '2.8414464861914654893810641177621530490552863751100871276411283589068922334715357e+64'); - T('4.1668071977029939763287789711116957000695558377e-7', '-1.3024216206228e+9', '-542.693978325508121622979460863479145783998910882101044971956'); - T('2.14936794322219777817392300235280096983947067201554505296068e-1', '5.56270924878341e+7', '11956308.9368006948399328359990270847329026003904275869850287225663085663188'); - T('4.4808187810392761874440073637915549517e+38', '-7.646754766255997951108787766099794e+20', '-3.42637223706414760467636032872081913139464887999833237904238953370499498e+59'); - T('2.6590306926035e-19', '6.065851175402e+9', '1.6129284452158934622539107e-9'); - T('-2.99e-3', '5.30673982e+7', '-158671.520618'); - T('2.7453398931708285228618465251335055626300456581132e+13', '-3.22074749108902263854425833e+12', '-8.842046573116551400389407780741144904662936292441998341089622224330041182956e+25'); - T('-1.927554010995289666334e+11', '6.691946123062138e+4', '-12899087590872802.405021000232368662092'); - T('3.1043442867282686296635094758709963529734603e-10', '-6.9061694467717526338079e-19', '-2.143912766526321799419146642311363281841178348205083711921322847637e-28'); - T('-9.9460755574581062016784211082305572914306783520097982603599e+8', '-1.69419433e+4', '16850584815197.112739421417524916526495882012852028744317145606339367'); - T('2.61564884146360410916221e+1', '-3.37673411255562774e+10', '-883235066943.67590562874468917360320357054'); - T('-6.63e+3', '-2.3664010008e+2', '1568923.8635304'); - T('2.6042340596970639861661053132244e-13', '-4.19696881552846756035609e+12', '-1.0929889136885679117123078859859216841502622841450076596'); - T('9.66932408746122723475707863151647060844849114776240053344e+35', '3.543132415517187808951809e+20', '3.425969561042502580998764203892614576219316524854247783921994540516844698885299296e+56'); - T('-8.75613931133e+11', '2.85579203853134364863246620418932562599339642887412e+50', '-2.50057129335675362001562521254298208477229393538495184240597796e+62'); - T('-2.50801681357e+11', '5.6482598133343504471083657127414336e-11', '-14.165930579254300605382428195360012246785733952'); - T('-2.30985517042381424317138251138e+7', '-1.356837662673868976569988292803227160100334665194252e-8', '0.313409849055299940654534970732121932438107278390194102752542104703069838330058776'); - T('5.862908424337665828006849479349960917695532524969888e+2', '-7.671778766584342308528805252661904591265896365900259438e+11', '-449789363602621.67756677207730170927431389968466555033513219445179870196178056661700171117319697232337802944'); - T('9.581282282850454426590480159624386252965047e+42', '-3e+0', '-2.8743846848551363279771440478873158758895141e+43'); - T('6.80255891e+1', '6.4939628006286648775556960482793713797e-10', '4.4175564510625077864220559174474627948177228127e-8'); - T('1.17e+1', '4.39880043917181857989519e+14', '5146596513831027.7384773723'); - T('5.18057e+5', '1.12095183227955985516792e+15', '580716943375251939888.72713144'); - T('7.9079109607883946443459466318246948653463050994769e+5', '3.36736267476382737799206797447753274243e-8', '0.026628804204714596632325780373652132822901517398195299752987744361561977288621298015434867'); - T('1.9192337832e+6', '4.3746589806622647519097525128325765043728672520610978379588e-6', '8.39599330566629402128776374017937235269096935960460880109100828973216'); - T('1.97054154322487963934e-16', '-5.29966794868061391983563001785802904827e+35', '-104432158581725291847.012347689094982662143786123082010509418'); - T('6.9435803780806824e+0', '1.312029461736620484829099495123927022691450102807689e+51', '9.1101820259781574883358006463573816901697004118371527017012130869736e+51'); - T('-2.02777011165205949332910260826373220997764e+19', '1.719346099690327466591195210611602452021664087e+46', '-3.48643863253758833917742037463014837753623268813161576588808665593545590271493786101468e+65'); - T('-1.35689510306015930639203912344e-5', '-1.7775524374291928790914680036598415373039480612e+32', '2.411952197780322048592902790431885908730809493500413918235779385964135474528e+27'); - T('-1.197093336042660715753664692387461089572e+10', '9.30322759e-19', '-1.113683175167722258780864100982789097855769169148e-8'); - T('-7.22954e+3', '-1.80621201849899035625232371577275379091004324e-18', '1.30580820362191907401404243961277544415357940053096e-14'); - T('-2.5487146811e+1', '1.23224022125341461664322693e+11', '-3140628742550.490076943920877369882023'); - T('-1.18509703682338023839102000456883783748380745862220202e+28', '-6.3419775864e-20', '751585884.5242932927360537668009595161218552675515150636252804528'); - T('7.1388416426585452586630469980942729444722426421412280025841e+11', '2.2273053664463959959973918980036896886955225978954e+4', '15900380300904382.68571628113627797346230258274544097276905843398058418502349718417824485312566047149642150314'); - T('-4.048812287518331136928265811389922096053793e+42', '1.883843038956722868136968070669521788203167379034479609892e+28', '-7.627326843883853713943674629620475969636818573439332541709592124635715493176124730990752735286920356e+70'); - T('-4.40496773173133229276988080861e+25', '2.6836361405552532182670933448535260065953975259e+0', '-1.1821330602853900620632833373905984586754469500681938106134905203144285417999e+26'); - T('-2.10698470492551613923273067e+22', '4.9829981981459258350705361168e+25', '-1.0499100988164872148563717105895284884047064402922062256e+48'); - T('4.153010660772414005280043833935812744967827327617095506753e-20', '2.527751586e-1', '1.0497779284442377486895243175380771288291439046358254767908369460258e-20'); - T('-1.775786834688476262481212524832086861722161695595273e+16', '-7.18e-17', '1.275014947306325956461510592829438366716512097437406014'); - T('-8.4572173659763154903842071410504969649015559593e-5', '1.55e+1', '-0.0013108686917263289010095521068628270295597411736915'); - T('2.1957687570313298348687272820162816911371646883313165861e+55', '-2.38569977592e-5', '-5.238445031621780511465933279321833876337532446936158618177349386712e+50'); - T('-1.27304464823058989292690796372853e+19', '7.469e+2', '-9.50837047763427591027107558108839057e+21'); - T('1.075014243303345850436753650150338343736e+25', '6.02230306841873236690335765889046842703055475561e+27', '6.47406157603958142830356266103466419129027532770065365087223464829450025112366565435896e+52'); - T('5.4644781816078472076480587668e-10', '5.533388289372726449619555652757e+18', '3023707957.76416324809553379608185627596205958651886704400676'); - T('-3.51050282698153075e-6', '-2.38e+2', '0.0008354996728216043185'); - T('6.8429855416436924582601339528425e+26', '-5.06163347121826253493439522309e-18', '-3463668466.0646345473598332283493482158871668931014551327133325'); - T('-6.6943286454175063790486144e+19', '3.4328180225062095992833728348740385020789e+37', '-2.298041202256879703336604670399729877443829865654374596865856447616e+57'); - T('3.4586536216937580446126883522083952059e+12', '-2.88703672447082268049428783480859803803275492e+13', '-9.985260023053895125434393341048712560458518029877932175692101389180863832497638028e+25'); - T('1.544220975398677252000528288503556128937132048384443331e+49', '0e+0', '0'); - T('7.7e+0', '5.629239278180308472085767973107775059451282267e-16', '4.33451424419883752350604133929298679577748734559e-15'); - T('1.072717719201024052696349931792614756e+25', '1.3771846282397089347926178e-3', '1.4773303533240107890345190437679728361254161112010424681482568e+22'); - T('-6.2982194473322433078922784904265197191653069665364692e+7', '-2.8678684613182319044997019428886e-19', '1.806246491546528554076417787115541085256514512890108233024447001160805124352749293112e-11'); - T('-1.732465708088e+1', '2.71524489294637185383888961456871107141931061365e+31', '-4.7040686660906618703715451371754514270759411014339610482012e+32'); - T('-8.96598237114090468243115825396177729e-12', '7.604366591101533e+15', '-68180.61679950920120868401395898211540605801952358557'); - T('-9.71839881931499436381251357007593505557676492579357e+50', '6.57868431363921445315728822689471152257263421455e-10', '-6.39342778663174158137496675720663924284622907149091698424887623612741936565068134530253299923904435e+41'); - T('-1.006931641466488693025e-9', '-3.4521295426580450451664697531545584755870088979e+4', '0.000034760584669436241976889349243420680611555496619415686043504166671475'); - T('6.00947607e+5', '6.812758675764029679963178704882229955116307e+38', '4.094111023268882532850848090812335308350862098327349e+44'); - T('-9.6836087377e-15', '-2.6459022649270745998e-12', '2.562188229174803984792301067246e-26'); - T('1.055921827168468904939466656863008144e+27', '6.32912299980432425349782865630544e+17', '6.68305912232736312925806512224733448892859379422335164811681167150336e+44'); - T('-9.98028905218791239e+3', '3.3600371506928e+6', '-33534141990.004018666701074203792'); - T('-1.45239016384017840495355131293445684596538291022094579841e+42', '-5.6775437718634921734497447e+2', '8.246008729026601881844137255200165069034156821222471237266712949036717046752165927e+44'); - T('-2.2979549681655763076566677319272798755304678418e+1', '-3.183497604578998e+15', '73155341365855197.813621009301952050894390937967417408666665164'); - T('4.0066264588364721690045277668336e+31', '6.737893728955e+12', '2.6996223291259444273370994565149283876986888e+44'); - T('5.846436541728802080043719344611e+21', '-1.2e-10', '-701572385007.45624960524632135332'); - T('-3.182300165687177420393599644356615e+0', '2.365832971505851366517267883747439591747414512839432822e-15', '-7.52879065721125810057489253493734512785942465676134438014645481107031765439734970381753e-15'); - T('3.825832626826099559783359922877e-15', '-6.5955112433918682619536836375146720871309857645017e+49', '-2.52333221055669854343885405756298648535866081882102237578852058574273365963353909e+35'); - T('-2.86423604077436742725253566687e-18', '-3.9616e+1', '1.1346957499131733999803645297872192e-16'); - T('-5.81865579e+4', '-3.0827768621936331602e-20', '1.7937617438481015688733727558e-15'); - T('-3.65098386509026325842574744310157864397940281992715898768e+16', '7.543511472508780470316703042149589376987868468e+20', '-2.754123867225285049343404492717016138666722719241254048568925571123034276751089068825616530843187247424e+37'); - T('4.71978532088277616359995233744199725174e+38', '-2.90845032007102932970578279149703516018735003308119692077e-12', '-1.37272611271880562032081502654149993248115310939203471275734361729098063870184524627400905246398e+27'); - T('6.66954264794400293153673670798603436474391677055481161e-10', '-6.0831130005762409912165773287576e-8', '-4.0571581589605851371281721138429286134755181825367445092430588795115847031409503355736e-17'); - T('-1.5359590725191838049406967873638064365696777077105943281364e+38', '-3.46671719279686986011120227659402959170189585e-3', '5.32473572413458873765078208479002392295654434125039963877442769432916923725014543243576464416487739394e+35'); - T('-3.8918273124023755760911999559263803895614e+13', '-5.9049071497197518967775767842381303529437097e+25', '2.298087892247939399387630879792186664312313395569266522629770751383705096713167192558e+39'); - T('1.6494930061e+4', '-1.4134663182e+6', '-23315028062.2881714102'); - T('-1.38082e+2', '1.086557106158916053738635237440757e+4', '-1500339.78332635446532338230856294608074'); - T('-3.236453714001566320662909602293056422741e-12', '-2.6292012409417075744241522002879275006552063e+30', '8509288121103316508.9776133643121846506311098158231648344441177311116642919353664683'); - T('-5.56185157584785e-9', '-5.3863586550733398733233e+22', '299581273738013.61300657427800794659905'); - T('-7.306228492885575e+1', '8.01710749999e-16', '-5.857481924695357768938364425e-14'); - T('9.078851355998902214e+6', '-3e+0', '-27236554.067996706642'); - T('-7.471572766864317095e+11', '-9.947035107615899737979837388819482785995e+39', '7.4319996621106228158954275728754194694522889053163705084525e+51'); - T('-1.265903731885e-16', '-1.207e+1', '1.527945804385195e-15'); - T('-4.726326821555207871753620716339193235463e+9', '-6.4126109518e+10', '303080951376910103067.328380769000717453065099436834'); - T('-1.91406e-20', '-6.456816473704e+1', '1.235873413965787824e-18'); - T('-3.1983053456730161e-8', '9e+0', '-2.87847481110571449e-7'); - T('-1.1250473182304781788249e-4', '-1.657377060472918137667968348296e+8', '18646.276171817696089408668926562813557672385751973704'); - T('1.1497865844851967254212601851139326807506796369434785706622e+39', '-7.76071990827718702947360345575041554086866713806786843198744e+45', '-8.923171636484296086155235679649166775015520367811462823386249811629379239580605875232547783752918665760034624822882768e+84'); - T('-3.3497708586119180439409399519615946383638197694153e+35', '-4.8561981458432843062333291774478231682e+38', '1.626715103259106287442319579436450524467374682092885927992940109533202075360145310755346e+74'); - T('1.06339694463513e+14', '3.012233219e+5', '32031996016130424203.8347'); - T('1.9633039492389670984077672122431784083773501182422065509489e+19', '1.6692272776747540826414430546718929e-7', '3277200506436.25462718284982490613239885158226875205709983451693837979539541036807585665417281'); - T('1.1467e-4', '6.77733085233686770034e-10', '7.771565288374686191979878e-14'); - T('-5.1701628249523227514579183256087778174687577e-13', '2.132619358400722076540485378725800253187225047660162663738e+9', '-0.00110259893265770873100902961300808852480005642266384867114383755051015481735901792658688929318256982826'); - T('2.18348342946585692342012771e+25', '-3.81634959382e-10', '-8332936099154723.6892526392312710267522'); - T('1.023307551757890323892037392256508719427002369e+26', '-5.20694036686411877720526e+13', '-5.32830139896505265680420021857733687673247020557939546162596921926094e+39'); - T('-2.8265491339447e+7', '-4.5434392049769450607387334481043271753316588900535258158e+55', '1.284225414995798036336141936613726795940619730566835387167617353958626e+63'); - T('-8.02970908483254769090703403995505109862035476919e-11', '2.3071404145426391103284923337981992716315980206711699715e+9', '-0.18525666346637359394264144605477583625489813085571289205234643919692091911432433571550028203557141378085'); - T('1.587431829883573713849409705849497e+25', '-1.49418e-12', '-23719088915754.3817175951099428620142746'); - T('1.6140449345603180298849693965438089354593840997322e+28', '-9.03841799979613578000119003816765e+23', '-1.458841278900975455540967582013269342009334677839779329905619862068104285214370333e+52'); - T('-3.723294e-8', '8.1668979393732624484790294912e+9', '-304.077620962808318348472796304080128'); - T('-2.145634432722793043073725435570720754433983080847542e+20', '1.465950677153e-4', '-31453942495727714.83031405298777297962982768524603399340055607926'); - T('2.278200008209245655472133211650862842e+14', '6.7270967926351916022156783304e-6', '1532567196.82058836270487268466918972063318028121075008094819589968'); - T('3.1343999e+5', '3.14336961975866116898902330896465119306450054556291e+20', '9.852577421834585592213077760716471803076251203562330547709e+25'); - T('-8.041439619908106697385565e+20', '7.78883706e+2', '-6.26334629272925752390308937810389e+23'); - T('1.77601311247551979976524852558057621908110590977554e+24', '-9.63987036475e+11', '-1.7120536170360171827608873268662828982548556336301315370428215e+36'); - T('9.807194626e+5', '-7.62599457122846035815911841262358376674896189395e-17', '-7.47896129768569306427921413491796612781212565774252219127e-11'); - T('-1.92719707950824442875770342240518e+16', '-1.70525973966481953e-11', '328637.15900850293995476091245818788722108232371654'); - T('1.16239377795254501916971749785697228868532854085e+35', '6.473102172409450243517628017455112739783779499e-12', '7.52429368925984729196132515935558757033934932864160658040770594113623888987378706054781403415e+23'); - T('-1.179784405848068e+16', '-4e+0', '47191376233922720'); - T('-7.538813675402315501713570566310033336449e+12', '3.41223043965380709597413486586383914131435e+12', '-2.572416950208617640223348424864689151961024519972222888201004983894402712962174315e+25'); - T('-2.519610125898322011290936135004574898e+10', '-1.363124864524128033329953790490685211016e+16', '3.434543211518771369514488568838182872952969792353237320906862717950506676368e+26'); - T('-4.4018359795112479954572037e+25', '8.064374150981933179268739012e+27', '-3.54980522900327467667853946121209296167777117106207444e+53'); - T('-5.5876311411746274e+7', '5.34197880056852641608623989794750613e+11', '-29849007101551382575.802997685240605484431232661965962'); - T('2.983561815076415871361124408351471429654035718756708688e-8', '1.118284411811800788510463e-16', '3.336470669476878476744869376687068610902363203935757551720993296308551931002544e-24'); - T('2.134734577507378691205480523075055640400370419357e+26', '-2.40845e-11', '-5141401493197646.20883383956580011775712227213650036665'); - T('3.47245322842069354627e-3', '-1.00754361885679357737028320286543060818544720573186927742e-9', '-3.4986480920739416255076813924095074265312312003153482496363088688338822362234e-12'); - T('-3.794245568368302794408011786555814e+20', '-8.37060859067434635093e-16', '317601.4454971178330815419624905170794066260320367580702'); - T('1.28940799891798555024002319648354556806250881774458599981e-9', '1.0028654150809960226369756911508906070980659188266e+9', '1.293102688043642049274122897660291144835301385402718280038596441757921696250413746340720089018990263022946'); - T('-4.27636406710816966834122598758048794168539e+7', '8.8982999317788742062040151406652152536669424005e+25', '-3.8052370086610255197545273472972163674292703635630344454164911934066209770042628022378695e+33'); - T('-2.948850630230385521369167273e+27', '6.672909985285753803977844488e+27', '-1.9677414815580527680894543930730406872388735650053041224e+55'); - T('-4.58435850212e-12', '-3.37588403664294220132546582786902937780785e+14', '1547.6262685555257703338148001260909269985470795177642'); - T('-2.5407577921477732e-3', '9.212688937755560725e+17', '-2340721120523603.242830965922612757'); - T('9.70814828823927437608576282702e-4', '-1.0450399929711279076844e+23', '-101454032189042387227.18166504580735273535431725952488'); - T('-8.986580647129736635012468025475589251e+25', '-2.32842674940416e+7', '2.092459476445462528863223485743121453574148915068416e+33'); - T('1.13e+1', '-4.694730618579590045444086579344431326591112917465804e+45', '-5.30504559899493675135181783465920739904795759673635852e+46'); - T('2.5304029888089e+11', '4.387914643257e-16', '0.000111031923279358510068465873'); - T('7.292170304772241302551375e+0', '-3.6216283825126026376967892815e+18', '-26409530945878724879.8331593964512856913252717030870625'); - T('9.49e+1', '-6.3604126376648187672456674994000370673e+26', '-6.0360315931439130101161384569306351768677e+28'); - T('-1.176852634451796072215996403677e+9', '2.44904391e+8', '-288216377737162735.922250619700705845707'); - T('1.373680713942569963597709e-10', '-4.5471428840104475371083297e+25', '-6246322483306348.1748793733532597161392782837366573'); - T('-5.3314956749576410979116539202451154407e+37', '2.70915269844828616659642472037869598192445e+24', '-1.4443835894576860174475218340998015353555909569592060809911322322844730795855115e+62'); - T('5.9e+0', '2.208687915206977e-18', '1.30312586997211643e-17'); - T('-4.933577839564e-2', '-5.81527983789613597327083109083065394990114741585e+20', '28690135739107706650.0330893037590591643386059592539244906894'); - T('-2.999683795083396322669132758034104118057863174352390023e+27', '-2.87555441825734267003450825531215971389862724174149604e+38', '8.62575399032701361118218619119383526371855243131272664024482478550553556850589314665513164176854330959000892e+65'); - T('4e+0', '4.73e-13', '1.892e-12'); - T('1.08754268552842900657636111617643472953987707185276968598108e+7', '1.81351345637832644608e-15', '1.9722732945916286331432129685647633013480203078627843626297182977144595945201664e-8'); - T('1.476869487377797869802075095495419497297018e+4', '9.16978415362210821336e+12', '135425744223249370.6870672636130364222488062879808291121723576048'); - T('-6.44960562766724813383113663723696894522318058842884424114e-4', '6.2987e+2', '-0.40624130966987695820562180336964496295277247572336761221668518'); - T('3.45e-18', '-4.5651228859493759221433089678212482448435184321088e+19', '-157.4967395652534693139441593898330644471013859077536'); - T('1.1116801887311179022882314500092e-16', '-2.3731060633715843891182383816509351972782343643683136984815e+27', '-263813499640.78831745125440250018216990705243508298365311908844491303220133333740292010298'); - T('-3.411622226349151970376832394365767151948e+39', '2.272882453750169129e+6', '-7.754216297093075438917262330382150382606746020237641813292e+45'); - T('4.813825375694300536878e-13', '-4.994458765e-10', '-2.404245234081581727695453283567e-22'); - T('-3.4004823042485333889969440789299923572353e+11', '-5.055670795945782666596715941784e+23', '1.71917190777197318977613475600295720724871164612058192437613842059897752e+35'); - T('-4.30182750049173941901359056714e-6', '-2.73059273e-2', '1.17465388985568150826129341738290608922e-7'); - T('-4.383659202779121282988e+9', '-3.26708101440047648993067e-10', '1.432176975500159562983467763399865447357044196'); - T('2.1032287098642227578833893517123706840232e+4', '-1.38738398481150077730631608976218467847e-19', '-2.917985828461377201803501253006512530189396739380234897663356402988476658020504e-15'); - T('-1.82989876256793e+1', '-1.42680066252682303444e+22', '2.6109007667889361627836979692295092e+23'); - T('-5.401957277401719742017451884201647908e-4', '5.57331798132165019229595829181742725699386949139427e-15', '-3.010682562847435019555936026646401099636466062637082424633510028806828395006935854868716e-18'); - T('-1.7025584579461e+1', '-1.89357506715785170663032403281086721920633943e-19', '3.223922246345454748113384654355437033006187500650177244723e-18'); - T('1.75701556278545512743452095698613449533241870186405314374e+21', '-8.0008069425919153153324522596175843489e+10', '-1.4057542312975910661097788666304204083938593139961296775572442278829856249685309185751666010886e+32'); - T('-6.0477171077679290199698548748670345744496299140266e+49', '-2.133215459449e-13', '1.29010836286647401512022142630193335625187354733582678886073434e+37'); - T('3.1064394721189e-1', '2.338713865381214106067869220656146181070789175e+10', '7265073065.4119709049662500151915998866163745003396324329075'); - T('6.6922115778644e+14', '-1.502476598814833512714989209432e-14', '-10.0548912900589540851343695771817446668970208'); - T('2.6e-17', '-2.671783935940821017261675012382562970940216397519591773e+33', '-69466382334461346.448803550321946637244445626335509386098'); - T('3.5201757425530436264024119194857657081987590263e+15', '9.331e-7', '3284675985.37624500779609056207216798232026204744053'); - T('-5.533255769459408437481792739718320122946890691e+22', '-3.531878e+2', '1.9542784320526756553356319177970861039193418399947698e+25'); - T('4.645259e+4', '-2.1e+0', '-97550.439'); - T('7.9497003230879251678395405634595e+18', '-6.1333445694821304513176871453320732006332281e+9', '-4.875825130562166374225780425406151552485642713795500618653851261127238861195e+28'); - T('-1.005369818933571484481949e+22', '3.135206365030571431738055544939894677892415929474640739e-9', '-31520418555301.66425121334176205932818570557123668182427124267161869460305520311'); - T('-4.60955142802279111987154280657676965775556e+21', '-6.999600895208299766764771673363791869163449812613584345e+21', '3.22650203020970252903982709059471354761827496584870916987798376422723879587819595266245394527082e+43'); - T('-4.42474356385592335769671439693513e-8', '1.265050947084194578462859951e-16', '-5.59752603606063023437875039568685608110784446235152882197863e-24'); - T('-7.077847732205e+4', '2.48584792112e+8', '-17594453071105.7057236696'); - T('-6.37752233724066550730707883629e+6', '-7.6039885222e-19', '4.8494606652452138136652467701959692830638e-12'); - T('-4.9433724780681818765776307e+5', '9.9959526923402244116455519e+25', '-4.941371743138620958161734043507096664065327269588333e+31'); - T('-7.687435480669860197725359437664161385731838770011635683114e-7', '-1.35484826677385443562865421591361401540341e+40', '1.041530863692139265267608718767277789101867106231335917307662291374878215844509357688744319363501874e+34'); - T('1.5012510295250038070878447757125272e+34', '2.88320380186540202497627762051674629931756151e+44', '4.328412675880839882083804634396863682183719498695681206471762208157714263548072e+78'); - T('-3.38921068317929605930700761538953746656360127100567655710865e+13', '5.69632435242926704290367713950973308658385274436e+8', '-1.9306043350107657372594071514185142475260849897600810020660411944811434813428061119686645756800301569194714e+22'); - T('-3.76914657349036275475693770766652109404782733181e+48', '3.827777748906093915789127662698600476674896035688672166e+4', '-1.442745538637205802306364313516282574241071243477898711033577246633708775227079459568580532954159340046e+53'); - T('6.662411223035412967621756635110157016806417500183356102e-11', '4.11713781541407721882458165080172938861902902e+10', '2.743006518819825052303708822086363491806643065891389452604894242568840422017902043029187832413208004'); - T('9.26006e+4', '1.782395040553430407053890679803958035e+8', '16505085019227.1987751434509284254396415821'); - T('1.669194958318640515063913971576976e-16', '-1.244248914671339151175490292104155e+12', '-0.000207689401526283965328871962139541102573486386336878117842659193528'); - T('3.16363014327124199446241593475618574106690619648e+25', '7.05008522459e+4', '2.23038621291441279938178011816995585372014349584271634674432e+30'); - T('-1.2499416265e-6', '-2.481016161522992373850612e-15', '3.101125376306835804917930031300418e-21'); - T('2.394272820993002468870139325593176e+14', '2.11414e-7', '50618279.4177414623953711635380955710864'); - T('1.1378282788937355438301626273e-8', '-2.48363251338640047864014818842048577888e-19', '-2.825947308110970660255163888048770257922851289911580643177307651424e-27'); - T('-1.117116020795727380964220670027372e+33', '1.2858e-9', '-1.4363877795391462664437949375211949176e+24'); - T('4.22729745775217473e+7', '2.7e+0', '114137031.35930871771'); - T('-3.209792098971668208636730400079e+8', '2.561617927875316631903780965290528364325200943605912675e+5', '-82222609854783.67957523073005932482022485150215647664198292591044805997494462687101325'); - T('2.791486045907779287369132431599698256688456376693553e+31', '3.01582028398776570554202910416394185546415e+41', '8.41862023971748410598194194885358670636908149176554482057465593277092965649017887260312762495e+72'); - T('-4.7987451889500086409222751881136004594238796502777e+3', '1.5763922061071358398417356638094106322793630666033e+48', '-7.56470451495490854118717493020497246765927486273345255064102022092233152887091090239341261644073641e+51'); - T('1.596e+0', '1.1278061910963898e-3', '0.0017999786809898381208'); - T('1.0019691597360265022444e+4', '-4.78747885958105888012393959e-8', '-0.0004796906170188423978033721353034376183189305015796'); - T('-7.840057154240753070926001e+13', '1.6771465194137118428e+11', '-1.31489245682394495937803684715730739761446428e+25'); - T('1.579380351053037416538973330388820879276958625730937001789542e+60', '-8.95594912974988579348053906659158935e+17', '-1.41448500805575195712136077006981122282508931148355054995764602589961835792946511370273959885777e+78'); - T('-8.6259000350458193370640181250303642061228049e+9', '2.50287016417625378022383686736285763674288500041793504864e+46', '-2.1589507836883083080681542896478167565436950513317074358030118564198671094847163184099349451694730336e+56'); - T('2.3565164149775678e-17', '3.29e-10', '7.752939005276198062e-27'); - - T('-7.3082509513985065717321588249117283909294426665053038123171823802E45', '8.1139587436599483304895082011722489767478591E-41', '-592988.4670796104848902291110510024833882877779324139587779775769322761921828542989063538752670078960459222982'); - T('4.1580690407774531635854811718695276837491313289E8', '4.51151976050001428945887983E-3', '1875921.0642990819646935715021378546121515533349338737465486653798953306087'); - T('-5.94098742155317032555791061122172112467693488807700534435506921715E-24', '4.61016941217052394016E20', '-0.0027388958488934255950077406845338327546662445400484871083292926528860519832777944645744'); - T('3.7504E-12', '-7.88007879736459852E17', '-2955344.7521636190289408'); - T('-2.1186022052008407937878760699384240447915477894859451125820040738844629725E-19', '-7.216767917254229694821186934734207628E33', '1528946042391748.997410886033946108685159225196274137373381385049759221715038347354480872320019684962009305423'); - T('-5E-13', '-2.75399279758638331766833072E26', '137699639879319.165883416536'); - T('6E-5', '2.417496760754967572844203198215987E23', '14504980564529805437.065219189295922'); - T('-4.945015198370467209539041539486792258261028978257673527352148835976343131637595762491692863E23', '3.21738997057546245991016675193089492784008451753637062802134E-9', '-1591004230358037.215453223084728812766073228229224818741711464362077222232342773738670279322956619570773005741693064394880256558629265661028200068969642'); - T('8.944326872147001036632309667E-41', '1.34989853214019743744001484188796117541380712420727841534671603347856989127834147166127622e+48', '120739337.1569336009465330585026690676314127638673504378646869299090176172459431821906069831664699038568059542346321874'); - T('-1.06387569312217787644613114942E-25', '-3.49651047707433733724368394353972842316097364325909366154237667988339210449181953609691895611E35', '37198525073.064174722364904333744771229085129180022174384101305415837978911883846550330098510374779170577866567699408319562'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js deleted file mode 100644 index a0c8e99..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toExponential.js +++ /dev/null @@ -1,845 +0,0 @@ -var count = (function toExponential(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, value, decimalPlaces){ - assert(String(expected), new BigNumber(value).toExponential(decimalPlaces)); - } - - log('\n Testing toExponential...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - T('1e+0', 1, undefined); - T('1.1e+1', 11, undefined); - T('1.12e+2', 112, undefined); - - T('1e+0', 1, 0); - T('1e+1', 11, 0); - T('1e+2', 112, 0); - T('1.0e+0', 1, 1); - T('1.1e+1', 11, 1); - T('1.1e+2', 112, 1); - T('1.00e+0', 1, 2); - T('1.10e+1', 11, 2); - T('1.12e+2', 112, 2); - T('1.000e+0', 1, 3); - T('1.100e+1', 11, 3); - T('1.120e+2', 112, 3); - T('1e-1', 0.1, undefined); - T('1.1e-1', 0.11, undefined); - T('1.12e-1', 0.112, undefined); - T('1e-1', 0.1, 0); - T('1e-1', 0.11, 0); - T('1e-1', 0.112, 0); - T('1.0e-1', 0.1, 1); - T('1.1e-1', 0.11, 1); - T('1.1e-1', 0.112, 1); - T('1.00e-1', 0.1, 2); - T('1.10e-1', 0.11, 2); - T('1.12e-1', 0.112, 2); - T('1.000e-1', 0.1, 3); - T('1.100e-1', 0.11, 3); - T('1.120e-1', 0.112, 3); - - T('-1e+0', -1, undefined); - T('-1.1e+1', -11, undefined); - T('-1.12e+2', -112, undefined); - T('-1e+0', -1, 0); - T('-1e+1', -11, 0); - T('-1e+2', -112, 0); - T('-1.0e+0', -1, 1); - T('-1.1e+1', -11, 1); - T('-1.1e+2', -112, 1); - T('-1.00e+0', -1, 2); - T('-1.10e+1', -11, 2); - T('-1.12e+2', -112, 2); - T('-1.000e+0', -1, 3); - T('-1.100e+1', -11, 3); - T('-1.120e+2', -112, 3); - T('-1e-1', -0.1, undefined); - T('-1.1e-1', -0.11, undefined); - T('-1.12e-1', -0.112, undefined); - T('-1e-1', -0.1, 0); - T('-1e-1', -0.11, 0); - T('-1e-1', -0.112, 0); - T('-1.0e-1', -0.1, 1); - T('-1.1e-1', -0.11, 1); - T('-1.1e-1', -0.112, 1); - T('-1.00e-1', -0.1, 2); - T('-1.10e-1', -0.11, 2); - T('-1.12e-1', -0.112, 2); - T('-1.000e-1', -0.1, 3); - T('-1.100e-1', -0.11, 3); - T('-1.120e-1', -0.112, 3); - - T('NaN', NaN, undefined); - T('NaN', -NaN, 2); - T('Infinity', Infinity, undefined); - T('Infinity', Infinity, 10); - T('-Infinity', -Infinity, 0); - T('-Infinity', -Infinity, 1); - T('0e+0', 0, undefined); - T('0e+0', -0, undefined); - T('-5.0e-1', -0.5, 1); - T('0.00e+0', 0, 2); - T('1e+1', 11.2356, 0); - T('1.1236e+1', 11.2356, 4); - T('1.1236e-4', 0.000112356, 4); - T('-1.1236e-4', -0.000112356, 4); - T('1.12356e-4', 0.000112356, undefined); - T('-1.12356e-4', -0.000112356, undefined); - - T('1.00e+0', 0.99976, 2); - T('1.00e+2', 99.9979, 2); - T('1.00e+5', '99991.27839', 2); - T('1.000e+2', '99.999', 3); - T('1.000e+7', '9999512.8', 3); - T('1.00e+9', '999702726', 2); - T('1.000e+3', '999.964717', 3); - - BigNumber.config({ROUNDING_MODE : 0}); - - T('-5.3453435435e+8', '-53453.435435E4', undefined); - T('-8.8254658100092746334967191957167916942544e+17', '-882546581000927463.34967191957167916942543286', 40); - T('-4.794121828559674450610889008537305783490457e-9', '-0.00000000479412182855967445061088900853730578349045628396662493370334888944406719979291547717079', 42); - T('3.6149e+33', '3614844933096444884855774574994631.0106397808', 4); - T('5.582954000000000e-12', '0.000000000005582954', 15); - T('-3.88740271991885914774802363151163005925700000000000000000e-24', '-0.000000000000000000000003887402719918859147748023631511630059257', 56); - T('-6.87079645872437277236913190316306435274902613151676421e-20', '-0.00000000000000000006870796458724372772369131903163064352749026131516764202733298056929060151437', 53); - T('3.8181874087278104533737313621586530711155405443818235503358935045749888900678e+35', '381818740872781045337373136215865307.11155405443818235503358935045749888900677769535371296063', 76); - T('-7.11375441247784115059912118586189732891550e+20', '-711375441247784115059.91211858618973289154952986', 41); - T('6.5783e+24', '6578282366667302135641813.7249573246362582', 4); - T('6.000000000000000000000e-20', '0.00000000000000000006', 21); - T('-5.3799672107777e+13', '-53799672107777', 13); - T('-6.949e-23', '-0.00000000000000000000006948849870723', 3); - T('-8.073585184316705309757817e+25', '-80735851843167053097578169.623098209399637950843019109979317', 24); - T('-4.2956483e-12', '-0.0000000000042956482047751', 7); - T('-6.1162155721951440801240154580459651167830311633e+15', '-6116215572195144.0801240154580459651167830311633', 46); - T('-7.263265230767e-21', '-0.000000000000000000007263265230766073544739', 12); - T('-2.3013406115701776345891815e+18', '-2301340611570177634.5891814408272260224632', 25); - T('-6.0299793663e+30', '-6029979366232747481609455093247.705001183386474', 10); - T('-2.97544304967e+21', '-2975443049668038511693.75547178021412', 11); - T('-4.1471192639160032e+10', '-41471192639.1600315953295208128538183546', 16); - T('-3.61201776785294987e+27', '-3612017767852949869824542721.1595027189', 17); - T('-6.9983494044506115115e+17', '-699834940445061151.14676', 19); - T('-1.4580700323629245038287e+20', '-145807003236292450382.86958174', 22); - T('-8.54e+10', '-85390930743', 2); - T('-2.715269856970717e+19', '-27152698569707163435', 15); - T('-5.67681004e+20', '-567681003999187989540.627303416332508226276308449233', 8); - T('-2.06809e+27', '-2068085084336615438842661921.06985539576218546524301', 5); - T('-2.92273061370427012250925e+14', '-292273061370427.0122509240087955481845060858420928631', 23); - T('-4.3355e-17', '-0.0000000000000000433542', 4); - T('-3.491610942584e+21', '-3491610942583064798345', 12); - T('-8.701944635985129980360621e+16', '-87019446359851299.8036062002728328', 24); - T('-4.9e-10', '-0.000000000486409475991', 1); - T('-4.82125e+19', '-48212433366063403866', 5); - T('-7.95593941e-20', '-0.000000000000000000079559394098236', 8); - T('-2.00563e-10', '-0.0000000002005622924388', 5); - T('-6.9777057921142634382521825e+16', '-69777057921142634.3825218243275152606161149381', 25); - T('-8.42591e+14', '-842590769172062', 5); - T('-6.35123264409e+27', '-6351232644080754054285724566', 11); - T('-5.508835492577586495894259979e-28', '-0.00000000000000000000000000055088354925775864958942599785412', 27); - T('-2.667451876e+12', '-2667451875964', 9); - T('-6.6444610474323616283e+26', '-664446104743236162820999716', 19); - T('-2.419775049243e+12', '-2419775049242.726', 12); - T('-5.32e-18', '-0.000000000000000005319', 2); - T('-8.63030355223e-26', '-0.000000000000000000000000086303035522286938593814060049934', 11); - T('-2.5046920981956385048538613818080285657602718e+17', '-250469209819563850.48538613818080285657602717018', 43); - T('-3.78e+15', '-3779392491464393.04412843034387404882622864039', 2); - T('-3.3883802002818774e-21', '-0.0000000000000000000033883802002818773261717', 16); - T('-3.57205e+19', '-35720468100481047658.74549510716', 5); - T('-5.23810604e+18', '-5238106039196464333.4164490675655417554216049', 8); - T('-8.9851705212202749156714435676788925065e+21', '-8985170521220274915671.443567678892506483244', 37); - T('-4.8002620797467441513113e+15', '-4800262079746744.151311270846595944560084461404058322669896', 22); - T('-7.6602835119619761973713784765241687426415076035234065319212e+19', '-76602835119619761973.713784765241687426415076035234065319212', 58); - T('-5.381812197644510770977641728943e+29', '-538181219764451077097764172894.2045958494', 30); - T('-6.04171e+30', '-6041702557251805571827972925970.859227', 5); - T('-3.995516696587253269e+28', '-39955166965872532681529528721.070757896455736015403', 18); - T('-7.597966e+15', '-7597965080819292', 6); - T('-5.302339e+10', '-53023381796.8478', 6); - T('-9.02545540564356e+13', '-90254554056435.587103358700012', 14); - T('-4.90010261765297775855e+21', '-4900102617652977758549.72018756787751358174277326416937', 20); - T('-5.078904359675664732215233579164e+14', '-507890435967566.473221523357916309238214', 30); - T('-5.521012629302366870801695374639196986679745208450805993e+22', '-55210126293023668708016.9537463919698667974520845080599201807', 54); - T('-5.2937835496774926e-19', '-0.00000000000000000052937835496774925027979577384249493104941', 16); - T('-2.3554653675126963e+18', '-2355465367512696228', 16); - T('-2.891052510655698093e-17', '-0.000000000000000028910525106556980924149216708779185331', 18); - T('-3.68377e-16', '-0.0000000000000003683765961604816288244373051', 5); - T('-3.95708e+25', '-39570783738574043219687566.965221194063889914', 5); - T('-3.584456985168021826814122e-17', '-0.0000000000000000358445698516802182681412158196413726', 24); - T('-8.556316744104688591686120874555554808035e+28', '-85563167441046885916861208745.55554808034964', 39); - T('-6.02219e+18', '-6022186164465021650.884475588', 5); - T('-7.790612428288e+18', '-7790612428287383595.5394047', 12); - - BigNumber.config({ROUNDING_MODE : 1}); - - T('0e+0', '-0.0E-0', undefined); - T('-2.856376815219143184897347685012382222462687620998915470135915e+6', '-2856376.815219143184897347685012382222462687620998915470135915511363444', 60); - T('7.75700e-24', '0.000000000000000000000007757', 5); - T('7.0e-1', '0.7', 1); - T('5.2109749078977455423107465583658126e+37', '52109749078977455423107465583658126637', 34); - T('3.631093819552528994444977110063007461579154042777868294000e-29', '0.00000000000000000000000000003631093819552528994444977110063007461579154042777868294', 57); - T('-9.893937860425888e+8', '-989393786.042588804219191', 15); - T('8.7978043622607467e+42', '8797804362260746751563912625017414439944006.5804807', 16); - T('-4.6561702764394602621e-7', '-0.000000465617027643946026213823955447791862428108248596086901464075785390015', 19); - T('-2.542770482242902215596924884302407e+8', '-254277048.224290221559692488430240765024783', 33); - T('2.70000000e-8', '0.000000027', 8); - T('-8.0291821891769794408790934252924453237e+16', '-80291821891769794.408790934252924453237503615825249362166', 37); - T('-8.05295923004057358545854771e-16', '-0.0000000000000008052959230040573585458547716514262', 26); - T('-2.786758e-21', '-0.00000000000000000000278675879025858093817787290334306', 6); - T('-8.0160835624737225803853824687641777660406527e+20', '-801608356247372258038.538246876417776604065270622886204812876', 43); - T('-7.2849054887999144694619191770897589e+27', '-7284905488799914469461919177.08975892527524', 34); - T('-7.586e-17', '-0.00000000000000007586908', 3); - T('-5.9508150933636580674249602941673984254864e+20', '-595081509336365806742.496029416739842548642249', 40); - T('-3.526911897e-18', '-0.000000000000000003526911897770082481187', 9); - T('-5.774e-22', '-0.0000000000000000000005774729035676859', 3); - T('-6.4700957007714124190210074e-13', '-0.00000000000064700957007714124190210074383', 25); - T('-5.610492e+21', '-5610492566512449795573', 6); - T('-6.015e+23', '-601556443593022914280678', 3); - T('-6.0673361553344e+11', '-606733615533.448288878', 13); - T('-3.1e+26', '-315617199368461055533962323.071668327669249', 1); - T('-9.1391079512104562032343e+24', '-9139107951210456203234346', 22); - T('-2.0441e+21', '-2044198307917443182711', 4); - T('-8.21283723216249535240085606500821783973097233e+23', '-821283723216249535240085.606500821783973097233814324', 44); - T('-6.375e+14', '-637540984314799.4', 3); - T('-2.17797482005219478530856429744726e+29', '-217797482005219478530856429744.7268928676963181', 32); - T('-3.9547e+11', '-395476721391', 4); - T('-6.8927e+21', '-6892798573971046301111', 4); - T('-6.33842141402916538926e-12', '-0.000000000006338421414029165389261335065112712777', 20); - T('-4.5727e-30', '-0.000000000000000000000000000004572725511159166', 4); - T('-7.8847457779026882221249217577974e-17', '-0.000000000000000078847457779026882221249217577974', 31); - T('-2.64916231640264927e+12', '-2649162316402.649271824', 17); - T('-1.73604404e+28', '-17360440496948254515028685124.37795415803082546457797184294', 8); - T('-8.680224985623e+16', '-86802249856236148.11694273469092873', 12); - T('-4.3e-19', '-0.00000000000000000043859841576346037715462713764211635', 1); - T('-7.68867535389098159141717105e-11', '-0.000000000076886753538909815914171710501337139', 26); - T('-5.24325038611090505928389422325001606e+21', '-5243250386110905059283.894223250016067979080420266', 35); - T('-1.38e-21', '-0.0000000000000000000013874592057586367688528204069850262406', 2); - T('-7.308601949094508589445770582074109410615037e+24', '-7308601949094508589445770.5820741094106150373221910779', 42); - T('-3.2638e+13', '-32638405387645.3309565877781780222317335852159983', 4); - T('-3.55454737448094719019291183206515059962378e+22', '-35545473744809471901929.118320651505996237856336054914', 41); - T('-5.3906242252792e-11', '-0.00000000005390624225279268530907215395611', 13); - T('-8.86760873811213105078e+15', '-8867608738112131.050787', 20); - T('-4.78129254835567e-23', '-0.00000000000000000000004781292548355671480462711435866243551', 14); - T('-6.4694208834502691835879021438795583630205e-19', '-0.00000000000000000064694208834502691835879021438795583630205', 40); - T('-9.324e-25', '-0.00000000000000000000000093242969', 3); - T('-6.922220589076408182786e+19', '-69222205890764081827.8655148459740694252038421', 21); - T('-4.193207546161458e+19', '-41932075461614585862.215078', 15); - T('-7.98e+20', '-798827417648620333729.80696458197', 2); - T('-2.53e-27', '-0.0000000000000000000000000025361014542495516754818606153', 2); - T('-1.4930677606201e-20', '-0.0000000000000000000149306776062013560263804', 13); - T('-2.4385708957357e+19', '-24385708957357294486.03887038886025345320045340124898971786', 13); - T('-2.3170650157672525597815028610843e+18', '-2317065015767252559.781502861084367708776250552', 31); - T('-6.9178198e+18', '-6917819884210952360.76327902290237387108459707859893972', 7); - T('-5.8557793e-24', '-0.000000000000000000000005855779377', 7); - T('-2.9760848e-12', '-0.00000000000297608486674725722', 7); - T('-5.994209456542723342157e+23', '-599420945654272334215750.2697081334512770109182770472941827', 21); - T('-2.176318765141873189550724e+24', '-2176318765141873189550724', 24); - T('-3.015068240172763167642991583362591462e+17', '-301506824017276316.76429915833625914624', 36); - T('-4.092360120459492827213341546580282588568024330771e+25', '-40923601204594928272133415.465802825885680243307714368088538', 48); - T('-1.241037736e-28', '-0.00000000000000000000000000012410377364', 9); - - BigNumber.config({ROUNDING_MODE : 2}); - - T('0e+0', '0E0000000000', undefined); - T('0e+0', '-0E01', undefined); - T('0.00e+0', '-0E00000000001', 2); - T('3.0465655253692145345165166442116e-14', '0.0000000000000304656552536921453451651664421156', 31); - T('9.0573943842008592406279608542923313381394286641978907203396551e+22', '90573943842008592406279.60854292331338139428664197890720339655043720040907662489784', 61); - T('-1.17181502970008783734855040984899000e-1', '-0.117181502970008783734855040984899', 35); - T('-5.28860565e-16', '-0.00000000000000052886056528317233012115396784629214632', 8); - T('6.4114675970838738000e-18', '0.0000000000000000064114675970838738', 19); - T('8.00000000000000000000e-20', '0.00000000000000000008', 20); - T('2.74000064578288771723078597711103520450391668117802304078152085625023633681179e+24', '2740000645782887717230785.977111035204503916681178023040781520856250236336811781347278', 77); - T('8.1936742669491704846805837777816457628e-16', '0.00000000000000081936742669491704846805837777816457628', 37); - T('-7.2157448e+14', '-721574484716710.00141299844961546', 7); - T('-5.321807464703650000000e-15', '-0.00000000000000532180746470365', 21); - T('-4.449e+27', '-4449471658582621135143349142.228707647170080816912435271162', 3); - T('-4.922915821313919623758e+19', '-49229158213139196237.584', 21); - T('-6.996668225774098e-14', '-0.000000000000069966682257740984029052', 15); - T('-8.6856039174822133942616012424795168e+11', '-868560391748.2213394261601242479516861829472792', 34); - T('-8.461e+21', '-8461810373307862460504', 3); - T('-3.898716627703194625824411967e+25', '-38987166277031946258244119.67718', 27); - T('-2.821935496755e+26', '-282193549675582402670759843.23655', 12); - T('-3.49e-22', '-0.0000000000000000000003491662482987', 2); - T('-3.362111778576231615366457333e-14', '-0.0000000000000336211177857623161536645733316587527475522615', 27); - T('-5.9933e-13', '-0.00000000000059933412636903331', 4); - T('-2.77927721e+29', '-277927721100404435781172100113.4136636412460458083951', 8); - T('-1.876833722329e-10', '-0.0000000001876833722329987477942', 12); - T('-6.5e+14', '-653341175209856', 1); - T('-8.627291840173867961e+14', '-862729184017386.7961', 18); - T('-3.9137457165597668391301218029e-11', '-0.00000000003913745716559766839130121802935022889', 28); - T('-8.95e+10', '-89532775488', 2); - T('-2.1395541875015568986238e-17', '-0.000000000000000021395541875015568986238771696', 22); - T('-4.98575853353890809143399546448630559732119628e-12', '-0.00000000000498575853353890809143399546448630559732119628509', 44); - T('-8.99e+16', '-89989591559494822', 2); - T('-3.49346327e+22', '-34934632714180035424463', 8); - T('-3.5699537605753905457597e-14', '-0.00000000000003569953760575390545759785014980652333323889116', 22); - T('-2.9892536880349975618286e+12', '-2989253688034.9975618286212199904979534461637613', 22); - T('-3.04383919217904949618e+10', '-30438391921.790494961888803732171', 20); - T('-8.232411544e+17', '-823241154405701456', 9); - T('-5.809151226990464016815e-16', '-0.00000000000000058091512269904640168152354', 21); - T('-8.522042397326932431e+13', '-85220423973269.324312660179132118', 18); - T('-7.5210942e-22', '-0.000000000000000000000752109428925015', 7); - T('-5.2018321449543e+23', '-520183214495439298725191.09', 13); - T('-6.04084045453711395629268198016245611021901815e+21', '-6040840454537113956292.68198016245611021901815486929628647', 44); - T('-1.495478178996755138125934544343674798e-13', '-0.00000000000014954781789967551381259345443436747983317353423', 36); - T('-6.881484497510733524151245220630282259985306546537e+16', '-68814844975107335.241512452206302822599853065465371507616758', 48); - T('-4.7121389019956e-14', '-0.00000000000004712138901995619', 13); - T('-8.8332728504053108443425344711e-15', '-0.00000000000000883327285040531084434253447119282', 28); - T('-8.2e+14', '-822000812447305', 1); - T('-7.772164697477093877214551050634072755e+21', '-7772164697477093877214.55105063407275517068350805', 36); - T('-3.9087122838427126623505550357872e+10', '-39087122838.4271266235055503578721071128', 31); - T('-2.312032777966762704192668904908578897e+20', '-231203277796676270419.266890490857889726891117', 36); - T('-6.145717261905789834140342e+10', '-61457172619.0578983414034269108488849155084479', 24); - T('-1.22122395777234009028954105999904e+23', '-122122395777234009028954.10599990431', 32); - T('-8.11092557e-19', '-0.000000000000000000811092557221182808185409783', 8); - T('-2.0148183904e+12', '-2014818390421', 10); - T('-8.5895e+12', '-8589543094837', 4); - T('-4.52948430169449249063e+13', '-45294843016944.92490631367483828208567689248', 20); - T('-5.5627328016242253171e+18', '-5562732801624225317.15482034912', 19); - T('-2.299e+22', '-22994771657263381474221.8393766046648504992', 3); - T('-4.886104291748549e+15', '-4886104291748549.177', 15); - T('-3.7192656464776e-11', '-0.00000000003719265646477604172611', 13); - T('-6.135956620537e+25', '-61359566205370067856449153.5', 12); - T('-3.35703853285800120218674208960269655701e-14', '-0.000000000000033570385328580012021867420896026965570155917', 38); - T('-8.713884178791321311224703e+22', '-87138841787913213112247.03564225163096', 24); - T('-7.073358e+12', '-7073358766762', 6); - T('-6.829e+30', '-6829360758600890577632541121747.862424035', 3); - T('-3.05687463293e+22', '-30568746329329110731433.300963185825462157574537899186', 11); - T('-8.761781e+24', '-8761781624975891699172893.0141633817001124644', 6); - T('-1.477e+12', '-1477134517234.0307742', 3); - T('-5.78904078729758522168774487851811e+16', '-57890407872975852.216877448785181168776187771353947582', 32); - T('-7.74939714942520320266429137e+12', '-7749397149425.20320266429137053013', 26); - T('-8.3224649681672648581370532515e-14', '-0.00000000000008322464968167264858137053251586527433370546682', 28); - T('-7.04146154016765195683657078079536e-22', '-0.000000000000000000000704146154016765195683657078079536', 32); - T('-1.914289454756549529781861916925090389e+16', '-19142894547565495.29781861916925090389840210707205', 36); - T('-8.840670154325523051759462672e+27', '-8840670154325523051759462672.142803216', 27); - T('-2.823e-11', '-0.00000000002823852806134378210195515771768582269146178698', 3); - T('-1.5186417607496557534159723950506e+29', '-151864176074965575341597239505.06547275781526923', 31); - T('-7.397218e+16', '-73972184449181471.152912157', 6); - T('-3.581193819284374099989e+22', '-35811938192843740999895.1573225646377886389016478830802218237', 21); - T('-4.563585432210043885759681337791545e+29', '-456358543221004388575968133779.154510217739887576756399', 33); - T('-1.8176465832459836335875e-18', '-0.0000000000000000018176465832459836335875559', 22); - T('-3.784854627631e+20', '-378485462763141736445.9462626829154663', 12); - T('-3.8510536744200399243363367786406618e+23', '-385105367442003992433633.6778640661831754293129488068676868', 34); - T('-8.7323e+22', '-87323916569164596208111.88101028771355420576029037973', 4); - T('-7.578e+11', '-757882758255.76', 3); - T('-8.5977102122033e+20', '-859771021220338061040.041580289025031', 13); - T('-7.3998697893908579137880913e+17', '-739986978939085791.37880913509684330685', 25); - T('-6.71117252123290052432148305375254e-19', '-0.00000000000000000067111725212329005243214830537525418', 32); - T('-6.6762993760195471322427204620426381935201299178096e+11', '-667629937601.9547132242720462042638193520129917809665', 49); - T('-2.852022020015364818597602e+15', '-2852022020015364.818597602673413917443', 24); - T('-3.151044e+30', '-3151044929117854676102403114231.56823295246', 6); - T('-4.47120537692951873038916592e+10', '-44712053769.29518730389165927694', 26); - T('-7.4041969e+23', '-740419699691346150775964.049522110341852844412207474667958', 7); - T('-6.311838e-10', '-0.000000000631183849892543191', 6); - T('-7.2570104326587672213e+16', '-72570104326587672.213076838263780308795144628367752', 19); - T('-4.445769230869049803541e+15', '-4445769230869049.80354196820931591782233498498378174385', 21); - - BigNumber.config({ROUNDING_MODE : 3}); - - T('-9.99999999000000009e+8', '-999999999.000000009e-0', undefined); - T('-3.99764422903251220452704763278376060858663250289320247532595e+24', '-3997644229032512204527047.63278376060858663250289320247532594416986984981431156065660613', 59); - T('5.534083545686157907280686578717428772e+12', '5534083545686.157907280686578717428772', 36); - T('5.00000000e-9', '0.000000005', 8); - T('-4.08363116583051e+14', '-408363116583051', 14); - T('9.278230415634296945273818e+19', '92782304156342969452.738186255580532649103987374718221928871873054827841260470670536425', 24); - T('-1.08732508998603085454662e-12', '-0.000000000001087325089986030854546619968259691229662152159029641023997866843605032534351388775075', 23); - T('3.5288804517377606688698e+32', '352888045173776066886981811418233.218955856086', 22); - T('4.32188781438877554e+16', '43218878143887755.42593887518334667202', 17); - T('-8.15e+2', '-815', 2); - T('1.515077312590223222678749527e+18', '1515077312590223222.678749527895871363186918977679783240817218232896076765321818445939718165', 27); - T('-8.0538186421664536509917032729912932814374102e+20', '-805381864216645365099.17032729912932814374101821', 43); - T('-3.4367097301002099047381e+14', '-343670973010020.990473804391071456587732173', 22); - T('-5.3421e-12', '-0.0000000000053420288504', 4); - T('-2.6320052e+23', '-263200517731973006983184.60341959097016190770542276', 7); - T('-4.5e-11', '-0.000000000044673422483', 1); - T('-7.232463101115829118145025733451801e-17', '-0.00000000000000007232463101115829118145025733451800457178', 33); - T('-1.18320100044154762448545914170978206041022039e+22', '-11832010004415476244854.5914170978206041022038489', 44); - T('-7.745237371276392645711e+21', '-7745237371276392645710.0521930569226728841707200771', 21); - T('-4.431559500053255695643e-10', '-0.000000000443155950005325569564213010993378905', 21); - T('-2.5e-24', '-0.000000000000000000000002443', 1); - T('-5.005027028439023958391203127005503621542e-11', '-0.0000000000500502702843902395839120312700550362154137', 39); - T('-6.453525377934213334367e-22', '-0.00000000000000000000064535253779342133343665123283565', 21); - T('-4.5594370326121718626850982373529e+13', '-45594370326121.71862685098237352845979966987', 31); - T('-1.709e+16', '-17088248121660259', 3); - T('-3.9047581533864713e+16', '-39047581533864712.6574405', 16); - T('-2.08804202e-17', '-0.000000000000000020880420127397564274443250271135', 8); - T('-6.801694635944774655689008216925036e+15', '-6801694635944774.65568900821692503508025', 33); - T('-8.7691286374104240967931800593734e+19', '-87691286374104240967.93180059373367907299683816381677816389', 31); - T('-2.802257731715238453e-29', '-0.000000000000000000000000000028022577317152384526775320012', 18); - T('-4.4705e+22', '-44704405768781565005877.813010169083', 4); - T('-4.17374908496486449232e-10', '-0.00000000041737490849648644923105632500267064', 20); - T('-2.2707e-10', '-0.00000000022706134122862417334386435', 4); - T('-2.85432e-24', '-0.0000000000000000000000028543100839983854161', 5); - T('-5.79188949e+12', '-5791889489461.643555240257', 8); - T('-7.46e+15', '-7459701910718662.03421293892346992893463534702', 2); - T('-1.0535086280629e+25', '-10535086280628995915087428.2423609320023833125322801559606', 13); - T('-2.9074412651647188367106e+30', '-2907441265164718836710598468491.31550321772', 22); - T('-5.010945976711327691649e+27', '-5010945976711327691648509517.2305', 21); - T('-8.8633960213386533e-20', '-0.0000000000000000000886339602133865324283362544', 16); - T('-3.1891844834898211661452730714015664837805e+19', '-31891844834898211661.45273071401566483780434051217', 40); - T('-5.083380976014365533843229882526437e+28', '-50833809760143655338432298825.264367948359', 33); - T('-6.8e-16', '-0.000000000000000678534987604148025611184', 1); - T('-7.9e+30', '-7838656097386639584904346062976.9346038436', 1); - T('-6.30535781e+20', '-630535780834495012856', 8); - T('-9.663e-30', '-0.00000000000000000000000000000966289400023904753107633012', 3); - T('-2.315198482309e+12', '-2315198482308.7361348', 12); - T('-8.158235289416e+18', '-8158235289415958939', 12); - T('-4.1618890517404316933699206360639988582832624525e+23', '-416188905174043169336992.063606399885828326245241437', 46); - T('-5.97550716981833990839441709632e+21', '-5975507169818339908394.41709631281058258352209', 29); - T('-6.3372e-18', '-0.000000000000000006337122571683959413228', 4); - T('-8.9189088e+18', '-8918908714500548003.38400978696756078013348', 7); - T('-2.30738494e+15', '-2307384939629592.5507643557167543121437', 8); - T('-5.5187220703008771818558364e+20', '-551872207030087718185.58363308126401300424', 25); - T('-6.6221540532808e+16', '-66221540532807215', 13); - T('-7.52280140768218860970644149216497725e+28', '-75228014076821886097064414921.6497724655', 35); - T('-4.50815289e-10', '-0.0000000004508152886241127131780051700309401', 8); - T('-8.05636473909e+28', '-80563647390897795982047004786.9809587987299506647489380735', 11); - T('-8.3e-22', '-0.00000000000000000000082867896643314771124884886449603747139', 1); - T('-8.3783e+13', '-83782644902152', 4); - T('-1.1939712427296807e+16', '-11939712427296807', 16); - T('-6.520492185955083727143468903725e+24', '-6520492185955083727143468.90372469799639', 30); - T('-5.468441290352576854e+22', '-54684412903525768532358.76123265640787599117379', 18); - T('-6.3213239044187e-12', '-0.000000000006321323904418628', 13); - T('-6.80758136e+10', '-68075813559.812083737218313494618879237157412', 8); - T('-2.32394435705096500766e+20', '-232394435705096500765.423311444507670516532857314906', 20); - T('-5.35396744204815374979010975360864002355e+14', '-535396744204815.374979010975360864002354465685768494008245896', 38); - T('-1.8388340153656061115e-24', '-0.0000000000000000000000018388340153656061114681', 19); - T('-2.09349812455746e+24', '-2093498124557455120865520.476275227', 14); - T('-2.888450139093515656e-25', '-0.0000000000000000000000002888450139093515656', 18); - T('-6.97756838052316890676e+30', '-6977568380523168906759075718628.73360426401485819654038588804', 20); - T('-8.05604538646883624239398132377048820023e+24', '-8056045386468836242393981.323770488200227820839', 38); - T('-4.13045948e+29', '-413045947014551860341804907208.7067642881758676', 8); - T('-7.990552461602111454165337515e+23', '-799055246160211145416533.75144940262265224221931', 27); - T('-7.84498851993324e+11', '-784498851993.323271787115869178093231451893938531755482687806', 14); - T('-8.63875584973951951712658379e-21', '-0.000000000000000000008638755849739519517126583785754757065', 26); - T('-8.61609302272300237447639006834635e-14', '-0.00000000000008616093022723002374476390068346342187746', 32); - T('-7.01300801762e+17', '-701300801761204790.177590913310762', 11); - T('-8.0318131135482342451545e-11', '-0.0000000000803181311354823424515442372680533', 22); - T('-8.310034087753417316659936093943321e+25', '-83100340877534173166599360.9394332099174859', 33); - T('-7.716088095718838665380730070082633435173897567e+30', '-7716088095718838665380730070082.6334351738975662966', 45); - T('-6.5207000918869e-14', '-0.00000000000006520700091886862177', 13); - T('-6.579884485936605389e+14', '-657988448593660.538847871', 18); - T('-5.31961604251455760419e+30', '-5319616042514557604183392605338.36600372994596807972708', 20); - T('-7.87765329352729e+16', '-78776532935272856.77806', 14); - T('-8.23e+11', '-822427564609', 2); - T('-1.2946e+16', '-12945401038582508.297183225785515084520662225', 4); - T('-4.3885535805231634787626423119240512694696e+14', '-438855358052316.347876264231192405126946952', 40); - T('-6.4067449547192616381924351e-29', '-0.00000000000000000000000000006406744954719261638192435066816', 25); - T('-9.41834953e+18', '-9418349527156084224.2', 8); - T('-3.19716162829318952418046452988e+13', '-31971616282931.895241804645298754890905582545633', 29); - - BigNumber.config({ROUNDING_MODE : 4}); - - T('-5.002239116605888927178702930656e-39', '-0.00000000000000000000000000000000000000500223911660588892717870293065633642', 30); - T('-8.52292947230244775435e+29', '-852292947230244775434968241532.494643593912804433318745222587246680109833509655450267792446', 20); - T('-6.1169514510867e+10', '-61169514510.8673382', 13); - T('-8.05745763527307676170759722175169266017831695215e+48', '-8057457635273076761707597221751692660178316952146', 47); - T('-4.923572102098e+10', '-49235721020.9847017846898652687600227388412980598816', 12); - T('-7.981341661715027117746906076515945e+41', '-798134166171502711774690607651594491039629', 33); - T('-8.00e-3', '-0.008', 2); - T('8.517466793430899278197016892000000000000e-15', '0.000000000000008517466793430899278197016892', 39); - T('-3.032293512e+0', '-3.0322935124071923328711934463341802038', 9); - T('-2.60682904403489305678908771323995810138267385200000000e-20', '-0.00000000000000000002606829044034893056789087713239958101382673852', 53); - T('-3.935816927273980e+20', '-393581692727398036652.850960055902271', 15); - T('-2.98297216346e-27', '-0.00000000000000000000000000298297216346039288935575576076143', 11); - T('-3.01319315e+23', '-301319315398414808376087.572306433', 8); - T('-8.870698526921188e-12', '-0.00000000000887069852692118832284144110732', 15); - T('-3.27e+23', '-326739927744903524706793.652546266488323001284674736489440831', 2); - T('-8.614e+12', '-8613828413581', 3); - T('-6.1382445990593346026804e+12', '-6138244599059.3346026803630253203', 22); - T('-7.9111971e+12', '-7911197130975', 7); - T('-8.5902152501051e+29', '-859021525010507210136559039003.689834129033952321238', 13); - T('-7.24491e-30', '-0.00000000000000000000000000000724490826045045451271534', 5); - T('-8.4948070285349193974989221504919380656715136165603325e+24', '-8494807028534919397498922.15049193806567151361656033246', 52); - T('-6.3295239596e-17', '-0.00000000000000006329523959626011114164', 10); - T('-3.1725692353e+30', '-3172569235260846783669130724638.711', 10); - T('-4.065727077e+11', '-406572707673.336570352310681187663765', 9); - T('-6.82883869249998075574247223155497e+18', '-6828838692499980755.7424722315549682855987375899188309581152', 32); - T('-2.56144400427045214943786338e+24', '-2561444004270452149437863.38354535663028539', 26); - T('-4.97637439956044400125498868e+23', '-497637439956044400125498.8682100590602459937304614141772', 26); - T('-4.307891929198702822746534506143e+29', '-430789192919870282274653450614.349564081', 30); - T('-8.55e-27', '-0.00000000000000000000000000855367295711812079', 2); - T('-7.906e+11', '-790612526329.410459220189562', 3); - T('-3.1841363e-22', '-0.00000000000000000000031841363', 7); - T('-6.2068049304845006e+20', '-620680493048450055389.3227069760888437941041', 16); - T('-8.4809476e+18', '-8480947614295114807.320148688', 7); - T('-2.287988570734255855e+23', '-228798857073425585542366.399034916953775', 18); - T('-8.148647139762925073276164486240320698e+21', '-8148647139762925073276.1644862403206980851079', 36); - T('-6.87643138785664756e-12', '-0.0000000000068764313878566475604352570287089535238582267443', 17); - T('-3.709587e+18', '-3709586618852569033.55141868', 6); - T('-6.8086794224e+28', '-68086794224433270564431694468.814537646575833889824621540849', 10); - T('-4.966301085179e+19', '-49663010851788946007', 12); - T('-5.34439184068052811184219234494114e+26', '-534439184068052811184219234.494113670484623394', 32); - T('-2.798732412e+16', '-27987324119455299', 9); - T('-1.554430791885961957e+15', '-1554430791885961.956863404519493346081223', 18); - T('-6.90619083822075003978e+24', '-6906190838220750039778836.289105048686876596', 20); - T('-1.108034176809770578315e+12', '-1108034176809.7705783154', 21); - T('-1.43e+22', '-14266566332440117777110.63461224926682073525873105', 2); - T('-9.15e+13', '-91477543307040.916791223', 2); - T('-1.1001e+26', '-110010856476508992391958436.9355559264588205214557001854', 4); - T('-1.2e+16', '-12148027447349021', 1); - T('-4.4e+13', '-44268551660889.40880208546489742632181832780494', 1); - T('-8.62058920338555484081691e+19', '-86205892033855548408.169086865949596390775', 23); - T('-5.2e-13', '-0.00000000000051876025261394172', 1); - T('-4.88063953404884862027221562057786242658496407473e-11', '-0.0000000000488063953404884862027221562057786242658496407473', 47); - T('-5.255e+18', '-5254530327311322805.9528217', 3); - T('-6.4630488003995117e-11', '-0.0000000000646304880039951167486', 16); - T('-3.15214e-23', '-0.00000000000000000000003152137339126187', 5); - T('-8.86563136e+11', '-886563136251.626990531858472111699416852', 8); - T('-8.638990742871e-16', '-0.0000000000000008638990742870608', 12); - T('-1.57817750020560815944470062e+12', '-1578177500205.60815944470062002898187', 26); - T('-3.6558384593093900422637e-27', '-0.00000000000000000000000000365583845930939004226367940618', 22); - T('-7.5e+12', '-7540535487033', 1); - T('-6.7647935206791247e+19', '-67647935206791246567', 16); - T('-3.0204818086245915027e+30', '-3020481808624591502749101182536.872936744534671794', 19); - T('-8.40498662e+12', '-8404986622734.85', 8); - T('-2.944135296894e-18', '-0.0000000000000000029441352968942548971', 12); - T('-8.826099694855290261753e+11', '-882609969485.52902617534731', 21); - T('-1.9717565867734925e-13', '-0.000000000000197175658677349252855292223369', 16); - T('-4.91451975824866130376722e+20', '-491451975824866130376.722358803861287205044883122152013315', 23); - T('-5.111649e+17', '-511164947156144375', 6); - T('-9.496473458673099e+11', '-949647345867.30987953779868637405061', 15); - T('-2.1903308925764762892e+21', '-2190330892576476289225', 19); - T('-3.47598363e+25', '-34759836338593591584288059.755482689269713', 8); - T('-2.9192144584989753156762701431e-24', '-0.0000000000000000000000029192144584989753156762701431', 28); - T('-4.0456517973466503588734928438425e+23', '-404565179734665035887349.28438424933669843', 31); - T('-1.297871549154944904150929e+17', '-129787154915494490.4150929407633398', 24); - T('-1.4566530316908752e+18', '-1456653031690875152.6306667', 16); - T('-3.5521e-12', '-0.00000000000355210483', 4); - T('-9.1838324864110351307221525161e+17', '-918383248641103513.07221525161442', 28); - T('-8.33245633316304149287131334e-22', '-0.00000000000000000000083324563331630414928713133382', 26); - T('-4.593824606634605622464043606094613988489104e+15', '-4593824606634605.62246404360609461398848910424547985108092894', 42); - T('-5.232e-26', '-0.0000000000000000000000000523185958604202852', 3); - T('-3.8319390497954462e+25', '-38319390497954461897251251.444', 16); - T('-1.00157678068191049988073716749599603712e+17', '-100157678068191049.9880737167495996037119953003896147', 38); - T('-4.169977410059689809645035174132294864e+20', '-416997741005968980964.50351741322948635363513285839302', 36); - T('-7.121660153198989278372512656775647e-11', '-0.0000000000712166015319898927837251265677564651728358', 33); - T('-7.98924570545536548623603750084330391943e+19', '-79892457054553654862.360375008433039194317394396964358522', 38); - - BigNumber.config({ROUNDING_MODE : 5}); - - T('4.95474614815842e+38', '495474614815842191683004449862568813538.573064401156', 14); - T('-8.9667567079038139e+16', '-89667567079038139', 16); - T('-7.0e+2', '-703', 1); - T('-2.6249e+33', '-2624861185343559570287214983819906', 4); - T('-6.510119186347371697501169416839709631422185436811698613000000000000000000000000000000e-31', '-0.0000000000000000000000000000006510119186347371697501169416839709631422185436811698613', 84); - T('7.73e+3', '7729', 2); - T('1.4393781011009257793117531801549e+4', '14393.781011009257793117531801548751', 31); - T('8.4e+6', '8404542', 1); - T('8.471284625267663009248667391059202502589207637435209861233007389000000000000000e-35', '0.00000000000000000000000000000000008471284625267663009248667391059202502589207637435209861233007389', 78); - T('-5.26079297227015e+31', '-52607929722701509263909039511536.9266822991', 14); - T('-4.63550600857003551411914120562163394e+15', '-4635506008570035.51411914120562163394396594237358863897062', 35); - T('-7.8219563406482338767189100434751303552919130625101491e+27', '-7821956340648233876718910043.4751303552919130625101491', 52); - T('-6.977184098e+17', '-697718409782854734', 9); - T('-8.1e+15', '-8092701222454628.9934935902179330839653799891168', 1); - T('-3.872944373744596915691884729973e+15', '-3872944373744596.91569188472997336351132980366520033057011287', 30); - T('-1.389676e+11', '-138967565295.146055555208419143848718279114979831585', 6); - T('-2.218316993130903882223e+19', '-22183169931309038822.22612', 21); - T('-3.370809304e-25', '-0.000000000000000000000000337080930401566', 9); - T('-6.1503e+19', '-61503417721509415792.24703', 4); - T('-3.13657134e-22', '-0.00000000000000000000031365713378439345', 8); - T('-1.9e-10', '-0.000000000187981', 1); - T('-2.596508353714425677970049724e+28', '-25965083537144256779700497237.5841327343962292316215149169', 27); - T('-4.151454545748277604112308101174917062e+11', '-415145454574.827760411230810117491706171981266892178', 36); - T('-1.3e-18', '-0.000000000000000001319061308619561567664259803361817', 1); - T('-1.5294854487046553159e+24', '-1529485448704655315921667', 19); - T('-1.9365487654708143765583400538310103350799e-13', '-0.000000000000193654876547081437655834005383101033507988', 40); - T('-3.88128259276357427027515474e+25', '-38812825927635742702751547.353', 26); - T('-5.64525474904155517374289736218e-11', '-0.00000000005645254749041555173742897362182099811344', 29); - T('-8.94963385755006409131430087734467745e+22', '-89496338575500640913143.0087734467744538', 35); - T('-3.7551731901764025e+17', '-375517319017640249', 16); - T('-7.601921e-16', '-0.00000000000000076019214974360137746140339586742455753', 6); - T('-6.93501087055e+20', '-693501087055377288564', 11); - T('-1.283656440009563e+24', '-1283656440009563292695670.575360580373829197017512', 15); - T('-4.9556506e+13', '-49556505932168.7211084603', 7); - T('-8.133584588946e+26', '-813358458894586332533196788.490201803951456991010654609646', 12); - T('-3.824207296e+22', '-38242072955850210158724', 9); - T('-4.2168087e-12', '-0.00000000000421680868317080291', 7); - T('-7.152812829e+15', '-7152812829336253.782723153403637377960530795', 9); - T('-8.0469635248612874571e+16', '-80469635248612874.5712104436', 19); - T('-2.726549954018643349550392804e+11', '-272654995401.8643349550392803783934819148125595437353472547', 27); - T('-2.477986360297097033217143e+30', '-2477986360297097033217143442370.539404', 24); - T('-2.7620555408e+15', '-2762055540757162', 10); - T('-5.044e+10', '-50436788962', 3); - T('-1.51176171306898543927009427965761639e+17', '-151176171306898543.9270094279657616389483779413616294465635', 35); - T('-3.76233131039732974161231568e+13', '-37623313103973.2974161231567776787873083163171', 26); - T('-1.77876313221062362e+17', '-177876313221062362.01', 17); - T('-4.28033364715744300662536e+13', '-42803336471574.430066253616', 23); - T('-6.053e-13', '-0.00000000000060527568964627046163209582', 3); - T('-3.9447068214322315685949701607748761e+16', '-39447068214322315.685949701607748760885392781169754754427622', 34); - T('-4.76203665586552028e+15', '-4762036655865520.285', 17); - T('-7.442141482296791204320219247230530359e+24', '-7442141482296791204320219.2472305303585223494415', 36); - T('-5.96279453376966633e+23', '-596279453376966633175009.6', 17); - T('-3.393419405169789e+24', '-3393419405169788742460001.267', 15); - T('-5.3001e+12', '-5300055380607', 4); - T('-5.6075017651299255742594578e+24', '-5607501765129925574259457.7938331743229', 25); - T('-1.7016332185618e-12', '-0.000000000001701633218561829307163951183908', 13); - T('-8.2586539997288574125e-29', '-0.0000000000000000000000000000825865399972885741250631446', 19); - T('-6.867e+11', '-686673700185', 3); - T('-6.77934398386662123284e+26', '-677934398386662123284378302.457585912', 20); - T('-1.68708254641574159341563239757e+14', '-168708254641574.159341563239757201959', 29); - T('-7.969791397195291274332017902569730510486538e+16', '-79697913971952912.74332017902569730510486538476172', 42); - T('-8.35460490386e+14', '-835460490386401.159749305581999482', 11); - T('-3.4904587e+10', '-34904586685.65531405315150234636', 7); - T('-7.655476116917648649e-10', '-0.0000000007655476116917648649345', 18); - T('-3.035704337e+17', '-303570433749270293', 9); - T('-1.4902739431686400585e-18', '-0.000000000000000001490273943168640058452103113', 19); - T('-2.57617086126164572e+17', '-257617086126164572', 17); - T('-6.9708e+16', '-69708261331391628', 4); - T('-8.61400120130585599610136e-12', '-0.00000000000861400120130585599610136066', 23); - T('-9.0670988886e-19', '-0.000000000000000000906709888862126926', 10); - T('-2.889463982215818248e-26', '-0.00000000000000000000000002889463982215818248', 18); - T('-3.7376459408597195073982491e+26', '-373764594085971950739824910.4572745527', 25); - T('-6.21372353850510695881280108179e-12', '-0.0000000000062137235385051069588128010817907', 29); - T('-2.4240953581712173951958e-21', '-0.00000000000000000000242409535817121739519585', 22); - T('-8.3687559027615173415e+18', '-8368755902761517341.46477685623835786273991', 19); - T('-7.18294352e-11', '-0.0000000000718294352479105', 8); - T('-3.52454012503419773886785e-25', '-0.000000000000000000000000352454012503419773886785342913143', 23); - - BigNumber.config({ROUNDING_MODE : 6}); - - T('-4.3502707501164e+36', '-4350270750116411997402439304498892819', 13); - T('9.5e-21', '0.0000000000000000000094520280724178734152', 1); - T('1.39631186750554172785676012693418617250072200744214625994656047727270672248243741907e+34', '13963118675055417278567601269341861.725007220074421462599465604772727067224824374190703237660781', 83); - T('5.9446570e-26', '0.00000000000000000000000005944657036540768164877637239177740419063920648', 7); - T('7.00000e-12', '0.000000000007', 5); - T('-2.87e+14', '-287060740776209.3950381715', 2); - T('3.411740542875509329e+24', '3411740542875509328514044', 18); - T('-6.20235112738687046118395830000000000000000000000e-29', '-0.000000000000000000000000000062023511273868704611839583', 47); - T('2.94349130121570276626863135396717336528655493e+19', '29434913012157027662.686313539671733652865549279174', 44); - T('4.01255076512828067130306533670644537832e-10', '0.000000000401255076512828067130306533670644537831678294548', 38); - T('-5.4277306444432e+11', '-542773064444.317654960431120452254700391693837992', 13); - T('-4.355706886680889557797360814402e+30', '-4355706886680889557797360814401.536556745674646509159280626', 30); - T('-1.29e-15', '-0.00000000000000128978312277001609181774216296380783932', 2); - T('-1.0588973816292989769e+25', '-10588973816292989768709129.1767038708798755780352204', 19); - T('-3.210569596e+10', '-32105695962.8803639621', 9); - T('-7.18504270173744681360682714959e+28', '-71850427017374468136068271495.87', 29); - T('-4.29794333519778779150824479010034817077204e-10', '-0.0000000004297943335197787791508244790100348170772040392', 41); - T('-4.615682142828269066227773895179987062919e+20', '-461568214282826906622.7773895179987062919071922', 39); - T('-1.3864477517287155526073e+13', '-13864477517287.15552607265', 22); - T('-6.793120028e+13', '-67931200280922.72252141789646787475433427482', 9); - T('-8.075e-18', '-0.000000000000000008074975073002274636799975', 3); - T('-8.360228691054180854419062530687032074820667001e+24', '-8360228691054180854419062.530687032074820667001120752628', 45); - T('-3.0763956760417194035216e-12', '-0.000000000003076395676041719403521594', 22); - T('-2.5288383e+25', '-25288383009460922631988717.84659997837058450749', 7); - T('-4.554185192e+29', '-455418519247311560996997520087.98189', 9); - T('-9.135175372324138467397264e+11', '-913517537232.413846739726417', 24); - T('-8.257259383044471855222900534859251889332388855848e-10', '-0.0000000008257259383044471855222900534859251889332388855848', 48); - T('-7.651597268450922707e-13', '-0.000000000000765159726845092270720405167100094', 18); - T('-8.952011763950994514e+26', '-895201176395099451377549961.34870447', 18); - T('-2.7395479569618982298152060567357e-10', '-0.00000000027395479569618982298152060567357', 31); - T('-1.31151451700453378841431e+24', '-1311514517004533788414313', 23); - T('-5.915297930316863891e-10', '-0.0000000005915297930316863890707686339684395', 18); - T('-1.449e-27', '-0.0000000000000000000000000014487033279693402845128265141859', 3); - T('-3.7e+10', '-36919550406.826974442743517918128', 1); - T('-3.945347688940382499631779106638865e+13', '-39453476889403.824996317791066388653', 33); - T('-8.547704e-29', '-0.0000000000000000000000000000854770378842608635356', 6); - T('-3.76e+25', '-37618296325402619735777629.467812385256281737441412', 2); - T('-8.031066086398624e+28', '-80310660863986235667567286452', 15); - T('-4.038276256088135496e-17', '-0.000000000000000040382762560881354955896694823328777602811', 18); - T('-1.77173574740860868e+25', '-17717357474086086837250852', 17); - T('-1.421967649e+21', '-1421967648805122645888', 9); - T('-4.7e+11', '-469485715327', 1); - T('-7.372223291560455075681748682810527006883e+16', '-73722232915604550.75681748682810527006882666313809409', 39); - T('-8.9539396357e+14', '-895393963565598', 10); - T('-8.14646103854802172250414801405e+10', '-81464610385.48021722504148014045579178726', 29); - T('-1.2053415734425581e+12', '-1205341573442.5581371841633131879', 16); - T('-8.35214176861046133596101313170854966756043001e+28', '-83521417686104613359610131317.0854966756043001041619492', 44); - T('-3.7610694152e-28', '-0.00000000000000000000000000037610694151517628351', 10); - T('-6.71e-12', '-0.00000000000670729337105720320122353', 2); - T('-4.005517304396006251e+13', '-40055173043960.0625088492324182094858', 18); - T('-6.0206e+28', '-60205974155921075891080012488.4566490314762809', 4); - T('-6.36287561326e+11', '-636287561325.9124444291802472', 11); - T('-3.11336117e-16', '-0.000000000000000311336117052129384933053792', 8); - T('-5.3927134886536e+30', '-5392713488653639958906162302264.424436642808', 13); - T('-3.82395446711276e-10', '-0.0000000003823954467112758458806849565215407952986440811', 14); - T('-4.2858082253423e-27', '-0.0000000000000000000000000042858082253422975', 13); - T('-2.9918792622984137284399075479267066e+14', '-299187926229841.3728439907547926706557', 34); - T('-3.1949909651023223034303544498737e+27', '-3194990965102322303430354449.8737', 31); - T('-9.1e-27', '-0.0000000000000000000000000090531861025', 1); - T('-2.8e+11', '-279301037794', 1); - T('-7.126913661498270214611054421e+13', '-71269136614982.70214611054420849', 27); - T('-4.86337579169293342736515180299340135e+13', '-48633757916929.334273651518029934013479777304', 35); - T('-3.406744915848058125e+25', '-34067449158480581246177934.3445612265793', 18); - T('-5.542902272865090080311949446460659235171860088660477e+16', '-55429022728650900.803119494464606592351718600886604770155246', 51); - T('-8.26224854264697737938997145336e+12', '-8262248542646.9773793899714533620028598662842221171', 29); - T('-3.16331e+18', '-3163306186318700887', 5); - T('-9.087531707575372e+25', '-90875317075753723792666377.6466517495', 15); - T('-8.758548512438e+14', '-875854851243824.87435', 12); - T('-3.9e-11', '-0.0000000000387093', 1); - T('-3.987015017148130889206385341736666180313e+11', '-398701501714.813088920638534173666618031251290587', 39); - T('-2.493129998e-11', '-0.00000000002493129997889845697168462', 9); - T('-7.0892393575673871055576e+17', '-708923935756738710.5557595392277447617', 22); - T('-4.931821627225927773384e-20', '-0.00000000000000000004931821627225927773384063578', 21); - T('-5.245261764976094777313893054196562e-17', '-0.0000000000000000524526176497609477731389305419656234', 33); - T('-6.66625797221972034223428591e+23', '-666625797221972034223428.590606426470365', 26); - T('-4.06575860462e+17', '-406575860461750182.91372176567693718', 11); - T('-8.90585675951e+19', '-89058567595113495345', 11); - - BigNumber.config({ROUNDING_MODE : 4}); - - T('-2.033619450856645241153977e+0', '-2.03361945085664524115397653636144859', 24); - T('1.130e+8', '112955590.0430616', 3); - T('-2.1366468193419876852426155614364269e+10', '-21366468193.419876852426155614364269', 34); - T('5.82086615659566151529e+7', '58208661.56595661515285734890860077163', 20); - T('9.1615809372817426111208e+6', '9161580.937281742611120838868847823478250167882379624', 22); - T('3.8976506901061164197e+1', '38.97650690106116419699490320634490920742414', 19); - T('9.0994914931570087194607344641722310104e+6', '9099491.4931570087194607344641722310103895224905', 37); - T('6.06e+5', '605633', 2); - T('2.6999974790473705518992117e+1', '26.9999747904737055189921170044987', 25); - T('6.7108801361722e+6', '6710880.136172156342982663450743452', 13); - T('-8.0e+0', '-8', 1); - T('3.000e-2', '0.03', 3); - T('-4.7e+2', '-469', 1); - T('-6.3000e+0', '-6.3', 4); - T('-5.4e+2', '-542', 1); - T('-5.2000e+0', '-5.2', 4); - T('-9.00000e-2', '-0.09', 5); - T('-3.1000e-1', '-0.31', 4); - T('-4.4e+2', '-436', 1); - T('-3.00e+0', '-3', 2); - T('-5.00e-2', '-0.05', 2); - T('1.00e-2', '0.01', 2); - - T('1.230e+2', '12.3e1',BigNumber('3')); - T('1.23e+2', '12.3e1', null); - T('1.23e+2', '12.3e1', undefined); - T('1e+2', '12.3e1', '0'); - T('1e+2', '12.3e1', '-0'); - T('1e+2', '12.3e1', '-0.000000'); - T('1e+2', '12.3e1', 0); - T('1e+2', '12.3e1', -0); - - assertException(function () {new BigNumber('1.23').toExponential(NaN)}, "('1.23').toExponential(NaN)"); - assertException(function () {new BigNumber('1.23').toExponential('NaN')}, "('1.23').toExponential('NaN')"); - assertException(function () {new BigNumber('1.23').toExponential([])}, "('1.23').toExponential([])"); - assertException(function () {new BigNumber('1.23').toExponential({})}, "('1.23').toExponential({})"); - assertException(function () {new BigNumber('1.23').toExponential('')}, "('1.23').toExponential('')"); - assertException(function () {new BigNumber('1.23').toExponential(' ')}, "('1.23').toExponential(' ')"); - assertException(function () {new BigNumber('1.23').toExponential('hello')}, "('1.23').toExponential('hello')"); - assertException(function () {new BigNumber('1.23').toExponential('\t')}, "('1.23').toExponential('\t')"); - assertException(function () {new BigNumber('1.23').toExponential(new Date)}, "('1.23').toExponential(new Date)"); - assertException(function () {new BigNumber('1.23').toExponential(new RegExp)}, "('1.23').toExponential(new RegExp)"); - assertException(function () {new BigNumber('1.23').toExponential(2.01)}, "('1.23').toExponential(2.01)"); - assertException(function () {new BigNumber('1.23').toExponential(10.5)}, "('1.23').toExponential(10.5)"); - assertException(function () {new BigNumber('1.23').toExponential('1.1e1')}, "('1.23').toExponential('1.1e1')"); - assertException(function () {new BigNumber('1.23').toExponential(true)}, "('1.23').toExponential(true)"); - assertException(function () {new BigNumber('1.23').toExponential(false)}, "('1.23').toExponential(false)"); - assertException(function () {new BigNumber('1.23').toExponential(function (){})}, "('1.23').toExponential(function (){})"); - - assertException(function () {new BigNumber(12.3).toExponential('-1')}, ".toExponential('-1')"); - assertException(function () {new BigNumber(12.3).toExponential(-23)}, ".toExponential(-23)"); - assertException(function () {new BigNumber(12.3).toExponential(1e9 + 1)}, ".toExponential(1e9 + 1)"); - assertException(function () {new BigNumber(12.3).toExponential(1e9 + 0.1)}, ".toExponential(1e9 + 0.1)"); - assertException(function () {new BigNumber(12.3).toExponential(-0.01)}, ".toExponential(-0.01)"); - assertException(function () {new BigNumber(12.3).toExponential('-1e-1')}, ".toExponential('-1e-1')"); - assertException(function () {new BigNumber(12.3).toExponential(Infinity)}, ".toExponential(Infinity)"); - assertException(function () {new BigNumber(12.3).toExponential('-Infinity')}, ".toExponential('-Infinity')"); - - BigNumber.config({ERRORS : false}); - - T('Infinity', Infinity, 0); - T('Infinity', Infinity, NaN); - T('Infinity', Infinity, null); - T('Infinity', Infinity, Infinity); - T('NaN', NaN, -Infinity); - - T('1.230e+2', '12.3e1', BigNumber(3)); - T('1.23e+2', '12.3e1', null); - T('1.23e+2', '12.3e1', undefined); - T('1.23e+2', '12.3e1', NaN); - T('1.23e+2', '12.3e1', 'NaN'); - T('1.23e+2', '12.3e1', []); - T('1.23e+2', '12.3e1', {}); - T('1.23e+2', '12.3e1', ''); - T('1.23e+2', '12.3e1', ' '); - T('1.23e+2', '12.3e1', 'hello'); - T('1.23e+2', '12.3e1', '\t'); - T('1.23e+2', '12.3e1', ' '); - T('1.23e+2', '12.3e1', new Date); - T('1.23e+2', '12.3e1', new RegExp); - - T('1e+2', '12.3e1', -0); - T('1.2e+2', '12.3e1', 1.999); - T('1.2300000e+2', '12.3e1', 7.5); - T('1.23000000000e+2', '12.3e1', '1.1e1'); - - T('1.23e+2', '12.3e1', '-1'); - T('1.23e+2', '12.3e1', -23); - T('1.23e+2', '12.3e1', 1e9 + 1); - T('1.23e+2', '12.3e1', 1e9 + 0.1); - T('1.23e+2', '12.3e1', -0.01); - T('1.23e+2', '12.3e1', '-1e-1'); - T('1.23e+2', '12.3e1', Infinity); - T('1.23e+2', '12.3e1', '-Infinity'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js deleted file mode 100644 index 93d91d7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFixed.js +++ /dev/null @@ -1,1499 +0,0 @@ -var count = (function toFixed(BigNumber) { - var start = +new Date(), - log, - error, - u, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, value, decimalPlaces){ - assert(String(expected), new BigNumber(value).toFixed(decimalPlaces)); - } - - log('\n Testing toFixed...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Number/toFixed - // Javascript: 2.26.toFixed(5) returns 2.26000 - // Javascript: -2.26.toFixed(5) returns -2.26 - // BigNumber: new BigNumber(-2.26).toFixed(5) returns -2.26000 - - T('100.0', 99.9512986, 1); - T('10.0', 9.95036, 1); - T('1.0', 0.99, 1); - T('0.10', 0.09906, 2); - T('0.010', 0.0098034, 3); - - T('NaN', NaN, 2); - T('Infinity', 1/0, 2); - T('-Infinity', -1/0, 2); - - T('1111111111111111111111.00000000', '1111111111111111111111', 8); - T('0.1', 0.1, 1); - T('0.10', 0.1, 2); - T('0.100', 0.1, 3); - T('0.01', 0.01, 2); - T('0.010', 0.01, 3); - T('0.0100', 0.01, 4); - T('0.00', 0.001, 2); - T('0.001', 0.001, 3); - T('0.0010', 0.001, 4); - T('1.0000', 1, 4); - T('1.0', 1, 1); - T('1', 1, 0); - T('12', 12, 0); - T('1', 1.1, 0); - T('12', 12.1, 0); - T('1', 1.12, 0); - T('12', 12.12, 0); - T('0.0000006', 0.0000006, 7); - T('0.00000006', 0.00000006, 8); - T('0.000000060', 0.00000006, 9); - T('0.0000000600', 0.00000006, 10); - T('0', 0, 0); - T('0.0', 0, 1); - T('0.00', 0, 2); - - T('-1111111111111111111111.00000000', '-1111111111111111111111', 8); - T('-0.1', -0.1, 1); - T('-0.10', -0.1, 2); - T('-0.100', -0.1, 3); - T('-0.01', -0.01, 2); - T('-0.010', -0.01, 3); - T('-0.0100', -0.01, 4); - T('-0.00', -0.001, 2); - T('-0.001', -0.001, 3); - T('-0.0010', -0.001, 4); - T('-1.0000', -1, 4); - T('-1.0', -1, 1); - T('-1', -1, 0); - T('-1', -1.1, 0); - T('-12', -12.1, 0); - T('-1', -1.12, 0); - T('-12', -12.12, 0); - T('-0.00000', -0.0000006, 5); - T('-0.0000006', -0.0000006, 7); - T('-0.00000006', -0.00000006, 8); - T('-0.000000060', -0.00000006, 9); - T('-0.0000000600', -0.00000006, 10); - T('0', 0, 0); - T('0', -0, 0); - T('0.0', -0, 1); - T('0.00', -0, 2); - T('0.00', '-0.0', 2); - T('0.00', '-0.0000', 2); - T('0.0000', -0, 4); - - T('1000', 1000, u); - T('0.00001', 0.00001, u); - T('0.00001', 0.00001, 5); - T('0.00000000000000000010', '0.0000000000000000001', 20); - T('0.00001000000000000', 0.00001, 17); - T('1.00000000000000000', 1, 17); - T('1000000000000000128', '1000000000000000128', u); - T('100000000000000128.0', '100000000000000128', 1); - T('10000000000000128.00', '10000000000000128', 2); - T('10000000000000128.00000000000000000000', '10000000000000128', 20); - T('0', 0, u); - T('-42.000', -42, 3); - T('-1000000000000000128', '-1000000000000000128', u); - T('-0.00000000000000000010', '-0.0000000000000000001', 20); - T('0.12312312312312300000', '0.123123123123123', 20); - - T('1', 0.5, 0); - T('-1', -0.5, 0); - T('1.3', 1.25, 1); - T('234.2041', 234.20405, 4); - T('234.2041', '234.204050000000000000000000000000006', 4); - - BigNumber.config({ROUNDING_MODE : 0}); - - T('6552606716539719300271040797809220.3', '6552606716539719300271040797809220.237838405', 1); - T('25605410.260045950231371', '25605410.260045950231370974066', 15); - T('-65593283.0000', '-65593283', 4); - T('-2238743875407788208860272230040067273281097722822075126.88000000000', '-2238743875407788208860272230040067273281097722822075126.88', 11); - T('-1714042659419404211.0000000', '-1714042659419404211', 7); - T('580861301.000', '580861301', 3); - T('-495746734.000', '-495746734', 3); - T('-909962202.00000', '-909962202', 5); - T('-6588.00', '-6588', 2); - T('-89235424125324.000000', '-89235424125324', 6); - T('-0.0001', '-0.0000000000177', 4); - T('-0.1', '-0.000000000000007', 1); - T('7086047552021418140460170703933026989776558656.864197000000000', '7086047552021418140460170703933026989776558656.864197', 15); - T('-0.0000000001', '-0.0000000000000000007707', 10); - T('6613833500.133407255728', '6613833500.133407255727325566781771', 12); - T('-0.60', '-0.6', 2); - T('-5800577761301861465745732694236894834.347199790459214393940', '-5800577761301861465745732694236894834.34719979045921439394', 21); - T('65495133621931312001260.90', '65495133621931312001260.89870016055223846451749943336585697', 2); - T('-0.0000001', '-0.0000000000021727264987520611266069544793244453321336', 7); - T('5138338134667513058267845351654.0073', '5138338134667513058267845351654.007282', 4); - T('-419591612781413402.1606094651083282', '-419591612781413402.16060946510832813452', 16); - T('-842984708.00000', '-842984708', 5); - T('6094679992788973717749530934167375519948195193196.00000000000', '6094679992788973717749530934167375519948195193196', 11); - T('3070926.00', '3070926', 2); - T('-49738484.22445560175', '-49738484.2244556017464380224443566512165424404', 11); - T('0.01', '0.007252154601', 2); - T('0.01', '0.0000000008450464516429601', 2); - T('64191341.1515', '64191341.151484', 4); - T('-0.0000000000000004274', '-0.00000000000000042733957907641417564294', 19); - T('-307434.0', '-307434', 1); - T('-7155930111672774753753.84501482871023', '-7155930111672774753753.845014828710226', 14); - T('-204638.0', '-204638', 1); - T('67354.81', '67354.801797', 2); - T('0.000042911675', '0.000042911674899533228107357062', 12); - T('-57865060735863.5903347110', '-57865060735863.590334711', 10); - T('-0.00889', '-0.0088857', 5); - T('655593535442553089245040020344044.000000000000', '655593535442553089245040020344044', 12); - T('-2077237944012133216588518213.9402', '-2077237944012133216588518213.9401561759783653376', 4); - T('3354.50', '3354.49314543', 2); - T('-0.00001', '-0.000000000000091204118667391473401958802734362777499449233', 5); - T('-2817626898661648124242602088971648489124280903.00000000000000000000000', '-2817626898661648124242602088971648489124280903', 23); - T('-0.1138', '-0.1137406345875745478881089475981775971743', 4); - T('372625.84', '372625.836933301', 2); - T('-0.0001', '-0.0000000000030295', 4); - T('-0.20133282610692', '-0.2013328261069183505168093992697', 14); - T('-674022381434.84086', '-674022381434.840858317', 5); - T('527.32194354633', '527.32194354632981665427056720389485101', 11); - T('0.0000000195361247565', '0.0000000195361247564008390550978147981600411', 19); - T('-2163002984808367617.0000', '-2163002984808367617', 4); - T('-4169664275471960031191605200147601022249457082609196211576.20000000000000000000000', '-4169664275471960031191605200147601022249457082609196211576.2', 23); - T('-0.00000000000555130', '-0.0000000000055512969161980904744035', 17); - T('119869956144.00', '119869956144', 2); - T('1.039', '1.038251882646323867920972358898559', 3); - T('-2.0', '-2', 1); - T('7410.197760931', '7410.197760930626987673', 9); - T('6638110167526.00', '6638110167526', 2); - T('30974929342171050427055113.00', '30974929342171050427055113', 2); - T('43480882950025886012415275271059692966.000', '43480882950025886012415275271059692966', 3); - T('-0.1', '-0.0000004587260575000190182731', 1); - T('-71828326035.100387343565950831', '-71828326035.100387343565950830073177108125', 18); - T('-552954262470932495380914766735683420381508430032672.0000000000000', '-552954262470932495380914766735683420381508430032672', 13); - T('-0.001', '-0.000000006438270583885530971500187308778545384', 3); - T('-1241063214283490729682249.3542720483313661438', '-1241063214283490729682249.35427204833136614379131332498', 19); - T('50729670708122152413903981650812767483.000000000000000000', '50729670708122152413903981650812767483', 18); - T('-0.8', '-0.73086389033', 1); - T('0.000000001', '0.0000000000035654453258182342271756', 9); - T('-37426128484776251838279429.00000', '-37426128484776251838279429', 5); - T('-8858815238086078991845344.00', '-8858815238086078991845344', 2); - T('715713000263082248.000', '715713000263082248', 3); - T('-1290.35664066483299', '-1290.35664066483298067128266141875', 14); - T('-0.00000008453', '-0.0000000845275307904197645672104', 11); - T('-435325479515.000000', '-435325479515', 6); - T('-55.026', '-55.0259854614935863191307', 3); - T('-111827547395883838719196940005789974871114521059.00000000000000000000000', '-111827547395883838719196940005789974871114521059', 23); - T('-0.80', '-0.8', 2); - T('-8.17139161520009', '-8.1713916152000874707093159619488493836845705', 14); - T('769000136593201.985181', '769000136593201.98518095', 6); - T('31159491831470011.07740834271415', '31159491831470011.0774083427141446999', 14); - T('89059.299592037965784', '89059.2995920379657839664222340962987295864685207', 15); - T('0.1', '0.06', 1); - T('-4570519.0000', '-4570519', 4); - T('-0.0000001518', '-0.000000151731483260580950465152613377577649917', 10); - T('-5555052692.071431452', '-5555052692.07143145120571654571684469634938224716', 9); - T('0.01', '0.0000000735211529638724323811564431527925439', 2); - T('-230061001007826663915617395042288.847216199000', '-230061001007826663915617395042288.847216199', 12); - T('-6453992990066244249806.375375876294395', '-6453992990066244249806.3753758762943945461637495930201559', 15); - T('-0.01', '-0.0000026377450289082142641925', 2); - T('-363618346.0', '-363618346', 1); - T('0.01', '0.00000000009', 2); - T('65432262394897701468848832.7', '65432262394897701468848832.607978068443545803141', 1); - T('567040263395365029.000', '567040263395365029', 3); - T('7431958669891786786543853147278.580', '7431958669891786786543853147278.58', 3); - T('0.0580', '0.0579400993437', 4); - T('-5364310483511374687804726517179019251624044430754.23807000000000', '-5364310483511374687804726517179019251624044430754.23807', 14); - T('81096.00', '81096', 2); - T('-0.000000766905', '-0.00000076690484881136751175461310751844214625312811858607148', 12); - T('837.0', '837', 1); - T('-0.000001', '-0.0000000003241605066758965441271096586120022721670744987061', 6); - T('18848356500282.000000', '18848356500282', 6); - T('-6865183293234767102.91096748000', '-6865183293234767102.91096748', 11); - - BigNumber.config({ROUNDING_MODE : 1}); - - T('0.3', '0.3', 1); - T('-200258348374.3', '-200258348374.3595802551014614089785610548492885372322083789', 1); - T('-8996550690041157178188143247448286757711.5580857413', '-8996550690041157178188143247448286757711.55808574133329', 10); - T('-3172413669280032477.00', '-3172413669280032477', 2); - T('6547946357820.750067107731812021675', '6547946357820.750067107731812021675351468709784004', 21); - T('24188393190716631282750407915133817062572333100239.0000000000000000000', '24188393190716631282750407915133817062572333100239', 19); - T('539982361589798324286450574560330534901309503.82000000', '539982361589798324286450574560330534901309503.82', 8); - T('829898800701640360552652.0000', '829898800701640360552652', 4); - T('-1585782773394.4', '-1585782773394.44501382110847', 1); - T('-7604844176594943774211951887242195107.399', '-7604844176594943774211951887242195107.399576743428669618164', 3); - T('-0.00', '-0.0000000000000005153003506839', 2); - T('0.000', '0.00003', 3); - T('-5454249481540317712.560293859013731302', '-5454249481540317712.56029385901373130215526009738012974642338', 18); - T('15352607654972198961429295651185206861818141054385638.00000000000000000', '15352607654972198961429295651185206861818141054385638', 17); - T('91494535411039025233040.292', '91494535411039025233040.29224903220309368507011', 3); - T('2043369316.0', '2043369316', 1); - T('-0.0000000782350618457', '-0.0000000782350618457630647420312027682238301541350414', 19); - T('2122652.0', '2122652', 1); - T('-0.00841365', '-0.00841365099301981489219310202029642', 8); - T('0.0', '0.0007035', 1); - T('-0.00000000000000374916', '-0.0000000000000037491685778894015479084539735777088', 20); - T('534883638.00', '534883638', 2); - T('-2.0', '-2', 1); - T('-5634442247266825358399629799939027370665.0000000000000000000', '-5634442247266825358399629799939027370665', 19); - T('3331187169219186569122.000000000', '3331187169219186569122', 9); - T('0.0000000000', '0.0000000000006604395609805032330367635527', 10); - T('-0.0000000000000576901', '-0.00000000000005769013292086168690493327', 19); - T('-661.8', '-661.828596629053201916486', 1); - T('-6073555395665254434249128854999349235744174928042756.1153000000000', '-6073555395665254434249128854999349235744174928042756.1153', 13); - T('-5013086846966.000', '-5013086846966', 3); - T('0.004015', '0.00401523226833', 6); - T('3140295374107374579919222510.1462722', '3140295374107374579919222510.1462722819395532', 7); - T('-0.000000', '-0.00000000000000799876460379334679831886', 6); - T('-0.00', '-0.0003', 2); - T('-0.026760766726884267', '-0.026760766726884267750393307117624838556001925491', 18); - T('-20821740502968847857923433558797.0899', '-20821740502968847857923433558797.08997487843745', 4); - T('0.00000000002', '0.000000000020346524414696573703092255317751132892', 11); - T('45492073832204366341299301624.000000000', '45492073832204366341299301624', 9); - T('-22166905155222048275755520049666636.000000000000000', '-22166905155222048275755520049666636', 15); - T('-0.0047749609085292677147', '-0.00477496090852926771478756451899887586311084', 22); - T('0.0000000000066505751320542', '0.000000000006650575132054209449586010993453988006221893652', 25); - T('-5987959.1630276586738', '-5987959.163027658673856586', 13); - T('-1666.00', '-1666', 2); - T('634686619827216246836355610829.00000', '634686619827216246836355610829', 5); - T('-4775591515709.469953191321103401', '-4775591515709.4699531913211034017874029213583522324151968262', 18); - T('-0.00209248872211', '-0.002092488722118037239933953031151990638700454763', 14); - T('4592542353054190400811174084.8269203906', '4592542353054190400811174084.826920390637', 10); - T('-2719622410429690231797721788738949434271171.000000000', '-2719622410429690231797721788738949434271171', 9); - T('7481081126833353571249877375770446139269602514514.000000000000000', '7481081126833353571249877375770446139269602514514', 15); - T('-717308374940.1455264110', '-717308374940.145526411005821148802846366045624291352081913', 10); - T('-0.000000007', '-0.000000007385554720977', 9); - T('-0.000861389378754506340', '-0.000861389378754506340296565696012302905659179798', 21); - T('-5053251493102402525630380749.678', '-5053251493102402525630380749.6785380807585', 3); - T('-4.0', '-4', 1); - T('-91608.490784509096643367058', '-91608.49078450909664336705884736640894006', 21); - T('0.000', '0.000000008', 3); - T('-60759551763816025544062865222.0000000000', '-60759551763816025544062865222', 10); - T('1052.9354577213309', '1052.93545772133093448862729794627180236152', 13); - T('45267509474.0', '45267509474', 1); - T('3157315152.00', '3157315152', 2); - T('-0.5', '-0.5', 1); - T('0.0057546', '0.005754639024965241832260499185230186', 7); - T('-0.000', '-0.0006', 3); - T('3230791870040253164174259086.74466486260', '3230791870040253164174259086.7446648626', 11); - T('-4344423254203589122222715762047.000000', '-4344423254203589122222715762047', 6); - T('0.000000', '0.00000000000000000005', 6); - T('-0.00000000', '-0.0000000000000032995964759', 8); - T('29342667392627.13800502090', '29342667392627.1380050209', 11); - T('3553322646.0000', '3553322646', 4); - T('0.0000000', '0.000000000000711595888783922', 7); - T('128714169681975260747586179339689165715468750318817.0', '128714169681975260747586179339689165715468750318817', 1); - T('-203846045708188631.7', '-203846045708188631.714385911896349', 1); - T('6732937084326281547153681265380857817.680', '6732937084326281547153681265380857817.68', 3); - T('-80645.000', '-80645', 3); - T('0.0091340467346905226', '0.0091340467346905226577831006050168789952519932147436292', 19); - T('765350910755641789513513452874635492095713.000000000000000000', '765350910755641789513513452874635492095713', 18); - T('7619917853284.00', '7619917853284', 2); - T('-7584198211496430223.4315410358218089229', '-7584198211496430223.43154103582180892294235232', 19); - T('-2946097370887492968389.2786430820000', '-2946097370887492968389.278643082', 13); - T('-400129748.000', '-400129748', 3); - T('-76362970460470638842230785495147305876.114384970200', '-76362970460470638842230785495147305876.1143849702', 12); - T('334029398796150851211670406157956664329.0000000000000', '334029398796150851211670406157956664329', 13); - T('-0.000000000000', '-0.000000000000000000881892851839338487244179354', 12); - T('-70475264003.0000', '-70475264003', 4); - T('0.080', '0.0809', 3); - T('16917787280140934145228.000', '16917787280140934145228', 3); - T('25909519297999779346.000000000', '25909519297999779346', 9); - T('-355224.19720319810644', '-355224.19720319810644496969482', 14); - T('8482635122899359930368306655493255835883236244.0000000000000', '8482635122899359930368306655493255835883236244', 13); - T('41268046802033799763539654473098094614587.00000000000000000', '41268046802033799763539654473098094614587', 17); - T('8564065673925609331469179144.0', '8564065673925609331469179144', 1); - T('-231732424.30838', '-231732424.3083887160672296965273691583237367', 5); - T('-597740668669015342275289261436747905744110289638.43026849', '-597740668669015342275289261436747905744110289638.430268497449', 8); - T('8297509140414599.000000', '8297509140414599', 6); - T('-17320207086212822899.00', '-17320207086212822899', 2); - T('0.00', '0.000000000002', 2); - T('4972.517305', '4972.51730546661166855901714', 6); - T('0.000000', '0.0000000162819653537555368724511902456803362906', 6); - T('29485932208290816133111088923502731.000000', '29485932208290816133111088923502731', 6); - T('0.0000', '0.000000000006', 4); - - BigNumber.config({ROUNDING_MODE : 2}); - - T('7810971819938620325901899057970512790433.0000000000000000', '7810971819938620325901899057970512790433', 16); - T('-623395.0', '-623395', 1); - T('81334094079413997693749807.000000000000', '81334094079413997693749807', 12); - T('790143966.5', '790143966.406169480041929356421', 1); - T('-0.000485', '-0.0004851099615478', 6); - T('843581583868277359263.9721265', '843581583868277359263.97212648230399373761717', 7); - T('-921038771017147427324121032.000000', '-921038771017147427324121032', 6); - T('-823.0', '-823', 1); - T('505.0', '505', 1); - T('-866703339332502.8636000', '-866703339332502.8636', 7); - T('46.0', '46', 1); - T('60042202798790129685.0000000', '60042202798790129685', 7); - T('-1847392.0000', '-1847392', 4); - T('-4580251343840510165820631684073999841789879.0000000000000000000000', '-4580251343840510165820631684073999841789879', 22); - T('3501378778000.539063748827265447', '3501378778000.5390637488272654464266281832626835121535730779', 18); - T('0.000000004686', '0.000000004685387489140232', 12); - T('-0.0', '-0.0006', 1); - T('-445677508.00', '-445677508', 2); - T('0.0002', '0.00015099822561012723', 4); - T('-2992505698074499692367794831646886.0000000000000000', '-2992505698074499692367794831646886', 16); - T('5297873.59', '5297873.5869265978056497873793730268', 2); - T('72978439324039191443182.00000000000', '72978439324039191443182', 11); - T('0.66028387', '0.660283869505570207917431271006277981914716620876', 8); - T('-232008389442485.0', '-232008389442485', 1); - T('-2.371568', '-2.37156855939356279513952542004820909', 6); - T('-0.36285', '-0.3628526972092455731139', 5); - T('-8119.0', '-8119', 1); - T('171846434549810597775.8595264010', '171846434549810597775.859526401', 10); - T('-765674124885597.6363120', '-765674124885597.636312053095690367', 7); - T('2682390283.000', '2682390283', 3); - T('7799670515191143398434802.0000000000', '7799670515191143398434802', 10); - T('731916154123696.1935', '731916154123696.193488323779184681349292529227446', 4); - T('-793941153937799250384382615553258074.00000', '-793941153937799250384382615553258074', 5); - T('651002.00', '651002', 2); - T('-61317874871.00', '-61317874871', 2); - T('8673.00', '8673', 2); - T('-14490519736189597435728386282.030655', '-14490519736189597435728386282.0306558561264348956674', 6); - T('0.001', '0.00000000000002', 3); - T('0.000009', '0.000008920984342', 6); - T('0.0000920957086395973679873', '0.000092095708639597367987279557138375172816422475', 25); - T('28125849913667924088615.25407023317734', '28125849913667924088615.2540702331773399078402875044891', 14); - T('87.55538597', '87.55538596435839691343147', 8); - T('939705902083425775202905619379.0000000', '939705902083425775202905619379', 7); - T('7303936681469130614.8345000', '7303936681469130614.8345', 7); - T('-5831852886782.68010000', '-5831852886782.6801', 8); - T('-0.0000000', '-0.0000000213769530812', 7); - T('3939846383149740457.10095420654', '3939846383149740457.1009542065397674933246710194598175764', 11); - T('590849835.0000', '590849835', 4); - T('-8275957863.1479060805971940', '-8275957863.14790608059719409463511261267671122', 16); - T('88601607840.97', '88601607840.97', 2); - T('-87.0', '-87', 1); - T('-0.00000000000059590334996', '-0.0000000000005959033499645216206226546715679135941845273', 23); - T('-20156162002512717731841.00', '-20156162002512717731841', 2); - T('-7651429939400798.00000000', '-7651429939400798', 8); - T('4054038.8271920833198564466870907131', '4054038.8271920833198564466870907130849589640579687753824767', 28); - T('0.000001', '0.0000000003', 6); - T('275300507469257287911954639302505046260690.99000000', '275300507469257287911954639302505046260690.99', 8); - T('642144861480907968070.771743458405005477', '642144861480907968070.77174345840500547656346', 18); - T('-889957451436631506823037014.12137026759445866404763', '-889957451436631506823037014.1213702675944586640476325', 23); - T('-0.06219606', '-0.062196067085235955835989272145756234722461994836174091995', 8); - T('-74213.0', '-74213', 1); - T('-1874944878399124299917948535549036295737418419.000', '-1874944878399124299917948535549036295737418419', 3); - T('83048495.1430455759922', '83048495.1430455759921014663361993386532235', 13); - T('-755506912.624491023612801925849', '-755506912.6244910236128019258495078668411577879440686', 21); - T('5321125710271045378833902102391466551386841083.00000000000', '5321125710271045378833902102391466551386841083', 11); - T('0.000004284427957821426529823151', '0.0000042844279578214265298231502546967595510818572110299927', 30); - T('472565886204.00000', '472565886204', 5); - T('31931010708026796882.0000000', '31931010708026796882', 7); - T('-4082183405971.00', '-4082183405971', 2); - T('43182719822263089032.0', '43182719822263089032', 1); - T('-74632497435577935327787910318876432.000000', '-74632497435577935327787910318876432', 6); - T('24236715602376164671.99119879565302925270845390802', '24236715602376164671.99119879565302925270845390801276995046', 29); - T('0.0002148', '0.00021473151048663639093342995904027', 7); - T('11552045377675783444804198150417717022744929.278', '11552045377675783444804198150417717022744929.2775103900527', 3); - T('0.0000007575', '0.000000757403681490224', 10); - T('-855.71', '-855.7117714955299728683318516625249', 2); - T('40834479174168915057442292427179095154620364684.0000000000000000000', '40834479174168915057442292427179095154620364684', 19); - T('270321444.000', '270321444', 3); - T('-30995028620287.03', '-30995028620287.032123746540311643282', 2); - T('-0.0', '-0.00009', 1); - T('-602729508268591597438320913.60658950848712687', '-602729508268591597438320913.60658950848712687918', 17); - T('-548567216043758894618461964890.694772532380790460115', '-548567216043758894618461964890.6947725323807904601157', 21); - T('82.0', '82', 1); - T('-55514405531090.06405191', '-55514405531090.06405191938240530830698', 8); - T('748298620904632711442812.4683', '748298620904632711442812.46822', 4); - T('682294636690140.7964265', '682294636690140.7964264385841075', 7); - T('-0.000000000', '-0.00000000000000000291', 9); - T('-6848806396346459932451282602470846060855488728.540000000000', '-6848806396346459932451282602470846060855488728.54', 12); - T('5276393.209', '5276393.2086599096026388085281', 3); - T('0.4', '0.4', 1); - T('8375483913668.000', '8375483913668', 3); - T('34817563688185836561554596.15000', '34817563688185836561554596.15', 5); - T('4367672.009', '4367672.00813881', 3); - T('-5013698209882323019634267579122589538355461264705883707.000000000000000000000000', '-5013698209882323019634267579122589538355461264705883707', 24); - T('0.001', '0.000000000000000745707393395393623687701759', 3); - T('76676945635878017064402467.00000', '76676945635878017064402467', 5); - T('-382435678755006.0000000', '-382435678755006', 7); - T('0.5', '0.5', 1); - T('-3063.0', '-3063', 1); - T('-3.0', '-3', 1); - - BigNumber.config({ROUNDING_MODE : 3}); - - T('0.0000', '0.00000000000584', 4); - T('-79055907138737329232.165677999092552368', '-79055907138737329232.1656779990925523674', 18); - T('47206303530045536472421888342339.00000000', '47206303530045536472421888342339', 8); - T('3974.0', '3974', 1); - T('1296297430771.39', '1296297430771.391670729445980444292', 2); - T('0.000016', '0.00001686928031', 6); - T('-0.00001', '-0.0000000000008', 5); - T('4883938724383.000', '4883938724383', 3); - T('-5.4115622307', '-5.411562230628539329345282639155988044655000352687981880842', 10); - T('-0.01', '-0.0000000000155280115429218804426906540524', 2); - T('-2730930776035874709906.00000', '-2730930776035874709906', 5); - T('8419336352549424092369623.00000', '8419336352549424092369623', 5); - T('52897.4', '52897.4', 1); - T('-783171007682720320053252521365465473997085.0', '-783171007682720320053252521365465473997085', 1); - T('0.8', '0.8', 1); - T('-0.00000000085280', '-0.000000000852796916216780032747621063045628213284', 14); - T('809486781065644418.9', '809486781065644418.939', 1); - T('-9.0', '-9', 1); - T('2399395.00', '2399395', 2); - T('-243707862514768528758611224374.0000000000000', '-243707862514768528758611224374', 13); - T('-87906.00', '-87906', 2); - T('-36206954271055061276640398631031143034683624940748.9970000000000000000000', '-36206954271055061276640398631031143034683624940748.997', 22); - T('0.00', '0.0000000000565885579252765288683939564608114096713', 2); - T('-8391656174313988740342135972218668561645437.0', '-8391656174313988740342135972218668561645437', 1); - T('14571897947566372593360811.00000000000', '14571897947566372593360811', 11); - T('-473156035623.70', '-473156035623.690373046925674588826', 2); - T('2798706581453003.177239111', '2798706581453003.17723911167031', 9); - T('607781292230803273523112111.091726721140', '607781292230803273523112111.09172672114', 12); - T('-0.3', '-0.3', 1); - T('3008522535782692059736852844809784198247000184.0', '3008522535782692059736852844809784198247000184', 1); - T('14227.00', '14227', 2); - T('7841760307718014116576857993957.0000', '7841760307718014116576857993957', 4); - T('-0.00001', '-0.00000000000002596', 5); - T('5247199732982111073.000000000', '5247199732982111073', 9); - T('-12.0', '-12', 1); - T('0.000', '0.00005', 3); - T('-1383703062.0000', '-1383703062', 4); - T('0.0051019245305169', '0.00510192453051698060366202631871161193', 16); - T('-45565092550117861497905653558246322559799.0', '-45565092550117861497905653558246322559799', 1); - T('-0.284', '-0.284', 3); - T('-8962.00', '-8962', 2); - T('49335989571.2173023', '49335989571.217302304037', 7); - T('-9.0', '-9', 1); - T('-26112007394118580909080488694986628.00000000', '-26112007394118580909080488694986628', 8); - T('-0.0000001', '-0.0000000000004', 7); - T('0.0000002341', '0.0000002341509570562590239', 10); - T('14533914.08264220677', '14533914.0826422067727128413377656933218789408', 11); - T('42170538403476604541324854403569069340562310909332579546.37600000000000000', '42170538403476604541324854403569069340562310909332579546.376', 17); - T('-4.0', '-4', 1); - T('-67678179481337765.66210000', '-67678179481337765.6621', 8); - T('257419830944838.0000000', '257419830944838', 7); - T('-324773537769898472911.277781339985241561477923', '-324773537769898472911.2777813399852415614779220499583265', 24); - T('-528485032702878171887338835619232399832.00000000000', '-528485032702878171887338835619232399832', 11); - T('-710189041499049633659311234.000', '-710189041499049633659311234', 3); - T('643084101102033.063753808679', '643084101102033.0637538086790219378107', 12); - T('825884431.000', '825884431', 3); - T('-543871854882673630364514781674939771106.38551140781759', '-543871854882673630364514781674939771106.385511407817581261', 14); - T('-798526.00', '-798526', 2); - T('297795786834144418744.0000', '297795786834144418744', 4); - T('0.00000', '0.0000000000016163586667107', 5); - T('0.0000000000', '0.00000000000007848361792826553641', 10); - T('-5.007308350876984680', '-5.007308350876984679530067590680338870257350613322626', 18); - T('-427.00', '-427', 2); - T('-515119.313431282058', '-515119.31343128205773478896638', 12); - T('-8.49', '-8.4804', 2); - T('2477.751471782877', '2477.751471782877726695914405313733773564569949039123496962', 12); - T('0.00000000', '0.000000000000000065892', 8); - T('7138.0', '7138.013', 1); - T('0.0000000000', '0.0000000000000004333337165355354317801382736832134', 10); - T('8658428891542726719576602828199407563445702034.00000000', '8658428891542726719576602828199407563445702034', 8); - T('0.3', '0.3', 1); - T('-56313246520419173728621429021902681217573545.50000000000000', '-56313246520419173728621429021902681217573545.5', 14); - T('-23.039752413764', '-23.03975241376398747770561587976', 12); - T('-19445726051618345902355920469.00000', '-19445726051618345902355920469', 5); - T('-0.1', '-0.040277481632393097542018589044285854989493888417936', 1); - T('-0.000000000001', '-0.000000000000000000288835285344547651291408208502608124', 12); - T('79030772762.92000', '79030772762.92', 5); - T('5700622112017639331911483394352164374087.00000000000000000', '5700622112017639331911483394352164374087', 17); - T('-90770899291595539313072309812380381240470505.000000000000', '-90770899291595539313072309812380381240470505', 12); - T('-41647595.5561', '-41647595.55603', 4); - T('222575273379018396575101654735581517852852286433973.4686000000000000', '222575273379018396575101654735581517852852286433973.4686', 16); - T('56275673822913529965328835.15006015303', '56275673822913529965328835.150060153034', 11); - T('-88903.69011778', '-88903.690117778621375708068659403797174645788', 8); - T('-115251.00', '-115251', 2); - T('-0.00001', '-0.0000079321934570619592061', 5); - T('9222185695996633788650562039735238902841130971959266.000000', '9222185695996633788650562039735238902841130971959266', 6); - T('-327381709334.18527398150845', '-327381709334.185273981508440153589241628279291', 14); - T('1.2070939', '1.207093941595', 7); - T('5631244336598787152545539244.614', '5631244336598787152545539244.614953046957418773850871532', 3); - T('7.585318', '7.58531893327', 6); - T('509177.0', '509177', 1); - T('-5922122769788.000000', '-5922122769788', 6); - T('204517097255774161136650103483266240865357614.000000000000', '204517097255774161136650103483266240865357614', 12); - T('-0.008817568208764', '-0.00881756820876361559226942398227', 15); - T('80111694.00', '80111694', 2); - T('-453349.000', '-453349', 3); - T('85122981744559018.00000000', '85122981744559018', 8); - T('0.027007', '0.027007420598954545854969297272268125483242465539', 6); - T('-2699105308.4', '-2699105308.3051738674733271523825325743', 1); - T('-0.000000000001', '-0.00000000000000883409579454508262166084385', 12); - - BigNumber.config({ROUNDING_MODE : 4, EXPONENTIAL_AT : 0}); - - T('733744593401073823825766410831877679446.0000000000000000000', '733744593401073823825766410831877679446', 19); - T('-64.6849459', '-64.6849458687691227978', 7); - T('-0.000000', '-0.00000000009', 6); - T('-62537287527837589298857228059657673223234916.95923265430000000', '-62537287527837589298857228059657673223234916.9592326543', 17); - T('3393668096256773847245721315080265089731.000000', '3393668096256773847245721315080265089731', 6); - T('0.0', '0.0000000000000056674956638008432348702401392', 1); - T('72516372734.6', '72516372734.6447', 1); - T('-418.28', '-418.2800731793741351', 2); - T('0.00', '0.001', 2); - T('8366217346845756726.00000000', '8366217346845756726', 8); - T('-0.000000', '-0.0000000000000092034548636370987112234384736726', 6); - T('0.35', '0.35474830751442135112334772517193392', 2); - T('64703289793894.5830', '64703289793894.58296866', 4); - T('-0.000000000000000036', '-0.000000000000000036461242408590182363418943891', 18); - T('5494508405056449117588.631948', '5494508405056449117588.631948458033233759999', 6); - T('-0.0', '-0.00393971618499838726739122333520030506235698', 1); - T('375581290738585826632.00000000', '375581290738585826632', 8); - T('254.96635275802300887', '254.96635275802300886544776010389418575738792480979736', 17); - T('21492347.69467571391498624445', '21492347.6946757139149862444482880595559468', 20); - T('313576441324233.0000000', '313576441324233', 7); - T('-8617.57089319166', '-8617.57089319166205141433276411273552139017', 11); - T('0.00000000014928376395', '0.00000000014928376394768755724252424022348932365406839448223', 20); - T('2.497624215622999568569', '2.49762421562299956856937732557160934323114203547832675', 21); - T('-288056106511636272271570523193926801058294502.000', '-288056106511636272271570523193926801058294502', 3); - T('-4798171567575228724.140', '-4798171567575228724.1400144613946894', 3); - T('8.49008', '8.49007655210654', 5); - T('-56633605.000', '-56633605', 3); - T('-4147381274685866.81753', '-4147381274685866.8175313', 5); - T('-534460490015293367127173277346694900936058.0000', '-534460490015293367127173277346694900936058', 4); - T('182707431911537249021116759327712693311898345504618668.43327000000000000000000', '182707431911537249021116759327712693311898345504618668.43327', 23); - T('210005324615278.4586839690045963321032', '210005324615278.458683969004596332103244549279', 22); - T('779837001772884165637922377221951347134695.644834', '779837001772884165637922377221951347134695.6448338', 6); - T('-0.000001', '-0.00000064188301390033596845335767993853284632527964514979079', 6); - T('13.0', '13', 1); - T('0.0000001269', '0.0000001269060795648365813491128357427111184222', 10); - T('18446632248354.00', '18446632248354', 2); - T('-1229249.79', '-1229249.7897249259', 2); - T('49082.0', '49082', 1); - T('-61.0', '-61', 1); - T('-893.0', '-893', 1); - T('5002282278.56974877690066484', '5002282278.569748776900664839184116538222902', 17); - T('41372.00', '41372', 2); - T('-4732022445962399687294885123498809.7625585825095', '-4732022445962399687294885123498809.7625585825095', 13); - T('-55484242.036895641', '-55484242.036895641', 9); - T('-41427133134.52583323427907663268339', '-41427133134.525833234279076632683393992706825', 23); - T('0.0', '0.00004300614085218825243480119971669264977421', 1); - T('-472025754597316278339412186866.7010659789', '-472025754597316278339412186866.701065978877597089729906019843', 10); - T('2.50869', '2.50869082352024406', 5); - T('-87154.000', '-87154', 3); - T('-0.0000000000071859183950976', '-0.0000000000071859183950975905578927950225183102336392', 25); - T('-10827138340266.44', '-10827138340266.44057558913', 2); - T('0.0000702', '0.0000701871613973530533582225769977', 7); - T('-4878237667448133503521416059497.376626000000', '-4878237667448133503521416059497.376626', 12); - T('8984687671347686046766702.01181862480', '8984687671347686046766702.0118186248', 11); - T('0.00000', '0.00000000076447711430809658905538', 5); - T('-184825.87743766370213607', '-184825.87743766370213606656669525883145102', 17); - T('-147007021210433212254058959161555.747000000000', '-147007021210433212254058959161555.747', 12); - T('641778680063060681850989295.4', '641778680063060681850989295.44394602812788754296411563', 1); - T('0.00', '0.000000000000000261099857', 2); - T('-69168585539.981086198312', '-69168585539.9810861983124008597329', 12); - T('-2441638.37765', '-2441638.37765405543', 5); - T('0.00', '0.00000005', 2); - T('-17865480328519059654833853633.668588983', '-17865480328519059654833853633.6685889825124607147114', 9); - T('5552449880075592383242782.42', '5552449880075592383242782.42273775283', 2); - T('-3.47445833771303714', '-3.4744583377130371421642122331960174443', 17); - T('-5543608156416096833838191852961329666675.00000000000000', '-5543608156416096833838191852961329666675', 14); - T('-6836042.000', '-6836042', 3); - T('0.00000912', '0.0000091177854552839774258855562071866', 8); - T('55986.00', '55986', 2); - T('0.0', '0.02', 1); - T('-0.0000', '-0.00000001', 4); - T('889659799897707059043156.0', '889659799897707059043156', 1); - T('0.000000', '0.00000000000000003', 6); - T('0.00000000000008179581450', '0.00000000000008179581449515246320423213581212698189913041', 23); - T('-981.4210', '-981.421', 4); - T('-3455913777070673553360330519337.00000000000000', '-3455913777070673553360330519337', 14); - T('0.00000000081700', '0.00000000081700228716634187537384600725', 14); - T('4822037.000', '4822037', 3); - T('-0.0000000064360437778', '-0.0000000064360437777672775206464043731', 19); - T('5290480.66496927901282867', '5290480.66496927901282867027658062129', 17); - T('-408612952552043095.000', '-408612952552043095', 3); - T('-513.0', '-513', 1); - T('-14964.000', '-14964', 3); - T('-19903753117563849440806175537514112075543387952.00000', '-19903753117563849440806175537514112075543387952', 5); - T('249443.0175143', '249443.0175142727704683419749', 7); - T('-74343756463586673907431837633.24', '-74343756463586673907431837633.23687651', 2); - T('-27.679', '-27.6785', 3); - T('-64259172643579684888737979.618833554815821332098', '-64259172643579684888737979.618833554815821332097716331', 21); - T('17230955766539391.00000000', '17230955766539391', 8); - T('582751886981240.177', '582751886981240.177383845390864465', 3); - T('191002031658424.51', '191002031658424.51247456500221220552332700327795408', 2); - T('-479015175846069070145.000000000', '-479015175846069070145', 9); - T('135507.00', '135507', 2); - T('-1819380757840.7931545894175', '-1819380757840.79315458941752033110677996441946221', 13); - T('56729395152942371.34113220', '56729395152942371.3411322', 8); - T('0.00000', '0.000000009', 5); - T('231631.31091406798', '231631.310914067979514934639396351953448', 11); - T('0.00', '0.00044659', 2); - T('-637697600918508531049573689760309.5119477000000000', '-637697600918508531049573689760309.5119477', 16); - T('-6.19247283', '-6.19247282501186063445037314', 8); - - BigNumber.config({ROUNDING_MODE : 5}); - - T('0.00', '0.00000000000000070362', 2); - T('682377946933004839.0000000', '682377946933004839', 7); - T('0.000000000', '0.00000000000000301722508588270616971784651380892069087869575', 9); - T('-356330174906.7', '-356330174906.737986270704', 1); - T('771875969530483104163034745359742192923504.000000000000000', '771875969530483104163034745359742192923504', 15); - T('-85.57612133364', '-85.576121333642541652128540737082', 11); - T('-796870619982006783.00000000', '-796870619982006783', 8); - T('985819.0', '985819', 1); - T('0.000000', '0.00000000000000000007093034243958', 6); - T('-0.0000', '-0.0000000006400178083107075310177579449', 4); - T('-105570971372984.0', '-105570971372984', 1); - T('4387745564661852845308.94229815083918', '4387745564661852845308.9422981508391799473309882', 14); - T('-3978043797116373.2', '-3978043797116373.159631', 1); - T('5.8961281424853232622595', '5.8961281424853232622594846548715356650909645537495738043051', 22); - T('-0.0000081539970551874384495', '-0.000008153997055187438449482684680130340977472796176926', 25); - T('-65.0', '-65', 1); - T('-24012940205869.000', '-24012940205869', 3); - T('0.000000', '0.000000000000000066985234999507396', 6); - T('2935194283452.35738951157832206907124', '2935194283452.357389511578322069071242729133894', 23); - T('542060.7771', '542060.77713479586821060591807145320317', 4); - T('890815036528241639534803534813.592588608837168425865025', '890815036528241639534803534813.59258860883716842586502472472', 24); - T('685877749980391051.17', '685877749980391051.1715', 2); - T('47820177163147405231185068730213.894293', '47820177163147405231185068730213.89429254869826585947429821', 6); - T('1536364305.00', '1536364305', 2); - T('-85825125.5810188', '-85825125.5810188298', 7); - T('-4983288214158634188.4572989', '-4983288214158634188.4572988600705359104', 7); - T('0.0000000000', '0.0000000000000000017929073', 10); - T('-1684136337600384671.00000000', '-1684136337600384671', 8); - T('567733137127609543.000000', '567733137127609543', 6); - T('607675679770387.000', '607675679770387', 3); - T('43727409067319.0', '43727409067319', 1); - T('-77274559773372606.00', '-77274559773372606', 2); - T('-28855643486070486857836.00000', '-28855643486070486857836', 5); - T('-915356570870.00', '-915356570870.00041832252262829437239', 2); - T('0.0', '0.00000000000004843552301428650828', 1); - T('-33295218517967296146307127.00000', '-33295218517967296146307127', 5); - T('279738383433666359352.0000000', '279738383433666359352', 7); - T('-30674028853766084158066396602.97', '-30674028853766084158066396602.97484778446', 2); - T('-0.323', '-0.32275988418995752362737918723', 3); - T('6129049976563004.000', '6129049976563004', 3); - T('-6.0', '-6', 1); - T('-66243945975700325606152500782471023774538548318.0000000000000000000000', '-66243945975700325606152500782471023774538548318', 22); - T('-138286369547644243875.0000000', '-138286369547644243875', 7); - T('5099535.00', '5099535', 2); - T('675.0', '675', 1); - T('0.0002717', '0.0002716602757', 7); - T('4649780225385110311483722.0000', '4649780225385110311483722', 4); - T('-22143045418555913412107884765016867198665971.10000000000000000000000', '-22143045418555913412107884765016867198665971.1', 23); - T('-71055639496050521326328010675.00000000', '-71055639496050521326328010675', 8); - T('0.00000000', '0.000000000077562570903960521', 8); - T('-0.000000021017500', '-0.000000021017500243085615932617', 15); - T('0.000000000000000024697', '0.00000000000000002469732084636233381651368431', 21); - T('760509941556107507425043304787283113918044183872.000000000000000000000000', '760509941556107507425043304787283113918044183872', 24); - T('-553489807182304143570302092614431846999972192129146.0608020000000000', '-553489807182304143570302092614431846999972192129146.060802', 16); - T('4616442457861540834390983504493684542810.99300000000', '4616442457861540834390983504493684542810.993', 11); - T('5836715007847225.0000', '5836715007847225', 4); - T('1056180.997', '1056180.99676966515555844225990248546', 3); - - BigNumber.config({ROUNDING_MODE : 6}); - - T('-6614662975368684488885953285955838893900074215956.00', '-6614662975368684488885953285955838893900074215956', 2); - T('8642393776898.000', '8642393776898', 3); - T('3612207878528.1106344698085142865', '3612207878528.1106344698085142865438924419', 19); - T('977910386.93', '977910386.9343537', 2); - T('-8937937492688941768401276851642629965923372.0', '-8937937492688941768401276851642629965923372', 1); - T('-8327876772303865517454752161.4376112752921904774', '-8327876772303865517454752161.43761127529219047742910886', 19); - T('-27707.00', '-27707', 2); - T('-7287595765894242586375.92700435484', '-7287595765894242586375.927004354837723619581861634319', 11); - T('-0.00000', '-0.000000000000023670858459165486137218740358207859', 5); - T('574676836802209077.64156', '574676836802209077.641563875647945277493356873895', 5); - T('-3041038455237222898218053653661.87952947815', '-3041038455237222898218053653661.87952947815', 11); - T('-628244132307.000', '-628244132307', 3); - T('316566935167341670725238.000', '316566935167341670725238', 3); - T('-77953301569468294124105528.0', '-77953301569468294124105528', 1); - T('0.0046', '0.00460227833968584', 4); - T('4323265763616518980379929221104.0', '4323265763616518980379929221104', 1); - T('1674500565014237781637959673471730398.1120033', '1674500565014237781637959673471730398.1120032995511774', 7); - T('872559441430499650732600166.00000', '872559441430499650732600166', 5); - T('-87858304.0000', '-87858304', 4); - T('-4158788.000', '-4158788', 3); - T('3983930437416823631395.9093', '3983930437416823631395.90934402583657', 4); - T('-14.5531937', '-14.5531936852106573016020290135814233645752955297443336', 7); - T('0.00000000002201', '0.00000000002200503795474854372849141363413146996972', 14); - T('0.0000000000000', '0.00000000000000000894955653982033503846831364474746320232', 13); - T('61564779.00', '61564779', 2); - T('-7.0', '-7', 1); - T('-0.000000000000028455976228', '-0.00000000000002845597622815028653703372125435938812845106', 24); - T('728982423193598397582409707715766595902844.0000000', '728982423193598397582409707715766595902844', 7); - T('14538075860529.2697937480', '14538075860529.269793748', 10); - T('0.000', '0.00000000000000000007021566096', 3); - T('-5136066535080.86830591678842264063462546263', '-5136066535080.86830591678842264063462546262988980471309228558', 29); - T('-3026751112367460839746524832112404665.000000000000000', '-3026751112367460839746524832112404665', 15); - T('-6694275398250090562.00', '-6694275398250090562', 2); - T('-50643997750937725516578696636829589244661366402743.000000000', '-50643997750937725516578696636829589244661366402743', 9); - T('2197374413.79714', '2197374413.7971355344377249354470626290268959873', 5); - T('0.0', '0.005020192658713355', 1); - T('-254956356194995318790657817617390203938.180000000', '-254956356194995318790657817617390203938.18', 9); - T('0.000', '0.000000000090726', 3); - T('-644164371869124953225087.14694842524000', '-644164371869124953225087.14694842524', 14); - T('-0.00000157175189018', '-0.0000015717518901763532026126676445445', 17); - T('883545726717772254369.08868386', '883545726717772254369.0886838593581297250598', 8); - T('-8890332541208932844712909996569216422867971798.000000000000000', '-8890332541208932844712909996569216422867971798', 15); - T('-0.000000000000', '-0.000000000000000019481454049470983547912235', 12); - T('740944636504591431790473918513.0000', '740944636504591431790473918513', 4); - T('-5679793084762496855854965276883350654245022549131067599715.800000', '-5679793084762496855854965276883350654245022549131067599715.8', 6); - T('51991398836962962151.4032644162159', '51991398836962962151.4032644162159099221', 13); - T('66958838053011544557752193.00000', '66958838053011544557752193', 5); - T('-670579843.2118208913941229137016', '-670579843.21182089139412291370155773837719883548843299002', 22); - T('-153613650899356538114572207.94248678450152160836', '-153613650899356538114572207.9424867845015216083607156497', 20); - T('-737846251706379871052.2861168', '-737846251706379871052.2861168267591416289887782899835', 7); - T('-65908055.0', '-65908055', 1); - T('3237039120306392313.80906374769', '3237039120306392313.80906374769434099092272015749692609', 11); - T('83640693821.00', '83640693821', 2); - T('-921776606869800052510163986912.6037663480501', '-921776606869800052510163986912.603766348050146856757561176111', 13); - T('6303883932563373.0', '6303883932563373', 1); - T('6373283811.5454531478622699', '6373283811.5454531478622698611321575271', 16); - T('6097017834070937658.000000000', '6097017834070937658', 9); - T('24524.17471335606758880', '24524.1747133560675887965670636565353165', 17); - T('82671976754257522256837287487178420454352.00000', '82671976754257522256837287487178420454352', 5); - T('-4134121508878287.32516638661', '-4134121508878287.32516638661094488', 11); - T('706494960751225536339363333.135485602348', '706494960751225536339363333.13548560234793', 12); - T('0.0000000', '0.00000000000000000005260494554647051', 7); - T('-2172823046.605754378126140867773679', '-2172823046.60575437812614086777367899344184998336', 24); - T('7182216670065915047.3', '7182216670065915047.265', 1); - T('-0.0001', '-0.00011347856', 4); - T('-1620.4750509689199484099', '-1620.475050968919948409915128915793493745056891952647', 19); - T('-2107001274569567393.00000000', '-2107001274569567393', 8); - T('0.00', '0.0000000004', 2); - T('-0.000', '-0.00000000000000000009622600511499459674774308', 3); - T('-1749656594942211427.14080828808148814976439530', '-1749656594942211427.1408082880814881497643953004161', 26); - T('-2483383057229762.00000000', '-2483383057229762', 8); - T('0.000000', '0.0000005', 6); - T('0.5', '0.5', u); - - T('-0', '-0.5', 0); - - T('10.5', '10.5', u); - T('0.05', '0.05', u); - T('0.4', '0.4', u); - T('0.6', '0.6', u); - T('1.5', '1.5', u); - T('-1.5', '-1.5', u); - - BigNumber.config({ROUNDING_MODE : 4}); - - T('-535564000.00', '-535564000', 2); - T('-80000000.000', '-80000000', 3); - T('-240.0', '-240', 1); - T('-7520000000.0', '-7520000000', 1); - T('306550.000', '306550', 3); - T('800000000.0', '800000000', 1); - T('-454000000.00000', '-454000000', 5); - T('60.0', '60', 1); - T('-4700000.000', '-4700000', 3); - T('25000.00', '25000', 2); - T('6847.0', '6847', 1); - T('780.0', '780', 1); - T('-50.0', '-50', 1); - T('700.0', '700', 1); - T('412598000.0000', '412598000', 4); - T('-84581600.0', '-84581600', 1); - T('5590000.00', '5590000', 2); - T('-66000.0', '-66000', 1); - T('600.0', '600', 1); - T('-513335000.000', '-513335000', 3); - T('-40.0', '-40', 1); - T('3401.00', '3401', 2); - T('8600.00', '8600', 2); - T('-5410000.0', '-5410000', 1); - T('5527170.0', '5527170', 1); - T('-3710700.0', '-3710700', 1); - T('-13230000.0', '-13230000', 1); - - T('-52536202527.13891931933498708496518913773517016037224', '-5.253620252713891931933498708496518913773517016037224E10', u); - T('0.0000000000000008761383898703999300297605784533730922', '8.761383898703999300297605784533730922E-16', u); - T('-0.0000000000000000000000000000000000004', '-4E-37', u); - T('2832044194940.47654015529986948208', '2.83204419494047654015529986948208E12', u); - T('0.00000000000000000000000064668155275864837', '6.4668155275864837E-25', u); - T('4.34128088694', '4.34128088694E0', u); - T('-851957.6572615611436542', '-8.519576572615611436542E5', u); - T('-89097468286.2561077879598798580253771544265682053', '-8.90974682862561077879598798580253771544265682053E10', u); - T('-0.000000000000000000000000000000000000000000000030409767', '-3.0409767E-47', u); - T('0.000000000000000000004295112484112357722747956581254', '4.295112484112357722747956581254E-21', u); - T('-839203207475651.6542808578', '-8.392032074756516542808578E14', u); - T('-0.00000000000000000078216', '-7.8216E-19', u); - T('-1782290274935701247734.21262413032385', '-1.78229027493570124773421262413032385E21', u); - T('31669451104144801337076433457.18511076', '3.166945110414480133707643345718511076E28', u); - T('0.000000000000000000000000000000000000472351852761', '4.72351852761E-37', u); - T('-50155220217523568901083623.78842580174913602672593731', '-5.015522021752356890108362378842580174913602672593731E25', u); - T('-291.37', '-2.9137E2', u); - T('-52474611936456205886027195352961212383.2279441143', '-5.24746119364562058860271953529612123832279441143E37', u); - T('-326.9376463292543', '-3.269376463292543E2', u); - T('0.00000000000044', '4.4E-13', u); - T('0.000000087792449', '8.7792449E-8', u); - T('497835793870987132484033.938845920610565887398960253648', '4.97835793870987132484033938845920610565887398960253648E23', u); - T('-33960439442302770058.74863962', '-3.396043944230277005874863962E19', u); - T('0.00000000000000000000000000000000000000020694696587293782', '2.0694696587293782E-40', u); - T('-0.8904319539', '-8.904319539E-1', u); - T('-86429552798.4', '-8.64295527984E10', u); - T('0.000000000000000000000000000003', '3E-30', u); - T('108595082003321932.8178949736608320767', '1.085950820033219328178949736608320767E17', u); - T('611126.73674534242367484008848341500334', '6.1112673674534242367484008848341500334E5', u); - T('4311.0597590893026685282662406924', '4.3110597590893026685282662406924E3', u); - T('0.000000000000000000000000000000000000000073309221', '7.3309221E-41', u); - T('-6864844854510.144926572184', '-6.864844854510144926572184E12', u); - T('-0.038', '-3.8E-2', u); - T('0.00000000000000794946369399591', '7.94946369399591E-15', u); - T('56020.6861005', '5.60206861005E4', u); - T('-0.00000000000896738912765063552834206018847', '-8.96738912765063552834206018847E-12', u); - T('0.00000000006755925523685348357189087468', '6.755925523685348357189087468E-11', u); - T('0.000000000000000000000000000000000072', '7.2E-35', u); - T('0.00000000000000000000000000000000000000000000000000006128', '6.128E-53', u); - T('-27010668344373144545282.061712584328482438690936897', '-2.7010668344373144545282061712584328482438690936897E22', u); - T('-0.000066720042169954586184178645', '-6.6720042169954586184178645E-5', u); - T('-0.00000000000000000000000000000000000003516', '-3.516E-38', u); - T('0.007458', '7.458E-3', u); - T('0.0670339647456587432138292225', '6.70339647456587432138292225E-2', u); - T('-49.59', '-4.959E1', u); - T('5.94', '5.94E0', u); - T('9185110977234279483303912931774514.67', '9.18511097723427948330391293177451467E33', u); - T('-127.11408592808048991219551891022999276273412536879573107525', '-1.2711408592808048991219551891022999276273412536879573107525E2', u); - T('0.00000013', '1.3E-7', u); - T('-0.00000000000000000000000000000000156', '-1.56E-33', u); - T('22', '2.2E1', u); - T('6644378197598065.943168375926', '6.644378197598065943168375926E15', u); - T('-0.00000000000000465403429687260725429254606083299909', '-4.65403429687260725429254606083299909E-15', u); - T('0.00000653586429286761580785105', '6.53586429286761580785105E-6', u); - T('-779132060.497697052423647343175672388834', '-7.79132060497697052423647343175672388834E8', u); - T('0.0000000000000000085996828590423169591835759758087548466494', '8.5996828590423169591835759758087548466494E-18', u); - T('-0.000000000000256285784', '-2.56285784E-13', u); - T('0.0000000000000017947', '1.7947E-15', u); - T('0.000000000060671249811126224597672813512109', '6.0671249811126224597672813512109E-11', u); - T('-800627106331596202.032250866963247864855868', '-8.00627106331596202032250866963247864855868E17', u); - T('-98402249.9358755191632299360339880127190049662097654206', '-9.84022499358755191632299360339880127190049662097654206E7', u); - T('-0.000000000000000000000014149882794818263963', '-1.4149882794818263963E-23', u); - T('-7060324311175919534626797409919718746390.10555', '-7.06032431117591953462679740991971874639010555E39', u); - T('821393911651350506858922608971571483.39201', '8.2139391165135050685892260897157148339201E35', u); - T('-721517626817.43734235970422357278172', '-7.2151762681743734235970422357278172E11', u); - T('-5124.504476910146380807047771', '-5.124504476910146380807047771E3', u); - T('0.0000000005697544867401308959870722352682904', '5.697544867401308959870722352682904E-10', u); - T('-0.00012871208613777', '-1.2871208613777E-4', u); - T('8567233928771894245.8242651905951092028701228506224699', '8.5672339287718942458242651905951092028701228506224699E18', u); - T('-0.0000000094881461545668728', '-9.4881461545668728E-9', u); - T('6045245.020177069527457656633132622', '6.045245020177069527457656633132622E6', u); - T('-7210271571379007035869444.1417241308887367042323559687840525', '-7.2102715713790070358694441417241308887367042323559687840525E24', u); - T('-2620220239077.66', '-2.62022023907766E12', u); - T('-0.001916564704980402478', '-1.916564704980402478E-3', u); - T('5371.947750065160966666612070818997', '5.371947750065160966666612070818997E3', u); - T('0.00000077036439397954895237124076', '7.7036439397954895237124076E-7', u); - T('-0.000000000002280137669447351084609656999367909206747800792', '-2.280137669447351084609656999367909206747800792E-12', u); - T('635945056777163867933996244.44612913038', '6.3594505677716386793399624444612913038E26', u); - T('5', '5E0', u); - T('48309.56', '4.830956E4', u); - T('2138.45865823930129961216391905305999251296833471869532168', '2.13845865823930129961216391905305999251296833471869532168E3', u); - T('3706073870.96925990345144', '3.70607387096925990345144E9', u); - T('-798.62', '-7.9862E2', u); - T('-521968106907526.65373750732297', '-5.2196810690752665373750732297E14', u); - T('0.7224996555', '7.224996555E-1', u); - T('-0.00000000000059452644215310796452483703709', '-5.9452644215310796452483703709E-13', u); - T('350818063006798017016671125.0434068891113', '3.508180630067980170166711250434068891113E26', u); - T('7968708424180299716816047189442601.3735762244', '7.9687084241802997168160471894426013735762244E33', u); - T('-0.5355520816318664361284739093852209293628562271329701', '-5.355520816318664361284739093852209293628562271329701E-1', u); - T('-906.9275233025623299867798', '-9.069275233025623299867798E2', u); - T('0.00045587', '4.5587E-4', u); - T('0.000004', '4E-6', u); - T('5857276704537340524.1431417907437', '5.8572767045373405241431417907437E18', u); - T('-3843554476637626791.87474208180361', '-3.84355447663762679187474208180361E18', u); - T('-60535943484683045495384222.313768035329647860053456457477', '-6.0535943484683045495384222313768035329647860053456457477E25', u); - T('0.0000000000000004444869762788836674404079577885262473', '4.444869762788836674404079577885262473E-16', u); - T('-0.005874931444844844350595746989373586841269114316', '-5.874931444844844350595746989373586841269114316E-3', u); - T('0.09', '9E-2', u); - T('86280010336.8017418950328178', '8.62800103368017418950328178E10', u); - T('227901.6305936588696902705189877626178015851261755', '2.279016305936588696902705189877626178015851261755E5', u); - T('-0.00002923', '-2.923E-5', u); - T('451.1251729802129507', '4.511251729802129507E2', u); - T('-2586077212890917651232310958.88201646914374247083', '-2.58607721289091765123231095888201646914374247083E27', u); - T('-0.08', '-8E-2', u); - T('7.996020827302694833122463304879649129610781362', '7.996020827302694833122463304879649129610781362E0', u); - T('-0.00000000000000000000000007933204829049175909186498799838', '-7.933204829049175909186498799838E-26', u); - T('-0.0000000000001882498592930501880542338117957263473489255', '-1.882498592930501880542338117957263473489255E-13', u); - T('-1172052648945437104144.7753679481957698417677', '-1.1720526489454371041447753679481957698417677E21', u); - T('287937985683292603.441526238031', '2.87937985683292603441526238031E17', u); - T('-0.0000000000134355091714731837192225455005', '-1.34355091714731837192225455005E-11', u); - T('0.000000000000000000000000000026170541344981279884209612', '2.6170541344981279884209612E-29', u); - T('0.0041336403', '4.1336403E-3', u); - T('8955011.51436146124079765380599870608206410057', '8.95501151436146124079765380599870608206410057E6', u); - T('76343535604093', '7.6343535604093E13', u); - T('-579109804573982925.9', '-5.791098045739829259E17', u); - T('-16248730541202.41645330499728414237866592099124270393892244', '-1.624873054120241645330499728414237866592099124270393892244E13', u); - T('299078130777696473774921407.8921386301', '2.990781307776964737749214078921386301E26', u); - T('0.00000000000005008659860139108', '5.008659860139108E-14', u); - T('-277409247924.47', '-2.7740924792447E11', u); - T('-0.516', '-5.16E-1', u); - T('-0.0000000000000000000000056338952424532568447556', '-5.6338952424532568447556E-24', u); - T('-0.000000217955', '-2.17955E-7', u); - T('8905335075021645253458124.63415988932826552', '8.90533507502164525345812463415988932826552E24', u); - T('-0.0044', '-4.4E-3', u); - T('-0.2373963', '-2.373963E-1', u); - T('-0.79088027341157244765444311372339', '-7.9088027341157244765444311372339E-1', u); - T('0.0026', '2.6E-3', u); - T('-835918193339364260673226.934', '-8.35918193339364260673226934E23', u); - T('-0.0009', '-9E-4', u); - T('6', '6E0', u); - T('-314214420212243283843403549.4470864901529365489404218274', '-3.142144202122432838434035494470864901529365489404218274E26', u); - T('0.00000000791545594251', '7.91545594251E-9', u); - T('191942230233.90984962570015373025283255557', '1.9194223023390984962570015373025283255557E11', u); - T('-0.0000000000078881545375574067765343323', '-7.8881545375574067765343323E-12', u); - T('-16802261058.36705', '-1.680226105836705E10', u); - T('0.0000000000000056017241520290338574647512149076190238', '5.6017241520290338574647512149076190238E-15', u); - T('-0.00000000003763962', '-3.763962E-11', u); - T('-0.000000000511737717217408462541465239', '-5.11737717217408462541465239E-10', u); - T('-0.000000000000000000000000000000000000000050368224614', '-5.0368224614E-41', u); - T('-0.018634708832478724474964945976701', '-1.8634708832478724474964945976701E-2', u); - T('6', '6E0', u); - T('-0.0000000000000000000745072058021090744018544591692', '-7.45072058021090744018544591692E-20', u); - T('724257535284104810664.4073', '7.242575352841048106644073E20', u); - T('12769.45510988046008277708155820993631711046', '1.276945510988046008277708155820993631711046E4', u); - T('631804730657678655927.137998704033924856965', '6.31804730657678655927137998704033924856965E20', u); - T('0.00000000000000000000000000000000798840870767288241343529097', '7.98840870767288241343529097E-33', u); - T('1696465.807207', '1.696465807207E6', u); - T('0.00000000000000000000000000000079804991500258221476735155', '7.9804991500258221476735155E-31', u); - T('-0.000000000000000000000598137708', '-5.98137708E-22', u); - T('0.000000000000000000000000065555369684822', '6.5555369684822E-26', u); - T('-35599704691194312186568857.06582774697883475886191', '-3.559970469119431218656885706582774697883475886191E25', u); - T('-0.0000000000000794908227013', '-7.94908227013E-14', u); - T('-0.0000000499730429264884151845723427055364', '-4.99730429264884151845723427055364E-8', u); - T('0.00000000000000064', '6.4E-16', u); - T('-572705', '-5.72705E5', u); - T('-0.000000000559274332', '-5.59274332E-10', u); - T('2924074735520802294144158.124247615661785268262895466645', '2.924074735520802294144158124247615661785268262895466645E24', u); - T('0.00000000000000000000001792', '1.792E-23', u); - T('-839757046612045970742723218746.08104510687271206453', '-8.3975704661204597074272321874608104510687271206453E29', u); - T('607849.09099201775466906352465117043', '6.0784909099201775466906352465117043E5', u); - T('-4654202085161.7295919153', '-4.6542020851617295919153E12', u); - T('350765025122274578259836720029858792277.93', '3.5076502512227457825983672002985879227793E38', u); - T('-0.000000000000000000000000000000000000528363561265895', '-5.28363561265895E-37', u); - T('-7', '-7E0', u); - T('4.57', '4.57E0', u); - T('-1214468.83483364', '-1.21446883483364E6', u); - T('-1.75890665039235813638669857754779113', '-1.75890665039235813638669857754779113E0', u); - T('-0.0001520617551991821956064', '-1.520617551991821956064E-4', u); - T('0.000000000000000000000000000000000000000000316862530006', '3.16862530006E-43', u); - T('3', '3E0', u); - T('82', '8.2E1', u); - T('-0.0000000000000000000000000000000773334716331177010647839', '-7.73334716331177010647839E-32', u); - T('708885924.332539635179', '7.08885924332539635179E8', u); - T('-64497329.71357360701588', '-6.449732971357360701588E7', u); - T('-0.7187', '-7.187E-1', u); - T('0.00000000000000000000000000000000000038135349688', '3.8135349688E-37', u); - T('0.00000000000000000000000000000000182717532099214054', '1.82717532099214054E-33', u); - T('19869092956779031884883390565185379047759848968501117153.4', '1.98690929567790318848833905651853790477598489685011171534E55', u); - T('620913861673.81857852920469094171232255417901159', '6.2091386167381857852920469094171232255417901159E11', u); - T('235690494.2', '2.356904942E8', u); - T('1952.848789', '1.952848789E3', u); - T('0.0000000000000000000000593857592909', '5.93857592909E-23', u); - T('-0.00000000000000688558900049482997723', '-6.88558900049482997723E-15', u); - T('-0.00000000000000000000000000007338347173289341804737', '-7.338347173289341804737E-29', u); - T('0.000000000000000202545915248826284620971210675', '2.02545915248826284620971210675E-16', u); - T('-724.280380099716494328413118123', '-7.24280380099716494328413118123E2', u); - T('-0.000000000000018969640124102058547183921', '-1.8969640124102058547183921E-14', u); - T('429623.23189016762963579', '4.2962323189016762963579E5', u); - T('-4440068176059478189.38961985114362', '-4.44006817605947818938961985114362E18', u); - T('388081523018426906543780329974051543542101.8221256689223182', '3.880815230184269065437803299740515435421018221256689223182E41', u); - T('454795752022.4749683607481963197156049975854', '4.547957520224749683607481963197156049975854E11', u); - T('-5.97', '-5.97E0', u); - T('-0.0000000651', '-6.51E-8', u); - T('0.000307481649349842471', '3.07481649349842471E-4', u); - T('-0.06005081686761154653757227654183441415861126', '-6.005081686761154653757227654183441415861126E-2', u); - T('0.00000000000000000000063579065', '6.3579065E-22', u); - T('900814801036731395557.6', '9.008148010367313955576E20', u); - T('4999', '4.999E3', u); - T('-7.3827865388155464662280547066599644534268122420403', '-7.3827865388155464662280547066599644534268122420403E0', u); - T('-17278399836268786075488221.51', '-1.727839983626878607548822151E25', u); - T('-0.0660146', '-6.60146E-2', u); - T('-781591906217028941735734533.343797893312168609257042055753', '-7.81591906217028941735734533343797893312168609257042055753E26', u); - T('-6278408649', '-6.278408649E9', u); - T('-0.000000000001', '-1E-12', u); - T('0.0018', '1.8E-3', u); - T('-437548970.255395047611134138987663791895761194803418316513197', '-4.37548970255395047611134138987663791895761194803418316513197E8', u); - T('-147885337323804329368530390734663845475933.77830435', '-1.4788533732380432936853039073466384547593377830435E41', u); - T('-753868987492754718849345711047082845957.640888486201188367', '-7.53868987492754718849345711047082845957640888486201188367E38', u); - T('-340168909098957.1241', '-3.401689090989571241E14', u); - T('-0.000000000000000000000000000000000000000585436735853', '-5.85436735853E-40', u); - T('0.0000000000000000756425339599187041535729604907751951301172', '7.56425339599187041535729604907751951301172E-17', u); - T('4632870.933', '4.632870933E6', u); - T('-4563559260.01', '-4.56355926001E9', u); - T('-0.00000000000000000000000294407952905593673865', '-2.94407952905593673865E-24', u); - T('0.00000000039555331064814', '3.9555331064814E-10', u); - T('-0.0000000000000000000000000000000066', '-6.6E-33', u); - T('0.00000000000000000000000002796', '2.796E-26', u); - T('0.006420974922080335', '6.420974922080335E-3', u); - T('62.09', '6.209E1', u); - T('0.000000000000000000000000000000000000000092019', '9.2019E-41', u); - T('31705406794.02881', '3.170540679402881E10', u); - T('85.877', '8.5877E1', u); - T('6183.522312', '6.183522312E3', u); - T('4299.15237475410462987616810012961', '4.29915237475410462987616810012961E3', u); - T('21900171506665946787994.9913441726189153092', '2.19001715066659467879949913441726189153092E22', u); - T('64432017665108304653.37748', '6.443201766510830465337748E19', u); - T('-859958206403439.8555459676', '-8.599582064034398555459676E14', u); - T('332.8856507997622171514594697481203953250774320862536', '3.328856507997622171514594697481203953250774320862536E2', u); - T('-0.0000000000000000000000000000007425', '-7.425E-31', u); - T('8.72361', '8.72361E0', u); - T('-0.0000000000000000000000000000000000000000000000025453', '-2.5453E-48', u); - T('129360586484988816847066041509256285.9834653851528560934', '1.293605864849888168470660415092562859834653851528560934E35', u); - T('-0.000000000000007222', '-7.222E-15', u); - T('-8098841403716381679540887.942710395311867043476849928102', '-8.098841403716381679540887942710395311867043476849928102E24', u); - T('-596359917165924096.74516895354130304259526279190192', '-5.9635991716592409674516895354130304259526279190192E17', u); - T('383728239984415462011.156111377322400391221501061013146359', '3.83728239984415462011156111377322400391221501061013146359E20', u); - T('-0.0000089', '-8.9E-6', u); - T('-0.000000000000000000000000008687857', '-8.687857E-27', u); - T('0.0000361135882323181', '3.61135882323181E-5', u); - T('-790530028343151500857311598079293.168169782009497538', '-7.90530028343151500857311598079293168169782009497538E32', u); - T('120280775320592531520673579931715496.413898', '1.20280775320592531520673579931715496413898E35', u); - T('-0.00000000000000330496', '-3.30496E-15', u); - T('0.00000000000000000000000000000000000000000009', '9E-44', u); - T('0.493800687846', '4.93800687846E-1', u); - T('0.00000000000000000000000000000000000000000000428917279063', '4.28917279063E-45', u); - T('2439161986343305.3977219293086130659', '2.4391619863433053977219293086130659E15', u); - T('0.00000000000000000000000000000001236416', '1.236416E-32', u); - T('-0.00000074534400936482826343789037997822705', '-7.4534400936482826343789037997822705E-7', u); - T('-21.1', '-2.11E1', u); - T('2572114652026268493653871881146558385361920.28081168806628264', '2.57211465202626849365387188114655838536192028081168806628264E42', u); - T('17124033483109159133818176268510442295426753249741457.875034', '1.7124033483109159133818176268510442295426753249741457875034E52', u); - T('-0.5129122224574351008', '-5.129122224574351008E-1', u); - T('-0.007927', '-7.927E-3', u); - T('-0.0000920899747', '-9.20899747E-5', u); - T('-0.004894338278755', '-4.894338278755E-3', u); - T('0.0000000000000000000061703', '6.1703E-21', u); - T('2326089407921647116369956641187720.969', '2.326089407921647116369956641187720969E33', u); - T('1166197836238509', '1.166197836238509E15', u); - T('3671781131154060908657.603137323342926541681254', '3.671781131154060908657603137323342926541681254E21', u); - T('0.0000000000000000000000000000000000000000000002260279', '2.260279E-46', u); - T('-0.00000000000000000000000000000000000000000000000000404', '-4.04E-51', u); - T('-652408413688213856070194.6216304473505375385271', '-6.524084136882138560701946216304473505375385271E23', u); - T('-6437.3786', '-6.4373786E3', u); - T('-0.00024', '-2.4E-4', u); - T('-0.000000000000000000000000000004', '-4E-30', u); - T('0.0000000000000009079496181315516965', '9.079496181315516965E-16', u); - T('-33759.06239', '-3.375906239E4', u); - T('-8249214.8143', '-8.2492148143E6', u); - T('76023.094878', '7.6023094878E4', u); - T('4750348149604126293082788358593492149985525371.3055161011554', '4.7503481496041262930827883585934921499855253713055161011554E45', u); - T('-347056242813575345437098678.19382', '-3.4705624281357534543709867819382E26', u); - T('-0.0044334994986839', '-4.4334994986839E-3', u); - T('-77579240.8814471085', '-7.75792408814471085E7', u); - T('0.00000000000005880190315', '5.880190315E-14', u); - T('5512594339298216692.2504515931248375537394173161332', '5.5125943392982166922504515931248375537394173161332E18', u); - T('897599613823052.78098021722556', '8.9759961382305278098021722556E14', u); - T('491849.74046716999671925', '4.9184974046716999671925E5', u); - T('0.00000000000000000000000000000026', '2.6E-31', u); - T('83831959917154625137362002.826519817779', '8.3831959917154625137362002826519817779E25', u); - T('0.0000000004824', '4.824E-10', u); - T('-0.0000000000000000000539954390007731983666483', '-5.39954390007731983666483E-20', u); - T('-5', '-5E0', u); - T('-0.0000000000000000000000000000000052105973', '-5.2105973E-33', u); - T('-51180818493453796222392326680632879', '-5.1180818493453796222392326680632879E34', u); - T('-0.0000000000000000000000000000000000240888314887894116', '-2.40888314887894116E-35', u); - T('-3.9884198', '-3.9884198E0', u); - T('-0.00292509420999319058434270507', '-2.92509420999319058434270507E-3', u); - T('-0.0471410502674988132847954859528693281', '-4.71410502674988132847954859528693281E-2', u); - T('-0.000383921003997213038329810979734179482203337059136937948', '-3.83921003997213038329810979734179482203337059136937948E-4', u); - T('868847355738186906225977.83933455357403132497074451153826473', '8.6884735573818690622597783933455357403132497074451153826473E23', u); - T('-74428485419.93786255558241', '-7.442848541993786255558241E10', u); - T('9.08353695983999662727523423580372295', '9.08353695983999662727523423580372295E0', u); - T('0.000000000000000000000000000000000000174340386756706026938', '1.74340386756706026938E-37', u); - T('0.00000000000000000000000003488223852390463813101', '3.488223852390463813101E-26', u); - T('6235893648937978707207460050453092026130252190198479.3', '6.2358936489379787072074600504530920261302521901984793E51', u); - T('288685778491241.9787664674', '2.886857784912419787664674E14', u); - T('0.000132721936833718', '1.32721936833718E-4', u); - T('-878.0561026970809281319399445768', '-8.780561026970809281319399445768E2', u); - T('0.00000000000000000000000000000164205860568335794182', '1.64205860568335794182E-30', u); - T('198.2447277', '1.982447277E2', u); - T('594893202379402597086528939812.686961108921', '5.94893202379402597086528939812686961108921E29', u); - T('815799379961431517563630941318305822656819.1819089536', '8.157993799614315175636309413183058226568191819089536E41', u); - T('7990092124827731099787724282235162054016305443.9448', '7.9900921248277310997877242822351620540163054439448E45', u); - T('663687681604087645522022865972.07146532571', '6.6368768160408764552202286597207146532571E29', u); - T('318669729285258750300170721357707298590338.45839229964442', '3.1866972928525875030017072135770729859033845839229964442E41', u); - T('-555699450886771049.424695515896915466268294356460403', '-5.55699450886771049424695515896915466268294356460403E17', u); - T('-0.00000000000000000000000000000000000000000001095071857', '-1.095071857E-44', u); - T('-9150620505556.07974725572726628538', '-9.15062050555607974725572726628538E12', u); - T('-0.00000000003194584', '-3.194584E-11', u); - T('-1913473.7214461866163373699149123', '-1.9134737214461866163373699149123E6', u); - T('226008983260172522.282738382841159863', '2.26008983260172522282738382841159863E17', u); - T('62674367141762718476.245255', '6.2674367141762718476245255E19', u); - T('-2', '-2E0', u); - T('-0.00000009178', '-9.178E-8', u); - T('0.00000000000000000629836181986423672328404795028', '6.29836181986423672328404795028E-18', u); - T('93586.02926647672', '9.358602926647672E4', u); - T('-0.0000000000000000000000005', '-5E-25', u); - T('-9207421318.2448691844836734269513121808514798', '-9.2074213182448691844836734269513121808514798E9', u); - T('-0.00000007307221392104978', '-7.307221392104978E-8', u); - T('-0.0000000000000066886943766783493967753683408289', '-6.6886943766783493967753683408289E-15', u); - T('-543304673129193.8', '-5.433046731291938E14', u); - T('-0.000000000000000136', '-1.36E-16', u); - T('-5548881134560.03611729206353518', '-5.54888113456003611729206353518E12', u); - T('12277666390.0592100569639588009142346505770647', '1.22776663900592100569639588009142346505770647E10', u); - T('-49886360742145249688090891445025578471363.463145336476', '-4.9886360742145249688090891445025578471363463145336476E40', u); - T('289734846955085106069130291953704075.5686911', '2.897348469550851060691302919537040755686911E35', u); - T('0.00000000046461', '4.6461E-10', u); - T('-62109960217702169495599.7856590374740584451730995867043611', '-6.21099602177021694955997856590374740584451730995867043611E22', u); - T('-0.00543899591266188574678', '-5.43899591266188574678E-3', u); - T('-0.000000000000655098180667', '-6.55098180667E-13', u); - T('16003803057504466354568876.721', '1.6003803057504466354568876721E25', u); - T('4.54663', '4.54663E0', u); - T('-0.0000090363058536', '-9.0363058536E-6', u); - T('0.00000000000000000000000000000000000000000000683169237734869', '6.83169237734869E-45', u); - T('-0.000007999285941677', '-7.999285941677E-6', u); - T('-0.0013289268682646', '-1.3289268682646E-3', u); - T('-676279445952.4758664434048894660778454544', '-6.762794459524758664434048894660778454544E11', u); - T('-0.00000000000009075526387', '-9.075526387E-14', u); - T('0.00000086974105048792231226652741684821263913885781939473', '8.6974105048792231226652741684821263913885781939473E-7', u); - T('0.000000066874978182439602812', '6.6874978182439602812E-8', u); - T('69460738505039771437626.5674', '6.94607385050397714376265674E22', u); - T('-496842225856320580039833.32412974875059', '-4.9684222585632058003983332412974875059E23', u); - T('-0.00000000089027363409225605342063967', '-8.9027363409225605342063967E-10', u); - T('0.000000000000000000000000000000000000000000013177025997876', '1.3177025997876E-44', u); - T('0.00000000000000000000000000000000000000000000000000767', '7.67E-51', u); - T('0.00000000000000000000051646585515', '5.1646585515E-22', u); - T('-77.0523658189', '-7.70523658189E1', u); - T('-2381011509343581230.1741806527782135341132', '-2.3810115093435812301741806527782135341132E18', u); - T('15355.8', '1.53558E4', u); - T('-6.99530180722252243035032591', '-6.99530180722252243035032591E0', u); - T('0.00000000000000000000000000000000000174189621024', '1.74189621024E-36', u); - T('-0.30429214832427054994311306579079362506404', '-3.0429214832427054994311306579079362506404E-1', u); - T('0.0000053681637', '5.3681637E-6', u); - T('-0.0000000000000000000580794214565094', '-5.80794214565094E-20', u); - T('0.00000000000000000000000000000000000000718', '7.18E-39', u); - T('0.00308106507', '3.08106507E-3', u); - T('-778826601182.03', '-7.7882660118203E11', u); - T('0.07', '7E-2', u); - T('-18429554314600.2502715009477102928634264509718651532399233353', '-1.84295543146002502715009477102928634264509718651532399233353E13', u); - T('1', '1E0', u); - T('-0.007671287604999', '-7.671287604999E-3', u); - T('7887909.816542736', '7.887909816542736E6', u); - T('749', '7.49E2', u); - T('0.00000000000000000000000000000000000000000000000000000000701', '7.01E-57', u); - T('19.83', '1.983E1', u); - T('6.09402754', '6.09402754E0', u); - T('424650217237.5591', '4.246502172375591E11', u); - T('-0.000049564535268301', '-4.9564535268301E-5', u); - T('-7149629423.847728553', '-7.149629423847728553E9', u); - T('886867.3497161434434805387149126261591812', '8.868673497161434434805387149126261591812E5', u); - T('5.26322950282017332236528', '5.26322950282017332236528E0', u); - T('-814.59758571746371817362831870047066741472348685917', '-8.1459758571746371817362831870047066741472348685917E2', u); - T('-0.3417309109605504', '-3.417309109605504E-1', u); - T('0.000000057039362368628403676633', '5.7039362368628403676633E-8', u); - T('-71880.393174366874491172325', '-7.1880393174366874491172325E4', u); - T('0.000000000000000000000000000000022058', '2.2058E-32', u); - T('-2.4', '-2.4E0', u); - T('228988936752996967.25464233211', '2.2898893675299696725464233211E17', u); - T('-5080707117552421.40044791548207099220514344', '-5.08070711755242140044791548207099220514344E15', u); - T('-0.00000000000000000000000000000000016', '-1.6E-34', u); - T('-0.00003625156420604915204366585038046', '-3.625156420604915204366585038046E-5', u); - T('464637966596604669241542203619416.3216624756173', '4.646379665966046692415422036194163216624756173E32', u); - T('0.9087655476734088654458558078829027886267006357', '9.087655476734088654458558078829027886267006357E-1', u); - T('38664124727384955142.767044860367795251877128009517', '3.8664124727384955142767044860367795251877128009517E19', u); - T('-0.04762788797', '-4.762788797E-2', u); - T('-0.00000005574134895606662617', '-5.574134895606662617E-8', u); - T('-0.0003', '-3E-4', u); - T('4722723.88281334997860228789', '4.72272388281334997860228789E6', u); - T('-23995836727515866107660.4330429236850044610474', '-2.39958367275158661076604330429236850044610474E22', u); - T('0.0000045734704681293061832577', '4.5734704681293061832577E-6', u); - T('-0.0000000000000000000000000000000182740798445987382441', '-1.82740798445987382441E-32', u); - T('255100617558.86883972286820342761', '2.5510061755886883972286820342761E11', u); - T('0.064171494091240642357663125', '6.4171494091240642357663125E-2', u); - T('0.000000000000000000000000000000000000000000000294', '2.94E-46', u); - T('-281546266519431813455047.7', '-2.815462665194318134550477E23', u); - T('-570257381822964838010877265', '-5.70257381822964838010877265E26', u); - T('0.00000505461928', '5.05461928E-6', u); - T('-0.0000000000000079383014842488', '-7.9383014842488E-15', u); - T('4902.6138179376447898508', '4.9026138179376447898508E3', u); - T('-0.0000715984', '-7.15984E-5', u); - T('0.000035824586044205294062412584', '3.5824586044205294062412584E-5', u); - T('0.000000000000000000000125960459847724978955518957', '1.25960459847724978955518957E-22', u); - T('0.028825661929052', '2.8825661929052E-2', u); - T('1', '1E0', u); - T('5515129992862248795518.6683048631996974', '5.5151299928622487955186683048631996974E21', u); - T('-0.00000000000000000000000000000000000000000080094098284978', '-8.0094098284978E-43', u); - T('0.0087634344566767751845291518372154140005282350718533575', '8.7634344566767751845291518372154140005282350718533575E-3', u); - T('-0.00000000000000000000000000087483068736', '-8.7483068736E-28', u); - T('-0.00000000000000000000003486', '-3.486E-23', u); - T('0.00000000000000000000000000000070504040638', '7.0504040638E-31', u); - T('8303509586343.2443141446152924467090885760476794115914091746', '8.3035095863432443141446152924467090885760476794115914091746E12', u); - T('-64990.51997', '-6.499051997E4', u); - T('-655394931216227242937434026113830.5297263576723976532', '-6.553949312162272429374340261138305297263576723976532E32', u); - T('-30636947149027568.3784157180980445146', '-3.06369471490275683784157180980445146E16', u); - T('-0.00000000000000000000000000000000000001208233572003', '-1.208233572003E-38', u); - T('-0.0000000000000011794152801815', '-1.1794152801815E-15', u); - T('1071378.3293', '1.0713783293E6', u); - T('-0.000000000003361089193578981719907614', '-3.361089193578981719907614E-12', u); - T('0.000000000000000007517993065604', '7.517993065604E-18', u); - T('-0.00000000000000000000000000523129187652012620622569673798', '-5.23129187652012620622569673798E-27', u); - T('0.0005386441729450879234', '5.386441729450879234E-4', u); - T('1956653.41224492311730384723219211', '1.95665341224492311730384723219211E6', u); - T('6896', '6.896E3', u); - T('0.0000000000744534597556481260346395203468455303201235567973', '7.44534597556481260346395203468455303201235567973E-11', u); - T('-292388805074045762115572488335407720919180203157229382665.559', '-2.92388805074045762115572488335407720919180203157229382665559E56', u); - T('0.0000000000161486329717318200324782054218311', '1.61486329717318200324782054218311E-11', u); - T('-0.000000007268', '-7.268E-9', u); - T('-301600646696.465', '-3.01600646696465E11', u); - T('433163.236977123475732966', '4.33163236977123475732966E5', u); - T('0.00000000000002', '2E-14', u); - T('77436648026076439631578359.44359576567', '7.743664802607643963157835944359576567E25', u); - T('548548914365689512587508708513155531344527.51142574657215155', '5.4854891436568951258750870851315553134452751142574657215155E41', u); - T('-34.831073457011317265120446795022234120450280951265737281038', '-3.4831073457011317265120446795022234120450280951265737281038E1', u); - T('-845.7703', '-8.457703E2', u); - T('-4855853589907390754493', '-4.855853589907390754493E21', u); - T('-0.000000000000000000000000000000000000000000000036', '-3.6E-47', u); - T('-0.00000000000000000000000000000000000000000000000000000065', '-6.5E-55', u); - T('-45187081404585.42115773362507', '-4.518708140458542115773362507E13', u); - T('-0.000323660879015412727290006070402289', '-3.23660879015412727290006070402289E-4', u); - T('0.0000000026140558644933293588', '2.6140558644933293588E-9', u); - T('845511912406451608.452066253429799', '8.45511912406451608452066253429799E17', u); - T('0.0000000004438916316433824501475', '4.438916316433824501475E-10', u); - T('-1.475814', '-1.475814E0', u); - T('-0.5938633', '-5.938633E-1', u); - T('-0.0000000000000000000000000000001', '-1E-31', u); - T('-5261012744021996107539939108.077860134', '-5.261012744021996107539939108077860134E27', u); - T('-0.0000000000000000000000000000000000000000000048147761739', '-4.8147761739E-45', u); - T('-768545505862649955130.58486163645042434421335', '-7.6854550586264995513058486163645042434421335E20', u); - T('-8704255.29406077171056688276987554', '-8.70425529406077171056688276987554E6', u); - T('-0.00000000049', '-4.9E-10', u); - T('-0.0000274005502702', '-2.74005502702E-5', u); - T('0.0000000000000000000000000000899782060188', '8.99782060188E-29', u); - T('2665032804405760472644.6495163233309696', '2.6650328044057604726446495163233309696E21', u); - T('-0.000000000000000030326850268940214303', '-3.0326850268940214303E-17', u); - T('0.0000612367883', '6.12367883E-5', u); - T('303609712270628568267916524914027172014687335.2872885723795', '3.036097122706285682679165249140271720146873352872885723795E44', u); - T('0.000475307072678608341', '4.75307072678608341E-4', u); - T('-0.889983831753818831790592735', '-8.89983831753818831790592735E-1', u); - T('-0.00066889767092099512366082', '-6.6889767092099512366082E-4', u); - T('-82', '-8.2E1', u); - T('0.000000000000000021', '2.1E-17', u); - T('-0.000000000000000000000000000000000000000000000179184', '-1.79184E-46', u); - T('-0.00000153', '-1.53E-6', u); - T('1515.50800161303015840906362948489', '1.51550800161303015840906362948489E3', u); - T('-0.000000065937444987966499626906986814867840872', '-6.5937444987966499626906986814867840872E-8', u); - T('-8.9396126344740419192589432399447838129620466', '-8.9396126344740419192589432399447838129620466E0', u); - T('-14954.93625698463935831538650997', '-1.495493625698463935831538650997E4', u); - T('9174945', '9.174945E6', u); - T('0.000000000000000000000000000000002802944759681178397', '2.802944759681178397E-33', u); - T('-43661507562386856914454118482535735284321568.8260068', '-4.36615075623868569144541184825357352843215688260068E43', u); - T('-0.0000000000000053', '-5.3E-15', u); - T('0.000000000000000088261', '8.8261E-17', u); - T('-3.5', '-3.5E0', u); - T('-0.0000000892690903256739084318630208528', '-8.92690903256739084318630208528E-8', u); - T('-6407107615634731793662054.643592714114255633352022546773', '-6.407107615634731793662054643592714114255633352022546773E24', u); - T('0.000000000000008', '8E-15', u); - T('-4113623798185597530479042260306405.169879539509', '-4.113623798185597530479042260306405169879539509E33', u); - T('-0.0000000000000000000000005949543693626028147554', '-5.949543693626028147554E-25', u); - T('-16486202099937.552352885944', '-1.6486202099937552352885944E13', u); - T('6904428088990.55342459', '6.90442808899055342459E12', u); - T('-82273669444.3011132490462', '-8.22736694443011132490462E10', u); - T('-0.00000000000416644372132', '-4.16644372132E-12', u); - T('-0.051168126904004539033', '-5.1168126904004539033E-2', u); - T('-0.000034398785', '-3.4398785E-5', u); - T('-714608413034.632588711', '-7.14608413034632588711E11', u); - T('31.7594171820640021654374655039', '3.17594171820640021654374655039E1', u); - T('87.4', '8.74E1', u); - T('0.00000000000000000000000483', '4.83E-24', u); - T('24.61775061167239603598621023987484627713284203', '2.461775061167239603598621023987484627713284203E1', u); - T('-0.0000000000000000000000000000005620531', '-5.620531E-31', u); - T('36514.26972606881494', '3.651426972606881494E4', u); - T('-0.00000000000000000000000000000000000000804143880989122008869', '-8.04143880989122008869E-39', u); - T('-0.0000000000000000000000000000000000000736020246', '-7.36020246E-38', u); - T('-0.00000000000510047724869054', '-5.10047724869054E-12', u); - T('905030924720385935277.8553538426257506345310051398387757', '9.050309247203859352778553538426257506345310051398387757E20', u); - T('-9.18', '-9.18E0', u); - T('32679523370662392206339543790659744869129539414', '3.2679523370662392206339543790659744869129539414E46', u); - T('90.2504892', '9.02504892E1', u); - T('-0.0000000000000000000000050446054506203873', '-5.0446054506203873E-24', u); - T('136427761390644472964118311128712026.442', '1.36427761390644472964118311128712026442E35', u); - - assert('-1478635511205065720411441088234634087783353090531769.175603436034231639743395165930222246484607747' + - '0460440794925193040344223656739741115687100160257607638', new BigNumber('-1478635511205065720411441088234634087783' + - '353090531769.175603436034231639743395165930222246484607747046044079492519304034422365673974111568710016025760763' + - '83664408162624867351605015229777701990865326902932136430587015275752666401315258528531504569482239').toFixed(100)); - - BigNumber.config({ERRORS : true}); - - T('123.450', '12.345e1', new BigNumber('3')); - T('123.45', '12.345e1', null); - T('123.45', '12.345e1', u); - T('123', '12.345e1', 0); - T('123', '12.345e1', -0); - T('123', '12.345e1', '-0'); - T('123', '12.345e1', '-0.0000000'); - - assertException(function () {new BigNumber(1.23).toFixed(NaN)}, "(1.23).toFixed(NaN)"); - assertException(function () {new BigNumber(1.23).toFixed('NaN')}, "(1.23).toFixed('NaN')"); - assertException(function () {new BigNumber(1.23).toFixed([])}, "(1.23).toFixed([])"); - assertException(function () {new BigNumber(1.23).toFixed({})}, "(1.23).toFixed({})"); - assertException(function () {new BigNumber(1.23).toFixed('')}, "(1.23).toFixed('')"); - assertException(function () {new BigNumber(1.23).toFixed(' ')}, "(1.23).toFixed(' ')"); - assertException(function () {new BigNumber(1.23).toFixed('hello')}, "(1.23).toFixed('hello')"); - assertException(function () {new BigNumber(1.23).toFixed('\t')}, "(1.23).toFixed('\t')"); - assertException(function () {new BigNumber(1.23).toFixed(new Date)}, "(1.23).toFixed(new Date)"); - assertException(function () {new BigNumber(1.23).toFixed(new RegExp)}, "(1.23).toFixed(new RegExp)"); - assertException(function () {new BigNumber(1.23).toFixed(2.01)}, "(1.23).toFixed(2.01)"); - assertException(function () {new BigNumber(1.23).toFixed(10.5)}, "(1.23).toFixed(10.5)"); - assertException(function () {new BigNumber(1.23).toFixed('1.1e1')}, "(1.23).toFixed('1.1e1')"); - assertException(function () {new BigNumber(1.23).toFixed(true)}, "(1.23).toFixed(true)"); - assertException(function () {new BigNumber(1.23).toFixed(false)}, "(1.23).toFixed(false)"); - assertException(function () {new BigNumber(1.23).toFixed(function (){})}, "(1.23).toFixed(function (){})"); - - assertException(function () {new BigNumber('12.345e1').toFixed('-1')}, ".toFixed('-1')"); - assertException(function () {new BigNumber('12.345e1').toFixed(-23)}, ".toFixed(-23)"); - assertException(function () {new BigNumber('12.345e1').toFixed(1e9 + 1)}, ".toFixed(1e9 + 1)"); - assertException(function () {new BigNumber('12.345e1').toFixed(1e9 + 0.1)}, ".toFixed(1e9 + 1)"); - assertException(function () {new BigNumber('12.345e1').toFixed('-0.01')}, ".toFixed('-0.01')"); - assertException(function () {new BigNumber('12.345e1').toFixed('-1e-1')}, ".toFixed('-1e-1')"); - assertException(function () {new BigNumber('12.345e1').toFixed(Infinity)}, ".toFixed(Infinity)"); - assertException(function () {new BigNumber('12.345e1').toFixed('-Infinity')}, ".toFixed('-Infinity')"); - - BigNumber.config({ERRORS : false}); - - T('Infinity', Infinity, 0); - T('Infinity', Infinity, NaN); - T('Infinity', Infinity, null); - T('Infinity', Infinity, Infinity); - T('NaN', NaN, -Infinity); - - T('123.450', '12.345e1', new BigNumber(3)); - T('123.45', '12.345e1', null); - T('123.45', '12.345e1', u); - T('123.45', '12.345e1', NaN); - T('123.45', '12.345e1', 'NaN'); - T('123.45', '12.345e1', []); - T('123.45', '12.345e1', {}); - T('123.45', '12.345e1', ''); - T('123.45', '12.345e1', ' '); - T('123.45', '12.345e1', 'hello'); - T('123.45', '12.345e1', '\t'); - T('123.45', '12.345e1', new Date); - T('123.45', '12.345e1', new RegExp); - - T('123', '12.345e1', -0); - - T('123.4500000', '12.345e1', 7.5); - T('123.45000000000', '12.345e1', '1.1e1'); - - T('123.5', '12.345e1', 1); - T('123.45', '12.345e1', '-1'); - T('123.45', '12.345e1', -23); - T('123.45', '12.345e1', 1e9 + 1); - T('123.45', '12.345e1', 1e9 + 0.1); - T('123.45', '12.345e1', '-0.01'); - T('123.45', '12.345e1', '-1e-1'); - T('123.45', '12.345e1', Infinity); - T('123.45', '12.345e1', '-Infinity'); - - // ROUND_HALF_CEIL - // Rounds towards nearest neighbour. If equidistant, rounds towards Infinity - BigNumber.config({ERRORS : true, ROUNDING_MODE : 7}); - - T('0.1', '0.05', 1); - T('1', 0.5, 0); - T('1', 0.54, 0); - T('1', 0.55, 0); - T('1', 0.56, 0); - T('-1', -0.54, 0); - T('-0', -0.5, 0); // test no. 1307 - T('-1', -0.56, 0); - T('-0.5', -0.5, 1); - T('1.3', 1.25, 1); - T('-1.2', -1.25, 1); - T('234.2041', 234.20405, 4); - T('-234.2040', -234.20405, 4); - T('234.2041', '234.204050000000000000000000000000006', 4); - T('-234.2045', '-234.20449', 4); - T('-234.2041', '-234.204050000000000000000000000000006', 4); - T('999.0', 999, 1); - T('1000', 999.5, 0); - T('-999', -999.5, 0); - T('-999.5', -999.5, 1); - T('1.00000000000000000', '1.000000000000000000005', 17) - T('1.00000000000000000001', '1.000000000000000000005', 20) - T('-1.00000000000000000', '-1.000000000000000000005', 17) - T('-1.00000000000000000000', '-1.000000000000000000005', 20) - - // ROUND_HALF_FLOOR - // Rounds towards nearest neighbour. If equidistant, rounds towards -Infinity - BigNumber.config({ROUNDING_MODE : 8}); - - T('0.0', '0.05', '1'); - T('0', 0.5, '0'); - T('1', 0.54, '0'); - T('1', 0.55, '0'); - T('1', 0.56, '0'); - T('-1', -0.54, '0'); - T('-1', -0.5, '0'); - T('-1', -0.56, '0'); - T('-0.5', -0.5, '1'); - T('1.2', 1.25, '1'); - T('-1.3', -1.25, '1'); - T('234.2040', 234.20405, '4'); - T('-234.2041', -234.20405, '4'); - T('234.2040', '234.20404999999999999999999999999999', '4'); - T('234.2041', '234.204050000000000000000000000000006', '4'); - T('-234.2045', '-234.20449', '4'); - T('-234.2041', '-234.204050000000000000000000000000006', '4'); - T('999.0', 999, '1'); - T('999', 999.5, '0'); - T('-1000', -999.5, '0'); - T('-999.5', -999.5, '1'); - T('1.00000000000000000', '1.000000000000000000005', '17') - T('1.00000000000000000000', '1.000000000000000000005', '20') - T('-1.00000000000000000', '-1.000000000000000000005', '17') - T('-1.00000000000000000001', '-1.000000000000000000005', '20') - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js deleted file mode 100644 index f05067d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toFraction.js +++ /dev/null @@ -1,3037 +0,0 @@ -var count = (function toFraction(BigNumber) { - var start = +new Date(), - log, - error, - u, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, value, maxDenominator){ - assert(expected, new BigNumber(value).toFraction(maxDenominator).toString()); - } - - log('\n Testing toFraction...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - // Tests generated using Python's fraction module. - - T('1,10', '0.1', u); - T('-1,10', '-0.1', u); - T('1,100', '0.01', u); - T('-1,100', '-0.01', u); - T('1,1000', '0.001', u); - T('-1,1000', '-0.001', u); - T('54301793,100000', '543.017930', u); - T('-484693350148251574449,1000000000000', '-484693350.1482515744490', u); - T('-200111074540568980159529,25000000000000', '-8004442981.622759206381160', u); - T('-5965700213104829,1000000000000000', '-5.965700213104829', u); - T('-5124110209739113904928179,100000000000000', '-51241102097.39113904928179', u); - T('-1655017182533520595664837541,200000000000000', '-8275085912667.602978324187705', u); - T('-5,8', '-0.625', u); - T('-42394617,200000000', '-0.211973085', u); - T('-147453708173963291829,2500000000000000000', '-58.9814832695853167316', u); - T('-2733,100', '-27.33', u); - T('0,1', '0.0', u); - T('-2599897551866392365731491641,10000000000', '-259989755186639236.5731491641', u); - T('-9326331230765073371,5000000000000000', '-1865.2662461530146742', u); - T('-2483061,10000', '-248.3061', u); - T('-92864854181,10000000', '-9286.4854181', u); - T('-758516850228215193,100000000000000000', '-7.5851685022821519300', u); - T('0,1', '0.0', u); - T('-19570408085559589,20000000000', '-978520.404277979450', u); - T('-211,100', '-2.11', u); - T('-4789334439841,10000000000', '-478.9334439841', u); - T('2978320663077,10000000000000', '0.2978320663077', u); - T('-1221,25', '-48.84', u); - T('12456254053601331,5000000000000', '2491.25081072026620', u); - T('31969983,100000', '319.69983', u); - T('31852901149,400000000000', '0.0796322528725', u); - T('-456674099059,10000000000', '-45.6674099059', u); - T('-361907787,5000000', '-72.3815574', u); - T('-6521,100', '-65.21', u); - T('-11438080592941644302261353,10000000000000', '-1143808059294.1644302261353', u); - T('670431292887199,100000000000000', '6.70431292887199', u); - T('0,1', '0.0', u); - T('-12179876267417657784053129,390625000000', '-31180483244589.20392717601024', u); - T('-883842861294459426792636233,1250000000000000', '-707074289035.5675414341089864', u); - T('93,100', '0.93', u); - T('-4013,250', '-16.052', u); - T('-1813352184996169886155932687,10000000000000', '-181335218499616.9886155932687', u); - T('-79491022129556305898477,25000000000000', '-3179640885.18225223593908', u); - T('-6955532202842357103065812079,100000000000', '-69555322028423571.03065812079', u); - T('1,2', '0.5', u); - T('117679941425840963432274357541,6250000000000000', '18828790628134.55414916389720656', u); - T('-44419548531115044568503,5000000000000000000', '-8883.9097062230089137006', u); - T('-48,25', '-1.92', u); - T('3026554851926703631,10000000000000000000', '0.3026554851926703631', u); - T('-27597130550621,10000000', '-2759713.0550621', u); - T('-80047992603251,50000000000000', '-1.60095985206502', u); - T('-77860395508386749,1000000000000', '-77860.395508386749', u); - T('48601655379903990436811,10000000000000000', '4860165.5379903990436811', u); - T('310385178311182627346467559,100000000000000', '3103851783111.82627346467559', u); - T('-1866981502342301,5000000000000', '-373.3963004684602', u); - T('-263843686400376847,1000000000', '-263843686.4003768470', u); - T('2124759225302861,2500000000000000', '0.84990369012114440', u); - T('-664881551,125000', '-5319.052408', u); - T('-15340092011,500000000', '-30.6801840220', u); - T('-579129,1000', '-579.129', u); - T('31618159823455571971,6250000000000', '5058905.57175289151536', u); - T('-84886224665539,2500000000000', '-33.9544898662156', u); - T('-912648758578220220986367,1250000000000000000', '-730119.0068625761767890936', u); - T('-62977599666149191581,10000000000', '-6297759966.6149191581', u); - T('-5497168411400642219272521,100000000000000000', '-54971684.11400642219272521', u); - T('-5616409194059,1000000000', '-5616.409194059', u); - T('-283871646617001,1000000000', '-283871.646617001', u); - T('-485222200141938641,100000000000000000', '-4.85222200141938641', u); - T('-13782530592809417884043,2500000000000000000', '-5513.0122371237671536172', u); - T('-386323443,1250000000', '-0.3090587544', u); - T('-38961,1000', '-38.961', u); - T('21551091008117488357,2500000000000000000', '8.62043640324699534280', u); - T('173,100', '1.730', u); - T('5333399,6250000', '0.85334384', u); - T('-229251439697497,62500000000', '-3668.0230351599520', u); - T('-212582095021077222386880441,100000000000000000000', '-2125820.95021077222386880441', u); - T('-4509791479,500000', '-9019.582958', u); - T('-7,10', '-0.7', u); - T('171494582705307,50000000000', '3429.89165410614', u); - T('0,1', '0.0', u); - T('-116465991083,5000000', '-23293.19821660', u); - T('-123982957,1250000', '-99.1863656', u); - T('-11006669641979567,2000000000000', '-5503.3348209897835', u); - T('-2313,1000', '-2.313', u); - T('15409800999774967,10000000000000000', '1.5409800999774967', u); - T('-6614709,25000000', '-0.26458836', u); - T('0,1', '0.0', u); - T('-200386023,2500000', '-80.1544092', u); - T('-364278093789203,1000000000000', '-364.278093789203', u); - T('68468339471261366060229,1000000000000000000', '68468.339471261366060229', u); - T('-470519242528519,500000000', '-941038.485057038', u); - T('11,2', '5.5', u); - T('-9976509289,10000000', '-997.6509289', u); - T('0,1', '0.0', u); - T('-6916459729727082955260053,1000000000000000000', '-6916459.729727082955260053', u); - T('-140541,16000', '-8.7838125', u); - T('-49,5', '-9.8', u); - T('-47,50', '-0.94', u); - T('272783,100000', '2.72783', u); - T('4116487650822625882405778003,50000000000000000000', '82329753.01645251764811556006', u); - T('2919425337211,250000000000', '11.677701348844', u); - T('-4159828773,1250000', '-3327.8630184', u); - T('-79717565915722094623,10000000000000', '-7971756.5915722094623', u); - T('-317320236283,500000000', '-634.640472566', u); - T('-14147732160552271137,2500000000000000000', '-5.6590928642209084548', u); - T('-12059857,250000', '-48.239428', u); - T('681420956722259461,12500000000', '54513676.53778075688', u); - T('17774376511238461243,200000000000000', '88871.882556192306215', u); - T('4678001741059099871336323918049287,50000000000000000000', '93560034821181.99742672647836098574', u); - T('0,1', '0.0', u); - T('-7,10', '-0.7', u); - T('-23351644276078989,25000000000000', '-934.06577104315956', u); - T('-1765063,200000', '-8.825315', u); - T('16389704981,5000000000', '3.2779409962', u); - T('18121833053827129891,2000000000000', '9060916.526913564945500', u); - T('-2523281598830311,10000000000', '-252328.1598830311', u); - T('994977441308813,250000000', '3979909.765235252', u); - T('-50961713844809094829,5000000000000000', '-10192.3427689618189658', u); - T('-123997423829,20000000', '-6199.87119145', u); - T('-549246278950790194833129957,625000000000000', '-878794046321.2643117330079312', u); - T('-21647408712889002435857,200000000000000', '-108237043.564445012179285', u); - T('-2820570956057812319823086593,1000000000000000', '-2820570956057.812319823086593', u); - T('-110806033317345864067,20000000000000000', '-5540.30166586729320335', u); - T('-8353311,10000000', '-0.8353311', u); - T('-1357114760839431,200000000', '-6785573.804197155', u); - T('209320962852697355183332757976049,625000000000000000', '334913540564315.76829333241276167840', u); - T('0,1', '0.0', u); - T('-87920815397,10000000', '-8792.0815397', u); - T('42482569836133,1000000000000', '42.482569836133', u); - T('0,1', '0.0', u); - T('-29518137461,1000000000', '-29.518137461', u); - T('5192895093,100000', '51928.95093', u); - T('-40587909849427164111,1000000000000000', '-40587.909849427164111', u); - T('824746069,10000000', '82.4746069', u); - T('-245537748603430439,400000000000', '-613844.3715085760975', u); - T('-717771547151675126007258009,1250000000000000', '-574217237721.3401008058064072', u); - T('-532430787549785291,12500000000', '-42594463.00398282328', u); - T('-44797367524497867,5000000000000000', '-8.9594735048995734', u); - T('-468580303722092912184256627,2000000000000000000', '-234290151.8610464560921283135', u); - T('5657719391,1000000000', '5.657719391', u); - T('14090298821989,50000000', '281805.97643978', u); - T('-80762928268461244253,10000000000000000000', '-8.0762928268461244253', u); - T('3,5', '0.6', u); - T('-92113139197545733,10000000000000', '-9211.3139197545733', u); - T('-1556299,10000000', '-0.1556299', u); - T('2418948368754047020942979,250000000000000', '9675793475.0161880837719160', u); - T('19652697,62500', '314.443152', u); - T('-87839127276245656603537,125000000000000', '-702713018.209965252828296', u); - T('-14005169230761299788063,20000000000000', '-700258461.53806498940315', u); - T('-279,40', '-6.975', u); - T('0,1', '0.0', u); - T('-1806754525468682323,100000000000000', '-18067.54525468682323', u); - T('247972458841,10000000000', '24.7972458841', u); - T('451607951414070493,500000000000000', '903.215902828140986', u); - T('281482401773084158055523,50000000000000000000', '5629.64803546168316111046', u); - T('33,10', '3.3', u); - T('-290099,62500', '-4.641584', u); - T('-899598441,1000000', '-899.598441', u); - T('193325773941340501463237,100000000000000', '1933257739.41340501463237', u); - T('27357881161156398470035203,500000000000000000', '54715762.322312796940070406', u); - T('7215187086319853416331,100000000000000000', '72151.87086319853416331', u); - T('-823577,125000', '-6.588616', u); - T('-127409327138611,312500000000000', '-0.4077098468435552', u); - T('-142974608134492239968107843,1000000000', '-142974608134492239.9681078430', u); - T('-4537660598987301975574620667,10000000000000', '-453766059898730.1975574620667', u); - T('-18374189280291,5000000', '-3674837.8560582', u); - T('-4597156458983,250000000', '-18388.625835932', u); - T('-71670733247098307,1250000000000000', '-57.3365865976786456', u); - T('1987,2500', '0.7948', u); - T('0,1', '0.0', u); - T('-6097315591260183077181430951,100000000000000000', '-60973155912.60183077181430951', u); - T('30252232444541,100000000000', '302.52232444541', u); - T('-980689,125000', '-7.845512', u); - T('-535844087,1000000', '-535.844087', u); - T('-193035003,20000', '-9651.75015', u); - T('-1007194349453595010508023,6250000000000000000', '-161151.09591257520168128368', u); - T('-3658094692361441,200000000', '-18290473.461807205', u); - T('-719,100', '-7.19', u); - T('-958804210658146103495976847,20000000000000', '-47940210532907.30517479884235', u); - T('-89094216351,1000000', '-89094.216351', u); - T('-3582499868182265571,100000000000000000', '-35.82499868182265571', u); - T('2067,10000', '0.2067', u); - T('-9433,100', '-94.33', u); - T('-217068626544319,10000000000000', '-21.7068626544319', u); - T('37585828244413865266713,4000000000000', '9396457061.10346631667825', u); - T('-91498021630276586782019,25000000000000', '-3659920865.21106347128076', u); - T('-3836906826908540628227081,2000000000000', '-1918453413454.2703141135405', u); - T('-4353266163985119533,200000000000000', '-21766.330819925597665', u); - T('-9383241486201,25000000', '-375329.65944804', u); - T('0,1', '0.0', u); - T('-341601768966781,5000000000', '-68320.3537933562', u); - T('-1567555398070069,2500000000', '-627022.1592280276', u); - T('-33306019510179,100000000', '-333060.19510179', u); - T('-4863716727376251454133,1000000000000', '-4863716727.376251454133', u); - T('-574277977,100000000', '-5.74277977', u); - T('5350626629797780458100053761,1000000000000000000', '5350626629.797780458100053761', u); - T('-7636341311139689,1000000000', '-7636341.311139689', u); - T('-235940193945989693,100000000000', '-2359401.93945989693', u); - T('-6648926524329262739,1000000000000000', '-6648.926524329262739', u); - T('53408696765404895507753,100000000000000000000', '534.08696765404895507753', u); - T('-608550193099791,1000000000000000', '-0.608550193099791', u); - T('23166918429420757228938433,2500000000000000', '9266767371.76830289157537320', u); - T('8273,20', '413.650', u); - T('227757,5000', '45.5514', u); - T('348417664650569,100000000000', '3484.17664650569', u); - T('53142735643470026332735643192361,10000000000000000000', '5314273564347.0026332735643192361', u); - T('-89788064954218810252057051,100000000000000', '-897880649542.18810252057051', u); - T('-1306089141,250000000', '-5.224356564', u); - T('-45086702607022861843,1250000000000', '-36069362.0856182894744000', u); - T('-377,50', '-7.540', u); - T('-258447712404123545579762063,20000000000', '-12922385620206177.27898810315', u); - T('-628719551197,10000000', '-62871.9551197', u); - T('60612440731,312500', '193959.8103392', u); - T('-1597151323402131,50000000000', '-31943.026468042620', u); - T('-115594971935575014446009257,4000000000000000', '-28898742983.89375361150231425', u); - T('1,10', '0.1', u); - T('-18621,250', '-74.484', u); - T('-637961611566238281399,500000000000000000', '-1275.923223132476562798', u); - T('-584061819097005054409,100000000000000000', '-5840.618190970050544090', u); - T('-18813090881,200000000', '-94.065454405', u); - T('303,250', '1.212', u); - T('448557308974238577920704115565781,10000000000000000000', '44855730897423.85779207041155657810', u); - T('-1193270826256326041220780273,500000000', '-2386541652512652082.441560546', u); - T('-896023,2000000', '-0.4480115', u); - T('-41206366129433,10000000000', '-4120.6366129433', u); - T('-17988697610527989991481961,500000000000000', '-35977395221.055979982963922', u); - T('-1817173764903,10000000', '-181717.37649030', u); - T('-3,10', '-0.3', u); - T('-92549,1000', '-92.549', u); - T('-279096500654837006467612407,50000000000000000000', '-5581930.01309674012935224814', u); - T('-259968688776686799,500000000', '-519937377.553373598', u); - T('-5,2', '-2.5', u); - T('-3917,50', '-78.34', u); - T('0,1', '0.0', u); - T('-75607642540312935927,10000000000000000', '-7560.76425403129359270', u); - T('-2176542221453118621443981521,500000000000000000', '-4353084442.906237242887963042', u); - T('-5648864378490501415429342121,100000000000000000', '-56488643784.90501415429342121', u); - T('-76539862671139,1000000000', '-76539.862671139', u); - T('141796873549,500000', '283593.747098', u); - T('-948224946050543083414093,1250000000000', '-758579956840.4344667312744', u); - T('-2205228733,500000', '-4410.457466', u); - T('25694008107,1000000', '25694.008107', u); - T('-196113,2000', '-98.0565', u); - T('-66885450169789234267297,1000000000000', '-66885450169.789234267297', u); - T('-48529788189,500000', '-97059.576378', u); - T('-324221069,10000000', '-32.4221069', u); - T('-116146483434824230068673,50000000000000000000', '-2322.92966869648460137346', u); - T('-4051770395293,62500000', '-64828.326324688', u); - T('-83031469,100000000', '-0.830314690', u); - T('-28756998587475224546963,50000000000000000', '-575139.97174950449093926', u); - T('-1799450063972413799,10000000000', '-179945006.3972413799', u); - T('9167099921651200679035713391,1000000000000000', '9167099921651.20067903571339100', u); - T('1451,25', '58.04', u); - T('8253,200', '41.265', u); - T('12869,2500', '5.1476', u); - T('13856945667,1000000000', '13.856945667', u); - T('-43346967,100000000', '-0.43346967', u); - T('-3588675849064697,5000000000', '-717735.1698129394', u); - T('-940992729300541871141570909,2000000000000000000', '-470496364.6502709355707854545', u); - T('-956832531182962661827,2500000000000', '-382733012.4731850647308', u); - T('-152399,500', '-304.798', u); - T('-178527,10000', '-17.8527', u); - T('-342133,1000', '-342.133', u); - T('57078299482481,1000000', '57078299.48248100', u); - T('-79,10', '-7.9', u); - T('4747223909107687084386231,5000000000000000', '949444781.8215374168772462', u); - T('1731900848696547452986210971,5000000000000000', '346380169739.3094905972421942', u); - T('122108665581,500000000000', '0.244217331162', u); - T('-16865419490082861973881,200000000000', '-84327097450.414309869405', u); - T('213918705805395433,2500000000000', '85567.4823221581732', u); - T('-3281991687080891663567529581,1000000000000000', '-3281991687080.891663567529581', u); - T('-9341191082726085332133,500000000000000000', '-18682.382165452170664266', u); - T('-101666590217047,10000000000000', '-10.1666590217047', u); - T('-78831482291567,1000000000000', '-78.8314822915670', u); - T('0,1', '0.0', u); - T('188098837362734027,50000000000000', '3761.97674725468054', u); - T('7446591289029764406983,1000000000000', '7446591289.029764406983', u); - T('0,1', '0.0', u); - T('-237495928119,50000000000', '-4.74991856238', u); - T('-5470021580414601267,62500000000', '-87520345.286633620272', u); - T('20893480589331570804768497,100000000000000', '208934805893.3157080476849700', u); - T('-427402721,10000', '-42740.27210', u); - T('-418854065753,5000000', '-83770.81315060', u); - T('41378721951369,5000000000', '8275.7443902738', u); - T('11188608560931794787022677022582217,2000000000000000000', '5594304280465897.3935113385112911085', u); - T('-46338373,50000', '-926.76746', u); - T('-4074951117564368871187,100000000000000000', '-40749.51117564368871187', u); - T('-1707089291648182063827,100000000000', '-17070892916.48182063827', u); - T('-295010270384580559,100000000000000000', '-2.95010270384580559', u); - T('475514217,12500000', '38.04113736', u); - T('-456027,5000', '-91.2054', u); - T('-7485101,5000000', '-1.4970202', u); - T('-15596055181,100000000', '-155.96055181', u); - T('-5451370075707939,12500000000000000', '-0.436109606056635120', u); - T('0,1', '0.0', u); - T('-6218012505973,2500000', '-2487205.0023892', u); - T('92703,1000', '92.703', u); - T('-58672783,62500000', '-0.938764528', u); - T('26951106753311882431,1250000000000', '21560885.4026495059448', u); - T('0,1', '0.0', u); - T('72561,25000', '2.90244', u); - T('-370800597281,500000000', '-741.601194562', u); - T('161529914311,2000000000', '80.7649571555', u); - T('0,1', '0.0', u); - T('-7921733,1000000', '-7.921733', u); - T('-108370284181334449019037137,1562500000000', '-69356981876054.04737218376768', u); - T('-988987,1250', '-791.1896', u); - T('-22885050541036899,2500000000000000', '-9.1540202164147596', u); - T('-12248601426509,100000000', '-122486.01426509', u); - T('-53006782802519,7812500000', '-6784.868198722432', u); - T('-4098212714968971,1000000000000', '-4098.212714968971', u); - T('-916,25', '-36.64', u); - T('-1849979811,10000000000', '-0.18499798110', u); - T('-1163263320065980213721068337,250000000000000000', '-4653053280.263920854884273348', u); - T('-63,100', '-0.63', u); - T('-74849063976673,10000000000000', '-7.4849063976673', u); - T('-2627,50', '-52.54', u); - T('-76247965138404535127,50000000000', '-1524959302.76809070254', u); - T('-3226091329574799,5000000000000000', '-0.6452182659149598', u); - T('-4774481559,625000000', '-7.6391704944', u); - T('-3932199215959,10000000', '-393219.9215959', u); - T('-6463072565956442868764219,10000000000000', '-646307256595.6442868764219', u); - T('-1852637393024464507520764889,5000000000', '-370527478604892901.5041529778', u); - T('3118876937753549,20000000', '155943846.887677450', u); - T('-8469141306546569061,10000000000', '-846914130.6546569061', u); - T('9573949,2500000', '3.8295796', u); - T('54039659558876732100021006177771,10000000000000000000', '5403965955887.6732100021006177771', u); - T('886406857838383,100000000', '8864068.57838383', u); - T('-64180091,100000000', '-0.64180091', u); - T('-6864846571598899651,20000000000000', '-343242.32857994498255', u); - T('-2493931443,1000000', '-2493.931443', u); - T('31828328526786083786647,500000000000000', '63656657.053572167573294', u); - T('-3445415293,1000000', '-3445.415293', u); - T('-5024242230618045468013,10000000000000000000', '-502.4242230618045468013', u); - T('-9,5', '-1.8', u); - T('8099,25000', '0.32396', u); - T('-2055329312700326377528694739,500000000000', '-4110658625400652.755057389478', u); - T('-30505199589,100000000', '-305.05199589', u); - T('-1490759877124225470407,1000000000000', '-1490759877.124225470407', u); - T('-4618629729980580667366682107,10000000000000', '-461862972998058.0667366682107', u); - T('-1130319192716875137,625000000000', '-1808510.7083470002192', u); - T('-1691412373887639934138807167,5000000000000000', '-338282474777.5279868277614334', u); - T('-298703448990358147,2000000000000000000', '-0.1493517244951790735', u); - T('-33,10', '-3.3', u); - T('33370280255133778539,1000000000000000', '33370.280255133778539', u); - T('-4702252998317805383728740913,100000000000', '-47022529983178053.83728740913', u); - T('-6351,1000', '-6.351', u); - T('-8284856781150816282422064531,100000000000000', '-82848567811508.16282422064531', u); - T('-62846620813,12500000', '-5027.729665040', u); - T('92502823,50000', '1850.05646', u); - T('171431071233669112837,50000000000', '3428621424.673382256740', u); - T('-79113158708464277609,1000000000000000', '-79113.158708464277609', u); - T('-3588793696497311131,500000000000', '-7177587.3929946222620', u); - T('624073,1000', '624.0730', u); - T('-2911659018203,50000000', '-58233.18036406', u); - T('-69,100', '-0.69', u); - T('375641,10000', '37.5641', u); - T('2578379695534414471,2000000000000000', '1289.1898477672072355', u); - T('57798423261,20000000000', '2.88992116305', u); - T('-96869430091,250000000000', '-0.387477720364', u); - T('-54859400821,10000000', '-5485.9400821', u); - T('-38775303,50000000', '-0.77550606', u); - T('-460471243144930261,1250000000000000', '-368.3769945159442088', u); - T('-3335175516487387,10000000000000000', '-0.33351755164873870', u); - T('-174667238638380908738985811,20000000000000', '-8733361931919.04543694929055', u); - T('828129,1000', '828.129', u); - T('-117136909799345874651365657,2500000000000000000', '-46854763.9197383498605462628', u); - T('1779595760369,2500000', '711838.3041476', u); - T('-142341250379,250000000', '-569.365001516', u); - T('986200911,2500000000', '0.3944803644', u); - T('-182333559482602851520637,2000000000000', '-91166779741.3014257603185', u); - T('-60885611373,10000000000', '-6.0885611373', u); - T('-741206875556328299282294609,10000000000000000000', '-74120687.55563282992822946090', u); - T('1156674883,12500', '92533.99064', u); - T('-3627419,10000', '-362.7419', u); - T('-733771061870739,1250000000000000', '-0.5870168494965912', u); - T('-61116071,1000000000', '-0.061116071', u); - T('354993212041625507168357968471,5000000000000000000', '70998642408.3251014336715936942', u); - T('-34655833652810542670257,4000000000000000000', '-8663.95841320263566756425', u); - T('7,10', '0.7', u); - T('-47990699,100000', '-479.90699', u); - T('-3488630351881,5000000', '-697726.0703762', u); - T('123501469355491081,125000000', '988011754.843928648', u); - T('-3,5', '-0.60', u); - T('-605101,20000', '-30.25505', u); - T('-13853,5000', '-2.7706', u); - T('-251,125', '-2.008', u); - T('-332431900771,10000000', '-33243.190077100', u); - T('-83457932143284973896761,125000000000000000', '-667663.457146279791174088', u); - T('-1599464683,1000000', '-1599.464683', u); - T('107247619602970114431,125000000000', '857980956.8237609154480', u); - T('106276234212253,200000000000', '531.381171061265', u); - T('-78321709403185426102854771,100000000000000', '-783217094031.85426102854771', u); - T('-1382454139,1000000', '-1382.454139', u); - T('-22,5', '-4.4', u); - T('-1551647648312410077781031687,100000000000000000000', '-15516476.48312410077781031687', u); - T('-7,10', '-0.7', u); - T('7610856965538431,1250000000', '6088685.5724307448', u); - T('-8644394501214748574126749,1000000000000000', '-8644394501.214748574126749', u); - T('-935485113175581,25000000000000', '-37.419404527023240', u); - T('-1319,10000', '-0.1319', u); - T('-47315292288529,5000000000', '-9463.05845770580', u); - T('-111004268629921001873757,500000000000000', '-222008537.259842003747514', u); - T('-13,25', '-0.52', u); - T('197308716353,200000000000', '0.986543581765', u); - T('-21514078956751937905331,2000000000000000000', '-10757.0394783759689526655', u); - T('-56583509,100000', '-565.83509', u); - T('-310660495303969,5000000', '-62132099.06079380', u); - T('-4588911263109638518958719353,500000000000000', '-9177822526219.277037917438706', u); - T('638787883838178844837013,10000000000000', '63878788383.81788448370130', u); - T('-90023153,125000', '-720.1852240', u); - T('-24719448065802851827137557,10000000000000000000', '-2471944.8065802851827137557', u); - T('-1692163664077,5000000000', '-338.43273281540', u); - T('-3,10', '-0.3', u); - T('-37969027,10000000', '-3.7969027', u); - T('0,1', '0.0', u); - T('-729239769116052893303137,1000000000000', '-729239769116.052893303137', u); - T('-248567011649,5000000', '-49713.4023298', u); - T('0,1', '0.0', u); - T('33976492623521690540454280357369,10000000000000000000', '3397649262352.16905404542803573690', u); - T('-324129431756502447158554419,500000000', '-648258863513004894.3171088380', u); - T('-185535293743,250000', '-742141.174972', u); - T('-9511387,10000', '-951.1387', u); - T('-48277609,10000', '-4827.76090', u); - T('-5305507073516086201,1000000000', '-5305507073.5160862010', u); - T('4220388699670847,5000000000', '844077.73993416940', u); - T('-65603972997,10000000000', '-6.5603972997', u); - T('26,5', '5.2', u); - T('-499,1000', '-0.499', u); - T('-997797821500381,12500000000', '-79823.82572003048', u); - T('-35613001,50000000', '-0.71226002', u); - T('-34818109982526308537,100000000000000', '-348181.09982526308537', u); - T('-7249385948502190907,5000000000000000', '-1449.87718970043818140', u); - T('-4,5', '-0.8', u); - T('27901580717,1000000', '27901.580717', u); - T('-37138444464274424296356197,100000000000000000', '-371384444.64274424296356197', u); - T('-24952519,10000000', '-2.4952519', u); - T('-1183871,10000', '-118.3871', u); - T('-323836725046470278148447,100000000000000000', '-3238367.25046470278148447', u); - T('-458296522853,1000000', '-458296.522853', u); - T('-9896488459499919018798992969,10000000000000000', '-989648845949.9919018798992969', u); - T('-800498844471573993218284031,100000000000000000000', '-8004988.44471573993218284031', u); - T('19,100', '0.19', u); - T('-8819541616157661,1250000000000000', '-7.0556332929261288', u); - T('2464295177881259,100000000', '24642951.77881259', u); - T('-240160051143,25000000', '-9606.40204572', u); - T('-27,50', '-0.54', u); - T('-670912890009,500000000000', '-1.341825780018', u); - T('-41735377076387,100000000000', '-417.35377076387', u); - T('-18351814413232593,25000000000', '-734072.57652930372', u); - T('-1,10', '-0.1', u); - T('-120533530679991899967,50000000000000', '-2410670.61359983799934', u); - T('-341521322123,1000000', '-341521.322123', u); - T('4469363,5000000', '0.8938726', u); - T('-2300185559,500000', '-4600.371118', u); - T('-9,5', '-1.8', u); - T('-19061913987,312500000', '-60.9981247584', u); - T('216663475511333,1000000000', '216663.475511333', u); - T('-1659477,100000', '-16.59477', u); - T('-989884121025000977,200000000000', '-4949420.60512500488500', u); - T('-1913,100', '-19.13', u); - T('-425227820481,100000000000', '-4.25227820481', u); - T('-8376041,1000000', '-8.376041', u); - T('-2990304956561539891971,50000000000', '-59806099131.23079783942', u); - T('0,1', '0.0', u); - T('-46410885173793408759388939,500000000000000', '-92821770347.586817518777878', u); - T('-9499781269249,100000000', '-94997.81269249', u); - T('-1597534101,25000', '-63901.36404', u); - T('811,100', '8.11', u); - T('-4789,400000', '-0.0119725', u); - T('4757,50', '95.14', u); - T('-733,100', '-7.330', u); - T('-2546590947,5000000000', '-0.5093181894', u); - T('-79318790998372451,10000000000', '-7931879.0998372451', u); - T('-97970835166736806859507401,12500000000', '-7837666813338944.548760592080', u); - T('-729119841,1000000', '-729.119841', u); - T('-4324730954076108671,5000000000', '-864946190.8152217342', u); - T('-17759,20000', '-0.88795', u); - T('223387,500000', '0.446774', u); - T('-3495739634217069,1000000000000000', '-3.495739634217069', u); - T('2080645759193349226042432238271,25000000000000000', '83225830367733.96904169728953084', u); - T('-567002479,125000000', '-4.536019832', u); - T('-3271614601090267536275654641,500000000000', '-6543229202180535.072551309282', u); - T('-554616993923712942818718997,20000000000000000', '-27730849696.18564714093594985', u); - T('-112053,250', '-448.212', u); - T('-607248757361461263304116301,2500000000', '-242899502944584505.3216465204', u); - T('-18331,50', '-366.620', u); - T('-24317134245313276003253,250000000000000', '-97268536.981253104013012', u); - T('-1061159932891264014512925703,20000000000000', '-53057996644563.20072564628515', u); - T('36731261,12500000', '2.93850088', u); - T('318736713583604277266673749,5000000000000000000', '63747342.7167208554533347498', u); - T('-74227605737234405747389,100000000000', '-742276057372.344057473890', u); - T('0,1', '0.0', u); - T('-102451481711,250000000000', '-0.4098059268440', u); - T('3368162492642619086982967909376363443,10000000000000000000', '336816249264261908.6982967909376363443', u); - T('-17663710859989775919,1000000000000000000', '-17.663710859989775919', u); - T('-49264796837,10000000000', '-4.9264796837', u); - T('1381043641897743,500000000000', '2762.087283795486', u); - T('-9849,10000', '-0.9849', u); - T('-77,500', '-0.154', u); - T('-264191,6250', '-42.27056', u); - T('-8027691,100000', '-80.27691', u); - T('-18434760024216076621,25000000000', '-737390400.96864306484', u); - T('-535677556431210667261,1000000000000000', '-535677.556431210667261', u); - T('-8080033681,10000000', '-808.0033681', u); - T('-2793157211,250000', '-11172.628844', u); - - T('5,1', '5.1582612935891', '3'); - T('14645,1797', '8.14969395596340', '4682'); - T('350921,81990', '4.28004634702', '82418'); - T('923754598113149102531799372705758450549,100000000', '9237545981131491025317993727057.58450549'); - T('23665467152910525354658972818814752082,49447', '478602688796297558085606261629921.9787246948249979233505266225354557384', '57466'); - T('12401124714135748113774134798397,2', '6200562357067874056887067399198.66971421701', '2'); - T('5747456325233732815460960864983211610837351385715799969377,100000000000000000000000000000', '57474563252337328154609608649.83211610837351385715799969377'); - T('4744,61', '77.7705294446793765233206385561288346447', '86'); - T('230406626515463254737498487452583023685806305331639,100000000000000000000000000', '2304066265154632547374984.87452583023685806305331639'); - T('8452816572418429518944119647,5000', '1690563314483685903788823.9294'); - T('48239499471878294436129777581,10000000000000000', '4823949947187.82944361297775810'); - T('45172634468362586403517152343110493066053,74300', '607976237797612199239800166125309462.530995962577562', '89241'); - T('245629009658126699398365025147112883705717,1250000000000000000000000000000', '196503207726.5013595186920201176903069645736'); - T('19575206081236584421562241755643406299,500000000000000000000000000000000000', '39.150412162473168843124483511286812598'); - T('124335953351113119989680198250484096210027176457861877,20000000000000000000000', '6216797667555655999484009912524.20481050135882289309385'); - T('62359286968916651021817694022163661098254437249041482587,100000000000000000000000000', '623592869689166510218176940221.63661098254437249041482587'); - T('1406253392003122107350210973,50', '28125067840062442147004219.46', '90'); - T('736337826,1', '736337826.0', '1'); - T('2294354321,3019', '759971.62007285863174441704674479534091075', '5946'); - T('342555042697121035185957633789368546657896318423873,50000000000000000000000000', '6851100853942420703719152.67578737093315792636847746'); - T('3511582655801640591,52', '67530435688493088.2885316751682999639624370547426320', '73'); - T('697806103903081,1', '697806103903081.3297023089715266281593302923590', '1'); - T('504239849856718524776121635107896338763895,26083', '19332126283660565302155489595057943440.70448184108567544983900489517214731', '26482'); - T('3513961,10', '351396.0988885676988110229927700324193', '11'); - T('1514998954038665195379885,15263', '99259578984384799540.056673', '55079'); - T('1190687310674838338273481559,50000', '23813746213496766765469.63118'); - T('31747884008318370382077439489,40', '793697100207959259551935987.225181146039', '45'); - T('39451289109544785156061546711681,59993', '657598204949657212609163514.271348320970259397527780637349273932', '61325'); - T('3859539118592118171061,65', '59377524901417202631.7076617756627530296590420377861', '248'); - T('2529860848590369124121129138,36761', '68819152052184900414056.449443703377131320899467509', '59208'); - T('17331073,2', '8665536.3781112033855216846406980971689', '2'); - T('11088761069693879,25000', '443550442787.75516'); - T('37298162459148947522489,474', '78688106453900733169.80801275320205353359142143262532', '517'); - T('12411782390212011049587005051032466579057,100000000000000000000000000000000000000', '124.11782390212011049587005051032466579057'); - T('288377889236302421024476469650301879883847,50000000000000000000000', '5767557784726048420.48952939300603759767694'); - T('64269805556832147,1', '64269805556832146.8921574533060466484388410550211', '2'); - T('1019428223041680221,2', '509714111520840110.44623631764611004359625363775303233110', '2'); - T('15446409508173177876456900755482517,250000', '61785638032692711505827603021.9300680'); - T('794012664285496747924956753856029102507539,10000000', '79401266428549674792495675385602910.2507539'); - T('1254937597799095507639361,5', '250987519559819101527872.2'); - T('6200289913593672418541428454415821,29', '213803100468747324777290636359166.2447131068603257501', '29'); - T('28363420172665408049802993720278,1', '28363420172665408049802993720278.0', '53164'); - T('614972069955669535218947919309413188717428438,76097', '8081423314397013485668921499000133891183.99461213951158548435230604703', '85075'); - T('456397843623966327008858405616124567381,62500000000000000000', '7302365497983461232.141734489857993078096'); - T('18578778016377890885386246496020651,1000000000000000000000000', '18578778016.377890885386246496020651'); - T('22738060524436955,1', '22738060524436954.73553568', '1'); - T('631381816,2355', '268102.68195329664239686517327023024865590172', '20904'); - T('146503259847606731525818341,125000000000000000000000000', '1.172026078780853852206546728'); - T('14904502285493,500000', '29809004.570986'); - T('46687620560206903024816575649873835,3349', '13940764574561631240614086488466.35861452906998315', '6745'); - T('91662449024242718476521823,100', '916624490242427184765218.23'); - T('47716161226447671719905908024708011827667,1000000000000000000000000000000000000', '47716.161226447671719905908024708011827667'); - T('720670502490670418796980571060493068249181,5000', '144134100498134083759396114212098613649.8362'); - T('37873375501866534444667697433,2000000000000000000000000', '18936.6877509332672223338487165'); - T('9837105973,284029', '34634.1605012164224956', '586619'); - T('275962770820946621106879920859,1250000000000000000000000000000', '0.2207702166567572968855039366872'); - T('706513249010161459257,1', '706513249010161459256.864532197276', '1'); - T('595980268265874363487011727978412247,781189', '762914311729779046411318807584.86390233349524542', '1162874'); - T('94990393655983362634,1', '94990393655983362633.93540186786386734642706043938', '2'); - T('478995160185850544676215707045658234,1', '478995160185850544676215707045658234.2072935316895051189693', '1'); - T('900791612975363289,100000', '9007916129753.632890'); - T('3640161366680621782,5508865835', '660782359.87401239405933', '31221561655'); - T('153304,2409', '63.63802393447707212496311847412489674893', '2919'); - T('48894805199,100000', '488948.05199'); - T('764607208068,1', '764607208068.0', '9883952909'); - T('5247038043357340126406507,10000000000000000000', '524703.8043357340126406507'); - T('40752843984968450495935900024466301,100000', '407528439849684504959359000244.66301'); - T('1508393360078152986207294205073063553774739,10000000000000000000000000000000', '150839336007.8152986207294205073063553774739'); - T('15049415517,2500000', '6019.7662068', '25809809256'); - T('4679780279632085707608834877135150316333,500000000000000000000', '9359560559264171415.217669754270300632666'); - T('175108726296810783549,699340', '250391406607388.0852646781250551', '1790242'); - T('44702883860465549,10', '4470288386046554.9'); - T('7808104088649916822858776184466,1', '7808104088649916822858776184466.47052438758636053342', '1'); - T('281411919337,465805657858', '0.6041401914933113740581694868115147', '980851387140'); - T('695754534752369598767,100000', '6957545347523695.98767'); - T('14331404543988591592392002000575758391172,21068409', '680231931323745974002688195419775.569724890', '37960275'); - T('3320644402459621722827,625', '5313031043935394756.5232', '6613572437131'); - T('627120338836675613788452534272072859,1000000000000000000000000000000', '627120.338836675613788452534272072859'); - T('21062775182251,383134912', '54974.8261579748702201285', '452907837'); - T('18956932146202765099219634795464927,10000000', '1895693214620276509921963479.5464927'); - T('2600986773742994608412878821259213,10', '260098677374299460841287882125921.3'); - T('566726653824685741382851080165717726527122873,100000000000000000000000', '5667266538246857413828.51080165717726527122873'); - T('497588039427229066346312712229773035708653408397,10000000000000000000000', '49758803942722906634631271.2229773035708653408397'); - T('41666367526388418811711752302612627697101,2000', '20833183763194209405855876151306313848.5505'); - T('15363941484953032312420486,10851', '1415900975481801890371.43913003328099204929551975491363327', '49992'); - T('2409694437794006212469,622301', '3872232951247075.309968970', '5615242'); - T('39667592557377399116572645358849947597,100000000000', '396675925573773991165726453.58849947597'); - T('6631914348494357725061167,1000000000000000000000000', '6.631914348494357725061167'); - T('190389016168952767733346161974389684092039842699,50000000000', '3807780323379055354666923239487793681.84079685398'); - T('869903981761555555786475820853808311250191616816131,1000000000000000000', '869903981761555555786475820853808.311250191616816131'); - T('371292976710505868722177667462589039897488370705001117485935571,100000000000000000000000000000000', '3712929767105058687221776674625.89039897488370705001117485935571'); - T('46257442183069435630977238493,1000000000000000000', '46257442183.069435630977238493'); - T('440475560214540234869187803670278339051473119,1000000000000000000000000', '440475560214540234869.187803670278339051473119'); - T('1617847693417,5000', '323569538.6834'); - T('182074175724591638134600468349034330834991283,50000000000000000000000000000', '3641483514491832.762692009366980686616699825660'); - T('7589333034185993241367598309953157841,1000000', '7589333034185993241367598309953.157841'); - T('439885064966692635331338940060375403,74133607290968', '5933679488173046564651.89839254336877899980063174325', '77141789811679'); - T('1179158450722067213186968484863836861457157,100000000000000000000000000000000', '11791584507.22067213186968484863836861457157'); - T('12935263022381831236481986920256744104451045320357,50000000000000', '258705260447636624729639738405134882.08902090640714000'); - T('2395282895205309,25123683202843', '95.33963933020212599179070033', '38426420751904'); - T('17850307,215', '83024.683723', '963'); - T('32544916036253,50', '650898320725.06', '5793653961'); - T('60773532817161262237,66672547', '911522591407.24385761053946236159069413709389', '338084891'); - T('914770176848677528292843944387964798627453476861720317700876791,10000000000000000000000000000000000000000', '91477017684867752829284.3944387964798627453476861720317700876791'); - T('4587186380417513404538237108175442069452907,50000000000000000000000', '91743727608350268090.76474216350884138905814'); - T('8531233654030763235701612513100153212942822881,100000000000000000000000000', '85312336540307632357.01612513100153212942822881'); - T('107773450530064909662187359086117316399733950067153,500000000000000000000000000000000000000', '215546901060.129819324374718172234632799467900134306'); - T('769619176587614353053,1250000000000000', '615695.3412700914824424'); - T('12281666497073480840695662,211', '58206950223097065595714.0379184486359', '683'); - T('457196542212636540687669731893020947887,6883500', '66419196951062183582141313560401.0965187767850813634641', '9593745'); - T('4268227996137613294377196928631180903821983,40735441', '104779226426875145266678147135590870.4614731678', '830069295'); - T('575458315285885743858391,24', '23977429803578572660766.29105216999286300600008393459353040482', '52'); - T('8436494536336345240276183670676635057499,38398604', '219708365864976373627441864049970.0212408503184125498085096963579394842', '68059426'); - T('437912761,10', '43791276.1'); - T('18901384502804686897816143307188176228147,2500000000000000000000000000', '7560553801121.8747591264573228752704912588'); - T('25477273836466129096074485,6558', '3884915193117738501993.66956453300', '6559'); - T('7590779151577004043224428413071780976089,2000000000000000000000000000000000000', '3795.3895757885020216122142065358904880445'); - T('6056953730608206494408538120559,10', '605695373060820649440853812055.9', '5171809704'); - T('31849179082257267370211,88449', '360085236489471530.14970208743', '92072'); - T('178285814692139084253431718197878271715779878432662563,10000000000000000000000000000000000000000', '17828581469213.9084253431718197878271715779878432662563'); - T('1449138221474956614898,2029', '714213021919643477.03203547420265509578', '3820'); - T('183,821', '0.222897429282815755169043594043902608174', '974'); - T('433492537953390549272160099280439360005070313,5000000000000000000000000', '86698507590678109854.4320198560878720010140626'); - T('3862824701391243701393001605164434946489851,148867231', '25948119511884006906751705519157771.8436225296620181042509021019411', '552982978'); - T('2589933131557013289797231668,47', '55104960245893899782919822.723478083911298417430269312', '80'); - T('10890199899142835887,2137', '5096022414198800.13430078158019717882', '2446'); - T('3293945324962080603125,382', '8622893520843142940.11780071049874178362583458818054294', '421'); - T('436594379,1000000', '436.594379'); - T('168301463949156607668854677190355669536114773797741179468731574716495111,25000000000000000000000000000000000', '6732058557966264306754187087614226781.44459095190964717874926298865980444'); - T('24609496918349161226843361015480093061391925879787537781518362891719192377,5000000000000000000000000000000000000000', '4921899383669832245368672203096018.6122783851759575075563036725783438384754'); - T('101528584171956890122633497199277785333799099,100000000000', '1015285841719568901226334971992777.85333799099'); - T('21735,239', '90.941418', '302'); - T('118224122484187225351526044435841806374099,2693763154', '43888091018185790119960206581636.911933980295284713291', '2834067906'); - T('1,1', '0.775084028626235358553642', '1'); - T('19134122533504389120891,25000000', '765364901340175.56483564'); - T('342810849655223057065770739830569,10000000000000000000', '34281084965522.30570657707398305690'); - T('6725614005586035111245829205493452074108331,1000000000000000', '6725614005586035111245829205.493452074108331'); - T('1376371700067530025202571904028,1409', '976842938302008534565345567.088715501208', '2249'); - T('76801072988978594413391998963,10000000000000', '7680107298897859.44133919989630'); - T('12704762005671512260146338889,20', '635238100283575613007316944.45'); - T('2492573677322062578671959051439,108734', '22923590388673851588941444.731537513573028882768807925690476231785', '231654'); - T('31123084257678338385173981570213479239607677464746977165210081,12500000000000000000000', '2489846740614267070813918525617078339168.61419717975817321680648'); - T('3786296291638531133538327635741,100', '37862962916385311335383276357.41'); - T('586924625297711213018263802128176897964674915689,1000000000000000000000000000000000', '586924625297711.2130182638021281768979646749156890'); - T('9645358,1', '9645357.912453778903438267262181232435591944111', '4'); - T('5316031065626771333799,10', '531603106562677133379.9', '19'); - T('67278211304547861090569521693426588943,79', '851622927905669127728728122701602391.68360228044574465611893', '159'); - T('7021540690227758957176483359885192690352067153,81703854', '85938916543982845132084997604705314027.8066583370718350934', '97264150'); - T('60669129292299639447664369918689547710597272939435803927977438559,25000000000000000000000000000000000000', '2426765171691985577906574796.74758190842389091757743215711909754236'); - T('6288763899326986566293639459006397625,120589', '52150394308991587676269306976642.957691', '210871'); - T('615,1', '615.0', '56760255'); - T('17799,19', '936.7892332671682401846243', '97'); - T('1303385080467541077973,1000000', '1303385080467541.077973'); - T('21448859436681680760040806307936789975345193025273495023,500000000000000000000000000000', '42897718873363361520081612.615873579950690386050546990046'); - T('1291898345053434859844591463516855305911784995979,12500000000000000000', '103351867604274788787567317081.34842447294279967832'); - T('60507,1', '60506.9', '5'); - T('616317355277164831416386217627324701901,1000', '616317355277164831416386217627324701.901'); - T('2904921181742034,1', '2904921181742033.970138508789748538132238870774712', '1'); - T('3440569493092390376625126875391799,50000000000000000000', '68811389861847.80753250253750783598'); - T('15571280591820679565505108997031,5', '3114256118364135913101021799406.195951', '8'); - T('392321264085832586910672967559,611830431', '641225483741642440322.9347831490911899434269', '695282372'); - T('5577690959101259996527703333121313876972011192208077,625000000000000000000000000000000', '8924305534562015994.4443253329941022031552179075329232'); - T('16539986799609190872098179009446893,331524797', '49890647545164444734124002.82518502831629815787962712124518347', '544553707'); - T('8981681843839458445912808176057,20203', '444571689543110352220601305.55150225273', '22042'); - T('99325333489133639887283,11', '9029575771739421807934.81761', '13'); - T('6522,1', '6522.0'); - T('7187454479696854214600838,2125352003', '3381771334607886.2281528797655830003743', '3307131440'); - T('28117786498578019978223647606249,72838872', '386027209462799203950105.756803166858487810', '81837562'); - T('478254578956578786562047524831361309532201229,10000000000000000000000', '47825457895657878656204.752483136130953220122900'); - T('77058140608147483002424280179365952862962922218441255276651,1000000000000000000000000000000000', '77058140608147483002424280.179365952862962922218441255276651'); - T('803865379172081337096308068958767613527926677,327563', '2454078693784344804194332293203956532111.1562569643063947120941944927', '375003'); - T('2360034347428712012050231582155883,250000000000000000000000', '9440137389.714848048200926328623532'); - T('203318509580360624351812461951622123031368062580663,250000000000000000000', '813274038321442497407249847806.488492125472250322652'); - T('221965264758349084399,6470046354', '34306595751.2225088455680019382813053906996309752644', '7317562156'); - T('5099265696964671,12500000', '407941255.75717368'); - T('321755130,1', '321755130.0', '1'); - T('681406688936672531143794851254005123313841616787245936785722503,7812500000000000000000000', '87220056183894083986405740960512655784.171726948767479908572480384'); - T('153955479454984280174500893,4927686668', '31242952287278887.5492886539595216', '9598118777'); - T('23227,100000', '0.23227'); - T('43326473463554790328447035534276163421779557,1000000000000000000000000000000000000', '43326473.463554790328447035534276163421779557'); - T('41089006913283492613083959033772531785,2', '20544503456641746306541979516886265892.530283312918885713244232199421', '5'); - T('139407109288420981406975879448852798787333071448546598243307,1000000000000000000000000000000', '139407109288420981406975879448.852798787333071448546598243307'); - T('9781691985049606719084834150405960550336089,122674', '79737287322901403060834685022139659180.7236170663710128362032', '57088498'); - T('14022980999863417630135058657283616,2321', '6041784144706341072871632338338.481688949941106013243041338', '8154'); - T('5574653114539338322522057935820934,1', '5574653114539338322522057935820933.952578779342397522948776164237003865', '2'); - T('698597423090735413329970853695704980420,1', '698597423090735413329970853695704980420.0'); - T('41770388588086435767794101997,1', '41770388588086435767794101996.87800912334551920117198', '2'); - T('3969460977515807861628298607881363600942403072746116154451251370411,500000000000000000000000000000000000', '7938921955031615723256597215762.727201884806145492232308902502740822'); - T('818626449980780390596498633228169970328017564,951613', '860251436225419777363800865717649895837.927354922641714029', '2934871'); - T('2864942859671509919660119,10000000', '286494285967150991.96601190'); - T('145096137530603,3125', '46430764009.79295997627678788068274740859435028566', '3415'); - T('3175128188,8421', '377048.82888017296266613549723116278', '9892'); - T('353211267011180153249,10000000', '35321126701118.0153249'); - T('897447070318612896975557401374492140028592343673,10000000000', '89744707031861289697555740137449214002.8592343673'); - T('17536546982566421053425616271159751448175509509,5000000000000000', '3507309396513284210685123254231.9502896351019018'); - T('1498867800352844887470319343495958,17', '88168694138402640439430549617409.293', '22'); - T('14305398689362,15467073', '924893.7203155374', '22113082'); - T('436102839806788235096903,4', '109025709951697058774225.7362272869251737724', '9'); - T('308087699066,7807', '39463007.437684133317', '10839'); - T('2628342736773923291423096554670735302124820185693541213399,50000000000000000000', '52566854735478465828461931093414706042.49640371387082426798'); - T('64300989158077788880534179354276244873359,2195', '29294300299807648692726277610148630921.8036447', '3984'); - T('1593668215027228291921575913818,1', '1593668215027228291921575913817.9011053', '2'); - T('9464555700726947268792864782,1', '9464555700726947268792864781.94741904335358', '2'); - T('86501031784980810599118109920903,367173188', '235586460591400292003669.151138843504008795198121680193', '457966587'); - T('9745513313209888804669228133888956813799941097,10000000000000000', '974551331320988880466922813388.8956813799941097'); - T('31556786915280245846977588242899282449,10000000000000000', '3155678691528024584697.7588242899282449'); - T('472322148083391454920144185678364119,100000000000', '4723221480833914549201441.85678364119'); - T('518007801929481005201363369,625000000', '828812483087169608.3221813904'); - T('299535536454040965333171155703500161446096189553447,500000000000000000000000000000', '599071072908081930666.342311407000322892192379106894'); - T('5330869452533820313561195628056700122127092795967358371,250000000000000000000000000000000000', '21323477810135281254.244782512226800488508371183869433484'); - T('47795736745489295393396455460987004248591698840612598072778499,100000000000000000000000000000000000000', '477957367454892953933964.55460987004248591698840612598072778499'); - T('206470771234730604991708607179250628073439743340221,1000000000000', '206470771234730604991708607179250628073.439743340221'); - T('907,1', '907.239004086069', '1'); - T('19077064083517899785847151076434612550555316546848569573481919,500000000000000000000000000000000000000', '38154128167035799571694.302152869225101110633093697139146963838'); - T('88133212648357648517,100', '881332126483576485.17', '87089410'); - T('92145848597976720763683816246415023,100000', '921458485979767207636838162464.15023', '521344865'); - T('68539971794,6880585', '9961.358197595117284', '7875099'); - T('935168426589766229927456282413,1000000000000000000000', '935168426.589766229927456282413'); - T('97,1', '97.0'); - T('12846464199528950327,5000000000', '2569292839.9057900654'); - T('2196110114554495743126928176989085775661,247228124', '8882929979901864818287939510429.9936995072615605828834737982875357', '360433698'); - T('388166039,1', '388166039.0'); - T('341539978,1', '341539978.0', '195382934'); - T('781034514540009,100000000', '7810345.145400090'); - T('20877130490298631791495412013,5000000', '4175426098059726358299.0824026', '2413029349'); - T('620026697301098193277327524609895859849707,1000000000000', '620026697301098193277327524609.895859849707'); - T('899179602300830741337813,100000', '8991796023008307413.37813'); - T('122432635,1316', '93033.9171732715553792824649171231580', '8140'); - T('119126340085680938295485816698905,46045039', '2587169924770417466591478.32840156786489', '73781454'); - T('40751167179588164798660481,1000000', '40751167179588164798.660481'); - T('68346625258654521574,1', '68346625258654521574.0'); - T('750578575419957257,100000', '7505785754199.57257'); - T('1082551,2000000', '0.5412755'); - T('638082,1', '638082.0'); - T('142488629984756867662276702019849226999,23', '6195157825424211637490291392167357695.608', '50'); - T('738115949031,1', '738115949031.49784834425903489305746005970674', '1'); - T('762953733493512712065532091292988047,1000', '762953733493512712065532091292988.047'); - T('178822248219150690173,50', '3576444964383013803.46'); - T('1984025728,43281', '45840.570411959105408010583324095855', '43320'); - T('20761534807588043,10000', '2076153480758.8043'); - T('924518404356149235469334759956600273757163609,20000000000000', '46225920217807461773466737997830.01368785818045'); - T('129411352783937937234426479,4112', '31471632486366229872185.427772374363428597742550717671565', '6699'); - T('3411360513380150634213140127292339282533595063273539901300312481,400000000000000000000000', '8528401283450376585532850318230848206333.9876581838497532507812025'); - T('76,1', '75.994673795016', '1'); - T('494578703756754347,5770935', '85701659047.754713404327025764320339913', '7644022'); - T('6890929,100', '68909.29'); - T('1166392938478006378987508440139351590646756345929819,100000000000000', '11663929384780063789875084401393515906.46756345929819'); - T('313075076294541347576328789584368750721345183624469,100000000000000000000000000000000000000', '3130750762945.41347576328789584368750721345183624469'); - T('2662023247705491854869433606657653587,2000000000000000000000', '1331011623852745.9274347168033288267935'); - T('806080010264194,4727', '170526763330.694732378488764174454796737', '7478'); - T('65545519,78105263', '0.83919465196602580801751582896749717', '79437231'); - T('6248476043461963589910078747895049611946214109708513753,1000000000000000000000000000000000', '6248476043461963589910.078747895049611946214109708513753'); - T('54531559010653599,3030958223', '17991524.461422310735689741', '7731481918'); - T('429099569700734470147551061212192591773651008518,670838555', '639646553559722681931349430582731774821.2176154931941859', '704304148'); - T('844049999410175821526,1', '844049999410175821525.66', '1'); - T('60701048676262579463126309740310059202124189359,100000000000000000000000000000000000', '607010486762.62579463126309740310059202124189359'); - T('5279410855406353186734225099558276,77', '68563777342939651775769157137120.467524470763581', '95'); - T('842239448004271461702793995095761523551628413356036645106333,250000000000000000000', '3368957792017085846811175980383046094206.513653424146580425332'); - T('1182610690103,312500000000', '3.7843542083296'); - T('68524947508627870390245103423700023635275808281519987514918614853613,100000000000000000000000000000000000', '685249475086278703902451034237000.23635275808281519987514918614853613'); - T('98142576359019755098761,10000000000000', '9814257635.9019755098761'); - T('241800962281991517205884817297371,5000000000000000000000000', '48360192.4563983034411769634594742'); - T('79836993918410993594506591,1000', '79836993918410993594506.591'); - T('1973810204163989,4534064777', '435329.0703248347084653925795494', '5332316364'); - T('401580056542974086016353741391922659742781536879698656843919,50000000000000000000000000000', '8031601130859481720327074827838.45319485563073759397313687838'); - T('590663,750977', '0.7865260853527516321730', '780179'); - T('280079,1000', '280.079000'); - T('8287753156729,1000000', '8287753.156729'); - T('0,1', '0.123545182349443609735032', '1'); - T('57057377258668955092844388184203953190814195154676204418983523542264563023,100000000000000000000000000000000000', '570573772586689550928443881842039531908.14195154676204418983523542264563023'); - T('147604349147007341987769096030122333191422929,6471015', '22810076803562863320169880000297068263.853959386587721161799958796244241051', '8303141'); - T('6105498122564848444576189774,80267', '76064860061604998873462.192108836736339050132605', '141567'); - T('670639675445600472707497548714250172221625881188854267533121,100000000000000000000000000000000', '6706396754456004727074975487.14250172221625881188854267533121'); - T('478196505300332351297,1000000000000000', '478196.505300332351297'); - T('5375051998674067089293,50000000', '107501039973481.34178586'); - T('66584033541591402334601184478033648516971762649454147,1000000000000000000000000', '66584033541591402334601184478.033648516971762649454147'); - T('6689748165117193396726141393,1250000000000000000000000000', '5.3517985320937547173809131144'); - T('460631023076,645385145', '713.7304393270471076595464454721208755', '940592764'); - T('5276069320082913776121941721,56', '94215523572909174573606102.16045907376298740945874743718869112', '78'); - T('27476132817352,13', '2113548678257.84612197961789955018136', '856'); - T('202602298856965754329,41868', '4839072772928388.13244005', '42848'); - T('4464608676391498186364792490985185921,5000000000', '892921735278299637272958498.1970371842'); - T('5031980754741001166,1', '5031980754741001166.0'); - T('8023557799983,1294504', '6198171.500422555666059971291979899', '4419145'); - T('168103197472408099843,2', '84051598736204049921.4325681106454432215021', '4'); - T('22889257701907256349217661636051,500000', '45778515403814512698435323.272102'); - T('892403,100000', '8.92403'); - T('1914024621531154563928585,31', '61742729726811437546083.38708655997995899644906913601366359', '352'); - T('1895934054286044231883939226027166734,19', '99786002857160222730733643475114038.631477380741702788316870213097972253591', '65'); - T('488907941212895608156694986135107572664818936553,809421353', '604021551199299295180189033306992053945.5041242938398241170607073', '811259873'); - T('9558758078456554336102679663,10000000000000000', '955875807845.6554336102679663'); - T('2281310565857,50362', '45298251.972856518761138181026483534977097', '82487'); - T('2890669262797093295990028537,799', '3617858902124021647046343.6007512810038540029262532383', '994'); - T('7463509030548608549549784845908192540652431,1000000000000000000000000000000000000', '7463509.030548608549549784845908192540652431'); - T('2506595022495145502116175,2852121886', '878852700790623.04917082880938279787754319212190899', '5003324771'); - T('12700439554099,50', '254008791081.98', '925168108'); - T('1628787692156684658130881,10000000000000000000000000', '0.1628787692156684658130881'); - T('44847136057058496707418799843,50000000000000000', '896942721141.16993414837599686'); - T('21592764541,25000000', '863.71058164'); - T('47801148603152505431027216366549,100000000000000000000000', '478011486.03152505431027216366549'); - T('11423000733021287947376,5', '2284600146604257589475.18575178', '5'); - T('2732203040520419846369019510610,1', '2732203040520419846369019510609.688387071616656538889144285', '1'); - T('568956,96605', '5.889508824590992627401001', '840534'); - T('71266649783967665510339357353436865700959295147,1000000000000000000000000', '71266649783967665510339.357353436865700959295147'); - T('47566615560121136721952891543681047713870191381209033,500000000000000000000000000000', '95133231120242273443905.783087362095427740382762418066'); - T('46719848692300081220895684593,79867', '584970622313346954573173.959119536234', '447174'); - T('6512959508348312854935682614687474683779,45270', '143869218209593833773706264958857404.1037994256595241153200438542903873871', '89045'); - T('5439094235028724828058147496706,1', '5439094235028724828058147496706.08739593', '5'); - T('6914775066832852797746427420897025001305226852,9731571', '710550749394198819260161326562486673662.990985936391792772356968236196619', '9877188'); - T('9132456017491382812010830613993084921418431583790758069448731138967157,10000000000000000000000000000000000000000', '913245601749138281201083061399.3084921418431583790758069448731138967157'); - T('167000488634822153427980339,200', '835002443174110767139901.6950', '209'); - T('141817570803201010469485291685322472531441481,200000', '709087854016005052347426458426612362657.2074050'); - T('588070510408392162256205164465497,78125', '7527302533227419676879426105.1583616', '5624320'); - T('19513055373531609310745811785217,200', '97565276867658046553729058926.085', '662'); - T('138474825950618076159440491355711,250000000000000000000', '553899303802.472304637761965422844'); - T('415063278182543292471143901597284671215994230954413,5000000000000000000000000000000000000', '83012655636508.6584942287803194569342431988461908826'); - T('36464063274630813862074158403502015663924,4479', '8141117051714850158980611387252068690.315695463672930753117541745392976362780', '9949'); - T('77574321944149904065550232031471931458854752374018266928805594322125477,1000000000000000000000000000000000000', '77574321944149904065550232031471931.458854752374018266928805594322125477'); - T('860630077,2', '430315038.403217142', '2'); - T('15558187771473513998987651232806625351751827119199,10000000000', '1555818777147351399898765123280662535175.1827119199'); - T('3231091733918849478252448666476580370445734299,10000000000000000000', '323109173391884947825244866.6476580370445734299'); - T('11956064398957062636192043300176336503346154370545469406163,25000000000000000000', '478242575958282505447681732007053460133.84617482181877624652'); - T('13021206583561217782,1393', '9347599844623989.793252229114225593843', '1438'); - T('1205029771231704090691706271,10', '120502977123170409069170627.1'); - T('39427566041566908772215108783864070289307704169373367199,100000000000000000000000000000000000', '394275660415669087722.151087838640702893077041693733671990'); - T('20653796995853981466925025099001736339,1', '20653796995853981466925025099001736339.01178318512428457087673690149249703', '2'); - T('49185188690848465217210092151,1000000000000000000000000', '49185.188690848465217210092151'); - T('97698380055293281205698719426020,264416813', '369486262794088215584455.74119380979', '553766419'); - T('104240787201124446779050832403,11', '9476435200102222434459166582.0896', '42'); - T('23908923428339619,2000000', '11954461714.1698095'); - T('6443200626654394417539232110121866815091625569790751249399973169,10000000000000000000000000', '644320062665439441753923211012186681509.1625569790751249399973169'); - T('522824108366566300342606573753440692777606807910783,10000000000000', '52282410836656630034260657375344069277.7606807910783'); - T('9331495570471,10000', '933149557.0471'); - T('2288353143307282848483,625000000000000000', '3661.3650292916525575728'); - T('2540011169177460230281,658036', '3859988160491918.7252384368027830049697409', '870300'); - T('201,500', '0.402'); - T('10226950029331489136943365681209055845834606737970478522990929,10000000000000000000000000000000', '1022695002933148913694336568120.9055845834606737970478522990929'); - T('17113571783735766467,6250000000000', '2738171.48539772263472'); - T('607162793632634650613626558,109', '5570300859014996794620427.13759324128530102744', '279'); - T('23435545976038973604189644358770194,65959', '355304749557133576982514052043.999969678005', '66113'); - T('90547763901776187620780219732687,11', '8231614900161471601889110884789.730553504', '14'); - T('538495939889,1000000000', '538.495939889'); - T('892775,1771', '504.1078487171945391982883708896239694983', '2610'); - T('5143213613655381342618850465608,5333', '964412828362156636530817638.4039', '5396'); - T('39901895138105505,1', '39901895138105504.7809060487341642826622382411986', '1'); - T('1381529243092626455345386156196319406364914937,2000000000000000000000000000000000000', '690764621.5463132276726930780981597031824574685'); - T('9499945404778753956432849082641761055489266837114251,100000000000000000000000000000000000000', '94999454047787.53956432849082641761055489266837114251'); - T('83156369636439388647124221367308574466072835786176325890310492691,1000000000000000000000000000000000000000', '83156369636439388647124221.3673085744660728357861763258903104926910'); - T('476709938523129116704811850643225303462101,4991', '95513912747571451954480434911485735015.448006383504104143813484355284523646562', '6199'); - T('157890355707984,275', '574146748029.0327252791231876', '499'); - T('8019262547628511834980873806916156016716,947', '8468070272047002993644006131907239721.9809925284381006401', '5117'); - T('622115359848494409270460619,10000', '62211535984849440927046.0619'); - T('832436043530692186307700916007638657221,9338', '89145003590778773431966257871882486.3162347563616628086057549945343341', '9703'); - T('1197345815215160429787134483429457424748454,3797', '315339956601306407634220301140231083684.08058994774186577044230365470', '5784'); - T('423735152100855061347214859430967270991323541,10000000000000000000000000000000', '42373515210085.5061347214859430967270991323541'); - T('24083749929262503747426239253781575649811815722386688065407,50000000000000000000000000000000000000', '481674998585250074948.52478507563151299623631444773376130814'); - T('5303019589668854255151682937590376324897,10000000000000000000000000000000000', '530301.9589668854255151682937590376324897'); - T('85737211216718643688831414562125117156828541666351591,1000000000000000000000000000000', '85737211216718643688831.414562125117156828541666351591'); - T('528032868848420465249059811366153020793348383745543,100000000000000000000000', '5280328688484204652490598113.66153020793348383745543'); - T('1866752363992468250754020414,35', '53335781828356235735829154.68522878762736138731952941267', '47'); - T('35716735,553', '64587.224236228224605', '625'); - T('217921488209893967858247239220161357646029,31250000', '6973487622716606971463911655045163.444672928'); - T('74900978196398249235645033181449,56659483', '1321949552494120873564007.5145311332967863901290698034953', '95809931'); - T('4181810551795274201109494238031,6850', '610483292232886744687517407.011824823463664815517814', '9863'); - T('173659759502325661822,36351627', '4777221099411.194492670163016336584109466723444167542', '40565652'); - T('975617306643846126337774473247881968707228143,100000', '9756173066438461263377744732478819687072.281430'); - T('107162744108339267900049017055818023,400000000000000000000000000000', '267906.86027084816975012254263954505750'); - T('172824702408627980142888156188664041173157111,5000000000', '34564940481725596028577631237732808.23463142220'); - T('4661,1000', '4.661', '725484239'); - T('85630686880,2563', '33410334.3269603915296445267071067965485682', '2749'); - T('3650614799062559649462274868183699,1000', '3650614799062559649462274868183.6990'); - T('228678,30631', '7.46557409177', '61028'); - T('351824463570227805968918689708954570800044191,500000000000000000000000000000000000000', '703648.927140455611937837379417909141600088382'); - T('488087329866628899580567813575317229184103113,100000000000000000000000000000000000000', '4880873.29866628899580567813575317229184103113'); - T('15364099762357780872271701893453303984731614629318015521954234513,25000000000000000000000000', '614563990494311234890868075738132159389.26458517272062087816938052'); - T('4191173857019885158075164088272787562741,2000000000000000000000000000000000', '2095586.9285099425790375820441363937813705'); - T('891299363389677085414626945889,4000000000000000000', '222824840847.41927135365673647225'); - T('27963428850565537315601806701616541673936819779,10000000000000000000000000000000000000', '2796342885.0565537315601806701616541673936819779'); - T('571401796386043738811955172893452900347780492106439462254983,1000000000000000000000000000000', '571401796386043738811955172893.4529003477804921064394622549830'); - T('366690412973,10000000', '36669.0412973'); - T('12875015217651127,146130874', '88106057.70859296304489358653746605217', '448798288'); - T('24696724779197162265975356937723632,5', '4939344955839432453195071387544726.4'); - T('2985624149040533370866,254972185', '11709607261829.4947382829229', '310816918'); - T('205145083837395729,3524939951', '58198178.3205122545930144839521', '3928265791'); - T('792952739262136340728303572788453059228501933,2000000000000000000000000000000000000', '396476369.6310681703641517863942265296142509665'); - T('1320227697516244557850056741,15625000000000000000', '84494572.6410396517024036314240'); - T('37219214107473809786834936594940667709,10000000000000000000000000', '3721921410747.38097868349365949406677090'); - T('5575556813194831758332268154,56297415', '99037527978768328143.170839265', '60858604'); - T('249706733132241788592404281174823647611951769482541265522444180644991,50000000000000000000000000000000', '4994134662644835771848085623496472952.23903538965082531044888361289982'); - T('295382366467493833160483758,359', '822792107151793407132266.73533894441115275877029700384684359997', '368'); - T('295805371652277510092410438965536011,673881', '438957874835879791969814312861.671439022616798329375629138173', '2521756'); - T('5844753078362685375500413573063352892766873,10000', '584475307836268537550041357306335289276.6873'); - T('638178878607660002139073283695192160794,6631617', '96232770771843428554313870010163.759576887507235421822943361938', '8897582'); - T('22432938154584,39169', '572721748.1831039851864432568917', '41092'); - T('106706350515532352182646089407,29', '3679529328121805247677451358.861708158318085', '61'); - T('1006727,2905', '346.54974185099960', '2920'); - T('506555946665035572178858654593077910567905546515259539016213,62500000000000000000000000000000000000', '8104895146640569154861.738473489246569086488744244152624259408'); - T('5667347843,1', '5667347843.0'); - T('494398222717274926488483225499160,1', '494398222717274926488483225499159.98', '2'); - T('837794972781085082959914787434100934327883671639127,1000000000000000000000000000000000', '837794972781085082.959914787434100934327883671639127'); - T('2557367721562609913879206622896959,50000000000000000000000', '51147354431.25219827758413245793918'); - T('87843192004882899,10', '8784319200488289.9'); - T('19,25', '0.760207454590321431534164054874637479559', '39'); - T('147128541247,43', '3421593982.48867', '44'); - T('368946937,500', '737893.8740'); - T('190832298553383334575954,647488127', '294727100923942.246397290308923302', '2820909477'); - T('2073843380993671359645467586457708477,10', '207384338099367135964546758645770847.7', '90210557'); - T('142023011523698529831928453508889478348921,10000000000000000000000', '14202301152369852983.1928453508889478348921'); - T('131523705761031644569208707101725314627,20000000000000', '6576185288051582228460435.355086265731350'); - T('107614457850081791201223888580314663474567,100000000000000000000000000', '1076144578500817.91201223888580314663474567'); - T('7424203392370085459633617400060995558887,1', '7424203392370085459633617400060995558886.92627', '2'); - T('1150595474009947183249,500000000000', '2301190948.019894366498'); - T('107132561823987752087271387138926902232412924373,100000000000000000000', '1071325618239877520872713871.38926902232412924373'); - T('66592083512795708829,97656250000000', '681902.93517102805840896'); - T('2383461165589395538962556182433727539343280817092285028907,500000000000000000000000000', '4766922331178791077925112364867.455078686561634184570057814'); - T('4752189583313890783247219222481531,10000000000000000000000000000', '475218.9583313890783247219222481531'); - T('742246581737,1', '742246581736.60', '1'); - T('217582569729319048394786382926204527678365,278', '782671114134241181276210010525915567188.36330596838736296846323412', '353'); - T('8,5', '1.6'); - T('77516567,1', '77516567.0', '2529'); - T('187771783050301517419414783195509184163970763,5000000000000000000000000000000000000000', '37554.3566100603034838829566391018368327941526'); - T('75775984617422245988100638579,50000000000000000000', '1515519692.34844491976201277158'); - T('27025750270934149627304743094,27', '1000953713738301838048323818.295980629760086538462', '55'); - - T('45331,5000', '9.0662'); - T('1,2', '0.26678469618283923562166896359509235073451784352063763', '2'); - T('2533,681', '3.719523969530026850479571156532323136048917552796680071910875141219321593975575609179027', '697'); - T('6,1', '5.95670176075546656061641857369584534119416380474162703019059921749378', '4'); - T('1611,263', '6.1254796583797468286994317214330688018450504512208169605280714777631573', '348'); - T('4575219,841429', '5.437439165988931940772741700237239451817319934504577438827546421794517317551497622237902', '905300'); - T('544,87', '6.25275513583617822405786324552333236913767738896504459666064910547852535280664715894565', '90'); - T('9398,2267', '4.14556674388769106671553518476960309922345613865422241156', '3348'); - T('3,1', '3.1912389255634557180255978654316265495460980977830957259345681346972112849133326200582984', '2'); - T('90833,188310', '0.482358876323596164805577916312592462921530658660338105311161525274025', '829071'); - T('79,8', '9.87749219827141149', '9'); - T('0,1', '0.0', '484'); - T('126,13', '9.695091451492871', '20'); - T('2344,401', '5.8453758518246010129661980734406695366765558069122949118835193553349723', '492'); - T('1288,2105', '0.611876458127545613370', '6810'); - T('15,8', '1.91843965975015244765459863481866326921442203181383237784729', '8'); - T('0,1', '0.409838221056570951533841', '1'); - T('1783,21429', '0.0832050036602382863605408078022770284912449098792064253887456750250300671442273197567215669397533539', '37533'); - T('45,8', '5.6372753722674653472810042478599375756026972396886320541634716311399615308115964737620290729', '9'); - T('3731,503', '7.41749596112475033273240678217035352204496655512439751763538750951822', '879'); - T('68,261', '0.2605320118176922', '418'); - T('1,1', '0.873516707890829872596691063080472230824856618229083662104844156119886415612785045', '2'); - T('298,5781', '0.051548', '5872'); - T('1,2', '0.493490546390034810538790', '2'); - T('194103,39860', '4.8696186653773687510967391401128197073966271363341369329403328795737499798898813154928081356102', '67047'); - T('8,1', '8.24255476352493964464539856548405279481376105856089797340403340770555106189715421415058338308', '1'); - T('3504,6943', '0.504680921122223324202661672653248024256463340120222953245027413565995719', '7749'); - T('1,2', '0.491444664060778917796646216056433250881566732430439598453611', '8'); - T('5,1', '5.174287049199459942513839348622840616091614563710554596545393655504425427310533622274177087224827743', '2'); - T('48,17', '2.8244956913919378299574044583308527', '38'); - T('13,2', '6.5123694703010445805148101381793203139145534810051830232704726181238111389305273667', '10'); - T('24566962284749476680485,474039', '51824770292633046.39593999650204923557888735082449292', '494735'); - T('3368493619886411272795065960341766914829350143,646', '5214386408492896707113105201767441044627477.00108781345538244652891489457688743808616951764106898054577612254593670957661783381212694042072880', '646'); - T('2586853155389978187,4', '646713288847494546.759357782181814033868900465999081587869086726952721777767314153318', '7'); - T('7790857,1', '7790857.0819506998029689765', '6'); - T('20316021176247877123927349918982151279842758053,328679', '61811132370026308720445632118213062835906.030056681445118198111988670764482507178630313908793827175849924091992', '379056'); - T('1859,400', '4.6475', '506'); - T('3049623920905,54', '56474517053.79685033296077', '54'); - T('955619588917617544364192167390384622044661,1', '955619588917617544364192167390384622044660.58683083203739003688389119086331771452663428', '1'); - T('23729431076324650550683769,2', '11864715538162325275341884.628306443723097500514117908401946557366479217553160881729', '2'); - T('602177639398434193,12', '50181469949869516.0836841857315775159797349427875', '57'); - T('140119378421058440906693944186090478181701459,23487', '5965826986037316000625620308514943508396.196151063587153500718548824147376690362082681', '32245'); - T('7923555977836074006224698706360493883275129309417457,87511', '90543542844169007395923926207682392879468058980.213424597970479050473902729928963099224064941742', '92677'); - T('54774151891479696845053139444,1', '54774151891479696845053139444.32158102581962967272783934830487680739269', '1'); - T('19487924786960507453065915479,493', '39529259202759650006218895.4949277990322529722833768257687422896', '761'); - T('140444,271', '518.243545484623519007809525661667018545612793583718813418801027794258962294070595146', '447'); - T('448303887586360873569623,41995', '10675172939310891143.460483390962390167622207695401198601781636467015533654852801916441417159108770772582258763991743677', '93301'); - T('5308934360728177543766425862582,19', '279417597933061975987706624346.42105975966853513862473278487385291152772263985624372', '565'); - T('671757917955898917816836249302738,1', '671757917955898917816836249302737.83748346114250347811329609441825552892855517748573774083', '1'); - T('6923438,7041', '983.3032239648939942067850769366628571834182477091616462640', '8574'); - T('8681,1', '8680.554499202744390742254279390116166894742281104651898357648636131885616626172960139623', '1'); - T('8296090754,1', '8296090753.77808799719854507879129386685898155948713328498119893342154782002735', '1'); - T('449550842508002469586005256134656634,263', '1709318792806093040250970555645082.25858528116754388519315876056635084792675358257245998246599064750318560', '313'); - T('2384258830294857351266823482459306002060,89', '26789425059492779227717117780441640472.584265827825756685558321547464547903622405705748281747905025875364873', '244'); - T('3099059767,369', '8398535.95393019688934', '716'); - T('1118567,8', '139820.8675991643206836269', '11'); - T('54501975717322825161701857159922629,617907', '88204172662427881803737224468.9291899913754653160726311160386', '687952'); - T('292065600267078038277,360587', '809972628705632.866068382943176993810432', '473708'); - T('60865545773557068449101563,352490', '172673113488487810857.33372010556289892591424474886122627772863302106575690', '362845'); - T('43910364284205515720513,57', '770357268143956416149.350857167011834016095423796125853', '82'); - T('2768,1', '2768.0056248196618573', '9'); - T('24707,61104', '0.40434341444406601572079746049739999661378', '138159'); - T('62398,1', '62398.049758341992', '3'); - T('106402023318778195146268840340215196296057694978,1711', '62187038760244415631951397042790880360057098.175336027856651274924796443646769049038890419014107906', '5296'); - T('0,1', '0.0', '50251'); - T('1,1', '0.977479149688', '1'); - T('286761116711598046630263181694725313446508186,9', '31862346301288671847807020188302812605167576.2167633900367016409879668147081261089855665558671456', '11'); - T('493854667771423,1', '493854667771423.254959180508897738136194526024260', '1'); - T('59770,50369', '1.186642577786729', '657935'); - T('50670898227060364508301169119,2', '25335449113530182254150584559.576505095152042462067029896885530025096832963272421507985849118924294', '2'); - T('4,7', '0.539885108909598446106149715395519', '7'); - T('7436629,41', '181381.195088', '90'); - T('31167367322965637719365091694651,71', '438977004548811798864297066121.844953873132264903410589240583520033403555493637587973009095', '84'); - T('2598472288366433446623870668432105,96', '27067419670483681735665319462834.427090009020254549190095557820154764669675729935', '626'); - T('1,1', '0.922067456510097025954699039976943', '5'); - T('294229548281191410,241', '1220869494942702.94605133401949538', '427'); - T('241625399655500291,253225', '954192515176.227825056771711519082815948456167', '682290'); - T('1195655939518580983871186713470668235614408053376357058667333,423677', '2822093102808462540735481778502652340378184450362793020.78548752891313966613182857481605202157821315686948713904923560', '424333'); - T('2618811517,1', '2618811516.931208050937507288604652795688621819503341112255782020992459900662114311111088545100179', '5'); - T('4131144162729913,1055', '3915776457563.8985781325507805186370493303', '1489'); - T('582466848848638,23255', '25046951143.7814663542320116521870304194984491696195', '27057'); - T('6455766824570,83', '77780323187.590347796893974704799', '265'); - T('53455832886999353767497945728788540143157488885248223281,59', '906031065881344979110134673369297290561991337038105479.336253413994200448040788970880967169296448933722265614219121230464551', '60'); - T('34684817227394711572160619503375408,71983', '481847342114036808304191538326.7633746855360502891294804519887966739426931804349338553', '73666'); - T('170771191765582963,51940', '3287855059021.6203889101733530', '91639'); - T('59489,802', '74.175817224433680910672', '860'); - T('79898665639094718393482676981,4', '19974666409773679598370669245.22684378060267947984678026612709838', '8'); - T('7517924493744156919811183,286', '26286449278825723495843.297196347604166787095605578145803015483232937733237769524617002712850157698634151602400', '475'); - T('27132562808975269,342', '79334978973611.897660511616985808318420102330091', '4677'); - T('60272291702537718907780263,10573', '5700585614540595754069.8253097510065828573367376877437092127528369415566888', '94840'); - T('1,2', '0.51', '2'); - T('216897821528130673257,53', '4092411726945861759.566036761275728746134069907357892874', '94'); - T('3163857791132342485290267882552370855322887,545326', '5801773234968335427414551814056859301.26729149169554685226093744763268316765389373680859617450067621955512471523', '888336'); - T('31893079,51', '625354.490182800115515495968616197567291321495007057703788292149', '218'); - T('45189870731246404,15181', '2976738734684.566497593258376965224195020258733405076577662', '20203'); - T('239861,472', '508.180083770484715', '880'); - T('33499101710863017,2', '16749550855431508.69914410240779698148517248391235817', '2'); - T('2141207850036582856465048433,329419', '6499952492225957994120.097605177654579789782944540260769802900107062218301666704054646611', '330997'); - T('22193392902987826122559599877876897,58', '382644705223928036595855170308222.362212252887839179829725912772009160714747747554090412224', '62'); - T('90543357024529043405978879144258275090780578649,2', '45271678512264521702989439572129137545390289324.6726991725126164245656717069363903985212602605238565780325239301101476316356964391514481', '2'); - T('37600782476781126884139203431600472982966839780023429919897,1', '37600782476781126884139203431600472982966839780023429919897.24287512927437642710013783433910340431924976940125246127078', '1'); - T('64961559075,8', '8120194884.3724681021129254915288817', '8'); - T('620318090519481009,8560', '72467066649472.0804906532075275', '9472'); - T('8163482,849', '9615.4087173', '869'); - T('7377,17', '433.9414759956934328436361859748327855391332306426', '49'); - T('611,3', '203.6725705400', '8'); - T('89171,1000', '89.171', '55217'); - T('51270493819699846152993496,65', '788776827995382248507592.24720791353857126515444468431677377534114643955968022584267028953553278893503', '65'); - T('952437397670186727964934896572895455572,2039', '467110052805388292282949924753749610.383521318013377289176993384359404280274806527340713677500761934497938212', '6194'); - T('115107039410294795197,2', '57553519705147397598.52569349659929993375319668989846544486260551837544', '2'); - T('22,1', '22.365923', '1'); - T('1990972334583731,2697', '738217402515.2877271240567969345615', '8197'); - T('85750361597402603631603273118666,21', '4083350552257266839600155862793.619499612682355814294752644386270178753962225708928418572214290985761742439416042', '70'); - T('8635686977961,268079', '32213216.9172557343179410005696124075', '549886'); - T('66531984494429,15', '4435465632961.93350703161015018', '61'); - T('0,1', '0.18167201504679', '2'); - T('10529,27', '389.9630', '38'); - T('2934260971563580194491472182109802377517454,5583', '525570655841586995251920505482679988808.42808527488170902078803003616929756884458514431718406108322520', '8718'); - T('5108200665966863073353288070176030051511632153746,7109', '718554039382031660339469414851038127938054881.66352511082081319890207684459946872434550056671', '8537'); - T('1,3', '0.3465753923796479102166177077330555737271920233165265624927052833', '5'); - T('16875360180472543035698945274090527182525755485603,531840', '31730144743668289402261855584556496657877849.51414523164777408433594873822056099197640611496223398710564', '965422'); - T('114634251053546388025309,12', '9552854254462199002109.0865339064408202873873764199', '18'); - T('183409270415172374488271,315', '582251652111658331708.79682520032387306155850071007553282614176099535489744326559', '2814'); - T('2,1', '1.94', '2'); - T('182903874405130637649185200486,34217', '5345409428212018518548826.6208609757260577676285922746405052706839876854656056193106274576096695371939222', '61801'); - T('5095786559079370391313919886663340905109333948827,1', '5095786559079370391313919886663340905109333948827.456737121375509845692166705486257168106577499425369656222842111805457906', '1'); - T('781826702775423639656188,34805', '22463057111777722731.10725470482914830289184811512575254583329325', '310121'); - T('17,21', '0.81', '24'); - T('642449847968682862604540,1', '642449847968682862604539.50719286706858188848922666523', '1'); - T('2232932,29507', '75.6746534717435458614870249', '35207'); - T('188417858747526768690461499725073001733,3250', '57974725768469774981680461453868615.917846152487377706532523813340718234379', '80249'); - T('2512235463,11', '228385042.090496856693737836687110835528901075269402072', '104'); - T('844375191952747415306,142731', '5915850039253893.09474465953436249', '562376'); - T('5398821357017249826283471756217066750564780611585,71', '76039737422778166567372841636860095078377191712.464788995235824488719493358582451477426725287196562573274150399', '20788'); - T('2678627417245,1', '2678627417244.5539595554458498441512623087660882055', '1'); - T('5937979,886', '6702.0079', '913'); - T('93,5', '18.60', '58090'); - T('726330087886628639542796583938445152543562444469390135628,1', '726330087886628639542796583938445152543562444469390135627.99091884025141082950358349062777831341655621667599142195853205636838136485595', '15'); - T('80273,1', '80273.01388365199', '14'); - T('65,4221', '0.0153991811534756810765664526560', '9509'); - T('537861620698135920565351,1', '537861620698135920565351.273301952640253473856107229450', '1'); - T('21589045207819,26', '830347892608.4230723287683895554447840899', '972'); - T('577595426226192934612626685,1', '577595426226192934612626685.0286363631751288945392409001532685640518541279892202642453992056486281846257604', '1'); - T('1675,4', '418.7484751712328113764323953', '26'); - T('19556084872373,345', '56684303977.892786055289803608591940101556713', '352'); - T('19,7', '2.71902394', '9'); - T('5529474308079205564524774009772451131,1', '5529474308079205564524774009772451130.51761287042846642080574332180546078965538812745557608038', '1'); - T('209346348003047912995736,11471', '18250052131727653473.6061372099726072866405051', '11515'); - T('776986810,1', '776986810.1594219281755754257102', '1'); - T('244164980163078814691433439911704751189317,21291', '11467990238273393203298738429933058625.20863275581273538021661214252911409518043401674563445995768940072042555829137104208000', '113505'); - T('1335963025004702580265523343526,35', '38170372142991502293300666957.8857742784242579029128174713642', '173'); - T('29021817758099544970572197889,34', '853582875238221910899182290.852626803328881395374231956097046035', '36'); - T('25607,5205', '4.919692611', '9786'); - T('101904493912965638284134197405,2', '50952246956482819142067098702.5713155960069352658952883488314532333725811763112', '2'); - T('137744409497385418682848482707483773,4443', '31002567971502457502329165587999.94890844640229953492819622422667457964936363221', '4647'); - T('3153045199217207368076364837,1', '3153045199217207368076364836.85821697552566256162690119145512', '1'); - T('1,1', '0.98820163097883359337765041974973089352398769777740690629811505014740114696', '9'); - T('6347903215,1', '6347903214.98333714357446671154140415601041950', '1'); - T('7865439544,1', '7865439543.64842980606939915292766451085112', '1'); - T('3237690453781443948931054435307536847022633061,63987', '50599191301068091158064207343796971994665.0579180143954472511934222589835395025939549529049341055670604818599814635787218355355744623771', '68323'); - T('16547,500', '33.094', '35944'); - T('198,25', '7.92', '879'); - T('48136900151439,5', '9627380030287.78227662306223327607211090', '8'); - T('810188023876443978252916,240291', '3371695252325072425.73760981476647528684572725155145126012755201643744911640005908457166013810637', '594953'); - T('29122019,133', '218962.54888005640775', '570'); - T('42600929421,11', '3872811765.545957776549217228', '37'); - T('1835567,2179', '842.389628282959984577403026165282107385446131435327480129911', '9427'); - T('10715045877924720610637328562303816539523,609238', '17587619087983219383290813380491395.0533666645856507178226823958979342511581839203713355424821734358638', '614310'); - T('5255724839155,1', '5255724839155.35294116304683192133028279893695924503895137408737492483521789962049', '1'); - T('1,1', '0.8978468872480801693946442849195311956942575461556562092198261658', '2'); - T('262004018028579753610099210362465283,291450', '898967294659734958346540436995.935093498025522742208259700262919468727383538368456777271618508283980760681', '449006'); - T('7719603971110112789459092487129510355,11', '701782179191828435405372044284500941.367257069803941074325532535698775501470540336095', '11'); - T('191185328300455108074421,29218', '6543409141640601960.244404134198278885577292621401052797106803852078359839960114', '36394'); - T('10465166381522661,74', '141421167317873.7972970342414003516709434322011311188209619349951980125136084535342139027758', '240'); - T('7902040135126365394659608,1', '7902040135126365394659608.077726021750747291286722149059246102412021295790775165293274649572871360', '2'); - T('116492401903663116224172913052825042248229707047214,155', '751563883249439459510792987437580917730514239014.28387332355496359942769428955017512246414862817961697422654477855510889819244572169952641417683018', '190'); - T('1161,2', '580.6213', '2'); - T('4999366848067334,51', '98026800942496.74502522271320672697996', '83'); - T('155052967013059677537669297640306143,21064', '7361040970995996844743130347526.877278769440031446596394275560016869303377072002659486154804941895737040887923', '42555'); - T('4915589395,87363', '56266.26140356895501876786714596805105223390662', '96564'); - T('1996814563251707684865255053446343344056628802563603747544300835419,35111', '56871480825146184525227280722461432145385457621930555881185407.29170344881337650276681031440473191594935108291821236856625185470036', '36542'); - T('350611450,530451', '660.96859087832849141227', '828317'); - T('595025607,730', '815103.5712333824167995605685', '994'); - T('91,1', '90.9474373813', '7'); - T('520640397828785313386029881258886527,57796', '9008242747400950124334380947797.19231434781804453269843126509668', '58523'); - T('1,1', '0.7', '1'); - T('2432192303,2', '1216096151.53824349736', '2'); - T('182088255527725530185924136198820811105,5994', '30378421008963218249236592625762564.415248549875433131587553202118349363105537060676313739107816391730307', '6684'); - T('2852721959,44162', '64596.75646483388', '93026'); - T('22240697755,6364', '3494767.08909490781227389975332975981042527092609989513703885638542988746801587017415743745', '31237'); - T('638,89', '7.16857182142575386243468931653698455419954180851', '119'); - T('6365209086547966173670265664612892931202087175837077590,1', '6365209086547966173670265664612892931202087175837077590.307044947141883547127069233591193089391933585385866946904448320602686297092942', '1'); - T('447415936707462873637430969941367936988468633406659,17686', '25297746053797516320108049866638467544298803200.6479136045407721264362934913054716728108054995868628807078498679271321502402341540158940227697648', '41076'); - T('556766636479654782236989106,6405', '86926875328595594416391.74176424353622475555994', '9157'); - T('16,5', '3.1934183459202528284347244885465199377401', '11'); - T('69366814480303229226256659588662,1', '69366814480303229226256659588661.85385468147818494724215139782478923263860687041151715994378816519729624732503782164002', '3'); - T('206872032674988736528870510540636795271597443,1590', '130108196650936312282308497195369053629935.4987418677695164526182963222692423472284907274366595734056060718094172585913', '1956'); - T('3296663,352883', '9.342085053684726', '920944'); - T('1901467916531,38371', '49554817.87107450941333', '87559'); - T('35236497328086505353582711620562,1', '35236497328086505353582711620561.9401992755513250318288838292367937207', '1'); - T('2156393081917549337270143486668378869841014072477,9077', '237566716086542837641306983217844978499615960.3918695610681834957819094833282531753966844370947863377761477800766935462547138240866128882311', '40639'); - T('80227083104542559289996173436021300960849044229167256111161292357,10', '8022708310454255928999617343602130096084904422916725611116129235.70048092770865523338951907230464003175896000457756548821368253282172627341860630323893179952355', '40'); - T('14646654367694222221940854473824917,2', '7323327183847111110970427236912458.2637426177732172114494620983511178446999858023257859333622402678207150389963999824040809470078503', '2'); - T('2,3', '0.663', '7'); - T('27963875636216786940514230252872638062266663119606641289638039128214075044862928694740648165,713284', '39204406149888104794884268051537169012997155578432491531617194733393816551139418092569.927497322247096619019101878129041174149753190001476011543505686258781332861014187754125', '898421'); - T('11522420634707,298017', '38663635.41243284778334005538792', '304106'); - T('157263777436938477441584837,17', '9250810437466969261269696.2904128954351819175969727761318768772961877204484176247921068491788133398523250', '23'); - T('2276529,37', '61527.810269929938376521343109850668138767761631527', '52'); - T('4677043,136', '34390.022052748042318976850337684966011768593413342120365', '222'); - T('49253974531233847037400608287727,1', '49253974531233847037400608287727.060540048192515048222477969304021589766722976717090718681939735386', '2'); - T('2160607509685172123,79', '27349462147913571.177199397582134523253856176684228053461559176285030516574874756952', '105'); - T('78052129404159796516380569,250594', '311468468535399077856.53514848720455080879540146109259080789155707071914631548609', '287111'); - T('40103944258853846056256735013082291791174170619985429502015036,737', '54415121111063563169954864332540423054510407896859470151987.83718927418708473127959038816066084224533120453216547984773003205060234', '775'); - T('9213413,115215', '79.967131015930047430988598240344339327429', '146382'); - T('1313141867085165037876810634168452559775493,28', '46897923824470179924171808363159019991981.892596651603443078583217313699611602451988188888733555496625642547664131296842', '37'); - T('8533218224569738665099332127984434063538646794116239739804343876879184515887519,24546', '347641905995670930705586740323654936182622292598233510136248019102060804851.605923571866483092045258463240562511296361654119265411211336042019198176927208580711456953', '79843'); - T('214162254366433222852,219', '977909837289649419.41552439968900800332241887585088624500224888', '461'); - T('1524141790335346850,3649', '417687528181788.6681282293544866931614625951230414', '6410'); - T('8305836543976713538118348277180340222586336935040977205971736934,1289', '6443628040323284358509191836447121972526250531451495117123147.349883517025494372135199719073787587581983279739058143878476420396334557651148941312712594381002', '2421'); - T('12625344856297573143960857366368117442436018000143718905329627,17413', '725052825836878949288511879995871902741401137089744380941.2293688631111047258667617297890350092651444230980392383355854871853724988293848', '29957'); - T('49799008287031995307745299546,201', '247756260134487538844503977.8407984495287628804649309589792969473029', '886'); - T('44230,1', '44229.8640940746684332711646269', '2'); - T('695341392387473187615708533688053494612321911735732263004072039989,12', '57945116032289432301309044474004457884360159311311021917006003332.419123618616690370149051021044082250337110267237814259673029440937922237595010738707535760151768', '12'); - T('1048610192448716663976442300874466291435985376302590107183025006833039111667021956,3711', '282568092818301445426149905921440660586360920588140691776616816715990059732423.05470231283500539106621844843522303682651413708748707464182560598910098632280380429225', '4185'); - T('564179730,41', '13760481.2195468173', '99'); - T('1535358,3677', '417.55724768958258887221999802356746577772806585929098618110903690609575310', '4909'); - T('9432220623393,1', '9432220623393.0361844246328616666243628939101171241757', '2'); - T('2564823,38662', '66.33963581834778293420676990546', '54629'); - T('1,10', '0.1', '5209'); - T('45861865321787548161276827663395729,7180', '6387446423647290830261396610500.797910864788713778286585490522140448230159951171', '8297'); - T('19345,2', '9672.47045', '2'); - T('1621235027393185648213757671997956512719559180709550368213,46478', '34881772610550919751576179525753184575918911758456697.10858900988357153434887154833422609206799928958299650146498864771982234211', '152688'); - T('1,10', '0.10', '571'); - T('14037083559893857042646225061800058376951690953612422931418795682,15209', '922945858366352622963128743625488748566749355882202835914182.1080938918800941797499465697485803927015797682325657123828892678', '74299'); - T('214990,3', '71663.30911497342580428530022113794390987325723075', '5'); - T('307488726044879510002660981395,529', '581264132409980170137355352.35349658712969215704186070305948528667158789544493835023232021586095779408143518', '1469'); - T('7986140723,12950', '616690.4033204624183575117582891638', '45213'); - T('186442582640609698457372644742287508248773821,608', '306648984606265951410152376220867612251272.73190810532616003961033029139820173162304625273178016', '636'); - T('402342388451303346208638031,162144', '2481389311052541852974.134294207606755500782850967202793230491650542666651668050739706230056896340969275037488', '320928'); - T('78241853523003572280986839112347001594408862797249859718,8531', '9171475034931845303128219330951471292276270401740693.906693228378227059405060756165776641079149233773669394894276125419046799506956656383', '12127'); - T('400,2969', '0.1347255413647743121776508902102719647076843003868088', '3453'); - T('3923238860902840839626291104694492525371269916682029,446965', '8777507994815792824105446969437187532292841534.97931381652037574964251891911468943081965790985704', '758290'); - T('35646747251,457', '78001635.1225357380236558357960166239621978669699089151772761258494596715203598593743346261565262019417704', '706'); - T('2683468334240429143171526,38457', '69778410542695195755.558831942122856930461609481624295211857604995876954854137975872813613', '199109'); - T('857821143787449574697977573812019342762480425225461812882950230507,2', '428910571893724787348988786906009671381240212612730906441475115253.25776495579890393989612727541338942514948359370113611786812146845315324593620', '2'); - T('201510238869457784262139645580084027788,1', '201510238869457784262139645580084027788.433065800897233736582903597431923327846329', '1'); - T('38608781052273175033830581491417961344934552,7', '5515540150324739290547225927345423049276364.575944943254543085974802343286568634911541631917053639543590794169', '10'); - T('292623487,68388', '4278.87183424', '74336'); - T('793792872031,9', '88199208003.45664265953995372', '9'); - T('10201,1338', '7.6240657658623830734267630', '54376'); - T('22992066679053461303,552597', '41607295513825.556966469235264236204961015671182279735261042008326101516531', '606489'); - T('314113031689,42767', '7344752.5355764958912381877823', '945136'); - T('22786552661743835954280087582255152144518703,34', '670192725345406939831767281831033886603491.26455918123167096367780477819074132459587344526801847361091447403001267800', '64'); - T('17573479348385910412048883205603677,38771', '453263504897627360966931036228.20347682580886838529942674548009547499946688868816182510007585234388', '46381'); - T('75473594247,8350', '9038753.802035928500', '73489'); - T('261517467644150958487,5053', '51754891677053425.3882842133773049001841242098677038847975074900593966523958', '7047'); - T('7134449311548606923639346547,1', '7134449311548606923639346547.112804404073069945060714830706555901856818370048110134601278840469', '1'); - T('37806932836871856297021727733724124238343972270363,43', '879230996206322239465621575202886610194045866752.62806530892044737038187480030241392596263055431188445162729153784215811022', '47'); - T('7333274067095990846,1', '7333274067095990846.351138936980520182083044922', '1'); - T('1216547636340968,255', '4770775044474.3843159801874529573386574217', '767'); - T('504431408656563019198096470328071071180957480250246834023199409,5242', '96228807450698782754310658208330994120747325496040983216939.986455552080186728491640321801261184902364920421299986856683243744', '5930'); - T('11078314997991539069143123025050347457581,2', '5539157498995769534571561512525173728790.5320269718590661495828504888068010731730753957949', '8'); - T('1564271697783336061228018441408289997,3440', '454730144704458157333726291107061.0456395345856333688836200385200217', '4460'); - T('186593194550751772022221789989,2117', '88140384766533666519707978.265942337331545158189132168003333366607627322769794', '3564'); - T('7628876005219,132254', '57683518.1183102212280', '310461'); - T('85478687995924280983954436,2811', '30408640340065557091410.329420030100682263063726019261554456880639675662867805458887878168290', '4191'); - T('6470726792910130860277335858754095217788330802569343716026302897754173285980528060,691', '9364293477438684312991802979383639967855760929912219560095952095157993177974714.99276540727387009268720823298457991691888717815907421435881615376920831023127122321923253385357011', '939'); - T('4523198057239453672050446673969751,1', '4523198057239453672050446673969750.982888715114504843151109238914542962690753455459880331059163673987075278756', '15'); - T('73447073503191914407442232,2281', '32199506139058270235616.93643140080846067688709303', '6162'); - T('15,2', '7.68', '2'); - T('78438145023100581358518585507076222143917169875433,211', '371744763142656783689661542687565033857427345381.19905314983923110968122150777959792708922490953099', '571'); - T('1,2', '0.5', '7499'); - T('1150752865721854191422680744753413845124279744986,33211', '34649750556196868249154820533962056099613975.6401794585917699904699257964671446961247221389248149631404474350964027899932797090', '288970'); - T('16076493965732650145955199661686357106768139698004095413613703910,17831', '901603609765725430203308825174491453466891352027597746262896.2991419437676397998410373969724327013846829822983652684993660181094261958331254042736453820712', '526347'); - T('59952990463187638,6003', '9987171491452.21355988365672831891871115833105277946211529145', '8517'); - T('437481101068975804785076879586290013500861083645889947003529075931870456655071,479', '913321714131473496419784717299144078289897878175135588733881160609332894895.7640894704400779282366881441709170514130408442820253311598876929674239971303006388', '571'); - T('942821117939,1', '942821117939.0565371890037804928059719232795905869562990', '2'); - T('2935001420859380000157762707121042737,1', '2935001420859380000157762707121042736.786463962708882551445456874895215017511777450740305104656019625159421350155320318', '2'); - T('1202935830992033229631564824298161983619110510518805373783051328257731091663742,273', '4406358355282173002313424264828432174428976229006613090780407795815864804629.091573522116851474330839252731895239804995755007457036768565079804281386796112572872744', '988'); - T('214575955168277704587734045462020765792071421909315615775398203182854444483,74', '2899675069841590602536946560297577916109073269044805618586462205173708709.230122092385266218497768440824927539562064322829675284011146374975633484236446356139989037833789440', '77'); - T('50045992670555904787210785904349993086628482049506558835722589483755503086379483349,2470', '20261535494152188172959832349939268456124891518018849731061777118929353476266997.3072874276195536175288188310939039502675866973828697179032965565983562956493102277329078', '7679'); - T('108,19', '5.682899045', '20'); - T('95920780265488699585348723900916407585247076296,1', '95920780265488699585348723900916407585247076295.9722011782231104515584864013490244939631472605433519900458718986879', '11'); - T('553600997,74', '7481094.55435674169522', '77'); - T('144433407482676852197679175735237771398114384568707349,171', '844639809840215509927948396112501587123475933150335.374342960334521507675621856380306927386460319339374458276206878079117', '173'); - T('6868766813211978712457243,8542', '804116929666586128828.991219864750604264260222291459642492956899214044143458845929414919104910105083368993', '8858'); - T('1208445098905305130465909241337086457990767085995,831', '1454205895192906294182802937830428950650742582.42478544512467032570845257550424907273378267749042187915529412467328062395677178', '847'); - T('71541469,14', '5110104.926816824', '14'); - T('85305914129449392893425526497554757292362463826540038888586101763289670816704873,1716', '49712071171007804716448442014892049704173929968846176508500059302616358284793.0495345021247989668017828545182900215671406666272584768815635473370187911747761623186498587', '1955'); - T('34910355329147790705808594414928780898400374709520341716387506640744,260471', '134027800903547000264169886148280541397700222710091878621372462.349912274303723867421927305257380152124131927422266182255099973219', '500555'); - T('2443149449559899,68934', '35441863950.44388835629755412356920533972949735', '72105'); - T('10235833030110696450984055472910862445487735415,46713', '219121722649170390490528449744415097413733.5520090766481292920641152585608933353122716914574714147115271201821924', '81445'); - T('2412282,65', '37112.030602327213004965512285789841303110099812346432158134090838533603521058186494', '68'); - T('197727336539381948963943498780602681817294393124640440907866490545352,205', '964523592875033897385090237954159423498997039632392394672519466074.8877983219803431837713331765228187870876208300323215077046996150117195232993', '319'); - T('15,2', '7.5', '68659'); - T('29693788745631893429990333506515902428051472103452,706235', '42045195643988040000835888205081739687287478.110617570638404585755831163301839410670137680785270602419771', '744617'); - T('73297180366617098,1', '73297180366617098.3144078057048487400', '1'); - T('1183788966238,17', '69634645072.82347802778257521139329875246046832067292347716607881216167245956951211505074357948', '580'); - T('337857977447058978741478048573512513964055992298298429352553483782737183,5899', '57273771392957955372347524762419480244796743905458286040439648039114.626716392720723625021095618796943542634113675561622196537826531821852407006351', '373605'); - T('59745671209268865703423430945,2', '29872835604634432851711715472.453145834917249137580363606422723099328289141421318324960362064961', '6'); - T('859671161301,148', '5808588927.709477965543', '158'); - T('327826595930709915652253567185,117', '2801936717356495005574816813.547008571112938049893857162154471', '2682'); - T('208334,583', '357.34820', '985'); - T('417920309434403655587245399148447,5', '83584061886880731117449079829689.3970122523691827620394154188956126026896151043485425601', '11'); - T('332161,36', '9226.69454628762590761188160545639599510876405724295839599630525', '95'); - T('492939727089,697975', '706242.669277552920397338754', '908453'); - T('1060742245237932,1', '1060742245237932.1437804740224071805053424640287668142484799633802423091065073873258946063378900279156089046', '1'); - T('43273220994074199614838155038679231161,1576', '27457627534311040364745022232664486.777284267145378185527688171290545838090904705362680992', '21199'); - T('37269,200', '186.345', '5642'); - T('10102884,718535', '14.060392326052129', '967773'); - T('1219084532009380132581392727265570983021563997,14', '87077466572098580898670909090397927358683142.64373446162321728317853561861789635745516311592864', '32'); - T('171,307', '0.557', '460'); - T('356651164544964166146468975252,5', '71330232908992833229293795050.392421805278026288006060731316131740551778431198546677842557461594293258596467893254118405', '5'); - T('2206833385925938227905409311,36', '61300927386831617441816925.3056000492614958215838075939699', '95'); - T('2717956424176196011003730333667350,1', '2717956424176196011003730333667349.7306970440606935095598372413709729268', '1'); - T('5785393455764129633036790208876423850860836737707710175673874728149225089964815672236,7767', '744868476344036260208161479190990582060105154848424124587855636429667193248978456.577314278497503536146945605079240467181174559062273212358677378627319841643644350778240', '76564'); - T('1161,5', '232.1980', '44'); - T('24726923024624909624212763782,25299', '977387368062963343381665.8279773904190662818049691495617687914', '309921'); - T('90987255907509062168543931363687667620909919141734393421873391,368455', '246942654890038300928319418555013957256408297191609269576.6739249026294236002555892691179015779033299594359428884187399481034374064629205214720091827', '444997'); - T('6107945601448519394102630769235213774292217827152610948371675819819794650452964,1', '6107945601448519394102630769235213774292217827152610948371675819819794650452963.911972351804484891326252430492737744797210771982506527128972981079255477625007979629605229', '2'); - T('60582631603433937,8795', '6888303763892.4317225732362317829730210699185957', '13023'); - T('924269334814001,207', '4465069250309.1835743819175830981731288956258299854260859884448829672511937457501', '293'); - T('6639539158116313497,206', '32230772612215114.0631244318936864176600857945579315355413334651806017', '294'); - T('5041241320711878795159,22', '229147332759630854325.410203402656522969600', '34'); - T('583,1', '583.3709375101662808436673731501019705754894240048302559234903760275308517229172', '1'); - T('78633259182155920440744871,101874', '771867789447316493322.58349529813193835020381', '205541'); - T('82102,271', '302.9594088297030760145', '393'); - T('14074604229494197,668215', '21062987555.64331390345832', '882097'); - T('38059055655073430300661325288520231229,4615', '8246815959929237334921197245616518.14279523235188926660945402784286683812836715240105189956436644363941258265156731324437', '9220'); - T('486761604513222981,17381', '28005385450389.6772912944793568949303', '31501'); - T('175551139999215326573815807,242', '725417933881055068486842.1776848404920362490446391323254203047651712', '654'); - T('83,1', '83.4546729624154107891414754194986886501010566249251149259469106168', '1'); - T('414475,1', '414474.886867910455898589', '2'); - T('10888695234363590494551796761105710263060721374178557358201,12', '907391269530299207879316396758809188588393447848213113183.416301978225238330934261320589911002579118705166590028299156884288694543667054408155068376964606', '79'); - T('286464034178,3', '95488011392.68165187332682534905110794125997507098491840188910335502196279864989624086867102546849244', '4'); - T('668447227940,43947', '15210303.955673880085109578181067218136526836139659839', '95990'); - T('1967,6688', '0.2941088588343008701843', '9768'); - T('75109477871,485', '154864902.826805976232816926890145049168468569260391930749888426437423962', '607'); - T('213183802966400860090647,263', '810584802153615437607.022810961591907292757102947541669', '598'); - T('43056714838957186,32235', '1335713194942.05633628090090583329650340', '42219'); - T('268353852074,5', '53670770414.80032170547125902473828206966175034334621779372380824973952480291058107718671403832311691055877', '170'); - T('2186335470375799,701', '3118880842190.868759139435558849448310039566842312194008045', '2332'); - T('57411860,1', '57411859.9022270896768046667038700171202296361618483869857700616072411266642815342383915741', '2'); - T('267977324713872263310162785716701711718,1', '267977324713872263310162785716701711717.723363678989761781788396613638357558534985574238', '1'); - T('1,1', '0.93975044', '2'); - T('5220050569,33611', '155307.8030704234564212140039371642554614853869565892270988882219659485221018', '40474'); - T('929196388431713792942501463987504635208031773362379819037,10', '92919638843171379294250146398750463520803177336237981903.6998915282781857375325494762319240056440144680509967422813830936344214429604941', '161'); - T('135189175314691708540514427,34', '3976152215137991427662189.029089859359115789727429472083152955', '44'); - T('178496793807305,3', '59498931269101.67341651289764334798299', '10'); - T('28953864542244521672518662959329064963,1302', '22237991199880585001934456958010034.533794189847734064794558196958783605867923015359980997857492', '7709'); - T('63453473492536727313152722,1', '63453473492536727313152722.117501523352379698983442205150925604583299973094118972659206526799924556265155676677565655996784819', '1'); - T('2354616796181372,3', '784872265393790.7899857377275372165161613720867003677895', '3'); - T('751530355586715733980909778114787014730961080,9', '83503372842968414886767753123865223858995675.55044820224824632303844521455280789663171560785577862318186544211959819', '9'); - T('22356002,299325', '74.68805478994431561057', '475984'); - T('1004346799,3847', '261072.7317390373573439501681537210331007400524043782883748343985532566718630458', '6781'); - T('153494881923896158957371,262882', '583892704422121556.2776112476168651952528665744272702680374729523657500274346100536469900767949261833977217955', '303274'); - T('914429817632267,109905', '8320183955.5276557027198219649678748529779134912036046830590971420068279283602748367072877', '158163'); - T('9787288468125405218949937571075629551994420536796208677387264,5', '1957457693625081043789987514215125910398884107359241735477452.8020344719128402729740667465646566172893416633248347553225784565', '9'); - T('972383851579928284342475475240744,1', '972383851579928284342475475240743.93833057061207062377573942707899328841206929761487155707619', '1'); - T('227161,15754', '14.4192586', '42794'); - T('24,43', '0.55814928', '50'); - T('86815,883', '98.318233883469928701242143703889452452189640274700389087359375180495206739', '1295'); - T('158102075545494626716142158943501696850901702,27', '5855632427610912100597857738648210994477840.8148706240869250708802459205761650371721955732529677375775213714657834564033767693895', '53'); - T('4573874572374703,123057', '37168747591.560845786911529343095322680071068130368028', '713297'); - T('94137508309,1', '94137508309.12944203063142389', '2'); - T('128263524729405205764013306079835664513219670002964257195470632782718792,96061', '1335229955230584792621493697544640015336293292834389161006762711014.03058473261439886528254630252502628596554777041358913090264220653599909490115329', '343998'); - T('62696361050395475983517,313445', '200023484344607430.278093445431579320407235', '369284'); - T('11477001729,2', '5738500864.606603032325764061', '2'); - T('6522584,7473', '872.8200187578967040279', '9244'); - T('52287796137932885846742481073302755432,37439', '1396613054246451183171091136870716.510376879576631687165374051269033365927122943423452', '44514'); - T('11042,541', '20.41035109316777251868202719496081724', '7581'); - T('3607458421641129939414052,74321', '48538884321270299638.245610258206316802894', '274601'); - T('5695785474134027899942879,1422', '4005475016971890224994.99226471327230623639080467989', '2042'); - T('8878654273655,9012', '985203536.801486935043294', '9665'); - T('65,16', '4.06247646638986069242804', '411'); - T('29908,3', '9969.299545', '6'); - T('3234129973440988418535787398987835234217977885694939183658,1', '3234129973440988418535787398987835234217977885694939183658.0555777579527219596665429746310422846678601273328325482789110754280233239741', '1'); - T('38763,524', '73.97519', '728'); - T('7,1', '6.56', '1'); - T('287773507776094924831763292813488774703439511,5539', '51954054482053606216241793250313914913060.030871977269534757984962396972028182875803654912773216689075089542071374319', '6975'); - T('135902709964850252402968509809,145', '937260068723105188985989722.82062844541535607143554252535789346214610335738887862350472', '173'); - T('12272393029782069191611244866640477536622317952693272516,1915', '6408560328867921248883156588324009157505126868247139.695038408447774384790132755871611355838250229705452357706632277610603203384972', '2031'); - T('2225,192', '11.5885417757514787571566159059881098551576095026723816', '9297'); - T('53371779627153865605630667958238412899341574421446540565563726321002579114955251781202163,5836', '9145267242486954353260909519917479934774087460837309898143201905586459752391235740439.02724468894046585153819806105344749411841071667196589490983824705161267037058650756988034162768018', '73957'); - T('2446436726419359505665677336229199860520232227,534', '4581342184305916677276549318781273147041633.3838917648266110125209840196281133496676870967557119215942174589504706059079700', '557'); - T('492176,8321', '59.14866', '8502'); - T('9,1', '9.01348435261992079442197040', '9'); - T('328435344544083927300588344986968685085,1', '328435344544083927300588344986968685084.696665368175202653355800835276350404235962273399764329774312731281859536060585323082333783861', '1'); - T('159247659795083,438555', '363119015.391645289643', '560287'); - T('6,1', '5.70', '1'); - T('72150594429471845730,319963', '225496680645799.18843741307358458329580279139701535416802994965032378655564757028', '549282'); - T('8,1', '7.95841526551959133597120', '2'); - T('426677,11', '38788.81813330', '24'); - T('1751990915929005698023297071945011392910508303508376261581982019497491952385038529603989010476,18689', '93744497615121499171881698964364674028065081251451456021294987398870563025578603970463321.2304564170567292002043552709059704140869790828468039869462307264644682137220664645749338191124', '21564'); - T('247438600592095556152258502462038301212815837584618493182,487', '508087475548450833988210477334780905981141350276424010.64065691758941436115799603577450664221966964524772848474790743487607130855363168196131673164233', '4945'); - T('1830602979532381493889680621382105980461277,751704', '2435271036913973444187713011214661596.1352833030042512463024221180036627596838788009350350', '861635'); - T('3920365916916176786055106017,46', '85225346019916886653371869.93476900513189071699081282383598839961655611874932469229156603202305772110380915189992118499498858', '520'); - T('472649930038,123', '3842682358.03251262860394055442674', '147'); - T('1322110218557217605016482876416321878749760304812247,155948', '8477891467394372515303068179241297604007491630.6220470926214830053246154267443752408560398235344548438873690519655363049727184587649', '186638'); - T('23547504929176,55', '428136453257.745545520225605', '65'); - T('17121761490301749308279011219417223490311,232710', '73575529587476899610154317474183419.235576468560490943788124174995507987278744551812', '543753'); - T('16210026155636340189350564224854481593345828818610444963909203142193849898,239', '67824377220235733009834996756713312106049492964897259263218423189095606.26777934017026855940357410680016571583242046733124370322513732722378950028598', '692'); - T('190721792400863327458476761464009950717029,30', '6357393080028777581949225382133665023900.9666170639928048559949862724415791705119899615018742118160129182', '79'); - T('61,200', '0.305', '244093'); - T('1716239054042743503675603092,2003', '856834275607959812119622.1128307556027562949206592525403122428', '7036'); - T('43,1', '42.926', '2'); - T('27358642114,8563', '3194983.31355833866', '9623'); - T('26693152565727887582,12127', '2201134045165983.9681701980199628544994221693300315787693850757330347383069440481917705451090', '48076'); - T('6108091753110008516780,1', '6108091753110008516779.73479487754085449867983587832803285557110100750079855828473226', '1'); - T('2,3', '0.718905305925227067205880082792710', '3'); - T('3473047534252762578370964997,58594', '59273091686055954165460.02998600522350350905681210811307517203796586454683', '61501'); - T('214822703242583,56', '3836119700760.4108921624057841119514683803433710971136', '64'); - T('26939714,3', '8979904.64498692634635572320542201896798645625719108607536315732247799297935360779199341966787552114794600', '5'); - T('2888884587551576320,29', '99616709915571597.240972811959289242975553142', '34'); - T('947939103218542770831,1', '947939103218542770831.0521624243633591645983271158385778064925689940216692520225367', '1'); - T('9933088375957272302206358007975451939487,2', '4966544187978636151103179003987725969743.72438467636183210768718000533720409321549827235614', '2'); - T('2384620985464,48617', '49049118.322068409482196547648333', '50827'); - T('1481114193489213622796229711,159566', '9282141518175636556636.31168920697604560950832652295984016490111948393975418960516033185', '434728'); - T('83229715325,52', '1600571448.5577172712032806916796048084329678112100319702869128418611147806748', '97'); - T('259,9', '28.786385', '9'); - T('18421000231117295985083192807209645332,25', '736840009244691839403327712288385813.280233799772105420526583646770509765903251570390', '65'); - T('699729069573093,1', '699729069573092.9415209617669715638690428130440588', '2'); - T('1269145537981521474122771320340177027273014491011926684206752265265583667980863639117069,46', '27590120390902640741799376529134283201587271543737536613190266636208340608279644328631.9347579670840456037995587812140760559559266417811221041968023988665383416259781405442396223206087', '88'); - T('7035913928382432889095670790,1', '7035913928382432889095670789.9451603279584465650713190452458435039596863298954339307519647608553073011741266856074291808762823441', '1'); - T('5380967249116311236814136453793462678035221359070439177808760415,14197', '379021430521681428246399693864440563360936913366939436346323.900471930297520912068842457020834544905293996118477045554870916446118758909841288498400493527105', '91913'); - T('5340404069347070913584555456280093652528470496019424627166576,7', '762914867049581559083507922325727664646924356574203518166653.71250635103031314100742496440500618527676618848777566910526532273', '12'); - T('198596768231311216444471847625266,1', '198596768231311216444471847625265.83726507122160159383594314037463792212479812445545510304752094547024953', '1'); - T('334,53', '6.301655789150', '56'); - T('9482145824073019,308', '30786187740496.81493576082236077814823570323411336136297997538465529623724716057733663574274358863', '518'); - T('49564672028692779312869265853690250389636933591279,1', '49564672028692779312869265853690250389636933591279.05690047648396367999804886767002033615206952728024860778041603073475913559839990', '2'); - T('180043559436755584546341153685052792171032546504943274982733,271928', '662100112664953901570787685288211556629080295169836408.83885808006294519499163145424494176495048682043552813068297869819085051', '323702'); - T('135402176306147,40', '3385054407653.6752566904201890867915343261767717538895', '41'); - T('487749,5656', '86.23567892818914544812557542982186431015804303', '27597'); - T('689353268,161', '4281697.316772446980582095053374575467875610055', '661'); - T('2341601,3', '780533.72419690', '3'); - T('133253,2', '66626.369877360981293176690373014842055920029', '2'); - T('23614,1', '23614.044401474469046155210490395', '1'); - T('281757167099338050985151947541415731483,42890', '6569297437615715807534435708589781.568733970826316638832067132912947392456994401031191534637582563566923232', '64820'); - T('7,30', '0.2334', '77'); - T('188159408735932593,55153', '3411589736477.3011984841415382', '62884'); - T('49893755664003300784200999639,5755', '8669636084101355479444135.471589937556905646874989257298383710889254914096760398878896706072509550992971893614682', '5837'); - T('180209,22', '8191.3248002765501146181', '22'); - T('70415704682823093030143170,135531', '519554232484251522014.4702687945814801414708882557', '370767'); - T('309703964089501625654278146528831017909611280781,531191', '583036919092194004895184870468119787250934.7499882339908947319021034086598173362092896910180810566025185828', '568168'); - T('6311026676431831888549757346533448414306654210393,1', '6311026676431831888549757346533448414306654210392.54151415748259382280340911118846529021380341028941701654077953763414807744375826120008106076828300', '1'); - T('677239979042028152601158,7949', '85198135494027947238.79204931221625179624149473557938172126847707', '9883'); - T('1829735554262281,259', '7064616039622.706568544570626683229950243512536015093535101968887493794302873092483253629579230290', '331'); - T('1,2', '0.317925082', '2'); - T('65422,9439', '6.9310308267754', '17120'); - T('46961497053061382777609130118847271892089775387846767743314411513423583155027,5', '9392299410612276555521826023769454378417955077569353548662882302684716631005.400654014794318218848509928000496866762016629616754055629753036755426927256260779921696553', '67'); - T('500194857457135627698,665', '752172717980655079.2451135360411912947058454904697242572660767', '687'); - T('47471355958725273634,1', '47471355958725273634.16168212923451461593072522210510640420155857994234198580802495272039820633735570319533813', '1'); - T('36696342857496890219,1', '36696342857496890218.90572359364080164761627035720048698', '3'); - T('4695131986657142516305076,510781', '9192064674796326637.649160794940805998501189986', '747475'); - T('349103010796287846089941527434273199124602123798955453463589836132521373235273,71', '4916943814032223184365373625834833790487353856323316245966054030035512299088.352127776626217594251476581025885809792618906667335429116230898910825304240224', '299'); - T('1358220866465871480816463658707268378971,16', '84888804154116967551028978669204273685.687886576615307696608953854116834104494900462161862843643799426800222', '91'); - T('27194039930406868209865840701464121302724394008919831130512956946096037284286,47', '578596594263975919358847674499236623462221149125953853840701211619064623069.9146866857902214919864171822857086850016715830174570427578437592194338070650774544060278', '58'); - T('2751902407120,23', '119647930744.3479655249971735656329573846182167', '43'); - T('4469030866140915638532462562432305966504,1', '4469030866140915638532462562432305966504.192178572338167275494797670860545892956073433782578010264482847', '2'); - T('4704489769335751301445685485486877217294,103', '45674657954716032052870732868804633177.6116627025867182700549754236229291028015465033707982024', '443'); - T('1475216297524085707694311943977667,151', '9769644354464143759564979761441.503308131238849125841196958844356073790374671626586526675819233898553472', '734'); - T('4907983733090076808453942390,57', '86104977773510119446560392.807235262788300753240131745761023198496136680383768897782992', '59'); - T('585074587,61012', '9589.5002130729144884804491184088195014563319127651629128080417190511729', '67046'); - T('7,1', '6.9', '2'); - T('504,601', '0.8386', '776'); - T('47984,267191', '0.17958688728350164035953663206762777096380577875511144865128', '335603'); - T('10388140798372,2093', '4963277973.421882452088446982138192961421705231905173423353291761058587', '13798'); - T('20168990044874146939541,7160', '2816898050960076388.204050292237501110723265705833631209539445571975161631843126782', '8609'); - T('46896058387748469269291854711564296983,110836', '423112151176048118565194113027935.8419917716416221340193798283264901', '155719'); - T('10955549766043717068313994547,128018', '85578198113106883940648.9286428471045878019343568927449610831989116', '378555'); - T('647078048579323459391277902984368763031859387250426744686475450876664538395892114032,1', '647078048579323459391277902984368763031859387250426744686475450876664538395892114032.3902894368682962019659983250422182774256220836412025664532446636812180965587379981258', '1'); - T('18638867424143570538275250698558378620490371,4', '4659716856035892634568812674639594655122592.7613196710958960564528035771871961517785715362059753295820571', '4'); - - T('-766693107209001147673676223300000000,1', '-7.666931072090011476736762233E+35', u); - T('-449394937314220211511925695600000000000000000000000000000000000000000000000000000000000000,1', '-4.493949373142202115119256956E+89', u); - T('579061232699508282365391682698798449087639,5000000000000000000000000000000000000000000', '0.1158122465399016564730783365397596898175278', u); - T('-5514336245609206034070613442000000,1', '-5.514336245609206034070613442E+33', u); - T('-1626302750634169116141012001000000000000000000000000000000000000000000,1', '-1.626302750634169116141012001E+69', u); - T('-1795503669658780056331087359,20000000', '-89775183482939002816.55436795', u); - T('-478536837039153,200000000', '-2392684.185195765', u); - T('-19898168880712128313811543240000000000,1', '-1.989816888071212831381154324E+37', u); - T('-363762350297028160717513248300,1', '-3.637623502970281607175132483E+29', u); - T('-8468355353839925110875467363,10000000000000000000000', '-846835.5353839925110875467363', u); - T('-45775371,10000', '-4577.5371', u); - T('113017973534801596808086521,1250000000000000000000000', '90.4143788278412774464692168', u); - T('-60641938108001991714010900430,1', '-6.064193810800199171401090043E+28', u); - T('-6268106205338927353362914493000,1', '-6.268106205338927353362914493E+30', u); - T('-62639169752501205441274039740000000000000000000000000000000000000000000000000,1', '-6.263916975250120544127403974E+76', u); - T('538570638075066218029616939267858613539095601141862844311,10000000000000000000000000000000', '53857063807506621802961693.9267858613539095601141862844311', u); - T('-458667133551,1000000000', '-458.667133551', u); - T('-1856541268082778545036889427,2500000000000000', '-742616507233.1114180147557708', u); - T('401060653077651395227747,12500000000000000000', '32084.85224621211161821976', u); - T('-4144323558304702676396445443000000000000000000000000,1', '-4.144323558304702676396445443E+51', u); - T('-5542449392944384114719343577000,1', '-5.542449392944384114719343577E+30', u); - T('33218113354409142794187676923560201901246573,125000000000000000000000', '265744906835273142353.501415388481615209972584', u); - T('-313400727241063772788345397,10000000000000', '-31340072724106.37727883453970', u); - T('-2001790975721803137,2500000000', '-800716390.2887212548', u); - T('-2000194173750641732491991877,5000000', '-400038834750128346498.3983754', u); - T('-4665510204000006565975869513,50000000000000000000', '-93310204.08000013131951739026', u); - T('2153528479648597306374181609165668498526259590105002419225534999299,39062500000000000000000000000000000000000000000000000', '55130329079004.0910431790491946411135622722455066880619321736959820544', u); - T('-30666677738567071,5000000000000', '-6133.3355477134142', u); - T('-4703545825363662923055913431,50000000', '-94070916507273258461.11826862', u); - T('-7623267021806768883120286367,100000000000000000000', '-76232670.21806768883120286367', u); - T('-47613686004517,1000000000', '-47613.686004517', u); - T('-4426382462876620839114533,10000000000000000000000000', '-0.4426382462876620839114533', u); - T('-3208666589586606174447191,100000000000000', '-32086665895.86606174447191', u); - T('-7729062348415188688065314918000000000000000000000000000000000,1', '-7.729062348415188688065314918E+60', u); - T('-2160223698870209381629363153,25000000', '-86408947954808375265.17452612', u); - T('-2004385076106459382854411831000000000000000000000,1', '-2.004385076106459382854411831E+48', u); - T('-8002741891355462634094119996000000000000,1', '-8.002741891355462634094119996E+39', u); - T('-4368891335671811,100000000', '-43688913.35671811', u); - T('-400258929245951237,2000000000000000000', '-0.2001294646229756185', u); - T('42762676503070237126609626887821888428451673288895043501,100000000000000000000000000000', '427626765030702371266096268.87821888428451673288895043501', u); - T('-58304052117107641964012899950000000000000000000000000,1', '-5.830405211710764196401289995E+52', u); - T('15248669391693474071160842935287056367141428182921376132980388727,5000000000000000000000000000000000000', '3049733878338694814232168587.0574112734282856365842752265960777454', u); - T('-8078047970318036600976065350000000000000000000000000000000,1', '-8.078047970318036600976065350E+57', u); - T('7,1', '7.0', u); - T('-6226798387179777853909992923000000,1', '-6.226798387179777853909992923E+33', u); - T('-7448516509843407495470415780000000000000000000000000000000,1', '-7.448516509843407495470415780E+57', u); - T('-78852027500722155037504331190000000000000000000000000000000,1', '-7.885202750072215503750433119E+58', u); - T('-3342348042119829837180052129,500000000000', '-6684696084239659.674360104258', u); - T('15672687176259210859051407089930945124489111085110817031431,40000000000000000000000000000', '391817179406480271476285177248.273628112227777127770425785775', u); - T('39866154729780717195080337049315868519050979213540479786966580509961183,1000000000000000000000000000000000000', '39866154729780717195080337049315868.519050979213540479786966580509961183', u); - T('-993671543846886085686711917800000,1', '-9.936715438468860856867119178E+32', u); - T('532028339563122259746625760616140111884633179604572642613837,500000000000000000000000000000000000000', '1064056679126244519493.2515212322802237692663592091452852276740', u); - T('-697966803816803579573431799,25000000000000000000', '-27918672.15267214318293727196', u); - T('-48787459362042945333251298680000000000000000,1', '-4.878745936204294533325129868E+43', u); - T('-353168187829651949299,4000000000000000000', '-88.29204695741298732475', u); - T('-1403470827451558036088375821,20000000000000000000000000', '-70.17354137257790180441879105', u); - T('-68304813987155896442052862570,1', '-6.830481398715589644205286257E+28', u); - T('-28707593804742896781267400000000000,1', '-2.870759380474289678126740000E+34', u); - T('-1791426377870978262043979561,1000000000000000000000000', '-1791.426377870978262043979561', u); - T('179838406674297924775572988142470977688025003111919,25000000000000000000000000000000000', '7193536266971916.99102291952569883910752100012447676', u); - T('-2423075550414669291292735759,5000', '-484615110082933858258547.1518', u); - T('-776725396418999866033600668900000000000000000000000000000000000000000000000000000000000000,1', '-7.767253964189998660336006689E+89', u); - T('-369087919583602506700335119,50000', '-7381758391672050134006.702380', u); - T('-65769870411112553029542951,200000000000000', '-328849352055.5627651477147550', u); - T('-1198038835922050392798019,200000000000000000000', '-5990.194179610251963990095', u); - T('-40097191351465303957388254440000,1', '-4.009719135146530395738825444E+31', u); - T('-3236635346912723615834792627,5000000000000000', '-647327069382.5447231669585254', u); - T('-2365771,250000', '-9.463084', u); - T('-160497076958746128902700099,3125000000000', '-51359064626798.76124886403168', u); - T('157938109732784046764321035938547478521587349076387,20000000000000000000000000000000000000000000', '7896905.48663920233821605179692737392607936745381935', u); - T('3516380051744022949626313427473,5000000000000000000000', '703276010.3488045899252626854946', u); - T('-86489135514398778941814310290000,1', '-8.648913551439877894181431029E+31', u); - T('-301393313166931162873106807500000000000000000000,1', '-3.013933131669311628731068075E+47', u); - T('-518869594507859770521243546000000,1', '-5.188695945078597705212435460E+32', u); - T('-1950909743929332443100687271,50', '-39018194878586648862013745.42', u); - T('-8773131005595091487081140354,1', '-8773131005595091487081140354', u); - T('-4355596294471508983960024769,100', '-43555962944715089839600247.69', u); - T('-2880570808953415045636806327,50000000000000000000000', '-57611.41617906830091273612654', u); - T('-9320214110050561347793210341000000000000000000,1', '-9.320214110050561347793210341E+45', u); - T('-2028302171,1000000000', '-2.028302171', u); - T('-232946686791834523955513553,5000000000000000000000', '-46589.3373583669047911027106', u); - T('32153248599816465463513302064276865531758911323110724293,2500000000000000000000000000000000000000000', '12861299439926.5861854053208257107462127035645292442897172', u); - T('-8744838688036249566782650227,1000000000000000', '-8744838688036.249566782650227', u); - T('-623804321303869879672219319900000000000000000,1', '-6.238043213038698796722193199E+44', u); - T('-5226891267180881946811097711000000000,1', '-5.226891267180881946811097711E+36', u); - T('6104731674327122118125159140803482511,50000000000000000000', '122094633486542442.36250318281606965022', u); - T('-3631918259327646858473441459,100000000000000000', '-36319182593.27646858473441459', u); - T('-1848392047279159333633594727,500000000000000', '-3696784094558.318667267189454', u); - T('-264510547222964010201402067,2500000000', '-105804218889185604.0805608268', u); - T('23965604410399646104889267,100000000000000', '239656044103.99646104889267', u); - T('-7462093867393361276933908373000000,1', '-7.462093867393361276933908373E+33', u); - T('24323093395343447761780819,25000000000000000', '972923735.81373791047123276', u); - T('820159670097111265573137140169274052235176656378637635665429413451,10000000000000000000000000000000000000000000000000000', '82015967009711.1265573137140169274052235176656378637635665429413451', u); - T('-13218678465057612022150417,10000000000000', '-1321867846505.761202215041700', u); - T('-6699947761211673976391555178000000000000000000000000000,1', '-6.699947761211673976391555178E+54', u); - T('-6087775300361116653641781722,1', '-6087775300361116653641781722', u); - T('-1174267411076461674383873197,12500000', '-93941392886116933950.70985576', u); - T('-9622612849795128416976470129,10000000000000000', '-962261284979.5128416976470129', u); - T('-430267205006530807363136683,200000000', '-2151336025032654036.815683415', u); - T('-1842468826711949238742823267,2000', '-921234413355974619371411.6335', u); - T('-896792855550853822680165595000000000000000000,1', '-8.967928555508538226801655950E+44', u); - T('-7249373999522375642630010999,10000000000', '-724937399952237564.2630010999', u); - T('-867584543901195289988590669,5000', '-173516908780239057997718.1338', u); - T('-7172260193178638618675644585000000000000,1', '-7.172260193178638618675644585E+39', u); - T('-589873963727757525194937079400,1', '-5.898739637277575251949370794E+29', u); - T('-5890981801970379206238029411,10000000000', '-589098180197037920.6238029411', u); - T('-452864647493799097082782472200000000000000000000,1', '-4.528646474937990970827824722E+47', u); - T('-600618187610370877245711717700000000,1', '-6.006181876103708772457117177E+35', u); - T('-667,100', '-6.67', u); - T('-535739501101785482356483511,20000000000000000', '-26786975055.08927411782417555', u); - T('-2189002367733133,500000000000000', '-4.378004735466266', u); - T('-4135862533810979636019397675000,1', '-4.135862533810979636019397675E+30', u); - T('-14984699501047789,1000000000000', '-14984.699501047789', u); - T('-2644213426631746862661931503,10000', '-264421342663174686266193.1503', u); - T('-2092299259157497414090361017,5', '-418459851831499482818072203.4', u); - T('-77,100', '-0.77', u); - T('-54276151887,1000000000', '-54.276151887', u); - T('-7316738873979211718601112500000000000000000000000000000000,1', '-7.316738873979211718601112500E+57', u); - T('-389683579126928886377631531,2500000000000000', '-155873431650.7715545510526124', u); - T('46789726161807116524384304297700033991397937633588752307,10000000000000000000000000000000000000', '4678972616180711652.4384304297700033991397937633588752307', u); - T('-9196858034762943045297291137,10000', '-919685803476294304529729.1137', u); - T('-12757819,25000', '-510.31276', u); - T('-2751580109664699528322719473,50', '-55031602193293990566454389.46', u); - T('-1397067073903866232334961397,200000000000', '-6985335369519331.161674806985', u); - T('-4812745393643600076996562763000000000000000000000000000000000000000000000000000000,1', '-4.812745393643600076996562763E+81', u); - T('-13515907799732096505704651000000,1', '-1.351590779973209650570465100E+31', u); - T('5425915792163208468016304413313938329266256242679179675690564113030627,1000000000000000000000000000000000000000000', '5425915792163208468016304413.313938329266256242679179675690564113030627', u); - T('-10827300142961420614583582960000000000000000000000000000000000000000000,1', '-1.082730014296142061458358296E+70', u); - T('488478745829,50000000', '9769.57491658', u); - T('-2319703638146144907642415179,250000000000000000000000000', '-9.278814552584579630569660716', u); - T('8199609,1000000', '8.199609', u); - T('-1132520281920903148966859641,50000000000', '-22650405638418062.97933719282', u); - T('-9435372448691264711,10000000000', '-943537244.8691264711', u); - T('-5430432705270926972283794348000000000000000,1', '-5.430432705270926972283794348E+42', u); - T('2547106921,10000000', '254.7106921', u); - T('-2013361060932518973304030049,250000000000', '-8053444243730075.893216120196', u); - T('-299071373209294751127694543,4000', '-74767843302323687781923.63575', u); - T('161261,5000', '32.2522', u); - T('-2149015945426180798371334522,1', '-2149015945426180798371334522', u); - T('-1219052557726696173105236523,1250000000000000', '-975242046181.3569384841892184', u); - T('-6635702255618430700913831019,1000000', '-6635702255618430700913.831019', u); - T('-4229092410987972953057006873,100', '-42290924109879729530570068.73', u); - T('800876757958087347097942687332875742929708200305858327085977609,100000000000000000000000000000000000', '8008767579580873470979426873.32875742929708200305858327085977609', u); - T('-2665484396670548074136945193,50', '-53309687933410961482738903.86', u); - T('-3156306908006626264325676067,100000000000000000', '-31563069080.06626264325676067', u); - T('-3,5', '-0.6', u); - T('-8680573119149141897627467752000000000000000000000000,1', '-8.680573119149141897627467752E+51', u); - T('-82860324718555460591215170260000000000000000,1', '-8.286032471855546059121517026E+43', u); - T('-4531829930266176401806361441000000000000000,1', '-4.531829930266176401806361441E+42', u); - T('-5737601975600871638965999673,1000000000000', '-5737601975600871.638965999673', u); - T('-37760607898500795218600331790000000,1', '-3.776060789850079521860033179E+34', u); - T('-27369129037741,50000000000', '-547.38258075482', u); - T('2477983988516065743406448097218451318402450481,10000000000000000000000000', '247798398851606574340.6448097218451318402450481', u); - T('-705385142506364347385362693,1', '-705385142506364347385362693.0', u); - T('-4969675047511558769703779774000000000000000000000000000000000000000,1', '-4.969675047511558769703779774E+66', u); - T('-85382944582940147310728016560000000000000000000,1', '-8.538294458294014731072801656E+46', u); - T('-1782322041330569224195797189000000000000000,1', '-1.782322041330569224195797189E+42', u); - T('-290994034468272029485971361100000,1', '-2.909940344682720294859713611E+32', u); - T('-988966648479804202907677518800000000000000000000000000000000000000000000000000000,1', '-9.889666484798042029076775188E+80', u); - T('-4566915368931602815051783606,5', '-913383073786320563010356721.2', u); - T('270653156797430209033263481,625000000000000000000000', '433.0450508758883344532215696', u); - T('-48999796485280572833341497940000000000000,1', '-4.899979648528057283334149794E+40', u); - T('-72525550030522147167279582110000,1', '-7.252555003052214716727958211E+31', u); - T('-2432675193330427851698809509,100000000000000000000000', '-24326.75193330427851698809509', u); - T('-403266406094322401449840190200000000000000000000000000000000000000000000000000000000000000000,1', '-4.032664060943224014498401902E+92', u); - T('-7328622424224698690222269711,10000000000', '-732862242422469869.0222269711', u); - T('-47237342255413479773733697,25000000000000000000', '-1889493.690216539190949347880', u); - T('78835631855459381,10000000000000', '7883.5631855459381', u); - T('-14,5', '-2.8', u); - T('-9866329513673835238514096493,100', '-98663295136738352385140964.93', u); - T('-13089959190012611177126518580000000000000000000,1', '-1.308995919001261117712651858E+46', u); - T('-4967358948172051919497159739,500', '-9934717896344103838994319.478', u); - T('-6833646028032836687349866821,100000', '-68336460280328366873498.66821', u); - T('649637135613968795105908969145470711,250000000000000000000000000000', '2598548.5424558751804236358765818828440', u); - T('-61363709817705515400922815730000000000000000000000000000000000000000000000000,1', '-6.136370981770551540092281573E+76', u); - T('-100998083624843426300911688400000000000000000000000000,1', '-1.009980836248434263009116884E+53', u); - T('-3590001814306412202538592043,1000000000000000000000000000', '-3.590001814306412202538592043', u); - T('-873319590748158544964033381600000000000000000000000000000000000,1', '-8.733195907481585449640333816E+62', u); - T('1753,50', '35.06', u); - T('-52231905436704456949438551980000000000000000000000000000,1', '-5.223190543670445694943855198E+55', u); - T('-4348525293879767179803795097,5000000000', '-869705058775953435.9607590194', u); - T('-1628925349793270623943546973,1000000000000000000000000000', '-1.628925349793270623943546973', u); - T('-78494014309,5000000', '-15698.8028618', u); - T('-9245876360737547772734914910000000000000000000000000000,1', '-9.245876360737547772734914910E+54', u); - T('-807754225571147376128169812100000000,1', '-8.077542255711473761281698121E+35', u); - T('-6150194754154627890562649755,1', '-6150194754154627890562649755', u); - T('-2471953954534824409680038307,25000', '-98878158181392976387201.53228', u); - T('-970474827218905069338978816700,1', '-9.704748272189050693389788167E+29', u); - T('-24039,10000', '-2.4039', u); - T('-19253676936551703,1000000000000000', '-19.253676936551703', u); - T('-3673854325985073740352036342000000000000000000000,1', '-3.673854325985073740352036342E+48', u); - T('-160934801,25000', '-6437.39204', u); - T('-32833225394240539484189003,2500000000000', '-13133290157696.21579367560120', u); - T('-879576295241677088569196885100,1', '-8.795762952416770885691968851E+29', u); - T('-34723705196925586591,2500000000000000000', '-13.8894820787702346364', u); - T('58699728651,2500000', '23479.8914604', u); - T('25989415788377713434433189687,1000000000000000000000000000', '25.989415788377713434433189687', u); - T('-1528267418236634262738364747,1000000', '-1528267418236634262738.364747', u); - T('-6671686359029212455119744847,100000000000000', '-66716863590292.12455119744847', u); - T('144580847646431960012829985973482546613221338871,200000000000000000000000000000000000000000', '722904.238232159800064149929867412733066106694355', u); - T('-33981629178302642259388602190000000000000000000000000000000000,1', '-3.398162917830264225938860219E+61', u); - T('-64240817973350524445496942010000000000000,1', '-6.424081797335052444549694201E+40', u); - T('-990485401974653806265390505600000,1', '-9.904854019746538062653905056E+32', u); - T('-6028091377718570445490225453,1000000000', '-6028091377718570445.490225453', u); - T('-231645924266279,200000000', '-1158229.621331395', u); - T('-356048892709504881374103191700000,1', '-3.560488927095048813741031917E+32', u); - T('-96293143562099332540946672560000000000000,1', '-9.629314356209933254094667256E+40', u); - T('-637588725404145616579243109,200000000', '-3187943627020728082.896215545', u); - T('-5533803323992652056012670321,10000000000000000000000000', '-553.3803323992652056012670321', u); - T('82096165597399152387073083,10000000000000', '8209616559739.9152387073083', u); - T('-84046624737814576667252743050000000000,1', '-8.404662473781457666725274305E+37', u); - T('-760070190521772257789348512700000000000000000000,1', '-7.600701905217722577893485127E+47', u); - T('33848173936588017661795890663826550420632434137913501,500000000000000000000000000000', '67696347873176035323591.781327653100841264868275827002', u); - T('-67816336411542138315185300640000000000000000,1', '-6.781633641154213831518530064E+43', u); - T('-1204357960160460298667925175000000,1', '-1.204357960160460298667925175E+33', u); - T('-7970186008547782569239312038000000000000000000000,1', '-7.970186008547782569239312038E+48', u); - T('-3710232124874852163479109505000000000000000000000000000000000000000000000000000000,1', '-3.710232124874852163479109505E+81', u); - T('-4889555265921636364438094567,5000000000000000', '-977911053184.3272728876189134', u); - T('3117,500', '6.234', u); - T('-699740571071362462935070191800,1', '-6.997405710713624629350701918E+29', u); - T('-70248014967,250000000', '-280.992059868', u); - T('-857100231280874948737999933,200000000000000', '-4285501156404.374743689999665', u); - T('467297342335727,10000000000', '46729.7342335727', u); - T('-27212862586658598118090814040000000000000000000000000000000000000000000,1', '-2.721286258665859811809081404E+70', u); - T('-3777590780331387653794428909,100000', '-37775907803313876537944.28909', u); - T('-207858091537398998838496056000000000000000000000,1', '-2.078580915373989988384960560E+47', u); - T('-6020540505342374731212772184000000000000000000000000000000,1', '-6.020540505342374731212772184E+57', u); - T('-38563435471069083574670403660000000000000000000000000000000000000000,1', '-3.856343547106908357467040366E+67', u); - T('12925583620733632059,250000000000', '51702334.482934528236', u); - T('-64127811,100000000', '-0.64127811', u); - - /* - T('30396,38195', '0.79581097', '74409'); - T('2125057574,3289', '646110.5424140842277760913716223149175043516912866283522989430448583852673477181054', '4314'); - T('18251,16', '1140.688086121119279582816178812726653910', '37'); - T('61348765027081784476232889631422618917241085602257,2', '30674382513540892238116444815711309458620542801128.559859020834676491532682063017825303001913079937413732204504474950978211332225018371420', '2'); - T('238354711696434965227174225040046402291933791409568617910,25981', '9174193129457486826033417691391647830796882006449660.0558100148468970808679278895365813792370050009058167954469', '61710'); - T('7355967799241738309628763754835483150582416687842544374137,8', '919495974905217288703595469354435393822802085980318046767.1338999658963927824509929378965804777221331548975659545056488845295998946309871474144010438', '9'); - T('1125354937387110207464744146511518,247481', '4547237716782743755943866989.8356560705677241346146759866583370949', '863202'); - T('22627259137083636694372928354252733658397903083652793951,13169', '1718221515459308732202363759909843849828984971042052.8476725643837742907709281227796422726432771727035925851544494828706899020', '266434'); - T('8704956917621873401344326514156520003279612669326092644945779992398046340851791,127', '68542967855290341742868712709893858293540257238788131062565196790535797959462.9212696722706718117183841431994103691974707194398390091180486522725873390891717', '171'); - T('58400904696,8737', '6684320.09797413893379904985072385250774250364224704531308514779353223', '14426'); - T('4765998700799,481932', '9889359.28886025414277', '551989'); - T('84446319074008288318841993796319916,1', '84446319074008288318841993796319916.4290214679797552828327089099139280188', '1'); - T('208579935771852505416338,29', '7192411578339741566080.621098672624218880520368888346887640903578755437931806539999680994582938', '38'); - T('1222506164843897615007151221018141468,521', '2346460968990206554716221153585684.199616425445388739418159378389564040736054', '706'); - T('63993391879749765751,9', '7110376875527751750.114919085901505100980521292031066797810839927388501365930465', '11'); - T('36707708314,1', '36707708314.345688574511854258055215898538289601221976670300216981023491', '1'); - T('1006862373895650813218257996159822111779222738385202718573234201031,335', '3005559325061644218561964167641260035161858920552843936039505077.70447752609278095294701366298104650604976387611568135143174113323780682', '7063'); - T('12180512204,290477', '41932.7940043445804168810482554121918927813650259', '895566'); - T('972851014381591,18170', '53541607836.080957621939096312239677792878740188648258030024875', '31555'); - T('383576424003665,59', '6501295322096.01707059843465672720153308', '88'); - T('456059695649,731697', '623290.372447884850674344473049816049238992052574671', '770999'); - T('1,2', '0.5716202415873544262986953173753852278285193332218646822626651', '2'); - T('13802410789886736953383903846755867001633124596437299605748175709981308048573814,2523', '5470634478750193005701111314607953627282253109963257869896225013864965536493.782798186996737913044082377221550214034629772236938011947896897722075720890727218714', '2580'); - T('1720546690653497270570006270472130851,1', '1720546690653497270570006270472130851.14006845543964920673232647491053082791301585407937041734157349507526701334664232654756777642845206', '1'); - T('275492732803212658371830121443811803,6273', '43917221872024973437243762385431.5005579559793624838126175850466341579997661657132448932942532299', '11453'); - T('88013352536654826423613115136850148349568967,93', '946380134802740069071108764912367186554505.02139414761736578247940104106009403877307019264568966335689948628094', '100'); - T('0,1', '0.16188799510329961', '2'); - T('31257777609885493076027897164441747647216000811363789460,63', '496155200156912588508379320070503930908190489069266499.364683462978985476107209780379101750930177884309470340386147403736530', '73'); - T('1,4', '0.247', '5'); - T('139940391692584759336872579028566139849626387938102,9', '15548932410287195481874731003174015538847376437566.916769682876782912934506396938577003712568789804114047347942880', '9'); - T('2695380025444014713279737860623,4', '673845006361003678319934465155.7153220774931558972103241774927225665361206328689645904684305800', '6'); - T('212541,1', '212541.15765900911813807562731698106746376864402272303473059993656512959159467385761060217667309', '2'); - T('24404077187137405965287142997346562978162191083070727134647177951283348456202109976721557879,358982', '67981339418515151080798321356910828337248639438943253797257739806684871264303251908790.85268620710740817674022927818400975732259671102671740536686565452412022811045315287709605606', '524757'); - T('4639813710478702096,63125', '73501999373920.033203960389538229718685812256959445512319514858711642307834404391479542025114608466188853802', '975593'); - T('6313823485926856046033387,79', '79921816277555139823207.43038835415731205809303875306226403799816963841913838777893750', '309'); - T('156447551951667418528348,10581', '14785705694326379220.1444097907069652381615089410990740501255021747836566834256552197426931481109', '28853'); - T('5939913817183935713420272651319175,1', '5939913817183935713420272651319175.15560997078079301798352616505127598762535051904836053714139307939449564', '2'); - T('2612459,3290', '794.06048625538280973740786635286809420954121949534447211174', '3834'); - T('44771360338621,79', '566726080235.708661152424012356777601', '84'); - T('19411423,337', '57600.661728879757757929764351499408564549978771807173536885876073886506463832955', '390'); - T('1847,2', '923.31354', '2'); - T('2652776,545', '4867.4789', '848'); - T('2469,20', '12.345e1', new BigNumber('123')); - - T('-2991910323532143367251432461,50000000', '-59838206470642867345.02864922', u); - T('-972745200863972039012044288500000000000000000000000000000,1', '-9.727452008639720390120442885E+56', u); - T('-759,100', '-7.59', u); - T('-27827258151452494934863201,100', '-278272581514524949348632.0100', u); - T('-284626800809,50000000', '-5692.53601618', u); - T('-74421663208247269188483431,80000000000000000', '-930270790.1030908648560428875', u); - T('-1082016448333999416859837516000,1', '-1.082016448333999416859837516E+30', u); - T('-21,25', '-0.84', u); - T('-67246554173689300336047211,8000000', '-8405819271711162542.005901375', u); - T('-2196812392790282979771359770000000000000,1', '-2.196812392790282979771359770E+39', u); - T('-93367638440645772883402889310000,1', '-9.336763844064577288340288931E+31', u); - T('-35989199713272470893896397640000000000,1', '-3.598919971327247089389639764E+37', u); - T('-21641213684333939876179569040,1', '-2.164121368433393987617956904E+28', u); - T('-91309127692139566014327039220000000000000000000000000000000000000,1', '-9.130912769213956601432703922E+64', u); - T('-1991444477322661912100056959,50000000000', '-39828889546453238.24200113918', u); - T('-553515865616749148505592781,10000000000000000000000000', '-55.35158656167491485055927810', u); - T('-2736653830100392487693621031,500000', '-5473307660200784975387.242062', u); - T('-1434910778309587281399577109,5000000000', '-286982155661917456.2799154218', u); - T('4088837688828123100698969622178669612073,5000000000000000000000000', '817767537765624.6201397939244357339224146', u); - T('-43637769341168890990138963370000,1', '-4.363776934116889099013896337E+31', u); - T('-972943330653707493150695821,2000000000', '-486471665326853746.5753479105', u); - T('-1782595711624723281402457991,1', '-1782595711624723281402457991', u); - T('-1587179980733649965762666577,25000000000000000', '-63487199229.34599863050666308', u); - T('-1869019007722241613978741151000000000000000000000000000000000000000000,1', '-1.869019007722241613978741151E+69', u); - T('-9534407406159040849329043501,1000000000000000000000000000', '-9.534407406159040849329043501', u); - T('884870737759390069055513857366081428271482267261449,1000000000000000000000000000000000', '884870737759390069.055513857366081428271482267261449', u); - T('-139160500164081906232225785000000000000000000000000000000000000000000000000000000000000000,1', '-1.391605001640819062322257850E+89', u); - T('-9077283717131739693270257533,1000000000', '-9077283717131739693.270257533', u); - T('-3546952154463187872567980253000000000,1', '-3.546952154463187872567980253E+36', u); - T('-2998349233065239662673433121,50000000000000000', '-59966984661.30479325346866242', u); - T('-49202917142412402713948777780,1', '-4.920291714241240271394877778E+28', u); - T('181577327136618327510814084031821584885623912603171067071894881,2500000000000000000000000000000000', '72630930854647331004325633612.7286339542495650412684268287579524', u); - T('-5299277021247306829333111683000000000000,1', '-5.299277021247306829333111683E+39', u); - T('-859302244477761340074208133600000000000000000000000000000000000,1', '-8.593022444777613400742081336E+62', u); - T('-6501829741620523766984105281,1', '-6501829741620523766984105281', u); - T('-2677415014831874236017310386000000000000000000,1', '-2.677415014831874236017310386E+45', u); - T('-4734450690396580389539539453000000000000000000000000000000000000000000000000000000000,1', '-4.734450690396580389539539453E+84', u); - T('573,1000', '0.573', u); - T('170553245440322276130662336624985791859,390625000000000000000', '436616308327225026.89449558175996362715904', u); - T('-198470325592748654691786431,100000000000000', '-1984703255927.486546917864310', u); - T('-3234474304795759429822944851,100', '-32344743047957594298229448.51', u); - T('-76846093771110548259822724440,1', '-7.684609377111054825982272444E+28', u); - T('-131857323335983571776045123,156250000', '-843886869350294859.3666887872', u); - T('-4663443251439907783224263307,5000000000000000000', '-932688650.2879815566448526614', u); - T('63123252215861327828078184797456511902545223118271893387,100000000000000000000000000000000', '631232522158613278280781.847974565119025452231182718933870', u); - T('-618918292260085378971410121400000000000000000000,1', '-6.189182922600853789714101214E+47', u); - T('-999,1000', '-0.999', u); - T('-5117190266823165989390291807,10000000000000000', '-511719026682.3165989390291807', u); - T('-7326556356501682719117834871,100000000000000000000', '-73265563.56501682719117834871', u); - T('-6104631144035504571891715845000,1', '-6.104631144035504571891715845E+30', u); - T('-553580276933846729294149065500000,1', '-5.535802769338467292941490655E+32', u); - T('-2029603585167950725930322651,2500', '-811841434067180290372129.0604', u); - T('-3840678439599650124602555357,500000000000', '-7681356879199300.249205110714', u); - T('-1811414587273530335470170277,10000000000000000000000000000', '-0.1811414587273530335470170277', u); - T('-3184069685558819408138516175000000000000000000000000000000000000000,1', '-3.184069685558819408138516175E+66', u); - T('-149520028664451586711286719,250000000', '-598080114657806346.8451468760', u); - T('-39829,100000', '-0.398290', u); - T('-76787660914545531460526626510000000000000000000000000000000000000,1', '-7.678766091454553146052662651E+64', u); - T('-2015496795339941642277997653,5000000000', '-403099359067988328.4555995306', u); - T('-1318336013779584857221166649,20000000', '-65916800688979242861.05833245', u); - T('-724089949757367,100000000000', '-7240.89949757367', u); - T('-15952866815190919594236189370000000000000000000000000,1', '-1.595286681519091959423618937E+52', u); - T('-1342078101586766284616393,100000000000000000000', '-13420.78101586766284616393', u); - T('-6812055517286162590000532611,10000000000000000000000', '-681205.5517286162590000532611', u); - T('-567847685641009361520749225200000000000000000000000000000000000000000000000,1', '-5.678476856410093615207492252E+74', u); - T('-1580251794203221398959714431000000000000000000000,1', '-1.580251794203221398959714431E+48', u); - T('-6574603652290596029643069989,10000000000000000000', '-657460365.2290596029643069989', u); - T('-7311541940635831348361450069,100000000000000000000000000', '-73.11541940635831348361450069', u); - T('-14723103323,10000000000', '-1.4723103323', u); - T('3285075251527965969147,12500000000000000000', '262.80602012223727753176', u); - T('-820320298626362566428108475000000000000000000000000000000000000000000000000000000000000000000,1', '-8.203202986263625664281084750E+92', u); - T('252919151006836181107958661434555503428356126246362605748877,500000000000000000000000000000000', '505838302013672362215917322.869111006856712252492725211497754', u); - T('-1179378935267,5000000000000', '-0.2358757870534', u); - T('-1383313883094030650884742084,5', '-276662776618806130176948416.8', u); - T('-3721825945463317461862875941,5000000000000000', '-744365189092.6634923725751882', u); - T('-772585031312025977266466033,20000', '-38629251565601298863323.30165', u); - T('-1022325206901044018628878242000000000000000000,1', '-1.022325206901044018628878242E+45', u); - T('-9331233103994018282451022848000000000,1', '-9.331233103994018282451022848E+36', u); - T('-76778786132507991606924452380,1', '-7.677878613250799160692445238E+28', u); - T('-1075535026526469098011554507000000,1', '-1.075535026526469098011554507E+33', u); - T('-6734357,2000', '-3367.1785', u); - T('292826785068446808328398273711158229435617047159402888673901,5000000000000000000000000000000000000000000000000', '58565357013.6893616656796547422316458871234094318805777347802', u); - T('-5742288086224317836910104718000000000000000000000000000,1', '-5.742288086224317836910104718E+54', u); - T('8423,25000', '0.33692', u); - T('48097700873717796851032061929605079278183,20000000000000000000000000000000000', '2404885.043685889842551603096480253963909150', u); - T('6023634370460703429713558622417776109096525391939,1000000000000000000000000000000000000000000000000', '6.023634370460703429713558622417776109096525391939', u); - T('106758008007385450139,100000000000000000', '1067.58008007385450139', u); - T('-3849580463489122904112780999000000000000000000000000000000000000,1', '-3.849580463489122904112780999E+63', u); - T('-88275520431316339743958679610000000,1', '-8.827552043131633974395867961E+34', u); - T('-472042305926729955808146449,1000', '-472042305926729955808146.4490', u); - T('-6245867883108091,1000000000', '-6245867.883108091', u); - T('-183356236298435289867506669,2000000000000000', '-91678118149.21764493375333450', u); - T('-74562808732179833652840115180000000000000000000000000000000000000000000000000000000000,1', '-7.456280873217983365284011518E+85', u); - T('-5104625575258744026028197501,1000000000000000000000', '-5104625.575258744026028197501', u); - T('-344922559321915510291490087500000000000000000000000000000000000000000000000000000000,1', '-3.449225593219155102914900875E+83', u); - T('-8563598459050660434249519489,100000000000000000', '-85635984590.50660434249519489', u); - T('17500814267583629590589899612077,250000000000000000', '70003257070334.518362359598448308', u); - T('45401405910540076895910506821437320717666680221,6250000000000000000000000000000000000000', '7264224.94568641230334568109142997131482666883536', u); - T('-84509536465048048632507,1250000000000000', '-67607629.1720384389060056', u); - T('-1751326137777370498636433863,25000', '-70053045511094819945457.35452', u); - T('-867111630064241604638707847400000000000000000000,1', '-8.671116300642416046387078474E+47', u); - T('-21318256746158533732802277550,1', '-2.131825674615853373280227755E+28', u); - T('-67579403706761435205295261900000000000000000000000000000000000000,1', '-6.757940370676143520529526190E+64', u); - T('-1417367504555887528141746601,2500000000000', '-566947001822355.0112566986404', u); - T('-25974847707227382380557472,625', '-41559756331563811808891.95520', u); - T('-981439911205743478966598319,100', '-9814399112057434789665983.190', u); - T('-610789624400704048725520972100000000000000000000,1', '-6.107896244007040487255209721E+47', u); - T('-1893232078819503172511076559,50000000000000', '-37864641576390.06345022153118', u); - T('-27975984885306222968321285120000000000000000000000,1', '-2.797598488530622296832128512E+49', u); - T('-2612911727298316430264079,62500000000000000000', '-41806.587636773062884225264', u); - T('50680230444767491,1000000000', '50680230.444767491', u); - T('-373274225495445311979038119300000000000000000000000000,1', '-3.732742254954453119790381193E+53', u); - T('-8327620769338584623732488387,100000000000000000000', '-83276207.69338584623732488387', u); - T('-4868628906895320112426939731,100000000', '-48686289068953201124.26939731', u); - T('-1193567448524866936588184537,20000000000000000000000', '-59678.37242624334682940922685', u); - T('-86830341,10000', '-8683.0341', u); - T('-6646694931396004582423920897,100000000000000', '-66466949313960.04582423920897', u); - T('-5348172887765880895603201513,100000000000000', '-53481728877658.80895603201513', u); - T('-8919495454891628197011164031,10000000000000000', '-891949545489.1628197011164031', u); - T('1559360912667,1000000000000', '1.559360912667', u); - T('-7711382430758007094636047839000,1', '-7.711382430758007094636047839E+30', u); - T('-6741391809448013052641540557,1000000', '-6741391809448013052641.540557', u); - T('-301,500', '-0.602', u); - T('-86974760786594923670130517580000000000000000000000000000,1', '-8.697476078659492367013051758E+55', u); - T('-3,5', '-0.6', u); - T('-83297684778142804104535372320000000000000000000000000000000000000000000000000000000000000,1', '-8.329768477814280410453537232E+88', u); - T('-163673076457158327,1250000000', '-130938461.1657266616', u); - T('-38956087033937387393159766230000000000,1', '-3.895608703393738739315976623E+37', u); - T('-1534311654615354489262951441,200000000000000000', '-7671558273.076772446314757205', u); - T('-8060394441780008075571792928000000000000000000,1', '-8.060394441780008075571792928E+45', u); - T('-280124687988949117330427391,2500000000000000000000', '-112049.8751955796469321709564', u); - T('-30114151670681354095135826370000000000000000000000000000000000000000,1', '-3.011415167068135409513582637E+67', u); - T('-812,125', '-6.4960', u); - T('-1370772417711,2000000000000', '-0.6853862088555', u); - T('-9001273695034747863562885281,100000000000000000000', '-90012736.95034747863562885281', u); - T('-94895895660508854551459723340000000000000000000000000000000000000000000000000000,1', '-9.489589566050885455145972334E+79', u); - T('33927,1000', '33.927', u); - T('-221228229074405139018236415000000000000000000000000000000000000000000000000,1', '-2.212282290744051390182364150E+74', u); - T('-72357217092268759,1000000000000', '-72357.217092268759', u); - T('3,5', '0.6', u); - T('-8999705506879032909995262466000,1', '-8.999705506879032909995262466E+30', u); - T('-34801868215741663768869349060,1', '-3.480186821574166376886934906E+28', u); - T('-638899147521386374389705727,250000000000', '-2555596590085545.497558822908', u); - T('-576341894025935781,10000000000000', '-57634.1894025935781', u); - T('-4499426107906193213910836749,1000000000000000000000000000', '-4.499426107906193213910836749', u); - T('-1187772132418630901316882007,12500000', '-95021770593490472105.35056056', u); - T('-328174941647878676105511874800000000000000,1', '-3.281749416478786761055118748E+41', u); - T('-3472215593316048786969586545000000000000000000000000000000,1', '-3.472215593316048786969586545E+57', u); - T('-819049308491114964745499902800000000000000000,1', '-8.190493084911149647454999028E+44', u); - T('-6323108380621192986595369,200000000000000000000', '-31615.541903105964932976845', u); - T('-111264401026058917823810189,100000000000000000000000', '-1112.644010260589178238101890', u); - T('-375536277598104783062275796800000000000,1', '-3.755362775981047830622757968E+38', u); - T('-101660024857,1000000', '-101660.024857', u); - T('-2004125726691987151280986843,25000000000000000000000000', '-80.16502906767948605123947372', u); - T('-7642170031922907778643381,100000000000000000000', '-76421.70031922907778643381', u); - T('-3602317098842106506606624929,1000', '-3602317098842106506606624.929', u); - T('-1299346412819078024158481,20000000000000000000', '-64967.32064095390120792405', u); - T('-1239554900011232365384901487,125000000000000000', '-9916439200.089858923079211896', u); - T('-4626908109136214769997540471,50000000000000000000000', '-92538.16218272429539995080942', u); - T('393786126653440528814656629984919695629424483,20000000000000000000000000000000000000', '19689306.332672026440732831499245984781471224150', u); - T('79,400', '0.1975', u); - T('-70926474960683674023948242490000000000000000000000000000000000000,1', '-7.092647496068367402394824249E+64', u); - T('-717448177428239400724351357200000000000000,1', '-7.174481774282394007243513572E+41', u); - T('93965062239421527657876691002319056463449204972859618248841032392337,5000000000000000000000000000000000000000000000', '18793012447884305531575.3382004638112926898409945719236497682064784674', u); - T('-742455691111299272393671478500000000,1', '-7.424556911112992723936714785E+35', u); - T('4327353232599424133161482714110773218878025952012887889286000677,10000000000000000000000000000000000000', '432735323259942413316148271.4110773218878025952012887889286000677', u); - T('-6406522453382260785242123219,100000', '-64065224533822607852421.23219', u); - T('-8755758445067880087438735551000000000000000000000000000,1', '-8.755758445067880087438735551E+54', u); - T('-3641369340200941843410397,100000000000000000000000', '-36.41369340200941843410397', u); - T('-784260557922398380334392781600000,1', '-7.842605579223983803343927816E+32', u); - T('-662071018037510735810792187000000000000000000000000000000,1', '-6.620710180375107358107921870E+56', u); - T('2,1', '2.0', u); - T('-6471005670399478287255928531,10000000000000000000000', '-647100.5670399478287255928531', u); - T('-8213251496116568092258251293,10000000000000000000000000000', '-0.8213251496116568092258251293', u); - T('-2433095402981113505171684571,500000000000000', '-4866190805962.227010343369142', u); - T('-7073268678570322756074595191,100000000000000000000', '-70732686.78570322756074595191', u); - T('-5922619520639844865780847779000000000000000,1', '-5.922619520639844865780847779E+42', u); - T('765719072830121,100000000000000', '7.65719072830121', u); - T('-3110127455285391882932859,10000000000000000000000000', '-0.3110127455285391882932859', u); - T('-626969950393688092623498764800000000000000000000000,1', '-6.269699503936880926234987648E+50', u); - T('-45963737194150293757063245860000000000000000000000000000000000000000000000000,1', '-4.596373719415029375706324586E+76', u); - T('778051713899,100000000', '7780.51713899', u); - T('-4459718171731138401213154589,50000000000000', '-89194363434622.76802426309178', u); - T('-1071777034967899856015183850000000000000000000000,1', '-1.071777034967899856015183850E+48', u); - T('-17597792014189525803930088410000,1', '-1.759779201418952580393008841E+31', u); - T('-73583607563995328344161936390,1', '-7.358360756399532834416193639E+28', u); - T('78478899969144273,1000000000', '78478899.969144273', u); - T('-355286094740091330430709,1250000000000000000', '-284228.8757920730643445672', u); - T('-41,50', '-0.82', u); - T('-9907765598680476853217019311,100000000000000000', '-99077655986.80476853217019311', u); - T('-2404392782688999157305680689,100000000000000', '-24043927826889.99157305680689', u); - T('-2650994750421622104977287881,1000000000000000000', '-2650994750.421622104977287881', u); - T('39983073582040014866844804541291,100000000000000000000000000', '399830.73582040014866844804541291', u); - T('-8807898557101190300230101932000000000000000000000000000000000000000000,1', '-8.807898557101190300230101932E+69', u); - T('-695393182113783444341458924,5', '-139078636422756688868291784.8', u); - T('-1706659473239464584561002977,100000', '-17066594732394645845610.02977', u); - T('-165933152156143937454202761,2000000000000000000000', '-82966.57607807196872710138050', u); - T('1538291813397103572148216063922845985226928827759,250000000000000000000000000000000000', '6153167253588.414288592864255691383940907715311036', u); - T('-13,250', '-0.052', u); - T('-2294062859474990814031336269,5000000000000000000', '-458812571.8949981628062672538', u); - T('149418055166367757421653263494051015159636829951,5000000000000000000000000000', '29883611033273551484.3306526988102030319273659902', u); - T('-4629861263429484977299994121000000000000000000000000000000000,1', '-4.629861263429484977299994121E+60', u); - T('-76174501687600226360492968090000,1', '-7.617450168760022636049296809E+31', u); - T('-6350678364890072941143667763,1000000000000000000', '-6350678364.890072941143667763', u); - - T('7325643,10000000', '0.7325643'); - T('8129753468709152191211051855224273832281,100000000000000000000000', '81297534687091521.91211051855224273832281'); - T('26846080372036394639591396,6672793', '4023214922452471497.25630571786057289667012386513324609', '72150416'); - T('151169465630612379481675652813336817561189321,200000000000000000000000000000000000000', '755847.328153061897408378264066684087805946605'); - T('48650152878444478499756261104359,1000000', '48650152878444478499756261.104359'); - T('310291026486294288245548,3136069', '98942665638509321.1423434879780971949357099446690852', '4194429'); - T('281148949800335203180214,28247', '9953232194581201656.11264913171363754779711915', '40003'); - T('8070991737,10', '807099173.7'); - T('2105837647496797835243555428994974365746550495259,2500000000000000000000000', '842335058998719134097422.1715979897462986201981036'); - T('7050549406715449007260719040610995681,100000000000000000000', '70505494067154490.07260719040610995681'); - T('4712375599056588823223,5', '942475119811317764644.6', '23351170'); - T('1812890500714000446600040219589,6454218482', '280884588237897901176.13812435378291552542223517750505532', '8240308776'); - T('1485521639981158765714509531187624755829128849,100000000000000000000000', '14855216399811587657145.09531187624755829128849'); - T('179195624045698698709602380291841534992963,397', '451374367873296470301265441541162556657.33752912', '654'); - T('60786881043136,81', '750455321520.1975303545477874468301224681956212', '6955'); - T('54350058946186575767248586,111', '489640170686365547452689.9639497075875189553277274425649764720088', '136'); - T('207448313353211937938706154109749,2500000000000000000000000', '82979325.34128477517548246164389960'); - T('18637328030895697373,20000000000', '931866401.54478486865'); - T('77127230808472816894238711,10000000000000000', '7712723080.8472816894238711'); - T('29126173556928305215214880165709856062,7', '4160881936704043602173554309387122294.5709328', '7'); - T('43333053556734019842,614489', '70518843391393.531604308619475952242596538499476346', '675048'); - T('53377793855957,559250504', '95445.231562915140439462747444833608100863907', '1363996915'); - T('347448038601,1158528605', '299.9045833667611513140004251012084', '3206002475'); - T('4723559025392992686163722415183139,100000000000000000000', '47235590253929.92686163722415183139'); - T('178091379773085237300450763077988415217238,1811184275', '98328691470714782625004163686209.3533896422549273776361277', '1811232885'); - T('805514724831305204420874185699445105715750883,100000000000000', '8055147248313052044208741856994.45105715750883'); - T('65819,6849', '9.610016056348', '8529'); - T('319168767950612554460346534967,625000000000000', '510670028720980.0871365544559472'); - T('5710296907,88986', '64170.7336772078034895641687140263', '92775'); - T('556588363946502498333308725135986051213680185539426551525214239244852201,500000000000000000000000000000000000000', '1113176727893004996666617450271972.102427360371078853103050428478489704402'); - T('20826873980146981695459788919411033,31250000', '666459967364703414254713245.421153056'); - T('2499361049528080561202511540068978284974386343138634241,1000000000000000000000000000000000000', '2499361049528080561.202511540068978284974386343138634241'); - T('418298807255269058527019236340986131039447727889611856636829077,50000000000000000000000000000000000', '8365976145105381170540384726.81972262078895455779223713273658154'); - T('6913324275323537689724784638569909,100000000000000', '69133242753235376897.24784638569909'); - T('13962383460375585294405129665013837633,2000', '6981191730187792647202564832506918.8165'); - T('373341224221778946139808778111541154755014783291201,500000000000000000000000', '746682448443557892279617556.223082309510029566582402'); - T('2605595932904747914340060901727110356316231797,100000000000000000000000000000000000000', '26055959.32904747914340060901727110356316231797'); - T('5404218768000268681499,58562496', '92281223259341.07524206277', '59176667'); - T('837600757847923350654714829279011772308108410631278941774977080884126219,1000000000000000000000000000000000000', '837600757847923350654714829279011772.308108410631278941774977080884126219'); - T('39732046116239133,500000000000000', '79.464092232478266'); - T('3508566582308615186460661,50', '70171331646172303729213.22', '689'); - T('55037110921169089073232054697568652125721273823943129,1000000000000000', '55037110921169089073232054697568652125.7212738239431290'); - T('566293124809467513,2', '283146562404733756.42441', '2'); - T('43320564587705861,41', '1056599136285508.80459063125943036359093410684247', '43'); - T('959454884256,1', '959454884256.0872639565266385531414960733727818427', '1'); - T('91278743653117380466990456156,1', '91278743653117380466990456155.68579170481078286369193', '1'); - T('10122,25', '404.88', '8317919834'); - T('12366919721,2285', '5412218.69628', '3581'); - T('6717391976887166914502653755927330777815,1', '6717391976887166914502653755927330777814.993', '7'); - T('13432031244267392897695975,26625836', '504473596407166065.98553281106366012670736', '962581771'); - T('198826963117874099525548139368203,2', '99413481558937049762774069684101.4789260648567440', '2'); - T('1348726,601', '2244.1364219063828677', '603'); - T('976694301668980861868663901012070434704655861333,1000000000000000000000000000000000000', '976694301668.980861868663901012070434704655861333'); - T('297178549846227440886808646486219,32786695', '9063998364160444988029706.7602031555788099950276275841962', '66781952'); - T('22339526413138422840472802051271868021571230079710624149228880060499,100000000000000000000000000000000000000', '223395264131384228404728020512.71868021571230079710624149228880060499'); - T('9135248819601092928115011665372155588037116079546743946559,1000000000000000000000000', '9135248819601092928115011665372155.588037116079546743946559'); - T('5286330697037762023749,10', '528633069703776202374.9'); - T('107227092928577441190850028,357', '300356002601057258237675.148458846976702', '1739'); - T('9567629701592580680115114528171473874982843,10000000000000000000000000', '956762970159258068.0115114528171473874982843'); - T('16087152277929474327956249483660452531,7812500000000000000000', '2059155491574972.713978399933908537923968'); - T('89875669677258766402915335437973697536104973046538128991,1000000000000000000000000000000000', '89875669677258766402915.3354379736975361049730465381289910'); - T('923938919,1', '923938919.0', '9691412392'); - T('48428060142308830168757150336059283056510851633772347,1000000000000000000000000000000000000', '48428060142308830.168757150336059283056510851633772347'); - T('93051527972639804714713550878952900355,496672', '187350057930867463264918398619114.62767178339', '4005220'); - T('3497280820822833818,1', '3497280820822833818.0', '7323674'); - T('923369267213275370382645033,200', '4616846336066376851913225.165'); - T('83964374249481,1000000000', '83964.374249481'); - T('194123595638199705708781601234299234156024384,573715909', '338361883630805339422410197159617608.156695518792036842720875013789726', '847457002'); - T('5637607,236111', '23.87693500091710301251170853372825835205', '293373'); - T('96319079573841658175275890975870,1', '96319079573841658175275890975869.869419481278952979', '2'); - T('35413177676239984779155768701462876116,5', '7082635535247996955831153740292575223.20'); - T('17525144964454,27791', '630605050.716203087332881753643518191177425472803', '459536'); - T('99069927604575118603830348579,20000000000', '4953496380228755930.19151742895'); - T('4625959927338367711360075575124826216422187184789056538633051077924197,500000000000000000000000000000000', '9251919854676735422720151150249652432.8443743695781130772661021558483940'); - T('16687954096803,461', '36199466587.4251659487445747440075096128888226597', '715'); - T('48983711168012156360736451565279496359797,62500000000000000000000000000000', '783739378.688194501771783225044471941756752'); - T('951604336538762886268589543789943349215119,100000000000', '9516043365387628862685895437899.43349215119'); - T('3170484800431125268583,9881458', '320851922907644.324206306397298875', '10955847'); - T('2209917901057085830155650409703230456398682421,500000000000', '4419835802114171660311300819406460.912797364842'); - T('257559146244597067867426507016,341085825', '755115362078142848262.38823327237360274380050695878', '370161150'); - T('52302828211946727812235521578754597,100000000000000000000', '523028282119467.27812235521578754597'); - T('1548611009582576944501513330034309618,3581483467', '432393734007589359758871484.98019567096887564653', '4247950750'); - T('4160735782556259525559,100000000000000', '41607357.82556259525559'); - T('7810032276912931435247371001442767211661887,10000000000', '781003227691293143524737100144276.7211661887'); - T('2699214678525489726487560119191725243,6772462978', '398557317669177478741406878.339929884663593948389215779911509998918', '8700679367'); - T('234005756036522310409974828052077,2792665138', '83792987871115935565481.6170273247418609771373578473125', '3496871917'); - T('888930141417205,472', '1883326570799.16313674359847883331', '494'); - T('93731,249276', '0.3760129334673260070153210504', '257553'); - T('1884739237,5388890', '349.745353310236416512548553007633265749648', '7464665'); - T('43774993705091173299491664598042468178382578189423014141380153967959,1250000000000000000000000000000', '35019994964072938639593331678433974542.70606255153841131310412317436720'); - T('4990606690039884835950094377597511034291,50000000000000000000000000', '99812133800797.69671900188755195022068582'); - T('880848777307,10', '88084877730.70', '10550849'); - T('117189165353141,500000000000000', '0.234378330706282'); - T('3696766657880426699915213404988822821636621907807,500000000000000000', '7393533315760853399830426809977.6456432732438156140'); - T('136878149428912649758117905461610548699832354530413221,1000000000000000', '136878149428912649758117905461610548699.832354530413221'); - T('247112873960438003987375929845431961097478236423759,50000000000000000000000000000', '4942257479208760079747.51859690863922194956472847518'); - T('32090761171034587720265676015278308236143,372372', '86179307711198983060664271253688000.8060299915140599804368969', '803032'); - T('3614723886086134485880643254470683475022113,2000000', '1807361943043067242940321627235341737.5110565'); - T('865224903023822325262781,300218', '2881988764910239643.4017314085126964034449762676', '532601'); - T('611185005509628,9139', '66876573532.07440639019695013008058748', '4159302'); - T('1518595063109297520311975384,5', '303719012621859504062395076.8'); - T('49679411118006488713997,857', '57968974466752028837.802807564217277428', '895'); - T('88166434473746490289165987929145035778940246272,282622141', '311958695669729889595472238422909108805.2448313736325421133448741444545', '385416267'); - T('18629257493748797005,3', '6209752497916265668.3441723459', '10'); - T('3105722390606004795903600587554457,8015259', '387476236339462616978889963.2007471', '8184974'); - T('186363420925320576328934,21515', '8662022817816433945.104996514626241666816484709452865', '37212'); - T('2487576402639632794634694150901775257367,500000000000000000000000', '4975152805279265.589269388301803550514734'); - T('124421130067284418607320404,18230353', '6824943547022069106.79789930562507372336112189652537764238', '26966531'); - T('7137130635754072199223,3556', '2007067107917343138.139201473525306155357', '3856'); - T('112942288681912873203,25000', '4517691547276514.92812', '505601099'); - T('1431788138645392811436351585868528725106020877729648867279053,1562500000000000000000000000000', '916344408733051399319265014955.85838406785336174697527505859392'); - T('3234595666430613200570074711,125000000000000000000000000', '25.876765331444905604560597688'); - T('3771991535846550543543187642939268809849,113246271', '33307865261599214543171912856532.545869426464382214773370432169717071927', '1862546449'); - T('159328743982472447,10889954', '14630800459.07195264553', '62191463'); - T('19156099060539,200000000000', '95.780495302695'); - T('2459812065130292014604235393568931103851693517,25000000000000000000000000000000', '98392482605211.68058416941574275724415406774068'); - T('14081093976643671519,2', '7040546988321835759.5'); - T('1398718931796139131570704959571446329,250000', '5594875727184556526282819838285.785316'); - T('226057240496116726752712879,73578', '3072348263014987180308.147530511915', '99443'); - T('794112996051185221451708830987876881997,100000', '7941129960511852214517088309878768.81997', '106276919'); - T('8216044054806771996810629067,22837', '359768973805962779559952.229583565335247922821497', '25456'); - T('23807055304320404163339151165491853782535135991908506357626995217,500000000000000000000000000000000000', '47614110608640808326678302330.983707565070271983817012715253990434'); - T('3531469840127598977918199412295084056732447544259170233,500000000000000000000000', '7062939680255197955836398824590.168113464895088518340466'); - T('7074869431756164165861127913754839263,188036', '37625079409028931512375970100166.13447956773725419869171', '551328'); - T('116727432190485304215216347036665233873946214267,200000000000000000000', '583637160952426521076081735.1833261693697310713350'); - T('322222287817074340496094,4519846351', '71290540163115.0139280683703046524993660939348992959', '4821696804'); - T('3220195518339602136340818267702090777236019441295,6573210637', '489896900642954724826783041016686466674.0816389412472740753393', '6620677169'); - T('4979158772221132031066953552941723189,1000000', '4979158772221132031066953552941.723189'); - T('8737425880160915911998771,1', '8737425880160915911998771.12725422920', '1'); - T('323045767198973747297480019029873,446', '724317863674829029814977621143.2130109419902482321169979691406', '573'); - T('640289857462018471811912,23805611', '26896594145893523.6659925258797173744700212383', '26827286'); - T('4449327148350034505583562687233,50000000', '88986542967000690111671.25374466'); - T('25753316144627889753,100', '257533161446278897.53', '6528003920'); - T('3986906378997449549838631393557,100000000000000000', '39869063789974.49549838631393557'); - T('6265774677875908010545250165153745,700772', '8941245765920881557118792082.380210681934346581057360805031205825124', '928104'); - T('230083713653,500000', '460167.427306'); - T('19377991,21577587', '0.89806107606008', '49239725'); - T('38710794736631001569771,1', '38710794736631001569771.012260896821016342565', '28'); - T('10037882653,349139894', '28.750317066316116827', '647871852'); - T('3333245366687,4471008', '745524.3575245224343350924369527004181', '6167413'); - T('26769493351047347344386695666057,50000000000000', '535389867020946946.88773391332114'); - T('1621363436291186251405436340171,5232692', '309852641105416915691853.512526821758252648366658861942981640', '7299049'); - T('4550392744783143007699048628173,20000000000000000000000000000', '227.51963723915715038495243140865'); - T('797141000219512098778764678119786879,867317228', '919088165765700780912845741.5119936704405', '962488946'); - T('14904132191968276587297737169053358300443,200000000000', '74520660959841382936488685845.266791502215'); - T('91470701131037383295747,1000000', '91470701131037383.295747'); - T('27753892633682075,3', '9251297544560691.601', '4'); - T('1788334345204020429620861096201,50000000000000000000', '35766686904.08040859241722192402'); - T('4612688956079856295802362391039,100000000000000000000000000000', '46.12688956079856295802362391039'); - T('161347204015,23', '7015095826.738876208769833554', '47'); - T('20600465972959782785256431550761005019024,339', '60768336203421188157098618143837772917.474927302472', '502'); - T('1062891113749632541,702810', '1512344892289.00064170970827727498908573320667399924', '2943629'); - T('286820046488752611155983,5611503', '51112874124588833.1799845781067795486147680004500944874455', '9222645'); - T('55268920261272895079460750602209,6', '9211486710212149179910125100368.0869540216384846614405', '6'); - T('147110482766595420803446985119783296,1', '147110482766595420803446985119783295.962905368965408966', '8'); - T('8584260220485230830750630108611597500009840276389875279,100000000000000000', '85842602204852308307506301086115975000.09840276389875279'); - T('45997967047497611745453,100', '459979670474976117454.53'); - T('25322562031741252483400559,1000000000000000000000000', '25.322562031741252483400559'); - T('7588887,2056', '3691.09289882762466516742', '8887'); - T('823890318784964048554080494714815498182966138912381,100000000000000000000000', '8238903187849640485540804947.14815498182966138912381'); - T('9304855287990530136771405094519,1', '9304855287990530136771405094518.82504', '2'); - T('47011776728314188266315200417504146431,1000000000000000000000000000000000000', '47.011776728314188266315200417504146431'); - T('2466085134442399070795709748333417449542855462250787166784205121205109,500000000000000000000000000000000000', '4932170268884798141591419496666834.899085710924501574333568410242410218'); - T('3442044952553264476,7', '491720707507609210.91163844234598216', '7'); - T('80868288238431,874004803', '92526.1371114353018034864163941998778367260', '931966805'); - T('6985103397660981071,7353', '949966462350194.624098996515677191782270599392137132201', '7793'); - T('468653409753396391457767631,5000000000000000000000000', '93.7306819506792782915535262'); - T('60,1', '59.9083995049887984453397720', '2'); - T('1585744058865312687896395129349,250000', '6342976235461250751585580.517396'); - T('20479199716624053465947561943251653,500000', '40958399433248106931895123886.503306', '4535856588'); - T('3479780591056475652402107167313793111293,5', '695956118211295130480421433462758622258.6'); - T('467879214344174541429051133613371644281991908668101132848827627,50000000000000000000000000000000000000', '9357584286883490828581022.67226743288563983817336202265697655254'); - T('3780398268842275439375533,500000000000000', '7560796537.684550878751066'); - T('599108489,11', '54464408.05188181950959', '11'); - T('215021045713727250783388053394109267617,4166009', '51613197598403472192063928185010.9463558528077204341344511373832016128195', '4179908'); - T('159241433857,5000000', '31848.2867714'); - T('160936670389208853641372968978236488980668850585131,500000000000000', '321873340778417707282745937956472977.961337701170262'); - T('2370282706660426694332478,23799509', '99593765008363268.9368708404866667088069121270797650', '24298070'); - T('597763381558982555051400082606522098999937129,100000000000', '5977633815589825550514000826065220.98999937129'); - T('4431461,1000', '4431.461'); - T('8250115774778471280985677882646125194730659155862382409,100000000000000000000000000', '82501157747784712809856778826.46125194730659155862382409'); - T('12205438,45', '271231.955313', '47'); - T('19202320927991171,2', '9601160463995585.5'); - T('73746355649075260,3', '24582118549691753.331713657589540437', '9'); - T('47309,1769001', '0.026743342711584657', '4015485'); - T('1926643365791669364845561,8927875671', '215800873218910.819759058112', '8935017174'); - T('8952538174202125514384339,585', '15303484058465171819460.40854848482726775573160880288331876238', '946'); - T('171044475643258691052591881190402011,2500000000000000000000000000000000', '68.4177902573034764210367524761608044'); - T('1417176227509505,17149674', '82635753.164142070572304998841', '20372906'); - T('3380729603876017655487973251773669209031,27845', '121412447616305177069059912076626655.0199676781941', '40016'); - T('890269765213404348432913996063275824595152162733,100000000000000000000000000000000000', '8902697652134.04348432913996063275824595152162733'); - T('664601293959812682633636004618957911435231667680903297856881,20000000000000000000000', '33230064697990634131681800230947895571.76158338404516489284405'); - T('778481676645324115540463089347,20000000000', '38924083832266205777.02315446735'); - T('75705502543433,7812500000000', '9.6903043255594240'); - T('81546124479956359876565726669992644826500740941,100000000', '815461244799563598765657266699926448265.00740941'); - T('24701,4', '6175.250206214726482', '51'); - T('5311817589061598103376746873687003094342952495326331677278701943,12500000000000000000000000000000000', '424945407124927848270139749894.96024754743619962610653418229615544'); - T('587612851301963849841025647818575969,100000000000000000000000000000000000', '5.876128513019638498410256478185759690'); - T('717873356,808272029', '0.88815810796788070', '942302647'); - T('8684149473480042958819491590345594042855,92', '94392929059565684334994473808104283074.5108197400739669029736', '109'); - T('557213,6836', '81.51155646233081505773189164', '13939'); - T('6358852540742501026007669889675383610909273172987401669,100000000000000000000', '63588525407425010260076698896753836.10909273172987401669'); - T('9613,1', '9612.9773812129992689657249691195343', '10'); - T('286113583488621159688740779858763238199941269901,1000000000000000000000000000000000000', '286113583488.621159688740779858763238199941269901'); - T('462642039300426299179091176857436950199,413144', '1119808200773643812276327810297225.54411778943845784669037258980', '1448446'); - T('627912942633907772006040,1', '627912942633907772006040.0'); - T('8887831015869015364122580184912527,100000000000000000000000', '88878310158.69015364122580184912527'); - T('25269814867297462150639281025731,5000000000000000000000000000', '5053.9629734594924301278562051462'); - T('99529184605,1', '99529184605.0', '650785'); - T('1658758680465486368314728898678949517,1981', '837334013359659953717682432447728.17617366544553', '11197'); - T('7,1', '7.056759118252905562', '2'); - T('2194117028293242686416582588432860977,5000000000000000000', '438823405658648537.2833165176865721954'); - T('47876011607044241,59126929', '809715850.573674154461835825714251915075523523', '4052259112'); - T('10497951457730554025955004980575188440216805387873,200000000000000000', '52489757288652770129775024902875.94220108402693936500'); - T('185573471761473313640214816617129543,200000000000000000000000000000000000', '0.927867358807366568201074083085647715'); - T('13136066791,2000', '6568033.3955', '857278646'); - T('786449314441,10000000', '78644.93144410'); - T('258069327759691253346816792459688368610750867,50000000000000000000000000000', '5161386555193825.06693633584919376737221501734'); - T('2400603934155970960994087661933,100', '24006039341559709609940876619.33', '52973663'); - T('53787312868755909573338050263817591013,1000000000000000000', '53787312868755909573.338050263817591013'); - T('65846043893884622068872344771627703174979234269,1000000000000000000000000000000', '65846043893884622.068872344771627703174979234269'); - T('413208107310727259011301805,1', '413208107310727259011301804.818566766164839933798622982', '1'); - T('380767438123951525794980657112504797825,680920177', '559195410835874710458140319012.02539607663880400492014675272', '689501446'); - T('3834864268417157885795059233263411,50000000000000000000', '76697285368343.15771590118466526822'); - T('291722167388405104196504,669403279', '435794350789854.8913389831184259847904358843278386', '904770649'); - T('32620215359,500', '65240430.718'); - T('1796562823633852909577,2', '898281411816926454788.285872', '2'); - T('427388755061110023176602282445173618523399130350681998042193349558569077343,5000000000000000000000000000000000000000', '85477751012222004635320456489034723.7046798260701363996084386699117138154686'); - T('6120788215815611148178349402985667902090005391,2500000000000000000000000', '2448315286326244459271.3397611942671608360021564'); - T('5152513511677523,168', '30669723283794.7797667708156960783', '283'); - T('310212151,2', '155106075.4712372', '4'); - T('4699524488896952877010,3', '1566508162965650959003.35067266814212548734090212433985', '5'); - T('70596591,100000', '705.96591'); - T('69579827425857277909,7355044059', '9460151002.1841295279996092270403052', '7426098425'); - T('96855367597936633192863,100000000', '968553675979366.331928630'); - T('8688367572560606063,100000', '86883675725606.06063'); - T('28879513,100000', '288.79513'); - T('18800652833943208658107123506275565438787,40', '470016320848580216452678087656889135969.675'); - T('1146931396095000518282937400043083943334700,4602527', '249196016904409364308549933556736102.435618520', '8225878'); - T('2019756551427915738961933054973199346876419,5000000000', '403951310285583147792386610994639.8693752838', '741757710767379773640708586558'); - T('159260774150855645667623300326629,10000000000000000000000000', '15926077.4150855645667623300326629'); - T('63365344813375864020105079652680969461686025291,10000000000000000', '6336534481337586402010507965268.09694616860252910', '688235748647978162333833362258291330722279331'); - T('1461532669,5000000000', '0.2923065338'); - T('390058219943639629654109687634774504333495620881,1000000000000000000000000000000000', '390058219943639.629654109687634774504333495620881'); - T('299225805773161690264821787540667,5000000000000000000', '59845161154632.3380529643575081334', '2584812000841991553143215804559645'); - T('81603234217578447206418101677952309588084613059984751910997827257167,156250000000000000000000000000000000000', '522260698992502062121075850738.8947813637415235839024122303860944458688'); - T('2565677724908492708768279520615817013536305135641817470099879036,374196298701793888137550171191', '6856502145557413849706463648425482.701677508664756140796680003271200', '869790929515477340097538635993'); - T('9612780561,1000', '9612780.561'); - T('936512323689541548094571523023523188200531,1000000000', '936512323689541548094571523023523.188200531'); - T('152234006509072541435610651574042873,25000000000000000000000000000', '6089360.26036290165742442606296171492', '11857604157972831619815396931384638829511784605'); - T('64208688601822739753865109352559333654371,2631857012', '24396723799606914113715957967308.95259380109514855361003', '576672018138'); - T('13680813615256177,5000000', '2736162723.0512354', '5926568749173865070557'); - T('12399570290333756330011977724487093294866653,500000000000000000000', '24799140580667512660023.955448974186589733306', '67333132803983266789655187746269204'); - T('4506349014426198904317777807334981419,500000000000000000000000', '9012698028852.397808635555614669962838'); - T('725431855797035508085239096174824869288283239,100000000', '7254318557970355080852390961748248692.882832390'); - T('355915386841717685353688119260713,100000000000', '3559153868417176853536.88119260713'); - T('2914867717398323136217,100000000', '29148677173983.23136217'); - T('1326209433713162649634239109961037850584868175033,10000000000000000000000000000000000000000', '132620943.3713162649634239109961037850584868175033'); - T('4778160350176337979760052281234320029,10000000000000000000000000000000', '477816.0350176337979760052281234320029'); - T('86665339051641131146005186162442032968947419505854245963,125000000000000000000000000', '693322712413129049168041489299.536263751579356046833967704'); - T('430351447085339973547588264756339950843789831043,500000000000000000000', '860702894170679947095176529.512679901687579662086'); - T('55525130114430055347694274663,763982638008', '72678523505724782.1378481069695424350', '850916842740'); - T('220792158460126762184413874181,10000000000', '22079215846012676218.4413874181'); - T('94783059874905327086792198452757929148500148142136001437,250000000000000000', '379132239499621308347168793811031716594.000592568544005748'); - T('6488407113121033385211896005019711681817,100000000000000000000', '64884071131210333852.11896005019711681817'); - T('47333842438492360793095254962373810441359677680855935665786394332060804133207,500000000000000000000000000000000000000', '94667684876984721586190509924747620882.719355361711871331572788664121608266414'); - T('2367138419900331631616148353601561797867243729737608115661,100000000000000000000000000', '23671384199003316316161483536015.61797867243729737608115661'); - T('88626039212907148865042680324936804431893182827,10000000000000000000000', '8862603921290714886504268.0324936804431893182827'); - T('134036367111046300205853082693215909752923821078333787,2000000000000000000000000', '67018183555523150102926541346.6079548764619105391668935'); - T('1290426619008005556475919972597725061539536069,25000000000000000000000000000000000000', '51617064.76032022225903679890390900246158144276', '964910734608101784280721264706455020684'); - T('51515831610611387382745267,6250000000000', '8242533057697.82198123924272'); - T('7952216990048092855359353056111362078447011828178913246364701327,10000000000000000000000000000000000', '795221699004809285535935305611.1362078447011828178913246364701327'); - T('538015045243626212422430662564753243027945021916339128227,100000000000000000', '5380150452436262124224306625647532430279.4502191633912822700'); - T('43577529369368712265446116906547230280422309612453,500000000000', '87155058738737424530892233813094460560.844619224906', '796419722408512060993'); - T('1161347707886748476637875642925084188220298315962357581,891732452430846866981741483', '1302349942206247176394632274.42078366656260573729837386635563', '979302956680189066606017794'); - T('1528624826136387009578521,25000000000000', '61144993045.45548038314084', '8024287939412517568729347651281075'); - T('3355746698476190015402680252180735699888853,50000000000000000000', '67114933969523800308053.60504361471399777706', '8915896738291537715389083695879542442064029'); - T('980289651663460623618247173,100000000000000000000000000', '9.80289651663460623618247173', '644505847543429115712324396'); - T('51055624915620324003432130818561734442539,10000000', '5105562491562032400343213081856173.4442539', '2809024769655863489136966521'); - T('41875396716460469922985854768609021869387681761,125000000000000000000000', '335003173731683759383886.838148872174955101454088', '216625103073443887003029267945'); - T('105780502837966983,13631', '7760289255224.633775993192903826796476494397758857808', '13861'); - T('1938155266888975965598512083832127,251657941372', '7701546219135603482029.870015176732906490144727404299117584', '547888565206'); - T('99954595750029,10', '9995459575002.9'); - T('4249542002102445996878781,10000000000000000000000000', '0.4249542002102445996878781'); - T('485671,250000', '1.942684'); - T('13356987302624015208420862387472998,746681507193', '17888466734413902028886.0311842409055156116317714302570867', '849696537110'); - T('2668448503233496883227988430416595281601,1000000000', '2668448503233496883227988430416.595281601'); - T('3640373983168722911281713865270438495806072129379784031313632242881734911,50000000000000000000000000000000000', '72807479663374458225634277305408769916.12144258759568062627264485763469822'); - T('1818728887,200', '9093644.435', '476185163436332077972781497090111043581420'); - T('802345758447757541858014527779737950265044017,1000000000000000000', '802345758447757541858014527.779737950265044017', '8387249919619107142865224089883458341020176321'); - T('595208804134258162637737,100000000000000000000000', '5.95208804134258162637737', '900644264372865329335187168932351592714013'); - T('13988441958679191876839735942604595286414864789,100000000000000000000', '139884419586791918768397359.42604595286414864789', '5655831590440584955875'); - T('2085083269139810791270306641073124298284478872355022690995133,50000000000000000000000', '41701665382796215825406132821462485965.68957744710045381990266'); - T('63143145632769116262051260423942651269,1000000000000000', '63143145632769116262051.260423942651269'); - T('1407997631298057561573924769518255515279313425669860717,10000000000000000000000000', '140799763129805756157392476951.8255515279313425669860717', '327937261477572180619558003617237646356733892'); - T('270833075343099303551865182416448009,1000000000000000000000000000000000', '270.833075343099303551865182416448009'); - T('9108779,100000', '91.08779'); - T('1290586935123071,1000000', '1290586935.123071'); - T('469132037299556835463,1000000000', '469132037299.556835463'); - T('455380269621149826,1', '455380269621149826.0', '29816950548028'); - T('59036688354560778646766626225702807845034056189868056799,100000000000000000000000000000000', '590366883545607786467666.26225702807845034056189868056799'); - T('134877717700773438669846465447856699885143,400000000000000000000000000000', '337194294251.9335966746161636196417497128575'); - T('16122989466646638395384532997642495,812372', '19846805978845453062617289859.377840447480619999019072107458825800245', '1022628'); - T('41676689473,419541', '99338.776122', '477053'); - T('948783386589836295531621640054416694045428069792652292815184843252620407087997,10000000000000000000000000000000000000000', '94878338658983629553162164005441669404.5428069792652292815184843252620407087997'); - T('183987075285353368451987553220870945911,100', '1839870752853533684519875532208709459.11', '4771405818636333119008616393205342343236'); - T('8284467081338201094106418401321,1000000000000000000000000000000', '8.284467081338201094106418401321'); - T('126835799338565188592427149928234243606839,20000', '6341789966928259429621357496411712180.34195', '487302037789409112102552330066366980508855813174'); - T('202777274382581430728017680787579982546489517,229892480925189939516479', '882052660298045344051.7919993163515770841250643782458114275328', '746044076719153861455150'); - T('3738015590431,5', '747603118086.2'); - T('301106896154595422209552298959107137373547203141065553859057389421821,250000000000000000000000000000', '1204427584618381688838209195836428549494.188812564262215436229557687284'); - T('341334346359,543174817', '628.406059478637427329224571381873725166216', '876128137'); - T('465138295089535296259774745663038553386930899198195570591,20000000000000000000000000000000000', '23256914754476764812988.73728315192766934654495990977852955'); - T('82769483306049,10000000000', '8276.9483306049', '33839355334'); - T('556953498133884269,68', '8190492619615945.13225248677717', '92'); - T('45318755494241836794770073,1000000000000000', '45318755494.241836794770073', '1253935394801806614019883297829417163126525'); - T('1858914525035831826768925339743,200000000000', '9294572625179159133.844626698715', '31391560509860145405596'); - T('425343351349790045976513159948568763820438862683367,100000000000000000000000000000', '4253433513497900459765.13159948568763820438862683367', '7721074673031296384304307266121470119427'); - T('71354211162897369216945850343222823881026041367233,100000000000000000000000000000', '713542111628973692169.458503432228238810260413672330', '144939713832937271061627357504826456742'); - T('144714939860168363453308091038982,4284977', '33772629318703079025466902.398538428561', '5618239'); - T('2317035080099534328156555098955006964997947989671,5000000000000000000000000000000000000000', '463407016.0199068656313110197910013929995895979342'); - T('12220710712628394678137945125840492835,295726726654365551281703', '41324336325243.639147174633347897967505321910146183513', '461406359261841272137912'); - T('4164103,50000000', '0.08328206'); - T('7502614012109051682244916192266750188051123,100000000000000000000', '75026140121090516822449.16192266750188051123'); - T('323880445913,500000', '647760.891826'); - T('58136053747539046641739287759965480752,70045887', '829970983842906388518419186553.60136637287497', '86239491'); - T('50255437,100', '502554.37'); - T('450233554293111245876449378888745591234681102067569,5000000000000000000000000', '90046710858622249175289875.7777491182469362204135138', '3810754204488023014210763363'); - T('200222822546125679699429097695077,100000000000000000000000', '2002228225.46125679699429097695077'); - T('3783671589181030205501527752342356874517572828977,500000000000000000000000000000000000000', '7567343178.362060411003055504684713749035145657954'); - T('40048820082402526973,30', '1334960669413417565.766541760088934259233455362', '55'); - T('19682241,5000000', '3.9364482', '2938089409064663302584899743202354591655563930'); - T('3847570170988597157763381309021862223325329,1000000000', '3847570170988597157763381309021862.223325329'); - T('302871942581513778978519519,50000000000000000000000000', '6.05743885163027557957039038', '7739846393033927255652731261656491478657146'); - T('326080663059742589574506673375771249877,100000000000000000', '3260806630597425895745.06673375771249877', '550868828960159419120535470417267167'); - T('96832187539664765931343834203105130885992737,2500000000000000000000', '38732875015865906372537.5336812420523543970948', '3389413421383652579250716211200348'); - T('271852185141591302785258831339,100000000', '2718521851415913027852.58831339', '326060519878426625637075641056508361'); - T('48700692997319228087245485443026803016745947787367383,5000000000000000000000000000000000', '9740138599463845617.4490970886053606033491895574734766'); - T('40758214623530792633726096531289862600019220056526601,50000000000000000', '815164292470615852674521930625797252.00038440113053202', '5221210587873615917315733'); - T('1241221035324719632397392464340037510556481149089904847941523,10000000000000000000000', '124122103532471963239739246434003751055.6481149089904847941523'); - T('48037863508976458691221362323501021215551,4882812500000000', '9838154446638378739962135.0038530091449448448'); - T('193622000346959273707446061164100672839811,2143395561', '90334235952520606021468783458071.49539011805390223029', '2265033200'); - T('67783685294777359438349711011,20000000000000000000000000', '3389.18426473886797191748555055'); - T('12617473737636720451218269740609659622541624,159627839', '79043065524659019227957284697750369.36095854808884558276454809642992365632', '174329681'); - T('9684474818082811551223783413257727824992067,1562500000000', '6198063883572999392783221384484.94580799492288', '49209400621412262419'); - T('17505591753702885777016987703565333702388539,2500000000000000000000000000000000000000', '7002.2367014811543108067950814261334809554156'); - T('947913360646751474137651443537325162671,95614802879262668687699', '9913876639412481.794682748986875680160639360860844', '97032668484031432706648'); - T('87432797,2000', '43716.3985'); - T('52266359279671923770562530491,1000000000000000000000000000', '52.266359279671923770562530491'); - T('934519820781022674420129570582560225765920330071,12500000000000000000', '74761585662481813953610365646.60481806127362640568', '8642213980970552163513'); - T('50083810531494711281387558,56570303851847', '885337484887.12586165119274913582149678253727190', '78326898482642'); - T('3972190938628200176537,10000000000', '397219093862.8200176537'); - T('18121256332358987866268770477428593607665037,200000000000000000000000000000', '90606281661794.939331343852387142968038325185', '921193442621072417175235574539201255016'); - T('14987898155158472518478544881232078802611860873609524963,2500000000000000000000000', '5995159262063389007391417952492.8315210447443494438099852'); - T('3239212309823789165605527377995418545725605705,14170665490304070723367973333508266', '228585757813.57202362946598425863064253567493626119', '86979626336746925002222279115462537'); - T('122185041583802144366142,5', '24437008316760428873228.4', '8000951389854267175050'); - T('657574695679001861295665451464661555661,10000', '65757469567900186129566545146466155.5661', '2507718086460574385741706208476049260047621469'); - T('6360428604897138048594396059747553,10000000000000', '636042860489713804859.4396059747553', '244160781758980'); - T('21351223921251662111677047871929368,23', '928314083532680961377262950953450.7838973425314927418923934606452990487', '30'); - T('289499461511853909335456535686028099405454280671300094239293194461506601099,5000000000000000000000000000000000000000', '57899892302370781867091307137205619.8810908561342600188478586388923013202198'); - T('976859569751666674770433143725255060903,2000000000000000000000000000000000', '488429.7848758333373852165718626275304515', '192870444813125961651197355653979526967'); - T('8711911,24', '362996.29144884884', '91'); - T('47961961919420699035752271439053656196891,1000000000000000', '47961961919420699035752271.439053656196891', '1432836513794575009230872452783621'); - T('36002186243558704970796134460620318473988856831,2500000000000000000', '14400874497423481988318453784.2481273895955427324'); - T('347658515811,125000000', '2781.268126488', '18168322069934165333666594401837841045656351551'); - T('4744824007215869949704323431169019043851337919936522927179,10000000000000000000', '474482400721586994970432343116901904385.1337919936522927179'); - T('18647457854156074231876861461127052818609195520980488636185434563,50000000000000000000000000000000000', '372949157083121484637537229222.54105637218391041960977272370869126'); - T('88636422031310834818570712943870555589,10000000000', '8863642203131083481857071294.3870555589'); - T('8907393333063962550030633954046846122487647,500000', '17814786666127925100061267908093692244.975294', '738024193644869313081788449951849'); - T('5347810730899001839326028336703,1000000', '5347810730899001839326028.336703'); - T('83499427757,10000000', '8349.9427757', '537893050789928685742496508297'); - T('91030793284677869802,1', '91030793284677869802.0', '54365179780137798417812339693'); - T('139576870289544319,15393617308715296', '9.0671911280086886680514259430164', '34314606681915854'); - T('526728365945557273665550256298589878104412618423937,1250000000000000000000', '421382692756445818932440205038.8719024835300947391496', '914852587643922476861639338196683814291555'); - T('818477009119923314771842558536624613582668934883,20000000000000000000000000', '40923850455996165738592.12792683123067913344674415'); - T('164078868342751098016,64915', '2527595599518618.1624586', '69194'); - T('293978517263308243537157587247782681150732925,5389019', '54551397436770633678811966936428073671.80054941353888320018', '5423880'); - T('16896047083967,200', '84480235419.835'); - T('104972899545933771066622411344760258240458360899093,10000000000000', '10497289954593377106662241134476025824.0458360899093', '7205746832408993529175409871720727602599'); - T('721550565141436165,78491572038293', '9192.7138978617930051035079340183063425', '114711958041391'); - T('642808470971740957339375857676583667488830045491443,2500000000000000', '257123388388696382935750343070633466.9955320181965772'); - T('25547609239638147055212848154480190930531,1000000000000000', '25547609239638147055212848.154480190930531', '956611854763149744692116271165'); - T('63725524120161766602391195314216892192697,100000000000000000000000000', '637255241201617.66602391195314216892192697'); - T('5135812052028819027098843325324594885149,100000000000000000000000000', '51358120520288.19027098843325324594885149'); - T('53823225503436626111601,100000000000000000', '538232.255034366261116010'); - T('84772164557665415263075633416115167894928760949624252554563147439736263703,10000000000000000000000000000000000', '8477216455766541526307563341611516789492.8760949624252554563147439736263703'); - T('6769664484487816999120299051126228678705642768668574797742,193743613880784562681728605', '34941355479481073234753500993749.9459542322571041925382270549294049381061', '211314918688969418804736477'); - T('924366516845377679336424,1162633928094070467838273', '0.7950623962614875520469822998', '1975805181618643839348076'); - T('77572007179,100000000', '775.72007179', '11829149976320'); - T('334089623626745537032388435915351225103753617,50000000000', '6681792472534910740647768718307024.50207507234'); - T('13498748436005386978369839564419223032439008199537017,100000000000000000', '134987484360053869783698395644192230.32439008199537017'); - T('90490381500830768647702025423,125000000000', '723923052006646149.181616203384', '961797459451554264950219276775915317946969734'); - T('5122161348451940740499291,10', '512216134845194074049929.1', '394574323186626013065489993123031'); - T('647855253,1', '647855253.0'); - T('6739958677034739744526166360174781560887228448458551401840878517716909,1000000000000000000000000000000000000000', '6739958677034739744526166360174.781560887228448458551401840878517716909'); - T('29091323665776070746692915891291406784815,515462320066', '56437342814992192098354407772.812600292121', '529393438698'); - T('496334264543794411305432918384584691,50000000000000000000000000', '9926685290.87588822610865836769169382', '29049581566777794866190221032687140418'); - T('8753315153638170826059223897506472318301157473753,1000000000000', '8753315153638170826059223897506472318.301157473753', '85364248144953441121602575793592689255772062'); - T('403542021675968571796035012464419951,4287', '94131565588049585210178449373552.589456498753402006170187050920091', '7569'); - T('594350241966914532560460828210265427161371137,10000000000', '59435024196691453256046082821026542.7161371137', '37574267571308361093683177199409609584373'); - T('15073005193012506,4955', '3041978848236.630877878990635453002381471', '5133'); - T('13262456470877201216542736093570139,200000000000000000000000000000000', '66.31228235438600608271368046785069500', '774102365994926801596084747934965835393944101916'); - T('294594117792262322334048360348006989133,100000', '2945941177922623223340483603480069.89133', '5284650921380'); - T('2036856646580353988754209669686648294707,1000000000000000000', '2036856646580353988754.209669686648294707', '29099065293427480893828927261338'); - T('180007401117801177,24077', '7476321847314.9136935645446918134', '26301'); - T('754812580262694694896295635929668953,1000000000000000', '754812580262694694896.295635929668953'); - T('46737787953832186777355613171050728218666711,500000000', '93475575907664373554711226342101456.437333422', '691648681170749354'); - T('190706002804671951924923171009850382212424001290162408147668760121797397,100000000000000000000000000000000000', '1907060028046719519249231710098503822.12424001290162408147668760121797397'); - T('876656568077577748604467778917147906790921181,5000000000000000', '175331313615515549720893555783.4295813581842362'); - T('6537572759474510978019763055947,2500000000000000000', '2615029103789.8043912079052223788'); - T('4084064084496559348260554164312115397804071,10000', '408406408449655934826055416431211539780.4071'); - T('7624072166846972160236154899045401668245306574381,10000000000000000000', '762407216684697216023615489904.5401668245306574381'); - T('177905487516777613587301880159113906479,195312500', '910876096085901381566985626414.66320117248', '6176184286'); - T('61831932067541525703246230050884,1', '61831932067541525703246230050884.0', '38989042121550969073469994280949'); - T('2726,501', '5.4411176792808', '776'); - T('303592203692208117214,635873', '477441570395673.5342025844991732249', '649536'); - T('550810457267856795577333963103167983,1000000000000000000000000000000', '550810.457267856795577333963103167983', '613145053953638371365146050566423'); - T('9612212037,125000000', '76.897696296'); - T('19854238142631550950262260304626082745471,37901467699', '523838240257787937603272504463.70854524809625103906310953', '40952250789'); - T('4544923928273434665236266014745010426628274,1096333144070264351987790901', '4145568299978486.279365051939148738458218639823299', '8537712898310208075262736912'); - T('290281008735066620365246906258552421932457445333,10000000000', '29028100873506662036524690625855242193.2457445333'); - T('1241037210471406591442469574953248591923111373602168667041493,2500000000000000000000000000', '496414884188562636576987829981299.4367692445494408674668165972'); - T('1861288631961340435812093,5000000000000000', '372257726.3922680871624186'); - T('4606419796132285145444663293643444818654488971283369022438656603,1000000000000000000000000000000000000000', '4606419796132285145444663.293643444818654488971283369022438656603'); - T('1669553057719,10', '166955305771.9', '8904226427748599439'); - T('12986349851069138804910894156891141,10000000', '1298634985106913880491089415.6891141', '899784234279572148861700827'); - T('67976496070837962006325629822530505039572859443166349265322123,1000000000000000000000000000000000000', '67976496070837962006325629.822530505039572859443166349265322123'); - T('14888274078142413593939188117,30', '496275802604747119797972937.2341911747299802284464386794810513', '39'); - T('1864264547760926364924249007253274324985177177877,100000000000000000000', '18642645477609263649242490072.53274324985177177877'); - T('641495287700451270339673,1782139719136440677413', '359.957909479339969376522560097960864', '3056779573484499009088'); - T('35386938150365066827946983062788302882742764047401931324672517379,500000000000000000000000000', '70773876300730133655893966125576605765.485528094803862649345034758'); - T('4777468662711829819443534803439171840234159,178583972921', '26751945230971166111811483364592.179982673703975838988713621959299431584', '437519908206'); - T('3483541015477817879719467546289485218183998679,2000000000000', '1741770507738908939859733773144742.60909199933950', '83159072643084822474226334121133568627'); - T('111029882872498,4311275609', '25753.3716101836903', '5409449457'); - T('5720723061390066,1169615', '4891116359.990309631802', '4121879'); - T('231690198058125307182393583380655131,100000000', '2316901980581253071823935833.80655131'); - T('785496570070925429293,20', '39274828503546271464.652502190252240978711699', '22'); - T('32844860194853812869198888570842117997979071035777472888657362673,5000000000000000000000000', '6568972038970762573839777714168423599595.8142071554945777314725346', '905302824861571794974789992'); - T('16498218387700361806672647974301337909169,6250000000000000000000000', '2639714942032057.88906762367588821406546704'); - T('242421647746889969,6067935407799844', '39.951257133567439718340905', '190386947376923275'); - T('84558420761363869643064360953349,10000000000', '8455842076136386964306.4360953349', '6083651091899923443690'); - T('3598344761346319138456455141169710488001767817863349,500000000000', '7196689522692638276912910282339420976003.535635726698', '6036430781596647112651702874946851436073'); - T('824416533850205237891728394872441,1', '824416533850205237891728394872441.0', '1270229614801297875'); - T('335030447307372600715767872105686598725232815951617004014831,50000000000000000000000000000000000', '6700608946147452014315357.44211373197450465631903234008029662'); - T('5315911067632204213000620089949667373095344325293668193104565,2501970004127297621628283', '2124690167693048092976376585227236996.721538833089666153400428951073', '171422422880513480794848980'); - T('82399859561,1000000', '82399.859561', '8007741850781315'); - T('9892854397114191944592435550624273099,500000000', '19785708794228383889184871101.248546198'); - T('482407510494718039597752127429518561787157,100000000000000000000000000000000000000', '4824.07510494718039597752127429518561787157'); - T('999219844563549589130339540247689,5000000000000000000000000', '199843968.9127099178260679080495378'); - T('32624665975434667774707373884930901627548640830986443495723665279,50000000000000000000000000000', '652493319508693355494147477698618032.55097281661972886991447330558'); - T('73322735201975172815448646322842399037093611,10000000000000000000000000000000000000', '7332273.520197517281544864632284239903709361100'); - T('5584344580393,2000000', '2792172.2901965', '67978301406759380237407609039081408522371172962'); - T('170698813505081259998189073431460004483981154768324955353,100000000000000000000000000', '1706988135050812599981890734314.60004483981154768324955353', '8303823206850919910010652520558244731932'); - T('703,10000', '0.0703'); - T('21213217171037545905806,1377', '15405386471341718159.6267247682855942563690178641195095', '2077'); - T('8296927175846011,250000000000', '33187.708703384044', '211191546934584837648'); - T('409552981550509729869340257571088152877592694961334449207,50000000000000000000000000000', '8191059631010194597386805151.42176305755185389922668898414'); - T('155027340589770073651612776,1737956327', '89200941462880657.099280939526163363777810267831118712467', '4986922301'); - T('167120807435010524556182779027297683324205827407507983577,436666647901481563398', '382719422786590845258091621853314922.96446004593674086717010', '702557026070523204786'); - T('441178720520318407454911830068962225120047224526619130534738920629112747,100000000000000000000000000000000', '4411787205203184074549118300689622251200.47224526619130534738920629112747'); - T('1869381106689425601212408179,250000', '7477524426757702404849.632716', '4624982'); - T('3317200487984067615668861775794559427256935200,6585479539550110485794411', '503714341235457458568.866804056313036956801153194', '6681245709808538985864323'); - T('3,4', '0.76011435975445459973959', '6'); - T('354884114822406966217620182813482001432151618849817803161826753,50000000000000000000000000000000000', '7097682296448139324352403656.26964002864303237699635606323653506'); - T('25087,50', '501.74', '85274653480326161797'); - T('650965999980720974038905679127117623356653858122009681,100000000000000000000000000000', '6509659999807209740389056.79127117623356653858122009681', '183925089257431510839976366871018952574324990'); - T('1751490441040021871522373727331,2000000000000000000000000', '875745.2205200109357611868636655', '75633648534698941212843963259058'); - T('26023193025631228939744774315993248032983335603365475283635011873374371768389,40000000000000000000000000000000000000', '650579825640780723493619357899831200824.583390084136882090875296834359294209725'); - T('321404575157883362782850293105646894530775907836460116367,3125000000000000000000000000000', '102849464050522676090512093.79380700624984829050766723723744'); - T('676431378140908951740507719346273515877844188802588789,125000000000000', '5411451025127271613924061754770188127022.753510420710312'); - T('3527866022768742962936331430909250221,1000000000000', '3527866022768742962936331.4309092502210'); - T('768670768316183532755914505999,1000000000000000000000', '768670768.3161835327559145059990'); - T('2363639937483203621,39891', '59252461394379.775413', '43820'); - T('1935991763481,5000000', '387198.3526962'); - T('84869849518884530417484124084533612955218764283953737717972,10107032631283871345', '8397108490200226398800083828224629264362.359197032737297920889324', '13064222726791451522'); - T('204886710340038538694354698793188156503362390502152775076648235731,5000000000000000000000000000000', '40977342068007707738870939758637631.3006724781004305550153296471462'); - T('1835971874232282120848076240479727,50000000000000000000000000', '36719437.48464564241696152480959454'); - T('18757216144126861202054952112882561,31250000000000000000000000000000', '600.230916612059558465758467612241952'); - T('1513207436951935998024078252323,21502756', '70372720452761311062827.400000399948732291662947549700417847500', '79362321'); - T('492152380966786320942977,1000000000000000000000000', '0.492152380966786320942977'); - T('322784976894366795182672726861732071108792529212189953293,500000000000000000000000000000000000000', '645569953788733590.365345453723464142217585058424379906586'); - T('6599835778515480731397541233194527935698039249154668674834348842207421,100000000000000000000000000000000000000', '65998357785154807313975412331945.27935698039249154668674834348842207421'); - T('2763733882920963372134959827,6250', '442197421267354139541593.57232'); - T('4493052127468834914347681261358393,1000000000000000000000', '4493052127468.834914347681261358393', '1917366645721044702863943'); - T('4165243072706279649913855214769337205676562643099363,50000000000000000', '83304861454125592998277104295386744.11353125286198726', '3369568246882905246798'); - T('40214993092834747603004055,592133223718', '67915447878984.246803347100480455192908487360291259358', '593784905929'); - T('104927737922243,5000000', '20985547.5844486', '74521293546'); - T('447244182767234345092627470873244541,1000000000000000000000', '447244182767234.345092627470873244541'); - T('3729,5000', '0.74580'); - T('1984341587249242120813988003214936078446236041737736626984039187,25000000000000000000000000000000000000', '79373663489969684832559520.12859744313784944166950946507936156748'); - T('109334915848204042748090967078741604879,500000000000000000', '218669831696408085496.181934157483209758'); - T('799850280431550021052452766407947249271905583022189,100000000000000000000000', '7998502804315500210524527664.07947249271905583022189', '2265487815011911855578344877035753'); - T('15005645256328535134146956704896053721,50000000', '300112905126570702682939134097.92107442', '959098942294647858855310128844058600617'); - T('284513580039738865694794020417628789,51896427813614457', '5482334565715520355.9164123103552051805461339353164', '608885290702033051'); - T('5611435160230836724036677212897508778352647894406598273,2500000000000000000000000', '2244574064092334689614670885159.0035113410591577626393092', '22586430234193957631479883247974'); - T('2257504637009351837615338885305884515151,24014872062235743869129', '94004441546010134.51153698433238353406039907857785325251', '337497026107271498961543'); - T('11961030675420279947461068675448705351,125000000', '95688245403362239579688549403.589642808'); - T('55042147389211604287,250000000000000000', '220.168589556846417148'); - T('8096641935000626379617912817593887056966796040651323,10000000000000000000000000000', '809664193500062637961791.2817593887056966796040651323'); - T('80403698814496577881,100000000', '804036988144.96577881'); - T('56530236925584442258099719084525496045476821,100000', '565302369255844422580997190845254960454.768210', '2085478950022'); - T('176510083304138788597014159,100000000', '1765100833041387885.970141590'); - T('194695119504918441713815809,100000000', '1946951195049184417.13815809'); - T('10419880141383547192692795964599686190836397501179348604845271327,10000000000000000000000000000', '1041988014138354719269279596459968619.0836397501179348604845271327'); - T('39904704373914275932765408749964211,10000', '3990470437391427593276540874996.4211'); - T('377154718786378953829563586363,500000000000000000', '754309437572.757907659127172726', '71111432644498937002116249698'); - T('4887809210859915472422967794086028102845277,100000000', '48878092108599154724229677940860281.02845277', '3695479757465231553301692211346874715665'); - T('2793736636935987847283419755276112581519780097583042817577,2000000000000000000000000000000000000', '1396868318467993923641.7098776380562907598900487915214087885'); - T('659750104347511676142213993755263489310617528836766246359807,1000000000000000000000', '659750104347511676142213993755263489310.617528836766246359807', '627804966532681570527289793642365197'); - T('465885672960721647139447,50000000', '9317713459214432.94278894'); - T('24074397538666586878367593,25000', '962975901546663475134.70372'); - T('5245705435294637571119386528576989827690767746698047845736131163241291317,100000000000000000000000000000000000', '52457054352946375711193865285769898276.90767746698047845736131163241291317'); - T('5068049704,72321', '70077.1519199125397539945071314731245643424', '83843'); - T('874564740796402183581390256952998902,9589359007', '91201585023356732021180261.663447689293503994887169401', '9860123179'); - T('181553923535320179726588305557,250000000000000000000000000', '726.215694141280718906353222228'); - T('6556143591220725641,1000000000000000000', '6.556143591220725641'); - T('2352354979582086906566789472880974692741621,500000000', '4704709959164173813133578945761949.385483242', '784087081050622276'); - T('1488083617458385838438378349131388911543068115734032699085102951249497989,5000000000000000000000000000000000', '297616723491677167687675669826277782308.6136231468065398170205902498995978'); - T('264579815467469,1000000', '264579815.467469'); - T('1538352201070219502279514358536457,20000000000000', '76917610053510975113.97571792682285', '21354906117089650290111715638'); - T('15722329841355833,100000', '157223298413.55833'); - T('4714260957941010403796629429189999850855093929869,50000000000000000000000000000', '94285219158820208075.93258858379999701710187859738', '30803072331334882951224000809043660'); - T('618425801728323030200807,10000000000000', '61842580172.8323030200807', '105985138218996171314403646219921'); - T('17448382674796873946013108235649557747459,50000000000000000000000', '348967653495937478.92026216471299115494918'); - T('45529397794072630857138473073,100000000000000000000000', '455293.977940726308571384730730'); - T('141465087,250000', '565.860348'); - T('17246099925359016508879876148711553304736078191,250000000', '68984399701436066035519504594846213218.944312764'); - T('2101258579700648429883582010633539413193707979287,50000000000000000000000000000', '42025171594012968597.67164021267078826387415958574'); - T('19873369192189503070833114340215357,100000000000000000000000000000000000', '0.19873369192189503070833114340215357'); - T('466815777276437858935139719637380455775922,237005', '1969645270253529921036010715543471470.120554418689640661226062605044220', '326529'); - T('269959,670534', '0.402603', '711489'); - T('34387358377391124546143226397815411955083664951,100000000000000000000000000000000', '343873583773911.24546143226397815411955083664951'); - T('37847045428231017995951348454896363,10000000', '3784704542823101799595134845.4896363', '720339608750233689017491098687232050524085'); - T('1735960832955491713580107966534128965678953034168488818485380597,25000000000000000000000000000000', '69438433318219668543204318661365.158627158121366739552739415223880'); - T('224192437577613620930013362114213113494689048262177491313573197479539,5000000000000000000000000000000000000', '44838487515522724186002672422842.6226989378096524354982627146394959078'); - T('12484340282845391902600,13508059694802606664561', '0.9242141776771164633050356530775932610539', '37252541001935408317724'); - T('115214077261487,10000000000000', '11.5214077261487'); - T('2958050889912784841,3643159', '811946689648.4026200887745906887963452131998', '5561403'); - T('827694940730584623592642676724234945522897,100000000000000000000', '8276949407305846235926.42676724234945522897'); - T('2546353200289710117989769402906610426930099,50000000000000000000000', '50927064005794202359.79538805813220853860198'); - T('6948521267340375164028079892940653337857575858806325681799,10000000000000000000000', '694852126734037516402807989294065333.7857575858806325681799'); - T('51227168953999260924,54854698290641', '933870.216231584893753966795960727850255527896', '81456633392018'); - T('3268599004367296653150629333,250000000000000000000000000', '13.074396017469186612602517332', '63486303090385390571705929886419628708915825065754'); - T('2942166843387188808794605445,4769444899383008874', '616878254.273950668243175338972426161', '5339655230978177566'); - T('239413121903268737233555547588419461449,5000000000000000000000000000', '47882624380.6537474467111095176838922898'); - T('63412373159131395132401586380914861773878046941905927937911236161547,1000000000000000000000000000000000', '63412373159131395132401586380914861.773878046941905927937911236161547'); - T('471747654685695831508453690945802340660145053437,800000000000000000000', '589684568357119789385567113.68225292582518131679625'); - T('891764513109420861505160319263,1', '891764513109420861505160319263.0', '918689638838436368865522030712717248752750323'); - T('3191887595,4', '797971898.75'); - T('121856597397345862613024522353232674108567324439,5000000000000000000000000000000000000000', '24371319.4794691725226049044706465348217134648878', '607506204583168148325583885842871519015786327'); - T('339040389167328399663612233561450019484519844493,50000000000000000000000000', '6780807783346567993272.24467122900038969039688986'); - T('38243,100000', '0.38243', '29337860446'); - T('8250342179921020599,1000', '8250342179921020.599'); - T('103452041851274523230988200830011,2500000', '41380816740509809292395280.3320044', '183359155743182533907906050197722073594351162073'); - T('252848083743402827,100000000000000', '2528.48083743402827', '503743383711879521120013355828612195'); - T('98069574418320559223875778928515122947287741711497297,1000000000000000000000000', '98069574418320559223875778928.5151229472877417114972970'); - T('63210643808681380191879692959261598285204021,10000000000000000000000000000000', '6321064380868.1380191879692959261598285204021'); - T('18241982295796176045680696249,250000000000000', '72967929183184.704182722784996'); - T('940517435169296832108127451,2', '470258717584648416054063725.5'); - T('55842359310373546663302494925523543342262143787999046184363835703,10000000000000000000000000', '5584235931037354666330249492552354334226.2143787999046184363835703'); - T('298991506390580492859083808694073988657502789821,10000000000000000000000000000', '29899150639058049285.9083808694073988657502789821'); - T('6930195055948617,10000000000000', '693.0195055948617', '5757907609830118853131884806500'); - T('3614496879689787374430705036518,101841455572128247685', '35491410245.30874016786935666286319487941134579', '195190430043812451482'); - T('153016231039501975524480588156505131693512848094041350606332993,34188657170984476841125800', '4475643201610302041685982836005246034.654308295479849660834145713924093080', '46378851978993763287521043'); - T('10030484490,1', '10030484490.0', '6598579459658967203976644647349896921'); - T('1355896469090076356140549902302865199527128695725221,2500000000000000000000', '542358587636030542456219960921.1460798108514782900884'); - T('38099363522125304202166422476325079802687,500000000000000000', '76198727044250608404332.8449526501596053740', '1090889184708266087570263218992'); - T('45445894379730855842101669571055419344067331,50000000000000000000000000000000', '908917887594.61711684203339142110838688134662'); - T('48387017662752417884217,5000000000000000000000', '9.6774035325504835768434'); - T('143145652784899539,50', '2862913055697990.78'); - T('89829636046825131956593468,1', '89829636046825131956593467.96758068078087', '1'); - T('2396938114331990504523927741558933050260578381,4400452737740717', '544702615204686384863075977771.218589328031376415328281017228242917', '4414423939286874'); - T('3647034409547,125000000000', '29.176275276376', '315898686604743'); - T('5657225048612832243372055670023410281,100000000000000000000000000000000000', '56.57225048612832243372055670023410281'); - T('2048923042589181698150868951283041,500000000', '4097846085178363396301737.902566082'); - T('22265,3654', '6.09332237707570340312178966387447', '7353'); - T('248385231997710097553022283051971775382681228677873,1000000000000000000', '248385231997710097553022283051971.7753826812286778730', '807422358051844497008514434773778070855'); - T('263427757666534908045161273191351480,3', '87809252555511636015053757730450493.35240699180867869447737776738648', '4'); - T('280765588944227665193509257500853588850373,4000000000000000000000000', '70191397236056916.29837731437521339721259325', '66471574477550907802775072350732179636393120'); - T('36902302597391526140987033687,5000', '7380460519478305228197406.7374'); - T('467727844444957446621571,530243516999456689', '882100.0718532815202598878323222458558', '2374163188160596325'); - T('7485818045096143742403867459891607342912851163218831484413,1000000000000000000000000000', '7485818045096143742403867459891.607342912851163218831484413'); - T('6617976493555127256572099691726271,878490192697848883004', '7533352732409.31694657454587818166126423', '1597982807060692539038'); - T('329306133931896629549389727842553925953320055555,37084658199', '8879848161598439046985423392402720037.627926029870431056848013', '90166908885'); - T('4454671579284887267233133029196547900999664983,100000000000000000000000', '44546715792848872672331.33029196547900999664983', '312066601531489140643249426'); - T('2118844361164150744985300682261162411140053906424859259689007681661137,500000000000000000000000000000000000', '4237688722328301489970601364522324.822280107812849718519378015363322274'); - T('18513646046835945,109', '169849963732439.86237889670792909799300509767365', '190'); - T('80056584734477457616078211168206873374318213792897,50000000000000000000', '1601131694689549152321564223364.13746748636427585794', '7664647609675678867596695298'); - T('297303657379426370759382568,33333', '8919198913371924842029.8973389736300643077988817', '64991'); - T('103432169127096395317863672765426134926680268209844331529227,5000000000000000000000000000000000000', '20686433825419279063572.7345530852269853360536419688663058454'); - T('71251826759954175648215320529575384132956249082986677350937829,1000000000000000000000000000000', '71251826759954175648215320529575.3841329562490829866773509378290'); - T('641201328368559843571245009607921346857269477,1000000000000000000000000', '641201328368559843571.245009607921346857269477'); - T('4882048845842468103103485015911,10000000000000000000000', '488204884.5842468103103485015911'); - T('224791477,1', '224791477.0', '726177065211931040302050912338320716'); - T('476719932128485235601740674,631706300099407547', '754654389.3158369544946287762236', '936155391544004023'); - T('56347229254417904350177815,1', '56347229254417904350177815.0', '10148255980165242466385019381283504'); - T('3247176969,50000', '64943.53938', '5737853151156754534369320427420819473538787'); - T('148680609085343851516935023,25000000000000', '5947224363413.75406067740092', '3299703385992240915628547545324147430534'); - T('1,10', '0.10', '60676600'); - T('33888285831283524427,5', '6777657166256704885.4', '8419970403584865379780209059074'); - T('708030949802968823378286961,10000000000000000000', '70803094.9802968823378286961'); - T('544304014187971143672362107687657,1000000000000000', '544304014187971143.6723621076876570'); - T('205971513796048941402022334203083,50000000000000000000', '4119430275920.97882804044668406166'); - T('77292325648780699681,25000000', '3091693025951.22798724', '39764580440463487'); - T('2309917737614290424010537409984194531,26393218442', '87519365729890563984994483.37889805167096566858300647613', '41528749227'); - T('1350005508097927361466501541112951711,1', '1350005508097927361466501541112951711.0'); - T('479515933263403410783578189085467270740481972776756061209,1000000000000000000', '479515933263403410783578189085467270740.481972776756061209'); - T('5468820184309309381471350304120512393962862818693211,100000000000000', '54688201843093093814713503041205123939.62862818693211'); - T('129723834937825709698545211076130124,26403603915209861863899', '4913110928129.700171713296448609990870295676076015185', '55134610153115101837033'); - T('232780859367591812749509510144676014553783,400000000000000000000000000', '581952148418979.5318737737753616900363844575', '8362349325310445745344747979264146251506102'); - T('26526026292549267547430447894201,31250000000000', '848832841361576561.517774332614432'); - T('19890543181073850618089831198136526047676310776189255009170995711093373,2500000000000000000000000000000', '7956217272429540247235932479254610419070.5243104757020036683982844373492'); - T('30493213502290966437312425842604482987,1000000000000000000000000', '30493213502290.966437312425842604482987', '724744520119961789856512230962935140768926990'); - T('275344194003530259835120378143,50000', '5506883880070605196702407.56286'); - T('280641866494800916387325846054898697443,500000000', '561283732989601832774651692109.79739488600'); - T('816489328,1', '816489328.211266', '1'); - T('186929316741636687784817442181,50000000000000000', '3738586334832.73375569634884362', '847366608343837425110540459931506231838'); - T('112563301820705703136709010962115946,426227402670606553', '264092128088010144.981654762325530158196731698433', '529348397551579750'); - T('435191728671575057019159870521595631,1000000', '435191728671575057019159870521.595631'); - T('297734036862960068140512298506553,33525048786443771', '8880942687348218.29539231419286944799431547446739362', '66580157811010440'); - T('644491386590497383264428696888480290002513,100000000', '6444913865904973832644286968884802.90002513'); - T('692870436323024990207,2000000', '346435218161512.4951035'); - T('16731325404663519753103973595257782597,5000000000', '3346265080932703950620794719.0515565194'); - T('7678382551,10', '767838255.1', '563996631510634040120890403050803455723'); - T('301101154009241217644497759979222592173429957444321800273,5000000000000000000000000', '60220230801848243528899551995844.5184346859914888643600546'); - T('3287369581548004161063138286884405777483908660733707180700133,500000000000000000000000000000000', '6574739163096008322126276573.768811554967817321467414361400266'); - T('7072616405346678239433829996523626553492305980858871567461,100000000000000000000000', '70726164053466782394338299965236265.53492305980858871567461', '4156731482608469668334695763987365235929934687'); - T('4206726322500320286718351,500000000', '8413452645000640.573436702'); - T('8042280713465517964325469588870746568338611,100000', '80422807134655179643254695888707465683.38611'); - T('26905465406799944428340969750110533073398836737,10000000000000000000000', '2690546540679994442834096.9750110533073398836737', '8335668443865329061594075961775870790796125'); - T('781397951264870786241984162,53412969887938978591', '14629367.2286759680365043324657384094905107442051', '79799519873530341684'); - T('11272468788367824600929293072031224512269133,500000000000', '22544937576735649201858586144062.449024538266'); - T('35062259331242087386880791,3774248', '9289866307471604247.225087222673259247488484429220179469', '5015595'); - T('40684596467754525130528154364962148818,4282358620351909', '9500511301038867618025.61680375343530528695710569699373987', '4516893654064672'); - T('11718831363175661697070030246145843821,3243', '3613577355280808417227884750584595.689485', '4424'); - T('723075924168109306363,129', '5605239722233405475.682148', '246'); - T('1425315029,100000000', '14.25315029'); - T('23081969548598774686163,261431419053327', '88290725.0864537257072290999928', '439109518021570'); - T('74432727113,5', '14886545422.6'); - T('5043881924600298710923,5283123823581648', '954715.82590711316746962783430632190', '8464867636721848'); - T('1199912974622736146774960640527,101153498187505481', '11862298349766.31444753914108283160', '864586429503386891'); - T('2671282759101377354629,5000000000000', '534256551.8202754709258'); - T('4428522968683635809406603927474774548389467299,1000000000000000', '4428522968683635809406603927474.774548389467299'); - T('29178029301,5000', '5835605.8602'); - T('606209140346077832367770959,20000000000000000', '30310457017.30389161838854795'); - T('950780223241033310711461629624186798117525059147,10000000000000000000', '95078022324103331071146162962.4186798117525059147'); - T('12431119464175333997,5000000000000000000', '2.4862238928350667994'); - T('234188333,2500', '93675.3332'); - T('8882443557897602881136097481314340616279449789015613,10000000000000000000000000000', '888244355789760288113609.7481314340616279449789015613'); - T('620853587690846221319415358259599862766390740728717,20000000000000000', '31042679384542311065970767912979993.13831953703643585'); - T('18330643901258352830379667572558501125731138590723,2500000000000000', '7332257560503341132151867029023400.4502924554362892'); - T('1737914673731044895006236355997286362604696463,20000000000000000000000000', '86895733686552244750.31181779986431813023482315'); - T('32321383496895512945858052467433508644049961463611439,500000000000000000000000000000000000', '64642766993791025.891716104934867017288099922927222878'); - T('30443644280497735598449,100000000000000000000000', '0.304436442804977355984490'); - T('33441569099242498502093191685727884000199,1000000000000000000000000000000000000000', '33.441569099242498502093191685727884000199', '226046621508705333950998644181135613143302286173'); - T('398604346574198750962183419866817869,1', '398604346574198750962183419866817869.04266056', '7'); - T('512097566031,1000000000000', '0.512097566031'); - T('398681694350124818470993924383729,500000000000000000000000000000', '797.363388700249636941987848767458'); - T('3812252051639510486930285769517024400609099822879069290116480023961048395781,50000000000000000000000000000000000000', '76245041032790209738605715390340488012.18199645758138580232960047922096791562'); - T('17640229131583372766764324994200509903251266518839,20000000000000000000000000000000', '882011456579168638.33821624971002549516256332594195'); - T('560154998022191785354816414733070384411658872186803,1000000000000000000000000', '560154998022191785354816414.733070384411658872186803'); - T('71890032720748761728115659399,11502294600531586', '6250060115607.39517761094265713855993887187878900', '56396172263945605'); - T('239652696866514152551465514613,1000000000', '239652696866514152551.465514613'); - T('624116519630700792,1167196367', '534714241.130516466043798094841834', '1620799323'); - T('354713305113764443146383722,1', '354713305113764443146383722.4', '1'); - T('291430659582700164960933388735,37370964395748226', '7798317873109.4467055700449997519564282043354166', '60816081804303776'); - T('488,1', '488.292453', '1'); - T('5375378978249541387849408245604751505152302194421,25000000000000000', '215015159129981655513976329824190.06020609208777684'); - T('13453827695164848671202758912258191501381686420571586492041,200000000000000000000000000000000000000', '67269138475824243356.013794561290957506908432102857932460205'); - T('89089683441815473,1000000000000', '89089.683441815473'); - T('9209451109,5000', '1841890.2218', '134792391785549571059323696404'); - T('5753101370471889620242487730093198832286126348947,12500000000000000000', '460248109637751169619399018407.45590658289010791576'); - T('97943035611348452670762369622371455167581899341662817,1000000000000000000000000000000', '97943035611348452670762.369622371455167581899341662817'); - T('156481263905560941381243892108,159892048517', '978668203684460155.744443223268507096551689891232818887', '322004247450'); - T('2555714776189801984122292922264279394187,5000000000000000000000000000000000000000', '0.5111429552379603968244585844528558788374'); - T('54279806605191090207,1', '54279806605191090206.69', '1'); - T('31837316259061,16072996650298', '1.980795302316617044769286885040', '49459229769021'); - T('4271818608155766034681095050304504858956311601618369719,500000000000000', '8543637216311532069362190100609009717912.623203236739438'); - T('176478464295519818379214397692871852257325839802281,1000000000000000', '176478464295519818379214397692871852.257325839802281', '90779039488828051777510007885720349007138577'); - T('348438519284667659789950964099607679,250000000000000000000000000000000', '1393.754077138670639159803856398430716'); - T('65822230159387850562143906302474539651870314716129059,2000000000000000000', '32911115079693925281071953151237269.8259351573580645295'); - T('45672374821762348481787087840824627394334023792813,100000000000000000000000000', '456723748217623484817870.87840824627394334023792813', '23761423870035685067842276095584074976971583'); - T('464877382392713428729345554492047701,50000000000000000000', '9297547647854268.57458691108984095402', '79229417025138906364159421018995634243'); - T('84227563396748648999111809845309,5000000000000000000000000000000', '16.8455126793497297998223619690618'); - T('4557298469196086700221846516327,100000000000000000000000000000', '45.57298469196086700221846516327'); - T('80439239502527,1000000', '80439239.502527', '533338416082600676071203071632265123199117929'); - T('935236327881877011999858293276481942539,100000000000000000000000000000', '9352363278.81877011999858293276481942539'); - T('42714429794630694344783675903666677070293499362190798,2299869685120688616083', '18572543510172490391080421152535.67751350101760083140434', '2523895099168949296133'); - T('947258061205512702708184333018496368818813104995057,1000000000000000000000000000000000000000', '947258061205.512702708184333018496368818813104995057'); - T('0,1', '0.00'); - T('1357605379576214126002356605597838987734159077021017189,10000000000000000000000000000000000000000', '135760537957621.4126002356605597838987734159077021017189'); - T('689179106336557793377586103585498426183,1000000000000000000000000000000000000', '689.179106336557793377586103585498426183'); - T('3185931020723678246265927634227924895843827321051,5000000000', '637186204144735649253185526845584979168.7654642102', '8348820773767166375670963549814381'); - T('181704427890961813309386683087009072816236283562619436859899,20000000000000000000000000000000000000', '9085221394548090665469.33415435045364081181417813097184299495'); - T('206086803,50000', '4121.73606', '164519844857384467378024'); - T('2446815034234629509921183262469736744807867506113159757,50000000000000000000000', '48936300684692590198423665249394.73489615735012226319514'); - T('11921542076626216037383,2467379936129', '4831660459.77076950587336328803734586299', '4032388674437'); - T('4821454596269229904070747116,5', '964290919253845980814149423.2', '63058918491'); - T('8059615507653467966326957937996724771202206977059344880847,100000000000000000000000000', '80596155076534679663269579379967.24771202206977059344880847'); - T('72323768597570082020606327010228744367968599,10000000000000000', '7232376859757008202060632701.0228744367968599'); - T('28149894654702826785477357889173350109389,332175002107', '84744169417165234660977522265.35323457903133812593052374237901963', '660733805280'); - T('211462938819720593425336680167945416724957,25000000000000000000000000000000000000', '8458.51755278882373701346720671781666899828'); - T('8669768238324809349466041,100000000000000', '86697682383.24809349466041', '65200093702980892'); - T('9229478586505609450209233741970260794135057090509829,200000000000000000000000000000', '46147392932528047251046.168709851303970675285452549145'); - T('788251666453791388583584838872536454639199125815589911,20000000000000000000', '39412583322689569429179241943626822.73195995629077949555'); - T('20943607945514035985620131263207,5000', '4188721589102807197124026252.6414', '4835242474956309626165311527265229'); - T('1772029297651420947345744911718400232486579,1000000000000000000000000000000', '1772029297651.420947345744911718400232486579', '887760316568762719383237942823678'); - T('757397481749167231261,12500000000000000', '60591.79853993337850088', '66725488326793109720958265319522090494147096792756'); - T('254427806433,20000', '12721390.32165'); - T('665415819,1000000000', '0.665415819'); - T('746095752604743115329558773090119,10000000', '74609575260474311532955877.3090119'); - T('200405698845550169272337116046884055,37753768', '5308230395587274077446709850.17665137424163872012965483562443432875', '52358187'); - T('876243876010368000888263,6250000000000000000000000', '0.14019902016165888014212208'); - T('314444059696144669541009651,100000000', '3144440596961446695.41009651'); - T('102685572797675093,500', '205371145595350.186'); - T('53720823257553465809425585560295424700501,10000000000000000000000000000', '5372082325755.3465809425585560295424700501'); - T('144228,1', '144228.0', '893072502'); - T('2249884045617817731,500000000000000', '4499.768091235635462'); - T('6149980092464732650245703095614058473554397900,7551277', '814429147873231593841108344405066649462.653522046668397742310767776', '99624556'); - T('1005318427,100', '10053184.27', '56258703'); - T('675360018584114704817648366594913164055503162783551547601259390568622759863323,5000000000000', '135072003716822940963529673318982632811100632556710309520251878113.7245519726646', '763113868956966253237445913550376861628125707761719940487681719401160610436'); - T('487813882528400826023428640609378101429959398115157937005578981194998958082862673744095665022036524299189099,10000000000000000000000', '48781388252840082602342864060937810142995939811515793700557898119499895808286267374409.5665022036524299189099', '319053905671710373413564483718075497688524361485928741160092292043716624896461985792922106492711599194534899554643542426'); - T('4363269813583297680660811455498012143883949072442011552361660186260454870353040104340521418931006735842679876713781061,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '436326981358329768.0660811455498012143883949072442011552361660186260454870353040104340521418931006735842679876713781061'); - T('341893039028161520368729363564608981945974443020224230053218402863771456413927271762947534978276261913698192670665537,1000000000000000000000000000000000000000000000', '341893039028161520368729363564608981945974443020224230053218402863771456.413927271762947534978276261913698192670665537'); - T('91901269276951481268589508998910356181948890482769886151337833001536520925704410737790986004918759962586403387644931014593138475668109,200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '459506346384757406342947544994551780909.744452413849430756689165007682604628522053688954930024593799812932016938224655072965692378340545'); - T('160085901137799630792793617081212539406350610856533352536667873727,50000000000000000000000000000000000000000000000000000', '3201718022755.99261585587234162425078812701221713066705073335747454', '82302986588243438196352421107435286399958881274722031838421651877101115'); - T('19730270740072250726350191888457903937782226838056969873977606036442991786321705617019361264080014612697781414129464904485361465812168904497,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '39460541480144501452700383776915807875564453.676113939747955212072885983572643411234038722528160029225395562828258929808970722931624337808994'); - T('554184362944725960497789037,625000000000000000000000000', '0.8866949807115615367964624592', '3519583398754511869875010683565244740317978393251156588940794481183604900896512'); - T('638231282580449825792515353133591102373788595106470546093619096974527294935424922680855148938101691766274567269680519810515529956690038641911538125173665109699,10000000000000000000000000000000000000000000000000000000000000000000000000000', '63823128258044982579251535313359110237378859510647054609361909697452729493542492268.0855148938101691766274567269680519810515529956690038641911538125173665109699', '4108116384125526836507938785056766891019126123715803937416172409988923081826654552'); - T('47734373761311372617250467020779084445512709682911994169631,625000', '76374998018098196187600747233246535112820335492659190.6714096', '612857840076182176420280571134792'); - T('96501773711552295237818469319540275439821230156574621025922681890456142035559160552388101621981467063,1000000', '96501773711552295237818469319540275439821230156574621025922681890456142035559160552388101621981.467063'); - T('74403513794353613906027668774054715460457535829576006466757980055646532561807,100', '744035137943536139060276687740547154604575358295760064667579800556465325618.07', '9062598597523005153489301824610095730026103190392060661534'); - T('4552464673010589780215760669790574819454182498449417341631679,50000000000000000000000000000', '91049293460211795604315213395811.49638908364996898834683263358'); - T('553156651153146542558050182057356237357767613058590716666708160610420683997653491,10000000000000000000000000000000000000000000000', '55315665115314654255805018205735623.7357767613058590716666708160610420683997653491'); - T('10094472168930635850294295702643512345309187651848439883217715065443928296148508896180724198805240643680251877332506709166622938770815681788987679097027,500000000000000000000000000000000000000000000000000000000000000000000000', '20188944337861271700588591405287024690618375303696879766435430130887856592297017.792361448397610481287360503754665013418333245877541631363577975358194054'); - T('1390638862389813656941579907173114981020090536680671582853648156827291166367509597465818901222618393320613440799359074159,10000000000000000000000000000000000000', '139063886238981365694157990717311498102009053668067158285364815682729116636750959746.5818901222618393320613440799359074159'); - T('764577472361146278858344672554647493530542460178759013102132345200903874086918631004687608105278297,1000000000000', '764577472361146278858344672554647493530542460178759013102132345200903874086918631004687.608105278297'); - T('127046433646264975767457966930607201956534938099951672926121899531366533718900568517910151332761,10000000000000000000000000000000000000000000000000000000000', '12704643364626497576745796693060720195.6534938099951672926121899531366533718900568517910151332761'); - T('759706682454180966323586844671034018022403078651480091043022480725,1', '759706682454180966323586844671034018022403078651480091043022480725.0', '8491246168928786773792854508283380644357724943352621981745640028894860319462721890015437671665726136602020425847570035'); - T('1232133064589580204554541761202884749167806439036647915064417866743368822300712460904153,50000000000000000000000000000000000000000000000000000000', '24642661291791604091090835224057.69498335612878073295830128835733486737644601424921808306'); - T('860753657944772685510679876822980161245604845668538717795313417907394077573430859608260608605457173684835477710478072161454145765516186246987,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '860753657944772685510679876822980161245604845668538717.795313417907394077573430859608260608605457173684835477710478072161454145765516186246987'); - T('16005705331614697482755365912151704073591971169105093634086192436675140166715310612622644294152431935263181364819,250000000000000000000000000000000000000000000000000000000000000000', '64022821326458789931021463648606816294367884676.4203745363447697467005606668612424504905771766097277410527254592760'); - T('69113805838501162731578029205573692448157213720275881273819982233592866266473,100000000000000000000000000000', '691138058385011627315780292055736924481572137202.75881273819982233592866266473', '58975855894427885852484710799418772114376247'); - T('4729199753900213112131177820583529490731573946050705866217107256295944829467960577257186,510681', '9260575102461640656556985320745297927143508268470348155144027790922209421278568376.8481419907926541887178704058086735', '7975458'); - T('23498489129913177044438966039588756148779460123795350021472351713417447381957515629514242536444852177161448159204317722351313614332682938279261185510112182173899064135103,2500000000000000000000000000000000000000000000000000000000000000000000', '9399395651965270817775586415835502459511784049518140008588940685366978952783006251805697014577940870.8645792636817270889405254457330731753117044742040448728695596256540412', '2738063341239025028739321372348930298237495900370115886451023412898232579270'); - T('581214945232966023983197807568271384582625395798108238988909577356391,100000000000000', '5812149452329660239831978075682713845826253957981082389.88909577356391'); - T('755774297159354724303490783235728345982079,10', '75577429715935472430349078323572834598207.9', '976346638366081178717993549430125376917323536668391354073736050931714508949029849095898475324947663457561691565869'); - T('72952666104960722610055921852408716115501920420152774589434925111108095463,1000000000000000000000000000000000', '72952666104960722610055921852408716115501.920420152774589434925111108095463'); - T('84253414454971232257480071766397766368674340440243975710448609630373480623069,50000000000000000000000000000000000000000000000000000000', '1685068289099424645149.60143532795532737348680880487951420897219260746961246138'); - T('36916365097825321454559738506509326979820327574234098190319159712574451468922233909969299557,384885741807809995033', '95915127758251045669622249994875027216126584339530370592512741225931996.041944546489526354777674857433920571240428120906031224034258694793804737624806', '996972807953924088414'); - T('46202911095785852843473956927532538280968392442342938578610785707745261965259051602639282297839,500000000000000000000000000000000000000000000000000000000000000', '92405822191571705686947913855065.076561936784884685877157221571415490523930518103205278564595678'); - T('1772839597150920835362349139129708947,250', '7091358388603683341449396556518835.788', '85650512041659658831614'); - T('342934812509126807028655148458814382887953695727579025045242138980820292534408239977896632855835901410506357,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '685869625018.253614057310296917628765775907391455158050090484277961640585068816479955793265711671802821012714'); - T('5467569331238493371328759073003072869784239507210662,37362334854454456899796270284749', '146339069882476370230.94111136842283676758455168072986640234', '96171449439665788570414679267610'); - T('9014126789799805335062120695538270131901418610794009238567600799878815000839260540538480396467469718753863,1000000000000000000000000000000000000000000000000000000000000000000000', '9014126789799805335062120695538270131.901418610794009238567600799878815000839260540538480396467469718753863'); - T('1250041788678023084610616992418436156068571496356335523903697743016099193022025463752931903884161856935693369085205315349974809,2000000000000000000000000000000000', '625020894339011542305308496209218078034285748178167761951848871508049596511012731876465951942.0809284678466845426026576749874045'); - T('25239061830805058260347549564363328809074990929185276918644989105557079183929665109,500000000000000000000000000000000000000000000000000000000000000000000000', '50478123661.610116520695099128726657618149981858370553837289978211114158367859330218'); - T('23046884534040883773,25000000000', '921875381.361635350920'); - T('17516790639377003056238183959898186484431649497446483054036345045419619227552721302646069807169936889243905650537200431291875228387189659891591,2000000000000000000000000000000000000000000000000000000000000', '8758395319688501528119091979949093242215824748723241527018172522709809613776360651.3230349035849684446219528252686002156459376141935948299457955'); - T('830206819686442727061104242686969514890459473419575742090385225994337814887819198514017,1000000000000000000000000000000000000000000000000000', '830206819686442727061104242686969514.890459473419575742090385225994337814887819198514017'); - T('413893751926246540100720057983571518390906128684895499155815473199,1000000000000000000000000000000000000000000000000000', '413893751926246.540100720057983571518390906128684895499155815473199'); - T('206500127024184753713560420566631778621,500000000', '413000254048369507427120841133.263557242', '5224151114621627696369936014682664216594925452865329899315399663005407747319945317435179613'); - T('16217662953881464354149036371967353081296233553367,125000', '129741303631051714833192290975738824650369868.426936'); - T('158877139692735544114713014099098201170707224624720234416065901772598705859728066434630087577,10000000000000000000000000000000000000000000000000000000000', '15887713969273554411471301409909820.1170707224624720234416065901772598705859728066434630087577'); - T('1363481494416319010330583135309100415177784161418502772461,5', '272696298883263802066116627061820083035556832283700554492.2', '504783341926451844554'); - T('558130898291826876915105441493420754206140253419478295461642459649585459789613029845418176825679124538566594627314537483,14998270055051685963765623', '37213018317658468525204154347997553646488930517742862611997889963271621447764872970409325420092.841681521850527813475859312769151840560733279569364227935675286869135262631', '77352003382953136988715543'); - T('10451566350931936938155976509981211336966461645889115229513600263067775576558118998602357161325,346893908613991685517980584558', '30128999360902532302715650110413576813750396896824593726469912912.366199216341942668442860487226805935762749663328322107767450167435735148060307', '351381928759382906855046900016'); - T('1468542461374793122289224886453463993847932190034840253613540817203177345513896917033925255992523630246969352648225086758781193593730856733866872342988998661495531701242165439378823,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '1468542461374793122289224886453463993847932190034840253613540817203177345513896917033925255992.5236302469693526482250867587811935937308567338668723429889986614955317012421654393788230'); - T('209271529724729052617837048480332267987578229392112165277475305343450561725459538265834951255626969900314942469226110140479983692763731004233,40000000000000000000000000000000000000000000000', '5231788243118226315445926212008306699689455734802804131936882633586264043136488456645873781390.674247507873561730652753511999592319093275105825'); - T('7101983556936994042497298646151570859081364497353591813399109991310416906158547491525491881998229621477347427929,100000000000000000000000000000000000000000000000000000000000000000000', '71019835569369940424972986461515708590813644.97353591813399109991310416906158547491525491881998229621477347427929', '56744786973831246136639355921544534171994029324959759143702819842099548907292114036606647'); - T('700608601940127639463635186370519157157680192656598879705304237171077875720684209649489000891686101,1000000000000000000000000000', '700608601940127639463635186370519157157680192656598879705304237171077875.720684209649489000891686101'); - T('8602847585675548348838808002159088443209,100000000000000000000000000000000', '86028475.85675548348838808002159088443209', '72582545116505333796075480243333118971380354201482192123094188476893348588726112639735928329133275172401442'); - T('148408052390556415124137719435490471,25000000000000000', '5936322095622256604.96550877741961884'); - T('416641482734579229938341545166425850147492151317072668023493195705213636353836873961255897570763844236,25717644180352342203393925081331448253691044279201083210974082080156217889361', '16200608415481665314529154.120823068329960470035846076484357364396252835780302742135244075134790170921737797562758009637507765', '67934439808176948911255062541382522278265771795756778046815888409619479526534'); - T('25995084389459522138350250382942032604375065037616720903582722822063333331140405124796661617605799564677801133030110,310603780302310842094866507130236732405959190501476949', '83692105627814610657066372727390901983001818916459785375020003.3353553456353151128930868769216270423551208386173443046109736307958268123', '3982369319326564077663582191574752696545616233919787956'); - T('3588237426497060004880870257545324138618112195268225592118612244849912586535502781039993176234955972397277,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '3588237426497.060004880870257545324138618112195268225592118612244849912586535502781039993176234955972397277'); - T('3313686586024934130977871482209887492640993452578557026807334010909893148780133822458503199230307206620292985108899540304687909083,1000000000000000000000000000000000000000000000000000000000000', '3313686586024934130977871482209887492640993452578557026807334010909893.148780133822458503199230307206620292985108899540304687909083'); - T('273781703818906790628718083951503889627525115303814013952356530599951005452333198523390628974188239287896869929063813635816988840128233022694039881132781253023590270236688227083953341213,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '27378170381890679062871808395150388962752511530381401395235653059995100545233319852339062.89741882392878968699290638136358169888401282330226940398811327812530235902702366882270839533412130'); - T('19909985415765292964414127154401583912053874960439188258560175396645802964673383822417554033845591984786339,50000000000000000000000000000000000000000000000000000000000000000000000', '398199708315305859288282543088031678.24107749920878376517120350793291605929346767644835108067691183969572678'); - T('85820359411270844647913420510043686839128620275465076863336894062316958345993146300360121970304754792703695315584328722640236913591546766980436151189616776567197756454666891371391,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '8582035941127084464791342051004368683912862027546507686333689406231695834599314630036012.1970304754792703695315584328722640236913591546766980436151189616776567197756454666891371391'); - T('35000532278070509562103057820976975041119512140519835960943403473094631,3662495203502602060139335', '9556471840454013866302210174557670158611986330.928972391824443058488437395568693146286054952317466368062069862106460410265233312282378988449302', '7332300780944167684576224'); - T('39376042039638531344672309024889855506726524477396754533061336162078676158805401717447421956134946657,125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '315008336.3171082507573784721991188440538121958191740362644906892966294092704432137395793756490795732560'); - T('6597859015029510292915275130297833881131020029929841154557256370393361962811461577212908969927685870101608101607420224161,100000000000000000000000000000000000000000000000000000000000000000000000000000000', '65978590150295102929152751302978338811310.200299298411545572563703933619628114615772129089699276858701016081016074202241610'); - T('77941951791579411765197932683235264335432882206721156588976877215382711588365187167594098027719350761193,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '779419517915794.11765197932683235264335432882206721156588976877215382711588365187167594098027719350761193'); - T('7469527965820984707499768784473976650257429936748963414116722131553049029423204476861,10000000000', '746952796582098470749976878447397665025742993674896341411672213155304902942.3204476861'); - T('793689283759962354945365347,1000000000000000000', '793689283.759962354945365347'); - T('197236579651099174237,25000000000000', '7889463.18604396696948'); - T('13248974903544268426929651334228835034267588350879238246365359559734640920519013385480529227732605812835471479125497458201213631616739806389677655600244904631323,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '132489749035442684269296513342288350342675883508792382463653595.59734640920519013385480529227732605812835471479125497458201213631616739806389677655600244904631323'); - T('6385188721690120379276122832047303271584663620275352024639252661807196391,2500000000000000000000000000000000000', '2554075488676048151710449132818921308.6338654481101408098557010647228785564', '69360752312105986272643762566971174625835381312809147456026971'); - T('25862063700127446496519773714020332299021654523004379222786870074851196534089686069439903327778111173914467314241700595801,100000000000000000000000000000000000000000', '258620637001274464965197737140203322990216545230043792227868700748511965340896860.69439903327778111173914467314241700595801'); - T('337561464417705983649060127652172317890452693275809295120807312918687,1000000000000000000000000000', '337561464417705983649060127652172317890452.6932758092951208073129186870', '8489487941822174030068781645476719602281025013758808050237847942377537968055889085564660960488663905553823'); - T('12655042328012036252407420053218831648099,781250000000000000000', '16198454179855406403.08149766812010450956672', '64236488636162905463925496010047829405545831499743306133923178415645494'); - T('5922194307177579374811484837474903626993993529770932798657322377651387,10000', '592219430717757937481148483747490362699399352977093279865732237765.1387', '3152877460250162477684029172894929736548191904765877685303248'); - T('77272660141369492538273738266098041603520972222166296362371597167705245085548532311984761778478186732722925744042787931177199124350594600293303988626922427396336198562206707,10000000000000000000000000000000000000000000000000000000000000000000000000000', '7727266014136949253827373826609804160352097222216629636237159716770524508554853231198476177847818.6732722925744042787931177199124350594600293303988626922427396336198562206707'); - T('192725006484481955518141547878555444458245002321169158256767255032910672226968644775201483730442494510679299467564928048217,1000000000000000000000000000000000000000000000000000000000000000000000000000000000', '192725006484481955518141547878555444458245.002321169158256767255032910672226968644775201483730442494510679299467564928048217', '439652030092743058167706039163812494429147760995240096210156202016745715173125314627'); - T('4119,1', '4119.0'); - T('356296672182939168877855246845022740124409939589391646979258814297585852593514729523,775462837988393944311111588325395377444992149494144758081106318', '459463245340290213739.77440565240861533938923822785461681533785064251235446563843782326420183106592724997999481060381275', '908934942330192208051413123327017049131882835053534224912068502'); - T('768098015293590626357287707160911,1000000000000000000000000', '768098015.293590626357287707160911', '4970166725632570631012333623050617477446500886979586460886675511529151792998381196736807216434719029198488026413277'); - T('17308584498708223882873554139102525513289773342431835066642028579392867094694512432111520248839813,1250000000', '13846867598966579106298843311282020410631818673945468053313622863514293675755609945689216.1990718504'); - T('730329569763986956693151189671893374471654148260912717254713032732776230933990274047334434047257585286285228208365006513375988013830063457878469670357195374629549829394279454843199,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '73032956976398695669315118967189337447165414826091271725471303273277623093399027404.7334434047257585286285228208365006513375988013830063457878469670357195374629549829394279454843199', '6972155039468853521357852529419312954662546952741049465777419800482878657794987116597422340793948647312389878781628'); - T('406720109833232022397234646712546646136794280590981538261378858703302037675499399765989883329,100000000000000000000000000000', '4067201098332320223972346467125466461367942805909815382613788587.03302037675499399765989883329'); - T('306423719310620474116542871532316659191577143943784441511526985433945123437819539085214867633133,1000000', '306423719310620474116542871532316659191577143943784441511526985433945123437819539085214867.633133', '66262964973805318142587348908691096'); - T('1354706619236923062203233937522312950517745299920180807301978313151489452805373608391524296715118535473,250000000000000000000000000000000000000000000000000000000000000000000000000000000', '5418826476947692248812.935750089251802070981199680723229207913252605957811221494433566097186860474141892'); - T('1974457002526436695523552349738485726387619749364549221535073398987258972810290980762750581643854743176718698008795411899,500000000000000000000000000000000000000000000000000000000', '3948914005052873391047104699476971452775239498729098443070146797.974517945620581961525501163287709486353437396017590823798'); - T('156783373050685706995418777471852885862528591164845287226607990619037741515473450079378844849264334400620506174471,100000000000000000', '1567833730506857069954187774718528858625285911648452872266079906190377415154734500793788448492643.34400620506174471', '1475852993423867930895375531269870744877795635101316802275045394546252736459'); - T('817062512854985934298222856248923943142561938985062588141950589526461,100000000000', '8170625128549859342982228562489239431425619389850625881419.50589526461'); - T('6290321680681892372665821719454390401908672910524568767187416242561415491887619927859962686607232816600821305765944442019799,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '6290321680681892372665821719454.390401908672910524568767187416242561415491887619927859962686607232816600821305765944442019799', '9105579897058381459068780523330349175438124909135209330622101030511881627579118208200106153986510746652194'); - T('291019633702648422081986065259017934111952044975205808908304848900279460934291632580590482482887983287848959317,5000000000000000000000000000000000000', '58203926740529684416397213051803586822390408995041161781660969780055892186.8583265161180964965775966575697918634'); - T('9761851721,10000000', '976.1851721'); - T('46347552512954346442636579916791964575641708792980525139317489275282600482060794741187192532852855496225264908653845892622887557367998590985412813,2500000000000000000000000000000000000000000000000000000000000000000000000000000000', '18539021005181738577054631966716785830256683517192210055726995710.1130401928243178964748770131411421984901059634615383570491550229471994363941651252', '20131139962522780309461689017191472470532273184373694231458313824124123308217129198334611710977665987264'); - T('4583104655599717564687861567606979451521059259267795570154284167355331986003319384,66188846884496355722931850901', '69242853914610712768120180522495339911077166565137157.256079758842112249952337457360998041147', '73473311912842459042771817157'); - T('238700990196510062211759023156089849525744243141210514794850464466693722026273452038656315746884677478,30092123405681931755343047697485765975508737462761615936547801', '7932341197013669060995249486649815002914.388775664475545030214338121665357005207009166397688180912492427405071534798797537035114944', '65853245521247303460683253084956246647481048311248038291232869'); - T('42298914901,5000000', '8459.7829802', '500230246408163621933114312035010656400108045812177724426229'); - T('8074196380821158892995075889038998746407004456023946886130297182819587,100000000000000', '80741963808211588929950758890389987464070044560239468861.30297182819587', '32771612136576235765298661712341320992877938190809773521921351747798365048023003'); - T('8237639161158330611197745589676406384164235975022473710629638053,1', '8237639161158330611197745589676406384164235975022473710629638053.0', '2445104217464463695693500282135171214096744322818309314494766605989146939852441404618950981337350157904852939939373515'); - T('67543757294923929626940280513013641414086200749124590622532346827999900040177969865717432810934479,1916727', '35239111931393427247041587306389298744206243637787014333565680886219007735675435190153544459.348920842665681332000268271160278288144867678', '1995694'); - T('658743889770265303742933377935250192966496461555942991475714429268442962813046457181311534066346113237896378659793723,20000000000000000000000', '32937194488513265187146668896762509648324823077797149573785721463422148140652322859065576703317.30566189481893298968615'); - T('2805501179441768134530084886604077457872799801301882910075637983,100', '28055011794417681345300848866040774578727998013018829100756379.83', '9443876125195970145695293537833903272964339319463666915497252065195075053919409140815614968385107901341125179527914879'); - T('4517797327291151860616480864207613008757043659519224972937765633329645192613384083939856763691292386455457794604201829021,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '45177973272911518606164808.64207613008757043659519224972937765633329645192613384083939856763691292386455457794604201829021'); - T('7397503339464272269855273915959903960816642518570157919,100000000', '73975033394642722698552739159599039608166425185.70157919'); - T('7222002295276272486455390693063960627773827847231792065164227238340366235889305566200968538315044537097,1000000000000000000000000000000000000000', '7222002295276272486455390693063960627773827847231792065164227238.340366235889305566200968538315044537097'); - T('367219394873481267603265750320061360395709498756776364710800723463,406', '904481268161283910352871306207047685703717977233439321947785033.1600984661747', '6541'); - T('1444394660367662282713282645691209012033688835789995095825382219,23057197513854003298629056495', '62643981754495200591799923072694095.830589947154613883171592329886789430042859888542274546466937863915', '68126015383576305118873089291'); - T('66486456721902783143382958103393588590534783949309048501514976388834547,100000000000000000000000000000000000000000000000000', '664864567219027831433.82958103393588590534783949309048501514976388834547'); - T('79393077119427399,1000000000000', '79393.077119427399', '457680453236362518491204537541456509655751496155359270049043835757460913773646217639420768944492'); - T('79965035093,100000', '799650.35093'); - T('4981989182126281993008748299751823310785501417823357606800265327971466995164429423070200992890363497791927,6250000000000000000000000', '797118269140205118881399727960291729725680226851737217088042452475434719226308707.69123215886245815964670832', '56677887877573113002659257334697952352644607188634909253465284091874992869314792073934863690164809324007357194'); - T('2815316100629806442280650620776290692376915362259448998756135028144140939975030651743612709055129972829840588253,312500000000000000000000000000000000000000000000000000000', '9009011522015380615298081986484130215606129159230236796.0196320900612510079200980855795606689764159130554898824096', '259630086511147416886758802731895884065033396642518234216979248'); - T('46695586464432642825171060403079900323010491862383753361945816046325281445639764147,10000000000000000000000000000000000000000000000', '4669558646443264282517106040307990032.3010491862383753361945816046325281445639764147', '42779209808392670932751246137054085319776080319163738333884406583882155006114876471576920'); - T('141870841510827737902203370743784262520488460033697822757850614639775801850436993371020540186361144664063,10000000000000000000000000000000000000000000000000000000000000000000000000000000', '14187084151082773790220337.0743784262520488460033697822757850614639775801850436993371020540186361144664063'); - T('6957664010752546415724323132519018928019295298179423339867424767111181183144993110875961376863,1250000000000000000000000000000000000000000000000000', '5566131208602037132579458506015215142415436.2385435386718939398136889449465159944887007691014904'); - T('421618093371672938615524326204048137268986623787424222206605428544644224123,125000000000000000000000000000000000000000000000000000', '3372944746973383508924.194609632385098151892990299393777652843428357153792984'); - T('79740490393758467762763825028765531324197343705389133253196874446069,1000000000000000000000', '79740490393758467762763825028765531324197343705.389133253196874446069', '3734356963544490606916998560924054030945103'); - T('35316130946513480000918112491378283158238075089400011285127542852378740666170346667104579433857777012085159078825132200346010522593453834556380919575663964381,2500000000000000000000000000000000000000000000000000000000000000000000000000', '14126452378605392000367244996551313263295230035760004514051017140951496266468138666.8418317735431108048340636315300528801384042090373815338225523678302655857524'); - T('11479496353311542550681317423708387702866260566865784453684955378292320572395800527156920358638182034688285765378247985976894354944272730666267894172313899915111,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '1147949635331154255068131742370838770286626056686578445368495537829232057239.5800527156920358638182034688285765378247985976894354944272730666267894172313899915111'); - T('522894403668783,76766087553931', '6.811528636280055944192548602728291825591944197128281470842', '78240520039957'); - T('49845253705153083946560757047901116693643415419397420205639209376536358217548291172350660224299549,50000000000000000', '996905074103061678931215140958022333872868308387948404112784187530727164350965823.44701320448599098'); - T('338182838018828865464683020834510805289351205546397745297958338040061441,1000000000000000000000000000000000000', '338182838018828865464683020834510805.2893512055463977452979583380400614410', '14883484065364458852385532901646978224973759592019109846023434280302742'); - T('24649273314632626486164577096640564994348428417490664500095726069181221187821380966404579912254,649340013780256804334593736868432636453000213699945814874643231671', '37960502651195292960651209085.203374798057389753139268671210018169153661152337307012345644628714331515037827618880005930554', '908045485391832255020423148219972840921185441341969856690994256775'); - T('6891475120622508402719679996127417743765330884895739499430668315556332397523619642485183195127062533269943127231396897872180491292719,1000000000000000000000000000000000000000000', '6891475120622508402719679996127417743765330884895739499430668315556332397523619642485183195.127062533269943127231396897872180491292719'); - T('203868258448469033290239608200737201654430772057168471884887178288425302193616031248093726182688629906841814588980515821139,100000000000000000000000000000000000000000000000000000000000000000000000', '2038682584484690332902396082007372016544307720571684.71884887178288425302193616031248093726182688629906841814588980515821139', '358166259674835884479717432826072608521435320683484082553756957458496483'); - T('280498230216490169693952183821575487120350714514115741724266322855990846771014739347659202212007477,50', '5609964604329803393879043676431509742407014290282314834485326457119816935420294786953184044240149.54'); - T('205290587103533238565519893362134986807657,10000000000000000000000000000000000', '20529058.7103533238565519893362134986807657', '308243502694779752750195623211608037227150609235612049765729131496'); - T('863541229244183093415998713738595363675147376202617109427307037227836732506179435314860664537757768564421195844506348962328092938455202919,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '86354122924418309341599871373859536367514737.62026171094273070372278367325061794353148606645377577685644211958445063489623280929384552029190'); - T('1332503354412117081514650043329530553988390453,1000000000000000000000', '1332503354412117081514650.043329530553988390453', '234289217752670763502822022564923291688489066732789627701326549148438368853698800840847667515210806058742602452589237732'); - T('149231253658963411543221910342591002434468175057834645096361910659915438708229394346182595835161154220171761179324657602082487624478039438336283,20000000000000000000000000000000000000000000000', '7461562682948170577161095517129550121723408752891732254818095532995771935411469717309129791758057.71100858805896623288010412438122390197191681415'); - T('14671370523489352352179903919978798858628437740812967,100000000000000000000', '146713705234893523521799039199787.98858628437740812967'); - T('31972694535122492349621199531999,100000000000000000000', '319726945351.22492349621199531999', '444814411628813210359733486923268705561135'); - T('7671901743570237148323156463911986166241861750380367,1000000000000000000', '7671901743570237148323156463911986.166241861750380367', '4714079218556258364560566691433682958400719072779641399659759994605653409470820385182612'); - T('64914904653370646630817723806298619262853179362421159280052334161809239241810441802367897185624994804940558409456741,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '649149046533706466.30817723806298619262853179362421159280052334161809239241810441802367897185624994804940558409456741', '52612631034775473006883291270936837923724549069552008161180077154644088916527893547656086834490317497155689233015'); - T('9622068526799441010744442228965559266999862472192613554951,100000', '96220685267994410107444422289655592669998624721926135.54951', '1440111784139735092809063761962639647793103214120990'); - T('8017871525312353806512067050596604565618790,315548414175204512371056357868162059', '25409322.83329595752563567210426781867380735708550429758298495482482043094943060', '549675823319634926616271312386674851'); - T('461120259670854299006123584618545607266420812575100938736117933259736622570867419,500000000000000000000000000000000000000000000000000000000000000000000000', '922240519.3417085980122471692370912145328416251502018774722358665194732451417348380'); - T('139792040108338252978453845748225898765036739532955399942037889179464005555009808455320117,25000000000000000000000000000000000', '5591681604333530119138153829929035950601469581318215997.68151556717856022220039233821280468'); - T('5894159987779675527812606527112902422823,10000000000000000000000000000000000000000', '0.5894159987779675527812606527112902422823'); - T('10794209997399872663981,500000000', '21588419994799.745327962'); - T('161167944446100079215361865141648945894914926470231878901891105444533027123352649883069305476504208232020922464999657127237239,250000000000000000000000000000000000', '644671777784400316861447460566595783579659705880927515607564421778132108493410599532277221.906016832928083689859998628508948956'); - T('65297284415319840892101117377284751412657466676091246251740082043,500000000000000000000000000000', '130594568830639681784202234754569502.825314933352182492503480164086'); - T('2766105154672097910919416707090692846083531091256961378583814595230638765028364556532292886699927313766545452665695161280216164748824152656732976954620185439709,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '5532210309344195821838833414181385692167062182513922757167629190.461277530056729113064585773399854627533090905331390322560432329497648305313465953909240370879418'); - T('4965317900137877770176694971911414522545908917222619271011776655580494900114140891096653760381029022314448118382968242241409,500000000000000000000000000000000000000000000000', '9930635800275755540353389943822829045091817834445238542023553311160989800228.281782193307520762058044628896236765936484482818', '6087323064050560843067097059341387607572473063508563613294539460569998223927099513534061416866791'); - T('215007524870282058245020779477952115240341474039679043031777558877905242544399693717204716884024411270224399170135910743173,500000000000000000000000000000000000000000000000000000000000000000000000000000', '430015049740564116490041558955904230480682948.079358086063555117755810485088799387434409433768048822540448798340271821486346'); - T('33965356260862969077208625910361234343390562819287919971390918687360011980682938504819,100000000000000000000000000000000000000000000000000000000000', '339653562608629690772086259.10361234343390562819287919971390918687360011980682938504819'); - T('253321930539380453152708334768314839113869868931064250962440429142069655945019464486182962906443502943685473688729176287,50000000000000000000000000000000000000000000000000', '5066438610787609063054166695366296782277397378621285019248808582841393.11890038928972365925812887005887370947377458352574'); - T('1805858228685505996934094902160832337182222604423226849057516769855269416540373086132274874403135855391,2500000000000000000000000000000000000000000', '722343291474202398773637960864332934872889041769290739623006.70794210776661614923445290994976125434215640', '299931180540069025319209074997216426643301728798147429423616370144579300438276293226177325138489'); - T('31190292948951272069611342815544754687766064055983665546419,50000000000000000000000000000000000000000000000', '623805858979.02544139222685631089509375532128111967331092838', '56338321839749805341500571031690869993717263653260288651706865343950144409736437018194620914323'); - T('337956957987594659177352551047823442271367979011679862751244719933544405954450697376536645217973872506443,10000000000000000000000000000000000000000000000000000000000000000000000000000000', '33795695798759465917735255.1047823442271367979011679862751244719933544405954450697376536645217973872506443'); - T('482382437572212496064503056796905534583523906009551169968627497923338185298948,98881775', '4878375591176559037947114691225006171091931814629654149802908553404691.464114069554272473682452528283783605111951075878629019577756662152573343720077796', '99109659'); - T('139531491455761368238852756477562465476379871327657551278823131772010748498903090648551764744244326698930827028903816179520446707286815639062324792223595941248872160472784559239,62500000000000000000000000000000000000000000000000000000000000000000000000000000000000', '2232503863292181891821644103640999447622077941242520820461170108352171975982449450376828235.907909227182893232462461058872327147316589050224997196675577535059981954567564552947824', '72224749819267684231620193401966551095054796101838472670695742640793352422104243890110175387436088259119888983940038219'); - T('1411416267549037105254657861275714068019729378454946755649335485716320411768092167436624477341575741093648180167816197631,2000000000000000000000000000000000000000000000000000000000000000000000000000', '705708133774518552627328930637857034009864689.2274733778246677428581602058840460837183122386707878705468240900839080988155'); - T('27827219481834304112493008583428333387209073306104984885967926767008978220794525219842633952626222316127104787702440880856041944988627062199717762582508863622603544795353020067572812970772493,50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '556544389636686082249860171668566667744181466122099697719358535340179564415890504396852679052.52444632254209575404881761712083889977254124399435525165017727245207089590706040135145625941544986'); - T('553638437587991972935941089538503668489156735607582551300472526062673135513905787569392581,5000000000000000000000000000000000000000000', '110727687517598394587188217907700733697831347121.5165102600945052125346271027811575138785162'); - T('59464723510860089353595161485330798717117977688235446432820252084846370805317110927201609639990666929233,100000000000000000000000000000000000000000', '594647235108600893535951614853307987171179776882354464328202520.84846370805317110927201609639990666929233'); - T('7774943127923741543893327774453314221901409612145708347899080872861725693975133544163108094185354219016483147160029,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7774943127923741543.893327774453314221901409612145708347899080872861725693975133544163108094185354219016483147160029'); - T('2063769973984552389094577183907780446432714643266876167586915450871645665016033538837151166563922743418998809762073552642334105506792838094376118903308372743156366972007822263,5000000000000000000000000000000000000000000000000000000000000000000000000000000000', '412753994796910477818915436781556089286542928653375233517383090174329133003206707767430233312.7845486837997619524147105284668211013585676188752237806616745486312733944015644526'); - T('7836548872315924926855127765671663567146206518249512862581538745788328087691847420220642279030295292792647,1000000000000000000000000000000000000', '7836548872315924926855127765671663567146206518249512862581538745788328.087691847420220642279030295292792647', '96234594442279927365515769186347797337180500148188755841266605718724324934597679706160305024645'); - T('6276636774338099448991514147769685704475544055827320758088707616484824104853942959262327777197423596444308226835178887,100000000000000000000000000000000000000', '62766367743380994489915141477696857044755440558273207580887076164848241048539429.59262327777197423596444308226835178887'); - T('88804107107559930046092936712139620512040038382914013891624071753711226264013140153583717755112772233557425098002467830699052147734198261974270570978078001915494463782113496837,100000000000000000000000000000000000000000000000000000000000000000000000000000', '888041071075599300460929367121396205120400383829140138916240717537112262640131401535837177551127722.33557425098002467830699052147734198261974270570978078001915494463782113496837'); - T('115002442406703584178185294122325712122842192109474381450624873216924285090467595499234670133342099726329554064579,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '230004884813407168356370588244651.4242456843842189487629012497464338485701809351909984693402666841994526591081291580'); - T('281153885629419726548824319427449841809079796787193695801572124693821870927,11125957', '25270085587192160328214851039551010471196302195594832498595143293635.0437923677037391020843520523715800957846185038636999961559631821400093846457966749', '26200508'); - T('107590545904878109399898544892791250425613052952813246657210241239393365761789609,1250000000000000000000000000000000000000000000000000000', '86072436723902487519918835.9142330003404904423622505973257681929915146926094316872'); - T('336691854215296851780405900296031485870297547905657610287048904912614725160314592634910900322215844608347716185906299548473017105494879354044791,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '336691854215296851780405900296031485870297547905.657610287048904912614725160314592634910900322215844608347716185906299548473017105494879354044791'); - T('371480560684277082668491524150108281529274363544360285467612385157153460856295638808810364012946376958259738430744167803245930749900255140112481712729944733952142996121247846362608579431806857,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '742961121368554165336983048300216563058548727088720570935224770314306921712591277617620728025892.753916519476861488335606491861499800510280224963425459889467904285992242495692725217158863613714'); - T('90156107022576191282253438844768882560380632069595603307941806727485440731711227686222691231,1', '90156107022576191282253438844768882560380632069595603307941806727485440731711227686222691231.0', '5480298739494692404113665279307860287265772'); - T('676207065438806757306657797270701640910718687363106,1', '676207065438806757306657797270701640910718687363106.232707553596649377152910871250455082640109949938595144796401', '2'); - T('307627784692122693008294108656835628137921414014386937549059014929182112328861899672419,100000000000000000', '3076277846921226930082941086568356281379214140143869375490590149291821.12328861899672419'); - T('1019112032522319011513743334667754449108139023710934695597532972093019590416143731973703239996332828727266689906936150481584706243926489450173712530253,17054304152143118034178339067126344617804666449539944765504311916945546205137312910252', '59756881513940453622961763561761551483631213107634476215190193531.3165867394473728188428531421874167961311863141432393149058157078094433891826691976659580244336159690', '24149837024363500548775403668943393737605180826594994856002909548103707523924658663721'); - T('24320206632303877337018150776534830120127412621279410316049997868506080584897,500000000000000000000000000000000000000000000000000000000000000', '48640413264607.7546740363015530696602402548252425588206320999957370121611697940'); - T('632068538992,299627248623', '2.10951621355135030628959798316775030242', '667715230026'); - T('30723874502935040146583633833130458750279615551530417455389485335564411003264654722578476707999808118764177718404903122118992393,1000000000000000000000000000000000000000000000000000000000000', '30723874502935040146583633833130458750279615551530417455389485335564.411003264654722578476707999808118764177718404903122118992393'); - T('286178536955337099327464576728331587889607911392190634657903988794024067683540787647737271834874819490786147362267100761724779889,400000000000000000000000000000000000000000000000000000000', '715446342388342748318661441820828969724019778480476586644759971985060169.2088519691193431795871870487269653684056677519043119497225'); - T('225716760325402765480453148877447994008859292645269220156515793592565178478504694872477733969169483366031115902552261152263,100000000000000000000000000000000000000000000000000000000000000000000000', '2257167603254027654804531488774479940088592926452692.20156515793592565178478504694872477733969169483366031115902552261152263'); - T('166422076347679754457402925324150208100304102197597626198641249881291,500000000000000000', '332844152695359508914805850648300416200608204395195.252397282499762582', '595938455117353715726533211799175395565247198980519036774725159'); - T('92474208223036180278717843071595801935199978666019361143552458912542268609094249043138966113404623,100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '924742082.230361802787178430715958019351999786660193611435524589125422686090942490431389661134046230', '384893898044272576757884146625767491425042466631820743697266238210622119815334941457068522319571859800723072'); - T('4801579045833748240620308947950089769875299076650997798853,1000000', '4801579045833748240620308947950089769875299076650997.798853'); - T('92818162596390473570913489263772149216048983528220989923030438739602367016857612844868557954427,10000000000000000000000000000000000000000000000000000000', '9281816259639047357091348926377214921604.8983528220989923030438739602367016857612844868557954427'); - T('1054044512154426314878240206476736860691603532279813559806376256940851271707,20000000000000000000000000000000000000000000000000000000000000000000', '52702225.607721315743912010323836843034580176613990677990318812847042563585350', '132750239272960379396269149467880829933650132793415257290257220693012'); - T('1950260986744420612627266461252568941645104794448107,1000000000000000000000000000000000000000000000', '1950260.986744420612627266461252568941645104794448107'); - T('3420599355260725534580884522073225022198987022228846435295522221954135336191942043090733084633992155497809109068153537458117479579431129,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '6841198710521451069161769044146450044397974044457692870.591044443908270672383884086181466169267984310995618218136307074916234959158862258'); - T('21801726759466625902075716247189780705759631914594809868496882689119821892069323995653346876539886660866871,250000000000000000000000000000000000000000000000000', '87206907037866503608302864988759122823038527658379239473.987530756479287568277295982613387506159546643467484'); - T('8662514288504709301163055702408996483964651352163407517985146778131926637288811147922076068037312182374897258627079219878971,10000000000000000000000000000000000000000000000000000000000000000000000000000000000', '866251428850470930116305570240899648396465.1352163407517985146778131926637288811147922076068037312182374897258627079219878971'); - T('2335156819025320456542491284916593277514846432649030650406781161541460408081740604535185151601367656917158704090094377170340940777294656240040982897,2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '934062727610128182616996513966637311005938573059612.2601627124646165841632326962418140740606405470627668634816360377508681363763109178624960163931588'); - T('63654450465180016591742773920768518412294924364672171032800586170759569,100000000', '636544504651800165917427739207685184122949243646721710328005861.70759569'); - T('67017226545297291596788980559120386755737203907750761130545403,1250000000000000000000000000000000000000000000000000000', '53613781.2362378332774311844472963094045897631262006089044363224'); - T('1834202980794378523142996418618158434266769632338075275566234011547291333605095187322588266592801041375,2728622727250961344924048054555626447313315476626465983644676145928438417252418810441', '672208349830137661.0942704654707426447364588742190615418045766720625819944644489835174706718477671949019962898837174', '3060324951336066473403966327368318133634181672878042528628461545369720500607838478698'); - T('724151319188526857516015364911054452983796479888236151875899188098296091563373,2', '362075659594263428758007682455527226491898239944118075937949594049148045781686.5', '3728535308064241709642992906437162149848'); - T('913161203334294301947,1000000000', '913161203334.2943019470'); - T('1000730618593668355073183788658419468874098478193537979324951367,1000000000000', '1000730618593668355073183788658419468874098478193537.979324951367'); - T('98578065477380636870100743410132239138150603712881520,1', '98578065477380636870100743410132239138150603712881520.0'); - T('1593653227528651554398919030088527404972981723686120202542946612603975281246782283952373738247671009241097893,244376382898878709186556743314810099835899136846', '6521306226993688084262488516142465500275896529315090407774915.4390277153651041272996824372692207805951482614581375281886491067796', '320896389969383038785219513263634670827380910560'); - T('1098576836684484704997452093434476835830575095945740572130146590994553924253484329785345800790170709555710672234900297863234859386093535546823682473,125000000000000000000000000000000000000000000000000000000000', '8788614693475877639979616747475814686644600767565924577041172727956431394027874638282766.406321365676445685377879202382905878875088748284374589459784', '580755848202156326016924884077059025897828282924714692042700832'); - T('98856015342574146019060178479759793759304710950289379284070197,10000000000000000000000000000000000000000', '9885601534257414601906.0178479759793759304710950289379284070197'); - T('580368338794671752821269385270342578980827601542629307885673919782902096378604694343656768007757459380781031973411772409250979813132067528072149194522614456969,1250000000000000000000000000000000000000000000000000000000000000000000000000', '464294671035737402257015508216274063184662081234103446308539135826321677102883755474.9254144062059675046248255787294179274007838505056540224577193556180915655752'); - T('69982084220851887614167671807406656266816171302967221742593895150687,100', '699820842208518876141676718074066562668161713029672217425938951506.87', '54403392513559426721299504443157825252617408149349867483376440447'); - T('2018853736861528670763599026530020008195846168939825002390514885917432739031000764700018894935539479830625328771187655839828813167,29884853861934945378863310572572196981269', '67554412217922573204803437390939478181208940016133763859817864059085840485469282963181019.19791615300926846665465703968492270928565365268908436662715', '33392687306924808799500742211568775440536'); - T('530027912908014643675270751164750719833056592215023870512832293271045526003960718599676622511253038980627258993911327348577365854850830043924340793,1000000000000000000000000000000000000000000000000000000000000000000000000000', '530027912908014643675270751164750719833056592215023870512832293271045526.003960718599676622511253038980627258993911327348577365854850830043924340793'); - T('8734735018342228299296090238863640379760418043064479934394562234031967281491808567345771710811322186275692378629728220679938160003692820341,100000000000000000000000000000000000000000000000000000000000000000', '87347350183422282992960902388636403797604180430644799343945622340319672814.91808567345771710811322186275692378629728220679938160003692820341'); - T('6722788254690658393400979717508508269239637599135817059,200000000000', '33613941273453291967004898587542541346198187.9956790852950'); - T('7437180918830993537032395884958073653904626738419559962059983,1000000000000000000000000000000', '7437180918830993537032395884958.073653904626738419559962059983'); - T('678608120908470140173991795540669892372847725269378282378365833145325640439329229307313633722843810507520881589650753115173369715723114474748456801385922995060079,1000000000000000000000000000000000000000000000000000000000000000000', '678608120908470140173991795540669892372847725269378282378365833145325640439329229307313633722843.810507520881589650753115173369715723114474748456801385922995060079'); - T('86894722198923597840560746168874947033616752839619628508272485307838443277363083879320271424429852793,1000', '86894722198923597840560746168874947033616752839619628508272485307838443277363083879320271424429852.793', '3631197556693210653073184532428485425255348157219832901774'); - T('17970721880705870085054361726421717606722108915965471930329036480272239344308991597936504664878045388124735330004009910921,20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '898536094035293504252718086321085.88033610544579827359651645182401361196721544957989682523324390226940623676650020049554605'); - T('5948697443135706703788917312367,100000', '59486974431357067037889173.12367'); - T('3946733843989140918050146097267216988669431771,577886291193042952', '6829602820030790847543876934.02258790700574374198489118872645183303458692610035440156215891630548679719783', '667417859486950026'); - T('493858380487330334553899939554971082426451967753112354596468356557,5000000000000000000000000000000000000', '98771676097466066910779987910.9942164852903935506224709192936713114'); - T('123084490293475602607614884133531998828862861585787351245614755708686612116721277769653301046242789968234508397289909158055602802061,20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '6154224514673780130380744206676599941443143.07928936756228073778543433060583606388848266505231213949841172541986449545790278014010305'); - T('6927482597114680607834922765933648950334814075397606193627167620391317958568821118589203,100000000000000', '69274825971146806078349227659336489503348140753976061936271676203913179585.68821118589203', '41718700671033927886513136610866596633645608053066723832100884'); - T('95538944758612146141176396275398005954352758782334733053038291386324885989961287864210,11', '8685358614419286012834217843218000541304796252939521186639844671484080544541935260382.727294449076880196380605689453495898969668417125590960428365196683178504081224393284', '570'); - T('32993752053684425807747294778148085597692415739709994,638184719', '51699376483635964037784011525584782291994076.6236209331737383706493508641321733305200624022422', '2141040464'); - T('223942440246,248225668363', '0.9021727757764007', '609899431382'); - T('16686579847373982176404589194403513916267058244556986258849490594859727370843269811410258544438506162845429784416595935602473679945761077,20000000000000000000000000000000000000000000000000000000000000000000', '834328992368699108820229459720175695813352912227849312942474529742986.36854216349057051292722192530814227148922082979678012368399728805385'); - T('7453839315378838224947273562889200300255201795789768843276848020086237609421,100000000000000000000000000000000000000000000000000000000000000000000000', '74538.39315378838224947273562889200300255201795789768843276848020086237609421'); - T('88186134153847200319907838505055317969004545179501640348910365893233471389254602659518381116512509844213870327,9765625000000000000000000000000000000', '9030260137353953312758562662917664560026065426380967971728421467467107470.2596713123346822263308810080475003214848', '833555353746649953279923803074475202769062814458423077827564033682942755'); - T('291651801565673891735,441799', '660145906997693.27620705343909321636692', '475636'); - T('3943935476569904891723785189074953927414878941370369202289012846241086155860318787858564276558320735525331470755293103519133817,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '3943935476569904891723785189074953927414878.941370369202289012846241086155860318787858564276558320735525331470755293103519133817'); - T('75302834320878879457221652547914488454737262753632963871692491571975871172248660219123955075959110697547,100000000000000000000000000000000000', '753028343208788794572216525479144884547372627536329638716924915719758.71172248660219123955075959110697547'); - T('286254617761534858369612111554416,44902328951267285921', '6375050569697.807323576944467346526062905538962967762891749230526034972918', '44929005448766457238'); - T('3746139574442736600133406409787136253033944992476571372451349971463733707013337603307113483922358784475865353830238500792008470975355809924470290472421506149,5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '749227914888547320026681281957427250606788998495314274490269994292.7467414026675206614226967844717568951730707660477001584016941950711619848940580944843012298'); - T('37406858419305938135286171702693320249855935205139647062682249364933852246421767685483,500000000000000000000000000000000000000000000000000000000000000000000000000000000000', '74.813716838611876270572343405386640499711870410279294125364498729867704492843535370966'); - T('11159601476231535654741788412416202881635877421391863561941550761560649976787093908100772767774222070807449142387341,100000000000000000000000000000000000000', '111596014762315356547417884124162028816358774213918635619415507615606499767870.9390810077276777422207080744914238734100'); - T('5202314789815646277150835429404879071603050113822553743596059100657262453703715303,40000', '130057869745391156928770885735121976790076252845563843589901477516431561342592.882575', '66027873'); - T('304974437931081602650032524760965871551608292495930150945863595349787675349596911689176201582031187229344132110281,1357797756240047452202752179724701484120084840431181047509757564399930443993347892330', '224609619900686178223912328077.7443121694198187253469840096889635680497517685978187200433620475779622573500912322765762965524609863', '4531192428741997048411481671100163403784805772178484102146612877029644423079894127823'); - T('3766014359237,800000000', '4707.51794904625', '7853235314974998'); - T('311475636684241059876365851605648547902228954687,5000000000000000000000000000000000000000', '62295127.3368482119752731703211297095804457909374'); - T('95942011683584513899200680778652795117868885339,1000000000000000000000000000000000000000000000', '95.942011683584513899200680778652795117868885339'); - T('12766155608271430221647976553149893759584816809408489139986361341082789186923046040729403013493459196737462331526072870887109,6250000000000000000000000000000000000000000', '2042584897323428835463676248503983001533570689505358262397817814573246269907687366.51670448215895347147799397304417165934193744', '93126923446050929294103459255648989880852923558235441052339284471205926790072168747045165'); - T('5050978417270036929890556014363105586807333767534651101340315552268579329086313825980085677972688558518469677967261525650390108135458820811,250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '20203913669080147719562224057452422347229335070138.604405361262209074317316345255303920342711890754234073878711869046102601560432541835283244'); - T('514785480892443581111011049635898989522189108839752679508896007986075563249680148629967905105747624723273024943,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '514785480892.443581111011049635898989522189108839752679508896007986075563249680148629967905105747624723273024943'); - T('267737767017891684255898230028455429260991473930007229195590053591931280617076656188214376062161831184386528376881147906819687668809677563924650021,50000000000000000000000000000000000000000000000000000000', '5354755340357833685117964600569108585219829478600144583911801071838625612341533123764287521.243236623687730567537622958136393753376193551278493000420'); - T('248259504263040834608233334198108145412348875247144730132530909287139514727494049122871346,47732130929763380841', '5201098283844657888397210939987325835547277037459741568044731851516514.73634681073130117711020811237650578307976297729277805241093095474959673783840483910867', '5024411020558340543312'); - T('55464558317631039321559765849925798648390666160464586486280863822713088834539695339682241860828114727160148856646089617,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '55464558317631039321559.7658499257986483906661604645864862808638227130888345396953396822418608281147271601488566460896170'); - T('15421483144336270077371210750899333898679645561504523633209496264965010394930803328016197705616989442784785,49984940267107918826', '308522588242127401197353099520103594922877070048176300229719294528874975525549904675985.9485359329604023169832489554441000991', '61355845435674844526'); - T('6855440895600044261671405027414507429789800105303059815241230707817129262097559133424765895800883527246883701308438021,100000000000000000000000', '68554408956000442616714050274145074297898001053030598152412307078171292620975591334247658958008.83527246883701308438021'); - T('27263704632607142270401184496759949558690923110949180431533606763,20000', '1363185231630357113520059224837997477934546155547459021576680.33815', '606624887961647054532897310953779853618934383968313019879350462126175949928993363987651814'); - T('90954990859482993959724846045748010087463959,125', '727639926875863951677798768365984080699711.672', '588824757782012773261640878838777321142728950393257882912418442907031819512234'); - T('1493569539393627900541858134137603447531077013858830325785084098585732603941651348853545566104365474803,1000000', '1493569539393627900541858134137603447531077013858830325785084098585732603941651348853545566104365.474803', '3182820534541090775056684943977433195872567458734700994010822943243520679220246426898'); - T('324725691215801921476094759101909541875602304206478416528531250398201107463367988182933405249982011662330601,50000000000000000000000000', '6494513824316038429521895182038190837512046084129568330570625007964022149267359763.65866810499964023324661202'); - T('25308321535355028217216957904491,5569187114692733093840', '4544347498.863190164819697293209529531404911058684', '7723635601139758565843'); - T('8658777803281975609968463280524071823375642811421607061029953506904956846061159429058371,100000000000000000000000000000000000000000000', '86587778032819756099684632805240718233756428.11421607061029953506904956846061159429058371'); - T('4215726801070323444647630281510808779143459576242997643967294379158258415984350576313270248295291231861927178054,8801198818356547303082759', '478994610629365197012477473717361789088233414206341594179220175540708293059656499309131.1197482000861233142996023980139256469694810', '9219447145070526604874006'); - T('350219027018265521256189312491936248573915564006546709163466462009603052479301023519364445626038090785927171839374456992889152646903427846290756941,50000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7004380540365310425123786249838724971478311280130934183269329240.19206104958602047038728891252076181571854343678748913985778305293806855692581513882'); - T('18838265670959180747789613494901603955905673528214021208240108707414144737352242491390744711159628979832028357517923496753376897134,2584402836812084642754771195541804154926099055589080760558497', '7289214128164546673077585428995457658876312767922421632262422308769050.379657338235342151193256041128846262031912288379823584158769838474025799337151989092013277121571615', '5322144155931111466743034122299554141788673340121784975895214'); - T('110540403222773032054929356513175003594418655601576752219028431256243715401738728452564148356781548250303,50000000000000000000000000000000000000000000000000', '2210808064455460641098587130263500071888373112031535044.3805686251248743080347745690512829671356309650060600'); - T('34521678049086112732982603617637423488030098370864976367418263782422677974076092812569932135807092991,10000000000000000000000000000', '3452167804908611273298260361763742348803009837086497636741826378242267797.4076092812569932135807092991', '9565990599377329484423005085641091352736216008630315082396889620817076025190521731088325462643453265267584'); - T('686981974413884751293690490784988550329391377445018867980503873317,50000000000000000000000000000000000000000000000000000000000000000', '13.73963948827769502587380981569977100658782754890037735961007746634'); - T('39967009834238797427182253133070010605320897536027467147,125000000', '319736078673910379417458025064560084842567180288.219737176', '3546986130406819267454979773897918044730322031561726889492515191671301'); - T('2054848767576587955462470796182561489545688219952205806313236406797613009606793513761184547627264318510083497,500000000000000000000000000000000000000000000000000000000000000000000000000000000', '4109697535153175910924941592.3651229790913764399044116126264728135952260192135870275223690952545286370201669940', '19171208630106026353275589645613967733224343436112425066800794894453677875314261981745825449319'); - T('1258311307164311617381367950628372981420522447544944439693149609041298843621306748572743262432414156764952221586409072251176086979,250000000000000000000000000000000000', '5033245228657246469525471802513491925682089790179777758772598436165195374485226994290973049729.656627059808886345636289004704347916'); - T('492541774159879640437936287616718070610370129799840600955174836508798297733803571061834516664670316321397051566302739470908697122858665682327,500000000000000000000000000000000000000000000000000000000', '985083548319759280875872575233436141220740259599681201910349673017596595467607142123.669033329340632642794103132605478941817394245717331364654', '772690036339621488428269775437822570422870894506512284167339990445682547198933662923265581'); - T('413875835951731659277384103388688394090011015604931352043,6250000', '66220133752277065484381456542190143054401762496789.01632688', '267799856219808852183'); - T('25623638455508129716975373710250219093690370694168048889682125687,728796356236789336532397', '35158845452820691695331252389119574225619.5643086760770102207250792274157899888147246542964984154489942046175778073820104', '4682678030669483013541263'); - T('12367863144967384872529417463063119791986560777209539757,2500000000000000000000000', '4947145257986953949011766985225.2479167946243108838159028', '19780730703790873838347852973574677540986567656865706078825739326608066836976512951818878167033944417505061150717024'); - T('9971596879982164667,1000000000', '9971596879.982164667'); - T('338345846975325139996317671732776306269185647762097932941355508406167695219190203003609,40587706508395974705401', '8336165703409107474709453480980066107483661912962839864091523498.0126686226890405486513889705767265041180045', '41022537112870625129272'); - T('127928935759871381312732087750566099177874361325298055925972104481990091044917887846249290063171763251,50000000000', '2558578715197427626254641755011321983557487226505961118519442089639801820898357756924985801.26343526502', '621875728720764263561029044312241358762794797665106621297993145788249024700'); - T('16626060161524464574713076045625021016208464957298152388988528750805470496009977748891419,25000000000000000000000', '665042406460978582988523041825000840648338598291926095559541150032.21881984039910995565676'); - T('139835943154689530164226571,16000000000', '8739746447168095.6352641606875'); - T('655492388278806204545768064730065599657599852803336783,100000000000000000', '6554923882788062045457680647300655996.57599852803336783', '976108250785731949679925001521155265790958652927658681941'); - T('810011346800097039139210061890622091915594232858534709414710566706428201195198961960548291930674225613464775148923720691217878393179,10000000000000000000000000000000000000000000', '81001134680009703913921006189062209191559423285853470941471056670642820119519896196054829.19306742256134647751489237206912178783931790', '659255936975989889409223375243561380964658820807429254878323937252539411092735435865211779'); - T('767010060358818890783562424457154229236761908349178661946491180919697196736640696221322466225137922274445553575680781328318284000710534431,125000000000000000000000000000000000000000000000000000000000000000000', '6136080482870551126268499395657233833894095266793429295571929447357577.573893125569770579729801103378195564428605446250626546272005684275448'); - T('6251274083692311423733916625297741079068776687255993282033945555286360790665510481,1000000000000000000000000000000000000000000000000000000', '6251274083692311423733916625.297741079068776687255993282033945555286360790665510481'); - T('473620934850848082187223138350602125191020210530458123567437931094543854409630864168927727,10000000000000000000000000000000000000000000000000000000000000000', '47362093485084808218722313.8350602125191020210530458123567437931094543854409630864168927727'); - T('28392638992177631538735383923909742173497869442249044705049559217795836913231369776653059449522857321829651,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '28392638992177631538735.383923909742173497869442249044705049559217795836913231369776653059449522857321829651', '5028820610639781639325654949257292223081041411494147435152768836878813294805858397173957511962736507674020'); - T('9552496340020091725697433,10000000', '955249634002009172.5697433', '681734365310500930436632536264485543390585757982517774887009602160278649869690646'); - T('191407226365712801218816880714794123311237815231478951057699351929786915001765279771136714191232777459076067241766801466017951665819488454219712701784568617525439,250000000000000000000000000000000000000000000000000000000000000', '765628905462851204875267522859176493244951260925915804230797407719147660007061119084546856764931109.836304268967067205864071806663277953816878850807138274470101756', '796843914588374585605530216500278077281516834694785006819875719121'); - T('973708114707156900848575306441883115282262041526510308450033867296915537409831603407246049399369228564061,25000000000000000000000000000000000000000000000000000000000000000000000000000000000', '38948324588286276033943.01225767532461129048166106041233800135469187662149639326413628984197597476914256244'); - T('41176818016861564738549999724345149794954792976459967902179568613277,500000000000', '82353636033723129477099999448690299589909585952919935804.359137226554', '669011453192737766662797002206221194892295529858894718227759009576786576439366369655530541'); - T('2297280934071181232289100315902073111835117061805828135181986873561508623403722194338276074897169459,250000000000000000000000000000000000000000000000000000000000000000000', '9189123736284724929156401263608.292447340468247223312540727947494246034493614888777353104299588677836'); - T('493865232957959844369851283310738555249442370187169054736707861015181,1000000000000000000000000000000000000000', '493865232957959844369851283310.738555249442370187169054736707861015181', '670693117968294371193270720647906750197834156929685579183197442866318330576022797208'); - T('409271320054752626250953921458862574122032388782159837960166261432376032498288772914987357485363480329191,20000000000000000000000000000000000000000000', '20463566002737631312547696072943128706101619439107991898008313.071618801624914438645749367874268174016459550', '1857697448678073248864111007805323144660940247856110752402597224275056054503062819540715261827115353176657605923020695'); - T('1091233021200519149409087486543248004149493427849573405514209173739773291315508685002542487733353392960642990271133459767,4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '272808255300129787352271871635812.00103737335696239335137855229343494332282887717125063562193333834824016074756778336494175'); - T('1595690121196871153886729,200000000000000', '7978450605.984355769433645', '6043921481194682383933679927'); - T('35198307665288379989739763374405377831198720275886562170938556931298244697897264380623354673785632771,10000000000000000000000000000000000000000000000000000000000000000000000000', '3519830766528837998973976337.4405377831198720275886562170938556931298244697897264380623354673785632771'); - T('23696485864014344411749757864467460969465379680156310297289316481649993164859,12500000000000000000000000000000000000000000000000000000000000', '1895718869121147.55293998062915739687755723037441250482378314531853199945318872', '88169772318726534478097482287174902361436232507508528249890047249859106140720080138823592262180105'); - T('2470252623431054313731331443175884514511972829541093697927860344370604828517286139353493663429245331486666,5108090079928118985489686671', '483596135694188011378667156401843144027164732844551280707660248632923225254800.587199079677953937875639324206276895271235823612547506378684214987948118274320359990368', '5382458010937250568880673669'); - T('114221349590728832380263984994984635861738747311983631781352559687519165032758871,100000000000000000000000000000000000000000000000', '1142213495907288323802639849949846.358617387473119836317813525596875191650327588710'); - T('3284945592812373184344753972758476891953304894259,4000000000000000000000000000000000000000', '821236398.20309329608618849318961922298832622356475'); - T('2256552538268324957101459584274765124413730131360493850955441001778068390578610403086691841111551405816799647689962152222209,500000000000000000000000000000000000000', '4513105076536649914202919168549530248827460262720987701910882003556136781157220806173.383682223102811633599295379924304444418'); - T('45102018400266989728931638141595361761071295617811579289997697670832298744506116516722877037008568752523755414709825779737363977291512033198315936360667277,10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '4510201840026698972893163814159536176107129561781157928.9997697670832298744506116516722877037008568752523755414709825779737363977291512033198315936360667277'); - T('2991118205134544635217224882676124745244670098171611353811722020713540132602932667617729650082673649312361632555982015642938286243972586805717247022507624073645853595324932716067929,400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '7477795512836361588043062206690311863111675245429028384529305051783850331507331669.0443241252066841232809040813899550391073457156099314670142931175562690601841146339883123317901698225'); - T('43406214460275172698038479789612757524898533646080070899355546034286693170983145909731585902643,18687745885171468234775664818563711', '2322710011522446475757338874013239466938178964161018202462196.53231516923374798133674231744884434422245047240330215423739416673515083141853518', '24830247378717343908862228854084190'); - T('4682650609411899735589035611734839738748275802992269558418422379673582726796923610465719356507461769677666289014200384110046607144919937994870547743121,5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '936530121882379947117807122346967947749655160598453911.6836844759347165453593847220931438713014923539355332578028400768220093214289839875989741095486242'); - T('6343504805835314981042161153519341413408814287852266648003279622224288264182025200490500813492402339458961013,1000000000000000000', '6343504805835314981042161153519341413408814287852266648003279622224288264182025200490500813.492402339458961013'); - T('2043755907556873690066829609994954302797373554833237131297,5000000000000000', '408751181511374738013365921998990860559474.7109666474262594', '1956664943557976499821087345250316684037359526871385211708133002423524'); - T('313284563452294441735736652942879418320584421214021592208381792517413756116801965056033499858686861805057047003471,2000000000000000000000000000000000000000000000000000000000000', '156642281726147220867868326471439709160292210607010796.1041908962587068780584009825280167499293434309025285235017355'); - T('11471639769771687066577323756368359399412710207010171779949298240855743839316944634591329633416155194817943709829531,200000000000000000000000000', '57358198848858435332886618781841796997063551035050858899746491204278719196584723172956648.167080775974089718549147655'); - T('23776195197101022472023159066867591626860322971795239505778686401286942957171879146898109574605597407608118187436758896473157262424044809239822026232771581,250000000000000000000000000000000000000000000000000000000000000000000', '95104780788404089888092636267470366507441291887180958023114745605147771828687516587592.438298422389630432472749747035585892629049696179236959288104931086324', '170109268958634877909065036709787962672848011126048129765200921441020133297498972167180624'); - T('35518282899106761300653224275853720735244906250293433645349674469329930654366141,100000000000000000000000', '355182828991067613006532242758537207352449062502934336453.49674469329930654366141'); - T('853774591279175110534841081508464694413901769,25000000000000000', '34150983651167004421393643260.33858777655607076'); - T('434880828240088350029098564204588579863154654848110708450994020630614580434999236881672317324560458832813078468886616827281212017480013,25000000000000000000000000000000000000', '17395233129603534001163942568183543194526186193924428338039760825224583217399969475266892692982418.35331252313875546467309124848069920052', '739293900270272912650169319408236065394650909425013543189206691255522429'); - T('11526403854413902548795861447,6250000000000', '1844224616706224.40780733783152', '307840150789672937492642930347274685995354235175108309976189389250759848'); - T('702765355056540457405882229774275623914171478700737088553544569128446928397,10000000000000000000000000000000000000000000000000000', '70276535505654045740588.2229774275623914171478700737088553544569128446928397', '2994201467352227469980411736484219035208598424332283240168638173739557964288699659349793900394590666632'); - T('54825256449234689277507377,1000000000000000', '54825256449.2346892775073770', '7247599320592380995092818422'); - T('52241358526638931241686750736713811006187403081280396420418024952453139299798099747,1000000000000000000000000000000000000000000000000000000000000000000000000', '52241358526.638931241686750736713811006187403081280396420418024952453139299798099747'); - T('56621644568088128185885031935431,100000000000000000000000000000', '566.21644568088128185885031935431'); - T('39372223523562980543199487796419847872440851625907503200333,50', '787444470471259610863989755928396957448817032518150064006.66', '955541553332758813213626519789460543325290905244676838372840424628529596179789208585303701552552351175041044662668537427'); - T('325293311478566577489170522256284017692295100018580428088669389347157000201893827964335714244323280261021551781493573554200870379941749285031284525050456990337767,500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '650586622957133154978341044512568035384590200037160856177338778.694314000403787655928671428488646560522043103562987147108401740759883498570062569050100913980675534'); - T('614864078480713483874128578932501548981704516588520712161898329483464331757759954227806822474378198285515275589259000330713642481603365393389422940141019017401109,1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', '614864078480713483874128578932501548981704516588520712161898329483464.331757759954227806822474378198285515275589259000330713642481603365393389422940141019017401109'); - T('3829270893665970578184851197459824275528243394573338346473491354929939788896655873285990520983852622278895790953125487430033,50000000000000000000000000000', '76585417873319411563697023949196485510564867891466766929469827098598795777933117465719810419677.05244557791581906250974860066'); - T('780053005909401364919286689621630092740741364968611783815095760045292,1', '780053005909401364919286689621630092740741364968611783815095760045292.0', '45690752976547956116643254519509539579394298044534876843625082629489'); - T('11115161271892961338110886311733472538474225695783394064891231044512131866645638610465780143254877130975043621543307573319,117372832939055230293151', '94699608023130933036348120811996198905372415393501407434579046671460258797730199936885542957363696.08748184584119788329165464491688408482957311641741', '959631860555403859564786'); - T('269442874752488639176619580396174881364833,10000000000000000000000000000000', '26944287475.2488639176619580396174881364833', '8371945805788249772750247654848998754940863393299617894213772127884912858370833994661593347'); - T('64668573815841734344417489298502668067859,1000000000000000000000000000000', '64668573815.841734344417489298502668067859'); - T('3761571027751684615243460444230696668509504743538045995257317822557431413971266200889927052756417,10000000000000000000000000000000000000000000000000000000', '376157102775168461524346044423069666850950.4743538045995257317822557431413971266200889927052756417', '902612837213836957407294100697258033215360383465558379387665'); - */ - - T('2469,20', '12.345e1', null); - T('2469,20', '12.345e1', u); - T('2469,20', '12.345e1', '2.1e1'); - T('1111,9', '12.345e1', new BigNumber(10)); - T('2469,20', '12.345e1', new BigNumber('123e399')); - - assertException(function () {new BigNumber('12.3e1').toFraction('')}, ".toFraction('')"); - assertException(function () {new BigNumber('12.3e1').toFraction(' ')}, ".toFraction(' ')"); - assertException(function () {new BigNumber('12.3e1').toFraction('\t')}, ".toFraction('\t')"); - assertException(function () {new BigNumber('12.3e1').toFraction(NaN)}, ".toFraction(NaN)"); - assertException(function () {new BigNumber('12.3e1').toFraction('NaN')}, ".toFraction('NaN')"); - assertException(function () {new BigNumber('12.3e1').toFraction('hello')}, ".toFraction('hello')"); - assertException(function () {new BigNumber('12.3e1').toFraction([])}, ".toFraction([])"); - assertException(function () {new BigNumber('12.3e1').toFraction({})}, ".toFraction({})"); - assertException(function () {new BigNumber('12.3e1').toFraction(true)}, ".toFraction(true)"); - assertException(function () {new BigNumber('12.3e1').toFraction(false)}, ".toFraction(false)"); - assertException(function () {new BigNumber('12.3e1').toFraction(function (){})}, ".toFraction(function (){})"); - assertException(function () {new BigNumber('12.3e1').toFraction(new Number)}, ".toFraction(new Number)"); - assertException(function () {new BigNumber('12.3e1').toFraction(new String)}, ".toFraction(new String)"); - assertException(function () {new BigNumber('12.3e1').toFraction(new Date)},".toFraction(new Date)"); - assertException(function () {new BigNumber('12.3e1').toFraction(new RegExp)}, ".toFraction(new RegExp)"); - - assertException(function () {new BigNumber('12.3e1').toFraction(7.5)}, ".toFraction(7.5)"); - assertException(function () {new BigNumber('12.3e1').toFraction(new BigNumber('225.435435'))}, ".toFraction(new BigNumber('225.435435'))"); - assertException(function () {new BigNumber('12.3e1').toFraction(0)}, ".toFraction(0)"); - assertException(function () {new BigNumber('12.3e1').toFraction('0.99')}, ".toFraction('0.99')"); - assertException(function () {new BigNumber('12.3e1').toFraction(-1)}, ".toFraction(-1)"); - assertException(function () {new BigNumber('12.3e1').toFraction(-23)}, ".toFraction(-23)"); - assertException(function () {new BigNumber('12.3e1').toFraction(Infinity)}, ".toFraction(Infinity)"); - assertException(function () {new BigNumber('12.3e1').toFraction('-Infinity')}, ".toFraction('-Infinity')"); - - BigNumber.config({ERRORS : false}); - - T('2469,20', '12.345e1', null); - T('2469,20', '12.345e1', u); - T('2469,20', '12.345e1', undefined); - T('2469,20', '12.345e1', ''); - T('2469,20', '12.345e1', ' '); - T('2469,20', '12.345e1', '\t'); - T('2469,20', '12.345e1', NaN); - T('2469,20', '12.345e1', 'NaN'); - T('2469,20', '12.345e1', []); - T('2469,20', '12.345e1', {}); - T('2469,20', '12.345e1', new Date); - T('2469,20', '12.345e1', new RegExp); - T('864,7', '12.345e1', '7.5'); - T('2469,20', '12.345e1', 0); - T('2469,20', '12.345e1', -23); - T('2469,20', '12.345e1', '2.1e1'); - T('2469,20', '12.345e1', Infinity); - T('2469,20', '12.345e1', '-Infinity'); - T('1111,9', '12.345e1', new BigNumber(10)); - T('2469,20', '12.345e1', new BigNumber('123e399')); - T('2469,20', '12.345e1', new BigNumber(Infinity)); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js deleted file mode 100644 index 8ed0547..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toPrecision.js +++ /dev/null @@ -1,852 +0,0 @@ -var count = (function toPrecision(BigNumber) { - var start = +new Date(), - log, - error, - undefined, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function assertException(func, message) { - var actual; - total++; - try { - func(); - } catch (e) { - actual = e; - } - if (actual && actual.name == 'BigNumber Error') { - passed++; - //log('\n Expected and actual: ' + actual); - } else { - error('\n Test number: ' + total + ' failed'); - error('\n Expected: ' + message + ' to raise a BigNumber Error.'); - error(' Actual: ' + (actual || 'no exception')); - //process.exit(); - } - } - - function T(expected, value, precision){ - assert(String(expected), new BigNumber(value).toPrecision(precision)); - } - - log('\n Testing toPrecision...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : [-7, 40] - }); - - // ---------------------------------------------------------------- v8 start - - T('1e+27', '1.2345e+27', 1); - T('1.2e+27', '1.2345e+27', 2); - T('1.23e+27', '1.2345e+27', 3); - T('1.235e+27', '1.2345e+27', 4); - T('1.2345e+27', '1.2345e+27', 5); - T('1.23450e+27', '1.2345e+27', 6); - T('1.234500e+27', '1.2345e+27', 7); - - T('-1e+27', '-1.2345e+27', 1); - T('-1.2e+27', '-1.2345e+27', 2); - T('-1.23e+27', '-1.2345e+27', 3); - T('-1.235e+27', '-1.2345e+27', 4); - T('-1.2345e+27', '-1.2345e+27', 5); - T('-1.23450e+27', '-1.2345e+27', 6); - T('-1.234500e+27', '-1.2345e+27', 7); - - T('7', 7, 1); - T('7.0', 7, 2); - T('7.00', 7, 3); - - T('-7', -7, 1); - T('-7.0', -7, 2); - T('-7.00', -7, 3); - - T('9e+1', 91, 1); - T('91', 91, 2); - T('91.0', 91, 3); - T('91.00', 91, 4); - - T('-9e+1', -91, 1); - T('-91', -91, 2); - T('-91.0', -91, 3); - T('-91.00', -91, 4); - - T('9e+1', 91.1234, 1); - T('91', 91.1234, 2); - T('91.1', 91.1234, 3); - T('91.12', 91.1234, 4); - T('91.123', 91.1234, 5); - T('91.1234', 91.1234, 6); - T('91.12340', 91.1234, 7); - T('91.123400', 91.1234, 8); - T('-9e+1', -91.1234, 1); - T('-91', -91.1234, 2); - T('-91.1', -91.1234, 3); - T('-91.12', -91.1234, 4); - T('-91.123', -91.1234, 5); - T('-91.1234', -91.1234, 6); - T('-91.12340', -91.1234, 7); - T('-91.123400', -91.1234, 8); - - T('NaN', NaN, 1); - T('Infinity', Infinity, 2); - T('-Infinity', -Infinity, 2); - - T('5.55000000000000e-7', 0.000000555, 15); - T('-5.55000000000000e-7', -0.000000555, 15); - T('-1.2e-9', -.0000000012345, 2); - T('-1.2e-8', -.000000012345, 2); - T('-1.2e-7', -.00000012345, 2); - T('1e+8', 123456789, 1); - T('123456789', 123456789, 9); - T('1.2345679e+8', 123456789, 8); - T('1.234568e+8', 123456789, 7); - T('-1.234568e+8', -123456789, 7); - - T('-0.0000012', -.0000012345, 2); - T('-0.000012', -.000012345, 2); - T('-0.00012', -.00012345, 2); - T('-0.0012', -.0012345, 2); - T('-0.012', -.012345, 2); - T('-0.12', -.12345, 2); - T('-1.2', -1.2345, 2); - T('-12', -12.345, 2); - T('-1.2e+2', -123.45, 2); - T('-1.2e+3', -1234.5, 2); - T('-1.2e+4', -12345, 2); - T('-1.235e+4', -12345.67, 4); - T('-1.234e+4', -12344.67, 4); - - T('1.3', 1.25, 2); - T('1.4', 1.35, 2); - - T('1e+4', 9631.01, 1); - T('1.0e+7', 9950095.87, 2); - T('1e+1', '9.856839969', 1); - T('1e+2', '97.504', 1); - T('1e+5', 97802.6, 1); - T('1e+1', 9.9617, 1); - T('1e+3', 989.2, 1); - T('1.0e+5', 99576, 2); - T('1e+8', '96236483.87', 1); - - // ------------------------------------------------------------------ v8 end - - BigNumber.config({ROUNDING_MODE : 0}); - - T('-0.000090000000', '-0.00009', 8); - T('-7e-7', '-0.0000007', 1); - T('68.9316834061848', '68.931683406184761912218250317', 15); - T('7.8601018089704732e+27', '7860101808970473167417935916.60087069', 17); - T('3.21445885399803244067719798337437062000000e-11', '0.0000000000321445885399803244067719798337437062', 42); - T('-8171786349835057630612358814.162756978', '-8171786349835057630612358814.162756977984', 37); - T('3340.9039701', '3340.903970019817086594869184429527413533291595472085', 11); - T('-7269097658095414435895.9161181115739745427300313060', '-7269097658095414435895.916118111573974542730031306', 50); - T('0.00000632207', '0.00000632206077863', 6); - T('6e+2', '573', 1); - T('7.4e-7', '0.000000738', 2); - T('-5.031561e-7', '-0.0000005031560306227217140253964236911907612837', 7); - T('-4.291e+11', '-429050053964', 4); - T('8.514e+7', '85131637', 4); - T('-3.4e-9', '-0.000000003326783057540398442677461', 2); - T('6.9404295962722512e-20', '0.00000000000000000006940429596272251146200868514973032594273', 17); - T('-828376248340605120247.15155295014', '-828376248340605120247.15155295013990774586360178257303370779', 32); - T('-7.9828e+6', '-7982750.6677764682946015520272838914918899297118139169410659', 5); - T('0.00712610393722542527880200', '0.007126103937225425278801997738', 24); - T('-5.7e+4', '-56242', 2); - T('-8928855203945443164.755136735230293537', '-8928855203945443164.755136735230293536124112124', 37); - T('5218572327.99', '5218572327.98424443372003772604597054153304', 12); - T('71707870535238750871516796339.60', '71707870535238750871516796339.59678962573869890935', 31); - T('88817462.7137982220652429', '88817462.71379822206524285939115943006583441400005007918', 24); - T('3.00000e-9', '0.000000003', 6); - T('-6.053', '-6.05291095813493573191', 4); - T('6.51630828677e+19', '65163082867698740076', 12); - T('2483202135696501.60187899', '2483202135696501.60187898870193199949004966876115645', 24); - T('1.0766e-10', '0.000000000107650515680635692286894826641576642261', 5); - T('642724503819056076.659397077514269963295025', '642724503819056076.659397077514269963295024012414', 42); - T('-7.1192e+21', '-7119169102619893823635.32141854354', 5); - T('-6.717481255640638829101946114674e-8', '-0.000000067174812556406388291019461146732616998258', 31); - T('-12.41976452', '-12.4197645179995365323309894', 10); - T('-6.529258780126449116249954644017839921024112900e-16', '-0.00000000000000065292587801264491162499546440178399210241129', 46); - T('-441838.0', '-441838', 7); - T('1.128285293592950e-8', '0.000000011282852935929493101783925259749957192', 16); - T('-8.654857e+7', '-86548567', 7); - T('3.8883293855303995e-7', '0.00000038883293855303994672627854769926811949', 17); - T('3.25870000e-13', '0.00000000000032587', 9); - T('3.702e+6', '3701031.59037494113', 4); - T('-3580077435.93682917449675702508371047', '-3580077435.93682917449675702508371046631533', 36); - T('-7.400', '-7.4', 4); - T('109519523263844229810.068', '109519523263844229810.067657779734413280795410968892638', 24); - T('-509247322311590671954830.86847660619', '-509247322311590671954830.8684766061855', 35); - T('7.5518638430980800496570562671727890e-10', '0.00000000075518638430980800496570562671727889997', 35); - T('-5056721600639122835615986051.468831942818200', '-5056721600639122835615986051.4688319428182', 43); - T('-1.796146861125551785886171829251460000000000e-16', '-0.000000000000000179614686112555178588617182925146', 43); - T('6.0e+2', '599', 2); - T('7.619930e-16', '0.00000000000000076199293', 7); - T('834668.2370121038159610193', '834668.237012103815961019258574789273273342', 25); - T('-3.92251395952329649490768e+26', '-392251395952329649490767912.240768552138247705202732', 24); - T('-47504099413385554632166.5098', '-47504099413385554632166.50972492550706', 27); - T('-763912347.2814762', '-763912347.28147614121123622213255703', 16); - T('62.06092655083887409325613', '62.06092655083887409325612694639', 25); - T('-5262696454512614512.606481226453660', '-5262696454512614512.6064812264536594032183632269343356197', 34); - T('-324.4757687696223789483683661674', '-324.475768769622378948368366167382', 31); - T('41034172.92', '41034172.91600339960206', 10); - T('78.8705822927994376887853', '78.870582292799437688785229493004059423117558', 24); - T('13.2', '13.12562822628823049', 3); - T('-47510172284493547923917836.573231120531506713', '-47510172284493547923917836.573231120531506712946048319', 44); - T('-762632827', '-762632826.1', 9); - T('4e+13', '33953600811490.5124040357996528537249966', 1); - T('-8.1071720769966e+25', '-81071720769965824452477185.9774686', 14); - T('5.680e+22', '56797151043432713156004.54588148769825716', 4); - T('-32.861964853600294215914162138', '-32.8619648536002942159141621375696711453', 29); - T('-30816296472.656223819', '-30816296472.656223818627686674207740641739447', 20); - T('9.085158071966474886768332e+30', '9085158071966474886768331250478.08286703003069431737582', 25); - T('-504664.230671', '-504664.230670963', 12); - T('-1.013105775e+16', '-10131057742551895.1862632947', 10); - T('-542318552011993.7986', '-542318552011993.798599548369674038472319697531161473933214', 19); - T('-9.0310e+16', '-90309463572405956', 5); - T('-6.771931816', '-6.77193181559601521980141', 10); - T('4703514776786483.3', '4703514776786483.2838035091610781996968798', 17); - T('-8.43684044711e+12', '-8436840447101.126789480845', 12); - T('-343.5602326850284', '-343.56023268502830337554680474463898876525434', 16); - T('-3.17649252e+24', '-3176492517226717196752073', 9); - T('-2.3912888503759090e+28', '-23912888503759089673174904075', 17); - T('6.8853846820341808e+23', '688538468203418073592188', 17); - T('4e+17', '343455415908256944', 1); - T('-1.4e+9', '-1336106841', 2); - T('-2244450.2134814273335263', '-2244450.2134814273335262397290334104071203538487453309626146', 23); - T('8.74e+29', '873625255363763952428129881990.679929486040461455296118489', 3); - T('-1.85453549733179613185923288786', '-1.8545354973317961318592328878502252820666161607740183', 30); - T('431.7150651927', '431.71506519265522010949747887049', 13); - T('-8606297211156287.52520023752564', '-8606297211156287.5252002375256362382564355963505470716151', 30); - T('-8.4634889709e+24', '-8463488970828351722405003.220603', 11); - - BigNumber.config({ROUNDING_MODE : 1}); - - T('-844789036.5239726', '-844789036.52397268892', 16); - T('-5056.20629012767878749185273209679064306054', '-5056.206290127678787491852732096790643060542', 42); - T('-0.3287519131314873763501859870298952500', '-0.32875191313148737635018598702989525', 37); - T('-60729764', '-60729764', 8); - T('-7.622e-14', '-0.00000000000007622481594531380999826456196664586', 4); - T('-4686402261639729535.736324492474', '-4686402261639729535.7363244924747488', 31); - T('-2.0', '-2', 2); - T('-13801188035233586637950193108.13592574381473451125649500', '-13801188035233586637950193108.135925743814734511256495', 55); - T('0.0000807327587149839799300000', '0.00008073275871498397993', 24); - T('-6.000000e-8', '-0.00000006', 7); - T('-3.83574993e+11', '-383574993535', 9); - T('7.6987000000000000e-14', '0.000000000000076987', 17); - T('80928866804.6112050947427973', '80928866804.6112050947427973864826014844575374353', 27); - T('-0.00730140', '-0.0073014067221009206110062377503733', 6); - T('2.72104773884160491036088486e+30', '2721047738841604910360884862459.4086993273252009015', 27); - T('3.008780781917733594e+25', '30087807819177335941398228.1424107931203', 19); - T('-1.31528920779613669158250146972297797867760000000000000000000e-19', '-0.00000000000000000013152892077961366915825014697229779786776', 60); - T('-8.5e+11', '-858982311008.257025719798657844609315293821', 2); - T('-3.6312e-12', '-0.0000000000036312827608449878', 5); - T('-0.0060000', '-0.006', 5); - T('-1e+1', '-12', 1); - T('5.779447e+14', '577944759667712', 7); - T('-8.753124714248104872487955947563035887800000000000e-13', '-0.00000000000087531247142481048724879559475630358878', 49); - T('0.000736948830704113912', '0.000736948830704113912970821957479', 18); - T('-4.65727e+23', '-465727983501322687372765', 6); - T('-0.00000332331666628036603', '-0.000003323316666280366035430077076052', 18); - T('3.533702e-8', '0.00000003533702791135712510338001418872124', 7); - T('-0.04340', '-0.0434', 4); - T('-597340.278566069086858587852236235470', '-597340.2785660690868585878522362354706741', 36); - T('6.000e-8', '0.00000006', 4); - T('-3.624323359112776296e-19', '-0.00000000000000000036243233591127762966338166', 19); - T('-3731378568692042924197.154', '-3731378568692042924197.15400334142251496795634388', 25); - T('-68249040894032065692.62', '-68249040894032065692.62771690318493', 22); - T('8786096722661914.89732851', '8786096722661914.89732851188880184891692993684242690315', 24); - T('-1.8413321536281347264486372900000000000e-12', '-0.00000000000184133215362813472644863729', 38); - T('4.0e-9', '0.0000000040395827543504045', 2); - T('-2.9427e+16', '-29427119846374896', 5); - T('-917760614.4', '-917760614.45404359204911454', 10); - T('8e+4', '89427', 1); - T('0.00000920323988134356953828667260', '0.0000092032398813435695382866726', 27); - T('8.2e+16', '82068995955708118', 2); - T('3.35195944828e+26', '335195944828445911672446409.3379497158141', 12); - T('-3.89774891030e-9', '-0.00000000389774891030223957363124620581272897758735065471', 12); - T('-4', '-4', 1); - T('8', '8', 1); - T('1.41172955693912934219137966000000e-10', '0.000000000141172955693912934219137966', 33); - T('9.21481e+13', '92148111958857', 6); - T('-5.859975978432853e-18', '-0.0000000000000000058599759784328539', 16); - T('-72.0', '-72', 3); - T('3785098751297.8929911950994079707157472', '3785098751297.89299119509940797071574729867819252140059', 38); - T('4.38e+16', '43893416753778361.297703358127215475077814', 3); - T('-33110.29096', '-33110.2909623520267070846514', 10); - T('-74.38305251784882707720486436292121914036495', '-74.3830525178488270772048643629212191403649548392158614', 43); - T('-4.31091381814e+27', '-4310913818147299779611829988.1707181186375975966133328', 12); - T('-1e+7', '-19238355', 1); - T('-6996635475270055814687.6', '-6996635475270055814687.6250552375470211825551', 23); - T('-8.203834974e+12', '-8203834974826.23347025', 10); - T('-7.4775e+5', '-747754.16564979702874976822', 5); - T('-9.291256959320e+23', '-929125695932058727753757.0232350927089256760451379', 13); - T('8.5e+11', '853985704471', 2); - T('-6.6560212', '-6.65602121044617863313449309597493831', 8); - T('1785977942777.20398797', '1785977942777.2039879764361236566223563439', 21); - T('6.1333504356e+23', '613335043569565749922342.8859983523919141148812213832', 11); - T('-5.6e+8', '-565718507', 2); - T('87732918932081', '87732918932081.5225691355449629111825', 14); - T('34510.55200915393645123', '34510.55200915393645123649', 22); - T('80406604570281847.64813851700344044652354', '80406604570281847.648138517003440446523542379', 40); - T('4350.66340515', '4350.66340515436550356256', 12); - T('-1.795651762606996e+19', '-17956517626069967584.285356976401607845756322546530214497', 16); - T('9.162e+24', '9162436195089050810891391.493612', 4); - T('-7.82552e+6', '-7825522.1080200627404337', 6); - T('-358162040.1796393759838430', '-358162040.17963937598384303781972517649539', 25); - T('-20732451778.4', '-20732451778.464877395794562570976729066571095229', 12); - T('-239748.58739', '-239748.5873964402372997371903319', 11); - T('-6.106537e+9', '-6106537070.58700935776016694', 7); - T('4e+23', '405561947729011104089456.7617832102516', 1); - T('-1.7252987e+10', '-17252987633.58674364430598655792', 8); - T('61.38960691398015334867512513960', '61.3896069139801533486751251396015198659145775291764', 31); - T('-70493899102410752290043364.4667507415385', '-70493899102410752290043364.466750741538512', 39); - T('-891.3505', '-891.35058685025619', 7); - T('1.5e+8', '153705028.906', 2); - T('5.80e+18', '5805164734299168659.6173113885173384955443', 3); - T('-1.719875889271327', '-1.719875889271327133154458155573493605566221534', 16); - T('113.672129563', '113.672129563441659725876055771857758675550104070419635029', 12); - T('-77950052814622081084397.9', '-77950052814622081084397.91853869253589242574', 24); - T('4.53106985e+27', '4531069852787151785292512309.2901993579425172826443679877', 9); - T('45285.246089613169416440797840714', '45285.2460896131694164407978407142422013937', 32); - T('307760226411464.7333268079863299', '307760226411464.73332680798632996332324381779707', 31); - - BigNumber.config({ROUNDING_MODE : 2}); - - T('-0.0300', '-0.0300921721159558', 3); - T('65317841202.20949859371772273480125', '65317841202.2094985937177227348012464402154', 34); - T('-8.9231575495202e+29', '-892315754952021994731329589682.1894180393920044085713', 14); - T('-2.8075679202e-8', '-0.0000000280756792028583066', 11); - T('9.71456e+9', '9714558552', 6); - T('2.9514099281e-10', '0.00000000029514099281', 11); - T('-1.24459e+14', '-124459985101107', 6); - T('0.0000734657394154607815562372000000', '0.0000734657394154607815562372', 30); - T('1.78719530353972e+15', '1787195303539715', 15); - T('-2.8e+9', '-2861102528', 2); - T('-8.74480375581000e-9', '-0.00000000874480375581', 15); - T('-1792404726015427380.248150830448457643618022', '-1792404726015427380.248150830448457643618022', 43); - T('-678437320202616518.2220157912209286', '-678437320202616518.22201579122092864', 34); - T('-1.937304915215780220809799809655893674619672771e-8', '-0.000000019373049152157802208097998096558936746196727718', 46); - T('824172.15863347130174103087', '824172.15863347130174103086069960571', 26); - T('1.90040714061724000e-9', '0.00000000190040714061724', 18); - T('-1634488249956745498.58311', '-1634488249956745498.58311123049258868631623840423306', 24); - T('0.0000019600923098540334001755857361187871270117098000', '0.0000019600923098540334001755857361187871270117098', 47); - T('8.383e+4', '83829', 4); - T('2.843306120337864064e+23', '284330612033786406376718', 19); - T('1.86235e+15', '1862340943682995.08270612464203237562317928642459', 6); - T('-2.31e+13', '-23195312138083', 3); - T('5.450237e+21', '5450236028274773541895.65198933808968167192289601277', 7); - T('-0.008976419749408075453861117865459', '-0.00897641974940807545386111786545972434475187220274239581167', 31); - T('-761181660548661030.25', '-761181660548661030.25539542029', 20); - T('-1844205.93619958', '-1844205.936199580689273072905714475263817', 15); - T('4842.77906784902805070438222238898372327093', '4842.77906784902805070438222238898372327092242428134814721', 42); - T('-4.161198953445629503503971e+26', '-416119895344562950350397179', 25); - T('1.084e+4', '10836', 4); - T('8.71081704218174598654542083000e-8', '0.0000000871081704218174598654542083', 30); - T('7.9139683e+36', '7913968291641940848703040206324645237.8515176490912667096', 8); - T('-0.000008', '-0.000008', 1); - T('8.3660085625e+34', '83660085624983922907621996804192921.3992927', 11); - T('0.000006980263008', '0.000006980263007423150706324065130475391', 10); - T('-31348084528321454060964445534333629317.69561497283830023', '-31348084528321454060964445534333629317.69561497283830023', 55); - T('-2417953792643886.3485495754363678888681996409674308643', '-2417953792643886.3485495754363678888681996409674308643', 53); - T('4.0e+6', '3982592', 2); - T('-2092315.015029722200', '-2092315.0150297222', 19); - T('-364992136844916.9092238', '-364992136844916.909223894931280218350055327754935', 22); - T('8.34e+24', '8333642861002789136219873', 3); - T('7.6008837179413e+14', '760088371794122.3380234188299740029832128019574765416', 14); - T('-6655726127.0', '-6655726127', 11); - T('-8.2157109e-9', '-0.000000008215710991605913786700324', 8); - T('-0.00007003302912717900', '-0.000070033029127179', 16); - T('-919151201.84874', '-919151201.8487431', 14); - T('-7.7284e+34', '-77284694095619151624570282373349775.20332', 5); - T('-0.01348565', '-0.013485650787487', 7); - T('4793.07921563762902275733457926767780', '4793.0792156376290227573345792676778', 36); - T('-29428.0', '-29428', 6); - T('-5.031066774187e+17', '-503106677418717710.020194320886816967824316089135', 13); - T('8.5822119333e+30', '8582211933222895201417193603829.362', 11); - T('3.69818e+29', '369817665788648417491163239098.45906115246177782675574', 6); - T('-16637318966.7921513256', '-16637318966.79215132564236', 21); - T('-3.511414e+7', '-35114143.07750577', 7); - T('-4.00583795e+15', '-4005837953660576.377392671047611906101', 9); - T('2.857013789e+29', '285701378835628725742568343419.93', 10); - T('3.784446708460892550157924e+30', '3784446708460892550157923126965.213', 25); - T('-8.07e+11', '-807835898139.8273423102575232570378422434793962915', 3); - T('7.2e+12', '7166828666682', 2); - T('-2.7e+15', '-2759498523697862.0885969105603319015115245', 2); - T('3.93e+3', '3920.77076847274147345709652305252825254482870430341848100141', 3); - T('-6e+12', '-6791423282682', 1); - T('-8.6204e+14', '-862048518070094.31', 5); - T('124280692175695486153.808', '124280692175695486153.80744660510519294193', 24); - T('-460557721667773.3587267520', '-460557721667773.3587267520989', 25); - T('-6268536499825359064300.23', '-6268536499825359064300.2317858', 24); - T('292408901.64362273508249026852286', '292408901.64362273508249026852285294673307', 32); - T('-649622345434955387029125.11357971191', '-649622345434955387029125.113579711917604812061404975326264229', 35); - T('-4.287461556179478781e+27', '-4287461556179478781817700851.131100167', 19); - T('-5.891552271022619e+29', '-589155227102261925251047170629.30784624401', 16); - T('1.88e+5', '187009.128', 3); - T('4299388.1132142278863818606739416640', '4299388.1132142278863818606739416639837103457725931818979', 35); - T('-7.8e+8', '-788088836.225886207482064192607002511282756502400977', 2); - T('-56025768755085222.404269', '-56025768755085222.404269295514', 23); - T('-8376.71149693765842', '-8376.71149693765842060199698996606139145426', 18); - T('-1.7218673528e+29', '-172186735288586033321621121024.11240623', 11); - T('-3.31e+28', '-33197729862068219255677464974', 3); - T('-4.835191326e+29', '-483519132605694848658321267839.23575134378118945659616358', 10); - T('7.3', '7.24882150443803', 2); - T('-89186640077683569.407061427673', '-89186640077683569.4070614276736450982125609', 29); - T('-49379651041268.5', '-49379651041268.548293', 15); - T('-7685054.17489171951660', '-7685054.17489171951660508194254495141726065698575306365447451', 21); - - BigNumber.config({ROUNDING_MODE : 3}); - - T('-39449414270333.925852213835', '-39449414270333.925852213834759031494508489474', 26); - T('-7.50437989976', '-7.50437989975503711836768', 12); - T('-0.000004303975760000000', '-0.00000430397576', 16); - T('-16040233916257241895.97650633973989', '-16040233916257241895.9765063397398857', 34); - T('-7438.9287248601393819', '-7438.9287248601393818639176907606', 20); - T('9.857465584298e-7', '0.000000985746558429876825600458537705318327799', 13); - T('532637.9095983547284850466577958315920', '532637.90959835472848504665779583159203905641996', 37); - T('-1.40416695292e+30', '-1404166952915258058306475434520.7856110230505157', 12); - T('60346876.6670832429026869255506808488', '60346876.6670832429026869255506808488', 36); - T('-2.52466133e+23', '-252466132238128405832984', 9); - T('55', '55', 2); - T('8', '8', 1); - T('-63075151.962465776516325792253177939493172', '-63075151.9624657765163257922531779394931714', 41); - T('7.411461e+17', '741146113404361548.543142388', 7); - T('-58835755359067474972692072494278983.7', '-58835755359067474972692072494278983.6314961114191480012916', 36); - T('-3.5408424427810e+21', '-3540842442780946836975', 14); - T('-8.6985e+22', '-86984550895486812167623.3816747460029582321093085895', 5); - T('-4.4625326e+20', '-446253250722400223428', 8); - T('-79301328.93777304419247399162092400', '-79301328.937773044192473991620924', 34); - T('-1.6065669647394805e+28', '-16065669647394804383207152895.0285044537455', 17); - T('-333', '-333', 3); - T('7', '7', 1); - T('7.24707e+13', '72470760481059', 6); - T('39232618.1513515442233995765535454389', '39232618.151351544223399576553545438981252', 36); - T('-4e+5', '-357994', 1); - T('-1.90e+4', '-18904.11335233460016293296574557643545512393801643609213933', 3); - T('-6585152111956929.924309477123328984876184272828762900', '-6585152111956929.9243094771233289848761842728287629', 52); - T('4.505e-7', '0.0000004505328', 4); - T('-2.4125965461846e+19', '-24125965461845662271', 14); - T('4.82673137e+33', '4826731373891127996812671510065700.871947701', 9); - T('-6621278.2', '-6621278.1120573461544975284970826524341806671316100080257485', 8); - T('-1.8015392869565386634525164264799463344376205007391000000e-7', '-0.00000018015392869565386634525164264799463344376205007391', 56); - T('-0.00026465463574439280006655492609887593', '-0.00026465463574439280006655492609887592672292239588307259', 35); - T('4.87815228988300090', '4.8781522898830009076096556452567', 18); - T('-5.1107117199524082779077801201617e+35', '-511071171995240827790778012016163902', 32); - T('1.4734242515706890557e+20', '147342425157068905574.390834406', 20); - T('-4019325091848890817268596991.815200', '-4019325091848890817268596991.8152', 34); - T('3.8e+14', '384715413967421', 2); - T('7483444.49', '7483444.498791364040133403947480439118040376737700653', 9); - T('-594538312.6255', '-594538312.625485172379', 13); - T('0.00753000', '0.00753', 6); - T('8.1440148247e+13', '81440148247675.27449603492606125135884', 11); - T('8.444003009300e+21', '8444003009300239495556', 13); - T('2308.1529840912558574923966042774800185916972327325289', '2308.1529840912558574923966042774800185916972327325289261', 53); - T('2.67e+3', '2674.698673623', 3); - T('-2.82819136180287470854625537e+30', '-2828191361802874708546255368471.80800005766', 27); - T('518250411', '518250411', 9); - T('3.2e+4', '32661.9135347256259375001777960775509', 2); - T('29.15347602216416991973', '29.153476022164169919735054013077734177', 22); - T('-4.611285536613066108e+30', '-4611285536613066107912600830385', 19); - T('-51774110.0705144989023975360207167071143094356321', '-51774110.070514498902397536020716707114309435632036586', 48); - T('-11969053.91', '-11969053.9052', 10); - T('3102686944.558209725206279080384565972890930884678', '3102686944.5582097252062790803845659728909308846780130141', 49); - T('-3601967476456.11863985450841401751857855', '-3601967476456.1186398545084140175185785472952682624279698', 39); - T('-5e+15', '-4873768150955988', 1); - T('-352.0819', '-352.08189544801640267067628', 7); - T('-2.58805959847e+29', '-258805959846025073839294200101', 12); - T('-66245829859.35391480', '-66245829859.353914791938511206971693', 19); - T('1.54e+9', '1544806884.11336335261587391', 3); - T('-27.7997003414813453645099801', '-27.79970034148134536450998001339677019', 27); - T('14062458038542559389162.9204850167', '14062458038542559389162.9204850167680814', 33); - T('1.558308e+23', '155830857739562225455438.36', 7); - T('-191388637226531701343.3', '-191388637226531701343.25549694555307', 22); - T('5551.7364563066033013381', '5551.73645630660330133811512206', 23); - T('-374.187067', '-374.187066872511899560500516595762548924654039141', 9); - T('5608.7939', '5608.79395345957', 8); - T('-7.46461560634688e+16', '-74646156063468781.44597747432564', 15); - T('6.282e+14', '628222207265224.793350069927452126508488621324740335935808339', 4); - T('739267731.33076658725535583758', '739267731.3307665872553558375867276395038136046', 29); - T('-7.243744595180e+19', '-72437445951792218018.4147098155', 13); - T('148197.230592476071658991268667398', '148197.23059247607165899126866739893696346154456779371449089', 33); - T('-7326871.99257009310974109937661882759811033', '-7326871.9925700931097410993766188275981103204155306', 42); - T('-5.2007521e+21', '-5200752087996702875406.6925', 8); - T('9.00107829e+18', '9001078299504900356', 9); - T('229140061917', '229140061917.91723092039513459551808768805307572856707938', 12); - T('-6868103.8726464561656824818722569258791476905', '-6868103.872646456165682481872256925879147690458928033592856', 44); - T('-220947971933643883580237.50', '-220947971933643883580237.49534341528328', 26); - T('544164102001101766247312.91529628700', '544164102001101766247312.915296287008639054933', 35); - T('1.70e+23', '170271631736408409477543.35894', 3); - T('-5735975666.6511674981929172446', '-5735975666.65116749819291724455000274115296', 29); - T('-67513065.4797', '-67513065.4796695356', 12); - T('-9e+19', '-82164590986048729101.278942224271247884118371796531523', 1); - T('687378946204028.408158998985701', '687378946204028.408158998985701430935094', 30); - T('42.452', '42.4523909443358871476552683504968536100051', 5); - T('-22771061110217019663705702.44170142085172', '-22771061110217019663705702.44170142085171219649140996', 40); - T('-1470.640309974016167512235698629586', '-1470.6403099740161675122356986295857257144815364', 34); - T('-1.110228e+27', '-1110227398804733429555663947.06619', 7); - T('-6.4898237111e+26', '-648982371105405071851661301', 11); - T('-4641197449469148.658850361201903', '-4641197449469148.658850361201902222', 31); - - BigNumber.config({ROUNDING_MODE : 4}); - - T('7.905300379788e+16', '79053003797878062.6454954', 13); - T('-6.83490000000e-13', '-0.00000000000068349', 12); - T('-62760641815.69084973661201201', '-62760641815.690849736612012010742308663', 28); - T('0.000704', '0.000704496313', 3); - T('82926865286287.8852357368342860830310721063079299643', '82926865286287.88523573683428608303107210630792996432', 51); - T('-0.00032388272393900301214220090249', '-0.00032388272393900301214220090248744799603424908', 29); - T('8.6e+12', '8621641486938.4837308885005093571508566552428700982454', 2); - T('2', '2', 1); - T('1.4641440117052559075e+20', '146414401170525590746.047955203899370771105088', 20); - T('3511.925583', '3511.925583', 10); - T('2861824.253079699095728', '2861824.253079699095727765750377038689', 22); - T('-3.940097756e+10', '-39400977564.548924098664431671700066962', 10); - T('-888', '-888', 3); - T('-0.000302106125213724988141721256104', '-0.00030210612521372498814172125610432438685', 30); - T('6943.4804552555315615809650428503', '6943.480455255531561580965042850266831249032130818358478956', 32); - T('3365678', '3365678.3397481381125085749', 7); - T('-5.3943374314e+19', '-53943374313769567458.386865325', 11); - T('-6.67880509225510150542252852147049489938254298497979', '-6.6788050922551015054225285214704948993825429849797925563674', 51); - T('1.36424e+18', '1364240644139816224.60228356028', 6); - T('1.410236477950416725e+23', '141023647795041672538410.84935693266374259666015274447', 19); - T('-802.817765', '-802.81776500697712984253334522', 9); - T('-5.276210722424690668896260075355037218851', '-5.27621072242469066889626007535503721885096', 40); - T('-0.000874209568970788', '-0.0008742095689707877849902027926289294748756775668387', 15); - T('0.092053833162002', '0.09205383316200189249855864903410820435666385119723209239', 14); - T('7.0656298318128209e-14', '0.0000000000000706562983181282092835675843980510112', 17); - T('-8.66511516852116659e+18', '-8665115168521166587', 18); - T('3.3490648464e+22', '33490648463534229842937.79268276945692333064632966129475', 11); - T('-39041587174692569176.82740706154183894', '-39041587174692569176.827407061541838942655371389185', 37); - T('-3834.0', '-3834', 5); - T('-0.008912382644814418776268630', '-0.00891238264481441877626863', 25); - T('-2.1e+5', '-206119', 2); - T('4.83340000000e-8', '0.000000048334', 12); - T('3.185196533675230520000000000000e-19', '0.000000000000000000318519653367523052', 31); - T('6.0431217298488095562718496137220939447806000000000000000e-17', '0.000000000000000060431217298488095562718496137220939447806', 56); - T('196.519569070149034', '196.51956907014903416531531', 18); - T('0.0000046405006597117307566000', '0.0000046405006597117307566', 23); - T('9.10e+16', '90974867783311624.1073050261392195984211985571898902', 3); - T('0.0009', '0.0009', 1); - T('-784.344', '-784.3442317667756502522526185951859933319162', 6); - T('4.407336482399797058693e+28', '44073364823997970586929155979.43263841350505', 22); - T('-3.0000000000e-13', '-0.0000000000003', 11); - T('0.800', '0.8', 3); - T('0.04643398170143261158595951942031', '0.046433981701432611585959519420314960367263', 31); - T('-8e+26', '-786589693451258754942279859.3834', 1); - T('-26.0', '-26', 3); - T('-8.462226728e+11', '-846222672789.2087639320702375427266333530942524245', 10); - T('-4e-7', '-0.0000004019666978288041783154210868', 1); - T('-315609.775843992', '-315609.775843992', 15); - T('-3.319e+9', '-3318880945', 4); - T('-6', '-6.2847', 1); - T('7.754663772705e+20', '775466377270546647581.033426922028458904663', 13); - T('-72577466365074249372160551.716563', '-72577466365074249372160551.71656300408', 32); - T('-7.8e+14', '-775743793612078', 2); - T('132441.1194131940273344', '132441.119413194027334448511114274180643744', 22); - T('-2e+8', '-175718250.88225246544054572629398592939731158738360059', 1); - T('8603217351572193.39188696', '8603217351572193.391886964766947146712574336', 24); - T('-9.1544942231978215224e+22', '-91544942231978215224182.9277714', 20); - T('2.67483212861962e+22', '26748321286196185405759.132664', 15); - T('-5812371.3', '-5812371.311809024582418495005304074', 8); - T('-4.56681272e+10', '-45668127184.1622', 9); - T('-6.833879652430027734e+28', '-68338796524300277341620461049.174596381', 19); - T('3.5253e+11', '352531868532', 5); - T('6.18754e+9', '6187538472.1814915517411034136013806202710623466754380762318', 6); - T('-49119914201836431396827151123.9982195', '-49119914201836431396827151123.99821949990542', 36); - T('-2.50e+18', '-2498994955335714645.22910610209', 3); - T('112714.50647532453078481574527706184222476885', '112714.50647532453078481574527706184222476884905812', 44); - T('1.3e+10', '13358297773', 2); - T('3.85346866600e+27', '3853468666000315958109987025.078941', 12); - T('-6.849e+16', '-68490080550892289', 4); - T('9.095', '9.094726073939375', 4); - T('4.6722099483e+12', '4672209948311.8638324115985415208264055834', 11); - T('-75494281.3585391383', '-75494281.3585391382541907932608754414663476859104837422712', 18); - T('7.9e+2', '787.7709059965548561711769118765', 2); - T('6103081090513.979878497219802', '6103081090513.9798784972198017843', 28); - T('-6207456599626114.392919', '-6207456599626114.39291886624528055513014220851925', 22); - T('844941600554602638837.461606663208684075561936', '844941600554602638837.461606663208684075561935576396', 45); - T('159438905444627555.28986', '159438905444627555.28985729196359392', 23); - T('-3688253681705278.414841830526919796661181971979', '-3688253681705278.4148418305269197966611819719792068915', 46); - T('-63', '-63.164640732796214571844119', 2); - T('2.8e+11', '276059026705.36069', 2); - T('357378.987253867425946425403370727230144', '357378.9872538674259464254033707272301441754336', 39); - T('1597.52674152596523825479', '1597.526741525965238254790848976407269408999607', 24); - T('4.63310587686706257280646279e+30', '4633105876867062572806462788592.801009', 27); - T('-6.21108762339449e+20', '-621108762339448671355.1393522133', 15); - T('8380435.063269894549337249', '8380435.063269894549337248813357930541546715547', 25); - - BigNumber.config({ROUNDING_MODE : 5}); - - T('-1408003897645960.648499616456', '-1408003897645960.648499616456', 28); - T('-7719307749101742537.6299396338672184', '-7719307749101742537.6299396338672184334306', 35); - T('-1.0', '-1', 2); - T('-8.28e+14', '-827860423543649', 3); - T('0.00054398953021585321711560388890', '0.00054398953021585321711560388889590290139888', 29); - T('-4.409e-9', '-0.000000004408792', 4); - T('4.0000e-10', '0.0000000004', 5); - T('3.40e+16', '34001779327925905', 3); - T('-9.03e+34', '-90332622851356543193546536340366547', 3); - T('-4.5320e+16', '-45320100856429143.39155209710530673318222777', 5); - T('3.618e+30', '3618328715720583671291544414202', 4); - T('-1003.61140', '-1003.61139687804673322250551', 9); - T('-8139415035028632370.38737', '-8139415035028632370.38736602659835', 24); - T('8e+7', '83198058', 1); - T('-7.99492e+14', '-799491603856548', 6); - T('-3.351956508998634059456001730355207230e-9', '-0.000000003351956508998634059456001730355207229966', 37); - T('-14.69863659940007820467946969441090', '-14.698636599400078204679469694410899305', 34); - T('-8.1805185086529e+32', '-818051850865289066860294784032304.6373757407', 14); - T('8.21371840206651626757e+29', '821371840206651626756943367010.81915938727', 21); - T('444', '444', 3); - T('0.00000613258266938', '0.0000061325826693823067791292255878336353793864046451956723', 12); - T('-554696279951718746537611.26040', '-554696279951718746537611.26040029508470430208572833137315', 29); - T('446', '446.189185820662709163412845035853873', 3); - T('22873128187827109553471831451.06623850867', '22873128187827109553471831451.06623850866672688842662473', 40); - T('9e+5', '880389', 1); - T('-6.7516118890844e+16', '-67516118890844443.625641', 14); - T('-0.36107158435820', '-0.36107158435820101656696353075596201902674001080619510849', 14); - T('8.958386374640407365', '8.958386374640407364828679985365339921820421370157246', 19); - T('3e+2', '257', 1); - T('-1.904659739878e+18', '-1904659739878060478.113131137688927604413210083841', 13); - T('-0.0000627142', '-0.00006271421732891589577305487292334', 6); - T('3.310541e+8', '331054103', 7); - T('-1.793886e+23', '-179388600781592577147651.2641684828762234473', 7); - T('0.0004600', '0.00046', 4); - T('-2.9e+21', '-2906505321975413509885', 2); - T('86415.94739506', '86415.9473950557683374', 13); - T('6.730414', '6.7304135909152', 7); - T('-5.032367e+14', '-503236749968584', 7); - T('-5.0241682013868216287718e+32', '-502416820138682162877178622610283', 23); - T('-0.0552606118984074172116684879479087', '-0.0552606118984074172116684879479087', 33); - T('91017414629852252476380368766.471', '91017414629852252476380368766.47117955844005', 32); - T('28586.32124747000', '28586.32124747000107561236523943', 16); - T('0.000001935665545322534195131', '0.0000019356655453225341951305040536808235510260170838860718', 22); - T('7.8', '7.803563246406851025', 2); - T('-4.89914223627882382434323e+26', '-489914223627882382434323457.50920109688497974624541155867073', 24); - T('384718796891211107', '384718796891211107', 18); - T('42510.74002309897971230194', '42510.7400230989797123019438399853496258', 25); - T('-7.388e+11', '-738804895894', 4); - T('-5.0000000e-7', '-0.0000005', 8); - T('8.364583286198657757274487081e+29', '836458328619865775727448708084.5405786', 28); - T('-6.24e+26', '-624168076184333836471774105.20710913228879473008695839055', 3); - T('19804.9', '19804.875536771730958444190952514101502', 6); - T('-74106.212623408289', '-74106.2126234082888281', 17); - T('7432670190286.34100080472041', '7432670190286.341000804720411465540223412277267472', 27); - T('5.3250588635e+21', '5325058863479337983860.6152606488098384817869174221885211', 11); - T('6.865e+9', '6865129903.657345356274690732979469003170132760589', 4); - T('5795370.885430786885', '5795370.8854307868847728814464165810658237393757773', 19); - T('-29172007010418365641.7578738', '-29172007010418365641.7578738219989133084908106406123747833195', 27); - T('-62322.86188017646654', '-62322.8618801764665355127105700053481622040465444574371', 19); - T('-6374', '-6373.604850300043463878', 4); - T('5.846101e+26', '584610089745513547435367965.045755404292155403517947658', 7); - T('-4.9589e+12', '-4958880864611.79783789828786433416628187354312472853462765', 5); - T('-976.708', '-976.7080061576', 6); - T('-6.265387e+7', '-62653867.768253566156', 7); - T('5.943e+14', '594338013726832.675613519', 4); - T('5.0e+27', '5018407166428602036582808244', 2); - T('9e+16', '86282182181939888.936', 1); - T('-5319867042361146027.570343834017247178243381990233', '-5319867042361146027.5703438340172471782433819902325543283', 49); - T('-280.611828072', '-280.611828072476084775', 12); - T('497125.5349688434079217115738652', '497125.5349688434079217115738651759109278602', 31); - T('-8.74679213554e+15', '-8746792135535203.818773729011249091171163901426235584485964', 12); - T('2750816434321727711.90126468620', '2750816434321727711.901264686199491277747822638', 30); - T('-804111355.871490666462196181', '-804111355.8714906664621961811894645876', 27); - T('5592072638309750852858746183.6506680977', '5592072638309750852858746183.6506680977126', 38); - T('-4.0e+20', '-400904317147714566361', 2); - T('-3.9e+26', '-390267222260748697649150634.14444', 2); - T('43.2', '43.2482', 3); - T('42334337596496149636254', '42334337596496149636254.4926162509306406461', 23); - T('-7e+9', '-7246374971.34279698356', 1); - T('71516263932998764871838469072', '71516263932998764871838469072.280115355524', 29); - T('71257489.5995227415169007618702182092', '71257489.59952274151690076187021820922744', 36); - T('268492835', '268492834.77041', 9); - T('50325.551277778107847798802', '50325.551277778107847798801525', 26); - T('-5.289303987e+29', '-528930398665449048343281311623.69686', 10); - - BigNumber.config({ROUNDING_MODE : 6}); - - T('0.08000', '0.08', 4); - T('-4.5132e+21', '-4513243388120382069815.8508153058993058875', 5); - T('-73549', '-73549.2594630551663822238', 5); - T('1.275868004728922895890883e+29', '127586800472892289589088296800.6', 25); - T('-0.0003715444034899460421534099962225699000', '-0.0003715444034899460421534099962225699', 37); - T('-6.9625565265e+24', '-6962556526511822306135536', 11); - T('1.67583703641e+13', '16758370364138.915293525076269061228714877', 12); - T('-173594.95064085553515176707313947534918109631092170', '-173594.950640855535151767073139475349181096310921699', 50); - T('-6.9503965525e+19', '-69503965525000308384.151383', 11); - T('4.411225e+20', '441122486054080817112', 7); - T('2.467044064783596937642371770e+31', '24670440647835969376423717700462.39', 28); - T('3.9711897549481645654e+24', '3971189754948164565361634.8039734590476326224193520402091769', 20); - T('-1.4757613208690e+21', '-1475761320868963235919.64499841336073105746686372924161', 14); - T('91683083887068.6191146', '91683083887068.61911461351134520171343337804061135', 21); - T('-7923074181102822.578', '-7923074181102822.5778', 19); - T('-6.800e-8', '-0.000000068', 4); - T('-2.57954671081460000000e-10', '-0.00000000025795467108146', 21); - T('5.5352911972e-9', '0.000000005535291197169667611325365189624523452', 11); - T('6.0488358e+8', '604883577', 8); - T('3', '3', 1); - T('-4.072637936805672015603149446630136089530560102165', '-4.0726379368056720156031494466301360895305601021653459970194', 49); - T('-7.2e+10', '-71689970391', 2); - T('655754242958.1563938760094919', '655754242958.15639387600949190369', 28); - T('-7.575535014e-9', '-0.00000000757553501363609536678641245355', 10); - T('7.547067960578900230644488e-10', '0.00000000075470679605789002306444877998602723', 25); - T('-3.64561456763e+12', '-3645614567625.4', 12); - T('9.0e-7', '0.0000009', 2); - T('7e+2', '687', 1); - T('517277827334839.8174848543680868', '517277827334839.8174848543680868015165926618', 31); - T('7e+2', '655.46270361324473194', 1); - T('1632131488313153.49737424823493573157', '1632131488313153.497374248234935731568', 36); - T('274068317992.5998880719845028748169734442', '274068317992.5998880719845028748169734442394151076', 40); - T('-7.060e-9', '-0.00000000706025531009734073', 4); - T('0.004444', '0.0044439457493', 4); - T('72482770689153111154104782082.023', '72482770689153111154104782082.022764082943227214833851', 32); - T('5.9130694036072794206e+24', '5913069403607279420613864.152', 20); - T('843384561300245347961437.966', '843384561300245347961437.96592523791', 27); - T('0.0000035198821282510000000', '0.000003519882128251', 20); - T('-1.00371560130267706870097e-9', '-0.00000000100371560130267706870096885251', 24); - T('17504218.4970302', '17504218.49703016415913667026121376499', 15); - T('-5e-9', '-0.000000005169058703', 1); - T('6.922803246e+10', '69228032455', 10); - T('-16', '-16', 2); - T('-1.355147513468192707127939151e+40', '-13551475134681927071279391508441439066206.58705380600075', 28); - T('81670324.1197758695', '81670324.1197758695212865075629796973196504241126', 18); - T('0.00005', '0.00004797485174640366805332660647', 1); - T('-4.864397594e-10', '-0.0000000004864397594461335282648538530108953965681345', 10); - T('47694105.2312532', '47694105.23125322528167211284521303', 15); - T('-4.962106181e+26', '-496210618135432953927871636.779236', 10); - T('1.2800030559497062236642e+37', '12800030559497062236641930592334626609.7332', 23); - T('-574830783.7', '-574830783.6689168903917696583746514637433390929', 10); - T('5969.431086199057470', '5969.43108619905746956015212970904111744101', 19); - T('-4.8e+3', '-4814.32904953003285', 2); - T('4.297e+16', '42973001760252134', 4); - T('-5.7628e+6', '-5762846.590152347665179652381407653797146356303622218259885', 5); - T('904864662232032.160612401810317927291657403142932', '904864662232032.16061240181031792729165740314293194205879163', 48); - T('7.9892e+20', '798923115068265241915.537619430376605', 5); - T('-8.97759349384000643', '-8.97759349384000643427096282979', 18); - T('841598023200278219780', '841598023200278219780.04764720909930685', 21); - T('7.294115e+17', '729411462980818078', 7); - T('-493854.469231', '-493854.46923056217873', 12); - T('1.16760483177812e+16', '11676048317781198.761924013', 15); - T('4.91431629960536e+17', '491431629960536053.49611060493021241774', 15); - T('-391357204564683265466220678.5248961969115394056441165', '-391357204564683265466220678.524896196911539405644116478', 52); - T('-1138622.4269179222525707405725062065185867', '-1138622.42691792225257074057250620651858665807616', 41); - T('7762491414507273289587174.60526', '7762491414507273289587174.60526424654003', 30); - T('-8.34305e+12', '-8343051798787.85784573983', 6); - T('-448090139696.5', '-448090139696.540044682', 13); - T('-249554483941810.04760758280384259798256931579', '-249554483941810.0476075828038425979825693157901967215767', 44); - T('-4937249656843391.056849', '-4937249656843391.056849458', 22); - T('-4.90029240789e+24', '-4900292407887576632220011.4', 12); - T('884134', '884134.30546381722', 6); - T('-67686.285431006', '-67686.2854310057290328136776917246126204655', 14); - T('5.1454907927786956678e+21', '5145490792778695667848.5080878826658832100351133', 20); - T('-3.75540093e+9', '-3755400930.115945946791361377756114557824815082', 9); - T('790548.1', '790548.055405', 7); - T('21.9776441681934305611827', '21.9776441681934305611826542081066055', 24); - T('-8.62915591e+12', '-8629155908036.5010483', 9); - T('-62521191175', '-62521191175.03721539877599449', 11); - T('-63947010170235145618893.55048', '-63947010170235145618893.55048264587643', 28); - T('-4.4791e+5', '-447912.9929543492037', 5); - T('876897.06887720787797443065', '876897.0688772078779744306464727', 26); - T('-609834676.749497163216150672711104329822616519', '-609834676.749497163216150672711104329822616518762', 45); - T('-2.9407315435e+18', '-2940731543474095094.56340709357589521', 11); - T('243028.94040290384317164750687246', '243028.940402903843171647506872458168411478', 32); - T('5313610990.737', '5313610990.7373810218', 13); - T('-3.56e+4', '-35566.4678487', 3); - - T('123', '12.345e1', BigNumber(3)); - T('123.45', '12.345e1', null); - T('123.45', '12.345e1', undefined); - - assertException(function () {new BigNumber(1.23).toPrecision(NaN)}, "(1.23).toPrecision(NaN)"); - assertException(function () {new BigNumber(1.23).toPrecision('NaN')}, "(1.23).toPrecision('NaN')"); - assertException(function () {new BigNumber(1.23).toPrecision([])}, "(1.23).toPrecision([])"); - assertException(function () {new BigNumber(1.23).toPrecision({})}, "(1.23).toPrecision({})"); - assertException(function () {new BigNumber(1.23).toPrecision('')}, "(1.23).toPrecision('')"); - assertException(function () {new BigNumber(1.23).toPrecision(' ')}, "(1.23).toPrecision(' ')"); - assertException(function () {new BigNumber(1.23).toPrecision('hello')}, "(1.23).toPrecision('hello')"); - assertException(function () {new BigNumber(1.23).toPrecision('\t')}, "(1.23).toPrecision('\t')"); - assertException(function () {new BigNumber(1.23).toPrecision(new Date)}, "(1.23).toPrecision(new Date)"); - assertException(function () {new BigNumber(1.23).toPrecision(new RegExp)}, "(1.23).toPrecision(new RegExp)"); - assertException(function () {new BigNumber(1.23).toPrecision(2.01)}, "(1.23).toPrecision(2.01)"); - assertException(function () {new BigNumber(1.23).toPrecision(10.5)}, "(1.23).toPrecision(10.5)"); - assertException(function () {new BigNumber(1.23).toPrecision('1.1e1')}, "(1.23).toPrecision('1.1e1')"); - assertException(function () {new BigNumber(1.23).toPrecision(true)}, "(1.23).toPrecision(true)"); - assertException(function () {new BigNumber(1.23).toPrecision(false)}, "(1.23).toPrecision(false)"); - assertException(function () {new BigNumber(1.23).toPrecision(function (){})}, "(1.23).toPrecision(function (){})"); - - assertException(function () {new BigNumber('12.345e1').toPrecision('-1')}, ".toPrecision('-1')"); - assertException(function () {new BigNumber('12.345e1').toPrecision(-23)}, ".toPrecision(-23)"); - assertException(function () {new BigNumber('12.345e1').toPrecision(1e9 + 1)}, ".toPrecision(1e9 + 1)"); - assertException(function () {new BigNumber('12.345e1').toPrecision(1e9 + 0.1)}, ".toPrecision(1e9 + 0.1)"); - assertException(function () {new BigNumber('12.345e1').toPrecision(0)}, ".toPrecision(0)"); - assertException(function () {new BigNumber('12.345e1').toPrecision('-0')}, ".toPrecision('-0')"); - assertException(function () {new BigNumber('12.345e1').toPrecision(0.9)}, ".toPrecision(0.9)"); - assertException(function () {new BigNumber('12.345e1').toPrecision('-1e-1')}, ".toPrecision('-1e-1')"); - assertException(function () {new BigNumber('12.345e1').toPrecision(Infinity)}, ".toPrecision(Infinity)"); - assertException(function () {new BigNumber('12.345e1').toPrecision('-Infinity')}, ".toPrecision('-Infinity')"); - - BigNumber.config({ERRORS : false}); - - T('123', '12.345e1', BigNumber(3)); - T('123.45', '12.345e1', null); - T('123.45', '12.345e1', undefined); - T('123.45', '12.345e1', NaN); - T('123.45', '12.345e1', 'NaN'); - T('123.45', '12.345e1', []); - T('123.45', '12.345e1', {}); - T('123.45', '12.345e1', ''); - T('123.45', '12.345e1', ' '); - T('123.45', '12.345e1', 'hello'); - T('123.45', '12.345e1', '\t'); - T('123.45', '12.345e1', ' '); - T('123.45', '12.345e1', new Date); - T('123.45', '12.345e1', new RegExp); - T('123.4500', '12.345e1', 7.5); - T('123.45000000', '12.345e1', '1.1e1'); - - T('1e+2', '12.345e1', 1); - T('123.45', '12.345e1', '-1'); - T('123.45', '12.345e1', -23); - T('123.45', '12.345e1', 1e9 + 1); - T('123.45', '12.345e1', 1e9 + 0.1); - T('123.45', '12.345e1', 0); - T('123.45', '12.345e1', '-0'); - T('123.45', '12.345e1', 0.9); - T('123.45', '12.345e1', '-1e-1'); - T('123.45', '12.345e1', Infinity); - T('123.45', '12.345e1', '-Infinity'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js deleted file mode 100644 index 57a61b9..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/toString.js +++ /dev/null @@ -1,1104 +0,0 @@ -var count = (function toString(BigNumber) { - var start = +new Date(), - log, - error, - passed = 0, - total = 0; - - if (typeof window === 'undefined') { - log = console.log; - error = console.error; - } else { - log = function (str) { document.body.innerHTML += str.replace('\n', '
        ') }; - error = function (str) { document.body.innerHTML += '
        ' + - str.replace('\n', '
        ') + '
        ' }; - } - - if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber'); - - function assert(expected, actual) { - total++; - if (expected !== actual) { - error('\n Test number: ' + total + ' failed'); - error(' Expected: ' + expected); - error(' Actual: ' + actual); - //process.exit(); - } - else { - passed++; - //log('\n Expected and actual: ' + actual); - } - } - - function T(expected, value) { - assert(expected, new BigNumber(value).toString()) - } - - log('\n Testing toString...'); - - BigNumber.config({ - DECIMAL_PLACES : 20, - ROUNDING_MODE : 4, - ERRORS : true, - RANGE : 1E9, - EXPONENTIAL_AT : 1E9 - }); - - // ---------------------------------------------------------------------- v8 - - T('NaN', NaN); - T('Infinity', 1/0); - T('-Infinity', -1/0); - T('0', 0); - T('9', 9); - T('90', 90); - T('90.12', 90.12); - T('0.1', 0.1); - T('0.01', 0.01); - T('0.0123', 0.0123); - T('111111111111111111111', '111111111111111111111'); - T('1111111111111111111111', '1111111111111111111111'); - T('11111111111111111111111', '11111111111111111111111'); - T('0.00001', 0.00001); - T('0.000001', 0.000001); - - BigNumber.config({EXPONENTIAL_AT : 0}); - - T('1e-7', 0.0000001); - T('1.2e-7', 0.00000012); - T('1.23e-7', 0.000000123); - T('1e-8', 0.00000001); - T('1.2e-8', 0.000000012); - T('1.23e-8', 0.0000000123); - T('-1e-7', -0.0000001); - T('-1.2e-7', -0.00000012); - T('-1.23e-7', -0.000000123); - T('-1e-8', -0.00000001); - T('-1.2e-8', -0.000000012); - T('-1.23e-8', -0.0000000123); - - BigNumber.config({EXPONENTIAL_AT : 60}); - - T('0', -0); - T('-9', -9); - T('-90', -90); - T('-90.12', -90.12); - T('-0.1', -0.1); - T('-0.01', -0.01); - T('-0.0123', -0.0123); - T('-111111111111111111111', '-111111111111111111111'); - T('-1111111111111111111111', '-1111111111111111111111'); - T('-11111111111111111111111', '-11111111111111111111111'); - T('-0.00001', -0.00001); - T('-0.000001', -0.000001); - - // ------------------------------------------------------------------ v8 end - - // 1000 toString to exponentials - BigNumber.config({EXPONENTIAL_AT : 0}); - - T('5.73447902457635174479825134e+14', '573447902457635.174479825134'); - T('1.07688e+1', '10.7688'); - T('3.171194102379077141557759899307946350455841e+27', '3171194102379077141557759899.307946350455841'); - T('4.924353466898191177698653319742594890634579e+37', '49243534668981911776986533197425948906.34579'); - T('6.85558243926569397328633907445409866949445343654692955e+18', '6855582439265693973.28633907445409866949445343654692955'); - T('1e+0', '1'); - T('2.1320000803e+7', '21320000.803'); - T('5.0878741e+4', '50878.741'); - T('5.1932898288391e+8', '519328982.88391'); - T('5.690616778176956027307884725933410349604387915634524e+49', '56906167781769560273078847259334103496043879156345.24'); - T('3.25099780528575457273246693147645e+15', '3250997805285754.572732466931476450'); - T('3e+0', '3'); - T('2.5811494197573291905990947355226e+13', '25811494197573.291905990947355226'); - T('5.60372259169833930471746454125e+13', '56037225916983.3930471746454125'); - T('1.2615810663732236602461593613783e+7', '12615810.663732236602461593613783'); - T('1.4654366449266911507705477499035407722184965108377032e+11', '146543664492.66911507705477499035407722184965108377032'); - T('6.4986735507448912857131832908423940757e+38', '649867355074489128571318329084239407570.0'); - T('3.6146989180120676857245474944e+3', '3614.6989180120676857245474944'); - T('9.928654762302286149994896625074e+4', '99286.54762302286149994896625074'); - T('3.46424170787806074650506079e+3', '3464.24170787806074650506079'); - T('1.25934313355319666474752550204680303068865719647e+33', '1259343133553196664747525502046803.03068865719647'); - T('1.23014105337660651106978059198916100450966081493207e+27', '1230141053376606511069780591.98916100450966081493207'); - T('1.386164712267169624993434287237e+23', '138616471226716962499343.4287237'); - T('2.66076369930322488334961932e+3', '2660.76369930322488334961932'); - T('9.37582568e+4', '93758.2568'); - T('1.39853642894726883996875746770529e+28', '13985364289472688399687574677.0529'); - T('3.19099e+5', '319099.0'); - T('3.04557106798789396303998723e+19', '30455710679878939630.3998723'); - T('1.3024612569115368830867934222004329653604418e+9', '1302461256.9115368830867934222004329653604418'); - T('2.358787483447172786e+5', '235878.7483447172786'); - T('5.10614446965318674547416709785208086304398889160563e+28', '51061444696531867454741670978.5208086304398889160563'); - T('1.46685947134456101512731611558e+23', '146685947134456101512731.6115580'); - T('3.69960105771344554151928256518906564810300119e+25', '36996010577134455415192825.6518906564810300119'); - T('2.68683153074628e+10', '26868315307.4628'); - T('2.35656504568492312232737219553793859212e+15', '2356565045684923.12232737219553793859212'); - T('7.753292442361215e+14', '775329244236121.5'); - T('1.56e+0', '1.56'); - T('1.272818730367215461852227991200704e+21', '1272818730367215461852.227991200704'); - T('1.13900700292988027871648046839423153789e+7', '11390070.0292988027871648046839423153789'); - T('3.3431e+0', '3.3431'); - T('1.4546654966819402705e+14', '145466549668194.02705'); - T('3.05345735395805567424714891401667575466462830113819e+48', '3053457353958055674247148914016675754664628301138.19'); - T('5.1218945854639324441304933666460587e+2', '512.18945854639324441304933666460587'); - T('9.95299900896e+5', '995299.9008960'); - T('1.21564537151562431991786620635e+0', '1.21564537151562431991786620635'); - T('4.016e+1', '40.16'); - T('1.86570326e+7', '18657032.6'); - T('1.3381001727e+5', '133810.01727'); - T('2.639841700687441886800225725227e+12', '2639841700687.441886800225725227'); - T('2.45e+0', '2.45'); - T('2.8945e+2', '289.45'); - T('1.23e+0', '1.23'); - T('1.559806666149836070330006415033e+24', '1559806666149836070330006.415033'); - T('3.14984566145310751826289711761375061645611777700983e+3', '3149.84566145310751826289711761375061645611777700983'); - T('3.0940691333892283249774116223987e+5', '309406.91333892283249774116223987'); - T('6.572766274013360381079275191108732606370177179594282e+5', '657276.6274013360381079275191108732606370177179594282'); - T('1.470126973337024e+6', '1470126.973337024'); - T('5.6499e+2', '564.99'); - T('2.8416297367859233303497847667971781197616950846e+28', '28416297367859233303497847667.971781197616950846'); - T('2.1364951568189836563102481625533538320051163977e+41', '213649515681898365631024816255335383200511.63977'); - T('8.76108618687537137080904679797e+19', '87610861868753713708.0904679797'); - T('6.27683573474251182408654509953633505286e+6', '6276835.73474251182408654509953633505286'); - T('8.91411e+0', '8.91411'); - T('9.034542832410912578330021146413119399e+28', '90345428324109125783300211464.13119399'); - T('7.026094393430852002585511641212897686956090955e+39', '7026094393430852002585511641212897686956.090955'); - T('1.8812221093491505758565988678062e+11', '188122210934.91505758565988678062'); - T('9.435538492497050138580201734902181057468044875e+43', '94355384924970501385802017349021810574680448.75'); - T('5.36793419620790391866461e+20', '536793419620790391866.461'); - T('2.315089265590404012562599592854156357726817712e+26', '231508926559040401256259959.2854156357726817712'); - T('7.499170741828885273030006066196546588710962e+17', '749917074182888527.3030006066196546588710962'); - T('3.3962128305986e+5', '339621.28305986'); - T('8.17980456510031304e+9', '8179804565.10031304'); - T('4.394575876858124185382e+13', '43945758768581.24185382'); - T('7.881617323629751701107428e+9', '7881617323.629751701107428'); - T('4.89e+0', '4.89'); - T('9.85209894663520857685703881781194082356123765e+39', '9852098946635208576857038817811940823561.23765'); - T('6.849329685e+5', '684932.9685'); - T('2.8262252277815736355279617243060700437627773361e+7', '28262252.277815736355279617243060700437627773361'); - T('1.503736721902e+9', '1503736721.902'); - T('2.65213505469049775997232325076980590625670234690917845e+41', '265213505469049775997232325076980590625670.234690917845'); - T('4.23752645959719196604760963802412828187442060555521e+2', '423.752645959719196604760963802412828187442060555521'); - T('9.023159535576504097005203913521871601640521009e+36', '9023159535576504097005203913521871601.640521009'); - T('4.69339457186380276410136272120035011198438772754725e+14', '469339457186380.276410136272120035011198438772754725'); - T('1.2819429130391792511503973184804508867728894e+6', '1281942.9130391792511503973184804508867728894'); - T('1.9778e+3', '1977.8'); - T('2.456680359828937628024631306792185367572610021e+43', '24566803598289376280246313067921853675726100.21'); - T('5.25389225018085571689046925802871155628e+1', '52.5389225018085571689046925802871155628'); - T('1.733700532107e+8', '173370053.2107'); - T('1.9561099921e+5', '195610.99921'); - T('3.3409e+2', '334.09'); - T('6.09858715556186e+0', '6.09858715556186'); - T('3.20634106832106387482375790792609337383007782520694e+24', '3206341068321063874823757.90792609337383007782520694'); - T('1.46347126003930100207988814e+20', '146347126003930100207.98881400'); - T('2.717780449744210117995586561524987067807146882e+43', '27177804497442101179955865615249870678071468.82'); - T('2.86757572635270377540170639151e+22', '28675757263527037754017.0639151'); - T('3.3652257e+4', '33652.2570'); - T('1.161511687e+2', '116.1511687'); - T('3.38745832e+4', '33874.5832'); - T('1.2392653444609372603987061e+0', '1.2392653444609372603987061'); - T('3.2863728114574403555642096129516601553115371e+19', '32863728114574403555.642096129516601553115371'); - T('1.08862827358094757110520739146065028362703e+30', '1088628273580947571105207391460.65028362703'); - T('1.3488325541508602487577920722101277063863557818e+14', '134883255415086.02487577920722101277063863557818'); - T('1.96013732736436392e+13', '19601373273643.6392'); - T('4.798185890466e+2', '479.8185890466'); - T('1.696622337138949329874242519485119916519994150606e+39', '1696622337138949329874242519485119916519.994150606'); - T('5.50000572984970761183142593570950897913860587074643e+13', '55000057298497.0761183142593570950897913860587074643'); - T('4.9e+1', '49'); - T('2.353405108244768666141e+9', '2353405108.2447686661410'); - T('1.237978927714857736527530290155529e+0', '1.237978927714857736527530290155529'); - T('5.54113012e+1', '55.411301200'); - T('1.639709023131e+11', '163970902313.1'); - T('6.771810210029143571341e+20', '677181021002914357134.1'); - T('3.3659315728946599002939955548637694037e+13', '33659315728946.599002939955548637694037'); - T('5.448485697437811e+14', '544848569743781.1'); - T('2.93450799e+0', '2.93450799'); - T('4e+0', '4'); - T('5.751e+0', '5.751'); - T('7.61737213065110411e+15', '7617372130651104.110'); - T('4.958075942313945962737499249994583773691625306e+36', '4958075942313945962737499249994583773.691625306'); - T('1.358378342e+8', '135837834.20'); - T('2.048052995889503e+13', '20480529958895.03'); - T('6.79076388323848653822758720940258493627501e+10', '67907638832.38486538227587209402584936275010'); - T('8.67210047206219429882716380856729877038463e+37', '86721004720621942988271638085672987703.8463'); - T('3.5856103826876870700739098996695255188137082852345623e+4', '35856.103826876870700739098996695255188137082852345623'); - T('1.90496213987796617338452467459794976917964545462658e+15', '1904962139877966.17338452467459794976917964545462658'); - T('9.63174575036950144769050367165741e+0', '9.63174575036950144769050367165741'); - T('2.0768e+0', '2.0768'); - T('1.456779888489820409831915e+18', '1456779888489820409.831915'); - T('3.17858204994255447e+11', '317858204994.255447'); - T('1e+0', '1'); - T('1.9096483361096593551745691e+3', '1909.64833610965935517456910'); - T('1.06782878549e+8', '106782878.5490'); - T('1.939e+2', '193.9'); - T('1.35467074874780607458660332165839e+30', '1354670748747806074586603321658.39'); - T('1.3477262091e+0', '1.3477262091'); - T('1.310111103174762e+6', '1310111.103174762'); - T('1.3244499e+5', '132444.99'); - T('6.328608643684925104652431120058467829483124155656848e+5', '632860.86436849251046524311200584678294831241556568480'); - T('1.323139209814658927313821930784171e+3', '1323.1392098146589273138219307841710'); - T('4.47797097399588837e+9', '4477970973.995888370'); - T('1.443414e+4', '14434.14'); - T('1.913095284076879e+12', '1913095284076.879'); - T('2.51586474e+0', '2.51586474'); - T('2.9838935573505166030799e+9', '2983893557.3505166030799'); - T('1.573964479962393720481520537831844728449363575e+7', '15739644.79962393720481520537831844728449363575'); - T('2.496378e+2', '249.6378'); - T('1.484378e+0', '1.484378'); - T('5.21963089810195859130639819168579622e+24', '5219630898101958591306398.19168579622'); - T('1.8688440918945220036354844302195749309220888e+26', '186884409189452200363548443.02195749309220888'); - T('1.41126696817890014e+9', '1411266968.17890014'); - T('1.293182137273764465174297382284293177743591308e+15', '1293182137273764.465174297382284293177743591308'); - T('1.27466702071873897014853508266774e+7', '12746670.2071873897014853508266774'); - T('2.556582211914618427489836174964272160475e+25', '25565822119146184274898361.74964272160475'); - T('7.4140139575523848563560806694561950037847e+26', '741401395755238485635608066.94561950037847'); - T('1.9191049758936644006660416648962209488e+24', '1919104975893664400666041.66489622094880'); - T('2.31987505124515790876372807554587171781e+6', '2319875.05124515790876372807554587171781'); - T('1.15157815434449204928983e+10', '11515781543.4449204928983'); - T('3e+0', '3'); - T('2.917143980403974745273363447e+0', '2.917143980403974745273363447'); - T('4.191515340588519451276037876335997588593916166223e+8', '419151534.0588519451276037876335997588593916166223'); - T('1.5893308320910765122063972428358196502e+36', '1589330832091076512206397242835819650.2'); - T('1.564871863334923e+9', '1564871863.334923'); - T('3.4443994941943243107512237423766787557718741016702e+7', '34443994.941943243107512237423766787557718741016702'); - T('2.082688546929e+2', '208.2688546929'); - T('2.9839569879261869701414e+14', '298395698792618.69701414'); - T('1.18e+0', '1.18'); - T('4.649099416086369391962725101452597532757447601493062e+15', '4649099416086369.391962725101452597532757447601493062'); - T('5.1e+1', '51.0'); - T('1.350769554904381289856048945926109233407469025099095e+35', '135076955490438128985604894592610923.3407469025099095'); - T('1.28e+0', '1.28'); - T('1.686998748044557678256738078e+11', '168699874804.4557678256738078'); - T('2.725058665831622653286e+15', '2725058665831622.653286'); - T('3.4955955888709903930650733178004053283303e+27', '3495595588870990393065073317.8004053283303'); - T('2.71792743712e+3', '2717.92743712'); - T('3.765499741127994356229674741445362678695091917e+28', '37654997411279943562296747414.453626786950919170'); - T('8.48094736645795433828545542478643430012741252784e+2', '848.0947366457954338285455424786434300127412527840'); - T('3.252259575976e+8', '325225957.5976'); - T('3.6168564360780068610016611e+13', '36168564360780.0686100166110'); - T('1.3606305591180828419826623450927437361732403593e+14', '136063055911808.28419826623450927437361732403593'); - T('3.770936274989628272472264790077542e+21', '3770936274989628272472.264790077542'); - T('7.2511003873049904808574871389e+2', '725.11003873049904808574871389'); - T('6.62710314240271241900085261e+21', '6627103142402712419000.85261'); - T('7.5663149e+5', '756631.49'); - T('1.2062059e+1', '12.0620590'); - T('1.316934076085443594506478729911134464048168888698e+42', '1316934076085443594506478729911134464048168.888698'); - T('1.202953883353175026243055281903766950596e+16', '12029538833531750.26243055281903766950596'); - T('5.15639495337093127431811770279915335410152998e+4', '51563.9495337093127431811770279915335410152998'); - T('1.8e+1', '18'); - T('2.9510339604105305444519680156145845428324011e+35', '295103396041053054445196801561458454.28324011'); - T('9.991e+0', '9.991'); - T('2.32664625710064626302675792506518986748623800519362825e+45', '2326646257100646263026757925065189867486238005.19362825'); - T('1.15155883503801901e+9', '1151558835.03801901'); - T('2.3143e+1', '23.143'); - T('2.260422939172634138149555333552819e+1', '22.60422939172634138149555333552819'); - T('1.77998238e+7', '17799823.8'); - T('3.70098549253330116100410970723706977e+9', '3700985492.53330116100410970723706977'); - T('9.05841068683497571038524585222884373e+29', '905841068683497571038524585222.884373'); - T('2.104525700707071438146923949322482428742115356534e+28', '21045257007070714381469239493.22482428742115356534'); - T('7.024685053227353728838050757013069476546171879163e+24', '7024685053227353728838050.757013069476546171879163'); - T('4.46125872195266e+10', '44612587219.5266'); - T('1.5784e+0', '1.5784'); - T('7.2863751084180259357725026103712116366349e+23', '728637510841802593577250.26103712116366349'); - T('3.8320639752835419309258317842615e+19', '38320639752835419309.258317842615'); - T('5.022803549739540204835955185781e+8', '502280354.9739540204835955185781'); - T('1.52375875990883568458394783820252654691082e+8', '152375875.990883568458394783820252654691082'); - T('6.3061015767881141717464891e+15', '6306101576788114.1717464891'); - T('9.71891517062070497407760297561206525471485e+27', '9718915170620704974077602975.61206525471485'); - T('1.734234585265201766712574126945236309508118634425837e+0', '1.734234585265201766712574126945236309508118634425837'); - T('8.5765119797384477995e+4', '85765.119797384477995'); - T('5.13287988277059925228486890851140970386425187274e+8', '513287988.2770599252284868908511409703864251872740'); - T('1.658649165479737672749860660622867246548e+15', '1658649165479737.672749860660622867246548'); - T('3.4292698700438468428249935453830307216008845443e+3', '3429.2698700438468428249935453830307216008845443'); - T('6.4741508681889057488168545664375944171354681e+23', '647415086818890574881685.45664375944171354681'); - T('1.6942797476135028024654429183339522530812281e+31', '16942797476135028024654429183339.522530812281'); - T('4.2751009447385333857937408636958425779826e+4', '42751.009447385333857937408636958425779826'); - T('8.171245315549501039363411728044907e+8', '817124531.5549501039363411728044907'); - T('2.63956757213151457264967446772106e+14', '263956757213151.457264967446772106'); - T('5.613736432461e+9', '5613736432.461'); - T('4.78814e+3', '4788.14'); - T('4e+0', '4'); - T('4.37173137694e+3', '4371.73137694'); - T('2.2510403748584e+3', '2251.0403748584'); - T('5.06031783713235771e+6', '5060317.83713235771'); - T('1.33505152823751921282350949461e+18', '1335051528237519212.82350949461'); - T('7.600277071910098554342026310498032154036e+17', '760027707191009855.4342026310498032154036'); - T('1.876325989370064932735123485260012703584e+17', '187632598937006493.27351234852600127035840'); - T('3.87899618892199653560586133205982498365799449e+27', '3878996188921996535605861332.05982498365799449'); - T('6.2615173898555524447350478811537912100608066376e+42', '6261517389855552444735047881153791210060806.6376'); - T('9.413311009646174266728687126e+7', '94133110.09646174266728687126'); - T('1.2598016462494915983919933836115811e+13', '12598016462494.915983919933836115811'); - T('7.9083335654128601227093e+3', '7908.3335654128601227093'); - T('1.1816683721169472338636e+3', '1181.6683721169472338636'); - T('2.75369819574089239438702064921012202e+10', '27536981957.4089239438702064921012202'); - T('8.23458259735325932383e+10', '82345825973.5325932383'); - T('9.79385e+1', '97.9385'); - T('1e+0', '1'); - T('1.054786033040309868462e+15', '1054786033040309.868462'); - T('1.39529250356370349e+10', '13952925035.6370349'); - T('3.287519212843337e+8', '328751921.2843337'); - T('2.931680954526563928e+2', '293.1680954526563928'); - T('8.34563827640030036035405e+22', '83456382764003003603540.5'); - T('3.205638487e+0', '3.205638487'); - T('8.347784116251624503148e+14', '834778411625162.4503148'); - T('8.0108273810982547100003003762e+5', '801082.73810982547100003003762'); - T('5.41874345499627242543460793e+17', '541874345499627242.543460793'); - T('1.015683737878128e+2', '101.56837378781280'); - T('2.978259746276619202256565093853146061976952e+15', '2978259746276619.202256565093853146061976952'); - T('9.698293249507073809003898936542180557347147e+18', '9698293249507073809.003898936542180557347147'); - T('5.73284757676406662905522205317450204e+31', '57328475767640666290552220531745.0204'); - T('1.09314948671137385444979381052e+26', '109314948671137385444979381.052'); - T('6.657213e+1', '66.57213'); - T('5.442667e+0', '5.442667'); - T('1.497094368112928522082161622117e+17', '149709436811292852.2082161622117'); - T('8.86015267575800230944962406406137570452e+28', '88601526757580023094496240640.6137570452'); - T('8.7435115902725784785213467357972025071925716822259e+38', '874351159027257847852134673579720250719.25716822259'); - T('3.758112653964719298306554363807932e+15', '3758112653964719.298306554363807932'); - T('3.083180493316158e+7', '30831804.93316158'); - T('6.6753482e+1', '66.753482'); - T('1.511686617338690801597376192985164124335711475e+36', '1511686617338690801597376192985164124.335711475'); - T('2.561637088433158358807278932196e+1', '25.61637088433158358807278932196'); - T('9.7542804053855981164860021065e+18', '9754280405385598116.4860021065'); - T('3.862183052662673704009308528932528900914181684535e+42', '3862183052662673704009308528932528900914181.684535'); - T('1.735e+0', '1.735'); - T('1.68459549759090470803341044524240531008376812e+5', '168459.549759090470803341044524240531008376812'); - T('5.7719373345538594618757e+18', '5771937334553859461.8757'); - T('3.6601007679275500170303e+18', '3660100767927550017.0303'); - T('8.33735150265611827e+5', '833735.150265611827'); - T('1.01871087828059263083e+9', '1018710878.28059263083'); - T('1.730763e+3', '1730.763'); - T('2.0215513523e+6', '2021551.3523'); - T('3.169677580608477341e+6', '3169677.580608477341'); - T('1.36121484062885200254669e+8', '136121484.062885200254669'); - T('1.864593865698e+11', '186459386569.8'); - T('3.862360154857656116978304538802550298055142749413e+37', '38623601548576561169783045388025502980.55142749413'); - T('6.344348248e+6', '6344348.248'); - T('8.67366546264e+2', '867.366546264'); - T('4.29318860328279804558512081958216849305249e+4', '42931.8860328279804558512081958216849305249'); - T('4.5767492969936218926613265e+5', '457674.92969936218926613265'); - T('9.965617933646541e+10', '99656179336.46541'); - T('7.664031929445646163953676864248019955392457435e+19', '76640319294456461639.53676864248019955392457435'); - T('1.7557601024183018471184139748851879933153788645e+26', '175576010241830184711841397.48851879933153788645'); - T('3.59958e+1', '35.9958'); - T('3.128356271716333383085523918507809249225814121e+6', '3128356.271716333383085523918507809249225814121'); - T('1.9075527480204423875673047345572289921671553543e+7', '19075527.480204423875673047345572289921671553543'); - T('4.1705118500557863903425612212241828e+28', '41705118500557863903425612212.241828'); - T('1.18254857176614357421149713005254203068839516120630636e+10', '11825485717.6614357421149713005254203068839516120630636'); - T('7.02259913337121409861924646773988297e+3', '7022.599133371214098619246467739882970'); - T('1.146737732876241016454570289690559455455987995125423e+18', '1146737732876241016.454570289690559455455987995125423'); - T('1.355148008848587e+12', '1355148008848.587'); - T('1.015453056007471546100232031232797626130792432862e+30', '1015453056007471546100232031232.797626130792432862'); - T('2.8538363119129962635325743474766089129608347262536e+29', '285383631191299626353257434747.660891296083472625360'); - T('4.2227811926947467182312527e+0', '4.2227811926947467182312527'); - T('6.62781300059578283068526676555702438949382809379e+11', '662781300059.578283068526676555702438949382809379'); - T('7.132543524075010321e+11', '713254352407.5010321'); - T('2.6891265922739405441935129011630558514535121113e+0', '2.6891265922739405441935129011630558514535121113'); - T('2.6553300042224839703e+7', '26553300.042224839703'); - T('1.326288516626807519348228004e+12', '1326288516626.807519348228004'); - T('0e+0', '0'); - T('6.02519526915223e+9', '6025195269.15223'); - T('3.624787029215766960931977e+8', '362478702.9215766960931977'); - T('2.2216785095018655042906319049394e+10', '22216785095.018655042906319049394'); - T('1.42167287636895617482014385649865679412e+27', '1421672876368956174820143856.49865679412'); - T('1.41165522278933908893e+0', '1.41165522278933908893'); - T('9.6100608486394273371410715209128478362564609e+29', '961006084863942733714107152091.28478362564609'); - T('6.628723659367639746219006678948604246e+24', '6628723659367639746219006.678948604246'); - T('2.7977956855247594e+5', '279779.56855247594'); - T('2.031549e+5', '203154.9'); - T('1.255931797e+8', '125593179.7'); - T('5.6205236102596850984322041097e+16', '56205236102596850.9843220410970'); - T('2.03142821417788742960492e+19', '20314282141778874296.0492'); - T('1.91781433973790573018323517395847264353e+35', '191781433973790573018323517395847264.35300'); - T('6.8634738969456114664748639548209064365603770815e+10', '68634738969.456114664748639548209064365603770815'); - T('2.4116354386327449757134801702e+5', '241163.54386327449757134801702'); - T('3.36834833123607650204419305291838348810644243e+42', '3368348331236076502044193052918383488106442.43'); - T('1.2854387e+1', '12.854387'); - T('1.71911767411984485012054040057806822618e+28', '17191176741198448501205404005.7806822618'); - T('5.974376678071807862297048158076713536908142505051762e+0', '5.974376678071807862297048158076713536908142505051762'); - T('1.75040573368172e+0', '1.75040573368172'); - T('7.59296739794577295967023894e+19', '75929673979457729596.7023894'); - T('5.9387271258615e+0', '5.9387271258615'); - T('1.41e+1', '14.1'); - T('6.520718977022294517603438651524e+13', '65207189770222.94517603438651524'); - T('4.0504464748488527e+13', '40504464748488.527'); - T('4.9339025e+4', '49339.025'); - T('6.5436938338545276642922e+5', '654369.38338545276642922'); - T('6.614070881259392274974020452736433936484946441479e+14', '661407088125939.2274974020452736433936484946441479'); - T('3.6562357737624542715177216071738074863798786e+36', '3656235773762454271517721607173807486.3798786'); - T('4.483580186204558328366014e+16', '44835801862045583.28366014'); - T('8.786e+1', '87.86'); - T('3.2320103419855255742057273942480043987e+6', '3232010.3419855255742057273942480043987'); - T('4.46656766000098808044857967014414e+16', '44665676600009880.8044857967014414'); - T('1.02292056093528342365e+13', '10229205609352.8342365'); - T('8.57520635819763350659219863901837233e+21', '8575206358197633506592.19863901837233'); - T('1.245913688722124452316952395765916246e+21', '1245913688722124452316.9523957659162460'); - T('8.8964578294856908705314945178917896807516003057782324e+46', '88964578294856908705314945178917896807516003057.782324'); - T('8.7449512208056038986439889808e+7', '87449512.208056038986439889808'); - T('2.3e+2', '230.0'); - T('1.5579884689150031101693496143656840264980386818704e+23', '155798846891500311016934.961436568402649803868187040'); - T('8.5051864582679908692564183699252612773409509082078e+37', '85051864582679908692564183699252612773.409509082078'); - T('8.8798692074080075787375315447486123809923959833e+26', '887986920740800757873753154.47486123809923959833'); - T('6.77345401358539738139850599762127933983100324110805558e+4', '67734.5401358539738139850599762127933983100324110805558'); - T('2.347749726836225014840282995092832754e+20', '234774972683622501484.0282995092832754'); - T('7.429558958688e+0', '7.429558958688'); - T('1.7882214813873e+0', '1.7882214813873'); - T('4.193192196e+6', '4193192.196'); - T('4.749767618513507376588211479214898450387625965e+9', '4749767618.513507376588211479214898450387625965'); - T('1.977391043687779e+5', '197739.1043687779'); - T('2.6484576511218782036901501152986249531234497168718e+40', '26484576511218782036901501152986249531234.497168718'); - T('1.920439145880135238583976259936021e+3', '1920.439145880135238583976259936021'); - T('1.51897109592862249460404e+8', '151897109.592862249460404'); - T('5.0235407304542145031825034116450744076803325e+15', '5023540730454214.5031825034116450744076803325'); - T('7.6404110248649153016903650163544816581006668605e+23', '764041102486491530169036.50163544816581006668605'); - T('3.7874929502138e+0', '3.7874929502138'); - T('1.41787251451628994917275472e+24', '1417872514516289949172754.72'); - T('4.2104854597998748621925225253125873386e+31', '42104854597998748621925225253125.87338600'); - T('1.26567160108986726661104934542275915987889e+7', '12656716.0108986726661104934542275915987889'); - T('2.8968894398808777e+4', '28968.894398808777'); - T('2.8297292e+2', '282.97292'); - T('2.603742338988784570262735209585265906786049e+12', '2603742338988.784570262735209585265906786049'); - T('4.62131e+2', '462.131'); - T('2.22735863520665290933246331848e+24', '2227358635206652909332463.31848'); - T('4.53886361459e+10', '45388636145.9'); - T('6.6860727859954777667223002708162369e+32', '668607278599547776672230027081623.69'); - T('2.8062722e+0', '2.8062722'); - T('6.0842062525063451016806e+10', '60842062525.063451016806'); - T('6.8357371699714755863090081855483865237790749503e+22', '68357371699714755863090.081855483865237790749503'); - T('3.35802101243809011e+10', '33580210124.3809011'); - T('8.43490001143656777280840623008615269579365614931775e+0', '8.43490001143656777280840623008615269579365614931775'); - T('1.9235808728891520564223264242417980260344158021186e+8', '192358087.28891520564223264242417980260344158021186'); - T('1.41994286356037056979411e+12', '1419942863560.37056979411'); - T('1.78557003827723798504978687588959254956675353035516771e+37', '17855700382772379850497868758895925495.6675353035516771'); - T('1.2918168334241255620676751949906289e+11', '129181683342.41255620676751949906289'); - T('3.9318765130442377729598885e+1', '39.318765130442377729598885'); - T('3.88694369953891826304770521327308322619393047272853992e+29', '388694369953891826304770521327.308322619393047272853992'); - T('1.0841221160385599396e+8', '108412211.60385599396'); - T('2.927924105979441123308231e+10', '29279241059.79441123308231'); - T('9.793009327446332791991220439204599563053527e+23', '979300932744633279199122.0439204599563053527'); - T('9.423287306701960190921439346729208723159342075073e+5', '942328.7306701960190921439346729208723159342075073'); - T('9.32095532579704529e+14', '932095532579704.529'); - T('4e+0', '4'); - T('6.53989976127167541385228442576702092890124e+35', '653989976127167541385228442576702092.89012400'); - T('1.19250623478e+7', '11925062.3478'); - T('1.865458672e+0', '1.865458672'); - T('3.316183057661896194198642778725380227773158022030233e+12', '3316183057661.896194198642778725380227773158022030233'); - T('8.5601184555567625475596670332086089588e+15', '8560118455556762.5475596670332086089588'); - T('1.80118254923064703459780878790624318318152203e+37', '18011825492306470345978087879062431831.8152203'); - T('8.31702685620470833413491412813875698623351991849704e+45', '8317026856204708334134914128138756986233519918.49704'); - T('4.158534334648275764e+11', '415853433464.8275764'); - T('2.19723302477e+0', '2.19723302477'); - T('2.029177448999173372119989892440779088e+22', '20291774489991733721199.89892440779088'); - T('4.645682747987148208758271e+14', '464568274798714.8208758271'); - T('2.6112628e+6', '2611262.8'); - T('1.27260908637e+0', '1.27260908637'); - T('2.386528806365172395257137e+5', '238652.88063651723952571370'); - T('2.64450278721870797393766005966148238494e+8', '264450278.721870797393766005966148238494'); - T('1.988688294222795007e+6', '1988688.294222795007'); - T('7.078660611250891118657496594735238821341408353e+35', '707866061125089111865749659473523882.1341408353'); - T('0e+0', '0'); - T('1.096715852238427070115466117322983113926e+36', '1096715852238427070115466117322983113.926'); - T('8.3033913e+4', '83033.913'); - T('4.015204714209691387124917361818013823115690954e+5', '401520.4714209691387124917361818013823115690954'); - T('1.18391666839775944e+9', '1183916668.39775944'); - T('2.2995421984176008066735e+7', '22995421.984176008066735'); - T('9.03e+0', '9.03'); - T('5.332359881257917566876361208399e+0', '5.3323598812579175668763612083990'); - T('7.102133e+3', '7102.133'); - T('1.1483640369724895747740049e+19', '11483640369724895747.740049'); - T('2.86532834287791967206284176556306849118939923884e+42', '2865328342877919672062841765563068491189399.23884'); - T('9.076417888165894607318040129e+17', '907641788816589460.7318040129'); - T('7.3646447223309353153091289569473837758243e+14', '736464472233093.53153091289569473837758243'); - T('2.181883e+4', '21818.83'); - T('3.386300476012467818859167684043147659263155e+9', '3386300476.012467818859167684043147659263155'); - T('2.51484028084025506424805997802620148071482e+13', '25148402808402.55064248059978026201480714820'); - T('9.4435575887407391033782269887533990447300682186075521e+24', '9443557588740739103378226.9887533990447300682186075521'); - T('1.6886715415033e+8', '168867154.15033'); - T('2.5034373528604861134460194872790430617196344388725e+11', '250343735286.04861134460194872790430617196344388725'); - T('2.196175657558897384981748559894e+29', '219617565755889738498174855989.4'); - T('9.76199813364186117286131817353e+8', '976199813.364186117286131817353'); - T('2.19717393409454748689882068559316753929782544245361e+9', '2197173934.09454748689882068559316753929782544245361'); - T('3.458346873044019889e+14', '345834687304401.98890'); - T('1.7224191355912435440309996131683233957399227e+29', '172241913559124354403099961316.83233957399227'); - T('2.9118304597001059668e+13', '29118304597001.0596680'); - T('8.089765204288655830674576596713309516483099e+31', '80897652042886558306745765967133.09516483099'); - T('4.238609505643148138368920789804547924618071e+16', '42386095056431481.38368920789804547924618071'); - T('6.632956460328161742904032219604e+9', '6632956460.328161742904032219604'); - T('5.149280532588990421575423306958842719315081438104696e+2', '514.9280532588990421575423306958842719315081438104696'); - T('2.07166412218470429605806831507e+24', '2071664122184704296058068.31507'); - T('3.074159e+0', '3.074159'); - T('8.881411022677226686076012925366e+8', '888141102.2677226686076012925366'); - T('1.4327673900218857772756403845335511690820534667844161e+25', '14327673900218857772756403.845335511690820534667844161'); - T('8.11258981514701594464134633523542919936061665628845e+9', '8112589815.14701594464134633523542919936061665628845'); - T('5.96685124808828989098666066158574653883332e+34', '59668512480882898909866606615857465.3883332'); - T('5.57183574e+6', '5571835.74'); - T('6.8501903843096e+0', '6.8501903843096'); - T('1.5942819569037073307050366953094e+20', '159428195690370733070.50366953094'); - T('2.27330909197482e+2', '227.330909197482'); - T('2.982752994e+1', '29.82752994'); - T('2.6621448010147457294e+3', '2662.14480101474572940'); - T('1.086669601366824519299e+5', '108666.9601366824519299'); - T('1.18736e+1', '11.8736'); - T('2.529e+2', '252.9'); - T('9.53927547001352070346930665292474419009985922637627e+0', '9.53927547001352070346930665292474419009985922637627'); - T('1.41547817128845761243461584e+17', '141547817128845761.243461584'); - T('4.913427130278990825751597676478e+5', '491342.7130278990825751597676478'); - T('1.92247886737227536336e+7', '19224788.67372275363360'); - T('3.1497590158477647299507840130228337905235603e+22', '31497590158477647299507.840130228337905235603'); - T('1.68055184413854558094765106936369527289778050531295766e+40', '16805518441385455809476510693636952728977.8050531295766'); - T('1.8255321351888780569641286767450275327e+7', '18255321.351888780569641286767450275327'); - T('1.56201751119240301681993262341142444952941e+6', '1562017.51119240301681993262341142444952941'); - T('5.122704714291e+9', '5122704714.291'); - T('3.82474822197843e+12', '3824748221978.43'); - T('1.525347830613268824053492683517588e+9', '1525347830.613268824053492683517588'); - T('6.145278e+4', '61452.78'); - T('4.99832566753824717449034e+0', '4.99832566753824717449034'); - T('1.308323895602314056642638704891037710277185276986927e+40', '13083238956023140566426387048910377102771.85276986927'); - T('5.18915522348e+4', '51891.5522348'); - T('1.4209994e+6', '1420999.4'); - T('1.503265451278288e+7', '15032654.51278288'); - T('3.152117986796142139453802611094289123987929469e+9', '3152117986.796142139453802611094289123987929469'); - T('2.978007679998703216707397018589782695e+13', '29780076799987.03216707397018589782695'); - T('5.8512931044e+7', '58512931.044'); - T('3.295254020832544012761679098484189727227833e+41', '329525402083254401276167909848418972722783.3'); - T('8.72742250969672731429969186796754051463901e+14', '872742250969672.731429969186796754051463901'); - T('2.9072795594202554837396927026502083307998e+35', '290727955942025548373969270265020833.07998'); - T('2.34518496092800925568908809696371538989759e+27', '2345184960928009255689088096.96371538989759'); - T('4.02951776768e+4', '40295.17767680'); - T('1.3689991541714377699994556138826283759e+29', '136899915417143776999945561388.26283759'); - T('5.375319663285375407847169258e+20', '537531966328537540784.71692580'); - T('2.4838816191142589e+0', '2.4838816191142589'); - T('1e+1', '10'); - T('1.32118e+2', '132.118'); - T('3.167368488391197862244748797056311701e+1', '31.6736848839119786224474879705631170100'); - T('1.2923240005675836581430542022e+7', '12923240.005675836581430542022'); - T('2.45198799455822803503200760843340001104401687715e+1', '24.5198799455822803503200760843340001104401687715'); - T('5.017419011122159795604649952660143561601682847055e+9', '5017419011.122159795604649952660143561601682847055'); - T('1.528293223258e+9', '1528293223.258'); - T('3.36806306935615523082781617061106400210297708457466e+40', '33680630693561552308278161706110640021029.7708457466'); - T('2.24276e+4', '22427.6'); - T('1.452908e+5', '145290.8'); - T('1.730864210471288302007789478210233615399858e+21', '1730864210471288302007.789478210233615399858'); - T('1.98572237681530700377986658329680798e+32', '198572237681530700377986658329680.798'); - T('5.3625630032708e+2', '536.25630032708'); - T('1.279811707773498944767714003821019551877654490239992e+40', '12798117077734989447677140038210195518776.54490239992'); - T('1.13478473099428793759e+1', '11.3478473099428793759'); - T('3.8084703153428358911632007387325702215541573567757e+45', '3808470315342835891163200738732570221554157356.7757'); - T('1.63132182288401410656e+16', '16313218228840141.0656'); - T('1.2883403439965987126193143646e+8', '128834034.39965987126193143646'); - T('1.1337344058722593784502983693368481614e+2', '113.3734405872259378450298369336848161400'); - T('1.3810837466649418967673665311541682533151e+37', '13810837466649418967673665311541682533.151'); - T('3e+0', '3'); - T('1.77729190576542704583828487792283968438443988677e+27', '1777291905765427045838284877.92283968438443988677'); - T('1.75045497942020277400523024600228150483494020715374e+39', '1750454979420202774005230246002281504834.94020715374'); - T('9.4295017753469131679077273e+2', '942.95017753469131679077273'); - T('3.854570457401828825080672674176371617252885568525e+42', '3854570457401828825080672674176371617252885.568525'); - T('6.976781259116059962789065637569e+19', '69767812591160599627.89065637569'); - T('1.983953867384017752e+8', '198395386.7384017752'); - T('8.18621623940664383e+3', '8186.21623940664383'); - T('4.678566e+5', '467856.6'); - T('4.37454863655836062626765123683424e+5', '437454.863655836062626765123683424'); - T('7.6e+1', '76'); - T('1.356170189773197190024227714709209e+20', '135617018977319719002.42277147092090'); - T('2.524007970392697273821209419290910149e+32', '252400797039269727382120941929091.0149'); - T('2.2996e+1', '22.996'); - T('9.19536554437673037098591509995026767872538589562761e+45', '9195365544376730370985915099950267678725385895.62761'); - T('7.52981388027044914e+7', '75298138.8027044914'); - T('6.0233392042283e+4', '60233.3920422830'); - T('1.197371690422415645601906387900091876e+8', '119737169.0422415645601906387900091876'); - T('2.5e+0', '2.50'); - T('3.0513e+3', '3051.3'); - T('3.4378929513006354001139704e+1', '34.378929513006354001139704'); - T('2.7688798583863475634e+16', '27688798583863475.634'); - T('3.70733017769177e+3', '3707.33017769177'); - T('1.183552401830090152504539986275312716505e+23', '118355240183009015250453.9986275312716505'); - T('5.5532923555574e+0', '5.5532923555574'); - T('1.007309381e+2', '100.7309381'); - T('4.26e+0', '4.26'); - T('3.49082770706667347770412719905221035269e+36', '3490827707066673477704127199052210352.69'); - T('1.09667668559108738350612984427121459528827e+35', '109667668559108738350612984427121459.528827'); - T('6.7117017423837651934e+2', '671.17017423837651934'); - T('3.5513336510667288609743743e+5', '355133.36510667288609743743'); - T('2.733911637796059758003823848720999245e+12', '2733911637796.059758003823848720999245'); - T('4.7727335155560138656406364912e+21', '4772733515556013865640.6364912'); - T('7.1707742358130425165e+15', '7170774235813042.5165'); - T('1.2373e+0', '1.2373'); - T('1.95864917284678233803922075321436e+16', '19586491728467823.3803922075321436'); - T('1.39511686402859313308703279767446898138923566399e+34', '13951168640285931330870327976744689.8138923566399'); - T('5.45166767236394220015660379974682e+18', '5451667672363942200.15660379974682'); - T('5.7e+1', '57'); - T('2.008185112618419540343890697023120161916064586e+15', '2008185112618419.5403438906970231201619160645860'); - T('1.83547377703310193838625323613810597146659646688e+38', '183547377703310193838625323613810597146.659646688'); - T('1.86963380149e+6', '1869633.80149'); - T('9.0643926657221127599225e+0', '9.0643926657221127599225'); - T('3.387626848249516099010371969816649097243645e+35', '338762684824951609901037196981664909.7243645'); - T('2.38574e+4', '23857.4'); - T('4.854485927348228918413753679671472155071e+35', '485448592734822891841375367967147215.5071'); - T('1.1145412703080371165560398973334199e+32', '111454127030803711655603989733341.99'); - T('1.272285349955021228893214839127637825683e+4', '12722.85349955021228893214839127637825683'); - T('9.4315857521037576638711244118020078159357613e+2', '943.15857521037576638711244118020078159357613'); - T('2.130358009562539933673297313517219743395888826178226e+42', '2130358009562539933673297313517219743395888.826178226'); - T('1.788350524694006198162174980034358528e+19', '17883505246940061981.621749800343585280'); - T('1.26860370623505030126846090707878e+22', '12686037062350503012684.6090707878'); - T('2e+0', '2'); - T('7.97066672594e+7', '79706667.2594'); - T('2.0152e+2', '201.52'); - T('5.00637717193322215204e+6', '5006377.17193322215204'); - T('3.01590120278994390749132552334544583e+0', '3.01590120278994390749132552334544583'); - T('3.717693087339892916526272044454e+24', '3717693087339892916526272.044454'); - T('2.54829661524758873955898224553317416437e+3', '2548.29661524758873955898224553317416437'); - T('7.9072523913538861636033504135822e+1', '79.072523913538861636033504135822'); - T('1.866503037113138887457365815904225e+28', '18665030371131388874573658159.04225'); - T('1.3950429e+5', '139504.29'); - T('1.0207356655e+5', '102073.56655'); - T('3.2360853090691879699503619670118780802618636754e+9', '3236085309.0691879699503619670118780802618636754'); - T('5.47452697575793862266267385061152164e+19', '54745269757579386226.6267385061152164'); - T('6.1014855783682768e+15', '6101485578368276.8'); - T('5.31612911388139343797172e+0', '5.31612911388139343797172'); - T('5.91082171916830390736766017658603922e+26', '591082171916830390736766017.658603922'); - T('2.8172659641631766440010830065e+19', '28172659641631766440.010830065'); - T('4.1202100041496082281283466e+5', '412021.00041496082281283466'); - T('1.976856495373097710107538467325977284465274416e+19', '19768564953730977101.07538467325977284465274416'); - T('1.171504106314324317761655700166834e+32', '117150410631432431776165570016683.4'); - T('1.027537448230010431061775478e+10', '10275374482.30010431061775478'); - T('2.341237435879754661702897098867289936e+3', '2341.237435879754661702897098867289936'); - T('1.0588321785973619575e+15', '1058832178597361.9575'); - T('4.2335454826279360873889814771443479909805203261e+39', '4233545482627936087388981477144347990980.5203261'); - T('4.9e+1', '49'); - T('1.4101138066556191e+0', '1.4101138066556191'); - T('1.3899701029842433287999040786946262e+11', '138997010298.42433287999040786946262'); - T('2.14e+1', '21.4'); - T('2.575344258e+6', '2575344.258'); - T('1.3691520780202966734596879557205614425e+23', '136915207802029667345968.79557205614425'); - T('1.079727307987010933702e+19', '10797273079870109337.02'); - T('7.0961299409455830259875773863405485e+3', '7096.1299409455830259875773863405485'); - T('6.071949209634075943049707175059387500694121405338866e+45', '6071949209634075943049707175059387500694121405.338866'); - T('9.688112361029101083207689619288615989e+17', '968811236102910108.3207689619288615989'); - T('2.80923460488873864236890941794609081552183193e+41', '280923460488873864236890941794609081552183.193'); - T('1.83294035069640418182259900657124e+15', '1832940350696404.181822599006571240'); - T('1.330407118626933239746930889885854606102e+7', '13304071.18626933239746930889885854606102'); - T('8.614745245083701401256805923197041044646493828616208e+22', '86147452450837014012568.05923197041044646493828616208'); - T('1.021162949761147474655069846e+15', '1021162949761147.474655069846'); - T('2.22124197e+6', '2221241.97'); - T('1.9269783432665189582619e+12', '1926978343266.5189582619'); - T('2.4458042e+3', '2445.8042'); - T('1.24442787448470619843211196913235e+6', '1244427.87448470619843211196913235'); - T('6.5795027200660039322532e+7', '65795027.200660039322532'); - T('2.124371034489911604376156663456697624832e+36', '2124371034489911604376156663456697624.832'); - T('4.7518554e+3', '4751.8554'); - T('5.577243873330495803e+5', '557724.3873330495803'); - T('1.4411990735775980636079874248393636e+28', '14411990735775980636079874248.393636'); - T('3.532984961283621176064142e+22', '35329849612836211760641.42'); - T('6.41099968454591750260016248126e+14', '641099968454591.750260016248126'); - T('1.876802099566385814736323517234163782171196608110171e+38', '187680209956638581473632351723416378217.1196608110171'); - T('2.712536235933694424272454724983924750851e+6', '2712536.235933694424272454724983924750851'); - T('1.819734474513556013e+8', '181973447.4513556013'); - T('3.0320484961616175305658133728e+14', '303204849616161.75305658133728'); - T('1.9739814652160018980576469874802639653674373e+38', '197398146521600189805764698748026396536.74373'); - T('6.0551922025938302e+10', '60551922025.938302'); - T('3.323596297e+8', '332359629.7'); - T('5.7458544961785021027335254905977754345607e+38', '574585449617850210273352549059777543456.07'); - T('3.43869507567190104395123310443283792e+2', '343.869507567190104395123310443283792'); - T('3.964855738823341944355183015e+26', '396485573882334194435518301.5'); - T('4.75631864588339215e+12', '4756318645883.39215'); - T('3.1e+1', '31'); - T('3.750923398533815812530175e+17', '375092339853381581.2530175'); - T('1.25649942741256e+2', '125.649942741256'); - T('5.4854980319307537893979503491381982942042465844747093e+45', '5485498031930753789397950349138198294204246584.4747093'); - T('1.2940661791311373e+14', '129406617913113.73'); - T('2.90385571775480031587051447549374193061077e+10', '29038557177.5480031587051447549374193061077'); - T('9.1040729817423482924856979976434906087350486636207e+3', '9104.0729817423482924856979976434906087350486636207'); - T('1.57834489e+4', '15783.4489'); - T('2.319e+2', '231.9'); - T('5.522835788261589143141105742945478589362e+16', '55228357882615891.43141105742945478589362'); - T('8.7417851321101080306727e+15', '8741785132110108.0306727'); - T('9.96e+0', '9.96'); - T('1.343046943929639e+14', '134304694392963.9'); - T('2.21577825581227700070639623743724540952019026803e+0', '2.21577825581227700070639623743724540952019026803'); - T('5.64651860171575748936148456309414e+12', '5646518601715.75748936148456309414'); - T('2.71790519140131463205484467292975145e+33', '2717905191401314632054844672929751.450'); - T('2.46128778261687122384096383441327463273586448997789422e+8', '246128778.261687122384096383441327463273586448997789422'); - T('1.51e+0', '1.510'); - T('1.34417538839677e+6', '1344175.38839677'); - T('1.1967386179518011766805527782003e+0', '1.1967386179518011766805527782003'); - T('3.1240079864434111687577043352352970435153e+8', '312400798.64434111687577043352352970435153'); - T('3.125225939e+3', '3125.2259390'); - T('2.6130649e+4', '26130.649'); - T('6.3203802234999588e+14', '632038022349995.88'); - T('1.300191903723243249151204409158028743867e+5', '130019.1903723243249151204409158028743867'); - T('1.5457655328224382807201057293747835e+28', '15457655328224382807201057293.747835'); - T('2.09985076272906724e+4', '20998.50762729067240'); - T('2.2982784786e+6', '2298278.4786'); - T('2.73013672764e+2', '273.013672764'); - T('7.15593e+3', '7155.93'); - T('1.05530065668194919764462354032281e+20', '105530065668194919764.462354032281'); - T('7.067238e+5', '706723.8'); - T('7.101666481976457556024951459e+20', '710166648197645755602.49514590'); - T('1.98927384634532163e+13', '19892738463453.2163'); - T('9.29554688795640972981057180708607820032179861e+37', '92955468879564097298105718070860782003.2179861'); - T('6.357e+2', '635.7'); - T('3.840652373682260866164588121591718905795553491603e+8', '384065237.3682260866164588121591718905795553491603'); - T('9.648833805019588496096876819771292813546e+29', '964883380501958849609687681977.1292813546'); - T('1.01396650233101861694092927e+7', '10139665.0233101861694092927'); - T('1.1003348820123809214388166064277331414286102008e+3', '1100.3348820123809214388166064277331414286102008'); - T('2.36753216678948394164594831443879485957e+22', '23675321667894839416459.4831443879485957'); - T('4.793420545453058844039438100377715257448e+3', '4793.420545453058844039438100377715257448'); - T('2.8594271318287473088601837035675887941e+16', '28594271318287473.08860183703567588794100'); - T('1.6206370599062305392884719395678561e+31', '16206370599062305392884719395678.561'); - T('8.37074216450166132786697142264216365e+10', '83707421645.0166132786697142264216365'); - T('5.72070708e+6', '5720707.08'); - T('3.44337507384153235321301316699932527121036236885e+7', '34433750.7384153235321301316699932527121036236885'); - T('5.1e+1', '51'); - T('2.1015822918024812834120182488777123107013633378167186e+42', '2101582291802481283412018248877712310701363.3378167186'); - T('1.6372374238765434156758128e+15', '1637237423876543.4156758128'); - T('3.3419685364707547838979720464860359274118133481936e+14', '334196853647075.47838979720464860359274118133481936'); - T('2.8068807310597786792e+3', '2806.8807310597786792'); - T('4.845691098565776387667111068909874902599225606796909e+22', '48456910985657763876671.11068909874902599225606796909'); - T('4.63492511826172e+7', '46349251.1826172'); - T('8.25120492e+0', '8.25120492'); - T('2.5871391624943067662520803430464711250480700861462709e+13', '25871391624943.067662520803430464711250480700861462709'); - T('6.862831873483024223892481752e+21', '6862831873483024223892.4817520'); - T('4.270995713570409133606448268988455e+6', '4270995.713570409133606448268988455'); - T('3.21689066758930720484611614541085683569991722e+1', '32.1689066758930720484611614541085683569991722'); - T('4.2006919228915e+6', '4200691.9228915'); - T('2.111647930356982460265657710379876346e+34', '21116479303569824602656577103798763.46'); - T('4.87551174669e+5', '487551.174669'); - T('1.5091257783488078659575278297164846061663847e+26', '150912577834880786595752782.97164846061663847'); - T('1.237701316659693172445623860334e+1', '12.37701316659693172445623860334'); - T('5.3635904e+4', '53635.904'); - T('1.5977967842379292197961047064611986628e+22', '15977967842379292197961.047064611986628'); - T('6.834482866e+0', '6.8344828660'); - T('3.9109e+3', '3910.9'); - T('2.05461117535930705870869638710707996175293568e+5', '205461.117535930705870869638710707996175293568'); - T('1.2070553345143881176541757184e+18', '1207055334514388117.6541757184'); - T('9.04753411072173104408842163075173270844e+2', '904.753411072173104408842163075173270844'); - T('3.639101145152501183326810611536036936191190074e+10', '36391011451.525011833268106115360369361911900740'); - T('1.994669617516385887919849012130839536463335664239342e+50', '199466961751638588791984901213083953646333566423934.2'); - T('9.7856070170986006874778e+3', '9785.6070170986006874778'); - T('6.1871253720389630778712195614969724340856119729e+35', '618712537203896307787121956149697243.40856119729'); - T('1.208e+1', '12.08'); - T('1.198080560663539944762503564196454e+22', '11980805606635399447625.03564196454'); - T('2.5328238533704762297890589157e+22', '25328238533704762297890.5891570'); - T('5.552e+2', '555.2'); - T('2.01773928527273821442e+12', '2017739285272.738214420'); - T('7.1036358731897125539910962e+19', '71036358731897125539.910962'); - T('3.01168351390557005880750701501256409e+28', '30116835139055700588075070150.1256409'); - T('8.873816195265370349563768092711378467e+0', '8.873816195265370349563768092711378467'); - T('5.31989959593655063323434328335073160690174981170061e+33', '5319899595936550633234343283350731.60690174981170061'); - T('1.170061672875437e+9', '1170061672.875437'); - T('2.631e+0', '2.631'); - T('6.992802197718685e+6', '6992802.197718685'); - T('6.4873437617951852808027501577341488220457588954e+3', '6487.3437617951852808027501577341488220457588954'); - T('4.1846611240468792953070738254513e+26', '418466112404687929530707382.54513'); - T('9.65827406708491826272070488217543356756570950537e+5', '965827.406708491826272070488217543356756570950537'); - T('2.680770183874090982680392187869e+13', '26807701838740.909826803921878690'); - T('6.7565808330233111784457537072905e+7', '67565808.330233111784457537072905'); - T('2.38408874905822388315809187608e+17', '238408874905822388.315809187608'); - T('2.447793231118383053396286312152e+27', '2447793231118383053396286312.152'); - T('4.412e+0', '4.412'); - T('6.9222338533800975058347547493064339259e+10', '69222338533.800975058347547493064339259'); - T('1.72125107835943e+12', '1721251078359.4300'); - T('6.607121e+4', '66071.21'); - T('7.03864465898721081635229140790621289565513e+24', '7038644658987210816352291.40790621289565513'); - T('5.7060362541741681216530676958032280095247281014555554e+31', '57060362541741681216530676958032.280095247281014555554'); - T('2.7482039096119173840576395905241256e+28', '27482039096119173840576395905.241256'); - T('6.4362e+2', '643.62'); - T('1.72406543968787e+12', '1724065439687.87'); - T('3.7500096080724676535769717e+8', '375000960.80724676535769717'); - T('3.3903249492445e+4', '33903.249492445'); - T('3.985710962147295694116665218405340482945689e+6', '3985710.962147295694116665218405340482945689'); - T('5.9597233999e+2', '595.972339990'); - T('5.065730949256446196418568178865493e+9', '5065730949.256446196418568178865493'); - T('1.6265740670254208186e+10', '16265740670.254208186000'); - T('2.471885430096e+2', '247.1885430096'); - T('9.764510566491700832916679297457385114302061622402e+27', '9764510566491700832916679297.457385114302061622402'); - T('1.100445271296546289546e+20', '110044527129654628954.6'); - T('8.561528590365492629836625093938e+28', '85615285903654926298366250939.38'); - T('7.31603872157247934437172663482574448376720106618697e+0', '7.31603872157247934437172663482574448376720106618697'); - T('2.75299872462131924258265574524762989786191459317e+7', '27529987.2462131924258265574524762989786191459317'); - T('6.7303660756133592428732533499288191492268777722116295e+8', '673036607.56133592428732533499288191492268777722116295'); - T('5.44277296e+3', '5442.77296'); - T('1.727400264734055421671805513613990565159952e+17', '172740026473405542.16718055136139905651599520'); - T('1.410636835060372309578742278281108273215901435e+42', '1410636835060372309578742278281108273215901.435'); - T('4.92125270107294889416151811122942461554e+6', '4921252.70107294889416151811122942461554'); - T('8.263574210550744338917479e+4', '82635.74210550744338917479'); - T('3.301295895927052871052e+18', '3301295895927052871.052'); - T('2.8345346500631739e+9', '2834534650.0631739'); - T('2.18804350994050349e+5', '218804.350994050349'); - T('3.383e+2', '338.30'); - T('7.581461444218101096345865e+3', '7581.461444218101096345865'); - T('1.584289425751937525462e+15', '1584289425751937.525462'); - T('1.202636592001646399174824119297846262e+35', '120263659200164639917482411929784626.2'); - T('1.72579256998649794e+15', '1725792569986497.94'); - T('1.109e+0', '1.109'); - T('6.40345690864260982946869972537190219e+32', '640345690864260982946869972537190.219'); - T('7.5479229773185178963182361773e+8', '754792297.73185178963182361773'); - T('7.78534635586647281e+15', '7785346355866472.81'); - T('4.5177508859669314863310078725e+4', '45177.508859669314863310078725'); - T('8.488973363671775235458481e+7', '84889733.63671775235458481'); - T('4e+0', '4'); - T('2.160257894346090658681225233774014977725364e+11', '216025789434.6090658681225233774014977725364'); - T('1.607e+1', '16.07'); - T('2.0206643483788145768022873735045719015739162865885754e+19', '20206643483788145768.022873735045719015739162865885754'); - T('1e+0', '1'); - T('6.086027486877e+4', '60860.27486877'); - T('6.49464610960956342354353921e+18', '6494646109609563423.5435392100'); - T('9.043087147437339975894215149e+5', '904308.7147437339975894215149'); - T('9.1415795e+4', '91415.795'); - T('1.27325e+3', '1273.25'); - T('1.1457620373836988522455309158001309e+23', '114576203738369885224553.09158001309'); - T('3.5258358268876488e+3', '3525.8358268876488'); - T('5.903854119252757788054640537784867975213379818757043e+12', '5903854119252.757788054640537784867975213379818757043'); - T('2.85971614953528217489857558639088593436284e+10', '28597161495.352821748985755863908859343628400'); - T('6.32147605459582535823869726726906892032424730199715e+12', '6321476054595.82535823869726726906892032424730199715'); - T('1.66883e+3', '1668.83'); - T('8.77804543701627148053590314981878177298945834797e+34', '87780454370162714805359031498187817.7298945834797'); - T('1.12758900853879813587345336618836e+24', '1127589008538798135873453.366188360'); - T('2.650452875488521637e+15', '2650452875488521.637'); - T('9.81e+1', '98.1'); - T('9.4897220794023859948771e+7', '94897220.794023859948771'); - T('8.2072647415486658112286228544358927e+27', '8207264741548665811228622854.4358927'); - T('1.2676e+1', '12.676'); - T('2.6048528862310648794425199635976449765151357e+40', '26048528862310648794425199635976449765151.357'); - T('1e+0', '1'); - T('2.2e+1', '22'); - T('1.3672902326585293252722797324062e+4', '13672.902326585293252722797324062'); - T('8.2594112194437e+4', '82594.112194437'); - T('0e+0', '0'); - T('1.21895563609362455802176301e+3', '1218.95563609362455802176301'); - T('3.7463929411575183690242615828695666e+19', '37463929411575183690.242615828695666'); - T('3.28403622335683751121762619033739817557846187135037e+37', '32840362233568375112176261903373981755.7846187135037'); - T('7.0543560548522121622953708263633228563e+22', '70543560548522121622953.708263633228563'); - T('1.739819e+3', '1739.819'); - T('2.15324060127001207725970506357881e+19', '21532406012700120772.5970506357881'); - T('2.373532121822929762731612214095513784533409e+29', '237353212182292976273161221409.5513784533409'); - T('4.5883026736677354807679611737881799804e+16', '45883026736677354.807679611737881799804'); - T('2.5996714820346689325468319633061e+21', '2599671482034668932546.8319633061'); - T('8.22641928e+6', '8226419.280'); - T('2.56006014528479284199702229871263269e+20', '256006014528479284199.702229871263269'); - T('4.301260132991159779386275268219519443685e+24', '4301260132991159779386275.268219519443685'); - T('1.052721790360165649330888881e+22', '10527217903601656493308.88881'); - T('6.85257703973809064426443728e+0', '6.85257703973809064426443728'); - T('1.341206836e+5', '134120.6836'); - T('1.293696083809745995580141432072678134217648017629e+25', '12936960838097459955801414.32072678134217648017629'); - T('9.81886611183e+9', '9818866111.83'); - T('1.3e+1', '13'); - T('2.185212134168411755342025405260683400574952243371e+1', '21.8521213416841175534202540526068340057495224337100'); - T('5.09812942277266e+1', '50.9812942277266'); - T('1.15841228150473459450904593187073359993e+37', '11584122815047345945090459318707335999.3'); - T('2.946408e+1', '29.46408'); - T('7.8843253757257e+6', '7884325.3757257'); - T('4.149829532631829e+7', '41498295.32631829'); - T('9.76844406944663415436782518894675931581135161845733e+46', '97684440694466341543678251889467593158113516184.5733'); - T('1.320634109357604978481e+7', '13206341.09357604978481'); - T('1.2300117044692162331376535732386421937e+8', '123001170.44692162331376535732386421937'); - T('1.79343822239530391558796001578394154846951511735e+42', '1793438222395303915587960015783941548469515.11735'); - T('3.46227335968923941657647562338569e+7', '34622733.5968923941657647562338569'); - T('3.6081901133629252234652167e+18', '3608190113362925223.4652167'); - T('3.41769614577210353834283168068494e+24', '3417696145772103538342831.68068494'); - T('1.036693895e+8', '103669389.5'); - T('9.840862048026534392868878603161623504069221701e+27', '9840862048026534392868878603.161623504069221701'); - T('2.56437211238605e+10', '25643721123.86050'); - T('2.645333616435501e+6', '2645333.616435501'); - T('3.75834254646606787747061360998e+1', '37.5834254646606787747061360998'); - T('1.21582101247e+6', '1215821.01247'); - T('5.43e+1', '54.3'); - T('3.1461380403028457753654142032015e+27', '3146138040302845775365414203.2015'); - T('2.73039e+4', '27303.9'); - T('3.349112077000398203735762417e+25', '33491120770003982037357624.170'); - T('2.293912475527946909960963698602754526495697363e+31', '22939124755279469099609636986027.54526495697363'); - T('7.800578368e+8', '780057836.8'); - T('3.503304265046835170500513083432983735273e+28', '35033042650468351705005130834.32983735273'); - T('6.521027589563589728e+9', '6521027589.563589728'); - T('1.26604818273232e+3', '1266.04818273232'); - T('4.5844253800756959854340115e+7', '45844253.800756959854340115'); - T('2.5103887704609158215979351198183e+20', '251038877046091582159.79351198183'); - T('6.5170765018089001398157674630438543e+17', '651707650180890013.98157674630438543'); - T('7.85679659655762637941070216699747e+18', '7856796596557626379.41070216699747'); - T('6.55113755834849587145e+18', '6551137558348495871.45'); - T('1.37856413555592382324487860882977704999616e+32', '137856413555592382324487860882977.704999616'); - T('7.51530486314140193e+5', '751530.486314140193'); - T('1.3712642461229590011e+7', '13712642.4612295900110'); - T('8.945222111405724e+2', '894.5222111405724'); - T('1.74501389497524149414213254563953197394499747444317e+44', '174501389497524149414213254563953197394499747.444317'); - T('7.1583294041845987824307132e+11', '715832940418.45987824307132'); - T('1.282007923703783860923747442697572540049e+13', '12820079237037.83860923747442697572540049'); - T('5.660625174793381639446229222e+11', '566062517479.3381639446229222'); - T('2.094745267e+4', '20947.45267'); - T('8.4497877437844686621097450218313191175e+13', '84497877437844.6866210974502183131911750'); - T('1.7e+1', '17'); - T('1.707217105197425488000493702652714920318758323999364e+23', '170721710519742548800049.3702652714920318758323999364'); - T('2.5487434814078948112667918801256335353406914111636153e+36', '2548743481407894811266791880125633535.3406914111636153'); - T('7.975944255792483246376368330364e+8', '797594425.5792483246376368330364'); - T('1.1038710051127692465453332862048e+20', '110387100511276924654.53332862048'); - T('2.0214122542287381656860062564183697682e+13', '20214122542287.381656860062564183697682'); - T('7.853012025112e+4', '78530.12025112'); - T('7.97061651146928e+3', '7970.61651146928'); - T('1.5712956919727392305361179349388e+10', '15712956919.727392305361179349388'); - T('8.2480059e+3', '8248.0059'); - T('2.71929146422591231877279340940781443961397491e+19', '27192914642259123187.7279340940781443961397491'); - T('2.131e+2', '213.10'); - T('5.53443299017925367e+6', '5534432.99017925367'); - T('9.0599636453e+8', '905996364.53'); - T('2.86841011915001378943e+0', '2.86841011915001378943'); - T('3.50691916034642635201767965866239485795145676493e+28', '35069191603464263520176796586.6239485795145676493'); - T('1.20268235416561427028396813141142129291e+18', '1202682354165614270.283968131411421292910'); - T('4.8878729e+4', '48878.7290'); - T('9.04344910891e+4', '90434.4910891'); - T('3.87232843764031e+2', '387.232843764031'); - T('2.246212201353343e+11', '224621220135.33430'); - T('4.92916234816086643529027167741689023e+4', '49291.6234816086643529027167741689023'); - T('2.1773818234639052045922630496e+22', '21773818234639052045922.630496'); - T('4.78705362683815125848e+0', '4.787053626838151258480'); - T('2.700762078698436846755198719005e+28', '27007620786984368467551987190.05'); - T('3.04897901998664513240359358574664525651334171e+36', '3048979019986645132403593585746645256.51334171'); - T('3.807300704307638993582e+18', '3807300704307638993.582'); - T('7.9846840795076707340124614425632613353204e+3', '7984.6840795076707340124614425632613353204'); - T('6.69918558928e+4', '66991.8558928'); - T('5.11e+1', '51.1'); - T('1.8e+1', '18'); - T('2.629676971e+2', '262.9676971'); - T('6.8402048967767212280354493672372347369800788279670097e+39', '6840204896776721228035449367237234736980.0788279670097'); - T('4.684145127602661593941009299096573092581e+21', '4684145127602661593941.009299096573092581'); - T('1.3010133600355313564757759338788842e+18', '1301013360035531356.4757759338788842'); - T('1.58527974113934732993372979240170059e+30', '1585279741139347329933729792401.70059'); - T('1.8249338722142728063286e+2', '182.49338722142728063286'); - T('1.5941e+0', '1.59410'); - T('2.0337546838170082473539926326926478252219475e+29', '203375468381700824735399263269.26478252219475'); - T('4.626173e+3', '4626.173'); - T('6.04857e+0', '6.04857'); - T('9.55039030589038069713466331e+0', '9.55039030589038069713466331'); - T('3.13977842e+6', '3139778.42'); - T('4.4046554138751e+10', '44046554138.751'); - T('2.27133088062335544441002965096e+25', '22713308806233554444100296.5096'); - T('1.72895143e+4', '17289.5143'); - T('2.59665963383099309886519729836757e+20', '259665963383099309886.5197298367570'); - T('5.42804375404301025317704270939778493719619031067122726e+24', '5428043754043010253177042.70939778493719619031067122726'); - T('4.0526054186532354119711729303068171063825508e+2', '405.26054186532354119711729303068171063825508'); - T('1.26960267394273418410687782475849e+9', '1269602673.94273418410687782475849'); - T('5.657206212494798707700546288522044895183104747814298e+7', '56572062.12494798707700546288522044895183104747814298'); - T('4.80834664047405196104320584899449259286e+21', '4808346640474051961043.20584899449259286'); - T('5.6639294733687553228095e+12', '5663929473368.7553228095'); - T('3.08469899797006019074738182718775120203832280411e+44', '308469899797006019074738182718775120203832280.4110'); - T('6.7324018330891115163882850963905830707247414517739e+20', '673240183308911151638.82850963905830707247414517739'); - T('7.8e+1', '78'); - T('3.7511576e+4', '37511.576'); - T('4.9744737445922007872559411117007e+20', '497447374459220078725.59411117007'); - T('1.4264855114407053894401398660016825255242638071603e+2', '142.64855114407053894401398660016825255242638071603'); - T('1.7972e+1', '17.972'); - T('1.08223075909551421423442320791403363148864e+12', '1082230759095.51421423442320791403363148864'); - T('1.27992032328728568e+16', '12799203232872856.8'); - T('3.23410998756876789482263723951851692122375679e+9', '3234109987.56876789482263723951851692122375679'); - T('8.309058187826413886051933894555524364e+5', '830905.8187826413886051933894555524364'); - T('5.9126904485324084868266487306831291316268437628598e+40', '59126904485324084868266487306831291316268.437628598'); - T('3.579918283412251816470339246643e+16', '35799182834122518.16470339246643'); - T('8.292403288e+1', '82.92403288'); - T('7.39431e+2', '739.431'); - T('3.880259e+2', '388.0259'); - T('8.356612898392420429137009991722851e+18', '8356612898392420429.137009991722851'); - T('9.45261313e+6', '9452613.13'); - T('3.3127850701711548546e+12', '3312785070171.1548546'); - T('7.883085682938156731330453228115e+0', '7.883085682938156731330453228115'); - T('7.8019561298380079335847245119645e+18', '7801956129838007933.5847245119645'); - T('1.162986351331516344668182075630641387e+5', '116298.63513315163446681820756306413870'); - T('1.28721291829552168e+9', '1287212918.29552168'); - T('6.1228832015e+5', '612288.32015'); - T('7.093619563532718270358988194610140484e+4', '70936.19563532718270358988194610140484'); - T('2.301304548870898223195731e+19', '23013045488708982231.95731'); - T('7.8447233503822258690539142204913891e+33', '7844723350382225869053914220491389.1'); - T('1.0090353662689425563590122399240645713114036952885e+26', '100903536626894255635901223.99240645713114036952885'); - T('2.6e+1', '26'); - T('2.015599e+5', '201559.9'); - T('3.1885351403871521971462599368214857856505297484e+33', '3188535140387152197146259936821485.78565052974840'); - T('3.6914534995202995808748962e+15', '3691453499520299.5808748962'); - T('1.2184696326401127654851812133097e+7', '12184696.326401127654851812133097'); - T('1.320231321916575882279815969200269836e+33', '1320231321916575882279815969200269.836'); - T('6.9618612891393774e+15', '6961861289139377.4'); - T('1.413827890310425450368036252350406468114295965313e+11', '141382789031.0425450368036252350406468114295965313'); - T('7.2883e+0', '7.2883'); - T('4.39128379250644938491985214e+17', '439128379250644938.491985214'); - T('4.08749008923147560205987e+12', '4087490089231.47560205987'); - T('1.2963755286285698528172931273502071438656e+36', '1296375528628569852817293127350207143.8656'); - T('1.748593351151123699414e+1', '17.48593351151123699414'); - T('9.734881140813067568986787719510123722831153669e+35', '973488114081306756898678771951012372.2831153669'); - T('2.32721108706388120897763e+11', '232721108706.388120897763'); - T('2.362273992041095475822632722018109548e+22', '23622739920410954758226.327220181095480'); - T('9.127306952822127691560865985866475e+18', '9127306952822127691.560865985866475'); - T('2.4e+1', '24'); - T('9.33725589231422920537799340863789387113892e+31', '93372558923142292053779934086378.9387113892'); - T('2.8683466985317806508353476e+6', '2868346.6985317806508353476'); - T('1.96167065035164685305509057685021959865228913867e+40', '19616706503516468530550905768502195986522.8913867'); - T('2.1513e+3', '2151.3'); - T('3.65316922559843117188159177065637844e+19', '36531692255984311718.8159177065637844'); - T('5.87971958699076454900383524e+21', '5879719586990764549003.835240'); - T('1.29414973913652368531805363331786105e+14', '129414973913652.368531805363331786105'); - T('1.68007422270052611738598e+22', '16800742227005261173859.8'); - T('2.9465419082779898714713969973e+4', '29465.4190827798987147139699730'); - T('2.865456717594117060964538744726484002e+28', '28654567175941170609645387447.26484002'); - T('1.2781496e+0', '1.2781496'); - T('5.395903069e+4', '53959.03069'); - T('2.084656696443025813e+12', '2084656696443.025813'); - T('7.54671420639507228408101673007042651462774881888e+46', '75467142063950722840810167300704265146277488188.8'); - T('1.436685520447262044600029e+14', '143668552044726.2044600029'); - T('6.9e+1', '69'); - T('8.921e+2', '892.10'); - T('2.51196408e+4', '25119.6408'); - T('4.2502325992166027236666111862782e+15', '4250232599216602.7236666111862782'); - T('1.48181688637265610577148846528720697801886e+17', '148181688637265610.577148846528720697801886'); - T('6.578849006577789439801702e+0', '6.578849006577789439801702'); - T('4.346905625146927213132990652e+22', '43469056251469272131329.90652'); - T('5.5037893e+0', '5.5037893'); - T('2.47731675267438120023934691987e+15', '2477316752674381.20023934691987'); - T('3.37487366652276710575333974697197457e+9', '3374873666.52276710575333974697197457'); - T('1.0385387059229329627650733271e+0', '1.0385387059229329627650733271'); - T('9.83004944893186643985967600066862369294062e+17', '983004944893186643.985967600066862369294062'); - T('4.24581658127100743607231740518633563667839856744e+26', '424581658127100743607231740.518633563667839856744'); - T('3.14222253457223322124561584676953981561133e+2', '314.222253457223322124561584676953981561133'); - T('1.1553833141891499623566322265502695096447390786748e+48', '1155383314189149962356632226550269509644739078674.8'); - T('5.2811e+1', '52.811'); - T('9.925202445922857021945001443270353221818473047344e+2', '992.5202445922857021945001443270353221818473047344'); - T('1.5758941e+4', '15758.9410'); - T('6.6630010328564980059488916358767e+30', '6663001032856498005948891635876.7'); - T('1.49898377473153728100588907982263779724221092732531e+44', '149898377473153728100588907982263779724221092.732531'); - T('4.175238908185616536855e+20', '417523890818561653685.5'); - T('1.192838736272799853174021036238e+21', '1192838736272799853174.021036238'); - T('1.145038e+3', '1145.038'); - T('4.0973786626728889384598402998014750474268e+9', '4097378662.6728889384598402998014750474268'); - T('5.5038104e+4', '55038.104'); - T('6.83895535917805849194871290958068199407518e+2', '683.895535917805849194871290958068199407518'); - T('2.9716066182e+0', '2.9716066182'); - T('1e+0', '1'); - T('1.78063428481384259205331358231117935e+0', '1.780634284813842592053313582311179350'); - T('6.277714976103425712837719e+22', '62777149761034257128377.1900'); - T('1.37376909692642287134486582232200547809845780076e+26', '137376909692642287134486582.232200547809845780076'); - T('7.0255659498942180908195e+16', '70255659498942180.908195'); - T('1.36758412477e+6', '1367584.12477'); - T('2.8993016541323392639291954727329719281958174e+23', '289930165413233926392919.54727329719281958174'); - T('2.44e+0', '2.44'); - T('5.39870374073212675286058196342904027304008232e+40', '53987037407321267528605819634290402730400.8232'); - T('6.4507160654825e+9', '6450716065.4825'); - T('1.21664e+3', '1216.64'); - T('3.13108416362400780440861428855476299376486503e+0', '3.13108416362400780440861428855476299376486503'); - T('7.2960499529336221198242592384915903149558006256202995e+17', '729604995293362211.98242592384915903149558006256202995'); - T('5.67239328846178836850536139916737284448973e+0', '5.67239328846178836850536139916737284448973'); - T('7.20020305957519743064e+3', '7200.203059575197430640'); - T('1.85115423780064073715032545790701546649748120114e+27', '1851154237800640737150325457.90701546649748120114'); - T('1.25021250836778893386687012660759710902e+21', '1250212508367788933866.87012660759710902'); - T('2.3323707491301665555664068537483355865980611e+25', '23323707491301665555664068.5374833558659806110'); - T('2.5088131581298507401113299236e+4', '25088.131581298507401113299236'); - T('9.612326850563943155774866e+17', '961232685056394315.5774866'); - T('1.54114517176248297154289225338049499367447824e+22', '15411451717624829715428.9225338049499367447824'); - T('5.22e+0', '5.22'); - T('4.04698305476309533783897e+21', '4046983054763095337838.97'); - T('2.620876536774240989563272117908814902188002596311e+24', '2620876536774240989563272.117908814902188002596311'); - T('1.7290754650750439926458970782158e+10', '17290754650.750439926458970782158'); - T('8.570789332248e+6', '8570789.332248'); - T('1.21e+1', '12.1'); - T('9.749134061639126502181192178140679940393318673720443e+45', '9749134061639126502181192178140679940393318673.720443'); - T('1.26878e+5', '126878.0'); - T('1.2391599841950849289559651456348e+9', '1239159984.1950849289559651456348'); - T('1.72220118427662724614289256133342842086e+22', '17222011842766272461428.9256133342842086'); - T('1.512063585971680294584184272035496e+15', '1512063585971680.294584184272035496'); - - log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n'); - return [passed, total];; -})(this.BigNumber); -if (typeof module !== 'undefined' && module.exports) module.exports = count; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt deleted file mode 100644 index 425556c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/bignumber.js/test/v8-LICENCE.txt +++ /dev/null @@ -1,45 +0,0 @@ -Some of the test cases in this directory are taken from the v8 source code - for which the licence is below. - -2008: toPrecision.js - - -2010: abs.js pow.js - - -2011: ceil.js floor.js round.js - - -Licence -======= - - Copyright 2008/2010/2011 the V8 project authors. All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.Readme.md.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.Readme.md.un~ deleted file mode 100644 index 2b299d86c792acb36481b40e4f1b0b12df61cd03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12033 zcmeI&OK%fb6u|Kz3GZit6zBu4)JnEVVpl+b21RN_1rhj`|a7<&BBo#Ns=6qNe8)4T!PV0 z$*p&9SB6+Sl+6C&HW+jx1FM*9{3nsy_EmIGTOpNWVfOO4H%anAPJOl4y3vcl>!H2VnnKbS6r=@y3Ef(C&Shdk8l!~P*PSgwf-9{JDvm~M@ zRR|d(dMZzJY}2BZO3&1HuitSzqp7b(@KH=Z%QL;SdDE-CUe0up+^0SS$7yooY(fmU`WU_`8$SCeZ;a0 z7(urGor!e5ETKlBo6Mv8)EGHEN^6}~dwIgFKUZ?ihuBfIe`q3DAQuIxLdX!oZ~6sk zJl}kUjRn`8|2R$bj;Z}cmVUMW(uta?GC^iV^P1MAk&xsxltbxWBe#O@r$0~lpFVt! z%j5&Q-Z3_M`Lcu>#p`;W*FIzB>y1v@?tuX`tab-Hz)+5dONtOQ1nfp0*ue~}QWVn(tZ*Y4*D}Vdj^bwNAa&>|0SRnWyD)d1b}f>W1V);LHo#h_=2G zTO2vNIOG173%R13pONu0^J4qV+75MXX)7Q6pbgH=&9Q9np7mTLk#(%j`g>}2Eq^D$ zQ+m74}UmOnu=W=i(`@sisM*i_7M5b=h=UevOeeTsfwT V=5f9Apx!jq>_%L9eD$AS{|63SB|-oI diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.index.js.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/.index.js.un~ deleted file mode 100644 index 8d1fbd965f3090cacc8e0b28952cdfe48e8f47f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12887 zcmeI3&u<$=6vsC|+9v#L3FTLnXlX)YtHPl`)k9PS;>R%;M1)kT$Z|HSkz=*uD_r6W@cyY z#ro>?x0#O^qYM)Y0C_g{g9t*<{598vV&6R!JA zdQNrvBSA!+g`j+C5(%QNqog{#?3)4((dU9_sDp@(RdC5YCa{c}vw|#(tboZVGmxUg zbj3!J;<%5qc|;&NV9pM%EV2S3qs%~x4$+r85vlw(lE8A%Tmi^5;=+Jugc(e6Cnlr^ z!Tl}?hHRz+o{cYB9dbzxhzdA>Q&k3*J8)NRd?7su9^{MyO$SA4Y{b!Oj8@)&m_=O} z7*&=*I-Fu07HtAH7lpQ0{sLWMz^y4z6 zynnHkw%6jb@ydF$)~>gjrE+}PGlZE8n*K`R3BxCO9~h#-Ak8tnE)0jehs1kg2s5Tb zHF#zdUtp-R6wFa_+8+xRwM8vBhTqsYWcpJ1L3850Y8tQ98;OMAS|v@Y%ggoj%@3Nj z($bPEHLI&hdER$7B`qr}t@QP3?LsLFS*l&wx>nD{F+HwU+qDY>wfmqVZ%T8e%E?z- z&34*qG?KLZPUYRTnK|kCXdKs9;?mR7t{kUHdp&LHDdSFuwd}|RcR{XaX?*U~dD_j# zu^&gyb+r#1)bhsX*A4@1IO9X3$$Fsq)P!OBJ^W;nSL=t->8P3j{?(WM@ zzbXTteQXC>)(-)v6QOU*gYzdFow^04IG=ZG^m|v+e{5(t5K#%F;mhVY_~V<4cH&TaI~`qvO7yGY0tv2@UE3SqOx17 zba`CeqI-|aZkG9>8ee$KB{lpc`$oYxRF;A{N~*f}hL-USDZ5SCzr{BW?Cu+}vE6bPe}MnvE~#;qT=_H=!5>he56j^Xo6~l@*Retu*v0(8 z$2u(ey__1HVSAj4z!nwyusm#MgzdrZSXZ_$=7@E9aIqc0+0zP8%Ck`a1;EVWLKYYS ztyiUJmIv(_8@9;Ky)oMr%*VrVEMv0PgIu3tfJ%OfK%Fx%W=}E#I?<%~i=A~*Rc2k6 zFKT&VYx5^zZdoT>xJg8)B!+8E^$!6?HkZvr}0=)+L*S${km#JYV%oTk*f|6p7a rbmJX#I+XGm=qCKeqx_hNpDY7 diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md deleted file mode 100644 index 60a7a5c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/Readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# require-all - -An easy way to require all files within a directory. - -## Usage - -```js -var controllers = require('require-all')({ - dirname: __dirname + '/controllers', - filter: /(.+Controller)\.js$/, -}); - -// controllers now is an object with references to all modules matching the filter -// for example: -// { HomeController: function HomeController() {...}, ...} -``` diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js deleted file mode 100644 index 71084ba..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/index.js +++ /dev/null @@ -1,25 +0,0 @@ -var fs = require('fs'); - -module.exports = function requireAll(options) { - var files = fs.readdirSync(options.dirname); - var modules = {}; - - files.forEach(function(file) { - var filepath = options.dirname + '/' + file; - if (fs.statSync(filepath).isDirectory()) { - modules[file] = requireAll({ - dirname: filepath, - filter: options.filter - }); - - } else { - var match = file.match(options.filter); - if (!match) return; - - modules[match[1]] = require(filepath); - } - }); - - return modules; -}; - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json deleted file mode 100644 index 5bfb76f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "require-all", - "description": "An easy way to require all files within a directory.", - "version": "0.0.3", - "repository": { - "url": "" - }, - "main": "./index", - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": {}, - "readme": "# require-all\n\nAn easy way to require all files within a directory.\n\n## Usage\n\n```js\nvar controllers = require('require-all')({\n dirname: __dirname + '/controllers',\n filter: /(.+Controller)\\.js$/,\n});\n\n// controllers now is an object with references to all modules matching the filter\n// for example:\n// { HomeController: function HomeController() {...}, ...}\n```\n", - "readmeFilename": "Readme.md", - "_id": "require-all@0.0.3", - "dist": { - "shasum": "9c3e77ac28b347034f187a4a8f031fcba125ed91" - }, - "_from": "require-all@0.0.3", - "_resolved": "https://registry.npmjs.org/require-all/-/require-all-0.0.3.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/.test.js.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/.test.js.un~ deleted file mode 100644 index 51d49cd4c643cd21c5feb77daca2502c2c0f55d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7066 zcmeI0&ubGw6vx-3ZR(F&Ma8x#KB0CK8iKxvk>DCI= zQjGES>%ZFYG-VWC=@$~ZMukU7>2I(ojVR*!KYL(&{o01YVHn@Rt&K}N7sXR)07Eo@ z6TBzdQ_!4WQ79YGu^L!mZyy&UMhP#pAazf&4Yc=bTMN?W$TAelL?a@g1e$|WZpC*U zE9bc7^g_|gjA(AcNgGt*hc76Jxrry5tfO#CghLRaCGH2eLt$>_qUD=)auS6yH4KxX zam0yNnysUdODb~7&4?5Ct5m5247!fcERar-Y~#cja!S+9D41S`1MDb&s+SA)E`>?$ zbE56XL^L>nN};a>5CQHm`f+B27g~@g;9l55yjatoH{+iry}lWA&pVAUC# z9XNtrA9OK0c%cP}!tTvZ?E1E1HG`m=`J-S4mHD9wmYt(VlOZ<$8SYIj5TEkQ*=q3%4nO6hM zEWdM%XxetFmN!iKbZ#(nGnbz6@6PycCDWhh=gH;F2v?BaqVHQ?HCM8%xvTTFqLWr; zvV?DSu^rbPCUdgrDZ?hwEz5COwM4gF&nXR4)vH-qs#R>{37*rrv$TvkbQ1ZsNq&*r zXL!=YN3ChQjFG-ot=g6HC>tI%v(g>o?wA=2<_{C`aV#*;7Lr8EsCeQ!2Vu$X;Ua?N z3}>q!-gpU%Tbit+EaA7|B^+Mo*!UAfYU>Z{W$Op3y`hN#BSHX)FWx@jgjOU9x_1g) zTX3|N)0zCt9^ZcZ$k37wKQL2gY&})*1Va^)arkMkG+RYs_&FSYa6JZ@_+rDE8=8Ml z;$SV|2z1zWM1U3c)GbJiQryyHUH7E+>H%#BcT1|xhk-8&W&76P>UR{D=eb_P?Gi}I zT@}oNVtwhvHDBq2vgq;sA-W%+*iH!3)aZ{|{9lM8*!7f4|X zCEgF=gjOU9#vkEaD*K^eJRz5aK>+>*w0JP;?GwI diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js deleted file mode 100644 index 355ce40..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/main-Controller.js +++ /dev/null @@ -1,4 +0,0 @@ -exports.index = 1; -exports.show = 2; -exports.add = 3; -exports.edit = 4; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js deleted file mode 100644 index 8ac88c5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/notthis.js +++ /dev/null @@ -1 +0,0 @@ -exports.yes = 'no'; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js deleted file mode 100644 index aec8f24..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/controllers/other-Controller.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.index = 1; -exports.show = 'nothing' diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js deleted file mode 100644 index cb1c2c0..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/foo.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = 'bar'; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js deleted file mode 100644 index b1d17c1..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/hello.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.world = true; -exports.universe = 42; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/.config.json.un~ deleted file mode 100644 index 0029e64db9e6ada3d9028ef1d32d47dc96acd0c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1864 zcmWH`%$*;a=aT=Ffys3G>Z4|7_UZTwmNtC3kS}n|qg3|ed>{2Er6(9-WDmJAFfgzH zF=I7|0AdgT(I7!&%nXw7`w+a61tiPN5PtzA00c}B3QU5eKztq$?>`X0jRXmd0xE|9 zFgj$w(ZRs*RRU->Bxaxy3ginZC@2-DmXu`Xr8_EFDJVHA>6kWxBMzn#<{(g{fnsBI2At5$B`?jW?J=nCn1s1`-nj35;eqP$?x3$R1c;0%bU%-29Z%oK(Hkih}&2l41p0 Kg=*8r=c@pk5Kv_R diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json deleted file mode 100644 index d2b5939..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "settingA": "A", - "settingB": "B" -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js deleted file mode 100644 index ec01c2c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/no.2js +++ /dev/null @@ -1 +0,0 @@ -module.exports = true; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js deleted file mode 100644 index ec01c2c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/mydir/sub/yes.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = true; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js b/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js deleted file mode 100644 index 025af0d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/node_modules/require-all/test/test.js +++ /dev/null @@ -1,38 +0,0 @@ -var assert = require('assert'); -var requireAll = require('..'); - -var controllers = requireAll({ - dirname: __dirname + '/controllers', - filter: /(.+Controller)\.js$/ -}); - -assert.deepEqual(controllers, { - 'main-Controller': { - index: 1, - show: 2, - add: 3, - edit: 4 - }, - - 'other-Controller': { - index: 1, - show: 'nothing' - } -}); - - -if (process.version > 'v0.6.0') { - var mydir = requireAll({ - dirname: __dirname + '/mydir', - filter: /(.+)\.(js|json)$/ - }); - - assert.deepEqual(mydir, { - foo: 'bar', - hello: { world: true, universe: 42 }, - sub: { - config: { settingA: 'A', settingB: 'B' }, - yes: true - } - }); -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/package.json b/nodejs-mysql-tutorial/node_modules/mysql/package.json deleted file mode 100644 index ea2c4dc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "author": { - "name": "Felix Geisendörfer", - "email": "felix@debuggable.com", - "url": "http://debuggable.com/" - }, - "name": "mysql", - "description": "A node.js driver for mysql. It is written in JavaScript, does not require compiling, and is 100% MIT licensed.", - "version": "2.0.0-alpha8", - "repository": { - "type": "git", - "url": "https://github.com/felixge/node-mysql" - }, - "main": "./index", - "scripts": { - "test": "make test" - }, - "engines": { - "node": "*" - }, - "dependencies": { - "require-all": "0.0.3", - "bignumber.js": "1.0.1" - }, - "devDependencies": { - "utest": "0.0.6", - "urun": "0.0.6", - "underscore": "1.3.1" - }, - "optionalDependencies": {}, - "readme": "# node-mysql\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-mysql.png)](http://travis-ci.org/felixge/node-mysql)\n\n## Install\n\n```bash\nnpm install mysql@2.0.0-alpha8\n```\n\nDespite the alpha tag, this is the recommended version for new applications.\nFor information about the previous 0.9.x releases, visit the [v0.9 branch][].\n\nSometimes I may also ask you to install the latest version from Github to check\nif a bugfix is working. In this case, please do:\n\n```\nnpm install felixge/node-mysql\n```\n\n[v0.9 branch]: https://github.com/felixge/node-mysql/tree/v0.9\n\n## Introduction\n\nThis is a node.js driver for mysql. It is written in JavaScript, does not\nrequire compiling, and is 100% MIT licensed.\n\nHere is an example on how to use it:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection({\n host : 'localhost',\n user : 'me',\n password : 'secret',\n});\n\nconnection.connect();\n\nconnection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {\n if (err) throw err;\n\n console.log('The solution is: ', rows[0].solution);\n});\n\nconnection.end();\n```\n\nFrom this example, you can learn the following:\n\n* Every method you invoke on a connection is queued and executed in sequence.\n* Closing the connection is done using `end()` which makes sure all remaining\n queries are executed before sending a quit packet to the mysql server.\n\n## Contributors\n\nThanks goes to the people who have contributed code to this module, see the\n[GitHub Contributors page][].\n\n[GitHub Contributors page]: https://github.com/felixge/node-mysql/graphs/contributors\n\nAdditionally I'd like to thank the following people:\n\n* [Andrey Hristov][] (Oracle) - for helping me with protocol questions.\n* [Ulf Wendel][] (Oracle) - for helping me with protocol questions.\n\n[Ulf Wendel]: http://blog.ulf-wendel.de/\n[Andrey Hristov]: http://andrey.hristov.com/\n\n## Sponsors\n\nThe following companies have supported this project financially, allowing me to\nspend more time on it (ordered by time of contribution):\n\n* [Transloadit](http://transloadit.com) (my startup, we do file uploading &\n video encoding as a service, check it out)\n* [Joyent](http://www.joyent.com/)\n* [pinkbike.com](http://pinkbike.com/)\n* [Holiday Extras](http://www.holidayextras.co.uk/) (they are [hiring](http://join.holidayextras.co.uk/vacancy/software-engineer/))\n* [Newscope](http://newscope.com/) (they are [hiring](http://www.newscope.com/stellenangebote))\n\nIf you are interested in sponsoring a day or more of my time, please\n[get in touch][].\n\n[get in touch]: http://felixge.de/#consulting\n\n## Community\n\nIf you'd like to discuss this module, or ask questions about it, please use one\nof the following:\n\n* **Mailing list**: https://groups.google.com/forum/#!forum/node-mysql\n* **IRC Channel**: #node.js (on freenode.net, I pay attention to any message\n including the term `mysql`)\n\n## Establishing connections\n\nThe recommended way to establish a connection is this:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection({\n host : 'example.org',\n user : 'bob',\n password : 'secret',\n});\n\nconnection.connect(function(err) {\n // connected! (unless `err` is set)\n});\n```\n\nHowever, a connection can also be implicitly established by invoking a query:\n\n```js\nvar mysql = require('mysql');\nvar connection = mysql.createConnection(...);\n\nconnection.query('SELECT 1', function(err, rows) {\n // connected! (unless `err` is set)\n});\n```\n\nDepending on how you like to handle your errors, either method may be\nappropriate. Any type of connection error (handshake or network) is considered\na fatal error, see the [Error Handling](#error-handling) section for more\ninformation.\n\n## Connection options\n\nWhen establishing a connection, you can set the following options:\n\n* `host`: The hostname of the database you are connecting to. (Default:\n `localhost`)\n* `port`: The port number to connect to. (Default: `3306`)\n* `socketPath`: The path to a unix domain socket to connect to. When used `host`\n and `port` are ignored.\n* `user`: The MySQL user to authenticate as.\n* `password`: The password of that MySQL user.\n* `database`: Name of the database to use for this connection (Optional).\n* `charset`: The charset for the connection. (Default: `'UTF8_GENERAL_CI'`)\n* `timezone`: The timezone used to store local dates. (Default: `'local'`)\n* `insecureAuth`: Allow connecting to MySQL instances that ask for the old\n (insecure) authentication method. (Default: `false`)\n* `typeCast`: Determines if column values should be converted to native\n JavaScript types. (Default: `true`)\n* `queryFormat`: A custom query format function. See [Custom format](#custom-format).\n* `supportBigNumbers`: When dealing with big numbers (BIGINT and DECIMAL columns) in the database,\n you should enable this option (Default: `false`).\n* `bigNumberStrings`: Enabling both `supportBigNumbers` and `bigNumberStrings` forces big numbers\n (BIGINT and DECIMAL columns) to be always returned as JavaScript String objects (Default: `false`).\n Enabling `supportBigNumbers` but leaving `bigNumberStrings` disabled will return big numbers as String\n objects only when they cannot be accurately represented with [JavaScript Number objects] (http://ecma262-5.com/ELS5_HTML.htm#Section_8.5)\n (which happens when they exceed the [-2^53, +2^53] range), otherwise they will be returned as\n Number objects. This option is ignored if `supportBigNumbers` is disabled.\n* `debug`: Prints protocol details to stdout. (Default: `false`)\n* `multipleStatements`: Allow multiple mysql statements per query. Be careful\n with this, it exposes you to SQL injection attacks. (Default: `false`)\n* `flags`: List of connection flags to use other than the default ones. It is\n also possible to blacklist default ones. For more information, check [Connection Flags](#connection-flags).\n\nIn addition to passing these options as an object, you can also use a url\nstring. For example:\n\n```js\nvar connection = mysql.createConnection('mysql://user:pass@host/db?debug=true&charset=BIG5_CHINESE_CI&timezone=-0700');\n```\n\nNote: The query values are first attempted to be parsed as JSON, and if that\nfails assumed to be plaintext strings.\n\n## Terminating connections\n\nThere are two ways to end a connection. Terminating a connection gracefully is\ndone by calling the `end()` method:\n\n```js\nconnection.end(function(err) {\n // The connection is terminated now\n});\n```\n\nThis will make sure all previously enqueued queries are still before sending a\n`COM_QUIT` packet to the MySQL server. If a fatal error occurs before the\n`COM_QUIT` packet can be sent, an `err` argument will be provided to the\ncallback, but the connection will be terminated regardless of that.\n\nAn alternative way to end the connection is to call the `destroy()` method.\nThis will cause an immediate termination of the underlying socket.\nAdditionally `destroy()` guarantees that no more events or callbacks will be\ntriggered for the connection.\n\n```js\nconnection.destroy();\n```\n\nUnlike `end()` the `destroy()` method does not take a callback argument.\n\n## Pooling connections\n\nConnections can be pooled to ease sharing a single connection, or managing\nmultiple connections.\n\n```js\nvar mysql = require('mysql');\nvar pool = mysql.createPool({\n host : 'example.org',\n user : 'bob',\n password : 'secret'\n});\n\npool.getConnection(function(err, connection) {\n // connected! (unless `err` is set)\n});\n```\n\nWhen you are done with a connection, just call `connection.end()` and the\nconnection will return to the pool, ready to be used again by someone else.\n\n```js\nvar mysql = require('mysql');\nvar pool = mysql.createPool(...);\n\npool.getConnection(function(err, connection) {\n // Use the connection\n connection.query( 'SELECT something FROM sometable', function(err, rows) {\n // And done with the connection.\n connection.end();\n\n // Don't use the connection here, it has been returned to the pool.\n });\n});\n```\n\nIf you would like to close the connection and remove it from the pool, use\n`connection.destroy()` instead. The pool will create a new connection the next\ntime one is needed.\n\nConnections are lazily created by the pool. If you configure the pool to allow\nup to 100 connections, but only ever use 5 simultaneously, only 5 connections\nwill be made. Connections are also cycled round-robin style, with connections\nbeing taken from the top of the pool and returning to the bottom.\n\n## Pool options\n\nPools accept all the same options as a connection. When creating a new\nconnection, the options are simply passed to the connection constructor. In\naddition to those options pools accept a few extras:\n\n* `createConnection`: The function to use to create the connection. (Default:\n `mysql.createConnection`)\n* `waitForConnections`: Determines the pool's action when no connections are\n available and the limit has been reached. If `true`, the pool will queue the\n connection request and call it when one becomes available. If `false`, the\n pool will immediately call back with an error. (Default: `true`)\n* `connectionLimit`: The maximum number of connections to create at once.\n (Default: `10`)\n\n## Switching users / altering connection state\n\nMySQL offers a changeUser command that allows you to alter the current user and\nother aspects of the connection without shutting down the underlying socket:\n\n```js\nconnection.changeUser({user : 'john'}, function(err) {\n if (err) throw err;\n});\n```\n\nThe available options for this feature are:\n\n* `user`: The name of the new user (defaults to the previous one).\n* `password`: The password of the new user (defaults to the previous one).\n* `charset`: The new charset (defaults to the previous one).\n* `database`: The new database (defaults to the previous one).\n\nA sometimes useful side effect of this functionality is that this function also\nresets any connection state (variables, transactions, etc.).\n\nErrors encountered during this operation are treated as fatal connection errors\nby this module.\n\n## Server disconnects\n\nYou may lose the connection to a MySQL server due to network problems, the\nserver timing you out, or the server crashing. All of these events are\nconsidered fatal errors, and will have the `err.code =\n'PROTOCOL_CONNECTION_LOST'`. See the [Error Handling](#error-handling) section\nfor more information.\n\nThe best way to handle such unexpected disconnects is shown below:\n\n```js\nfunction handleDisconnect(connection) {\n connection.on('error', function(err) {\n if (!err.fatal) {\n return;\n }\n\n if (err.code !== 'PROTOCOL_CONNECTION_LOST') {\n throw err;\n }\n\n console.log('Re-connecting lost connection: ' + err.stack);\n\n connection = mysql.createConnection(connection.config);\n handleDisconnect(connection);\n connection.connect();\n });\n}\n\nhandleDisconnect(connection);\n```\n\nAs you can see in the example above, re-connecting a connection is done by\nestablishing a new connection. Once terminated, an existing connection object\ncannot be re-connected by design.\n\nWith Pool, disconnected connections will be removed from the pool freeing up\nspace for a new connection to be created on the next getConnection call.\n\n## Escaping query values\n\nIn order to avoid SQL Injection attacks, you should always escape any user\nprovided data before using it inside a SQL query. You can do so using the\n`connection.escape()` method:\n\n```js\nvar userId = 'some user provided value';\nvar sql = 'SELECT * FROM users WHERE id = ' + connection.escape(userId);\nconnection.query(sql, function(err, results) {\n // ...\n});\n```\n\nAlternatively, you can use `?` characters as placeholders for values you would\nlike to have escaped like this:\n\n```js\nconnection.query('SELECT * FROM users WHERE id = ?', [userId], function(err, results) {\n // ...\n});\n```\n\nThis looks similar to prepared statements in MySQL, however it really just uses\nthe same `connection.escape()` method internally.\n\nDifferent value types are escaped differently, here is how:\n\n* Numbers are left untouched\n* Booleans are converted to `true` / `false` strings\n* Date objects are converted to `'YYYY-mm-dd HH:ii:ss'` strings\n* Buffers are converted to hex strings, e.g. `X'0fa5'`\n* Strings are safely escaped\n* Arrays are turned into list, e.g. `['a', 'b']` turns into `'a', 'b'`\n* Nested arrays are turned into grouped lists (for bulk inserts), e.g. `[['a',\n 'b'], ['c', 'd']]` turns into `('a', 'b'), ('c', 'd')`\n* Objects are turned into `key = 'val'` pairs. Nested objects are cast to\n strings.\n* `undefined` / `null` are converted to `NULL`\n* `NaN` / `Infinity` are left as-is. MySQL does not support these, and trying\n to insert them as values will trigger MySQL errors until they implement\n support.\n\nIf you paid attention, you may have noticed that this escaping allows you\nto do neat things like this:\n\n```js\nvar post = {id: 1, title: 'Hello MySQL'};\nvar query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {\n // Neat!\n});\nconsole.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'\n\n```\n\nIf you feel the need to escape queries by yourself, you can also use the escaping\nfunction directly:\n\n```js\nvar query = \"SELECT * FROM posts WHERE title=\" + mysql.escape(\"Hello MySQL\");\n\nconsole.log(query); // SELECT * FROM posts WHERE title='Hello MySQL'\n```\n\n## Escaping query identifiers\n\nIf you can't trust an SQL identifier (database / table / column name) because it is\nprovided by a user, you should escape it with `mysql.escapeId(identifier)` like this:\n\n```js\nvar sorter = 'date';\nvar query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId(sorter);\n\nconsole.log(query); // SELECT * FROM posts ORDER BY `date`\n```\n\nIt also supports adding qualified identifiers. It will escape both parts.\n\n```js\nvar sorter = 'date';\nvar query = 'SELECT * FROM posts ORDER BY ' + mysql.escapeId('posts.' + sorter);\n\nconsole.log(query); // SELECT * FROM posts ORDER BY `posts`.`date`\n```\n\nAlternatively, you can use `??` characters as placeholders for identifiers you would\nlike to have escaped like this:\n\n```js\nconnection.query('SELECT * FROM ?? WHERE id = ?', ['users', userId], function(err, results) {\n // ...\n});\n```\n**Please note that this last character sequence is experimental and syntax might change**\n\nWhen you pass an Object to `.escape()` or `.query()`, `.escapeId()` is used to avoid SQL injection in object keys.\n\n### Custom format\n\nIf you prefer to have another type of query escape format, there's a connection configuration option you can use to define a custom format function. You can access the connection object if you want to use the built-in `.escape()` or any other connection function.\n\nHere's an example of how to implement another format:\n\n```js\nconnection.config.queryFormat = function (query, values) {\n if (!values) return query;\n return query.replace(/\\:(\\w+)/g, function (txt, key) {\n if (values.hasOwnProperty(key)) {\n return this.escape(values[key]);\n }\n return txt;\n }.bind(this));\n};\n\nconnection.query(\"UPDATE posts SET title = :title\", { title: \"Hello MySQL\" });\n```\n\n## Getting the id of an inserted row\n\nIf you are inserting a row into a table with an auto increment primary key, you\ncan retrieve the insert id like this:\n\n```js\nconnection.query('INSERT INTO posts SET ?', {title: 'test'}, function(err, result) {\n if (err) throw err;\n\n console.log(result.insertId);\n});\n```\n\nWhen dealing with big numbers (above JavaScript Number precision limit), you should\nconsider enabling `supportBigNumbers` option to be able to read the insert id as a\nstring, otherwise it will throw.\n\nThis option is also required when fetching big numbers from the database, otherwise\nyou will get values rounded to hundreds or thousands due to the precision limit.\n\n## Executing queries in parallel\n\nThe MySQL protocol is sequential, this means that you need multiple connections\nto execute queries in parallel. You can use a Pool to manage connections, one\nsimple approach is to create one connection per incoming http request.\n\n## Streaming query rows\n\nSometimes you may want to select large quantities of rows and process each of\nthem as they are received. This can be done like this:\n\n```js\nvar query = connection.query('SELECT * FROM posts');\nquery\n .on('error', function(err) {\n // Handle error, an 'end' event will be emitted after this as well\n })\n .on('fields', function(fields) {\n // the field packets for the rows to follow\n })\n .on('result', function(row) {\n // Pausing the connnection is useful if your processing involves I/O\n connection.pause();\n\n processRow(row, function() {\n connection.resume();\n });\n })\n .on('end', function() {\n // all rows have been received\n });\n```\n\nPlease note a few things about the example above:\n\n* Usually you will want to receive a certain amount of rows before starting to\n throttle the connection using `pause()`. This number will depend on the\n amount and size of your rows.\n* `pause()` / `resume()` operate on the underlying socket and parser. You are\n guaranteed that no more `'result'` events will fire after calling `pause()`.\n* You MUST NOT provide a callback to the `query()` method when streaming rows.\n* The `'result'` event will fire for both rows as well as OK packets\n confirming the success of a INSERT/UPDATE query.\n\nAdditionally you may be interested to know that it is currently not possible to\nstream individual row columns, they will always be buffered up entirely. If you\nhave a good use case for streaming large fields to and from MySQL, I'd love to\nget your thoughts and contributions on this.\n\n### Piping results with [Streams2](http://blog.nodejs.org/2012/12/20/streams2/) (Node v0.10+)\n\nThe query object provides a convenience method `.stream([options])` that wraps\nquery events into a [Readable](http://nodejs.org/api/stream.html#stream_class_stream_readable)\nStreams2 object. This stream can easily be piped downstream and provides\nautomatic pause/resume, based on downstream congestion and the optional\n`highWaterMark`. The `objectMode` parameter of the stream is set to `true` by\ndefault.\n\nFor example, piping query results into another stream (with a max buffer of 5\nobjects) is simply:\n\n```js\nconnection.query('SELECT * FROM posts')\n .stream({highWaterMark: 5})\n .pipe(...);\n```\n\n## Multiple statement queries\n\nSupport for multiple statements is disabled for security reasons (it allows for\nSQL injection attacks if values are not properly escaped). To use this feature\nyou have to enable it for your connection:\n\n```js\nvar connection = mysql.createConnection({multipleStatements: true});\n```\n\nOnce enabled, you can execute multiple statement queries like any other query:\n\n```js\nconnection.query('SELECT 1; SELECT 2', function(err, results) {\n if (err) throw err;\n\n // `results` is an array with one element for every statement in the query:\n console.log(results[0]); // [{1: 1}]\n console.log(results[1]); // [{2: 2}]\n});\n```\n\nAdditionally you can also stream the results of multiple statement queries:\n\n```js\nvar query = connection.query('SELECT 1; SELECT 2');\n\nquery\n .on('fields', function(fields, index) {\n // the fields for the result rows that follow\n })\n .on('result', function(row, index) {\n // index refers to the statement this result belongs to (starts at 0)\n });\n```\n\nIf one of the statements in your query causes an error, the resulting Error\nobject contains a `err.index` property which tells you which statement caused\nit. MySQL will also stop executing any remaining statements when an error\noccurs.\n\nPlease note that the interface for streaming multiple statement queries is\nexperimental and I am looking forward to feedback on it.\n\n## Stored procedures\n\nYou can call stored procedures from your queries as with any other mysql driver.\nIf the stored procedure produces several result sets, they are exposed to you\nthe same way as the results for multiple statement queries.\n\n## Joins with overlapping column names\n\nWhen executing joins, you are likely to get result sets with overlapping column\nnames.\n\nBy default, node-mysql will overwrite colliding column names in the\norder the columns are received from MySQL, causing some of the received values\nto be unavailable.\n\nHowever, you can also specify that you want your columns to be nested below\nthe table name like this:\n\n```js\nvar options = {sql: '...', nestTables: true};\nconnection.query(options, function(err, results) {\n /* results will be an array like this now:\n [{\n table1: {\n fieldA: '...',\n fieldB: '...',\n },\n table2: {\n fieldA: '...',\n fieldB: '...',\n },\n }, ...]\n */\n});\n```\n\nOr use a string separator to have your results merged.\n\n```js\nvar options = {sql: '...', nestTables: '_'};\nconnection.query(options, function(err, results) {\n /* results will be an array like this now:\n [{\n table1_fieldA: '...',\n table1_fieldB: '...',\n table2_fieldA: '...',\n table2_fieldB: '...'\n }, ...]\n */\n});\n```\n\n## Error handling\n\nThis module comes with a consistent approach to error handling that you should\nreview carefully in order to write solid applications.\n\nAll errors created by this module are instances of the JavaScript [Error][]\nobject. Additionally they come with two properties:\n\n* `err.code`: Either a [MySQL server error][] (e.g.\n `'ER_ACCESS_DENIED_ERROR'`), a node.js error (e.g. `'ECONNREFUSED'`) or an\n internal error (e.g. `'PROTOCOL_CONNECTION_LOST'`).\n* `err.fatal`: Boolean, indicating if this error is terminal to the connection\n object.\n\n[Error]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error\n[MySQL server error]: http://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html\n\nFatal errors are propagated to *all* pending callbacks. In the example below, a\nfatal error is triggered by trying to connect to an invalid port. Therefore the\nerror object is propagated to both pending callbacks:\n\n```js\nvar connection = require('mysql').createConnection({\n port: 84943, // WRONG PORT\n});\n\nconnection.connect(function(err) {\n console.log(err.code); // 'ECONNREFUSED'\n console.log(err.fatal); // true\n});\n\nconnection.query('SELECT 1', function(err) {\n console.log(err.code); // 'ECONNREFUSED'\n console.log(err.fatal); // true\n});\n```\n\nNormal errors however are only delegated to the callback they belong to. So in\nthe example below, only the first callback receives an error, the second query\nworks as expected:\n\n```js\nconnection.query('USE name_of_db_that_does_not_exist', function(err, rows) {\n console.log(err.code); // 'ER_BAD_DB_ERROR'\n});\n\nconnection.query('SELECT 1', function(err, rows) {\n console.log(err); // null\n console.log(rows.length); // 1\n});\n```\n\nLast but not least: If a fatal errors occurs and there are no pending\ncallbacks, or a normal error occurs which has no callback belonging to it, the\nerror is emitted as an `'error'` event on the connection object. This is\ndemonstrated in the example below:\n\n```js\nconnection.on('error', function(err) {\n console.log(err.code); // 'ER_BAD_DB_ERROR'\n});\n\nconnection.query('USE name_of_db_that_does_not_exist');\n```\n\nNote: `'error'` are special in node. If they occur without an attached\nlistener, a stack trace is printed and your process is killed.\n\n**tl;dr:** This module does not want you to deal with silent failures. You\nshould always provide callbacks to your method calls. If you want to ignore\nthis advice and suppress unhandled errors, you can do this:\n\n```js\n// I am Chuck Norris:\nconnection.on('error', function() {});\n```\n\n## Exception Safety\n\nThis module is exception safe. That means you can continue to use it, even if\none of your callback functions throws an error which you're catching using\n'uncaughtException' or a domain.\n\n## Type casting\n\nFor your convenience, this driver will cast mysql types into native JavaScript\ntypes by default. The following mappings exist:\n\n### Number\n\n* TINYINT\n* SMALLINT\n* INT\n* MEDIUMINT\n* YEAR\n* FLOAT\n* DOUBLE\n\n### Date\n\n* TIMESTAMP\n* DATE\n* DATETIME\n\n### Buffer\n\n* TINYBLOB\n* MEDIUMBLOB\n* LONGBLOB\n* BLOB\n* BINARY\n* VARBINARY\n* BIT (last byte will be filled with 0 bits as necessary)\n\n### String\n\n* CHAR\n* VARCHAR\n* TINYTEXT\n* MEDIUMTEXT\n* LONGTEXT\n* TEXT\n* ENUM\n* SET\n* DECIMAL (may exceed float precision)\n* BIGINT (may exceed float precision)\n* TIME (could be mapped to Date, but what date would be set?)\n* GEOMETRY (never used those, get in touch if you do)\n\nIt is not recommended (and may go away / change in the future) to disable type\ncasting, but you can currently do so on either the connection:\n\n```js\nvar connection = require('mysql').createConnection({typeCast: false});\n```\n\nOr on the query level:\n\n```js\nvar options = {sql: '...', typeCast: false};\nvar query = connection.query(options, function(err, results) {\n\n}):\n```\n\nYou can also pass a function and handle type casting yourself. You're given some\ncolumn information like database, table and name and also type and length. If you\njust want to apply a custom type casting to a specific type you can do it and then\nfallback to the default. Here's an example of converting `TINYINT(1)` to boolean:\n\n```js\nconnection.query({\n sql: '...',\n typeCast: function (field, next) {\n if (field.type == 'TINY' && field.length == 1) {\n return (field.string() == '1'); // 1 = true, 0 = false\n }\n return next();\n }\n})\n```\n\nIf you need a buffer there's also a `.buffer()` function and also a `.geometry()` one\nboth used by the default type cast that you can use.\n\n## Connection Flags\n\nIf, for any reason, you would like to change the default connection flags, you\ncan use the connection option `flags`. Pass a string with a comma separated list\nof items to add to the default flags. If you don't want a default flag to be used\nprepend the flag with a minus sign. To add a flag that is not in the default list, don't prepend it with a plus sign, just write the flag name (case insensitive).\n\n**Please note that some available flags that are not default are still not supported\n(e.g.: SSL, Compression). Use at your own risk.**\n\n### Example\n\nThe next example blacklists FOUND_ROWS flag from default connection flags.\n\n```js\nvar connection = mysql.createConnection(\"mysql://localhost/test?flags=-FOUND_ROWS\")\n```\n\n### Default Flags\n\n- LONG_PASSWORD\n- FOUND_ROWS\n- LONG_FLAG\n- CONNECT_WITH_DB\n- ODBC\n- LOCAL_FILES\n- IGNORE_SPACE\n- PROTOCOL_41\n- IGNORE_SIGPIPE\n- TRANSACTIONS\n- RESERVED\n- SECURE_CONNECTION\n- MULTI_RESULTS\n- MULTI_STATEMENTS (used if `multipleStatements` option is activated)\n\n### Other Available Flags\n\n- NO_SCHEMA\n- COMPRESS\n- INTERACTIVE\n- SSL\n- PS_MULTI_RESULTS\n- PLUGIN_AUTH\n- SSL_VERIFY_SERVER_CERT\n- REMEMBER_OPTIONS\n\n## Debugging and reporting problems\n\nIf you are running into problems, one thing that may help is enabling the\n`debug` mode for the connection:\n\n```js\nvar connection = mysql.createConnection({debug: true});\n```\n\nThis will print all incoming and outgoing packets on stdout. You can also restrict debugging to\npacket types by passing an array of types to debug:\n\n```js\nvar connection = mysql.createConnection({debug: ['ComQueryPacket', 'RowDataPacket']});\n```\n\nto restrict debugging to the query and data packets.\n\nIf that does not help, feel free to open a GitHub issue. A good GitHub issue\nwill have:\n\n* The minimal amount of code required to reproduce the problem (if possible)\n* As much debugging output and information about your environment (mysql\n version, node version, os, etc.) as you can gather.\n\n## Todo\n\n* Prepared statements\n* setTimeout() for Connection / Query\n* Support for encodings other than UTF-8 / ASCII\n* API support for transactions, similar to [php](http://www.php.net/manual/en/mysqli.quickstart.transactions.php)\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/felixge/node-mysql/issues" - }, - "_id": "mysql@2.0.0-alpha8", - "dist": { - "shasum": "9f59f210dad877455f6ea05ff42fb838ba45ff51" - }, - "_from": "mysql@", - "_resolved": "https://registry.npmjs.org/mysql/-/mysql-2.0.0-alpha8.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js b/nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js deleted file mode 100644 index 0f1e12b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/FakeServer.js +++ /dev/null @@ -1,149 +0,0 @@ -// An experimental fake MySQL server for tricky integration tests. Expanded -// as needed. - -var Net = require('net'); -var Packets = require('../lib/protocol/packets'); -var PacketWriter = require('../lib/protocol/PacketWriter'); -var Parser = require('../lib/protocol/Parser'); -var Auth = require('../lib/protocol/Auth'); -var EventEmitter = require('events').EventEmitter; -var Util = require('util'); - -module.exports = FakeServer; -Util.inherits(FakeServer, EventEmitter); -function FakeServer(options) { - EventEmitter.call(this); - - this._server = null; - this._connections = []; -} - -FakeServer.prototype.listen = function(port, cb) { - this._server = Net.createServer(this._handleConnection.bind(this)); - this._server.listen(port, cb); -}; - -FakeServer.prototype._handleConnection = function(socket) { - var connection = new FakeConnection(socket); - this.emit('connection', connection); - this._connections.push(connection); -}; - -FakeServer.prototype.destroy = function() { - this._server.close(); - this._connections.forEach(function(connection) { - connection.destroy(); - }); -}; - -Util.inherits(FakeConnection, EventEmitter); -function FakeConnection(socket) { - EventEmitter.call(this); - - this._socket = socket; - this._parser = new Parser({onPacket: this._parsePacket.bind(this)}); - - this._handshakeInitializationPacket = null; - this._clientAuthenticationPacket = null; - this._oldPasswordPacket = null; - this._handshakeOptions = {}; - - socket.on('data', this._handleData.bind(this)); -} - -FakeConnection.prototype.handshake = function(options) { - this._handshakeOptions = options || {}; - - this._handshakeInitializationPacket = new Packets.HandshakeInitializationPacket({ - scrambleBuff1 : new Buffer(8), - scrambleBuff2 : new Buffer(12), - serverCapabilities1 : 512, // only 1 flag, PROTOCOL_41 - protocol41 : true - }); - - this._sendPacket(this._handshakeInitializationPacket); -}; - -FakeConnection.prototype.deny = function(message, errno) { - this._sendPacket(new Packets.ErrorPacket({ - message: message, - errno: errno, - })); -}; - -FakeConnection.prototype._sendPacket = function(packet) { - var writer = new PacketWriter(); - packet.write(writer); - this._socket.write(writer.toBuffer(this._parser)); -}; - -FakeConnection.prototype._handleData = function(buffer) { - this._parser.write(buffer); -}; - -FakeConnection.prototype._parsePacket = function(header) { - var Packet = this._determinePacket(header); - var packet = new Packet(); - - packet.parse(this._parser); - - switch (Packet) { - case Packets.ClientAuthenticationPacket: - this._clientAuthenticationPacket = packet; - - if (this._handshakeOptions.oldPassword) { - this._sendPacket(new Packets.UseOldPasswordPacket()); - } else { - if (this._handshakeOptions.user || this._handshakeOptions.password) { - throw new Error('not implemented'); - } - - this._sendPacket(new Packets.OkPacket()); - this._parser.resetPacketNumber(); - } - break; - case Packets.OldPasswordPacket: - this._oldPasswordPacket = packet; - - var expected = Auth.scramble323(this._handshakeInitializationPacket.scrambleBuff(), this._handshakeOptions.password); - var got = packet.scrambleBuff; - - var toString = function(buffer) { - return Array.prototype.slice.call(buffer).join(','); - }; - - if (toString(expected) === toString(got)) { - this._sendPacket(new Packets.OkPacket()); - } else { - this._sendPacket(new Packets.ErrorPacket()); - } - - this._parser.resetPacketNumber(); - break; - case Packets.ComQueryPacket: - this.emit('query', packet); - break; - default: - throw new Error('Unexpected packet: ' + Packet.name) - } -}; - -FakeConnection.prototype._determinePacket = function() { - if (!this._clientAuthenticationPacket) { - return Packets.ClientAuthenticationPacket; - } else if (this._handshakeOptions.oldPassword && !this._oldPasswordPacket) { - return Packets.OldPasswordPacket; - } - - var firstByte = this._parser.peak(); - switch (firstByte) { - case 0x03: return Packets.ComQueryPacket; - default: - throw new Error('Unknown packet, first byte: ' + firstByte); - break; - } -}; - -FakeConnection.prototype.destroy = function() { - this._socket.destroy(); -}; diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/common.js b/nodejs-mysql-tutorial/node_modules/mysql/test/common.js deleted file mode 100644 index 4984228..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/common.js +++ /dev/null @@ -1,65 +0,0 @@ -var common = exports; -var path = require('path'); -var _ = require('underscore'); -var FakeServer = require('./FakeServer'); - -common.lib = path.join(__dirname, '../lib'); -common.fixtures = path.join(__dirname, 'fixtures'); - -// Useful for triggering ECONNREFUSED errors on connect() -common.bogusPort = 47378; -// Useful for triggering ER_ACCESS_DENIED_ERROR errors on connect() -common.bogusPassword = 'INVALID PASSWORD'; - -// Used for simulating a fake mysql server -common.fakeServerPort = 32893; -// Used for simulating a fake mysql server -common.fakeServerSocket = __dirname + '/fake_server.sock'; - -common.testDatabase = process.env.MYSQL_DATABASE; - -var Mysql = require('../'); - -common.isTravis = function() { - return Boolean(process.env.CI); -}; - -common.createConnection = function(config) { - config = mergeTestConfig(config); - return Mysql.createConnection(config); -}; - -common.createPool = function(config) { - config = mergeTestConfig(config); - config.createConnection = common.createConnection; - return Mysql.createPool(config); -}; - -common.createFakeServer = function(options) { - return new FakeServer(_.extend({}, options)); -}; - -common.useTestDb = function(connection) { - var query = connection.query('CREATE DATABASE ' + common.testDatabase, function(err) { - if (err && err.code !== 'ER_DB_CREATE_EXISTS') throw err; - }); - - connection.query('USE ' + common.testDatabase); -} - -function mergeTestConfig(config) { - if (common.isTravis()) { - // see: http://about.travis-ci.org/docs/user/database-setup/ - config = _.extend({ - user: 'root' - }, config); - } else { - config = _.extend({ - host : process.env.MYSQL_HOST, - port : process.env.MYSQL_PORT, - user : process.env.MYSQL_USER, - password : process.env.MYSQL_PASSWORD - }, config); - } - return config; -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv b/nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv deleted file mode 100644 index 6fac03d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/fixtures/data.csv +++ /dev/null @@ -1,3 +0,0 @@ -1,Hello World -2,This is a test -3,For loading data from a file diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js deleted file mode 100644 index 83d2b6e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bad-credentials.js +++ /dev/null @@ -1,27 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({password: 'INVALID PASSWORD'}); -var assert = require('assert'); - -var endErr; -connection.on('end', function(err) { - assert.equal(endErr, undefined); - endErr = err; -}); - -var connectErr; -connection.connect(function(err) { - assert.equal(connectErr, undefined); - connectErr = err; - - connection.end(); -}); - -process.on('exit', function() { - if (process.env.NO_GRANT == '1' && typeof endErr == 'undefined') return; - - assert.equal(endErr.code, 'ER_ACCESS_DENIED_ERROR'); - assert.ok(/access denied/i.test(endErr.message)); - - assert.strictEqual(endErr, connectErr); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js deleted file mode 100644 index eddd81e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-bulk-insert.js +++ /dev/null @@ -1,37 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); -var _ = require('underscore'); - -common.useTestDb(connection); - -var table = 'insert_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var result; -var items = []; -var itemsFoundInTable = []; - -for(var i = 0; i < 100; i++) - items[i] = ['test '+i]; - -connection.query('INSERT INTO ' + table + ' (title) VALUES ? ', [items], function(err, _result) { - if (err) throw err; - - result = _result; - - connection.query('SELECT title FROM '+table+';', [], function(err, _items) { - itemsFoundInTable = _.map(_items, function(row) { return [row.title]; }); - connection.end(); - }); -}); - -process.on('exit', function() { - assert.deepEqual(items, itemsFoundInTable); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js deleted file mode 100644 index 17d893d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-callback-errors-are-not-caught.js +++ /dev/null @@ -1,20 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var err = new Error('uncaught exception'); - -connection.connect(function() { - throw err; -}); - -var caughtErr; -process.on('uncaughtException', function(err) { - caughtErr = err; - process.exit(0); -}); - -process.on('exit', function() { - assert.strictEqual(caughtErr, err); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js deleted file mode 100644 index 9bd0549..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user-fatal-error.js +++ /dev/null @@ -1,24 +0,0 @@ -// This test verifies that changeUser errors are treated as fatal errors. The -// rationale for that is that a failure to execute a changeUser sequence may -// cause unexpected behavior for queries that were enqueued under the -// assumption of changeUser to succeed. - -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -if (common.isTravis()) { - return console.log('skipping - travis mysql does not support this test'); -} - -var err; -connection.changeUser({user: 'does-not-exist'}, function(_err) { - err = _err; - connection.end(); -}); - -process.on('exit', function() { - if (process.env.NO_GRANT == '1' && err === null) return; - assert.equal(err.code, 'ER_ACCESS_DENIED_ERROR'); - assert.equal(err.fatal, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js deleted file mode 100644 index b49ef41..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-change-user.js +++ /dev/null @@ -1,36 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -if (common.isTravis()) { - return console.log('skipping - travis mysql does not support this test'); -} - -connection.query('CREATE DATABASE ' + common.testDatabase, function(err) { - if (err && err.code !== 'ER_DB_CREATE_EXISTS') throw err; -}); - -var initialDb; -connection.query('select database() as db', function(err, results) { - if (err) throw err; - - initialDb = results[0].db; - assert.equal(connection.config.database, null); -}); - -connection.changeUser({database: common.testDatabase}); - -var finalDb; -connection.query('select database() as db', function(err, results){ - if (err) throw err; - - finalDb = results[0].db; - assert.equal(connection.config.database, finalDb); -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(initialDb, null); - assert.equal(finalDb, common.testDatabase); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js deleted file mode 100644 index 3029a7f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags-affected-rows.js +++ /dev/null @@ -1,39 +0,0 @@ -// Based on: -// https://github.com/ichernev/node-mysql/blob/on-duplicate-key-update/test/integration/connection/test-on-duplicate-key-update.js -// (but with CLIENT_FOUND_ROWS connection flag blacklisted) - -var common = require('../../common'); -var connection = common.createConnection({ flags: "-FOUND_ROWS" }); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'on_duplicate_key_test'; -connection.query('DROP TABLE IF EXISTS `' + table + '`'); -connection.query([ - 'CREATE TABLE `' + table + '` (', - '`a` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`b` int(11),', - '`c` int(11),', - 'PRIMARY KEY (`a`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('INSERT INTO `' + table + '` SET ?', {a: 1, b: 1, c: 1}); - -connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = 1', function(err, info) { - assert.strictEqual(null, err); - assert.strictEqual(0, info.affectedRows, 'both primary key and updated key are the same so nothing is affected (expected 0, got ' + info.affectedRows + ' affectedRows)'); -}); - -connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (2, 3, 4) ON DUPLICATE KEY UPDATE c = 1', function(err, info) { - assert.strictEqual(null, err); - assert.strictEqual(1, info.affectedRows, 'primary key differs, so new row is inserted (expected 1, got ' + info.affectedRows + ' affectedRows)'); -}); - -connection.query('INSERT INTO `' + table + '` (a, b, c) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = 2', function(err, info) { - assert.strictEqual(null, err); - assert.strictEqual(2, info.affectedRows, 'primary key is the same, row is updated (expected 2, got ' + info.affectedRows + ' affectedRows)'); -}); - -connection.end(); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js deleted file mode 100644 index 4a2d6ea..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-config-flags.js +++ /dev/null @@ -1,53 +0,0 @@ -var ConnectionConfig = require('../../../lib/ConnectionConfig'); -var ClientConstants = require('../../../lib/protocol/constants/client'); -var assert = require('assert'); - -var testFlags = [{ - 'default' : [ '' ], - 'user' : 'LONG_PASSWORD', - 'expected': ClientConstants.CLIENT_LONG_PASSWORD -}, { - 'default' : [ '' ], - 'user' : '-LONG_PASSWORD', - 'expected': 0x0 -}, { - 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], - 'user' : '-LONG_PASSWORD', - 'expected': ClientConstants.CLIENT_FOUND_ROWS -}, { - 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], - 'user' : '-FOUND_ROWS', - 'expected': ClientConstants.CLIENT_LONG_PASSWORD -}, { - 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], - 'user' : '-LONG_FLAG', - 'expected': ClientConstants.CLIENT_LONG_PASSWORD | - ClientConstants.CLIENT_FOUND_ROWS -}, { - 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], - 'user' : 'LONG_FLAG', - 'expected': ClientConstants.CLIENT_LONG_PASSWORD | - ClientConstants.CLIENT_FOUND_ROWS | - ClientConstants.CLIENT_LONG_FLAG -}, { - 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], - 'user' : 'UNDEFINED_CONSTANT', - 'expected': ClientConstants.CLIENT_LONG_PASSWORD | - ClientConstants.CLIENT_FOUND_ROWS -}, { - 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], - 'user' : '-UNDEFINED_CONSTANT', - 'expected': ClientConstants.CLIENT_LONG_PASSWORD | - ClientConstants.CLIENT_FOUND_ROWS -}, { - 'default' : [ 'LONG_PASSWORD', 'FOUND_ROWS' ], - 'user' : '-UNDEFINED_CONSTANT,, -found_ROWS', - 'expected': ClientConstants.CLIENT_LONG_PASSWORD -}]; - -for (var i = 0; i < testFlags.length; i++) { - // console.log("expected: %s got: %s", testFlags[i]['expected'], - // ConnectionConfig.mergeFlags(testFlags[i]['default'], testFlags[i]['user'])); - assert.strictEqual(testFlags[i]['expected'], - ConnectionConfig.mergeFlags(testFlags[i]['default'], testFlags[i]['user'])); -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js deleted file mode 100644 index 5d80fda..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-connection-destroy.js +++ /dev/null @@ -1,9 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.connect(function(err) { - if (err) throw err; - - connection.destroy(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js deleted file mode 100644 index 6309433..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-query-format.js +++ /dev/null @@ -1,18 +0,0 @@ -var Mysql = require('../../../'); -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.config.queryFormat = function (query, values, tz) { - if (!values) return query; - return query.replace(/\:(\w+)/g, function (txt, key) { - if (values.hasOwnProperty(key)) { - return this.escape(values[key]); - } - return txt; - }.bind(this)); -}; - -assert.equal(connection.format("SELECT :a1, :a2", { a1: 1, a2: 'two' }), "SELECT 1, 'two'"); -assert.equal(connection.format("SELECT :a1", []), "SELECT :a1"); -assert.equal(connection.format("SELECT :a1"), "SELECT :a1"); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js deleted file mode 100644 index bf82198..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-custom-typecast.js +++ /dev/null @@ -1,46 +0,0 @@ -var Mysql = require('../../../'); -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'custom_typecast_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '`(', - '`id` int(5),', - '`val` tinyint(1)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var results; - -connection.query("INSERT INTO " + table + " VALUES (1, 0), (2, 1), (3, NULL)"); -connection.query({ - sql: "SELECT * FROM " + table, - typeCast: function (field, next) { - if (field.type != 'TINY') { - return next(); - } - - var val = field.string(); - - if (val === null) { - return null; - } - - return (Number(val) > 0); - } -}, function (err, _results) { - if (err) throw err; - - results = _results; -}); -connection.end(); - -process.on('exit', function() { - assert.equal(results.length, 3); - assert.deepEqual(results[0], {id: 1, val: false}); - assert.deepEqual(results[1], {id: 2, val: true}); - assert.deepEqual(results[2], {id: 3, val: null}); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js deleted file mode 100644 index 5832695..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-destroy-while-streaming-rows.js +++ /dev/null @@ -1,45 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'stream_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var rowCount = 10; -for (var i = 1; i <= rowCount; i++) { - var row = { - id: i, - title: 'Row #' + i, - }; - - connection.query('INSERT INTO ' + table + ' SET ?', row); -} - -var destroyed = false; -var hadEnd = false; -var query = connection.query('SELECT * FROM ' + table); - -query - .on('result', function(row) { - assert.equal(destroyed, false); - - destroyed = true; - connection.destroy(); - }) - .on('end', function() { - hadEnd = true; - }); - -connection.end(); - -process.on('exit', function() { - assert.strictEqual(hadEnd, false); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js deleted file mode 100644 index 99c51ca..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-double-connect.js +++ /dev/null @@ -1,24 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var didConnect = false; -connection.connect(function(err) { - if (err) throw err; - - assert.equal(didConnect, false); - didConnect = true; -}); - -var err; -connection.connect(function(_err) { - err = _err; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(didConnect, true); - assert.equal(err.fatal, false); - assert.equal(err.code, 'PROTOCOL_ENQUEUE_HANDSHAKE_TWICE'); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js deleted file mode 100644 index b075abf..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-drain-event.js +++ /dev/null @@ -1,20 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.connect(); - -var got_drain = false; - -connection.on('drain', function() { - got_drain = true; -}); - -connection.query("SELECT 1", function(err) { - assert.equal(got_drain, false); - assert.ok(!err); - process.nextTick(function() { - assert.equal(got_drain, true); - connection.end(); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js deleted file mode 100644 index 021022c..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-end-callback.js +++ /dev/null @@ -1,27 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.connect(); - -var gotEnd = false; -connection.on('end', function(err) { - assert.equal(gotEnd, false); - assert.ok(!err); - - gotEnd = true; -}); - -var gotCallback = false; -connection.end(function(err) { - if (err) throw err; - - assert.equal(gotCallback, false); - gotCallback = true; -}); - -process.on('exit', function() { - assert.equal(gotCallback, true); - assert.equal(gotEnd, true); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js deleted file mode 100644 index 743bd53..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-escape-id.js +++ /dev/null @@ -1,7 +0,0 @@ -var SqlString = require('../../../lib/protocol/SqlString'); -var assert = require('assert'); - -assert.equal('`id`', SqlString.escapeId('id')); -assert.equal('`i``d`', SqlString.escapeId('i`d')); -assert.equal('`id1`.`id2`', SqlString.escapeId('id1.id2')); -assert.equal('`id``1`.`i``d2`', SqlString.escapeId('id`1.i`d2')); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js deleted file mode 100644 index dd78684..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-exception-safety.js +++ /dev/null @@ -1,66 +0,0 @@ -// This test covers all event / callback interfaces offered by node-mysql and -// throws an exception in them. Exception safety means that each of those -// exceptions can be caught by an 'uncaughtException' / Domain handler without -// the connection instance ending up in a bad state where it doesn't work -// properly or doesn't execute the next sequence anymore. - -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - - -var errors = []; -process.on('uncaughtException', function(err) { - console.log(err.stack); - errors.push(err); -}); - -// Normal callback -connection.connect(function(err) { - throw err || new Error('1'); -}); - -// Normal callback (same code path as connect, but in here should that -// implementation detail change at some point). -connection.query('SELECT 1', function(err) { - throw err || new Error('2'); -}); - -// Row streaming events -connection.query('SELECT 1') - .on('fields', function() { - throw new Error('3'); - }) - .on('result', function() { - throw new Error('4'); - }); - -// Normal callback with error -connection.query('INVALID SQL', function(err) { - assert.equal(err.code, 'ER_PARSE_ERROR'); - - throw new Error('5'); -}); - -// Row streaming 'result' event triggered by Ok Packet (special code path) -connection.query('USE ' + common.testDatabase) - .on('result', function() { - throw new Error('6'); - }); - -// Normal callback (same code path as connect, but in here should that -// implementation detail change at some point). -connection.end(function(err) { - throw err || new Error('7'); -}); - -process.on('exit', function() { - process.removeAllListeners(); - - var expectedErrors = 7; - for (var i = 0; i < expectedErrors - 1; i++) { - var error = errors[i]; - assert.equal(error.message, String(i + 1)); - assert.equal(error.code, undefined); - } -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js deleted file mode 100644 index 88d3a2e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-going-to-all-callbacks.js +++ /dev/null @@ -1,25 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({password: common.bogusPassword}); -var assert = require('assert'); - -var errors = {}; - -connection.connect(function(err) { - assert.equal(errors.a, undefined); - errors.a = err; -}); - -connection.query('SELECT 1', function(err) { - assert.equal(errors.b, undefined); - errors.b = err; - - connection.end(); -}); - -process.on('exit', function() { - if (process.env.NO_GRANT == '1' && errors.a === null) return; - - assert.equal(errors.a.code, 'ER_ACCESS_DENIED_ERROR'); - assert.equal(errors.a.fatal, true); - assert.strictEqual(errors.a, errors.b); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js deleted file mode 100644 index 1c7c88f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-auth-error-without-handlers.js +++ /dev/null @@ -1,20 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({password: common.bogusPassword}); -var assert = require('assert'); - -connection.connect(); -connection.query('SELECT 1'); - -var err; -connection.on('error', function(_err) { - assert.equal(err, undefined); - err = _err; -}); -connection.end(); - -process.on('exit', function() { - if (process.env.NO_GRANT == '1' && typeof err == 'undefined') return; - - assert.equal(err.code, 'ER_ACCESS_DENIED_ERROR'); - assert.equal(err.fatal, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js deleted file mode 100644 index 20c6e27..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-going-to-all-callbacks.js +++ /dev/null @@ -1,21 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({port: common.bogusPort}); -var assert = require('assert'); - -var errors = {}; - -connection.connect(function(err) { - assert.equal(errors.a, undefined); - errors.a = err; -}); - -connection.query('SELECT 1', function(err) { - assert.equal(errors.b, undefined); - errors.b = err; -}); - -process.on('exit', function() { - assert.equal(errors.a.code, 'ECONNREFUSED'); - assert.equal(errors.a.fatal, true); - assert.strictEqual(errors.a, errors.b); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js deleted file mode 100644 index 6575be6..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-network-error-without-handlers.js +++ /dev/null @@ -1,17 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({port: common.bogusPort}); -var assert = require('assert'); - -connection.connect(); -connection.query('SELECT 1'); - -var err; -connection.on('error', function(_err) { - assert.equal(err, undefined); - err = _err; -}); - -process.on('exit', function() { - assert.equal(err.code, 'ECONNREFUSED'); - assert.equal(err.fatal, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js deleted file mode 100644 index 3c26147..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-fatal-query-error-without-callback.js +++ /dev/null @@ -1,19 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({port: common.bogusPort}); -var assert = require('assert'); - -connection.connect(); -var query = connection.query('SELECT 1'); - -var err; -query.on('error', function(_err) { - assert.equal(err, undefined); - err = _err; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(err.code, 'ECONNREFUSED'); - assert.equal(err.fatal, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js deleted file mode 100644 index f831628..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-host-denied-error.js +++ /dev/null @@ -1,26 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({port: common.fakeServerPort}); -var assert = require('assert'); - -var server = common.createFakeServer(); - -var connectErr; -server.listen(common.fakeServerPort, function(err) { - if (err) throw err; - - connection.connect(function(err) { - connectErr = err; - server.destroy(); - }); -}); - -server.on('connection', function(incomingConnection) { - var errno = 1130; // ER_HOST_NOT_PRIVILEGED - incomingConnection.deny('You suck.', errno); -}); - -process.on('exit', function() { - assert.equal(connectErr.code, 'ER_HOST_NOT_PRIVILEGED'); - assert.ok(/You suck/.test(connectErr.message)); - assert.equal(connectErr.fatal, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js deleted file mode 100644 index 5db2e9d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-implicit-connect.js +++ /dev/null @@ -1,16 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var rows = undefined; -connection.query('SELECT 1', function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - -process.on('exit', function() { - assert.deepEqual(rows, [{1: 1}]); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js deleted file mode 100644 index b00071e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-insert-results.js +++ /dev/null @@ -1,26 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'insert_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var result; -connection.query('INSERT INTO ' + table + ' SET ?', {title: 'test'}, function(err, _result) { - if (err) throw err; - - result = _result; -}); -connection.end(); - -process.on('exit', function() { - assert.strictEqual(result.insertId, 1); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js deleted file mode 100644 index 397819a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-load-data-infile.js +++ /dev/null @@ -1,55 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'load_data_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var path = common.fixtures + '/data.csv'; -var sql = - 'LOAD DATA LOCAL INFILE ? INTO TABLE ' + table + ' ' + - 'FIELDS TERMINATED BY ? (id, title)'; - -var ok; -connection.query(sql, [path, ','], function(err, _ok) { - if (err) throw err; - - ok = _ok; -}); - -var rows; -connection.query('SELECT * FROM ' + table, function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -// Try to load a file that does not exist to see if we handle this properly -var loadErr; -var loadResult; -var badPath = common.fixtures + '/does_not_exist.csv'; - -connection.query(sql, [badPath, ','], function(err, result) { - loadErr = err; - loadResult = result; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(ok.affectedRows, 3); - assert.equal(rows.length, 3); - assert.equal(rows[0].id, 1); - assert.equal(rows[0].title, 'Hello World'); - - assert.equal(loadErr.code, 'ENOENT'); - assert.equal(loadResult.affectedRows, 0); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js deleted file mode 100644 index 9b95598..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces-for-connection-errors.js +++ /dev/null @@ -1,12 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({port: common.bogusPort}); -var assert = require('assert'); - -var err; -connection.connect(function(_err) { - err = _err; -}); - -process.on('exit', function() { - assert.ok(err.stack.indexOf(__filename) > 0); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js deleted file mode 100644 index def47fc..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-long-stack-traces.js +++ /dev/null @@ -1,16 +0,0 @@ -// Experimental: https://github.com/felixge/node-mysql/issues/198 - -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var err; -connection.query('invalid sql', function(_err) { - err = _err; -}); - -connection.end(); - -process.on('exit', function() { - assert.ok(err.stack.indexOf(__filename) > 0); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js deleted file mode 100644 index b80817f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-streaming.js +++ /dev/null @@ -1,55 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({multipleStatements: true}); -var assert = require('assert'); - -var sql = [ - 'SELECT 1', - 'USE ' + common.testDatabase, - 'SELECT 2', - 'invalid sql', - 'SELECT 3', -].join('; '); - -var results = []; -var fields = []; -var hadErr = false; - -var query = connection.query(sql); -query - .on('error', function(err) { - assert.equal(hadErr, false); - hadErr = true; - - assert.equal(err.code, 'ER_PARSE_ERROR'); - assert.equal(err.index, 3); - }) - .on('fields', function(_fields, index) { - fields.push({fields: _fields, index: index}); - }) - .on('result', function(result, index) { - results.push({result: result, index: index}); - }); - -connection.end(); - -process.on('exit', function() { - assert.ok(hadErr); - - assert.equal(results.length, 3); - - assert.deepEqual(results[0].result, {1: 1}); - assert.equal(results[0].index, 0); - - assert.equal(results[1].result.constructor.name, 'OkPacket'); - assert.equal(results[1].index, 1); - - assert.deepEqual(results[2].result, {2: 2}); - assert.equal(results[2].index, 2); - - assert.equal(fields.length, 2); - assert.equal(fields[0].fields[0].name, '1'); - assert.equal(fields[1].fields[0].name, '2'); - - assert.equal(fields[0].index, 0); - assert.equal(fields[1].index, 2); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js deleted file mode 100644 index 11056cf..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements-with-error.js +++ /dev/null @@ -1,36 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({multipleStatements: true}); -var assert = require('assert'); - -var sql = [ - 'SELECT 1', - 'invalid sql', - 'SELECT 2', -].join('; '); - -var finishedQueryOne = false; -connection.query(sql, function(err, results, fields) { - assert.equal(finishedQueryOne, false); - finishedQueryOne = true; - - assert.equal(err.code, 'ER_PARSE_ERROR'); - assert.deepEqual(results, [[{1: 1}]]); - - assert.equal(fields.length, 1); - assert.equal(fields[0][0].name, '1'); -}); - -var finishedQueryTwo = false; -connection.query('SELECT 3', function(err, results) { - assert.equal(finishedQueryTwo, false); - finishedQueryTwo = true; - - assert.deepEqual(results, [{3: 3}]); -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(finishedQueryOne, true); - assert.equal(finishedQueryTwo, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js deleted file mode 100644 index f60d3e4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-multiple-statements.js +++ /dev/null @@ -1,31 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({multipleStatements: true}); -var assert = require('assert'); - -var sql = [ - 'SELECT 1', - 'USE ' + common.testDatabase, - 'SELECT 2', -].join('; '); - -var results; -var fields; -connection.query(sql, function(err, _results, _fields) { - if (err) throw err; - - results = _results; - fields = _fields; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(results.length, 3); - assert.deepEqual(results[0], [{1: 1}]); - assert.strictEqual(results[1].constructor.name, 'OkPacket'); - assert.deepEqual(results[2], [{2: 2}]); - - assert.equal(fields[0][0].name, '1'); - assert.equal(fields[1], undefined); - assert.equal(fields[2][0].name, '2'); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js deleted file mode 100644 index be6f3e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-nested-tables-query.js +++ /dev/null @@ -1,48 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'nested_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('INSERT INTO ' + table + ' SET ?', {title: 'test'}); - -var options1 = { - nestTables: true, - sql: 'SELECT * FROM ' + table -}; -var options2 = { - nestTables: '_', - sql: 'SELECT * FROM ' + table -}; -var rows1, rows2; - -connection.query(options1, function(err, _rows) { - if (err) throw err; - - rows1 = _rows; -}); -connection.query(options2, function(err, _rows) { - if (err) throw err; - - rows2 = _rows; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(rows1.length, 1); - assert.equal(rows1[0].nested_test.id, 1); - assert.equal(rows1[0].nested_test.title, 'test'); - assert.equal(rows2.length, 1); - assert.equal(rows2[0].nested_test_id, 1); - assert.equal(rows2[0].nested_test_title, 'test'); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js deleted file mode 100644 index 384559b..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-error-without-handler.js +++ /dev/null @@ -1,19 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.connect(); -connection.query('INVALID SQL'); - -var err; -connection.on('error', function(_err) { - assert.equal(err, undefined); - err = _err; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(err.code, 'ER_PARSE_ERROR'); - assert.equal(Boolean(err.fatal), false); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js deleted file mode 100644 index 414b391..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-normal-query-error-without-callback.js +++ /dev/null @@ -1,19 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.connect(); -var query = connection.query('INVALID SQL'); - -var err; -query.on('error', function(_err) { - assert.equal(err, undefined); - err = _err; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(err.code, 'ER_PARSE_ERROR'); - assert.equal(Boolean(err.fatal), false); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js deleted file mode 100644 index 3662510..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-old-password.js +++ /dev/null @@ -1,35 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({ - port : common.fakeServerPort, - password : 'oldpw', - insecureAuth : true, -}); -var assert = require('assert'); - -var server = common.createFakeServer(); - -var connected; -server.listen(common.fakeServerPort, function(err) { - if (err) throw err; - - connection.connect(function(err, result) { - if (err) throw err; - - connected = result; - - connection.destroy(); - server.destroy(); - }); -}); - -server.on('connection', function(incomingConnection) { - incomingConnection.handshake({ - user : connection.config.user, - password : connection.config.password, - oldPassword : true, - }); -}); - -process.on('exit', function() { - assert.equal(connected.fieldCount, 0); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js deleted file mode 100644 index 25c3135..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-ping.js +++ /dev/null @@ -1,15 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var pingErr; - -connection.ping(function(err) { - pingErr = err; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(pingErr, null); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js deleted file mode 100644 index fc5338d..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-multiple-selects.js +++ /dev/null @@ -1,40 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var procedureName = 'multipleSelectProcedure'; -var input0 = 1; -var input1 = 1000; -var fieldName0 = 'param0'; -var fieldName1 = 'param1'; -var result = undefined; - -connection.query([ - 'CREATE DEFINER=root@localhost PROCEDURE '+procedureName+'(IN '+fieldName0+' INT, IN '+fieldName1+' INT)', - 'BEGIN', - 'SELECT '+fieldName0+';', - 'SELECT '+fieldName1+';', - 'END' -].join('\n')); - -connection.query('CALL '+procedureName+'(?,?)', [input0,input1], function(err, _result) { - if (err) throw err; - - _result.pop(); // drop metadata - result = _result; -}); - -connection.query('DROP PROCEDURE '+procedureName); - -connection.end(); - -process.on('exit', function() { - var result0Expected = {}; - result0Expected[fieldName0] = input0; - var result1Expected = {}; - result1Expected[fieldName1] = input1; - - assert.deepEqual(result, [[result0Expected], [result1Expected]]); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js deleted file mode 100644 index 72ac750..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-procedure-with-single-select.js +++ /dev/null @@ -1,33 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var procedureName = 'singleSelectProcedure'; -var input = 1; -var fieldName = 'param'; -var result = undefined; - -connection.query([ - 'CREATE DEFINER=root@localhost PROCEDURE '+procedureName+'(IN '+fieldName+' INT)', - 'BEGIN', - 'SELECT '+fieldName+';', - 'END' -].join('\n')); - -connection.query('CALL '+procedureName+'(?)', [input], function(err, _result) { - if (err) throw err; - _result.pop(); // drop metadata - result = _result; -}); - -connection.query('DROP PROCEDURE '+procedureName); - -connection.end(); - -process.on('exit', function() { - var expected = {}; - expected[fieldName] = input; - assert.deepEqual(result, [[expected]]); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js deleted file mode 100644 index 22cb678..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-destroy.js +++ /dev/null @@ -1,17 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var err; -connection.connect(function() { - connection.destroy(); - - connection.query('SELECT 1', function(_err) { - err = _err; - }); -}); - -process.on('exit', function() { - assert.equal(err.fatal, false); - assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_DESTROY'); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js deleted file mode 100644 index 302d958..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end-without-callback.js +++ /dev/null @@ -1,23 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var didEnd = false; -connection.connect(); -connection.end(function(err) { - if (err) throw err; - - didEnd = true; -}); - -var err; -connection.on('error', function(_err) { - err = _err; -}); -connection.query('SELECT 1'); - -process.on('exit', function() { - assert.equal(didEnd, true); - assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_QUIT'); - assert.equal(err.fatal, false); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js deleted file mode 100644 index e907b48..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-after-end.js +++ /dev/null @@ -1,23 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var didEnd = false; -connection.connect(); -connection.end(function(err) { - if (err) throw err; - - didEnd = true; -}); - -var err; -connection.query('SELECT 1', function(_err) { - assert.equal(didEnd, false); - err = _err; -}); - -process.on('exit', function() { - assert.equal(didEnd, true); - assert.equal(err.code, 'PROTOCOL_ENQUEUE_AFTER_QUIT'); - assert.equal(err.fatal, false); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js deleted file mode 100644 index a8f1c65..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-dates-as-strings.js +++ /dev/null @@ -1,42 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); -var util = require('util'); - -common.useTestDb(connection); - -var table = 'dates_as_strings'; -var rows; - -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`dt` DATE,', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('INSERT INTO ' + table + ' SET ?', {dt: '0000-00-00'}); -connection.query('INSERT INTO ' + table + ' SET ?', {dt: '2013-00-00'}); -connection.query('INSERT INTO ' + table + ' SET ?', {dt: '2013-03-00'}); -connection.query('INSERT INTO ' + table + ' SET ?', {dt: '2013-03-01'}); - -connection.query('SELECT * FROM ' + table, function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(rows.length, 4); - assert.equal(rows[0].id, 1); - assert.equal(rows[0].dt, '0000-00-00'); - assert.equal(rows[1].id, 2); - assert.equal(rows[1].dt, '2013-00-00'); - assert.equal(rows[2].id, 3); - assert.equal(rows[2].dt, '2013-03-00'); - assert.equal(rows[3].id, 4); - assert(util.isDate(rows[3].dt)); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js deleted file mode 100644 index 6349b0e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escape-id.js +++ /dev/null @@ -1,31 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'escape_id_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`example` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('INSERT INTO ?? SET ?? = ?, ?? = ?', [ table, 'id', 1, 'example', 'id escape']); - -var rows; -connection.query('SELECT * FROM ??', [ table ], function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - - -process.on('exit', function() { - assert.equal(rows.length, 1); - assert.deepEqual(rows[0], {id: 1, example: 'id escape'}); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js deleted file mode 100644 index 145733f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-query-escaping.js +++ /dev/null @@ -1,36 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'escape_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`example` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('INSERT INTO ' + table + ' SET id = ?, example = ?', [1, 'array escape']); -connection.query('INSERT INTO ' + table + ' SET ?', { - id: 2, - example: 'object escape' -}); - -var rows; -connection.query('SELECT * FROM escape_test', function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - - -process.on('exit', function() { - assert.equal(rows.length, 2); - assert.deepEqual(rows[0], {id: 1, example: 'array escape'}); - assert.deepEqual(rows[1], {id: 2, example: 'object escape'}); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js deleted file mode 100644 index 64fa83a..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-1.js +++ /dev/null @@ -1,21 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.connect(); - -var rows = undefined; -var fields = undefined; -connection.query('SELECT 1', function(err, _rows, _fields) { - if (err) throw err; - - rows = _rows; - fields = _fields; -}); - -connection.end(); - -process.on('exit', function() { - assert.deepEqual(rows, [{1: 1}]); - assert.equal(fields[0].name, '1'); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js deleted file mode 100644 index 8e10ce7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-select-empty-string.js +++ /dev/null @@ -1,16 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var rows; -connection.query('SELECT ""', function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - -process.on('exit', function() { - assert.deepEqual(rows, [{'': ''}]); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js deleted file mode 100644 index 3509af7..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-send-and-receive-large-packets.js +++ /dev/null @@ -1,81 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.connect(function(err) { - if (err) throw err; - - getMaxAllowedPacket(); -}); - - -var oldMaxAllowedPacket; -function getMaxAllowedPacket() { - connection.query('SHOW VARIABLES WHERE Variable_name = ?', ['max_allowed_packet'], function(err, rows) { - if (err) throw err; - - oldMaxAllowedPacket = Number(rows[0].Value); - - increaseMaxAllowedPacketIfNeeded(); - }); -} - -function increaseMaxAllowedPacketIfNeeded() { - // Our test generates a SQL query a few bytes larger than 16 MB, but lets - // leave a little margin: - var minMaxAllowedPacket = 20 * 1024 * 1024; - - var newMaxAllowedPacket = (oldMaxAllowedPacket < minMaxAllowedPacket) - ? minMaxAllowedPacket - : oldMaxAllowedPacket; - - connection.query('SET GLOBAL max_allowed_packet = ?', [newMaxAllowedPacket], function(err, rows) { - if (err) throw err; - - - // We need to re-connect for this change to take effect, bah - connection.end(); - connection = common.createConnection(); - - // We need to wait for the re-connect to happen before starting the actual - // test. That's because our buffer to hex shim in 0.4.x takes ~12 sec on - // TravisCI, causing a MySQL connection timeout otherwise. - connection.connect(function(err) { - if (err) throw err; - - triggerLargeQueryAndResponsePackets(); - }); - }); -} - -var rows = []; -var length = Math.pow(256, 3) / 2; // Half, because of hex encoding -var buffer = new Buffer(length); -var sql = 'SELECT ? as bigField'; - -function triggerLargeQueryAndResponsePackets() { - connection.query(sql, [buffer], function(err, _rows) { - if (err) throw err; - - rows = _rows; - - resetMaxAllowedPacket(); - }); -} - -function resetMaxAllowedPacket() { - connection.query('SET GLOBAL max_allowed_packet = ?', [oldMaxAllowedPacket], function(err, rows) { - if (err) { - err.message = 'Could not reset max_allowed_packet size, please check your server settings: ' + err.message; - throw err; - } - }); - - connection.end(); -} - - -process.on('exit', function() { - assert.equal(rows.length, 1); - assert.equal(rows[0].bigField.length, length); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js deleted file mode 100644 index b4ec403..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-timeout-disconnect.js +++ /dev/null @@ -1,24 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -connection.query('SET wait_timeout = 1'); - -var errorErr; -var endErr; -connection - .on('end', function(err) { - assert.ok(!endErr); - endErr = err; - }) - .on('error', function(err) { - assert.ok(!errorErr); - errorErr = err; - }); - -process.on('exit', function() { - assert.strictEqual(errorErr.code, 'PROTOCOL_CONNECTION_LOST'); - assert.strictEqual(errorErr.fatal, true); - - assert.strictEqual(endErr, errorErr); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js deleted file mode 100644 index 6bb5957..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-server-unexpected-disconnect.js +++ /dev/null @@ -1,36 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({port: common.fakeServerPort}); -var assert = require('assert'); - -var endErr; -connection.on('end', function(err) { - assert.ok(!endErr); - endErr = err; -}); - -var queryErr; - -var server = common.createFakeServer(); -server.listen(common.fakeServerPort, function(err) { - if (err) throw err; - - connection.query('SELECT 1', function(err) { - assert.ok(!queryErr); - queryErr = err; - }); -}); - -server.on('connection', function(connection) { - connection.handshake(); - - connection.on('query', function(packet) { - server.destroy(); - }); -}); - -process.on('exit', function() { - assert.strictEqual(queryErr.code, 'PROTOCOL_CONNECTION_LOST'); - assert.strictEqual(queryErr.fatal, true); - - assert.strictEqual(endErr, queryErr); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js deleted file mode 100644 index 5fc9865..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-statistics.js +++ /dev/null @@ -1,26 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -var statsErr, statsData; - -connection.statistics(function(err, data) { - statsErr = err; - statsData = data; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(statsErr, null); - assert.strictEqual(typeof statsData, "object"); - assert.strictEqual(statsData.hasOwnProperty("message"), true); - assert.strictEqual(statsData.hasOwnProperty("uptime"), true); - assert.strictEqual(statsData.hasOwnProperty("threads"), true); - assert.strictEqual(statsData.hasOwnProperty("questions"), true); - assert.strictEqual(statsData.hasOwnProperty("slow_queries"), true); - assert.strictEqual(statsData.hasOwnProperty("opens"), true); - assert.strictEqual(statsData.hasOwnProperty("flush_tables"), true); - assert.strictEqual(statsData.hasOwnProperty("open_tables"), true); - assert.strictEqual(statsData.hasOwnProperty("queries_per_second_avg"), true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js deleted file mode 100644 index 48a80b2..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows-quick-pause-resume.js +++ /dev/null @@ -1,46 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'stream_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var rowCount = 10; -for (var i = 1; i <= rowCount; i++) { - var row = { - id: i, - title: 'Row #' + i, - }; - - connection.query('INSERT INTO ' + table + ' SET ?', row); -} - -var query = connection.query('SELECT * FROM ' + table); - -var hadEnd = false; -var rows = []; -var fields = undefined; -query.on('result', function(row) { - connection.pause(); - connection.resume(); - - rows.push(row); -}) -.on('end', function() { - hadEnd = true; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(rows.length, rowCount); - assert.equal(hadEnd, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js deleted file mode 100644 index 8ea45da..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-streaming-rows.js +++ /dev/null @@ -1,65 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'stream_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var rowCount = 10; -for (var i = 1; i <= rowCount; i++) { - var row = { - id: i, - title: 'Row #' + i, - }; - - connection.query('INSERT INTO ' + table + ' SET ?', row); -} - -var paused = false; -var query = connection.query('SELECT * FROM ' + table); - -var hadEnd = 0; -var rows = []; -var fields = undefined; -query - .on('fields', function(_fields, index) { - assert.equal(index, 0); - assert.ok(!fields); - - fields = _fields; - }) - .on('result', function(row) { - // Make sure we never receive a row while being paused - assert.equal(paused, false); - - paused = true; - connection.pause(); - - setTimeout(function() { - paused = false; - connection.resume(); - - rows.push(row); - }, 10); - }) - .on('end', function() { - hadEnd = true; - }); - -connection.end(); - -process.on('exit', function() { - assert.equal(rows.length, 10); - assert.equal(hadEnd, true); - - assert.equal(fields[0].name, 'id'); - assert.equal(fields[1].name, 'title'); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js deleted file mode 100644 index dd59de4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-timezones.js +++ /dev/null @@ -1,67 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'timezone_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '`(', - '`offset` varchar(10),', - '`dt` datetime', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var tests = [ 0, 1, 5, 12, 26, -1, -5, -20, 'Z', 'local' ]; - -connection.query('DELETE FROM ' + table); - -testNextDate(); - -function testNextDate() { - if (tests.length === 0) { - return connection.end(); - } - - var test = tests.pop(); - - testDate(test, function () { - testNextDate(); - }); -} - -function testDate(offset, cb) { - var dt = new Date(); - - if (offset == 'Z' || offset == 'local') { - connection.config.timezone = offset; - } else { - connection.config.timezone = (offset < 0 ? "-" : "+") + pad2(Math.abs(offset)) + ":00"; - } - connection.query('INSERT INTO ' + table + ' SET ?', { offset: offset, dt: dt }); - - if (offset == 'Z') { - dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000)); - } else if (offset != 'local') { - dt.setTime(dt.getTime() + (dt.getTimezoneOffset() * 60000) + (offset * 3600000)); - } - - connection.query({ - sql: 'SELECT * FROM ' + table + ' WHERE offset = \'' + offset + '\'', - typeCast: function (field, next) { - if (field.type != 'DATETIME') return next(); - - return new Date(field.string()); - } - }, function (err, result) { - if (err) throw err; - - assert.strictEqual(dt.toString(), result[0].dt.toString()); - - return cb(); - }); -} - -function pad2(v) { - return (v < 10 ? "0" : "") + v; -} diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js deleted file mode 100644 index 86015a6..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-commit.js +++ /dev/null @@ -1,41 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'transaction_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('START TRANSACTION'); - -var rowCount = 10; -for (var i = 1; i <= rowCount; i++) { - var row = { - id: i, - title: 'Row #' + i, - }; - - connection.query('INSERT INTO ' + table + ' SET ?', row); -} - -connection.query('COMMIT'); - -var rows = []; -var query = connection.query('SELECT * FROM ' + table, function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(rows.length, rowCount); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js deleted file mode 100644 index f06bee5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-transaction-rollback.js +++ /dev/null @@ -1,41 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'transaction_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`title` varchar(255),', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('START TRANSACTION'); - -var rowCount = 10; -for (var i = 1; i <= rowCount; i++) { - var row = { - id: i, - title: 'Row #' + i, - }; - - connection.query('INSERT INTO ' + table + ' SET ?', row); -} - -connection.query('ROLLBACK'); - -var rows; -var query = connection.query('SELECT * FROM ' + table, function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - -process.on('exit', function() { - assert.equal(rows.length, 0); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js deleted file mode 100644 index f5718f4..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-null-fields.js +++ /dev/null @@ -1,34 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'insert_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`date` DATETIME NULL,', - '`number` INT NULL,', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -connection.query('INSERT INTO ' + table + ' SET ?', { - date : null, - number : null, -}); - -var results; -connection.query('SELECT * FROM ' + table, function(err, _results) { - if (err) throw err; - - results = _results; -}); - -connection.end(); - -process.on('exit', function() { - assert.strictEqual(results[0].date, null); - assert.strictEqual(results[0].number, null); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js deleted file mode 100644 index 0a6dda5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-cast-query.js +++ /dev/null @@ -1,37 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({typeCast: true}); -var assert = require('assert'); -var util = require('util'); - -connection.connect(); - -var options = { - sql : "SELECT NOW() as date, POINT(1.2,-3.4) as point", - typeCast : false -}; - -var rows; -var query = connection.query(options, function(err, _rows) { - if (err) throw err; - - rows = _rows; -}); - -connection.end(); - -process.on('exit', function() { - var point = rows[0].point; - var byteOrder = point.readUInt8(4); - var wkbType = byteOrder? point.readUInt32LE(5) : point.readUInt32BE(5); - var x = byteOrder? point.readDoubleLE(9) : point.readDoubleBE(9); - var y = byteOrder? point.readDoubleLE(17) : point.readDoubleBE(17); - - assert.strictEqual(typeof rows[0].date, 'object'); - assert.equal(Buffer.isBuffer(rows[0].date), true); - assert.strictEqual(typeof point, 'object'); - assert.equal(Buffer.isBuffer(point), true); - assert.equal(point.readUInt32LE(0), 0); // unknown - assert.equal(wkbType, 1); // WKBPoint - assert.equal(x, 1.2); - assert.equal(y, -3.4); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js deleted file mode 100644 index 781ce6f..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-type-casting.js +++ /dev/null @@ -1,118 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var tests = [ - {type: 'decimal(3,3)', insert: '0.330', expect: 0.33 }, - {type: 'decimal(3,3)', insert: 0.33}, - {type: 'tinyint', insert: 1}, - {type: 'smallint', insert: 2}, - {type: 'int', insert: 3}, - {type: 'float', insert: 4.5}, - {type: 'double', insert: 5.5}, - {type: 'bigint', insert: '6', expect: 6}, - {type: 'bigint', insert: 6}, - {type: 'mediumint', insert: 7}, - {type: 'year', insert: 2012}, - {type: 'timestamp', insert: new Date('2012-05-12 11:00:23')}, - {type: 'datetime', insert: new Date('2012-05-12 12:00:23')}, - {type: 'date', insert: new Date('2012-05-12 00:00:00 Z')}, - {type: 'time', insert: '13:13:23'}, - {type: 'binary(4)', insert: new Buffer([0, 1, 254, 255])}, - {type: 'varbinary(4)', insert: new Buffer([0, 1, 254, 255])}, - {type: 'tinyblob', insert: new Buffer([0, 1, 254, 255])}, - {type: 'mediumblob', insert: new Buffer([0, 1, 254, 255])}, - {type: 'longblob', insert: new Buffer([0, 1, 254, 255])}, - {type: 'blob', insert: new Buffer([0, 1, 254, 255])}, - {type: 'bit(32)', insert: new Buffer([0, 1, 254, 255])}, - {type: 'char(5)', insert: 'Hello'}, - {type: 'varchar(5)', insert: 'Hello'}, - {type: 'varchar(3) character set utf8 collate utf8_bin', insert: 'bin'}, - {type: 'tinytext', insert: 'Hello World'}, - {type: 'mediumtext', insert: 'Hello World'}, - {type: 'longtext', insert: 'Hello World'}, - {type: 'text', insert: 'Hello World'}, - {type: 'point', insertRaw: 'POINT(1.2,-3.4)', expect: {x:1.2, y:-3.4}, deep: true}, - {type: 'point', insertRaw: (function() { - var buffer = new Buffer(21); - buffer.writeUInt8(1, 0); - buffer.writeUInt32LE(1, 1); - buffer.writeDoubleLE(-5.6, 5); - buffer.writeDoubleLE(10.23, 13); - return 'GeomFromWKB(' + connection.escape(buffer) + ')'; - })(), expect: {x:-5.6, y:10.23}, deep: true}, - {type: 'linestring', insertRaw: 'LINESTRING(POINT(1.2,-3.4),POINT(-5.6,10.23),POINT(0.2,0.7))', expect: [{x:1.2, y:-3.4}, {x:-5.6, y:10.23}, {x:0.2, y:0.7}], deep: true}, - {type: 'polygon', insertRaw: "GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))')", expect: [[{x:0,y:0},{x:10,y:0},{x:10,y:10},{x:0,y:10},{x:0,y:0}],[{x:5,y:5},{x:7,y:5},{x:7,y:7},{x:5,y:7},{x:5,y:5}]], deep: true}, - {type: 'geometry', insertRaw: 'POINT(1.2,-3.4)', expect: {x:1.2, y:-3.4}, deep: true}, - {type: 'multipoint', insertRaw: "GeomFromText('MULTIPOINT(0 0, 20 20, 60 60)')", expect: [{x:0, y:0}, {x:20, y:20}, {x:60, y:60}], deep: true}, - {type: 'multilinestring', insertRaw: "GeomFromText('MULTILINESTRING((10 10, 20 20), (15 15, 30 15))')", expect: [[{x:10,y:10},{x:20,y:20}],[{x:15,y:15},{x:30,y:15}]], deep: true}, - {type: 'multipolygon', insertRaw: "GeomFromText('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))')", expect: [[[{x:0,y:0},{x:10,y:0},{x:10,y:10},{x:0,y:10},{x:0,y:0}]],[[{x:5,y:5},{x:7,y:5},{x:7,y:7},{x:5,y:7},{x:5,y:5}]]], deep: true}, - {type: 'geometrycollection', insertRaw: "GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))')", expect: [{x:10,y:10},{x:30,y:30},[{x:15,y:15},{x:20,y:20}]], deep: true} -]; - -var table = 'type_casting'; - -var schema = []; -var inserts = []; - -tests.forEach(function(test, index) { - var escaped = test.insertRaw || connection.escape(test.insert); - - test.columnName = test.type + '_' + index; - - schema.push('`' + test.columnName + '` ' + test.type + ','); - inserts.push('`' + test.columnName + '` = ' + escaped); -}); - -var createTable = [ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,' - ].concat(schema).concat([ - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -]).join('\n'); - -connection.query(createTable); - -connection.query('INSERT INTO ' + table + ' SET' + inserts.join(',\n')); - -var row; -connection.query('SELECT * FROM type_casting', function(err, rows) { - if (err) throw err; - - row = rows[0]; -}); - -connection.end(); - -process.on('exit', function() { - tests.forEach(function(test) { - var expected = test.expect || test.insert; - var got = row[test.columnName]; - var message; - - if (expected instanceof Date) { - assert.equal(got instanceof Date, true, test.type); - - expected = String(expected); - got = String(got); - } else if (Buffer.isBuffer(expected)) { - assert.equal(Buffer.isBuffer(got), true, test.type); - - expected = String(Array.prototype.slice.call(expected)); - got = String(Array.prototype.slice.call(got)); - } - - if (test.deep) { - message = 'got: "' + JSON.stringify(got) + '" expected: "' + JSON.stringify(expected) + - '" test: ' + test.type + ''; - assert.deepEqual(expected, got, message); - } else { - message = 'got: "' + got + '" (' + (typeof got) + ') expected: "' + expected + - '" (' + (typeof expected) + ') test: ' + test.type + ''; - assert.strictEqual(expected, got, message); - } - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js deleted file mode 100644 index 229395e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-unix-domain-socket.js +++ /dev/null @@ -1,32 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection({socketPath: common.fakeServerSocket}); -var assert = require('assert'); - -var server = common.createFakeServer(); -var didConnect = false; -server.listen(common.fakeServerSocket, function(err) { - if (err) throw err; - - connection.connect(function(err) { - if (err) throw err; - - assert.equal(didConnect, false); - didConnect = true; - - connection.destroy(); - server.destroy(); - }); -}); - -var hadConnection = false; -server.on('connection', function(connection) { - connection.handshake(); - - assert.equal(hadConnection, false); - hadConnection = true; -}); - -process.on('exit', function() { - assert.equal(didConnect, true); - assert.equal(hadConnection, true); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js deleted file mode 100644 index 49176da..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/connection/test-zerofill-results.js +++ /dev/null @@ -1,39 +0,0 @@ -var common = require('../../common'); -var connection = common.createConnection(); -var assert = require('assert'); - -common.useTestDb(connection); - -var table = 'zerofill_results_test'; -connection.query([ - 'CREATE TEMPORARY TABLE `' + table + '` (', - '`id` int(11) unsigned NOT NULL AUTO_INCREMENT,', - '`num` int(5) UNSIGNED ZEROFILL,', - 'PRIMARY KEY (`id`)', - ') ENGINE=InnoDB DEFAULT CHARSET=utf8' -].join('\n')); - -var test_numbers = [ "00000", "00001", "00012", "00123", "01234", "12345", null ]; -var results = {}; - -for (var i = 0; i < test_numbers.length; i++) { - connection.query('INSERT INTO ' + table + ' SET ?', { - id: (i + 1), - num: (test_numbers[i] !== null ? parseInt(test_numbers[i], 10) : null) - }, function (err, _result) { - if (err) throw err; - }); -} -connection.query('SELECT * FROM ' + table, function (err, _results) { - if (err) throw err; - - results = _results; -}); -connection.end(); - -process.on('exit', function() { - assert.strictEqual(results.length, test_numbers.length); - for (var i = 0; i < results.length; i++) { - assert.strictEqual(test_numbers[results[i].id - 1], (results[i].num !== null ? "" + results[i].num : null)); - } -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js deleted file mode 100644 index 4e7c46e..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-connection-limit.js +++ /dev/null @@ -1,26 +0,0 @@ -var common = require('../../common'); -var assert = require('assert'); -var pool = common.createPool({ - connectionLimit : 1, - waitForConnections : false -}); - -pool.getConnection(function(err, connection) { - if (err) throw err; - pool.getConnection(function(err) { - assert.ok(err); - - var shouldGetConnection = false; - pool.config.waitForConnections = true; - pool.getConnection(function(err, connection2) { - if (err) throw err; - assert.ok(shouldGetConnection); - assert.strictEqual(connection, connection2); - - pool.end(); - }); - - shouldGetConnection = true; - connection.end(); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js deleted file mode 100644 index 2b47616..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-destroy-connection.js +++ /dev/null @@ -1,17 +0,0 @@ -var common = require('../../common'); -var assert = require('assert'); -var Connection = require(common.lib + '/Connection'); -var pool = common.createPool(); - -pool.getConnection(function(err, connection) { - if (err) throw err; - assert.strictEqual(connection, pool._allConnections[0]); - connection.destroy(); - - assert.ok(pool._allConnections.length == 0); - assert.ok(connection._poolRemoved); - assert.strictEqual(connection.end, Connection.prototype.end); - assert.strictEqual(connection.destroy, Connection.prototype.destroy); - - pool.end(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js deleted file mode 100644 index 15bd9d5..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-end-empty.js +++ /dev/null @@ -1,13 +0,0 @@ -var common = require('../../common'); -var assert = require('assert'); -var pool = common.createPool(); -var poolEnded = false; - -pool.end(function(err) { - poolEnded = true; - if (err) throw err; -}); - -process.on('exit', function() { - assert(poolEnded); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js b/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js deleted file mode 100644 index 9739ad8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/integration/pool/test-get-connection.js +++ /dev/null @@ -1,10 +0,0 @@ -var common = require('../../common'); -var assert = require('assert'); -var Connection = require(common.lib + '/Connection'); -var pool = common.createPool(); - -pool.getConnection(function(err, connection) { - if (err) throw err; - assert.ok(connection instanceof Connection); - pool.end(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/run.js b/nodejs-mysql-tutorial/node_modules/mysql/test/run.js deleted file mode 100644 index a58d5ce..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/run.js +++ /dev/null @@ -1,7 +0,0 @@ -var options = {}; - -if (process.env.FILTER) { - options.include = new RegExp(process.env.FILTER + '.*\\.js$'); -} - -require('urun')(__dirname, options); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js deleted file mode 100644 index fef7ae8..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-Parser.js +++ /dev/null @@ -1,125 +0,0 @@ -var common = require('../../common'); -var test = require('utest'); -var assert = require('assert'); -var Parser = require(common.lib + '/protocol/Parser'); - -function packet(bytes) { - var buffer = new Buffer(bytes); - var parser = new Parser(); - - parser.append(buffer); - - return parser; -} - -test('Parser', { - "parseBuffer: buffer won\'t change after appending another one": function() { - var startBuffer = new Buffer(5); - startBuffer.fill('a'); - - var parser = new Parser(); - parser.append(startBuffer); - - var value = parser.parseBuffer(4); - - assert.equal(value.toString(), 'aaaa'); - - parser.append(new Buffer('b')); - - assert.equal(value.toString(), 'aaaa'); - }, - - 'parseUnsignedNumber: 1 byte': function() { - var value = packet([5]).parseUnsignedNumber(1); - assert.equal(value, 5); - }, - - 'parseUnsignedNumber: 2 bytes': function() { - var value = packet([1, 1]).parseUnsignedNumber(2); - assert.equal(value, 256 + 1); - }, - - 'parseUnsignedNumber: honors offsets': function() { - var parser = packet([1, 2]); - assert.equal(parser.parseUnsignedNumber(1), 1); - assert.equal(parser.parseUnsignedNumber(1), 2); - }, - - 'parseLengthCodedNumber: 1 byte': function() { - var parser = packet([250]); - assert.strictEqual(parser.parseLengthCodedNumber(), 250); - }, - - 'parseLengthCodedNumber: 251 = null': function() { - var parser = packet([251]); - assert.strictEqual(parser.parseLengthCodedNumber(), null); - }, - - 'parseLengthCodedNumber: 252 = 16 bit': function() { - var parser = packet([252, 2, 1]); - var expected = - 2 * Math.pow(256, 0) + - 1 * Math.pow(256, 1); - assert.strictEqual(parser.parseLengthCodedNumber(), expected); - }, - - 'parseLengthCodedNumber: 253 = 24 bit': function() { - var parser = packet([253, 3, 2, 1]); - var expected = - 3 * Math.pow(256, 0) + - 2 * Math.pow(256, 1) + - 1 * Math.pow(256, 2); - - assert.strictEqual(parser.parseLengthCodedNumber(), expected); - }, - - 'parseLengthCodedNumber: 254 = 64 bit': function() { - var parser = packet([254, 8, 7, 6, 5, 4, 3, 2, 0]); - var expected = - 8 * Math.pow(256, 0) + - 7 * Math.pow(256, 1) + - 6 * Math.pow(256, 2) + - 5 * Math.pow(256, 3) + - 4 * Math.pow(256, 4) + - 3 * Math.pow(256, 5) + - 2 * Math.pow(256, 6) + - 0 * Math.pow(256, 7); - - assert.strictEqual(parser.parseLengthCodedNumber(), expected); - }, - - 'parseLengthCodedNumber: < 53 bit = no problemo': function() { - var parser = packet([254, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00]); - assert.strictEqual(parser.parseLengthCodedNumber(), Math.pow(2, 53) - 1); - }, - - 'parseLengthCodedNumber: 53 bit = Error': function() { - var parser = packet([254, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00]); - assert.throws(function() { - parser.parseLengthCodedNumber(); - }, /precision/i); - }, - - 'parseLengthCodedNumber: 255 = Error': function() { - var parser = packet([255]); - assert.throws(function() { - parser.parseLengthCodedNumber(); - }, /unexpected/i); - }, - - 'parsePacketTerminatedString: regular case': function() { - var parser = packet([0x48, 0x69]); - parser._packetEnd = 2; - - var str = parser.parsePacketTerminatedString(); - assert.equal(str, 'Hi'); - }, - - 'parsePacketTerminatedString: 0x00 terminated': function() { - var parser = packet([0x48, 0x69, 0x00]); - parser._packetEnd = 2; - - var str = parser.parsePacketTerminatedString(); - assert.equal(str, 'Hi'); - }, -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js deleted file mode 100644 index ed156be..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/protocol/test-SqlString.js +++ /dev/null @@ -1,132 +0,0 @@ -var common = require('../../common'); -var test = require('utest'); -var assert = require('assert'); -var SqlString = require(common.lib + '/protocol/SqlString'); - -test('SqlString.escape', { - 'undefined -> NULL': function() { - assert.equal(SqlString.escape(undefined), 'NULL'); - }, - - 'null -> NULL': function() { - assert.equal(SqlString.escape(null), 'NULL'); - }, - - 'booleans convert to strings': function() { - assert.equal(SqlString.escape(false), 'false'); - assert.equal(SqlString.escape(true), 'true'); - }, - - 'numbers convert to strings': function() { - assert.equal(SqlString.escape(5), '5'); - }, - - 'objects are turned into key value pairs': function() { - assert.equal(SqlString.escape({a: 'b', c: 'd'}), "`a` = 'b', `c` = 'd'"); - }, - - 'objects function properties are ignored': function() { - assert.equal(SqlString.escape({a: 'b', c: function() {}}), "`a` = 'b'"); - }, - - 'nested objects are cast to strings': function() { - assert.equal(SqlString.escape({a: {nested: true}}), "`a` = '[object Object]'"); - }, - - 'arrays are turned into lists': function() { - assert.equal(SqlString.escape([1, 2, 'c']), "1, 2, 'c'"); - }, - - 'nested arrays are turned into grouped lists': function() { - assert.equal(SqlString.escape([[1,2,3], [4,5,6], ['a', 'b', {nested: true}]]), "(1, 2, 3), (4, 5, 6), ('a', 'b', '[object Object]')"); - }, - - 'nested objects inside arrays are cast to strings': function() { - assert.equal(SqlString.escape([1, {nested: true}, 2]), "1, '[object Object]', 2"); - }, - - 'strings are quoted': function() { - assert.equal(SqlString.escape('Super'), "'Super'"); - }, - - '\0 gets escaped': function() { - assert.equal(SqlString.escape('Sup\0er'), "'Sup\\0er'"); - }, - - '\b gets escaped': function() { - assert.equal(SqlString.escape('Sup\ber'), "'Sup\\ber'"); - }, - - '\n gets escaped': function() { - assert.equal(SqlString.escape('Sup\ner'), "'Sup\\ner'"); - }, - - '\r gets escaped': function() { - assert.equal(SqlString.escape('Sup\rer'), "'Sup\\rer'"); - }, - - '\t gets escaped': function() { - assert.equal(SqlString.escape('Sup\ter'), "'Sup\\ter'"); - }, - - '\\ gets escaped': function() { - assert.equal(SqlString.escape('Sup\\er'), "'Sup\\\\er'"); - }, - - '\u001a (ascii 26) gets replaced with \\Z': function() { - assert.equal(SqlString.escape('Sup\u001aer'), "'Sup\\Zer'"); - }, - - 'single quotes get escaped': function() { - assert.equal(SqlString.escape('Sup\'er'), "'Sup\\'er'"); - }, - - 'double quotes get escaped': function() { - assert.equal(SqlString.escape('Sup"er'), "'Sup\\\"er'"); - }, - - 'dates are converted to YYYY-MM-DD HH:II:SS': function() { - var expected = '2012-05-07 11:42:03'; - var date = new Date(Date.UTC(2012, 4, 7, 11, 42, 3)); - var string = SqlString.escape(date); - - assert.strictEqual(string, "'" + expected + "'"); - }, - - 'buffers are converted to hex': function() { - var buffer = new Buffer([0, 1, 254, 255]); - var string = SqlString.escape(buffer); - - assert.strictEqual(string, "X'0001feff'"); - }, - - 'NaN -> NaN': function() { - assert.equal(SqlString.escape(NaN), 'NaN'); - }, - - 'Infinity -> Infinity': function() { - assert.equal(SqlString.escape(Infinity), 'Infinity'); - } -}); - -test('SqlString.format', { - 'question marks are replaced with escaped array values': function() { - var sql = SqlString.format('? and ?', ['a', 'b']); - assert.equal(sql, "'a' and 'b'"); - }, - - 'extra question marks are left untouched': function() { - var sql = SqlString.format('? and ?', ['a']); - assert.equal(sql, "'a' and ?"); - }, - - 'extra arguments are not used': function() { - var sql = SqlString.format('? and ?', ['a', 'b', 'c']); - assert.equal(sql, "'a' and 'b'"); - }, - - 'question marks within values do not cause issues': function() { - var sql = SqlString.format('? and ?', ['hello?', 'b']); - assert.equal(sql, "'hello?' and 'b'"); - }, -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js b/nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js deleted file mode 100644 index 6102246..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/test/unit/test-ConnectionConfig.js +++ /dev/null @@ -1,29 +0,0 @@ -var common = require('../common'); -var test = require('utest'); -var assert = require('assert'); -var Charsets = require(common.lib + '/protocol/constants/charsets'); -var ConnectionConfig = require(common.lib + '/ConnectionConfig'); - -test('ConnectionConfig#Constructor', { - 'takes user,pw,host,port,db from url string': function() { - var url = 'mysql://myuser:mypass@myhost:3333/mydb'; - var config = new ConnectionConfig(url); - - assert.equal(config.host, 'myhost'); - assert.equal(config.port, 3333); - assert.equal(config.user, 'myuser'); - assert.equal(config.password, 'mypass'); - assert.equal(config.database, 'mydb'); - }, - - 'allows additional options via url query': function() { - var url = 'mysql://myhost/mydb?debug=true&charset=BIG5_CHINESE_CI'; - var config = new ConnectionConfig(url); - - assert.equal(config.host, 'myhost'); - assert.equal(config.port, 3306); - assert.equal(config.database, 'mydb'); - assert.equal(config.debug, true); - assert.equal(config.charsetNumber, Charsets.BIG5_CHINESE_CI); - }, -}); diff --git a/nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js b/nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js deleted file mode 100644 index b781134..0000000 --- a/nodejs-mysql-tutorial/node_modules/mysql/tool/generate-error-constants.js +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env node -var path = require('path'); -var script = path.basename(__filename); - -var errorFile = process.argv[2]; -if (!errorFile) { - console.error('Usage: ./' + script + ' path/to/errmsg-utf8.txt'); - process.exit(1); -} - -var fs = require('fs'); -var errors = fs.readFileSync(errorFile, 'utf-8'); - -var number = Number(errors.match(/start-error-number (\d+)/)[1]); -var codes = errors.match(/^([A-Z_]+)/mg) - -var source = - '// Generated by ' + script + ', do not modify by hand\n' + - codes - .map(function(code) { - return 'exports[' + (number++) + '] = \'' + code + '\';'; - }) - .join('\n'); - -var targetFile = path.join(__dirname, '../lib/protocol/constants/errors.js'); -fs.writeFileSync(targetFile, source, 'utf-8'); - -console.log('Wrote constants to ' + targetFile); From c952fbf5fa2f014240808928427318d8b6cb8a77 Mon Sep 17 00:00:00 2001 From: Tutorialindustry Date: Tue, 31 Dec 2013 11:28:35 +0530 Subject: [PATCH 3/7] c5 --- .../node_modules/.bin/express | 15 - .../node_modules/.bin/express.cmd | 5 - nodejs-mysql-tutorial/node_modules/.bin/jade | 15 - .../node_modules/.bin/jade.cmd | 5 - .../node_modules/.bin/nodemon | 15 - .../node_modules/.bin/nodemon.cmd | 5 - .../node_modules/express/.npmignore | 9 - .../node_modules/express/.travis.yml | 4 - .../node_modules/express/History.md | 1147 ------------- .../node_modules/express/LICENSE | 22 - .../node_modules/express/Makefile | 33 - .../node_modules/express/Readme.md | 180 -- .../node_modules/express/bin/express | 422 ----- .../node_modules/express/index.js | 4 - .../node_modules/express/lib/application.js | 536 ------ .../node_modules/express/lib/express.js | 92 - .../node_modules/express/lib/middleware.js | 33 - .../node_modules/express/lib/request.js | 527 ------ .../node_modules/express/lib/response.js | 757 --------- .../node_modules/express/lib/router/index.js | 273 --- .../node_modules/express/lib/router/route.js | 72 - .../node_modules/express/lib/utils.js | 313 ---- .../node_modules/express/lib/view.js | 77 - .../node_modules/buffer-crc32/.npmignore | 1 - .../node_modules/buffer-crc32/.travis.yml | 8 - .../node_modules/buffer-crc32/README.md | 47 - .../node_modules/buffer-crc32/index.js | 88 - .../node_modules/buffer-crc32/package.json | 39 - .../buffer-crc32/tests/crc.test.js | 89 - .../express/node_modules/commander/.npmignore | 4 - .../node_modules/commander/.travis.yml | 4 - .../express/node_modules/commander/History.md | 107 -- .../express/node_modules/commander/Makefile | 7 - .../express/node_modules/commander/Readme.md | 262 --- .../express/node_modules/commander/index.js | 2 - .../node_modules/commander/lib/commander.js | 1026 ----------- .../node_modules/commander/package.json | 38 - .../express/node_modules/connect/.npmignore | 12 - .../express/node_modules/connect/.travis.yml | 4 - .../express/node_modules/connect/LICENSE | 24 - .../express/node_modules/connect/Readme.md | 133 -- .../express/node_modules/connect/index.js | 4 - .../express/node_modules/connect/lib/cache.js | 81 - .../node_modules/connect/lib/connect.js | 92 - .../express/node_modules/connect/lib/index.js | 50 - .../connect/lib/middleware/basicAuth.js | 103 -- .../connect/lib/middleware/bodyParser.js | 61 - .../connect/lib/middleware/compress.js | 157 -- .../connect/lib/middleware/cookieParser.js | 62 - .../connect/lib/middleware/cookieSession.js | 117 -- .../connect/lib/middleware/csrf.js | 73 - .../connect/lib/middleware/directory.js | 229 --- .../connect/lib/middleware/errorHandler.js | 86 - .../connect/lib/middleware/favicon.js | 80 - .../connect/lib/middleware/json.js | 86 - .../connect/lib/middleware/limit.js | 78 - .../connect/lib/middleware/logger.js | 339 ---- .../connect/lib/middleware/methodOverride.js | 40 - .../connect/lib/middleware/multipart.js | 133 -- .../connect/lib/middleware/query.js | 46 - .../connect/lib/middleware/responseTime.js | 32 - .../connect/lib/middleware/session.js | 356 ---- .../connect/lib/middleware/session/cookie.js | 140 -- .../connect/lib/middleware/session/memory.js | 129 -- .../connect/lib/middleware/session/session.js | 116 -- .../connect/lib/middleware/session/store.js | 84 - .../connect/lib/middleware/static.js | 95 -- .../connect/lib/middleware/staticCache.js | 231 --- .../connect/lib/middleware/timeout.js | 55 - .../connect/lib/middleware/urlencoded.js | 78 - .../connect/lib/middleware/vhost.js | 40 - .../express/node_modules/connect/lib/patch.js | 79 - .../express/node_modules/connect/lib/proto.js | 230 --- .../connect/lib/public/directory.html | 81 - .../connect/lib/public/error.html | 14 - .../connect/lib/public/favicon.ico | Bin 1406 -> 0 bytes .../connect/lib/public/icons/page.png | Bin 635 -> 0 bytes .../connect/lib/public/icons/page_add.png | Bin 739 -> 0 bytes .../connect/lib/public/icons/page_attach.png | Bin 794 -> 0 bytes .../connect/lib/public/icons/page_code.png | Bin 818 -> 0 bytes .../connect/lib/public/icons/page_copy.png | Bin 663 -> 0 bytes .../connect/lib/public/icons/page_delete.png | Bin 740 -> 0 bytes .../connect/lib/public/icons/page_edit.png | Bin 807 -> 0 bytes .../connect/lib/public/icons/page_error.png | Bin 793 -> 0 bytes .../connect/lib/public/icons/page_excel.png | Bin 817 -> 0 bytes .../connect/lib/public/icons/page_find.png | Bin 879 -> 0 bytes .../connect/lib/public/icons/page_gear.png | Bin 833 -> 0 bytes .../connect/lib/public/icons/page_go.png | Bin 779 -> 0 bytes .../connect/lib/public/icons/page_green.png | Bin 621 -> 0 bytes .../connect/lib/public/icons/page_key.png | Bin 801 -> 0 bytes .../lib/public/icons/page_lightning.png | Bin 839 -> 0 bytes .../connect/lib/public/icons/page_link.png | Bin 830 -> 0 bytes .../lib/public/icons/page_paintbrush.png | Bin 813 -> 0 bytes .../connect/lib/public/icons/page_paste.png | Bin 703 -> 0 bytes .../connect/lib/public/icons/page_red.png | Bin 641 -> 0 bytes .../connect/lib/public/icons/page_refresh.png | Bin 858 -> 0 bytes .../connect/lib/public/icons/page_save.png | Bin 774 -> 0 bytes .../connect/lib/public/icons/page_white.png | Bin 294 -> 0 bytes .../lib/public/icons/page_white_acrobat.png | Bin 591 -> 0 bytes .../public/icons/page_white_actionscript.png | Bin 664 -> 0 bytes .../lib/public/icons/page_white_add.png | Bin 512 -> 0 bytes .../connect/lib/public/icons/page_white_c.png | Bin 587 -> 0 bytes .../lib/public/icons/page_white_camera.png | Bin 656 -> 0 bytes .../lib/public/icons/page_white_cd.png | Bin 666 -> 0 bytes .../lib/public/icons/page_white_code.png | Bin 603 -> 0 bytes .../lib/public/icons/page_white_code_red.png | Bin 587 -> 0 bytes .../public/icons/page_white_coldfusion.png | Bin 592 -> 0 bytes .../public/icons/page_white_compressed.png | Bin 724 -> 0 bytes .../lib/public/icons/page_white_copy.png | Bin 309 -> 0 bytes .../lib/public/icons/page_white_cplusplus.png | Bin 621 -> 0 bytes .../lib/public/icons/page_white_csharp.png | Bin 700 -> 0 bytes .../lib/public/icons/page_white_cup.png | Bin 639 -> 0 bytes .../lib/public/icons/page_white_database.png | Bin 579 -> 0 bytes .../lib/public/icons/page_white_delete.png | Bin 536 -> 0 bytes .../lib/public/icons/page_white_dvd.png | Bin 638 -> 0 bytes .../lib/public/icons/page_white_edit.png | Bin 618 -> 0 bytes .../lib/public/icons/page_white_error.png | Bin 623 -> 0 bytes .../lib/public/icons/page_white_excel.png | Bin 663 -> 0 bytes .../lib/public/icons/page_white_find.png | Bin 676 -> 0 bytes .../lib/public/icons/page_white_flash.png | Bin 582 -> 0 bytes .../lib/public/icons/page_white_freehand.png | Bin 639 -> 0 bytes .../lib/public/icons/page_white_gear.png | Bin 402 -> 0 bytes .../lib/public/icons/page_white_get.png | Bin 516 -> 0 bytes .../lib/public/icons/page_white_go.png | Bin 612 -> 0 bytes .../connect/lib/public/icons/page_white_h.png | Bin 603 -> 0 bytes .../public/icons/page_white_horizontal.png | Bin 296 -> 0 bytes .../lib/public/icons/page_white_key.png | Bin 616 -> 0 bytes .../lib/public/icons/page_white_lightning.png | Bin 669 -> 0 bytes .../lib/public/icons/page_white_link.png | Bin 614 -> 0 bytes .../lib/public/icons/page_white_magnify.png | Bin 554 -> 0 bytes .../lib/public/icons/page_white_medal.png | Bin 706 -> 0 bytes .../lib/public/icons/page_white_office.png | Bin 779 -> 0 bytes .../lib/public/icons/page_white_paint.png | Bin 688 -> 0 bytes .../public/icons/page_white_paintbrush.png | Bin 618 -> 0 bytes .../lib/public/icons/page_white_paste.png | Bin 620 -> 0 bytes .../lib/public/icons/page_white_php.png | Bin 538 -> 0 bytes .../lib/public/icons/page_white_picture.png | Bin 650 -> 0 bytes .../public/icons/page_white_powerpoint.png | Bin 588 -> 0 bytes .../lib/public/icons/page_white_put.png | Bin 523 -> 0 bytes .../lib/public/icons/page_white_ruby.png | Bin 626 -> 0 bytes .../lib/public/icons/page_white_stack.png | Bin 317 -> 0 bytes .../lib/public/icons/page_white_star.png | Bin 565 -> 0 bytes .../lib/public/icons/page_white_swoosh.png | Bin 634 -> 0 bytes .../lib/public/icons/page_white_text.png | Bin 342 -> 0 bytes .../public/icons/page_white_text_width.png | Bin 315 -> 0 bytes .../lib/public/icons/page_white_tux.png | Bin 668 -> 0 bytes .../lib/public/icons/page_white_vector.png | Bin 644 -> 0 bytes .../public/icons/page_white_visualstudio.png | Bin 702 -> 0 bytes .../lib/public/icons/page_white_width.png | Bin 309 -> 0 bytes .../lib/public/icons/page_white_word.png | Bin 651 -> 0 bytes .../lib/public/icons/page_white_world.png | Bin 734 -> 0 bytes .../lib/public/icons/page_white_wrench.png | Bin 613 -> 0 bytes .../lib/public/icons/page_white_zip.png | Bin 386 -> 0 bytes .../connect/lib/public/icons/page_word.png | Bin 777 -> 0 bytes .../connect/lib/public/icons/page_world.png | Bin 903 -> 0 bytes .../node_modules/connect/lib/public/style.css | 141 -- .../express/node_modules/connect/lib/utils.js | 404 ----- .../connect/node_modules/bytes/.npmignore | 1 - .../connect/node_modules/bytes/History.md | 10 - .../connect/node_modules/bytes/Makefile | 7 - .../connect/node_modules/bytes/Readme.md | 51 - .../connect/node_modules/bytes/component.json | 7 - .../connect/node_modules/bytes/index.js | 39 - .../connect/node_modules/bytes/package.json | 20 - .../connect/node_modules/cookie/.npmignore | 1 - .../connect/node_modules/cookie/.travis.yml | 4 - .../connect/node_modules/cookie/README.md | 44 - .../connect/node_modules/cookie/index.js | 61 - .../connect/node_modules/cookie/package.json | 36 - .../node_modules/cookie/test/mocha.opts | 1 - .../connect/node_modules/cookie/test/parse.js | 28 - .../node_modules/cookie/test/serialize.js | 59 - .../node_modules/formidable/.npmignore | 4 - .../node_modules/formidable/.travis.yml | 5 - .../connect/node_modules/formidable/LICENSE | 7 - .../connect/node_modules/formidable/Readme.md | 419 ----- .../benchmark/bench-multipart-parser.js | 71 - .../node_modules/formidable/example/json.js | 67 - .../node_modules/formidable/example/post.js | 43 - .../node_modules/formidable/example/upload.js | 48 - .../connect/node_modules/formidable/index.js | 1 - .../node_modules/formidable/lib/file.js | 72 - .../formidable/lib/incoming_form.js | 535 ------ .../node_modules/formidable/lib/index.js | 3 - .../formidable/lib/json_parser.js | 35 - .../formidable/lib/multipart_parser.js | 324 ---- .../formidable/lib/octet_parser.js | 20 - .../formidable/lib/querystring_parser.js | 27 - .../node_modules/formidable/package.json | 38 - .../node_modules/formidable/test/common.js | 18 - .../test/fixture/file/beta-sticker-1.png | Bin 1660 -> 0 bytes .../test/fixture/file/binaryfile.tar.gz | Bin 301 -> 0 bytes .../formidable/test/fixture/file/blank.gif | Bin 49 -> 0 bytes .../test/fixture/file/funkyfilename.txt | 1 - .../test/fixture/file/menu_separator.png | Bin 931 -> 0 bytes .../formidable/test/fixture/file/plain.txt | 1 - .../http/special-chars-in-filename/info.md | 3 - .../formidable/test/fixture/js/encoding.js | 24 - .../formidable/test/fixture/js/misc.js | 6 - .../formidable/test/fixture/js/no-filename.js | 9 - .../formidable/test/fixture/js/preamble.js | 9 - .../fixture/js/special-chars-in-filename.js | 21 - .../formidable/test/fixture/js/workarounds.js | 8 - .../formidable/test/fixture/multipart.js | 72 - .../test/integration/test-fixtures.js | 96 -- .../formidable/test/integration/test-json.js | 38 - .../test/integration/test-octet-stream.js | 45 - .../formidable/test/legacy/common.js | 24 - .../integration/test-multipart-parser.js | 80 - .../test/legacy/simple/test-file.js | 104 -- .../test/legacy/simple/test-incoming-form.js | 756 --------- .../legacy/simple/test-multipart-parser.js | 50 - .../legacy/simple/test-querystring-parser.js | 45 - .../legacy/system/test-multi-video-upload.js | 71 - .../node_modules/formidable/test/run.js | 1 - .../standalone/test-connection-aborted.js | 27 - .../test-content-transfer-encoding.js | 48 - .../test/standalone/test-issue-46.js | 49 - .../formidable/test/tools/base64.html | 67 - .../formidable/test/unit/test-file.js | 33 - .../test/unit/test-incoming-form.js | 63 - .../node_modules/formidable/tool/record.js | 47 - .../connect/node_modules/pause/.npmignore | 4 - .../connect/node_modules/pause/History.md | 5 - .../connect/node_modules/pause/Makefile | 7 - .../connect/node_modules/pause/Readme.md | 29 - .../connect/node_modules/pause/index.js | 29 - .../connect/node_modules/pause/package.json | 20 - .../connect/node_modules/qs/.gitmodules | 6 - .../connect/node_modules/qs/.npmignore | 7 - .../connect/node_modules/qs/Readme.md | 58 - .../connect/node_modules/qs/index.js | 387 ----- .../connect/node_modules/qs/package.json | 37 - .../express/node_modules/connect/package.json | 57 - .../express/node_modules/connect/test.js | 40 - .../node_modules/cookie-signature/.npmignore | 4 - .../node_modules/cookie-signature/History.md | 11 - .../node_modules/cookie-signature/Makefile | 7 - .../node_modules/cookie-signature/Readme.md | 42 - .../node_modules/cookie-signature/index.js | 42 - .../cookie-signature/package.json | 24 - .../express/node_modules/cookie/.npmignore | 1 - .../express/node_modules/cookie/.travis.yml | 5 - .../express/node_modules/cookie/LICENSE | 9 - .../express/node_modules/cookie/README.md | 44 - .../express/node_modules/cookie/index.js | 70 - .../express/node_modules/cookie/package.json | 36 - .../node_modules/cookie/test/mocha.opts | 1 - .../express/node_modules/cookie/test/parse.js | 44 - .../node_modules/cookie/test/serialize.js | 64 - .../express/node_modules/debug/.npmignore | 4 - .../express/node_modules/debug/History.md | 62 - .../express/node_modules/debug/Readme.md | 115 -- .../express/node_modules/debug/component.json | 9 - .../express/node_modules/debug/debug.js | 124 -- .../express/node_modules/debug/example/app.js | 19 - .../node_modules/debug/example/browser.html | 24 - .../node_modules/debug/example/wildcards.js | 10 - .../node_modules/debug/example/worker.js | 22 - .../express/node_modules/debug/index.js | 5 - .../express/node_modules/debug/lib/debug.js | 134 -- .../express/node_modules/debug/package.json | 40 - .../express/node_modules/fresh/.npmignore | 1 - .../express/node_modules/fresh/Makefile | 7 - .../express/node_modules/fresh/Readme.md | 32 - .../express/node_modules/fresh/index.js | 49 - .../express/node_modules/fresh/package.json | 20 - .../express/node_modules/methods/index.js | 26 - .../express/node_modules/methods/package.json | 20 - .../express/node_modules/mkdirp/.npmignore | 2 - .../express/node_modules/mkdirp/.travis.yml | 4 - .../express/node_modules/mkdirp/LICENSE | 21 - .../node_modules/mkdirp/README.markdown | 61 - .../node_modules/mkdirp/examples/pow.js | 6 - .../express/node_modules/mkdirp/index.js | 82 - .../express/node_modules/mkdirp/package.json | 36 - .../express/node_modules/mkdirp/test/chmod.js | 38 - .../node_modules/mkdirp/test/clobber.js | 37 - .../node_modules/mkdirp/test/mkdirp.js | 28 - .../express/node_modules/mkdirp/test/perm.js | 32 - .../node_modules/mkdirp/test/perm_sync.js | 39 - .../express/node_modules/mkdirp/test/race.js | 41 - .../express/node_modules/mkdirp/test/rel.js | 32 - .../node_modules/mkdirp/test/return.js | 25 - .../node_modules/mkdirp/test/return_sync.js | 24 - .../express/node_modules/mkdirp/test/root.js | 18 - .../express/node_modules/mkdirp/test/sync.js | 32 - .../express/node_modules/mkdirp/test/umask.js | 28 - .../node_modules/mkdirp/test/umask_sync.js | 32 - .../node_modules/range-parser/.npmignore | 1 - .../node_modules/range-parser/History.md | 15 - .../node_modules/range-parser/Makefile | 7 - .../node_modules/range-parser/Readme.md | 28 - .../node_modules/range-parser/index.js | 49 - .../node_modules/range-parser/package.json | 20 - .../express/node_modules/send/.npmignore | 4 - .../express/node_modules/send/History.md | 25 - .../express/node_modules/send/Makefile | 8 - .../express/node_modules/send/Readme.md | 123 -- .../express/node_modules/send/index.js | 2 - .../express/node_modules/send/lib/send.js | 473 ------ .../express/node_modules/send/lib/utils.js | 47 - .../send/node_modules/mime/LICENSE | 19 - .../send/node_modules/mime/README.md | 63 - .../send/node_modules/mime/mime.js | 104 -- .../send/node_modules/mime/package.json | 35 - .../send/node_modules/mime/test.js | 55 - .../send/node_modules/mime/types/mime.types | 1510 ----------------- .../send/node_modules/mime/types/node.types | 65 - .../express/node_modules/send/package.json | 38 - .../node_modules/express/package.json | 88 - .../node_modules/express/test.js | 17 - .../node_modules/nodemon/.npmignore | 1 - .../node_modules/nodemon/README.md | 135 -- .../node_modules/nodemon/faq.md | 38 - .../node_modules/nodemon/nodemon.js | 829 --------- .../nodemon/nodemonignore.example | 11 - .../node_modules/nodemon/package.json | 44 - 318 files changed, 20867 deletions(-) delete mode 100644 nodejs-mysql-tutorial/node_modules/.bin/express delete mode 100644 nodejs-mysql-tutorial/node_modules/.bin/express.cmd delete mode 100644 nodejs-mysql-tutorial/node_modules/.bin/jade delete mode 100644 nodejs-mysql-tutorial/node_modules/.bin/jade.cmd delete mode 100644 nodejs-mysql-tutorial/node_modules/.bin/nodemon delete mode 100644 nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd delete mode 100644 nodejs-mysql-tutorial/node_modules/express/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/express/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/bin/express delete mode 100644 nodejs-mysql-tutorial/node_modules/express/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/application.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/express.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/middleware.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/request.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/response.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/router/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/router/route.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/lib/view.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/favicon.ico delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_add.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_code.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_delete.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_edit.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_error.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_find.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_gear.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_go.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_green.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_key.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_link.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_red.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_save.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_add.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_c.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_camera.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_cd.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_compressed.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_cplusplus.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_csharp.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_cup.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_database.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_delete.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_dvd.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_error.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_flash.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_go.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_h.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_horizontal.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_lightning.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_medal.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paintbrush.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paste.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_php.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_put.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_text.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_text_width.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_tux.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_vector.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_visualstudio.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_word.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_world.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/binaryfile.tar.gz delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types delete mode 100644 nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/package.json delete mode 100644 nodejs-mysql-tutorial/node_modules/express/test.js delete mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/.npmignore delete mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/README.md delete mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/faq.md delete mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js delete mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example delete mode 100644 nodejs-mysql-tutorial/node_modules/nodemon/package.json diff --git a/nodejs-mysql-tutorial/node_modules/.bin/express b/nodejs-mysql-tutorial/node_modules/.bin/express deleted file mode 100644 index cad5a1e..0000000 --- a/nodejs-mysql-tutorial/node_modules/.bin/express +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../express/bin/express" "$@" - ret=$? -else - node "$basedir/../express/bin/express" "$@" - ret=$? -fi -exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/.bin/express.cmd b/nodejs-mysql-tutorial/node_modules/.bin/express.cmd deleted file mode 100644 index 1d2f509..0000000 --- a/nodejs-mysql-tutorial/node_modules/.bin/express.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\express\bin\express" %* -) ELSE ( - node "%~dp0\..\express\bin\express" %* -) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/.bin/jade b/nodejs-mysql-tutorial/node_modules/.bin/jade deleted file mode 100644 index 7de066b..0000000 --- a/nodejs-mysql-tutorial/node_modules/.bin/jade +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../jade/bin/jade" "$@" - ret=$? -else - node "$basedir/../jade/bin/jade" "$@" - ret=$? -fi -exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/.bin/jade.cmd b/nodejs-mysql-tutorial/node_modules/.bin/jade.cmd deleted file mode 100644 index cb2dede..0000000 --- a/nodejs-mysql-tutorial/node_modules/.bin/jade.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\jade\bin\jade" %* -) ELSE ( - node "%~dp0\..\jade\bin\jade" %* -) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/.bin/nodemon b/nodejs-mysql-tutorial/node_modules/.bin/nodemon deleted file mode 100644 index d77f0da..0000000 --- a/nodejs-mysql-tutorial/node_modules/.bin/nodemon +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -basedir=`dirname "$0"` - -case `uname` in - *CYGWIN*) basedir=`cygpath -w "$basedir"`;; -esac - -if [ -x "$basedir/node" ]; then - "$basedir/node" "$basedir/../nodemon/nodemon.js" "$@" - ret=$? -else - node "$basedir/../nodemon/nodemon.js" "$@" - ret=$? -fi -exit $ret diff --git a/nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd b/nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd deleted file mode 100644 index 2cd8132..0000000 --- a/nodejs-mysql-tutorial/node_modules/.bin/nodemon.cmd +++ /dev/null @@ -1,5 +0,0 @@ -@IF EXIST "%~dp0\node.exe" ( - "%~dp0\node.exe" "%~dp0\..\nodemon\nodemon.js" %* -) ELSE ( - node "%~dp0\..\nodemon\nodemon.js" %* -) \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/.npmignore b/nodejs-mysql-tutorial/node_modules/express/.npmignore deleted file mode 100644 index caf574d..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/.npmignore +++ /dev/null @@ -1,9 +0,0 @@ -.git* -docs/ -examples/ -support/ -test/ -testing.js -.DS_Store -coverage.html -lib-cov diff --git a/nodejs-mysql-tutorial/node_modules/express/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/express/History.md b/nodejs-mysql-tutorial/node_modules/express/History.md deleted file mode 100644 index e97e7e9..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/History.md +++ /dev/null @@ -1,1147 +0,0 @@ - -3.2.5 / 2013-05-21 -================== - - * update connect - * update node-cookie - * add: throw a meaningful error when there is no default engine - * change generation of ETags with res.send() to GET requests only. Closes #1619 - -3.2.4 / 2013-05-09 -================== - - * fix `req.subdomains` when no Host is present - * fix `req.host` when no Host is present, return undefined - -3.2.3 / 2013-05-07 -================== - - * update connect / qs - -3.2.2 / 2013-05-03 -================== - - * update qs - -3.2.1 / 2013-04-29 -================== - - * add app.VERB() paths array deprecation warning - * update connect - * update qs and remove all ~ semver crap - * fix: accept number as value of Signed Cookie - -3.2.0 / 2013-04-15 -================== - - * add "view" constructor setting to override view behaviour - * add req.acceptsEncoding(name) - * add req.acceptedEncodings - * revert cookie signature change causing session race conditions - * fix sorting of Accept values of the same quality - -3.1.2 / 2013-04-12 -================== - - * add support for custom Accept parameters - * update cookie-signature - -3.1.1 / 2013-04-01 -================== - - * add X-Forwarded-Host support to `req.host` - * fix relative redirects - * update mkdirp - * update buffer-crc32 - * remove legacy app.configure() method from app template. - -3.1.0 / 2013-01-25 -================== - - * add support for leading "." in "view engine" setting - * add array support to `res.set()` - * add node 0.8.x to travis.yml - * add "subdomain offset" setting for tweaking `req.subdomains` - * add `res.location(url)` implementing `res.redirect()`-like setting of Location - * use app.get() for x-powered-by setting for inheritance - * fix colons in passwords for `req.auth` - -3.0.6 / 2013-01-04 -================== - - * add http verb methods to Router - * update connect - * fix mangling of the `res.cookie()` options object - * fix jsonp whitespace escape. Closes #1132 - -3.0.5 / 2012-12-19 -================== - - * add throwing when a non-function is passed to a route - * fix: explicitly remove Transfer-Encoding header from 204 and 304 responses - * revert "add 'etag' option" - -3.0.4 / 2012-12-05 -================== - - * add 'etag' option to disable `res.send()` Etags - * add escaping of urls in text/plain in `res.redirect()` - for old browsers interpreting as html - * change crc32 module for a more liberal license - * update connect - -3.0.3 / 2012-11-13 -================== - - * update connect - * update cookie module - * fix cookie max-age - -3.0.2 / 2012-11-08 -================== - - * add OPTIONS to cors example. Closes #1398 - * fix route chaining regression. Closes #1397 - -3.0.1 / 2012-11-01 -================== - - * update connect - -3.0.0 / 2012-10-23 -================== - - * add `make clean` - * add "Basic" check to req.auth - * add `req.auth` test coverage - * add cb && cb(payload) to `res.jsonp()`. Closes #1374 - * add backwards compat for `res.redirect()` status. Closes #1336 - * add support for `res.json()` to retain previously defined Content-Types. Closes #1349 - * update connect - * change `res.redirect()` to utilize a pathname-relative Location again. Closes #1382 - * remove non-primitive string support for `res.send()` - * fix view-locals example. Closes #1370 - * fix route-separation example - -3.0.0rc5 / 2012-09-18 -================== - - * update connect - * add redis search example - * add static-files example - * add "x-powered-by" setting (`app.disable('x-powered-by')`) - * add "application/octet-stream" redirect Accept test case. Closes #1317 - -3.0.0rc4 / 2012-08-30 -================== - - * add `res.jsonp()`. Closes #1307 - * add "verbose errors" option to error-pages example - * add another route example to express(1) so people are not so confused - * add redis online user activity tracking example - * update connect dep - * fix etag quoting. Closes #1310 - * fix error-pages 404 status - * fix jsonp callback char restrictions - * remove old OPTIONS default response - -3.0.0rc3 / 2012-08-13 -================== - - * update connect dep - * fix signed cookies to work with `connect.cookieParser()` ("s:" prefix was missing) [tnydwrds] - * fix `res.render()` clobbering of "locals" - -3.0.0rc2 / 2012-08-03 -================== - - * add CORS example - * update connect dep - * deprecate `.createServer()` & remove old stale examples - * fix: escape `res.redirect()` link - * fix vhost example - -3.0.0rc1 / 2012-07-24 -================== - - * add more examples to view-locals - * add scheme-relative redirects (`res.redirect("//foo.com")`) support - * update cookie dep - * update connect dep - * update send dep - * fix `express(1)` -h flag, use -H for hogan. Closes #1245 - * fix `res.sendfile()` socket error handling regression - -3.0.0beta7 / 2012-07-16 -================== - - * update connect dep for `send()` root normalization regression - -3.0.0beta6 / 2012-07-13 -================== - - * add `err.view` property for view errors. Closes #1226 - * add "jsonp callback name" setting - * add support for "/foo/:bar*" non-greedy matches - * change `res.sendfile()` to use `send()` module - * change `res.send` to use "response-send" module - * remove `app.locals.use` and `res.locals.use`, use regular middleware - -3.0.0beta5 / 2012-07-03 -================== - - * add "make check" support - * add route-map example - * add `res.json(obj, status)` support back for BC - * add "methods" dep, remove internal methods module - * update connect dep - * update auth example to utilize cores pbkdf2 - * updated tests to use "supertest" - -3.0.0beta4 / 2012-06-25 -================== - - * Added `req.auth` - * Added `req.range(size)` - * Added `res.links(obj)` - * Added `res.send(body, status)` support back for backwards compat - * Added `.default()` support to `res.format()` - * Added 2xx / 304 check to `req.fresh` - * Revert "Added + support to the router" - * Fixed `res.send()` freshness check, respect res.statusCode - -3.0.0beta3 / 2012-06-15 -================== - - * Added hogan `--hjs` to express(1) [nullfirm] - * Added another example to content-negotiation - * Added `fresh` dep - * Changed: `res.send()` always checks freshness - * Fixed: expose connects mime module. Cloases #1165 - -3.0.0beta2 / 2012-06-06 -================== - - * Added `+` support to the router - * Added `req.host` - * Changed `req.param()` to check route first - * Update connect dep - -3.0.0beta1 / 2012-06-01 -================== - - * Added `res.format()` callback to override default 406 behaviour - * Fixed `res.redirect()` 406. Closes #1154 - -3.0.0alpha5 / 2012-05-30 -================== - - * Added `req.ip` - * Added `{ signed: true }` option to `res.cookie()` - * Removed `res.signedCookie()` - * Changed: dont reverse `req.ips` - * Fixed "trust proxy" setting check for `req.ips` - -3.0.0alpha4 / 2012-05-09 -================== - - * Added: allow `[]` in jsonp callback. Closes #1128 - * Added `PORT` env var support in generated template. Closes #1118 [benatkin] - * Updated: connect 2.2.2 - -3.0.0alpha3 / 2012-05-04 -================== - - * Added public `app.routes`. Closes #887 - * Added _view-locals_ example - * Added _mvc_ example - * Added `res.locals.use()`. Closes #1120 - * Added conditional-GET support to `res.send()` - * Added: coerce `res.set()` values to strings - * Changed: moved `static()` in generated apps below router - * Changed: `res.send()` only set ETag when not previously set - * Changed connect 2.2.1 dep - * Changed: `make test` now runs unit / acceptance tests - * Fixed req/res proto inheritance - -3.0.0alpha2 / 2012-04-26 -================== - - * Added `make benchmark` back - * Added `res.send()` support for `String` objects - * Added client-side data exposing example - * Added `res.header()` and `req.header()` aliases for BC - * Added `express.createServer()` for BC - * Perf: memoize parsed urls - * Perf: connect 2.2.0 dep - * Changed: make `expressInit()` middleware self-aware - * Fixed: use app.get() for all core settings - * Fixed redis session example - * Fixed session example. Closes #1105 - * Fixed generated express dep. Closes #1078 - -3.0.0alpha1 / 2012-04-15 -================== - - * Added `app.locals.use(callback)` - * Added `app.locals` object - * Added `app.locals(obj)` - * Added `res.locals` object - * Added `res.locals(obj)` - * Added `res.format()` for content-negotiation - * Added `app.engine()` - * Added `res.cookie()` JSON cookie support - * Added "trust proxy" setting - * Added `req.subdomains` - * Added `req.protocol` - * Added `req.secure` - * Added `req.path` - * Added `req.ips` - * Added `req.fresh` - * Added `req.stale` - * Added comma-delmited / array support for `req.accepts()` - * Added debug instrumentation - * Added `res.set(obj)` - * Added `res.set(field, value)` - * Added `res.get(field)` - * Added `app.get(setting)`. Closes #842 - * Added `req.acceptsLanguage()` - * Added `req.acceptsCharset()` - * Added `req.accepted` - * Added `req.acceptedLanguages` - * Added `req.acceptedCharsets` - * Added "json replacer" setting - * Added "json spaces" setting - * Added X-Forwarded-Proto support to `res.redirect()`. Closes #92 - * Added `--less` support to express(1) - * Added `express.response` prototype - * Added `express.request` prototype - * Added `express.application` prototype - * Added `app.path()` - * Added `app.render()` - * Added `res.type()` to replace `res.contentType()` - * Changed: `res.redirect()` to add relative support - * Changed: enable "jsonp callback" by default - * Changed: renamed "case sensitive routes" to "case sensitive routing" - * Rewrite of all tests with mocha - * Removed "root" setting - * Removed `res.redirect('home')` support - * Removed `req.notify()` - * Removed `app.register()` - * Removed `app.redirect()` - * Removed `app.is()` - * Removed `app.helpers()` - * Removed `app.dynamicHelpers()` - * Fixed `res.sendfile()` with non-GET. Closes #723 - * Fixed express(1) public dir for windows. Closes #866 - -2.5.9/ 2012-04-02 -================== - - * Added support for PURGE request method [pbuyle] - * Fixed `express(1)` generated app `app.address()` before `listening` [mmalecki] - -2.5.8 / 2012-02-08 -================== - - * Update mkdirp dep. Closes #991 - -2.5.7 / 2012-02-06 -================== - - * Fixed `app.all` duplicate DELETE requests [mscdex] - -2.5.6 / 2012-01-13 -================== - - * Updated hamljs dev dep. Closes #953 - -2.5.5 / 2012-01-08 -================== - - * Fixed: set `filename` on cached templates [matthewleon] - -2.5.4 / 2012-01-02 -================== - - * Fixed `express(1)` eol on 0.4.x. Closes #947 - -2.5.3 / 2011-12-30 -================== - - * Fixed `req.is()` when a charset is present - -2.5.2 / 2011-12-10 -================== - - * Fixed: express(1) LF -> CRLF for windows - -2.5.1 / 2011-11-17 -================== - - * Changed: updated connect to 1.8.x - * Removed sass.js support from express(1) - -2.5.0 / 2011-10-24 -================== - - * Added ./routes dir for generated app by default - * Added npm install reminder to express(1) app gen - * Added 0.5.x support - * Removed `make test-cov` since it wont work with node 0.5.x - * Fixed express(1) public dir for windows. Closes #866 - -2.4.7 / 2011-10-05 -================== - - * Added mkdirp to express(1). Closes #795 - * Added simple _json-config_ example - * Added shorthand for the parsed request's pathname via `req.path` - * Changed connect dep to 1.7.x to fix npm issue... - * Fixed `res.redirect()` __HEAD__ support. [reported by xerox] - * Fixed `req.flash()`, only escape args - * Fixed absolute path checking on windows. Closes #829 [reported by andrewpmckenzie] - -2.4.6 / 2011-08-22 -================== - - * Fixed multiple param callback regression. Closes #824 [reported by TroyGoode] - -2.4.5 / 2011-08-19 -================== - - * Added support for routes to handle errors. Closes #809 - * Added `app.routes.all()`. Closes #803 - * Added "basepath" setting to work in conjunction with reverse proxies etc. - * Refactored `Route` to use a single array of callbacks - * Added support for multiple callbacks for `app.param()`. Closes #801 -Closes #805 - * Changed: removed .call(self) for route callbacks - * Dependency: `qs >= 0.3.1` - * Fixed `res.redirect()` on windows due to `join()` usage. Closes #808 - -2.4.4 / 2011-08-05 -================== - - * Fixed `res.header()` intention of a set, even when `undefined` - * Fixed `*`, value no longer required - * Fixed `res.send(204)` support. Closes #771 - -2.4.3 / 2011-07-14 -================== - - * Added docs for `status` option special-case. Closes #739 - * Fixed `options.filename`, exposing the view path to template engines - -2.4.2. / 2011-07-06 -================== - - * Revert "removed jsonp stripping" for XSS - -2.4.1 / 2011-07-06 -================== - - * Added `res.json()` JSONP support. Closes #737 - * Added _extending-templates_ example. Closes #730 - * Added "strict routing" setting for trailing slashes - * Added support for multiple envs in `app.configure()` calls. Closes #735 - * Changed: `res.send()` using `res.json()` - * Changed: when cookie `path === null` don't default it - * Changed; default cookie path to "home" setting. Closes #731 - * Removed _pids/logs_ creation from express(1) - -2.4.0 / 2011-06-28 -================== - - * Added chainable `res.status(code)` - * Added `res.json()`, an explicit version of `res.send(obj)` - * Added simple web-service example - -2.3.12 / 2011-06-22 -================== - - * \#express is now on freenode! come join! - * Added `req.get(field, param)` - * Added links to Japanese documentation, thanks @hideyukisaito! - * Added; the `express(1)` generated app outputs the env - * Added `content-negotiation` example - * Dependency: connect >= 1.5.1 < 2.0.0 - * Fixed view layout bug. Closes #720 - * Fixed; ignore body on 304. Closes #701 - -2.3.11 / 2011-06-04 -================== - - * Added `npm test` - * Removed generation of dummy test file from `express(1)` - * Fixed; `express(1)` adds express as a dep - * Fixed; prune on `prepublish` - -2.3.10 / 2011-05-27 -================== - - * Added `req.route`, exposing the current route - * Added _package.json_ generation support to `express(1)` - * Fixed call to `app.param()` function for optional params. Closes #682 - -2.3.9 / 2011-05-25 -================== - - * Fixed bug-ish with `../' in `res.partial()` calls - -2.3.8 / 2011-05-24 -================== - - * Fixed `app.options()` - -2.3.7 / 2011-05-23 -================== - - * Added route `Collection`, ex: `app.get('/user/:id').remove();` - * Added support for `app.param(fn)` to define param logic - * Removed `app.param()` support for callback with return value - * Removed module.parent check from express(1) generated app. Closes #670 - * Refactored router. Closes #639 - -2.3.6 / 2011-05-20 -================== - - * Changed; using devDependencies instead of git submodules - * Fixed redis session example - * Fixed markdown example - * Fixed view caching, should not be enabled in development - -2.3.5 / 2011-05-20 -================== - - * Added export `.view` as alias for `.View` - -2.3.4 / 2011-05-08 -================== - - * Added `./examples/say` - * Fixed `res.sendfile()` bug preventing the transfer of files with spaces - -2.3.3 / 2011-05-03 -================== - - * Added "case sensitive routes" option. - * Changed; split methods supported per rfc [slaskis] - * Fixed route-specific middleware when using the same callback function several times - -2.3.2 / 2011-04-27 -================== - - * Fixed view hints - -2.3.1 / 2011-04-26 -================== - - * Added `app.match()` as `app.match.all()` - * Added `app.lookup()` as `app.lookup.all()` - * Added `app.remove()` for `app.remove.all()` - * Added `app.remove.VERB()` - * Fixed template caching collision issue. Closes #644 - * Moved router over from connect and started refactor - -2.3.0 / 2011-04-25 -================== - - * Added options support to `res.clearCookie()` - * Added `res.helpers()` as alias of `res.locals()` - * Added; json defaults to UTF-8 with `res.send()`. Closes #632. [Daniel * Dependency `connect >= 1.4.0` - * Changed; auto set Content-Type in res.attachement [Aaron Heckmann] - * Renamed "cache views" to "view cache". Closes #628 - * Fixed caching of views when using several apps. Closes #637 - * Fixed gotcha invoking `app.param()` callbacks once per route middleware. -Closes #638 - * Fixed partial lookup precedence. Closes #631 -Shaw] - -2.2.2 / 2011-04-12 -================== - - * Added second callback support for `res.download()` connection errors - * Fixed `filename` option passing to template engine - -2.2.1 / 2011-04-04 -================== - - * Added `layout(path)` helper to change the layout within a view. Closes #610 - * Fixed `partial()` collection object support. - Previously only anything with `.length` would work. - When `.length` is present one must still be aware of holes, - however now `{ collection: {foo: 'bar'}}` is valid, exposes - `keyInCollection` and `keysInCollection`. - - * Performance improved with better view caching - * Removed `request` and `response` locals - * Changed; errorHandler page title is now `Express` instead of `Connect` - -2.2.0 / 2011-03-30 -================== - - * Added `app.lookup.VERB()`, ex `app.lookup.put('/user/:id')`. Closes #606 - * Added `app.match.VERB()`, ex `app.match.put('/user/12')`. Closes #606 - * Added `app.VERB(path)` as alias of `app.lookup.VERB()`. - * Dependency `connect >= 1.2.0` - -2.1.1 / 2011-03-29 -================== - - * Added; expose `err.view` object when failing to locate a view - * Fixed `res.partial()` call `next(err)` when no callback is given [reported by aheckmann] - * Fixed; `res.send(undefined)` responds with 204 [aheckmann] - -2.1.0 / 2011-03-24 -================== - - * Added `/_?` partial lookup support. Closes #447 - * Added `request`, `response`, and `app` local variables - * Added `settings` local variable, containing the app's settings - * Added `req.flash()` exception if `req.session` is not available - * Added `res.send(bool)` support (json response) - * Fixed stylus example for latest version - * Fixed; wrap try/catch around `res.render()` - -2.0.0 / 2011-03-17 -================== - - * Fixed up index view path alternative. - * Changed; `res.locals()` without object returns the locals - -2.0.0rc3 / 2011-03-17 -================== - - * Added `res.locals(obj)` to compliment `res.local(key, val)` - * Added `res.partial()` callback support - * Fixed recursive error reporting issue in `res.render()` - -2.0.0rc2 / 2011-03-17 -================== - - * Changed; `partial()` "locals" are now optional - * Fixed `SlowBuffer` support. Closes #584 [reported by tyrda01] - * Fixed .filename view engine option [reported by drudge] - * Fixed blog example - * Fixed `{req,res}.app` reference when mounting [Ben Weaver] - -2.0.0rc / 2011-03-14 -================== - - * Fixed; expose `HTTPSServer` constructor - * Fixed express(1) default test charset. Closes #579 [reported by secoif] - * Fixed; default charset to utf-8 instead of utf8 for lame IE [reported by NickP] - -2.0.0beta3 / 2011-03-09 -================== - - * Added support for `res.contentType()` literal - The original `res.contentType('.json')`, - `res.contentType('application/json')`, and `res.contentType('json')` - will work now. - * Added `res.render()` status option support back - * Added charset option for `res.render()` - * Added `.charset` support (via connect 1.0.4) - * Added view resolution hints when in development and a lookup fails - * Added layout lookup support relative to the page view. - For example while rendering `./views/user/index.jade` if you create - `./views/user/layout.jade` it will be used in favour of the root layout. - * Fixed `res.redirect()`. RFC states absolute url [reported by unlink] - * Fixed; default `res.send()` string charset to utf8 - * Removed `Partial` constructor (not currently used) - -2.0.0beta2 / 2011-03-07 -================== - - * Added res.render() `.locals` support back to aid in migration process - * Fixed flash example - -2.0.0beta / 2011-03-03 -================== - - * Added HTTPS support - * Added `res.cookie()` maxAge support - * Added `req.header()` _Referrer_ / _Referer_ special-case, either works - * Added mount support for `res.redirect()`, now respects the mount-point - * Added `union()` util, taking place of `merge(clone())` combo - * Added stylus support to express(1) generated app - * Added secret to session middleware used in examples and generated app - * Added `res.local(name, val)` for progressive view locals - * Added default param support to `req.param(name, default)` - * Added `app.disabled()` and `app.enabled()` - * Added `app.register()` support for omitting leading ".", either works - * Added `res.partial()`, using the same interface as `partial()` within a view. Closes #539 - * Added `app.param()` to map route params to async/sync logic - * Added; aliased `app.helpers()` as `app.locals()`. Closes #481 - * Added extname with no leading "." support to `res.contentType()` - * Added `cache views` setting, defaulting to enabled in "production" env - * Added index file partial resolution, eg: partial('user') may try _views/user/index.jade_. - * Added `req.accepts()` support for extensions - * Changed; `res.download()` and `res.sendfile()` now utilize Connect's - static file server `connect.static.send()`. - * Changed; replaced `connect.utils.mime()` with npm _mime_ module - * Changed; allow `req.query` to be pre-defined (via middleware or other parent - * Changed view partial resolution, now relative to parent view - * Changed view engine signature. no longer `engine.render(str, options, callback)`, now `engine.compile(str, options) -> Function`, the returned function accepts `fn(locals)`. - * Fixed `req.param()` bug returning Array.prototype methods. Closes #552 - * Fixed; using `Stream#pipe()` instead of `sys.pump()` in `res.sendfile()` - * Fixed; using _qs_ module instead of _querystring_ - * Fixed; strip unsafe chars from jsonp callbacks - * Removed "stream threshold" setting - -1.0.8 / 2011-03-01 -================== - - * Allow `req.query` to be pre-defined (via middleware or other parent app) - * "connect": ">= 0.5.0 < 1.0.0". Closes #547 - * Removed the long deprecated __EXPRESS_ENV__ support - -1.0.7 / 2011-02-07 -================== - - * Fixed `render()` setting inheritance. - Mounted apps would not inherit "view engine" - -1.0.6 / 2011-02-07 -================== - - * Fixed `view engine` setting bug when period is in dirname - -1.0.5 / 2011-02-05 -================== - - * Added secret to generated app `session()` call - -1.0.4 / 2011-02-05 -================== - - * Added `qs` dependency to _package.json_ - * Fixed namespaced `require()`s for latest connect support - -1.0.3 / 2011-01-13 -================== - - * Remove unsafe characters from JSONP callback names [Ryan Grove] - -1.0.2 / 2011-01-10 -================== - - * Removed nested require, using `connect.router` - -1.0.1 / 2010-12-29 -================== - - * Fixed for middleware stacked via `createServer()` - previously the `foo` middleware passed to `createServer(foo)` - would not have access to Express methods such as `res.send()` - or props like `req.query` etc. - -1.0.0 / 2010-11-16 -================== - - * Added; deduce partial object names from the last segment. - For example by default `partial('forum/post', postObject)` will - give you the _post_ object, providing a meaningful default. - * Added http status code string representation to `res.redirect()` body - * Added; `res.redirect()` supporting _text/plain_ and _text/html_ via __Accept__. - * Added `req.is()` to aid in content negotiation - * Added partial local inheritance [suggested by masylum]. Closes #102 - providing access to parent template locals. - * Added _-s, --session[s]_ flag to express(1) to add session related middleware - * Added _--template_ flag to express(1) to specify the - template engine to use. - * Added _--css_ flag to express(1) to specify the - stylesheet engine to use (or just plain css by default). - * Added `app.all()` support [thanks aheckmann] - * Added partial direct object support. - You may now `partial('user', user)` providing the "user" local, - vs previously `partial('user', { object: user })`. - * Added _route-separation_ example since many people question ways - to do this with CommonJS modules. Also view the _blog_ example for - an alternative. - * Performance; caching view path derived partial object names - * Fixed partial local inheritance precedence. [reported by Nick Poulden] Closes #454 - * Fixed jsonp support; _text/javascript_ as per mailinglist discussion - -1.0.0rc4 / 2010-10-14 -================== - - * Added _NODE_ENV_ support, _EXPRESS_ENV_ is deprecated and will be removed in 1.0.0 - * Added route-middleware support (very helpful, see the [docs](http://expressjs.com/guide.html#Route-Middleware)) - * Added _jsonp callback_ setting to enable/disable jsonp autowrapping [Dav Glass] - * Added callback query check on response.send to autowrap JSON objects for simple webservice implementations [Dav Glass] - * Added `partial()` support for array-like collections. Closes #434 - * Added support for swappable querystring parsers - * Added session usage docs. Closes #443 - * Added dynamic helper caching. Closes #439 [suggested by maritz] - * Added authentication example - * Added basic Range support to `res.sendfile()` (and `res.download()` etc) - * Changed; `express(1)` generated app using 2 spaces instead of 4 - * Default env to "development" again [aheckmann] - * Removed _context_ option is no more, use "scope" - * Fixed; exposing _./support_ libs to examples so they can run without installs - * Fixed mvc example - -1.0.0rc3 / 2010-09-20 -================== - - * Added confirmation for `express(1)` app generation. Closes #391 - * Added extending of flash formatters via `app.flashFormatters` - * Added flash formatter support. Closes #411 - * Added streaming support to `res.sendfile()` using `sys.pump()` when >= "stream threshold" - * Added _stream threshold_ setting for `res.sendfile()` - * Added `res.send()` __HEAD__ support - * Added `res.clearCookie()` - * Added `res.cookie()` - * Added `res.render()` headers option - * Added `res.redirect()` response bodies - * Added `res.render()` status option support. Closes #425 [thanks aheckmann] - * Fixed `res.sendfile()` responding with 403 on malicious path - * Fixed `res.download()` bug; when an error occurs remove _Content-Disposition_ - * Fixed; mounted apps settings now inherit from parent app [aheckmann] - * Fixed; stripping Content-Length / Content-Type when 204 - * Fixed `res.send()` 204. Closes #419 - * Fixed multiple _Set-Cookie_ headers via `res.header()`. Closes #402 - * Fixed bug messing with error handlers when `listenFD()` is called instead of `listen()`. [thanks guillermo] - - -1.0.0rc2 / 2010-08-17 -================== - - * Added `app.register()` for template engine mapping. Closes #390 - * Added `res.render()` callback support as second argument (no options) - * Added callback support to `res.download()` - * Added callback support for `res.sendfile()` - * Added support for middleware access via `express.middlewareName()` vs `connect.middlewareName()` - * Added "partials" setting to docs - * Added default expresso tests to `express(1)` generated app. Closes #384 - * Fixed `res.sendfile()` error handling, defer via `next()` - * Fixed `res.render()` callback when a layout is used [thanks guillermo] - * Fixed; `make install` creating ~/.node_libraries when not present - * Fixed issue preventing error handlers from being defined anywhere. Closes #387 - -1.0.0rc / 2010-07-28 -================== - - * Added mounted hook. Closes #369 - * Added connect dependency to _package.json_ - - * Removed "reload views" setting and support code - development env never caches, production always caches. - - * Removed _param_ in route callbacks, signature is now - simply (req, res, next), previously (req, res, params, next). - Use _req.params_ for path captures, _req.query_ for GET params. - - * Fixed "home" setting - * Fixed middleware/router precedence issue. Closes #366 - * Fixed; _configure()_ callbacks called immediately. Closes #368 - -1.0.0beta2 / 2010-07-23 -================== - - * Added more examples - * Added; exporting `Server` constructor - * Added `Server#helpers()` for view locals - * Added `Server#dynamicHelpers()` for dynamic view locals. Closes #349 - * Added support for absolute view paths - * Added; _home_ setting defaults to `Server#route` for mounted apps. Closes #363 - * Added Guillermo Rauch to the contributor list - * Added support for "as" for non-collection partials. Closes #341 - * Fixed _install.sh_, ensuring _~/.node_libraries_ exists. Closes #362 [thanks jf] - * Fixed `res.render()` exceptions, now passed to `next()` when no callback is given [thanks guillermo] - * Fixed instanceof `Array` checks, now `Array.isArray()` - * Fixed express(1) expansion of public dirs. Closes #348 - * Fixed middleware precedence. Closes #345 - * Fixed view watcher, now async [thanks aheckmann] - -1.0.0beta / 2010-07-15 -================== - - * Re-write - - much faster - - much lighter - - Check [ExpressJS.com](http://expressjs.com) for migration guide and updated docs - -0.14.0 / 2010-06-15 -================== - - * Utilize relative requires - * Added Static bufferSize option [aheckmann] - * Fixed caching of view and partial subdirectories [aheckmann] - * Fixed mime.type() comments now that ".ext" is not supported - * Updated haml submodule - * Updated class submodule - * Removed bin/express - -0.13.0 / 2010-06-01 -================== - - * Added node v0.1.97 compatibility - * Added support for deleting cookies via Request#cookie('key', null) - * Updated haml submodule - * Fixed not-found page, now using using charset utf-8 - * Fixed show-exceptions page, now using using charset utf-8 - * Fixed view support due to fs.readFile Buffers - * Changed; mime.type() no longer accepts ".type" due to node extname() changes - -0.12.0 / 2010-05-22 -================== - - * Added node v0.1.96 compatibility - * Added view `helpers` export which act as additional local variables - * Updated haml submodule - * Changed ETag; removed inode, modified time only - * Fixed LF to CRLF for setting multiple cookies - * Fixed cookie complation; values are now urlencoded - * Fixed cookies parsing; accepts quoted values and url escaped cookies - -0.11.0 / 2010-05-06 -================== - - * Added support for layouts using different engines - - this.render('page.html.haml', { layout: 'super-cool-layout.html.ejs' }) - - this.render('page.html.haml', { layout: 'foo' }) // assumes 'foo.html.haml' - - this.render('page.html.haml', { layout: false }) // no layout - * Updated ext submodule - * Updated haml submodule - * Fixed EJS partial support by passing along the context. Issue #307 - -0.10.1 / 2010-05-03 -================== - - * Fixed binary uploads. - -0.10.0 / 2010-04-30 -================== - - * Added charset support via Request#charset (automatically assigned to 'UTF-8' when respond()'s - encoding is set to 'utf8' or 'utf-8'. - * Added "encoding" option to Request#render(). Closes #299 - * Added "dump exceptions" setting, which is enabled by default. - * Added simple ejs template engine support - * Added error reponse support for text/plain, application/json. Closes #297 - * Added callback function param to Request#error() - * Added Request#sendHead() - * Added Request#stream() - * Added support for Request#respond(304, null) for empty response bodies - * Added ETag support to Request#sendfile() - * Added options to Request#sendfile(), passed to fs.createReadStream() - * Added filename arg to Request#download() - * Performance enhanced due to pre-reversing plugins so that plugins.reverse() is not called on each request - * Performance enhanced by preventing several calls to toLowerCase() in Router#match() - * Changed; Request#sendfile() now streams - * Changed; Renamed Request#halt() to Request#respond(). Closes #289 - * Changed; Using sys.inspect() instead of JSON.encode() for error output - * Changed; run() returns the http.Server instance. Closes #298 - * Changed; Defaulting Server#host to null (INADDR_ANY) - * Changed; Logger "common" format scale of 0.4f - * Removed Logger "request" format - * Fixed; Catching ENOENT in view caching, preventing error when "views/partials" is not found - * Fixed several issues with http client - * Fixed Logger Content-Length output - * Fixed bug preventing Opera from retaining the generated session id. Closes #292 - -0.9.0 / 2010-04-14 -================== - - * Added DSL level error() route support - * Added DSL level notFound() route support - * Added Request#error() - * Added Request#notFound() - * Added Request#render() callback function. Closes #258 - * Added "max upload size" setting - * Added "magic" variables to collection partials (\_\_index\_\_, \_\_length\_\_, \_\_isFirst\_\_, \_\_isLast\_\_). Closes #254 - * Added [haml.js](http://github.com/visionmedia/haml.js) submodule; removed haml-js - * Added callback function support to Request#halt() as 3rd/4th arg - * Added preprocessing of route param wildcards using param(). Closes #251 - * Added view partial support (with collections etc) - * Fixed bug preventing falsey params (such as ?page=0). Closes #286 - * Fixed setting of multiple cookies. Closes #199 - * Changed; view naming convention is now NAME.TYPE.ENGINE (for example page.html.haml) - * Changed; session cookie is now httpOnly - * Changed; Request is no longer global - * Changed; Event is no longer global - * Changed; "sys" module is no longer global - * Changed; moved Request#download to Static plugin where it belongs - * Changed; Request instance created before body parsing. Closes #262 - * Changed; Pre-caching views in memory when "cache view contents" is enabled. Closes #253 - * Changed; Pre-caching view partials in memory when "cache view partials" is enabled - * Updated support to node --version 0.1.90 - * Updated dependencies - * Removed set("session cookie") in favour of use(Session, { cookie: { ... }}) - * Removed utils.mixin(); use Object#mergeDeep() - -0.8.0 / 2010-03-19 -================== - - * Added coffeescript example app. Closes #242 - * Changed; cache api now async friendly. Closes #240 - * Removed deprecated 'express/static' support. Use 'express/plugins/static' - -0.7.6 / 2010-03-19 -================== - - * Added Request#isXHR. Closes #229 - * Added `make install` (for the executable) - * Added `express` executable for setting up simple app templates - * Added "GET /public/*" to Static plugin, defaulting to /public - * Added Static plugin - * Fixed; Request#render() only calls cache.get() once - * Fixed; Namespacing View caches with "view:" - * Fixed; Namespacing Static caches with "static:" - * Fixed; Both example apps now use the Static plugin - * Fixed set("views"). Closes #239 - * Fixed missing space for combined log format - * Deprecated Request#sendfile() and 'express/static' - * Removed Server#running - -0.7.5 / 2010-03-16 -================== - - * Added Request#flash() support without args, now returns all flashes - * Updated ext submodule - -0.7.4 / 2010-03-16 -================== - - * Fixed session reaper - * Changed; class.js replacing js-oo Class implementation (quite a bit faster, no browser cruft) - -0.7.3 / 2010-03-16 -================== - - * Added package.json - * Fixed requiring of haml / sass due to kiwi removal - -0.7.2 / 2010-03-16 -================== - - * Fixed GIT submodules (HAH!) - -0.7.1 / 2010-03-16 -================== - - * Changed; Express now using submodules again until a PM is adopted - * Changed; chat example using millisecond conversions from ext - -0.7.0 / 2010-03-15 -================== - - * Added Request#pass() support (finds the next matching route, or the given path) - * Added Logger plugin (default "common" format replaces CommonLogger) - * Removed Profiler plugin - * Removed CommonLogger plugin - -0.6.0 / 2010-03-11 -================== - - * Added seed.yml for kiwi package management support - * Added HTTP client query string support when method is GET. Closes #205 - - * Added support for arbitrary view engines. - For example "foo.engine.html" will now require('engine'), - the exports from this module are cached after the first require(). - - * Added async plugin support - - * Removed usage of RESTful route funcs as http client - get() etc, use http.get() and friends - - * Removed custom exceptions - -0.5.0 / 2010-03-10 -================== - - * Added ext dependency (library of js extensions) - * Removed extname() / basename() utils. Use path module - * Removed toArray() util. Use arguments.values - * Removed escapeRegexp() util. Use RegExp.escape() - * Removed process.mixin() dependency. Use utils.mixin() - * Removed Collection - * Removed ElementCollection - * Shameless self promotion of ebook "Advanced JavaScript" (http://dev-mag.com) ;) - -0.4.0 / 2010-02-11 -================== - - * Added flash() example to sample upload app - * Added high level restful http client module (express/http) - * Changed; RESTful route functions double as HTTP clients. Closes #69 - * Changed; throwing error when routes are added at runtime - * Changed; defaulting render() context to the current Request. Closes #197 - * Updated haml submodule - -0.3.0 / 2010-02-11 -================== - - * Updated haml / sass submodules. Closes #200 - * Added flash message support. Closes #64 - * Added accepts() now allows multiple args. fixes #117 - * Added support for plugins to halt. Closes #189 - * Added alternate layout support. Closes #119 - * Removed Route#run(). Closes #188 - * Fixed broken specs due to use(Cookie) missing - -0.2.1 / 2010-02-05 -================== - - * Added "plot" format option for Profiler (for gnuplot processing) - * Added request number to Profiler plugin - * Fixed binary encoding for multi-part file uploads, was previously defaulting to UTF8 - * Fixed issue with routes not firing when not files are present. Closes #184 - * Fixed process.Promise -> events.Promise - -0.2.0 / 2010-02-03 -================== - - * Added parseParam() support for name[] etc. (allows for file inputs with "multiple" attr) Closes #180 - * Added Both Cache and Session option "reapInterval" may be "reapEvery". Closes #174 - * Added expiration support to cache api with reaper. Closes #133 - * Added cache Store.Memory#reap() - * Added Cache; cache api now uses first class Cache instances - * Added abstract session Store. Closes #172 - * Changed; cache Memory.Store#get() utilizing Collection - * Renamed MemoryStore -> Store.Memory - * Fixed use() of the same plugin several time will always use latest options. Closes #176 - -0.1.0 / 2010-02-03 -================== - - * Changed; Hooks (before / after) pass request as arg as well as evaluated in their context - * Updated node support to 0.1.27 Closes #169 - * Updated dirname(__filename) -> __dirname - * Updated libxmljs support to v0.2.0 - * Added session support with memory store / reaping - * Added quick uid() helper - * Added multi-part upload support - * Added Sass.js support / submodule - * Added production env caching view contents and static files - * Added static file caching. Closes #136 - * Added cache plugin with memory stores - * Added support to StaticFile so that it works with non-textual files. - * Removed dirname() helper - * Removed several globals (now their modules must be required) - -0.0.2 / 2010-01-10 -================== - - * Added view benchmarks; currently haml vs ejs - * Added Request#attachment() specs. Closes #116 - * Added use of node's parseQuery() util. Closes #123 - * Added `make init` for submodules - * Updated Haml - * Updated sample chat app to show messages on load - * Updated libxmljs parseString -> parseHtmlString - * Fixed `make init` to work with older versions of git - * Fixed specs can now run independant specs for those who cant build deps. Closes #127 - * Fixed issues introduced by the node url module changes. Closes 126. - * Fixed two assertions failing due to Collection#keys() returning strings - * Fixed faulty Collection#toArray() spec due to keys() returning strings - * Fixed `make test` now builds libxmljs.node before testing - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/LICENSE b/nodejs-mysql-tutorial/node_modules/express/LICENSE deleted file mode 100644 index 36075a3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2009-2011 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/Makefile b/nodejs-mysql-tutorial/node_modules/express/Makefile deleted file mode 100644 index 228f299..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/Makefile +++ /dev/null @@ -1,33 +0,0 @@ - -MOCHA_OPTS= --check-leaks -REPORTER = dot - -check: test - -test: test-unit test-acceptance - -test-unit: - @NODE_ENV=test ./node_modules/.bin/mocha \ - --reporter $(REPORTER) \ - $(MOCHA_OPTS) - -test-acceptance: - @NODE_ENV=test ./node_modules/.bin/mocha \ - --reporter $(REPORTER) \ - --bail \ - test/acceptance/*.js - -test-cov: lib-cov - @EXPRESS_COV=1 $(MAKE) test REPORTER=html-cov > coverage.html - -lib-cov: - @jscoverage lib lib-cov - -benchmark: - @./support/bench - -clean: - rm -f coverage.html - rm -fr lib-cov - -.PHONY: test test-unit test-acceptance benchmark clean diff --git a/nodejs-mysql-tutorial/node_modules/express/Readme.md b/nodejs-mysql-tutorial/node_modules/express/Readme.md deleted file mode 100644 index 61ee6ea..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/Readme.md +++ /dev/null @@ -1,180 +0,0 @@ -![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png) - - Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express) - -```js -var express = require('express'); -var app = express(); - -app.get('/', function(req, res){ - res.send('Hello World'); -}); - -app.listen(3000); -``` - -## Installation - - $ npm install -g express - -## Quick Start - - The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below: - - Create the app: - - $ npm install -g express - $ express /tmp/foo && cd /tmp/foo - - Install dependencies: - - $ npm install - - Start the server: - - $ node app - -## Features - - * Built on [Connect](http://github.com/senchalabs/connect) - * Robust routing - * HTTP helpers (redirection, caching, etc) - * View system supporting 14+ template engines - * Content negotiation - * Focus on high performance - * Environment based configuration - * Executable for generating applications quickly - * High test coverage - -## Philosophy - - The Express philosophy is to provide small, robust tooling for HTTP servers. Making - it a great solution for single page applications, web sites, hybrids, or public - HTTP APIs. - - Built on Connect you can use _only_ what you need, and nothing more, applications - can be as big or as small as you like, even a single file. Express does - not force you to use any specific ORM or template engine. With support for over - 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js) - you can quickly craft your perfect framework. - -## More Information - - * Join #express on freenode - * [Google Group](http://groups.google.com/group/express-js) for discussion - * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates - * Visit the [Wiki](http://github.com/visionmedia/express/wiki) - * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito) - * [Русскоязычная документация](http://jsman.ru/express/) - * Run express examples [online](https://runnable.com/express) - -## Viewing Examples - -Clone the Express repo, then install the dev dependencies to install all the example / test suite deps: - - $ git clone git://github.com/visionmedia/express.git --depth 1 - $ cd express - $ npm install - -then run whichever tests you want: - - $ node examples/content-negotiation - -## Running Tests - -To run the test suite first invoke the following command within the repo, installing the development dependencies: - - $ npm install - -then run the tests: - - $ make test - -## Contributors - -``` -project: express -commits: 3559 -active : 468 days -files : 237 -authors: - 1891 Tj Holowaychuk 53.1% - 1285 visionmedia 36.1% - 182 TJ Holowaychuk 5.1% - 54 Aaron Heckmann 1.5% - 34 csausdev 1.0% - 26 ciaranj 0.7% - 21 Robert Sköld 0.6% - 6 Guillermo Rauch 0.2% - 3 Dav Glass 0.1% - 3 Nick Poulden 0.1% - 2 Randy Merrill 0.1% - 2 Benny Wong 0.1% - 2 Hunter Loftis 0.1% - 2 Jake Gordon 0.1% - 2 Brian McKinney 0.1% - 2 Roman Shtylman 0.1% - 2 Ben Weaver 0.1% - 2 Dave Hoover 0.1% - 2 Eivind Fjeldstad 0.1% - 2 Daniel Shaw 0.1% - 1 Matt Colyer 0.0% - 1 Pau Ramon 0.0% - 1 Pero Pejovic 0.0% - 1 Peter Rekdal Sunde 0.0% - 1 Raynos 0.0% - 1 Teng Siong Ong 0.0% - 1 Viktor Kelemen 0.0% - 1 ctide 0.0% - 1 8bitDesigner 0.0% - 1 isaacs 0.0% - 1 mgutz 0.0% - 1 pikeas 0.0% - 1 shuwatto 0.0% - 1 tstrimple 0.0% - 1 ewoudj 0.0% - 1 Adam Sanderson 0.0% - 1 Andrii Kostenko 0.0% - 1 Andy Hiew 0.0% - 1 Arpad Borsos 0.0% - 1 Ashwin Purohit 0.0% - 1 Benjen 0.0% - 1 Darren Torpey 0.0% - 1 Greg Ritter 0.0% - 1 Gregory Ritter 0.0% - 1 James Herdman 0.0% - 1 Jim Snodgrass 0.0% - 1 Joe McCann 0.0% - 1 Jonathan Dumaine 0.0% - 1 Jonathan Palardy 0.0% - 1 Jonathan Zacsh 0.0% - 1 Justin Lilly 0.0% - 1 Ken Sato 0.0% - 1 Maciej Małecki 0.0% - 1 Masahiro Hayashi 0.0% -``` - -## License - -(The MIT License) - -Copyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/bin/express b/nodejs-mysql-tutorial/node_modules/express/bin/express deleted file mode 100644 index b93d0af..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/bin/express +++ /dev/null @@ -1,422 +0,0 @@ -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var exec = require('child_process').exec - , program = require('commander') - , mkdirp = require('mkdirp') - , pkg = require('../package.json') - , version = pkg.version - , os = require('os') - , fs = require('fs'); - -// CLI - -program - .version(version) - .option('-s, --sessions', 'add session support') - .option('-e, --ejs', 'add ejs engine support (defaults to jade)') - .option('-J, --jshtml', 'add jshtml engine support (defaults to jade)') - .option('-H, --hogan', 'add hogan.js engine support') - .option('-c, --css ', 'add stylesheet support (less|stylus) (defaults to plain css)') - .option('-f, --force', 'force on non-empty directory') - .parse(process.argv); - -// Path - -var path = program.args.shift() || '.'; - -// end-of-line code - -var eol = os.EOL - -// Template engine - -program.template = 'jade'; -if (program.ejs) program.template = 'ejs'; -if (program.jshtml) program.template = 'jshtml'; -if (program.hogan) program.template = 'hjs'; - -/** - * Routes index template. - */ - -var index = [ - '' - , '/*' - , ' * GET home page.' - , ' */' - , '' - , 'exports.index = function(req, res){' - , ' res.render(\'index\', { title: \'Express\' });' - , '};' -].join(eol); - -/** - * Routes users template. - */ - -var users = [ - '' - , '/*' - , ' * GET users listing.' - , ' */' - , '' - , 'exports.list = function(req, res){' - , ' res.send("respond with a resource");' - , '};' -].join(eol); - -/** - * Jade layout template. - */ - -var jadeLayout = [ - 'doctype 5' - , 'html' - , ' head' - , ' title= title' - , ' link(rel=\'stylesheet\', href=\'/stylesheets/style.css\')' - , ' body' - , ' block content' -].join(eol); - -/** - * Jade index template. - */ - -var jadeIndex = [ - 'extends layout' - , '' - , 'block content' - , ' h1= title' - , ' p Welcome to #{title}' -].join(eol); - -/** - * EJS index template. - */ - -var ejsIndex = [ - '' - , '' - , ' ' - , ' <%= title %>' - , ' ' - , ' ' - , ' ' - , '

        <%= title %>

        ' - , '

        Welcome to <%= title %>

        ' - , ' ' - , '' -].join(eol); - -/** - * JSHTML layout template. - */ - -var jshtmlLayout = [ - '' - , '' - , ' ' - , ' @write(title) ' - , ' ' - , ' ' - , ' ' - , ' @write(body)' - , ' ' - , '' -].join(eol); - -/** - * JSHTML index template. - */ - -var jshtmlIndex = [ - '

        @write(title)

        ' - , '

        Welcome to @write(title)

        ' -].join(eol); - -/** - * Hogan.js index template. - */ -var hoganIndex = [ - '' - , '' - , ' ' - , ' {{ title }}' - , ' ' - , ' ' - , ' ' - , '

        {{ title }}

        ' - , '

        Welcome to {{ title }}

        ' - , ' ' - , '' -].join(eol); - -/** - * Default css template. - */ - -var css = [ - 'body {' - , ' padding: 50px;' - , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;' - , '}' - , '' - , 'a {' - , ' color: #00B7FF;' - , '}' -].join(eol); - -/** - * Default less template. - */ - -var less = [ - 'body {' - , ' padding: 50px;' - , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;' - , '}' - , '' - , 'a {' - , ' color: #00B7FF;' - , '}' -].join(eol); - -/** - * Default stylus template. - */ - -var stylus = [ - 'body' - , ' padding: 50px' - , ' font: 14px "Lucida Grande", Helvetica, Arial, sans-serif' - , 'a' - , ' color: #00B7FF' -].join(eol); - -/** - * App template. - */ - -var app = [ - '' - , '/**' - , ' * Module dependencies.' - , ' */' - , '' - , 'var express = require(\'express\')' - , ' , routes = require(\'./routes\')' - , ' , user = require(\'./routes/user\')' - , ' , http = require(\'http\')' - , ' , path = require(\'path\');' - , '' - , 'var app = express();' - , '' - , '// all environments' - , 'app.set(\'port\', process.env.PORT || 3000);' - , 'app.set(\'views\', __dirname + \'/views\');' - , 'app.set(\'view engine\', \':TEMPLATE\');' - , 'app.use(express.favicon());' - , 'app.use(express.logger(\'dev\'));' - , 'app.use(express.bodyParser());' - , 'app.use(express.methodOverride());{sess}' - , 'app.use(app.router);{css}' - , 'app.use(express.static(path.join(__dirname, \'public\')));' - , '' - , '// development only' - , 'if (\'development\' == app.get(\'env\')) {' - , ' app.use(express.errorHandler());' - , '}' - , '' - , 'app.get(\'/\', routes.index);' - , 'app.get(\'/users\', user.list);' - , '' - , 'http.createServer(app).listen(app.get(\'port\'), function(){' - , ' console.log(\'Express server listening on port \' + app.get(\'port\'));' - , '});' - , '' -].join(eol); - -// Generate application - -(function createApplication(path) { - emptyDirectory(path, function(empty){ - if (empty || program.force) { - createApplicationAt(path); - } else { - program.confirm('destination is not empty, continue? ', function(ok){ - if (ok) { - process.stdin.destroy(); - createApplicationAt(path); - } else { - abort('aborting'); - } - }); - } - }); -})(path); - -/** - * Create application at the given directory `path`. - * - * @param {String} path - */ - -function createApplicationAt(path) { - console.log(); - process.on('exit', function(){ - console.log(); - console.log(' install dependencies:'); - console.log(' $ cd %s && npm install', path); - console.log(); - console.log(' run the app:'); - console.log(' $ node app'); - console.log(); - }); - - mkdir(path, function(){ - mkdir(path + '/public'); - mkdir(path + '/public/javascripts'); - mkdir(path + '/public/images'); - mkdir(path + '/public/stylesheets', function(){ - switch (program.css) { - case 'less': - write(path + '/public/stylesheets/style.less', less); - break; - case 'stylus': - write(path + '/public/stylesheets/style.styl', stylus); - break; - default: - write(path + '/public/stylesheets/style.css', css); - } - }); - - mkdir(path + '/routes', function(){ - write(path + '/routes/index.js', index); - write(path + '/routes/user.js', users); - }); - - mkdir(path + '/views', function(){ - switch (program.template) { - case 'ejs': - write(path + '/views/index.ejs', ejsIndex); - break; - case 'jade': - write(path + '/views/layout.jade', jadeLayout); - write(path + '/views/index.jade', jadeIndex); - break; - case 'jshtml': - write(path + '/views/layout.jshtml', jshtmlLayout); - write(path + '/views/index.jshtml', jshtmlIndex); - break; - case 'hjs': - write(path + '/views/index.hjs', hoganIndex); - break; - - } - }); - - // CSS Engine support - switch (program.css) { - case 'less': - app = app.replace('{css}', eol + ' app.use(require(\'less-middleware\')({ src: __dirname + \'/public\' }));'); - break; - case 'stylus': - app = app.replace('{css}', eol + ' app.use(require(\'stylus\').middleware(__dirname + \'/public\'));'); - break; - default: - app = app.replace('{css}', ''); - } - - // Session support - app = app.replace('{sess}', program.sessions - ? eol + 'app.use(express.cookieParser(\'your secret here\'));' + eol + 'app.use(express.session());' - : ''); - - // Template support - app = app.replace(':TEMPLATE', program.template); - - // package.json - var pkg = { - name: 'application-name' - , version: '0.0.1' - , private: true - , scripts: { start: 'node app.js' } - , dependencies: { - express: version - } - } - - if (program.template) pkg.dependencies[program.template] = '*'; - - // CSS Engine support - switch (program.css) { - case 'less': - pkg.dependencies['less-middleware'] = '*'; - break; - default: - if (program.css) { - pkg.dependencies[program.css] = '*'; - } - } - - write(path + '/package.json', JSON.stringify(pkg, null, 2)); - write(path + '/app.js', app); - }); -} - -/** - * Check if the given directory `path` is empty. - * - * @param {String} path - * @param {Function} fn - */ - -function emptyDirectory(path, fn) { - fs.readdir(path, function(err, files){ - if (err && 'ENOENT' != err.code) throw err; - fn(!files || !files.length); - }); -} - -/** - * echo str > path. - * - * @param {String} path - * @param {String} str - */ - -function write(path, str) { - fs.writeFile(path, str); - console.log(' \x1b[36mcreate\x1b[0m : ' + path); -} - -/** - * Mkdir -p. - * - * @param {String} path - * @param {Function} fn - */ - -function mkdir(path, fn) { - mkdirp(path, 0755, function(err){ - if (err) throw err; - console.log(' \033[36mcreate\033[0m : ' + path); - fn && fn(); - }); -} - -/** - * Exit with the given `str`. - * - * @param {String} str - */ - -function abort(str) { - console.error(str); - process.exit(1); -} diff --git a/nodejs-mysql-tutorial/node_modules/express/index.js b/nodejs-mysql-tutorial/node_modules/express/index.js deleted file mode 100644 index bfe9934..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/index.js +++ /dev/null @@ -1,4 +0,0 @@ - -module.exports = process.env.EXPRESS_COV - ? require('./lib-cov/express') - : require('./lib/express'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/application.js b/nodejs-mysql-tutorial/node_modules/express/lib/application.js deleted file mode 100644 index 6a3cf13..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/application.js +++ /dev/null @@ -1,536 +0,0 @@ -/** - * Module dependencies. - */ - -var connect = require('connect') - , Router = require('./router') - , methods = require('methods') - , middleware = require('./middleware') - , debug = require('debug')('express:application') - , locals = require('./utils').locals - , View = require('./view') - , utils = connect.utils - , path = require('path') - , http = require('http') - , join = path.join; - -/** - * Application prototype. - */ - -var app = exports = module.exports = {}; - -/** - * Initialize the server. - * - * - setup default configuration - * - setup default middleware - * - setup route reflection methods - * - * @api private - */ - -app.init = function(){ - this.cache = {}; - this.settings = {}; - this.engines = {}; - this.defaultConfiguration(); -}; - -/** - * Initialize application configuration. - * - * @api private - */ - -app.defaultConfiguration = function(){ - // default settings - this.enable('x-powered-by'); - this.set('env', process.env.NODE_ENV || 'development'); - this.set('subdomain offset', 2); - debug('booting in %s mode', this.get('env')); - - // implicit middleware - this.use(connect.query()); - this.use(middleware.init(this)); - - // inherit protos - this.on('mount', function(parent){ - this.request.__proto__ = parent.request; - this.response.__proto__ = parent.response; - this.engines.__proto__ = parent.engines; - this.settings.__proto__ = parent.settings; - }); - - // router - this._router = new Router(this); - this.routes = this._router.map; - this.__defineGetter__('router', function(){ - this._usedRouter = true; - this._router.caseSensitive = this.enabled('case sensitive routing'); - this._router.strict = this.enabled('strict routing'); - return this._router.middleware; - }); - - // setup locals - this.locals = locals(this); - - // default locals - this.locals.settings = this.settings; - - // default configuration - this.set('view', View); - this.set('views', process.cwd() + '/views'); - this.set('jsonp callback name', 'callback'); - - this.configure('development', function(){ - this.set('json spaces', 2); - }); - - this.configure('production', function(){ - this.enable('view cache'); - }); -}; - -/** - * Proxy `connect#use()` to apply settings to - * mounted applications. - * - * @param {String|Function|Server} route - * @param {Function|Server} fn - * @return {app} for chaining - * @api public - */ - -app.use = function(route, fn){ - var app; - - // default route to '/' - if ('string' != typeof route) fn = route, route = '/'; - - // express app - if (fn.handle && fn.set) app = fn; - - // restore .app property on req and res - if (app) { - app.route = route; - fn = function(req, res, next) { - var orig = req.app; - app.handle(req, res, function(err){ - req.app = res.app = orig; - req.__proto__ = orig.request; - res.__proto__ = orig.response; - next(err); - }); - }; - } - - connect.proto.use.call(this, route, fn); - - // mounted an app - if (app) { - app.parent = this; - app.emit('mount', this); - } - - return this; -}; - -/** - * Register the given template engine callback `fn` - * as `ext`. - * - * By default will `require()` the engine based on the - * file extension. For example if you try to render - * a "foo.jade" file Express will invoke the following internally: - * - * app.engine('jade', require('jade').__express); - * - * For engines that do not provide `.__express` out of the box, - * or if you wish to "map" a different extension to the template engine - * you may use this method. For example mapping the EJS template engine to - * ".html" files: - * - * app.engine('html', require('ejs').renderFile); - * - * In this case EJS provides a `.renderFile()` method with - * the same signature that Express expects: `(path, options, callback)`, - * though note that it aliases this method as `ejs.__express` internally - * so if you're using ".ejs" extensions you dont need to do anything. - * - * Some template engines do not follow this convention, the - * [Consolidate.js](https://github.com/visionmedia/consolidate.js) - * library was created to map all of node's popular template - * engines to follow this convention, thus allowing them to - * work seamlessly within Express. - * - * @param {String} ext - * @param {Function} fn - * @return {app} for chaining - * @api public - */ - -app.engine = function(ext, fn){ - if ('function' != typeof fn) throw new Error('callback function required'); - if ('.' != ext[0]) ext = '.' + ext; - this.engines[ext] = fn; - return this; -}; - -/** - * Map the given param placeholder `name`(s) to the given callback(s). - * - * Parameter mapping is used to provide pre-conditions to routes - * which use normalized placeholders. For example a _:user_id_ parameter - * could automatically load a user's information from the database without - * any additional code, - * - * The callback uses the samesignature as middleware, the only differencing - * being that the value of the placeholder is passed, in this case the _id_ - * of the user. Once the `next()` function is invoked, just like middleware - * it will continue on to execute the route, or subsequent parameter functions. - * - * app.param('user_id', function(req, res, next, id){ - * User.find(id, function(err, user){ - * if (err) { - * next(err); - * } else if (user) { - * req.user = user; - * next(); - * } else { - * next(new Error('failed to load user')); - * } - * }); - * }); - * - * @param {String|Array} name - * @param {Function} fn - * @return {app} for chaining - * @api public - */ - -app.param = function(name, fn){ - var self = this - , fns = [].slice.call(arguments, 1); - - // array - if (Array.isArray(name)) { - name.forEach(function(name){ - fns.forEach(function(fn){ - self.param(name, fn); - }); - }); - // param logic - } else if ('function' == typeof name) { - this._router.param(name); - // single - } else { - if (':' == name[0]) name = name.substr(1); - fns.forEach(function(fn){ - self._router.param(name, fn); - }); - } - - return this; -}; - -/** - * Assign `setting` to `val`, or return `setting`'s value. - * - * app.set('foo', 'bar'); - * app.get('foo'); - * // => "bar" - * - * Mounted servers inherit their parent server's settings. - * - * @param {String} setting - * @param {String} val - * @return {Server} for chaining - * @api public - */ - -app.set = function(setting, val){ - if (1 == arguments.length) { - return this.settings[setting]; - } else { - this.settings[setting] = val; - return this; - } -}; - -/** - * Return the app's absolute pathname - * based on the parent(s) that have - * mounted it. - * - * For example if the application was - * mounted as "/admin", which itself - * was mounted as "/blog" then the - * return value would be "/blog/admin". - * - * @return {String} - * @api private - */ - -app.path = function(){ - return this.parent - ? this.parent.path() + this.route - : ''; -}; - -/** - * Check if `setting` is enabled (truthy). - * - * app.enabled('foo') - * // => false - * - * app.enable('foo') - * app.enabled('foo') - * // => true - * - * @param {String} setting - * @return {Boolean} - * @api public - */ - -app.enabled = function(setting){ - return !!this.set(setting); -}; - -/** - * Check if `setting` is disabled. - * - * app.disabled('foo') - * // => true - * - * app.enable('foo') - * app.disabled('foo') - * // => false - * - * @param {String} setting - * @return {Boolean} - * @api public - */ - -app.disabled = function(setting){ - return !this.set(setting); -}; - -/** - * Enable `setting`. - * - * @param {String} setting - * @return {app} for chaining - * @api public - */ - -app.enable = function(setting){ - return this.set(setting, true); -}; - -/** - * Disable `setting`. - * - * @param {String} setting - * @return {app} for chaining - * @api public - */ - -app.disable = function(setting){ - return this.set(setting, false); -}; - -/** - * Configure callback for zero or more envs, - * when no `env` is specified that callback will - * be invoked for all environments. Any combination - * can be used multiple times, in any order desired. - * - * Examples: - * - * app.configure(function(){ - * // executed for all envs - * }); - * - * app.configure('stage', function(){ - * // executed staging env - * }); - * - * app.configure('stage', 'production', function(){ - * // executed for stage and production - * }); - * - * Note: - * - * These callbacks are invoked immediately, and - * are effectively sugar for the following: - * - * var env = process.env.NODE_ENV || 'development'; - * - * switch (env) { - * case 'development': - * ... - * break; - * case 'stage': - * ... - * break; - * case 'production': - * ... - * break; - * } - * - * @param {String} env... - * @param {Function} fn - * @return {app} for chaining - * @api public - */ - -app.configure = function(env, fn){ - var envs = 'all' - , args = [].slice.call(arguments); - fn = args.pop(); - if (args.length) envs = args; - if ('all' == envs || ~envs.indexOf(this.settings.env)) fn.call(this); - return this; -}; - -/** - * Delegate `.VERB(...)` calls to `router.VERB(...)`. - */ - -methods.forEach(function(method){ - app[method] = function(path){ - if ('get' == method && 1 == arguments.length) return this.set(path); - - // deprecated - if (Array.isArray(path)) { - console.trace('passing an array to app.VERB() is deprecated and will be removed in 4.0'); - } - - // if no router attached yet, attach the router - if (!this._usedRouter) this.use(this.router); - - // setup route - this._router[method].apply(this._router, arguments); - return this; - }; -}); - -/** - * Special-cased "all" method, applying the given route `path`, - * middleware, and callback to _every_ HTTP method. - * - * @param {String} path - * @param {Function} ... - * @return {app} for chaining - * @api public - */ - -app.all = function(path){ - var args = arguments; - methods.forEach(function(method){ - app[method].apply(this, args); - }, this); - return this; -}; - -// del -> delete alias - -app.del = app.delete; - -/** - * Render the given view `name` name with `options` - * and a callback accepting an error and the - * rendered template string. - * - * Example: - * - * app.render('email', { name: 'Tobi' }, function(err, html){ - * // ... - * }) - * - * @param {String} name - * @param {String|Function} options or fn - * @param {Function} fn - * @api public - */ - -app.render = function(name, options, fn){ - var opts = {} - , cache = this.cache - , engines = this.engines - , view; - - // support callback function as second arg - if ('function' == typeof options) { - fn = options, options = {}; - } - - // merge app.locals - utils.merge(opts, this.locals); - - // merge options._locals - if (options._locals) utils.merge(opts, options._locals); - - // merge options - utils.merge(opts, options); - - // set .cache unless explicitly provided - opts.cache = null == opts.cache - ? this.enabled('view cache') - : opts.cache; - - // primed cache - if (opts.cache) view = cache[name]; - - // view - if (!view) { - view = new (this.get('view'))(name, { - defaultEngine: this.get('view engine'), - root: this.get('views'), - engines: engines - }); - - if (!view.path) { - var err = new Error('Failed to lookup view "' + name + '"'); - err.view = view; - return fn(err); - } - - // prime the cache - if (opts.cache) cache[name] = view; - } - - // render - try { - view.render(opts, fn); - } catch (err) { - fn(err); - } -}; - -/** - * Listen for connections. - * - * A node `http.Server` is returned, with this - * application (which is a `Function`) as its - * callback. If you wish to create both an HTTP - * and HTTPS server you may do so with the "http" - * and "https" modules as shown here: - * - * var http = require('http') - * , https = require('https') - * , express = require('express') - * , app = express(); - * - * http.createServer(app).listen(80); - * https.createServer({ ... }, app).listen(443); - * - * @return {http.Server} - * @api public - */ - -app.listen = function(){ - var server = http.createServer(this); - return server.listen.apply(server, arguments); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/express.js b/nodejs-mysql-tutorial/node_modules/express/lib/express.js deleted file mode 100644 index f4258f1..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/express.js +++ /dev/null @@ -1,92 +0,0 @@ -/** - * Module dependencies. - */ - -var connect = require('connect') - , proto = require('./application') - , Route = require('./router/route') - , Router = require('./router') - , req = require('./request') - , res = require('./response') - , utils = connect.utils; - -/** - * Expose `createApplication()`. - */ - -exports = module.exports = createApplication; - -/** - * Framework version. - */ - -exports.version = '3.2.5'; - -/** - * Expose mime. - */ - -exports.mime = connect.mime; - -/** - * Create an express application. - * - * @return {Function} - * @api public - */ - -function createApplication() { - var app = connect(); - utils.merge(app, proto); - app.request = { __proto__: req }; - app.response = { __proto__: res }; - app.init(); - return app; -} - -/** - * Expose connect.middleware as express.* - * for example `express.logger` etc. - */ - -for (var key in connect.middleware) { - Object.defineProperty( - exports - , key - , Object.getOwnPropertyDescriptor(connect.middleware, key)); -} - -/** - * Error on createServer(). - */ - -exports.createServer = function(){ - console.warn('Warning: express.createServer() is deprecated, express'); - console.warn('applications no longer inherit from http.Server,'); - console.warn('please use:'); - console.warn(''); - console.warn(' var express = require("express");'); - console.warn(' var app = express();'); - console.warn(''); - return createApplication(); -}; - -/** - * Expose the prototypes. - */ - -exports.application = proto; -exports.request = req; -exports.response = res; - -/** - * Expose constructors. - */ - -exports.Route = Route; -exports.Router = Router; - -// Error handler title - -exports.errorHandler.title = 'Express'; - diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/middleware.js b/nodejs-mysql-tutorial/node_modules/express/lib/middleware.js deleted file mode 100644 index 308c5bb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/middleware.js +++ /dev/null @@ -1,33 +0,0 @@ - -/** - * Module dependencies. - */ - -var utils = require('./utils'); - -/** - * Initialization middleware, exposing the - * request and response to eachother, as well - * as defaulting the X-Powered-By header field. - * - * @param {Function} app - * @return {Function} - * @api private - */ - -exports.init = function(app){ - return function expressInit(req, res, next){ - req.app = res.app = app; - if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express'); - req.res = res; - res.req = req; - req.next = next; - - req.__proto__ = app.request; - res.__proto__ = app.response; - - res.locals = res.locals || utils.locals(res); - - next(); - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/request.js b/nodejs-mysql-tutorial/node_modules/express/lib/request.js deleted file mode 100644 index 1205c6c..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/request.js +++ /dev/null @@ -1,527 +0,0 @@ - -/** - * Module dependencies. - */ - -var http = require('http') - , utils = require('./utils') - , connect = require('connect') - , fresh = require('fresh') - , parseRange = require('range-parser') - , parse = connect.utils.parseUrl - , mime = connect.mime; - -/** - * Request prototype. - */ - -var req = exports = module.exports = { - __proto__: http.IncomingMessage.prototype -}; - -/** - * Return request header. - * - * The `Referrer` header field is special-cased, - * both `Referrer` and `Referer` are interchangeable. - * - * Examples: - * - * req.get('Content-Type'); - * // => "text/plain" - * - * req.get('content-type'); - * // => "text/plain" - * - * req.get('Something'); - * // => undefined - * - * Aliased as `req.header()`. - * - * @param {String} name - * @return {String} - * @api public - */ - -req.get = -req.header = function(name){ - switch (name = name.toLowerCase()) { - case 'referer': - case 'referrer': - return this.headers.referrer - || this.headers.referer; - default: - return this.headers[name]; - } -}; - -/** - * Check if the given `type(s)` is acceptable, returning - * the best match when true, otherwise `undefined`, in which - * case you should respond with 406 "Not Acceptable". - * - * The `type` value may be a single mime type string - * such as "application/json", the extension name - * such as "json", a comma-delimted list such as "json, html, text/plain", - * or an array `["json", "html", "text/plain"]`. When a list - * or array is given the _best_ match, if any is returned. - * - * Examples: - * - * // Accept: text/html - * req.accepts('html'); - * // => "html" - * - * // Accept: text/*, application/json - * req.accepts('html'); - * // => "html" - * req.accepts('text/html'); - * // => "text/html" - * req.accepts('json, text'); - * // => "json" - * req.accepts('application/json'); - * // => "application/json" - * - * // Accept: text/*, application/json - * req.accepts('image/png'); - * req.accepts('png'); - * // => undefined - * - * // Accept: text/*;q=.5, application/json - * req.accepts(['html', 'json']); - * req.accepts('html, json'); - * // => "json" - * - * @param {String|Array} type(s) - * @return {String} - * @api public - */ - -req.accepts = function(type){ - return utils.accepts(type, this.get('Accept')); -}; - -/** - * Check if the given `encoding` is accepted. - * - * @param {String} encoding - * @return {Boolean} - * @api public - */ - -req.acceptsEncoding = function(encoding){ - return ~this.acceptedEncodings.indexOf(encoding); -}; - -/** - * Check if the given `charset` is acceptable, - * otherwise you should respond with 406 "Not Acceptable". - * - * @param {String} charset - * @return {Boolean} - * @api public - */ - -req.acceptsCharset = function(charset){ - var accepted = this.acceptedCharsets; - return accepted.length - ? ~accepted.indexOf(charset) - : true; -}; - -/** - * Check if the given `lang` is acceptable, - * otherwise you should respond with 406 "Not Acceptable". - * - * @param {String} lang - * @return {Boolean} - * @api public - */ - -req.acceptsLanguage = function(lang){ - var accepted = this.acceptedLanguages; - return accepted.length - ? ~accepted.indexOf(lang) - : true; -}; - -/** - * Parse Range header field, - * capping to the given `size`. - * - * Unspecified ranges such as "0-" require - * knowledge of your resource length. In - * the case of a byte range this is of course - * the total number of bytes. If the Range - * header field is not given `null` is returned, - * `-1` when unsatisfiable, `-2` when syntactically invalid. - * - * NOTE: remember that ranges are inclusive, so - * for example "Range: users=0-3" should respond - * with 4 users when available, not 3. - * - * @param {Number} size - * @return {Array} - * @api public - */ - -req.range = function(size){ - var range = this.get('Range'); - if (!range) return; - return parseRange(size, range); -}; - -/** - * Return an array of encodings. - * - * Examples: - * - * ['gzip', 'deflate'] - * - * @return {Array} - * @api public - */ - -req.__defineGetter__('acceptedEncodings', function(){ - var accept = this.get('Accept-Encoding'); - return accept - ? accept.trim().split(/ *, */) - : []; -}); - -/** - * Return an array of Accepted media types - * ordered from highest quality to lowest. - * - * Examples: - * - * [ { value: 'application/json', - * quality: 1, - * type: 'application', - * subtype: 'json' }, - * { value: 'text/html', - * quality: 0.5, - * type: 'text', - * subtype: 'html' } ] - * - * @return {Array} - * @api public - */ - -req.__defineGetter__('accepted', function(){ - var accept = this.get('Accept'); - return accept - ? utils.parseAccept(accept) - : []; -}); - -/** - * Return an array of Accepted languages - * ordered from highest quality to lowest. - * - * Examples: - * - * Accept-Language: en;q=.5, en-us - * ['en-us', 'en'] - * - * @return {Array} - * @api public - */ - -req.__defineGetter__('acceptedLanguages', function(){ - var accept = this.get('Accept-Language'); - return accept - ? utils - .parseParams(accept) - .map(function(obj){ - return obj.value; - }) - : []; -}); - -/** - * Return an array of Accepted charsets - * ordered from highest quality to lowest. - * - * Examples: - * - * Accept-Charset: iso-8859-5;q=.2, unicode-1-1;q=0.8 - * ['unicode-1-1', 'iso-8859-5'] - * - * @return {Array} - * @api public - */ - -req.__defineGetter__('acceptedCharsets', function(){ - var accept = this.get('Accept-Charset'); - return accept - ? utils - .parseParams(accept) - .map(function(obj){ - return obj.value; - }) - : []; -}); - -/** - * Return the value of param `name` when present or `defaultValue`. - * - * - Checks route placeholders, ex: _/user/:id_ - * - Checks body params, ex: id=12, {"id":12} - * - Checks query string params, ex: ?id=12 - * - * To utilize request bodies, `req.body` - * should be an object. This can be done by using - * the `connect.bodyParser()` middleware. - * - * @param {String} name - * @param {Mixed} [defaultValue] - * @return {String} - * @api public - */ - -req.param = function(name, defaultValue){ - var params = this.params || {}; - var body = this.body || {}; - var query = this.query || {}; - if (null != params[name] && params.hasOwnProperty(name)) return params[name]; - if (null != body[name]) return body[name]; - if (null != query[name]) return query[name]; - return defaultValue; -}; - -/** - * Check if the incoming request contains the "Content-Type" - * header field, and it contains the give mime `type`. - * - * Examples: - * - * // With Content-Type: text/html; charset=utf-8 - * req.is('html'); - * req.is('text/html'); - * req.is('text/*'); - * // => true - * - * // When Content-Type is application/json - * req.is('json'); - * req.is('application/json'); - * req.is('application/*'); - * // => true - * - * req.is('html'); - * // => false - * - * @param {String} type - * @return {Boolean} - * @api public - */ - -req.is = function(type){ - var ct = this.get('Content-Type'); - if (!ct) return false; - ct = ct.split(';')[0]; - if (!~type.indexOf('/')) type = mime.lookup(type); - if (~type.indexOf('*')) { - type = type.split('/'); - ct = ct.split('/'); - if ('*' == type[0] && type[1] == ct[1]) return true; - if ('*' == type[1] && type[0] == ct[0]) return true; - return false; - } - return !! ~ct.indexOf(type); -}; - -/** - * Return the protocol string "http" or "https" - * when requested with TLS. When the "trust proxy" - * setting is enabled the "X-Forwarded-Proto" header - * field will be trusted. If you're running behind - * a reverse proxy that supplies https for you this - * may be enabled. - * - * @return {String} - * @api public - */ - -req.__defineGetter__('protocol', function(){ - var trustProxy = this.app.get('trust proxy'); - return this.connection.encrypted - ? 'https' - : trustProxy - ? (this.get('X-Forwarded-Proto') || 'http') - : 'http'; -}); - -/** - * Short-hand for: - * - * req.protocol == 'https' - * - * @return {Boolean} - * @api public - */ - -req.__defineGetter__('secure', function(){ - return 'https' == this.protocol; -}); - -/** - * Return the remote address, or when - * "trust proxy" is `true` return - * the upstream addr. - * - * @return {String} - * @api public - */ - -req.__defineGetter__('ip', function(){ - return this.ips[0] || this.connection.remoteAddress; -}); - -/** - * When "trust proxy" is `true`, parse - * the "X-Forwarded-For" ip address list. - * - * For example if the value were "client, proxy1, proxy2" - * you would receive the array `["client", "proxy1", "proxy2"]` - * where "proxy2" is the furthest down-stream. - * - * @return {Array} - * @api public - */ - -req.__defineGetter__('ips', function(){ - var trustProxy = this.app.get('trust proxy'); - var val = this.get('X-Forwarded-For'); - return trustProxy && val - ? val.split(/ *, */) - : []; -}); - -/** - * Return basic auth credentials. - * - * Examples: - * - * // http://tobi:hello@example.com - * req.auth - * // => { username: 'tobi', password: 'hello' } - * - * @return {Object} or undefined - * @api public - */ - -req.__defineGetter__('auth', function(){ - // missing - var auth = this.get('Authorization'); - if (!auth) return; - - // malformed - var parts = auth.split(' '); - if ('basic' != parts[0].toLowerCase()) return; - if (!parts[1]) return; - auth = parts[1]; - - // credentials - auth = new Buffer(auth, 'base64').toString().match(/^([^:]*):(.*)$/); - if (!auth) return; - return { username: auth[1], password: auth[2] }; -}); - -/** - * Return subdomains as an array. - * - * Subdomains are the dot-separated parts of the host before the main domain of - * the app. By default, the domain of the app is assumed to be the last two - * parts of the host. This can be changed by setting "subdomain offset". - * - * For example, if the domain is "tobi.ferrets.example.com": - * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. - * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. - * - * @return {Array} - * @api public - */ - -req.__defineGetter__('subdomains', function(){ - var offset = this.app.get('subdomain offset'); - return (this.host || '') - .split('.') - .reverse() - .slice(offset); -}); - -/** - * Short-hand for `url.parse(req.url).pathname`. - * - * @return {String} - * @api public - */ - -req.__defineGetter__('path', function(){ - return parse(this).pathname; -}); - -/** - * Parse the "Host" header field hostname. - * - * @return {String} - * @api public - */ - -req.__defineGetter__('host', function(){ - var trustProxy = this.app.get('trust proxy'); - var host = trustProxy && this.get('X-Forwarded-Host'); - host = host || this.get('Host'); - if (!host) return; - return host.split(':')[0]; -}); - -/** - * Check if the request is fresh, aka - * Last-Modified and/or the ETag - * still match. - * - * @return {Boolean} - * @api public - */ - -req.__defineGetter__('fresh', function(){ - var method = this.method; - var s = this.res.statusCode; - - // GET or HEAD for weak freshness validation only - if ('GET' != method && 'HEAD' != method) return false; - - // 2xx or 304 as per rfc2616 14.26 - if ((s >= 200 && s < 300) || 304 == s) { - return fresh(this.headers, this.res._headers); - } - - return false; -}); - -/** - * Check if the request is stale, aka - * "Last-Modified" and / or the "ETag" for the - * resource has changed. - * - * @return {Boolean} - * @api public - */ - -req.__defineGetter__('stale', function(){ - return !this.fresh; -}); - -/** - * Check if the request was an _XMLHttpRequest_. - * - * @return {Boolean} - * @api public - */ - -req.__defineGetter__('xhr', function(){ - var val = this.get('X-Requested-With') || ''; - return 'xmlhttprequest' == val.toLowerCase(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/response.js b/nodejs-mysql-tutorial/node_modules/express/lib/response.js deleted file mode 100644 index 68b7266..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/response.js +++ /dev/null @@ -1,757 +0,0 @@ -/** - * Module dependencies. - */ - -var http = require('http') - , path = require('path') - , connect = require('connect') - , utils = connect.utils - , sign = require('cookie-signature').sign - , normalizeType = require('./utils').normalizeType - , normalizeTypes = require('./utils').normalizeTypes - , etag = require('./utils').etag - , statusCodes = http.STATUS_CODES - , cookie = require('cookie') - , send = require('send') - , mime = connect.mime - , basename = path.basename - , extname = path.extname - , join = path.join; - -/** - * Response prototype. - */ - -var res = module.exports = { - __proto__: http.ServerResponse.prototype -}; - -/** - * Set status `code`. - * - * @param {Number} code - * @return {ServerResponse} - * @api public - */ - -res.status = function(code){ - this.statusCode = code; - return this; -}; - -/** - * Set Link header field with the given `links`. - * - * Examples: - * - * res.links({ - * next: 'http://api.example.com/users?page=2', - * last: 'http://api.example.com/users?page=5' - * }); - * - * @param {Object} links - * @return {ServerResponse} - * @api public - */ - -res.links = function(links){ - return this.set('Link', Object.keys(links).map(function(rel){ - return '<' + links[rel] + '>; rel="' + rel + '"'; - }).join(', ')); -}; - -/** - * Send a response. - * - * Examples: - * - * res.send(new Buffer('wahoo')); - * res.send({ some: 'json' }); - * res.send('

        some html

        '); - * res.send(404, 'Sorry, cant find that'); - * res.send(404); - * - * @param {Mixed} body or status - * @param {Mixed} body - * @return {ServerResponse} - * @api public - */ - -res.send = function(body){ - var req = this.req; - var head = 'HEAD' == req.method; - var len; - - // allow status / body - if (2 == arguments.length) { - // res.send(body, status) backwards compat - if ('number' != typeof body && 'number' == typeof arguments[1]) { - this.statusCode = arguments[1]; - } else { - this.statusCode = body; - body = arguments[1]; - } - } - - switch (typeof body) { - // response status - case 'number': - this.get('Content-Type') || this.type('txt'); - this.statusCode = body; - body = http.STATUS_CODES[body]; - break; - // string defaulting to html - case 'string': - if (!this.get('Content-Type')) { - this.charset = this.charset || 'utf-8'; - this.type('html'); - } - break; - case 'boolean': - case 'object': - if (null == body) { - body = ''; - } else if (Buffer.isBuffer(body)) { - this.get('Content-Type') || this.type('bin'); - } else { - return this.json(body); - } - break; - } - - // populate Content-Length - if (undefined !== body && !this.get('Content-Length')) { - this.set('Content-Length', len = Buffer.isBuffer(body) - ? body.length - : Buffer.byteLength(body)); - } - - // ETag support - // TODO: W/ support - if (len > 1024 && 'GET' == req.method) { - if (!this.get('ETag')) { - this.set('ETag', etag(body)); - } - } - - // freshness - if (req.fresh) this.statusCode = 304; - - // strip irrelevant headers - if (204 == this.statusCode || 304 == this.statusCode) { - this.removeHeader('Content-Type'); - this.removeHeader('Content-Length'); - this.removeHeader('Transfer-Encoding'); - body = ''; - } - - // respond - this.end(head ? null : body); - return this; -}; - -/** - * Send JSON response. - * - * Examples: - * - * res.json(null); - * res.json({ user: 'tj' }); - * res.json(500, 'oh noes!'); - * res.json(404, 'I dont have that'); - * - * @param {Mixed} obj or status - * @param {Mixed} obj - * @return {ServerResponse} - * @api public - */ - -res.json = function(obj){ - // allow status / body - if (2 == arguments.length) { - // res.json(body, status) backwards compat - if ('number' == typeof arguments[1]) { - this.statusCode = arguments[1]; - } else { - this.statusCode = obj; - obj = arguments[1]; - } - } - - // settings - var app = this.app; - var replacer = app.get('json replacer'); - var spaces = app.get('json spaces'); - var body = JSON.stringify(obj, replacer, spaces); - - // content-type - this.charset = this.charset || 'utf-8'; - this.get('Content-Type') || this.set('Content-Type', 'application/json'); - - return this.send(body); -}; - -/** - * Send JSON response with JSONP callback support. - * - * Examples: - * - * res.jsonp(null); - * res.jsonp({ user: 'tj' }); - * res.jsonp(500, 'oh noes!'); - * res.jsonp(404, 'I dont have that'); - * - * @param {Mixed} obj or status - * @param {Mixed} obj - * @return {ServerResponse} - * @api public - */ - -res.jsonp = function(obj){ - // allow status / body - if (2 == arguments.length) { - // res.json(body, status) backwards compat - if ('number' == typeof arguments[1]) { - this.statusCode = arguments[1]; - } else { - this.statusCode = obj; - obj = arguments[1]; - } - } - - // settings - var app = this.app; - var replacer = app.get('json replacer'); - var spaces = app.get('json spaces'); - var body = JSON.stringify(obj, replacer, spaces) - .replace(/\u2028/g, '\\u2028') - .replace(/\u2029/g, '\\u2029'); - var callback = this.req.query[app.get('jsonp callback name')]; - - // content-type - this.charset = this.charset || 'utf-8'; - this.set('Content-Type', 'application/json'); - - // jsonp - if (callback) { - this.set('Content-Type', 'text/javascript'); - var cb = callback.replace(/[^\[\]\w$.]/g, ''); - body = cb + ' && ' + cb + '(' + body + ');'; - } - - return this.send(body); -}; - -/** - * Transfer the file at the given `path`. - * - * Automatically sets the _Content-Type_ response header field. - * The callback `fn(err)` is invoked when the transfer is complete - * or when an error occurs. Be sure to check `res.sentHeader` - * if you wish to attempt responding, as the header and some data - * may have already been transferred. - * - * Options: - * - * - `maxAge` defaulting to 0 - * - `root` root directory for relative filenames - * - * Examples: - * - * The following example illustrates how `res.sendfile()` may - * be used as an alternative for the `static()` middleware for - * dynamic situations. The code backing `res.sendfile()` is actually - * the same code, so HTTP cache support etc is identical. - * - * app.get('/user/:uid/photos/:file', function(req, res){ - * var uid = req.params.uid - * , file = req.params.file; - * - * req.user.mayViewFilesFrom(uid, function(yes){ - * if (yes) { - * res.sendfile('/uploads/' + uid + '/' + file); - * } else { - * res.send(403, 'Sorry! you cant see that.'); - * } - * }); - * }); - * - * @param {String} path - * @param {Object|Function} options or fn - * @param {Function} fn - * @api public - */ - -res.sendfile = function(path, options, fn){ - var self = this - , req = self.req - , next = this.req.next - , options = options || {} - , done; - - // support function as second arg - if ('function' == typeof options) { - fn = options; - options = {}; - } - - // socket errors - req.socket.on('error', error); - - // errors - function error(err) { - if (done) return; - done = true; - - // clean up - cleanup(); - if (!self.headerSent) self.removeHeader('Content-Disposition'); - - // callback available - if (fn) return fn(err); - - // list in limbo if there's no callback - if (self.headerSent) return; - - // delegate - next(err); - } - - // streaming - function stream() { - if (done) return; - cleanup(); - if (fn) self.on('finish', fn); - } - - // cleanup - function cleanup() { - req.socket.removeListener('error', error); - } - - // transfer - var file = send(req, path); - if (options.root) file.root(options.root); - file.maxage(options.maxAge || 0); - file.on('error', error); - file.on('directory', next); - file.on('stream', stream); - file.pipe(this); - this.on('finish', cleanup); -}; - -/** - * Transfer the file at the given `path` as an attachment. - * - * Optionally providing an alternate attachment `filename`, - * and optional callback `fn(err)`. The callback is invoked - * when the data transfer is complete, or when an error has - * ocurred. Be sure to check `res.headerSent` if you plan to respond. - * - * This method uses `res.sendfile()`. - * - * @param {String} path - * @param {String|Function} filename or fn - * @param {Function} fn - * @api public - */ - -res.download = function(path, filename, fn){ - // support function as second arg - if ('function' == typeof filename) { - fn = filename; - filename = null; - } - - filename = filename || path; - this.set('Content-Disposition', 'attachment; filename="' + basename(filename) + '"'); - return this.sendfile(path, fn); -}; - -/** - * Set _Content-Type_ response header with `type` through `mime.lookup()` - * when it does not contain "/", or set the Content-Type to `type` otherwise. - * - * Examples: - * - * res.type('.html'); - * res.type('html'); - * res.type('json'); - * res.type('application/json'); - * res.type('png'); - * - * @param {String} type - * @return {ServerResponse} for chaining - * @api public - */ - -res.contentType = -res.type = function(type){ - return this.set('Content-Type', ~type.indexOf('/') - ? type - : mime.lookup(type)); -}; - -/** - * Respond to the Acceptable formats using an `obj` - * of mime-type callbacks. - * - * This method uses `req.accepted`, an array of - * acceptable types ordered by their quality values. - * When "Accept" is not present the _first_ callback - * is invoked, otherwise the first match is used. When - * no match is performed the server responds with - * 406 "Not Acceptable". - * - * Content-Type is set for you, however if you choose - * you may alter this within the callback using `res.type()` - * or `res.set('Content-Type', ...)`. - * - * res.format({ - * 'text/plain': function(){ - * res.send('hey'); - * }, - * - * 'text/html': function(){ - * res.send('

        hey

        '); - * }, - * - * 'appliation/json': function(){ - * res.send({ message: 'hey' }); - * } - * }); - * - * In addition to canonicalized MIME types you may - * also use extnames mapped to these types: - * - * res.format({ - * text: function(){ - * res.send('hey'); - * }, - * - * html: function(){ - * res.send('

        hey

        '); - * }, - * - * json: function(){ - * res.send({ message: 'hey' }); - * } - * }); - * - * By default Express passes an `Error` - * with a `.status` of 406 to `next(err)` - * if a match is not made. If you provide - * a `.default` callback it will be invoked - * instead. - * - * @param {Object} obj - * @return {ServerResponse} for chaining - * @api public - */ - -res.format = function(obj){ - var req = this.req - , next = req.next; - - var fn = obj.default; - if (fn) delete obj.default; - var keys = Object.keys(obj); - - var key = req.accepts(keys); - - this.set('Vary', 'Accept'); - - if (key) { - this.set('Content-Type', normalizeType(key).value); - obj[key](req, this, next); - } else if (fn) { - fn(); - } else { - var err = new Error('Not Acceptable'); - err.status = 406; - err.types = normalizeTypes(keys).map(function(o){ return o.value }); - next(err); - } - - return this; -}; - -/** - * Set _Content-Disposition_ header to _attachment_ with optional `filename`. - * - * @param {String} filename - * @return {ServerResponse} - * @api public - */ - -res.attachment = function(filename){ - if (filename) this.type(extname(filename)); - this.set('Content-Disposition', filename - ? 'attachment; filename="' + basename(filename) + '"' - : 'attachment'); - return this; -}; - -/** - * Set header `field` to `val`, or pass - * an object of header fields. - * - * Examples: - * - * res.set('Foo', ['bar', 'baz']); - * res.set('Accept', 'application/json'); - * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); - * - * Aliased as `res.header()`. - * - * @param {String|Object|Array} field - * @param {String} val - * @return {ServerResponse} for chaining - * @api public - */ - -res.set = -res.header = function(field, val){ - if (2 == arguments.length) { - if (Array.isArray(val)) val = val.map(String); - else val = String(val); - this.setHeader(field, val); - } else { - for (var key in field) { - this.set(key, field[key]); - } - } - return this; -}; - -/** - * Get value for header `field`. - * - * @param {String} field - * @return {String} - * @api public - */ - -res.get = function(field){ - return this.getHeader(field); -}; - -/** - * Clear cookie `name`. - * - * @param {String} name - * @param {Object} options - * @param {ServerResponse} for chaining - * @api public - */ - -res.clearCookie = function(name, options){ - var opts = { expires: new Date(1), path: '/' }; - return this.cookie(name, '', options - ? utils.merge(opts, options) - : opts); -}; - -/** - * Set cookie `name` to `val`, with the given `options`. - * - * Options: - * - * - `maxAge` max-age in milliseconds, converted to `expires` - * - `signed` sign the cookie - * - `path` defaults to "/" - * - * Examples: - * - * // "Remember Me" for 15 minutes - * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); - * - * // save as above - * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) - * - * @param {String} name - * @param {String|Object} val - * @param {Options} options - * @api public - */ - -res.cookie = function(name, val, options){ - options = utils.merge({}, options); - var secret = this.req.secret; - var signed = options.signed; - if (signed && !secret) throw new Error('connect.cookieParser("secret") required for signed cookies'); - if ('number' == typeof val) val = val.toString(); - if ('object' == typeof val) val = 'j:' + JSON.stringify(val); - if (signed) val = 's:' + sign(val, secret); - if ('maxAge' in options) { - options.expires = new Date(Date.now() + options.maxAge); - options.maxAge /= 1000; - } - if (null == options.path) options.path = '/'; - this.set('Set-Cookie', cookie.serialize(name, String(val), options)); - return this; -}; - - -/** - * Set the location header to `url`. - * - * The given `url` can also be the name of a mapped url, for - * example by default express supports "back" which redirects - * to the _Referrer_ or _Referer_ headers or "/". - * - * Examples: - * - * res.location('/foo/bar').; - * res.location('http://example.com'); - * res.location('../login'); // /blog/post/1 -> /blog/login - * - * Mounting: - * - * When an application is mounted and `res.location()` - * is given a path that does _not_ lead with "/" it becomes - * relative to the mount-point. For example if the application - * is mounted at "/blog", the following would become "/blog/login". - * - * res.location('login'); - * - * While the leading slash would result in a location of "/login": - * - * res.location('/login'); - * - * @param {String} url - * @api public - */ - -res.location = function(url){ - var app = this.app - , req = this.req; - - // setup redirect map - var map = { back: req.get('Referrer') || '/' }; - - // perform redirect - url = map[url] || url; - - // relative - if (!~url.indexOf('://') && 0 != url.indexOf('//')) { - var path - - // relative to path - if ('.' == url[0]) { - path = req.originalUrl.split('?')[0] - url = path + ('/' == path[path.length - 1] ? '' : '/') + url; - // relative to mount-point - } else if ('/' != url[0]) { - path = app.path(); - url = path + '/' + url; - } - } - - // Respond - this.set('Location', url); - return this; -}; - -/** - * Redirect to the given `url` with optional response `status` - * defaulting to 302. - * - * The resulting `url` is determined by `res.location()`, so - * it will play nicely with mounted apps, relative paths, - * `"back"` etc. - * - * Examples: - * - * res.redirect('/foo/bar'); - * res.redirect('http://example.com'); - * res.redirect(301, 'http://example.com'); - * res.redirect('http://example.com', 301); - * res.redirect('../login'); // /blog/post/1 -> /blog/login - * - * @param {String} url - * @param {Number} code - * @api public - */ - -res.redirect = function(url){ - var app = this.app - , head = 'HEAD' == this.req.method - , status = 302 - , body; - - // allow status / url - if (2 == arguments.length) { - if ('number' == typeof url) { - status = url; - url = arguments[1]; - } else { - status = arguments[1]; - } - } - - // Set location header - this.location(url); - url = this.get('Location'); - - // Support text/{plain,html} by default - this.format({ - text: function(){ - body = statusCodes[status] + '. Redirecting to ' + encodeURI(url); - }, - - html: function(){ - var u = utils.escape(url); - body = '

        ' + statusCodes[status] + '. Redirecting to ' + u + '

        '; - }, - - default: function(){ - body = ''; - } - }); - - // Respond - this.statusCode = status; - this.set('Content-Length', Buffer.byteLength(body)); - this.end(head ? null : body); -}; - -/** - * Render `view` with the given `options` and optional callback `fn`. - * When a callback function is given a response will _not_ be made - * automatically, otherwise a response of _200_ and _text/html_ is given. - * - * Options: - * - * - `cache` boolean hinting to the engine it should cache - * - `filename` filename of the view being rendered - * - * @param {String} view - * @param {Object|Function} options or callback function - * @param {Function} fn - * @api public - */ - -res.render = function(view, options, fn){ - var self = this - , options = options || {} - , req = this.req - , app = req.app; - - // support callback function as second arg - if ('function' == typeof options) { - fn = options, options = {}; - } - - // merge res.locals - options._locals = self.locals; - - // default callback to respond - fn = fn || function(err, str){ - if (err) return req.next(err); - self.send(str); - }; - - // render - app.render(view, options, fn); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/router/index.js b/nodejs-mysql-tutorial/node_modules/express/lib/router/index.js deleted file mode 100644 index 662dc29..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/router/index.js +++ /dev/null @@ -1,273 +0,0 @@ -/** - * Module dependencies. - */ - -var Route = require('./route') - , utils = require('../utils') - , methods = require('methods') - , debug = require('debug')('express:router') - , parse = require('connect').utils.parseUrl; - -/** - * Expose `Router` constructor. - */ - -exports = module.exports = Router; - -/** - * Initialize a new `Router` with the given `options`. - * - * @param {Object} options - * @api private - */ - -function Router(options) { - options = options || {}; - var self = this; - this.map = {}; - this.params = {}; - this._params = []; - this.caseSensitive = options.caseSensitive; - this.strict = options.strict; - this.middleware = function router(req, res, next){ - self._dispatch(req, res, next); - }; -} - -/** - * Register a param callback `fn` for the given `name`. - * - * @param {String|Function} name - * @param {Function} fn - * @return {Router} for chaining - * @api public - */ - -Router.prototype.param = function(name, fn){ - // param logic - if ('function' == typeof name) { - this._params.push(name); - return; - } - - // apply param functions - var params = this._params - , len = params.length - , ret; - - for (var i = 0; i < len; ++i) { - if (ret = params[i](name, fn)) { - fn = ret; - } - } - - // ensure we end up with a - // middleware function - if ('function' != typeof fn) { - throw new Error('invalid param() call for ' + name + ', got ' + fn); - } - - (this.params[name] = this.params[name] || []).push(fn); - return this; -}; - -/** - * Route dispatcher aka the route "middleware". - * - * @param {IncomingMessage} req - * @param {ServerResponse} res - * @param {Function} next - * @api private - */ - -Router.prototype._dispatch = function(req, res, next){ - var params = this.params - , self = this; - - debug('dispatching %s %s (%s)', req.method, req.url, req.originalUrl); - - // route dispatch - (function pass(i, err){ - var paramCallbacks - , paramIndex = 0 - , paramVal - , route - , keys - , key; - - // match next route - function nextRoute(err) { - pass(req._route_index + 1, err); - } - - // match route - req.route = route = self.matchRequest(req, i); - - // no route - if (!route) return next(err); - debug('matched %s %s', route.method, route.path); - - // we have a route - // start at param 0 - req.params = route.params; - keys = route.keys; - i = 0; - - // param callbacks - function param(err) { - paramIndex = 0; - key = keys[i++]; - paramVal = key && req.params[key.name]; - paramCallbacks = key && params[key.name]; - - try { - if ('route' == err) { - nextRoute(); - } else if (err) { - i = 0; - callbacks(err); - } else if (paramCallbacks && undefined !== paramVal) { - paramCallback(); - } else if (key) { - param(); - } else { - i = 0; - callbacks(); - } - } catch (err) { - param(err); - } - }; - - param(err); - - // single param callbacks - function paramCallback(err) { - var fn = paramCallbacks[paramIndex++]; - if (err || !fn) return param(err); - fn(req, res, paramCallback, paramVal, key.name); - } - - // invoke route callbacks - function callbacks(err) { - var fn = route.callbacks[i++]; - try { - if ('route' == err) { - nextRoute(); - } else if (err && fn) { - if (fn.length < 4) return callbacks(err); - fn(err, req, res, callbacks); - } else if (fn) { - if (fn.length < 4) return fn(req, res, callbacks); - callbacks(); - } else { - nextRoute(err); - } - } catch (err) { - callbacks(err); - } - } - })(0); -}; - -/** - * Attempt to match a route for `req` - * with optional starting index of `i` - * defaulting to 0. - * - * @param {IncomingMessage} req - * @param {Number} i - * @return {Route} - * @api private - */ - -Router.prototype.matchRequest = function(req, i, head){ - var method = req.method.toLowerCase() - , url = parse(req) - , path = url.pathname - , routes = this.map - , i = i || 0 - , route; - - // HEAD support - if (!head && 'head' == method) { - route = this.matchRequest(req, i, true); - if (route) return route; - method = 'get'; - } - - // routes for this method - if (routes = routes[method]) { - - // matching routes - for (var len = routes.length; i < len; ++i) { - route = routes[i]; - if (route.match(path)) { - req._route_index = i; - return route; - } - } - } -}; - -/** - * Attempt to match a route for `method` - * and `url` with optional starting - * index of `i` defaulting to 0. - * - * @param {String} method - * @param {String} url - * @param {Number} i - * @return {Route} - * @api private - */ - -Router.prototype.match = function(method, url, i, head){ - var req = { method: method, url: url }; - return this.matchRequest(req, i, head); -}; - -/** - * Route `method`, `path`, and one or more callbacks. - * - * @param {String} method - * @param {String} path - * @param {Function} callback... - * @return {Router} for chaining - * @api private - */ - -Router.prototype.route = function(method, path, callbacks){ - var method = method.toLowerCase() - , callbacks = utils.flatten([].slice.call(arguments, 2)); - - // ensure path was given - if (!path) throw new Error('Router#' + method + '() requires a path'); - - // ensure all callbacks are functions - callbacks.forEach(function(fn, i){ - if ('function' == typeof fn) return; - var type = {}.toString.call(fn); - var msg = '.' + method + '() requires callback functions but got a ' + type; - throw new Error(msg); - }); - - // create the route - debug('defined %s %s', method, path); - var route = new Route(method, path, callbacks, { - sensitive: this.caseSensitive, - strict: this.strict - }); - - // add it - (this.map[method] = this.map[method] || []).push(route); - return this; -}; - -methods.forEach(function(method){ - Router.prototype[method] = function(path){ - var args = [method].concat([].slice.call(arguments)); - this.route.apply(this, args); - return this; - }; -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/router/route.js b/nodejs-mysql-tutorial/node_modules/express/lib/router/route.js deleted file mode 100644 index c1a0b5e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/router/route.js +++ /dev/null @@ -1,72 +0,0 @@ - -/** - * Module dependencies. - */ - -var utils = require('../utils'); - -/** - * Expose `Route`. - */ - -module.exports = Route; - -/** - * Initialize `Route` with the given HTTP `method`, `path`, - * and an array of `callbacks` and `options`. - * - * Options: - * - * - `sensitive` enable case-sensitive routes - * - `strict` enable strict matching for trailing slashes - * - * @param {String} method - * @param {String} path - * @param {Array} callbacks - * @param {Object} options. - * @api private - */ - -function Route(method, path, callbacks, options) { - options = options || {}; - this.path = path; - this.method = method; - this.callbacks = callbacks; - this.regexp = utils.pathRegexp(path - , this.keys = [] - , options.sensitive - , options.strict); -} - -/** - * Check if this route matches `path`, if so - * populate `.params`. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - -Route.prototype.match = function(path){ - var keys = this.keys - , params = this.params = [] - , m = this.regexp.exec(path); - - if (!m) return false; - - for (var i = 1, len = m.length; i < len; ++i) { - var key = keys[i - 1]; - - var val = 'string' == typeof m[i] - ? decodeURIComponent(m[i]) - : m[i]; - - if (key) { - params[key.name] = val; - } else { - params.push(val); - } - } - - return true; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/utils.js b/nodejs-mysql-tutorial/node_modules/express/lib/utils.js deleted file mode 100644 index fd245a8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/utils.js +++ /dev/null @@ -1,313 +0,0 @@ - -/** - * Module dependencies. - */ - -var mime = require('connect').mime - , crc32 = require('buffer-crc32'); - -/** - * toString ref. - */ - -var toString = {}.toString; - -/** - * Return ETag for `body`. - * - * @param {String|Buffer} body - * @return {String} - * @api private - */ - -exports.etag = function(body){ - return '"' + crc32.signed(body) + '"'; -}; - -/** - * Make `locals()` bound to the given `obj`. - * - * This is used for `app.locals` and `res.locals`. - * - * @param {Object} obj - * @return {Function} - * @api private - */ - -exports.locals = function(obj){ - function locals(obj){ - for (var key in obj) locals[key] = obj[key]; - return obj; - }; - - return locals; -}; - -/** - * Check if `path` looks absolute. - * - * @param {String} path - * @return {Boolean} - * @api private - */ - -exports.isAbsolute = function(path){ - if ('/' == path[0]) return true; - if (':' == path[1] && '\\' == path[2]) return true; -}; - -/** - * Flatten the given `arr`. - * - * @param {Array} arr - * @return {Array} - * @api private - */ - -exports.flatten = function(arr, ret){ - var ret = ret || [] - , len = arr.length; - for (var i = 0; i < len; ++i) { - if (Array.isArray(arr[i])) { - exports.flatten(arr[i], ret); - } else { - ret.push(arr[i]); - } - } - return ret; -}; - -/** - * Normalize the given `type`, for example "html" becomes "text/html". - * - * @param {String} type - * @return {Object} - * @api private - */ - -exports.normalizeType = function(type){ - return ~type.indexOf('/') - ? acceptParams(type) - : { value: mime.lookup(type), params: {} }; -}; - -/** - * Normalize `types`, for example "html" becomes "text/html". - * - * @param {Array} types - * @return {Array} - * @api private - */ - -exports.normalizeTypes = function(types){ - var ret = []; - - for (var i = 0; i < types.length; ++i) { - ret.push(exports.normalizeType(types[i])); - } - - return ret; -}; - -/** - * Return the acceptable type in `types`, if any. - * - * @param {Array} types - * @param {String} str - * @return {String} - * @api private - */ - -exports.acceptsArray = function(types, str){ - // accept anything when Accept is not present - if (!str) return types[0]; - - // parse - var accepted = exports.parseAccept(str) - , normalized = exports.normalizeTypes(types) - , len = accepted.length; - - for (var i = 0; i < len; ++i) { - for (var j = 0, jlen = types.length; j < jlen; ++j) { - if (exports.accept(normalized[j], accepted[i])) { - return types[j]; - } - } - } -}; - -/** - * Check if `type(s)` are acceptable based on - * the given `str`. - * - * @param {String|Array} type(s) - * @param {String} str - * @return {Boolean|String} - * @api private - */ - -exports.accepts = function(type, str){ - if ('string' == typeof type) type = type.split(/ *, */); - return exports.acceptsArray(type, str); -}; - -/** - * Check if `type` array is acceptable for `other`. - * - * @param {Object} type - * @param {Object} other - * @return {Boolean} - * @api private - */ - -exports.accept = function(type, other){ - var t = type.value.split('/'); - return (t[0] == other.type || '*' == other.type) - && (t[1] == other.subtype || '*' == other.subtype) - && paramsEqual(type.params, other.params); -}; - -/** - * Check if accept params are equal. - * - * @param {Object} a - * @param {Object} b - * @return {Boolean} - * @api private - */ - -function paramsEqual(a, b){ - return !Object.keys(a).some(function(k) { - return a[k] != b[k]; - }); -} - -/** - * Parse accept `str`, returning - * an array objects containing - * `.type` and `.subtype` along - * with the values provided by - * `parseQuality()`. - * - * @param {Type} name - * @return {Type} - * @api private - */ - -exports.parseAccept = function(str){ - return exports - .parseParams(str) - .map(function(obj){ - var parts = obj.value.split('/'); - obj.type = parts[0]; - obj.subtype = parts[1]; - return obj; - }); -}; - -/** - * Parse quality `str`, returning an - * array of objects with `.value`, - * `.quality` and optional `.params` - * - * @param {String} str - * @return {Array} - * @api private - */ - -exports.parseParams = function(str){ - return str - .split(/ *, */) - .map(acceptParams) - .filter(function(obj){ - return obj.quality; - }) - .sort(function(a, b){ - if (a.quality === b.quality) { - return a.originalIndex - b.originalIndex; - } else { - return b.quality - a.quality; - } - }); -}; - -/** - * Parse accept params `str` returning an - * object with `.value`, `.quality` and `.params`. - * also includes `.originalIndex` for stable sorting - * - * @param {String} str - * @return {Object} - * @api private - */ - -function acceptParams(str, index) { - var parts = str.split(/ *; */); - var ret = { value: parts[0], quality: 1, params: {}, originalIndex: index }; - - for (var i = 1; i < parts.length; ++i) { - var pms = parts[i].split(/ *= */); - if ('q' == pms[0]) { - ret.quality = parseFloat(pms[1]); - } else { - ret.params[pms[0]] = pms[1]; - } - } - - return ret; -} - -/** - * Escape special characters in the given string of html. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html) { - return String(html) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); -}; - -/** - * Normalize the given path string, - * returning a regular expression. - * - * An empty array should be passed, - * which will contain the placeholder - * key names. For example "/user/:id" will - * then contain ["id"]. - * - * @param {String|RegExp|Array} path - * @param {Array} keys - * @param {Boolean} sensitive - * @param {Boolean} strict - * @return {RegExp} - * @api private - */ - -exports.pathRegexp = function(path, keys, sensitive, strict) { - if (toString.call(path) == '[object RegExp]') return path; - if (Array.isArray(path)) path = '(' + path.join('|') + ')'; - path = path - .concat(strict ? '' : '/?') - .replace(/\/\(/g, '(?:/') - .replace(/(\/)?(\.)?:(\w+)(?:(\(.*?\)))?(\?)?(\*)?/g, function(_, slash, format, key, capture, optional, star){ - keys.push({ name: key, optional: !! optional }); - slash = slash || ''; - return '' - + (optional ? '' : slash) - + '(?:' - + (optional ? slash : '') - + (format || '') + (capture || (format && '([^/.]+?)' || '([^/]+?)')) + ')' - + (optional || '') - + (star ? '(/*)?' : ''); - }) - .replace(/([\/.])/g, '\\$1') - .replace(/\*/g, '(.*)'); - return new RegExp('^' + path + '$', sensitive ? '' : 'i'); -} diff --git a/nodejs-mysql-tutorial/node_modules/express/lib/view.js b/nodejs-mysql-tutorial/node_modules/express/lib/view.js deleted file mode 100644 index b9dc69e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/lib/view.js +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Module dependencies. - */ - -var path = require('path') - , fs = require('fs') - , utils = require('./utils') - , dirname = path.dirname - , basename = path.basename - , extname = path.extname - , exists = fs.existsSync || path.existsSync - , join = path.join; - -/** - * Expose `View`. - */ - -module.exports = View; - -/** - * Initialize a new `View` with the given `name`. - * - * Options: - * - * - `defaultEngine` the default template engine name - * - `engines` template engine require() cache - * - `root` root path for view lookup - * - * @param {String} name - * @param {Object} options - * @api private - */ - -function View(name, options) { - options = options || {}; - this.name = name; - this.root = options.root; - var engines = options.engines; - this.defaultEngine = options.defaultEngine; - var ext = this.ext = extname(name); - if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.'); - if (!ext) name += (ext = this.ext = ('.' != this.defaultEngine[0] ? '.' : '') + this.defaultEngine); - this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); - this.path = this.lookup(name); -} - -/** - * Lookup view by the given `path` - * - * @param {String} path - * @return {String} - * @api private - */ - -View.prototype.lookup = function(path){ - var ext = this.ext; - - // . - if (!utils.isAbsolute(path)) path = join(this.root, path); - if (exists(path)) return path; - - // /index. - path = join(dirname(path), basename(path, ext), 'index' + ext); - if (exists(path)) return path; -}; - -/** - * Render with the given `options` and callback `fn(err, str)`. - * - * @param {Object} options - * @param {Function} fn - * @api private - */ - -View.prototype.render = function(options, fn){ - this.engine(this.path, options, fn); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore deleted file mode 100644 index b512c09..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml deleted file mode 100644 index 7a902e8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 -notifications: - email: - recipients: - - brianloveswords@gmail.com \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md deleted file mode 100644 index 0d9d8b8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# buffer-crc32 - -[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32) - -crc32 that works with binary data and fancy character sets, outputs -buffer, signed or unsigned data and has tests. - -Derived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix - -# install -``` -npm install buffer-crc32 -``` - -# example -```js -var crc32 = require('buffer-crc32'); -// works with buffers -var buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00]) -crc32(buf) // -> - -// has convenience methods for getting signed or unsigned ints -crc32.signed(buf) // -> -1805997238 -crc32.unsigned(buf) // -> 2488970058 - -// will cast to buffer if given a string, so you can -// directly use foreign characters safely -crc32('自動販売機') // -> - -// and works in append mode too -var partialCrc = crc32('hey'); -var partialCrc = crc32(' ', partialCrc); -var partialCrc = crc32('sup', partialCrc); -var partialCrc = crc32(' ', partialCrc); -var finalCrc = crc32('bros', partialCrc); // -> -``` - -# tests -This was tested against the output of zlib's crc32 method. You can run -the tests with`npm test` (requires tap) - -# see also -https://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also -supports buffer inputs and return unsigned ints (thanks @tjholowaychuk). - -# license -MIT/X11 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js deleted file mode 100644 index e29ce3e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/index.js +++ /dev/null @@ -1,88 +0,0 @@ -var Buffer = require('buffer').Buffer; - -var CRC_TABLE = [ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, - 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, - 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, - 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, - 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, - 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, - 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, - 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, - 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, - 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, - 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, - 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, - 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, - 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, - 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, - 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, - 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, - 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, - 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, - 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, - 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, - 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, - 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, - 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, - 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, - 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, - 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, - 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, - 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, - 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, - 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, - 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, - 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, - 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, - 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, - 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, - 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, - 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, - 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, - 0x2d02ef8d -]; - -function bufferizeInt(num) { - var tmp = Buffer(4); - tmp.writeInt32BE(num, 0); - return tmp; -} - -function _crc32(buf, previous) { - if (!Buffer.isBuffer(buf)) { - buf = Buffer(buf); - } - if (Buffer.isBuffer(previous)) { - previous = previous.readUInt32BE(0); - } - var crc = ~~previous ^ -1; - for (var n = 0; n < buf.length; n++) { - crc = CRC_TABLE[(crc ^ buf[n]) & 0xff] ^ (crc >>> 8); - } - return (crc ^ -1); -} - -function crc32() { - return bufferizeInt(_crc32.apply(null, arguments)); -} -crc32.signed = function () { - return _crc32.apply(null, arguments); -}; -crc32.unsigned = function () { - return _crc32.apply(null, arguments) >>> 0; -}; - -module.exports = crc32; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json deleted file mode 100644 index 4bb469a..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "author": { - "name": "Brian J. Brennan", - "email": "brianloveswords@gmail.com", - "url": "http://bjb.io" - }, - "name": "buffer-crc32", - "description": "A pure javascript CRC32 algorithm that plays nice with binary data", - "version": "0.2.1", - "contributors": [ - { - "name": "Vladimir Kuznetsov" - } - ], - "homepage": "https://github.com/brianloveswords/buffer-crc32", - "repository": { - "type": "git", - "url": "git://github.com/brianloveswords/buffer-crc32.git" - }, - "main": "index.js", - "scripts": { - "test": "./node_modules/.bin/tap tests/*.test.js" - }, - "dependencies": {}, - "devDependencies": { - "tap": "~0.2.5" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# buffer-crc32\n\n[![Build Status](https://secure.travis-ci.org/brianloveswords/buffer-crc32.png?branch=master)](http://travis-ci.org/brianloveswords/buffer-crc32)\n\ncrc32 that works with binary data and fancy character sets, outputs\nbuffer, signed or unsigned data and has tests.\n\nDerived from the sample CRC implementation in the PNG specification: http://www.w3.org/TR/PNG/#D-CRCAppendix\n\n# install\n```\nnpm install buffer-crc32\n```\n\n# example\n```js\nvar crc32 = require('buffer-crc32');\n// works with buffers\nvar buf = Buffer([0x00, 0x73, 0x75, 0x70, 0x20, 0x62, 0x72, 0x6f, 0x00])\ncrc32(buf) // -> \n\n// has convenience methods for getting signed or unsigned ints\ncrc32.signed(buf) // -> -1805997238\ncrc32.unsigned(buf) // -> 2488970058\n\n// will cast to buffer if given a string, so you can\n// directly use foreign characters safely\ncrc32('自動販売機') // -> \n\n// and works in append mode too\nvar partialCrc = crc32('hey');\nvar partialCrc = crc32(' ', partialCrc);\nvar partialCrc = crc32('sup', partialCrc);\nvar partialCrc = crc32(' ', partialCrc);\nvar finalCrc = crc32('bros', partialCrc); // -> \n```\n\n# tests\nThis was tested against the output of zlib's crc32 method. You can run\nthe tests with`npm test` (requires tap)\n\n# see also\nhttps://github.com/alexgorbatchev/node-crc, `crc.buffer.crc32` also\nsupports buffer inputs and return unsigned ints (thanks @tjholowaychuk).\n\n# license\nMIT/X11\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/brianloveswords/buffer-crc32/issues" - }, - "_id": "buffer-crc32@0.2.1", - "_from": "buffer-crc32@0.2.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js deleted file mode 100644 index bb0f9ef..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/buffer-crc32/tests/crc.test.js +++ /dev/null @@ -1,89 +0,0 @@ -var crc32 = require('..'); -var test = require('tap').test; - -test('simple crc32 is no problem', function (t) { - var input = Buffer('hey sup bros'); - var expected = Buffer([0x47, 0xfa, 0x55, 0x70]); - t.same(crc32(input), expected); - t.end(); -}); - -test('another simple one', function (t) { - var input = Buffer('IEND'); - var expected = Buffer([0xae, 0x42, 0x60, 0x82]); - t.same(crc32(input), expected); - t.end(); -}); - -test('slightly more complex', function (t) { - var input = Buffer([0x00, 0x00, 0x00]); - var expected = Buffer([0xff, 0x41, 0xd9, 0x12]); - t.same(crc32(input), expected); - t.end(); -}); - -test('complex crc32 gets calculated like a champ', function (t) { - var input = Buffer('शीर्षक'); - var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); - t.same(crc32(input), expected); - t.end(); -}); - -test('casts to buffer if necessary', function (t) { - var input = 'शीर्षक'; - var expected = Buffer([0x17, 0xb8, 0xaf, 0xf1]); - t.same(crc32(input), expected); - t.end(); -}); - -test('can do signed', function (t) { - var input = 'ham sandwich'; - var expected = -1891873021; - t.same(crc32.signed(input), expected); - t.end(); -}); - -test('can do unsigned', function (t) { - var input = 'bear sandwich'; - var expected = 3711466352; - t.same(crc32.unsigned(input), expected); - t.end(); -}); - - -test('simple crc32 in append mode', function (t) { - var input = [Buffer('hey'), Buffer(' '), Buffer('sup'), Buffer(' '), Buffer('bros')]; - var expected = Buffer([0x47, 0xfa, 0x55, 0x70]); - for (var crc = 0, i = 0; i < input.length; i++) { - crc = crc32(input[i], crc); - } - t.same(crc, expected); - t.end(); -}); - - -test('can do signed in append mode', function (t) { - var input1 = 'ham'; - var input2 = ' '; - var input3 = 'sandwich'; - var expected = -1891873021; - - var crc = crc32.signed(input1); - crc = crc32.signed(input2, crc); - crc = crc32.signed(input3, crc); - - t.same(crc, expected); - t.end(); -}); - -test('can do unsigned in append mode', function (t) { - var input1 = 'bear san'; - var input2 = 'dwich'; - var expected = 3711466352; - - var crc = crc32.unsigned(input1); - crc = crc32.unsigned(input2, crc); - t.same(crc, expected); - t.end(); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md deleted file mode 100644 index 4961d2e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/History.md +++ /dev/null @@ -1,107 +0,0 @@ - -0.6.1 / 2012-06-01 -================== - - * Added: append (yes or no) on confirmation - * Added: allow node.js v0.7.x - -0.6.0 / 2012-04-10 -================== - - * Added `.prompt(obj, callback)` support. Closes #49 - * Added default support to .choose(). Closes #41 - * Fixed the choice example - -0.5.1 / 2011-12-20 -================== - - * Fixed `password()` for recent nodes. Closes #36 - -0.5.0 / 2011-12-04 -================== - - * Added sub-command option support [itay] - -0.4.3 / 2011-12-04 -================== - - * Fixed custom help ordering. Closes #32 - -0.4.2 / 2011-11-24 -================== - - * Added travis support - * Fixed: line-buffered input automatically trimmed. Closes #31 - -0.4.1 / 2011-11-18 -================== - - * Removed listening for "close" on --help - -0.4.0 / 2011-11-15 -================== - - * Added support for `--`. Closes #24 - -0.3.3 / 2011-11-14 -================== - - * Fixed: wait for close event when writing help info [Jerry Hamlet] - -0.3.2 / 2011-11-01 -================== - - * Fixed long flag definitions with values [felixge] - -0.3.1 / 2011-10-31 -================== - - * Changed `--version` short flag to `-V` from `-v` - * Changed `.version()` so it's configurable [felixge] - -0.3.0 / 2011-10-31 -================== - - * Added support for long flags only. Closes #18 - -0.2.1 / 2011-10-24 -================== - - * "node": ">= 0.4.x < 0.7.0". Closes #20 - -0.2.0 / 2011-09-26 -================== - - * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] - -0.1.0 / 2011-08-24 -================== - - * Added support for custom `--help` output - -0.0.5 / 2011-08-18 -================== - - * Changed: when the user enters nothing prompt for password again - * Fixed issue with passwords beginning with numbers [NuckChorris] - -0.0.4 / 2011-08-15 -================== - - * Fixed `Commander#args` - -0.0.3 / 2011-08-15 -================== - - * Added default option value support - -0.0.2 / 2011-08-15 -================== - - * Added mask support to `Command#password(str[, mask], fn)` - * Added `Command#password(str, fn)` - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile deleted file mode 100644 index 0074625..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -TESTS = $(shell find test/test.*.js) - -test: - @./test/run $(TESTS) - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md deleted file mode 100644 index b8328c3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/Readme.md +++ /dev/null @@ -1,262 +0,0 @@ -# Commander.js - - The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander). - - [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js) - -## Installation - - $ npm install commander - -## Option parsing - - Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('commander'); - -program - .version('0.0.1') - .option('-p, --peppers', 'Add peppers') - .option('-P, --pineapple', 'Add pineapple') - .option('-b, --bbq', 'Add bbq sauce') - .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') - .parse(process.argv); - -console.log('you ordered a pizza with:'); -if (program.peppers) console.log(' - peppers'); -if (program.pineapple) console.log(' - pineappe'); -if (program.bbq) console.log(' - bbq'); -console.log(' - %s cheese', program.cheese); -``` - - Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. - -## Automated --help - - The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: - -``` - $ ./examples/pizza --help - - Usage: pizza [options] - - Options: - - -V, --version output the version number - -p, --peppers Add peppers - -P, --pineapple Add pineappe - -b, --bbq Add bbq sauce - -c, --cheese Add the specified type of cheese [marble] - -h, --help output usage information - -``` - -## Coercion - -```js -function range(val) { - return val.split('..').map(Number); -} - -function list(val) { - return val.split(','); -} - -program - .version('0.0.1') - .usage('[options] ') - .option('-i, --integer ', 'An integer argument', parseInt) - .option('-f, --float ', 'A float argument', parseFloat) - .option('-r, --range ..', 'A range', range) - .option('-l, --list ', 'A list', list) - .option('-o, --optional [value]', 'An optional value') - .parse(process.argv); - -console.log(' int: %j', program.integer); -console.log(' float: %j', program.float); -console.log(' optional: %j', program.optional); -program.range = program.range || []; -console.log(' range: %j..%j', program.range[0], program.range[1]); -console.log(' list: %j', program.list); -console.log(' args: %j', program.args); -``` - -## Custom help - - You can display arbitrary `-h, --help` information - by listening for "--help". Commander will automatically - exit once you are done so that the remainder of your program - does not execute causing undesired behaviours, for example - in the following executable "stuff" will not output when - `--help` is used. - -```js -#!/usr/bin/env node - -/** - * Module dependencies. - */ - -var program = require('../'); - -function list(val) { - return val.split(',').map(Number); -} - -program - .version('0.0.1') - .option('-f, --foo', 'enable some foo') - .option('-b, --bar', 'enable some bar') - .option('-B, --baz', 'enable some baz'); - -// must be before .parse() since -// node's emit() is immediate - -program.on('--help', function(){ - console.log(' Examples:'); - console.log(''); - console.log(' $ custom-help --help'); - console.log(' $ custom-help -h'); - console.log(''); -}); - -program.parse(process.argv); - -console.log('stuff'); -``` - -yielding the following help output: - -``` - -Usage: custom-help [options] - -Options: - - -h, --help output usage information - -V, --version output the version number - -f, --foo enable some foo - -b, --bar enable some bar - -B, --baz enable some baz - -Examples: - - $ custom-help --help - $ custom-help -h - -``` - -## .prompt(msg, fn) - - Single-line prompt: - -```js -program.prompt('name: ', function(name){ - console.log('hi %s', name); -}); -``` - - Multi-line prompt: - -```js -program.prompt('description:', function(name){ - console.log('hi %s', name); -}); -``` - - Coercion: - -```js -program.prompt('Age: ', Number, function(age){ - console.log('age: %j', age); -}); -``` - -```js -program.prompt('Birthdate: ', Date, function(date){ - console.log('date: %s', date); -}); -``` - -## .password(msg[, mask], fn) - -Prompt for password without echoing: - -```js -program.password('Password: ', function(pass){ - console.log('got "%s"', pass); - process.stdin.destroy(); -}); -``` - -Prompt for password with mask char "*": - -```js -program.password('Password: ', '*', function(pass){ - console.log('got "%s"', pass); - process.stdin.destroy(); -}); -``` - -## .confirm(msg, fn) - - Confirm with the given `msg`: - -```js -program.confirm('continue? ', function(ok){ - console.log(' got %j', ok); -}); -``` - -## .choose(list, fn) - - Let the user choose from a `list`: - -```js -var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; - -console.log('Choose the coolest pet:'); -program.choose(list, function(i){ - console.log('you chose %d "%s"', i, list[i]); -}); -``` - -## Links - - - [API documentation](http://visionmedia.github.com/commander.js/) - - [ascii tables](https://github.com/LearnBoost/cli-table) - - [progress bars](https://github.com/visionmedia/node-progress) - - [more progress bars](https://github.com/substack/node-multimeter) - - [examples](https://github.com/visionmedia/commander.js/tree/master/examples) - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js deleted file mode 100644 index 06ec1e4..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/commander'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js deleted file mode 100644 index 5ba87eb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/lib/commander.js +++ /dev/null @@ -1,1026 +0,0 @@ - -/*! - * commander - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter - , path = require('path') - , tty = require('tty') - , basename = path.basename; - -/** - * Expose the root command. - */ - -exports = module.exports = new Command; - -/** - * Expose `Command`. - */ - -exports.Command = Command; - -/** - * Expose `Option`. - */ - -exports.Option = Option; - -/** - * Initialize a new `Option` with the given `flags` and `description`. - * - * @param {String} flags - * @param {String} description - * @api public - */ - -function Option(flags, description) { - this.flags = flags; - this.required = ~flags.indexOf('<'); - this.optional = ~flags.indexOf('['); - this.bool = !~flags.indexOf('-no-'); - flags = flags.split(/[ ,|]+/); - if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); - this.long = flags.shift(); - this.description = description; -} - -/** - * Return option name. - * - * @return {String} - * @api private - */ - -Option.prototype.name = function(){ - return this.long - .replace('--', '') - .replace('no-', ''); -}; - -/** - * Check if `arg` matches the short or long flag. - * - * @param {String} arg - * @return {Boolean} - * @api private - */ - -Option.prototype.is = function(arg){ - return arg == this.short - || arg == this.long; -}; - -/** - * Initialize a new `Command`. - * - * @param {String} name - * @api public - */ - -function Command(name) { - this.commands = []; - this.options = []; - this.args = []; - this.name = name; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Command.prototype.__proto__ = EventEmitter.prototype; - -/** - * Add command `name`. - * - * The `.action()` callback is invoked when the - * command `name` is specified via __ARGV__, - * and the remaining arguments are applied to the - * function for access. - * - * When the `name` is "*" an un-matched command - * will be passed as the first arg, followed by - * the rest of __ARGV__ remaining. - * - * Examples: - * - * program - * .version('0.0.1') - * .option('-C, --chdir ', 'change the working directory') - * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') - * .option('-T, --no-tests', 'ignore test hook') - * - * program - * .command('setup') - * .description('run remote setup commands') - * .action(function(){ - * console.log('setup'); - * }); - * - * program - * .command('exec ') - * .description('run the given remote command') - * .action(function(cmd){ - * console.log('exec "%s"', cmd); - * }); - * - * program - * .command('*') - * .description('deploy the given env') - * .action(function(env){ - * console.log('deploying "%s"', env); - * }); - * - * program.parse(process.argv); - * - * @param {String} name - * @return {Command} the new command - * @api public - */ - -Command.prototype.command = function(name){ - var args = name.split(/ +/); - var cmd = new Command(args.shift()); - this.commands.push(cmd); - cmd.parseExpectedArgs(args); - cmd.parent = this; - return cmd; -}; - -/** - * Parse expected `args`. - * - * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. - * - * @param {Array} args - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parseExpectedArgs = function(args){ - if (!args.length) return; - var self = this; - args.forEach(function(arg){ - switch (arg[0]) { - case '<': - self.args.push({ required: true, name: arg.slice(1, -1) }); - break; - case '[': - self.args.push({ required: false, name: arg.slice(1, -1) }); - break; - } - }); - return this; -}; - -/** - * Register callback `fn` for the command. - * - * Examples: - * - * program - * .command('help') - * .description('display verbose help') - * .action(function(){ - * // output help here - * }); - * - * @param {Function} fn - * @return {Command} for chaining - * @api public - */ - -Command.prototype.action = function(fn){ - var self = this; - this.parent.on(this.name, function(args, unknown){ - // Parse any so-far unknown options - unknown = unknown || []; - var parsed = self.parseOptions(unknown); - - // Output help if necessary - outputHelpIfNecessary(self, parsed.unknown); - - // If there are still any unknown options, then we simply - // die, unless someone asked for help, in which case we give it - // to them, and then we die. - if (parsed.unknown.length > 0) { - self.unknownOption(parsed.unknown[0]); - } - - self.args.forEach(function(arg, i){ - if (arg.required && null == args[i]) { - self.missingArgument(arg.name); - } - }); - - // Always append ourselves to the end of the arguments, - // to make sure we match the number of arguments the user - // expects - if (self.args.length) { - args[self.args.length] = self; - } else { - args.push(self); - } - - fn.apply(this, args); - }); - return this; -}; - -/** - * Define option with `flags`, `description` and optional - * coercion `fn`. - * - * The `flags` string should contain both the short and long flags, - * separated by comma, a pipe or space. The following are all valid - * all will output this way when `--help` is used. - * - * "-p, --pepper" - * "-p|--pepper" - * "-p --pepper" - * - * Examples: - * - * // simple boolean defaulting to false - * program.option('-p, --pepper', 'add pepper'); - * - * --pepper - * program.pepper - * // => Boolean - * - * // simple boolean defaulting to false - * program.option('-C, --no-cheese', 'remove cheese'); - * - * program.cheese - * // => true - * - * --no-cheese - * program.cheese - * // => true - * - * // required argument - * program.option('-C, --chdir ', 'change the working directory'); - * - * --chdir /tmp - * program.chdir - * // => "/tmp" - * - * // optional argument - * program.option('-c, --cheese [type]', 'add cheese [marble]'); - * - * @param {String} flags - * @param {String} description - * @param {Function|Mixed} fn or default - * @param {Mixed} defaultValue - * @return {Command} for chaining - * @api public - */ - -Command.prototype.option = function(flags, description, fn, defaultValue){ - var self = this - , option = new Option(flags, description) - , oname = option.name() - , name = camelcase(oname); - - // default as 3rd arg - if ('function' != typeof fn) defaultValue = fn, fn = null; - - // preassign default value only for --no-*, [optional], or - if (false == option.bool || option.optional || option.required) { - // when --no-* we make sure default is true - if (false == option.bool) defaultValue = true; - // preassign only if we have a default - if (undefined !== defaultValue) self[name] = defaultValue; - } - - // register the option - this.options.push(option); - - // when it's passed assign the value - // and conditionally invoke the callback - this.on(oname, function(val){ - // coercion - if (null != val && fn) val = fn(val); - - // unassigned or bool - if ('boolean' == typeof self[name] || 'undefined' == typeof self[name]) { - // if no value, bool true, and we have a default, then use it! - if (null == val) { - self[name] = option.bool - ? defaultValue || true - : false; - } else { - self[name] = val; - } - } else if (null !== val) { - // reassign - self[name] = val; - } - }); - - return this; -}; - -/** - * Parse `argv`, settings options and invoking commands when defined. - * - * @param {Array} argv - * @return {Command} for chaining - * @api public - */ - -Command.prototype.parse = function(argv){ - // store raw args - this.rawArgs = argv; - - // guess name - if (!this.name) this.name = basename(argv[1]); - - // process argv - var parsed = this.parseOptions(this.normalize(argv.slice(2))); - this.args = parsed.args; - return this.parseArgs(this.args, parsed.unknown); -}; - -/** - * Normalize `args`, splitting joined short flags. For example - * the arg "-abc" is equivalent to "-a -b -c". - * - * @param {Array} args - * @return {Array} - * @api private - */ - -Command.prototype.normalize = function(args){ - var ret = [] - , arg; - - for (var i = 0, len = args.length; i < len; ++i) { - arg = args[i]; - if (arg.length > 1 && '-' == arg[0] && '-' != arg[1]) { - arg.slice(1).split('').forEach(function(c){ - ret.push('-' + c); - }); - } else { - ret.push(arg); - } - } - - return ret; -}; - -/** - * Parse command `args`. - * - * When listener(s) are available those - * callbacks are invoked, otherwise the "*" - * event is emitted and those actions are invoked. - * - * @param {Array} args - * @return {Command} for chaining - * @api private - */ - -Command.prototype.parseArgs = function(args, unknown){ - var cmds = this.commands - , len = cmds.length - , name; - - if (args.length) { - name = args[0]; - if (this.listeners(name).length) { - this.emit(args.shift(), args, unknown); - } else { - this.emit('*', args); - } - } else { - outputHelpIfNecessary(this, unknown); - - // If there were no args and we have unknown options, - // then they are extraneous and we need to error. - if (unknown.length > 0) { - this.unknownOption(unknown[0]); - } - } - - return this; -}; - -/** - * Return an option matching `arg` if any. - * - * @param {String} arg - * @return {Option} - * @api private - */ - -Command.prototype.optionFor = function(arg){ - for (var i = 0, len = this.options.length; i < len; ++i) { - if (this.options[i].is(arg)) { - return this.options[i]; - } - } -}; - -/** - * Parse options from `argv` returning `argv` - * void of these options. - * - * @param {Array} argv - * @return {Array} - * @api public - */ - -Command.prototype.parseOptions = function(argv){ - var args = [] - , len = argv.length - , literal - , option - , arg; - - var unknownOptions = []; - - // parse options - for (var i = 0; i < len; ++i) { - arg = argv[i]; - - // literal args after -- - if ('--' == arg) { - literal = true; - continue; - } - - if (literal) { - args.push(arg); - continue; - } - - // find matching Option - option = this.optionFor(arg); - - // option is defined - if (option) { - // requires arg - if (option.required) { - arg = argv[++i]; - if (null == arg) return this.optionMissingArgument(option); - if ('-' == arg[0]) return this.optionMissingArgument(option, arg); - this.emit(option.name(), arg); - // optional arg - } else if (option.optional) { - arg = argv[i+1]; - if (null == arg || '-' == arg[0]) { - arg = null; - } else { - ++i; - } - this.emit(option.name(), arg); - // bool - } else { - this.emit(option.name()); - } - continue; - } - - // looks like an option - if (arg.length > 1 && '-' == arg[0]) { - unknownOptions.push(arg); - - // If the next argument looks like it might be - // an argument for this option, we pass it on. - // If it isn't, then it'll simply be ignored - if (argv[i+1] && '-' != argv[i+1][0]) { - unknownOptions.push(argv[++i]); - } - continue; - } - - // arg - args.push(arg); - } - - return { args: args, unknown: unknownOptions }; -}; - -/** - * Argument `name` is missing. - * - * @param {String} name - * @api private - */ - -Command.prototype.missingArgument = function(name){ - console.error(); - console.error(" error: missing required argument `%s'", name); - console.error(); - process.exit(1); -}; - -/** - * `Option` is missing an argument, but received `flag` or nothing. - * - * @param {String} option - * @param {String} flag - * @api private - */ - -Command.prototype.optionMissingArgument = function(option, flag){ - console.error(); - if (flag) { - console.error(" error: option `%s' argument missing, got `%s'", option.flags, flag); - } else { - console.error(" error: option `%s' argument missing", option.flags); - } - console.error(); - process.exit(1); -}; - -/** - * Unknown option `flag`. - * - * @param {String} flag - * @api private - */ - -Command.prototype.unknownOption = function(flag){ - console.error(); - console.error(" error: unknown option `%s'", flag); - console.error(); - process.exit(1); -}; - -/** - * Set the program version to `str`. - * - * This method auto-registers the "-V, --version" flag - * which will print the version number when passed. - * - * @param {String} str - * @param {String} flags - * @return {Command} for chaining - * @api public - */ - -Command.prototype.version = function(str, flags){ - if (0 == arguments.length) return this._version; - this._version = str; - flags = flags || '-V, --version'; - this.option(flags, 'output the version number'); - this.on('version', function(){ - console.log(str); - process.exit(0); - }); - return this; -}; - -/** - * Set the description `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.description = function(str){ - if (0 == arguments.length) return this._description; - this._description = str; - return this; -}; - -/** - * Set / get the command usage `str`. - * - * @param {String} str - * @return {String|Command} - * @api public - */ - -Command.prototype.usage = function(str){ - var args = this.args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }); - - var usage = '[options' - + (this.commands.length ? '] [command' : '') - + ']' - + (this.args.length ? ' ' + args : ''); - if (0 == arguments.length) return this._usage || usage; - this._usage = str; - - return this; -}; - -/** - * Return the largest option length. - * - * @return {Number} - * @api private - */ - -Command.prototype.largestOptionLength = function(){ - return this.options.reduce(function(max, option){ - return Math.max(max, option.flags.length); - }, 0); -}; - -/** - * Return help for options. - * - * @return {String} - * @api private - */ - -Command.prototype.optionHelp = function(){ - var width = this.largestOptionLength(); - - // Prepend the help information - return [pad('-h, --help', width) + ' ' + 'output usage information'] - .concat(this.options.map(function(option){ - return pad(option.flags, width) - + ' ' + option.description; - })) - .join('\n'); -}; - -/** - * Return command help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.commandHelp = function(){ - if (!this.commands.length) return ''; - return [ - '' - , ' Commands:' - , '' - , this.commands.map(function(cmd){ - var args = cmd.args.map(function(arg){ - return arg.required - ? '<' + arg.name + '>' - : '[' + arg.name + ']'; - }).join(' '); - - return cmd.name - + (cmd.options.length - ? ' [options]' - : '') + ' ' + args - + (cmd.description() - ? '\n' + cmd.description() - : ''); - }).join('\n\n').replace(/^/gm, ' ') - , '' - ].join('\n'); -}; - -/** - * Return program help documentation. - * - * @return {String} - * @api private - */ - -Command.prototype.helpInformation = function(){ - return [ - '' - , ' Usage: ' + this.name + ' ' + this.usage() - , '' + this.commandHelp() - , ' Options:' - , '' - , '' + this.optionHelp().replace(/^/gm, ' ') - , '' - , '' - ].join('\n'); -}; - -/** - * Prompt for a `Number`. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptForNumber = function(str, fn){ - var self = this; - this.promptSingleLine(str, function parseNumber(val){ - val = Number(val); - if (isNaN(val)) return self.promptSingleLine(str + '(must be a number) ', parseNumber); - fn(val); - }); -}; - -/** - * Prompt for a `Date`. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptForDate = function(str, fn){ - var self = this; - this.promptSingleLine(str, function parseDate(val){ - val = new Date(val); - if (isNaN(val.getTime())) return self.promptSingleLine(str + '(must be a date) ', parseDate); - fn(val); - }); -}; - -/** - * Single-line prompt. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptSingleLine = function(str, fn){ - if ('function' == typeof arguments[2]) { - return this['promptFor' + (fn.name || fn)](str, arguments[2]); - } - - process.stdout.write(str); - process.stdin.setEncoding('utf8'); - process.stdin.once('data', function(val){ - fn(val.trim()); - }).resume(); -}; - -/** - * Multi-line prompt. - * - * @param {String} str - * @param {Function} fn - * @api private - */ - -Command.prototype.promptMultiLine = function(str, fn){ - var buf = []; - console.log(str); - process.stdin.setEncoding('utf8'); - process.stdin.on('data', function(val){ - if ('\n' == val || '\r\n' == val) { - process.stdin.removeAllListeners('data'); - fn(buf.join('\n')); - } else { - buf.push(val.trimRight()); - } - }).resume(); -}; - -/** - * Prompt `str` and callback `fn(val)` - * - * Commander supports single-line and multi-line prompts. - * To issue a single-line prompt simply add white-space - * to the end of `str`, something like "name: ", whereas - * for a multi-line prompt omit this "description:". - * - * - * Examples: - * - * program.prompt('Username: ', function(name){ - * console.log('hi %s', name); - * }); - * - * program.prompt('Description:', function(desc){ - * console.log('description was "%s"', desc.trim()); - * }); - * - * @param {String|Object} str - * @param {Function} fn - * @api public - */ - -Command.prototype.prompt = function(str, fn){ - var self = this; - - if ('string' == typeof str) { - if (/ $/.test(str)) return this.promptSingleLine.apply(this, arguments); - this.promptMultiLine(str, fn); - } else { - var keys = Object.keys(str) - , obj = {}; - - function next() { - var key = keys.shift() - , label = str[key]; - - if (!key) return fn(obj); - self.prompt(label, function(val){ - obj[key] = val; - next(); - }); - } - - next(); - } -}; - -/** - * Prompt for password with `str`, `mask` char and callback `fn(val)`. - * - * The mask string defaults to '', aka no output is - * written while typing, you may want to use "*" etc. - * - * Examples: - * - * program.password('Password: ', function(pass){ - * console.log('got "%s"', pass); - * process.stdin.destroy(); - * }); - * - * program.password('Password: ', '*', function(pass){ - * console.log('got "%s"', pass); - * process.stdin.destroy(); - * }); - * - * @param {String} str - * @param {String} mask - * @param {Function} fn - * @api public - */ - -Command.prototype.password = function(str, mask, fn){ - var self = this - , buf = ''; - - // default mask - if ('function' == typeof mask) { - fn = mask; - mask = ''; - } - - process.stdin.resume(); - tty.setRawMode(true); - process.stdout.write(str); - - // keypress - process.stdin.on('keypress', function(c, key){ - if (key && 'enter' == key.name) { - console.log(); - process.stdin.removeAllListeners('keypress'); - tty.setRawMode(false); - if (!buf.trim().length) return self.password(str, mask, fn); - fn(buf); - return; - } - - if (key && key.ctrl && 'c' == key.name) { - console.log('%s', buf); - process.exit(); - } - - process.stdout.write(mask); - buf += c; - }).resume(); -}; - -/** - * Confirmation prompt with `str` and callback `fn(bool)` - * - * Examples: - * - * program.confirm('continue? ', function(ok){ - * console.log(' got %j', ok); - * process.stdin.destroy(); - * }); - * - * @param {String} str - * @param {Function} fn - * @api public - */ - - -Command.prototype.confirm = function(str, fn, verbose){ - var self = this; - this.prompt(str, function(ok){ - if (!ok.trim()) { - if (!verbose) str += '(yes or no) '; - return self.confirm(str, fn, true); - } - fn(parseBool(ok)); - }); -}; - -/** - * Choice prompt with `list` of items and callback `fn(index, item)` - * - * Examples: - * - * var list = ['tobi', 'loki', 'jane', 'manny', 'luna']; - * - * console.log('Choose the coolest pet:'); - * program.choose(list, function(i){ - * console.log('you chose %d "%s"', i, list[i]); - * process.stdin.destroy(); - * }); - * - * @param {Array} list - * @param {Number|Function} index or fn - * @param {Function} fn - * @api public - */ - -Command.prototype.choose = function(list, index, fn){ - var self = this - , hasDefault = 'number' == typeof index; - - if (!hasDefault) { - fn = index; - index = null; - } - - list.forEach(function(item, i){ - if (hasDefault && i == index) { - console.log('* %d) %s', i + 1, item); - } else { - console.log(' %d) %s', i + 1, item); - } - }); - - function again() { - self.prompt(' : ', function(val){ - val = parseInt(val, 10) - 1; - if (hasDefault && isNaN(val)) val = index; - - if (null == list[val]) { - again(); - } else { - fn(val, list[val]); - } - }); - } - - again(); -}; - -/** - * Camel-case the given `flag` - * - * @param {String} flag - * @return {String} - * @api private - */ - -function camelcase(flag) { - return flag.split('-').reduce(function(str, word){ - return str + word[0].toUpperCase() + word.slice(1); - }); -} - -/** - * Parse a boolean `str`. - * - * @param {String} str - * @return {Boolean} - * @api private - */ - -function parseBool(str) { - return /^y|yes|ok|true$/i.test(str); -} - -/** - * Pad `str` to `width`. - * - * @param {String} str - * @param {Number} width - * @return {String} - * @api private - */ - -function pad(str, width) { - var len = Math.max(0, width - str.length); - return str + Array(len + 1).join(' '); -} - -/** - * Output help information if necessary - * - * @param {Command} command to output help for - * @param {Array} array of options to search for -h or --help - * @api private - */ - -function outputHelpIfNecessary(cmd, options) { - options = options || []; - for (var i = 0; i < options.length; i++) { - if (options[i] == '--help' || options[i] == '-h') { - process.stdout.write(cmd.helpInformation()); - cmd.emit('--help'); - process.exit(0); - } - } -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json deleted file mode 100644 index 6f9d567..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/commander/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "commander", - "version": "0.6.1", - "description": "the complete solution for node.js command-line programs", - "keywords": [ - "command", - "option", - "parser", - "prompt", - "stdin" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "repository": { - "type": "git", - "url": "https://github.com/visionmedia/commander.js.git" - }, - "dependencies": {}, - "devDependencies": { - "should": ">= 0.0.1" - }, - "scripts": { - "test": "make test" - }, - "main": "index", - "engines": { - "node": ">= 0.4.x" - }, - "readme": "# Commander.js\n\n The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/visionmedia/commander).\n\n [![Build Status](https://secure.travis-ci.org/visionmedia/commander.js.png)](http://travis-ci.org/visionmedia/commander.js)\n\n## Installation\n\n $ npm install commander\n\n## Option parsing\n\n Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('commander');\n\nprogram\n .version('0.0.1')\n .option('-p, --peppers', 'Add peppers')\n .option('-P, --pineapple', 'Add pineapple')\n .option('-b, --bbq', 'Add bbq sauce')\n .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')\n .parse(process.argv);\n\nconsole.log('you ordered a pizza with:');\nif (program.peppers) console.log(' - peppers');\nif (program.pineapple) console.log(' - pineappe');\nif (program.bbq) console.log(' - bbq');\nconsole.log(' - %s cheese', program.cheese);\n```\n\n Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as \"--template-engine\" are camel-cased, becoming `program.templateEngine` etc.\n\n## Automated --help\n\n The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free:\n\n``` \n $ ./examples/pizza --help\n\n Usage: pizza [options]\n\n Options:\n\n -V, --version output the version number\n -p, --peppers Add peppers\n -P, --pineapple Add pineappe\n -b, --bbq Add bbq sauce\n -c, --cheese Add the specified type of cheese [marble]\n -h, --help output usage information\n\n```\n\n## Coercion\n\n```js\nfunction range(val) {\n return val.split('..').map(Number);\n}\n\nfunction list(val) {\n return val.split(',');\n}\n\nprogram\n .version('0.0.1')\n .usage('[options] ')\n .option('-i, --integer ', 'An integer argument', parseInt)\n .option('-f, --float ', 'A float argument', parseFloat)\n .option('-r, --range ..', 'A range', range)\n .option('-l, --list ', 'A list', list)\n .option('-o, --optional [value]', 'An optional value')\n .parse(process.argv);\n\nconsole.log(' int: %j', program.integer);\nconsole.log(' float: %j', program.float);\nconsole.log(' optional: %j', program.optional);\nprogram.range = program.range || [];\nconsole.log(' range: %j..%j', program.range[0], program.range[1]);\nconsole.log(' list: %j', program.list);\nconsole.log(' args: %j', program.args);\n```\n\n## Custom help\n\n You can display arbitrary `-h, --help` information\n by listening for \"--help\". Commander will automatically\n exit once you are done so that the remainder of your program\n does not execute causing undesired behaviours, for example\n in the following executable \"stuff\" will not output when\n `--help` is used.\n\n```js\n#!/usr/bin/env node\n\n/**\n * Module dependencies.\n */\n\nvar program = require('../');\n\nfunction list(val) {\n return val.split(',').map(Number);\n}\n\nprogram\n .version('0.0.1')\n .option('-f, --foo', 'enable some foo')\n .option('-b, --bar', 'enable some bar')\n .option('-B, --baz', 'enable some baz');\n\n// must be before .parse() since\n// node's emit() is immediate\n\nprogram.on('--help', function(){\n console.log(' Examples:');\n console.log('');\n console.log(' $ custom-help --help');\n console.log(' $ custom-help -h');\n console.log('');\n});\n\nprogram.parse(process.argv);\n\nconsole.log('stuff');\n```\n\nyielding the following help output:\n\n```\n\nUsage: custom-help [options]\n\nOptions:\n\n -h, --help output usage information\n -V, --version output the version number\n -f, --foo enable some foo\n -b, --bar enable some bar\n -B, --baz enable some baz\n\nExamples:\n\n $ custom-help --help\n $ custom-help -h\n\n```\n\n## .prompt(msg, fn)\n\n Single-line prompt:\n\n```js\nprogram.prompt('name: ', function(name){\n console.log('hi %s', name);\n});\n```\n\n Multi-line prompt:\n\n```js\nprogram.prompt('description:', function(name){\n console.log('hi %s', name);\n});\n```\n\n Coercion:\n\n```js\nprogram.prompt('Age: ', Number, function(age){\n console.log('age: %j', age);\n});\n```\n\n```js\nprogram.prompt('Birthdate: ', Date, function(date){\n console.log('date: %s', date);\n});\n```\n\n## .password(msg[, mask], fn)\n\nPrompt for password without echoing:\n\n```js\nprogram.password('Password: ', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\nPrompt for password with mask char \"*\":\n\n```js\nprogram.password('Password: ', '*', function(pass){\n console.log('got \"%s\"', pass);\n process.stdin.destroy();\n});\n```\n\n## .confirm(msg, fn)\n\n Confirm with the given `msg`:\n\n```js\nprogram.confirm('continue? ', function(ok){\n console.log(' got %j', ok);\n});\n```\n\n## .choose(list, fn)\n\n Let the user choose from a `list`:\n\n```js\nvar list = ['tobi', 'loki', 'jane', 'manny', 'luna'];\n\nconsole.log('Choose the coolest pet:');\nprogram.choose(list, function(i){\n console.log('you chose %d \"%s\"', i, list[i]);\n});\n```\n\n## Links\n\n - [API documentation](http://visionmedia.github.com/commander.js/)\n - [ascii tables](https://github.com/LearnBoost/cli-table)\n - [progress bars](https://github.com/visionmedia/node-progress)\n - [more progress bars](https://github.com/substack/node-multimeter)\n - [examples](https://github.com/visionmedia/commander.js/tree/master/examples)\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/commander.js/issues" - }, - "_id": "commander@0.6.1", - "_from": "commander@0.6.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore deleted file mode 100644 index 9046dde..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.npmignore +++ /dev/null @@ -1,12 +0,0 @@ -*.markdown -*.md -.git* -Makefile -benchmarks/ -docs/ -examples/ -install.sh -support/ -test/ -.DS_Store -coverage.html diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml deleted file mode 100644 index a12e3f0..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE deleted file mode 100644 index 0c5d22d..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -(The MIT License) - -Copyright (c) 2010 Sencha Inc. -Copyright (c) 2011 LearnBoost -Copyright (c) 2011 TJ Holowaychuk - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md deleted file mode 100644 index 7d65f9c..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/Readme.md +++ /dev/null @@ -1,133 +0,0 @@ -[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect) -# Connect - - Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance "plugins" known as _middleware_. - - Connect is bundled with over _20_ commonly used middleware, including - a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/). - -```js -var connect = require('connect') - , http = require('http'); - -var app = connect() - .use(connect.favicon()) - .use(connect.logger('dev')) - .use(connect.static('public')) - .use(connect.directory('public')) - .use(connect.cookieParser()) - .use(connect.session({ secret: 'my secret here' })) - .use(function(req, res){ - res.end('Hello from Connect!\n'); - }); - -http.createServer(app).listen(3000); -``` - -## Middleware - - - [csrf](http://www.senchalabs.org/connect/csrf.html) - - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html) - - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html) - - [json](http://www.senchalabs.org/connect/json.html) - - [multipart](http://www.senchalabs.org/connect/multipart.html) - - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html) - - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html) - - [directory](http://www.senchalabs.org/connect/directory.html) - - [compress](http://www.senchalabs.org/connect/compress.html) - - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html) - - [favicon](http://www.senchalabs.org/connect/favicon.html) - - [limit](http://www.senchalabs.org/connect/limit.html) - - [logger](http://www.senchalabs.org/connect/logger.html) - - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html) - - [query](http://www.senchalabs.org/connect/query.html) - - [responseTime](http://www.senchalabs.org/connect/responseTime.html) - - [session](http://www.senchalabs.org/connect/session.html) - - [static](http://www.senchalabs.org/connect/static.html) - - [staticCache](http://www.senchalabs.org/connect/staticCache.html) - - [vhost](http://www.senchalabs.org/connect/vhost.html) - - [subdomains](http://www.senchalabs.org/connect/subdomains.html) - - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html) - -## Running Tests - -first: - - $ npm install -d - -then: - - $ make test - -## Authors - - Below is the output from [git-summary](http://github.com/visionmedia/git-extras). - - - project: connect - commits: 2033 - active : 301 days - files : 171 - authors: - 1414 Tj Holowaychuk 69.6% - 298 visionmedia 14.7% - 191 Tim Caswell 9.4% - 51 TJ Holowaychuk 2.5% - 10 Ryan Olds 0.5% - 8 Astro 0.4% - 5 Nathan Rajlich 0.2% - 5 Jakub Nešetřil 0.2% - 3 Daniel Dickison 0.1% - 3 David Rio Deiros 0.1% - 3 Alexander Simmerl 0.1% - 3 Andreas Lind Petersen 0.1% - 2 Aaron Heckmann 0.1% - 2 Jacques Crocker 0.1% - 2 Fabian Jakobs 0.1% - 2 Brian J Brennan 0.1% - 2 Adam Malcontenti-Wilson 0.1% - 2 Glen Mailer 0.1% - 2 James Campos 0.1% - 1 Trent Mick 0.0% - 1 Troy Kruthoff 0.0% - 1 Wei Zhu 0.0% - 1 comerc 0.0% - 1 darobin 0.0% - 1 nateps 0.0% - 1 Marco Sanson 0.0% - 1 Arthur Taylor 0.0% - 1 Aseem Kishore 0.0% - 1 Bart Teeuwisse 0.0% - 1 Cameron Howey 0.0% - 1 Chad Weider 0.0% - 1 Craig Barnes 0.0% - 1 Eran Hammer-Lahav 0.0% - 1 Gregory McWhirter 0.0% - 1 Guillermo Rauch 0.0% - 1 Jae Kwon 0.0% - 1 Jakub Nesetril 0.0% - 1 Joshua Peek 0.0% - 1 Jxck 0.0% - 1 AJ ONeal 0.0% - 1 Michael Hemesath 0.0% - 1 Morten Siebuhr 0.0% - 1 Samori Gorse 0.0% - 1 Tom Jensen 0.0% - -## Node Compatibility - - Connect `< 1.x` is compatible with node 0.2.x - - - Connect `1.x` is compatible with node 0.4.x - - - Connect (_master_) `2.x` is compatible with node 0.6.x - -## CLA - - [http://sencha.com/cla](http://sencha.com/cla) - -## License - -View the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/). diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js deleted file mode 100644 index 23240ee..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/index.js +++ /dev/null @@ -1,4 +0,0 @@ - -module.exports = process.env.CONNECT_COV - ? require('./lib-cov/connect') - : require('./lib/connect'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js deleted file mode 100644 index 052fcdb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/cache.js +++ /dev/null @@ -1,81 +0,0 @@ - -/*! - * Connect - Cache - * Copyright(c) 2011 Sencha Inc. - * MIT Licensed - */ - -/** - * Expose `Cache`. - */ - -module.exports = Cache; - -/** - * LRU cache store. - * - * @param {Number} limit - * @api private - */ - -function Cache(limit) { - this.store = {}; - this.keys = []; - this.limit = limit; -} - -/** - * Touch `key`, promoting the object. - * - * @param {String} key - * @param {Number} i - * @api private - */ - -Cache.prototype.touch = function(key, i){ - this.keys.splice(i,1); - this.keys.push(key); -}; - -/** - * Remove `key`. - * - * @param {String} key - * @api private - */ - -Cache.prototype.remove = function(key){ - delete this.store[key]; -}; - -/** - * Get the object stored for `key`. - * - * @param {String} key - * @return {Array} - * @api private - */ - -Cache.prototype.get = function(key){ - return this.store[key]; -}; - -/** - * Add a cache `key`. - * - * @param {String} key - * @return {Array} - * @api private - */ - -Cache.prototype.add = function(key){ - // initialize store - var len = this.keys.push(key); - - // limit reached, invalidate LRU - if (len > this.limit) this.remove(this.keys.shift()); - - var arr = this.store[key] = []; - arr.createdAt = new Date; - return arr; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js deleted file mode 100644 index faa0361..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/connect.js +++ /dev/null @@ -1,92 +0,0 @@ -/*! - * Connect - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter - , proto = require('./proto') - , utils = require('./utils') - , path = require('path') - , basename = path.basename - , fs = require('fs'); - -// node patches - -require('./patch'); - -// expose createServer() as the module - -exports = module.exports = createServer; - -/** - * Framework version. - */ - -exports.version = '2.7.10'; - -/** - * Expose mime module. - */ - -exports.mime = require('./middleware/static').mime; - -/** - * Expose the prototype. - */ - -exports.proto = proto; - -/** - * Auto-load middleware getters. - */ - -exports.middleware = {}; - -/** - * Expose utilities. - */ - -exports.utils = utils; - -/** - * Create a new connect server. - * - * @return {Function} - * @api public - */ - -function createServer() { - function app(req, res, next){ app.handle(req, res, next); } - utils.merge(app, proto); - utils.merge(app, EventEmitter.prototype); - app.route = '/'; - app.stack = []; - for (var i = 0; i < arguments.length; ++i) { - app.use(arguments[i]); - } - return app; -}; - -/** - * Support old `.createServer()` method. - */ - -createServer.createServer = createServer; - -/** - * Auto-load bundled middleware with getters. - */ - -fs.readdirSync(__dirname + '/middleware').forEach(function(filename){ - if (!/\.js$/.test(filename)) return; - var name = basename(filename, '.js'); - function load(){ return require('./middleware/' + name); } - exports.middleware.__defineGetter__(name, load); - exports.__defineGetter__(name, load); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js deleted file mode 100644 index 2618ddc..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/index.js +++ /dev/null @@ -1,50 +0,0 @@ - -/** - * Connect is a middleware framework for node, - * shipping with over 18 bundled middleware and a rich selection of - * 3rd-party middleware. - * - * var app = connect() - * .use(connect.logger('dev')) - * .use(connect.static('public')) - * .use(function(req, res){ - * res.end('hello world\n'); - * }) - * .listen(3000); - * - * Installation: - * - * $ npm install connect - * - * Middleware: - * - * - [logger](logger.html) request logger with custom format support - * - [csrf](csrf.html) Cross-site request forgery protection - * - [compress](compress.html) Gzip compression middleware - * - [basicAuth](basicAuth.html) basic http authentication - * - [bodyParser](bodyParser.html) extensible request body parser - * - [json](json.html) application/json parser - * - [urlencoded](urlencoded.html) application/x-www-form-urlencoded parser - * - [multipart](multipart.html) multipart/form-data parser - * - [timeout](timeout.html) request timeouts - * - [cookieParser](cookieParser.html) cookie parser - * - [session](session.html) session management support with bundled MemoryStore - * - [cookieSession](cookieSession.html) cookie-based session support - * - [methodOverride](methodOverride.html) faux HTTP method support - * - [responseTime](responseTime.html) calculates response-time and exposes via X-Response-Time - * - [staticCache](staticCache.html) memory cache layer for the static() middleware - * - [static](static.html) streaming static file server supporting `Range` and more - * - [directory](directory.html) directory listing middleware - * - [vhost](vhost.html) virtual host sub-domain mapping middleware - * - [favicon](favicon.html) efficient favicon server (with default icon) - * - [limit](limit.html) limit the bytesize of request bodies - * - [query](query.html) automatic querystring parser, populating `req.query` - * - [errorHandler](errorHandler.html) flexible error handler - * - * Links: - * - * - list of [3rd-party](https://github.com/senchalabs/connect/wiki) middleware - * - GitHub [repository](http://github.com/senchalabs/connect) - * - [test documentation](https://github.com/senchalabs/connect/blob/gh-pages/tests.md) - * - */ \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js deleted file mode 100644 index bc7ec97..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/basicAuth.js +++ /dev/null @@ -1,103 +0,0 @@ - -/*! - * Connect - basicAuth - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../utils') - , unauthorized = utils.unauthorized; - -/** - * Basic Auth: - * - * Enfore basic authentication by providing a `callback(user, pass)`, - * which must return `true` in order to gain access. Alternatively an async - * method is provided as well, invoking `callback(user, pass, callback)`. Populates - * `req.user`. The final alternative is simply passing username / password - * strings. - * - * Simple username and password - * - * connect(connect.basicAuth('username', 'password')); - * - * Callback verification - * - * connect() - * .use(connect.basicAuth(function(user, pass){ - * return 'tj' == user & 'wahoo' == pass; - * })) - * - * Async callback verification, accepting `fn(err, user)`. - * - * connect() - * .use(connect.basicAuth(function(user, pass, fn){ - * User.authenticate({ user: user, pass: pass }, fn); - * })) - * - * @param {Function|String} callback or username - * @param {String} realm - * @api public - */ - -module.exports = function basicAuth(callback, realm) { - var username, password; - - // user / pass strings - if ('string' == typeof callback) { - username = callback; - password = realm; - if ('string' != typeof password) throw new Error('password argument required'); - realm = arguments[2]; - callback = function(user, pass){ - return user == username && pass == password; - } - } - - realm = realm || 'Authorization Required'; - - return function(req, res, next) { - var authorization = req.headers.authorization; - - if (req.user) return next(); - if (!authorization) return unauthorized(res, realm); - - var parts = authorization.split(' '); - - if (parts.length !== 2) return next(utils.error(400)); - - var scheme = parts[0] - , credentials = new Buffer(parts[1], 'base64').toString() - , index = credentials.indexOf(':'); - - if ('Basic' != scheme || index < 0) return next(utils.error(400)); - - var user = credentials.slice(0, index) - , pass = credentials.slice(index + 1); - - // async - if (callback.length >= 3) { - var pause = utils.pause(req); - callback(user, pass, function(err, user){ - if (err || !user) return unauthorized(res, realm); - req.user = req.remoteUser = user; - next(); - pause.resume(); - }); - // sync - } else { - if (callback(user, pass)) { - req.user = req.remoteUser = user; - next(); - } else { - unauthorized(res, realm); - } - } - } -}; - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js deleted file mode 100644 index 9f692cd..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js +++ /dev/null @@ -1,61 +0,0 @@ - -/*! - * Connect - bodyParser - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var multipart = require('./multipart') - , urlencoded = require('./urlencoded') - , json = require('./json'); - -/** - * Body parser: - * - * Parse request bodies, supports _application/json_, - * _application/x-www-form-urlencoded_, and _multipart/form-data_. - * - * This is equivalent to: - * - * app.use(connect.json()); - * app.use(connect.urlencoded()); - * app.use(connect.multipart()); - * - * Examples: - * - * connect() - * .use(connect.bodyParser()) - * .use(function(req, res) { - * res.end('viewing user ' + req.body.user.name); - * }); - * - * $ curl -d 'user[name]=tj' http://local/ - * $ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://local/ - * - * View [json](json.html), [urlencoded](urlencoded.html), and [multipart](multipart.html) for more info. - * - * @param {Object} options - * @return {Function} - * @api public - */ - -exports = module.exports = function bodyParser(options){ - var _urlencoded = urlencoded(options) - , _multipart = multipart(options) - , _json = json(options); - - return function bodyParser(req, res, next) { - _json(req, res, function(err){ - if (err) return next(err); - _urlencoded(req, res, function(err){ - if (err) return next(err); - _multipart(req, res, next); - }); - }); - } -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js deleted file mode 100644 index 97b2449..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/compress.js +++ /dev/null @@ -1,157 +0,0 @@ -/*! - * Connect - compress - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var zlib = require('zlib'); - -/** - * Supported content-encoding methods. - */ - -exports.methods = { - gzip: zlib.createGzip - , deflate: zlib.createDeflate -}; - -/** - * Default filter function. - */ - -exports.filter = function(req, res){ - return /json|text|javascript/.test(res.getHeader('Content-Type')); -}; - -/** - * Compress: - * - * Compress response data with gzip/deflate. - * - * Filter: - * - * A `filter` callback function may be passed to - * replace the default logic of: - * - * exports.filter = function(req, res){ - * return /json|text|javascript/.test(res.getHeader('Content-Type')); - * }; - * - * Options: - * - * All remaining options are passed to the gzip/deflate - * creation functions. Consult node's docs for additional details. - * - * - `chunkSize` (default: 16*1024) - * - `windowBits` - * - `level`: 0-9 where 0 is no compression, and 9 is slow but best compression - * - `memLevel`: 1-9 low is slower but uses less memory, high is fast but uses more - * - `strategy`: compression strategy - * - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function compress(options) { - options = options || {}; - var names = Object.keys(exports.methods) - , filter = options.filter || exports.filter; - - return function compress(req, res, next){ - var accept = req.headers['accept-encoding'] - , vary = res.getHeader('Vary') - , write = res.write - , end = res.end - , stream - , method; - - // vary - if (!vary) { - res.setHeader('Vary', 'Accept-Encoding'); - } else if (!~vary.indexOf('Accept-Encoding')) { - res.setHeader('Vary', vary + ', Accept-Encoding'); - } - - // see #724 - req.on('close', function(){ - res.write = res.end = function(){}; - }); - - // proxy - - res.write = function(chunk, encoding){ - if (!this.headerSent) this._implicitHeader(); - return stream - ? stream.write(new Buffer(chunk, encoding)) - : write.call(res, chunk, encoding); - }; - - res.end = function(chunk, encoding){ - if (chunk) this.write(chunk, encoding); - return stream - ? stream.end() - : end.call(res); - }; - - res.on('header', function(){ - var encoding = res.getHeader('Content-Encoding') || 'identity'; - - // already encoded - if ('identity' != encoding) return; - - // default request filter - if (!filter(req, res)) return; - - // SHOULD use identity - if (!accept) return; - - // head - if ('HEAD' == req.method) return; - - // default to gzip - if ('*' == accept.trim()) method = 'gzip'; - - // compression method - if (!method) { - for (var i = 0, len = names.length; i < len; ++i) { - if (~accept.indexOf(names[i])) { - method = names[i]; - break; - } - } - } - - // compression method - if (!method) return; - - // compression stream - stream = exports.methods[method](options); - - // header fields - res.setHeader('Content-Encoding', method); - res.removeHeader('Content-Length'); - - // compression - - stream.on('data', function(chunk){ - write.call(res, chunk); - }); - - stream.on('end', function(){ - end.call(res); - }); - - stream.on('drain', function() { - res.emit('drain'); - }); - }); - - next(); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js deleted file mode 100644 index 5da23f2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js +++ /dev/null @@ -1,62 +0,0 @@ - -/*! - * Connect - cookieParser - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('./../utils') - , cookie = require('cookie'); - -/** - * Cookie parser: - * - * Parse _Cookie_ header and populate `req.cookies` - * with an object keyed by the cookie names. Optionally - * you may enabled signed cookie support by passing - * a `secret` string, which assigns `req.secret` so - * it may be used by other middleware. - * - * Examples: - * - * connect() - * .use(connect.cookieParser('optional secret string')) - * .use(function(req, res, next){ - * res.end(JSON.stringify(req.cookies)); - * }) - * - * @param {String} secret - * @return {Function} - * @api public - */ - -module.exports = function cookieParser(secret){ - return function cookieParser(req, res, next) { - if (req.cookies) return next(); - var cookies = req.headers.cookie; - - req.secret = secret; - req.cookies = {}; - req.signedCookies = {}; - - if (cookies) { - try { - req.cookies = cookie.parse(cookies); - if (secret) { - req.signedCookies = utils.parseSignedCookies(req.cookies, secret); - req.signedCookies = utils.parseJSONCookies(req.signedCookies); - } - req.cookies = utils.parseJSONCookies(req.cookies); - } catch (err) { - err.status = 400; - return next(err); - } - } - next(); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js deleted file mode 100644 index 402fd55..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/cookieSession.js +++ /dev/null @@ -1,117 +0,0 @@ - -/*! - * Connect - cookieSession - * Copyright(c) 2011 Sencha Inc. - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('./../utils') - , Cookie = require('./session/cookie') - , debug = require('debug')('connect:cookieSession') - , signature = require('cookie-signature') - , crc32 = require('buffer-crc32'); - -/** - * Cookie Session: - * - * Cookie session middleware. - * - * var app = connect(); - * app.use(connect.cookieParser()); - * app.use(connect.cookieSession({ secret: 'tobo!', cookie: { maxAge: 60 * 60 * 1000 }})); - * - * Options: - * - * - `key` cookie name defaulting to `connect.sess` - * - `secret` prevents cookie tampering - * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }` - * - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto") - * - * Clearing sessions: - * - * To clear the session simply set its value to `null`, - * `cookieSession()` will then respond with a 1970 Set-Cookie. - * - * req.session = null; - * - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function cookieSession(options){ - // TODO: utilize Session/Cookie to unify API - options = options || {}; - var key = options.key || 'connect.sess' - , trustProxy = options.proxy; - - return function cookieSession(req, res, next) { - - // req.secret is for backwards compatibility - var secret = options.secret || req.secret; - if (!secret) throw new Error('`secret` option required for cookie sessions'); - - // default session - req.session = {}; - var cookie = req.session.cookie = new Cookie(options.cookie); - - // pathname mismatch - if (0 != req.originalUrl.indexOf(cookie.path)) return next(); - - // cookieParser secret - if (!options.secret && req.secret) { - req.session = req.signedCookies[key] || {}; - req.session.cookie = cookie; - } else { - // TODO: refactor - var rawCookie = req.cookies[key]; - if (rawCookie) { - var unsigned = utils.parseSignedCookie(rawCookie, secret); - if (unsigned) { - var originalHash = crc32.signed(unsigned); - req.session = utils.parseJSONCookie(unsigned) || {}; - req.session.cookie = cookie; - } - } - } - - res.on('header', function(){ - // removed - if (!req.session) { - debug('clear session'); - cookie.expires = new Date(0); - res.setHeader('Set-Cookie', cookie.serialize(key, '')); - return; - } - - delete req.session.cookie; - - // check security - var proto = (req.headers['x-forwarded-proto'] || '').toLowerCase() - , tls = req.connection.encrypted || (trustProxy && 'https' == proto) - , secured = cookie.secure && tls; - - // only send secure cookies via https - if (cookie.secure && !secured) return debug('not secured'); - - // serialize - debug('serializing %j', req.session); - var val = 'j:' + JSON.stringify(req.session); - - // compare hashes, no need to set-cookie if unchanged - if (originalHash == crc32.signed(val)) return debug('unmodified session'); - - // set-cookie - val = 's:' + signature.sign(val, secret); - val = cookie.serialize(key, val); - debug('set-cookie %j', cookie); - res.setHeader('Set-Cookie', val); - }); - - next(); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js deleted file mode 100644 index e3c353e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/csrf.js +++ /dev/null @@ -1,73 +0,0 @@ -/*! - * Connect - csrf - * Copyright(c) 2011 Sencha Inc. - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../utils'); - -/** - * Anti CSRF: - * - * CRSF protection middleware. - * - * By default this middleware generates a token named "_csrf" - * which should be added to requests which mutate - * state, within a hidden form field, query-string etc. This - * token is validated against the visitor's `req.session._csrf` - * property. - * - * The default `value` function checks `req.body` generated - * by the `bodyParser()` middleware, `req.query` generated - * by `query()`, and the "X-CSRF-Token" header field. - * - * This middleware requires session support, thus should be added - * somewhere _below_ `session()` and `cookieParser()`. - * - * Options: - * - * - `value` a function accepting the request, returning the token - * - * @param {Object} options - * @api public - */ - -module.exports = function csrf(options) { - options = options || {}; - var value = options.value || defaultValue; - - return function(req, res, next){ - // generate CSRF token - var token = req.session._csrf || (req.session._csrf = utils.uid(24)); - - // ignore these methods - if ('GET' == req.method || 'HEAD' == req.method || 'OPTIONS' == req.method) return next(); - - // determine value - var val = value(req); - - // check - if (val != token) return next(utils.error(403)); - - next(); - } -}; - -/** - * Default value function, checking the `req.body` - * and `req.query` for the CSRF token. - * - * @param {IncomingMessage} req - * @return {String} - * @api private - */ - -function defaultValue(req) { - return (req.body && req.body._csrf) - || (req.query && req.query._csrf) - || (req.headers['x-csrf-token']); -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js deleted file mode 100644 index 1c925a7..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/directory.js +++ /dev/null @@ -1,229 +0,0 @@ - -/*! - * Connect - directory - * Copyright(c) 2011 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -// TODO: icon / style for directories -// TODO: arrow key navigation -// TODO: make icons extensible - -/** - * Module dependencies. - */ - -var fs = require('fs') - , parse = require('url').parse - , utils = require('../utils') - , path = require('path') - , normalize = path.normalize - , extname = path.extname - , join = path.join; - -/*! - * Icon cache. - */ - -var cache = {}; - -/** - * Directory: - * - * Serve directory listings with the given `root` path. - * - * Options: - * - * - `hidden` display hidden (dot) files. Defaults to false. - * - `icons` display icons. Defaults to false. - * - `filter` Apply this filter function to files. Defaults to false. - * - * @param {String} root - * @param {Object} options - * @return {Function} - * @api public - */ - -exports = module.exports = function directory(root, options){ - options = options || {}; - - // root required - if (!root) throw new Error('directory() root path required'); - var hidden = options.hidden - , icons = options.icons - , filter = options.filter - , root = normalize(root); - - return function directory(req, res, next) { - if ('GET' != req.method && 'HEAD' != req.method) return next(); - - var accept = req.headers.accept || 'text/plain' - , url = parse(req.url) - , dir = decodeURIComponent(url.pathname) - , path = normalize(join(root, dir)) - , originalUrl = parse(req.originalUrl) - , originalDir = decodeURIComponent(originalUrl.pathname) - , showUp = path != root && path != root + '/'; - - // null byte(s), bad request - if (~path.indexOf('\0')) return next(utils.error(400)); - - // malicious path, forbidden - if (0 != path.indexOf(root)) return next(utils.error(403)); - - // check if we have a directory - fs.stat(path, function(err, stat){ - if (err) return 'ENOENT' == err.code - ? next() - : next(err); - - if (!stat.isDirectory()) return next(); - - // fetch files - fs.readdir(path, function(err, files){ - if (err) return next(err); - if (!hidden) files = removeHidden(files); - if (filter) files = files.filter(filter); - files.sort(); - - // content-negotiation - for (var key in exports) { - if (~accept.indexOf(key) || ~accept.indexOf('*/*')) { - exports[key](req, res, files, next, originalDir, showUp, icons); - return; - } - } - - // not acceptable - next(utils.error(406)); - }); - }); - }; -}; - -/** - * Respond with text/html. - */ - -exports.html = function(req, res, files, next, dir, showUp, icons){ - fs.readFile(__dirname + '/../public/directory.html', 'utf8', function(err, str){ - if (err) return next(err); - fs.readFile(__dirname + '/../public/style.css', 'utf8', function(err, style){ - if (err) return next(err); - if (showUp) files.unshift('..'); - str = str - .replace('{style}', style) - .replace('{files}', html(files, dir, icons)) - .replace('{directory}', dir) - .replace('{linked-path}', htmlPath(dir)); - res.setHeader('Content-Type', 'text/html'); - res.setHeader('Content-Length', str.length); - res.end(str); - }); - }); -}; - -/** - * Respond with application/json. - */ - -exports.json = function(req, res, files){ - files = JSON.stringify(files); - res.setHeader('Content-Type', 'application/json'); - res.setHeader('Content-Length', files.length); - res.end(files); -}; - -/** - * Respond with text/plain. - */ - -exports.plain = function(req, res, files){ - files = files.join('\n') + '\n'; - res.setHeader('Content-Type', 'text/plain'); - res.setHeader('Content-Length', files.length); - res.end(files); -}; - -/** - * Map html `dir`, returning a linked path. - */ - -function htmlPath(dir) { - var curr = []; - return dir.split('/').map(function(part){ - curr.push(part); - return '' + part + ''; - }).join(' / '); -} - -/** - * Map html `files`, returning an html unordered list. - */ - -function html(files, dir, useIcons) { - return '
          ' + files.map(function(file){ - var icon = '' - , classes = []; - - if (useIcons && '..' != file) { - icon = icons[extname(file)] || icons.default; - icon = ''; - classes.push('icon'); - } - - return '
        • ' - + icon + file + '
        • '; - - }).join('\n') + '
        '; -} - -/** - * Load and cache the given `icon`. - * - * @param {String} icon - * @return {String} - * @api private - */ - -function load(icon) { - if (cache[icon]) return cache[icon]; - return cache[icon] = fs.readFileSync(__dirname + '/../public/icons/' + icon, 'base64'); -} - -/** - * Filter "hidden" `files`, aka files - * beginning with a `.`. - * - * @param {Array} files - * @return {Array} - * @api private - */ - -function removeHidden(files) { - return files.filter(function(file){ - return '.' != file[0]; - }); -} - -/** - * Icon map. - */ - -var icons = { - '.js': 'page_white_code_red.png' - , '.c': 'page_white_c.png' - , '.h': 'page_white_h.png' - , '.cc': 'page_white_cplusplus.png' - , '.php': 'page_white_php.png' - , '.rb': 'page_white_ruby.png' - , '.cpp': 'page_white_cplusplus.png' - , '.swf': 'page_white_flash.png' - , '.pdf': 'page_white_acrobat.png' - , 'default': 'page_white.png' -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js deleted file mode 100644 index 4a84edc..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/errorHandler.js +++ /dev/null @@ -1,86 +0,0 @@ -/*! - * Connect - errorHandler - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../utils') - , fs = require('fs'); - -// environment - -var env = process.env.NODE_ENV || 'development'; - -/** - * Error handler: - * - * Development error handler, providing stack traces - * and error message responses for requests accepting text, html, - * or json. - * - * Text: - * - * By default, and when _text/plain_ is accepted a simple stack trace - * or error message will be returned. - * - * JSON: - * - * When _application/json_ is accepted, connect will respond with - * an object in the form of `{ "error": error }`. - * - * HTML: - * - * When accepted connect will output a nice html stack trace. - * - * @return {Function} - * @api public - */ - -exports = module.exports = function errorHandler(){ - return function errorHandler(err, req, res, next){ - if (err.status) res.statusCode = err.status; - if (res.statusCode < 400) res.statusCode = 500; - if ('test' != env) console.error(err.stack); - var accept = req.headers.accept || ''; - // html - if (~accept.indexOf('html')) { - fs.readFile(__dirname + '/../public/style.css', 'utf8', function(e, style){ - fs.readFile(__dirname + '/../public/error.html', 'utf8', function(e, html){ - var stack = (err.stack || '') - .split('\n').slice(1) - .map(function(v){ return '
      • ' + v + '
      • '; }).join(''); - html = html - .replace('{style}', style) - .replace('{stack}', stack) - .replace('{title}', exports.title) - .replace('{statusCode}', res.statusCode) - .replace(/\{error\}/g, utils.escape(err.toString())); - res.setHeader('Content-Type', 'text/html; charset=utf-8'); - res.end(html); - }); - }); - // json - } else if (~accept.indexOf('json')) { - var error = { message: err.message, stack: err.stack }; - for (var prop in err) error[prop] = err[prop]; - var json = JSON.stringify({ error: error }); - res.setHeader('Content-Type', 'application/json'); - res.end(json); - // plain text - } else { - res.writeHead(res.statusCode, { 'Content-Type': 'text/plain' }); - res.end(err.stack); - } - }; -}; - -/** - * Template title, framework authors may override this value. - */ - -exports.title = 'Connect'; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js deleted file mode 100644 index ef54354..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/favicon.js +++ /dev/null @@ -1,80 +0,0 @@ -/*! - * Connect - favicon - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var fs = require('fs') - , utils = require('../utils'); - -/** - * Favicon: - * - * By default serves the connect favicon, or the favicon - * located by the given `path`. - * - * Options: - * - * - `maxAge` cache-control max-age directive, defaulting to 1 day - * - * Examples: - * - * Serve default favicon: - * - * connect() - * .use(connect.favicon()) - * - * Serve favicon before logging for brevity: - * - * connect() - * .use(connect.favicon()) - * .use(connect.logger('dev')) - * - * Serve custom favicon: - * - * connect() - * .use(connect.favicon('public/favicon.ico')) - * - * @param {String} path - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function favicon(path, options){ - var options = options || {} - , path = path || __dirname + '/../public/favicon.ico' - , maxAge = options.maxAge || 86400000 - , icon; // favicon cache - - return function favicon(req, res, next){ - if ('/favicon.ico' == req.url) { - if (icon) { - res.writeHead(200, icon.headers); - res.end(icon.body); - } else { - fs.readFile(path, function(err, buf){ - if (err) return next(err); - icon = { - headers: { - 'Content-Type': 'image/x-icon' - , 'Content-Length': buf.length - , 'ETag': '"' + utils.md5(buf) + '"' - , 'Cache-Control': 'public, max-age=' + (maxAge / 1000) - }, - body: buf - }; - res.writeHead(200, icon.headers); - res.end(icon.body); - }); - } - } else { - next(); - } - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js deleted file mode 100644 index 17e5918..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/json.js +++ /dev/null @@ -1,86 +0,0 @@ - -/*! - * Connect - json - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../utils') - , _limit = require('./limit'); - -/** - * noop middleware. - */ - -function noop(req, res, next) { - next(); -} - -/** - * JSON: - * - * Parse JSON request bodies, providing the - * parsed object as `req.body`. - * - * Options: - * - * - `strict` when `false` anything `JSON.parse()` accepts will be parsed - * - `reviver` used as the second "reviver" argument for JSON.parse - * - `limit` byte limit disabled by default - * - * @param {Object} options - * @return {Function} - * @api public - */ - -exports = module.exports = function(options){ - var options = options || {} - , strict = options.strict !== false; - - var limit = options.limit - ? _limit(options.limit) - : noop; - - return function json(req, res, next) { - if (req._body) return next(); - req.body = req.body || {}; - - if (!utils.hasBody(req)) return next(); - - // check Content-Type - if ('application/json' != utils.mime(req)) return next(); - - // flag as parsed - req._body = true; - - // parse - limit(req, res, function(err){ - if (err) return next(err); - var buf = ''; - req.setEncoding('utf8'); - req.on('data', function(chunk){ buf += chunk }); - req.on('end', function(){ - var first = buf.trim()[0]; - - if (0 == buf.length) { - return next(utils.error(400, 'invalid json, empty body')); - } - - if (strict && '{' != first && '[' != first) return next(utils.error(400, 'invalid json')); - try { - req.body = JSON.parse(buf, options.reviver); - } catch (err){ - err.body = buf; - err.status = 400; - return next(err); - } - next(); - }); - }); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js deleted file mode 100644 index 09bd1c4..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/limit.js +++ /dev/null @@ -1,78 +0,0 @@ - -/*! - * Connect - limit - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../utils'), - brokenPause = utils.brokenPause; - -/** - * Limit: - * - * Limit request bodies to the given size in `bytes`. - * - * A string representation of the bytesize may also be passed, - * for example "5mb", "200kb", "1gb", etc. - * - * connect() - * .use(connect.limit('5.5mb')) - * .use(handleImageUpload) - * - * @param {Number|String} bytes - * @return {Function} - * @api public - */ - -module.exports = function limit(bytes){ - if ('string' == typeof bytes) bytes = utils.parseBytes(bytes); - if ('number' != typeof bytes) throw new Error('limit() bytes required'); - return function limit(req, res, next){ - var received = 0 - , len = req.headers['content-length'] - ? parseInt(req.headers['content-length'], 10) - : null; - - // self-awareness - if (req._limit) return next(); - req._limit = true; - - // limit by content-length - if (len && len > bytes) return next(utils.error(413)); - - // limit - if (brokenPause) { - listen(); - } else { - req.on('newListener', function handler(event) { - if (event !== 'data') return; - - req.removeListener('newListener', handler); - // Start listening at the end of the current loop - // otherwise the request will be consumed too early. - // Sideaffect is `limit` will miss the first chunk, - // but that's not a big deal. - // Unfortunately, the tests don't have large enough - // request bodies to test this. - process.nextTick(listen); - }); - }; - - next(); - - function listen() { - req.on('data', function(chunk) { - received += Buffer.isBuffer(chunk) - ? chunk.length : - Buffer.byteLength(chunk); - - if (received > bytes) req.destroy(); - }); - }; - }; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js deleted file mode 100644 index de72244..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/logger.js +++ /dev/null @@ -1,339 +0,0 @@ -/*! - * Connect - logger - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var bytes = require('bytes'); - -/*! - * Log buffer. - */ - -var buf = []; - -/*! - * Default log buffer duration. - */ - -var defaultBufferDuration = 1000; - -/** - * Logger: - * - * Log requests with the given `options` or a `format` string. - * - * Options: - * - * - `format` Format string, see below for tokens - * - `stream` Output stream, defaults to _stdout_ - * - `buffer` Buffer duration, defaults to 1000ms when _true_ - * - `immediate` Write log line on request instead of response (for response times) - * - * Tokens: - * - * - `:req[header]` ex: `:req[Accept]` - * - `:res[header]` ex: `:res[Content-Length]` - * - `:http-version` - * - `:response-time` - * - `:remote-addr` - * - `:date` - * - `:method` - * - `:url` - * - `:referrer` - * - `:user-agent` - * - `:status` - * - * Formats: - * - * Pre-defined formats that ship with connect: - * - * - `default` ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"' - * - `short` ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms' - * - `tiny` ':method :url :status :res[content-length] - :response-time ms' - * - `dev` concise output colored by response status for development use - * - * Examples: - * - * connect.logger() // default - * connect.logger('short') - * connect.logger('tiny') - * connect.logger({ immediate: true, format: 'dev' }) - * connect.logger(':method :url - :referrer') - * connect.logger(':req[content-type] -> :res[content-type]') - * connect.logger(function(tokens, req, res){ return 'some format string' }) - * - * Defining Tokens: - * - * To define a token, simply invoke `connect.logger.token()` with the - * name and a callback function. The value returned is then available - * as ":type" in this case. - * - * connect.logger.token('type', function(req, res){ return req.headers['content-type']; }) - * - * Defining Formats: - * - * All default formats are defined this way, however it's public API as well: - * - * connect.logger.format('name', 'string or function') - * - * @param {String|Function|Object} format or options - * @return {Function} - * @api public - */ - -exports = module.exports = function logger(options) { - if ('object' == typeof options) { - options = options || {}; - } else if (options) { - options = { format: options }; - } else { - options = {}; - } - - // output on request instead of response - var immediate = options.immediate; - - // format name - var fmt = exports[options.format] || options.format || exports.default; - - // compile format - if ('function' != typeof fmt) fmt = compile(fmt); - - // options - var stream = options.stream || process.stdout - , buffer = options.buffer; - - // buffering support - if (buffer) { - var realStream = stream - , interval = 'number' == typeof buffer - ? buffer - : defaultBufferDuration; - - // flush interval - setInterval(function(){ - if (buf.length) { - realStream.write(buf.join('')); - buf.length = 0; - } - }, interval); - - // swap the stream - stream = { - write: function(str){ - buf.push(str); - } - }; - } - - return function logger(req, res, next) { - req._startTime = new Date; - - // immediate - if (immediate) { - var line = fmt(exports, req, res); - if (null == line) return; - stream.write(line + '\n'); - // proxy end to output logging - } else { - var end = res.end; - res.end = function(chunk, encoding){ - res.end = end; - res.end(chunk, encoding); - var line = fmt(exports, req, res); - if (null == line) return; - stream.write(line + '\n'); - }; - } - - - next(); - }; -}; - -/** - * Compile `fmt` into a function. - * - * @param {String} fmt - * @return {Function} - * @api private - */ - -function compile(fmt) { - fmt = fmt.replace(/"/g, '\\"'); - var js = ' return "' + fmt.replace(/:([-\w]{2,})(?:\[([^\]]+)\])?/g, function(_, name, arg){ - return '"\n + (tokens["' + name + '"](req, res, "' + arg + '") || "-") + "'; - }) + '";' - return new Function('tokens, req, res', js); -}; - -/** - * Define a token function with the given `name`, - * and callback `fn(req, res)`. - * - * @param {String} name - * @param {Function} fn - * @return {Object} exports for chaining - * @api public - */ - -exports.token = function(name, fn) { - exports[name] = fn; - return this; -}; - -/** - * Define a `fmt` with the given `name`. - * - * @param {String} name - * @param {String|Function} fmt - * @return {Object} exports for chaining - * @api public - */ - -exports.format = function(name, str){ - exports[name] = str; - return this; -}; - -/** - * Default format. - */ - -exports.format('default', ':remote-addr - - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'); - -/** - * Short format. - */ - -exports.format('short', ':remote-addr - :method :url HTTP/:http-version :status :res[content-length] - :response-time ms'); - -/** - * Tiny format. - */ - -exports.format('tiny', ':method :url :status :res[content-length] - :response-time ms'); - -/** - * dev (colored) - */ - -exports.format('dev', function(tokens, req, res){ - var status = res.statusCode - , len = parseInt(res.getHeader('Content-Length'), 10) - , color = 32; - - if (status >= 500) color = 31 - else if (status >= 400) color = 33 - else if (status >= 300) color = 36; - - len = isNaN(len) - ? '' - : len = ' - ' + bytes(len); - - return '\033[90m' + req.method - + ' ' + req.originalUrl + ' ' - + '\033[' + color + 'm' + res.statusCode - + ' \033[90m' - + (new Date - req._startTime) - + 'ms' + len - + '\033[0m'; -}); - -/** - * request url - */ - -exports.token('url', function(req){ - return req.originalUrl || req.url; -}); - -/** - * request method - */ - -exports.token('method', function(req){ - return req.method; -}); - -/** - * response time in milliseconds - */ - -exports.token('response-time', function(req){ - return new Date - req._startTime; -}); - -/** - * UTC date - */ - -exports.token('date', function(){ - return new Date().toUTCString(); -}); - -/** - * response status code - */ - -exports.token('status', function(req, res){ - return res.statusCode; -}); - -/** - * normalized referrer - */ - -exports.token('referrer', function(req){ - return req.headers['referer'] || req.headers['referrer']; -}); - -/** - * remote address - */ - -exports.token('remote-addr', function(req){ - if (req.ip) return req.ip; - var sock = req.socket; - if (sock.socket) return sock.socket.remoteAddress; - return sock.remoteAddress; -}); - -/** - * HTTP version - */ - -exports.token('http-version', function(req){ - return req.httpVersionMajor + '.' + req.httpVersionMinor; -}); - -/** - * UA string - */ - -exports.token('user-agent', function(req){ - return req.headers['user-agent']; -}); - -/** - * request header - */ - -exports.token('req', function(req, res, field){ - return req.headers[field.toLowerCase()]; -}); - -/** - * response header - */ - -exports.token('res', function(req, res, field){ - return (res._headers || {})[field.toLowerCase()]; -}); - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js deleted file mode 100644 index aaf4014..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js +++ /dev/null @@ -1,40 +0,0 @@ - -/*! - * Connect - methodOverride - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Method Override: - * - * Provides faux HTTP method support. - * - * Pass an optional `key` to use when checking for - * a method override, othewise defaults to _\_method_. - * The original method is available via `req.originalMethod`. - * - * @param {String} key - * @return {Function} - * @api public - */ - -module.exports = function methodOverride(key){ - key = key || "_method"; - return function methodOverride(req, res, next) { - req.originalMethod = req.originalMethod || req.method; - - // req.body - if (req.body && key in req.body) { - req.method = req.body[key].toUpperCase(); - delete req.body[key]; - // check X-HTTP-Method-Override - } else if (req.headers['x-http-method-override']) { - req.method = req.headers['x-http-method-override'].toUpperCase(); - } - - next(); - }; -}; - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js deleted file mode 100644 index 7b26fae..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/multipart.js +++ /dev/null @@ -1,133 +0,0 @@ -/*! - * Connect - multipart - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var formidable = require('formidable') - , _limit = require('./limit') - , utils = require('../utils') - , qs = require('qs'); - -/** - * noop middleware. - */ - -function noop(req, res, next) { - next(); -} - -/** - * Multipart: - * - * Parse multipart/form-data request bodies, - * providing the parsed object as `req.body` - * and `req.files`. - * - * Configuration: - * - * The options passed are merged with [formidable](https://github.com/felixge/node-formidable)'s - * `IncomingForm` object, allowing you to configure the upload directory, - * size limits, etc. For example if you wish to change the upload dir do the following. - * - * app.use(connect.multipart({ uploadDir: path })); - * - * Options: - * - * - `limit` byte limit defaulting to none - * - `defer` defers processing and exposes the Formidable form object as `req.form`. - * `next()` is called without waiting for the form's "end" event. - * This option is useful if you need to bind to the "progress" event, for example. - * - * @param {Object} options - * @return {Function} - * @api public - */ - -exports = module.exports = function(options){ - options = options || {}; - - var limit = options.limit - ? _limit(options.limit) - : noop; - - return function multipart(req, res, next) { - if (req._body) return next(); - req.body = req.body || {}; - req.files = req.files || {}; - - if (!utils.hasBody(req)) return next(); - - // ignore GET - if ('GET' == req.method || 'HEAD' == req.method) return next(); - - // check Content-Type - if ('multipart/form-data' != utils.mime(req)) return next(); - - // flag as parsed - req._body = true; - - // parse - limit(req, res, function(err){ - if (err) return next(err); - - var form = new formidable.IncomingForm - , data = {} - , files = {} - , done; - - Object.keys(options).forEach(function(key){ - form[key] = options[key]; - }); - - function ondata(name, val, data){ - if (Array.isArray(data[name])) { - data[name].push(val); - } else if (data[name]) { - data[name] = [data[name], val]; - } else { - data[name] = val; - } - } - - form.on('field', function(name, val){ - ondata(name, val, data); - }); - - form.on('file', function(name, val){ - ondata(name, val, files); - }); - - form.on('error', function(err){ - if (!options.defer) { - err.status = 400; - next(err); - } - done = true; - }); - - form.on('end', function(){ - if (done) return; - try { - req.body = qs.parse(data); - req.files = qs.parse(files); - if (!options.defer) next(); - } catch (err) { - form.emit('error', err); - } - }); - - form.parse(req); - - if (options.defer) { - req.form = form; - next(); - } - }); - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js deleted file mode 100644 index 93fc5d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/query.js +++ /dev/null @@ -1,46 +0,0 @@ -/*! - * Connect - query - * Copyright(c) 2011 TJ Holowaychuk - * Copyright(c) 2011 Sencha Inc. - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var qs = require('qs') - , parse = require('../utils').parseUrl; - -/** - * Query: - * - * Automatically parse the query-string when available, - * populating the `req.query` object. - * - * Examples: - * - * connect() - * .use(connect.query()) - * .use(function(req, res){ - * res.end(JSON.stringify(req.query)); - * }); - * - * The `options` passed are provided to qs.parse function. - * - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function query(options){ - return function query(req, res, next){ - if (!req.query) { - req.query = ~req.url.indexOf('?') - ? qs.parse(parse(req).query, options) - : {}; - } - - next(); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js deleted file mode 100644 index 62abc04..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/responseTime.js +++ /dev/null @@ -1,32 +0,0 @@ - -/*! - * Connect - responseTime - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Reponse time: - * - * Adds the `X-Response-Time` header displaying the response - * duration in milliseconds. - * - * @return {Function} - * @api public - */ - -module.exports = function responseTime(){ - return function(req, res, next){ - var start = new Date; - - if (res._responseTime) return next(); - res._responseTime = true; - - res.on('header', function(){ - var duration = new Date - start; - res.setHeader('X-Response-Time', duration + 'ms'); - }); - - next(); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js deleted file mode 100644 index 9be6c8b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session.js +++ /dev/null @@ -1,356 +0,0 @@ - -/*! - * Connect - session - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Session = require('./session/session') - , debug = require('debug')('connect:session') - , MemoryStore = require('./session/memory') - , signature = require('cookie-signature') - , Cookie = require('./session/cookie') - , Store = require('./session/store') - , utils = require('./../utils') - , parse = utils.parseUrl - , crc32 = require('buffer-crc32'); - -// environment - -var env = process.env.NODE_ENV; - -/** - * Expose the middleware. - */ - -exports = module.exports = session; - -/** - * Expose constructors. - */ - -exports.Store = Store; -exports.Cookie = Cookie; -exports.Session = Session; -exports.MemoryStore = MemoryStore; - -/** - * Warning message for `MemoryStore` usage in production. - */ - -var warning = 'Warning: connection.session() MemoryStore is not\n' - + 'designed for a production environment, as it will leak\n' - + 'memory, and will not scale past a single process.'; - -/** - * Session: - * - * Setup session store with the given `options`. - * - * Session data is _not_ saved in the cookie itself, however - * cookies are used, so we must use the [cookieParser()](cookieParser.html) - * middleware _before_ `session()`. - * - * Examples: - * - * connect() - * .use(connect.cookieParser()) - * .use(connect.session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }})) - * - * Options: - * - * - `key` cookie name defaulting to `connect.sid` - * - `store` session store instance - * - `secret` session cookie is signed with this secret to prevent tampering - * - `cookie` session cookie settings, defaulting to `{ path: '/', httpOnly: true, maxAge: null }` - * - `proxy` trust the reverse proxy when setting secure cookies (via "x-forwarded-proto") - * - * Cookie option: - * - * By default `cookie.maxAge` is `null`, meaning no "expires" parameter is set - * so the cookie becomes a browser-session cookie. When the user closes the - * browser the cookie (and session) will be removed. - * - * ## req.session - * - * To store or access session data, simply use the request property `req.session`, - * which is (generally) serialized as JSON by the store, so nested objects - * are typically fine. For example below is a user-specific view counter: - * - * connect() - * .use(connect.favicon()) - * .use(connect.cookieParser()) - * .use(connect.session({ secret: 'keyboard cat', cookie: { maxAge: 60000 }})) - * .use(function(req, res, next){ - * var sess = req.session; - * if (sess.views) { - * res.setHeader('Content-Type', 'text/html'); - * res.write('

        views: ' + sess.views + '

        '); - * res.write('

        expires in: ' + (sess.cookie.maxAge / 1000) + 's

        '); - * res.end(); - * sess.views++; - * } else { - * sess.views = 1; - * res.end('welcome to the session demo. refresh!'); - * } - * } - * )).listen(3000); - * - * ## Session#regenerate() - * - * To regenerate the session simply invoke the method, once complete - * a new SID and `Session` instance will be initialized at `req.session`. - * - * req.session.regenerate(function(err){ - * // will have a new session here - * }); - * - * ## Session#destroy() - * - * Destroys the session, removing `req.session`, will be re-generated next request. - * - * req.session.destroy(function(err){ - * // cannot access session here - * }); - * - * ## Session#reload() - * - * Reloads the session data. - * - * req.session.reload(function(err){ - * // session updated - * }); - * - * ## Session#save() - * - * Save the session. - * - * req.session.save(function(err){ - * // session saved - * }); - * - * ## Session#touch() - * - * Updates the `.maxAge` property. Typically this is - * not necessary to call, as the session middleware does this for you. - * - * ## Session#cookie - * - * Each session has a unique cookie object accompany it. This allows - * you to alter the session cookie per visitor. For example we can - * set `req.session.cookie.expires` to `false` to enable the cookie - * to remain for only the duration of the user-agent. - * - * ## Session#maxAge - * - * Alternatively `req.session.cookie.maxAge` will return the time - * remaining in milliseconds, which we may also re-assign a new value - * to adjust the `.expires` property appropriately. The following - * are essentially equivalent - * - * var hour = 3600000; - * req.session.cookie.expires = new Date(Date.now() + hour); - * req.session.cookie.maxAge = hour; - * - * For example when `maxAge` is set to `60000` (one minute), and 30 seconds - * has elapsed it will return `30000` until the current request has completed, - * at which time `req.session.touch()` is called to reset `req.session.maxAge` - * to its original value. - * - * req.session.cookie.maxAge; - * // => 30000 - * - * Session Store Implementation: - * - * Every session store _must_ implement the following methods - * - * - `.get(sid, callback)` - * - `.set(sid, session, callback)` - * - `.destroy(sid, callback)` - * - * Recommended methods include, but are not limited to: - * - * - `.length(callback)` - * - `.clear(callback)` - * - * For an example implementation view the [connect-redis](http://github.com/visionmedia/connect-redis) repo. - * - * @param {Object} options - * @return {Function} - * @api public - */ - -function session(options){ - var options = options || {} - , key = options.key || 'connect.sid' - , store = options.store || new MemoryStore - , cookie = options.cookie || {} - , trustProxy = options.proxy - , storeReady = true; - - // notify user that this store is not - // meant for a production environment - if ('production' == env && store instanceof MemoryStore) { - console.warn(warning); - } - - // generates the new session - store.generate = function(req){ - req.sessionID = utils.uid(24); - req.session = new Session(req); - req.session.cookie = new Cookie(cookie); - }; - - store.on('disconnect', function(){ storeReady = false; }); - store.on('connect', function(){ storeReady = true; }); - - return function session(req, res, next) { - // self-awareness - if (req.session) return next(); - - // Handle connection as if there is no session if - // the store has temporarily disconnected etc - if (!storeReady) return debug('store is disconnected'), next(); - - // pathname mismatch - if (0 != req.originalUrl.indexOf(cookie.path || '/')) return next(); - - // backwards compatibility for signed cookies - // req.secret is passed from the cookie parser middleware - var secret = options.secret || req.secret; - - // ensure secret is available or bail - if (!secret) throw new Error('`secret` option required for sessions'); - - // parse url - var originalHash - , originalId; - - // expose store - req.sessionStore = store; - - // grab the session cookie value and check the signature - var rawCookie = req.cookies[key]; - - // get signedCookies for backwards compat with signed cookies - var unsignedCookie = req.signedCookies[key]; - - if (!unsignedCookie && rawCookie) { - unsignedCookie = utils.parseSignedCookie(rawCookie, secret); - } - - // set-cookie - res.on('header', function(){ - if (!req.session) return; - var cookie = req.session.cookie - , proto = (req.headers['x-forwarded-proto'] || '').split(',')[0].toLowerCase().trim() - , tls = req.connection.encrypted || (trustProxy && 'https' == proto) - , secured = cookie.secure && tls - , isNew = unsignedCookie != req.sessionID; - - // only send secure cookies via https - if (cookie.secure && !secured) return debug('not secured'); - - // long expires, handle expiry server-side - if (!isNew && cookie.hasLongExpires) return debug('already set cookie'); - - // browser-session length cookie - if (null == cookie.expires) { - if (!isNew) return debug('already set browser-session cookie'); - // compare hashes and ids - } else if (originalHash == hash(req.session) && originalId == req.session.id) { - return debug('unmodified session'); - } - - var val = 's:' + signature.sign(req.sessionID, secret); - val = cookie.serialize(key, val); - debug('set-cookie %s', val); - res.setHeader('Set-Cookie', val); - }); - - // proxy end() to commit the session - var end = res.end; - res.end = function(data, encoding){ - res.end = end; - if (!req.session) return res.end(data, encoding); - debug('saving'); - req.session.resetMaxAge(); - req.session.save(function(err){ - if (err) console.error(err.stack); - debug('saved'); - res.end(data, encoding); - }); - }; - - // generate the session - function generate() { - store.generate(req); - } - - // get the sessionID from the cookie - req.sessionID = unsignedCookie; - - // generate a session if the browser doesn't send a sessionID - if (!req.sessionID) { - debug('no SID sent, generating session'); - generate(); - next(); - return; - } - - // generate the session object - var pause = utils.pause(req); - debug('fetching %s', req.sessionID); - store.get(req.sessionID, function(err, sess){ - // proxy to resume() events - var _next = next; - next = function(err){ - _next(err); - pause.resume(); - }; - - // error handling - if (err) { - debug('error %j', err); - if ('ENOENT' == err.code) { - generate(); - next(); - } else { - next(err); - } - // no session - } else if (!sess) { - debug('no session found'); - generate(); - next(); - // populate req.session - } else { - debug('session found'); - store.createSession(req, sess); - originalId = req.sessionID; - originalHash = hash(sess); - next(); - } - }); - }; -}; - -/** - * Hash the given `sess` object omitting changes - * to `.cookie`. - * - * @param {Object} sess - * @return {String} - * @api private - */ - -function hash(sess) { - return crc32.signed(JSON.stringify(sess, function(key, val){ - if ('cookie' != key) return val; - })); -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js deleted file mode 100644 index cdce2a5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/cookie.js +++ /dev/null @@ -1,140 +0,0 @@ - -/*! - * Connect - session - Cookie - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../../utils') - , cookie = require('cookie'); - -/** - * Initialize a new `Cookie` with the given `options`. - * - * @param {IncomingMessage} req - * @param {Object} options - * @api private - */ - -var Cookie = module.exports = function Cookie(options) { - this.path = '/'; - this.maxAge = null; - this.httpOnly = true; - if (options) utils.merge(this, options); - this.originalMaxAge = undefined == this.originalMaxAge - ? this.maxAge - : this.originalMaxAge; -}; - -/*! - * Prototype. - */ - -Cookie.prototype = { - - /** - * Set expires `date`. - * - * @param {Date} date - * @api public - */ - - set expires(date) { - this._expires = date; - this.originalMaxAge = this.maxAge; - }, - - /** - * Get expires `date`. - * - * @return {Date} - * @api public - */ - - get expires() { - return this._expires; - }, - - /** - * Set expires via max-age in `ms`. - * - * @param {Number} ms - * @api public - */ - - set maxAge(ms) { - this.expires = 'number' == typeof ms - ? new Date(Date.now() + ms) - : ms; - }, - - /** - * Get expires max-age in `ms`. - * - * @return {Number} - * @api public - */ - - get maxAge() { - return this.expires instanceof Date - ? this.expires.valueOf() - Date.now() - : this.expires; - }, - - /** - * Return cookie data object. - * - * @return {Object} - * @api private - */ - - get data() { - return { - originalMaxAge: this.originalMaxAge - , expires: this._expires - , secure: this.secure - , httpOnly: this.httpOnly - , domain: this.domain - , path: this.path - } - }, - - /** - * Check if the cookie has a reasonably large max-age. - * - * @return {Boolean} - * @api private - */ - - get hasLongExpires() { - var week = 604800000; - return this.maxAge > (4 * week); - }, - - /** - * Return a serialized cookie string. - * - * @return {String} - * @api public - */ - - serialize: function(name, val){ - return cookie.serialize(name, val, this.data); - }, - - /** - * Return JSON representation of this cookie. - * - * @return {Object} - * @api private - */ - - toJSON: function(){ - return this.data; - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js deleted file mode 100644 index fb93939..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/memory.js +++ /dev/null @@ -1,129 +0,0 @@ - -/*! - * Connect - session - MemoryStore - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var Store = require('./store'); - -/** - * Initialize a new `MemoryStore`. - * - * @api public - */ - -var MemoryStore = module.exports = function MemoryStore() { - this.sessions = {}; -}; - -/** - * Inherit from `Store.prototype`. - */ - -MemoryStore.prototype.__proto__ = Store.prototype; - -/** - * Attempt to fetch session by the given `sid`. - * - * @param {String} sid - * @param {Function} fn - * @api public - */ - -MemoryStore.prototype.get = function(sid, fn){ - var self = this; - process.nextTick(function(){ - var expires - , sess = self.sessions[sid]; - if (sess) { - sess = JSON.parse(sess); - expires = 'string' == typeof sess.cookie.expires - ? new Date(sess.cookie.expires) - : sess.cookie.expires; - if (!expires || new Date < expires) { - fn(null, sess); - } else { - self.destroy(sid, fn); - } - } else { - fn(); - } - }); -}; - -/** - * Commit the given `sess` object associated with the given `sid`. - * - * @param {String} sid - * @param {Session} sess - * @param {Function} fn - * @api public - */ - -MemoryStore.prototype.set = function(sid, sess, fn){ - var self = this; - process.nextTick(function(){ - self.sessions[sid] = JSON.stringify(sess); - fn && fn(); - }); -}; - -/** - * Destroy the session associated with the given `sid`. - * - * @param {String} sid - * @api public - */ - -MemoryStore.prototype.destroy = function(sid, fn){ - var self = this; - process.nextTick(function(){ - delete self.sessions[sid]; - fn && fn(); - }); -}; - -/** - * Invoke the given callback `fn` with all active sessions. - * - * @param {Function} fn - * @api public - */ - -MemoryStore.prototype.all = function(fn){ - var arr = [] - , keys = Object.keys(this.sessions); - for (var i = 0, len = keys.length; i < len; ++i) { - arr.push(this.sessions[keys[i]]); - } - fn(null, arr); -}; - -/** - * Clear all sessions. - * - * @param {Function} fn - * @api public - */ - -MemoryStore.prototype.clear = function(fn){ - this.sessions = {}; - fn && fn(); -}; - -/** - * Fetch number of sessions. - * - * @param {Function} fn - * @api public - */ - -MemoryStore.prototype.length = function(fn){ - fn(null, Object.keys(this.sessions).length); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js deleted file mode 100644 index 0dd4b40..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/session.js +++ /dev/null @@ -1,116 +0,0 @@ - -/*! - * Connect - session - Session - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../../utils'); - -/** - * Create a new `Session` with the given request and `data`. - * - * @param {IncomingRequest} req - * @param {Object} data - * @api private - */ - -var Session = module.exports = function Session(req, data) { - Object.defineProperty(this, 'req', { value: req }); - Object.defineProperty(this, 'id', { value: req.sessionID }); - if ('object' == typeof data) utils.merge(this, data); -}; - -/** - * Update reset `.cookie.maxAge` to prevent - * the cookie from expiring when the - * session is still active. - * - * @return {Session} for chaining - * @api public - */ - -Session.prototype.touch = function(){ - return this.resetMaxAge(); -}; - -/** - * Reset `.maxAge` to `.originalMaxAge`. - * - * @return {Session} for chaining - * @api public - */ - -Session.prototype.resetMaxAge = function(){ - this.cookie.maxAge = this.cookie.originalMaxAge; - return this; -}; - -/** - * Save the session data with optional callback `fn(err)`. - * - * @param {Function} fn - * @return {Session} for chaining - * @api public - */ - -Session.prototype.save = function(fn){ - this.req.sessionStore.set(this.id, this, fn || function(){}); - return this; -}; - -/** - * Re-loads the session data _without_ altering - * the maxAge properties. Invokes the callback `fn(err)`, - * after which time if no exception has occurred the - * `req.session` property will be a new `Session` object, - * although representing the same session. - * - * @param {Function} fn - * @return {Session} for chaining - * @api public - */ - -Session.prototype.reload = function(fn){ - var req = this.req - , store = this.req.sessionStore; - store.get(this.id, function(err, sess){ - if (err) return fn(err); - if (!sess) return fn(new Error('failed to load session')); - store.createSession(req, sess); - fn(); - }); - return this; -}; - -/** - * Destroy `this` session. - * - * @param {Function} fn - * @return {Session} for chaining - * @api public - */ - -Session.prototype.destroy = function(fn){ - delete this.req.session; - this.req.sessionStore.destroy(this.id, fn); - return this; -}; - -/** - * Regenerate this request's session. - * - * @param {Function} fn - * @return {Session} for chaining - * @api public - */ - -Session.prototype.regenerate = function(fn){ - this.req.sessionStore.regenerate(this.req, fn); - return this; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js deleted file mode 100644 index 54294cb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/session/store.js +++ /dev/null @@ -1,84 +0,0 @@ - -/*! - * Connect - session - Store - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter - , Session = require('./session') - , Cookie = require('./cookie'); - -/** - * Initialize abstract `Store`. - * - * @api private - */ - -var Store = module.exports = function Store(options){}; - -/** - * Inherit from `EventEmitter.prototype`. - */ - -Store.prototype.__proto__ = EventEmitter.prototype; - -/** - * Re-generate the given requests's session. - * - * @param {IncomingRequest} req - * @return {Function} fn - * @api public - */ - -Store.prototype.regenerate = function(req, fn){ - var self = this; - this.destroy(req.sessionID, function(err){ - self.generate(req); - fn(err); - }); -}; - -/** - * Load a `Session` instance via the given `sid` - * and invoke the callback `fn(err, sess)`. - * - * @param {String} sid - * @param {Function} fn - * @api public - */ - -Store.prototype.load = function(sid, fn){ - var self = this; - this.get(sid, function(err, sess){ - if (err) return fn(err); - if (!sess) return fn(); - var req = { sessionID: sid, sessionStore: self }; - sess = self.createSession(req, sess); - fn(null, sess); - }); -}; - -/** - * Create session from JSON `sess` data. - * - * @param {IncomingRequest} req - * @param {Object} sess - * @return {Session} - * @api private - */ - -Store.prototype.createSession = function(req, sess){ - var expires = sess.cookie.expires - , orig = sess.cookie.originalMaxAge; - sess.cookie = new Cookie(sess.cookie); - if ('string' == typeof expires) sess.cookie.expires = new Date(expires); - sess.cookie.originalMaxAge = orig; - req.session = new Session(req, sess); - return req.session; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js deleted file mode 100644 index 093e73f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/static.js +++ /dev/null @@ -1,95 +0,0 @@ -/*! - * Connect - static - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var send = require('send') - , utils = require('../utils') - , parse = utils.parseUrl - , url = require('url'); - -/** - * Static: - * - * Static file server with the given `root` path. - * - * Examples: - * - * var oneDay = 86400000; - * - * connect() - * .use(connect.static(__dirname + '/public')) - * - * connect() - * .use(connect.static(__dirname + '/public', { maxAge: oneDay })) - * - * Options: - * - * - `maxAge` Browser cache maxAge in milliseconds. defaults to 0 - * - `hidden` Allow transfer of hidden files. defaults to false - * - `redirect` Redirect to trailing "/" when the pathname is a dir. defaults to true - * - `index` Default file name, defaults to 'index.html' - * - * @param {String} root - * @param {Object} options - * @return {Function} - * @api public - */ - -exports = module.exports = function(root, options){ - options = options || {}; - - // root required - if (!root) throw new Error('static() root path required'); - - // default redirect - var redirect = false !== options.redirect; - - return function static(req, res, next) { - if ('GET' != req.method && 'HEAD' != req.method) return next(); - var path = parse(req).pathname; - var pause = utils.pause(req); - - function resume() { - next(); - pause.resume(); - } - - function directory() { - if (!redirect) return resume(); - var pathname = url.parse(req.originalUrl).pathname; - res.statusCode = 301; - res.setHeader('Location', pathname + '/'); - res.end('Redirecting to ' + utils.escape(pathname) + '/'); - } - - function error(err) { - if (404 == err.status) return resume(); - next(err); - } - - send(req, path) - .maxage(options.maxAge || 0) - .root(root) - .index(options.index || 'index.html') - .hidden(options.hidden) - .on('error', error) - .on('directory', directory) - .pipe(res); - }; -}; - -/** - * Expose mime module. - * - * If you wish to extend the mime table use this - * reference to the "mime" module in the npm registry. - */ - -exports.mime = send.mime; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js deleted file mode 100644 index 7354a8f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/staticCache.js +++ /dev/null @@ -1,231 +0,0 @@ - -/*! - * Connect - staticCache - * Copyright(c) 2011 Sencha Inc. - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../utils') - , Cache = require('../cache') - , fresh = require('fresh'); - -/** - * Static cache: - * - * Enables a memory cache layer on top of - * the `static()` middleware, serving popular - * static files. - * - * By default a maximum of 128 objects are - * held in cache, with a max of 256k each, - * totalling ~32mb. - * - * A Least-Recently-Used (LRU) cache algo - * is implemented through the `Cache` object, - * simply rotating cache objects as they are - * hit. This means that increasingly popular - * objects maintain their positions while - * others get shoved out of the stack and - * garbage collected. - * - * Benchmarks: - * - * static(): 2700 rps - * node-static: 5300 rps - * static() + staticCache(): 7500 rps - * - * Options: - * - * - `maxObjects` max cache objects [128] - * - `maxLength` max cache object length 256kb - * - * @param {Object} options - * @return {Function} - * @api public - */ - -module.exports = function staticCache(options){ - var options = options || {} - , cache = new Cache(options.maxObjects || 128) - , maxlen = options.maxLength || 1024 * 256; - - console.warn('connect.staticCache() is deprecated and will be removed in 3.0'); - console.warn('use varnish or similar reverse proxy caches.'); - - return function staticCache(req, res, next){ - var key = cacheKey(req) - , ranges = req.headers.range - , hasCookies = req.headers.cookie - , hit = cache.get(key); - - // cache static - // TODO: change from staticCache() -> cache() - // and make this work for any request - req.on('static', function(stream){ - var headers = res._headers - , cc = utils.parseCacheControl(headers['cache-control'] || '') - , contentLength = headers['content-length'] - , hit; - - // dont cache set-cookie responses - if (headers['set-cookie']) return hasCookies = true; - - // dont cache when cookies are present - if (hasCookies) return; - - // ignore larger files - if (!contentLength || contentLength > maxlen) return; - - // don't cache partial files - if (headers['content-range']) return; - - // dont cache items we shouldn't be - // TODO: real support for must-revalidate / no-cache - if ( cc['no-cache'] - || cc['no-store'] - || cc['private'] - || cc['must-revalidate']) return; - - // if already in cache then validate - if (hit = cache.get(key)){ - if (headers.etag == hit[0].etag) { - hit[0].date = new Date; - return; - } else { - cache.remove(key); - } - } - - // validation notifiactions don't contain a steam - if (null == stream) return; - - // add the cache object - var arr = []; - - // store the chunks - stream.on('data', function(chunk){ - arr.push(chunk); - }); - - // flag it as complete - stream.on('end', function(){ - var cacheEntry = cache.add(key); - delete headers['x-cache']; // Clean up (TODO: others) - cacheEntry.push(200); - cacheEntry.push(headers); - cacheEntry.push.apply(cacheEntry, arr); - }); - }); - - if (req.method == 'GET' || req.method == 'HEAD') { - if (ranges) { - next(); - } else if (!hasCookies && hit && !mustRevalidate(req, hit)) { - res.setHeader('X-Cache', 'HIT'); - respondFromCache(req, res, hit); - } else { - res.setHeader('X-Cache', 'MISS'); - next(); - } - } else { - next(); - } - } -}; - -/** - * Respond with the provided cached value. - * TODO: Assume 200 code, that's iffy. - * - * @param {Object} req - * @param {Object} res - * @param {Object} cacheEntry - * @return {String} - * @api private - */ - -function respondFromCache(req, res, cacheEntry) { - var status = cacheEntry[0] - , headers = utils.merge({}, cacheEntry[1]) - , content = cacheEntry.slice(2); - - headers.age = (new Date - new Date(headers.date)) / 1000 || 0; - - switch (req.method) { - case 'HEAD': - res.writeHead(status, headers); - res.end(); - break; - case 'GET': - if (utils.conditionalGET(req) && fresh(req.headers, headers)) { - headers['content-length'] = 0; - res.writeHead(304, headers); - res.end(); - } else { - res.writeHead(status, headers); - - function write() { - while (content.length) { - if (false === res.write(content.shift())) { - res.once('drain', write); - return; - } - } - res.end(); - } - - write(); - } - break; - default: - // This should never happen. - res.writeHead(500, ''); - res.end(); - } -} - -/** - * Determine whether or not a cached value must be revalidated. - * - * @param {Object} req - * @param {Object} cacheEntry - * @return {String} - * @api private - */ - -function mustRevalidate(req, cacheEntry) { - var cacheHeaders = cacheEntry[1] - , reqCC = utils.parseCacheControl(req.headers['cache-control'] || '') - , cacheCC = utils.parseCacheControl(cacheHeaders['cache-control'] || '') - , cacheAge = (new Date - new Date(cacheHeaders.date)) / 1000 || 0; - - if ( cacheCC['no-cache'] - || cacheCC['must-revalidate'] - || cacheCC['proxy-revalidate']) return true; - - if (reqCC['no-cache']) return true; - - if (null != reqCC['max-age']) return reqCC['max-age'] < cacheAge; - - if (null != cacheCC['max-age']) return cacheCC['max-age'] < cacheAge; - - return false; -} - -/** - * The key to use in the cache. For now, this is the URL path and query. - * - * 'http://example.com?key=value' -> '/?key=value' - * - * @param {Object} req - * @return {String} - * @api private - */ - -function cacheKey(req) { - return utils.parseUrl(req).path; -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js deleted file mode 100644 index dba4654..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/timeout.js +++ /dev/null @@ -1,55 +0,0 @@ -/*! - * Connect - timeout - * Ported from https://github.com/LearnBoost/connect-timeout - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var debug = require('debug')('connect:timeout'); - -/** - * Timeout: - * - * Times out the request in `ms`, defaulting to `5000`. The - * method `req.clearTimeout()` is added to revert this behaviour - * programmatically within your application's middleware, routes, etc. - * - * The timeout error is passed to `next()` so that you may customize - * the response behaviour. This error has the `.timeout` property as - * well as `.status == 408`. - * - * @param {Number} ms - * @return {Function} - * @api public - */ - -module.exports = function timeout(ms) { - ms = ms || 5000; - - return function(req, res, next) { - var id = setTimeout(function(){ - req.emit('timeout', ms); - }, ms); - - req.on('timeout', function(){ - if (res.headerSent) return debug('response started, cannot timeout'); - var err = new Error('Response timeout'); - err.timeout = ms; - err.status = 503; - next(err); - }); - - req.clearTimeout = function(){ - clearTimeout(id); - }; - - res.on('header', function(){ - clearTimeout(id); - }); - - next(); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js deleted file mode 100644 index cceafc0..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js +++ /dev/null @@ -1,78 +0,0 @@ - -/*! - * Connect - urlencoded - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('../utils') - , _limit = require('./limit') - , qs = require('qs'); - -/** - * noop middleware. - */ - -function noop(req, res, next) { - next(); -} - -/** - * Urlencoded: - * - * Parse x-ww-form-urlencoded request bodies, - * providing the parsed object as `req.body`. - * - * Options: - * - * - `limit` byte limit disabled by default - * - * @param {Object} options - * @return {Function} - * @api public - */ - -exports = module.exports = function(options){ - options = options || {}; - - var limit = options.limit - ? _limit(options.limit) - : noop; - - return function urlencoded(req, res, next) { - if (req._body) return next(); - req.body = req.body || {}; - - if (!utils.hasBody(req)) return next(); - - // check Content-Type - if ('application/x-www-form-urlencoded' != utils.mime(req)) return next(); - - // flag as parsed - req._body = true; - - // parse - limit(req, res, function(err){ - if (err) return next(err); - var buf = ''; - req.setEncoding('utf8'); - req.on('data', function(chunk){ buf += chunk }); - req.on('end', function(){ - try { - req.body = buf.length - ? qs.parse(buf, options) - : {}; - next(); - } catch (err){ - err.body = buf; - next(err); - } - }); - }); - } -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js deleted file mode 100644 index abbb050..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/middleware/vhost.js +++ /dev/null @@ -1,40 +0,0 @@ - -/*! - * Connect - vhost - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Vhost: - * - * Setup vhost for the given `hostname` and `server`. - * - * connect() - * .use(connect.vhost('foo.com', fooApp)) - * .use(connect.vhost('bar.com', barApp)) - * .use(connect.vhost('*.com', mainApp)) - * - * The `server` may be a Connect server or - * a regular Node `http.Server`. - * - * @param {String} hostname - * @param {Server} server - * @return {Function} - * @api public - */ - -module.exports = function vhost(hostname, server){ - if (!hostname) throw new Error('vhost hostname required'); - if (!server) throw new Error('vhost server required'); - var regexp = new RegExp('^' + hostname.replace(/[^*\w]/g, '\\$&').replace(/[*]/g, '(?:.*?)') + '$', 'i'); - if (server.onvhost) server.onvhost(hostname); - return function vhost(req, res, next){ - if (!req.headers.host) return next(); - var host = req.headers.host.split(':')[0]; - if (!regexp.test(host)) return next(); - if ('function' == typeof server) return server(req, res, next); - server.emit('request', req, res); - }; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js deleted file mode 100644 index 7cf0012..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/patch.js +++ /dev/null @@ -1,79 +0,0 @@ - -/*! - * Connect - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var http = require('http') - , res = http.ServerResponse.prototype - , setHeader = res.setHeader - , _renderHeaders = res._renderHeaders - , writeHead = res.writeHead; - -// apply only once - -if (!res._hasConnectPatch) { - - /** - * Provide a public "header sent" flag - * until node does. - * - * @return {Boolean} - * @api public - */ - - res.__defineGetter__('headerSent', function(){ - return this._header; - }); - - /** - * Set header `field` to `val`, special-casing - * the `Set-Cookie` field for multiple support. - * - * @param {String} field - * @param {String} val - * @api public - */ - - res.setHeader = function(field, val){ - var key = field.toLowerCase() - , prev; - - // special-case Set-Cookie - if (this._headers && 'set-cookie' == key) { - if (prev = this.getHeader(field)) { - val = Array.isArray(prev) - ? prev.concat(val) - : [prev, val]; - } - // charset - } else if ('content-type' == key && this.charset) { - val += '; charset=' + this.charset; - } - - return setHeader.call(this, field, val); - }; - - /** - * Proxy to emit "header" event. - */ - - res._renderHeaders = function(){ - if (!this._emittedHeader) this.emit('header'); - this._emittedHeader = true; - return _renderHeaders.call(this); - }; - - res.writeHead = function(){ - if (!this._emittedHeader) this.emit('header'); - this._emittedHeader = true; - return writeHead.apply(this, arguments); - }; - - res._hasConnectPatch = true; -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js deleted file mode 100644 index b304cf7..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/proto.js +++ /dev/null @@ -1,230 +0,0 @@ - -/*! - * Connect - HTTPServer - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var http = require('http') - , utils = require('./utils') - , debug = require('debug')('connect:dispatcher'); - -// prototype - -var app = module.exports = {}; - -// environment - -var env = process.env.NODE_ENV || 'development'; - -/** - * Utilize the given middleware `handle` to the given `route`, - * defaulting to _/_. This "route" is the mount-point for the - * middleware, when given a value other than _/_ the middleware - * is only effective when that segment is present in the request's - * pathname. - * - * For example if we were to mount a function at _/admin_, it would - * be invoked on _/admin_, and _/admin/settings_, however it would - * not be invoked for _/_, or _/posts_. - * - * Examples: - * - * var app = connect(); - * app.use(connect.favicon()); - * app.use(connect.logger()); - * app.use(connect.static(__dirname + '/public')); - * - * If we wanted to prefix static files with _/public_, we could - * "mount" the `static()` middleware: - * - * app.use('/public', connect.static(__dirname + '/public')); - * - * This api is chainable, so the following is valid: - * - * connect() - * .use(connect.favicon()) - * .use(connect.logger()) - * .use(connect.static(__dirname + '/public')) - * .listen(3000); - * - * @param {String|Function|Server} route, callback or server - * @param {Function|Server} callback or server - * @return {Server} for chaining - * @api public - */ - -app.use = function(route, fn){ - // default route to '/' - if ('string' != typeof route) { - fn = route; - route = '/'; - } - - // wrap sub-apps - if ('function' == typeof fn.handle) { - var server = fn; - fn.route = route; - fn = function(req, res, next){ - server.handle(req, res, next); - }; - } - - // wrap vanilla http.Servers - if (fn instanceof http.Server) { - fn = fn.listeners('request')[0]; - } - - // strip trailing slash - if ('/' == route[route.length - 1]) { - route = route.slice(0, -1); - } - - // add the middleware - debug('use %s %s', route || '/', fn.name || 'anonymous'); - this.stack.push({ route: route, handle: fn }); - - return this; -}; - -/** - * Handle server requests, punting them down - * the middleware stack. - * - * @api private - */ - -app.handle = function(req, res, out) { - var stack = this.stack - , fqdn = ~req.url.indexOf('://') - , removed = '' - , slashAdded = false - , index = 0; - - function next(err) { - var layer, path, status, c; - - if (slashAdded) { - req.url = req.url.substr(1); - slashAdded = false; - } - - req.url = removed + req.url; - req.originalUrl = req.originalUrl || req.url; - removed = ''; - - // next callback - layer = stack[index++]; - - // all done - if (!layer || res.headerSent) { - // delegate to parent - if (out) return out(err); - - // unhandled error - if (err) { - // default to 500 - if (res.statusCode < 400) res.statusCode = 500; - debug('default %s', res.statusCode); - - // respect err.status - if (err.status) res.statusCode = err.status; - - // production gets a basic error message - var msg = 'production' == env - ? http.STATUS_CODES[res.statusCode] - : err.stack || err.toString(); - - // log to stderr in a non-test env - if ('test' != env) console.error(err.stack || err.toString()); - if (res.headerSent) return req.socket.destroy(); - res.setHeader('Content-Type', 'text/plain'); - res.setHeader('Content-Length', Buffer.byteLength(msg)); - if ('HEAD' == req.method) return res.end(); - res.end(msg); - } else { - debug('default 404'); - res.statusCode = 404; - res.setHeader('Content-Type', 'text/plain'); - if ('HEAD' == req.method) return res.end(); - res.end('Cannot ' + req.method + ' ' + utils.escape(req.originalUrl)); - } - return; - } - - try { - path = utils.parseUrl(req).pathname; - if (undefined == path) path = '/'; - - // skip this layer if the route doesn't match. - if (0 != path.toLowerCase().indexOf(layer.route.toLowerCase())) return next(err); - - c = path[layer.route.length]; - if (c && '/' != c && '.' != c) return next(err); - - // Call the layer handler - // Trim off the part of the url that matches the route - removed = layer.route; - req.url = req.url.substr(removed.length); - - // Ensure leading slash - if (!fqdn && '/' != req.url[0]) { - req.url = '/' + req.url; - slashAdded = true; - } - - debug('%s', layer.handle.name || 'anonymous'); - var arity = layer.handle.length; - if (err) { - if (arity === 4) { - layer.handle(err, req, res, next); - } else { - next(err); - } - } else if (arity < 4) { - layer.handle(req, res, next); - } else { - next(); - } - } catch (e) { - next(e); - } - } - next(); -}; - -/** - * Listen for connections. - * - * This method takes the same arguments - * as node's `http.Server#listen()`. - * - * HTTP and HTTPS: - * - * If you run your application both as HTTP - * and HTTPS you may wrap them individually, - * since your Connect "server" is really just - * a JavaScript `Function`. - * - * var connect = require('connect') - * , http = require('http') - * , https = require('https'); - * - * var app = connect(); - * - * http.createServer(app).listen(80); - * https.createServer(options, app).listen(443); - * - * @return {http.Server} - * @api public - */ - -app.listen = function(){ - var server = http.createServer(this); - return server.listen.apply(server, arguments); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html deleted file mode 100644 index 2d63704..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/directory.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - listing directory {directory} - - - - - -
        -

        {linked-path}

        - {files} -
        - - \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html deleted file mode 100644 index a6d3faf..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/error.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - {error} - - - -
        -

        {title}

        -

        {statusCode} {error}

        -
          {stack}
        -
        - - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/favicon.ico b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/favicon.ico deleted file mode 100644 index 895fc96a76b68b4924f1c51d022e1b82fa0f461f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmZQzU<5(|0R}M0U}azs1F|%L7$l?s#Ec9aKoZP=&}i&OouUjIY8@C}uZw4x5z5N2 zvEG^C^vXtt_xtJ?p3O32c(KTx;lsgZhW%5M85Sf}k-mf`L80)|7ga~M{a znlL=>m1Q`#uoPkbC~GtXMnhnDh5$DU1D6mx+;2QAKt3ZQFH}H~1y~00GcqzVg9QXw z_<%(a7y$V|wJgF=E>MgE#Aid|14}IyCM5MhEnxFF;pTzOK(>#80puP=gnOXwAd33` mpMe2}f66m3eB@_fcnmb^7!b1nO#opK8zcsj1F30)+jEP);68^d)m`eN0o>(5%D`Q(1;j>g@G;xlf`0VBQ`PFY?6)!N&f?*K}$p; zB!U=NBn{eB8${1}&-2_L*HuZp@ZP1@clS@cHp)4iM1ewzw59vko7eMM{e9z|%NNdX z0V;`?KKSzTCvTm5bc{L^CIKLUxc2X{i{ISz$8Sgf{q)1nXTP{`{s?9mQ$4&hPiKC- zY8q7(Y1Xu5iCf33=O4Vy(+|zQ?rW#gkKB0f%}?+6{G*qT22|DQB-73`YzA{N4W^=s zq0kQYcbtFfz zLz)H<&|z(Y4kBG67=JY6c|L1R-#TR>fC$3^Y%QEnYO1xHsf)+GU`3F<{J0kR(;pbF3)zyg$H+idfnl-wl5Wkh!vUH z4Z32YP=l_}1rZd1W_D&^$A($A+&a0e&P?xx0!ctY2}*<#p+qPVN*B(YzvAWXa*%bzq z7Fz41LKILT(GWohi9|LgIzSZBhb*Zf6R6O}WYQ4GOi&71s9lmll0x6;8&ILOl$j(c z0Z1T(6Tg09{?wd{moFHNN6PS?$|e>1MxSJ(0Z7o2)J-Zv|>acY@f`(Y@g7GwsEj5NLQo+q|HsxQ5}XSX_d@*^A9ZT9=A{W~j+$GyI1 zc4oqTHx@1FlRjw4XWyPN5i2~l_F3@aBk!0yu^aoRDvXy}8@HCjUVQUsuSH4$T5|r< zzZOn^?Wfa6y|Q($Hx4{ws+)wX6-HP4zo!S?4KJ@7PG@G3G{CjXs(p*kIrj6rHs7_y z+=<-=Q62s9FuWa^X~WKgJIAAZJR&XBB002ovPDHLkV1jCMPILeO diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_attach.png deleted file mode 100644 index 89ee2da0753040d1ba0a3487473a715a8fe89322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 794 zcmV+#1LgdQP)i_t#ewV_0K6;=bl;e_Jt7$~$sQ)q$+ia<4Ec+jeaGt9oWH@O|2`W6&O0t!k{B9sUvLWxkCaPsd9W(`fa z;j-|^ZI^2XnzhgZWYRW-kP&J>DWPo`%;JaBX}or79k=+Jo@h%4Eo72tqev+cB?PjP zO<|ByL#>Tehyq$jR74O$B9WDW1`tK`LzYyL3A9iAcRxLkJ`I)n}v%Od-3H>j$OTBtk>(k-9o?8PqI=0 zB&f-+KOXVnjyKJlf4iHOtnuiE_4+ZVJ$dHjU<^o^YCjQ-wt^!;rPpBv(@pFO{9rdw98 z_s@3+yta93oyfL>7AD5}r=|`zS3Gm$_|(iSl8XBd9k%=91J0j2=ivT5cJ18ZmDjh{ z$-RMd{jQ#X79#Sc diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_code.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_code.png deleted file mode 100644 index f7ea90419d950f9e69d977a1f5847456d96a5f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmV-21I_%2P)@LCln44|RX7Ti z0HI3&7jPq){odH{?_{%nYVq_;n_c4WbUpvU(&Cvnj!vq|kVC-vpF6vp^;;e0mm6HW z+WPzA`AZ|;pPp$&dNjzrc??4rt`k%Q1l*u-BPD0MQ}Fbm8jnsyezNt7+u{23>t7Em zJtETY?ja9KrVs^!LJ$xEMF3-bAZO;-IQJavE60KA7fO$VY_%N)R6s>g5mW>fL4&aR z*EVgKKTBXm!=L?S0?xM zYqL@C$|EDF2q*3zWW7;PDZ}SK*IE8;i!3U62=qn80C&*I1Le7WwNP5EcX;_oh2dJn zf#HgBe4@r$GcjHjmj2vAfT%(YN?}kK=(*+1*DkNNc1H5R++vfBMhACi<5uFUU+N4+ z<&U*CPmWi}REa7C6-t>2im1CWv5Jkefxa6>)dEj-CAW wWa{_}BJ!}~75?MkfaCnj>Dn=~vkLS70Pk`;z)@TQj{pDw07*qoM6N<$f@imYHUIzs diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_copy.png deleted file mode 100644 index 195dc6d6c365d298e466026b37c1959d96119ea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)^@R5;6Z z(>-WZK@^7J_sq=QY_e{46@P+~LNG}sRzZsxQHvCsN*h5ir6^j7pq-$xu$N#V1gx}9 zClV7;5)7zih-s3DB)G=7|99>ji@So7-P24n=VQ(@GctDX!^_@$bj%oviY6e4Dh;od zooe%Wvs8LEKQ&&bL&@bwi=STIAI@!-gB2jC5+?y?VR~VkrNxam-`6*8&po|RZ5LpS zNKdJ%c4bTX`XjKsnecf%W>1%6WT?pKNdLLq{=(f(Col?P1+oq@R>)W(n=x!|*BIIh z6DJGw_w`)u6yN|vAhMteYK5#b%r5^v+VCFl1IGssaclZZMS{vs-LJ2$)n7DAr6==K z<29#%AXsBsDoO}SBaXR#_Ap!JKx)(1)3O2pj0_dYWz5By*X74fRT01$Fk%P_RzOMDtV?GU{nsYq#K8iy zb6qzLYDj`_f5$BwC*WE(t0m#xYJ*=jC2|HQYHh=pf#QG7oowi`h!L!{DB$8|qY{~X zu8@sU1tWq;n$XThR0%;45mdqXM892|{CJ@0DS*}>?ami06Q_^tvM~Y3K(_-`#m!8f z8f!QIrH4y#61;0Ym0cCoLl8{IPombPHtnn7%SbTdI&G-d>ZQo!_wBMF9nzX!g8HVY xYTJPGciz9XMh3w2fmZ(7v{)r*QZD48?mrio{~IaoqP z|1Ep}yDQG09bP~E^Dk?@JiKQJ z6-pO(3~IOP)IYisL6D6;oAEd;E%zR}{U$rMRNuD6nQV7nesKS>)yLo7JuDCrD>Abi zbj3uW23?^GA}9jQ{M^8v?ejL?HaT7AX5WPZNkBmfN`w-jL?{tT7ykZt$%Yln?p_m~ z-?>&d(LD(jAd}h=LPltPQbO$*Wbyl@G-_k5jXbb#qffHY03>M1jfEqoPJQ6Mr=Byp=^jfzePZV1 zLjCmNi31hdIJHa%e;5g=1(`u3BRzfeExY%=VCu{loOr{`%2hUR*x>tL^W_TTaj);0 zpPR6CUD1+0>4TQ6zVfH3TQ;%l6#(_%yspK@3gcmG#Q4!WCPyLU93nMKk7E2pcA=l45({2jNho>sdF*A~bA zxX?-cp~y_z_kFf+yqu3m#QiB}03?Z&9vvR5TNgj<)($Vm)xq5G>|o2sFMag&6aNF+ WAT1?sQBYt20000iHtsh1EzPArg^Q zIZrOk#rNsfjaSbMAL;<4h;Z=jvu8dzyz8N&Nb7=z03ZUw?9z%8KQEa6yM5=kUnka& z3?FJk2}L7q>na=T#;<7U*P91xfF`;`6%pVgWgRy0?1ZryL@%z52=-!fGXWGEn4M351L4<+7eDgwo|moqXT+s1&Kmn>-uQQ8mL7XY)w5Zk*(g+<3Y3tmkR!bL zOUKaUtj_pX26sH+=Iorwu}MGd`_%O-_sS}8VpG#fJA)Fcs#ezwtZf?q?Ac70mDv`rVs{$od?VPKeqf<-kUjNtS6ecB*mq<&M97K^6IVsDO zt2$Ru!b+>2S<}_H>$RcInusU_8PMNdf(W{sNlJ3FkrwMJPeBPO#d}Y^a{9TH(#{Y) l0D?dWAV4eUJX#h`!2gmISk&ZKd4B)^002ovPDHLkV1g&sd|Lnj diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_error.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_error.png deleted file mode 100644 index f07f449a44ff2761bfc7b752db3d08d0e1238b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 793 zcmV+!1LpjRP)lHwhvrAu0-@MQwt}+5~MQTtu}C0%;W( z1<{R?aHBz*g;pk%AyQVBR_Zu5m~;ES_vxI-O!vIF|H*|T{l`n#garr?$RMk>)?Y48 z(ZF2yTneKb};DNWF+jK)IF`6_IfJ{i|F3o%Q+l&4_HGBD|ACE8na_6>L z=s{^>-C(a7J$6=8A_%h5W!1K6dcL!D?XX+Ndk)oei?UundDpX_E&1Y&`)3P8#Ny0s z2Ag7_&ZPhyGj%)g&S6V2LNun1;iBQm#Fwlfv zgyESZR$X}2P;=RW!2zid1r$hBL{K7>2qi*f7>pT1=RdT3@-anEoH{ z={KFOO;Dh#bV*jaN>}M>RZqQd`S=6O9C3KpI~I>l%QFYfo;jqQYe5fcn`)+)zMm6P z4X&L(>gnN0!%J4^rhX->?$S5bY<=GEU%jc!KLL8sww-Eg;h z`H-yBHa)yfojYT}&G*GFc$<(Yja_q=lZvj66DC^O5%$B)|Z(CeD=n`|eM04SP; z>-=-l+xdJjA~vR6^xB#o{ehf~tSM`iwaQv$O<8NIHA}W_WOw*~ XD^gE}t;YAo00000NkvXXu0mjfl6ZQ> diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_excel.png deleted file mode 100644 index eb6158eb5ca9c4b64c81e70e0fd894dbc8e2bed9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 817 zcmV-11J3-3P)hdKqhFO_H1|Vn1E?(=|cjAh_&P}y{{^`u< zcYD@PK?$)4i~7o9*6F_$F$4lR(d4AAvrez^(88Hk+)+B7E)M3jc=Ewl4$S^`_qwSF zA%qz@=c2EOsz@0qB1IqsqJU)HaG&+}%`-OM8YqW{K85hqj@4&V9vz!Cm_n0-W#f;# zeEpJde%vdgRn5?(+PY=W*z~|lT2-mtown({ll8&3S5+lWz5K}LTRW{k{eJn3Qz!SU zQ`@qI_n2;K?RG~pYJ9=dj-RWgG;P&wEuoAxL~Q)<>x0b=dED^Outj&xQ^rA;u3pw| zca_ClTh_d9cxXg_U!lLRl0`xU@$=UXO|_dRdtXfKwPawmnf(LC7u}-U>8k6}3u|{8 zs9LHr>MIJZGD^r9h|q2yF24Wuh+PM^yMN9GP1$khlDkdyCY}D{kg}jEf-(kW5jBY> z0rB29ZhG-r=i_R{;+1k0?A-sBM;AP6(k1i9ZuixR4?MqXOvphQgCYj~RnXKKL~J9Q zIDNz~XMfO{ZhUg&BTtMyXJqDVqc<x643?SvKHx004lTvR=0a5$dUw z>Xb470000$S;ka1sfH4I-R8njUol7M4dtApOahDylptpYswf1hD#CwFoz6oEA>(SIECU&IQ%a}GXdnC!9$70`0uH1B00000NkvXXu0mjf!8w72 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_find.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_find.png deleted file mode 100644 index 2f193889f7ea091c292acdd684c595dcb206b5c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 879 zcmV-#1CacQP)@+1&aazfGU7ezSm^v zpACwO+tu0su66!(dT=`e05DeeCnCFJW(8|RKtKa{4LGONnx2V85A4m%PEQ?MEtR-esdM$pB-`H542D0)N2zSC6Imf)4L8?>%ZrW+H>xCKi$unm zvGZq-*Q%Aahx;C*=l+K%-?>XB)6TB$-L$r*`RUvlA`xP1NG2?)ge8@TQ4EN|Jks0u zcDg;oFC#-#R`YbWB`D?Q`1#y7l$LXhjSLf8AvQuB84}i#j0^!#g{VE#(K7h@5pFHy zSenl=@XBEdxp`h2Ji>CR%=qXJ7!e|?paKet-~;#ok#jETyeB(5&Bkhp;!+;51~G=) zH?L7xmDUu_h+a$+xuWom;AWW!mS$%%+436Rjc@}y?l1134kgD0AOf$OmjOR zstUlshZk$ZC!bAyIg{Y29z#&@3SJ;6D4+_eFume9^#TmMccC5u0J!ZCTnO6m$lnD| z5JeFHf`Xs~1vP>RLKI1GKDY<~pjr2&bi(fX;6Nj-ss@Ds0CcoO0H{JsEQkm{q03skAA);_bv3q{k31qwVo&s-q`Z?_e+j^w(WL? zl+uETs5+~xBU2};OqEE9ETLGwsMGe1%iTRNue)9}|0~E4B*@5#oRXZ9oRXZ9TqRep zPrGZuoOON4n@=uPbyP1y4G=+HktC6l(gZoFD>@_lXDrN?wo+zozGt3P=Qh+3L7+}q z2!WK7geXLnO3Vw;o12Skp%_E#+N#9;DDWP?Q-VS3B$v~Ha)dDzWn0zG~O(^_1!n0HYp-( z+;wPIdoFgQlpYV!10V>5@a)1LyGBMvoa}miyp(bxbMTM-FYNyx;V@TfYddyT00000 LNkvXXu0mjf90!wr diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_go.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_go.png deleted file mode 100644 index 80fe1ed0cc75fbb67e9398ae686641f8fb287238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 zcmV+m1N8ifP)JNR2Ufr z!Apo%Wf%b9=l#x^8AolrB&K9H?Pg_|78WA8(M3toqE%3B#7*srcF`i*xhupr27%Nr ziguah1+mN)U5GNmyEfQ3-e%_i&-vb-Co#(>FJ+EhQEwjRYVQ(&UYy{U@%vbY||>@4x=B^vIqabI?L* z;-S&DS^V3-ni4^fl|HMkOEbgX)(390>A}|VIypb5Xee4g;7ck zwKh^A3Mi1Mh@eC$5lV!}Fw%sP623U`g3pd_Hr5sunLvTskx4}&Gm%Q6L}(l4x}jCe z*81q1_4-O*ffi~_nMslo?EQ8t*&Ec(pzEw$vc}pKn_Qp0>D7Jr>ATNC3w@9f|Y+U&+)#!t7l&wKp+nP{PQsb+fb=Yf!Fu&5j8vpRj{FT>jD z>d>$sx;A&+`n$HcF}&sYKSyR;=(=9tvvOj@hUG;~4qTYk^_@E=?$*^_pVh_bGnOt~ z;pEw)j{SK$XVc;qy181rT655gW9NG{(yeablViIL>cDI_ux8m>Pp{tY$J0lgo4#ax za?j0EA3s0S!f>{~ykN9h_RhM&g3K(E`q(dE(Rd49+%xMeR9{qlWnmd{s#(SQ>PmFtSQqUjAtB;_Vvt6}AS_5YgM`Uqu`yva+H8^=4U$e4gHb}u zAQ2N{V3A%pO|?Pv?tb6z=jC}SiRa$G^v3q?*6XcYz$p|cq{uLj@#~Fi`J(>5{@&&N zy%T^+;>8cXx%|o77anP?&W1?1A(>-T49z9pyeCl@7YI+Si zKti7=B~``}TImz(G{0PnlQA3P#MAd}sorMjkP!50B7$nAkU^%#nl{Q9lW0@}9fE-> zN(q7tRuiC_T1r|BBtVBTlQ2+70$Rf;eF`Z;lx46Cpu-rEgb)EBKq(b^W8l<^We(`D z43?0=01z<3G6+UUv6`CsWCk6^93!#+<;ws7007{zS3k2k9-zZKFO~(k`>s0y006+1 zgF_jyIhsL-`FMf~JL~C=cV75(CrJ|q;MVO961G=O zm9d)YpJg5g(4i_HKL75eSE}mq$Y}r}hyVdcV~p>6a}oXr80q`oj%+s700000NkvXX Hu0mjfPs|!l diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_key.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_key.png deleted file mode 100644 index d6626cb09eb11a298b90a8a27b0d8eab41f49a82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmV++1K#|JP)$lC4gU2-`f*>nhR-;k6IP7e>YO!0^w)WK%3$w02v-#>5Ep64PCP| zJihT#O|N+nT7XR2h7dAB?UEAOhJF^mol1i`QtQB`HSY}RE7=r! z)zaVIHr5?>v2Gz&fdYw&2ug$!p+txby(aWZ7(4QT)l2`jX7eMQ{>)lG6ev(fWKxmH zOr%mM5$6B%u~qGtCf40#`mbGj3s!n+^%wnJ&#rl>g<4Z)lB5J6f!?|AP275)Zswr* z%T}4~{;_(?waU!#?JabbF3Cy-kf0{R{z}6$e=5yMQKt3BPcl2>zoTPMqMwF;3!_n|>sT?~bK_-2O_m+o>GJ6h zt=+g$4n7y%1qVJI7*5Yw(hqM=JusY{d}*?U(Oj*gT655eZ>Ksn(qrd7v3}DX1}C>` z+X+8@+4-pVq_fxG zlU}~Ye!0+%>J+pPk+0wV{GM$QaYM?5ux)w2z59=S&H2+K?;gH$bZGzL&g5>G ft+noNiyiPkP9r@8gT|RZ00000NkvXXu0mjfuqTIu diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_lightning.png deleted file mode 100644 index 7e568703d6432c530224e443771a04fc1e2e59c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 839 zcmV-N1GxN&P)73{`^;G#xwAtHz%LU)4b zqTRU=ve1RNa3QT=ZM7C`iJ~QFQ*9t7<~pX$d^7W%^M8FFCkcQj-~0ZRTBCB(J0^iD z-~e!d9LR`f3#|=(>$bPvx_D-~2jC%pJ=n_e_OK zeJ_2b-KdDDh@@UlzBSMC;EPygH_MwjWBnPGQegihBV73D?-x9PlHL9A=(Vg=8^d<4 z<9r=UkxuIm)*CO=9e###7PztDxUv}e?$0)rQicmYhV`pQ%S!g@;K(?TVfhM#E?bM| z=B0gfb6h@a8bf5FVT-SV~6}?X}9lK@@Yynoty&1zdZP@?RfODsl=2XzzU% zS8gIN43How+9%bK2S@Xbc`O>`z5`%^;pXGy8^4f>9^3!Sp@|O&)m;dOa3q6d;4P-l zca|=H_{G&m?D_+&-}r{u-J$5T=(X4R&)q|O^gN8cgv;s#@5sEPT5_Z)oFo9Ac>l+I zc4ng5zHpps|9)<_Rw>5bKzE(M1j)dFWI_%OH$BJSz0?T+02W0)_a>#vFqb!*d|5wB zzBUN|M&ty51O@=i?kiDrjQ{{}e|^rU?OS|RdxxP1p5mAw36cX72#`R6UsoeCQFI~! z0ATITp!vfeYyQ?Dr=^5BAshfEa0nB~JG?nUa2Aur006MC*<9`)86SPS(W^`H2n+xi ztOWohsFfVfVWrI7PSKW}BmkyPoj(-|J?ES|BGd-}fIxr{00@ANnO*ZR`#)pee4I5T Rmm>fG002ovPDHLkV1i|Hc$okI diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_link.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_link.png deleted file mode 100644 index 312eab0914ab59271384686255d1be913a6b3add..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 830 zcmV-E1Ht@>P)VWgGzD=Y79#JI$lhEn`|2MpRa?Bt#-nSD~P0P(mbVe{KrOBoKnSsk>m|ML{6l zBosu@om4j#WzNLRAk+{k1JRvL(MfE&vvbb->v>W{*z*1_uMP}0cIRX*?mz+wk%*#O z%0D-+$B*g1nRkvI+_3E8Pr1NC6@5M&4vWaLCnNlr;lNlr4i91z&)eBGqL{L{GNu;Fof}GS9{gM5BJuH;2QWk8yuOZdB3pGR#s8bd~ zAmt<>3Q=YH$t5YJ5;7@+8Uh6=ktBgY6#6Pa%2F?h910?U8cLT43KAj$Z1*==ra&gILO{WkHfs(--F=bly9l~${z@AT>V$oat!YAD@M zBE0v_F{`g#^wOSP-u~!wvlmXdd*uqFqoZ0^{&nEMDU+=!>({S0wrQhFmoB}Yq1)~0 z^{A)L8Xjzdr(W4_exYO6u3a{4*kIeXZMJUR>Q=ksjW_p!rAwDKYUs90>6Q|C>56o@ zbrSq^Xk7Gq#>dAsn@un`Hz$?w$;Ss`%jV7L%9ShgHFV~C)6M>B`Tp%|nqPc&G*A3| z)Qe+}vT4-x^t1~XE@(6wR;^lPWMo9n*~E!cy~)YRsT2{`?fqeIw-e7N@mOA%UcCIq z_kH(_EK7|>pM*1Wt2^DaDAp|cvp*@(ZZDKpYkKC^?97(`0sb&XTXy7N#sB~S07*qo IM6N<$f;YmCWB>pF diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paintbrush.png deleted file mode 100644 index 246a2f0b426faa0c7f5ba009e32b1deaf88d1288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)otxGRZMDZ!_a~nK|b_-`n%VosaL{KDuPV10`(1LIen8kX2Xff$3BE zah#djvFGJ&eE^89Pk*-O^+&d>FC~^GjRYVQ(uuPJyS|-v?9lxA-+tM5>1Qu*n+Ir1 z6KhA>X4$XDH6?-|E5oe1E?pQ5-M;2xw_ex!x}I2+b=}mPFW$U%^;o(Zg*LP!K^1kP%8ynsD^= z1y^6xD1#GLjO{VLdh@0GKY7;d$+NGukV)GRLPn^=q=dF%B#XaJrNP`0E6=}e&Gj3d zKJbQre*WXt!60_DnIzgMQc6S#fvjXxsE1v7;T;njHkdy2miIqAS(nX~o%cO+q+b#h z5tIleLWvL=dQE8OC#{%y*Tnku&K`Tuub&_ELI0t_ea{@3f>Jv&sYqld(%}3_GY3Dm z;O{3*Y?v^A`a|D;^qrM=ykI)U6QHd%WhO~VF!SGjGn0GOZrc3mGZudNl9{Q#X5&-F zuGwVReFLBjE5jr!!^-5*L%!I%PkYH#Hs5rMrEBl^)9)9XTD;xjHFxVZMc3~Dw6#k$ z(-S}RE$bgMHv6Z`mS5|u$$78sp4G-8b@lVkl`HtEv+MGn!F&bKcHPi$$oP_;=BrPf z$(~b3&p3CsuQxhoV$%jIR;`lB-s7FDX)xCTXuJ7ZyIQk96uIR=HBt%-P?N*bp`)EF zq14c}QM+O70NTOa@V~_)&GMZ$^cQDlkyOCa(H3Mf+6xhCuZh`VSN{cQBl5Ys9{cp( rh`2H3A^=GuC6HjQ*7|*0>;m{7QlnX3z3MSD00000NkvXXu0mjfR5FYo diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_paste.png deleted file mode 100644 index 968f073fdddc1cc0f0800b1ac4001cd9a55f053d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 703 zcmV;w0zmzVP)AVs!l4K}n~L(tL`6d4Up4iSWnZ3Qg~4n+_J zDGk-qQdogO5JUtO-d5pRp7Nd7_r1^a|M&Zq%mn9Oe((|e0sw%Ur!K7T1pojj=U#f? zQM`qbQrM^DPkwa?DK_be^~z<~RgSMIa<`xP_4P7gg2jCwJ{9^k!fsU=#Ti|%I3p;>90Qd+7|~0h&mIklA#nb>ATL2+v$&u)OBgB z;nsHb)I&QRKeX40H~~cIZxCd}5C} z=79lXoXK%6YlyLtsV$~bSm?Upq|DJh#{|*a7XMm`4QJWZ>s6nL2R1|&J z0VPEwJ9?!n`o5PKAjc->P1Gi8BY*%!5&FVp=#)$mMJYul1Jton}gujiUf??eOy!x&!tsjxy;=Q3_DdcXx=a^OBhW0N~`A@4xB0a*%F? l+@c^sQA%W+?pa#c`9H5UNfS6T{e=Jk002ovPDHLkV1grvM=byV diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_red.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_red.png deleted file mode 100644 index 0b18247da5850f3c2486373a3e179acd2772e8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G98P);68^@7JE5sw#jpE*579S@TLkU(6yap1yN*Zuy>-hV%Q_v4Ar&!63c8OBr(ZRhFu z_kWs36-AmgZCT>x!RqM;Zu9tqvoHI~k@UmYo_g(*J3c%2{N8}7I+|qKPQzv}7t>%W zsu&9G)UmCzkDYSw{fBnuW4j;1fKV_nicw`$8C6D=F_qu`zUiK$2Oc?5UVY+D(`I@R zW`KlwqLftWHH3Z2_XVNfKn>VgT~k=@- z+N>c>0|@A_HbI9Jn`v0~7cfIF(TS69zaomDS1QtgvaBBfGEPLHccO2~3jc>n^6}^HAEh-2#VxC7YYcDXv!L9X= z-R*SOUvIs;n`8(LxP4~^2|JsiN^hq6cU}5dn4v1~Kl{eT7pm&f$PoY`hyVe%y8G*S bxB&kH@RuR86sIAS00000NkvXXu0mjfZBi!% diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_refresh.png deleted file mode 100644 index cf347c7d4685128a4a447abb9fb8e939417644f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 858 zcmV-g1Eu_lP)`6pHR2Ufr z!EI=jWf;Km|8+n2IrHqe<9xxFVk)&(Nh?w$Xk`TAyvb=#e=0aySC z00NkRDM597_LiNIJ2M^qhuTvB004REvvU8@of{r?P8tmo3;+Pk0F0@*jAMhdOkS&1 zhJPPfQa;pP0|4+Yk%#j>X}o-s#EF1_DMV93FsfPP`G*>Ks>L&)Q}w2g%slu0kBfW1 z+*$*0BC^oTl6>OGIq(9BgG4|C90Dk-N_mPazGrQ7uHZ|>BLD!-KmZ)z1e^#?1Sf(M z!6m}K(^b|i%$TcA5bC}r$tAA?0C)g1@CgWliJ;NAk&ZF+-w#}$`-3nZ32C6IVKrHp zr+(!L2hRfF&AsTw>_@ z1y23;E%Oz}?q^Q2d($ayO;-sON2t7$w(Z|o0Pw1YnSp^}0PI+I5HnDNsFCA?oorkG z5sUIGIq=FSyxcj+xlhkm0en=52Bx3@02o12gdAU$_i?v6iyFMuc7P9#zQ-Hf; zVuV$t9P5`m)F2w1?t6{<8%wk{w-PP#Sj#%1MbsjrSI6n;D_@8q9`~W98dNQf$j=iI z6~hpgww&be%X_HI50Hhx@W==u4TLPB;ei-J-1}G8wH}|{i#Lk-WZAyfv}k4y0|fvU zZTy^$u6L>2nWo(NDSV2@MRD}JQ4(c%G%=dG@_vxH?>gcH#*Ue2HC}9sapf8X?R$Z;XEnm&g zW99mh)5jNw008mK8)r^`_{yH0rNn%u1|SpC(tjf#om=+r#lh+?Kb>DVb9`|C0Bvbv zN3U(>f4-tAC1hosRoA7p(b(hL*V}(j>ug<`&U)|l$6o$)!>PBQ9RQSwn9asj2p*|xhU*R^vq?*Twb0t!lm5}`yW5lRy-U0ZYK?8to!;o!r!XeOE$ z0HB3T+6EEoI4PlR=wonwqJ+TvCoWh&$?CAPVYcU= zD{DS0?AkOtb@-hh^ZLq~FMjxYf19X?pa_YqtgZGvv2TaxcF#KT?O%=_*a-kW_;N|D zakkWsOe!)HsT5WRBiC+p;N-c>0Qwy(1D2MDBC595oXSiR07)sKNk-%9*rDBOO^HUD zZW#;)R&EZpqha<(HK$(tZYU#V29<@0qCXgU{gXeGpc_|pTqQD-WO|}%yKZbeX7k*H z2W~CK$v8NBAq~czrc5A(v51g0Wma7`G8}f=ZcuAiYYxZan@gP(;Ku66M6?bquGiHe z3Q0ya)%Lvk@kLixZfZyU@#UFbv+>pYhcj8TRKSr_sWG8i^X~UA**LvbD3(_Lba3xm ziYcpup*A9qJ$?AA=Og05lndxfwr`!C+O~h|B~4 z01q8H`StcY);%&mId7_+)76ovRpeNWRp&4M?#jx@|E-)x%P*A6t^fc407*qoM6N<$ Ef@ddc(f|Me diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white.png deleted file mode 100644 index 8b8b1ca0000bc8fa8d0379926736029f8fabe364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-&H;pyTSqH(@-Vl>|&1p(LP>kg~E zYiz5X^`c$+%8#zC{u)yfe-5 zmgid={Z3k(ERKCKrE7DF;=x4^O+ pzO8rLO8p|Ip=x)jHOtWj`bJBmKdh_V<`47(gQu&X%Q~loCIFbEay|e6 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_acrobat.png deleted file mode 100644 index 8f8095e46fa4965700afe1f9d065d8a37b101676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0~O9lw>B8WRlD)Gm}Jrz31u-X&&gn2lvjs=i{7nIaL6v2==uw+8Lcs(8j27 z;|c`rmSv@Lx!heopGP^^Ieb3f=R!%Lpp$}iMS-&P3EJ)s48wrJ_Ni0~k|c47D2nj= z{jS6bt|kFpFf|p5cM`_&0Zh|`rfEp0(}=}lT#(6RpzAsUfxv^LSYX>WlAaN$>)*J5 z0#sE+JRUD8iT9*fz{)_^7@6P&!sEjTcD+I9Z4YjT1`wH@fV{cEvneYGFU%maIEU2s55&K(LixD|{p-uiS@?KNj zk-Go8G$hH6g002ovPDHLkV1hVj1#|!a diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_actionscript.png deleted file mode 100644 index 159b24075191fc259cfd80c797a1b0d74c168422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmV;J0%!e+P)7Z7t2}reCh0o`+ zAlt$F2tW%oO@m<=(B8a-_VgLl#~yUMUDWG!0qFPppd^03e+x1WpkO1NhIaKD2A)-@ z=Py8(Wi%R%JtYZG#sTKH@6Z+&!S3Edf8jFJJNKuva#KJQD3X^7;H^fd2di znEN&c58aUG>`>P{Vqq$kLb+TP{?I!d4(|o59X_%|nVEZq2Rk60n7072SWJ{64CV?3 zgS!EB=eYxwQ>P2&$}(iT6UMvuFgHHIEdNA29!EBtg=v~X!DxxEH~}L2zn|52%xalaq@DTdhh{EVwv0IaQ=!?daer zTKp4I`l8SDt;d{8Q`5Ko;BXUi&oAG1l4}59P-{|^S(Rmord5s6qsh<&m@Ab^wqCD) zHyRD}lKLDzpYN&@q5&*47mGzGiqcXpmqR9#K|CH8kXS4RNs`(iEF%HjP%f8ItyaZK z6$%Apvsok(2>~dTO5jTZfq;N?0ch4l01f$k9?4{~Youl-#x{UDMr#AFIkz@SDwPtQ z$gQ^$2|*(Ps9LQiav_8o8Ne<=Zx1*M*syo80sEO1tB%>5 zfdHB`1z+!R@?ghPRKmL)hWEvZE$=*54ose*0JiUNTM_)cMDXhxEKg(?-pD=y<)L4J zT0dSyD0&NhJ$^_8Ko9uom%-ZM4BTM{Tw$9qyPj=-9W;N(Wi@3*-Q4pq`Gcp}^vvNr zyd&PsmG>fpCSZz?K}UIEd;HGgG%0MG>ymxKPwy{>wy(m*Atq7)0000~7 zMNw2LQirBVQoa8G3P(rY+l;L4iy+JwSqmy$9JlSkk z&*$^Eg+c)@!R|v4gdc8+TTn&eWHO0VD&>$!B%o;;WLf4CNs=Inq9d`xA4otCWHK38 zmc{pkX`0Y=9g3oGK{}lVy~OYL|C5lQ&U^l;wrg|7w=BcA9L4-r411?K7f`@348&rw zXD#uW)DK;H`hxO}u%=@Cj{;#u#_;bb1_KgUOT2Hp6;)MvC6P$vQP3=g1O5#aU%I!K zZ1dc@f}YvG&*Spnplm2rIp^VdA^HydZ0X1axdms2!RKi5x-SFA4p@ zC@N|PI$ryHL@t-(!zBsf2-+sYAukhDHU7Lxm88-p zDk^c;sHj}OKUc4lGZU}6umlGVNAJx0%sKDOFwQx|V2pVvxhYKe|L9TNk!~md3BVrm zYPDL8Hk*yU-ER3~LGwJ7N`0ZV&nOhBI{~~A;@ND*=kxg?#^W&`4u`zk?Mg_e)8XlK z`T#M+OaR1!<#Nf_>$S`xrqd}OjYhoJ>q)?3vEX8pY&I()ERjfjrXM$k7e+-Qs3Ihj zNyOuEQ2EGYG7ro!o6VOBQEwuV2z)*tR8>WxP{616FY)p1Pn1d}#9}cxolZC$4n(6- z35hJq0;FlHC{ zp*iF(lgUK(E`($(s9pJ8Kn?(M734H_63WHtf}6SQQ_MXEP!#0|&@>J8dL5TfG&tBw z#tYn{TCGZvAr>cca%YYn^!t73tg8OOJ2FvJ(`YpCyVZi*?Ur+1uUA$hAg8-aK)c;e zQ<)!XwHh|n&ND=$@^)>aF-`~n}#*WMkD*M|f8r$i*z7+W! qF|A!t*4fE(R`<_YIkN&?Jng?3oQ|aAqClPi0000t>5xmo{nArfL4CJwMMm+N`pQ3p^Le$?rMud6Rbxz!-yG7bz2z$^USP5(;udf(gfQ zG~f68y^)EvcNWp#bUoDt2=h+^%o-?-|mo~iieWqLNP<0m@2PTB7ftyb= z@H`K$>v9Pr5X`L|rw&CEN2(9SB7A2SE;d|j9@*F}sd(@*2l|P*fWfK>1drZUrtUA7 zNXO~pKn1cjf~~TLbje1g>EPPzN2GH#UIBxJ{}S9=E`{zs-w#hO?vcH+hJxroI5v?j zD!4lP0WXq8zUx3RAP@|Gq$}6wXCjFLZY^YSWBxN9#&g)ro$%5}aYn#y=tJ_aIT%4d z5d4u`rlp!};XGmbZkJE*kYJoi&N0pd*yxY{0${xD;;Q1h^8f$<07*qoM6N<$f(}t7 Ae*gdg diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code.png deleted file mode 100644 index 0c76bd1297751b66230f74719504b2adb02b1615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 603 zcmV-h0;K(kP)^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_code_red.png deleted file mode 100644 index 87a69145075afd8f8fd8b391c5da1249ec8b2889..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmV-R0<`^!P)LWh{^|hy<@Q*xw+qo|KpY<+vaXbbW{L4q( zTsjXEJvb}e%bgb=o%W0h?4u1;^bWTqH8}5Th002ovPDHLkV1nrS0P+9; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_coldfusion.png deleted file mode 100644 index c66011fb0fbdcbf210483d676b7131542a0e282b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 592 zcmV-W0k7R5;6x zlV4BMP#DI+Z{WQcKZBTk0lfkj5F$ztWhP#lcuyb@0@rA^#Kpu5KLA&Rgc}o#aSmis zrZC__xY^&#cI&!!{c|4Q_tcec*#b>|Y15wPcY2=o3;-Bl=(t4;6Ok*pL)-{*A;GX^ zS(@WGp6j~k1wBVR9)BB_gar`}HyRBXh7nM!)u5^>N~MyN6bc0-5{W?44iB<`2biXb zR;wk?jIQg@G!5l)SqhrXCU}x$GU-dY1sra}0uCq@153FUULT=jNwSk}0WBjKz}Jdu z<5gB*<^XtpAmp3m^ZEXQZWd1krhft}CoYaF4cSMvTJ01}X3X37KYdx-D0$c{doUe8 ztY{vlGr-e*;N!WAV%_hgUawyYrhegW>^F)pv%uUTFslHn; zvJ)l{%w(~{!O4`KTmK{Q{zCYltLfs&4?nz|6IdlqHCvX;|HGv~!QW?8P~_d#e0$v$ z)5XHEz{3>qMiH`1+qNYf?huS+@L`J9_$cjJF)Hf?@pu;)`9}BXwGUM{2!{y-4|Z{L zG>z?O%Cp8P5T#j1DID7u_*(Jg?7iss8AZQ+&;u_J{FmILf((9eoiL5nGUe>Fgq*U$z0000 zJ3A|*qoWOonz+4ZQ0KNhDB07SX1?#FrNy8%K)_l}y&kh`*KYdy`Y99&tgNgMLSSrc z?B?+B@HO@P-jS~z2Rgc6yy~Y~%>oJpBxsb$5<&nRLqiuR7K=@0SZj~jTs|sv_jWVX zGe?WflejOaq|Vec=s9+ahmXbyJ|T)Sl*?s82sr2H?Ce~HD5WI+Sz&tmWrN()wI2}+ zKqg92t*l^-#ae~;9%KFlWkmwnY=-UK`_|%ICZ#P1gdjK<2n38VXsuC7{WiU!fZFmm zW~Sda9(Qi@pxO}$ARY+;t##Ao27usOqNt7Hwq6K7G1il@xitj=LIM&{N&#SuX;x4x zmG6FhCg-$PI;hQ=;1iZ>F>^~@)IPi;l}fX?SZ!QiO=X<|pSVkNpJuLHzW(FT_~W-v z?vFpkyE>8ee4d=7wKauH5~dd_M7d2Aa=ICC{Nj7Blqv&DQEP#j_VeWV&WXL>c=LLK zsmYg^_JiDb;%U!UxO%qjFAvsDFj-kzT2$GbV(ZopPM$i$z`!7jvEk07BcC=6FMt4` z*0u3Sy`0b~%#(0000K diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_copy.png deleted file mode 100644 index a9f31a278e17993d8d4e13beac2f9d5f7b42d08f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmV-50m}Y~P)sF~CC`eaI+m%Y8jfzomMvZQaNUIT3LIrJ$h)_W{ zwF|LDNlB-g`Hb_G$;>3F$9JF3WYR|3fy2C+_wH}*xp!_4fF2UN4lt#d26oXwru}hT z0+0%Vz-l&|Tdh_L-Ng1G2*RBtBncRx;99K)&+}s0whhxXp{go}$g&Jk6k|vfypI5M z!1sNGVaV?!*L7i87Bo%cfO@?S`bajL{R<($@$|PtgBRcCGIJ_2a|&kO>G-s2aR3E4 zjssoScUa;zIdOeGHBnH13G)W-zt$kUQgNfG;96b=v&4NzRt&@7nN%v3HsG`<<+F$cumMs448N!W3r&2Z*b~D5^$^d6Jxn@SFK5Q8*uKSR7x{I|H-_N1f+AD zSYC5@2K4OKL$==F9U@CH;ONNL(W}oZICHn;d?~pw?GRIsH*x-68Oy6SuK`)`{E)46 z9^3(-HXa#X89SBv?u_YP)WjsQrp;}0X?Bxrvf12IKW8>3t`e~W9|JS<{btTNbNT@EQIWBSNJTX8AMGXD z-SsH|s#>j9Xf~VMtyT-YMD}5^SWHTY5->o`k|d#AE_YQd79j`%GMS7FNvG3b7^Vy9 zn0HYCJy5MyQLoqKnW|JOp-?D*<2V^msZ>BOv0ANd2n7t@{=V;sZrQ>3c})5_%ms4z z7!qXwHHe~!QFj8aR~&*-3F?O|;#(ESIXP~Os%|~y^7c15*q5`gz2-5ol!fU92NIGT z_ves+>+Tf3gfcL?!nimYmR}cw*|BGULzI^7!;k#3K^YO#;!+vM@N~(99+<;fdqr zYPJm+pXYFYk;neQyXXEcTQDNQx57i`Okp9A#n?<7!{#tnKJdsF>utb@JH7dU01gfL zEK2hoPZAnO5+je3&^i*hWM`qCW^vLK!O*?U-#IvXV?#6koWqrwnD{j&K`7N>^tR3G z8zr1(qVOzcF#nF1&0MZ5C$l8*E^Uth0000zE0Ay_3@1Z_7#f-XWL#E{8Al7>L$ z0Rx7lnddoqAyfT%&#`$;v0@*5YdW3w z7mLNoa=FAshK% zDiy@zakyMAxr-H?iQDZi^!t5;Eno2A=?>mMx`Vg(Z!?<53LHLvfTPa`$mjDcX*Qdv zR;ylN4OH+m)fVX&Z#yZpUae;ss@a$K&})gHovkhr@w#xyPVlfVgXti1_357y%I-UHDvRWYvPEX+#g+j4Q9ayba zh7uQN1j%HQgA=Fp9DfODAU^*3*FCs^6IpO7xg`RUXyP)(;=d!ly=#I^l3e0Cub`{H Z`5PU3+D2e&<<>s`J(VpX#y^kqzQ;#=2x({YMw9Q&ndHT&`BD$#%Ql?{+)-OuSA`r}MWJ zVg+2Gc(GW}a=BERPNy^;kEz$|38dTYlFQ{%5S!g@|8f8D_!Nu9_Ni2glF1}xG8xi! zorc39&F6EPOeWOt_XS`W2H_Bo$MXugy}SEctJQj=(TLXTHL(jRXfzs>NF=0SHk;94 zF!&HjdZNX(3U3;LY64IMX__Xv%_wjLC!J2`0Jw?X=zPK$C$`&dYPDKaC={e16bcE@ zgun^<0k;ak*=xLE)@(Lqu~MmsFoMCLY&0Qog`NO(h@kyxaA%EbwJLy8sU*Vi`~52K zX0wrqW;_LmMq@evX4iAM9Od(Q0eHP$1%L|xAh@vrqB`HPQLon}f3aAka=9!3hr=O- z5F9`#J_7Jhah=U(4RjaRhkS4Xkk98kDz-`i!r|~~AQ1TFcDw(@<8g{aBE)l)PNxNE zI(RPyc>9e{@WGSMU%i7*v{!&P$WLz25)0oc=Dl-yy%xYZAm4b-rttL7UjR#%`#j_F R;_m(?iiXTHIMmcoLoO94I8;j@ zv^2DJ5#orqydFJX|Gm$_Bi_vyew+j6{r}$Qc@D1%fQqeAhJj)1!z4pP83k2MV2~s! zSt^w(<#HLFVBg_#xz1W8ioi(WY&Hu~6zil?DI^jJgu`K35(hkP)H%@Imesbg#5!Ps_$Ni*SiR8&sKb9?M`0-mH)gtg&YgRX#*TXz@Z+| z;|2H@xzE0TfuORhuO2k6#K8#sW^J`mQ0+E@$K`QkFV+DTlI$w{GJ;zid{*v9xeIe_ z$|Bp`@iKkgoFK3{4Z)#DWKV~W4K@5WZN+Ql_7%YxNqSx7%cWud&cX>)_PvD*UzxZg a%Kia9Rjz_59@~-t0000)l$0ECbfb-0$}>7z|u>IvuoHEmW&j4lzv=KA+EpIObc7e7{sGA)QVmnM@*^ z%|h38^m;wC+ilpk%>l#V5LCqP_y2_Cayd^XlX;j*r54R*lW!zbqtSpQNyz8(JVmWm zyV4S$2{Uhyc{Cb0QQbf{ZGT{Kr zvJi{K_&f+q^Pv4MK$hhS4TgFj_FD*rLOePdE-E^T7ZzTFCRUB`*?9&h(a#C!-v8lWG#k3AOJQaUey6Oasked^kDPe=Khg@7s584 zg`XfS1)&u*_c;I76#%`kkBfiZgKKo@0)9d6vZw=ExQUtV?eW{Y1Xv}=4X(2zy85d> Y0C^(qLv?Ui{{R3007*qoM6N<$f-gW7od5s; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_edit.png deleted file mode 100644 index b93e77600def75c9a144d3d0a5088a62c02cbb0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)$>5Y&axjp2O=VLu>*f>1L;s0)kkvKC!*u?s6CVL=HJ6oP~pNfZc; zsKr=bq;7MITw8NXw{SZm%59TId2x_9BQ zV86`NuvGI!>o^V!Na!=$7GJE{Cq`b+XwknM{UcGHFTTfmuS+ zm-zYC!P3+zmY;SG$?!fYkOih`QYaLxyF}A86h$GGN}kFj)_o*0e zjPMP%zTG7FYMAfO2Nn1D`D0Cj?Wl>5q%@CE10nX)KxpNmwk+!IWkzywiYD( zqUXiYYIq3qcRyMGJ;IY`(Gz~E$J$zu2+R{)xGlE*88b3WK6V*J>}2iPY1HH|tER0W z_+^^FdppY?o)Gt5M2`%xwRDH@R3G}^i1l4|6uchm0X0f!@&YdVLB5K&dd7Rv{)DXX zt^&vP;}kqj3f>94j+4xd93>s|Q!Ezi>?r8(Il$P}PFxSqu{d*!Y%*#cX(R0f|Juz# z3o0_xI14Al->1uky@W-rCI_%l&>PK^TXNSN{byMk2AI5vbwp!K-%-@!-vPR3iikL1L7HA!^!~ChCFU#lnGzp88=I z67V8PHBo4(l$u?-AKmT8?#_0rKW9dUNRbpLc`}piywAM9$xZ-3fR1C75T(BjCn-l* zjUcci2oXXo-}iqun@#)+`W@kL_-U&|2>MxZy~3IdmRm&8b)9!2%ksg3R)nNnT*TJOC=6{2hG86Dz+<^p6qfG5$i^UNUh+u)CD7O2 zK>Ioazn;U|+X0x$=feveYZL1W*Fm%e5P1sajd#eW#^5(ddx76*pt$^)b}$Q4oPabL zLc^HF>Z{8za;f$LtN0P$6C?1{X*jtXkRJ8IEeyiSzencvH3Ux_y>y^}wfJrRCQN#9 z?&e+C>sSAfrE%mZD5RfZ`gSndD)=P?+nG5Oq$zmY&-v+gc7R6c0u8^Ke#|XOq?gF@othF3zFpM8Il<8BJrWqBtF>b#_ye4{0)Xbu6j&@UIhRE002ov JPDHLkV1nWI9dZBw diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_excel.png deleted file mode 100644 index b977d7e52e2446ea01201c5c7209ac3a05f12c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)^@R5;6x zlTS!gQ5431_q{u#M2 zg&W%y6a}>qj1Z|7Vu&-DW6d~k-n;jnHsjb-q#u0C^W!_5^C=MlKq<8oNCQ6qS00!X z5eI;XP=g!^f}j{hku}E1zZ?XCjE;`p19k(Rh%^AQQ54xysU+ocx$c#f61Z4HnT#3u~FR(3>BnZniMIF4DouI8Hi4u>cAK%EN)5PO(ip3(% zIgBx+QYirR){Z8QwV$9Z(Mpt=L-Or3#bf-G@66}txq0yc*T(zNTBDT0T8rO^JeNbSI-Tzf5!pBioy4NwAN^?iN#{;fH1Jke4Xa`^fR8m z%h6dq%xX)S?7`zae))(Xst^Scp6B8FejQW?RLTM8@0=vnnntuRGBM2dpo>gbCnTD= z^<;=JuqdSf@O>Z8^XdR?s+KEfhDdB_#ahFj^giCtzT(s8kA$AViyTqaAR;KGaLzUU z<=GqA4bRwpX|IG~*x>pZ!@zLr`XQ`od>m(`;jz|M_*1GDO#$7;n74ppb8=eiqh760 x0yt}J1#p`gw$`o!R{d7zU9~!Un@nJV{4bstt4Au+Up@c;002ovPDHLkV1kWhGjjj{ diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_find.png deleted file mode 100644 index 581843637079359a6a58fcdccf0763690c67b063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)_k3`4d{s8lK_6bi^@vq&To98fNoK}7)fx$e2^Y&@<^jR_Ee+8}KG;X`@ z@bCyiolqX>bb1ZIs%QGnjzFU~L8H~d?e;*XP(h(S262}XyZ3a0h07r{KV?E70l+e- zE`%3x|M5#q+;HOC(h@A^M)7Rn13dm0&>K$j%k_F4wOWlsNCIH+!c_#{eS&TL8v4yc zcpnPEY`cQzZ$ILq{U-MA6Z6Z|1p!FZjQ}tXSb25J@HphEqX-6Hqo?-_Zn@{d#>2Ml zJGhxTAd&emK$lV-QK&VM&ix0Xy{GyS3Wp(+E1^8BhD3T0a)m-Lw@Lu4zQRrP)9(3F z^>$hh@N>OAXrmPYunLi|fJ$_*5i`46;M>~*5D{bp>-OL3{+!MJa`3kv~Q#QfQ%c z)1s}QE<_XaYBG;IuRF=td#+}fi4h(6HgoUyJLi0t(*dA^B)%@8kkG&bdM5P5^Z5WF z%d%>m^SbN0XeV)wbUOXn5Ag#A$gJx+7-OCkMM1S%MWIlTkbFLmOeW(&n&wUd&;`>p zVcRy$Z{K0=?SpNnP^;BYEEXleFbq(UY&LrXX$6qkJ~)8+b{=jj3HEXds;Z(?D%}}L zX3`39&dy=Zyar!ehA}e>w)(*vrCct{PI9^2Jpj&OZS8<3-@{0(gNv%1{)zAiLY+_^ zl}e>Ofd4&#Irj#7>=o=Uhv5IJ@?sN0^J|(WL2Uun$4}si6}TG-s3T#p&6GE<<2W)O zf{^Y2HlO#*QDvTp3v&d@;8*}aUC4lisG9(w7@d5Y8y)}U#FwCkqp*Mcgme4{&gGRf zlBfd`nF9cQBKB2_L{F8G2)7pAf$i)Ds`|}-c>pc^LRW{w4SQ)3N^BbZx)6BlCZts! zKph%`(m#xg-q3I7=(us;9<)*2%iuQ1J`oV3gU6V~T}^JU5714JN33&GwEEru0d}Uo U{MPL+lmGw#07*qoM6N<$f^vibe*gdg diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_freehand.png deleted file mode 100644 index 8d719df5205f7415ce657e5c277db4533c82f346..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmV-_0)YLAP)p{{sC7)XB-g4w*W1a1)XtvxrMYa1o?wn&v~3 zHnC|#(>B_M1d`_7gfzLiHy=0c<2kQQdXu*33(xYN_xYW39(cz9jEVT%VokB8|DoF~ z8u%Q5sdl@4VB7X#uh+v_;yOGY&pRi?378ghv)P1cngiAAb<}D#l*?rWDV0j_dc6Zk z-|P~AJZQCA=yWcQjG8fYnimzj*3KqTfN0Cy!G^$7)+bQ$+mHVd1J zvwOR^5Lm<|R+uyB1Nu4vL?d4qa3tn?9H7SZH@~u=fFHEDfSH|bHU6kh0O3%cLdyny z{`9S2Sw~WMy0MPy!64i`jdk4Z3>^+KIL_fN2V_d&ywBt`^IJpxUI$=YAph~5`;xCe Z{s%Y0vkUXDnO6V+002ovPDHLkV1loX8z=w( diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_gear.png deleted file mode 100644 index 106f5aa3611a4807ec8c21701c631730275089a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmV;D0d4+?P)<@FR}JvtGRKa0_WfK^c7uXaFH3q@Y!Hnl8VySc`OtkPN3;#l*y*l23+99h*9JzA00}rAC!#M1dZ#v9YOBH|eC*${MmzzYjBu!!-< zK8tujf&(6i)1biy*F>4{f*Kd(IU-JsG&#b_@NgTnx@40)2@2%c;*=?-2Za=}O}7&( w%_K#(S>e1j&gfY?mR})n>>0+8p`iTe2d1K2h8#$+)&Kwi07*qoM6N<$f(2cptN;K2 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_get.png deleted file mode 100644 index e4a1ecba1b60e54f3777717ed105cdde745b7184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmV+f0{i`mP)o)wchR-92qq~y6`XqbKmElbB3z{pkZs0VPF`CFvS?7jDn^mFo>d9Y&06* z&1MsS!M-CH3ee+h_sy)Ms%B*ec3R0RpVi9?*mU84yoq(Bw8 z<4(999dJJE!V%pWT~HGRIAb;(#O%2K3?uRpz}AfgE8e9q&OSdr^e^}lC$QXZz;S2A z)w>^oHy>?v)q--`!pmuBe96PxP0u*inQvyFW(llfv9 zXV1s*Jh`y2H%B3ZTA(AzpsQ?hb6_PyZ=c1?_B4fbl>G%!@ubJln=!)x0000#DY{xaiib^#X=YT4@yE_&2#eBulEdzjE`u&@G%2(&u{J-<}d(^uY4W_kMfEX z@!X)AR9F&FL?RJyJRUzvBoeqN{5kY`z3wcM0+du73~_0|*lac! z42Dw(Eg1o{Ash}P8jXrqN+1w`*XxDD;ShmPCZC7#4;wWbHoMvBl$=zF-`?*9j*Nbjd=v@OWt_BgKxP-3wd zy37?ATx&$b+&zRM!K;BD%Okw`Sb@&Pak8$KRX19jWZmC0&n*Ggv%j8nvSPDFw zEkV65AGOoBQ8kf`R|}Px*&INNS%osq9b{Fq2I(x6@xM>tg=vRLF?I`0rWzHyRc>}g~)F_Qn`A>)C_iwK%Z zrIJ;xR)UI1Y4Ozts|-Nho;q zVk9-bX)%F~!;63iu$Fk=VJn3~fmb5S@@)ZqjBT2{f`vT`b2}zxb0$o;EF@G3&BHK^ zc)`1kUzo^Qkk$?KFKHNBD?nP-MJ3b@&4fg;g5l2wMi^g?9qj+~@b;62o_U1_S1J`g z7m^UMg25FX1MJ5AQxAJ5F5WDt=$=-@JV-!LHA2vuxl9kN>PS8x??^AINH6LjF*#nbk4}=n3gfWp$kEX5IpHS zYiQ{@d7Nl&d$#+7-TckP&Q}N91e-C#5QQ<|d}62BjvZR2H60wE-&H<>}%WqH(_V;zPbB1rgSSSC(0? zWlQ#?N3UgnJ9m2C29w!SwoOo5_2Iq!<8vCyEoDoj@#oV($oJEg6Bj@;nD|2g8 s%L|>IZ381yx9RvPhV4J)*SeoEV4lyr#k*`nfWBbxboFyt=akR{0DpOPi2wiq diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_key.png deleted file mode 100644 index d61648452284da1bc28b10385f95b5d2bf027901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)-tZUVHjYHp;RjQ0M0pRlXN=mLv{hk9Ebp9&~+Wj-T9IkpzWPWd#fZ)d=zV^~S`;LE*!&u-?g42^wwN&Xr1~#d5ifl_2*B1OoS}CDno^8a50ArfE8;stQF>AP54J@H~%T zFz84s;dO!QJKD36(~!QOg!t_^gfFcSKDU4yK0+Ypg$NT^mIYcQ6bk*3P(lBLh7Df_ zTu=2xC#+-_%)|{Cv8zz0t|0y4D5M`xAc{gwOKc`ou<*&VjUREFHs1qd<_xSkKeTBt zgyCi=@jj;&Ns^GsWWaIUl0Y2azcDlF@u{(P*!+EH;lnU~b|Lv{4|4Hdkh!qoQHiE$ zY#y>KFA0QEw=4Z|uV{0A^`Y=D}hB$GP&<$bi8q(u;p^0(my3Rz7fP}|# zGZ&#uor4@c3q9r|f?H6-UZmfgKx(iV(MQ`MPWB>iC~SxnN5H*zb*A3#zWwgu&c|}3 zn^g87H{pdeasl%Lhmab&jC?lES}7C?4BFDNA<}20hoY@w_IU%i*T;}}wh!589}7~7 z#Ug`-R~4j&+K_y4kW@X7qLr-)S5qVKU)tO;+kXJ++{vPI@{hVK|PhMVVx_`)vx~zUs}c9O-Ok{00000NkvXXu0mjf DS5_-g diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_link.png deleted file mode 100644 index bf7bd1c9bfd78d689c73ba67cf914182933ee68c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 614 zcmV-s0-61ZP)OOAS;jTeL{ZSdz-%)SMH9tDF;N4B6%j=d15J&5qy`F#vB?Ar zqS1nH@%ny_XSI*Y>) z1f5QYdmzT>YciP<3WehS<{GovEaLGv27>{*-7f0&I$yJ^L%ZGPv1YT$V|u;*+ZCWz ztHI~CDVsuy($SfR6-`N~K?9GTB#l%%0h7 z-q`K-y~E)+s8lMyTrPL8^_pUo)9G|SluG5pPqw6!LJB_PzyJUM07*qoM6N<$f^=yZ AYybcN diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_magnify.png deleted file mode 100644 index f6b74cc40f82fc83e4dfa6e9647ccc1b34e6ed7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)Vb2f>2}Fa82O3m(Ob=t*sniin`NpInLyMJgI`saru@YOPfh zy4g0#G*cV!#N%;Gq9_VH9?v%kjS3Rb1j8^;C={$Gp=lbj z*(?%?geA!5^Pok%UauwjA)v4g2`HedDw4_Mk4hhBQt?e7YJ5(hcj|3dNu^TOPGnjB zTTsqd3GIZ=Bb`n=7no)dflv&K(lsWw?lH6T1Yht0F9qgIuzh}ym0%n<3d3EBWB*pg z+G!I0lbAEXyd>k|QNuwr4=KX1D+tLPv)j@C1=N4sA4NF9A>HcO3G47*Y6!+SrUH-7 z1hb;^#S=r|`aMh>J#dWruAEf}gcR(DRUC`ZUev&$Sbh0SgLiTXeeHEU<$_YV;9281 zym`igIE%Sm8DpDw7@71Tv^EB5xSdUR*0$Mqp+Wq8OoaZtOg52&)zZ;;M=7#C1Yd6x svjx>8ad4e2x|*xHHwRjcjs6zA0XLDUqKT6dS^xk507*qoM6N<$f*wetruo^Ag2=LamM1T#~4RmC^m`_ zs}H7d&XJ}mg+hU?tu0noRvyjI&o2SRAeYZFesYkts79I^jJ7!A7%6nJwq8O?iT55M z1OQ` zbL{!Cp5o*IRmE9PInMCSPjTwfT~J+EYkz}tjxY=fg5Yf6EQ@DG$0kMJ9h^&$W}9BU zP1oj2;?MWVkKIEl)r=Y;L^Cx2q|>!)qJJ8zE7-V*-Cf7V8_2#1c0N975t~+&QUpQJ z5(uo(-O_`%Rj@U@t>JYAgd!>L?0Idxtd#oW2gc!jinsAEva8|kF4#Ic**mmml_{d^$s}Q5Q)KCys4sfck5bP1SyeHwh2`A<@N&t2j0^lgHC_^(pAAPCNjwl+>AN%C4Ll>_8Hjda%9 oS~i=#*e)>KsPlg0=2)Qg6BCqJ=F8HdGXMYp07*qoM6N<$f@i)wr~m)} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_office.png deleted file mode 100644 index a65bcb3e1e9613cd9e4950850db43d7025a5fdf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 779 zcmV+m1N8ifP)JNR5;6x zll@CmQ5eTZ^k*a#RQf}fVOdd`5NJh6S(>6Cf$wEW#f&JyAR#GAn9>Gml;nOf3WCDa z5({5&UB$(IF?G#$x4X@Ickg!Y-HU!Z_rzX=qAq-XI_LS^=lOCT0|0{#{kBkYDS7{3 zD`iu%E=`cDX_^#^#n$5SIQ|4Zhsk8>N|zXHXG@*41$i-7`Jr{8`3S_OEcmY|RF48wXkk?WpdVM4OePBSbfh z#4_=eXJg@3epx~gi>QbUmO}Bm(ENN3+@c?jWiKvSrm(o|W}Ud*?vy~fn1!V~Cl4kB zI-;c!8f~-v)jX82%EG($>?;KSD$64f2&4qQ#=Yyrcpy$57RAVuV#vKMP)0hT$r6m# zc^F^XaJ8R9Q|}x^NoJYIvYZkq-z}Tnj@UJK2l2H zG}p+VvtjP2Z%bsb$~7QLJ9#pC0dKi`ppOd^_V;ME6tdzC0PtV|r=@e@37O`%0k^=5^`%cf$eu00N17Ro!{^30krz>a%3j34C?*{Mt2^a4~ zK=P+Qq%|f;Tc&+9ps;@Mw`EE%rgs&#y=j6BUGg96oIqdwj9-fiy*N(|@o)eD002ov JPDHLkV1j#pUPb@_ diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_paint.png deleted file mode 100644 index 23a37b891c2f5faa3b8128d45373ceab794ca609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)PK^TXt2QS_@2qt2T|9~baC-vaPn=ziepcfAwB$0!O2Q)E}1e8!q+9)KT5JVKU z7HNY}h##OS-BxWHWjD0wrPDeEfUClHs%Q6&2u@FTOJkKMQN|_Rlw6rQz$gPzqGNtj z#ruSeFeh835JJFiM6vp@6M5bXj%k7CMt%SIwfbF_fD-3*Os`9Ly_Q3WQ_SX33E{pX z9_WIeeTCGQ3wYALpBcK+P-iuw;3i&7xCua37k5# z`>c`M@sGeC7cdsdz`aE9lOz!hPholbyz%T85LYf6O*@SA+9&+^7k>+4M8$A8iNQq{ zQvn8k?-+dU`Z@gK0z$EtPV#+`^OH`R@cE-cuE&_!D)SZGxmQxeobP_Zwq zMEgi6ePN45N`|V1so0uE8^}1xw8s;VM%Ai@7} z2-&Cyvez_-O4?6uv{zTaj|YeYEk34i~K@`8YW2g{x* zc;7z3lItpVy_et{Z-ZZ)<@*%{l7Ao8mu@V7*gz<_1##mwW*%LEwCdzNsVLYx2*T-J z#HeQ*_a=R~KDdVNk$EVgAIRl$oQi_(`_IrdJciDpH|Xe{K-YsMtc!cRnFi$qzsr4z z5*$;ecov%3->1{YNy6-Gf(Ecy&_I$CjI#laeuE+S120^|Vjsf)W&i*H07*qoM6N<$ Ef)^4A_ab^avY?n0hpS-#mn_4{O$e%cm-@NH=3`90Wq+3`~HKArSdfX`&Z12 z(CY$VW-MNtXX4xy%yUeE?}*~0-|iByA@ZrwXgph4S*bhcc5{HB!DFVm_v}P*g7+Q~K}7K0lcp(^N@X>U zV`{ZpeIf${R6Hgg4FL^`X$Eu75k(PE6ycl$AW0Ic)#@rR7Z(7;V?i-dR1K935Jgcx zPfkwK>2wGokf!Nih^ARp6-6arYFG#(9Ta!x93nFEjoA==z(g?#sDg?Owk?Mg7K+>l zWYsf(<`#+$h9Sp6gFOg_dd+80SkUpk&xM7h0`Sov9W73spU;GP073|VfZ&Gd$J$*0<~TV5aPS|qWH57|VJz+d0000vYep8SaFV10Q$h+;hIUPX_=v5b}%>Tm<(&j1&5;I!55C)oN0s(P%ZB zP3Q#ahfpXKWF@S?jm4U#fv)QovMhrriclyNs6-G12#3R##4PSZ0VY(dRWJ;Lwuq{# zAW0Gwi$yA^R4RZ!;W+L`f&%x{=D^VK#BBWL4Ys{;*!A7Q;!=dN<&D8*GzGaF4`hV4 zDbY0{NrMX>ZqF=0((gR5-zL$kC*b)!fwu{Euru|XrG<$^n#@)7i_>rCmRxnDq>$Y%gJaCkRd|tE*a2x05Pe!I^e13o69#&RQZ36s0 zB=O|K2Yi(jsMqThn}9t?f5E-)L^naZ+db$&%M$!bCdm=jv7?t_lB?3&%Ltq(>ESw? c;MI421LCcoDG!2@;{X5v07*qoM6N<$f`UZt7XSbN diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_picture.png deleted file mode 100644 index 134b6693687b2fa5fe36d48a9c0b8001f937c741..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmV;50(Jd~P)VHAd+bMNh~)LLRqN>D)-jd9UvB%+hyKX5U|&4t0)fzgD-MPpQ$nHU%yoz=vI zMGb>1Xu!6Hw$NT~@Au<4P-+{9;Uw?&oj31uzH>xX0T7Xkz!(tn|Ed9-s_FqyReC13 z(ll)vW1O{Ck5ihay12Ob2ABc@RUI;zHpaMiyRDs0r>|D4rHw{ItJSJnYjt~jTbGuW z`X(~}?!&86q40R8<4zYw;$qi0^3ec=c&<&H;r`8W%H=Xymf^i;Wo6~<+}zx2UMzpC z*6MZN?(FMv`n|KO3(KFiUaucP0;Z!@LcUNa%8#vGK5aZ>wDgB0Gi=t*argWJcdlMQ z2#MpEX0wU+9&0U?N(F#OgpviU_Y{jYMsj65U3|PjwUOY}lUYj?MTiK_Il}NCVx-Eh zDx-TzMk7se+M#W_>?A1-x}ZXw3kkyz5kW)_hkjsi@RhKadN#H$Hq)$07*qoM6N<$f}lhwPXGV_ diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_powerpoint.png deleted file mode 100644 index c4eff0387d5888c638ba09473ba6d2369f7b56f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)HU2HvUSp%6 z*n}iP63IK?dpo;h@sj9~pcxo;VVTc-XLiP@DgefqE#NE=@oyUd-&HjLpsLIuSFXV-EMck)oQ(A`s%*^&wf0(rNiNHsU%=0Rw;WC z(kbc37l6fo`-0uR!pYkYv8U^3?nsh^@pw!K0TH3uYyx1_2>|JbXPmfskJ|1YAw9w! z9`N)1^Aesr;y5Nr5-ODn)oOL|CGi}f9!&iVwpK$khlIX10X$H6^A_stBJqvLhU$?V`QXqKme*s~gVDJ4A;LTs_e15jhc1;By a82kqHEPVYFAD2!50000JNR5;6( zlS@kiVHAe7MZY2;Xi-5)WxDDgv@tCUl*&p14T@Z~3ThM5LP4tuQfLu@EnG;nXc<8S z6&3BN?fx-cv-Kp6>HRiNTHE>$X( zD&=w+?GWC>?RLAGC6Yix;an~UmSt)tSf}1VS6N1N2ONORdD? zaj}w6DAZZdOud9Ep?M?{iQWbE5^9HLLZZF|1kdy0Tu4InEuboP9@nvbZ-P0n4AZTy zyMRIxRDmUE#LdqYuD=-Qz4N^bC`_#S7vcLn1M}{J(Wl3#c4VWczu&)AjUlh(11>gp>f`wv{KnjF%!aA*Jk N002ovPDHLkV1kkt*XsZP diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_ruby.png deleted file mode 100644 index f59b7c4365fa1720af1aa04eb47167ddaa6eeed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 626 zcmV-&0*(ENP)ZS(e|#C2>JN4>y}l*tQ*E7zP@R2CCJnkW?xa6bgk%(hgtZ z0=~d?U3i`+Mvi4!&~+WPT1^NX#{u6&QIx+DE(oR{&T5&-ovF?@wGw)P&AtpHZa|G%V*GUUqL@@!d4V$`8=##4)ytY959JG zdc&Kho)&AL70^i z!PEmeeDWCB-UbK(*4JST44^tV2z_J(dn~+vBMJT97_7rzFio=~XczIv?PQ5$v%u~y zu(bteXb5I1h2zCV{Jc2~V{{yzZipgsP6;k264$*#5q?GzCm|CPa9CKqm4b116h3Pu z?+%Cm52plC8|5P0@igf2GV1KkCfk{Zecu=G@VNrf>s%g9c5D%@cfxVb6$nY`1IW=4 zt10QqSps_2JLp0f3I0j0u>#qA;v!+T))KEbCg|mo3q0pG{OR}p0fPds8+K~d>Hq)$ M07*qoM6N<$g1S2e3jhEB diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_stack.png deleted file mode 100644 index 44084add79b9a0fc3354d16bbd4b4b5ff8095da7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R@9E+gqH(@-qA%AW0|7U8+xDRI z0k`B18}ImRw2g{jTGP$Pmx3yI6F_2s&$|`cJ!i0UN zB3H;=r{#{FwLaNVJ&hZl9+MTHGx1T^-A=Q0?hRb#8a~x50X%;`b6ik3cw=#XdxWy= zgrpBoDjpwP&g9<9h3x!k_B!?vuTJVkmIJ-U N;OXk;vd$@?2>|rNdMN+^ diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_star.png deleted file mode 100644 index 3a1441c9a12062a4bb3d706000d3ca14399aebca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)SCZIX8XZzY2l?gCw6LlgWJ5Avz#QX4|&mI8LN)w~J1vgL=KLAhlWz*=#m~gyvxa z&;iC6gb?aZvMdXxX`<0+D1hs_pqJ!wxqlEH;CJ)je~uL(gpi@v>!I0f_Kl=E(E+Tq z26na*9gribxx-Oft(HnstyXUUy!39&E-cI%J5Rsy;(PGZH{g{ty!HVC&yGPT3H8x# zw{^gBPW)O0FMoh{k%l<`1a|To_Wl&u&-GXm8izU|&<&utILc4wc6s@u1bmTz6x{qg zTw@7=FQRcg&r`h+gcR$*Jbv+*DPk7v)B@e0o2 z6IlBXW&8xh@9)YKiV~2>+z&XKd24JT55YWz&JtfvCg4r^~bLP79-yS@n$OW00000NkvXXu0mjf DStt2z diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_swoosh.png deleted file mode 100644 index e7708292adabf4821612bfca032cbd019c63180b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)KrcWDBzIw9XCtIF5G<@j zP(;CSqHxUrerI>~wKyloM4~t_Ofl@UFEj6$Bmm6p1aK6H{5zI_FOn(%k{CiRq?CT< zoV}Ey-7=-5nVFes;1m!f?EqZLIs4k$n%39XN4dPbtX{9DZnvvaiWV0aH9I>yf;2<< zHmo7WNC<&iE4ji-iKJpsBApDKiAiqWy8R$FV|M@E-RCB03vjWNGQZJxKCc-cSB=dq z#v3snoDMC=4<2BDgiZrv0Veh~mz(X=S@;fbe>CJO_5|oe2o3=wgfW(StLzI-qr&kc zhXEJ?9=`nWXzrUKL_p*Kr9u@95MU9EKqp2vi+%&1&gUn&>Ut_d3>wiyiAJg5G7j%G z#$sf%Kqau!AAHP&4Q?edl!FWqpT=C{D}$15WC#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM= z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C znXL|3GZ+d2`3re2hs?MKC#5QQ<|d}62BjvZR2H60wE-$R>*?YcqH(@;f-l!01CbW>s1Izr z3LkoHh<3E?TVANoG4CX|$empRCCS=R(U(hVJfm~E?IkDKRK&NP2|n`v>d(vV;W1uY zrFGVdwn;4b{qUtE`?GB`)E1ga&i2|7ncUL1b!KMq^QnT#_gn?_Z8(c`1Q~Vy3oL!N z$M8vHL&U1J3SJF!56azQU3B6>r|ZQ{U6)pC|tRy7$(5JQ<@7eB8yk=XcNf-aBIe#;8c_B$^=N z{-Iq&o3%O}V4~G($=zcP(LI|+6dq{?rby~MXwJQ*=!bOvl%?k zYY;jP^@M_k03MHL+-9?_3W5MN=moFW3xmPHU=-4Bw;62MrIhg_lwHEsv)V9U4x>+9cG2kIz8fWo`WyMMfz zdg-)p!<(hFR{VYSDJHEJn09O@#)%q0l?GUg9eS2~vKPUtd+=ak5lWLd-jI=;cjEf# zt$1;~?G!t@s+VLwL=P+Ks;E z!Jkh#NeohG;&02OFD7^EY zP!_PL2~i9VnPEW6Fz?O3dVF_U$duAL$=SU7&hNc@-drC5A4z=IgjR%B|D)?dOEaGb zuwod-$hPex$8oSoqK;@Z8u3EBfK@V2CKKqo?yA%2pjNA)(P%)HWf#)x^$?52W{|1b zPXOA$IfrSQV2q(qC_vLR)a!L9isAxjoeoJRlgE&G0Ga8krBVsGjZJJ-x6y1i(eL-q zwB%+o53no?l}ZJh#drAjlc6nhs3RTn;1IH+x;K#|X)!=#fM76)$IqT4^N}IF%aQ#o zTKS@*)|#L#jiCPi9~);c`x>TR|0{+9a?O5Exg#~V5W2C7G9nAAN(~f z2caqx&t~GhnK;qW3~&OuEke?%u(8Jxs_+ZVVz1^-uLrP95TahadGG$+(D&+%2QMF8 eFxE8s%l`oWamgLPAe&$S0000dKE@duOisOkyZ-5 zuwDqkAi_*y5o3Xrq7ieT<<3p#-R^dGySwea-CgZZZITBc?#1u+FtBuUCJUZe;~j-%Tu@ZpYB;$&ydfdZG#(j;(iB#^yRlqv#C*LO zXWXM0cpKKBlj#L6awm|;A38Zs3mg;sQZmCAZT8m@X{AlP6 zVI=SsiA16x=>2%^XV3U0y4~G+MNE!B{!#;~%L2l(14PX>EblXb{rnCSlVKe0dyf-O zuY#uOf}m&2xq80;4d3i|cuNw}U@sg3VKRU)>Os_1L3pl5mK*|?X3#a}K+EVZt&w?w zefXKP^ZqnW-3y9AhYJZ~r4m*!Z3OSz3d}2Q`nDM_f_u>L%8Cb}8`?bl)x?gwAy>zp z06y57kT6sry1g2l{|V%UW?)JwnbzUugbvpOF3=oZDo}spfs2EWKOH{_^59;ue!o^A z@e7dWS|QI`Ff-E$USJ`LqDF}zH%R}YOlMiv63A=qK^d}n!5_(fW%^k4U_D`_meIDi kNMKea>saR;>gt<+0gk_zsk5>Xc>n+a07*qoM6N<$f>Jg*?*IS* diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_width.png deleted file mode 100644 index 1eb880947ddf3e745c29e8d9dc90f09c7e6e323c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-$R?&;zfqH(@;q9b3Efq-lM(nr^( z=EYR73-9e)UYMWsXy%?aZsD68Yyv^2$~6QgEcljw%kx>O(f-gQ?@fOOx3A-0+Qw?O zRx~W)kn~Qe2d6f9nMG#g9Q04Mk==M~N!Dglvxk!fgVh#w@ZV$IY1+Xc`d{d2UcaP~ zfWp)_Ivqj}l2SPy^9ZWy6rG9Yx4v67_uA&&9|XA~5-#3)W3%em1peD8RWH^#O%XoM zxMPud%}GTj#~*+7JMxTd!`{^Q+>(D3*|@KV`*G2;{QnANOxu1$r2xIe;OXk;vd$@? F2>@zac~<}c diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_word.png deleted file mode 100644 index ae8ecbf47672a874c0958d0d113a56162c2bd364..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 651 zcmV;60(AX}P)hkjP zNW|QGv-YFNLN^qH@tJycPNG5ti6B7;r4mEr#lr@*T8*M85D`{ZR^BWwF23T<%MYIh zdC)S*p=|xk^!~H=+HSZ183~y8v4|mYmZxt&)5{{~>J`>E223Q5>T$=~mtA71q-jdG z+eJhOAyBW^0k9Gk1+rX8)zFx((CG^&tDY>6XaS~Fy!WJON|Gdujg5^~Vzt@o%BcYLiNiTQSD`zL^ociBz_>bDlpw3kriQ@Z`bVsGz-_6N>$&gTDiKDTKR^ z-hB*tHa^>!oD~5TK^0UK5rZ}RBm50Bv}S-yA%s=Ha5RYb{)!z2N&$&64gfhybBu8p lh~_|?8^bu;BRYt{<}Yrwd83Y=s?Goa002ovPDHLkV1l%3CP4rI diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_world.png deleted file mode 100644 index 6ed2490ed1432d5d667a76235360824a1088e928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734 zcmV<40wMj0P)JT{hN;C#tgf#9krG=I>5!<*aE1_(spcgF}<`n4i zJi-}^6UUeU4jUFwdCiVPDm%`Zx^UBa8J(mnR6wEgz^}o8;)M*Y(@l_!Kfv)}4+NuM zaPXE50z)r)9=D=SR|RIqfQ^j}Hu!fzMeQBo+@PZk1G8hOw|vBTvkx`HM)Xe9q3xao z@`p0`NO!2904FHSLA6E@Y-O6zH$DQzvq@aHsz}}<(!v(Z_+EodX%R&NZW75g+nENo zV0020rxE^;7d!067AN>6*+&YLp$9uH6F-=In`XC{Cn%+o|5)b&boEPr02w@|P*oGm QmjD0&07*qoM6N<$g78X0Q~&?~ diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_wrench.png deleted file mode 100644 index fecadd08afed92536be91ab12d8e37b6bf410d5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)wK%m(L+9IV|s|#(WRl-O^4GvaQsnHq|OstfO zIJ3}3<01}YGARE4m!7=)QisvlHUo!Qymx-@-t*p_129Ko-#pVI)6#!*kLj-AGXWNR zyA_{wKii_amK7^YT-v z6#plaNm#8`-kz@OvjIt^4%IN{@J3bR zRI}ME1Mv85p|%;RK>ViR>APPLB4;;BpCtqE@P+*7!G>I4UjNx~e>r3HA^tWCQ@S)l z{BslcSwL-CxQ&_ZZSv_g0Tu{yi*X){Mt|W7)lbE`SQxFP00000NkvXXu0mjf;)M*S diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/icons/page_white_zip.png deleted file mode 100644 index fd4bbccdf1643f4ff5022fbc59b82546e259317e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e$|7P)_QM!1S$Bhw4w+iRuFWf;tfR6D%SMJrb+tx zC9R6{2>Ou6#juIy6u(I?|;&Owi$sRB4^20apB5xE2 z#B9XekY66S6lzfCL!eEQRgo0LokTA55@Y#%_wN!TXPw^Q4IIXsG~v#u_4t;x_HM16EQ@QRY+rut&97&UefsPmLrQ5P zBC2kcbux9L%2bJz$P$XV$*zSxb2e@6_3O#;&!FD<&hLjGn%~%en;7)djE^d6!t$lW7GyIOKlQ46hr`Z zjLNuRDP_53dNoN?wd&HMgL^m1DXFU<5dQsrceN>fSz00000)O9XRTN^$%%`*Fg>ryDtc(lF@?b>dE!20r+y z#Q*>(wbV5H`-E4Do={CJp7=ERhw15hgZi)?jRG88 zzVz(5;g?Td1izJyO33bhjg2Qc7FVY@f9!o)Gu?DII~vm-Dc?}3M!fsgjP?F(7`rgg z+xOk8XD)e?Zl=5+un`5!7kr?F=eq)K-5uqr%yU$1hLv){Vlm=)*5~`lwMciiXFu*g z)*Jkz6AF>#zb(Vx`Iv{bdGZHtlW)v(y5k^|xgSUc9%0}S20nrYrO}78ofk?bV!5)4 z=Ngz@+$9N1>>mA%IWx`Fqa240bWkiW;2TZgd8CZS0U}@mknC;!2;wi$eI@`h0y2JS`Eae0CW}q(2(%!m8 zWq$`PDU>LT1_y*bBv#P5<@q0@ttz$hIH}YMDvAigCc=y*)jY-VOpTd;A8@3t7Xh4r z0KTWOk;N2Ox4!&&^4B*no$WtTX!BXB)rg!y8dvGgKBQKLJNXRRp0}Bsjd1|LNQX~c zbC~fjrk2iL@4dYF*vt;}dFn(%h)n_-vzEIHMOKRkdF%3Lq|zBgKm_h>TEq!))nWjq zzn;B!?!(dQcHu$#=JF`cS&W~C`WHFW^B!~MI#k)>1Vk&eQy8P1O`J6V04{D@|7d6^ zyBABnh-d^H0FX&L07M||E0n_dp4v&Q%PSE9p#R#Hq)`5I_(B5CE#q dxjPz0{s-<+c#AC!i7@~G002ovPDHLkV1iPlpuqqD diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css deleted file mode 100644 index 32b6507..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/public/style.css +++ /dev/null @@ -1,141 +0,0 @@ -body { - margin: 0; - padding: 80px 100px; - font: 13px "Helvetica Neue", "Lucida Grande", "Arial"; - background: #ECE9E9 -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#ECE9E9)); - background: #ECE9E9 -moz-linear-gradient(top, #fff, #ECE9E9); - background-repeat: no-repeat; - color: #555; - -webkit-font-smoothing: antialiased; -} -h1, h2, h3 { - margin: 0; - font-size: 22px; - color: #343434; -} -h1 em, h2 em { - padding: 0 5px; - font-weight: normal; -} -h1 { - font-size: 60px; -} -h2 { - margin-top: 10px; -} -h3 { - margin: 5px 0 10px 0; - padding-bottom: 5px; - border-bottom: 1px solid #eee; - font-size: 18px; -} -ul { - margin: 0; - padding: 0; -} -ul li { - margin: 5px 0; - padding: 3px 8px; - list-style: none; -} -ul li:hover { - cursor: pointer; - color: #2e2e2e; -} -ul li .path { - padding-left: 5px; - font-weight: bold; -} -ul li .line { - padding-right: 5px; - font-style: italic; -} -ul li:first-child .path { - padding-left: 0; -} -p { - line-height: 1.5; -} -a { - color: #555; - text-decoration: none; -} -a:hover { - color: #303030; -} -#stacktrace { - margin-top: 15px; -} -.directory h1 { - margin-bottom: 15px; - font-size: 18px; -} -ul#files { - width: 100%; - height: 500px; -} -ul#files li { - padding: 0; -} -ul#files li img { - position: absolute; - top: 5px; - left: 5px; -} -ul#files li a { - position: relative; - display: block; - margin: 1px; - width: 30%; - height: 25px; - line-height: 25px; - text-indent: 8px; - float: left; - border: 1px solid transparent; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - overflow: hidden; - text-overflow: ellipsis; -} -ul#files li a.icon { - text-indent: 25px; -} -ul#files li a:focus, -ul#files li a:hover { - outline: none; - background: rgba(255,255,255,0.65); - border: 1px solid #ececec; -} -ul#files li a.highlight { - -webkit-transition: background .4s ease-in-out; - background: #ffff4f; - border-color: #E9DC51; -} -#search { - display: block; - position: fixed; - top: 20px; - right: 20px; - width: 90px; - -webkit-transition: width ease 0.2s, opacity ease 0.4s; - -moz-transition: width ease 0.2s, opacity ease 0.4s; - -webkit-border-radius: 32px; - -moz-border-radius: 32px; - -webkit-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); - -moz-box-shadow: inset 0px 0px 3px rgba(0, 0, 0, 0.25), inset 0px 1px 3px rgba(0, 0, 0, 0.7), 0px 1px 0px rgba(255, 255, 255, 0.03); - -webkit-font-smoothing: antialiased; - text-align: left; - font: 13px "Helvetica Neue", Arial, sans-serif; - padding: 4px 10px; - border: none; - background: transparent; - margin-bottom: 0; - outline: none; - opacity: 0.7; - color: #888; -} -#search:focus { - width: 120px; - opacity: 1.0; -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js deleted file mode 100644 index 35738b8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/lib/utils.js +++ /dev/null @@ -1,404 +0,0 @@ - -/*! - * Connect - utils - * Copyright(c) 2010 Sencha Inc. - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var http = require('http') - , crypto = require('crypto') - , parse = require('url').parse - , signature = require('cookie-signature') - , nodeVersion = process.versions.node.split('.'); - -// pause is broken in node < 0.10 -exports.brokenPause = parseInt(nodeVersion[0], 10) === 0 - && parseInt(nodeVersion[1], 10) < 10; - -/** - * Return `true` if the request has a body, otherwise return `false`. - * - * @param {IncomingMessage} req - * @return {Boolean} - * @api private - */ - -exports.hasBody = function(req) { - return 'transfer-encoding' in req.headers || 'content-length' in req.headers; -}; - -/** - * Extract the mime type from the given request's - * _Content-Type_ header. - * - * @param {IncomingMessage} req - * @return {String} - * @api private - */ - -exports.mime = function(req) { - var str = req.headers['content-type'] || ''; - return str.split(';')[0]; -}; - -/** - * Generate an `Error` from the given status `code` - * and optional `msg`. - * - * @param {Number} code - * @param {String} msg - * @return {Error} - * @api private - */ - -exports.error = function(code, msg){ - var err = new Error(msg || http.STATUS_CODES[code]); - err.status = code; - return err; -}; - -/** - * Return md5 hash of the given string and optional encoding, - * defaulting to hex. - * - * utils.md5('wahoo'); - * // => "e493298061761236c96b02ea6aa8a2ad" - * - * @param {String} str - * @param {String} encoding - * @return {String} - * @api private - */ - -exports.md5 = function(str, encoding){ - return crypto - .createHash('md5') - .update(str) - .digest(encoding || 'hex'); -}; - -/** - * Merge object b with object a. - * - * var a = { foo: 'bar' } - * , b = { bar: 'baz' }; - * - * utils.merge(a, b); - * // => { foo: 'bar', bar: 'baz' } - * - * @param {Object} a - * @param {Object} b - * @return {Object} - * @api private - */ - -exports.merge = function(a, b){ - if (a && b) { - for (var key in b) { - a[key] = b[key]; - } - } - return a; -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - - -/** - * Return a unique identifier with the given `len`. - * - * utils.uid(10); - * // => "FDaS435D2z" - * - * @param {Number} len - * @return {String} - * @api private - */ - -exports.uid = function(len) { - return crypto.randomBytes(Math.ceil(len * 3 / 4)) - .toString('base64') - .slice(0, len) - .replace(/\//g, '-') - .replace(/\+/g, '_'); -}; - -/** - * Sign the given `val` with `secret`. - * - * @param {String} val - * @param {String} secret - * @return {String} - * @api private - */ - -exports.sign = function(val, secret){ - console.warn('do not use utils.sign(), use https://github.com/visionmedia/node-cookie-signature') - return val + '.' + crypto - .createHmac('sha256', secret) - .update(val) - .digest('base64') - .replace(/=+$/, ''); -}; - -/** - * Unsign and decode the given `val` with `secret`, - * returning `false` if the signature is invalid. - * - * @param {String} val - * @param {String} secret - * @return {String|Boolean} - * @api private - */ - -exports.unsign = function(val, secret){ - console.warn('do not use utils.unsign(), use https://github.com/visionmedia/node-cookie-signature') - var str = val.slice(0, val.lastIndexOf('.')); - return exports.sign(str, secret) == val - ? str - : false; -}; - -/** - * Parse signed cookies, returning an object - * containing the decoded key/value pairs, - * while removing the signed key from `obj`. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -exports.parseSignedCookies = function(obj, secret){ - var ret = {}; - Object.keys(obj).forEach(function(key){ - var val = obj[key]; - if (0 == val.indexOf('s:')) { - val = signature.unsign(val.slice(2), secret); - if (val) { - ret[key] = val; - delete obj[key]; - } - } - }); - return ret; -}; - -/** - * Parse a signed cookie string, return the decoded value - * - * @param {String} str signed cookie string - * @param {String} secret - * @return {String} decoded value - * @api private - */ - -exports.parseSignedCookie = function(str, secret){ - return 0 == str.indexOf('s:') - ? signature.unsign(str.slice(2), secret) - : str; -}; - -/** - * Parse JSON cookies. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -exports.parseJSONCookies = function(obj){ - Object.keys(obj).forEach(function(key){ - var val = obj[key]; - var res = exports.parseJSONCookie(val); - if (res) obj[key] = res; - }); - return obj; -}; - -/** - * Parse JSON cookie string - * - * @param {String} str - * @return {Object} Parsed object or null if not json cookie - * @api private - */ - -exports.parseJSONCookie = function(str) { - if (0 == str.indexOf('j:')) { - try { - return JSON.parse(str.slice(2)); - } catch (err) { - // no op - } - } -}; - -/** - * Pause `data` and `end` events on the given `obj`. - * Middleware performing async tasks _should_ utilize - * this utility (or similar), to re-emit data once - * the async operation has completed, otherwise these - * events may be lost. Pause is only required for - * node versions less than 10, and is replaced with - * noop's otherwise. - * - * var pause = utils.pause(req); - * fs.readFile(path, function(){ - * next(); - * pause.resume(); - * }); - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -exports.pause = exports.brokenPause - ? require('pause') - : function () { - return { - end: noop, - resume: noop - } - } - -/** - * Strip `Content-*` headers from `res`. - * - * @param {ServerResponse} res - * @api private - */ - -exports.removeContentHeaders = function(res){ - Object.keys(res._headers).forEach(function(field){ - if (0 == field.indexOf('content')) { - res.removeHeader(field); - } - }); -}; - -/** - * Check if `req` is a conditional GET request. - * - * @param {IncomingMessage} req - * @return {Boolean} - * @api private - */ - -exports.conditionalGET = function(req) { - return req.headers['if-modified-since'] - || req.headers['if-none-match']; -}; - -/** - * Respond with 401 "Unauthorized". - * - * @param {ServerResponse} res - * @param {String} realm - * @api private - */ - -exports.unauthorized = function(res, realm) { - res.statusCode = 401; - res.setHeader('WWW-Authenticate', 'Basic realm="' + realm + '"'); - res.end('Unauthorized'); -}; - -/** - * Respond with 304 "Not Modified". - * - * @param {ServerResponse} res - * @param {Object} headers - * @api private - */ - -exports.notModified = function(res) { - exports.removeContentHeaders(res); - res.statusCode = 304; - res.end(); -}; - -/** - * Return an ETag in the form of `"-"` - * from the given `stat`. - * - * @param {Object} stat - * @return {String} - * @api private - */ - -exports.etag = function(stat) { - return '"' + stat.size + '-' + Number(stat.mtime) + '"'; -}; - -/** - * Parse the given Cache-Control `str`. - * - * @param {String} str - * @return {Object} - * @api private - */ - -exports.parseCacheControl = function(str){ - var directives = str.split(',') - , obj = {}; - - for(var i = 0, len = directives.length; i < len; i++) { - var parts = directives[i].split('=') - , key = parts.shift().trim() - , val = parseInt(parts.shift(), 10); - - obj[key] = isNaN(val) ? true : val; - } - - return obj; -}; - -/** - * Parse the `req` url with memoization. - * - * @param {ServerRequest} req - * @return {Object} - * @api private - */ - -exports.parseUrl = function(req){ - var parsed = req._parsedUrl; - if (parsed && parsed.href == req.url) { - return parsed; - } else { - return req._parsedUrl = parse(req.url); - } -}; - -/** - * Parse byte `size` string. - * - * @param {String} size - * @return {Number} - * @api private - */ - -exports.parseBytes = require('bytes'); - -function noop() {} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md deleted file mode 100644 index 1332808..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/History.md +++ /dev/null @@ -1,10 +0,0 @@ - -0.2.0 / 2012-10-28 -================== - - * bytes(200).should.eql('200b') - -0.1.0 / 2012-07-04 -================== - - * add bytes to string conversion [yields] diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile deleted file mode 100644 index 8e8640f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md deleted file mode 100644 index 9325d5b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/Readme.md +++ /dev/null @@ -1,51 +0,0 @@ -# node-bytes - - Byte string parser / formatter. - -## Example: - -```js -bytes('1kb') -// => 1024 - -bytes('2mb') -// => 2097152 - -bytes('1gb') -// => 1073741824 - -bytes(1073741824) -// => 1gb -``` - -## Installation - -``` -$ npm install bytes -$ component install visionmedia/bytes.js -``` - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json deleted file mode 100644 index 76a6057..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/component.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "bytes", - "description": "byte size string parser / serializer", - "keywords": ["bytes", "utility"], - "version": "0.1.0", - "scripts": ["index.js"] -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js deleted file mode 100644 index 70b2e01..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/index.js +++ /dev/null @@ -1,39 +0,0 @@ - -/** - * Parse byte `size` string. - * - * @param {String} size - * @return {Number} - * @api public - */ - -module.exports = function(size) { - if ('number' == typeof size) return convert(size); - var parts = size.match(/^(\d+(?:\.\d+)?) *(kb|mb|gb)$/) - , n = parseFloat(parts[1]) - , type = parts[2]; - - var map = { - kb: 1 << 10 - , mb: 1 << 20 - , gb: 1 << 30 - }; - - return map[type] * n; -}; - -/** - * convert bytes into string. - * - * @param {Number} b - bytes to convert - * @return {String} - * @api public - */ - -function convert (b) { - var gb = 1 << 30, mb = 1 << 20, kb = 1 << 10; - if (b >= gb) return (Math.round(b / gb * 100) / 100) + 'gb'; - if (b >= mb) return (Math.round(b / mb * 100) / 100) + 'mb'; - if (b >= kb) return (Math.round(b / kb * 100) / 100) + 'kb'; - return b + 'b'; -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json deleted file mode 100644 index 0db9bc9..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/bytes/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "bytes", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "byte size string parser / serializer", - "version": "0.2.0", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "readme": "# node-bytes\n\n Byte string parser / formatter.\n\n## Example:\n\n```js\nbytes('1kb')\n// => 1024\n\nbytes('2mb')\n// => 2097152\n\nbytes('1gb')\n// => 1073741824\n\nbytes(1073741824)\n// => 1gb\n```\n\n## Installation\n\n```\n$ npm install bytes\n$ component install visionmedia/bytes.js\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "_id": "bytes@0.2.0", - "_from": "bytes@0.2.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml deleted file mode 100644 index 320698a..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md deleted file mode 100644 index 5187ed1..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) # - -cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. - -See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. - -## how? - -``` -npm install cookie -``` - -```javascript -var cookie = require('cookie'); - -var hdr = cookie.serialize('foo', 'bar'); -// hdr = 'foo=bar'; - -var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); -// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; -``` - -## more - -The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. - -### path -> cookie path - -### expires -> absolute expiration date for the cookie (Date object) - -### maxAge -> relative max age of the cookie from when the client receives it (seconds) - -### domain -> domain for the cookie - -### secure -> true or false - -### httpOnly -> true or false - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js deleted file mode 100644 index db04ad3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/index.js +++ /dev/null @@ -1,61 +0,0 @@ - -/// Serialize the a name value pair into a cookie string suitable for -/// http headers. An optional options object specified cookie parameters -/// -/// serialize('foo', 'bar', { httpOnly: true }) -/// => "foo=bar; httpOnly" -/// -/// @param {String} name -/// @param {String} val -/// @param {Object} options -/// @return {String} -var serialize = function(name, val, opt){ - var pairs = [name + '=' + encode(val)]; - opt = opt || {}; - - if (opt.maxAge) pairs.push('Max-Age=' + opt.maxAge); - if (opt.domain) pairs.push('Domain=' + opt.domain); - if (opt.path) pairs.push('Path=' + opt.path); - if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); - if (opt.httpOnly) pairs.push('HttpOnly'); - if (opt.secure) pairs.push('Secure'); - - return pairs.join('; '); -}; - -/// Parse the given cookie header string into an object -/// The object has the various cookies as keys(names) => values -/// @param {String} str -/// @return {Object} -var parse = function(str) { - var obj = {} - var pairs = str.split(/[;,] */); - - pairs.forEach(function(pair) { - var eq_idx = pair.indexOf('=') - var key = pair.substr(0, eq_idx).trim() - var val = pair.substr(++eq_idx, pair.length).trim(); - - // quoted values - if ('"' == val[0]) { - val = val.slice(1, -1); - } - - // only assign once - if (undefined == obj[key]) { - try { - obj[key] = decode(val); - } catch (e) { - obj[key] = val; - } - } - }); - - return obj; -}; - -var encode = encodeURIComponent; -var decode = decodeURIComponent; - -module.exports.serialize = serialize; -module.exports.parse = parse; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json deleted file mode 100644 index 208cdad..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Roman Shtylman", - "email": "shtylman@gmail.com" - }, - "name": "cookie", - "description": "cookie parsing and serialization", - "version": "0.0.5", - "repository": { - "type": "git", - "url": "git://github.com/shtylman/node-cookie.git" - }, - "keywords": [ - "cookie", - "cookies" - ], - "main": "index.js", - "scripts": { - "test": "mocha" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "1.x.x" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-cookie/issues" - }, - "_id": "cookie@0.0.5", - "_from": "cookie@0.0.5" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts deleted file mode 100644 index e2bfcc5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---ui qunit diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js deleted file mode 100644 index d8c03ab..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/parse.js +++ /dev/null @@ -1,28 +0,0 @@ - -var assert = require('assert'); - -var cookie = require('..'); - -suite('parse'); - -test('basic', function() { - assert.deepEqual({ foo: 'bar' }, cookie.parse('foo=bar')); - assert.deepEqual({ foo: '123' }, cookie.parse('foo=123')); -}); - -test('ignore spaces', function() { - assert.deepEqual({ FOO: 'bar', baz: 'raz' }, - cookie.parse('FOO = bar; baz = raz')); -}); - -test('escaping', function() { - assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' }, - cookie.parse('foo="bar=123456789&name=Magic+Mouse"')); - - assert.deepEqual({ email: ' ",;/' }, - cookie.parse('email=%20%22%2c%3b%2f')); -}); - -test('ignore escaping error and return original value', function() { - assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar')); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js deleted file mode 100644 index d38768d..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/cookie/test/serialize.js +++ /dev/null @@ -1,59 +0,0 @@ -// builtin -var assert = require('assert'); - -var cookie = require('..'); - -suite('serialize'); - -test('basic', function() { - assert.equal('foo=bar', cookie.serialize('foo', 'bar')); - assert.equal('foo=bar%20baz', cookie.serialize('foo', 'bar baz')); -}); - -test('path', function() { - assert.equal('foo=bar; Path=/', cookie.serialize('foo', 'bar', { - path: '/' - })); -}); - -test('secure', function() { - assert.equal('foo=bar; Secure', cookie.serialize('foo', 'bar', { - secure: true - })); - - assert.equal('foo=bar', cookie.serialize('foo', 'bar', { - secure: false - })); -}); - -test('domain', function() { - assert.equal('foo=bar; Domain=example.com', cookie.serialize('foo', 'bar', { - domain: 'example.com' - })); -}); - -test('httpOnly', function() { - assert.equal('foo=bar; HttpOnly', cookie.serialize('foo', 'bar', { - httpOnly: true - })); -}); - -test('maxAge', function() { - assert.equal('foo=bar; Max-Age=1000', cookie.serialize('foo', 'bar', { - maxAge: 1000 - })); -}); - -test('escaping', function() { - assert.deepEqual('cat=%2B%20', cookie.serialize('cat', '+ ')); -}); - -test('parse->serialize', function() { - - assert.deepEqual({ cat: 'foo=123&name=baz five' }, cookie.parse( - cookie.serialize('cat', 'foo=123&name=baz five'))); - - assert.deepEqual({ cat: ' ";/' }, cookie.parse( - cookie.serialize('cat', ' ";/'))); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore deleted file mode 100644 index 4fbabb3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -/test/tmp/ -*.upload -*.un~ -*.http diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml deleted file mode 100644 index cb931cb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.8 - - 0.9 - - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE deleted file mode 100644 index 38d3c9c..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright (C) 2011 Felix Geisendörfer - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md deleted file mode 100644 index 08e9eca..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/Readme.md +++ /dev/null @@ -1,419 +0,0 @@ -# Formidable - -[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable) - -## Purpose - -A node.js module for parsing form data, especially file uploads. - -## Current status - -This module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading -and encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from -a large variety of clients and is considered production-ready. - -## Features - -* Fast (~500mb/sec), non-buffering multipart parser -* Automatically writing file uploads to disk -* Low memory footprint -* Graceful error handling -* Very high test coverage - -## Installation - -Via [npm](http://github.com/isaacs/npm): -``` -npm install formidable@latest -``` -Manually: -``` -git clone git://github.com/felixge/node-formidable.git formidable -vim my.js -# var formidable = require('./formidable'); -``` - -Note: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library. - -## Example - -Parse an incoming file upload. -```javascript -var formidable = require('formidable'), - http = require('http'), - util = require('util'); - -http.createServer(function(req, res) { - if (req.url == '/upload' && req.method.toLowerCase() == 'post') { - // parse a file upload - var form = new formidable.IncomingForm(); - - form.parse(req, function(err, fields, files) { - res.writeHead(200, {'content-type': 'text/plain'}); - res.write('received upload:\n\n'); - res.end(util.inspect({fields: fields, files: files})); - }); - - return; - } - - // show a file upload form - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
        '+ - '
        '+ - '
        '+ - ''+ - '
        ' - ); -}).listen(8080); -``` -## API - -### Formidable.IncomingForm -```javascript -var form = new formidable.IncomingForm() -``` -Creates a new incoming form. - -```javascript -form.encoding = 'utf-8'; -``` -Sets encoding for incoming form fields. - -```javascript -form.uploadDir = process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd(); -``` -The directory for placing file uploads in. You can move them later on using -`fs.rename()`. The default directory is picked at module load time depending on -the first existing directory from those listed above. - -```javascript -form.keepExtensions = false; -``` -If you want the files written to `form.uploadDir` to include the extensions of the original files, set this property to `true`. - -```javascript -form.type -``` -Either 'multipart' or 'urlencoded' depending on the incoming request. - -```javascript -form.maxFieldsSize = 2 * 1024 * 1024; -``` -Limits the amount of memory a field (not file) can allocate in bytes. -If this value is exceeded, an `'error'` event is emitted. The default -size is 2MB. - -```javascript -form.maxFields = 0; -``` -Limits the number of fields that the querystring parser will decode. Defaults -to 0 (unlimited). - -```javascript -form.hash = false; -``` -If you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`. - -```javascript -form.bytesReceived -``` -The amount of bytes received for this form so far. - -```javascript -form.bytesExpected -``` -The expected number of bytes in this form. - -```javascript -form.parse(request, [cb]); -``` -Parses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback: - - -```javascript -form.parse(req, function(err, fields, files) { - // ... -}); - -form.onPart(part); -``` -You may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing. - -```javascript -form.onPart = function(part) { - part.addListener('data', function() { - // ... - }); -} -``` -If you want to use formidable to only handle certain parts for you, you can do so: -```javascript -form.onPart = function(part) { - if (!part.filename) { - // let formidable handle all non-file parts - form.handlePart(part); - } -} -``` -Check the code in this method for further inspiration. - - -### Formidable.File -```javascript -file.size = 0 -``` -The size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet. -```javascript -file.path = null -``` -The path this file is being written to. You can modify this in the `'fileBegin'` event in -case you are unhappy with the way formidable generates a temporary path for your files. -```javascript -file.name = null -``` -The name this file had according to the uploading client. -```javascript -file.type = null -``` -The mime type of this file, according to the uploading client. -```javascript -file.lastModifiedDate = null -``` -A date object (or `null`) containing the time this file was last written to. Mostly -here for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/). -```javascript -file.hash = null -``` -If hash calculation was set, you can read the hex digest out of this var. - -#### Formidable.File#toJSON() - - This method returns a JSON-representation of the file, allowing you to - `JSON.stringify()` the file which is useful for logging and responding - to requests. - -### Events - - -#### 'progress' -```javascript -form.on('progress', function(bytesReceived, bytesExpected) { -}); -``` -Emitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar. - - - -#### 'field' -```javascript -form.on('field', function(name, value) { -}); -``` - -#### 'fileBegin' - -Emitted whenever a field / value pair has been received. -```javascript -form.on('fileBegin', function(name, file) { -}); -``` - -#### 'file' - -Emitted whenever a new file is detected in the upload stream. Use this even if -you want to stream the file to somewhere else while buffering the upload on -the file system. - -Emitted whenever a field / file pair has been received. `file` is an instance of `File`. -```javascript -form.on('file', function(name, file) { -}); -``` - -#### 'error' - -Emitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events. -```javascript -form.on('error', function(err) { -}); -``` - -#### 'aborted' - - -Emitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core). -```javascript -form.on('aborted', function() { -}); -``` - -##### 'end' -```javascript -form.on('end', function() { -}); -``` -Emitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response. - - - -## Changelog - -### v1.0.14 - -* Add failing hash tests. (Ben Trask) -* Enable hash calculation again (Eugene Girshov) -* Test for immediate data events (Tim Smart) -* Re-arrange IncomingForm#parse (Tim Smart) - -### v1.0.13 - -* Only update hash if update method exists (Sven Lito) -* According to travis v0.10 needs to go quoted (Sven Lito) -* Bumping build node versions (Sven Lito) -* Additional fix for empty requests (Eugene Girshov) -* Change the default to 1000, to match the new Node behaviour. (OrangeDog) -* Add ability to control maxKeys in the querystring parser. (OrangeDog) -* Adjust test case to work with node 0.9.x (Eugene Girshov) -* Update package.json (Sven Lito) -* Path adjustment according to eb4468b (Markus Ast) - -### v1.0.12 - -* Emit error on aborted connections (Eugene Girshov) -* Add support for empty requests (Eugene Girshov) -* Fix name/filename handling in Content-Disposition (jesperp) -* Tolerate malformed closing boundary in multipart (Eugene Girshov) -* Ignore preamble in multipart messages (Eugene Girshov) -* Add support for application/json (Mike Frey, Carlos Rodriguez) -* Add support for Base64 encoding (Elmer Bulthuis) -* Add File#toJSON (TJ Holowaychuk) -* Remove support for Node.js 0.4 & 0.6 (Andrew Kelley) -* Documentation improvements (Sven Lito, Andre Azevedo) -* Add support for application/octet-stream (Ion Lupascu, Chris Scribner) -* Use os.tmpDir() to get tmp directory (Andrew Kelley) -* Improve package.json (Andrew Kelley, Sven Lito) -* Fix benchmark script (Andrew Kelley) -* Fix scope issue in incoming_forms (Sven Lito) -* Fix file handle leak on error (OrangeDog) - -### v1.0.11 - -* Calculate checksums for incoming files (sreuter) -* Add definition parameters to "IncomingForm" as an argument (Math-) - -### v1.0.10 - -* Make parts to be proper Streams (Matt Robenolt) - -### v1.0.9 - -* Emit progress when content length header parsed (Tim Koschützki) -* Fix Readme syntax due to GitHub changes (goob) -* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara) - -### v1.0.8 - -* Strip potentially unsafe characters when using `keepExtensions: true`. -* Switch to utest / urun for testing -* Add travis build - -### v1.0.7 - -* Remove file from package that was causing problems when installing on windows. (#102) -* Fix typos in Readme (Jason Davies). - -### v1.0.6 - -* Do not default to the default to the field name for file uploads where - filename="". - -### v1.0.5 - -* Support filename="" in multipart parts -* Explain unexpected end() errors in parser better - -**Note:** Starting with this version, formidable emits 'file' events for empty -file input fields. Previously those were incorrectly emitted as regular file -input fields with value = "". - -### v1.0.4 - -* Detect a good default tmp directory regardless of platform. (#88) - -### v1.0.3 - -* Fix problems with utf8 characters (#84) / semicolons in filenames (#58) -* Small performance improvements -* New test suite and fixture system - -### v1.0.2 - -* Exclude node\_modules folder from git -* Implement new `'aborted'` event -* Fix files in example folder to work with recent node versions -* Make gently a devDependency - -[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2) - -### v1.0.1 - -* Fix package.json to refer to proper main directory. (#68, Dean Landolt) - -[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1) - -### v1.0.0 - -* Add support for multipart boundaries that are quoted strings. (Jeff Craig) - -This marks the beginning of development on version 2.0 which will include -several architectural improvements. - -[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0) - -### v0.9.11 - -* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki) -* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class - -**Important:** The old property names of the File class will be removed in a -future release. - -[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11) - -### Older releases - -These releases were done before starting to maintain the above Changelog: - -* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10) -* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9) -* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8) -* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7) -* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6) -* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5) -* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4) -* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3) -* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2) -* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0) -* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0) - -## License - -Formidable is licensed under the MIT license. - -## Ports - -* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable - -## Credits - -* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js deleted file mode 100644 index 49abc43..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/benchmark/bench-multipart-parser.js +++ /dev/null @@ -1,71 +0,0 @@ -var assert = require('assert'); -require('../test/common'); -var multipartParser = require('../lib/multipart_parser'), - MultipartParser = multipartParser.MultipartParser, - parser = new MultipartParser(), - Buffer = require('buffer').Buffer, - boundary = '-----------------------------168072824752491622650073', - mb = 100, - buffer = createMultipartBuffer(boundary, mb * 1024 * 1024), - callbacks = - { partBegin: -1, - partEnd: -1, - headerField: -1, - headerValue: -1, - partData: -1, - end: -1, - }; - - -parser.initWithBoundary(boundary); -parser.onHeaderField = function() { - callbacks.headerField++; -}; - -parser.onHeaderValue = function() { - callbacks.headerValue++; -}; - -parser.onPartBegin = function() { - callbacks.partBegin++; -}; - -parser.onPartData = function() { - callbacks.partData++; -}; - -parser.onPartEnd = function() { - callbacks.partEnd++; -}; - -parser.onEnd = function() { - callbacks.end++; -}; - -var start = +new Date(), - nparsed = parser.write(buffer), - duration = +new Date - start, - mbPerSec = (mb / (duration / 1000)).toFixed(2); - -console.log(mbPerSec+' mb/sec'); - -assert.equal(nparsed, buffer.length); - -function createMultipartBuffer(boundary, size) { - var head = - '--'+boundary+'\r\n' - + 'content-disposition: form-data; name="field1"\r\n' - + '\r\n' - , tail = '\r\n--'+boundary+'--\r\n' - , buffer = new Buffer(size); - - buffer.write(head, 'ascii', 0); - buffer.write(tail, 'ascii', buffer.length - tail.length); - return buffer; -} - -process.on('exit', function() { - for (var k in callbacks) { - assert.equal(0, callbacks[k], k+' count off by '+callbacks[k]); - } -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js deleted file mode 100644 index eb8a724..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/json.js +++ /dev/null @@ -1,67 +0,0 @@ -var common = require('../test/common'), - http = require('http'), - util = require('util'), - formidable = common.formidable, - Buffer = require('buffer').Buffer, - port = common.port, - server; - -server = http.createServer(function(req, res) { - if (req.method !== 'POST') { - res.writeHead(200, {'content-type': 'text/plain'}) - res.end('Please POST a JSON payload to http://localhost:'+port+'/') - return; - } - - var form = new formidable.IncomingForm(), - fields = {}; - - form - .on('error', function(err) { - res.writeHead(500, {'content-type': 'text/plain'}); - res.end('error:\n\n'+util.inspect(err)); - console.error(err); - }) - .on('field', function(field, value) { - console.log(field, value); - fields[field] = value; - }) - .on('end', function() { - console.log('-> post done'); - res.writeHead(200, {'content-type': 'text/plain'}); - res.end('received fields:\n\n '+util.inspect(fields)); - }); - form.parse(req); -}); -server.listen(port); - -console.log('listening on http://localhost:'+port+'/'); - - -var request = http.request({ - host: 'localhost', - path: '/', - port: port, - method: 'POST', - headers: { 'content-type':'application/json', 'content-length':48 } -}, function(response) { - var data = ''; - console.log('\nServer responded with:'); - console.log('Status:', response.statusCode); - response.pipe(process.stdout); - response.on('end', function() { - console.log('\n') - process.exit(); - }); - // response.on('data', function(chunk) { - // data += chunk.toString('utf8'); - // }); - // response.on('end', function() { - // console.log('Response Data:') - // console.log(data); - // process.exit(); - // }); -}) - -request.write('{"numbers":[1,2,3,4,5],"nested":{"key":"value"}}'); -request.end(); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js deleted file mode 100644 index f6c15a6..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/post.js +++ /dev/null @@ -1,43 +0,0 @@ -require('../test/common'); -var http = require('http'), - util = require('util'), - formidable = require('formidable'), - server; - -server = http.createServer(function(req, res) { - if (req.url == '/') { - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
        '+ - '
        '+ - '
        '+ - ''+ - '
        ' - ); - } else if (req.url == '/post') { - var form = new formidable.IncomingForm(), - fields = []; - - form - .on('error', function(err) { - res.writeHead(200, {'content-type': 'text/plain'}); - res.end('error:\n\n'+util.inspect(err)); - }) - .on('field', function(field, value) { - console.log(field, value); - fields.push([field, value]); - }) - .on('end', function() { - console.log('-> post done'); - res.writeHead(200, {'content-type': 'text/plain'}); - res.end('received fields:\n\n '+util.inspect(fields)); - }); - form.parse(req); - } else { - res.writeHead(404, {'content-type': 'text/plain'}); - res.end('404'); - } -}); -server.listen(TEST_PORT); - -console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js deleted file mode 100644 index 050cdd9..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/example/upload.js +++ /dev/null @@ -1,48 +0,0 @@ -require('../test/common'); -var http = require('http'), - util = require('util'), - formidable = require('formidable'), - server; - -server = http.createServer(function(req, res) { - if (req.url == '/') { - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
        '+ - '
        '+ - '
        '+ - ''+ - '
        ' - ); - } else if (req.url == '/upload') { - var form = new formidable.IncomingForm(), - files = [], - fields = []; - - form.uploadDir = TEST_TMP; - - form - .on('field', function(field, value) { - console.log(field, value); - fields.push([field, value]); - }) - .on('file', function(field, file) { - console.log(field, file); - files.push([field, file]); - }) - .on('end', function() { - console.log('-> upload done'); - res.writeHead(200, {'content-type': 'text/plain'}); - res.write('received fields:\n\n '+util.inspect(fields)); - res.write('\n\n'); - res.end('received files:\n\n '+util.inspect(files)); - }); - form.parse(req); - } else { - res.writeHead(404, {'content-type': 'text/plain'}); - res.end('404'); - } -}); -server.listen(TEST_PORT); - -console.log('listening on http://localhost:'+TEST_PORT+'/'); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js deleted file mode 100644 index 4cc88b3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js deleted file mode 100644 index e34c10e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/file.js +++ /dev/null @@ -1,72 +0,0 @@ -if (global.GENTLY) require = GENTLY.hijack(require); - -var util = require('util'), - WriteStream = require('fs').WriteStream, - EventEmitter = require('events').EventEmitter, - crypto = require('crypto'); - -function File(properties) { - EventEmitter.call(this); - - this.size = 0; - this.path = null; - this.name = null; - this.type = null; - this.hash = null; - this.lastModifiedDate = null; - - this._writeStream = null; - - for (var key in properties) { - this[key] = properties[key]; - } - - if(typeof this.hash === 'string') { - this.hash = crypto.createHash(properties.hash); - } else { - this.hash = null; - } -} -module.exports = File; -util.inherits(File, EventEmitter); - -File.prototype.open = function() { - this._writeStream = new WriteStream(this.path); -}; - -File.prototype.toJSON = function() { - return { - size: this.size, - path: this.path, - name: this.name, - type: this.type, - mtime: this.lastModifiedDate, - length: this.length, - filename: this.filename, - mime: this.mime - }; -}; - -File.prototype.write = function(buffer, cb) { - var self = this; - if (self.hash) { - self.hash.update(buffer); - } - this._writeStream.write(buffer, function() { - self.lastModifiedDate = new Date(); - self.size += buffer.length; - self.emit('progress', self.size); - cb(); - }); -}; - -File.prototype.end = function(cb) { - var self = this; - if (self.hash) { - self.hash = self.hash.digest('hex'); - } - this._writeStream.end(function() { - self.emit('end'); - cb(); - }); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js deleted file mode 100644 index c2eeaf8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/incoming_form.js +++ /dev/null @@ -1,535 +0,0 @@ -if (global.GENTLY) require = GENTLY.hijack(require); - -var fs = require('fs'); -var util = require('util'), - path = require('path'), - File = require('./file'), - MultipartParser = require('./multipart_parser').MultipartParser, - QuerystringParser = require('./querystring_parser').QuerystringParser, - OctetParser = require('./octet_parser').OctetParser, - JSONParser = require('./json_parser').JSONParser, - StringDecoder = require('string_decoder').StringDecoder, - EventEmitter = require('events').EventEmitter, - Stream = require('stream').Stream, - os = require('os'); - -function IncomingForm(opts) { - if (!(this instanceof IncomingForm)) return new IncomingForm(opts); - EventEmitter.call(this); - - opts=opts||{}; - - this.error = null; - this.ended = false; - - this.maxFields = opts.maxFields || 1000; - this.maxFieldsSize = opts.maxFieldsSize || 2 * 1024 * 1024; - this.keepExtensions = opts.keepExtensions || false; - this.uploadDir = opts.uploadDir || os.tmpDir(); - this.encoding = opts.encoding || 'utf-8'; - this.headers = null; - this.type = null; - this.hash = false; - - this.bytesReceived = null; - this.bytesExpected = null; - - this._parser = null; - this._flushing = 0; - this._fieldsSize = 0; - this.openedFiles = []; - - return this; -}; -util.inherits(IncomingForm, EventEmitter); -exports.IncomingForm = IncomingForm; - -IncomingForm.prototype.parse = function(req, cb) { - this.pause = function() { - try { - req.pause(); - } catch (err) { - // the stream was destroyed - if (!this.ended) { - // before it was completed, crash & burn - this._error(err); - } - return false; - } - return true; - }; - - this.resume = function() { - try { - req.resume(); - } catch (err) { - // the stream was destroyed - if (!this.ended) { - // before it was completed, crash & burn - this._error(err); - } - return false; - } - - return true; - }; - - // Setup callback first, so we don't miss anything from data events emitted - // immediately. - if (cb) { - var fields = {}, files = {}; - this - .on('field', function(name, value) { - fields[name] = value; - }) - .on('file', function(name, file) { - files[name] = file; - }) - .on('error', function(err) { - cb(err, fields, files); - }) - .on('end', function() { - cb(null, fields, files); - }); - } - - // Parse headers and setup the parser, ready to start listening for data. - this.writeHeaders(req.headers); - - // Start listening for data. - var self = this; - req - .on('error', function(err) { - self._error(err); - }) - .on('aborted', function() { - self.emit('aborted'); - self._error(new Error('Request aborted')); - }) - .on('data', function(buffer) { - self.write(buffer); - }) - .on('end', function() { - if (self.error) { - return; - } - - var err = self._parser.end(); - if (err) { - self._error(err); - } - }); - - return this; -}; - -IncomingForm.prototype.writeHeaders = function(headers) { - this.headers = headers; - this._parseContentLength(); - this._parseContentType(); -}; - -IncomingForm.prototype.write = function(buffer) { - if (!this._parser) { - this._error(new Error('unintialized parser')); - return; - } - - this.bytesReceived += buffer.length; - this.emit('progress', this.bytesReceived, this.bytesExpected); - - var bytesParsed = this._parser.write(buffer); - if (bytesParsed !== buffer.length) { - this._error(new Error('parser error, '+bytesParsed+' of '+buffer.length+' bytes parsed')); - } - - return bytesParsed; -}; - -IncomingForm.prototype.pause = function() { - // this does nothing, unless overwritten in IncomingForm.parse - return false; -}; - -IncomingForm.prototype.resume = function() { - // this does nothing, unless overwritten in IncomingForm.parse - return false; -}; - -IncomingForm.prototype.onPart = function(part) { - // this method can be overwritten by the user - this.handlePart(part); -}; - -IncomingForm.prototype.handlePart = function(part) { - var self = this; - - if (part.filename === undefined) { - var value = '' - , decoder = new StringDecoder(this.encoding); - - part.on('data', function(buffer) { - self._fieldsSize += buffer.length; - if (self._fieldsSize > self.maxFieldsSize) { - self._error(new Error('maxFieldsSize exceeded, received '+self._fieldsSize+' bytes of field data')); - return; - } - value += decoder.write(buffer); - }); - - part.on('end', function() { - self.emit('field', part.name, value); - }); - return; - } - - this._flushing++; - - var file = new File({ - path: this._uploadPath(part.filename), - name: part.filename, - type: part.mime, - hash: self.hash - }); - - this.emit('fileBegin', part.name, file); - - file.open(); - this.openedFiles.push(file); - - part.on('data', function(buffer) { - self.pause(); - file.write(buffer, function() { - self.resume(); - }); - }); - - part.on('end', function() { - file.end(function() { - self._flushing--; - self.emit('file', part.name, file); - self._maybeEnd(); - }); - }); -}; - -function dummyParser(self) { - return { - end: function () { - self.ended = true; - self._maybeEnd(); - return null; - } - }; -} - -IncomingForm.prototype._parseContentType = function() { - if (this.bytesExpected === 0) { - this._parser = dummyParser(this); - return; - } - - if (!this.headers['content-type']) { - this._error(new Error('bad content-type header, no content-type')); - return; - } - - if (this.headers['content-type'].match(/octet-stream/i)) { - this._initOctetStream(); - return; - } - - if (this.headers['content-type'].match(/urlencoded/i)) { - this._initUrlencoded(); - return; - } - - if (this.headers['content-type'].match(/multipart/i)) { - var m; - if (m = this.headers['content-type'].match(/boundary=(?:"([^"]+)"|([^;]+))/i)) { - this._initMultipart(m[1] || m[2]); - } else { - this._error(new Error('bad content-type header, no multipart boundary')); - } - return; - } - - if (this.headers['content-type'].match(/json/i)) { - this._initJSONencoded(); - return; - } - - this._error(new Error('bad content-type header, unknown content-type: '+this.headers['content-type'])); -}; - -IncomingForm.prototype._error = function(err) { - if (this.error || this.ended) { - return; - } - - this.error = err; - this.pause(); - this.emit('error', err); - - if (Array.isArray(this.openedFiles)) { - this.openedFiles.forEach(function(file) { - file._writeStream.destroy(); - setTimeout(fs.unlink, 0, file.path); - }); - } -}; - -IncomingForm.prototype._parseContentLength = function() { - this.bytesReceived = 0; - if (this.headers['content-length']) { - this.bytesExpected = parseInt(this.headers['content-length'], 10); - } else if (this.headers['transfer-encoding'] === undefined) { - this.bytesExpected = 0; - } - - if (this.bytesExpected !== null) { - this.emit('progress', this.bytesReceived, this.bytesExpected); - } -}; - -IncomingForm.prototype._newParser = function() { - return new MultipartParser(); -}; - -IncomingForm.prototype._initMultipart = function(boundary) { - this.type = 'multipart'; - - var parser = new MultipartParser(), - self = this, - headerField, - headerValue, - part; - - parser.initWithBoundary(boundary); - - parser.onPartBegin = function() { - part = new Stream(); - part.readable = true; - part.headers = {}; - part.name = null; - part.filename = null; - part.mime = null; - - part.transferEncoding = 'binary'; - part.transferBuffer = ''; - - headerField = ''; - headerValue = ''; - }; - - parser.onHeaderField = function(b, start, end) { - headerField += b.toString(self.encoding, start, end); - }; - - parser.onHeaderValue = function(b, start, end) { - headerValue += b.toString(self.encoding, start, end); - }; - - parser.onHeaderEnd = function() { - headerField = headerField.toLowerCase(); - part.headers[headerField] = headerValue; - - var m; - if (headerField == 'content-disposition') { - if (m = headerValue.match(/\bname="([^"]+)"/i)) { - part.name = m[1]; - } - - part.filename = self._fileName(headerValue); - } else if (headerField == 'content-type') { - part.mime = headerValue; - } else if (headerField == 'content-transfer-encoding') { - part.transferEncoding = headerValue.toLowerCase(); - } - - headerField = ''; - headerValue = ''; - }; - - parser.onHeadersEnd = function() { - switch(part.transferEncoding){ - case 'binary': - case '7bit': - case '8bit': - parser.onPartData = function(b, start, end) { - part.emit('data', b.slice(start, end)); - }; - - parser.onPartEnd = function() { - part.emit('end'); - }; - break; - - case 'base64': - parser.onPartData = function(b, start, end) { - part.transferBuffer += b.slice(start, end).toString('ascii'); - - /* - four bytes (chars) in base64 converts to three bytes in binary - encoding. So we should always work with a number of bytes that - can be divided by 4, it will result in a number of buytes that - can be divided vy 3. - */ - var offset = parseInt(part.transferBuffer.length / 4) * 4; - part.emit('data', new Buffer(part.transferBuffer.substring(0, offset), 'base64')) - part.transferBuffer = part.transferBuffer.substring(offset); - }; - - parser.onPartEnd = function() { - part.emit('data', new Buffer(part.transferBuffer, 'base64')) - part.emit('end'); - }; - break; - - default: - return self._error(new Error('unknown transfer-encoding')); - } - - self.onPart(part); - }; - - - parser.onEnd = function() { - self.ended = true; - self._maybeEnd(); - }; - - this._parser = parser; -}; - -IncomingForm.prototype._fileName = function(headerValue) { - var m = headerValue.match(/\bfilename="(.*?)"($|; )/i); - if (!m) return; - - var filename = m[1].substr(m[1].lastIndexOf('\\') + 1); - filename = filename.replace(/%22/g, '"'); - filename = filename.replace(/&#([\d]{4});/g, function(m, code) { - return String.fromCharCode(code); - }); - return filename; -}; - -IncomingForm.prototype._initUrlencoded = function() { - this.type = 'urlencoded'; - - var parser = new QuerystringParser(this.maxFields) - , self = this; - - parser.onField = function(key, val) { - self.emit('field', key, val); - }; - - parser.onEnd = function() { - self.ended = true; - self._maybeEnd(); - }; - - this._parser = parser; -}; - -IncomingForm.prototype._initOctetStream = function() { - this.type = 'octet-stream'; - var filename = this.headers['x-file-name']; - var mime = this.headers['content-type']; - - var file = new File({ - path: this._uploadPath(filename), - name: filename, - type: mime - }); - - file.open(); - - this.emit('fileBegin', filename, file); - - this._flushing++; - - var self = this; - - self._parser = new OctetParser(); - - //Keep track of writes that haven't finished so we don't emit the file before it's done being written - var outstandingWrites = 0; - - self._parser.on('data', function(buffer){ - self.pause(); - outstandingWrites++; - - file.write(buffer, function() { - outstandingWrites--; - self.resume(); - - if(self.ended){ - self._parser.emit('doneWritingFile'); - } - }); - }); - - self._parser.on('end', function(){ - self._flushing--; - self.ended = true; - - var done = function(){ - self.emit('file', 'file', file); - self._maybeEnd(); - }; - - if(outstandingWrites === 0){ - done(); - } else { - self._parser.once('doneWritingFile', done); - } - }); -}; - -IncomingForm.prototype._initJSONencoded = function() { - this.type = 'json'; - - var parser = new JSONParser() - , self = this; - - if (this.bytesExpected) { - parser.initWithLength(this.bytesExpected); - } - - parser.onField = function(key, val) { - self.emit('field', key, val); - } - - parser.onEnd = function() { - self.ended = true; - self._maybeEnd(); - }; - - this._parser = parser; -}; - -IncomingForm.prototype._uploadPath = function(filename) { - var name = ''; - for (var i = 0; i < 32; i++) { - name += Math.floor(Math.random() * 16).toString(16); - } - - if (this.keepExtensions) { - var ext = path.extname(filename); - ext = ext.replace(/(\.[a-z0-9]+).*/, '$1'); - - name += ext; - } - - return path.join(this.uploadDir, name); -}; - -IncomingForm.prototype._maybeEnd = function() { - if (!this.ended || this._flushing || this.error) { - return; - } - - this.emit('end'); -}; - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js deleted file mode 100644 index 7a6e3e1..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/index.js +++ /dev/null @@ -1,3 +0,0 @@ -var IncomingForm = require('./incoming_form').IncomingForm; -IncomingForm.IncomingForm = IncomingForm; -module.exports = IncomingForm; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js deleted file mode 100644 index 6ce966b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/json_parser.js +++ /dev/null @@ -1,35 +0,0 @@ -if (global.GENTLY) require = GENTLY.hijack(require); - -var Buffer = require('buffer').Buffer - -function JSONParser() { - this.data = new Buffer(''); - this.bytesWritten = 0; -}; -exports.JSONParser = JSONParser; - -JSONParser.prototype.initWithLength = function(length) { - this.data = new Buffer(length); -} - -JSONParser.prototype.write = function(buffer) { - if (this.data.length >= this.bytesWritten + buffer.length) { - buffer.copy(this.data, this.bytesWritten); - } else { - this.data = Buffer.concat([this.data, buffer]); - } - this.bytesWritten += buffer.length; - return buffer.length; -} - -JSONParser.prototype.end = function() { - try { - var fields = JSON.parse(this.data.toString('utf8')) - for (var field in fields) { - this.onField(field, fields[field]); - } - } catch (e) {} - this.data = null; - - this.onEnd(); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js deleted file mode 100644 index 98a6856..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/multipart_parser.js +++ /dev/null @@ -1,324 +0,0 @@ -var Buffer = require('buffer').Buffer, - s = 0, - S = - { PARSER_UNINITIALIZED: s++, - START: s++, - START_BOUNDARY: s++, - HEADER_FIELD_START: s++, - HEADER_FIELD: s++, - HEADER_VALUE_START: s++, - HEADER_VALUE: s++, - HEADER_VALUE_ALMOST_DONE: s++, - HEADERS_ALMOST_DONE: s++, - PART_DATA_START: s++, - PART_DATA: s++, - PART_END: s++, - END: s++ - }, - - f = 1, - F = - { PART_BOUNDARY: f, - LAST_BOUNDARY: f *= 2 - }, - - LF = 10, - CR = 13, - SPACE = 32, - HYPHEN = 45, - COLON = 58, - A = 97, - Z = 122, - - lower = function(c) { - return c | 0x20; - }; - -for (s in S) { - exports[s] = S[s]; -} - -function MultipartParser() { - this.boundary = null; - this.boundaryChars = null; - this.lookbehind = null; - this.state = S.PARSER_UNINITIALIZED; - - this.index = null; - this.flags = 0; -}; -exports.MultipartParser = MultipartParser; - -MultipartParser.stateToString = function(stateNumber) { - for (var state in S) { - var number = S[state]; - if (number === stateNumber) return state; - } -}; - -MultipartParser.prototype.initWithBoundary = function(str) { - this.boundary = new Buffer(str.length+4); - this.boundary.write('\r\n--', 'ascii', 0); - this.boundary.write(str, 'ascii', 4); - this.lookbehind = new Buffer(this.boundary.length+8); - this.state = S.START; - - this.boundaryChars = {}; - for (var i = 0; i < this.boundary.length; i++) { - this.boundaryChars[this.boundary[i]] = true; - } -}; - -MultipartParser.prototype.write = function(buffer) { - var self = this, - i = 0, - len = buffer.length, - prevIndex = this.index, - index = this.index, - state = this.state, - flags = this.flags, - lookbehind = this.lookbehind, - boundary = this.boundary, - boundaryChars = this.boundaryChars, - boundaryLength = this.boundary.length, - boundaryEnd = boundaryLength - 1, - bufferLength = buffer.length, - c, - cl, - - mark = function(name) { - self[name+'Mark'] = i; - }, - clear = function(name) { - delete self[name+'Mark']; - }, - callback = function(name, buffer, start, end) { - if (start !== undefined && start === end) { - return; - } - - var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1); - if (callbackSymbol in self) { - self[callbackSymbol](buffer, start, end); - } - }, - dataCallback = function(name, clear) { - var markSymbol = name+'Mark'; - if (!(markSymbol in self)) { - return; - } - - if (!clear) { - callback(name, buffer, self[markSymbol], buffer.length); - self[markSymbol] = 0; - } else { - callback(name, buffer, self[markSymbol], i); - delete self[markSymbol]; - } - }; - - for (i = 0; i < len; i++) { - c = buffer[i]; - switch (state) { - case S.PARSER_UNINITIALIZED: - return i; - case S.START: - index = 0; - state = S.START_BOUNDARY; - case S.START_BOUNDARY: - if (index == boundary.length - 2) { - if (c != CR) { - return i; - } - index++; - break; - } else if (index - 1 == boundary.length - 2) { - if (c != LF) { - return i; - } - index = 0; - callback('partBegin'); - state = S.HEADER_FIELD_START; - break; - } - - if (c != boundary[index+2]) { - index = -2; - } - if (c == boundary[index+2]) { - index++; - } - break; - case S.HEADER_FIELD_START: - state = S.HEADER_FIELD; - mark('headerField'); - index = 0; - case S.HEADER_FIELD: - if (c == CR) { - clear('headerField'); - state = S.HEADERS_ALMOST_DONE; - break; - } - - index++; - if (c == HYPHEN) { - break; - } - - if (c == COLON) { - if (index == 1) { - // empty header field - return i; - } - dataCallback('headerField', true); - state = S.HEADER_VALUE_START; - break; - } - - cl = lower(c); - if (cl < A || cl > Z) { - return i; - } - break; - case S.HEADER_VALUE_START: - if (c == SPACE) { - break; - } - - mark('headerValue'); - state = S.HEADER_VALUE; - case S.HEADER_VALUE: - if (c == CR) { - dataCallback('headerValue', true); - callback('headerEnd'); - state = S.HEADER_VALUE_ALMOST_DONE; - } - break; - case S.HEADER_VALUE_ALMOST_DONE: - if (c != LF) { - return i; - } - state = S.HEADER_FIELD_START; - break; - case S.HEADERS_ALMOST_DONE: - if (c != LF) { - return i; - } - - callback('headersEnd'); - state = S.PART_DATA_START; - break; - case S.PART_DATA_START: - state = S.PART_DATA; - mark('partData'); - case S.PART_DATA: - prevIndex = index; - - if (index == 0) { - // boyer-moore derrived algorithm to safely skip non-boundary data - i += boundaryEnd; - while (i < bufferLength && !(buffer[i] in boundaryChars)) { - i += boundaryLength; - } - i -= boundaryEnd; - c = buffer[i]; - } - - if (index < boundary.length) { - if (boundary[index] == c) { - if (index == 0) { - dataCallback('partData', true); - } - index++; - } else { - index = 0; - } - } else if (index == boundary.length) { - index++; - if (c == CR) { - // CR = part boundary - flags |= F.PART_BOUNDARY; - } else if (c == HYPHEN) { - // HYPHEN = end boundary - flags |= F.LAST_BOUNDARY; - } else { - index = 0; - } - } else if (index - 1 == boundary.length) { - if (flags & F.PART_BOUNDARY) { - index = 0; - if (c == LF) { - // unset the PART_BOUNDARY flag - flags &= ~F.PART_BOUNDARY; - callback('partEnd'); - callback('partBegin'); - state = S.HEADER_FIELD_START; - break; - } - } else if (flags & F.LAST_BOUNDARY) { - if (c == HYPHEN) { - callback('partEnd'); - callback('end'); - state = S.END; - } else { - index = 0; - } - } else { - index = 0; - } - } - - if (index > 0) { - // when matching a possible boundary, keep a lookbehind reference - // in case it turns out to be a false lead - lookbehind[index-1] = c; - } else if (prevIndex > 0) { - // if our boundary turned out to be rubbish, the captured lookbehind - // belongs to partData - callback('partData', lookbehind, 0, prevIndex); - prevIndex = 0; - mark('partData'); - - // reconsider the current character even so it interrupted the sequence - // it could be the beginning of a new sequence - i--; - } - - break; - case S.END: - break; - default: - return i; - } - } - - dataCallback('headerField'); - dataCallback('headerValue'); - dataCallback('partData'); - - this.index = index; - this.state = state; - this.flags = flags; - - return len; -}; - -MultipartParser.prototype.end = function() { - var callback = function(self, name) { - var callbackSymbol = 'on'+name.substr(0, 1).toUpperCase()+name.substr(1); - if (callbackSymbol in self) { - self[callbackSymbol](); - } - }; - if ((this.state == S.HEADER_FIELD_START && this.index == 0) || - (this.state == S.PART_DATA && this.index == this.boundary.length)) { - callback(this, 'partEnd'); - callback(this, 'end'); - } else if (this.state != S.END) { - return new Error('MultipartParser.end(): stream ended unexpectedly: ' + this.explain()); - } -}; - -MultipartParser.prototype.explain = function() { - return 'state = ' + MultipartParser.stateToString(this.state); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js deleted file mode 100644 index 6e8b551..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/octet_parser.js +++ /dev/null @@ -1,20 +0,0 @@ -var EventEmitter = require('events').EventEmitter - , util = require('util'); - -function OctetParser(options){ - if(!(this instanceof OctetParser)) return new OctetParser(options); - EventEmitter.call(this); -} - -util.inherits(OctetParser, EventEmitter); - -exports.OctetParser = OctetParser; - -OctetParser.prototype.write = function(buffer) { - this.emit('data', buffer); - return buffer.length; -}; - -OctetParser.prototype.end = function() { - this.emit('end'); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js deleted file mode 100644 index 320ce5a..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/lib/querystring_parser.js +++ /dev/null @@ -1,27 +0,0 @@ -if (global.GENTLY) require = GENTLY.hijack(require); - -// This is a buffering parser, not quite as nice as the multipart one. -// If I find time I'll rewrite this to be fully streaming as well -var querystring = require('querystring'); - -function QuerystringParser(maxKeys) { - this.maxKeys = maxKeys; - this.buffer = ''; -}; -exports.QuerystringParser = QuerystringParser; - -QuerystringParser.prototype.write = function(buffer) { - this.buffer += buffer.toString('ascii'); - return buffer.length; -}; - -QuerystringParser.prototype.end = function() { - var fields = querystring.parse(this.buffer, '&', '=', { maxKeys: this.maxKeys }); - for (var field in fields) { - this.onField(field, fields[field]); - } - this.buffer = ''; - - this.onEnd(); -}; - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json deleted file mode 100644 index 4679a11..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "formidable", - "description": "A node.js module for parsing form data, especially file uploads.", - "homepage": "https://github.com/felixge/node-formidable", - "version": "1.0.14", - "devDependencies": { - "gently": "0.8.0", - "findit": "0.1.1", - "hashish": "0.0.4", - "urun": "~0.0.6", - "utest": "0.0.3", - "request": "~2.11.4" - }, - "directories": { - "lib": "./lib" - }, - "main": "./lib/index", - "scripts": { - "test": "node test/run.js", - "clean": "rm test/tmp/*" - }, - "engines": { - "node": ">=0.8.0" - }, - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-formidable.git" - }, - "bugs": { - "url": "http://github.com/felixge/node-formidable/issues" - }, - "optionalDependencies": {}, - "readme": "# Formidable\n\n[![Build Status](https://secure.travis-ci.org/felixge/node-formidable.png?branch=master)](http://travis-ci.org/felixge/node-formidable)\n\n## Purpose\n\nA node.js module for parsing form data, especially file uploads.\n\n## Current status\n\nThis module was developed for [Transloadit](http://transloadit.com/), a service focused on uploading\nand encoding images and videos. It has been battle-tested against hundreds of GB of file uploads from\na large variety of clients and is considered production-ready.\n\n## Features\n\n* Fast (~500mb/sec), non-buffering multipart parser\n* Automatically writing file uploads to disk\n* Low memory footprint\n* Graceful error handling\n* Very high test coverage\n\n## Installation\n\nVia [npm](http://github.com/isaacs/npm):\n```\nnpm install formidable@latest\n```\nManually:\n```\ngit clone git://github.com/felixge/node-formidable.git formidable\nvim my.js\n# var formidable = require('./formidable');\n```\n\nNote: Formidable requires [gently](http://github.com/felixge/node-gently) to run the unit tests, but you won't need it for just using the library.\n\n## Example\n\nParse an incoming file upload.\n```javascript\nvar formidable = require('formidable'),\n http = require('http'),\n util = require('util');\n\nhttp.createServer(function(req, res) {\n if (req.url == '/upload' && req.method.toLowerCase() == 'post') {\n // parse a file upload\n var form = new formidable.IncomingForm();\n\n form.parse(req, function(err, fields, files) {\n res.writeHead(200, {'content-type': 'text/plain'});\n res.write('received upload:\\n\\n');\n res.end(util.inspect({fields: fields, files: files}));\n });\n\n return;\n }\n\n // show a file upload form\n res.writeHead(200, {'content-type': 'text/html'});\n res.end(\n '
        '+\n '
        '+\n '
        '+\n ''+\n '
        '\n );\n}).listen(8080);\n```\n## API\n\n### Formidable.IncomingForm\n```javascript\nvar form = new formidable.IncomingForm()\n```\nCreates a new incoming form.\n\n```javascript\nform.encoding = 'utf-8';\n```\nSets encoding for incoming form fields.\n\n```javascript\nform.uploadDir = process.env.TMP || process.env.TMPDIR || process.env.TEMP || '/tmp' || process.cwd();\n```\nThe directory for placing file uploads in. You can move them later on using\n`fs.rename()`. The default directory is picked at module load time depending on\nthe first existing directory from those listed above.\n\n```javascript\nform.keepExtensions = false;\n```\nIf you want the files written to `form.uploadDir` to include the extensions of the original files, set this property to `true`.\n\n```javascript\nform.type\n```\nEither 'multipart' or 'urlencoded' depending on the incoming request.\n\n```javascript\nform.maxFieldsSize = 2 * 1024 * 1024;\n```\nLimits the amount of memory a field (not file) can allocate in bytes.\nIf this value is exceeded, an `'error'` event is emitted. The default\nsize is 2MB.\n\n```javascript\nform.maxFields = 0;\n```\nLimits the number of fields that the querystring parser will decode. Defaults\nto 0 (unlimited).\n\n```javascript\nform.hash = false;\n```\nIf you want checksums calculated for incoming files, set this to either `'sha1'` or `'md5'`.\n\n```javascript\nform.bytesReceived\n```\nThe amount of bytes received for this form so far.\n\n```javascript\nform.bytesExpected\n```\nThe expected number of bytes in this form.\n\n```javascript\nform.parse(request, [cb]);\n```\nParses an incoming node.js `request` containing form data. If `cb` is provided, all fields an files are collected and passed to the callback:\n\n\n```javascript\nform.parse(req, function(err, fields, files) {\n // ...\n});\n\nform.onPart(part);\n```\nYou may overwrite this method if you are interested in directly accessing the multipart stream. Doing so will disable any `'field'` / `'file'` events processing which would occur otherwise, making you fully responsible for handling the processing.\n\n```javascript\nform.onPart = function(part) {\n part.addListener('data', function() {\n // ...\n });\n}\n```\nIf you want to use formidable to only handle certain parts for you, you can do so:\n```javascript\nform.onPart = function(part) {\n if (!part.filename) {\n // let formidable handle all non-file parts\n form.handlePart(part);\n }\n}\n```\nCheck the code in this method for further inspiration.\n\n\n### Formidable.File\n```javascript\nfile.size = 0\n```\nThe size of the uploaded file in bytes. If the file is still being uploaded (see `'fileBegin'` event), this property says how many bytes of the file have been written to disk yet.\n```javascript\nfile.path = null\n```\nThe path this file is being written to. You can modify this in the `'fileBegin'` event in\ncase you are unhappy with the way formidable generates a temporary path for your files.\n```javascript\nfile.name = null\n```\nThe name this file had according to the uploading client.\n```javascript\nfile.type = null\n```\nThe mime type of this file, according to the uploading client.\n```javascript\nfile.lastModifiedDate = null\n```\nA date object (or `null`) containing the time this file was last written to. Mostly\nhere for compatibility with the [W3C File API Draft](http://dev.w3.org/2006/webapi/FileAPI/).\n```javascript\nfile.hash = null\n```\nIf hash calculation was set, you can read the hex digest out of this var.\n\n#### Formidable.File#toJSON()\n\n This method returns a JSON-representation of the file, allowing you to\n `JSON.stringify()` the file which is useful for logging and responding\n to requests.\n\n### Events\n\n\n#### 'progress'\n```javascript\nform.on('progress', function(bytesReceived, bytesExpected) {\n});\n```\nEmitted after each incoming chunk of data that has been parsed. Can be used to roll your own progress bar.\n\n\n\n#### 'field'\n```javascript\nform.on('field', function(name, value) {\n});\n```\n\n#### 'fileBegin'\n\nEmitted whenever a field / value pair has been received.\n```javascript\nform.on('fileBegin', function(name, file) {\n});\n```\n\n#### 'file'\n\nEmitted whenever a new file is detected in the upload stream. Use this even if\nyou want to stream the file to somewhere else while buffering the upload on\nthe file system.\n\nEmitted whenever a field / file pair has been received. `file` is an instance of `File`.\n```javascript\nform.on('file', function(name, file) {\n});\n```\n\n#### 'error'\n\nEmitted when there is an error processing the incoming form. A request that experiences an error is automatically paused, you will have to manually call `request.resume()` if you want the request to continue firing `'data'` events.\n```javascript\nform.on('error', function(err) {\n});\n```\n\n#### 'aborted'\n\n\nEmitted when the request was aborted by the user. Right now this can be due to a 'timeout' or 'close' event on the socket. In the future there will be a separate 'timeout' event (needs a change in the node core).\n```javascript\nform.on('aborted', function() {\n});\n```\n\n##### 'end'\n```javascript\nform.on('end', function() {\n});\n```\nEmitted when the entire request has been received, and all contained files have finished flushing to disk. This is a great place for you to send your response.\n\n\n\n## Changelog\n\n### v1.0.14\n\n* Add failing hash tests. (Ben Trask)\n* Enable hash calculation again (Eugene Girshov)\n* Test for immediate data events (Tim Smart)\n* Re-arrange IncomingForm#parse (Tim Smart)\n\n### v1.0.13\n\n* Only update hash if update method exists (Sven Lito)\n* According to travis v0.10 needs to go quoted (Sven Lito)\n* Bumping build node versions (Sven Lito)\n* Additional fix for empty requests (Eugene Girshov)\n* Change the default to 1000, to match the new Node behaviour. (OrangeDog)\n* Add ability to control maxKeys in the querystring parser. (OrangeDog)\n* Adjust test case to work with node 0.9.x (Eugene Girshov)\n* Update package.json (Sven Lito)\n* Path adjustment according to eb4468b (Markus Ast)\n\n### v1.0.12\n\n* Emit error on aborted connections (Eugene Girshov)\n* Add support for empty requests (Eugene Girshov)\n* Fix name/filename handling in Content-Disposition (jesperp)\n* Tolerate malformed closing boundary in multipart (Eugene Girshov)\n* Ignore preamble in multipart messages (Eugene Girshov)\n* Add support for application/json (Mike Frey, Carlos Rodriguez)\n* Add support for Base64 encoding (Elmer Bulthuis)\n* Add File#toJSON (TJ Holowaychuk)\n* Remove support for Node.js 0.4 & 0.6 (Andrew Kelley)\n* Documentation improvements (Sven Lito, Andre Azevedo)\n* Add support for application/octet-stream (Ion Lupascu, Chris Scribner)\n* Use os.tmpDir() to get tmp directory (Andrew Kelley)\n* Improve package.json (Andrew Kelley, Sven Lito)\n* Fix benchmark script (Andrew Kelley)\n* Fix scope issue in incoming_forms (Sven Lito)\n* Fix file handle leak on error (OrangeDog)\n\n### v1.0.11\n\n* Calculate checksums for incoming files (sreuter)\n* Add definition parameters to \"IncomingForm\" as an argument (Math-)\n\n### v1.0.10\n\n* Make parts to be proper Streams (Matt Robenolt)\n\n### v1.0.9\n\n* Emit progress when content length header parsed (Tim Koschützki)\n* Fix Readme syntax due to GitHub changes (goob)\n* Replace references to old 'sys' module in Readme with 'util' (Peter Sugihara)\n\n### v1.0.8\n\n* Strip potentially unsafe characters when using `keepExtensions: true`.\n* Switch to utest / urun for testing\n* Add travis build\n\n### v1.0.7\n\n* Remove file from package that was causing problems when installing on windows. (#102)\n* Fix typos in Readme (Jason Davies).\n\n### v1.0.6\n\n* Do not default to the default to the field name for file uploads where\n filename=\"\".\n\n### v1.0.5\n\n* Support filename=\"\" in multipart parts\n* Explain unexpected end() errors in parser better\n\n**Note:** Starting with this version, formidable emits 'file' events for empty\nfile input fields. Previously those were incorrectly emitted as regular file\ninput fields with value = \"\".\n\n### v1.0.4\n\n* Detect a good default tmp directory regardless of platform. (#88)\n\n### v1.0.3\n\n* Fix problems with utf8 characters (#84) / semicolons in filenames (#58)\n* Small performance improvements\n* New test suite and fixture system\n\n### v1.0.2\n\n* Exclude node\\_modules folder from git\n* Implement new `'aborted'` event\n* Fix files in example folder to work with recent node versions\n* Make gently a devDependency\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.1...v1.0.2)\n\n### v1.0.1\n\n* Fix package.json to refer to proper main directory. (#68, Dean Landolt)\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v1.0.0...v1.0.1)\n\n### v1.0.0\n\n* Add support for multipart boundaries that are quoted strings. (Jeff Craig)\n\nThis marks the beginning of development on version 2.0 which will include\nseveral architectural improvements.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.11...v1.0.0)\n\n### v0.9.11\n\n* Emit `'progress'` event when receiving data, regardless of parsing it. (Tim Koschützki)\n* Use [W3C FileAPI Draft](http://dev.w3.org/2006/webapi/FileAPI/) properties for File class\n\n**Important:** The old property names of the File class will be removed in a\nfuture release.\n\n[See Commits](https://github.com/felixge/node-formidable/compare/v0.9.10...v0.9.11)\n\n### Older releases\n\nThese releases were done before starting to maintain the above Changelog:\n\n* [v0.9.10](https://github.com/felixge/node-formidable/compare/v0.9.9...v0.9.10)\n* [v0.9.9](https://github.com/felixge/node-formidable/compare/v0.9.8...v0.9.9)\n* [v0.9.8](https://github.com/felixge/node-formidable/compare/v0.9.7...v0.9.8)\n* [v0.9.7](https://github.com/felixge/node-formidable/compare/v0.9.6...v0.9.7)\n* [v0.9.6](https://github.com/felixge/node-formidable/compare/v0.9.5...v0.9.6)\n* [v0.9.5](https://github.com/felixge/node-formidable/compare/v0.9.4...v0.9.5)\n* [v0.9.4](https://github.com/felixge/node-formidable/compare/v0.9.3...v0.9.4)\n* [v0.9.3](https://github.com/felixge/node-formidable/compare/v0.9.2...v0.9.3)\n* [v0.9.2](https://github.com/felixge/node-formidable/compare/v0.9.1...v0.9.2)\n* [v0.9.1](https://github.com/felixge/node-formidable/compare/v0.9.0...v0.9.1)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.9.0](https://github.com/felixge/node-formidable/compare/v0.8.0...v0.9.0)\n* [v0.1.0](https://github.com/felixge/node-formidable/commits/v0.1.0)\n\n## License\n\nFormidable is licensed under the MIT license.\n\n## Ports\n\n* [multipart-parser](http://github.com/FooBarWidget/multipart-parser): a C++ parser based on formidable\n\n## Credits\n\n* [Ryan Dahl](http://twitter.com/ryah) for his work on [http-parser](http://github.com/ry/http-parser) which heavily inspired multipart_parser.js\n", - "readmeFilename": "Readme.md", - "dependencies": {}, - "_id": "formidable@1.0.14", - "_from": "formidable@1.0.14" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js deleted file mode 100644 index 6a94295..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/common.js +++ /dev/null @@ -1,18 +0,0 @@ -var path = require('path'); - -var root = path.join(__dirname, '../'); -exports.dir = { - root : root, - lib : root + '/lib', - fixture : root + '/test/fixture', - tmp : root + '/test/tmp', -}; - -exports.port = 13532; - -exports.formidable = require('..'); -exports.assert = require('assert'); - -exports.require = function(lib) { - return require(exports.dir.lib + '/' + lib); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/beta-sticker-1.png deleted file mode 100644 index 20b1a7f177927900e120c24f97d9514d3325873f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 zcmV-?27~#DP)3JV+!|TB%7InihJI zi%oiz5`4wPD(5TE#Clfmyz`#@W}LZ>>+E@k7CP{;vvaq*zx`hGeT&flY)Jpowfx+# zF#k`0B<>n%i|hRykUvy7X`3KSRI;Na0P)F={!qZAZGfn#s5xQh>_6;*UJByn#3z8; zG&CW=u!m}>XtDJ5^&Lz}N!jo9dR0E3PxAZM?>|01e)rh1V|QTc0daHUp~B#VJ|+c$ z;XyEjuBD}APenz=$*8EP!zz_ZPwq%T_@l?;Sy@U2uTeogKh9w7xlft=0P-+D;F|CAOxNsr& z`0?ZCqobn_OVT=js7E~Dx~$^j;{27BmEZ2&yJwd<{w80N12M-XFc&Xg%q=Y~?bYdY zN&Lft0f^SZ!or>{C@3g>^5ltWXlTgBMW0XZPildwh`-d<*2Xt9G@K6=Mg+yr!RK^& zd3iZzvw2{Ce%{GNpPz%;;6u!BbRdxv6BDh>XF~NCr8WNi!Gj0i6c!eK1gA?N%OI=N z*@-`?1R<_%ZEf8XA0J;AibjHIPri;vdU|?!Wo2awOe3&0sYL<_Rt`kMyt=yju_I%p$sD z`kl=G0ewW)@i_mv3EjOtMdtIfR`koyQ}ADh5N_YTed!cN!)Zv;$irT**FVQD#8H9g zEJ}JWo5}IBmhVyTjWsei^kRN0XkrrG{B9WOqasj7)-H4ow3Bym52`qt zi;9k9qM}za&N@qBK25$TUa5SX`58OVQ%hB65t z9_PADXnDzj%4>4a-N8u_jHtW`MAn8XZ*FexzEWu4F-@RyLpwRocwrZ+f4vYDANT|r zUiy^y5eEFAsUJO`m56=-v%UM~SLDCUk9Z$?`0(MBXg}lg5BB&Sr%#{GICJKVk-Y`f zI*8BK^2{6RxqPj@zP|4I_3PuX^e4^Qc;j{PKw6qTqhV(@X|>u!48v|9a`dN#vD@vB zp}2bumKLcj(bB}N;&xiL^SYsixeApaayT5wX0zcNAg9xb+-^6~7y}jMnNY^?@bFKv zVl7bKs%3eI)Iw8JQ1ngUVCbY;S>d$fmYYn} zefno-XPup$ohHzjF*`f^835ZI9v)7hu*NVH_AC5AwOWmfFh#RjtyT+E5of_vRtjU| zY9SAMrdpxnL|k9x85tQ_0yPgpaW#;ipP!bLl(Z9~FrY2$SET$@fSQ?^F;`VpogEt+ z`-6kwwc{0)ut=f%^s*icZfI?9Z@&q<^>|uZT4F*%!cGjsw1i=xQV2i+ti8X#|BI56 zk}qYNVZP(yVEn<_Aby|G(4?uOMHS9fkyx6WoA=k$)HFcdy&IblYYkv=s;~?U3|wt% zYr75FU8E1UbK>AyA>UR&q855X!$^y(2r4_ERVst%(?Ysffb2UlIy$;U-`+*d;^4%| z`Hfe!b%fg6t2vGFVBu7BoC~lv+QoIPYl39x52bTeYPWea@?Z>3!vXn%^!7d_nC*Ta zQUX)U3Uz)f^2ok~__q39^fX`4Bn9V}WI+C>`9Acw00RIQn|MJlIvG3w0000C3%>5t zidr%inNpJrrOWk}o?bo`LL3TPGX8LmGr|Nex)~wfXj5t5$CAq--YK`!ZrA66XG4Cp zNAorG(h%OxqAiuau^-NH&_!(J^LR0~)=HZ(o`*BhTmP2vf46?}{IFN8_QblI zaR`~MHq*UKQ*|Hoq3fAlfBP>300000000000000000000z<=}(t;CCo04M+egQt(w diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/blank.gif deleted file mode 100644 index 75b945d2553848b8b6f41fe5e24599c0687b8472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt deleted file mode 100644 index e7a4785..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/funkyfilename.txt +++ /dev/null @@ -1 +0,0 @@ -I am a text file with a funky name! diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/menu_separator.png deleted file mode 100644 index 1c16a71ed41bb17dabbf11eeecc76f3ca03d3f24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 931 zcmaJ=&u-H&9L|6Pnly1_aI&&1P3)vyR;ytuO~)cgRkamVTp&%{HtHN_iA&QS;e-U- zd5OKiBqk0Vcm-}q+!2BY!0wuk10|AU|E%x(et-R@-FmpQeRo??lpXij>4^QBSi3jn z|M`dW_hP%ln|T35jm!Y8(R8C2hEg9b|psA#Yhz#$%-Nz4mwc*Qk0a^)z{ zM0j>c8oeapQOYP-ri`P_vA~UbD{iV?FpJ7So=J zv7UUR7vf3WcAa`J|2jDR{`=RvpM!z&`qQJW8@tM_v#pO$-hO^2pN-pWIcE=Ey!r!8 CR~}#h diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt deleted file mode 100644 index 9b6903e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/file/plain.txt +++ /dev/null @@ -1 +0,0 @@ -I am a plain text file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md deleted file mode 100644 index 3c9dbe3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/http/special-chars-in-filename/info.md +++ /dev/null @@ -1,3 +0,0 @@ -* Opera does not allow submitting this file, it shows a warning to the - user that the file could not be found instead. Tested in 9.8, 11.51 on OSX. - Reported to Opera on 08.09.2011 (tracking email DSK-346009@bugs.opera.com). diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js deleted file mode 100644 index fc22026..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/encoding.js +++ /dev/null @@ -1,24 +0,0 @@ -module.exports['menu_seperator.png.http'] = [ - {type: 'file', name: 'image', filename: 'menu_separator.png', fixture: 'menu_separator.png', - sha1: 'c845ca3ea794be298f2a1b79769b71939eaf4e54'} -]; - -module.exports['beta-sticker-1.png.http'] = [ - {type: 'file', name: 'sticker', filename: 'beta-sticker-1.png', fixture: 'beta-sticker-1.png', - sha1: '6abbcffd12b4ada5a6a084fe9e4584f846331bc4'} -]; - -module.exports['blank.gif.http'] = [ - {type: 'file', name: 'file', filename: 'blank.gif', fixture: 'blank.gif', - sha1: 'a1fdee122b95748d81cee426d717c05b5174fe96'} -]; - -module.exports['binaryfile.tar.gz.http'] = [ - {type: 'file', name: 'file', filename: 'binaryfile.tar.gz', fixture: 'binaryfile.tar.gz', - sha1: 'cfabe13b348e5e69287d677860880c52a69d2155'} -]; - -module.exports['plain.txt.http'] = [ - {type: 'file', name: 'file', filename: 'plain.txt', fixture: 'plain.txt', - sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'} -]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js deleted file mode 100644 index 4489176..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/misc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - 'empty.http': [], - 'empty-urlencoded.http': [], - 'empty-multipart.http': [], - 'minimal.http': [], -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js deleted file mode 100644 index f03b4f0..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/no-filename.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports['generic.http'] = [ - {type: 'file', name: 'upload', filename: '', fixture: 'plain.txt', - sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, -]; - -module.exports['filename-name.http'] = [ - {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', - sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, -]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js deleted file mode 100644 index d2e4cfd..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/preamble.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports['crlf.http'] = [ - {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', - sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, -]; - -module.exports['preamble.http'] = [ - {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', - sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, -]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js deleted file mode 100644 index eb76fdc..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/special-chars-in-filename.js +++ /dev/null @@ -1,21 +0,0 @@ -var properFilename = 'funkyfilename.txt'; - -function expect(filename) { - return [ - {type: 'field', name: 'title', value: 'Weird filename'}, - {type: 'file', name: 'upload', filename: filename, fixture: properFilename}, - ]; -}; - -var webkit = " ? % * | \" < > . ? ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; -var ffOrIe = " ? % * | \" < > . ☃ ; ' @ # $ ^ & ( ) - _ = + { } [ ] ` ~.txt"; - -module.exports = { - 'osx-chrome-13.http' : expect(webkit), - 'osx-firefox-3.6.http' : expect(ffOrIe), - 'osx-safari-5.http' : expect(webkit), - 'xp-chrome-12.http' : expect(webkit), - 'xp-ie-7.http' : expect(ffOrIe), - 'xp-ie-8.http' : expect(ffOrIe), - 'xp-safari-5.http' : expect(webkit), -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js deleted file mode 100644 index e59c5b2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/js/workarounds.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports['missing-hyphens1.http'] = [ - {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', - sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, -]; -module.exports['missing-hyphens2.http'] = [ - {type: 'file', name: 'upload', filename: 'plain.txt', fixture: 'plain.txt', - sha1: 'b31d07bac24ac32734de88b3687dddb10e976872'}, -]; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js deleted file mode 100644 index a476169..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/fixture/multipart.js +++ /dev/null @@ -1,72 +0,0 @@ -exports['rfc1867'] = - { boundary: 'AaB03x', - raw: - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="field1"\r\n'+ - '\r\n'+ - 'Joe Blow\r\nalmost tricked you!\r\n'+ - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ - 'Content-Type: text/plain\r\n'+ - '\r\n'+ - '... contents of file1.txt ...\r\r\n'+ - '--AaB03x--\r\n', - parts: - [ { headers: { - 'content-disposition': 'form-data; name="field1"', - }, - data: 'Joe Blow\r\nalmost tricked you!', - }, - { headers: { - 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', - 'Content-Type': 'text/plain', - }, - data: '... contents of file1.txt ...\r', - } - ] - }; - -exports['noTrailing\r\n'] = - { boundary: 'AaB03x', - raw: - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="field1"\r\n'+ - '\r\n'+ - 'Joe Blow\r\nalmost tricked you!\r\n'+ - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ - 'Content-Type: text/plain\r\n'+ - '\r\n'+ - '... contents of file1.txt ...\r\r\n'+ - '--AaB03x--', - parts: - [ { headers: { - 'content-disposition': 'form-data; name="field1"', - }, - data: 'Joe Blow\r\nalmost tricked you!', - }, - { headers: { - 'content-disposition': 'form-data; name="pics"; filename="file1.txt"', - 'Content-Type': 'text/plain', - }, - data: '... contents of file1.txt ...\r', - } - ] - }; - -exports['emptyHeader'] = - { boundary: 'AaB03x', - raw: - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="field1"\r\n'+ - ': foo\r\n'+ - '\r\n'+ - 'Joe Blow\r\nalmost tricked you!\r\n'+ - '--AaB03x\r\n'+ - 'content-disposition: form-data; name="pics"; filename="file1.txt"\r\n'+ - 'Content-Type: text/plain\r\n'+ - '\r\n'+ - '... contents of file1.txt ...\r\r\n'+ - '--AaB03x--\r\n', - expectError: true, - }; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js deleted file mode 100644 index 8e10ac9..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-fixtures.js +++ /dev/null @@ -1,96 +0,0 @@ -var hashish = require('hashish'); -var fs = require('fs'); -var findit = require('findit'); -var path = require('path'); -var http = require('http'); -var net = require('net'); -var assert = require('assert'); - -var common = require('../common'); -var formidable = common.formidable; - -var server = http.createServer(); -server.listen(common.port, findFixtures); - -function findFixtures() { - var fixtures = []; - findit - .sync(common.dir.fixture + '/js') - .forEach(function(jsPath) { - if (!/\.js$/.test(jsPath)) return; - - var group = path.basename(jsPath, '.js'); - hashish.forEach(require(jsPath), function(fixture, name) { - fixtures.push({ - name : group + '/' + name, - fixture : fixture, - }); - }); - }); - - testNext(fixtures); -} - -function testNext(fixtures) { - var fixture = fixtures.shift(); - if (!fixture) return server.close(); - - var name = fixture.name; - var fixture = fixture.fixture; - - uploadFixture(name, function(err, parts) { - if (err) throw err; - - fixture.forEach(function(expectedPart, i) { - var parsedPart = parts[i]; - assert.equal(parsedPart.type, expectedPart.type); - assert.equal(parsedPart.name, expectedPart.name); - - if (parsedPart.type === 'file') { - var file = parsedPart.value; - assert.equal(file.name, expectedPart.filename); - if(expectedPart.sha1) assert.equal(file.hash, expectedPart.sha1); - } - }); - - testNext(fixtures); - }); -}; - -function uploadFixture(name, cb) { - server.once('request', function(req, res) { - var form = new formidable.IncomingForm(); - form.uploadDir = common.dir.tmp; - form.hash = "sha1"; - form.parse(req); - - function callback() { - var realCallback = cb; - cb = function() {}; - realCallback.apply(null, arguments); - } - - var parts = []; - form - .on('error', callback) - .on('fileBegin', function(name, value) { - parts.push({type: 'file', name: name, value: value}); - }) - .on('field', function(name, value) { - parts.push({type: 'field', name: name, value: value}); - }) - .on('end', function() { - res.end('OK'); - callback(null, parts); - }); - }); - - var socket = net.createConnection(common.port); - var file = fs.createReadStream(common.dir.fixture + '/http/' + name); - - file.pipe(socket, {end: false}); - socket.on('data', function () { - socket.end(); - }); - -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js deleted file mode 100644 index 28e758e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-json.js +++ /dev/null @@ -1,38 +0,0 @@ -var common = require('../common'); -var formidable = common.formidable; -var http = require('http'); -var assert = require('assert'); - -var testData = { - numbers: [1, 2, 3, 4, 5], - nested: { key: 'value' } -}; - -var server = http.createServer(function(req, res) { - var form = new formidable.IncomingForm(); - - form.parse(req, function(err, fields, files) { - assert.deepEqual(fields, testData); - - res.end(); - server.close(); - }); -}); - -var port = common.port; - -server.listen(port, function(err){ - assert.equal(err, null); - - var request = http.request({ - port: port, - method: 'POST', - headers: { - 'Content-Type': 'application/json' - } - }); - - request.write(JSON.stringify(testData)); - request.end(); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js deleted file mode 100644 index 643d2c6..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/integration/test-octet-stream.js +++ /dev/null @@ -1,45 +0,0 @@ -var common = require('../common'); -var formidable = common.formidable; -var http = require('http'); -var fs = require('fs'); -var path = require('path'); -var hashish = require('hashish'); -var assert = require('assert'); - -var testFilePath = path.join(__dirname, '../fixture/file/binaryfile.tar.gz'); - -var server = http.createServer(function(req, res) { - var form = new formidable.IncomingForm(); - - form.parse(req, function(err, fields, files) { - assert.equal(hashish(files).length, 1); - var file = files.file; - - assert.equal(file.size, 301); - - var uploaded = fs.readFileSync(file.path); - var original = fs.readFileSync(testFilePath); - - assert.deepEqual(uploaded, original); - - res.end(); - server.close(); - }); -}); - -var port = common.port; - -server.listen(port, function(err){ - assert.equal(err, null); - - var request = http.request({ - port: port, - method: 'POST', - headers: { - 'Content-Type': 'application/octet-stream' - } - }); - - fs.createReadStream(testFilePath).pipe(request); -}); - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js deleted file mode 100644 index 2b98598..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/common.js +++ /dev/null @@ -1,24 +0,0 @@ -var path = require('path'), - fs = require('fs'); - -try { - global.Gently = require('gently'); -} catch (e) { - throw new Error('this test suite requires node-gently'); -} - -exports.lib = path.join(__dirname, '../../lib'); - -global.GENTLY = new Gently(); - -global.assert = require('assert'); -global.TEST_PORT = 13532; -global.TEST_FIXTURES = path.join(__dirname, '../fixture'); -global.TEST_TMP = path.join(__dirname, '../tmp'); - -// Stupid new feature in node that complains about gently attaching too many -// listeners to process 'exit'. This is a workaround until I can think of a -// better way to deal with this. -if (process.setMaxListeners) { - process.setMaxListeners(10000); -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js deleted file mode 100644 index 75232aa..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/integration/test-multipart-parser.js +++ /dev/null @@ -1,80 +0,0 @@ -var common = require('../common'); -var CHUNK_LENGTH = 10, - multipartParser = require(common.lib + '/multipart_parser'), - MultipartParser = multipartParser.MultipartParser, - parser = new MultipartParser(), - fixtures = require(TEST_FIXTURES + '/multipart'), - Buffer = require('buffer').Buffer; - -Object.keys(fixtures).forEach(function(name) { - var fixture = fixtures[name], - buffer = new Buffer(Buffer.byteLength(fixture.raw, 'binary')), - offset = 0, - chunk, - nparsed, - - parts = [], - part = null, - headerField, - headerValue, - endCalled = ''; - - parser.initWithBoundary(fixture.boundary); - parser.onPartBegin = function() { - part = {headers: {}, data: ''}; - parts.push(part); - headerField = ''; - headerValue = ''; - }; - - parser.onHeaderField = function(b, start, end) { - headerField += b.toString('ascii', start, end); - }; - - parser.onHeaderValue = function(b, start, end) { - headerValue += b.toString('ascii', start, end); - } - - parser.onHeaderEnd = function() { - part.headers[headerField] = headerValue; - headerField = ''; - headerValue = ''; - }; - - parser.onPartData = function(b, start, end) { - var str = b.toString('ascii', start, end); - part.data += b.slice(start, end); - } - - parser.onEnd = function() { - endCalled = true; - } - - buffer.write(fixture.raw, 'binary', 0); - - while (offset < buffer.length) { - if (offset + CHUNK_LENGTH < buffer.length) { - chunk = buffer.slice(offset, offset+CHUNK_LENGTH); - } else { - chunk = buffer.slice(offset, buffer.length); - } - offset = offset + CHUNK_LENGTH; - - nparsed = parser.write(chunk); - if (nparsed != chunk.length) { - if (fixture.expectError) { - return; - } - puts('-- ERROR --'); - p(chunk.toString('ascii')); - throw new Error(chunk.length+' bytes written, but only '+nparsed+' bytes parsed!'); - } - } - - if (fixture.expectError) { - throw new Error('expected parse error did not happen'); - } - - assert.ok(endCalled); - assert.deepEqual(parts, fixture.parts); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js deleted file mode 100644 index 52ceedb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-file.js +++ /dev/null @@ -1,104 +0,0 @@ -var common = require('../common'); -var WriteStreamStub = GENTLY.stub('fs', 'WriteStream'); - -var File = require(common.lib + '/file'), - EventEmitter = require('events').EventEmitter, - file, - gently; - -function test(test) { - gently = new Gently(); - file = new File(); - test(); - gently.verify(test.name); -} - -test(function constructor() { - assert.ok(file instanceof EventEmitter); - assert.strictEqual(file.size, 0); - assert.strictEqual(file.path, null); - assert.strictEqual(file.name, null); - assert.strictEqual(file.type, null); - assert.strictEqual(file.lastModifiedDate, null); - - assert.strictEqual(file._writeStream, null); - - (function testSetProperties() { - var file2 = new File({foo: 'bar'}); - assert.equal(file2.foo, 'bar'); - })(); -}); - -test(function open() { - var WRITE_STREAM; - file.path = '/foo'; - - gently.expect(WriteStreamStub, 'new', function (path) { - WRITE_STREAM = this; - assert.strictEqual(path, file.path); - }); - - file.open(); - assert.strictEqual(file._writeStream, WRITE_STREAM); -}); - -test(function write() { - var BUFFER = {length: 10}, - CB_STUB, - CB = function() { - CB_STUB.apply(this, arguments); - }; - - file._writeStream = {}; - - gently.expect(file._writeStream, 'write', function (buffer, cb) { - assert.strictEqual(buffer, BUFFER); - - gently.expect(file, 'emit', function (event, bytesWritten) { - assert.ok(file.lastModifiedDate instanceof Date); - assert.equal(event, 'progress'); - assert.equal(bytesWritten, file.size); - }); - - CB_STUB = gently.expect(function writeCb() { - assert.equal(file.size, 10); - }); - - cb(); - - gently.expect(file, 'emit', function (event, bytesWritten) { - assert.equal(event, 'progress'); - assert.equal(bytesWritten, file.size); - }); - - CB_STUB = gently.expect(function writeCb() { - assert.equal(file.size, 20); - }); - - cb(); - }); - - file.write(BUFFER, CB); -}); - -test(function end() { - var CB_STUB, - CB = function() { - CB_STUB.apply(this, arguments); - }; - - file._writeStream = {}; - - gently.expect(file._writeStream, 'end', function (cb) { - gently.expect(file, 'emit', function (event) { - assert.equal(event, 'end'); - }); - - CB_STUB = gently.expect(function endCb() { - }); - - cb(); - }); - - file.end(CB); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js deleted file mode 100644 index 25bd887..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-incoming-form.js +++ /dev/null @@ -1,756 +0,0 @@ -var common = require('../common'); -var MultipartParserStub = GENTLY.stub('./multipart_parser', 'MultipartParser'), - QuerystringParserStub = GENTLY.stub('./querystring_parser', 'QuerystringParser'), - EventEmitterStub = GENTLY.stub('events', 'EventEmitter'), - StreamStub = GENTLY.stub('stream', 'Stream'), - FileStub = GENTLY.stub('./file'); - -var formidable = require(common.lib + '/index'), - IncomingForm = formidable.IncomingForm, - events = require('events'), - fs = require('fs'), - path = require('path'), - Buffer = require('buffer').Buffer, - fixtures = require(TEST_FIXTURES + '/multipart'), - form, - gently; - -function test(test) { - gently = new Gently(); - gently.expect(EventEmitterStub, 'call'); - form = new IncomingForm(); - test(); - gently.verify(test.name); -} - -test(function constructor() { - assert.strictEqual(form.error, null); - assert.strictEqual(form.ended, false); - assert.strictEqual(form.type, null); - assert.strictEqual(form.headers, null); - assert.strictEqual(form.keepExtensions, false); - // Can't assume dir === '/tmp' for portability - // assert.strictEqual(form.uploadDir, '/tmp'); - // Make sure it is a directory instead - assert.doesNotThrow(function () { - assert(fs.statSync(form.uploadDir).isDirectory()); - }); - assert.strictEqual(form.encoding, 'utf-8'); - assert.strictEqual(form.bytesReceived, null); - assert.strictEqual(form.bytesExpected, null); - assert.strictEqual(form.maxFieldsSize, 2 * 1024 * 1024); - assert.strictEqual(form._parser, null); - assert.strictEqual(form._flushing, 0); - assert.strictEqual(form._fieldsSize, 0); - assert.ok(form instanceof EventEmitterStub); - assert.equal(form.constructor.name, 'IncomingForm'); - - (function testSimpleConstructor() { - gently.expect(EventEmitterStub, 'call'); - var form = IncomingForm(); - assert.ok(form instanceof IncomingForm); - })(); - - (function testSimpleConstructorShortcut() { - gently.expect(EventEmitterStub, 'call'); - var form = formidable(); - assert.ok(form instanceof IncomingForm); - })(); -}); - -test(function parse() { - var REQ = {headers: {}} - , emit = {}; - - gently.expect(form, 'writeHeaders', function(headers) { - assert.strictEqual(headers, REQ.headers); - }); - - var EVENTS = ['error', 'aborted', 'data', 'end']; - gently.expect(REQ, 'on', EVENTS.length, function(event, fn) { - assert.equal(event, EVENTS.shift()); - emit[event] = fn; - return this; - }); - - form.parse(REQ); - - (function testPause() { - gently.expect(REQ, 'pause'); - assert.strictEqual(form.pause(), true); - })(); - - (function testPauseCriticalException() { - form.ended = false; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'pause', function() { - throw ERR; - }); - - gently.expect(form, '_error', function(err) { - assert.strictEqual(err, ERR); - }); - - assert.strictEqual(form.pause(), false); - })(); - - (function testPauseHarmlessException() { - form.ended = true; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'pause', function() { - throw ERR; - }); - - assert.strictEqual(form.pause(), false); - })(); - - (function testResume() { - gently.expect(REQ, 'resume'); - assert.strictEqual(form.resume(), true); - })(); - - (function testResumeCriticalException() { - form.ended = false; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'resume', function() { - throw ERR; - }); - - gently.expect(form, '_error', function(err) { - assert.strictEqual(err, ERR); - }); - - assert.strictEqual(form.resume(), false); - })(); - - (function testResumeHarmlessException() { - form.ended = true; - - var ERR = new Error('dasdsa'); - gently.expect(REQ, 'resume', function() { - throw ERR; - }); - - assert.strictEqual(form.resume(), false); - })(); - - (function testEmitError() { - var ERR = new Error('something bad happened'); - gently.expect(form, '_error',function(err) { - assert.strictEqual(err, ERR); - }); - emit.error(ERR); - })(); - - (function testEmitAborted() { - gently.expect(form, 'emit',function(event) { - assert.equal(event, 'aborted'); - }); - gently.expect(form, '_error'); - - emit.aborted(); - })(); - - - (function testEmitData() { - var BUFFER = [1, 2, 3]; - gently.expect(form, 'write', function(buffer) { - assert.strictEqual(buffer, BUFFER); - }); - emit.data(BUFFER); - })(); - - (function testEmitEnd() { - form._parser = {}; - - (function testWithError() { - var ERR = new Error('haha'); - gently.expect(form._parser, 'end', function() { - return ERR; - }); - - gently.expect(form, '_error', function(err) { - assert.strictEqual(err, ERR); - }); - - emit.end(); - })(); - - (function testWithoutError() { - gently.expect(form._parser, 'end'); - emit.end(); - })(); - - (function testAfterError() { - form.error = true; - emit.end(); - })(); - })(); - - (function testWithCallback() { - gently.expect(EventEmitterStub, 'call'); - var form = new IncomingForm(), - REQ = {headers: {}}, - parseCalled = 0; - - gently.expect(form, 'on', 4, function(event, fn) { - if (event == 'field') { - fn('field1', 'foo'); - fn('field1', 'bar'); - fn('field2', 'nice'); - } - - if (event == 'file') { - fn('file1', '1'); - fn('file1', '2'); - fn('file2', '3'); - } - - if (event == 'end') { - fn(); - } - return this; - }); - - gently.expect(form, 'writeHeaders'); - - gently.expect(REQ, 'on', 4, function() { - return this; - }); - - var parseCbOk = function (err, fields, files) { - assert.deepEqual(fields, {field1: 'bar', field2: 'nice'}); - assert.deepEqual(files, {file1: '2', file2: '3'}); - }; - form.parse(REQ, parseCbOk); - - var ERR = new Error('test'); - gently.expect(form, 'on', 3, function(event, fn) { - if (event == 'field') { - fn('foo', 'bar'); - } - - if (event == 'error') { - fn(ERR); - gently.expect(form, 'on'); - gently.expect(form, 'writeHeaders'); - gently.expect(REQ, 'on', 4, function() { - return this; - }); - } - return this; - }); - - form.parse(REQ, function parseCbErr(err, fields, files) { - assert.strictEqual(err, ERR); - assert.deepEqual(fields, {foo: 'bar'}); - }); - })(); - - (function testWriteOrder() { - gently.expect(EventEmitterStub, 'call'); - var form = new IncomingForm(); - var REQ = new events.EventEmitter(); - var BUF = {}; - var DATACB = null; - - REQ.on('newListener', function(event, fn) { - if ('data' === event) fn(BUF); - }); - - gently.expect(form, 'writeHeaders'); - gently.expect(form, 'write', function(buf) { - assert.strictEqual(buf, BUF); - }); - - form.parse(REQ); - })(); -}); - -test(function pause() { - assert.strictEqual(form.pause(), false); -}); - -test(function resume() { - assert.strictEqual(form.resume(), false); -}); - - -test(function writeHeaders() { - var HEADERS = {}; - gently.expect(form, '_parseContentLength'); - gently.expect(form, '_parseContentType'); - - form.writeHeaders(HEADERS); - assert.strictEqual(form.headers, HEADERS); -}); - -test(function write() { - var parser = {}, - BUFFER = [1, 2, 3]; - - form._parser = parser; - form.bytesExpected = 523423; - - (function testBasic() { - gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { - assert.equal(event, 'progress'); - assert.equal(bytesReceived, BUFFER.length); - assert.equal(bytesExpected, form.bytesExpected); - }); - - gently.expect(parser, 'write', function(buffer) { - assert.strictEqual(buffer, BUFFER); - return buffer.length; - }); - - assert.equal(form.write(BUFFER), BUFFER.length); - assert.equal(form.bytesReceived, BUFFER.length); - })(); - - (function testParserError() { - gently.expect(form, 'emit'); - - gently.expect(parser, 'write', function(buffer) { - assert.strictEqual(buffer, BUFFER); - return buffer.length - 1; - }); - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/parser error/i)); - }); - - assert.equal(form.write(BUFFER), BUFFER.length - 1); - assert.equal(form.bytesReceived, BUFFER.length + BUFFER.length); - })(); - - (function testUninitialized() { - delete form._parser; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/unintialized parser/i)); - }); - form.write(BUFFER); - })(); -}); - -test(function parseContentType() { - var HEADERS = {}; - - form.headers = {'content-type': 'application/x-www-form-urlencoded'}; - gently.expect(form, '_initUrlencoded'); - form._parseContentType(); - - // accept anything that has 'urlencoded' in it - form.headers = {'content-type': 'broken-client/urlencoded-stupid'}; - gently.expect(form, '_initUrlencoded'); - form._parseContentType(); - - var BOUNDARY = '---------------------------57814261102167618332366269'; - form.headers = {'content-type': 'multipart/form-data; boundary='+BOUNDARY}; - - gently.expect(form, '_initMultipart', function(boundary) { - assert.equal(boundary, BOUNDARY); - }); - form._parseContentType(); - - (function testQuotedBoundary() { - form.headers = {'content-type': 'multipart/form-data; boundary="' + BOUNDARY + '"'}; - - gently.expect(form, '_initMultipart', function(boundary) { - assert.equal(boundary, BOUNDARY); - }); - form._parseContentType(); - })(); - - (function testNoBoundary() { - form.headers = {'content-type': 'multipart/form-data'}; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/no multipart boundary/i)); - }); - form._parseContentType(); - })(); - - (function testNoContentType() { - form.headers = {}; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/no content-type/i)); - }); - form._parseContentType(); - })(); - - (function testUnknownContentType() { - form.headers = {'content-type': 'invalid'}; - - gently.expect(form, '_error', function(err) { - assert.ok(err.message.match(/unknown content-type/i)); - }); - form._parseContentType(); - })(); -}); - -test(function parseContentLength() { - var HEADERS = {}; - - form.headers = {}; - gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { - assert.equal(event, 'progress'); - assert.equal(bytesReceived, 0); - assert.equal(bytesExpected, 0); - }); - form._parseContentLength(); - - form.headers['content-length'] = '8'; - gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { - assert.equal(event, 'progress'); - assert.equal(bytesReceived, 0); - assert.equal(bytesExpected, 8); - }); - form._parseContentLength(); - assert.strictEqual(form.bytesReceived, 0); - assert.strictEqual(form.bytesExpected, 8); - - // JS can be evil, lets make sure we are not - form.headers['content-length'] = '08'; - gently.expect(form, 'emit', function(event, bytesReceived, bytesExpected) { - assert.equal(event, 'progress'); - assert.equal(bytesReceived, 0); - assert.equal(bytesExpected, 8); - }); - form._parseContentLength(); - assert.strictEqual(form.bytesExpected, 8); -}); - -test(function _initMultipart() { - var BOUNDARY = '123', - PARSER; - - gently.expect(MultipartParserStub, 'new', function() { - PARSER = this; - }); - - gently.expect(MultipartParserStub.prototype, 'initWithBoundary', function(boundary) { - assert.equal(boundary, BOUNDARY); - }); - - form._initMultipart(BOUNDARY); - assert.equal(form.type, 'multipart'); - assert.strictEqual(form._parser, PARSER); - - (function testRegularField() { - var PART; - gently.expect(StreamStub, 'new', function() { - PART = this; - }); - - gently.expect(form, 'onPart', function(part) { - assert.strictEqual(part, PART); - assert.deepEqual - ( part.headers - , { 'content-disposition': 'form-data; name="field1"' - , 'foo': 'bar' - } - ); - assert.equal(part.name, 'field1'); - - var strings = ['hello', ' world']; - gently.expect(part, 'emit', 2, function(event, b) { - assert.equal(event, 'data'); - assert.equal(b.toString(), strings.shift()); - }); - - gently.expect(part, 'emit', function(event, b) { - assert.equal(event, 'end'); - }); - }); - - PARSER.onPartBegin(); - PARSER.onHeaderField(new Buffer('content-disposition'), 0, 10); - PARSER.onHeaderField(new Buffer('content-disposition'), 10, 19); - PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 0, 14); - PARSER.onHeaderValue(new Buffer('form-data; name="field1"'), 14, 24); - PARSER.onHeaderEnd(); - PARSER.onHeaderField(new Buffer('foo'), 0, 3); - PARSER.onHeaderValue(new Buffer('bar'), 0, 3); - PARSER.onHeaderEnd(); - PARSER.onHeadersEnd(); - PARSER.onPartData(new Buffer('hello world'), 0, 5); - PARSER.onPartData(new Buffer('hello world'), 5, 11); - PARSER.onPartEnd(); - })(); - - (function testFileField() { - var PART; - gently.expect(StreamStub, 'new', function() { - PART = this; - }); - - gently.expect(form, 'onPart', function(part) { - assert.deepEqual - ( part.headers - , { 'content-disposition': 'form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"' - , 'content-type': 'text/plain' - } - ); - assert.equal(part.name, 'field2'); - assert.equal(part.filename, 'Sun"et.jpg'); - assert.equal(part.mime, 'text/plain'); - - gently.expect(part, 'emit', function(event, b) { - assert.equal(event, 'data'); - assert.equal(b.toString(), '... contents of file1.txt ...'); - }); - - gently.expect(part, 'emit', function(event, b) { - assert.equal(event, 'end'); - }); - }); - - PARSER.onPartBegin(); - PARSER.onHeaderField(new Buffer('content-disposition'), 0, 19); - PARSER.onHeaderValue(new Buffer('form-data; name="field2"; filename="C:\\Documents and Settings\\IE\\Must\\Die\\Sun"et.jpg"'), 0, 85); - PARSER.onHeaderEnd(); - PARSER.onHeaderField(new Buffer('Content-Type'), 0, 12); - PARSER.onHeaderValue(new Buffer('text/plain'), 0, 10); - PARSER.onHeaderEnd(); - PARSER.onHeadersEnd(); - PARSER.onPartData(new Buffer('... contents of file1.txt ...'), 0, 29); - PARSER.onPartEnd(); - })(); - - (function testEnd() { - gently.expect(form, '_maybeEnd'); - PARSER.onEnd(); - assert.ok(form.ended); - })(); -}); - -test(function _fileName() { - // TODO - return; -}); - -test(function _initUrlencoded() { - var PARSER; - - gently.expect(QuerystringParserStub, 'new', function() { - PARSER = this; - }); - - form._initUrlencoded(); - assert.equal(form.type, 'urlencoded'); - assert.strictEqual(form._parser, PARSER); - - (function testOnField() { - var KEY = 'KEY', VAL = 'VAL'; - gently.expect(form, 'emit', function(field, key, val) { - assert.equal(field, 'field'); - assert.equal(key, KEY); - assert.equal(val, VAL); - }); - - PARSER.onField(KEY, VAL); - })(); - - (function testOnEnd() { - gently.expect(form, '_maybeEnd'); - - PARSER.onEnd(); - assert.equal(form.ended, true); - })(); -}); - -test(function _error() { - var ERR = new Error('bla'); - - gently.expect(form, 'pause'); - gently.expect(form, 'emit', function(event, err) { - assert.equal(event, 'error'); - assert.strictEqual(err, ERR); - }); - - form._error(ERR); - assert.strictEqual(form.error, ERR); - - // make sure _error only does its thing once - form._error(ERR); -}); - -test(function onPart() { - var PART = {}; - gently.expect(form, 'handlePart', function(part) { - assert.strictEqual(part, PART); - }); - - form.onPart(PART); -}); - -test(function handlePart() { - (function testUtf8Field() { - var PART = new events.EventEmitter(); - PART.name = 'my_field'; - - gently.expect(form, 'emit', function(event, field, value) { - assert.equal(event, 'field'); - assert.equal(field, 'my_field'); - assert.equal(value, 'hello world: €'); - }); - - form.handlePart(PART); - PART.emit('data', new Buffer('hello')); - PART.emit('data', new Buffer(' world: ')); - PART.emit('data', new Buffer([0xE2])); - PART.emit('data', new Buffer([0x82, 0xAC])); - PART.emit('end'); - })(); - - (function testBinaryField() { - var PART = new events.EventEmitter(); - PART.name = 'my_field2'; - - gently.expect(form, 'emit', function(event, field, value) { - assert.equal(event, 'field'); - assert.equal(field, 'my_field2'); - assert.equal(value, 'hello world: '+new Buffer([0xE2, 0x82, 0xAC]).toString('binary')); - }); - - form.encoding = 'binary'; - form.handlePart(PART); - PART.emit('data', new Buffer('hello')); - PART.emit('data', new Buffer(' world: ')); - PART.emit('data', new Buffer([0xE2])); - PART.emit('data', new Buffer([0x82, 0xAC])); - PART.emit('end'); - })(); - - (function testFieldSize() { - form.maxFieldsSize = 8; - var PART = new events.EventEmitter(); - PART.name = 'my_field'; - - gently.expect(form, '_error', function(err) { - assert.equal(err.message, 'maxFieldsSize exceeded, received 9 bytes of field data'); - }); - - form.handlePart(PART); - form._fieldsSize = 1; - PART.emit('data', new Buffer(7)); - PART.emit('data', new Buffer(1)); - })(); - - (function testFilePart() { - var PART = new events.EventEmitter(), - FILE = new events.EventEmitter(), - PATH = '/foo/bar'; - - PART.name = 'my_file'; - PART.filename = 'sweet.txt'; - PART.mime = 'sweet.txt'; - - gently.expect(form, '_uploadPath', function(filename) { - assert.equal(filename, PART.filename); - return PATH; - }); - - gently.expect(FileStub, 'new', function(properties) { - assert.equal(properties.path, PATH); - assert.equal(properties.name, PART.filename); - assert.equal(properties.type, PART.mime); - FILE = this; - - gently.expect(form, 'emit', function (event, field, file) { - assert.equal(event, 'fileBegin'); - assert.strictEqual(field, PART.name); - assert.strictEqual(file, FILE); - }); - - gently.expect(FILE, 'open'); - }); - - form.handlePart(PART); - assert.equal(form._flushing, 1); - - var BUFFER; - gently.expect(form, 'pause'); - gently.expect(FILE, 'write', function(buffer, cb) { - assert.strictEqual(buffer, BUFFER); - gently.expect(form, 'resume'); - // @todo handle cb(new Err) - cb(); - }); - - PART.emit('data', BUFFER = new Buffer('test')); - - gently.expect(FILE, 'end', function(cb) { - gently.expect(form, 'emit', function(event, field, file) { - assert.equal(event, 'file'); - assert.strictEqual(file, FILE); - }); - - gently.expect(form, '_maybeEnd'); - - cb(); - assert.equal(form._flushing, 0); - }); - - PART.emit('end'); - })(); -}); - -test(function _uploadPath() { - (function testUniqueId() { - var UUID_A, UUID_B; - gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { - assert.equal(uploadDir, form.uploadDir); - UUID_A = uuid; - }); - form._uploadPath(); - - gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, uuid) { - UUID_B = uuid; - }); - form._uploadPath(); - - assert.notEqual(UUID_A, UUID_B); - })(); - - (function testFileExtension() { - form.keepExtensions = true; - var FILENAME = 'foo.jpg', - EXT = '.bar'; - - gently.expect(GENTLY.hijacked.path, 'extname', function(filename) { - assert.equal(filename, FILENAME); - gently.restore(path, 'extname'); - - return EXT; - }); - - gently.expect(GENTLY.hijacked.path, 'join', function(uploadDir, name) { - assert.equal(path.extname(name), EXT); - }); - form._uploadPath(FILENAME); - })(); -}); - -test(function _maybeEnd() { - gently.expect(form, 'emit', 0); - form._maybeEnd(); - - form.ended = true; - form._flushing = 1; - form._maybeEnd(); - - gently.expect(form, 'emit', function(event) { - assert.equal(event, 'end'); - }); - - form.ended = true; - form._flushing = 0; - form._maybeEnd(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js deleted file mode 100644 index bf2cd5e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-multipart-parser.js +++ /dev/null @@ -1,50 +0,0 @@ -var common = require('../common'); -var multipartParser = require(common.lib + '/multipart_parser'), - MultipartParser = multipartParser.MultipartParser, - events = require('events'), - Buffer = require('buffer').Buffer, - parser; - -function test(test) { - parser = new MultipartParser(); - test(); -} - -test(function constructor() { - assert.equal(parser.boundary, null); - assert.equal(parser.state, 0); - assert.equal(parser.flags, 0); - assert.equal(parser.boundaryChars, null); - assert.equal(parser.index, null); - assert.equal(parser.lookbehind, null); - assert.equal(parser.constructor.name, 'MultipartParser'); -}); - -test(function initWithBoundary() { - var boundary = 'abc'; - parser.initWithBoundary(boundary); - assert.deepEqual(Array.prototype.slice.call(parser.boundary), [13, 10, 45, 45, 97, 98, 99]); - assert.equal(parser.state, multipartParser.START); - - assert.deepEqual(parser.boundaryChars, {10: true, 13: true, 45: true, 97: true, 98: true, 99: true}); -}); - -test(function parserError() { - var boundary = 'abc', - buffer = new Buffer(5); - - parser.initWithBoundary(boundary); - buffer.write('--ad', 'ascii', 0); - assert.equal(parser.write(buffer), 5); -}); - -test(function end() { - (function testError() { - assert.equal(parser.end().message, 'MultipartParser.end(): stream ended unexpectedly: ' + parser.explain()); - })(); - - (function testRegular() { - parser.state = multipartParser.END; - assert.strictEqual(parser.end(), undefined); - })(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js deleted file mode 100644 index 54d3e2d..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/simple/test-querystring-parser.js +++ /dev/null @@ -1,45 +0,0 @@ -var common = require('../common'); -var QuerystringParser = require(common.lib + '/querystring_parser').QuerystringParser, - Buffer = require('buffer').Buffer, - gently, - parser; - -function test(test) { - gently = new Gently(); - parser = new QuerystringParser(); - test(); - gently.verify(test.name); -} - -test(function constructor() { - assert.equal(parser.buffer, ''); - assert.equal(parser.constructor.name, 'QuerystringParser'); -}); - -test(function write() { - var a = new Buffer('a=1'); - assert.equal(parser.write(a), a.length); - - var b = new Buffer('&b=2'); - parser.write(b); - assert.equal(parser.buffer, a + b); -}); - -test(function end() { - var FIELDS = {a: ['b', {c: 'd'}], e: 'f'}; - - gently.expect(GENTLY.hijacked.querystring, 'parse', function(str) { - assert.equal(str, parser.buffer); - return FIELDS; - }); - - gently.expect(parser, 'onField', Object.keys(FIELDS).length, function(key, val) { - assert.deepEqual(FIELDS[key], val); - }); - - gently.expect(parser, 'onEnd'); - - parser.buffer = 'my buffer'; - parser.end(); - assert.equal(parser.buffer, ''); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js deleted file mode 100644 index b35ffd6..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/legacy/system/test-multi-video-upload.js +++ /dev/null @@ -1,71 +0,0 @@ -var common = require('../common'); -var BOUNDARY = '---------------------------10102754414578508781458777923', - FIXTURE = TEST_FIXTURES+'/multi_video.upload', - fs = require('fs'), - http = require('http'), - formidable = require(common.lib + '/index'), - server = http.createServer(); - -server.on('request', function(req, res) { - var form = new formidable.IncomingForm(), - uploads = {}; - - form.uploadDir = TEST_TMP; - form.hash = 'sha1'; - form.parse(req); - - form - .on('fileBegin', function(field, file) { - assert.equal(field, 'upload'); - - var tracker = {file: file, progress: [], ended: false}; - uploads[file.name] = tracker; - file - .on('progress', function(bytesReceived) { - tracker.progress.push(bytesReceived); - assert.equal(bytesReceived, file.size); - }) - .on('end', function() { - tracker.ended = true; - }); - }) - .on('field', function(field, value) { - assert.equal(field, 'title'); - assert.equal(value, ''); - }) - .on('file', function(field, file) { - assert.equal(field, 'upload'); - assert.strictEqual(uploads[file.name].file, file); - }) - .on('end', function() { - assert.ok(uploads['shortest_video.flv']); - assert.ok(uploads['shortest_video.flv'].ended); - assert.ok(uploads['shortest_video.flv'].progress.length > 3); - assert.equal(uploads['shortest_video.flv'].file.hash, 'd6a17616c7143d1b1438ceeef6836d1a09186b3a'); - assert.equal(uploads['shortest_video.flv'].progress.slice(-1), uploads['shortest_video.flv'].file.size); - assert.ok(uploads['shortest_video.mp4']); - assert.ok(uploads['shortest_video.mp4'].ended); - assert.ok(uploads['shortest_video.mp4'].progress.length > 3); - assert.equal(uploads['shortest_video.mp4'].file.hash, '937dfd4db263f4887ceae19341dcc8d63bcd557f'); - - server.close(); - res.writeHead(200); - res.end('good'); - }); -}); - -server.listen(TEST_PORT, function() { - var stat, headers, request, fixture; - - stat = fs.statSync(FIXTURE); - request = http.request({ - port: TEST_PORT, - path: '/', - method: 'POST', - headers: { - 'content-type': 'multipart/form-data; boundary='+BOUNDARY, - 'content-length': stat.size, - }, - }); - fs.createReadStream(FIXTURE).pipe(request); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js deleted file mode 100644 index 02d6d5c..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/run.js +++ /dev/null @@ -1 +0,0 @@ -require('urun')(__dirname) diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js deleted file mode 100644 index 4ea4431..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-connection-aborted.js +++ /dev/null @@ -1,27 +0,0 @@ -var assert = require('assert'); -var http = require('http'); -var net = require('net'); -var formidable = require('../../lib/index'); - -var server = http.createServer(function (req, res) { - var form = new formidable.IncomingForm(); - var aborted_received = false; - form.on('aborted', function () { - aborted_received = true; - }); - form.on('error', function () { - assert(aborted_received, 'Error event should follow aborted'); - server.close(); - }); - form.on('end', function () { - throw new Error('Unexpected "end" event'); - }); - form.parse(req); -}).listen(0, 'localhost', function () { - var client = net.connect(server.address().port); - client.write( - "POST / HTTP/1.1\r\n" + - "Content-Length: 70\r\n" + - "Content-Type: multipart/form-data; boundary=foo\r\n\r\n"); - client.end(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js deleted file mode 100644 index 165628a..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-content-transfer-encoding.js +++ /dev/null @@ -1,48 +0,0 @@ -var assert = require('assert'); -var common = require('../common'); -var formidable = require('../../lib/index'); -var http = require('http'); - -var server = http.createServer(function(req, res) { - var form = new formidable.IncomingForm(); - form.uploadDir = common.dir.tmp; - form.on('end', function () { - throw new Error('Unexpected "end" event'); - }); - form.on('error', function (e) { - res.writeHead(500); - res.end(e.message); - }); - form.parse(req); -}); - -server.listen(0, function() { - var body = - '--foo\r\n' + - 'Content-Disposition: form-data; name="file1"; filename="file1"\r\n' + - 'Content-Type: application/octet-stream\r\n' + - '\r\nThis is the first file\r\n' + - '--foo\r\n' + - 'Content-Type: application/octet-stream\r\n' + - 'Content-Disposition: form-data; name="file2"; filename="file2"\r\n' + - 'Content-Transfer-Encoding: unknown\r\n' + - '\r\nThis is the second file\r\n' + - '--foo--\r\n'; - - var req = http.request({ - method: 'POST', - port: server.address().port, - headers: { - 'Content-Length': body.length, - 'Content-Type': 'multipart/form-data; boundary=foo' - } - }); - req.on('response', function (res) { - assert.equal(res.statusCode, 500); - res.on('data', function () {}); - res.on('end', function () { - server.close(); - }); - }); - req.end(body); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js deleted file mode 100644 index 1939328..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/standalone/test-issue-46.js +++ /dev/null @@ -1,49 +0,0 @@ -var http = require('http'), - formidable = require('../../lib/index'), - request = require('request'), - assert = require('assert'); - -var host = 'localhost'; - -var index = [ - '
        ', - ' ', - ' ', - '
        ' -].join("\n"); - -var server = http.createServer(function(req, res) { - - // Show a form for testing purposes. - if (req.method == 'GET') { - res.writeHead(200, {'content-type': 'text/html'}); - res.end(index); - return; - } - - // Parse form and write results to response. - var form = new formidable.IncomingForm(); - form.parse(req, function(err, fields, files) { - res.writeHead(200, {'content-type': 'text/plain'}); - res.write(JSON.stringify({err: err, fields: fields, files: files})); - res.end(); - }); - -}).listen(0, host, function() { - - console.log("Server up and running..."); - - var server = this, - url = 'http://' + host + ':' + server.address().port; - - var parts = [ - {'Content-Disposition': 'form-data; name="foo"', 'body': 'bar'} - ] - - var req = request({method: 'POST', url: url, multipart: parts}, function(e, res, body) { - var obj = JSON.parse(body); - assert.equal("bar", obj.fields.foo); - server.close(); - }); - -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html deleted file mode 100644 index 48ad92e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/tools/base64.html +++ /dev/null @@ -1,67 +0,0 @@ - - - Convert a file to a base64 request - - - - - - - -
        -
        -
        -
        -
        -
        -

        -Don't forget to save the output with windows (CRLF) line endings! -

        - - - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js deleted file mode 100644 index fc8f36e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-file.js +++ /dev/null @@ -1,33 +0,0 @@ -var common = require('../common'); -var test = require('utest'); -var assert = common.assert; -var File = common.require('file'); - -var file; -var now = new Date; -test('IncomingForm', { - before: function() { - file = new File({ - size: 1024, - path: '/tmp/cat.png', - name: 'cat.png', - type: 'image/png', - lastModifiedDate: now, - filename: 'cat.png', - mime: 'image/png' - }) - }, - - '#toJSON()': function() { - var obj = file.toJSON(); - var len = Object.keys(obj).length; - assert.equal(1024, obj.size); - assert.equal('/tmp/cat.png', obj.path); - assert.equal('cat.png', obj.name); - assert.equal('image/png', obj.type); - assert.equal('image/png', obj.mime); - assert.equal('cat.png', obj.filename); - assert.equal(now, obj.mtime); - assert.equal(len, 8); - } -}); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js deleted file mode 100644 index fe2ac1c..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/test/unit/test-incoming-form.js +++ /dev/null @@ -1,63 +0,0 @@ -var common = require('../common'); -var test = require('utest'); -var assert = common.assert; -var IncomingForm = common.require('incoming_form').IncomingForm; -var path = require('path'); - -var form; -test('IncomingForm', { - before: function() { - form = new IncomingForm(); - }, - - '#_fileName with regular characters': function() { - var filename = 'foo.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'foo.txt'); - }, - - '#_fileName with unescaped quote': function() { - var filename = 'my".txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); - }, - - '#_fileName with escaped quote': function() { - var filename = 'my%22.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my".txt'); - }, - - '#_fileName with bad quote and additional sub-header': function() { - var filename = 'my".txt'; - var header = makeHeader(filename) + '; foo="bar"'; - assert.equal(form._fileName(header), filename); - }, - - '#_fileName with semicolon': function() { - var filename = 'my;.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my;.txt'); - }, - - '#_fileName with utf8 character': function() { - var filename = 'my☃.txt'; - assert.equal(form._fileName(makeHeader(filename)), 'my☃.txt'); - }, - - '#_uploadPath strips harmful characters from extension when keepExtensions': function() { - form.keepExtensions = true; - - var ext = path.extname(form._uploadPath('fine.jpg?foo=bar')); - assert.equal(ext, '.jpg'); - - var ext = path.extname(form._uploadPath('fine?foo=bar')); - assert.equal(ext, ''); - - var ext = path.extname(form._uploadPath('super.cr2+dsad')); - assert.equal(ext, '.cr2'); - - var ext = path.extname(form._uploadPath('super.bar')); - assert.equal(ext, '.bar'); - }, -}); - -function makeHeader(filename) { - return 'Content-Disposition: form-data; name="upload"; filename="' + filename + '"'; -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js deleted file mode 100644 index 9f1cef8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/formidable/tool/record.js +++ /dev/null @@ -1,47 +0,0 @@ -var http = require('http'); -var fs = require('fs'); -var connections = 0; - -var server = http.createServer(function(req, res) { - var socket = req.socket; - console.log('Request: %s %s -> %s', req.method, req.url, socket.filename); - - req.on('end', function() { - if (req.url !== '/') { - res.end(JSON.stringify({ - method: req.method, - url: req.url, - filename: socket.filename, - })); - return; - } - - res.writeHead(200, {'content-type': 'text/html'}); - res.end( - '
        '+ - '
        '+ - '
        '+ - ''+ - '
        ' - ); - }); -}); - -server.on('connection', function(socket) { - connections++; - - socket.id = connections; - socket.filename = 'connection-' + socket.id + '.http'; - socket.file = fs.createWriteStream(socket.filename); - socket.pipe(socket.file); - - console.log('--> %s', socket.filename); - socket.on('close', function() { - console.log('<-- %s', socket.filename); - }); -}); - -var port = process.env.PORT || 8080; -server.listen(port, function() { - console.log('Recording connections on port %s', port); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md deleted file mode 100644 index c8aa68f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/History.md +++ /dev/null @@ -1,5 +0,0 @@ - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile deleted file mode 100644 index 4e9c8d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md deleted file mode 100644 index 1cdd68a..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/Readme.md +++ /dev/null @@ -1,29 +0,0 @@ - -# pause - - Pause streams... - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js deleted file mode 100644 index 1b7b379..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/index.js +++ /dev/null @@ -1,29 +0,0 @@ - -module.exports = function(obj){ - var onData - , onEnd - , events = []; - - // buffer data - obj.on('data', onData = function(data, encoding){ - events.push(['data', data, encoding]); - }); - - // buffer end - obj.on('end', onEnd = function(data, encoding){ - events.push(['end', data, encoding]); - }); - - return { - end: function(){ - obj.removeListener('data', onData); - obj.removeListener('end', onEnd); - }, - resume: function(){ - this.end(); - for (var i = 0, len = events.length; i < len; ++i) { - obj.emit.apply(obj, events[i]); - } - } - }; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json deleted file mode 100644 index 73cfe40..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/pause/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "pause", - "version": "0.0.1", - "description": "Pause streams...", - "keywords": [], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "main": "index", - "readme": "\n# pause\n\n Pause streams...\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "pause@0.0.1", - "_from": "pause@0.0.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules deleted file mode 100644 index 49e31da..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "support/expresso"] - path = support/expresso - url = git://github.com/visionmedia/expresso.git -[submodule "support/should"] - path = support/should - url = git://github.com/visionmedia/should.js.git diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore deleted file mode 100644 index e85ce2a..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/.npmignore +++ /dev/null @@ -1,7 +0,0 @@ -test -.travis.yml -benchmark.js -component.json -examples.js -History.md -Makefile diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md deleted file mode 100644 index 27e54a4..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/Readme.md +++ /dev/null @@ -1,58 +0,0 @@ -# node-querystring - - query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others. - -## Installation - - $ npm install qs - -## Examples - -```js -var qs = require('qs'); - -qs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com'); -// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } } - -qs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }}) -// => user[name]=Tobi&user[email]=tobi%40learnboost.com -``` - -## Testing - -Install dev dependencies: - - $ npm install -d - -and execute: - - $ make test - -browser: - - $ open test/browser/index.html - -## License - -(The MIT License) - -Copyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js deleted file mode 100644 index 590491e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/index.js +++ /dev/null @@ -1,387 +0,0 @@ -/** - * Object#toString() ref for stringify(). - */ - -var toString = Object.prototype.toString; - -/** - * Object#hasOwnProperty ref - */ - -var hasOwnProperty = Object.prototype.hasOwnProperty; - -/** - * Array#indexOf shim. - */ - -var indexOf = typeof Array.prototype.indexOf === 'function' - ? function(arr, el) { return arr.indexOf(el); } - : function(arr, el) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === el) return i; - } - return -1; - }; - -/** - * Array.isArray shim. - */ - -var isArray = Array.isArray || function(arr) { - return toString.call(arr) == '[object Array]'; -}; - -/** - * Object.keys shim. - */ - -var objectKeys = Object.keys || function(obj) { - var ret = []; - for (var key in obj) ret.push(key); - return ret; -}; - -/** - * Array#forEach shim. - */ - -var forEach = typeof Array.prototype.forEach === 'function' - ? function(arr, fn) { return arr.forEach(fn); } - : function(arr, fn) { - for (var i = 0; i < arr.length; i++) fn(arr[i]); - }; - -/** - * Array#reduce shim. - */ - -var reduce = function(arr, fn, initial) { - if (typeof arr.reduce === 'function') return arr.reduce(fn, initial); - var res = initial; - for (var i = 0; i < arr.length; i++) res = fn(res, arr[i]); - return res; -}; - -/** - * Create a nullary object if possible - */ - -function createObject() { - return Object.create - ? Object.create(null) - : {}; -} - -/** - * Cache non-integer test regexp. - */ - -var isint = /^[0-9]+$/; - -function promote(parent, key) { - if (parent[key].length == 0) return parent[key] = createObject(); - var t = createObject(); - for (var i in parent[key]) { - if (hasOwnProperty.call(parent[key], i)) { - t[i] = parent[key][i]; - } - } - parent[key] = t; - return t; -} - -function parse(parts, parent, key, val) { - var part = parts.shift(); - // end - if (!part) { - if (isArray(parent[key])) { - parent[key].push(val); - } else if ('object' == typeof parent[key]) { - parent[key] = val; - } else if ('undefined' == typeof parent[key]) { - parent[key] = val; - } else { - parent[key] = [parent[key], val]; - } - // array - } else { - var obj = parent[key] = parent[key] || []; - if (']' == part) { - if (isArray(obj)) { - if ('' != val) obj.push(val); - } else if ('object' == typeof obj) { - obj[objectKeys(obj).length] = val; - } else { - obj = parent[key] = [parent[key], val]; - } - // prop - } else if (~indexOf(part, ']')) { - part = part.substr(0, part.length - 1); - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - // key - } else { - if (!isint.test(part) && isArray(obj)) obj = promote(parent, key); - parse(parts, obj, part, val); - } - } -} - -/** - * Merge parent key/val pair. - */ - -function merge(parent, key, val){ - if (~indexOf(key, ']')) { - var parts = key.split('[') - , len = parts.length - , last = len - 1; - parse(parts, parent, 'base', val); - // optimize - } else { - if (!isint.test(key) && isArray(parent.base)) { - var t = createObject(); - for (var k in parent.base) t[k] = parent.base[k]; - parent.base = t; - } - set(parent.base, key, val); - } - - return parent; -} - -/** - * Compact sparse arrays. - */ - -function compact(obj) { - if ('object' != typeof obj) return obj; - - if (isArray(obj)) { - var ret = []; - - for (var i in obj) { - if (hasOwnProperty.call(obj, i)) { - ret.push(obj[i]); - } - } - - return ret; - } - - for (var key in obj) { - obj[key] = compact(obj[key]); - } - - return obj; -} - -/** - * Restore Object.prototype. - * see pull-request #58 - */ - -function restoreProto(obj) { - if (!Object.create) return obj; - if (isArray(obj)) return obj; - if (obj && 'object' != typeof obj) return obj; - - for (var key in obj) { - if (hasOwnProperty.call(obj, key)) { - obj[key] = restoreProto(obj[key]); - } - } - - obj.__proto__ = Object.prototype; - return obj; -} - -/** - * Parse the given obj. - */ - -function parseObject(obj){ - var ret = { base: {} }; - - forEach(objectKeys(obj), function(name){ - merge(ret, name, obj[name]); - }); - - return compact(ret.base); -} - -/** - * Parse the given str. - */ - -function parseString(str){ - var ret = reduce(String(str).split('&'), function(ret, pair){ - var eql = indexOf(pair, '=') - , brace = lastBraceInKey(pair) - , key = pair.substr(0, brace || eql) - , val = pair.substr(brace || eql, pair.length) - , val = val.substr(indexOf(val, '=') + 1, val.length); - - // ?foo - if ('' == key) key = pair, val = ''; - if ('' == key) return ret; - - return merge(ret, decode(key), decode(val)); - }, { base: createObject() }).base; - - return restoreProto(compact(ret)); -} - -/** - * Parse the given query `str` or `obj`, returning an object. - * - * @param {String} str | {Object} obj - * @return {Object} - * @api public - */ - -exports.parse = function(str){ - if (null == str || '' == str) return {}; - return 'object' == typeof str - ? parseObject(str) - : parseString(str); -}; - -/** - * Turn the given `obj` into a query string - * - * @param {Object} obj - * @return {String} - * @api public - */ - -var stringify = exports.stringify = function(obj, prefix) { - if (isArray(obj)) { - return stringifyArray(obj, prefix); - } else if ('[object Object]' == toString.call(obj)) { - return stringifyObject(obj, prefix); - } else if ('string' == typeof obj) { - return stringifyString(obj, prefix); - } else { - return prefix + '=' + encodeURIComponent(String(obj)); - } -}; - -/** - * Stringify the given `str`. - * - * @param {String} str - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyString(str, prefix) { - if (!prefix) throw new TypeError('stringify expects an object'); - return prefix + '=' + encodeURIComponent(str); -} - -/** - * Stringify the given `arr`. - * - * @param {Array} arr - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyArray(arr, prefix) { - var ret = []; - if (!prefix) throw new TypeError('stringify expects an object'); - for (var i = 0; i < arr.length; i++) { - ret.push(stringify(arr[i], prefix + '[' + i + ']')); - } - return ret.join('&'); -} - -/** - * Stringify the given `obj`. - * - * @param {Object} obj - * @param {String} prefix - * @return {String} - * @api private - */ - -function stringifyObject(obj, prefix) { - var ret = [] - , keys = objectKeys(obj) - , key; - - for (var i = 0, len = keys.length; i < len; ++i) { - key = keys[i]; - if ('' == key) continue; - if (null == obj[key]) { - ret.push(encodeURIComponent(key) + '='); - } else { - ret.push(stringify(obj[key], prefix - ? prefix + '[' + encodeURIComponent(key) + ']' - : encodeURIComponent(key))); - } - } - - return ret.join('&'); -} - -/** - * Set `obj`'s `key` to `val` respecting - * the weird and wonderful syntax of a qs, - * where "foo=bar&foo=baz" becomes an array. - * - * @param {Object} obj - * @param {String} key - * @param {String} val - * @api private - */ - -function set(obj, key, val) { - var v = obj[key]; - if (undefined === v) { - obj[key] = val; - } else if (isArray(v)) { - v.push(val); - } else { - obj[key] = [v, val]; - } -} - -/** - * Locate last brace in `str` within the key. - * - * @param {String} str - * @return {Number} - * @api private - */ - -function lastBraceInKey(str) { - var len = str.length - , brace - , c; - for (var i = 0; i < len; ++i) { - c = str[i]; - if (']' == c) brace = false; - if ('[' == c) brace = true; - if ('=' == c && !brace) return i; - } -} - -/** - * Decode `str`. - * - * @param {String} str - * @return {String} - * @api private - */ - -function decode(str) { - try { - return decodeURIComponent(str.replace(/\+/g, ' ')); - } catch (err) { - return str; - } -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json deleted file mode 100644 index c11401b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/node_modules/qs/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "qs", - "description": "querystring parser", - "version": "0.6.5", - "keywords": [ - "query string", - "parser", - "component" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/node-querystring.git" - }, - "devDependencies": { - "mocha": "*", - "expect.js": "*" - }, - "scripts": { - "test": "make test" - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "main": "index", - "engines": { - "node": "*" - }, - "readme": "# node-querystring\n\n query string parser for node and the browser supporting nesting, as it was removed from `0.3.x`, so this library provides the previous and commonly desired behaviour (and twice as fast). Used by [express](http://expressjs.com), [connect](http://senchalabs.github.com/connect) and others.\n\n## Installation\n\n $ npm install qs\n\n## Examples\n\n```js\nvar qs = require('qs');\n\nqs.parse('user[name][first]=Tobi&user[email]=tobi@learnboost.com');\n// => { user: { name: { first: 'Tobi' }, email: 'tobi@learnboost.com' } }\n\nqs.stringify({ user: { name: 'Tobi', email: 'tobi@learnboost.com' }})\n// => user[name]=Tobi&user[email]=tobi%40learnboost.com\n```\n\n## Testing\n\nInstall dev dependencies:\n\n $ npm install -d\n\nand execute:\n\n $ make test\n\nbrowser:\n\n $ open test/browser/index.html\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/node-querystring/issues" - }, - "_id": "qs@0.6.5", - "_from": "qs@0.6.5" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json deleted file mode 100644 index 3d992a1..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/package.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "name": "connect", - "version": "2.7.10", - "description": "High performance middleware framework", - "keywords": [ - "framework", - "web", - "middleware", - "connect", - "rack" - ], - "repository": { - "type": "git", - "url": "git://github.com/senchalabs/connect.git" - }, - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "dependencies": { - "qs": "0.6.5", - "formidable": "1.0.14", - "cookie-signature": "1.0.1", - "buffer-crc32": "0.2.1", - "cookie": "0.0.5", - "send": "0.1.0", - "bytes": "0.2.0", - "fresh": "0.1.0", - "pause": "0.0.1", - "debug": "*" - }, - "devDependencies": { - "should": "*", - "mocha": "*", - "jade": "*", - "dox": "*" - }, - "main": "index", - "engines": { - "node": ">= 0.8.0" - }, - "scripts": { - "test": "make" - }, - "readme": "[![build status](https://secure.travis-ci.org/senchalabs/connect.png)](http://travis-ci.org/senchalabs/connect)\n# Connect\n\n Connect is an extensible HTTP server framework for [node](http://nodejs.org), providing high performance \"plugins\" known as _middleware_.\n\n Connect is bundled with over _20_ commonly used middleware, including\n a logger, session support, cookie parser, and [more](http://senchalabs.github.com/connect). Be sure to view the 2.x [documentation](http://senchalabs.github.com/connect/).\n\n```js\nvar connect = require('connect')\n , http = require('http');\n\nvar app = connect()\n .use(connect.favicon())\n .use(connect.logger('dev'))\n .use(connect.static('public'))\n .use(connect.directory('public'))\n .use(connect.cookieParser())\n .use(connect.session({ secret: 'my secret here' }))\n .use(function(req, res){\n res.end('Hello from Connect!\\n');\n });\n\nhttp.createServer(app).listen(3000);\n```\n\n## Middleware\n\n - [csrf](http://www.senchalabs.org/connect/csrf.html)\n - [basicAuth](http://www.senchalabs.org/connect/basicAuth.html)\n - [bodyParser](http://www.senchalabs.org/connect/bodyParser.html)\n - [json](http://www.senchalabs.org/connect/json.html)\n - [multipart](http://www.senchalabs.org/connect/multipart.html)\n - [urlencoded](http://www.senchalabs.org/connect/urlencoded.html)\n - [cookieParser](http://www.senchalabs.org/connect/cookieParser.html)\n - [directory](http://www.senchalabs.org/connect/directory.html)\n - [compress](http://www.senchalabs.org/connect/compress.html)\n - [errorHandler](http://www.senchalabs.org/connect/errorHandler.html)\n - [favicon](http://www.senchalabs.org/connect/favicon.html)\n - [limit](http://www.senchalabs.org/connect/limit.html)\n - [logger](http://www.senchalabs.org/connect/logger.html)\n - [methodOverride](http://www.senchalabs.org/connect/methodOverride.html)\n - [query](http://www.senchalabs.org/connect/query.html)\n - [responseTime](http://www.senchalabs.org/connect/responseTime.html)\n - [session](http://www.senchalabs.org/connect/session.html)\n - [static](http://www.senchalabs.org/connect/static.html)\n - [staticCache](http://www.senchalabs.org/connect/staticCache.html)\n - [vhost](http://www.senchalabs.org/connect/vhost.html)\n - [subdomains](http://www.senchalabs.org/connect/subdomains.html)\n - [cookieSession](http://www.senchalabs.org/connect/cookieSession.html)\n\n## Running Tests\n\nfirst:\n\n $ npm install -d\n\nthen:\n\n $ make test\n\n## Authors\n\n Below is the output from [git-summary](http://github.com/visionmedia/git-extras).\n\n\n project: connect\n commits: 2033\n active : 301 days\n files : 171\n authors: \n 1414\tTj Holowaychuk 69.6%\n 298\tvisionmedia 14.7%\n 191\tTim Caswell 9.4%\n 51\tTJ Holowaychuk 2.5%\n 10\tRyan Olds 0.5%\n 8\tAstro 0.4%\n 5\tNathan Rajlich 0.2%\n 5\tJakub Nešetřil 0.2%\n 3\tDaniel Dickison 0.1%\n 3\tDavid Rio Deiros 0.1%\n 3\tAlexander Simmerl 0.1%\n 3\tAndreas Lind Petersen 0.1%\n 2\tAaron Heckmann 0.1%\n 2\tJacques Crocker 0.1%\n 2\tFabian Jakobs 0.1%\n 2\tBrian J Brennan 0.1%\n 2\tAdam Malcontenti-Wilson 0.1%\n 2\tGlen Mailer 0.1%\n 2\tJames Campos 0.1%\n 1\tTrent Mick 0.0%\n 1\tTroy Kruthoff 0.0%\n 1\tWei Zhu 0.0%\n 1\tcomerc 0.0%\n 1\tdarobin 0.0%\n 1\tnateps 0.0%\n 1\tMarco Sanson 0.0%\n 1\tArthur Taylor 0.0%\n 1\tAseem Kishore 0.0%\n 1\tBart Teeuwisse 0.0%\n 1\tCameron Howey 0.0%\n 1\tChad Weider 0.0%\n 1\tCraig Barnes 0.0%\n 1\tEran Hammer-Lahav 0.0%\n 1\tGregory McWhirter 0.0%\n 1\tGuillermo Rauch 0.0%\n 1\tJae Kwon 0.0%\n 1\tJakub Nesetril 0.0%\n 1\tJoshua Peek 0.0%\n 1\tJxck 0.0%\n 1\tAJ ONeal 0.0%\n 1\tMichael Hemesath 0.0%\n 1\tMorten Siebuhr 0.0%\n 1\tSamori Gorse 0.0%\n 1\tTom Jensen 0.0%\n\n## Node Compatibility\n\n Connect `< 1.x` is compatible with node 0.2.x\n\n\n Connect `1.x` is compatible with node 0.4.x\n\n\n Connect (_master_) `2.x` is compatible with node 0.6.x\n\n## CLA\n\n [http://sencha.com/cla](http://sencha.com/cla)\n\n## License\n\nView the [LICENSE](https://github.com/senchalabs/connect/blob/master/LICENSE) file. The [Silk](http://www.famfamfam.com/lab/icons/silk/) icons used by the `directory` middleware created by/copyright of [FAMFAMFAM](http://www.famfamfam.com/).\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/senchalabs/connect/issues" - }, - "_id": "connect@2.7.10", - "dist": { - "shasum": "498b2ed118a646a8eae38c99034f65f4cf9160d7" - }, - "_from": "connect@2.7.10", - "_resolved": "https://registry.npmjs.org/connect/-/connect-2.7.10.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js deleted file mode 100644 index 92b7003..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/connect/test.js +++ /dev/null @@ -1,40 +0,0 @@ - -var connect = require('./'); -var app = connect(); - -app.use(connect.logger('dev')); -app.use(connect.bodyParser()); - -app.use(function(req, res, next){ - if (req.checkContinue) { - res.writeContinue(); - } - res.end('hello'); -}); - -var server = app.listen(3000); - -server.on('checkContinue', function(req, res){ - req.checkContinue = true; - app(req, res); -}); - - -// var http = require('http'); - -// var app = http.createServer(function(req, res){ -// console.log(req.headers); -// }); - -// app.on('checkContinue', function(req, res){ -// if ('application/json' == req.headers['content-type']) { -// res.writeContinue(); -// console.log('ok'); -// res.end('thanks') -// } else { -// res.writeHead(400); -// res.end('bad request, json only'); -// } -// }); - -// app.listen(3000); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md deleted file mode 100644 index 9e30179..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/History.md +++ /dev/null @@ -1,11 +0,0 @@ - -1.0.1 / 2013-04-15 -================== - - * Revert "Changed underlying HMAC algo. to sha512." - * Revert "Fix for timing attacks on MAC verification." - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile deleted file mode 100644 index 4e9c8d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md deleted file mode 100644 index 2559e84..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/Readme.md +++ /dev/null @@ -1,42 +0,0 @@ - -# cookie-signature - - Sign and unsign cookies. - -## Example - -```js -var cookie = require('cookie-signature'); - -var val = cookie.sign('hello', 'tobiiscool'); -val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); - -var val = cookie.sign('hello', 'tobiiscool'); -cookie.unsign(val, 'tobiiscool').should.equal('hello'); -cookie.unsign(val, 'luna').should.be.false; -``` - -## License - -(The MIT License) - -Copyright (c) 2012 LearnBoost <tj@learnboost.com> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js deleted file mode 100644 index ed62814..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/index.js +++ /dev/null @@ -1,42 +0,0 @@ - -/** - * Module dependencies. - */ - -var crypto = require('crypto'); - -/** - * Sign the given `val` with `secret`. - * - * @param {String} val - * @param {String} secret - * @return {String} - * @api private - */ - -exports.sign = function(val, secret){ - if ('string' != typeof val) throw new TypeError('cookie required'); - if ('string' != typeof secret) throw new TypeError('secret required'); - return val + '.' + crypto - .createHmac('sha256', secret) - .update(val) - .digest('base64') - .replace(/\=+$/, ''); -}; - -/** - * Unsign and decode the given `val` with `secret`, - * returning `false` if the signature is invalid. - * - * @param {String} val - * @param {String} secret - * @return {String|Boolean} - * @api private - */ - -exports.unsign = function(val, secret){ - if ('string' != typeof val) throw new TypeError('cookie required'); - if ('string' != typeof secret) throw new TypeError('secret required'); - var str = val.slice(0, val.lastIndexOf('.')); - return exports.sign(str, secret) == val ? str : false; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json deleted file mode 100644 index 83bea32..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie-signature/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "cookie-signature", - "version": "1.0.1", - "description": "Sign and unsign cookies", - "keywords": [ - "cookie", - "sign", - "unsign" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@learnboost.com" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "main": "index", - "readme": "\n# cookie-signature\n\n Sign and unsign cookies.\n\n## Example\n\n```js\nvar cookie = require('cookie-signature');\n\nvar val = cookie.sign('hello', 'tobiiscool');\nval.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI');\n\nvar val = cookie.sign('hello', 'tobiiscool');\ncookie.unsign(val, 'tobiiscool').should.equal('hello');\ncookie.unsign(val, 'luna').should.be.false;\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 LearnBoost <tj@learnboost.com>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "cookie-signature@1.0.1", - "_from": "cookie-signature@1.0.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml deleted file mode 100644 index 9400c11..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "0.6" - - "0.8" - - "0.10" diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE deleted file mode 100644 index 249d9de..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -// MIT License - -Copyright (C) Roman Shtylman - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md deleted file mode 100644 index 5187ed1..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) # - -cookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers. - -See [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies. - -## how? - -``` -npm install cookie -``` - -```javascript -var cookie = require('cookie'); - -var hdr = cookie.serialize('foo', 'bar'); -// hdr = 'foo=bar'; - -var cookies = cookie.parse('foo=bar; cat=meow; dog=ruff'); -// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' }; -``` - -## more - -The serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values. - -### path -> cookie path - -### expires -> absolute expiration date for the cookie (Date object) - -### maxAge -> relative max age of the cookie from when the client receives it (seconds) - -### domain -> domain for the cookie - -### secure -> true or false - -### httpOnly -> true or false - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js deleted file mode 100644 index 16bdb65..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/index.js +++ /dev/null @@ -1,70 +0,0 @@ - -/// Serialize the a name value pair into a cookie string suitable for -/// http headers. An optional options object specified cookie parameters -/// -/// serialize('foo', 'bar', { httpOnly: true }) -/// => "foo=bar; httpOnly" -/// -/// @param {String} name -/// @param {String} val -/// @param {Object} options -/// @return {String} -var serialize = function(name, val, opt){ - opt = opt || {}; - var enc = opt.encode || encode; - var pairs = [name + '=' + enc(val)]; - - if (opt.maxAge) pairs.push('Max-Age=' + opt.maxAge); - if (opt.domain) pairs.push('Domain=' + opt.domain); - if (opt.path) pairs.push('Path=' + opt.path); - if (opt.expires) pairs.push('Expires=' + opt.expires.toUTCString()); - if (opt.httpOnly) pairs.push('HttpOnly'); - if (opt.secure) pairs.push('Secure'); - - return pairs.join('; '); -}; - -/// Parse the given cookie header string into an object -/// The object has the various cookies as keys(names) => values -/// @param {String} str -/// @return {Object} -var parse = function(str, opt) { - opt = opt || {}; - var obj = {} - var pairs = str.split(/[;,] */); - var dec = opt.decode || decode; - - pairs.forEach(function(pair) { - var eq_idx = pair.indexOf('=') - - // skip things that don't look like key=value - if (eq_idx < 0) { - return; - } - - var key = pair.substr(0, eq_idx).trim() - var val = pair.substr(++eq_idx, pair.length).trim(); - - // quoted values - if ('"' == val[0]) { - val = val.slice(1, -1); - } - - // only assign once - if (undefined == obj[key]) { - try { - obj[key] = dec(val); - } catch (e) { - obj[key] = val; - } - } - }); - - return obj; -}; - -var encode = encodeURIComponent; -var decode = decodeURIComponent; - -module.exports.serialize = serialize; -module.exports.parse = parse; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json deleted file mode 100644 index 99a390f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "author": { - "name": "Roman Shtylman", - "email": "shtylman@gmail.com" - }, - "name": "cookie", - "description": "cookie parsing and serialization", - "version": "0.1.0", - "repository": { - "type": "git", - "url": "git://github.com/shtylman/node-cookie.git" - }, - "keywords": [ - "cookie", - "cookies" - ], - "main": "index.js", - "scripts": { - "test": "mocha" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "1.x.x" - }, - "optionalDependencies": {}, - "engines": { - "node": "*" - }, - "readme": "# cookie [![Build Status](https://secure.travis-ci.org/shtylman/node-cookie.png?branch=master)](http://travis-ci.org/shtylman/node-cookie) #\n\ncookie is a basic cookie parser and serializer. It doesn't make assumptions about how you are going to deal with your cookies. It basically just provides a way to read and write the HTTP cookie headers.\n\nSee [RFC6265](http://tools.ietf.org/html/rfc6265) for details about the http header for cookies.\n\n## how?\n\n```\nnpm install cookie\n```\n\n```javascript\nvar cookie = require('cookie');\n\nvar hdr = cookie.serialize('foo', 'bar');\n// hdr = 'foo=bar';\n\nvar cookies = cookie.parse('foo=bar; cat=meow; dog=ruff');\n// cookies = { foo: 'bar', cat: 'meow', dog: 'ruff' };\n```\n\n## more\n\nThe serialize function takes a third parameter, an object, to set cookie options. See the RFC for valid values.\n\n### path\n> cookie path\n\n### expires\n> absolute expiration date for the cookie (Date object)\n\n### maxAge\n> relative max age of the cookie from when the client receives it (seconds)\n\n### domain\n> domain for the cookie\n\n### secure\n> true or false\n\n### httpOnly\n> true or false\n\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/shtylman/node-cookie/issues" - }, - "_id": "cookie@0.1.0", - "_from": "cookie@0.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts deleted file mode 100644 index e2bfcc5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---ui qunit diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js deleted file mode 100644 index c6c27a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/parse.js +++ /dev/null @@ -1,44 +0,0 @@ - -var assert = require('assert'); - -var cookie = require('..'); - -suite('parse'); - -test('basic', function() { - assert.deepEqual({ foo: 'bar' }, cookie.parse('foo=bar')); - assert.deepEqual({ foo: '123' }, cookie.parse('foo=123')); -}); - -test('ignore spaces', function() { - assert.deepEqual({ FOO: 'bar', baz: 'raz' }, - cookie.parse('FOO = bar; baz = raz')); -}); - -test('escaping', function() { - assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' }, - cookie.parse('foo="bar=123456789&name=Magic+Mouse"')); - - assert.deepEqual({ email: ' ",;/' }, - cookie.parse('email=%20%22%2c%3b%2f')); -}); - -test('ignore escaping error and return original value', function() { - assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar')); -}); - -test('ignore non values', function() { - assert.deepEqual({ foo: '%1', bar: 'bar' }, cookie.parse('foo=%1;bar=bar;HttpOnly;Secure')); -}); - -test('unencoded', function() { - assert.deepEqual({ foo: 'bar=123456789&name=Magic+Mouse' }, - cookie.parse('foo="bar=123456789&name=Magic+Mouse"',{ - decode: function(value) { return value; } - })); - - assert.deepEqual({ email: '%20%22%2c%3b%2f' }, - cookie.parse('email=%20%22%2c%3b%2f',{ - decode: function(value) { return value; } - })); -}) diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js deleted file mode 100644 index 86bb8c9..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/cookie/test/serialize.js +++ /dev/null @@ -1,64 +0,0 @@ -// builtin -var assert = require('assert'); - -var cookie = require('..'); - -suite('serialize'); - -test('basic', function() { - assert.equal('foo=bar', cookie.serialize('foo', 'bar')); - assert.equal('foo=bar%20baz', cookie.serialize('foo', 'bar baz')); -}); - -test('path', function() { - assert.equal('foo=bar; Path=/', cookie.serialize('foo', 'bar', { - path: '/' - })); -}); - -test('secure', function() { - assert.equal('foo=bar; Secure', cookie.serialize('foo', 'bar', { - secure: true - })); - - assert.equal('foo=bar', cookie.serialize('foo', 'bar', { - secure: false - })); -}); - -test('domain', function() { - assert.equal('foo=bar; Domain=example.com', cookie.serialize('foo', 'bar', { - domain: 'example.com' - })); -}); - -test('httpOnly', function() { - assert.equal('foo=bar; HttpOnly', cookie.serialize('foo', 'bar', { - httpOnly: true - })); -}); - -test('maxAge', function() { - assert.equal('foo=bar; Max-Age=1000', cookie.serialize('foo', 'bar', { - maxAge: 1000 - })); -}); - -test('escaping', function() { - assert.deepEqual('cat=%2B%20', cookie.serialize('cat', '+ ')); -}); - -test('parse->serialize', function() { - - assert.deepEqual({ cat: 'foo=123&name=baz five' }, cookie.parse( - cookie.serialize('cat', 'foo=123&name=baz five'))); - - assert.deepEqual({ cat: ' ";/' }, cookie.parse( - cookie.serialize('cat', ' ";/'))); -}); - -test('unencoded', function() { - assert.deepEqual('cat=+ ', cookie.serialize('cat', '+ ', { - encode: function(value) { return value; } - })); -}) diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md deleted file mode 100644 index f023269..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/History.md +++ /dev/null @@ -1,62 +0,0 @@ - -0.7.2 / 2013-02-06 -================== - - * fix package.json - * fix: Mobile Safari (private mode) is broken with debug - * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript - -0.7.1 / 2013-02-05 -================== - - * add repository URL to package.json - * add DEBUG_COLORED to force colored output - * add browserify support - * fix component. Closes #24 - -0.7.0 / 2012-05-04 -================== - - * Added .component to package.json - * Added debug.component.js build - -0.6.0 / 2012-03-16 -================== - - * Added support for "-" prefix in DEBUG [Vinay Pulim] - * Added `.enabled` flag to the node version [TooTallNate] - -0.5.0 / 2012-02-02 -================== - - * Added: humanize diffs. Closes #8 - * Added `debug.disable()` to the CS variant - * Removed padding. Closes #10 - * Fixed: persist client-side variant again. Closes #9 - -0.4.0 / 2012-02-01 -================== - - * Added browser variant support for older browsers [TooTallNate] - * Added `debug.enable('project:*')` to browser variant [TooTallNate] - * Added padding to diff (moved it to the right) - -0.3.0 / 2012-01-26 -================== - - * Added millisecond diff when isatty, otherwise UTC string - -0.2.0 / 2012-01-22 -================== - - * Added wildcard support - -0.1.0 / 2011-12-02 -================== - - * Added: remove colors unless stderr isatty [TooTallNate] - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md deleted file mode 100644 index 15ee501..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/Readme.md +++ /dev/null @@ -1,115 +0,0 @@ - -# debug - - tiny node.js debugging utility modelled after node core's debugging technique. - -## Installation - -``` -$ npm install debug -``` - -## Usage - - With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility. - -Example _app.js_: - -```js -var debug = require('debug')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); -``` - -Example _worker.js_: - -```js -var debug = require('debug')('worker'); - -setInterval(function(){ - debug('doing some work'); -}, 1000); -``` - - The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: - - ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) - - ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) - -## Millisecond diff - - When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. - - ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) - - When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: - - ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) - -## Conventions - - If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". - -## Wildcards - - The "*" character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. - - You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with "connect:". - -## Browser support - - Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. - -```js -a = debug('worker:a'); -b = debug('worker:b'); - -setInterval(function(){ - a('doing some work'); -}, 1000); - -setInterval(function(){ - a('doing some work'); -}, 1200); -``` - -## License - -(The MIT License) - -Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json deleted file mode 100644 index 4ad0971..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/component.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "debug", - "repo": "visionmedia/debug", - "description": "small debugging utility", - "version": "0.7.2", - "keywords": ["debug", "log", "debugger"], - "scripts": ["index.js", "debug.js"], - "dependencies": {} -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js deleted file mode 100644 index e47ba5b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/debug.js +++ /dev/null @@ -1,124 +0,0 @@ - -/** - * Expose `debug()` as the module. - */ - -module.exports = debug; - -/** - * Create a debugger with the given `name`. - * - * @param {String} name - * @return {Type} - * @api public - */ - -function debug(name) { - if (!debug.enabled(name)) return function(){}; - - return function(fmt){ - var curr = new Date; - var ms = curr - (debug[name] || curr); - debug[name] = curr; - - fmt = name - + ' ' - + fmt - + ' +' + debug.humanize(ms); - - // This hackery is required for IE8 - // where `console.log` doesn't have 'apply' - window.console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); - } -} - -/** - * The currently active debug mode names. - */ - -debug.names = []; -debug.skips = []; - -/** - * Enables a debug mode by name. This can include modes - * separated by a colon and wildcards. - * - * @param {String} name - * @api public - */ - -debug.enable = function(name) { - try { - localStorage.debug = name; - } catch(e){} - - var split = (name || '').split(/[\s,]+/) - , len = split.length; - - for (var i = 0; i < len; i++) { - name = split[i].replace('*', '.*?'); - if (name[0] === '-') { - debug.skips.push(new RegExp('^' + name.substr(1) + '$')); - } - else { - debug.names.push(new RegExp('^' + name + '$')); - } - } -}; - -/** - * Disable debug output. - * - * @api public - */ - -debug.disable = function(){ - debug.enable(''); -}; - -/** - * Humanize the given `ms`. - * - * @param {Number} m - * @return {String} - * @api private - */ - -debug.humanize = function(ms) { - var sec = 1000 - , min = 60 * 1000 - , hour = 60 * min; - - if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; - if (ms >= min) return (ms / min).toFixed(1) + 'm'; - if (ms >= sec) return (ms / sec | 0) + 's'; - return ms + 'ms'; -}; - -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ - -debug.enabled = function(name) { - for (var i = 0, len = debug.skips.length; i < len; i++) { - if (debug.skips[i].test(name)) { - return false; - } - } - for (var i = 0, len = debug.names.length; i < len; i++) { - if (debug.names[i].test(name)) { - return true; - } - } - return false; -}; - -// persist - -if (window.localStorage) debug.enable(localStorage.debug); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js deleted file mode 100644 index 05374d9..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/app.js +++ /dev/null @@ -1,19 +0,0 @@ - -var debug = require('../')('http') - , http = require('http') - , name = 'My App'; - -// fake app - -debug('booting %s', name); - -http.createServer(function(req, res){ - debug(req.method + ' ' + req.url); - res.end('hello\n'); -}).listen(3000, function(){ - debug('listening'); -}); - -// fake worker of some kind - -require('./worker'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html deleted file mode 100644 index 7510eee..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/browser.html +++ /dev/null @@ -1,24 +0,0 @@ - - - debug() - - - - - - - diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js deleted file mode 100644 index 1fdac20..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/wildcards.js +++ /dev/null @@ -1,10 +0,0 @@ - -var debug = { - foo: require('../')('test:foo'), - bar: require('../')('test:bar'), - baz: require('../')('test:baz') -}; - -debug.foo('foo') -debug.bar('bar') -debug.baz('baz') \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js deleted file mode 100644 index 7f6d288..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/example/worker.js +++ /dev/null @@ -1,22 +0,0 @@ - -// DEBUG=* node example/worker -// DEBUG=worker:* node example/worker -// DEBUG=worker:a node example/worker -// DEBUG=worker:b node example/worker - -var a = require('../')('worker:a') - , b = require('../')('worker:b'); - -function work() { - a('doing lots of uninteresting work'); - setTimeout(work, Math.random() * 1000); -} - -work(); - -function workb() { - b('doing some work'); - setTimeout(workb, Math.random() * 2000); -} - -workb(); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js deleted file mode 100644 index e02c13b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/index.js +++ /dev/null @@ -1,5 +0,0 @@ -if ('undefined' == typeof window) { - module.exports = require('./lib/debug'); -} else { - module.exports = require('./debug'); -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js deleted file mode 100644 index 0b07aa1..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/lib/debug.js +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Module dependencies. - */ - -var tty = require('tty'); - -/** - * Expose `debug()` as the module. - */ - -module.exports = debug; - -/** - * Enabled debuggers. - */ - -var names = [] - , skips = []; - -(process.env.DEBUG || '') - .split(/[\s,]+/) - .forEach(function(name){ - name = name.replace('*', '.*?'); - if (name[0] === '-') { - skips.push(new RegExp('^' + name.substr(1) + '$')); - } else { - names.push(new RegExp('^' + name + '$')); - } - }); - -/** - * Colors. - */ - -var colors = [6, 2, 3, 4, 5, 1]; - -/** - * Previous debug() call. - */ - -var prev = {}; - -/** - * Previously assigned color. - */ - -var prevColor = 0; - -/** - * Is stdout a TTY? Colored output is disabled when `true`. - */ - -var isatty = tty.isatty(2); - -/** - * Select a color. - * - * @return {Number} - * @api private - */ - -function color() { - return colors[prevColor++ % colors.length]; -} - -/** - * Humanize the given `ms`. - * - * @param {Number} m - * @return {String} - * @api private - */ - -function humanize(ms) { - var sec = 1000 - , min = 60 * 1000 - , hour = 60 * min; - - if (ms >= hour) return (ms / hour).toFixed(1) + 'h'; - if (ms >= min) return (ms / min).toFixed(1) + 'm'; - if (ms >= sec) return (ms / sec | 0) + 's'; - return ms + 'ms'; -} - -/** - * Create a debugger with the given `name`. - * - * @param {String} name - * @return {Type} - * @api public - */ - -function debug(name) { - function disabled(){} - disabled.enabled = false; - - var match = skips.some(function(re){ - return re.test(name); - }); - - if (match) return disabled; - - match = names.some(function(re){ - return re.test(name); - }); - - if (!match) return disabled; - var c = color(); - - function colored(fmt) { - var curr = new Date; - var ms = curr - (prev[name] || curr); - prev[name] = curr; - - fmt = ' \u001b[9' + c + 'm' + name + ' ' - + '\u001b[3' + c + 'm\u001b[90m' - + fmt + '\u001b[3' + c + 'm' - + ' +' + humanize(ms) + '\u001b[0m'; - - console.error.apply(this, arguments); - } - - function plain(fmt) { - fmt = new Date().toUTCString() - + ' ' + name + ' ' + fmt; - console.error.apply(this, arguments); - } - - colored.enabled = plain.enabled = true; - - return isatty || process.env.DEBUG_COLORS - ? colored - : plain; -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json deleted file mode 100644 index 112d22b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/debug/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "debug", - "version": "0.7.2", - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/debug.git" - }, - "description": "small debugging utility", - "keywords": [ - "debug", - "log", - "debugger" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": {}, - "devDependencies": { - "mocha": "*" - }, - "main": "lib/debug.js", - "browserify": "debug.js", - "engines": { - "node": "*" - }, - "component": { - "scripts": { - "debug/index.js": "index.js", - "debug/debug.js": "debug.js" - } - }, - "readme": "\n# debug\n\n tiny node.js debugging utility modelled after node core's debugging technique.\n\n## Installation\n\n```\n$ npm install debug\n```\n\n## Usage\n\n With `debug` you simply invoke the exported function to generate your debug function, passing it a name which will determine if a noop function is returned, or a decorated `console.error`, so all of the `console` format string goodies you're used to work fine. A unique color is selected per-function for visibility.\n \nExample _app.js_:\n\n```js\nvar debug = require('debug')('http')\n , http = require('http')\n , name = 'My App';\n\n// fake app\n\ndebug('booting %s', name);\n\nhttp.createServer(function(req, res){\n debug(req.method + ' ' + req.url);\n res.end('hello\\n');\n}).listen(3000, function(){\n debug('listening');\n});\n\n// fake worker of some kind\n\nrequire('./worker');\n```\n\nExample _worker.js_:\n\n```js\nvar debug = require('debug')('worker');\n\nsetInterval(function(){\n debug('doing some work');\n}, 1000);\n```\n\n The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples:\n\n ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png)\n\n ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png)\n\n## Millisecond diff\n\n When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the \"+NNNms\" will show you how much time was spent between calls.\n\n ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png)\n\n When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below:\n \n ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png)\n\n## Conventions\n\n If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use \":\" to separate features. For example \"bodyParser\" from Connect would then be \"connect:bodyParser\". \n\n## Wildcards\n\n The \"*\" character may be used as a wildcard. Suppose for example your library has debuggers named \"connect:bodyParser\", \"connect:compress\", \"connect:session\", instead of listing all three with `DEBUG=connect:bodyParser,connect.compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`.\n\n You can also exclude specific debuggers by prefixing them with a \"-\" character. For example, `DEBUG=* -connect:*` would include all debuggers except those starting with \"connect:\".\n\n## Browser support\n\n Debug works in the browser as well, currently persisted by `localStorage`. For example if you have `worker:a` and `worker:b` as shown below, and wish to debug both type `debug.enable('worker:*')` in the console and refresh the page, this will remain until you disable with `debug.disable()`. \n\n```js\na = debug('worker:a');\nb = debug('worker:b');\n\nsetInterval(function(){\n a('doing some work');\n}, 1000);\n\nsetInterval(function(){\n a('doing some work');\n}, 1200);\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/debug/issues" - }, - "_id": "debug@0.7.2", - "_from": "debug@*" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile deleted file mode 100644 index 8e8640f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md deleted file mode 100644 index 273130d..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/Readme.md +++ /dev/null @@ -1,32 +0,0 @@ - -# node-fresh - - HTTP response freshness testing - -## fresh(req, res) - - Check freshness of `req` and `res` headers. - - When the cache is "fresh" __true__ is returned, - otherwise __false__ is returned to indicate that - the cache is now stale. - -## Example: - -```js -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'luna' }; -fresh(req, res); -// => false - -var req = { 'if-none-match': 'tobi' }; -var res = { 'etag': 'tobi' }; -fresh(req, res); -// => true -``` - -## Installation - -``` -$ npm install fresh -``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js deleted file mode 100644 index b2f4d41..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/index.js +++ /dev/null @@ -1,49 +0,0 @@ - -/** - * Expose `fresh()`. - */ - -module.exports = fresh; - -/** - * Check freshness of `req` and `res` headers. - * - * When the cache is "fresh" __true__ is returned, - * otherwise __false__ is returned to indicate that - * the cache is now stale. - * - * @param {Object} req - * @param {Object} res - * @return {Boolean} - * @api public - */ - -function fresh(req, res) { - // defaults - var etagMatches = true; - var notModified = true; - - // fields - var modifiedSince = req['if-modified-since']; - var noneMatch = req['if-none-match']; - var lastModified = res['last-modified']; - var etag = res['etag']; - - // unconditional request - if (!modifiedSince && !noneMatch) return false; - - // parse if-none-match - if (noneMatch) noneMatch = noneMatch.split(/ *, */); - - // if-none-match - if (noneMatch) etagMatches = ~noneMatch.indexOf(etag) || '*' == noneMatch[0]; - - // if-modified-since - if (modifiedSince) { - modifiedSince = new Date(modifiedSince); - lastModified = new Date(lastModified); - notModified = lastModified <= modifiedSince; - } - - return !! (etagMatches && notModified); -} \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json deleted file mode 100644 index d9fddb2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/fresh/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "fresh", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "HTTP response freshness testing", - "version": "0.1.0", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "readme": "\n# node-fresh\n\n HTTP response freshness testing\n\n## fresh(req, res)\n\n Check freshness of `req` and `res` headers.\n\n When the cache is \"fresh\" __true__ is returned,\n otherwise __false__ is returned to indicate that\n the cache is now stale.\n\n## Example:\n\n```js\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'luna' };\nfresh(req, res);\n// => false\n\nvar req = { 'if-none-match': 'tobi' };\nvar res = { 'etag': 'tobi' };\nfresh(req, res);\n// => true\n```\n\n## Installation\n\n```\n$ npm install fresh\n```", - "readmeFilename": "Readme.md", - "_id": "fresh@0.1.0", - "_from": "fresh@0.1.0" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js deleted file mode 100644 index 297d022..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/index.js +++ /dev/null @@ -1,26 +0,0 @@ - -module.exports = [ - 'get' - , 'post' - , 'put' - , 'head' - , 'delete' - , 'options' - , 'trace' - , 'copy' - , 'lock' - , 'mkcol' - , 'move' - , 'propfind' - , 'proppatch' - , 'unlock' - , 'report' - , 'mkactivity' - , 'checkout' - , 'merge' - , 'm-search' - , 'notify' - , 'subscribe' - , 'unsubscribe' - , 'patch' -]; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json deleted file mode 100644 index f867a8b..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/methods/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "methods", - "version": "0.0.1", - "description": "HTTP methods that node supports", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [ - "http", - "methods" - ], - "author": { - "name": "TJ Holowaychuk" - }, - "license": "MIT", - "readme": "ERROR: No README data found!", - "_id": "methods@0.0.1", - "_from": "methods@0.0.1" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore deleted file mode 100644 index 9303c34..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -npm-debug.log \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml deleted file mode 100644 index f1d0f13..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.4 - - 0.6 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE deleted file mode 100644 index 432d1ae..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown deleted file mode 100644 index 40de04f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/README.markdown +++ /dev/null @@ -1,61 +0,0 @@ -mkdirp -====== - -Like `mkdir -p`, but in node.js! - -[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) - -example -======= - -pow.js ------- - var mkdirp = require('mkdirp'); - - mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') - }); - -Output - pow! - -And now /tmp/foo/bar/baz exists, huzzah! - -methods -======= - -var mkdirp = require('mkdirp'); - -mkdirp(dir, mode, cb) ---------------------- - -Create a new directory and any necessary subdirectories at `dir` with octal -permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -`cb(err, made)` fires with the error or the first directory `made` -that had to be created, if any. - -mkdirp.sync(dir, mode) ----------------------- - -Synchronously create a new directory and any necessary subdirectories at `dir` -with octal permission string `mode`. - -If `mode` isn't specified, it defaults to `0777 & (~process.umask())`. - -Returns the first directory that had to be created, if any. - -install -======= - -With [npm](http://npmjs.org) do: - - npm install mkdirp - -license -======= - -MIT/X11 diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js deleted file mode 100644 index e692421..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/examples/pow.js +++ /dev/null @@ -1,6 +0,0 @@ -var mkdirp = require('mkdirp'); - -mkdirp('/tmp/foo/bar/baz', function (err) { - if (err) console.error(err) - else console.log('pow!') -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js deleted file mode 100644 index fda6de8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/index.js +++ /dev/null @@ -1,82 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, mode, f, made) { - if (typeof mode === 'function' || mode === undefined) { - f = mode; - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - var cb = f || function () {}; - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - fs.mkdir(p, mode, function (er) { - if (!er) { - made = made || p; - return cb(null, made); - } - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), mode, function (er, made) { - if (er) cb(er, made); - else mkdirP(p, mode, cb, made); - }); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - fs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original error be the failure reason. - if (er2 || !stat.isDirectory()) cb(er, made) - else cb(null, made); - }); - break; - } - }); -} - -mkdirP.sync = function sync (p, mode, made) { - if (mode === undefined) { - mode = 0777 & (~process.umask()); - } - if (!made) made = null; - - if (typeof mode === 'string') mode = parseInt(mode, 8); - p = path.resolve(p); - - try { - fs.mkdirSync(p, mode); - made = made || p; - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - made = sync(path.dirname(p), mode, made); - sync(p, mode, made); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - var stat; - try { - stat = fs.statSync(p); - } - catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - - return made; -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json deleted file mode 100644 index 64955a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "mkdirp", - "description": "Recursively mkdir, like `mkdir -p`", - "version": "0.3.4", - "author": { - "name": "James Halliday", - "email": "mail@substack.net", - "url": "http://substack.net" - }, - "main": "./index", - "keywords": [ - "mkdir", - "directory" - ], - "repository": { - "type": "git", - "url": "http://github.com/substack/node-mkdirp.git" - }, - "scripts": { - "test": "tap test/*.js" - }, - "devDependencies": { - "tap": "~0.2.4" - }, - "license": "MIT/X11", - "engines": { - "node": "*" - }, - "readme": "mkdirp\n======\n\nLike `mkdir -p`, but in node.js!\n\n[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp)\n\nexample\n=======\n\npow.js\n------\n var mkdirp = require('mkdirp');\n \n mkdirp('/tmp/foo/bar/baz', function (err) {\n if (err) console.error(err)\n else console.log('pow!')\n });\n\nOutput\n pow!\n\nAnd now /tmp/foo/bar/baz exists, huzzah!\n\nmethods\n=======\n\nvar mkdirp = require('mkdirp');\n\nmkdirp(dir, mode, cb)\n---------------------\n\nCreate a new directory and any necessary subdirectories at `dir` with octal\npermission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\n`cb(err, made)` fires with the error or the first directory `made`\nthat had to be created, if any.\n\nmkdirp.sync(dir, mode)\n----------------------\n\nSynchronously create a new directory and any necessary subdirectories at `dir`\nwith octal permission string `mode`.\n\nIf `mode` isn't specified, it defaults to `0777 & (~process.umask())`.\n\nReturns the first directory that had to be created, if any.\n\ninstall\n=======\n\nWith [npm](http://npmjs.org) do:\n\n npm install mkdirp\n\nlicense\n=======\n\nMIT/X11\n", - "readmeFilename": "README.markdown", - "bugs": { - "url": "https://github.com/substack/node-mkdirp/issues" - }, - "_id": "mkdirp@0.3.4", - "_from": "mkdirp@0.3.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js deleted file mode 100644 index 520dcb8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/chmod.js +++ /dev/null @@ -1,38 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -test('chmod-pre', function (t) { - var mode = 0744 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.equal(stat && stat.mode & 0777, mode, 'should be 0744'); - t.end(); - }); - }); -}); - -test('chmod', function (t) { - var mode = 0755 - mkdirp(file, mode, function (er) { - t.ifError(er, 'should not error'); - fs.stat(file, function (er, stat) { - t.ifError(er, 'should exist'); - t.ok(stat && stat.isDirectory(), 'should be directory'); - t.end(); - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js deleted file mode 100644 index 0eb7099..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/clobber.js +++ /dev/null @@ -1,37 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -var ps = [ '', 'tmp' ]; - -for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); -} - -var file = ps.join('/'); - -// a file in the way -var itw = ps.slice(0, 3).join('/'); - - -test('clobber-pre', function (t) { - console.error("about to write to "+itw) - fs.writeFileSync(itw, 'I AM IN THE WAY, THE TRUTH, AND THE LIGHT.'); - - fs.stat(itw, function (er, stat) { - t.ifError(er) - t.ok(stat && stat.isFile(), 'should be file') - t.end() - }) -}) - -test('clobber', function (t) { - t.plan(2); - mkdirp(file, 0755, function (err) { - t.ok(err); - t.equal(err.code, 'ENOTDIR'); - t.end(); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js deleted file mode 100644 index b07cd70..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/mkdirp.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('woo', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js deleted file mode 100644 index 23a7abb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('async perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); - -test('async root perm', function (t) { - mkdirp('/tmp', 0755, function (err) { - if (err) t.fail(err); - t.end(); - }); - t.end(); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js deleted file mode 100644 index f685f60..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/perm_sync.js +++ /dev/null @@ -1,39 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync perm', function (t) { - t.plan(2); - var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json'; - - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); - -test('sync root perm', function (t) { - t.plan(1); - - var file = '/tmp'; - mkdirp.sync(file, 0755); - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js deleted file mode 100644 index 96a0447..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/race.js +++ /dev/null @@ -1,41 +0,0 @@ -var mkdirp = require('../').mkdirp; -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('race', function (t) { - t.plan(4); - var ps = [ '', 'tmp' ]; - - for (var i = 0; i < 25; i++) { - var dir = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - ps.push(dir); - } - var file = ps.join('/'); - - var res = 2; - mk(file, function () { - if (--res === 0) t.end(); - }); - - mk(file, function () { - if (--res === 0) t.end(); - }); - - function mk (file, cb) { - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - if (cb) cb(); - } - }) - }) - }); - } -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js deleted file mode 100644 index 7985824..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/rel.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('rel', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var cwd = process.cwd(); - process.chdir('/tmp'); - - var file = [x,y,z].join('/'); - - mkdirp(file, 0755, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - process.chdir(cwd); - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js deleted file mode 100644 index bce68e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return.js +++ /dev/null @@ -1,25 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(4); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, '/tmp/' + x); - mkdirp(file, function (err, made) { - t.ifError(err); - t.equal(made, null); - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js deleted file mode 100644 index 7c222d3..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/return_sync.js +++ /dev/null @@ -1,24 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('return value', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - // should return the first dir created. - // By this point, it would be profoundly surprising if /tmp didn't - // already exist, since every other test makes things in there. - // Note that this will throw on failure, which will fail the test. - var made = mkdirp.sync(file); - t.equal(made, '/tmp/' + x); - - // making the same file again should have no effect. - made = mkdirp.sync(file); - t.equal(made, null); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js deleted file mode 100644 index 97ad7a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/root.js +++ /dev/null @@ -1,18 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('root', function (t) { - // '/' on unix, 'c:/' on windows. - var file = path.resolve('/'); - - mkdirp(file, 0755, function (err) { - if (err) throw err - fs.stat(file, function (er, stat) { - if (er) throw er - t.ok(stat.isDirectory(), 'target is a directory'); - t.end(); - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js deleted file mode 100644 index 7530cad..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('sync', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file, 0755); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0755); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js deleted file mode 100644 index 64ccafe..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask.js +++ /dev/null @@ -1,28 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('implicit mode from umask', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - mkdirp(file, function (err) { - if (err) t.fail(err); - else path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, 0777 & (~process.umask())); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }) - }) - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js deleted file mode 100644 index 35bd5cb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/mkdirp/test/umask_sync.js +++ /dev/null @@ -1,32 +0,0 @@ -var mkdirp = require('../'); -var path = require('path'); -var fs = require('fs'); -var test = require('tap').test; - -test('umask sync modes', function (t) { - t.plan(2); - var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16); - - var file = '/tmp/' + [x,y,z].join('/'); - - try { - mkdirp.sync(file); - } catch (err) { - t.fail(err); - return t.end(); - } - - path.exists(file, function (ex) { - if (!ex) t.fail('file not created') - else fs.stat(file, function (err, stat) { - if (err) t.fail(err) - else { - t.equal(stat.mode & 0777, (0777 & (~process.umask()))); - t.ok(stat.isDirectory(), 'target not a directory'); - t.end(); - } - }); - }); -}); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md deleted file mode 100644 index 82df7b1..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/History.md +++ /dev/null @@ -1,15 +0,0 @@ - -0.0.4 / 2012-06-17 -================== - - * changed: ret -1 for unsatisfiable and -2 when invalid - -0.0.3 / 2012-06-17 -================== - - * fix last-byte-pos default to len - 1 - -0.0.2 / 2012-06-14 -================== - - * add `.type` diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile deleted file mode 100644 index 8e8640f..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Makefile +++ /dev/null @@ -1,7 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --reporter spec \ - --require should - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md deleted file mode 100644 index b2a67fe..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/Readme.md +++ /dev/null @@ -1,28 +0,0 @@ - -# node-range-parser - - Range header field parser. - -## Example: - -```js -assert(-1 == parse(200, 'bytes=500-20')); -assert(-2 == parse(200, 'bytes=malformed')); -parse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }])); -parse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }])); -parse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }])); -parse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }])); -parse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }])); -parse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }])); -parse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }])); -parse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }])); -parse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }])); -parse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }])); -``` - -## Installation - -``` -$ npm install range-parser -``` \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js deleted file mode 100644 index 9b0f7a8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/index.js +++ /dev/null @@ -1,49 +0,0 @@ - -/** - * Parse "Range" header `str` relative to the given file `size`. - * - * @param {Number} size - * @param {String} str - * @return {Array} - * @api public - */ - -module.exports = function(size, str){ - var valid = true; - var i = str.indexOf('='); - - if (-1 == i) return -2; - - var arr = str.slice(i + 1).split(',').map(function(range){ - var range = range.split('-') - , start = parseInt(range[0], 10) - , end = parseInt(range[1], 10); - - // -nnn - if (isNaN(start)) { - start = size - end; - end = size - 1; - // nnn- - } else if (isNaN(end)) { - end = size - 1; - } - - // limit last-byte-pos to current length - if (end > size - 1) end = size - 1; - - // invalid - if (isNaN(start) - || isNaN(end) - || start > end - || start < 0) valid = false; - - return { - start: start, - end: end - }; - }); - - arr.type = str.slice(0, i); - - return valid ? arr : -1; -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json deleted file mode 100644 index efdf450..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/range-parser/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "range-parser", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca", - "url": "http://tjholowaychuk.com" - }, - "description": "Range header field string parser", - "version": "0.0.4", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "readme": "\n# node-range-parser\n\n Range header field parser.\n\n## Example:\n\n```js\nassert(-1 == parse(200, 'bytes=500-20'));\nassert(-2 == parse(200, 'bytes=malformed'));\nparse(200, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 199 }]));\nparse(1000, 'bytes=0-499').should.eql(arr('bytes', [{ start: 0, end: 499 }]));\nparse(1000, 'bytes=40-80').should.eql(arr('bytes', [{ start: 40, end: 80 }]));\nparse(1000, 'bytes=-500').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=-400').should.eql(arr('bytes', [{ start: 600, end: 999 }]));\nparse(1000, 'bytes=500-').should.eql(arr('bytes', [{ start: 500, end: 999 }]));\nparse(1000, 'bytes=400-').should.eql(arr('bytes', [{ start: 400, end: 999 }]));\nparse(1000, 'bytes=0-0').should.eql(arr('bytes', [{ start: 0, end: 0 }]));\nparse(1000, 'bytes=-1').should.eql(arr('bytes', [{ start: 999, end: 999 }]));\nparse(1000, 'items=0-5').should.eql(arr('items', [{ start: 0, end: 5 }]));\nparse(1000, 'bytes=40-80,-1').should.eql(arr('bytes', [{ start: 40, end: 80 }, { start: 999, end: 999 }]));\n```\n\n## Installation\n\n```\n$ npm install range-parser\n```", - "readmeFilename": "Readme.md", - "_id": "range-parser@0.0.4", - "_from": "range-parser@0.0.4" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore deleted file mode 100644 index f1250e5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -support -test -examples -*.sock diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md deleted file mode 100644 index 20c5319..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/History.md +++ /dev/null @@ -1,25 +0,0 @@ - -0.1.0 / 2012-08-25 -================== - - * add options parameter to send() that is passed to fs.createReadStream() [kanongil] - -0.0.4 / 2012-08-16 -================== - - * allow custom "Accept-Ranges" definition - -0.0.3 / 2012-07-16 -================== - - * fix normalization of the root directory. Closes #3 - -0.0.2 / 2012-07-09 -================== - - * add passing of req explicitly for now (YUCK) - -0.0.1 / 2010-01-03 -================== - - * Initial release diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile deleted file mode 100644 index a9dcfd5..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter spec \ - --bail - -.PHONY: test \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md deleted file mode 100644 index 85171a9..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/Readme.md +++ /dev/null @@ -1,123 +0,0 @@ - -# send - - Send is Connect's `static()` extracted for generalized use, a streaming static file - server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework. - -## Installation - - $ npm install send - -## Examples - - Small: - -```js -var http = require('http'); -var send = require('send'); - -var app = http.createServer(function(req, res){ - send(req, req.url).pipe(res); -}); -``` - - Serving from a root directory with custom error-handling: - -```js -var http = require('http'); -var send = require('send'); - -var app = http.createServer(function(req, res){ - // your custom error-handling logic: - function error(err) { - res.statusCode = err.status || 500; - res.end(err.message); - } - - // your custom directory handling logic: - function redirect() { - res.statusCode = 301; - res.setHeader('Location', req.url + '/'); - res.end('Redirecting to ' + req.url + '/'); - } - - // transfer arbitrary files from within - // /www/example.com/public/* - send(req, url.parse(req.url).pathname) - .root('/www/example.com/public') - .on('error', error) - .on('directory', redirect) - .pipe(res); -}); -``` - -## API - -### Events - - - `error` an error occurred `(err)` - - `directory` a directory was requested - - `stream` file streaming has started `(stream)` - - `end` streaming has completed - -### .root(dir) - - Serve files relative to `path`. Aliased as `.from(dir)`. - -### .index(path) - - By default send supports "index.html" files, to disable this - invoke `.index(false)` or to supply a new index pass a string. - -### .maxage(ms) - - Provide a max-age in milliseconds for http caching, defaults to 0. - -## Error-handling - - By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc. - -## Caching - - It does _not_ perform internal caching, you should use a reverse proxy cache such - as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;). - -## Debugging - - To enable `debug()` instrumentation output export __DEBUG__: - -``` -$ DEBUG=send node app -``` - -## Running tests - -``` -$ npm install -$ make test -``` - -## License - -(The MIT License) - -Copyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js deleted file mode 100644 index f17158d..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/send'); \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js deleted file mode 100644 index de72146..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/send.js +++ /dev/null @@ -1,473 +0,0 @@ - -/** - * Module dependencies. - */ - -var debug = require('debug')('send') - , parseRange = require('range-parser') - , Stream = require('stream') - , mime = require('mime') - , fresh = require('fresh') - , path = require('path') - , http = require('http') - , fs = require('fs') - , basename = path.basename - , normalize = path.normalize - , join = path.join - , utils = require('./utils'); - -/** - * Expose `send`. - */ - -exports = module.exports = send; - -/** - * Expose mime module. - */ - -exports.mime = mime; - -/** - * Return a `SendStream` for `req` and `path`. - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @return {SendStream} - * @api public - */ - -function send(req, path, options) { - return new SendStream(req, path, options); -} - -/** - * Initialize a `SendStream` with the given `path`. - * - * Events: - * - * - `error` an error occurred - * - `stream` file streaming has started - * - `end` streaming has completed - * - `directory` a directory was requested - * - * @param {Request} req - * @param {String} path - * @param {Object} options - * @api private - */ - -function SendStream(req, path, options) { - var self = this; - this.req = req; - this.path = path; - this.options = options || {}; - this.maxage(0); - this.hidden(false); - this.index('index.html'); -} - -/** - * Inherits from `Stream.prototype`. - */ - -SendStream.prototype.__proto__ = Stream.prototype; - -/** - * Enable or disable "hidden" (dot) files. - * - * @param {Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.hidden = function(val){ - debug('hidden %s', val); - this._hidden = val; - return this; -}; - -/** - * Set index `path`, set to a falsy - * value to disable index support. - * - * @param {String|Boolean} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.index = function(path){ - debug('index %s', path); - this._index = path; - return this; -}; - -/** - * Set root `path`. - * - * @param {String} path - * @return {SendStream} - * @api public - */ - -SendStream.prototype.root = -SendStream.prototype.from = function(path){ - this._root = normalize(path); - return this; -}; - -/** - * Set max-age to `ms`. - * - * @param {Number} ms - * @return {SendStream} - * @api public - */ - -SendStream.prototype.maxage = function(ms){ - if (Infinity == ms) ms = 60 * 60 * 24 * 365 * 1000; - debug('max-age %d', ms); - this._maxage = ms; - return this; -}; - -/** - * Emit error with `status`. - * - * @param {Number} status - * @api private - */ - -SendStream.prototype.error = function(status, err){ - var res = this.res; - var msg = http.STATUS_CODES[status]; - err = err || new Error(msg); - err.status = status; - if (this.listeners('error').length) return this.emit('error', err); - res.statusCode = err.status; - res.end(msg); -}; - -/** - * Check if the pathname is potentially malicious. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isMalicious = function(){ - return !this._root && ~this.path.indexOf('..'); -}; - -/** - * Check if the pathname ends with "/". - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.hasTrailingSlash = function(){ - return '/' == this.path[this.path.length - 1]; -}; - -/** - * Check if the basename leads with ".". - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.hasLeadingDot = function(){ - return '.' == basename(this.path)[0]; -}; - -/** - * Check if this is a conditional GET request. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isConditionalGET = function(){ - return this.req.headers['if-none-match'] - || this.req.headers['if-modified-since']; -}; - -/** - * Strip content-* header fields. - * - * @api private - */ - -SendStream.prototype.removeContentHeaderFields = function(){ - var res = this.res; - Object.keys(res._headers).forEach(function(field){ - if (0 == field.indexOf('content')) { - res.removeHeader(field); - } - }); -}; - -/** - * Respond with 304 not modified. - * - * @api private - */ - -SendStream.prototype.notModified = function(){ - var res = this.res; - debug('not modified'); - this.removeContentHeaderFields(); - res.statusCode = 304; - res.end(); -}; - -/** - * Check if the request is cacheable, aka - * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isCachable = function(){ - var res = this.res; - return (res.statusCode >= 200 && res.statusCode < 300) || 304 == res.statusCode; -}; - -/** - * Handle stat() error. - * - * @param {Error} err - * @api private - */ - -SendStream.prototype.onStatError = function(err){ - var notfound = ['ENOENT', 'ENAMETOOLONG', 'ENOTDIR']; - if (~notfound.indexOf(err.code)) return this.error(404, err); - this.error(500, err); -}; - -/** - * Check if the cache is fresh. - * - * @return {Boolean} - * @api private - */ - -SendStream.prototype.isFresh = function(){ - return fresh(this.req.headers, this.res._headers); -}; - -/** - * Redirect to `path`. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.redirect = function(path){ - if (this.listeners('directory').length) return this.emit('directory'); - var res = this.res; - path += '/'; - res.statusCode = 301; - res.setHeader('Location', path); - res.end('Redirecting to ' + utils.escape(path)); -}; - -/** - * Pipe to `res. - * - * @param {Stream} res - * @return {Stream} res - * @api public - */ - -SendStream.prototype.pipe = function(res){ - var self = this - , args = arguments - , path = this.path - , root = this._root; - - // references - this.res = res; - - // invalid request uri - path = utils.decode(path); - if (-1 == path) return this.error(400); - - // null byte(s) - if (~path.indexOf('\0')) return this.error(400); - - // join / normalize from optional root dir - if (root) path = normalize(join(this._root, path)); - - // ".." is malicious without "root" - if (this.isMalicious()) return this.error(403); - - // malicious path - if (root && 0 != path.indexOf(root)) return this.error(403); - - // hidden file support - if (!this._hidden && this.hasLeadingDot()) return this.error(404); - - // index file support - if (this._index && this.hasTrailingSlash()) path += this._index; - - debug('stat "%s"', path); - fs.stat(path, function(err, stat){ - if (err) return self.onStatError(err); - if (stat.isDirectory()) return self.redirect(self.path); - self.send(path, stat); - }); - - return res; -}; - -/** - * Transfer `path`. - * - * @param {String} path - * @api public - */ - -SendStream.prototype.send = function(path, stat){ - var options = this.options; - var len = stat.size; - var res = this.res; - var req = this.req; - var ranges = req.headers.range; - var offset = options.start || 0; - - // set header fields - this.setHeader(stat); - - // set content-type - this.type(path); - - // conditional GET support - if (this.isConditionalGET() - && this.isCachable() - && this.isFresh()) { - return this.notModified(); - } - - // adjust len to start/end options - len = Math.max(0, len - offset); - if (options.end !== undefined) { - var bytes = options.end - offset + 1; - if (len > bytes) len = bytes; - } - - // Range support - if (ranges) { - ranges = parseRange(len, ranges); - - // unsatisfiable - if (-1 == ranges) { - res.setHeader('Content-Range', 'bytes */' + stat.size); - return this.error(416); - } - - // valid (syntactically invalid ranges are treated as a regular response) - if (-2 != ranges) { - options.start = offset + ranges[0].start; - options.end = offset + ranges[0].end; - - // Content-Range - res.statusCode = 206; - res.setHeader('Content-Range', 'bytes ' - + ranges[0].start - + '-' - + ranges[0].end - + '/' - + len); - len = options.end - options.start + 1; - } - } - - // content-length - res.setHeader('Content-Length', len); - - // HEAD support - if ('HEAD' == req.method) return res.end(); - - this.stream(path, options); -}; - -/** - * Stream `path` to the response. - * - * @param {String} path - * @param {Object} options - * @api private - */ - -SendStream.prototype.stream = function(path, options){ - // TODO: this is all lame, refactor meeee - var self = this; - var res = this.res; - var req = this.req; - - // pipe - var stream = fs.createReadStream(path, options); - this.emit('stream', stream); - stream.pipe(res); - - // socket closed, done with the fd - req.on('close', stream.destroy.bind(stream)); - - // error handling code-smell - stream.on('error', function(err){ - // no hope in responding - if (res._header) { - console.error(err.stack); - req.destroy(); - return; - } - - // 500 - err.status = 500; - self.emit('error', err); - }); - - // end - stream.on('end', function(){ - self.emit('end'); - }); -}; - -/** - * Set content-type based on `path` - * if it hasn't been explicitly set. - * - * @param {String} path - * @api private - */ - -SendStream.prototype.type = function(path){ - var res = this.res; - if (res.getHeader('Content-Type')) return; - var type = mime.lookup(path); - var charset = mime.charsets.lookup(type); - debug('content-type %s', type); - res.setHeader('Content-Type', type + (charset ? '; charset=' + charset : '')); -}; - -/** - * Set reaponse header fields, most - * fields may be pre-defined. - * - * @param {Object} stat - * @api private - */ - -SendStream.prototype.setHeader = function(stat){ - var res = this.res; - if (!res.getHeader('Accept-Ranges')) res.setHeader('Accept-Ranges', 'bytes'); - if (!res.getHeader('ETag')) res.setHeader('ETag', utils.etag(stat)); - if (!res.getHeader('Date')) res.setHeader('Date', new Date().toUTCString()); - if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (this._maxage / 1000)); - if (!res.getHeader('Last-Modified')) res.setHeader('Last-Modified', stat.mtime.toUTCString()); -}; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js deleted file mode 100644 index 950e5a2..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/lib/utils.js +++ /dev/null @@ -1,47 +0,0 @@ - -/** - * Return an ETag in the form of `"-"` - * from the given `stat`. - * - * @param {Object} stat - * @return {String} - * @api private - */ - -exports.etag = function(stat) { - return '"' + stat.size + '-' + Number(stat.mtime) + '"'; -}; - -/** - * decodeURIComponent. - * - * Allows V8 to only deoptimize this fn instead of all - * of send(). - * - * @param {String} path - * @api private - */ - -exports.decode = function(path){ - try { - return decodeURIComponent(path); - } catch (err) { - return -1; - } -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE deleted file mode 100644 index 451fc45..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010 Benjamin Thomas, Robert Kieffer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md deleted file mode 100644 index d8b66a8..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# mime - -Comprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community. - -## Install - -Install with [npm](http://github.com/isaacs/npm): - - npm install mime - -## API - Queries - -### mime.lookup(path) -Get the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g. - - var mime = require('mime'); - - mime.lookup('/path/to/file.txt'); // => 'text/plain' - mime.lookup('file.txt'); // => 'text/plain' - mime.lookup('.TXT'); // => 'text/plain' - mime.lookup('htm'); // => 'text/html' - -### mime.extension(type) -Get the default extension for `type` - - mime.extension('text/html'); // => 'html' - mime.extension('application/octet-stream'); // => 'bin' - -### mime.charsets.lookup() - -Map mime-type to charset - - mime.charsets.lookup('text/plain'); // => 'UTF-8' - -(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.) - -## API - Defining Custom Types - -The following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types). - -### mime.define() - -Add custom mime/extension mappings - - mime.define({ - 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'], - 'application/x-my-type': ['x-mt', 'x-mtt'], - // etc ... - }); - - mime.lookup('x-sft'); // => 'text/x-some-format' - -The first entry in the extensions array is returned by `mime.extension()`. E.g. - - mime.extension('text/x-some-format'); // => 'x-sf' - -### mime.load(filepath) - -Load mappings from an Apache ".types" format file - - mime.load('./my_project.types'); - -The .types file format is simple - See the `types` dir for examples. diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js deleted file mode 100644 index 1e00585..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/mime.js +++ /dev/null @@ -1,104 +0,0 @@ -var path = require('path'); -var fs = require('fs'); - -function Mime() { - // Map of extension -> mime type - this.types = Object.create(null); - - // Map of mime type -> extension - this.extensions = Object.create(null); -} - -/** - * Define mimetype -> extension mappings. Each key is a mime-type that maps - * to an array of extensions associated with the type. The first extension is - * used as the default extension for the type. - * - * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']}); - * - * @param map (Object) type definitions - */ -Mime.prototype.define = function (map) { - for (var type in map) { - var exts = map[type]; - - for (var i = 0; i < exts.length; i++) { - this.types[exts[i]] = type; - } - - // Default extension is the first one we encounter - if (!this.extensions[type]) { - this.extensions[type] = exts[0]; - } - } -}; - -/** - * Load an Apache2-style ".types" file - * - * This may be called multiple times (it's expected). Where files declare - * overlapping types/extensions, the last file wins. - * - * @param file (String) path of file to load. - */ -Mime.prototype.load = function(file) { - // Read file and split into lines - var map = {}, - content = fs.readFileSync(file, 'ascii'), - lines = content.split(/[\r\n]+/); - - lines.forEach(function(line) { - // Clean up whitespace/comments, and split into fields - var fields = line.replace(/\s*#.*|^\s*|\s*$/g, '').split(/\s+/); - map[fields.shift()] = fields; - }); - - this.define(map); -}; - -/** - * Lookup a mime type based on extension - */ -Mime.prototype.lookup = function(path, fallback) { - var ext = path.replace(/.*[\.\/]/, '').toLowerCase(); - - return this.types[ext] || fallback || this.default_type; -}; - -/** - * Return file extension associated with a mime type - */ -Mime.prototype.extension = function(mimeType) { - return this.extensions[mimeType]; -}; - -// Default instance -var mime = new Mime(); - -// Load local copy of -// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types -mime.load(path.join(__dirname, 'types/mime.types')); - -// Load additional types from node.js community -mime.load(path.join(__dirname, 'types/node.types')); - -// Default type -mime.default_type = mime.lookup('bin'); - -// -// Additional API specific to the default instance -// - -mime.Mime = Mime; - -/** - * Lookup a charset based on mime type. - */ -mime.charsets = { - lookup: function(mimeType, fallback) { - // Assume text types are utf8 - return (/^text\//).test(mimeType) ? 'UTF-8' : fallback; - } -} - -module.exports = mime; diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json deleted file mode 100644 index 74a6b69..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com", - "url": "http://github.com/broofa" - }, - "contributors": [ - { - "name": "Benjamin Thomas", - "email": "benjamin@benjaminthomas.org", - "url": "http://github.com/bentomas" - } - ], - "dependencies": {}, - "description": "A comprehensive library for mime-type mapping", - "devDependencies": {}, - "keywords": [ - "util", - "mime" - ], - "main": "mime.js", - "name": "mime", - "repository": { - "url": "https://github.com/broofa/node-mime", - "type": "git" - }, - "version": "1.2.6", - "readme": "# mime\n\nComprehensive MIME type mapping API. Includes all 600+ types and 800+ extensions defined by the Apache project, plus additional types submitted by the node.js community.\n\n## Install\n\nInstall with [npm](http://github.com/isaacs/npm):\n\n npm install mime\n\n## API - Queries\n\n### mime.lookup(path)\nGet the mime type associated with a file. Performs a case-insensitive lookup using the extension in `path` (the substring after the last '/' or '.'). E.g.\n\n var mime = require('mime');\n\n mime.lookup('/path/to/file.txt'); // => 'text/plain'\n mime.lookup('file.txt'); // => 'text/plain'\n mime.lookup('.TXT'); // => 'text/plain'\n mime.lookup('htm'); // => 'text/html'\n\n### mime.extension(type)\nGet the default extension for `type`\n\n mime.extension('text/html'); // => 'html'\n mime.extension('application/octet-stream'); // => 'bin'\n\n### mime.charsets.lookup()\n\nMap mime-type to charset\n\n mime.charsets.lookup('text/plain'); // => 'UTF-8'\n\n(The logic for charset lookups is pretty rudimentary. Feel free to suggest improvements.)\n\n## API - Defining Custom Types\n\nThe following APIs allow you to add your own type mappings within your project. If you feel a type should be included as part of node-mime, see [requesting new types](https://github.com/bentomas/node-mime/wiki/Requesting-New-Types).\n\n### mime.define()\n\nAdd custom mime/extension mappings\n\n mime.define({\n 'text/x-some-format': ['x-sf', 'x-sft', 'x-sfml'],\n 'application/x-my-type': ['x-mt', 'x-mtt'],\n // etc ...\n });\n\n mime.lookup('x-sft'); // => 'text/x-some-format'\n\nThe first entry in the extensions array is returned by `mime.extension()`. E.g.\n\n mime.extension('text/x-some-format'); // => 'x-sf'\n\n### mime.load(filepath)\n\nLoad mappings from an Apache \".types\" format file\n\n mime.load('./my_project.types');\n\nThe .types file format is simple - See the `types` dir for examples.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/broofa/node-mime/issues" - }, - "_id": "mime@1.2.6", - "_from": "mime@1.2.6" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js deleted file mode 100644 index cbad034..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/test.js +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Usage: node test.js - */ - -var mime = require('./mime'); -var assert = require('assert'); - -function eq(a, b) { - console.log('Test: ' + a + ' === ' + b); - assert.strictEqual.apply(null, arguments); -} - -console.log(Object.keys(mime.extensions).length + ' types'); -console.log(Object.keys(mime.types).length + ' extensions\n'); - -// -// Test mime lookups -// - -eq('text/plain', mime.lookup('text.txt')); -eq('text/plain', mime.lookup('.text.txt')); -eq('text/plain', mime.lookup('.txt')); -eq('text/plain', mime.lookup('txt')); -eq('application/octet-stream', mime.lookup('text.nope')); -eq('fallback', mime.lookup('text.fallback', 'fallback')); -eq('application/octet-stream', mime.lookup('constructor')); -eq('text/plain', mime.lookup('TEXT.TXT')); -eq('text/event-stream', mime.lookup('text/event-stream')); -eq('application/x-web-app-manifest+json', mime.lookup('text.webapp')); - -// -// Test extensions -// - -eq('txt', mime.extension(mime.types.text)); -eq('html', mime.extension(mime.types.htm)); -eq('bin', mime.extension('application/octet-stream')); -eq(undefined, mime.extension('constructor')); - -// -// Test node types -// - -eq('application/octet-stream', mime.lookup('file.buffer')); -eq('audio/mp4', mime.lookup('file.m4a')); - -// -// Test charsets -// - -eq('UTF-8', mime.charsets.lookup('text/plain')); -eq(undefined, mime.charsets.lookup(mime.types.js)); -eq('fallback', mime.charsets.lookup('application/octet-stream', 'fallback')); - -console.log('\nOK'); diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types deleted file mode 100644 index b3cae2e..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/mime.types +++ /dev/null @@ -1,1510 +0,0 @@ -# This file maps Internet media types to unique file extension(s). -# Although created for httpd, this file is used by many software systems -# and has been placed in the public domain for unlimited redisribution. -# -# The table below contains both registered and (common) unregistered types. -# A type that has no unique extension can be ignored -- they are listed -# here to guide configurations toward known types and to make it easier to -# identify "new" types. File extensions are also commonly used to indicate -# content languages and encodings, so choose them carefully. -# -# Internet media types should be registered as described in RFC 4288. -# The registry is at . -# -# MIME type (lowercased) Extensions -# ============================================ ========== -# application/1d-interleaved-parityfec -# application/3gpp-ims+xml -# application/activemessage -application/andrew-inset ez -# application/applefile -application/applixware aw -application/atom+xml atom -application/atomcat+xml atomcat -# application/atomicmail -application/atomsvc+xml atomsvc -# application/auth-policy+xml -# application/batch-smtp -# application/beep+xml -# application/calendar+xml -# application/cals-1840 -# application/ccmp+xml -application/ccxml+xml ccxml -application/cdmi-capability cdmia -application/cdmi-container cdmic -application/cdmi-domain cdmid -application/cdmi-object cdmio -application/cdmi-queue cdmiq -# application/cea-2018+xml -# application/cellml+xml -# application/cfw -# application/cnrp+xml -# application/commonground -# application/conference-info+xml -# application/cpl+xml -# application/csta+xml -# application/cstadata+xml -application/cu-seeme cu -# application/cybercash -application/davmount+xml davmount -# application/dca-rft -# application/dec-dx -# application/dialog-info+xml -# application/dicom -# application/dns -# application/dskpp+xml -application/dssc+der dssc -application/dssc+xml xdssc -# application/dvcs -application/ecmascript ecma -# application/edi-consent -# application/edi-x12 -# application/edifact -application/emma+xml emma -# application/epp+xml -application/epub+zip epub -# application/eshop -# application/example -application/exi exi -# application/fastinfoset -# application/fastsoap -# application/fits -application/font-tdpfr pfr -# application/framework-attributes+xml -# application/h224 -# application/held+xml -# application/http -application/hyperstudio stk -# application/ibe-key-request+xml -# application/ibe-pkg-reply+xml -# application/ibe-pp-data -# application/iges -# application/im-iscomposing+xml -# application/index -# application/index.cmd -# application/index.obj -# application/index.response -# application/index.vnd -application/inkml+xml ink inkml -# application/iotp -application/ipfix ipfix -# application/ipp -# application/isup -application/java-archive jar -application/java-serialized-object ser -application/java-vm class -application/javascript js -application/json json -# application/kpml-request+xml -# application/kpml-response+xml -application/lost+xml lostxml -application/mac-binhex40 hqx -application/mac-compactpro cpt -# application/macwriteii -application/mads+xml mads -application/marc mrc -application/marcxml+xml mrcx -application/mathematica ma nb mb -# application/mathml-content+xml -# application/mathml-presentation+xml -application/mathml+xml mathml -# application/mbms-associated-procedure-description+xml -# application/mbms-deregister+xml -# application/mbms-envelope+xml -# application/mbms-msk+xml -# application/mbms-msk-response+xml -# application/mbms-protection-description+xml -# application/mbms-reception-report+xml -# application/mbms-register+xml -# application/mbms-register-response+xml -# application/mbms-user-service-description+xml -application/mbox mbox -# application/media_control+xml -application/mediaservercontrol+xml mscml -application/metalink4+xml meta4 -application/mets+xml mets -# application/mikey -application/mods+xml mods -# application/moss-keys -# application/moss-signature -# application/mosskey-data -# application/mosskey-request -application/mp21 m21 mp21 -application/mp4 mp4s -# application/mpeg4-generic -# application/mpeg4-iod -# application/mpeg4-iod-xmt -# application/msc-ivr+xml -# application/msc-mixer+xml -application/msword doc dot -application/mxf mxf -# application/nasdata -# application/news-checkgroups -# application/news-groupinfo -# application/news-transmission -# application/nss -# application/ocsp-request -# application/ocsp-response -application/octet-stream bin dms lha lrf lzh so iso dmg dist distz pkg bpk dump elc deploy -application/oda oda -application/oebps-package+xml opf -application/ogg ogx -application/onenote onetoc onetoc2 onetmp onepkg -application/oxps oxps -# application/parityfec -application/patch-ops-error+xml xer -application/pdf pdf -application/pgp-encrypted pgp -# application/pgp-keys -application/pgp-signature asc sig -application/pics-rules prf -# application/pidf+xml -# application/pidf-diff+xml -application/pkcs10 p10 -application/pkcs7-mime p7m p7c -application/pkcs7-signature p7s -application/pkcs8 p8 -application/pkix-attr-cert ac -application/pkix-cert cer -application/pkix-crl crl -application/pkix-pkipath pkipath -application/pkixcmp pki -application/pls+xml pls -# application/poc-settings+xml -application/postscript ai eps ps -# application/prs.alvestrand.titrax-sheet -application/prs.cww cww -# application/prs.nprend -# application/prs.plucker -# application/prs.rdf-xml-crypt -# application/prs.xsf+xml -application/pskc+xml pskcxml -# application/qsig -application/rdf+xml rdf -application/reginfo+xml rif -application/relax-ng-compact-syntax rnc -# application/remote-printing -application/resource-lists+xml rl -application/resource-lists-diff+xml rld -# application/riscos -# application/rlmi+xml -application/rls-services+xml rs -application/rpki-ghostbusters gbr -application/rpki-manifest mft -application/rpki-roa roa -# application/rpki-updown -application/rsd+xml rsd -application/rss+xml rss -application/rtf rtf -# application/rtx -# application/samlassertion+xml -# application/samlmetadata+xml -application/sbml+xml sbml -application/scvp-cv-request scq -application/scvp-cv-response scs -application/scvp-vp-request spq -application/scvp-vp-response spp -application/sdp sdp -# application/set-payment -application/set-payment-initiation setpay -# application/set-registration -application/set-registration-initiation setreg -# application/sgml -# application/sgml-open-catalog -application/shf+xml shf -# application/sieve -# application/simple-filter+xml -# application/simple-message-summary -# application/simplesymbolcontainer -# application/slate -# application/smil -application/smil+xml smi smil -# application/soap+fastinfoset -# application/soap+xml -application/sparql-query rq -application/sparql-results+xml srx -# application/spirits-event+xml -application/srgs gram -application/srgs+xml grxml -application/sru+xml sru -application/ssml+xml ssml -# application/tamp-apex-update -# application/tamp-apex-update-confirm -# application/tamp-community-update -# application/tamp-community-update-confirm -# application/tamp-error -# application/tamp-sequence-adjust -# application/tamp-sequence-adjust-confirm -# application/tamp-status-query -# application/tamp-status-response -# application/tamp-update -# application/tamp-update-confirm -application/tei+xml tei teicorpus -application/thraud+xml tfi -# application/timestamp-query -# application/timestamp-reply -application/timestamped-data tsd -# application/tve-trigger -# application/ulpfec -# application/vcard+xml -# application/vemmi -# application/vividence.scriptfile -# application/vnd.3gpp.bsf+xml -application/vnd.3gpp.pic-bw-large plb -application/vnd.3gpp.pic-bw-small psb -application/vnd.3gpp.pic-bw-var pvb -# application/vnd.3gpp.sms -# application/vnd.3gpp2.bcmcsinfo+xml -# application/vnd.3gpp2.sms -application/vnd.3gpp2.tcap tcap -application/vnd.3m.post-it-notes pwn -application/vnd.accpac.simply.aso aso -application/vnd.accpac.simply.imp imp -application/vnd.acucobol acu -application/vnd.acucorp atc acutc -application/vnd.adobe.air-application-installer-package+zip air -application/vnd.adobe.fxp fxp fxpl -# application/vnd.adobe.partial-upload -application/vnd.adobe.xdp+xml xdp -application/vnd.adobe.xfdf xfdf -# application/vnd.aether.imp -# application/vnd.ah-barcode -application/vnd.ahead.space ahead -application/vnd.airzip.filesecure.azf azf -application/vnd.airzip.filesecure.azs azs -application/vnd.amazon.ebook azw -application/vnd.americandynamics.acc acc -application/vnd.amiga.ami ami -# application/vnd.amundsen.maze+xml -application/vnd.android.package-archive apk -application/vnd.anser-web-certificate-issue-initiation cii -application/vnd.anser-web-funds-transfer-initiation fti -application/vnd.antix.game-component atx -application/vnd.apple.installer+xml mpkg -application/vnd.apple.mpegurl m3u8 -# application/vnd.arastra.swi -application/vnd.aristanetworks.swi swi -application/vnd.astraea-software.iota iota -application/vnd.audiograph aep -# application/vnd.autopackage -# application/vnd.avistar+xml -application/vnd.blueice.multipass mpm -# application/vnd.bluetooth.ep.oob -application/vnd.bmi bmi -application/vnd.businessobjects rep -# application/vnd.cab-jscript -# application/vnd.canon-cpdl -# application/vnd.canon-lips -# application/vnd.cendio.thinlinc.clientconf -application/vnd.chemdraw+xml cdxml -application/vnd.chipnuts.karaoke-mmd mmd -application/vnd.cinderella cdy -# application/vnd.cirpack.isdn-ext -application/vnd.claymore cla -application/vnd.cloanto.rp9 rp9 -application/vnd.clonk.c4group c4g c4d c4f c4p c4u -application/vnd.cluetrust.cartomobile-config c11amc -application/vnd.cluetrust.cartomobile-config-pkg c11amz -# application/vnd.collection+json -# application/vnd.commerce-battelle -application/vnd.commonspace csp -application/vnd.contact.cmsg cdbcmsg -application/vnd.cosmocaller cmc -application/vnd.crick.clicker clkx -application/vnd.crick.clicker.keyboard clkk -application/vnd.crick.clicker.palette clkp -application/vnd.crick.clicker.template clkt -application/vnd.crick.clicker.wordbank clkw -application/vnd.criticaltools.wbs+xml wbs -application/vnd.ctc-posml pml -# application/vnd.ctct.ws+xml -# application/vnd.cups-pdf -# application/vnd.cups-postscript -application/vnd.cups-ppd ppd -# application/vnd.cups-raster -# application/vnd.cups-raw -# application/vnd.curl -application/vnd.curl.car car -application/vnd.curl.pcurl pcurl -# application/vnd.cybank -application/vnd.data-vision.rdz rdz -application/vnd.dece.data uvf uvvf uvd uvvd -application/vnd.dece.ttml+xml uvt uvvt -application/vnd.dece.unspecified uvx uvvx -application/vnd.dece.zip uvz uvvz -application/vnd.denovo.fcselayout-link fe_launch -# application/vnd.dir-bi.plate-dl-nosuffix -application/vnd.dna dna -application/vnd.dolby.mlp mlp -# application/vnd.dolby.mobile.1 -# application/vnd.dolby.mobile.2 -application/vnd.dpgraph dpg -application/vnd.dreamfactory dfac -application/vnd.dvb.ait ait -# application/vnd.dvb.dvbj -# application/vnd.dvb.esgcontainer -# application/vnd.dvb.ipdcdftnotifaccess -# application/vnd.dvb.ipdcesgaccess -# application/vnd.dvb.ipdcesgaccess2 -# application/vnd.dvb.ipdcesgpdd -# application/vnd.dvb.ipdcroaming -# application/vnd.dvb.iptv.alfec-base -# application/vnd.dvb.iptv.alfec-enhancement -# application/vnd.dvb.notif-aggregate-root+xml -# application/vnd.dvb.notif-container+xml -# application/vnd.dvb.notif-generic+xml -# application/vnd.dvb.notif-ia-msglist+xml -# application/vnd.dvb.notif-ia-registration-request+xml -# application/vnd.dvb.notif-ia-registration-response+xml -# application/vnd.dvb.notif-init+xml -# application/vnd.dvb.pfr -application/vnd.dvb.service svc -# application/vnd.dxr -application/vnd.dynageo geo -# application/vnd.easykaraoke.cdgdownload -# application/vnd.ecdis-update -application/vnd.ecowin.chart mag -# application/vnd.ecowin.filerequest -# application/vnd.ecowin.fileupdate -# application/vnd.ecowin.series -# application/vnd.ecowin.seriesrequest -# application/vnd.ecowin.seriesupdate -# application/vnd.emclient.accessrequest+xml -application/vnd.enliven nml -# application/vnd.eprints.data+xml -application/vnd.epson.esf esf -application/vnd.epson.msf msf -application/vnd.epson.quickanime qam -application/vnd.epson.salt slt -application/vnd.epson.ssf ssf -# application/vnd.ericsson.quickcall -application/vnd.eszigno3+xml es3 et3 -# application/vnd.etsi.aoc+xml -# application/vnd.etsi.cug+xml -# application/vnd.etsi.iptvcommand+xml -# application/vnd.etsi.iptvdiscovery+xml -# application/vnd.etsi.iptvprofile+xml -# application/vnd.etsi.iptvsad-bc+xml -# application/vnd.etsi.iptvsad-cod+xml -# application/vnd.etsi.iptvsad-npvr+xml -# application/vnd.etsi.iptvservice+xml -# application/vnd.etsi.iptvsync+xml -# application/vnd.etsi.iptvueprofile+xml -# application/vnd.etsi.mcid+xml -# application/vnd.etsi.overload-control-policy-dataset+xml -# application/vnd.etsi.sci+xml -# application/vnd.etsi.simservs+xml -# application/vnd.etsi.tsl+xml -# application/vnd.etsi.tsl.der -# application/vnd.eudora.data -application/vnd.ezpix-album ez2 -application/vnd.ezpix-package ez3 -# application/vnd.f-secure.mobile -application/vnd.fdf fdf -application/vnd.fdsn.mseed mseed -application/vnd.fdsn.seed seed dataless -# application/vnd.ffsns -# application/vnd.fints -application/vnd.flographit gph -application/vnd.fluxtime.clip ftc -# application/vnd.font-fontforge-sfd -application/vnd.framemaker fm frame maker book -application/vnd.frogans.fnc fnc -application/vnd.frogans.ltf ltf -application/vnd.fsc.weblaunch fsc -application/vnd.fujitsu.oasys oas -application/vnd.fujitsu.oasys2 oa2 -application/vnd.fujitsu.oasys3 oa3 -application/vnd.fujitsu.oasysgp fg5 -application/vnd.fujitsu.oasysprs bh2 -# application/vnd.fujixerox.art-ex -# application/vnd.fujixerox.art4 -# application/vnd.fujixerox.hbpl -application/vnd.fujixerox.ddd ddd -application/vnd.fujixerox.docuworks xdw -application/vnd.fujixerox.docuworks.binder xbd -# application/vnd.fut-misnet -application/vnd.fuzzysheet fzs -application/vnd.genomatix.tuxedo txd -# application/vnd.geocube+xml -application/vnd.geogebra.file ggb -application/vnd.geogebra.tool ggt -application/vnd.geometry-explorer gex gre -application/vnd.geonext gxt -application/vnd.geoplan g2w -application/vnd.geospace g3w -# application/vnd.globalplatform.card-content-mgt -# application/vnd.globalplatform.card-content-mgt-response -application/vnd.gmx gmx -application/vnd.google-earth.kml+xml kml -application/vnd.google-earth.kmz kmz -application/vnd.grafeq gqf gqs -# application/vnd.gridmp -application/vnd.groove-account gac -application/vnd.groove-help ghf -application/vnd.groove-identity-message gim -application/vnd.groove-injector grv -application/vnd.groove-tool-message gtm -application/vnd.groove-tool-template tpl -application/vnd.groove-vcard vcg -# application/vnd.hal+json -application/vnd.hal+xml hal -application/vnd.handheld-entertainment+xml zmm -application/vnd.hbci hbci -# application/vnd.hcl-bireports -application/vnd.hhe.lesson-player les -application/vnd.hp-hpgl hpgl -application/vnd.hp-hpid hpid -application/vnd.hp-hps hps -application/vnd.hp-jlyt jlt -application/vnd.hp-pcl pcl -application/vnd.hp-pclxl pclxl -# application/vnd.httphone -application/vnd.hydrostatix.sof-data sfd-hdstx -application/vnd.hzn-3d-crossword x3d -# application/vnd.ibm.afplinedata -# application/vnd.ibm.electronic-media -application/vnd.ibm.minipay mpy -application/vnd.ibm.modcap afp listafp list3820 -application/vnd.ibm.rights-management irm -application/vnd.ibm.secure-container sc -application/vnd.iccprofile icc icm -application/vnd.igloader igl -application/vnd.immervision-ivp ivp -application/vnd.immervision-ivu ivu -# application/vnd.informedcontrol.rms+xml -# application/vnd.informix-visionary -# application/vnd.infotech.project -# application/vnd.infotech.project+xml -application/vnd.insors.igm igm -application/vnd.intercon.formnet xpw xpx -application/vnd.intergeo i2g -# application/vnd.intertrust.digibox -# application/vnd.intertrust.nncp -application/vnd.intu.qbo qbo -application/vnd.intu.qfx qfx -# application/vnd.iptc.g2.conceptitem+xml -# application/vnd.iptc.g2.knowledgeitem+xml -# application/vnd.iptc.g2.newsitem+xml -# application/vnd.iptc.g2.packageitem+xml -application/vnd.ipunplugged.rcprofile rcprofile -application/vnd.irepository.package+xml irp -application/vnd.is-xpr xpr -application/vnd.isac.fcs fcs -application/vnd.jam jam -# application/vnd.japannet-directory-service -# application/vnd.japannet-jpnstore-wakeup -# application/vnd.japannet-payment-wakeup -# application/vnd.japannet-registration -# application/vnd.japannet-registration-wakeup -# application/vnd.japannet-setstore-wakeup -# application/vnd.japannet-verification -# application/vnd.japannet-verification-wakeup -application/vnd.jcp.javame.midlet-rms rms -application/vnd.jisp jisp -application/vnd.joost.joda-archive joda -application/vnd.kahootz ktz ktr -application/vnd.kde.karbon karbon -application/vnd.kde.kchart chrt -application/vnd.kde.kformula kfo -application/vnd.kde.kivio flw -application/vnd.kde.kontour kon -application/vnd.kde.kpresenter kpr kpt -application/vnd.kde.kspread ksp -application/vnd.kde.kword kwd kwt -application/vnd.kenameaapp htke -application/vnd.kidspiration kia -application/vnd.kinar kne knp -application/vnd.koan skp skd skt skm -application/vnd.kodak-descriptor sse -application/vnd.las.las+xml lasxml -# application/vnd.liberty-request+xml -application/vnd.llamagraphics.life-balance.desktop lbd -application/vnd.llamagraphics.life-balance.exchange+xml lbe -application/vnd.lotus-1-2-3 123 -application/vnd.lotus-approach apr -application/vnd.lotus-freelance pre -application/vnd.lotus-notes nsf -application/vnd.lotus-organizer org -application/vnd.lotus-screencam scm -application/vnd.lotus-wordpro lwp -application/vnd.macports.portpkg portpkg -# application/vnd.marlin.drm.actiontoken+xml -# application/vnd.marlin.drm.conftoken+xml -# application/vnd.marlin.drm.license+xml -# application/vnd.marlin.drm.mdcf -application/vnd.mcd mcd -application/vnd.medcalcdata mc1 -application/vnd.mediastation.cdkey cdkey -# application/vnd.meridian-slingshot -application/vnd.mfer mwf -application/vnd.mfmp mfm -application/vnd.micrografx.flo flo -application/vnd.micrografx.igx igx -application/vnd.mif mif -# application/vnd.minisoft-hp3000-save -# application/vnd.mitsubishi.misty-guard.trustweb -application/vnd.mobius.daf daf -application/vnd.mobius.dis dis -application/vnd.mobius.mbk mbk -application/vnd.mobius.mqy mqy -application/vnd.mobius.msl msl -application/vnd.mobius.plc plc -application/vnd.mobius.txf txf -application/vnd.mophun.application mpn -application/vnd.mophun.certificate mpc -# application/vnd.motorola.flexsuite -# application/vnd.motorola.flexsuite.adsi -# application/vnd.motorola.flexsuite.fis -# application/vnd.motorola.flexsuite.gotap -# application/vnd.motorola.flexsuite.kmr -# application/vnd.motorola.flexsuite.ttc -# application/vnd.motorola.flexsuite.wem -# application/vnd.motorola.iprm -application/vnd.mozilla.xul+xml xul -application/vnd.ms-artgalry cil -# application/vnd.ms-asf -application/vnd.ms-cab-compressed cab -application/vnd.ms-excel xls xlm xla xlc xlt xlw -application/vnd.ms-excel.addin.macroenabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb -application/vnd.ms-excel.sheet.macroenabled.12 xlsm -application/vnd.ms-excel.template.macroenabled.12 xltm -application/vnd.ms-fontobject eot -application/vnd.ms-htmlhelp chm -application/vnd.ms-ims ims -application/vnd.ms-lrm lrm -# application/vnd.ms-office.activex+xml -application/vnd.ms-officetheme thmx -application/vnd.ms-pki.seccat cat -application/vnd.ms-pki.stl stl -# application/vnd.ms-playready.initiator+xml -application/vnd.ms-powerpoint ppt pps pot -application/vnd.ms-powerpoint.addin.macroenabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm -application/vnd.ms-powerpoint.slide.macroenabled.12 sldm -application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm -application/vnd.ms-powerpoint.template.macroenabled.12 potm -application/vnd.ms-project mpp mpt -# application/vnd.ms-tnef -# application/vnd.ms-wmdrm.lic-chlg-req -# application/vnd.ms-wmdrm.lic-resp -# application/vnd.ms-wmdrm.meter-chlg-req -# application/vnd.ms-wmdrm.meter-resp -application/vnd.ms-word.document.macroenabled.12 docm -application/vnd.ms-word.template.macroenabled.12 dotm -application/vnd.ms-works wps wks wcm wdb -application/vnd.ms-wpl wpl -application/vnd.ms-xpsdocument xps -application/vnd.mseq mseq -# application/vnd.msign -# application/vnd.multiad.creator -# application/vnd.multiad.creator.cif -# application/vnd.music-niff -application/vnd.musician mus -application/vnd.muvee.style msty -application/vnd.mynfc taglet -# application/vnd.ncd.control -# application/vnd.ncd.reference -# application/vnd.nervana -# application/vnd.netfpx -application/vnd.neurolanguage.nlu nlu -application/vnd.noblenet-directory nnd -application/vnd.noblenet-sealer nns -application/vnd.noblenet-web nnw -# application/vnd.nokia.catalogs -# application/vnd.nokia.conml+wbxml -# application/vnd.nokia.conml+xml -# application/vnd.nokia.isds-radio-presets -# application/vnd.nokia.iptv.config+xml -# application/vnd.nokia.landmark+wbxml -# application/vnd.nokia.landmark+xml -# application/vnd.nokia.landmarkcollection+xml -# application/vnd.nokia.n-gage.ac+xml -application/vnd.nokia.n-gage.data ngdat -application/vnd.nokia.n-gage.symbian.install n-gage -# application/vnd.nokia.ncd -# application/vnd.nokia.pcd+wbxml -# application/vnd.nokia.pcd+xml -application/vnd.nokia.radio-preset rpst -application/vnd.nokia.radio-presets rpss -application/vnd.novadigm.edm edm -application/vnd.novadigm.edx edx -application/vnd.novadigm.ext ext -# application/vnd.ntt-local.file-transfer -# application/vnd.ntt-local.sip-ta_remote -# application/vnd.ntt-local.sip-ta_tcp_stream -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template odft -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -# application/vnd.obn -# application/vnd.oftn.l10n+json -# application/vnd.oipf.contentaccessdownload+xml -# application/vnd.oipf.contentaccessstreaming+xml -# application/vnd.oipf.cspg-hexbinary -# application/vnd.oipf.dae.svg+xml -# application/vnd.oipf.dae.xhtml+xml -# application/vnd.oipf.mippvcontrolmessage+xml -# application/vnd.oipf.pae.gem -# application/vnd.oipf.spdiscovery+xml -# application/vnd.oipf.spdlist+xml -# application/vnd.oipf.ueprofile+xml -# application/vnd.oipf.userprofile+xml -application/vnd.olpc-sugar xo -# application/vnd.oma-scws-config -# application/vnd.oma-scws-http-request -# application/vnd.oma-scws-http-response -# application/vnd.oma.bcast.associated-procedure-parameter+xml -# application/vnd.oma.bcast.drm-trigger+xml -# application/vnd.oma.bcast.imd+xml -# application/vnd.oma.bcast.ltkm -# application/vnd.oma.bcast.notification+xml -# application/vnd.oma.bcast.provisioningtrigger -# application/vnd.oma.bcast.sgboot -# application/vnd.oma.bcast.sgdd+xml -# application/vnd.oma.bcast.sgdu -# application/vnd.oma.bcast.simple-symbol-container -# application/vnd.oma.bcast.smartcard-trigger+xml -# application/vnd.oma.bcast.sprov+xml -# application/vnd.oma.bcast.stkm -# application/vnd.oma.cab-address-book+xml -# application/vnd.oma.cab-feature-handler+xml -# application/vnd.oma.cab-pcc+xml -# application/vnd.oma.cab-user-prefs+xml -# application/vnd.oma.dcd -# application/vnd.oma.dcdc -application/vnd.oma.dd2+xml dd2 -# application/vnd.oma.drm.risd+xml -# application/vnd.oma.group-usage-list+xml -# application/vnd.oma.pal+xml -# application/vnd.oma.poc.detailed-progress-report+xml -# application/vnd.oma.poc.final-report+xml -# application/vnd.oma.poc.groups+xml -# application/vnd.oma.poc.invocation-descriptor+xml -# application/vnd.oma.poc.optimized-progress-report+xml -# application/vnd.oma.push -# application/vnd.oma.scidm.messages+xml -# application/vnd.oma.xcap-directory+xml -# application/vnd.omads-email+xml -# application/vnd.omads-file+xml -# application/vnd.omads-folder+xml -# application/vnd.omaloc-supl-init -application/vnd.openofficeorg.extension oxt -# application/vnd.openxmlformats-officedocument.custom-properties+xml -# application/vnd.openxmlformats-officedocument.customxmlproperties+xml -# application/vnd.openxmlformats-officedocument.drawing+xml -# application/vnd.openxmlformats-officedocument.drawingml.chart+xml -# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml -# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml -# application/vnd.openxmlformats-officedocument.extended-properties+xml -# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml -# application/vnd.openxmlformats-officedocument.presentationml.comments+xml -# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml -# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml -application/vnd.openxmlformats-officedocument.presentationml.slide sldx -# application/vnd.openxmlformats-officedocument.presentationml.slide+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml -# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml -# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml -# application/vnd.openxmlformats-officedocument.presentationml.tags+xml -application/vnd.openxmlformats-officedocument.presentationml.template potx -# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml -# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml -# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml -# application/vnd.openxmlformats-officedocument.theme+xml -# application/vnd.openxmlformats-officedocument.themeoverride+xml -# application/vnd.openxmlformats-officedocument.vmldrawing -# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml -# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml -# application/vnd.openxmlformats-package.core-properties+xml -# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml -# application/vnd.openxmlformats-package.relationships+xml -# application/vnd.quobject-quoxdocument -# application/vnd.osa.netdeploy -application/vnd.osgeo.mapguide.package mgp -# application/vnd.osgi.bundle -application/vnd.osgi.dp dp -# application/vnd.otps.ct-kip+xml -application/vnd.palm pdb pqa oprc -# application/vnd.paos.xml -application/vnd.pawaafile paw -application/vnd.pg.format str -application/vnd.pg.osasli ei6 -# application/vnd.piaccess.application-licence -application/vnd.picsel efif -application/vnd.pmi.widget wg -# application/vnd.poc.group-advertisement+xml -application/vnd.pocketlearn plf -application/vnd.powerbuilder6 pbd -# application/vnd.powerbuilder6-s -# application/vnd.powerbuilder7 -# application/vnd.powerbuilder7-s -# application/vnd.powerbuilder75 -# application/vnd.powerbuilder75-s -# application/vnd.preminet -application/vnd.previewsystems.box box -application/vnd.proteus.magazine mgz -application/vnd.publishare-delta-tree qps -application/vnd.pvi.ptid1 ptid -# application/vnd.pwg-multiplexed -# application/vnd.pwg-xhtml-print+xml -# application/vnd.qualcomm.brew-app-res -application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb -# application/vnd.radisys.moml+xml -# application/vnd.radisys.msml+xml -# application/vnd.radisys.msml-audit+xml -# application/vnd.radisys.msml-audit-conf+xml -# application/vnd.radisys.msml-audit-conn+xml -# application/vnd.radisys.msml-audit-dialog+xml -# application/vnd.radisys.msml-audit-stream+xml -# application/vnd.radisys.msml-conf+xml -# application/vnd.radisys.msml-dialog+xml -# application/vnd.radisys.msml-dialog-base+xml -# application/vnd.radisys.msml-dialog-fax-detect+xml -# application/vnd.radisys.msml-dialog-fax-sendrecv+xml -# application/vnd.radisys.msml-dialog-group+xml -# application/vnd.radisys.msml-dialog-speech+xml -# application/vnd.radisys.msml-dialog-transform+xml -# application/vnd.rainstor.data -# application/vnd.rapid -application/vnd.realvnc.bed bed -application/vnd.recordare.musicxml mxl -application/vnd.recordare.musicxml+xml musicxml -# application/vnd.renlearn.rlprint -application/vnd.rig.cryptonote cryptonote -application/vnd.rim.cod cod -application/vnd.rn-realmedia rm -application/vnd.route66.link66+xml link66 -# application/vnd.ruckus.download -# application/vnd.s3sms -application/vnd.sailingtracker.track st -# application/vnd.sbm.cid -# application/vnd.sbm.mid2 -# application/vnd.scribus -# application/vnd.sealed.3df -# application/vnd.sealed.csf -# application/vnd.sealed.doc -# application/vnd.sealed.eml -# application/vnd.sealed.mht -# application/vnd.sealed.net -# application/vnd.sealed.ppt -# application/vnd.sealed.tiff -# application/vnd.sealed.xls -# application/vnd.sealedmedia.softseal.html -# application/vnd.sealedmedia.softseal.pdf -application/vnd.seemail see -application/vnd.sema sema -application/vnd.semd semd -application/vnd.semf semf -application/vnd.shana.informed.formdata ifm -application/vnd.shana.informed.formtemplate itp -application/vnd.shana.informed.interchange iif -application/vnd.shana.informed.package ipk -application/vnd.simtech-mindmapper twd twds -application/vnd.smaf mmf -# application/vnd.smart.notebook -application/vnd.smart.teacher teacher -# application/vnd.software602.filler.form+xml -# application/vnd.software602.filler.form-xml-zip -application/vnd.solent.sdkm+xml sdkm sdkd -application/vnd.spotfire.dxp dxp -application/vnd.spotfire.sfs sfs -# application/vnd.sss-cod -# application/vnd.sss-dtf -# application/vnd.sss-ntf -application/vnd.stardivision.calc sdc -application/vnd.stardivision.draw sda -application/vnd.stardivision.impress sdd -application/vnd.stardivision.math smf -application/vnd.stardivision.writer sdw vor -application/vnd.stardivision.writer-global sgl -application/vnd.stepmania.package smzip -application/vnd.stepmania.stepchart sm -# application/vnd.street-stream -application/vnd.sun.xml.calc sxc -application/vnd.sun.xml.calc.template stc -application/vnd.sun.xml.draw sxd -application/vnd.sun.xml.draw.template std -application/vnd.sun.xml.impress sxi -application/vnd.sun.xml.impress.template sti -application/vnd.sun.xml.math sxm -application/vnd.sun.xml.writer sxw -application/vnd.sun.xml.writer.global sxg -application/vnd.sun.xml.writer.template stw -# application/vnd.sun.wadl+xml -application/vnd.sus-calendar sus susp -application/vnd.svd svd -# application/vnd.swiftview-ics -application/vnd.symbian.install sis sisx -application/vnd.syncml+xml xsm -application/vnd.syncml.dm+wbxml bdm -application/vnd.syncml.dm+xml xdm -# application/vnd.syncml.dm.notification -# application/vnd.syncml.ds.notification -application/vnd.tao.intent-module-archive tao -application/vnd.tcpdump.pcap pcap cap dmp -application/vnd.tmobile-livetv tmo -application/vnd.trid.tpt tpt -application/vnd.triscape.mxs mxs -application/vnd.trueapp tra -# application/vnd.truedoc -# application/vnd.ubisoft.webplayer -application/vnd.ufdl ufd ufdl -application/vnd.uiq.theme utz -application/vnd.umajin umj -application/vnd.unity unityweb -application/vnd.uoml+xml uoml -# application/vnd.uplanet.alert -# application/vnd.uplanet.alert-wbxml -# application/vnd.uplanet.bearer-choice -# application/vnd.uplanet.bearer-choice-wbxml -# application/vnd.uplanet.cacheop -# application/vnd.uplanet.cacheop-wbxml -# application/vnd.uplanet.channel -# application/vnd.uplanet.channel-wbxml -# application/vnd.uplanet.list -# application/vnd.uplanet.list-wbxml -# application/vnd.uplanet.listcmd -# application/vnd.uplanet.listcmd-wbxml -# application/vnd.uplanet.signal -application/vnd.vcx vcx -# application/vnd.vd-study -# application/vnd.vectorworks -# application/vnd.verimatrix.vcas -# application/vnd.vidsoft.vidconference -application/vnd.visio vsd vst vss vsw -application/vnd.visionary vis -# application/vnd.vividence.scriptfile -application/vnd.vsf vsf -# application/vnd.wap.sic -# application/vnd.wap.slc -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/vnd.webturbo wtb -# application/vnd.wfa.wsc -# application/vnd.wmc -# application/vnd.wmf.bootstrap -# application/vnd.wolfram.mathematica -# application/vnd.wolfram.mathematica.package -application/vnd.wolfram.player nbp -application/vnd.wordperfect wpd -application/vnd.wqd wqd -# application/vnd.wrq-hp3000-labelled -application/vnd.wt.stf stf -# application/vnd.wv.csp+wbxml -# application/vnd.wv.csp+xml -# application/vnd.wv.ssp+xml -application/vnd.xara xar -application/vnd.xfdl xfdl -# application/vnd.xfdl.webform -# application/vnd.xmi+xml -# application/vnd.xmpie.cpkg -# application/vnd.xmpie.dpkg -# application/vnd.xmpie.plan -# application/vnd.xmpie.ppkg -# application/vnd.xmpie.xlim -application/vnd.yamaha.hv-dic hvd -application/vnd.yamaha.hv-script hvs -application/vnd.yamaha.hv-voice hvp -application/vnd.yamaha.openscoreformat osf -application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg -# application/vnd.yamaha.remote-setup -application/vnd.yamaha.smaf-audio saf -application/vnd.yamaha.smaf-phrase spf -# application/vnd.yamaha.through-ngn -# application/vnd.yamaha.tunnel-udpencap -application/vnd.yellowriver-custom-menu cmp -application/vnd.zul zir zirz -application/vnd.zzazz.deck+xml zaz -application/voicexml+xml vxml -# application/vq-rtcpxr -# application/watcherinfo+xml -# application/whoispp-query -# application/whoispp-response -application/widget wgt -application/winhlp hlp -# application/wita -# application/wordperfect5.1 -application/wsdl+xml wsdl -application/wspolicy+xml wspolicy -application/x-7z-compressed 7z -application/x-abiword abw -application/x-ace-compressed ace -application/x-authorware-bin aab x32 u32 vox -application/x-authorware-map aam -application/x-authorware-seg aas -application/x-bcpio bcpio -application/x-bittorrent torrent -application/x-bzip bz -application/x-bzip2 bz2 boz -application/x-cdlink vcd -application/x-chat chat -application/x-chess-pgn pgn -# application/x-compress -application/x-cpio cpio -application/x-csh csh -application/x-debian-package deb udeb -application/x-director dir dcr dxr cst cct cxt w3d fgd swa -application/x-doom wad -application/x-dtbncx+xml ncx -application/x-dtbook+xml dtb -application/x-dtbresource+xml res -application/x-dvi dvi -application/x-font-bdf bdf -# application/x-font-dos -# application/x-font-framemaker -application/x-font-ghostscript gsf -# application/x-font-libgrx -application/x-font-linux-psf psf -application/x-font-otf otf -application/x-font-pcf pcf -application/x-font-snf snf -# application/x-font-speedo -# application/x-font-sunos-news -application/x-font-ttf ttf ttc -application/x-font-type1 pfa pfb pfm afm -application/x-font-woff woff -# application/x-font-vfont -application/x-futuresplash spl -application/x-gnumeric gnumeric -application/x-gtar gtar -# application/x-gzip -application/x-hdf hdf -application/x-java-jnlp-file jnlp -application/x-latex latex -application/x-mobipocket-ebook prc mobi -application/x-ms-application application -application/x-ms-wmd wmd -application/x-ms-wmz wmz -application/x-ms-xbap xbap -application/x-msaccess mdb -application/x-msbinder obd -application/x-mscardfile crd -application/x-msclip clp -application/x-msdownload exe dll com bat msi -application/x-msmediaview mvb m13 m14 -application/x-msmetafile wmf -application/x-msmoney mny -application/x-mspublisher pub -application/x-msschedule scd -application/x-msterminal trm -application/x-mswrite wri -application/x-netcdf nc cdf -application/x-pkcs12 p12 pfx -application/x-pkcs7-certificates p7b spc -application/x-pkcs7-certreqresp p7r -application/x-rar-compressed rar -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-silverlight-app xap -application/x-stuffit sit -application/x-stuffitx sitx -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-tex-tfm tfm -application/x-texinfo texinfo texi -application/x-ustar ustar -application/x-wais-source src -application/x-x509-ca-cert der crt -application/x-xfig fig -application/x-xpinstall xpi -# application/x400-bp -# application/xcap-att+xml -# application/xcap-caps+xml -application/xcap-diff+xml xdf -# application/xcap-el+xml -# application/xcap-error+xml -# application/xcap-ns+xml -# application/xcon-conference-info-diff+xml -# application/xcon-conference-info+xml -application/xenc+xml xenc -application/xhtml+xml xhtml xht -# application/xhtml-voice+xml -application/xml xml xsl -application/xml-dtd dtd -# application/xml-external-parsed-entity -# application/xmpp+xml -application/xop+xml xop -application/xslt+xml xslt -application/xspf+xml xspf -application/xv+xml mxml xhvml xvml xvm -application/yang yang -application/yin+xml yin -application/zip zip -# audio/1d-interleaved-parityfec -# audio/32kadpcm -# audio/3gpp -# audio/3gpp2 -# audio/ac3 -audio/adpcm adp -# audio/amr -# audio/amr-wb -# audio/amr-wb+ -# audio/asc -# audio/atrac-advanced-lossless -# audio/atrac-x -# audio/atrac3 -audio/basic au snd -# audio/bv16 -# audio/bv32 -# audio/clearmode -# audio/cn -# audio/dat12 -# audio/dls -# audio/dsr-es201108 -# audio/dsr-es202050 -# audio/dsr-es202211 -# audio/dsr-es202212 -# audio/dv -# audio/dvi4 -# audio/eac3 -# audio/evrc -# audio/evrc-qcp -# audio/evrc0 -# audio/evrc1 -# audio/evrcb -# audio/evrcb0 -# audio/evrcb1 -# audio/evrcwb -# audio/evrcwb0 -# audio/evrcwb1 -# audio/example -# audio/fwdred -# audio/g719 -# audio/g722 -# audio/g7221 -# audio/g723 -# audio/g726-16 -# audio/g726-24 -# audio/g726-32 -# audio/g726-40 -# audio/g728 -# audio/g729 -# audio/g7291 -# audio/g729d -# audio/g729e -# audio/gsm -# audio/gsm-efr -# audio/gsm-hr-08 -# audio/ilbc -# audio/ip-mr_v2.5 -# audio/l16 -# audio/l20 -# audio/l24 -# audio/l8 -# audio/lpc -audio/midi mid midi kar rmi -# audio/mobile-xmf -audio/mp4 mp4a -# audio/mp4a-latm -# audio/mpa -# audio/mpa-robust -audio/mpeg mpga mp2 mp2a mp3 m2a m3a -# audio/mpeg4-generic -audio/ogg oga ogg spx -# audio/parityfec -# audio/pcma -# audio/pcma-wb -# audio/pcmu-wb -# audio/pcmu -# audio/prs.sid -# audio/qcelp -# audio/red -# audio/rtp-enc-aescm128 -# audio/rtp-midi -# audio/rtx -# audio/smv -# audio/smv0 -# audio/smv-qcp -# audio/sp-midi -# audio/speex -# audio/t140c -# audio/t38 -# audio/telephone-event -# audio/tone -# audio/uemclip -# audio/ulpfec -# audio/vdvi -# audio/vmr-wb -# audio/vnd.3gpp.iufp -# audio/vnd.4sb -# audio/vnd.audiokoz -# audio/vnd.celp -# audio/vnd.cisco.nse -# audio/vnd.cmles.radio-events -# audio/vnd.cns.anp1 -# audio/vnd.cns.inf1 -audio/vnd.dece.audio uva uvva -audio/vnd.digital-winds eol -# audio/vnd.dlna.adts -# audio/vnd.dolby.heaac.1 -# audio/vnd.dolby.heaac.2 -# audio/vnd.dolby.mlp -# audio/vnd.dolby.mps -# audio/vnd.dolby.pl2 -# audio/vnd.dolby.pl2x -# audio/vnd.dolby.pl2z -# audio/vnd.dolby.pulse.1 -audio/vnd.dra dra -audio/vnd.dts dts -audio/vnd.dts.hd dtshd -# audio/vnd.dvb.file dvb -# audio/vnd.everad.plj -# audio/vnd.hns.audio -audio/vnd.lucent.voice lvp -audio/vnd.ms-playready.media.pya pya -# audio/vnd.nokia.mobile-xmf -# audio/vnd.nortel.vbk -audio/vnd.nuera.ecelp4800 ecelp4800 -audio/vnd.nuera.ecelp7470 ecelp7470 -audio/vnd.nuera.ecelp9600 ecelp9600 -# audio/vnd.octel.sbc -# audio/vnd.qcelp -# audio/vnd.rhetorex.32kadpcm -audio/vnd.rip rip -# audio/vnd.sealedmedia.softseal.mpeg -# audio/vnd.vmx.cvsd -# audio/vorbis -# audio/vorbis-config -audio/webm weba -audio/x-aac aac -audio/x-aiff aif aiff aifc -audio/x-mpegurl m3u -audio/x-ms-wax wax -audio/x-ms-wma wma -audio/x-pn-realaudio ram ra -audio/x-pn-realaudio-plugin rmp -audio/x-wav wav -chemical/x-cdx cdx -chemical/x-cif cif -chemical/x-cmdf cmdf -chemical/x-cml cml -chemical/x-csml csml -# chemical/x-pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -# image/example -# image/fits -image/g3fax g3 -image/gif gif -image/ief ief -# image/jp2 -image/jpeg jpeg jpg jpe -# image/jpm -# image/jpx -image/ktx ktx -# image/naplps -image/png png -image/prs.btif btif -# image/prs.pti -image/svg+xml svg svgz -# image/t38 -image/tiff tiff tif -# image/tiff-fx -image/vnd.adobe.photoshop psd -# image/vnd.cns.inf2 -image/vnd.dece.graphic uvi uvvi uvg uvvg -image/vnd.dvb.subtitle sub -image/vnd.djvu djvu djv -image/vnd.dwg dwg -image/vnd.dxf dxf -image/vnd.fastbidsheet fbs -image/vnd.fpx fpx -image/vnd.fst fst -image/vnd.fujixerox.edmics-mmr mmr -image/vnd.fujixerox.edmics-rlc rlc -# image/vnd.globalgraphics.pgb -# image/vnd.microsoft.icon -# image/vnd.mix -image/vnd.ms-modi mdi -image/vnd.net-fpx npx -# image/vnd.radiance -# image/vnd.sealed.png -# image/vnd.sealedmedia.softseal.gif -# image/vnd.sealedmedia.softseal.jpg -# image/vnd.svf -image/vnd.wap.wbmp wbmp -image/vnd.xiff xif -image/webp webp -image/x-cmu-raster ras -image/x-cmx cmx -image/x-freehand fh fhc fh4 fh5 fh7 -image/x-icon ico -image/x-pcx pcx -image/x-pict pic pct -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -# message/cpim -# message/delivery-status -# message/disposition-notification -# message/example -# message/external-body -# message/feedback-report -# message/global -# message/global-delivery-status -# message/global-disposition-notification -# message/global-headers -# message/http -# message/imdn+xml -# message/news -# message/partial -message/rfc822 eml mime -# message/s-http -# message/sip -# message/sipfrag -# message/tracking-status -# message/vnd.si.simp -# model/example -model/iges igs iges -model/mesh msh mesh silo -model/vnd.collada+xml dae -model/vnd.dwf dwf -# model/vnd.flatland.3dml -model/vnd.gdl gdl -# model/vnd.gs-gdl -# model/vnd.gs.gdl -model/vnd.gtw gtw -# model/vnd.moml+xml -model/vnd.mts mts -# model/vnd.parasolid.transmit.binary -# model/vnd.parasolid.transmit.text -model/vnd.vtu vtu -model/vrml wrl vrml -# multipart/alternative -# multipart/appledouble -# multipart/byteranges -# multipart/digest -# multipart/encrypted -# multipart/example -# multipart/form-data -# multipart/header-set -# multipart/mixed -# multipart/parallel -# multipart/related -# multipart/report -# multipart/signed -# multipart/voice-message -# text/1d-interleaved-parityfec -text/calendar ics ifb -text/css css -text/csv csv -# text/directory -# text/dns -# text/ecmascript -# text/enriched -# text/example -# text/fwdred -text/html html htm -# text/javascript -text/n3 n3 -# text/parityfec -text/plain txt text conf def list log in -# text/prs.fallenstein.rst -text/prs.lines.tag dsc -# text/vnd.radisys.msml-basic-layout -# text/red -# text/rfc822-headers -text/richtext rtx -# text/rtf -# text/rtp-enc-aescm128 -# text/rtx -text/sgml sgml sgm -# text/t140 -text/tab-separated-values tsv -text/troff t tr roff man me ms -text/turtle ttl -# text/ulpfec -text/uri-list uri uris urls -text/vcard vcard -# text/vnd.abc -text/vnd.curl curl -text/vnd.curl.dcurl dcurl -text/vnd.curl.scurl scurl -text/vnd.curl.mcurl mcurl -# text/vnd.dmclientscript -text/vnd.dvb.subtitle sub -# text/vnd.esmertec.theme-descriptor -text/vnd.fly fly -text/vnd.fmi.flexstor flx -text/vnd.graphviz gv -text/vnd.in3d.3dml 3dml -text/vnd.in3d.spot spot -# text/vnd.iptc.newsml -# text/vnd.iptc.nitf -# text/vnd.latex-z -# text/vnd.motorola.reflex -# text/vnd.ms-mediapackage -# text/vnd.net2phone.commcenter.command -# text/vnd.si.uricatalogue -text/vnd.sun.j2me.app-descriptor jad -# text/vnd.trolltech.linguist -# text/vnd.wap.si -# text/vnd.wap.sl -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/x-asm s asm -text/x-c c cc cxx cpp h hh dic -text/x-fortran f for f77 f90 -text/x-pascal p pas -text/x-java-source java -text/x-setext etx -text/x-uuencode uu -text/x-vcalendar vcs -text/x-vcard vcf -# text/xml -# text/xml-external-parsed-entity -# video/1d-interleaved-parityfec -video/3gpp 3gp -# video/3gpp-tt -video/3gpp2 3g2 -# video/bmpeg -# video/bt656 -# video/celb -# video/dv -# video/example -video/h261 h261 -video/h263 h263 -# video/h263-1998 -# video/h263-2000 -video/h264 h264 -# video/h264-rcdo -# video/h264-svc -video/jpeg jpgv -# video/jpeg2000 -video/jpm jpm jpgm -video/mj2 mj2 mjp2 -# video/mp1s -# video/mp2p -# video/mp2t -video/mp4 mp4 mp4v mpg4 -# video/mp4v-es -video/mpeg mpeg mpg mpe m1v m2v -# video/mpeg4-generic -# video/mpv -# video/nv -video/ogg ogv -# video/parityfec -# video/pointer -video/quicktime qt mov -# video/raw -# video/rtp-enc-aescm128 -# video/rtx -# video/smpte292m -# video/ulpfec -# video/vc1 -# video/vnd.cctv -video/vnd.dece.hd uvh uvvh -video/vnd.dece.mobile uvm uvvm -# video/vnd.dece.mp4 -video/vnd.dece.pd uvp uvvp -video/vnd.dece.sd uvs uvvs -video/vnd.dece.video uvv uvvv -# video/vnd.directv.mpeg -# video/vnd.directv.mpeg-tts -# video/vnd.dlna.mpeg-tts -video/vnd.dvb.file dvb -video/vnd.fvt fvt -# video/vnd.hns.video -# video/vnd.iptvforum.1dparityfec-1010 -# video/vnd.iptvforum.1dparityfec-2005 -# video/vnd.iptvforum.2dparityfec-1010 -# video/vnd.iptvforum.2dparityfec-2005 -# video/vnd.iptvforum.ttsavc -# video/vnd.iptvforum.ttsmpeg2 -# video/vnd.motorola.video -# video/vnd.motorola.videop -video/vnd.mpegurl mxu m4u -video/vnd.ms-playready.media.pyv pyv -# video/vnd.nokia.interleaved-multimedia -# video/vnd.nokia.videovoip -# video/vnd.objectvideo -# video/vnd.sealed.mpeg1 -# video/vnd.sealed.mpeg4 -# video/vnd.sealed.swf -# video/vnd.sealedmedia.softseal.mov -video/vnd.uvvu.mp4 uvu uvvu -video/vnd.vivo viv -video/webm webm -video/x-f4v f4v -video/x-fli fli -video/x-flv flv -video/x-m4v m4v -video/x-ms-asf asf asx -video/x-ms-wm wm -video/x-ms-wmv wmv -video/x-ms-wmx wmx -video/x-ms-wvx wvx -video/x-msvideo avi -video/x-sgi-movie movie -x-conference/x-cooltalk ice diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types deleted file mode 100644 index b7fe8c0..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/node_modules/mime/types/node.types +++ /dev/null @@ -1,65 +0,0 @@ -# What: Google Chrome Extension -# Why: To allow apps to (work) be served with the right content type header. -# http://codereview.chromium.org/2830017 -# Added by: niftylettuce -application/x-chrome-extension crx - -# What: OTF Message Silencer -# Why: To silence the "Resource interpreted as font but transferred with MIME -# type font/otf" message that occurs in Google Chrome -# Added by: niftylettuce -font/opentype otf - -# What: HTC support -# Why: To properly render .htc files such as CSS3PIE -# Added by: niftylettuce -text/x-component htc - -# What: HTML5 application cache manifest -# Why: De-facto standard. Required by Mozilla browser when serving HTML5 apps -# per https://developer.mozilla.org/en/offline_resources_in_firefox -# Added by: louisremi -text/cache-manifest appcache manifest - -# What: node binary buffer format -# Why: semi-standard extension w/in the node community -# Added by: tootallnate -application/octet-stream buffer - -# What: The "protected" MP-4 formats used by iTunes. -# Why: Required for streaming music to browsers (?) -# Added by: broofa -application/mp4 m4p -audio/mp4 m4a - -# What: Music playlist format (http://en.wikipedia.org/wiki/M3U) -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -application/x-mpegURL m3u8 - -# What: Video format, Part of RFC1890 -# Why: See https://github.com/bentomas/node-mime/pull/6 -# Added by: mjrusso -video/MP2T ts - -# What: The FLAC lossless codec format -# Why: Streaming and serving FLAC audio -# Added by: jacobrask -audio/flac flac - -# What: EventSource mime type -# Why: mime type of Server-Sent Events stream -# http://www.w3.org/TR/eventsource/#text-event-stream -# Added by: francois2metz -text/event-stream event-stream - -# What: Mozilla App manifest mime type -# Why: https://developer.mozilla.org/en/Apps/Manifest#Serving_manifests -# Added by: ednapiranha -application/x-web-app-manifest+json webapp - -# What: Matroska Mime Types -# Why: http://en.wikipedia.org/wiki/Matroska -# Added by: aduncan88 -video/x-matroska mkv -audio/x-matroska mka diff --git a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json b/nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json deleted file mode 100644 index 1645ad7..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/node_modules/send/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "send", - "version": "0.1.0", - "description": "Better streaming static file server with Range and conditional-GET support", - "keywords": [ - "static", - "file", - "server" - ], - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "dependencies": { - "debug": "*", - "mime": "1.2.6", - "fresh": "0.1.0", - "range-parser": "0.0.4" - }, - "devDependencies": { - "mocha": "*", - "should": "*", - "supertest": "0.0.1", - "connect": "2.x" - }, - "scripts": { - "test": "make test" - }, - "main": "index", - "readme": "\n# send\n\n Send is Connect's `static()` extracted for generalized use, a streaming static file\n server supporting partial responses (Ranges), conditional-GET negotiation, high test coverage, and granular events which may be leveraged to take appropriate actions in your application or framework.\n\n## Installation\n\n $ npm install send\n\n## Examples\n\n Small:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n send(req, req.url).pipe(res);\n});\n```\n\n Serving from a root directory with custom error-handling:\n\n```js\nvar http = require('http');\nvar send = require('send');\n\nvar app = http.createServer(function(req, res){\n // your custom error-handling logic:\n function error(err) {\n res.statusCode = err.status || 500;\n res.end(err.message);\n }\n\n // your custom directory handling logic:\n function redirect() {\n res.statusCode = 301;\n res.setHeader('Location', req.url + '/');\n res.end('Redirecting to ' + req.url + '/');\n }\n\n // transfer arbitrary files from within\n // /www/example.com/public/*\n send(req, url.parse(req.url).pathname)\n .root('/www/example.com/public')\n .on('error', error)\n .on('directory', redirect)\n .pipe(res);\n});\n```\n\n## API\n\n### Events\n\n - `error` an error occurred `(err)`\n - `directory` a directory was requested\n - `stream` file streaming has started `(stream)`\n - `end` streaming has completed\n\n### .root(dir)\n\n Serve files relative to `path`. Aliased as `.from(dir)`.\n\n### .index(path)\n\n By default send supports \"index.html\" files, to disable this\n invoke `.index(false)` or to supply a new index pass a string.\n\n### .maxage(ms)\n\n Provide a max-age in milliseconds for http caching, defaults to 0.\n\n## Error-handling\n\n By default when no `error` listeners are present an automatic response will be made, otherwise you have full control over the response, aka you may show a 5xx page etc.\n\n## Caching\n\n It does _not_ perform internal caching, you should use a reverse proxy cache such\n as Varnish for this, or those fancy things called CDNs. If your application is small enough that it would benefit from single-node memory caching, it's small enough that it does not need caching at all ;).\n\n## Debugging\n\n To enable `debug()` instrumentation output export __DEBUG__:\n\n```\n$ DEBUG=send node app\n```\n\n## Running tests\n\n```\n$ npm install\n$ make test\n```\n\n## License \n\n(The MIT License)\n\nCopyright (c) 2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", - "readmeFilename": "Readme.md", - "_id": "send@0.1.0", - "dist": { - "shasum": "402c8ef02f0c2be9e2fc33d60a69dc9f4f3fb06c" - }, - "_from": "send@0.1.0", - "_resolved": "https://registry.npmjs.org/send/-/send-0.1.0.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/package.json b/nodejs-mysql-tutorial/node_modules/express/package.json deleted file mode 100644 index b5d7b2a..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "express", - "description": "Sinatra inspired web development framework", - "version": "3.2.5", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "contributors": [ - { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - { - "name": "Aaron Heckmann", - "email": "aaron.heckmann+github@gmail.com" - }, - { - "name": "Ciaran Jessup", - "email": "ciaranj@gmail.com" - }, - { - "name": "Guillermo Rauch", - "email": "rauchg@gmail.com" - } - ], - "dependencies": { - "connect": "2.7.10", - "commander": "0.6.1", - "range-parser": "0.0.4", - "mkdirp": "0.3.4", - "cookie": "0.1.0", - "buffer-crc32": "0.2.1", - "fresh": "0.1.0", - "methods": "0.0.1", - "send": "0.1.0", - "cookie-signature": "1.0.1", - "debug": "*" - }, - "devDependencies": { - "ejs": "*", - "mocha": "*", - "jade": "*", - "hjs": "*", - "stylus": "*", - "should": "*", - "connect-redis": "*", - "marked": "*", - "supertest": "0.6.0" - }, - "keywords": [ - "express", - "framework", - "sinatra", - "web", - "rest", - "restful", - "router", - "app", - "api" - ], - "repository": { - "type": "git", - "url": "git://github.com/visionmedia/express" - }, - "main": "index", - "bin": { - "express": "./bin/express" - }, - "scripts": { - "prepublish": "npm prune", - "test": "make test" - }, - "engines": { - "node": "*" - }, - "readme": "![express logo](http://f.cl.ly/items/0V2S1n0K1i3y1c122g04/Screen%20Shot%202012-04-11%20at%209.59.42%20AM.png)\n\n Fast, unopinionated, minimalist web framework for [node](http://nodejs.org). [![Build Status](https://secure.travis-ci.org/visionmedia/express.png)](http://travis-ci.org/visionmedia/express) [![Dependency Status](https://gemnasium.com/visionmedia/express.png)](https://gemnasium.com/visionmedia/express)\n\n```js\nvar express = require('express');\nvar app = express();\n\napp.get('/', function(req, res){\n res.send('Hello World');\n});\n\napp.listen(3000);\n```\n\n## Installation\n\n $ npm install -g express\n\n## Quick Start\n\n The quickest way to get started with express is to utilize the executable `express(1)` to generate an application as shown below:\n\n Create the app:\n\n $ npm install -g express\n $ express /tmp/foo && cd /tmp/foo\n\n Install dependencies:\n\n $ npm install\n\n Start the server:\n\n $ node app\n\n## Features\n\n * Built on [Connect](http://github.com/senchalabs/connect)\n * Robust routing\n * HTTP helpers (redirection, caching, etc)\n * View system supporting 14+ template engines\n * Content negotiation\n * Focus on high performance\n * Environment based configuration\n * Executable for generating applications quickly\n * High test coverage\n\n## Philosophy\n\n The Express philosophy is to provide small, robust tooling for HTTP servers. Making\n it a great solution for single page applications, web sites, hybrids, or public\n HTTP APIs.\n\n Built on Connect you can use _only_ what you need, and nothing more, applications\n can be as big or as small as you like, even a single file. Express does\n not force you to use any specific ORM or template engine. With support for over\n 14 template engines via [Consolidate.js](http://github.com/visionmedia/consolidate.js)\n you can quickly craft your perfect framework.\n\n## More Information\n\n * Join #express on freenode\n * [Google Group](http://groups.google.com/group/express-js) for discussion\n * Follow [tjholowaychuk](http://twitter.com/tjholowaychuk) on twitter for updates\n * Visit the [Wiki](http://github.com/visionmedia/express/wiki)\n * [日本語ドキュメンテーション](http://hideyukisaito.com/doc/expressjs/) by [hideyukisaito](https://github.com/hideyukisaito)\n * [Русскоязычная документация](http://jsman.ru/express/)\n * Run express examples [online](https://runnable.com/express)\n\n## Viewing Examples\n\nClone the Express repo, then install the dev dependencies to install all the example / test suite deps:\n\n $ git clone git://github.com/visionmedia/express.git --depth 1\n $ cd express\n $ npm install\n\nthen run whichever tests you want:\n\n $ node examples/content-negotiation\n\n## Running Tests\n\nTo run the test suite first invoke the following command within the repo, installing the development dependencies:\n\n $ npm install\n\nthen run the tests:\n\n $ make test\n\n## Contributors\n\n```\nproject: express\ncommits: 3559\nactive : 468 days\nfiles : 237\nauthors:\n 1891\tTj Holowaychuk 53.1%\n 1285\tvisionmedia 36.1%\n 182\tTJ Holowaychuk 5.1%\n 54\tAaron Heckmann 1.5%\n 34\tcsausdev 1.0%\n 26\tciaranj 0.7%\n 21\tRobert Sköld 0.6%\n 6\tGuillermo Rauch 0.2%\n 3\tDav Glass 0.1%\n 3\tNick Poulden 0.1%\n 2\tRandy Merrill 0.1%\n 2\tBenny Wong 0.1%\n 2\tHunter Loftis 0.1%\n 2\tJake Gordon 0.1%\n 2\tBrian McKinney 0.1%\n 2\tRoman Shtylman 0.1%\n 2\tBen Weaver 0.1%\n 2\tDave Hoover 0.1%\n 2\tEivind Fjeldstad 0.1%\n 2\tDaniel Shaw 0.1%\n 1\tMatt Colyer 0.0%\n 1\tPau Ramon 0.0%\n 1\tPero Pejovic 0.0%\n 1\tPeter Rekdal Sunde 0.0%\n 1\tRaynos 0.0%\n 1\tTeng Siong Ong 0.0%\n 1\tViktor Kelemen 0.0%\n 1\tctide 0.0%\n 1\t8bitDesigner 0.0%\n 1\tisaacs 0.0%\n 1\tmgutz 0.0%\n 1\tpikeas 0.0%\n 1\tshuwatto 0.0%\n 1\ttstrimple 0.0%\n 1\tewoudj 0.0%\n 1\tAdam Sanderson 0.0%\n 1\tAndrii Kostenko 0.0%\n 1\tAndy Hiew 0.0%\n 1\tArpad Borsos 0.0%\n 1\tAshwin Purohit 0.0%\n 1\tBenjen 0.0%\n 1\tDarren Torpey 0.0%\n 1\tGreg Ritter 0.0%\n 1\tGregory Ritter 0.0%\n 1\tJames Herdman 0.0%\n 1\tJim Snodgrass 0.0%\n 1\tJoe McCann 0.0%\n 1\tJonathan Dumaine 0.0%\n 1\tJonathan Palardy 0.0%\n 1\tJonathan Zacsh 0.0%\n 1\tJustin Lilly 0.0%\n 1\tKen Sato 0.0%\n 1\tMaciej Małecki 0.0%\n 1\tMasahiro Hayashi 0.0%\n```\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2009-2012 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n", - "readmeFilename": "Readme.md", - "bugs": { - "url": "https://github.com/visionmedia/express/issues" - }, - "_id": "express@3.2.5", - "dist": { - "shasum": "91f59640b48a064cea7b22811f2c027533b819ca" - }, - "_from": "express@3.2.5", - "_resolved": "https://registry.npmjs.org/express/-/express-3.2.5.tgz" -} diff --git a/nodejs-mysql-tutorial/node_modules/express/test.js b/nodejs-mysql-tutorial/node_modules/express/test.js deleted file mode 100644 index 2b4b357..0000000 --- a/nodejs-mysql-tutorial/node_modules/express/test.js +++ /dev/null @@ -1,17 +0,0 @@ -var express = require('./'); -var app = express(); - -express.request.toJSON = function(){ - return { - method: this.method, - url: this.url, - header: this.headers - } -}; - -app.get('*', function(req, res){ - console.log(JSON.stringify(req)); - res.send(200); -}); - -app.listen(4000) diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/.npmignore b/nodejs-mysql-tutorial/node_modules/nodemon/.npmignore deleted file mode 100644 index 65e3ba2..0000000 --- a/nodejs-mysql-tutorial/node_modules/nodemon/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test/ diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/README.md b/nodejs-mysql-tutorial/node_modules/nodemon/README.md deleted file mode 100644 index 7248cf8..0000000 --- a/nodejs-mysql-tutorial/node_modules/nodemon/README.md +++ /dev/null @@ -1,135 +0,0 @@ -# nodemon - -For use during development of a node.js based application. - -nodemon will watch the files in the directory that nodemon was started, and if they change, it will automatically restart your node application. - -nodemon does **not** require *any* changes to your code or method of development. nodemon simply wraps your node application and keeps an eye on any files that have changed. Remember that nodemon is a replacement wrapper for `node`, think of it as replacing the word "node" on the command line when you run your script. - -# Installation - -Either through forking or by using [npm](http://npmjs.org) (the recommended way): - - npm install -g nodemon - -And nodemon will be installed in to your bin path. Note that as of npm v1, you must explicitly tell npm to install globally as nodemon is a command line utility. - -# Usage - -nodemon wraps your application, so you can pass all the arguments you would normally pass to your app: - - nodemon [your node app] - -For example, if my application accepted a host and port as the arguments, I would start it as so: - - nodemon ./server.js localhost 8080 - -Any output from this script is prefixed with `[nodemon]`, otherwise all output from your application, errors included, will be echoed out as expected. - -nodemon also supports running and monitoring [coffee-script](http://jashkenas.github.com/coffee-script/) apps: - - nodemon server.coffee - -If no script is given, nodemon will test for a `package.json` file and if found, will run the file associated with the *main* property ([ref](https://github.com/remy/nodemon/issues/14)). - -You can also pass the debug flag to node through the command line as you would normally: - - nodemon --debug ./server.js 80 - -If you have a `package.json` file for your app, you can omit the main script entirely and nodemon will read the `package.json` for the `main` property and use that value as the app. - -# Automatic re-running - -nodemon was original written to restart hanging processes such as web servers, but now supports apps that cleanly exit. If your script exits cleanly, nodemon will continue to monitor the directory (or directories) and restart the script if there are any changes. - -# Manual restarting - -Whilst nodemon is running, if you need to manually restart your application, instead of stopping and restart nodemon, you can simply type `rs` with a carridge return, and nodemon will restart your process. - -# Running non-node scripts - -nodemon can also be used to execute and monitor other programs. nodemon will read the file extension of the script being run and monitor that extension instead of .js if there's no .nodemonignore: - - nodemon --exec "python -v" ./app.py - -Now nodemon will run `app.py` with python in verbose mode (note that if you're not passing args to the exec program, you don't need the quotes), and look for new or modified files with the `.py` extension. - -# Monitoring multiple directories - -By default nodemon monitors the current working directory. If you want to take control of that option, use the `--watch` option to add specific paths: - - nodemon --watch app --watch libs app/server.js - -Now nodemon will only restart if there are changes in the `./app` or `./libs` directory. By default nodemon will traverse sub-directories, so there's no need in explicitly including sub-directories. - -# Specifying extension watch list - -By default, nodemon looks for files with the `.js` extension. If you use the `--exec` option and monitor `app.py` nodemon will monitor files with the extension of `.py`. However, you can specify your own list with the `-e` switch like so: - - nodemon -e js,css,html - -Or with alternative syntax: - - nodemon --ext '.js|.css|.html' - -Now nodemon will restart on any changes to files in the directory (or subdirectories) with the extensions .js, .css or .html. - -# Delaying restarting - -In some situations, you may want to wait until a number of files have changed. The timeout before checking for new file changes is 1 second. If you're uploading a number of files and it's taking some number of seconds, this could cause your app to restart multiple time unnecessarily. - -To add an extra throttle, or delay restarting, use the `--delay` command: - - nodemon --delay 10 server.js - -The delay figure is number of seconds to delay before restarting. So nodemon will only restart your app the given number of seconds after the *last* file change. - -# Ignoring files - -By default, if nodemon will only restart when a `.js` JavaScript file changes. In some cases you will want to ignore some specific files, directories or file patterns, to prevent nodemon from prematurely restarting your application. - -You can use the [example ignore file](http://github.com/remy/nodemon/blob/master/nodemonignore.example) (note that this example file is not hidden - you must rename it to `.nodemonignore`) as a basis for your nodemon, but it's very simple to create your own: - - # this is my ignore file with a nice comment at the top - - /vendor/* # ignore all external submodules - /public/* # static files - ./README.md # a specific file - *.css # ignore any CSS files too - :(\d)*\.js # monitor javascript files with only digits in their name - -The ignore file accepts: - -* Comments starting with a `#` symbol -* Blank lines -* Specific files -* File patterns (this is converted to a regex, so you have full control of the pattern) -* Unescaped regex's begining with `:`. - -**Note** the `.nodemonignore` file is read from the directory you run nodemon from, *not* from the location of the node script you're running. - -# Controlling shutdown of your script - -nodemon sends a kill signal to your application when it sees a file update. If you need to clean up on shutdown inside your script you can capture the kill signal and handle it yourself. - -The following example will listen once for the `SIGUSR2` signal (used by nodemon to restart), run the clean up process and then kill itself for nodemon to continue control: - - process.once('SIGUSR2', function () { - gracefulShutdown(function () { - process.kill(process.pid, 'SIGUSR2'); - }) - }); - -Note that the `process.kill` is *only* called once your shutdown jobs are complete. Hat tip to [Benjie Gillam](http://www.benjiegillam.com/2011/08/node-js-clean-restart-and-faster-development-with-nodemon/) for writing technique this up. - -# Help! My changes aren't being detected! - -nodemon has three potential methods it uses to look for file changes. First, it polls using the find command to search for files modified within the last second. This method works on systems with a BSD based find (Mac, for example). - -Next it tries using node's `fs.watch`. `fs.watch` will not always work however, and nodemon will try and detect if this is the case by writing a file to the tmp directory and seeing if fs.watch is triggered when it's removed. If nodemon finds that fs.watch was not triggered, it will then fall back to the third method (called legacy watch), which works by statting each file in your working directory looking for changes to the last modified time. This is the most cpu intensive method, but it may be the only option on some systems. - -In certain cases, like when where you are working on a different drive than your tmp directory is on, `fs.watch` may give you a false positive. You can force nodemon to start using the most compatible legacy method by passing the -L switch, e.g. `nodemon -L /my/odd/file.js`. - -# License - -MIT [http://rem.mit-license.org](http://rem.mit-license.org) diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/faq.md b/nodejs-mysql-tutorial/node_modules/nodemon/faq.md deleted file mode 100644 index 7371d54..0000000 --- a/nodejs-mysql-tutorial/node_modules/nodemon/faq.md +++ /dev/null @@ -1,38 +0,0 @@ -# FAQ - -This is being added to as common issues occur on the [issues](http://github.com/remy/nodemon/issues), and where appropriate the answers will be added here. - -This is a working document, and if it makes sense, I'll take pull requests to help make it better. - -## nodemon doesn't work with fedora - -Fedora is looking for `nodejs` rather than `node` which is the binary that nodemon kicks off. - -The solution is a simple workaround, Linux 101: - -``` -sudo ln -s /usr/bin/nodejs /usr/local/bin/node -``` - -Fedora and Ubuntu pakage node as nodejs, because node.dpkg is - -> Description-en: Amateur Packet Radio Node program - The node program accepts TCP/IP and packet radio network connections and - presents users with an interface that allows them to make gateway connections - to remote hosts using a variety of amateur radio protocols. -They make the binary is nodejs, rather than node. So long as you're not using that Packet Radio Node Program mentioned above the workaround will work. - -Thank you [@EvanCarroll](https://github.com/remy/nodemon/issues/68#issuecomment-13672509) - -## Using nodemon with forever - -If you're using nodemon with [forever](https://github.com/nodejitsu/forever) (perhaps in a production environment) you can combine the two together. This way if the script crashes, forever restarts the script, and if there are file changes, nodemon restarts your script. For more detail, see [issue 30](https://github.com/remy/nodemon/issues/30). - -To acheive this you need to include the `--exitcrash` flag to ensure nodemon exits if the script crashes (or exits unexpectedly): - - forever nodemon --exitcrash server.js - -To test this, you can kill the server.js process and forever will restart it. If you `touch server.js` nodemon will restart it. - -Note that I *would not* recommend using nodemon in a production environment - but that's because I wouldn't want it restart without my explicit instruction. - diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js b/nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js deleted file mode 100644 index 4a07df6..0000000 --- a/nodejs-mysql-tutorial/node_modules/nodemon/nodemon.js +++ /dev/null @@ -1,829 +0,0 @@ -#!/usr/bin/env node - -"use strict"; - -var fs = require('fs'), - util = require('util'), - childProcess = require('child_process'), - dirs = [], - path = require('path'), - exists = fs.exists || path.exists, // yay, exists moved from path to fs in 0.7.x ... :-\ - existsSync = fs.existsSync || path.existsSync, - spawn = childProcess.spawn, - meta = JSON.parse(fs.readFileSync(__dirname + '/package.json')), - exec = childProcess.exec, - flag = './.monitor', - child = null, - monitor = null, - ignoreFilePath = './.nodemonignore', - ignoreFileWatcher = null, - oldIgnoreFilePath = './nodemon-ignore', - ignoreFiles = [], - reIgnoreFiles = null, - timeout = 1000, // check every 1 second - restartDelay = 0, // controlled through arg --delay 10 (for 10 seconds) - restartTimer = null, - lastStarted = Date.now(), - statOffset = 0, // stupid fix for https://github.com/joyent/node/issues/2705 - platform = process.platform, - isWindows = platform === 'win32', - noWatch = (platform !== 'win32') || !fs.watch, // && platform !== 'linux' - removed linux fs.watch usage #72 - watchFile = platform === 'darwin' ? fs.watchFile : fs.watch, // lame :( - watchWorks = true, // whether or not fs.watch actually works on this platform, tested and set later before starting - // create once, reuse as needed - reEscComments = /\\#/g, - reUnescapeComments = /\^\^/g, // note that '^^' is used in place of escaped comments - reComments = /#.*$/, - reTrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, - reEscapeChars = /[.|\-[\]()\\]/g, - reAsterisk = /\*/g, - // Flag to distinguish an app crash from intentional killing (used on Windows only for now) - killedAfterChange = false, - // Make this the last call so it can use the variables defined above (specifically isWindows) - program = getNodemonArgs(), - watched = []; - -// test to see if the version of find being run supports searching by seconds (-mtime -1s -print) -var testAndStart = function() { - var ready = function () { - watchFileChecker.check(function(success) { - watchWorks = success; - startNode(); - }); - }; - - if (noWatch) { - exec('find -L /dev/null -type f -mtime -1s -print', function(error, stdout, stderr) { - if (error) { - if (!fs.watch) { - util.error('\x1B[1;31mThe version of node you are using combined with the version of find being used does not support watching files. Upgrade to a newer version of node, or install a version of find that supports search by seconds.\x1B[0m'); - process.exit(1); - } else { - noWatch = false; - ready(); - } - } else { - // Find is compatible with -1s - startNode(); - } - }); - } else { - ready(); - } -}; - -// This is a fallback function if fs.watch does not work -function changedSince(time, dir, callback) { - if (!callback) { - callback = dir; - } - - var changed = [], - i = 0, - j = 0, - dlen = dir.length, - todo = 0, - flen = 0, - done = function () { - todo--; - if (todo === 0) { - callback(changed); - } - }; - - dir = dir && typeof dir !== 'function' ? [dir] : dirs; - - dir.forEach(function (dir) { - todo++; - fs.readdir(dir, function (err, files) { - if (err) { - return; - } - - files.forEach(function (file) { - if (program.includeHidden === true || !program.includeHidden && file.indexOf('.') !== 0) { - todo++; - file = path.resolve(dir + '/' + file); - var stat = fs.stat(file, function (err, stat) { - if (stat) { - if (stat.isDirectory()) { - todo++; - changedSince(time, file, function (subChanged) { - if (subChanged.length) { - changed = changed.concat(subChanged); - } - done(); - }); - } else if (stat.mtime > time) { - changed.push(file); - } - } - done(); - }); - } - }); - done(); - }); - }); -} - -// Attempts to see if fs.watch will work. On some platforms, it doesn't. -// See: http://nodejs.org/api/fs.html#fs_caveats -// Sends the callback true if fs.watch will work, false if it won't -// -// Caveats: -// If there is no writable tmp directory, it will also return true, although -// a warning message will be displayed. -// -var watchFileChecker = {}; -watchFileChecker.check = function(cb) { - var tmpdir, - seperator = '/'; - - this.cb = cb; - this.changeDetected = false; - if (isWindows) { - seperator = '\\'; - tmpdir = process.env.TEMP; - } else if (process.env.TMPDIR) { - tmpdir = process.env.TMPDIR; - } else { - tmpdir = '/tmp'; - } - var watchFileName = tmpdir + seperator + 'nodemonCheckFsWatch' + Date.now(); - var watchFile = fs.openSync(watchFileName, 'w'); - if (!watchFile) { - util.log('\x1B[32m[nodemon] Unable to write to temp directory. If you experience problems with file reloading, ensure ' + tmpdir + ' is writable.\x1B[0m'); - cb(true); - return; - } - fs.watch(watchFileName, function(event, filename) { - if (watchFileChecker.changeDetected) { return; } - watchFileChecker.changeDetected = true; - cb(true); - }); - // This should trigger fs.watch, if it works - fs.writeSync(watchFile, '1'); - fs.unlinkSync(watchFileName); - - setTimeout(function() { watchFileChecker.verify(); }, 250); -}; - -// Verifies that fs.watch was not triggered and sends false to the callback -watchFileChecker.verify = function() { - if (!this.changeDetected) { - this.cb(false); - } -}; - -function startNode() { - util.log('\x1B[32m[nodemon] starting `' + program.options.exec + ' ' + program.args.join(' ') + '`\x1B[0m'); - - lastStarted = Date.now(); - - var nodeMajor = parseInt((process.versions.node.split('.') || [undefined,undefined,undefined])[1] || 0, 10); - - if (nodeMajor >= 8) { - child = spawn(program.options.exec, program.args, { - stdio: ['pipe', process.stdout, process.stderr] - }); - } else { - child = spawn(program.options.exec, program.args); - child.stdout.on('data', function (data) { - process.stdout.write(data); - }); - child.stderr.on('data', function (data) { - process.stderr.write(data); - }); - } - - child.on('exit', function (code, signal) { - // In case we killed the app ourselves, set the signal thusly - if (killedAfterChange) { - killedAfterChange = false; - signal = 'SIGUSR2'; - } - // this is nasty, but it gives it windows support - if (isWindows && signal === 'SIGTERM') { - signal = 'SIGUSR2'; - } - - // exit the monitor, but do it gracefully - if (signal === 'SIGUSR2') { - // restart - startNode(); - } else if (code === 0) { // clean exit - wait until file change to restart - util.log('\x1B[32m[nodemon] clean exit - waiting for changes before restart\x1B[0m'); - child = null; - } else if (program.options.exitcrash) { - util.log('\x1B[1;31m[nodemon] app crashed\x1B[0m'); - process.exit(0); - } else { - util.log('\x1B[1;31m[nodemon] app crashed - waiting for file changes before starting...\x1B[0m'); - child = null; - } - }); - - // pinched from https://github.com/DTrejo/run.js - pipes stdin to the child process - cheers DTrejo ;-) - if (program.options.stdin) { - process.stdin.resume(); - process.stdin.setEncoding('utf8'); - process.stdin.pipe(child.stdin); - } - - setTimeout(startMonitor, timeout); -} - -function startMonitor() { - var changeFunction; - - if (noWatch) { - // if native fs.watch doesn't work the way we want, we keep polling find command (mac only oddly) - changeFunction = function (lastStarted, callback) { - var cmds = [], - changed = []; - - dirs.forEach(function(dir) { - cmds.push('find -L "' + dir + '" -type f -mtime -' + ((Date.now() - lastStarted)/1000|0) + 's -print'); - }); - - exec(cmds.join(';'), function (error, stdout, stderr) { - var files = stdout.split(/\n/); - files.pop(); // remove blank line ending and split - callback(files); - }); - }; - } else if (watchWorks) { - changeFunction = function (lastStarted, callback) { - // recursive watch - watch each directory and it's subdirectories, etc, etc - function watch(err, dir) { - try { - fs.watch(dir, { persistent: false }, function (event, filename) { - var filepath = path.join(dir, filename || ''); - callback([filepath]); - }); - - fs.readdir(dir, function (err, files) { - if (!err) { - files.forEach(function (rawfile) { - var file = path.join(dir, rawfile); - if (-1 === watched.indexOf(file)) { - fs.stat(file, function (err, stat) { - if (!err && stat) { - if (stat.isDirectory()) { - fs.realpath(file, watch); - } else { - if (ignoredFilter(file)) { - watched.push(file); - } - } - } - }); - } - }); - } - }); - } catch (e) { - if ('EMFILE' === e.code) { - console.error('EMFILE: Watching too many files.'); - } - // ignoring this directory, likely it's "My Music" - // or some such windows fangled stuff - } - } - - dirs.forEach(function (dir) { - fs.realpath(dir, watch); - }); - }; - } else { - // changedSince, the fallback for when both the find method and fs.watch don't work, - // is not compatible with the way changeFunction works. If we have reached this point, - // changeFunction should not be called from herein out. - changeFunction = function() { util.error("Nodemon error: changeFunction called when it shouldn't be."); }; - } - - // filter ignored files - var ignoredFilter = function (file) { - // If we are in a Windows machine - if (isWindows) { - // Break up the file by slashes - var fileParts = file.split(/\\/g); - - // Remove the first piece (C:) - fileParts.shift(); - - // Join the parts together with Unix slashes - file = '/' + fileParts.join('/'); - } - - return !reIgnoreFiles.test(file); - }; - - var isWindows = process.platform === 'win32'; - if ((noWatch || watchWorks) && !program.options.forceLegacyWatch) { - changeFunction(lastStarted, function (files) { - if (files.length) { - files = files.filter(ignoredFilter); - if (files.length) { - if (restartTimer !== null) { - clearTimeout(restartTimer); - } - - restartTimer = setTimeout(function () { - if (program.options.verbose) { - util.log('[nodemon] restarting due to changes...'); - } - files.forEach(function (file) { - if (program.options.verbose) { - util.log('[nodemon] ' + file); - } - }); - if (program.options.verbose) { - util.print('\n\n'); - } - - killNode(); - - }, restartDelay); - return; - } - } - - if (noWatch) { setTimeout(startMonitor, timeout); } - }); - } else { - // Fallback for when both find and fs.watch don't work - changedSince(lastStarted, function (files) { - if (files.length) { - // filter ignored files - if (ignoreFiles.length) { - files = files.filter(function(file) { - return !reIgnoreFiles.test(file); - }); - } - - if (files.length) { - if (restartTimer !== null) { - clearTimeout(restartTimer); - } - restartTimer = setTimeout(function () { - if (program.options.verbose) { - util.log('[nodemon] restarting due to changes...'); - } - files.forEach(function (file) { - if (program.options.verbose) { - util.log('[nodemon] ' + file); - } - }); - if (program.options.verbose) { - util.print('\n\n'); - } - - killNode(); - - }, restartDelay); - return; - } - } - - setTimeout(startMonitor, timeout); - }); - } -} - -function killNode() { - if (child !== null) { - // When using CoffeeScript under Windows, child's process is not node.exe - // Instead coffee.cmd is launched, which launches cmd.exe, which starts node.exe as a child process - // child.kill() would only kill cmd.exe, not node.exe - // Therefore we use the Windows taskkill utility to kill the process and all its children (/T for tree) - if (isWindows) { - // For the on('exit', ...) handler above the following looks like a crash, so we set the killedAfterChange flag - killedAfterChange = true; - // Force kill (/F) the whole child tree (/T) by PID (/PID 123) - exec('taskkill /pid '+child.pid+' /T /F'); - } else { - child.kill('SIGUSR2'); - } - } else { - startNode(); - } -} - -function addIgnoreRule(line, noEscape) { - // remove comments and trim lines - // this mess of replace methods is escaping "\#" to allow for emacs temp files - if (!noEscape) { - if (line = line.replace(reEscComments, '^^').replace(reComments, '').replace(reUnescapeComments, '#').replace(reTrim, '')) { - ignoreFiles.push(line.replace(reEscapeChars, '\\$&').replace(reAsterisk, '.*')); - } - } else if (line = line.replace(reTrim, '')) { - ignoreFiles.push(line); - } - reIgnoreFiles = new RegExp(ignoreFiles.join('|')); -} - -function readIgnoreFile(curr, prev) { - var hadfile = false; - // unless the ignore file was actually modified, do no re-read it - // on darwin platform only - if (platform === 'darwin') { - if(curr && prev && curr.mtime.valueOf() === prev.mtime.valueOf()) { - return; - } - - fs.unwatchFile(ignoreFilePath); - } else { - // in windows and linux use FSWatcher.close() method to stop .nodemonignore watching - if (ignoreFileWatcher) { - hadfile = true; - ignoreFileWatcher.close(); - } - } - - // Check if ignore file still exists. Vim tends to delete it before replacing with changed file - // uses a sync method because with programs like vi - the file - // gets swapped out as it's updated, and the async exists would - // pass, whilst the readFile would fail (because the file wasn't - // there anymore). - function checkTimer() { - if (existsSync(ignoreFilePath)) { - if (program.options.verbose) { - util.log('[nodemon] reading ignore list'); - } - - // ignoreFiles = ignoreFiles.concat([flag, ignoreFilePath]); - // addIgnoreRule(flag); - addIgnoreRule(ignoreFilePath.substring(2)); // ignore the ./ part of the filename - fs.readFileSync(ignoreFilePath).toString().split(/\n/).forEach(function (rule, i) { - var noEscape = rule.substr(0,1) === ':'; - if (noEscape) { - rule = rule.substr(1); - } - addIgnoreRule(rule, noEscape); - }); - - ignoreFileWatcher = watchFile(ignoreFilePath, { persistent: false }, readIgnoreFile); - } else if (hadfile) { - setTimeout(checkTimer, 100); - } - } - - setTimeout(checkTimer, 100); -} - -// attempt to shutdown the wrapped node instance and remove -// the monitor file as nodemon exists -function cleanup() { - if (child) { - child.kill(); - } -} - -function getNodemonArgs() { - var args = process.argv, - len = args.length, - i = 2, - dir = process.cwd(), - indexOfApp = -1, - app = null; - - for (; i < len; i++) { - if (existsSync(path.resolve(dir, args[i]))) { - // double check we didn't use the --watch or -w opt before this arg - if (args[i-1] && (args[i-1] === '-w' || args[i-1] === '--watch')) { - // ignore - } else { - indexOfApp = i; - break; - } - } - } - - if (indexOfApp !== -1) { - // not found, so assume we're reading the package.json and thus swallow up all the args - app = process.argv[i]; - indexOfApp++; - } else { - indexOfApp = len; - } - - var appargs = [], - nodemonargs = process.argv.slice(2, indexOfApp - (app ? 1 : 0)), - arg, - options = { - delay: 1, - watch: [], - exec: 'node', - verbose: true, - js: false, // becomes the default anyway... - includeHidden: false, - exitcrash: false, - forceLegacyWatch: false, // forces nodemon to use the slowest but most compatible method for watching for file changes - stdin: true - // args: [] - }; - - // process nodemon args - args.splice(0, 2); - while (arg = args.shift()) { - if (arg === '--help' || arg === '-h' || arg === '-?') { - return help(); // exits program - } else if (arg === '--version' || arg === '-v') { - return version(); // also exits - } else if (arg === '--js') { - options.js = true; - } else if (arg === '--quiet' || arg === '-q') { - options.verbose = false; - } else if (arg === '--hidden') { - options.includeHidden = true; - } else if (arg === '--watch' || arg === '-w') { - options.watch.push(args.shift()); - } else if (arg === '--exitcrash') { - options.exitcrash = true; - } else if (arg === '--delay' || arg === '-d') { - options.delay = parseInt(args.shift(), 10); - } else if (arg === '--exec' || arg === '-x') { - options.exec = args.shift(); - } else if (arg === '--legacy-watch' || arg === '-L') { - options.forceLegacyWatch = true; - } else if (arg === '--no-stdin' || arg === '-I') { - options.stdin = false; - } else if (arg === '--ext' || arg === '-e') { - options.ext = args.shift(); - } else { - // Remaining args are node arguments - appargs.push(arg); - } - } - - var program = { options: options, args: appargs, app: app }; - - getAppScript(program); - - return program; -} - -function getAppScript(program) { - var hokeycokey = false; - if (!program.args.length || program.app === null) { - // try to get the app from the package.json - // doing a try/catch because we can't use the path.exist callback pattern - // or we could, but the code would get messy, so this will do exactly - // what we're after - if the file doesn't exist, it'll throw. - try { - // note: this isn't nodemon's package, it's the user's cwd package - program.app = JSON.parse(fs.readFileSync('./package.json').toString()).main; - if (program.app === undefined) { - // no app found to run - so give them a tip and get the feck out - help(); - } - program.args.unshift(program.app); - hokeycokey = true; - } catch (e) {} - } - - if (!program.app) { - program.app = program.args[0]; - } - - program.app = path.basename(program.app); - program.ext = program.options.ext || path.extname(program.app); - - if (program.options.exec.indexOf(' ') !== -1) { - var execOptions = program.options.exec.split(' '); - program.options.exec = execOptions.splice(0, 1)[0]; - program.args = execOptions.concat(program.args); - } - - if (program.options.exec === 'node' && ((program.ext.indexOf('.coffee') !== -1) || (program.ext.indexOf('.litcoffee') !== -1) )) { - program.options.exec = 'coffee'; - } - - if (program.options.exec === 'coffee') { - if (hokeycokey) { - program.args.push(program.args.shift()); - } - - //coffeescript requires --nodejs --debug - - // this code is a dance to get the order of the debug flags right when combined with coffeescript - var debugIndex = program.args.indexOf('--debug'); - if (debugIndex === -1) { - debugIndex = program.args.indexOf('--debug-brk'); - } - - if (debugIndex !== -1 && program.args.indexOf('--nodejs') === -1) { - program.args.splice(debugIndex, 0, '--nodejs'); - } - - // don't override user specified extention tracking - if (!program.options.ext) { - program.ext = '.coffee|.litcoffee|.js'; - } - - if (!program.options.exec || program.options.exec === 'node') { - program.options.exec = 'coffee'; - } - - // because windows can't find 'coffee', it needs the real file 'coffee.cmd' - if (isWindows) { - program.options.exec += '.cmd'; - } - } - - // allow users to make a mistake on the program.ext to monitor - // converts js,jade => .js|.jade - // BIG NOTE: user can't do this: nodemon -e *.js - // because the terminal will automatically expand the glob against the file system :( - if (program.ext.indexOf(',') !== -1 || program.ext.indexOf('*.') !== -1) { - program.ext = program.ext.replace(/,/g, '|').split('|').map(function (item) { - return '.' + item.replace(/^[\*\.]+/, ''); - }).join('$|'); - } -} - -function version() { - console.log(meta.version); - process.exit(0); -} - -function help() { - util.print([ - '', - ' Usage: nodemon [options] [script.js] [args]', - '', - ' Options:', - '', - ' -e, --ext extensions to look for Example: ".js|.html|.css"', - ' -x, --exec app execute script with "app", ie. -x "python -v"', - ' -q, --quiet minimise nodemon messages to start/stop only', - ' -w, --watch dir watch directory "dir". use once for each', - ' directory to watch', - ' -I, --no-stdin don\'t try to read from stdin', - ' -d, --delay n throttle restart for "n" seconds', - ' -L, --legacy-watch Forces node to use the most compatible', - ' version for watching file changes', - ' --exitcrash exit on crash, allows use of nodemon with', - ' daemon tools like forever.js', - ' -v, --version current nodemon version', - ' -h, --help you\'re looking at it', - '', - ' Note: if the script is omitted, nodemon will try to ', - ' read "main" from package.json and without a .nodemonignore,', - ' nodemon will monitor .js, .coffee, and .litcoffee by default.', - '', - ' Examples:', - '', - ' $ nodemon server.js', - ' $ nodemon -w ../foo server.js apparg1 apparg2', - ' $ PORT=8000 nodemon --debug-brk server.js', - ' $ nodemon --exec python app.py', - '', - ' For more details see http://github.com/remy/nodemon/', - '' - ].join('\n') + '\n'); - process.exit(0); -} - -function addSubdirectories() { - var files = fs.readdirSync(process.cwd()) || []; - - files.forEach(function (file) { - var stat = fs.statSync(file); - if (stat && stat.isDirectory()) { - dirs.push(path.resolve(file)); - } - }); -} - -// this little bit of hoop jumping is because sometimes the file can't be -// touched properly, and it send nodemon in to a loop of restarting. -// this way, the .monitor file is removed entirely, and recreated with -// permissions that anyone can remove it later (i.e. if you run as root -// by accident and then try again later). -// if (path.existsSync(flag)) fs.unlinkSync(flag); -// fs.writeFileSync(flag, '.'); // requires some content https://github.com/remy/nodemon/issues/36 -// fs.chmodSync(flag, '666'); - -// remove the flag file on exit -process.on('exit', function (code) { - if (program.options.verbose) { - util.log('[nodemon] exiting'); - } - cleanup(); -}); - -if (!isWindows) { // because windows borks when listening for the SIG* events - // usual suspect: ctrl+c exit - process.on('SIGINT', function () { - var exitTimeout = null, - exit = function () { - exit = function () {}; - cleanup(); - process.exit(0); - }; - - if (child && !isWindows) { - child.removeAllListeners('exit'); - child.on('exit', exit); - child.kill('SIGINT'); - setTimeout(exit, 10 * 1000); // give up waiting for the kids after 10 seconds - } else { - exit(); - } - }); - - process.on('SIGTERM', function () { - cleanup(); - process.exit(0); - }); -} - -// on exception *inside* nodemon, shutdown wrapped node app -process.on('uncaughtException', function (err) { - util.log('[nodemon] exception in nodemon killing node'); - util.error(err.stack); - cleanup(); -}); - - -if (program.options.delay) { - restartDelay = program.options.delay * 1000; -} - -// this is the default - why am I making it a cmd line opt? -if (program.options.js) { - addIgnoreRule('^((?!\.js$|\.coffee|\.litcoffee$).)*$', true); // ignores everything except JS -} - -if (program.options.watch && program.options.watch.length > 0) { - program.options.watch.forEach(function (dir) { - dirs.push(path.resolve(dir)); - }); -} else { - dirs.unshift(process.cwd()); -} - -if (!program.app) { - help(); -} - -if (program.options.verbose) { - util.log('\x1B[33m[nodemon] v' + meta.version + '\x1B[0m'); - util.log('\x1B[33m[nodemon] to restart at any time, enter `rs`\x1B[0m'); -} - -// this was causing problems for a lot of people, so now not moving to the subdirectory -// process.chdir(path.dirname(app)); -dirs.forEach(function(dir) { - if (program.options.verbose) { - util.log('\x1B[32m[nodemon] watching: ' + dir + '\x1B[0m'); - } -}); - -if (program.options.ext) { - addIgnoreRule('^((?!' + program.ext.replace(/\./g, '\\.') + '$).)*$', true); -} - -exists(ignoreFilePath, function (exist) { - // watch it: "exist" not to be confused with "exists".... - if (!exist) { - // try the old format - exists(oldIgnoreFilePath, function (exist) { - if (exist) { - if (program.options.verbose) { - util.log('[nodemon] detected old style .nodemonignore'); - } - ignoreFilePath = oldIgnoreFilePath; - } else { - // don't create the ignorefile, just ignore the flag & JS - // addIgnoreRule(flag); - if (!program.options.ext) { - var ext = program.ext.replace(/\./g, '\\.'); - if (ext) { - addIgnoreRule('^((?!' + ext + '$).)*$', true); - } else { - addIgnoreRule('^((?!\.js$|\.coffee|\.litcoffee$).)*$', true); // ignores everything except JS - } - } - } - }); - } else { - readIgnoreFile(); - } -}); - -// allow nodemon to restart when the use types 'rs\n' -process.stdin.resume(); -process.stdin.setEncoding('utf8'); -process.stdin.on('data', function (data) { - data = (data + '').trim().toLowerCase(); - if (data === 'rs') { - util.log('\x1B[32m[nodemon] restarting child process\x1B[0m'); - killNode(); - } -}); - -testAndStart(); diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example b/nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example deleted file mode 100644 index 475f82b..0000000 --- a/nodejs-mysql-tutorial/node_modules/nodemon/nodemonignore.example +++ /dev/null @@ -1,11 +0,0 @@ -# .nodemonignore file -# -# This is an example of a comment -# -# You can list individual files in the ignore list, or they can be -# file patterns. For example: -# -# /vendor/* -# /public/css/styles.css -# ./server.js -# ./.git/* \ No newline at end of file diff --git a/nodejs-mysql-tutorial/node_modules/nodemon/package.json b/nodejs-mysql-tutorial/node_modules/nodemon/package.json deleted file mode 100644 index d0c2b1a..0000000 --- a/nodejs-mysql-tutorial/node_modules/nodemon/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "nodemon", - "homepage": "http://github.com/remy/nodemon", - "author": { - "name": "Remy Sharp", - "url": "http://github.com/remy" - }, - "bin": { - "nodemon": "./nodemon.js" - }, - "repository": { - "type": "git", - "url": "http://github.com/remy/nodemon.git" - }, - "description": "Simple monitor script for use during development of a node.js app.", - "keywords": [ - "monitor", - "development", - "restart", - "autoload", - "reload", - "terminal" - ], - "version": "0.7.8", - "preferGlobal": "true", - "licenses": [ - { - "type": "MIT", - "url": "http://rem.mit-license.org" - } - ], - "main": "./nodemon", - "readme": "# nodemon\n\nFor use during development of a node.js based application. \n\nnodemon will watch the files in the directory that nodemon was started, and if they change, it will automatically restart your node application.\n\nnodemon does **not** require *any* changes to your code or method of development. nodemon simply wraps your node application and keeps an eye on any files that have changed. Remember that nodemon is a replacement wrapper for `node`, think of it as replacing the word \"node\" on the command line when you run your script.\n\n# Installation\n\nEither through forking or by using [npm](http://npmjs.org) (the recommended way):\n\n npm install -g nodemon\n\nAnd nodemon will be installed in to your bin path. Note that as of npm v1, you must explicitly tell npm to install globally as nodemon is a command line utility.\n\n# Usage\n\nnodemon wraps your application, so you can pass all the arguments you would normally pass to your app:\n\n nodemon [your node app]\n\nFor example, if my application accepted a host and port as the arguments, I would start it as so:\n\n nodemon ./server.js localhost 8080\n\nAny output from this script is prefixed with `[nodemon]`, otherwise all output from your application, errors included, will be echoed out as expected.\n\nnodemon also supports running and monitoring [coffee-script](http://jashkenas.github.com/coffee-script/) apps:\n\n nodemon server.coffee\n\nIf no script is given, nodemon will test for a `package.json` file and if found, will run the file associated with the *main* property ([ref](https://github.com/remy/nodemon/issues/14)).\n\nYou can also pass the debug flag to node through the command line as you would normally:\n\n nodemon --debug ./server.js 80\n\nIf you have a `package.json` file for your app, you can omit the main script entirely and nodemon will read the `package.json` for the `main` property and use that value as the app.\n\n# Automatic re-running\n\nnodemon was original written to restart hanging processes such as web servers, but now supports apps that cleanly exit. If your script exits cleanly, nodemon will continue to monitor the directory (or directories) and restart the script if there are any changes.\n\n# Manual restarting\n\nWhilst nodemon is running, if you need to manually restart your application, instead of stopping and restart nodemon, you can simply type `rs` with a carridge return, and nodemon will restart your process.\n\n# Running non-node scripts\n\nnodemon can also be used to execute and monitor other programs. nodemon will read the file extension of the script being run and monitor that extension instead of .js if there's no .nodemonignore:\n\n nodemon --exec \"python -v\" ./app.py\n\nNow nodemon will run `app.py` with python in verbose mode (note that if you're not passing args to the exec program, you don't need the quotes), and look for new or modified files with the `.py` extension.\n\n# Monitoring multiple directories\n\nBy default nodemon monitors the current working directory. If you want to take control of that option, use the `--watch` option to add specific paths:\n\n nodemon --watch app --watch libs app/server.js\n\nNow nodemon will only restart if there are changes in the `./app` or `./libs` directory. By default nodemon will traverse sub-directories, so there's no need in explicitly including sub-directories.\n\n# Specifying extension watch list\n\nBy default, nodemon looks for files with the `.js` extension. If you use the `--exec` option and monitor `app.py` nodemon will monitor files with the extension of `.py`. However, you can specify your own list with the `-e` switch like so:\n\n nodemon -e js,css,html\n\nOr with alternative syntax:\n\n nodemon --ext '.js|.css|.html'\n\nNow nodemon will restart on any changes to files in the directory (or subdirectories) with the extensions .js, .css or .html.\n\n# Delaying restarting\n\nIn some situations, you may want to wait until a number of files have changed. The timeout before checking for new file changes is 1 second. If you're uploading a number of files and it's taking some number of seconds, this could cause your app to restart multiple time unnecessarily.\n\nTo add an extra throttle, or delay restarting, use the `--delay` command:\n\n nodemon --delay 10 server.js\n\nThe delay figure is number of seconds to delay before restarting. So nodemon will only restart your app the given number of seconds after the *last* file change.\n\n# Ignoring files\n\nBy default, if nodemon will only restart when a `.js` JavaScript file changes. In some cases you will want to ignore some specific files, directories or file patterns, to prevent nodemon from prematurely restarting your application.\n\nYou can use the [example ignore file](http://github.com/remy/nodemon/blob/master/nodemonignore.example) (note that this example file is not hidden - you must rename it to `.nodemonignore`) as a basis for your nodemon, but it's very simple to create your own:\n\n # this is my ignore file with a nice comment at the top\n \n /vendor/* # ignore all external submodules\n /public/* # static files\n ./README.md # a specific file\n *.css # ignore any CSS files too\n :(\\d)*\\.js # monitor javascript files with only digits in their name\n\nThe ignore file accepts:\n\n* Comments starting with a `#` symbol\n* Blank lines\n* Specific files\n* File patterns (this is converted to a regex, so you have full control of the pattern)\n* Unescaped regex's begining with `:`.\n\n**Note** the `.nodemonignore` file is read from the directory you run nodemon from, *not* from the location of the node script you're running.\n\n# Controlling shutdown of your script\n\nnodemon sends a kill signal to your application when it sees a file update. If you need to clean up on shutdown inside your script you can capture the kill signal and handle it yourself.\n\nThe following example will listen once for the `SIGUSR2` signal (used by nodemon to restart), run the clean up process and then kill itself for nodemon to continue control:\n\n process.once('SIGUSR2', function () {\n gracefulShutdown(function () {\n process.kill(process.pid, 'SIGUSR2'); \n })\n });\n\nNote that the `process.kill` is *only* called once your shutdown jobs are complete. Hat tip to [Benjie Gillam](http://www.benjiegillam.com/2011/08/node-js-clean-restart-and-faster-development-with-nodemon/) for writing technique this up.\n\n# Help! My changes aren't being detected!\n\nnodemon has three potential methods it uses to look for file changes. First, it polls using the find command to search for files modified within the last second. This method works on systems with a BSD based find (Mac, for example). \n\nNext it tries using node's `fs.watch`. `fs.watch` will not always work however, and nodemon will try and detect if this is the case by writing a file to the tmp directory and seeing if fs.watch is triggered when it's removed. If nodemon finds that fs.watch was not triggered, it will then fall back to the third method (called legacy watch), which works by statting each file in your working directory looking for changes to the last modified time. This is the most cpu intensive method, but it may be the only option on some systems.\n\nIn certain cases, like when where you are working on a different drive than your tmp directory is on, `fs.watch` may give you a false positive. You can force nodemon to start using the most compatible legacy method by passing the -L switch, e.g. `nodemon -L /my/odd/file.js`.\n\n# License\n\nMIT [http://rem.mit-license.org](http://rem.mit-license.org)\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/remy/nodemon/issues" - }, - "_id": "nodemon@0.7.8", - "dist": { - "shasum": "2ba4a61c82b5236976415fa5596bddd875d6f506" - }, - "_from": "nodemon@", - "_resolved": "https://registry.npmjs.org/nodemon/-/nodemon-0.7.8.tgz" -} From bbe632810316a29d92eda9efcc87b31816827619 Mon Sep 17 00:00:00 2001 From: Tutorialindustry Date: Sat, 8 Feb 2014 17:48:09 +0530 Subject: [PATCH 4/7] c6 --- nodejs-read-and-write-file/app.js | 80 +++++++++++++++++++ nodejs-read-and-write-file/package.json | 12 +++ .../public/stylesheets/style.css | 8 ++ nodejs-read-and-write-file/routes/index.js | 8 ++ nodejs-read-and-write-file/routes/user.js | 8 ++ nodejs-read-and-write-file/views/index.jade | 17 ++++ nodejs-read-and-write-file/views/layout.jade | 7 ++ 7 files changed, 140 insertions(+) create mode 100644 nodejs-read-and-write-file/app.js create mode 100644 nodejs-read-and-write-file/package.json create mode 100644 nodejs-read-and-write-file/public/stylesheets/style.css create mode 100644 nodejs-read-and-write-file/routes/index.js create mode 100644 nodejs-read-and-write-file/routes/user.js create mode 100644 nodejs-read-and-write-file/views/index.jade create mode 100644 nodejs-read-and-write-file/views/layout.jade diff --git a/nodejs-read-and-write-file/app.js b/nodejs-read-and-write-file/app.js new file mode 100644 index 0000000..fb109c1 --- /dev/null +++ b/nodejs-read-and-write-file/app.js @@ -0,0 +1,80 @@ + +/** + * Module dependencies. + */ + +var express = require('express'); +var routes = require('./routes'); +var user = require('./routes/user'); +var http = require('http'); +var path = require('path'); +var fs=require('fs'); +var app = express(); + +// all environments +app.set('port', process.env.PORT || 3000); +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); +app.use(express.favicon()); +app.use(express.logger('dev')); +app.use(express.json()); +app.use(express.urlencoded()); +app.use(express.methodOverride()); +app.use(app.router); +app.use(express.static(path.join(__dirname, 'public'))); + +// development only +if ('development' == app.get('env')) { + app.use(express.errorHandler()); +} + +app.get('/', routes.index); +app.post('/readfile',function(req,res){ + fs.readFile(req.body.file_name+'.txt', function (err, data) { + if (err){ + //Error of 34 is thrown if file doesn't exist + if(err.errno==34){ + res.end('No such file exist');; + } + + }else{ + res.end(data); + } + + }); + //The below is the synchronous version of the above + // It should be written in try catch to avoid any error + /* + try{ + var data=fs.readFileSync(req.body.file_name+'.txt'); + res.end(data); + }catch(e){ + res.end("No such file or directory"); + } + */ +}); +app.post('/createfile',function(req,res){ + if(req.body.file_name !="" && req.body.file_data !=""){ + fs.writeFile(req.body.file_name+'.txt', req.body.file_data, function (err) { + if (err){ + res.end('File could not be saved'); + }else{ + res.end('File has been saved'); + } + }); + }else{ + res.end('Please provide file name and or content'); + } + //The below is the synchronous version of the above + // It should be written in try catch to avoid any error + /* try{ + var data=fs.writeFileSync(req.body.file_name+'.txt'); + res.end("Data has been written sucessfully"); + }catch(e){ + res.end("Error occurred"); + } */ +}); + +http.createServer(app).listen(app.get('port'), function(){ + console.log('Express server listening on port ' + app.get('port')); +}); diff --git a/nodejs-read-and-write-file/package.json b/nodejs-read-and-write-file/package.json new file mode 100644 index 0000000..faa1661 --- /dev/null +++ b/nodejs-read-and-write-file/package.json @@ -0,0 +1,12 @@ +{ + "name": "application-name", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "node app.js" + }, + "dependencies": { + "express": "3.4.4", + "jade": "*" + } +} \ No newline at end of file diff --git a/nodejs-read-and-write-file/public/stylesheets/style.css b/nodejs-read-and-write-file/public/stylesheets/style.css new file mode 100644 index 0000000..30e047d --- /dev/null +++ b/nodejs-read-and-write-file/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} \ No newline at end of file diff --git a/nodejs-read-and-write-file/routes/index.js b/nodejs-read-and-write-file/routes/index.js new file mode 100644 index 0000000..f296005 --- /dev/null +++ b/nodejs-read-and-write-file/routes/index.js @@ -0,0 +1,8 @@ + +/* + * GET home page. + */ + +exports.index = function(req, res){ + res.render('index', { title: 'Express' }); +}; \ No newline at end of file diff --git a/nodejs-read-and-write-file/routes/user.js b/nodejs-read-and-write-file/routes/user.js new file mode 100644 index 0000000..d5b34aa --- /dev/null +++ b/nodejs-read-and-write-file/routes/user.js @@ -0,0 +1,8 @@ + +/* + * GET users listing. + */ + +exports.list = function(req, res){ + res.send("respond with a resource"); +}; \ No newline at end of file diff --git a/nodejs-read-and-write-file/views/index.jade b/nodejs-read-and-write-file/views/index.jade new file mode 100644 index 0000000..ef0538a --- /dev/null +++ b/nodejs-read-and-write-file/views/index.jade @@ -0,0 +1,17 @@ +extends layout + +block content + h1 Enter file name and data( a text file will be created and we can read it back by providing the name later + form(method="post" , action="/createfile") + p File Name: + input(type="text" , name="file_name" , id="file_name") + p File content: + textarea(cols="15" , rows="5" , name="file_data" , id="file_data") + p: button(type="submit") Submit +
        + h1 Enter file name if itexist data will be read back + + form(method="post" , action="/readfile") + p File Name: + input(type="text" , name="file_name" , id="file_name") + p: button(type="submit") Submit \ No newline at end of file diff --git a/nodejs-read-and-write-file/views/layout.jade b/nodejs-read-and-write-file/views/layout.jade new file mode 100644 index 0000000..1b7b305 --- /dev/null +++ b/nodejs-read-and-write-file/views/layout.jade @@ -0,0 +1,7 @@ +doctype 5 +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content \ No newline at end of file From b5acbe8cc756d9d2b709486a94dd9509af85e422 Mon Sep 17 00:00:00 2001 From: Tutorialindustry Date: Sat, 15 Mar 2014 13:36:04 +0530 Subject: [PATCH 5/7] c7 --- nodejs-pdf-example-tutorial/app.js | 93 ++++++++++++++++++ nodejs-pdf-example-tutorial/output.pdf | Bin 0 -> 5731 bytes nodejs-pdf-example-tutorial/package.json | 13 +++ .../public/stylesheets/style.css | 8 ++ nodejs-pdf-example-tutorial/routes/index.js | 8 ++ nodejs-pdf-example-tutorial/routes/user.js | 8 ++ nodejs-pdf-example-tutorial/views/index.jade | 5 + nodejs-pdf-example-tutorial/views/layout.jade | 7 ++ 8 files changed, 142 insertions(+) create mode 100644 nodejs-pdf-example-tutorial/app.js create mode 100644 nodejs-pdf-example-tutorial/output.pdf create mode 100644 nodejs-pdf-example-tutorial/package.json create mode 100644 nodejs-pdf-example-tutorial/public/stylesheets/style.css create mode 100644 nodejs-pdf-example-tutorial/routes/index.js create mode 100644 nodejs-pdf-example-tutorial/routes/user.js create mode 100644 nodejs-pdf-example-tutorial/views/index.jade create mode 100644 nodejs-pdf-example-tutorial/views/layout.jade diff --git a/nodejs-pdf-example-tutorial/app.js b/nodejs-pdf-example-tutorial/app.js new file mode 100644 index 0000000..3570e28 --- /dev/null +++ b/nodejs-pdf-example-tutorial/app.js @@ -0,0 +1,93 @@ + +/** + * Module dependencies. + */ + +var express = require('express'); +var routes = require('./routes'); +var http = require('http'); +var path = require('path'); +var fs=require('fs'); +var PDFDocument = require('pdfkit'); + +var app = express(); + +// all environments +app.set('port', process.env.PORT || 3000); +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'jade'); +app.use(express.favicon()); +app.use(express.logger('dev')); +app.use(express.json()); +app.use(express.urlencoded()); +app.use(express.methodOverride()); +app.use(app.router); +app.use(express.static(path.join(__dirname, 'public'))); + +// development only +if ('development' == app.get('env')) { + app.use(express.errorHandler()); +} + +app.get('/', function(req,res){ + doc = new PDFDocument; + doc.fontSize(15); + //Use "\n" for breaking + // Add Randam text to be added in our pdf + lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in suscipit purus.\n'; + lorem +='Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus nec hendrerit felis. Morbi aliquam facilisis risus eu lacinia. Sed eu leo in turpis fringilla hendrerit.\n '; + lorem +=' \n Ut nec accumsan nisl. Suspendisse rhoncus nisl posuere tortor tempus et dapibus elit porta. Cras leo neque, elementum a rhoncus ut, vestibulum non nibh.Phasellus pretium justo turpis. Etiam vulputate, odio vitae tincidunt ultricies, eros odio dapibus nisi, ut tincidunt lacus arcu eu elit. Aenean velit erat, vehicula eget lacinia ut, dignissim non tellus. Aliquam nec lacus mi, sed vestibulum nunc. Suspendisse potenti. Curabitur vitae sem turpis. Vestibulum sed neque eget dolor dapibus porttitor at sit amet sem. Fusce a turpis lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;'; + doc.text(lorem); + //Add a new page for benzier curve and is part of second page + doc.addPage(); + doc.moveTo(100, 200) + .lineTo(100, 160) + .quadraticCurveTo(130, 200, 150, 120) + .bezierCurveTo(190, -40, 200, 200, 300, 150) + .lineTo(400, 90) + .stroke() + //This creates our third page + doc.addPage(); + + grad = doc.moveTo(200, 200).linearGradient(50, 0, 150, 100); + grad.stop(0, 'green').stop(1, 'red'); + doc.rect(50, 0, 100, 100); + doc.fill(grad); + + grad = doc.radialGradient(300, 50, 0, 300, 50, 50); + grad.stop(0, 'orange', 0).stop(1, 'orange', 1) + doc.circle(300, 50, 50); + doc.fill(grad); + //This creates our Fourth page + doc.addPage(); + doc.save() + .moveTo(100, 150) + .lineTo(100, 250) + .lineTo(200, 250) + .fill("#FF3300") + doc.scale(0.6) + .translate(470, -380) + .path('M 250,75 L 323,301 131,161 369,161 177,301 z') + .fill('red', 'even-odd') + .restore() + //This creates our Fifth page + doc.addPage() + .fillColor("blue") + .text('Here is a link!', 100, 100) + .link(100, 100, 160, 27, 'http://google.com/'); + doc.write("output.pdf"); + res.writeHead(200, {"Content-Type": "text/html"}); + res.write('

        Pdf is generated blease use below link to download

        '); + res.end("Download"); + +}); +app.get('/download', function(req, res){ + //Use the below to send file and promt user to save it to disk + res.download('output.pdf'); + //Use the below to send file and browser will open and display the file + //res.sendfile('output.pdf'); +}); + +http.createServer(app).listen(app.get('port'), function(){ + console.log('Express server listening on port ' + app.get('port')); +}); diff --git a/nodejs-pdf-example-tutorial/output.pdf b/nodejs-pdf-example-tutorial/output.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bb5bcbd7cad84b0aaea11766f333599cad33435b GIT binary patch literal 5731 zcmbtYdt4J&76uiu10q!rEwx^)SWs{>GnqUPR00G+Py~Eb%1Q`B2#^GmfugqcQL&c# zY*AYke1M>fTlx^K{IuFuae=lgqTPjGwUyPi#RrQ}MG@J1Ckad#i)EWXW+r#;z2}_o zob#P?$16HS=|@bXFt2X-!!QDffFUUj3kbmQxaFA)z@t?f#)RR)hAce`XbhjDO*Vme z37i)L-i-)MA8z-G+A7=1F@3%$18Gg!r{G7K8byg5KZV|WWF!2+d0&tkYj zWn$11z-KcV*$k^yt1vt^D~aV4Md}h59;#OxlC^pbz!z!tL3)$cI=~Yk<_U;48j`cr zj1hQ0>9&iu3$at$&9T$ku|CjdBcoyszxzgO(1)m426%_~lOjSaA_ob>iR>?u8nVA$E$a3^O!c$tHEidZ=L4VsjZ1)U!AzO^ZY;V-YV*R zva@Nqvwloj)BGa`>(<2_u-i(yZmNy1|I%yvfwZMb_W4I68{RA3^gdYa&`ixYx-(at z&rAm?E=FlX+Y64>_fEg2I$q39n7f2FCSQ5w)2iJOrAIk zs5vlefBVZT?EOctA001uYR_*8`qD!gzF61XR+1FsuE}+CkGUWNWq*x2S6Vmx;FOn6 z`lRow8gse**F>kSCA!N8wib_BJG|}2jMmC@Rh2k+(7MljOD_42@?P$kQS^Ee8z+rx zuR9)ir#iQ>Zf)qeWy9=?o5j~&K6HHajTG|7pAY7gEnObrnh@=rI&bbfNA7Pdzcb;j z(PQs?9wmDr&$D@bQ2gw7pQNSvc(1-+sT6I1VN-oxPCY%QEF7wVF-=xTlyig}qZLhpkwsPN^z~2^TlvfxNX}jHd zCD#>KrsP(Hh+GQWsxD)msWEJ}a&Ot+KM7be^s(RZZB+Ax`5$|I)_A7z^~zsUQ(o9k zE~tDiWTNzJ>*EvCe_2>WKiWYju1;GS|H0Cqyn{Sf9|^+t&W#PYmcMA7XGOu0*6=F3 zf{!+DYkGZ-c!Ja0we*W#~(oEP}*UtGqpna4Kgf4!r2WvJt!0*AtY4{vXrFa4&oym4HL(}sXa(sfS5KCY0R zuU>Gk*1q&u$BcbP_a1LJB&i&qo1M6C_3`>)y1~uAepf#vx8a6y;^9}^_r6oH^HP_g zG=EQ+$Hnx>ZeybSUYGs#jD!}%B9^4E@Co7`Yew~Q6e1HN1IfY6CU_K+tW_xtIUpYK zk_3{JR8A%!BGa>Qnh9_`h2b%b$&h7KGbSK~^Y}D`{#)fhmQcqsEQrS;VFEmk$$=~s zu7ljDu-tX`6{wP5rw_yY-PGqM@2nH&>ws`BFS|&Ad zU*eFnt~>UBv_|2wb3YOC?FF|Do1EQhzHs(iQyB>kfDGsDQU4+BKl2URwbp)A{PQkC zFcF1YjrP&zR+QgVG+sQjI3=;AE^U3H>%*cSp8xUA zr@DVvCLaFz?kJU?(--MpZ!E|ebgMHl!1KfD)e}MsOyf_9jQ$A@3p@-jIjoEIIIIcp zniaJEi?^f3$ushc0t-^ddPW@k@(s0H>TQ*s^m2zrQc&Mk_(b=x;a+$5wZRu(nmtqK z7_O>X@%j^<;V`pxO;1Q#5{lp#+yS`;<{S$vnjWBFk4+^2!8HcxnFORc1mH6T$R3$^ zXbu||%c8=G7KNGMB6H@!XSm25Nzms!xAW_@GE1*!Vd>={Au&9}pi^n}D9Z_y-6AgE zr_mxpE)hv(Vv3-oBn@*Ny(B<9iXikn7Z7|2{3;!rszMEfRY0&I!(fcfRHCjC-)E zVbKbTGVdFuVvSnJZk$2D58XI|0mk=Z{;oQltiPcCh(c9=uR5|+OkpPa^U-#-8n zKdsH1hZzl7nUFnTg*B@5rc6}P)yO0`V$MCz#NHSu`H4F)>ar%3mAWj7+b|C)>@^n8 zOG;zZ@HEnM@K73zI#lzGI?f1q22nhv@8C=Wq=glFyAI9*h*!VmjJBy}^&`F)#d&{k zXXkiwkcY5xkixu=Qkl{@SR=D^TD`%fWg)0xfHRNZ@^I{H>u(-q#G-8gx4q3GejfL0 zhFD}{hi-E%_Vq01&<79mj^rLY@j-T#KJ=F*t5k|aY_|dI-;b4xG4mYJI&f6 zflk5$?lMUWXY@LpLfpW|j~lRx8dwbXILA^;DL`?D@xFCc45*$0+?zbyT&rMn0`_bO zqlNP}KG&dUc$JddXP|5NiQaF3khTHBycdKGB3y^GwBg>bN^N}~lCtL-&PYDJ-%UEgf z{|E+3ko}aUUkcLe4e(47PjTVGZxOf|R>1#UbkKn6>9l&fE*K8aILGsx0m@R@%}Q{fp+kon z9?W3-1tbz0avHpICp`sh(BRh=?)(S)gWkB$F)}Hb2tYOx_56T@rYRbvfSxhbo1q`j z_lzMKf-y04S)X~NSh$v=q4RC$5u`{sMv0(}edbYe=(j#&H1bNHF^L#vf1fcaI(YRN zlMD4DMKojx+j%7Xq9quk(1D`QJlJIm#%NUP`plyx0<1`hOgK*_)R~lvgu2M30-PyA zIFEv7fxfy>q(mT>qG*AB&}{r)H>3Nsfp V6RR?^Ty}|NH2kLQ6*^Ce{SVN${L}yd literal 0 HcmV?d00001 diff --git a/nodejs-pdf-example-tutorial/package.json b/nodejs-pdf-example-tutorial/package.json new file mode 100644 index 0000000..19f133d --- /dev/null +++ b/nodejs-pdf-example-tutorial/package.json @@ -0,0 +1,13 @@ +{ + "name": "application-name", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "node app.js" + }, + "dependencies": { + "express": "3.4.4", + "jade": "*", + "pdfkit": "*" + } +} \ No newline at end of file diff --git a/nodejs-pdf-example-tutorial/public/stylesheets/style.css b/nodejs-pdf-example-tutorial/public/stylesheets/style.css new file mode 100644 index 0000000..30e047d --- /dev/null +++ b/nodejs-pdf-example-tutorial/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} \ No newline at end of file diff --git a/nodejs-pdf-example-tutorial/routes/index.js b/nodejs-pdf-example-tutorial/routes/index.js new file mode 100644 index 0000000..f296005 --- /dev/null +++ b/nodejs-pdf-example-tutorial/routes/index.js @@ -0,0 +1,8 @@ + +/* + * GET home page. + */ + +exports.index = function(req, res){ + res.render('index', { title: 'Express' }); +}; \ No newline at end of file diff --git a/nodejs-pdf-example-tutorial/routes/user.js b/nodejs-pdf-example-tutorial/routes/user.js new file mode 100644 index 0000000..d5b34aa --- /dev/null +++ b/nodejs-pdf-example-tutorial/routes/user.js @@ -0,0 +1,8 @@ + +/* + * GET users listing. + */ + +exports.list = function(req, res){ + res.send("respond with a resource"); +}; \ No newline at end of file diff --git a/nodejs-pdf-example-tutorial/views/index.jade b/nodejs-pdf-example-tutorial/views/index.jade new file mode 100644 index 0000000..ef7b09f --- /dev/null +++ b/nodejs-pdf-example-tutorial/views/index.jade @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} \ No newline at end of file diff --git a/nodejs-pdf-example-tutorial/views/layout.jade b/nodejs-pdf-example-tutorial/views/layout.jade new file mode 100644 index 0000000..1b7b305 --- /dev/null +++ b/nodejs-pdf-example-tutorial/views/layout.jade @@ -0,0 +1,7 @@ +doctype 5 +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content \ No newline at end of file From c376ace6078c7ec39e967372e1c12cbb1b4deea0 Mon Sep 17 00:00:00 2001 From: Tutorialindustry Date: Wed, 4 Jun 2014 15:48:50 +0530 Subject: [PATCH 6/7] cn8 --- tls-node/csr.pem | 13 +++++++++++++ tls-node/private-key.pem | 15 +++++++++++++++ tls-node/public-cert.pem | 17 +++++++++++++++++ tls-node/tls-server.js | 30 ++++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 tls-node/csr.pem create mode 100644 tls-node/private-key.pem create mode 100644 tls-node/public-cert.pem create mode 100644 tls-node/tls-server.js diff --git a/tls-node/csr.pem b/tls-node/csr.pem new file mode 100644 index 0000000..46b0ef3 --- /dev/null +++ b/tls-node/csr.pem @@ -0,0 +1,13 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIB8DCCAVkCAQAwgZgxCzAJBgNVBAYTAklOMRQwEgYDVQQIDAtNQUhBUkFTSFRS +QTEPMA0GA1UEBwwGTVVNQkFJMRkwFwYDVQQKDBB0dXRvcmlhbGluZHVzdHJ5MQsw +CQYDVQQLDAJJVDESMBAGA1UEAwwJbG9jYWxob3N0MSYwJAYJKoZIhvcNAQkBFhds +b2NhbGhvc3RAbG9jYWxob3N0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC +gYEAoshAiI7bUwIgpDxi5dD+cICR190B7ciinCS2GqTp1ruUA5REEc2dGr2l94Vt +TtMDfwSzdIwWsWxjiNXb3fmrzw0RrLzZz5U7H3Tp+aK7gajoioPHDEUuhP04+mgq +Ln1qhMIBWWqsu/2pSa5HFswmnPLvYS7nsBpwS8qJcxzmNsECAwEAAaAXMBUGCSqG +SIb3DQEJBzEIDAZzcGlkZXIwDQYJKoZIhvcNAQEFBQADgYEAetutyHh3tgxdskVn +ViBL5BJs1ldzhuUB2HkVYzPOaHPouWfDiuUdVrbofAIpZl7ssg80aCUK3q+IPSDy +wloJ9dFMWKx+k3mk9AALhoe5xVTLV3kk3QX5tXEdLcMRwDMjrIjJgC0Q8su0Obhx +IRlCaitZyo40MEgmlsEWvq0IvF0= +-----END CERTIFICATE REQUEST----- diff --git a/tls-node/private-key.pem b/tls-node/private-key.pem new file mode 100644 index 0000000..9b0c680 --- /dev/null +++ b/tls-node/private-key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXgIBAAKBgQCiyECIjttTAiCkPGLl0P5wgJHX3QHtyKKcJLYapOnWu5QDlEQR +zZ0avaX3hW1O0wN/BLN0jBaxbGOI1dvd+avPDRGsvNnPlTsfdOn5oruBqOiKg8cM +RS6E/Tj6aCoufWqEwgFZaqy7/alJrkcWzCac8u9hLuewGnBLyolzHOY2wQIDAQAB +AoGAaKxYQveJtQDjOHjUJ2+SjYk/Pw2QlfS0C6/XoZ5192y7KuoGM2SCJ5XXySh1 +N4Cc+Opu8vy6AvDtuCm8ripD/WOJbd7GbvYsAIMvN6mm17n6W2CEY9dxgcQyD0qQ +aFzfcV+LzpRlbvGLAywL5Pt6RJuGT3oeeH75eoG1RYeDnXkCQQDR02Aj9UvskS6R +ELzvZocp/nYqpY4o5z1mlfwBgUgyHbAHI0GvihCuS26Mj3v48b+1qJQ6VWn/b9EP +87ydfThvAkEAxpqpnJ7jPyP0B46rzS7L9WUSX+lfUyxiu2PCXfZucdbVopkYclLx +WGsO23/VMc5oZlw530L7rn7owj2DS5w7zwJBAI31Fx9cztAvbTTiASFq2Vl0+hdi +SKqtv+HO6V9PSzv0z+oUVVVg8GYrTJC2ZqaHUC+j7R0GOp+B1AyZ12spk+sCQQCK +nG88bHhWHRW4II8viTW4c247mnl5Z0URXDLPuaqjsTkxXoB9af4fo7ie4b0+Ib0j +k8KgW/OkedahmqUEJGppAkEAmkQ0BRQZnJmTJuwwmOHPv1C9M/hjMPe6Dx+hvGBj +gv5NJi9Rp5324UR63WH9BYIBj7qZmVpAn6e/jc15eOgG0Q== +-----END RSA PRIVATE KEY----- diff --git a/tls-node/public-cert.pem b/tls-node/public-cert.pem new file mode 100644 index 0000000..76c56cf --- /dev/null +++ b/tls-node/public-cert.pem @@ -0,0 +1,17 @@ +-----BEGIN CERTIFICATE----- +MIICqTCCAhICCQDWoOwOdxWQFDANBgkqhkiG9w0BAQUFADCBmDELMAkGA1UEBhMC +SU4xFDASBgNVBAgMC01BSEFSQVNIVFJBMQ8wDQYDVQQHDAZNVU1CQUkxGTAXBgNV +BAoMEHR1dG9yaWFsaW5kdXN0cnkxCzAJBgNVBAsMAklUMRIwEAYDVQQDDAlsb2Nh +bGhvc3QxJjAkBgkqhkiG9w0BCQEWF2xvY2FsaG9zdEBsb2NhbGhvc3QuY29tMB4X +DTE0MDYwMTA3NDAwN1oXDTE0MDcwMTA3NDAwN1owgZgxCzAJBgNVBAYTAklOMRQw +EgYDVQQIDAtNQUhBUkFTSFRSQTEPMA0GA1UEBwwGTVVNQkFJMRkwFwYDVQQKDBB0 +dXRvcmlhbGluZHVzdHJ5MQswCQYDVQQLDAJJVDESMBAGA1UEAwwJbG9jYWxob3N0 +MSYwJAYJKoZIhvcNAQkBFhdsb2NhbGhvc3RAbG9jYWxob3N0LmNvbTCBnzANBgkq +hkiG9w0BAQEFAAOBjQAwgYkCgYEAoshAiI7bUwIgpDxi5dD+cICR190B7ciinCS2 +GqTp1ruUA5REEc2dGr2l94VtTtMDfwSzdIwWsWxjiNXb3fmrzw0RrLzZz5U7H3Tp ++aK7gajoioPHDEUuhP04+mgqLn1qhMIBWWqsu/2pSa5HFswmnPLvYS7nsBpwS8qJ +cxzmNsECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBDlLvl1GhPpyPRQmNcZO0zfa1R +iW4dOgO48juybJdn+9Tweh2mDggajgdmPtBovbwZ0RSv74TiKeOyAbAdLDpzAFxT +ybcvtUcFNsFRIlrLjm/R9G1qJPHvkOA6Wm2qRC2CgZ/IjjOxMyM/Y6ubQOgJXw/8 +4sIDANUEUUjtS+Z7kw== +-----END CERTIFICATE----- diff --git a/tls-node/tls-server.js b/tls-node/tls-server.js new file mode 100644 index 0000000..89c2d16 --- /dev/null +++ b/tls-node/tls-server.js @@ -0,0 +1,30 @@ +var tls = require('tls'); +var fs = require('fs'); +var https = require('https'); + +var options = { + key: fs.readFileSync('private-key.pem'), + cert: fs.readFileSync('public-cert.pem'), + rejectUnauthorized:false +}; + + + +/* +* Using https module +*/ +https.createServer(options, function (req, res) { + res.writeHead(200); + res.end("hello world\n"); +}).listen(8000); + +/* +* Using tls module +*/ +var tls = require('tls'); + +tls.createServer(options, function (cleartextStream) { + cleartextStream.write("welcome!\n"); + cleartextStream.setEncoding('utf8'); + cleartextStream.end(); +}).listen(8080); \ No newline at end of file From 22cede50f6e90d7f983149ee0ba794f1eb32c8bd Mon Sep 17 00:00:00 2001 From: Tutorialindustry Date: Fri, 3 Oct 2014 15:06:40 +0530 Subject: [PATCH 7/7] c9 --- nodejs-socketio-tutorial/index.html | 39 +++++++++++++++++++++++++++ nodejs-socketio-tutorial/index.js | 27 +++++++++++++++++++ nodejs-socketio-tutorial/package.json | 9 +++++++ 3 files changed, 75 insertions(+) create mode 100644 nodejs-socketio-tutorial/index.html create mode 100644 nodejs-socketio-tutorial/index.js create mode 100644 nodejs-socketio-tutorial/package.json diff --git a/nodejs-socketio-tutorial/index.html b/nodejs-socketio-tutorial/index.html new file mode 100644 index 0000000..0beab03 --- /dev/null +++ b/nodejs-socketio-tutorial/index.html @@ -0,0 +1,39 @@ + + + + Chat Application using node.js /socket.io + + + +
          +
          + +
          + Broadcast Message:
          + + + + + \ No newline at end of file diff --git a/nodejs-socketio-tutorial/index.js b/nodejs-socketio-tutorial/index.js new file mode 100644 index 0000000..3fbb5a9 --- /dev/null +++ b/nodejs-socketio-tutorial/index.js @@ -0,0 +1,27 @@ +var app = require('express')(); +var http = require('http').Server(app); +var socket_io = require('socket.io')(http); + +app.get('/', function(req, res){ + res.sendfile('index.html'); +}); + + + +socket_io.on('connection', function(socket){ + console.log('user Connected'); + socket.on('disconnect', function(){ + console.log('user disconnected'); + }); + socket.on('chat message', function(msg){ + socket_io.emit('chat message', msg); + }); + var i=0; + setInterval(function(){ + socket.broadcast.emit('customechat', "BD : "+(i++)); + },500) +}); + +http.listen(3000, function(){ + console.log('listening on *:3000'); +}); \ No newline at end of file diff --git a/nodejs-socketio-tutorial/package.json b/nodejs-socketio-tutorial/package.json new file mode 100644 index 0000000..c19d5a0 --- /dev/null +++ b/nodejs-socketio-tutorial/package.json @@ -0,0 +1,9 @@ +{ + "name": "socket-chat-example", + "version": "0.0.1", + "description": "my first socket.io app", + "dependencies": { + "express": "^4.4.0", + "socket.io": "^1.0.3" + } +}